<?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>52963</bug_id>
          
          <creation_ts>2011-01-22 10:43:12 -0800</creation_ts>
          <short_desc>Enable O(1) access to root from any node in shadow DOM subtree</short_desc>
          <delta_ts>2011-09-20 13:07:49 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</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>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>52788</dependson>
    
    <dependson>53289</dependson>
    
    <dependson>57689</dependson>
    
    <dependson>57994</dependson>
    
    <dependson>58060</dependson>
    
    <dependson>58892</dependson>
    
    <dependson>58957</dependson>
          <blocked>54025</blocked>
    
    <blocked>52917</blocked>
    
    <blocked>52962</blocked>
    
    <blocked>53001</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dimitri Glazkov (Google)">dglazkov</reporter>
          <assigned_to name="Roland Steiner">rolandsteiner</assigned_to>
          <cc>abarth</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>eric</cc>
    
    <cc>hyatt</cc>
    
    <cc>jer.noble</cc>
    
    <cc>morrita</cc>
    
    <cc>rolandsteiner</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>338602</commentid>
    <comment_count>0</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-01-22 10:43:12 -0800</bug_when>
    <thetext>Hang an extra ptr off NodeRareData (simple) and ensure that its value is always accurate (tedious)

Later on, we&apos;ll probably need to expand this to be a shadow dom context to store rules/settings.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>338610</commentid>
    <comment_count>1</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-01-22 10:58:32 -0800</bug_when>
    <thetext>(In reply to comment #0)
&gt; Hang an extra ptr off NodeRareData (simple) and ensure that its value is always accurate (tedious)
&gt; 
&gt; Later on, we&apos;ll probably need to expand this to be a shadow dom context to store rules/settings.

A ptr to the context, clearly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>338781</commentid>
    <comment_count>2</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-01-23 15:43:26 -0800</bug_when>
    <thetext>Hi, It might be a dull question, but what feature requires this?
I&apos;m afraid that it is no longer &quot;rare&quot; data if every shadow nodes have it...
If the use-case allows, some temporal static variables or flags might be enough,
or lazy-allocation might be possible for non-hot codepath.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>338783</commentid>
    <comment_count>3</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-01-23 16:00:23 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; Hi, It might be a dull question, but what feature requires this?
&gt; I&apos;m afraid that it is no longer &quot;rare&quot; data if every shadow nodes have it...
&gt; If the use-case allows, some temporal static variables or flags might be enough,
&gt; or lazy-allocation might be possible for non-hot codepath.

For the immediate needs, we need something like this to fix bug 52917. For the future needs, you&apos;d want to be able to jump to shadow root or read style-cascading settings for any node in the shadow subtree.

As for using RareNodeData, you&apos;re more than welcome to explore different solutions!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>338791</commentid>
    <comment_count>4</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-01-23 16:50:53 -0800</bug_when>
    <thetext>One idea is to replace Document* in Node with a ptr to some other class that represent a &quot;tree scope&quot;, including ptr to document, list of ids, names, and coincidentally shadow DOM settings. This might be a better path forward, considering that shadow DOM subtree would have to have its own scope of ids/names and other fun data that is normally stored on the Document. WDYT?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>338792</commentid>
    <comment_count>5</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-01-23 16:51:20 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; One idea is to replace Document* in Node with a ptr to some other class that represent a &quot;tree scope&quot;, including ptr to document, list of ids, names, and coincidentally shadow DOM settings. This might be a better path forward, considering that shadow DOM subtree would have to have its own scope of ids/names and other fun data that is normally stored on the Document. WDYT?

As a side benefit, we can build scoped stylesheets off of this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>338794</commentid>
    <comment_count>6</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-01-23 16:52:44 -0800</bug_when>
    <thetext>Adding the usual suspects for the discussion. Darin, Dave, what do you think?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>338802</commentid>
    <comment_count>7</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-01-23 17:34:10 -0800</bug_when>
    <thetext>Standard space vs. speed tradeoff. Just need to find a way to measure both.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>338882</commentid>
    <comment_count>8</comment_count>
    <who name="Roland Steiner">rolandsteiner</who>
    <bug_when>2011-01-24 00:43:50 -0800</bug_when>
    <thetext>Will have a go at the &quot;tree scope&quot; version.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>338923</commentid>
    <comment_count>9</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-01-24 03:20:16 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; Will have a go at the &quot;tree scope&quot; version.

BTW, I found this required for transforming media shadows into new style.
They have m_mediaElement, which should be replaced with this API + Element::shadowHost().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>339470</commentid>
    <comment_count>10</comment_count>
    <who name="Roland Steiner">rolandsteiner</who>
    <bug_when>2011-01-24 21:17:24 -0800</bug_when>
    <thetext>Implementing the tree scope version (replacing the Document* with a pointer to a new class NodeTreeScope) I wonder if this added indirection between Node and Document won&apos;t raise speed concerns (?).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>339678</commentid>
    <comment_count>11</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-01-25 09:19:07 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; Implementing the tree scope version (replacing the Document* with a pointer to a new class NodeTreeScope) I wonder if this added indirection between Node and Document won&apos;t raise speed concerns (?).

In the past, I measured performance impact using either/both well-established DOM benchmarks and microbenchmarks I wrote myself -- and made determination based on that. Darin&apos;s comment implied just that. See bug 50184 as one example.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>340835</commentid>
    <comment_count>12</comment_count>
    <who name="Roland Steiner">rolandsteiner</who>
    <bug_when>2011-01-27 04:45:03 -0800</bug_when>
    <thetext>A &quot;simple and hacky&quot; version didn&apos;t seem much easier than a clean and forward-compatible version, so I&apos;m going for that. Might have been a mistaken assessment in hidsight, though... :p

I any case, a (larger than anticipated) work-in-progress patch is forthcoming shortly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>340860</commentid>
    <comment_count>13</comment_count>
      <attachid>80329</attachid>
    <who name="Roland Steiner">rolandsteiner</who>
    <bug_when>2011-01-27 06:32:15 -0800</bug_when>
    <thetext>Created attachment 80329
Work in Progress (shadow part not done yet)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>340890</commentid>
    <comment_count>14</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-01-27 09:05:31 -0800</bug_when>
    <thetext>Sounds like DocumentOrderedMap is a no-brainer extraction that could be done first?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>340893</commentid>
    <comment_count>15</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-01-27 09:09:14 -0800</bug_when>
    <thetext>I would really like Darin&apos;s and Dave&apos;s comment on the approach. Making ShadowRoot as an extra order in shadow DOM hierarchy seems complex, but there might be good reasons for it.

Roland, can you outline them here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>340932</commentid>
    <comment_count>16</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-01-27 10:41:59 -0800</bug_when>
    <thetext>Sounds like DocumentOrderedMap is a no-brainer extraction that could be done first?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>340974</commentid>
    <comment_count>17</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-01-27 11:40:17 -0800</bug_when>
    <thetext>(In reply to comment #16)
&gt; Sounds like DocumentOrderedMap is a no-brainer extraction that could be done first?

It should. I wrote all the code for that class; I don’t think any non-Apple copyrights need to be moved into the separate file with it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>340975</commentid>
    <comment_count>18</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-01-27 11:40:45 -0800</bug_when>
    <thetext>(In reply to comment #15)
&gt; I would really like Darin&apos;s and Dave&apos;s comment on the approach. Making ShadowRoot as an extra order in shadow DOM hierarchy seems complex, but there might be good reasons for it.
&gt; 
&gt; Roland, can you outline them here?

I’m a little lost. I need a brief explanation of the goal an technique.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>341220</commentid>
    <comment_count>19</comment_count>
    <who name="Roland Steiner">rolandsteiner</who>
    <bug_when>2011-01-27 18:21:03 -0800</bug_when>
    <thetext>Thanks for the comments! You&apos;re of course right that the patch needs to be broken up once it goes for a review, but I wanted to first solicit some feedback regarding the general direction (quite a bit of it is inter-connected, others like ScopeContainerNode may not make sense if the whole approach is discarded).

The idea is that documents and shadow roots form a &apos;scope&apos; that governs, for example, ID hashes. It also contains a pointer to the document, as well as taking over the selfOnlyRef logic. The new class ScopeContainerNode extracts this functionality into a super-class of Document and the new ShadowRoot class. 

Scopes can be nested: ShadowRoots can be within the scope of yet another ShadowRoot and so on. Document, of course, cannot have a parent scope (unless we perhaps extend that to IFrames later on, but I&apos;m not sure how good of an idea that is).

Node is then changed from having a pointer to the document to a pointer to ScopeContainerClass. To get at the document the code takes the document pointer there. The new structure also allows us to remove the IsShadowRoot flag.

Node::setDocument and Node::setDocumentRecursively are replaced by Node::setScope, ScopeContainerNode::setScope and ScopeContainerNode::changeDocument. The logic here is that if a node changes documents (or scope in general) the scope pointers of nodes in nested scopes don&apos;t need to be updated, neither need selfOnyRef. However, document pointers still need to be changed and associated messages for affected nodes fired.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>341230</commentid>
    <comment_count>20</comment_count>
    <who name="Roland Steiner">rolandsteiner</who>
    <bug_when>2011-01-27 18:32:23 -0800</bug_when>
    <thetext>As for the shadow part:

ElemRareData would now point to a ShadowRoot that governs the scope of all nodes within the shadow. This way nodes in shadow can have O(1) access to their root, host, etc.

However, this DOES introduce a new, additional node in the shadow tree that wasn&apos;t present so far. Consequently, the logic of parentNode(), parentNodeOrHost(), etc., need to be changed. But in the long run I hope that the new node will actually make things easier rather than harder (looking forward to CSS scoping, for example).

ShadowRoot contains an additional pointer to the host element. Now, currently (and probably in the first version of the patch) the parent pointer will also continue to point to same. I believe that in a final solution it&apos;d be cleaner to have the parent pointer be 0, and go back to the host via that additional pointer. This way nothing has a parent pointer that isn&apos;t also a child, and switching between scopes must happen explicitly. If that turns out to be not such a good idea, that additional pointer can be removed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>341231</commentid>
    <comment_count>21</comment_count>
    <who name="Roland Steiner">rolandsteiner</who>
    <bug_when>2011-01-27 18:34:27 -0800</bug_when>
    <thetext>Addendum: the setScope functions are buggy ATM, because they introduce unwanted recursion. Fixing that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>344573</commentid>
    <comment_count>22</comment_count>
    <who name="Roland Steiner">rolandsteiner</who>
    <bug_when>2011-02-03 00:59:45 -0800</bug_when>
    <thetext>Further addendum: I created a quick shared document with some captures of a rough overview.

https://docs.google.com/document/d/1bk46RIlpy8rmjSQZe_hZVv3g8oN_ygCegB9mw_6iWiw/edit?hl=en&amp;authkey=CPGy750I</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>344610</commentid>
    <comment_count>23</comment_count>
    <who name="Roland Steiner">rolandsteiner</who>
    <bug_when>2011-02-03 03:03:47 -0800</bug_when>
    <thetext>Some more easily readable drawings for the &quot;advanced&quot; version:

Class diagram:

https://docs.google.com/drawings/edit?id=1YBlsCpd8b2AgCBlOix-nrzIAgVnogjCiauPZt4b6Af8&amp;hl=en&amp;authkey=CLzgxuMG

Tree layout:

https://docs.google.com/drawings/edit?id=1XwnE6LhV4Omsc61bU8QzKYGEzdJ6Ifby-b2_QN6JEYA&amp;hl=en&amp;authkey=COa9xZYF</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>344666</commentid>
    <comment_count>24</comment_count>
      <attachid>81056</attachid>
    <who name="Roland Steiner">rolandsteiner</who>
    <bug_when>2011-02-03 06:24:05 -0800</bug_when>
    <thetext>Created attachment 81056
Patch, Simple Version

Full version became too unwieldy, posting a &apos;simple&apos; version instead as a first step. No r? yet as I haven&apos;t done any performance checks yet, but passes (almost) all layout tests - the failures there are on my local machine seem to be unrelated or flakiness, but I this also still needs to be verified.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>344963</commentid>
    <comment_count>25</comment_count>
      <attachid>81056</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-02-03 13:33:47 -0800</bug_when>
    <thetext>Comment on attachment 81056
Patch, Simple Version

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

&gt; Source/WebCore/dom/DOMScope.h:39
&gt; +class DOMScope {

I like DOMScope as the name.

&gt; Source/WebCore/dom/DOMScope.h:56
&gt; +    Document* documentPtr() const { return m_document; }

Why not just document()?

&gt; Source/WebCore/dom/Element.cpp:1133
&gt; +        delete shadowRoot;

Whenever I see a &quot;delete&quot; like this, I can&apos;t help but wonder if it&apos;s going to bite us in the ass one day. I think we should flesh out the ownership of ShadowRoot* better and use existing primitives, such as OwnPtr and PassOwnPtr.

&gt; Source/WebCore/dom/ShadowRoot.h:60
&gt; +    void setDocumentRecursively(Document*);

Darin pointed out to me once that &quot;recursively&quot; should be the rule, not the exception. So just use setDocument.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>345146</commentid>
    <comment_count>26</comment_count>
      <attachid>81056</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-02-03 16:44:22 -0800</bug_when>
    <thetext>Comment on attachment 81056
Patch, Simple Version

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

&gt; Source/WebCore/dom/Node.h:598
&gt; +        // allows us to do away with this dual-use of the parent pointer.

What kinds of ASSERTs? This smells fishy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>345407</commentid>
    <comment_count>27</comment_count>
    <who name="Roland Steiner">rolandsteiner</who>
    <bug_when>2011-02-04 02:16:33 -0800</bug_when>
    <thetext>(In reply to comment #25)
&gt; (From update of attachment 81056 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=81056&amp;action=review
&gt; &gt; Source/WebCore/dom/DOMScope.h:56
&gt; &gt; +    Document* documentPtr() const { return m_document; }
&gt; 
&gt; Why not just document()?

This was meant to avoid a name clash in Document, but using just document() is probably better in the long run, to avoid further refactoring and confusion. Changed the code in Document to use a &apos;using&apos; declaration instead.
 
&gt; &gt; Source/WebCore/dom/Element.cpp:1133
&gt; &gt; +        delete shadowRoot;
&gt; 
&gt; Whenever I see a &quot;delete&quot; like this, I can&apos;t help but wonder if it&apos;s going to bite us in the ass one day. I think we should flesh out the ownership of ShadowRoot* better and use existing primitives, such as OwnPtr and PassOwnPtr.

That&apos;s a good point - have changed the code to use OwnPtr and RefPtr.

&gt; &gt; Source/WebCore/dom/ShadowRoot.h:60
&gt; &gt; +    void setDocumentRecursively(Document*);
&gt; 
&gt; Darin pointed out to me once that &quot;recursively&quot; should be the rule, not the exception. So just use setDocument.

This is meant to mirror the existing method in Node of the same name (where both setDocument and setDocumentRecursively exist).

But in the long run I want to replace this with a generic setScope anyway.

(In reply to comment #26)
&gt; &gt; Source/WebCore/dom/Node.h:598
&gt; &gt; +        // allows us to do away with this dual-use of the parent pointer.
&gt; 
&gt; What kinds of ASSERTs? This smells fishy.

The TextControlInnerElement constructor sets the ShadowHost pointer. RenderTextControl::createSubtreeIfNeeded() (from where it was constructed) calls attachInnerElement(). This calls deprecatedParserAddChild(), which calls parserAddChild(), which ASSERTs that the new child doesn&apos;t have a parent node.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>345413</commentid>
    <comment_count>28</comment_count>
      <attachid>81201</attachid>
    <who name="Roland Steiner">rolandsteiner</who>
    <bug_when>2011-02-04 02:33:26 -0800</bug_when>
    <thetext>Created attachment 81201
work-in-progress, see comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>345416</commentid>
    <comment_count>29</comment_count>
    <who name="Roland Steiner">rolandsteiner</who>
    <bug_when>2011-02-04 02:40:16 -0800</bug_when>
    <thetext>Uploaded another work-in-progress (warning: this one again crashes ATM). Amongst other changes and corretions in this patch I renamed the &quot;ShadowRoot&quot; class into &quot;ShadowScope&quot; to avoid naming confusion within Element.

One more question that came up was how to handle the creation of new HTML elements: currently, all are created with a Document pointer, i.e., in the Document&apos;s scope with the new code. This could be thought of the default for elements that are not attached yet (and again, when they are detached). However, this requires the scope pointers of all nodes to be updated when attached into a shadow scope.

OTOH we could create shadow nodes directly into a shadow scope, but this would require changing the signature on all HTML... element constructors (and may run into as-of-yet-unknown hurdles).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>345488</commentid>
    <comment_count>30</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-02-04 07:47:29 -0800</bug_when>
    <thetext>(In reply to comment #29)
&gt; Uploaded another work-in-progress (warning: this one again crashes ATM). Amongst other changes and corretions in this patch I renamed the &quot;ShadowRoot&quot; class into &quot;ShadowScope&quot; to avoid naming confusion within Element.
&gt; 
&gt; One more question that came up was how to handle the creation of new HTML elements: currently, all are created with a Document pointer, i.e., in the Document&apos;s scope with the new code. This could be thought of the default for elements that are not attached yet (and again, when they are detached). However, this requires the scope pointers of all nodes to be updated when attached into a shadow scope.
&gt; 
&gt; OTOH we could create shadow nodes directly into a shadow scope, but this would require changing the signature on all HTML... element constructors (and may run into as-of-yet-unknown hurdles).

I have another question. Can we somehow use it for DocumentFragments?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>346434</commentid>
    <comment_count>31</comment_count>
    <who name="Roland Steiner">rolandsteiner</who>
    <bug_when>2011-02-06 18:56:21 -0800</bug_when>
    <thetext>(In reply to comment #30)
&gt; I have another question. Can we somehow use it for DocumentFragments?

DOMScope should be ideally suited for DocumentFragment (in theory at least). Speaking of theory: We could also make it a container for nodes that are assigned to a Document, but not in the tree (i.e., where currently the inDocument flag is false).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>363076</commentid>
    <comment_count>32</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-03-06 08:29:16 -0800</bug_when>
    <thetext>Roland, you stopped working on this because we first need to convert all existing instances of old shadow DOM to the new shadow DOM, right?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>363265</commentid>
    <comment_count>33</comment_count>
    <who name="Roland Steiner">rolandsteiner</who>
    <bug_when>2011-03-07 01:50:04 -0800</bug_when>
    <thetext>(In reply to comment #32)
&gt; Roland, you stopped working on this because we first need to convert all existing instances of old shadow DOM to the new shadow DOM, right?

Yes - sorry, I should have made a note about this here sooner. The reason is that proper life-time handling between render-tree based shadow-DOM and node-based shadow DOM is rather tricky, so I would prefer to wait until conversion is done.

However, if this is blocking people, I can try to find a workable solution in the interim (which is likely going to be somewhat ugly, though).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>363365</commentid>
    <comment_count>34</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-03-07 09:06:56 -0800</bug_when>
    <thetext>(In reply to comment #33)
&gt; (In reply to comment #32)
&gt; &gt; Roland, you stopped working on this because we first need to convert all existing instances of old shadow DOM to the new shadow DOM, right?
&gt; 
&gt; Yes - sorry, I should have made a note about this here sooner. The reason is that proper life-time handling between render-tree based shadow-DOM and node-based shadow DOM is rather tricky, so I would prefer to wait until conversion is done.
&gt; 
&gt; However, if this is blocking people, I can try to find a workable solution in the interim (which is likely going to be somewhat ugly, though).

No, no worries -- I was just making sure I understood where this was :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>379873</commentid>
    <comment_count>35</comment_count>
      <attachid>88311</attachid>
    <who name="Roland Steiner">rolandsteiner</who>
    <bug_when>2011-04-05 14:53:28 -0700</bug_when>
    <thetext>Created attachment 88311
new patch

New patch following the discussed approach. Document::destroyScope() only has moved to a more appropriate place, while Node::setDocumentRecursively() has moved, but also slightly changed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>379875</commentid>
    <comment_count>36</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-04-05 14:56:30 -0700</bug_when>
    <thetext>Attachment 88311 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
Source/WebCore/dom/TreeScope.cpp:103:  One space before end of line comments  [whitespace/comments] [5]
Total errors found: 1 in 8 files


Source/WebCore/dom/TreeScope.cpp:103:  One space before end of line comments  [whitespace/comments] [5]
Total errors found: 1 in 8 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>379984</commentid>
    <comment_count>37</comment_count>
      <attachid>88341</attachid>
    <who name="Roland Steiner">rolandsteiner</who>
    <bug_when>2011-04-05 17:19:00 -0700</bug_when>
    <thetext>Created attachment 88341
new, smaller patch

Moved functions back to original place to make review easier.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>379985</commentid>
    <comment_count>38</comment_count>
    <who name="Roland Steiner">rolandsteiner</who>
    <bug_when>2011-04-05 17:20:27 -0700</bug_when>
    <thetext>Note that in Node.h the functions setDocument and setDocumentRecursively are now protected (were public). They are superseded by setTreeScope and setTreeScopeRecursively.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>380020</commentid>
    <comment_count>39</comment_count>
      <attachid>88341</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-04-05 18:26:32 -0700</bug_when>
    <thetext>Comment on attachment 88341
new, smaller patch

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

Can you remind me why we need to have this guardRef logic on the tree scopes? Isn&apos;t having this done on Document enough? The code looks very awkward with these refs/derefs and I am not sure we need it.

&gt; Source/WebCore/ChangeLog:9
&gt; +        Document pointer) to allow direct access to the containing tree scope.

I am not convinced we have a solution for O(1) document pointer access at the moment. Perhaps the document ptr will be on the TreeScope? If so, it may make sense to consider including it into this change. Growing a pointer on each node is quite expensive, and this could be shipping code.

&gt; Source/WebCore/ChangeLog:39
&gt; +        * dom/ContainerNode.cpp:
&gt; +        (WebCore::ContainerNode::insertBefore):
&gt; +        (WebCore::ContainerNode::replaceChild):
&gt; +        (WebCore::ContainerNode::appendChild):
&gt; +        * dom/Document.cpp:
&gt; +        (WebCore::Document::Document):
&gt; +        (WebCore::Document::setDocType):
&gt; +        * dom/Document.h:
&gt; +        (WebCore::Node::Node):
&gt; +        * dom/Node.cpp:
&gt; +        (WebCore::Node::setTreeScope):
&gt; +        (WebCore::Node::setTreeScopeRecursively):
&gt; +        * dom/Node.h:
&gt; +        (WebCore::Node::treeScope):
&gt; +        * dom/TreeScope.cpp:
&gt; +        (WebCore::TreeScope::TreeScope):
&gt; +        (WebCore::TreeScope::~TreeScope):
&gt; +        (WebCore::TreeScope::removedLastRef):
&gt; +        (WebCore::TreeScope::setParentTreeScope):
&gt; +        * dom/TreeScope.h:
&gt; +        (WebCore::TreeScope::parentTreeScope):

For a change as fundamental as this one, I would definitely provide detailed explanation of each modification.

&gt; Source/WebCore/dom/Document.h:1389
&gt; +// === Node inline methods ===
&gt; +

This is unnecessary.

&gt; Source/WebCore/dom/Document.h:1390
&gt; +// here because these methods require the Document definition, but we really want to inline them.

Please make it into a sentence.

&gt; Source/WebCore/dom/Node.cpp:482
&gt; +    newTreeScope-&gt;guardRef();
&gt; +    m_treeScope = newTreeScope;
&gt; +    setDocument(newTreeScope-&gt;document());
&gt; +    if (oldTreeScope)
&gt; +        oldTreeScope-&gt;guardDeref();

This ref/deref code looks an awful lot like a typical RefPtr assignment. Having these manual refs/derefs reeks of maintenance pain further down the road. Usually, we try to actively get rid of them. Can we somehow avoid them here?

&gt; Source/WebCore/dom/Node.cpp:507
&gt; +            // FIXME: adapt to ShadowFragment
&gt; +            // ...-&gt;setParentTreeScope(newTreeScope);

This comment doesn&apos;t make sense yet. So let&apos;s yank it.

&gt; Source/WebCore/dom/Node.cpp:509
&gt; +            // But: need to traverse shadow tree if document has changed.

This comment is unnecessary.

&gt; Source/WebCore/dom/Node.h:696
&gt; +    TreeScope* m_treeScope;

We must measure weight impact of this before thinking of landing. This is why I was suggesting using RareNodeData.

&gt; Source/WebCore/dom/TreeScope.cpp:113
&gt; +    TreeScope* oldParentScope = m_parentTreeScope;
&gt; +    newParentScope-&gt;guardRef();
&gt; +    m_parentTreeScope = newParentScope;
&gt; +    oldParentScope-&gt;guardDeref();

This is a classic RefPtr assignment, just with different names. I loathe landing code like this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>381091</commentid>
    <comment_count>40</comment_count>
      <attachid>88564</attachid>
    <who name="Roland Steiner">rolandsteiner</who>
    <bug_when>2011-04-06 20:28:41 -0700</bug_when>
    <thetext>Created attachment 88564
new patch, using NodeRareData</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>381107</commentid>
    <comment_count>41</comment_count>
      <attachid>88564</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-04-06 20:54:29 -0700</bug_when>
    <thetext>Comment on attachment 88564
new patch, using NodeRareData

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

&gt; Source/WebCore/dom/Node.cpp:493
&gt; +        ensureRareData()-&gt;setTreeScope(newTreeScope);

Should this not try to check if newTreeScope == newDocument and then not set anything? Otherwise, this would always initialize rare data when we move a node between documents.

&gt; Source/WebCore/dom/Node.cpp:524
&gt; +        if (!node-&gt;isElementNode())
&gt; +            continue;
&gt; +        /* FIXME: adapt to ShadowRoot (likely code below):
&gt; +        if (ShadowRoot* shadowRoot = toElement(node)-&gt;shadowRoot()) {
&gt; +            shadowRoot-&gt;setParentTreeScope(newTreeScope);
&gt; +            if (currentDocument != newDocument)
&gt; +                shadowRoot-&gt;setDocumentRecursively(newDocument);
&gt; +        }
&gt; +        */

We can remove this for now. No need to land commented-out code.

&gt; Source/WebCore/dom/Node.h:641
&gt; +    void setDocument(Document*);
&gt; +    void setDocumentRecursively(Document*);

Can these be private?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>381116</commentid>
    <comment_count>42</comment_count>
      <attachid>88564</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-04-06 21:29:26 -0700</bug_when>
    <thetext>Comment on attachment 88564
new patch, using NodeRareData

Also, make sure to run all layout tests both in Debug and Release for this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>381401</commentid>
    <comment_count>43</comment_count>
      <attachid>88564</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-04-07 09:23:06 -0700</bug_when>
    <thetext>Comment on attachment 88564
new patch, using NodeRareData

Also, this patch only introduces the concept of a TreeScope that&apos;s exactly equivalent to Document at this point. It is not aware of the shadow DOM yet.

Since this really doesn&apos;t fix bug 52963 yet, we should move this patch to a separate, blocking bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>381466</commentid>
    <comment_count>44</comment_count>
    <who name="Roland Steiner">rolandsteiner</who>
    <bug_when>2011-04-07 10:36:11 -0700</bug_when>
    <thetext>(In reply to comment #41)
&gt; (From update of attachment 88564 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=88564&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/dom/Node.cpp:493
&gt; &gt; +        ensureRareData()-&gt;setTreeScope(newTreeScope);
&gt; 
&gt; Should this not try to check if newTreeScope == newDocument and then not set anything? Otherwise, this would always initialize rare data when we move a node between documents.

This branch is for the case whether newTreeScope is not a Document (whether old or new). Switching documents is done in the line below (setDocument) that in turn checks whether the document actually changed.

It is true, however, that quite a bit of the code in this patch is not yet actually used (!) until we have bona fide shadow scopes.


&gt; &gt; Source/WebCore/dom/Node.cpp:524
&gt; &gt; +        if (!node-&gt;isElementNode())
&gt; &gt; +            continue;
&gt; &gt; +        /* FIXME: adapt to ShadowRoot (likely code below):
&gt; &gt; +        if (ShadowRoot* shadowRoot = toElement(node)-&gt;shadowRoot()) {
&gt; &gt; +            shadowRoot-&gt;setParentTreeScope(newTreeScope);
&gt; &gt; +            if (currentDocument != newDocument)
&gt; &gt; +                shadowRoot-&gt;setDocumentRecursively(newDocument);
&gt; &gt; +        }
&gt; &gt; +        */
&gt; 
&gt; We can remove this for now. No need to land commented-out code.

Ok, I&apos;ll just leave in a single-line comment then (?).


&gt; &gt; Source/WebCore/dom/Node.h:641
&gt; &gt; +    void setDocument(Document*);
&gt; &gt; +    void setDocumentRecursively(Document*);
&gt; 
&gt; Can these be private?

I left these protected, since I&apos;m a bit torn whether, e.g., attaching a DocumentType should use setDocument or setTreeScope. ATM it doesn&apos;t really matter, but I thought that TreeScope, ShadowScope and/or Document might legitimately make use of these.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>381481</commentid>
    <comment_count>45</comment_count>
    <who name="Roland Steiner">rolandsteiner</who>
    <bug_when>2011-04-07 10:48:40 -0700</bug_when>
    <thetext>(In reply to comment #44)
&gt; This branch is for the case whether newTreeScope is not a Document (whether old or new).

should be: ... case where newTreeScope...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>381484</commentid>
    <comment_count>46</comment_count>
    <who name="Roland Steiner">rolandsteiner</who>
    <bug_when>2011-04-07 10:49:56 -0700</bug_when>
    <thetext>(In reply to comment #43)
&gt; (From update of attachment 88564 [details])
&gt; Also, this patch only introduces the concept of a TreeScope that&apos;s exactly equivalent to Document at this point. It is not aware of the shadow DOM yet.
&gt; 
&gt; Since this really doesn&apos;t fix bug 52963 yet, we should move this patch to a separate, blocking bug.

Opened new bug 58060</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>385400</commentid>
    <comment_count>47</comment_count>
      <attachid>89504</attachid>
    <who name="Roland Steiner">rolandsteiner</who>
    <bug_when>2011-04-13 17:47:11 -0700</bug_when>
    <thetext>Created attachment 89504
work-in-progress

Work-in-progress patch. Crashes during JS GC where Document::removedLastRef seems to be called twice - the first time there must be some Nodes left assigned to the Document that are not in the tree, that prevent destruction of the document.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>385402</commentid>
    <comment_count>48</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-04-13 17:51:01 -0700</bug_when>
    <thetext>Attachment 89504 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1

Source/WebCore/dom/Node.cpp:511:  One line control clauses should not use braces.  [whitespace/braces] [4]
Source/WebCore/dom/ShadowRoot.cpp:72:  A case label should not be indented, but line up with its switch statement.  [whitespace/indent] [4]
Source/WebCore/dom/Document.cpp:525:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
Total errors found: 3 in 12 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>385407</commentid>
    <comment_count>49</comment_count>
    <who name="Roland Steiner">rolandsteiner</who>
    <bug_when>2011-04-13 17:59:26 -0700</bug_when>
    <thetext>Work left after this: update data structures contained in TreeScope (node ID hash, element-by-ID, image map, access keys, node list cache counter) on the containing scope of a node rather than the document</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>385803</commentid>
    <comment_count>50</comment_count>
      <attachid>89504</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-04-14 09:23:45 -0700</bug_when>
    <thetext>Comment on attachment 89504
work-in-progress

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

Let&apos;s discuss this on the whiteboard today.

&gt; Source/WebCore/dom/ContainerNode.cpp:77
&gt; +    // Note that we do NOT set the tree scope to document here, because this function is usu. called
&gt; +    // when the children should be destroyed anyway. Call setTreeScopeRecursively where this is not the case.

Probably won&apos;t need this comment here when landing.

&gt; Source/WebCore/dom/ContainerNode.cpp:660
&gt; +    newChild-&gt;setTreeScopeRecursively(treeScope());

This will have performance implications. Can we instead piggyback on insertedIntoDocument?

&gt; Source/WebCore/dom/Node.cpp:503
&gt; +    for (Node* node = includeRoot ? this : traverseNextNode(this); node; node = node-&gt;traverseNextNode(this)) {

in the case of includeRoot == false,  you&apos;ll traverse next node twice.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>386966</commentid>
    <comment_count>51</comment_count>
      <attachid>89861</attachid>
    <who name="Roland Steiner">rolandsteiner</who>
    <bug_when>2011-04-15 15:06:18 -0700</bug_when>
    <thetext>Created attachment 89861
patch, setTreeScope version

Dromaeo times coming shortly</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>386976</commentid>
    <comment_count>52</comment_count>
      <attachid>89861</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-04-15 15:19:06 -0700</bug_when>
    <thetext>Comment on attachment 89861
patch, setTreeScope version

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

looks good with nits. Let&apos;s see the numbers before landing though.

&gt; Source/WebCore/dom/Element.h:233
&gt; +    // FIXME: Make these return a proper ShadowRoot* (requires changes wrt. WebDOMOperations.h).

File a bug and put it in the fixme. No need to mention WebDOMOperations here.

&gt; Source/WebCore/dom/Node.cpp:516
&gt; +        // FIXME: Remove toShadowRoot() once shadowRoot() returns a proper ShadowRoot*.

Ditto.

&gt; Source/WebCore/dom/ShadowRoot.cpp:58
&gt; +    // FIXME: Decide correct node type.

Ditto.

&gt; Source/WebCore/dom/ShadowRoot.cpp:62
&gt; +PassRefPtr&lt;Node&gt; ShadowRoot::cloneNode(bool /*deep*/)

No need to have commented-out param here.

&gt; Source/WebCore/dom/ShadowRoot.h:68
&gt; +inline const ShadowRoot* toShadowRoot(const Node* node)
&gt; +{
&gt; +    ASSERT(!node || node-&gt;isShadowBoundary());
&gt; +    return static_cast&lt;const ShadowRoot*&gt;(node);
&gt; +}

Remove this since we don&apos;t use it.

&gt; Source/WebCore/dom/TreeScope.h:39
&gt; +    friend class Node;

Why does it need to be a friend here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>386980</commentid>
    <comment_count>53</comment_count>
    <who name="Roland Steiner">rolandsteiner</who>
    <bug_when>2011-04-15 15:22:14 -0700</bug_when>
    <thetext>Not sure what I should think of the Dromaeo times - they are quite variable, even when run again with the same settings. Unexpectedly, it also shows a rather general plus in the number of runs/s with my patch...

with patch, all tests: http://dromaeo.com/?id=137913
with patch, DOM tests: http://dromaeo.com/?id=137922

original, all tests: http://dromaeo.com/?id=137931
original, DOM tests: http://dromaeo.com/?id=137941

Spreadsheet: https://spreadsheets.google.com/ccc?key=0AlmQQ415jP-_dHFHZ3dGcE5XTWdza2pGLVd4dGdzWFE&amp;hl=en&amp;authkey=CKaqu7UH</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>386987</commentid>
    <comment_count>54</comment_count>
      <attachid>89861</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-04-15 15:29:02 -0700</bug_when>
    <thetext>Comment on attachment 89861
patch, setTreeScope version

let&apos;s give this puppy a whirl.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>387005</commentid>
    <comment_count>55</comment_count>
      <attachid>89870</attachid>
    <who name="Roland Steiner">rolandsteiner</who>
    <bug_when>2011-04-15 16:09:17 -0700</bug_when>
    <thetext>Created attachment 89870
updated patch

made setParentTreeScope() public, to avoid &apos;friend class Node&apos;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>387033</commentid>
    <comment_count>56</comment_count>
    <who name="Roland Steiner">rolandsteiner</who>
    <bug_when>2011-04-15 16:47:34 -0700</bug_when>
    <thetext>Committed r84050: &lt;http://trac.webkit.org/changeset/84050&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>387130</commentid>
    <comment_count>57</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-04-15 18:21:56 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/84050 might have broken WinCairo Debug (Build)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>388484</commentid>
    <comment_count>58</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-04-19 07:06:11 -0700</bug_when>
    <thetext>This was rolled on in http://trac.webkit.org/changeset/84251. Roland, can you take a look?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>388997</commentid>
    <comment_count>59</comment_count>
      <attachid>90292</attachid>
    <who name="Roland Steiner">rolandsteiner</who>
    <bug_when>2011-04-19 19:07:13 -0700</bug_when>
    <thetext>Created attachment 90292
patch, correct JS wrappers

With 58957 out of the way, let&apos;s try our luck once more. It&apos;s largely the same as previous patch, plus checking for ShadowRoot when creating JS wrappers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>389537</commentid>
    <comment_count>60</comment_count>
    <who name="Roland Steiner">rolandsteiner</who>
    <bug_when>2011-04-20 14:40:41 -0700</bug_when>
    <thetext>Committed r84394: &lt;http://trac.webkit.org/changeset/84394&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>80329</attachid>
            <date>2011-01-27 06:32:15 -0800</date>
            <delta_ts>2011-02-03 06:23:59 -0800</delta_ts>
            <desc>Work in Progress (shadow part not done yet)</desc>
            <filename>bug-52963-20110127233213.patch</filename>
            <type>text/plain</type>
            <size>74674</size>
            <attacher name="Roland Steiner">rolandsteiner</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAyYTE3MDRjM2FhMzJkNWNlMGJlZmMzM2Q1NWViODNhMTdiZjE3OTg4Li45
NzBiM2U0YTQyMDhmODA1NWFjNWY4YjE4Nzk0NjY0ZTZjMzRiMWQwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsOTkgQEAKKzIwMTEtMDEtMjcgIFJvbGFuZCBTdGVpbmVyICA8cm9sYW5kc3RlaW5lckBj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQnVnIDUyOTYzIC0gRW5hYmxlIE8oMSkgYWNjZXNzIHRvIHJvb3QgZnJvbSBhbnkgbm9k
ZSBpbiBzaGFkb3cgRE9NIHN1YnRyZWUKKworICAgICAgICBUaGlzIGNoYW5nZSBhZGRzIGEgbmV3
IGNsYXNzICdTY29wZUNvbnRhaW5lck5vZGUnIHRoYXQgYWN0cyBhcyBzdXBlci1jbGFzcworICAg
ICAgICBmb3IgRG9jdW1lbnQgYW5kIGFub3RoZXIgbmV3IGNsYXNzICdTaGFkb3dSb290Jy4KKwor
ICAgICAgICBTY29wZUNvbnRhaW5lck5vZGUgZW5jYXBzdWxhdGVzIGZ1bmN0aW9uYWxpdHkgdGhh
dCBpcyBjb21tb24gdG8gYm90aCBEb2N1bWVudHMKKyAgICAgICAgYW5kIFNoYWRvd1Jvb3QuIEl0
IGFjdHMgYXMgYSB0YXJnZXQgZm9yIHRoZSBzY29wZSBwb2ludGVyIHRoYXQgcmVwbGFjZXMgdGhl
CisgICAgICAgIE5vZGUncyBkb2N1bWVudCBwb2ludGVyLgorCisgICAgICAgIFNoYWRvd1Jvb3Qg
YWN0cyBhcyB0aGUgdGFyZ2V0IHNjb3BlIG9iamVjdCBmb3Igbm9kZXMgaW4gYSBzaGFkb3cgdHJl
ZSwKKyAgICAgICAgd2hpY2ggYWxsb3dzIHRoZW0gdG8gcmVhY2ggdGhlIHNoYWRvdyByb290IGFu
ZCBzaGFkb3cgaG9zdCAoYXMgd2VsbCBhcyBkb2N1bWVudCkKKyAgICAgICAgaW4gTygxKS4KKwor
ICAgICAgICBTaGFkb3dSb290IGlzIGFsc28gaW50ZW5kZWQgdG8gc2ltcGxpZnkgdGhlIGFyY2hp
dGVjdHVyZSBvZiBzaGFkb3cgdHJlZXMKKyAgICAgICAgYW5kIHRoZWlyIENTUyBoYW5kbGluZy4K
KyAgICAgICAgCisgICAgICAgIExhc3RseSwgJ0RvY3VtZW50T3JkZXJlZE1hcCcgaGFzIGFsc28g
YmVlbiBleHRyYWN0ZWQgYW5kIG1vdmVkIHRvIGl0cyBvd24gZmlsZXMuCisKKyAgICAgICAgTm8g
bmV3IHRlc3RzLiAoUmVmYWN0b3JpbmcpCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisgICAgICAgICogZG9tL0NoYXJhY3RlckRhdGEuaDoKKyAgICAgICAg
KiBkb20vQ29udGFpbmVyTm9kZS5oOgorICAgICAgICAoV2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6
Q29udGFpbmVyTm9kZSk6CisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkRvY3VtZW50OjpEb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6
Y2xlYXJDb250YWluZXIpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6On5Eb2N1bWVudCk6
CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2V0RG9jVHlwZSk6CisgICAgICAgIChXZWJD
b3JlOjpEb2N1bWVudDo6Y2hpbGRyZW5DaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50OjphZG9wdE5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmF0dGFjaCk6Cisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6ZGV0YWNoKToKKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50OjpjYW5SZXBsYWNlQ2hpbGQpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAg
ICAgICAqIGRvbS9Eb2N1bWVudE9yZGVyZWRNYXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnRPcmRlcmVkTWFwOjpjbGVhcik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudE9yZGVy
ZWRNYXA6OmFkZCk6CisgICAgICAgICogZG9tL0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RWxlbWVudDo6c2hhZG93Um9vdCk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpzZXRT
aGFkb3dSb290KToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnJlbW92ZVNoYWRvd1Jvb3Qp
OgorICAgICAgICAqIGRvbS9FbGVtZW50Lmg6CisgICAgICAgICogZG9tL0VsZW1lbnRSYXJlRGF0
YS5oOgorICAgICAgICAqIGRvbS9Ob2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6On5O
b2RlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmJlZm9yZU93bmVyRG9jdW1lbnRDaGFuZ2Vz
KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmFmdGVyT3duZXJEb2N1bWVudENoYW5nZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6c2V0U2NvcGUpOgorICAgICAgICAoV2ViQ29yZTo6Tm9k
ZTo6cmVnaXN0ZXJEeW5hbWljTm9kZUxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6c2hh
ZG93Um9vdCk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpzaGFkb3dIb3N0RWxlbWVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpOb2RlOjpzaGFkb3dBbmNlc3Rvck5vZGUpOgorICAgICAgICAoV2Vi
Q29yZTo6Tm9kZTo6c2hhZG93VHJlZVJvb3ROb2RlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6
OmlzSW5TaGFkb3dUcmVlKToKKyAgICAgICAgKiBkb20vTm9kZS5oOgorICAgICAgICAoV2ViQ29y
ZTo6Tm9kZTo6c2NvcGUpOgorICAgICAgICAqIGRvbS9Ob2RlVHJlZVNjb3BlLmNwcDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBkb20vU2NvcGVDb250YWluZXJOb2RlLmNwcDogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlOjpTY29wZUNvbnRhaW5lck5vZGU6OnJlbW92ZWRMYXN0UmVmKToKKyAgICAgICAg
KFdlYkNvcmU6OlNjb3BlQ29udGFpbmVyTm9kZTo6Y2xlYXJDb250YWluZXIpOgorICAgICAgICAo
V2ViQ29yZTo6U2NvcGVDb250YWluZXJOb2RlOjpzZXRTY29wZSk6CisgICAgICAgIChXZWJDb3Jl
OjpTY29wZUNvbnRhaW5lck5vZGU6OmNoYW5nZURvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OlNjb3BlQ29udGFpbmVyTm9kZTo6YWRkRWxlbWVudEJ5SWQpOgorICAgICAgICAoV2ViQ29yZTo6
U2NvcGVDb250YWluZXJOb2RlOjpyZW1vdmVFbGVtZW50QnlJZCk6CisgICAgICAgIChXZWJDb3Jl
OjpTY29wZUNvbnRhaW5lck5vZGU6Omhhc0VsZW1lbnRXaXRoSWQpOgorICAgICAgICAoV2ViQ29y
ZTo6U2NvcGVDb250YWluZXJOb2RlOjpjb250YWluc011bHRpcGxlRWxlbWVudHNXaXRoSWQpOgor
ICAgICAgICAoV2ViQ29yZTo6U2NvcGVDb250YWluZXJOb2RlOjpnZXRFbGVtZW50QnlJZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY29wZUNvbnRhaW5lck5vZGU6OmFkZEltYWdlTWFwKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjb3BlQ29udGFpbmVyTm9kZTo6cmVtb3ZlSW1hZ2VNYXApOgorICAgICAg
ICAoV2ViQ29yZTo6U2NvcGVDb250YWluZXJOb2RlOjpnZXRJbWFnZU1hcCk6CisgICAgICAgICog
ZG9tL1Njb3BlQ29udGFpbmVyTm9kZS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNjb3Bl
Q29udGFpbmVyTm9kZTo6c2NvcGVUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjb3BlQ29udGFp
bmVyTm9kZTo6ZG9jdW1lbnRQdHIpOgorICAgICAgICAoV2ViQ29yZTo6U2NvcGVDb250YWluZXJO
b2RlOjpzZXREb2N1bWVudFB0cik6CisgICAgICAgIChXZWJDb3JlOjpTY29wZUNvbnRhaW5lck5v
ZGU6OlNjb3BlQ29udGFpbmVyTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpTY29wZUNvbnRhaW5l
ck5vZGU6OnNlbGZPbmx5UmVmKToKKyAgICAgICAgKFdlYkNvcmU6OlNjb3BlQ29udGFpbmVyTm9k
ZTo6c2VsZk9ubHlEZXJlZik6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpOb2RlKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok5vZGU6OmlzRG9jdW1lbnROb2RlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5v
ZGU6OmlzU2hhZG93Um9vdCk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjppc0luU2hhZG93VHJl
ZSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpkb2N1bWVudE9mU2NvcGUpOgorICAgICAgICAo
V2ViQ29yZTo6Tm9kZTo6ZG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6aW5Eb2N1
bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpwYXJlbnROb2RlKToKKyAgICAgICAgKiBk
b20vU2hhZG93Um9vdC5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvZG9tL05vZGVUcmVl
U2NvcGUuaC4KKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd1Jvb3Q6Omhvc3RFbGVtZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNoYWRvd1Jvb3Q6OlNoYWRvd1Jvb3QpOgorICAgICAgICAoV2ViQ29y
ZTo6U2hhZG93Um9vdDo6c2V0SG9zdEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6
cGFyZW50T3JIb3N0Tm9kZSk6CisKIDIwMTEtMDEtMjQgIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2Jp
bnNvbkBpZ2FsaWEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5neXBpCmluZGV4IDYxOThjMWY1ZDYxOGIzMjJhMDE2YWJlN2U0NjM3YTc4YzM3MDZmMzAu
LmZmNDliY2I5YTQ4ZmRkYTg3YzhiYzY5NWY4YjU3MzU5Nzc0ZDE4NzggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5
cGkKQEAgLTEyMjAsNiArMTIyMCw4IEBACiAgICAgICAgICAgICAnZG9tL0RvY3VtZW50TWFya2Vy
LmgnLAogICAgICAgICAgICAgJ2RvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwJywKICAg
ICAgICAgICAgICdkb20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmgnLAorICAgICAgICAgICAg
J2RvbS9Eb2N1bWVudE9yZGVyZWRNYXAuY3BwJywKKyAgICAgICAgICAgICdkb20vRG9jdW1lbnRP
cmRlcmVkTWFwLmgnLAogICAgICAgICAgICAgJ2RvbS9Eb2N1bWVudFBhcnNlci5jcHAnLAogICAg
ICAgICAgICAgJ2RvbS9Eb2N1bWVudFBhcnNlci5oJywKICAgICAgICAgICAgICdkb20vRG9jdW1l
bnRUaW1pbmcuaCcsCkBAIC0xMjkwLDYgKzEyOTIsOCBAQAogICAgICAgICAgICAgJ2RvbS9Ob2Rl
TGlzdC5oJywKICAgICAgICAgICAgICdkb20vTm9kZVJhcmVEYXRhLmgnLAogICAgICAgICAgICAg
J2RvbS9Ob2RlUmVuZGVyU3R5bGUuaCcsCisgICAgICAgICAgICAnZG9tL05vZGVUcmVlU2NvcGUu
Y3BwJywKKyAgICAgICAgICAgICdkb20vTm9kZVRyZWVTY29wZS5oJywKICAgICAgICAgICAgICdk
b20vTm9kZVdpdGhJbmRleC5oJywKICAgICAgICAgICAgICdkb20vTm90YXRpb24uY3BwJywKICAg
ICAgICAgICAgICdkb20vTm90YXRpb24uaCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYWIxYTM4ZGY3NGY3NzM4Y2MzYzdkMjNh
ZWRjMzU0MjY3MTM1ZDJkNC4uNmE2OTk4N2NhOWZmOGM0ZWFkZmFmNjM5M2I2YjQwNzQ0YzA0NmQx
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagpAQCAtMzI5LDYgKzMyOSwxMSBAQAogCQkxNERDMEQzODA5RkVEMDczMDA3QjAyMzUgLyog
SlNOb2RlLmggaW4gQ29weSBHZW5lcmF0ZWQgSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAxNERDMEQzNjA5RkVEMDczMDA3QjAyMzUgLyogSlNOb2RlLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoKTsgfTsgfTsKIAkJMTRFODM3ODQwOUY4NUQxQzAwQjg1
QUU0IC8qIEpTRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMTRFODM3ODMwOUY4NUQxQzAwQjg1QUU0IC8qIEpTRXZlbnQuY3BwICovOyB9Owog
CQkxNEU4Mzc4RTA5Rjg1RDRGMDBCODVBRTQgLyogSlNFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTRFODM3OEQwOUY4NUQ0RjAwQjg1QUU0IC8q
IEpTRXZlbnQuaCAqLzsgfTsKKwkJMTRFOTdBRjAxMkVFNjk1RjAwRjcxOEIzIC8qIERvY3VtZW50
T3JkZXJlZE1hcC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMTRFOTdBRUUxMkVFNjk1RjAwRjcxOEIzIC8qIERvY3VtZW50T3JkZXJlZE1hcC5oICovOyB9
OworCQkxNEU5N0FGMTEyRUU2OTVGMDBGNzE4QjMgLyogRG9jdW1lbnRPcmRlcmVkTWFwLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0RTk3QUVGMTJF
RTY5NUYwMEY3MThCMyAvKiBEb2N1bWVudE9yZGVyZWRNYXAuY3BwICovOyB9OworCQkxNEU5N0M4
NzEyRjAxOTJBMDBGNzE4QjMgLyogU2NvcGVDb250YWluZXJOb2RlLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0RTk3Qzg1MTJGMDE5MkEwMEY3MThC
MyAvKiBTY29wZUNvbnRhaW5lck5vZGUuY3BwICovOyB9OworCQkxNEU5N0M4ODEyRjAxOTJBMDBG
NzE4QjMgLyogU2NvcGVDb250YWluZXJOb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAxNEU5N0M4NjEyRjAxOTJBMDBGNzE4QjMgLyogU2NvcGVDb250
YWluZXJOb2RlLmggKi87IH07CisJCTE0RTk3Qzk4MTJGMTU5ODgwMEY3MThCMyAvKiBTaGFkb3dS
b290LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNEU5
N0M5NzEyRjE1OTg4MDBGNzE4QjMgLyogU2hhZG93Um9vdC5oICovOyB9OwogCQkxNEZGRTMxRDBB
RTE5NjMzMDAxMzZCRjUgLyogSFRNTEZyYW1lRWxlbWVudEJhc2UuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0RkZFMzFCMEFFMTk2MzMwMDEzNkJGNSAv
KiBIVE1MRnJhbWVFbGVtZW50QmFzZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTE0RkZFMzFFMEFFMTk2MzMwMDEzNkJGNSAvKiBIVE1MRnJhbWVF
bGVtZW50QmFzZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAxNEZGRTMxQzBBRTE5NjMzMDAxMzZCRjUgLyogSFRNTEZyYW1lRWxlbWVudEJhc2UuY3Bw
ICovOyB9OwogCQkxNUM3NzA4RDEwMEQzQzZCMDA1QkEyNjcgLyogVmFsaWRpdHlTdGF0ZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTVDNzcwOEExMDBE
M0M2QTAwNUJBMjY3IC8qIFZhbGlkaXR5U3RhdGUuaCAqLzsgfTsKQEAgLTY2NDgsNiArNjY1Mywx
MSBAQAogCQkxNEU4MzZEMjA5Rjg1MTIwMDBCODVBRTQgLyogRXZlbnQuaWRsICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dDsgcGF0aCA9IEV2ZW50LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTRF
ODM3ODMwOUY4NUQxQzAwQjg1QUU0IC8qIEpTRXZlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEpTRXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkxNEU4Mzc4RDA5Rjg1RDRGMDBCODVBRTQgLyogSlNFdmVudC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSlNFdmVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkxNEU5N0FFRTEyRUU2OTVGMDBGNzE4QjMgLyogRG9jdW1lbnRPcmRlcmVkTWFwLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERvY3VtZW50T3JkZXJlZE1hcC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxNEU5N0FFRjEyRUU2OTVGMDBGNzE4QjMgLyogRG9j
dW1lbnRPcmRlcmVkTWFwLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IERvY3VtZW50T3JkZXJlZE1hcC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTE0
RTk3Qzg1MTJGMDE5MkEwMEY3MThCMyAvKiBTY29wZUNvbnRhaW5lck5vZGUuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2NvcGVDb250YWluZXJOb2RlLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTRFOTdDODYxMkYwMTkyQTAwRjcxOEIzIC8qIFNj
b3BlQ29udGFpbmVyTm9kZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY29w
ZUNvbnRhaW5lck5vZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTRFOTdDOTcx
MkYxNTk4ODAwRjcxOEIzIC8qIFNoYWRvd1Jvb3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gU2hhZG93Um9vdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNEZG
RTMxQjBBRTE5NjMzMDAxMzZCRjUgLyogSFRNTEZyYW1lRWxlbWVudEJhc2UuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSFRNTEZyYW1lRWxlbWVudEJhc2UuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTRGRkUzMUMwQUUxOTYzMzAwMTM2QkY1IC8qIEhUTUxGcmFt
ZUVsZW1lbnRCYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhU
TUxGcmFtZUVsZW1lbnRCYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTVD
NzcwODkxMDBEM0M2QTAwNUJBMjY3IC8qIFZhbGlkaXR5U3RhdGUuaWRsICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dDsgcGF0aCA9IFZhbGlkaXR5U3RhdGUuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMTg5NjEsNiArMTg5NzEsOCBAQAogCQkJCUVEMkJBODNCMDlBMjRCOTEwMDZDMEFDNCAvKiBE
b2N1bWVudE1hcmtlci5oICovLAogCQkJCUNFMDU3RkEzMTIyMDczMTEwMEE0NzZENSAvKiBEb2N1
bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwICovLAogCQkJCUNFMDU3RkE0MTIyMDczMTEwMEE0NzZE
NSAvKiBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuaCAqLywKKwkJCQkxNEU5N0FFRjEyRUU2OTVG
MDBGNzE4QjMgLyogRG9jdW1lbnRPcmRlcmVkTWFwLmNwcCAqLywKKwkJCQkxNEU5N0FFRTEyRUU2
OTVGMDBGNzE4QjMgLyogRG9jdW1lbnRPcmRlcmVkTWFwLmggKi8sCiAJCQkJQThDMjI4MEQxMUQ0
QTU5NzAwRDVBN0QzIC8qIERvY3VtZW50UGFyc2VyLmNwcCAqLywKIAkJCQlCQ0NGQkFFNzBCNTE1
MkVEMDAwMUYxRDcgLyogRG9jdW1lbnRQYXJzZXIuaCAqLywKIAkJCQk4NkQ5ODJGNjEyNUMxNTQw
MDBBRDlFM0QgLyogRG9jdW1lbnRUaW1pbmcuaCAqLywKQEAgLTE5MTA2LDYgKzE5MTE4LDggQEAK
IAkJCQlBODREODI3QjExRDMzM0VEMDA5NzI5OTAgLyogUmF3RGF0YURvY3VtZW50UGFyc2VyLmgg
Ki8sCiAJCQkJODUwMzFCMzUwQTQ0RUZDNzAwRjk5MkUwIC8qIFJlZ2lzdGVyZWRFdmVudExpc3Rl
bmVyLmNwcCAqLywKIAkJCQk4NTAzMUIzNjBBNDRFRkM3MDBGOTkyRTAgLyogUmVnaXN0ZXJlZEV2
ZW50TGlzdGVuZXIuaCAqLywKKwkJCQkxNEU5N0M4NTEyRjAxOTJBMDBGNzE4QjMgLyogU2NvcGVD
b250YWluZXJOb2RlLmNwcCAqLywKKwkJCQkxNEU5N0M4NjEyRjAxOTJBMDBGNzE4QjMgLyogU2Nv
cGVDb250YWluZXJOb2RlLmggKi8sCiAJCQkJOUJEMEJGOTIxMkE0MkJGNTAwNzJGRDQzIC8qIFNj
b3BlZEV2ZW50UXVldWUuY3BwICovLAogCQkJCTlCRDBCRjkxMTJBNDJCRjUwMDcyRkQ0MyAvKiBT
Y29wZWRFdmVudFF1ZXVlLmggKi8sCiAJCQkJQTg0RDgyQzAxMUQzNDc0ODAwOTcyOTkwIC8qIFNj
cmlwdGFibGVEb2N1bWVudFBhcnNlci5jcHAgKi8sCkBAIC0xOTExOCw2ICsxOTEzMiw3IEBACiAJ
CQkJMDg0QUVCRTMwRkI1MDVGQTAwMzg0ODNFIC8qIFNlbGVjdEVsZW1lbnQuaCAqLywKIAkJCQlC
QzdGQTY4MDBEMUYxNjc5MDBEQjIyQTkgLyogU2VsZWN0b3JOb2RlTGlzdC5jcHAgKi8sCiAJCQkJ
QkM3RkE2N0YwRDFGMTY3OTAwREIyMkE5IC8qIFNlbGVjdG9yTm9kZUxpc3QuaCAqLywKKwkJCQkx
NEU5N0M5NzEyRjE1OTg4MDBGNzE4QjMgLyogU2hhZG93Um9vdC5oICovLAogCQkJCUQwMUEyN0FC
MTBDOUJGRDgwMDAyNkE0MiAvKiBTcGFjZVNwbGl0U3RyaW5nLmNwcCAqLywKIAkJCQlEMDFBMjdB
QzEwQzlCRkQ4MDAwMjZBNDIgLyogU3BhY2VTcGxpdFN0cmluZy5oICovLAogCQkJCUNFQTM5NDlB
MTFENDVDREEwMDMwOTRDRiAvKiBTdGF0aWNIYXNoU2V0Tm9kZUxpc3QuY3BwICovLApAQCAtMjI0
MjYsNiArMjI0NDEsOSBAQAogCQkJCTk3REQ0RDg3MEZERjRENkUwMEVDRjlBNCAvKiBYU1NBdWRp
dG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzhBRTM0RjEyRUEwOTZBMDBFQjNBRTYgLyogU2Ny
b2xsYWJsZUFyZWEuaCBpbiBIZWFkZXJzICovLAogCQkJCTRGMkQyMDU0MTJFQUU3QjMwMDVDMjg3
NCAvKiBJbnNwZWN0b3JBZ2VudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMTRFOTdBRjAxMkVFNjk1
RjAwRjcxOEIzIC8qIERvY3VtZW50T3JkZXJlZE1hcC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMTRF
OTdDODgxMkYwMTkyQTAwRjcxOEIzIC8qIFNjb3BlQ29udGFpbmVyTm9kZS5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJMTRFOTdDOTgxMkYxNTk4ODAwRjcxOEIzIC8qIFNoYWRvd1Jvb3QuaCBpbiBIZWFk
ZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAw
OwogCQl9OwpAQCAtMjUxMjAsNiArMjUxMzgsOCBAQAogCQkJCTk3REQ0RDg2MEZERjRENkUwMEVD
RjlBNCAvKiBYU1NBdWRpdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDOEFFMzRFMTJFQTA5
NkEwMEVCM0FFNiAvKiBTY3JvbGxhYmxlQXJlYS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0RjJE
MjA1NTEyRUFFN0IzMDA1QzI4NzQgLyogSW5zcGVjdG9yQWdlbnQuY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJMTRFOTdBRjExMkVFNjk1RjAwRjcxOEIzIC8qIERvY3VtZW50T3JkZXJlZE1hcC5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQkxNEU5N0M4NzEyRjAxOTJBMDBGNzE4QjMgLyogU2NvcGVDb250
YWluZXJOb2RlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3lt
ZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL0NoYXJhY3RlckRhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGFyYWN0ZXJEYXRhLmgK
aW5kZXggMzFkYTYzY2IxYWYxMTA4MTAyM2Y1MWY4ZjllMjk4NDk0YzVlYTkxYS4uZWViMWFlZWFh
OWQwZTUwMzRlODJkYTAyZWY4NTBjMzhkMmJkOTE2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL0NoYXJhY3RlckRhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hhcmFjdGVy
RGF0YS5oCkBAIC0yMyw2ICsyMyw3IEBACiAjaWZuZGVmIENoYXJhY3RlckRhdGFfaAogI2RlZmlu
ZSBDaGFyYWN0ZXJEYXRhX2gKIAorI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiTm9k
ZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vQ29udGFpbmVyTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuaApp
bmRleCA3NmViMWJkNzExMTRhNjBiNTY1NjdmYWE0ZWZjOWNlODYwN2YwOGVkLi40ZTQ3MWY3MzE3
MDUyNmY0M2JhMGYxMTMwNTRkNDc5NWVlYzQ1ZmQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vQ29udGFpbmVyTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJO
b2RlLmgKQEAgLTI5LDYgKzI5LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRmxv
YXRQb2ludDsKK2NsYXNzIFNjb3BlQ29udGFpbmVyTm9kZTsKICAgICAKIHR5cGVkZWYgdm9pZCAo
Kk5vZGVDYWxsYmFjaykoTm9kZSopOwogCkBAIC04Nyw3ICs4OCw3IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgYm9vbCBwb3N0QXR0YWNoQ2FsbGJhY2tzQXJlU3VzcGVuZGVkKCk7CiAgICAgCiBwcm90
ZWN0ZWQ6Ci0gICAgQ29udGFpbmVyTm9kZShEb2N1bWVudCosIENvbnN0cnVjdGlvblR5cGUgPSBD
cmVhdGVDb250YWluZXIpOworICAgIENvbnRhaW5lck5vZGUoU2NvcGVDb250YWluZXJOb2RlKiBz
Y29wZSwgQ29uc3RydWN0aW9uVHlwZSA9IENyZWF0ZUNvbnRhaW5lcik7CiAKICAgICB2b2lkIHN1
c3BlbmRQb3N0QXR0YWNoQ2FsbGJhY2tzKCk7CiAgICAgdm9pZCByZXN1bWVQb3N0QXR0YWNoQ2Fs
bGJhY2tzKCk7CkBAIC0xMzUsOCArMTM2LDggQEAgaW5saW5lIGNvbnN0IENvbnRhaW5lck5vZGUq
IHRvQ29udGFpbmVyTm9kZShjb25zdCBOb2RlKiBub2RlKQogLy8gVGhpcyB3aWxsIGNhdGNoIGFu
eW9uZSBkb2luZyBhbiB1bm5lY2Vzc2FyeSBjYXN0Lgogdm9pZCB0b0NvbnRhaW5lck5vZGUoY29u
c3QgQ29udGFpbmVyTm9kZSopOwogCi1pbmxpbmUgQ29udGFpbmVyTm9kZTo6Q29udGFpbmVyTm9k
ZShEb2N1bWVudCogZG9jdW1lbnQsIENvbnN0cnVjdGlvblR5cGUgdHlwZSkKLSAgICA6IE5vZGUo
ZG9jdW1lbnQsIHR5cGUpCitpbmxpbmUgQ29udGFpbmVyTm9kZTo6Q29udGFpbmVyTm9kZShTY29w
ZUNvbnRhaW5lck5vZGUqIHNjb3BlLCBDb25zdHJ1Y3Rpb25UeXBlIHR5cGUpCisgICAgOiBOb2Rl
KHNjb3BlLCB0eXBlKQogICAgICwgbV9maXJzdENoaWxkKDApCiAgICAgLCBtX2xhc3RDaGlsZCgw
KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggNTNjNzE1Yzc1OGRkNzUyNDAxMWZjYjk5
OTdmMTZkNjczNTU1YmUwZi4uYzkzZWFmNTFhNzE0MWNiZjU0MDIxODExMmQ2Yzk5NzIxMWRlMjM5
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC04Miw3ICs4Miw2IEBACiAjaW5jbHVkZSAi
SFRNTElGcmFtZUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MSW5wdXRFbGVtZW50LmgiCiAjaW5j
bHVkZSAiSFRNTExpbmtFbGVtZW50LmgiCi0jaW5jbHVkZSAiSFRNTE1hcEVsZW1lbnQuaCIKICNp
bmNsdWRlICJIVE1MTmFtZUNvbGxlY3Rpb24uaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNp
bmNsdWRlICJIVE1MUGFyc2VySWRpb21zLmgiCkBAIC0yMjYsMTEgKzIyNSw2IEBAIHVzaW5nIG5h
bWVzcGFjZSBIVE1MTmFtZXM7CiAvLyBmb3IgZHVhbCBHNXMuIDopCiBzdGF0aWMgY29uc3QgaW50
IGNMYXlvdXRTY2hlZHVsZVRocmVzaG9sZCA9IDI1MDsKIAotLy8gVGhlc2UgZnVuY3Rpb25zIGNh
bid0IGhhdmUgaW50ZXJuYWwgbGlua2FnZSBiZWNhdXNlIHRoZXkgYXJlIHVzZWQgYXMgdGVtcGxh
dGUgYXJndW1lbnRzLgotYm9vbCBrZXlNYXRjaGVzSWQoQXRvbWljU3RyaW5nSW1wbCosIEVsZW1l
bnQqKTsKLWJvb2wga2V5TWF0Y2hlc01hcE5hbWUoQXRvbWljU3RyaW5nSW1wbCosIEVsZW1lbnQq
KTsKLWJvb2wga2V5TWF0Y2hlc0xvd2VyY2FzZWRNYXBOYW1lKEF0b21pY1N0cmluZ0ltcGwqLCBF
bGVtZW50Kik7Ci0KIC8vIERPTSBMZXZlbCAyIHNheXMgKGxldHRlcnMgYWRkZWQpOgogLy8KIC8v
IGEpIE5hbWUgc3RhcnQgY2hhcmFjdGVycyBtdXN0IGhhdmUgb25lIG9mIHRoZSBjYXRlZ29yaWVz
IExsLCBMdSwgTG8sIEx0LCBObC4KQEAgLTM3MCw3ICszNjQsNyBAQCBwcml2YXRlOgogfTsKIAog
RG9jdW1lbnQ6OkRvY3VtZW50KEZyYW1lKiBmcmFtZSwgY29uc3QgS1VSTCYgdXJsLCBib29sIGlz
WEhUTUwsIGJvb2wgaXNIVE1MLCBjb25zdCBLVVJMJiBiYXNlVVJMKQotICAgIDogQ29udGFpbmVy
Tm9kZSgwKQorICAgIDogU2NvcGVDb250YWluZXJOb2RlKFNDT1BFX0RPQ1VNRU5ULCAvKiBwYXJl
bnQgc2NvcGU6ICovIDAsIC8qIGRvY3VtZW50OiAqLyB0aGlzKQogICAgICwgbV9jb21wYXRpYmls
aXR5TW9kZShOb1F1aXJrc01vZGUpCiAgICAgLCBtX2NvbXBhdGliaWxpdHlNb2RlTG9ja2VkKGZh
bHNlKQogICAgICwgbV9kb21UcmVlVmVyc2lvbigwKQpAQCAtMzk0LDcgKzM4OCw2IEBAIERvY3Vt
ZW50OjpEb2N1bWVudChGcmFtZSogZnJhbWUsIGNvbnN0IEtVUkwmIHVybCwgYm9vbCBpc1hIVE1M
LCBib29sIGlzSFRNTCwgY29uCiAgICAgLCBtX3htbFN0YW5kYWxvbmUoZmFsc2UpCiAgICAgLCBt
X3NhdmVkUmVuZGVyZXIoMCkKICAgICAsIG1fZGVzaWduTW9kZShpbmhlcml0KQotICAgICwgbV9z
ZWxmT25seVJlZkNvdW50KDApCiAjaWYgRU5BQkxFKFNWRykKICAgICAsIG1fc3ZnRXh0ZW5zaW9u
cygwKQogI2VuZGlmCkBAIC00MzMsOCArNDI2LDYgQEAgRG9jdW1lbnQ6OkRvY3VtZW50KEZyYW1l
KiBmcmFtZSwgY29uc3QgS1VSTCYgdXJsLCBib29sIGlzWEhUTUwsIGJvb2wgaXNIVE1MLCBjb24K
ICAgICAsIG1fbmV4dFJlcXVlc3RBbmltYXRpb25GcmFtZUNhbGxiYWNrSWQoMCkKICNlbmRpZgog
ewotICAgIG1fZG9jdW1lbnQgPSB0aGlzOwotCiAgICAgbV9wYWdlR3JvdXBVc2VyU2hlZXRDYWNo
ZVZhbGlkID0gZmFsc2U7CiAKICAgICBtX3ByaW50aW5nID0gZmFsc2U7CkBAIC01MDIsNTYgKzQ5
MywyNSBAQCBEb2N1bWVudDo6RG9jdW1lbnQoRnJhbWUqIGZyYW1lLCBjb25zdCBLVVJMJiB1cmws
IGJvb2wgaXNYSFRNTCwgYm9vbCBpc0hUTUwsIGNvbgogI2VuZGlmCiB9CiAKLWlubGluZSB2b2lk
IERvY3VtZW50OjpEb2N1bWVudE9yZGVyZWRNYXA6OmNsZWFyKCkKLXsKLSAgICBtX21hcC5jbGVh
cigpOwotICAgIG1fZHVwbGljYXRlQ291bnRzLmNsZWFyKCk7Ci19Ci0KLXZvaWQgRG9jdW1lbnQ6
OnJlbW92ZWRMYXN0UmVmKCkKK3ZvaWQgRG9jdW1lbnQ6OmNsZWFyQ29udGFpbmVyKCkKIHsKLSAg
ICBBU1NFUlQoIW1fZGVsZXRpb25IYXNCZWd1bik7Ci0gICAgaWYgKG1fc2VsZk9ubHlSZWZDb3Vu
dCkgewotICAgICAgICAvLyBJZiByZW1vdmluZyBhIGNoaWxkIHJlbW92ZXMgdGhlIGxhc3Qgc2Vs
Zi1vbmx5IHJlZiwgd2UgZG9uJ3QKLSAgICAgICAgLy8gd2FudCB0aGUgZG9jdW1lbnQgdG8gYmUg
ZGVzdHJ1Y3RlZCB1bnRpbCBhZnRlcgotICAgICAgICAvLyByZW1vdmVBbGxDaGlsZHJlbiByZXR1
cm5zLCBzbyB3ZSBndWFyZCBvdXJzZWx2ZXMgd2l0aCBhbgotICAgICAgICAvLyBleHRyYSBzZWxm
LW9ubHkgcmVmLgotICAgICAgICBzZWxmT25seVJlZigpOwotCi0gICAgICAgIC8vIFdlIG11c3Qg
bWFrZSBzdXJlIG5vdCB0byBiZSByZXRhaW5pbmcgYW55IG9mIG91ciBjaGlsZHJlbiB0aHJvdWdo
Ci0gICAgICAgIC8vIHRoZXNlIGV4dHJhIHBvaW50ZXJzIG9yIHdlIHdpbGwgY3JlYXRlIGEgcmVm
ZXJlbmNlIGN5Y2xlLgotICAgICAgICBtX2RvY1R5cGUgPSAwOwotICAgICAgICBtX2ZvY3VzZWRO
b2RlID0gMDsKLSAgICAgICAgbV9ob3Zlck5vZGUgPSAwOwotICAgICAgICBtX2FjdGl2ZU5vZGUg
PSAwOwotICAgICAgICBtX3RpdGxlRWxlbWVudCA9IDA7Ci0gICAgICAgIG1fZG9jdW1lbnRFbGVt
ZW50ID0gMDsKKyAgICAvLyBXZSBtdXN0IG1ha2Ugc3VyZSBub3QgdG8gYmUgcmV0YWluaW5nIGFu
eSBvZiBvdXIgY2hpbGRyZW4gdGhyb3VnaAorICAgIC8vIHRoZXNlIGV4dHJhIHBvaW50ZXJzIG9y
IHdlIHdpbGwgY3JlYXRlIGEgcmVmZXJlbmNlIGN5Y2xlLgorICAgIG1fZG9jVHlwZSA9IDA7Cisg
ICAgbV9mb2N1c2VkTm9kZSA9IDA7CisgICAgbV9ob3Zlck5vZGUgPSAwOworICAgIG1fYWN0aXZl
Tm9kZSA9IDA7CisgICAgbV90aXRsZUVsZW1lbnQgPSAwOworICAgIG1fZG9jdW1lbnRFbGVtZW50
ID0gMDsKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCi0gICAgICAgIG1fZnVsbFNjcmVlbkVs
ZW1lbnQgPSAwOworICAgIG1fZnVsbFNjcmVlbkVsZW1lbnQgPSAwOwogI2VuZGlmCiAKLSAgICAg
ICAgLy8gcmVtb3ZlQWxsQ2hpbGRyZW4oKSBkb2Vzbid0IGFsd2F5cyB1bnJlZ2lzdGVyIElEcywg
ZG8gaXQgdXBmcm9udCB0byBhdm9pZCBoYXZpbmcgc3RhbGUgcmVmZXJlbmNlcyBpbiB0aGUgbWFw
LgotICAgICAgICBtX2VsZW1lbnRzQnlJZC5jbGVhcigpOworICAgIFNjb3BlQ29udGFpbmVyTm9k
ZTo6Y2xlYXJDb250YWluZXIoKTsKIAotICAgICAgICByZW1vdmVBbGxDaGlsZHJlbigpOwotCi0g
ICAgICAgIG1fbWFya2Vycy0+ZGV0YWNoKCk7Ci0KLSAgICAgICAgZGV0YWNoUGFyc2VyKCk7Ci0K
LSAgICAgICAgbV9jc3NDYW52YXNFbGVtZW50cy5jbGVhcigpOwotCi0jaWZuZGVmIE5ERUJVRwot
ICAgICAgICBtX2luUmVtb3ZlZExhc3RSZWZGdW5jdGlvbiA9IGZhbHNlOwotI2VuZGlmCi0KLSAg
ICAgICAgc2VsZk9ubHlEZXJlZigpOwotICAgIH0gZWxzZSB7Ci0jaWZuZGVmIE5ERUJVRwotICAg
ICAgICBtX2RlbGV0aW9uSGFzQmVndW4gPSB0cnVlOwotI2VuZGlmCi0gICAgICAgIGRlbGV0ZSB0
aGlzOwotICAgIH0KKyAgICBtX21hcmtlcnMtPmRldGFjaCgpOworICAgIGRldGFjaFBhcnNlcigp
OworICAgIG1fY3NzQ2FudmFzRWxlbWVudHMuY2xlYXIoKTsKIH0KIAogRG9jdW1lbnQ6On5Eb2N1
bWVudCgpCkBAIC01NzgsNyArNTM4LDYgQEAgRG9jdW1lbnQ6On5Eb2N1bWVudCgpCiAgICAgLy8g
aWYgdGhlIERvY3VtZW50UGFyc2VyIG91dGxpdmVzIHRoZSBEb2N1bWVudCBpdCB3b24ndCBjYXVz
ZSBiYWRuZXNzLgogICAgIEFTU0VSVCghbV9wYXJzZXIgfHwgbV9wYXJzZXItPnJlZkNvdW50KCkg
PT0gMSk7CiAgICAgZGV0YWNoUGFyc2VyKCk7Ci0gICAgbV9kb2N1bWVudCA9IDA7CiAgICAgbV9j
YWNoZWRSZXNvdXJjZUxvYWRlci5jbGVhcigpOwogCiAgICAgbV9yZW5kZXJBcmVuYS5jbGVhcigp
OwpAQCAtNjg2LDcgKzY0NSw3IEBAIHZvaWQgRG9jdW1lbnQ6OnNldERvY1R5cGUoUGFzc1JlZlB0
cjxEb2N1bWVudFR5cGU+IGRvY1R5cGUpCiAgICAgQVNTRVJUKCFtX2RvY1R5cGUgfHwgIWRvY1R5
cGUpOwogICAgIG1fZG9jVHlwZSA9IGRvY1R5cGU7CiAgICAgaWYgKG1fZG9jVHlwZSkKLSAgICAg
ICAgbV9kb2NUeXBlLT5zZXREb2N1bWVudCh0aGlzKTsKKyAgICAgICAgbV9kb2NUeXBlLT5zZXRT
Y29wZSh0aGlzKTsKIH0KIAogRE9NSW1wbGVtZW50YXRpb24qIERvY3VtZW50OjppbXBsZW1lbnRh
dGlvbigpIGNvbnN0CkBAIC02OTgsNyArNjU3LDcgQEAgRE9NSW1wbGVtZW50YXRpb24qIERvY3Vt
ZW50OjppbXBsZW1lbnRhdGlvbigpIGNvbnN0CiAKIHZvaWQgRG9jdW1lbnQ6OmNoaWxkcmVuQ2hh
bmdlZChib29sIGNoYW5nZWRCeVBhcnNlciwgTm9kZSogYmVmb3JlQ2hhbmdlLCBOb2RlKiBhZnRl
ckNoYW5nZSwgaW50IGNoaWxkQ291bnREZWx0YSkKIHsKLSAgICBDb250YWluZXJOb2RlOjpjaGls
ZHJlbkNoYW5nZWQoY2hhbmdlZEJ5UGFyc2VyLCBiZWZvcmVDaGFuZ2UsIGFmdGVyQ2hhbmdlLCBj
aGlsZENvdW50RGVsdGEpOworICAgIFNjb3BlQ29udGFpbmVyTm9kZTo6Y2hpbGRyZW5DaGFuZ2Vk
KGNoYW5nZWRCeVBhcnNlciwgYmVmb3JlQ2hhbmdlLCBhZnRlckNoYW5nZSwgY2hpbGRDb3VudERl
bHRhKTsKICAgICAKICAgICAvLyBJbnZhbGlkYXRlIHRoZSBkb2N1bWVudCBlbGVtZW50IHdlIGhh
dmUgY2FjaGVkIGluIGNhc2UgaXQgd2FzIHJlcGxhY2VkLgogICAgIG1fZG9jdW1lbnRFbGVtZW50
ID0gMDsKQEAgLTkxNyw3ICs4NzYsNyBAQCBQYXNzUmVmUHRyPE5vZGU+IERvY3VtZW50OjphZG9w
dE5vZGUoUGFzc1JlZlB0cjxOb2RlPiBzb3VyY2UsIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgICAg
ICAgICAgc291cmNlLT5wYXJlbnROb2RlKCktPnJlbW92ZUNoaWxkKHNvdXJjZS5nZXQoKSwgZWMp
OwogICAgIH0KIAotICAgIHNvdXJjZS0+c2V0RG9jdW1lbnRSZWN1cnNpdmVseSh0aGlzKTsKKyAg
ICBzb3VyY2UtPnNldFNjb3BlKHRoaXMpOwogCiAgICAgcmV0dXJuIHNvdXJjZTsKIH0KQEAgLTk5
MCw4OSArOTQ5LDYgQEAgUGFzc1JlZlB0cjxFbGVtZW50PiBEb2N1bWVudDo6Y3JlYXRlRWxlbWVu
dE5TKGNvbnN0IFN0cmluZyYgbmFtZXNwYWNlVVJJLCBjb25zdAogICAgIHJldHVybiBjcmVhdGVF
bGVtZW50KHFOYW1lLCBmYWxzZSk7CiB9CiAKLWlubGluZSB2b2lkIERvY3VtZW50OjpEb2N1bWVu
dE9yZGVyZWRNYXA6OmFkZChBdG9taWNTdHJpbmdJbXBsKiBrZXksIEVsZW1lbnQqIGVsZW1lbnQp
Ci17Ci0gICAgQVNTRVJUKGtleSk7Ci0gICAgQVNTRVJUKGVsZW1lbnQpOwotCi0gICAgaWYgKCFt
X2R1cGxpY2F0ZUNvdW50cy5jb250YWlucyhrZXkpKSB7Ci0gICAgICAgIC8vIEZhc3QgcGF0aC4g
VGhlIGtleSBpcyBub3QgYWxyZWFkeSBpbiBtX2R1cGxpY2F0ZUNvdW50cywgc28gd2UgYXNzdW1l
IHRoYXQgaXQncwotICAgICAgICAvLyBhbHNvIG5vdCBhbHJlYWR5IGluIG1fbWFwIGFuZCB0cnkg
dG8gYWRkIGl0LiBJZiB0aGF0IGFkZCBzdWNjZWVkcywgd2UncmUgZG9uZS4KLSAgICAgICAgcGFp
cjxNYXA6Oml0ZXJhdG9yLCBib29sPiBhZGRSZXN1bHQgPSBtX21hcC5hZGQoa2V5LCBlbGVtZW50
KTsKLSAgICAgICAgaWYgKGFkZFJlc3VsdC5zZWNvbmQpCi0gICAgICAgICAgICByZXR1cm47Ci0K
LSAgICAgICAgLy8gVGhlIGFkZCBmYWlsZWQsIHNvIHRoaXMga2V5IHdhcyBhbHJlYWR5IGNhY2hl
ZCBpbiBtX21hcC4KLSAgICAgICAgLy8gVGhlcmUgYXJlIG11bHRpcGxlIGVsZW1lbnRzIHdpdGgg
dGhpcyBrZXkuIFJlbW92ZSB0aGUgbV9tYXAKLSAgICAgICAgLy8gY2FjaGUgZm9yIHRoaXMga2V5
IHNvIGdldCBzZWFyY2hlcyBmb3IgaXQgbmV4dCB0aW1lIGl0IGlzIGNhbGxlZC4KLSAgICAgICAg
bV9tYXAucmVtb3ZlKGFkZFJlc3VsdC5maXJzdCk7Ci0gICAgICAgIG1fZHVwbGljYXRlQ291bnRz
LmFkZChrZXkpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIC8vIFRoZXJlIGFyZSBtdWx0aXBsZSBl
bGVtZW50cyB3aXRoIHRoaXMga2V5LiBSZW1vdmUgdGhlIG1fbWFwCi0gICAgICAgIC8vIGNhY2hl
IGZvciB0aGlzIGtleSBzbyBnZXQgd2lsbCBzZWFyY2ggZm9yIGl0IG5leHQgdGltZSBpdCBpcyBj
YWxsZWQuCi0gICAgICAgIE1hcDo6aXRlcmF0b3IgY2FjaGVkSXRlbSA9IG1fbWFwLmZpbmQoa2V5
KTsKLSAgICAgICAgaWYgKGNhY2hlZEl0ZW0gIT0gbV9tYXAuZW5kKCkpIHsKLSAgICAgICAgICAg
IG1fbWFwLnJlbW92ZShjYWNoZWRJdGVtKTsKLSAgICAgICAgICAgIG1fZHVwbGljYXRlQ291bnRz
LmFkZChrZXkpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgbV9kdXBsaWNhdGVDb3VudHMuYWRk
KGtleSk7Ci19Ci0KLWlubGluZSB2b2lkIERvY3VtZW50OjpEb2N1bWVudE9yZGVyZWRNYXA6OnJl
bW92ZShBdG9taWNTdHJpbmdJbXBsKiBrZXksIEVsZW1lbnQqIGVsZW1lbnQpCi17Ci0gICAgQVNT
RVJUKGtleSk7Ci0gICAgQVNTRVJUKGVsZW1lbnQpOwotCi0gICAgbV9tYXAuY2hlY2tDb25zaXN0
ZW5jeSgpOwotICAgIE1hcDo6aXRlcmF0b3IgY2FjaGVkSXRlbSA9IG1fbWFwLmZpbmQoa2V5KTsK
LSAgICBpZiAoY2FjaGVkSXRlbSAhPSBtX21hcC5lbmQoKSAmJiBjYWNoZWRJdGVtLT5zZWNvbmQg
PT0gZWxlbWVudCkKLSAgICAgICAgbV9tYXAucmVtb3ZlKGNhY2hlZEl0ZW0pOwotICAgIGVsc2UK
LSAgICAgICAgbV9kdXBsaWNhdGVDb3VudHMucmVtb3ZlKGtleSk7Ci19Ci0KLXRlbXBsYXRlPGJv
b2wga2V5TWF0Y2hlcyhBdG9taWNTdHJpbmdJbXBsKiwgRWxlbWVudCopPiBpbmxpbmUgRWxlbWVu
dCogRG9jdW1lbnQ6OkRvY3VtZW50T3JkZXJlZE1hcDo6Z2V0KEF0b21pY1N0cmluZ0ltcGwqIGtl
eSwgY29uc3QgRG9jdW1lbnQqIGRvY3VtZW50KSBjb25zdAotewotICAgIEFTU0VSVChrZXkpOwot
Ci0gICAgbV9tYXAuY2hlY2tDb25zaXN0ZW5jeSgpOwotCi0gICAgRWxlbWVudCogZWxlbWVudCA9
IG1fbWFwLmdldChrZXkpOwotICAgIGlmIChlbGVtZW50KQotICAgICAgICByZXR1cm4gZWxlbWVu
dDsKLQotICAgIGlmIChtX2R1cGxpY2F0ZUNvdW50cy5jb250YWlucyhrZXkpKSB7Ci0gICAgICAg
IC8vIFdlIGtub3cgdGhlcmUncyBhdCBsZWFzdCBvbmUgbm9kZSB0aGF0IG1hdGNoZXM7IGl0ZXJh
dGUgdG8gZmluZCB0aGUgZmlyc3Qgb25lLgotICAgICAgICBmb3IgKE5vZGUqIG5vZGUgPSBkb2N1
bWVudC0+Zmlyc3RDaGlsZCgpOyBub2RlOyBub2RlID0gbm9kZS0+dHJhdmVyc2VOZXh0Tm9kZSgp
KSB7Ci0gICAgICAgICAgICBpZiAoIW5vZGUtPmlzRWxlbWVudE5vZGUoKSkKLSAgICAgICAgICAg
ICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIGVsZW1lbnQgPSBzdGF0aWNfY2FzdDxFbGVtZW50
Kj4obm9kZSk7Ci0gICAgICAgICAgICBpZiAoIWtleU1hdGNoZXMoa2V5LCBlbGVtZW50KSkKLSAg
ICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIG1fZHVwbGljYXRlQ291bnRzLnJl
bW92ZShrZXkpOwotICAgICAgICAgICAgbV9tYXAuc2V0KGtleSwgZWxlbWVudCk7Ci0gICAgICAg
ICAgICByZXR1cm4gZWxlbWVudDsKLSAgICAgICAgfQotICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gMDsKLX0KLQotaW5saW5lIGJvb2wga2V5TWF0Y2hl
c0lkKEF0b21pY1N0cmluZ0ltcGwqIGtleSwgRWxlbWVudCogZWxlbWVudCkKLXsKLSAgICByZXR1
cm4gZWxlbWVudC0+aGFzSUQoKSAmJiBlbGVtZW50LT5nZXRJZEF0dHJpYnV0ZSgpLmltcGwoKSA9
PSBrZXk7Ci19Ci0KLUVsZW1lbnQqIERvY3VtZW50OjpnZXRFbGVtZW50QnlJZChjb25zdCBBdG9t
aWNTdHJpbmcmIGVsZW1lbnRJZCkgY29uc3QKLXsKLSAgICBpZiAoZWxlbWVudElkLmlzRW1wdHko
KSkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIG1fZWxlbWVudHNCeUlkLmdldDxrZXlN
YXRjaGVzSWQ+KGVsZW1lbnRJZC5pbXBsKCksIHRoaXMpOwotfQotCiBTdHJpbmcgRG9jdW1lbnQ6
OnJlYWR5U3RhdGUoKSBjb25zdAogewogICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3Ry
aW5nLCBsb2FkaW5nLCAoImxvYWRpbmciKSk7CkBAIC0xMzEzLDE2ICsxMTg5LDYgQEAgUGFzc1Jl
ZlB0cjxSYW5nZT4gRG9jdW1lbnQ6OmNhcmV0UmFuZ2VGcm9tUG9pbnQoaW50IHgsIGludCB5KQog
ICAgIHJldHVybiBSYW5nZTo6Y3JlYXRlKHRoaXMsIHJhbmdlQ29tcGxpYW50UG9zaXRpb24sIHJh
bmdlQ29tcGxpYW50UG9zaXRpb24pOwogfQogCi12b2lkIERvY3VtZW50OjphZGRFbGVtZW50QnlJ
ZChjb25zdCBBdG9taWNTdHJpbmcmIGVsZW1lbnRJZCwgRWxlbWVudCogZWxlbWVudCkKLXsKLSAg
ICBtX2VsZW1lbnRzQnlJZC5hZGQoZWxlbWVudElkLmltcGwoKSwgZWxlbWVudCk7Ci19Ci0KLXZv
aWQgRG9jdW1lbnQ6OnJlbW92ZUVsZW1lbnRCeUlkKGNvbnN0IEF0b21pY1N0cmluZyYgZWxlbWVu
dElkLCBFbGVtZW50KiBlbGVtZW50KQotewotICAgIG1fZWxlbWVudHNCeUlkLnJlbW92ZShlbGVt
ZW50SWQuaW1wbCgpLCBlbGVtZW50KTsKLX0KLQogRWxlbWVudCogRG9jdW1lbnQ6OmdldEVsZW1l
bnRCeUFjY2Vzc0tleShjb25zdCBTdHJpbmcmIGtleSkgY29uc3QKIHsKICAgICBpZiAoa2V5Lmlz
RW1wdHkoKSkKQEAgLTE4MDIsNyArMTY2OCw3IEBAIHZvaWQgRG9jdW1lbnQ6OmF0dGFjaCgpCiAg
ICAgUmVuZGVyT2JqZWN0KiByZW5kZXIgPSByZW5kZXJlcigpOwogICAgIHNldFJlbmRlcmVyKDAp
OwogCi0gICAgQ29udGFpbmVyTm9kZTo6YXR0YWNoKCk7CisgICAgU2NvcGVDb250YWluZXJOb2Rl
OjphdHRhY2goKTsKIAogICAgIHNldFJlbmRlcmVyKHJlbmRlcik7CiB9CkBAIC0xODU0LDcgKzE3
MjAsNyBAQCB2b2lkIERvY3VtZW50OjpkZXRhY2goKQogICAgIG1fZm9jdXNlZE5vZGUgPSAwOwog
ICAgIG1fYWN0aXZlTm9kZSA9IDA7CiAKLSAgICBDb250YWluZXJOb2RlOjpkZXRhY2goKTsKKyAg
ICBTY29wZUNvbnRhaW5lck5vZGU6OmRldGFjaCgpOwogCiAgICAgdW5zY2hlZHVsZVN0eWxlUmVj
YWxjKCk7CiAKQEAgLTI3ODksNyArMjY1NSw3IEBAIGJvb2wgRG9jdW1lbnQ6OmNoaWxkVHlwZUFs
bG93ZWQoTm9kZVR5cGUgdHlwZSkKIGJvb2wgRG9jdW1lbnQ6OmNhblJlcGxhY2VDaGlsZChOb2Rl
KiBuZXdDaGlsZCwgTm9kZSogb2xkQ2hpbGQpCiB7CiAgICAgaWYgKCFvbGRDaGlsZCkKLSAgICAg
ICAgLy8gQ29udGFpbmVyTm9kZTo6cmVwbGFjZUNoaWxkIHdpbGwgcmFpc2UgYSBOT1RfRk9VTkRf
RVJSLgorICAgICAgICAvLyBbU2NvcGVdQ29udGFpbmVyTm9kZTo6cmVwbGFjZUNoaWxkIHdpbGwg
cmFpc2UgYSBOT1RfRk9VTkRfRVJSLgogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIGlmIChv
bGRDaGlsZC0+bm9kZVR5cGUoKSA9PSBuZXdDaGlsZC0+bm9kZVR5cGUoKSkKQEAgLTM4NzksNDMg
KzM3NDUsNiBAQCBib29sIERvY3VtZW50OjpwYXJzZVF1YWxpZmllZE5hbWUoY29uc3QgU3RyaW5n
JiBxdWFsaWZpZWROYW1lLCBTdHJpbmcmIHByZWZpeCwgUwogICAgIHJldHVybiB0cnVlOwogfQog
Ci12b2lkIERvY3VtZW50OjphZGRJbWFnZU1hcChIVE1MTWFwRWxlbWVudCogaW1hZ2VNYXApCi17
Ci0gICAgQXRvbWljU3RyaW5nSW1wbCogbmFtZSA9IGltYWdlTWFwLT5nZXROYW1lKCkuaW1wbCgp
OwotICAgIGlmICghbmFtZSkKLSAgICAgICAgcmV0dXJuOwotICAgIG1faW1hZ2VNYXBzQnlOYW1l
LmFkZChuYW1lLCBpbWFnZU1hcCk7Ci19Ci0KLXZvaWQgRG9jdW1lbnQ6OnJlbW92ZUltYWdlTWFw
KEhUTUxNYXBFbGVtZW50KiBpbWFnZU1hcCkKLXsKLSAgICBBdG9taWNTdHJpbmdJbXBsKiBuYW1l
ID0gaW1hZ2VNYXAtPmdldE5hbWUoKS5pbXBsKCk7Ci0gICAgaWYgKCFuYW1lKQotICAgICAgICBy
ZXR1cm47Ci0gICAgbV9pbWFnZU1hcHNCeU5hbWUucmVtb3ZlKG5hbWUsIGltYWdlTWFwKTsKLX0K
LQotaW5saW5lIGJvb2wga2V5TWF0Y2hlc01hcE5hbWUoQXRvbWljU3RyaW5nSW1wbCoga2V5LCBF
bGVtZW50KiBlbGVtZW50KQotewotICAgIHJldHVybiBlbGVtZW50LT5oYXNUYWdOYW1lKG1hcFRh
ZykgJiYgc3RhdGljX2Nhc3Q8SFRNTE1hcEVsZW1lbnQqPihlbGVtZW50KS0+Z2V0TmFtZSgpLmlt
cGwoKSA9PSBrZXk7Ci19Ci0KLWlubGluZSBib29sIGtleU1hdGNoZXNMb3dlcmNhc2VkTWFwTmFt
ZShBdG9taWNTdHJpbmdJbXBsKiBrZXksIEVsZW1lbnQqIGVsZW1lbnQpCi17Ci0gICAgcmV0dXJu
IGVsZW1lbnQtPmhhc1RhZ05hbWUobWFwVGFnKSAmJiBzdGF0aWNfY2FzdDxIVE1MTWFwRWxlbWVu
dCo+KGVsZW1lbnQpLT5nZXROYW1lKCkubG93ZXIoKS5pbXBsKCkgPT0ga2V5OwotfQotCi1IVE1M
TWFwRWxlbWVudCogRG9jdW1lbnQ6OmdldEltYWdlTWFwKGNvbnN0IFN0cmluZyYgdXJsKSBjb25z
dAotewotICAgIGlmICh1cmwuaXNOdWxsKCkpCi0gICAgICAgIHJldHVybiAwOwotICAgIHNpemVf
dCBoYXNoUG9zID0gdXJsLmZpbmQoJyMnKTsKLSAgICBTdHJpbmcgbmFtZSA9IChoYXNoUG9zID09
IG5vdEZvdW5kID8gdXJsIDogdXJsLnN1YnN0cmluZyhoYXNoUG9zICsgMSkpLmltcGwoKTsKLSAg
ICBpZiAoaXNIVE1MRG9jdW1lbnQoKSkKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEhUTUxN
YXBFbGVtZW50Kj4obV9pbWFnZU1hcHNCeU5hbWUuZ2V0PGtleU1hdGNoZXNMb3dlcmNhc2VkTWFw
TmFtZT4oQXRvbWljU3RyaW5nKG5hbWUubG93ZXIoKSkuaW1wbCgpLCB0aGlzKSk7Ci0gICAgcmV0
dXJuIHN0YXRpY19jYXN0PEhUTUxNYXBFbGVtZW50Kj4obV9pbWFnZU1hcHNCeU5hbWUuZ2V0PGtl
eU1hdGNoZXNNYXBOYW1lPihBdG9taWNTdHJpbmcobmFtZSkuaW1wbCgpLCB0aGlzKSk7Ci19Ci0K
IHZvaWQgRG9jdW1lbnQ6OnNldERlY29kZXIoUGFzc1JlZlB0cjxUZXh0UmVzb3VyY2VEZWNvZGVy
PiBkZWNvZGVyKQogewogICAgIG1fZGVjb2RlciA9IGRlY29kZXI7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5o
CmluZGV4IGY2YmNkYzk4Y2Y3OTIzYTNjNDM1MzFhYTAxOTlkYTU5ZTE0ZmIyMzUuLjlmZTc1YmYw
ZTI3Y2NmYTc0YTllYWQ0ZWUzYWQ2NjJmYTY3N2YyNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBA
IC0zMSwxNCArMzEsMTUgQEAKICNpbmNsdWRlICJDb2xsZWN0aW9uQ2FjaGUuaCIKICNpbmNsdWRl
ICJDb2xsZWN0aW9uVHlwZS5oIgogI2luY2x1ZGUgIkNvbG9yLmgiCi0jaW5jbHVkZSAiQ29udGFp
bmVyTm9kZS5oIgorI2luY2x1ZGUgIkRvY3VtZW50T3JkZXJlZE1hcC5oIgogI2luY2x1ZGUgIkRv
Y3VtZW50VGltaW5nLmgiCiAjaW5jbHVkZSAiUXVhbGlmaWVkTmFtZS5oIgorI2luY2x1ZGUgIlNj
b3BlQ29udGFpbmVyTm9kZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIK
ICNpbmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUgIlZpZXdwb3J0QXJndW1lbnRzLmgiCiAjaW5j
bHVkZSA8d3RmL0ZpeGVkQXJyYXkuaD4KLSNpbmNsdWRlIDx3dGYvSGFzaENvdW50ZWRTZXQuaD4K
KyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNs
dWRlIDx3dGYvUGFzc093blB0ci5oPgogCkBAIC0xOTksNyArMjAwLDcgQEAgZW51bSBQYWdlc2hv
d0V2ZW50UGVyc2lzdGVuY2UgewogCiBlbnVtIFN0eWxlU2VsZWN0b3JVcGRhdGVGbGFnIHsgUmVj
YWxjU3R5bGVJbW1lZGlhdGVseSwgRGVmZXJSZWNhbGNTdHlsZSB9OwogCi1jbGFzcyBEb2N1bWVu
dCA6IHB1YmxpYyBDb250YWluZXJOb2RlLCBwdWJsaWMgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCB7
CitjbGFzcyBEb2N1bWVudCA6IHB1YmxpYyBTY29wZUNvbnRhaW5lck5vZGUsIHB1YmxpYyBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxEb2N1
bWVudD4gY3JlYXRlKEZyYW1lKiBmcmFtZSwgY29uc3QgS1VSTCYgdXJsKQogICAgIHsKQEAgLTIx
NiwyOSArMjE3LDYgQEAgcHVibGljOgogICAgIHVzaW5nIENvbnRhaW5lck5vZGU6OnJlZjsKICAg
ICB1c2luZyBDb250YWluZXJOb2RlOjpkZXJlZjsKIAotICAgIC8vIE5vZGVzIGJlbG9uZ2luZyB0
byB0aGlzIGRvY3VtZW50IGhvbGQgInNlbGYtb25seSIgcmVmZXJlbmNlcyAtCi0gICAgLy8gdGhl
c2UgYXJlIGVub3VnaCB0byBrZWVwIHRoZSBkb2N1bWVudCBmcm9tIGJlaW5nIGRlc3Ryb3llZCwg
YnV0Ci0gICAgLy8gbm90IGVub3VnaCB0byBrZWVwIGl0IGZyb20gcmVtb3ZpbmcgaXRzIGNoaWxk
cmVuLiBUaGlzIGFsbG93cyBhCi0gICAgLy8gbm9kZSB0aGF0IG91dGxpdmVzIGl0cyBkb2N1bWVu
dCB0byBzdGlsbCBoYXZlIGEgdmFsaWQgZG9jdW1lbnQKLSAgICAvLyBwb2ludGVyIHdpdGhvdXQg
aW50cm9kdWNpbmcgcmVmZXJlbmNlIGN5Y2xlcwotCi0gICAgdm9pZCBzZWxmT25seVJlZigpCi0g
ICAgewotICAgICAgICBBU1NFUlQoIW1fZGVsZXRpb25IYXNCZWd1bik7Ci0gICAgICAgICsrbV9z
ZWxmT25seVJlZkNvdW50OwotICAgIH0KLSAgICB2b2lkIHNlbGZPbmx5RGVyZWYoKQotICAgIHsK
LSAgICAgICAgQVNTRVJUKCFtX2RlbGV0aW9uSGFzQmVndW4pOwotICAgICAgICAtLW1fc2VsZk9u
bHlSZWZDb3VudDsKLSAgICAgICAgaWYgKCFtX3NlbGZPbmx5UmVmQ291bnQgJiYgIXJlZkNvdW50
KCkpIHsKLSNpZm5kZWYgTkRFQlVHCi0gICAgICAgICAgICBtX2RlbGV0aW9uSGFzQmVndW4gPSB0
cnVlOwotI2VuZGlmCi0gICAgICAgICAgICBkZWxldGUgdGhpczsKLSAgICAgICAgfQotICAgIH0K
LQogICAgIC8vIERPTSBtZXRob2RzICYgYXR0cmlidXRlcyBmb3IgRG9jdW1lbnQKIAogICAgIERF
RklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoYWJvcnQpOwpAQCAtMzIxLDkgKzI5OSw2IEBA
IHB1YmxpYzoKICAgICBQYXNzUmVmUHRyPE5vZGU+IGltcG9ydE5vZGUoTm9kZSogaW1wb3J0ZWRO
b2RlLCBib29sIGRlZXAsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8
RWxlbWVudD4gY3JlYXRlRWxlbWVudE5TKGNvbnN0IFN0cmluZyYgbmFtZXNwYWNlVVJJLCBjb25z
dCBTdHJpbmcmIHF1YWxpZmllZE5hbWUsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICBQYXNzUmVmUHRy
PEVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGJvb2wgY3JlYXRl
ZEJ5UGFyc2VyKTsKLSAgICBFbGVtZW50KiBnZXRFbGVtZW50QnlJZChjb25zdCBBdG9taWNTdHJp
bmcmKSBjb25zdDsKLSAgICBib29sIGhhc0VsZW1lbnRXaXRoSWQoQXRvbWljU3RyaW5nSW1wbCog
aWQpIGNvbnN0OwotICAgIGJvb2wgY29udGFpbnNNdWx0aXBsZUVsZW1lbnRzV2l0aElkKGNvbnN0
IEF0b21pY1N0cmluZyYgaWQpIGNvbnN0OwogCiAgICAgLyoqCiAgICAgICogUmV0cmlldmUgYWxs
IG5vZGVzIHRoYXQgaW50ZXJzZWN0IGEgcmVjdCBpbiB0aGUgd2luZG93J3MgZG9jdW1lbnQsIHVu
dGlsIGl0IGlzIGZ1bGx5IGVuY2xvc2VkIGJ5CkBAIC04MzksMTMgKzgxNCw2IEBAIHB1YmxpYzoK
ICAgICAvLyBDaGVja3MgdG8gbWFrZSBzdXJlIHByZWZpeCBhbmQgbmFtZXNwYWNlIGRvIG5vdCBj
b25mbGljdCAocGVyIERPTSBDb3JlIDMpCiAgICAgc3RhdGljIGJvb2wgaGFzUHJlZml4TmFtZXNw
YWNlTWlzbWF0Y2goY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIAotICAgIHZvaWQgYWRkRWxl
bWVudEJ5SWQoY29uc3QgQXRvbWljU3RyaW5nJiBlbGVtZW50SWQsIEVsZW1lbnQgKmVsZW1lbnQp
OwotICAgIHZvaWQgcmVtb3ZlRWxlbWVudEJ5SWQoY29uc3QgQXRvbWljU3RyaW5nJiBlbGVtZW50
SWQsIEVsZW1lbnQgKmVsZW1lbnQpOwotCi0gICAgdm9pZCBhZGRJbWFnZU1hcChIVE1MTWFwRWxl
bWVudCopOwotICAgIHZvaWQgcmVtb3ZlSW1hZ2VNYXAoSFRNTE1hcEVsZW1lbnQqKTsKLSAgICBI
VE1MTWFwRWxlbWVudCogZ2V0SW1hZ2VNYXAoY29uc3QgU3RyaW5nJiB1cmwpIGNvbnN0OwotCiAg
ICAgSFRNTEVsZW1lbnQqIGJvZHkoKSBjb25zdDsKICAgICB2b2lkIHNldEJvZHkoUGFzc1JlZlB0
cjxIVE1MRWxlbWVudD4sIEV4Y2VwdGlvbkNvZGUmKTsKIApAQCAtMTA5MSwzMSArMTA1OSwxMSBA
QCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgRG9jdW1lbnQoRnJhbWUqLCBjb25zdCBLVVJMJiB1
cmwsIGJvb2wgaXNYSFRNTCwgYm9vbCBpc0hUTUwsIGNvbnN0IEtVUkwmIGJhc2VVUkwgPSBLVVJM
KCkpOwogCisgICAgdmlydHVhbCB2b2lkIGNsZWFyQ29udGFpbmVyKCk7CisKICAgICB2b2lkIGNs
ZWFyWE1MVmVyc2lvbigpIHsgbV94bWxWZXJzaW9uID0gU3RyaW5nKCk7IH0KIAogcHJpdmF0ZToK
LSAgICBjbGFzcyBEb2N1bWVudE9yZGVyZWRNYXAgewotICAgIHB1YmxpYzoKLSAgICAgICAgdm9p
ZCBhZGQoQXRvbWljU3RyaW5nSW1wbCosIEVsZW1lbnQqKTsKLSAgICAgICAgdm9pZCByZW1vdmUo
QXRvbWljU3RyaW5nSW1wbCosIEVsZW1lbnQqKTsKLSAgICAgICAgdm9pZCBjbGVhcigpOwotCi0g
ICAgICAgIGJvb2wgY29udGFpbnMoQXRvbWljU3RyaW5nSW1wbCopIGNvbnN0OwotICAgICAgICBi
b29sIGNvbnRhaW5zTXVsdGlwbGUoQXRvbWljU3RyaW5nSW1wbCopIGNvbnN0OwotICAgICAgICB0
ZW1wbGF0ZTxib29sIGtleU1hdGNoZXMoQXRvbWljU3RyaW5nSW1wbCosIEVsZW1lbnQqKT4gRWxl
bWVudCogZ2V0KEF0b21pY1N0cmluZ0ltcGwqLCBjb25zdCBEb2N1bWVudCopIGNvbnN0OwotCi0g
ICAgICAgIHZvaWQgY2hlY2tDb25zaXN0ZW5jeSgpIGNvbnN0OwotCi0gICAgcHJpdmF0ZToKLSAg
ICAgICAgdHlwZWRlZiBIYXNoTWFwPEF0b21pY1N0cmluZ0ltcGwqLCBFbGVtZW50Kj4gTWFwOwot
Ci0gICAgICAgIC8vIFdlIG1haW50YWluIHRoZSBpbnZhcmlhbnQgdGhhdCBtX2R1cGxpY2F0ZUNv
dW50cyBpcyB0aGUgY291bnQgb2YgYWxsIGVsZW1lbnRzIHdpdGggYSBnaXZlbiBrZXkKLSAgICAg
ICAgLy8gZXhjbHVkaW5nIHRoZSBvbmUgcmVmZXJlbmNlZCBpbiBtX21hcCwgaWYgYW55LiBUaGlz
IG1lYW5zIGl0IG9uZSBsZXNzIHRoYW4gdGhlIHRvdGFsIGNvdW50Ci0gICAgICAgIC8vIHdoZW4g
dGhlIGZpcnN0IG5vZGUgd2l0aCBhIGdpdmVuIGtleSBpcyBjYWNoZWQsIG90aGVyd2lzZSB0aGUg
c2FtZSBhcyB0aGUgdG90YWwgY291bnQuCi0gICAgICAgIG11dGFibGUgTWFwIG1fbWFwOwotICAg
ICAgICBtdXRhYmxlIEhhc2hDb3VudGVkU2V0PEF0b21pY1N0cmluZ0ltcGwqPiBtX2R1cGxpY2F0
ZUNvdW50czsKLSAgICB9OwotCiAgICAgZnJpZW5kIGNsYXNzIElnbm9yZURlc3RydWN0aXZlV3Jp
dGVDb3VudEluY3JlbWVudGVyOwogCiAgICAgdm9pZCBkZXRhY2hQYXJzZXIoKTsKQEAgLTExMjQs
NyArMTA3Miw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwcm9jZXNzQXJndW1lbnRzKGNvbnN0IFN0
cmluZyYgZmVhdHVyZXMsIHZvaWQqIGRhdGEsIEFyZ3VtZW50c0NhbGxiYWNrKTsKIAogICAgIHZp
cnR1YWwgYm9vbCBpc0RvY3VtZW50KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZpcnR1
YWwgdm9pZCByZW1vdmVkTGFzdFJlZigpOwogCiAgICAgdmlydHVhbCB2b2lkIGNoaWxkcmVuQ2hh
bmdlZChib29sIGNoYW5nZWRCeVBhcnNlciA9IGZhbHNlLCBOb2RlKiBiZWZvcmVDaGFuZ2UgPSAw
LCBOb2RlKiBhZnRlckNoYW5nZSA9IDAsIGludCBjaGlsZENvdW50RGVsdGEgPSAwKTsKIApAQCAt
MTMwMyw4ICsxMjUwLDYgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8RG9jdW1lbnQ+IG1fdHJhbnNm
b3JtU291cmNlRG9jdW1lbnQ7CiAjZW5kaWYKIAotICAgIERvY3VtZW50T3JkZXJlZE1hcCBtX2lt
YWdlTWFwc0J5TmFtZTsKLQogICAgIGludCBtX2RvY0lEOyAvLyBBIHVuaXF1ZSBkb2N1bWVudCBp
ZGVudGlmaWVyIHVzZWQgZm9yIHRoaW5ncyBsaWtlIGRvY3VtZW50LXNwZWNpZmljIG1hcHBlZCBh
dHRyaWJ1dGVzLgogCiAgICAgU3RyaW5nIG1feG1sRW5jb2Rpbmc7CkBAIC0xMzIxLDE0ICsxMjY2
LDEwIEBAIHByaXZhdGU6CiAgICAgCiAgICAgUmVmUHRyPFRleHRSZXNvdXJjZURlY29kZXI+IG1f
ZGVjb2RlcjsKIAotICAgIERvY3VtZW50T3JkZXJlZE1hcCBtX2VsZW1lbnRzQnlJZDsKLSAgICAK
ICAgICBtdXRhYmxlIEhhc2hNYXA8U3RyaW5nSW1wbCosIEVsZW1lbnQqLCBDYXNlRm9sZGluZ0hh
c2g+IG1fZWxlbWVudHNCeUFjY2Vzc0tleTsKICAgICAKICAgICBJbmhlcml0ZWRCb29sIG1fZGVz
aWduTW9kZTsKICAgICAKLSAgICBpbnQgbV9zZWxmT25seVJlZkNvdW50OwotCiAgICAgQ2hlY2tl
ZFJhZGlvQnV0dG9ucyBtX2NoZWNrZWRSYWRpb0J1dHRvbnM7CiAKICAgICB0eXBlZGVmIEhhc2hN
YXA8QXRvbWljU3RyaW5nSW1wbCosIENvbGxlY3Rpb25DYWNoZSo+IE5hbWVkQ29sbGVjdGlvbk1h
cDsKQEAgLTE0MTEsNDcgKzEzNTIsNiBAQCBwcml2YXRlOgogI2VuZGlmCiB9OwogCi1pbmxpbmUg
Ym9vbCBEb2N1bWVudDo6RG9jdW1lbnRPcmRlcmVkTWFwOjpjb250YWlucyhBdG9taWNTdHJpbmdJ
bXBsKiBpZCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9tYXAuY29udGFpbnMoaWQpIHx8IG1fZHVw
bGljYXRlQ291bnRzLmNvbnRhaW5zKGlkKTsKLX0KLQotaW5saW5lIGJvb2wgRG9jdW1lbnQ6OkRv
Y3VtZW50T3JkZXJlZE1hcDo6Y29udGFpbnNNdWx0aXBsZShBdG9taWNTdHJpbmdJbXBsKiBpZCkg
Y29uc3QKLXsKLSAgICByZXR1cm4gbV9kdXBsaWNhdGVDb3VudHMuY29udGFpbnMoaWQpOwotfQot
Ci1pbmxpbmUgYm9vbCBEb2N1bWVudDo6aGFzRWxlbWVudFdpdGhJZChBdG9taWNTdHJpbmdJbXBs
KiBpZCkgY29uc3QKLXsKLSAgICBBU1NFUlQoaWQpOwotICAgIHJldHVybiBtX2VsZW1lbnRzQnlJ
ZC5jb250YWlucyhpZCk7Ci19Ci0KLWlubGluZSBib29sIERvY3VtZW50Ojpjb250YWluc011bHRp
cGxlRWxlbWVudHNXaXRoSWQoY29uc3QgQXRvbWljU3RyaW5nJiBpZCkgY29uc3QKLXsKLSAgICBy
ZXR1cm4gbV9lbGVtZW50c0J5SWQuY29udGFpbnNNdWx0aXBsZShpZC5pbXBsKCkpOwotfQotICAg
IAotaW5saW5lIGJvb2wgTm9kZTo6aXNEb2N1bWVudE5vZGUoKSBjb25zdAotewotICAgIHJldHVy
biB0aGlzID09IG1fZG9jdW1lbnQ7Ci19Ci0KLS8vIGhlcmUgYmVjYXVzZSBpdCB1c2VzIGEgRG9j
dW1lbnQgbWV0aG9kIGJ1dCB3ZSByZWFsbHkgd2FudCB0byBpbmxpbmUgaXQKLWlubGluZSBOb2Rl
OjpOb2RlKERvY3VtZW50KiBkb2N1bWVudCwgQ29uc3RydWN0aW9uVHlwZSB0eXBlKQotICAgIDog
bV9kb2N1bWVudChkb2N1bWVudCkKLSAgICAsIG1fcHJldmlvdXMoMCkKLSAgICAsIG1fbmV4dCgw
KQotICAgICwgbV9yZW5kZXJlcigwKQotICAgICwgbV9ub2RlRmxhZ3ModHlwZSkKLXsKLSAgICBp
ZiAobV9kb2N1bWVudCkKLSAgICAgICAgbV9kb2N1bWVudC0+c2VsZk9ubHlSZWYoKTsKLSNpZiAh
ZGVmaW5lZChOREVCVUcpIHx8IChkZWZpbmVkKERVTVBfTk9ERV9TVEFUSVNUSUNTKSAmJiBEVU1Q
X05PREVfU1RBVElTVElDUykKLSAgICB0cmFja0ZvckRlYnVnZ2luZygpOwotI2VuZGlmCi19Ci0K
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIERvY3VtZW50X2gKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE9yZGVyZWRNYXAuY3BwIGIvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50T3JkZXJlZE1hcC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGY3NWE2MWU2OTIw
M2I2YzdkZDI2NmUzZWZlMGJjOGJiYzRjYWNmZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudE9yZGVyZWRNYXAuY3BwCkBAIC0wLDAgKzEsMTUzIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAxOTk5IExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCisgKiAgICAg
ICAgICAgKEMpIDE5OTkgQW50dGkgS29pdmlzdG8gKGtvaXZpc3RvQGtkZS5vcmcpCisgKiAgICAg
ICAgICAgKEMpIDIwMDEgRGlyayBNdWVsbGVyIChtdWVsbGVyQGtkZS5vcmcpCisgKiAgICAgICAg
ICAgKEMpIDIwMDYgQWxleGV5IFByb3NrdXJ5YWtvdiAoYXBAd2Via2l0Lm9yZykKKyAqIENvcHly
aWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDkgVG9yY2ggTW9i
aWxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gKGh0dHA6Ly93d3cudG9yY2htb2JpbGUuY29t
LykKKyAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBp
dHMgc3Vic2lkaWFyeSgtaWVzKQorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisg
KiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisg
KiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAor
ICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkRvY3VtZW50T3Jk
ZXJlZE1hcC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2lubGluZSBib29sIGtleU1hdGNo
ZXNJZChBdG9taWNTdHJpbmdJbXBsKiBrZXksIEVsZW1lbnQqIGVsZW1lbnQpCit7CisgICAgcmV0
dXJuIGVsZW1lbnQtPmhhc0lEKCkgJiYgZWxlbWVudC0+Z2V0SWRBdHRyaWJ1dGUoKS5pbXBsKCkg
PT0ga2V5OworfQorCitpbmxpbmUgYm9vbCBrZXlNYXRjaGVzTWFwTmFtZShBdG9taWNTdHJpbmdJ
bXBsKiBrZXksIEVsZW1lbnQqIGVsZW1lbnQpCit7CisgICAgcmV0dXJuIGVsZW1lbnQtPmhhc1Rh
Z05hbWUobWFwVGFnKSAmJiBzdGF0aWNfY2FzdDxIVE1MTWFwRWxlbWVudCo+KGVsZW1lbnQpLT5n
ZXROYW1lKCkuaW1wbCgpID09IGtleTsKK30KKworaW5saW5lIGJvb2wga2V5TWF0Y2hlc0xvd2Vy
Y2FzZWRNYXBOYW1lKEF0b21pY1N0cmluZ0ltcGwqIGtleSwgRWxlbWVudCogZWxlbWVudCkKK3sK
KyAgICByZXR1cm4gZWxlbWVudC0+aGFzVGFnTmFtZShtYXBUYWcpICYmIHN0YXRpY19jYXN0PEhU
TUxNYXBFbGVtZW50Kj4oZWxlbWVudCktPmdldE5hbWUoKS5sb3dlcigpLmltcGwoKSA9PSBrZXk7
Cit9CisKK2lubGluZSB2b2lkIERvY3VtZW50T3JkZXJlZE1hcDo6Y2xlYXIoKQoreworICAgIG1f
bWFwLmNsZWFyKCk7CisgICAgbV9kdXBsaWNhdGVDb3VudHMuY2xlYXIoKTsKK30KKworaW5saW5l
IHZvaWQgRG9jdW1lbnRPcmRlcmVkTWFwOjphZGQoQXRvbWljU3RyaW5nSW1wbCoga2V5LCBFbGVt
ZW50KiBlbGVtZW50KQoreworICAgIEFTU0VSVChrZXkpOworICAgIEFTU0VSVChlbGVtZW50KTsK
KworICAgIGlmICghbV9kdXBsaWNhdGVDb3VudHMuY29udGFpbnMoa2V5KSkgeworICAgICAgICAv
LyBGYXN0IHBhdGguIFRoZSBrZXkgaXMgbm90IGFscmVhZHkgaW4gbV9kdXBsaWNhdGVDb3VudHMs
IHNvIHdlIGFzc3VtZSB0aGF0IGl0J3MKKyAgICAgICAgLy8gYWxzbyBub3QgYWxyZWFkeSBpbiBt
X21hcCBhbmQgdHJ5IHRvIGFkZCBpdC4gSWYgdGhhdCBhZGQgc3VjY2VlZHMsIHdlJ3JlIGRvbmUu
CisgICAgICAgIHBhaXI8TWFwOjppdGVyYXRvciwgYm9vbD4gYWRkUmVzdWx0ID0gbV9tYXAuYWRk
KGtleSwgZWxlbWVudCk7CisgICAgICAgIGlmIChhZGRSZXN1bHQuc2Vjb25kKQorICAgICAgICAg
ICAgcmV0dXJuOworCisgICAgICAgIC8vIFRoZSBhZGQgZmFpbGVkLCBzbyB0aGlzIGtleSB3YXMg
YWxyZWFkeSBjYWNoZWQgaW4gbV9tYXAuCisgICAgICAgIC8vIFRoZXJlIGFyZSBtdWx0aXBsZSBl
bGVtZW50cyB3aXRoIHRoaXMga2V5LiBSZW1vdmUgdGhlIG1fbWFwCisgICAgICAgIC8vIGNhY2hl
IGZvciB0aGlzIGtleSBzbyBnZXQgc2VhcmNoZXMgZm9yIGl0IG5leHQgdGltZSBpdCBpcyBjYWxs
ZWQuCisgICAgICAgIG1fbWFwLnJlbW92ZShhZGRSZXN1bHQuZmlyc3QpOworICAgICAgICBtX2R1
cGxpY2F0ZUNvdW50cy5hZGQoa2V5KTsKKyAgICB9IGVsc2UgeworICAgICAgICAvLyBUaGVyZSBh
cmUgbXVsdGlwbGUgZWxlbWVudHMgd2l0aCB0aGlzIGtleS4gUmVtb3ZlIHRoZSBtX21hcAorICAg
ICAgICAvLyBjYWNoZSBmb3IgdGhpcyBrZXkgc28gZ2V0IHdpbGwgc2VhcmNoIGZvciBpdCBuZXh0
IHRpbWUgaXQgaXMgY2FsbGVkLgorICAgICAgICBNYXA6Oml0ZXJhdG9yIGNhY2hlZEl0ZW0gPSBt
X21hcC5maW5kKGtleSk7CisgICAgICAgIGlmIChjYWNoZWRJdGVtICE9IG1fbWFwLmVuZCgpKSB7
CisgICAgICAgICAgICBtX21hcC5yZW1vdmUoY2FjaGVkSXRlbSk7CisgICAgICAgICAgICBtX2R1
cGxpY2F0ZUNvdW50cy5hZGQoa2V5KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIG1fZHVwbGlj
YXRlQ291bnRzLmFkZChrZXkpOworfQorCitpbmxpbmUgdm9pZCBEb2N1bWVudE9yZGVyZWRNYXA6
OnJlbW92ZShBdG9taWNTdHJpbmdJbXBsKiBrZXksIEVsZW1lbnQqIGVsZW1lbnQpCit7CisgICAg
QVNTRVJUKGtleSk7CisgICAgQVNTRVJUKGVsZW1lbnQpOworCisgICAgbV9tYXAuY2hlY2tDb25z
aXN0ZW5jeSgpOworICAgIE1hcDo6aXRlcmF0b3IgY2FjaGVkSXRlbSA9IG1fbWFwLmZpbmQoa2V5
KTsKKyAgICBpZiAoY2FjaGVkSXRlbSAhPSBtX21hcC5lbmQoKSAmJiBjYWNoZWRJdGVtLT5zZWNv
bmQgPT0gZWxlbWVudCkKKyAgICAgICAgbV9tYXAucmVtb3ZlKGNhY2hlZEl0ZW0pOworICAgIGVs
c2UKKyAgICAgICAgbV9kdXBsaWNhdGVDb3VudHMucmVtb3ZlKGtleSk7Cit9CisKK3RlbXBsYXRl
PGJvb2wga2V5TWF0Y2hlcyhBdG9taWNTdHJpbmdJbXBsKiwgRWxlbWVudCopPgoraW5saW5lIEVs
ZW1lbnQqIERvY3VtZW50T3JkZXJlZE1hcDo6Z2V0KEF0b21pY1N0cmluZ0ltcGwqIGtleSwgY29u
c3QgRG9jdW1lbnQqIGRvY3VtZW50KSBjb25zdAoreworICAgIEFTU0VSVChrZXkpOworCisgICAg
bV9tYXAuY2hlY2tDb25zaXN0ZW5jeSgpOworCisgICAgRWxlbWVudCogZWxlbWVudCA9IG1fbWFw
LmdldChrZXkpOworICAgIGlmIChlbGVtZW50KQorICAgICAgICByZXR1cm4gZWxlbWVudDsKKwor
ICAgIGlmIChtX2R1cGxpY2F0ZUNvdW50cy5jb250YWlucyhrZXkpKSB7CisgICAgICAgIC8vIFdl
IGtub3cgdGhlcmUncyBhdCBsZWFzdCBvbmUgbm9kZSB0aGF0IG1hdGNoZXM7IGl0ZXJhdGUgdG8g
ZmluZCB0aGUgZmlyc3Qgb25lLgorICAgICAgICBmb3IgKE5vZGUqIG5vZGUgPSBkb2N1bWVudC0+
Zmlyc3RDaGlsZCgpOyBub2RlOyBub2RlID0gbm9kZS0+dHJhdmVyc2VOZXh0Tm9kZSgpKSB7Cisg
ICAgICAgICAgICBpZiAoIW5vZGUtPmlzRWxlbWVudE5vZGUoKSkKKyAgICAgICAgICAgICAgICBj
b250aW51ZTsKKyAgICAgICAgICAgIGVsZW1lbnQgPSBzdGF0aWNfY2FzdDxFbGVtZW50Kj4obm9k
ZSk7CisgICAgICAgICAgICBpZiAoIWtleU1hdGNoZXMoa2V5LCBlbGVtZW50KSkKKyAgICAgICAg
ICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIG1fZHVwbGljYXRlQ291bnRzLnJlbW92ZShr
ZXkpOworICAgICAgICAgICAgbV9tYXAuc2V0KGtleSwgZWxlbWVudCk7CisgICAgICAgICAgICBy
ZXR1cm4gZWxlbWVudDsKKyAgICAgICAgfQorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKworaW5saW5lIEVsZW1lbnQqIGdldEVsZW1lbnRC
eUlkKEF0b21pY1N0cmluZ0ltcGwqIGtleSwgY29uc3QgRG9jdW1lbnQqIGRvY3VtZW50KSBjb25z
dAoreworICAgIHJldHVybiBnZXQ8a2V5TWF0Y2hlc0lkPihrZXksIGRvY3VtZW50KTsKK30KKwor
aW5saW5lIEVsZW1lbnQqIGdldEVsZW1lbnRCeU1hcE5hbWUoQXRvbWljU3RyaW5nSW1wbCoga2V5
LCBjb25zdCBEb2N1bWVudCogZG9jdW1lbnQpIGNvbnN0Cit7CisgICAgcmV0dXJuIGdldDxrZXlN
YXRjaGVzTWFwTmFtZT4oa2V5LCBkb2N1bWVudCk7Cit9CisKK2lubGluZSBFbGVtZW50KiBnZXRF
bGVtZW50QnlMb3dlcmNhc2VNYXBOYW1lKEF0b21pY1N0cmluZ0ltcGwqIGtleSwgY29uc3QgRG9j
dW1lbnQqIGRvY3VtZW50KSBjb25zdAoreworICAgIHJldHVybiBnZXQ8a2V5TWF0Y2hlc0xvd2Vy
Y2FzZWRNYXBOYW1lPihrZXksIGRvY3VtZW50KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRPcmRlcmVkTWFwLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRPcmRlcmVkTWFwLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDEw
MmEwMzgxOTQ4Nzk2MGQ1YmVjNzdkYWEzNTcyNzU2YjUxYjkxNQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE9yZGVyZWRNYXAuaApAQCAtMCwwICsxLDg5IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAxOTk5IExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCisg
KiAgICAgICAgICAgKEMpIDE5OTkgQW50dGkgS29pdmlzdG8gKGtvaXZpc3RvQGtkZS5vcmcpCisg
KiAgICAgICAgICAgKEMpIDIwMDEgRGlyayBNdWVsbGVyIChtdWVsbGVyQGtkZS5vcmcpCisgKiAg
ICAgICAgICAgKEMpIDIwMDYgQWxleGV5IFByb3NrdXJ5YWtvdiAoYXBAd2Via2l0Lm9yZykKKyAq
IENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIw
MDkgVG9yY2ggTW9iaWxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gKGh0dHA6Ly93d3cudG9y
Y2htb2JpbGUuY29tLykKKyAqIENvcHlyaWdodCAoQykgMjAxMCBOb2tpYSBDb3Jwb3JhdGlvbiBh
bmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVy
IHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
CisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgRG9jdW1lbnRPcmRlcmVkTWFwX2gKKyNkZWZp
bmUgRG9jdW1lbnRPcmRlcmVkTWFwX2gKKworI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5j
bHVkZSA8d3RmL0hhc2hDb3VudGVkU2V0Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xh
c3MgRG9jdW1lbnQ7CitjbGFzcyBFbGVtZW50OworCitjbGFzcyBEb2N1bWVudE9yZGVyZWRNYXAg
eworcHVibGljOgorICAgIHZvaWQgYWRkKEF0b21pY1N0cmluZ0ltcGwqLCBFbGVtZW50Kik7Cisg
ICAgdm9pZCByZW1vdmUoQXRvbWljU3RyaW5nSW1wbCosIEVsZW1lbnQqKTsKKyAgICB2b2lkIGNs
ZWFyKCk7CisKKyAgICBib29sIGNvbnRhaW5zKEF0b21pY1N0cmluZ0ltcGwqKSBjb25zdDsKKyAg
ICBib29sIGNvbnRhaW5zTXVsdGlwbGUoQXRvbWljU3RyaW5nSW1wbCopIGNvbnN0OworICAgIC8v
IGNvbmNyZXRlIGluc3RhbnRpYXRpb25zIG9mIHRoZSBnZXQ8PigpIG1ldGhvZCB0ZW1wbGF0ZQor
ICAgIEVsZW1lbnQqIGdldEVsZW1lbnRCeUlkKEF0b21pY1N0cmluZ0ltcGwqLCBjb25zdCBEb2N1
bWVudCopIGNvbnN0OworICAgIEVsZW1lbnQqIGdldEVsZW1lbnRCeU1hcE5hbWUoQXRvbWljU3Ry
aW5nSW1wbCosIGNvbnN0IERvY3VtZW50KikgY29uc3Q7CisgICAgRWxlbWVudCogZ2V0RWxlbWVu
dEJ5TG93ZXJjYXNlTWFwTmFtZShBdG9taWNTdHJpbmdJbXBsKiwgY29uc3QgRG9jdW1lbnQqKSBj
b25zdDsKKworICAgIHZvaWQgY2hlY2tDb25zaXN0ZW5jeSgpIGNvbnN0OworCitwcml2YXRlOgor
ICAgIHRlbXBsYXRlPGJvb2wga2V5TWF0Y2hlcyhBdG9taWNTdHJpbmdJbXBsKiwgRWxlbWVudCop
PiBFbGVtZW50KiBnZXQoQXRvbWljU3RyaW5nSW1wbCosIGNvbnN0IERvY3VtZW50KikgY29uc3Q7
CisKKyAgICB0eXBlZGVmIEhhc2hNYXA8QXRvbWljU3RyaW5nSW1wbCosIEVsZW1lbnQqPiBNYXA7
CisKKyAgICAvLyBXZSBtYWludGFpbiB0aGUgaW52YXJpYW50IHRoYXQgbV9kdXBsaWNhdGVDb3Vu
dHMgaXMgdGhlIGNvdW50IG9mIGFsbCBlbGVtZW50cyB3aXRoIGEgZ2l2ZW4ga2V5CisgICAgLy8g
ZXhjbHVkaW5nIHRoZSBvbmUgcmVmZXJlbmNlZCBpbiBtX21hcCwgaWYgYW55LiBUaGlzIG1lYW5z
IGl0IG9uZSBsZXNzIHRoYW4gdGhlIHRvdGFsIGNvdW50CisgICAgLy8gd2hlbiB0aGUgZmlyc3Qg
bm9kZSB3aXRoIGEgZ2l2ZW4ga2V5IGlzIGNhY2hlZCwgb3RoZXJ3aXNlIHRoZSBzYW1lIGFzIHRo
ZSB0b3RhbCBjb3VudC4KKyAgICBtdXRhYmxlIE1hcCBtX21hcDsKKyAgICBtdXRhYmxlIEhhc2hD
b3VudGVkU2V0PEF0b21pY1N0cmluZ0ltcGwqPiBtX2R1cGxpY2F0ZUNvdW50czsKK307CisKK2lu
bGluZSBib29sIERvY3VtZW50T3JkZXJlZE1hcDo6Y29udGFpbnMoQXRvbWljU3RyaW5nSW1wbCog
aWQpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fbWFwLmNvbnRhaW5zKGlkKSB8fCBtX2R1cGxpY2F0
ZUNvdW50cy5jb250YWlucyhpZCk7Cit9CisKK2lubGluZSBib29sIERvY3VtZW50T3JkZXJlZE1h
cDo6Y29udGFpbnNNdWx0aXBsZShBdG9taWNTdHJpbmdJbXBsKiBpZCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gbV9kdXBsaWNhdGVDb3VudHMuY29udGFpbnMoaWQpOworfQorCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBEb2N1bWVudE9yZGVyZWRNYXBfaAorCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxl
bWVudC5jcHAKaW5kZXggYzYyYWU0OWJmMjY4ZGY2NDMzMWI5YWNkMGIyNTA5MWE1MWI3Yjk4OC4u
NWQzZjJhYTE5ZDgxYzRhNzdmYWEzOWYyNTk0MzFjZjQ2OTRlMTgwNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVt
ZW50LmNwcApAQCAtNTQsNiArNTQsNyBAQAogI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKICNpbmNs
dWRlICJSZW5kZXJXaWRnZXQuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgorI2luY2x1ZGUgIlNo
YWRvd1Jvb3QuaCIKICNpbmNsdWRlICJUZXh0SXRlcmF0b3IuaCIKICNpbmNsdWRlICJYTUxOYW1l
cy5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KQEAgLTEwODMsMTkgKzEwODQsMTkg
QEAgdm9pZCBFbGVtZW50OjpyZWNhbGNTdHlsZShTdHlsZUNoYW5nZSBjaGFuZ2UpCiAgICAgY2xl
YXJDaGlsZE5lZWRzU3R5bGVSZWNhbGMoKTsKIH0KIAotTm9kZSogRWxlbWVudDo6c2hhZG93Um9v
dCgpCitTaGFkb3dSb290KiBFbGVtZW50OjpzaGFkb3dSb290KCkKIHsKICAgICByZXR1cm4gaGFz
UmFyZURhdGEoKSA/IHJhcmVEYXRhKCktPm1fc2hhZG93Um9vdCA6IDA7CiB9CiAKLXZvaWQgRWxl
bWVudDo6c2V0U2hhZG93Um9vdChQYXNzUmVmUHRyPE5vZGU+IG5vZGUpCit2b2lkIEVsZW1lbnQ6
OnNldFNoYWRvd1Jvb3QoUGFzc1JlZlB0cjxTaGFkb3dSb290PiBub2RlKQogewogICAgIC8vIEZJ
WE1FOiBCZWNhdXNlIHRvZGF5IHRoaXMgaXMgbmV2ZXIgY2FsbGVkIGZyb20gc2NyaXB0IGRpcmVj
dGx5LCB3ZSBkb24ndCBoYXZlIHRvIHdvcnJ5CiAgICAgLy8gYWJvdXQgY29tcHJvbWlzaW5nIERP
TSB0cmVlIGludGVncml0eSAoZWcuIG5vZGUgYmVpbmcgYSBwYXJlbnQgb2YgdGhpcykuIEhvd2V2
ZXIsCiAgICAgLy8gb25jZSB3ZSBpbXBsZW1lbnQgWEJMMiwgd2Ugd2lsbCBoYXZlIHRvIGFkZCBp
bnRlZ3JpdHkgY2hlY2tzIGhlcmUuCiAgICAgcmVtb3ZlU2hhZG93Um9vdCgpOwogCi0gICAgUmVm
UHRyPE5vZGU+IG5ld1Jvb3QgPSBub2RlOworICAgIFJlZlB0cjxTaGFkb3dSb290PiBuZXdSb290
ID0gbm9kZTsKICAgICBpZiAoIW5ld1Jvb3QpCiAgICAgICAgIHJldHVybjsKIApAQCAtMTEwOSw3
ICsxMTEwLDcgQEAgdm9pZCBFbGVtZW50OjpyZW1vdmVTaGFkb3dSb290KCkKICAgICAgICAgcmV0
dXJuOwogCiAgICAgRWxlbWVudFJhcmVEYXRhKiBkYXRhID0gcmFyZURhdGEoKTsKLSAgICBpZiAo
UmVmUHRyPE5vZGU+IG9sZFJvb3QgPSBkYXRhLT5tX3NoYWRvd1Jvb3QpIHsKKyAgICBpZiAoUmVm
UHRyPFNoYWRvd1Jvb3Q+IG9sZFJvb3QgPSBkYXRhLT5tX3NoYWRvd1Jvb3QpIHsKICAgICAgICAg
ZGF0YS0+bV9zaGFkb3dSb290ID0gMDsKICAgICAgICAgZG9jdW1lbnQoKS0+cmVtb3ZlRm9jdXNl
ZE5vZGVPZlN1YnRyZWUob2xkUm9vdC5nZXQoKSk7CiAgICAgICAgIG9sZFJvb3QtPnNldFNoYWRv
d0hvc3QoMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oIGIvU291
cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAppbmRleCA0NTEwNDc4N2Y2ZDZmNmFjZTM4MGIzNzQ2
MGY1YmIyNzhlYWMwYmM4Li41ZDJjODJjOWMzYjlmYTM1OGI0NjA2YTM4YzgyMWIxYTllOWY1NzNh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FbGVtZW50LmgKQEAgLTM5LDYgKzM5LDcgQEAgY2xhc3MgRE9NU3RyaW5nTWFw
OwogY2xhc3MgRE9NVG9rZW5MaXN0OwogY2xhc3MgRWxlbWVudFJhcmVEYXRhOwogY2xhc3MgSW50
U2l6ZTsKK2NsYXNzIFNoYWRvd1Jvb3Q7CiAKIGVudW0gU3BlbGxjaGVja0F0dHJpYnV0ZVN0YXRl
IHsKICAgICBTcGVsbGNoZWNrQXR0cmlidXRlVHJ1ZSwKQEAgLTIzMCw3ICsyMzEsNyBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5h
KiwgUmVuZGVyU3R5bGUqKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVjYWxjU3R5bGUoU3R5bGVDaGFu
Z2UgPSBOb0NoYW5nZSk7CiAKLSAgICBOb2RlKiBzaGFkb3dSb290KCk7CisgICAgU2hhZG93Um9v
dCogc2hhZG93Um9vdCgpOwogICAgIHZvaWQgc2V0U2hhZG93Um9vdChQYXNzUmVmUHRyPE5vZGU+
KTsKICAgICB2aXJ0dWFsIEF0b21pY1N0cmluZyBzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFJhcmVEYXRhLmggYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRWxlbWVudFJhcmVEYXRhLmgKaW5kZXggODE4YTJjMmYwZmY5ODdkYzVjZDYz
YTk3Mjk1YmVjNWI4MGVkNGEyNS4uMTRjZWVmMmExZmUyOTUyYTcwN2QwNTc3NTViODI3OTNkYjYz
NjcyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRSYXJlRGF0YS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50UmFyZURhdGEuaApAQCAtMzAsNiArMzAsOCBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIFNoYWRvd1Jvb3Q7CisKIGNsYXNzIEVs
ZW1lbnRSYXJlRGF0YSA6IHB1YmxpYyBOb2RlUmFyZURhdGEgewogcHVibGljOgogICAgIEVsZW1l
bnRSYXJlRGF0YSgpOwpAQCAtNDIsNyArNDQsNyBAQCBwdWJsaWM6CiAKICAgICBJbnRTaXplIG1f
bWluaW11bVNpemVGb3JSZXNpemluZzsKICAgICBSZWZQdHI8UmVuZGVyU3R5bGU+IG1fY29tcHV0
ZWRTdHlsZTsKLSAgICBOb2RlKiBtX3NoYWRvd1Jvb3Q7CisgICAgU2hhZG93Um9vdCogbV9zaGFk
b3dSb290OwogCiAgICAgT3duUHRyPERhdGFzZXRET01TdHJpbmdNYXA+IG1fZGF0YXNldERPTVN0
cmluZ01hcDsKICAgICBPd25QdHI8Q2xhc3NMaXN0PiBtX2NsYXNzTGlzdDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNw
cAppbmRleCBjZDcyNjYyMWNjZGIwYzIyNjhmNGEwYjczYjM1YWFiY2UzNDk3OTlkLi4zNzE0YTQ2
Yjg2OGEzZDQwNjZlZGExN2I5MjkwMTAxYWQ2ZmFlYjhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCkBAIC03
Myw2ICs3Myw3IEBACiAjaW5jbHVkZSAiUmVuZGVyQm94LmgiCiAjaW5jbHVkZSAiUmVuZGVyRnVs
bFNjcmVlbi5oIgogI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKKyNpbmNsdWRlICJTY29wZUNvbnRh
aW5lck5vZGUuaCIKICNpbmNsdWRlICJTY29wZWRFdmVudFF1ZXVlLmgiCiAjaW5jbHVkZSAiU2Ny
aXB0Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIlNlbGVjdG9yTm9kZUxpc3QuaCIKQEAgLTM3Mywx
MSArMzc0LDEwIEBAIE5vZGU6On5Ob2RlKCkKICAgICBsaXZlTm9kZVNldC5yZW1vdmUodGhpcyk7
CiAjZW5kaWYKIAotICAgIGlmICghaGFzUmFyZURhdGEoKSkKLSAgICAgICAgQVNTRVJUKCFOb2Rl
UmFyZURhdGE6OnJhcmVEYXRhTWFwKCkuY29udGFpbnModGhpcykpOwotICAgIGVsc2UgewotICAg
ICAgICBpZiAobV9kb2N1bWVudCAmJiByYXJlRGF0YSgpLT5ub2RlTGlzdHMoKSkKLSAgICAgICAg
ICAgIG1fZG9jdW1lbnQtPnJlbW92ZU5vZGVMaXN0Q2FjaGUoKTsKKyAgICBBU1NFUlQoaGFzUmFy
ZURhdGEoKSB8fCAhTm9kZVJhcmVEYXRhOjpyYXJlRGF0YU1hcCgpLmNvbnRhaW5zKHRoaXMpKTsK
KyAgICBpZiAoaGFzUmFyZURhdGEoKSkgeworICAgICAgICBpZiAoZG9jdW1lbnQoKSAmJiByYXJl
RGF0YSgpLT5ub2RlTGlzdHMoKSkKKyAgICAgICAgICAgIGRvY3VtZW50KCktPnJlbW92ZU5vZGVM
aXN0Q2FjaGUoKTsKICAgICAgICAgCiAgICAgICAgIE5vZGVSYXJlRGF0YTo6Tm9kZVJhcmVEYXRh
TWFwJiBkYXRhTWFwID0gTm9kZVJhcmVEYXRhOjpyYXJlRGF0YU1hcCgpOwogICAgICAgICBOb2Rl
UmFyZURhdGE6Ok5vZGVSYXJlRGF0YU1hcDo6aXRlcmF0b3IgaXQgPSBkYXRhTWFwLmZpbmQodGhp
cyk7CkBAIC0zODksMTYgKzM4OSwxNiBAQCBOb2RlOjp+Tm9kZSgpCiAgICAgaWYgKHJlbmRlcmVy
KCkpCiAgICAgICAgIGRldGFjaCgpOwogCi0gICAgaWYgKEFYT2JqZWN0Q2FjaGU6OmFjY2Vzc2li
aWxpdHlFbmFibGVkKCkgJiYgbV9kb2N1bWVudCAmJiBtX2RvY3VtZW50LT5heE9iamVjdENhY2hl
RXhpc3RzKCkpCi0gICAgICAgIG1fZG9jdW1lbnQtPmF4T2JqZWN0Q2FjaGUoKS0+cmVtb3ZlTm9k
ZUZvclVzZSh0aGlzKTsKKyAgICBpZiAoQVhPYmplY3RDYWNoZTo6YWNjZXNzaWJpbGl0eUVuYWJs
ZWQoKSAmJiBkb2N1bWVudCgpICYmIGRvY3VtZW50KCktPmF4T2JqZWN0Q2FjaGVFeGlzdHMoKSkK
KyAgICAgICAgZG9jdW1lbnQoKS0+YXhPYmplY3RDYWNoZSgpLT5yZW1vdmVOb2RlRm9yVXNlKHRo
aXMpOwogICAgIAogICAgIGlmIChtX3ByZXZpb3VzKQogICAgICAgICBtX3ByZXZpb3VzLT5zZXRO
ZXh0U2libGluZygwKTsKICAgICBpZiAobV9uZXh0KQogICAgICAgICBtX25leHQtPnNldFByZXZp
b3VzU2libGluZygwKTsKIAotICAgIGlmIChtX2RvY3VtZW50KQotICAgICAgICBtX2RvY3VtZW50
LT5zZWxmT25seURlcmVmKCk7CisgICAgaWYgKG1fc2NvcGUpCisgICAgICAgIG1fc2NvcGUtPnNl
bGZPbmx5RGVyZWYoKTsKIH0KIAogI2lmZGVmIE5ERUJVRwpAQCAtNDI3LDQxICs0MjcsODYgQEAg
c3RhdGljIHZvaWQgc2V0RGlkTW92ZVRvTmV3T3duZXJEb2N1bWVudFdhc0NhbGxlZChib29sIHdh
c0NhbGxlZCkKIH0KICAgICAKICNlbmRpZgotICAgIAotdm9pZCBOb2RlOjpzZXREb2N1bWVudChE
b2N1bWVudCogZG9jdW1lbnQpCi17Ci0gICAgQVNTRVJUKCFpbkRvY3VtZW50KCkgfHwgbV9kb2N1
bWVudCA9PSBkb2N1bWVudCk7Ci0gICAgaWYgKGluRG9jdW1lbnQoKSB8fCBtX2RvY3VtZW50ID09
IGRvY3VtZW50KQotICAgICAgICByZXR1cm47CiAKLSAgICBkb2N1bWVudC0+c2VsZk9ubHlSZWYo
KTsKK3ZvaWQgTm9kZTo6YmVmb3JlT3duZXJEb2N1bWVudENoYW5nZXMoRG9jdW1lbnQqIG5ld0Rv
Y3VtZW50KQoreworICAgIERvY3VtZW50KiBjdXJyZW50RG9jdW1lbnQgPSBkb2N1bWVudCgpOwog
CiAgICAgc2V0V2lsbE1vdmVUb05ld093bmVyRG9jdW1lbnRXYXNDYWxsZWQoZmFsc2UpOwogICAg
IHdpbGxNb3ZlVG9OZXdPd25lckRvY3VtZW50KCk7CiAgICAgQVNTRVJUKHdpbGxNb3ZlVG9OZXdP
d25lckRvY3VtZW50V2FzQ2FsbGVkKTsKIAogI2lmIFVTRShKU0MpCi0gICAgdXBkYXRlRE9NTm9k
ZURvY3VtZW50KHRoaXMsIG1fZG9jdW1lbnQsIGRvY3VtZW50KTsKKyAgICB1cGRhdGVET01Ob2Rl
RG9jdW1lbnQodGhpcywgY3VycmVudERvY3VtZW50LCBuZXdEb2N1bWVudCk7CiAjZW5kaWYKIAog
ICAgIGlmIChoYXNSYXJlRGF0YSgpICYmIHJhcmVEYXRhKCktPm5vZGVMaXN0cygpKSB7Ci0gICAg
ICAgIGlmIChtX2RvY3VtZW50KQotICAgICAgICAgICAgbV9kb2N1bWVudC0+cmVtb3ZlTm9kZUxp
c3RDYWNoZSgpOwotICAgICAgICBkb2N1bWVudC0+YWRkTm9kZUxpc3RDYWNoZSgpOwotICAgIH0K
LQotICAgIGlmIChtX2RvY3VtZW50KSB7Ci0gICAgICAgIG1fZG9jdW1lbnQtPm1vdmVOb2RlSXRl
cmF0b3JzVG9OZXdEb2N1bWVudCh0aGlzLCBkb2N1bWVudCk7Ci0gICAgICAgIG1fZG9jdW1lbnQt
PnNlbGZPbmx5RGVyZWYoKTsKKyAgICAgICAgaWYgKGN1cnJlbnREb2N1bWVudCkKKyAgICAgICAg
ICAgIGN1cnJlbnREb2N1bWVudC0+cmVtb3ZlTm9kZUxpc3RDYWNoZSgpOworICAgICAgICBpZiAo
bmV3RG9jdW1lbnQpCisgICAgICAgICAgICBuZXdEb2N1bWVudC0+YWRkTm9kZUxpc3RDYWNoZSgp
OwogICAgIH0KIAotICAgIG1fZG9jdW1lbnQgPSBkb2N1bWVudDsKKyAgICBpZiAoY3VycmVudERv
Y3VtZW50KQorICAgICAgICBjdXJyZW50RG9jdW1lbnQtPm1vdmVOb2RlSXRlcmF0b3JzVG9OZXdE
b2N1bWVudCh0aGlzLCBuZXdEb2N1bWVudCk7Cit9CiAKK3ZvaWQgTm9kZTo6YWZ0ZXJPd25lckRv
Y3VtZW50Q2hhbmdlZCgpCit7CiAgICAgc2V0RGlkTW92ZVRvTmV3T3duZXJEb2N1bWVudFdhc0Nh
bGxlZChmYWxzZSk7CiAgICAgZGlkTW92ZVRvTmV3T3duZXJEb2N1bWVudCgpOwogICAgIEFTU0VS
VChkaWRNb3ZlVG9OZXdPd25lckRvY3VtZW50V2FzQ2FsbGVkKTsKIH0KIAorCisKKwordm9pZCBO
b2RlOjpzZXRTY29wZShTY29wZUNvbnRhaW5lck5vZGUqIG5ld1Njb3BlKQoreworICAgIEFTU0VS
VCghaXNEb2N1bWVudE5vZGUoKSk7CisgICAgQVNTRVJUKG5ld1Njb3BlKTsKKyAgICBpZiAobmV3
U2NvcGUgPT0gbV9zY29wZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgRG9jdW1lbnQqIGN1cnJl
bnREb2N1bWVudCA9IGRvY3VtZW50KCk7CisgICAgRG9jdW1lbnQqIG5ld0RvY3VtZW50ID0gZG9j
dW1lbnRPZlNjb3BlKG5ld1Njb3BlKTsKKyAgICBBU1NFUlQoIWluRG9jdW1lbnQoKSB8fCBuZXdE
b2N1bWVudCA9PSBjdXJyZW50RG9jdW1lbnQpOworCisgICAgaWYgKG5ld1Njb3BlKQorICAgICAg
ICBuZXdTY29wZS0+c2VsZk9ubHlSZWYoKTsKKworICAgIGlmIChuZXdEb2N1bWVudCAhPSBjdXJy
ZW50RG9jdW1lbnQpCisgICAgICAgIGJlZm9yZU93bmVyRG9jdW1lbnRDaGFuZ2VzKG5ld0RvY3Vt
ZW50KTsKKyAgICAKKyAgICBpZiAobV9zY29wZSkKKyAgICAgICAgbV9zY29wZS0+c2VsZk9ubHlE
ZXJlZigpOworICAgIG1fc2NvcGUgPSBuZXdTY29wZTsKKworICAgIGlmIChuZXdEb2N1bWVudCAh
PSBjdXJyZW50RG9jdW1lbnQpCisgICAgICAgIGFmdGVyT3duZXJEb2N1bWVudENoYW5nZWQoKTsK
KworICAgIGZvciAoTm9kZSogbm9kZSA9IHRoaXM7IG5vZGU7IG5vZGUgPSBub2RlLT50cmF2ZXJz
ZU5leHROb2RlKHRoaXMpKSB7CisgICAgICAgIG5vZGUtPnNldFNjb3BlKG5ld1Njb3BlKTsKKyAg
ICAgICAgaWYgKCFub2RlLT5pc0VsZW1lbnROb2RlKCkpCisgICAgICAgICAgICBjb250aW51ZTsK
KyAgICAgICAgaWYgKFNoYWRvd1Jvb3QqIHNoYWRvdyA9IHRvRWxlbWVudChub2RlKS0+c2hhZG93
Um9vdCgpKQorICAgICAgICAgICAgc2hhZG93LT5zZXRTY29wZVJlY3Vyc2l2ZWx5KG5ld1Njb3Bl
KTsKKyAgICB9Cit9CisKKy8qCit2b2lkIE5vZGU6OnNldERvY3VtZW50UmVjdXJzaXZlbHkoRG9j
dW1lbnQqIG5ld0RvY3VtZW50KQoreworICAgIEFTU0VSVChuZXdEb2N1bWVudCk7CisKKyAgICAv
LyBGSVhNRTogVG8gbWF0Y2ggR2Vja28sIHdlIHNob3VsZCBkbyB0aGlzIGZvciBub2RlcyB0aGF0
IGFyZSBhbHJlYWR5IGluIHRoZSBkb2N1bWVudCBhcyB3ZWxsLgorICAgIGlmIChkb2N1bWVudCgp
ID09IG5ld0RvY3VtZW50IHx8IGluRG9jdW1lbnQoKSkKKyAgICAgICAgcmV0dXJuOworICAgIAor
ICAgIHNldFNjb3BlKG5ld0RvY3VtZW50KTsKK30KKyovCisKIE5vZGVSYXJlRGF0YSogTm9kZTo6
cmFyZURhdGEoKSBjb25zdAogewogICAgIEFTU0VSVChoYXNSYXJlRGF0YSgpKTsKQEAgLTQ4NSwy
MiArNTMwLDYgQEAgTm9kZVJhcmVEYXRhKiBOb2RlOjpjcmVhdGVSYXJlRGF0YSgpCiAgICAgcmV0
dXJuIG5ldyBOb2RlUmFyZURhdGE7CiB9CiAKLUVsZW1lbnQqIE5vZGU6OnNoYWRvd0hvc3QoKSBj
b25zdAotewotICAgIHJldHVybiB0b0VsZW1lbnQoZ2V0RmxhZyhJc1NoYWRvd1Jvb3RGbGFnKSA/
IHBhcmVudCgpIDogMCk7Ci19Ci0KLXZvaWQgTm9kZTo6c2V0U2hhZG93SG9zdChFbGVtZW50KiBo
b3N0KQotewotICAgIEFTU0VSVCghcGFyZW50Tm9kZSgpKTsKLSAgICBpZiAoaG9zdCkKLSAgICAg
ICAgc2V0RmxhZyhJc1NoYWRvd1Jvb3RGbGFnKTsKLSAgICBlbHNlCi0gICAgICAgIGNsZWFyRmxh
ZyhJc1NoYWRvd1Jvb3RGbGFnKTsKLQotICAgIHNldFBhcmVudChob3N0KTsKLX0KLQogc2hvcnQg
Tm9kZTo6dGFiSW5kZXgoKSBjb25zdAogewogICAgIHJldHVybiBoYXNSYXJlRGF0YSgpID8gcmFy
ZURhdGEoKS0+dGFiSW5kZXgoKSA6IDA7CkBAIC03NTIsMjEgKzc4MSw2IEBAIGJvb2wgTm9kZTo6
aGFzTm9uRW1wdHlCb3VuZGluZ0JveCgpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12
b2lkIE5vZGU6OnNldERvY3VtZW50UmVjdXJzaXZlbHkoRG9jdW1lbnQqIGRvY3VtZW50KQotewot
ICAgIC8vIEZJWE1FOiBUbyBtYXRjaCBHZWNrbywgd2Ugc2hvdWxkIGRvIHRoaXMgZm9yIG5vZGVz
IHRoYXQgYXJlIGFscmVhZHkgaW4gdGhlIGRvY3VtZW50IGFzIHdlbGwuCi0gICAgaWYgKHRoaXMt
PmRvY3VtZW50KCkgPT0gZG9jdW1lbnQgfHwgdGhpcy0+aW5Eb2N1bWVudCgpKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBmb3IgKE5vZGUqIG5vZGUgPSB0aGlzOyBub2RlOyBub2RlID0gbm9kZS0+
dHJhdmVyc2VOZXh0Tm9kZSh0aGlzKSkgewotICAgICAgICBub2RlLT5zZXREb2N1bWVudChkb2N1
bWVudCk7Ci0gICAgICAgIGlmICghbm9kZS0+aXNFbGVtZW50Tm9kZSgpKQotICAgICAgICAgICAg
Y29udGludWU7Ci0gICAgICAgIGlmIChOb2RlKiBzaGFkb3cgPSB0b0VsZW1lbnQobm9kZSktPnNo
YWRvd1Jvb3QoKSkKLSAgICAgICAgICAgIHNoYWRvdy0+c2V0RG9jdW1lbnRSZWN1cnNpdmVseShk
b2N1bWVudCk7Ci0gICAgfQotfQotCiBpbmxpbmUgdm9pZCBOb2RlOjpzZXRTdHlsZUNoYW5nZShT
dHlsZUNoYW5nZVR5cGUgY2hhbmdlVHlwZSkKIHsKICAgICBtX25vZGVGbGFncyA9IChtX25vZGVG
bGFncyAmIH5TdHlsZUNoYW5nZU1hc2spIHwgY2hhbmdlVHlwZTsKQEAgLTg3OSw3ICs4OTMsNyBA
QCB2b2lkIE5vZGU6OnJlZ2lzdGVyRHluYW1pY05vZGVMaXN0KER5bmFtaWNOb2RlTGlzdCogbGlz
dCkKICAgICBpZiAoIWRhdGEtPm5vZGVMaXN0cygpKSB7CiAgICAgICAgIGRhdGEtPnNldE5vZGVM
aXN0cyhOb2RlTGlzdHNOb2RlRGF0YTo6Y3JlYXRlKCkpOwogICAgICAgICBkb2N1bWVudCgpLT5h
ZGROb2RlTGlzdENhY2hlKCk7Ci0gICAgfSBlbHNlIGlmICghbV9kb2N1bWVudCB8fCAhbV9kb2N1
bWVudC0+aGFzTm9kZUxpc3RDYWNoZXMoKSkgeworICAgIH0gZWxzZSBpZiAoIW1fc2NvcGUgfHwg
IW1fc2NvcGUtPmhhc05vZGVMaXN0Q2FjaGVzKCkpIHsKICAgICAgICAgLy8gV2UgaGF2ZW4ndCBi
ZWVuIHJlY2VpdmluZyBub3RpZmljYXRpb25zIHdoaWxlIHRoZXJlIHdlcmUgbm8gcmVnaXN0ZXJl
ZCBsaXN0cywgc28gdGhlIGNhY2hlIGlzIGludmFsaWQgbm93LgogICAgICAgICBkYXRhLT5ub2Rl
TGlzdHMoKS0+aW52YWxpZGF0ZUNhY2hlcygpOwogICAgIH0KQEAgLTE0NjMsNiArMTQ3NywxNyBA
QCBib29sIE5vZGU6OmNhblN0YXJ0U2VsZWN0aW9uKCkgY29uc3QKICAgICByZXR1cm4gcGFyZW50
T3JIb3N0Tm9kZSgpID8gcGFyZW50T3JIb3N0Tm9kZSgpLT5jYW5TdGFydFNlbGVjdGlvbigpIDog
dHJ1ZTsKIH0KIAorU2hhZG93Um9vdCogTm9kZTo6c2hhZG93Um9vdCgpCit7CisgICAgcmV0dXJu
IChtX3Njb3BlICYmIG1fc2NvcGUtPmlzU2hhZG93Um9vdCgpKSA/IHN0YXRpY19jYXN0PFNoYWRv
d1Jvb3QqPihtX3Njb3BlKSA6IDA7Cit9CisKK0VsZW1lbnQqIE5vZGU6OnNoYWRvd0hvc3RFbGVt
ZW50KCkgY29uc3QKK3sKKyAgICBTaGFkb3dSb290KiByb290ID0gc2hhZG93Um9vdCgpOworICAg
IHJldHVybiByb290ID8gcm9vdC0+aG9zdEVsZW1lbnQoKSA6IDA7Cit9CisKIE5vZGUqIE5vZGU6
OnNoYWRvd0FuY2VzdG9yTm9kZSgpCiB7CiAjaWYgRU5BQkxFKFNWRykKQEAgLTE0NzQsMjkgKzE0
OTksMjEgQEAgTm9kZSogTm9kZTo6c2hhZG93QW5jZXN0b3JOb2RlKCkKICAgICAgICAgcmV0dXJu
IHRoaXM7CiAjZW5kaWYKIAotICAgIE5vZGUqIHJvb3QgPSBzaGFkb3dUcmVlUm9vdE5vZGUoKTsK
LSAgICBpZiAocm9vdCkKLSAgICAgICAgcmV0dXJuIHJvb3QtPnNoYWRvd0hvc3QoKTsKLSAgICBy
ZXR1cm4gdGhpczsKKyAgICBFbGVtZW50KiBob3N0ID0gc2hhZG93SG9zdEVsZW1lbnQoKTsKKyAg
ICAvLyBGSVhNRTogaXMgJ3RoaXMnIHJlYWxseSB0aGUgY29ycmVjdCByZXR1cm4gdmFsdWUgaWYg
d2UgYXJlbid0IGluIGEgc2hhZG93IHRyZWU/IT8KKyAgICByZXR1cm4gaG9zdCA/IGhvc3QgOiB0
aGlzOwogfQogCisvLyBERVBSRUNBVEVECiBOb2RlKiBOb2RlOjpzaGFkb3dUcmVlUm9vdE5vZGUo
KQogewotICAgIE5vZGUqIHJvb3QgPSB0aGlzOwotICAgIHdoaWxlIChyb290KSB7Ci0gICAgICAg
IGlmIChyb290LT5pc1NoYWRvd1Jvb3QoKSkKLSAgICAgICAgICAgIHJldHVybiByb290OwotICAg
ICAgICByb290ID0gcm9vdC0+cGFyZW50Tm9kZUd1YXJhbnRlZWRIb3N0RnJlZSgpOwotICAgIH0K
LSAgICByZXR1cm4gMDsKKyAgICBTaGFkb3dSb290KiByb290ID0gc2hhZG93Um9vdCgpOworICAg
IHJldHVybiByb290ID8gcm9vdC0+Zmlyc3RDaGlsZCgpIDogMDsKIH0KIAogYm9vbCBOb2RlOjpp
c0luU2hhZG93VHJlZSgpCiB7Ci0gICAgZm9yIChOb2RlKiBuID0gdGhpczsgbjsgbiA9IG4tPnBh
cmVudE5vZGUoKSkKLSAgICAgICAgaWYgKG4tPmlzU2hhZG93Um9vdCgpKQotICAgICAgICAgICAg
cmV0dXJuIHRydWU7Ci0gICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBtX3Njb3BlICYmIG1f
c2NvcGUtPmlzU2hhZG93Um9vdCgpOwogfQogCiBib29sIE5vZGU6OmlzQmxvY2tGbG93KCkgY29u
c3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vTm9kZS5oCmluZGV4IDc0ZTFjYzQ3ZmY4YWViZWIxZTI2MDZkNjFhZWFmNTkwODg3MDYy
NzcuLmM1MjYwYWRhNGM1YmQ0YjE0ZjEwNzEzYmJjNjg3OGNkMTk3NTM3MDggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUu
aApAQCAtNTksNiArNTksNyBAQCBjbGFzcyBOU1Jlc29sdmVyOwogY2xhc3MgTmFtZWROb2RlTWFw
OwogY2xhc3MgTmFtZU5vZGVMaXN0OwogY2xhc3MgTm9kZUxpc3Q7CitjbGFzcyBOb2RlVHJlZVNj
b3BlOwogY2xhc3MgTm9kZVJhcmVEYXRhOwogY2xhc3MgUGxhdGZvcm1LZXlib2FyZEV2ZW50Owog
Y2xhc3MgUGxhdGZvcm1Nb3VzZUV2ZW50OwpAQCAtNzAsNiArNzEsOCBAQCBjbGFzcyBSZW5kZXJC
b3g7CiBjbGFzcyBSZW5kZXJCb3hNb2RlbE9iamVjdDsKIGNsYXNzIFJlbmRlck9iamVjdDsKIGNs
YXNzIFJlbmRlclN0eWxlOworY2xhc3MgU2NvcGVDb250YWluZXJOb2RlOworY2xhc3MgU2hhZG93
Um9vdDsKIGNsYXNzIFRhZ05vZGVMaXN0OwogCiB0eXBlZGVmIGludCBFeGNlcHRpb25Db2RlOwpA
QCAtMjA0LDE4ICsyMDcsMTggQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBpc0F0dHJpYnV0
ZU5vZGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIGJvb2wgaXNDb21tZW50Tm9kZSgp
IGNvbnN0IHsgcmV0dXJuIGdldEZsYWcoSXNDb21tZW50RmxhZyk7IH0KICAgICB2aXJ0dWFsIGJv
b2wgaXNDaGFyYWN0ZXJEYXRhTm9kZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgYm9v
bCBpc0RvY3VtZW50Tm9kZSgpIGNvbnN0OwotICAgIGJvb2wgaXNTaGFkb3dSb290KCkgY29uc3Qg
eyByZXR1cm4gZ2V0RmxhZyhJc1NoYWRvd1Jvb3RGbGFnKTsgfQorICAgIGJvb2wgaXNEb2N1bWVu
dE5vZGUoKSBjb25zdDsgLy8gLT4gaW1wbGVtZW50YXRpb24gaW4gU2NvcGVDb250YWluZXJOb2Rl
LmgKKyAgICBib29sIGlzU2hhZG93Um9vdCgpIGNvbnN0OworICAgIFNoYWRvd1Jvb3QqIHNoYWRv
d1Jvb3QoKTsKICAgICBOb2RlKiBzaGFkb3dBbmNlc3Rvck5vZGUoKTsKLSAgICBOb2RlKiBzaGFk
b3dUcmVlUm9vdE5vZGUoKTsKKyAgICBOb2RlKiBzaGFkb3dUcmVlUm9vdE5vZGUoKTsgLy8gREVQ
UkVDQVRFRAogICAgIGJvb2wgaXNJblNoYWRvd1RyZWUoKTsKICAgICAvLyBOb2RlJ3MgcGFyZW50
IG9yIHNoYWRvdyB0cmVlIGhvc3QuCiAgICAgQ29udGFpbmVyTm9kZSogcGFyZW50T3JIb3N0Tm9k
ZSgpIGNvbnN0OwogICAgIC8vIFVzZSB3aGVuIGl0J3MgZ3VhcmFudGVlZCB0byB0aGF0IHNoYWRv
d0hvc3QgaXMgMC4KLSAgICBDb250YWluZXJOb2RlKiBwYXJlbnROb2RlR3VhcmFudGVlZEhvc3RG
cmVlKCkgY29uc3Q7CisgICAgQ29udGFpbmVyTm9kZSogcGFyZW50Tm9kZUd1YXJhbnRlZWRIb3N0
RnJlZSgpIGNvbnN0OyAvLyBERVBSRUNBVEVECiAKLSAgICBFbGVtZW50KiBzaGFkb3dIb3N0KCkg
Y29uc3Q7Ci0gICAgdm9pZCBzZXRTaGFkb3dIb3N0KEVsZW1lbnQqKTsKKyAgICBFbGVtZW50KiBz
aGFkb3dIb3N0RWxlbWVudCgpIGNvbnN0OwogCiAgICAgLy8gUmV0dXJucyB0aGUgZW5jbG9zaW5n
IGV2ZW50IHBhcmVudCBub2RlIChvciBzZWxmKSB0aGF0LCB3aGVuIGNsaWNrZWQsIHdvdWxkIHRy
aWdnZXIgYSBuYXZpZ2F0aW9uLgogICAgIE5vZGUqIGVuY2xvc2luZ0xpbmtFdmVudFBhcmVudE9y
U2VsZigpOwpAQCAtMzM3LDMwICszNDAsMjIgQEAgcHVibGljOgogCiAgICAgdW5zaWduZWQgbm9k
ZUluZGV4KCkgY29uc3Q7CiAKKyAgICBTY29wZUNvbnRhaW5lck5vZGUqIHNjb3BlKCkgY29uc3Qg
eyByZXR1cm4gbV9zY29wZTsgfQorCiAgICAgLy8gUmV0dXJucyB0aGUgRE9NIG93bmVyRG9jdW1l
bnQgYXR0cmlidXRlLiBUaGlzIG1ldGhvZCBuZXZlciByZXR1cm5zIE5VTEwsIGV4Y2VwdCBpbiB0
aGUgY2FzZSAKICAgICAvLyBvZiAoMSkgYSBEb2N1bWVudCBub2RlIG9yICgyKSBhIERvY3VtZW50
VHlwZSBub2RlIHRoYXQgaXMgbm90IHVzZWQgd2l0aCBhbnkgRG9jdW1lbnQgeWV0LiAKICAgICB2
aXJ0dWFsIERvY3VtZW50KiBvd25lckRvY3VtZW50KCkgY29uc3Q7CiAKICAgICAvLyBSZXR1cm5z
IHRoZSBkb2N1bWVudCBhc3NvY2lhdGVkIHdpdGggdGhpcyBub2RlLiBUaGlzIG1ldGhvZCBuZXZl
ciByZXR1cm5zIE5VTEwsIGV4Y2VwdCBpbiB0aGUgY2FzZSAKICAgICAvLyBvZiBhIERvY3VtZW50
VHlwZSBub2RlIHRoYXQgaXMgbm90IHVzZWQgd2l0aCBhbnkgRG9jdW1lbnQgeWV0LiBBIERvY3Vt
ZW50IG5vZGUgcmV0dXJucyBpdHNlbGYuCi0gICAgRG9jdW1lbnQqIGRvY3VtZW50KCkgY29uc3QK
LSAgICB7Ci0gICAgICAgIEFTU0VSVCh0aGlzKTsKLSAgICAgICAgQVNTRVJUKG1fZG9jdW1lbnQg
fHwgKG5vZGVUeXBlKCkgPT0gRE9DVU1FTlRfVFlQRV9OT0RFICYmICFpbkRvY3VtZW50KCkpKTsK
LSAgICAgICAgcmV0dXJuIG1fZG9jdW1lbnQ7Ci0gICAgfQotCi0gICAgLy8gRG8gbm90IHVzZSB0
aGlzIG1ldGhvZCB0byBjaGFuZ2UgdGhlIGRvY3VtZW50IG9mIGEgbm9kZSB1bnRpbCBhZnRlciB0
aGUgbm9kZSBoYXMgYmVlbgotICAgIC8vIHJlbW92ZWQgZnJvbSBpdHMgcHJldmlvdXMgZG9jdW1l
bnQuCi0gICAgdm9pZCBzZXREb2N1bWVudChEb2N1bWVudCopOworICAgIERvY3VtZW50KiBkb2N1
bWVudCgpIGNvbnN0OyAvLyAtPiBpbXBsZW1lbnRhdGlvbiBpbiBTY29wZUNvbnRhaW5lck5vZGUu
aAorICAgIC8vIEJlbG93IGZ1bmN0aW9uIHJldHVybnMgdGhlIGRvY3VtZW50IG9mIHRoZSBwYXNz
ZWQtaW4gc2NvcGUuCisgICAgLy8gVGhlIHNjb3BlIG1heSBiZSBOVUxMIChpbiB3aGljaCBjYXNl
IHRoZSByZXR1cm4gdmFsdWUgaXMgYWxzbyBOVUxMKQorICAgIHN0YXRpYyBEb2N1bWVudCogZG9j
dW1lbnRPZlNjb3BlKFNjb3BlQ29udGFpbmVyTm9kZSopOyAvLyAtPiBpbXBsZW1lbnRhdGlvbiBp
biBTY29wZUNvbnRhaW5lck5vZGUuaAogCiAgICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoaXMgbm9k
ZSBpcyBhc3NvY2lhdGVkIHdpdGggYSBkb2N1bWVudCBhbmQgaXMgaW4gaXRzIGFzc29jaWF0ZWQg
ZG9jdW1lbnQncwogICAgIC8vIG5vZGUgdHJlZSwgZmFsc2Ugb3RoZXJ3aXNlLgotICAgIGJvb2wg
aW5Eb2N1bWVudCgpIGNvbnN0IAotICAgIHsgCi0gICAgICAgIEFTU0VSVChtX2RvY3VtZW50IHx8
ICFnZXRGbGFnKEluRG9jdW1lbnRGbGFnKSk7Ci0gICAgICAgIHJldHVybiBnZXRGbGFnKEluRG9j
dW1lbnRGbGFnKTsKLSAgICB9CisgICAgYm9vbCBpbkRvY3VtZW50KCkgY29uc3Q7IC8vIC0+IGlt
cGxlbWVudGF0aW9uIGluIFNjb3BlQ29udGFpbmVyTm9kZS5oCiAKICAgICBib29sIGlzUmVhZE9u
bHlOb2RlKCkgY29uc3QgeyByZXR1cm4gbm9kZVR5cGUoKSA9PSBFTlRJVFlfUkVGRVJFTkNFX05P
REU7IH0KICAgICB2aXJ0dWFsIGJvb2wgY2hpbGRUeXBlQWxsb3dlZChOb2RlVHlwZSkgeyByZXR1
cm4gZmFsc2U7IH0KQEAgLTYyOCwxMSArNjIzLDE0IEBAIHByb3RlY3RlZDoKICAgICAgICAgQ3Jl
YXRlSFRNTEVsZW1lbnQgPSBDcmVhdGVTdHlsZWRFbGVtZW50IHwgSXNIVE1MRmxhZywgCiAgICAg
ICAgIENyZWF0ZVNWR0VsZW1lbnQgPSBDcmVhdGVTdHlsZWRFbGVtZW50IHwgSXNTVkdGbGFnLCAK
ICAgICB9OwotICAgIE5vZGUoRG9jdW1lbnQqLCBDb25zdHJ1Y3Rpb25UeXBlKTsKKyAgICBOb2Rl
KFNjb3BlQ29udGFpbmVyTm9kZSosIENvbnN0cnVjdGlvblR5cGUpOyAvLyAtPiBpbXBsZW1lbnRh
dGlvbiBpbiBTY29wZUNvbnRhaW5lck5vZGUuaAogCiAgICAgdmlydHVhbCB2b2lkIHdpbGxNb3Zl
VG9OZXdPd25lckRvY3VtZW50KCk7CiAgICAgdmlydHVhbCB2b2lkIGRpZE1vdmVUb05ld093bmVy
RG9jdW1lbnQoKTsKICAgICAKKyAgICB2b2lkIGJlZm9yZU93bmVyRG9jdW1lbnRDaGFuZ2VzKERv
Y3VtZW50KiBuZXdEb2N1bWVudCk7CisgICAgdm9pZCBhZnRlck93bmVyRG9jdW1lbnRDaGFuZ2Vz
KCk7CisgICAgCiAgICAgdmlydHVhbCB2b2lkIGFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhM
aXN0SGFzaFNldDxLVVJMPiYpIGNvbnN0IHsgfQogICAgIHZvaWQgc2V0VGFiSW5kZXhFeHBsaWNp
dGx5KHNob3J0KTsKICAgICAKQEAgLTY0Niw3ICs2NDQsMTEgQEAgcHJpdmF0ZToKICAgICB2b2lk
IG1hcmtDYWNoZWROb2RlTGlzdHNTbG93KEpTQzo6TWFya1N0YWNrJiwgSlNDOjpKU0dsb2JhbERh
dGEmKTsKICNlbmRpZgogCi0gICAgdm9pZCBzZXREb2N1bWVudFJlY3Vyc2l2ZWx5KERvY3VtZW50
Kik7CisgICAgLy8gRG8gbm90IHVzZSB0aGVzZSBtZXRob2RzIHRvIGNoYW5nZSB0aGUgc2NvcGUv
ZG9jdW1lbnQgb2YgYSBub2RlCisgICAgLy8gdW50aWwgYWZ0ZXIgdGhlIG5vZGUgaGFzIGJlZW4g
cmVtb3ZlZCBmcm9tIGl0cyBwcmV2aW91cyBzY29wZS9kb2N1bWVudCEKKyAgICB2aXJ0dWFsIHZv
aWQgc2V0U2NvcGUoU2NvcGVDb250YWluZXJOb2RlKik7CisvLyAgICB2b2lkIHNldERvY3VtZW50
UmVjdXJzaXZlbHkoRG9jdW1lbnQqKTsgLy8gREVQUkVDQVRFRAorCiAgICAgdm9pZCBzZXRTdHls
ZUNoYW5nZShTdHlsZUNoYW5nZVR5cGUpOwogCiAgICAgLy8gVXNlZCB0byBzaGFyZSBjb2RlIGJl
dHdlZW4gbGF6eUF0dGFjaCBhbmQgc2V0TmVlZHNTdHlsZVJlY2FsYy4KQEAgLTY3NCw3ICs2NzYs
NyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCB0cmFja0ZvckRlYnVnZ2luZygpOwogCi0gICAgRG9j
dW1lbnQqIG1fZG9jdW1lbnQ7CisgICAgU2NvcGVDb250YWluZXJOb2RlKiBtX3Njb3BlOwogICAg
IE5vZGUqIG1fcHJldmlvdXM7CiAgICAgTm9kZSogbV9uZXh0OwogICAgIFJlbmRlck9iamVjdCog
bV9yZW5kZXJlcjsKQEAgLTcxMywyMiArNzE1LDYgQEAgaW5saW5lIHZvaWQgYWRkU3VicmVzb3Vy
Y2VVUkwoTGlzdEhhc2hTZXQ8S1VSTD4mIHVybHMsIGNvbnN0IEtVUkwmIHVybCkKICAgICAgICAg
dXJscy5hZGQodXJsKTsKIH0KIAotaW5saW5lIENvbnRhaW5lck5vZGUqIE5vZGU6OnBhcmVudE5v
ZGUoKSBjb25zdAotewotICAgIHJldHVybiBnZXRGbGFnKElzU2hhZG93Um9vdEZsYWcpID8gMCA6
IHBhcmVudCgpOwotfQotCi1pbmxpbmUgQ29udGFpbmVyTm9kZSogTm9kZTo6cGFyZW50T3JIb3N0
Tm9kZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHBhcmVudCgpOwotfQotCi1pbmxpbmUgQ29udGFp
bmVyTm9kZSogTm9kZTo6cGFyZW50Tm9kZUd1YXJhbnRlZWRIb3N0RnJlZSgpIGNvbnN0Ci17Ci0g
ICAgQVNTRVJUKCFnZXRGbGFnKElzU2hhZG93Um9vdEZsYWcpKTsKLSAgICByZXR1cm4gcGFyZW50
T3JIb3N0Tm9kZSgpOwotfQotCiB9IC8vbmFtZXNwYWNlCiAKICNpZm5kZWYgTkRFQlVHCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NvcGVDb250YWluZXJOb2RlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9TY29wZUNvbnRhaW5lck5vZGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJiMDQ4OTM0
ZDYyNWM1N2Q5Y2VkOTQyZjlhMzMyMzZjMTZkYWY5MWIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vU2NvcGVDb250YWluZXJOb2RlLmNwcApAQCAtMCwwICsxLDE4MyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisg
KiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQor
ICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTY29wZUNvbnRhaW5lck5vZGUuaCIKKworI2lu
Y2x1ZGUgIkVsZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MTWFwRWxlbWVudC5oIgorCituYW1lc3Bh
Y2UgV2ViQ29yZQoreworCit2b2lkIFNjb3BlQ29udGFpbmVyTm9kZTo6cmVtb3ZlZExhc3RSZWYo
KQoreworICAgIEFTU0VSVCghbV9kZWxldGlvbkhhc0JlZ3VuKTsKKyAgICBpZiAobV9zZWxmT25s
eVJlZkNvdW50KSB7CisgICAgICAgIC8vIElmIHJlbW92aW5nIGEgY2hpbGQgZHVyaW5nIGNsZWFy
Q29udGFpbmVyKCkgcmVtb3ZlcyB0aGUgbGFzdAorICAgICAgICAvLyBzZWxmLW9ubHkgcmVmLCB3
ZSBkb24ndCB3YW50IHRoZSBjb250YWluZXIgdG8gYmUgZGVzdHJ1Y3RlZCB1bnRpbCBhZnRlcgor
ICAgICAgICAvLyByZW1vdmVBbGxDaGlsZHJlbiByZXR1cm5zLCBzbyB3ZSBndWFyZCBvdXJzZWx2
ZXMgd2l0aCBhbgorICAgICAgICAvLyBleHRyYSBzZWxmLW9ubHkgcmVmLgorICAgICAgICBzZWxm
T25seVJlZigpOworCisgICAgICAgIGNsZWFyQ29udGFpbmVyKCk7CisKKyNpZm5kZWYgTkRFQlVH
CisgICAgICAgIG1faW5SZW1vdmVkTGFzdFJlZkZ1bmN0aW9uID0gZmFsc2U7CisjZW5kaWYKKwor
ICAgICAgICBzZWxmT25seURlcmVmKCk7CisgICAgfSBlbHNlIHsKKyNpZm5kZWYgTkRFQlVHCisg
ICAgICAgIG1fZGVsZXRpb25IYXNCZWd1biA9IHRydWU7CisjZW5kaWYKKyAgICAgICAgZGVsZXRl
IHRoaXM7CisgICAgfQorfQorCit2b2lkIFNjb3BlQ29udGFpbmVyTm9kZTo6Y2xlYXJDb250YWlu
ZXIoKQoreworICAgIC8vIHJlbW92ZUFsbENoaWxkcmVuKCkgZG9lc24ndCBhbHdheXMgdW5yZWdp
c3RlciBJRHMsIGRvIGl0IHVwZnJvbnQgdG8gYXZvaWQgaGF2aW5nIHN0YWxlIHJlZmVyZW5jZXMg
aW4gdGhlIG1hcC4KKyAgICBtX2VsZW1lbnRzQnlJZC5jbGVhcigpOworICAgIG1faW1hZ2VNYXBz
QnlOYW1lLmNsZWFyKCk7CisgICAgcmVtb3ZlQWxsQ2hpbGRyZW4oKTsKK30KKwordm9pZCBTY29w
ZUNvbnRhaW5lck5vZGU6OnNldFNjb3BlKFNjb3BlQ29udGFpbmVyTm9kZSogbmV3U2NvcGUpCit7
CisgICAgaWYgKG5ld1Njb3BlID09IG1fc2NvcGUpCisgICAgICAgIHJldHVybjsKKworICAgIERv
Y3VtZW50KiBjdXJyZW50RG9jdW1lbnQgPSBkb2N1bWVudCgpOworICAgIERvY3VtZW50KiBuZXdE
b2N1bWVudCA9IGRvY3VtZW50T2ZTY29wZShuZXdTY29wZSk7CisgICAgQVNTRVJUKCFpbkRvY3Vt
ZW50KCkgfHwgbmV3RG9jdW1lbnQgPT0gY3VycmVudERvY3VtZW50KTsKKworICAgIGlmIChuZXdT
Y29wZSkKKyAgICAgICAgbmV3U2NvcGUtPnNlbGZPbmx5UmVmKCk7CisKKyAgICBpZiAobmV3RG9j
dW1lbnQgIT0gY3VycmVudERvY3VtZW50KSB7CisgICAgICAgIGZvciAoTm9kZSogbm9kZSA9IHRo
aXM7IG5vZGU7IG5vZGUgPSBub2RlLT50cmF2ZXJzZU5leHROb2RlKHRoaXMpKQorICAgICAgICAg
ICAgbm9kZS0+YmVmb3JlT3duZXJEb2N1bWVudENoYW5nZXMobmV3RG9jdW1lbnQpOworICAgIH0K
KworICAgIGlmIChtX3Njb3BlKQorICAgICAgICBtX3Njb3BlLT5zZWxmT25seURlcmVmKCk7Cisg
ICAgbV9zY29wZSA9IG5ld1Njb3BlOworICAgIG1fZG9jdW1lbnQgPSBuZXdEb2N1bWVudDsKKwor
ICAgIGlmIChuZXdEb2N1bWVudCAhPSBjdXJyZW50RG9jdW1lbnQpIHsKKyAgICAgICAgZm9yIChO
b2RlKiBub2RlID0gdGhpczsgbm9kZTsgbm9kZSA9IG5vZGUtPnRyYXZlcnNlTmV4dE5vZGUodGhp
cykpIHsKKyAgICAgICAgICAgIG5vZGUtPmFmdGVyT3duZXJEb2N1bWVudENoYW5nZWQoKTsKKyAg
ICAgICAgICAgIC8vIEZJWE1FOiBpdCBtaWdodCBiZSBuZWF0IGlmIGV2ZXJ5IHNjb3BlIGNvbnRh
aW5lciBoYXMgaXRzIG93biBsaXN0IG9mIGNoaWxkIHNjb3Blcy4KKyAgICAgICAgICAgIC8vIHRo
aXMgd2F5IHRoZSBmb2xsb3dpbmcgdXBkYXRlIGNvdWxkIGJlIG1hZGUgYSBiaXQgY2xlYW5lciAo
YW1vbmdzdCBvdGhlciB0aGluZ3MpLgorICAgICAgICAgICAgaWYgKCFub2RlLT5pc0VsZW1lbnRO
b2RlKCkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBpZiAoU2hhZG93
Um9vdCogc2hhZG93ID0gdG9FbGVtZW50KG5vZGUpLT5zaGFkb3dSb290KCkpCisgICAgICAgICAg
ICAgICAgc2hhZG93LT5jaGFuZ2VEb2N1bWVudChuZXdEb2N1bWVudCk7CisgICAgICAgIH0KKyAg
ICB9Cit9CisKK3ZvaWQgU2NvcGVDb250YWluZXJOb2RlOjpjaGFuZ2VEb2N1bWVudChEb2N1bWVu
dCogbmV3RG9jdW1lbnQpCit7CisgICAgQVNTRVJUKG1fZG9jdW1lbnQgIT0gbmV3RG9jdW1lbnQp
OworCisgICAgZm9yIChOb2RlKiBub2RlID0gdHJhdmVyc2VOZXh0Tm9kZSh0aGlzKTsgbm9kZTsg
bm9kZSA9IG5vZGUtPnRyYXZlcnNlTmV4dE5vZGUodGhpcykpCisgICAgICAgIG5vZGUtPmJlZm9y
ZU93bmVyRG9jdW1lbnRDaGFuZ2VzKG5ld0RvY3VtZW50KTsKKworICAgIG1fZG9jdW1lbnQgPSBu
ZXdEb2N1bWVudDsKKworICAgIGZvciAoTm9kZSogbm9kZSA9IHRyYXZlcnNlTmV4dE5vZGUodGhp
cyk7IG5vZGU7IG5vZGUgPSBub2RlLT50cmF2ZXJzZU5leHROb2RlKHRoaXMpKSB7CisgICAgICAg
IG5vZGUtPmFmdGVyT3duZXJEb2N1bWVudENoYW5nZWQoKTsKKyAgICAgICAgLy8gRklYTUU6IGl0
IG1pZ2h0IGJlIG5lYXQgaWYgZXZlcnkgc2NvcGUgY29udGFpbmVyIGhhcyBpdHMgb3duIGxpc3Qg
b2YgY2hpbGQgc2NvcGVzLgorICAgICAgICAvLyB0aGlzIHdheSB0aGUgZm9sbG93aW5nIHVwZGF0
ZSBjb3VsZCBiZSBtYWRlIGEgYml0IGNsZWFuZXIgKGFtb25nc3Qgb3RoZXIgdGhpbmdzKS4KKyAg
ICAgICAgaWYgKCFub2RlLT5pc0VsZW1lbnROb2RlKCkpCisgICAgICAgICAgICBjb250aW51ZTsK
KyAgICAgICAgaWYgKFNoYWRvd1Jvb3QqIHNoYWRvdyA9IHRvRWxlbWVudChub2RlKS0+c2hhZG93
Um9vdCgpKQorICAgICAgICAgICAgc2hhZG93LT5jaGFuZ2VEb2N1bWVudChuZXdEb2N1bWVudCk7
CisgICAgfQorfQorCit2b2lkIFNjb3BlQ29udGFpbmVyTm9kZTo6YWRkRWxlbWVudEJ5SWQoY29u
c3QgQXRvbWljU3RyaW5nJiBlbGVtZW50SWQsIEVsZW1lbnQqIGVsZW1lbnQpCit7CisgICAgbV9l
bGVtZW50c0J5SWQuYWRkKGVsZW1lbnRJZC5pbXBsKCksIGVsZW1lbnQpOworfQorCit2b2lkIFNj
b3BlQ29udGFpbmVyTm9kZTo6cmVtb3ZlRWxlbWVudEJ5SWQoY29uc3QgQXRvbWljU3RyaW5nJiBl
bGVtZW50SWQsIEVsZW1lbnQqIGVsZW1lbnQpCit7CisgICAgbV9lbGVtZW50c0J5SWQucmVtb3Zl
KGVsZW1lbnRJZC5pbXBsKCksIGVsZW1lbnQpOworfQorCitpbmxpbmUgYm9vbCBTY29wZUNvbnRh
aW5lck5vZGU6Omhhc0VsZW1lbnRXaXRoSWQoQXRvbWljU3RyaW5nSW1wbCogaWQpIGNvbnN0Cit7
CisgICAgQVNTRVJUKGlkKTsKKyAgICByZXR1cm4gbV9lbGVtZW50c0J5SWQuY29udGFpbnMoaWQp
OworfQorCitpbmxpbmUgYm9vbCBTY29wZUNvbnRhaW5lck5vZGU6OmNvbnRhaW5zTXVsdGlwbGVF
bGVtZW50c1dpdGhJZChjb25zdCBBdG9taWNTdHJpbmcmIGlkKSBjb25zdAoreworICAgIHJldHVy
biBtX2VsZW1lbnRzQnlJZC5jb250YWluc011bHRpcGxlKGlkLmltcGwoKSk7Cit9CisgICAgCitF
bGVtZW50KiBTY29wZUNvbnRhaW5lck5vZGU6OmdldEVsZW1lbnRCeUlkKGNvbnN0IEF0b21pY1N0
cmluZyYgZWxlbWVudElkKSBjb25zdAoreworICAgIGlmIChlbGVtZW50SWQuaXNFbXB0eSgpKQor
ICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbV9lbGVtZW50c0J5SWQuZ2V0RWxlbWVudEJ5
SWQoZWxlbWVudElkLmltcGwoKSwgdGhpcyk7Cit9CisKK3ZvaWQgU2NvcGVDb250YWluZXJOb2Rl
OjphZGRJbWFnZU1hcChIVE1MTWFwRWxlbWVudCogaW1hZ2VNYXApCit7CisgICAgQXRvbWljU3Ry
aW5nSW1wbCogbmFtZSA9IGltYWdlTWFwLT5nZXROYW1lKCkuaW1wbCgpOworICAgIGlmICghbmFt
ZSkKKyAgICAgICAgcmV0dXJuOworICAgIG1faW1hZ2VNYXBzQnlOYW1lLmFkZChuYW1lLCBpbWFn
ZU1hcCk7Cit9CisKK3ZvaWQgU2NvcGVDb250YWluZXJOb2RlOjpyZW1vdmVJbWFnZU1hcChIVE1M
TWFwRWxlbWVudCogaW1hZ2VNYXApCit7CisgICAgQXRvbWljU3RyaW5nSW1wbCogbmFtZSA9IGlt
YWdlTWFwLT5nZXROYW1lKCkuaW1wbCgpOworICAgIGlmICghbmFtZSkKKyAgICAgICAgcmV0dXJu
OworICAgIG1faW1hZ2VNYXBzQnlOYW1lLnJlbW92ZShuYW1lLCBpbWFnZU1hcCk7Cit9CisKK0hU
TUxNYXBFbGVtZW50KiBTY29wZUNvbnRhaW5lck5vZGU6OmdldEltYWdlTWFwKGNvbnN0IFN0cmlu
ZyYgdXJsKSBjb25zdAoreworICAgIGlmICh1cmwuaXNOdWxsKCkpCisgICAgICAgIHJldHVybiAw
OworICAgIHNpemVfdCBoYXNoUG9zID0gdXJsLmZpbmQoJyMnKTsKKyAgICBTdHJpbmcgbmFtZSA9
IChoYXNoUG9zID09IG5vdEZvdW5kID8gdXJsIDogdXJsLnN1YnN0cmluZyhoYXNoUG9zICsgMSkp
LmltcGwoKTsKKyAgICByZXR1cm4gaXNIVE1MRG9jdW1lbnQoKQorICAgICAgICA/IHN0YXRpY19j
YXN0PEhUTUxNYXBFbGVtZW50Kj4obV9pbWFnZU1hcHNCeU5hbWUuZ2V0RWxlbWVudEJ5TG93ZXJj
YXNlTWFwTmFtZShBdG9taWNTdHJpbmcobmFtZS5sb3dlcigpKS5pbXBsKCksIHRoaXMpKTsKKyAg
ICAgICAgOiBzdGF0aWNfY2FzdDxIVE1MTWFwRWxlbWVudCo+KG1faW1hZ2VNYXBzQnlOYW1lLmdl
dEVsZW1lbnRCeU1hcE5hbWUoQXRvbWljU3RyaW5nKG5hbWUpLmltcGwoKSwgdGhpcykpOworfQor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
U2NvcGVDb250YWluZXJOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NvcGVDb250YWluZXJO
b2RlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNWYyZWQ2MjNjYjlmYzE0MDY5M2UwZmJlZDI0MGI2MzM5ZGIyNGQ4
MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY29wZUNvbnRhaW5lck5v
ZGUuaApAQCAtMCwwICsxLDIyMCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVy
IHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
CisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgU2NvcGVDb250YWluZXJOb2RlX2gKKyNkZWZp
bmUgU2NvcGVDb250YWluZXJOb2RlX2gKKworI2luY2x1ZGUgIkNvbnRhaW5lck5vZGUuaCIKKwor
I2luY2x1ZGUgIkRvY3VtZW50T3JkZXJlZE1hcC5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRy
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRG9jdW1lbnQ7CitjbGFzcyBFbGVt
ZW50OworY2xhc3MgSFRNTE1hcEVsZW1lbnQ7CisKKy8vIEEgbm9kZSB0cmVlIHNjb3BlIGlzIGEg
ZGVzY3JpcHRvciBmb3IgYSBzaW5nbGUgdHJlZSBvZiBOb2RlIG9iamVjdHMsIGFuZAorLy8gaXMg
b3duZWQgYnkgdGhlIHJvb3Qgbm9kZSBvZiB0aGF0IHRyZWUuCisvLyBNb3N0IGNvbW1vbmx5LCB0
aGlzIHdpbGwgYmUgYSBEb2N1bWVudCwgYnV0IGNhbiBhbHNvIGJlIGFuIEVsZW1lbnQgdGhhdCBo
YXMKKy8vIGEgc2hhZG93IHRyZWUuCisKK2NsYXNzIFNjb3BlQ29udGFpbmVyTm9kZSA6IHB1Ymxp
YyBDb250YWluZXJOb2RlIHsKK3B1YmxpYzoKKyAgICBlbnVtIFNjb3BlVHlwZSB7CisgICAgICAg
U0NPUEVfRE9DVU1FTlQsCisgICAgICAgU0NPUEVfU0hBRE9XUk9PVAorICAgIH07CisKKyAgICBT
Y29wZVR5cGUgc2NvcGVUeXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CisKKyAgICAvLyBO
b2RlcyBiZWxvbmdpbmcgdG8gdGhpcyBzY29wZSBjb250YWluZXIgKGEgZG9jdW1lbnQgYmVpbmcg
dHlwaWNhbCkKKyAgICAvLyBob2xkICJzZWxmLW9ubHkiIHJlZmVyZW5jZXMuCisgICAgLy8gVGhl
c2UgYXJlIGVub3VnaCB0byBrZWVwIHRoZSBzY29wZSBjb250YWluZXIgZnJvbSBiZWluZyBkZXN0
cm95ZWQsIGJ1dAorICAgIC8vIG5vdCBlbm91Z2ggdG8ga2VlcCBpdCBmcm9tIHJlbW92aW5nIGl0
cyBjaGlsZHJlbi4gVGhpcyBhbGxvd3MgYQorICAgIC8vIG5vZGUgdGhhdCBvdXRsaXZlcyBpdHMg
c2NvcGUgY29udGFpbmVyIG9yIGRvY3VtZW50IHRvIGtlZXAgdGhhdCBhcm91bmQKKyAgICAvLyAo
dXAgdG8gdGhlIGRvY3VtZW50IGl0c2VsZikgd2l0aG91dCBpbnRyb2R1Y2luZyByZWZlcmVuY2Ug
Y3ljbGVzLgorICAgIHZvaWQgc2VsZk9ubHlSZWYoKTsKKyAgICB2b2lkIHNlbGZPbmx5RGVyZWYo
KTsKKworICAgIC8vIERvIG5vdCB1c2UgdGhpcyBtZXRob2QgdG8gY2hhbmdlIHRoZSBzY29wZSBv
ZiBhIG5vZGUKKyAgICAvLyB1bnRpbCBhZnRlciB0aGUgbm9kZSBoYXMgYmVlbiByZW1vdmVkIGZy
b20gaXRzIHByZXZpb3VzIHNjb3BlIQorICAgIC8vCisgICAgLy8gU3BlY2lhbGl6ZWQgdmVyc2lv
biBmcm9tIHRoZSBkZWZ1bHQgaW1wbGVtZW50YXRpb24gaW4gTm9kZToKKyAgICAvLyBUaGUgc2Nv
cGUgb2YgdGhlIGNoaWxkcmVuIGFuZCBuZXN0ZWQgc2NvcGVzIGRvZXNuJ3QgY2hhbmdlLgorICAg
IC8vIE9ubHkgdGhlIGRvY3VtZW50IHBvaW50ZXJzIG11c3QgYmUgdXBkYXRlZCwgYW5kIGNvcnJl
c3BvbmRpbmcgbWVzc2FnZXMgZmlyZWQuCisgICAgdmlydHVhbCB2b2lkIHNldFNjb3BlKFNjb3Bl
Q29udGFpbmVyTm9kZSopOworCisgICAgdm9pZCBhZGRFbGVtZW50QnlJZChjb25zdCBBdG9taWNT
dHJpbmcmIGVsZW1lbnRJZCwgRWxlbWVudCAqZWxlbWVudCk7CisgICAgdm9pZCByZW1vdmVFbGVt
ZW50QnlJZChjb25zdCBBdG9taWNTdHJpbmcmIGVsZW1lbnRJZCwgRWxlbWVudCAqZWxlbWVudCk7
CisgICAgYm9vbCBoYXNFbGVtZW50V2l0aElkKEF0b21pY1N0cmluZ0ltcGwqIGlkKSBjb25zdDsK
KyAgICBib29sIGNvbnRhaW5zTXVsdGlwbGVFbGVtZW50c1dpdGhJZChjb25zdCBBdG9taWNTdHJp
bmcmIGlkKSBjb25zdDsKKyAgICBFbGVtZW50KiBnZXRFbGVtZW50QnlJZChjb25zdCBBdG9taWNT
dHJpbmcmKSBjb25zdDsKKworICAgIHZvaWQgYWRkSW1hZ2VNYXAoSFRNTE1hcEVsZW1lbnQqKTsK
KyAgICB2b2lkIHJlbW92ZUltYWdlTWFwKEhUTUxNYXBFbGVtZW50Kik7CisgICAgSFRNTE1hcEVs
ZW1lbnQqIGdldEltYWdlTWFwKGNvbnN0IFN0cmluZyYgdXJsKSBjb25zdDsKKyAgICAKKyAgICAv
LyBGSVhNRTogY2hlY2sgd2hldGhlciB0aGUgZm9sbG93aW5nIG5lZWQgdG8gYmUgbW92ZWQgaW50
byB0aGlzIGNsYXNzIGZyb20gRG9jdW1lbnQhCisgICAgLy92b2lkIHJlbW92ZU5vZGVMaXN0Q2Fj
aGUoKSB7IGlmIChtX2RvY3VtZW50KSBtX2RvY3VtZW50LT5yZW1vdmVOb2RlTGlzdENhY2hlKCk7
IH0KKyAgICAvL2Jvb2wgaGFzTm9kZUxpc3RDYWNoZXMoKSBjb25zdCB7IHJldHVybiBtX2RvY3Vt
ZW50ICYmIG1fZG9jdW1lbnQtPmhhc05vZGVMaXN0Q2FjaGVzKCk7IH0KKworcHJvdGVjdGVkOgor
ICAgIFNjb3BlQ29udGFpbmVyTm9kZShTY29wZVR5cGUsIFNjb3BlQ29udGFpbmVyTm9kZSogcGFy
ZW50U2NvcGUsIERvY3VtZW50Kik7CisKKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlZExhc3RSZWYo
KTsKKyAgICB2aXJ0dWFsIHZvaWQgY2xlYXJDb250YWluZXIoKTsKKyAgICAKKyAgICBEb2N1bWVu
dCogZG9jdW1lbnRQdHIoKSBjb25zdCB7IHJldHVybiBtX2RvY3VtZW50OyB9CisgICAgdm9pZCBz
ZXREb2N1bWVudFB0cihEb2N1bWVudCogZG9jdW1lbnQpIHsgbV9kb2N1bWVudCA9IGRvY3VtZW50
OyB9CisKKyAgICB2b2lkIGNoYW5nZURvY3VtZW50KERvY3VtZW50KiBuZXdEb2N1bWVudCk7CisK
K3ByaXZhdGU6CisgICAgaW50IG1fc2VsZk9ubHlSZWZDb3VudDsKKyAgICAKKyAgICBTY29wZVR5
cGUgbV90eXBlOworICAgIERvY3VtZW50KiBtX2RvY3VtZW50OworCisgICAgRG9jdW1lbnRPcmRl
cmVkTWFwIG1fZWxlbWVudHNCeUlkOworICAgIERvY3VtZW50T3JkZXJlZE1hcCBtX2ltYWdlTWFw
c0J5TmFtZTsKKworICAgIGZyaWVuZCBjbGFzcyBOb2RlOworfTsKKworLy8gLS0tIElubGluZSBN
ZXRob2RzIC0tLQorCitpbmxpbmUgU2NvcGVDb250YWluZXJOb2RlOjpTY29wZUNvbnRhaW5lck5v
ZGUoCisgICAgU2NvcGVUeXBlIHR5cGUsCisgICAgU2NvcGVDb250YWluZXJOb2RlKiBwYXJlbnRT
Y29wZSwKKyAgICBEb2N1bWVudCogZG9jdW1lbnQKKykKKyAgICA6IENvbnRhaW5lck5vZGUoLyog
c2NvcGU6ICovIHBhcmVudFNjb3BlKQorICAgICwgbV9zZWxmT25seVJlZkNvdW50KDApCisgICAg
LCBtX3R5cGUodHlwZSkKKyAgICAsIG1fZG9jdW1lbnQoZG9jdW1lbnQpCisgICAgLCBtX2VsZW1l
bnRzQnlJZCgpCisgICAgLCBtX2ltYWdlTWFwc0J5TmFtZSgpCit7Cit9CisKK2lubGluZSB2b2lk
IFNjb3BlQ29udGFpbmVyTm9kZTo6c2VsZk9ubHlSZWYoKQoreworICAgIEFTU0VSVCghbV9kZWxl
dGlvbkhhc0JlZ3VuKTsKKyAgICArK21fc2VsZk9ubHlSZWZDb3VudDsKK30KKworaW5saW5lIHZv
aWQgU2NvcGVDb250YWluZXJOb2RlOjpzZWxmT25seURlcmVmKCkKK3sKKyAgICBBU1NFUlQoIW1f
ZGVsZXRpb25IYXNCZWd1bik7CisgICAgLS1tX3NlbGZPbmx5UmVmQ291bnQ7CisgICAgaWYgKCFt
X3NlbGZPbmx5UmVmQ291bnQgJiYgIXJlZkNvdW50KCkpIHsKKyNpZm5kZWYgTkRFQlVHCisgICAg
ICAgIG1fZGVsZXRpb25IYXNCZWd1biA9IHRydWU7CisjZW5kaWYKKyAgICAgICAgZGVsZXRlIHRo
aXM7CisgICAgfQorfQorCisvLyAtLS0gRm9yZWlnbiBNZXRob2RzIC0tLQorCisvLyBIZXJlIGJl
Y2F1c2UgdGhleSB1c2VzIFNjb3BlQ29udGFpbmVyTm9kZSBtZXRob2RzLCBidXQgd2UgcmVhbGx5
IHdhbnQgdG8gaW5saW5lIHRoZW0uCisKK2lubGluZSBOb2RlOjpOb2RlKFNjb3BlQ29udGFpbmVy
Tm9kZSogc2NvcGUsIENvbnN0cnVjdGlvblR5cGUgdHlwZSkKKyAgICA6IG1fc2NvcGUoc2NvcGUp
CisgICAgLCBtX3ByZXZpb3VzKDApCisgICAgLCBtX25leHQoMCkKKyAgICAsIG1fcmVuZGVyZXIo
MCkKKyAgICAsIG1fbm9kZUZsYWdzKHR5cGUpCit7CisgICAgLy8gQWRkaW5nIGEgInNlbGYtb25s
eSIgcmVmIHRvIHRoZSBzY29wZSB0aGUgbm9kZSBpcyBjb250YWluZWQgaW4gKGlmIGFueSkuCisg
ICAgLy8gTm90ZSB0aGF0IGl0J3Mgbm90IG5lY2Vzc2FyeSB0byBhbHNvIGFkZCBzdWNoIGEgcmVm
IHRvIHRoZSBkb2N1bWVudCwKKyAgICAvLyBzaW5jZSB0aGUgc2NvcGUgZWxlbWVudCAoaWYgaXQg
aXNuJ3QgYWxyZWFkeSB0aGUgZG9jdW1lbnQpIHdpbGwgaW4gdHVybgorICAgIC8vIGhhdmUgYWRk
ZWQgc3VjaCBhIHJlZmVyZW5jZSB0byB0aGUgcGFyZW50IHNjb3BlLCBhbmQgc28gb24gdXAgdG8g
dGhlIGRvY3VtZW50LgorICAgIGlmIChtX3Njb3BlKQorICAgICAgICBtX3Njb3BlLT5zZWxmT25s
eVJlZigpOworI2lmICFkZWZpbmVkKE5ERUJVRykgfHwgKGRlZmluZWQoRFVNUF9OT0RFX1NUQVRJ
U1RJQ1MpICYmIERVTVBfTk9ERV9TVEFUSVNUSUNTKQorICAgIHRyYWNrRm9yRGVidWdnaW5nKCk7
CisjZW5kaWYKK30KKworaW5saW5lIGJvb2wgTm9kZTo6aXNEb2N1bWVudE5vZGUoKSBjb25zdAor
eworICAgIHJldHVybiBtX3Njb3BlID09IHRoaXMgJiYgc3RhdGljX2Nhc3Q8Y29uc3QgU2NvcGVD
b250YWluZXJOb2RlKj4odGhpcyktPnNjb3BlVHlwZSgpID09IFNjb3BlQ29udGFpbmVyTm9kZTo6
U0NPUEVfRE9DVU1FTlQ7Cit9CisKK2lubGluZSBib29sIE5vZGU6OmlzU2hhZG93Um9vdCgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIG1fc2NvcGUgPT0gdGhpcyAmJiBzdGF0aWNfY2FzdDxjb25zdCBT
Y29wZUNvbnRhaW5lck5vZGUqPih0aGlzKS0+c2NvcGVUeXBlKCkgPT0gU2NvcGVDb250YWluZXJO
b2RlOjpTQ09QRV9TSEFET1dST09UOworfQorCitpbmxpbmUgYm9vbCBOb2RlOjppc0luU2hhZG93
VHJlZSgpCit7CisgICAgcmV0dXJuIG1fc2NvcGUgJiYgbV9zY29wZS0+aXNTaGFkb3dSb290KCk7
Cit9CisKK2lubGluZSBEb2N1bWVudCogTm9kZTo6ZG9jdW1lbnRPZlNjb3BlKFNjb3BlQ29udGFp
bmVyTm9kZSogc2NvcGUpCit7CisgICAgcmV0dXJuIHNjb3BlID8gc2NvcGUtPmRvY3VtZW50UHRy
KCkgOiAwOworfQorCitpbmxpbmUgRG9jdW1lbnQqIE5vZGU6OmRvY3VtZW50KCkgY29uc3QKK3sK
KyAgICBBU1NFUlQodGhpcyk7CisgICAgQVNTRVJUKChtX3Njb3BlICYmIG1fc2NvcGUtPmRvY3Vt
ZW50UHRyKCkpIHx8IChub2RlVHlwZSgpID09IERPQ1VNRU5UX1RZUEVfTk9ERSAmJiAhaW5Eb2N1
bWVudCgpKSk7CisgICAgcmV0dXJuIG1fc2NvcGUgPyBtX3Njb3BlLT5kb2N1bWVudFB0cigpIDog
MDsKK30KKworaW5saW5lIGJvb2wgTm9kZTo6aW5Eb2N1bWVudCgpIGNvbnN0Cit7CisgICAgQVNT
RVJUKGRvY3VtZW50KCkgfHwgIWdldEZsYWcoSW5Eb2N1bWVudEZsYWcpKTsKKyAgICByZXR1cm4g
Z2V0RmxhZyhJbkRvY3VtZW50RmxhZyk7Cit9CisKK2lubGluZSBDb250YWluZXJOb2RlKiBOb2Rl
OjpwYXJlbnROb2RlKCkgY29uc3QKK3sKKyAgICBDb250YWluZXJOb2RlKiBwID0gcGFyZW50KCk7
CisgICAgLy8gRklYTUU6IHJlZmFjdG9yIGNvZGUgdG8gYWxsb3cgdGhpcyB0byByZWFjaCB0aGUg
c2hhZG93IHJvb3Qgbm9kZT8KKyAgICByZXR1cm4gcC0+aXNTaGFkb3dSb290KCkgPyAwIDogcDsK
K30KKworLy8gREVQUkVDQVRFRAoraW5saW5lIENvbnRhaW5lck5vZGUqIE5vZGU6OnBhcmVudE5v
ZGVHdWFyYW50ZWVkSG9zdEZyZWUoKSBjb25zdAoreworICAgIEFTU0VSVCghaXNTaGFkb3dSb290
KCkpOworICAgIEFTU0VSVCghcGFyZW50KCkgfHwgIXBhcmVudCgpLT5pc1NoYWRvd1Jvb3QoKSk7
CisgICAgcmV0dXJuIHBhcmVudE9ySG9zdE5vZGUoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorCisjZW5kaWYgLy8gU2NvcGVDb250YWluZXJOb2RlX2gKKwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dS
b290LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uM2JmNThhZTBkMTlkMGI0MjU4NDE0NjNlNTUzOWRjZmM2M2U3Zjlh
NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmgKQEAg
LTAsMCArMSw4MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICog
bWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICog
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAq
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZm5kZWYgU2hhZG93Um9vdF9oCisjZGVmaW5lIFNoYWRvd1Jvb3RfaAor
CisjaW5jbHVkZSAiU2NvcGVDb250YWluZXJOb2RlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworY2xhc3MgRWxlbWVudDsKKworY2xhc3MgU2hhZG93Um9vdCA6IHB1YmxpYyBTY29wZUNvbnRh
aW5lck5vZGUgeworcHVibGljOgorICAgIEVsZW1lbnQqIGhvc3RFbGVtZW50KCkgY29uc3QgeyBy
ZXR1cm4gbV9ob3N0RWxlbWVudDsgfQorCitwcm90ZWN0ZWQ6CisgICAgU2hhZG93Um9vdChFbGVt
ZW50KiBob3N0LCBTY29wZUNvbnRhaW5lck5vZGUqIHBhcmVudFNjb3BlLCBEb2N1bWVudCopOwor
CisgICAgdm9pZCBzZXRIb3N0RWxlbWVudChFbGVtZW50KiBob3N0KTsKKworcHJpdmF0ZToKKyAg
ICBFbGVtZW50KiBtX2hvc3RFbGVtZW50OworfTsKKworLy8gLS0tIElubGluZSBNZXRob2RzIC0t
LQorCitTaGFkb3dSb290OjpTaGFkb3dSb290KAorICAgIEVsZW1lbnQqIGhvc3QsCisgICAgU2Nv
cGVDb250YWluZXJOb2RlKiBwYXJlbnRTY29wZSwKKyAgICBEb2N1bWVudCogZG9jdW1lbnQKKykK
KyAgICA6IFNjb3BlQ29udGFpbmVyTm9kZShTQ09QRV9TSEFET1dST09ULCBwYXJlbnRTY29wZSwg
ZG9jdW1lbnQpCisgICAgLCBtX2hvc3RFbGVtZW50KGhvc3QpCit7Cit9CisKK2lubGluZSB2b2lk
IFNoYWRvd1Jvb3Q6OnNldEhvc3RFbGVtZW50KEVsZW1lbnQqIGhvc3QpIHsKKyAgICBtX2hvc3RF
bGVtZW50ID0gaG9zdDsKKyAgICBzZXRTY29wZShob3N0ID8gaG9zdC0+c2NvcGUoKSA6IDApOwor
fQorCisvLyAtLS0gRm9yZWlnbiBNZXRob2RzIC0tLQorCisvLyBIZXJlIGJlY2F1c2UgdGhleSB1
c2VzIFNoYWRvd1Jvb3QgbWV0aG9kcywgYnV0IHdlIHJlYWxseSB3YW50IHRvIGlubGluZSB0aGVt
LgorCitpbmxpbmUgQ29udGFpbmVyTm9kZSogTm9kZTo6cGFyZW50T3JIb3N0Tm9kZSgpIGNvbnN0
Cit7CisgICAgQ29udGFpbmVyTm9kZSogcCA9IHBhcmVudCgpOworICAgIHJldHVybiBwLT5pc1No
YWRvd1Jvb3QoKSA/IHN0YXRpY19jYXN0PFNoYWRvd1Jvb3QqPihwKS0+aG9zdEVsZW1lbnQoKSA6
IHA7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFNoYWRvd1Jvb3Rf
aAorCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>81056</attachid>
            <date>2011-02-03 06:24:05 -0800</date>
            <delta_ts>2011-02-04 02:33:21 -0800</delta_ts>
            <desc>Patch, Simple Version</desc>
            <filename>bug-52963-20110203232402.patch</filename>
            <type>text/plain</type>
            <size>53922</size>
            <attacher name="Roland Steiner">rolandsteiner</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0FuZHJvaWQubWsgYi9Tb3VyY2UvV2ViQ29yZS9B
bmRyb2lkLm1rCmluZGV4IDk2YzYzMDlhYzM0ZWM5NzJlNmFkYmUwZDk3YWJhY2ZlYzVjY2MxY2Eu
LjMzMTRlNDQ0ZTMzNjljNjJlNzk4OGNkOTI5MjZkNjdlMTM3Yzg1MWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL0FuZHJvaWQubWsKKysrIGIvU291cmNlL1dlYkNvcmUvQW5kcm9pZC5tawpA
QCAtMTcyLDYgKzE3Miw3IEBAIExPQ0FMX1NSQ19GSUxFUyA6PSAkKExPQ0FMX1NSQ19GSUxFUykg
XAogCWRvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcCBcCiAJZG9tL1NlbGVjdEVsZW1lbnQu
Y3BwIFwKIAlkb20vU2VsZWN0b3JOb2RlTGlzdC5jcHAgXAorCWRvbS9TaGFkb3dSb290LmNwcCBc
CiAJZG9tL1NwYWNlU3BsaXRTdHJpbmcuY3BwIFwKIAlkb20vU3RhdGljSGFzaFNldE5vZGVMaXN0
LmNwcCBcCiAJZG9tL1N0YXRpY05vZGVMaXN0LmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4
IGMyMDM3ZWI4ODZhZmUyMTk5ZDZiYjZiMzFlOGFkMjExZDUwYTE3NTUuLmJiYmIzYzk2OWRiNDc4
ODU2YWZjYTdmOWQ2NjgxOWQyNDE0MDkzOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC04OTAs
NiArODkwLDcgQEAgU0VUKFdlYkNvcmVfU09VUkNFUwogICAgIGRvbS9TY3JpcHRFeGVjdXRpb25D
b250ZXh0LmNwcAogICAgIGRvbS9TZWxlY3RFbGVtZW50LmNwcAogICAgIGRvbS9TZWxlY3Rvck5v
ZGVMaXN0LmNwcAorICAgIGRvbS9TaGFkb3dSb290LmNwcAogICAgIGRvbS9TcGFjZVNwbGl0U3Ry
aW5nLmNwcAogICAgIGRvbS9TdGF0aWNIYXNoU2V0Tm9kZUxpc3QuY3BwCiAgICAgZG9tL1N0YXRp
Y05vZGVMaXN0LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDA5YjUxNTk3OGNiYjA1NDJmYzQ0MmU3NTM0N2M2
MmJhYzUwYjU1MzUuLmFhNzA2NWQxYWVjNWJjN2FkZjYxZGNiYjU0ZDYwYjY0MTY3YmQ0MmQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxMDkgQEAKKzIwMTEtMDItMDMgIFJvbGFuZCBTdGVpbmVyICA8
cm9sYW5kc3RlaW5lckBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQnVnIDUyOTYzIC0gRW5hYmxlIE8oMSkgYWNjZXNzIHRvIHJv
b3QgZnJvbSBhbnkgbm9kZSBpbiBzaGFkb3cgRE9NIHN1YnRyZWUKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUyOTYzCisKKyAgICAgICAgIlNpbXBsZSIg
dmVyc2lvbiBvZiB0aGUgcGF0Y2gsIGludGVuZGVkIGFzIGEgZmlyc3Qgc3RlcCB0b3dhcmRzIGEg
bW9yZQorICAgICAgICBnZW5lcmFsIHJlZmFjdG9yaW5nIChzZWUgY29tbWVudHMgb24gdGhlIGJ1
ZykuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbnRyb2R1Y2VzIERPTVNjb3BlIGFuZCBTaGFkb3dS
b290IGFzIG5ldyBjbGFzc2VzLiAKKyAgICAgICAgSW5zdGVhZCBvZiBwb2ludGluZyB0byB0aGUg
RG9jdW1lbnQgZGlyZWN0bHksIE5vZGVzIG5vdyBwb2ludCB0byBhIERPTVNjb3BlLAorICAgICAg
ICB3aGljaCBpbiB0dXJuIGNvbnRhaW5zIHRoZSBEb2N1bWVudCBwb2ludGVyLgorCisgICAgICAg
IEJvdGggRG9jdW1lbnQgYW5kIFNoYWRvd1Jvb3QgYXJlIHRoZW4gZGVyaXZlZCBmcm9tIERPTVNj
b3BlLgorICAgICAgICBUaGlzIGFsbG93cyBhbGwgbm9kZXMgTygxKSBhY2Nlc3MgdG8gdGhlIERv
Y3VtZW50LCBhcyB3ZWxsIGFzIHRvIHRoZSBzaGFkb3cKKyAgICAgICAgcm9vdCBmb3Igbm9kZXMg
d2l0aGluIGEgc2hhZG93IHRyZWUgKGFsYmVpdCB3aXRoIGFuIGFkZGl0aW9uYWwgaW5kaXJlY3Rp
b24KKyAgICAgICAgaW4gYm90aCBjYXNlcyksIHdpdGhvdXQgaW50cm9kdWNpbmcgYWRkaXRpb25h
bCBtZW1iZXJzIGludG8gTm9kZS4KKyAgICAgICAgKEluIGZhY3QsIGl0IHJlbW92ZXMgYSBmbGFn
IGJpdCBmcm9tIE5vZGUpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gKHJlZmFjdG9yaW5nKQor
CisgICAgICAgICogQW5kcm9pZC5tazoKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAg
ICAgKiBHTlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBXZWJDb3JlLnBybzoKKyAgICAgICAgKiBX
ZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogZG9tL0F0dHIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6QXR0cjo6QXR0cik6CisgICAgICAgIChXZWJDb3JlOjpBdHRyOjpjcmVhdGUpOgorICAg
ICAgICAqIGRvbS9BdHRyLmg6CisgICAgICAgICogZG9tL0NEQVRBU2VjdGlvbi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDREFUQVNlY3Rpb246OkNEQVRBU2VjdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpDREFUQVNlY3Rpb246OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDREFUQVNlY3Rp
b246OnZpcnR1YWxDcmVhdGUpOgorICAgICAgICAqIGRvbS9DREFUQVNlY3Rpb24uaDoKKyAgICAg
ICAgKiBkb20vQ2hhcmFjdGVyRGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6Q2hhcmFjdGVyRGF0
YTo6Q2hhcmFjdGVyRGF0YSk6CisgICAgICAgICogZG9tL0NvbW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q29tbWVudDo6Q29tbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpDb21tZW50Ojpj
cmVhdGUpOgorICAgICAgICAqIGRvbS9Db21tZW50Lmg6CisgICAgICAgICogZG9tL0NvbnRhaW5l
ck5vZGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRhaW5lck5vZGU6OkNvbnRhaW5lck5vZGUp
OgorICAgICAgICAqIGRvbS9ET01TY29wZS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRP
TVNjb3BlOjpET01TY29wZSk6CisgICAgICAgIChXZWJDb3JlOjpET01TY29wZTo6c2NvcGVUeXBl
KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVNjb3BlOjppc0RvY3VtZW50U2NvcGUpOgorICAgICAg
ICAoV2ViQ29yZTo6RE9NU2NvcGU6OmlzU2hhZG93Um9vdFNjb3BlKToKKyAgICAgICAgKFdlYkNv
cmU6OkRPTVNjb3BlOjpkb2N1bWVudFB0cik6CisgICAgICAgIChXZWJDb3JlOjpET01TY29wZTo6
c2V0RG9jdW1lbnRQdHIpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudDo6RG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6
On5Eb2N1bWVudCk6CisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAgIChXZWJDb3Jl
OjpOb2RlOjpOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmlzRG9jdW1lbnROb2RlKToK
KyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmRvY3VtZW50KToKKyAgICAgICAgKiBkb20vRWRpdGlu
Z1RleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdGluZ1RleHQ6OkVkaXRpbmdUZXh0KToK
KyAgICAgICAgKFdlYkNvcmU6OkVkaXRpbmdUZXh0OjpjcmVhdGUpOgorICAgICAgICAqIGRvbS9F
ZGl0aW5nVGV4dC5oOgorICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkVsZW1lbnQ6OnNoYWRvd1Jvb3QpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6c2V0
U2hhZG93Um9vdCk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpyZW1vdmVTaGFkb3dSb290
KToKKyAgICAgICAgKiBkb20vRWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6
RWxlbWVudCk6CisgICAgICAgICogZG9tL0VsZW1lbnRSYXJlRGF0YS5oOgorICAgICAgICAqIGRv
bS9FbnRpdHlSZWZlcmVuY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RW50aXR5UmVmZXJlbmNl
OjpFbnRpdHlSZWZlcmVuY2UpOgorICAgICAgICAoV2ViQ29yZTo6RW50aXR5UmVmZXJlbmNlOjpj
cmVhdGUpOgorICAgICAgICAqIGRvbS9FbnRpdHlSZWZlcmVuY2UuaDoKKyAgICAgICAgKiBkb20v
Tm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjp+Tm9kZSk6CisgICAgICAgIChXZWJD
b3JlOjpOb2RlOjpzZXREb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpzZXRTaGFk
b3dIb3N0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OnJlZ2lzdGVyRHluYW1pY05vZGVMaXN0
KToKKyAgICAgICAgKiBkb20vTm9kZS5oOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6c2NvcGUp
OgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6aW5Eb2N1bWVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpOb2RlOjpzZXRTY29wZSk6CisgICAgICAgICogZG9tL05vdGF0aW9uLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Ok5vdGF0aW9uOjpOb3RhdGlvbik6CisgICAgICAgICogZG9tL05vdGF0aW9uLmg6
CisgICAgICAgICogZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpQcm9jZXNzaW5nSW5zdHJ1Y3Rpb246OlByb2Nlc3NpbmdJbnN0cnVjdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpQcm9jZXNzaW5nSW5zdHJ1Y3Rpb246OmNyZWF0ZSk6CisgICAgICAgICog
ZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5oOgorICAgICAgICAqIGRvbS9TaGFkb3dSb290LmNw
cDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dSb290OjpzZXRTaGFkb3dIb3N0KToK
KyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd1Jvb3Q6OnNldERvY3VtZW50UmVjdXJzaXZlbHkpOgor
ICAgICAgICAqIGRvbS9TaGFkb3dSb290Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6U2hh
ZG93Um9vdDo6U2hhZG93Um9vdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dSb290Ojpyb290
KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd1Jvb3Q6OnNldFJvb3QpOgorICAgICAgICAqIGRv
bS9TdHlsZWRFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZWRFbGVtZW50OjpTdHls
ZWRFbGVtZW50KToKKyAgICAgICAgKiBkb20vVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpU
ZXh0OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dDo6dmlydHVhbENyZWF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXh0OjpjcmVhdGVXaXRoTGVuZ3RoTGltaXQpOgorICAgICAgICAq
IGRvbS9UZXh0Lmg6CisgICAgICAgIChXZWJDb3JlOjpUZXh0OjpUZXh0KToKKwogMjAxMS0wMi0w
MyAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5
IERhbmllbCBCYXRlcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFt
IGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KaW5kZXggN2E1NjI2NjMwMWExMDdiNzNm
NWI3NDNiZTU0MTA0MDNiNWRmYmEyOC4uYTc3YTgxZDkwY2M0NDBmMTY5NzJmNjg4ODkxZjY5ZWVh
NGQyNDNhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KKysrIGIv
U291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KQEAgLTExNzUsNiArMTE3NSw3IEBAIHdlYmNv
cmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvZG9tL0RPTUNvcmVFeGNlcHRpb24uaCBc
CiAJU291cmNlL1dlYkNvcmUvZG9tL0RPTUltcGxlbWVudGF0aW9uLmNwcCBcCiAJU291cmNlL1dl
YkNvcmUvZG9tL0RPTUltcGxlbWVudGF0aW9uLmggXAorCVNvdXJjZS9XZWJDb3JlL2RvbS9ET01T
Y29wZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vRE9NU3RyaW5nTGlzdC5jcHAgXAogCVNvdXJj
ZS9XZWJDb3JlL2RvbS9ET01TdHJpbmdMaXN0LmggXAogCVNvdXJjZS9XZWJDb3JlL2RvbS9ET01T
dHJpbmdNYXAuY3BwIFwKQEAgLTEyODksNiArMTI5MCw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBc
CiAJU291cmNlL1dlYkNvcmUvZG9tL1NlbGVjdEVsZW1lbnQuaCBcCiAJU291cmNlL1dlYkNvcmUv
ZG9tL1NlbGVjdG9yTm9kZUxpc3QuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vU2VsZWN0b3JO
b2RlTGlzdC5oIFwKKwlTb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAgXAorCVNvdXJj
ZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmggXAogCVNvdXJjZS9XZWJDb3JlL2RvbS9TcGFjZVNw
bGl0U3RyaW5nLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL1NwYWNlU3BsaXRTdHJpbmcuaCBc
CiAJU291cmNlL1dlYkNvcmUvZG9tL1N0YXRpY0hhc2hTZXROb2RlTGlzdC5jcHAgXApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LnBybwppbmRleCAyNjFlNjBmY2UyYjNmYjMzMzk4YTVmYmI1OGVjZjQ2MjVmYmMwOWE1Li4yYTUx
ZDRlZmJmY2FkOTAzNmNmYzE1OTQzYmRiMjZkYWY5YjYxMjE0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnBybworKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybwpAQCAt
NzM0LDYgKzczNCw3IEBAIFNPVVJDRVMgKz0gXAogICAgIGRvbS9Eb2N1bWVudFBhcnNlci5jcHAg
XAogICAgIGRvbS9Eb2N1bWVudFR5cGUuY3BwIFwKICAgICBkb20vRE9NSW1wbGVtZW50YXRpb24u
Y3BwIFwKKyAgICBkb20vRE9NU2NvcGUuY3BwIFwKICAgICBkb20vRE9NU3RyaW5nTGlzdC5jcHAg
XAogICAgIGRvbS9ET01TdHJpbmdNYXAuY3BwIFwKICAgICBkb20vRGF0YXNldERPTVN0cmluZ01h
cC5jcHAgXApAQCAtMTY2OSw2ICsxNjcwLDcgQEAgSEVBREVSUyArPSBcCiAgICAgZG9tL0RvY3Vt
ZW50T3JkZXJlZE1hcC5oIFwKICAgICBkb20vRG9jdW1lbnRUeXBlLmggXAogICAgIGRvbS9ET01J
bXBsZW1lbnRhdGlvbi5oIFwKKyAgICBkb20vRE9NU2NvcGUuaCBcCiAgICAgZG9tL0RPTVN0cmlu
Z0xpc3QuaCBcCiAgICAgZG9tL0RPTVN0cmluZ01hcC5oIFwKICAgICBkb20vRE9NVGltZVN0YW1w
LmggXApAQCAtMTcxNiw2ICsxNzE4LDcgQEAgSEVBREVSUyArPSBcCiAgICAgZG9tL1NjcmlwdEV4
ZWN1dGlvbkNvbnRleHQuaCBcCiAgICAgZG9tL1NlbGVjdEVsZW1lbnQuaCBcCiAgICAgZG9tL1Nl
bGVjdG9yTm9kZUxpc3QuaCBcCisgICAgZG9tL1NoYWRvd1Jvb3QuaCBcCiAgICAgZG9tL1NwYWNl
U3BsaXRTdHJpbmcuaCBcCiAgICAgZG9tL1N0YXRpY05vZGVMaXN0LmggXAogICAgIGRvbS9TdHls
ZWRFbGVtZW50LmggXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ov
V2ViQ29yZS52Y3Byb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZj
cHJvagppbmRleCAyZGE5YTU5MzJmMzAzNGNiOTg3YjlmOWI1MGY3ODU1OGM1MjA4ZTllLi44Mzhk
NDNhYWE3N2RjNmEyMTY0NDVkMmM5NTYyOGU2ODg1MGQxZWM3IDEwMDc1NQotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtNDMzMjIsNiArNDMzMjIsMTAgQEAK
IAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cZG9tXERP
TVNjb3BlLmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKIAkJCQlSZWxhdGl2ZVBhdGg9
Ii4uXGRvbVxET01TdHJpbmdMaXN0LmNwcCIKIAkJCQk+CiAJCQkJPEZpbGVDb25maWd1cmF0aW9u
CkBAIC00NTk4Miw2ICs0NTk4Niw2MiBAQAogCQkJCT4KIAkJCTwvRmlsZT4KIAkJCTxGaWxlCisJ
CQkJUmVsYXRpdmVQYXRoPSIuLlxkb21cU2hhZG93Um9vdC5jcHAiCisJCQkJPgorCQkJCTxGaWxl
Q29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9t
QnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxl
clRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZp
Z3VyYXRpb24KKwkJCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVp
bGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRv
b2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3Vy
YXRpb24KKwkJCQkJTmFtZT0iRGVidWdfQ2Fpcm9fQ0ZMaXRlfFdpbjMyIgorCQkJCQlFeGNsdWRl
ZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENv
bXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxl
Q29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJSZWxlYXNlX0NhaXJvX0NGTGl0ZXxXaW4zMiIKKwkJ
CQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5h
bWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4K
KwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iRGVidWdfQWxsfFdpbjMyIgorCQkJ
CQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFt
ZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgor
CQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJSZWxlYXNlX0xUQ0d8V2luMzIiCisJ
CQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlO
YW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+
CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cZG9tXFNoYWRvd1Jv
b3QuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQogCQkJCVJlbGF0aXZlUGF0aD0iLi5c
ZG9tXFNwYWNlU3BsaXRTdHJpbmcuY3BwIgogCQkJCT4KIAkJCQk8RmlsZUNvbmZpZ3VyYXRpb24K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpp
bmRleCAzZmEwZWRiNDE0Mjc3ODMzN2VmZjdiODBhMDFlYjQ5YjEyMzcxYmVlLi45NTRkMTFjZjc1
NmYxOWMwNzhiZDYyZmI2MjRmMjE0NDllNDU3Y2QwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0zMTgsNiArMzE4LDkgQEAKIAkJ
MTQ4QUZEQTYwQUY1ODM2MDAwOENDNzAwIC8qIEV4Y2VwdGlvbkhhbmRsZXJzLm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQ4QUZEQTQwQUY1ODM2MDAw
OENDNzAwIC8qIEV4Y2VwdGlvbkhhbmRsZXJzLm1tICovOyB9OwogCQkxNDk0N0ZGRDEyRjgwQ0Qy
MDBBMEY2MzEgLyogRG9jdW1lbnRPcmRlcmVkTWFwLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0OTQ3RkZCMTJGODBDRDIwMEEwRjYzMSAvKiBEb2N1
bWVudE9yZGVyZWRNYXAuY3BwICovOyB9OwogCQkxNDk0N0ZGRTEyRjgwQ0QyMDBBMEY2MzEgLyog
RG9jdW1lbnRPcmRlcmVkTWFwLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAxNDk0N0ZGQzEyRjgwQ0QyMDBBMEY2MzEgLyogRG9jdW1lbnRPcmRlcmVkTWFw
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMTQ5
NDgwQzExMkZBN0I2MzAwQTBGNjMxIC8qIFNoYWRvd1Jvb3QuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0OTQ4MEJGMTJGQTdCNjMwMEEwRjYzMSAvKiBT
aGFkb3dSb290LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJMTQ5NDgwQzIxMkZBN0I2MzAwQTBGNjMxIC8qIFNoYWRvd1Jvb3QuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQ5NDgwQzAxMkZBN0I2MzAw
QTBGNjMxIC8qIFNoYWRvd1Jvb3QuY3BwICovOyB9OworCQkxNDk0ODEwQzEyRkE4NUNBMDBBMEY2
MzEgLyogRE9NU2NvcGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDE0OTQ4MTBBMTJGQTg1Q0EwMEEwRjYzMSAvKiBET01TY29wZS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTE0OTkzQkU1MEIyRjJCMUMw
MDUwNDk3RiAvKiBGb2N1c0NvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMTQ5OTNCRTMwQjJGMkIxQzAwNTA0OTdGIC8qIEZvY3VzQ29u
dHJvbGxlci5jcHAgKi87IH07CiAJCTE0OTkzQkU2MEIyRjJCMUMwMDUwNDk3RiAvKiBGb2N1c0Nv
bnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDE0OTkzQkU0MEIyRjJCMUMwMDUwNDk3RiAvKiBGb2N1c0NvbnRyb2xsZXIuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxNEM5QTVFQTBCM0QxMDVG
MDA1QTAyMzIgLyogU2V0dGluZ3MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMTRDOUE1RTkwQjNEMTA1RjAwNUEwMjMyIC8qIFNldHRpbmdzLmNwcCAq
LzsgfTsKQEAgLTY2NDgsNiArNjY1MSw5IEBACiAJCTE0OEFGREE0MEFGNTgzNjAwMDhDQzcwMCAv
KiBFeGNlcHRpb25IYW5kbGVycy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBFeGNlcHRpb25IYW5kbGVycy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMTQ5NDdGRkIxMkY4MENEMjAwQTBGNjMxIC8qIERvY3VtZW50T3JkZXJlZE1hcC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEb2N1bWVudE9yZGVyZWRNYXAuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNDk0N0ZGQzEyRjgwQ0QyMDBBMEY2MzEg
LyogRG9jdW1lbnRPcmRlcmVkTWFwLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IERvY3VtZW50T3JkZXJlZE1hcC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxNDk0
ODBCRjEyRkE3QjYzMDBBMEY2MzEgLyogU2hhZG93Um9vdC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBTaGFkb3dSb290Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTE0OTQ4MEMwMTJGQTdCNjMwMEEwRjYzMSAvKiBTaGFkb3dSb290LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNoYWRvd1Jvb3QuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkxNDk0ODEwQTEyRkE4NUNBMDBBMEY2MzEgLyogRE9NU2NvcGUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NU2NvcGUuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMTQ5OTNCRTMwQjJGMkIxQzAwNTA0OTdGIC8qIEZvY3VzQ29udHJvbGxl
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRm9jdXNDb250cm9s
bGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTQ5OTNCRTQwQjJGMkIxQzAw
NTA0OTdGIC8qIEZvY3VzQ29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gRm9jdXNDb250cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0
QzlBNUU5MEIzRDEwNUYwMDVBMDIzMiAvKiBTZXR0aW5ncy5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gU2V0dGluZ3MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMTkwMjIsNiArMTkwMjgsNyBAQAogCQkJCUE4MTg1RjM2MDk3NjU3NjUwMDU4MjZE
OSAvKiBET01JbXBsZW1lbnRhdGlvbi5jcHAgKi8sCiAJCQkJQTgxODVGMzMwOTc2NTc2NTAwNTgy
NkQ5IC8qIERPTUltcGxlbWVudGF0aW9uLmggKi8sCiAJCQkJOTNFRUMxRTkwOUMyODc3NzAwQzUx
NUQxIC8qIERPTUltcGxlbWVudGF0aW9uLmlkbCAqLywKKwkJCQkxNDk0ODEwQTEyRkE4NUNBMDBB
MEY2MzEgLyogRE9NU2NvcGUuaCAqLywKIAkJCQlDNTU2MTBGMDExQTcwNEVCMDBCODJEMjcgLyog
RE9NU3RyaW5nTGlzdC5jcHAgKi8sCiAJCQkJQzU0NDI3NDkxMUE1N0U3QTAwNjNBNzQ5IC8qIERP
TVN0cmluZ0xpc3QuaCAqLywKIAkJCQlDNTQ0Mjc0QTExQTU3RTdBMDA2M0E3NDkgLyogRE9NU3Ry
aW5nTGlzdC5pZGwgKi8sCkBAIC0xOTE2OCw2ICsxOTE3NSw4IEBACiAJCQkJMDg0QUVCRTMwRkI1
MDVGQTAwMzg0ODNFIC8qIFNlbGVjdEVsZW1lbnQuaCAqLywKIAkJCQlCQzdGQTY4MDBEMUYxNjc5
MDBEQjIyQTkgLyogU2VsZWN0b3JOb2RlTGlzdC5jcHAgKi8sCiAJCQkJQkM3RkE2N0YwRDFGMTY3
OTAwREIyMkE5IC8qIFNlbGVjdG9yTm9kZUxpc3QuaCAqLywKKwkJCQkxNDk0ODBCRjEyRkE3QjYz
MDBBMEY2MzEgLyogU2hhZG93Um9vdC5oICovLAorCQkJCTE0OTQ4MEMwMTJGQTdCNjMwMEEwRjYz
MSAvKiBTaGFkb3dSb290LmNwcCAqLywKIAkJCQlEMDFBMjdBQjEwQzlCRkQ4MDAwMjZBNDIgLyog
U3BhY2VTcGxpdFN0cmluZy5jcHAgKi8sCiAJCQkJRDAxQTI3QUMxMEM5QkZEODAwMDI2QTQyIC8q
IFNwYWNlU3BsaXRTdHJpbmcuaCAqLywKIAkJCQlDRUEzOTQ5QTExRDQ1Q0RBMDAzMDk0Q0YgLyog
U3RhdGljSGFzaFNldE5vZGVMaXN0LmNwcCAqLywKQEAgLTIyNDg1LDYgKzIyNDk0LDggQEAKIAkJ
CQlCQ0U0NDEzNjEyRjc0OTBCMDA5Qjg0QjggLyogRm9udFdpZHRoVmFyaWFudC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMTQ5NDdGRkUxMkY4MENEMjAwQTBGNjMxIC8qIERvY3VtZW50T3JkZXJlZE1h
cC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTdDNDcxREMxMkY5MjVCRDAwODYzNTRCIC8qIENvbnRl
bnRTZWN1cml0eVBvbGljeS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMTQ5NDgwQzExMkZBN0I2MzAw
QTBGNjMxIC8qIFNoYWRvd1Jvb3QuaCBpbiBIZWFkZXJzICovLAorCQkJCTE0OTQ4MTBDMTJGQTg1
Q0EwMEEwRjYzMSAvKiBET01TY29wZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25s
eUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0yNTE4Niw2ICsyNTE5
Nyw3IEBACiAJCQkJQkNFNDQxMzMxMkY3NDhFMjAwOUI4NEI4IC8qIFJlbmRlckNvbWJpbmVUZXh0
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0OTQ3RkZEMTJGODBDRDIwMEEwRjYzMSAvKiBEb2N1
bWVudE9yZGVyZWRNYXAuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTdDNDcxREIxMkY5MjVCRDAw
ODYzNTRCIC8qIENvbnRlbnRTZWN1cml0eVBvbGljeS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkx
NDk0ODBDMjEyRkE3QjYzMDBBMEY2MzEgLyogU2hhZG93Um9vdC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9BdHRyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9BdHRyLmNwcAppbmRleCBmNDk3Mzk0OGZlMTYwZjMyYTk2YmQ0OWI4ZjMwNDVlMmRjOWM2
NDVhLi45OGFhODEyNDEzMzViMzhiNjViYmM1OGNkZTk5YjZmNGI4MzZkYWQyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vQXR0ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0F0
dHIuY3BwCkBAIC0zMyw4ICszMyw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFt
ZXNwYWNlIEhUTUxOYW1lczsKIAotaW5saW5lIEF0dHI6OkF0dHIoRWxlbWVudCogZWxlbWVudCwg
RG9jdW1lbnQqIGRvY3VtZW50LCBQYXNzUmVmUHRyPEF0dHJpYnV0ZT4gYXR0cmlidXRlKQotICAg
IDogQ29udGFpbmVyTm9kZShkb2N1bWVudCkKK2lubGluZSBBdHRyOjpBdHRyKEVsZW1lbnQqIGVs
ZW1lbnQsIERPTVNjb3BlKiBzY29wZSwgUGFzc1JlZlB0cjxBdHRyaWJ1dGU+IGF0dHJpYnV0ZSkK
KyAgICA6IENvbnRhaW5lck5vZGUoc2NvcGUpCiAgICAgLCBtX2VsZW1lbnQoZWxlbWVudCkKICAg
ICAsIG1fYXR0cmlidXRlKGF0dHJpYnV0ZSkKICAgICAsIG1faWdub3JlQ2hpbGRyZW5DaGFuZ2Vk
KDApCkBAIC00NCw5ICs0NCw5IEBAIGlubGluZSBBdHRyOjpBdHRyKEVsZW1lbnQqIGVsZW1lbnQs
IERvY3VtZW50KiBkb2N1bWVudCwgUGFzc1JlZlB0cjxBdHRyaWJ1dGU+IGF0CiAgICAgbV9hdHRy
aWJ1dGUtPmJpbmRBdHRyKHRoaXMpOwogfQogCi1QYXNzUmVmUHRyPEF0dHI+IEF0dHI6OmNyZWF0
ZShFbGVtZW50KiBlbGVtZW50LCBEb2N1bWVudCogZG9jdW1lbnQsIFBhc3NSZWZQdHI8QXR0cmli
dXRlPiBhdHRyaWJ1dGUpCitQYXNzUmVmUHRyPEF0dHI+IEF0dHI6OmNyZWF0ZShFbGVtZW50KiBl
bGVtZW50LCBET01TY29wZSogc2NvcGUsIFBhc3NSZWZQdHI8QXR0cmlidXRlPiBhdHRyaWJ1dGUp
CiB7Ci0gICAgUmVmUHRyPEF0dHI+IGF0dHIgPSBhZG9wdFJlZihuZXcgQXR0cihlbGVtZW50LCBk
b2N1bWVudCwgYXR0cmlidXRlKSk7CisgICAgUmVmUHRyPEF0dHI+IGF0dHIgPSBhZG9wdFJlZihu
ZXcgQXR0cihlbGVtZW50LCBzY29wZSwgYXR0cmlidXRlKSk7CiAgICAgYXR0ci0+Y3JlYXRlVGV4
dENoaWxkKCk7CiAgICAgcmV0dXJuIGF0dHIucmVsZWFzZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL0F0dHIuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9BdHRyLmgKaW5kZXgg
ZTc2ZDJmYTZjZGE2ZTcyOGNhZDZjMmJkMmU3YjM1ODNjZGU1ZDVlYS4uZDk0ZmEzZGIwNTVlYWRh
ZWU4OTk5MTJhYzgwYThkMTI4NTI5NTMyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L0F0dHIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQXR0ci5oCkBAIC0zOSw3ICszOSw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEF0dHIgOiBwdWJsaWMgQ29udGFpbmVyTm9kZSB7
CiAgICAgZnJpZW5kIGNsYXNzIE5hbWVkTm9kZU1hcDsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFz
c1JlZlB0cjxBdHRyPiBjcmVhdGUoRWxlbWVudCosIERvY3VtZW50KiwgUGFzc1JlZlB0cjxBdHRy
aWJ1dGU+KTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxBdHRyPiBjcmVhdGUoRWxlbWVudCosIERP
TVNjb3BlKiwgUGFzc1JlZlB0cjxBdHRyaWJ1dGU+KTsKICAgICB2aXJ0dWFsIH5BdHRyKCk7CiAK
ICAgICBTdHJpbmcgbmFtZSgpIGNvbnN0IHsgcmV0dXJuIHF1YWxpZmllZE5hbWUoKS50b1N0cmlu
ZygpOyB9CkBAIC02MSw3ICs2MSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFNwZWNpZmllZChi
b29sIHNwZWNpZmllZCkgeyBtX3NwZWNpZmllZCA9IHNwZWNpZmllZDsgfQogCiBwcml2YXRlOgot
ICAgIEF0dHIoRWxlbWVudCosIERvY3VtZW50KiwgUGFzc1JlZlB0cjxBdHRyaWJ1dGU+KTsKKyAg
ICBBdHRyKEVsZW1lbnQqLCBET01TY29wZSosIFBhc3NSZWZQdHI8QXR0cmlidXRlPik7CiAKICAg
ICB2b2lkIGNyZWF0ZVRleHRDaGlsZCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vQ0RBVEFTZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DREFUQVNlY3Rpb24uY3Bw
CmluZGV4IGQ3MzA1NGU3MTcxZjg0OWY3NzNlYjQyMzlmMWUwYzY3ZGIyZTBhN2YuLmM2M2NiYjgx
M2Y1YzBlNjAwOWI5NjMxOGM0Yzg0OTQwYjZiNWJkYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9DREFUQVNlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DREFUQVNl
Y3Rpb24uY3BwCkBAIC0yNiwxNCArMjYsMTQgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1p
bmxpbmUgQ0RBVEFTZWN0aW9uOjpDREFUQVNlY3Rpb24oRG9jdW1lbnQqIGRvY3VtZW50LCBjb25z
dCBTdHJpbmcmIGRhdGEpCi0gICAgOiBUZXh0KGRvY3VtZW50LCBkYXRhKQoraW5saW5lIENEQVRB
U2VjdGlvbjo6Q0RBVEFTZWN0aW9uKERPTVNjb3BlKiBzY29wZSwgY29uc3QgU3RyaW5nJiBkYXRh
KQorICAgIDogVGV4dChzY29wZSwgZGF0YSkKIHsKIH0KIAotUGFzc1JlZlB0cjxDREFUQVNlY3Rp
b24+IENEQVRBU2VjdGlvbjo6Y3JlYXRlKERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgU3RyaW5n
JiBkYXRhKQorUGFzc1JlZlB0cjxDREFUQVNlY3Rpb24+IENEQVRBU2VjdGlvbjo6Y3JlYXRlKERP
TVNjb3BlKiBzY29wZSwgY29uc3QgU3RyaW5nJiBkYXRhKQogewotICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgQ0RBVEFTZWN0aW9uKGRvY3VtZW50LCBkYXRhKSk7CisgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBDREFUQVNlY3Rpb24oc2NvcGUsIGRhdGEpKTsKIH0KIAogU3RyaW5nIENEQVRBU2VjdGlv
bjo6bm9kZU5hbWUoKSBjb25zdApAQCAtNTgsNyArNTgsNyBAQCBib29sIENEQVRBU2VjdGlvbjo6
Y2hpbGRUeXBlQWxsb3dlZChOb2RlVHlwZSkKIAogUGFzc1JlZlB0cjxUZXh0PiBDREFUQVNlY3Rp
b246OnZpcnR1YWxDcmVhdGUoY29uc3QgU3RyaW5nJiBkYXRhKQogewotICAgIHJldHVybiBjcmVh
dGUoZG9jdW1lbnQoKSwgZGF0YSk7CisgICAgcmV0dXJuIGNyZWF0ZShzY29wZSgpLCBkYXRhKTsK
IH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL0NEQVRBU2VjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0NEQVRBU2VjdGlvbi5oCmlu
ZGV4IDVjZjA3ZTE0NmIxODNkOTM5MTI3ZjExZGZmMmI1ZmU1MjBkMDQwYmIuLjg5MjViN2RkNWQ2
YWFmNjM2MmZkNmY4MjJiOGFmMGRiNWNkOTA2NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9DREFUQVNlY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ0RBVEFTZWN0aW9u
LmgKQEAgLTI5LDEwICsyOSwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENEQVRB
U2VjdGlvbiA6IHB1YmxpYyBUZXh0IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxD
REFUQVNlY3Rpb24+IGNyZWF0ZShEb2N1bWVudCosIGNvbnN0IFN0cmluZyYpOworICAgIHN0YXRp
YyBQYXNzUmVmUHRyPENEQVRBU2VjdGlvbj4gY3JlYXRlKERPTVNjb3BlKiwgY29uc3QgU3RyaW5n
Jik7CiAKIHByaXZhdGU6Ci0gICAgQ0RBVEFTZWN0aW9uKERvY3VtZW50KiwgY29uc3QgU3RyaW5n
Jik7CisgICAgQ0RBVEFTZWN0aW9uKERPTVNjb3BlKiwgY29uc3QgU3RyaW5nJik7CiAKICAgICB2
aXJ0dWFsIFN0cmluZyBub2RlTmFtZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgTm9kZVR5cGUgbm9k
ZVR5cGUoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGFyYWN0ZXJE
YXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hhcmFjdGVyRGF0YS5oCmluZGV4IDMxZGE2M2Ni
MWFmMTEwODEwMjNmNTFmOGY5ZTI5ODQ5NGM1ZWE5MWEuLmNjYTNlNzUyNzkxYWJiNDRhZjJmMTgx
OWE5YjYyZjdlODk4Mjc2ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGFyYWN0
ZXJEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NoYXJhY3RlckRhdGEuaApAQCAtNDYs
OCArNDYsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBwYXJzZXJBcHBlbmREYXRhKGNvbnN0IFN0cmlu
ZyYpOwogCiBwcm90ZWN0ZWQ6Ci0gICAgQ2hhcmFjdGVyRGF0YShEb2N1bWVudCogZG9jdW1lbnQs
IGNvbnN0IFN0cmluZyYgdGV4dCwgQ29uc3RydWN0aW9uVHlwZSB0eXBlKQotICAgICAgICA6IE5v
ZGUoZG9jdW1lbnQsIHR5cGUpCisgICAgQ2hhcmFjdGVyRGF0YShET01TY29wZSogc2NvcGUsIGNv
bnN0IFN0cmluZyYgdGV4dCwgQ29uc3RydWN0aW9uVHlwZSB0eXBlKQorICAgICAgICA6IE5vZGUo
c2NvcGUsIHR5cGUpCiAgICAgICAgICwgbV9kYXRhKHRleHQuaW1wbCgpID8gdGV4dC5pbXBsKCkg
OiBTdHJpbmdJbXBsOjplbXB0eSgpKQogICAgIHsKICAgICAgICAgQVNTRVJUKHR5cGUgPT0gQ3Jl
YXRlQ29tbWVudCB8fCB0eXBlID09IENyZWF0ZVRleHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL0NvbW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbW1lbnQuY3BwCmlu
ZGV4IDAwZjE3MjRiNDE1YjA0YWJjYWM4MzRiNTA4MTQyNTdlYjkzOTQ1NmEuLjFiOTY1ZmFhNzA3
ZDBiMjg1MjQ1NDk2ZTAyNzRmYzU3NmE5YTQ5YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Db21tZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29tbWVudC5jcHAKQEAg
LTI2LDE0ICsyNiwxNCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWlubGluZSBDb21tZW50
OjpDb21tZW50KERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiB0ZXh0KQotICAgIDog
Q2hhcmFjdGVyRGF0YShkb2N1bWVudCwgdGV4dCwgQ3JlYXRlQ29tbWVudCkKK2lubGluZSBDb21t
ZW50OjpDb21tZW50KERPTVNjb3BlKiBzY29wZSwgY29uc3QgU3RyaW5nJiB0ZXh0KQorICAgIDog
Q2hhcmFjdGVyRGF0YShzY29wZSwgdGV4dCwgQ3JlYXRlQ29tbWVudCkKIHsKIH0KIAotUGFzc1Jl
ZlB0cjxDb21tZW50PiBDb21tZW50OjpjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBT
dHJpbmcmIHRleHQpCitQYXNzUmVmUHRyPENvbW1lbnQ+IENvbW1lbnQ6OmNyZWF0ZShET01TY29w
ZSogc2NvcGUsIGNvbnN0IFN0cmluZyYgdGV4dCkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3
IENvbW1lbnQoZG9jdW1lbnQsIHRleHQpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IENvbW1l
bnQoc2NvcGUsIHRleHQpKTsKIH0KIAogU3RyaW5nIENvbW1lbnQ6Om5vZGVOYW1lKCkgY29uc3QK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db21tZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vQ29tbWVudC5oCmluZGV4IGEwMjEwYzRiZWJkZWFjZGYzOTY5MWJiMTQwN2ZkOTNhYTA2
YWNlOTYuLjI4YTg4ODg4YjQxZTlkNWRlNmMwMThiZjM1M2RmNzVhMWI3YzMzNDEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db21tZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L0NvbW1lbnQuaApAQCAtMjksMTAgKzI5LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xh
c3MgQ29tbWVudCA6IHB1YmxpYyBDaGFyYWN0ZXJEYXRhIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UGFzc1JlZlB0cjxDb21tZW50PiBjcmVhdGUoRG9jdW1lbnQqLCBjb25zdCBTdHJpbmcmKTsKKyAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxDb21tZW50PiBjcmVhdGUoRE9NU2NvcGUqLCBjb25zdCBTdHJp
bmcmKTsKIAogcHJpdmF0ZToKLSAgICBDb21tZW50KERvY3VtZW50KiwgY29uc3QgU3RyaW5nJik7
CisgICAgQ29tbWVudChET01TY29wZSosIGNvbnN0IFN0cmluZyYpOwogCiAgICAgdmlydHVhbCBT
dHJpbmcgbm9kZU5hbWUoKSBjb25zdDsKICAgICB2aXJ0dWFsIE5vZGVUeXBlIG5vZGVUeXBlKCkg
Y29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5oIGIv
U291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuaAppbmRleCA3NmViMWJkNzExMTRhNjBi
NTY1NjdmYWE0ZWZjOWNlODYwN2YwOGVkLi5jNzc1Yzk5MDdiNjg1YjQ1ZDM5MzA5N2M2NGE2M2Rj
MTgyMzRiYWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmgKQEAgLTg3LDcgKzg3LDcg
QEAgcHVibGljOgogICAgIHN0YXRpYyBib29sIHBvc3RBdHRhY2hDYWxsYmFja3NBcmVTdXNwZW5k
ZWQoKTsKICAgICAKIHByb3RlY3RlZDoKLSAgICBDb250YWluZXJOb2RlKERvY3VtZW50KiwgQ29u
c3RydWN0aW9uVHlwZSA9IENyZWF0ZUNvbnRhaW5lcik7CisgICAgQ29udGFpbmVyTm9kZShET01T
Y29wZSosIENvbnN0cnVjdGlvblR5cGUgPSBDcmVhdGVDb250YWluZXIpOwogCiAgICAgdm9pZCBz
dXNwZW5kUG9zdEF0dGFjaENhbGxiYWNrcygpOwogICAgIHZvaWQgcmVzdW1lUG9zdEF0dGFjaENh
bGxiYWNrcygpOwpAQCAtMTM1LDggKzEzNSw4IEBAIGlubGluZSBjb25zdCBDb250YWluZXJOb2Rl
KiB0b0NvbnRhaW5lck5vZGUoY29uc3QgTm9kZSogbm9kZSkKIC8vIFRoaXMgd2lsbCBjYXRjaCBh
bnlvbmUgZG9pbmcgYW4gdW5uZWNlc3NhcnkgY2FzdC4KIHZvaWQgdG9Db250YWluZXJOb2RlKGNv
bnN0IENvbnRhaW5lck5vZGUqKTsKIAotaW5saW5lIENvbnRhaW5lck5vZGU6OkNvbnRhaW5lck5v
ZGUoRG9jdW1lbnQqIGRvY3VtZW50LCBDb25zdHJ1Y3Rpb25UeXBlIHR5cGUpCi0gICAgOiBOb2Rl
KGRvY3VtZW50LCB0eXBlKQoraW5saW5lIENvbnRhaW5lck5vZGU6OkNvbnRhaW5lck5vZGUoRE9N
U2NvcGUqIHNjb3BlLCBDb25zdHJ1Y3Rpb25UeXBlIHR5cGUpCisgICAgOiBOb2RlKHNjb3BlLCB0
eXBlKQogICAgICwgbV9maXJzdENoaWxkKDApCiAgICAgLCBtX2xhc3RDaGlsZCgwKQogewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RPTVNjb3BlLmggYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRE9NU2NvcGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42Nzc1MzE2OTFiYzRjMDQ0YjE3OGQ5NWY0YzZlODRj
ZDM2MTQwNGIzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RPTVNjb3Bl
LmgKQEAgLTAsMCArMSw2NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisg
KiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisgCisjaWZuZGVmIERPTVNjb3BlX2gKKyNkZWZpbmUgRE9NU2NvcGVf
aCAKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBOb2RlOworY2xhc3MgRG9jdW1lbnQ7
CisKK2NsYXNzIERPTVNjb3BlIHsKK3B1YmxpYzoKKyAgICBlbnVtIFNjb3BlVHlwZSB7CisgICAg
ICBTQ09QRV9ET0NVTUVOVCwKKyAgICAgIFNDT1BFX1NIQURPV1JPT1QKKyAgICB9OworCisgICAg
RE9NU2NvcGUoU2NvcGVUeXBlIHNjb3BlVHlwZSwgRG9jdW1lbnQqIGRvY3VtZW50ID0gMCkKKyAg
ICAgIDogbV9zY29wZVR5cGUoc2NvcGVUeXBlKQorICAgICAgLCBtX2RvY3VtZW50KGRvY3VtZW50
KQorICAgIHsKKyAgICB9CisKKyAgICBTY29wZVR5cGUgc2NvcGVUeXBlKCkgY29uc3QgeyByZXR1
cm4gbV9zY29wZVR5cGU7IH0KKyAgICBib29sIGlzRG9jdW1lbnRTY29wZSgpIGNvbnN0IHsgcmV0
dXJuIG1fc2NvcGVUeXBlID09IFNDT1BFX0RPQ1VNRU5UOyB9CisgICAgYm9vbCBpc1NoYWRvd1Jv
b3RTY29wZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2NvcGVUeXBlID09IFNDT1BFX1NIQURPV1JPT1Q7
IH0KKworICAgIERvY3VtZW50KiBkb2N1bWVudFB0cigpIGNvbnN0IHsgcmV0dXJuIG1fZG9jdW1l
bnQ7IH0KKyAgICB2b2lkIHNldERvY3VtZW50UHRyKERvY3VtZW50KiBkb2N1bWVudCkgeyBtX2Rv
Y3VtZW50ID0gZG9jdW1lbnQ7IH0KKworcHJpdmF0ZToKKyAgICBTY29wZVR5cGUgbV9zY29wZVR5
cGU7CisgICAgRG9jdW1lbnQqIG1fZG9jdW1lbnQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCisKKyNlbmRpZiAvLyBET01TY29wZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCAy
NTIwYWU4YzJjZWJmZGUwNzU5MzNhM2UyOTRmZWY5MWI0NzVhMWZhLi5lMjgyOTM1NTNiYWZlNGMx
MTE4YzE5NzY5Y2U3ODZhODQ5YzhiNjM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTM2
OSw2ICszNjksNyBAQCBwcml2YXRlOgogCiBEb2N1bWVudDo6RG9jdW1lbnQoRnJhbWUqIGZyYW1l
LCBjb25zdCBLVVJMJiB1cmwsIGJvb2wgaXNYSFRNTCwgYm9vbCBpc0hUTUwsIGNvbnN0IEtVUkwm
IGJhc2VVUkwpCiAgICAgOiBDb250YWluZXJOb2RlKDApCisgICAgLCBET01TY29wZShET01TY29w
ZTo6U0NPUEVfRE9DVU1FTlQsIHRoaXMpCiAgICAgLCBtX2NvbXBhdGliaWxpdHlNb2RlKE5vUXVp
cmtzTW9kZSkKICAgICAsIG1fY29tcGF0aWJpbGl0eU1vZGVMb2NrZWQoZmFsc2UpCiAgICAgLCBt
X2RvbVRyZWVWZXJzaW9uKDApCkBAIC00MzMsNyArNDM0LDcgQEAgRG9jdW1lbnQ6OkRvY3VtZW50
KEZyYW1lKiBmcmFtZSwgY29uc3QgS1VSTCYgdXJsLCBib29sIGlzWEhUTUwsIGJvb2wgaXNIVE1M
LCBjb24KICAgICAsIG1fbmV4dFJlcXVlc3RBbmltYXRpb25GcmFtZUNhbGxiYWNrSWQoMCkKICNl
bmRpZgogewotICAgIG1fZG9jdW1lbnQgPSB0aGlzOworICAgIHNldFNjb3BlKHRoaXMpOwogCiAg
ICAgbV9wYWdlR3JvdXBVc2VyU2hlZXRDYWNoZVZhbGlkID0gZmFsc2U7CiAKQEAgLTU3Nyw3ICs1
NzgsNyBAQCBEb2N1bWVudDo6fkRvY3VtZW50KCkKICAgICAvLyBpZiB0aGUgRG9jdW1lbnRQYXJz
ZXIgb3V0bGl2ZXMgdGhlIERvY3VtZW50IGl0IHdvbid0IGNhdXNlIGJhZG5lc3MuCiAgICAgQVNT
RVJUKCFtX3BhcnNlciB8fCBtX3BhcnNlci0+cmVmQ291bnQoKSA9PSAxKTsKICAgICBkZXRhY2hQ
YXJzZXIoKTsKLSAgICBtX2RvY3VtZW50ID0gMDsKKyAgICBzZXREb2N1bWVudFB0cigwKTsKICAg
ICBtX2NhY2hlZFJlc291cmNlTG9hZGVyLmNsZWFyKCk7CiAKICAgICBtX3JlbmRlckFyZW5hLmNs
ZWFyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IDVhNzQ1ZTQ2YjAyMDY4YmE3MmVkYzFhNDdi
ODVmY2Y1OWYwYmU0OGEuLmZjNWVmM2Q5ZTQ4YmMxMzU5ZDBiOTE2OGQzZWVhMGVkYTNmNDA1OWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiQ29sbGVj
dGlvblR5cGUuaCIKICNpbmNsdWRlICJDb2xvci5oIgogI2luY2x1ZGUgIkNvbnRhaW5lck5vZGUu
aCIKKyNpbmNsdWRlICJET01TY29wZS5oIgogI2luY2x1ZGUgIkRPTVRpbWVTdGFtcC5oIgogI2lu
Y2x1ZGUgIkRvY3VtZW50T3JkZXJlZE1hcC5oIgogI2luY2x1ZGUgIkRvY3VtZW50VGltaW5nLmgi
CkBAIC00MCw2ICs0MSw3IEBACiAjaW5jbHVkZSAiVGltZXIuaCIKICNpbmNsdWRlICJWaWV3cG9y
dEFyZ3VtZW50cy5oIgogI2luY2x1ZGUgPHd0Zi9GaXhlZEFycmF5Lmg+CisjaW5jbHVkZSA8d3Rm
L0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NP
d25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgpAQCAtMjAxLDcgKzIwMyw3IEBA
IGVudW0gUGFnZXNob3dFdmVudFBlcnNpc3RlbmNlIHsKIAogZW51bSBTdHlsZVNlbGVjdG9yVXBk
YXRlRmxhZyB7IFJlY2FsY1N0eWxlSW1tZWRpYXRlbHksIERlZmVyUmVjYWxjU3R5bGUgfTsKIAot
Y2xhc3MgRG9jdW1lbnQgOiBwdWJsaWMgQ29udGFpbmVyTm9kZSwgcHVibGljIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQgeworY2xhc3MgRG9jdW1lbnQgOiBwdWJsaWMgQ29udGFpbmVyTm9kZSwgcHVi
bGljIERPTVNjb3BlLCBwdWJsaWMgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCB7CiBwdWJsaWM6CiAg
ICAgc3RhdGljIFBhc3NSZWZQdHI8RG9jdW1lbnQ+IGNyZWF0ZShGcmFtZSogZnJhbWUsIGNvbnN0
IEtVUkwmIHVybCkKICAgICB7CkBAIC0yNDIsNyArMjQ0LDYgQEAgcHVibGljOgogICAgIH0KIAog
ICAgIC8vIERPTSBtZXRob2RzICYgYXR0cmlidXRlcyBmb3IgRG9jdW1lbnQKLQogICAgIERFRklO
RV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoYWJvcnQpOwogICAgIERFRklORV9BVFRSSUJVVEVf
RVZFTlRfTElTVEVORVIoY2hhbmdlKTsKICAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RF
TkVSKGNsaWNrKTsKQEAgLTE0MDMsMjYgKzE0MDQsMzkgQEAgaW5saW5lIGJvb2wgRG9jdW1lbnQ6
OmNvbnRhaW5zTXVsdGlwbGVFbGVtZW50c1dpdGhJZChjb25zdCBBdG9taWNTdHJpbmcmIGlkKSBj
b24KICAgICByZXR1cm4gbV9lbGVtZW50c0J5SWQuY29udGFpbnNNdWx0aXBsZShpZC5pbXBsKCkp
OwogfQogICAgIAotaW5saW5lIGJvb2wgTm9kZTo6aXNEb2N1bWVudE5vZGUoKSBjb25zdAotewot
ICAgIHJldHVybiB0aGlzID09IG1fZG9jdW1lbnQ7Ci19CisvLyBGb3JlaWduIGlubGluZSBtZXRo
b2RzCisvLyAoaGVyZSBiZWNhdXNlIHRoZXkgdXNlIGEgRG9jdW1lbnQgbWV0aG9kIGJ1dCB3ZSBy
ZWFsbHkgd2FudCB0byBpbmxpbmUgdGhlbSkKIAotLy8gaGVyZSBiZWNhdXNlIGl0IHVzZXMgYSBE
b2N1bWVudCBtZXRob2QgYnV0IHdlIHJlYWxseSB3YW50IHRvIGlubGluZSBpdAotaW5saW5lIE5v
ZGU6Ok5vZGUoRG9jdW1lbnQqIGRvY3VtZW50LCBDb25zdHJ1Y3Rpb25UeXBlIHR5cGUpCi0gICAg
OiBtX2RvY3VtZW50KGRvY3VtZW50KQoraW5saW5lIE5vZGU6Ok5vZGUoRE9NU2NvcGUqIHNjb3Bl
LCBDb25zdHJ1Y3Rpb25UeXBlIHR5cGUpCisgICAgOiBtX3Njb3BlKHNjb3BlKQogICAgICwgbV9w
cmV2aW91cygwKQogICAgICwgbV9uZXh0KDApCiAgICAgLCBtX3JlbmRlcmVyKDApCiAgICAgLCBt
X25vZGVGbGFncyh0eXBlKQogewotICAgIGlmIChtX2RvY3VtZW50KQotICAgICAgICBtX2RvY3Vt
ZW50LT5zZWxmT25seVJlZigpOworICAgIGlmIChzY29wZSAmJiBzY29wZS0+ZG9jdW1lbnRQdHIo
KSkKKyAgICAgICAgc2NvcGUtPmRvY3VtZW50UHRyKCktPnNlbGZPbmx5UmVmKCk7CiAjaWYgIWRl
ZmluZWQoTkRFQlVHKSB8fCAoZGVmaW5lZChEVU1QX05PREVfU1RBVElTVElDUykgJiYgRFVNUF9O
T0RFX1NUQVRJU1RJQ1MpCiAgICAgdHJhY2tGb3JEZWJ1Z2dpbmcoKTsKICNlbmRpZgogfQogCitp
bmxpbmUgYm9vbCBOb2RlOjppc0RvY3VtZW50Tm9kZSgpIGNvbnN0Cit7CisgICAgQVNTRVJUKHRo
aXMpOworICAgIHJldHVybiBtX3Njb3BlICYmIG1fc2NvcGUtPmRvY3VtZW50UHRyKCkgJiYgbV9z
Y29wZS0+ZG9jdW1lbnRQdHIoKSA9PSB0aGlzOworfQorCitpbmxpbmUgRG9jdW1lbnQqIE5vZGU6
OmRvY3VtZW50KCkgY29uc3QKK3sKKyAgICBBU1NFUlQodGhpcyk7CisgICAgLy8gRklYTUU6IHRo
ZSBmb2xsb3dpbmcgQVNTRVJUIGlzIHVzZWZ1bCwgYnV0IHByZXZlbnRzIHRoaXMgbWV0aG9kIHRv
IGJlIHVzZWQKKyAgICAvLyB3aXRoaW4gdGhlIGNvbnN0cnVjdG9yIG9yIGRlc3RydWN0b3I6Cisg
ICAgLy8KKyAgICAvLyBBU1NFUlQoKG1fc2NvcGUgJiYgbV9zY29wZS0+ZG9jdW1lbnRQdHIoKSkg
fHwgKG5vZGVUeXBlKCkgPT0gRE9DVU1FTlRfVFlQRV9OT0RFICYmICFpbkRvY3VtZW50KCkpKTsK
KyAgICByZXR1cm4gbV9zY29wZSA/IG1fc2NvcGUtPmRvY3VtZW50UHRyKCkgOiAwOworfQorCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBEb2N1bWVudF9oCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRWRpdGluZ1RleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9t
L0VkaXRpbmdUZXh0LmNwcAppbmRleCBlNDEyYWQ2OWIzMTQxMzEzN2E2NDg0NDYwYjUwNTZhZDcy
MDI1ODEwLi5hZmQ2ZjliMzljNWY5MjNhNjg4NzNmODAxZDhmZTk4Y2RlZjY5OGM0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWRpdGluZ1RleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9FZGl0aW5nVGV4dC5jcHAKQEAgLTI3LDE0ICsyNywxNCBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLWlubGluZSBFZGl0aW5nVGV4dDo6RWRpdGluZ1RleHQoRG9jdW1lbnQqIGRv
Y3VtZW50LCBjb25zdCBTdHJpbmcmIGRhdGEpCi0gICAgOiBUZXh0KGRvY3VtZW50LCBkYXRhKQor
aW5saW5lIEVkaXRpbmdUZXh0OjpFZGl0aW5nVGV4dChET01TY29wZSogc2NvcGUsIGNvbnN0IFN0
cmluZyYgZGF0YSkKKyAgICA6IFRleHQoc2NvcGUsIGRhdGEpCiB7CiB9CiAKLVBhc3NSZWZQdHI8
RWRpdGluZ1RleHQ+IEVkaXRpbmdUZXh0OjpjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50LCBjb25z
dCBTdHJpbmcmIGRhdGEpCitQYXNzUmVmUHRyPEVkaXRpbmdUZXh0PiBFZGl0aW5nVGV4dDo6Y3Jl
YXRlKERPTVNjb3BlKiBzY29wZSwgY29uc3QgU3RyaW5nJiBkYXRhKQogewotICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgRWRpdGluZ1RleHQoZG9jdW1lbnQsIGRhdGEpKTsKKyAgICByZXR1cm4gYWRv
cHRSZWYobmV3IEVkaXRpbmdUZXh0KHNjb3BlLCBkYXRhKSk7CiB9CiAKIGJvb2wgRWRpdGluZ1Rl
eHQ6OnJlbmRlcmVySXNOZWVkZWQoUmVuZGVyU3R5bGUqKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL0VkaXRpbmdUZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWRpdGluZ1RleHQu
aAppbmRleCAwODIyM2MyMTZiZDE5Mzg2YzMzOGZkN2UyNGY2OWFlMzYyZTlkNWRkLi5iZjJiN2Q1
ZmRlZDBkMmI0NzdmNDA4MDk1Mjc3YzhmMjYzZmI0YzI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRWRpdGluZ1RleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWRpdGluZ1Rl
eHQuaApAQCAtMjcsMTIgKzI3LDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRWRp
dGluZ1RleHQgOiBwdWJsaWMgVGV4dCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8
RWRpdGluZ1RleHQ+IGNyZWF0ZShEb2N1bWVudCosIGNvbnN0IFN0cmluZyYpOworICAgIHN0YXRp
YyBQYXNzUmVmUHRyPEVkaXRpbmdUZXh0PiBjcmVhdGUoRE9NU2NvcGUqLCBjb25zdCBTdHJpbmcm
KTsKIAogcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChSZW5kZXJT
dHlsZSAqKTsKIAotICAgIEVkaXRpbmdUZXh0KERvY3VtZW50KiwgY29uc3QgU3RyaW5nJik7Cisg
ICAgRWRpdGluZ1RleHQoRE9NU2NvcGUqLCBjb25zdCBTdHJpbmcmKTsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAppbmRleCBjNjJhZTQ5YmYyNjhkZjY0
MzMxYjlhY2QwYjI1MDkxYTUxYjdiOTg4Li40ODhjOTE2YWRmYmY0MmRhYjY2OWI3YThkMDQ5MmUx
YmI4NWNiNTBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCkBAIC01Myw2ICs1Myw3IEBACiAjaW5j
bHVkZSAiUmVuZGVyTGF5ZXIuaCIKICNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCiAjaW5jbHVkZSAi
UmVuZGVyV2lkZ2V0LmgiCisjaW5jbHVkZSAiU2hhZG93Um9vdC5oIgogI2luY2x1ZGUgIlNldHRp
bmdzLmgiCiAjaW5jbHVkZSAiVGV4dEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiWE1MTmFtZXMuaCIK
QEAgLTEwODUsNyArMTA4NiwxMiBAQCB2b2lkIEVsZW1lbnQ6OnJlY2FsY1N0eWxlKFN0eWxlQ2hh
bmdlIGNoYW5nZSkKIAogTm9kZSogRWxlbWVudDo6c2hhZG93Um9vdCgpCiB7Ci0gICAgcmV0dXJu
IGhhc1JhcmVEYXRhKCkgPyByYXJlRGF0YSgpLT5tX3NoYWRvd1Jvb3QgOiAwOworICAgIGlmICgh
aGFzUmFyZURhdGEoKSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgU2hhZG93Um9vdCogc2hhZG93
Um9vdCA9IHJhcmVEYXRhKCktPm1fc2hhZG93Um9vdDsKKyAgICBpZiAoIXNoYWRvd1Jvb3QpCisg
ICAgICAgIHJldHVybiAwOworICAgIHJldHVybiBzaGFkb3dSb290LT5yb290KCk7CiB9CiAKIHZv
aWQgRWxlbWVudDo6c2V0U2hhZG93Um9vdChQYXNzUmVmUHRyPE5vZGU+IG5vZGUpCkBAIC0xMDk5
LDggKzExMDUsMTAgQEAgdm9pZCBFbGVtZW50OjpzZXRTaGFkb3dSb290KFBhc3NSZWZQdHI8Tm9k
ZT4gbm9kZSkKICAgICBpZiAoIW5ld1Jvb3QpCiAgICAgICAgIHJldHVybjsKIAotICAgIGVuc3Vy
ZVJhcmVEYXRhKCktPm1fc2hhZG93Um9vdCA9IG5ld1Jvb3QuZ2V0KCk7Ci0gICAgbmV3Um9vdC0+
c2V0U2hhZG93SG9zdCh0aGlzKTsKKyAgICBTaGFkb3dSb290KiBuZXdTaGFkb3dSb290ID0gbmV3
IFNoYWRvd1Jvb3QobmV3Um9vdC5nZXQoKSwgZG9jdW1lbnQoKSk7CisKKyAgICBlbnN1cmVSYXJl
RGF0YSgpLT5tX3NoYWRvd1Jvb3QgPSBuZXdTaGFkb3dSb290OworICAgIG5ld1NoYWRvd1Jvb3Qt
PnNldFNoYWRvd0hvc3QodGhpcyk7CiB9CiAKIHZvaWQgRWxlbWVudDo6cmVtb3ZlU2hhZG93Um9v
dCgpCkBAIC0xMTA5LDE0ICsxMTE3LDIwIEBAIHZvaWQgRWxlbWVudDo6cmVtb3ZlU2hhZG93Um9v
dCgpCiAgICAgICAgIHJldHVybjsKIAogICAgIEVsZW1lbnRSYXJlRGF0YSogZGF0YSA9IHJhcmVE
YXRhKCk7Ci0gICAgaWYgKFJlZlB0cjxOb2RlPiBvbGRSb290ID0gZGF0YS0+bV9zaGFkb3dSb290
KSB7Ci0gICAgICAgIGRhdGEtPm1fc2hhZG93Um9vdCA9IDA7Ci0gICAgICAgIGRvY3VtZW50KCkt
PnJlbW92ZUZvY3VzZWROb2RlT2ZTdWJ0cmVlKG9sZFJvb3QuZ2V0KCkpOwotICAgICAgICBvbGRS
b290LT5zZXRTaGFkb3dIb3N0KDApOwotICAgICAgICBpZiAob2xkUm9vdC0+aW5Eb2N1bWVudCgp
KQotICAgICAgICAgICAgb2xkUm9vdC0+cmVtb3ZlZEZyb21Eb2N1bWVudCgpOwotICAgICAgICBl
bHNlCi0gICAgICAgICAgICBvbGRSb290LT5yZW1vdmVkRnJvbVRyZWUodHJ1ZSk7CisgICAgU2hh
ZG93Um9vdCogc2hhZG93Um9vdCA9IGRhdGEtPm1fc2hhZG93Um9vdDsKKyAgICBpZiAoc2hhZG93
Um9vdCkgeworICAgICAgICBSZWZQdHI8Tm9kZT4gb2xkUm9vdCA9IHNoYWRvd1Jvb3QtPnJvb3Qo
KTsKKyAgICAgICAgQVNTRVJUKG9sZFJvb3QpOworICAgICAgICBpZiAob2xkUm9vdCkgeworICAg
ICAgICAgICAgZGF0YS0+bV9zaGFkb3dSb290ID0gMDsKKyAgICAgICAgICAgIGRvY3VtZW50KCkt
PnJlbW92ZUZvY3VzZWROb2RlT2ZTdWJ0cmVlKG9sZFJvb3QuZ2V0KCkpOworICAgICAgICAgICAg
c2hhZG93Um9vdC0+c2V0U2hhZG93SG9zdCgwKTsKKyAgICAgICAgICAgIGlmIChvbGRSb290LT5p
bkRvY3VtZW50KCkpCisgICAgICAgICAgICAgICAgb2xkUm9vdC0+cmVtb3ZlZEZyb21Eb2N1bWVu
dCgpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIG9sZFJvb3QtPnJlbW92ZWRG
cm9tVHJlZSh0cnVlKTsKKyAgICAgICAgfQorICAgICAgICBkZWxldGUgc2hhZG93Um9vdDsKICAg
ICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCmluZGV4IGRlNDJhNWY5OTUwM2RhZDE2NzI4MDlhZmQ0
YmNlZjZhNjI3N2ZiYjEuLjhiZTViZDU2NDFiNGJjYmM1Y2VlYmM0MTY4YzY0NzNkMjg1OGQ1YzUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL0VsZW1lbnQuaApAQCAtMzQwLDggKzM0MCw4IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIGJvb2wgaXNTcGVsbENoZWNraW5nRW5hYmxlZCgpIGNvbnN0OwogCiBwcm90ZWN0ZWQ6Ci0g
ICAgRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1l
bnQsIENvbnN0cnVjdGlvblR5cGUgdHlwZSkKLSAgICAgICAgOiBDb250YWluZXJOb2RlKGRvY3Vt
ZW50LCB0eXBlKQorICAgIEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRE9N
U2NvcGUqIHNjb3BlLCBDb25zdHJ1Y3Rpb25UeXBlIHR5cGUpCisgICAgICAgIDogQ29udGFpbmVy
Tm9kZShzY29wZSwgdHlwZSkKICAgICAgICAgLCBtX3RhZ05hbWUodGFnTmFtZSkKICAgICB7CiAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRSYXJlRGF0YS5oIGIv
U291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRSYXJlRGF0YS5oCmluZGV4IDgxOGEyYzJmMGZmOTg3
ZGM1Y2Q2M2E5NzI5NWJlYzViODBlZDRhMjUuLjE0Y2VlZjJhMWZlMjk1MmE3MDdkMDU3NzU1Yjgy
NzkzZGI2MzY3MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50UmFyZURh
dGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFJhcmVEYXRhLmgKQEAgLTMwLDYg
KzMwLDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBTaGFkb3dSb290OworCiBj
bGFzcyBFbGVtZW50UmFyZURhdGEgOiBwdWJsaWMgTm9kZVJhcmVEYXRhIHsKIHB1YmxpYzoKICAg
ICBFbGVtZW50UmFyZURhdGEoKTsKQEAgLTQyLDcgKzQ0LDcgQEAgcHVibGljOgogCiAgICAgSW50
U2l6ZSBtX21pbmltdW1TaXplRm9yUmVzaXppbmc7CiAgICAgUmVmUHRyPFJlbmRlclN0eWxlPiBt
X2NvbXB1dGVkU3R5bGU7Ci0gICAgTm9kZSogbV9zaGFkb3dSb290OworICAgIFNoYWRvd1Jvb3Qq
IG1fc2hhZG93Um9vdDsKIAogICAgIE93blB0cjxEYXRhc2V0RE9NU3RyaW5nTWFwPiBtX2RhdGFz
ZXRET01TdHJpbmdNYXA7CiAgICAgT3duUHRyPENsYXNzTGlzdD4gbV9jbGFzc0xpc3Q7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRW50aXR5UmVmZXJlbmNlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FbnRpdHlSZWZlcmVuY2UuY3BwCmluZGV4IDcyOTQ0ZWM1MjEwNzIwZmNkN2M2
NGY3NzFiY2NmNjc3MTAwMDNjZDMuLjlmMGMyNzE0NzJiZWZlMGQ2ZjYxZWYzMmQzN2Y1ZTYwMmU3
OWRlNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbnRpdHlSZWZlcmVuY2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbnRpdHlSZWZlcmVuY2UuY3BwCkBAIC0yNSwxNSAr
MjUsMTUgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1pbmxpbmUgRW50aXR5UmVmZXJlbmNl
OjpFbnRpdHlSZWZlcmVuY2UoRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIGVudGl0
eU5hbWUpCi0gICAgOiBDb250YWluZXJOb2RlKGRvY3VtZW50KQoraW5saW5lIEVudGl0eVJlZmVy
ZW5jZTo6RW50aXR5UmVmZXJlbmNlKERPTVNjb3BlKiBzY29wZSwgY29uc3QgU3RyaW5nJiBlbnRp
dHlOYW1lKQorICAgIDogQ29udGFpbmVyTm9kZShzY29wZSkKICAgICAsIG1fZW50aXR5TmFtZShl
bnRpdHlOYW1lKQogewogfQogCi1QYXNzUmVmUHRyPEVudGl0eVJlZmVyZW5jZT4gRW50aXR5UmVm
ZXJlbmNlOjpjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIGVudGl0eU5h
bWUpCitQYXNzUmVmUHRyPEVudGl0eVJlZmVyZW5jZT4gRW50aXR5UmVmZXJlbmNlOjpjcmVhdGUo
RE9NU2NvcGUqIHNjb3BlLCBjb25zdCBTdHJpbmcmIGVudGl0eU5hbWUpCiB7Ci0gICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBFbnRpdHlSZWZlcmVuY2UoZG9jdW1lbnQsIGVudGl0eU5hbWUpKTsKKyAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IEVudGl0eVJlZmVyZW5jZShzY29wZSwgZW50aXR5TmFtZSkp
OwogfQogCiBTdHJpbmcgRW50aXR5UmVmZXJlbmNlOjpub2RlTmFtZSgpIGNvbnN0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRW50aXR5UmVmZXJlbmNlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRW50aXR5UmVmZXJlbmNlLmgKaW5kZXggN2E2ZjZjMzZiYWZhOGY5MjNiZDE4YWZmMzRi
NjhiMzc2YzNmNTkyNy4uMzViOTYzMTIyZDYyYWI3N2JhODYzMTlkZWU5Mjk3MDIwN2M4M2ZiMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VudGl0eVJlZmVyZW5jZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FbnRpdHlSZWZlcmVuY2UuaApAQCAtMjgsMTAgKzI4LDEwIEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRW50aXR5UmVmZXJlbmNlIDogcHVibGljIENvbnRh
aW5lck5vZGUgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEVudGl0eVJlZmVyZW5j
ZT4gY3JlYXRlKERvY3VtZW50KiwgY29uc3QgU3RyaW5nJiBlbnRpdHlOYW1lKTsKKyAgICBzdGF0
aWMgUGFzc1JlZlB0cjxFbnRpdHlSZWZlcmVuY2U+IGNyZWF0ZShET01TY29wZSosIGNvbnN0IFN0
cmluZyYgZW50aXR5TmFtZSk7CiAKIHByaXZhdGU6Ci0gICAgRW50aXR5UmVmZXJlbmNlKERvY3Vt
ZW50KiwgY29uc3QgU3RyaW5nJiBlbnRpdHlOYW1lKTsKKyAgICBFbnRpdHlSZWZlcmVuY2UoRE9N
U2NvcGUqLCBjb25zdCBTdHJpbmcmIGVudGl0eU5hbWUpOwogCiAgICAgdmlydHVhbCBTdHJpbmcg
bm9kZU5hbWUoKSBjb25zdDsKICAgICB2aXJ0dWFsIE5vZGVUeXBlIG5vZGVUeXBlKCkgY29uc3Q7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vTm9kZS5jcHAKaW5kZXggZmVjMmNmZmU2MzdmOTlmYjUxZmViZGI0OWNlNjZmMDU5ZmM5
NjVmNy4uOGJhMWI0ZTQxY2MyYWIzNjY0NTk4MDZkMjFhYWVlNDM4YmI5NzA1OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9O
b2RlLmNwcApAQCAtMzczLDExICszNzMsMTMgQEAgTm9kZTo6fk5vZGUoKQogICAgIGxpdmVOb2Rl
U2V0LnJlbW92ZSh0aGlzKTsKICNlbmRpZgogCisgICAgRG9jdW1lbnQqIGRvYyA9IGRvY3VtZW50
KCk7CisKICAgICBpZiAoIWhhc1JhcmVEYXRhKCkpCiAgICAgICAgIEFTU0VSVCghTm9kZVJhcmVE
YXRhOjpyYXJlRGF0YU1hcCgpLmNvbnRhaW5zKHRoaXMpKTsKICAgICBlbHNlIHsKLSAgICAgICAg
aWYgKG1fZG9jdW1lbnQgJiYgcmFyZURhdGEoKS0+bm9kZUxpc3RzKCkpCi0gICAgICAgICAgICBt
X2RvY3VtZW50LT5yZW1vdmVOb2RlTGlzdENhY2hlKCk7CisgICAgICAgIGlmIChkb2MgJiYgcmFy
ZURhdGEoKS0+bm9kZUxpc3RzKCkpCisgICAgICAgICAgICBkb2MtPnJlbW92ZU5vZGVMaXN0Q2Fj
aGUoKTsKICAgICAgICAgCiAgICAgICAgIE5vZGVSYXJlRGF0YTo6Tm9kZVJhcmVEYXRhTWFwJiBk
YXRhTWFwID0gTm9kZVJhcmVEYXRhOjpyYXJlRGF0YU1hcCgpOwogICAgICAgICBOb2RlUmFyZURh
dGE6Ok5vZGVSYXJlRGF0YU1hcDo6aXRlcmF0b3IgaXQgPSBkYXRhTWFwLmZpbmQodGhpcyk7CkBA
IC0zODksMTYgKzM5MSwxNiBAQCBOb2RlOjp+Tm9kZSgpCiAgICAgaWYgKHJlbmRlcmVyKCkpCiAg
ICAgICAgIGRldGFjaCgpOwogCi0gICAgaWYgKEFYT2JqZWN0Q2FjaGU6OmFjY2Vzc2liaWxpdHlF
bmFibGVkKCkgJiYgbV9kb2N1bWVudCAmJiBtX2RvY3VtZW50LT5heE9iamVjdENhY2hlRXhpc3Rz
KCkpCi0gICAgICAgIG1fZG9jdW1lbnQtPmF4T2JqZWN0Q2FjaGUoKS0+cmVtb3ZlTm9kZUZvclVz
ZSh0aGlzKTsKKyAgICBpZiAoQVhPYmplY3RDYWNoZTo6YWNjZXNzaWJpbGl0eUVuYWJsZWQoKSAm
JiBkb2MgJiYgZG9jLT5heE9iamVjdENhY2hlRXhpc3RzKCkpCisgICAgICAgIGRvYy0+YXhPYmpl
Y3RDYWNoZSgpLT5yZW1vdmVOb2RlRm9yVXNlKHRoaXMpOwogICAgIAogICAgIGlmIChtX3ByZXZp
b3VzKQogICAgICAgICBtX3ByZXZpb3VzLT5zZXROZXh0U2libGluZygwKTsKICAgICBpZiAobV9u
ZXh0KQogICAgICAgICBtX25leHQtPnNldFByZXZpb3VzU2libGluZygwKTsKIAotICAgIGlmICht
X2RvY3VtZW50KQotICAgICAgICBtX2RvY3VtZW50LT5zZWxmT25seURlcmVmKCk7CisgICAgaWYg
KGRvYykKKyAgICAgICAgZG9jLT5zZWxmT25seURlcmVmKCk7CiB9CiAKICNpZmRlZiBOREVCVUcK
QEAgLTQyOCwzNCArNDMwLDM5IEBAIHN0YXRpYyB2b2lkIHNldERpZE1vdmVUb05ld093bmVyRG9j
dW1lbnRXYXNDYWxsZWQoYm9vbCB3YXNDYWxsZWQpCiAgICAgCiAjZW5kaWYKICAgICAKLXZvaWQg
Tm9kZTo6c2V0RG9jdW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50KQordm9pZCBOb2RlOjpzZXREb2N1
bWVudChEb2N1bWVudCogbmV3RG9jdW1lbnQpCiB7Ci0gICAgQVNTRVJUKCFpbkRvY3VtZW50KCkg
fHwgbV9kb2N1bWVudCA9PSBkb2N1bWVudCk7Ci0gICAgaWYgKGluRG9jdW1lbnQoKSB8fCBtX2Rv
Y3VtZW50ID09IGRvY3VtZW50KQorICAgIEFTU0VSVCghaXNEb2N1bWVudE5vZGUoKSk7CisgICAg
RG9jdW1lbnQqIGN1cnJlbnREb2N1bWVudCA9IGRvY3VtZW50KCk7CisKKyAgICBBU1NFUlQoIWlu
RG9jdW1lbnQoKSB8fCBjdXJyZW50RG9jdW1lbnQgPT0gbmV3RG9jdW1lbnQpOworICAgIGlmIChp
bkRvY3VtZW50KCkgfHwgY3VycmVudERvY3VtZW50ID09IG5ld0RvY3VtZW50KQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBkb2N1bWVudC0+c2VsZk9ubHlSZWYoKTsKKyAgICBuZXdEb2N1bWVudC0+
c2VsZk9ubHlSZWYoKTsKIAogICAgIHNldFdpbGxNb3ZlVG9OZXdPd25lckRvY3VtZW50V2FzQ2Fs
bGVkKGZhbHNlKTsKICAgICB3aWxsTW92ZVRvTmV3T3duZXJEb2N1bWVudCgpOwogICAgIEFTU0VS
VCh3aWxsTW92ZVRvTmV3T3duZXJEb2N1bWVudFdhc0NhbGxlZCk7CiAKICNpZiBVU0UoSlNDKQot
ICAgIHVwZGF0ZURPTU5vZGVEb2N1bWVudCh0aGlzLCBtX2RvY3VtZW50LCBkb2N1bWVudCk7Cisg
ICAgdXBkYXRlRE9NTm9kZURvY3VtZW50KHRoaXMsIGN1cnJlbnREb2N1bWVudCwgbmV3RG9jdW1l
bnQpOwogI2VuZGlmCiAKICAgICBpZiAoaGFzUmFyZURhdGEoKSAmJiByYXJlRGF0YSgpLT5ub2Rl
TGlzdHMoKSkgewotICAgICAgICBpZiAobV9kb2N1bWVudCkKLSAgICAgICAgICAgIG1fZG9jdW1l
bnQtPnJlbW92ZU5vZGVMaXN0Q2FjaGUoKTsKLSAgICAgICAgZG9jdW1lbnQtPmFkZE5vZGVMaXN0
Q2FjaGUoKTsKKyAgICAgICAgaWYgKGN1cnJlbnREb2N1bWVudCkKKyAgICAgICAgICAgIGN1cnJl
bnREb2N1bWVudC0+cmVtb3ZlTm9kZUxpc3RDYWNoZSgpOworICAgICAgICBuZXdEb2N1bWVudC0+
YWRkTm9kZUxpc3RDYWNoZSgpOwogICAgIH0KIAotICAgIGlmIChtX2RvY3VtZW50KSB7Ci0gICAg
ICAgIG1fZG9jdW1lbnQtPm1vdmVOb2RlSXRlcmF0b3JzVG9OZXdEb2N1bWVudCh0aGlzLCBkb2N1
bWVudCk7Ci0gICAgICAgIG1fZG9jdW1lbnQtPnNlbGZPbmx5RGVyZWYoKTsKKyAgICBpZiAoY3Vy
cmVudERvY3VtZW50KSB7CisgICAgICAgIGN1cnJlbnREb2N1bWVudC0+bW92ZU5vZGVJdGVyYXRv
cnNUb05ld0RvY3VtZW50KHRoaXMsIG5ld0RvY3VtZW50KTsKKyAgICAgICAgY3VycmVudERvY3Vt
ZW50LT5zZWxmT25seURlcmVmKCk7CiAgICAgfQogCi0gICAgbV9kb2N1bWVudCA9IGRvY3VtZW50
OworICAgIC8vIE9ubHkgc2V0IHRoZSBzY29wZSBwb2ludGVyIHRvIHRoZSBuZXcgZG9jdW1lbnQg
aWYgd2UgYXJlbid0IGluc2lkZSBhIHNoYWRvdyBzY29wZS4KKyAgICBpZiAoIW1fc2NvcGUgfHwg
bV9zY29wZS0+aXNEb2N1bWVudFNjb3BlKCkpCisgICAgICAgIG1fc2NvcGUgPSBuZXdEb2N1bWVu
dDsKIAogICAgIHNldERpZE1vdmVUb05ld093bmVyRG9jdW1lbnRXYXNDYWxsZWQoZmFsc2UpOwog
ICAgIGRpZE1vdmVUb05ld093bmVyRG9jdW1lbnQoKTsKQEAgLTQ5Nyw3ICs1MDQsNiBAQCB2b2lk
IE5vZGU6OnNldFNoYWRvd0hvc3QoRWxlbWVudCogaG9zdCkKICAgICAgICAgc2V0RmxhZyhJc1No
YWRvd1Jvb3RGbGFnKTsKICAgICBlbHNlCiAgICAgICAgIGNsZWFyRmxhZyhJc1NoYWRvd1Jvb3RG
bGFnKTsKLQogICAgIHNldFBhcmVudChob3N0KTsKIH0KIApAQCAtODc5LDcgKzg4NSw3IEBAIHZv
aWQgTm9kZTo6cmVnaXN0ZXJEeW5hbWljTm9kZUxpc3QoRHluYW1pY05vZGVMaXN0KiBsaXN0KQog
ICAgIGlmICghZGF0YS0+bm9kZUxpc3RzKCkpIHsKICAgICAgICAgZGF0YS0+c2V0Tm9kZUxpc3Rz
KE5vZGVMaXN0c05vZGVEYXRhOjpjcmVhdGUoKSk7CiAgICAgICAgIGRvY3VtZW50KCktPmFkZE5v
ZGVMaXN0Q2FjaGUoKTsKLSAgICB9IGVsc2UgaWYgKCFtX2RvY3VtZW50IHx8ICFtX2RvY3VtZW50
LT5oYXNOb2RlTGlzdENhY2hlcygpKSB7CisgICAgfSBlbHNlIGlmICghZG9jdW1lbnQoKSB8fCAh
ZG9jdW1lbnQoKS0+aGFzTm9kZUxpc3RDYWNoZXMoKSkgewogICAgICAgICAvLyBXZSBoYXZlbid0
IGJlZW4gcmVjZWl2aW5nIG5vdGlmaWNhdGlvbnMgd2hpbGUgdGhlcmUgd2VyZSBubyByZWdpc3Rl
cmVkIGxpc3RzLCBzbyB0aGUgY2FjaGUgaXMgaW52YWxpZCBub3cuCiAgICAgICAgIGRhdGEtPm5v
ZGVMaXN0cygpLT5pbnZhbGlkYXRlQ2FjaGVzKCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL05vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKaW5kZXggNzRl
MWNjNDdmZjhhZWJlYjFlMjYwNmQ2MWFlYWY1OTA4ODcwNjI3Ny4uY2VmY2VhNjJmNDVkZGY1NDUy
OGNmZTZmYzEyY2RhYzk4MzVjMzk3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05v
ZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCkBAIC00Niw2ICs0Niw3IEBAIGNs
YXNzIEF0dHJpYnV0ZTsKIGNsYXNzIENsYXNzTm9kZUxpc3Q7CiBjbGFzcyBDb250YWluZXJOb2Rl
OwogY2xhc3MgRG9jdW1lbnQ7CitjbGFzcyBET01TY29wZTsKIGNsYXNzIER5bmFtaWNOb2RlTGlz
dDsKIGNsYXNzIEVsZW1lbnQ7CiBjbGFzcyBFdmVudDsKQEAgLTcwLDEwICs3MSwxMCBAQCBjbGFz
cyBSZW5kZXJCb3g7CiBjbGFzcyBSZW5kZXJCb3hNb2RlbE9iamVjdDsKIGNsYXNzIFJlbmRlck9i
amVjdDsKIGNsYXNzIFJlbmRlclN0eWxlOworY2xhc3MgU2hhZG93Um9vdDsKIGNsYXNzIFRhZ05v
ZGVMaXN0OwogCiB0eXBlZGVmIGludCBFeGNlcHRpb25Db2RlOwotCiBjb25zdCBpbnQgbm9kZVN0
eWxlQ2hhbmdlU2hpZnQgPSAyNTsKIAogLy8gU3ludGhldGljU3R5bGVDaGFuZ2UgbWVhbnMgdGhh
dCB3ZSBuZWVkIHRvIGdvIHRocm91Z2ggdGhlIGVudGlyZSBzdHlsZSBjaGFuZ2UgbG9naWMgZXZl
biB0aG91Z2gKQEAgLTkzLDYgKzk0LDggQEAgZW51bSBFdmVudERpc3BhdGNoQmVoYXZpb3Igewog
CiBjbGFzcyBOb2RlIDogcHVibGljIEV2ZW50VGFyZ2V0LCBwdWJsaWMgVHJlZVNoYXJlZDxDb250
YWluZXJOb2RlPiwgcHVibGljIFNjcmlwdFdyYXBwYWJsZSB7CiAgICAgZnJpZW5kIGNsYXNzIERv
Y3VtZW50OworICAgIGZyaWVuZCBjbGFzcyBTaGFkb3dSb290OworCiBwdWJsaWM6CiAgICAgZW51
bSBOb2RlVHlwZSB7CiAgICAgICAgIEVMRU1FTlRfTk9ERSA9IDEsCkBAIC0zMzcsMTggKzM0MCwx
NiBAQCBwdWJsaWM6CiAKICAgICB1bnNpZ25lZCBub2RlSW5kZXgoKSBjb25zdDsKIAorICAgIC8v
IFJldHVybnMgdGhlIGNvbnRhaW5pbmcgc2NvcGUsIHdoaWNoIGNhbiBiZSBhIERvY3VtZW50IG9y
IFNoYWRvd1Jvb3QuCisgICAgRE9NU2NvcGUqIHNjb3BlKCkgY29uc3QgeyByZXR1cm4gbV9zY29w
ZTsgfQorCiAgICAgLy8gUmV0dXJucyB0aGUgRE9NIG93bmVyRG9jdW1lbnQgYXR0cmlidXRlLiBU
aGlzIG1ldGhvZCBuZXZlciByZXR1cm5zIE5VTEwsIGV4Y2VwdCBpbiB0aGUgY2FzZSAKICAgICAv
LyBvZiAoMSkgYSBEb2N1bWVudCBub2RlIG9yICgyKSBhIERvY3VtZW50VHlwZSBub2RlIHRoYXQg
aXMgbm90IHVzZWQgd2l0aCBhbnkgRG9jdW1lbnQgeWV0LiAKICAgICB2aXJ0dWFsIERvY3VtZW50
KiBvd25lckRvY3VtZW50KCkgY29uc3Q7CiAKICAgICAvLyBSZXR1cm5zIHRoZSBkb2N1bWVudCBh
c3NvY2lhdGVkIHdpdGggdGhpcyBub2RlLiBUaGlzIG1ldGhvZCBuZXZlciByZXR1cm5zIE5VTEws
IGV4Y2VwdCBpbiB0aGUgY2FzZSAKICAgICAvLyBvZiBhIERvY3VtZW50VHlwZSBub2RlIHRoYXQg
aXMgbm90IHVzZWQgd2l0aCBhbnkgRG9jdW1lbnQgeWV0LiBBIERvY3VtZW50IG5vZGUgcmV0dXJu
cyBpdHNlbGYuCi0gICAgRG9jdW1lbnQqIGRvY3VtZW50KCkgY29uc3QKLSAgICB7Ci0gICAgICAg
IEFTU0VSVCh0aGlzKTsKLSAgICAgICAgQVNTRVJUKG1fZG9jdW1lbnQgfHwgKG5vZGVUeXBlKCkg
PT0gRE9DVU1FTlRfVFlQRV9OT0RFICYmICFpbkRvY3VtZW50KCkpKTsKLSAgICAgICAgcmV0dXJu
IG1fZG9jdW1lbnQ7Ci0gICAgfQorICAgIERvY3VtZW50KiBkb2N1bWVudCgpIGNvbnN0OwogCiAg
ICAgLy8gRG8gbm90IHVzZSB0aGlzIG1ldGhvZCB0byBjaGFuZ2UgdGhlIGRvY3VtZW50IG9mIGEg
bm9kZSB1bnRpbCBhZnRlciB0aGUgbm9kZSBoYXMgYmVlbgogICAgIC8vIHJlbW92ZWQgZnJvbSBp
dHMgcHJldmlvdXMgZG9jdW1lbnQuCkBAIC0zNTgsNyArMzU5LDcgQEAgcHVibGljOgogICAgIC8v
IG5vZGUgdHJlZSwgZmFsc2Ugb3RoZXJ3aXNlLgogICAgIGJvb2wgaW5Eb2N1bWVudCgpIGNvbnN0
IAogICAgIHsgCi0gICAgICAgIEFTU0VSVChtX2RvY3VtZW50IHx8ICFnZXRGbGFnKEluRG9jdW1l
bnRGbGFnKSk7CisgICAgICAgIEFTU0VSVChkb2N1bWVudCgpIHx8ICFnZXRGbGFnKEluRG9jdW1l
bnRGbGFnKSk7CiAgICAgICAgIHJldHVybiBnZXRGbGFnKEluRG9jdW1lbnRGbGFnKTsKICAgICB9
CiAKQEAgLTU4OCw2ICs1ODksMTMgQEAgcHJpdmF0ZToKICAgICAgICAgSW5BY3RpdmVDaGFpbkZs
YWcgPSAxIDw8IDE1LAogICAgICAgICBJbkRldGFjaEZsYWcgPSAxIDw8IDE2LAogICAgICAgICBI
YXNSYXJlRGF0YUZsYWcgPSAxIDw8IDE3LAorICAgICAgICAvLyBGSVhNRTogV2hldGhlciBvciBu
b3QgYSBub2RlIGlzIHdpdGhpbiBhIHNoYWRvdyB0cmVlIHNob3VsZCBiZSBkaXNjZXJuYWJsZSBi
eSBpdHMgc2NvcGUuCisgICAgICAgIC8vIEhvd2V2ZXIsIGFzIHRoZSBjb2RlIGlzIGN1cnJlbnRs
eSB3cml0dGVuLCBhIGZldyBzaGFkb3cgcm9vZCBub2RlcyBhcmUgY3JlYXRlZCBhbmQgaGF2ZQor
ICAgICAgICAvLyB0aGVpciBwYXJlbnQgcG9pbnRlciAtIGFjdGluZyBhcyBhIGhvc3QgZWxlbWVu
dCBwb2ludGVyIC0gc2V0IGJlZm9yZSB0aGV5IGFyZSBpbnNlcnRlZAorICAgICAgICAvLyBpbnRv
IHRoZSB0cmVlLiBUaGlzIGluIHR1cm4gbGVhZHMgdG8gZmFsc2UgcG9zaXRpdmVzIGluIHZhcmlv
dXMgQVNTRVJUcywgYmVjYXVzZSB0aGUKKyAgICAgICAgLy8gY29kZSAnYXNzdW1lcycgaXQncyBh
IHJlZ3VsYXIgcGFyZW50LgorICAgICAgICAvLyBUaGVyZWZvcmUgd2UgY2FuJ3QgeWV0IGdldCBy
aWQgb2YgdGhpcyBmbGFnIGhlcmUgdW50aWwgdGhlIHNoYWRvdyByb290IHJlZmFjdG9yaW5nCisg
ICAgICAgIC8vIGFsbG93cyB1cyB0byBkbyBhd2F5IHdpdGggdGhpcyBkdWFsLXVzZSBvZiB0aGUg
cGFyZW50IHBvaW50ZXIuCiAgICAgICAgIElzU2hhZG93Um9vdEZsYWcgPSAxIDw8IDE4LAogCiAg
ICAgICAgIC8vIFRoZXNlIGJpdHMgYXJlIHVzZWQgYnkgZGVyaXZlZCBjbGFzc2VzLCBwdWxsZWQg
dXAgaGVyZSBzbyB0aGV5IGNhbgpAQCAtNjI4LDcgKzYzNiw5IEBAIHByb3RlY3RlZDoKICAgICAg
ICAgQ3JlYXRlSFRNTEVsZW1lbnQgPSBDcmVhdGVTdHlsZWRFbGVtZW50IHwgSXNIVE1MRmxhZywg
CiAgICAgICAgIENyZWF0ZVNWR0VsZW1lbnQgPSBDcmVhdGVTdHlsZWRFbGVtZW50IHwgSXNTVkdG
bGFnLCAKICAgICB9OwotICAgIE5vZGUoRG9jdW1lbnQqLCBDb25zdHJ1Y3Rpb25UeXBlKTsKKyAg
ICBOb2RlKERPTVNjb3BlKiwgQ29uc3RydWN0aW9uVHlwZSk7CisKKyAgICB2b2lkIHNldFNjb3Bl
KERPTVNjb3BlKiBzY29wZSkgeyBtX3Njb3BlID0gc2NvcGU7IH0KIAogICAgIHZpcnR1YWwgdm9p
ZCB3aWxsTW92ZVRvTmV3T3duZXJEb2N1bWVudCgpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRNb3Zl
VG9OZXdPd25lckRvY3VtZW50KCk7CkBAIC02NzQsNyArNjg0LDcgQEAgcHJpdmF0ZToKIAogICAg
IHZvaWQgdHJhY2tGb3JEZWJ1Z2dpbmcoKTsKIAotICAgIERvY3VtZW50KiBtX2RvY3VtZW50Owor
ICAgIERPTVNjb3BlKiBtX3Njb3BlOwogICAgIE5vZGUqIG1fcHJldmlvdXM7CiAgICAgTm9kZSog
bV9uZXh0OwogICAgIFJlbmRlck9iamVjdCogbV9yZW5kZXJlcjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Ob3RhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm90YXRpb24u
Y3BwCmluZGV4IDRiM2FiMjg5YTk5MDllODZiMzMxODMxYTJjYWMxMDQyMzcxNzYzZDcuLjgwMjAy
NzNmNDY4MTFhNzFlYTY5NjdlYjhiMmQ5OWI2ZDgzNzE4MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Ob3RhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vdGF0aW9u
LmNwcApAQCAtMjUsOCArMjUsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLU5vdGF0aW9u
OjpOb3RhdGlvbihEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3Qg
U3RyaW5nJiBwdWJsaWNJZCwgY29uc3QgU3RyaW5nJiBzeXN0ZW1JZCkKLSAgICA6IENvbnRhaW5l
ck5vZGUoZG9jdW1lbnQpCitOb3RhdGlvbjo6Tm90YXRpb24oRE9NU2NvcGUqIHNjb3BlLCBjb25z
dCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgcHVibGljSWQsIGNvbnN0IFN0cmluZyYgc3lz
dGVtSWQpCisgICAgOiBDb250YWluZXJOb2RlKHNjb3BlKQogICAgICwgbV9uYW1lKG5hbWUpCiAg
ICAgLCBtX3B1YmxpY0lkKHB1YmxpY0lkKQogICAgICwgbV9zeXN0ZW1JZChzeXN0ZW1JZCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob3RhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUv
ZG9tL05vdGF0aW9uLmgKaW5kZXggNTQ3YzllNzQ0ZTg3NmQ1MmQzMWIyNTI4YWU1OWY0ZDk0Yzkz
ZTk5Zi4uYjU4ZWM2NmQ3OWY5MzJhNTg1MWM3ZGYyZmExYjdmMzA0YjkzZGVmNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL05vdGF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L05vdGF0aW9uLmgKQEAgLTM0LDcgKzM0LDcgQEAgcHVibGljOgogICAgIGNvbnN0IFN0cmluZyYg
c3lzdGVtSWQoKSBjb25zdCB7IHJldHVybiBtX3N5c3RlbUlkOyB9CiAKIHByaXZhdGU6Ci0gICAg
Tm90YXRpb24oRG9jdW1lbnQqLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgcHVi
bGljSWQsIGNvbnN0IFN0cmluZyYgc3lzdGVtSWQpOworICAgIE5vdGF0aW9uKERPTVNjb3BlKiwg
Y29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHB1YmxpY0lkLCBjb25zdCBTdHJpbmcm
IHN5c3RlbUlkKTsKIAogICAgIHZpcnR1YWwgU3RyaW5nIG5vZGVOYW1lKCkgY29uc3Q7CiAgICAg
dmlydHVhbCBOb2RlVHlwZSBub2RlVHlwZSgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
UHJvY2Vzc2luZ0luc3RydWN0aW9uLmNwcAppbmRleCA1NDRkNzg5OGEyMDJmZmEwNGE5MjUwMzg2
MzdhZDdhYzU3NzhlZTUwLi5lMTk5OWI5NTc4YTdhNThjNjA5MWNkMjQxZTk4ZDYyY2U0ZTMyNzBh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUHJvY2Vzc2luZ0luc3RydWN0aW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUHJvY2Vzc2luZ0luc3RydWN0aW9uLmNwcApAQCAt
MzUsOCArMzUsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWlubGluZSBQcm9jZXNzaW5n
SW5zdHJ1Y3Rpb246OlByb2Nlc3NpbmdJbnN0cnVjdGlvbihEb2N1bWVudCogZG9jdW1lbnQsIGNv
bnN0IFN0cmluZyYgdGFyZ2V0LCBjb25zdCBTdHJpbmcmIGRhdGEpCi0gICAgOiBDb250YWluZXJO
b2RlKGRvY3VtZW50KQoraW5saW5lIFByb2Nlc3NpbmdJbnN0cnVjdGlvbjo6UHJvY2Vzc2luZ0lu
c3RydWN0aW9uKERPTVNjb3BlKiBzY29wZSwgY29uc3QgU3RyaW5nJiB0YXJnZXQsIGNvbnN0IFN0
cmluZyYgZGF0YSkKKyAgICA6IENvbnRhaW5lck5vZGUoc2NvcGUpCiAgICAgLCBtX3RhcmdldCh0
YXJnZXQpCiAgICAgLCBtX2RhdGEoZGF0YSkKICAgICAsIG1fY2FjaGVkU2hlZXQoMCkKQEAgLTQ5
LDkgKzQ5LDkgQEAgaW5saW5lIFByb2Nlc3NpbmdJbnN0cnVjdGlvbjo6UHJvY2Vzc2luZ0luc3Ry
dWN0aW9uKERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgU3QKIHsKIH0KIAotUGFzc1JlZlB0cjxQ
cm9jZXNzaW5nSW5zdHJ1Y3Rpb24+IFByb2Nlc3NpbmdJbnN0cnVjdGlvbjo6Y3JlYXRlKERvY3Vt
ZW50KiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiB0YXJnZXQsIGNvbnN0IFN0cmluZyYgZGF0YSkK
K1Bhc3NSZWZQdHI8UHJvY2Vzc2luZ0luc3RydWN0aW9uPiBQcm9jZXNzaW5nSW5zdHJ1Y3Rpb246
OmNyZWF0ZShET01TY29wZSogc2NvcGUsIGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBjb25zdCBTdHJp
bmcmIGRhdGEpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBQcm9jZXNzaW5nSW5zdHJ1Y3Rp
b24oZG9jdW1lbnQsIHRhcmdldCwgZGF0YSkpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgUHJv
Y2Vzc2luZ0luc3RydWN0aW9uKHNjb3BlLCB0YXJnZXQsIGRhdGEpKTsKIH0KIAogUHJvY2Vzc2lu
Z0luc3RydWN0aW9uOjp+UHJvY2Vzc2luZ0luc3RydWN0aW9uKCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uaAppbmRleCBmZGIwZWM5ZTNkY2IyODY1ZDMyMTI2MWQw
NTI5YTI3ZjRhZDQ0NjNjLi5hZDUwYTA2MDg4Zjg4Yjg4ODM4N2JlZTA4OTYyNzU1YTJmMjEzY2Ux
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUHJvY2Vzc2luZ0luc3RydWN0aW9uLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5oCkBAIC0zMyw3
ICszMyw3IEBAIGNsYXNzIENTU1N0eWxlU2hlZXQ7CiAKIGNsYXNzIFByb2Nlc3NpbmdJbnN0cnVj
dGlvbiA6IHB1YmxpYyBDb250YWluZXJOb2RlLCBwcml2YXRlIENhY2hlZFJlc291cmNlQ2xpZW50
IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24+
IGNyZWF0ZShEb2N1bWVudCosIGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBjb25zdCBTdHJpbmcmIGRh
dGEpOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFByb2Nlc3NpbmdJbnN0cnVjdGlvbj4gY3JlYXRl
KERPTVNjb3BlKiwgY29uc3QgU3RyaW5nJiB0YXJnZXQsIGNvbnN0IFN0cmluZyYgZGF0YSk7CiAg
ICAgdmlydHVhbCB+UHJvY2Vzc2luZ0luc3RydWN0aW9uKCk7CiAKICAgICBjb25zdCBTdHJpbmcm
IHRhcmdldCgpIGNvbnN0IHsgcmV0dXJuIG1fdGFyZ2V0OyB9CkBAIC01Myw3ICs1Myw3IEBAIHB1
YmxpYzoKICNlbmRpZgogCiBwcml2YXRlOgotICAgIFByb2Nlc3NpbmdJbnN0cnVjdGlvbihEb2N1
bWVudCosIGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBjb25zdCBTdHJpbmcmIGRhdGEpOworICAgIFBy
b2Nlc3NpbmdJbnN0cnVjdGlvbihET01TY29wZSosIGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBjb25z
dCBTdHJpbmcmIGRhdGEpOwogCiAgICAgdmlydHVhbCBTdHJpbmcgbm9kZU5hbWUoKSBjb25zdDsK
ICAgICB2aXJ0dWFsIE5vZGVUeXBlIG5vZGVUeXBlKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93
Um9vdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNjFlMWI0OWM2OWRjY2FlMzk3Mjk5MzAyZjI1ZTBhNDAwMWI3
MWEzMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNw
cApAQCAtMCwwICsxLDU3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
CisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhl
IG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
CisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAq
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNoYWRvd1Jv
b3QuaCIKKworI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiRWxlbWVudC5oIgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK3ZvaWQgU2hhZG93Um9vdDo6c2V0U2hhZG93SG9zdChFbGVt
ZW50KiBob3N0KQoreworICAgIEFTU0VSVChtX3Jvb3QpOworICAgIGlmIChtX3Jvb3QpCisgICAg
ICAgIG1fcm9vdC0+c2V0U2hhZG93SG9zdChob3N0KTsKK30KKwordm9pZCBTaGFkb3dSb290Ojpz
ZXREb2N1bWVudFJlY3Vyc2l2ZWx5KERvY3VtZW50KiBkb2N1bWVudCkKK3sKKyAgICBpZiAoZG9j
dW1lbnRQdHIoKSA9PSBkb2N1bWVudCkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIHNldERv
Y3VtZW50UHRyKGRvY3VtZW50KTsKKyAgICBpZiAobV9yb290KQorICAgICAgICBtX3Jvb3QtPnNl
dERvY3VtZW50UmVjdXJzaXZlbHkoZG9jdW1lbnQpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlOworCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5oIGIvU291
cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NDRjNzE4NzQ4MDE1MDQ5
ZmRhNjBiNzkyMjI4MzQ5Y2JlZTA4YWQ1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL1NoYWRvd1Jvb3QuaApAQCAtMCwwICsxLDY4IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAq
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBTaGFkb3dSb290X2gK
KyNkZWZpbmUgU2hhZG93Um9vdF9oCisKKyNpbmNsdWRlICJET01TY29wZS5oIgorI2luY2x1ZGUg
Ik5vZGUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBFbGVtZW50OworY2xhc3Mg
Tm9kZTsKKworY2xhc3MgU2hhZG93Um9vdCA6IHB1YmxpYyBET01TY29wZSB7CitwdWJsaWM6Cisg
ICAgU2hhZG93Um9vdChOb2RlKiByb290ID0gMCwgRG9jdW1lbnQqIGRvY3VtZW50ID0gMCkKKyAg
ICAgIDogRE9NU2NvcGUoRE9NU2NvcGU6OlNDT1BFX1NIQURPV1JPT1QsIGRvY3VtZW50KQorICAg
ICAgLCBtX3Jvb3Qocm9vdCkKKyAgICB7CisgICAgfQorCisgICAgTm9kZSogcm9vdCgpIGNvbnN0
CisgICAgeworICAgICAgICByZXR1cm4gbV9yb290OworICAgIH0KKyAgICB2b2lkIHNldFJvb3Qo
Tm9kZSogcm9vdCkKKyAgICB7CisgICAgICAgIG1fcm9vdCA9IHJvb3Q7CisgICAgfQorICAgIHZv
aWQgc2V0U2hhZG93SG9zdChFbGVtZW50Kik7CisKKyAgICB2b2lkIHNldERvY3VtZW50UmVjdXJz
aXZlbHkoRG9jdW1lbnQqKTsKKworcHJpdmF0ZToKKyAgICBOb2RlKiBtX3Jvb3Q7Cit9OworCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBTaGFkb3dSb290X2gKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TdHlsZWRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9k
b20vU3R5bGVkRWxlbWVudC5oCmluZGV4IDMyZmM0YzI0ODIzOTE3ZGU3NTVmYzU0ZWI3MmE0MDZj
ZTQ3OTBlYmEuLjNjZWI2M2Y0NTI0Y2NjZTNhODViNmFiMTUwNjdlYTkyMWI1NGNkNWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TdHlsZWRFbGVtZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL1N0eWxlZEVsZW1lbnQuaApAQCAtNjgsOCArNjgsOCBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCBQYXNzUmVmUHRyPEF0dHJpYnV0ZT4gY3JlYXRlQXR0cmlidXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKTsKIAogcHJvdGVjdGVkOgotICAg
IFN0eWxlZEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgRG9jdW1lbnQqIGRvY3Vt
ZW50LCBDb25zdHJ1Y3Rpb25UeXBlIHR5cGUpCi0gICAgICAgIDogRWxlbWVudChuYW1lLCBkb2N1
bWVudCwgdHlwZSkKKyAgICBTdHlsZWRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUs
IERPTVNjb3BlKiBzY29wZSwgQ29uc3RydWN0aW9uVHlwZSB0eXBlKQorICAgICAgICA6IEVsZW1l
bnQobmFtZSwgc2NvcGUsIHR5cGUpCiAgICAgewogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL1RleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1RleHQuY3BwCmluZGV4
IDM0MjY2ZjFiMDUxNDgyNWU0M2FhYjI3OTE4YjQ5MDcxOWU4ZDNiOGYuLmYwODQ2MTViYjZjZDZm
ODliMWViYjAwYTZjNTk0MDI5N2RjZTYxZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9UZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dC5jcHAKQEAgLTQyLDkgKzQy
LDkgQEAgdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1QYXNz
UmVmUHRyPFRleHQ+IFRleHQ6OmNyZWF0ZShEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IFN0cmlu
ZyYgZGF0YSkKK1Bhc3NSZWZQdHI8VGV4dD4gVGV4dDo6Y3JlYXRlKERPTVNjb3BlKiBzY29wZSwg
Y29uc3QgU3RyaW5nJiBkYXRhKQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgVGV4dChkb2N1
bWVudCwgZGF0YSkpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgVGV4dChzY29wZSwgZGF0YSkp
OwogfQogCiBQYXNzUmVmUHRyPFRleHQ+IFRleHQ6OnNwbGl0VGV4dCh1bnNpZ25lZCBvZmZzZXQs
IEV4Y2VwdGlvbkNvZGUmIGVjKQpAQCAtMzAxLDE2ICszMDEsMTYgQEAgYm9vbCBUZXh0OjpjaGls
ZFR5cGVBbGxvd2VkKE5vZGVUeXBlKQogCiBQYXNzUmVmUHRyPFRleHQ+IFRleHQ6OnZpcnR1YWxD
cmVhdGUoY29uc3QgU3RyaW5nJiBkYXRhKQogewotICAgIHJldHVybiBjcmVhdGUoZG9jdW1lbnQo
KSwgZGF0YSk7CisgICAgcmV0dXJuIGNyZWF0ZShzY29wZSgpLCBkYXRhKTsKIH0KIAotUGFzc1Jl
ZlB0cjxUZXh0PiBUZXh0OjpjcmVhdGVXaXRoTGVuZ3RoTGltaXQoRG9jdW1lbnQqIGRvY3VtZW50
LCBjb25zdCBTdHJpbmcmIGRhdGEsIHVuc2lnbmVkJiBjaGFyc0xlZnQsIHVuc2lnbmVkIG1heENo
YXJzKQorUGFzc1JlZlB0cjxUZXh0PiBUZXh0OjpjcmVhdGVXaXRoTGVuZ3RoTGltaXQoRE9NU2Nv
cGUqIHNjb3BlLCBjb25zdCBTdHJpbmcmIGRhdGEsIHVuc2lnbmVkJiBjaGFyc0xlZnQsIHVuc2ln
bmVkIG1heENoYXJzKQogewogICAgIHVuc2lnbmVkIGRhdGFMZW5ndGggPSBkYXRhLmxlbmd0aCgp
OwogCiAgICAgaWYgKGNoYXJzTGVmdCA9PSBkYXRhTGVuZ3RoICYmIGNoYXJzTGVmdCA8PSBtYXhD
aGFycykgewogICAgICAgICBjaGFyc0xlZnQgPSAwOwotICAgICAgICByZXR1cm4gY3JlYXRlKGRv
Y3VtZW50LCBkYXRhKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZShzY29wZSwgZGF0YSk7CiAgICAg
fQogCiAgICAgdW5zaWduZWQgc3RhcnQgPSBkYXRhTGVuZ3RoIC0gY2hhcnNMZWZ0OwpAQCAtMzM0
LDcgKzMzNCw3IEBAIFBhc3NSZWZQdHI8VGV4dD4gVGV4dDo6Y3JlYXRlV2l0aExlbmd0aExpbWl0
KERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiBkCiAgICAgICAgIGVuZCA9IGRhdGFM
ZW5ndGg7CiAgICAgCiAgICAgY2hhcnNMZWZ0ID0gZGF0YUxlbmd0aCAtIGVuZDsKLSAgICByZXR1
cm4gY3JlYXRlKGRvY3VtZW50LCBkYXRhLnN1YnN0cmluZyhzdGFydCwgZW5kIC0gc3RhcnQpKTsK
KyAgICByZXR1cm4gY3JlYXRlKHNjb3BlLCBkYXRhLnN1YnN0cmluZyhzdGFydCwgZW5kIC0gc3Rh
cnQpKTsKIH0KIAogI2lmbmRlZiBOREVCVUcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9UZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dC5oCmluZGV4IDQ1Njc4ZWY4ZDhlYmQ4
ZjcyNTAyOGU3MmIwMTg0MmRlOGFlY2E1MWQuLjQwNzkzZmM5NmMxNjUwZmI1YWQ1NzdmNjQ4NGIy
NGQ4OWVjM2VjMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL1RleHQuaApAQCAtMzEsOCArMzEsOCBAQCBjbGFzcyBUZXh0IDog
cHVibGljIENoYXJhY3RlckRhdGEgewogcHVibGljOgogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25l
ZCBkZWZhdWx0TGVuZ3RoTGltaXQgPSAxIDw8IDE2OwogCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8
VGV4dD4gY3JlYXRlKERvY3VtZW50KiwgY29uc3QgU3RyaW5nJik7Ci0gICAgc3RhdGljIFBhc3NS
ZWZQdHI8VGV4dD4gY3JlYXRlV2l0aExlbmd0aExpbWl0KERvY3VtZW50KiwgY29uc3QgU3RyaW5n
JiwgdW5zaWduZWQmIGNoYXJzTGVmdCwgdW5zaWduZWQgbGVuZ3RoTGltaXQgPSBkZWZhdWx0TGVu
Z3RoTGltaXQpOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFRleHQ+IGNyZWF0ZShET01TY29wZSos
IGNvbnN0IFN0cmluZyYpOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFRleHQ+IGNyZWF0ZVdpdGhM
ZW5ndGhMaW1pdChET01TY29wZSosIGNvbnN0IFN0cmluZyYsIHVuc2lnbmVkJiBjaGFyc0xlZnQs
IHVuc2lnbmVkIGxlbmd0aExpbWl0ID0gZGVmYXVsdExlbmd0aExpbWl0KTsKIAogICAgIFBhc3NS
ZWZQdHI8VGV4dD4gc3BsaXRUZXh0KHVuc2lnbmVkIG9mZnNldCwgRXhjZXB0aW9uQ29kZSYpOwog
CkBAIC00NCw4ICs0NCw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoKCk7CiAK
IHByb3RlY3RlZDoKLSAgICBUZXh0KERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiBk
YXRhKQotICAgICAgICA6IENoYXJhY3RlckRhdGEoZG9jdW1lbnQsIGRhdGEsIENyZWF0ZVRleHQp
CisgICAgVGV4dChET01TY29wZSogc2NvcGUsIGNvbnN0IFN0cmluZyYgZGF0YSkKKyAgICAgICAg
OiBDaGFyYWN0ZXJEYXRhKHNjb3BlLCBkYXRhLCBDcmVhdGVUZXh0KQogICAgIHsKICAgICB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>81201</attachid>
            <date>2011-02-04 02:33:26 -0800</date>
            <delta_ts>2011-04-05 14:53:25 -0700</delta_ts>
            <desc>work-in-progress, see comments</desc>
            <filename>bug-52963-20110204193324.patch</filename>
            <type>text/plain</type>
            <size>60893</size>
            <attacher name="Roland Steiner">rolandsteiner</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0FuZHJvaWQubWsgYi9Tb3VyY2UvV2ViQ29yZS9B
bmRyb2lkLm1rCmluZGV4IDk2YzYzMDlhYzM0ZWM5NzJlNmFkYmUwZDk3YWJhY2ZlYzVjY2MxY2Eu
LmZhYWVhZDJjMDJhYzc2NGZiNTUxZDM2YjcxODhlODFjOTU3OGEzMjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL0FuZHJvaWQubWsKKysrIGIvU291cmNlL1dlYkNvcmUvQW5kcm9pZC5tawpA
QCAtMTcyLDYgKzE3Miw3IEBAIExPQ0FMX1NSQ19GSUxFUyA6PSAkKExPQ0FMX1NSQ19GSUxFUykg
XAogCWRvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcCBcCiAJZG9tL1NlbGVjdEVsZW1lbnQu
Y3BwIFwKIAlkb20vU2VsZWN0b3JOb2RlTGlzdC5jcHAgXAorCWRvbS9TaGFkb3dTY29wZS5jcHAg
XAogCWRvbS9TcGFjZVNwbGl0U3RyaW5nLmNwcCBcCiAJZG9tL1N0YXRpY0hhc2hTZXROb2RlTGlz
dC5jcHAgXAogCWRvbS9TdGF0aWNOb2RlTGlzdC5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRl
eCBjMjAzN2ViODg2YWZlMjE5OWQ2YmI2YjMxZThhZDIxMWQ1MGExNzU1Li42YzFiZDA5MTJkOTEw
ZmFiMzhjMmVkYWE0YWY0NDFlMWI5ODc2MzI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9D
TWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtODkw
LDYgKzg5MCw3IEBAIFNFVChXZWJDb3JlX1NPVVJDRVMKICAgICBkb20vU2NyaXB0RXhlY3V0aW9u
Q29udGV4dC5jcHAKICAgICBkb20vU2VsZWN0RWxlbWVudC5jcHAKICAgICBkb20vU2VsZWN0b3JO
b2RlTGlzdC5jcHAKKyAgICBkb20vU2hhZG93U2NvcGUuY3BwCiAgICAgZG9tL1NwYWNlU3BsaXRT
dHJpbmcuY3BwCiAgICAgZG9tL1N0YXRpY0hhc2hTZXROb2RlTGlzdC5jcHAKICAgICBkb20vU3Rh
dGljTm9kZUxpc3QuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDliNTE1OTc4Y2JiMDU0MmZjNDQyZTc1MzQ3
YzYyYmFjNTBiNTUzNS4uZGE4OTUwMTcxZDZkZDBmZjAxOTM4YWU5OTAwZjZiYmQ2ZWMxMjg0OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyMCBAQAorMjAxMS0wMi0wNCAgUm9sYW5kIFN0ZWluZXIg
IDxyb2xhbmRzdGVpbmVyQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBCdWcgNTI5NjMgLSBFbmFibGUgTygxKSBhY2Nlc3MgdG8g
cm9vdCBmcm9tIGFueSBub2RlIGluIHNoYWRvdyBET00gc3VidHJlZQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTI5NjMKKworICAgICAgICAiU2ltcGxl
IiB2ZXJzaW9uIG9mIHRoZSBwYXRjaCwgaW50ZW5kZWQgYXMgYSBmaXJzdCBzdGVwIHRvd2FyZHMg
YSBtb3JlCisgICAgICAgIGdlbmVyYWwgcmVmYWN0b3JpbmcgKHNlZSBjb21tZW50cyBvbiB0aGUg
YnVnKS4KKworICAgICAgICBUaGlzIHBhdGNoIGludHJvZHVjZXMgRE9NU2NvcGUgYW5kIFNoYWRv
d1Njb3BlIGFzIG5ldyBjbGFzc2VzLiAKKyAgICAgICAgSW5zdGVhZCBvZiBwb2ludGluZyB0byB0
aGUgRG9jdW1lbnQgZGlyZWN0bHksIE5vZGVzIG5vdyBwb2ludCB0byBhIERPTVNjb3BlLAorICAg
ICAgICB3aGljaCBpbiB0dXJuIGNvbnRhaW5zIHRoZSBEb2N1bWVudCBwb2ludGVyLgorCisgICAg
ICAgIEJvdGggRG9jdW1lbnQgYW5kIFNoYWRvd1Njb3BlIGFyZSB0aGVuIGRlcml2ZWQgZnJvbSBE
T01TY29wZS4KKyAgICAgICAgVGhpcyBhbGxvd3MgYWxsIG5vZGVzIE8oMSkgYWNjZXNzIHRvIHRo
ZSBEb2N1bWVudCwgYXMgd2VsbCBhcyB0byB0aGUgc2hhZG93CisgICAgICAgIHJvb3QgZm9yIG5v
ZGVzIHdpdGhpbiBhIHNoYWRvdyB0cmVlIChhbGJlaXQgd2l0aCBhbiBhZGRpdGlvbmFsIGluZGly
ZWN0aW9uCisgICAgICAgIGluIGJvdGggY2FzZXMpLCB3aXRob3V0IGludHJvZHVjaW5nIGFkZGl0
aW9uYWwgbWVtYmVycyBpbnRvIE5vZGUuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiAocmVmYWN0
b3JpbmcpCisKKyAgICAgICAgKiBBbmRyb2lkLm1rOgorICAgICAgICAqIENNYWtlTGlzdHMudHh0
OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAg
ICAgICAgKiBXZWJDb3JlLnBybzoKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZj
cHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAg
ICAgICogZG9tL0F0dHIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXR0cjo6QXR0cik6CisgICAg
ICAgIChXZWJDb3JlOjpBdHRyOjpjcmVhdGUpOgorICAgICAgICAqIGRvbS9BdHRyLmg6CisgICAg
ICAgICogZG9tL0NEQVRBU2VjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDREFUQVNlY3Rp
b246OkNEQVRBU2VjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpDREFUQVNlY3Rpb246OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpDREFUQVNlY3Rpb246OmNsb25lTm9kZSk6CisgICAgICAg
IChXZWJDb3JlOjpDREFUQVNlY3Rpb246OnZpcnR1YWxDcmVhdGUpOgorICAgICAgICAqIGRvbS9D
REFUQVNlY3Rpb24uaDoKKyAgICAgICAgKiBkb20vQ2hhcmFjdGVyRGF0YS5oOgorICAgICAgICAo
V2ViQ29yZTo6Q2hhcmFjdGVyRGF0YTo6Q2hhcmFjdGVyRGF0YSk6CisgICAgICAgICogZG9tL0Nv
bW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29tbWVudDo6Q29tbWVudCk6CisgICAgICAg
IChXZWJDb3JlOjpDb21tZW50OjpjcmVhdGUpOgorICAgICAgICAqIGRvbS9Db21tZW50Lmg6Cisg
ICAgICAgICogZG9tL0NvbnRhaW5lck5vZGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRhaW5l
ck5vZGU6OkNvbnRhaW5lck5vZGUpOgorICAgICAgICAqIGRvbS9ET01TY29wZS5oOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkRPTVNjb3BlOjpET01TY29wZSk6CisgICAgICAgIChXZWJDb3Jl
OjpET01TY29wZTo6c2NvcGVUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVNjb3BlOjppc0Rv
Y3VtZW50U2NvcGUpOgorICAgICAgICAoV2ViQ29yZTo6RE9NU2NvcGU6OmlzU2hhZG93U2NvcGUp
OgorICAgICAgICAoV2ViQ29yZTo6RE9NU2NvcGU6OmRvY3VtZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OkRPTVNjb3BlOjpzZXREb2N1bWVudFB0cik6CisgICAgICAgICogZG9tL0RvY3VtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpEb2N1bWVudCk6CisgICAgICAgIChXZWJD
b3JlOjpEb2N1bWVudDo6fkRvY3VtZW50KToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok5vZGU6Ok5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6ZG9j
dW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6aXNEb2N1bWVudE5vZGUpOgorICAgICAg
ICAqIGRvbS9FZGl0aW5nVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0aW5nVGV4dDo6
RWRpdGluZ1RleHQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdGluZ1RleHQ6OmNyZWF0ZSk6Cisg
ICAgICAgICogZG9tL0VkaXRpbmdUZXh0Lmg6CisgICAgICAgICogZG9tL0VsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6c2hhZG93Um9vdCk6CisgICAgICAgIChXZWJDb3Jl
OjpFbGVtZW50OjpzaGFkb3dTY29wZSk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjplbnN1
cmVTaGFkb3dTY29wZSk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpzZXRTaGFkb3dSb290
KToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnJlbW92ZVNoYWRvd1Jvb3QpOgorICAgICAg
ICAqIGRvbS9FbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpFbGVtZW50KToK
KyAgICAgICAgKiBkb20vRWxlbWVudFJhcmVEYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpFbGVt
ZW50UmFyZURhdGE6OkVsZW1lbnRSYXJlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50
UmFyZURhdGE6On5FbGVtZW50UmFyZURhdGEpOgorICAgICAgICAqIGRvbS9FbnRpdHlSZWZlcmVu
Y2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RW50aXR5UmVmZXJlbmNlOjpFbnRpdHlSZWZlcmVu
Y2UpOgorICAgICAgICAoV2ViQ29yZTo6RW50aXR5UmVmZXJlbmNlOjpjcmVhdGUpOgorICAgICAg
ICAqIGRvbS9FbnRpdHlSZWZlcmVuY2UuaDoKKyAgICAgICAgKiBkb20vTm9kZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpOb2RlOjp+Tm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpzZXRE
b2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpzZXREb2N1bWVudFJlY3Vyc2l2ZWx5
KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OnNldERPTVNjb3BlKToKKyAgICAgICAgKFdlYkNv
cmU6Ok5vZGU6OnNldFNoYWRvd0hvc3QpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6cmVnaXN0
ZXJEeW5hbWljTm9kZUxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6ZGVidWdGaW5kU2hhZG93VHJl
ZVJvb3ROb2RlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OnNoYWRvd1RyZWVSb290Tm9kZSk6
CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjppc0luU2hhZG93VHJlZSk6CisgICAgICAgICogZG9t
L05vZGUuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmRvbVNjb3BlKToKKyAgICAgICAgKFdl
YkNvcmU6Ok5vZGU6OmluRG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6c2V0RE9N
U2NvcGVQb2ludGVyKToKKyAgICAgICAgKiBkb20vTm90YXRpb24uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Tm90YXRpb246Ok5vdGF0aW9uKToKKyAgICAgICAgKiBkb20vTm90YXRpb24uaDoKKyAg
ICAgICAgKiBkb20vUHJvY2Vzc2luZ0luc3RydWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlByb2Nlc3NpbmdJbnN0cnVjdGlvbjo6UHJvY2Vzc2luZ0luc3RydWN0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OlByb2Nlc3NpbmdJbnN0cnVjdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKiBkb20v
UHJvY2Vzc2luZ0luc3RydWN0aW9uLmg6CisgICAgICAgICogZG9tL1NoYWRvd1Njb3BlLmNwcDog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dTY29wZTo6c2V0RG9jdW1lbnRSZWN1cnNp
dmVseSk6CisgICAgICAgICogZG9tL1NoYWRvd1Njb3BlLmg6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6U2hhZG93U2NvcGU6OlNoYWRvd1Njb3BlKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRv
d1Njb3BlOjpyb290KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd1Njb3BlOjpzZXRSb290KToK
KyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd1Njb3BlOjpob3N0KToKKyAgICAgICAgKFdlYkNvcmU6
OnRvU2hhZG93U2NvcGUpOgorICAgICAgICAqIGRvbS9TdHlsZWRFbGVtZW50Lmg6CisgICAgICAg
IChXZWJDb3JlOjpTdHlsZWRFbGVtZW50OjpTdHlsZWRFbGVtZW50KToKKyAgICAgICAgKiBkb20v
VGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0OjpjcmVhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6VGV4dDo6dmlydHVhbENyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0OjpjcmVh
dGVXaXRoTGVuZ3RoTGltaXQpOgorICAgICAgICAqIGRvbS9UZXh0Lmg6CisgICAgICAgIChXZWJD
b3JlOjpUZXh0OjpUZXh0KToKKwogMjAxMS0wMi0wMyAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJr
aXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhbmllbCBCYXRlcy4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZp
bGUuYW0KaW5kZXggN2E1NjI2NjMwMWExMDdiNzNmNWI3NDNiZTU0MTA0MDNiNWRmYmEyOC4uMmU0
M2E1YjBiNjk2Y2IxNGMwZWIyZTM3N2NkM2YyN2E4ZjIxMjY3YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUu
YW0KQEAgLTExNzUsNiArMTE3NSw3IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dl
YkNvcmUvZG9tL0RPTUNvcmVFeGNlcHRpb24uaCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL0RPTUlt
cGxlbWVudGF0aW9uLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL0RPTUltcGxlbWVudGF0aW9u
LmggXAorCVNvdXJjZS9XZWJDb3JlL2RvbS9ET01TY29wZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9k
b20vRE9NU3RyaW5nTGlzdC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2RvbS9ET01TdHJpbmdMaXN0
LmggXAogCVNvdXJjZS9XZWJDb3JlL2RvbS9ET01TdHJpbmdNYXAuY3BwIFwKQEAgLTEyODksNiAr
MTI5MCw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvZG9tL1NlbGVj
dEVsZW1lbnQuaCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL1NlbGVjdG9yTm9kZUxpc3QuY3BwIFwK
IAlTb3VyY2UvV2ViQ29yZS9kb20vU2VsZWN0b3JOb2RlTGlzdC5oIFwKKwlTb3VyY2UvV2ViQ29y
ZS9kb20vU2hhZG93U2NvcGUuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93U2NvcGUu
aCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL1NwYWNlU3BsaXRTdHJpbmcuY3BwIFwKIAlTb3VyY2Uv
V2ViQ29yZS9kb20vU3BhY2VTcGxpdFN0cmluZy5oIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vU3Rh
dGljSGFzaFNldE5vZGVMaXN0LmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggYzdlMDZiNjY2ZTRk
NTA0NTYzM2YzYzBmMWIzZTkwMTY4NjlhYmUwMS4uZTA1Mzc3ZjRiZjkxMzQ3NGJiZWQ0ZGQ2Yjc1
ZmM3YTVmYWE5YmFlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMTE5MCw2ICsxMTkwLDcgQEAKICAg
ICAgICAgICAgICdkb20vRE9NQ29yZUV4Y2VwdGlvbi5oJywKICAgICAgICAgICAgICdkb20vRE9N
SW1wbGVtZW50YXRpb24uY3BwJywKICAgICAgICAgICAgICdkb20vRE9NSW1wbGVtZW50YXRpb24u
aCcsCisgICAgICAgICAgICAnZG9tL0RPTVNjb3BlLmgnLAogICAgICAgICAgICAgJ2RvbS9ET01T
dHJpbmdMaXN0LmNwcCcsCiAgICAgICAgICAgICAnZG9tL0RPTVN0cmluZ0xpc3QuaCcsCiAgICAg
ICAgICAgICAnZG9tL0RPTVN0cmluZ01hcC5jcHAnLApAQCAtMTMzNyw2ICsxMzM4LDggQEAKICAg
ICAgICAgICAgICdkb20vU2VsZWN0RWxlbWVudC5oJywKICAgICAgICAgICAgICdkb20vU2VsZWN0
b3JOb2RlTGlzdC5jcHAnLAogICAgICAgICAgICAgJ2RvbS9TZWxlY3Rvck5vZGVMaXN0LmgnLAor
ICAgICAgICAgICAgJ2RvbS9TaGFkb3dTY29wZS5jcHAnLAorICAgICAgICAgICAgJ2RvbS9TaGFk
b3dTY29wZS5oJywKICAgICAgICAgICAgICdkb20vU3BhY2VTcGxpdFN0cmluZy5jcHAnLAogICAg
ICAgICAgICAgJ2RvbS9TcGFjZVNwbGl0U3RyaW5nLmgnLAogICAgICAgICAgICAgJ2RvbS9TdGF0
aWNIYXNoU2V0Tm9kZUxpc3QuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUucHJvIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KaW5kZXggMjYxZTYwZmNlMmIzZmIz
MzM5OGE1ZmJiNThlY2Y0NjI1ZmJjMDlhNS4uODkxOTgwMTBhNmRjNGY3YWZlMjlkMzZkN2M5MTUy
NmU4ZDVlYjUxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KKysrIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KQEAgLTc4Niw2ICs3ODYsNyBAQCBTT1VSQ0VTICs9
IFwKICAgICBkb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAgXAogICAgIGRvbS9TZWxlY3RF
bGVtZW50LmNwcCBcCiAgICAgZG9tL1NlbGVjdG9yTm9kZUxpc3QuY3BwIFwKKyAgICBkb20vU2hh
ZG93U2NvcGUuY3BwIFwKICAgICBkb20vU3BhY2VTcGxpdFN0cmluZy5jcHAgXAogICAgIGRvbS9T
dGF0aWNOb2RlTGlzdC5jcHAgXAogICAgIGRvbS9TdHlsZWRFbGVtZW50LmNwcCBcCkBAIC0xNjY5
LDYgKzE2NzAsNyBAQCBIRUFERVJTICs9IFwKICAgICBkb20vRG9jdW1lbnRPcmRlcmVkTWFwLmgg
XAogICAgIGRvbS9Eb2N1bWVudFR5cGUuaCBcCiAgICAgZG9tL0RPTUltcGxlbWVudGF0aW9uLmgg
XAorICAgIGRvbS9ET01TY29wZS5oIFwKICAgICBkb20vRE9NU3RyaW5nTGlzdC5oIFwKICAgICBk
b20vRE9NU3RyaW5nTWFwLmggXAogICAgIGRvbS9ET01UaW1lU3RhbXAuaCBcCkBAIC0xNzE2LDYg
KzE3MTgsNyBAQCBIRUFERVJTICs9IFwKICAgICBkb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5o
IFwKICAgICBkb20vU2VsZWN0RWxlbWVudC5oIFwKICAgICBkb20vU2VsZWN0b3JOb2RlTGlzdC5o
IFwKKyAgICBkb20vU2hhZG93U2NvcGUuaCBcCiAgICAgZG9tL1NwYWNlU3BsaXRTdHJpbmcuaCBc
CiAgICAgZG9tL1N0YXRpY05vZGVMaXN0LmggXAogICAgIGRvbS9TdHlsZWRFbGVtZW50LmggXApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2og
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCAyZGE5
YTU5MzJmMzAzNGNiOTg3YjlmOWI1MGY3ODU1OGM1MjA4ZTllLi5mNDk3NzY4YzU2YzJmNzg2YWY2
MTVjOGI0MDAxN2Y2M2ViNTNkMDgzIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJv
ai9XZWJDb3JlLnZjcHJvagpAQCAtNDMzMjIsNiArNDMzMjIsMTAgQEAKIAkJCQk+CiAJCQk8L0Zp
bGU+CiAJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cZG9tXERPTVNjb3BlLmgiCisJCQkJ
PgorCQkJPC9GaWxlPgorCQkJPEZpbGUKIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGRvbVxET01TdHJp
bmdMaXN0LmNwcCIKIAkJCQk+CiAJCQkJPEZpbGVDb25maWd1cmF0aW9uCkBAIC00NTk4Miw2ICs0
NTk4Niw2MiBAQAogCQkJCT4KIAkJCTwvRmlsZT4KIAkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRo
PSIuLlxkb21cU2hhZG93U2NvcGUuY3BwIgorCQkJCT4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24K
KwkJCQkJTmFtZT0iRGVidWd8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgor
CQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkv
PgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJ
CU5hbWU9IlJlbGVhc2V8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJ
CQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgor
CQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5h
bWU9IkRlYnVnX0NhaXJvX0NGTGl0ZXxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRy
dWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJ
CQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24K
KwkJCQkJTmFtZT0iUmVsZWFzZV9DYWlyb19DRkxpdGV8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJv
bUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGls
ZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25m
aWd1cmF0aW9uCisJCQkJCU5hbWU9IkRlYnVnX0FsbHxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9t
QnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxl
clRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZp
Z3VyYXRpb24KKwkJCQkJTmFtZT0iUmVsZWFzZV9MVENHfFdpbjMyIgorCQkJCQlFeGNsdWRlZEZy
b21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBp
bGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJPC9GaWxlPgor
CQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGRvbVxTaGFkb3dTY29wZS5oIgorCQkJCT4K
KwkJCTwvRmlsZT4KKwkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxkb21cU3BhY2VTcGxp
dFN0cmluZy5jcHAiCiAJCQkJPgogCQkJCTxGaWxlQ29uZmlndXJhdGlvbgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDNmYTBlZGI0
MTQyNzc4MzM3ZWZmN2I4MGEwMWViNDliMTIzNzFiZWUuLjRmMDQ3MWVjYjdjMDAzYzY2MWI1MWE0
MDFjZTQ3NjFjNWRiOWU0MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTMxOCw2ICszMTgsOSBAQAogCQkxNDhBRkRBNjBBRjU4
MzYwMDA4Q0M3MDAgLyogRXhjZXB0aW9uSGFuZGxlcnMubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDhBRkRBNDBBRjU4MzYwMDA4Q0M3MDAgLyogRXhj
ZXB0aW9uSGFuZGxlcnMubW0gKi87IH07CiAJCTE0OTQ3RkZEMTJGODBDRDIwMEEwRjYzMSAvKiBE
b2N1bWVudE9yZGVyZWRNYXAuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMTQ5NDdGRkIxMkY4MENEMjAwQTBGNjMxIC8qIERvY3VtZW50T3JkZXJlZE1h
cC5jcHAgKi87IH07CiAJCTE0OTQ3RkZFMTJGODBDRDIwMEEwRjYzMSAvKiBEb2N1bWVudE9yZGVy
ZWRNYXAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0
OTQ3RkZDMTJGODBDRDIwMEEwRjYzMSAvKiBEb2N1bWVudE9yZGVyZWRNYXAuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkxNDk0ODEwQzEyRkE4NUNB
MDBBMEY2MzEgLyogRE9NU2NvcGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDE0OTQ4MTBBMTJGQTg1Q0EwMEEwRjYzMSAvKiBET01TY29wZS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTE0OTQ4MUYzMTJG
QkVGRUIwMEEwRjYzMSAvKiBTaGFkb3dTY29wZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDk0ODFGMTEyRkJFRkVCMDBBMEY2MzEgLyogU2hhZG93
U2NvcGUuY3BwICovOyB9OworCQkxNDk0ODFGNDEyRkJFRkVCMDBBMEY2MzEgLyogU2hhZG93U2Nv
cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0OTQ4
MUYyMTJGQkVGRUIwMEEwRjYzMSAvKiBTaGFkb3dTY29wZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTE0OTkzQkU1MEIyRjJCMUMwMDUwNDk3RiAv
KiBGb2N1c0NvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMTQ5OTNCRTMwQjJGMkIxQzAwNTA0OTdGIC8qIEZvY3VzQ29udHJvbGxlci5j
cHAgKi87IH07CiAJCTE0OTkzQkU2MEIyRjJCMUMwMDUwNDk3RiAvKiBGb2N1c0NvbnRyb2xsZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0OTkzQkU0
MEIyRjJCMUMwMDUwNDk3RiAvKiBGb2N1c0NvbnRyb2xsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxNEM5QTVFQTBCM0QxMDVGMDA1QTAyMzIg
LyogU2V0dGluZ3MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMTRDOUE1RTkwQjNEMTA1RjAwNUEwMjMyIC8qIFNldHRpbmdzLmNwcCAqLzsgfTsKQEAg
LTY2NDgsNiArNjY1MSw5IEBACiAJCTE0OEFGREE0MEFGNTgzNjAwMDhDQzcwMCAvKiBFeGNlcHRp
b25IYW5kbGVycy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBF
eGNlcHRpb25IYW5kbGVycy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTQ5NDdG
RkIxMkY4MENEMjAwQTBGNjMxIC8qIERvY3VtZW50T3JkZXJlZE1hcC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEb2N1bWVudE9yZGVyZWRNYXAuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkxNDk0N0ZGQzEyRjgwQ0QyMDBBMEY2MzEgLyogRG9jdW1l
bnRPcmRlcmVkTWFwLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERvY3VtZW50
T3JkZXJlZE1hcC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxNDk0ODEwQTEyRkE4
NUNBMDBBMEY2MzEgLyogRE9NU2NvcGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gRE9NU2NvcGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTQ5NDgxRjExMkZC
RUZFQjAwQTBGNjMxIC8qIFNoYWRvd1Njb3BlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFNoYWRvd1Njb3BlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMTQ5NDgxRjIxMkZCRUZFQjAwQTBGNjMxIC8qIFNoYWRvd1Njb3BlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNoYWRvd1Njb3BlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTE0OTkzQkUzMEIyRjJCMUMwMDUwNDk3RiAvKiBGb2N1c0NvbnRyb2xsZXIuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZvY3VzQ29udHJvbGxlci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0OTkzQkU0MEIyRjJCMUMwMDUwNDk3
RiAvKiBGb2N1c0NvbnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEZvY3VzQ29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNEM5QTVF
OTBCM0QxMDVGMDA1QTAyMzIgLyogU2V0dGluZ3MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFNldHRpbmdzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTE5MDIyLDYgKzE5MDI4LDcgQEAKIAkJCQlBODE4NUYzNjA5NzY1NzY1MDA1ODI2RDkgLyog
RE9NSW1wbGVtZW50YXRpb24uY3BwICovLAogCQkJCUE4MTg1RjMzMDk3NjU3NjUwMDU4MjZEOSAv
KiBET01JbXBsZW1lbnRhdGlvbi5oICovLAogCQkJCTkzRUVDMUU5MDlDMjg3NzcwMEM1MTVEMSAv
KiBET01JbXBsZW1lbnRhdGlvbi5pZGwgKi8sCisJCQkJMTQ5NDgxMEExMkZBODVDQTAwQTBGNjMx
IC8qIERPTVNjb3BlLmggKi8sCiAJCQkJQzU1NjEwRjAxMUE3MDRFQjAwQjgyRDI3IC8qIERPTVN0
cmluZ0xpc3QuY3BwICovLAogCQkJCUM1NDQyNzQ5MTFBNTdFN0EwMDYzQTc0OSAvKiBET01TdHJp
bmdMaXN0LmggKi8sCiAJCQkJQzU0NDI3NEExMUE1N0U3QTAwNjNBNzQ5IC8qIERPTVN0cmluZ0xp
c3QuaWRsICovLApAQCAtMTkxNjgsNiArMTkxNzUsOCBAQAogCQkJCTA4NEFFQkUzMEZCNTA1RkEw
MDM4NDgzRSAvKiBTZWxlY3RFbGVtZW50LmggKi8sCiAJCQkJQkM3RkE2ODAwRDFGMTY3OTAwREIy
MkE5IC8qIFNlbGVjdG9yTm9kZUxpc3QuY3BwICovLAogCQkJCUJDN0ZBNjdGMEQxRjE2NzkwMERC
MjJBOSAvKiBTZWxlY3Rvck5vZGVMaXN0LmggKi8sCisJCQkJMTQ5NDgxRjExMkZCRUZFQjAwQTBG
NjMxIC8qIFNoYWRvd1Njb3BlLmNwcCAqLywKKwkJCQkxNDk0ODFGMjEyRkJFRkVCMDBBMEY2MzEg
LyogU2hhZG93U2NvcGUuaCAqLywKIAkJCQlEMDFBMjdBQjEwQzlCRkQ4MDAwMjZBNDIgLyogU3Bh
Y2VTcGxpdFN0cmluZy5jcHAgKi8sCiAJCQkJRDAxQTI3QUMxMEM5QkZEODAwMDI2QTQyIC8qIFNw
YWNlU3BsaXRTdHJpbmcuaCAqLywKIAkJCQlDRUEzOTQ5QTExRDQ1Q0RBMDAzMDk0Q0YgLyogU3Rh
dGljSGFzaFNldE5vZGVMaXN0LmNwcCAqLywKQEAgLTIyNDg1LDYgKzIyNDk0LDggQEAKIAkJCQlC
Q0U0NDEzNjEyRjc0OTBCMDA5Qjg0QjggLyogRm9udFdpZHRoVmFyaWFudC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMTQ5NDdGRkUxMkY4MENEMjAwQTBGNjMxIC8qIERvY3VtZW50T3JkZXJlZE1hcC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJOTdDNDcxREMxMkY5MjVCRDAwODYzNTRCIC8qIENvbnRlbnRT
ZWN1cml0eVBvbGljeS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMTQ5NDgxMEMxMkZBODVDQTAwQTBG
NjMxIC8qIERPTVNjb3BlLmggaW4gSGVhZGVycyAqLywKKwkJCQkxNDk0ODFGNDEyRkJFRkVCMDBB
MEY2MzEgLyogU2hhZG93U2NvcGUuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlG
b3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMjUxODYsNiArMjUxOTcs
NyBAQAogCQkJCUJDRTQ0MTMzMTJGNzQ4RTIwMDlCODRCOCAvKiBSZW5kZXJDb21iaW5lVGV4dC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDk0N0ZGRDEyRjgwQ0QyMDBBMEY2MzEgLyogRG9jdW1l
bnRPcmRlcmVkTWFwLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk3QzQ3MURCMTJGOTI1QkQwMDg2
MzU0QiAvKiBDb250ZW50U2VjdXJpdHlQb2xpY3kuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMTQ5
NDgxRjMxMkZCRUZFQjAwQTBGNjMxIC8qIFNoYWRvd1Njb3BlLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0F0dHIuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0F0dHIuY3BwCmluZGV4IGY0OTczOTQ4ZmUxNjBmMzJhOTZiZDQ5YjhmMzA0NWUyZGM5YzY0
NWEuLjk4YWE4MTI0MTMzNWIzOGI2NWJiYzU4Y2RlOTliNmY0YjgzNmRhZDIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9BdHRyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQXR0
ci5jcHAKQEAgLTMzLDggKzMzLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1l
c3BhY2UgSFRNTE5hbWVzOwogCi1pbmxpbmUgQXR0cjo6QXR0cihFbGVtZW50KiBlbGVtZW50LCBE
b2N1bWVudCogZG9jdW1lbnQsIFBhc3NSZWZQdHI8QXR0cmlidXRlPiBhdHRyaWJ1dGUpCi0gICAg
OiBDb250YWluZXJOb2RlKGRvY3VtZW50KQoraW5saW5lIEF0dHI6OkF0dHIoRWxlbWVudCogZWxl
bWVudCwgRE9NU2NvcGUqIHNjb3BlLCBQYXNzUmVmUHRyPEF0dHJpYnV0ZT4gYXR0cmlidXRlKQor
ICAgIDogQ29udGFpbmVyTm9kZShzY29wZSkKICAgICAsIG1fZWxlbWVudChlbGVtZW50KQogICAg
ICwgbV9hdHRyaWJ1dGUoYXR0cmlidXRlKQogICAgICwgbV9pZ25vcmVDaGlsZHJlbkNoYW5nZWQo
MCkKQEAgLTQ0LDkgKzQ0LDkgQEAgaW5saW5lIEF0dHI6OkF0dHIoRWxlbWVudCogZWxlbWVudCwg
RG9jdW1lbnQqIGRvY3VtZW50LCBQYXNzUmVmUHRyPEF0dHJpYnV0ZT4gYXQKICAgICBtX2F0dHJp
YnV0ZS0+YmluZEF0dHIodGhpcyk7CiB9CiAKLVBhc3NSZWZQdHI8QXR0cj4gQXR0cjo6Y3JlYXRl
KEVsZW1lbnQqIGVsZW1lbnQsIERvY3VtZW50KiBkb2N1bWVudCwgUGFzc1JlZlB0cjxBdHRyaWJ1
dGU+IGF0dHJpYnV0ZSkKK1Bhc3NSZWZQdHI8QXR0cj4gQXR0cjo6Y3JlYXRlKEVsZW1lbnQqIGVs
ZW1lbnQsIERPTVNjb3BlKiBzY29wZSwgUGFzc1JlZlB0cjxBdHRyaWJ1dGU+IGF0dHJpYnV0ZSkK
IHsKLSAgICBSZWZQdHI8QXR0cj4gYXR0ciA9IGFkb3B0UmVmKG5ldyBBdHRyKGVsZW1lbnQsIGRv
Y3VtZW50LCBhdHRyaWJ1dGUpKTsKKyAgICBSZWZQdHI8QXR0cj4gYXR0ciA9IGFkb3B0UmVmKG5l
dyBBdHRyKGVsZW1lbnQsIHNjb3BlLCBhdHRyaWJ1dGUpKTsKICAgICBhdHRyLT5jcmVhdGVUZXh0
Q2hpbGQoKTsKICAgICByZXR1cm4gYXR0ci5yZWxlYXNlKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vQXR0ci5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0F0dHIuaAppbmRleCBl
NzZkMmZhNmNkYTZlNzI4Y2FkNmMyYmQyZTdiMzU4M2NkZTVkNWVhLi5kOTRmYTNkYjA1NWVhZGFl
ZTg5OTkxMmFjODBhOGQxMjg1Mjk1MzJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
QXR0ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9BdHRyLmgKQEAgLTM5LDcgKzM5LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQXR0ciA6IHB1YmxpYyBDb250YWluZXJOb2RlIHsK
ICAgICBmcmllbmQgY2xhc3MgTmFtZWROb2RlTWFwOwogcHVibGljOgotICAgIHN0YXRpYyBQYXNz
UmVmUHRyPEF0dHI+IGNyZWF0ZShFbGVtZW50KiwgRG9jdW1lbnQqLCBQYXNzUmVmUHRyPEF0dHJp
YnV0ZT4pOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPEF0dHI+IGNyZWF0ZShFbGVtZW50KiwgRE9N
U2NvcGUqLCBQYXNzUmVmUHRyPEF0dHJpYnV0ZT4pOwogICAgIHZpcnR1YWwgfkF0dHIoKTsKIAog
ICAgIFN0cmluZyBuYW1lKCkgY29uc3QgeyByZXR1cm4gcXVhbGlmaWVkTmFtZSgpLnRvU3RyaW5n
KCk7IH0KQEAgLTYxLDcgKzYxLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0U3BlY2lmaWVkKGJv
b2wgc3BlY2lmaWVkKSB7IG1fc3BlY2lmaWVkID0gc3BlY2lmaWVkOyB9CiAKIHByaXZhdGU6Ci0g
ICAgQXR0cihFbGVtZW50KiwgRG9jdW1lbnQqLCBQYXNzUmVmUHRyPEF0dHJpYnV0ZT4pOworICAg
IEF0dHIoRWxlbWVudCosIERPTVNjb3BlKiwgUGFzc1JlZlB0cjxBdHRyaWJ1dGU+KTsKIAogICAg
IHZvaWQgY3JlYXRlVGV4dENoaWxkKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9DREFUQVNlY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0NEQVRBU2VjdGlvbi5jcHAK
aW5kZXggZDczMDU0ZTcxNzFmODQ5Zjc3M2ViNDIzOWYxZTBjNjdkYjJlMGE3Zi4uMWM5MjliMmY3
NWMxZjlmYWFlOTI3MjMyNWUyYTE2NTc3NmU2NjBjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL0NEQVRBU2VjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NEQVRBU2Vj
dGlvbi5jcHAKQEAgLTI2LDE0ICsyNiwxNCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWlu
bGluZSBDREFUQVNlY3Rpb246OkNEQVRBU2VjdGlvbihEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0
IFN0cmluZyYgZGF0YSkKLSAgICA6IFRleHQoZG9jdW1lbnQsIGRhdGEpCitpbmxpbmUgQ0RBVEFT
ZWN0aW9uOjpDREFUQVNlY3Rpb24oRE9NU2NvcGUqIHNjb3BlLCBjb25zdCBTdHJpbmcmIGRhdGEp
CisgICAgOiBUZXh0KHNjb3BlLCBkYXRhKQogewogfQogCi1QYXNzUmVmUHRyPENEQVRBU2VjdGlv
bj4gQ0RBVEFTZWN0aW9uOjpjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBTdHJpbmcm
IGRhdGEpCitQYXNzUmVmUHRyPENEQVRBU2VjdGlvbj4gQ0RBVEFTZWN0aW9uOjpjcmVhdGUoRE9N
U2NvcGUqIHNjb3BlLCBjb25zdCBTdHJpbmcmIGRhdGEpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBDREFUQVNlY3Rpb24oZG9jdW1lbnQsIGRhdGEpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IENEQVRBU2VjdGlvbihzY29wZSwgZGF0YSkpOwogfQogCiBTdHJpbmcgQ0RBVEFTZWN0aW9u
Ojpub2RlTmFtZSgpIGNvbnN0CkBAIC00OCw3ICs0OCw3IEBAIE5vZGU6Ok5vZGVUeXBlIENEQVRB
U2VjdGlvbjo6bm9kZVR5cGUoKSBjb25zdAogCiBQYXNzUmVmUHRyPE5vZGU+IENEQVRBU2VjdGlv
bjo6Y2xvbmVOb2RlKGJvb2wgLypkZWVwKi8pCiB7Ci0gICAgcmV0dXJuIGNyZWF0ZShkb2N1bWVu
dCgpLCBkYXRhKCkpOworICAgIHJldHVybiBjcmVhdGUoZG9tU2NvcGUoKSwgZGF0YSgpKTsKIH0K
IAogYm9vbCBDREFUQVNlY3Rpb246OmNoaWxkVHlwZUFsbG93ZWQoTm9kZVR5cGUpCkBAIC01OCw3
ICs1OCw3IEBAIGJvb2wgQ0RBVEFTZWN0aW9uOjpjaGlsZFR5cGVBbGxvd2VkKE5vZGVUeXBlKQog
CiBQYXNzUmVmUHRyPFRleHQ+IENEQVRBU2VjdGlvbjo6dmlydHVhbENyZWF0ZShjb25zdCBTdHJp
bmcmIGRhdGEpCiB7Ci0gICAgcmV0dXJuIGNyZWF0ZShkb2N1bWVudCgpLCBkYXRhKTsKKyAgICBy
ZXR1cm4gY3JlYXRlKGRvbVNjb3BlKCksIGRhdGEpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ0RBVEFTZWN0aW9uLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vQ0RBVEFTZWN0aW9uLmgKaW5kZXggNWNmMDdlMTQ2YjE4M2Q5MzkxMjdm
MTFkZmYyYjVmZTUyMGQwNDBiYi4uODkyNWI3ZGQ1ZDZhYWY2MzYyZmQ2ZjgyMmI4YWYwZGI1Y2Q5
MDY2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NEQVRBU2VjdGlvbi5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9DREFUQVNlY3Rpb24uaApAQCAtMjksMTAgKzI5LDEwIEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ0RBVEFTZWN0aW9uIDogcHVibGljIFRleHQgewog
cHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPENEQVRBU2VjdGlvbj4gY3JlYXRlKERvY3Vt
ZW50KiwgY29uc3QgU3RyaW5nJik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8Q0RBVEFTZWN0aW9u
PiBjcmVhdGUoRE9NU2NvcGUqLCBjb25zdCBTdHJpbmcmKTsKIAogcHJpdmF0ZToKLSAgICBDREFU
QVNlY3Rpb24oRG9jdW1lbnQqLCBjb25zdCBTdHJpbmcmKTsKKyAgICBDREFUQVNlY3Rpb24oRE9N
U2NvcGUqLCBjb25zdCBTdHJpbmcmKTsKIAogICAgIHZpcnR1YWwgU3RyaW5nIG5vZGVOYW1lKCkg
Y29uc3Q7CiAgICAgdmlydHVhbCBOb2RlVHlwZSBub2RlVHlwZSgpIGNvbnN0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL0NoYXJhY3RlckRhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9DaGFyYWN0ZXJEYXRhLmgKaW5kZXggMzFkYTYzY2IxYWYxMTA4MTAyM2Y1MWY4ZjllMjk4NDk0
YzVlYTkxYS4uY2NhM2U3NTI3OTFhYmI0NGFmMmYxODE5YTliNjJmN2U4OTgyNzY4NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NoYXJhY3RlckRhdGEuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vQ2hhcmFjdGVyRGF0YS5oCkBAIC00Niw4ICs0Niw4IEBAIHB1YmxpYzoKICAgICB2
b2lkIHBhcnNlckFwcGVuZERhdGEoY29uc3QgU3RyaW5nJik7CiAKIHByb3RlY3RlZDoKLSAgICBD
aGFyYWN0ZXJEYXRhKERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiB0ZXh0LCBDb25z
dHJ1Y3Rpb25UeXBlIHR5cGUpCi0gICAgICAgIDogTm9kZShkb2N1bWVudCwgdHlwZSkKKyAgICBD
aGFyYWN0ZXJEYXRhKERPTVNjb3BlKiBzY29wZSwgY29uc3QgU3RyaW5nJiB0ZXh0LCBDb25zdHJ1
Y3Rpb25UeXBlIHR5cGUpCisgICAgICAgIDogTm9kZShzY29wZSwgdHlwZSkKICAgICAgICAgLCBt
X2RhdGEodGV4dC5pbXBsKCkgPyB0ZXh0LmltcGwoKSA6IFN0cmluZ0ltcGw6OmVtcHR5KCkpCiAg
ICAgewogICAgICAgICBBU1NFUlQodHlwZSA9PSBDcmVhdGVDb21tZW50IHx8IHR5cGUgPT0gQ3Jl
YXRlVGV4dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29tbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9kb20vQ29tbWVudC5jcHAKaW5kZXggMDBmMTcyNGI0MTViMDRhYmNhYzgz
NGI1MDgxNDI1N2ViOTM5NDU2YS4uMWI5NjVmYWE3MDdkMGIyODUyNDU0OTZlMDI3NGZjNTc2YTlh
NDliNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Db21tZW50LmNwcApAQCAtMjYsMTQgKzI2LDE0IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotaW5saW5lIENvbW1lbnQ6OkNvbW1lbnQoRG9jdW1lbnQqIGRvY3Vt
ZW50LCBjb25zdCBTdHJpbmcmIHRleHQpCi0gICAgOiBDaGFyYWN0ZXJEYXRhKGRvY3VtZW50LCB0
ZXh0LCBDcmVhdGVDb21tZW50KQoraW5saW5lIENvbW1lbnQ6OkNvbW1lbnQoRE9NU2NvcGUqIHNj
b3BlLCBjb25zdCBTdHJpbmcmIHRleHQpCisgICAgOiBDaGFyYWN0ZXJEYXRhKHNjb3BlLCB0ZXh0
LCBDcmVhdGVDb21tZW50KQogewogfQogCi1QYXNzUmVmUHRyPENvbW1lbnQ+IENvbW1lbnQ6OmNy
ZWF0ZShEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgdGV4dCkKK1Bhc3NSZWZQdHI8
Q29tbWVudD4gQ29tbWVudDo6Y3JlYXRlKERPTVNjb3BlKiBzY29wZSwgY29uc3QgU3RyaW5nJiB0
ZXh0KQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ29tbWVudChkb2N1bWVudCwgdGV4dCkp
OworICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ29tbWVudChzY29wZSwgdGV4dCkpOwogfQogCiBT
dHJpbmcgQ29tbWVudDo6bm9kZU5hbWUoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL0NvbW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db21tZW50LmgKaW5kZXggYTAy
MTBjNGJlYmRlYWNkZjM5NjkxYmIxNDA3ZmQ5M2FhMDZhY2U5Ni4uMjhhODg4ODhiNDFlOWQ1ZGU2
YzAxOGJmMzUzZGY3NWExYjdjMzM0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0Nv
bW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29tbWVudC5oCkBAIC0yOSwxMCArMjks
MTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDb21tZW50IDogcHVibGljIENoYXJh
Y3RlckRhdGEgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPENvbW1lbnQ+IGNyZWF0
ZShEb2N1bWVudCosIGNvbnN0IFN0cmluZyYpOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPENvbW1l
bnQ+IGNyZWF0ZShET01TY29wZSosIGNvbnN0IFN0cmluZyYpOwogCiBwcml2YXRlOgotICAgIENv
bW1lbnQoRG9jdW1lbnQqLCBjb25zdCBTdHJpbmcmKTsKKyAgICBDb21tZW50KERPTVNjb3BlKiwg
Y29uc3QgU3RyaW5nJik7CiAKICAgICB2aXJ0dWFsIFN0cmluZyBub2RlTmFtZSgpIGNvbnN0Owog
ICAgIHZpcnR1YWwgTm9kZVR5cGUgbm9kZVR5cGUoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFp
bmVyTm9kZS5oCmluZGV4IDc2ZWIxYmQ3MTExNGE2MGI1NjU2N2ZhYTRlZmM5Y2U4NjA3ZjA4ZWQu
LmM3NzVjOTkwN2I2ODViNDVkMzkzMDk3YzY0YTYzZGMxODIzNGJhY2YgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L0NvbnRhaW5lck5vZGUuaApAQCAtODcsNyArODcsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJv
b2wgcG9zdEF0dGFjaENhbGxiYWNrc0FyZVN1c3BlbmRlZCgpOwogICAgIAogcHJvdGVjdGVkOgot
ICAgIENvbnRhaW5lck5vZGUoRG9jdW1lbnQqLCBDb25zdHJ1Y3Rpb25UeXBlID0gQ3JlYXRlQ29u
dGFpbmVyKTsKKyAgICBDb250YWluZXJOb2RlKERPTVNjb3BlKiwgQ29uc3RydWN0aW9uVHlwZSA9
IENyZWF0ZUNvbnRhaW5lcik7CiAKICAgICB2b2lkIHN1c3BlbmRQb3N0QXR0YWNoQ2FsbGJhY2tz
KCk7CiAgICAgdm9pZCByZXN1bWVQb3N0QXR0YWNoQ2FsbGJhY2tzKCk7CkBAIC0xMzUsOCArMTM1
LDggQEAgaW5saW5lIGNvbnN0IENvbnRhaW5lck5vZGUqIHRvQ29udGFpbmVyTm9kZShjb25zdCBO
b2RlKiBub2RlKQogLy8gVGhpcyB3aWxsIGNhdGNoIGFueW9uZSBkb2luZyBhbiB1bm5lY2Vzc2Fy
eSBjYXN0Lgogdm9pZCB0b0NvbnRhaW5lck5vZGUoY29uc3QgQ29udGFpbmVyTm9kZSopOwogCi1p
bmxpbmUgQ29udGFpbmVyTm9kZTo6Q29udGFpbmVyTm9kZShEb2N1bWVudCogZG9jdW1lbnQsIENv
bnN0cnVjdGlvblR5cGUgdHlwZSkKLSAgICA6IE5vZGUoZG9jdW1lbnQsIHR5cGUpCitpbmxpbmUg
Q29udGFpbmVyTm9kZTo6Q29udGFpbmVyTm9kZShET01TY29wZSogc2NvcGUsIENvbnN0cnVjdGlv
blR5cGUgdHlwZSkKKyAgICA6IE5vZGUoc2NvcGUsIHR5cGUpCiAgICAgLCBtX2ZpcnN0Q2hpbGQo
MCkKICAgICAsIG1fbGFzdENoaWxkKDApCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRE9NU2NvcGUuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9ET01TY29wZS5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjY1YTY2ZjI0Nzg2MmNhZjI5OTRmMjBmZjM0MTI1N2I1YjRmNGVhNjAKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NU2NvcGUuaApAQCAtMCwwICsxLDY2IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRp
c3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
KyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKyAKKyNpZm5k
ZWYgRE9NU2NvcGVfaAorI2RlZmluZSBET01TY29wZV9oIAorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK2NsYXNzIE5vZGU7CitjbGFzcyBEb2N1bWVudDsKKworY2xhc3MgRE9NU2NvcGUgeworcHVi
bGljOgorICAgIGVudW0gU2NvcGVUeXBlIHsKKyAgICAgIFNDT1BFX0RPQ1VNRU5ULAorICAgICAg
U0NPUEVfU0hBRE9XCisgICAgfTsKKworICAgIERPTVNjb3BlKFNjb3BlVHlwZSBzY29wZVR5cGUs
IERvY3VtZW50KiBkb2N1bWVudCA9IDApCisgICAgICA6IG1fc2NvcGVUeXBlKHNjb3BlVHlwZSkK
KyAgICAgICwgbV9kb2N1bWVudChkb2N1bWVudCkKKyAgICB7CisgICAgfQorCisgICAgU2NvcGVU
eXBlIHNjb3BlVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2NvcGVUeXBlOyB9CisgICAgYm9vbCBp
c0RvY3VtZW50U2NvcGUoKSBjb25zdCB7IHJldHVybiBtX3Njb3BlVHlwZSA9PSBTQ09QRV9ET0NV
TUVOVDsgfQorICAgIGJvb2wgaXNTaGFkb3dTY29wZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2NvcGVU
eXBlID09IFNDT1BFX1NIQURPVzsgfQorCisgICAgRG9jdW1lbnQqIGRvY3VtZW50KCkgY29uc3Qg
eyByZXR1cm4gbV9kb2N1bWVudDsgfQorICAgIHZvaWQgc2V0RG9jdW1lbnRQdHIoRG9jdW1lbnQq
IGRvY3VtZW50KSB7IG1fZG9jdW1lbnQgPSBkb2N1bWVudDsgfQorCitwcml2YXRlOgorICAgIFNj
b3BlVHlwZSBtX3Njb3BlVHlwZTsKKyAgICBEb2N1bWVudCogbV9kb2N1bWVudDsKK307CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIERPTVNjb3BlX2gKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuY3BwCmluZGV4IDI1MjBhZThjMmNlYmZkZTA3NTkzM2EzZTI5NGZlZjkxYjQ3NWExZmEu
Ljg5OGNjZTkwYmFkM2EzZjBjMGM5MzZiNzVjNDI3NmUzMTY0MzczOGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmNwcApAQCAtMzY5LDYgKzM2OSw3IEBAIHByaXZhdGU6CiAKIERvY3VtZW50OjpEb2N1
bWVudChGcmFtZSogZnJhbWUsIGNvbnN0IEtVUkwmIHVybCwgYm9vbCBpc1hIVE1MLCBib29sIGlz
SFRNTCwgY29uc3QgS1VSTCYgYmFzZVVSTCkKICAgICA6IENvbnRhaW5lck5vZGUoMCkKKyAgICAs
IERPTVNjb3BlKERPTVNjb3BlOjpTQ09QRV9ET0NVTUVOVCwgdGhpcykKICAgICAsIG1fY29tcGF0
aWJpbGl0eU1vZGUoTm9RdWlya3NNb2RlKQogICAgICwgbV9jb21wYXRpYmlsaXR5TW9kZUxvY2tl
ZChmYWxzZSkKICAgICAsIG1fZG9tVHJlZVZlcnNpb24oMCkKQEAgLTQzMyw3ICs0MzQsNyBAQCBE
b2N1bWVudDo6RG9jdW1lbnQoRnJhbWUqIGZyYW1lLCBjb25zdCBLVVJMJiB1cmwsIGJvb2wgaXNY
SFRNTCwgYm9vbCBpc0hUTUwsIGNvbgogICAgICwgbV9uZXh0UmVxdWVzdEFuaW1hdGlvbkZyYW1l
Q2FsbGJhY2tJZCgwKQogI2VuZGlmCiB7Ci0gICAgbV9kb2N1bWVudCA9IHRoaXM7CisgICAgc2V0
RE9NU2NvcGVQb2ludGVyKHRoaXMpOwogCiAgICAgbV9wYWdlR3JvdXBVc2VyU2hlZXRDYWNoZVZh
bGlkID0gZmFsc2U7CiAKQEAgLTU3Nyw3ICs1NzgsNyBAQCBEb2N1bWVudDo6fkRvY3VtZW50KCkK
ICAgICAvLyBpZiB0aGUgRG9jdW1lbnRQYXJzZXIgb3V0bGl2ZXMgdGhlIERvY3VtZW50IGl0IHdv
bid0IGNhdXNlIGJhZG5lc3MuCiAgICAgQVNTRVJUKCFtX3BhcnNlciB8fCBtX3BhcnNlci0+cmVm
Q291bnQoKSA9PSAxKTsKICAgICBkZXRhY2hQYXJzZXIoKTsKLSAgICBtX2RvY3VtZW50ID0gMDsK
KyAgICBzZXREb2N1bWVudFB0cigwKTsKICAgICBtX2NhY2hlZFJlc291cmNlTG9hZGVyLmNsZWFy
KCk7CiAKICAgICBtX3JlbmRlckFyZW5hLmNsZWFyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4
IDVhNzQ1ZTQ2YjAyMDY4YmE3MmVkYzFhNDdiODVmY2Y1OWYwYmU0OGEuLmJmNThjOTYyNzliMjg1
ZjJiYmI4M2NlNzc2NTY1NjVmNjA4NGZmY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBAIC0zMiw2
ICszMiw3IEBACiAjaW5jbHVkZSAiQ29sbGVjdGlvblR5cGUuaCIKICNpbmNsdWRlICJDb2xvci5o
IgogI2luY2x1ZGUgIkNvbnRhaW5lck5vZGUuaCIKKyNpbmNsdWRlICJET01TY29wZS5oIgogI2lu
Y2x1ZGUgIkRPTVRpbWVTdGFtcC5oIgogI2luY2x1ZGUgIkRvY3VtZW50T3JkZXJlZE1hcC5oIgog
I2luY2x1ZGUgIkRvY3VtZW50VGltaW5nLmgiCkBAIC00MCw2ICs0MSw3IEBACiAjaW5jbHVkZSAi
VGltZXIuaCIKICNpbmNsdWRlICJWaWV3cG9ydEFyZ3VtZW50cy5oIgogI2luY2x1ZGUgPHd0Zi9G
aXhlZEFycmF5Lmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvT3du
UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1Jl
ZlB0ci5oPgpAQCAtMjAxLDcgKzIwMyw3IEBAIGVudW0gUGFnZXNob3dFdmVudFBlcnNpc3RlbmNl
IHsKIAogZW51bSBTdHlsZVNlbGVjdG9yVXBkYXRlRmxhZyB7IFJlY2FsY1N0eWxlSW1tZWRpYXRl
bHksIERlZmVyUmVjYWxjU3R5bGUgfTsKIAotY2xhc3MgRG9jdW1lbnQgOiBwdWJsaWMgQ29udGFp
bmVyTm9kZSwgcHVibGljIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgeworY2xhc3MgRG9jdW1lbnQg
OiBwdWJsaWMgQ29udGFpbmVyTm9kZSwgcHVibGljIERPTVNjb3BlLCBwdWJsaWMgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8RG9jdW1lbnQ+
IGNyZWF0ZShGcmFtZSogZnJhbWUsIGNvbnN0IEtVUkwmIHVybCkKICAgICB7CkBAIC0yNDIsNyAr
MjQ0LDYgQEAgcHVibGljOgogICAgIH0KIAogICAgIC8vIERPTSBtZXRob2RzICYgYXR0cmlidXRl
cyBmb3IgRG9jdW1lbnQKLQogICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoYWJv
cnQpOwogICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoY2hhbmdlKTsKICAgICBE
RUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKGNsaWNrKTsKQEAgLTI5OCw2ICsyOTksOCBA
QCBwdWJsaWM6CiAgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUih3ZWJraXRmdWxs
c2NyZWVuY2hhbmdlKTsKICNlbmRpZgogCisgICAgdXNpbmcgRE9NU2NvcGU6OmRvY3VtZW50Owor
CiAgICAgVmlld3BvcnRBcmd1bWVudHMgdmlld3BvcnRBcmd1bWVudHMoKSBjb25zdCB7IHJldHVy
biBtX3ZpZXdwb3J0QXJndW1lbnRzOyB9CiAKICAgICBEb2N1bWVudFR5cGUqIGRvY3R5cGUoKSBj
b25zdCB7IHJldHVybiBtX2RvY1R5cGUuZ2V0KCk7IH0KQEAgLTE0MDMsMjYgKzE0MDYsMzkgQEAg
aW5saW5lIGJvb2wgRG9jdW1lbnQ6OmNvbnRhaW5zTXVsdGlwbGVFbGVtZW50c1dpdGhJZChjb25z
dCBBdG9taWNTdHJpbmcmIGlkKSBjb24KICAgICByZXR1cm4gbV9lbGVtZW50c0J5SWQuY29udGFp
bnNNdWx0aXBsZShpZC5pbXBsKCkpOwogfQogICAgIAotaW5saW5lIGJvb2wgTm9kZTo6aXNEb2N1
bWVudE5vZGUoKSBjb25zdAotewotICAgIHJldHVybiB0aGlzID09IG1fZG9jdW1lbnQ7Ci19Cisv
LyBGb3JlaWduIGlubGluZSBtZXRob2RzCisvLyAoaGVyZSBiZWNhdXNlIHRoZXkgdXNlIGEgRG9j
dW1lbnQgbWV0aG9kIGJ1dCB3ZSByZWFsbHkgd2FudCB0byBpbmxpbmUgdGhlbSkKIAotLy8gaGVy
ZSBiZWNhdXNlIGl0IHVzZXMgYSBEb2N1bWVudCBtZXRob2QgYnV0IHdlIHJlYWxseSB3YW50IHRv
IGlubGluZSBpdAotaW5saW5lIE5vZGU6Ok5vZGUoRG9jdW1lbnQqIGRvY3VtZW50LCBDb25zdHJ1
Y3Rpb25UeXBlIHR5cGUpCi0gICAgOiBtX2RvY3VtZW50KGRvY3VtZW50KQoraW5saW5lIE5vZGU6
Ok5vZGUoRE9NU2NvcGUqIHNjb3BlLCBDb25zdHJ1Y3Rpb25UeXBlIHR5cGUpCisgICAgOiBtX2Rv
bVNjb3BlKHNjb3BlKQogICAgICwgbV9wcmV2aW91cygwKQogICAgICwgbV9uZXh0KDApCiAgICAg
LCBtX3JlbmRlcmVyKDApCiAgICAgLCBtX25vZGVGbGFncyh0eXBlKQogewotICAgIGlmIChtX2Rv
Y3VtZW50KQotICAgICAgICBtX2RvY3VtZW50LT5zZWxmT25seVJlZigpOworICAgIGlmIChzY29w
ZSAmJiBzY29wZS0+ZG9jdW1lbnQoKSkKKyAgICAgICAgc2NvcGUtPmRvY3VtZW50KCktPnNlbGZP
bmx5UmVmKCk7CiAjaWYgIWRlZmluZWQoTkRFQlVHKSB8fCAoZGVmaW5lZChEVU1QX05PREVfU1RB
VElTVElDUykgJiYgRFVNUF9OT0RFX1NUQVRJU1RJQ1MpCiAgICAgdHJhY2tGb3JEZWJ1Z2dpbmco
KTsKICNlbmRpZgogfQogCitpbmxpbmUgRG9jdW1lbnQqIE5vZGU6OmRvY3VtZW50KCkgY29uc3QK
K3sKKyAgICBBU1NFUlQodGhpcyk7CisgICAgLy8gRklYTUU6IHRoZSBmb2xsb3dpbmcgQVNTRVJU
IGlzIHVzZWZ1bCwgYnV0IHByZXZlbnRzIHRoaXMgbWV0aG9kIHRvIGJlIHVzZWQKKyAgICAvLyB3
aXRoaW4gdGhlIGNvbnN0cnVjdG9yIG9yIGRlc3RydWN0b3IgZHVlIHRvIG5vZGVUeXBlKCkgYmVp
bmcgdmlydHVhbDoKKyAgICAvLworICAgIC8vIEFTU0VSVCgobV9zY29wZSAmJiBtX3Njb3BlLT5k
b2N1bWVudCgpKSB8fCAobm9kZVR5cGUoKSA9PSBET0NVTUVOVF9UWVBFX05PREUgJiYgIWluRG9j
dW1lbnQoKSkpOworICAgIHJldHVybiBtX2RvbVNjb3BlID8gbV9kb21TY29wZS0+ZG9jdW1lbnQo
KSA6IDA7Cit9CisKK2lubGluZSBib29sIE5vZGU6OmlzRG9jdW1lbnROb2RlKCkgY29uc3QKK3sK
KyAgICBBU1NFUlQodGhpcyk7CisgICAgcmV0dXJuIGRvY3VtZW50KCkgPT0gdGhpczsKK30KKwog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRG9jdW1lbnRfaApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL0VkaXRpbmdUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FZGl0aW5nVGV4dC5jcHAKaW5kZXggZTQxMmFkNjliMzE0MTMxMzdhNjQ4NDQ2MGI1MDU2YWQ3
MjAyNTgxMC4uYWZkNmY5YjM5YzVmOTIzYTY4ODczZjgwMWQ4ZmU5OGNkZWY2OThjNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VkaXRpbmdUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRWRpdGluZ1RleHQuY3BwCkBAIC0yNywxNCArMjcsMTQgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1pbmxpbmUgRWRpdGluZ1RleHQ6OkVkaXRpbmdUZXh0KERvY3VtZW50KiBk
b2N1bWVudCwgY29uc3QgU3RyaW5nJiBkYXRhKQotICAgIDogVGV4dChkb2N1bWVudCwgZGF0YSkK
K2lubGluZSBFZGl0aW5nVGV4dDo6RWRpdGluZ1RleHQoRE9NU2NvcGUqIHNjb3BlLCBjb25zdCBT
dHJpbmcmIGRhdGEpCisgICAgOiBUZXh0KHNjb3BlLCBkYXRhKQogewogfQogCi1QYXNzUmVmUHRy
PEVkaXRpbmdUZXh0PiBFZGl0aW5nVGV4dDo6Y3JlYXRlKERvY3VtZW50KiBkb2N1bWVudCwgY29u
c3QgU3RyaW5nJiBkYXRhKQorUGFzc1JlZlB0cjxFZGl0aW5nVGV4dD4gRWRpdGluZ1RleHQ6OmNy
ZWF0ZShET01TY29wZSogc2NvcGUsIGNvbnN0IFN0cmluZyYgZGF0YSkKIHsKLSAgICByZXR1cm4g
YWRvcHRSZWYobmV3IEVkaXRpbmdUZXh0KGRvY3VtZW50LCBkYXRhKSk7CisgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBFZGl0aW5nVGV4dChzY29wZSwgZGF0YSkpOwogfQogCiBib29sIEVkaXRpbmdU
ZXh0OjpyZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlKikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FZGl0aW5nVGV4dC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0VkaXRpbmdUZXh0
LmgKaW5kZXggMDgyMjNjMjE2YmQxOTM4NmMzMzhmZDdlMjRmNjlhZTM2MmU5ZDVkZC4uYmYyYjdk
NWZkZWQwZDJiNDc3ZjQwODA5NTI3N2M4ZjI2M2ZiNGMyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0VkaXRpbmdUZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VkaXRpbmdU
ZXh0LmgKQEAgLTI3LDEyICsyNywxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEVk
aXRpbmdUZXh0IDogcHVibGljIFRleHQgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRy
PEVkaXRpbmdUZXh0PiBjcmVhdGUoRG9jdW1lbnQqLCBjb25zdCBTdHJpbmcmKTsKKyAgICBzdGF0
aWMgUGFzc1JlZlB0cjxFZGl0aW5nVGV4dD4gY3JlYXRlKERPTVNjb3BlKiwgY29uc3QgU3RyaW5n
Jik7CiAKIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoUmVuZGVy
U3R5bGUgKik7CiAKLSAgICBFZGl0aW5nVGV4dChEb2N1bWVudCosIGNvbnN0IFN0cmluZyYpOwor
ICAgIEVkaXRpbmdUZXh0KERPTVNjb3BlKiwgY29uc3QgU3RyaW5nJik7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXggYzYyYWU0OWJmMjY4ZGY2
NDMzMWI5YWNkMGIyNTA5MWE1MWI3Yjk4OC4uZWI5ZTZjMzE4ODg4NjljZGRiMjI5ZDk3MDk2Njkz
MzNiYjYyMWRlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAtNTMsNiArNTMsNyBAQAogI2lu
Y2x1ZGUgIlJlbmRlckxheWVyLmgiCiAjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgogI2luY2x1ZGUg
IlJlbmRlcldpZGdldC5oIgorI2luY2x1ZGUgIlNoYWRvd1Njb3BlLmgiCiAjaW5jbHVkZSAiU2V0
dGluZ3MuaCIKICNpbmNsdWRlICJUZXh0SXRlcmF0b3IuaCIKICNpbmNsdWRlICJYTUxOYW1lcy5o
IgpAQCAtMTA4NSw3ICsxMDg2LDI5IEBAIHZvaWQgRWxlbWVudDo6cmVjYWxjU3R5bGUoU3R5bGVD
aGFuZ2UgY2hhbmdlKQogCiBOb2RlKiBFbGVtZW50OjpzaGFkb3dSb290KCkKIHsKLSAgICByZXR1
cm4gaGFzUmFyZURhdGEoKSA/IHJhcmVEYXRhKCktPm1fc2hhZG93Um9vdCA6IDA7CisgICAgaWYg
KCFoYXNSYXJlRGF0YSgpKQorICAgICAgICByZXR1cm4gMDsKKyAgICBTaGFkb3dTY29wZSogc2hh
ZG93U2NvcGUgPSByYXJlRGF0YSgpLT5tX3NoYWRvd1Njb3BlLmdldCgpOworICAgIGlmICghc2hh
ZG93U2NvcGUpCisgICAgICAgIHJldHVybiAwOworICAgIHJldHVybiBzaGFkb3dTY29wZS0+cm9v
dCgpLmdldCgpOworfQorCitTaGFkb3dTY29wZSogRWxlbWVudDo6c2hhZG93U2NvcGUoKSBjb25z
dAoreworICAgIEFTU0VSVChoYXNSYXJlRGF0YSgpICYmIHJhcmVEYXRhKCktPm1fc2hhZG93U2Nv
cGUpOworICAgIHJldHVybiByYXJlRGF0YSgpLT5tX3NoYWRvd1Njb3BlLmdldCgpOworfQorCitT
aGFkb3dTY29wZSogRWxlbWVudDo6ZW5zdXJlU2hhZG93U2NvcGUoKQoreworICAgIEVsZW1lbnRS
YXJlRGF0YSogcmFyZURhdGEgPSBlbnN1cmVSYXJlRGF0YSgpOworICAgIFNoYWRvd1Njb3BlKiBy
b290ID0gcmFyZURhdGEtPm1fc2hhZG93U2NvcGUuZ2V0KCk7CisgICAgaWYgKCFyb290KSB7Cisg
ICAgICAgIHJvb3QgPSBuZXcgU2hhZG93U2NvcGUodGhpcywgZG9jdW1lbnQoKSk7CisgICAgICAg
IHJhcmVEYXRhLT5tX3NoYWRvd1Njb3BlID0gcm9vdDsKKyAgICB9CisgICAgcmV0dXJuIHJvb3Q7
CiB9CiAKIHZvaWQgRWxlbWVudDo6c2V0U2hhZG93Um9vdChQYXNzUmVmUHRyPE5vZGU+IG5vZGUp
CkBAIC0xMDk5LDggKzExMjIsOSBAQCB2b2lkIEVsZW1lbnQ6OnNldFNoYWRvd1Jvb3QoUGFzc1Jl
ZlB0cjxOb2RlPiBub2RlKQogICAgIGlmICghbmV3Um9vdCkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgZW5zdXJlUmFyZURhdGEoKS0+bV9zaGFkb3dSb290ID0gbmV3Um9vdC5nZXQoKTsKLSAgICBu
ZXdSb290LT5zZXRTaGFkb3dIb3N0KHRoaXMpOworICAgIFNoYWRvd1Njb3BlKiBuZXdTaGFkb3dT
Y29wZSA9IG5ldyBTaGFkb3dTY29wZSh0aGlzLCBkb2N1bWVudCgpLCBuZXdSb290LmdldCgpKTsK
KyAgICBlbnN1cmVSYXJlRGF0YSgpLT5tX3NoYWRvd1Njb3BlID0gbmV3U2hhZG93U2NvcGU7Cisg
ICAgbmV3Um9vdC0+c2V0RE9NU2NvcGUobmV3U2hhZG93U2NvcGUpOwogfQogCiB2b2lkIEVsZW1l
bnQ6OnJlbW92ZVNoYWRvd1Jvb3QoKQpAQCAtMTEwOSwxNCArMTEzMywxOCBAQCB2b2lkIEVsZW1l
bnQ6OnJlbW92ZVNoYWRvd1Jvb3QoKQogICAgICAgICByZXR1cm47CiAKICAgICBFbGVtZW50UmFy
ZURhdGEqIGRhdGEgPSByYXJlRGF0YSgpOwotICAgIGlmIChSZWZQdHI8Tm9kZT4gb2xkUm9vdCA9
IGRhdGEtPm1fc2hhZG93Um9vdCkgewotICAgICAgICBkYXRhLT5tX3NoYWRvd1Jvb3QgPSAwOwot
ICAgICAgICBkb2N1bWVudCgpLT5yZW1vdmVGb2N1c2VkTm9kZU9mU3VidHJlZShvbGRSb290Lmdl
dCgpKTsKLSAgICAgICAgb2xkUm9vdC0+c2V0U2hhZG93SG9zdCgwKTsKLSAgICAgICAgaWYgKG9s
ZFJvb3QtPmluRG9jdW1lbnQoKSkKLSAgICAgICAgICAgIG9sZFJvb3QtPnJlbW92ZWRGcm9tRG9j
dW1lbnQoKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgb2xkUm9vdC0+cmVtb3ZlZEZyb21U
cmVlKHRydWUpOworCisgICAgaWYgKGRhdGEtPm1fc2hhZG93U2NvcGUpIHsKKyAgICAgICAgUmVm
UHRyPE5vZGU+IG9sZFJvb3QgPSBkYXRhLT5tX3NoYWRvd1Njb3BlLT5yb290KCk7CisgICAgICAg
IEFTU0VSVChvbGRSb290KTsKKyAgICAgICAgaWYgKG9sZFJvb3QpIHsKKyAgICAgICAgICAgIGRv
Y3VtZW50KCktPnJlbW92ZUZvY3VzZWROb2RlT2ZTdWJ0cmVlKG9sZFJvb3QuZ2V0KCkpOworICAg
ICAgICAgICAgaWYgKG9sZFJvb3QtPmluRG9jdW1lbnQoKSkKKyAgICAgICAgICAgICAgICBvbGRS
b290LT5yZW1vdmVkRnJvbURvY3VtZW50KCk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICAgICAgb2xkUm9vdC0+cmVtb3ZlZEZyb21UcmVlKHRydWUpOworICAgICAgICAgICAgZGF0YS0+
bV9zaGFkb3dTY29wZS5jbGVhcigpOworICAgICAgICB9CiAgICAgfQogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1l
bnQuaAppbmRleCBkZTQyYTVmOTk1MDNkYWQxNjcyODA5YWZkNGJjZWY2YTYyNzdmYmIxLi42ZjU3
YmE3ZjE1ODBhM2RkMzM5MmQxODk5YTQ3MDM0OTJjMmE2OTM3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgK
QEAgLTIzMCw2ICsyMzAsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNy
ZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKICAgICB2aXJ0dWFsIHZv
aWQgcmVjYWxjU3R5bGUoU3R5bGVDaGFuZ2UgPSBOb0NoYW5nZSk7CiAKKyAgICBTaGFkb3dTY29w
ZSogc2hhZG93U2NvcGUoKSBjb25zdDsKKyAgICBTaGFkb3dTY29wZSogZW5zdXJlU2hhZG93U2Nv
cGUoKTsKKwogICAgIE5vZGUqIHNoYWRvd1Jvb3QoKTsKICAgICB2b2lkIHNldFNoYWRvd1Jvb3Qo
UGFzc1JlZlB0cjxOb2RlPik7CiAgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIHNoYWRv
d1BzZXVkb0lkKCkgY29uc3Q7CkBAIC0zNDAsOCArMzQzLDggQEAgcHVibGljOgogICAgIHZpcnR1
YWwgYm9vbCBpc1NwZWxsQ2hlY2tpbmdFbmFibGVkKCkgY29uc3Q7CiAKIHByb3RlY3RlZDoKLSAg
ICBFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVu
dCwgQ29uc3RydWN0aW9uVHlwZSB0eXBlKQotICAgICAgICA6IENvbnRhaW5lck5vZGUoZG9jdW1l
bnQsIHR5cGUpCisgICAgRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBET01T
Y29wZSogc2NvcGUsIENvbnN0cnVjdGlvblR5cGUgdHlwZSkKKyAgICAgICAgOiBDb250YWluZXJO
b2RlKHNjb3BlLCB0eXBlKQogICAgICAgICAsIG1fdGFnTmFtZSh0YWdOYW1lKQogICAgIHsKICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFJhcmVEYXRhLmggYi9T
b3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFJhcmVEYXRhLmgKaW5kZXggODE4YTJjMmYwZmY5ODdk
YzVjZDYzYTk3Mjk1YmVjNWI4MGVkNGEyNS4uN2RkZmYyMWIwNDIyNTk2NDY5NDRmYjI4NmJiOThm
ZjI0M2FiYzg5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRSYXJlRGF0
YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50UmFyZURhdGEuaApAQCAtMjYsNiAr
MjYsNyBAQAogI2luY2x1ZGUgIkRhdGFzZXRET01TdHJpbmdNYXAuaCIKICNpbmNsdWRlICJFbGVt
ZW50LmgiCiAjaW5jbHVkZSAiTm9kZVJhcmVEYXRhLmgiCisjaW5jbHVkZSAiU2hhZG93U2NvcGUu
aCIKICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQy
LDggKzQzLDggQEAgcHVibGljOgogCiAgICAgSW50U2l6ZSBtX21pbmltdW1TaXplRm9yUmVzaXpp
bmc7CiAgICAgUmVmUHRyPFJlbmRlclN0eWxlPiBtX2NvbXB1dGVkU3R5bGU7Ci0gICAgTm9kZSog
bV9zaGFkb3dSb290OwogCisgICAgT3duUHRyPFNoYWRvd1Njb3BlPiBtX3NoYWRvd1Njb3BlOwog
ICAgIE93blB0cjxEYXRhc2V0RE9NU3RyaW5nTWFwPiBtX2RhdGFzZXRET01TdHJpbmdNYXA7CiAg
ICAgT3duUHRyPENsYXNzTGlzdD4gbV9jbGFzc0xpc3Q7CiB9OwpAQCAtNTUsMTMgKzU2LDEyIEBA
IGlubGluZSBJbnRTaXplIGRlZmF1bHRNaW5pbXVtU2l6ZUZvclJlc2l6aW5nKCkKIAogaW5saW5l
IEVsZW1lbnRSYXJlRGF0YTo6RWxlbWVudFJhcmVEYXRhKCkKICAgICA6IG1fbWluaW11bVNpemVG
b3JSZXNpemluZyhkZWZhdWx0TWluaW11bVNpemVGb3JSZXNpemluZygpKQotICAgICwgbV9zaGFk
b3dSb290KDApCiB7CiB9CiAKIGlubGluZSBFbGVtZW50UmFyZURhdGE6On5FbGVtZW50UmFyZURh
dGEoKQogewotICAgIEFTU0VSVCghbV9zaGFkb3dSb290KTsKKyAgICBBU1NFUlQoIW1fc2hhZG93
U2NvcGUpOwogfQogCiBpbmxpbmUgdm9pZCBFbGVtZW50UmFyZURhdGE6OnJlc2V0Q29tcHV0ZWRT
dHlsZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRW50aXR5UmVmZXJlbmNlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbnRpdHlSZWZlcmVuY2UuY3BwCmluZGV4IDcyOTQ0ZWM1
MjEwNzIwZmNkN2M2NGY3NzFiY2NmNjc3MTAwMDNjZDMuLjlmMGMyNzE0NzJiZWZlMGQ2ZjYxZWYz
MmQzN2Y1ZTYwMmU3OWRlNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbnRpdHlS
ZWZlcmVuY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbnRpdHlSZWZlcmVuY2UuY3Bw
CkBAIC0yNSwxNSArMjUsMTUgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1pbmxpbmUgRW50
aXR5UmVmZXJlbmNlOjpFbnRpdHlSZWZlcmVuY2UoRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBT
dHJpbmcmIGVudGl0eU5hbWUpCi0gICAgOiBDb250YWluZXJOb2RlKGRvY3VtZW50KQoraW5saW5l
IEVudGl0eVJlZmVyZW5jZTo6RW50aXR5UmVmZXJlbmNlKERPTVNjb3BlKiBzY29wZSwgY29uc3Qg
U3RyaW5nJiBlbnRpdHlOYW1lKQorICAgIDogQ29udGFpbmVyTm9kZShzY29wZSkKICAgICAsIG1f
ZW50aXR5TmFtZShlbnRpdHlOYW1lKQogewogfQogCi1QYXNzUmVmUHRyPEVudGl0eVJlZmVyZW5j
ZT4gRW50aXR5UmVmZXJlbmNlOjpjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBTdHJp
bmcmIGVudGl0eU5hbWUpCitQYXNzUmVmUHRyPEVudGl0eVJlZmVyZW5jZT4gRW50aXR5UmVmZXJl
bmNlOjpjcmVhdGUoRE9NU2NvcGUqIHNjb3BlLCBjb25zdCBTdHJpbmcmIGVudGl0eU5hbWUpCiB7
Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBFbnRpdHlSZWZlcmVuY2UoZG9jdW1lbnQsIGVudGl0
eU5hbWUpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEVudGl0eVJlZmVyZW5jZShzY29wZSwg
ZW50aXR5TmFtZSkpOwogfQogCiBTdHJpbmcgRW50aXR5UmVmZXJlbmNlOjpub2RlTmFtZSgpIGNv
bnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRW50aXR5UmVmZXJlbmNlLmggYi9T
b3VyY2UvV2ViQ29yZS9kb20vRW50aXR5UmVmZXJlbmNlLmgKaW5kZXggN2E2ZjZjMzZiYWZhOGY5
MjNiZDE4YWZmMzRiNjhiMzc2YzNmNTkyNy4uMzViOTYzMTIyZDYyYWI3N2JhODYzMTlkZWU5Mjk3
MDIwN2M4M2ZiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VudGl0eVJlZmVyZW5j
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbnRpdHlSZWZlcmVuY2UuaApAQCAtMjgsMTAg
KzI4LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRW50aXR5UmVmZXJlbmNlIDog
cHVibGljIENvbnRhaW5lck5vZGUgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEVu
dGl0eVJlZmVyZW5jZT4gY3JlYXRlKERvY3VtZW50KiwgY29uc3QgU3RyaW5nJiBlbnRpdHlOYW1l
KTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxFbnRpdHlSZWZlcmVuY2U+IGNyZWF0ZShET01TY29w
ZSosIGNvbnN0IFN0cmluZyYgZW50aXR5TmFtZSk7CiAKIHByaXZhdGU6Ci0gICAgRW50aXR5UmVm
ZXJlbmNlKERvY3VtZW50KiwgY29uc3QgU3RyaW5nJiBlbnRpdHlOYW1lKTsKKyAgICBFbnRpdHlS
ZWZlcmVuY2UoRE9NU2NvcGUqLCBjb25zdCBTdHJpbmcmIGVudGl0eU5hbWUpOwogCiAgICAgdmly
dHVhbCBTdHJpbmcgbm9kZU5hbWUoKSBjb25zdDsKICAgICB2aXJ0dWFsIE5vZGVUeXBlIG5vZGVU
eXBlKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKaW5kZXggZmVjMmNmZmU2MzdmOTlmYjUxZmViZGI0
OWNlNjZmMDU5ZmM5NjVmNy4uM2ZlMzYwNDg4NDhkMWVkYTc4ODNiYTQxN2FmMDc2MDIzZDc0ZTlk
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Ob2RlLmNwcApAQCAtNzYsNiArNzYsNyBAQAogI2luY2x1ZGUgIlNjb3BlZEV2
ZW50UXVldWUuaCIKICNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiU2Vs
ZWN0b3JOb2RlTGlzdC5oIgorI2luY2x1ZGUgIlNoYWRvd1Njb3BlLmgiCiAjaW5jbHVkZSAiU3Rh
dGljTm9kZUxpc3QuaCIKICNpbmNsdWRlICJUYWdOb2RlTGlzdC5oIgogI2luY2x1ZGUgIlRleHQu
aCIKQEAgLTM3MywxMSArMzc0LDEzIEBAIE5vZGU6On5Ob2RlKCkKICAgICBsaXZlTm9kZVNldC5y
ZW1vdmUodGhpcyk7CiAjZW5kaWYKIAorICAgIERvY3VtZW50KiBkb2MgPSBkb2N1bWVudCgpOwor
CiAgICAgaWYgKCFoYXNSYXJlRGF0YSgpKQogICAgICAgICBBU1NFUlQoIU5vZGVSYXJlRGF0YTo6
cmFyZURhdGFNYXAoKS5jb250YWlucyh0aGlzKSk7CiAgICAgZWxzZSB7Ci0gICAgICAgIGlmICht
X2RvY3VtZW50ICYmIHJhcmVEYXRhKCktPm5vZGVMaXN0cygpKQotICAgICAgICAgICAgbV9kb2N1
bWVudC0+cmVtb3ZlTm9kZUxpc3RDYWNoZSgpOworICAgICAgICBpZiAoZG9jICYmIHJhcmVEYXRh
KCktPm5vZGVMaXN0cygpKQorICAgICAgICAgICAgZG9jLT5yZW1vdmVOb2RlTGlzdENhY2hlKCk7
CiAgICAgICAgIAogICAgICAgICBOb2RlUmFyZURhdGE6Ok5vZGVSYXJlRGF0YU1hcCYgZGF0YU1h
cCA9IE5vZGVSYXJlRGF0YTo6cmFyZURhdGFNYXAoKTsKICAgICAgICAgTm9kZVJhcmVEYXRhOjpO
b2RlUmFyZURhdGFNYXA6Oml0ZXJhdG9yIGl0ID0gZGF0YU1hcC5maW5kKHRoaXMpOwpAQCAtMzg5
LDE2ICszOTIsMTYgQEAgTm9kZTo6fk5vZGUoKQogICAgIGlmIChyZW5kZXJlcigpKQogICAgICAg
ICBkZXRhY2goKTsKIAotICAgIGlmIChBWE9iamVjdENhY2hlOjphY2Nlc3NpYmlsaXR5RW5hYmxl
ZCgpICYmIG1fZG9jdW1lbnQgJiYgbV9kb2N1bWVudC0+YXhPYmplY3RDYWNoZUV4aXN0cygpKQot
ICAgICAgICBtX2RvY3VtZW50LT5heE9iamVjdENhY2hlKCktPnJlbW92ZU5vZGVGb3JVc2UodGhp
cyk7CisgICAgaWYgKEFYT2JqZWN0Q2FjaGU6OmFjY2Vzc2liaWxpdHlFbmFibGVkKCkgJiYgZG9j
ICYmIGRvYy0+YXhPYmplY3RDYWNoZUV4aXN0cygpKQorICAgICAgICBkb2MtPmF4T2JqZWN0Q2Fj
aGUoKS0+cmVtb3ZlTm9kZUZvclVzZSh0aGlzKTsKICAgICAKICAgICBpZiAobV9wcmV2aW91cykK
ICAgICAgICAgbV9wcmV2aW91cy0+c2V0TmV4dFNpYmxpbmcoMCk7CiAgICAgaWYgKG1fbmV4dCkK
ICAgICAgICAgbV9uZXh0LT5zZXRQcmV2aW91c1NpYmxpbmcoMCk7CiAKLSAgICBpZiAobV9kb2N1
bWVudCkKLSAgICAgICAgbV9kb2N1bWVudC0+c2VsZk9ubHlEZXJlZigpOworICAgIGlmIChkb2Mp
CisgICAgICAgIGRvYy0+c2VsZk9ubHlEZXJlZigpOwogfQogCiAjaWZkZWYgTkRFQlVHCkBAIC00
MjgsNDAgKzQzMSw3MCBAQCBzdGF0aWMgdm9pZCBzZXREaWRNb3ZlVG9OZXdPd25lckRvY3VtZW50
V2FzQ2FsbGVkKGJvb2wgd2FzQ2FsbGVkKQogICAgIAogI2VuZGlmCiAgICAgCi12b2lkIE5vZGU6
OnNldERvY3VtZW50KERvY3VtZW50KiBkb2N1bWVudCkKK3ZvaWQgTm9kZTo6c2V0RG9jdW1lbnQo
RG9jdW1lbnQqIG5ld0RvY3VtZW50KQogewotICAgIEFTU0VSVCghaW5Eb2N1bWVudCgpIHx8IG1f
ZG9jdW1lbnQgPT0gZG9jdW1lbnQpOwotICAgIGlmIChpbkRvY3VtZW50KCkgfHwgbV9kb2N1bWVu
dCA9PSBkb2N1bWVudCkKKyAgICBBU1NFUlQoIWlzRG9jdW1lbnROb2RlKCkpOworICAgIERvY3Vt
ZW50KiBjdXJyZW50RG9jdW1lbnQgPSBkb2N1bWVudCgpOworCisgICAgQVNTRVJUKCFpbkRvY3Vt
ZW50KCkgfHwgY3VycmVudERvY3VtZW50ID09IG5ld0RvY3VtZW50KTsKKyAgICBpZiAoaW5Eb2N1
bWVudCgpIHx8IGN1cnJlbnREb2N1bWVudCA9PSBuZXdEb2N1bWVudCkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgZG9jdW1lbnQtPnNlbGZPbmx5UmVmKCk7CisgICAgbmV3RG9jdW1lbnQtPnNlbGZP
bmx5UmVmKCk7CiAKICAgICBzZXRXaWxsTW92ZVRvTmV3T3duZXJEb2N1bWVudFdhc0NhbGxlZChm
YWxzZSk7CiAgICAgd2lsbE1vdmVUb05ld093bmVyRG9jdW1lbnQoKTsKICAgICBBU1NFUlQod2ls
bE1vdmVUb05ld093bmVyRG9jdW1lbnRXYXNDYWxsZWQpOwogCiAjaWYgVVNFKEpTQykKLSAgICB1
cGRhdGVET01Ob2RlRG9jdW1lbnQodGhpcywgbV9kb2N1bWVudCwgZG9jdW1lbnQpOworICAgIHVw
ZGF0ZURPTU5vZGVEb2N1bWVudCh0aGlzLCBjdXJyZW50RG9jdW1lbnQsIG5ld0RvY3VtZW50KTsK
ICNlbmRpZgogCiAgICAgaWYgKGhhc1JhcmVEYXRhKCkgJiYgcmFyZURhdGEoKS0+bm9kZUxpc3Rz
KCkpIHsKLSAgICAgICAgaWYgKG1fZG9jdW1lbnQpCi0gICAgICAgICAgICBtX2RvY3VtZW50LT5y
ZW1vdmVOb2RlTGlzdENhY2hlKCk7Ci0gICAgICAgIGRvY3VtZW50LT5hZGROb2RlTGlzdENhY2hl
KCk7CisgICAgICAgIGlmIChjdXJyZW50RG9jdW1lbnQpCisgICAgICAgICAgICBjdXJyZW50RG9j
dW1lbnQtPnJlbW92ZU5vZGVMaXN0Q2FjaGUoKTsKKyAgICAgICAgbmV3RG9jdW1lbnQtPmFkZE5v
ZGVMaXN0Q2FjaGUoKTsKICAgICB9CiAKLSAgICBpZiAobV9kb2N1bWVudCkgewotICAgICAgICBt
X2RvY3VtZW50LT5tb3ZlTm9kZUl0ZXJhdG9yc1RvTmV3RG9jdW1lbnQodGhpcywgZG9jdW1lbnQp
OwotICAgICAgICBtX2RvY3VtZW50LT5zZWxmT25seURlcmVmKCk7CisgICAgaWYgKGN1cnJlbnRE
b2N1bWVudCkgeworICAgICAgICBjdXJyZW50RG9jdW1lbnQtPm1vdmVOb2RlSXRlcmF0b3JzVG9O
ZXdEb2N1bWVudCh0aGlzLCBuZXdEb2N1bWVudCk7CisgICAgICAgIGN1cnJlbnREb2N1bWVudC0+
c2VsZk9ubHlEZXJlZigpOwogICAgIH0KIAotICAgIG1fZG9jdW1lbnQgPSBkb2N1bWVudDsKKyAg
ICAvLyBPbmx5IHNldCB0aGUgc2NvcGUgcG9pbnRlciB0byB0aGUgbmV3IGRvY3VtZW50IGlmIHdl
IGFyZW4ndCBpbnNpZGUgYSBzaGFkb3cgc2NvcGUuCisgICAgaWYgKCFtX2RvbVNjb3BlIHx8IG1f
ZG9tU2NvcGUtPmlzRG9jdW1lbnRTY29wZSgpKQorICAgICAgICBzZXRET01TY29wZShuZXdEb2N1
bWVudCk7CiAKICAgICBzZXREaWRNb3ZlVG9OZXdPd25lckRvY3VtZW50V2FzQ2FsbGVkKGZhbHNl
KTsKICAgICBkaWRNb3ZlVG9OZXdPd25lckRvY3VtZW50KCk7CiAgICAgQVNTRVJUKGRpZE1vdmVU
b05ld093bmVyRG9jdW1lbnRXYXNDYWxsZWQpOwogfQogCit2b2lkIE5vZGU6OnNldERvY3VtZW50
UmVjdXJzaXZlbHkoRG9jdW1lbnQqIGRvY3VtZW50KQoreworICAgIC8vIEZJWE1FOiBUbyBtYXRj
aCBHZWNrbywgd2Ugc2hvdWxkIGRvIHRoaXMgZm9yIG5vZGVzIHRoYXQgYXJlIGFscmVhZHkgaW4g
dGhlIGRvY3VtZW50IGFzIHdlbGwuCisgICAgaWYgKHRoaXMtPmRvY3VtZW50KCkgPT0gZG9jdW1l
bnQgfHwgdGhpcy0+aW5Eb2N1bWVudCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBmb3IgKE5v
ZGUqIG5vZGUgPSB0aGlzOyBub2RlOyBub2RlID0gbm9kZS0+dHJhdmVyc2VOZXh0Tm9kZSh0aGlz
KSkgeworICAgICAgICBub2RlLT5zZXREb2N1bWVudChkb2N1bWVudCk7CisgICAgICAgIGlmICgh
bm9kZS0+aXNFbGVtZW50Tm9kZSgpKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGlm
IChOb2RlKiBzaGFkb3cgPSB0b0VsZW1lbnQobm9kZSktPnNoYWRvd1Jvb3QoKSkKKyAgICAgICAg
ICAgIHNoYWRvdy0+c2V0RG9jdW1lbnRSZWN1cnNpdmVseShkb2N1bWVudCk7CisgICAgfQorfQor
Cit2b2lkIE5vZGU6OnNldERPTVNjb3BlKERPTVNjb3BlKiBzY29wZSkKK3sKKyAgICAvLyBCZWxv
dyBzaG9ydGN1dCBhc3N1bWVzIHRoYXQgc2NvcGUgcG9pbnRlcnMgd2l0aGluIGEgKHN1Yi0pdHJl
ZSBhcmUgY29uc2lzdGVudC4KKyAgICBpZiAobV9kb21TY29wZSA9PSBzY29wZSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgZm9yIChOb2RlKiBub2RlID0gdGhpczsgbm9kZTsgbm9kZSA9IG5vZGUt
PnRyYXZlcnNlTmV4dE5vZGUodGhpcykpCisgICAgICAgIG5vZGUtPnNldERPTVNjb3BlUG9pbnRl
cihzY29wZSk7Cit9CisKIE5vZGVSYXJlRGF0YSogTm9kZTo6cmFyZURhdGEoKSBjb25zdAogewog
ICAgIEFTU0VSVChoYXNSYXJlRGF0YSgpKTsKQEAgLTQ5Nyw4ICs1MzAsMTUgQEAgdm9pZCBOb2Rl
OjpzZXRTaGFkb3dIb3N0KEVsZW1lbnQqIGhvc3QpCiAgICAgICAgIHNldEZsYWcoSXNTaGFkb3dS
b290RmxhZyk7CiAgICAgZWxzZQogICAgICAgICBjbGVhckZsYWcoSXNTaGFkb3dSb290RmxhZyk7
Ci0KICAgICBzZXRQYXJlbnQoaG9zdCk7CisgICAgCisgICAgLy8gQWxzbyBtYWtlIHN1cmUgdGhl
IHNjb3BlIHBvaW50ZXJzIGFyZSB1cGRhdGVkIGNvcnJlY3RseS4KKyAgICBpZiAoaG9zdCkgewor
ICAgICAgICBBU1NFUlQoaG9zdC0+c2hhZG93U2NvcGUoKSk7CisgICAgICAgIHNldERPTVNjb3Bl
KGhvc3QtPnNoYWRvd1Njb3BlKCkpOworICAgIH0gZWxzZSB7CisgICAgICAgIHNldERPTVNjb3Bl
KGRvY3VtZW50KCkpOworICAgIH0KIH0KIAogc2hvcnQgTm9kZTo6dGFiSW5kZXgoKSBjb25zdApA
QCAtNzUyLDIxICs3OTIsNiBAQCBib29sIE5vZGU6Omhhc05vbkVtcHR5Qm91bmRpbmdCb3goKSBj
b25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBOb2RlOjpzZXREb2N1bWVudFJlY3Vy
c2l2ZWx5KERvY3VtZW50KiBkb2N1bWVudCkKLXsKLSAgICAvLyBGSVhNRTogVG8gbWF0Y2ggR2Vj
a28sIHdlIHNob3VsZCBkbyB0aGlzIGZvciBub2RlcyB0aGF0IGFyZSBhbHJlYWR5IGluIHRoZSBk
b2N1bWVudCBhcyB3ZWxsLgotICAgIGlmICh0aGlzLT5kb2N1bWVudCgpID09IGRvY3VtZW50IHx8
IHRoaXMtPmluRG9jdW1lbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZm9yIChOb2RlKiBu
b2RlID0gdGhpczsgbm9kZTsgbm9kZSA9IG5vZGUtPnRyYXZlcnNlTmV4dE5vZGUodGhpcykpIHsK
LSAgICAgICAgbm9kZS0+c2V0RG9jdW1lbnQoZG9jdW1lbnQpOwotICAgICAgICBpZiAoIW5vZGUt
PmlzRWxlbWVudE5vZGUoKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBpZiAoTm9k
ZSogc2hhZG93ID0gdG9FbGVtZW50KG5vZGUpLT5zaGFkb3dSb290KCkpCi0gICAgICAgICAgICBz
aGFkb3ctPnNldERvY3VtZW50UmVjdXJzaXZlbHkoZG9jdW1lbnQpOwotICAgIH0KLX0KLQogaW5s
aW5lIHZvaWQgTm9kZTo6c2V0U3R5bGVDaGFuZ2UoU3R5bGVDaGFuZ2VUeXBlIGNoYW5nZVR5cGUp
CiB7CiAgICAgbV9ub2RlRmxhZ3MgPSAobV9ub2RlRmxhZ3MgJiB+U3R5bGVDaGFuZ2VNYXNrKSB8
IGNoYW5nZVR5cGU7CkBAIC04NzksNyArOTA0LDcgQEAgdm9pZCBOb2RlOjpyZWdpc3RlckR5bmFt
aWNOb2RlTGlzdChEeW5hbWljTm9kZUxpc3QqIGxpc3QpCiAgICAgaWYgKCFkYXRhLT5ub2RlTGlz
dHMoKSkgewogICAgICAgICBkYXRhLT5zZXROb2RlTGlzdHMoTm9kZUxpc3RzTm9kZURhdGE6OmNy
ZWF0ZSgpKTsKICAgICAgICAgZG9jdW1lbnQoKS0+YWRkTm9kZUxpc3RDYWNoZSgpOwotICAgIH0g
ZWxzZSBpZiAoIW1fZG9jdW1lbnQgfHwgIW1fZG9jdW1lbnQtPmhhc05vZGVMaXN0Q2FjaGVzKCkp
IHsKKyAgICB9IGVsc2UgaWYgKCFkb2N1bWVudCgpIHx8ICFkb2N1bWVudCgpLT5oYXNOb2RlTGlz
dENhY2hlcygpKSB7CiAgICAgICAgIC8vIFdlIGhhdmVuJ3QgYmVlbiByZWNlaXZpbmcgbm90aWZp
Y2F0aW9ucyB3aGlsZSB0aGVyZSB3ZXJlIG5vIHJlZ2lzdGVyZWQgbGlzdHMsIHNvIHRoZSBjYWNo
ZSBpcyBpbnZhbGlkIG5vdy4KICAgICAgICAgZGF0YS0+bm9kZUxpc3RzKCktPmludmFsaWRhdGVD
YWNoZXMoKTsKICAgICB9CkBAIC0xNDgwLDIzICsxNTA1LDI5IEBAIE5vZGUqIE5vZGU6OnNoYWRv
d0FuY2VzdG9yTm9kZSgpCiAgICAgcmV0dXJuIHRoaXM7CiB9CiAKLU5vZGUqIE5vZGU6OnNoYWRv
d1RyZWVSb290Tm9kZSgpCisjaWZuZGVmIE5ERUJVRworc3RhdGljIE5vZGUqIGRlYnVnRmluZFNo
YWRvd1RyZWVSb290Tm9kZShOb2RlKiBub2RlKQogewotICAgIE5vZGUqIHJvb3QgPSB0aGlzOwot
ICAgIHdoaWxlIChyb290KSB7Ci0gICAgICAgIGlmIChyb290LT5pc1NoYWRvd1Jvb3QoKSkKLSAg
ICAgICAgICAgIHJldHVybiByb290OwotICAgICAgICByb290ID0gcm9vdC0+cGFyZW50Tm9kZUd1
YXJhbnRlZWRIb3N0RnJlZSgpOworICAgIHdoaWxlIChub2RlKSB7CisgICAgICAgIGlmIChub2Rl
LT5nZXRGbGFnKE5vZGU6OklzU2hhZG93Um9vdEZsYWcpKQorICAgICAgICAgICAgcmV0dXJuIG5v
ZGU7CisgICAgICAgIG5vZGUgPSBub2RlLT5wYXJlbnROb2RlR3VhcmFudGVlZEhvc3RGcmVlKCk7
CiAgICAgfQogICAgIHJldHVybiAwOwogfQorI2VuZGlmCisKK05vZGUqIE5vZGU6OnNoYWRvd1Ry
ZWVSb290Tm9kZSgpCit7CisgICAgTm9kZSogcm9vdCA9IGlzSW5TaGFkb3dUcmVlKCkgPyB0b1No
YWRvd1Njb3BlKG1fZG9tU2NvcGUpLT5yb290KCkuZ2V0KCkgOiAwOworICAgIEFTU0VSVChkZWJ1
Z0ZpbmRTaGFkb3dUcmVlUm9vdE5vZGUodGhpcykgPT0gcm9vdCk7CisgICAgcmV0dXJuIHJvb3Q7
Cit9CiAKIGJvb2wgTm9kZTo6aXNJblNoYWRvd1RyZWUoKQogewotICAgIGZvciAoTm9kZSogbiA9
IHRoaXM7IG47IG4gPSBuLT5wYXJlbnROb2RlKCkpCi0gICAgICAgIGlmIChuLT5pc1NoYWRvd1Jv
b3QoKSkKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgIHJldHVybiBmYWxzZTsKKyAgICBB
U1NFUlQoKG1fZG9tU2NvcGUgJiYgbV9kb21TY29wZS0+aXNTaGFkb3dTY29wZSgpKSA9PSAhIWRl
YnVnRmluZFNoYWRvd1RyZWVSb290Tm9kZSh0aGlzKSk7CisgICAgcmV0dXJuIG1fZG9tU2NvcGUg
JiYgbV9kb21TY29wZS0+aXNTaGFkb3dTY29wZSgpOwogfQogCiBib29sIE5vZGU6OmlzQmxvY2tG
bG93KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTm9kZS5oCmluZGV4IDc0ZTFjYzQ3ZmY4YWViZWIxZTI2MDZkNjFhZWFm
NTkwODg3MDYyNzcuLjNjZjU0MmQ3YzBmODMxZTA3YzM5NTFiODYxOGM1NjY0YTI3OWU3ZjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL05vZGUuaApAQCAtNDYsNiArNDYsNyBAQCBjbGFzcyBBdHRyaWJ1dGU7CiBjbGFzcyBDbGFz
c05vZGVMaXN0OwogY2xhc3MgQ29udGFpbmVyTm9kZTsKIGNsYXNzIERvY3VtZW50OworY2xhc3Mg
RE9NU2NvcGU7CiBjbGFzcyBEeW5hbWljTm9kZUxpc3Q7CiBjbGFzcyBFbGVtZW50OwogY2xhc3Mg
RXZlbnQ7CkBAIC03MCwxMCArNzEsMTAgQEAgY2xhc3MgUmVuZGVyQm94OwogY2xhc3MgUmVuZGVy
Qm94TW9kZWxPYmplY3Q7CiBjbGFzcyBSZW5kZXJPYmplY3Q7CiBjbGFzcyBSZW5kZXJTdHlsZTsK
K2NsYXNzIFNoYWRvd1Njb3BlOwogY2xhc3MgVGFnTm9kZUxpc3Q7CiAKIHR5cGVkZWYgaW50IEV4
Y2VwdGlvbkNvZGU7Ci0KIGNvbnN0IGludCBub2RlU3R5bGVDaGFuZ2VTaGlmdCA9IDI1OwogCiAv
LyBTeW50aGV0aWNTdHlsZUNoYW5nZSBtZWFucyB0aGF0IHdlIG5lZWQgdG8gZ28gdGhyb3VnaCB0
aGUgZW50aXJlIHN0eWxlIGNoYW5nZSBsb2dpYyBldmVuIHRob3VnaApAQCAtOTMsNiArOTQsOCBA
QCBlbnVtIEV2ZW50RGlzcGF0Y2hCZWhhdmlvciB7CiAKIGNsYXNzIE5vZGUgOiBwdWJsaWMgRXZl
bnRUYXJnZXQsIHB1YmxpYyBUcmVlU2hhcmVkPENvbnRhaW5lck5vZGU+LCBwdWJsaWMgU2NyaXB0
V3JhcHBhYmxlIHsKICAgICBmcmllbmQgY2xhc3MgRG9jdW1lbnQ7CisgICAgZnJpZW5kIGNsYXNz
IFNoYWRvd1Njb3BlOworCiBwdWJsaWM6CiAgICAgZW51bSBOb2RlVHlwZSB7CiAgICAgICAgIEVM
RU1FTlRfTk9ERSA9IDEsCkBAIC0zMzcsMTggKzM0MCwxOCBAQCBwdWJsaWM6CiAKICAgICB1bnNp
Z25lZCBub2RlSW5kZXgoKSBjb25zdDsKIAorICAgIC8vIFJldHVybnMgdGhlIGNvbnRhaW5pbmcg
c2NvcGUsIHdoaWNoIGNhbiBiZSBhIERvY3VtZW50IG9yIFNoYWRvd1Njb3BlLgorICAgIERPTVNj
b3BlKiBkb21TY29wZSgpIGNvbnN0IHsgcmV0dXJuIG1fZG9tU2NvcGU7IH0KKyAgICAvLyBTZXRz
IHRoZSBzY29wZSBmb3IgdGhpcyBub2RlIGFuZCBhbGwgY2hpbGRyZW4KKyAgICB2b2lkIHNldERP
TVNjb3BlKERPTVNjb3BlKik7CisKICAgICAvLyBSZXR1cm5zIHRoZSBET00gb3duZXJEb2N1bWVu
dCBhdHRyaWJ1dGUuIFRoaXMgbWV0aG9kIG5ldmVyIHJldHVybnMgTlVMTCwgZXhjZXB0IGluIHRo
ZSBjYXNlIAogICAgIC8vIG9mICgxKSBhIERvY3VtZW50IG5vZGUgb3IgKDIpIGEgRG9jdW1lbnRU
eXBlIG5vZGUgdGhhdCBpcyBub3QgdXNlZCB3aXRoIGFueSBEb2N1bWVudCB5ZXQuIAogICAgIHZp
cnR1YWwgRG9jdW1lbnQqIG93bmVyRG9jdW1lbnQoKSBjb25zdDsKIAogICAgIC8vIFJldHVybnMg
dGhlIGRvY3VtZW50IGFzc29jaWF0ZWQgd2l0aCB0aGlzIG5vZGUuIFRoaXMgbWV0aG9kIG5ldmVy
IHJldHVybnMgTlVMTCwgZXhjZXB0IGluIHRoZSBjYXNlIAogICAgIC8vIG9mIGEgRG9jdW1lbnRU
eXBlIG5vZGUgdGhhdCBpcyBub3QgdXNlZCB3aXRoIGFueSBEb2N1bWVudCB5ZXQuIEEgRG9jdW1l
bnQgbm9kZSByZXR1cm5zIGl0c2VsZi4KLSAgICBEb2N1bWVudCogZG9jdW1lbnQoKSBjb25zdAot
ICAgIHsKLSAgICAgICAgQVNTRVJUKHRoaXMpOwotICAgICAgICBBU1NFUlQobV9kb2N1bWVudCB8
fCAobm9kZVR5cGUoKSA9PSBET0NVTUVOVF9UWVBFX05PREUgJiYgIWluRG9jdW1lbnQoKSkpOwot
ICAgICAgICByZXR1cm4gbV9kb2N1bWVudDsKLSAgICB9CisgICAgRG9jdW1lbnQqIGRvY3VtZW50
KCkgY29uc3Q7CiAKICAgICAvLyBEbyBub3QgdXNlIHRoaXMgbWV0aG9kIHRvIGNoYW5nZSB0aGUg
ZG9jdW1lbnQgb2YgYSBub2RlIHVudGlsIGFmdGVyIHRoZSBub2RlIGhhcyBiZWVuCiAgICAgLy8g
cmVtb3ZlZCBmcm9tIGl0cyBwcmV2aW91cyBkb2N1bWVudC4KQEAgLTM1OCw3ICszNjEsNyBAQCBw
dWJsaWM6CiAgICAgLy8gbm9kZSB0cmVlLCBmYWxzZSBvdGhlcndpc2UuCiAgICAgYm9vbCBpbkRv
Y3VtZW50KCkgY29uc3QgCiAgICAgeyAKLSAgICAgICAgQVNTRVJUKG1fZG9jdW1lbnQgfHwgIWdl
dEZsYWcoSW5Eb2N1bWVudEZsYWcpKTsKKyAgICAgICAgQVNTRVJUKGRvY3VtZW50KCkgfHwgIWdl
dEZsYWcoSW5Eb2N1bWVudEZsYWcpKTsKICAgICAgICAgcmV0dXJuIGdldEZsYWcoSW5Eb2N1bWVu
dEZsYWcpOwogICAgIH0KIApAQCAtNTY4LDcgKzU3MSw5IEBAIHB1YmxpYzoKICAgICB9CiAjZW5k
aWYKIAorI2lmZGVmIE5ERUJVRwogcHJpdmF0ZToKKyNlbmRpZgogICAgIGVudW0gTm9kZUZsYWdz
IHsKICAgICAgICAgSXNUZXh0RmxhZyA9IDEsCiAgICAgICAgIElzQ29tbWVudEZsYWcgPSAxIDw8
IDEsCkBAIC01ODgsNiArNTkzLDEzIEBAIHByaXZhdGU6CiAgICAgICAgIEluQWN0aXZlQ2hhaW5G
bGFnID0gMSA8PCAxNSwKICAgICAgICAgSW5EZXRhY2hGbGFnID0gMSA8PCAxNiwKICAgICAgICAg
SGFzUmFyZURhdGFGbGFnID0gMSA8PCAxNywKKyAgICAgICAgLy8gRklYTUU6IFdoZXRoZXIgb3Ig
bm90IGEgbm9kZSBpcyB3aXRoaW4gYSBzaGFkb3cgdHJlZSBzaG91bGQgYmUgZGlzY2VybmFibGUg
YnkgaXRzIHNjb3BlLgorICAgICAgICAvLyBIb3dldmVyLCBhcyB0aGUgY29kZSBpcyBjdXJyZW50
bHkgd3JpdHRlbiwgYSBmZXcgc2hhZG93IHJvb2Qgbm9kZXMgYXJlIGNyZWF0ZWQgYW5kIGhhdmUK
KyAgICAgICAgLy8gdGhlaXIgcGFyZW50IHBvaW50ZXIgLSBhY3RpbmcgYXMgYSBob3N0IGVsZW1l
bnQgcG9pbnRlciAtIHNldCBiZWZvcmUgdGhleSBhcmUgaW5zZXJ0ZWQKKyAgICAgICAgLy8gaW50
byB0aGUgdHJlZS4gVGhpcyBpbiB0dXJuIGxlYWRzIHRvIGZhbHNlIHBvc2l0aXZlcyBpbiB2YXJp
b3VzIEFTU0VSVHMsIGJlY2F1c2UgdGhlCisgICAgICAgIC8vIGNvZGUgJ2Fzc3VtZXMnIGl0J3Mg
YSByZWd1bGFyIHBhcmVudC4KKyAgICAgICAgLy8gVGhlcmVmb3JlIHdlIGNhbid0IHlldCBnZXQg
cmlkIG9mIHRoaXMgZmxhZyBoZXJlIHVudGlsIHRoZSBzaGFkb3cgcm9vdCByZWZhY3RvcmluZwor
ICAgICAgICAvLyBhbGxvd3MgdXMgdG8gZG8gYXdheSB3aXRoIHRoaXMgZHVhbC11c2Ugb2YgdGhl
IHBhcmVudCBwb2ludGVyLgogICAgICAgICBJc1NoYWRvd1Jvb3RGbGFnID0gMSA8PCAxOCwKIAog
ICAgICAgICAvLyBUaGVzZSBiaXRzIGFyZSB1c2VkIGJ5IGRlcml2ZWQgY2xhc3NlcywgcHVsbGVk
IHVwIGhlcmUgc28gdGhleSBjYW4KQEAgLTYyOCw3ICs2NDAsOSBAQCBwcm90ZWN0ZWQ6CiAgICAg
ICAgIENyZWF0ZUhUTUxFbGVtZW50ID0gQ3JlYXRlU3R5bGVkRWxlbWVudCB8IElzSFRNTEZsYWcs
IAogICAgICAgICBDcmVhdGVTVkdFbGVtZW50ID0gQ3JlYXRlU3R5bGVkRWxlbWVudCB8IElzU1ZH
RmxhZywgCiAgICAgfTsKLSAgICBOb2RlKERvY3VtZW50KiwgQ29uc3RydWN0aW9uVHlwZSk7Cisg
ICAgTm9kZShET01TY29wZSosIENvbnN0cnVjdGlvblR5cGUpOworCisgICAgdm9pZCBzZXRET01T
Y29wZVBvaW50ZXIoRE9NU2NvcGUqIHNjb3BlKSB7IG1fZG9tU2NvcGUgPSBzY29wZTsgfQogCiAg
ICAgdmlydHVhbCB2b2lkIHdpbGxNb3ZlVG9OZXdPd25lckRvY3VtZW50KCk7CiAgICAgdmlydHVh
bCB2b2lkIGRpZE1vdmVUb05ld093bmVyRG9jdW1lbnQoKTsKQEAgLTY3NCw3ICs2ODgsNyBAQCBw
cml2YXRlOgogCiAgICAgdm9pZCB0cmFja0ZvckRlYnVnZ2luZygpOwogCi0gICAgRG9jdW1lbnQq
IG1fZG9jdW1lbnQ7CisgICAgRE9NU2NvcGUqIG1fZG9tU2NvcGU7CiAgICAgTm9kZSogbV9wcmV2
aW91czsKICAgICBOb2RlKiBtX25leHQ7CiAgICAgUmVuZGVyT2JqZWN0KiBtX3JlbmRlcmVyOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vdGF0aW9uLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Ob3RhdGlvbi5jcHAKaW5kZXggNGIzYWIyODlhOTkwOWU4NmIzMzE4MzFhMmNhYzEw
NDIzNzE3NjNkNy4uODAyMDI3M2Y0NjgxMWE3MWVhNjk2N2ViOGIyZDk5YjZkODM3MTgyOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vdGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vTm90YXRpb24uY3BwCkBAIC0yNSw4ICsyNSw4IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotTm90YXRpb246Ok5vdGF0aW9uKERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgU3Ry
aW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHB1YmxpY0lkLCBjb25zdCBTdHJpbmcmIHN5c3RlbUlk
KQotICAgIDogQ29udGFpbmVyTm9kZShkb2N1bWVudCkKK05vdGF0aW9uOjpOb3RhdGlvbihET01T
Y29wZSogc2NvcGUsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBwdWJsaWNJZCwg
Y29uc3QgU3RyaW5nJiBzeXN0ZW1JZCkKKyAgICA6IENvbnRhaW5lck5vZGUoc2NvcGUpCiAgICAg
LCBtX25hbWUobmFtZSkKICAgICAsIG1fcHVibGljSWQocHVibGljSWQpCiAgICAgLCBtX3N5c3Rl
bUlkKHN5c3RlbUlkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vdGF0aW9uLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vTm90YXRpb24uaAppbmRleCA1NDdjOWU3NDRlODc2ZDUyZDMx
YjI1MjhhZTU5ZjRkOTRjOTNlOTlmLi5iNThlYzY2ZDc5ZjkzMmE1ODUxYzdkZjJmYTFiN2YzMDRi
OTNkZWY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm90YXRpb24uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vTm90YXRpb24uaApAQCAtMzQsNyArMzQsNyBAQCBwdWJsaWM6CiAg
ICAgY29uc3QgU3RyaW5nJiBzeXN0ZW1JZCgpIGNvbnN0IHsgcmV0dXJuIG1fc3lzdGVtSWQ7IH0K
IAogcHJpdmF0ZToKLSAgICBOb3RhdGlvbihEb2N1bWVudCosIGNvbnN0IFN0cmluZyYgbmFtZSwg
Y29uc3QgU3RyaW5nJiBwdWJsaWNJZCwgY29uc3QgU3RyaW5nJiBzeXN0ZW1JZCk7CisgICAgTm90
YXRpb24oRE9NU2NvcGUqLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgcHVibGlj
SWQsIGNvbnN0IFN0cmluZyYgc3lzdGVtSWQpOwogCiAgICAgdmlydHVhbCBTdHJpbmcgbm9kZU5h
bWUoKSBjb25zdDsKICAgICB2aXJ0dWFsIE5vZGVUeXBlIG5vZGVUeXBlKCkgY29uc3Q7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUHJvY2Vzc2luZ0luc3RydWN0aW9uLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uY3BwCmluZGV4IDU0NGQ3ODk4
YTIwMmZmYTA0YTkyNTAzODYzN2FkN2FjNTc3OGVlNTAuLmUxOTk5Yjk1NzhhN2E1OGM2MDkxY2Qy
NDFlOThkNjJjZTRlMzI3MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qcm9jZXNz
aW5nSW5zdHJ1Y3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qcm9jZXNzaW5nSW5z
dHJ1Y3Rpb24uY3BwCkBAIC0zNSw4ICszNSw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
aW5saW5lIFByb2Nlc3NpbmdJbnN0cnVjdGlvbjo6UHJvY2Vzc2luZ0luc3RydWN0aW9uKERvY3Vt
ZW50KiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiB0YXJnZXQsIGNvbnN0IFN0cmluZyYgZGF0YSkK
LSAgICA6IENvbnRhaW5lck5vZGUoZG9jdW1lbnQpCitpbmxpbmUgUHJvY2Vzc2luZ0luc3RydWN0
aW9uOjpQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24oRE9NU2NvcGUqIHNjb3BlLCBjb25zdCBTdHJpbmcm
IHRhcmdldCwgY29uc3QgU3RyaW5nJiBkYXRhKQorICAgIDogQ29udGFpbmVyTm9kZShzY29wZSkK
ICAgICAsIG1fdGFyZ2V0KHRhcmdldCkKICAgICAsIG1fZGF0YShkYXRhKQogICAgICwgbV9jYWNo
ZWRTaGVldCgwKQpAQCAtNDksOSArNDksOSBAQCBpbmxpbmUgUHJvY2Vzc2luZ0luc3RydWN0aW9u
OjpQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24oRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBTdAogewog
fQogCi1QYXNzUmVmUHRyPFByb2Nlc3NpbmdJbnN0cnVjdGlvbj4gUHJvY2Vzc2luZ0luc3RydWN0
aW9uOjpjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIHRhcmdldCwgY29u
c3QgU3RyaW5nJiBkYXRhKQorUGFzc1JlZlB0cjxQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24+IFByb2Nl
c3NpbmdJbnN0cnVjdGlvbjo6Y3JlYXRlKERPTVNjb3BlKiBzY29wZSwgY29uc3QgU3RyaW5nJiB0
YXJnZXQsIGNvbnN0IFN0cmluZyYgZGF0YSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFBy
b2Nlc3NpbmdJbnN0cnVjdGlvbihkb2N1bWVudCwgdGFyZ2V0LCBkYXRhKSk7CisgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24oc2NvcGUsIHRhcmdldCwgZGF0YSkp
OwogfQogCiBQcm9jZXNzaW5nSW5zdHJ1Y3Rpb246On5Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24oKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5oIGIv
U291cmNlL1dlYkNvcmUvZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5oCmluZGV4IGZkYjBlYzll
M2RjYjI4NjVkMzIxMjYxZDA1MjlhMjdmNGFkNDQ2M2MuLmFkNTBhMDYwODhmODhiODg4Mzg3YmVl
MDg5NjI3NTVhMmYyMTNjZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qcm9jZXNz
aW5nSW5zdHJ1Y3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUHJvY2Vzc2luZ0luc3Ry
dWN0aW9uLmgKQEAgLTMzLDcgKzMzLDcgQEAgY2xhc3MgQ1NTU3R5bGVTaGVldDsKIAogY2xhc3Mg
UHJvY2Vzc2luZ0luc3RydWN0aW9uIDogcHVibGljIENvbnRhaW5lck5vZGUsIHByaXZhdGUgQ2Fj
aGVkUmVzb3VyY2VDbGllbnQgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFByb2Nl
c3NpbmdJbnN0cnVjdGlvbj4gY3JlYXRlKERvY3VtZW50KiwgY29uc3QgU3RyaW5nJiB0YXJnZXQs
IGNvbnN0IFN0cmluZyYgZGF0YSk7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8UHJvY2Vzc2luZ0lu
c3RydWN0aW9uPiBjcmVhdGUoRE9NU2NvcGUqLCBjb25zdCBTdHJpbmcmIHRhcmdldCwgY29uc3Qg
U3RyaW5nJiBkYXRhKTsKICAgICB2aXJ0dWFsIH5Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24oKTsKIAog
ICAgIGNvbnN0IFN0cmluZyYgdGFyZ2V0KCkgY29uc3QgeyByZXR1cm4gbV90YXJnZXQ7IH0KQEAg
LTUzLDcgKzUzLDcgQEAgcHVibGljOgogI2VuZGlmCiAKIHByaXZhdGU6Ci0gICAgUHJvY2Vzc2lu
Z0luc3RydWN0aW9uKERvY3VtZW50KiwgY29uc3QgU3RyaW5nJiB0YXJnZXQsIGNvbnN0IFN0cmlu
ZyYgZGF0YSk7CisgICAgUHJvY2Vzc2luZ0luc3RydWN0aW9uKERPTVNjb3BlKiwgY29uc3QgU3Ry
aW5nJiB0YXJnZXQsIGNvbnN0IFN0cmluZyYgZGF0YSk7CiAKICAgICB2aXJ0dWFsIFN0cmluZyBu
b2RlTmFtZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgTm9kZVR5cGUgbm9kZVR5cGUoKSBjb25zdDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dTY29wZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vU2hhZG93U2NvcGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZmODk1OWNjNDA2YjkwOGUw
OTkxNGY0OTE5MzhhNjk0NTEyYWU3NzYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vU2hhZG93U2NvcGUuY3BwCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgor
ICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9m
IGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
KyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiU2hhZG93U2NvcGUuaCIKKworI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5j
bHVkZSAiRWxlbWVudC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3ZvaWQgU2hhZG93U2Nv
cGU6OnNldERvY3VtZW50UmVjdXJzaXZlbHkoRG9jdW1lbnQqIG5ld0RvY3VtZW50KQoreworICAg
IGlmIChkb2N1bWVudCgpID09IG5ld0RvY3VtZW50KQorICAgICAgICByZXR1cm47CisgICAgCisg
ICAgc2V0RG9jdW1lbnRQdHIobmV3RG9jdW1lbnQpOworICAgIGlmIChtX3Jvb3QpCisgICAgICAg
IG1fcm9vdC0+c2V0RG9jdW1lbnRSZWN1cnNpdmVseShuZXdEb2N1bWVudCk7Cit9CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmU7CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFk
b3dTY29wZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Njb3BlLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MGFkYzI1ZmEzZjcyOTZjOGE5NDU1NTZiZmI2NjU2ODA1ZjFhNDQ1OAotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dTY29wZS5oCkBAIC0wLDAgKzEsODggQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICog
ZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVS
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAq
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZu
ZGVmIFNoYWRvd1Njb3BlX2gKKyNkZWZpbmUgU2hhZG93U2NvcGVfaAorCisjaW5jbHVkZSAiRE9N
U2NvcGUuaCIKKyNpbmNsdWRlICJOb2RlLmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4K
KyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3Mg
RWxlbWVudDsKK2NsYXNzIE5vZGU7CisKK2NsYXNzIFNoYWRvd1Njb3BlIDogcHVibGljIERPTVNj
b3BlIHsKK3B1YmxpYzoKKyAgICBTaGFkb3dTY29wZShFbGVtZW50KiBob3N0LCBEb2N1bWVudCog
ZG9jdW1lbnQgPSAwLCBQYXNzUmVmUHRyPE5vZGU+IHJvb3QgPSAwKQorICAgICAgOiBET01TY29w
ZShET01TY29wZTo6U0NPUEVfU0hBRE9XLCBkb2N1bWVudCkKKyAgICAgICwgbV9ob3N0KGhvc3Qp
CisgICAgICAsIG1fcm9vdChyb290KQorICAgIHsKKyAgICB9CisKKyAgICBQYXNzUmVmUHRyPE5v
ZGU+IHJvb3QoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fcm9vdDsKKyAgICB9Cisg
ICAgdm9pZCBzZXRSb290KFBhc3NSZWZQdHI8Tm9kZT4gcm9vdCkKKyAgICB7CisgICAgICAgIG1f
cm9vdCA9IHJvb3Q7CisgICAgfQorCisgICAgRWxlbWVudCogaG9zdCgpIGNvbnN0CisgICAgewor
ICAgICAgICByZXR1cm4gbV9ob3N0OworICAgIH0KKworICAgIHZvaWQgc2V0RG9jdW1lbnRSZWN1
cnNpdmVseShEb2N1bWVudCopOworCitwcml2YXRlOgorICAgIEVsZW1lbnQqIG1faG9zdDsKKyAg
ICBSZWZQdHI8Tm9kZT4gbV9yb290OworfTsKKworaW5saW5lIFNoYWRvd1Njb3BlKiB0b1NoYWRv
d1Njb3BlKERPTVNjb3BlKiBzY29wZSkKK3sKKyAgICBBU1NFUlQoIXNjb3BlIHx8IHNjb3BlLT5p
c1NoYWRvd1Njb3BlKCkpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxTaGFkb3dTY29wZSo+KHNj
b3BlKTsKK30KKworaW5saW5lIGNvbnN0IFNoYWRvd1Njb3BlKiB0b1NoYWRvd1Njb3BlKGNvbnN0
IERPTVNjb3BlKiBzY29wZSkKK3sKKyAgICBBU1NFUlQoIXNjb3BlIHx8IHNjb3BlLT5pc1NoYWRv
d1Njb3BlKCkpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBTaGFkb3dTY29wZSo+KHNj
b3BlKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gU2hhZG93U2Nv
cGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1N0eWxlZEVsZW1lbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9TdHlsZWRFbGVtZW50LmgKaW5kZXggMzJmYzRjMjQ4MjM5MTdkZTc1
NWZjNTRlYjcyYTQwNmNlNDc5MGViYS4uM2NlYjYzZjQ1MjRjY2NlM2E4NWI2YWIxNTA2N2VhOTIx
YjU0Y2Q1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1N0eWxlZEVsZW1lbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU3R5bGVkRWxlbWVudC5oCkBAIC02OCw4ICs2OCw4IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8QXR0cmlidXRlPiBjcmVhdGVBdHRyaWJ1
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpOwogCiBw
cm90ZWN0ZWQ6Ci0gICAgU3R5bGVkRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBE
b2N1bWVudCogZG9jdW1lbnQsIENvbnN0cnVjdGlvblR5cGUgdHlwZSkKLSAgICAgICAgOiBFbGVt
ZW50KG5hbWUsIGRvY3VtZW50LCB0eXBlKQorICAgIFN0eWxlZEVsZW1lbnQoY29uc3QgUXVhbGlm
aWVkTmFtZSYgbmFtZSwgRE9NU2NvcGUqIHNjb3BlLCBDb25zdHJ1Y3Rpb25UeXBlIHR5cGUpCisg
ICAgICAgIDogRWxlbWVudChuYW1lLCBzY29wZSwgdHlwZSkKICAgICB7CiAgICAgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
VGV4dC5jcHAKaW5kZXggMzQyNjZmMWIwNTE0ODI1ZTQzYWFiMjc5MThiNDkwNzE5ZThkM2I4Zi4u
NmE4NTI3MDVmMmUxYjM1MzI0MjIxMDllNzMyNTc2Nzk5OTRjMmMwMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL1RleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0LmNw
cApAQCAtNDIsOSArNDIsOSBAQCB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLVBhc3NSZWZQdHI8VGV4dD4gVGV4dDo6Y3JlYXRlKERvY3VtZW50KiBkb2N1bWVu
dCwgY29uc3QgU3RyaW5nJiBkYXRhKQorUGFzc1JlZlB0cjxUZXh0PiBUZXh0OjpjcmVhdGUoRE9N
U2NvcGUqIHNjb3BlLCBjb25zdCBTdHJpbmcmIGRhdGEpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBUZXh0KGRvY3VtZW50LCBkYXRhKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBUZXh0
KHNjb3BlLCBkYXRhKSk7CiB9CiAKIFBhc3NSZWZQdHI8VGV4dD4gVGV4dDo6c3BsaXRUZXh0KHVu
c2lnbmVkIG9mZnNldCwgRXhjZXB0aW9uQ29kZSYgZWMpCkBAIC0zMDEsMTYgKzMwMSwxNiBAQCBi
b29sIFRleHQ6OmNoaWxkVHlwZUFsbG93ZWQoTm9kZVR5cGUpCiAKIFBhc3NSZWZQdHI8VGV4dD4g
VGV4dDo6dmlydHVhbENyZWF0ZShjb25zdCBTdHJpbmcmIGRhdGEpCiB7Ci0gICAgcmV0dXJuIGNy
ZWF0ZShkb2N1bWVudCgpLCBkYXRhKTsKKyAgICByZXR1cm4gY3JlYXRlKGRvbVNjb3BlKCksIGRh
dGEpOwogfQogCi1QYXNzUmVmUHRyPFRleHQ+IFRleHQ6OmNyZWF0ZVdpdGhMZW5ndGhMaW1pdChE
b2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgZGF0YSwgdW5zaWduZWQmIGNoYXJzTGVm
dCwgdW5zaWduZWQgbWF4Q2hhcnMpCitQYXNzUmVmUHRyPFRleHQ+IFRleHQ6OmNyZWF0ZVdpdGhM
ZW5ndGhMaW1pdChET01TY29wZSogc2NvcGUsIGNvbnN0IFN0cmluZyYgZGF0YSwgdW5zaWduZWQm
IGNoYXJzTGVmdCwgdW5zaWduZWQgbWF4Q2hhcnMpCiB7CiAgICAgdW5zaWduZWQgZGF0YUxlbmd0
aCA9IGRhdGEubGVuZ3RoKCk7CiAKICAgICBpZiAoY2hhcnNMZWZ0ID09IGRhdGFMZW5ndGggJiYg
Y2hhcnNMZWZ0IDw9IG1heENoYXJzKSB7CiAgICAgICAgIGNoYXJzTGVmdCA9IDA7Ci0gICAgICAg
IHJldHVybiBjcmVhdGUoZG9jdW1lbnQsIGRhdGEpOworICAgICAgICByZXR1cm4gY3JlYXRlKHNj
b3BlLCBkYXRhKTsKICAgICB9CiAKICAgICB1bnNpZ25lZCBzdGFydCA9IGRhdGFMZW5ndGggLSBj
aGFyc0xlZnQ7CkBAIC0zMzQsNyArMzM0LDcgQEAgUGFzc1JlZlB0cjxUZXh0PiBUZXh0OjpjcmVh
dGVXaXRoTGVuZ3RoTGltaXQoRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIGQKICAg
ICAgICAgZW5kID0gZGF0YUxlbmd0aDsKICAgICAKICAgICBjaGFyc0xlZnQgPSBkYXRhTGVuZ3Ro
IC0gZW5kOwotICAgIHJldHVybiBjcmVhdGUoZG9jdW1lbnQsIGRhdGEuc3Vic3RyaW5nKHN0YXJ0
LCBlbmQgLSBzdGFydCkpOworICAgIHJldHVybiBjcmVhdGUoc2NvcGUsIGRhdGEuc3Vic3RyaW5n
KHN0YXJ0LCBlbmQgLSBzdGFydCkpOwogfQogCiAjaWZuZGVmIE5ERUJVRwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL1RleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0LmgKaW5k
ZXggNDU2NzhlZjhkOGViZDhmNzI1MDI4ZTcyYjAxODQyZGU4YWVjYTUxZC4uNDA3OTNmYzk2YzE2
NTBmYjVhZDU3N2Y2NDg0YjI0ZDg5ZWMzZWMxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL1RleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dC5oCkBAIC0zMSw4ICszMSw4
IEBAIGNsYXNzIFRleHQgOiBwdWJsaWMgQ2hhcmFjdGVyRGF0YSB7CiBwdWJsaWM6CiAgICAgc3Rh
dGljIGNvbnN0IHVuc2lnbmVkIGRlZmF1bHRMZW5ndGhMaW1pdCA9IDEgPDwgMTY7CiAKLSAgICBz
dGF0aWMgUGFzc1JlZlB0cjxUZXh0PiBjcmVhdGUoRG9jdW1lbnQqLCBjb25zdCBTdHJpbmcmKTsK
LSAgICBzdGF0aWMgUGFzc1JlZlB0cjxUZXh0PiBjcmVhdGVXaXRoTGVuZ3RoTGltaXQoRG9jdW1l
bnQqLCBjb25zdCBTdHJpbmcmLCB1bnNpZ25lZCYgY2hhcnNMZWZ0LCB1bnNpZ25lZCBsZW5ndGhM
aW1pdCA9IGRlZmF1bHRMZW5ndGhMaW1pdCk7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8VGV4dD4g
Y3JlYXRlKERPTVNjb3BlKiwgY29uc3QgU3RyaW5nJik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8
VGV4dD4gY3JlYXRlV2l0aExlbmd0aExpbWl0KERPTVNjb3BlKiwgY29uc3QgU3RyaW5nJiwgdW5z
aWduZWQmIGNoYXJzTGVmdCwgdW5zaWduZWQgbGVuZ3RoTGltaXQgPSBkZWZhdWx0TGVuZ3RoTGlt
aXQpOwogCiAgICAgUGFzc1JlZlB0cjxUZXh0PiBzcGxpdFRleHQodW5zaWduZWQgb2Zmc2V0LCBF
eGNlcHRpb25Db2RlJik7CiAKQEAgLTQ0LDggKzQ0LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwg
dm9pZCBhdHRhY2goKTsKIAogcHJvdGVjdGVkOgotICAgIFRleHQoRG9jdW1lbnQqIGRvY3VtZW50
LCBjb25zdCBTdHJpbmcmIGRhdGEpCi0gICAgICAgIDogQ2hhcmFjdGVyRGF0YShkb2N1bWVudCwg
ZGF0YSwgQ3JlYXRlVGV4dCkKKyAgICBUZXh0KERPTVNjb3BlKiBzY29wZSwgY29uc3QgU3RyaW5n
JiBkYXRhKQorICAgICAgICA6IENoYXJhY3RlckRhdGEoc2NvcGUsIGRhdGEsIENyZWF0ZVRleHQp
CiAgICAgewogICAgIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>88311</attachid>
            <date>2011-04-05 14:53:28 -0700</date>
            <delta_ts>2011-04-05 17:18:57 -0700</delta_ts>
            <desc>new patch</desc>
            <filename>bug-52963-20110405145327.patch</filename>
            <type>text/plain</type>
            <size>18322</size>
            <attacher name="Roland Steiner">rolandsteiner</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODI5NTQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBkZGMzMjZhNWVjODQ3NDg2
OTJiNzhhMGJkMjVhNGJhMDUwZjlmMWFhLi44NjYyM2Q2ZThmYjQyMDc0ODVkNWEzNWMxNjRkMzk2
ZGY4YjQ5ZTU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDMgQEAKKzIwMTEtMDQtMDUgIFJvbGFu
ZCBTdGVpbmVyICA8cm9sYW5kc3RlaW5lckBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTUyOTYzCisgICAgICAgIEJ1ZyA1Mjk2MyAtIEVuYWJsZSBPKDEpIGFj
Y2VzcyB0byByb290IGZyb20gYW55IG5vZGUgaW4gc2hhZG93IERPTSBzdWJ0cmVlCisKKyAgICAg
ICAgQWRkIGEgVHJlZVNjb3BlIHBvaW50ZXIgdG8gTm9kZSAod2hpY2ggc3Vic2VxdWVudGx5IHdp
bGwgcmVwbGFjZSB0aGUKKyAgICAgICAgRG9jdW1lbnQgcG9pbnRlcikgdG8gYWxsb3cgZGlyZWN0
IGFjY2VzcyB0byB0aGUgY29udGFpbmluZyB0cmVlIHNjb3BlLgorCisgICAgICAgIEluIGFuIG9i
amVjdCBkZXJpdmVkIGZyb20gVHJlZVNjb3BlIChjdXJyZW50bHkgRG9jdW1lbnQpLCB0aGUgdHJl
ZSBzY29wZSBwb2ludGVyCisgICAgICAgIHBvaW50cyB0byBpdHNlbGYuIFN1Y2ggb2JqZWN0cyBh
bHNvIGNvbnRhaW4gYSBwYXJlbnQgdHJlZSBzY29wZSBwb2ludGVyIHRoYXQKKyAgICAgICAgcG9p
bnRzIHRvIHRoZSBjb250YWluaW5nIHNjb3BlLiBGb3IgRG9jdW1lbnQsIHRoaXMgaXMgMC4KKwor
ICAgICAgICBBZGQgbmV3IGZ1bmN0aW9ucyBzZXRUcmVlU2NvcGVbUmVjdXJzaXZlbHldIHRoYXQg
cmVwbGFjZSBzZXREb2N1bWVudFtSZWN1cnNpdmVseV0uCisKKyAgICAgICAgTm8gbmV3IHRlc3Rz
LiAobm8gbmV3IGZ1bmN0aW9uYWxpdHkpCisKKyAgICAgICAgKiBkb20vQ29udGFpbmVyTm9kZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDb250YWluZXJOb2RlOjppbnNlcnRCZWZvcmUpOgorICAg
ICAgICAoV2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6cmVwbGFjZUNoaWxkKToKKyAgICAgICAgKFdl
YkNvcmU6OkNvbnRhaW5lck5vZGU6OmFwcGVuZENoaWxkKToKKyAgICAgICAgKiBkb20vRG9jdW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OkRvY3VtZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OkRvY3VtZW50OjpzZXREb2NUeXBlKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQu
aDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6Ok5vZGUpOgorICAgICAgICAqIGRvbS9Ob2RlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OnNldFRyZWVTY29wZSk6CisgICAgICAgIChXZWJD
b3JlOjpOb2RlOjpzZXRUcmVlU2NvcGVSZWN1cnNpdmVseSk6CisgICAgICAgICogZG9tL05vZGUu
aDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OnRyZWVTY29wZSk6CisgICAgICAgICogZG9tL1Ry
ZWVTY29wZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUcmVlU2NvcGU6OlRyZWVTY29wZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpUcmVlU2NvcGU6On5UcmVlU2NvcGUpOgorICAgICAgICAoV2ViQ29y
ZTo6VHJlZVNjb3BlOjpyZW1vdmVkTGFzdFJlZik6CisgICAgICAgIChXZWJDb3JlOjpUcmVlU2Nv
cGU6OnNldFBhcmVudFRyZWVTY29wZSk6CisgICAgICAgICogZG9tL1RyZWVTY29wZS5oOgorICAg
ICAgICAoV2ViQ29yZTo6VHJlZVNjb3BlOjpwYXJlbnRUcmVlU2NvcGUpOgorCiAyMDExLTA0LTA1
ICBOaWtvbGFzIFppbW1lcm1hbm4gIDxuemltbWVybWFubkByaW0uY29tPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IERpcmsgU2NodWx6ZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9D
b250YWluZXJOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcApp
bmRleCBlYTAzODQ4YWFhZmJjZDAwMGY2ZjA5MDFmZTQ1YzdkNmUyMWFkYmIzLi45N2I0NGUzNTU4
NTJlODgxZjg4MDJhOTBkODFkNDU1MzRjY2JlODM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5l
ck5vZGUuY3BwCkBAIC0xNjEsNyArMTYxLDggQEAgYm9vbCBDb250YWluZXJOb2RlOjppbnNlcnRC
ZWZvcmUoUGFzc1JlZlB0cjxOb2RlPiBuZXdDaGlsZCwgTm9kZSogcmVmQ2hpbGQsIEV4Y2UKICAg
ICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsSW5zZXJ0RE9NTm9kZShkb2N1bWVu
dCgpLCBjaGlsZCwgdGhpcyk7CiAjZW5kaWYKIAotICAgICAgICBjaGlsZC0+c2V0RG9jdW1lbnRS
ZWN1cnNpdmVseShkb2N1bWVudCgpKTsKKyAgICAgICAgY2hpbGQtPnNldFRyZWVTY29wZVJlY3Vy
c2l2ZWx5KHRyZWVTY29wZSgpKTsKKwogICAgICAgICBpbnNlcnRCZWZvcmVDb21tb24obmV4dC5n
ZXQoKSwgY2hpbGQpOwogCiAgICAgICAgIC8vIFNlbmQgbm90aWZpY2F0aW9uIGFib3V0IHRoZSBj
aGlsZHJlbiBjaGFuZ2UuCkBAIC0zMTAsNyArMzExLDcgQEAgYm9vbCBDb250YWluZXJOb2RlOjpy
ZXBsYWNlQ2hpbGQoUGFzc1JlZlB0cjxOb2RlPiBuZXdDaGlsZCwgTm9kZSogb2xkQ2hpbGQsIEV4
Y2UKICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsSW5zZXJ0RE9NTm9kZShk
b2N1bWVudCgpLCBjaGlsZC5nZXQoKSwgdGhpcyk7CiAjZW5kaWYKIAotICAgICAgICBjaGlsZC0+
c2V0RG9jdW1lbnRSZWN1cnNpdmVseShkb2N1bWVudCgpKTsKKyAgICAgICAgY2hpbGQtPnNldFRy
ZWVTY29wZVJlY3Vyc2l2ZWx5KHRyZWVTY29wZSgpKTsKIAogICAgICAgICAvLyBBZGQgY2hpbGQg
YWZ0ZXIgInByZXYiLgogICAgICAgICBmb3JiaWRFdmVudERpc3BhdGNoKCk7CkBAIC01OTksNyAr
NjAwLDcgQEAgYm9vbCBDb250YWluZXJOb2RlOjphcHBlbmRDaGlsZChQYXNzUmVmUHRyPE5vZGU+
IG5ld0NoaWxkLCBFeGNlcHRpb25Db2RlJiBlYywgYm8KICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjp3aWxsSW5zZXJ0RE9NTm9kZShkb2N1bWVudCgpLCBjaGlsZCwgdGhpcyk7CiAj
ZW5kaWYKIAotICAgICAgICBjaGlsZC0+c2V0RG9jdW1lbnRSZWN1cnNpdmVseShkb2N1bWVudCgp
KTsKKyAgICAgICAgY2hpbGQtPnNldFRyZWVTY29wZVJlY3Vyc2l2ZWx5KHRyZWVTY29wZSgpKTsK
IAogICAgICAgICAvLyBBcHBlbmQgY2hpbGQgdG8gdGhlIGVuZCBvZiB0aGUgbGlzdAogICAgICAg
ICBmb3JiaWRFdmVudERpc3BhdGNoKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCAyNzkz
MzcxZTkyNDliNmJmNWUzYzMyNzAxZDM2Yzg4YmJiZTQxYzc1Li4wMDdlNDY3NjhlNzFjMDNjMzAy
MzExMjU2YmMyZDUwNzBlNWFlMGQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTUwOCw0
MCArNTA4LDYgQEAgRG9jdW1lbnQ6OkRvY3VtZW50KEZyYW1lKiBmcmFtZSwgY29uc3QgS1VSTCYg
dXJsLCBib29sIGlzWEhUTUwsIGJvb2wgaXNIVE1MKQogI2VuZGlmCiB9CiAKLXZvaWQgRG9jdW1l
bnQ6OmRlc3Ryb3lTY29wZSgpCi17Ci0gICAgQVNTRVJUKCFtX2RlbGV0aW9uSGFzQmVndW4pOwot
Ci0gICAgLy8gV2UgbXVzdCBtYWtlIHN1cmUgbm90IHRvIGJlIHJldGFpbmluZyBhbnkgb2Ygb3Vy
IGNoaWxkcmVuIHRocm91Z2gKLSAgICAvLyB0aGVzZSBleHRyYSBwb2ludGVycyBvciB3ZSB3aWxs
IGNyZWF0ZSBhIHJlZmVyZW5jZSBjeWNsZS4KLSAgICBtX2RvY1R5cGUgPSAwOwotICAgIG1fZm9j
dXNlZE5vZGUgPSAwOwotICAgIG1faG92ZXJOb2RlID0gMDsKLSAgICBtX2FjdGl2ZU5vZGUgPSAw
OwotICAgIG1fdGl0bGVFbGVtZW50ID0gMDsKLSAgICBtX2RvY3VtZW50RWxlbWVudCA9IDA7Ci0j
aWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQotICAgIG1fZnVsbFNjcmVlbkVsZW1lbnQgPSAwOwot
I2VuZGlmCi0KLSAgICBUcmVlU2NvcGU6OmRlc3Ryb3lTY29wZSgpOwotCi0gICAgbV9tYXJrZXJz
LT5kZXRhY2goKTsKLQotICAgIGRldGFjaFBhcnNlcigpOwotCi0gICAgbV9jc3NDYW52YXNFbGVt
ZW50cy5jbGVhcigpOwotCi0jaWYgRU5BQkxFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FKQotICAg
IC8vIEZJWE1FOiBjb25zaWRlciB1c2luZyBBY3RpdmVET01PYmplY3QuCi0gICAgbV9zY3JpcHRl
ZEFuaW1hdGlvbkNvbnRyb2xsZXIgPSAwOwotI2VuZGlmCi0KLSNpZm5kZWYgTkRFQlVHCi0gICAg
bV9pblJlbW92ZWRMYXN0UmVmRnVuY3Rpb24gPSBmYWxzZTsKLSNlbmRpZgotfQotCiBEb2N1bWVu
dDo6fkRvY3VtZW50KCkKIHsKICAgICBBU1NFUlQoIXJlbmRlcmVyKCkpOwpAQCAtNTQ5LDYgKzUx
NSw3IEBAIERvY3VtZW50Ojp+RG9jdW1lbnQoKQogICAgIEFTU0VSVCghbV9zYXZlZFJlbmRlcmVy
KTsKICAgICBBU1NFUlQobV9yYW5nZXMuaXNFbXB0eSgpKTsKICAgICBBU1NFUlQoIW1fc3R5bGVS
ZWNhbGNUaW1lci5pc0FjdGl2ZSgpKTsKKyAgICBBU1NFUlQoIW1fcGFyZW50VHJlZVNjb3BlKTsK
IAogICAgIG1fc2NyaXB0UnVubmVyLmNsZWFyKCk7CiAKQEAgLTYwMSw2ICs1NjgsNDAgQEAgRG9j
dW1lbnQ6On5Eb2N1bWVudCgpCiAgICAgICAgIG1faW1wbGVtZW50YXRpb24tPm93bmVyRG9jdW1l
bnREZXN0cm95ZWQoKTsKIH0KIAordm9pZCBEb2N1bWVudDo6ZGVzdHJveVNjb3BlKCkKK3sKKyAg
ICBBU1NFUlQoIW1fZGVsZXRpb25IYXNCZWd1bik7CisKKyAgICAvLyBXZSBtdXN0IG1ha2Ugc3Vy
ZSBub3QgdG8gYmUgcmV0YWluaW5nIGFueSBvZiBvdXIgY2hpbGRyZW4gdGhyb3VnaAorICAgIC8v
IHRoZXNlIGV4dHJhIHBvaW50ZXJzIG9yIHdlIHdpbGwgY3JlYXRlIGEgcmVmZXJlbmNlIGN5Y2xl
LgorICAgIG1fZG9jVHlwZSA9IDA7CisgICAgbV9mb2N1c2VkTm9kZSA9IDA7CisgICAgbV9ob3Zl
ck5vZGUgPSAwOworICAgIG1fYWN0aXZlTm9kZSA9IDA7CisgICAgbV90aXRsZUVsZW1lbnQgPSAw
OworICAgIG1fZG9jdW1lbnRFbGVtZW50ID0gMDsKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkp
CisgICAgbV9mdWxsU2NyZWVuRWxlbWVudCA9IDA7CisjZW5kaWYKKworICAgIFRyZWVTY29wZTo6
ZGVzdHJveVNjb3BlKCk7CisKKyAgICBtX21hcmtlcnMtPmRldGFjaCgpOworCisgICAgZGV0YWNo
UGFyc2VyKCk7CisKKyAgICBtX2Nzc0NhbnZhc0VsZW1lbnRzLmNsZWFyKCk7CisKKyNpZiBFTkFC
TEUoUkVRVUVTVF9BTklNQVRJT05fRlJBTUUpCisgICAgLy8gRklYTUU6IGNvbnNpZGVyIHVzaW5n
IEFjdGl2ZURPTU9iamVjdC4KKyAgICBtX3NjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlciA9IDA7
CisjZW5kaWYKKworI2lmbmRlZiBOREVCVUcKKyAgICBtX2luUmVtb3ZlZExhc3RSZWZGdW5jdGlv
biA9IGZhbHNlOworI2VuZGlmCit9CisKIEVsZW1lbnQqIERvY3VtZW50OjpnZXRFbGVtZW50QnlJ
ZChjb25zdCBBdG9taWNTdHJpbmcmIGlkKSBjb25zdAogewogICAgIHJldHVybiBUcmVlU2NvcGU6
OmdldEVsZW1lbnRCeUlkKGlkKTsKQEAgLTY4Miw3ICs2ODMsNyBAQCB2b2lkIERvY3VtZW50Ojpz
ZXREb2NUeXBlKFBhc3NSZWZQdHI8RG9jdW1lbnRUeXBlPiBkb2NUeXBlKQogICAgIEFTU0VSVCgh
bV9kb2NUeXBlIHx8ICFkb2NUeXBlKTsKICAgICBtX2RvY1R5cGUgPSBkb2NUeXBlOwogICAgIGlm
IChtX2RvY1R5cGUpCi0gICAgICAgIG1fZG9jVHlwZS0+c2V0RG9jdW1lbnQodGhpcyk7CisgICAg
ICAgIG1fZG9jVHlwZS0+c2V0VHJlZVNjb3BlKHRoaXMpOwogfQogCiBET01JbXBsZW1lbnRhdGlv
biogRG9jdW1lbnQ6OmltcGxlbWVudGF0aW9uKCkKQEAgLTkxMiw3ICs5MTMsNyBAQCBQYXNzUmVm
UHRyPE5vZGU+IERvY3VtZW50OjphZG9wdE5vZGUoUGFzc1JlZlB0cjxOb2RlPiBzb3VyY2UsIEV4
Y2VwdGlvbkNvZGUmIGVjKQogICAgICAgICAgICAgc291cmNlLT5wYXJlbnROb2RlKCktPnJlbW92
ZUNoaWxkKHNvdXJjZS5nZXQoKSwgZWMpOwogICAgIH0KIAotICAgIHNvdXJjZS0+c2V0RG9jdW1l
bnRSZWN1cnNpdmVseSh0aGlzKTsKKyAgICBzb3VyY2UtPnNldFRyZWVTY29wZVJlY3Vyc2l2ZWx5
KHRoaXMpOwogCiAgICAgcmV0dXJuIHNvdXJjZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXgg
Mjg2MWUxYmNkM2JlNjVjOTFmNzIwYTQ4ZTk2NTI0OGIwYzcwNGZlNS4uOWJlYTk2ZDhhNDkxMjhl
MzE2ZmZhMzFmNzJhNTZkMTMyYjgwMzQzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTEzODUs
MjUgKzEzODUsMjkgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8Q29udGVudFNlY3VyaXR5UG9saWN5
PiBtX2NvbnRlbnRTZWN1cml0eVBvbGljeTsKIH07CiAKLWlubGluZSBib29sIE5vZGU6OmlzRG9j
dW1lbnROb2RlKCkgY29uc3QKLXsKLSAgICByZXR1cm4gdGhpcyA9PSBtX2RvY3VtZW50OwotfQor
Ly8gPT09IE5vZGUgaW5saW5lIG1ldGhvZHMgPT09CisKKy8vIGhlcmUgYmVjYXVzZSB0aGVzZSBt
ZXRob2RzIHJlcXVpcmUgdGhlIERvY3VtZW50IGRlZmluaXRpb24sIGJ1dCB3ZSByZWFsbHkgd2Fu
dCB0byBpbmxpbmUgdGhlbS4KIAotLy8gaGVyZSBiZWNhdXNlIGl0IHVzZXMgYSBEb2N1bWVudCBt
ZXRob2QgYnV0IHdlIHJlYWxseSB3YW50IHRvIGlubGluZSBpdAogaW5saW5lIE5vZGU6Ok5vZGUo
RG9jdW1lbnQqIGRvY3VtZW50LCBDb25zdHJ1Y3Rpb25UeXBlIHR5cGUpCiAgICAgOiBtX2RvY3Vt
ZW50KGRvY3VtZW50KQorICAgICwgbV90cmVlU2NvcGUoZG9jdW1lbnQpIC8vIGFzc3VtZSBkb2N1
bWVudCdzIHNjb3BlIGJ5IGRlZmF1bHQKICAgICAsIG1fcHJldmlvdXMoMCkKICAgICAsIG1fbmV4
dCgwKQogICAgICwgbV9yZW5kZXJlcigwKQogICAgICwgbV9ub2RlRmxhZ3ModHlwZSkKIHsKLSAg
ICBpZiAobV9kb2N1bWVudCkKLSAgICAgICAgbV9kb2N1bWVudC0+Z3VhcmRSZWYoKTsKKyAgICBp
ZiAobV90cmVlU2NvcGUpCisgICAgICAgIG1fdHJlZVNjb3BlLT5ndWFyZFJlZigpOwogI2lmICFk
ZWZpbmVkKE5ERUJVRykgfHwgKGRlZmluZWQoRFVNUF9OT0RFX1NUQVRJU1RJQ1MpICYmIERVTVBf
Tk9ERV9TVEFUSVNUSUNTKQogICAgIHRyYWNrRm9yRGVidWdnaW5nKCk7CiAjZW5kaWYKIH0KKyAg
ICAKK2lubGluZSBib29sIE5vZGU6OmlzRG9jdW1lbnROb2RlKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gdGhpcyA9PSBtX2RvY3VtZW50OworfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Ob2RlLmNwcAppbmRleCAzNWU1YTY5YzJjN2U3NmEwNjM4ZjM5ZWE1ZTYyMGI2ODg5NGM4YmNi
Li43MGEzYTMyYzljMmE0MGRjOWZmOGU3MzY2NTQ0YjAwY2M0ZjMxMzNmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUu
Y3BwCkBAIC00MDUsOCArNDA1LDggQEAgTm9kZTo6fk5vZGUoKQogICAgIGlmIChtX25leHQpCiAg
ICAgICAgIG1fbmV4dC0+c2V0UHJldmlvdXNTaWJsaW5nKDApOwogCi0gICAgaWYgKG1fZG9jdW1l
bnQpCi0gICAgICAgIG1fZG9jdW1lbnQtPmd1YXJkRGVyZWYoKTsKKyAgICBpZiAobV90cmVlU2Nv
cGUpCisgICAgICAgIG1fdHJlZVNjb3BlLT5ndWFyZERlcmVmKCk7CiB9CiAKICNpZmRlZiBOREVC
VUcKQEAgLTQ0Miw4ICs0NDIsNiBAQCB2b2lkIE5vZGU6OnNldERvY3VtZW50KERvY3VtZW50KiBk
b2N1bWVudCkKICAgICBpZiAoaW5Eb2N1bWVudCgpIHx8IG1fZG9jdW1lbnQgPT0gZG9jdW1lbnQp
CiAgICAgICAgIHJldHVybjsKIAotICAgIGRvY3VtZW50LT5ndWFyZFJlZigpOwotCiAgICAgc2V0
V2lsbE1vdmVUb05ld093bmVyRG9jdW1lbnRXYXNDYWxsZWQoZmFsc2UpOwogICAgIHdpbGxNb3Zl
VG9OZXdPd25lckRvY3VtZW50KCk7CiAgICAgQVNTRVJUKHdpbGxNb3ZlVG9OZXdPd25lckRvY3Vt
ZW50V2FzQ2FsbGVkKTsKQEAgLTQ1OCwxMCArNDU2LDggQEAgdm9pZCBOb2RlOjpzZXREb2N1bWVu
dChEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgICAgIGRvY3VtZW50LT5hZGROb2RlTGlzdENhY2hl
KCk7CiAgICAgfQogCi0gICAgaWYgKG1fZG9jdW1lbnQpIHsKKyAgICBpZiAobV9kb2N1bWVudCkK
ICAgICAgICAgbV9kb2N1bWVudC0+bW92ZU5vZGVJdGVyYXRvcnNUb05ld0RvY3VtZW50KHRoaXMs
IGRvY3VtZW50KTsKLSAgICAgICAgbV9kb2N1bWVudC0+Z3VhcmREZXJlZigpOwotICAgIH0KIAog
ICAgIG1fZG9jdW1lbnQgPSBkb2N1bWVudDsKIApAQCAtNDcwLDYgKzQ2Niw2OCBAQCB2b2lkIE5v
ZGU6OnNldERvY3VtZW50KERvY3VtZW50KiBkb2N1bWVudCkKICAgICBBU1NFUlQoZGlkTW92ZVRv
TmV3T3duZXJEb2N1bWVudFdhc0NhbGxlZCk7CiB9CiAKK3ZvaWQgTm9kZTo6c2V0RG9jdW1lbnRS
ZWN1cnNpdmVseShEb2N1bWVudCogbmV3RG9jdW1lbnQpCit7CisgICAgQVNTRVJUKGRvY3VtZW50
KCkgIT0gbmV3RG9jdW1lbnQpOworCisgICAgZm9yIChOb2RlKiBub2RlID0gdGhpczsgbm9kZTsg
bm9kZSA9IG5vZGUtPnRyYXZlcnNlTmV4dE5vZGUodGhpcykpIHsKKyAgICAgICAgbm9kZS0+c2V0
RG9jdW1lbnQobmV3RG9jdW1lbnQpOworICAgICAgICBpZiAoIW5vZGUtPmlzRWxlbWVudE5vZGUo
KSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBpZiAoTm9kZSogc2hhZG93ID0gdG9F
bGVtZW50KG5vZGUpLT5zaGFkb3dSb290KCkpCisgICAgICAgICAgICBzaGFkb3ctPnNldERvY3Vt
ZW50UmVjdXJzaXZlbHkobmV3RG9jdW1lbnQpOworICAgIH0KK30KKwordm9pZCBOb2RlOjpzZXRU
cmVlU2NvcGUoVHJlZVNjb3BlKiBuZXdUcmVlU2NvcGUpCit7CisgICAgQVNTRVJUKCFpc0RvY3Vt
ZW50Tm9kZSgpKTsKKyAgICBBU1NFUlQobmV3VHJlZVNjb3BlKTsKKyAgICBBU1NFUlQoIWluRG9j
dW1lbnQoKSB8fCBtX3RyZWVTY29wZSA9PSBuZXdUcmVlU2NvcGUpOworICAgIGlmIChtX3RyZWVT
Y29wZSA9PSBuZXdUcmVlU2NvcGUpCisgICAgICAgIHJldHVybjsKKworICAgIFRyZWVTY29wZSog
b2xkVHJlZVNjb3BlID0gbV90cmVlU2NvcGU7CisgICAgbmV3VHJlZVNjb3BlLT5ndWFyZFJlZigp
OworICAgIG1fdHJlZVNjb3BlID0gbmV3VHJlZVNjb3BlOworICAgIHNldERvY3VtZW50KG5ld1Ry
ZWVTY29wZS0+ZG9jdW1lbnQoKSk7CisgICAgaWYgKG9sZFRyZWVTY29wZSkKKyAgICAgICAgb2xk
VHJlZVNjb3BlLT5ndWFyZERlcmVmKCk7Cit9CisKK3ZvaWQgTm9kZTo6c2V0VHJlZVNjb3BlUmVj
dXJzaXZlbHkoVHJlZVNjb3BlKiBuZXdUcmVlU2NvcGUpCit7CisgICAgQVNTRVJUKCFpc0RvY3Vt
ZW50Tm9kZSgpKTsKKyAgICBBU1NFUlQobmV3VHJlZVNjb3BlKTsKKyAgICBpZiAobV90cmVlU2Nv
cGUgPT0gbmV3VHJlZVNjb3BlKQorICAgICAgICByZXR1cm47CisKKyAgICBEb2N1bWVudCogY3Vy
cmVudERvY3VtZW50ID0gZG9jdW1lbnQoKTsKKyAgICBEb2N1bWVudCogbmV3RG9jdW1lbnQgPSBu
ZXdUcmVlU2NvcGUtPmRvY3VtZW50KCk7IAorICAgIC8vIElmIGFuIGVsZW1lbnQgaXMgbW92ZWQg
ZnJvbSBhIGRvY3VtZW50IGFuZCB0aGVuIGV2ZW50dWFsbHkgYmFjayBhZ2FpbiB0aGUgY29sbGVj
dGlvbiBjYWNoZSBmb3IKKyAgICAvLyB0aGF0IGVsZW1lbnQgbWF5IGNvbnRhaW4gc3RhbGUgZGF0
YSBhcyBjaGFuZ2VzIG1hZGUgdG8gaXQgd2lsbCBoYXZlIHVwZGF0ZWQgdGhlIERPTVRyZWVWZXJz
aW9uCisgICAgLy8gb2YgdGhlIGRvY3VtZW50IGl0IHdhcyBtb3ZlZCB0by4gQnkgaW5jcmVhc2lu
ZyB0aGUgRE9NVHJlZVZlcnNpb24gb2YgdGhlIGRvbmF0aW5nIGRvY3VtZW50IGhlcmUKKyAgICAv
LyB3ZSBlbnN1cmUgdGhhdCB0aGUgY29sbGVjdGlvbiBjYWNoZSB3aWxsIGJlIGludmFsaWRhdGVk
IGFzIG5lZWRlZCB3aGVuIHRoZSBlbGVtZW50IGlzIG1vdmVkIGJhY2suCisgICAgaWYgKGN1cnJl
bnREb2N1bWVudCAmJiBjdXJyZW50RG9jdW1lbnQgIT0gbmV3RG9jdW1lbnQpCisgICAgICAgIGN1
cnJlbnREb2N1bWVudC0+aW5jRE9NVHJlZVZlcnNpb24oKTsKKworICAgIGZvciAoTm9kZSogbm9k
ZSA9IHRoaXM7IG5vZGU7IG5vZGUgPSBub2RlLT50cmF2ZXJzZU5leHROb2RlKHRoaXMpKSB7Cisg
ICAgICAgIG5vZGUtPnNldFRyZWVTY29wZShuZXdUcmVlU2NvcGUpOworICAgICAgICBpZiAoIW5v
ZGUtPmlzRWxlbWVudE5vZGUoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBpZiAo
Tm9kZSogc2hhZG93ID0gdG9FbGVtZW50KG5vZGUpLT5zaGFkb3dSb290KCkpIHsKKyAgICAgICAg
ICAgIC8vIEZJWE1FOiBhZGFwdCB0byBTaGFkb3dGcmFnbWVudAorICAgICAgICAgICAgLy8gLi4u
LT5zZXRQYXJlbnRUcmVlU2NvcGUobmV3VHJlZVNjb3BlKTsKKyAgICAgICAgICAgIAorICAgICAg
ICAgICAgLy8gQnV0OiBuZWVkIHRvIHRyYXZlcnNlIHNoYWRvdyB0cmVlIGlmIGRvY3VtZW50IGhh
cyBjaGFuZ2VkLgorICAgICAgICAgICAgaWYgKGN1cnJlbnREb2N1bWVudCAhPSBuZXdEb2N1bWVu
dCkgeworICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBhZGFwdCB0byBTaGFkb3dGcmFnbWVudAor
ICAgICAgICAgICAgICAgIHNoYWRvdy0+c2V0RG9jdW1lbnRSZWN1cnNpdmVseShuZXdEb2N1bWVu
dCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CisKIE5vZGVSYXJlRGF0YSog
Tm9kZTo6cmFyZURhdGEoKSBjb25zdAogewogICAgIEFTU0VSVChoYXNSYXJlRGF0YSgpKTsKQEAg
LTgwMCwyNyArODU4LDYgQEAgYm9vbCBOb2RlOjpoYXNOb25FbXB0eUJvdW5kaW5nQm94KCkgY29u
c3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgTm9kZTo6c2V0RG9jdW1lbnRSZWN1cnNp
dmVseShEb2N1bWVudCogbmV3RG9jdW1lbnQpCi17Ci0gICAgaWYgKGRvY3VtZW50KCkgPT0gbmV3
RG9jdW1lbnQpCi0gICAgICAgIHJldHVybjsKLQotICAgIC8vIElmIGFuIGVsZW1lbnQgaXMgbW92
ZWQgZnJvbSBhIGRvY3VtZW50IGFuZCB0aGVuIGV2ZW50dWFsbHkgYmFjayBhZ2FpbiB0aGUgY29s
bGVjdGlvbiBjYWNoZSBmb3IKLSAgICAvLyB0aGF0IGVsZW1lbnQgbWF5IGNvbnRhaW4gc3RhbGUg
ZGF0YSBhcyBjaGFuZ2VzIG1hZGUgdG8gaXQgd2lsbCBoYXZlIHVwZGF0ZWQgdGhlIERPTVRyZWVW
ZXJzaW9uCi0gICAgLy8gb2YgdGhlIGRvY3VtZW50IGl0IHdhcyBtb3ZlZCB0by4gQnkgaW5jcmVh
c2luZyB0aGUgRE9NVHJlZVZlcnNpb24gb2YgdGhlIGRvbmF0aW5nIGRvY3VtZW50IGhlcmUKLSAg
ICAvLyB3ZSBlbnN1cmUgdGhhdCB0aGUgY29sbGVjdGlvbiBjYWNoZSB3aWxsIGJlIGludmFsaWRh
dGVkIGFzIG5lZWRlZCB3aGVuIHRoZSBlbGVtZW50IGlzIG1vdmVkIGJhY2suCi0gICAgaWYgKGRv
Y3VtZW50KCkpCi0gICAgICAgIGRvY3VtZW50KCktPmluY0RPTVRyZWVWZXJzaW9uKCk7Ci0KLSAg
ICBmb3IgKE5vZGUqIG5vZGUgPSB0aGlzOyBub2RlOyBub2RlID0gbm9kZS0+dHJhdmVyc2VOZXh0
Tm9kZSh0aGlzKSkgewotICAgICAgICBub2RlLT5zZXREb2N1bWVudChuZXdEb2N1bWVudCk7Ci0g
ICAgICAgIGlmICghbm9kZS0+aXNFbGVtZW50Tm9kZSgpKQotICAgICAgICAgICAgY29udGludWU7
Ci0gICAgICAgIGlmIChOb2RlKiBzaGFkb3cgPSB0b0VsZW1lbnQobm9kZSktPnNoYWRvd1Jvb3Qo
KSkKLSAgICAgICAgICAgIHNoYWRvdy0+c2V0RG9jdW1lbnRSZWN1cnNpdmVseShuZXdEb2N1bWVu
dCk7Ci0gICAgfQotfQotCiBpbmxpbmUgdm9pZCBOb2RlOjpzZXRTdHlsZUNoYW5nZShTdHlsZUNo
YW5nZVR5cGUgY2hhbmdlVHlwZSkKIHsKICAgICBtX25vZGVGbGFncyA9IChtX25vZGVGbGFncyAm
IH5TdHlsZUNoYW5nZU1hc2spIHwgY2hhbmdlVHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Ob2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCmluZGV4IGI5NGZmMWE5
NzVhNDdmM2RlNTM4NWFhYjlkNzNkOGY4MDc2N2Y3MDEuLjE1MGVhMGM0ZmNhZTNiM2I4Y2Y2ODFj
ZDkzZDExNWY0ZGM1NDRjNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaApAQCAtNzIsNiArNzIsNyBAQCBjbGFzcyBS
ZW5kZXJCb3hNb2RlbE9iamVjdDsKIGNsYXNzIFJlbmRlck9iamVjdDsKIGNsYXNzIFJlbmRlclN0
eWxlOwogY2xhc3MgVGFnTm9kZUxpc3Q7CitjbGFzcyBUcmVlU2NvcGU7CiAKIHR5cGVkZWYgaW50
IEV4Y2VwdGlvbkNvZGU7CiAKQEAgLTg5LDYgKzkwLDggQEAgZW51bSBTdHlsZUNoYW5nZVR5cGUg
ewogCiBjbGFzcyBOb2RlIDogcHVibGljIEV2ZW50VGFyZ2V0LCBwdWJsaWMgVHJlZVNoYXJlZDxD
b250YWluZXJOb2RlPiwgcHVibGljIFNjcmlwdFdyYXBwYWJsZSB7CiAgICAgZnJpZW5kIGNsYXNz
IERvY3VtZW50OworICAgIGZyaWVuZCBjbGFzcyBUcmVlU2NvcGU7CisKIHB1YmxpYzoKICAgICBl
bnVtIE5vZGVUeXBlIHsKICAgICAgICAgRUxFTUVOVF9OT0RFID0gMSwKQEAgLTM0OSwxMiArMzUy
LDE3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1fZG9jdW1lbnQ7CiAgICAgfQogCi0gICAg
Ly8gRG8gbm90IHVzZSB0aGlzIG1ldGhvZCB0byBjaGFuZ2UgdGhlIGRvY3VtZW50IG9mIGEgbm9k
ZSB1bnRpbCBhZnRlciB0aGUgbm9kZSBoYXMgYmVlbgotICAgIC8vIHJlbW92ZWQgZnJvbSBpdHMg
cHJldmlvdXMgZG9jdW1lbnQuCi0gICAgdm9pZCBzZXREb2N1bWVudChEb2N1bWVudCopOworICAg
IGlubGluZSBUcmVlU2NvcGUqIHRyZWVTY29wZSgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1
cm4gbV90cmVlU2NvcGU7CisgICAgfQorCisgICAgLy8gRG8gbm90IHVzZSB0aGlzIG1ldGhvZCB0
byBjaGFuZ2UgdGhlIHNjb3BlIG9mIGEgbm9kZSB1bnRpbCBhZnRlciB0aGUgbm9kZSBoYXMgYmVl
bgorICAgIC8vIHJlbW92ZWQgZnJvbSBpdHMgcHJldmlvdXMgc2NvcGUuIERvIG5vdCB1c2UgdG8g
Y2hhbmdlIGRvY3VtZW50cy4KKyAgICB2b2lkIHNldFRyZWVTY29wZShUcmVlU2NvcGUqKTsKIAog
ICAgIC8vIFVzZWQgYnkgdGhlIGJhc2ljIERPTSBtZXRob2RzIChlLmcuLCBhcHBlbmRDaGlsZCgp
KS4KLSAgICB2b2lkIHNldERvY3VtZW50UmVjdXJzaXZlbHkoRG9jdW1lbnQqKTsKKyAgICB2b2lk
IHNldFRyZWVTY29wZVJlY3Vyc2l2ZWx5KFRyZWVTY29wZSopOwogCiAgICAgLy8gUmV0dXJucyB0
cnVlIGlmIHRoaXMgbm9kZSBpcyBhc3NvY2lhdGVkIHdpdGggYSBkb2N1bWVudCBhbmQgaXMgaW4g
aXRzIGFzc29jaWF0ZWQgZG9jdW1lbnQncwogICAgIC8vIG5vZGUgdHJlZSwgZmFsc2Ugb3RoZXJ3
aXNlLgpAQCAtNjMwLDYgKzYzOCwxMSBAQCBwcm90ZWN0ZWQ6CiAgICAgfTsKICAgICBOb2RlKERv
Y3VtZW50KiwgQ29uc3RydWN0aW9uVHlwZSk7CiAKKyAgICAvLyBEbyBub3QgdXNlIHRoaXMgbWV0
aG9kIHRvIGNoYW5nZSB0aGUgZG9jdW1lbnQgb2YgYSBub2RlIHVudGlsIGFmdGVyIHRoZSBub2Rl
IGhhcyBiZWVuCisgICAgLy8gcmVtb3ZlZCBmcm9tIGl0cyBwcmV2aW91cyBkb2N1bWVudC4KKyAg
ICB2b2lkIHNldERvY3VtZW50KERvY3VtZW50Kik7CisgICAgdm9pZCBzZXREb2N1bWVudFJlY3Vy
c2l2ZWx5KERvY3VtZW50Kik7CisKICAgICB2aXJ0dWFsIHZvaWQgd2lsbE1vdmVUb05ld093bmVy
RG9jdW1lbnQoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkTW92ZVRvTmV3T3duZXJEb2N1bWVudCgp
OwogICAgIApAQCAtNjgwLDYgKzY5Myw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB0cmFja0ZvckRl
YnVnZ2luZygpOwogCiAgICAgRG9jdW1lbnQqIG1fZG9jdW1lbnQ7CisgICAgVHJlZVNjb3BlKiBt
X3RyZWVTY29wZTsKICAgICBOb2RlKiBtX3ByZXZpb3VzOwogICAgIE5vZGUqIG1fbmV4dDsKICAg
ICBSZW5kZXJPYmplY3QqIG1fcmVuZGVyZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vVHJlZVNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuY3BwCmluZGV4
IDg1Mzg0NmUzZGU3Yzk2YzZlOTg4YWE1OWJiMzlhNDY5YWNkNDQ0OTQuLjYyYmM1OTU0NTg1MWJj
YzZhNGFmOTFmMGZkNzUxMjllZjkyMzZkZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9UcmVlU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuY3BwCkBA
IC0zNiwxMSArMzYsNDIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogdXNpbmcgbmFtZXNwYWNlIEhU
TUxOYW1lczsKIAogVHJlZVNjb3BlOjpUcmVlU2NvcGUoRG9jdW1lbnQqIGRvY3VtZW50LCBDb25z
dHJ1Y3Rpb25UeXBlIGNvbnN0cnVjdGlvblR5cGUpCi0gICAgOiBDb250YWluZXJOb2RlKGRvY3Vt
ZW50LCBjb25zdHJ1Y3Rpb25UeXBlKQorICAgIDogQ29udGFpbmVyTm9kZSgwLCBjb25zdHJ1Y3Rp
b25UeXBlKQorICAgICwgbV9wYXJlbnRUcmVlU2NvcGUoMCkKICAgICAsIG1fZ3VhcmRSZWZDb3Vu
dCgwKQogICAgICwgbV9hY2Nlc3NLZXlNYXBWYWxpZChmYWxzZSkKICAgICAsIG1fbnVtTm9kZUxp
c3RDYWNoZXMoMCkKIHsKKyAgICBtX2RvY3VtZW50ID0gZG9jdW1lbnQ7CisgICAgbV90cmVlU2Nv
cGUgPSB0aGlzOworICAgIGlmIChkb2N1bWVudCAmJiBkb2N1bWVudCAhPSB0aGlzKSB7CisgICAg
ICAgIC8vIEFzc3VtZSBkb2N1bWVudCBhcyBwYXJlbnQgc2NvcGUgZm9yIG5vdworICAgICAgICBt
X3BhcmVudFRyZWVTY29wZSA9IGRvY3VtZW50OworICAgICAgICBtX3BhcmVudFRyZWVTY29wZS0+
Z3VhcmRSZWYoKTsKKyAgICB9Cit9CisKK1RyZWVTY29wZTo6VHJlZVNjb3BlKERvY3VtZW50KiBk
b2N1bWVudCwgVHJlZVNjb3BlKiBwYXJlbnRTY29wZSwgQ29uc3RydWN0aW9uVHlwZSBjb25zdHJ1
Y3Rpb25UeXBlKQorICAgIDogQ29udGFpbmVyTm9kZSgwLCBjb25zdHJ1Y3Rpb25UeXBlKQorICAg
ICwgbV9wYXJlbnRUcmVlU2NvcGUocGFyZW50U2NvcGUpCisgICAgLCBtX2d1YXJkUmVmQ291bnQo
MCkKKyAgICAsIG1fYWNjZXNzS2V5TWFwVmFsaWQoZmFsc2UpCisgICAgLCBtX251bU5vZGVMaXN0
Q2FjaGVzKDApCit7CisgICAgQVNTRVJUKHBhcmVudFNjb3BlKTsKKyAgICBBU1NFUlQocGFyZW50
U2NvcGUgIT0gdGhpcyk7CisKKyAgICBtX2RvY3VtZW50ID0gZG9jdW1lbnQ7CisgICAgbV90cmVl
U2NvcGUgPSB0aGlzOworICAgIHBhcmVudFNjb3BlLT5ndWFyZFJlZigpOworfQorCitUcmVlU2Nv
cGU6On5UcmVlU2NvcGUoKQoreworICAgIEFTU0VSVCghbV9ndWFyZFJlZkNvdW50KTsKKyAgICBt
X3RyZWVTY29wZSA9IDA7CisgICAgaWYgKG1fcGFyZW50VHJlZVNjb3BlKQorICAgICAgICBtX3Bh
cmVudFRyZWVTY29wZS0+Z3VhcmREZXJlZigpOwogfQogCiB2b2lkIFRyZWVTY29wZTo6cmVtb3Zl
ZExhc3RSZWYoKQpAQCAtNDksOCArODAsOCBAQCB2b2lkIFRyZWVTY29wZTo6cmVtb3ZlZExhc3RS
ZWYoKQogICAgIGlmIChtX2d1YXJkUmVmQ291bnQpIHsKICAgICAgICAgLy8gSWYgcmVtb3Zpbmcg
YSBjaGlsZCByZW1vdmVzIHRoZSBsYXN0IHNlbGYtb25seSByZWYsIHdlIGRvbid0CiAgICAgICAg
IC8vIHdhbnQgdGhlIHNjb3BlIHRvIGJlIGRlc3RydWN0ZWQgdW50aWwgYWZ0ZXIKLSAgICAgICAg
Ly8gcmVtb3ZlQWxsQ2hpbGRyZW4gcmV0dXJucywgc28gd2UgZ3VhcmQgb3Vyc2VsdmVzIHdpdGgg
YW4KLSAgICAgICAgLy8gZXh0cmEgc2VsZi1vbmx5IHJlZi4KKyAgICAgICAgLy8gZGVzdHJveVNj
b3BlIHJldHVybnMsIHNvIHdlIGd1YXJkIG91cnNlbHZlcyB3aXRoIGFuCisgICAgICAgIC8vIGV4
dHJhIGd1YXJkIHJlZi4KICAgICAgICAgZ3VhcmRSZWYoKTsKICAgICAgICAgZGVzdHJveVNjb3Bl
KCk7CiAgICAgICAgIGd1YXJkRGVyZWYoKTsKQEAgLTY1LDYgKzk2LDIxIEBAIHZvaWQgVHJlZVNj
b3BlOjpkZXN0cm95U2NvcGUoKQogICAgIHJlbW92ZUFsbENoaWxkcmVuKCk7CiB9CiAKK3ZvaWQg
VHJlZVNjb3BlOjpzZXRQYXJlbnRUcmVlU2NvcGUoVHJlZVNjb3BlKiBuZXdQYXJlbnRTY29wZSkK
K3sKKyAgICBBU1NFUlQoIWlzRG9jdW1lbnROb2RlKCkpOyAvLyBjYW5ub3QgcmVwYXJlbnQgYSBk
b2N1bWVudCEKKyAgICBBU1NFUlQobV9wYXJlbnRUcmVlU2NvcGUpOyAvLyBldmVyeSBzY29wZSBv
dGhlciB0aGFuIGRvY3VtZW50IG5lZWRzIGEgcGFyZW50IHNjb3BlCisgICAgQVNTRVJUKG5ld1Bh
cmVudFNjb3BlKTsgICAgLy8gZXZlcnkgc2NvcGUgb3RoZXIgdGhhbiBkb2N1bWVudCBuZWVkcyBh
IHBhcmVudCBzY29wZQorCisgICAgaWYgKG1fcGFyZW50VHJlZVNjb3BlID09IG5ld1BhcmVudFNj
b3BlKQorICAgICAgICByZXR1cm47CisKKyAgICBUcmVlU2NvcGUqIG9sZFBhcmVudFNjb3BlID0g
bV9wYXJlbnRUcmVlU2NvcGU7CisgICAgbmV3UGFyZW50U2NvcGUtPmd1YXJkUmVmKCk7CisgICAg
bV9wYXJlbnRUcmVlU2NvcGUgPSBuZXdQYXJlbnRTY29wZTsKKyAgICBvbGRQYXJlbnRTY29wZS0+
Z3VhcmREZXJlZigpOworfQorCiBFbGVtZW50KiBUcmVlU2NvcGU6OmdldEVsZW1lbnRCeUlkKGNv
bnN0IEF0b21pY1N0cmluZyYgZWxlbWVudElkKSBjb25zdAogewogICAgIGlmIChlbGVtZW50SWQu
aXNFbXB0eSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZS5oIGIv
U291cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZS5oCmluZGV4IGNmNGE3YTA2YTMxYzI5NjA0ZTg2
YjM0OGM3MzE3YzJiZjcyOGEyYjAuLjA3YzBmZGU5OGNhNGJhOTFjNGQzOTcxZmM2MDY1OTQwZGUw
Mzg5NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlLmgKQEAgLTM1LDEzICszNSwxNiBAQCBjbGFzcyBF
bGVtZW50OwogY2xhc3MgSFRNTE1hcEVsZW1lbnQ7CiAKIGNsYXNzIFRyZWVTY29wZSA6IHB1Ymxp
YyBDb250YWluZXJOb2RlIHsKKyAgICBmcmllbmQgY2xhc3MgRG9jdW1lbnQ7CisKIHB1YmxpYzoK
KyAgICBUcmVlU2NvcGUqIHBhcmVudFRyZWVTY29wZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFyZW50
VHJlZVNjb3BlOyB9CisKICAgICAvLyBOb2RlcyBiZWxvbmdpbmcgdG8gdGhpcyBzY29wZSBob2xk
IGd1YXJkIHJlZmVyZW5jZXMgLQogICAgIC8vIHRoZXNlIGFyZSBlbm91Z2ggdG8ga2VlcCB0aGUg
c2NvcGUgZnJvbSBiZWluZyBkZXN0cm95ZWQsIGJ1dAogICAgIC8vIG5vdCBlbm91Z2ggdG8ga2Vl
cCBpdCBmcm9tIHJlbW92aW5nIGl0cyBjaGlsZHJlbi4gVGhpcyBhbGxvd3MgYQogICAgIC8vIG5v
ZGUgdGhhdCBvdXRsaXZlcyBpdHMgc2NvcGUgdG8gc3RpbGwgaGF2ZSBhIHZhbGlkIHNjb3BlCiAg
ICAgLy8gcG9pbnRlciB3aXRob3V0IGludHJvZHVjaW5nIHJlZmVyZW5jZSBjeWNsZXMuCi0KICAg
ICB2b2lkIGd1YXJkUmVmKCkKICAgICB7CiAgICAgICAgIEFTU0VSVCghbV9kZWxldGlvbkhhc0Jl
Z3VuKTsKQEAgLTg5LDggKzkyLDE1IEBAIHB1YmxpYzoKIAogcHJvdGVjdGVkOgogICAgIFRyZWVT
Y29wZShEb2N1bWVudCosIENvbnN0cnVjdGlvblR5cGUgPSBDcmVhdGVDb250YWluZXIpOworICAg
IFRyZWVTY29wZShEb2N1bWVudCosIFRyZWVTY29wZSosIENvbnN0cnVjdGlvblR5cGUgPSBDcmVh
dGVDb250YWluZXIpOworCisgICAgdm9pZCBzZXRQYXJlbnRUcmVlU2NvcGUoVHJlZVNjb3BlKik7
CisKKyAgICB2aXJ0dWFsIH5UcmVlU2NvcGUoKTsKIAogcHJpdmF0ZToKKyAgICBUcmVlU2NvcGUq
IG1fcGFyZW50VHJlZVNjb3BlOworCiAgICAgaW50IG1fZ3VhcmRSZWZDb3VudDsKIAogICAgIERv
Y3VtZW50T3JkZXJlZE1hcCBtX2VsZW1lbnRzQnlJZDsKQEAgLTExMiw3ICsxMjIsNyBAQCBpbmxp
bmUgYm9vbCBUcmVlU2NvcGU6OmNvbnRhaW5zTXVsdGlwbGVFbGVtZW50c1dpdGhJZChjb25zdCBB
dG9taWNTdHJpbmcmIGlkKSBjbwogewogICAgIHJldHVybiBtX2VsZW1lbnRzQnlJZC5jb250YWlu
c011bHRpcGxlKGlkLmltcGwoKSk7CiB9Ci0gICAgCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
IAogI2VuZGlmIC8vIFRyZWVTY29wZV9oCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>88341</attachid>
            <date>2011-04-05 17:19:00 -0700</date>
            <delta_ts>2011-04-06 20:28:37 -0700</delta_ts>
            <desc>new, smaller patch</desc>
            <filename>bug-52963-20110405171859.patch</filename>
            <type>text/plain</type>
            <size>15583</size>
            <attacher name="Roland Steiner">rolandsteiner</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODI5ODgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAwY2ViODA4NGViMDZlZGJj
ZmE2NTQ4NzU3MDFjY2JkMTg0NjE2ODUzLi41Yzk1ODk0YTFjNmU4MDEwNDEwY2Q2MmU3ZmRiODI1
NmMzZWYxY2NlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDMgQEAKKzIwMTEtMDQtMDUgIFJvbGFu
ZCBTdGVpbmVyICA8cm9sYW5kc3RlaW5lckBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTUyOTYzCisgICAgICAgIEJ1ZyA1Mjk2MyAtIEVuYWJsZSBPKDEpIGFj
Y2VzcyB0byByb290IGZyb20gYW55IG5vZGUgaW4gc2hhZG93IERPTSBzdWJ0cmVlCisKKyAgICAg
ICAgQWRkIGEgVHJlZVNjb3BlIHBvaW50ZXIgdG8gTm9kZSAod2hpY2ggc3Vic2VxdWVudGx5IHdp
bGwgcmVwbGFjZSB0aGUKKyAgICAgICAgRG9jdW1lbnQgcG9pbnRlcikgdG8gYWxsb3cgZGlyZWN0
IGFjY2VzcyB0byB0aGUgY29udGFpbmluZyB0cmVlIHNjb3BlLgorCisgICAgICAgIEluIGFuIG9i
amVjdCBkZXJpdmVkIGZyb20gVHJlZVNjb3BlIChjdXJyZW50bHkgRG9jdW1lbnQpLCB0aGUgdHJl
ZSBzY29wZSBwb2ludGVyCisgICAgICAgIHBvaW50cyB0byBpdHNlbGYuIFN1Y2ggb2JqZWN0cyBh
bHNvIGNvbnRhaW4gYSBwYXJlbnQgdHJlZSBzY29wZSBwb2ludGVyIHRoYXQKKyAgICAgICAgcG9p
bnRzIHRvIHRoZSBjb250YWluaW5nIHNjb3BlLiBGb3IgRG9jdW1lbnQsIHRoaXMgaXMgMC4KKwor
ICAgICAgICBBZGQgbmV3IGZ1bmN0aW9ucyBzZXRUcmVlU2NvcGVbUmVjdXJzaXZlbHldIHRoYXQg
cmVwbGFjZSBzZXREb2N1bWVudFtSZWN1cnNpdmVseV0uCisKKyAgICAgICAgTm8gbmV3IHRlc3Rz
LiAobm8gbmV3IGZ1bmN0aW9uYWxpdHkpCisKKyAgICAgICAgKiBkb20vQ29udGFpbmVyTm9kZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDb250YWluZXJOb2RlOjppbnNlcnRCZWZvcmUpOgorICAg
ICAgICAoV2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6cmVwbGFjZUNoaWxkKToKKyAgICAgICAgKFdl
YkNvcmU6OkNvbnRhaW5lck5vZGU6OmFwcGVuZENoaWxkKToKKyAgICAgICAgKiBkb20vRG9jdW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OkRvY3VtZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OkRvY3VtZW50OjpzZXREb2NUeXBlKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQu
aDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6Ok5vZGUpOgorICAgICAgICAqIGRvbS9Ob2RlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OnNldFRyZWVTY29wZSk6CisgICAgICAgIChXZWJD
b3JlOjpOb2RlOjpzZXRUcmVlU2NvcGVSZWN1cnNpdmVseSk6CisgICAgICAgICogZG9tL05vZGUu
aDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OnRyZWVTY29wZSk6CisgICAgICAgICogZG9tL1Ry
ZWVTY29wZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUcmVlU2NvcGU6OlRyZWVTY29wZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpUcmVlU2NvcGU6On5UcmVlU2NvcGUpOgorICAgICAgICAoV2ViQ29y
ZTo6VHJlZVNjb3BlOjpyZW1vdmVkTGFzdFJlZik6CisgICAgICAgIChXZWJDb3JlOjpUcmVlU2Nv
cGU6OnNldFBhcmVudFRyZWVTY29wZSk6CisgICAgICAgICogZG9tL1RyZWVTY29wZS5oOgorICAg
ICAgICAoV2ViQ29yZTo6VHJlZVNjb3BlOjpwYXJlbnRUcmVlU2NvcGUpOgorCiAyMDExLTA0LTA1
ICBWc2V2b2xvZCBWbGFzb3YgIDx2c2V2aWtAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IFBhdmVsIEZlbGRtYW4uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29u
dGFpbmVyTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKaW5k
ZXggZWEwMzg0OGFhYWZiY2QwMDBmNmYwOTAxZmU0NWM3ZDZlMjFhZGJiMy4uOTdiNDRlMzU1ODUy
ZTg4MWY4ODAyYTkwZDgxZDQ1NTM0Y2NiZTgzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL0NvbnRhaW5lck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJO
b2RlLmNwcApAQCAtMTYxLDcgKzE2MSw4IEBAIGJvb2wgQ29udGFpbmVyTm9kZTo6aW5zZXJ0QmVm
b3JlKFBhc3NSZWZQdHI8Tm9kZT4gbmV3Q2hpbGQsIE5vZGUqIHJlZkNoaWxkLCBFeGNlCiAgICAg
ICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbEluc2VydERPTU5vZGUoZG9jdW1lbnQo
KSwgY2hpbGQsIHRoaXMpOwogI2VuZGlmCiAKLSAgICAgICAgY2hpbGQtPnNldERvY3VtZW50UmVj
dXJzaXZlbHkoZG9jdW1lbnQoKSk7CisgICAgICAgIGNoaWxkLT5zZXRUcmVlU2NvcGVSZWN1cnNp
dmVseSh0cmVlU2NvcGUoKSk7CisKICAgICAgICAgaW5zZXJ0QmVmb3JlQ29tbW9uKG5leHQuZ2V0
KCksIGNoaWxkKTsKIAogICAgICAgICAvLyBTZW5kIG5vdGlmaWNhdGlvbiBhYm91dCB0aGUgY2hp
bGRyZW4gY2hhbmdlLgpAQCAtMzEwLDcgKzMxMSw3IEBAIGJvb2wgQ29udGFpbmVyTm9kZTo6cmVw
bGFjZUNoaWxkKFBhc3NSZWZQdHI8Tm9kZT4gbmV3Q2hpbGQsIE5vZGUqIG9sZENoaWxkLCBFeGNl
CiAgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbEluc2VydERPTU5vZGUoZG9j
dW1lbnQoKSwgY2hpbGQuZ2V0KCksIHRoaXMpOwogI2VuZGlmCiAKLSAgICAgICAgY2hpbGQtPnNl
dERvY3VtZW50UmVjdXJzaXZlbHkoZG9jdW1lbnQoKSk7CisgICAgICAgIGNoaWxkLT5zZXRUcmVl
U2NvcGVSZWN1cnNpdmVseSh0cmVlU2NvcGUoKSk7CiAKICAgICAgICAgLy8gQWRkIGNoaWxkIGFm
dGVyICJwcmV2Ii4KICAgICAgICAgZm9yYmlkRXZlbnREaXNwYXRjaCgpOwpAQCAtNTk5LDcgKzYw
MCw3IEBAIGJvb2wgQ29udGFpbmVyTm9kZTo6YXBwZW5kQ2hpbGQoUGFzc1JlZlB0cjxOb2RlPiBu
ZXdDaGlsZCwgRXhjZXB0aW9uQ29kZSYgZWMsIGJvCiAgICAgICAgIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6d2lsbEluc2VydERPTU5vZGUoZG9jdW1lbnQoKSwgY2hpbGQsIHRoaXMpOwogI2Vu
ZGlmCiAKLSAgICAgICAgY2hpbGQtPnNldERvY3VtZW50UmVjdXJzaXZlbHkoZG9jdW1lbnQoKSk7
CisgICAgICAgIGNoaWxkLT5zZXRUcmVlU2NvcGVSZWN1cnNpdmVseSh0cmVlU2NvcGUoKSk7CiAK
ICAgICAgICAgLy8gQXBwZW5kIGNoaWxkIHRvIHRoZSBlbmQgb2YgdGhlIGxpc3QKICAgICAgICAg
Zm9yYmlkRXZlbnREaXNwYXRjaCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggM2I2YjA0
YjZkOTAxZmU0MzE2OTEzODU4ZWM2Njk3ZWY0NjZmNTQ4Yy4uYTZmZDg2NDQ5ZWU3OWNlOWFiZDA1
OGU1ZjBiOWEyZTkyZDEzMjQzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC01NDksNiAr
NTQ5LDcgQEAgRG9jdW1lbnQ6On5Eb2N1bWVudCgpCiAgICAgQVNTRVJUKCFtX3NhdmVkUmVuZGVy
ZXIpOwogICAgIEFTU0VSVChtX3Jhbmdlcy5pc0VtcHR5KCkpOwogICAgIEFTU0VSVCghbV9zdHls
ZVJlY2FsY1RpbWVyLmlzQWN0aXZlKCkpOworICAgIEFTU0VSVCghbV9wYXJlbnRUcmVlU2NvcGUp
OwogCiAgICAgbV9zY3JpcHRSdW5uZXIuY2xlYXIoKTsKIApAQCAtNjgyLDcgKzY4Myw3IEBAIHZv
aWQgRG9jdW1lbnQ6OnNldERvY1R5cGUoUGFzc1JlZlB0cjxEb2N1bWVudFR5cGU+IGRvY1R5cGUp
CiAgICAgQVNTRVJUKCFtX2RvY1R5cGUgfHwgIWRvY1R5cGUpOwogICAgIG1fZG9jVHlwZSA9IGRv
Y1R5cGU7CiAgICAgaWYgKG1fZG9jVHlwZSkKLSAgICAgICAgbV9kb2NUeXBlLT5zZXREb2N1bWVu
dCh0aGlzKTsKKyAgICAgICAgbV9kb2NUeXBlLT5zZXRUcmVlU2NvcGUodGhpcyk7CiB9CiAKIERP
TUltcGxlbWVudGF0aW9uKiBEb2N1bWVudDo6aW1wbGVtZW50YXRpb24oKQpAQCAtOTEyLDcgKzkx
Myw3IEBAIFBhc3NSZWZQdHI8Tm9kZT4gRG9jdW1lbnQ6OmFkb3B0Tm9kZShQYXNzUmVmUHRyPE5v
ZGU+IHNvdXJjZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgICAgICAgICBzb3VyY2UtPnBhcmVu
dE5vZGUoKS0+cmVtb3ZlQ2hpbGQoc291cmNlLmdldCgpLCBlYyk7CiAgICAgfQogCi0gICAgc291
cmNlLT5zZXREb2N1bWVudFJlY3Vyc2l2ZWx5KHRoaXMpOworICAgIHNvdXJjZS0+c2V0VHJlZVNj
b3BlUmVjdXJzaXZlbHkodGhpcyk7CiAKICAgICByZXR1cm4gc291cmNlOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuaAppbmRleCAyODYxZTFiY2QzYmU2NWM5MWY3MjBhNDhlOTY1MjQ4YjBjNzA0ZmU1Li5i
ODk5YzFlYjFlNDQyYjk5ODQ5OTM4OGQ3Y2M1Y2Q4NmQ4YWNkZjQ0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuaApAQCAtMTM4NSwyMSArMTM4NSwyNSBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxDb250ZW50
U2VjdXJpdHlQb2xpY3k+IG1fY29udGVudFNlY3VyaXR5UG9saWN5OwogfTsKIAorLy8gPT09IE5v
ZGUgaW5saW5lIG1ldGhvZHMgPT09CisKKy8vIGhlcmUgYmVjYXVzZSB0aGVzZSBtZXRob2RzIHJl
cXVpcmUgdGhlIERvY3VtZW50IGRlZmluaXRpb24sIGJ1dCB3ZSByZWFsbHkgd2FudCB0byBpbmxp
bmUgdGhlbS4KKwogaW5saW5lIGJvb2wgTm9kZTo6aXNEb2N1bWVudE5vZGUoKSBjb25zdAogewog
ICAgIHJldHVybiB0aGlzID09IG1fZG9jdW1lbnQ7CiB9CiAKLS8vIGhlcmUgYmVjYXVzZSBpdCB1
c2VzIGEgRG9jdW1lbnQgbWV0aG9kIGJ1dCB3ZSByZWFsbHkgd2FudCB0byBpbmxpbmUgaXQKIGlu
bGluZSBOb2RlOjpOb2RlKERvY3VtZW50KiBkb2N1bWVudCwgQ29uc3RydWN0aW9uVHlwZSB0eXBl
KQogICAgIDogbV9kb2N1bWVudChkb2N1bWVudCkKKyAgICAsIG1fdHJlZVNjb3BlKGRvY3VtZW50
KSAvLyBhc3N1bWUgZG9jdW1lbnQncyBzY29wZSBieSBkZWZhdWx0CiAgICAgLCBtX3ByZXZpb3Vz
KDApCiAgICAgLCBtX25leHQoMCkKICAgICAsIG1fcmVuZGVyZXIoMCkKICAgICAsIG1fbm9kZUZs
YWdzKHR5cGUpCiB7Ci0gICAgaWYgKG1fZG9jdW1lbnQpCi0gICAgICAgIG1fZG9jdW1lbnQtPmd1
YXJkUmVmKCk7CisgICAgaWYgKG1fdHJlZVNjb3BlKQorICAgICAgICBtX3RyZWVTY29wZS0+Z3Vh
cmRSZWYoKTsKICNpZiAhZGVmaW5lZChOREVCVUcpIHx8IChkZWZpbmVkKERVTVBfTk9ERV9TVEFU
SVNUSUNTKSAmJiBEVU1QX05PREVfU1RBVElTVElDUykKICAgICB0cmFja0ZvckRlYnVnZ2luZygp
OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKaW5kZXggMzVlNWE2OWMyYzdlNzZhMDYzOGYzOWVhNWU2
MjBiNjg4OTRjOGJjYi4uMmQxOWU1MDhiMGRmYWFkNDlkNzRhM2NkYjliNjczZDQ3NDZkN2ExMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Ob2RlLmNwcApAQCAtNDA1LDggKzQwNSw4IEBAIE5vZGU6On5Ob2RlKCkKICAgICBp
ZiAobV9uZXh0KQogICAgICAgICBtX25leHQtPnNldFByZXZpb3VzU2libGluZygwKTsKIAotICAg
IGlmIChtX2RvY3VtZW50KQotICAgICAgICBtX2RvY3VtZW50LT5ndWFyZERlcmVmKCk7CisgICAg
aWYgKG1fdHJlZVNjb3BlKQorICAgICAgICBtX3RyZWVTY29wZS0+Z3VhcmREZXJlZigpOwogfQog
CiAjaWZkZWYgTkRFQlVHCkBAIC00NDIsOCArNDQyLDYgQEAgdm9pZCBOb2RlOjpzZXREb2N1bWVu
dChEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgaWYgKGluRG9jdW1lbnQoKSB8fCBtX2RvY3VtZW50
ID09IGRvY3VtZW50KQogICAgICAgICByZXR1cm47CiAKLSAgICBkb2N1bWVudC0+Z3VhcmRSZWYo
KTsKLQogICAgIHNldFdpbGxNb3ZlVG9OZXdPd25lckRvY3VtZW50V2FzQ2FsbGVkKGZhbHNlKTsK
ICAgICB3aWxsTW92ZVRvTmV3T3duZXJEb2N1bWVudCgpOwogICAgIEFTU0VSVCh3aWxsTW92ZVRv
TmV3T3duZXJEb2N1bWVudFdhc0NhbGxlZCk7CkBAIC00NTgsMTAgKzQ1Niw4IEBAIHZvaWQgTm9k
ZTo6c2V0RG9jdW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50KQogICAgICAgICBkb2N1bWVudC0+YWRk
Tm9kZUxpc3RDYWNoZSgpOwogICAgIH0KIAotICAgIGlmIChtX2RvY3VtZW50KSB7CisgICAgaWYg
KG1fZG9jdW1lbnQpCiAgICAgICAgIG1fZG9jdW1lbnQtPm1vdmVOb2RlSXRlcmF0b3JzVG9OZXdE
b2N1bWVudCh0aGlzLCBkb2N1bWVudCk7Ci0gICAgICAgIG1fZG9jdW1lbnQtPmd1YXJkRGVyZWYo
KTsKLSAgICB9CiAKICAgICBtX2RvY3VtZW50ID0gZG9jdW1lbnQ7CiAKQEAgLTQ3MCw2ICs0NjYs
NTUgQEAgdm9pZCBOb2RlOjpzZXREb2N1bWVudChEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgQVNT
RVJUKGRpZE1vdmVUb05ld093bmVyRG9jdW1lbnRXYXNDYWxsZWQpOwogfQogCit2b2lkIE5vZGU6
OnNldFRyZWVTY29wZShUcmVlU2NvcGUqIG5ld1RyZWVTY29wZSkKK3sKKyAgICBBU1NFUlQoIWlz
RG9jdW1lbnROb2RlKCkpOworICAgIEFTU0VSVChuZXdUcmVlU2NvcGUpOworICAgIEFTU0VSVCgh
aW5Eb2N1bWVudCgpIHx8IG1fdHJlZVNjb3BlID09IG5ld1RyZWVTY29wZSk7CisgICAgaWYgKG1f
dHJlZVNjb3BlID09IG5ld1RyZWVTY29wZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgVHJlZVNj
b3BlKiBvbGRUcmVlU2NvcGUgPSBtX3RyZWVTY29wZTsKKyAgICBuZXdUcmVlU2NvcGUtPmd1YXJk
UmVmKCk7CisgICAgbV90cmVlU2NvcGUgPSBuZXdUcmVlU2NvcGU7CisgICAgc2V0RG9jdW1lbnQo
bmV3VHJlZVNjb3BlLT5kb2N1bWVudCgpKTsKKyAgICBpZiAob2xkVHJlZVNjb3BlKQorICAgICAg
ICBvbGRUcmVlU2NvcGUtPmd1YXJkRGVyZWYoKTsKK30KKwordm9pZCBOb2RlOjpzZXRUcmVlU2Nv
cGVSZWN1cnNpdmVseShUcmVlU2NvcGUqIG5ld1RyZWVTY29wZSkKK3sKKyAgICBBU1NFUlQoIWlz
RG9jdW1lbnROb2RlKCkpOworICAgIEFTU0VSVChuZXdUcmVlU2NvcGUpOworICAgIGlmIChtX3Ry
ZWVTY29wZSA9PSBuZXdUcmVlU2NvcGUpCisgICAgICAgIHJldHVybjsKKworICAgIERvY3VtZW50
KiBjdXJyZW50RG9jdW1lbnQgPSBkb2N1bWVudCgpOworICAgIERvY3VtZW50KiBuZXdEb2N1bWVu
dCA9IG5ld1RyZWVTY29wZS0+ZG9jdW1lbnQoKTsgCisgICAgLy8gSWYgYW4gZWxlbWVudCBpcyBt
b3ZlZCBmcm9tIGEgZG9jdW1lbnQgYW5kIHRoZW4gZXZlbnR1YWxseSBiYWNrIGFnYWluIHRoZSBj
b2xsZWN0aW9uIGNhY2hlIGZvcgorICAgIC8vIHRoYXQgZWxlbWVudCBtYXkgY29udGFpbiBzdGFs
ZSBkYXRhIGFzIGNoYW5nZXMgbWFkZSB0byBpdCB3aWxsIGhhdmUgdXBkYXRlZCB0aGUgRE9NVHJl
ZVZlcnNpb24KKyAgICAvLyBvZiB0aGUgZG9jdW1lbnQgaXQgd2FzIG1vdmVkIHRvLiBCeSBpbmNy
ZWFzaW5nIHRoZSBET01UcmVlVmVyc2lvbiBvZiB0aGUgZG9uYXRpbmcgZG9jdW1lbnQgaGVyZQor
ICAgIC8vIHdlIGVuc3VyZSB0aGF0IHRoZSBjb2xsZWN0aW9uIGNhY2hlIHdpbGwgYmUgaW52YWxp
ZGF0ZWQgYXMgbmVlZGVkIHdoZW4gdGhlIGVsZW1lbnQgaXMgbW92ZWQgYmFjay4KKyAgICBpZiAo
Y3VycmVudERvY3VtZW50ICYmIGN1cnJlbnREb2N1bWVudCAhPSBuZXdEb2N1bWVudCkKKyAgICAg
ICAgY3VycmVudERvY3VtZW50LT5pbmNET01UcmVlVmVyc2lvbigpOworCisgICAgZm9yIChOb2Rl
KiBub2RlID0gdGhpczsgbm9kZTsgbm9kZSA9IG5vZGUtPnRyYXZlcnNlTmV4dE5vZGUodGhpcykp
IHsKKyAgICAgICAgbm9kZS0+c2V0VHJlZVNjb3BlKG5ld1RyZWVTY29wZSk7CisgICAgICAgIGlm
ICghbm9kZS0+aXNFbGVtZW50Tm9kZSgpKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAg
IGlmIChOb2RlKiBzaGFkb3cgPSB0b0VsZW1lbnQobm9kZSktPnNoYWRvd1Jvb3QoKSkgeworICAg
ICAgICAgICAgLy8gRklYTUU6IGFkYXB0IHRvIFNoYWRvd0ZyYWdtZW50CisgICAgICAgICAgICAv
LyAuLi4tPnNldFBhcmVudFRyZWVTY29wZShuZXdUcmVlU2NvcGUpOworICAgICAgICAgICAgCisg
ICAgICAgICAgICAvLyBCdXQ6IG5lZWQgdG8gdHJhdmVyc2Ugc2hhZG93IHRyZWUgaWYgZG9jdW1l
bnQgaGFzIGNoYW5nZWQuCisgICAgICAgICAgICBpZiAoY3VycmVudERvY3VtZW50ICE9IG5ld0Rv
Y3VtZW50KSB7CisgICAgICAgICAgICAgICAgLy8gRklYTUU6IGFkYXB0IHRvIFNoYWRvd0ZyYWdt
ZW50CisgICAgICAgICAgICAgICAgc2hhZG93LT5zZXREb2N1bWVudFJlY3Vyc2l2ZWx5KG5ld0Rv
Y3VtZW50KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKwogTm9kZVJhcmVE
YXRhKiBOb2RlOjpyYXJlRGF0YSgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGhhc1JhcmVEYXRhKCkp
OwpAQCAtODAyLDE1ICs4NDcsNyBAQCBib29sIE5vZGU6Omhhc05vbkVtcHR5Qm91bmRpbmdCb3go
KSBjb25zdAogCiB2b2lkIE5vZGU6OnNldERvY3VtZW50UmVjdXJzaXZlbHkoRG9jdW1lbnQqIG5l
d0RvY3VtZW50KQogewotICAgIGlmIChkb2N1bWVudCgpID09IG5ld0RvY3VtZW50KQotICAgICAg
ICByZXR1cm47Ci0KLSAgICAvLyBJZiBhbiBlbGVtZW50IGlzIG1vdmVkIGZyb20gYSBkb2N1bWVu
dCBhbmQgdGhlbiBldmVudHVhbGx5IGJhY2sgYWdhaW4gdGhlIGNvbGxlY3Rpb24gY2FjaGUgZm9y
Ci0gICAgLy8gdGhhdCBlbGVtZW50IG1heSBjb250YWluIHN0YWxlIGRhdGEgYXMgY2hhbmdlcyBt
YWRlIHRvIGl0IHdpbGwgaGF2ZSB1cGRhdGVkIHRoZSBET01UcmVlVmVyc2lvbgotICAgIC8vIG9m
IHRoZSBkb2N1bWVudCBpdCB3YXMgbW92ZWQgdG8uIEJ5IGluY3JlYXNpbmcgdGhlIERPTVRyZWVW
ZXJzaW9uIG9mIHRoZSBkb25hdGluZyBkb2N1bWVudCBoZXJlCi0gICAgLy8gd2UgZW5zdXJlIHRo
YXQgdGhlIGNvbGxlY3Rpb24gY2FjaGUgd2lsbCBiZSBpbnZhbGlkYXRlZCBhcyBuZWVkZWQgd2hl
biB0aGUgZWxlbWVudCBpcyBtb3ZlZCBiYWNrLgotICAgIGlmIChkb2N1bWVudCgpKQotICAgICAg
ICBkb2N1bWVudCgpLT5pbmNET01UcmVlVmVyc2lvbigpOworICAgIEFTU0VSVChkb2N1bWVudCgp
ICE9IG5ld0RvY3VtZW50KTsKIAogICAgIGZvciAoTm9kZSogbm9kZSA9IHRoaXM7IG5vZGU7IG5v
ZGUgPSBub2RlLT50cmF2ZXJzZU5leHROb2RlKHRoaXMpKSB7CiAgICAgICAgIG5vZGUtPnNldERv
Y3VtZW50KG5ld0RvY3VtZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2Rl
LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCmluZGV4IGI5NGZmMWE5NzVhNDdmM2RlNTM4
NWFhYjlkNzNkOGY4MDc2N2Y3MDEuLjE1MGVhMGM0ZmNhZTNiM2I4Y2Y2ODFjZDkzZDExNWY0ZGM1
NDRjNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL05vZGUuaApAQCAtNzIsNiArNzIsNyBAQCBjbGFzcyBSZW5kZXJCb3hNb2Rl
bE9iamVjdDsKIGNsYXNzIFJlbmRlck9iamVjdDsKIGNsYXNzIFJlbmRlclN0eWxlOwogY2xhc3Mg
VGFnTm9kZUxpc3Q7CitjbGFzcyBUcmVlU2NvcGU7CiAKIHR5cGVkZWYgaW50IEV4Y2VwdGlvbkNv
ZGU7CiAKQEAgLTg5LDYgKzkwLDggQEAgZW51bSBTdHlsZUNoYW5nZVR5cGUgewogCiBjbGFzcyBO
b2RlIDogcHVibGljIEV2ZW50VGFyZ2V0LCBwdWJsaWMgVHJlZVNoYXJlZDxDb250YWluZXJOb2Rl
PiwgcHVibGljIFNjcmlwdFdyYXBwYWJsZSB7CiAgICAgZnJpZW5kIGNsYXNzIERvY3VtZW50Owor
ICAgIGZyaWVuZCBjbGFzcyBUcmVlU2NvcGU7CisKIHB1YmxpYzoKICAgICBlbnVtIE5vZGVUeXBl
IHsKICAgICAgICAgRUxFTUVOVF9OT0RFID0gMSwKQEAgLTM0OSwxMiArMzUyLDE3IEBAIHB1Ymxp
YzoKICAgICAgICAgcmV0dXJuIG1fZG9jdW1lbnQ7CiAgICAgfQogCi0gICAgLy8gRG8gbm90IHVz
ZSB0aGlzIG1ldGhvZCB0byBjaGFuZ2UgdGhlIGRvY3VtZW50IG9mIGEgbm9kZSB1bnRpbCBhZnRl
ciB0aGUgbm9kZSBoYXMgYmVlbgotICAgIC8vIHJlbW92ZWQgZnJvbSBpdHMgcHJldmlvdXMgZG9j
dW1lbnQuCi0gICAgdm9pZCBzZXREb2N1bWVudChEb2N1bWVudCopOworICAgIGlubGluZSBUcmVl
U2NvcGUqIHRyZWVTY29wZSgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV90cmVlU2Nv
cGU7CisgICAgfQorCisgICAgLy8gRG8gbm90IHVzZSB0aGlzIG1ldGhvZCB0byBjaGFuZ2UgdGhl
IHNjb3BlIG9mIGEgbm9kZSB1bnRpbCBhZnRlciB0aGUgbm9kZSBoYXMgYmVlbgorICAgIC8vIHJl
bW92ZWQgZnJvbSBpdHMgcHJldmlvdXMgc2NvcGUuIERvIG5vdCB1c2UgdG8gY2hhbmdlIGRvY3Vt
ZW50cy4KKyAgICB2b2lkIHNldFRyZWVTY29wZShUcmVlU2NvcGUqKTsKIAogICAgIC8vIFVzZWQg
YnkgdGhlIGJhc2ljIERPTSBtZXRob2RzIChlLmcuLCBhcHBlbmRDaGlsZCgpKS4KLSAgICB2b2lk
IHNldERvY3VtZW50UmVjdXJzaXZlbHkoRG9jdW1lbnQqKTsKKyAgICB2b2lkIHNldFRyZWVTY29w
ZVJlY3Vyc2l2ZWx5KFRyZWVTY29wZSopOwogCiAgICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoaXMg
bm9kZSBpcyBhc3NvY2lhdGVkIHdpdGggYSBkb2N1bWVudCBhbmQgaXMgaW4gaXRzIGFzc29jaWF0
ZWQgZG9jdW1lbnQncwogICAgIC8vIG5vZGUgdHJlZSwgZmFsc2Ugb3RoZXJ3aXNlLgpAQCAtNjMw
LDYgKzYzOCwxMSBAQCBwcm90ZWN0ZWQ6CiAgICAgfTsKICAgICBOb2RlKERvY3VtZW50KiwgQ29u
c3RydWN0aW9uVHlwZSk7CiAKKyAgICAvLyBEbyBub3QgdXNlIHRoaXMgbWV0aG9kIHRvIGNoYW5n
ZSB0aGUgZG9jdW1lbnQgb2YgYSBub2RlIHVudGlsIGFmdGVyIHRoZSBub2RlIGhhcyBiZWVuCisg
ICAgLy8gcmVtb3ZlZCBmcm9tIGl0cyBwcmV2aW91cyBkb2N1bWVudC4KKyAgICB2b2lkIHNldERv
Y3VtZW50KERvY3VtZW50Kik7CisgICAgdm9pZCBzZXREb2N1bWVudFJlY3Vyc2l2ZWx5KERvY3Vt
ZW50Kik7CisKICAgICB2aXJ0dWFsIHZvaWQgd2lsbE1vdmVUb05ld093bmVyRG9jdW1lbnQoKTsK
ICAgICB2aXJ0dWFsIHZvaWQgZGlkTW92ZVRvTmV3T3duZXJEb2N1bWVudCgpOwogICAgIApAQCAt
NjgwLDYgKzY5Myw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB0cmFja0ZvckRlYnVnZ2luZygpOwog
CiAgICAgRG9jdW1lbnQqIG1fZG9jdW1lbnQ7CisgICAgVHJlZVNjb3BlKiBtX3RyZWVTY29wZTsK
ICAgICBOb2RlKiBtX3ByZXZpb3VzOwogICAgIE5vZGUqIG1fbmV4dDsKICAgICBSZW5kZXJPYmpl
Y3QqIG1fcmVuZGVyZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3Bl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuY3BwCmluZGV4IDg1Mzg0NmUzZGU3
Yzk2YzZlOTg4YWE1OWJiMzlhNDY5YWNkNDQ0OTQuLjZjNjI3OTRhOWU4MThiYzEyZGRhMWY4ZWM5
ODA3Y2IwOWQ1ODFiMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuY3BwCkBAIC0zNiwxMSArMzYs
NDIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAog
VHJlZVNjb3BlOjpUcmVlU2NvcGUoRG9jdW1lbnQqIGRvY3VtZW50LCBDb25zdHJ1Y3Rpb25UeXBl
IGNvbnN0cnVjdGlvblR5cGUpCi0gICAgOiBDb250YWluZXJOb2RlKGRvY3VtZW50LCBjb25zdHJ1
Y3Rpb25UeXBlKQorICAgIDogQ29udGFpbmVyTm9kZSgwLCBjb25zdHJ1Y3Rpb25UeXBlKQorICAg
ICwgbV9wYXJlbnRUcmVlU2NvcGUoMCkKICAgICAsIG1fZ3VhcmRSZWZDb3VudCgwKQogICAgICwg
bV9hY2Nlc3NLZXlNYXBWYWxpZChmYWxzZSkKICAgICAsIG1fbnVtTm9kZUxpc3RDYWNoZXMoMCkK
IHsKKyAgICBtX2RvY3VtZW50ID0gZG9jdW1lbnQ7CisgICAgbV90cmVlU2NvcGUgPSB0aGlzOwor
ICAgIGlmIChkb2N1bWVudCAmJiBkb2N1bWVudCAhPSB0aGlzKSB7CisgICAgICAgIC8vIEFzc3Vt
ZSBkb2N1bWVudCBhcyBwYXJlbnQgc2NvcGUgZm9yIG5vdworICAgICAgICBtX3BhcmVudFRyZWVT
Y29wZSA9IGRvY3VtZW50OworICAgICAgICBtX3BhcmVudFRyZWVTY29wZS0+Z3VhcmRSZWYoKTsK
KyAgICB9Cit9CisKK1RyZWVTY29wZTo6VHJlZVNjb3BlKERvY3VtZW50KiBkb2N1bWVudCwgVHJl
ZVNjb3BlKiBwYXJlbnRTY29wZSwgQ29uc3RydWN0aW9uVHlwZSBjb25zdHJ1Y3Rpb25UeXBlKQor
ICAgIDogQ29udGFpbmVyTm9kZSgwLCBjb25zdHJ1Y3Rpb25UeXBlKQorICAgICwgbV9wYXJlbnRU
cmVlU2NvcGUocGFyZW50U2NvcGUpCisgICAgLCBtX2d1YXJkUmVmQ291bnQoMCkKKyAgICAsIG1f
YWNjZXNzS2V5TWFwVmFsaWQoZmFsc2UpCisgICAgLCBtX251bU5vZGVMaXN0Q2FjaGVzKDApCit7
CisgICAgQVNTRVJUKHBhcmVudFNjb3BlKTsKKyAgICBBU1NFUlQocGFyZW50U2NvcGUgIT0gdGhp
cyk7CisKKyAgICBtX2RvY3VtZW50ID0gZG9jdW1lbnQ7CisgICAgbV90cmVlU2NvcGUgPSB0aGlz
OworICAgIHBhcmVudFNjb3BlLT5ndWFyZFJlZigpOworfQorCitUcmVlU2NvcGU6On5UcmVlU2Nv
cGUoKQoreworICAgIEFTU0VSVCghbV9ndWFyZFJlZkNvdW50KTsKKyAgICBtX3RyZWVTY29wZSA9
IDA7CisgICAgaWYgKG1fcGFyZW50VHJlZVNjb3BlKQorICAgICAgICBtX3BhcmVudFRyZWVTY29w
ZS0+Z3VhcmREZXJlZigpOwogfQogCiB2b2lkIFRyZWVTY29wZTo6cmVtb3ZlZExhc3RSZWYoKQpA
QCAtNDksOCArODAsOCBAQCB2b2lkIFRyZWVTY29wZTo6cmVtb3ZlZExhc3RSZWYoKQogICAgIGlm
IChtX2d1YXJkUmVmQ291bnQpIHsKICAgICAgICAgLy8gSWYgcmVtb3ZpbmcgYSBjaGlsZCByZW1v
dmVzIHRoZSBsYXN0IHNlbGYtb25seSByZWYsIHdlIGRvbid0CiAgICAgICAgIC8vIHdhbnQgdGhl
IHNjb3BlIHRvIGJlIGRlc3RydWN0ZWQgdW50aWwgYWZ0ZXIKLSAgICAgICAgLy8gcmVtb3ZlQWxs
Q2hpbGRyZW4gcmV0dXJucywgc28gd2UgZ3VhcmQgb3Vyc2VsdmVzIHdpdGggYW4KLSAgICAgICAg
Ly8gZXh0cmEgc2VsZi1vbmx5IHJlZi4KKyAgICAgICAgLy8gZGVzdHJveVNjb3BlIHJldHVybnMs
IHNvIHdlIGd1YXJkIG91cnNlbHZlcyB3aXRoIGFuCisgICAgICAgIC8vIGV4dHJhIGd1YXJkIHJl
Zi4KICAgICAgICAgZ3VhcmRSZWYoKTsKICAgICAgICAgZGVzdHJveVNjb3BlKCk7CiAgICAgICAg
IGd1YXJkRGVyZWYoKTsKQEAgLTY1LDYgKzk2LDIzIEBAIHZvaWQgVHJlZVNjb3BlOjpkZXN0cm95
U2NvcGUoKQogICAgIHJlbW92ZUFsbENoaWxkcmVuKCk7CiB9CiAKK3ZvaWQgVHJlZVNjb3BlOjpz
ZXRQYXJlbnRUcmVlU2NvcGUoVHJlZVNjb3BlKiBuZXdQYXJlbnRTY29wZSkKK3sKKyAgICAvLyBD
YW5ub3QgcmVwYXJlbnQgYSBkb2N1bWVudCEKKyAgICBBU1NFUlQoIWlzRG9jdW1lbnROb2RlKCkp
OworICAgIC8vIEV2ZXJ5IHNjb3BlIG90aGVyIHRoYW4gZG9jdW1lbnQgbmVlZHMgYSBwYXJlbnQg
c2NvcGUuCisgICAgQVNTRVJUKG1fcGFyZW50VHJlZVNjb3BlKTsKKyAgICBBU1NFUlQobmV3UGFy
ZW50U2NvcGUpOworCisgICAgaWYgKG1fcGFyZW50VHJlZVNjb3BlID09IG5ld1BhcmVudFNjb3Bl
KQorICAgICAgICByZXR1cm47CisKKyAgICBUcmVlU2NvcGUqIG9sZFBhcmVudFNjb3BlID0gbV9w
YXJlbnRUcmVlU2NvcGU7CisgICAgbmV3UGFyZW50U2NvcGUtPmd1YXJkUmVmKCk7CisgICAgbV9w
YXJlbnRUcmVlU2NvcGUgPSBuZXdQYXJlbnRTY29wZTsKKyAgICBvbGRQYXJlbnRTY29wZS0+Z3Vh
cmREZXJlZigpOworfQorCiBFbGVtZW50KiBUcmVlU2NvcGU6OmdldEVsZW1lbnRCeUlkKGNvbnN0
IEF0b21pY1N0cmluZyYgZWxlbWVudElkKSBjb25zdAogewogICAgIGlmIChlbGVtZW50SWQuaXNF
bXB0eSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZS5oIGIvU291
cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZS5oCmluZGV4IGNmNGE3YTA2YTMxYzI5NjA0ZTg2YjM0
OGM3MzE3YzJiZjcyOGEyYjAuLjA3YzBmZGU5OGNhNGJhOTFjNGQzOTcxZmM2MDY1OTQwZGUwMzg5
NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlLmgKQEAgLTM1LDEzICszNSwxNiBAQCBjbGFzcyBFbGVt
ZW50OwogY2xhc3MgSFRNTE1hcEVsZW1lbnQ7CiAKIGNsYXNzIFRyZWVTY29wZSA6IHB1YmxpYyBD
b250YWluZXJOb2RlIHsKKyAgICBmcmllbmQgY2xhc3MgRG9jdW1lbnQ7CisKIHB1YmxpYzoKKyAg
ICBUcmVlU2NvcGUqIHBhcmVudFRyZWVTY29wZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFyZW50VHJl
ZVNjb3BlOyB9CisKICAgICAvLyBOb2RlcyBiZWxvbmdpbmcgdG8gdGhpcyBzY29wZSBob2xkIGd1
YXJkIHJlZmVyZW5jZXMgLQogICAgIC8vIHRoZXNlIGFyZSBlbm91Z2ggdG8ga2VlcCB0aGUgc2Nv
cGUgZnJvbSBiZWluZyBkZXN0cm95ZWQsIGJ1dAogICAgIC8vIG5vdCBlbm91Z2ggdG8ga2VlcCBp
dCBmcm9tIHJlbW92aW5nIGl0cyBjaGlsZHJlbi4gVGhpcyBhbGxvd3MgYQogICAgIC8vIG5vZGUg
dGhhdCBvdXRsaXZlcyBpdHMgc2NvcGUgdG8gc3RpbGwgaGF2ZSBhIHZhbGlkIHNjb3BlCiAgICAg
Ly8gcG9pbnRlciB3aXRob3V0IGludHJvZHVjaW5nIHJlZmVyZW5jZSBjeWNsZXMuCi0KICAgICB2
b2lkIGd1YXJkUmVmKCkKICAgICB7CiAgICAgICAgIEFTU0VSVCghbV9kZWxldGlvbkhhc0JlZ3Vu
KTsKQEAgLTg5LDggKzkyLDE1IEBAIHB1YmxpYzoKIAogcHJvdGVjdGVkOgogICAgIFRyZWVTY29w
ZShEb2N1bWVudCosIENvbnN0cnVjdGlvblR5cGUgPSBDcmVhdGVDb250YWluZXIpOworICAgIFRy
ZWVTY29wZShEb2N1bWVudCosIFRyZWVTY29wZSosIENvbnN0cnVjdGlvblR5cGUgPSBDcmVhdGVD
b250YWluZXIpOworCisgICAgdm9pZCBzZXRQYXJlbnRUcmVlU2NvcGUoVHJlZVNjb3BlKik7CisK
KyAgICB2aXJ0dWFsIH5UcmVlU2NvcGUoKTsKIAogcHJpdmF0ZToKKyAgICBUcmVlU2NvcGUqIG1f
cGFyZW50VHJlZVNjb3BlOworCiAgICAgaW50IG1fZ3VhcmRSZWZDb3VudDsKIAogICAgIERvY3Vt
ZW50T3JkZXJlZE1hcCBtX2VsZW1lbnRzQnlJZDsKQEAgLTExMiw3ICsxMjIsNyBAQCBpbmxpbmUg
Ym9vbCBUcmVlU2NvcGU6OmNvbnRhaW5zTXVsdGlwbGVFbGVtZW50c1dpdGhJZChjb25zdCBBdG9t
aWNTdHJpbmcmIGlkKSBjbwogewogICAgIHJldHVybiBtX2VsZW1lbnRzQnlJZC5jb250YWluc011
bHRpcGxlKGlkLmltcGwoKSk7CiB9Ci0gICAgCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAog
I2VuZGlmIC8vIFRyZWVTY29wZV9oCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>88564</attachid>
            <date>2011-04-06 20:28:41 -0700</date>
            <delta_ts>2011-04-08 17:45:19 -0700</delta_ts>
            <desc>new patch, using NodeRareData</desc>
            <filename>bug-52963-20110406202840.patch</filename>
            <type>text/plain</type>
            <size>15500</size>
            <attacher name="Roland Steiner">rolandsteiner</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODMxMjMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAxMzUwYTI1MWZjYjBjMTFh
MWM4YjU2ZWQ4M2E5YjlkZjBmMGJlNzIwLi4yMzliZWU5MWQ4YTBmZmIxY2JjYzlkMjZiOWQ0NmJl
OTVjZjZhNjE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsNTEgQEAKIDIwMTEtMDQtMDYgIFJvbGFu
ZCBTdGVpbmVyICA8cm9sYW5kc3RlaW5lckBjaHJvbWl1bS5vcmc+CiAKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTUyOTYzCisgICAgICAgIEJ1ZyA1Mjk2MyAtIEVuYWJsZSBPKDEpIGFj
Y2VzcyB0byByb290IGZyb20gYW55IG5vZGUgaW4gc2hhZG93IERPTSBzdWJ0cmVlCisKKyAgICAg
ICAgQWRkIGEgVHJlZVNjb3BlIHBvaW50ZXIgdG8gTm9kZVJhcmVEYXRhIHRvIGFsbG93IGRpcmVj
dCBhY2Nlc3MgdG8gdGhlIGNvbnRhaW5pbmcgdHJlZSBzY29wZS4KKyAgICAgICAgSG93ZXZlciwg
aW4gY2FzZSB0aGUgY29udGFpbmluZyBzY29wZSBpcyB0aGUgZG9jdW1lbnQsIHRoaXMgaXMgbm90
IHNldCwgYW5kIHRoZSAKKyAgICAgICAgZG9jdW1lbnQgcG9pbnRlciB3aXRoaW4gTm9kZSBpcyB1
c2VkIGluc3RlYWQuIAorCisgICAgICAgIEluIGFuIG9iamVjdCBkZXJpdmVkIGZyb20gVHJlZVNj
b3BlIChjdXJyZW50bHkgRG9jdW1lbnQpLCB0aGUgdHJlZSBzY29wZSBwb2ludGVyCisgICAgICAg
IHBvaW50cyB0byBpdHNlbGYuIFN1Y2ggb2JqZWN0cyBhbHNvIGNvbnRhaW4gYSBwYXJlbnQgdHJl
ZSBzY29wZSBwb2ludGVyIHRoYXQKKyAgICAgICAgcG9pbnRzIHRvIHRoZSBjb250YWluaW5nIHNj
b3BlLiBGb3IgRG9jdW1lbnQsIHRoaXMgaXMgMC4KKworICAgICAgICBBZGQgbmV3IGZ1bmN0aW9u
cyBzZXRUcmVlU2NvcGVbUmVjdXJzaXZlbHldIHRoYXQgcmVwbGFjZSBzZXREb2N1bWVudFtSZWN1
cnNpdmVseV0KKyAgICAgICAgaW4gcHVibGljIHVzYWdlLiBzZXREb2N1bWVudFtSZWN1cnNpdmVs
eV0gYXJlIG5vdyBvbmx5IHVzZWQgaW50ZXJuYWxseSBhbmQgYXJlCisgICAgICAgIHRoZXJlcmZv
cmUgcHJvdGVjdGVkLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gKG5vIG5ldyBmdW5jdGlvbmFs
aXR5KQorCisgICAgICAgICogZG9tL0NvbnRhaW5lck5vZGUuY3BwOiBjaGFuZ2UgRE9NIG1hbmlw
dWxhdGlvbiBtZXRob2RzIHRvIHVwZGF0ZSBzY29wZSBvZiBpbnNlcnRlZCBub2RlcworICAgICAg
ICAoV2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6aW5zZXJ0QmVmb3JlKToKKyAgICAgICAgKFdlYkNv
cmU6OkNvbnRhaW5lck5vZGU6OnJlcGxhY2VDaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpDb250
YWluZXJOb2RlOjphcHBlbmRDaGlsZCk6CisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp+RG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnQ6OnNldERvY1R5cGUpOiBjaGFuZ2UgRE9NIG1hbmlwdWxhdGlvbiBtZXRob2RzIHRv
IHVwZGF0ZSBzY29wZSBvZiBpbnNlcnRlZCBub2RlcworICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnQ6OmFkb3B0Tm9kZSk6IGNoYW5nZSBET00gbWFuaXB1bGF0aW9uIG1ldGhvZHMgdG8gdXBkYXRl
IHNjb3BlIG9mIGluc2VydGVkIG5vZGVzCisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAg
ICAgICogZG9tL05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6dHJlZVNjb3BlKTog
dXNlIE5vZGVSYXJlRGF0YSB0byBjaGVjayBpZiBhIG5vbi1Eb2N1bWVudCBzY29wZSBpcyBzZXQK
KyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OnNldFRyZWVTY29wZSk6IHVwZGF0ZSBOb2RlUmFyZURh
dGEgZGVwZW5kaW5nIG9uIHdoZXRoZXIgc2NvcGUgaXMgYSBkb2N1bWVudAorICAgICAgICAoV2Vi
Q29yZTo6Tm9kZTo6c2V0VHJlZVNjb3BlUmVjdXJzaXZlbHkpOgorICAgICAgICAoV2ViQ29yZTo6
Tm9kZTo6c2V0RG9jdW1lbnRSZWN1cnNpdmVseSk6CisgICAgICAgICogZG9tL05vZGUuaDoKKyAg
ICAgICAgKiBkb20vTm9kZVJhcmVEYXRhLmg6IGFkZCBzY29wZSBwb2ludGVyCisgICAgICAgIChX
ZWJDb3JlOjpOb2RlUmFyZURhdGE6Ok5vZGVSYXJlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpO
b2RlUmFyZURhdGE6OnRyZWVTY29wZSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmFyZURhdGE6
OnNldFRyZWVTY29wZSk6CisgICAgICAgICogZG9tL1RyZWVTY29wZS5jcHA6IGFkZCBwYXJlbnRU
cmVlU2NvcGUgcG9pbnRlcgorICAgICAgICAoV2ViQ29yZTo6VHJlZVNjb3BlOjpUcmVlU2NvcGUp
OgorICAgICAgICAoV2ViQ29yZTo6VHJlZVNjb3BlOjpzZXRQYXJlbnRUcmVlU2NvcGUpOgorICAg
ICAgICAqIGRvbS9UcmVlU2NvcGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlRyZWVTY29wZTo6cGFy
ZW50VHJlZVNjb3BlKToKKworMjAxMS0wNC0wNiAgUm9sYW5kIFN0ZWluZXIgIDxyb2xhbmRzdGVp
bmVyQGNocm9taXVtLm9yZz4KKwogICAgICAgICBSZXZpZXdlZCBieSBEaW1pdHJpIEdsYXprb3Yu
CiAKICAgICAgICAgQnVnIDU3OTk0IC0gTW92ZSBndWFyZFJlZiBmdW5jdGlvbmFsaXR5IGJhY2sg
dG8gRG9jdW1lbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2Rl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcAppbmRleCBlYTAzODQ4
YWFhZmJjZDAwMGY2ZjA5MDFmZTQ1YzdkNmUyMWFkYmIzLi45N2I0NGUzNTU4NTJlODgxZjg4MDJh
OTBkODFkNDU1MzRjY2JlODM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFp
bmVyTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwCkBA
IC0xNjEsNyArMTYxLDggQEAgYm9vbCBDb250YWluZXJOb2RlOjppbnNlcnRCZWZvcmUoUGFzc1Jl
ZlB0cjxOb2RlPiBuZXdDaGlsZCwgTm9kZSogcmVmQ2hpbGQsIEV4Y2UKICAgICAgICAgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsSW5zZXJ0RE9NTm9kZShkb2N1bWVudCgpLCBjaGlsZCwg
dGhpcyk7CiAjZW5kaWYKIAotICAgICAgICBjaGlsZC0+c2V0RG9jdW1lbnRSZWN1cnNpdmVseShk
b2N1bWVudCgpKTsKKyAgICAgICAgY2hpbGQtPnNldFRyZWVTY29wZVJlY3Vyc2l2ZWx5KHRyZWVT
Y29wZSgpKTsKKwogICAgICAgICBpbnNlcnRCZWZvcmVDb21tb24obmV4dC5nZXQoKSwgY2hpbGQp
OwogCiAgICAgICAgIC8vIFNlbmQgbm90aWZpY2F0aW9uIGFib3V0IHRoZSBjaGlsZHJlbiBjaGFu
Z2UuCkBAIC0zMTAsNyArMzExLDcgQEAgYm9vbCBDb250YWluZXJOb2RlOjpyZXBsYWNlQ2hpbGQo
UGFzc1JlZlB0cjxOb2RlPiBuZXdDaGlsZCwgTm9kZSogb2xkQ2hpbGQsIEV4Y2UKICAgICAgICAg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsSW5zZXJ0RE9NTm9kZShkb2N1bWVudCgpLCBj
aGlsZC5nZXQoKSwgdGhpcyk7CiAjZW5kaWYKIAotICAgICAgICBjaGlsZC0+c2V0RG9jdW1lbnRS
ZWN1cnNpdmVseShkb2N1bWVudCgpKTsKKyAgICAgICAgY2hpbGQtPnNldFRyZWVTY29wZVJlY3Vy
c2l2ZWx5KHRyZWVTY29wZSgpKTsKIAogICAgICAgICAvLyBBZGQgY2hpbGQgYWZ0ZXIgInByZXYi
LgogICAgICAgICBmb3JiaWRFdmVudERpc3BhdGNoKCk7CkBAIC01OTksNyArNjAwLDcgQEAgYm9v
bCBDb250YWluZXJOb2RlOjphcHBlbmRDaGlsZChQYXNzUmVmUHRyPE5vZGU+IG5ld0NoaWxkLCBF
eGNlcHRpb25Db2RlJiBlYywgYm8KICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3
aWxsSW5zZXJ0RE9NTm9kZShkb2N1bWVudCgpLCBjaGlsZCwgdGhpcyk7CiAjZW5kaWYKIAotICAg
ICAgICBjaGlsZC0+c2V0RG9jdW1lbnRSZWN1cnNpdmVseShkb2N1bWVudCgpKTsKKyAgICAgICAg
Y2hpbGQtPnNldFRyZWVTY29wZVJlY3Vyc2l2ZWx5KHRyZWVTY29wZSgpKTsKIAogICAgICAgICAv
LyBBcHBlbmQgY2hpbGQgdG8gdGhlIGVuZCBvZiB0aGUgbGlzdAogICAgICAgICBmb3JiaWRFdmVu
dERpc3BhdGNoKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCBkMjkzYzNmY2UwNzk2YzAy
NmE1NDU2MjUwZTRlYzk5NWVhY2NlOWE0Li42MDZkYTYzZjk3Y2RjODI5NzIwMWU1OGM0MGE3ZGM2
Nzk3MmZiZTA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTUxNiw2ICs1MTYsNyBAQCBE
b2N1bWVudDo6fkRvY3VtZW50KCkKICAgICBBU1NFUlQoIW1fc2F2ZWRSZW5kZXJlcik7CiAgICAg
QVNTRVJUKG1fcmFuZ2VzLmlzRW1wdHkoKSk7CiAgICAgQVNTRVJUKCFtX3N0eWxlUmVjYWxjVGlt
ZXIuaXNBY3RpdmUoKSk7CisgICAgQVNTRVJUKCFtX3BhcmVudFRyZWVTY29wZSk7CiAKICAgICBt
X3NjcmlwdFJ1bm5lci5jbGVhcigpOwogCkBAIC03MDAsNyArNzAxLDcgQEAgdm9pZCBEb2N1bWVu
dDo6c2V0RG9jVHlwZShQYXNzUmVmUHRyPERvY3VtZW50VHlwZT4gZG9jVHlwZSkKICAgICBBU1NF
UlQoIW1fZG9jVHlwZSB8fCAhZG9jVHlwZSk7CiAgICAgbV9kb2NUeXBlID0gZG9jVHlwZTsKICAg
ICBpZiAobV9kb2NUeXBlKQotICAgICAgICBtX2RvY1R5cGUtPnNldERvY3VtZW50KHRoaXMpOwor
ICAgICAgICBtX2RvY1R5cGUtPnNldFRyZWVTY29wZSh0aGlzKTsKIH0KIAogRE9NSW1wbGVtZW50
YXRpb24qIERvY3VtZW50OjppbXBsZW1lbnRhdGlvbigpCkBAIC05MzAsNyArOTMxLDcgQEAgUGFz
c1JlZlB0cjxOb2RlPiBEb2N1bWVudDo6YWRvcHROb2RlKFBhc3NSZWZQdHI8Tm9kZT4gc291cmNl
LCBFeGNlcHRpb25Db2RlJiBlYykKICAgICAgICAgICAgIHNvdXJjZS0+cGFyZW50Tm9kZSgpLT5y
ZW1vdmVDaGlsZChzb3VyY2UuZ2V0KCksIGVjKTsKICAgICB9CiAKLSAgICBzb3VyY2UtPnNldERv
Y3VtZW50UmVjdXJzaXZlbHkodGhpcyk7CisgICAgc291cmNlLT5zZXRUcmVlU2NvcGVSZWN1cnNp
dmVseSh0aGlzKTsKIAogICAgIHJldHVybiBzb3VyY2U7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmlu
ZGV4IDM1N2M0YTM1Mzg4NWZiZjZlODYzMWYwMjA5MDk4MzI3NTIxYzUyYmQuLjFmMGYyYTBlZGE0
ZTQ3MjkzYjI2MjBmNmJmOWZlZjY1OGFjNDY3ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBAIC0x
NDEwLDEyICsxNDEwLDEzIEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPENvbnRlbnRTZWN1cml0eVBv
bGljeT4gbV9jb250ZW50U2VjdXJpdHlQb2xpY3k7CiB9OwogCisvLyBQdXQgdGhlc2UgbWV0aG9k
cyBoZXJlLCBiZWNhdXNlIHRoZXkgcmVxdWlyZSB0aGUgRG9jdW1lbnQgZGVmaW5pdGlvbiwgYnV0
IHdlIHJlYWxseSB3YW50IHRvIGlubGluZSB0aGVtLgorCiBpbmxpbmUgYm9vbCBOb2RlOjppc0Rv
Y3VtZW50Tm9kZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHRoaXMgPT0gbV9kb2N1bWVudDsKIH0K
IAotLy8gaGVyZSBiZWNhdXNlIGl0IHVzZXMgYSBEb2N1bWVudCBtZXRob2QgYnV0IHdlIHJlYWxs
eSB3YW50IHRvIGlubGluZSBpdAogaW5saW5lIE5vZGU6Ok5vZGUoRG9jdW1lbnQqIGRvY3VtZW50
LCBDb25zdHJ1Y3Rpb25UeXBlIHR5cGUpCiAgICAgOiBtX2RvY3VtZW50KGRvY3VtZW50KQogICAg
ICwgbV9wcmV2aW91cygwKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCmluZGV4IDE1Y2I4YThiNDhhMWYyMTYzOTkx
ZjlkYjYxZmQ5NmE4YWE2NjNiNGQuLjNkZDdjNDcxYzVjMDAyMzEwZjkwZWM4NGZlMmFlZGE2ZDE3
ZTk0ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKQEAgLTQ3MCw2ICs0NzAsNjEgQEAgdm9pZCBOb2RlOjpz
ZXREb2N1bWVudChEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgQVNTRVJUKGRpZE1vdmVUb05ld093
bmVyRG9jdW1lbnRXYXNDYWxsZWQpOwogfQogCitUcmVlU2NvcGUqIE5vZGU6OnRyZWVTY29wZSgp
IGNvbnN0Cit7CisgICAgaWYgKCFoYXNSYXJlRGF0YSgpKQorICAgICAgICByZXR1cm4gZG9jdW1l
bnQoKTsKKyAgICBUcmVlU2NvcGUqIHNjb3BlID0gcmFyZURhdGEoKS0+dHJlZVNjb3BlKCk7Cisg
ICAgcmV0dXJuIHNjb3BlID8gc2NvcGUgOiBkb2N1bWVudCgpOworfQorCit2b2lkIE5vZGU6OnNl
dFRyZWVTY29wZShUcmVlU2NvcGUqIG5ld1RyZWVTY29wZSkKK3sKKyAgICBBU1NFUlQoIWlzRG9j
dW1lbnROb2RlKCkpOworICAgIEFTU0VSVChuZXdUcmVlU2NvcGUpOworICAgIEFTU0VSVCghaW5E
b2N1bWVudCgpIHx8IHRyZWVTY29wZSgpID09IG5ld1RyZWVTY29wZSk7CisKKyAgICBpZiAobmV3
VHJlZVNjb3BlLT5pc0RvY3VtZW50Tm9kZSgpKSB7CisgICAgICAgIGlmIChoYXNSYXJlRGF0YSgp
KQorICAgICAgICAgICAgcmFyZURhdGEoKS0+c2V0VHJlZVNjb3BlKDApOworICAgICAgICAvLyBT
ZXR0aW5nIHRoZSBuZXcgZG9jdW1lbnQgc2NvcGUgd2lsbCBiZSBoYW5kbGVkIGltcGxpY2l0bHkK
KyAgICAgICAgLy8gYnkgc2V0RG9jdW1lbnQoKSBiZWxvdy4KKyAgICB9IGVsc2UKKyAgICAgICAg
ZW5zdXJlUmFyZURhdGEoKS0+c2V0VHJlZVNjb3BlKG5ld1RyZWVTY29wZSk7CisKKyAgICBzZXRE
b2N1bWVudChuZXdUcmVlU2NvcGUtPmRvY3VtZW50KCkpOworfQorCit2b2lkIE5vZGU6OnNldFRy
ZWVTY29wZVJlY3Vyc2l2ZWx5KFRyZWVTY29wZSogbmV3VHJlZVNjb3BlKQoreworICAgIEFTU0VS
VCghaXNEb2N1bWVudE5vZGUoKSk7CisgICAgQVNTRVJUKG5ld1RyZWVTY29wZSk7CisgICAgaWYg
KHRyZWVTY29wZSgpID09IG5ld1RyZWVTY29wZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgRG9j
dW1lbnQqIGN1cnJlbnREb2N1bWVudCA9IGRvY3VtZW50KCk7CisgICAgRG9jdW1lbnQqIG5ld0Rv
Y3VtZW50ID0gbmV3VHJlZVNjb3BlLT5kb2N1bWVudCgpOyAKKyAgICAvLyBJZiBhbiBlbGVtZW50
IGlzIG1vdmVkIGZyb20gYSBkb2N1bWVudCBhbmQgdGhlbiBldmVudHVhbGx5IGJhY2sgYWdhaW4g
dGhlIGNvbGxlY3Rpb24gY2FjaGUgZm9yCisgICAgLy8gdGhhdCBlbGVtZW50IG1heSBjb250YWlu
IHN0YWxlIGRhdGEgYXMgY2hhbmdlcyBtYWRlIHRvIGl0IHdpbGwgaGF2ZSB1cGRhdGVkIHRoZSBE
T01UcmVlVmVyc2lvbgorICAgIC8vIG9mIHRoZSBkb2N1bWVudCBpdCB3YXMgbW92ZWQgdG8uIEJ5
IGluY3JlYXNpbmcgdGhlIERPTVRyZWVWZXJzaW9uIG9mIHRoZSBkb25hdGluZyBkb2N1bWVudCBo
ZXJlCisgICAgLy8gd2UgZW5zdXJlIHRoYXQgdGhlIGNvbGxlY3Rpb24gY2FjaGUgd2lsbCBiZSBp
bnZhbGlkYXRlZCBhcyBuZWVkZWQgd2hlbiB0aGUgZWxlbWVudCBpcyBtb3ZlZCBiYWNrLgorICAg
IGlmIChjdXJyZW50RG9jdW1lbnQgJiYgY3VycmVudERvY3VtZW50ICE9IG5ld0RvY3VtZW50KQor
ICAgICAgICBjdXJyZW50RG9jdW1lbnQtPmluY0RPTVRyZWVWZXJzaW9uKCk7CisKKyAgICBmb3Ig
KE5vZGUqIG5vZGUgPSB0aGlzOyBub2RlOyBub2RlID0gbm9kZS0+dHJhdmVyc2VOZXh0Tm9kZSh0
aGlzKSkgeworICAgICAgICBub2RlLT5zZXRUcmVlU2NvcGUobmV3VHJlZVNjb3BlKTsKKyAgICAg
ICAgaWYgKCFub2RlLT5pc0VsZW1lbnROb2RlKCkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAg
ICAgICAgLyogRklYTUU6IGFkYXB0IHRvIFNoYWRvd1Jvb3QgKGxpa2VseSBjb2RlIGJlbG93KToK
KyAgICAgICAgaWYgKFNoYWRvd1Jvb3QqIHNoYWRvd1Jvb3QgPSB0b0VsZW1lbnQobm9kZSktPnNo
YWRvd1Jvb3QoKSkgeworICAgICAgICAgICAgc2hhZG93Um9vdC0+c2V0UGFyZW50VHJlZVNjb3Bl
KG5ld1RyZWVTY29wZSk7CisgICAgICAgICAgICBpZiAoY3VycmVudERvY3VtZW50ICE9IG5ld0Rv
Y3VtZW50KQorICAgICAgICAgICAgICAgIHNoYWRvd1Jvb3QtPnNldERvY3VtZW50UmVjdXJzaXZl
bHkobmV3RG9jdW1lbnQpOworICAgICAgICB9CisgICAgICAgICovCisgICAgfQorfQorCiBOb2Rl
UmFyZURhdGEqIE5vZGU6OnJhcmVEYXRhKCkgY29uc3QKIHsKICAgICBBU1NFUlQoaGFzUmFyZURh
dGEoKSk7CkBAIC04MDIsMTUgKzg1Nyw3IEBAIGJvb2wgTm9kZTo6aGFzTm9uRW1wdHlCb3VuZGlu
Z0JveCgpIGNvbnN0CiAKIHZvaWQgTm9kZTo6c2V0RG9jdW1lbnRSZWN1cnNpdmVseShEb2N1bWVu
dCogbmV3RG9jdW1lbnQpCiB7Ci0gICAgaWYgKGRvY3VtZW50KCkgPT0gbmV3RG9jdW1lbnQpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIC8vIElmIGFuIGVsZW1lbnQgaXMgbW92ZWQgZnJvbSBhIGRv
Y3VtZW50IGFuZCB0aGVuIGV2ZW50dWFsbHkgYmFjayBhZ2FpbiB0aGUgY29sbGVjdGlvbiBjYWNo
ZSBmb3IKLSAgICAvLyB0aGF0IGVsZW1lbnQgbWF5IGNvbnRhaW4gc3RhbGUgZGF0YSBhcyBjaGFu
Z2VzIG1hZGUgdG8gaXQgd2lsbCBoYXZlIHVwZGF0ZWQgdGhlIERPTVRyZWVWZXJzaW9uCi0gICAg
Ly8gb2YgdGhlIGRvY3VtZW50IGl0IHdhcyBtb3ZlZCB0by4gQnkgaW5jcmVhc2luZyB0aGUgRE9N
VHJlZVZlcnNpb24gb2YgdGhlIGRvbmF0aW5nIGRvY3VtZW50IGhlcmUKLSAgICAvLyB3ZSBlbnN1
cmUgdGhhdCB0aGUgY29sbGVjdGlvbiBjYWNoZSB3aWxsIGJlIGludmFsaWRhdGVkIGFzIG5lZWRl
ZCB3aGVuIHRoZSBlbGVtZW50IGlzIG1vdmVkIGJhY2suCi0gICAgaWYgKGRvY3VtZW50KCkpCi0g
ICAgICAgIGRvY3VtZW50KCktPmluY0RPTVRyZWVWZXJzaW9uKCk7CisgICAgQVNTRVJUKGRvY3Vt
ZW50KCkgIT0gbmV3RG9jdW1lbnQpOwogCiAgICAgZm9yIChOb2RlKiBub2RlID0gdGhpczsgbm9k
ZTsgbm9kZSA9IG5vZGUtPnRyYXZlcnNlTmV4dE5vZGUodGhpcykpIHsKICAgICAgICAgbm9kZS0+
c2V0RG9jdW1lbnQobmV3RG9jdW1lbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L05vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKaW5kZXggYzIyNWRiYWM4ZmY4OTFk
ZjljZmUyNjVlYzI2YjgyZGUxYzRiYjEzYi4uMzQ3ZTk3ZjY4YTVhMmRkYjFiZWI4ZGUwMWYxZDNj
ZjMyZGE0YmM2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCkBAIC03Miw2ICs3Miw3IEBAIGNsYXNzIFJlbmRlckJv
eE1vZGVsT2JqZWN0OwogY2xhc3MgUmVuZGVyT2JqZWN0OwogY2xhc3MgUmVuZGVyU3R5bGU7CiBj
bGFzcyBUYWdOb2RlTGlzdDsKK2NsYXNzIFRyZWVTY29wZTsKIAogdHlwZWRlZiBpbnQgRXhjZXB0
aW9uQ29kZTsKIApAQCAtODksNiArOTAsOCBAQCBlbnVtIFN0eWxlQ2hhbmdlVHlwZSB7CiAKIGNs
YXNzIE5vZGUgOiBwdWJsaWMgRXZlbnRUYXJnZXQsIHB1YmxpYyBUcmVlU2hhcmVkPENvbnRhaW5l
ck5vZGU+LCBwdWJsaWMgU2NyaXB0V3JhcHBhYmxlIHsKICAgICBmcmllbmQgY2xhc3MgRG9jdW1l
bnQ7CisgICAgZnJpZW5kIGNsYXNzIFRyZWVTY29wZTsKKwogcHVibGljOgogICAgIGVudW0gTm9k
ZVR5cGUgewogICAgICAgICBFTEVNRU5UX05PREUgPSAxLApAQCAtMzQ5LDEyICszNTIsMTQgQEAg
cHVibGljOgogICAgICAgICByZXR1cm4gbV9kb2N1bWVudDsKICAgICB9CiAKLSAgICAvLyBEbyBu
b3QgdXNlIHRoaXMgbWV0aG9kIHRvIGNoYW5nZSB0aGUgZG9jdW1lbnQgb2YgYSBub2RlIHVudGls
IGFmdGVyIHRoZSBub2RlIGhhcyBiZWVuCi0gICAgLy8gcmVtb3ZlZCBmcm9tIGl0cyBwcmV2aW91
cyBkb2N1bWVudC4KLSAgICB2b2lkIHNldERvY3VtZW50KERvY3VtZW50Kik7CisgICAgVHJlZVNj
b3BlKiB0cmVlU2NvcGUoKSBjb25zdDsKKworICAgIC8vIERvIG5vdCB1c2UgdGhpcyBtZXRob2Qg
dG8gY2hhbmdlIHRoZSBzY29wZSBvZiBhIG5vZGUgdW50aWwgYWZ0ZXIgdGhlIG5vZGUgaGFzIGJl
ZW4KKyAgICAvLyByZW1vdmVkIGZyb20gaXRzIHByZXZpb3VzIHNjb3BlLiBEbyBub3QgdXNlIHRv
IGNoYW5nZSBkb2N1bWVudHMuCisgICAgdm9pZCBzZXRUcmVlU2NvcGUoVHJlZVNjb3BlKik7CiAK
ICAgICAvLyBVc2VkIGJ5IHRoZSBiYXNpYyBET00gbWV0aG9kcyAoZS5nLiwgYXBwZW5kQ2hpbGQo
KSkuCi0gICAgdm9pZCBzZXREb2N1bWVudFJlY3Vyc2l2ZWx5KERvY3VtZW50Kik7CisgICAgdm9p
ZCBzZXRUcmVlU2NvcGVSZWN1cnNpdmVseShUcmVlU2NvcGUqKTsKIAogICAgIC8vIFJldHVybnMg
dHJ1ZSBpZiB0aGlzIG5vZGUgaXMgYXNzb2NpYXRlZCB3aXRoIGEgZG9jdW1lbnQgYW5kIGlzIGlu
IGl0cyBhc3NvY2lhdGVkIGRvY3VtZW50J3MKICAgICAvLyBub2RlIHRyZWUsIGZhbHNlIG90aGVy
d2lzZS4KQEAgLTYzMCw2ICs2MzUsMTEgQEAgcHJvdGVjdGVkOgogICAgIH07CiAgICAgTm9kZShE
b2N1bWVudCosIENvbnN0cnVjdGlvblR5cGUpOwogCisgICAgLy8gRG8gbm90IHVzZSB0aGlzIG1l
dGhvZCB0byBjaGFuZ2UgdGhlIGRvY3VtZW50IG9mIGEgbm9kZSB1bnRpbCBhZnRlciB0aGUgbm9k
ZSBoYXMgYmVlbgorICAgIC8vIHJlbW92ZWQgZnJvbSBpdHMgcHJldmlvdXMgZG9jdW1lbnQuCisg
ICAgdm9pZCBzZXREb2N1bWVudChEb2N1bWVudCopOworICAgIHZvaWQgc2V0RG9jdW1lbnRSZWN1
cnNpdmVseShEb2N1bWVudCopOworCiAgICAgdmlydHVhbCB2b2lkIHdpbGxNb3ZlVG9OZXdPd25l
ckRvY3VtZW50KCk7CiAgICAgdmlydHVhbCB2b2lkIGRpZE1vdmVUb05ld093bmVyRG9jdW1lbnQo
KTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmFyZURhdGEuaCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmFyZURhdGEuaAppbmRleCBiYWRjNGUxNzdlNzJiNzRl
NDVlZThlOTUwN2U1ZDQ1OGJiZGY2NWFhLi5hYzA1ZDNlYmQ1ZjA5MWZiYWVkMTViMDBmNGYzMDZm
ZTE1NzcyZjAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJhcmVEYXRhLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSYXJlRGF0YS5oCkBAIC0zNCw2ICszNCw4IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgVHJlZVNjb3BlOworCiBzdHJ1Y3QgTm9k
ZUxpc3RzTm9kZURhdGEgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKE5vZGVMaXN0c05vZGVE
YXRhKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CkBAIC03Myw3ICs3NSw4IEBA
IGNsYXNzIE5vZGVSYXJlRGF0YSB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTm9kZVJhcmVE
YXRhKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6ICAgIAogICAgIE5vZGVSYXJl
RGF0YSgpCi0gICAgICAgIDogbV90YWJJbmRleCgwKQorICAgICAgICA6IG1fdHJlZVNjb3BlKDAp
CisgICAgICAgICwgbV90YWJJbmRleCgwKQogICAgICAgICAsIG1fdGFiSW5kZXhXYXNTZXRFeHBs
aWNpdGx5KGZhbHNlKQogICAgICAgICAsIG1faXNGb2N1c2VkKGZhbHNlKQogICAgICAgICAsIG1f
bmVlZHNGb2N1c0FwcGVhcmFuY2VVcGRhdGVTb29uQWZ0ZXJBdHRhY2goZmFsc2UpCkBAIC05Niwx
MSArOTksMTQgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgcmV0dXJuIHJhcmVEYXRhTWFwKCku
Z2V0KG5vZGUpOwogICAgIH0KKworICAgIFRyZWVTY29wZSogdHJlZVNjb3BlKCkgY29uc3QgeyBy
ZXR1cm4gbV90cmVlU2NvcGU7IH0KKyAgICB2b2lkIHNldFRyZWVTY29wZShUcmVlU2NvcGUqIHRy
ZWVTY29wZSkgeyBtX3RyZWVTY29wZSA9IHRyZWVTY29wZTsgfQogICAgIAogICAgIHZvaWQgY2xl
YXJOb2RlTGlzdHMoKSB7IG1fbm9kZUxpc3RzLmNsZWFyKCk7IH0KICAgICB2b2lkIHNldE5vZGVM
aXN0cyhQYXNzT3duUHRyPE5vZGVMaXN0c05vZGVEYXRhPiBsaXN0cykgeyBtX25vZGVMaXN0cyA9
IGxpc3RzOyB9CiAgICAgTm9kZUxpc3RzTm9kZURhdGEqIG5vZGVMaXN0cygpIGNvbnN0IHsgcmV0
dXJuIG1fbm9kZUxpc3RzLmdldCgpOyB9Ci0gICAgCisKICAgICBzaG9ydCB0YWJJbmRleCgpIGNv
bnN0IHsgcmV0dXJuIG1fdGFiSW5kZXg7IH0KICAgICB2b2lkIHNldFRhYkluZGV4RXhwbGljaXRs
eShzaG9ydCBpbmRleCkgeyBtX3RhYkluZGV4ID0gaW5kZXg7IG1fdGFiSW5kZXhXYXNTZXRFeHBs
aWNpdGx5ID0gdHJ1ZTsgfQogICAgIGJvb2wgdGFiSW5kZXhTZXRFeHBsaWNpdGx5KCkgY29uc3Qg
eyByZXR1cm4gbV90YWJJbmRleFdhc1NldEV4cGxpY2l0bHk7IH0KQEAgLTEyMyw2ICsxMjksNyBA
QCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBzZXROZWVkc0ZvY3VzQXBwZWFyYW5jZVVwZGF0ZVNvb25B
ZnRlckF0dGFjaChib29sIG5lZWRzKSB7IG1fbmVlZHNGb2N1c0FwcGVhcmFuY2VVcGRhdGVTb29u
QWZ0ZXJBdHRhY2ggPSBuZWVkczsgfQogCiBwcml2YXRlOgorICAgIFRyZWVTY29wZSogbV90cmVl
U2NvcGU7CiAgICAgT3duUHRyPE5vZGVMaXN0c05vZGVEYXRhPiBtX25vZGVMaXN0czsKICAgICBP
d25QdHI8RXZlbnRUYXJnZXREYXRhPiBtX2V2ZW50VGFyZ2V0RGF0YTsKICAgICBzaG9ydCBtX3Rh
YkluZGV4OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlLmNwcAppbmRleCA4OTY3NWVlMThlZjNmYzAyZGE0
YWRhYmQ0ZWJhYzczZDZmMjNlMDAwLi5hM2E1OTNjZDUxOWRjMGVlOWI5MTRhMmYyYWE2MjMzZjIz
NzdlZGRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlLmNwcApAQCAtMzAsMTYgKzMwLDI5IEBACiAj
aW5jbHVkZSAiSFRNTEFuY2hvckVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTWFwRWxlbWVudC5o
IgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgorI2luY2x1ZGUgIk5vZGVSYXJlRGF0YS5oIgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKIFRyZWVT
Y29wZTo6VHJlZVNjb3BlKERvY3VtZW50KiBkb2N1bWVudCwgQ29uc3RydWN0aW9uVHlwZSBjb25z
dHJ1Y3Rpb25UeXBlKQotICAgIDogQ29udGFpbmVyTm9kZShkb2N1bWVudCwgY29uc3RydWN0aW9u
VHlwZSkKKyAgICA6IENvbnRhaW5lck5vZGUoMCwgY29uc3RydWN0aW9uVHlwZSkKKyAgICAsIG1f
cGFyZW50VHJlZVNjb3BlKDApCiAgICAgLCBtX2FjY2Vzc0tleU1hcFZhbGlkKGZhbHNlKQogICAg
ICwgbV9udW1Ob2RlTGlzdENhY2hlcygwKQogeworICAgIG1fZG9jdW1lbnQgPSBkb2N1bWVudDsK
KyAgICBlbnN1cmVSYXJlRGF0YSgpLT5zZXRUcmVlU2NvcGUodGhpcyk7CisgICAgaWYgKGRvY3Vt
ZW50ICE9IHRoaXMpIHsKKyAgICAgICAgLy8gQXNzdW1lIGRvY3VtZW50IGFzIHBhcmVudCBzY29w
ZQorICAgICAgICBtX3BhcmVudFRyZWVTY29wZSA9IGRvY3VtZW50OworICAgIH0KK30KKworVHJl
ZVNjb3BlOjp+VHJlZVNjb3BlKCkKK3sKKyAgICByYXJlRGF0YSgpLT5zZXRUcmVlU2NvcGUoMCk7
CiB9CiAKIHZvaWQgVHJlZVNjb3BlOjpkZXN0cm95VHJlZVNjb3BlRGF0YSgpCkBAIC00OSw2ICs2
MiwxNyBAQCB2b2lkIFRyZWVTY29wZTo6ZGVzdHJveVRyZWVTY29wZURhdGEoKQogICAgIG1fZWxl
bWVudHNCeUFjY2Vzc0tleS5jbGVhcigpOwogfQogCit2b2lkIFRyZWVTY29wZTo6c2V0UGFyZW50
VHJlZVNjb3BlKFRyZWVTY29wZSogbmV3UGFyZW50U2NvcGUpCit7CisgICAgLy8gQ2Fubm90IHJl
cGFyZW50IGEgZG9jdW1lbnQhCisgICAgQVNTRVJUKCFpc0RvY3VtZW50Tm9kZSgpKTsKKyAgICAv
LyBFdmVyeSBzY29wZSBvdGhlciB0aGFuIGRvY3VtZW50IG5lZWRzIGEgcGFyZW50IHNjb3BlLgor
ICAgIEFTU0VSVChtX3BhcmVudFRyZWVTY29wZSk7CisgICAgQVNTRVJUKG5ld1BhcmVudFNjb3Bl
KTsKKworICAgIG1fcGFyZW50VHJlZVNjb3BlID0gbmV3UGFyZW50U2NvcGU7Cit9CisKIEVsZW1l
bnQqIFRyZWVTY29wZTo6Z2V0RWxlbWVudEJ5SWQoY29uc3QgQXRvbWljU3RyaW5nJiBlbGVtZW50
SWQpIGNvbnN0CiB7CiAgICAgaWYgKGVsZW1lbnRJZC5pc0VtcHR5KCkpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNj
b3BlLmgKaW5kZXggNjRhMjJlZWQ2YmNiMzY4NjYzMjhhOWY4MmUyYjRlNmQ4ZDdmZDA1NC4uNjI3
MTU0MTk3MTA2YzAwNTA2YmNiOWZiYTIwZTZmN2NkNWZjYmFiNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL1RyZWVTY29wZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2Nv
cGUuaApAQCAtMzUsNyArMzUsMTEgQEAgY2xhc3MgRWxlbWVudDsKIGNsYXNzIEhUTUxNYXBFbGVt
ZW50OwogCiBjbGFzcyBUcmVlU2NvcGUgOiBwdWJsaWMgQ29udGFpbmVyTm9kZSB7CisgICAgZnJp
ZW5kIGNsYXNzIERvY3VtZW50OworCiBwdWJsaWM6CisgICAgVHJlZVNjb3BlKiBwYXJlbnRUcmVl
U2NvcGUoKSBjb25zdCB7IHJldHVybiBtX3BhcmVudFRyZWVTY29wZTsgfQorCiAgICAgRWxlbWVu
dCogZ2V0RWxlbWVudEJ5SWQoY29uc3QgQXRvbWljU3RyaW5nJikgY29uc3Q7CiAgICAgYm9vbCBo
YXNFbGVtZW50V2l0aElkKEF0b21pY1N0cmluZ0ltcGwqIGlkKSBjb25zdDsKICAgICBib29sIGNv
bnRhaW5zTXVsdGlwbGVFbGVtZW50c1dpdGhJZChjb25zdCBBdG9taWNTdHJpbmcmIGlkKSBjb25z
dDsKQEAgLTYzLDkgKzY3LDE1IEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICBUcmVlU2NvcGUo
RG9jdW1lbnQqLCBDb25zdHJ1Y3Rpb25UeXBlID0gQ3JlYXRlQ29udGFpbmVyKTsKIAorICAgIHZp
cnR1YWwgflRyZWVTY29wZSgpOworCiAgICAgdm9pZCBkZXN0cm95VHJlZVNjb3BlRGF0YSgpOwog
CisgICAgdm9pZCBzZXRQYXJlbnRUcmVlU2NvcGUoVHJlZVNjb3BlKik7CisKIHByaXZhdGU6Cisg
ICAgVHJlZVNjb3BlKiBtX3BhcmVudFRyZWVTY29wZTsKKwogICAgIERvY3VtZW50T3JkZXJlZE1h
cCBtX2VsZW1lbnRzQnlJZDsKICAgICBEb2N1bWVudE9yZGVyZWRNYXAgbV9pbWFnZU1hcHNCeU5h
bWU7CiAKQEAgLTg1LDcgKzk1LDcgQEAgaW5saW5lIGJvb2wgVHJlZVNjb3BlOjpjb250YWluc011
bHRpcGxlRWxlbWVudHNXaXRoSWQoY29uc3QgQXRvbWljU3RyaW5nJiBpZCkgY28KIHsKICAgICBy
ZXR1cm4gbV9lbGVtZW50c0J5SWQuY29udGFpbnNNdWx0aXBsZShpZC5pbXBsKCkpOwogfQotICAg
IAorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBUcmVlU2NvcGVfaAo=
</data>
<flag name="review"
          id="81090"
          type_id="1"
          status="-"
          setter="dglazkov"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>89504</attachid>
            <date>2011-04-13 17:47:11 -0700</date>
            <delta_ts>2011-04-15 15:06:14 -0700</delta_ts>
            <desc>work-in-progress</desc>
            <filename>bug-52963-20110413174710.patch</filename>
            <type>text/plain</type>
            <size>18056</size>
            <attacher name="Roland Steiner">rolandsteiner</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODM3NDkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBlODI0M2U2ODM3NjIzYmUz
YWI1ODFhNWNkMjViZjhiYTg3ODE2ODc3Li4yODQxOWNlYjc4NTYxMjg2Yjk4OGJkZTVlODc0ZDA5
ZmU1MzdlNDU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTAgQEAKKzIwMTEtMDQtMTMgIFJvbGFu
ZCBTdGVpbmVyICA8cm9sYW5kc3RlaW5lckBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQnVnIDUyOTYzIC0gRW5hYmxlIE8oMSkg
YWNjZXNzIHRvIHJvb3QgZnJvbSBhbnkgbm9kZSBpbiBzaGFkb3cgRE9NIHN1YnRyZWUKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUyOTYzCisKKyAgICAg
ICAgLikgQ2hhbmdlIGJhc2UgY2xhc3Mgb2YgU2hhZG93Um9vdCBmcm9tIERvY3VtZW50RnJhZ21l
bnQgdG8gVHJlZVNjb3BlLgorICAgICAgICAuKSBSZS1lbmFibGUgdHJlZSBzY29wZSBoYW5kbGlu
ZyBpbiBOb2RlIChoYWQgQVNTRVJUX05PVF9SRUFDSEVELCBldGMuKS4KKyAgICAgICAgLikgTWVy
Z2VkIHNldFRyZWVTY29wZSgpIHdpdGggc2V0VHJlZVNjb3BlUmVjdXJzaXZlbHkoKQorICAgICAg
ICAuKSBDYWxsIHNldFRyZWVTY29wZVJlY3Vyc2l2ZWx5IGluIERPTSBtYW5pcHVsYXRpb24gZnVu
Y3Rpb25zIHdoZXJlIGFwcGxpY2FibGUuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiAoTm8gbmV3
IGZ1bmN0aW9uYWxpdHkpCisKKyAgICAgICAgKiBkb20vQ29udGFpbmVyTm9kZS5jcHA6IGNhbGwg
c2V0VHJlZVNjb3BlUmVjdXJzaXZlbHkoKSB0byB1cGRhdGUgY3VycmVudCBjb250YWluaW5nIHNj
b3BlCisgICAgICAgIChXZWJDb3JlOjpDb250YWluZXJOb2RlOjpyZW1vdmVBbGxDaGlsZHJlbik6
CisgICAgICAgIChXZWJDb3JlOjpDb250YWluZXJOb2RlOjp0YWtlQWxsQ2hpbGRyZW5Gcm9tKToK
KyAgICAgICAgKFdlYkNvcmU6OkNvbnRhaW5lck5vZGU6OnJlbW92ZUJldHdlZW4pOgorICAgICAg
ICAoV2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6cmVtb3ZlQ2hpbGRyZW4pOgorICAgICAgICAoV2Vi
Q29yZTo6Q29udGFpbmVyTm9kZTo6cGFyc2VyQWRkQ2hpbGQpOgorICAgICAgICAqIGRvbS9Eb2N1
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6RG9jdW1lbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnQ6On5Eb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudDo6cmVtb3ZlZExhc3RSZWYpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnNldERv
Y1R5cGUpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAqIGRvbS9FbGVtZW50
Lmg6CisgICAgICAgICogZG9tL05vZGUuY3BwOiAKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OnRy
ZWVTY29wZSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpzZXRUcmVlU2NvcGVSZWN1cnNpdmVs
eSk6IG1lcmdlIHNldFRyZWVTY29wZSgpCisgICAgICAgICogZG9tL05vZGUuaDoKKyAgICAgICAg
KFdlYkNvcmU6Ok5vZGU6OmRvY3VtZW50KToKKyAgICAgICAgKiBkb20vU2hhZG93Um9vdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dSb290OjpTaGFkb3dSb290KToKKyAgICAgICAgKFdl
YkNvcmU6OlNoYWRvd1Jvb3Q6On5TaGFkb3dSb290KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRv
d1Jvb3Q6Om5vZGVOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd1Jvb3Q6Om5vZGVUeXBl
KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd1Jvb3Q6OmNsb25lTm9kZSk6CisgICAgICAgIChX
ZWJDb3JlOjpTaGFkb3dSb290OjpjaGlsZFR5cGVBbGxvd2VkKToKKyAgICAgICAgKiBkb20vU2hh
ZG93Um9vdC5oOgorICAgICAgICAoV2ViQ29yZTo6dG9TaGFkb3dSb290KToKKyAgICAgICAgKiBk
b20vVHJlZVNjb3BlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRyZWVTY29wZTo6VHJlZVNjb3Bl
KToKKyAgICAgICAgKFdlYkNvcmU6OlRyZWVTY29wZTo6c2V0UGFyZW50VHJlZVNjb3BlKToKKyAg
ICAgICAgKiBkb20vVHJlZVNjb3BlLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNsaWRl
ci5jcHA6CisKIDIwMTEtMDQtMTIgIFBhdmVsIFBvZGl2aWxvdiAgPHBvZGl2aWxvdkBjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgUGF2ZWwgRmVsZG1hbi4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Db250YWluZXJOb2RlLmNwcAppbmRleCA5ZWZjODM4ZDE1MTExOTE3MjU3Yjk0MDBiMTZmNjNh
MzQzYTNmMzIyLi4xMzI3MjA1ZjRjNjFiMjk3ZTFiYThhNWI0ZTE3N2EzZmNjOTBjODc3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwCkBAIC03Myw2ICs3Myw4IEBAIHN0YXRpYyB2
b2lkIGNvbGxlY3RUYXJnZXROb2RlcyhOb2RlKiBub2RlLCBOb2RlVmVjdG9yJiBub2RlcykKIAog
dm9pZCBDb250YWluZXJOb2RlOjpyZW1vdmVBbGxDaGlsZHJlbigpCiB7CisgICAgLy8gTm90ZSB0
aGF0IHdlIGRvIE5PVCBzZXQgdGhlIHRyZWUgc2NvcGUgdG8gZG9jdW1lbnQgaGVyZSwgYmVjYXVz
ZSB0aGlzIGZ1bmN0aW9uIGlzIHVzdS4gY2FsbGVkCisgICAgLy8gd2hlbiB0aGUgY2hpbGRyZW4g
c2hvdWxkIGJlIGRlc3Ryb3llZCBhbnl3YXkuIENhbGwgc2V0VHJlZVNjb3BlUmVjdXJzaXZlbHkg
d2hlcmUgdGhpcyBpcyBub3QgdGhlIGNhc2UuCiAgICAgcmVtb3ZlQWxsQ2hpbGRyZW5JbkNvbnRh
aW5lcjxOb2RlLCBDb250YWluZXJOb2RlPih0aGlzKTsKIH0KIApAQCAtOTAsNiArOTIsMTAgQEAg
dm9pZCBDb250YWluZXJOb2RlOjp0YWtlQWxsQ2hpbGRyZW5Gcm9tKENvbnRhaW5lck5vZGUqIG9s
ZFBhcmVudCkKICAgICAgICAgUmVmUHRyPE5vZGU+IGNoaWxkID0gZG9jdW1lbnQoKS0+YWRvcHRO
b2RlKGNoaWxkcmVuW2ldLnJlbGVhc2UoKSwgZWMpOwogICAgICAgICBBU1NFUlQoIWVjKTsKICAg
ICAgICAgcGFyc2VyQWRkQ2hpbGQoY2hpbGQuZ2V0KCkpOworICAgICAgICAvLyBGSVhNRTogVG9n
ZXRoZXIgd2l0aCBhZG9wdE5vZGUgYWJvdmUsIHRoZSB0cmVlIHNjb3BlIG1pZ2h0IGdldCB1cGRh
dGVkIHJlY3Vyc2l2ZWx5IHR3aWNlCisgICAgICAgIC8vIChpZiB0aGUgZG9jdW1lbnQgY2hhbmdl
ZCBvciBvbGRQYXJlbnQgd2FzIGluIGEgc2hhZG93IHRyZWUsIEFORCAqdGhpcyBpcyBpbiBhIHNo
YWRvdyB0cmVlKS4KKyAgICAgICAgLy8gQ2FuIHdlIGRvIGJldHRlcj8KKyAgICAgICAgY2hpbGQt
PnNldFRyZWVTY29wZVJlY3Vyc2l2ZWx5KHRyZWVTY29wZSgpKTsKICAgICAgICAgaWYgKGF0dGFj
aGVkKCkgJiYgIWNoaWxkLT5hdHRhY2hlZCgpKQogICAgICAgICAgICAgY2hpbGQtPmF0dGFjaCgp
OwogICAgIH0KQEAgLTQ4MSw2ICs0ODcsOCBAQCB2b2lkIENvbnRhaW5lck5vZGU6OnJlbW92ZUJl
dHdlZW4oTm9kZSogcHJldmlvdXNDaGlsZCwgTm9kZSogbmV4dENoaWxkLCBOb2RlKiBvbAogICAg
IG9sZENoaWxkLT5zZXROZXh0U2libGluZygwKTsKICAgICBvbGRDaGlsZC0+c2V0UGFyZW50KDAp
OwogCisgICAgb2xkQ2hpbGQtPnNldFRyZWVTY29wZVJlY3Vyc2l2ZWx5KGRvY3VtZW50KCkpOwor
CiAgICAgYWxsb3dFdmVudERpc3BhdGNoKCk7CiB9CiAKQEAgLTUzMCw2ICs1MzgsNyBAQCB2b2lk
IENvbnRhaW5lck5vZGU6OnJlbW92ZUNoaWxkcmVuKCkKICAgICAgICAgbi0+c2V0UHJldmlvdXNT
aWJsaW5nKDApOwogICAgICAgICBuLT5zZXROZXh0U2libGluZygwKTsKICAgICAgICAgbi0+c2V0
UGFyZW50KDApOworICAgICAgICBuLT5zZXRUcmVlU2NvcGVSZWN1cnNpdmVseShkb2N1bWVudCgp
KTsKIAogICAgICAgICBtX2ZpcnN0Q2hpbGQgPSBuZXh0OwogICAgICAgICBpZiAobiA9PSBtX2xh
c3RDaGlsZCkKQEAgLTY0OCw2ICs2NTcsOCBAQCB2b2lkIENvbnRhaW5lck5vZGU6OnBhcnNlckFk
ZENoaWxkKFBhc3NSZWZQdHI8Tm9kZT4gbmV3Q2hpbGQpCiAgICAgTm9kZSogbGFzdCA9IG1fbGFz
dENoaWxkOwogICAgIC8vIEZJWE1FOiBUaGlzIG1ldGhvZCBzaG91bGQgdGFrZSBhIFBhc3NSZWZQ
dHIuCiAgICAgYXBwZW5kQ2hpbGRUb0NvbnRhaW5lcjxOb2RlLCBDb250YWluZXJOb2RlPihuZXdD
aGlsZC5nZXQoKSwgdGhpcyk7CisgICAgbmV3Q2hpbGQtPnNldFRyZWVTY29wZVJlY3Vyc2l2ZWx5
KHRyZWVTY29wZSgpKTsKKyAgICAKICAgICBhbGxvd0V2ZW50RGlzcGF0Y2goKTsKIAogICAgIC8v
IEZJWE1FOiBXaHkgZG9lc24ndCB0aGlzIHVzZSBub3RpZnlDaGlsZEluc2VydGVkKG5ld0NoaWxk
KSBpbnN0ZWFkPwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggNjZhOThiNWQwYjFiYzVlZGIx
NGI4ZDIyNDI0YzE4YmU5Zjk3OTczMy4uZmM5MzBkZTA3MDA3OGYwY2ExMzc0ZTNiNWYxNWNlYTUw
OTgzYjNmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC0zNzcsNyArMzc3LDcgQEAgcHJp
dmF0ZToKIHVpbnQ2NF90IERvY3VtZW50OjpzX2dsb2JhbFRyZWVWZXJzaW9uID0gMDsKIAogRG9j
dW1lbnQ6OkRvY3VtZW50KEZyYW1lKiBmcmFtZSwgY29uc3QgS1VSTCYgdXJsLCBib29sIGlzWEhU
TUwsIGJvb2wgaXNIVE1MKQotICAgIDogVHJlZVNjb3BlKHRoaXMpCisgICAgOiBUcmVlU2NvcGUo
MCkKICAgICAsIG1fZ3VhcmRSZWZDb3VudCgwKQogICAgICwgbV9jb21wYXRpYmlsaXR5TW9kZShO
b1F1aXJrc01vZGUpCiAgICAgLCBtX2NvbXBhdGliaWxpdHlNb2RlTG9ja2VkKGZhbHNlKQpAQCAt
NDM2LDcgKzQzNiwxMSBAQCBEb2N1bWVudDo6RG9jdW1lbnQoRnJhbWUqIGZyYW1lLCBjb25zdCBL
VVJMJiB1cmwsIGJvb2wgaXNYSFRNTCwgYm9vbCBpc0hUTUwpCiAgICAgLCBtX3dyaXRpbmdNb2Rl
U2V0T25Eb2N1bWVudEVsZW1lbnQoZmFsc2UpCiAgICAgLCBtX3dyaXRlUmVjdXJzaW9uSXNUb29E
ZWVwKGZhbHNlKQogICAgICwgbV93cml0ZVJlY3Vyc2lvbkRlcHRoKDApCisjaWZuZGVmIE5ERUJV
RworICAgICwgbV90ZWFyRG93bkhhc0JlZ3VuKGZhbHNlKQorI2VuZGlmCiB7CisKICAgICBtX2Rv
Y3VtZW50ID0gdGhpczsKIAogICAgIG1fcGFnZUdyb3VwVXNlclNoZWV0Q2FjaGVWYWxpZCA9IGZh
bHNlOwpAQCAtNTExLDEyICs1MTUsMTQgQEAgRG9jdW1lbnQ6OkRvY3VtZW50KEZyYW1lKiBmcmFt
ZSwgY29uc3QgS1VSTCYgdXJsLCBib29sIGlzWEhUTUwsIGJvb2wgaXNIVE1MKQogCiBEb2N1bWVu
dDo6fkRvY3VtZW50KCkKIHsKKyAgICBBU1NFUlQobV90ZWFyRG93bkhhc0JlZ3VuKTsKICAgICBB
U1NFUlQoIXJlbmRlcmVyKCkpOwogICAgIEFTU0VSVCghbV9pblBhZ2VDYWNoZSk7CiAgICAgQVNT
RVJUKCFtX3NhdmVkUmVuZGVyZXIpOwogICAgIEFTU0VSVChtX3Jhbmdlcy5pc0VtcHR5KCkpOwog
ICAgIEFTU0VSVCghbV9zdHlsZVJlY2FsY1RpbWVyLmlzQWN0aXZlKCkpOwogICAgIEFTU0VSVCgh
bV9wYXJlbnRUcmVlU2NvcGUpOworICAgIEFTU0VSVChtX2d1YXJkUmVmQ291bnQgPT0gMCk7CiAK
ICAgICBtX3NjcmlwdFJ1bm5lci5jbGVhcigpOwogCkBAIC01NzIsNiArNTc4LDEwIEBAIERvY3Vt
ZW50Ojp+RG9jdW1lbnQoKQogdm9pZCBEb2N1bWVudDo6cmVtb3ZlZExhc3RSZWYoKQogewogICAg
IEFTU0VSVCghbV9kZWxldGlvbkhhc0JlZ3VuKTsKKyAgICBBU1NFUlQoIW1fdGVhckRvd25IYXNC
ZWd1bik7CisjaWZuZGVmIE5ERUJVRworICAgIG1fdGVhckRvd25IYXNCZWd1biA9IHRydWU7Cisj
ZW5kaWYKICAgICBpZiAobV9ndWFyZFJlZkNvdW50KSB7CiAgICAgICAgIC8vIElmIHJlbW92aW5n
IGEgY2hpbGQgcmVtb3ZlcyB0aGUgbGFzdCBzZWxmLW9ubHkgcmVmLCB3ZSBkb24ndAogICAgICAg
ICAvLyB3YW50IHRoZSBzY29wZSB0byBiZSBkZXN0cnVjdGVkIHVudGlsIGFmdGVyCkBAIC01OTYs
NyArNjA2LDkgQEAgdm9pZCBEb2N1bWVudDo6cmVtb3ZlZExhc3RSZWYoKQogICAgICAgICBkZXN0
cm95VHJlZVNjb3BlRGF0YSgpOwogICAgICAgICByZW1vdmVBbGxDaGlsZHJlbigpOwogCisgICAg
ICAgIEFTU0VSVChtX21hcmtlcnMpOwogICAgICAgICBtX21hcmtlcnMtPmRldGFjaCgpOworICAg
ICAgICBtX21hcmtlcnMgPSAwOwogCiAgICAgICAgIGRldGFjaFBhcnNlcigpOwogCkBAIC03MDEs
NyArNzEzLDcgQEAgdm9pZCBEb2N1bWVudDo6c2V0RG9jVHlwZShQYXNzUmVmUHRyPERvY3VtZW50
VHlwZT4gZG9jVHlwZSkKICAgICBBU1NFUlQoIW1fZG9jVHlwZSB8fCAhZG9jVHlwZSk7CiAgICAg
bV9kb2NUeXBlID0gZG9jVHlwZTsKICAgICBpZiAobV9kb2NUeXBlKQotICAgICAgICBtX2RvY1R5
cGUtPnNldFRyZWVTY29wZSh0aGlzKTsKKyAgICAgICAgbV9kb2NUeXBlLT5zZXRUcmVlU2NvcGVS
ZWN1cnNpdmVseSh0aGlzKTsKIH0KIAogRE9NSW1wbGVtZW50YXRpb24qIERvY3VtZW50OjppbXBs
ZW1lbnRhdGlvbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IDFmMGYyYTBlZGE0ZTQ3MjkzYjI2
MjBmNmJmOWZlZjY1OGFjNDY3ODUuLmJmYzRiMTQ5NDIwZmI5MzYxYTljYWZmNmM0ZGRjNzE4NWE2
OGI0NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBAIC0xNDA4LDYgKzE0MDgsMTAgQEAgcHJpdmF0
ZToKICNlbmRpZgogCiAgICAgUmVmUHRyPENvbnRlbnRTZWN1cml0eVBvbGljeT4gbV9jb250ZW50
U2VjdXJpdHlQb2xpY3k7CisKKyNpZm5kZWYgTkRFQlVHCisgICAgYm9vbCBtX3RlYXJEb3duSGFz
QmVndW47CisjZW5kaWYKIH07CiAKIC8vIFB1dCB0aGVzZSBtZXRob2RzIGhlcmUsIGJlY2F1c2Ug
dGhleSByZXF1aXJlIHRoZSBEb2N1bWVudCBkZWZpbml0aW9uLCBidXQgd2UgcmVhbGx5IHdhbnQg
dG8gaW5saW5lIHRoZW0uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5o
IGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAppbmRleCA1OTA3YTFhMDc2NmY1YTM5NzA4
M2ViZjBmZGRhZDY0ODMxN2FhOWRlLi4xMWM4MGVlZDVjMjdhZTYxMTkzZjhhMGMwMDI3ZGE1NDQy
MGViZmY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKQEAgLTM5LDYgKzM5LDcgQEAgY2xhc3MgRE9NU3Ry
aW5nTWFwOwogY2xhc3MgRE9NVG9rZW5MaXN0OwogY2xhc3MgRWxlbWVudFJhcmVEYXRhOwogY2xh
c3MgSW50U2l6ZTsKK2NsYXNzIFNoYWRvd1Jvb3Q7CiBjbGFzcyBXZWJLaXRBbmltYXRpb25MaXN0
OwogCiBlbnVtIFNwZWxsY2hlY2tBdHRyaWJ1dGVTdGF0ZSB7CkBAIC0yMjksNiArMjMwLDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJB
cmVuYSosIFJlbmRlclN0eWxlKik7CiAgICAgdmlydHVhbCB2b2lkIHJlY2FsY1N0eWxlKFN0eWxl
Q2hhbmdlID0gTm9DaGFuZ2UpOwogCisgICAgLy8gRklYTUU6IE1ha2UgdGhlc2UgcmV0dXJuIGEg
cHJvcGVyIFNoYWRvd1Jvb3QqIChyZXF1aXJlcyBjaGFuZ2VzIHdydC4gV2ViRE9NT3BlcmF0aW9u
cy5oKS4KICAgICBDb250YWluZXJOb2RlKiBzaGFkb3dSb290KCkgY29uc3Q7CiAgICAgQ29udGFp
bmVyTm9kZSogZW5zdXJlU2hhZG93Um9vdCgpOwogICAgIHZvaWQgcmVtb3ZlU2hhZG93Um9vdCgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvZG9tL05vZGUuY3BwCmluZGV4IGZlNWJiNzQ4MGY2MjNlZDlkNGFiZTUxMTEyZTc0MTk5ZjE4
ZjNkZjMuLjRhNjk5MzdmYjE5MTM3M2Y5YjFiNzcxNWIyYzM0MWE3N2NlNzVjYjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
Tm9kZS5jcHAKQEAgLTc3LDYgKzc3LDcgQEAKICNpbmNsdWRlICJTY29wZWRFdmVudFF1ZXVlLmgi
CiAjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIlNlbGVjdG9yTm9kZUxp
c3QuaCIKKyNpbmNsdWRlICJTaGFkb3dSb290LmgiCiAjaW5jbHVkZSAiU3RhdGljTm9kZUxpc3Qu
aCIKICNpbmNsdWRlICJUYWdOb2RlTGlzdC5oIgogI2luY2x1ZGUgIlRleHQuaCIKQEAgLTQ3Miwz
OSArNDczLDIyIEBAIHZvaWQgTm9kZTo6c2V0RG9jdW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50KQog
CiBUcmVlU2NvcGUqIE5vZGU6OnRyZWVTY29wZSgpIGNvbnN0CiB7CisgICAgLy8gRklYTUU6IFVz
aW5nIG1fZG9jdW1lbnQgZGlyZWN0bHkgaXMgbm90IGdvb2QgLT4gc2VlIGNvbW1lbnQgd2l0aCBk
b2N1bWVudCgpIGluIHRoZSBoZWFkZXIgZmlsZS4KICAgICBpZiAoIWhhc1JhcmVEYXRhKCkpCi0g
ICAgICAgIHJldHVybiBkb2N1bWVudCgpOworICAgICAgICByZXR1cm4gbV9kb2N1bWVudDsKICAg
ICBUcmVlU2NvcGUqIHNjb3BlID0gcmFyZURhdGEoKS0+dHJlZVNjb3BlKCk7Ci0gICAgLy8gRklY
TUU6IFVudGlsIHdlIGxhbmQgc2hhZG93IHNjb3BlcywgdGhlcmUgc2hvdWxkIGJlIG5vIG5vbi1k
b2N1bWVudCBzY29wZXMuCi0gICAgQVNTRVJUKCFzY29wZSk7Ci0gICAgcmV0dXJuIHNjb3BlID8g
c2NvcGUgOiBkb2N1bWVudCgpOworICAgIHJldHVybiBzY29wZSA/IHNjb3BlIDogbV9kb2N1bWVu
dDsKIH0KIAotdm9pZCBOb2RlOjpzZXRUcmVlU2NvcGUoVHJlZVNjb3BlKiBuZXdUcmVlU2NvcGUp
Cit2b2lkIE5vZGU6OnNldFRyZWVTY29wZVJlY3Vyc2l2ZWx5KFRyZWVTY29wZSogbmV3VHJlZVNj
b3BlLCBib29sIGluY2x1ZGVSb290KQogewotICAgIEFTU0VSVCghaXNEb2N1bWVudE5vZGUoKSk7
CisgICAgQVNTRVJUKHRoaXMpOworICAgIEFTU0VSVCghaW5jbHVkZVJvb3QgfHwgIWlzRG9jdW1l
bnROb2RlKCkpOwogICAgIEFTU0VSVChuZXdUcmVlU2NvcGUpOwotICAgIEFTU0VSVCghaW5Eb2N1
bWVudCgpIHx8IHRyZWVTY29wZSgpID09IG5ld1RyZWVTY29wZSk7CisgICAgQVNTRVJUKCFtX2Rl
bGV0aW9uSGFzQmVndW4pOwogCi0gICAgaWYgKG5ld1RyZWVTY29wZS0+aXNEb2N1bWVudE5vZGUo
KSkgewotICAgICAgICBpZiAoaGFzUmFyZURhdGEoKSkKLSAgICAgICAgICAgIHJhcmVEYXRhKCkt
PnNldFRyZWVTY29wZSgwKTsKLSAgICAgICAgLy8gU2V0dGluZyB0aGUgbmV3IGRvY3VtZW50IHNj
b3BlIHdpbGwgYmUgaGFuZGxlZCBpbXBsaWNpdGx5Ci0gICAgICAgIC8vIGJ5IHNldERvY3VtZW50
KCkgYmVsb3cuCi0gICAgfSBlbHNlIHsKLSAgICAgICAgLy8gRklYTUU6IFVudGlsIHdlIGxhbmQg
c2hhZG93IHNjb3BlcywgdGhpcyBicmFuY2ggc2hvdWxkIGJlIGluZXJ0LgotICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgZW5zdXJlUmFyZURhdGEoKS0+c2V0VHJlZVNjb3Bl
KG5ld1RyZWVTY29wZSk7Ci0gICAgfQotCi0gICAgc2V0RG9jdW1lbnQobmV3VHJlZVNjb3BlLT5k
b2N1bWVudCgpKTsKLX0KLQotdm9pZCBOb2RlOjpzZXRUcmVlU2NvcGVSZWN1cnNpdmVseShUcmVl
U2NvcGUqIG5ld1RyZWVTY29wZSkKLXsKLSAgICBBU1NFUlQoIWlzRG9jdW1lbnROb2RlKCkpOwot
ICAgIEFTU0VSVChuZXdUcmVlU2NvcGUpOwotICAgIGlmICh0cmVlU2NvcGUoKSA9PSBuZXdUcmVl
U2NvcGUpCisgICAgVHJlZVNjb3BlKiBjdXJyZW50VHJlZVNjb3BlID0gdHJlZVNjb3BlKCk7Cisg
ICAgaWYgKGN1cnJlbnRUcmVlU2NvcGUgPT0gbmV3VHJlZVNjb3BlKQogICAgICAgICByZXR1cm47
CiAKICAgICBEb2N1bWVudCogY3VycmVudERvY3VtZW50ID0gZG9jdW1lbnQoKTsKQEAgLTUxNiw5
ICs1MDAsMjYgQEAgdm9pZCBOb2RlOjpzZXRUcmVlU2NvcGVSZWN1cnNpdmVseShUcmVlU2NvcGUq
IG5ld1RyZWVTY29wZSkKICAgICBpZiAoY3VycmVudERvY3VtZW50ICYmIGN1cnJlbnREb2N1bWVu
dCAhPSBuZXdEb2N1bWVudCkKICAgICAgICAgY3VycmVudERvY3VtZW50LT5pbmNET01UcmVlVmVy
c2lvbigpOwogCi0gICAgZm9yIChOb2RlKiBub2RlID0gdGhpczsgbm9kZTsgbm9kZSA9IG5vZGUt
PnRyYXZlcnNlTmV4dE5vZGUodGhpcykpIHsKLSAgICAgICAgbm9kZS0+c2V0VHJlZVNjb3BlKG5l
d1RyZWVTY29wZSk7Ci0gICAgICAgIC8vIEZJWE1FOiBPbmNlIHNoYWRvdyBzY29wZXMgYXJlIGxh
bmRlZCwgdXBkYXRlIHBhcmVudCBzY29wZSwgZXRjLgorICAgIGZvciAoTm9kZSogbm9kZSA9IGlu
Y2x1ZGVSb290ID8gdGhpcyA6IHRyYXZlcnNlTmV4dE5vZGUodGhpcyk7IG5vZGU7IG5vZGUgPSBu
b2RlLT50cmF2ZXJzZU5leHROb2RlKHRoaXMpKSB7CisgICAgICAgIGlmIChuZXdUcmVlU2NvcGUg
PT0gbmV3RG9jdW1lbnQpIHsKKyAgICAgICAgICAgIGlmIChub2RlLT5oYXNSYXJlRGF0YSgpKQor
ICAgICAgICAgICAgICAgIG5vZGUtPnJhcmVEYXRhKCktPnNldFRyZWVTY29wZSgwKTsKKyAgICAg
ICAgICAgIC8vIFNldHRpbmcgdGhlIG5ldyBkb2N1bWVudCB0cmVlIHNjb3BlIHdpbGwgYmUgaGFu
ZGxlZCBpbXBsaWNpdGx5CisgICAgICAgICAgICAvLyBieSBzZXREb2N1bWVudCgpIGJlbG93Lgor
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbm9kZS0+ZW5zdXJlUmFyZURhdGEoKS0+c2V0
VHJlZVNjb3BlKG5ld1RyZWVTY29wZSk7CisgICAgICAgIH0KKworICAgICAgICBub2RlLT5zZXRE
b2N1bWVudChuZXdEb2N1bWVudCk7CisKKyAgICAgICAgaWYgKCFub2RlLT5pc0VsZW1lbnROb2Rl
KCkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgLy8gRklYTUU6IFJlbW92ZSB0b1No
YWRvd1Jvb3QoKSBvbmNlIHNoYWRvd1Jvb3QoKSByZXR1cm5zIGEgcHJvcGVyIFNoYWRvd1Jvb3Qq
LgorICAgICAgICBpZiAoU2hhZG93Um9vdCogc2hhZG93Um9vdCA9IHRvU2hhZG93Um9vdCh0b0Vs
ZW1lbnQobm9kZSktPnNoYWRvd1Jvb3QoKSkpIHsKKyAgICAgICAgICAgIHNoYWRvd1Jvb3QtPnNl
dFBhcmVudFRyZWVTY29wZShuZXdUcmVlU2NvcGUpOworICAgICAgICAgICAgaWYgKGN1cnJlbnRE
b2N1bWVudCAhPSBuZXdEb2N1bWVudCkKKyAgICAgICAgICAgICAgICBzaGFkb3dSb290LT5zZXRE
b2N1bWVudFJlY3Vyc2l2ZWx5KG5ld0RvY3VtZW50KTsKKyAgICAgICAgfQogICAgIH0KIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Ob2RlLmgKaW5kZXggNjA4OWUyZjk1ZTZlNjI2YjUyMDBjNTdkYWFlNzY1OWU3OTVlZjEwNi4u
OGM4NWI2Yjk2NjhmMTNhNWEwZmVmZTBlOWRiZjIzZmExNjY1MDAyYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL05vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCkBA
IC0zNTAsMTggKzM1MCwxNiBAQCBwdWJsaWM6CiAgICAgRG9jdW1lbnQqIGRvY3VtZW50KCkgY29u
c3QKICAgICB7CiAgICAgICAgIEFTU0VSVCh0aGlzKTsKKyAgICAgICAgLy8gRklYTUU6IGJlbG93
IEFTU0VSVCBpcyB1c2VmdWwsIGJ1dCBwcmV2ZW50cyB0aGUgdXNlIG9mIGRvY3VtZW50KCkgaW4g
dGhlIGNvbnN0cnVjdG9yIG9yIGRlc3RydWN0b3IKKyAgICAgICAgLy8gZHVlIHRvIHRoZSB2aXJ0
dWFsIGZ1bmN0aW9uIGNhbGwgdG8gbm9kZVR5cGUoKS4KICAgICAgICAgQVNTRVJUKG1fZG9jdW1l
bnQgfHwgKG5vZGVUeXBlKCkgPT0gRE9DVU1FTlRfVFlQRV9OT0RFICYmICFpbkRvY3VtZW50KCkp
KTsKICAgICAgICAgcmV0dXJuIG1fZG9jdW1lbnQ7CiAgICAgfQogCiAgICAgVHJlZVNjb3BlKiB0
cmVlU2NvcGUoKSBjb25zdDsKIAotICAgIC8vIERvIG5vdCB1c2UgdGhpcyBtZXRob2QgdG8gY2hh
bmdlIHRoZSBzY29wZSBvZiBhIG5vZGUgdW50aWwgYWZ0ZXIgdGhlIG5vZGUgaGFzIGJlZW4KLSAg
ICAvLyByZW1vdmVkIGZyb20gaXRzIHByZXZpb3VzIHNjb3BlLiBEbyBub3QgdXNlIHRvIGNoYW5n
ZSBkb2N1bWVudHMuCi0gICAgdm9pZCBzZXRUcmVlU2NvcGUoVHJlZVNjb3BlKik7Ci0KICAgICAv
LyBVc2VkIGJ5IHRoZSBiYXNpYyBET00gbWV0aG9kcyAoZS5nLiwgYXBwZW5kQ2hpbGQoKSkuCi0g
ICAgdm9pZCBzZXRUcmVlU2NvcGVSZWN1cnNpdmVseShUcmVlU2NvcGUqKTsKKyAgICB2b2lkIHNl
dFRyZWVTY29wZVJlY3Vyc2l2ZWx5KFRyZWVTY29wZSosIGJvb2wgaW5jbHVkZVJvb3QgPSB0cnVl
KTsKIAogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGlzIG5vZGUgaXMgYXNzb2NpYXRlZCB3aXRo
IGEgZG9jdW1lbnQgYW5kIGlzIGluIGl0cyBhc3NvY2lhdGVkIGRvY3VtZW50J3MKICAgICAvLyBu
b2RlIHRyZWUsIGZhbHNlIG90aGVyd2lzZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9TaGFkb3dSb290LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcAppbmRl
eCBlYWY1ODA4NDIzMjg1MDFmYjYzNWIxYTE5NDNmZjc3YjllMjMzNDE4Li5mYTJlZjU1MDI5NmJk
M2JlMWIyNDRhNzUzZjdiMzRjNzU5YmFhYTUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vU2hhZG93Um9vdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3Bw
CkBAIC0yNywxMiArMjcsNTggQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJTaGFk
b3dSb290LmgiCiAKKyNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIk5vZGVSYXJlRGF0
YS5oIgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFNoYWRvd1Jvb3Q6OlNoYWRvd1Jvb3QoRG9j
dW1lbnQqIGRvY3VtZW50KQotICAgIDogRG9jdW1lbnRGcmFnbWVudChkb2N1bWVudCkKKyAgICA6
IFRyZWVTY29wZShkb2N1bWVudCkKIHsKICAgICBBU1NFUlQoZG9jdW1lbnQpOworICAgIAorICAg
IC8vIEFzc3VtZSBkb2N1bWVudCBhcyBwYXJlbnQgc2NvcGUuCisgICAgc2V0UGFyZW50VHJlZVNj
b3BlKGRvY3VtZW50KTsKKyAgICAvLyBTaGFkb3cgdHJlZSBzY29wZXMgaGF2ZSB0aGUgc2NvcGUg
cG9pbnRlciBwb2ludCB0byB0aGVtc2VsdmVzLgorICAgIC8vIFRoaXMgd2F5LCBkaXJlY3QgY2hp
bGRyZW4gd2lsbCByZWNlaXZlIHRoZSBjb3JyZWN0IHNjb3BlIHBvaW50ZXIuCisgICAgZW5zdXJl
UmFyZURhdGEoKS0+c2V0VHJlZVNjb3BlKHRoaXMpOworfQorCitTaGFkb3dSb290Ojp+U2hhZG93
Um9vdCgpCit7Cit9CisKK1N0cmluZyBTaGFkb3dSb290Ojpub2RlTmFtZSgpIGNvbnN0Cit7Cisg
ICAgLy8gRklYTUU6IERlY2lkZSBjb3JyZWN0IG5vZGUgbmFtZS4KKyAgICByZXR1cm4gIiNzaGFk
b3ctcm9vdCI7Cit9CisKK05vZGU6Ok5vZGVUeXBlIFNoYWRvd1Jvb3Q6Om5vZGVUeXBlKCkgY29u
c3QKK3sKKyAgICAvLyBGSVhNRTogRGVjaWRlIGNvcnJlY3Qgbm9kZSB0eXBlLgorICAgIHJldHVy
biBET0NVTUVOVF9GUkFHTUVOVF9OT0RFOworfQorCitQYXNzUmVmUHRyPE5vZGU+IFNoYWRvd1Jv
b3Q6OmNsb25lTm9kZShib29sIC8qZGVlcCovKQoreworICAgIC8vIFNoYWRvd1Jvb3Qgc2hvdWxk
IG5vdCBiZSBhcmJpdHJhcmlseSBjbG9uZWQuCisgICAgcmV0dXJuIDA7Cit9CisKK2Jvb2wgU2hh
ZG93Um9vdDo6Y2hpbGRUeXBlQWxsb3dlZChOb2RlVHlwZSB0eXBlKQoreworICAgIHN3aXRjaCAo
dHlwZSkgeworICAgICAgICBjYXNlIEVMRU1FTlRfTk9ERToKKyAgICAgICAgY2FzZSBQUk9DRVNT
SU5HX0lOU1RSVUNUSU9OX05PREU6CisgICAgICAgIGNhc2UgQ09NTUVOVF9OT0RFOgorICAgICAg
ICBjYXNlIFRFWFRfTk9ERToKKyAgICAgICAgY2FzZSBDREFUQV9TRUNUSU9OX05PREU6CisgICAg
ICAgIGNhc2UgRU5USVRZX1JFRkVSRU5DRV9OT0RFOgorICAgICAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQogfQog
CiB2b2lkIFNoYWRvd1Jvb3Q6OnJlY2FsY1N0eWxlKFN0eWxlQ2hhbmdlIGNoYW5nZSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmggYi9Tb3VyY2UvV2ViQ29yZS9k
b20vU2hhZG93Um9vdC5oCmluZGV4IDlmZmRkZmYzZjBhMjI5MWFjNDg2ZWExYmJhOTQzMzZiZDIz
YTljMjIuLmJiYzNhZWY4Mzc4ZmVkOTZlNDk4ZjljZTYyMjE0NmI3Mzc2OGE5MGQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL1NoYWRvd1Jvb3QuaApAQCAtMjcsMTMgKzI3LDEzIEBACiAjaWZuZGVmIFNoYWRvd1Jvb3Rf
aAogI2RlZmluZSBTaGFkb3dSb290X2gKIAotI2luY2x1ZGUgIkRvY3VtZW50RnJhZ21lbnQuaCIK
KyNpbmNsdWRlICJUcmVlU2NvcGUuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBE
b2N1bWVudDsKIAotY2xhc3MgU2hhZG93Um9vdCA6IHB1YmxpYyBEb2N1bWVudEZyYWdtZW50IHsK
K2NsYXNzIFNoYWRvd1Jvb3QgOiBwdWJsaWMgVHJlZVNjb3BlIHsKIHB1YmxpYzoKICAgICBzdGF0
aWMgUGFzc1JlZlB0cjxTaGFkb3dSb290PiBjcmVhdGUoRG9jdW1lbnQqKTsKIApAQCAtNDIsNiAr
NDIsMTIgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIFNoYWRvd1Jvb3QoRG9jdW1lbnQqKTsK
KyAgICB2aXJ0dWFsIH5TaGFkb3dSb290KCk7CisKKyAgICB2aXJ0dWFsIFN0cmluZyBub2RlTmFt
ZSgpIGNvbnN0OworICAgIHZpcnR1YWwgTm9kZVR5cGUgbm9kZVR5cGUoKSBjb25zdDsKKyAgICB2
aXJ0dWFsIFBhc3NSZWZQdHI8Tm9kZT4gY2xvbmVOb2RlKGJvb2wgZGVlcCk7CisgICAgdmlydHVh
bCBib29sIGNoaWxkVHlwZUFsbG93ZWQoTm9kZVR5cGUpOwogfTsKIAogaW5saW5lIFBhc3NSZWZQ
dHI8U2hhZG93Um9vdD4gU2hhZG93Um9vdDo6Y3JlYXRlKERvY3VtZW50KiBkb2N1bWVudCkKQEAg
LTQ5LDYgKzU1LDE4IEBAIGlubGluZSBQYXNzUmVmUHRyPFNoYWRvd1Jvb3Q+IFNoYWRvd1Jvb3Q6
OmNyZWF0ZShEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTaGFk
b3dSb290KGRvY3VtZW50KSk7CiB9CiAKK2lubGluZSBTaGFkb3dSb290KiB0b1NoYWRvd1Jvb3Qo
Tm9kZSogbm9kZSkKK3sKKyAgICBBU1NFUlQoIW5vZGUgfHwgbm9kZS0+aXNTaGFkb3dCb3VuZGFy
eSgpKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8U2hhZG93Um9vdCo+KG5vZGUpOworfQorCitp
bmxpbmUgY29uc3QgU2hhZG93Um9vdCogdG9TaGFkb3dSb290KGNvbnN0IE5vZGUqIG5vZGUpCit7
CisgICAgQVNTRVJUKCFub2RlIHx8IG5vZGUtPmlzU2hhZG93Qm91bmRhcnkoKSk7CisgICAgcmV0
dXJuIHN0YXRpY19jYXN0PGNvbnN0IFNoYWRvd1Jvb3QqPihub2RlKTsKK30KKwogfSAvLyBuYW1l
c3BhY2UKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3Bl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuY3BwCmluZGV4IGE5OTVhMmQ2OGJl
MWZkYzJkMWUxODk1MDQ5ZDJmZWM5Y2U1ZGI5ZDcuLmM4ZGMwN2VlN2MzMjM1MGU0OWVkYWU5ODMy
NjhjMGQ5YjllYmRmYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuY3BwCkBAIC0zNiwxOSArMzYs
MTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwog
Ci1UcmVlU2NvcGU6OlRyZWVTY29wZShEb2N1bWVudCogZG9jdW1lbnQsIENvbnN0cnVjdGlvblR5
cGUgY29uc3RydWN0aW9uVHlwZSkKLSAgICA6IENvbnRhaW5lck5vZGUoMCwgY29uc3RydWN0aW9u
VHlwZSkKK1RyZWVTY29wZTo6VHJlZVNjb3BlKERvY3VtZW50KiBkb2N1bWVudCkKKyAgICA6IENv
bnRhaW5lck5vZGUoZG9jdW1lbnQpCiAgICAgLCBtX3BhcmVudFRyZWVTY29wZSgwKQogICAgICwg
bV9hY2Nlc3NLZXlNYXBWYWxpZChmYWxzZSkKICAgICAsIG1fbnVtTm9kZUxpc3RDYWNoZXMoMCkK
IHsKLSAgICBtX2RvY3VtZW50ID0gZG9jdW1lbnQ7Ci0gICAgaWYgKGRvY3VtZW50ICE9IHRoaXMp
IHsKLSAgICAgICAgLy8gQXNzdW1lIGRvY3VtZW50IGFzIHBhcmVudCBzY29wZQotICAgICAgICBt
X3BhcmVudFRyZWVTY29wZSA9IGRvY3VtZW50OwotICAgICAgICAvLyBGSVhNRTogVGhpcyBicmFu
Y2ggc2hvdWxkIGJlIGluZXJ0IHVudGlsIHNoYWRvdyBzY29wZXMgYXJlIGxhbmRlZC4KLSAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgfQogfQogCiBUcmVlU2NvcGU6On5UcmVlU2Nv
cGUoKQpAQCAtNjksNyArNjIsNiBAQCB2b2lkIFRyZWVTY29wZTo6c2V0UGFyZW50VHJlZVNjb3Bl
KFRyZWVTY29wZSogbmV3UGFyZW50U2NvcGUpCiAgICAgLy8gQSBkb2N1bWVudCBub2RlIGNhbm5v
dCBiZSByZS1wYXJlbnRlZC4KICAgICBBU1NFUlQoIWlzRG9jdW1lbnROb2RlKCkpOwogICAgIC8v
IEV2ZXJ5IHNjb3BlIG90aGVyIHRoYW4gZG9jdW1lbnQgbmVlZHMgYSBwYXJlbnQgc2NvcGUuCi0g
ICAgQVNTRVJUKG1fcGFyZW50VHJlZVNjb3BlKTsKICAgICBBU1NFUlQobmV3UGFyZW50U2NvcGUp
OwogCiAgICAgbV9wYXJlbnRUcmVlU2NvcGUgPSBuZXdQYXJlbnRTY29wZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVl
U2NvcGUuaAppbmRleCA2MjcxNTQxOTcxMDZjMDA1MDZiY2I5ZmJhMjBlNmY3Y2Q1ZmNiYWI0Li4y
MjI1NWIzNDQzN2M3NzdhMWFhZDRhMWQ0ZTlkYTZjODNlYjZjNGYyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1RyZWVT
Y29wZS5oCkBAIC0zNiw2ICszNiw3IEBAIGNsYXNzIEhUTUxNYXBFbGVtZW50OwogCiBjbGFzcyBU
cmVlU2NvcGUgOiBwdWJsaWMgQ29udGFpbmVyTm9kZSB7CiAgICAgZnJpZW5kIGNsYXNzIERvY3Vt
ZW50OworICAgIGZyaWVuZCBjbGFzcyBOb2RlOwogCiBwdWJsaWM6CiAgICAgVHJlZVNjb3BlKiBw
YXJlbnRUcmVlU2NvcGUoKSBjb25zdCB7IHJldHVybiBtX3BhcmVudFRyZWVTY29wZTsgfQpAQCAt
NjUsNyArNjYsNyBAQCBwdWJsaWM6CiAgICAgRWxlbWVudCogZmluZEFuY2hvcihjb25zdCBTdHJp
bmcmIG5hbWUpOwogCiBwcm90ZWN0ZWQ6Ci0gICAgVHJlZVNjb3BlKERvY3VtZW50KiwgQ29uc3Ry
dWN0aW9uVHlwZSA9IENyZWF0ZUNvbnRhaW5lcik7CisgICAgVHJlZVNjb3BlKERvY3VtZW50Kik7
CiAKICAgICB2aXJ0dWFsIH5UcmVlU2NvcGUoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclNsaWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyU2xpZGVyLmNwcAppbmRleCBhZDVhYjFhZGZiZTg0OGRmOWUyZjJiNjE5NmQzYmIyOTQy
NjhkYTUxLi4wN2QzMjVlZDE3ZjA4MTI4ZGFkYWIzYzM5OGIwOWQ1ODgzZmI2MzEyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2xpZGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2xpZGVyLmNwcApAQCAtMzcsNyArMzcsNyBAQAog
I2luY2x1ZGUgIlJlbmRlckxheWVyLmgiCiAjaW5jbHVkZSAiUmVuZGVyVGhlbWUuaCIKICNpbmNs
dWRlICJSZW5kZXJWaWV3LmgiCi0jaW5jbHVkZSAiU2hhZG93RWxlbWVudC5oIgorI2luY2x1ZGUg
IlNoYWRvd1Jvb3QuaCIKICNpbmNsdWRlICJTbGlkZXJUaHVtYkVsZW1lbnQuaCIKICNpbmNsdWRl
ICJTdGVwUmFuZ2UuaCIKICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>89861</attachid>
            <date>2011-04-15 15:06:18 -0700</date>
            <delta_ts>2011-04-15 16:09:13 -0700</delta_ts>
            <desc>patch, setTreeScope version</desc>
            <filename>bug-52963-20110415150617.patch</filename>
            <type>text/plain</type>
            <size>16008</size>
            <attacher name="Roland Steiner">rolandsteiner</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODM5ODIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA0NGYxMDI0YTVhN2Q2OGQy
MjIzNzY4ODZiMDcwNWI4MDkxMWFhOGRkLi4xZGQ2ODg3ZjM1NzliNWFkYjQyYjBmNWQ4YzE1ZjRi
MTljNDVhMjVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDYgQEAKKzIwMTEtMDQtMTUgIFJvbGFu
ZCBTdGVpbmVyICA8cm9sYW5kc3RlaW5lckBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQnVnIDUyOTYzIC0gRW5hYmxlIE8oMSkg
YWNjZXNzIHRvIHJvb3QgZnJvbSBhbnkgbm9kZSBpbiBzaGFkb3cgRE9NIHN1YnRyZWUKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUyOTYzCisKKyAgICAg
ICAgLikgQ2hhbmdlIGJhc2UgY2xhc3Mgb2YgU2hhZG93Um9vdCBmcm9tIERvY3VtZW50RnJhZ21l
bnQgdG8gVHJlZVNjb3BlLgorICAgICAgICAuKSBSZS1lbmFibGUgdHJlZSBzY29wZSBoYW5kbGlu
ZyBpbiBOb2RlIChoYWQgQVNTRVJUX05PVF9SRUFDSEVELCBldGMuKS4KKyAgICAgICAgLikgTWVy
Z2VkIHNldFRyZWVTY29wZSgpIHdpdGggc2V0VHJlZVNjb3BlUmVjdXJzaXZlbHkoKQorICAgICAg
ICAuKSBDYWxsIHNldFRyZWVTY29wZVJlY3Vyc2l2ZWx5IGluIERPTSBtYW5pcHVsYXRpb24gZnVu
Y3Rpb25zIHdoZXJlIGFwcGxpY2FibGUuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiAocmVmYWN0
b3JpbmcpCisKKyAgICAgICAgKiBkb20vQ29udGFpbmVyTm9kZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDb250YWluZXJOb2RlOjp0YWtlQWxsQ2hpbGRyZW5Gcm9tKToKKyAgICAgICAgKFdlYkNv
cmU6OkNvbnRhaW5lck5vZGU6OnJlbW92ZUJldHdlZW4pOgorICAgICAgICAoV2ViQ29yZTo6Q29u
dGFpbmVyTm9kZTo6cmVtb3ZlQ2hpbGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6Q29udGFpbmVy
Tm9kZTo6cGFyc2VyQWRkQ2hpbGQpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpEb2N1bWVudDo6RG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnQ6On5Eb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2V0RG9jVHlw
ZSk6CisgICAgICAgICogZG9tL0VsZW1lbnQuaDoKKyAgICAgICAgKiBkb20vTm9kZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpOb2RlOjp0cmVlU2NvcGUpOgorICAgICAgICAoV2ViQ29yZTo6Tm9k
ZTo6c2V0VHJlZVNjb3BlUmVjdXJzaXZlbHkpOgorICAgICAgICAqIGRvbS9Ob2RlLmg6CisgICAg
ICAgIChXZWJDb3JlOjpOb2RlOjpkb2N1bWVudCk6CisgICAgICAgICogZG9tL1NoYWRvd1Jvb3Qu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Um9vdDo6U2hhZG93Um9vdCk6CisgICAgICAg
IChXZWJDb3JlOjpTaGFkb3dSb290Ojp+U2hhZG93Um9vdCk6CisgICAgICAgIChXZWJDb3JlOjpT
aGFkb3dSb290Ojpub2RlVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dSb290OjpjbG9u
ZU5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Um9vdDo6Y2hpbGRUeXBlQWxsb3dlZCk6
CisgICAgICAgICogZG9tL1NoYWRvd1Jvb3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OnRvU2hhZG93
Um9vdCk6CisgICAgICAgICogZG9tL1RyZWVTY29wZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpU
cmVlU2NvcGU6OlRyZWVTY29wZSk6CisgICAgICAgIChXZWJDb3JlOjpUcmVlU2NvcGU6OnNldFBh
cmVudFRyZWVTY29wZSk6CisgICAgICAgICogZG9tL1RyZWVTY29wZS5oOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJTbGlkZXIuY3BwOgorCiAyMDExLTA0LTE1ICBTZXJnZXkgVm9yb2J5ZXYg
IDxzZXJnZXl2b3JvYnlldkBnb29nbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFl1cnkg
U2VtaWtoYXRza3kuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9k
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKaW5kZXggOWVmYzgz
OGQxNTExMTkxNzI1N2I5NDAwYjE2ZjYzYTM0M2EzZjMyMi4uZTQ3Y2YzZmJhOTQyMzU1MDBjOTcz
ODYxNjlhM2RkYjNkMmExNDA2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRh
aW5lck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcApA
QCAtOTAsNiArOTAsMTAgQEAgdm9pZCBDb250YWluZXJOb2RlOjp0YWtlQWxsQ2hpbGRyZW5Gcm9t
KENvbnRhaW5lck5vZGUqIG9sZFBhcmVudCkKICAgICAgICAgUmVmUHRyPE5vZGU+IGNoaWxkID0g
ZG9jdW1lbnQoKS0+YWRvcHROb2RlKGNoaWxkcmVuW2ldLnJlbGVhc2UoKSwgZWMpOwogICAgICAg
ICBBU1NFUlQoIWVjKTsKICAgICAgICAgcGFyc2VyQWRkQ2hpbGQoY2hpbGQuZ2V0KCkpOworICAg
ICAgICAvLyBGSVhNRTogVG9nZXRoZXIgd2l0aCBhZG9wdE5vZGUgYWJvdmUsIHRoZSB0cmVlIHNj
b3BlIG1pZ2h0IGdldCB1cGRhdGVkIHJlY3Vyc2l2ZWx5IHR3aWNlCisgICAgICAgIC8vIChpZiB0
aGUgZG9jdW1lbnQgY2hhbmdlZCBvciBvbGRQYXJlbnQgd2FzIGluIGEgc2hhZG93IHRyZWUsIEFO
RCAqdGhpcyBpcyBpbiBhIHNoYWRvdyB0cmVlKS4KKyAgICAgICAgLy8gQ2FuIHdlIGRvIGJldHRl
cj8KKyAgICAgICAgY2hpbGQtPnNldFRyZWVTY29wZVJlY3Vyc2l2ZWx5KHRyZWVTY29wZSgpKTsK
ICAgICAgICAgaWYgKGF0dGFjaGVkKCkgJiYgIWNoaWxkLT5hdHRhY2hlZCgpKQogICAgICAgICAg
ICAgY2hpbGQtPmF0dGFjaCgpOwogICAgIH0KQEAgLTQ4MSw2ICs0ODUsOCBAQCB2b2lkIENvbnRh
aW5lck5vZGU6OnJlbW92ZUJldHdlZW4oTm9kZSogcHJldmlvdXNDaGlsZCwgTm9kZSogbmV4dENo
aWxkLCBOb2RlKiBvbAogICAgIG9sZENoaWxkLT5zZXROZXh0U2libGluZygwKTsKICAgICBvbGRD
aGlsZC0+c2V0UGFyZW50KDApOwogCisgICAgb2xkQ2hpbGQtPnNldFRyZWVTY29wZVJlY3Vyc2l2
ZWx5KGRvY3VtZW50KCkpOworCiAgICAgYWxsb3dFdmVudERpc3BhdGNoKCk7CiB9CiAKQEAgLTUz
MCw2ICs1MzYsNyBAQCB2b2lkIENvbnRhaW5lck5vZGU6OnJlbW92ZUNoaWxkcmVuKCkKICAgICAg
ICAgbi0+c2V0UHJldmlvdXNTaWJsaW5nKDApOwogICAgICAgICBuLT5zZXROZXh0U2libGluZygw
KTsKICAgICAgICAgbi0+c2V0UGFyZW50KDApOworICAgICAgICBuLT5zZXRUcmVlU2NvcGVSZWN1
cnNpdmVseShkb2N1bWVudCgpKTsKIAogICAgICAgICBtX2ZpcnN0Q2hpbGQgPSBuZXh0OwogICAg
ICAgICBpZiAobiA9PSBtX2xhc3RDaGlsZCkKQEAgLTY0OCw2ICs2NTUsOCBAQCB2b2lkIENvbnRh
aW5lck5vZGU6OnBhcnNlckFkZENoaWxkKFBhc3NSZWZQdHI8Tm9kZT4gbmV3Q2hpbGQpCiAgICAg
Tm9kZSogbGFzdCA9IG1fbGFzdENoaWxkOwogICAgIC8vIEZJWE1FOiBUaGlzIG1ldGhvZCBzaG91
bGQgdGFrZSBhIFBhc3NSZWZQdHIuCiAgICAgYXBwZW5kQ2hpbGRUb0NvbnRhaW5lcjxOb2RlLCBD
b250YWluZXJOb2RlPihuZXdDaGlsZC5nZXQoKSwgdGhpcyk7CisgICAgbmV3Q2hpbGQtPnNldFRy
ZWVTY29wZVJlY3Vyc2l2ZWx5KHRyZWVTY29wZSgpKTsKKyAgICAKICAgICBhbGxvd0V2ZW50RGlz
cGF0Y2goKTsKIAogICAgIC8vIEZJWE1FOiBXaHkgZG9lc24ndCB0aGlzIHVzZSBub3RpZnlDaGls
ZEluc2VydGVkKG5ld0NoaWxkKSBpbnN0ZWFkPwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXgg
MTBiMjc2NjE4ZGUwY2ViYWY5ODEwMTNhYTYzZTY3N2VlNGQ2MmRjMC4uYTllMDJhYTY5YTQwMzAx
YTQ5Yzk3NmE2MWIxZjc2ZDg5Y2NiNzEyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC0z
NzcsNyArMzc3LDcgQEAgcHJpdmF0ZToKIHVpbnQ2NF90IERvY3VtZW50OjpzX2dsb2JhbFRyZWVW
ZXJzaW9uID0gMDsKIAogRG9jdW1lbnQ6OkRvY3VtZW50KEZyYW1lKiBmcmFtZSwgY29uc3QgS1VS
TCYgdXJsLCBib29sIGlzWEhUTUwsIGJvb2wgaXNIVE1MKQotICAgIDogVHJlZVNjb3BlKHRoaXMp
CisgICAgOiBUcmVlU2NvcGUoMCkKICAgICAsIG1fZ3VhcmRSZWZDb3VudCgwKQogICAgICwgbV9j
b21wYXRpYmlsaXR5TW9kZShOb1F1aXJrc01vZGUpCiAgICAgLCBtX2NvbXBhdGliaWxpdHlNb2Rl
TG9ja2VkKGZhbHNlKQpAQCAtNDM3LDYgKzQzNyw3IEBAIERvY3VtZW50OjpEb2N1bWVudChGcmFt
ZSogZnJhbWUsIGNvbnN0IEtVUkwmIHVybCwgYm9vbCBpc1hIVE1MLCBib29sIGlzSFRNTCkKICAg
ICAsIG1fd3JpdGVSZWN1cnNpb25Jc1Rvb0RlZXAoZmFsc2UpCiAgICAgLCBtX3dyaXRlUmVjdXJz
aW9uRGVwdGgoMCkKIHsKKwogICAgIG1fZG9jdW1lbnQgPSB0aGlzOwogCiAgICAgbV9wYWdlR3Jv
dXBVc2VyU2hlZXRDYWNoZVZhbGlkID0gZmFsc2U7CkBAIC01MTcsNiArNTE4LDcgQEAgRG9jdW1l
bnQ6On5Eb2N1bWVudCgpCiAgICAgQVNTRVJUKG1fcmFuZ2VzLmlzRW1wdHkoKSk7CiAgICAgQVNT
RVJUKCFtX3N0eWxlUmVjYWxjVGltZXIuaXNBY3RpdmUoKSk7CiAgICAgQVNTRVJUKCFtX3BhcmVu
dFRyZWVTY29wZSk7CisgICAgQVNTRVJUKCFtX2d1YXJkUmVmQ291bnQpOwogCiAgICAgbV9zY3Jp
cHRSdW5uZXIuY2xlYXIoKTsKIApAQCAtNzAxLDcgKzcwMyw3IEBAIHZvaWQgRG9jdW1lbnQ6OnNl
dERvY1R5cGUoUGFzc1JlZlB0cjxEb2N1bWVudFR5cGU+IGRvY1R5cGUpCiAgICAgQVNTRVJUKCFt
X2RvY1R5cGUgfHwgIWRvY1R5cGUpOwogICAgIG1fZG9jVHlwZSA9IGRvY1R5cGU7CiAgICAgaWYg
KG1fZG9jVHlwZSkKLSAgICAgICAgbV9kb2NUeXBlLT5zZXRUcmVlU2NvcGUodGhpcyk7CisgICAg
ICAgIG1fZG9jVHlwZS0+c2V0VHJlZVNjb3BlUmVjdXJzaXZlbHkodGhpcyk7CiB9CiAKIERPTUlt
cGxlbWVudGF0aW9uKiBEb2N1bWVudDo6aW1wbGVtZW50YXRpb24oKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgK
aW5kZXggZDI2OWRiZTZlOTlhMTY0NTc2NTI3MzdkMzk5ZmJkODc4Y2UyZWVlMC4uNGM1NjlhZDIx
YTFkNjIwNTVhZDA0YmYxMmIzZWM3ZTViMDdjOGIyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCkBAIC0z
OSw2ICszOSw3IEBAIGNsYXNzIERPTVN0cmluZ01hcDsKIGNsYXNzIERPTVRva2VuTGlzdDsKIGNs
YXNzIEVsZW1lbnRSYXJlRGF0YTsKIGNsYXNzIEludFNpemU7CitjbGFzcyBTaGFkb3dSb290Owog
Y2xhc3MgV2ViS2l0QW5pbWF0aW9uTGlzdDsKIAogZW51bSBTcGVsbGNoZWNrQXR0cmlidXRlU3Rh
dGUgewpAQCAtMjI5LDYgKzIzMCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFJlbmRlck9iamVj
dCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopOwogICAgIHZpcnR1
YWwgdm9pZCByZWNhbGNTdHlsZShTdHlsZUNoYW5nZSA9IE5vQ2hhbmdlKTsKIAorICAgIC8vIEZJ
WE1FOiBNYWtlIHRoZXNlIHJldHVybiBhIHByb3BlciBTaGFkb3dSb290KiAocmVxdWlyZXMgY2hh
bmdlcyB3cnQuIFdlYkRPTU9wZXJhdGlvbnMuaCkuCiAgICAgQ29udGFpbmVyTm9kZSogc2hhZG93
Um9vdCgpIGNvbnN0OwogICAgIENvbnRhaW5lck5vZGUqIGVuc3VyZVNoYWRvd1Jvb3QoKTsKICAg
ICB2b2lkIHJlbW92ZVNoYWRvd1Jvb3QoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAppbmRleCAzODY4MGE1YjE4
NTVlNzgwMjcxMThkMjY0NGZjZjk4NWQ4MGU4Y2VhLi45NjMyM2Y5YzBhZmE2MzdjYjA2YTU3Yjky
NmExMGNjMDViY2U3ZjJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCkBAIC03Nyw2ICs3Nyw3IEBACiAjaW5j
bHVkZSAiU2NvcGVkRXZlbnRRdWV1ZS5oIgogI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIK
ICNpbmNsdWRlICJTZWxlY3Rvck5vZGVMaXN0LmgiCisjaW5jbHVkZSAiU2hhZG93Um9vdC5oIgog
I2luY2x1ZGUgIlN0YXRpY05vZGVMaXN0LmgiCiAjaW5jbHVkZSAiVGFnTm9kZUxpc3QuaCIKICNp
bmNsdWRlICJUZXh0LmgiCkBAIC00NzIsMzkgKzQ3MywyMiBAQCB2b2lkIE5vZGU6OnNldERvY3Vt
ZW50KERvY3VtZW50KiBkb2N1bWVudCkKIAogVHJlZVNjb3BlKiBOb2RlOjp0cmVlU2NvcGUoKSBj
b25zdAogeworICAgIC8vIEZJWE1FOiBVc2luZyBtX2RvY3VtZW50IGRpcmVjdGx5IGlzIG5vdCBn
b29kIC0+IHNlZSBjb21tZW50IHdpdGggZG9jdW1lbnQoKSBpbiB0aGUgaGVhZGVyIGZpbGUuCiAg
ICAgaWYgKCFoYXNSYXJlRGF0YSgpKQotICAgICAgICByZXR1cm4gZG9jdW1lbnQoKTsKKyAgICAg
ICAgcmV0dXJuIG1fZG9jdW1lbnQ7CiAgICAgVHJlZVNjb3BlKiBzY29wZSA9IHJhcmVEYXRhKCkt
PnRyZWVTY29wZSgpOwotICAgIC8vIEZJWE1FOiBVbnRpbCB3ZSBsYW5kIHNoYWRvdyBzY29wZXMs
IHRoZXJlIHNob3VsZCBiZSBubyBub24tZG9jdW1lbnQgc2NvcGVzLgotICAgIEFTU0VSVCghc2Nv
cGUpOwotICAgIHJldHVybiBzY29wZSA/IHNjb3BlIDogZG9jdW1lbnQoKTsKKyAgICByZXR1cm4g
c2NvcGUgPyBzY29wZSA6IG1fZG9jdW1lbnQ7CiB9CiAKLXZvaWQgTm9kZTo6c2V0VHJlZVNjb3Bl
KFRyZWVTY29wZSogbmV3VHJlZVNjb3BlKQordm9pZCBOb2RlOjpzZXRUcmVlU2NvcGVSZWN1cnNp
dmVseShUcmVlU2NvcGUqIG5ld1RyZWVTY29wZSwgYm9vbCBpbmNsdWRlUm9vdCkKIHsKLSAgICBB
U1NFUlQoIWlzRG9jdW1lbnROb2RlKCkpOworICAgIEFTU0VSVCh0aGlzKTsKKyAgICBBU1NFUlQo
IWluY2x1ZGVSb290IHx8ICFpc0RvY3VtZW50Tm9kZSgpKTsKICAgICBBU1NFUlQobmV3VHJlZVNj
b3BlKTsKLSAgICBBU1NFUlQoIWluRG9jdW1lbnQoKSB8fCB0cmVlU2NvcGUoKSA9PSBuZXdUcmVl
U2NvcGUpOworICAgIEFTU0VSVCghbV9kZWxldGlvbkhhc0JlZ3VuKTsKIAotICAgIGlmIChuZXdU
cmVlU2NvcGUtPmlzRG9jdW1lbnROb2RlKCkpIHsKLSAgICAgICAgaWYgKGhhc1JhcmVEYXRhKCkp
Ci0gICAgICAgICAgICByYXJlRGF0YSgpLT5zZXRUcmVlU2NvcGUoMCk7Ci0gICAgICAgIC8vIFNl
dHRpbmcgdGhlIG5ldyBkb2N1bWVudCBzY29wZSB3aWxsIGJlIGhhbmRsZWQgaW1wbGljaXRseQot
ICAgICAgICAvLyBieSBzZXREb2N1bWVudCgpIGJlbG93LgotICAgIH0gZWxzZSB7Ci0gICAgICAg
IC8vIEZJWE1FOiBVbnRpbCB3ZSBsYW5kIHNoYWRvdyBzY29wZXMsIHRoaXMgYnJhbmNoIHNob3Vs
ZCBiZSBpbmVydC4KLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIGVuc3Vy
ZVJhcmVEYXRhKCktPnNldFRyZWVTY29wZShuZXdUcmVlU2NvcGUpOwotICAgIH0KLQotICAgIHNl
dERvY3VtZW50KG5ld1RyZWVTY29wZS0+ZG9jdW1lbnQoKSk7Ci19Ci0KLXZvaWQgTm9kZTo6c2V0
VHJlZVNjb3BlUmVjdXJzaXZlbHkoVHJlZVNjb3BlKiBuZXdUcmVlU2NvcGUpCi17Ci0gICAgQVNT
RVJUKCFpc0RvY3VtZW50Tm9kZSgpKTsKLSAgICBBU1NFUlQobmV3VHJlZVNjb3BlKTsKLSAgICBp
ZiAodHJlZVNjb3BlKCkgPT0gbmV3VHJlZVNjb3BlKQorICAgIFRyZWVTY29wZSogY3VycmVudFRy
ZWVTY29wZSA9IHRyZWVTY29wZSgpOworICAgIGlmIChjdXJyZW50VHJlZVNjb3BlID09IG5ld1Ry
ZWVTY29wZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgRG9jdW1lbnQqIGN1cnJlbnREb2N1bWVu
dCA9IGRvY3VtZW50KCk7CkBAIC01MTYsOSArNTAwLDI1IEBAIHZvaWQgTm9kZTo6c2V0VHJlZVNj
b3BlUmVjdXJzaXZlbHkoVHJlZVNjb3BlKiBuZXdUcmVlU2NvcGUpCiAgICAgaWYgKGN1cnJlbnRE
b2N1bWVudCAmJiBjdXJyZW50RG9jdW1lbnQgIT0gbmV3RG9jdW1lbnQpCiAgICAgICAgIGN1cnJl
bnREb2N1bWVudC0+aW5jRE9NVHJlZVZlcnNpb24oKTsKIAotICAgIGZvciAoTm9kZSogbm9kZSA9
IHRoaXM7IG5vZGU7IG5vZGUgPSBub2RlLT50cmF2ZXJzZU5leHROb2RlKHRoaXMpKSB7Ci0gICAg
ICAgIG5vZGUtPnNldFRyZWVTY29wZShuZXdUcmVlU2NvcGUpOwotICAgICAgICAvLyBGSVhNRTog
T25jZSBzaGFkb3cgc2NvcGVzIGFyZSBsYW5kZWQsIHVwZGF0ZSBwYXJlbnQgc2NvcGUsIGV0Yy4K
KyAgICBmb3IgKE5vZGUqIG5vZGUgPSBpbmNsdWRlUm9vdCA/IHRoaXMgOiB0cmF2ZXJzZU5leHRO
b2RlKHRoaXMpOyBub2RlOyBub2RlID0gbm9kZS0+dHJhdmVyc2VOZXh0Tm9kZSh0aGlzKSkgewor
ICAgICAgICBpZiAobmV3VHJlZVNjb3BlID09IG5ld0RvY3VtZW50KSB7CisgICAgICAgICAgICBp
ZiAobm9kZS0+aGFzUmFyZURhdGEoKSkKKyAgICAgICAgICAgICAgICBub2RlLT5yYXJlRGF0YSgp
LT5zZXRUcmVlU2NvcGUoMCk7CisgICAgICAgICAgICAvLyBTZXR0aW5nIHRoZSBuZXcgZG9jdW1l
bnQgdHJlZSBzY29wZSB3aWxsIGJlIGhhbmRsZWQgaW1wbGljaXRseQorICAgICAgICAgICAgLy8g
Ynkgc2V0RG9jdW1lbnQoKSBiZWxvdy4KKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBub2Rl
LT5lbnN1cmVSYXJlRGF0YSgpLT5zZXRUcmVlU2NvcGUobmV3VHJlZVNjb3BlKTsKKworICAgICAg
ICBub2RlLT5zZXREb2N1bWVudChuZXdEb2N1bWVudCk7CisKKyAgICAgICAgaWYgKCFub2RlLT5p
c0VsZW1lbnROb2RlKCkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgLy8gRklYTUU6
IFJlbW92ZSB0b1NoYWRvd1Jvb3QoKSBvbmNlIHNoYWRvd1Jvb3QoKSByZXR1cm5zIGEgcHJvcGVy
IFNoYWRvd1Jvb3QqLgorICAgICAgICBpZiAoU2hhZG93Um9vdCogc2hhZG93Um9vdCA9IHRvU2hh
ZG93Um9vdCh0b0VsZW1lbnQobm9kZSktPnNoYWRvd1Jvb3QoKSkpIHsKKyAgICAgICAgICAgIHNo
YWRvd1Jvb3QtPnNldFBhcmVudFRyZWVTY29wZShuZXdUcmVlU2NvcGUpOworICAgICAgICAgICAg
aWYgKGN1cnJlbnREb2N1bWVudCAhPSBuZXdEb2N1bWVudCkKKyAgICAgICAgICAgICAgICBzaGFk
b3dSb290LT5zZXREb2N1bWVudFJlY3Vyc2l2ZWx5KG5ld0RvY3VtZW50KTsKKyAgICAgICAgfQog
ICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Ob2RlLmgKaW5kZXggYThmYjNhYWMxNGIxMmEzZTQwMWY0YTE4YjFlMmVh
ZjYwZDg1NjkwNy4uMDY4NWU2ZTNhZWQyZDY2ZTg1NGE1NTE3YmQ5YjU1YjUyMWJlNjllOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vTm9kZS5oCkBAIC0zNTAsMTggKzM1MCwxNiBAQCBwdWJsaWM6CiAgICAgRG9jdW1lbnQqIGRv
Y3VtZW50KCkgY29uc3QKICAgICB7CiAgICAgICAgIEFTU0VSVCh0aGlzKTsKKyAgICAgICAgLy8g
RklYTUU6IGJlbG93IEFTU0VSVCBpcyB1c2VmdWwsIGJ1dCBwcmV2ZW50cyB0aGUgdXNlIG9mIGRv
Y3VtZW50KCkgaW4gdGhlIGNvbnN0cnVjdG9yIG9yIGRlc3RydWN0b3IKKyAgICAgICAgLy8gZHVl
IHRvIHRoZSB2aXJ0dWFsIGZ1bmN0aW9uIGNhbGwgdG8gbm9kZVR5cGUoKS4KICAgICAgICAgQVNT
RVJUKG1fZG9jdW1lbnQgfHwgKG5vZGVUeXBlKCkgPT0gRE9DVU1FTlRfVFlQRV9OT0RFICYmICFp
bkRvY3VtZW50KCkpKTsKICAgICAgICAgcmV0dXJuIG1fZG9jdW1lbnQ7CiAgICAgfQogCiAgICAg
VHJlZVNjb3BlKiB0cmVlU2NvcGUoKSBjb25zdDsKIAotICAgIC8vIERvIG5vdCB1c2UgdGhpcyBt
ZXRob2QgdG8gY2hhbmdlIHRoZSBzY29wZSBvZiBhIG5vZGUgdW50aWwgYWZ0ZXIgdGhlIG5vZGUg
aGFzIGJlZW4KLSAgICAvLyByZW1vdmVkIGZyb20gaXRzIHByZXZpb3VzIHNjb3BlLiBEbyBub3Qg
dXNlIHRvIGNoYW5nZSBkb2N1bWVudHMuCi0gICAgdm9pZCBzZXRUcmVlU2NvcGUoVHJlZVNjb3Bl
Kik7Ci0KICAgICAvLyBVc2VkIGJ5IHRoZSBiYXNpYyBET00gbWV0aG9kcyAoZS5nLiwgYXBwZW5k
Q2hpbGQoKSkuCi0gICAgdm9pZCBzZXRUcmVlU2NvcGVSZWN1cnNpdmVseShUcmVlU2NvcGUqKTsK
KyAgICB2b2lkIHNldFRyZWVTY29wZVJlY3Vyc2l2ZWx5KFRyZWVTY29wZSosIGJvb2wgaW5jbHVk
ZVJvb3QgPSB0cnVlKTsKIAogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGlzIG5vZGUgaXMgYXNz
b2NpYXRlZCB3aXRoIGEgZG9jdW1lbnQgYW5kIGlzIGluIGl0cyBhc3NvY2lhdGVkIGRvY3VtZW50
J3MKICAgICAvLyBub2RlIHRyZWUsIGZhbHNlIG90aGVyd2lzZS4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dS
b290LmNwcAppbmRleCA4ZmU1NmI1YzY5NTIxNjFhMmVhYjc1NGRjYmQ3MDM1YmVmNjMyNTQyLi44
YmRhMzA1ZWE1YTg5NWVmZjE5MWI2MDg2NGIxZDgwOWViZGIyNjY2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1No
YWRvd1Jvb3QuY3BwCkBAIC0yNywxMiArMjcsMjUgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNp
bmNsdWRlICJTaGFkb3dSb290LmgiCiAKKyNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUg
Ik5vZGVSYXJlRGF0YS5oIgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFNoYWRvd1Jvb3Q6OlNo
YWRvd1Jvb3QoRG9jdW1lbnQqIGRvY3VtZW50KQotICAgIDogRG9jdW1lbnRGcmFnbWVudChkb2N1
bWVudCkKKyAgICA6IFRyZWVTY29wZShkb2N1bWVudCkKIHsKICAgICBBU1NFUlQoZG9jdW1lbnQp
OworICAgIAorICAgIC8vIEFzc3VtZSBkb2N1bWVudCBhcyBwYXJlbnQgc2NvcGUuCisgICAgc2V0
UGFyZW50VHJlZVNjb3BlKGRvY3VtZW50KTsKKyAgICAvLyBTaGFkb3cgdHJlZSBzY29wZXMgaGF2
ZSB0aGUgc2NvcGUgcG9pbnRlciBwb2ludCB0byB0aGVtc2VsdmVzLgorICAgIC8vIFRoaXMgd2F5
LCBkaXJlY3QgY2hpbGRyZW4gd2lsbCByZWNlaXZlIHRoZSBjb3JyZWN0IHNjb3BlIHBvaW50ZXIu
CisgICAgZW5zdXJlUmFyZURhdGEoKS0+c2V0VHJlZVNjb3BlKHRoaXMpOworfQorCitTaGFkb3dS
b290Ojp+U2hhZG93Um9vdCgpCit7CiB9CiAKIFN0cmluZyBTaGFkb3dSb290Ojpub2RlTmFtZSgp
IGNvbnN0CkBAIC00MCw2ICs1MywzMyBAQCBTdHJpbmcgU2hhZG93Um9vdDo6bm9kZU5hbWUoKSBj
b25zdAogICAgIHJldHVybiAiI3NoYWRvdy1yb290IjsKIH0KIAorTm9kZTo6Tm9kZVR5cGUgU2hh
ZG93Um9vdDo6bm9kZVR5cGUoKSBjb25zdAoreworICAgIC8vIEZJWE1FOiBEZWNpZGUgY29ycmVj
dCBub2RlIHR5cGUuCisgICAgcmV0dXJuIERPQ1VNRU5UX0ZSQUdNRU5UX05PREU7Cit9CisKK1Bh
c3NSZWZQdHI8Tm9kZT4gU2hhZG93Um9vdDo6Y2xvbmVOb2RlKGJvb2wgLypkZWVwKi8pCit7Cisg
ICAgLy8gU2hhZG93Um9vdCBzaG91bGQgbm90IGJlIGFyYml0cmFyaWx5IGNsb25lZC4KKyAgICBy
ZXR1cm4gMDsKK30KKworYm9vbCBTaGFkb3dSb290OjpjaGlsZFR5cGVBbGxvd2VkKE5vZGVUeXBl
IHR5cGUpIGNvbnN0Cit7CisgICAgc3dpdGNoICh0eXBlKSB7CisgICAgY2FzZSBFTEVNRU5UX05P
REU6CisgICAgY2FzZSBQUk9DRVNTSU5HX0lOU1RSVUNUSU9OX05PREU6CisgICAgY2FzZSBDT01N
RU5UX05PREU6CisgICAgY2FzZSBURVhUX05PREU6CisgICAgY2FzZSBDREFUQV9TRUNUSU9OX05P
REU6CisgICAgY2FzZSBFTlRJVFlfUkVGRVJFTkNFX05PREU6CisgICAgICAgIHJldHVybiB0cnVl
OworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisKIHZvaWQg
U2hhZG93Um9vdDo6cmVjYWxjU3R5bGUoU3R5bGVDaGFuZ2UgY2hhbmdlKQogewogICAgIGZvciAo
Tm9kZSogbiA9IGZpcnN0Q2hpbGQoKTsgbjsgbiA9IG4tPm5leHRTaWJsaW5nKCkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5oIGIvU291cmNlL1dlYkNvcmUvZG9t
L1NoYWRvd1Jvb3QuaAppbmRleCBhZWNjZDhhNDYxM2RiNmRlNjRlNGE2MTViMWEzNjQ4ZDExOTJh
ZThiLi5iZTcyMzhjN2I5OGU0M2YzMjM2NjY3NDBhMmJjYjNkMTM2MWZmOWQzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9TaGFkb3dSb290LmgKQEAgLTI3LDEzICsyNywxMyBAQAogI2lmbmRlZiBTaGFkb3dSb290X2gK
ICNkZWZpbmUgU2hhZG93Um9vdF9oCiAKLSNpbmNsdWRlICJEb2N1bWVudEZyYWdtZW50LmgiCisj
aW5jbHVkZSAiVHJlZVNjb3BlLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRG9j
dW1lbnQ7CiAKLWNsYXNzIFNoYWRvd1Jvb3QgOiBwdWJsaWMgRG9jdW1lbnRGcmFnbWVudCB7Citj
bGFzcyBTaGFkb3dSb290IDogcHVibGljIFRyZWVTY29wZSB7CiBwdWJsaWM6CiAgICAgc3RhdGlj
IFBhc3NSZWZQdHI8U2hhZG93Um9vdD4gY3JlYXRlKERvY3VtZW50Kik7CiAKQEAgLTQyLDcgKzQy
LDEyIEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBTaGFkb3dSb290KERvY3VtZW50Kik7Cisg
ICAgdmlydHVhbCB+U2hhZG93Um9vdCgpOworCiAgICAgdmlydHVhbCBTdHJpbmcgbm9kZU5hbWUo
KSBjb25zdDsKKyAgICB2aXJ0dWFsIE5vZGVUeXBlIG5vZGVUeXBlKCkgY29uc3Q7CisgICAgdmly
dHVhbCBQYXNzUmVmUHRyPE5vZGU+IGNsb25lTm9kZShib29sIGRlZXApOworICAgIHZpcnR1YWwg
Ym9vbCBjaGlsZFR5cGVBbGxvd2VkKE5vZGVUeXBlKSBjb25zdDsKIH07CiAKIGlubGluZSBQYXNz
UmVmUHRyPFNoYWRvd1Jvb3Q+IFNoYWRvd1Jvb3Q6OmNyZWF0ZShEb2N1bWVudCogZG9jdW1lbnQp
CkBAIC01MCw2ICs1NSwxOCBAQCBpbmxpbmUgUGFzc1JlZlB0cjxTaGFkb3dSb290PiBTaGFkb3dS
b290OjpjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIHJldHVybiBhZG9wdFJlZihuZXcg
U2hhZG93Um9vdChkb2N1bWVudCkpOwogfQogCitpbmxpbmUgU2hhZG93Um9vdCogdG9TaGFkb3dS
b290KE5vZGUqIG5vZGUpCit7CisgICAgQVNTRVJUKCFub2RlIHx8IG5vZGUtPmlzU2hhZG93Qm91
bmRhcnkoKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFNoYWRvd1Jvb3QqPihub2RlKTsKK30K
KworaW5saW5lIGNvbnN0IFNoYWRvd1Jvb3QqIHRvU2hhZG93Um9vdChjb25zdCBOb2RlKiBub2Rl
KQoreworICAgIEFTU0VSVCghbm9kZSB8fCBub2RlLT5pc1NoYWRvd0JvdW5kYXJ5KCkpOworICAg
IHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBTaGFkb3dSb290Kj4obm9kZSk7Cit9CisKIH0gLy8g
bmFtZXNwYWNlCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1RyZWVT
Y29wZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlLmNwcAppbmRleCBhOTk1YTJk
NjhiZTFmZGMyZDFlMTg5NTA0OWQyZmVjOWNlNWRiOWQ3Li5jOGRjMDdlZTdjMzIzNTBlNDllZGFl
OTgzMjY4YzBkOWI5ZWJkZmFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNj
b3BlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlLmNwcApAQCAtMzYsMTkg
KzM2LDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1l
czsKIAotVHJlZVNjb3BlOjpUcmVlU2NvcGUoRG9jdW1lbnQqIGRvY3VtZW50LCBDb25zdHJ1Y3Rp
b25UeXBlIGNvbnN0cnVjdGlvblR5cGUpCi0gICAgOiBDb250YWluZXJOb2RlKDAsIGNvbnN0cnVj
dGlvblR5cGUpCitUcmVlU2NvcGU6OlRyZWVTY29wZShEb2N1bWVudCogZG9jdW1lbnQpCisgICAg
OiBDb250YWluZXJOb2RlKGRvY3VtZW50KQogICAgICwgbV9wYXJlbnRUcmVlU2NvcGUoMCkKICAg
ICAsIG1fYWNjZXNzS2V5TWFwVmFsaWQoZmFsc2UpCiAgICAgLCBtX251bU5vZGVMaXN0Q2FjaGVz
KDApCiB7Ci0gICAgbV9kb2N1bWVudCA9IGRvY3VtZW50OwotICAgIGlmIChkb2N1bWVudCAhPSB0
aGlzKSB7Ci0gICAgICAgIC8vIEFzc3VtZSBkb2N1bWVudCBhcyBwYXJlbnQgc2NvcGUKLSAgICAg
ICAgbV9wYXJlbnRUcmVlU2NvcGUgPSBkb2N1bWVudDsKLSAgICAgICAgLy8gRklYTUU6IFRoaXMg
YnJhbmNoIHNob3VsZCBiZSBpbmVydCB1bnRpbCBzaGFkb3cgc2NvcGVzIGFyZSBsYW5kZWQuCi0g
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIH0KIH0KIAogVHJlZVNjb3BlOjp+VHJl
ZVNjb3BlKCkKQEAgLTY5LDcgKzYyLDYgQEAgdm9pZCBUcmVlU2NvcGU6OnNldFBhcmVudFRyZWVT
Y29wZShUcmVlU2NvcGUqIG5ld1BhcmVudFNjb3BlKQogICAgIC8vIEEgZG9jdW1lbnQgbm9kZSBj
YW5ub3QgYmUgcmUtcGFyZW50ZWQuCiAgICAgQVNTRVJUKCFpc0RvY3VtZW50Tm9kZSgpKTsKICAg
ICAvLyBFdmVyeSBzY29wZSBvdGhlciB0aGFuIGRvY3VtZW50IG5lZWRzIGEgcGFyZW50IHNjb3Bl
LgotICAgIEFTU0VSVChtX3BhcmVudFRyZWVTY29wZSk7CiAgICAgQVNTRVJUKG5ld1BhcmVudFNj
b3BlKTsKIAogICAgIG1fcGFyZW50VHJlZVNjb3BlID0gbmV3UGFyZW50U2NvcGU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20v
VHJlZVNjb3BlLmgKaW5kZXggNjI3MTU0MTk3MTA2YzAwNTA2YmNiOWZiYTIwZTZmN2NkNWZjYmFi
NC4uMjIyNTViMzQ0MzdjNzc3YTFhYWQ0YTFkNGU5ZGE2YzgzZWI2YzRmMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9U
cmVlU2NvcGUuaApAQCAtMzYsNiArMzYsNyBAQCBjbGFzcyBIVE1MTWFwRWxlbWVudDsKIAogY2xh
c3MgVHJlZVNjb3BlIDogcHVibGljIENvbnRhaW5lck5vZGUgewogICAgIGZyaWVuZCBjbGFzcyBE
b2N1bWVudDsKKyAgICBmcmllbmQgY2xhc3MgTm9kZTsKIAogcHVibGljOgogICAgIFRyZWVTY29w
ZSogcGFyZW50VHJlZVNjb3BlKCkgY29uc3QgeyByZXR1cm4gbV9wYXJlbnRUcmVlU2NvcGU7IH0K
QEAgLTY1LDcgKzY2LDcgQEAgcHVibGljOgogICAgIEVsZW1lbnQqIGZpbmRBbmNob3IoY29uc3Qg
U3RyaW5nJiBuYW1lKTsKIAogcHJvdGVjdGVkOgotICAgIFRyZWVTY29wZShEb2N1bWVudCosIENv
bnN0cnVjdGlvblR5cGUgPSBDcmVhdGVDb250YWluZXIpOworICAgIFRyZWVTY29wZShEb2N1bWVu
dCopOwogCiAgICAgdmlydHVhbCB+VHJlZVNjb3BlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTbGlkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclNsaWRlci5jcHAKaW5kZXggYWQ1YWIxYWRmYmU4NDhkZjllMmYyYjYxOTZkM2Ji
Mjk0MjY4ZGE1MS4uMDdkMzI1ZWQxN2YwODEyOGRhZGFiM2MzOThiMDlkNTg4M2ZiNjMxMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNsaWRlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNsaWRlci5jcHAKQEAgLTM3LDcgKzM3LDcg
QEAKICNpbmNsdWRlICJSZW5kZXJMYXllci5oIgogI2luY2x1ZGUgIlJlbmRlclRoZW1lLmgiCiAj
aW5jbHVkZSAiUmVuZGVyVmlldy5oIgotI2luY2x1ZGUgIlNoYWRvd0VsZW1lbnQuaCIKKyNpbmNs
dWRlICJTaGFkb3dSb290LmgiCiAjaW5jbHVkZSAiU2xpZGVyVGh1bWJFbGVtZW50LmgiCiAjaW5j
bHVkZSAiU3RlcFJhbmdlLmgiCiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>89870</attachid>
            <date>2011-04-15 16:09:17 -0700</date>
            <delta_ts>2011-04-19 19:07:08 -0700</delta_ts>
            <desc>updated patch</desc>
            <filename>bug-52963-20110415160916.patch</filename>
            <type>text/plain</type>
            <size>16038</size>
            <attacher name="Roland Steiner">rolandsteiner</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODM5ODIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA0NGYxMDI0YTVhN2Q2OGQy
MjIzNzY4ODZiMDcwNWI4MDkxMWFhOGRkLi4xZGQ2ODg3ZjM1NzliNWFkYjQyYjBmNWQ4YzE1ZjRi
MTljNDVhMjVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDYgQEAKKzIwMTEtMDQtMTUgIFJvbGFu
ZCBTdGVpbmVyICA8cm9sYW5kc3RlaW5lckBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQnVnIDUyOTYzIC0gRW5hYmxlIE8oMSkg
YWNjZXNzIHRvIHJvb3QgZnJvbSBhbnkgbm9kZSBpbiBzaGFkb3cgRE9NIHN1YnRyZWUKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUyOTYzCisKKyAgICAg
ICAgLikgQ2hhbmdlIGJhc2UgY2xhc3Mgb2YgU2hhZG93Um9vdCBmcm9tIERvY3VtZW50RnJhZ21l
bnQgdG8gVHJlZVNjb3BlLgorICAgICAgICAuKSBSZS1lbmFibGUgdHJlZSBzY29wZSBoYW5kbGlu
ZyBpbiBOb2RlIChoYWQgQVNTRVJUX05PVF9SRUFDSEVELCBldGMuKS4KKyAgICAgICAgLikgTWVy
Z2VkIHNldFRyZWVTY29wZSgpIHdpdGggc2V0VHJlZVNjb3BlUmVjdXJzaXZlbHkoKQorICAgICAg
ICAuKSBDYWxsIHNldFRyZWVTY29wZVJlY3Vyc2l2ZWx5IGluIERPTSBtYW5pcHVsYXRpb24gZnVu
Y3Rpb25zIHdoZXJlIGFwcGxpY2FibGUuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiAocmVmYWN0
b3JpbmcpCisKKyAgICAgICAgKiBkb20vQ29udGFpbmVyTm9kZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDb250YWluZXJOb2RlOjp0YWtlQWxsQ2hpbGRyZW5Gcm9tKToKKyAgICAgICAgKFdlYkNv
cmU6OkNvbnRhaW5lck5vZGU6OnJlbW92ZUJldHdlZW4pOgorICAgICAgICAoV2ViQ29yZTo6Q29u
dGFpbmVyTm9kZTo6cmVtb3ZlQ2hpbGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6Q29udGFpbmVy
Tm9kZTo6cGFyc2VyQWRkQ2hpbGQpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpEb2N1bWVudDo6RG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnQ6On5Eb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2V0RG9jVHlw
ZSk6CisgICAgICAgICogZG9tL0VsZW1lbnQuaDoKKyAgICAgICAgKiBkb20vTm9kZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpOb2RlOjp0cmVlU2NvcGUpOgorICAgICAgICAoV2ViQ29yZTo6Tm9k
ZTo6c2V0VHJlZVNjb3BlUmVjdXJzaXZlbHkpOgorICAgICAgICAqIGRvbS9Ob2RlLmg6CisgICAg
ICAgIChXZWJDb3JlOjpOb2RlOjpkb2N1bWVudCk6CisgICAgICAgICogZG9tL1NoYWRvd1Jvb3Qu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Um9vdDo6U2hhZG93Um9vdCk6CisgICAgICAg
IChXZWJDb3JlOjpTaGFkb3dSb290Ojp+U2hhZG93Um9vdCk6CisgICAgICAgIChXZWJDb3JlOjpT
aGFkb3dSb290Ojpub2RlVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dSb290OjpjbG9u
ZU5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Um9vdDo6Y2hpbGRUeXBlQWxsb3dlZCk6
CisgICAgICAgICogZG9tL1NoYWRvd1Jvb3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OnRvU2hhZG93
Um9vdCk6CisgICAgICAgICogZG9tL1RyZWVTY29wZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpU
cmVlU2NvcGU6OlRyZWVTY29wZSk6CisgICAgICAgIChXZWJDb3JlOjpUcmVlU2NvcGU6OnNldFBh
cmVudFRyZWVTY29wZSk6CisgICAgICAgICogZG9tL1RyZWVTY29wZS5oOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJTbGlkZXIuY3BwOgorCiAyMDExLTA0LTE1ICBTZXJnZXkgVm9yb2J5ZXYg
IDxzZXJnZXl2b3JvYnlldkBnb29nbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFl1cnkg
U2VtaWtoYXRza3kuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9k
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKaW5kZXggOWVmYzgz
OGQxNTExMTkxNzI1N2I5NDAwYjE2ZjYzYTM0M2EzZjMyMi4uZTQ3Y2YzZmJhOTQyMzU1MDBjOTcz
ODYxNjlhM2RkYjNkMmExNDA2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRh
aW5lck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcApA
QCAtOTAsNiArOTAsMTAgQEAgdm9pZCBDb250YWluZXJOb2RlOjp0YWtlQWxsQ2hpbGRyZW5Gcm9t
KENvbnRhaW5lck5vZGUqIG9sZFBhcmVudCkKICAgICAgICAgUmVmUHRyPE5vZGU+IGNoaWxkID0g
ZG9jdW1lbnQoKS0+YWRvcHROb2RlKGNoaWxkcmVuW2ldLnJlbGVhc2UoKSwgZWMpOwogICAgICAg
ICBBU1NFUlQoIWVjKTsKICAgICAgICAgcGFyc2VyQWRkQ2hpbGQoY2hpbGQuZ2V0KCkpOworICAg
ICAgICAvLyBGSVhNRTogVG9nZXRoZXIgd2l0aCBhZG9wdE5vZGUgYWJvdmUsIHRoZSB0cmVlIHNj
b3BlIG1pZ2h0IGdldCB1cGRhdGVkIHJlY3Vyc2l2ZWx5IHR3aWNlCisgICAgICAgIC8vIChpZiB0
aGUgZG9jdW1lbnQgY2hhbmdlZCBvciBvbGRQYXJlbnQgd2FzIGluIGEgc2hhZG93IHRyZWUsIEFO
RCAqdGhpcyBpcyBpbiBhIHNoYWRvdyB0cmVlKS4KKyAgICAgICAgLy8gQ2FuIHdlIGRvIGJldHRl
cj8KKyAgICAgICAgY2hpbGQtPnNldFRyZWVTY29wZVJlY3Vyc2l2ZWx5KHRyZWVTY29wZSgpKTsK
ICAgICAgICAgaWYgKGF0dGFjaGVkKCkgJiYgIWNoaWxkLT5hdHRhY2hlZCgpKQogICAgICAgICAg
ICAgY2hpbGQtPmF0dGFjaCgpOwogICAgIH0KQEAgLTQ4MSw2ICs0ODUsOCBAQCB2b2lkIENvbnRh
aW5lck5vZGU6OnJlbW92ZUJldHdlZW4oTm9kZSogcHJldmlvdXNDaGlsZCwgTm9kZSogbmV4dENo
aWxkLCBOb2RlKiBvbAogICAgIG9sZENoaWxkLT5zZXROZXh0U2libGluZygwKTsKICAgICBvbGRD
aGlsZC0+c2V0UGFyZW50KDApOwogCisgICAgb2xkQ2hpbGQtPnNldFRyZWVTY29wZVJlY3Vyc2l2
ZWx5KGRvY3VtZW50KCkpOworCiAgICAgYWxsb3dFdmVudERpc3BhdGNoKCk7CiB9CiAKQEAgLTUz
MCw2ICs1MzYsNyBAQCB2b2lkIENvbnRhaW5lck5vZGU6OnJlbW92ZUNoaWxkcmVuKCkKICAgICAg
ICAgbi0+c2V0UHJldmlvdXNTaWJsaW5nKDApOwogICAgICAgICBuLT5zZXROZXh0U2libGluZygw
KTsKICAgICAgICAgbi0+c2V0UGFyZW50KDApOworICAgICAgICBuLT5zZXRUcmVlU2NvcGVSZWN1
cnNpdmVseShkb2N1bWVudCgpKTsKIAogICAgICAgICBtX2ZpcnN0Q2hpbGQgPSBuZXh0OwogICAg
ICAgICBpZiAobiA9PSBtX2xhc3RDaGlsZCkKQEAgLTY0OCw2ICs2NTUsOCBAQCB2b2lkIENvbnRh
aW5lck5vZGU6OnBhcnNlckFkZENoaWxkKFBhc3NSZWZQdHI8Tm9kZT4gbmV3Q2hpbGQpCiAgICAg
Tm9kZSogbGFzdCA9IG1fbGFzdENoaWxkOwogICAgIC8vIEZJWE1FOiBUaGlzIG1ldGhvZCBzaG91
bGQgdGFrZSBhIFBhc3NSZWZQdHIuCiAgICAgYXBwZW5kQ2hpbGRUb0NvbnRhaW5lcjxOb2RlLCBD
b250YWluZXJOb2RlPihuZXdDaGlsZC5nZXQoKSwgdGhpcyk7CisgICAgbmV3Q2hpbGQtPnNldFRy
ZWVTY29wZVJlY3Vyc2l2ZWx5KHRyZWVTY29wZSgpKTsKKyAgICAKICAgICBhbGxvd0V2ZW50RGlz
cGF0Y2goKTsKIAogICAgIC8vIEZJWE1FOiBXaHkgZG9lc24ndCB0aGlzIHVzZSBub3RpZnlDaGls
ZEluc2VydGVkKG5ld0NoaWxkKSBpbnN0ZWFkPwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXgg
MTBiMjc2NjE4ZGUwY2ViYWY5ODEwMTNhYTYzZTY3N2VlNGQ2MmRjMC4uYTllMDJhYTY5YTQwMzAx
YTQ5Yzk3NmE2MWIxZjc2ZDg5Y2NiNzEyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC0z
NzcsNyArMzc3LDcgQEAgcHJpdmF0ZToKIHVpbnQ2NF90IERvY3VtZW50OjpzX2dsb2JhbFRyZWVW
ZXJzaW9uID0gMDsKIAogRG9jdW1lbnQ6OkRvY3VtZW50KEZyYW1lKiBmcmFtZSwgY29uc3QgS1VS
TCYgdXJsLCBib29sIGlzWEhUTUwsIGJvb2wgaXNIVE1MKQotICAgIDogVHJlZVNjb3BlKHRoaXMp
CisgICAgOiBUcmVlU2NvcGUoMCkKICAgICAsIG1fZ3VhcmRSZWZDb3VudCgwKQogICAgICwgbV9j
b21wYXRpYmlsaXR5TW9kZShOb1F1aXJrc01vZGUpCiAgICAgLCBtX2NvbXBhdGliaWxpdHlNb2Rl
TG9ja2VkKGZhbHNlKQpAQCAtNDM3LDYgKzQzNyw3IEBAIERvY3VtZW50OjpEb2N1bWVudChGcmFt
ZSogZnJhbWUsIGNvbnN0IEtVUkwmIHVybCwgYm9vbCBpc1hIVE1MLCBib29sIGlzSFRNTCkKICAg
ICAsIG1fd3JpdGVSZWN1cnNpb25Jc1Rvb0RlZXAoZmFsc2UpCiAgICAgLCBtX3dyaXRlUmVjdXJz
aW9uRGVwdGgoMCkKIHsKKwogICAgIG1fZG9jdW1lbnQgPSB0aGlzOwogCiAgICAgbV9wYWdlR3Jv
dXBVc2VyU2hlZXRDYWNoZVZhbGlkID0gZmFsc2U7CkBAIC01MTcsNiArNTE4LDcgQEAgRG9jdW1l
bnQ6On5Eb2N1bWVudCgpCiAgICAgQVNTRVJUKG1fcmFuZ2VzLmlzRW1wdHkoKSk7CiAgICAgQVNT
RVJUKCFtX3N0eWxlUmVjYWxjVGltZXIuaXNBY3RpdmUoKSk7CiAgICAgQVNTRVJUKCFtX3BhcmVu
dFRyZWVTY29wZSk7CisgICAgQVNTRVJUKCFtX2d1YXJkUmVmQ291bnQpOwogCiAgICAgbV9zY3Jp
cHRSdW5uZXIuY2xlYXIoKTsKIApAQCAtNzAxLDcgKzcwMyw3IEBAIHZvaWQgRG9jdW1lbnQ6OnNl
dERvY1R5cGUoUGFzc1JlZlB0cjxEb2N1bWVudFR5cGU+IGRvY1R5cGUpCiAgICAgQVNTRVJUKCFt
X2RvY1R5cGUgfHwgIWRvY1R5cGUpOwogICAgIG1fZG9jVHlwZSA9IGRvY1R5cGU7CiAgICAgaWYg
KG1fZG9jVHlwZSkKLSAgICAgICAgbV9kb2NUeXBlLT5zZXRUcmVlU2NvcGUodGhpcyk7CisgICAg
ICAgIG1fZG9jVHlwZS0+c2V0VHJlZVNjb3BlUmVjdXJzaXZlbHkodGhpcyk7CiB9CiAKIERPTUlt
cGxlbWVudGF0aW9uKiBEb2N1bWVudDo6aW1wbGVtZW50YXRpb24oKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgK
aW5kZXggZDI2OWRiZTZlOTlhMTY0NTc2NTI3MzdkMzk5ZmJkODc4Y2UyZWVlMC4uMGFmNmQ5N2Vl
NDRkOTQyMTczNTdkZWEwZWFmNWRiY2RhNTQxNDNkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCkBAIC0z
OSw2ICszOSw3IEBAIGNsYXNzIERPTVN0cmluZ01hcDsKIGNsYXNzIERPTVRva2VuTGlzdDsKIGNs
YXNzIEVsZW1lbnRSYXJlRGF0YTsKIGNsYXNzIEludFNpemU7CitjbGFzcyBTaGFkb3dSb290Owog
Y2xhc3MgV2ViS2l0QW5pbWF0aW9uTGlzdDsKIAogZW51bSBTcGVsbGNoZWNrQXR0cmlidXRlU3Rh
dGUgewpAQCAtMjI5LDYgKzIzMCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFJlbmRlck9iamVj
dCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopOwogICAgIHZpcnR1
YWwgdm9pZCByZWNhbGNTdHlsZShTdHlsZUNoYW5nZSA9IE5vQ2hhbmdlKTsKIAorICAgIC8vIEZJ
WE1FOiBNYWtlIHRoZXNlIHJldHVybiBhIHByb3BlciBTaGFkb3dSb290KiAoYnVnIDU4NzAzKS4K
ICAgICBDb250YWluZXJOb2RlKiBzaGFkb3dSb290KCkgY29uc3Q7CiAgICAgQ29udGFpbmVyTm9k
ZSogZW5zdXJlU2hhZG93Um9vdCgpOwogICAgIHZvaWQgcmVtb3ZlU2hhZG93Um9vdCgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9t
L05vZGUuY3BwCmluZGV4IDM4NjgwYTViMTg1NWU3ODAyNzExOGQyNjQ0ZmNmOTg1ZDgwZThjZWEu
LjVjMTllZjk1NGVlMmYzMGNjNTNkNTRkNzUwYjNkNWIzN2NjNmJiNjggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5j
cHAKQEAgLTc3LDYgKzc3LDcgQEAKICNpbmNsdWRlICJTY29wZWRFdmVudFF1ZXVlLmgiCiAjaW5j
bHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIlNlbGVjdG9yTm9kZUxpc3QuaCIK
KyNpbmNsdWRlICJTaGFkb3dSb290LmgiCiAjaW5jbHVkZSAiU3RhdGljTm9kZUxpc3QuaCIKICNp
bmNsdWRlICJUYWdOb2RlTGlzdC5oIgogI2luY2x1ZGUgIlRleHQuaCIKQEAgLTQ3MiwzOSArNDcz
LDIyIEBAIHZvaWQgTm9kZTo6c2V0RG9jdW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50KQogCiBUcmVl
U2NvcGUqIE5vZGU6OnRyZWVTY29wZSgpIGNvbnN0CiB7CisgICAgLy8gRklYTUU6IFVzaW5nIG1f
ZG9jdW1lbnQgZGlyZWN0bHkgaXMgbm90IGdvb2QgLT4gc2VlIGNvbW1lbnQgd2l0aCBkb2N1bWVu
dCgpIGluIHRoZSBoZWFkZXIgZmlsZS4KICAgICBpZiAoIWhhc1JhcmVEYXRhKCkpCi0gICAgICAg
IHJldHVybiBkb2N1bWVudCgpOworICAgICAgICByZXR1cm4gbV9kb2N1bWVudDsKICAgICBUcmVl
U2NvcGUqIHNjb3BlID0gcmFyZURhdGEoKS0+dHJlZVNjb3BlKCk7Ci0gICAgLy8gRklYTUU6IFVu
dGlsIHdlIGxhbmQgc2hhZG93IHNjb3BlcywgdGhlcmUgc2hvdWxkIGJlIG5vIG5vbi1kb2N1bWVu
dCBzY29wZXMuCi0gICAgQVNTRVJUKCFzY29wZSk7Ci0gICAgcmV0dXJuIHNjb3BlID8gc2NvcGUg
OiBkb2N1bWVudCgpOworICAgIHJldHVybiBzY29wZSA/IHNjb3BlIDogbV9kb2N1bWVudDsKIH0K
IAotdm9pZCBOb2RlOjpzZXRUcmVlU2NvcGUoVHJlZVNjb3BlKiBuZXdUcmVlU2NvcGUpCit2b2lk
IE5vZGU6OnNldFRyZWVTY29wZVJlY3Vyc2l2ZWx5KFRyZWVTY29wZSogbmV3VHJlZVNjb3BlLCBi
b29sIGluY2x1ZGVSb290KQogewotICAgIEFTU0VSVCghaXNEb2N1bWVudE5vZGUoKSk7CisgICAg
QVNTRVJUKHRoaXMpOworICAgIEFTU0VSVCghaW5jbHVkZVJvb3QgfHwgIWlzRG9jdW1lbnROb2Rl
KCkpOwogICAgIEFTU0VSVChuZXdUcmVlU2NvcGUpOwotICAgIEFTU0VSVCghaW5Eb2N1bWVudCgp
IHx8IHRyZWVTY29wZSgpID09IG5ld1RyZWVTY29wZSk7CisgICAgQVNTRVJUKCFtX2RlbGV0aW9u
SGFzQmVndW4pOwogCi0gICAgaWYgKG5ld1RyZWVTY29wZS0+aXNEb2N1bWVudE5vZGUoKSkgewot
ICAgICAgICBpZiAoaGFzUmFyZURhdGEoKSkKLSAgICAgICAgICAgIHJhcmVEYXRhKCktPnNldFRy
ZWVTY29wZSgwKTsKLSAgICAgICAgLy8gU2V0dGluZyB0aGUgbmV3IGRvY3VtZW50IHNjb3BlIHdp
bGwgYmUgaGFuZGxlZCBpbXBsaWNpdGx5Ci0gICAgICAgIC8vIGJ5IHNldERvY3VtZW50KCkgYmVs
b3cuCi0gICAgfSBlbHNlIHsKLSAgICAgICAgLy8gRklYTUU6IFVudGlsIHdlIGxhbmQgc2hhZG93
IHNjb3BlcywgdGhpcyBicmFuY2ggc2hvdWxkIGJlIGluZXJ0LgotICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKLSAgICAgICAgZW5zdXJlUmFyZURhdGEoKS0+c2V0VHJlZVNjb3BlKG5ld1Ry
ZWVTY29wZSk7Ci0gICAgfQotCi0gICAgc2V0RG9jdW1lbnQobmV3VHJlZVNjb3BlLT5kb2N1bWVu
dCgpKTsKLX0KLQotdm9pZCBOb2RlOjpzZXRUcmVlU2NvcGVSZWN1cnNpdmVseShUcmVlU2NvcGUq
IG5ld1RyZWVTY29wZSkKLXsKLSAgICBBU1NFUlQoIWlzRG9jdW1lbnROb2RlKCkpOwotICAgIEFT
U0VSVChuZXdUcmVlU2NvcGUpOwotICAgIGlmICh0cmVlU2NvcGUoKSA9PSBuZXdUcmVlU2NvcGUp
CisgICAgVHJlZVNjb3BlKiBjdXJyZW50VHJlZVNjb3BlID0gdHJlZVNjb3BlKCk7CisgICAgaWYg
KGN1cnJlbnRUcmVlU2NvcGUgPT0gbmV3VHJlZVNjb3BlKQogICAgICAgICByZXR1cm47CiAKICAg
ICBEb2N1bWVudCogY3VycmVudERvY3VtZW50ID0gZG9jdW1lbnQoKTsKQEAgLTUxNiw5ICs1MDAs
MjUgQEAgdm9pZCBOb2RlOjpzZXRUcmVlU2NvcGVSZWN1cnNpdmVseShUcmVlU2NvcGUqIG5ld1Ry
ZWVTY29wZSkKICAgICBpZiAoY3VycmVudERvY3VtZW50ICYmIGN1cnJlbnREb2N1bWVudCAhPSBu
ZXdEb2N1bWVudCkKICAgICAgICAgY3VycmVudERvY3VtZW50LT5pbmNET01UcmVlVmVyc2lvbigp
OwogCi0gICAgZm9yIChOb2RlKiBub2RlID0gdGhpczsgbm9kZTsgbm9kZSA9IG5vZGUtPnRyYXZl
cnNlTmV4dE5vZGUodGhpcykpIHsKLSAgICAgICAgbm9kZS0+c2V0VHJlZVNjb3BlKG5ld1RyZWVT
Y29wZSk7Ci0gICAgICAgIC8vIEZJWE1FOiBPbmNlIHNoYWRvdyBzY29wZXMgYXJlIGxhbmRlZCwg
dXBkYXRlIHBhcmVudCBzY29wZSwgZXRjLgorICAgIGZvciAoTm9kZSogbm9kZSA9IGluY2x1ZGVS
b290ID8gdGhpcyA6IHRyYXZlcnNlTmV4dE5vZGUodGhpcyk7IG5vZGU7IG5vZGUgPSBub2RlLT50
cmF2ZXJzZU5leHROb2RlKHRoaXMpKSB7CisgICAgICAgIGlmIChuZXdUcmVlU2NvcGUgPT0gbmV3
RG9jdW1lbnQpIHsKKyAgICAgICAgICAgIGlmIChub2RlLT5oYXNSYXJlRGF0YSgpKQorICAgICAg
ICAgICAgICAgIG5vZGUtPnJhcmVEYXRhKCktPnNldFRyZWVTY29wZSgwKTsKKyAgICAgICAgICAg
IC8vIFNldHRpbmcgdGhlIG5ldyBkb2N1bWVudCB0cmVlIHNjb3BlIHdpbGwgYmUgaGFuZGxlZCBp
bXBsaWNpdGx5CisgICAgICAgICAgICAvLyBieSBzZXREb2N1bWVudCgpIGJlbG93LgorICAgICAg
ICB9IGVsc2UKKyAgICAgICAgICAgIG5vZGUtPmVuc3VyZVJhcmVEYXRhKCktPnNldFRyZWVTY29w
ZShuZXdUcmVlU2NvcGUpOworCisgICAgICAgIG5vZGUtPnNldERvY3VtZW50KG5ld0RvY3VtZW50
KTsKKworICAgICAgICBpZiAoIW5vZGUtPmlzRWxlbWVudE5vZGUoKSkKKyAgICAgICAgICAgIGNv
bnRpbnVlOworICAgICAgICAvLyBGSVhNRTogUmVtb3ZlIHRvU2hhZG93Um9vdCgpIG9uY2Ugc2hh
ZG93Um9vdCgpIHJldHVybnMgYSBwcm9wZXIgU2hhZG93Um9vdCogKGJ1ZyA1ODcwMykuCisgICAg
ICAgIGlmIChTaGFkb3dSb290KiBzaGFkb3dSb290ID0gdG9TaGFkb3dSb290KHRvRWxlbWVudChu
b2RlKS0+c2hhZG93Um9vdCgpKSkgeworICAgICAgICAgICAgc2hhZG93Um9vdC0+c2V0UGFyZW50
VHJlZVNjb3BlKG5ld1RyZWVTY29wZSk7CisgICAgICAgICAgICBpZiAoY3VycmVudERvY3VtZW50
ICE9IG5ld0RvY3VtZW50KQorICAgICAgICAgICAgICAgIHNoYWRvd1Jvb3QtPnNldERvY3VtZW50
UmVjdXJzaXZlbHkobmV3RG9jdW1lbnQpOworICAgICAgICB9CiAgICAgfQogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUu
aAppbmRleCBhOGZiM2FhYzE0YjEyYTNlNDAxZjRhMThiMWUyZWFmNjBkODU2OTA3Li4wNjg1ZTZl
M2FlZDJkNjZlODU0YTU1MTdiZDliNTViNTIxYmU2OWU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKQEAgLTM1MCwx
OCArMzUwLDE2IEBAIHB1YmxpYzoKICAgICBEb2N1bWVudCogZG9jdW1lbnQoKSBjb25zdAogICAg
IHsKICAgICAgICAgQVNTRVJUKHRoaXMpOworICAgICAgICAvLyBGSVhNRTogYmVsb3cgQVNTRVJU
IGlzIHVzZWZ1bCwgYnV0IHByZXZlbnRzIHRoZSB1c2Ugb2YgZG9jdW1lbnQoKSBpbiB0aGUgY29u
c3RydWN0b3Igb3IgZGVzdHJ1Y3RvcgorICAgICAgICAvLyBkdWUgdG8gdGhlIHZpcnR1YWwgZnVu
Y3Rpb24gY2FsbCB0byBub2RlVHlwZSgpLgogICAgICAgICBBU1NFUlQobV9kb2N1bWVudCB8fCAo
bm9kZVR5cGUoKSA9PSBET0NVTUVOVF9UWVBFX05PREUgJiYgIWluRG9jdW1lbnQoKSkpOwogICAg
ICAgICByZXR1cm4gbV9kb2N1bWVudDsKICAgICB9CiAKICAgICBUcmVlU2NvcGUqIHRyZWVTY29w
ZSgpIGNvbnN0OwogCi0gICAgLy8gRG8gbm90IHVzZSB0aGlzIG1ldGhvZCB0byBjaGFuZ2UgdGhl
IHNjb3BlIG9mIGEgbm9kZSB1bnRpbCBhZnRlciB0aGUgbm9kZSBoYXMgYmVlbgotICAgIC8vIHJl
bW92ZWQgZnJvbSBpdHMgcHJldmlvdXMgc2NvcGUuIERvIG5vdCB1c2UgdG8gY2hhbmdlIGRvY3Vt
ZW50cy4KLSAgICB2b2lkIHNldFRyZWVTY29wZShUcmVlU2NvcGUqKTsKLQogICAgIC8vIFVzZWQg
YnkgdGhlIGJhc2ljIERPTSBtZXRob2RzIChlLmcuLCBhcHBlbmRDaGlsZCgpKS4KLSAgICB2b2lk
IHNldFRyZWVTY29wZVJlY3Vyc2l2ZWx5KFRyZWVTY29wZSopOworICAgIHZvaWQgc2V0VHJlZVNj
b3BlUmVjdXJzaXZlbHkoVHJlZVNjb3BlKiwgYm9vbCBpbmNsdWRlUm9vdCA9IHRydWUpOwogCiAg
ICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoaXMgbm9kZSBpcyBhc3NvY2lhdGVkIHdpdGggYSBkb2N1
bWVudCBhbmQgaXMgaW4gaXRzIGFzc29jaWF0ZWQgZG9jdW1lbnQncwogICAgIC8vIG5vZGUgdHJl
ZSwgZmFsc2Ugb3RoZXJ3aXNlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRv
d1Jvb3QuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3BwCmluZGV4IDhmZTU2
YjVjNjk1MjE2MWEyZWFiNzU0ZGNiZDcwMzViZWY2MzI1NDIuLmU1NDc2N2U4MGQ2ZTdlYzE5MzYx
NzQ4MTE2NjYzZTkwMGM4YjEyZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFk
b3dSb290LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAKQEAgLTI3
LDEyICsyNywyNSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlNoYWRvd1Jvb3Qu
aCIKIAorI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiTm9kZVJhcmVEYXRhLmgiCisK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogU2hhZG93Um9vdDo6U2hhZG93Um9vdChEb2N1bWVudCog
ZG9jdW1lbnQpCi0gICAgOiBEb2N1bWVudEZyYWdtZW50KGRvY3VtZW50KQorICAgIDogVHJlZVNj
b3BlKGRvY3VtZW50KQogewogICAgIEFTU0VSVChkb2N1bWVudCk7CisgICAgCisgICAgLy8gQXNz
dW1lIGRvY3VtZW50IGFzIHBhcmVudCBzY29wZS4KKyAgICBzZXRQYXJlbnRUcmVlU2NvcGUoZG9j
dW1lbnQpOworICAgIC8vIFNoYWRvdyB0cmVlIHNjb3BlcyBoYXZlIHRoZSBzY29wZSBwb2ludGVy
IHBvaW50IHRvIHRoZW1zZWx2ZXMuCisgICAgLy8gVGhpcyB3YXksIGRpcmVjdCBjaGlsZHJlbiB3
aWxsIHJlY2VpdmUgdGhlIGNvcnJlY3Qgc2NvcGUgcG9pbnRlci4KKyAgICBlbnN1cmVSYXJlRGF0
YSgpLT5zZXRUcmVlU2NvcGUodGhpcyk7Cit9CisKK1NoYWRvd1Jvb3Q6On5TaGFkb3dSb290KCkK
K3sKIH0KIAogU3RyaW5nIFNoYWRvd1Jvb3Q6Om5vZGVOYW1lKCkgY29uc3QKQEAgLTQwLDYgKzUz
LDMzIEBAIFN0cmluZyBTaGFkb3dSb290Ojpub2RlTmFtZSgpIGNvbnN0CiAgICAgcmV0dXJuICIj
c2hhZG93LXJvb3QiOwogfQogCitOb2RlOjpOb2RlVHlwZSBTaGFkb3dSb290Ojpub2RlVHlwZSgp
IGNvbnN0Cit7CisgICAgLy8gRklYTUU6IERlY2lkZSBjb3JyZWN0IG5vZGUgdHlwZSAoYnVnIDU4
NzA0KS4KKyAgICByZXR1cm4gRE9DVU1FTlRfRlJBR01FTlRfTk9ERTsKK30KKworUGFzc1JlZlB0
cjxOb2RlPiBTaGFkb3dSb290OjpjbG9uZU5vZGUoYm9vbCkKK3sKKyAgICAvLyBTaGFkb3dSb290
IHNob3VsZCBub3QgYmUgYXJiaXRyYXJpbHkgY2xvbmVkLgorICAgIHJldHVybiAwOworfQorCiti
b29sIFNoYWRvd1Jvb3Q6OmNoaWxkVHlwZUFsbG93ZWQoTm9kZVR5cGUgdHlwZSkgY29uc3QKK3sK
KyAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICBjYXNlIEVMRU1FTlRfTk9ERToKKyAgICBjYXNlIFBS
T0NFU1NJTkdfSU5TVFJVQ1RJT05fTk9ERToKKyAgICBjYXNlIENPTU1FTlRfTk9ERToKKyAgICBj
YXNlIFRFWFRfTk9ERToKKyAgICBjYXNlIENEQVRBX1NFQ1RJT05fTk9ERToKKyAgICBjYXNlIEVO
VElUWV9SRUZFUkVOQ0VfTk9ERToKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgZGVmYXVsdDoK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KKwogdm9pZCBTaGFkb3dSb290OjpyZWNh
bGNTdHlsZShTdHlsZUNoYW5nZSBjaGFuZ2UpCiB7CiAgICAgZm9yIChOb2RlKiBuID0gZmlyc3RD
aGlsZCgpOyBuOyBuID0gbi0+bmV4dFNpYmxpbmcoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9TaGFkb3dSb290LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5oCmlu
ZGV4IGFlY2NkOGE0NjEzZGI2ZGU2NGU0YTYxNWIxYTM2NDhkMTE5MmFlOGIuLmRiNTFiMmIzYTc1
YjliMDY1MjhlYzNlZmNjNzgwY2UwNTRiNWYxYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9TaGFkb3dSb290LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuaApA
QCAtMjcsMTMgKzI3LDEzIEBACiAjaWZuZGVmIFNoYWRvd1Jvb3RfaAogI2RlZmluZSBTaGFkb3dS
b290X2gKIAotI2luY2x1ZGUgIkRvY3VtZW50RnJhZ21lbnQuaCIKKyNpbmNsdWRlICJUcmVlU2Nv
cGUuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBEb2N1bWVudDsKIAotY2xhc3Mg
U2hhZG93Um9vdCA6IHB1YmxpYyBEb2N1bWVudEZyYWdtZW50IHsKK2NsYXNzIFNoYWRvd1Jvb3Qg
OiBwdWJsaWMgVHJlZVNjb3BlIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTaGFk
b3dSb290PiBjcmVhdGUoRG9jdW1lbnQqKTsKIApAQCAtNDIsNyArNDIsMTIgQEAgcHVibGljOgog
CiBwcml2YXRlOgogICAgIFNoYWRvd1Jvb3QoRG9jdW1lbnQqKTsKKyAgICB2aXJ0dWFsIH5TaGFk
b3dSb290KCk7CisKICAgICB2aXJ0dWFsIFN0cmluZyBub2RlTmFtZSgpIGNvbnN0OworICAgIHZp
cnR1YWwgTm9kZVR5cGUgbm9kZVR5cGUoKSBjb25zdDsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8
Tm9kZT4gY2xvbmVOb2RlKGJvb2wgZGVlcCk7CisgICAgdmlydHVhbCBib29sIGNoaWxkVHlwZUFs
bG93ZWQoTm9kZVR5cGUpIGNvbnN0OwogfTsKIAogaW5saW5lIFBhc3NSZWZQdHI8U2hhZG93Um9v
dD4gU2hhZG93Um9vdDo6Y3JlYXRlKERvY3VtZW50KiBkb2N1bWVudCkKQEAgLTUwLDYgKzU1LDEy
IEBAIGlubGluZSBQYXNzUmVmUHRyPFNoYWRvd1Jvb3Q+IFNoYWRvd1Jvb3Q6OmNyZWF0ZShEb2N1
bWVudCogZG9jdW1lbnQpCiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTaGFkb3dSb290KGRvY3Vt
ZW50KSk7CiB9CiAKK2lubGluZSBTaGFkb3dSb290KiB0b1NoYWRvd1Jvb3QoTm9kZSogbm9kZSkK
K3sKKyAgICBBU1NFUlQoIW5vZGUgfHwgbm9kZS0+aXNTaGFkb3dCb3VuZGFyeSgpKTsKKyAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8U2hhZG93Um9vdCo+KG5vZGUpOworfQorCiB9IC8vIG5hbWVzcGFj
ZQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZS5jcHAKaW5kZXggYTk5NWEyZDY4YmUxZmRj
MmQxZTE4OTUwNDlkMmZlYzljZTVkYjlkNy4uYzhkYzA3ZWU3YzMyMzUwZTQ5ZWRhZTk4MzI2OGMw
ZDliOWViZGZhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZS5jcHAKQEAgLTM2LDE5ICszNiwxMiBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKLVRy
ZWVTY29wZTo6VHJlZVNjb3BlKERvY3VtZW50KiBkb2N1bWVudCwgQ29uc3RydWN0aW9uVHlwZSBj
b25zdHJ1Y3Rpb25UeXBlKQotICAgIDogQ29udGFpbmVyTm9kZSgwLCBjb25zdHJ1Y3Rpb25UeXBl
KQorVHJlZVNjb3BlOjpUcmVlU2NvcGUoRG9jdW1lbnQqIGRvY3VtZW50KQorICAgIDogQ29udGFp
bmVyTm9kZShkb2N1bWVudCkKICAgICAsIG1fcGFyZW50VHJlZVNjb3BlKDApCiAgICAgLCBtX2Fj
Y2Vzc0tleU1hcFZhbGlkKGZhbHNlKQogICAgICwgbV9udW1Ob2RlTGlzdENhY2hlcygwKQogewot
ICAgIG1fZG9jdW1lbnQgPSBkb2N1bWVudDsKLSAgICBpZiAoZG9jdW1lbnQgIT0gdGhpcykgewot
ICAgICAgICAvLyBBc3N1bWUgZG9jdW1lbnQgYXMgcGFyZW50IHNjb3BlCi0gICAgICAgIG1fcGFy
ZW50VHJlZVNjb3BlID0gZG9jdW1lbnQ7Ci0gICAgICAgIC8vIEZJWE1FOiBUaGlzIGJyYW5jaCBz
aG91bGQgYmUgaW5lcnQgdW50aWwgc2hhZG93IHNjb3BlcyBhcmUgbGFuZGVkLgotICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICB9CiB9CiAKIFRyZWVTY29wZTo6flRyZWVTY29wZSgp
CkBAIC02OSw3ICs2Miw2IEBAIHZvaWQgVHJlZVNjb3BlOjpzZXRQYXJlbnRUcmVlU2NvcGUoVHJl
ZVNjb3BlKiBuZXdQYXJlbnRTY29wZSkKICAgICAvLyBBIGRvY3VtZW50IG5vZGUgY2Fubm90IGJl
IHJlLXBhcmVudGVkLgogICAgIEFTU0VSVCghaXNEb2N1bWVudE5vZGUoKSk7CiAgICAgLy8gRXZl
cnkgc2NvcGUgb3RoZXIgdGhhbiBkb2N1bWVudCBuZWVkcyBhIHBhcmVudCBzY29wZS4KLSAgICBB
U1NFUlQobV9wYXJlbnRUcmVlU2NvcGUpOwogICAgIEFTU0VSVChuZXdQYXJlbnRTY29wZSk7CiAK
ICAgICBtX3BhcmVudFRyZWVTY29wZSA9IG5ld1BhcmVudFNjb3BlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29w
ZS5oCmluZGV4IDYyNzE1NDE5NzEwNmMwMDUwNmJjYjlmYmEyMGU2ZjdjZDVmY2JhYjQuLjFmOTBh
MDkxNzVmOGNhNjI5MmJkZGNiMmMzNTAzNDYzZDVhZjM5ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9UcmVlU2NvcGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3Bl
LmgKQEAgLTM5LDYgKzM5LDcgQEAgY2xhc3MgVHJlZVNjb3BlIDogcHVibGljIENvbnRhaW5lck5v
ZGUgewogCiBwdWJsaWM6CiAgICAgVHJlZVNjb3BlKiBwYXJlbnRUcmVlU2NvcGUoKSBjb25zdCB7
IHJldHVybiBtX3BhcmVudFRyZWVTY29wZTsgfQorICAgIHZvaWQgc2V0UGFyZW50VHJlZVNjb3Bl
KFRyZWVTY29wZSopOwogCiAgICAgRWxlbWVudCogZ2V0RWxlbWVudEJ5SWQoY29uc3QgQXRvbWlj
U3RyaW5nJikgY29uc3Q7CiAgICAgYm9vbCBoYXNFbGVtZW50V2l0aElkKEF0b21pY1N0cmluZ0lt
cGwqIGlkKSBjb25zdDsKQEAgLTY1LDE0ICs2NiwxMSBAQCBwdWJsaWM6CiAgICAgRWxlbWVudCog
ZmluZEFuY2hvcihjb25zdCBTdHJpbmcmIG5hbWUpOwogCiBwcm90ZWN0ZWQ6Ci0gICAgVHJlZVNj
b3BlKERvY3VtZW50KiwgQ29uc3RydWN0aW9uVHlwZSA9IENyZWF0ZUNvbnRhaW5lcik7Ci0KKyAg
ICBUcmVlU2NvcGUoRG9jdW1lbnQqKTsKICAgICB2aXJ0dWFsIH5UcmVlU2NvcGUoKTsKIAogICAg
IHZvaWQgZGVzdHJveVRyZWVTY29wZURhdGEoKTsKIAotICAgIHZvaWQgc2V0UGFyZW50VHJlZVNj
b3BlKFRyZWVTY29wZSopOwotCiBwcml2YXRlOgogICAgIFRyZWVTY29wZSogbV9wYXJlbnRUcmVl
U2NvcGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTbGlk
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNsaWRlci5jcHAKaW5kZXgg
YWQ1YWIxYWRmYmU4NDhkZjllMmYyYjYxOTZkM2JiMjk0MjY4ZGE1MS4uMDdkMzI1ZWQxN2YwODEy
OGRhZGFiM2MzOThiMDlkNTg4M2ZiNjMxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclNsaWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclNsaWRlci5jcHAKQEAgLTM3LDcgKzM3LDcgQEAKICNpbmNsdWRlICJSZW5kZXJMYXllci5o
IgogI2luY2x1ZGUgIlJlbmRlclRoZW1lLmgiCiAjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgotI2lu
Y2x1ZGUgIlNoYWRvd0VsZW1lbnQuaCIKKyNpbmNsdWRlICJTaGFkb3dSb290LmgiCiAjaW5jbHVk
ZSAiU2xpZGVyVGh1bWJFbGVtZW50LmgiCiAjaW5jbHVkZSAiU3RlcFJhbmdlLmgiCiAjaW5jbHVk
ZSA8d3RmL01hdGhFeHRyYXMuaD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>90292</attachid>
            <date>2011-04-19 19:07:13 -0700</date>
            <delta_ts>2011-04-19 19:19:17 -0700</delta_ts>
            <desc>patch, correct JS wrappers</desc>
            <filename>bug-52963-20110419190711.patch</filename>
            <type>text/plain</type>
            <size>18482</size>
            <attacher name="Roland Steiner">rolandsteiner</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODQzMjIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAyMTczZjdkNGFlZDAzMmFl
ZWY1ZTVmOTRmN2ZmM2Q5NDQyZDVhNTA5Li44OGVmYjJjMDFiMjE1NWYwYTkwZTVhMGVjYWQzMzVj
OGEwMDY4MGE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTEgQEAKKzIwMTEtMDQtMTkgIFJvbGFu
ZCBTdGVpbmVyICA8cm9sYW5kc3RlaW5lckBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQnVnIDUyOTYzIC0gRW5hYmxlIE8oMSkg
YWNjZXNzIHRvIHJvb3QgZnJvbSBhbnkgbm9kZSBpbiBzaGFkb3cgRE9NIHN1YnRyZWUKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUyOTYzCisKKyAgICAg
ICAgLikgQ2hhbmdlIGJhc2UgY2xhc3Mgb2YgU2hhZG93Um9vdCBmcm9tIERvY3VtZW50RnJhZ21l
bnQgdG8gVHJlZVNjb3BlLgorICAgICAgICAuKSBSZS1lbmFibGUgdHJlZSBzY29wZSBoYW5kbGlu
ZyBpbiBOb2RlIChoYWQgQVNTRVJUX05PVF9SRUFDSEVELCBldGMuKS4KKyAgICAgICAgLikgTWVy
Z2VkIHNldFRyZWVTY29wZSgpIHdpdGggc2V0VHJlZVNjb3BlUmVjdXJzaXZlbHkoKQorICAgICAg
ICAuKSBDYWxsIHNldFRyZWVTY29wZVJlY3Vyc2l2ZWx5IGluIERPTSBtYW5pcHVsYXRpb24gZnVu
Y3Rpb25zIHdoZXJlIGFwcGxpY2FibGUuCisgICAgICAgIC4pIEFkYXB0IEphdmFTY3JpcHQgTm9k
ZSB3cmFwcGVycyAodGVtcG9yYXJ5IGNvZGUgLSBzZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTU4NzA0KS4KKworICAgICAgICBObyBuZXcgdGVzdHMuIChyZWZhY3Rv
cmluZykKKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTm9kZUN1c3RvbS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpjcmVhdGVXcmFwcGVySW5saW5lKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9j
dXN0b20vVjhOb2RlQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRvVjhTbG93KToKKyAg
ICAgICAgKiBkb20vQ29udGFpbmVyTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250YWlu
ZXJOb2RlOjp0YWtlQWxsQ2hpbGRyZW5Gcm9tKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRhaW5l
ck5vZGU6OnJlbW92ZUJldHdlZW4pOgorICAgICAgICAoV2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6
cmVtb3ZlQ2hpbGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6cGFyc2Vy
QWRkQ2hpbGQpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudDo6RG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6On5Eb2N1
bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2V0RG9jVHlwZSk6CisgICAgICAg
ICogZG9tL0VsZW1lbnQuaDoKKyAgICAgICAgKiBkb20vTm9kZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpOb2RlOjp0cmVlU2NvcGUpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6c2V0VHJlZVNj
b3BlUmVjdXJzaXZlbHkpOgorICAgICAgICAqIGRvbS9Ob2RlLmg6CisgICAgICAgIChXZWJDb3Jl
OjpOb2RlOjpkb2N1bWVudCk6CisgICAgICAgICogZG9tL1NoYWRvd1Jvb3QuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U2hhZG93Um9vdDo6U2hhZG93Um9vdCk6CisgICAgICAgIChXZWJDb3JlOjpT
aGFkb3dSb290Ojp+U2hhZG93Um9vdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dSb290Ojpu
b2RlVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dSb290OjpjbG9uZU5vZGUpOgorICAg
ICAgICAoV2ViQ29yZTo6U2hhZG93Um9vdDo6Y2hpbGRUeXBlQWxsb3dlZCk6CisgICAgICAgICog
ZG9tL1NoYWRvd1Jvb3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OnRvU2hhZG93Um9vdCk6CisgICAg
ICAgICogZG9tL1RyZWVTY29wZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUcmVlU2NvcGU6OlRy
ZWVTY29wZSk6CisgICAgICAgIChXZWJDb3JlOjpUcmVlU2NvcGU6OnNldFBhcmVudFRyZWVTY29w
ZSk6CisgICAgICAgICogZG9tL1RyZWVTY29wZS5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJTbGlkZXIuY3BwOgorCiAyMDExLTA0LTE5ICBQcmF0aWsgU29sYW5raSAgPHBzb2xhbmtpQGFw
cGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBGcmFzZXIuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVDdXN0b20uY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNOb2RlQ3VzdG9tLmNwcAppbmRleCBkMzA1YmU3NmU4NzY4MjYx
YTE1ZWM4ZjBhYmVmZWZmMDE3MzBmYzAwLi4xZjAxOGNkY2FiNDJlMTljMWJkNGI3MzJiMjdiZmNk
ZmVkNTU3YTZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVD
dXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUN1c3RvbS5j
cHAKQEAgLTYzLDYgKzYzLDcgQEAKICNpbmNsdWRlICJOb3RhdGlvbi5oIgogI2luY2x1ZGUgIlBy
b2Nlc3NpbmdJbnN0cnVjdGlvbi5oIgogI2luY2x1ZGUgIlJlZ2lzdGVyZWRFdmVudExpc3RlbmVy
LmgiCisjaW5jbHVkZSAiU2hhZG93Um9vdC5oIgogI2luY2x1ZGUgIlN0eWxlU2hlZXQuaCIKICNp
bmNsdWRlICJTdHlsZWRFbGVtZW50LmgiCiAjaW5jbHVkZSAiVGV4dC5oIgpAQCAtMjkwLDcgKzI5
MSwxMSBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSBKU1ZhbHVlIGNyZWF0ZVdyYXBwZXJJbmxpbmUo
RXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iagogICAgICAgICAgICAgd3JhcHBlciA9IENS
RUFURV9ET01fTk9ERV9XUkFQUEVSKGV4ZWMsIGdsb2JhbE9iamVjdCwgTm90YXRpb24sIG5vZGUp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgTm9kZTo6RE9DVU1FTlRfRlJBR01F
TlRfTk9ERToKLSAgICAgICAgICAgIHdyYXBwZXIgPSBDUkVBVEVfRE9NX05PREVfV1JBUFBFUihl
eGVjLCBnbG9iYWxPYmplY3QsIERvY3VtZW50RnJhZ21lbnQsIG5vZGUpOworICAgICAgICAgICAg
Ly8gRklYTUU6IHJlbW92ZSAnaWYnIG9uY2UgU2hhZG93Um9vdCBnZXRzIGl0cyBvd24gbm9kZSB0
eXBlIChzZWUgYnVnIDU4NzA0KQorICAgICAgICAgICAgaWYgKG5vZGUtPmlzU2hhZG93Qm91bmRh
cnkoKSkKKyAgICAgICAgICAgICAgICB3cmFwcGVyID0gQ1JFQVRFX0RPTV9OT0RFX1dSQVBQRVIo
ZXhlYywgZ2xvYmFsT2JqZWN0LCBOb2RlLCBub2RlKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgICAgICB3cmFwcGVyID0gQ1JFQVRFX0RPTV9OT0RFX1dSQVBQRVIoZXhlYywgZ2xvYmFs
T2JqZWN0LCBEb2N1bWVudEZyYWdtZW50LCBub2RlKTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICBjYXNlIE5vZGU6OkVOVElUWV9SRUZFUkVOQ0VfTk9ERToKICAgICAgICAgICAgIHdyYXBw
ZXIgPSBDUkVBVEVfRE9NX05PREVfV1JBUFBFUihleGVjLCBnbG9iYWxPYmplY3QsIEVudGl0eVJl
ZmVyZW5jZSwgbm9kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhOb2RlQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOE5vZGVDdXN0b20uY3BwCmluZGV4IGE5MjU4NjE4NDQwZGI2ZmM3MzExM2M3ZDdiNWM4MjJl
MWNlY2UyZTQuLjMwNzMzMDQxMTY2OTY5ZGM5ZGRhNzlhNmI4N2M0ZWQwNzgwZDQ3MTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE5vZGVDdXN0b20uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE5vZGVDdXN0b20uY3Bw
CkBAIC0zMyw2ICszMyw3IEBACiAKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkV2
ZW50TGlzdGVuZXIuaCIKKyNpbmNsdWRlICJTaGFkb3dSb290LmgiCiAKICNpbmNsdWRlICJWOEFi
c3RyYWN0RXZlbnRMaXN0ZW5lci5oIgogI2luY2x1ZGUgIlY4QXR0ci5oIgpAQCAtMTYyLDYgKzE2
Myw5IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4U2xvdyhOb2RlKiBpbXBsLCBib29sIGZv
cmNlTmV3T2JqZWN0KQogICAgIGNhc2UgTm9kZTo6RE9DVU1FTlRfVFlQRV9OT0RFOgogICAgICAg
ICByZXR1cm4gdG9WOChzdGF0aWNfY2FzdDxEb2N1bWVudFR5cGUqPihpbXBsKSwgZm9yY2VOZXdP
YmplY3QpOwogICAgIGNhc2UgTm9kZTo6RE9DVU1FTlRfRlJBR01FTlRfTk9ERToKKyAgICAgICAg
Ly8gRklYTUU6IHJlbW92ZSAnaWYnIG9uY2UgU2hhZG93Um9vdCBnZXRzIGl0cyBvd24gbm9kZSB0
eXBlIChzZWUgYnVnIDU4NzA0KQorICAgICAgICBpZiAoaW1wbC0+aXNTaGFkb3dCb3VuZGFyeSgp
KQorICAgICAgICAgICAgcmV0dXJuIHRvVjgoc3RhdGljX2Nhc3Q8U2hhZG93Um9vdCo+KGltcGwp
LCBmb3JjZU5ld09iamVjdCk7CiAgICAgICAgIHJldHVybiB0b1Y4KHN0YXRpY19jYXN0PERvY3Vt
ZW50RnJhZ21lbnQqPihpbXBsKSwgZm9yY2VOZXdPYmplY3QpOwogICAgIGNhc2UgTm9kZTo6Tk9U
QVRJT05fTk9ERToKICAgICAgICAgcmV0dXJuIHRvVjgoc3RhdGljX2Nhc3Q8Tm90YXRpb24qPihp
bXBsKSwgZm9yY2VOZXdPYmplY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0Nv
bnRhaW5lck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwCmlu
ZGV4IDI3NmRmNTZjNzRiNDcxOGZkMDgzOTgwZjVmYTk0YzliMDE3YjRlZWQuLmNlMzgwMzk5NmZj
NzlhNDRlOGI0N2IyYjQzMmQxZmZlODhjYTVjZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Db250YWluZXJOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVy
Tm9kZS5jcHAKQEAgLTkwLDYgKzkwLDEwIEBAIHZvaWQgQ29udGFpbmVyTm9kZTo6dGFrZUFsbENo
aWxkcmVuRnJvbShDb250YWluZXJOb2RlKiBvbGRQYXJlbnQpCiAgICAgICAgIFJlZlB0cjxOb2Rl
PiBjaGlsZCA9IGRvY3VtZW50KCktPmFkb3B0Tm9kZShjaGlsZHJlbltpXS5yZWxlYXNlKCksIGVj
KTsKICAgICAgICAgQVNTRVJUKCFlYyk7CiAgICAgICAgIHBhcnNlckFkZENoaWxkKGNoaWxkLmdl
dCgpKTsKKyAgICAgICAgLy8gRklYTUU6IFRvZ2V0aGVyIHdpdGggYWRvcHROb2RlIGFib3ZlLCB0
aGUgdHJlZSBzY29wZSBtaWdodCBnZXQgdXBkYXRlZCByZWN1cnNpdmVseSB0d2ljZQorICAgICAg
ICAvLyAoaWYgdGhlIGRvY3VtZW50IGNoYW5nZWQgb3Igb2xkUGFyZW50IHdhcyBpbiBhIHNoYWRv
dyB0cmVlLCBBTkQgKnRoaXMgaXMgaW4gYSBzaGFkb3cgdHJlZSkuCisgICAgICAgIC8vIENhbiB3
ZSBkbyBiZXR0ZXI/CisgICAgICAgIGNoaWxkLT5zZXRUcmVlU2NvcGVSZWN1cnNpdmVseSh0cmVl
U2NvcGUoKSk7CiAgICAgICAgIGlmIChhdHRhY2hlZCgpICYmICFjaGlsZC0+YXR0YWNoZWQoKSkK
ICAgICAgICAgICAgIGNoaWxkLT5hdHRhY2goKTsKICAgICB9CkBAIC00ODEsNiArNDg1LDggQEAg
dm9pZCBDb250YWluZXJOb2RlOjpyZW1vdmVCZXR3ZWVuKE5vZGUqIHByZXZpb3VzQ2hpbGQsIE5v
ZGUqIG5leHRDaGlsZCwgTm9kZSogb2wKICAgICBvbGRDaGlsZC0+c2V0TmV4dFNpYmxpbmcoMCk7
CiAgICAgb2xkQ2hpbGQtPnNldFBhcmVudCgwKTsKIAorICAgIG9sZENoaWxkLT5zZXRUcmVlU2Nv
cGVSZWN1cnNpdmVseShkb2N1bWVudCgpKTsKKwogICAgIGFsbG93RXZlbnREaXNwYXRjaCgpOwog
fQogCkBAIC01MzAsNiArNTM2LDcgQEAgdm9pZCBDb250YWluZXJOb2RlOjpyZW1vdmVDaGlsZHJl
bigpCiAgICAgICAgIG4tPnNldFByZXZpb3VzU2libGluZygwKTsKICAgICAgICAgbi0+c2V0TmV4
dFNpYmxpbmcoMCk7CiAgICAgICAgIG4tPnNldFBhcmVudCgwKTsKKyAgICAgICAgbi0+c2V0VHJl
ZVNjb3BlUmVjdXJzaXZlbHkoZG9jdW1lbnQoKSk7CiAKICAgICAgICAgbV9maXJzdENoaWxkID0g
bmV4dDsKICAgICAgICAgaWYgKG4gPT0gbV9sYXN0Q2hpbGQpCkBAIC02NDgsNiArNjU1LDggQEAg
dm9pZCBDb250YWluZXJOb2RlOjpwYXJzZXJBZGRDaGlsZChQYXNzUmVmUHRyPE5vZGU+IG5ld0No
aWxkKQogICAgIE5vZGUqIGxhc3QgPSBtX2xhc3RDaGlsZDsKICAgICAvLyBGSVhNRTogVGhpcyBt
ZXRob2Qgc2hvdWxkIHRha2UgYSBQYXNzUmVmUHRyLgogICAgIGFwcGVuZENoaWxkVG9Db250YWlu
ZXI8Tm9kZSwgQ29udGFpbmVyTm9kZT4obmV3Q2hpbGQuZ2V0KCksIHRoaXMpOworICAgIG5ld0No
aWxkLT5zZXRUcmVlU2NvcGVSZWN1cnNpdmVseSh0cmVlU2NvcGUoKSk7CisgICAgCiAgICAgYWxs
b3dFdmVudERpc3BhdGNoKCk7CiAKICAgICAvLyBGSVhNRTogV2h5IGRvZXNuJ3QgdGhpcyB1c2Ug
bm90aWZ5Q2hpbGRJbnNlcnRlZChuZXdDaGlsZCkgaW5zdGVhZD8KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
Y3BwCmluZGV4IDc4NGM2MTMyOTEyNzQyZDQ2YTZlNjEwODE1NTZlODNiMWU2MWYyNzIuLjNlZGRi
ZWY5NDgyYmJhYzM3YTVjNzBkN2UyZTJiOWJiZTg0ODA2ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmNwcApAQCAtMzc3LDcgKzM3Nyw3IEBAIHByaXZhdGU6CiB1aW50NjRfdCBEb2N1bWVudDo6c19n
bG9iYWxUcmVlVmVyc2lvbiA9IDA7CiAKIERvY3VtZW50OjpEb2N1bWVudChGcmFtZSogZnJhbWUs
IGNvbnN0IEtVUkwmIHVybCwgYm9vbCBpc1hIVE1MLCBib29sIGlzSFRNTCkKLSAgICA6IFRyZWVT
Y29wZSh0aGlzKQorICAgIDogVHJlZVNjb3BlKDApCiAgICAgLCBtX2d1YXJkUmVmQ291bnQoMCkK
ICAgICAsIG1fY29tcGF0aWJpbGl0eU1vZGUoTm9RdWlya3NNb2RlKQogICAgICwgbV9jb21wYXRp
YmlsaXR5TW9kZUxvY2tlZChmYWxzZSkKQEAgLTUxMyw2ICs1MTMsNyBAQCBEb2N1bWVudDo6fkRv
Y3VtZW50KCkKICAgICBBU1NFUlQobV9yYW5nZXMuaXNFbXB0eSgpKTsKICAgICBBU1NFUlQoIW1f
c3R5bGVSZWNhbGNUaW1lci5pc0FjdGl2ZSgpKTsKICAgICBBU1NFUlQoIW1fcGFyZW50VHJlZVNj
b3BlKTsKKyAgICBBU1NFUlQoIW1fZ3VhcmRSZWZDb3VudCk7CiAKICAgICBtX3NjcmlwdFJ1bm5l
ci5jbGVhcigpOwogCkBAIC02NzAsNyArNjcxLDcgQEAgdm9pZCBEb2N1bWVudDo6c2V0RG9jVHlw
ZShQYXNzUmVmUHRyPERvY3VtZW50VHlwZT4gZG9jVHlwZSkKICAgICBBU1NFUlQoIW1fZG9jVHlw
ZSB8fCAhZG9jVHlwZSk7CiAgICAgbV9kb2NUeXBlID0gZG9jVHlwZTsKICAgICBpZiAobV9kb2NU
eXBlKQotICAgICAgICBtX2RvY1R5cGUtPnNldFRyZWVTY29wZSh0aGlzKTsKKyAgICAgICAgbV9k
b2NUeXBlLT5zZXRUcmVlU2NvcGVSZWN1cnNpdmVseSh0aGlzKTsKIH0KIAogRE9NSW1wbGVtZW50
YXRpb24qIERvY3VtZW50OjppbXBsZW1lbnRhdGlvbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAppbmRleCBk
MjY5ZGJlNmU5OWExNjQ1NzY1MjczN2QzOTlmYmQ4NzhjZTJlZWUwLi4wYWY2ZDk3ZWU0NGQ5NDIx
NzM1N2RlYTBlYWY1ZGJjZGE1NDE0M2RlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKQEAgLTM5LDYgKzM5
LDcgQEAgY2xhc3MgRE9NU3RyaW5nTWFwOwogY2xhc3MgRE9NVG9rZW5MaXN0OwogY2xhc3MgRWxl
bWVudFJhcmVEYXRhOwogY2xhc3MgSW50U2l6ZTsKK2NsYXNzIFNoYWRvd1Jvb3Q7CiBjbGFzcyBX
ZWJLaXRBbmltYXRpb25MaXN0OwogCiBlbnVtIFNwZWxsY2hlY2tBdHRyaWJ1dGVTdGF0ZSB7CkBA
IC0yMjksNiArMjMwLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVh
dGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKik7CiAgICAgdmlydHVhbCB2b2lk
IHJlY2FsY1N0eWxlKFN0eWxlQ2hhbmdlID0gTm9DaGFuZ2UpOwogCisgICAgLy8gRklYTUU6IE1h
a2UgdGhlc2UgcmV0dXJuIGEgcHJvcGVyIFNoYWRvd1Jvb3QqIChidWcgNTg3MDMpLgogICAgIENv
bnRhaW5lck5vZGUqIHNoYWRvd1Jvb3QoKSBjb25zdDsKICAgICBDb250YWluZXJOb2RlKiBlbnN1
cmVTaGFkb3dSb290KCk7CiAgICAgdm9pZCByZW1vdmVTaGFkb3dSb290KCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5j
cHAKaW5kZXggZjEyYjQ2ZGY2ZGUwZjJjZjVmMTYxOWM4MDdiMDk1MTFiOTczNzJlMS4uMjRhNTgy
NDBhOGY5MzQ2N2NlMjQwNjk4MzNmNDAzYzBkZDdjYzVkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL05vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcApAQCAt
NzcsNiArNzcsNyBAQAogI2luY2x1ZGUgIlNjb3BlZEV2ZW50UXVldWUuaCIKICNpbmNsdWRlICJT
Y3JpcHRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiU2VsZWN0b3JOb2RlTGlzdC5oIgorI2luY2x1
ZGUgIlNoYWRvd1Jvb3QuaCIKICNpbmNsdWRlICJTdGF0aWNOb2RlTGlzdC5oIgogI2luY2x1ZGUg
IlRhZ05vZGVMaXN0LmgiCiAjaW5jbHVkZSAiVGV4dC5oIgpAQCAtNDY4LDM5ICs0NjksMjIgQEAg
dm9pZCBOb2RlOjpzZXREb2N1bWVudChEb2N1bWVudCogZG9jdW1lbnQpCiAKIFRyZWVTY29wZSog
Tm9kZTo6dHJlZVNjb3BlKCkgY29uc3QKIHsKKyAgICAvLyBGSVhNRTogVXNpbmcgbV9kb2N1bWVu
dCBkaXJlY3RseSBpcyBub3QgZ29vZCAtPiBzZWUgY29tbWVudCB3aXRoIGRvY3VtZW50KCkgaW4g
dGhlIGhlYWRlciBmaWxlLgogICAgIGlmICghaGFzUmFyZURhdGEoKSkKLSAgICAgICAgcmV0dXJu
IGRvY3VtZW50KCk7CisgICAgICAgIHJldHVybiBtX2RvY3VtZW50OwogICAgIFRyZWVTY29wZSog
c2NvcGUgPSByYXJlRGF0YSgpLT50cmVlU2NvcGUoKTsKLSAgICAvLyBGSVhNRTogVW50aWwgd2Ug
bGFuZCBzaGFkb3cgc2NvcGVzLCB0aGVyZSBzaG91bGQgYmUgbm8gbm9uLWRvY3VtZW50IHNjb3Bl
cy4KLSAgICBBU1NFUlQoIXNjb3BlKTsKLSAgICByZXR1cm4gc2NvcGUgPyBzY29wZSA6IGRvY3Vt
ZW50KCk7CisgICAgcmV0dXJuIHNjb3BlID8gc2NvcGUgOiBtX2RvY3VtZW50OwogfQogCi12b2lk
IE5vZGU6OnNldFRyZWVTY29wZShUcmVlU2NvcGUqIG5ld1RyZWVTY29wZSkKK3ZvaWQgTm9kZTo6
c2V0VHJlZVNjb3BlUmVjdXJzaXZlbHkoVHJlZVNjb3BlKiBuZXdUcmVlU2NvcGUsIGJvb2wgaW5j
bHVkZVJvb3QpCiB7Ci0gICAgQVNTRVJUKCFpc0RvY3VtZW50Tm9kZSgpKTsKKyAgICBBU1NFUlQo
dGhpcyk7CisgICAgQVNTRVJUKCFpbmNsdWRlUm9vdCB8fCAhaXNEb2N1bWVudE5vZGUoKSk7CiAg
ICAgQVNTRVJUKG5ld1RyZWVTY29wZSk7Ci0gICAgQVNTRVJUKCFpbkRvY3VtZW50KCkgfHwgdHJl
ZVNjb3BlKCkgPT0gbmV3VHJlZVNjb3BlKTsKKyAgICBBU1NFUlQoIW1fZGVsZXRpb25IYXNCZWd1
bik7CiAKLSAgICBpZiAobmV3VHJlZVNjb3BlLT5pc0RvY3VtZW50Tm9kZSgpKSB7Ci0gICAgICAg
IGlmIChoYXNSYXJlRGF0YSgpKQotICAgICAgICAgICAgcmFyZURhdGEoKS0+c2V0VHJlZVNjb3Bl
KDApOwotICAgICAgICAvLyBTZXR0aW5nIHRoZSBuZXcgZG9jdW1lbnQgc2NvcGUgd2lsbCBiZSBo
YW5kbGVkIGltcGxpY2l0bHkKLSAgICAgICAgLy8gYnkgc2V0RG9jdW1lbnQoKSBiZWxvdy4KLSAg
ICB9IGVsc2UgewotICAgICAgICAvLyBGSVhNRTogVW50aWwgd2UgbGFuZCBzaGFkb3cgc2NvcGVz
LCB0aGlzIGJyYW5jaCBzaG91bGQgYmUgaW5lcnQuCi0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwotICAgICAgICBlbnN1cmVSYXJlRGF0YSgpLT5zZXRUcmVlU2NvcGUobmV3VHJlZVNjb3Bl
KTsKLSAgICB9Ci0KLSAgICBzZXREb2N1bWVudChuZXdUcmVlU2NvcGUtPmRvY3VtZW50KCkpOwot
fQotCi12b2lkIE5vZGU6OnNldFRyZWVTY29wZVJlY3Vyc2l2ZWx5KFRyZWVTY29wZSogbmV3VHJl
ZVNjb3BlKQotewotICAgIEFTU0VSVCghaXNEb2N1bWVudE5vZGUoKSk7Ci0gICAgQVNTRVJUKG5l
d1RyZWVTY29wZSk7Ci0gICAgaWYgKHRyZWVTY29wZSgpID09IG5ld1RyZWVTY29wZSkKKyAgICBU
cmVlU2NvcGUqIGN1cnJlbnRUcmVlU2NvcGUgPSB0cmVlU2NvcGUoKTsKKyAgICBpZiAoY3VycmVu
dFRyZWVTY29wZSA9PSBuZXdUcmVlU2NvcGUpCiAgICAgICAgIHJldHVybjsKIAogICAgIERvY3Vt
ZW50KiBjdXJyZW50RG9jdW1lbnQgPSBkb2N1bWVudCgpOwpAQCAtNTEyLDkgKzQ5NiwyNSBAQCB2
b2lkIE5vZGU6OnNldFRyZWVTY29wZVJlY3Vyc2l2ZWx5KFRyZWVTY29wZSogbmV3VHJlZVNjb3Bl
KQogICAgIGlmIChjdXJyZW50RG9jdW1lbnQgJiYgY3VycmVudERvY3VtZW50ICE9IG5ld0RvY3Vt
ZW50KQogICAgICAgICBjdXJyZW50RG9jdW1lbnQtPmluY0RPTVRyZWVWZXJzaW9uKCk7CiAKLSAg
ICBmb3IgKE5vZGUqIG5vZGUgPSB0aGlzOyBub2RlOyBub2RlID0gbm9kZS0+dHJhdmVyc2VOZXh0
Tm9kZSh0aGlzKSkgewotICAgICAgICBub2RlLT5zZXRUcmVlU2NvcGUobmV3VHJlZVNjb3BlKTsK
LSAgICAgICAgLy8gRklYTUU6IE9uY2Ugc2hhZG93IHNjb3BlcyBhcmUgbGFuZGVkLCB1cGRhdGUg
cGFyZW50IHNjb3BlLCBldGMuCisgICAgZm9yIChOb2RlKiBub2RlID0gaW5jbHVkZVJvb3QgPyB0
aGlzIDogdHJhdmVyc2VOZXh0Tm9kZSh0aGlzKTsgbm9kZTsgbm9kZSA9IG5vZGUtPnRyYXZlcnNl
TmV4dE5vZGUodGhpcykpIHsKKyAgICAgICAgaWYgKG5ld1RyZWVTY29wZSA9PSBuZXdEb2N1bWVu
dCkgeworICAgICAgICAgICAgaWYgKG5vZGUtPmhhc1JhcmVEYXRhKCkpCisgICAgICAgICAgICAg
ICAgbm9kZS0+cmFyZURhdGEoKS0+c2V0VHJlZVNjb3BlKDApOworICAgICAgICAgICAgLy8gU2V0
dGluZyB0aGUgbmV3IGRvY3VtZW50IHRyZWUgc2NvcGUgd2lsbCBiZSBoYW5kbGVkIGltcGxpY2l0
bHkKKyAgICAgICAgICAgIC8vIGJ5IHNldERvY3VtZW50KCkgYmVsb3cuCisgICAgICAgIH0gZWxz
ZQorICAgICAgICAgICAgbm9kZS0+ZW5zdXJlUmFyZURhdGEoKS0+c2V0VHJlZVNjb3BlKG5ld1Ry
ZWVTY29wZSk7CisKKyAgICAgICAgbm9kZS0+c2V0RG9jdW1lbnQobmV3RG9jdW1lbnQpOworCisg
ICAgICAgIGlmICghbm9kZS0+aXNFbGVtZW50Tm9kZSgpKQorICAgICAgICAgICAgY29udGludWU7
CisgICAgICAgIC8vIEZJWE1FOiBSZW1vdmUgdG9TaGFkb3dSb290KCkgb25jZSBzaGFkb3dSb290
KCkgcmV0dXJucyBhIHByb3BlciBTaGFkb3dSb290KiAoYnVnIDU4NzAzKS4KKyAgICAgICAgaWYg
KFNoYWRvd1Jvb3QqIHNoYWRvd1Jvb3QgPSB0b1NoYWRvd1Jvb3QodG9FbGVtZW50KG5vZGUpLT5z
aGFkb3dSb290KCkpKSB7CisgICAgICAgICAgICBzaGFkb3dSb290LT5zZXRQYXJlbnRUcmVlU2Nv
cGUobmV3VHJlZVNjb3BlKTsKKyAgICAgICAgICAgIGlmIChjdXJyZW50RG9jdW1lbnQgIT0gbmV3
RG9jdW1lbnQpCisgICAgICAgICAgICAgICAgc2hhZG93Um9vdC0+c2V0RG9jdW1lbnRSZWN1cnNp
dmVseShuZXdEb2N1bWVudCk7CisgICAgICAgIH0KICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCmluZGV4
IGFlMGJkNTE4OTFkNGM2ZGNlYzAwMzNmYTFhZThmMzk3NjRlMGZhZTAuLmQ2YTRiM2U0NTIzZmYz
YWRmZTIxOGE3NDIxNDUzYmQ5Y2RkZDMzNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Ob2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaApAQCAtMzU5LDE4ICszNTks
MTYgQEAgcHVibGljOgogICAgIERvY3VtZW50KiBkb2N1bWVudCgpIGNvbnN0CiAgICAgewogICAg
ICAgICBBU1NFUlQodGhpcyk7CisgICAgICAgIC8vIEZJWE1FOiBiZWxvdyBBU1NFUlQgaXMgdXNl
ZnVsLCBidXQgcHJldmVudHMgdGhlIHVzZSBvZiBkb2N1bWVudCgpIGluIHRoZSBjb25zdHJ1Y3Rv
ciBvciBkZXN0cnVjdG9yCisgICAgICAgIC8vIGR1ZSB0byB0aGUgdmlydHVhbCBmdW5jdGlvbiBj
YWxsIHRvIG5vZGVUeXBlKCkuCiAgICAgICAgIEFTU0VSVChtX2RvY3VtZW50IHx8IChub2RlVHlw
ZSgpID09IERPQ1VNRU5UX1RZUEVfTk9ERSAmJiAhaW5Eb2N1bWVudCgpKSk7CiAgICAgICAgIHJl
dHVybiBtX2RvY3VtZW50OwogICAgIH0KIAogICAgIFRyZWVTY29wZSogdHJlZVNjb3BlKCkgY29u
c3Q7CiAKLSAgICAvLyBEbyBub3QgdXNlIHRoaXMgbWV0aG9kIHRvIGNoYW5nZSB0aGUgc2NvcGUg
b2YgYSBub2RlIHVudGlsIGFmdGVyIHRoZSBub2RlIGhhcyBiZWVuCi0gICAgLy8gcmVtb3ZlZCBm
cm9tIGl0cyBwcmV2aW91cyBzY29wZS4gRG8gbm90IHVzZSB0byBjaGFuZ2UgZG9jdW1lbnRzLgot
ICAgIHZvaWQgc2V0VHJlZVNjb3BlKFRyZWVTY29wZSopOwotCiAgICAgLy8gVXNlZCBieSB0aGUg
YmFzaWMgRE9NIG1ldGhvZHMgKGUuZy4sIGFwcGVuZENoaWxkKCkpLgotICAgIHZvaWQgc2V0VHJl
ZVNjb3BlUmVjdXJzaXZlbHkoVHJlZVNjb3BlKik7CisgICAgdm9pZCBzZXRUcmVlU2NvcGVSZWN1
cnNpdmVseShUcmVlU2NvcGUqLCBib29sIGluY2x1ZGVSb290ID0gdHJ1ZSk7CiAKICAgICAvLyBS
ZXR1cm5zIHRydWUgaWYgdGhpcyBub2RlIGlzIGFzc29jaWF0ZWQgd2l0aCBhIGRvY3VtZW50IGFu
ZCBpcyBpbiBpdHMgYXNzb2NpYXRlZCBkb2N1bWVudCdzCiAgICAgLy8gbm9kZSB0cmVlLCBmYWxz
ZSBvdGhlcndpc2UuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAKaW5kZXggOGZlNTZiNWM2OTUy
MTYxYTJlYWI3NTRkY2JkNzAzNWJlZjYzMjU0Mi4uZTU0NzY3ZTgwZDZlN2VjMTkzNjE3NDgxMTY2
NjNlOTAwYzhiMTJkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcApAQCAtMjcsMTIgKzI3
LDI1IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU2hhZG93Um9vdC5oIgogCisj
aW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJOb2RlUmFyZURhdGEuaCIKKwogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBTaGFkb3dSb290OjpTaGFkb3dSb290KERvY3VtZW50KiBkb2N1bWVu
dCkKLSAgICA6IERvY3VtZW50RnJhZ21lbnQoZG9jdW1lbnQpCisgICAgOiBUcmVlU2NvcGUoZG9j
dW1lbnQpCiB7CiAgICAgQVNTRVJUKGRvY3VtZW50KTsKKyAgICAKKyAgICAvLyBBc3N1bWUgZG9j
dW1lbnQgYXMgcGFyZW50IHNjb3BlLgorICAgIHNldFBhcmVudFRyZWVTY29wZShkb2N1bWVudCk7
CisgICAgLy8gU2hhZG93IHRyZWUgc2NvcGVzIGhhdmUgdGhlIHNjb3BlIHBvaW50ZXIgcG9pbnQg
dG8gdGhlbXNlbHZlcy4KKyAgICAvLyBUaGlzIHdheSwgZGlyZWN0IGNoaWxkcmVuIHdpbGwgcmVj
ZWl2ZSB0aGUgY29ycmVjdCBzY29wZSBwb2ludGVyLgorICAgIGVuc3VyZVJhcmVEYXRhKCktPnNl
dFRyZWVTY29wZSh0aGlzKTsKK30KKworU2hhZG93Um9vdDo6flNoYWRvd1Jvb3QoKQorewogfQog
CiBTdHJpbmcgU2hhZG93Um9vdDo6bm9kZU5hbWUoKSBjb25zdApAQCAtNDAsNiArNTMsMzMgQEAg
U3RyaW5nIFNoYWRvd1Jvb3Q6Om5vZGVOYW1lKCkgY29uc3QKICAgICByZXR1cm4gIiNzaGFkb3ct
cm9vdCI7CiB9CiAKK05vZGU6Ok5vZGVUeXBlIFNoYWRvd1Jvb3Q6Om5vZGVUeXBlKCkgY29uc3QK
K3sKKyAgICAvLyBGSVhNRTogRGVjaWRlIGNvcnJlY3Qgbm9kZSB0eXBlIChidWcgNTg3MDQpLgor
ICAgIHJldHVybiBET0NVTUVOVF9GUkFHTUVOVF9OT0RFOworfQorCitQYXNzUmVmUHRyPE5vZGU+
IFNoYWRvd1Jvb3Q6OmNsb25lTm9kZShib29sKQoreworICAgIC8vIFNoYWRvd1Jvb3Qgc2hvdWxk
IG5vdCBiZSBhcmJpdHJhcmlseSBjbG9uZWQuCisgICAgcmV0dXJuIDA7Cit9CisKK2Jvb2wgU2hh
ZG93Um9vdDo6Y2hpbGRUeXBlQWxsb3dlZChOb2RlVHlwZSB0eXBlKSBjb25zdAoreworICAgIHN3
aXRjaCAodHlwZSkgeworICAgIGNhc2UgRUxFTUVOVF9OT0RFOgorICAgIGNhc2UgUFJPQ0VTU0lO
R19JTlNUUlVDVElPTl9OT0RFOgorICAgIGNhc2UgQ09NTUVOVF9OT0RFOgorICAgIGNhc2UgVEVY
VF9OT0RFOgorICAgIGNhc2UgQ0RBVEFfU0VDVElPTl9OT0RFOgorICAgIGNhc2UgRU5USVRZX1JF
RkVSRU5DRV9OT0RFOgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBkZWZhdWx0OgorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgfQorfQorCiB2b2lkIFNoYWRvd1Jvb3Q6OnJlY2FsY1N0eWxl
KFN0eWxlQ2hhbmdlIGNoYW5nZSkKIHsKICAgICBmb3IgKE5vZGUqIG4gPSBmaXJzdENoaWxkKCk7
IG47IG4gPSBuLT5uZXh0U2libGluZygpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L1NoYWRvd1Jvb3QuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmgKaW5kZXggYWVj
Y2Q4YTQ2MTNkYjZkZTY0ZTRhNjE1YjFhMzY0OGQxMTkyYWU4Yi4uZGI1MWIyYjNhNzViOWIwNjUy
OGVjM2VmY2M3ODBjZTA1NGI1ZjFjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1No
YWRvd1Jvb3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5oCkBAIC0yNywx
MyArMjcsMTMgQEAKICNpZm5kZWYgU2hhZG93Um9vdF9oCiAjZGVmaW5lIFNoYWRvd1Jvb3RfaAog
Ci0jaW5jbHVkZSAiRG9jdW1lbnRGcmFnbWVudC5oIgorI2luY2x1ZGUgIlRyZWVTY29wZS5oIgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIERvY3VtZW50OwogCi1jbGFzcyBTaGFkb3dS
b290IDogcHVibGljIERvY3VtZW50RnJhZ21lbnQgeworY2xhc3MgU2hhZG93Um9vdCA6IHB1Ymxp
YyBUcmVlU2NvcGUgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNoYWRvd1Jvb3Q+
IGNyZWF0ZShEb2N1bWVudCopOwogCkBAIC00Miw3ICs0MiwxMiBAQCBwdWJsaWM6CiAKIHByaXZh
dGU6CiAgICAgU2hhZG93Um9vdChEb2N1bWVudCopOworICAgIHZpcnR1YWwgflNoYWRvd1Jvb3Qo
KTsKKwogICAgIHZpcnR1YWwgU3RyaW5nIG5vZGVOYW1lKCkgY29uc3Q7CisgICAgdmlydHVhbCBO
b2RlVHlwZSBub2RlVHlwZSgpIGNvbnN0OworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxOb2RlPiBj
bG9uZU5vZGUoYm9vbCBkZWVwKTsKKyAgICB2aXJ0dWFsIGJvb2wgY2hpbGRUeXBlQWxsb3dlZChO
b2RlVHlwZSkgY29uc3Q7CiB9OwogCiBpbmxpbmUgUGFzc1JlZlB0cjxTaGFkb3dSb290PiBTaGFk
b3dSb290OjpjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50KQpAQCAtNTAsNiArNTUsMTIgQEAgaW5s
aW5lIFBhc3NSZWZQdHI8U2hhZG93Um9vdD4gU2hhZG93Um9vdDo6Y3JlYXRlKERvY3VtZW50KiBk
b2N1bWVudCkKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNoYWRvd1Jvb3QoZG9jdW1lbnQpKTsK
IH0KIAoraW5saW5lIFNoYWRvd1Jvb3QqIHRvU2hhZG93Um9vdChOb2RlKiBub2RlKQoreworICAg
IEFTU0VSVCghbm9kZSB8fCBub2RlLT5pc1NoYWRvd0JvdW5kYXJ5KCkpOworICAgIHJldHVybiBz
dGF0aWNfY2FzdDxTaGFkb3dSb290Kj4obm9kZSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlCiAKICNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlLmNwcAppbmRleCBhOTk1YTJkNjhiZTFmZGMyZDFlMTg5
NTA0OWQyZmVjOWNlNWRiOWQ3Li5jOGRjMDdlZTdjMzIzNTBlNDllZGFlOTgzMjY4YzBkOWI5ZWJk
ZmFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlLmNwcApAQCAtMzYsMTkgKzM2LDEyIEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAotVHJlZVNjb3Bl
OjpUcmVlU2NvcGUoRG9jdW1lbnQqIGRvY3VtZW50LCBDb25zdHJ1Y3Rpb25UeXBlIGNvbnN0cnVj
dGlvblR5cGUpCi0gICAgOiBDb250YWluZXJOb2RlKDAsIGNvbnN0cnVjdGlvblR5cGUpCitUcmVl
U2NvcGU6OlRyZWVTY29wZShEb2N1bWVudCogZG9jdW1lbnQpCisgICAgOiBDb250YWluZXJOb2Rl
KGRvY3VtZW50KQogICAgICwgbV9wYXJlbnRUcmVlU2NvcGUoMCkKICAgICAsIG1fYWNjZXNzS2V5
TWFwVmFsaWQoZmFsc2UpCiAgICAgLCBtX251bU5vZGVMaXN0Q2FjaGVzKDApCiB7Ci0gICAgbV9k
b2N1bWVudCA9IGRvY3VtZW50OwotICAgIGlmIChkb2N1bWVudCAhPSB0aGlzKSB7Ci0gICAgICAg
IC8vIEFzc3VtZSBkb2N1bWVudCBhcyBwYXJlbnQgc2NvcGUKLSAgICAgICAgbV9wYXJlbnRUcmVl
U2NvcGUgPSBkb2N1bWVudDsKLSAgICAgICAgLy8gRklYTUU6IFRoaXMgYnJhbmNoIHNob3VsZCBi
ZSBpbmVydCB1bnRpbCBzaGFkb3cgc2NvcGVzIGFyZSBsYW5kZWQuCi0gICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwotICAgIH0KIH0KIAogVHJlZVNjb3BlOjp+VHJlZVNjb3BlKCkKQEAgLTY5
LDcgKzYyLDYgQEAgdm9pZCBUcmVlU2NvcGU6OnNldFBhcmVudFRyZWVTY29wZShUcmVlU2NvcGUq
IG5ld1BhcmVudFNjb3BlKQogICAgIC8vIEEgZG9jdW1lbnQgbm9kZSBjYW5ub3QgYmUgcmUtcGFy
ZW50ZWQuCiAgICAgQVNTRVJUKCFpc0RvY3VtZW50Tm9kZSgpKTsKICAgICAvLyBFdmVyeSBzY29w
ZSBvdGhlciB0aGFuIGRvY3VtZW50IG5lZWRzIGEgcGFyZW50IHNjb3BlLgotICAgIEFTU0VSVCht
X3BhcmVudFRyZWVTY29wZSk7CiAgICAgQVNTRVJUKG5ld1BhcmVudFNjb3BlKTsKIAogICAgIG1f
cGFyZW50VHJlZVNjb3BlID0gbmV3UGFyZW50U2NvcGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vVHJlZVNjb3BlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlLmgKaW5k
ZXggNjI3MTU0MTk3MTA2YzAwNTA2YmNiOWZiYTIwZTZmN2NkNWZjYmFiNC4uMWY5MGEwOTE3NWY4
Y2E2MjkyYmRkY2IyYzM1MDM0NjNkNWFmMzlmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL1RyZWVTY29wZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuaApAQCAt
MzksNiArMzksNyBAQCBjbGFzcyBUcmVlU2NvcGUgOiBwdWJsaWMgQ29udGFpbmVyTm9kZSB7CiAK
IHB1YmxpYzoKICAgICBUcmVlU2NvcGUqIHBhcmVudFRyZWVTY29wZSgpIGNvbnN0IHsgcmV0dXJu
IG1fcGFyZW50VHJlZVNjb3BlOyB9CisgICAgdm9pZCBzZXRQYXJlbnRUcmVlU2NvcGUoVHJlZVNj
b3BlKik7CiAKICAgICBFbGVtZW50KiBnZXRFbGVtZW50QnlJZChjb25zdCBBdG9taWNTdHJpbmcm
KSBjb25zdDsKICAgICBib29sIGhhc0VsZW1lbnRXaXRoSWQoQXRvbWljU3RyaW5nSW1wbCogaWQp
IGNvbnN0OwpAQCAtNjUsMTQgKzY2LDExIEBAIHB1YmxpYzoKICAgICBFbGVtZW50KiBmaW5kQW5j
aG9yKGNvbnN0IFN0cmluZyYgbmFtZSk7CiAKIHByb3RlY3RlZDoKLSAgICBUcmVlU2NvcGUoRG9j
dW1lbnQqLCBDb25zdHJ1Y3Rpb25UeXBlID0gQ3JlYXRlQ29udGFpbmVyKTsKLQorICAgIFRyZWVT
Y29wZShEb2N1bWVudCopOwogICAgIHZpcnR1YWwgflRyZWVTY29wZSgpOwogCiAgICAgdm9pZCBk
ZXN0cm95VHJlZVNjb3BlRGF0YSgpOwogCi0gICAgdm9pZCBzZXRQYXJlbnRUcmVlU2NvcGUoVHJl
ZVNjb3BlKik7Ci0KIHByaXZhdGU6CiAgICAgVHJlZVNjb3BlKiBtX3BhcmVudFRyZWVTY29wZTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNsaWRlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2xpZGVyLmNwcAppbmRleCBhZDVhYjFh
ZGZiZTg0OGRmOWUyZjJiNjE5NmQzYmIyOTQyNjhkYTUxLi4wN2QzMjVlZDE3ZjA4MTI4ZGFkYWIz
YzM5OGIwOWQ1ODgzZmI2MzEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyU2xpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2xp
ZGVyLmNwcApAQCAtMzcsNyArMzcsNyBAQAogI2luY2x1ZGUgIlJlbmRlckxheWVyLmgiCiAjaW5j
bHVkZSAiUmVuZGVyVGhlbWUuaCIKICNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCi0jaW5jbHVkZSAi
U2hhZG93RWxlbWVudC5oIgorI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKICNpbmNsdWRlICJTbGlk
ZXJUaHVtYkVsZW1lbnQuaCIKICNpbmNsdWRlICJTdGVwUmFuZ2UuaCIKICNpbmNsdWRlIDx3dGYv
TWF0aEV4dHJhcy5oPgo=
</data>
<flag name="review"
          id="83031"
          type_id="1"
          status="+"
          setter="dglazkov"
    />
          </attachment>
      

    </bug>

</bugzilla>