<?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>92089</bug_id>
          
          <creation_ts>2012-07-24 02:56:00 -0700</creation_ts>
          <short_desc>Web Inspector: Protocol Extension: Refactor protocol extension for CSS Regions</short_desc>
          <delta_ts>2012-08-10 02:58:57 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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>92983</dependson>
          <blocked>90786</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Andrei Poenaru">andreigpoenaru</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>gustavo</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>philn</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>676586</commentid>
    <comment_count>0</comment_count>
    <who name="Andrei Poenaru">andreigpoenaru</who>
    <bug_when>2012-07-24 02:56:00 -0700</bug_when>
    <thetext>Change the implemented protocol extension for CSS Regions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>676587</commentid>
    <comment_count>1</comment_count>
      <attachid>154001</attachid>
    <who name="Andrei Poenaru">andreigpoenaru</who>
    <bug_when>2012-07-24 02:56:35 -0700</bug_when>
    <thetext>Created attachment 154001
Protocol Extension</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>679269</commentid>
    <comment_count>2</comment_count>
      <attachid>154641</attachid>
    <who name="Andrei Poenaru">andreigpoenaru</who>
    <bug_when>2012-07-26 06:45:09 -0700</bug_when>
    <thetext>Created attachment 154641
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>679394</commentid>
    <comment_count>3</comment_count>
      <attachid>154641</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-07-26 09:09:12 -0700</bug_when>
    <thetext>Comment on attachment 154641
Patch

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

Mostly looks good. My main concern is the temporary function.

&gt; Source/WebCore/dom/WebKitNamedFlow.cpp:100
&gt; +const RenderRegionList* WebKitNamedFlow::tempGetRegions()

It sounds weird that we expose non-existing methods using the protocol.

&gt; Source/WebCore/inspector/Inspector.json:2166
&gt; +                    { &quot;name&quot;: &quot;regionOverset&quot;, &quot;type&quot;: &quot;string&quot;, &quot;enum&quot;: [&quot;overset&quot;, &quot;fit&quot;, &quot;empty&quot;], &quot;description&quot;: &quot;The \&quot;overset\&quot; attribute of a Named Flow.&quot; },

this is already a region, consider dropping the &quot;region&quot; prefix.

&gt; Source/WebCore/inspector/Inspector.json:2178
&gt; +                    { &quot;name&quot;: &quot;overset&quot;, &quot;type&quot;: &quot;boolean&quot;, &quot;description&quot;: &quot;The \&quot;overset\&quot; attribute of a Named Flow.&quot; },

How do the overset properties of flow and the region correlate?

&gt; Source/WebCore/inspector/Inspector.json:2180
&gt; +                    { &quot;name&quot;: &quot;regions&quot;, &quot;type&quot;: &quot;array&quot;, &quot;items&quot;: { &quot;$ref&quot;: &quot;Region&quot; }, &quot;description&quot;: &quot;An array of regions associated with the Named Flow.&quot; }

contentNodeId.
For my education: how do these two correlate? (content and regions.nodeIds).

&gt; Source/WebCore/inspector/Inspector.json:2336
&gt; +                    { &quot;name&quot;: &quot;namedFlows&quot;, &quot;type&quot;: &quot;array&quot;, &quot;items&quot;: { &quot;$ref&quot;: &quot;NamedFlow&quot; }, &quot;description&quot;: &quot;An array containing the Named Flows in the document.&quot; }

You should remove getFlowByName now, right?

&gt; Source/WebCore/inspector/InspectorCSSAgent.cpp:831
&gt; +    WebKitNamedFlow* webKitNamedFlow = document-&gt;namedFlows()-&gt;flowByName(flowName);

I think you should drop this method.

&gt; Source/WebCore/inspector/InspectorCSSAgent.cpp:1054
&gt; +PassRefPtr&lt;TypeBuilder::CSS::NamedFlow&gt; InspectorCSSAgent::buildObjectForNamedFlow(RefPtr&lt;WebKitNamedFlow&gt;&amp; webKitNamedFlow, int documentNodeId)

Use PassRefPtr instead.

&gt; Source/WebCore/inspector/InspectorCSSAgent.cpp:1056
&gt; +    RefPtr&lt;NodeList&gt; contentList = webKitNamedFlow-&gt;getContent();

According to the WebKit coding guidelines, this should be called &quot;content()&quot;, not &quot;getContent()&quot;.

&gt; Source/WebCore/inspector/InspectorCSSAgent.cpp:1062
&gt; +    // FIXME: Should be reimplemented when WebKitNamedFlow::getRegions will be available

I think you should start with implementing the underlying functionality.

&gt; Source/WebCore/inspector/InspectorCSSAgent.cpp:1066
&gt; +    if (regionList)

Missing {} for multiline block below.

&gt; Source/WebCore/inspector/InspectorCSSAgent.cpp:1067
&gt; +        for (RenderRegionList::const_iterator it = regionList-&gt;begin(); it != regionList-&gt;end(); ++it) {

Sounds like buildArrayForRegions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>679471</commentid>
    <comment_count>4</comment_count>
    <who name="Andrei Poenaru">andreigpoenaru</who>
    <bug_when>2012-07-26 10:21:17 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 154641 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=154641&amp;action=review
&gt; 
&gt; Mostly looks good. My main concern is the temporary function.
&gt; 
&gt; &gt; Source/WebCore/dom/WebKitNamedFlow.cpp:100
&gt; &gt; +const RenderRegionList* WebKitNamedFlow::tempGetRegions()
&gt; 
&gt; It sounds weird that we expose non-existing methods using the protocol.
&gt; 
The team I am working in at Adobe is responsible with implementing CSS Regions in WebKit. The implementation of the &quot;getRegions&quot; method is in progress, but it may
take some time before it gets in WebKit: they are having a hard time finding a reviewer.
http://www.w3.org/TR/css3-regions/#the-namedflow-interface

&gt; &gt; Source/WebCore/inspector/Inspector.json:2166
&gt; &gt; +                    { &quot;name&quot;: &quot;regionOverset&quot;, &quot;type&quot;: &quot;string&quot;, &quot;enum&quot;: [&quot;overset&quot;, &quot;fit&quot;, &quot;empty&quot;], &quot;description&quot;: &quot;The \&quot;overset\&quot; attribute of a Named Flow.&quot; },
&gt; 
&gt; this is already a region, consider dropping the &quot;region&quot; prefix.
&gt; 
Because of the &quot;overset&quot; value of the enum the property can not be named the same.

&gt; &gt; Source/WebCore/inspector/Inspector.json:2178
&gt; &gt; +                    { &quot;name&quot;: &quot;overset&quot;, &quot;type&quot;: &quot;boolean&quot;, &quot;description&quot;: &quot;The \&quot;overset\&quot; attribute of a Named Flow.&quot; },
&gt; 
&gt; How do the overset properties of flow and the region correlate?
&gt; 
The flow has &quot;overset: true&quot; if the last region in the region chain has &quot;regionOverset: overset&quot;.

&gt; &gt; Source/WebCore/inspector/Inspector.json:2180
&gt; &gt; +                    { &quot;name&quot;: &quot;regions&quot;, &quot;type&quot;: &quot;array&quot;, &quot;items&quot;: { &quot;$ref&quot;: &quot;Region&quot; }, &quot;description&quot;: &quot;An array of regions associated with the Named Flow.&quot; }
&gt; 
&gt; contentNodeId.
&gt; For my education: how do these two correlate? (content and regions.nodeIds).
&gt; 
The content nodes are taken from the main document flow and flowed through the regions in DOM order.
Sample (css regions should be enabled in &quot;about://flags&quot;): http://adobe.github.com/web-platform/samples/css-regions/basic/single-flow.html

&gt; &gt; Source/WebCore/inspector/Inspector.json:2336
&gt; &gt; +                    { &quot;name&quot;: &quot;namedFlows&quot;, &quot;type&quot;: &quot;array&quot;, &quot;items&quot;: { &quot;$ref&quot;: &quot;NamedFlow&quot; }, &quot;description&quot;: &quot;An array containing the Named Flows in the document.&quot; }
&gt; 
&gt; You should remove getFlowByName now, right?
&gt; 
The reason why I proposed this method is to avoid the overhead of requesting all named flows when one changes, or a new flow is created.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>682902</commentid>
    <comment_count>5</comment_count>
      <attachid>154641</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2012-07-31 04:09:08 -0700</bug_when>
    <thetext>Comment on attachment 154641
Patch

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

&gt;&gt;&gt; Source/WebCore/inspector/Inspector.json:2336
&gt;&gt;&gt; +                    { &quot;name&quot;: &quot;namedFlows&quot;, &quot;type&quot;: &quot;array&quot;, &quot;items&quot;: { &quot;$ref&quot;: &quot;NamedFlow&quot; }, &quot;description&quot;: &quot;An array containing the Named Flows in the document.&quot; }
&gt;&gt; 
&gt;&gt; You should remove getFlowByName now, right?
&gt; 
&gt; The reason why I proposed this method is to avoid the overhead of requesting all named flows when one changes, or a new flow is created.

What is the origin of the named flow changes? Is it CSSOM? If so, can you push the update into the frontend using an event instead?

&gt; Source/WebCore/inspector/InspectorCSSAgent.cpp:837
&gt; +    RefPtr&lt;WebKitNamedFlow&gt; refWebKitNamedFlow(webKitNamedFlow);

This line is not necessary. You could try passing webKitNamedFlow directly into buildObjectForNamedFlow(PassRefPtr&lt;WebKitNamedFlow&gt;...) and see if the respective PassRefPtr will get constructed automatically.

&gt; Source/WebCore/inspector/InspectorCSSAgent.cpp:1086
&gt; +                continue;

Should this ASSERT_NOT_REACHED() as well?

&gt; Source/WebCore/inspector/InspectorDOMAgent.h:169
&gt; +    int pushNodePathToFrontend(Node*);

What is the rationale behind this change? The two push* methods seem to have been properly grouped originally.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>682911</commentid>
    <comment_count>6</comment_count>
    <who name="Andrei Poenaru">andreigpoenaru</who>
    <bug_when>2012-07-31 04:29:16 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 154641 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=154641&amp;action=review
&gt; 
&gt; &gt;&gt;&gt; Source/WebCore/inspector/Inspector.json:2336
&gt; &gt;&gt;&gt; +                    { &quot;name&quot;: &quot;namedFlows&quot;, &quot;type&quot;: &quot;array&quot;, &quot;items&quot;: { &quot;$ref&quot;: &quot;NamedFlow&quot; }, &quot;description&quot;: &quot;An array containing the Named Flows in the document.&quot; }
&gt; &gt;&gt; 
&gt; &gt;&gt; You should remove getFlowByName now, right?
&gt; &gt; 
&gt; &gt; The reason why I proposed this method is to avoid the overhead of requesting all named flows when one changes, or a new flow is created.
&gt; 
&gt; What is the origin of the named flow changes? Is it CSSOM? If so, can you push the update into the frontend using an event instead?

I will also add some events, but, in order to keep them lightweight, they are sending only the name of the flow.

&gt; &gt; Source/WebCore/inspector/InspectorDOMAgent.h:169
&gt; &gt; +    int pushNodePathToFrontend(Node*);
&gt; 
&gt; What is the rationale behind this change? The two push* methods seem to have been properly grouped originally.

The reason why I made this method public is to be able to get the NodeIds for the content nodes and for the regions (they may not have been sent yet to the frontend).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>689034</commentid>
    <comment_count>7</comment_count>
      <attachid>156910</attachid>
    <who name="Andrei Poenaru">andreigpoenaru</who>
    <bug_when>2012-08-07 04:29:53 -0700</bug_when>
    <thetext>Created attachment 156910
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>690356</commentid>
    <comment_count>8</comment_count>
      <attachid>156910</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-08-08 08:32:07 -0700</bug_when>
    <thetext>Comment on attachment 156910
Patch

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

&gt; Source/WebCore/inspector/Inspector.json:2199
&gt;                      { &quot;name&quot;: &quot;nodeId&quot;, &quot;$ref&quot;: &quot;DOM.NodeId&quot;, &quot;description&quot;: &quot;The document node id.&quot; },

You operate document node id a lot, I was not anticipating this. I wother if it should be named documentId (or documentNodeId) consistently in the protocol.

&gt; Source/WebCore/inspector/InspectorCSSAgent.cpp:1073
&gt; +PassRefPtr&lt;TypeBuilder::Array&lt;TypeBuilder::CSS::Region&gt; &gt; InspectorCSSAgent::buildArrayForRegions(PassRefPtr&lt;NodeList&gt; prpRegionList)

We don&apos;t use prp prefixes.

&gt; Source/WebCore/inspector/InspectorCSSAgent.cpp:1075
&gt; +    RefPtr&lt;NodeList&gt; regionList = prpRegionList;

PassRefPtr overrides -&gt;, you should not need this intermediate step.

&gt; Source/WebCore/inspector/InspectorCSSAgent.cpp:1079
&gt; +        const AtomicString&amp; regionElementOverset = static_cast&lt;Element*&gt;(regionList-&gt;item(i))-&gt;webkitRegionOverset();

toElement(...)

&gt; Source/WebCore/inspector/InspectorCSSAgent.cpp:1082
&gt; +        if (regionElementOverset == &quot;empty&quot;)

Are there any contants for these in WebCore?

&gt; Source/WebCore/inspector/InspectorCSSAgent.cpp:1095
&gt; +            .setNodeId(m_domAgent-&gt;pushNodePathToFrontend(regionList-&gt;item(i)));

FYI: pushNodePathToFrontend is private for a reason:
- we don&apos;t want to emit notifications without requests
- it would not work if say client has not yet requested the document.

In your case, you receive document nodeId in getNamedFlowCollection, so you know that the user already has requested DOM. I think we should expose public InspectorDOMAgent::pushNodeToFrontend(int documentNodeId, node) so that it could only be called with a document handle in hand. It would then check if the node belongs to that document and redirect to the private pushNodePathToFrontend if everything is Ok.

&gt; Source/WebCore/inspector/InspectorCSSAgent.cpp:1109
&gt; +        content-&gt;addItem(m_domAgent-&gt;pushNodePathToFrontend(contentList-&gt;item(i)));

ditto

&gt; Source/WebCore/inspector/InspectorDOMAgent.h:172
&gt; +    int pushNodePathToFrontend(Node*);

I don&apos;t think you should do this. See above for notes.

&gt; Source/WebCore/inspector/front-end/CSSStyleModel.js:169
&gt;      getNamedFlowCollectionAsync: function(nodeId, userCallback)

Sounds like this change is missing a more comprehensive test!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>691439</commentid>
    <comment_count>9</comment_count>
      <attachid>157452</attachid>
    <who name="Andrei Poenaru">andreigpoenaru</who>
    <bug_when>2012-08-09 05:39:13 -0700</bug_when>
    <thetext>Created attachment 157452
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>691456</commentid>
    <comment_count>10</comment_count>
      <attachid>157452</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-08-09 05:51:19 -0700</bug_when>
    <thetext>Comment on attachment 157452
Patch

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

&gt; Source/WebCore/inspector/InspectorDOMAgent.cpp:454
&gt; +    if (!assertDocument(errorString, documentNodeId))

Nit: you could also check whether node&apos;s document matches the one resolved.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>692267</commentid>
    <comment_count>11</comment_count>
      <attachid>157647</attachid>
    <who name="Andrei Poenaru">andreigpoenaru</who>
    <bug_when>2012-08-10 00:01:40 -0700</bug_when>
    <thetext>Created attachment 157647
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>692271</commentid>
    <comment_count>12</comment_count>
      <attachid>157647</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-08-10 00:06:12 -0700</bug_when>
    <thetext>Comment on attachment 157647
Patch for landing

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

&gt; Source/WebCore/inspector/InspectorDOMAgent.cpp:456
&gt; +        return 0;

You need to assign the errorString here in case the latter is false.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>692278</commentid>
    <comment_count>13</comment_count>
      <attachid>157650</attachid>
    <who name="Andrei Poenaru">andreigpoenaru</who>
    <bug_when>2012-08-10 00:25:33 -0700</bug_when>
    <thetext>Created attachment 157650
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>692323</commentid>
    <comment_count>14</comment_count>
      <attachid>157665</attachid>
    <who name="Andrei Poenaru">andreigpoenaru</who>
    <bug_when>2012-08-10 01:09:13 -0700</bug_when>
    <thetext>Created attachment 157665
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>692403</commentid>
    <comment_count>15</comment_count>
      <attachid>157665</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-10 02:58:51 -0700</bug_when>
    <thetext>Comment on attachment 157665
Patch

Clearing flags on attachment: 157665

Committed r125268: &lt;http://trac.webkit.org/changeset/125268&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>692404</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-10 02:58:57 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>154001</attachid>
            <date>2012-07-24 02:56:35 -0700</date>
            <delta_ts>2012-07-24 02:56:35 -0700</delta_ts>
            <desc>Protocol Extension</desc>
            <filename>Inspector-extension2.json</filename>
            <type>application/octet-stream</type>
            <size>3066</size>
            <attacher name="Andrei Poenaru">andreigpoenaru</attacher>
            
              <data encoding="base64">ImRvbWFpbiI6ICJDU1MiLAoidHlwZXMiOiBbCgl7CgkJImlkIjogIlJlZ2lvbiIsCgkJInR5cGUi
OiAib2JqZWN0IiwKCQkicHJvcGVydGllcyI6IFsKCQkJeyAibmFtZSI6ICJyZWdpb25PdmVyc2V0
IiwgInR5cGUiOiAic3RyaW5nIiwgImRlc2NyaXB0aW9uIjogIlRoZSBcIm92ZXJzZXRcIiBhdHRy
aWJ1dGUgb2YgYSBOYW1lZCBGbG93LiIgfSwKCQkJeyAibmFtZSI6ICJub2RlSWQiLCAiJHJlZiI6
ICJET00uTm9kZUlkIiwgImRlc2NyaXB0aW9uIjogIlRoZSBjb3JyZXNwb25kaW5nIERPTSBub2Rl
IGlkLiIgfQoJCV0sCgkJImRlc2NyaXB0aW9uIjogIlRoaXMgb2JqZWN0IHJlcHJlc2VudHMgYSBy
ZWdpb24gdGhhdCBmbG93cyBmcm9tIGEgTmFtZWQgRmxvdy4iLAoJCSJoaWRkZW4iOiB0cnVlCgl9
LAoJewoJCSJpZCI6ICJOYW1lZEZsb3ciLAoJCSJ0eXBlIjogIm9iamVjdCIsCgkJInByb3BlcnRp
ZXMiOiBbCgkJCXsgIm5hbWUiOiAibm9kZUlkIiwgIiRyZWYiOiAiRE9NLk5vZGVJZCIsICJkZXNj
cmlwdGlvbiI6ICJUaGUgZG9jdW1lbnQgbm9kZSBpZC4iIH0sCgkJCXsgIm5hbWUiOiAibmFtZSIs
ICJ0eXBlIjogInN0cmluZyIsICJkZXNjcmlwdGlvbiI6ICJOYW1lZCBGbG93IGlkZW50aWZpZXIu
IiB9LAoJCQl7ICJuYW1lIjogIm92ZXJzZXQiLCAidHlwZSI6ICJib29sZWFuIiwgImRlc2NyaXB0
aW9uIjogIlRoZSBcIm92ZXJzZXRcIiBhdHRyaWJ1dGUgb2YgYSBOYW1lZCBGbG93LiIgfSwKCQkJ
eyAibmFtZSI6ICJjb250ZW50IiwgInR5cGUiOiAiYXJyYXkiLCAiaXRlbXMiOiB7ICIkcmVmIjog
IkRPTS5Ob2RlSWQiIH0sICJkZXNjcmlwdGlvbiI6ICJBbiBhcnJheSBvZiBub2RlcyB0aGF0IGZs
b3cgaW50byB0aGUgTmFtZWQgRmxvdy4iIH0sCgkJCXsgIm5hbWUiOiAicmVnaW9uQ2hhaW4iLCAi
dHlwZSI6ICJhcnJheSIsICJpdGVtcyI6IHsgIiRyZWYiOiAiUmVnaW9uIiB9LCAiZGVzY3JpcHRp
b24iOiAiQW4gYXJyYXkgb2YgcmVnaW9ucyBhc3NvY2lhdGVkIHdpdGggdGhlIE5hbWVkIEZsb3cu
IiB9CgkJXSwKCQkiZGVzY3JpcHRpb24iOiAiVGhpcyBvYmplY3QgcmVwcmVzZW50cyBhIE5hbWVk
IEZsb3cuIiwKCQkiaGlkZGVuIjogdHJ1ZQoJfQpdLAoiY29tbWFuZHMiOiBbCgl7CgkJIm5hbWUi
OiAiZ2V0TmFtZWRGbG93Q29sbGVjdGlvbiIsCiAgICAgICAgInBhcmFtZXRlcnMiOiBbCiAgICAg
ICAgICAgIHsgIm5hbWUiOiAibm9kZUlkIiwgIiRyZWYiOiAiRE9NLk5vZGVJZCIsICJkZXNjcmlw
dGlvbiI6ICJUaGUgZG9jdW1lbnQgbm9kZSBpZCBmb3Igd2hpY2ggdG8gZ2V0IHRoZSBOYW1lZCBG
bG93IENvbGxlY3Rpb24uIiB9CiAgICAgICAgXSwKCQkicmV0dXJucyI6IFsKCQkJeyAibmFtZSI6
ICJuYW1lZEZsb3dzIiwgInR5cGUiOiAiYXJyYXkiLCAiaXRlbXMiOiB7ICJ0eXBlIjogIk5hbWVk
RmxvdyIgfSwgImRlc2NyaXB0aW9uIjogIkFuIGFycmF5IGNvbnRhaW5pbmcgdGhlIE5hbWVkIEZs
b3dzIGluIHRoZSBkb2N1bWVudC4iIH0KCQldLAoJCSJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIHRo
ZSBOYW1lZCBGbG93cyBmcm9tIHRoZSBkb2N1bWVudC4iLAoJCSJoaWRkZW4iOiB0cnVlCgl9LAoJ
ewoJCSJuYW1lIjogImdldEZsb3dCeU5hbWUiLAoJCSJwYXJhbWV0ZXJzIjogWwoJCQl7ICJuYW1l
IjogIm5vZGVJZCIsICIkcmVmIjogIkRPTS5Ob2RlSWQiLCAiZGVzY3JpcHRpb24iOiAiVGhlIGRv
Y3VtZW50IG5vZGUgaWQuIiB9LAoJCQl7ICJuYW1lIjogIm5hbWUiLCAidHlwZSI6ICJzdHJpbmci
LCAiZGVzY3JpcHRpb24iOiAiTmFtZWQgRmxvdyBpZGVudGlmaWVyLiIgfQoJCV0sCgkJInJldHVy
bnMiOiBbCgkJCXsgIm5hbWUiOiAibmFtZWRGbG93IiwgIiRyZWYiOiAiTmFtZWRGbG93IiwgImRl
c2NyaXB0aW9uIjogIkEgTmFtZWQgRmxvdy4iIH0KCQldLAoJCSJkZXNjcmlwdGlvbiI6ICJSZXR1
cm5zIHRoZSBOYW1lZCBGbG93IGlkZW50aWZpZWQgYnkgdGhlIGdpdmVuIG5hbWUiLAoJCSJoaWRk
ZW4iOiB0cnVlCgl9Cl0sCiJldmVudHMiOiBbCgl7CgkJIm5hbWUiOiAibmFtZWRGbG93Q3JlYXRl
ZCIsCgkJInBhcmFtZXRlcnMiOiBbCgkJCXsgIm5hbWUiOiAibm9kZUlkIiwgIiRyZWYiOiAiRE9N
Lk5vZGVJZCIsICJkZXNjcmlwdGlvbiI6ICJUaGUgZG9jdW1lbnQgbm9kZSBpZC4iIH0sCgkJCXsg
Im5hbWUiOiAibmFtZWRGbG93IiwgInR5cGUiOiAic3RyaW5nIiwgImRlc2NyaXB0aW9uIjogIklk
ZW50aWZpZXIgb2YgdGhlIG5ldyBOYW1lZCBGbG93LiIgfQoJCV0sCgkJImRlc2NyaXB0aW9uIjog
IkZpcmVzIHdoZW4gYSBOYW1lZCBGbG93IGlzIGNyZWF0ZWQuIiwKCQkiaGlkZGVuIjogdHJ1ZQoJ
fSwKCXsKCQkibmFtZSI6ICJuYW1lZEZsb3dSZW1vdmVkIiwKCQkicGFyYW1ldGVycyI6IFsKCQkJ
eyAibmFtZSI6ICJub2RlSWQiLCAiJHJlZiI6ICJET00uTm9kZUlkIiwgImRlc2NyaXB0aW9uIjog
IlRoZSBkb2N1bWVudCBub2RlIGlkLiIgfSwKCQkJeyAibmFtZSI6ICJuYW1lZEZsb3ciLCAidHlw
ZSI6ICJzdHJpbmciLCAiZGVzY3JpcHRpb24iOiAiSWRlbnRpZmllciBvZiB0aGUgcmVtb3ZlZCBO
YW1lZCBGbG93LiIgfQoJCV0sCgkJImRlc2NyaXB0aW9uIjogIkZpcmVzIHdoZW4gYSBOYW1lZCBG
bG93IGlzIHJlbW92ZWQ6IGhhcyBubyBhc3NvY2lhdGVkIGNvbnRlbnQgbm9kZXMgYW5kIHJlZ2lv
bnMuIiwKCQkiaGlkZGVuIjogdHJ1ZQoJfSwKCXsKCQkibmFtZSI6ICJyZWdpb25MYXlvdXRVcGRh
dGUiLAoJCSJwYXJhbWV0ZXJzIjogWwoJCQl7ICJuYW1lIjogIm5vZGVJZCIsICIkcmVmIjogIkRP
TS5Ob2RlSWQiLCAiZGVzY3JpcHRpb24iOiAiVGhlIGRvY3VtZW50IG5vZGUgaWQuIiB9LAoJCQl7
ICJuYW1lIjogIm5hbWVkRmxvdyIsICJ0eXBlIjogInN0cmluZyIsICJkZXNjcmlwdGlvbiI6ICJJ
ZGVudGlmaWVyIG9mIHRoZSBOYW1lZCBGbG93IHdob3NlIGxheW91dCBtYXkgaGF2ZSBjaGFuZ2Vk
LiIgfQoJCV0sCgkJImRlc2NyaXB0aW9uIjogIkZpcmVzIHdoZW4gYSBOYW1lZCBGbG93J3MgbGF5
b3V0IG1heSBoYXZlIGNoYW5nZWQuIiwKCQkiaGlkZGVuIjogdHJ1ZQoJfQpd
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>154641</attachid>
            <date>2012-07-26 06:45:09 -0700</date>
            <delta_ts>2012-08-03 02:21:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch92089</filename>
            <type>text/plain</type>
            <size>21659</size>
            <attacher name="Andrei Poenaru">andreigpoenaru</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBlMWZiMTNhLi5kZDFjODJlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMDct
MjYgIEFuZHJlaSBQb2VuYXJ1ICA8cG9lbmFydUBhZG9iZS5jb20+CisKKyAgICAgICAgV2ViIElu
c3BlY3RvcjogUHJvdG9jb2wgRXh0ZW5zaW9uOiBSZWZhY3RvciBwcm90b2NvbCBleHRlbnNpb24g
Zm9yIENTUyBSZWdpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD05MjA4OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIENoYW5nZWQgdGhlIHRlc3QgdG8gdmFsaWRhdGUgdGhlIGNoYW5nZXMgbWFkZSB0byB0
aGUgcHJvdG9jb2wuCisKKyAgICAgICAgKiBpbnNwZWN0b3Ivc3R5bGVzL3Byb3RvY29sLWNzcy1y
ZWdpb25zLWNvbW1hbmRzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc3R5bGVz
L3Byb3RvY29sLWNzcy1yZWdpb25zLWNvbW1hbmRzLmh0bWw6CisKIDIwMTItMDctMjYgIE1pa2hh
aWwgUG96ZG55YWtvdiAgPG1pa2hhaWwucG96ZG55YWtvdkBpbnRlbC5jb20+CiAKICAgICAgICAg
W0VGTF0gR2FyZGVuaW5nIGFmdGVyIHIxMjM2OTYKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lu
c3BlY3Rvci9zdHlsZXMvcHJvdG9jb2wtY3NzLXJlZ2lvbnMtY29tbWFuZHMtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9wcm90b2NvbC1jc3MtcmVnaW9ucy1jb21t
YW5kcy1leHBlY3RlZC50eHQKaW5kZXggNGIwYzNlNy4uNjIxNzk1YiAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9wcm90b2NvbC1jc3MtcmVnaW9ucy1jb21tYW5kcy1l
eHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9wcm90b2NvbC1j
c3MtcmVnaW9ucy1jb21tYW5kcy1leHBlY3RlZC50eHQKQEAgLTUsMTUgKzUsMjIgQEAgZ2V0Rmxv
d0J5TmFtZSBCdWcgOTE4NTUKIAogCiBSdW5uaW5nOiB0ZXN0R2V0TmFtZWRGbG93Q29sbGVjdGlv
bgotPT09IENTUyBOYW1lZCBGbG93cyA9PT0KLWZsb3cxCi1mbG93MgotZmxvdzMKKz09PSBDU1Mg
TmFtZWQgRmxvd3MgaW4gbWFpbiBkb2N1bWVudCA9PT0KKyogTmFtZWQgRmxvdyAiZmxvdzEiCitD
b250ZW50IEVsZW1lbnRzOiAxCitSZWdpb25zOiAzCisqIE5hbWVkIEZsb3cgImZsb3cyIgorQ29u
dGVudCBFbGVtZW50czogMQorUmVnaW9uczogMgorKiBOYW1lZCBGbG93ICJmbG93MyIKK0NvbnRl
bnQgRWxlbWVudHM6IDEKK1JlZ2lvbnM6IDEKIAogUnVubmluZzogdGVzdEdldEZsb3dCeU5hbWUx
CiA9PT0gTmFtZWQgRmxvdyAiZmxvdzIiIGZyb20gbWFpbiBkb2N1bWVudCA9PT0KLW5hbWU6IGZs
b3cyCi1vdmVyc2V0OiBmYWxzZQorKiBOYW1lZCBGbG93ICJmbG93MiIKK0NvbnRlbnQgRWxlbWVu
dHM6IDEKK1JlZ2lvbnM6IDIKIAogUnVubmluZzogdGVzdEdldEZsb3dCeU5hbWUyCiA9PT0gTmFt
ZSBGbG93ICJmbG93NCIgZnJvbSBtYWluIGRvY3VtZW50ID09PQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9wcm90b2NvbC1jc3MtcmVnaW9ucy1jb21tYW5kcy5odG1s
IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9wcm90b2NvbC1jc3MtcmVnaW9ucy1jb21t
YW5kcy5odG1sCmluZGV4IDkzOTY2YTQuLjU5MDljZmEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9zdHlsZXMvcHJvdG9jb2wtY3NzLXJlZ2lvbnMtY29tbWFuZHMuaHRtbAorKysg
Yi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVzL3Byb3RvY29sLWNzcy1yZWdpb25zLWNvbW1h
bmRzLmh0bWwKQEAgLTMzLDcgKzMzLDcgQEAgZnVuY3Rpb24gdGVzdCgpCiAKICAgICAgICAgICAg
IGZ1bmN0aW9uIG5hbWVkRmxvd0NhbGxiYWNrKG5hbWVkRmxvd3MpCiAgICAgICAgICAgICB7Ci0g
ICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIj09PSBDU1MgTmFtZWQgRmxv
d3MgPT09Iik7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIj09PSBD
U1MgTmFtZWQgRmxvd3MgaW4gbWFpbiBkb2N1bWVudCA9PT0iKTsKIAogICAgICAgICAgICAgICAg
IGlmICghbmFtZWRGbG93cykgewogICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFk
ZFJlc3VsdCgiWyFdIEZhaWxlZCB0byBnZXQgTmFtZWQgRmxvd3MiKTsKQEAgLTQxLDEwICs0MSwx
MiBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAgIG5hbWVkRmxvd3Muc29ydCgpOworICAgICAg
ICAgICAgICAgIG5hbWVkRmxvd3Muc29ydChmdW5jdGlvbiAobmYxLCBuZjIpIHsKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuICgobmYxLm5hbWUgPT0gbmYyLm5hbWUpID8gMCA6ICgobmYxLm5h
bWUgPiBuZjIubmFtZSkgPyAxIDogLTEpKTsKKyAgICAgICAgICAgICAgICB9KTsKIAogICAgICAg
ICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbmFtZWRGbG93cy5sZW5ndGg7ICsraSkKLSAg
ICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQobmFtZWRGbG93c1tpXSk7
CisgICAgICAgICAgICAgICAgICAgIHByaW50TmFtZWRGbG93KG5hbWVkRmxvd3NbaV0pOwogCiAg
ICAgICAgICAgICAgICAgbmV4dCgpOwogICAgICAgICAgICAgfQpAQCAtNjksOCArNzEsNyBAQCBm
dW5jdGlvbiB0ZXN0KCkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAg
ICAgIH0KIAotICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJuYW1lOiAi
ICsgbmFtZWRGbG93Lm5hbWUpOwotICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVz
dWx0KCJvdmVyc2V0OiAiICsgbmFtZWRGbG93Lm92ZXJzZXQpOworICAgICAgICAgICAgICAgIHBy
aW50TmFtZWRGbG93KG5hbWVkRmxvdyk7CiAKICAgICAgICAgICAgICAgICBuZXh0KCk7CiAgICAg
ICAgICAgICB9CkBAIC0xMDAsNiArMTAxLDEzIEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICAg
ICAgfQogICAgICAgICB9LAogICAgIF0pOworCisgICAgZnVuY3Rpb24gcHJpbnROYW1lZEZsb3co
bmFtZWRGbG93KQorICAgIHsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIiogTmFt
ZWQgRmxvdyBcIiIgKyBuYW1lZEZsb3cubmFtZSArICJcIiIpOworICAgICAgICBJbnNwZWN0b3JU
ZXN0LmFkZFJlc3VsdCgiQ29udGVudCBFbGVtZW50czogIiArIG5hbWVkRmxvdy5jb250ZW50Lmxl
bmd0aCk7CisgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJSZWdpb25zOiAiICsgbmFt
ZWRGbG93LnJlZ2lvbnMubGVuZ3RoKTsKKyAgICB9CiB9CiA8L3NjcmlwdD4KIDwvaGVhZD4KQEAg
LTExNSw5ICsxMjMsMTIgQEAgVGVzdHMgdGhlIGZvbGxvd2luZyBjb21tYW5kczoKIAogPGFydGlj
bGUgc3R5bGU9Ii13ZWJraXQtZmxvdy1pbnRvOiBmbG93MSI+PC9hcnRpY2xlPgogPGRpdiBzdHls
ZT0iLXdlYmtpdC1mbG93LWZyb206IGZsb3cxIj48L2Rpdj4KKzxkaXYgc3R5bGU9Ii13ZWJraXQt
Zmxvdy1mcm9tOiBmbG93MSI+PC9kaXY+Cis8ZGl2IHN0eWxlPSItd2Via2l0LWZsb3ctZnJvbTog
ZmxvdzEiPjwvZGl2PgogCiA8YXJ0aWNsZSBzdHlsZT0iLXdlYmtpdC1mbG93LWludG86IGZsb3cy
Ij48L2FydGljbGU+CiA8ZGl2IHN0eWxlPSItd2Via2l0LWZsb3ctZnJvbTogZmxvdzIiPjwvZGl2
PgorPGRpdiBzdHlsZT0iLXdlYmtpdC1mbG93LWZyb206IGZsb3cyIj48L2Rpdj4KIAogPGFydGlj
bGUgc3R5bGU9Ii13ZWJraXQtZmxvdy1pbnRvOiBmbG93MyI+PC9hcnRpY2xlPgogPGRpdiBzdHls
ZT0iLXdlYmtpdC1mbG93LWZyb206IGZsb3czIj48L2Rpdj4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA4NmZjNzhh
Li43MWE2NmQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDkgQEAKKzIwMTItMDctMjYgIEFuZHJl
aSBQb2VuYXJ1ICA8cG9lbmFydUBhZG9iZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3Rvcjog
UHJvdG9jb2wgRXh0ZW5zaW9uOiBSZWZhY3RvciBwcm90b2NvbCBleHRlbnNpb24gZm9yIENTUyBS
ZWdpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05
MjA4OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIElt
cGxlbWVudGVkIGEgdGVtcG9yYXJ5IGZ1bmN0aW9uIChXZWJLaXROYW1lZEZsb3c6OnRlbXBHZXRS
ZWdpb25zKSBiZWNhdXNlIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiAiV2ViS2l0TmFtZUZsb3c6Omdl
dFJlZ2lvbnMiIGlzIGluIHByb2dyZXNzLgorICAgICAgICAKKyAgICAgICAgUmVwbGFjZWQgIldl
YktpdE5hbWVkRmxvd0NvbGxlY3Rpb246Om5hbWVkRmxvd3NOYW1lcyIgd2l0aCAiV2ViS2l0TmFt
ZWRGbG93Q29sbGVjdGlvbjo6bmFtZWRGbG93cyIgdG8gcmV0dXJuIGEgVmVjdG9yIG9mICJXZWJL
aXROYW1lZEZsb3cicywKKyAgICAgICAgaW5zdGVhZCBvZiBhIFZlY3RvciBvZiBTdHJpbmdzLgor
CisgICAgICAgIEFkZGVkIHRoZSAiUmVnaW9uIiB0eXBlIHRvIEluc3BlY3Rvci5qc29uLgorICAg
ICAgICBDaGFuZ2VkIHRoZSAiTmFtZWRGbG93IiB0eXBlIGFuZCB0aGUgImdldE5hbWVkRmxvd0Nv
bGxlY3Rpb24iIGZ1bmN0aW9uIGluIEluc3BlY3Rvci5qc29uLgorCisgICAgICAgIEltcGxlbWVu
dGVkICJJbnNwZWN0b3JDU1NBZ2VudDo6YnVpbGRPYmplY3RGb3JOYW1lZEZsb3ciLgorCisgICAg
ICAgIENoYW5nZWQgIkluc3BlY3RvckRPTUFnZW50OjpwdXNoTm9kZVBhdGhUb0Zyb250ZW5kIiBm
cm9tIHByaXZhdGUgdG8gcHVibGljIGJlY2F1c2UgSSBuZWVkZWQgYSB3YXkgdG8gZ2V0IHRoZSBO
b2RlSWRzIGZvciBjb250ZW50IGVsZW1lbnRzIGFuZAorICAgICAgICBmb3IgcmVnaW9ucy4KKwor
ICAgICAgICBNb2RpZmllZCBleGlzdGluZyB0ZXN0OiBpbnNwZWN0b3Ivc3R5bGVzL3Byb3RvY29s
LWNzcy1yZWdpb25zLWNvbW1hbmRzLmh0bWwKKworICAgICAgICAqIGRvbS9XZWJLaXROYW1lZEZs
b3cuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXROYW1l
ZEZsb3c6OnRlbXBHZXRSZWdpb25zKToKKyAgICAgICAgKiBkb20vV2ViS2l0TmFtZWRGbG93Lmg6
CisgICAgICAgIChXZWJLaXROYW1lZEZsb3cpOgorICAgICAgICAqIGRvbS9XZWJLaXROYW1lZEZs
b3dDb2xsZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdE5hbWVkRmxvd0NvbGxl
Y3Rpb246Om5hbWVkRmxvd3MpOgorICAgICAgICAqIGRvbS9XZWJLaXROYW1lZEZsb3dDb2xsZWN0
aW9uLmg6CisgICAgICAgIChXZWJLaXROYW1lZEZsb3dDb2xsZWN0aW9uKToKKyAgICAgICAgKiBp
bnNwZWN0b3IvSW5zcGVjdG9yLmpzb246CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNT
U0FnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50OjpnZXROYW1l
ZEZsb3dDb2xsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50Ojpn
ZXRGbG93QnlOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50OjpidWls
ZE9iamVjdEZvck5hbWVkRmxvdyk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBpbnNw
ZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuaDoKKyAgICAgICAgKEluc3BlY3RvckNTU0FnZW50KToK
KyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaDoKKyAgICAgICAgKEluc3Bl
Y3RvckRPTUFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0NTU1N0eWxlTW9k
ZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTU3R5bGVNb2RlbC5wcm90b3R5cGUuZ2V0
TmFtZWRGbG93Q29sbGVjdGlvbkFzeW5jKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OYW1lZEZs
b3cpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5hbWVkRmxvdy5wYXJzZVBheWxvYWRBcnJheSk6
CisKIDIwMTItMDctMjYgIENoYXJsZXMgV2VpICA8Y2hhcmxlcy53ZWlAdG9yY2htb2JpbGUuY29t
LmNuPgogCiAgICAgICAgIFJlbW92ZSByZWR1bmRhbnQgaW5jbHVkZSBvZiBQYWdlR3JvdXAuaCBp
biBGcmFtZUxvYWRlci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9XZWJLaXRO
YW1lZEZsb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1dlYktpdE5hbWVkRmxvdy5jcHAKaW5k
ZXggN2EwN2ZiYS4uYTk4NjhkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1dlYktp
dE5hbWVkRmxvdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1dlYktpdE5hbWVkRmxvdy5j
cHAKQEAgLTk1LDYgKzk1LDE5IEBAIGludCBXZWJLaXROYW1lZEZsb3c6OmZpcnN0RW1wdHlSZWdp
b25JbmRleCgpIGNvbnN0CiAgICAgcmV0dXJuIC0xOwogfQogCisvLyBGSVhNRTogVGVtcG9yYXJ5
IGltcGxlbWVudGF0aW9uLgorLy8gVXNlZCBieSAiSW5zcGVjdG9yQ1NTQWdlbnQiCitjb25zdCBS
ZW5kZXJSZWdpb25MaXN0KiBXZWJLaXROYW1lZEZsb3c6OnRlbXBHZXRSZWdpb25zKCkKK3sKKyAg
ICBpZiAobV9mbG93TWFuYWdlci0+ZG9jdW1lbnQoKSkKKyAgICAgICAgbV9mbG93TWFuYWdlci0+
ZG9jdW1lbnQoKS0+dXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7CisKKyAg
ICBpZiAoIW1fcGFyZW50Rmxvd1RocmVhZCkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICByZXR1
cm4gJihtX3BhcmVudEZsb3dUaHJlYWQtPnJlbmRlclJlZ2lvbkxpc3QoKSk7Cit9CisKIFBhc3NS
ZWZQdHI8Tm9kZUxpc3Q+IFdlYktpdE5hbWVkRmxvdzo6Z2V0UmVnaW9uc0J5Q29udGVudChOb2Rl
KiBjb250ZW50Tm9kZSkKIHsKICAgICBWZWN0b3I8UmVmUHRyPE5vZGU+ID4gcmVnaW9uTm9kZXM7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vV2ViS2l0TmFtZWRGbG93LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vV2ViS2l0TmFtZWRGbG93LmgKaW5kZXggNWEzOWU4ZC4uNzJkZDFjZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1dlYktpdE5hbWVkRmxvdy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9XZWJLaXROYW1lZEZsb3cuaApAQCAtMzEsNiArMzEsNyBAQAogI2Rl
ZmluZSBXZWJLaXROYW1lZEZsb3dfaAogCiAjaW5jbHVkZSA8Tm9kZS5oPgorI2luY2x1ZGUgPFJl
bmRlckZsb3dUaHJlYWQuaD4gLy8gZm9yICJ0ZW1wR2V0UmVnaW9ucyIgZGVmaW5pdGlvbgogI2lu
Y2x1ZGUgPHd0Zi9MaXN0SGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAj
aW5jbHVkZSA8d3RmL1JlZlB0ci5oPgpAQCAtNTAsNiArNTEsNyBAQCBwdWJsaWM6CiAgICAgY29u
c3QgQXRvbWljU3RyaW5nJiBuYW1lKCkgY29uc3Q7CiAgICAgYm9vbCBvdmVyc2V0KCkgY29uc3Q7
CiAgICAgaW50IGZpcnN0RW1wdHlSZWdpb25JbmRleCgpIGNvbnN0OworICAgIGNvbnN0IFJlbmRl
clJlZ2lvbkxpc3QqIHRlbXBHZXRSZWdpb25zKCk7CiAgICAgUGFzc1JlZlB0cjxOb2RlTGlzdD4g
Z2V0UmVnaW9uc0J5Q29udGVudChOb2RlKik7CiAgICAgUGFzc1JlZlB0cjxOb2RlTGlzdD4gZ2V0
Q29udGVudCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vV2ViS2l0TmFtZWRG
bG93Q29sbGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vV2ViS2l0TmFtZWRGbG93Q29s
bGVjdGlvbi5jcHAKaW5kZXggYzUwZTA1Ny4uNmNhNTBlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL1dlYktpdE5hbWVkRmxvd0NvbGxlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9XZWJLaXROYW1lZEZsb3dDb2xsZWN0aW9uLmNwcApAQCAtNDMsMTUgKzQzLDE1IEBA
IFdlYktpdE5hbWVkRmxvd0NvbGxlY3Rpb246OldlYktpdE5hbWVkRmxvd0NvbGxlY3Rpb24oRG9j
dW1lbnQqIGRvYykKIHsKIH0KIAotVmVjdG9yPFN0cmluZz4gV2ViS2l0TmFtZWRGbG93Q29sbGVj
dGlvbjo6bmFtZWRGbG93c05hbWVzKCkKK1ZlY3RvcjxSZWZQdHI8V2ViS2l0TmFtZWRGbG93PiA+
IFdlYktpdE5hbWVkRmxvd0NvbGxlY3Rpb246Om5hbWVkRmxvd3MoKQogewotICAgIFZlY3RvcjxT
dHJpbmc+IG5hbWVkRmxvd3M7CisgICAgVmVjdG9yPFJlZlB0cjxXZWJLaXROYW1lZEZsb3c+ID4g
bmFtZWRGbG93czsKIAogICAgIGZvciAoTmFtZWRGbG93U2V0OjppdGVyYXRvciBpdCA9IG1fbmFt
ZWRGbG93cy5iZWdpbigpOyBpdCAhPSBtX25hbWVkRmxvd3MuZW5kKCk7ICsraXQpIHsKICAgICAg
ICAgaWYgKCgqaXQpLT5mbG93U3RhdGUoKSA9PSBXZWJLaXROYW1lZEZsb3c6OkZsb3dTdGF0ZU51
bGwpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBuYW1lZEZsb3dzLmFwcGVuZCgo
Kml0KS0+bmFtZSgpLnN0cmluZygpKTsKKyAgICAgICAgbmFtZWRGbG93cy5hcHBlbmQoUmVmUHRy
PFdlYktpdE5hbWVkRmxvdz4oKml0KSk7CiAgICAgfQogCiAgICAgcmV0dXJuIG5hbWVkRmxvd3M7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vV2ViS2l0TmFtZWRGbG93Q29sbGVjdGlv
bi5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1dlYktpdE5hbWVkRmxvd0NvbGxlY3Rpb24uaAppbmRl
eCA2Nzg3OGE3Li5iZjAxZDRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vV2ViS2l0
TmFtZWRGbG93Q29sbGVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9XZWJLaXROYW1l
ZEZsb3dDb2xsZWN0aW9uLmgKQEAgLTQ1LDcgKzQ1LDcgQEAgY2xhc3MgV2ViS2l0TmFtZWRGbG93
Q29sbGVjdGlvbiA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYktpdE5hbWVkRmxvd0NvbGxlY3Rpb24+
IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJLaXROYW1lZEZsb3dDb2xsZWN0
aW9uPiBjcmVhdGUoRG9jdW1lbnQqIGRvYykgeyByZXR1cm4gYWRvcHRSZWYobmV3IFdlYktpdE5h
bWVkRmxvd0NvbGxlY3Rpb24oZG9jKSk7IH0KIAotICAgIFZlY3RvcjxTdHJpbmc+IG5hbWVkRmxv
d3NOYW1lcygpOworICAgIFZlY3RvcjxSZWZQdHI8V2ViS2l0TmFtZWRGbG93PiA+IG5hbWVkRmxv
d3MoKTsKICAgICBXZWJLaXROYW1lZEZsb3cqIGZsb3dCeU5hbWUoY29uc3QgU3RyaW5nJik7CiAg
ICAgUGFzc1JlZlB0cjxXZWJLaXROYW1lZEZsb3c+IGVuc3VyZUZsb3dXaXRoTmFtZShjb25zdCBT
dHJpbmcmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ci5qc29uIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uCmluZGV4IDg4
ZThmM2IuLjI2M2Q5OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3IuanNvbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24K
QEAgLTIxNjAsMTIgKzIxNjAsMjQgQEAKICAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgICB9
LAogICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICJpZCI6ICJSZWdpb24iLAorICAgICAg
ICAgICAgICAgICJ0eXBlIjogIm9iamVjdCIsCisgICAgICAgICAgICAgICAgInByb3BlcnRpZXMi
OiBbCisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicmVnaW9uT3ZlcnNldCIsICJ0eXBl
IjogInN0cmluZyIsICJlbnVtIjogWyJvdmVyc2V0IiwgImZpdCIsICJlbXB0eSJdLCAiZGVzY3Jp
cHRpb24iOiAiVGhlIFwib3ZlcnNldFwiIGF0dHJpYnV0ZSBvZiBhIE5hbWVkIEZsb3cuIiB9LAor
ICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogIm5vZGVJZCIsICIkcmVmIjogIkRPTS5Ob2Rl
SWQiLCAiZGVzY3JpcHRpb24iOiAiVGhlIGNvcnJlc3BvbmRpbmcgRE9NIG5vZGUgaWQuIiB9Cisg
ICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiVGhpcyBv
YmplY3QgcmVwcmVzZW50cyBhIHJlZ2lvbiB0aGF0IGZsb3dzIGZyb20gYSBOYW1lZCBGbG93LiIs
CisgICAgICAgICAgICAgICAgImhpZGRlbiI6IHRydWUKKyAgICAgICAgICAgIH0sCisgICAgICAg
ICAgICB7CiAgICAgICAgICAgICAgICAgImlkIjogIk5hbWVkRmxvdyIsCiAgICAgICAgICAgICAg
ICAgInR5cGUiOiAib2JqZWN0IiwKICAgICAgICAgICAgICAgICAicHJvcGVydGllcyI6IFsKICAg
ICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJub2RlSWQiLCAiJHJlZiI6ICJET00uTm9kZUlk
IiwgImRlc2NyaXB0aW9uIjogIlRoZSBkb2N1bWVudCBub2RlIGlkLiIgfSwKICAgICAgICAgICAg
ICAgICAgICAgeyAibmFtZSI6ICJuYW1lIiwgInR5cGUiOiAic3RyaW5nIiwgImRlc2NyaXB0aW9u
IjogIk5hbWVkIEZsb3cgaWRlbnRpZmllci4iIH0sCi0gICAgICAgICAgICAgICAgICAgIHsgIm5h
bWUiOiAib3ZlcnNldCIsICJ0eXBlIjogImJvb2xlYW4iLCAiZGVzY3JpcHRpb24iOiAiVGhlIFwi
b3ZlcnNldFwiIGF0dHJpYnV0ZSBvZiBhIE5hbWVkIEZsb3cuIiB9CisgICAgICAgICAgICAgICAg
ICAgIHsgIm5hbWUiOiAib3ZlcnNldCIsICJ0eXBlIjogImJvb2xlYW4iLCAiZGVzY3JpcHRpb24i
OiAiVGhlIFwib3ZlcnNldFwiIGF0dHJpYnV0ZSBvZiBhIE5hbWVkIEZsb3cuIiB9LAorICAgICAg
ICAgICAgICAgICAgICB7ICJuYW1lIjogImNvbnRlbnQiLCAidHlwZSI6ICJhcnJheSIsICJpdGVt
cyI6IHsgIiRyZWYiOiAiRE9NLk5vZGVJZCIgfSwgImRlc2NyaXB0aW9uIjogIkFuIGFycmF5IG9m
IG5vZGVzIHRoYXQgZmxvdyBpbnRvIHRoZSBOYW1lZCBGbG93LiIgfSwKKyAgICAgICAgICAgICAg
ICAgICAgeyAibmFtZSI6ICJyZWdpb25zIiwgInR5cGUiOiAiYXJyYXkiLCAiaXRlbXMiOiB7ICIk
cmVmIjogIlJlZ2lvbiIgfSwgImRlc2NyaXB0aW9uIjogIkFuIGFycmF5IG9mIHJlZ2lvbnMgYXNz
b2NpYXRlZCB3aXRoIHRoZSBOYW1lZCBGbG93LiIgfQogICAgICAgICAgICAgICAgIF0sCiAgICAg
ICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlRoaXMgb2JqZWN0IHJlcHJlc2VudHMgYSBOYW1l
ZCBGbG93LiIsCiAgICAgICAgICAgICAgICAgImhpZGRlbiI6IHRydWUKQEAgLTIzMjEsNyArMjMz
Myw3IEBACiAgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAibm9kZUlkIiwgIiRyZWYiOiAi
RE9NLk5vZGVJZCIsICJkZXNjcmlwdGlvbiI6ICJUaGUgZG9jdW1lbnQgbm9kZSBpZCBmb3Igd2hp
Y2ggdG8gZ2V0IHRoZSBOYW1lZCBGbG93IENvbGxlY3Rpb24uIiB9CiAgICAgICAgICAgICAgICAg
XSwKICAgICAgICAgICAgICAgICAicmV0dXJucyI6IFsKLSAgICAgICAgICAgICAgICAgICAgeyAi
bmFtZSI6ICJuYW1lZEZsb3dzIiwgInR5cGUiOiAiYXJyYXkiLCAiaXRlbXMiOiB7ICJ0eXBlIjog
InN0cmluZyIgfSwgImRlc2NyaXB0aW9uIjogIkFuIGFycmF5IGNvbnRhaW5pbmcgdGhlIE5hbWVk
IEZsb3dzIGluIHRoZSBkb2N1bWVudC4iIH0KKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6
ICJuYW1lZEZsb3dzIiwgInR5cGUiOiAiYXJyYXkiLCAiaXRlbXMiOiB7ICIkcmVmIjogIk5hbWVk
RmxvdyIgfSwgImRlc2NyaXB0aW9uIjogIkFuIGFycmF5IGNvbnRhaW5pbmcgdGhlIE5hbWVkIEZs
b3dzIGluIHRoZSBkb2N1bWVudC4iIH0KICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAg
ICAgICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIHRoZSBOYW1lZCBGbG93cyBmcm9tIHRoZSBkb2N1
bWVudC4iLAogICAgICAgICAgICAgICAgICJoaWRkZW4iOiB0cnVlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcAppbmRleCA0ZGIyN2I2Li4xYjZlNTMw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAK
QEAgLTU1LDYgKzU1LDggQEAKICNpbmNsdWRlICJXZWJLaXROYW1lZEZsb3cuaCIKICNpbmNsdWRl
ICJXZWJLaXROYW1lZEZsb3dDb2xsZWN0aW9uLmgiCiAKKyNpbmNsdWRlIDxSZW5kZXJSZWdpb24u
aD4gLy8gbWlnaHQgYmUgdGVtcG9yYXJ5IGluY2x1ZGU6IHVzZWQgYnkgImJ1aWxkT2JqZWN0Rm9y
TmFtZWRGbG93IgorCiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAjaW5jbHVkZSA8d3Rm
L0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CkBAIC04MDUsMTcgKzgwNywxNyBA
QCB2b2lkIEluc3BlY3RvckNTU0FnZW50OjpnZXRTdXBwb3J0ZWRDU1NQcm9wZXJ0aWVzKEVycm9y
U3RyaW5nKiwgUmVmUHRyPFR5cGVCdWlsZAogICAgIGNzc1Byb3BlcnRpZXMgPSBwcm9wZXJ0aWVz
LnJlbGVhc2UoKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0TmFtZWRGbG93Q29s
bGVjdGlvbihFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGludCBub2RlSWQsIFJlZlB0cjxUeXBl
QnVpbGRlcjo6QXJyYXk8U3RyaW5nPiA+JiByZXN1bHQpCit2b2lkIEluc3BlY3RvckNTU0FnZW50
OjpnZXROYW1lZEZsb3dDb2xsZWN0aW9uKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgaW50IG5v
ZGVJZCwgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6Q1NTOjpOYW1lZEZs
b3c+ID4mIHJlc3VsdCkKIHsKICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBtX2RvbUFnZW50LT5h
c3NlcnREb2N1bWVudChlcnJvclN0cmluZywgbm9kZUlkKTsKICAgICBpZiAoIWRvY3VtZW50KQog
ICAgICAgICByZXR1cm47CiAKLSAgICBWZWN0b3I8U3RyaW5nPiBuYW1lZEZsb3dzVmVjdG9yID0g
ZG9jdW1lbnQtPm5hbWVkRmxvd3MoKS0+bmFtZWRGbG93c05hbWVzKCk7Ci0gICAgUmVmUHRyPFR5
cGVCdWlsZGVyOjpBcnJheTxTdHJpbmc+ID4gbmFtZWRGbG93cyA9IFR5cGVCdWlsZGVyOjpBcnJh
eTxTdHJpbmc+OjpjcmVhdGUoKTsKKyAgICBWZWN0b3I8UmVmUHRyPFdlYktpdE5hbWVkRmxvdz4g
PiBuYW1lZEZsb3dzVmVjdG9yID0gZG9jdW1lbnQtPm5hbWVkRmxvd3MoKS0+bmFtZWRGbG93cygp
OworICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkNTUzo6TmFtZWRG
bG93PiA+IG5hbWVkRmxvd3MgPSBUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkNTUzo6
TmFtZWRGbG93Pjo6Y3JlYXRlKCk7CiAKLSAgICBmb3IgKFZlY3RvcjxTdHJpbmc+OjppdGVyYXRv
ciBpdCA9IG5hbWVkRmxvd3NWZWN0b3IuYmVnaW4oKTsgaXQgIT0gbmFtZWRGbG93c1ZlY3Rvci5l
bmQoKTsgKytpdCkKLSAgICAgICAgbmFtZWRGbG93cy0+YWRkSXRlbSgqaXQpOworICAgIGZvciAo
VmVjdG9yPFJlZlB0cjxXZWJLaXROYW1lZEZsb3c+ID46Oml0ZXJhdG9yIGl0ID0gbmFtZWRGbG93
c1ZlY3Rvci5iZWdpbigpOyBpdCAhPSBuYW1lZEZsb3dzVmVjdG9yLmVuZCgpOyArK2l0KQorICAg
ICAgICBuYW1lZEZsb3dzLT5hZGRJdGVtKGJ1aWxkT2JqZWN0Rm9yTmFtZWRGbG93KCppdCwgbm9k
ZUlkKSk7CiAKICAgICByZXN1bHQgPSBuYW1lZEZsb3dzLnJlbGVhc2UoKTsKIH0KQEAgLTgyNiwx
NiArODI4LDE0IEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmdldEZsb3dCeU5hbWUoRXJyb3JT
dHJpbmcqIGVycm9yU3RyaW5nLCBpbnQgbm9kZUlkLCBjb25zCiAgICAgaWYgKCFkb2N1bWVudCkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgV2ViS2l0TmFtZWRGbG93KiBuYW1lZEZsb3cgPSBkb2N1
bWVudC0+bmFtZWRGbG93cygpLT5mbG93QnlOYW1lKGZsb3dOYW1lKTsKLSAgICBpZiAoIW5hbWVk
RmxvdykgeworICAgIFdlYktpdE5hbWVkRmxvdyogd2ViS2l0TmFtZWRGbG93ID0gZG9jdW1lbnQt
Pm5hbWVkRmxvd3MoKS0+Zmxvd0J5TmFtZShmbG93TmFtZSk7CisgICAgaWYgKCF3ZWJLaXROYW1l
ZEZsb3cpIHsKICAgICAgICAgKmVycm9yU3RyaW5nID0gIk5vIHRhcmdldCBDU1MgTmFtZWQgRmxv
dyBmb3VuZCI7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICByZXN1bHQgPSBUeXBlQnVp
bGRlcjo6Q1NTOjpOYW1lZEZsb3c6OmNyZWF0ZSgpCi0gICAgICAgIC5zZXROb2RlSWQobm9kZUlk
KQotICAgICAgICAuc2V0TmFtZShmbG93TmFtZSkKLSAgICAgICAgLnNldE92ZXJzZXQobmFtZWRG
bG93LT5vdmVyc2V0KCkpOworICAgIFJlZlB0cjxXZWJLaXROYW1lZEZsb3c+IHJlZldlYktpdE5h
bWVkRmxvdyh3ZWJLaXROYW1lZEZsb3cpOworICAgIHJlc3VsdCA9IGJ1aWxkT2JqZWN0Rm9yTmFt
ZWRGbG93KHJlZldlYktpdE5hbWVkRmxvdywgbm9kZUlkKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JD
U1NBZ2VudDo6c3RhcnRTZWxlY3RvclByb2ZpbGVyKEVycm9yU3RyaW5nKikKQEAgLTEwNTEsNiAr
MTA1MSw1OCBAQCBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlPiBJbnNwZWN0
b3JDU1NBZ2VudDo6YnVpbGRPYmplY3RGb3JBdHRyaWJ1dAogICAgIHJldHVybiBpbnNwZWN0b3JT
dHlsZS0+YnVpbGRPYmplY3RGb3JTdHlsZSgpOwogfQogCitQYXNzUmVmUHRyPFR5cGVCdWlsZGVy
OjpDU1M6Ok5hbWVkRmxvdz4gSW5zcGVjdG9yQ1NTQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yTmFtZWRG
bG93KFJlZlB0cjxXZWJLaXROYW1lZEZsb3c+JiB3ZWJLaXROYW1lZEZsb3csIGludCBkb2N1bWVu
dE5vZGVJZCkKK3sKKyAgICBSZWZQdHI8Tm9kZUxpc3Q+IGNvbnRlbnRMaXN0ID0gd2ViS2l0TmFt
ZWRGbG93LT5nZXRDb250ZW50KCk7CisgICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxpbnQ+
ID4gY29udGVudCA9IFR5cGVCdWlsZGVyOjpBcnJheTxpbnQ+OjpjcmVhdGUoKTsKKworICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBjb250ZW50TGlzdC0+bGVuZ3RoKCk7ICsraSkKKyAgICAg
ICAgY29udGVudC0+YWRkSXRlbShtX2RvbUFnZW50LT5wdXNoTm9kZVBhdGhUb0Zyb250ZW5kKGNv
bnRlbnRMaXN0LT5pdGVtKGkpKSk7CisKKyAgICAvLyBGSVhNRTogU2hvdWxkIGJlIHJlaW1wbGVt
ZW50ZWQgd2hlbiBXZWJLaXROYW1lZEZsb3c6OmdldFJlZ2lvbnMgd2lsbCBiZSBhdmFpbGFibGUK
KyAgICBjb25zdCBSZW5kZXJSZWdpb25MaXN0KiByZWdpb25MaXN0ID0gd2ViS2l0TmFtZWRGbG93
LT50ZW1wR2V0UmVnaW9ucygpOworICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1
aWxkZXI6OkNTUzo6UmVnaW9uPiA+IHJlZ2lvbnMgPSBUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1
aWxkZXI6OkNTUzo6UmVnaW9uPjo6Y3JlYXRlKCk7CisKKyAgICBpZiAocmVnaW9uTGlzdCkKKyAg
ICAgICAgZm9yIChSZW5kZXJSZWdpb25MaXN0Ojpjb25zdF9pdGVyYXRvciBpdCA9IHJlZ2lvbkxp
c3QtPmJlZ2luKCk7IGl0ICE9IHJlZ2lvbkxpc3QtPmVuZCgpOyArK2l0KSB7CisgICAgICAgICAg
ICBjb25zdCBSZW5kZXJSZWdpb24qIHJlbmRlclJlZ2lvbiA9ICppdDsKKyAgICAgICAgICAgIGlm
ICghcmVuZGVyUmVnaW9uLT5pc1ZhbGlkKCkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisK
KyAgICAgICAgICAgIFJlbmRlclJlZ2lvbjo6UmVnaW9uU3RhdGUgcmVnaW9uU3RhdGUgPSByZW5k
ZXJSZWdpb24tPnJlZ2lvblN0YXRlKCk7CisgICAgICAgICAgICBUeXBlQnVpbGRlcjo6Q1NTOjpS
ZWdpb246OlJlZ2lvbk92ZXJzZXQ6OkVudW0gcmVnaW9uT3ZlcnNldDsKKworICAgICAgICAgICAg
c3dpdGNoIChyZWdpb25TdGF0ZSkgeworICAgICAgICAgICAgY2FzZSBSZW5kZXJSZWdpb246OlJl
Z2lvbkVtcHR5OgorICAgICAgICAgICAgICAgIHJlZ2lvbk92ZXJzZXQgPSBUeXBlQnVpbGRlcjo6
Q1NTOjpSZWdpb246OlJlZ2lvbk92ZXJzZXQ6OkVtcHR5OworICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgY2FzZSBSZW5kZXJSZWdpb246OlJlZ2lvbkZpdDoKKyAgICAgICAgICAg
ICAgICByZWdpb25PdmVyc2V0ID0gVHlwZUJ1aWxkZXI6OkNTUzo6UmVnaW9uOjpSZWdpb25PdmVy
c2V0OjpGaXQ7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIFJlbmRl
clJlZ2lvbjo6UmVnaW9uT3ZlcmZsb3c6CisgICAgICAgICAgICAgICAgcmVnaW9uT3ZlcnNldCA9
IFR5cGVCdWlsZGVyOjpDU1M6OlJlZ2lvbjo6UmVnaW9uT3ZlcnNldDo6T3ZlcnNldDsKKyAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAg
Y29udGludWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIFJlZlB0cjxUeXBlQnVpbGRl
cjo6Q1NTOjpSZWdpb24+IHJlZ2lvbiA9IFR5cGVCdWlsZGVyOjpDU1M6OlJlZ2lvbjo6Y3JlYXRl
KCkKKyAgICAgICAgICAgICAgICAuc2V0UmVnaW9uT3ZlcnNldChyZWdpb25PdmVyc2V0KQorICAg
ICAgICAgICAgICAgIC5zZXROb2RlSWQobV9kb21BZ2VudC0+cHVzaE5vZGVQYXRoVG9Gcm9udGVu
ZChyZW5kZXJSZWdpb24tPm5vZGUoKSkpOworCisgICAgICAgICAgICByZWdpb25zLT5hZGRJdGVt
KHJlZ2lvbik7CisgICAgICAgIH0KKworICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpOYW1l
ZEZsb3c+IG5hbWVkRmxvdyA9IFR5cGVCdWlsZGVyOjpDU1M6Ok5hbWVkRmxvdzo6Y3JlYXRlKCkK
KyAgICAgICAgLnNldE5vZGVJZChkb2N1bWVudE5vZGVJZCkKKyAgICAgICAgLnNldE5hbWUod2Vi
S2l0TmFtZWRGbG93LT5uYW1lKCkuc3RyaW5nKCkpCisgICAgICAgIC5zZXRPdmVyc2V0KHdlYktp
dE5hbWVkRmxvdy0+b3ZlcnNldCgpKQorICAgICAgICAuc2V0Q29udGVudChjb250ZW50KQorICAg
ICAgICAuc2V0UmVnaW9ucyhyZWdpb25zKTsKKworICAgIHJldHVybiBuYW1lZEZsb3cucmVsZWFz
ZSgpOworfQorCiB2b2lkIEluc3BlY3RvckNTU0FnZW50OjpkaWRSZW1vdmVEb2N1bWVudChEb2N1
bWVudCogZG9jdW1lbnQpCiB7CiAgICAgaWYgKGRvY3VtZW50KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuaAppbmRleCA3NmQ4Nzc5Li5mZjZhNDFiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuaApAQCAtMTEwLDcg
KzExMCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0UnVsZVNlbGVjdG9yKEVycm9y
U3RyaW5nKiwgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mIHJ1bGVJZCwgY29uc3QgU3Ry
aW5nJiBzZWxlY3RvciwgUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6OkNTU1J1bGU+JiByZXN1bHQp
OwogICAgIHZpcnR1YWwgdm9pZCBhZGRSdWxlKEVycm9yU3RyaW5nKiwgaW50IGNvbnRleHROb2Rl
SWQsIGNvbnN0IFN0cmluZyYgc2VsZWN0b3IsIFJlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NS
dWxlPiYgcmVzdWx0KTsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0U3VwcG9ydGVkQ1NTUHJvcGVydGll
cyhFcnJvclN0cmluZyosIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkNT
Uzo6Q1NTUHJvcGVydHlJbmZvPiA+JiByZXN1bHQpOwotICAgIHZpcnR1YWwgdm9pZCBnZXROYW1l
ZEZsb3dDb2xsZWN0aW9uKEVycm9yU3RyaW5nKiwgaW50IG5vZGVJZCwgUmVmUHRyPFR5cGVCdWls
ZGVyOjpBcnJheTxTdHJpbmc+ID4mIHJlc3VsdCk7CisgICAgdmlydHVhbCB2b2lkIGdldE5hbWVk
Rmxvd0NvbGxlY3Rpb24oRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlkLCBSZWZQdHI8VHlwZUJ1aWxk
ZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpDU1M6Ok5hbWVkRmxvdz4gPiYgcmVzdWx0KTsKICAgICB2
aXJ0dWFsIHZvaWQgZ2V0Rmxvd0J5TmFtZShFcnJvclN0cmluZyosIGludCBub2RlSWQsIGNvbnN0
IFN0cmluZyYgZmxvd05hbWUsIFJlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpOYW1lZEZsb3c+JiBy
ZXN1bHQpOwogCiAgICAgdmlydHVhbCB2b2lkIHN0YXJ0U2VsZWN0b3JQcm9maWxlcihFcnJvclN0
cmluZyopOwpAQCAtMTUwLDYgKzE1MCw3IEBAIHByaXZhdGU6CiAKICAgICBQYXNzUmVmUHRyPFR5
cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NSdWxlPiA+IGJ1aWxkQXJyYXlG
b3JSdWxlTGlzdChDU1NSdWxlTGlzdCosIFN0eWxlUmVzb2x2ZXIqKTsKICAgICBQYXNzUmVmUHRy
PFR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlPiBidWlsZE9iamVjdEZvckF0dHJpYnV0ZXNTdHls
ZShFbGVtZW50Kik7CisgICAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpOYW1lZEZsb3c+
IGJ1aWxkT2JqZWN0Rm9yTmFtZWRGbG93KFJlZlB0cjxXZWJLaXROYW1lZEZsb3c+JiwgaW50IGRv
Y3VtZW50Tm9kZUlkKTsKIAogICAgIC8vIEluc3BlY3RvckRPTUFnZW50OjpET01MaXN0ZW5lciBp
bXBsZW1lbnRhdGlvbgogICAgIHZpcnR1YWwgdm9pZCBkaWRSZW1vdmVEb2N1bWVudChEb2N1bWVu
dCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFn
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaAppbmRl
eCBhYzQ3OGNjLi43NjhiNjc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRE9NQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yRE9NQWdlbnQuaApAQCAtMTY2LDYgKzE2Niw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZFB1
c2hTaGFkb3dSb290KEVsZW1lbnQqIGhvc3QsIFNoYWRvd1Jvb3QqKTsKICAgICB2b2lkIHdpbGxQ
b3BTaGFkb3dSb290KEVsZW1lbnQqIGhvc3QsIFNoYWRvd1Jvb3QqKTsKIAorICAgIGludCBwdXNo
Tm9kZVBhdGhUb0Zyb250ZW5kKE5vZGUqKTsKICAgICBOb2RlKiBub2RlRm9ySWQoaW50IG5vZGVJ
ZCk7CiAgICAgaW50IGJvdW5kTm9kZUlkKE5vZGUqKTsKICAgICB2b2lkIHNldERPTUxpc3RlbmVy
KERPTUxpc3RlbmVyKik7CkBAIC0yMTAsNyArMjExLDYgQEAgcHJpdmF0ZToKICAgICBOb2RlKiBh
c3NlcnRFZGl0YWJsZU5vZGUoRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlkKTsKICAgICBFbGVtZW50
KiBhc3NlcnRFZGl0YWJsZUVsZW1lbnQoRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlkKTsKIAotICAg
IGludCBwdXNoTm9kZVBhdGhUb0Zyb250ZW5kKE5vZGUqKTsKICAgICB2b2lkIHB1c2hDaGlsZE5v
ZGVzVG9Gcm9udGVuZChpbnQgbm9kZUlkKTsKIAogICAgIGJvb2wgaGFzQnJlYWtwb2ludChOb2Rl
KiwgaW50IHR5cGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9DU1NTdHlsZU1vZGVsLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9DU1NTdHlsZU1vZGVsLmpzCmluZGV4IGViN2EzYzMuLjk2YzkxOGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ1NTU3R5bGVNb2RlbC5qcworKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NTU1N0eWxlTW9kZWwuanMKQEAgLTE2
MSwyMSArMTYxLDIxIEBAIFdlYkluc3BlY3Rvci5DU1NTdHlsZU1vZGVsLnByb3RvdHlwZSA9IHsK
IAogICAgIC8qKgogICAgICAqIEBwYXJhbSB7RE9NQWdlbnQuTm9kZUlkfSBub2RlSWQKLSAgICAg
KiBAcGFyYW0ge2Z1bmN0aW9uKD9BcnJheS48c3RyaW5nPil9IHVzZXJDYWxsYmFjaworICAgICAq
IEBwYXJhbSB7ZnVuY3Rpb24oP0FycmF5LjxXZWJJbnNwZWN0b3IuTmFtZWRGbG93Pil9IHVzZXJD
YWxsYmFjawogICAgICAqLwogICAgIGdldE5hbWVkRmxvd0NvbGxlY3Rpb25Bc3luYzogZnVuY3Rp
b24obm9kZUlkLCB1c2VyQ2FsbGJhY2spCiAgICAgewogICAgICAgICAvKioKLSAgICAgICAgICog
QHBhcmFtIHtmdW5jdGlvbig/QXJyYXkuPHN0cmluZz4pfSB1c2VyQ2FsbGJhY2sKKyAgICAgICAg
ICogQHBhcmFtIHtmdW5jdGlvbig/QXJyYXkuPFdlYkluc3BlY3Rvci5OYW1lZEZsb3c+KX0gdXNl
ckNhbGxiYWNrCiAgICAgICAgICAqIEBwYXJhbSB7P1Byb3RvY29sLkVycm9yfSBlcnJvcgotICAg
ICAgICAgKiBAcGFyYW0gez9BcnJheS48c3RyaW5nPj19IG5hbWVkRmxvd1BheWxvYWQKKyAgICAg
ICAgICogQHBhcmFtIHs/QXJyYXkuPENTU0FnZW50Lk5hbWVkRmxvdz49fSBuYW1lZEZsb3dQYXls
b2FkCiAgICAgICAgICAqLwogICAgICAgICBmdW5jdGlvbiBjYWxsYmFjayh1c2VyQ2FsbGJhY2ss
IGVycm9yLCBuYW1lZEZsb3dQYXlsb2FkKQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoZXJy
b3IgfHwgIW5hbWVkRmxvd1BheWxvYWQpCiAgICAgICAgICAgICAgICAgdXNlckNhbGxiYWNrKG51
bGwpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHVzZXJDYWxsYmFjayhuYW1l
ZEZsb3dQYXlsb2FkKTsKKyAgICAgICAgICAgICAgICB1c2VyQ2FsbGJhY2soV2ViSW5zcGVjdG9y
Lk5hbWVkRmxvdy5wYXJzZVBheWxvYWRBcnJheShuYW1lZEZsb3dQYXlsb2FkKSk7CiAgICAgICAg
IH0KIAogICAgICAgICBDU1NBZ2VudC5nZXROYW1lZEZsb3dDb2xsZWN0aW9uKG5vZGVJZCwgY2Fs
bGJhY2suYmluZCh0aGlzLCB1c2VyQ2FsbGJhY2spKTsKQEAgLTEyMjgsNiArMTIyOCw4IEBAIFdl
Ykluc3BlY3Rvci5OYW1lZEZsb3cgPSBmdW5jdGlvbihwYXlsb2FkKQogICAgIHRoaXMubm9kZUlk
ID0gcGF5bG9hZC5ub2RlSWQ7CiAgICAgdGhpcy5uYW1lID0gcGF5bG9hZC5uYW1lOwogICAgIHRo
aXMub3ZlcnNldCA9IHBheWxvYWQub3ZlcnNldDsKKyAgICB0aGlzLmNvbnRlbnQgPSBwYXlsb2Fk
LmNvbnRlbnQ7CisgICAgdGhpcy5yZWdpb25zID0gcGF5bG9hZC5yZWdpb25zOwogfQogCiAvKioK
QEAgLTEyNDAsNiArMTI0MiwxNyBAQCBXZWJJbnNwZWN0b3IuTmFtZWRGbG93LnBhcnNlUGF5bG9h
ZCA9IGZ1bmN0aW9uKHBheWxvYWQpCiB9CiAKIC8qKgorICogQHBhcmFtIHs/QXJyYXkuPENTU0Fn
ZW50Lk5hbWVkRmxvdz49fSBuYW1lZEZsb3dQYXlsb2FkCisgKiBAcmV0dXJuIHs/QXJyYXkuPFdl
Ykluc3BlY3Rvci5OYW1lZEZsb3c+fQorICovCitXZWJJbnNwZWN0b3IuTmFtZWRGbG93LnBhcnNl
UGF5bG9hZEFycmF5ID0gZnVuY3Rpb24ocGF5bG9hZEFycmF5KQoreworICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgcGF5bG9hZEFycmF5Lmxlbmd0aDsgKytpKQorICAgICAgICBwYXlsb2FkQXJyYXlb
aV0gPSBXZWJJbnNwZWN0b3IuTmFtZWRGbG93LnBhcnNlUGF5bG9hZChwYXlsb2FkQXJyYXlbaV0p
OworICAgIHJldHVybiBwYXlsb2FkQXJyYXk7Cit9CisKKy8qKgogICogQHR5cGUge1dlYkluc3Bl
Y3Rvci5DU1NTdHlsZU1vZGVsfQogICovCiBXZWJJbnNwZWN0b3IuY3NzTW9kZWwgPSBudWxsOwo=
</data>
<flag name="review"
          id="163940"
          type_id="1"
          status="-"
          setter="pfeldman"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>156910</attachid>
            <date>2012-08-07 04:29:53 -0700</date>
            <delta_ts>2012-08-09 05:39:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch92089</filename>
            <type>text/plain</type>
            <size>19580</size>
            <attacher name="Andrei Poenaru">andreigpoenaru</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBiOTk0MGE5Li4wNDVjNjM4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMDgt
MDcgIEFuZHJlaSBQb2VuYXJ1ICA8cG9lbmFydUBhZG9iZS5jb20+CisKKyAgICAgICAgV2ViIElu
c3BlY3RvcjogUHJvdG9jb2wgRXh0ZW5zaW9uOiBSZWZhY3RvciBwcm90b2NvbCBleHRlbnNpb24g
Zm9yIENTUyBSZWdpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD05MjA4OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIENoYW5nZWQgdGhlIHRlc3QgdG8gdmFsaWRhdGUgdGhlIGNoYW5nZXMgbWFkZSB0byB0
aGUgcHJvdG9jb2wuCisKKyAgICAgICAgKiBpbnNwZWN0b3Ivc3R5bGVzL3Byb3RvY29sLWNzcy1y
ZWdpb25zLWNvbW1hbmRzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc3R5bGVz
L3Byb3RvY29sLWNzcy1yZWdpb25zLWNvbW1hbmRzLmh0bWw6CisKIDIwMTItMDgtMDcgIFNlb2tq
dSBLd29uICA8c2Vva2p1Lmt3b25Ac2Ftc3VuZy5jb20+CiAKICAgICAgICAgW0VGTF0gTW92ZSBz
b21lIGluc3BlY3RvciB0ZXN0cyBpbnRvIFRlc3RFeHBlY3RhdGlvbnMKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMvcHJvdG9jb2wtY3NzLXJlZ2lvbnMtY29tbWFuZHMt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9wcm90b2NvbC1jc3Mt
cmVnaW9ucy1jb21tYW5kcy1leHBlY3RlZC50eHQKaW5kZXggMTM5MjJlNy4uYTNiNGY2NSAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9wcm90b2NvbC1jc3MtcmVnaW9u
cy1jb21tYW5kcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxl
cy9wcm90b2NvbC1jc3MtcmVnaW9ucy1jb21tYW5kcy1leHBlY3RlZC50eHQKQEAgLTcsMTUgKzcs
MjIgQEAgbmFtZWRGbG93UmVtb3ZlZCBCdWcgOTI3MzkKIAogCiBSdW5uaW5nOiB0ZXN0R2V0TmFt
ZWRGbG93Q29sbGVjdGlvbgotPT09IENTUyBOYW1lZCBGbG93cyA9PT0KLWZsb3cxCi1mbG93Mgot
ZmxvdzMKKz09PSBDU1MgTmFtZWQgRmxvd3MgaW4gbWFpbiBkb2N1bWVudCA9PT0KKyogTmFtZWQg
RmxvdyAiZmxvdzEiCitDb250ZW50IEVsZW1lbnRzOiAxCitSZWdpb25zOiAzCisqIE5hbWVkIEZs
b3cgImZsb3cyIgorQ29udGVudCBFbGVtZW50czogMQorUmVnaW9uczogMgorKiBOYW1lZCBGbG93
ICJmbG93MyIKK0NvbnRlbnQgRWxlbWVudHM6IDEKK1JlZ2lvbnM6IDEKIAogUnVubmluZzogdGVz
dEdldEZsb3dCeU5hbWUxCiA9PT0gTmFtZWQgRmxvdyAiZmxvdzIiIGZyb20gbWFpbiBkb2N1bWVu
dCA9PT0KLW5hbWU6IGZsb3cyCi1vdmVyc2V0OiBmYWxzZQorKiBOYW1lZCBGbG93ICJmbG93MiIK
K0NvbnRlbnQgRWxlbWVudHM6IDEKK1JlZ2lvbnM6IDIKIAogUnVubmluZzogdGVzdEdldEZsb3dC
eU5hbWUyCiA9PT0gTmFtZSBGbG93ICJmbG93NCIgZnJvbSBtYWluIGRvY3VtZW50ID09PQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9wcm90b2NvbC1jc3MtcmVnaW9u
cy1jb21tYW5kcy5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9wcm90b2NvbC1j
c3MtcmVnaW9ucy1jb21tYW5kcy5odG1sCmluZGV4IGU5MjU3MTcuLjYwZjMwZGYgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMvcHJvdG9jb2wtY3NzLXJlZ2lvbnMtY29t
bWFuZHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVzL3Byb3RvY29sLWNz
cy1yZWdpb25zLWNvbW1hbmRzLmh0bWwKQEAgLTQ5LDcgKzQ5LDcgQEAgZnVuY3Rpb24gdGVzdCgp
CiAKICAgICAgICAgICAgIGZ1bmN0aW9uIG5hbWVkRmxvd0NhbGxiYWNrKG5hbWVkRmxvd3MpCiAg
ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIj09
PSBDU1MgTmFtZWQgRmxvd3MgPT09Iik7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5h
ZGRSZXN1bHQoIj09PSBDU1MgTmFtZWQgRmxvd3MgaW4gbWFpbiBkb2N1bWVudCA9PT0iKTsKIAog
ICAgICAgICAgICAgICAgIGlmICghbmFtZWRGbG93cykgewogICAgICAgICAgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiWyFdIEZhaWxlZCB0byBnZXQgTmFtZWQgRmxvd3MiKTsK
QEAgLTU3LDEwICs1NywxMiBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAgIG5hbWVkRmxvd3Mu
c29ydCgpOworICAgICAgICAgICAgICAgIG5hbWVkRmxvd3Muc29ydChmdW5jdGlvbiAobmYxLCBu
ZjIpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuICgobmYxLm5hbWUgPT0gbmYyLm5hbWUp
ID8gMCA6ICgobmYxLm5hbWUgPiBuZjIubmFtZSkgPyAxIDogLTEpKTsKKyAgICAgICAgICAgICAg
ICB9KTsKIAogICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbmFtZWRGbG93cy5s
ZW5ndGg7ICsraSkKLSAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQo
bmFtZWRGbG93c1tpXSk7CisgICAgICAgICAgICAgICAgICAgIHByaW50TmFtZWRGbG93KG5hbWVk
Rmxvd3NbaV0pOwogCiAgICAgICAgICAgICAgICAgbmV4dCgpOwogICAgICAgICAgICAgfQpAQCAt
ODUsOCArODcsNyBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRk
UmVzdWx0KCJuYW1lOiAiICsgbmFtZWRGbG93Lm5hbWUpOwotICAgICAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QuYWRkUmVzdWx0KCJvdmVyc2V0OiAiICsgbmFtZWRGbG93Lm92ZXJzZXQpOworICAg
ICAgICAgICAgICAgIHByaW50TmFtZWRGbG93KG5hbWVkRmxvdyk7CiAKICAgICAgICAgICAgICAg
ICBuZXh0KCk7CiAgICAgICAgICAgICB9CkBAIC0xNTUsNiArMTU2LDEzIEBAIGZ1bmN0aW9uIHRl
c3QoKQogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgXSk7CisKKyAgICBmdW5jdGlvbiBw
cmludE5hbWVkRmxvdyhuYW1lZEZsb3cpCisgICAgeworICAgICAgICBJbnNwZWN0b3JUZXN0LmFk
ZFJlc3VsdCgiKiBOYW1lZCBGbG93IFwiIiArIG5hbWVkRmxvdy5uYW1lICsgIlwiIik7CisgICAg
ICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJDb250ZW50IEVsZW1lbnRzOiAiICsgbmFtZWRG
bG93LmNvbnRlbnQubGVuZ3RoKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIlJl
Z2lvbnM6ICIgKyBuYW1lZEZsb3cucmVnaW9ucy5sZW5ndGgpOworICAgIH0KIH0KIDwvc2NyaXB0
PgogPC9oZWFkPgpAQCAtMTcyLDkgKzE4MCwxMiBAQCBUZXN0cyB0aGUgZm9sbG93aW5nIGNvbW1h
bmRzIGFuZCBldmVudHM6CiAKIDxhcnRpY2xlIHN0eWxlPSItd2Via2l0LWZsb3ctaW50bzogZmxv
dzEiPjwvYXJ0aWNsZT4KIDxkaXYgc3R5bGU9Ii13ZWJraXQtZmxvdy1mcm9tOiBmbG93MSI+PC9k
aXY+Cis8ZGl2IHN0eWxlPSItd2Via2l0LWZsb3ctZnJvbTogZmxvdzEiPjwvZGl2PgorPGRpdiBz
dHlsZT0iLXdlYmtpdC1mbG93LWZyb206IGZsb3cxIj48L2Rpdj4KIAogPGFydGljbGUgc3R5bGU9
Ii13ZWJraXQtZmxvdy1pbnRvOiBmbG93MiI+PC9hcnRpY2xlPgogPGRpdiBzdHlsZT0iLXdlYmtp
dC1mbG93LWZyb206IGZsb3cyIj48L2Rpdj4KKzxkaXYgc3R5bGU9Ii13ZWJraXQtZmxvdy1mcm9t
OiBmbG93MiI+PC9kaXY+CiAKIDxhcnRpY2xlIHN0eWxlPSItd2Via2l0LWZsb3ctaW50bzogZmxv
dzMiPjwvYXJ0aWNsZT4KIDxkaXYgc3R5bGU9Ii13ZWJraXQtZmxvdy1mcm9tOiBmbG93MyI+PC9k
aXY+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKaW5kZXggMTM4N2IwNy4uYTM4NWExMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDQxIEBACisyMDEyLTA4LTA3ICBBbmRyZWkgUG9lbmFydSAgPHBvZW5hcnVAYWRvYmUuY29tPgor
CisgICAgICAgIFdlYiBJbnNwZWN0b3I6IFByb3RvY29sIEV4dGVuc2lvbjogUmVmYWN0b3IgcHJv
dG9jb2wgZXh0ZW5zaW9uIGZvciBDU1MgUmVnaW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTIwODkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIFJlcGxhY2VkICJXZWJLaXROYW1lZEZsb3dD
b2xsZWN0aW9uOjpuYW1lZEZsb3dzTmFtZXMiIHdpdGggIldlYktpdE5hbWVkRmxvd0NvbGxlY3Rp
b246Om5hbWVkRmxvd3MiIHRvIHJldHVybiBhIFZlY3RvciBvZiAiV2ViS2l0TmFtZWRGbG93InMs
CisgICAgICAgIGluc3RlYWQgb2YgYSBWZWN0b3Igb2YgU3RyaW5ncy4KKworICAgICAgICBBZGRl
ZCB0aGUgIlJlZ2lvbiIgdHlwZSB0byBJbnNwZWN0b3IuanNvbi4KKyAgICAgICAgQ2hhbmdlZCB0
aGUgIk5hbWVkRmxvdyIgdHlwZSBhbmQgdGhlICJnZXROYW1lZEZsb3dDb2xsZWN0aW9uIiBmdW5j
dGlvbiBpbiBJbnNwZWN0b3IuanNvbi4KKworICAgICAgICBDaGFuZ2VkICJJbnNwZWN0b3JET01B
Z2VudDo6cHVzaE5vZGVQYXRoVG9Gcm9udGVuZCIgZnJvbSBwcml2YXRlIHRvIHB1YmxpYyBiZWNh
dXNlIEkgbmVlZGVkIGEgd2F5IHRvIGdldCB0aGUgTm9kZUlkcyBmb3IgY29udGVudCBlbGVtZW50
cyBhbmQKKyAgICAgICAgZm9yIHJlZ2lvbnMuCisKKyAgICAgICAgTW9kaWZpZWQgZXhpc3Rpbmcg
dGVzdDogaW5zcGVjdG9yL3N0eWxlcy9wcm90b2NvbC1jc3MtcmVnaW9ucy1jb21tYW5kcy5odG1s
CisKKyAgICAgICAgKiBkb20vV2ViS2l0TmFtZWRGbG93Q29sbGVjdGlvbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpXZWJLaXROYW1lZEZsb3dDb2xsZWN0aW9uOjpuYW1lZEZsb3dzKToKKyAgICAg
ICAgKiBkb20vV2ViS2l0TmFtZWRGbG93Q29sbGVjdGlvbi5oOgorICAgICAgICAoV2ViS2l0TmFt
ZWRGbG93Q29sbGVjdGlvbik6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uOgor
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0TmFtZWRGbG93Q29sbGVjdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0Rmxvd0J5TmFtZSk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6YnVpbGRBcnJheUZvclJlZ2lvbnMpOgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6YnVpbGRP
YmplY3RGb3JOYW1lZEZsb3cpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2Vu
dC5oOgorICAgICAgICAoSW5zcGVjdG9yQ1NTQWdlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9J
bnNwZWN0b3JET01BZ2VudC5oOgorICAgICAgICAoSW5zcGVjdG9yRE9NQWdlbnQpOgorICAgICAg
ICAqIGluc3BlY3Rvci9mcm9udC1lbmQvQ1NTU3R5bGVNb2RlbC5qczoKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5DU1NTdHlsZU1vZGVsLnByb3RvdHlwZS5nZXROYW1lZEZsb3dDb2xsZWN0aW9uQXN5
bmMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5hbWVkRmxvdyk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuTmFtZWRGbG93LnBhcnNlUGF5bG9hZEFycmF5KToKKwogMjAxMi0wOC0wNyAgWGluZ25h
biBXYW5nICA8eGluZ25hbi53YW5nQGludGVsLmNvbT4KIAogICAgICAgICBJbmRleGVkREI6IFNp
emUgdGhlIFZlY3RvciBpbiBlbmNvZGVJbnQvZW5jb2RlVmFySW50L2VuY29kZVN0cmluZwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1dlYktpdE5hbWVkRmxvd0NvbGxlY3Rpb24uY3Bw
IGIvU291cmNlL1dlYkNvcmUvZG9tL1dlYktpdE5hbWVkRmxvd0NvbGxlY3Rpb24uY3BwCmluZGV4
IDY1NWRiNWIuLjkyNzM3MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9XZWJLaXRO
YW1lZEZsb3dDb2xsZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vV2ViS2l0TmFt
ZWRGbG93Q29sbGVjdGlvbi5jcHAKQEAgLTQ0LDE1ICs0NCwxNSBAQCBXZWJLaXROYW1lZEZsb3dD
b2xsZWN0aW9uOjpXZWJLaXROYW1lZEZsb3dDb2xsZWN0aW9uKERvY3VtZW50KiBkb2MpCiB7CiB9
CiAKLVZlY3RvcjxTdHJpbmc+IFdlYktpdE5hbWVkRmxvd0NvbGxlY3Rpb246Om5hbWVkRmxvd3NO
YW1lcygpCitWZWN0b3I8UmVmUHRyPFdlYktpdE5hbWVkRmxvdz4gPiBXZWJLaXROYW1lZEZsb3dD
b2xsZWN0aW9uOjpuYW1lZEZsb3dzKCkKIHsKLSAgICBWZWN0b3I8U3RyaW5nPiBuYW1lZEZsb3dz
OworICAgIFZlY3RvcjxSZWZQdHI8V2ViS2l0TmFtZWRGbG93PiA+IG5hbWVkRmxvd3M7CiAKICAg
ICBmb3IgKE5hbWVkRmxvd1NldDo6aXRlcmF0b3IgaXQgPSBtX25hbWVkRmxvd3MuYmVnaW4oKTsg
aXQgIT0gbV9uYW1lZEZsb3dzLmVuZCgpOyArK2l0KSB7CiAgICAgICAgIGlmICgoKml0KS0+Zmxv
d1N0YXRlKCkgPT0gV2ViS2l0TmFtZWRGbG93OjpGbG93U3RhdGVOdWxsKQogICAgICAgICAgICAg
Y29udGludWU7CiAKLSAgICAgICAgbmFtZWRGbG93cy5hcHBlbmQoKCppdCktPm5hbWUoKS5zdHJp
bmcoKSk7CisgICAgICAgIG5hbWVkRmxvd3MuYXBwZW5kKFJlZlB0cjxXZWJLaXROYW1lZEZsb3c+
KCppdCkpOwogICAgIH0KIAogICAgIHJldHVybiBuYW1lZEZsb3dzOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL1dlYktpdE5hbWVkRmxvd0NvbGxlY3Rpb24uaCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9XZWJLaXROYW1lZEZsb3dDb2xsZWN0aW9uLmgKaW5kZXggNjc4NzhhNy4uYmYwMWQ0
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1dlYktpdE5hbWVkRmxvd0NvbGxlY3Rp
b24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vV2ViS2l0TmFtZWRGbG93Q29sbGVjdGlvbi5o
CkBAIC00NSw3ICs0NSw3IEBAIGNsYXNzIFdlYktpdE5hbWVkRmxvd0NvbGxlY3Rpb24gOiBwdWJs
aWMgUmVmQ291bnRlZDxXZWJLaXROYW1lZEZsb3dDb2xsZWN0aW9uPiB7CiBwdWJsaWM6CiAgICAg
c3RhdGljIFBhc3NSZWZQdHI8V2ViS2l0TmFtZWRGbG93Q29sbGVjdGlvbj4gY3JlYXRlKERvY3Vt
ZW50KiBkb2MpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJLaXROYW1lZEZsb3dDb2xsZWN0aW9u
KGRvYykpOyB9CiAKLSAgICBWZWN0b3I8U3RyaW5nPiBuYW1lZEZsb3dzTmFtZXMoKTsKKyAgICBW
ZWN0b3I8UmVmUHRyPFdlYktpdE5hbWVkRmxvdz4gPiBuYW1lZEZsb3dzKCk7CiAgICAgV2ViS2l0
TmFtZWRGbG93KiBmbG93QnlOYW1lKGNvbnN0IFN0cmluZyYpOwogICAgIFBhc3NSZWZQdHI8V2Vi
S2l0TmFtZWRGbG93PiBlbnN1cmVGbG93V2l0aE5hbWUoY29uc3QgU3RyaW5nJik7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbiBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbgppbmRleCAwMWE1OWJlLi40MTkyOTM5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24KKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uCkBAIC0yMTgzLDEyICsyMTgz
LDI0IEBACiAgICAgICAgICAgICAgICAgXQogICAgICAgICAgICAgfSwKICAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICAiaWQiOiAiUmVnaW9uIiwKKyAgICAgICAgICAgICAgICAidHlwZSI6
ICJvYmplY3QiLAorICAgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIjogWworICAgICAgICAgICAg
ICAgICAgICB7ICJuYW1lIjogInJlZ2lvbk92ZXJzZXQiLCAidHlwZSI6ICJzdHJpbmciLCAiZW51
bSI6IFsib3ZlcnNldCIsICJmaXQiLCAiZW1wdHkiXSwgImRlc2NyaXB0aW9uIjogIlRoZSBcIm92
ZXJzZXRcIiBhdHRyaWJ1dGUgb2YgYSBOYW1lZCBGbG93LiIgfSwKKyAgICAgICAgICAgICAgICAg
ICAgeyAibmFtZSI6ICJub2RlSWQiLCAiJHJlZiI6ICJET00uTm9kZUlkIiwgImRlc2NyaXB0aW9u
IjogIlRoZSBjb3JyZXNwb25kaW5nIERPTSBub2RlIGlkLiIgfQorICAgICAgICAgICAgICAgIF0s
CisgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlRoaXMgb2JqZWN0IHJlcHJlc2VudHMg
YSByZWdpb24gdGhhdCBmbG93cyBmcm9tIGEgTmFtZWQgRmxvdy4iLAorICAgICAgICAgICAgICAg
ICJoaWRkZW4iOiB0cnVlCisgICAgICAgICAgICB9LAorICAgICAgICAgICAgewogICAgICAgICAg
ICAgICAgICJpZCI6ICJOYW1lZEZsb3ciLAogICAgICAgICAgICAgICAgICJ0eXBlIjogIm9iamVj
dCIsCiAgICAgICAgICAgICAgICAgInByb3BlcnRpZXMiOiBbCiAgICAgICAgICAgICAgICAgICAg
IHsgIm5hbWUiOiAibm9kZUlkIiwgIiRyZWYiOiAiRE9NLk5vZGVJZCIsICJkZXNjcmlwdGlvbiI6
ICJUaGUgZG9jdW1lbnQgbm9kZSBpZC4iIH0sCiAgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUi
OiAibmFtZSIsICJ0eXBlIjogInN0cmluZyIsICJkZXNjcmlwdGlvbiI6ICJOYW1lZCBGbG93IGlk
ZW50aWZpZXIuIiB9LAotICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogIm92ZXJzZXQiLCAi
dHlwZSI6ICJib29sZWFuIiwgImRlc2NyaXB0aW9uIjogIlRoZSBcIm92ZXJzZXRcIiBhdHRyaWJ1
dGUgb2YgYSBOYW1lZCBGbG93LiIgfQorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogIm92
ZXJzZXQiLCAidHlwZSI6ICJib29sZWFuIiwgImRlc2NyaXB0aW9uIjogIlRoZSBcIm92ZXJzZXRc
IiBhdHRyaWJ1dGUgb2YgYSBOYW1lZCBGbG93LiIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAi
bmFtZSI6ICJjb250ZW50IiwgInR5cGUiOiAiYXJyYXkiLCAiaXRlbXMiOiB7ICIkcmVmIjogIkRP
TS5Ob2RlSWQiIH0sICJkZXNjcmlwdGlvbiI6ICJBbiBhcnJheSBvZiBub2RlcyB0aGF0IGZsb3cg
aW50byB0aGUgTmFtZWQgRmxvdy4iIH0sCisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAi
cmVnaW9ucyIsICJ0eXBlIjogImFycmF5IiwgIml0ZW1zIjogeyAiJHJlZiI6ICJSZWdpb24iIH0s
ICJkZXNjcmlwdGlvbiI6ICJBbiBhcnJheSBvZiByZWdpb25zIGFzc29jaWF0ZWQgd2l0aCB0aGUg
TmFtZWQgRmxvdy4iIH0KICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICJkZXNj
cmlwdGlvbiI6ICJUaGlzIG9iamVjdCByZXByZXNlbnRzIGEgTmFtZWQgRmxvdy4iLAogICAgICAg
ICAgICAgICAgICJoaWRkZW4iOiB0cnVlCkBAIC0yMzQ0LDcgKzIzNTYsNyBAQAogICAgICAgICAg
ICAgICAgICAgICB7ICJuYW1lIjogIm5vZGVJZCIsICIkcmVmIjogIkRPTS5Ob2RlSWQiLCAiZGVz
Y3JpcHRpb24iOiAiVGhlIGRvY3VtZW50IG5vZGUgaWQgZm9yIHdoaWNoIHRvIGdldCB0aGUgTmFt
ZWQgRmxvdyBDb2xsZWN0aW9uLiIgfQogICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAg
ICAgInJldHVybnMiOiBbCi0gICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAibmFtZWRGbG93
cyIsICJ0eXBlIjogImFycmF5IiwgIml0ZW1zIjogeyAidHlwZSI6ICJzdHJpbmciIH0sICJkZXNj
cmlwdGlvbiI6ICJBbiBhcnJheSBjb250YWluaW5nIHRoZSBOYW1lZCBGbG93cyBpbiB0aGUgZG9j
dW1lbnQuIiB9CisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAibmFtZWRGbG93cyIsICJ0
eXBlIjogImFycmF5IiwgIml0ZW1zIjogeyAiJHJlZiI6ICJOYW1lZEZsb3ciIH0sICJkZXNjcmlw
dGlvbiI6ICJBbiBhcnJheSBjb250YWluaW5nIHRoZSBOYW1lZCBGbG93cyBpbiB0aGUgZG9jdW1l
bnQuIiB9CiAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24i
OiAiUmV0dXJucyB0aGUgTmFtZWQgRmxvd3MgZnJvbSB0aGUgZG9jdW1lbnQuIiwKICAgICAgICAg
ICAgICAgICAiaGlkZGVuIjogdHJ1ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckNTU0FnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JDU1NBZ2VudC5jcHAKaW5kZXggZTJhOWZhMy4uYTIzMGUyNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCkBAIC04MjQsMTkgKzgyNCwx
OSBAQCB2b2lkIEluc3BlY3RvckNTU0FnZW50OjpnZXRTdXBwb3J0ZWRDU1NQcm9wZXJ0aWVzKEVy
cm9yU3RyaW5nKiwgUmVmUHRyPFR5cGVCdWlsZAogICAgIGNzc1Byb3BlcnRpZXMgPSBwcm9wZXJ0
aWVzLnJlbGVhc2UoKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0TmFtZWRGbG93
Q29sbGVjdGlvbihFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGludCBub2RlSWQsIFJlZlB0cjxU
eXBlQnVpbGRlcjo6QXJyYXk8U3RyaW5nPiA+JiByZXN1bHQpCit2b2lkIEluc3BlY3RvckNTU0Fn
ZW50OjpnZXROYW1lZEZsb3dDb2xsZWN0aW9uKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgaW50
IG5vZGVJZCwgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6Q1NTOjpOYW1l
ZEZsb3c+ID4mIHJlc3VsdCkKIHsKICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBtX2RvbUFnZW50
LT5hc3NlcnREb2N1bWVudChlcnJvclN0cmluZywgbm9kZUlkKTsKICAgICBpZiAoIWRvY3VtZW50
KQogICAgICAgICByZXR1cm47CiAKICAgICBtX25hbWVkRmxvd0NvbGxlY3Rpb25zUmVxdWVzdGVk
LmFkZChub2RlSWQpOworICAgIFZlY3RvcjxSZWZQdHI8V2ViS2l0TmFtZWRGbG93PiA+IG5hbWVk
Rmxvd3NWZWN0b3IgPSBkb2N1bWVudC0+bmFtZWRGbG93cygpLT5uYW1lZEZsb3dzKCk7CisgICAg
UmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6Q1NTOjpOYW1lZEZsb3c+ID4g
bmFtZWRGbG93cyA9IFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6Q1NTOjpOYW1lZEZs
b3c+OjpjcmVhdGUoKTsKIAotICAgIFZlY3RvcjxTdHJpbmc+IG5hbWVkRmxvd3NWZWN0b3IgPSBk
b2N1bWVudC0+bmFtZWRGbG93cygpLT5uYW1lZEZsb3dzTmFtZXMoKTsKLSAgICBSZWZQdHI8VHlw
ZUJ1aWxkZXI6OkFycmF5PFN0cmluZz4gPiBuYW1lZEZsb3dzID0gVHlwZUJ1aWxkZXI6OkFycmF5
PFN0cmluZz46OmNyZWF0ZSgpOwogCi0gICAgZm9yIChWZWN0b3I8U3RyaW5nPjo6aXRlcmF0b3Ig
aXQgPSBuYW1lZEZsb3dzVmVjdG9yLmJlZ2luKCk7IGl0ICE9IG5hbWVkRmxvd3NWZWN0b3IuZW5k
KCk7ICsraXQpCi0gICAgICAgIG5hbWVkRmxvd3MtPmFkZEl0ZW0oKml0KTsKKyAgICBmb3IgKFZl
Y3RvcjxSZWZQdHI8V2ViS2l0TmFtZWRGbG93PiA+OjppdGVyYXRvciBpdCA9IG5hbWVkRmxvd3NW
ZWN0b3IuYmVnaW4oKTsgaXQgIT0gbmFtZWRGbG93c1ZlY3Rvci5lbmQoKTsgKytpdCkKKyAgICAg
ICAgbmFtZWRGbG93cy0+YWRkSXRlbShidWlsZE9iamVjdEZvck5hbWVkRmxvdyhpdC0+Z2V0KCks
IG5vZGVJZCkpOwogCiAgICAgcmVzdWx0ID0gbmFtZWRGbG93cy5yZWxlYXNlKCk7CiB9CkBAIC04
NDcsMTYgKzg0NywxNCBAQCB2b2lkIEluc3BlY3RvckNTU0FnZW50OjpnZXRGbG93QnlOYW1lKEVy
cm9yU3RyaW5nKiBlcnJvclN0cmluZywgaW50IG5vZGVJZCwgY29ucwogICAgIGlmICghZG9jdW1l
bnQpCiAgICAgICAgIHJldHVybjsKIAotICAgIFdlYktpdE5hbWVkRmxvdyogbmFtZWRGbG93ID0g
ZG9jdW1lbnQtPm5hbWVkRmxvd3MoKS0+Zmxvd0J5TmFtZShmbG93TmFtZSk7Ci0gICAgaWYgKCFu
YW1lZEZsb3cpIHsKKyAgICBXZWJLaXROYW1lZEZsb3cqIHdlYmtpdE5hbWVkRmxvdyA9IGRvY3Vt
ZW50LT5uYW1lZEZsb3dzKCktPmZsb3dCeU5hbWUoZmxvd05hbWUpOworICAgIGlmICghd2Via2l0
TmFtZWRGbG93KSB7CiAgICAgICAgICplcnJvclN0cmluZyA9ICJObyB0YXJnZXQgQ1NTIE5hbWVk
IEZsb3cgZm91bmQiOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgcmVzdWx0ID0gVHlw
ZUJ1aWxkZXI6OkNTUzo6TmFtZWRGbG93OjpjcmVhdGUoKQotICAgICAgICAuc2V0Tm9kZUlkKG5v
ZGVJZCkKLSAgICAgICAgLnNldE5hbWUoZmxvd05hbWUpCi0gICAgICAgIC5zZXRPdmVyc2V0KG5h
bWVkRmxvdy0+b3ZlcnNldCgpKTsKKyAgICBSZWZQdHI8V2ViS2l0TmFtZWRGbG93PiBwcm90ZWN0
b3Iod2Via2l0TmFtZWRGbG93KTsKKyAgICByZXN1bHQgPSBidWlsZE9iamVjdEZvck5hbWVkRmxv
dyh3ZWJraXROYW1lZEZsb3csIG5vZGVJZCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6
OnN0YXJ0U2VsZWN0b3JQcm9maWxlcihFcnJvclN0cmluZyopCkBAIC0xMDcyLDYgKzEwNzAsNTQg
QEAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHlsZT4gSW5zcGVjdG9yQ1NTQWdl
bnQ6OmJ1aWxkT2JqZWN0Rm9yQXR0cmlidXQKICAgICByZXR1cm4gaW5zcGVjdG9yU3R5bGUtPmJ1
aWxkT2JqZWN0Rm9yU3R5bGUoKTsKIH0KIAorUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8
VHlwZUJ1aWxkZXI6OkNTUzo6UmVnaW9uPiA+IEluc3BlY3RvckNTU0FnZW50OjpidWlsZEFycmF5
Rm9yUmVnaW9ucyhQYXNzUmVmUHRyPE5vZGVMaXN0PiBwcnBSZWdpb25MaXN0KQoreworICAgIFJl
ZlB0cjxOb2RlTGlzdD4gcmVnaW9uTGlzdCA9IHBycFJlZ2lvbkxpc3Q7CisgICAgUmVmUHRyPFR5
cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6Q1NTOjpSZWdpb24+ID4gcmVnaW9ucyA9IFR5
cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6Q1NTOjpSZWdpb24+OjpjcmVhdGUoKTsKKwor
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCByZWdpb25MaXN0LT5sZW5ndGgoKTsgKytpKSB7
CisgICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYgcmVnaW9uRWxlbWVudE92ZXJzZXQgPSBzdGF0
aWNfY2FzdDxFbGVtZW50Kj4ocmVnaW9uTGlzdC0+aXRlbShpKSktPndlYmtpdFJlZ2lvbk92ZXJz
ZXQoKTsKKyAgICAgICAgVHlwZUJ1aWxkZXI6OkNTUzo6UmVnaW9uOjpSZWdpb25PdmVyc2V0OjpF
bnVtIHJlZ2lvbk92ZXJzZXQ7CisKKyAgICAgICAgaWYgKHJlZ2lvbkVsZW1lbnRPdmVyc2V0ID09
ICJlbXB0eSIpCisgICAgICAgICAgICByZWdpb25PdmVyc2V0ID0gVHlwZUJ1aWxkZXI6OkNTUzo6
UmVnaW9uOjpSZWdpb25PdmVyc2V0OjpFbXB0eTsKKyAgICAgICAgZWxzZSBpZiAocmVnaW9uRWxl
bWVudE92ZXJzZXQgPT0gImZpdCIpCisgICAgICAgICAgICByZWdpb25PdmVyc2V0ID0gVHlwZUJ1
aWxkZXI6OkNTUzo6UmVnaW9uOjpSZWdpb25PdmVyc2V0OjpGaXQ7CisgICAgICAgIGVsc2UgaWYg
KHJlZ2lvbkVsZW1lbnRPdmVyc2V0ID09ICJvdmVyc2V0IikKKyAgICAgICAgICAgIHJlZ2lvbk92
ZXJzZXQgPSBUeXBlQnVpbGRlcjo6Q1NTOjpSZWdpb246OlJlZ2lvbk92ZXJzZXQ6Ok92ZXJzZXQ7
CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
ICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIFJlZlB0cjxUeXBlQnVpbGRl
cjo6Q1NTOjpSZWdpb24+IHJlZ2lvbiA9IFR5cGVCdWlsZGVyOjpDU1M6OlJlZ2lvbjo6Y3JlYXRl
KCkKKyAgICAgICAgICAgIC5zZXRSZWdpb25PdmVyc2V0KHJlZ2lvbk92ZXJzZXQpCisgICAgICAg
ICAgICAuc2V0Tm9kZUlkKG1fZG9tQWdlbnQtPnB1c2hOb2RlUGF0aFRvRnJvbnRlbmQocmVnaW9u
TGlzdC0+aXRlbShpKSkpOworCisgICAgICAgIHJlZ2lvbnMtPmFkZEl0ZW0ocmVnaW9uKTsKKyAg
ICB9CisKKyAgICByZXR1cm4gcmVnaW9ucy5yZWxlYXNlKCk7Cit9CisKK1Bhc3NSZWZQdHI8VHlw
ZUJ1aWxkZXI6OkNTUzo6TmFtZWRGbG93PiBJbnNwZWN0b3JDU1NBZ2VudDo6YnVpbGRPYmplY3RG
b3JOYW1lZEZsb3coV2ViS2l0TmFtZWRGbG93KiB3ZWJraXROYW1lZEZsb3csIGludCBkb2N1bWVu
dE5vZGVJZCkKK3sKKyAgICBSZWZQdHI8Tm9kZUxpc3Q+IGNvbnRlbnRMaXN0ID0gd2Via2l0TmFt
ZWRGbG93LT5nZXRDb250ZW50KCk7CisgICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxpbnQ+
ID4gY29udGVudCA9IFR5cGVCdWlsZGVyOjpBcnJheTxpbnQ+OjpjcmVhdGUoKTsKKworICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBjb250ZW50TGlzdC0+bGVuZ3RoKCk7ICsraSkKKyAgICAg
ICAgY29udGVudC0+YWRkSXRlbShtX2RvbUFnZW50LT5wdXNoTm9kZVBhdGhUb0Zyb250ZW5kKGNv
bnRlbnRMaXN0LT5pdGVtKGkpKSk7CisKKyAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6TmFt
ZWRGbG93PiBuYW1lZEZsb3cgPSBUeXBlQnVpbGRlcjo6Q1NTOjpOYW1lZEZsb3c6OmNyZWF0ZSgp
CisgICAgICAgIC5zZXROb2RlSWQoZG9jdW1lbnROb2RlSWQpCisgICAgICAgIC5zZXROYW1lKHdl
YmtpdE5hbWVkRmxvdy0+bmFtZSgpLnN0cmluZygpKQorICAgICAgICAuc2V0T3ZlcnNldCh3ZWJr
aXROYW1lZEZsb3ctPm92ZXJzZXQoKSkKKyAgICAgICAgLnNldENvbnRlbnQoY29udGVudCkKKyAg
ICAgICAgLnNldFJlZ2lvbnMoYnVpbGRBcnJheUZvclJlZ2lvbnMod2Via2l0TmFtZWRGbG93LT5n
ZXRSZWdpb25zKCkpKTsKKworICAgIHJldHVybiBuYW1lZEZsb3cucmVsZWFzZSgpOworfQorCiB2
b2lkIEluc3BlY3RvckNTU0FnZW50OjpkaWRSZW1vdmVEb2N1bWVudChEb2N1bWVudCogZG9jdW1l
bnQpCiB7CiAgICAgaWYgKGRvY3VtZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQ1NTQWdlbnQuaAppbmRleCBhOTcxMTZlLi45YWE2MmI3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuaApAQCAtMTEzLDcgKzExMyw3IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0UnVsZVNlbGVjdG9yKEVycm9yU3RyaW5nKiwgY29u
c3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mIHJ1bGVJZCwgY29uc3QgU3RyaW5nJiBzZWxlY3Rv
ciwgUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6OkNTU1J1bGU+JiByZXN1bHQpOwogICAgIHZpcnR1
YWwgdm9pZCBhZGRSdWxlKEVycm9yU3RyaW5nKiwgaW50IGNvbnRleHROb2RlSWQsIGNvbnN0IFN0
cmluZyYgc2VsZWN0b3IsIFJlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NSdWxlPiYgcmVzdWx0
KTsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0U3VwcG9ydGVkQ1NTUHJvcGVydGllcyhFcnJvclN0cmlu
ZyosIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUHJvcGVy
dHlJbmZvPiA+JiByZXN1bHQpOwotICAgIHZpcnR1YWwgdm9pZCBnZXROYW1lZEZsb3dDb2xsZWN0
aW9uKEVycm9yU3RyaW5nKiwgaW50IG5vZGVJZCwgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxT
dHJpbmc+ID4mIHJlc3VsdCk7CisgICAgdmlydHVhbCB2b2lkIGdldE5hbWVkRmxvd0NvbGxlY3Rp
b24oRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlkLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5
cGVCdWlsZGVyOjpDU1M6Ok5hbWVkRmxvdz4gPiYgcmVzdWx0KTsKICAgICB2aXJ0dWFsIHZvaWQg
Z2V0Rmxvd0J5TmFtZShFcnJvclN0cmluZyosIGludCBub2RlSWQsIGNvbnN0IFN0cmluZyYgZmxv
d05hbWUsIFJlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpOYW1lZEZsb3c+JiByZXN1bHQpOwogCiAg
ICAgdmlydHVhbCB2b2lkIHN0YXJ0U2VsZWN0b3JQcm9maWxlcihFcnJvclN0cmluZyopOwpAQCAt
MTUzLDYgKzE1Myw4IEBAIHByaXZhdGU6CiAKICAgICBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpB
cnJheTxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NSdWxlPiA+IGJ1aWxkQXJyYXlGb3JSdWxlTGlzdChD
U1NSdWxlTGlzdCosIFN0eWxlUmVzb2x2ZXIqKTsKICAgICBQYXNzUmVmUHRyPFR5cGVCdWlsZGVy
OjpDU1M6OkNTU1N0eWxlPiBidWlsZE9iamVjdEZvckF0dHJpYnV0ZXNTdHlsZShFbGVtZW50Kik7
CisgICAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkNTUzo6UmVn
aW9uPiA+IGJ1aWxkQXJyYXlGb3JSZWdpb25zKFBhc3NSZWZQdHI8Tm9kZUxpc3Q+KTsKKyAgICBQ
YXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6Ok5hbWVkRmxvdz4gYnVpbGRPYmplY3RGb3JOYW1l
ZEZsb3coV2ViS2l0TmFtZWRGbG93KiwgaW50IGRvY3VtZW50Tm9kZUlkKTsKIAogICAgIC8vIElu
c3BlY3RvckRPTUFnZW50OjpET01MaXN0ZW5lciBpbXBsZW1lbnRhdGlvbgogICAgIHZpcnR1YWwg
dm9pZCBkaWRSZW1vdmVEb2N1bWVudChEb2N1bWVudCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaAppbmRleCA4NDgwY2M5Li41YzhmOWFjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaApAQCAtMTY5LDYgKzE2
OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZFB1c2hTaGFkb3dSb290KEVsZW1lbnQqIGhvc3Qs
IFNoYWRvd1Jvb3QqKTsKICAgICB2b2lkIHdpbGxQb3BTaGFkb3dSb290KEVsZW1lbnQqIGhvc3Qs
IFNoYWRvd1Jvb3QqKTsKIAorICAgIGludCBwdXNoTm9kZVBhdGhUb0Zyb250ZW5kKE5vZGUqKTsK
ICAgICBOb2RlKiBub2RlRm9ySWQoaW50IG5vZGVJZCk7CiAgICAgaW50IGJvdW5kTm9kZUlkKE5v
ZGUqKTsKICAgICB2b2lkIHNldERPTUxpc3RlbmVyKERPTUxpc3RlbmVyKik7CkBAIC0yMTMsNyAr
MjE0LDYgQEAgcHJpdmF0ZToKICAgICBOb2RlKiBhc3NlcnRFZGl0YWJsZU5vZGUoRXJyb3JTdHJp
bmcqLCBpbnQgbm9kZUlkKTsKICAgICBFbGVtZW50KiBhc3NlcnRFZGl0YWJsZUVsZW1lbnQoRXJy
b3JTdHJpbmcqLCBpbnQgbm9kZUlkKTsKIAotICAgIGludCBwdXNoTm9kZVBhdGhUb0Zyb250ZW5k
KE5vZGUqKTsKICAgICB2b2lkIHB1c2hDaGlsZE5vZGVzVG9Gcm9udGVuZChpbnQgbm9kZUlkKTsK
IAogICAgIGJvb2wgaGFzQnJlYWtwb2ludChOb2RlKiwgaW50IHR5cGUpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9DU1NTdHlsZU1vZGVsLmpzIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9DU1NTdHlsZU1vZGVsLmpzCmluZGV4IDBm
YzRkNDAuLjAxYjMyNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvQ1NTU3R5bGVNb2RlbC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL0NTU1N0eWxlTW9kZWwuanMKQEAgLTE2NCwyMSArMTY0LDIxIEBAIFdlYkluc3BlY3Rv
ci5DU1NTdHlsZU1vZGVsLnByb3RvdHlwZSA9IHsKIAogICAgIC8qKgogICAgICAqIEBwYXJhbSB7
RE9NQWdlbnQuTm9kZUlkfSBub2RlSWQKLSAgICAgKiBAcGFyYW0ge2Z1bmN0aW9uKD9BcnJheS48
c3RyaW5nPil9IHVzZXJDYWxsYmFjaworICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24oP0FycmF5LjxX
ZWJJbnNwZWN0b3IuTmFtZWRGbG93Pil9IHVzZXJDYWxsYmFjawogICAgICAqLwogICAgIGdldE5h
bWVkRmxvd0NvbGxlY3Rpb25Bc3luYzogZnVuY3Rpb24obm9kZUlkLCB1c2VyQ2FsbGJhY2spCiAg
ICAgewogICAgICAgICAvKioKLSAgICAgICAgICogQHBhcmFtIHtmdW5jdGlvbig/QXJyYXkuPHN0
cmluZz4pfSB1c2VyQ2FsbGJhY2sKKyAgICAgICAgICogQHBhcmFtIHtmdW5jdGlvbig/QXJyYXku
PFdlYkluc3BlY3Rvci5OYW1lZEZsb3c+KX0gdXNlckNhbGxiYWNrCiAgICAgICAgICAqIEBwYXJh
bSB7P1Byb3RvY29sLkVycm9yfSBlcnJvcgotICAgICAgICAgKiBAcGFyYW0gez9BcnJheS48c3Ry
aW5nPj19IG5hbWVkRmxvd1BheWxvYWQKKyAgICAgICAgICogQHBhcmFtIHs/QXJyYXkuPENTU0Fn
ZW50Lk5hbWVkRmxvdz49fSBuYW1lZEZsb3dQYXlsb2FkCiAgICAgICAgICAqLwogICAgICAgICBm
dW5jdGlvbiBjYWxsYmFjayh1c2VyQ2FsbGJhY2ssIGVycm9yLCBuYW1lZEZsb3dQYXlsb2FkKQog
ICAgICAgICB7CiAgICAgICAgICAgICBpZiAoZXJyb3IgfHwgIW5hbWVkRmxvd1BheWxvYWQpCiAg
ICAgICAgICAgICAgICAgdXNlckNhbGxiYWNrKG51bGwpOwogICAgICAgICAgICAgZWxzZQotICAg
ICAgICAgICAgICAgIHVzZXJDYWxsYmFjayhuYW1lZEZsb3dQYXlsb2FkKTsKKyAgICAgICAgICAg
ICAgICB1c2VyQ2FsbGJhY2soV2ViSW5zcGVjdG9yLk5hbWVkRmxvdy5wYXJzZVBheWxvYWRBcnJh
eShuYW1lZEZsb3dQYXlsb2FkKSk7CiAgICAgICAgIH0KIAogICAgICAgICBDU1NBZ2VudC5nZXRO
YW1lZEZsb3dDb2xsZWN0aW9uKG5vZGVJZCwgY2FsbGJhY2suYmluZCh0aGlzLCB1c2VyQ2FsbGJh
Y2spKTsKQEAgLTEzNDUsNiArMTM0NSw4IEBAIFdlYkluc3BlY3Rvci5OYW1lZEZsb3cgPSBmdW5j
dGlvbihwYXlsb2FkKQogICAgIHRoaXMubm9kZUlkID0gcGF5bG9hZC5ub2RlSWQ7CiAgICAgdGhp
cy5uYW1lID0gcGF5bG9hZC5uYW1lOwogICAgIHRoaXMub3ZlcnNldCA9IHBheWxvYWQub3ZlcnNl
dDsKKyAgICB0aGlzLmNvbnRlbnQgPSBwYXlsb2FkLmNvbnRlbnQ7CisgICAgdGhpcy5yZWdpb25z
ID0gcGF5bG9hZC5yZWdpb25zOwogfQogCiAvKioKQEAgLTEzNTcsNiArMTM1OSwxNyBAQCBXZWJJ
bnNwZWN0b3IuTmFtZWRGbG93LnBhcnNlUGF5bG9hZCA9IGZ1bmN0aW9uKHBheWxvYWQpCiB9CiAK
IC8qKgorICogQHBhcmFtIHs/QXJyYXkuPENTU0FnZW50Lk5hbWVkRmxvdz49fSBuYW1lZEZsb3dQ
YXlsb2FkCisgKiBAcmV0dXJuIHs/QXJyYXkuPFdlYkluc3BlY3Rvci5OYW1lZEZsb3c+fQorICov
CitXZWJJbnNwZWN0b3IuTmFtZWRGbG93LnBhcnNlUGF5bG9hZEFycmF5ID0gZnVuY3Rpb24ocGF5
bG9hZEFycmF5KQoreworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcGF5bG9hZEFycmF5Lmxlbmd0
aDsgKytpKQorICAgICAgICBwYXlsb2FkQXJyYXlbaV0gPSBXZWJJbnNwZWN0b3IuTmFtZWRGbG93
LnBhcnNlUGF5bG9hZChwYXlsb2FkQXJyYXlbaV0pOworICAgIHJldHVybiBwYXlsb2FkQXJyYXk7
Cit9CisKKy8qKgogICogQHR5cGUge1dlYkluc3BlY3Rvci5DU1NTdHlsZU1vZGVsfQogICovCiBX
ZWJJbnNwZWN0b3IuY3NzTW9kZWwgPSBudWxsOwo=
</data>
<flag name="review"
          id="166702"
          type_id="1"
          status="-"
          setter="pfeldman"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>157452</attachid>
            <date>2012-08-09 05:39:13 -0700</date>
            <delta_ts>2012-08-10 00:01:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch92089</filename>
            <type>text/plain</type>
            <size>24897</size>
            <attacher name="Andrei Poenaru">andreigpoenaru</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBhMDZlY2MwLi5hMWQxM2Q0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMDgt
MDkgIEFuZHJlaSBQb2VuYXJ1ICA8cG9lbmFydUBhZG9iZS5jb20+CisKKyAgICAgICAgV2ViIElu
c3BlY3RvcjogUHJvdG9jb2wgRXh0ZW5zaW9uOiBSZWZhY3RvciBwcm90b2NvbCBleHRlbnNpb24g
Zm9yIENTUyBSZWdpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD05MjA4OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIENoYW5nZWQgdGhlIHRlc3QgdG8gdmFsaWRhdGUgdGhlIGNoYW5nZXMgbWFkZSB0byB0
aGUgcHJvdG9jb2wuCisKKyAgICAgICAgKiBpbnNwZWN0b3Ivc3R5bGVzL3Byb3RvY29sLWNzcy1y
ZWdpb25zLWNvbW1hbmRzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc3R5bGVz
L3Byb3RvY29sLWNzcy1yZWdpb25zLWNvbW1hbmRzLmh0bWw6CisKIDIwMTItMDgtMDkgIFBhdmVs
IEZlbGRtYW4gIDxwZmVsZG1hbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3BlY3Rv
cjogaW1wcm92ZSBsYXJnZSBhcnJheSBsb2dnaW5nIGV4cGVyaWVuY2UKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMvcHJvdG9jb2wtY3NzLXJlZ2lvbnMtY29tbWFuZHMt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9wcm90b2NvbC1jc3Mt
cmVnaW9ucy1jb21tYW5kcy1leHBlY3RlZC50eHQKaW5kZXggMTM5MjJlNy4uN2M4MmI0OCAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9wcm90b2NvbC1jc3MtcmVnaW9u
cy1jb21tYW5kcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxl
cy9wcm90b2NvbC1jc3MtcmVnaW9ucy1jb21tYW5kcy1leHBlY3RlZC50eHQKQEAgLTYsMTYgKzYs
MjcgQEAgbmFtZWRGbG93Q3JlYXRlZCBCdWcgOTI3MzkKIG5hbWVkRmxvd1JlbW92ZWQgQnVnIDky
NzM5CiAKIAotUnVubmluZzogdGVzdEdldE5hbWVkRmxvd0NvbGxlY3Rpb24KLT09PSBDU1MgTmFt
ZWQgRmxvd3MgPT09Ci1mbG93MQotZmxvdzIKLWZsb3czCitSdW5uaW5nOiB0ZXN0R2V0TmFtZWRG
bG93Q29sbGVjdGlvbjEKKz09PSBDU1MgTmFtZWQgRmxvd3MgaW4gbWFpbiBkb2N1bWVudCA9PT0K
KyogTmFtZWQgRmxvdyAiZmxvdzEiCitDb250ZW50IEVsZW1lbnRzOiAxCitSZWdpb25zOiAzCisq
IE5hbWVkIEZsb3cgImZsb3cyIgorQ29udGVudCBFbGVtZW50czogMQorUmVnaW9uczogMgorKiBO
YW1lZCBGbG93ICJmbG93MyIKK0NvbnRlbnQgRWxlbWVudHM6IDEKK1JlZ2lvbnM6IDEKKworUnVu
bmluZzogdGVzdEdldE5hbWVkRmxvd0NvbGxlY3Rpb24yCis9PT0gQ1NTIE5hbWVkIEZsb3dzIGlu
ICNmYWtlLWRvY3VtZW50ID09PQorI2Zha2UtZG9jdW1lbnQgaXMgbm90IGEgZG9jdW1lbnQKIAog
UnVubmluZzogdGVzdEdldEZsb3dCeU5hbWUxCiA9PT0gTmFtZWQgRmxvdyAiZmxvdzIiIGZyb20g
bWFpbiBkb2N1bWVudCA9PT0KLW5hbWU6IGZsb3cyCi1vdmVyc2V0OiBmYWxzZQorKiBOYW1lZCBG
bG93ICJmbG93MiIKK0NvbnRlbnQgRWxlbWVudHM6IDEKK1JlZ2lvbnM6IDIKIAogUnVubmluZzog
dGVzdEdldEZsb3dCeU5hbWUyCiA9PT0gTmFtZSBGbG93ICJmbG93NCIgZnJvbSBtYWluIGRvY3Vt
ZW50ID09PQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9wcm90b2Nv
bC1jc3MtcmVnaW9ucy1jb21tYW5kcy5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxl
cy9wcm90b2NvbC1jc3MtcmVnaW9ucy1jb21tYW5kcy5odG1sCmluZGV4IGU5MjU3MTcuLmQ4MzRj
MmEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMvcHJvdG9jb2wtY3Nz
LXJlZ2lvbnMtY29tbWFuZHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVz
L3Byb3RvY29sLWNzcy1yZWdpb25zLWNvbW1hbmRzLmh0bWwKQEAgLTM4LDcgKzM4LDcgQEAgZnVu
Y3Rpb24gdGVzdCgpCiB7CiAgICAgV2ViSW5zcGVjdG9yLnNob3dQYW5lbCgiZWxlbWVudHMiKTsK
ICAgICBJbnNwZWN0b3JUZXN0LnJ1blRlc3RTdWl0ZShbCi0gICAgICAgIGZ1bmN0aW9uIHRlc3RH
ZXROYW1lZEZsb3dDb2xsZWN0aW9uKG5leHQpCisgICAgICAgIGZ1bmN0aW9uIHRlc3RHZXROYW1l
ZEZsb3dDb2xsZWN0aW9uMShuZXh0KQogICAgICAgICB7CiAgICAgICAgICAgICBXZWJJbnNwZWN0
b3IuZG9tQWdlbnQucmVxdWVzdERvY3VtZW50KGRvY3VtZW50Q2FsbGJhY2spOwogCkBAIC00OSw3
ICs0OSw3IEBAIGZ1bmN0aW9uIHRlc3QoKQogCiAgICAgICAgICAgICBmdW5jdGlvbiBuYW1lZEZs
b3dDYWxsYmFjayhuYW1lZEZsb3dzKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuYWRkUmVzdWx0KCI9PT0gQ1NTIE5hbWVkIEZsb3dzID09PSIpOworICAgICAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCI9PT0gQ1NTIE5hbWVkIEZsb3dzIGlu
IG1haW4gZG9jdW1lbnQgPT09Iik7CiAKICAgICAgICAgICAgICAgICBpZiAoIW5hbWVkRmxvd3Mp
IHsKICAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIlshXSBGYWls
ZWQgdG8gZ2V0IE5hbWVkIEZsb3dzIik7CkBAIC01NywxNSArNTcsNDYgQEAgZnVuY3Rpb24gdGVz
dCgpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICB9CiAKLSAg
ICAgICAgICAgICAgICBuYW1lZEZsb3dzLnNvcnQoKTsKKyAgICAgICAgICAgICAgICBuYW1lZEZs
b3dzLnNvcnQoZnVuY3Rpb24gKG5mMSwgbmYyKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVy
biAoKG5mMS5uYW1lID09IG5mMi5uYW1lKSA/IDAgOiAoKG5mMS5uYW1lID4gbmYyLm5hbWUpID8g
MSA6IC0xKSk7CisgICAgICAgICAgICAgICAgfSk7CiAKICAgICAgICAgICAgICAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IG5hbWVkRmxvd3MubGVuZ3RoOyArK2kpCi0gICAgICAgICAgICAgICAgICAg
IEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KG5hbWVkRmxvd3NbaV0pOworICAgICAgICAgICAgICAg
ICAgICBwcmludE5hbWVkRmxvdyhuYW1lZEZsb3dzW2ldKTsKIAogICAgICAgICAgICAgICAgIG5l
eHQoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSwKIAorICAgICAgICBmdW5jdGlvbiB0ZXN0
R2V0TmFtZWRGbG93Q29sbGVjdGlvbjIobmV4dCkKKyAgICAgICAgeworICAgICAgICAgICAgV2Vi
SW5zcGVjdG9yLmRvbUFnZW50LnJlcXVlc3REb2N1bWVudChkb2N1bWVudENhbGxiYWNrKTsKKwor
ICAgICAgICAgICAgZnVuY3Rpb24gZG9jdW1lbnRDYWxsYmFjayhkb2N1bWVudCkKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICBXZWJJbnNwZWN0b3IuZG9tQWdlbnQucXVlcnlTZWxlY3Rv
cihkb2N1bWVudC5pZCwgIiNmYWtlLWRvY3VtZW50IiwgcXVlcnlTZWxlY3RvckNhbGxiYWNrKTsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24gcXVlcnlTZWxlY3RvckNhbGxi
YWNrKG5vZGVJZCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBXZWJJbnNwZWN0b3Iu
Y3NzTW9kZWwuZ2V0TmFtZWRGbG93Q29sbGVjdGlvbkFzeW5jKG5vZGVJZCwgbmFtZWRGbG93Q2Fs
bGJhY2spOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmdW5jdGlvbiBuYW1lZEZsb3dD
YWxsYmFjayhuYW1lZEZsb3dzKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QuYWRkUmVzdWx0KCI9PT0gQ1NTIE5hbWVkIEZsb3dzIGluICNmYWtlLWRvY3VtZW50
ID09PSIpOworCisgICAgICAgICAgICAgICAgaWYgKG5hbWVkRmxvd3MpIHsKKyAgICAgICAgICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIlshXSBGYWlsZWQiKTsKKyAgICAgICAg
ICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5jb21wbGV0ZVRlc3QoKTsKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QuYWRkUmVzdWx0KCIjZmFrZS1kb2N1bWVudCBpcyBub3QgYSBkb2N1bWVudCIpCisg
ICAgICAgICAgICAgICAgbmV4dCgpOworICAgICAgICAgICAgfQorICAgICAgICB9LAorCiAgICAg
ICAgIGZ1bmN0aW9uIHRlc3RHZXRGbG93QnlOYW1lMShuZXh0KQogICAgICAgICB7CiAgICAgICAg
ICAgICBXZWJJbnNwZWN0b3IuZG9tQWdlbnQucmVxdWVzdERvY3VtZW50KGRvY3VtZW50Q2FsbGJh
Y2spOwpAQCAtODUsOCArMTE2LDcgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LmFkZFJlc3VsdCgibmFtZTogIiArIG5hbWVkRmxvdy5uYW1lKTsKLSAgICAgICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgib3ZlcnNldDogIiArIG5hbWVkRmxvdy5vdmVy
c2V0KTsKKyAgICAgICAgICAgICAgICBwcmludE5hbWVkRmxvdyhuYW1lZEZsb3cpOwogCiAgICAg
ICAgICAgICAgICAgbmV4dCgpOwogICAgICAgICAgICAgfQpAQCAtMTU1LDYgKzE4NSwxMyBAQCBm
dW5jdGlvbiB0ZXN0KCkKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIF0pOworCisgICAg
ZnVuY3Rpb24gcHJpbnROYW1lZEZsb3cobmFtZWRGbG93KQorICAgIHsKKyAgICAgICAgSW5zcGVj
dG9yVGVzdC5hZGRSZXN1bHQoIiogTmFtZWQgRmxvdyBcIiIgKyBuYW1lZEZsb3cubmFtZSArICJc
IiIpOworICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiQ29udGVudCBFbGVtZW50czog
IiArIG5hbWVkRmxvdy5jb250ZW50Lmxlbmd0aCk7CisgICAgICAgIEluc3BlY3RvclRlc3QuYWRk
UmVzdWx0KCJSZWdpb25zOiAiICsgbmFtZWRGbG93LnJlZ2lvbnMubGVuZ3RoKTsKKyAgICB9CiB9
CiA8L3NjcmlwdD4KIDwvaGVhZD4KQEAgLTE3MiwxMyArMjA5LDE4IEBAIFRlc3RzIHRoZSBmb2xs
b3dpbmcgY29tbWFuZHMgYW5kIGV2ZW50czoKIAogPGFydGljbGUgc3R5bGU9Ii13ZWJraXQtZmxv
dy1pbnRvOiBmbG93MSI+PC9hcnRpY2xlPgogPGRpdiBzdHlsZT0iLXdlYmtpdC1mbG93LWZyb206
IGZsb3cxIj48L2Rpdj4KKzxkaXYgc3R5bGU9Ii13ZWJraXQtZmxvdy1mcm9tOiBmbG93MSI+PC9k
aXY+Cis8ZGl2IHN0eWxlPSItd2Via2l0LWZsb3ctZnJvbTogZmxvdzEiPjwvZGl2PgogCiA8YXJ0
aWNsZSBzdHlsZT0iLXdlYmtpdC1mbG93LWludG86IGZsb3cyIj48L2FydGljbGU+CiA8ZGl2IHN0
eWxlPSItd2Via2l0LWZsb3ctZnJvbTogZmxvdzIiPjwvZGl2PgorPGRpdiBzdHlsZT0iLXdlYmtp
dC1mbG93LWZyb206IGZsb3cyIj48L2Rpdj4KIAogPGFydGljbGUgc3R5bGU9Ii13ZWJraXQtZmxv
dy1pbnRvOiBmbG93MyI+PC9hcnRpY2xlPgogPGRpdiBzdHlsZT0iLXdlYmtpdC1mbG93LWZyb206
IGZsb3czIj48L2Rpdj4KIAorPGRpdiBpZD0iZmFrZS1kb2N1bWVudCI+PC9kaXY+CisKIDxpZnJh
bWU+PC9pZnJhbWU+CiAKIDwvYm9keT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBhYmE3ZjQ0Li45NDI4NTg4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsNDEgQEAKKzIwMTItMDgtMDkgIEFuZHJlaSBQb2VuYXJ1ICA8
cG9lbmFydUBhZG9iZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogUHJvdG9jb2wgRXh0
ZW5zaW9uOiBSZWZhY3RvciBwcm90b2NvbCBleHRlbnNpb24gZm9yIENTUyBSZWdpb25zCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MjA4OQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlcGxhY2VkICJXZWJL
aXROYW1lZEZsb3dDb2xsZWN0aW9uOjpuYW1lZEZsb3dzTmFtZXMiIHdpdGggIldlYktpdE5hbWVk
Rmxvd0NvbGxlY3Rpb246Om5hbWVkRmxvd3MiIHRvIHJldHVybiBhIFZlY3RvciBvZiAiV2ViS2l0
TmFtZWRGbG93InMsCisgICAgICAgIGluc3RlYWQgb2YgYSBWZWN0b3Igb2YgU3RyaW5ncy4KKwor
ICAgICAgICBBZGRlZCB0aGUgIlJlZ2lvbiIgdHlwZSB0byBJbnNwZWN0b3IuanNvbi4KKyAgICAg
ICAgQ2hhbmdlZCB0aGUgIk5hbWVkRmxvdyIgdHlwZSBhbmQgdGhlICJnZXROYW1lZEZsb3dDb2xs
ZWN0aW9uIiBmdW5jdGlvbiBpbiBJbnNwZWN0b3IuanNvbi4KKworICAgICAgICBNb2RpZmllZCBl
eGlzdGluZyB0ZXN0OiBpbnNwZWN0b3Ivc3R5bGVzL3Byb3RvY29sLWNzcy1yZWdpb25zLWNvbW1h
bmRzLmh0bWwKKworICAgICAgICAqIGRvbS9XZWJLaXROYW1lZEZsb3dDb2xsZWN0aW9uLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OldlYktpdE5hbWVkRmxvd0NvbGxlY3Rpb246Om5hbWVkRmxvd3Mp
OgorICAgICAgICAqIGRvbS9XZWJLaXROYW1lZEZsb3dDb2xsZWN0aW9uLmg6CisgICAgICAgIChX
ZWJLaXROYW1lZEZsb3dDb2xsZWN0aW9uKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9y
Lmpzb246CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50OjpnZXROYW1lZEZsb3dDb2xsZWN0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50OjpnZXRGbG93QnlOYW1lKToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50OjpidWlsZEFycmF5Rm9yUmVnaW9ucyk6
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50
OjpidWlsZE9iamVjdEZvck5hbWVkRmxvdyk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rv
ckNTU0FnZW50Lmg6CisgICAgICAgIChJbnNwZWN0b3JDU1NBZ2VudCk6CisgICAgICAgICogaW5z
cGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckRPTUFnZW50OjpwdXNoTm9kZVRvRnJvbnRlbmQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50Lmg6CisgICAgICAgIChJbnNwZWN0b3JE
T01BZ2VudCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9DU1NTdHlsZU1vZGVsLmpz
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU1N0eWxlTW9kZWwucHJvdG90eXBlLmdldE5hbWVk
Rmxvd0NvbGxlY3Rpb25Bc3luYyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmFtZWRGbG93KToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5OYW1lZEZsb3cucGFyc2VQYXlsb2FkQXJyYXkpOgorCiAy
MDEyLTA4LTA5ICBQYXZlbCBGZWxkbWFuICA8cGZlbGRtYW5AY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIFdlYiBJbnNwZWN0b3I6IGltcHJvdmUgbGFyZ2UgYXJyYXkgbG9nZ2luZyBleHBlcmllbmNl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vV2ViS2l0TmFtZWRGbG93Q29sbGVjdGlv
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vV2ViS2l0TmFtZWRGbG93Q29sbGVjdGlvbi5jcHAK
aW5kZXggNjU1ZGI1Yi4uOTI3MzcyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1dl
YktpdE5hbWVkRmxvd0NvbGxlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9XZWJL
aXROYW1lZEZsb3dDb2xsZWN0aW9uLmNwcApAQCAtNDQsMTUgKzQ0LDE1IEBAIFdlYktpdE5hbWVk
Rmxvd0NvbGxlY3Rpb246OldlYktpdE5hbWVkRmxvd0NvbGxlY3Rpb24oRG9jdW1lbnQqIGRvYykK
IHsKIH0KIAotVmVjdG9yPFN0cmluZz4gV2ViS2l0TmFtZWRGbG93Q29sbGVjdGlvbjo6bmFtZWRG
bG93c05hbWVzKCkKK1ZlY3RvcjxSZWZQdHI8V2ViS2l0TmFtZWRGbG93PiA+IFdlYktpdE5hbWVk
Rmxvd0NvbGxlY3Rpb246Om5hbWVkRmxvd3MoKQogewotICAgIFZlY3RvcjxTdHJpbmc+IG5hbWVk
Rmxvd3M7CisgICAgVmVjdG9yPFJlZlB0cjxXZWJLaXROYW1lZEZsb3c+ID4gbmFtZWRGbG93czsK
IAogICAgIGZvciAoTmFtZWRGbG93U2V0OjppdGVyYXRvciBpdCA9IG1fbmFtZWRGbG93cy5iZWdp
bigpOyBpdCAhPSBtX25hbWVkRmxvd3MuZW5kKCk7ICsraXQpIHsKICAgICAgICAgaWYgKCgqaXQp
LT5mbG93U3RhdGUoKSA9PSBXZWJLaXROYW1lZEZsb3c6OkZsb3dTdGF0ZU51bGwpCiAgICAgICAg
ICAgICBjb250aW51ZTsKIAotICAgICAgICBuYW1lZEZsb3dzLmFwcGVuZCgoKml0KS0+bmFtZSgp
LnN0cmluZygpKTsKKyAgICAgICAgbmFtZWRGbG93cy5hcHBlbmQoUmVmUHRyPFdlYktpdE5hbWVk
Rmxvdz4oKml0KSk7CiAgICAgfQogCiAgICAgcmV0dXJuIG5hbWVkRmxvd3M7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vV2ViS2l0TmFtZWRGbG93Q29sbGVjdGlvbi5oIGIvU291cmNl
L1dlYkNvcmUvZG9tL1dlYktpdE5hbWVkRmxvd0NvbGxlY3Rpb24uaAppbmRleCA2Nzg3OGE3Li5i
ZjAxZDRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vV2ViS2l0TmFtZWRGbG93Q29s
bGVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9XZWJLaXROYW1lZEZsb3dDb2xsZWN0
aW9uLmgKQEAgLTQ1LDcgKzQ1LDcgQEAgY2xhc3MgV2ViS2l0TmFtZWRGbG93Q29sbGVjdGlvbiA6
IHB1YmxpYyBSZWZDb3VudGVkPFdlYktpdE5hbWVkRmxvd0NvbGxlY3Rpb24+IHsKIHB1YmxpYzoK
ICAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJLaXROYW1lZEZsb3dDb2xsZWN0aW9uPiBjcmVhdGUo
RG9jdW1lbnQqIGRvYykgeyByZXR1cm4gYWRvcHRSZWYobmV3IFdlYktpdE5hbWVkRmxvd0NvbGxl
Y3Rpb24oZG9jKSk7IH0KIAotICAgIFZlY3RvcjxTdHJpbmc+IG5hbWVkRmxvd3NOYW1lcygpOwor
ICAgIFZlY3RvcjxSZWZQdHI8V2ViS2l0TmFtZWRGbG93PiA+IG5hbWVkRmxvd3MoKTsKICAgICBX
ZWJLaXROYW1lZEZsb3cqIGZsb3dCeU5hbWUoY29uc3QgU3RyaW5nJik7CiAgICAgUGFzc1JlZlB0
cjxXZWJLaXROYW1lZEZsb3c+IGVuc3VyZUZsb3dXaXRoTmFtZShjb25zdCBTdHJpbmcmKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uCmluZGV4IGM2MmNlNDMuLjFkYmU2
ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbgor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24KQEAgLTIxODMsMTIg
KzIxODMsMjQgQEAKICAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgICB9LAogICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgICJpZCI6ICJSZWdpb24iLAorICAgICAgICAgICAgICAgICJ0
eXBlIjogIm9iamVjdCIsCisgICAgICAgICAgICAgICAgInByb3BlcnRpZXMiOiBbCisgICAgICAg
ICAgICAgICAgICAgIHsgIm5hbWUiOiAicmVnaW9uT3ZlcnNldCIsICJ0eXBlIjogInN0cmluZyIs
ICJlbnVtIjogWyJvdmVyc2V0IiwgImZpdCIsICJlbXB0eSJdLCAiZGVzY3JpcHRpb24iOiAiVGhl
IFwib3ZlcnNldFwiIGF0dHJpYnV0ZSBvZiBhIE5hbWVkIEZsb3cuIiB9LAorICAgICAgICAgICAg
ICAgICAgICB7ICJuYW1lIjogIm5vZGVJZCIsICIkcmVmIjogIkRPTS5Ob2RlSWQiLCAiZGVzY3Jp
cHRpb24iOiAiVGhlIGNvcnJlc3BvbmRpbmcgRE9NIG5vZGUgaWQuIiB9CisgICAgICAgICAgICAg
ICAgXSwKKyAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiVGhpcyBvYmplY3QgcmVwcmVz
ZW50cyBhIHJlZ2lvbiB0aGF0IGZsb3dzIGZyb20gYSBOYW1lZCBGbG93LiIsCisgICAgICAgICAg
ICAgICAgImhpZGRlbiI6IHRydWUKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICB7CiAgICAg
ICAgICAgICAgICAgImlkIjogIk5hbWVkRmxvdyIsCiAgICAgICAgICAgICAgICAgInR5cGUiOiAi
b2JqZWN0IiwKICAgICAgICAgICAgICAgICAicHJvcGVydGllcyI6IFsKLSAgICAgICAgICAgICAg
ICAgICAgeyAibmFtZSI6ICJub2RlSWQiLCAiJHJlZiI6ICJET00uTm9kZUlkIiwgImRlc2NyaXB0
aW9uIjogIlRoZSBkb2N1bWVudCBub2RlIGlkLiIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAi
bmFtZSI6ICJkb2N1bWVudE5vZGVJZCIsICIkcmVmIjogIkRPTS5Ob2RlSWQiLCAiZGVzY3JpcHRp
b24iOiAiVGhlIGRvY3VtZW50IG5vZGUgaWQuIiB9LAogICAgICAgICAgICAgICAgICAgICB7ICJu
YW1lIjogIm5hbWUiLCAidHlwZSI6ICJzdHJpbmciLCAiZGVzY3JpcHRpb24iOiAiTmFtZWQgRmxv
dyBpZGVudGlmaWVyLiIgfSwKLSAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJvdmVyc2V0
IiwgInR5cGUiOiAiYm9vbGVhbiIsICJkZXNjcmlwdGlvbiI6ICJUaGUgXCJvdmVyc2V0XCIgYXR0
cmlidXRlIG9mIGEgTmFtZWQgRmxvdy4iIH0KKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6
ICJvdmVyc2V0IiwgInR5cGUiOiAiYm9vbGVhbiIsICJkZXNjcmlwdGlvbiI6ICJUaGUgXCJvdmVy
c2V0XCIgYXR0cmlidXRlIG9mIGEgTmFtZWQgRmxvdy4iIH0sCisgICAgICAgICAgICAgICAgICAg
IHsgIm5hbWUiOiAiY29udGVudCIsICJ0eXBlIjogImFycmF5IiwgIml0ZW1zIjogeyAiJHJlZiI6
ICJET00uTm9kZUlkIiB9LCAiZGVzY3JpcHRpb24iOiAiQW4gYXJyYXkgb2Ygbm9kZXMgdGhhdCBm
bG93IGludG8gdGhlIE5hbWVkIEZsb3cuIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJuYW1l
IjogInJlZ2lvbnMiLCAidHlwZSI6ICJhcnJheSIsICJpdGVtcyI6IHsgIiRyZWYiOiAiUmVnaW9u
IiB9LCAiZGVzY3JpcHRpb24iOiAiQW4gYXJyYXkgb2YgcmVnaW9ucyBhc3NvY2lhdGVkIHdpdGgg
dGhlIE5hbWVkIEZsb3cuIiB9CiAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAi
ZGVzY3JpcHRpb24iOiAiVGhpcyBvYmplY3QgcmVwcmVzZW50cyBhIE5hbWVkIEZsb3cuIiwKICAg
ICAgICAgICAgICAgICAiaGlkZGVuIjogdHJ1ZQpAQCAtMjM0MSwxMCArMjM1MywxMCBAQAogICAg
ICAgICAgICAgewogICAgICAgICAgICAgICAgICJuYW1lIjogImdldE5hbWVkRmxvd0NvbGxlY3Rp
b24iLAogICAgICAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogWwotICAgICAgICAgICAgICAgICAg
ICB7ICJuYW1lIjogIm5vZGVJZCIsICIkcmVmIjogIkRPTS5Ob2RlSWQiLCAiZGVzY3JpcHRpb24i
OiAiVGhlIGRvY3VtZW50IG5vZGUgaWQgZm9yIHdoaWNoIHRvIGdldCB0aGUgTmFtZWQgRmxvdyBD
b2xsZWN0aW9uLiIgfQorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImRvY3VtZW50Tm9k
ZUlkIiwgIiRyZWYiOiAiRE9NLk5vZGVJZCIsICJkZXNjcmlwdGlvbiI6ICJUaGUgZG9jdW1lbnQg
bm9kZSBpZCBmb3Igd2hpY2ggdG8gZ2V0IHRoZSBOYW1lZCBGbG93IENvbGxlY3Rpb24uIiB9CiAg
ICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAicmV0dXJucyI6IFsKLSAgICAgICAg
ICAgICAgICAgICAgeyAibmFtZSI6ICJuYW1lZEZsb3dzIiwgInR5cGUiOiAiYXJyYXkiLCAiaXRl
bXMiOiB7ICJ0eXBlIjogInN0cmluZyIgfSwgImRlc2NyaXB0aW9uIjogIkFuIGFycmF5IGNvbnRh
aW5pbmcgdGhlIE5hbWVkIEZsb3dzIGluIHRoZSBkb2N1bWVudC4iIH0KKyAgICAgICAgICAgICAg
ICAgICAgeyAibmFtZSI6ICJuYW1lZEZsb3dzIiwgInR5cGUiOiAiYXJyYXkiLCAiaXRlbXMiOiB7
ICIkcmVmIjogIk5hbWVkRmxvdyIgfSwgImRlc2NyaXB0aW9uIjogIkFuIGFycmF5IGNvbnRhaW5p
bmcgdGhlIE5hbWVkIEZsb3dzIGluIHRoZSBkb2N1bWVudC4iIH0KICAgICAgICAgICAgICAgICBd
LAogICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIHRoZSBOYW1lZCBGbG93
cyBmcm9tIHRoZSBkb2N1bWVudC4iLAogICAgICAgICAgICAgICAgICJoaWRkZW4iOiB0cnVlCkBA
IC0yMzUyLDcgKzIzNjQsNyBAQAogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICJuYW1l
IjogImdldEZsb3dCeU5hbWUiLAogICAgICAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogWwotICAg
ICAgICAgICAgICAgICAgICB7ICJuYW1lIjogIm5vZGVJZCIsICIkcmVmIjogIkRPTS5Ob2RlSWQi
LCAiZGVzY3JpcHRpb24iOiAiVGhlIGRvY3VtZW50IG5vZGUgaWQuIiB9LAorICAgICAgICAgICAg
ICAgICAgICB7ICJuYW1lIjogImRvY3VtZW50Tm9kZUlkIiwgIiRyZWYiOiAiRE9NLk5vZGVJZCIs
ICJkZXNjcmlwdGlvbiI6ICJUaGUgZG9jdW1lbnQgbm9kZSBpZC4iIH0sCiAgICAgICAgICAgICAg
ICAgICAgIHsgIm5hbWUiOiAibmFtZSIsICJ0eXBlIjogInN0cmluZyIsICJkZXNjcmlwdGlvbiI6
ICJOYW1lZCBGbG93IGlkZW50aWZpZXIuIiB9CiAgICAgICAgICAgICAgICAgXSwKICAgICAgICAg
ICAgICAgICAicmV0dXJucyI6IFsKQEAgLTIzNzcsNyArMjM4OSw3IEBACiAgICAgICAgICAgICB7
CiAgICAgICAgICAgICAgICAgIm5hbWUiOiAibmFtZWRGbG93Q3JlYXRlZCIsCiAgICAgICAgICAg
ICAgICAgInBhcmFtZXRlcnMiOiBbCi0gICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAibm9k
ZUlkIiwgIiRyZWYiOiAiRE9NLk5vZGVJZCIsICJkZXNjcmlwdGlvbiI6ICJUaGUgZG9jdW1lbnQg
bm9kZSBpZC4iIH0sCisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiZG9jdW1lbnROb2Rl
SWQiLCAiJHJlZiI6ICJET00uTm9kZUlkIiwgImRlc2NyaXB0aW9uIjogIlRoZSBkb2N1bWVudCBu
b2RlIGlkLiIgfSwKICAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJuYW1lZEZsb3ciLCAi
dHlwZSI6ICJzdHJpbmciLCAiZGVzY3JpcHRpb24iOiAiSWRlbnRpZmllciBvZiB0aGUgbmV3IE5h
bWVkIEZsb3cuIiB9CiAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAiZGVzY3Jp
cHRpb24iOiAiRmlyZXMgd2hlbiBhIE5hbWVkIEZsb3cgaXMgY3JlYXRlZC4iLApAQCAtMjM4Niw3
ICsyMzk4LDcgQEAKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAibmFtZSI6ICJuYW1l
ZEZsb3dSZW1vdmVkIiwKICAgICAgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKLSAgICAgICAg
ICAgICAgICAgICAgeyAibmFtZSI6ICJub2RlSWQiLCAiJHJlZiI6ICJET00uTm9kZUlkIiwgImRl
c2NyaXB0aW9uIjogIlRoZSBkb2N1bWVudCBub2RlIGlkLiIgfSwKKyAgICAgICAgICAgICAgICAg
ICAgeyAibmFtZSI6ICJkb2N1bWVudE5vZGVJZCIsICIkcmVmIjogIkRPTS5Ob2RlSWQiLCAiZGVz
Y3JpcHRpb24iOiAiVGhlIGRvY3VtZW50IG5vZGUgaWQuIiB9LAogICAgICAgICAgICAgICAgICAg
ICB7ICJuYW1lIjogIm5hbWVkRmxvdyIsICJ0eXBlIjogInN0cmluZyIsICJkZXNjcmlwdGlvbiI6
ICJJZGVudGlmaWVyIG9mIHRoZSByZW1vdmVkIE5hbWVkIEZsb3cuIiB9CiAgICAgICAgICAgICAg
ICAgXSwKICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiRmlyZXMgd2hlbiBhIE5hbWVk
IEZsb3cgaXMgcmVtb3ZlZDogaGFzIG5vIGFzc29jaWF0ZWQgY29udGVudCBub2RlcyBhbmQgcmVn
aW9ucy4iLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNT
U0FnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5j
cHAKaW5kZXggZTJhOWZhMy4uODhhYTAwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCkBAIC00Nyw2ICs0Nyw3IEBACiAjaW5jbHVkZSAiSW5z
dHJ1bWVudGluZ0FnZW50cy5oIgogI2luY2x1ZGUgIk5vZGUuaCIKICNpbmNsdWRlICJOb2RlTGlz
dC5oIgorI2luY2x1ZGUgIlJlbmRlclJlZ2lvbi5oIgogI2luY2x1ZGUgIlN0eWxlUHJvcGVydHlT
ZXQuaCIKICNpbmNsdWRlICJTdHlsZVByb3BlcnR5U2hvcnRoYW5kLmgiCiAjaW5jbHVkZSAiU3R5
bGVSZXNvbHZlci5oIgpAQCAtODI0LDM5ICs4MjUsMzcgQEAgdm9pZCBJbnNwZWN0b3JDU1NBZ2Vu
dDo6Z2V0U3VwcG9ydGVkQ1NTUHJvcGVydGllcyhFcnJvclN0cmluZyosIFJlZlB0cjxUeXBlQnVp
bGQKICAgICBjc3NQcm9wZXJ0aWVzID0gcHJvcGVydGllcy5yZWxlYXNlKCk7CiB9CiAKLXZvaWQg
SW5zcGVjdG9yQ1NTQWdlbnQ6OmdldE5hbWVkRmxvd0NvbGxlY3Rpb24oRXJyb3JTdHJpbmcqIGVy
cm9yU3RyaW5nLCBpbnQgbm9kZUlkLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFN0cmluZz4g
PiYgcmVzdWx0KQordm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0TmFtZWRGbG93Q29sbGVjdGlv
bihFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGludCBkb2N1bWVudE5vZGVJZCwgUmVmUHRyPFR5
cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6Q1NTOjpOYW1lZEZsb3c+ID4mIHJlc3VsdCkK
IHsKLSAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBtX2RvbUFnZW50LT5hc3NlcnREb2N1bWVudChl
cnJvclN0cmluZywgbm9kZUlkKTsKKyAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBtX2RvbUFnZW50
LT5hc3NlcnREb2N1bWVudChlcnJvclN0cmluZywgZG9jdW1lbnROb2RlSWQpOwogICAgIGlmICgh
ZG9jdW1lbnQpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fbmFtZWRGbG93Q29sbGVjdGlvbnNS
ZXF1ZXN0ZWQuYWRkKG5vZGVJZCk7CisgICAgbV9uYW1lZEZsb3dDb2xsZWN0aW9uc1JlcXVlc3Rl
ZC5hZGQoZG9jdW1lbnROb2RlSWQpOworICAgIFZlY3RvcjxSZWZQdHI8V2ViS2l0TmFtZWRGbG93
PiA+IG5hbWVkRmxvd3NWZWN0b3IgPSBkb2N1bWVudC0+bmFtZWRGbG93cygpLT5uYW1lZEZsb3dz
KCk7CisgICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6Q1NTOjpOYW1l
ZEZsb3c+ID4gbmFtZWRGbG93cyA9IFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6Q1NT
OjpOYW1lZEZsb3c+OjpjcmVhdGUoKTsKIAotICAgIFZlY3RvcjxTdHJpbmc+IG5hbWVkRmxvd3NW
ZWN0b3IgPSBkb2N1bWVudC0+bmFtZWRGbG93cygpLT5uYW1lZEZsb3dzTmFtZXMoKTsKLSAgICBS
ZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFN0cmluZz4gPiBuYW1lZEZsb3dzID0gVHlwZUJ1aWxk
ZXI6OkFycmF5PFN0cmluZz46OmNyZWF0ZSgpOwogCi0gICAgZm9yIChWZWN0b3I8U3RyaW5nPjo6
aXRlcmF0b3IgaXQgPSBuYW1lZEZsb3dzVmVjdG9yLmJlZ2luKCk7IGl0ICE9IG5hbWVkRmxvd3NW
ZWN0b3IuZW5kKCk7ICsraXQpCi0gICAgICAgIG5hbWVkRmxvd3MtPmFkZEl0ZW0oKml0KTsKKyAg
ICBmb3IgKFZlY3RvcjxSZWZQdHI8V2ViS2l0TmFtZWRGbG93PiA+OjppdGVyYXRvciBpdCA9IG5h
bWVkRmxvd3NWZWN0b3IuYmVnaW4oKTsgaXQgIT0gbmFtZWRGbG93c1ZlY3Rvci5lbmQoKTsgKytp
dCkKKyAgICAgICAgbmFtZWRGbG93cy0+YWRkSXRlbShidWlsZE9iamVjdEZvck5hbWVkRmxvdyhl
cnJvclN0cmluZywgaXQtPmdldCgpLCBkb2N1bWVudE5vZGVJZCkpOwogCiAgICAgcmVzdWx0ID0g
bmFtZWRGbG93cy5yZWxlYXNlKCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmdldEZs
b3dCeU5hbWUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBpbnQgbm9kZUlkLCBjb25zdCBTdHJp
bmcmIGZsb3dOYW1lLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6TmFtZWRGbG93PiYgcmVzdWx0
KQordm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0Rmxvd0J5TmFtZShFcnJvclN0cmluZyogZXJy
b3JTdHJpbmcsIGludCBkb2N1bWVudE5vZGVJZCwgY29uc3QgU3RyaW5nJiBmbG93TmFtZSwgUmVm
UHRyPFR5cGVCdWlsZGVyOjpDU1M6Ok5hbWVkRmxvdz4mIHJlc3VsdCkKIHsKLSAgICBEb2N1bWVu
dCogZG9jdW1lbnQgPSBtX2RvbUFnZW50LT5hc3NlcnREb2N1bWVudChlcnJvclN0cmluZywgbm9k
ZUlkKTsKKyAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBtX2RvbUFnZW50LT5hc3NlcnREb2N1bWVu
dChlcnJvclN0cmluZywgZG9jdW1lbnROb2RlSWQpOwogICAgIGlmICghZG9jdW1lbnQpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIFdlYktpdE5hbWVkRmxvdyogbmFtZWRGbG93ID0gZG9jdW1lbnQt
Pm5hbWVkRmxvd3MoKS0+Zmxvd0J5TmFtZShmbG93TmFtZSk7Ci0gICAgaWYgKCFuYW1lZEZsb3cp
IHsKKyAgICBXZWJLaXROYW1lZEZsb3cqIHdlYmtpdE5hbWVkRmxvdyA9IGRvY3VtZW50LT5uYW1l
ZEZsb3dzKCktPmZsb3dCeU5hbWUoZmxvd05hbWUpOworICAgIGlmICghd2Via2l0TmFtZWRGbG93
KSB7CiAgICAgICAgICplcnJvclN0cmluZyA9ICJObyB0YXJnZXQgQ1NTIE5hbWVkIEZsb3cgZm91
bmQiOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgcmVzdWx0ID0gVHlwZUJ1aWxkZXI6
OkNTUzo6TmFtZWRGbG93OjpjcmVhdGUoKQotICAgICAgICAuc2V0Tm9kZUlkKG5vZGVJZCkKLSAg
ICAgICAgLnNldE5hbWUoZmxvd05hbWUpCi0gICAgICAgIC5zZXRPdmVyc2V0KG5hbWVkRmxvdy0+
b3ZlcnNldCgpKTsKKyAgICBSZWZQdHI8V2ViS2l0TmFtZWRGbG93PiBwcm90ZWN0b3Iod2Via2l0
TmFtZWRGbG93KTsKKyAgICByZXN1bHQgPSBidWlsZE9iamVjdEZvck5hbWVkRmxvdyhlcnJvclN0
cmluZywgd2Via2l0TmFtZWRGbG93LCBkb2N1bWVudE5vZGVJZCk7CiB9CiAKIHZvaWQgSW5zcGVj
dG9yQ1NTQWdlbnQ6OnN0YXJ0U2VsZWN0b3JQcm9maWxlcihFcnJvclN0cmluZyopCkBAIC0xMDcy
LDYgKzEwNzEsNjEgQEAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHlsZT4gSW5z
cGVjdG9yQ1NTQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yQXR0cmlidXQKICAgICByZXR1cm4gaW5zcGVj
dG9yU3R5bGUtPmJ1aWxkT2JqZWN0Rm9yU3R5bGUoKTsKIH0KIAorUGFzc1JlZlB0cjxUeXBlQnVp
bGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkNTUzo6UmVnaW9uPiA+IEluc3BlY3RvckNTU0FnZW50
OjpidWlsZEFycmF5Rm9yUmVnaW9ucyhFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIFBhc3NSZWZQ
dHI8Tm9kZUxpc3Q+IHJlZ2lvbkxpc3QsIGludCBkb2N1bWVudE5vZGVJZCkKK3sKKyAgICBSZWZQ
dHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpDU1M6OlJlZ2lvbj4gPiByZWdpb25z
ID0gVHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpDU1M6OlJlZ2lvbj46OmNyZWF0ZSgp
OworCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHJlZ2lvbkxpc3QtPmxlbmd0aCgpOyAr
K2kpIHsKKyAgICAgICAgVHlwZUJ1aWxkZXI6OkNTUzo6UmVnaW9uOjpSZWdpb25PdmVyc2V0OjpF
bnVtIHJlZ2lvbk92ZXJzZXQ7CisKKyAgICAgICAgc3dpdGNoICh0b0VsZW1lbnQocmVnaW9uTGlz
dC0+aXRlbShpKSktPnJlbmRlclJlZ2lvbigpLT5yZWdpb25TdGF0ZSgpKSB7CisgICAgICAgIGNh
c2UgUmVuZGVyUmVnaW9uOjpSZWdpb25GaXQ6CisgICAgICAgICAgICByZWdpb25PdmVyc2V0ID0g
VHlwZUJ1aWxkZXI6OkNTUzo6UmVnaW9uOjpSZWdpb25PdmVyc2V0OjpGaXQ7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgY2FzZSBSZW5kZXJSZWdpb246OlJlZ2lvbkVtcHR5OgorICAgICAg
ICAgICAgcmVnaW9uT3ZlcnNldCA9IFR5cGVCdWlsZGVyOjpDU1M6OlJlZ2lvbjo6UmVnaW9uT3Zl
cnNldDo6RW1wdHk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBSZW5kZXJSZWdp
b246OlJlZ2lvbk92ZXJzZXQ6CisgICAgICAgICAgICByZWdpb25PdmVyc2V0ID0gVHlwZUJ1aWxk
ZXI6OkNTUzo6UmVnaW9uOjpSZWdpb25PdmVyc2V0OjpPdmVyc2V0OworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGNhc2UgUmVuZGVyUmVnaW9uOjpSZWdpb25VbmRlZmluZWQ6CisgICAgICAg
ICAgICBjb250aW51ZTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKworICAgICAgICBS
ZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6UmVnaW9uPiByZWdpb24gPSBUeXBlQnVpbGRlcjo6Q1NT
OjpSZWdpb246OmNyZWF0ZSgpCisgICAgICAgICAgICAuc2V0UmVnaW9uT3ZlcnNldChyZWdpb25P
dmVyc2V0KQorICAgICAgICAgICAgLy8gZG9jdW1lbnROb2RlSWQgd2FzIHByZXZpb3VzbHkgYXNz
ZXJ0ZWQKKyAgICAgICAgICAgIC5zZXROb2RlSWQobV9kb21BZ2VudC0+cHVzaE5vZGVUb0Zyb250
ZW5kKGVycm9yU3RyaW5nLCBkb2N1bWVudE5vZGVJZCwgcmVnaW9uTGlzdC0+aXRlbShpKSkpOwor
CisgICAgICAgIHJlZ2lvbnMtPmFkZEl0ZW0ocmVnaW9uKTsKKyAgICB9CisKKyAgICByZXR1cm4g
cmVnaW9ucy5yZWxlYXNlKCk7Cit9CisKK1Bhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6TmFt
ZWRGbG93PiBJbnNwZWN0b3JDU1NBZ2VudDo6YnVpbGRPYmplY3RGb3JOYW1lZEZsb3coRXJyb3JT
dHJpbmcqIGVycm9yU3RyaW5nLCBXZWJLaXROYW1lZEZsb3cqIHdlYmtpdE5hbWVkRmxvdywgaW50
IGRvY3VtZW50Tm9kZUlkKQoreworICAgIFJlZlB0cjxOb2RlTGlzdD4gY29udGVudExpc3QgPSB3
ZWJraXROYW1lZEZsb3ctPmdldENvbnRlbnQoKTsKKyAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFy
cmF5PGludD4gPiBjb250ZW50ID0gVHlwZUJ1aWxkZXI6OkFycmF5PGludD46OmNyZWF0ZSgpOwor
CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNvbnRlbnRMaXN0LT5sZW5ndGgoKTsgKytp
KSB7CisgICAgICAgIC8vIGRvY3VtZW50Tm9kZUlkIHdhcyBwcmV2aW91c2x5IGFzc2VydGVkCisg
ICAgICAgIGNvbnRlbnQtPmFkZEl0ZW0obV9kb21BZ2VudC0+cHVzaE5vZGVUb0Zyb250ZW5kKGVy
cm9yU3RyaW5nLCBkb2N1bWVudE5vZGVJZCwgY29udGVudExpc3QtPml0ZW0oaSkpKTsKKyAgICB9
CisKKyAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6TmFtZWRGbG93PiBuYW1lZEZsb3cgPSBU
eXBlQnVpbGRlcjo6Q1NTOjpOYW1lZEZsb3c6OmNyZWF0ZSgpCisgICAgICAgIC5zZXREb2N1bWVu
dE5vZGVJZChkb2N1bWVudE5vZGVJZCkKKyAgICAgICAgLnNldE5hbWUod2Via2l0TmFtZWRGbG93
LT5uYW1lKCkuc3RyaW5nKCkpCisgICAgICAgIC5zZXRPdmVyc2V0KHdlYmtpdE5hbWVkRmxvdy0+
b3ZlcnNldCgpKQorICAgICAgICAuc2V0Q29udGVudChjb250ZW50KQorICAgICAgICAuc2V0UmVn
aW9ucyhidWlsZEFycmF5Rm9yUmVnaW9ucyhlcnJvclN0cmluZywgd2Via2l0TmFtZWRGbG93LT5n
ZXRSZWdpb25zKCksIGRvY3VtZW50Tm9kZUlkKSk7CisKKyAgICByZXR1cm4gbmFtZWRGbG93LnJl
bGVhc2UoKTsKK30KKwogdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6ZGlkUmVtb3ZlRG9jdW1lbnQo
RG9jdW1lbnQqIGRvY3VtZW50KQogewogICAgIGlmIChkb2N1bWVudCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5oIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmgKaW5kZXggYTk3MTE2ZS4uODc3ODA1MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmgKQEAgLTEx
Myw4ICsxMTMsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldFJ1bGVTZWxlY3RvcihF
cnJvclN0cmluZyosIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiBydWxlSWQsIGNvbnN0
IFN0cmluZyYgc2VsZWN0b3IsIFJlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NSdWxlPiYgcmVz
dWx0KTsKICAgICB2aXJ0dWFsIHZvaWQgYWRkUnVsZShFcnJvclN0cmluZyosIGludCBjb250ZXh0
Tm9kZUlkLCBjb25zdCBTdHJpbmcmIHNlbGVjdG9yLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6
Q1NTUnVsZT4mIHJlc3VsdCk7CiAgICAgdmlydHVhbCB2b2lkIGdldFN1cHBvcnRlZENTU1Byb3Bl
cnRpZXMoRXJyb3JTdHJpbmcqLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVy
OjpDU1M6OkNTU1Byb3BlcnR5SW5mbz4gPiYgcmVzdWx0KTsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0
TmFtZWRGbG93Q29sbGVjdGlvbihFcnJvclN0cmluZyosIGludCBub2RlSWQsIFJlZlB0cjxUeXBl
QnVpbGRlcjo6QXJyYXk8U3RyaW5nPiA+JiByZXN1bHQpOwotICAgIHZpcnR1YWwgdm9pZCBnZXRG
bG93QnlOYW1lKEVycm9yU3RyaW5nKiwgaW50IG5vZGVJZCwgY29uc3QgU3RyaW5nJiBmbG93TmFt
ZSwgUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6Ok5hbWVkRmxvdz4mIHJlc3VsdCk7CisgICAgdmly
dHVhbCB2b2lkIGdldE5hbWVkRmxvd0NvbGxlY3Rpb24oRXJyb3JTdHJpbmcqLCBpbnQgZG9jdW1l
bnROb2RlSWQsIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkNTUzo6TmFt
ZWRGbG93PiA+JiByZXN1bHQpOworICAgIHZpcnR1YWwgdm9pZCBnZXRGbG93QnlOYW1lKEVycm9y
U3RyaW5nKiwgaW50IGRvY3VtZW50Tm9kZUlkLCBjb25zdCBTdHJpbmcmIGZsb3dOYW1lLCBSZWZQ
dHI8VHlwZUJ1aWxkZXI6OkNTUzo6TmFtZWRGbG93PiYgcmVzdWx0KTsKIAogICAgIHZpcnR1YWwg
dm9pZCBzdGFydFNlbGVjdG9yUHJvZmlsZXIoRXJyb3JTdHJpbmcqKTsKICAgICB2aXJ0dWFsIHZv
aWQgc3RvcFNlbGVjdG9yUHJvZmlsZXIoRXJyb3JTdHJpbmcqLCBSZWZQdHI8VHlwZUJ1aWxkZXI6
OkNTUzo6U2VsZWN0b3JQcm9maWxlPiYpOwpAQCAtMTUzLDYgKzE1Myw4IEBAIHByaXZhdGU6CiAK
ICAgICBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NS
dWxlPiA+IGJ1aWxkQXJyYXlGb3JSdWxlTGlzdChDU1NSdWxlTGlzdCosIFN0eWxlUmVzb2x2ZXIq
KTsKICAgICBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlPiBidWlsZE9iamVj
dEZvckF0dHJpYnV0ZXNTdHlsZShFbGVtZW50Kik7CisgICAgUGFzc1JlZlB0cjxUeXBlQnVpbGRl
cjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkNTUzo6UmVnaW9uPiA+IGJ1aWxkQXJyYXlGb3JSZWdpb25z
KEVycm9yU3RyaW5nKiwgUGFzc1JlZlB0cjxOb2RlTGlzdD4sIGludCBkb2N1bWVudE5vZGVJZCk7
CisgICAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpOYW1lZEZsb3c+IGJ1aWxkT2JqZWN0
Rm9yTmFtZWRGbG93KEVycm9yU3RyaW5nKiwgV2ViS2l0TmFtZWRGbG93KiwgaW50IGRvY3VtZW50
Tm9kZUlkKTsKIAogICAgIC8vIEluc3BlY3RvckRPTUFnZW50OjpET01MaXN0ZW5lciBpbXBsZW1l
bnRhdGlvbgogICAgIHZpcnR1YWwgdm9pZCBkaWRSZW1vdmVEb2N1bWVudChEb2N1bWVudCopOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAKaW5kZXgg
OWRmOWY3My4uMjA0MzEyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckRPTUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yRE9NQWdlbnQuY3BwCkBAIC00NDksNiArNDQ5LDE0IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdl
bnQ6OmRpc2NhcmRCaW5kaW5ncygpCiAgICAgbV9jaGlsZHJlblJlcXVlc3RlZC5jbGVhcigpOwog
fQogCitpbnQgSW5zcGVjdG9yRE9NQWdlbnQ6OnB1c2hOb2RlVG9Gcm9udGVuZChFcnJvclN0cmlu
ZyogZXJyb3JTdHJpbmcsIGludCBkb2N1bWVudE5vZGVJZCwgTm9kZSogbm9kZVRvUHVzaCkKK3sK
KyAgICBpZiAoIWFzc2VydERvY3VtZW50KGVycm9yU3RyaW5nLCBkb2N1bWVudE5vZGVJZCkpCisg
ICAgICAgIHJldHVybiAwOworCisgICAgcmV0dXJuIHB1c2hOb2RlUGF0aFRvRnJvbnRlbmQobm9k
ZVRvUHVzaCk7Cit9CisKIE5vZGUqIEluc3BlY3RvckRPTUFnZW50Ojpub2RlRm9ySWQoaW50IGlk
KQogewogICAgIGlmICghaWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRE9NQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JE
T01BZ2VudC5oCmluZGV4IDQ2MGE0NzUuLmFlZGY3NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5oCkBAIC0xNjgsNiArMTY4LDcgQEAgcHVibGljOgog
ICAgIHZvaWQgZGlkUHVzaFNoYWRvd1Jvb3QoRWxlbWVudCogaG9zdCwgU2hhZG93Um9vdCopOwog
ICAgIHZvaWQgd2lsbFBvcFNoYWRvd1Jvb3QoRWxlbWVudCogaG9zdCwgU2hhZG93Um9vdCopOwog
CisgICAgaW50IHB1c2hOb2RlVG9Gcm9udGVuZChFcnJvclN0cmluZyosIGludCBkb2N1bWVudE5v
ZGVJZCwgTm9kZSopOwogICAgIE5vZGUqIG5vZGVGb3JJZChpbnQgbm9kZUlkKTsKICAgICBpbnQg
Ym91bmROb2RlSWQoTm9kZSopOwogICAgIHZvaWQgc2V0RE9NTGlzdGVuZXIoRE9NTGlzdGVuZXIq
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ1NTU3R5
bGVNb2RlbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ1NTU3R5bGVN
b2RlbC5qcwppbmRleCAwZmM0ZDQwLi4wMWIzMjRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NTU1N0eWxlTW9kZWwuanMKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9DU1NTdHlsZU1vZGVsLmpzCkBAIC0xNjQsMjEgKzE2NCwy
MSBAQCBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVNb2RlbC5wcm90b3R5cGUgPSB7CiAKICAgICAvKioK
ICAgICAgKiBAcGFyYW0ge0RPTUFnZW50Lk5vZGVJZH0gbm9kZUlkCi0gICAgICogQHBhcmFtIHtm
dW5jdGlvbig/QXJyYXkuPHN0cmluZz4pfSB1c2VyQ2FsbGJhY2sKKyAgICAgKiBAcGFyYW0ge2Z1
bmN0aW9uKD9BcnJheS48V2ViSW5zcGVjdG9yLk5hbWVkRmxvdz4pfSB1c2VyQ2FsbGJhY2sKICAg
ICAgKi8KICAgICBnZXROYW1lZEZsb3dDb2xsZWN0aW9uQXN5bmM6IGZ1bmN0aW9uKG5vZGVJZCwg
dXNlckNhbGxiYWNrKQogICAgIHsKICAgICAgICAgLyoqCi0gICAgICAgICAqIEBwYXJhbSB7ZnVu
Y3Rpb24oP0FycmF5LjxzdHJpbmc+KX0gdXNlckNhbGxiYWNrCisgICAgICAgICAqIEBwYXJhbSB7
ZnVuY3Rpb24oP0FycmF5LjxXZWJJbnNwZWN0b3IuTmFtZWRGbG93Pil9IHVzZXJDYWxsYmFjawog
ICAgICAgICAgKiBAcGFyYW0gez9Qcm90b2NvbC5FcnJvcn0gZXJyb3IKLSAgICAgICAgICogQHBh
cmFtIHs/QXJyYXkuPHN0cmluZz49fSBuYW1lZEZsb3dQYXlsb2FkCisgICAgICAgICAqIEBwYXJh
bSB7P0FycmF5LjxDU1NBZ2VudC5OYW1lZEZsb3c+PX0gbmFtZWRGbG93UGF5bG9hZAogICAgICAg
ICAgKi8KICAgICAgICAgZnVuY3Rpb24gY2FsbGJhY2sodXNlckNhbGxiYWNrLCBlcnJvciwgbmFt
ZWRGbG93UGF5bG9hZCkKICAgICAgICAgewogICAgICAgICAgICAgaWYgKGVycm9yIHx8ICFuYW1l
ZEZsb3dQYXlsb2FkKQogICAgICAgICAgICAgICAgIHVzZXJDYWxsYmFjayhudWxsKTsKICAgICAg
ICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICB1c2VyQ2FsbGJhY2sobmFtZWRGbG93UGF5bG9h
ZCk7CisgICAgICAgICAgICAgICAgdXNlckNhbGxiYWNrKFdlYkluc3BlY3Rvci5OYW1lZEZsb3cu
cGFyc2VQYXlsb2FkQXJyYXkobmFtZWRGbG93UGF5bG9hZCkpOwogICAgICAgICB9CiAKICAgICAg
ICAgQ1NTQWdlbnQuZ2V0TmFtZWRGbG93Q29sbGVjdGlvbihub2RlSWQsIGNhbGxiYWNrLmJpbmQo
dGhpcywgdXNlckNhbGxiYWNrKSk7CkBAIC0xMzQ1LDYgKzEzNDUsOCBAQCBXZWJJbnNwZWN0b3Iu
TmFtZWRGbG93ID0gZnVuY3Rpb24ocGF5bG9hZCkKICAgICB0aGlzLm5vZGVJZCA9IHBheWxvYWQu
bm9kZUlkOwogICAgIHRoaXMubmFtZSA9IHBheWxvYWQubmFtZTsKICAgICB0aGlzLm92ZXJzZXQg
PSBwYXlsb2FkLm92ZXJzZXQ7CisgICAgdGhpcy5jb250ZW50ID0gcGF5bG9hZC5jb250ZW50Owor
ICAgIHRoaXMucmVnaW9ucyA9IHBheWxvYWQucmVnaW9uczsKIH0KIAogLyoqCkBAIC0xMzU3LDYg
KzEzNTksMTcgQEAgV2ViSW5zcGVjdG9yLk5hbWVkRmxvdy5wYXJzZVBheWxvYWQgPSBmdW5jdGlv
bihwYXlsb2FkKQogfQogCiAvKioKKyAqIEBwYXJhbSB7P0FycmF5LjxDU1NBZ2VudC5OYW1lZEZs
b3c+PX0gbmFtZWRGbG93UGF5bG9hZAorICogQHJldHVybiB7P0FycmF5LjxXZWJJbnNwZWN0b3Iu
TmFtZWRGbG93Pn0KKyAqLworV2ViSW5zcGVjdG9yLk5hbWVkRmxvdy5wYXJzZVBheWxvYWRBcnJh
eSA9IGZ1bmN0aW9uKHBheWxvYWRBcnJheSkKK3sKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IHBh
eWxvYWRBcnJheS5sZW5ndGg7ICsraSkKKyAgICAgICAgcGF5bG9hZEFycmF5W2ldID0gV2ViSW5z
cGVjdG9yLk5hbWVkRmxvdy5wYXJzZVBheWxvYWQocGF5bG9hZEFycmF5W2ldKTsKKyAgICByZXR1
cm4gcGF5bG9hZEFycmF5OworfQorCisvKioKICAqIEB0eXBlIHtXZWJJbnNwZWN0b3IuQ1NTU3R5
bGVNb2RlbH0KICAqLwogV2ViSW5zcGVjdG9yLmNzc01vZGVsID0gbnVsbDsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>157647</attachid>
            <date>2012-08-10 00:01:40 -0700</date>
            <delta_ts>2012-08-10 00:25:20 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-92089-20120810100111.patch</filename>
            <type>text/plain</type>
            <size>25795</size>
            <attacher name="Andrei Poenaru">andreigpoenaru</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI1MjU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDI1NDE2YTcyMTk1N2M4
OTMyYzI5MWJiMDg2YTFmMWUxMjc3ZTE1ZS4uMDMxMzZiM2NjZWY0MjVlYzg1MmU2NmU4N2ZkOWMz
ZGY4NWNmODVmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDEyLTA4LTA5ICBBbmRy
ZWkgUG9lbmFydSAgPHBvZW5hcnVAYWRvYmUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6
IFByb3RvY29sIEV4dGVuc2lvbjogUmVmYWN0b3IgcHJvdG9jb2wgZXh0ZW5zaW9uIGZvciBDU1Mg
UmVnaW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
OTIwODkKKworICAgICAgICBSZXZpZXdlZCBieSBQYXZlbCBGZWxkbWFuLgorCisgICAgICAgIFJl
cGxhY2VkICJXZWJLaXROYW1lZEZsb3dDb2xsZWN0aW9uOjpuYW1lZEZsb3dzTmFtZXMiIHdpdGgg
IldlYktpdE5hbWVkRmxvd0NvbGxlY3Rpb246Om5hbWVkRmxvd3MiIHRvIHJldHVybiBhIFZlY3Rv
ciBvZiAiV2ViS2l0TmFtZWRGbG93InMsCisgICAgICAgIGluc3RlYWQgb2YgYSBWZWN0b3Igb2Yg
U3RyaW5ncy4KKworICAgICAgICBBZGRlZCB0aGUgIlJlZ2lvbiIgdHlwZSB0byBJbnNwZWN0b3Iu
anNvbi4KKyAgICAgICAgQ2hhbmdlZCB0aGUgIk5hbWVkRmxvdyIgdHlwZSBhbmQgdGhlICJnZXRO
YW1lZEZsb3dDb2xsZWN0aW9uIiBmdW5jdGlvbiBpbiBJbnNwZWN0b3IuanNvbi4KKworICAgICAg
ICBNb2RpZmllZCBleGlzdGluZyB0ZXN0OiBpbnNwZWN0b3Ivc3R5bGVzL3Byb3RvY29sLWNzcy1y
ZWdpb25zLWNvbW1hbmRzLmh0bWwKKworICAgICAgICAqIGRvbS9XZWJLaXROYW1lZEZsb3dDb2xs
ZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdE5hbWVkRmxvd0NvbGxlY3Rpb246
Om5hbWVkRmxvd3MpOgorICAgICAgICAqIGRvbS9XZWJLaXROYW1lZEZsb3dDb2xsZWN0aW9uLmg6
CisgICAgICAgIChXZWJLaXROYW1lZEZsb3dDb2xsZWN0aW9uKToKKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5zcGVjdG9yLmpzb246CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50OjpnZXROYW1lZEZsb3dD
b2xsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50OjpnZXRGbG93
QnlOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50OjpidWlsZEFycmF5
Rm9yUmVnaW9ucyk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckNTU0FnZW50OjpidWlsZE9iamVjdEZvck5hbWVkRmxvdyk6CisgICAgICAgICogaW5zcGVj
dG9yL0luc3BlY3RvckNTU0FnZW50Lmg6CisgICAgICAgIChJbnNwZWN0b3JDU1NBZ2VudCk6Cisg
ICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvckRPTUFnZW50OjpwdXNoTm9kZVRvRnJvbnRlbmQpOgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50Lmg6CisgICAgICAg
IChJbnNwZWN0b3JET01BZ2VudCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9DU1NT
dHlsZU1vZGVsLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU1N0eWxlTW9kZWwucHJvdG90
eXBlLmdldE5hbWVkRmxvd0NvbGxlY3Rpb25Bc3luYyk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
TmFtZWRGbG93KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OYW1lZEZsb3cucGFyc2VQYXlsb2Fk
QXJyYXkpOgorCiAyMDEyLTA4LTA5ICBTaW1vbiBIYXVzbWFubiAgPHNpbW9uLmhhdXNtYW5uQG5v
a2lhLmNvbT4KIAogICAgICAgICBbUXRdIFJlbW92ZSBzdXBwb3J0IGZvciBfX3F0X3NlbmRlcl9f
IGluIFFPYmplY3QgYnJpZGdlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vV2ViS2l0
TmFtZWRGbG93Q29sbGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vV2ViS2l0TmFtZWRG
bG93Q29sbGVjdGlvbi5jcHAKaW5kZXggNjU1ZGI1YjdlOGYxMWI0MDY3YWQwZDBmNDQyZjYwMzJi
ZjI4MWE3ZC4uOTI3MzcyN2VmNmExMTk2ZmFhNzdmODY1NTlhOTg5ZTdjMjFlNzgzZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1dlYktpdE5hbWVkRmxvd0NvbGxlY3Rpb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9XZWJLaXROYW1lZEZsb3dDb2xsZWN0aW9uLmNwcApAQCAt
NDQsMTUgKzQ0LDE1IEBAIFdlYktpdE5hbWVkRmxvd0NvbGxlY3Rpb246OldlYktpdE5hbWVkRmxv
d0NvbGxlY3Rpb24oRG9jdW1lbnQqIGRvYykKIHsKIH0KIAotVmVjdG9yPFN0cmluZz4gV2ViS2l0
TmFtZWRGbG93Q29sbGVjdGlvbjo6bmFtZWRGbG93c05hbWVzKCkKK1ZlY3RvcjxSZWZQdHI8V2Vi
S2l0TmFtZWRGbG93PiA+IFdlYktpdE5hbWVkRmxvd0NvbGxlY3Rpb246Om5hbWVkRmxvd3MoKQog
ewotICAgIFZlY3RvcjxTdHJpbmc+IG5hbWVkRmxvd3M7CisgICAgVmVjdG9yPFJlZlB0cjxXZWJL
aXROYW1lZEZsb3c+ID4gbmFtZWRGbG93czsKIAogICAgIGZvciAoTmFtZWRGbG93U2V0OjppdGVy
YXRvciBpdCA9IG1fbmFtZWRGbG93cy5iZWdpbigpOyBpdCAhPSBtX25hbWVkRmxvd3MuZW5kKCk7
ICsraXQpIHsKICAgICAgICAgaWYgKCgqaXQpLT5mbG93U3RhdGUoKSA9PSBXZWJLaXROYW1lZEZs
b3c6OkZsb3dTdGF0ZU51bGwpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBuYW1l
ZEZsb3dzLmFwcGVuZCgoKml0KS0+bmFtZSgpLnN0cmluZygpKTsKKyAgICAgICAgbmFtZWRGbG93
cy5hcHBlbmQoUmVmUHRyPFdlYktpdE5hbWVkRmxvdz4oKml0KSk7CiAgICAgfQogCiAgICAgcmV0
dXJuIG5hbWVkRmxvd3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vV2ViS2l0TmFt
ZWRGbG93Q29sbGVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1dlYktpdE5hbWVkRmxvd0Nv
bGxlY3Rpb24uaAppbmRleCA2Nzg3OGE3MWFiYjQ3OWMyZmJkZjcxMzQ1MTk0ODIxOTM4NmMxYzI5
Li5iZjAxZDRiODQ5ZDZhZTY2YTk0Y2ExZTFjMjU1ZDc5NzEyODlhMDgyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vV2ViS2l0TmFtZWRGbG93Q29sbGVjdGlvbi5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9XZWJLaXROYW1lZEZsb3dDb2xsZWN0aW9uLmgKQEAgLTQ1LDcgKzQ1LDcg
QEAgY2xhc3MgV2ViS2l0TmFtZWRGbG93Q29sbGVjdGlvbiA6IHB1YmxpYyBSZWZDb3VudGVkPFdl
YktpdE5hbWVkRmxvd0NvbGxlY3Rpb24+IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0
cjxXZWJLaXROYW1lZEZsb3dDb2xsZWN0aW9uPiBjcmVhdGUoRG9jdW1lbnQqIGRvYykgeyByZXR1
cm4gYWRvcHRSZWYobmV3IFdlYktpdE5hbWVkRmxvd0NvbGxlY3Rpb24oZG9jKSk7IH0KIAotICAg
IFZlY3RvcjxTdHJpbmc+IG5hbWVkRmxvd3NOYW1lcygpOworICAgIFZlY3RvcjxSZWZQdHI8V2Vi
S2l0TmFtZWRGbG93PiA+IG5hbWVkRmxvd3MoKTsKICAgICBXZWJLaXROYW1lZEZsb3cqIGZsb3dC
eU5hbWUoY29uc3QgU3RyaW5nJik7CiAgICAgUGFzc1JlZlB0cjxXZWJLaXROYW1lZEZsb3c+IGVu
c3VyZUZsb3dXaXRoTmFtZShjb25zdCBTdHJpbmcmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3Rvci5qc29uCmluZGV4IDVkNjJmNDNmYWFkYjY4MjJhNTNjOTY3MzZjNmRjZGNjODA0
YmEyM2EuLjNlOTExNzcwMDFkNTEwYmY3MTUxOTBhMTExMTBiOWQ1ZjI3YmE2YTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbgorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24KQEAgLTIyMDYsMTIgKzIyMDYsMjQgQEAK
ICAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgICB9LAogICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgICJpZCI6ICJSZWdpb24iLAorICAgICAgICAgICAgICAgICJ0eXBlIjogIm9iamVj
dCIsCisgICAgICAgICAgICAgICAgInByb3BlcnRpZXMiOiBbCisgICAgICAgICAgICAgICAgICAg
IHsgIm5hbWUiOiAicmVnaW9uT3ZlcnNldCIsICJ0eXBlIjogInN0cmluZyIsICJlbnVtIjogWyJv
dmVyc2V0IiwgImZpdCIsICJlbXB0eSJdLCAiZGVzY3JpcHRpb24iOiAiVGhlIFwib3ZlcnNldFwi
IGF0dHJpYnV0ZSBvZiBhIE5hbWVkIEZsb3cuIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJu
YW1lIjogIm5vZGVJZCIsICIkcmVmIjogIkRPTS5Ob2RlSWQiLCAiZGVzY3JpcHRpb24iOiAiVGhl
IGNvcnJlc3BvbmRpbmcgRE9NIG5vZGUgaWQuIiB9CisgICAgICAgICAgICAgICAgXSwKKyAgICAg
ICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiVGhpcyBvYmplY3QgcmVwcmVzZW50cyBhIHJlZ2lv
biB0aGF0IGZsb3dzIGZyb20gYSBOYW1lZCBGbG93LiIsCisgICAgICAgICAgICAgICAgImhpZGRl
biI6IHRydWUKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAg
ImlkIjogIk5hbWVkRmxvdyIsCiAgICAgICAgICAgICAgICAgInR5cGUiOiAib2JqZWN0IiwKICAg
ICAgICAgICAgICAgICAicHJvcGVydGllcyI6IFsKLSAgICAgICAgICAgICAgICAgICAgeyAibmFt
ZSI6ICJub2RlSWQiLCAiJHJlZiI6ICJET00uTm9kZUlkIiwgImRlc2NyaXB0aW9uIjogIlRoZSBk
b2N1bWVudCBub2RlIGlkLiIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJkb2N1
bWVudE5vZGVJZCIsICIkcmVmIjogIkRPTS5Ob2RlSWQiLCAiZGVzY3JpcHRpb24iOiAiVGhlIGRv
Y3VtZW50IG5vZGUgaWQuIiB9LAogICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogIm5hbWUi
LCAidHlwZSI6ICJzdHJpbmciLCAiZGVzY3JpcHRpb24iOiAiTmFtZWQgRmxvdyBpZGVudGlmaWVy
LiIgfSwKLSAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJvdmVyc2V0IiwgInR5cGUiOiAi
Ym9vbGVhbiIsICJkZXNjcmlwdGlvbiI6ICJUaGUgXCJvdmVyc2V0XCIgYXR0cmlidXRlIG9mIGEg
TmFtZWQgRmxvdy4iIH0KKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJvdmVyc2V0Iiwg
InR5cGUiOiAiYm9vbGVhbiIsICJkZXNjcmlwdGlvbiI6ICJUaGUgXCJvdmVyc2V0XCIgYXR0cmli
dXRlIG9mIGEgTmFtZWQgRmxvdy4iIH0sCisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAi
Y29udGVudCIsICJ0eXBlIjogImFycmF5IiwgIml0ZW1zIjogeyAiJHJlZiI6ICJET00uTm9kZUlk
IiB9LCAiZGVzY3JpcHRpb24iOiAiQW4gYXJyYXkgb2Ygbm9kZXMgdGhhdCBmbG93IGludG8gdGhl
IE5hbWVkIEZsb3cuIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInJlZ2lvbnMi
LCAidHlwZSI6ICJhcnJheSIsICJpdGVtcyI6IHsgIiRyZWYiOiAiUmVnaW9uIiB9LCAiZGVzY3Jp
cHRpb24iOiAiQW4gYXJyYXkgb2YgcmVnaW9ucyBhc3NvY2lhdGVkIHdpdGggdGhlIE5hbWVkIEZs
b3cuIiB9CiAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24i
OiAiVGhpcyBvYmplY3QgcmVwcmVzZW50cyBhIE5hbWVkIEZsb3cuIiwKICAgICAgICAgICAgICAg
ICAiaGlkZGVuIjogdHJ1ZQpAQCAtMjM2NCwxMCArMjM3NiwxMCBAQAogICAgICAgICAgICAgewog
ICAgICAgICAgICAgICAgICJuYW1lIjogImdldE5hbWVkRmxvd0NvbGxlY3Rpb24iLAogICAgICAg
ICAgICAgICAgICJwYXJhbWV0ZXJzIjogWwotICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjog
Im5vZGVJZCIsICIkcmVmIjogIkRPTS5Ob2RlSWQiLCAiZGVzY3JpcHRpb24iOiAiVGhlIGRvY3Vt
ZW50IG5vZGUgaWQgZm9yIHdoaWNoIHRvIGdldCB0aGUgTmFtZWQgRmxvdyBDb2xsZWN0aW9uLiIg
fQorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImRvY3VtZW50Tm9kZUlkIiwgIiRyZWYi
OiAiRE9NLk5vZGVJZCIsICJkZXNjcmlwdGlvbiI6ICJUaGUgZG9jdW1lbnQgbm9kZSBpZCBmb3Ig
d2hpY2ggdG8gZ2V0IHRoZSBOYW1lZCBGbG93IENvbGxlY3Rpb24uIiB9CiAgICAgICAgICAgICAg
ICAgXSwKICAgICAgICAgICAgICAgICAicmV0dXJucyI6IFsKLSAgICAgICAgICAgICAgICAgICAg
eyAibmFtZSI6ICJuYW1lZEZsb3dzIiwgInR5cGUiOiAiYXJyYXkiLCAiaXRlbXMiOiB7ICJ0eXBl
IjogInN0cmluZyIgfSwgImRlc2NyaXB0aW9uIjogIkFuIGFycmF5IGNvbnRhaW5pbmcgdGhlIE5h
bWVkIEZsb3dzIGluIHRoZSBkb2N1bWVudC4iIH0KKyAgICAgICAgICAgICAgICAgICAgeyAibmFt
ZSI6ICJuYW1lZEZsb3dzIiwgInR5cGUiOiAiYXJyYXkiLCAiaXRlbXMiOiB7ICIkcmVmIjogIk5h
bWVkRmxvdyIgfSwgImRlc2NyaXB0aW9uIjogIkFuIGFycmF5IGNvbnRhaW5pbmcgdGhlIE5hbWVk
IEZsb3dzIGluIHRoZSBkb2N1bWVudC4iIH0KICAgICAgICAgICAgICAgICBdLAogICAgICAgICAg
ICAgICAgICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIHRoZSBOYW1lZCBGbG93cyBmcm9tIHRoZSBk
b2N1bWVudC4iLAogICAgICAgICAgICAgICAgICJoaWRkZW4iOiB0cnVlCkBAIC0yMzc1LDcgKzIz
ODcsNyBAQAogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICJuYW1lIjogImdldEZsb3dC
eU5hbWUiLAogICAgICAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogWwotICAgICAgICAgICAgICAg
ICAgICB7ICJuYW1lIjogIm5vZGVJZCIsICIkcmVmIjogIkRPTS5Ob2RlSWQiLCAiZGVzY3JpcHRp
b24iOiAiVGhlIGRvY3VtZW50IG5vZGUgaWQuIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJu
YW1lIjogImRvY3VtZW50Tm9kZUlkIiwgIiRyZWYiOiAiRE9NLk5vZGVJZCIsICJkZXNjcmlwdGlv
biI6ICJUaGUgZG9jdW1lbnQgbm9kZSBpZC4iIH0sCiAgICAgICAgICAgICAgICAgICAgIHsgIm5h
bWUiOiAibmFtZSIsICJ0eXBlIjogInN0cmluZyIsICJkZXNjcmlwdGlvbiI6ICJOYW1lZCBGbG93
IGlkZW50aWZpZXIuIiB9CiAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAicmV0
dXJucyI6IFsKQEAgLTI0MDAsNyArMjQxMiw3IEBACiAgICAgICAgICAgICB7CiAgICAgICAgICAg
ICAgICAgIm5hbWUiOiAibmFtZWRGbG93Q3JlYXRlZCIsCiAgICAgICAgICAgICAgICAgInBhcmFt
ZXRlcnMiOiBbCi0gICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAibm9kZUlkIiwgIiRyZWYi
OiAiRE9NLk5vZGVJZCIsICJkZXNjcmlwdGlvbiI6ICJUaGUgZG9jdW1lbnQgbm9kZSBpZC4iIH0s
CisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiZG9jdW1lbnROb2RlSWQiLCAiJHJlZiI6
ICJET00uTm9kZUlkIiwgImRlc2NyaXB0aW9uIjogIlRoZSBkb2N1bWVudCBub2RlIGlkLiIgfSwK
ICAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJuYW1lZEZsb3ciLCAidHlwZSI6ICJzdHJp
bmciLCAiZGVzY3JpcHRpb24iOiAiSWRlbnRpZmllciBvZiB0aGUgbmV3IE5hbWVkIEZsb3cuIiB9
CiAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiRmly
ZXMgd2hlbiBhIE5hbWVkIEZsb3cgaXMgY3JlYXRlZC4iLApAQCAtMjQwOSw3ICsyNDIxLDcgQEAK
ICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAibmFtZSI6ICJuYW1lZEZsb3dSZW1vdmVk
IiwKICAgICAgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKLSAgICAgICAgICAgICAgICAgICAg
eyAibmFtZSI6ICJub2RlSWQiLCAiJHJlZiI6ICJET00uTm9kZUlkIiwgImRlc2NyaXB0aW9uIjog
IlRoZSBkb2N1bWVudCBub2RlIGlkLiIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6
ICJkb2N1bWVudE5vZGVJZCIsICIkcmVmIjogIkRPTS5Ob2RlSWQiLCAiZGVzY3JpcHRpb24iOiAi
VGhlIGRvY3VtZW50IG5vZGUgaWQuIiB9LAogICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjog
Im5hbWVkRmxvdyIsICJ0eXBlIjogInN0cmluZyIsICJkZXNjcmlwdGlvbiI6ICJJZGVudGlmaWVy
IG9mIHRoZSByZW1vdmVkIE5hbWVkIEZsb3cuIiB9CiAgICAgICAgICAgICAgICAgXSwKICAgICAg
ICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiRmlyZXMgd2hlbiBhIE5hbWVkIEZsb3cgaXMgcmVt
b3ZlZDogaGFzIG5vIGFzc29jaWF0ZWQgY29udGVudCBub2RlcyBhbmQgcmVnaW9ucy4iLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKaW5kZXggZTJh
OWZhM2M2NjQ3MWY3MmU2YWE2YjQ2YWZkZjA5NGJmNjJkODJhZC4uODhhYTAwNDdhOTcwYjNkYjk1
ZDg0OGNmMWIxZDgzZTNmMzdhYjU1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckNTU0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQ1NTQWdlbnQuY3BwCkBAIC00Nyw2ICs0Nyw3IEBACiAjaW5jbHVkZSAiSW5zdHJ1
bWVudGluZ0FnZW50cy5oIgogI2luY2x1ZGUgIk5vZGUuaCIKICNpbmNsdWRlICJOb2RlTGlzdC5o
IgorI2luY2x1ZGUgIlJlbmRlclJlZ2lvbi5oIgogI2luY2x1ZGUgIlN0eWxlUHJvcGVydHlTZXQu
aCIKICNpbmNsdWRlICJTdHlsZVByb3BlcnR5U2hvcnRoYW5kLmgiCiAjaW5jbHVkZSAiU3R5bGVS
ZXNvbHZlci5oIgpAQCAtODI0LDM5ICs4MjUsMzcgQEAgdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6
Z2V0U3VwcG9ydGVkQ1NTUHJvcGVydGllcyhFcnJvclN0cmluZyosIFJlZlB0cjxUeXBlQnVpbGQK
ICAgICBjc3NQcm9wZXJ0aWVzID0gcHJvcGVydGllcy5yZWxlYXNlKCk7CiB9CiAKLXZvaWQgSW5z
cGVjdG9yQ1NTQWdlbnQ6OmdldE5hbWVkRmxvd0NvbGxlY3Rpb24oRXJyb3JTdHJpbmcqIGVycm9y
U3RyaW5nLCBpbnQgbm9kZUlkLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFN0cmluZz4gPiYg
cmVzdWx0KQordm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0TmFtZWRGbG93Q29sbGVjdGlvbihF
cnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGludCBkb2N1bWVudE5vZGVJZCwgUmVmUHRyPFR5cGVC
dWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6Q1NTOjpOYW1lZEZsb3c+ID4mIHJlc3VsdCkKIHsK
LSAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBtX2RvbUFnZW50LT5hc3NlcnREb2N1bWVudChlcnJv
clN0cmluZywgbm9kZUlkKTsKKyAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBtX2RvbUFnZW50LT5h
c3NlcnREb2N1bWVudChlcnJvclN0cmluZywgZG9jdW1lbnROb2RlSWQpOwogICAgIGlmICghZG9j
dW1lbnQpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fbmFtZWRGbG93Q29sbGVjdGlvbnNSZXF1
ZXN0ZWQuYWRkKG5vZGVJZCk7CisgICAgbV9uYW1lZEZsb3dDb2xsZWN0aW9uc1JlcXVlc3RlZC5h
ZGQoZG9jdW1lbnROb2RlSWQpOworICAgIFZlY3RvcjxSZWZQdHI8V2ViS2l0TmFtZWRGbG93PiA+
IG5hbWVkRmxvd3NWZWN0b3IgPSBkb2N1bWVudC0+bmFtZWRGbG93cygpLT5uYW1lZEZsb3dzKCk7
CisgICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6Q1NTOjpOYW1lZEZs
b3c+ID4gbmFtZWRGbG93cyA9IFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6Q1NTOjpO
YW1lZEZsb3c+OjpjcmVhdGUoKTsKIAotICAgIFZlY3RvcjxTdHJpbmc+IG5hbWVkRmxvd3NWZWN0
b3IgPSBkb2N1bWVudC0+bmFtZWRGbG93cygpLT5uYW1lZEZsb3dzTmFtZXMoKTsKLSAgICBSZWZQ
dHI8VHlwZUJ1aWxkZXI6OkFycmF5PFN0cmluZz4gPiBuYW1lZEZsb3dzID0gVHlwZUJ1aWxkZXI6
OkFycmF5PFN0cmluZz46OmNyZWF0ZSgpOwogCi0gICAgZm9yIChWZWN0b3I8U3RyaW5nPjo6aXRl
cmF0b3IgaXQgPSBuYW1lZEZsb3dzVmVjdG9yLmJlZ2luKCk7IGl0ICE9IG5hbWVkRmxvd3NWZWN0
b3IuZW5kKCk7ICsraXQpCi0gICAgICAgIG5hbWVkRmxvd3MtPmFkZEl0ZW0oKml0KTsKKyAgICBm
b3IgKFZlY3RvcjxSZWZQdHI8V2ViS2l0TmFtZWRGbG93PiA+OjppdGVyYXRvciBpdCA9IG5hbWVk
Rmxvd3NWZWN0b3IuYmVnaW4oKTsgaXQgIT0gbmFtZWRGbG93c1ZlY3Rvci5lbmQoKTsgKytpdCkK
KyAgICAgICAgbmFtZWRGbG93cy0+YWRkSXRlbShidWlsZE9iamVjdEZvck5hbWVkRmxvdyhlcnJv
clN0cmluZywgaXQtPmdldCgpLCBkb2N1bWVudE5vZGVJZCkpOwogCiAgICAgcmVzdWx0ID0gbmFt
ZWRGbG93cy5yZWxlYXNlKCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmdldEZsb3dC
eU5hbWUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBpbnQgbm9kZUlkLCBjb25zdCBTdHJpbmcm
IGZsb3dOYW1lLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6TmFtZWRGbG93PiYgcmVzdWx0KQor
dm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0Rmxvd0J5TmFtZShFcnJvclN0cmluZyogZXJyb3JT
dHJpbmcsIGludCBkb2N1bWVudE5vZGVJZCwgY29uc3QgU3RyaW5nJiBmbG93TmFtZSwgUmVmUHRy
PFR5cGVCdWlsZGVyOjpDU1M6Ok5hbWVkRmxvdz4mIHJlc3VsdCkKIHsKLSAgICBEb2N1bWVudCog
ZG9jdW1lbnQgPSBtX2RvbUFnZW50LT5hc3NlcnREb2N1bWVudChlcnJvclN0cmluZywgbm9kZUlk
KTsKKyAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBtX2RvbUFnZW50LT5hc3NlcnREb2N1bWVudChl
cnJvclN0cmluZywgZG9jdW1lbnROb2RlSWQpOwogICAgIGlmICghZG9jdW1lbnQpCiAgICAgICAg
IHJldHVybjsKIAotICAgIFdlYktpdE5hbWVkRmxvdyogbmFtZWRGbG93ID0gZG9jdW1lbnQtPm5h
bWVkRmxvd3MoKS0+Zmxvd0J5TmFtZShmbG93TmFtZSk7Ci0gICAgaWYgKCFuYW1lZEZsb3cpIHsK
KyAgICBXZWJLaXROYW1lZEZsb3cqIHdlYmtpdE5hbWVkRmxvdyA9IGRvY3VtZW50LT5uYW1lZEZs
b3dzKCktPmZsb3dCeU5hbWUoZmxvd05hbWUpOworICAgIGlmICghd2Via2l0TmFtZWRGbG93KSB7
CiAgICAgICAgICplcnJvclN0cmluZyA9ICJObyB0YXJnZXQgQ1NTIE5hbWVkIEZsb3cgZm91bmQi
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgcmVzdWx0ID0gVHlwZUJ1aWxkZXI6OkNT
Uzo6TmFtZWRGbG93OjpjcmVhdGUoKQotICAgICAgICAuc2V0Tm9kZUlkKG5vZGVJZCkKLSAgICAg
ICAgLnNldE5hbWUoZmxvd05hbWUpCi0gICAgICAgIC5zZXRPdmVyc2V0KG5hbWVkRmxvdy0+b3Zl
cnNldCgpKTsKKyAgICBSZWZQdHI8V2ViS2l0TmFtZWRGbG93PiBwcm90ZWN0b3Iod2Via2l0TmFt
ZWRGbG93KTsKKyAgICByZXN1bHQgPSBidWlsZE9iamVjdEZvck5hbWVkRmxvdyhlcnJvclN0cmlu
Zywgd2Via2l0TmFtZWRGbG93LCBkb2N1bWVudE5vZGVJZCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9y
Q1NTQWdlbnQ6OnN0YXJ0U2VsZWN0b3JQcm9maWxlcihFcnJvclN0cmluZyopCkBAIC0xMDcyLDYg
KzEwNzEsNjEgQEAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHlsZT4gSW5zcGVj
dG9yQ1NTQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yQXR0cmlidXQKICAgICByZXR1cm4gaW5zcGVjdG9y
U3R5bGUtPmJ1aWxkT2JqZWN0Rm9yU3R5bGUoKTsKIH0KIAorUGFzc1JlZlB0cjxUeXBlQnVpbGRl
cjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkNTUzo6UmVnaW9uPiA+IEluc3BlY3RvckNTU0FnZW50Ojpi
dWlsZEFycmF5Rm9yUmVnaW9ucyhFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIFBhc3NSZWZQdHI8
Tm9kZUxpc3Q+IHJlZ2lvbkxpc3QsIGludCBkb2N1bWVudE5vZGVJZCkKK3sKKyAgICBSZWZQdHI8
VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpDU1M6OlJlZ2lvbj4gPiByZWdpb25zID0g
VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpDU1M6OlJlZ2lvbj46OmNyZWF0ZSgpOwor
CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHJlZ2lvbkxpc3QtPmxlbmd0aCgpOyArK2kp
IHsKKyAgICAgICAgVHlwZUJ1aWxkZXI6OkNTUzo6UmVnaW9uOjpSZWdpb25PdmVyc2V0OjpFbnVt
IHJlZ2lvbk92ZXJzZXQ7CisKKyAgICAgICAgc3dpdGNoICh0b0VsZW1lbnQocmVnaW9uTGlzdC0+
aXRlbShpKSktPnJlbmRlclJlZ2lvbigpLT5yZWdpb25TdGF0ZSgpKSB7CisgICAgICAgIGNhc2Ug
UmVuZGVyUmVnaW9uOjpSZWdpb25GaXQ6CisgICAgICAgICAgICByZWdpb25PdmVyc2V0ID0gVHlw
ZUJ1aWxkZXI6OkNTUzo6UmVnaW9uOjpSZWdpb25PdmVyc2V0OjpGaXQ7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSBSZW5kZXJSZWdpb246OlJlZ2lvbkVtcHR5OgorICAgICAgICAg
ICAgcmVnaW9uT3ZlcnNldCA9IFR5cGVCdWlsZGVyOjpDU1M6OlJlZ2lvbjo6UmVnaW9uT3ZlcnNl
dDo6RW1wdHk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBSZW5kZXJSZWdpb246
OlJlZ2lvbk92ZXJzZXQ6CisgICAgICAgICAgICByZWdpb25PdmVyc2V0ID0gVHlwZUJ1aWxkZXI6
OkNTUzo6UmVnaW9uOjpSZWdpb25PdmVyc2V0OjpPdmVyc2V0OworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGNhc2UgUmVuZGVyUmVnaW9uOjpSZWdpb25VbmRlZmluZWQ6CisgICAgICAgICAg
ICBjb250aW51ZTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKworICAgICAgICBSZWZQ
dHI8VHlwZUJ1aWxkZXI6OkNTUzo6UmVnaW9uPiByZWdpb24gPSBUeXBlQnVpbGRlcjo6Q1NTOjpS
ZWdpb246OmNyZWF0ZSgpCisgICAgICAgICAgICAuc2V0UmVnaW9uT3ZlcnNldChyZWdpb25PdmVy
c2V0KQorICAgICAgICAgICAgLy8gZG9jdW1lbnROb2RlSWQgd2FzIHByZXZpb3VzbHkgYXNzZXJ0
ZWQKKyAgICAgICAgICAgIC5zZXROb2RlSWQobV9kb21BZ2VudC0+cHVzaE5vZGVUb0Zyb250ZW5k
KGVycm9yU3RyaW5nLCBkb2N1bWVudE5vZGVJZCwgcmVnaW9uTGlzdC0+aXRlbShpKSkpOworCisg
ICAgICAgIHJlZ2lvbnMtPmFkZEl0ZW0ocmVnaW9uKTsKKyAgICB9CisKKyAgICByZXR1cm4gcmVn
aW9ucy5yZWxlYXNlKCk7Cit9CisKK1Bhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6TmFtZWRG
bG93PiBJbnNwZWN0b3JDU1NBZ2VudDo6YnVpbGRPYmplY3RGb3JOYW1lZEZsb3coRXJyb3JTdHJp
bmcqIGVycm9yU3RyaW5nLCBXZWJLaXROYW1lZEZsb3cqIHdlYmtpdE5hbWVkRmxvdywgaW50IGRv
Y3VtZW50Tm9kZUlkKQoreworICAgIFJlZlB0cjxOb2RlTGlzdD4gY29udGVudExpc3QgPSB3ZWJr
aXROYW1lZEZsb3ctPmdldENvbnRlbnQoKTsKKyAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5
PGludD4gPiBjb250ZW50ID0gVHlwZUJ1aWxkZXI6OkFycmF5PGludD46OmNyZWF0ZSgpOworCisg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNvbnRlbnRMaXN0LT5sZW5ndGgoKTsgKytpKSB7
CisgICAgICAgIC8vIGRvY3VtZW50Tm9kZUlkIHdhcyBwcmV2aW91c2x5IGFzc2VydGVkCisgICAg
ICAgIGNvbnRlbnQtPmFkZEl0ZW0obV9kb21BZ2VudC0+cHVzaE5vZGVUb0Zyb250ZW5kKGVycm9y
U3RyaW5nLCBkb2N1bWVudE5vZGVJZCwgY29udGVudExpc3QtPml0ZW0oaSkpKTsKKyAgICB9CisK
KyAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6TmFtZWRGbG93PiBuYW1lZEZsb3cgPSBUeXBl
QnVpbGRlcjo6Q1NTOjpOYW1lZEZsb3c6OmNyZWF0ZSgpCisgICAgICAgIC5zZXREb2N1bWVudE5v
ZGVJZChkb2N1bWVudE5vZGVJZCkKKyAgICAgICAgLnNldE5hbWUod2Via2l0TmFtZWRGbG93LT5u
YW1lKCkuc3RyaW5nKCkpCisgICAgICAgIC5zZXRPdmVyc2V0KHdlYmtpdE5hbWVkRmxvdy0+b3Zl
cnNldCgpKQorICAgICAgICAuc2V0Q29udGVudChjb250ZW50KQorICAgICAgICAuc2V0UmVnaW9u
cyhidWlsZEFycmF5Rm9yUmVnaW9ucyhlcnJvclN0cmluZywgd2Via2l0TmFtZWRGbG93LT5nZXRS
ZWdpb25zKCksIGRvY3VtZW50Tm9kZUlkKSk7CisKKyAgICByZXR1cm4gbmFtZWRGbG93LnJlbGVh
c2UoKTsKK30KKwogdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6ZGlkUmVtb3ZlRG9jdW1lbnQoRG9j
dW1lbnQqIGRvY3VtZW50KQogewogICAgIGlmIChkb2N1bWVudCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmgKaW5kZXggYTk3MTE2ZWI4Y2YxMGU4N2E2NWM4
NmYxOGMxZWE3NWIwY2VlYjZmZC4uODc3ODA1MGRkYTQzZmFjODFhZGU3YzYzZjY0Mzk5NzNiZDFm
N2M3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0Fn
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmgK
QEAgLTExMyw4ICsxMTMsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldFJ1bGVTZWxl
Y3RvcihFcnJvclN0cmluZyosIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiBydWxlSWQs
IGNvbnN0IFN0cmluZyYgc2VsZWN0b3IsIFJlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NSdWxl
PiYgcmVzdWx0KTsKICAgICB2aXJ0dWFsIHZvaWQgYWRkUnVsZShFcnJvclN0cmluZyosIGludCBj
b250ZXh0Tm9kZUlkLCBjb25zdCBTdHJpbmcmIHNlbGVjdG9yLCBSZWZQdHI8VHlwZUJ1aWxkZXI6
OkNTUzo6Q1NTUnVsZT4mIHJlc3VsdCk7CiAgICAgdmlydHVhbCB2b2lkIGdldFN1cHBvcnRlZENT
U1Byb3BlcnRpZXMoRXJyb3JTdHJpbmcqLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVC
dWlsZGVyOjpDU1M6OkNTU1Byb3BlcnR5SW5mbz4gPiYgcmVzdWx0KTsKLSAgICB2aXJ0dWFsIHZv
aWQgZ2V0TmFtZWRGbG93Q29sbGVjdGlvbihFcnJvclN0cmluZyosIGludCBub2RlSWQsIFJlZlB0
cjxUeXBlQnVpbGRlcjo6QXJyYXk8U3RyaW5nPiA+JiByZXN1bHQpOwotICAgIHZpcnR1YWwgdm9p
ZCBnZXRGbG93QnlOYW1lKEVycm9yU3RyaW5nKiwgaW50IG5vZGVJZCwgY29uc3QgU3RyaW5nJiBm
bG93TmFtZSwgUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6Ok5hbWVkRmxvdz4mIHJlc3VsdCk7Cisg
ICAgdmlydHVhbCB2b2lkIGdldE5hbWVkRmxvd0NvbGxlY3Rpb24oRXJyb3JTdHJpbmcqLCBpbnQg
ZG9jdW1lbnROb2RlSWQsIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkNT
Uzo6TmFtZWRGbG93PiA+JiByZXN1bHQpOworICAgIHZpcnR1YWwgdm9pZCBnZXRGbG93QnlOYW1l
KEVycm9yU3RyaW5nKiwgaW50IGRvY3VtZW50Tm9kZUlkLCBjb25zdCBTdHJpbmcmIGZsb3dOYW1l
LCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6TmFtZWRGbG93PiYgcmVzdWx0KTsKIAogICAgIHZp
cnR1YWwgdm9pZCBzdGFydFNlbGVjdG9yUHJvZmlsZXIoRXJyb3JTdHJpbmcqKTsKICAgICB2aXJ0
dWFsIHZvaWQgc3RvcFNlbGVjdG9yUHJvZmlsZXIoRXJyb3JTdHJpbmcqLCBSZWZQdHI8VHlwZUJ1
aWxkZXI6OkNTUzo6U2VsZWN0b3JQcm9maWxlPiYpOwpAQCAtMTUzLDYgKzE1Myw4IEBAIHByaXZh
dGU6CiAKICAgICBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6Q1NT
OjpDU1NSdWxlPiA+IGJ1aWxkQXJyYXlGb3JSdWxlTGlzdChDU1NSdWxlTGlzdCosIFN0eWxlUmVz
b2x2ZXIqKTsKICAgICBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlPiBidWls
ZE9iamVjdEZvckF0dHJpYnV0ZXNTdHlsZShFbGVtZW50Kik7CisgICAgUGFzc1JlZlB0cjxUeXBl
QnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkNTUzo6UmVnaW9uPiA+IGJ1aWxkQXJyYXlGb3JS
ZWdpb25zKEVycm9yU3RyaW5nKiwgUGFzc1JlZlB0cjxOb2RlTGlzdD4sIGludCBkb2N1bWVudE5v
ZGVJZCk7CisgICAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpOYW1lZEZsb3c+IGJ1aWxk
T2JqZWN0Rm9yTmFtZWRGbG93KEVycm9yU3RyaW5nKiwgV2ViS2l0TmFtZWRGbG93KiwgaW50IGRv
Y3VtZW50Tm9kZUlkKTsKIAogICAgIC8vIEluc3BlY3RvckRPTUFnZW50OjpET01MaXN0ZW5lciBp
bXBsZW1lbnRhdGlvbgogICAgIHZpcnR1YWwgdm9pZCBkaWRSZW1vdmVEb2N1bWVudChEb2N1bWVu
dCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFn
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAK
aW5kZXggOWRmOWY3MzRiNTZiZTY1ZTc4MjAwNjZjZjhlMTRjYWI0ZmRiZjFlNC4uOThlZjZhMTk0
YmI1YmE4Y2VmOTJmMzgzMzM5ZWQzNmNhMGUzMTI0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCkBAIC00NDksNiArNDQ5LDE1IEBAIHZvaWQg
SW5zcGVjdG9yRE9NQWdlbnQ6OmRpc2NhcmRCaW5kaW5ncygpCiAgICAgbV9jaGlsZHJlblJlcXVl
c3RlZC5jbGVhcigpOwogfQogCitpbnQgSW5zcGVjdG9yRE9NQWdlbnQ6OnB1c2hOb2RlVG9Gcm9u
dGVuZChFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGludCBkb2N1bWVudE5vZGVJZCwgTm9kZSog
bm9kZVRvUHVzaCkKK3sKKyAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBhc3NlcnREb2N1bWVudChl
cnJvclN0cmluZywgZG9jdW1lbnROb2RlSWQpOworICAgIGlmICghZG9jdW1lbnQgfHwgbm9kZVRv
UHVzaC0+ZG9jdW1lbnQoKSAhPSBkb2N1bWVudCkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBy
ZXR1cm4gcHVzaE5vZGVQYXRoVG9Gcm9udGVuZChub2RlVG9QdXNoKTsKK30KKwogTm9kZSogSW5z
cGVjdG9yRE9NQWdlbnQ6Om5vZGVGb3JJZChpbnQgaWQpCiB7CiAgICAgaWYgKCFpZCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5oIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmgKaW5kZXggNDYwYTQ3NTVi
NTkwOGE1YTA1NWFmZTcyZDEyY2RlYWM2NThmZDBkZi4uYWVkZjc3OTIwY2IwOTU3ZTA2NjY5NDRi
ODYzMWFlZDkyNjU0NTIwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckRPTUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckRPTUFnZW50LmgKQEAgLTE2OCw2ICsxNjgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRQdXNo
U2hhZG93Um9vdChFbGVtZW50KiBob3N0LCBTaGFkb3dSb290Kik7CiAgICAgdm9pZCB3aWxsUG9w
U2hhZG93Um9vdChFbGVtZW50KiBob3N0LCBTaGFkb3dSb290Kik7CiAKKyAgICBpbnQgcHVzaE5v
ZGVUb0Zyb250ZW5kKEVycm9yU3RyaW5nKiwgaW50IGRvY3VtZW50Tm9kZUlkLCBOb2RlKik7CiAg
ICAgTm9kZSogbm9kZUZvcklkKGludCBub2RlSWQpOwogICAgIGludCBib3VuZE5vZGVJZChOb2Rl
Kik7CiAgICAgdm9pZCBzZXRET01MaXN0ZW5lcihET01MaXN0ZW5lciopOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9DU1NTdHlsZU1vZGVsLmpzIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9DU1NTdHlsZU1vZGVsLmpzCmluZGV4IDBm
YzRkNDBiMGI4ODIxNjc2ODAwNzE2YjIyYTM1NDExODQ4YmRhNGMuLjAxYjMyNGM4NzNjZjFmMGRi
ZjEwYjFlOGVmNjQwN2RmZjgzNzU3ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvQ1NTU3R5bGVNb2RlbC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL0NTU1N0eWxlTW9kZWwuanMKQEAgLTE2NCwyMSArMTY0LDIxIEBAIFdl
Ykluc3BlY3Rvci5DU1NTdHlsZU1vZGVsLnByb3RvdHlwZSA9IHsKIAogICAgIC8qKgogICAgICAq
IEBwYXJhbSB7RE9NQWdlbnQuTm9kZUlkfSBub2RlSWQKLSAgICAgKiBAcGFyYW0ge2Z1bmN0aW9u
KD9BcnJheS48c3RyaW5nPil9IHVzZXJDYWxsYmFjaworICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24o
P0FycmF5LjxXZWJJbnNwZWN0b3IuTmFtZWRGbG93Pil9IHVzZXJDYWxsYmFjawogICAgICAqLwog
ICAgIGdldE5hbWVkRmxvd0NvbGxlY3Rpb25Bc3luYzogZnVuY3Rpb24obm9kZUlkLCB1c2VyQ2Fs
bGJhY2spCiAgICAgewogICAgICAgICAvKioKLSAgICAgICAgICogQHBhcmFtIHtmdW5jdGlvbig/
QXJyYXkuPHN0cmluZz4pfSB1c2VyQ2FsbGJhY2sKKyAgICAgICAgICogQHBhcmFtIHtmdW5jdGlv
big/QXJyYXkuPFdlYkluc3BlY3Rvci5OYW1lZEZsb3c+KX0gdXNlckNhbGxiYWNrCiAgICAgICAg
ICAqIEBwYXJhbSB7P1Byb3RvY29sLkVycm9yfSBlcnJvcgotICAgICAgICAgKiBAcGFyYW0gez9B
cnJheS48c3RyaW5nPj19IG5hbWVkRmxvd1BheWxvYWQKKyAgICAgICAgICogQHBhcmFtIHs/QXJy
YXkuPENTU0FnZW50Lk5hbWVkRmxvdz49fSBuYW1lZEZsb3dQYXlsb2FkCiAgICAgICAgICAqLwog
ICAgICAgICBmdW5jdGlvbiBjYWxsYmFjayh1c2VyQ2FsbGJhY2ssIGVycm9yLCBuYW1lZEZsb3dQ
YXlsb2FkKQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoZXJyb3IgfHwgIW5hbWVkRmxvd1Bh
eWxvYWQpCiAgICAgICAgICAgICAgICAgdXNlckNhbGxiYWNrKG51bGwpOwogICAgICAgICAgICAg
ZWxzZQotICAgICAgICAgICAgICAgIHVzZXJDYWxsYmFjayhuYW1lZEZsb3dQYXlsb2FkKTsKKyAg
ICAgICAgICAgICAgICB1c2VyQ2FsbGJhY2soV2ViSW5zcGVjdG9yLk5hbWVkRmxvdy5wYXJzZVBh
eWxvYWRBcnJheShuYW1lZEZsb3dQYXlsb2FkKSk7CiAgICAgICAgIH0KIAogICAgICAgICBDU1NB
Z2VudC5nZXROYW1lZEZsb3dDb2xsZWN0aW9uKG5vZGVJZCwgY2FsbGJhY2suYmluZCh0aGlzLCB1
c2VyQ2FsbGJhY2spKTsKQEAgLTEzNDUsNiArMTM0NSw4IEBAIFdlYkluc3BlY3Rvci5OYW1lZEZs
b3cgPSBmdW5jdGlvbihwYXlsb2FkKQogICAgIHRoaXMubm9kZUlkID0gcGF5bG9hZC5ub2RlSWQ7
CiAgICAgdGhpcy5uYW1lID0gcGF5bG9hZC5uYW1lOwogICAgIHRoaXMub3ZlcnNldCA9IHBheWxv
YWQub3ZlcnNldDsKKyAgICB0aGlzLmNvbnRlbnQgPSBwYXlsb2FkLmNvbnRlbnQ7CisgICAgdGhp
cy5yZWdpb25zID0gcGF5bG9hZC5yZWdpb25zOwogfQogCiAvKioKQEAgLTEzNTcsNiArMTM1OSwx
NyBAQCBXZWJJbnNwZWN0b3IuTmFtZWRGbG93LnBhcnNlUGF5bG9hZCA9IGZ1bmN0aW9uKHBheWxv
YWQpCiB9CiAKIC8qKgorICogQHBhcmFtIHs/QXJyYXkuPENTU0FnZW50Lk5hbWVkRmxvdz49fSBu
YW1lZEZsb3dQYXlsb2FkCisgKiBAcmV0dXJuIHs/QXJyYXkuPFdlYkluc3BlY3Rvci5OYW1lZEZs
b3c+fQorICovCitXZWJJbnNwZWN0b3IuTmFtZWRGbG93LnBhcnNlUGF5bG9hZEFycmF5ID0gZnVu
Y3Rpb24ocGF5bG9hZEFycmF5KQoreworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcGF5bG9hZEFy
cmF5Lmxlbmd0aDsgKytpKQorICAgICAgICBwYXlsb2FkQXJyYXlbaV0gPSBXZWJJbnNwZWN0b3Iu
TmFtZWRGbG93LnBhcnNlUGF5bG9hZChwYXlsb2FkQXJyYXlbaV0pOworICAgIHJldHVybiBwYXls
b2FkQXJyYXk7Cit9CisKKy8qKgogICogQHR5cGUge1dlYkluc3BlY3Rvci5DU1NTdHlsZU1vZGVs
fQogICovCiBXZWJJbnNwZWN0b3IuY3NzTW9kZWwgPSBudWxsOwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDFmNmEzOWViODg3
MWYxZjI0YWVmMTMyYTI0MGIyMjVhNWFkYTVhNzEuLmNjMWNjMGM5OWM4NDBlM2MyMDljZTk5Njcz
ZDZiMzRmZmE3YjVkNTQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0wOC0wOSAgQW5kcmVp
IFBvZW5hcnUgIDxwb2VuYXJ1QGFkb2JlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBQ
cm90b2NvbCBFeHRlbnNpb246IFJlZmFjdG9yIHByb3RvY29sIGV4dGVuc2lvbiBmb3IgQ1NTIFJl
Z2lvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTky
MDg5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgUGF2ZWwgRmVsZG1hbi4KKworICAgICAgICBDaGFu
Z2VkIHRoZSB0ZXN0IHRvIHZhbGlkYXRlIHRoZSBjaGFuZ2VzIG1hZGUgdG8gdGhlIHByb3RvY29s
LgorCisgICAgICAgICogaW5zcGVjdG9yL3N0eWxlcy9wcm90b2NvbC1jc3MtcmVnaW9ucy1jb21t
YW5kcy1leHBlY3RlZC50eHQ6CisgICAgICAgICogaW5zcGVjdG9yL3N0eWxlcy9wcm90b2NvbC1j
c3MtcmVnaW9ucy1jb21tYW5kcy5odG1sOgorCiAyMDEyLTA4LTA5ICBNYXR0IEZhbGtlbmhhZ2Vu
ICA8ZmFsa2VuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBNb3ZlIHNvbWUgQ1NTIC13ZWJraXQt
bG9jYWxlIHRlc3RzIG91dCBvZiBmYXN0L3RleHQvCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bnNwZWN0b3Ivc3R5bGVzL3Byb3RvY29sLWNzcy1yZWdpb25zLWNvbW1hbmRzLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMvcHJvdG9jb2wtY3NzLXJlZ2lvbnMtY29t
bWFuZHMtZXhwZWN0ZWQudHh0CmluZGV4IDEzOTIyZTc5OWM0OTc4OTk3YjExYzAwNjUwZTQzYTI4
ODU1Y2U4YTYuLjdjODJiNDhlNzUzMTE0NmI2YjJhMGE4ODNmYWZkOTk3NzNiMjIwZTggMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMvcHJvdG9jb2wtY3NzLXJlZ2lvbnMt
Y29tbWFuZHMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMv
cHJvdG9jb2wtY3NzLXJlZ2lvbnMtY29tbWFuZHMtZXhwZWN0ZWQudHh0CkBAIC02LDE2ICs2LDI3
IEBAIG5hbWVkRmxvd0NyZWF0ZWQgQnVnIDkyNzM5CiBuYW1lZEZsb3dSZW1vdmVkIEJ1ZyA5Mjcz
OQogCiAKLVJ1bm5pbmc6IHRlc3RHZXROYW1lZEZsb3dDb2xsZWN0aW9uCi09PT0gQ1NTIE5hbWVk
IEZsb3dzID09PQotZmxvdzEKLWZsb3cyCi1mbG93MworUnVubmluZzogdGVzdEdldE5hbWVkRmxv
d0NvbGxlY3Rpb24xCis9PT0gQ1NTIE5hbWVkIEZsb3dzIGluIG1haW4gZG9jdW1lbnQgPT09Cisq
IE5hbWVkIEZsb3cgImZsb3cxIgorQ29udGVudCBFbGVtZW50czogMQorUmVnaW9uczogMworKiBO
YW1lZCBGbG93ICJmbG93MiIKK0NvbnRlbnQgRWxlbWVudHM6IDEKK1JlZ2lvbnM6IDIKKyogTmFt
ZWQgRmxvdyAiZmxvdzMiCitDb250ZW50IEVsZW1lbnRzOiAxCitSZWdpb25zOiAxCisKK1J1bm5p
bmc6IHRlc3RHZXROYW1lZEZsb3dDb2xsZWN0aW9uMgorPT09IENTUyBOYW1lZCBGbG93cyBpbiAj
ZmFrZS1kb2N1bWVudCA9PT0KKyNmYWtlLWRvY3VtZW50IGlzIG5vdCBhIGRvY3VtZW50CiAKIFJ1
bm5pbmc6IHRlc3RHZXRGbG93QnlOYW1lMQogPT09IE5hbWVkIEZsb3cgImZsb3cyIiBmcm9tIG1h
aW4gZG9jdW1lbnQgPT09Ci1uYW1lOiBmbG93Mgotb3ZlcnNldDogZmFsc2UKKyogTmFtZWQgRmxv
dyAiZmxvdzIiCitDb250ZW50IEVsZW1lbnRzOiAxCitSZWdpb25zOiAyCiAKIFJ1bm5pbmc6IHRl
c3RHZXRGbG93QnlOYW1lMgogPT09IE5hbWUgRmxvdyAiZmxvdzQiIGZyb20gbWFpbiBkb2N1bWVu
dCA9PT0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMvcHJvdG9jb2wt
Y3NzLXJlZ2lvbnMtY29tbWFuZHMuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMv
cHJvdG9jb2wtY3NzLXJlZ2lvbnMtY29tbWFuZHMuaHRtbAppbmRleCBlOTI1NzE3NmE1NTk5MjQ3
ZDM0N2FhOTMyZDlhM2E5YWE3ZWU3Y2FkLi5kODM0YzJhN2ZjZmVkOTJlYWQ4MWY0ZjA2ZjRkODVj
ZDgwZjkxYjU0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVzL3Byb3Rv
Y29sLWNzcy1yZWdpb25zLWNvbW1hbmRzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L3N0eWxlcy9wcm90b2NvbC1jc3MtcmVnaW9ucy1jb21tYW5kcy5odG1sCkBAIC0zOCw3ICszOCw3
IEBAIGZ1bmN0aW9uIHRlc3QoKQogewogICAgIFdlYkluc3BlY3Rvci5zaG93UGFuZWwoImVsZW1l
bnRzIik7CiAgICAgSW5zcGVjdG9yVGVzdC5ydW5UZXN0U3VpdGUoWwotICAgICAgICBmdW5jdGlv
biB0ZXN0R2V0TmFtZWRGbG93Q29sbGVjdGlvbihuZXh0KQorICAgICAgICBmdW5jdGlvbiB0ZXN0
R2V0TmFtZWRGbG93Q29sbGVjdGlvbjEobmV4dCkKICAgICAgICAgewogICAgICAgICAgICAgV2Vi
SW5zcGVjdG9yLmRvbUFnZW50LnJlcXVlc3REb2N1bWVudChkb2N1bWVudENhbGxiYWNrKTsKIApA
QCAtNDksNyArNDksNyBAQCBmdW5jdGlvbiB0ZXN0KCkKIAogICAgICAgICAgICAgZnVuY3Rpb24g
bmFtZWRGbG93Q2FsbGJhY2sobmFtZWRGbG93cykKICAgICAgICAgICAgIHsKLSAgICAgICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiPT09IENTUyBOYW1lZCBGbG93cyA9PT0iKTsK
KyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiPT09IENTUyBOYW1lZCBG
bG93cyBpbiBtYWluIGRvY3VtZW50ID09PSIpOwogCiAgICAgICAgICAgICAgICAgaWYgKCFuYW1l
ZEZsb3dzKSB7CiAgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJb
IV0gRmFpbGVkIHRvIGdldCBOYW1lZCBGbG93cyIpOwpAQCAtNTcsMTUgKzU3LDQ2IEBAIGZ1bmN0
aW9uIHRlc3QoKQogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAg
fQogCi0gICAgICAgICAgICAgICAgbmFtZWRGbG93cy5zb3J0KCk7CisgICAgICAgICAgICAgICAg
bmFtZWRGbG93cy5zb3J0KGZ1bmN0aW9uIChuZjEsIG5mMikgeworICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gKChuZjEubmFtZSA9PSBuZjIubmFtZSkgPyAwIDogKChuZjEubmFtZSA+IG5mMi5u
YW1lKSA/IDEgOiAtMSkpOworICAgICAgICAgICAgICAgIH0pOwogCiAgICAgICAgICAgICAgICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCBuYW1lZEZsb3dzLmxlbmd0aDsgKytpKQotICAgICAgICAgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdChuYW1lZEZsb3dzW2ldKTsKKyAgICAgICAg
ICAgICAgICAgICAgcHJpbnROYW1lZEZsb3cobmFtZWRGbG93c1tpXSk7CiAKICAgICAgICAgICAg
ICAgICBuZXh0KCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0sCiAKKyAgICAgICAgZnVuY3Rp
b24gdGVzdEdldE5hbWVkRmxvd0NvbGxlY3Rpb24yKG5leHQpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIFdlYkluc3BlY3Rvci5kb21BZ2VudC5yZXF1ZXN0RG9jdW1lbnQoZG9jdW1lbnRDYWxsYmFj
ayk7CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIGRvY3VtZW50Q2FsbGJhY2soZG9jdW1lbnQpCisg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmRvbUFnZW50LnF1ZXJ5
U2VsZWN0b3IoZG9jdW1lbnQuaWQsICIjZmFrZS1kb2N1bWVudCIsIHF1ZXJ5U2VsZWN0b3JDYWxs
YmFjayk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIHF1ZXJ5U2VsZWN0
b3JDYWxsYmFjayhub2RlSWQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgV2ViSW5z
cGVjdG9yLmNzc01vZGVsLmdldE5hbWVkRmxvd0NvbGxlY3Rpb25Bc3luYyhub2RlSWQsIG5hbWVk
Rmxvd0NhbGxiYWNrKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24gbmFt
ZWRGbG93Q2FsbGJhY2sobmFtZWRGbG93cykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiPT09IENTUyBOYW1lZCBGbG93cyBpbiAjZmFrZS1k
b2N1bWVudCA9PT0iKTsKKworICAgICAgICAgICAgICAgIGlmIChuYW1lZEZsb3dzKSB7CisgICAg
ICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJbIV0gRmFpbGVkIik7Cisg
ICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0KCk7CisgICAgICAg
ICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiI2Zha2UtZG9jdW1lbnQgaXMgbm90IGEgZG9jdW1l
bnQiKQorICAgICAgICAgICAgICAgIG5leHQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSwK
KwogICAgICAgICBmdW5jdGlvbiB0ZXN0R2V0Rmxvd0J5TmFtZTEobmV4dCkKICAgICAgICAgewog
ICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmRvbUFnZW50LnJlcXVlc3REb2N1bWVudChkb2N1bWVu
dENhbGxiYWNrKTsKQEAgLTg1LDggKzExNiw3IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIm5hbWU6ICIgKyBuYW1lZEZsb3cubmFtZSk7Ci0gICAg
ICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIm92ZXJzZXQ6ICIgKyBuYW1lZEZs
b3cub3ZlcnNldCk7CisgICAgICAgICAgICAgICAgcHJpbnROYW1lZEZsb3cobmFtZWRGbG93KTsK
IAogICAgICAgICAgICAgICAgIG5leHQoKTsKICAgICAgICAgICAgIH0KQEAgLTE1NSw2ICsxODUs
MTMgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICBdKTsK
KworICAgIGZ1bmN0aW9uIHByaW50TmFtZWRGbG93KG5hbWVkRmxvdykKKyAgICB7CisgICAgICAg
IEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCIqIE5hbWVkIEZsb3cgXCIiICsgbmFtZWRGbG93Lm5h
bWUgKyAiXCIiKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIkNvbnRlbnQgRWxl
bWVudHM6ICIgKyBuYW1lZEZsb3cuY29udGVudC5sZW5ndGgpOworICAgICAgICBJbnNwZWN0b3JU
ZXN0LmFkZFJlc3VsdCgiUmVnaW9uczogIiArIG5hbWVkRmxvdy5yZWdpb25zLmxlbmd0aCk7Cisg
ICAgfQogfQogPC9zY3JpcHQ+CiA8L2hlYWQ+CkBAIC0xNzIsMTMgKzIwOSwxOCBAQCBUZXN0cyB0
aGUgZm9sbG93aW5nIGNvbW1hbmRzIGFuZCBldmVudHM6CiAKIDxhcnRpY2xlIHN0eWxlPSItd2Vi
a2l0LWZsb3ctaW50bzogZmxvdzEiPjwvYXJ0aWNsZT4KIDxkaXYgc3R5bGU9Ii13ZWJraXQtZmxv
dy1mcm9tOiBmbG93MSI+PC9kaXY+Cis8ZGl2IHN0eWxlPSItd2Via2l0LWZsb3ctZnJvbTogZmxv
dzEiPjwvZGl2PgorPGRpdiBzdHlsZT0iLXdlYmtpdC1mbG93LWZyb206IGZsb3cxIj48L2Rpdj4K
IAogPGFydGljbGUgc3R5bGU9Ii13ZWJraXQtZmxvdy1pbnRvOiBmbG93MiI+PC9hcnRpY2xlPgog
PGRpdiBzdHlsZT0iLXdlYmtpdC1mbG93LWZyb206IGZsb3cyIj48L2Rpdj4KKzxkaXYgc3R5bGU9
Ii13ZWJraXQtZmxvdy1mcm9tOiBmbG93MiI+PC9kaXY+CiAKIDxhcnRpY2xlIHN0eWxlPSItd2Vi
a2l0LWZsb3ctaW50bzogZmxvdzMiPjwvYXJ0aWNsZT4KIDxkaXYgc3R5bGU9Ii13ZWJraXQtZmxv
dy1mcm9tOiBmbG93MyI+PC9kaXY+CiAKKzxkaXYgaWQ9ImZha2UtZG9jdW1lbnQiPjwvZGl2Pgor
CiA8aWZyYW1lPjwvaWZyYW1lPgogCiA8L2JvZHk+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>157650</attachid>
            <date>2012-08-10 00:25:33 -0700</date>
            <delta_ts>2012-08-10 00:33:14 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-92089-20120810102504.patch</filename>
            <type>text/plain</type>
            <size>25905</size>
            <attacher name="Andrei Poenaru">andreigpoenaru</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI1MjU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDI1NDE2YTcyMTk1N2M4
OTMyYzI5MWJiMDg2YTFmMWUxMjc3ZTE1ZS4uM2I3OWM0MWI5ODRhMzk0NDY3MDc2N2E3MzE0ZmMy
Y2FmMTNkYjUyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDEyLTA4LTEwICBBbmRy
ZWkgUG9lbmFydSAgPHBvZW5hcnVAYWRvYmUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6
IFByb3RvY29sIEV4dGVuc2lvbjogUmVmYWN0b3IgcHJvdG9jb2wgZXh0ZW5zaW9uIGZvciBDU1Mg
UmVnaW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
OTIwODkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBS
ZXBsYWNlZCAiV2ViS2l0TmFtZWRGbG93Q29sbGVjdGlvbjo6bmFtZWRGbG93c05hbWVzIiB3aXRo
ICJXZWJLaXROYW1lZEZsb3dDb2xsZWN0aW9uOjpuYW1lZEZsb3dzIiB0byByZXR1cm4gYSBWZWN0
b3Igb2YgIldlYktpdE5hbWVkRmxvdyJzLAorICAgICAgICBpbnN0ZWFkIG9mIGEgVmVjdG9yIG9m
IFN0cmluZ3MuCisKKyAgICAgICAgQWRkZWQgdGhlICJSZWdpb24iIHR5cGUgdG8gSW5zcGVjdG9y
Lmpzb24uCisgICAgICAgIENoYW5nZWQgdGhlICJOYW1lZEZsb3ciIHR5cGUgYW5kIHRoZSAiZ2V0
TmFtZWRGbG93Q29sbGVjdGlvbiIgZnVuY3Rpb24gaW4gSW5zcGVjdG9yLmpzb24uCisKKyAgICAg
ICAgTW9kaWZpZWQgZXhpc3RpbmcgdGVzdDogaW5zcGVjdG9yL3N0eWxlcy9wcm90b2NvbC1jc3Mt
cmVnaW9ucy1jb21tYW5kcy5odG1sCisKKyAgICAgICAgKiBkb20vV2ViS2l0TmFtZWRGbG93Q29s
bGVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXROYW1lZEZsb3dDb2xsZWN0aW9u
OjpuYW1lZEZsb3dzKToKKyAgICAgICAgKiBkb20vV2ViS2l0TmFtZWRGbG93Q29sbGVjdGlvbi5o
OgorICAgICAgICAoV2ViS2l0TmFtZWRGbG93Q29sbGVjdGlvbik6CisgICAgICAgICogaW5zcGVj
dG9yL0luc3BlY3Rvci5qc29uOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2Vu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0TmFtZWRGbG93
Q29sbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0Rmxv
d0J5TmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6YnVpbGRBcnJh
eUZvclJlZ2lvbnMpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JDU1NBZ2VudDo6YnVpbGRPYmplY3RGb3JOYW1lZEZsb3cpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5oOgorICAgICAgICAoSW5zcGVjdG9yQ1NTQWdlbnQpOgor
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JET01BZ2VudDo6cHVzaE5vZGVUb0Zyb250ZW5kKToKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5oOgorICAgICAg
ICAoSW5zcGVjdG9yRE9NQWdlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvQ1NT
U3R5bGVNb2RlbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NTdHlsZU1vZGVsLnByb3Rv
dHlwZS5nZXROYW1lZEZsb3dDb2xsZWN0aW9uQXN5bmMpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
Lk5hbWVkRmxvdyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmFtZWRGbG93LnBhcnNlUGF5bG9h
ZEFycmF5KToKKwogMjAxMi0wOC0wOSAgU2ltb24gSGF1c21hbm4gIDxzaW1vbi5oYXVzbWFubkBu
b2tpYS5jb20+CiAKICAgICAgICAgW1F0XSBSZW1vdmUgc3VwcG9ydCBmb3IgX19xdF9zZW5kZXJf
XyBpbiBRT2JqZWN0IGJyaWRnZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1dlYktp
dE5hbWVkRmxvd0NvbGxlY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1dlYktpdE5hbWVk
Rmxvd0NvbGxlY3Rpb24uY3BwCmluZGV4IDY1NWRiNWI3ZThmMTFiNDA2N2FkMGQwZjQ0MmY2MDMy
YmYyODFhN2QuLjkyNzM3MjdlZjZhMTE5NmZhYTc3Zjg2NTU5YTk4OWU3YzIxZTc4M2YgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9XZWJLaXROYW1lZEZsb3dDb2xsZWN0aW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vV2ViS2l0TmFtZWRGbG93Q29sbGVjdGlvbi5jcHAKQEAg
LTQ0LDE1ICs0NCwxNSBAQCBXZWJLaXROYW1lZEZsb3dDb2xsZWN0aW9uOjpXZWJLaXROYW1lZEZs
b3dDb2xsZWN0aW9uKERvY3VtZW50KiBkb2MpCiB7CiB9CiAKLVZlY3RvcjxTdHJpbmc+IFdlYktp
dE5hbWVkRmxvd0NvbGxlY3Rpb246Om5hbWVkRmxvd3NOYW1lcygpCitWZWN0b3I8UmVmUHRyPFdl
YktpdE5hbWVkRmxvdz4gPiBXZWJLaXROYW1lZEZsb3dDb2xsZWN0aW9uOjpuYW1lZEZsb3dzKCkK
IHsKLSAgICBWZWN0b3I8U3RyaW5nPiBuYW1lZEZsb3dzOworICAgIFZlY3RvcjxSZWZQdHI8V2Vi
S2l0TmFtZWRGbG93PiA+IG5hbWVkRmxvd3M7CiAKICAgICBmb3IgKE5hbWVkRmxvd1NldDo6aXRl
cmF0b3IgaXQgPSBtX25hbWVkRmxvd3MuYmVnaW4oKTsgaXQgIT0gbV9uYW1lZEZsb3dzLmVuZCgp
OyArK2l0KSB7CiAgICAgICAgIGlmICgoKml0KS0+Zmxvd1N0YXRlKCkgPT0gV2ViS2l0TmFtZWRG
bG93OjpGbG93U3RhdGVOdWxsKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgbmFt
ZWRGbG93cy5hcHBlbmQoKCppdCktPm5hbWUoKS5zdHJpbmcoKSk7CisgICAgICAgIG5hbWVkRmxv
d3MuYXBwZW5kKFJlZlB0cjxXZWJLaXROYW1lZEZsb3c+KCppdCkpOwogICAgIH0KIAogICAgIHJl
dHVybiBuYW1lZEZsb3dzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1dlYktpdE5h
bWVkRmxvd0NvbGxlY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9XZWJLaXROYW1lZEZsb3dD
b2xsZWN0aW9uLmgKaW5kZXggNjc4NzhhNzFhYmI0NzljMmZiZGY3MTM0NTE5NDgyMTkzODZjMWMy
OS4uYmYwMWQ0Yjg0OWQ2YWU2NmE5NGNhMWUxYzI1NWQ3OTcxMjg5YTA4MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL1dlYktpdE5hbWVkRmxvd0NvbGxlY3Rpb24uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vV2ViS2l0TmFtZWRGbG93Q29sbGVjdGlvbi5oCkBAIC00NSw3ICs0NSw3
IEBAIGNsYXNzIFdlYktpdE5hbWVkRmxvd0NvbGxlY3Rpb24gOiBwdWJsaWMgUmVmQ291bnRlZDxX
ZWJLaXROYW1lZEZsb3dDb2xsZWN0aW9uPiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQ
dHI8V2ViS2l0TmFtZWRGbG93Q29sbGVjdGlvbj4gY3JlYXRlKERvY3VtZW50KiBkb2MpIHsgcmV0
dXJuIGFkb3B0UmVmKG5ldyBXZWJLaXROYW1lZEZsb3dDb2xsZWN0aW9uKGRvYykpOyB9CiAKLSAg
ICBWZWN0b3I8U3RyaW5nPiBuYW1lZEZsb3dzTmFtZXMoKTsKKyAgICBWZWN0b3I8UmVmUHRyPFdl
YktpdE5hbWVkRmxvdz4gPiBuYW1lZEZsb3dzKCk7CiAgICAgV2ViS2l0TmFtZWRGbG93KiBmbG93
QnlOYW1lKGNvbnN0IFN0cmluZyYpOwogICAgIFBhc3NSZWZQdHI8V2ViS2l0TmFtZWRGbG93PiBl
bnN1cmVGbG93V2l0aE5hbWUoY29uc3QgU3RyaW5nJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbiBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3IuanNvbgppbmRleCA1ZDYyZjQzZmFhZGI2ODIyYTUzYzk2NzM2YzZkY2RjYzgw
NGJhMjNhLi4zZTkxMTc3MDAxZDUxMGJmNzE1MTkwYTExMTEwYjlkNWYyN2JhNmE1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24KKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uCkBAIC0yMjA2LDEyICsyMjA2LDI0IEBA
CiAgICAgICAgICAgICAgICAgXQogICAgICAgICAgICAgfSwKICAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICAiaWQiOiAiUmVnaW9uIiwKKyAgICAgICAgICAgICAgICAidHlwZSI6ICJvYmpl
Y3QiLAorICAgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIjogWworICAgICAgICAgICAgICAgICAg
ICB7ICJuYW1lIjogInJlZ2lvbk92ZXJzZXQiLCAidHlwZSI6ICJzdHJpbmciLCAiZW51bSI6IFsi
b3ZlcnNldCIsICJmaXQiLCAiZW1wdHkiXSwgImRlc2NyaXB0aW9uIjogIlRoZSBcIm92ZXJzZXRc
IiBhdHRyaWJ1dGUgb2YgYSBOYW1lZCBGbG93LiIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAi
bmFtZSI6ICJub2RlSWQiLCAiJHJlZiI6ICJET00uTm9kZUlkIiwgImRlc2NyaXB0aW9uIjogIlRo
ZSBjb3JyZXNwb25kaW5nIERPTSBub2RlIGlkLiIgfQorICAgICAgICAgICAgICAgIF0sCisgICAg
ICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlRoaXMgb2JqZWN0IHJlcHJlc2VudHMgYSByZWdp
b24gdGhhdCBmbG93cyBmcm9tIGEgTmFtZWQgRmxvdy4iLAorICAgICAgICAgICAgICAgICJoaWRk
ZW4iOiB0cnVlCisgICAgICAgICAgICB9LAorICAgICAgICAgICAgewogICAgICAgICAgICAgICAg
ICJpZCI6ICJOYW1lZEZsb3ciLAogICAgICAgICAgICAgICAgICJ0eXBlIjogIm9iamVjdCIsCiAg
ICAgICAgICAgICAgICAgInByb3BlcnRpZXMiOiBbCi0gICAgICAgICAgICAgICAgICAgIHsgIm5h
bWUiOiAibm9kZUlkIiwgIiRyZWYiOiAiRE9NLk5vZGVJZCIsICJkZXNjcmlwdGlvbiI6ICJUaGUg
ZG9jdW1lbnQgbm9kZSBpZC4iIH0sCisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiZG9j
dW1lbnROb2RlSWQiLCAiJHJlZiI6ICJET00uTm9kZUlkIiwgImRlc2NyaXB0aW9uIjogIlRoZSBk
b2N1bWVudCBub2RlIGlkLiIgfSwKICAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJuYW1l
IiwgInR5cGUiOiAic3RyaW5nIiwgImRlc2NyaXB0aW9uIjogIk5hbWVkIEZsb3cgaWRlbnRpZmll
ci4iIH0sCi0gICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAib3ZlcnNldCIsICJ0eXBlIjog
ImJvb2xlYW4iLCAiZGVzY3JpcHRpb24iOiAiVGhlIFwib3ZlcnNldFwiIGF0dHJpYnV0ZSBvZiBh
IE5hbWVkIEZsb3cuIiB9CisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAib3ZlcnNldCIs
ICJ0eXBlIjogImJvb2xlYW4iLCAiZGVzY3JpcHRpb24iOiAiVGhlIFwib3ZlcnNldFwiIGF0dHJp
YnV0ZSBvZiBhIE5hbWVkIEZsb3cuIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjog
ImNvbnRlbnQiLCAidHlwZSI6ICJhcnJheSIsICJpdGVtcyI6IHsgIiRyZWYiOiAiRE9NLk5vZGVJ
ZCIgfSwgImRlc2NyaXB0aW9uIjogIkFuIGFycmF5IG9mIG5vZGVzIHRoYXQgZmxvdyBpbnRvIHRo
ZSBOYW1lZCBGbG93LiIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJyZWdpb25z
IiwgInR5cGUiOiAiYXJyYXkiLCAiaXRlbXMiOiB7ICIkcmVmIjogIlJlZ2lvbiIgfSwgImRlc2Ny
aXB0aW9uIjogIkFuIGFycmF5IG9mIHJlZ2lvbnMgYXNzb2NpYXRlZCB3aXRoIHRoZSBOYW1lZCBG
bG93LiIgfQogICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9u
IjogIlRoaXMgb2JqZWN0IHJlcHJlc2VudHMgYSBOYW1lZCBGbG93LiIsCiAgICAgICAgICAgICAg
ICAgImhpZGRlbiI6IHRydWUKQEAgLTIzNjQsMTAgKzIzNzYsMTAgQEAKICAgICAgICAgICAgIHsK
ICAgICAgICAgICAgICAgICAibmFtZSI6ICJnZXROYW1lZEZsb3dDb2xsZWN0aW9uIiwKICAgICAg
ICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKLSAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6
ICJub2RlSWQiLCAiJHJlZiI6ICJET00uTm9kZUlkIiwgImRlc2NyaXB0aW9uIjogIlRoZSBkb2N1
bWVudCBub2RlIGlkIGZvciB3aGljaCB0byBnZXQgdGhlIE5hbWVkIEZsb3cgQ29sbGVjdGlvbi4i
IH0KKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJkb2N1bWVudE5vZGVJZCIsICIkcmVm
IjogIkRPTS5Ob2RlSWQiLCAiZGVzY3JpcHRpb24iOiAiVGhlIGRvY3VtZW50IG5vZGUgaWQgZm9y
IHdoaWNoIHRvIGdldCB0aGUgTmFtZWQgRmxvdyBDb2xsZWN0aW9uLiIgfQogICAgICAgICAgICAg
ICAgIF0sCiAgICAgICAgICAgICAgICAgInJldHVybnMiOiBbCi0gICAgICAgICAgICAgICAgICAg
IHsgIm5hbWUiOiAibmFtZWRGbG93cyIsICJ0eXBlIjogImFycmF5IiwgIml0ZW1zIjogeyAidHlw
ZSI6ICJzdHJpbmciIH0sICJkZXNjcmlwdGlvbiI6ICJBbiBhcnJheSBjb250YWluaW5nIHRoZSBO
YW1lZCBGbG93cyBpbiB0aGUgZG9jdW1lbnQuIiB9CisgICAgICAgICAgICAgICAgICAgIHsgIm5h
bWUiOiAibmFtZWRGbG93cyIsICJ0eXBlIjogImFycmF5IiwgIml0ZW1zIjogeyAiJHJlZiI6ICJO
YW1lZEZsb3ciIH0sICJkZXNjcmlwdGlvbiI6ICJBbiBhcnJheSBjb250YWluaW5nIHRoZSBOYW1l
ZCBGbG93cyBpbiB0aGUgZG9jdW1lbnQuIiB9CiAgICAgICAgICAgICAgICAgXSwKICAgICAgICAg
ICAgICAgICAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyB0aGUgTmFtZWQgRmxvd3MgZnJvbSB0aGUg
ZG9jdW1lbnQuIiwKICAgICAgICAgICAgICAgICAiaGlkZGVuIjogdHJ1ZQpAQCAtMjM3NSw3ICsy
Mzg3LDcgQEAKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAibmFtZSI6ICJnZXRGbG93
QnlOYW1lIiwKICAgICAgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKLSAgICAgICAgICAgICAg
ICAgICAgeyAibmFtZSI6ICJub2RlSWQiLCAiJHJlZiI6ICJET00uTm9kZUlkIiwgImRlc2NyaXB0
aW9uIjogIlRoZSBkb2N1bWVudCBub2RlIGlkLiIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAi
bmFtZSI6ICJkb2N1bWVudE5vZGVJZCIsICIkcmVmIjogIkRPTS5Ob2RlSWQiLCAiZGVzY3JpcHRp
b24iOiAiVGhlIGRvY3VtZW50IG5vZGUgaWQuIiB9LAogICAgICAgICAgICAgICAgICAgICB7ICJu
YW1lIjogIm5hbWUiLCAidHlwZSI6ICJzdHJpbmciLCAiZGVzY3JpcHRpb24iOiAiTmFtZWQgRmxv
dyBpZGVudGlmaWVyLiIgfQogICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgInJl
dHVybnMiOiBbCkBAIC0yNDAwLDcgKzI0MTIsNyBAQAogICAgICAgICAgICAgewogICAgICAgICAg
ICAgICAgICJuYW1lIjogIm5hbWVkRmxvd0NyZWF0ZWQiLAogICAgICAgICAgICAgICAgICJwYXJh
bWV0ZXJzIjogWwotICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogIm5vZGVJZCIsICIkcmVm
IjogIkRPTS5Ob2RlSWQiLCAiZGVzY3JpcHRpb24iOiAiVGhlIGRvY3VtZW50IG5vZGUgaWQuIiB9
LAorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImRvY3VtZW50Tm9kZUlkIiwgIiRyZWYi
OiAiRE9NLk5vZGVJZCIsICJkZXNjcmlwdGlvbiI6ICJUaGUgZG9jdW1lbnQgbm9kZSBpZC4iIH0s
CiAgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAibmFtZWRGbG93IiwgInR5cGUiOiAic3Ry
aW5nIiwgImRlc2NyaXB0aW9uIjogIklkZW50aWZpZXIgb2YgdGhlIG5ldyBOYW1lZCBGbG93LiIg
fQogICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkZp
cmVzIHdoZW4gYSBOYW1lZCBGbG93IGlzIGNyZWF0ZWQuIiwKQEAgLTI0MDksNyArMjQyMSw3IEBA
CiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgIm5hbWUiOiAibmFtZWRGbG93UmVtb3Zl
ZCIsCiAgICAgICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBbCi0gICAgICAgICAgICAgICAgICAg
IHsgIm5hbWUiOiAibm9kZUlkIiwgIiRyZWYiOiAiRE9NLk5vZGVJZCIsICJkZXNjcmlwdGlvbiI6
ICJUaGUgZG9jdW1lbnQgbm9kZSBpZC4iIH0sCisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUi
OiAiZG9jdW1lbnROb2RlSWQiLCAiJHJlZiI6ICJET00uTm9kZUlkIiwgImRlc2NyaXB0aW9uIjog
IlRoZSBkb2N1bWVudCBub2RlIGlkLiIgfSwKICAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6
ICJuYW1lZEZsb3ciLCAidHlwZSI6ICJzdHJpbmciLCAiZGVzY3JpcHRpb24iOiAiSWRlbnRpZmll
ciBvZiB0aGUgcmVtb3ZlZCBOYW1lZCBGbG93LiIgfQogICAgICAgICAgICAgICAgIF0sCiAgICAg
ICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkZpcmVzIHdoZW4gYSBOYW1lZCBGbG93IGlzIHJl
bW92ZWQ6IGhhcyBubyBhc3NvY2lhdGVkIGNvbnRlbnQgbm9kZXMgYW5kIHJlZ2lvbnMuIiwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCmluZGV4IGUy
YTlmYTNjNjY0NzFmNzJlNmFhNmI0NmFmZGYwOTRiZjYyZDgyYWQuLjg4YWEwMDQ3YTk3MGIzZGI5
NWQ4NDhjZjFiMWQ4M2UzZjM3YWI1NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckNTU0FnZW50LmNwcApAQCAtNDcsNiArNDcsNyBAQAogI2luY2x1ZGUgIkluc3Ry
dW1lbnRpbmdBZ2VudHMuaCIKICNpbmNsdWRlICJOb2RlLmgiCiAjaW5jbHVkZSAiTm9kZUxpc3Qu
aCIKKyNpbmNsdWRlICJSZW5kZXJSZWdpb24uaCIKICNpbmNsdWRlICJTdHlsZVByb3BlcnR5U2V0
LmgiCiAjaW5jbHVkZSAiU3R5bGVQcm9wZXJ0eVNob3J0aGFuZC5oIgogI2luY2x1ZGUgIlN0eWxl
UmVzb2x2ZXIuaCIKQEAgLTgyNCwzOSArODI1LDM3IEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6
OmdldFN1cHBvcnRlZENTU1Byb3BlcnRpZXMoRXJyb3JTdHJpbmcqLCBSZWZQdHI8VHlwZUJ1aWxk
CiAgICAgY3NzUHJvcGVydGllcyA9IHByb3BlcnRpZXMucmVsZWFzZSgpOwogfQogCi12b2lkIElu
c3BlY3RvckNTU0FnZW50OjpnZXROYW1lZEZsb3dDb2xsZWN0aW9uKEVycm9yU3RyaW5nKiBlcnJv
clN0cmluZywgaW50IG5vZGVJZCwgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxTdHJpbmc+ID4m
IHJlc3VsdCkKK3ZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmdldE5hbWVkRmxvd0NvbGxlY3Rpb24o
RXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBpbnQgZG9jdW1lbnROb2RlSWQsIFJlZlB0cjxUeXBl
QnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkNTUzo6TmFtZWRGbG93PiA+JiByZXN1bHQpCiB7
Ci0gICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gbV9kb21BZ2VudC0+YXNzZXJ0RG9jdW1lbnQoZXJy
b3JTdHJpbmcsIG5vZGVJZCk7CisgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gbV9kb21BZ2VudC0+
YXNzZXJ0RG9jdW1lbnQoZXJyb3JTdHJpbmcsIGRvY3VtZW50Tm9kZUlkKTsKICAgICBpZiAoIWRv
Y3VtZW50KQogICAgICAgICByZXR1cm47CiAKLSAgICBtX25hbWVkRmxvd0NvbGxlY3Rpb25zUmVx
dWVzdGVkLmFkZChub2RlSWQpOworICAgIG1fbmFtZWRGbG93Q29sbGVjdGlvbnNSZXF1ZXN0ZWQu
YWRkKGRvY3VtZW50Tm9kZUlkKTsKKyAgICBWZWN0b3I8UmVmUHRyPFdlYktpdE5hbWVkRmxvdz4g
PiBuYW1lZEZsb3dzVmVjdG9yID0gZG9jdW1lbnQtPm5hbWVkRmxvd3MoKS0+bmFtZWRGbG93cygp
OworICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkNTUzo6TmFtZWRG
bG93PiA+IG5hbWVkRmxvd3MgPSBUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkNTUzo6
TmFtZWRGbG93Pjo6Y3JlYXRlKCk7CiAKLSAgICBWZWN0b3I8U3RyaW5nPiBuYW1lZEZsb3dzVmVj
dG9yID0gZG9jdW1lbnQtPm5hbWVkRmxvd3MoKS0+bmFtZWRGbG93c05hbWVzKCk7Ci0gICAgUmVm
UHRyPFR5cGVCdWlsZGVyOjpBcnJheTxTdHJpbmc+ID4gbmFtZWRGbG93cyA9IFR5cGVCdWlsZGVy
OjpBcnJheTxTdHJpbmc+OjpjcmVhdGUoKTsKIAotICAgIGZvciAoVmVjdG9yPFN0cmluZz46Oml0
ZXJhdG9yIGl0ID0gbmFtZWRGbG93c1ZlY3Rvci5iZWdpbigpOyBpdCAhPSBuYW1lZEZsb3dzVmVj
dG9yLmVuZCgpOyArK2l0KQotICAgICAgICBuYW1lZEZsb3dzLT5hZGRJdGVtKCppdCk7CisgICAg
Zm9yIChWZWN0b3I8UmVmUHRyPFdlYktpdE5hbWVkRmxvdz4gPjo6aXRlcmF0b3IgaXQgPSBuYW1l
ZEZsb3dzVmVjdG9yLmJlZ2luKCk7IGl0ICE9IG5hbWVkRmxvd3NWZWN0b3IuZW5kKCk7ICsraXQp
CisgICAgICAgIG5hbWVkRmxvd3MtPmFkZEl0ZW0oYnVpbGRPYmplY3RGb3JOYW1lZEZsb3coZXJy
b3JTdHJpbmcsIGl0LT5nZXQoKSwgZG9jdW1lbnROb2RlSWQpKTsKIAogICAgIHJlc3VsdCA9IG5h
bWVkRmxvd3MucmVsZWFzZSgpOwogfQogCi12b2lkIEluc3BlY3RvckNTU0FnZW50OjpnZXRGbG93
QnlOYW1lKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgaW50IG5vZGVJZCwgY29uc3QgU3RyaW5n
JiBmbG93TmFtZSwgUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6Ok5hbWVkRmxvdz4mIHJlc3VsdCkK
K3ZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmdldEZsb3dCeU5hbWUoRXJyb3JTdHJpbmcqIGVycm9y
U3RyaW5nLCBpbnQgZG9jdW1lbnROb2RlSWQsIGNvbnN0IFN0cmluZyYgZmxvd05hbWUsIFJlZlB0
cjxUeXBlQnVpbGRlcjo6Q1NTOjpOYW1lZEZsb3c+JiByZXN1bHQpCiB7Ci0gICAgRG9jdW1lbnQq
IGRvY3VtZW50ID0gbV9kb21BZ2VudC0+YXNzZXJ0RG9jdW1lbnQoZXJyb3JTdHJpbmcsIG5vZGVJ
ZCk7CisgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gbV9kb21BZ2VudC0+YXNzZXJ0RG9jdW1lbnQo
ZXJyb3JTdHJpbmcsIGRvY3VtZW50Tm9kZUlkKTsKICAgICBpZiAoIWRvY3VtZW50KQogICAgICAg
ICByZXR1cm47CiAKLSAgICBXZWJLaXROYW1lZEZsb3cqIG5hbWVkRmxvdyA9IGRvY3VtZW50LT5u
YW1lZEZsb3dzKCktPmZsb3dCeU5hbWUoZmxvd05hbWUpOwotICAgIGlmICghbmFtZWRGbG93KSB7
CisgICAgV2ViS2l0TmFtZWRGbG93KiB3ZWJraXROYW1lZEZsb3cgPSBkb2N1bWVudC0+bmFtZWRG
bG93cygpLT5mbG93QnlOYW1lKGZsb3dOYW1lKTsKKyAgICBpZiAoIXdlYmtpdE5hbWVkRmxvdykg
ewogICAgICAgICAqZXJyb3JTdHJpbmcgPSAiTm8gdGFyZ2V0IENTUyBOYW1lZCBGbG93IGZvdW5k
IjsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHJlc3VsdCA9IFR5cGVCdWlsZGVyOjpD
U1M6Ok5hbWVkRmxvdzo6Y3JlYXRlKCkKLSAgICAgICAgLnNldE5vZGVJZChub2RlSWQpCi0gICAg
ICAgIC5zZXROYW1lKGZsb3dOYW1lKQotICAgICAgICAuc2V0T3ZlcnNldChuYW1lZEZsb3ctPm92
ZXJzZXQoKSk7CisgICAgUmVmUHRyPFdlYktpdE5hbWVkRmxvdz4gcHJvdGVjdG9yKHdlYmtpdE5h
bWVkRmxvdyk7CisgICAgcmVzdWx0ID0gYnVpbGRPYmplY3RGb3JOYW1lZEZsb3coZXJyb3JTdHJp
bmcsIHdlYmtpdE5hbWVkRmxvdywgZG9jdW1lbnROb2RlSWQpOwogfQogCiB2b2lkIEluc3BlY3Rv
ckNTU0FnZW50OjpzdGFydFNlbGVjdG9yUHJvZmlsZXIoRXJyb3JTdHJpbmcqKQpAQCAtMTA3Miw2
ICsxMDcxLDYxIEBAIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGU+IEluc3Bl
Y3RvckNTU0FnZW50OjpidWlsZE9iamVjdEZvckF0dHJpYnV0CiAgICAgcmV0dXJuIGluc3BlY3Rv
clN0eWxlLT5idWlsZE9iamVjdEZvclN0eWxlKCk7CiB9CiAKK1Bhc3NSZWZQdHI8VHlwZUJ1aWxk
ZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpDU1M6OlJlZ2lvbj4gPiBJbnNwZWN0b3JDU1NBZ2VudDo6
YnVpbGRBcnJheUZvclJlZ2lvbnMoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBQYXNzUmVmUHRy
PE5vZGVMaXN0PiByZWdpb25MaXN0LCBpbnQgZG9jdW1lbnROb2RlSWQpCit7CisgICAgUmVmUHRy
PFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6Q1NTOjpSZWdpb24+ID4gcmVnaW9ucyA9
IFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6Q1NTOjpSZWdpb24+OjpjcmVhdGUoKTsK
KworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCByZWdpb25MaXN0LT5sZW5ndGgoKTsgKytp
KSB7CisgICAgICAgIFR5cGVCdWlsZGVyOjpDU1M6OlJlZ2lvbjo6UmVnaW9uT3ZlcnNldDo6RW51
bSByZWdpb25PdmVyc2V0OworCisgICAgICAgIHN3aXRjaCAodG9FbGVtZW50KHJlZ2lvbkxpc3Qt
Pml0ZW0oaSkpLT5yZW5kZXJSZWdpb24oKS0+cmVnaW9uU3RhdGUoKSkgeworICAgICAgICBjYXNl
IFJlbmRlclJlZ2lvbjo6UmVnaW9uRml0OgorICAgICAgICAgICAgcmVnaW9uT3ZlcnNldCA9IFR5
cGVCdWlsZGVyOjpDU1M6OlJlZ2lvbjo6UmVnaW9uT3ZlcnNldDo6Rml0OworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgUmVuZGVyUmVnaW9uOjpSZWdpb25FbXB0eToKKyAgICAgICAg
ICAgIHJlZ2lvbk92ZXJzZXQgPSBUeXBlQnVpbGRlcjo6Q1NTOjpSZWdpb246OlJlZ2lvbk92ZXJz
ZXQ6OkVtcHR5OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgUmVuZGVyUmVnaW9u
OjpSZWdpb25PdmVyc2V0OgorICAgICAgICAgICAgcmVnaW9uT3ZlcnNldCA9IFR5cGVCdWlsZGVy
OjpDU1M6OlJlZ2lvbjo6UmVnaW9uT3ZlcnNldDo6T3ZlcnNldDsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBjYXNlIFJlbmRlclJlZ2lvbjo6UmVnaW9uVW5kZWZpbmVkOgorICAgICAgICAg
ICAgY29udGludWU7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAgUmVm
UHRyPFR5cGVCdWlsZGVyOjpDU1M6OlJlZ2lvbj4gcmVnaW9uID0gVHlwZUJ1aWxkZXI6OkNTUzo6
UmVnaW9uOjpjcmVhdGUoKQorICAgICAgICAgICAgLnNldFJlZ2lvbk92ZXJzZXQocmVnaW9uT3Zl
cnNldCkKKyAgICAgICAgICAgIC8vIGRvY3VtZW50Tm9kZUlkIHdhcyBwcmV2aW91c2x5IGFzc2Vy
dGVkCisgICAgICAgICAgICAuc2V0Tm9kZUlkKG1fZG9tQWdlbnQtPnB1c2hOb2RlVG9Gcm9udGVu
ZChlcnJvclN0cmluZywgZG9jdW1lbnROb2RlSWQsIHJlZ2lvbkxpc3QtPml0ZW0oaSkpKTsKKwor
ICAgICAgICByZWdpb25zLT5hZGRJdGVtKHJlZ2lvbik7CisgICAgfQorCisgICAgcmV0dXJuIHJl
Z2lvbnMucmVsZWFzZSgpOworfQorCitQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6Ok5hbWVk
Rmxvdz4gSW5zcGVjdG9yQ1NTQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yTmFtZWRGbG93KEVycm9yU3Ry
aW5nKiBlcnJvclN0cmluZywgV2ViS2l0TmFtZWRGbG93KiB3ZWJraXROYW1lZEZsb3csIGludCBk
b2N1bWVudE5vZGVJZCkKK3sKKyAgICBSZWZQdHI8Tm9kZUxpc3Q+IGNvbnRlbnRMaXN0ID0gd2Vi
a2l0TmFtZWRGbG93LT5nZXRDb250ZW50KCk7CisgICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJh
eTxpbnQ+ID4gY29udGVudCA9IFR5cGVCdWlsZGVyOjpBcnJheTxpbnQ+OjpjcmVhdGUoKTsKKwor
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBjb250ZW50TGlzdC0+bGVuZ3RoKCk7ICsraSkg
eworICAgICAgICAvLyBkb2N1bWVudE5vZGVJZCB3YXMgcHJldmlvdXNseSBhc3NlcnRlZAorICAg
ICAgICBjb250ZW50LT5hZGRJdGVtKG1fZG9tQWdlbnQtPnB1c2hOb2RlVG9Gcm9udGVuZChlcnJv
clN0cmluZywgZG9jdW1lbnROb2RlSWQsIGNvbnRlbnRMaXN0LT5pdGVtKGkpKSk7CisgICAgfQor
CisgICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6Ok5hbWVkRmxvdz4gbmFtZWRGbG93ID0gVHlw
ZUJ1aWxkZXI6OkNTUzo6TmFtZWRGbG93OjpjcmVhdGUoKQorICAgICAgICAuc2V0RG9jdW1lbnRO
b2RlSWQoZG9jdW1lbnROb2RlSWQpCisgICAgICAgIC5zZXROYW1lKHdlYmtpdE5hbWVkRmxvdy0+
bmFtZSgpLnN0cmluZygpKQorICAgICAgICAuc2V0T3ZlcnNldCh3ZWJraXROYW1lZEZsb3ctPm92
ZXJzZXQoKSkKKyAgICAgICAgLnNldENvbnRlbnQoY29udGVudCkKKyAgICAgICAgLnNldFJlZ2lv
bnMoYnVpbGRBcnJheUZvclJlZ2lvbnMoZXJyb3JTdHJpbmcsIHdlYmtpdE5hbWVkRmxvdy0+Z2V0
UmVnaW9ucygpLCBkb2N1bWVudE5vZGVJZCkpOworCisgICAgcmV0dXJuIG5hbWVkRmxvdy5yZWxl
YXNlKCk7Cit9CisKIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmRpZFJlbW92ZURvY3VtZW50KERv
Y3VtZW50KiBkb2N1bWVudCkKIHsKICAgICBpZiAoZG9jdW1lbnQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5oCmluZGV4IGE5NzExNmViOGNmMTBlODdhNjVj
ODZmMThjMWVhNzViMGNlZWI2ZmQuLjg3NzgwNTBkZGE0M2ZhYzgxYWRlN2M2M2Y2NDM5OTczYmQx
ZjdjN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NB
Z2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5o
CkBAIC0xMTMsOCArMTEzLDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRSdWxlU2Vs
ZWN0b3IoRXJyb3JTdHJpbmcqLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYgcnVsZUlk
LCBjb25zdCBTdHJpbmcmIHNlbGVjdG9yLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUnVs
ZT4mIHJlc3VsdCk7CiAgICAgdmlydHVhbCB2b2lkIGFkZFJ1bGUoRXJyb3JTdHJpbmcqLCBpbnQg
Y29udGV4dE5vZGVJZCwgY29uc3QgU3RyaW5nJiBzZWxlY3RvciwgUmVmUHRyPFR5cGVCdWlsZGVy
OjpDU1M6OkNTU1J1bGU+JiByZXN1bHQpOwogICAgIHZpcnR1YWwgdm9pZCBnZXRTdXBwb3J0ZWRD
U1NQcm9wZXJ0aWVzKEVycm9yU3RyaW5nKiwgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBl
QnVpbGRlcjo6Q1NTOjpDU1NQcm9wZXJ0eUluZm8+ID4mIHJlc3VsdCk7Ci0gICAgdmlydHVhbCB2
b2lkIGdldE5hbWVkRmxvd0NvbGxlY3Rpb24oRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlkLCBSZWZQ
dHI8VHlwZUJ1aWxkZXI6OkFycmF5PFN0cmluZz4gPiYgcmVzdWx0KTsKLSAgICB2aXJ0dWFsIHZv
aWQgZ2V0Rmxvd0J5TmFtZShFcnJvclN0cmluZyosIGludCBub2RlSWQsIGNvbnN0IFN0cmluZyYg
Zmxvd05hbWUsIFJlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpOYW1lZEZsb3c+JiByZXN1bHQpOwor
ICAgIHZpcnR1YWwgdm9pZCBnZXROYW1lZEZsb3dDb2xsZWN0aW9uKEVycm9yU3RyaW5nKiwgaW50
IGRvY3VtZW50Tm9kZUlkLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpD
U1M6Ok5hbWVkRmxvdz4gPiYgcmVzdWx0KTsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0Rmxvd0J5TmFt
ZShFcnJvclN0cmluZyosIGludCBkb2N1bWVudE5vZGVJZCwgY29uc3QgU3RyaW5nJiBmbG93TmFt
ZSwgUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6Ok5hbWVkRmxvdz4mIHJlc3VsdCk7CiAKICAgICB2
aXJ0dWFsIHZvaWQgc3RhcnRTZWxlY3RvclByb2ZpbGVyKEVycm9yU3RyaW5nKik7CiAgICAgdmly
dHVhbCB2b2lkIHN0b3BTZWxlY3RvclByb2ZpbGVyKEVycm9yU3RyaW5nKiwgUmVmUHRyPFR5cGVC
dWlsZGVyOjpDU1M6OlNlbGVjdG9yUHJvZmlsZT4mKTsKQEAgLTE1Myw2ICsxNTMsOCBAQCBwcml2
YXRlOgogCiAgICAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkNT
Uzo6Q1NTUnVsZT4gPiBidWlsZEFycmF5Rm9yUnVsZUxpc3QoQ1NTUnVsZUxpc3QqLCBTdHlsZVJl
c29sdmVyKik7CiAgICAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHlsZT4gYnVp
bGRPYmplY3RGb3JBdHRyaWJ1dGVzU3R5bGUoRWxlbWVudCopOworICAgIFBhc3NSZWZQdHI8VHlw
ZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpDU1M6OlJlZ2lvbj4gPiBidWlsZEFycmF5Rm9y
UmVnaW9ucyhFcnJvclN0cmluZyosIFBhc3NSZWZQdHI8Tm9kZUxpc3Q+LCBpbnQgZG9jdW1lbnRO
b2RlSWQpOworICAgIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6TmFtZWRGbG93PiBidWls
ZE9iamVjdEZvck5hbWVkRmxvdyhFcnJvclN0cmluZyosIFdlYktpdE5hbWVkRmxvdyosIGludCBk
b2N1bWVudE5vZGVJZCk7CiAKICAgICAvLyBJbnNwZWN0b3JET01BZ2VudDo6RE9NTGlzdGVuZXIg
aW1wbGVtZW50YXRpb24KICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVtb3ZlRG9jdW1lbnQoRG9jdW1l
bnQqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01B
Z2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3Bw
CmluZGV4IDlkZjlmNzM0YjU2YmU2NWU3ODIwMDY2Y2Y4ZTE0Y2FiNGZkYmYxZTQuLmI4Y2VlNzVk
Yjk5OTE5NmRkZWNhMWY2NDRlZTZjYjhmYjVkYjEzZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcApAQCAtNDQ5LDYgKzQ0OSwxOSBAQCB2b2lk
IEluc3BlY3RvckRPTUFnZW50OjpkaXNjYXJkQmluZGluZ3MoKQogICAgIG1fY2hpbGRyZW5SZXF1
ZXN0ZWQuY2xlYXIoKTsKIH0KIAoraW50IEluc3BlY3RvckRPTUFnZW50OjpwdXNoTm9kZVRvRnJv
bnRlbmQoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBpbnQgZG9jdW1lbnROb2RlSWQsIE5vZGUq
IG5vZGVUb1B1c2gpCit7CisgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gYXNzZXJ0RG9jdW1lbnQo
ZXJyb3JTdHJpbmcsIGRvY3VtZW50Tm9kZUlkKTsKKyAgICBpZiAoIWRvY3VtZW50KQorICAgICAg
ICByZXR1cm4gMDsKKyAgICBpZiAobm9kZVRvUHVzaC0+ZG9jdW1lbnQoKSAhPSBkb2N1bWVudCkg
eworICAgICAgICBlcnJvclN0cmluZyA9ICJOb2RlIGlzIG5vdCBwYXJ0IG9mIHRoZSBkb2N1bWVu
dCB3aXRoIGdpdmVuIGlkIjsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgcmV0dXJu
IHB1c2hOb2RlUGF0aFRvRnJvbnRlbmQobm9kZVRvUHVzaCk7Cit9CisKIE5vZGUqIEluc3BlY3Rv
ckRPTUFnZW50Ojpub2RlRm9ySWQoaW50IGlkKQogewogICAgIGlmICghaWQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5oCmluZGV4IDQ2MGE0NzU1YjU5MDhh
NWEwNTVhZmU3MmQxMmNkZWFjNjU4ZmQwZGYuLmFlZGY3NzkyMGNiMDk1N2UwNjY2OTQ0Yjg2MzFh
ZWQ5MjY1NDUyMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JET01BZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01B
Z2VudC5oCkBAIC0xNjgsNiArMTY4LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlkUHVzaFNoYWRv
d1Jvb3QoRWxlbWVudCogaG9zdCwgU2hhZG93Um9vdCopOwogICAgIHZvaWQgd2lsbFBvcFNoYWRv
d1Jvb3QoRWxlbWVudCogaG9zdCwgU2hhZG93Um9vdCopOwogCisgICAgaW50IHB1c2hOb2RlVG9G
cm9udGVuZChFcnJvclN0cmluZyosIGludCBkb2N1bWVudE5vZGVJZCwgTm9kZSopOwogICAgIE5v
ZGUqIG5vZGVGb3JJZChpbnQgbm9kZUlkKTsKICAgICBpbnQgYm91bmROb2RlSWQoTm9kZSopOwog
ICAgIHZvaWQgc2V0RE9NTGlzdGVuZXIoRE9NTGlzdGVuZXIqKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ1NTU3R5bGVNb2RlbC5qcyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ1NTU3R5bGVNb2RlbC5qcwppbmRleCAwZmM0ZDQw
YjBiODgyMTY3NjgwMDcxNmIyMmEzNTQxMTg0OGJkYTRjLi4wMWIzMjRjODczY2YxZjBkYmYxMGIx
ZThlZjY0MDdkZmY4Mzc1N2VkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL0NTU1N0eWxlTW9kZWwuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9DU1NTdHlsZU1vZGVsLmpzCkBAIC0xNjQsMjEgKzE2NCwyMSBAQCBXZWJJbnNw
ZWN0b3IuQ1NTU3R5bGVNb2RlbC5wcm90b3R5cGUgPSB7CiAKICAgICAvKioKICAgICAgKiBAcGFy
YW0ge0RPTUFnZW50Lk5vZGVJZH0gbm9kZUlkCi0gICAgICogQHBhcmFtIHtmdW5jdGlvbig/QXJy
YXkuPHN0cmluZz4pfSB1c2VyQ2FsbGJhY2sKKyAgICAgKiBAcGFyYW0ge2Z1bmN0aW9uKD9BcnJh
eS48V2ViSW5zcGVjdG9yLk5hbWVkRmxvdz4pfSB1c2VyQ2FsbGJhY2sKICAgICAgKi8KICAgICBn
ZXROYW1lZEZsb3dDb2xsZWN0aW9uQXN5bmM6IGZ1bmN0aW9uKG5vZGVJZCwgdXNlckNhbGxiYWNr
KQogICAgIHsKICAgICAgICAgLyoqCi0gICAgICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24oP0FycmF5
LjxzdHJpbmc+KX0gdXNlckNhbGxiYWNrCisgICAgICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24oP0Fy
cmF5LjxXZWJJbnNwZWN0b3IuTmFtZWRGbG93Pil9IHVzZXJDYWxsYmFjawogICAgICAgICAgKiBA
cGFyYW0gez9Qcm90b2NvbC5FcnJvcn0gZXJyb3IKLSAgICAgICAgICogQHBhcmFtIHs/QXJyYXku
PHN0cmluZz49fSBuYW1lZEZsb3dQYXlsb2FkCisgICAgICAgICAqIEBwYXJhbSB7P0FycmF5LjxD
U1NBZ2VudC5OYW1lZEZsb3c+PX0gbmFtZWRGbG93UGF5bG9hZAogICAgICAgICAgKi8KICAgICAg
ICAgZnVuY3Rpb24gY2FsbGJhY2sodXNlckNhbGxiYWNrLCBlcnJvciwgbmFtZWRGbG93UGF5bG9h
ZCkKICAgICAgICAgewogICAgICAgICAgICAgaWYgKGVycm9yIHx8ICFuYW1lZEZsb3dQYXlsb2Fk
KQogICAgICAgICAgICAgICAgIHVzZXJDYWxsYmFjayhudWxsKTsKICAgICAgICAgICAgIGVsc2UK
LSAgICAgICAgICAgICAgICB1c2VyQ2FsbGJhY2sobmFtZWRGbG93UGF5bG9hZCk7CisgICAgICAg
ICAgICAgICAgdXNlckNhbGxiYWNrKFdlYkluc3BlY3Rvci5OYW1lZEZsb3cucGFyc2VQYXlsb2Fk
QXJyYXkobmFtZWRGbG93UGF5bG9hZCkpOwogICAgICAgICB9CiAKICAgICAgICAgQ1NTQWdlbnQu
Z2V0TmFtZWRGbG93Q29sbGVjdGlvbihub2RlSWQsIGNhbGxiYWNrLmJpbmQodGhpcywgdXNlckNh
bGxiYWNrKSk7CkBAIC0xMzQ1LDYgKzEzNDUsOCBAQCBXZWJJbnNwZWN0b3IuTmFtZWRGbG93ID0g
ZnVuY3Rpb24ocGF5bG9hZCkKICAgICB0aGlzLm5vZGVJZCA9IHBheWxvYWQubm9kZUlkOwogICAg
IHRoaXMubmFtZSA9IHBheWxvYWQubmFtZTsKICAgICB0aGlzLm92ZXJzZXQgPSBwYXlsb2FkLm92
ZXJzZXQ7CisgICAgdGhpcy5jb250ZW50ID0gcGF5bG9hZC5jb250ZW50OworICAgIHRoaXMucmVn
aW9ucyA9IHBheWxvYWQucmVnaW9uczsKIH0KIAogLyoqCkBAIC0xMzU3LDYgKzEzNTksMTcgQEAg
V2ViSW5zcGVjdG9yLk5hbWVkRmxvdy5wYXJzZVBheWxvYWQgPSBmdW5jdGlvbihwYXlsb2FkKQog
fQogCiAvKioKKyAqIEBwYXJhbSB7P0FycmF5LjxDU1NBZ2VudC5OYW1lZEZsb3c+PX0gbmFtZWRG
bG93UGF5bG9hZAorICogQHJldHVybiB7P0FycmF5LjxXZWJJbnNwZWN0b3IuTmFtZWRGbG93Pn0K
KyAqLworV2ViSW5zcGVjdG9yLk5hbWVkRmxvdy5wYXJzZVBheWxvYWRBcnJheSA9IGZ1bmN0aW9u
KHBheWxvYWRBcnJheSkKK3sKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IHBheWxvYWRBcnJheS5s
ZW5ndGg7ICsraSkKKyAgICAgICAgcGF5bG9hZEFycmF5W2ldID0gV2ViSW5zcGVjdG9yLk5hbWVk
Rmxvdy5wYXJzZVBheWxvYWQocGF5bG9hZEFycmF5W2ldKTsKKyAgICByZXR1cm4gcGF5bG9hZEFy
cmF5OworfQorCisvKioKICAqIEB0eXBlIHtXZWJJbnNwZWN0b3IuQ1NTU3R5bGVNb2RlbH0KICAq
LwogV2ViSW5zcGVjdG9yLmNzc01vZGVsID0gbnVsbDsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAxZjZhMzllYjg4NzFmMWYy
NGFlZjEzMmEyNDBiMjI1YTVhZGE1YTcxLi40Yjk0YmU0Mjg5ZWRjNzI4MGE4MmNkYjk1YTcwYWFi
YTg4N2IwZTBiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMDgtMTAgIEFuZHJlaSBQb2Vu
YXJ1ICA8cG9lbmFydUBhZG9iZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogUHJvdG9j
b2wgRXh0ZW5zaW9uOiBSZWZhY3RvciBwcm90b2NvbCBleHRlbnNpb24gZm9yIENTUyBSZWdpb25z
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MjA4OQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENoYW5nZWQg
dGhlIHRlc3QgdG8gdmFsaWRhdGUgdGhlIGNoYW5nZXMgbWFkZSB0byB0aGUgcHJvdG9jb2wuCisK
KyAgICAgICAgKiBpbnNwZWN0b3Ivc3R5bGVzL3Byb3RvY29sLWNzcy1yZWdpb25zLWNvbW1hbmRz
LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc3R5bGVzL3Byb3RvY29sLWNzcy1y
ZWdpb25zLWNvbW1hbmRzLmh0bWw6CisKIDIwMTItMDgtMDkgIE1hdHQgRmFsa2VuaGFnZW4gIDxm
YWxrZW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIE1vdmUgc29tZSBDU1MgLXdlYmtpdC1sb2Nh
bGUgdGVzdHMgb3V0IG9mIGZhc3QvdGV4dC8KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9zdHlsZXMvcHJvdG9jb2wtY3NzLXJlZ2lvbnMtY29tbWFuZHMtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9wcm90b2NvbC1jc3MtcmVnaW9ucy1jb21tYW5k
cy1leHBlY3RlZC50eHQKaW5kZXggMTM5MjJlNzk5YzQ5Nzg5OTdiMTFjMDA2NTBlNDNhMjg4NTVj
ZThhNi4uN2M4MmI0OGU3NTMxMTQ2YjZiMmEwYTg4M2ZhZmQ5OTc3M2IyMjBlOCAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9wcm90b2NvbC1jc3MtcmVnaW9ucy1jb21t
YW5kcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9wcm90
b2NvbC1jc3MtcmVnaW9ucy1jb21tYW5kcy1leHBlY3RlZC50eHQKQEAgLTYsMTYgKzYsMjcgQEAg
bmFtZWRGbG93Q3JlYXRlZCBCdWcgOTI3MzkKIG5hbWVkRmxvd1JlbW92ZWQgQnVnIDkyNzM5CiAK
IAotUnVubmluZzogdGVzdEdldE5hbWVkRmxvd0NvbGxlY3Rpb24KLT09PSBDU1MgTmFtZWQgRmxv
d3MgPT09Ci1mbG93MQotZmxvdzIKLWZsb3czCitSdW5uaW5nOiB0ZXN0R2V0TmFtZWRGbG93Q29s
bGVjdGlvbjEKKz09PSBDU1MgTmFtZWQgRmxvd3MgaW4gbWFpbiBkb2N1bWVudCA9PT0KKyogTmFt
ZWQgRmxvdyAiZmxvdzEiCitDb250ZW50IEVsZW1lbnRzOiAxCitSZWdpb25zOiAzCisqIE5hbWVk
IEZsb3cgImZsb3cyIgorQ29udGVudCBFbGVtZW50czogMQorUmVnaW9uczogMgorKiBOYW1lZCBG
bG93ICJmbG93MyIKK0NvbnRlbnQgRWxlbWVudHM6IDEKK1JlZ2lvbnM6IDEKKworUnVubmluZzog
dGVzdEdldE5hbWVkRmxvd0NvbGxlY3Rpb24yCis9PT0gQ1NTIE5hbWVkIEZsb3dzIGluICNmYWtl
LWRvY3VtZW50ID09PQorI2Zha2UtZG9jdW1lbnQgaXMgbm90IGEgZG9jdW1lbnQKIAogUnVubmlu
ZzogdGVzdEdldEZsb3dCeU5hbWUxCiA9PT0gTmFtZWQgRmxvdyAiZmxvdzIiIGZyb20gbWFpbiBk
b2N1bWVudCA9PT0KLW5hbWU6IGZsb3cyCi1vdmVyc2V0OiBmYWxzZQorKiBOYW1lZCBGbG93ICJm
bG93MiIKK0NvbnRlbnQgRWxlbWVudHM6IDEKK1JlZ2lvbnM6IDIKIAogUnVubmluZzogdGVzdEdl
dEZsb3dCeU5hbWUyCiA9PT0gTmFtZSBGbG93ICJmbG93NCIgZnJvbSBtYWluIGRvY3VtZW50ID09
PQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9wcm90b2NvbC1jc3Mt
cmVnaW9ucy1jb21tYW5kcy5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9wcm90
b2NvbC1jc3MtcmVnaW9ucy1jb21tYW5kcy5odG1sCmluZGV4IGU5MjU3MTc2YTU1OTkyNDdkMzQ3
YWE5MzJkOWEzYTlhYTdlZTdjYWQuLmQ4MzRjMmE3ZmNmZWQ5MmVhZDgxZjRmMDZmNGQ4NWNkODBm
OTFiNTQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMvcHJvdG9jb2wt
Y3NzLXJlZ2lvbnMtY29tbWFuZHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5
bGVzL3Byb3RvY29sLWNzcy1yZWdpb25zLWNvbW1hbmRzLmh0bWwKQEAgLTM4LDcgKzM4LDcgQEAg
ZnVuY3Rpb24gdGVzdCgpCiB7CiAgICAgV2ViSW5zcGVjdG9yLnNob3dQYW5lbCgiZWxlbWVudHMi
KTsKICAgICBJbnNwZWN0b3JUZXN0LnJ1blRlc3RTdWl0ZShbCi0gICAgICAgIGZ1bmN0aW9uIHRl
c3RHZXROYW1lZEZsb3dDb2xsZWN0aW9uKG5leHQpCisgICAgICAgIGZ1bmN0aW9uIHRlc3RHZXRO
YW1lZEZsb3dDb2xsZWN0aW9uMShuZXh0KQogICAgICAgICB7CiAgICAgICAgICAgICBXZWJJbnNw
ZWN0b3IuZG9tQWdlbnQucmVxdWVzdERvY3VtZW50KGRvY3VtZW50Q2FsbGJhY2spOwogCkBAIC00
OSw3ICs0OSw3IEBAIGZ1bmN0aW9uIHRlc3QoKQogCiAgICAgICAgICAgICBmdW5jdGlvbiBuYW1l
ZEZsb3dDYWxsYmFjayhuYW1lZEZsb3dzKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
IEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCI9PT0gQ1NTIE5hbWVkIEZsb3dzID09PSIpOworICAg
ICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCI9PT0gQ1NTIE5hbWVkIEZsb3dz
IGluIG1haW4gZG9jdW1lbnQgPT09Iik7CiAKICAgICAgICAgICAgICAgICBpZiAoIW5hbWVkRmxv
d3MpIHsKICAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIlshXSBG
YWlsZWQgdG8gZ2V0IE5hbWVkIEZsb3dzIik7CkBAIC01NywxNSArNTcsNDYgQEAgZnVuY3Rpb24g
dGVzdCgpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICB9CiAK
LSAgICAgICAgICAgICAgICBuYW1lZEZsb3dzLnNvcnQoKTsKKyAgICAgICAgICAgICAgICBuYW1l
ZEZsb3dzLnNvcnQoZnVuY3Rpb24gKG5mMSwgbmYyKSB7CisgICAgICAgICAgICAgICAgICAgIHJl
dHVybiAoKG5mMS5uYW1lID09IG5mMi5uYW1lKSA/IDAgOiAoKG5mMS5uYW1lID4gbmYyLm5hbWUp
ID8gMSA6IC0xKSk7CisgICAgICAgICAgICAgICAgfSk7CiAKICAgICAgICAgICAgICAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IG5hbWVkRmxvd3MubGVuZ3RoOyArK2kpCi0gICAgICAgICAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KG5hbWVkRmxvd3NbaV0pOworICAgICAgICAgICAg
ICAgICAgICBwcmludE5hbWVkRmxvdyhuYW1lZEZsb3dzW2ldKTsKIAogICAgICAgICAgICAgICAg
IG5leHQoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSwKIAorICAgICAgICBmdW5jdGlvbiB0
ZXN0R2V0TmFtZWRGbG93Q29sbGVjdGlvbjIobmV4dCkKKyAgICAgICAgeworICAgICAgICAgICAg
V2ViSW5zcGVjdG9yLmRvbUFnZW50LnJlcXVlc3REb2N1bWVudChkb2N1bWVudENhbGxiYWNrKTsK
KworICAgICAgICAgICAgZnVuY3Rpb24gZG9jdW1lbnRDYWxsYmFjayhkb2N1bWVudCkKKyAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICBXZWJJbnNwZWN0b3IuZG9tQWdlbnQucXVlcnlTZWxl
Y3Rvcihkb2N1bWVudC5pZCwgIiNmYWtlLWRvY3VtZW50IiwgcXVlcnlTZWxlY3RvckNhbGxiYWNr
KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24gcXVlcnlTZWxlY3RvckNh
bGxiYWNrKG5vZGVJZCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBXZWJJbnNwZWN0
b3IuY3NzTW9kZWwuZ2V0TmFtZWRGbG93Q29sbGVjdGlvbkFzeW5jKG5vZGVJZCwgbmFtZWRGbG93
Q2FsbGJhY2spOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmdW5jdGlvbiBuYW1lZEZs
b3dDYWxsYmFjayhuYW1lZEZsb3dzKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuYWRkUmVzdWx0KCI9PT0gQ1NTIE5hbWVkIEZsb3dzIGluICNmYWtlLWRvY3Vt
ZW50ID09PSIpOworCisgICAgICAgICAgICAgICAgaWYgKG5hbWVkRmxvd3MpIHsKKyAgICAgICAg
ICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIlshXSBGYWlsZWQiKTsKKyAgICAg
ICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5jb21wbGV0ZVRlc3QoKTsKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuYWRkUmVzdWx0KCIjZmFrZS1kb2N1bWVudCBpcyBub3QgYSBkb2N1bWVudCIp
CisgICAgICAgICAgICAgICAgbmV4dCgpOworICAgICAgICAgICAgfQorICAgICAgICB9LAorCiAg
ICAgICAgIGZ1bmN0aW9uIHRlc3RHZXRGbG93QnlOYW1lMShuZXh0KQogICAgICAgICB7CiAgICAg
ICAgICAgICBXZWJJbnNwZWN0b3IuZG9tQWdlbnQucmVxdWVzdERvY3VtZW50KGRvY3VtZW50Q2Fs
bGJhY2spOwpAQCAtODUsOCArMTE2LDcgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICBJbnNw
ZWN0b3JUZXN0LmFkZFJlc3VsdCgibmFtZTogIiArIG5hbWVkRmxvdy5uYW1lKTsKLSAgICAgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgib3ZlcnNldDogIiArIG5hbWVkRmxvdy5v
dmVyc2V0KTsKKyAgICAgICAgICAgICAgICBwcmludE5hbWVkRmxvdyhuYW1lZEZsb3cpOwogCiAg
ICAgICAgICAgICAgICAgbmV4dCgpOwogICAgICAgICAgICAgfQpAQCAtMTU1LDYgKzE4NSwxMyBA
QCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIF0pOworCisg
ICAgZnVuY3Rpb24gcHJpbnROYW1lZEZsb3cobmFtZWRGbG93KQorICAgIHsKKyAgICAgICAgSW5z
cGVjdG9yVGVzdC5hZGRSZXN1bHQoIiogTmFtZWQgRmxvdyBcIiIgKyBuYW1lZEZsb3cubmFtZSAr
ICJcIiIpOworICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiQ29udGVudCBFbGVtZW50
czogIiArIG5hbWVkRmxvdy5jb250ZW50Lmxlbmd0aCk7CisgICAgICAgIEluc3BlY3RvclRlc3Qu
YWRkUmVzdWx0KCJSZWdpb25zOiAiICsgbmFtZWRGbG93LnJlZ2lvbnMubGVuZ3RoKTsKKyAgICB9
CiB9CiA8L3NjcmlwdD4KIDwvaGVhZD4KQEAgLTE3MiwxMyArMjA5LDE4IEBAIFRlc3RzIHRoZSBm
b2xsb3dpbmcgY29tbWFuZHMgYW5kIGV2ZW50czoKIAogPGFydGljbGUgc3R5bGU9Ii13ZWJraXQt
Zmxvdy1pbnRvOiBmbG93MSI+PC9hcnRpY2xlPgogPGRpdiBzdHlsZT0iLXdlYmtpdC1mbG93LWZy
b206IGZsb3cxIj48L2Rpdj4KKzxkaXYgc3R5bGU9Ii13ZWJraXQtZmxvdy1mcm9tOiBmbG93MSI+
PC9kaXY+Cis8ZGl2IHN0eWxlPSItd2Via2l0LWZsb3ctZnJvbTogZmxvdzEiPjwvZGl2PgogCiA8
YXJ0aWNsZSBzdHlsZT0iLXdlYmtpdC1mbG93LWludG86IGZsb3cyIj48L2FydGljbGU+CiA8ZGl2
IHN0eWxlPSItd2Via2l0LWZsb3ctZnJvbTogZmxvdzIiPjwvZGl2PgorPGRpdiBzdHlsZT0iLXdl
YmtpdC1mbG93LWZyb206IGZsb3cyIj48L2Rpdj4KIAogPGFydGljbGUgc3R5bGU9Ii13ZWJraXQt
Zmxvdy1pbnRvOiBmbG93MyI+PC9hcnRpY2xlPgogPGRpdiBzdHlsZT0iLXdlYmtpdC1mbG93LWZy
b206IGZsb3czIj48L2Rpdj4KIAorPGRpdiBpZD0iZmFrZS1kb2N1bWVudCI+PC9kaXY+CisKIDxp
ZnJhbWU+PC9pZnJhbWU+CiAKIDwvYm9keT4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>157665</attachid>
            <date>2012-08-10 01:09:13 -0700</date>
            <delta_ts>2012-08-10 02:58:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch92089</filename>
            <type>text/plain</type>
            <size>25066</size>
            <attacher name="Andrei Poenaru">andreigpoenaru</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAxZjZhMzllLi40Yjk0YmU0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMDgt
MTAgIEFuZHJlaSBQb2VuYXJ1ICA8cG9lbmFydUBhZG9iZS5jb20+CisKKyAgICAgICAgV2ViIElu
c3BlY3RvcjogUHJvdG9jb2wgRXh0ZW5zaW9uOiBSZWZhY3RvciBwcm90b2NvbCBleHRlbnNpb24g
Zm9yIENTUyBSZWdpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD05MjA4OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIENoYW5nZWQgdGhlIHRlc3QgdG8gdmFsaWRhdGUgdGhlIGNoYW5nZXMgbWFkZSB0byB0
aGUgcHJvdG9jb2wuCisKKyAgICAgICAgKiBpbnNwZWN0b3Ivc3R5bGVzL3Byb3RvY29sLWNzcy1y
ZWdpb25zLWNvbW1hbmRzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc3R5bGVz
L3Byb3RvY29sLWNzcy1yZWdpb25zLWNvbW1hbmRzLmh0bWw6CisKIDIwMTItMDgtMDkgIE1hdHQg
RmFsa2VuaGFnZW4gIDxmYWxrZW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIE1vdmUgc29tZSBD
U1MgLXdlYmtpdC1sb2NhbGUgdGVzdHMgb3V0IG9mIGZhc3QvdGV4dC8KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMvcHJvdG9jb2wtY3NzLXJlZ2lvbnMtY29tbWFuZHMt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9wcm90b2NvbC1jc3Mt
cmVnaW9ucy1jb21tYW5kcy1leHBlY3RlZC50eHQKaW5kZXggMTM5MjJlNy4uN2M4MmI0OCAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9wcm90b2NvbC1jc3MtcmVnaW9u
cy1jb21tYW5kcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxl
cy9wcm90b2NvbC1jc3MtcmVnaW9ucy1jb21tYW5kcy1leHBlY3RlZC50eHQKQEAgLTYsMTYgKzYs
MjcgQEAgbmFtZWRGbG93Q3JlYXRlZCBCdWcgOTI3MzkKIG5hbWVkRmxvd1JlbW92ZWQgQnVnIDky
NzM5CiAKIAotUnVubmluZzogdGVzdEdldE5hbWVkRmxvd0NvbGxlY3Rpb24KLT09PSBDU1MgTmFt
ZWQgRmxvd3MgPT09Ci1mbG93MQotZmxvdzIKLWZsb3czCitSdW5uaW5nOiB0ZXN0R2V0TmFtZWRG
bG93Q29sbGVjdGlvbjEKKz09PSBDU1MgTmFtZWQgRmxvd3MgaW4gbWFpbiBkb2N1bWVudCA9PT0K
KyogTmFtZWQgRmxvdyAiZmxvdzEiCitDb250ZW50IEVsZW1lbnRzOiAxCitSZWdpb25zOiAzCisq
IE5hbWVkIEZsb3cgImZsb3cyIgorQ29udGVudCBFbGVtZW50czogMQorUmVnaW9uczogMgorKiBO
YW1lZCBGbG93ICJmbG93MyIKK0NvbnRlbnQgRWxlbWVudHM6IDEKK1JlZ2lvbnM6IDEKKworUnVu
bmluZzogdGVzdEdldE5hbWVkRmxvd0NvbGxlY3Rpb24yCis9PT0gQ1NTIE5hbWVkIEZsb3dzIGlu
ICNmYWtlLWRvY3VtZW50ID09PQorI2Zha2UtZG9jdW1lbnQgaXMgbm90IGEgZG9jdW1lbnQKIAog
UnVubmluZzogdGVzdEdldEZsb3dCeU5hbWUxCiA9PT0gTmFtZWQgRmxvdyAiZmxvdzIiIGZyb20g
bWFpbiBkb2N1bWVudCA9PT0KLW5hbWU6IGZsb3cyCi1vdmVyc2V0OiBmYWxzZQorKiBOYW1lZCBG
bG93ICJmbG93MiIKK0NvbnRlbnQgRWxlbWVudHM6IDEKK1JlZ2lvbnM6IDIKIAogUnVubmluZzog
dGVzdEdldEZsb3dCeU5hbWUyCiA9PT0gTmFtZSBGbG93ICJmbG93NCIgZnJvbSBtYWluIGRvY3Vt
ZW50ID09PQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9wcm90b2Nv
bC1jc3MtcmVnaW9ucy1jb21tYW5kcy5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxl
cy9wcm90b2NvbC1jc3MtcmVnaW9ucy1jb21tYW5kcy5odG1sCmluZGV4IGU5MjU3MTcuLmQ4MzRj
MmEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMvcHJvdG9jb2wtY3Nz
LXJlZ2lvbnMtY29tbWFuZHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVz
L3Byb3RvY29sLWNzcy1yZWdpb25zLWNvbW1hbmRzLmh0bWwKQEAgLTM4LDcgKzM4LDcgQEAgZnVu
Y3Rpb24gdGVzdCgpCiB7CiAgICAgV2ViSW5zcGVjdG9yLnNob3dQYW5lbCgiZWxlbWVudHMiKTsK
ICAgICBJbnNwZWN0b3JUZXN0LnJ1blRlc3RTdWl0ZShbCi0gICAgICAgIGZ1bmN0aW9uIHRlc3RH
ZXROYW1lZEZsb3dDb2xsZWN0aW9uKG5leHQpCisgICAgICAgIGZ1bmN0aW9uIHRlc3RHZXROYW1l
ZEZsb3dDb2xsZWN0aW9uMShuZXh0KQogICAgICAgICB7CiAgICAgICAgICAgICBXZWJJbnNwZWN0
b3IuZG9tQWdlbnQucmVxdWVzdERvY3VtZW50KGRvY3VtZW50Q2FsbGJhY2spOwogCkBAIC00OSw3
ICs0OSw3IEBAIGZ1bmN0aW9uIHRlc3QoKQogCiAgICAgICAgICAgICBmdW5jdGlvbiBuYW1lZEZs
b3dDYWxsYmFjayhuYW1lZEZsb3dzKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuYWRkUmVzdWx0KCI9PT0gQ1NTIE5hbWVkIEZsb3dzID09PSIpOworICAgICAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCI9PT0gQ1NTIE5hbWVkIEZsb3dzIGlu
IG1haW4gZG9jdW1lbnQgPT09Iik7CiAKICAgICAgICAgICAgICAgICBpZiAoIW5hbWVkRmxvd3Mp
IHsKICAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIlshXSBGYWls
ZWQgdG8gZ2V0IE5hbWVkIEZsb3dzIik7CkBAIC01NywxNSArNTcsNDYgQEAgZnVuY3Rpb24gdGVz
dCgpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICB9CiAKLSAg
ICAgICAgICAgICAgICBuYW1lZEZsb3dzLnNvcnQoKTsKKyAgICAgICAgICAgICAgICBuYW1lZEZs
b3dzLnNvcnQoZnVuY3Rpb24gKG5mMSwgbmYyKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVy
biAoKG5mMS5uYW1lID09IG5mMi5uYW1lKSA/IDAgOiAoKG5mMS5uYW1lID4gbmYyLm5hbWUpID8g
MSA6IC0xKSk7CisgICAgICAgICAgICAgICAgfSk7CiAKICAgICAgICAgICAgICAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IG5hbWVkRmxvd3MubGVuZ3RoOyArK2kpCi0gICAgICAgICAgICAgICAgICAg
IEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KG5hbWVkRmxvd3NbaV0pOworICAgICAgICAgICAgICAg
ICAgICBwcmludE5hbWVkRmxvdyhuYW1lZEZsb3dzW2ldKTsKIAogICAgICAgICAgICAgICAgIG5l
eHQoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSwKIAorICAgICAgICBmdW5jdGlvbiB0ZXN0
R2V0TmFtZWRGbG93Q29sbGVjdGlvbjIobmV4dCkKKyAgICAgICAgeworICAgICAgICAgICAgV2Vi
SW5zcGVjdG9yLmRvbUFnZW50LnJlcXVlc3REb2N1bWVudChkb2N1bWVudENhbGxiYWNrKTsKKwor
ICAgICAgICAgICAgZnVuY3Rpb24gZG9jdW1lbnRDYWxsYmFjayhkb2N1bWVudCkKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICBXZWJJbnNwZWN0b3IuZG9tQWdlbnQucXVlcnlTZWxlY3Rv
cihkb2N1bWVudC5pZCwgIiNmYWtlLWRvY3VtZW50IiwgcXVlcnlTZWxlY3RvckNhbGxiYWNrKTsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24gcXVlcnlTZWxlY3RvckNhbGxi
YWNrKG5vZGVJZCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBXZWJJbnNwZWN0b3Iu
Y3NzTW9kZWwuZ2V0TmFtZWRGbG93Q29sbGVjdGlvbkFzeW5jKG5vZGVJZCwgbmFtZWRGbG93Q2Fs
bGJhY2spOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmdW5jdGlvbiBuYW1lZEZsb3dD
YWxsYmFjayhuYW1lZEZsb3dzKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QuYWRkUmVzdWx0KCI9PT0gQ1NTIE5hbWVkIEZsb3dzIGluICNmYWtlLWRvY3VtZW50
ID09PSIpOworCisgICAgICAgICAgICAgICAgaWYgKG5hbWVkRmxvd3MpIHsKKyAgICAgICAgICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIlshXSBGYWlsZWQiKTsKKyAgICAgICAg
ICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5jb21wbGV0ZVRlc3QoKTsKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QuYWRkUmVzdWx0KCIjZmFrZS1kb2N1bWVudCBpcyBub3QgYSBkb2N1bWVudCIpCisg
ICAgICAgICAgICAgICAgbmV4dCgpOworICAgICAgICAgICAgfQorICAgICAgICB9LAorCiAgICAg
ICAgIGZ1bmN0aW9uIHRlc3RHZXRGbG93QnlOYW1lMShuZXh0KQogICAgICAgICB7CiAgICAgICAg
ICAgICBXZWJJbnNwZWN0b3IuZG9tQWdlbnQucmVxdWVzdERvY3VtZW50KGRvY3VtZW50Q2FsbGJh
Y2spOwpAQCAtODUsOCArMTE2LDcgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LmFkZFJlc3VsdCgibmFtZTogIiArIG5hbWVkRmxvdy5uYW1lKTsKLSAgICAgICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgib3ZlcnNldDogIiArIG5hbWVkRmxvdy5vdmVy
c2V0KTsKKyAgICAgICAgICAgICAgICBwcmludE5hbWVkRmxvdyhuYW1lZEZsb3cpOwogCiAgICAg
ICAgICAgICAgICAgbmV4dCgpOwogICAgICAgICAgICAgfQpAQCAtMTU1LDYgKzE4NSwxMyBAQCBm
dW5jdGlvbiB0ZXN0KCkKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIF0pOworCisgICAg
ZnVuY3Rpb24gcHJpbnROYW1lZEZsb3cobmFtZWRGbG93KQorICAgIHsKKyAgICAgICAgSW5zcGVj
dG9yVGVzdC5hZGRSZXN1bHQoIiogTmFtZWQgRmxvdyBcIiIgKyBuYW1lZEZsb3cubmFtZSArICJc
IiIpOworICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiQ29udGVudCBFbGVtZW50czog
IiArIG5hbWVkRmxvdy5jb250ZW50Lmxlbmd0aCk7CisgICAgICAgIEluc3BlY3RvclRlc3QuYWRk
UmVzdWx0KCJSZWdpb25zOiAiICsgbmFtZWRGbG93LnJlZ2lvbnMubGVuZ3RoKTsKKyAgICB9CiB9
CiA8L3NjcmlwdD4KIDwvaGVhZD4KQEAgLTE3MiwxMyArMjA5LDE4IEBAIFRlc3RzIHRoZSBmb2xs
b3dpbmcgY29tbWFuZHMgYW5kIGV2ZW50czoKIAogPGFydGljbGUgc3R5bGU9Ii13ZWJraXQtZmxv
dy1pbnRvOiBmbG93MSI+PC9hcnRpY2xlPgogPGRpdiBzdHlsZT0iLXdlYmtpdC1mbG93LWZyb206
IGZsb3cxIj48L2Rpdj4KKzxkaXYgc3R5bGU9Ii13ZWJraXQtZmxvdy1mcm9tOiBmbG93MSI+PC9k
aXY+Cis8ZGl2IHN0eWxlPSItd2Via2l0LWZsb3ctZnJvbTogZmxvdzEiPjwvZGl2PgogCiA8YXJ0
aWNsZSBzdHlsZT0iLXdlYmtpdC1mbG93LWludG86IGZsb3cyIj48L2FydGljbGU+CiA8ZGl2IHN0
eWxlPSItd2Via2l0LWZsb3ctZnJvbTogZmxvdzIiPjwvZGl2PgorPGRpdiBzdHlsZT0iLXdlYmtp
dC1mbG93LWZyb206IGZsb3cyIj48L2Rpdj4KIAogPGFydGljbGUgc3R5bGU9Ii13ZWJraXQtZmxv
dy1pbnRvOiBmbG93MyI+PC9hcnRpY2xlPgogPGRpdiBzdHlsZT0iLXdlYmtpdC1mbG93LWZyb206
IGZsb3czIj48L2Rpdj4KIAorPGRpdiBpZD0iZmFrZS1kb2N1bWVudCI+PC9kaXY+CisKIDxpZnJh
bWU+PC9pZnJhbWU+CiAKIDwvYm9keT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAzNjUxN2U2Li4yOTQwMDZkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsNDEgQEAKKzIwMTItMDgtMTAgIEFuZHJlaSBQb2VuYXJ1ICA8
cG9lbmFydUBhZG9iZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogUHJvdG9jb2wgRXh0
ZW5zaW9uOiBSZWZhY3RvciBwcm90b2NvbCBleHRlbnNpb24gZm9yIENTUyBSZWdpb25zCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MjA4OQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlcGxhY2VkICJXZWJL
aXROYW1lZEZsb3dDb2xsZWN0aW9uOjpuYW1lZEZsb3dzTmFtZXMiIHdpdGggIldlYktpdE5hbWVk
Rmxvd0NvbGxlY3Rpb246Om5hbWVkRmxvd3MiIHRvIHJldHVybiBhIFZlY3RvciBvZiAiV2ViS2l0
TmFtZWRGbG93InMsCisgICAgICAgIGluc3RlYWQgb2YgYSBWZWN0b3Igb2YgU3RyaW5ncy4KKwor
ICAgICAgICBBZGRlZCB0aGUgIlJlZ2lvbiIgdHlwZSB0byBJbnNwZWN0b3IuanNvbi4KKyAgICAg
ICAgQ2hhbmdlZCB0aGUgIk5hbWVkRmxvdyIgdHlwZSBhbmQgdGhlICJnZXROYW1lZEZsb3dDb2xs
ZWN0aW9uIiBmdW5jdGlvbiBpbiBJbnNwZWN0b3IuanNvbi4KKworICAgICAgICBNb2RpZmllZCBl
eGlzdGluZyB0ZXN0OiBpbnNwZWN0b3Ivc3R5bGVzL3Byb3RvY29sLWNzcy1yZWdpb25zLWNvbW1h
bmRzLmh0bWwKKworICAgICAgICAqIGRvbS9XZWJLaXROYW1lZEZsb3dDb2xsZWN0aW9uLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OldlYktpdE5hbWVkRmxvd0NvbGxlY3Rpb246Om5hbWVkRmxvd3Mp
OgorICAgICAgICAqIGRvbS9XZWJLaXROYW1lZEZsb3dDb2xsZWN0aW9uLmg6CisgICAgICAgIChX
ZWJLaXROYW1lZEZsb3dDb2xsZWN0aW9uKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9y
Lmpzb246CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50OjpnZXROYW1lZEZsb3dDb2xsZWN0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50OjpnZXRGbG93QnlOYW1lKToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50OjpidWlsZEFycmF5Rm9yUmVnaW9ucyk6
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50
OjpidWlsZE9iamVjdEZvck5hbWVkRmxvdyk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rv
ckNTU0FnZW50Lmg6CisgICAgICAgIChJbnNwZWN0b3JDU1NBZ2VudCk6CisgICAgICAgICogaW5z
cGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckRPTUFnZW50OjpwdXNoTm9kZVRvRnJvbnRlbmQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50Lmg6CisgICAgICAgIChJbnNwZWN0b3JE
T01BZ2VudCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9DU1NTdHlsZU1vZGVsLmpz
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU1N0eWxlTW9kZWwucHJvdG90eXBlLmdldE5hbWVk
Rmxvd0NvbGxlY3Rpb25Bc3luYyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmFtZWRGbG93KToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5OYW1lZEZsb3cucGFyc2VQYXlsb2FkQXJyYXkpOgorCiAy
MDEyLTA4LTEwICBTYW0gRCAgPGRzYW0yOTEyQGdtYWlsLmNvbT4KIAogICAgICAgICBXZWIgSW5z
cGVjdG9yOiBTZWFyY2ggbWF0Y2hlcyBjb3VudCB2aWV3IGlzIGZsYWt5LgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL1dlYktpdE5hbWVkRmxvd0NvbGxlY3Rpb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvZG9tL1dlYktpdE5hbWVkRmxvd0NvbGxlY3Rpb24uY3BwCmluZGV4IDY1NWRiNWIu
LjkyNzM3MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9XZWJLaXROYW1lZEZsb3dD
b2xsZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vV2ViS2l0TmFtZWRGbG93Q29s
bGVjdGlvbi5jcHAKQEAgLTQ0LDE1ICs0NCwxNSBAQCBXZWJLaXROYW1lZEZsb3dDb2xsZWN0aW9u
OjpXZWJLaXROYW1lZEZsb3dDb2xsZWN0aW9uKERvY3VtZW50KiBkb2MpCiB7CiB9CiAKLVZlY3Rv
cjxTdHJpbmc+IFdlYktpdE5hbWVkRmxvd0NvbGxlY3Rpb246Om5hbWVkRmxvd3NOYW1lcygpCitW
ZWN0b3I8UmVmUHRyPFdlYktpdE5hbWVkRmxvdz4gPiBXZWJLaXROYW1lZEZsb3dDb2xsZWN0aW9u
OjpuYW1lZEZsb3dzKCkKIHsKLSAgICBWZWN0b3I8U3RyaW5nPiBuYW1lZEZsb3dzOworICAgIFZl
Y3RvcjxSZWZQdHI8V2ViS2l0TmFtZWRGbG93PiA+IG5hbWVkRmxvd3M7CiAKICAgICBmb3IgKE5h
bWVkRmxvd1NldDo6aXRlcmF0b3IgaXQgPSBtX25hbWVkRmxvd3MuYmVnaW4oKTsgaXQgIT0gbV9u
YW1lZEZsb3dzLmVuZCgpOyArK2l0KSB7CiAgICAgICAgIGlmICgoKml0KS0+Zmxvd1N0YXRlKCkg
PT0gV2ViS2l0TmFtZWRGbG93OjpGbG93U3RhdGVOdWxsKQogICAgICAgICAgICAgY29udGludWU7
CiAKLSAgICAgICAgbmFtZWRGbG93cy5hcHBlbmQoKCppdCktPm5hbWUoKS5zdHJpbmcoKSk7Cisg
ICAgICAgIG5hbWVkRmxvd3MuYXBwZW5kKFJlZlB0cjxXZWJLaXROYW1lZEZsb3c+KCppdCkpOwog
ICAgIH0KIAogICAgIHJldHVybiBuYW1lZEZsb3dzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL1dlYktpdE5hbWVkRmxvd0NvbGxlY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9X
ZWJLaXROYW1lZEZsb3dDb2xsZWN0aW9uLmgKaW5kZXggNjc4NzhhNy4uYmYwMWQ0YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1dlYktpdE5hbWVkRmxvd0NvbGxlY3Rpb24uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vV2ViS2l0TmFtZWRGbG93Q29sbGVjdGlvbi5oCkBAIC00NSw3
ICs0NSw3IEBAIGNsYXNzIFdlYktpdE5hbWVkRmxvd0NvbGxlY3Rpb24gOiBwdWJsaWMgUmVmQ291
bnRlZDxXZWJLaXROYW1lZEZsb3dDb2xsZWN0aW9uPiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBh
c3NSZWZQdHI8V2ViS2l0TmFtZWRGbG93Q29sbGVjdGlvbj4gY3JlYXRlKERvY3VtZW50KiBkb2Mp
IHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJLaXROYW1lZEZsb3dDb2xsZWN0aW9uKGRvYykpOyB9
CiAKLSAgICBWZWN0b3I8U3RyaW5nPiBuYW1lZEZsb3dzTmFtZXMoKTsKKyAgICBWZWN0b3I8UmVm
UHRyPFdlYktpdE5hbWVkRmxvdz4gPiBuYW1lZEZsb3dzKCk7CiAgICAgV2ViS2l0TmFtZWRGbG93
KiBmbG93QnlOYW1lKGNvbnN0IFN0cmluZyYpOwogICAgIFBhc3NSZWZQdHI8V2ViS2l0TmFtZWRG
bG93PiBlbnN1cmVGbG93V2l0aE5hbWUoY29uc3QgU3RyaW5nJik7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbiBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3IuanNvbgppbmRleCA1ZDYyZjQzLi4zZTkxMTc3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24KKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uCkBAIC0yMjA2LDEyICsyMjA2LDI0IEBACiAg
ICAgICAgICAgICAgICAgXQogICAgICAgICAgICAgfSwKICAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICAiaWQiOiAiUmVnaW9uIiwKKyAgICAgICAgICAgICAgICAidHlwZSI6ICJvYmplY3Qi
LAorICAgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIjogWworICAgICAgICAgICAgICAgICAgICB7
ICJuYW1lIjogInJlZ2lvbk92ZXJzZXQiLCAidHlwZSI6ICJzdHJpbmciLCAiZW51bSI6IFsib3Zl
cnNldCIsICJmaXQiLCAiZW1wdHkiXSwgImRlc2NyaXB0aW9uIjogIlRoZSBcIm92ZXJzZXRcIiBh
dHRyaWJ1dGUgb2YgYSBOYW1lZCBGbG93LiIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAibmFt
ZSI6ICJub2RlSWQiLCAiJHJlZiI6ICJET00uTm9kZUlkIiwgImRlc2NyaXB0aW9uIjogIlRoZSBj
b3JyZXNwb25kaW5nIERPTSBub2RlIGlkLiIgfQorICAgICAgICAgICAgICAgIF0sCisgICAgICAg
ICAgICAgICAgImRlc2NyaXB0aW9uIjogIlRoaXMgb2JqZWN0IHJlcHJlc2VudHMgYSByZWdpb24g
dGhhdCBmbG93cyBmcm9tIGEgTmFtZWQgRmxvdy4iLAorICAgICAgICAgICAgICAgICJoaWRkZW4i
OiB0cnVlCisgICAgICAgICAgICB9LAorICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICJp
ZCI6ICJOYW1lZEZsb3ciLAogICAgICAgICAgICAgICAgICJ0eXBlIjogIm9iamVjdCIsCiAgICAg
ICAgICAgICAgICAgInByb3BlcnRpZXMiOiBbCi0gICAgICAgICAgICAgICAgICAgIHsgIm5hbWUi
OiAibm9kZUlkIiwgIiRyZWYiOiAiRE9NLk5vZGVJZCIsICJkZXNjcmlwdGlvbiI6ICJUaGUgZG9j
dW1lbnQgbm9kZSBpZC4iIH0sCisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiZG9jdW1l
bnROb2RlSWQiLCAiJHJlZiI6ICJET00uTm9kZUlkIiwgImRlc2NyaXB0aW9uIjogIlRoZSBkb2N1
bWVudCBub2RlIGlkLiIgfSwKICAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJuYW1lIiwg
InR5cGUiOiAic3RyaW5nIiwgImRlc2NyaXB0aW9uIjogIk5hbWVkIEZsb3cgaWRlbnRpZmllci4i
IH0sCi0gICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAib3ZlcnNldCIsICJ0eXBlIjogImJv
b2xlYW4iLCAiZGVzY3JpcHRpb24iOiAiVGhlIFwib3ZlcnNldFwiIGF0dHJpYnV0ZSBvZiBhIE5h
bWVkIEZsb3cuIiB9CisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAib3ZlcnNldCIsICJ0
eXBlIjogImJvb2xlYW4iLCAiZGVzY3JpcHRpb24iOiAiVGhlIFwib3ZlcnNldFwiIGF0dHJpYnV0
ZSBvZiBhIE5hbWVkIEZsb3cuIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImNv
bnRlbnQiLCAidHlwZSI6ICJhcnJheSIsICJpdGVtcyI6IHsgIiRyZWYiOiAiRE9NLk5vZGVJZCIg
fSwgImRlc2NyaXB0aW9uIjogIkFuIGFycmF5IG9mIG5vZGVzIHRoYXQgZmxvdyBpbnRvIHRoZSBO
YW1lZCBGbG93LiIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJyZWdpb25zIiwg
InR5cGUiOiAiYXJyYXkiLCAiaXRlbXMiOiB7ICIkcmVmIjogIlJlZ2lvbiIgfSwgImRlc2NyaXB0
aW9uIjogIkFuIGFycmF5IG9mIHJlZ2lvbnMgYXNzb2NpYXRlZCB3aXRoIHRoZSBOYW1lZCBGbG93
LiIgfQogICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjog
IlRoaXMgb2JqZWN0IHJlcHJlc2VudHMgYSBOYW1lZCBGbG93LiIsCiAgICAgICAgICAgICAgICAg
ImhpZGRlbiI6IHRydWUKQEAgLTIzNjQsMTAgKzIzNzYsMTAgQEAKICAgICAgICAgICAgIHsKICAg
ICAgICAgICAgICAgICAibmFtZSI6ICJnZXROYW1lZEZsb3dDb2xsZWN0aW9uIiwKICAgICAgICAg
ICAgICAgICAicGFyYW1ldGVycyI6IFsKLSAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJu
b2RlSWQiLCAiJHJlZiI6ICJET00uTm9kZUlkIiwgImRlc2NyaXB0aW9uIjogIlRoZSBkb2N1bWVu
dCBub2RlIGlkIGZvciB3aGljaCB0byBnZXQgdGhlIE5hbWVkIEZsb3cgQ29sbGVjdGlvbi4iIH0K
KyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJkb2N1bWVudE5vZGVJZCIsICIkcmVmIjog
IkRPTS5Ob2RlSWQiLCAiZGVzY3JpcHRpb24iOiAiVGhlIGRvY3VtZW50IG5vZGUgaWQgZm9yIHdo
aWNoIHRvIGdldCB0aGUgTmFtZWQgRmxvdyBDb2xsZWN0aW9uLiIgfQogICAgICAgICAgICAgICAg
IF0sCiAgICAgICAgICAgICAgICAgInJldHVybnMiOiBbCi0gICAgICAgICAgICAgICAgICAgIHsg
Im5hbWUiOiAibmFtZWRGbG93cyIsICJ0eXBlIjogImFycmF5IiwgIml0ZW1zIjogeyAidHlwZSI6
ICJzdHJpbmciIH0sICJkZXNjcmlwdGlvbiI6ICJBbiBhcnJheSBjb250YWluaW5nIHRoZSBOYW1l
ZCBGbG93cyBpbiB0aGUgZG9jdW1lbnQuIiB9CisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUi
OiAibmFtZWRGbG93cyIsICJ0eXBlIjogImFycmF5IiwgIml0ZW1zIjogeyAiJHJlZiI6ICJOYW1l
ZEZsb3ciIH0sICJkZXNjcmlwdGlvbiI6ICJBbiBhcnJheSBjb250YWluaW5nIHRoZSBOYW1lZCBG
bG93cyBpbiB0aGUgZG9jdW1lbnQuIiB9CiAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAg
ICAgICAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyB0aGUgTmFtZWQgRmxvd3MgZnJvbSB0aGUgZG9j
dW1lbnQuIiwKICAgICAgICAgICAgICAgICAiaGlkZGVuIjogdHJ1ZQpAQCAtMjM3NSw3ICsyMzg3
LDcgQEAKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAibmFtZSI6ICJnZXRGbG93QnlO
YW1lIiwKICAgICAgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKLSAgICAgICAgICAgICAgICAg
ICAgeyAibmFtZSI6ICJub2RlSWQiLCAiJHJlZiI6ICJET00uTm9kZUlkIiwgImRlc2NyaXB0aW9u
IjogIlRoZSBkb2N1bWVudCBub2RlIGlkLiIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAibmFt
ZSI6ICJkb2N1bWVudE5vZGVJZCIsICIkcmVmIjogIkRPTS5Ob2RlSWQiLCAiZGVzY3JpcHRpb24i
OiAiVGhlIGRvY3VtZW50IG5vZGUgaWQuIiB9LAogICAgICAgICAgICAgICAgICAgICB7ICJuYW1l
IjogIm5hbWUiLCAidHlwZSI6ICJzdHJpbmciLCAiZGVzY3JpcHRpb24iOiAiTmFtZWQgRmxvdyBp
ZGVudGlmaWVyLiIgfQogICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgInJldHVy
bnMiOiBbCkBAIC0yNDAwLDcgKzI0MTIsNyBAQAogICAgICAgICAgICAgewogICAgICAgICAgICAg
ICAgICJuYW1lIjogIm5hbWVkRmxvd0NyZWF0ZWQiLAogICAgICAgICAgICAgICAgICJwYXJhbWV0
ZXJzIjogWwotICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogIm5vZGVJZCIsICIkcmVmIjog
IkRPTS5Ob2RlSWQiLCAiZGVzY3JpcHRpb24iOiAiVGhlIGRvY3VtZW50IG5vZGUgaWQuIiB9LAor
ICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImRvY3VtZW50Tm9kZUlkIiwgIiRyZWYiOiAi
RE9NLk5vZGVJZCIsICJkZXNjcmlwdGlvbiI6ICJUaGUgZG9jdW1lbnQgbm9kZSBpZC4iIH0sCiAg
ICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAibmFtZWRGbG93IiwgInR5cGUiOiAic3RyaW5n
IiwgImRlc2NyaXB0aW9uIjogIklkZW50aWZpZXIgb2YgdGhlIG5ldyBOYW1lZCBGbG93LiIgfQog
ICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkZpcmVz
IHdoZW4gYSBOYW1lZCBGbG93IGlzIGNyZWF0ZWQuIiwKQEAgLTI0MDksNyArMjQyMSw3IEBACiAg
ICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgIm5hbWUiOiAibmFtZWRGbG93UmVtb3ZlZCIs
CiAgICAgICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBbCi0gICAgICAgICAgICAgICAgICAgIHsg
Im5hbWUiOiAibm9kZUlkIiwgIiRyZWYiOiAiRE9NLk5vZGVJZCIsICJkZXNjcmlwdGlvbiI6ICJU
aGUgZG9jdW1lbnQgbm9kZSBpZC4iIH0sCisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAi
ZG9jdW1lbnROb2RlSWQiLCAiJHJlZiI6ICJET00uTm9kZUlkIiwgImRlc2NyaXB0aW9uIjogIlRo
ZSBkb2N1bWVudCBub2RlIGlkLiIgfSwKICAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJu
YW1lZEZsb3ciLCAidHlwZSI6ICJzdHJpbmciLCAiZGVzY3JpcHRpb24iOiAiSWRlbnRpZmllciBv
ZiB0aGUgcmVtb3ZlZCBOYW1lZCBGbG93LiIgfQogICAgICAgICAgICAgICAgIF0sCiAgICAgICAg
ICAgICAgICAgImRlc2NyaXB0aW9uIjogIkZpcmVzIHdoZW4gYSBOYW1lZCBGbG93IGlzIHJlbW92
ZWQ6IGhhcyBubyBhc3NvY2lhdGVkIGNvbnRlbnQgbm9kZXMgYW5kIHJlZ2lvbnMuIiwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCmluZGV4IGUyYTlm
YTMuLjg4YWEwMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JDU1NBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNT
U0FnZW50LmNwcApAQCAtNDcsNiArNDcsNyBAQAogI2luY2x1ZGUgIkluc3RydW1lbnRpbmdBZ2Vu
dHMuaCIKICNpbmNsdWRlICJOb2RlLmgiCiAjaW5jbHVkZSAiTm9kZUxpc3QuaCIKKyNpbmNsdWRl
ICJSZW5kZXJSZWdpb24uaCIKICNpbmNsdWRlICJTdHlsZVByb3BlcnR5U2V0LmgiCiAjaW5jbHVk
ZSAiU3R5bGVQcm9wZXJ0eVNob3J0aGFuZC5oIgogI2luY2x1ZGUgIlN0eWxlUmVzb2x2ZXIuaCIK
QEAgLTgyNCwzOSArODI1LDM3IEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmdldFN1cHBvcnRl
ZENTU1Byb3BlcnRpZXMoRXJyb3JTdHJpbmcqLCBSZWZQdHI8VHlwZUJ1aWxkCiAgICAgY3NzUHJv
cGVydGllcyA9IHByb3BlcnRpZXMucmVsZWFzZSgpOwogfQogCi12b2lkIEluc3BlY3RvckNTU0Fn
ZW50OjpnZXROYW1lZEZsb3dDb2xsZWN0aW9uKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgaW50
IG5vZGVJZCwgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxTdHJpbmc+ID4mIHJlc3VsdCkKK3Zv
aWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmdldE5hbWVkRmxvd0NvbGxlY3Rpb24oRXJyb3JTdHJpbmcq
IGVycm9yU3RyaW5nLCBpbnQgZG9jdW1lbnROb2RlSWQsIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJy
YXk8VHlwZUJ1aWxkZXI6OkNTUzo6TmFtZWRGbG93PiA+JiByZXN1bHQpCiB7Ci0gICAgRG9jdW1l
bnQqIGRvY3VtZW50ID0gbV9kb21BZ2VudC0+YXNzZXJ0RG9jdW1lbnQoZXJyb3JTdHJpbmcsIG5v
ZGVJZCk7CisgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gbV9kb21BZ2VudC0+YXNzZXJ0RG9jdW1l
bnQoZXJyb3JTdHJpbmcsIGRvY3VtZW50Tm9kZUlkKTsKICAgICBpZiAoIWRvY3VtZW50KQogICAg
ICAgICByZXR1cm47CiAKLSAgICBtX25hbWVkRmxvd0NvbGxlY3Rpb25zUmVxdWVzdGVkLmFkZChu
b2RlSWQpOworICAgIG1fbmFtZWRGbG93Q29sbGVjdGlvbnNSZXF1ZXN0ZWQuYWRkKGRvY3VtZW50
Tm9kZUlkKTsKKyAgICBWZWN0b3I8UmVmUHRyPFdlYktpdE5hbWVkRmxvdz4gPiBuYW1lZEZsb3dz
VmVjdG9yID0gZG9jdW1lbnQtPm5hbWVkRmxvd3MoKS0+bmFtZWRGbG93cygpOworICAgIFJlZlB0
cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkNTUzo6TmFtZWRGbG93PiA+IG5hbWVk
Rmxvd3MgPSBUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkNTUzo6TmFtZWRGbG93Pjo6
Y3JlYXRlKCk7CiAKLSAgICBWZWN0b3I8U3RyaW5nPiBuYW1lZEZsb3dzVmVjdG9yID0gZG9jdW1l
bnQtPm5hbWVkRmxvd3MoKS0+bmFtZWRGbG93c05hbWVzKCk7Ci0gICAgUmVmUHRyPFR5cGVCdWls
ZGVyOjpBcnJheTxTdHJpbmc+ID4gbmFtZWRGbG93cyA9IFR5cGVCdWlsZGVyOjpBcnJheTxTdHJp
bmc+OjpjcmVhdGUoKTsKIAotICAgIGZvciAoVmVjdG9yPFN0cmluZz46Oml0ZXJhdG9yIGl0ID0g
bmFtZWRGbG93c1ZlY3Rvci5iZWdpbigpOyBpdCAhPSBuYW1lZEZsb3dzVmVjdG9yLmVuZCgpOyAr
K2l0KQotICAgICAgICBuYW1lZEZsb3dzLT5hZGRJdGVtKCppdCk7CisgICAgZm9yIChWZWN0b3I8
UmVmUHRyPFdlYktpdE5hbWVkRmxvdz4gPjo6aXRlcmF0b3IgaXQgPSBuYW1lZEZsb3dzVmVjdG9y
LmJlZ2luKCk7IGl0ICE9IG5hbWVkRmxvd3NWZWN0b3IuZW5kKCk7ICsraXQpCisgICAgICAgIG5h
bWVkRmxvd3MtPmFkZEl0ZW0oYnVpbGRPYmplY3RGb3JOYW1lZEZsb3coZXJyb3JTdHJpbmcsIGl0
LT5nZXQoKSwgZG9jdW1lbnROb2RlSWQpKTsKIAogICAgIHJlc3VsdCA9IG5hbWVkRmxvd3MucmVs
ZWFzZSgpOwogfQogCi12b2lkIEluc3BlY3RvckNTU0FnZW50OjpnZXRGbG93QnlOYW1lKEVycm9y
U3RyaW5nKiBlcnJvclN0cmluZywgaW50IG5vZGVJZCwgY29uc3QgU3RyaW5nJiBmbG93TmFtZSwg
UmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6Ok5hbWVkRmxvdz4mIHJlc3VsdCkKK3ZvaWQgSW5zcGVj
dG9yQ1NTQWdlbnQ6OmdldEZsb3dCeU5hbWUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBpbnQg
ZG9jdW1lbnROb2RlSWQsIGNvbnN0IFN0cmluZyYgZmxvd05hbWUsIFJlZlB0cjxUeXBlQnVpbGRl
cjo6Q1NTOjpOYW1lZEZsb3c+JiByZXN1bHQpCiB7Ci0gICAgRG9jdW1lbnQqIGRvY3VtZW50ID0g
bV9kb21BZ2VudC0+YXNzZXJ0RG9jdW1lbnQoZXJyb3JTdHJpbmcsIG5vZGVJZCk7CisgICAgRG9j
dW1lbnQqIGRvY3VtZW50ID0gbV9kb21BZ2VudC0+YXNzZXJ0RG9jdW1lbnQoZXJyb3JTdHJpbmcs
IGRvY3VtZW50Tm9kZUlkKTsKICAgICBpZiAoIWRvY3VtZW50KQogICAgICAgICByZXR1cm47CiAK
LSAgICBXZWJLaXROYW1lZEZsb3cqIG5hbWVkRmxvdyA9IGRvY3VtZW50LT5uYW1lZEZsb3dzKCkt
PmZsb3dCeU5hbWUoZmxvd05hbWUpOwotICAgIGlmICghbmFtZWRGbG93KSB7CisgICAgV2ViS2l0
TmFtZWRGbG93KiB3ZWJraXROYW1lZEZsb3cgPSBkb2N1bWVudC0+bmFtZWRGbG93cygpLT5mbG93
QnlOYW1lKGZsb3dOYW1lKTsKKyAgICBpZiAoIXdlYmtpdE5hbWVkRmxvdykgewogICAgICAgICAq
ZXJyb3JTdHJpbmcgPSAiTm8gdGFyZ2V0IENTUyBOYW1lZCBGbG93IGZvdW5kIjsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIHJlc3VsdCA9IFR5cGVCdWlsZGVyOjpDU1M6Ok5hbWVkRmxv
dzo6Y3JlYXRlKCkKLSAgICAgICAgLnNldE5vZGVJZChub2RlSWQpCi0gICAgICAgIC5zZXROYW1l
KGZsb3dOYW1lKQotICAgICAgICAuc2V0T3ZlcnNldChuYW1lZEZsb3ctPm92ZXJzZXQoKSk7Cisg
ICAgUmVmUHRyPFdlYktpdE5hbWVkRmxvdz4gcHJvdGVjdG9yKHdlYmtpdE5hbWVkRmxvdyk7Cisg
ICAgcmVzdWx0ID0gYnVpbGRPYmplY3RGb3JOYW1lZEZsb3coZXJyb3JTdHJpbmcsIHdlYmtpdE5h
bWVkRmxvdywgZG9jdW1lbnROb2RlSWQpOwogfQogCiB2b2lkIEluc3BlY3RvckNTU0FnZW50Ojpz
dGFydFNlbGVjdG9yUHJvZmlsZXIoRXJyb3JTdHJpbmcqKQpAQCAtMTA3Miw2ICsxMDcxLDYxIEBA
IFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGU+IEluc3BlY3RvckNTU0FnZW50
OjpidWlsZE9iamVjdEZvckF0dHJpYnV0CiAgICAgcmV0dXJuIGluc3BlY3RvclN0eWxlLT5idWls
ZE9iamVjdEZvclN0eWxlKCk7CiB9CiAKK1Bhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5
cGVCdWlsZGVyOjpDU1M6OlJlZ2lvbj4gPiBJbnNwZWN0b3JDU1NBZ2VudDo6YnVpbGRBcnJheUZv
clJlZ2lvbnMoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBQYXNzUmVmUHRyPE5vZGVMaXN0PiBy
ZWdpb25MaXN0LCBpbnQgZG9jdW1lbnROb2RlSWQpCit7CisgICAgUmVmUHRyPFR5cGVCdWlsZGVy
OjpBcnJheTxUeXBlQnVpbGRlcjo6Q1NTOjpSZWdpb24+ID4gcmVnaW9ucyA9IFR5cGVCdWlsZGVy
OjpBcnJheTxUeXBlQnVpbGRlcjo6Q1NTOjpSZWdpb24+OjpjcmVhdGUoKTsKKworICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCByZWdpb25MaXN0LT5sZW5ndGgoKTsgKytpKSB7CisgICAgICAg
IFR5cGVCdWlsZGVyOjpDU1M6OlJlZ2lvbjo6UmVnaW9uT3ZlcnNldDo6RW51bSByZWdpb25PdmVy
c2V0OworCisgICAgICAgIHN3aXRjaCAodG9FbGVtZW50KHJlZ2lvbkxpc3QtPml0ZW0oaSkpLT5y
ZW5kZXJSZWdpb24oKS0+cmVnaW9uU3RhdGUoKSkgeworICAgICAgICBjYXNlIFJlbmRlclJlZ2lv
bjo6UmVnaW9uRml0OgorICAgICAgICAgICAgcmVnaW9uT3ZlcnNldCA9IFR5cGVCdWlsZGVyOjpD
U1M6OlJlZ2lvbjo6UmVnaW9uT3ZlcnNldDo6Rml0OworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2UgUmVuZGVyUmVnaW9uOjpSZWdpb25FbXB0eToKKyAgICAgICAgICAgIHJlZ2lvbk92
ZXJzZXQgPSBUeXBlQnVpbGRlcjo6Q1NTOjpSZWdpb246OlJlZ2lvbk92ZXJzZXQ6OkVtcHR5Owor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgUmVuZGVyUmVnaW9uOjpSZWdpb25PdmVy
c2V0OgorICAgICAgICAgICAgcmVnaW9uT3ZlcnNldCA9IFR5cGVCdWlsZGVyOjpDU1M6OlJlZ2lv
bjo6UmVnaW9uT3ZlcnNldDo6T3ZlcnNldDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBj
YXNlIFJlbmRlclJlZ2lvbjo6UmVnaW9uVW5kZWZpbmVkOgorICAgICAgICAgICAgY29udGludWU7
CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAgUmVmUHRyPFR5cGVCdWls
ZGVyOjpDU1M6OlJlZ2lvbj4gcmVnaW9uID0gVHlwZUJ1aWxkZXI6OkNTUzo6UmVnaW9uOjpjcmVh
dGUoKQorICAgICAgICAgICAgLnNldFJlZ2lvbk92ZXJzZXQocmVnaW9uT3ZlcnNldCkKKyAgICAg
ICAgICAgIC8vIGRvY3VtZW50Tm9kZUlkIHdhcyBwcmV2aW91c2x5IGFzc2VydGVkCisgICAgICAg
ICAgICAuc2V0Tm9kZUlkKG1fZG9tQWdlbnQtPnB1c2hOb2RlVG9Gcm9udGVuZChlcnJvclN0cmlu
ZywgZG9jdW1lbnROb2RlSWQsIHJlZ2lvbkxpc3QtPml0ZW0oaSkpKTsKKworICAgICAgICByZWdp
b25zLT5hZGRJdGVtKHJlZ2lvbik7CisgICAgfQorCisgICAgcmV0dXJuIHJlZ2lvbnMucmVsZWFz
ZSgpOworfQorCitQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6Ok5hbWVkRmxvdz4gSW5zcGVj
dG9yQ1NTQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yTmFtZWRGbG93KEVycm9yU3RyaW5nKiBlcnJvclN0
cmluZywgV2ViS2l0TmFtZWRGbG93KiB3ZWJraXROYW1lZEZsb3csIGludCBkb2N1bWVudE5vZGVJ
ZCkKK3sKKyAgICBSZWZQdHI8Tm9kZUxpc3Q+IGNvbnRlbnRMaXN0ID0gd2Via2l0TmFtZWRGbG93
LT5nZXRDb250ZW50KCk7CisgICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxpbnQ+ID4gY29u
dGVudCA9IFR5cGVCdWlsZGVyOjpBcnJheTxpbnQ+OjpjcmVhdGUoKTsKKworICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBjb250ZW50TGlzdC0+bGVuZ3RoKCk7ICsraSkgeworICAgICAgICAv
LyBkb2N1bWVudE5vZGVJZCB3YXMgcHJldmlvdXNseSBhc3NlcnRlZAorICAgICAgICBjb250ZW50
LT5hZGRJdGVtKG1fZG9tQWdlbnQtPnB1c2hOb2RlVG9Gcm9udGVuZChlcnJvclN0cmluZywgZG9j
dW1lbnROb2RlSWQsIGNvbnRlbnRMaXN0LT5pdGVtKGkpKSk7CisgICAgfQorCisgICAgUmVmUHRy
PFR5cGVCdWlsZGVyOjpDU1M6Ok5hbWVkRmxvdz4gbmFtZWRGbG93ID0gVHlwZUJ1aWxkZXI6OkNT
Uzo6TmFtZWRGbG93OjpjcmVhdGUoKQorICAgICAgICAuc2V0RG9jdW1lbnROb2RlSWQoZG9jdW1l
bnROb2RlSWQpCisgICAgICAgIC5zZXROYW1lKHdlYmtpdE5hbWVkRmxvdy0+bmFtZSgpLnN0cmlu
ZygpKQorICAgICAgICAuc2V0T3ZlcnNldCh3ZWJraXROYW1lZEZsb3ctPm92ZXJzZXQoKSkKKyAg
ICAgICAgLnNldENvbnRlbnQoY29udGVudCkKKyAgICAgICAgLnNldFJlZ2lvbnMoYnVpbGRBcnJh
eUZvclJlZ2lvbnMoZXJyb3JTdHJpbmcsIHdlYmtpdE5hbWVkRmxvdy0+Z2V0UmVnaW9ucygpLCBk
b2N1bWVudE5vZGVJZCkpOworCisgICAgcmV0dXJuIG5hbWVkRmxvdy5yZWxlYXNlKCk7Cit9CisK
IHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmRpZFJlbW92ZURvY3VtZW50KERvY3VtZW50KiBkb2N1
bWVudCkKIHsKICAgICBpZiAoZG9jdW1lbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JDU1NBZ2VudC5oCmluZGV4IGE5NzExNmUuLjg3NzgwNTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5oCkBAIC0xMTMsOCArMTEzLDggQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRSdWxlU2VsZWN0b3IoRXJyb3JTdHJpbmcqLCBj
b25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYgcnVsZUlkLCBjb25zdCBTdHJpbmcmIHNlbGVj
dG9yLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUnVsZT4mIHJlc3VsdCk7CiAgICAgdmly
dHVhbCB2b2lkIGFkZFJ1bGUoRXJyb3JTdHJpbmcqLCBpbnQgY29udGV4dE5vZGVJZCwgY29uc3Qg
U3RyaW5nJiBzZWxlY3RvciwgUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6OkNTU1J1bGU+JiByZXN1
bHQpOwogICAgIHZpcnR1YWwgdm9pZCBnZXRTdXBwb3J0ZWRDU1NQcm9wZXJ0aWVzKEVycm9yU3Ry
aW5nKiwgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NQcm9w
ZXJ0eUluZm8+ID4mIHJlc3VsdCk7Ci0gICAgdmlydHVhbCB2b2lkIGdldE5hbWVkRmxvd0NvbGxl
Y3Rpb24oRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlkLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5
PFN0cmluZz4gPiYgcmVzdWx0KTsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0Rmxvd0J5TmFtZShFcnJv
clN0cmluZyosIGludCBub2RlSWQsIGNvbnN0IFN0cmluZyYgZmxvd05hbWUsIFJlZlB0cjxUeXBl
QnVpbGRlcjo6Q1NTOjpOYW1lZEZsb3c+JiByZXN1bHQpOworICAgIHZpcnR1YWwgdm9pZCBnZXRO
YW1lZEZsb3dDb2xsZWN0aW9uKEVycm9yU3RyaW5nKiwgaW50IGRvY3VtZW50Tm9kZUlkLCBSZWZQ
dHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpDU1M6Ok5hbWVkRmxvdz4gPiYgcmVz
dWx0KTsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0Rmxvd0J5TmFtZShFcnJvclN0cmluZyosIGludCBk
b2N1bWVudE5vZGVJZCwgY29uc3QgU3RyaW5nJiBmbG93TmFtZSwgUmVmUHRyPFR5cGVCdWlsZGVy
OjpDU1M6Ok5hbWVkRmxvdz4mIHJlc3VsdCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgc3RhcnRTZWxl
Y3RvclByb2ZpbGVyKEVycm9yU3RyaW5nKik7CiAgICAgdmlydHVhbCB2b2lkIHN0b3BTZWxlY3Rv
clByb2ZpbGVyKEVycm9yU3RyaW5nKiwgUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6OlNlbGVjdG9y
UHJvZmlsZT4mKTsKQEAgLTE1Myw2ICsxNTMsOCBAQCBwcml2YXRlOgogCiAgICAgUGFzc1JlZlB0
cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUnVsZT4gPiBidWlsZEFy
cmF5Rm9yUnVsZUxpc3QoQ1NTUnVsZUxpc3QqLCBTdHlsZVJlc29sdmVyKik7CiAgICAgUGFzc1Jl
ZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHlsZT4gYnVpbGRPYmplY3RGb3JBdHRyaWJ1dGVz
U3R5bGUoRWxlbWVudCopOworICAgIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVC
dWlsZGVyOjpDU1M6OlJlZ2lvbj4gPiBidWlsZEFycmF5Rm9yUmVnaW9ucyhFcnJvclN0cmluZyos
IFBhc3NSZWZQdHI8Tm9kZUxpc3Q+LCBpbnQgZG9jdW1lbnROb2RlSWQpOworICAgIFBhc3NSZWZQ
dHI8VHlwZUJ1aWxkZXI6OkNTUzo6TmFtZWRGbG93PiBidWlsZE9iamVjdEZvck5hbWVkRmxvdyhF
cnJvclN0cmluZyosIFdlYktpdE5hbWVkRmxvdyosIGludCBkb2N1bWVudE5vZGVJZCk7CiAKICAg
ICAvLyBJbnNwZWN0b3JET01BZ2VudDo6RE9NTGlzdGVuZXIgaW1wbGVtZW50YXRpb24KICAgICB2
aXJ0dWFsIHZvaWQgZGlkUmVtb3ZlRG9jdW1lbnQoRG9jdW1lbnQqKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCmluZGV4IDlkZjlmNzMuLjU5Mjlj
NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2Vu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNw
cApAQCAtNDQ5LDYgKzQ0OSwxOSBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpkaXNjYXJkQmlu
ZGluZ3MoKQogICAgIG1fY2hpbGRyZW5SZXF1ZXN0ZWQuY2xlYXIoKTsKIH0KIAoraW50IEluc3Bl
Y3RvckRPTUFnZW50OjpwdXNoTm9kZVRvRnJvbnRlbmQoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5n
LCBpbnQgZG9jdW1lbnROb2RlSWQsIE5vZGUqIG5vZGVUb1B1c2gpCit7CisgICAgRG9jdW1lbnQq
IGRvY3VtZW50ID0gYXNzZXJ0RG9jdW1lbnQoZXJyb3JTdHJpbmcsIGRvY3VtZW50Tm9kZUlkKTsK
KyAgICBpZiAoIWRvY3VtZW50KQorICAgICAgICByZXR1cm4gMDsKKyAgICBpZiAobm9kZVRvUHVz
aC0+ZG9jdW1lbnQoKSAhPSBkb2N1bWVudCkgeworICAgICAgICAqZXJyb3JTdHJpbmcgPSAiTm9k
ZSBpcyBub3QgcGFydCBvZiB0aGUgZG9jdW1lbnQgd2l0aCBnaXZlbiBpZCI7CisgICAgICAgIHJl
dHVybiAwOworICAgIH0KKworICAgIHJldHVybiBwdXNoTm9kZVBhdGhUb0Zyb250ZW5kKG5vZGVU
b1B1c2gpOworfQorCiBOb2RlKiBJbnNwZWN0b3JET01BZ2VudDo6bm9kZUZvcklkKGludCBpZCkK
IHsKICAgICBpZiAoIWlkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckRPTUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9N
QWdlbnQuaAppbmRleCA0NjBhNDc1Li5hZWRmNzc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaApAQCAtMTY4LDYgKzE2OCw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIGRpZFB1c2hTaGFkb3dSb290KEVsZW1lbnQqIGhvc3QsIFNoYWRvd1Jvb3QqKTsKICAg
ICB2b2lkIHdpbGxQb3BTaGFkb3dSb290KEVsZW1lbnQqIGhvc3QsIFNoYWRvd1Jvb3QqKTsKIAor
ICAgIGludCBwdXNoTm9kZVRvRnJvbnRlbmQoRXJyb3JTdHJpbmcqLCBpbnQgZG9jdW1lbnROb2Rl
SWQsIE5vZGUqKTsKICAgICBOb2RlKiBub2RlRm9ySWQoaW50IG5vZGVJZCk7CiAgICAgaW50IGJv
dW5kTm9kZUlkKE5vZGUqKTsKICAgICB2b2lkIHNldERPTUxpc3RlbmVyKERPTUxpc3RlbmVyKik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NTU1N0eWxl
TW9kZWwuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NTU1N0eWxlTW9k
ZWwuanMKaW5kZXggMGZjNGQ0MC4uMDFiMzI0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9DU1NTdHlsZU1vZGVsLmpzCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvQ1NTU3R5bGVNb2RlbC5qcwpAQCAtMTY0LDIxICsxNjQsMjEg
QEAgV2ViSW5zcGVjdG9yLkNTU1N0eWxlTW9kZWwucHJvdG90eXBlID0gewogCiAgICAgLyoqCiAg
ICAgICogQHBhcmFtIHtET01BZ2VudC5Ob2RlSWR9IG5vZGVJZAotICAgICAqIEBwYXJhbSB7ZnVu
Y3Rpb24oP0FycmF5LjxzdHJpbmc+KX0gdXNlckNhbGxiYWNrCisgICAgICogQHBhcmFtIHtmdW5j
dGlvbig/QXJyYXkuPFdlYkluc3BlY3Rvci5OYW1lZEZsb3c+KX0gdXNlckNhbGxiYWNrCiAgICAg
ICovCiAgICAgZ2V0TmFtZWRGbG93Q29sbGVjdGlvbkFzeW5jOiBmdW5jdGlvbihub2RlSWQsIHVz
ZXJDYWxsYmFjaykKICAgICB7CiAgICAgICAgIC8qKgotICAgICAgICAgKiBAcGFyYW0ge2Z1bmN0
aW9uKD9BcnJheS48c3RyaW5nPil9IHVzZXJDYWxsYmFjaworICAgICAgICAgKiBAcGFyYW0ge2Z1
bmN0aW9uKD9BcnJheS48V2ViSW5zcGVjdG9yLk5hbWVkRmxvdz4pfSB1c2VyQ2FsbGJhY2sKICAg
ICAgICAgICogQHBhcmFtIHs/UHJvdG9jb2wuRXJyb3J9IGVycm9yCi0gICAgICAgICAqIEBwYXJh
bSB7P0FycmF5LjxzdHJpbmc+PX0gbmFtZWRGbG93UGF5bG9hZAorICAgICAgICAgKiBAcGFyYW0g
ez9BcnJheS48Q1NTQWdlbnQuTmFtZWRGbG93Pj19IG5hbWVkRmxvd1BheWxvYWQKICAgICAgICAg
ICovCiAgICAgICAgIGZ1bmN0aW9uIGNhbGxiYWNrKHVzZXJDYWxsYmFjaywgZXJyb3IsIG5hbWVk
Rmxvd1BheWxvYWQpCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmIChlcnJvciB8fCAhbmFtZWRG
bG93UGF5bG9hZCkKICAgICAgICAgICAgICAgICB1c2VyQ2FsbGJhY2sobnVsbCk7CiAgICAgICAg
ICAgICBlbHNlCi0gICAgICAgICAgICAgICAgdXNlckNhbGxiYWNrKG5hbWVkRmxvd1BheWxvYWQp
OworICAgICAgICAgICAgICAgIHVzZXJDYWxsYmFjayhXZWJJbnNwZWN0b3IuTmFtZWRGbG93LnBh
cnNlUGF5bG9hZEFycmF5KG5hbWVkRmxvd1BheWxvYWQpKTsKICAgICAgICAgfQogCiAgICAgICAg
IENTU0FnZW50LmdldE5hbWVkRmxvd0NvbGxlY3Rpb24obm9kZUlkLCBjYWxsYmFjay5iaW5kKHRo
aXMsIHVzZXJDYWxsYmFjaykpOwpAQCAtMTM0NSw2ICsxMzQ1LDggQEAgV2ViSW5zcGVjdG9yLk5h
bWVkRmxvdyA9IGZ1bmN0aW9uKHBheWxvYWQpCiAgICAgdGhpcy5ub2RlSWQgPSBwYXlsb2FkLm5v
ZGVJZDsKICAgICB0aGlzLm5hbWUgPSBwYXlsb2FkLm5hbWU7CiAgICAgdGhpcy5vdmVyc2V0ID0g
cGF5bG9hZC5vdmVyc2V0OworICAgIHRoaXMuY29udGVudCA9IHBheWxvYWQuY29udGVudDsKKyAg
ICB0aGlzLnJlZ2lvbnMgPSBwYXlsb2FkLnJlZ2lvbnM7CiB9CiAKIC8qKgpAQCAtMTM1Nyw2ICsx
MzU5LDE3IEBAIFdlYkluc3BlY3Rvci5OYW1lZEZsb3cucGFyc2VQYXlsb2FkID0gZnVuY3Rpb24o
cGF5bG9hZCkKIH0KIAogLyoqCisgKiBAcGFyYW0gez9BcnJheS48Q1NTQWdlbnQuTmFtZWRGbG93
Pj19IG5hbWVkRmxvd1BheWxvYWQKKyAqIEByZXR1cm4gez9BcnJheS48V2ViSW5zcGVjdG9yLk5h
bWVkRmxvdz59CisgKi8KK1dlYkluc3BlY3Rvci5OYW1lZEZsb3cucGFyc2VQYXlsb2FkQXJyYXkg
PSBmdW5jdGlvbihwYXlsb2FkQXJyYXkpCit7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwYXls
b2FkQXJyYXkubGVuZ3RoOyArK2kpCisgICAgICAgIHBheWxvYWRBcnJheVtpXSA9IFdlYkluc3Bl
Y3Rvci5OYW1lZEZsb3cucGFyc2VQYXlsb2FkKHBheWxvYWRBcnJheVtpXSk7CisgICAgcmV0dXJu
IHBheWxvYWRBcnJheTsKK30KKworLyoqCiAgKiBAdHlwZSB7V2ViSW5zcGVjdG9yLkNTU1N0eWxl
TW9kZWx9CiAgKi8KIFdlYkluc3BlY3Rvci5jc3NNb2RlbCA9IG51bGw7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>