<?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>122924</bug_id>
          
          <creation_ts>2013-10-16 16:40:48 -0700</creation_ts>
          <short_desc>Web Inspector: CSS Regions: Add the list of flows in the FrameTreeElement</short_desc>
          <delta_ts>2013-10-18 14:40:15 -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</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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>122760</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexandru Chiculita">achicu</reporter>
          <assigned_to name="Alexandru Chiculita">achicu</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>graouts</cc>
    
    <cc>joepeck</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>940573</commentid>
    <comment_count>0</comment_count>
    <who name="Alexandru Chiculita">achicu</who>
    <bug_when>2013-10-16 16:40:48 -0700</bug_when>
    <thetext>Add the list of flows in the resources panel on the left. Every frame should have it&apos;s own list of flows.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>940574</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2013-10-16 16:41:18 -0700</bug_when>
    <thetext>&lt;rdar://problem/15246973&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>940584</commentid>
    <comment_count>2</comment_count>
      <attachid>214404</attachid>
    <who name="Alexandru Chiculita">achicu</who>
    <bug_when>2013-10-16 16:50:20 -0700</bug_when>
    <thetext>Created attachment 214404
Patch V1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>940594</commentid>
    <comment_count>3</comment_count>
      <attachid>214407</attachid>
    <who name="Alexandru Chiculita">achicu</who>
    <bug_when>2013-10-16 17:13:43 -0700</bug_when>
    <thetext>Created attachment 214407
Patch V2

Rebased.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>940600</commentid>
    <comment_count>4</comment_count>
      <attachid>214404</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2013-10-16 17:25:36 -0700</bug_when>
    <thetext>Comment on attachment 214404
Patch V1

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

This is purely a style pass. I briefly looked over the real code changes and they looked good, but I&apos;d like to see a style update to start.

&gt; Source/WebInspectorUI/UserInterface/ContentFlow.js:2
&gt; + * Copyright (C) 2013 Adobe Systems Incorporated. All rights reserved.

NOTE: Since this is the first time there is an Adobe Systems Copyright you should add Adobe to the list of Copyrights in Source/WebInspectorUI/Scripts/copy-user-interface-resources.sh in the LICENSE text appended to the top of minified sources!

&gt; Source/WebInspectorUI/UserInterface/ContentFlow.js:32
&gt; +    this._loadFromJSON(data);

This class extends WebInspector.Object, so it should call the super constructor:

    WebInspector.Object.call(this);

&gt; Source/WebInspectorUI/UserInterface/ContentFlow.js:48
&gt; +

The first property of any WebInspector.Foo class should be the constructor property:

    constructor: WebInspector.ContentFlow

&gt; Source/WebInspectorUI/UserInterface/ContentFlow.js:73
&gt; +                if (currentRegion.nodeId !== newRegion.nodeId
&gt; +                    || currentRegion.regionOverset !== newRegion.regionOverset) {

No need for the line break here. We are not shy about long lines.

&gt; Source/WebInspectorUI/UserInterface/ContentFlow.js:91
&gt; +    update: function(data)

The typical style of a WebInspector.Foo class is:

    WebInspector.Foo = function(foo)
    {
        /* constructor */
        this._foo = foo; /* Member variables are private and underscore prefixed */
    };

    WebInspector.Foo.prototype = {
        constructor: WebInspector.Foo,

        // Public

        /* getters and setters */

        get foo()
        {
            return this._foo; /* access to private ivars through public getters */
        },

        set foo(foo)
        {
            this._foo = foo; /* mutators to private ivars through public setters */
        },

        publicMethod: function()
        {
            /* public methods called outside the class */
        },

        // Private

        _privateMethod: function()
        {
            /* private methods are underscore prefixed */
        }
    };

A great example of this is FilterBar.js:
&lt;http://trac.webkit.org/browser/trunk/Source/WebInspectorUI/UserInterface/FilterBar.js&gt;

Review comments would be:
1. Make _private member variables and getters/setters for public accessors.
2. Add // Public and // Private comments, and reorder the functions.

&gt; Source/WebInspectorUI/UserInterface/ContentFlowTreeElement.js:30
&gt; +WebInspector.ContentFlowTreeElement = function(representedObject)

Nice, this class looks prefect.

&gt; Source/WebInspectorUI/UserInterface/DOMTree.js:262
&gt; +        function updateFlowList(rootNode)
&gt; +        {
&gt; +            // Let the backend know we are interested about the named flow events for this document.
&gt; +            WebInspector.domTreeManager.getNamedFlowCollection(rootNode.id);
&gt; +        }
&gt; +        this.requestRootDOMNode(updateFlowList);

We have been moving toward just inlining anonymous function like this, especially if they don&apos;t need a .bind(). I find it much easier to read:

    this.requestRootDOMNode(function(rootNode) {
        ...
    });

&gt; Source/WebInspectorUI/UserInterface/DOMTree.js:313
&gt; +        for (var flowKey in deletedFlows)
&gt; +            this.dispatchEventToListeners(WebInspector.DOMTree.Event.FlowWasRemoved, { flow: deletedFlows[flowKey] });
&gt; +
&gt; +        for (var i = 0; i &lt; newFlows.length; ++i)
&gt; +            this.dispatchEventToListeners(WebInspector.DOMTree.Event.FlowWasAdded, { flow: newFlows[i] });

Style for JavaScript Object Literals is: {key1: value1, key2: value2}. So you should remove the excess whitespace in the literals in this patch.

&gt; Source/WebInspectorUI/UserInterface/DOMTree.js:333
&gt; +    _flowWasRemovd: function(event)

Typo: _flowWasRemovd =&gt; _flowWasRemoved</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>940805</commentid>
    <comment_count>5</comment_count>
      <attachid>214404</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2013-10-17 09:35:40 -0700</bug_when>
    <thetext>Comment on attachment 214404
Patch V1

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

A quick pass for me as well until style is tweaked.

&gt; Source/WebInspectorUI/UserInterface/ContentFlow.js:45
&gt; +WebInspector.ContentFlow.hashKey = function(flow)
&gt; +{
&gt; +    // Use the flow node id, to avoid collisions when we change main document id.
&gt; +    return flow.documentNodeId + &quot;:&quot; + flow.name;
&gt; +};

I think this would be better as a member. ContentFlow.prototype.id to match other classes.

&gt; Source/WebInspectorUI/UserInterface/DOMTree.js:59
&gt; +    FlowWasAdded: &quot;dom-tree-flow-was-added&quot;,
&gt; +    FlowWasRemoved: &quot;dom-tree-flow-was-removed&quot;

You use the name ContentFlow for the classes. I think the events should also have ContentFlow in the name.

&gt; Source/WebInspectorUI/UserInterface/DOMTree.js:267
&gt; +        return this._rootDOMNode &amp;&amp; (flow.documentNodeId === this._rootDOMNode.id);

No need for the ( ).

&gt; Source/WebInspectorUI/UserInterface/FrameTreeElement.js:435
&gt; +        return aIsResource ? 1 : -1;

This works for now, but a FIXME would be good to mention grouping items by tree element subclass if a and b are different.

&gt; Source/WebInspectorUI/UserInterface/Images/ContentFlow.svg:3
&gt; +&lt;svg version=&quot;1.1&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; viewBox=&quot;0 0 100 100&quot;&gt;

It would be better to have this be intrinsically 16 x 16. I can help make an icon that fits the look and feel of the existing icons. I think this icon is good, it just needs a color treatment.

&gt; Source/WebInspectorUI/UserInterface/Images/ContentFlow.svg:9
&gt; +	&lt;path fill=&quot;#707070&quot; d=&quot;M81.25,6.25h-62.5c-6.885,0-12.5,5.615-12.5,12.5v62.5c0,6.885,5.615,12.5,12.5,12.5h62.5
&gt; +		c6.885,0,12.5-5.615,12.5-12.5v-62.5C93.75,11.865,88.135,6.25,81.25,6.25 M81.25,12.5c3.442,0,6.25,2.808,6.25,6.25v62.5
&gt; +		c0,3.442-2.808,6.25-6.25,6.25h-62.5c-3.442,0-6.25-2.808-6.25-6.25v-62.5c0-3.442,2.808-6.25,6.25-6.25H81.25&quot;/&gt;
&gt; +	&lt;rect x=&quot;17.875&quot; y=&quot;19.625&quot; fill=&quot;#717171&quot; width=&quot;29.292&quot; height=&quot;24.708&quot;/&gt;
&gt; +	&lt;rect x=&quot;17.875&quot; y=&quot;53&quot; fill=&quot;#717171&quot; width=&quot;16.625&quot; height=&quot;26.25&quot;/&gt;
&gt; +	&lt;rect x=&quot;55.375&quot; y=&quot;19.625&quot; fill=&quot;#717171&quot; width=&quot;26.625&quot; height=&quot;61&quot;/&gt;

We prefer using rgb() over hex colors. We also prefer not hard wrapping &lt;path&gt; and using spaces for all delimiters. Like: d=&quot;M 81.25 6.25 h -62.5 c -6.885 0 -12.5 5.615 -12.5…&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>940836</commentid>
    <comment_count>6</comment_count>
      <attachid>214472</attachid>
    <who name="Alexandru Chiculita">achicu</who>
    <bug_when>2013-10-17 10:54:07 -0700</bug_when>
    <thetext>Created attachment 214472
Patch V3

Thanks for the review. Sorry about the style, every JS project is so different about coding patterns and styles.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>940837</commentid>
    <comment_count>7</comment_count>
    <who name="Alexandru Chiculita">achicu</who>
    <bug_when>2013-10-17 10:55:09 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 214404 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=214404&amp;action=review
&gt; 
&gt; A quick pass for me as well until style is tweaked.
&gt; 
&gt; &gt; Source/WebInspectorUI/UserInterface/ContentFlow.js:45
&gt; &gt; +WebInspector.ContentFlow.hashKey = function(flow)
&gt; &gt; +{
&gt; &gt; +    // Use the flow node id, to avoid collisions when we change main document id.
&gt; &gt; +    return flow.documentNodeId + &quot;:&quot; + flow.name;
&gt; &gt; +};
&gt; 
&gt; I think this would be better as a member. ContentFlow.prototype.id to match other classes.
&gt; 
&gt; &gt; Source/WebInspectorUI/UserInterface/DOMTree.js:59
&gt; &gt; +    FlowWasAdded: &quot;dom-tree-flow-was-added&quot;,
&gt; &gt; +    FlowWasRemoved: &quot;dom-tree-flow-was-removed&quot;
&gt; 
&gt; You use the name ContentFlow for the classes. I think the events should also have ContentFlow in the name.
&gt; 
&gt; &gt; Source/WebInspectorUI/UserInterface/DOMTree.js:267
&gt; &gt; +        return this._rootDOMNode &amp;&amp; (flow.documentNodeId === this._rootDOMNode.id);
&gt; 
&gt; No need for the ( ).
&gt; 
&gt; &gt; Source/WebInspectorUI/UserInterface/FrameTreeElement.js:435
&gt; &gt; +        return aIsResource ? 1 : -1;
&gt; 
&gt; This works for now, but a FIXME would be good to mention grouping items by tree element subclass if a and b are different.
&gt; 
&gt; &gt; Source/WebInspectorUI/UserInterface/Images/ContentFlow.svg:3
&gt; &gt; +&lt;svg version=&quot;1.1&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; viewBox=&quot;0 0 100 100&quot;&gt;
&gt; 
&gt; It would be better to have this be intrinsically 16 x 16. I can help make an icon that fits the look and feel of the existing icons. I think this icon is good, it just needs a color treatment.
&gt; 
&gt; &gt; Source/WebInspectorUI/UserInterface/Images/ContentFlow.svg:9
&gt; &gt; +	&lt;path fill=&quot;#707070&quot; d=&quot;M81.25,6.25h-62.5c-6.885,0-12.5,5.615-12.5,12.5v62.5c0,6.885,5.615,12.5,12.5,12.5h62.5
&gt; &gt; +		c6.885,0,12.5-5.615,12.5-12.5v-62.5C93.75,11.865,88.135,6.25,81.25,6.25 M81.25,12.5c3.442,0,6.25,2.808,6.25,6.25v62.5
&gt; &gt; +		c0,3.442-2.808,6.25-6.25,6.25h-62.5c-3.442,0-6.25-2.808-6.25-6.25v-62.5c0-3.442,2.808-6.25,6.25-6.25H81.25&quot;/&gt;
&gt; &gt; +	&lt;rect x=&quot;17.875&quot; y=&quot;19.625&quot; fill=&quot;#717171&quot; width=&quot;29.292&quot; height=&quot;24.708&quot;/&gt;
&gt; &gt; +	&lt;rect x=&quot;17.875&quot; y=&quot;53&quot; fill=&quot;#717171&quot; width=&quot;16.625&quot; height=&quot;26.25&quot;/&gt;
&gt; &gt; +	&lt;rect x=&quot;55.375&quot; y=&quot;19.625&quot; fill=&quot;#717171&quot; width=&quot;26.625&quot; height=&quot;61&quot;/&gt;
&gt; 
&gt; We prefer using rgb() over hex colors. We also prefer not hard wrapping &lt;path&gt; and using spaces for all delimiters. Like: d=&quot;M 81.25 6.25 h -62.5 c -6.885 0 -12.5 5.615 -12.5…&quot;

I didn&apos;t see your comment when I&apos;ve uploaded the patch. Please ignore it until I have a chance to go through the second review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>940852</commentid>
    <comment_count>8</comment_count>
    <who name="Alexandru Chiculita">achicu</who>
    <bug_when>2013-10-17 11:09:24 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 214404 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=214404&amp;action=review
&gt; 
&gt; A quick pass for me as well until style is tweaked.
Thanks!

&gt; 
&gt; &gt; Source/WebInspectorUI/UserInterface/ContentFlow.js:45
&gt; &gt; +WebInspector.ContentFlow.hashKey = function(flow)
&gt; &gt; +{
&gt; &gt; +    // Use the flow node id, to avoid collisions when we change main document id.
&gt; &gt; +    return flow.documentNodeId + &quot;:&quot; + flow.name;
&gt; &gt; +};
&gt; 
&gt; I think this would be better as a member. ContentFlow.prototype.id to match other classes.
I use this on JSON structures that I receive from the backend. Maybe it is the wrong place to have it and would better stay in the DOMTree file instead. I like how it can work on both pure JSON and ContentFlows as they use the same names, but so far I only needed it for JSON objects.

&gt; 
&gt; &gt; Source/WebInspectorUI/UserInterface/DOMTree.js:59
&gt; &gt; +    FlowWasAdded: &quot;dom-tree-flow-was-added&quot;,
&gt; &gt; +    FlowWasRemoved: &quot;dom-tree-flow-was-removed&quot;
&gt; 
&gt; You use the name ContentFlow for the classes. I think the events should also have ContentFlow in the name.
&gt; 

Is this what you had in mind? I will update all the other events to match.

ContentFlowWasAdded: &quot;dom-tree-content-flow-was-added&quot;,
ContentFlowWasRemoved: &quot;dom-tree-content-flow-was-removed&quot;

&gt; &gt; Source/WebInspectorUI/UserInterface/DOMTree.js:267
&gt; &gt; +        return this._rootDOMNode &amp;&amp; (flow.documentNodeId === this._rootDOMNode.id);
&gt; 
&gt; No need for the ( ).
Ok.

&gt; 
&gt; &gt; Source/WebInspectorUI/UserInterface/FrameTreeElement.js:435
&gt; &gt; +        return aIsResource ? 1 : -1;
&gt; 
&gt; This works for now, but a FIXME would be good to mention grouping items by tree element subclass if a and b are different.

Ok.

&gt; &gt; Source/WebInspectorUI/UserInterface/Images/ContentFlow.svg:3
&gt; &gt; +&lt;svg version=&quot;1.1&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; viewBox=&quot;0 0 100 100&quot;&gt;
&gt; 
&gt; It would be better to have this be intrinsically 16 x 16. I can help make an icon that fits the look and feel of the existing icons. I think this icon is good, it just needs a color treatment.
&gt; 
Ok, I can fix the 16 x 16. I created the icon myself, so I was hoping it is just temporary until someone with better color taste/skills would fix it :) Please help!

&gt; &gt; Source/WebInspectorUI/UserInterface/Images/ContentFlow.svg:9
&gt; &gt; +	&lt;path fill=&quot;#707070&quot; d=&quot;M81.25,6.25h-62.5c-6.885,0-12.5,5.615-12.5,12.5v62.5c0,6.885,5.615,12.5,12.5,12.5h62.5
&gt; &gt; +		c6.885,0,12.5-5.615,12.5-12.5v-62.5C93.75,11.865,88.135,6.25,81.25,6.25 M81.25,12.5c3.442,0,6.25,2.808,6.25,6.25v62.5
&gt; &gt; +		c0,3.442-2.808,6.25-6.25,6.25h-62.5c-3.442,0-6.25-2.808-6.25-6.25v-62.5c0-3.442,2.808-6.25,6.25-6.25H81.25&quot;/&gt;
&gt; &gt; +	&lt;rect x=&quot;17.875&quot; y=&quot;19.625&quot; fill=&quot;#717171&quot; width=&quot;29.292&quot; height=&quot;24.708&quot;/&gt;
&gt; &gt; +	&lt;rect x=&quot;17.875&quot; y=&quot;53&quot; fill=&quot;#717171&quot; width=&quot;16.625&quot; height=&quot;26.25&quot;/&gt;
&gt; &gt; +	&lt;rect x=&quot;55.375&quot; y=&quot;19.625&quot; fill=&quot;#717171&quot; width=&quot;26.625&quot; height=&quot;61&quot;/&gt;
&gt; 
&gt; We prefer using rgb() over hex colors. We also prefer not hard wrapping &lt;path&gt; and using spaces for all delimiters. Like: d=&quot;M 81.25 6.25 h -62.5 c -6.885 0 -12.5 5.615 -12.5…&quot;

That file was generated by Illustrator and I just cleaned it up. I will fix the style and reupload.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>940872</commentid>
    <comment_count>9</comment_count>
      <attachid>214476</attachid>
    <who name="Alexandru Chiculita">achicu</who>
    <bug_when>2013-10-17 11:45:24 -0700</bug_when>
    <thetext>Created attachment 214476
Patch V4</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>940874</commentid>
    <comment_count>10</comment_count>
      <attachid>214404</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2013-10-17 11:47:40 -0700</bug_when>
    <thetext>Comment on attachment 214404
Patch V1

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

&gt;&gt;&gt;&gt; Source/WebInspectorUI/UserInterface/ContentFlow.js:45
&gt;&gt;&gt;&gt; +};
&gt;&gt;&gt; 
&gt;&gt;&gt; I think this would be better as a member. ContentFlow.prototype.id to match other classes.
&gt;&gt; 
&gt;&gt; I didn&apos;t see your comment when I&apos;ve uploaded the patch. Please ignore it until I have a chance to go through the second review.
&gt; 
&gt; I use this on JSON structures that I receive from the backend. Maybe it is the wrong place to have it and would better stay in the DOMTree file instead. I like how it can work on both pure JSON and ContentFlows as they use the same names, but so far I only needed it for JSON objects.

We try to keep the protocol objects in the Observer and Manager classes. Exposing the protocol to other classes causes a compatibility nightmare in the future if things change.

&gt; Source/WebInspectorUI/UserInterface/DOMTree.js:342
&gt; +        var flow = event.data.flow;
&gt; +        if (!this._isFlowInCurrentDocument(flow))
&gt; +            return;
&gt; +
&gt; +        var flowKey = WebInspector.ContentFlow.hashKey(flow);
&gt; +        console.assert(this._flows.hasOwnProperty(flowKey));
&gt; +        flow = this._flows[flowKey];
&gt; +        delete this._flows[flowKey];

Yeah, I didn&apos;t notice this before how it is JSON once then ContentFlow later. Using a different variable and keeping the key generation in the manager would be preferred. We use &quot;payload&quot; when labeling protocol objects. So flowPayload, then later flow would be the ContentFlow object.

&gt; Source/WebInspectorUI/UserInterface/DOMTreeManager.js:547
&gt; +        this.dispatchEventToListeners(WebInspector.DOMTreeManager.Event.FlowWasAdded, { flow: flow });

These flow objects are what I would expect to be WebInspector.ContentFlow already. Users of the events should not need to convert or manage them, that is the job of the manager class. It also allows future protocol changes to be handled here in one spot before involving other classes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>940926</commentid>
    <comment_count>11</comment_count>
      <attachid>214497</attachid>
    <who name="Alexandru Chiculita">achicu</who>
    <bug_when>2013-10-17 13:19:17 -0700</bug_when>
    <thetext>Created attachment 214497
Patch V5</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>941253</commentid>
    <comment_count>12</comment_count>
      <attachid>214497</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2013-10-18 10:10:08 -0700</bug_when>
    <thetext>Comment on attachment 214497
Patch V5

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

&gt; Source/WebInspectorUI/UserInterface/DOMTree.js:73
&gt; +    get flows()
&gt; +    {
&gt; +        return this._flows;
&gt; +    },

I think this would be better named flowMap and _flowMap. Naming it flows implies an array to me.

&gt; Source/WebInspectorUI/UserInterface/DOMTree.js:78
&gt; +    get flowsCount()
&gt; +    {
&gt; +        return this._flowsCount;
&gt; +    },

This could be return this._flowMap.keys.length; then you won&apos;t need to manage the number.

&gt; Source/WebInspectorUI/UserInterface/DOMTreeManager.js:566
&gt; +        var contentFlow = new WebInspector.ContentFlow(flowPayload);

This still pushed the protocol data into the model. Other managers deconstruct the payload and pass the data to the constructor as separate parameters. But we do have a desire to move to objects instead of multiple parameters in many cases. And in the future we can massage the object if the protocol changes. I just have a deep desire to firewall the protocol as much as possible after the bad leakage that occurred in the old Inspector.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>941254</commentid>
    <comment_count>13</comment_count>
      <attachid>214497</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-10-18 10:11:17 -0700</bug_when>
    <thetext>Comment on attachment 214497
Patch V5

Rejecting attachment 214497 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.appspot.com&apos;, &apos;--bot-id=webkit-cq-01&apos;, &apos;apply-attachment&apos;, &apos;--no-update&apos;, &apos;--non-interactive&apos;, 214497, &apos;--port=mac&apos;]&quot; exit_code: 2 cwd: /Volumes/Data/EWS/WebKit

Last 500 characters of output:
mothy Hatcher&apos;]&quot; exit_code: 255 cwd: /Volumes/Data/EWS/WebKit

Parsed 13 diffs from patch file(s).
patching file Source/WebInspectorUI/ChangeLog
Hunk #1 succeeded at 1 with fuzz 3.
Original content of Source/WebInspectorUI/Localizations/en.lproj/localizedStrings.js mismatches at /Volumes/Data/EWS/WebKit/Tools/Scripts/svn-apply line 279.

Failed to run &quot;[u&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/svn-apply&apos;, &apos;--force&apos;, &apos;--reviewer&apos;, u&apos;Timothy Hatcher&apos;]&quot; exit_code: 255 cwd: /Volumes/Data/EWS/WebKit

Full output: http://webkit-queues.appspot.com/results/5248018</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>941318</commentid>
    <comment_count>14</comment_count>
      <attachid>214600</attachid>
    <who name="Alexandru Chiculita">achicu</who>
    <bug_when>2013-10-18 13:37:27 -0700</bug_when>
    <thetext>Created attachment 214600
Patch V6</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>941325</commentid>
    <comment_count>15</comment_count>
      <attachid>214600</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2013-10-18 13:55:46 -0700</bug_when>
    <thetext>Comment on attachment 214600
Patch V6

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

&gt; Source/WebInspectorUI/UserInterface/ContentFlow.js:49
&gt; +    /* getters and setters */

No need for this comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>941329</commentid>
    <comment_count>16</comment_count>
      <attachid>214601</attachid>
    <who name="Alexandru Chiculita">achicu</who>
    <bug_when>2013-10-18 14:12:14 -0700</bug_when>
    <thetext>Created attachment 214601
Patch V7

Thanks! Rebased patch and fixed the last comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>941336</commentid>
    <comment_count>17</comment_count>
      <attachid>214601</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-10-18 14:40:13 -0700</bug_when>
    <thetext>Comment on attachment 214601
Patch V7

Clearing flags on attachment: 214601

Committed r157649: &lt;http://trac.webkit.org/changeset/157649&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>941337</commentid>
    <comment_count>18</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-10-18 14:40:15 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>214404</attachid>
            <date>2013-10-16 16:50:20 -0700</date>
            <delta_ts>2013-10-17 11:47:40 -0700</delta_ts>
            <desc>Patch V1</desc>
            <filename>bug122924.patch</filename>
            <type>text/plain</type>
            <size>32820</size>
            <attacher name="Alexandru Chiculita">achicu</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IGVjM2U4ZjQuLjQ5NTM2YTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY2IEBACisyMDEzLTEwLTE2ICBBbGV4YW5kcnUgQ2hp
Y3VsaXRhICA8YWNoaWN1QGFkb2JlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBDU1Mg
UmVnaW9uczogQWRkIHRoZSBsaXN0IG9mIGZsb3dzIGluIHRoZSBGcmFtZVRyZWVFbGVtZW50Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjI5MjQKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBjb2Rl
IHRvIGNvbGxlY3QgdGhlIGZsb3dzIGZyb20gdGhlIGJhY2tlbmQgaW50byB0aGUgRE9NVHJlZSBv
YmplY3QKKyAgICAgICAgb24gdGhlIGZyb250ZW5kLiBBZGRlZCBDb250ZW50RmxvdyB0byByZXBy
ZXNlbnQgdGhlIGZsb3dzIG9uIHRoZSBmcm9udGVuZAorICAgICAgICBzaWRlIGFuZCBjcmVhdGVk
IENvbnRlbnRGbG93VHJlZUVsZW1lbnQgdG8gZGlzcGxheSB0aGUgZmxvd3MgaW4gdGhlIEZyYW1l
VHJlZUVsZW1lbnQuCisKKyAgICAgICAgKiBMb2NhbGl6YXRpb25zL2VuLmxwcm9qL2xvY2FsaXpl
ZFN0cmluZ3MuanM6CisgICAgICAgICogVXNlckludGVyZmFjZS9DU1NPYnNlcnZlci5qczoKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5DU1NPYnNlcnZlci5wcm90b3R5cGUubmFtZWRGbG93Q3JlYXRl
ZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTT2JzZXJ2ZXIucHJvdG90eXBlLm5hbWVkRmxv
d1JlbW92ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU09ic2VydmVyLnByb3RvdHlwZS5y
ZWdpb25MYXlvdXRVcGRhdGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NPYnNlcnZlci5w
cm90b3R5cGUucmVnaW9uT3ZlcnNldENoYW5nZWQpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2Uv
Q29udGVudEZsb3cuanM6IEFkZGVkLgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbnRlbnRGbG93
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db250ZW50Rmxvdy5oYXNoS2V5KToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5Db250ZW50Rmxvdy5wcm90b3R5cGUuX2RpZmZGbG93Q2hhbmdlcyk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuQ29udGVudEZsb3cucHJvdG90eXBlLl9sb2FkRnJvbUpTT04p
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbnRlbnRGbG93LnByb3RvdHlwZS51cGRhdGUpOgor
ICAgICAgICAqIFVzZXJJbnRlcmZhY2UvQ29udGVudEZsb3dJY29uLmNzczogQWRkZWQuCisgICAg
ICAgICguY29udGVudC1mbG93LWljb24gLmljb24pOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2Uv
Q29udGVudEZsb3dUcmVlRWxlbWVudC5qczogQWRkZWQuCisgICAgICAgIChXZWJJbnNwZWN0b3Iu
Q29udGVudEZsb3dUcmVlRWxlbWVudCk6CisgICAgICAgICogVXNlckludGVyZmFjZS9ET01UcmVl
LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTVRyZWUpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkRPTVRyZWUucHJvdG90eXBlLmdldCBmbG93cyk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
RE9NVHJlZS5wcm90b3R5cGUuZ2V0IGZsb3dzQ291bnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkRPTVRyZWUucHJvdG90eXBlLl9mcmFtZVBhZ2VFeGVjdXRpb25Db250ZXh0Q2hhbmdlZCk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuRE9NVHJlZS5wcm90b3R5cGUucmVxdWVzdEZsb3dMaXN0KToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5ET01UcmVlLnByb3RvdHlwZS5faXNGbG93SW5DdXJyZW50
RG9jdW1lbnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTVRyZWUucHJvdG90eXBlLl9mbG93
TGlzdFdhc1VwZGF0ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTVRyZWUucHJvdG90eXBl
Ll9mbG93V2FzQWRkZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTVRyZWUucHJvdG90eXBl
Ll9mbG93V2FzUmVtb3ZkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5ET01UcmVlLnByb3RvdHlw
ZS5fZmxvd1dhc0NoYW5nZWQpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvRE9NVHJlZU1hbmFn
ZXIuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRE9NVHJlZU1hbmFnZXIucHJvdG90eXBlLmdl
dE5hbWVkRmxvd0NvbGxlY3Rpb24pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTVRyZWVNYW5h
Z2VyLnByb3RvdHlwZS5uYW1lZEZsb3dDcmVhdGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5E
T01UcmVlTWFuYWdlci5wcm90b3R5cGUubmFtZWRGbG93UmVtb3ZlZCk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuRE9NVHJlZU1hbmFnZXIucHJvdG90eXBlLnJlZ2lvbkxheW91dFVwZGF0ZWQpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTVRyZWVNYW5hZ2VyLnByb3RvdHlwZS5yZWdpb25PdmVy
c2V0Q2hhbmdlZCk6CisgICAgICAgICogVXNlckludGVyZmFjZS9GcmFtZVRyZWVFbGVtZW50Lmpz
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkZyYW1lVHJlZUVsZW1lbnQpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLkZyYW1lVHJlZUVsZW1lbnQucHJvdG90eXBlLm9ucG9wdWxhdGUpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLkZyYW1lVHJlZUVsZW1lbnQucHJvdG90eXBlLm9uZXhwYW5kKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5GcmFtZVRyZWVFbGVtZW50LnByb3RvdHlwZS5fY2hpbGRGbG93
V2FzQWRkZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkZyYW1lVHJlZUVsZW1lbnQucHJvdG90
eXBlLl9jaGlsZEZsb3dXYXNSZW1vdmVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5GcmFtZVRy
ZWVFbGVtZW50LnByb3RvdHlwZS5fcm9vdERPTU5vZGVJbnZhbGlkYXRlZCk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuRnJhbWVUcmVlRWxlbWVudC5wcm90b3R5cGUuX2FkZENoaWxkRm9yUmVwcmVz
ZW50ZWRPYmplY3QpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkZyYW1lVHJlZUVsZW1lbnQucHJv
dG90eXBlLl9yZW1vdmVDaGlsZEZvclJlcHJlc2VudGVkT2JqZWN0KToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5GcmFtZVRyZWVFbGVtZW50LnByb3RvdHlwZS5fYWRkVHJlZUVsZW1lbnRGb3JSZXBy
ZXNlbnRlZE9iamVjdCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRnJhbWVUcmVlRWxlbWVudC5w
cm90b3R5cGUuX2NvbXBhcmVSZXNvdXJjZVRyZWVFbGVtZW50cyk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuRnJhbWVUcmVlRWxlbWVudC5wcm90b3R5cGUuX2luc2VydFJlc291cmNlVHJlZUVsZW1l
bnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkZyYW1lVHJlZUVsZW1lbnQucHJvdG90eXBlLl9w
YXJlbnRUcmVlRWxlbWVudEZvclJlcHJlc2VudGVkT2JqZWN0KToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5GcmFtZVRyZWVFbGVtZW50LnByb3RvdHlwZS5fc2hvdWxkR3JvdXBJbnRvRm9sZGVycyk6
CisgICAgICAgICogVXNlckludGVyZmFjZS9JbWFnZXMvQ29udGVudEZsb3cuc3ZnOiBBZGRlZC4K
KyAgICAgICAgKiBVc2VySW50ZXJmYWNlL01haW4uaHRtbDoKKyAgICAgICAgKiBVc2VySW50ZXJm
YWNlL1Jlc291cmNlU2lkZWJhclBhbmVsLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291
cmNlU2lkZWJhclBhbmVsLnByb3RvdHlwZS5fdHJlZUVsZW1lbnRTZWxlY3RlZCk6CisKIDIwMTMt
MTAtMTAgIEJyaWFuIEouIEJ1cmcgIDxidXJnQGNzLndhc2hpbmd0b24uZWR1PgogCiAgICAgICAg
IFdlYiBJbnNwZWN0b3I6IGNvbnRlbnQgdmlld3MgYW5kIG1hbmFnZXJzIHNob3VsZCBzYXZlL3Jl
c3RvcmUgdmlldyBzdGF0ZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Mb2Nh
bGl6YXRpb25zL2VuLmxwcm9qL2xvY2FsaXplZFN0cmluZ3MuanMgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvTG9jYWxpemF0aW9ucy9lbi5scHJvai9sb2NhbGl6ZWRTdHJpbmdzLmpzCmluZGV4IGJj
Yjg3MzkuLjM5MDRlZGMgMTAwNjQ0CkJpbmFyeSBmaWxlcyBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Mb2NhbGl6YXRpb25zL2VuLmxwcm9qL2xvY2FsaXplZFN0cmluZ3MuanMgYW5kIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL0xvY2FsaXphdGlvbnMvZW4ubHByb2ovbG9jYWxpemVkU3RyaW5ncy5q
cyBkaWZmZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L0NTU09ic2VydmVyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ1NT
T2JzZXJ2ZXIuanMKaW5kZXggY2QwNjZkMS4uNTVmMzQ0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ1NTT2JzZXJ2ZXIuanMKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ1NTT2JzZXJ2ZXIuanMKQEAgLTU1LDE3ICs1NSwy
MiBAQCBXZWJJbnNwZWN0b3IuQ1NTT2JzZXJ2ZXIucHJvdG90eXBlID0gewogCiAgICAgbmFtZWRG
bG93Q3JlYXRlZDogZnVuY3Rpb24obmFtZWRGbG93KQogICAgIHsKLSAgICAgICAgLy8gRklYTUU6
IE5vdCBpbXBsZW1lbnRlZC4KKyAgICAgICAgV2ViSW5zcGVjdG9yLmRvbVRyZWVNYW5hZ2VyLm5h
bWVkRmxvd0NyZWF0ZWQobmFtZWRGbG93KTsKICAgICB9LAogCiAgICAgbmFtZWRGbG93UmVtb3Zl
ZDogZnVuY3Rpb24oZG9jdW1lbnROb2RlSWQsIGZsb3dOYW1lKQogICAgIHsKLSAgICAgICAgLy8g
RklYTUU6IE5vdCBpbXBsZW1lbnRlZC4KKyAgICAgICAgV2ViSW5zcGVjdG9yLmRvbVRyZWVNYW5h
Z2VyLm5hbWVkRmxvd1JlbW92ZWQoZG9jdW1lbnROb2RlSWQsIGZsb3dOYW1lKTsKICAgICB9LAog
CiAgICAgcmVnaW9uTGF5b3V0VXBkYXRlZDogZnVuY3Rpb24obmFtZWRGbG93KQogICAgIHsKLSAg
ICAgICAgLy8gRklYTUU6IE5vdCBpbXBsZW1lbnRlZC4KKyAgICAgICAgV2ViSW5zcGVjdG9yLmRv
bVRyZWVNYW5hZ2VyLnJlZ2lvbkxheW91dFVwZGF0ZWQobmFtZWRGbG93KTsKKyAgICB9LAorCisg
ICAgcmVnaW9uT3ZlcnNldENoYW5nZWQ6IGZ1bmN0aW9uKG5hbWVkRmxvdykKKyAgICB7CisgICAg
ICAgIFdlYkluc3BlY3Rvci5kb21UcmVlTWFuYWdlci5yZWdpb25PdmVyc2V0Q2hhbmdlZChuYW1l
ZEZsb3cpOwogICAgIH0KIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL0NvbnRlbnRGbG93LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvQ29udGVudEZsb3cuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uNzhlZDAyYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL0NvbnRlbnRGbG93LmpzCkBAIC0wLDAgKzEsMTA3IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEzIEFkb2JlIFN5c3RlbXMgSW5jb3Jwb3JhdGVkLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUK
KyAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nCisgKiAgICBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogICAgY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyAqICAgIGRpc2Ns
YWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscworICogICAg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSICJBUyBJUyIgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgQkUKKyAqIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwKKyAqIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IKKyAqIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRgorICogVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisgKiBTVUNI
IERBTUFHRS4KKyAqLworCitXZWJJbnNwZWN0b3IuQ29udGVudEZsb3cgPSBmdW5jdGlvbihkYXRh
KQoreworICAgIHRoaXMuX2xvYWRGcm9tSlNPTihkYXRhKTsKK307CisKK1dlYkluc3BlY3Rvci5D
b250ZW50Rmxvdy5FdmVudCA9IHsKKyAgICBPdmVyc2V0V2FzQ2hhbmdlZDogImNvbnRlbnQtZmxv
dy1vdmVyc2V0LXdhcy1jaGFuZ2VkIiwKKyAgICBDb250ZW50V2FzQ2hhbmdlZDogImNvbnRlbnQt
Zmxvdy1jb250ZW50LXdhcy1jaGFuZ2VkIiwKKyAgICBSZWdpb25DaGFpbldhc0NoYW5nZWQ6ICJj
b250ZW50LWZsb3ctcmVnaW9uLWNoYWluLXdhcy1jaGFuZ2VkIiwKK307CisKK1dlYkluc3BlY3Rv
ci5Db250ZW50Rmxvdy5oYXNoS2V5ID0gZnVuY3Rpb24oZmxvdykKK3sKKyAgICAvLyBVc2UgdGhl
IGZsb3cgbm9kZSBpZCwgdG8gYXZvaWQgY29sbGlzaW9ucyB3aGVuIHdlIGNoYW5nZSBtYWluIGRv
Y3VtZW50IGlkLgorICAgIHJldHVybiBmbG93LmRvY3VtZW50Tm9kZUlkICsgIjoiICsgZmxvdy5u
YW1lOworfTsKKworV2ViSW5zcGVjdG9yLkNvbnRlbnRGbG93LnByb3RvdHlwZSA9IHsKKworICAg
IF9kaWZmRmxvd0NoYW5nZXM6IGZ1bmN0aW9uKG90aGVyKQorICAgIHsKKyAgICAgICAgY29uc29s
ZS5hc3NlcnQodGhpcy5uYW1lID09PSBvdGhlci5uYW1lKTsKKworICAgICAgICB2YXIgZGlmZiA9
IHsKKyAgICAgICAgICAgIGZsb3dPdmVyc2V0OiB0aGlzLm92ZXJzZXQgIT09IG90aGVyLm92ZXJz
ZXQsCisgICAgICAgICAgICBjb250ZW50OiB0aGlzLmNvbnRlbnQubGVuZ3RoICE9PSBvdGhlci5j
b250ZW50Lmxlbmd0aCwKKyAgICAgICAgICAgIHJlZ2lvbnM6IHRoaXMucmVnaW9ucy5sZW5ndGgg
IT09IG90aGVyLnJlZ2lvbnMubGVuZ3RoCisgICAgICAgIH07CisKKyAgICAgICAgaWYgKCFkaWZm
LmNvbnRlbnQpIHsKKyAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5jb250ZW50
Lmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICAgICAgaWYgKHRoaXMuY29udGVudFtpXSAhPT0g
b3RoZXIuY29udGVudFtpXSkgeworICAgICAgICAgICAgICAgICAgICBkaWZmLmNvbnRlbnQgPSB0
cnVlOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAoIWRpZmYucmVnaW9ucykgeworICAg
ICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLnJlZ2lvbnMubGVuZ3RoOyArK2kpIHsK
KyAgICAgICAgICAgICAgICB2YXIgY3VycmVudFJlZ2lvbiA9IHRoaXMucmVnaW9uc1tpXTsKKyAg
ICAgICAgICAgICAgICB2YXIgbmV3UmVnaW9uID0gb3RoZXIucmVnaW9uc1tpXTsKKyAgICAgICAg
ICAgICAgICBpZiAoY3VycmVudFJlZ2lvbi5ub2RlSWQgIT09IG5ld1JlZ2lvbi5ub2RlSWQKKyAg
ICAgICAgICAgICAgICAgICAgfHwgY3VycmVudFJlZ2lvbi5yZWdpb25PdmVyc2V0ICE9PSBuZXdS
ZWdpb24ucmVnaW9uT3ZlcnNldCkgeworICAgICAgICAgICAgICAgICAgICBkaWZmLnJlZ2lvbnMg
PSB0cnVlOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gZGlmZjsKKyAgICB9LAor
CisgICAgX2xvYWRGcm9tSlNPTjogZnVuY3Rpb24oZGF0YSkKKyAgICB7CisgICAgICAgIHRoaXMu
bmFtZSA9IGRhdGEubmFtZTsKKyAgICAgICAgdGhpcy5vdmVyc2V0ID0gZGF0YS5vdmVyc2V0Owor
ICAgICAgICB0aGlzLnJlZ2lvbnMgPSBkYXRhLnJlZ2lvbnM7CisgICAgICAgIHRoaXMuY29udGVu
dCA9IGRhdGEuY29udGVudDsKKyAgICB9LAorCisgICAgdXBkYXRlOiBmdW5jdGlvbihkYXRhKQor
ICAgIHsKKyAgICAgICAgdmFyIGRpZmYgPSB0aGlzLl9kaWZmRmxvd0NoYW5nZXMoZGF0YSk7Cisg
ICAgICAgIHRoaXMuX2xvYWRGcm9tSlNPTihkYXRhKTsKKworICAgICAgICBpZiAoZmxvdy5kaWZm
Lm92ZXJzZXQpCisgICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJ
bnNwZWN0b3IuQ29udGVudEZsb3cuRXZlbnQuRmxvd092ZXJzZXRXYXNDaGFuZ2VkKTsKKyAgICAg
ICAgaWYgKGZsb3cuZGlmZi5jb250ZW50KQorICAgICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50
VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkNvbnRlbnRGbG93LkV2ZW50LkZsb3dDb250ZW50V2Fz
Q2hhbmdlZCk7CisgICAgICAgIGlmIChmbG93LmRpZmYucmVnaW9ucykKKyAgICAgICAgICAgIHRo
aXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5Db250ZW50Rmxvdy5FdmVu
dC5GbG93UmVnaW9uc1dhc0NoYW5nZWQpOworICAgIH0KKworfTsKKworCitXZWJJbnNwZWN0b3Iu
Q29udGVudEZsb3cucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5PYmplY3QucHJv
dG90eXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Q29udGVudEZsb3dJY29uLmNzcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L0NvbnRlbnRGbG93SWNvbi5jc3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
YjI2ZTc2NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL0NvbnRlbnRGbG93SWNvbi5jc3MKQEAgLTAsMCArMSwzMiBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMyBBZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRlZC4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
CisgKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZworICogICAgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqICAgIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisgKiAgICBkaXNj
bGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMKKyAqICAg
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIAorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUiAiQVMgSVMiIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIEJFCisgKiBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksCisgKiBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SCisgKiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YKKyAqIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgorICogU1VD
SCBEQU1BR0UuCisgKi8KKworLmNvbnRlbnQtZmxvdy1pY29uIC5pY29uIHsKKyAgICBjb250ZW50
OiB1cmwoSW1hZ2VzL0NvbnRlbnRGbG93LnN2Zyk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250ZW50Rmxvd1RyZWVFbGVtZW50LmpzIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udGVudEZsb3dUcmVlRWxlbWVudC5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NjZmZjdlCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udGVudEZsb3dU
cmVlRWxlbWVudC5qcwpAQCAtMCwwICsxLDQ0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEz
IEFkb2JlIFN5c3RlbXMgSW5jb3Jwb3JhdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUKKyAqICAgIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisg
KiAgICBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyAqICAgIGRpc2NsYWltZXIgaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscworICogICAgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICogCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVCBIT0xERVIgQkUKKyAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwKKyAqIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IKKyAqIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRgorICogVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisgKiBTVUNIIERBTUFHRS4KKyAq
LworCitXZWJJbnNwZWN0b3IuQ29udGVudEZsb3dUcmVlRWxlbWVudCA9IGZ1bmN0aW9uKHJlcHJl
c2VudGVkT2JqZWN0KQoreworICAgIGNvbnNvbGUuYXNzZXJ0KHJlcHJlc2VudGVkT2JqZWN0IGlu
c3RhbmNlb2YgV2ViSW5zcGVjdG9yLkNvbnRlbnRGbG93KTsKKyAgICBXZWJJbnNwZWN0b3IuR2Vu
ZXJhbFRyZWVFbGVtZW50LmNhbGwodGhpcywgW1dlYkluc3BlY3Rvci5Db250ZW50Rmxvd1RyZWVF
bGVtZW50LlN0eWxlQ2xhc3NOYW1lLCBXZWJJbnNwZWN0b3IuQ29udGVudEZsb3dUcmVlRWxlbWVu
dC5Db250ZW50Rmxvd0ljb25TdHlsZUNsYXNzTmFtZV0sIHJlcHJlc2VudGVkT2JqZWN0Lm5hbWUs
IG51bGwsIHJlcHJlc2VudGVkT2JqZWN0LCBmYWxzZSk7CisKKyAgICB0aGlzLnNtYWxsID0gdHJ1
ZTsKK307CisKK1dlYkluc3BlY3Rvci5Db250ZW50Rmxvd1RyZWVFbGVtZW50LkNvbnRlbnRGbG93
SWNvblN0eWxlQ2xhc3NOYW1lID0gImNvbnRlbnQtZmxvdy1pY29uIjsKKworV2ViSW5zcGVjdG9y
LkNvbnRlbnRGbG93VHJlZUVsZW1lbnQucHJvdG90eXBlID0geworICAgIGNvbnN0cnVjdG9yOiBX
ZWJJbnNwZWN0b3IuQ29udGVudEZsb3dUcmVlRWxlbWVudAorfTsKKworV2ViSW5zcGVjdG9yLkNv
bnRlbnRGbG93VHJlZUVsZW1lbnQucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5H
ZW5lcmFsVHJlZUVsZW1lbnQucHJvdG90eXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvRE9NVHJlZS5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL0RPTVRyZWUuanMKaW5kZXggNzgzZTk3ZC4uMzU3OGIxMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvRE9NVHJlZS5qcworKysgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9ET01UcmVlLmpzCkBAIC0zMSw2ICsz
MSw4IEBAIFdlYkluc3BlY3Rvci5ET01UcmVlID0gZnVuY3Rpb24oZnJhbWUpCiAKICAgICB0aGlz
Ll9yb290RE9NTm9kZSA9IG51bGw7CiAgICAgdGhpcy5fcmVxdWVzdElkZW50aWZpZXIgPSAwOwor
ICAgIHRoaXMuX2Zsb3dzID0ge307CisgICAgdGhpcy5fZmxvd3NDb3VudCA9IDA7CiAKICAgICB0
aGlzLl9mcmFtZS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5GcmFtZS5FdmVudC5QYWdl
RXhlY3V0aW9uQ29udGV4dENoYW5nZWQsIHRoaXMuX2ZyYW1lUGFnZUV4ZWN1dGlvbkNvbnRleHRD
aGFuZ2VkLCB0aGlzKTsKIApAQCAtNDEsMTIgKzQzLDIwIEBAIFdlYkluc3BlY3Rvci5ET01UcmVl
ID0gZnVuY3Rpb24oZnJhbWUpCiAgICAgICAgIFdlYkluc3BlY3Rvci5kb21UcmVlTWFuYWdlci5h
ZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5ET01UcmVlTWFuYWdlci5FdmVudC5Ob2RlUmVt
b3ZlZCwgdGhpcy5fbm9kZVJlbW92ZWQsIHRoaXMpOwogICAgICAgICB0aGlzLl9mcmFtZS5hZGRF
dmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5GcmFtZS5FdmVudC5NYWluUmVzb3VyY2VEaWRDaGFu
Z2UsIHRoaXMuX2ZyYW1lTWFpblJlc291cmNlRGlkQ2hhbmdlLCB0aGlzKTsKICAgICB9CisKKyAg
ICBXZWJJbnNwZWN0b3IuZG9tVHJlZU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0
b3IuRE9NVHJlZU1hbmFnZXIuRXZlbnQuRmxvd0xpc3RXYXNVcGRhdGVkLCB0aGlzLl9mbG93TGlz
dFdhc1VwZGF0ZWQsIHRoaXMpOworICAgIFdlYkluc3BlY3Rvci5kb21UcmVlTWFuYWdlci5hZGRF
dmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5ET01UcmVlTWFuYWdlci5FdmVudC5GbG93V2FzQWRk
ZWQsIHRoaXMuX2Zsb3dXYXNBZGRlZCwgdGhpcyk7CisgICAgV2ViSW5zcGVjdG9yLmRvbVRyZWVN
YW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRPTVRyZWVNYW5hZ2VyLkV2ZW50
LkZsb3dXYXNSZW1vdmVkLCB0aGlzLl9mbG93V2FzUmVtb3ZkLCB0aGlzKTsKKyAgICBXZWJJbnNw
ZWN0b3IuZG9tVHJlZU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRE9NVHJl
ZU1hbmFnZXIuRXZlbnQuUmVnaW9uTGF5b3V0VXBkYXRlZCwgdGhpcy5fZmxvd1dhc0NoYW5nZWQs
IHRoaXMpOworICAgIFdlYkluc3BlY3Rvci5kb21UcmVlTWFuYWdlci5hZGRFdmVudExpc3RlbmVy
KFdlYkluc3BlY3Rvci5ET01UcmVlTWFuYWdlci5FdmVudC5SZWdpb25PdmVyc2V0Q2hhbmdlZCwg
dGhpcy5fZmxvd1dhc0NoYW5nZWQsIHRoaXMpOwogfTsKIAogV2ViSW5zcGVjdG9yLk9iamVjdC5h
ZGRDb25zdHJ1Y3RvckZ1bmN0aW9ucyhXZWJJbnNwZWN0b3IuRE9NVHJlZSk7CiAKIFdlYkluc3Bl
Y3Rvci5ET01UcmVlLkV2ZW50ID0gewotICAgIFJvb3RET01Ob2RlSW52YWxpZGF0ZWQ6ICJkb20t
dHJlZS1yb290LWRvbS1ub2RlLWludmFsaWRhdGVkIgorICAgIFJvb3RET01Ob2RlSW52YWxpZGF0
ZWQ6ICJkb20tdHJlZS1yb290LWRvbS1ub2RlLWludmFsaWRhdGVkIiwKKyAgICBGbG93V2FzQWRk
ZWQ6ICJkb20tdHJlZS1mbG93LXdhcy1hZGRlZCIsCisgICAgRmxvd1dhc1JlbW92ZWQ6ICJkb20t
dHJlZS1mbG93LXdhcy1yZW1vdmVkIgogfTsKIAogV2ViSW5zcGVjdG9yLkRPTVRyZWUucHJvdG90
eXBlID0gewpAQCAtNTksNiArNjksMTYgQEAgV2ViSW5zcGVjdG9yLkRPTVRyZWUucHJvdG90eXBl
ID0gewogICAgICAgICByZXR1cm4gdGhpcy5fZnJhbWU7CiAgICAgfSwKIAorICAgIGdldCBmbG93
cygpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fZmxvd3M7CisgICAgfSwKKworICAgIGdl
dCBmbG93c0NvdW50KCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9mbG93c0NvdW50Owor
ICAgIH0sCisKICAgICBpbnZhbGlkYXRlOiBmdW5jdGlvbigpCiAgICAgewogICAgICAgICAvLyBT
ZXQgdG8gbnVsbCBzbyBpdCBpcyBmZXRjaGVkIGFnYWluIG5leHQgdGltZSByZXF1ZXN0Um9vdERP
TU5vZGUgaXMgY2FsbGVkLgpAQCAtMjMwLDYgKzI1MCwxMTIgQEAgV2ViSW5zcGVjdG9yLkRPTVRy
ZWUucHJvdG90eXBlID0gewogCiAgICAgICAgICAgICB0aGlzLl9yZXF1ZXN0Um9vdERPTU5vZGUo
KTsKICAgICAgICAgfQorICAgIH0sCisKKyAgICByZXF1ZXN0Rmxvd0xpc3Q6IGZ1bmN0aW9uKCkK
KyAgICB7CisgICAgICAgIGZ1bmN0aW9uIHVwZGF0ZUZsb3dMaXN0KHJvb3ROb2RlKQorICAgICAg
ICB7CisgICAgICAgICAgICAvLyBMZXQgdGhlIGJhY2tlbmQga25vdyB3ZSBhcmUgaW50ZXJlc3Rl
ZCBhYm91dCB0aGUgbmFtZWQgZmxvdyBldmVudHMgZm9yIHRoaXMgZG9jdW1lbnQuCisgICAgICAg
ICAgICBXZWJJbnNwZWN0b3IuZG9tVHJlZU1hbmFnZXIuZ2V0TmFtZWRGbG93Q29sbGVjdGlvbihy
b290Tm9kZS5pZCk7CisgICAgICAgIH0KKyAgICAgICAgdGhpcy5yZXF1ZXN0Um9vdERPTU5vZGUo
dXBkYXRlRmxvd0xpc3QpOworICAgIH0sCisKKyAgICBfaXNGbG93SW5DdXJyZW50RG9jdW1lbnQ6
IGZ1bmN0aW9uKGZsb3cpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fcm9vdERPTU5vZGUg
JiYgKGZsb3cuZG9jdW1lbnROb2RlSWQgPT09IHRoaXMuX3Jvb3RET01Ob2RlLmlkKTsKKyAgICB9
LAorCisgICAgX2Zsb3dMaXN0V2FzVXBkYXRlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgeworICAg
ICAgICBpZiAoIXRoaXMuX3Jvb3RET01Ob2RlIHx8IHRoaXMuX3Jvb3RET01Ob2RlLmlkICE9PSBl
dmVudC5kYXRhLmRvY3VtZW50Tm9kZUlkKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAg
IC8vIEFzc3VtZSB0aGF0IGFsbCB0aGUgZmxvd3MgaGF2ZSBiZWVuIHJlbW92ZWQuCisgICAgICAg
IHZhciBkZWxldGVkRmxvd3MgPSB7fTsKKyAgICAgICAgZm9yICh2YXIgZmxvd0tleSBpbiB0aGlz
Ll9mbG93cykKKyAgICAgICAgICAgIGRlbGV0ZWRGbG93c1tmbG93S2V5XSA9IHRoaXMuX2Zsb3dz
W2Zsb3dLZXldOworCisgICAgICAgIHZhciBuZXdGbG93cyA9IFtdOworCisgICAgICAgIHZhciBm
bG93cyA9IGV2ZW50LmRhdGEuZmxvd3M7CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZmxv
d3MubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgIHZhciBmbG93ID0gZmxvd3NbaV07CisgICAg
ICAgICAgICAvLyBBbGwgdGhlIGZsb3dzIHJlY2VpdmVkIGZyb20gV2ViS2l0IGFyZSBwYXJ0IG9m
IHRoZSBzYW1lIGRvY3VtZW50LgorICAgICAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5faXNG
bG93SW5DdXJyZW50RG9jdW1lbnQoZmxvdykpOworCisgICAgICAgICAgICB2YXIgZmxvd0tleSA9
IFdlYkluc3BlY3Rvci5Db250ZW50Rmxvdy5oYXNoS2V5KGZsb3cpOworICAgICAgICAgICAgaWYg
KHRoaXMuX2Zsb3dzLmhhc093blByb3BlcnR5KGZsb3dLZXkpKSB7CisgICAgICAgICAgICAgICAg
Ly8gUmVtb3ZlIHRoZSBmbG93IG5hbWUgZnJvbSB0aGUgZGVsZXRlZCBsaXN0LgorICAgICAgICAg
ICAgICAgIGNvbnNvbGUuYXNzZXJ0KGRlbGV0ZWRGbG93cy5oYXNPd25Qcm9wZXJ0eShmbG93S2V5
KSk7CisgICAgICAgICAgICAgICAgZGVsZXRlIGRlbGV0ZWRGbG93c1tmbG93S2V5XTsKKyAgICAg
ICAgICAgICAgICB0aGlzLl9mbG93c1tmbG93S2V5XS51cGRhdGUoZmxvdyk7CisgICAgICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHZhciBjb250ZW50RmxvdyA9IG5ldyBXZWJJbnNw
ZWN0b3IuQ29udGVudEZsb3coZmxvdyk7CisgICAgICAgICAgICAgICAgdGhpcy5fZmxvd3NbZmxv
d0tleV0gPSBjb250ZW50RmxvdzsKKyAgICAgICAgICAgICAgICBuZXdGbG93cy5wdXNoKGNvbnRl
bnRGbG93KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGZvciAodmFyIGZs
b3dLZXkgaW4gZGVsZXRlZEZsb3dzKSB7CisgICAgICAgICAgICAtLXRoaXMuX2Zsb3dzQ291bnQ7
CisgICAgICAgICAgICBkZWxldGUgdGhpcy5fZmxvd3NbZmxvd0tleV07CisgICAgICAgIH0KKyAg
ICAgICAgdGhpcy5fZmxvd3NDb3VudCArPSBuZXdGbG93cy5sZW5ndGg7CisKKyAgICAgICAgLy8g
U2VuZCB1cGRhdGUgZXZlbnRzIHRvIGxpc3RlbmVycy4KKworICAgICAgICBmb3IgKHZhciBmbG93
S2V5IGluIGRlbGV0ZWRGbG93cykKKyAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlz
dGVuZXJzKFdlYkluc3BlY3Rvci5ET01UcmVlLkV2ZW50LkZsb3dXYXNSZW1vdmVkLCB7IGZsb3c6
IGRlbGV0ZWRGbG93c1tmbG93S2V5XSB9KTsKKworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8
IG5ld0Zsb3dzLmxlbmd0aDsgKytpKQorICAgICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9M
aXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkRPTVRyZWUuRXZlbnQuRmxvd1dhc0FkZGVkLCB7IGZsb3c6
IG5ld0Zsb3dzW2ldIH0pOworICAgIH0sCisKKyAgICBfZmxvd1dhc0FkZGVkOiBmdW5jdGlvbihl
dmVudCkKKyAgICB7CisgICAgICAgIHZhciBmbG93ID0gZXZlbnQuZGF0YS5mbG93OworICAgICAg
ICBpZiAoIXRoaXMuX2lzRmxvd0luQ3VycmVudERvY3VtZW50KGZsb3cpKQorICAgICAgICAgICAg
cmV0dXJuOworCisgICAgICAgIHZhciBmbG93S2V5ID0gV2ViSW5zcGVjdG9yLkNvbnRlbnRGbG93
Lmhhc2hLZXkoZmxvdyk7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCF0aGlzLl9mbG93cy5oYXNP
d25Qcm9wZXJ0eShmbG93S2V5KSk7CisgICAgICAgIAorICAgICAgICB2YXIgY29udGVudEZsb3cg
PSBuZXcgV2ViSW5zcGVjdG9yLkNvbnRlbnRGbG93KGZsb3cpOworICAgICAgICB0aGlzLl9mbG93
c1tmbG93S2V5XSA9IGNvbnRlbnRGbG93OworCisgICAgICAgICsrdGhpcy5fZmxvd3NDb3VudDsK
KworICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuRE9N
VHJlZS5FdmVudC5GbG93V2FzQWRkZWQsIHsgZmxvdzogY29udGVudEZsb3cgfSk7CisgICAgfSwK
KworICAgIF9mbG93V2FzUmVtb3ZkOiBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAgICAgIHZh
ciBmbG93ID0gZXZlbnQuZGF0YS5mbG93OworICAgICAgICBpZiAoIXRoaXMuX2lzRmxvd0luQ3Vy
cmVudERvY3VtZW50KGZsb3cpKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHZhciBm
bG93S2V5ID0gV2ViSW5zcGVjdG9yLkNvbnRlbnRGbG93Lmhhc2hLZXkoZmxvdyk7CisgICAgICAg
IGNvbnNvbGUuYXNzZXJ0KHRoaXMuX2Zsb3dzLmhhc093blByb3BlcnR5KGZsb3dLZXkpKTsKKyAg
ICAgICAgZmxvdyA9IHRoaXMuX2Zsb3dzW2Zsb3dLZXldOworICAgICAgICBkZWxldGUgdGhpcy5f
Zmxvd3NbZmxvd0tleV07CisKKyAgICAgICAgLS10aGlzLl9mbG93c0NvdW50OworCisgICAgICAg
IHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5ET01UcmVlLkV2ZW50
LkZsb3dXYXNSZW1vdmVkLCB7IGZsb3c6IGZsb3cgfSk7CisgICAgfSwKKworICAgIF9mbG93V2Fz
Q2hhbmdlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgeworICAgICAgICB2YXIgZmxvdyA9IGV2ZW50
LmRhdGEuZmxvdzsKKyAgICAgICAgaWYgKCF0aGlzLl9pc0Zsb3dJbkN1cnJlbnREb2N1bWVudChm
bG93KSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgCisgICAgICAgIHZhciBmbG93S2V5
ID0gV2ViSW5zcGVjdG9yLkNvbnRlbnRGbG93Lmhhc2hLZXkoZmxvdyk7CisgICAgICAgIGNvbnNv
bGUuYXNzZXJ0KHRoaXMuX2Zsb3dzLmhhc093blByb3BlcnR5KGZsb3dLZXkpKTsKKworICAgICAg
ICB0aGlzLl9mbG93c1tmbG93S2V5XS51cGRhdGUoZmxvdyk7CiAgICAgfQogfTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvRE9NVHJlZU1hbmFnZXIu
anMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9ET01UcmVlTWFuYWdlci5q
cwppbmRleCA4MTgyNGRiLi44YWI4ZTU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9ET01UcmVlTWFuYWdlci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9ET01UcmVlTWFuYWdlci5qcwpAQCAtNTIsNyArNTIsMTIgQEAg
V2ViSW5zcGVjdG9yLkRPTVRyZWVNYW5hZ2VyLkV2ZW50ID0gewogICAgIERvY3VtZW50VXBkYXRl
ZDogImRvbS10cmVlLW1hbmFnZXItZG9jdW1lbnQtdXBkYXRlZCIsCiAgICAgQ2hpbGROb2RlQ291
bnRVcGRhdGVkOiAiZG9tLXRyZWUtbWFuYWdlci1jaGlsZC1ub2RlLWNvdW50LXVwZGF0ZWQiLAog
ICAgIERPTU5vZGVXYXNJbnNwZWN0ZWQ6ICJkb20tdHJlZS1tYW5hZ2VyLWRvbS1ub2RlLXdhcy1p
bnNwZWN0ZWQiLAotICAgIEluc3BlY3RNb2RlU3RhdGVDaGFuZ2VkOiAiZG9tLXRyZWUtbWFuYWdl
ci1pbnNwZWN0LW1vZGUtc3RhdGUtY2hhbmdlZCIKKyAgICBJbnNwZWN0TW9kZVN0YXRlQ2hhbmdl
ZDogImRvbS10cmVlLW1hbmFnZXItaW5zcGVjdC1tb2RlLXN0YXRlLWNoYW5nZWQiLAorICAgIEZs
b3dMaXN0V2FzVXBkYXRlZDogImRvbS10cmVlLW1hbmFnZXItZmxvdy1saXN0LXdhcy11cGRhdGVk
IiwKKyAgICBGbG93V2FzQWRkZWQ6ICJkb20tdHJlZS1tYW5hZ2VyLWZsb3ctd2FzLWFkZGVkIiwK
KyAgICBGbG93V2FzUmVtb3ZlZDogImRvbS10cmVlLW1hbmFnZXItZmxvdy13YXMtcmVtb3ZlZCIs
CisgICAgUmVnaW9uTGF5b3V0VXBkYXRlZDogImRvbS10cmVlLW1hbmFnZXItcmVnaW9uLWxheW91
dC11cGRhdGVkIiwKKyAgICBSZWdpb25PdmVyc2V0Q2hhbmdlZDogImRvbS10cmVlLW1hbmFnZXIt
cmVnaW9uLW92ZXJzZXQtY2hhbmdlZCIKIH07CiAKIFdlYkluc3BlY3Rvci5ET01UcmVlTWFuYWdl
ci5wcm90b3R5cGUgPSB7CkBAIC01MTksNiArNTI0LDQ2IEBAIFdlYkluc3BlY3Rvci5ET01UcmVl
TWFuYWdlci5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBoaWdobGlnaHRDb25maWcubWFyZ2lu
Q29sb3IgPSB7cjogMjQ2LCBnOiAxNzgsIGI6IDEwNywgYTogMC42Nn07CiAKICAgICAgICAgcmV0
dXJuIGhpZ2hsaWdodENvbmZpZzsKKyAgICB9LAorCisgICAgZ2V0TmFtZWRGbG93Q29sbGVjdGlv
bjogZnVuY3Rpb24oZG9jdW1lbnROb2RlSWQpCisgICAgeworICAgICAgICBmdW5jdGlvbiBvbk5h
bWVkRmxvd0NvbGxlY3Rpb25BdmFpbGFibGUoZXJyb3IsIGZsb3dzKQorICAgICAgICB7CisgICAg
ICAgICAgICBpZiAoZXJyb3IpIHsKKyAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCJFcnJv
ciB3aGlsZSBnZXR0aW5nIHRoZSBuYW1lZCBmbG93cyBmb3IgZG9jdW1lbnQgIiArIGRvY3VtZW50
Tm9kZUlkICsgIjogIiArIGVycm9yKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNw
ZWN0b3IuRE9NVHJlZU1hbmFnZXIuRXZlbnQuRmxvd0xpc3RXYXNVcGRhdGVkLCB7CisgICAgICAg
ICAgICAgICAgZG9jdW1lbnROb2RlSWQ6IGRvY3VtZW50Tm9kZUlkLAorICAgICAgICAgICAgICAg
IGZsb3dzOiBmbG93cworICAgICAgICAgICAgfSk7CisgICAgICAgIH0KKyAgICAgICAgQ1NTQWdl
bnQuZ2V0TmFtZWRGbG93Q29sbGVjdGlvbihkb2N1bWVudE5vZGVJZCwgb25OYW1lZEZsb3dDb2xs
ZWN0aW9uQXZhaWxhYmxlLmJpbmQodGhpcykpOworICAgIH0sCisKKyAgICBuYW1lZEZsb3dDcmVh
dGVkOiBmdW5jdGlvbihmbG93KQorICAgIHsKKyAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9M
aXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkRPTVRyZWVNYW5hZ2VyLkV2ZW50LkZsb3dXYXNBZGRlZCwg
eyBmbG93OiBmbG93IH0pOworICAgIH0sCisKKyAgICBuYW1lZEZsb3dSZW1vdmVkOiBmdW5jdGlv
bihkb2N1bWVudE5vZGVJZCwgZmxvd05hbWUpCisgICAgeworICAgICAgICB2YXIgZmxvdyA9IHsK
KyAgICAgICAgICAgIGRvY3VtZW50Tm9kZUlkOiBkb2N1bWVudE5vZGVJZCwKKyAgICAgICAgICAg
IG5hbWU6IGZsb3dOYW1lCisgICAgICAgIH07CisgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRv
TGlzdGVuZXJzKFdlYkluc3BlY3Rvci5ET01UcmVlTWFuYWdlci5FdmVudC5GbG93V2FzUmVtb3Zl
ZCwgeyBmbG93OiBmbG93IH0pOworICAgIH0sCisKKyAgICByZWdpb25MYXlvdXRVcGRhdGVkOiBm
dW5jdGlvbihmbG93KQorICAgIHsKKyAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5l
cnMoV2ViSW5zcGVjdG9yLkRPTVRyZWVNYW5hZ2VyLkV2ZW50LlJlZ2lvbkxheW91dFVwZGF0ZWQs
IHsgZmxvdzogZmxvdyB9KTsKKyAgICB9LAorCisgICAgcmVnaW9uT3ZlcnNldENoYW5nZWQ6IGZ1
bmN0aW9uKGZsb3cpCisgICAgeworICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVy
cyhXZWJJbnNwZWN0b3IuRE9NVHJlZU1hbmFnZXIuRXZlbnQuUmVnaW9uT3ZlcnNldENoYW5nZWQs
IHsgZmxvdzogZmxvdyB9KTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0ZyYW1lVHJlZUVsZW1lbnQuanMgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9GcmFtZVRyZWVFbGVtZW50LmpzCmluZGV4IDQwMjU1YTgu
LmMyN2FmOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L0ZyYW1lVHJlZUVsZW1lbnQuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvRnJhbWVUcmVlRWxlbWVudC5qcwpAQCAtNDAsNiArNDAsMTAgQEAgV2ViSW5zcGVjdG9y
LkZyYW1lVHJlZUVsZW1lbnQgPSBmdW5jdGlvbihmcmFtZSwgcmVwcmVzZW50ZWRPYmplY3QpCiAg
ICAgZnJhbWUuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRnJhbWUuRXZlbnQuQ2hpbGRG
cmFtZVdhc0FkZGVkLCB0aGlzLl9jaGlsZEZyYW1lV2FzQWRkZWQsIHRoaXMpOwogICAgIGZyYW1l
LmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkZyYW1lLkV2ZW50LkNoaWxkRnJhbWVXYXNS
ZW1vdmVkLCB0aGlzLl9jaGlsZEZyYW1lV2FzUmVtb3ZlZCwgdGhpcyk7CiAKKyAgICBmcmFtZS5k
b21UcmVlLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRPTVRyZWUuRXZlbnQuRmxvd1dh
c0FkZGVkLCB0aGlzLl9jaGlsZEZsb3dXYXNBZGRlZCwgdGhpcyk7CisgICAgZnJhbWUuZG9tVHJl
ZS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5ET01UcmVlLkV2ZW50LkZsb3dXYXNSZW1v
dmVkLCB0aGlzLl9jaGlsZEZsb3dXYXNSZW1vdmVkLCB0aGlzKTsKKyAgICBmcmFtZS5kb21UcmVl
LmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRPTVRyZWUuRXZlbnQuUm9vdERPTU5vZGVJ
bnZhbGlkYXRlZCwgdGhpcy5fcm9vdERPTU5vZGVJbnZhbGlkYXRlZCwgdGhpcyk7CisKICAgICBp
ZiAodGhpcy5fZnJhbWUuaXNNYWluRnJhbWUoKSkgewogICAgICAgICB0aGlzLl9kb3dubG9hZGlu
Z1BhZ2UgPSBmYWxzZTsKICAgICAgICAgV2ViSW5zcGVjdG9yLm5vdGlmaWNhdGlvbnMuYWRkRXZl
bnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuTm90aWZpY2F0aW9uLlBhZ2VBcmNoaXZlU3RhcnRlZCwg
dGhpcy5fcGFnZUFyY2hpdmVTdGFydGVkLCB0aGlzKTsKQEAgLTE3NiwxMSArMTgwLDE2IEBAIFdl
Ykluc3BlY3Rvci5GcmFtZVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIGZv
ciAodmFyIGogPSAwOyBqIDwgc291cmNlTWFwLnJlc291cmNlcy5sZW5ndGg7ICsraikKICAgICAg
ICAgICAgIHRoaXMuX2FkZFRyZWVFbGVtZW50Rm9yUmVwcmVzZW50ZWRPYmplY3Qoc291cmNlTWFw
LnJlc291cmNlc1tqXSk7CiAgICAgICAgIH0KKworICAgICAgICB2YXIgZmxvd3MgPSB0aGlzLl9m
cmFtZS5kb21UcmVlLmZsb3dzOworICAgICAgICBmb3IgKHZhciBmbG93S2V5IGluIGZsb3dzKQor
ICAgICAgICAgICAgdGhpcy5fYWRkVHJlZUVsZW1lbnRGb3JSZXByZXNlbnRlZE9iamVjdChmbG93
c1tmbG93S2V5XSk7CiAgICAgfSwKIAogICAgIG9uZXhwYW5kOiBmdW5jdGlvbigpCiAgICAgewog
ICAgICAgICB0aGlzLl9leHBhbmRlZFNldHRpbmcudmFsdWUgPSB0cnVlOworICAgICAgICB0aGlz
Ll9mcmFtZS5kb21UcmVlLnJlcXVlc3RGbG93TGlzdCgpOwogICAgIH0sCiAKICAgICBvbmNvbGxh
cHNlOiBmdW5jdGlvbigpCkBAIC0yNjQsNiArMjczLDIxIEBAIFdlYkluc3BlY3Rvci5GcmFtZVRy
ZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fcmVtb3ZlQ2hpbGRGb3JSZXBy
ZXNlbnRlZE9iamVjdChldmVudC5kYXRhLmNoaWxkRnJhbWUpOwogICAgIH0sCiAKKyAgICBfY2hp
bGRGbG93V2FzQWRkZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIHsKKyAgICAgICAgdGhpcy5fYWRk
UmVwcmVzZW50ZWRPYmplY3RUb05ld0NoaWxkUXVldWUoZXZlbnQuZGF0YS5mbG93KTsKKyAgICB9
LAorCisgICAgX2NoaWxkRmxvd1dhc1JlbW92ZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIHsKKyAg
ICAgICAgdGhpcy5fcmVtb3ZlQ2hpbGRGb3JSZXByZXNlbnRlZE9iamVjdChldmVudC5kYXRhLmZs
b3cpOworICAgIH0sCisKKyAgICBfcm9vdERPTU5vZGVJbnZhbGlkYXRlZDogZnVuY3Rpb24oKSB7
CisgICAgICAgIGlmICh0aGlzLmV4cGFuZGVkKQorICAgICAgICAgICAgdGhpcy5fZnJhbWUuZG9t
VHJlZS5yZXF1ZXN0Rmxvd0xpc3QoKTsKKyAgICB9LAorCiAgICAgX2FkZFJlcHJlc2VudGVkT2Jq
ZWN0VG9OZXdDaGlsZFF1ZXVlOiBmdW5jdGlvbihyZXByZXNlbnRlZE9iamVjdCkKICAgICB7CiAg
ICAgICAgIC8vIFRoaXMgcXVldWUgcmVkdWNlcyBmbGFzaGluZyBhcyByZXNvdXJjZXMgbG9hZCBh
bmQgY2hhbmdlIGZvbGRlcnMgd2hlbiB0aGVpciB0eXBlIGJlY29tZXMga25vd24uCkBAIC0yOTgs
OCArMzIyLDggQEAgV2ViSW5zcGVjdG9yLkZyYW1lVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewog
CiAgICAgX2FkZENoaWxkRm9yUmVwcmVzZW50ZWRPYmplY3Q6IGZ1bmN0aW9uKHJlcHJlc2VudGVk
T2JqZWN0KQogICAgIHsKLSAgICAgICAgY29uc29sZS5hc3NlcnQocmVwcmVzZW50ZWRPYmplY3Qg
aW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuUmVzb3VyY2UgfHwgcmVwcmVzZW50ZWRPYmplY3QgaW5z
dGFuY2VvZiBXZWJJbnNwZWN0b3IuRnJhbWUpOwotICAgICAgICBpZiAoIShyZXByZXNlbnRlZE9i
amVjdCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5SZXNvdXJjZSB8fCByZXByZXNlbnRlZE9iamVj
dCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5GcmFtZSkpCisgICAgICAgIGNvbnNvbGUuYXNzZXJ0
KHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlJlc291cmNlIHx8IHJl
cHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkZyYW1lIHx8IHJlcHJlc2Vu
dGVkT2JqZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkNvbnRlbnRGbG93KTsKKyAgICAgICAg
aWYgKCEocmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuUmVzb3VyY2Ug
fHwgcmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuRnJhbWUgfHwgcmVw
cmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuQ29udGVudEZsb3cpKQogICAg
ICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIHRoaXMuX3VwZGF0ZVBhcmVudFN0YXR1cygpOwpA
QCAtMzIyLDggKzM0Niw4IEBAIFdlYkluc3BlY3Rvci5GcmFtZVRyZWVFbGVtZW50LnByb3RvdHlw
ZSA9IHsKIAogICAgIF9yZW1vdmVDaGlsZEZvclJlcHJlc2VudGVkT2JqZWN0OiBmdW5jdGlvbihy
ZXByZXNlbnRlZE9iamVjdCkKICAgICB7Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KHJlcHJlc2Vu
dGVkT2JqZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlJlc291cmNlIHx8IHJlcHJlc2VudGVk
T2JqZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkZyYW1lKTsKLSAgICAgICAgaWYgKCEocmVw
cmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuUmVzb3VyY2UgfHwgcmVwcmVz
ZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuRnJhbWUpKQorICAgICAgICBjb25z
b2xlLmFzc2VydChyZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5SZXNv
dXJjZSB8fCByZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5GcmFtZSB8
fCByZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5Db250ZW50Rmxvdyk7
CisgICAgICAgIGlmICghKHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9y
LlJlc291cmNlIHx8IHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkZy
YW1lIHx8IHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkNvbnRlbnRG
bG93KSkKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICB0aGlzLl9yZW1vdmVSZXByZXNl
bnRlZE9iamVjdEZyb21OZXdDaGlsZFF1ZXVlKHJlcHJlc2VudGVkT2JqZWN0KTsKQEAgLTM1NSw2
ICszNzksOCBAQCBXZWJJbnNwZWN0b3IuRnJhbWVUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAg
ICAgICAgICAgICAgICAgY2hpbGRUcmVlRWxlbWVudCA9IG5ldyBXZWJJbnNwZWN0b3IuUmVzb3Vy
Y2VUcmVlRWxlbWVudChyZXByZXNlbnRlZE9iamVjdCk7CiAgICAgICAgICAgICBlbHNlIGlmIChy
ZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5GcmFtZSkKICAgICAgICAg
ICAgICAgICBjaGlsZFRyZWVFbGVtZW50ID0gbmV3IFdlYkluc3BlY3Rvci5GcmFtZVRyZWVFbGVt
ZW50KHJlcHJlc2VudGVkT2JqZWN0KTsKKyAgICAgICAgICAgIGVsc2UgaWYgKHJlcHJlc2VudGVk
T2JqZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkNvbnRlbnRGbG93KQorICAgICAgICAgICAg
ICAgIGNoaWxkVHJlZUVsZW1lbnQgPSBuZXcgV2ViSW5zcGVjdG9yLkNvbnRlbnRGbG93VHJlZUVs
ZW1lbnQocmVwcmVzZW50ZWRPYmplY3QpOwogICAgICAgICB9CiAKICAgICAgICAgdGhpcy5fYWRk
VHJlZUVsZW1lbnQoY2hpbGRUcmVlRWxlbWVudCk7CkBAIC0zOTIsMTAgKzQxOCwyNyBAQCBXZWJJ
bnNwZWN0b3IuRnJhbWVUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuaW5z
ZXJ0Q2hpbGQoZm9sZGVyVHJlZUVsZW1lbnQsIGluc2VydGlvbkluZGV4Rm9yT2JqZWN0SW5MaXN0
U29ydGVkQnlGdW5jdGlvbihmb2xkZXJUcmVlRWxlbWVudCwgdGhpcy5jaGlsZHJlbiwgdGhpcy5f
Y29tcGFyZVRyZWVFbGVtZW50c0J5TWFpblRpdGxlKSk7CiAgICAgfSwKIAorICAgIF9jb21wYXJl
UmVzb3VyY2VUcmVlRWxlbWVudHM6IGZ1bmN0aW9uKGEsIGIpCisgICAgeworICAgICAgICB2YXIg
YUlzUmVzb3VyY2UgPSBhIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZUVsZW1l
bnQ7CisgICAgICAgIHZhciBiSXNSZXNvdXJjZSA9IGIgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3Iu
UmVzb3VyY2VUcmVlRWxlbWVudDsKKworICAgICAgICBpZiAoYUlzUmVzb3VyY2UgJiYgYklzUmVz
b3VyY2UpCisgICAgICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZUVsZW1l
bnQuY29tcGFyZVJlc291cmNlVHJlZUVsZW1lbnRzKGEsIGIpOworCisgICAgICAgIGlmICghYUlz
UmVzb3VyY2UgJiYgIWJJc1Jlc291cmNlKSB7CisgICAgICAgICAgICAvLyBXaGVuIGJvdGggY29t
cG9uZW50cyBhcmUgbm90IHJlc291cmNlcyB0aGVuIGp1c3QgY29tcGFyZSB0aGUgdGl0bGVzLgor
ICAgICAgICAgICAgcmV0dXJuIGEubWFpblRpdGxlLmxvY2FsZUNvbXBhcmUoYi5tYWluVGl0bGUp
OworICAgICAgICB9CisgICAgICAgIAorICAgICAgICAvLyBOb24tcmVzb3VyY2VzIHNob3VsZCBh
cHBlYXIgYmVmb3JlIHRoZSByZXNvdXJjZXMuCisgICAgICAgIHJldHVybiBhSXNSZXNvdXJjZSA/
IDEgOiAtMTsKKyAgICB9LAorCiAgICAgX2luc2VydFJlc291cmNlVHJlZUVsZW1lbnQ6IGZ1bmN0
aW9uKHBhcmVudFRyZWVFbGVtZW50LCBjaGlsZFRyZWVFbGVtZW50KQogICAgIHsKICAgICAgICAg
Y29uc29sZS5hc3NlcnQoIWNoaWxkVHJlZUVsZW1lbnQucGFyZW50KTsKLSAgICAgICAgcGFyZW50
VHJlZUVsZW1lbnQuaW5zZXJ0Q2hpbGQoY2hpbGRUcmVlRWxlbWVudCwgaW5zZXJ0aW9uSW5kZXhG
b3JPYmplY3RJbkxpc3RTb3J0ZWRCeUZ1bmN0aW9uKGNoaWxkVHJlZUVsZW1lbnQsIHBhcmVudFRy
ZWVFbGVtZW50LmNoaWxkcmVuLCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlRWxlbWVudC5jb21w
YXJlUmVzb3VyY2VUcmVlRWxlbWVudHMpKTsKKyAgICAgICAgcGFyZW50VHJlZUVsZW1lbnQuaW5z
ZXJ0Q2hpbGQoY2hpbGRUcmVlRWxlbWVudCwgaW5zZXJ0aW9uSW5kZXhGb3JPYmplY3RJbkxpc3RT
b3J0ZWRCeUZ1bmN0aW9uKGNoaWxkVHJlZUVsZW1lbnQsIHBhcmVudFRyZWVFbGVtZW50LmNoaWxk
cmVuLCB0aGlzLl9jb21wYXJlUmVzb3VyY2VUcmVlRWxlbWVudHMpKTsKICAgICB9LAogCiAgICAg
X3JlbW92ZVRyZWVFbGVtZW50OiBmdW5jdGlvbihjaGlsZFRyZWVFbGVtZW50LCBzdXBwcmVzc09u
RGVzZWxlY3QsIHN1cHByZXNzU2VsZWN0U2libGluZykKQEAgLTQ0NSw2ICs0ODgsMTIgQEAgV2Vi
SW5zcGVjdG9yLkZyYW1lVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICAgICAgcmV0
dXJuIHRoaXMuX2ZyYW1lc0ZvbGRlclRyZWVFbGVtZW50OwogICAgICAgICB9CiAKKyAgICAgICAg
aWYgKHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkNvbnRlbnRGbG93
KSB7CisgICAgICAgICAgICBpZiAoIXRoaXMuX2Zsb3dzRm9sZGVyVHJlZUVsZW1lbnQpCisgICAg
ICAgICAgICAgICAgdGhpcy5fZmxvd3NGb2xkZXJUcmVlRWxlbWVudCA9IGNyZWF0ZUZvbGRlclRy
ZWVFbGVtZW50LmNhbGwodGhpcywgImZsb3dzIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJGbG93
cyIpKTsKKyAgICAgICAgICAgIHJldHVybiB0aGlzLl9mbG93c0ZvbGRlclRyZWVFbGVtZW50Owor
ICAgICAgICB9CisKICAgICAgICAgaWYgKHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV2Vi
SW5zcGVjdG9yLlJlc291cmNlKSB7CiAgICAgICAgICAgICB2YXIgZm9sZGVyTmFtZSA9IHRoaXMu
X2ZvbGRlck5hbWVGb3JSZXNvdXJjZVR5cGUocmVwcmVzZW50ZWRPYmplY3QudHlwZSk7CiAgICAg
ICAgICAgICBpZiAoIWZvbGRlck5hbWUpCkBAIC00ODQsNiArNTMzLDkgQEAgV2ViSW5zcGVjdG9y
LkZyYW1lVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICB2YXIgbnVtYmVyT2ZNZWRp
dW1DYXRlZ29yaWVzID0gMDsKICAgICAgICAgdmFyIGZvdW5kTGFyZ2VDYXRlZ29yeSA9IGZhbHNl
OwogCisgICAgICAgIC8vIEZJWE1FOiBVc2UgdGhpcy5fZnJhbWUuZG9tVHJlZS5mbG93c0NvdW50
IHRvIGNvdW50IHRoZSBudW1iZXIgb2YgZmxvd3MgaW4gYSBmcmFtZS4KKyAgICAgICAgLy8gaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMjkyNgorCiAgICAgICAgIGlm
ICh0aGlzLl9mcmFtZS5jaGlsZEZyYW1lcy5sZW5ndGggPj0gV2ViSW5zcGVjdG9yLkZyYW1lVHJl
ZUVsZW1lbnQuTGFyZ2VDaGlsZENvdW50VGhyZXNob2xkKQogICAgICAgICAgICAgZm91bmRMYXJn
ZUNhdGVnb3J5ID0gdHJ1ZTsKICAgICAgICAgZWxzZSBpZiAodGhpcy5fZnJhbWUuY2hpbGRGcmFt
ZXMubGVuZ3RoID49IFdlYkluc3BlY3Rvci5GcmFtZVRyZWVFbGVtZW50Lk1lZGl1bUNoaWxkQ291
bnRUaHJlc2hvbGQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9JbWFnZXMvQ29udGVudEZsb3cuc3ZnIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvSW1hZ2VzL0NvbnRlbnRGbG93LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi5mOTVhYjE2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvSW1hZ2VzL0NvbnRlbnRGbG93LnN2ZwpAQCAtMCwwICsxLDEwIEBA
Cis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/Pg0KKzwhLS0gQ29weXJpZ2h0
IMKpIDIwMTMgQWRvYmUgU3lzdGVtcyBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIC0tPg0KKzxz
dmcgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdC
b3g9IjAgMCAxMDAgMTAwIj4NCisJPHBhdGggZmlsbD0iIzcwNzA3MCIgZD0iTTgxLjI1LDYuMjVo
LTYyLjVjLTYuODg1LDAtMTIuNSw1LjYxNS0xMi41LDEyLjV2NjIuNWMwLDYuODg1LDUuNjE1LDEy
LjUsMTIuNSwxMi41aDYyLjUNCisJCWM2Ljg4NSwwLDEyLjUtNS42MTUsMTIuNS0xMi41di02Mi41
QzkzLjc1LDExLjg2NSw4OC4xMzUsNi4yNSw4MS4yNSw2LjI1IE04MS4yNSwxMi41YzMuNDQyLDAs
Ni4yNSwyLjgwOCw2LjI1LDYuMjV2NjIuNQ0KKwkJYzAsMy40NDItMi44MDgsNi4yNS02LjI1LDYu
MjVoLTYyLjVjLTMuNDQyLDAtNi4yNS0yLjgwOC02LjI1LTYuMjV2LTYyLjVjMC0zLjQ0MiwyLjgw
OC02LjI1LDYuMjUtNi4yNUg4MS4yNSIvPg0KKwk8cmVjdCB4PSIxNy44NzUiIHk9IjE5LjYyNSIg
ZmlsbD0iIzcxNzE3MSIgd2lkdGg9IjI5LjI5MiIgaGVpZ2h0PSIyNC43MDgiLz4NCisJPHJlY3Qg
eD0iMTcuODc1IiB5PSI1MyIgZmlsbD0iIzcxNzE3MSIgd2lkdGg9IjE2LjYyNSIgaGVpZ2h0PSIy
Ni4yNSIvPg0KKwk8cmVjdCB4PSI1NS4zNzUiIHk9IjE5LjYyNSIgZmlsbD0iIzcxNzE3MSIgd2lk
dGg9IjI2LjYyNSIgaGVpZ2h0PSI2MSIvPg0KKzwvc3ZnPg0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01haW4uaHRtbCBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL01haW4uaHRtbAppbmRleCA1ZjUyYzQ0Li4zOGRjMDAyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9NYWluLmh0bWwKKysr
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTWFpbi5odG1sCkBAIC00NCw2
ICs0NCw3IEBACiAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJDb250ZW50QnJvd3Nl
ci5jc3MiPgogICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iTmF2aWdhdGlvblNpZGVi
YXJQYW5lbC5jc3MiPgogICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iUmVzb3VyY2VJ
Y29ucy5jc3MiPgorICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iQ29udGVudEZsb3dJ
Y29uLmNzcyI+CiAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJGb2xkZXJJY29uLmNz
cyI+CiAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJDb250ZW50Vmlld0NvbnRhaW5l
ci5jc3MiPgogICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iQ2x1c3RlckNvbnRlbnRW
aWV3LmNzcyI+CkBAIC0yMzAsNiArMjMxLDcgQEAKICAgICA8c2NyaXB0IHNyYz0iQXBwbGljYXRp
b25DYWNoZU1hbmlmZXN0VHJlZUVsZW1lbnQuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3Jj
PSJUcmVlRWxlbWVudFN0YXR1c0J1dHRvbi5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9
Iklzc3VlTWVzc2FnZS5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9IkNvbnRlbnRGbG93
VHJlZUVsZW1lbnQuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJGcmFtZVRyZWVFbGVt
ZW50LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iQ1NTQ29tcGxldGlvbnMuanMiPjwv
c2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJDU1NLZXl3b3JkQ29tcGxldGlvbnMuanMiPjwvc2Ny
aXB0PgpAQCAtMjYzLDYgKzI2NSw3IEBACiAgICAgPHNjcmlwdCBzcmM9IkRPTVRyZWVNYW5hZ2Vy
LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iRE9NTm9kZS5qcyI+PC9zY3JpcHQ+CiAg
ICAgPHNjcmlwdCBzcmM9IkRPTVV0aWxpdGllcy5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBz
cmM9IkNvbnRlbnRGbG93LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iRE9NVHJlZS5q
cyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IkRPTVRyZWVPdXRsaW5lLmpzIj48L3Njcmlw
dD4KICAgICA8c2NyaXB0IHNyYz0iRE9NVHJlZVVwZGF0ZXIuanMiPjwvc2NyaXB0PgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUmVzb3VyY2VTaWRlYmFy
UGFuZWwuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9SZXNvdXJjZVNp
ZGViYXJQYW5lbC5qcwppbmRleCA5N2JmMzlmLi5jNDJlN2UxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9SZXNvdXJjZVNpZGViYXJQYW5lbC5qcworKysg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9SZXNvdXJjZVNpZGViYXJQYW5l
bC5qcwpAQCAtNjEwLDYgKzYxMCwxMyBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VTaWRlYmFyUGFu
ZWwucHJvdG90eXBlID0gewogCiAgICAgX3RyZWVFbGVtZW50U2VsZWN0ZWQ6IGZ1bmN0aW9uKHRy
ZWVFbGVtZW50LCBzZWxlY3RlZEJ5VXNlcikKICAgICB7CisgICAgICAgIGlmICh0cmVlRWxlbWVu
dCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5Db250ZW50Rmxvd1RyZWVFbGVtZW50KSB7CisgICAg
ICAgICAgICAvLyBGSVhNRTogSW1wbGVtZW50IERPTSB0cmVlIGluc3BlY3RvciBmb3IgY29udGVu
dCBmbG93IHRyZWUgZWxlbWVudHMuCisgICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIyOTI3CisgICAgICAgICAgICBjb25zb2xlLmxvZygiQ29u
dGVudCBGbG93IHZpZXcgbm90IGltcGxlbWVudGVkIik7CisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KKwogICAgICAgICBpZiAodHJlZUVsZW1lbnQgaW5zdGFuY2VvZiBXZWJJbnNwZWN0
b3IuRm9sZGVyVHJlZUVsZW1lbnQpCiAgICAgICAgICAgICByZXR1cm47CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>214407</attachid>
            <date>2013-10-16 17:13:43 -0700</date>
            <delta_ts>2013-10-17 10:54:07 -0700</delta_ts>
            <desc>Patch V2</desc>
            <filename>bug122924_v2.patch</filename>
            <type>text/plain</type>
            <size>32783</size>
            <attacher name="Alexandru Chiculita">achicu</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IDg0N2RjOGIuLjBhZTQzNmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY2IEBACisyMDEzLTEwLTE2ICBBbGV4YW5kcnUgQ2hp
Y3VsaXRhICA8YWNoaWN1QGFkb2JlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBDU1Mg
UmVnaW9uczogQWRkIHRoZSBsaXN0IG9mIGZsb3dzIGluIHRoZSBGcmFtZVRyZWVFbGVtZW50Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjI5MjQKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBjb2Rl
IHRvIGNvbGxlY3QgdGhlIGZsb3dzIGZyb20gdGhlIGJhY2tlbmQgaW50byB0aGUgRE9NVHJlZSBv
YmplY3QKKyAgICAgICAgb24gdGhlIGZyb250ZW5kLiBBZGRlZCBDb250ZW50RmxvdyB0byByZXBy
ZXNlbnQgdGhlIGZsb3dzIG9uIHRoZSBmcm9udGVuZAorICAgICAgICBzaWRlIGFuZCBjcmVhdGVk
IENvbnRlbnRGbG93VHJlZUVsZW1lbnQgdG8gZGlzcGxheSB0aGUgZmxvd3MgaW4gdGhlIEZyYW1l
VHJlZUVsZW1lbnQuCisKKyAgICAgICAgKiBMb2NhbGl6YXRpb25zL2VuLmxwcm9qL2xvY2FsaXpl
ZFN0cmluZ3MuanM6CisgICAgICAgICogVXNlckludGVyZmFjZS9DU1NPYnNlcnZlci5qczoKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5DU1NPYnNlcnZlci5wcm90b3R5cGUubmFtZWRGbG93Q3JlYXRl
ZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTT2JzZXJ2ZXIucHJvdG90eXBlLm5hbWVkRmxv
d1JlbW92ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU09ic2VydmVyLnByb3RvdHlwZS5y
ZWdpb25MYXlvdXRVcGRhdGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NPYnNlcnZlci5w
cm90b3R5cGUucmVnaW9uT3ZlcnNldENoYW5nZWQpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2Uv
Q29udGVudEZsb3cuanM6IEFkZGVkLgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbnRlbnRGbG93
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db250ZW50Rmxvdy5oYXNoS2V5KToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5Db250ZW50Rmxvdy5wcm90b3R5cGUuX2RpZmZGbG93Q2hhbmdlcyk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuQ29udGVudEZsb3cucHJvdG90eXBlLl9sb2FkRnJvbUpTT04p
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbnRlbnRGbG93LnByb3RvdHlwZS51cGRhdGUpOgor
ICAgICAgICAqIFVzZXJJbnRlcmZhY2UvQ29udGVudEZsb3dJY29uLmNzczogQWRkZWQuCisgICAg
ICAgICguY29udGVudC1mbG93LWljb24gLmljb24pOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2Uv
Q29udGVudEZsb3dUcmVlRWxlbWVudC5qczogQWRkZWQuCisgICAgICAgIChXZWJJbnNwZWN0b3Iu
Q29udGVudEZsb3dUcmVlRWxlbWVudCk6CisgICAgICAgICogVXNlckludGVyZmFjZS9ET01UcmVl
LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTVRyZWUpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkRPTVRyZWUucHJvdG90eXBlLmdldCBmbG93cyk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
RE9NVHJlZS5wcm90b3R5cGUuZ2V0IGZsb3dzQ291bnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkRPTVRyZWUucHJvdG90eXBlLl9mcmFtZVBhZ2VFeGVjdXRpb25Db250ZXh0Q2hhbmdlZCk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuRE9NVHJlZS5wcm90b3R5cGUucmVxdWVzdEZsb3dMaXN0KToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5ET01UcmVlLnByb3RvdHlwZS5faXNGbG93SW5DdXJyZW50
RG9jdW1lbnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTVRyZWUucHJvdG90eXBlLl9mbG93
TGlzdFdhc1VwZGF0ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTVRyZWUucHJvdG90eXBl
Ll9mbG93V2FzQWRkZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTVRyZWUucHJvdG90eXBl
Ll9mbG93V2FzUmVtb3ZkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5ET01UcmVlLnByb3RvdHlw
ZS5fZmxvd1dhc0NoYW5nZWQpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvRE9NVHJlZU1hbmFn
ZXIuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRE9NVHJlZU1hbmFnZXIucHJvdG90eXBlLmdl
dE5hbWVkRmxvd0NvbGxlY3Rpb24pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTVRyZWVNYW5h
Z2VyLnByb3RvdHlwZS5uYW1lZEZsb3dDcmVhdGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5E
T01UcmVlTWFuYWdlci5wcm90b3R5cGUubmFtZWRGbG93UmVtb3ZlZCk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuRE9NVHJlZU1hbmFnZXIucHJvdG90eXBlLnJlZ2lvbkxheW91dFVwZGF0ZWQpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTVRyZWVNYW5hZ2VyLnByb3RvdHlwZS5yZWdpb25PdmVy
c2V0Q2hhbmdlZCk6CisgICAgICAgICogVXNlckludGVyZmFjZS9GcmFtZVRyZWVFbGVtZW50Lmpz
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkZyYW1lVHJlZUVsZW1lbnQpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLkZyYW1lVHJlZUVsZW1lbnQucHJvdG90eXBlLm9ucG9wdWxhdGUpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLkZyYW1lVHJlZUVsZW1lbnQucHJvdG90eXBlLm9uZXhwYW5kKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5GcmFtZVRyZWVFbGVtZW50LnByb3RvdHlwZS5fY2hpbGRGbG93
V2FzQWRkZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkZyYW1lVHJlZUVsZW1lbnQucHJvdG90
eXBlLl9jaGlsZEZsb3dXYXNSZW1vdmVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5GcmFtZVRy
ZWVFbGVtZW50LnByb3RvdHlwZS5fcm9vdERPTU5vZGVJbnZhbGlkYXRlZCk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuRnJhbWVUcmVlRWxlbWVudC5wcm90b3R5cGUuX2FkZENoaWxkRm9yUmVwcmVz
ZW50ZWRPYmplY3QpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkZyYW1lVHJlZUVsZW1lbnQucHJv
dG90eXBlLl9yZW1vdmVDaGlsZEZvclJlcHJlc2VudGVkT2JqZWN0KToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5GcmFtZVRyZWVFbGVtZW50LnByb3RvdHlwZS5fYWRkVHJlZUVsZW1lbnRGb3JSZXBy
ZXNlbnRlZE9iamVjdCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRnJhbWVUcmVlRWxlbWVudC5w
cm90b3R5cGUuX2NvbXBhcmVSZXNvdXJjZVRyZWVFbGVtZW50cyk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuRnJhbWVUcmVlRWxlbWVudC5wcm90b3R5cGUuX2luc2VydFJlc291cmNlVHJlZUVsZW1l
bnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkZyYW1lVHJlZUVsZW1lbnQucHJvdG90eXBlLl9w
YXJlbnRUcmVlRWxlbWVudEZvclJlcHJlc2VudGVkT2JqZWN0KToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5GcmFtZVRyZWVFbGVtZW50LnByb3RvdHlwZS5fc2hvdWxkR3JvdXBJbnRvRm9sZGVycyk6
CisgICAgICAgICogVXNlckludGVyZmFjZS9JbWFnZXMvQ29udGVudEZsb3cuc3ZnOiBBZGRlZC4K
KyAgICAgICAgKiBVc2VySW50ZXJmYWNlL01haW4uaHRtbDoKKyAgICAgICAgKiBVc2VySW50ZXJm
YWNlL1Jlc291cmNlU2lkZWJhclBhbmVsLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291
cmNlU2lkZWJhclBhbmVsLnByb3RvdHlwZS5fdHJlZUVsZW1lbnRTZWxlY3RlZCk6CisKIDIwMTMt
MTAtMTUgIEFudG9pbmUgUXVpbnQgIDxncmFvdXRzQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIg
SW5zcGVjdG9yOiBjYW4ndCBzZWxlY3QgdGV4dCBpbnNpZGUgYSB0ZXh0IG5vZGUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Mb2NhbGl6YXRpb25zL2VuLmxwcm9qL2xvY2FsaXpl
ZFN0cmluZ3MuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvTG9jYWxpemF0aW9ucy9lbi5scHJv
ai9sb2NhbGl6ZWRTdHJpbmdzLmpzCmluZGV4IGJjYjg3MzkuLjM5MDRlZGMgMTAwNjQ0CkJpbmFy
eSBmaWxlcyBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Mb2NhbGl6YXRpb25zL2VuLmxwcm9qL2xv
Y2FsaXplZFN0cmluZ3MuanMgYW5kIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0xvY2FsaXphdGlv
bnMvZW4ubHByb2ovbG9jYWxpemVkU3RyaW5ncy5qcyBkaWZmZXIKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NTU09ic2VydmVyLmpzIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ1NTT2JzZXJ2ZXIuanMKaW5kZXggY2QwNjZkMS4u
NTVmMzQ0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Q1NTT2JzZXJ2ZXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Q1NTT2JzZXJ2ZXIuanMKQEAgLTU1LDE3ICs1NSwyMiBAQCBXZWJJbnNwZWN0b3IuQ1NTT2JzZXJ2
ZXIucHJvdG90eXBlID0gewogCiAgICAgbmFtZWRGbG93Q3JlYXRlZDogZnVuY3Rpb24obmFtZWRG
bG93KQogICAgIHsKLSAgICAgICAgLy8gRklYTUU6IE5vdCBpbXBsZW1lbnRlZC4KKyAgICAgICAg
V2ViSW5zcGVjdG9yLmRvbVRyZWVNYW5hZ2VyLm5hbWVkRmxvd0NyZWF0ZWQobmFtZWRGbG93KTsK
ICAgICB9LAogCiAgICAgbmFtZWRGbG93UmVtb3ZlZDogZnVuY3Rpb24oZG9jdW1lbnROb2RlSWQs
IGZsb3dOYW1lKQogICAgIHsKLSAgICAgICAgLy8gRklYTUU6IE5vdCBpbXBsZW1lbnRlZC4KKyAg
ICAgICAgV2ViSW5zcGVjdG9yLmRvbVRyZWVNYW5hZ2VyLm5hbWVkRmxvd1JlbW92ZWQoZG9jdW1l
bnROb2RlSWQsIGZsb3dOYW1lKTsKICAgICB9LAogCiAgICAgcmVnaW9uTGF5b3V0VXBkYXRlZDog
ZnVuY3Rpb24obmFtZWRGbG93KQogICAgIHsKLSAgICAgICAgLy8gRklYTUU6IE5vdCBpbXBsZW1l
bnRlZC4KKyAgICAgICAgV2ViSW5zcGVjdG9yLmRvbVRyZWVNYW5hZ2VyLnJlZ2lvbkxheW91dFVw
ZGF0ZWQobmFtZWRGbG93KTsKKyAgICB9LAorCisgICAgcmVnaW9uT3ZlcnNldENoYW5nZWQ6IGZ1
bmN0aW9uKG5hbWVkRmxvdykKKyAgICB7CisgICAgICAgIFdlYkluc3BlY3Rvci5kb21UcmVlTWFu
YWdlci5yZWdpb25PdmVyc2V0Q2hhbmdlZChuYW1lZEZsb3cpOwogICAgIH0KIH07CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRlbnRGbG93Lmpz
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udGVudEZsb3cuanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzhlZDAyYgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRlbnRGbG93LmpzCkBA
IC0wLDAgKzEsMTA3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFkb2JlIFN5c3RlbXMg
SW5jb3Jwb3JhdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUKKyAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisgKiAgICBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQorICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcKKyAqICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscworICogICAgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICogCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xE
RVIgQkUKKyAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwKKyAqIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IKKyAq
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRgorICogVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GCisgKiBTVUNIIERBTUFHRS4KKyAqLworCitXZWJJbnNwZWN0
b3IuQ29udGVudEZsb3cgPSBmdW5jdGlvbihkYXRhKQoreworICAgIHRoaXMuX2xvYWRGcm9tSlNP
TihkYXRhKTsKK307CisKK1dlYkluc3BlY3Rvci5Db250ZW50Rmxvdy5FdmVudCA9IHsKKyAgICBP
dmVyc2V0V2FzQ2hhbmdlZDogImNvbnRlbnQtZmxvdy1vdmVyc2V0LXdhcy1jaGFuZ2VkIiwKKyAg
ICBDb250ZW50V2FzQ2hhbmdlZDogImNvbnRlbnQtZmxvdy1jb250ZW50LXdhcy1jaGFuZ2VkIiwK
KyAgICBSZWdpb25DaGFpbldhc0NoYW5nZWQ6ICJjb250ZW50LWZsb3ctcmVnaW9uLWNoYWluLXdh
cy1jaGFuZ2VkIiwKK307CisKK1dlYkluc3BlY3Rvci5Db250ZW50Rmxvdy5oYXNoS2V5ID0gZnVu
Y3Rpb24oZmxvdykKK3sKKyAgICAvLyBVc2UgdGhlIGZsb3cgbm9kZSBpZCwgdG8gYXZvaWQgY29s
bGlzaW9ucyB3aGVuIHdlIGNoYW5nZSBtYWluIGRvY3VtZW50IGlkLgorICAgIHJldHVybiBmbG93
LmRvY3VtZW50Tm9kZUlkICsgIjoiICsgZmxvdy5uYW1lOworfTsKKworV2ViSW5zcGVjdG9yLkNv
bnRlbnRGbG93LnByb3RvdHlwZSA9IHsKKworICAgIF9kaWZmRmxvd0NoYW5nZXM6IGZ1bmN0aW9u
KG90aGVyKQorICAgIHsKKyAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5uYW1lID09PSBvdGhl
ci5uYW1lKTsKKworICAgICAgICB2YXIgZGlmZiA9IHsKKyAgICAgICAgICAgIGZsb3dPdmVyc2V0
OiB0aGlzLm92ZXJzZXQgIT09IG90aGVyLm92ZXJzZXQsCisgICAgICAgICAgICBjb250ZW50OiB0
aGlzLmNvbnRlbnQubGVuZ3RoICE9PSBvdGhlci5jb250ZW50Lmxlbmd0aCwKKyAgICAgICAgICAg
IHJlZ2lvbnM6IHRoaXMucmVnaW9ucy5sZW5ndGggIT09IG90aGVyLnJlZ2lvbnMubGVuZ3RoCisg
ICAgICAgIH07CisKKyAgICAgICAgaWYgKCFkaWZmLmNvbnRlbnQpIHsKKyAgICAgICAgICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgdGhpcy5jb250ZW50Lmxlbmd0aDsgKytpKSB7CisgICAgICAgICAg
ICAgICAgaWYgKHRoaXMuY29udGVudFtpXSAhPT0gb3RoZXIuY29udGVudFtpXSkgeworICAgICAg
ICAgICAgICAgICAgICBkaWZmLmNvbnRlbnQgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAg
ICAgICBpZiAoIWRpZmYucmVnaW9ucykgeworICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkg
PCB0aGlzLnJlZ2lvbnMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgICAgICB2YXIgY3VycmVu
dFJlZ2lvbiA9IHRoaXMucmVnaW9uc1tpXTsKKyAgICAgICAgICAgICAgICB2YXIgbmV3UmVnaW9u
ID0gb3RoZXIucmVnaW9uc1tpXTsKKyAgICAgICAgICAgICAgICBpZiAoY3VycmVudFJlZ2lvbi5u
b2RlSWQgIT09IG5ld1JlZ2lvbi5ub2RlSWQKKyAgICAgICAgICAgICAgICAgICAgfHwgY3VycmVu
dFJlZ2lvbi5yZWdpb25PdmVyc2V0ICE9PSBuZXdSZWdpb24ucmVnaW9uT3ZlcnNldCkgeworICAg
ICAgICAgICAgICAgICAgICBkaWZmLnJlZ2lvbnMgPSB0cnVlOworICAgICAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKwor
ICAgICAgICByZXR1cm4gZGlmZjsKKyAgICB9LAorCisgICAgX2xvYWRGcm9tSlNPTjogZnVuY3Rp
b24oZGF0YSkKKyAgICB7CisgICAgICAgIHRoaXMubmFtZSA9IGRhdGEubmFtZTsKKyAgICAgICAg
dGhpcy5vdmVyc2V0ID0gZGF0YS5vdmVyc2V0OworICAgICAgICB0aGlzLnJlZ2lvbnMgPSBkYXRh
LnJlZ2lvbnM7CisgICAgICAgIHRoaXMuY29udGVudCA9IGRhdGEuY29udGVudDsKKyAgICB9LAor
CisgICAgdXBkYXRlOiBmdW5jdGlvbihkYXRhKQorICAgIHsKKyAgICAgICAgdmFyIGRpZmYgPSB0
aGlzLl9kaWZmRmxvd0NoYW5nZXMoZGF0YSk7CisgICAgICAgIHRoaXMuX2xvYWRGcm9tSlNPTihk
YXRhKTsKKworICAgICAgICBpZiAoZmxvdy5kaWZmLm92ZXJzZXQpCisgICAgICAgICAgICB0aGlz
LmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuQ29udGVudEZsb3cuRXZlbnQu
Rmxvd092ZXJzZXRXYXNDaGFuZ2VkKTsKKyAgICAgICAgaWYgKGZsb3cuZGlmZi5jb250ZW50KQor
ICAgICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkNv
bnRlbnRGbG93LkV2ZW50LkZsb3dDb250ZW50V2FzQ2hhbmdlZCk7CisgICAgICAgIGlmIChmbG93
LmRpZmYucmVnaW9ucykKKyAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJz
KFdlYkluc3BlY3Rvci5Db250ZW50Rmxvdy5FdmVudC5GbG93UmVnaW9uc1dhc0NoYW5nZWQpOwor
ICAgIH0KKworfTsKKworCitXZWJJbnNwZWN0b3IuQ29udGVudEZsb3cucHJvdG90eXBlLl9fcHJv
dG9fXyA9IFdlYkluc3BlY3Rvci5PYmplY3QucHJvdG90eXBlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udGVudEZsb3dJY29uLmNzcyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRlbnRGbG93SWNvbi5jc3MKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjI2ZTc2NgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRlbnRGbG93SWNvbi5jc3MK
QEAgLTAsMCArMSwzMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBZG9iZSBTeXN0ZW1z
IEluY29ycG9yYXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlCisgKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworICogICAgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKKyAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nCisgKiAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMKKyAqICAgIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqIAorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUiAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9M
REVSIEJFCisgKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksCisgKiBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SCisg
KiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YKKyAqIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRgorICogU1VDSCBEQU1BR0UuCisgKi8KKworLmNvbnRlbnQt
Zmxvdy1pY29uIC5pY29uIHsKKyAgICBjb250ZW50OiB1cmwoSW1hZ2VzL0NvbnRlbnRGbG93LnN2
Zyk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9D
b250ZW50Rmxvd1RyZWVFbGVtZW50LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvQ29udGVudEZsb3dUcmVlRWxlbWVudC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi43NjZmZjdlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvQ29udGVudEZsb3dUcmVlRWxlbWVudC5qcwpAQCAtMCwwICsxLDQ0
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFkb2JlIFN5c3RlbXMgSW5jb3Jwb3JhdGVk
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUKKyAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisgKiAgICBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICog
ICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcKKyAqICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscworICogICAgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSICJBUyBJ
UyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgQkUKKyAqIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwKKyAqIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IKKyAqIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRgor
ICogVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GCisgKiBTVUNIIERBTUFHRS4KKyAqLworCitXZWJJbnNwZWN0b3IuQ29udGVudEZs
b3dUcmVlRWxlbWVudCA9IGZ1bmN0aW9uKHJlcHJlc2VudGVkT2JqZWN0KQoreworICAgIGNvbnNv
bGUuYXNzZXJ0KHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkNvbnRl
bnRGbG93KTsKKyAgICBXZWJJbnNwZWN0b3IuR2VuZXJhbFRyZWVFbGVtZW50LmNhbGwodGhpcywg
W1dlYkluc3BlY3Rvci5Db250ZW50Rmxvd1RyZWVFbGVtZW50LlN0eWxlQ2xhc3NOYW1lLCBXZWJJ
bnNwZWN0b3IuQ29udGVudEZsb3dUcmVlRWxlbWVudC5Db250ZW50Rmxvd0ljb25TdHlsZUNsYXNz
TmFtZV0sIHJlcHJlc2VudGVkT2JqZWN0Lm5hbWUsIG51bGwsIHJlcHJlc2VudGVkT2JqZWN0LCBm
YWxzZSk7CisKKyAgICB0aGlzLnNtYWxsID0gdHJ1ZTsKK307CisKK1dlYkluc3BlY3Rvci5Db250
ZW50Rmxvd1RyZWVFbGVtZW50LkNvbnRlbnRGbG93SWNvblN0eWxlQ2xhc3NOYW1lID0gImNvbnRl
bnQtZmxvdy1pY29uIjsKKworV2ViSW5zcGVjdG9yLkNvbnRlbnRGbG93VHJlZUVsZW1lbnQucHJv
dG90eXBlID0geworICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuQ29udGVudEZsb3dUcmVl
RWxlbWVudAorfTsKKworV2ViSW5zcGVjdG9yLkNvbnRlbnRGbG93VHJlZUVsZW1lbnQucHJvdG90
eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5HZW5lcmFsVHJlZUVsZW1lbnQucHJvdG90eXBl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvRE9NVHJl
ZS5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0RPTVRyZWUuanMKaW5k
ZXggNzgzZTk3ZC4uMzU3OGIxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvRE9NVHJlZS5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9ET01UcmVlLmpzCkBAIC0zMSw2ICszMSw4IEBAIFdlYkluc3BlY3Rvci5ET01UcmVl
ID0gZnVuY3Rpb24oZnJhbWUpCiAKICAgICB0aGlzLl9yb290RE9NTm9kZSA9IG51bGw7CiAgICAg
dGhpcy5fcmVxdWVzdElkZW50aWZpZXIgPSAwOworICAgIHRoaXMuX2Zsb3dzID0ge307CisgICAg
dGhpcy5fZmxvd3NDb3VudCA9IDA7CiAKICAgICB0aGlzLl9mcmFtZS5hZGRFdmVudExpc3RlbmVy
KFdlYkluc3BlY3Rvci5GcmFtZS5FdmVudC5QYWdlRXhlY3V0aW9uQ29udGV4dENoYW5nZWQsIHRo
aXMuX2ZyYW1lUGFnZUV4ZWN1dGlvbkNvbnRleHRDaGFuZ2VkLCB0aGlzKTsKIApAQCAtNDEsMTIg
KzQzLDIwIEBAIFdlYkluc3BlY3Rvci5ET01UcmVlID0gZnVuY3Rpb24oZnJhbWUpCiAgICAgICAg
IFdlYkluc3BlY3Rvci5kb21UcmVlTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rv
ci5ET01UcmVlTWFuYWdlci5FdmVudC5Ob2RlUmVtb3ZlZCwgdGhpcy5fbm9kZVJlbW92ZWQsIHRo
aXMpOwogICAgICAgICB0aGlzLl9mcmFtZS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5G
cmFtZS5FdmVudC5NYWluUmVzb3VyY2VEaWRDaGFuZ2UsIHRoaXMuX2ZyYW1lTWFpblJlc291cmNl
RGlkQ2hhbmdlLCB0aGlzKTsKICAgICB9CisKKyAgICBXZWJJbnNwZWN0b3IuZG9tVHJlZU1hbmFn
ZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRE9NVHJlZU1hbmFnZXIuRXZlbnQuRmxv
d0xpc3RXYXNVcGRhdGVkLCB0aGlzLl9mbG93TGlzdFdhc1VwZGF0ZWQsIHRoaXMpOworICAgIFdl
Ykluc3BlY3Rvci5kb21UcmVlTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5E
T01UcmVlTWFuYWdlci5FdmVudC5GbG93V2FzQWRkZWQsIHRoaXMuX2Zsb3dXYXNBZGRlZCwgdGhp
cyk7CisgICAgV2ViSW5zcGVjdG9yLmRvbVRyZWVNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV2Vi
SW5zcGVjdG9yLkRPTVRyZWVNYW5hZ2VyLkV2ZW50LkZsb3dXYXNSZW1vdmVkLCB0aGlzLl9mbG93
V2FzUmVtb3ZkLCB0aGlzKTsKKyAgICBXZWJJbnNwZWN0b3IuZG9tVHJlZU1hbmFnZXIuYWRkRXZl
bnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRE9NVHJlZU1hbmFnZXIuRXZlbnQuUmVnaW9uTGF5b3V0
VXBkYXRlZCwgdGhpcy5fZmxvd1dhc0NoYW5nZWQsIHRoaXMpOworICAgIFdlYkluc3BlY3Rvci5k
b21UcmVlTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5ET01UcmVlTWFuYWdl
ci5FdmVudC5SZWdpb25PdmVyc2V0Q2hhbmdlZCwgdGhpcy5fZmxvd1dhc0NoYW5nZWQsIHRoaXMp
OwogfTsKIAogV2ViSW5zcGVjdG9yLk9iamVjdC5hZGRDb25zdHJ1Y3RvckZ1bmN0aW9ucyhXZWJJ
bnNwZWN0b3IuRE9NVHJlZSk7CiAKIFdlYkluc3BlY3Rvci5ET01UcmVlLkV2ZW50ID0gewotICAg
IFJvb3RET01Ob2RlSW52YWxpZGF0ZWQ6ICJkb20tdHJlZS1yb290LWRvbS1ub2RlLWludmFsaWRh
dGVkIgorICAgIFJvb3RET01Ob2RlSW52YWxpZGF0ZWQ6ICJkb20tdHJlZS1yb290LWRvbS1ub2Rl
LWludmFsaWRhdGVkIiwKKyAgICBGbG93V2FzQWRkZWQ6ICJkb20tdHJlZS1mbG93LXdhcy1hZGRl
ZCIsCisgICAgRmxvd1dhc1JlbW92ZWQ6ICJkb20tdHJlZS1mbG93LXdhcy1yZW1vdmVkIgogfTsK
IAogV2ViSW5zcGVjdG9yLkRPTVRyZWUucHJvdG90eXBlID0gewpAQCAtNTksNiArNjksMTYgQEAg
V2ViSW5zcGVjdG9yLkRPTVRyZWUucHJvdG90eXBlID0gewogICAgICAgICByZXR1cm4gdGhpcy5f
ZnJhbWU7CiAgICAgfSwKIAorICAgIGdldCBmbG93cygpCisgICAgeworICAgICAgICByZXR1cm4g
dGhpcy5fZmxvd3M7CisgICAgfSwKKworICAgIGdldCBmbG93c0NvdW50KCkKKyAgICB7CisgICAg
ICAgIHJldHVybiB0aGlzLl9mbG93c0NvdW50OworICAgIH0sCisKICAgICBpbnZhbGlkYXRlOiBm
dW5jdGlvbigpCiAgICAgewogICAgICAgICAvLyBTZXQgdG8gbnVsbCBzbyBpdCBpcyBmZXRjaGVk
IGFnYWluIG5leHQgdGltZSByZXF1ZXN0Um9vdERPTU5vZGUgaXMgY2FsbGVkLgpAQCAtMjMwLDYg
KzI1MCwxMTIgQEAgV2ViSW5zcGVjdG9yLkRPTVRyZWUucHJvdG90eXBlID0gewogCiAgICAgICAg
ICAgICB0aGlzLl9yZXF1ZXN0Um9vdERPTU5vZGUoKTsKICAgICAgICAgfQorICAgIH0sCisKKyAg
ICByZXF1ZXN0Rmxvd0xpc3Q6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIGZ1bmN0aW9uIHVw
ZGF0ZUZsb3dMaXN0KHJvb3ROb2RlKQorICAgICAgICB7CisgICAgICAgICAgICAvLyBMZXQgdGhl
IGJhY2tlbmQga25vdyB3ZSBhcmUgaW50ZXJlc3RlZCBhYm91dCB0aGUgbmFtZWQgZmxvdyBldmVu
dHMgZm9yIHRoaXMgZG9jdW1lbnQuCisgICAgICAgICAgICBXZWJJbnNwZWN0b3IuZG9tVHJlZU1h
bmFnZXIuZ2V0TmFtZWRGbG93Q29sbGVjdGlvbihyb290Tm9kZS5pZCk7CisgICAgICAgIH0KKyAg
ICAgICAgdGhpcy5yZXF1ZXN0Um9vdERPTU5vZGUodXBkYXRlRmxvd0xpc3QpOworICAgIH0sCisK
KyAgICBfaXNGbG93SW5DdXJyZW50RG9jdW1lbnQ6IGZ1bmN0aW9uKGZsb3cpCisgICAgeworICAg
ICAgICByZXR1cm4gdGhpcy5fcm9vdERPTU5vZGUgJiYgKGZsb3cuZG9jdW1lbnROb2RlSWQgPT09
IHRoaXMuX3Jvb3RET01Ob2RlLmlkKTsKKyAgICB9LAorCisgICAgX2Zsb3dMaXN0V2FzVXBkYXRl
ZDogZnVuY3Rpb24oZXZlbnQpCisgICAgeworICAgICAgICBpZiAoIXRoaXMuX3Jvb3RET01Ob2Rl
IHx8IHRoaXMuX3Jvb3RET01Ob2RlLmlkICE9PSBldmVudC5kYXRhLmRvY3VtZW50Tm9kZUlkKQor
ICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIC8vIEFzc3VtZSB0aGF0IGFsbCB0aGUgZmxv
d3MgaGF2ZSBiZWVuIHJlbW92ZWQuCisgICAgICAgIHZhciBkZWxldGVkRmxvd3MgPSB7fTsKKyAg
ICAgICAgZm9yICh2YXIgZmxvd0tleSBpbiB0aGlzLl9mbG93cykKKyAgICAgICAgICAgIGRlbGV0
ZWRGbG93c1tmbG93S2V5XSA9IHRoaXMuX2Zsb3dzW2Zsb3dLZXldOworCisgICAgICAgIHZhciBu
ZXdGbG93cyA9IFtdOworCisgICAgICAgIHZhciBmbG93cyA9IGV2ZW50LmRhdGEuZmxvd3M7Cisg
ICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZmxvd3MubGVuZ3RoOyArK2kpIHsKKyAgICAgICAg
ICAgIHZhciBmbG93ID0gZmxvd3NbaV07CisgICAgICAgICAgICAvLyBBbGwgdGhlIGZsb3dzIHJl
Y2VpdmVkIGZyb20gV2ViS2l0IGFyZSBwYXJ0IG9mIHRoZSBzYW1lIGRvY3VtZW50LgorICAgICAg
ICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5faXNGbG93SW5DdXJyZW50RG9jdW1lbnQoZmxvdykp
OworCisgICAgICAgICAgICB2YXIgZmxvd0tleSA9IFdlYkluc3BlY3Rvci5Db250ZW50Rmxvdy5o
YXNoS2V5KGZsb3cpOworICAgICAgICAgICAgaWYgKHRoaXMuX2Zsb3dzLmhhc093blByb3BlcnR5
KGZsb3dLZXkpKSB7CisgICAgICAgICAgICAgICAgLy8gUmVtb3ZlIHRoZSBmbG93IG5hbWUgZnJv
bSB0aGUgZGVsZXRlZCBsaXN0LgorICAgICAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGRlbGV0
ZWRGbG93cy5oYXNPd25Qcm9wZXJ0eShmbG93S2V5KSk7CisgICAgICAgICAgICAgICAgZGVsZXRl
IGRlbGV0ZWRGbG93c1tmbG93S2V5XTsKKyAgICAgICAgICAgICAgICB0aGlzLl9mbG93c1tmbG93
S2V5XS51cGRhdGUoZmxvdyk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAg
IHZhciBjb250ZW50RmxvdyA9IG5ldyBXZWJJbnNwZWN0b3IuQ29udGVudEZsb3coZmxvdyk7Cisg
ICAgICAgICAgICAgICAgdGhpcy5fZmxvd3NbZmxvd0tleV0gPSBjb250ZW50RmxvdzsKKyAgICAg
ICAgICAgICAgICBuZXdGbG93cy5wdXNoKGNvbnRlbnRGbG93KTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorCisgICAgICAgIGZvciAodmFyIGZsb3dLZXkgaW4gZGVsZXRlZEZsb3dzKSB7Cisg
ICAgICAgICAgICAtLXRoaXMuX2Zsb3dzQ291bnQ7CisgICAgICAgICAgICBkZWxldGUgdGhpcy5f
Zmxvd3NbZmxvd0tleV07CisgICAgICAgIH0KKyAgICAgICAgdGhpcy5fZmxvd3NDb3VudCArPSBu
ZXdGbG93cy5sZW5ndGg7CisKKyAgICAgICAgLy8gU2VuZCB1cGRhdGUgZXZlbnRzIHRvIGxpc3Rl
bmVycy4KKworICAgICAgICBmb3IgKHZhciBmbG93S2V5IGluIGRlbGV0ZWRGbG93cykKKyAgICAg
ICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5ET01UcmVl
LkV2ZW50LkZsb3dXYXNSZW1vdmVkLCB7IGZsb3c6IGRlbGV0ZWRGbG93c1tmbG93S2V5XSB9KTsK
KworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5ld0Zsb3dzLmxlbmd0aDsgKytpKQorICAg
ICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkRPTVRy
ZWUuRXZlbnQuRmxvd1dhc0FkZGVkLCB7IGZsb3c6IG5ld0Zsb3dzW2ldIH0pOworICAgIH0sCisK
KyAgICBfZmxvd1dhc0FkZGVkOiBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAgICAgIHZhciBm
bG93ID0gZXZlbnQuZGF0YS5mbG93OworICAgICAgICBpZiAoIXRoaXMuX2lzRmxvd0luQ3VycmVu
dERvY3VtZW50KGZsb3cpKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHZhciBmbG93
S2V5ID0gV2ViSW5zcGVjdG9yLkNvbnRlbnRGbG93Lmhhc2hLZXkoZmxvdyk7CisgICAgICAgIGNv
bnNvbGUuYXNzZXJ0KCF0aGlzLl9mbG93cy5oYXNPd25Qcm9wZXJ0eShmbG93S2V5KSk7CisgICAg
ICAgIAorICAgICAgICB2YXIgY29udGVudEZsb3cgPSBuZXcgV2ViSW5zcGVjdG9yLkNvbnRlbnRG
bG93KGZsb3cpOworICAgICAgICB0aGlzLl9mbG93c1tmbG93S2V5XSA9IGNvbnRlbnRGbG93Owor
CisgICAgICAgICsrdGhpcy5fZmxvd3NDb3VudDsKKworICAgICAgICB0aGlzLmRpc3BhdGNoRXZl
bnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuRE9NVHJlZS5FdmVudC5GbG93V2FzQWRkZWQsIHsg
ZmxvdzogY29udGVudEZsb3cgfSk7CisgICAgfSwKKworICAgIF9mbG93V2FzUmVtb3ZkOiBmdW5j
dGlvbihldmVudCkKKyAgICB7CisgICAgICAgIHZhciBmbG93ID0gZXZlbnQuZGF0YS5mbG93Owor
ICAgICAgICBpZiAoIXRoaXMuX2lzRmxvd0luQ3VycmVudERvY3VtZW50KGZsb3cpKQorICAgICAg
ICAgICAgcmV0dXJuOworCisgICAgICAgIHZhciBmbG93S2V5ID0gV2ViSW5zcGVjdG9yLkNvbnRl
bnRGbG93Lmhhc2hLZXkoZmxvdyk7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX2Zsb3dz
Lmhhc093blByb3BlcnR5KGZsb3dLZXkpKTsKKyAgICAgICAgZmxvdyA9IHRoaXMuX2Zsb3dzW2Zs
b3dLZXldOworICAgICAgICBkZWxldGUgdGhpcy5fZmxvd3NbZmxvd0tleV07CisKKyAgICAgICAg
LS10aGlzLl9mbG93c0NvdW50OworCisgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVu
ZXJzKFdlYkluc3BlY3Rvci5ET01UcmVlLkV2ZW50LkZsb3dXYXNSZW1vdmVkLCB7IGZsb3c6IGZs
b3cgfSk7CisgICAgfSwKKworICAgIF9mbG93V2FzQ2hhbmdlZDogZnVuY3Rpb24oZXZlbnQpCisg
ICAgeworICAgICAgICB2YXIgZmxvdyA9IGV2ZW50LmRhdGEuZmxvdzsKKyAgICAgICAgaWYgKCF0
aGlzLl9pc0Zsb3dJbkN1cnJlbnREb2N1bWVudChmbG93KSkKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgCisgICAgICAgIHZhciBmbG93S2V5ID0gV2ViSW5zcGVjdG9yLkNvbnRlbnRGbG93
Lmhhc2hLZXkoZmxvdyk7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX2Zsb3dzLmhhc093
blByb3BlcnR5KGZsb3dLZXkpKTsKKworICAgICAgICB0aGlzLl9mbG93c1tmbG93S2V5XS51cGRh
dGUoZmxvdyk7CiAgICAgfQogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvRE9NVHJlZU1hbmFnZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9ET01UcmVlTWFuYWdlci5qcwppbmRleCA4MTgyNGRiLi44YWI4ZTU0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9ET01UcmVlTWFu
YWdlci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9ET01UcmVl
TWFuYWdlci5qcwpAQCAtNTIsNyArNTIsMTIgQEAgV2ViSW5zcGVjdG9yLkRPTVRyZWVNYW5hZ2Vy
LkV2ZW50ID0gewogICAgIERvY3VtZW50VXBkYXRlZDogImRvbS10cmVlLW1hbmFnZXItZG9jdW1l
bnQtdXBkYXRlZCIsCiAgICAgQ2hpbGROb2RlQ291bnRVcGRhdGVkOiAiZG9tLXRyZWUtbWFuYWdl
ci1jaGlsZC1ub2RlLWNvdW50LXVwZGF0ZWQiLAogICAgIERPTU5vZGVXYXNJbnNwZWN0ZWQ6ICJk
b20tdHJlZS1tYW5hZ2VyLWRvbS1ub2RlLXdhcy1pbnNwZWN0ZWQiLAotICAgIEluc3BlY3RNb2Rl
U3RhdGVDaGFuZ2VkOiAiZG9tLXRyZWUtbWFuYWdlci1pbnNwZWN0LW1vZGUtc3RhdGUtY2hhbmdl
ZCIKKyAgICBJbnNwZWN0TW9kZVN0YXRlQ2hhbmdlZDogImRvbS10cmVlLW1hbmFnZXItaW5zcGVj
dC1tb2RlLXN0YXRlLWNoYW5nZWQiLAorICAgIEZsb3dMaXN0V2FzVXBkYXRlZDogImRvbS10cmVl
LW1hbmFnZXItZmxvdy1saXN0LXdhcy11cGRhdGVkIiwKKyAgICBGbG93V2FzQWRkZWQ6ICJkb20t
dHJlZS1tYW5hZ2VyLWZsb3ctd2FzLWFkZGVkIiwKKyAgICBGbG93V2FzUmVtb3ZlZDogImRvbS10
cmVlLW1hbmFnZXItZmxvdy13YXMtcmVtb3ZlZCIsCisgICAgUmVnaW9uTGF5b3V0VXBkYXRlZDog
ImRvbS10cmVlLW1hbmFnZXItcmVnaW9uLWxheW91dC11cGRhdGVkIiwKKyAgICBSZWdpb25PdmVy
c2V0Q2hhbmdlZDogImRvbS10cmVlLW1hbmFnZXItcmVnaW9uLW92ZXJzZXQtY2hhbmdlZCIKIH07
CiAKIFdlYkluc3BlY3Rvci5ET01UcmVlTWFuYWdlci5wcm90b3R5cGUgPSB7CkBAIC01MTksNiAr
NTI0LDQ2IEBAIFdlYkluc3BlY3Rvci5ET01UcmVlTWFuYWdlci5wcm90b3R5cGUgPSB7CiAgICAg
ICAgICAgICBoaWdobGlnaHRDb25maWcubWFyZ2luQ29sb3IgPSB7cjogMjQ2LCBnOiAxNzgsIGI6
IDEwNywgYTogMC42Nn07CiAKICAgICAgICAgcmV0dXJuIGhpZ2hsaWdodENvbmZpZzsKKyAgICB9
LAorCisgICAgZ2V0TmFtZWRGbG93Q29sbGVjdGlvbjogZnVuY3Rpb24oZG9jdW1lbnROb2RlSWQp
CisgICAgeworICAgICAgICBmdW5jdGlvbiBvbk5hbWVkRmxvd0NvbGxlY3Rpb25BdmFpbGFibGUo
ZXJyb3IsIGZsb3dzKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoZXJyb3IpIHsKKyAgICAg
ICAgICAgICAgICBjb25zb2xlLmVycm9yKCJFcnJvciB3aGlsZSBnZXR0aW5nIHRoZSBuYW1lZCBm
bG93cyBmb3IgZG9jdW1lbnQgIiArIGRvY3VtZW50Tm9kZUlkICsgIjogIiArIGVycm9yKTsKKyAg
ICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICB0aGlzLmRp
c3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuRE9NVHJlZU1hbmFnZXIuRXZlbnQu
Rmxvd0xpc3RXYXNVcGRhdGVkLCB7CisgICAgICAgICAgICAgICAgZG9jdW1lbnROb2RlSWQ6IGRv
Y3VtZW50Tm9kZUlkLAorICAgICAgICAgICAgICAgIGZsb3dzOiBmbG93cworICAgICAgICAgICAg
fSk7CisgICAgICAgIH0KKyAgICAgICAgQ1NTQWdlbnQuZ2V0TmFtZWRGbG93Q29sbGVjdGlvbihk
b2N1bWVudE5vZGVJZCwgb25OYW1lZEZsb3dDb2xsZWN0aW9uQXZhaWxhYmxlLmJpbmQodGhpcykp
OworICAgIH0sCisKKyAgICBuYW1lZEZsb3dDcmVhdGVkOiBmdW5jdGlvbihmbG93KQorICAgIHsK
KyAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkRPTVRy
ZWVNYW5hZ2VyLkV2ZW50LkZsb3dXYXNBZGRlZCwgeyBmbG93OiBmbG93IH0pOworICAgIH0sCisK
KyAgICBuYW1lZEZsb3dSZW1vdmVkOiBmdW5jdGlvbihkb2N1bWVudE5vZGVJZCwgZmxvd05hbWUp
CisgICAgeworICAgICAgICB2YXIgZmxvdyA9IHsKKyAgICAgICAgICAgIGRvY3VtZW50Tm9kZUlk
OiBkb2N1bWVudE5vZGVJZCwKKyAgICAgICAgICAgIG5hbWU6IGZsb3dOYW1lCisgICAgICAgIH07
CisgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5ET01U
cmVlTWFuYWdlci5FdmVudC5GbG93V2FzUmVtb3ZlZCwgeyBmbG93OiBmbG93IH0pOworICAgIH0s
CisKKyAgICByZWdpb25MYXlvdXRVcGRhdGVkOiBmdW5jdGlvbihmbG93KQorICAgIHsKKyAgICAg
ICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkRPTVRyZWVNYW5h
Z2VyLkV2ZW50LlJlZ2lvbkxheW91dFVwZGF0ZWQsIHsgZmxvdzogZmxvdyB9KTsKKyAgICB9LAor
CisgICAgcmVnaW9uT3ZlcnNldENoYW5nZWQ6IGZ1bmN0aW9uKGZsb3cpCisgICAgeworICAgICAg
ICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuRE9NVHJlZU1hbmFn
ZXIuRXZlbnQuUmVnaW9uT3ZlcnNldENoYW5nZWQsIHsgZmxvdzogZmxvdyB9KTsKICAgICB9CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0ZyYW1l
VHJlZUVsZW1lbnQuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9GcmFt
ZVRyZWVFbGVtZW50LmpzCmluZGV4IDQwMjU1YTguLmMyN2FmOWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0ZyYW1lVHJlZUVsZW1lbnQuanMKKysrIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvRnJhbWVUcmVlRWxlbWVudC5qcwpA
QCAtNDAsNiArNDAsMTAgQEAgV2ViSW5zcGVjdG9yLkZyYW1lVHJlZUVsZW1lbnQgPSBmdW5jdGlv
bihmcmFtZSwgcmVwcmVzZW50ZWRPYmplY3QpCiAgICAgZnJhbWUuYWRkRXZlbnRMaXN0ZW5lcihX
ZWJJbnNwZWN0b3IuRnJhbWUuRXZlbnQuQ2hpbGRGcmFtZVdhc0FkZGVkLCB0aGlzLl9jaGlsZEZy
YW1lV2FzQWRkZWQsIHRoaXMpOwogICAgIGZyYW1lLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVj
dG9yLkZyYW1lLkV2ZW50LkNoaWxkRnJhbWVXYXNSZW1vdmVkLCB0aGlzLl9jaGlsZEZyYW1lV2Fz
UmVtb3ZlZCwgdGhpcyk7CiAKKyAgICBmcmFtZS5kb21UcmVlLmFkZEV2ZW50TGlzdGVuZXIoV2Vi
SW5zcGVjdG9yLkRPTVRyZWUuRXZlbnQuRmxvd1dhc0FkZGVkLCB0aGlzLl9jaGlsZEZsb3dXYXNB
ZGRlZCwgdGhpcyk7CisgICAgZnJhbWUuZG9tVHJlZS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3Bl
Y3Rvci5ET01UcmVlLkV2ZW50LkZsb3dXYXNSZW1vdmVkLCB0aGlzLl9jaGlsZEZsb3dXYXNSZW1v
dmVkLCB0aGlzKTsKKyAgICBmcmFtZS5kb21UcmVlLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVj
dG9yLkRPTVRyZWUuRXZlbnQuUm9vdERPTU5vZGVJbnZhbGlkYXRlZCwgdGhpcy5fcm9vdERPTU5v
ZGVJbnZhbGlkYXRlZCwgdGhpcyk7CisKICAgICBpZiAodGhpcy5fZnJhbWUuaXNNYWluRnJhbWUo
KSkgewogICAgICAgICB0aGlzLl9kb3dubG9hZGluZ1BhZ2UgPSBmYWxzZTsKICAgICAgICAgV2Vi
SW5zcGVjdG9yLm5vdGlmaWNhdGlvbnMuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuTm90
aWZpY2F0aW9uLlBhZ2VBcmNoaXZlU3RhcnRlZCwgdGhpcy5fcGFnZUFyY2hpdmVTdGFydGVkLCB0
aGlzKTsKQEAgLTE3NiwxMSArMTgwLDE2IEBAIFdlYkluc3BlY3Rvci5GcmFtZVRyZWVFbGVtZW50
LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgc291cmNlTWFw
LnJlc291cmNlcy5sZW5ndGg7ICsraikKICAgICAgICAgICAgIHRoaXMuX2FkZFRyZWVFbGVtZW50
Rm9yUmVwcmVzZW50ZWRPYmplY3Qoc291cmNlTWFwLnJlc291cmNlc1tqXSk7CiAgICAgICAgIH0K
KworICAgICAgICB2YXIgZmxvd3MgPSB0aGlzLl9mcmFtZS5kb21UcmVlLmZsb3dzOworICAgICAg
ICBmb3IgKHZhciBmbG93S2V5IGluIGZsb3dzKQorICAgICAgICAgICAgdGhpcy5fYWRkVHJlZUVs
ZW1lbnRGb3JSZXByZXNlbnRlZE9iamVjdChmbG93c1tmbG93S2V5XSk7CiAgICAgfSwKIAogICAg
IG9uZXhwYW5kOiBmdW5jdGlvbigpCiAgICAgewogICAgICAgICB0aGlzLl9leHBhbmRlZFNldHRp
bmcudmFsdWUgPSB0cnVlOworICAgICAgICB0aGlzLl9mcmFtZS5kb21UcmVlLnJlcXVlc3RGbG93
TGlzdCgpOwogICAgIH0sCiAKICAgICBvbmNvbGxhcHNlOiBmdW5jdGlvbigpCkBAIC0yNjQsNiAr
MjczLDIxIEBAIFdlYkluc3BlY3Rvci5GcmFtZVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAg
ICAgICAgdGhpcy5fcmVtb3ZlQ2hpbGRGb3JSZXByZXNlbnRlZE9iamVjdChldmVudC5kYXRhLmNo
aWxkRnJhbWUpOwogICAgIH0sCiAKKyAgICBfY2hpbGRGbG93V2FzQWRkZWQ6IGZ1bmN0aW9uKGV2
ZW50KQorICAgIHsKKyAgICAgICAgdGhpcy5fYWRkUmVwcmVzZW50ZWRPYmplY3RUb05ld0NoaWxk
UXVldWUoZXZlbnQuZGF0YS5mbG93KTsKKyAgICB9LAorCisgICAgX2NoaWxkRmxvd1dhc1JlbW92
ZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIHsKKyAgICAgICAgdGhpcy5fcmVtb3ZlQ2hpbGRGb3JS
ZXByZXNlbnRlZE9iamVjdChldmVudC5kYXRhLmZsb3cpOworICAgIH0sCisKKyAgICBfcm9vdERP
TU5vZGVJbnZhbGlkYXRlZDogZnVuY3Rpb24oKSB7CisgICAgICAgIGlmICh0aGlzLmV4cGFuZGVk
KQorICAgICAgICAgICAgdGhpcy5fZnJhbWUuZG9tVHJlZS5yZXF1ZXN0Rmxvd0xpc3QoKTsKKyAg
ICB9LAorCiAgICAgX2FkZFJlcHJlc2VudGVkT2JqZWN0VG9OZXdDaGlsZFF1ZXVlOiBmdW5jdGlv
bihyZXByZXNlbnRlZE9iamVjdCkKICAgICB7CiAgICAgICAgIC8vIFRoaXMgcXVldWUgcmVkdWNl
cyBmbGFzaGluZyBhcyByZXNvdXJjZXMgbG9hZCBhbmQgY2hhbmdlIGZvbGRlcnMgd2hlbiB0aGVp
ciB0eXBlIGJlY29tZXMga25vd24uCkBAIC0yOTgsOCArMzIyLDggQEAgV2ViSW5zcGVjdG9yLkZy
YW1lVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogCiAgICAgX2FkZENoaWxkRm9yUmVwcmVzZW50
ZWRPYmplY3Q6IGZ1bmN0aW9uKHJlcHJlc2VudGVkT2JqZWN0KQogICAgIHsKLSAgICAgICAgY29u
c29sZS5hc3NlcnQocmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuUmVz
b3VyY2UgfHwgcmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuRnJhbWUp
OwotICAgICAgICBpZiAoIShyZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rv
ci5SZXNvdXJjZSB8fCByZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5G
cmFtZSkpCisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNl
b2YgV2ViSW5zcGVjdG9yLlJlc291cmNlIHx8IHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2Yg
V2ViSW5zcGVjdG9yLkZyYW1lIHx8IHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV2ViSW5z
cGVjdG9yLkNvbnRlbnRGbG93KTsKKyAgICAgICAgaWYgKCEocmVwcmVzZW50ZWRPYmplY3QgaW5z
dGFuY2VvZiBXZWJJbnNwZWN0b3IuUmVzb3VyY2UgfHwgcmVwcmVzZW50ZWRPYmplY3QgaW5zdGFu
Y2VvZiBXZWJJbnNwZWN0b3IuRnJhbWUgfHwgcmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBX
ZWJJbnNwZWN0b3IuQ29udGVudEZsb3cpKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAg
IHRoaXMuX3VwZGF0ZVBhcmVudFN0YXR1cygpOwpAQCAtMzIyLDggKzM0Niw4IEBAIFdlYkluc3Bl
Y3Rvci5GcmFtZVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKIAogICAgIF9yZW1vdmVDaGlsZEZv
clJlcHJlc2VudGVkT2JqZWN0OiBmdW5jdGlvbihyZXByZXNlbnRlZE9iamVjdCkKICAgICB7Ci0g
ICAgICAgIGNvbnNvbGUuYXNzZXJ0KHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV2ViSW5z
cGVjdG9yLlJlc291cmNlIHx8IHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVj
dG9yLkZyYW1lKTsKLSAgICAgICAgaWYgKCEocmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBX
ZWJJbnNwZWN0b3IuUmVzb3VyY2UgfHwgcmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXZWJJ
bnNwZWN0b3IuRnJhbWUpKQorICAgICAgICBjb25zb2xlLmFzc2VydChyZXByZXNlbnRlZE9iamVj
dCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5SZXNvdXJjZSB8fCByZXByZXNlbnRlZE9iamVjdCBp
bnN0YW5jZW9mIFdlYkluc3BlY3Rvci5GcmFtZSB8fCByZXByZXNlbnRlZE9iamVjdCBpbnN0YW5j
ZW9mIFdlYkluc3BlY3Rvci5Db250ZW50Rmxvdyk7CisgICAgICAgIGlmICghKHJlcHJlc2VudGVk
T2JqZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlJlc291cmNlIHx8IHJlcHJlc2VudGVkT2Jq
ZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkZyYW1lIHx8IHJlcHJlc2VudGVkT2JqZWN0IGlu
c3RhbmNlb2YgV2ViSW5zcGVjdG9yLkNvbnRlbnRGbG93KSkKICAgICAgICAgICAgIHJldHVybjsK
IAogICAgICAgICB0aGlzLl9yZW1vdmVSZXByZXNlbnRlZE9iamVjdEZyb21OZXdDaGlsZFF1ZXVl
KHJlcHJlc2VudGVkT2JqZWN0KTsKQEAgLTM1NSw2ICszNzksOCBAQCBXZWJJbnNwZWN0b3IuRnJh
bWVUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICAgICAgY2hpbGRUcmVlRWxl
bWVudCA9IG5ldyBXZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlRWxlbWVudChyZXByZXNlbnRlZE9i
amVjdCk7CiAgICAgICAgICAgICBlbHNlIGlmIChyZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9m
IFdlYkluc3BlY3Rvci5GcmFtZSkKICAgICAgICAgICAgICAgICBjaGlsZFRyZWVFbGVtZW50ID0g
bmV3IFdlYkluc3BlY3Rvci5GcmFtZVRyZWVFbGVtZW50KHJlcHJlc2VudGVkT2JqZWN0KTsKKyAg
ICAgICAgICAgIGVsc2UgaWYgKHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVj
dG9yLkNvbnRlbnRGbG93KQorICAgICAgICAgICAgICAgIGNoaWxkVHJlZUVsZW1lbnQgPSBuZXcg
V2ViSW5zcGVjdG9yLkNvbnRlbnRGbG93VHJlZUVsZW1lbnQocmVwcmVzZW50ZWRPYmplY3QpOwog
ICAgICAgICB9CiAKICAgICAgICAgdGhpcy5fYWRkVHJlZUVsZW1lbnQoY2hpbGRUcmVlRWxlbWVu
dCk7CkBAIC0zOTIsMTAgKzQxOCwyNyBAQCBXZWJJbnNwZWN0b3IuRnJhbWVUcmVlRWxlbWVudC5w
cm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuaW5zZXJ0Q2hpbGQoZm9sZGVyVHJlZUVsZW1lbnQs
IGluc2VydGlvbkluZGV4Rm9yT2JqZWN0SW5MaXN0U29ydGVkQnlGdW5jdGlvbihmb2xkZXJUcmVl
RWxlbWVudCwgdGhpcy5jaGlsZHJlbiwgdGhpcy5fY29tcGFyZVRyZWVFbGVtZW50c0J5TWFpblRp
dGxlKSk7CiAgICAgfSwKIAorICAgIF9jb21wYXJlUmVzb3VyY2VUcmVlRWxlbWVudHM6IGZ1bmN0
aW9uKGEsIGIpCisgICAgeworICAgICAgICB2YXIgYUlzUmVzb3VyY2UgPSBhIGluc3RhbmNlb2Yg
V2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZUVsZW1lbnQ7CisgICAgICAgIHZhciBiSXNSZXNvdXJj
ZSA9IGIgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlRWxlbWVudDsKKworICAg
ICAgICBpZiAoYUlzUmVzb3VyY2UgJiYgYklzUmVzb3VyY2UpCisgICAgICAgICAgICByZXR1cm4g
V2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZUVsZW1lbnQuY29tcGFyZVJlc291cmNlVHJlZUVsZW1l
bnRzKGEsIGIpOworCisgICAgICAgIGlmICghYUlzUmVzb3VyY2UgJiYgIWJJc1Jlc291cmNlKSB7
CisgICAgICAgICAgICAvLyBXaGVuIGJvdGggY29tcG9uZW50cyBhcmUgbm90IHJlc291cmNlcyB0
aGVuIGp1c3QgY29tcGFyZSB0aGUgdGl0bGVzLgorICAgICAgICAgICAgcmV0dXJuIGEubWFpblRp
dGxlLmxvY2FsZUNvbXBhcmUoYi5tYWluVGl0bGUpOworICAgICAgICB9CisgICAgICAgIAorICAg
ICAgICAvLyBOb24tcmVzb3VyY2VzIHNob3VsZCBhcHBlYXIgYmVmb3JlIHRoZSByZXNvdXJjZXMu
CisgICAgICAgIHJldHVybiBhSXNSZXNvdXJjZSA/IDEgOiAtMTsKKyAgICB9LAorCiAgICAgX2lu
c2VydFJlc291cmNlVHJlZUVsZW1lbnQ6IGZ1bmN0aW9uKHBhcmVudFRyZWVFbGVtZW50LCBjaGls
ZFRyZWVFbGVtZW50KQogICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQoIWNoaWxkVHJlZUVs
ZW1lbnQucGFyZW50KTsKLSAgICAgICAgcGFyZW50VHJlZUVsZW1lbnQuaW5zZXJ0Q2hpbGQoY2hp
bGRUcmVlRWxlbWVudCwgaW5zZXJ0aW9uSW5kZXhGb3JPYmplY3RJbkxpc3RTb3J0ZWRCeUZ1bmN0
aW9uKGNoaWxkVHJlZUVsZW1lbnQsIHBhcmVudFRyZWVFbGVtZW50LmNoaWxkcmVuLCBXZWJJbnNw
ZWN0b3IuUmVzb3VyY2VUcmVlRWxlbWVudC5jb21wYXJlUmVzb3VyY2VUcmVlRWxlbWVudHMpKTsK
KyAgICAgICAgcGFyZW50VHJlZUVsZW1lbnQuaW5zZXJ0Q2hpbGQoY2hpbGRUcmVlRWxlbWVudCwg
aW5zZXJ0aW9uSW5kZXhGb3JPYmplY3RJbkxpc3RTb3J0ZWRCeUZ1bmN0aW9uKGNoaWxkVHJlZUVs
ZW1lbnQsIHBhcmVudFRyZWVFbGVtZW50LmNoaWxkcmVuLCB0aGlzLl9jb21wYXJlUmVzb3VyY2VU
cmVlRWxlbWVudHMpKTsKICAgICB9LAogCiAgICAgX3JlbW92ZVRyZWVFbGVtZW50OiBmdW5jdGlv
bihjaGlsZFRyZWVFbGVtZW50LCBzdXBwcmVzc09uRGVzZWxlY3QsIHN1cHByZXNzU2VsZWN0U2li
bGluZykKQEAgLTQ0NSw2ICs0ODgsMTIgQEAgV2ViSW5zcGVjdG9yLkZyYW1lVHJlZUVsZW1lbnQu
cHJvdG90eXBlID0gewogICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2ZyYW1lc0ZvbGRlclRyZWVF
bGVtZW50OwogICAgICAgICB9CiAKKyAgICAgICAgaWYgKHJlcHJlc2VudGVkT2JqZWN0IGluc3Rh
bmNlb2YgV2ViSW5zcGVjdG9yLkNvbnRlbnRGbG93KSB7CisgICAgICAgICAgICBpZiAoIXRoaXMu
X2Zsb3dzRm9sZGVyVHJlZUVsZW1lbnQpCisgICAgICAgICAgICAgICAgdGhpcy5fZmxvd3NGb2xk
ZXJUcmVlRWxlbWVudCA9IGNyZWF0ZUZvbGRlclRyZWVFbGVtZW50LmNhbGwodGhpcywgImZsb3dz
IiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJGbG93cyIpKTsKKyAgICAgICAgICAgIHJldHVybiB0
aGlzLl9mbG93c0ZvbGRlclRyZWVFbGVtZW50OworICAgICAgICB9CisKICAgICAgICAgaWYgKHJl
cHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlJlc291cmNlKSB7CiAgICAg
ICAgICAgICB2YXIgZm9sZGVyTmFtZSA9IHRoaXMuX2ZvbGRlck5hbWVGb3JSZXNvdXJjZVR5cGUo
cmVwcmVzZW50ZWRPYmplY3QudHlwZSk7CiAgICAgICAgICAgICBpZiAoIWZvbGRlck5hbWUpCkBA
IC00ODQsNiArNTMzLDkgQEAgV2ViSW5zcGVjdG9yLkZyYW1lVHJlZUVsZW1lbnQucHJvdG90eXBl
ID0gewogICAgICAgICB2YXIgbnVtYmVyT2ZNZWRpdW1DYXRlZ29yaWVzID0gMDsKICAgICAgICAg
dmFyIGZvdW5kTGFyZ2VDYXRlZ29yeSA9IGZhbHNlOwogCisgICAgICAgIC8vIEZJWE1FOiBVc2Ug
dGhpcy5fZnJhbWUuZG9tVHJlZS5mbG93c0NvdW50IHRvIGNvdW50IHRoZSBudW1iZXIgb2YgZmxv
d3MgaW4gYSBmcmFtZS4KKyAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEyMjkyNgorCiAgICAgICAgIGlmICh0aGlzLl9mcmFtZS5jaGlsZEZyYW1lcy5s
ZW5ndGggPj0gV2ViSW5zcGVjdG9yLkZyYW1lVHJlZUVsZW1lbnQuTGFyZ2VDaGlsZENvdW50VGhy
ZXNob2xkKQogICAgICAgICAgICAgZm91bmRMYXJnZUNhdGVnb3J5ID0gdHJ1ZTsKICAgICAgICAg
ZWxzZSBpZiAodGhpcy5fZnJhbWUuY2hpbGRGcmFtZXMubGVuZ3RoID49IFdlYkluc3BlY3Rvci5G
cmFtZVRyZWVFbGVtZW50Lk1lZGl1bUNoaWxkQ291bnRUaHJlc2hvbGQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9JbWFnZXMvQ29udGVudEZsb3cuc3Zn
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvSW1hZ2VzL0NvbnRlbnRGbG93
LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NmZjNzI3Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvSW1hZ2VzL0Nv
bnRlbnRGbG93LnN2ZwpAQCAtMCwwICsxLDEwIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29k
aW5nPSJ1dGYtOCI/PgorPCEtLSBDb3B5cmlnaHQgwqkgMjAxMyBBZG9iZSBTeXN0ZW1zIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4gLS0+Cis8c3ZnIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgMTAwIDEwMCI+CisJPHBhdGggZmls
bD0iIzcwNzA3MCIgZD0iTTgxLjI1LDYuMjVoLTYyLjVjLTYuODg1LDAtMTIuNSw1LjYxNS0xMi41
LDEyLjV2NjIuNWMwLDYuODg1LDUuNjE1LDEyLjUsMTIuNSwxMi41aDYyLjUKKwkJYzYuODg1LDAs
MTIuNS01LjYxNSwxMi41LTEyLjV2LTYyLjVDOTMuNzUsMTEuODY1LDg4LjEzNSw2LjI1LDgxLjI1
LDYuMjUgTTgxLjI1LDEyLjVjMy40NDIsMCw2LjI1LDIuODA4LDYuMjUsNi4yNXY2Mi41CisJCWMw
LDMuNDQyLTIuODA4LDYuMjUtNi4yNSw2LjI1aC02Mi41Yy0zLjQ0MiwwLTYuMjUtMi44MDgtNi4y
NS02LjI1di02Mi41YzAtMy40NDIsMi44MDgtNi4yNSw2LjI1LTYuMjVIODEuMjUiLz4KKwk8cmVj
dCB4PSIxNy44NzUiIHk9IjE5LjYyNSIgZmlsbD0iIzcxNzE3MSIgd2lkdGg9IjI5LjI5MiIgaGVp
Z2h0PSIyNC43MDgiLz4KKwk8cmVjdCB4PSIxNy44NzUiIHk9IjUzIiBmaWxsPSIjNzE3MTcxIiB3
aWR0aD0iMTYuNjI1IiBoZWlnaHQ9IjI2LjI1Ii8+CisJPHJlY3QgeD0iNTUuMzc1IiB5PSIxOS42
MjUiIGZpbGw9IiM3MTcxNzEiIHdpZHRoPSIyNi42MjUiIGhlaWdodD0iNjEiLz4KKzwvc3ZnPgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTWFpbi5odG1s
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTWFpbi5odG1sCmluZGV4IDVm
NTJjNDQuLjM4ZGMwMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL01haW4uaHRtbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9NYWluLmh0bWwKQEAgLTQ0LDYgKzQ0LDcgQEAKICAgICA8bGluayByZWw9InN0eWxlc2hlZXQi
IGhyZWY9IkNvbnRlbnRCcm93c2VyLmNzcyI+CiAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBo
cmVmPSJOYXZpZ2F0aW9uU2lkZWJhclBhbmVsLmNzcyI+CiAgICAgPGxpbmsgcmVsPSJzdHlsZXNo
ZWV0IiBocmVmPSJSZXNvdXJjZUljb25zLmNzcyI+CisgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0
IiBocmVmPSJDb250ZW50Rmxvd0ljb24uY3NzIj4KICAgICA8bGluayByZWw9InN0eWxlc2hlZXQi
IGhyZWY9IkZvbGRlckljb24uY3NzIj4KICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9
IkNvbnRlbnRWaWV3Q29udGFpbmVyLmNzcyI+CiAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBo
cmVmPSJDbHVzdGVyQ29udGVudFZpZXcuY3NzIj4KQEAgLTIzMCw2ICsyMzEsNyBAQAogICAgIDxz
Y3JpcHQgc3JjPSJBcHBsaWNhdGlvbkNhY2hlTWFuaWZlc3RUcmVlRWxlbWVudC5qcyI+PC9zY3Jp
cHQ+CiAgICAgPHNjcmlwdCBzcmM9IlRyZWVFbGVtZW50U3RhdHVzQnV0dG9uLmpzIj48L3Njcmlw
dD4KICAgICA8c2NyaXB0IHNyYz0iSXNzdWVNZXNzYWdlLmpzIj48L3NjcmlwdD4KKyAgICA8c2Ny
aXB0IHNyYz0iQ29udGVudEZsb3dUcmVlRWxlbWVudC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlw
dCBzcmM9IkZyYW1lVHJlZUVsZW1lbnQuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJD
U1NDb21wbGV0aW9ucy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IkNTU0tleXdvcmRD
b21wbGV0aW9ucy5qcyI+PC9zY3JpcHQ+CkBAIC0yNjMsNiArMjY1LDcgQEAKICAgICA8c2NyaXB0
IHNyYz0iRE9NVHJlZU1hbmFnZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJET01O
b2RlLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iRE9NVXRpbGl0aWVzLmpzIj48L3Nj
cmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iQ29udGVudEZsb3cuanMiPjwvc2NyaXB0PgogICAgIDxz
Y3JpcHQgc3JjPSJET01UcmVlLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iRE9NVHJl
ZU91dGxpbmUuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJET01UcmVlVXBkYXRlci5q
cyI+PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9SZXNvdXJjZVNpZGViYXJQYW5lbC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1Jlc291cmNlU2lkZWJhclBhbmVsLmpzCmluZGV4IDk3YmYzOWYuLmM0MmU3ZTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Jlc291cmNl
U2lkZWJhclBhbmVsLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1Jlc291cmNlU2lkZWJhclBhbmVsLmpzCkBAIC02MTAsNiArNjEwLDEzIEBAIFdlYkluc3BlY3Rv
ci5SZXNvdXJjZVNpZGViYXJQYW5lbC5wcm90b3R5cGUgPSB7CiAKICAgICBfdHJlZUVsZW1lbnRT
ZWxlY3RlZDogZnVuY3Rpb24odHJlZUVsZW1lbnQsIHNlbGVjdGVkQnlVc2VyKQogICAgIHsKKyAg
ICAgICAgaWYgKHRyZWVFbGVtZW50IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkNvbnRlbnRGbG93
VHJlZUVsZW1lbnQpIHsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgRE9NIHRyZWUg
aW5zcGVjdG9yIGZvciBjb250ZW50IGZsb3cgdHJlZSBlbGVtZW50cy4KKyAgICAgICAgICAgIC8v
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjI5MjcKKyAgICAgICAg
ICAgIGNvbnNvbGUubG9nKCJDb250ZW50IEZsb3cgdmlldyBub3QgaW1wbGVtZW50ZWQiKTsKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCiAgICAgICAgIGlmICh0cmVlRWxlbWVudCBp
bnN0YW5jZW9mIFdlYkluc3BlY3Rvci5Gb2xkZXJUcmVlRWxlbWVudCkKICAgICAgICAgICAgIHJl
dHVybjsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>214472</attachid>
            <date>2013-10-17 10:54:07 -0700</date>
            <delta_ts>2013-10-17 11:45:24 -0700</delta_ts>
            <desc>Patch V3</desc>
            <filename>bug122924_v3.patch</filename>
            <type>text/plain</type>
            <size>34051</size>
            <attacher name="Alexandru Chiculita">achicu</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IDg0N2RjOGIuLmI1ZjFjYTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY2IEBACisyMDEzLTEwLTE2ICBBbGV4YW5kcnUgQ2hp
Y3VsaXRhICA8YWNoaWN1QGFkb2JlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBDU1Mg
UmVnaW9uczogQWRkIHRoZSBsaXN0IG9mIGZsb3dzIGluIHRoZSBGcmFtZVRyZWVFbGVtZW50Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjI5MjQKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBjb2Rl
IHRvIGNvbGxlY3QgdGhlIGZsb3dzIGZyb20gdGhlIGJhY2tlbmQgaW50byB0aGUgRE9NVHJlZSBv
YmplY3QKKyAgICAgICAgb24gdGhlIGZyb250ZW5kLiBBZGRlZCBDb250ZW50RmxvdyB0byByZXBy
ZXNlbnQgdGhlIGZsb3dzIG9uIHRoZSBmcm9udGVuZAorICAgICAgICBzaWRlIGFuZCBjcmVhdGVk
IENvbnRlbnRGbG93VHJlZUVsZW1lbnQgdG8gZGlzcGxheSB0aGUgZmxvd3MgaW4gdGhlIEZyYW1l
VHJlZUVsZW1lbnQuCisKKyAgICAgICAgKiBMb2NhbGl6YXRpb25zL2VuLmxwcm9qL2xvY2FsaXpl
ZFN0cmluZ3MuanM6CisgICAgICAgICogVXNlckludGVyZmFjZS9DU1NPYnNlcnZlci5qczoKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5DU1NPYnNlcnZlci5wcm90b3R5cGUubmFtZWRGbG93Q3JlYXRl
ZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTT2JzZXJ2ZXIucHJvdG90eXBlLm5hbWVkRmxv
d1JlbW92ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU09ic2VydmVyLnByb3RvdHlwZS5y
ZWdpb25MYXlvdXRVcGRhdGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NPYnNlcnZlci5w
cm90b3R5cGUucmVnaW9uT3ZlcnNldENoYW5nZWQpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2Uv
Q29udGVudEZsb3cuanM6IEFkZGVkLgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbnRlbnRGbG93
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db250ZW50Rmxvdy5oYXNoS2V5KToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5Db250ZW50Rmxvdy5wcm90b3R5cGUuX2RpZmZGbG93Q2hhbmdlcyk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuQ29udGVudEZsb3cucHJvdG90eXBlLl9sb2FkRnJvbUpTT04p
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbnRlbnRGbG93LnByb3RvdHlwZS51cGRhdGUpOgor
ICAgICAgICAqIFVzZXJJbnRlcmZhY2UvQ29udGVudEZsb3dJY29uLmNzczogQWRkZWQuCisgICAg
ICAgICguY29udGVudC1mbG93LWljb24gLmljb24pOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2Uv
Q29udGVudEZsb3dUcmVlRWxlbWVudC5qczogQWRkZWQuCisgICAgICAgIChXZWJJbnNwZWN0b3Iu
Q29udGVudEZsb3dUcmVlRWxlbWVudCk6CisgICAgICAgICogVXNlckludGVyZmFjZS9ET01UcmVl
LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTVRyZWUpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkRPTVRyZWUucHJvdG90eXBlLmdldCBmbG93cyk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
RE9NVHJlZS5wcm90b3R5cGUuZ2V0IGZsb3dzQ291bnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkRPTVRyZWUucHJvdG90eXBlLl9mcmFtZVBhZ2VFeGVjdXRpb25Db250ZXh0Q2hhbmdlZCk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuRE9NVHJlZS5wcm90b3R5cGUucmVxdWVzdEZsb3dMaXN0KToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5ET01UcmVlLnByb3RvdHlwZS5faXNGbG93SW5DdXJyZW50
RG9jdW1lbnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTVRyZWUucHJvdG90eXBlLl9mbG93
TGlzdFdhc1VwZGF0ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTVRyZWUucHJvdG90eXBl
Ll9mbG93V2FzQWRkZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTVRyZWUucHJvdG90eXBl
Ll9mbG93V2FzUmVtb3ZlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRE9NVHJlZS5wcm90b3R5
cGUuX2Zsb3dXYXNDaGFuZ2VkKToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0RPTVRyZWVNYW5h
Z2VyLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTVRyZWVNYW5hZ2VyLnByb3RvdHlwZS5n
ZXROYW1lZEZsb3dDb2xsZWN0aW9uKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5ET01UcmVlTWFu
YWdlci5wcm90b3R5cGUubmFtZWRGbG93Q3JlYXRlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
RE9NVHJlZU1hbmFnZXIucHJvdG90eXBlLm5hbWVkRmxvd1JlbW92ZWQpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLkRPTVRyZWVNYW5hZ2VyLnByb3RvdHlwZS5yZWdpb25MYXlvdXRVcGRhdGVkKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5ET01UcmVlTWFuYWdlci5wcm90b3R5cGUucmVnaW9uT3Zl
cnNldENoYW5nZWQpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvRnJhbWVUcmVlRWxlbWVudC5q
czoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5GcmFtZVRyZWVFbGVtZW50KToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5GcmFtZVRyZWVFbGVtZW50LnByb3RvdHlwZS5vbnBvcHVsYXRlKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5GcmFtZVRyZWVFbGVtZW50LnByb3RvdHlwZS5vbmV4cGFuZCk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuRnJhbWVUcmVlRWxlbWVudC5wcm90b3R5cGUuX2NoaWxkRmxv
d1dhc0FkZGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5GcmFtZVRyZWVFbGVtZW50LnByb3Rv
dHlwZS5fY2hpbGRGbG93V2FzUmVtb3ZlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRnJhbWVU
cmVlRWxlbWVudC5wcm90b3R5cGUuX3Jvb3RET01Ob2RlSW52YWxpZGF0ZWQpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLkZyYW1lVHJlZUVsZW1lbnQucHJvdG90eXBlLl9hZGRDaGlsZEZvclJlcHJl
c2VudGVkT2JqZWN0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5GcmFtZVRyZWVFbGVtZW50LnBy
b3RvdHlwZS5fcmVtb3ZlQ2hpbGRGb3JSZXByZXNlbnRlZE9iamVjdCk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuRnJhbWVUcmVlRWxlbWVudC5wcm90b3R5cGUuX2FkZFRyZWVFbGVtZW50Rm9yUmVw
cmVzZW50ZWRPYmplY3QpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkZyYW1lVHJlZUVsZW1lbnQu
cHJvdG90eXBlLl9jb21wYXJlUmVzb3VyY2VUcmVlRWxlbWVudHMpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkZyYW1lVHJlZUVsZW1lbnQucHJvdG90eXBlLl9pbnNlcnRSZXNvdXJjZVRyZWVFbGVt
ZW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5GcmFtZVRyZWVFbGVtZW50LnByb3RvdHlwZS5f
cGFyZW50VHJlZUVsZW1lbnRGb3JSZXByZXNlbnRlZE9iamVjdCk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuRnJhbWVUcmVlRWxlbWVudC5wcm90b3R5cGUuX3Nob3VsZEdyb3VwSW50b0ZvbGRlcnMp
OgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvSW1hZ2VzL0NvbnRlbnRGbG93LnN2ZzogQWRkZWQu
CisgICAgICAgICogVXNlckludGVyZmFjZS9NYWluLmh0bWw6CisgICAgICAgICogVXNlckludGVy
ZmFjZS9SZXNvdXJjZVNpZGViYXJQYW5lbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXNv
dXJjZVNpZGViYXJQYW5lbC5wcm90b3R5cGUuX3RyZWVFbGVtZW50U2VsZWN0ZWQpOgorCiAyMDEz
LTEwLTE1ICBBbnRvaW5lIFF1aW50ICA8Z3Jhb3V0c0BhcHBsZS5jb20+CiAKICAgICAgICAgV2Vi
IEluc3BlY3RvcjogY2FuJ3Qgc2VsZWN0IHRleHQgaW5zaWRlIGEgdGV4dCBub2RlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvTG9jYWxpemF0aW9ucy9lbi5scHJvai9sb2NhbGl6
ZWRTdHJpbmdzLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0xvY2FsaXphdGlvbnMvZW4ubHBy
b2ovbG9jYWxpemVkU3RyaW5ncy5qcwppbmRleCBiY2I4NzM5NDIzYzA0ZjYyOTRiZjgxODhjMzBl
ZTUyZTQxNTIxOWFiLi4zOTA0ZWRjOTljMTY0MmI0M2Q4ZWVkYjUzZWFiZjY4NzdlZTU5NGYwIDEw
MDY0NApHSVQgYmluYXJ5IHBhdGNoCmRlbHRhIDQyCnRjbWJReiVZM2h3ZEJnZng9XlRjOWhIezJ0
MXxeMUExX2NJTkFYWns8VipyYjhaaXA0aDFPTnB2M2kxRXwKCmRlbHRhIDE4CmFjbWNjRCVSSHIq
ZEJnaEgkQFh6PG9CemsmJmowe1h5YT9MPgoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9TY3JpcHRzL2NvcHktdXNlci1pbnRlcmZhY2UtcmVzb3VyY2VzLnNoIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1NjcmlwdHMvY29weS11c2VyLWludGVyZmFjZS1yZXNvdXJjZXMuc2gKaW5k
ZXggMDI4YzdhNS4uYTZlZTg5ZSAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Nj
cmlwdHMvY29weS11c2VyLWludGVyZmFjZS1yZXNvdXJjZXMuc2gKKysrIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1NjcmlwdHMvY29weS11c2VyLWludGVyZmFjZS1yZXNvdXJjZXMuc2gKQEAgLTEz
LDYgKzEzLDcgQEAgTElDRU5TRT0kKGNhdCA8PEVPRgogICogQ29weXJpZ2h0IChDKSAyMDEzIE1h
dHQgSG9sZGVuIDxqZnRob2xkZW5AeWFob28uY29tPgogICogQ29weXJpZ2h0IChDKSAyMDEzIFNh
bXN1bmcgRWxlY3Ryb25pY3MuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMp
IDIwMTMgU2Vva2p1IEt3b24gKHNlb2tqdS5rd29uQGdtYWlsLmNvbSkKKyAqIENvcHlyaWdodCAo
QykgMjAxMyBBZG9iZSBTeXN0ZW1zIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvQ1NTT2JzZXJ2ZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9DU1NPYnNlcnZlci5qcwppbmRleCBjZDA2NmQxLi41NWYzNDQyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9DU1NPYnNlcnZlci5qcwor
KysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9DU1NPYnNlcnZlci5qcwpA
QCAtNTUsMTcgKzU1LDIyIEBAIFdlYkluc3BlY3Rvci5DU1NPYnNlcnZlci5wcm90b3R5cGUgPSB7
CiAKICAgICBuYW1lZEZsb3dDcmVhdGVkOiBmdW5jdGlvbihuYW1lZEZsb3cpCiAgICAgewotICAg
ICAgICAvLyBGSVhNRTogTm90IGltcGxlbWVudGVkLgorICAgICAgICBXZWJJbnNwZWN0b3IuZG9t
VHJlZU1hbmFnZXIubmFtZWRGbG93Q3JlYXRlZChuYW1lZEZsb3cpOwogICAgIH0sCiAKICAgICBu
YW1lZEZsb3dSZW1vdmVkOiBmdW5jdGlvbihkb2N1bWVudE5vZGVJZCwgZmxvd05hbWUpCiAgICAg
ewotICAgICAgICAvLyBGSVhNRTogTm90IGltcGxlbWVudGVkLgorICAgICAgICBXZWJJbnNwZWN0
b3IuZG9tVHJlZU1hbmFnZXIubmFtZWRGbG93UmVtb3ZlZChkb2N1bWVudE5vZGVJZCwgZmxvd05h
bWUpOwogICAgIH0sCiAKICAgICByZWdpb25MYXlvdXRVcGRhdGVkOiBmdW5jdGlvbihuYW1lZEZs
b3cpCiAgICAgewotICAgICAgICAvLyBGSVhNRTogTm90IGltcGxlbWVudGVkLgorICAgICAgICBX
ZWJJbnNwZWN0b3IuZG9tVHJlZU1hbmFnZXIucmVnaW9uTGF5b3V0VXBkYXRlZChuYW1lZEZsb3cp
OworICAgIH0sCisKKyAgICByZWdpb25PdmVyc2V0Q2hhbmdlZDogZnVuY3Rpb24obmFtZWRGbG93
KQorICAgIHsKKyAgICAgICAgV2ViSW5zcGVjdG9yLmRvbVRyZWVNYW5hZ2VyLnJlZ2lvbk92ZXJz
ZXRDaGFuZ2VkKG5hbWVkRmxvdyk7CiAgICAgfQogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udGVudEZsb3cuanMgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250ZW50Rmxvdy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi4xOGM3M2RkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udGVudEZsb3cuanMKQEAgLTAsMCArMSwxNDMgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZQorICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyAqICAgIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiAgICBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZworICogICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzCisgKiAgICBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVIgIkFTIElTIiBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBCRQorICogTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LAorICogT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUgorICogVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GCisgKiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YKKyAqIFNVQ0ggREFNQUdFLgorICovCisKK1dlYkluc3BlY3Rvci5Db250ZW50RmxvdyA9
IGZ1bmN0aW9uKGRhdGEpCit7CisgICAgV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOwor
CisgICAgdGhpcy5fbG9hZEZyb21KU09OKGRhdGEpOworfTsKKworV2ViSW5zcGVjdG9yLkNvbnRl
bnRGbG93LkV2ZW50ID0geworICAgIE92ZXJzZXRXYXNDaGFuZ2VkOiAiY29udGVudC1mbG93LW92
ZXJzZXQtd2FzLWNoYW5nZWQiLAorICAgIENvbnRlbnRXYXNDaGFuZ2VkOiAiY29udGVudC1mbG93
LWNvbnRlbnQtd2FzLWNoYW5nZWQiLAorICAgIFJlZ2lvbkNoYWluV2FzQ2hhbmdlZDogImNvbnRl
bnQtZmxvdy1yZWdpb24tY2hhaW4td2FzLWNoYW5nZWQiLAorfTsKKworV2ViSW5zcGVjdG9yLkNv
bnRlbnRGbG93Lmhhc2hLZXkgPSBmdW5jdGlvbihmbG93KQoreworICAgIC8vIFVzZSB0aGUgZmxv
dyBub2RlIGlkLCB0byBhdm9pZCBjb2xsaXNpb25zIHdoZW4gd2UgY2hhbmdlIG1haW4gZG9jdW1l
bnQgaWQuCisgICAgcmV0dXJuIGZsb3cuZG9jdW1lbnROb2RlSWQgKyAiOiIgKyBmbG93Lm5hbWU7
Cit9OworCitXZWJJbnNwZWN0b3IuQ29udGVudEZsb3cucHJvdG90eXBlID0geworCisgICAgY29u
c3RydWN0b3I6IFdlYkluc3BlY3Rvci5Db250ZW50RmxvdywKKworICAgIC8vIFB1YmxpYworCisg
ICAgLyogZ2V0dGVycyBhbmQgc2V0dGVycyAqLworCisgICAgZ2V0IGRvY3VtZW50Tm9kZUlkKCkK
KyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9kb2N1bWVudE5vZGVJZDsKKyAgICB9LAorCisg
ICAgZ2V0IG5hbWUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX25hbWU7CisgICAgfSwK
KworICAgIGdldCBvdmVyc2V0KCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9vdmVyc2V0
OworICAgIH0sCisKKyAgICBnZXQgcmVnaW9ucygpCisgICAgeworICAgICAgICByZXR1cm4gdGhp
cy5fcmVnaW9uczsKKyAgICB9LAorCisgICAgZ2V0IGNvbnRlbnQoKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIHRoaXMuX2NvbnRlbnQ7CisgICAgfSwKKworICAgIHVwZGF0ZTogZnVuY3Rpb24oZGF0
YSkKKyAgICB7CisgICAgICAgIHZhciBkaWZmID0gdGhpcy5fZGlmZkZsb3dDaGFuZ2VzKGRhdGEp
OworICAgICAgICB0aGlzLl9sb2FkRnJvbUpTT04oZGF0YSk7CisKKyAgICAgICAgaWYgKGRpZmYu
b3ZlcnNldCkKKyAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYklu
c3BlY3Rvci5Db250ZW50Rmxvdy5FdmVudC5GbG93T3ZlcnNldFdhc0NoYW5nZWQpOworICAgICAg
ICBpZiAoZGlmZi5jb250ZW50KQorICAgICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0
ZW5lcnMoV2ViSW5zcGVjdG9yLkNvbnRlbnRGbG93LkV2ZW50LkZsb3dDb250ZW50V2FzQ2hhbmdl
ZCk7CisgICAgICAgIGlmIChkaWZmLnJlZ2lvbnMpCisgICAgICAgICAgICB0aGlzLmRpc3BhdGNo
RXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuQ29udGVudEZsb3cuRXZlbnQuRmxvd1JlZ2lv
bnNXYXNDaGFuZ2VkKTsKKyAgICB9LAorCisgICAgLy8gUHJpdmF0ZQorCisgICAgX2RpZmZGbG93
Q2hhbmdlczogZnVuY3Rpb24ob3RoZXIpCisgICAgeworICAgICAgICBjb25zb2xlLmFzc2VydCh0
aGlzLl9uYW1lID09PSBvdGhlci5uYW1lKTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5f
ZG9jdW1lbnROb2RlSWQgPT09IG90aGVyLmRvY3VtZW50Tm9kZUlkKTsKKworICAgICAgICB2YXIg
ZGlmZiA9IHsKKyAgICAgICAgICAgIGZsb3dPdmVyc2V0OiB0aGlzLl9vdmVyc2V0ICE9PSBvdGhl
ci5vdmVyc2V0LAorICAgICAgICAgICAgY29udGVudDogdGhpcy5fY29udGVudC5sZW5ndGggIT09
IG90aGVyLmNvbnRlbnQubGVuZ3RoLAorICAgICAgICAgICAgcmVnaW9uczogdGhpcy5fcmVnaW9u
cy5sZW5ndGggIT09IG90aGVyLnJlZ2lvbnMubGVuZ3RoCisgICAgICAgIH07CisKKyAgICAgICAg
aWYgKCFkaWZmLmNvbnRlbnQpIHsKKyAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhp
cy5fY29udGVudC5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgICAgIGlmICh0aGlzLl9jb250
ZW50W2ldICE9PSBvdGhlci5jb250ZW50W2ldKSB7CisgICAgICAgICAgICAgICAgICAgIGRpZmYu
Y29udGVudCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGlmICghZGlmZi5yZWdp
b25zKSB7CisgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuX3JlZ2lvbnMubGVu
Z3RoOyArK2kpIHsKKyAgICAgICAgICAgICAgICB2YXIgY3VycmVudFJlZ2lvbiA9IHRoaXMuX3Jl
Z2lvbnNbaV07CisgICAgICAgICAgICAgICAgdmFyIG5ld1JlZ2lvbiA9IG90aGVyLnJlZ2lvbnNb
aV07CisgICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRSZWdpb24ubm9kZUlkICE9PSBuZXdSZWdp
b24ubm9kZUlkIHx8IGN1cnJlbnRSZWdpb24ucmVnaW9uT3ZlcnNldCAhPT0gbmV3UmVnaW9uLnJl
Z2lvbk92ZXJzZXQpIHsKKyAgICAgICAgICAgICAgICAgICAgZGlmZi5yZWdpb25zID0gdHJ1ZTsK
KyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgfQorICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGRpZmY7CisgICAgfSwKKworICAgIF9s
b2FkRnJvbUpTT046IGZ1bmN0aW9uKGRhdGEpCisgICAgeworICAgICAgICB0aGlzLl9kb2N1bWVu
dE5vZGVJZCA9IGRhdGEuZG9jdW1lbnROb2RlSWQ7CisgICAgICAgIHRoaXMuX25hbWUgPSBkYXRh
Lm5hbWU7CisgICAgICAgIHRoaXMuX292ZXJzZXQgPSBkYXRhLm92ZXJzZXQ7CisgICAgICAgIHRo
aXMuX3JlZ2lvbnMgPSBkYXRhLnJlZ2lvbnM7CisgICAgICAgIHRoaXMuX2NvbnRlbnQgPSBkYXRh
LmNvbnRlbnQ7CisgICAgfQorCit9OworCisKK1dlYkluc3BlY3Rvci5Db250ZW50Rmxvdy5wcm90
b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLk9iamVjdC5wcm90b3R5cGU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250ZW50Rmxvd0ljb24u
Y3NzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udGVudEZsb3dJY29u
LmNzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMjZlNzY2Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udGVudEZs
b3dJY29uLmNzcwpAQCAtMCwwICsxLDMyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFk
b2JlIFN5c3RlbXMgSW5jb3Jwb3JhdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUKKyAqICAgIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisgKiAg
ICBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQorICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyAqICAgIGRpc2NsYWltZXIgaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscworICogICAgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICogCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVCBIT0xERVIgQkUKKyAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwKKyAqIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQor
ICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IKKyAqIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRgorICogVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisgKiBTVUNIIERBTUFHRS4KKyAqLwor
CisuY29udGVudC1mbG93LWljb24gLmljb24geworICAgIGNvbnRlbnQ6IHVybChJbWFnZXMvQ29u
dGVudEZsb3cuc3ZnKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL0NvbnRlbnRGbG93VHJlZUVsZW1lbnQuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9Db250ZW50Rmxvd1RyZWVFbGVtZW50LmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc2NmZmN2UKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250ZW50Rmxvd1RyZWVFbGVtZW50LmpzCkBA
IC0wLDAgKzEsNDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQWRvYmUgU3lzdGVtcyBJ
bmNvcnBvcmF0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZQorICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyAqICAgIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCisgKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZworICogICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzCisgKiAgICBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKiAKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVIgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERF
UiBCRQorICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLAorICogT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUgorICog
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GCisgKiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YKKyAqIFNVQ0ggREFNQUdFLgorICovCisKK1dlYkluc3BlY3Rv
ci5Db250ZW50Rmxvd1RyZWVFbGVtZW50ID0gZnVuY3Rpb24ocmVwcmVzZW50ZWRPYmplY3QpCit7
CisgICAgY29uc29sZS5hc3NlcnQocmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXZWJJbnNw
ZWN0b3IuQ29udGVudEZsb3cpOworICAgIFdlYkluc3BlY3Rvci5HZW5lcmFsVHJlZUVsZW1lbnQu
Y2FsbCh0aGlzLCBbV2ViSW5zcGVjdG9yLkNvbnRlbnRGbG93VHJlZUVsZW1lbnQuU3R5bGVDbGFz
c05hbWUsIFdlYkluc3BlY3Rvci5Db250ZW50Rmxvd1RyZWVFbGVtZW50LkNvbnRlbnRGbG93SWNv
blN0eWxlQ2xhc3NOYW1lXSwgcmVwcmVzZW50ZWRPYmplY3QubmFtZSwgbnVsbCwgcmVwcmVzZW50
ZWRPYmplY3QsIGZhbHNlKTsKKworICAgIHRoaXMuc21hbGwgPSB0cnVlOworfTsKKworV2ViSW5z
cGVjdG9yLkNvbnRlbnRGbG93VHJlZUVsZW1lbnQuQ29udGVudEZsb3dJY29uU3R5bGVDbGFzc05h
bWUgPSAiY29udGVudC1mbG93LWljb24iOworCitXZWJJbnNwZWN0b3IuQ29udGVudEZsb3dUcmVl
RWxlbWVudC5wcm90b3R5cGUgPSB7CisgICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5Db250
ZW50Rmxvd1RyZWVFbGVtZW50Cit9OworCitXZWJJbnNwZWN0b3IuQ29udGVudEZsb3dUcmVlRWxl
bWVudC5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLkdlbmVyYWxUcmVlRWxlbWVu
dC5wcm90b3R5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9ET01UcmVlLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvRE9N
VHJlZS5qcwppbmRleCA3ODNlOTdkLi40NjQ4M2Q4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9ET01UcmVlLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL0RPTVRyZWUuanMKQEAgLTMxLDYgKzMxLDggQEAgV2ViSW5zcGVj
dG9yLkRPTVRyZWUgPSBmdW5jdGlvbihmcmFtZSkKIAogICAgIHRoaXMuX3Jvb3RET01Ob2RlID0g
bnVsbDsKICAgICB0aGlzLl9yZXF1ZXN0SWRlbnRpZmllciA9IDA7CisgICAgdGhpcy5fZmxvd3Mg
PSB7fTsKKyAgICB0aGlzLl9mbG93c0NvdW50ID0gMDsKIAogICAgIHRoaXMuX2ZyYW1lLmFkZEV2
ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkZyYW1lLkV2ZW50LlBhZ2VFeGVjdXRpb25Db250ZXh0
Q2hhbmdlZCwgdGhpcy5fZnJhbWVQYWdlRXhlY3V0aW9uQ29udGV4dENoYW5nZWQsIHRoaXMpOwog
CkBAIC00MSwxMiArNDMsMjAgQEAgV2ViSW5zcGVjdG9yLkRPTVRyZWUgPSBmdW5jdGlvbihmcmFt
ZSkKICAgICAgICAgV2ViSW5zcGVjdG9yLmRvbVRyZWVNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIo
V2ViSW5zcGVjdG9yLkRPTVRyZWVNYW5hZ2VyLkV2ZW50Lk5vZGVSZW1vdmVkLCB0aGlzLl9ub2Rl
UmVtb3ZlZCwgdGhpcyk7CiAgICAgICAgIHRoaXMuX2ZyYW1lLmFkZEV2ZW50TGlzdGVuZXIoV2Vi
SW5zcGVjdG9yLkZyYW1lLkV2ZW50Lk1haW5SZXNvdXJjZURpZENoYW5nZSwgdGhpcy5fZnJhbWVN
YWluUmVzb3VyY2VEaWRDaGFuZ2UsIHRoaXMpOwogICAgIH0KKworICAgIFdlYkluc3BlY3Rvci5k
b21UcmVlTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5ET01UcmVlTWFuYWdl
ci5FdmVudC5GbG93TGlzdFdhc1VwZGF0ZWQsIHRoaXMuX2Zsb3dMaXN0V2FzVXBkYXRlZCwgdGhp
cyk7CisgICAgV2ViSW5zcGVjdG9yLmRvbVRyZWVNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV2Vi
SW5zcGVjdG9yLkRPTVRyZWVNYW5hZ2VyLkV2ZW50LkZsb3dXYXNBZGRlZCwgdGhpcy5fZmxvd1dh
c0FkZGVkLCB0aGlzKTsKKyAgICBXZWJJbnNwZWN0b3IuZG9tVHJlZU1hbmFnZXIuYWRkRXZlbnRM
aXN0ZW5lcihXZWJJbnNwZWN0b3IuRE9NVHJlZU1hbmFnZXIuRXZlbnQuRmxvd1dhc1JlbW92ZWQs
IHRoaXMuX2Zsb3dXYXNSZW1vdmVkLCB0aGlzKTsKKyAgICBXZWJJbnNwZWN0b3IuZG9tVHJlZU1h
bmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRE9NVHJlZU1hbmFnZXIuRXZlbnQu
UmVnaW9uTGF5b3V0VXBkYXRlZCwgdGhpcy5fZmxvd1dhc0NoYW5nZWQsIHRoaXMpOworICAgIFdl
Ykluc3BlY3Rvci5kb21UcmVlTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5E
T01UcmVlTWFuYWdlci5FdmVudC5SZWdpb25PdmVyc2V0Q2hhbmdlZCwgdGhpcy5fZmxvd1dhc0No
YW5nZWQsIHRoaXMpOwogfTsKIAogV2ViSW5zcGVjdG9yLk9iamVjdC5hZGRDb25zdHJ1Y3RvckZ1
bmN0aW9ucyhXZWJJbnNwZWN0b3IuRE9NVHJlZSk7CiAKIFdlYkluc3BlY3Rvci5ET01UcmVlLkV2
ZW50ID0gewotICAgIFJvb3RET01Ob2RlSW52YWxpZGF0ZWQ6ICJkb20tdHJlZS1yb290LWRvbS1u
b2RlLWludmFsaWRhdGVkIgorICAgIFJvb3RET01Ob2RlSW52YWxpZGF0ZWQ6ICJkb20tdHJlZS1y
b290LWRvbS1ub2RlLWludmFsaWRhdGVkIiwKKyAgICBGbG93V2FzQWRkZWQ6ICJkb20tdHJlZS1m
bG93LXdhcy1hZGRlZCIsCisgICAgRmxvd1dhc1JlbW92ZWQ6ICJkb20tdHJlZS1mbG93LXdhcy1y
ZW1vdmVkIgogfTsKIAogV2ViSW5zcGVjdG9yLkRPTVRyZWUucHJvdG90eXBlID0gewpAQCAtNTks
NiArNjksMTYgQEAgV2ViSW5zcGVjdG9yLkRPTVRyZWUucHJvdG90eXBlID0gewogICAgICAgICBy
ZXR1cm4gdGhpcy5fZnJhbWU7CiAgICAgfSwKIAorICAgIGdldCBmbG93cygpCisgICAgeworICAg
ICAgICByZXR1cm4gdGhpcy5fZmxvd3M7CisgICAgfSwKKworICAgIGdldCBmbG93c0NvdW50KCkK
KyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9mbG93c0NvdW50OworICAgIH0sCisKICAgICBp
bnZhbGlkYXRlOiBmdW5jdGlvbigpCiAgICAgewogICAgICAgICAvLyBTZXQgdG8gbnVsbCBzbyBp
dCBpcyBmZXRjaGVkIGFnYWluIG5leHQgdGltZSByZXF1ZXN0Um9vdERPTU5vZGUgaXMgY2FsbGVk
LgpAQCAtMjMwLDYgKzI1MCwxMTAgQEAgV2ViSW5zcGVjdG9yLkRPTVRyZWUucHJvdG90eXBlID0g
ewogCiAgICAgICAgICAgICB0aGlzLl9yZXF1ZXN0Um9vdERPTU5vZGUoKTsKICAgICAgICAgfQor
ICAgIH0sCisKKyAgICByZXF1ZXN0Rmxvd0xpc3Q6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAg
IHRoaXMucmVxdWVzdFJvb3RET01Ob2RlKGZ1bmN0aW9uKHJvb3ROb2RlKSB7CisgICAgICAgICAg
ICAvLyBMZXQgdGhlIGJhY2tlbmQga25vdyB3ZSBhcmUgaW50ZXJlc3RlZCBhYm91dCB0aGUgbmFt
ZWQgZmxvdyBldmVudHMgZm9yIHRoaXMgZG9jdW1lbnQuCisgICAgICAgICAgICBXZWJJbnNwZWN0
b3IuZG9tVHJlZU1hbmFnZXIuZ2V0TmFtZWRGbG93Q29sbGVjdGlvbihyb290Tm9kZS5pZCk7Cisg
ICAgICAgIH0pOworICAgIH0sCisKKyAgICBfaXNGbG93SW5DdXJyZW50RG9jdW1lbnQ6IGZ1bmN0
aW9uKGZsb3cpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fcm9vdERPTU5vZGUgJiYgKGZs
b3cuZG9jdW1lbnROb2RlSWQgPT09IHRoaXMuX3Jvb3RET01Ob2RlLmlkKTsKKyAgICB9LAorCisg
ICAgX2Zsb3dMaXN0V2FzVXBkYXRlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgeworICAgICAgICBp
ZiAoIXRoaXMuX3Jvb3RET01Ob2RlIHx8IHRoaXMuX3Jvb3RET01Ob2RlLmlkICE9PSBldmVudC5k
YXRhLmRvY3VtZW50Tm9kZUlkKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIC8vIEFz
c3VtZSB0aGF0IGFsbCB0aGUgZmxvd3MgaGF2ZSBiZWVuIHJlbW92ZWQuCisgICAgICAgIHZhciBk
ZWxldGVkRmxvd3MgPSB7fTsKKyAgICAgICAgZm9yICh2YXIgZmxvd0tleSBpbiB0aGlzLl9mbG93
cykKKyAgICAgICAgICAgIGRlbGV0ZWRGbG93c1tmbG93S2V5XSA9IHRoaXMuX2Zsb3dzW2Zsb3dL
ZXldOworCisgICAgICAgIHZhciBuZXdGbG93cyA9IFtdOworCisgICAgICAgIHZhciBmbG93cyA9
IGV2ZW50LmRhdGEuZmxvd3M7CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZmxvd3MubGVu
Z3RoOyArK2kpIHsKKyAgICAgICAgICAgIHZhciBmbG93ID0gZmxvd3NbaV07CisgICAgICAgICAg
ICAvLyBBbGwgdGhlIGZsb3dzIHJlY2VpdmVkIGZyb20gV2ViS2l0IGFyZSBwYXJ0IG9mIHRoZSBz
YW1lIGRvY3VtZW50LgorICAgICAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5faXNGbG93SW5D
dXJyZW50RG9jdW1lbnQoZmxvdykpOworCisgICAgICAgICAgICB2YXIgZmxvd0tleSA9IFdlYklu
c3BlY3Rvci5Db250ZW50Rmxvdy5oYXNoS2V5KGZsb3cpOworICAgICAgICAgICAgaWYgKHRoaXMu
X2Zsb3dzLmhhc093blByb3BlcnR5KGZsb3dLZXkpKSB7CisgICAgICAgICAgICAgICAgLy8gUmVt
b3ZlIHRoZSBmbG93IG5hbWUgZnJvbSB0aGUgZGVsZXRlZCBsaXN0LgorICAgICAgICAgICAgICAg
IGNvbnNvbGUuYXNzZXJ0KGRlbGV0ZWRGbG93cy5oYXNPd25Qcm9wZXJ0eShmbG93S2V5KSk7Cisg
ICAgICAgICAgICAgICAgZGVsZXRlIGRlbGV0ZWRGbG93c1tmbG93S2V5XTsKKyAgICAgICAgICAg
ICAgICB0aGlzLl9mbG93c1tmbG93S2V5XS51cGRhdGUoZmxvdyk7CisgICAgICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgICAgIHZhciBjb250ZW50RmxvdyA9IG5ldyBXZWJJbnNwZWN0b3Iu
Q29udGVudEZsb3coZmxvdyk7CisgICAgICAgICAgICAgICAgdGhpcy5fZmxvd3NbZmxvd0tleV0g
PSBjb250ZW50RmxvdzsKKyAgICAgICAgICAgICAgICBuZXdGbG93cy5wdXNoKGNvbnRlbnRGbG93
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGZvciAodmFyIGZsb3dLZXkg
aW4gZGVsZXRlZEZsb3dzKSB7CisgICAgICAgICAgICAtLXRoaXMuX2Zsb3dzQ291bnQ7CisgICAg
ICAgICAgICBkZWxldGUgdGhpcy5fZmxvd3NbZmxvd0tleV07CisgICAgICAgIH0KKyAgICAgICAg
dGhpcy5fZmxvd3NDb3VudCArPSBuZXdGbG93cy5sZW5ndGg7CisKKyAgICAgICAgLy8gU2VuZCB1
cGRhdGUgZXZlbnRzIHRvIGxpc3RlbmVycy4KKworICAgICAgICBmb3IgKHZhciBmbG93S2V5IGlu
IGRlbGV0ZWRGbG93cykKKyAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJz
KFdlYkluc3BlY3Rvci5ET01UcmVlLkV2ZW50LkZsb3dXYXNSZW1vdmVkLCB7ZmxvdzogZGVsZXRl
ZEZsb3dzW2Zsb3dLZXldfSk7CisKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuZXdGbG93
cy5sZW5ndGg7ICsraSkKKyAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJz
KFdlYkluc3BlY3Rvci5ET01UcmVlLkV2ZW50LkZsb3dXYXNBZGRlZCwge2Zsb3c6IG5ld0Zsb3dz
W2ldfSk7CisgICAgfSwKKworICAgIF9mbG93V2FzQWRkZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAg
IHsKKyAgICAgICAgdmFyIGZsb3cgPSBldmVudC5kYXRhLmZsb3c7CisgICAgICAgIGlmICghdGhp
cy5faXNGbG93SW5DdXJyZW50RG9jdW1lbnQoZmxvdykpCisgICAgICAgICAgICByZXR1cm47CisK
KyAgICAgICAgdmFyIGZsb3dLZXkgPSBXZWJJbnNwZWN0b3IuQ29udGVudEZsb3cuaGFzaEtleShm
bG93KTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoIXRoaXMuX2Zsb3dzLmhhc093blByb3BlcnR5
KGZsb3dLZXkpKTsKKyAgICAgICAgCisgICAgICAgIHZhciBjb250ZW50RmxvdyA9IG5ldyBXZWJJ
bnNwZWN0b3IuQ29udGVudEZsb3coZmxvdyk7CisgICAgICAgIHRoaXMuX2Zsb3dzW2Zsb3dLZXld
ID0gY29udGVudEZsb3c7CisKKyAgICAgICAgKyt0aGlzLl9mbG93c0NvdW50OworCisgICAgICAg
IHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5ET01UcmVlLkV2ZW50
LkZsb3dXYXNBZGRlZCwge2Zsb3c6IGNvbnRlbnRGbG93fSk7CisgICAgfSwKKworICAgIF9mbG93
V2FzUmVtb3ZlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgeworICAgICAgICB2YXIgZmxvdyA9IGV2
ZW50LmRhdGEuZmxvdzsKKyAgICAgICAgaWYgKCF0aGlzLl9pc0Zsb3dJbkN1cnJlbnREb2N1bWVu
dChmbG93KSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB2YXIgZmxvd0tleSA9IFdl
Ykluc3BlY3Rvci5Db250ZW50Rmxvdy5oYXNoS2V5KGZsb3cpOworICAgICAgICBjb25zb2xlLmFz
c2VydCh0aGlzLl9mbG93cy5oYXNPd25Qcm9wZXJ0eShmbG93S2V5KSk7CisgICAgICAgIGZsb3cg
PSB0aGlzLl9mbG93c1tmbG93S2V5XTsKKyAgICAgICAgZGVsZXRlIHRoaXMuX2Zsb3dzW2Zsb3dL
ZXldOworCisgICAgICAgIC0tdGhpcy5fZmxvd3NDb3VudDsKKworICAgICAgICB0aGlzLmRpc3Bh
dGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuRE9NVHJlZS5FdmVudC5GbG93V2FzUmVt
b3ZlZCwge2Zsb3c6IGZsb3d9KTsKKyAgICB9LAorCisgICAgX2Zsb3dXYXNDaGFuZ2VkOiBmdW5j
dGlvbihldmVudCkKKyAgICB7CisgICAgICAgIHZhciBmbG93ID0gZXZlbnQuZGF0YS5mbG93Owor
ICAgICAgICBpZiAoIXRoaXMuX2lzRmxvd0luQ3VycmVudERvY3VtZW50KGZsb3cpKQorICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICAKKyAgICAgICAgdmFyIGZsb3dLZXkgPSBXZWJJbnNwZWN0
b3IuQ29udGVudEZsb3cuaGFzaEtleShmbG93KTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQodGhp
cy5fZmxvd3MuaGFzT3duUHJvcGVydHkoZmxvd0tleSkpOworCisgICAgICAgIHRoaXMuX2Zsb3dz
W2Zsb3dLZXldLnVwZGF0ZShmbG93KTsKICAgICB9CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9ET01UcmVlTWFuYWdlci5qcyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0RPTVRyZWVNYW5hZ2VyLmpzCmluZGV4IDgxODI0
ZGIuLjhjMGI4YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL0RPTVRyZWVNYW5hZ2VyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL0RPTVRyZWVNYW5hZ2VyLmpzCkBAIC01Miw3ICs1MiwxMiBAQCBXZWJJbnNwZWN0b3Iu
RE9NVHJlZU1hbmFnZXIuRXZlbnQgPSB7CiAgICAgRG9jdW1lbnRVcGRhdGVkOiAiZG9tLXRyZWUt
bWFuYWdlci1kb2N1bWVudC11cGRhdGVkIiwKICAgICBDaGlsZE5vZGVDb3VudFVwZGF0ZWQ6ICJk
b20tdHJlZS1tYW5hZ2VyLWNoaWxkLW5vZGUtY291bnQtdXBkYXRlZCIsCiAgICAgRE9NTm9kZVdh
c0luc3BlY3RlZDogImRvbS10cmVlLW1hbmFnZXItZG9tLW5vZGUtd2FzLWluc3BlY3RlZCIsCi0g
ICAgSW5zcGVjdE1vZGVTdGF0ZUNoYW5nZWQ6ICJkb20tdHJlZS1tYW5hZ2VyLWluc3BlY3QtbW9k
ZS1zdGF0ZS1jaGFuZ2VkIgorICAgIEluc3BlY3RNb2RlU3RhdGVDaGFuZ2VkOiAiZG9tLXRyZWUt
bWFuYWdlci1pbnNwZWN0LW1vZGUtc3RhdGUtY2hhbmdlZCIsCisgICAgRmxvd0xpc3RXYXNVcGRh
dGVkOiAiZG9tLXRyZWUtbWFuYWdlci1mbG93LWxpc3Qtd2FzLXVwZGF0ZWQiLAorICAgIEZsb3dX
YXNBZGRlZDogImRvbS10cmVlLW1hbmFnZXItZmxvdy13YXMtYWRkZWQiLAorICAgIEZsb3dXYXNS
ZW1vdmVkOiAiZG9tLXRyZWUtbWFuYWdlci1mbG93LXdhcy1yZW1vdmVkIiwKKyAgICBSZWdpb25M
YXlvdXRVcGRhdGVkOiAiZG9tLXRyZWUtbWFuYWdlci1yZWdpb24tbGF5b3V0LXVwZGF0ZWQiLAor
ICAgIFJlZ2lvbk92ZXJzZXRDaGFuZ2VkOiAiZG9tLXRyZWUtbWFuYWdlci1yZWdpb24tb3ZlcnNl
dC1jaGFuZ2VkIgogfTsKIAogV2ViSW5zcGVjdG9yLkRPTVRyZWVNYW5hZ2VyLnByb3RvdHlwZSA9
IHsKQEAgLTUxOSw2ICs1MjQsNDMgQEAgV2ViSW5zcGVjdG9yLkRPTVRyZWVNYW5hZ2VyLnByb3Rv
dHlwZSA9IHsKICAgICAgICAgICAgIGhpZ2hsaWdodENvbmZpZy5tYXJnaW5Db2xvciA9IHtyOiAy
NDYsIGc6IDE3OCwgYjogMTA3LCBhOiAwLjY2fTsKIAogICAgICAgICByZXR1cm4gaGlnaGxpZ2h0
Q29uZmlnOworICAgIH0sCisKKyAgICBnZXROYW1lZEZsb3dDb2xsZWN0aW9uOiBmdW5jdGlvbihk
b2N1bWVudE5vZGVJZCkKKyAgICB7CisgICAgICAgIGZ1bmN0aW9uIG9uTmFtZWRGbG93Q29sbGVj
dGlvbkF2YWlsYWJsZShlcnJvciwgZmxvd3MpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChl
cnJvcikgeworICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoIkVycm9yIHdoaWxlIGdldHRp
bmcgdGhlIG5hbWVkIGZsb3dzIGZvciBkb2N1bWVudCAiICsgZG9jdW1lbnROb2RlSWQgKyAiOiAi
ICsgZXJyb3IpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5ET01UcmVl
TWFuYWdlci5FdmVudC5GbG93TGlzdFdhc1VwZGF0ZWQsIHtkb2N1bWVudE5vZGVJZDogZG9jdW1l
bnROb2RlSWQsIGZsb3dzOiBmbG93c30pOworICAgICAgICB9CisgICAgICAgIENTU0FnZW50Lmdl
dE5hbWVkRmxvd0NvbGxlY3Rpb24oZG9jdW1lbnROb2RlSWQsIG9uTmFtZWRGbG93Q29sbGVjdGlv
bkF2YWlsYWJsZS5iaW5kKHRoaXMpKTsKKyAgICB9LAorCisgICAgbmFtZWRGbG93Q3JlYXRlZDog
ZnVuY3Rpb24oZmxvdykKKyAgICB7CisgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVu
ZXJzKFdlYkluc3BlY3Rvci5ET01UcmVlTWFuYWdlci5FdmVudC5GbG93V2FzQWRkZWQsIHtmbG93
OiBmbG93fSk7CisgICAgfSwKKworICAgIG5hbWVkRmxvd1JlbW92ZWQ6IGZ1bmN0aW9uKGRvY3Vt
ZW50Tm9kZUlkLCBmbG93TmFtZSkKKyAgICB7CisgICAgICAgIHZhciBmbG93ID0geworICAgICAg
ICAgICAgZG9jdW1lbnROb2RlSWQ6IGRvY3VtZW50Tm9kZUlkLAorICAgICAgICAgICAgbmFtZTog
Zmxvd05hbWUKKyAgICAgICAgfTsKKyAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5l
cnMoV2ViSW5zcGVjdG9yLkRPTVRyZWVNYW5hZ2VyLkV2ZW50LkZsb3dXYXNSZW1vdmVkLCB7Zmxv
dzogZmxvd30pOworICAgIH0sCisKKyAgICByZWdpb25MYXlvdXRVcGRhdGVkOiBmdW5jdGlvbihm
bG93KQorICAgIHsKKyAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5z
cGVjdG9yLkRPTVRyZWVNYW5hZ2VyLkV2ZW50LlJlZ2lvbkxheW91dFVwZGF0ZWQsIHtmbG93OiBm
bG93fSk7CisgICAgfSwKKworICAgIHJlZ2lvbk92ZXJzZXRDaGFuZ2VkOiBmdW5jdGlvbihmbG93
KQorICAgIHsKKyAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVj
dG9yLkRPTVRyZWVNYW5hZ2VyLkV2ZW50LlJlZ2lvbk92ZXJzZXRDaGFuZ2VkLCB7ZmxvdzogZmxv
d30pOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvRnJhbWVUcmVlRWxlbWVudC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL0ZyYW1lVHJlZUVsZW1lbnQuanMKaW5kZXggNDAyNTVhOC4uYzI3YWY5ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvRnJhbWVUcmVlRWxl
bWVudC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9GcmFtZVRy
ZWVFbGVtZW50LmpzCkBAIC00MCw2ICs0MCwxMCBAQCBXZWJJbnNwZWN0b3IuRnJhbWVUcmVlRWxl
bWVudCA9IGZ1bmN0aW9uKGZyYW1lLCByZXByZXNlbnRlZE9iamVjdCkKICAgICBmcmFtZS5hZGRF
dmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5GcmFtZS5FdmVudC5DaGlsZEZyYW1lV2FzQWRkZWQs
IHRoaXMuX2NoaWxkRnJhbWVXYXNBZGRlZCwgdGhpcyk7CiAgICAgZnJhbWUuYWRkRXZlbnRMaXN0
ZW5lcihXZWJJbnNwZWN0b3IuRnJhbWUuRXZlbnQuQ2hpbGRGcmFtZVdhc1JlbW92ZWQsIHRoaXMu
X2NoaWxkRnJhbWVXYXNSZW1vdmVkLCB0aGlzKTsKIAorICAgIGZyYW1lLmRvbVRyZWUuYWRkRXZl
bnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRE9NVHJlZS5FdmVudC5GbG93V2FzQWRkZWQsIHRoaXMu
X2NoaWxkRmxvd1dhc0FkZGVkLCB0aGlzKTsKKyAgICBmcmFtZS5kb21UcmVlLmFkZEV2ZW50TGlz
dGVuZXIoV2ViSW5zcGVjdG9yLkRPTVRyZWUuRXZlbnQuRmxvd1dhc1JlbW92ZWQsIHRoaXMuX2No
aWxkRmxvd1dhc1JlbW92ZWQsIHRoaXMpOworICAgIGZyYW1lLmRvbVRyZWUuYWRkRXZlbnRMaXN0
ZW5lcihXZWJJbnNwZWN0b3IuRE9NVHJlZS5FdmVudC5Sb290RE9NTm9kZUludmFsaWRhdGVkLCB0
aGlzLl9yb290RE9NTm9kZUludmFsaWRhdGVkLCB0aGlzKTsKKwogICAgIGlmICh0aGlzLl9mcmFt
ZS5pc01haW5GcmFtZSgpKSB7CiAgICAgICAgIHRoaXMuX2Rvd25sb2FkaW5nUGFnZSA9IGZhbHNl
OwogICAgICAgICBXZWJJbnNwZWN0b3Iubm90aWZpY2F0aW9ucy5hZGRFdmVudExpc3RlbmVyKFdl
Ykluc3BlY3Rvci5Ob3RpZmljYXRpb24uUGFnZUFyY2hpdmVTdGFydGVkLCB0aGlzLl9wYWdlQXJj
aGl2ZVN0YXJ0ZWQsIHRoaXMpOwpAQCAtMTc2LDExICsxODAsMTYgQEAgV2ViSW5zcGVjdG9yLkZy
YW1lVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7
IGogPCBzb3VyY2VNYXAucmVzb3VyY2VzLmxlbmd0aDsgKytqKQogICAgICAgICAgICAgdGhpcy5f
YWRkVHJlZUVsZW1lbnRGb3JSZXByZXNlbnRlZE9iamVjdChzb3VyY2VNYXAucmVzb3VyY2VzW2pd
KTsKICAgICAgICAgfQorCisgICAgICAgIHZhciBmbG93cyA9IHRoaXMuX2ZyYW1lLmRvbVRyZWUu
Zmxvd3M7CisgICAgICAgIGZvciAodmFyIGZsb3dLZXkgaW4gZmxvd3MpCisgICAgICAgICAgICB0
aGlzLl9hZGRUcmVlRWxlbWVudEZvclJlcHJlc2VudGVkT2JqZWN0KGZsb3dzW2Zsb3dLZXldKTsK
ICAgICB9LAogCiAgICAgb25leHBhbmQ6IGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIHRoaXMu
X2V4cGFuZGVkU2V0dGluZy52YWx1ZSA9IHRydWU7CisgICAgICAgIHRoaXMuX2ZyYW1lLmRvbVRy
ZWUucmVxdWVzdEZsb3dMaXN0KCk7CiAgICAgfSwKIAogICAgIG9uY29sbGFwc2U6IGZ1bmN0aW9u
KCkKQEAgLTI2NCw2ICsyNzMsMjEgQEAgV2ViSW5zcGVjdG9yLkZyYW1lVHJlZUVsZW1lbnQucHJv
dG90eXBlID0gewogICAgICAgICB0aGlzLl9yZW1vdmVDaGlsZEZvclJlcHJlc2VudGVkT2JqZWN0
KGV2ZW50LmRhdGEuY2hpbGRGcmFtZSk7CiAgICAgfSwKIAorICAgIF9jaGlsZEZsb3dXYXNBZGRl
ZDogZnVuY3Rpb24oZXZlbnQpCisgICAgeworICAgICAgICB0aGlzLl9hZGRSZXByZXNlbnRlZE9i
amVjdFRvTmV3Q2hpbGRRdWV1ZShldmVudC5kYXRhLmZsb3cpOworICAgIH0sCisKKyAgICBfY2hp
bGRGbG93V2FzUmVtb3ZlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgeworICAgICAgICB0aGlzLl9y
ZW1vdmVDaGlsZEZvclJlcHJlc2VudGVkT2JqZWN0KGV2ZW50LmRhdGEuZmxvdyk7CisgICAgfSwK
KworICAgIF9yb290RE9NTm9kZUludmFsaWRhdGVkOiBmdW5jdGlvbigpIHsKKyAgICAgICAgaWYg
KHRoaXMuZXhwYW5kZWQpCisgICAgICAgICAgICB0aGlzLl9mcmFtZS5kb21UcmVlLnJlcXVlc3RG
bG93TGlzdCgpOworICAgIH0sCisKICAgICBfYWRkUmVwcmVzZW50ZWRPYmplY3RUb05ld0NoaWxk
UXVldWU6IGZ1bmN0aW9uKHJlcHJlc2VudGVkT2JqZWN0KQogICAgIHsKICAgICAgICAgLy8gVGhp
cyBxdWV1ZSByZWR1Y2VzIGZsYXNoaW5nIGFzIHJlc291cmNlcyBsb2FkIGFuZCBjaGFuZ2UgZm9s
ZGVycyB3aGVuIHRoZWlyIHR5cGUgYmVjb21lcyBrbm93bi4KQEAgLTI5OCw4ICszMjIsOCBAQCBX
ZWJJbnNwZWN0b3IuRnJhbWVUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAKICAgICBfYWRkQ2hp
bGRGb3JSZXByZXNlbnRlZE9iamVjdDogZnVuY3Rpb24ocmVwcmVzZW50ZWRPYmplY3QpCiAgICAg
ewotICAgICAgICBjb25zb2xlLmFzc2VydChyZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdl
Ykluc3BlY3Rvci5SZXNvdXJjZSB8fCByZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdlYklu
c3BlY3Rvci5GcmFtZSk7Ci0gICAgICAgIGlmICghKHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNl
b2YgV2ViSW5zcGVjdG9yLlJlc291cmNlIHx8IHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2Yg
V2ViSW5zcGVjdG9yLkZyYW1lKSkKKyAgICAgICAgY29uc29sZS5hc3NlcnQocmVwcmVzZW50ZWRP
YmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuUmVzb3VyY2UgfHwgcmVwcmVzZW50ZWRPYmpl
Y3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuRnJhbWUgfHwgcmVwcmVzZW50ZWRPYmplY3QgaW5z
dGFuY2VvZiBXZWJJbnNwZWN0b3IuQ29udGVudEZsb3cpOworICAgICAgICBpZiAoIShyZXByZXNl
bnRlZE9iamVjdCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5SZXNvdXJjZSB8fCByZXByZXNlbnRl
ZE9iamVjdCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5GcmFtZSB8fCByZXByZXNlbnRlZE9iamVj
dCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5Db250ZW50RmxvdykpCiAgICAgICAgICAgICByZXR1
cm47CiAKICAgICAgICAgdGhpcy5fdXBkYXRlUGFyZW50U3RhdHVzKCk7CkBAIC0zMjIsOCArMzQ2
LDggQEAgV2ViSW5zcGVjdG9yLkZyYW1lVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogCiAgICAg
X3JlbW92ZUNoaWxkRm9yUmVwcmVzZW50ZWRPYmplY3Q6IGZ1bmN0aW9uKHJlcHJlc2VudGVkT2Jq
ZWN0KQogICAgIHsKLSAgICAgICAgY29uc29sZS5hc3NlcnQocmVwcmVzZW50ZWRPYmplY3QgaW5z
dGFuY2VvZiBXZWJJbnNwZWN0b3IuUmVzb3VyY2UgfHwgcmVwcmVzZW50ZWRPYmplY3QgaW5zdGFu
Y2VvZiBXZWJJbnNwZWN0b3IuRnJhbWUpOwotICAgICAgICBpZiAoIShyZXByZXNlbnRlZE9iamVj
dCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5SZXNvdXJjZSB8fCByZXByZXNlbnRlZE9iamVjdCBp
bnN0YW5jZW9mIFdlYkluc3BlY3Rvci5GcmFtZSkpCisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHJl
cHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlJlc291cmNlIHx8IHJlcHJl
c2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkZyYW1lIHx8IHJlcHJlc2VudGVk
T2JqZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkNvbnRlbnRGbG93KTsKKyAgICAgICAgaWYg
KCEocmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuUmVzb3VyY2UgfHwg
cmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuRnJhbWUgfHwgcmVwcmVz
ZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuQ29udGVudEZsb3cpKQogICAgICAg
ICAgICAgcmV0dXJuOwogCiAgICAgICAgIHRoaXMuX3JlbW92ZVJlcHJlc2VudGVkT2JqZWN0RnJv
bU5ld0NoaWxkUXVldWUocmVwcmVzZW50ZWRPYmplY3QpOwpAQCAtMzU1LDYgKzM3OSw4IEBAIFdl
Ykluc3BlY3Rvci5GcmFtZVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgICAg
ICBjaGlsZFRyZWVFbGVtZW50ID0gbmV3IFdlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVFbGVtZW50
KHJlcHJlc2VudGVkT2JqZWN0KTsKICAgICAgICAgICAgIGVsc2UgaWYgKHJlcHJlc2VudGVkT2Jq
ZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkZyYW1lKQogICAgICAgICAgICAgICAgIGNoaWxk
VHJlZUVsZW1lbnQgPSBuZXcgV2ViSW5zcGVjdG9yLkZyYW1lVHJlZUVsZW1lbnQocmVwcmVzZW50
ZWRPYmplY3QpOworICAgICAgICAgICAgZWxzZSBpZiAocmVwcmVzZW50ZWRPYmplY3QgaW5zdGFu
Y2VvZiBXZWJJbnNwZWN0b3IuQ29udGVudEZsb3cpCisgICAgICAgICAgICAgICAgY2hpbGRUcmVl
RWxlbWVudCA9IG5ldyBXZWJJbnNwZWN0b3IuQ29udGVudEZsb3dUcmVlRWxlbWVudChyZXByZXNl
bnRlZE9iamVjdCk7CiAgICAgICAgIH0KIAogICAgICAgICB0aGlzLl9hZGRUcmVlRWxlbWVudChj
aGlsZFRyZWVFbGVtZW50KTsKQEAgLTM5MiwxMCArNDE4LDI3IEBAIFdlYkluc3BlY3Rvci5GcmFt
ZVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5pbnNlcnRDaGlsZChmb2xk
ZXJUcmVlRWxlbWVudCwgaW5zZXJ0aW9uSW5kZXhGb3JPYmplY3RJbkxpc3RTb3J0ZWRCeUZ1bmN0
aW9uKGZvbGRlclRyZWVFbGVtZW50LCB0aGlzLmNoaWxkcmVuLCB0aGlzLl9jb21wYXJlVHJlZUVs
ZW1lbnRzQnlNYWluVGl0bGUpKTsKICAgICB9LAogCisgICAgX2NvbXBhcmVSZXNvdXJjZVRyZWVF
bGVtZW50czogZnVuY3Rpb24oYSwgYikKKyAgICB7CisgICAgICAgIHZhciBhSXNSZXNvdXJjZSA9
IGEgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlRWxlbWVudDsKKyAgICAgICAg
dmFyIGJJc1Jlc291cmNlID0gYiBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVF
bGVtZW50OworCisgICAgICAgIGlmIChhSXNSZXNvdXJjZSAmJiBiSXNSZXNvdXJjZSkKKyAgICAg
ICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlRWxlbWVudC5jb21wYXJlUmVz
b3VyY2VUcmVlRWxlbWVudHMoYSwgYik7CisKKyAgICAgICAgaWYgKCFhSXNSZXNvdXJjZSAmJiAh
YklzUmVzb3VyY2UpIHsKKyAgICAgICAgICAgIC8vIFdoZW4gYm90aCBjb21wb25lbnRzIGFyZSBu
b3QgcmVzb3VyY2VzIHRoZW4ganVzdCBjb21wYXJlIHRoZSB0aXRsZXMuCisgICAgICAgICAgICBy
ZXR1cm4gYS5tYWluVGl0bGUubG9jYWxlQ29tcGFyZShiLm1haW5UaXRsZSk7CisgICAgICAgIH0K
KyAgICAgICAgCisgICAgICAgIC8vIE5vbi1yZXNvdXJjZXMgc2hvdWxkIGFwcGVhciBiZWZvcmUg
dGhlIHJlc291cmNlcy4KKyAgICAgICAgcmV0dXJuIGFJc1Jlc291cmNlID8gMSA6IC0xOworICAg
IH0sCisKICAgICBfaW5zZXJ0UmVzb3VyY2VUcmVlRWxlbWVudDogZnVuY3Rpb24ocGFyZW50VHJl
ZUVsZW1lbnQsIGNoaWxkVHJlZUVsZW1lbnQpCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2Vy
dCghY2hpbGRUcmVlRWxlbWVudC5wYXJlbnQpOwotICAgICAgICBwYXJlbnRUcmVlRWxlbWVudC5p
bnNlcnRDaGlsZChjaGlsZFRyZWVFbGVtZW50LCBpbnNlcnRpb25JbmRleEZvck9iamVjdEluTGlz
dFNvcnRlZEJ5RnVuY3Rpb24oY2hpbGRUcmVlRWxlbWVudCwgcGFyZW50VHJlZUVsZW1lbnQuY2hp
bGRyZW4sIFdlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVFbGVtZW50LmNvbXBhcmVSZXNvdXJjZVRy
ZWVFbGVtZW50cykpOworICAgICAgICBwYXJlbnRUcmVlRWxlbWVudC5pbnNlcnRDaGlsZChjaGls
ZFRyZWVFbGVtZW50LCBpbnNlcnRpb25JbmRleEZvck9iamVjdEluTGlzdFNvcnRlZEJ5RnVuY3Rp
b24oY2hpbGRUcmVlRWxlbWVudCwgcGFyZW50VHJlZUVsZW1lbnQuY2hpbGRyZW4sIHRoaXMuX2Nv
bXBhcmVSZXNvdXJjZVRyZWVFbGVtZW50cykpOwogICAgIH0sCiAKICAgICBfcmVtb3ZlVHJlZUVs
ZW1lbnQ6IGZ1bmN0aW9uKGNoaWxkVHJlZUVsZW1lbnQsIHN1cHByZXNzT25EZXNlbGVjdCwgc3Vw
cHJlc3NTZWxlY3RTaWJsaW5nKQpAQCAtNDQ1LDYgKzQ4OCwxMiBAQCBXZWJJbnNwZWN0b3IuRnJh
bWVUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICByZXR1cm4gdGhpcy5fZnJh
bWVzRm9sZGVyVHJlZUVsZW1lbnQ7CiAgICAgICAgIH0KIAorICAgICAgICBpZiAocmVwcmVzZW50
ZWRPYmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuQ29udGVudEZsb3cpIHsKKyAgICAgICAg
ICAgIGlmICghdGhpcy5fZmxvd3NGb2xkZXJUcmVlRWxlbWVudCkKKyAgICAgICAgICAgICAgICB0
aGlzLl9mbG93c0ZvbGRlclRyZWVFbGVtZW50ID0gY3JlYXRlRm9sZGVyVHJlZUVsZW1lbnQuY2Fs
bCh0aGlzLCAiZmxvd3MiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkZsb3dzIikpOworICAgICAg
ICAgICAgcmV0dXJuIHRoaXMuX2Zsb3dzRm9sZGVyVHJlZUVsZW1lbnQ7CisgICAgICAgIH0KKwog
ICAgICAgICBpZiAocmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuUmVz
b3VyY2UpIHsKICAgICAgICAgICAgIHZhciBmb2xkZXJOYW1lID0gdGhpcy5fZm9sZGVyTmFtZUZv
clJlc291cmNlVHlwZShyZXByZXNlbnRlZE9iamVjdC50eXBlKTsKICAgICAgICAgICAgIGlmICgh
Zm9sZGVyTmFtZSkKQEAgLTQ4NCw2ICs1MzMsOSBAQCBXZWJJbnNwZWN0b3IuRnJhbWVUcmVlRWxl
bWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHZhciBudW1iZXJPZk1lZGl1bUNhdGVnb3JpZXMg
PSAwOwogICAgICAgICB2YXIgZm91bmRMYXJnZUNhdGVnb3J5ID0gZmFsc2U7CiAKKyAgICAgICAg
Ly8gRklYTUU6IFVzZSB0aGlzLl9mcmFtZS5kb21UcmVlLmZsb3dzQ291bnQgdG8gY291bnQgdGhl
IG51bWJlciBvZiBmbG93cyBpbiBhIGZyYW1lLgorICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIyOTI2CisKICAgICAgICAgaWYgKHRoaXMuX2ZyYW1l
LmNoaWxkRnJhbWVzLmxlbmd0aCA+PSBXZWJJbnNwZWN0b3IuRnJhbWVUcmVlRWxlbWVudC5MYXJn
ZUNoaWxkQ291bnRUaHJlc2hvbGQpCiAgICAgICAgICAgICBmb3VuZExhcmdlQ2F0ZWdvcnkgPSB0
cnVlOwogICAgICAgICBlbHNlIGlmICh0aGlzLl9mcmFtZS5jaGlsZEZyYW1lcy5sZW5ndGggPj0g
V2ViSW5zcGVjdG9yLkZyYW1lVHJlZUVsZW1lbnQuTWVkaXVtQ2hpbGRDb3VudFRocmVzaG9sZCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0ltYWdlcy9D
b250ZW50Rmxvdy5zdmcgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9JbWFn
ZXMvQ29udGVudEZsb3cuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ2
ZmM3MjcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9JbWFnZXMvQ29udGVudEZsb3cuc3ZnCkBAIC0wLDAgKzEsMTAgQEAKKzw/eG1sIHZlcnNp
b249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8IS0tIENvcHlyaWdodCDCqSAyMDEzIEFkb2Jl
IFN5c3RlbXMgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLiAtLT4KKzxzdmcgdmVyc2lvbj0iMS4x
IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDAgMTAw
Ij4KKwk8cGF0aCBmaWxsPSIjNzA3MDcwIiBkPSJNODEuMjUsNi4yNWgtNjIuNWMtNi44ODUsMC0x
Mi41LDUuNjE1LTEyLjUsMTIuNXY2Mi41YzAsNi44ODUsNS42MTUsMTIuNSwxMi41LDEyLjVoNjIu
NQorCQljNi44ODUsMCwxMi41LTUuNjE1LDEyLjUtMTIuNXYtNjIuNUM5My43NSwxMS44NjUsODgu
MTM1LDYuMjUsODEuMjUsNi4yNSBNODEuMjUsMTIuNWMzLjQ0MiwwLDYuMjUsMi44MDgsNi4yNSw2
LjI1djYyLjUKKwkJYzAsMy40NDItMi44MDgsNi4yNS02LjI1LDYuMjVoLTYyLjVjLTMuNDQyLDAt
Ni4yNS0yLjgwOC02LjI1LTYuMjV2LTYyLjVjMC0zLjQ0MiwyLjgwOC02LjI1LDYuMjUtNi4yNUg4
MS4yNSIvPgorCTxyZWN0IHg9IjE3Ljg3NSIgeT0iMTkuNjI1IiBmaWxsPSIjNzE3MTcxIiB3aWR0
aD0iMjkuMjkyIiBoZWlnaHQ9IjI0LjcwOCIvPgorCTxyZWN0IHg9IjE3Ljg3NSIgeT0iNTMiIGZp
bGw9IiM3MTcxNzEiIHdpZHRoPSIxNi42MjUiIGhlaWdodD0iMjYuMjUiLz4KKwk8cmVjdCB4PSI1
NS4zNzUiIHk9IjE5LjYyNSIgZmlsbD0iIzcxNzE3MSIgd2lkdGg9IjI2LjYyNSIgaGVpZ2h0PSI2
MSIvPgorPC9zdmc+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9NYWluLmh0bWwgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9NYWlu
Lmh0bWwKaW5kZXggNWY1MmM0NC4uMzhkYzAwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvTWFpbi5odG1sCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL01haW4uaHRtbApAQCAtNDQsNiArNDQsNyBAQAogICAgIDxsaW5rIHJl
bD0ic3R5bGVzaGVldCIgaHJlZj0iQ29udGVudEJyb3dzZXIuY3NzIj4KICAgICA8bGluayByZWw9
InN0eWxlc2hlZXQiIGhyZWY9Ik5hdmlnYXRpb25TaWRlYmFyUGFuZWwuY3NzIj4KICAgICA8bGlu
ayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IlJlc291cmNlSWNvbnMuY3NzIj4KKyAgICA8bGluayBy
ZWw9InN0eWxlc2hlZXQiIGhyZWY9IkNvbnRlbnRGbG93SWNvbi5jc3MiPgogICAgIDxsaW5rIHJl
bD0ic3R5bGVzaGVldCIgaHJlZj0iRm9sZGVySWNvbi5jc3MiPgogICAgIDxsaW5rIHJlbD0ic3R5
bGVzaGVldCIgaHJlZj0iQ29udGVudFZpZXdDb250YWluZXIuY3NzIj4KICAgICA8bGluayByZWw9
InN0eWxlc2hlZXQiIGhyZWY9IkNsdXN0ZXJDb250ZW50Vmlldy5jc3MiPgpAQCAtMjMwLDYgKzIz
MSw3IEBACiAgICAgPHNjcmlwdCBzcmM9IkFwcGxpY2F0aW9uQ2FjaGVNYW5pZmVzdFRyZWVFbGVt
ZW50LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iVHJlZUVsZW1lbnRTdGF0dXNCdXR0
b24uanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJJc3N1ZU1lc3NhZ2UuanMiPjwvc2Ny
aXB0PgorICAgIDxzY3JpcHQgc3JjPSJDb250ZW50Rmxvd1RyZWVFbGVtZW50LmpzIj48L3Njcmlw
dD4KICAgICA8c2NyaXB0IHNyYz0iRnJhbWVUcmVlRWxlbWVudC5qcyI+PC9zY3JpcHQ+CiAgICAg
PHNjcmlwdCBzcmM9IkNTU0NvbXBsZXRpb25zLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNy
Yz0iQ1NTS2V5d29yZENvbXBsZXRpb25zLmpzIj48L3NjcmlwdD4KQEAgLTI2Myw2ICsyNjUsNyBA
QAogICAgIDxzY3JpcHQgc3JjPSJET01UcmVlTWFuYWdlci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNj
cmlwdCBzcmM9IkRPTU5vZGUuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJET01VdGls
aXRpZXMuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJDb250ZW50Rmxvdy5qcyI+PC9z
Y3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IkRPTVRyZWUuanMiPjwvc2NyaXB0PgogICAgIDxzY3Jp
cHQgc3JjPSJET01UcmVlT3V0bGluZS5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IkRP
TVRyZWVVcGRhdGVyLmpzIj48L3NjcmlwdD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1Jlc291cmNlU2lkZWJhclBhbmVsLmpzIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUmVzb3VyY2VTaWRlYmFyUGFuZWwuanMKaW5kZXggOTdi
ZjM5Zi4uYzQyZTdlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvUmVzb3VyY2VTaWRlYmFyUGFuZWwuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvUmVzb3VyY2VTaWRlYmFyUGFuZWwuanMKQEAgLTYxMCw2ICs2MTAsMTMg
QEAgV2ViSW5zcGVjdG9yLlJlc291cmNlU2lkZWJhclBhbmVsLnByb3RvdHlwZSA9IHsKIAogICAg
IF90cmVlRWxlbWVudFNlbGVjdGVkOiBmdW5jdGlvbih0cmVlRWxlbWVudCwgc2VsZWN0ZWRCeVVz
ZXIpCiAgICAgeworICAgICAgICBpZiAodHJlZUVsZW1lbnQgaW5zdGFuY2VvZiBXZWJJbnNwZWN0
b3IuQ29udGVudEZsb3dUcmVlRWxlbWVudCkgeworICAgICAgICAgICAgLy8gRklYTUU6IEltcGxl
bWVudCBET00gdHJlZSBpbnNwZWN0b3IgZm9yIGNvbnRlbnQgZmxvdyB0cmVlIGVsZW1lbnRzLgor
ICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEy
MjkyNworICAgICAgICAgICAgY29uc29sZS5sb2coIkNvbnRlbnQgRmxvdyB2aWV3IG5vdCBpbXBs
ZW1lbnRlZCIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKICAgICAgICAgaWYg
KHRyZWVFbGVtZW50IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkZvbGRlclRyZWVFbGVtZW50KQog
ICAgICAgICAgICAgcmV0dXJuOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>214476</attachid>
            <date>2013-10-17 11:45:24 -0700</date>
            <delta_ts>2013-10-17 13:19:17 -0700</delta_ts>
            <desc>Patch V4</desc>
            <filename>bug122924_v4.patch</filename>
            <type>text/plain</type>
            <size>35186</size>
            <attacher name="Alexandru Chiculita">achicu</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IDg0N2RjOGIuLjUwNjcwMTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcyIEBACisyMDEzLTEwLTE3ICBBbGV4YW5kcnUgQ2hp
Y3VsaXRhICA8YWNoaWN1QGFkb2JlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBDU1Mg
UmVnaW9uczogQWRkIHRoZSBsaXN0IG9mIGZsb3dzIGluIHRoZSBGcmFtZVRyZWVFbGVtZW50Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjI5MjQKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBjb2Rl
IHRvIGNvbGxlY3QgdGhlIGZsb3dzIGZyb20gdGhlIGJhY2tlbmQgaW50byB0aGUgRE9NVHJlZSBv
YmplY3QKKyAgICAgICAgb24gdGhlIGZyb250ZW5kLiBBZGRlZCBDb250ZW50RmxvdyB0byByZXBy
ZXNlbnQgdGhlIGZsb3dzIG9uIHRoZSBmcm9udGVuZAorICAgICAgICBzaWRlIGFuZCBjcmVhdGVk
IENvbnRlbnRGbG93VHJlZUVsZW1lbnQgdG8gZGlzcGxheSB0aGUgZmxvd3MgaW4gdGhlIEZyYW1l
VHJlZUVsZW1lbnQuCisKKyAgICAgICAgKiBMb2NhbGl6YXRpb25zL2VuLmxwcm9qL2xvY2FsaXpl
ZFN0cmluZ3MuanM6CisgICAgICAgICogU2NyaXB0cy9jb3B5LXVzZXItaW50ZXJmYWNlLXJlc291
cmNlcy5zaDoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0NTU09ic2VydmVyLmpzOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLkNTU09ic2VydmVyLnByb3RvdHlwZS5uYW1lZEZsb3dDcmVhdGVkKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NPYnNlcnZlci5wcm90b3R5cGUubmFtZWRGbG93UmVt
b3ZlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTT2JzZXJ2ZXIucHJvdG90eXBlLnJlZ2lv
bkxheW91dFVwZGF0ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU09ic2VydmVyLnByb3Rv
dHlwZS5yZWdpb25PdmVyc2V0Q2hhbmdlZCk6CisgICAgICAgICogVXNlckludGVyZmFjZS9Db250
ZW50Rmxvdy5qczogQWRkZWQuCisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29udGVudEZsb3cpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbnRlbnRGbG93LnByb3RvdHlwZS5nZXQgZG9jdW1lbnRO
b2RlSWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbnRlbnRGbG93LnByb3RvdHlwZS5nZXQg
bmFtZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29udGVudEZsb3cucHJvdG90eXBlLmdldCBv
dmVyc2V0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db250ZW50Rmxvdy5wcm90b3R5cGUuZ2V0
IHJlZ2lvbnMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbnRlbnRGbG93LnByb3RvdHlwZS5n
ZXQgY29udGVudCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29udGVudEZsb3cucHJvdG90eXBl
LnVwZGF0ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29udGVudEZsb3cucHJvdG90eXBlLl9k
aWZmRmxvd0NoYW5nZXMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbnRlbnRGbG93LnByb3Rv
dHlwZS5fbG9hZEZyb21KU09OKToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0NvbnRlbnRGbG93
SWNvbi5jc3M6IEFkZGVkLgorICAgICAgICAoLmNvbnRlbnQtZmxvdy1pY29uIC5pY29uKToKKyAg
ICAgICAgKiBVc2VySW50ZXJmYWNlL0NvbnRlbnRGbG93VHJlZUVsZW1lbnQuanM6IEFkZGVkLgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbnRlbnRGbG93VHJlZUVsZW1lbnQpOgorICAgICAgICAq
IFVzZXJJbnRlcmZhY2UvRE9NVHJlZS5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5ET01UcmVl
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5ET01UcmVlLl9iYWNrZW5kQ29udGVudEZsb3dIYXNo
S2V5KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5ET01UcmVlLnByb3RvdHlwZS5nZXQgZmxvd3Mp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTVRyZWUucHJvdG90eXBlLmdldCBmbG93c0NvdW50
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5ET01UcmVlLnByb3RvdHlwZS5fZnJhbWVQYWdlRXhl
Y3V0aW9uQ29udGV4dENoYW5nZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTVRyZWUucHJv
dG90eXBlLnJlcXVlc3RDb250ZW50Rmxvd0xpc3QpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRP
TVRyZWUucHJvdG90eXBlLl9pc0JhY2tlbmRDb250ZW50Rmxvd0luQ3VycmVudERvY3VtZW50KToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5ET01UcmVlLnByb3RvdHlwZS5fYmFja2VuZENvbnRlbnRG
bG93TGlzdFdhc1VwZGF0ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTVRyZWUucHJvdG90
eXBlLl9iYWNrZW5kQ29udGVudEZsb3dXYXNBZGRlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
RE9NVHJlZS5wcm90b3R5cGUuX2JhY2tlbmRDb250ZW50Rmxvd1dhc1JlbW92ZWQpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLkRPTVRyZWUucHJvdG90eXBlLl9iYWNrZW5kQ29udGVudEZsb3dXYXND
aGFuZ2VkKToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0RPTVRyZWVNYW5hZ2VyLmpzOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLkRPTVRyZWVNYW5hZ2VyLnByb3RvdHlwZS5nZXROYW1lZEZsb3dD
b2xsZWN0aW9uKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5ET01UcmVlTWFuYWdlci5wcm90b3R5
cGUubmFtZWRGbG93Q3JlYXRlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRE9NVHJlZU1hbmFn
ZXIucHJvdG90eXBlLm5hbWVkRmxvd1JlbW92ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRP
TVRyZWVNYW5hZ2VyLnByb3RvdHlwZS5yZWdpb25MYXlvdXRVcGRhdGVkKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5ET01UcmVlTWFuYWdlci5wcm90b3R5cGUucmVnaW9uT3ZlcnNldENoYW5nZWQp
OgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvRnJhbWVUcmVlRWxlbWVudC5qczoKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5GcmFtZVRyZWVFbGVtZW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5G
cmFtZVRyZWVFbGVtZW50LnByb3RvdHlwZS5vbnBvcHVsYXRlKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5GcmFtZVRyZWVFbGVtZW50LnByb3RvdHlwZS5vbmV4cGFuZCk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuRnJhbWVUcmVlRWxlbWVudC5wcm90b3R5cGUuX2NoaWxkQ29udGVudEZsb3dXYXNB
ZGRlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRnJhbWVUcmVlRWxlbWVudC5wcm90b3R5cGUu
X2NoaWxkQ29udGVudEZsb3dXYXNSZW1vdmVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5GcmFt
ZVRyZWVFbGVtZW50LnByb3RvdHlwZS5fcm9vdERPTU5vZGVJbnZhbGlkYXRlZCk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuRnJhbWVUcmVlRWxlbWVudC5wcm90b3R5cGUuX2FkZENoaWxkRm9yUmVw
cmVzZW50ZWRPYmplY3QpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkZyYW1lVHJlZUVsZW1lbnQu
cHJvdG90eXBlLl9yZW1vdmVDaGlsZEZvclJlcHJlc2VudGVkT2JqZWN0KToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5GcmFtZVRyZWVFbGVtZW50LnByb3RvdHlwZS5fYWRkVHJlZUVsZW1lbnRGb3JS
ZXByZXNlbnRlZE9iamVjdCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRnJhbWVUcmVlRWxlbWVu
dC5wcm90b3R5cGUuX2NvbXBhcmVSZXNvdXJjZVRyZWVFbGVtZW50cyk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuRnJhbWVUcmVlRWxlbWVudC5wcm90b3R5cGUuX2luc2VydFJlc291cmNlVHJlZUVs
ZW1lbnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkZyYW1lVHJlZUVsZW1lbnQucHJvdG90eXBl
Ll9wYXJlbnRUcmVlRWxlbWVudEZvclJlcHJlc2VudGVkT2JqZWN0KToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5GcmFtZVRyZWVFbGVtZW50LnByb3RvdHlwZS5fc2hvdWxkR3JvdXBJbnRvRm9sZGVy
cyk6CisgICAgICAgICogVXNlckludGVyZmFjZS9JbWFnZXMvQ29udGVudEZsb3cuc3ZnOiBBZGRl
ZC4KKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL01haW4uaHRtbDoKKyAgICAgICAgKiBVc2VySW50
ZXJmYWNlL1Jlc291cmNlU2lkZWJhclBhbmVsLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJl
c291cmNlU2lkZWJhclBhbmVsLnByb3RvdHlwZS5fdHJlZUVsZW1lbnRTZWxlY3RlZCk6CisKIDIw
MTMtMTAtMTUgIEFudG9pbmUgUXVpbnQgIDxncmFvdXRzQGFwcGxlLmNvbT4KIAogICAgICAgICBX
ZWIgSW5zcGVjdG9yOiBjYW4ndCBzZWxlY3QgdGV4dCBpbnNpZGUgYSB0ZXh0IG5vZGUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Mb2NhbGl6YXRpb25zL2VuLmxwcm9qL2xvY2Fs
aXplZFN0cmluZ3MuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvTG9jYWxpemF0aW9ucy9lbi5s
cHJvai9sb2NhbGl6ZWRTdHJpbmdzLmpzCmluZGV4IGJjYjg3MzkuLjM5MDRlZGMgMTAwNjQ0CkJp
bmFyeSBmaWxlcyBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Mb2NhbGl6YXRpb25zL2VuLmxwcm9q
L2xvY2FsaXplZFN0cmluZ3MuanMgYW5kIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0xvY2FsaXph
dGlvbnMvZW4ubHByb2ovbG9jYWxpemVkU3RyaW5ncy5qcyBkaWZmZXIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9TY3JpcHRzL2NvcHktdXNlci1pbnRlcmZhY2UtcmVzb3VyY2Vz
LnNoIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1NjcmlwdHMvY29weS11c2VyLWludGVyZmFjZS1y
ZXNvdXJjZXMuc2gKaW5kZXggMDI4YzdhNS4uYTZlZTg5ZSAxMDA3NTUKLS0tIGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1NjcmlwdHMvY29weS11c2VyLWludGVyZmFjZS1yZXNvdXJjZXMuc2gKKysr
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1NjcmlwdHMvY29weS11c2VyLWludGVyZmFjZS1yZXNv
dXJjZXMuc2gKQEAgLTEzLDYgKzEzLDcgQEAgTElDRU5TRT0kKGNhdCA8PEVPRgogICogQ29weXJp
Z2h0IChDKSAyMDEzIE1hdHQgSG9sZGVuIDxqZnRob2xkZW5AeWFob28uY29tPgogICogQ29weXJp
Z2h0IChDKSAyMDEzIFNhbXN1bmcgRWxlY3Ryb25pY3MuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KiBDb3B5cmlnaHQgKEMpIDIwMTMgU2Vva2p1IEt3b24gKHNlb2tqdS5rd29uQGdtYWlsLmNvbSkK
KyAqIENvcHlyaWdodCAoQykgMjAxMyBBZG9iZSBTeXN0ZW1zIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ1NTT2JzZXJ2ZXIuanMgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9DU1NPYnNlcnZlci5qcwppbmRleCBjZDA2NmQxLi41
NWYzNDQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9D
U1NPYnNlcnZlci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9D
U1NPYnNlcnZlci5qcwpAQCAtNTUsMTcgKzU1LDIyIEBAIFdlYkluc3BlY3Rvci5DU1NPYnNlcnZl
ci5wcm90b3R5cGUgPSB7CiAKICAgICBuYW1lZEZsb3dDcmVhdGVkOiBmdW5jdGlvbihuYW1lZEZs
b3cpCiAgICAgewotICAgICAgICAvLyBGSVhNRTogTm90IGltcGxlbWVudGVkLgorICAgICAgICBX
ZWJJbnNwZWN0b3IuZG9tVHJlZU1hbmFnZXIubmFtZWRGbG93Q3JlYXRlZChuYW1lZEZsb3cpOwog
ICAgIH0sCiAKICAgICBuYW1lZEZsb3dSZW1vdmVkOiBmdW5jdGlvbihkb2N1bWVudE5vZGVJZCwg
Zmxvd05hbWUpCiAgICAgewotICAgICAgICAvLyBGSVhNRTogTm90IGltcGxlbWVudGVkLgorICAg
ICAgICBXZWJJbnNwZWN0b3IuZG9tVHJlZU1hbmFnZXIubmFtZWRGbG93UmVtb3ZlZChkb2N1bWVu
dE5vZGVJZCwgZmxvd05hbWUpOwogICAgIH0sCiAKICAgICByZWdpb25MYXlvdXRVcGRhdGVkOiBm
dW5jdGlvbihuYW1lZEZsb3cpCiAgICAgewotICAgICAgICAvLyBGSVhNRTogTm90IGltcGxlbWVu
dGVkLgorICAgICAgICBXZWJJbnNwZWN0b3IuZG9tVHJlZU1hbmFnZXIucmVnaW9uTGF5b3V0VXBk
YXRlZChuYW1lZEZsb3cpOworICAgIH0sCisKKyAgICByZWdpb25PdmVyc2V0Q2hhbmdlZDogZnVu
Y3Rpb24obmFtZWRGbG93KQorICAgIHsKKyAgICAgICAgV2ViSW5zcGVjdG9yLmRvbVRyZWVNYW5h
Z2VyLnJlZ2lvbk92ZXJzZXRDaGFuZ2VkKG5hbWVkRmxvdyk7CiAgICAgfQogfTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udGVudEZsb3cuanMg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250ZW50Rmxvdy5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZGE4NGUyCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udGVudEZsb3cuanMKQEAg
LTAsMCArMSwxMzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQWRvYmUgU3lzdGVtcyBJ
bmNvcnBvcmF0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZQorICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyAqICAgIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCisgKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZworICogICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzCisgKiAgICBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKiAKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVIgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERF
UiBCRQorICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLAorICogT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUgorICog
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GCisgKiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YKKyAqIFNVQ0ggREFNQUdFLgorICovCisKK1dlYkluc3BlY3Rv
ci5Db250ZW50RmxvdyA9IGZ1bmN0aW9uKGRhdGEpCit7CisgICAgV2ViSW5zcGVjdG9yLk9iamVj
dC5jYWxsKHRoaXMpOworCisgICAgdGhpcy5fbG9hZEZyb21KU09OKGRhdGEpOworfTsKKworV2Vi
SW5zcGVjdG9yLkNvbnRlbnRGbG93LkV2ZW50ID0geworICAgIE92ZXJzZXRXYXNDaGFuZ2VkOiAi
Y29udGVudC1mbG93LW92ZXJzZXQtd2FzLWNoYW5nZWQiLAorICAgIENvbnRlbnRXYXNDaGFuZ2Vk
OiAiY29udGVudC1mbG93LWNvbnRlbnQtd2FzLWNoYW5nZWQiLAorICAgIFJlZ2lvbkNoYWluV2Fz
Q2hhbmdlZDogImNvbnRlbnQtZmxvdy1yZWdpb24tY2hhaW4td2FzLWNoYW5nZWQiLAorfTsKKwor
V2ViSW5zcGVjdG9yLkNvbnRlbnRGbG93LnByb3RvdHlwZSA9IHsKKworICAgIGNvbnN0cnVjdG9y
OiBXZWJJbnNwZWN0b3IuQ29udGVudEZsb3csCisKKyAgICAvLyBQdWJsaWMKKworICAgIC8qIGdl
dHRlcnMgYW5kIHNldHRlcnMgKi8KKworICAgIGdldCBkb2N1bWVudE5vZGVJZCgpCisgICAgewor
ICAgICAgICByZXR1cm4gdGhpcy5fZG9jdW1lbnROb2RlSWQ7CisgICAgfSwKKworICAgIGdldCBu
YW1lKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9uYW1lOworICAgIH0sCisKKyAgICBn
ZXQgb3ZlcnNldCgpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fb3ZlcnNldDsKKyAgICB9
LAorCisgICAgZ2V0IHJlZ2lvbnMoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3JlZ2lv
bnM7CisgICAgfSwKKworICAgIGdldCBjb250ZW50KCkKKyAgICB7CisgICAgICAgIHJldHVybiB0
aGlzLl9jb250ZW50OworICAgIH0sCisKKyAgICB1cGRhdGU6IGZ1bmN0aW9uKGRhdGEpCisgICAg
eworICAgICAgICB2YXIgZGlmZiA9IHRoaXMuX2RpZmZGbG93Q2hhbmdlcyhkYXRhKTsKKyAgICAg
ICAgdGhpcy5fbG9hZEZyb21KU09OKGRhdGEpOworCisgICAgICAgIGlmIChkaWZmLm92ZXJzZXQp
CisgICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3Iu
Q29udGVudEZsb3cuRXZlbnQuRmxvd092ZXJzZXRXYXNDaGFuZ2VkKTsKKyAgICAgICAgaWYgKGRp
ZmYuY29udGVudCkKKyAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdl
Ykluc3BlY3Rvci5Db250ZW50Rmxvdy5FdmVudC5GbG93Q29udGVudFdhc0NoYW5nZWQpOworICAg
ICAgICBpZiAoZGlmZi5yZWdpb25zKQorICAgICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9M
aXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkNvbnRlbnRGbG93LkV2ZW50LkZsb3dSZWdpb25zV2FzQ2hh
bmdlZCk7CisgICAgfSwKKworICAgIC8vIFByaXZhdGUKKworICAgIF9kaWZmRmxvd0NoYW5nZXM6
IGZ1bmN0aW9uKG90aGVyKQorICAgIHsKKyAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5fbmFt
ZSA9PT0gb3RoZXIubmFtZSk7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX2RvY3VtZW50
Tm9kZUlkID09PSBvdGhlci5kb2N1bWVudE5vZGVJZCk7CisKKyAgICAgICAgdmFyIGRpZmYgPSB7
CisgICAgICAgICAgICBmbG93T3ZlcnNldDogdGhpcy5fb3ZlcnNldCAhPT0gb3RoZXIub3ZlcnNl
dCwKKyAgICAgICAgICAgIGNvbnRlbnQ6IHRoaXMuX2NvbnRlbnQubGVuZ3RoICE9PSBvdGhlci5j
b250ZW50Lmxlbmd0aCwKKyAgICAgICAgICAgIHJlZ2lvbnM6IHRoaXMuX3JlZ2lvbnMubGVuZ3Ro
ICE9PSBvdGhlci5yZWdpb25zLmxlbmd0aAorICAgICAgICB9OworCisgICAgICAgIGlmICghZGlm
Zi5jb250ZW50KSB7CisgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuX2NvbnRl
bnQubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgICAgICBpZiAodGhpcy5fY29udGVudFtpXSAh
PT0gb3RoZXIuY29udGVudFtpXSkgeworICAgICAgICAgICAgICAgICAgICBkaWZmLmNvbnRlbnQg
PSB0cnVlOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAoIWRpZmYucmVnaW9ucykgewor
ICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLl9yZWdpb25zLmxlbmd0aDsgKytp
KSB7CisgICAgICAgICAgICAgICAgdmFyIGN1cnJlbnRSZWdpb24gPSB0aGlzLl9yZWdpb25zW2ld
OworICAgICAgICAgICAgICAgIHZhciBuZXdSZWdpb24gPSBvdGhlci5yZWdpb25zW2ldOworICAg
ICAgICAgICAgICAgIGlmIChjdXJyZW50UmVnaW9uLm5vZGVJZCAhPT0gbmV3UmVnaW9uLm5vZGVJ
ZCB8fCBjdXJyZW50UmVnaW9uLnJlZ2lvbk92ZXJzZXQgIT09IG5ld1JlZ2lvbi5yZWdpb25PdmVy
c2V0KSB7CisgICAgICAgICAgICAgICAgICAgIGRpZmYucmVnaW9ucyA9IHRydWU7CisgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorCisgICAgICAgIHJldHVybiBkaWZmOworICAgIH0sCisKKyAgICBfbG9hZEZyb21K
U09OOiBmdW5jdGlvbihkYXRhKQorICAgIHsKKyAgICAgICAgdGhpcy5fZG9jdW1lbnROb2RlSWQg
PSBkYXRhLmRvY3VtZW50Tm9kZUlkOworICAgICAgICB0aGlzLl9uYW1lID0gZGF0YS5uYW1lOwor
ICAgICAgICB0aGlzLl9vdmVyc2V0ID0gZGF0YS5vdmVyc2V0OworICAgICAgICB0aGlzLl9yZWdp
b25zID0gZGF0YS5yZWdpb25zOworICAgICAgICB0aGlzLl9jb250ZW50ID0gZGF0YS5jb250ZW50
OworICAgIH0KKworfTsKKworCitXZWJJbnNwZWN0b3IuQ29udGVudEZsb3cucHJvdG90eXBlLl9f
cHJvdG9fXyA9IFdlYkluc3BlY3Rvci5PYmplY3QucHJvdG90eXBlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udGVudEZsb3dJY29uLmNzcyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRlbnRGbG93SWNvbi5jc3MKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjI2ZTc2NgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRlbnRGbG93SWNvbi5j
c3MKQEAgLTAsMCArMSwzMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBZG9iZSBTeXN0
ZW1zIEluY29ycG9yYXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlCisgKiAgICBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworICogICAgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKKyAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nCisgKiAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMKKyAqICAgIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqIAorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUiAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQg
SE9MREVSIEJFCisgKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksCisgKiBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
CisgKiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YKKyAqIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgorICogU1VDSCBEQU1BR0UuCisgKi8KKworLmNvbnRl
bnQtZmxvdy1pY29uIC5pY29uIHsKKyAgICBjb250ZW50OiB1cmwoSW1hZ2VzL0NvbnRlbnRGbG93
LnN2Zyk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9Db250ZW50Rmxvd1RyZWVFbGVtZW50LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvQ29udGVudEZsb3dUcmVlRWxlbWVudC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi43NjZmZjdlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udGVudEZsb3dUcmVlRWxlbWVudC5qcwpAQCAtMCwwICsx
LDQ0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFkb2JlIFN5c3RlbXMgSW5jb3Jwb3Jh
dGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUKKyAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisgKiAgICBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQor
ICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcKKyAqICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscworICogICAgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICog
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSICJB
UyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgQkUKKyAq
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwKKyAqIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IKKyAqIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RgorICogVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GCisgKiBTVUNIIERBTUFHRS4KKyAqLworCitXZWJJbnNwZWN0b3IuQ29udGVu
dEZsb3dUcmVlRWxlbWVudCA9IGZ1bmN0aW9uKHJlcHJlc2VudGVkT2JqZWN0KQoreworICAgIGNv
bnNvbGUuYXNzZXJ0KHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkNv
bnRlbnRGbG93KTsKKyAgICBXZWJJbnNwZWN0b3IuR2VuZXJhbFRyZWVFbGVtZW50LmNhbGwodGhp
cywgW1dlYkluc3BlY3Rvci5Db250ZW50Rmxvd1RyZWVFbGVtZW50LlN0eWxlQ2xhc3NOYW1lLCBX
ZWJJbnNwZWN0b3IuQ29udGVudEZsb3dUcmVlRWxlbWVudC5Db250ZW50Rmxvd0ljb25TdHlsZUNs
YXNzTmFtZV0sIHJlcHJlc2VudGVkT2JqZWN0Lm5hbWUsIG51bGwsIHJlcHJlc2VudGVkT2JqZWN0
LCBmYWxzZSk7CisKKyAgICB0aGlzLnNtYWxsID0gdHJ1ZTsKK307CisKK1dlYkluc3BlY3Rvci5D
b250ZW50Rmxvd1RyZWVFbGVtZW50LkNvbnRlbnRGbG93SWNvblN0eWxlQ2xhc3NOYW1lID0gImNv
bnRlbnQtZmxvdy1pY29uIjsKKworV2ViSW5zcGVjdG9yLkNvbnRlbnRGbG93VHJlZUVsZW1lbnQu
cHJvdG90eXBlID0geworICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuQ29udGVudEZsb3dU
cmVlRWxlbWVudAorfTsKKworV2ViSW5zcGVjdG9yLkNvbnRlbnRGbG93VHJlZUVsZW1lbnQucHJv
dG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5HZW5lcmFsVHJlZUVsZW1lbnQucHJvdG90
eXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvRE9N
VHJlZS5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0RPTVRyZWUuanMK
aW5kZXggNzgzZTk3ZC4uODBkN2M3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvRE9NVHJlZS5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9ET01UcmVlLmpzCkBAIC0zMSw2ICszMSw4IEBAIFdlYkluc3BlY3Rvci5ET01U
cmVlID0gZnVuY3Rpb24oZnJhbWUpCiAKICAgICB0aGlzLl9yb290RE9NTm9kZSA9IG51bGw7CiAg
ICAgdGhpcy5fcmVxdWVzdElkZW50aWZpZXIgPSAwOworICAgIHRoaXMuX2Zsb3dzID0ge307Cisg
ICAgdGhpcy5fZmxvd3NDb3VudCA9IDA7CiAKICAgICB0aGlzLl9mcmFtZS5hZGRFdmVudExpc3Rl
bmVyKFdlYkluc3BlY3Rvci5GcmFtZS5FdmVudC5QYWdlRXhlY3V0aW9uQ29udGV4dENoYW5nZWQs
IHRoaXMuX2ZyYW1lUGFnZUV4ZWN1dGlvbkNvbnRleHRDaGFuZ2VkLCB0aGlzKTsKIApAQCAtNDEs
MTIgKzQzLDI2IEBAIFdlYkluc3BlY3Rvci5ET01UcmVlID0gZnVuY3Rpb24oZnJhbWUpCiAgICAg
ICAgIFdlYkluc3BlY3Rvci5kb21UcmVlTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3Bl
Y3Rvci5ET01UcmVlTWFuYWdlci5FdmVudC5Ob2RlUmVtb3ZlZCwgdGhpcy5fbm9kZVJlbW92ZWQs
IHRoaXMpOwogICAgICAgICB0aGlzLl9mcmFtZS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rv
ci5GcmFtZS5FdmVudC5NYWluUmVzb3VyY2VEaWRDaGFuZ2UsIHRoaXMuX2ZyYW1lTWFpblJlc291
cmNlRGlkQ2hhbmdlLCB0aGlzKTsKICAgICB9CisKKyAgICBXZWJJbnNwZWN0b3IuZG9tVHJlZU1h
bmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRE9NVHJlZU1hbmFnZXIuRXZlbnQu
QmFja2VuZENvbnRlbnRGbG93TGlzdFdhc1VwZGF0ZWQsIHRoaXMuX2JhY2tlbmRDb250ZW50Rmxv
d0xpc3RXYXNVcGRhdGVkLCB0aGlzKTsKKyAgICBXZWJJbnNwZWN0b3IuZG9tVHJlZU1hbmFnZXIu
YWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRE9NVHJlZU1hbmFnZXIuRXZlbnQuQmFja2Vu
ZENvbnRlbnRGbG93V2FzQWRkZWQsIHRoaXMuX2JhY2tlbmRDb250ZW50Rmxvd1dhc0FkZGVkLCB0
aGlzKTsKKyAgICBXZWJJbnNwZWN0b3IuZG9tVHJlZU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihX
ZWJJbnNwZWN0b3IuRE9NVHJlZU1hbmFnZXIuRXZlbnQuQmFja2VuZENvbnRlbnRGbG93V2FzUmVt
b3ZlZCwgdGhpcy5fYmFja2VuZENvbnRlbnRGbG93V2FzUmVtb3ZlZCwgdGhpcyk7CisgICAgV2Vi
SW5zcGVjdG9yLmRvbVRyZWVNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRP
TVRyZWVNYW5hZ2VyLkV2ZW50LlJlZ2lvbkxheW91dFVwZGF0ZWQsIHRoaXMuX2JhY2tlbmRDb250
ZW50Rmxvd1dhc0NoYW5nZWQsIHRoaXMpOworICAgIFdlYkluc3BlY3Rvci5kb21UcmVlTWFuYWdl
ci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5ET01UcmVlTWFuYWdlci5FdmVudC5SZWdp
b25PdmVyc2V0Q2hhbmdlZCwgdGhpcy5fYmFja2VuZENvbnRlbnRGbG93V2FzQ2hhbmdlZCwgdGhp
cyk7CiB9OwogCiBXZWJJbnNwZWN0b3IuT2JqZWN0LmFkZENvbnN0cnVjdG9yRnVuY3Rpb25zKFdl
Ykluc3BlY3Rvci5ET01UcmVlKTsKIAogV2ViSW5zcGVjdG9yLkRPTVRyZWUuRXZlbnQgPSB7Ci0g
ICAgUm9vdERPTU5vZGVJbnZhbGlkYXRlZDogImRvbS10cmVlLXJvb3QtZG9tLW5vZGUtaW52YWxp
ZGF0ZWQiCisgICAgUm9vdERPTU5vZGVJbnZhbGlkYXRlZDogImRvbS10cmVlLXJvb3QtZG9tLW5v
ZGUtaW52YWxpZGF0ZWQiLAorICAgIENvbnRlbnRGbG93V2FzQWRkZWQ6ICJkb20tdHJlZS1jb250
ZW50LWZsb3ctd2FzLWFkZGVkIiwKKyAgICBDb250ZW50Rmxvd1dhc1JlbW92ZWQ6ICJkb20tdHJl
ZS1jb250ZW50LWZsb3ctd2FzLXJlbW92ZWQiCit9OworCitXZWJJbnNwZWN0b3IuRE9NVHJlZS5f
YmFja2VuZENvbnRlbnRGbG93SGFzaEtleSA9IGZ1bmN0aW9uKGJhY2tlbmRDb250ZW50RmxvdykK
K3sKKyAgICAvLyBVc2UgdGhlIGZsb3cgbm9kZSBpZCwgdG8gYXZvaWQgY29sbGlzaW9ucyB3aGVu
IHdlIGNoYW5nZSBtYWluIGRvY3VtZW50IGlkLgorICAgIHJldHVybiBiYWNrZW5kQ29udGVudEZs
b3cuZG9jdW1lbnROb2RlSWQgKyAiOiIgKyBiYWNrZW5kQ29udGVudEZsb3cubmFtZTsKIH07CiAK
IFdlYkluc3BlY3Rvci5ET01UcmVlLnByb3RvdHlwZSA9IHsKQEAgLTU5LDYgKzc1LDE2IEBAIFdl
Ykluc3BlY3Rvci5ET01UcmVlLnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2Zy
YW1lOwogICAgIH0sCiAKKyAgICBnZXQgZmxvd3MoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRo
aXMuX2Zsb3dzOworICAgIH0sCisKKyAgICBnZXQgZmxvd3NDb3VudCgpCisgICAgeworICAgICAg
ICByZXR1cm4gdGhpcy5fZmxvd3NDb3VudDsKKyAgICB9LAorCiAgICAgaW52YWxpZGF0ZTogZnVu
Y3Rpb24oKQogICAgIHsKICAgICAgICAgLy8gU2V0IHRvIG51bGwgc28gaXQgaXMgZmV0Y2hlZCBh
Z2FpbiBuZXh0IHRpbWUgcmVxdWVzdFJvb3RET01Ob2RlIGlzIGNhbGxlZC4KQEAgLTIzMCw2ICsy
NTYsMTEwIEBAIFdlYkluc3BlY3Rvci5ET01UcmVlLnByb3RvdHlwZSA9IHsKIAogICAgICAgICAg
ICAgdGhpcy5fcmVxdWVzdFJvb3RET01Ob2RlKCk7CiAgICAgICAgIH0KKyAgICB9LAorCisgICAg
cmVxdWVzdENvbnRlbnRGbG93TGlzdDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdGhpcy5y
ZXF1ZXN0Um9vdERPTU5vZGUoZnVuY3Rpb24ocm9vdE5vZGUpIHsKKyAgICAgICAgICAgIC8vIExl
dCB0aGUgYmFja2VuZCBrbm93IHdlIGFyZSBpbnRlcmVzdGVkIGFib3V0IHRoZSBuYW1lZCBmbG93
IGV2ZW50cyBmb3IgdGhpcyBkb2N1bWVudC4KKyAgICAgICAgICAgIFdlYkluc3BlY3Rvci5kb21U
cmVlTWFuYWdlci5nZXROYW1lZEZsb3dDb2xsZWN0aW9uKHJvb3ROb2RlLmlkKTsKKyAgICAgICAg
fSk7CisgICAgfSwKKworICAgIF9pc0JhY2tlbmRDb250ZW50Rmxvd0luQ3VycmVudERvY3VtZW50
OiBmdW5jdGlvbihiYWNrZW5kQ29udGVudEZsb3cpCisgICAgeworICAgICAgICByZXR1cm4gdGhp
cy5fcm9vdERPTU5vZGUgJiYgYmFja2VuZENvbnRlbnRGbG93LmRvY3VtZW50Tm9kZUlkID09PSB0
aGlzLl9yb290RE9NTm9kZS5pZDsKKyAgICB9LAorCisgICAgX2JhY2tlbmRDb250ZW50Rmxvd0xp
c3RXYXNVcGRhdGVkOiBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAgICAgIGlmICghdGhpcy5f
cm9vdERPTU5vZGUgfHwgdGhpcy5fcm9vdERPTU5vZGUuaWQgIT09IGV2ZW50LmRhdGEuZG9jdW1l
bnROb2RlSWQpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgLy8gQXNzdW1lIHRoYXQg
YWxsIHRoZSBmbG93cyBoYXZlIGJlZW4gcmVtb3ZlZC4KKyAgICAgICAgdmFyIGRlbGV0ZWRGbG93
cyA9IHt9OworICAgICAgICBmb3IgKHZhciBmbG93S2V5IGluIHRoaXMuX2Zsb3dzKQorICAgICAg
ICAgICAgZGVsZXRlZEZsb3dzW2Zsb3dLZXldID0gdGhpcy5fZmxvd3NbZmxvd0tleV07CisKKyAg
ICAgICAgdmFyIG5ld0Zsb3dzID0gW107CisKKyAgICAgICAgdmFyIGZsb3dzID0gZXZlbnQuZGF0
YS5mbG93czsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBmbG93cy5sZW5ndGg7ICsraSkg
eworICAgICAgICAgICAgdmFyIGZsb3cgPSBmbG93c1tpXTsKKyAgICAgICAgICAgIC8vIEFsbCB0
aGUgZmxvd3MgcmVjZWl2ZWQgZnJvbSBXZWJLaXQgYXJlIHBhcnQgb2YgdGhlIHNhbWUgZG9jdW1l
bnQuCisgICAgICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9pc0JhY2tlbmRDb250ZW50Rmxv
d0luQ3VycmVudERvY3VtZW50KGZsb3cpKTsKKworICAgICAgICAgICAgdmFyIGZsb3dLZXkgPSBX
ZWJJbnNwZWN0b3IuRE9NVHJlZS5fYmFja2VuZENvbnRlbnRGbG93SGFzaEtleShmbG93KTsKKyAg
ICAgICAgICAgIGlmICh0aGlzLl9mbG93cy5oYXNPd25Qcm9wZXJ0eShmbG93S2V5KSkgeworICAg
ICAgICAgICAgICAgIC8vIFJlbW92ZSB0aGUgZmxvdyBuYW1lIGZyb20gdGhlIGRlbGV0ZWQgbGlz
dC4KKyAgICAgICAgICAgICAgICBjb25zb2xlLmFzc2VydChkZWxldGVkRmxvd3MuaGFzT3duUHJv
cGVydHkoZmxvd0tleSkpOworICAgICAgICAgICAgICAgIGRlbGV0ZSBkZWxldGVkRmxvd3NbZmxv
d0tleV07CisgICAgICAgICAgICAgICAgdGhpcy5fZmxvd3NbZmxvd0tleV0udXBkYXRlKGZsb3cp
OworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICB2YXIgY29udGVudEZsb3cg
PSBuZXcgV2ViSW5zcGVjdG9yLkNvbnRlbnRGbG93KGZsb3cpOworICAgICAgICAgICAgICAgIHRo
aXMuX2Zsb3dzW2Zsb3dLZXldID0gY29udGVudEZsb3c7CisgICAgICAgICAgICAgICAgbmV3Rmxv
d3MucHVzaChjb250ZW50Rmxvdyk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAg
ICBmb3IgKHZhciBmbG93S2V5IGluIGRlbGV0ZWRGbG93cykgeworICAgICAgICAgICAgLS10aGlz
Ll9mbG93c0NvdW50OworICAgICAgICAgICAgZGVsZXRlIHRoaXMuX2Zsb3dzW2Zsb3dLZXldOwor
ICAgICAgICB9CisgICAgICAgIHRoaXMuX2Zsb3dzQ291bnQgKz0gbmV3Rmxvd3MubGVuZ3RoOwor
CisgICAgICAgIC8vIFNlbmQgdXBkYXRlIGV2ZW50cyB0byBsaXN0ZW5lcnMuCisKKyAgICAgICAg
Zm9yICh2YXIgZmxvd0tleSBpbiBkZWxldGVkRmxvd3MpCisgICAgICAgICAgICB0aGlzLmRpc3Bh
dGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuRE9NVHJlZS5FdmVudC5Db250ZW50Rmxv
d1dhc1JlbW92ZWQsIHtmbG93OiBkZWxldGVkRmxvd3NbZmxvd0tleV19KTsKKworICAgICAgICBm
b3IgKHZhciBpID0gMDsgaSA8IG5ld0Zsb3dzLmxlbmd0aDsgKytpKQorICAgICAgICAgICAgdGhp
cy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkRPTVRyZWUuRXZlbnQuQ29u
dGVudEZsb3dXYXNBZGRlZCwge2Zsb3c6IG5ld0Zsb3dzW2ldfSk7CisgICAgfSwKKworICAgIF9i
YWNrZW5kQ29udGVudEZsb3dXYXNBZGRlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgeworICAgICAg
ICB2YXIgZmxvdyA9IGV2ZW50LmRhdGEuZmxvdzsKKyAgICAgICAgaWYgKCF0aGlzLl9pc0JhY2tl
bmRDb250ZW50Rmxvd0luQ3VycmVudERvY3VtZW50KGZsb3cpKQorICAgICAgICAgICAgcmV0dXJu
OworCisgICAgICAgIHZhciBmbG93S2V5ID0gV2ViSW5zcGVjdG9yLkRPTVRyZWUuX2JhY2tlbmRD
b250ZW50Rmxvd0hhc2hLZXkoZmxvdyk7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCF0aGlzLl9m
bG93cy5oYXNPd25Qcm9wZXJ0eShmbG93S2V5KSk7CisgICAgICAgIAorICAgICAgICB2YXIgY29u
dGVudEZsb3cgPSBuZXcgV2ViSW5zcGVjdG9yLkNvbnRlbnRGbG93KGZsb3cpOworICAgICAgICB0
aGlzLl9mbG93c1tmbG93S2V5XSA9IGNvbnRlbnRGbG93OworCisgICAgICAgICsrdGhpcy5fZmxv
d3NDb3VudDsKKworICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNw
ZWN0b3IuRE9NVHJlZS5FdmVudC5Db250ZW50Rmxvd1dhc0FkZGVkLCB7ZmxvdzogY29udGVudEZs
b3d9KTsKKyAgICB9LAorCisgICAgX2JhY2tlbmRDb250ZW50Rmxvd1dhc1JlbW92ZWQ6IGZ1bmN0
aW9uKGV2ZW50KQorICAgIHsKKyAgICAgICAgdmFyIGZsb3cgPSBldmVudC5kYXRhLmZsb3c7Cisg
ICAgICAgIGlmICghdGhpcy5faXNCYWNrZW5kQ29udGVudEZsb3dJbkN1cnJlbnREb2N1bWVudChm
bG93KSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB2YXIgZmxvd0tleSA9IFdlYklu
c3BlY3Rvci5ET01UcmVlLl9iYWNrZW5kQ29udGVudEZsb3dIYXNoS2V5KGZsb3cpOworICAgICAg
ICBjb25zb2xlLmFzc2VydCh0aGlzLl9mbG93cy5oYXNPd25Qcm9wZXJ0eShmbG93S2V5KSk7Cisg
ICAgICAgIGZsb3cgPSB0aGlzLl9mbG93c1tmbG93S2V5XTsKKyAgICAgICAgZGVsZXRlIHRoaXMu
X2Zsb3dzW2Zsb3dLZXldOworCisgICAgICAgIC0tdGhpcy5fZmxvd3NDb3VudDsKKworICAgICAg
ICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuRE9NVHJlZS5FdmVu
dC5Db250ZW50Rmxvd1dhc1JlbW92ZWQsIHtmbG93OiBmbG93fSk7CisgICAgfSwKKworICAgIF9i
YWNrZW5kQ29udGVudEZsb3dXYXNDaGFuZ2VkOiBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAg
ICAgIHZhciBmbG93ID0gZXZlbnQuZGF0YS5mbG93OworICAgICAgICBpZiAoIXRoaXMuX2lzQmFj
a2VuZENvbnRlbnRGbG93SW5DdXJyZW50RG9jdW1lbnQoZmxvdykpCisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIAorICAgICAgICB2YXIgZmxvd0tleSA9IFdlYkluc3BlY3Rvci5ET01UcmVl
Ll9iYWNrZW5kQ29udGVudEZsb3dIYXNoS2V5KGZsb3cpOworICAgICAgICBjb25zb2xlLmFzc2Vy
dCh0aGlzLl9mbG93cy5oYXNPd25Qcm9wZXJ0eShmbG93S2V5KSk7CisKKyAgICAgICAgdGhpcy5f
Zmxvd3NbZmxvd0tleV0udXBkYXRlKGZsb3cpOwogICAgIH0KIH07CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0RPTVRyZWVNYW5hZ2VyLmpzIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvRE9NVHJlZU1hbmFnZXIuanMKaW5kZXgg
ODE4MjRkYi4uNmEyNDliMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvRE9NVHJlZU1hbmFnZXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvRE9NVHJlZU1hbmFnZXIuanMKQEAgLTUyLDcgKzUyLDEyIEBAIFdlYkluc3Bl
Y3Rvci5ET01UcmVlTWFuYWdlci5FdmVudCA9IHsKICAgICBEb2N1bWVudFVwZGF0ZWQ6ICJkb20t
dHJlZS1tYW5hZ2VyLWRvY3VtZW50LXVwZGF0ZWQiLAogICAgIENoaWxkTm9kZUNvdW50VXBkYXRl
ZDogImRvbS10cmVlLW1hbmFnZXItY2hpbGQtbm9kZS1jb3VudC11cGRhdGVkIiwKICAgICBET01O
b2RlV2FzSW5zcGVjdGVkOiAiZG9tLXRyZWUtbWFuYWdlci1kb20tbm9kZS13YXMtaW5zcGVjdGVk
IiwKLSAgICBJbnNwZWN0TW9kZVN0YXRlQ2hhbmdlZDogImRvbS10cmVlLW1hbmFnZXItaW5zcGVj
dC1tb2RlLXN0YXRlLWNoYW5nZWQiCisgICAgSW5zcGVjdE1vZGVTdGF0ZUNoYW5nZWQ6ICJkb20t
dHJlZS1tYW5hZ2VyLWluc3BlY3QtbW9kZS1zdGF0ZS1jaGFuZ2VkIiwKKyAgICBCYWNrZW5kQ29u
dGVudEZsb3dMaXN0V2FzVXBkYXRlZDogImRvbS10cmVlLW1hbmFnZXItYmFja2VuZC1jb250ZW50
LWZsb3ctbGlzdC13YXMtdXBkYXRlZCIsCisgICAgQmFja2VuZENvbnRlbnRGbG93V2FzQWRkZWQ6
ICJkb20tdHJlZS1tYW5hZ2VyLWJhY2tlbmQtY29udGVudC1mbG93LXdhcy1hZGRlZCIsCisgICAg
QmFja2VuZENvbnRlbnRGbG93V2FzUmVtb3ZlZDogImRvbS10cmVlLW1hbmFnZXItYmFja2VuZC1j
b250ZW50LWZsb3ctd2FzLXJlbW92ZWQiLAorICAgIFJlZ2lvbkxheW91dFVwZGF0ZWQ6ICJkb20t
dHJlZS1tYW5hZ2VyLXJlZ2lvbi1sYXlvdXQtdXBkYXRlZCIsCisgICAgUmVnaW9uT3ZlcnNldENo
YW5nZWQ6ICJkb20tdHJlZS1tYW5hZ2VyLXJlZ2lvbi1vdmVyc2V0LWNoYW5nZWQiCiB9OwogCiBX
ZWJJbnNwZWN0b3IuRE9NVHJlZU1hbmFnZXIucHJvdG90eXBlID0gewpAQCAtNTE5LDYgKzUyNCw0
MCBAQCBXZWJJbnNwZWN0b3IuRE9NVHJlZU1hbmFnZXIucHJvdG90eXBlID0gewogICAgICAgICAg
ICAgaGlnaGxpZ2h0Q29uZmlnLm1hcmdpbkNvbG9yID0ge3I6IDI0NiwgZzogMTc4LCBiOiAxMDcs
IGE6IDAuNjZ9OwogCiAgICAgICAgIHJldHVybiBoaWdobGlnaHRDb25maWc7CisgICAgfSwKKwor
ICAgIGdldE5hbWVkRmxvd0NvbGxlY3Rpb246IGZ1bmN0aW9uKGRvY3VtZW50Tm9kZUlkKQorICAg
IHsKKyAgICAgICAgZnVuY3Rpb24gb25OYW1lZEZsb3dDb2xsZWN0aW9uQXZhaWxhYmxlKGVycm9y
LCBmbG93cykKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKGVycm9yKSB7CisgICAgICAgICAg
ICAgICAgY29uc29sZS5lcnJvcigiRXJyb3Igd2hpbGUgZ2V0dGluZyB0aGUgbmFtZWQgZmxvd3Mg
Zm9yIGRvY3VtZW50ICIgKyBkb2N1bWVudE5vZGVJZCArICI6ICIgKyBlcnJvcik7CisgICAgICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgdGhpcy5kaXNwYXRj
aEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkRPTVRyZWVNYW5hZ2VyLkV2ZW50LkJhY2tl
bmRDb250ZW50Rmxvd0xpc3RXYXNVcGRhdGVkLCB7ZG9jdW1lbnROb2RlSWQ6IGRvY3VtZW50Tm9k
ZUlkLCBmbG93czogZmxvd3N9KTsKKyAgICAgICAgfQorICAgICAgICBDU1NBZ2VudC5nZXROYW1l
ZEZsb3dDb2xsZWN0aW9uKGRvY3VtZW50Tm9kZUlkLCBvbk5hbWVkRmxvd0NvbGxlY3Rpb25BdmFp
bGFibGUuYmluZCh0aGlzKSk7CisgICAgfSwKKworICAgIG5hbWVkRmxvd0NyZWF0ZWQ6IGZ1bmN0
aW9uKGZsb3cpCisgICAgeworICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhX
ZWJJbnNwZWN0b3IuRE9NVHJlZU1hbmFnZXIuRXZlbnQuQmFja2VuZENvbnRlbnRGbG93V2FzQWRk
ZWQsIHtmbG93OiBmbG93fSk7CisgICAgfSwKKworICAgIG5hbWVkRmxvd1JlbW92ZWQ6IGZ1bmN0
aW9uKGRvY3VtZW50Tm9kZUlkLCBmbG93TmFtZSkKKyAgICB7CisgICAgICAgIHZhciBmbG93ID0g
e2RvY3VtZW50Tm9kZUlkOiBkb2N1bWVudE5vZGVJZCwgbmFtZTogZmxvd05hbWV9OworICAgICAg
ICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuRE9NVHJlZU1hbmFn
ZXIuRXZlbnQuQmFja2VuZENvbnRlbnRGbG93V2FzUmVtb3ZlZCwge2Zsb3c6IGZsb3d9KTsKKyAg
ICB9LAorCisgICAgcmVnaW9uTGF5b3V0VXBkYXRlZDogZnVuY3Rpb24oZmxvdykKKyAgICB7Cisg
ICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5ET01UcmVl
TWFuYWdlci5FdmVudC5SZWdpb25MYXlvdXRVcGRhdGVkLCB7ZmxvdzogZmxvd30pOworICAgIH0s
CisKKyAgICByZWdpb25PdmVyc2V0Q2hhbmdlZDogZnVuY3Rpb24oZmxvdykKKyAgICB7CisgICAg
ICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5ET01UcmVlTWFu
YWdlci5FdmVudC5SZWdpb25PdmVyc2V0Q2hhbmdlZCwge2Zsb3c6IGZsb3d9KTsKICAgICB9CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0ZyYW1l
VHJlZUVsZW1lbnQuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9GcmFt
ZVRyZWVFbGVtZW50LmpzCmluZGV4IDQwMjU1YTguLmQxYjMzOTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0ZyYW1lVHJlZUVsZW1lbnQuanMKKysrIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvRnJhbWVUcmVlRWxlbWVudC5qcwpA
QCAtNDAsNiArNDAsMTAgQEAgV2ViSW5zcGVjdG9yLkZyYW1lVHJlZUVsZW1lbnQgPSBmdW5jdGlv
bihmcmFtZSwgcmVwcmVzZW50ZWRPYmplY3QpCiAgICAgZnJhbWUuYWRkRXZlbnRMaXN0ZW5lcihX
ZWJJbnNwZWN0b3IuRnJhbWUuRXZlbnQuQ2hpbGRGcmFtZVdhc0FkZGVkLCB0aGlzLl9jaGlsZEZy
YW1lV2FzQWRkZWQsIHRoaXMpOwogICAgIGZyYW1lLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVj
dG9yLkZyYW1lLkV2ZW50LkNoaWxkRnJhbWVXYXNSZW1vdmVkLCB0aGlzLl9jaGlsZEZyYW1lV2Fz
UmVtb3ZlZCwgdGhpcyk7CiAKKyAgICBmcmFtZS5kb21UcmVlLmFkZEV2ZW50TGlzdGVuZXIoV2Vi
SW5zcGVjdG9yLkRPTVRyZWUuRXZlbnQuQ29udGVudEZsb3dXYXNBZGRlZCwgdGhpcy5fY2hpbGRD
b250ZW50Rmxvd1dhc0FkZGVkLCB0aGlzKTsKKyAgICBmcmFtZS5kb21UcmVlLmFkZEV2ZW50TGlz
dGVuZXIoV2ViSW5zcGVjdG9yLkRPTVRyZWUuRXZlbnQuQ29udGVudEZsb3dXYXNSZW1vdmVkLCB0
aGlzLl9jaGlsZENvbnRlbnRGbG93V2FzUmVtb3ZlZCwgdGhpcyk7CisgICAgZnJhbWUuZG9tVHJl
ZS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5ET01UcmVlLkV2ZW50LlJvb3RET01Ob2Rl
SW52YWxpZGF0ZWQsIHRoaXMuX3Jvb3RET01Ob2RlSW52YWxpZGF0ZWQsIHRoaXMpOworCiAgICAg
aWYgKHRoaXMuX2ZyYW1lLmlzTWFpbkZyYW1lKCkpIHsKICAgICAgICAgdGhpcy5fZG93bmxvYWRp
bmdQYWdlID0gZmFsc2U7CiAgICAgICAgIFdlYkluc3BlY3Rvci5ub3RpZmljYXRpb25zLmFkZEV2
ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLk5vdGlmaWNhdGlvbi5QYWdlQXJjaGl2ZVN0YXJ0ZWQs
IHRoaXMuX3BhZ2VBcmNoaXZlU3RhcnRlZCwgdGhpcyk7CkBAIC0xNzYsMTEgKzE4MCwxNiBAQCBX
ZWJJbnNwZWN0b3IuRnJhbWVUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBm
b3IgKHZhciBqID0gMDsgaiA8IHNvdXJjZU1hcC5yZXNvdXJjZXMubGVuZ3RoOyArK2opCiAgICAg
ICAgICAgICB0aGlzLl9hZGRUcmVlRWxlbWVudEZvclJlcHJlc2VudGVkT2JqZWN0KHNvdXJjZU1h
cC5yZXNvdXJjZXNbal0pOwogICAgICAgICB9CisKKyAgICAgICAgdmFyIGZsb3dzID0gdGhpcy5f
ZnJhbWUuZG9tVHJlZS5mbG93czsKKyAgICAgICAgZm9yICh2YXIgZmxvd0tleSBpbiBmbG93cykK
KyAgICAgICAgICAgIHRoaXMuX2FkZFRyZWVFbGVtZW50Rm9yUmVwcmVzZW50ZWRPYmplY3QoZmxv
d3NbZmxvd0tleV0pOwogICAgIH0sCiAKICAgICBvbmV4cGFuZDogZnVuY3Rpb24oKQogICAgIHsK
ICAgICAgICAgdGhpcy5fZXhwYW5kZWRTZXR0aW5nLnZhbHVlID0gdHJ1ZTsKKyAgICAgICAgdGhp
cy5fZnJhbWUuZG9tVHJlZS5yZXF1ZXN0Q29udGVudEZsb3dMaXN0KCk7CiAgICAgfSwKIAogICAg
IG9uY29sbGFwc2U6IGZ1bmN0aW9uKCkKQEAgLTI2NCw2ICsyNzMsMjEgQEAgV2ViSW5zcGVjdG9y
LkZyYW1lVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9yZW1vdmVDaGls
ZEZvclJlcHJlc2VudGVkT2JqZWN0KGV2ZW50LmRhdGEuY2hpbGRGcmFtZSk7CiAgICAgfSwKIAor
ICAgIF9jaGlsZENvbnRlbnRGbG93V2FzQWRkZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIHsKKyAg
ICAgICAgdGhpcy5fYWRkUmVwcmVzZW50ZWRPYmplY3RUb05ld0NoaWxkUXVldWUoZXZlbnQuZGF0
YS5mbG93KTsKKyAgICB9LAorCisgICAgX2NoaWxkQ29udGVudEZsb3dXYXNSZW1vdmVkOiBmdW5j
dGlvbihldmVudCkKKyAgICB7CisgICAgICAgIHRoaXMuX3JlbW92ZUNoaWxkRm9yUmVwcmVzZW50
ZWRPYmplY3QoZXZlbnQuZGF0YS5mbG93KTsKKyAgICB9LAorCisgICAgX3Jvb3RET01Ob2RlSW52
YWxpZGF0ZWQ6IGZ1bmN0aW9uKCkgeworICAgICAgICBpZiAodGhpcy5leHBhbmRlZCkKKyAgICAg
ICAgICAgIHRoaXMuX2ZyYW1lLmRvbVRyZWUucmVxdWVzdENvbnRlbnRGbG93TGlzdCgpOworICAg
IH0sCisKICAgICBfYWRkUmVwcmVzZW50ZWRPYmplY3RUb05ld0NoaWxkUXVldWU6IGZ1bmN0aW9u
KHJlcHJlc2VudGVkT2JqZWN0KQogICAgIHsKICAgICAgICAgLy8gVGhpcyBxdWV1ZSByZWR1Y2Vz
IGZsYXNoaW5nIGFzIHJlc291cmNlcyBsb2FkIGFuZCBjaGFuZ2UgZm9sZGVycyB3aGVuIHRoZWly
IHR5cGUgYmVjb21lcyBrbm93bi4KQEAgLTI5OCw4ICszMjIsOCBAQCBXZWJJbnNwZWN0b3IuRnJh
bWVUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAKICAgICBfYWRkQ2hpbGRGb3JSZXByZXNlbnRl
ZE9iamVjdDogZnVuY3Rpb24ocmVwcmVzZW50ZWRPYmplY3QpCiAgICAgewotICAgICAgICBjb25z
b2xlLmFzc2VydChyZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5SZXNv
dXJjZSB8fCByZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5GcmFtZSk7
Ci0gICAgICAgIGlmICghKHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9y
LlJlc291cmNlIHx8IHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkZy
YW1lKSkKKyAgICAgICAgY29uc29sZS5hc3NlcnQocmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2Vv
ZiBXZWJJbnNwZWN0b3IuUmVzb3VyY2UgfHwgcmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBX
ZWJJbnNwZWN0b3IuRnJhbWUgfHwgcmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXZWJJbnNw
ZWN0b3IuQ29udGVudEZsb3cpOworICAgICAgICBpZiAoIShyZXByZXNlbnRlZE9iamVjdCBpbnN0
YW5jZW9mIFdlYkluc3BlY3Rvci5SZXNvdXJjZSB8fCByZXByZXNlbnRlZE9iamVjdCBpbnN0YW5j
ZW9mIFdlYkluc3BlY3Rvci5GcmFtZSB8fCByZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdl
Ykluc3BlY3Rvci5Db250ZW50RmxvdykpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAg
dGhpcy5fdXBkYXRlUGFyZW50U3RhdHVzKCk7CkBAIC0zMjIsOCArMzQ2LDggQEAgV2ViSW5zcGVj
dG9yLkZyYW1lVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogCiAgICAgX3JlbW92ZUNoaWxkRm9y
UmVwcmVzZW50ZWRPYmplY3Q6IGZ1bmN0aW9uKHJlcHJlc2VudGVkT2JqZWN0KQogICAgIHsKLSAg
ICAgICAgY29uc29sZS5hc3NlcnQocmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXZWJJbnNw
ZWN0b3IuUmVzb3VyY2UgfHwgcmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0
b3IuRnJhbWUpOwotICAgICAgICBpZiAoIShyZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdl
Ykluc3BlY3Rvci5SZXNvdXJjZSB8fCByZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdlYklu
c3BlY3Rvci5GcmFtZSkpCisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHJlcHJlc2VudGVkT2JqZWN0
IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlJlc291cmNlIHx8IHJlcHJlc2VudGVkT2JqZWN0IGlu
c3RhbmNlb2YgV2ViSW5zcGVjdG9yLkZyYW1lIHx8IHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNl
b2YgV2ViSW5zcGVjdG9yLkNvbnRlbnRGbG93KTsKKyAgICAgICAgaWYgKCEocmVwcmVzZW50ZWRP
YmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuUmVzb3VyY2UgfHwgcmVwcmVzZW50ZWRPYmpl
Y3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuRnJhbWUgfHwgcmVwcmVzZW50ZWRPYmplY3QgaW5z
dGFuY2VvZiBXZWJJbnNwZWN0b3IuQ29udGVudEZsb3cpKQogICAgICAgICAgICAgcmV0dXJuOwog
CiAgICAgICAgIHRoaXMuX3JlbW92ZVJlcHJlc2VudGVkT2JqZWN0RnJvbU5ld0NoaWxkUXVldWUo
cmVwcmVzZW50ZWRPYmplY3QpOwpAQCAtMzU1LDYgKzM3OSw4IEBAIFdlYkluc3BlY3Rvci5GcmFt
ZVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgICAgICBjaGlsZFRyZWVFbGVt
ZW50ID0gbmV3IFdlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVFbGVtZW50KHJlcHJlc2VudGVkT2Jq
ZWN0KTsKICAgICAgICAgICAgIGVsc2UgaWYgKHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2Yg
V2ViSW5zcGVjdG9yLkZyYW1lKQogICAgICAgICAgICAgICAgIGNoaWxkVHJlZUVsZW1lbnQgPSBu
ZXcgV2ViSW5zcGVjdG9yLkZyYW1lVHJlZUVsZW1lbnQocmVwcmVzZW50ZWRPYmplY3QpOworICAg
ICAgICAgICAgZWxzZSBpZiAocmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0
b3IuQ29udGVudEZsb3cpCisgICAgICAgICAgICAgICAgY2hpbGRUcmVlRWxlbWVudCA9IG5ldyBX
ZWJJbnNwZWN0b3IuQ29udGVudEZsb3dUcmVlRWxlbWVudChyZXByZXNlbnRlZE9iamVjdCk7CiAg
ICAgICAgIH0KIAogICAgICAgICB0aGlzLl9hZGRUcmVlRWxlbWVudChjaGlsZFRyZWVFbGVtZW50
KTsKQEAgLTM5MiwxMCArNDE4LDI3IEBAIFdlYkluc3BlY3Rvci5GcmFtZVRyZWVFbGVtZW50LnBy
b3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5pbnNlcnRDaGlsZChmb2xkZXJUcmVlRWxlbWVudCwg
aW5zZXJ0aW9uSW5kZXhGb3JPYmplY3RJbkxpc3RTb3J0ZWRCeUZ1bmN0aW9uKGZvbGRlclRyZWVF
bGVtZW50LCB0aGlzLmNoaWxkcmVuLCB0aGlzLl9jb21wYXJlVHJlZUVsZW1lbnRzQnlNYWluVGl0
bGUpKTsKICAgICB9LAogCisgICAgX2NvbXBhcmVSZXNvdXJjZVRyZWVFbGVtZW50czogZnVuY3Rp
b24oYSwgYikKKyAgICB7CisgICAgICAgIHZhciBhSXNSZXNvdXJjZSA9IGEgaW5zdGFuY2VvZiBX
ZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlRWxlbWVudDsKKyAgICAgICAgdmFyIGJJc1Jlc291cmNl
ID0gYiBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVFbGVtZW50OworCisgICAg
ICAgIGlmIChhSXNSZXNvdXJjZSAmJiBiSXNSZXNvdXJjZSkKKyAgICAgICAgICAgIHJldHVybiBX
ZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlRWxlbWVudC5jb21wYXJlUmVzb3VyY2VUcmVlRWxlbWVu
dHMoYSwgYik7CisKKyAgICAgICAgaWYgKCFhSXNSZXNvdXJjZSAmJiAhYklzUmVzb3VyY2UpIHsK
KyAgICAgICAgICAgIC8vIFdoZW4gYm90aCBjb21wb25lbnRzIGFyZSBub3QgcmVzb3VyY2VzIHRo
ZW4ganVzdCBjb21wYXJlIHRoZSB0aXRsZXMuCisgICAgICAgICAgICByZXR1cm4gYS5tYWluVGl0
bGUubG9jYWxlQ29tcGFyZShiLm1haW5UaXRsZSk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAg
ICAgIC8vIE5vbi1yZXNvdXJjZXMgc2hvdWxkIGFwcGVhciBiZWZvcmUgdGhlIHJlc291cmNlcy4K
KyAgICAgICAgcmV0dXJuIGFJc1Jlc291cmNlID8gMSA6IC0xOworICAgIH0sCisKICAgICBfaW5z
ZXJ0UmVzb3VyY2VUcmVlRWxlbWVudDogZnVuY3Rpb24ocGFyZW50VHJlZUVsZW1lbnQsIGNoaWxk
VHJlZUVsZW1lbnQpCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydCghY2hpbGRUcmVlRWxl
bWVudC5wYXJlbnQpOwotICAgICAgICBwYXJlbnRUcmVlRWxlbWVudC5pbnNlcnRDaGlsZChjaGls
ZFRyZWVFbGVtZW50LCBpbnNlcnRpb25JbmRleEZvck9iamVjdEluTGlzdFNvcnRlZEJ5RnVuY3Rp
b24oY2hpbGRUcmVlRWxlbWVudCwgcGFyZW50VHJlZUVsZW1lbnQuY2hpbGRyZW4sIFdlYkluc3Bl
Y3Rvci5SZXNvdXJjZVRyZWVFbGVtZW50LmNvbXBhcmVSZXNvdXJjZVRyZWVFbGVtZW50cykpOwor
ICAgICAgICBwYXJlbnRUcmVlRWxlbWVudC5pbnNlcnRDaGlsZChjaGlsZFRyZWVFbGVtZW50LCBp
bnNlcnRpb25JbmRleEZvck9iamVjdEluTGlzdFNvcnRlZEJ5RnVuY3Rpb24oY2hpbGRUcmVlRWxl
bWVudCwgcGFyZW50VHJlZUVsZW1lbnQuY2hpbGRyZW4sIHRoaXMuX2NvbXBhcmVSZXNvdXJjZVRy
ZWVFbGVtZW50cykpOwogICAgIH0sCiAKICAgICBfcmVtb3ZlVHJlZUVsZW1lbnQ6IGZ1bmN0aW9u
KGNoaWxkVHJlZUVsZW1lbnQsIHN1cHByZXNzT25EZXNlbGVjdCwgc3VwcHJlc3NTZWxlY3RTaWJs
aW5nKQpAQCAtNDQ1LDYgKzQ4OCwxMiBAQCBXZWJJbnNwZWN0b3IuRnJhbWVUcmVlRWxlbWVudC5w
cm90b3R5cGUgPSB7CiAgICAgICAgICAgICByZXR1cm4gdGhpcy5fZnJhbWVzRm9sZGVyVHJlZUVs
ZW1lbnQ7CiAgICAgICAgIH0KIAorICAgICAgICBpZiAocmVwcmVzZW50ZWRPYmplY3QgaW5zdGFu
Y2VvZiBXZWJJbnNwZWN0b3IuQ29udGVudEZsb3cpIHsKKyAgICAgICAgICAgIGlmICghdGhpcy5f
Zmxvd3NGb2xkZXJUcmVlRWxlbWVudCkKKyAgICAgICAgICAgICAgICB0aGlzLl9mbG93c0ZvbGRl
clRyZWVFbGVtZW50ID0gY3JlYXRlRm9sZGVyVHJlZUVsZW1lbnQuY2FsbCh0aGlzLCAiZmxvd3Mi
LCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkZsb3dzIikpOworICAgICAgICAgICAgcmV0dXJuIHRo
aXMuX2Zsb3dzRm9sZGVyVHJlZUVsZW1lbnQ7CisgICAgICAgIH0KKwogICAgICAgICBpZiAocmVw
cmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuUmVzb3VyY2UpIHsKICAgICAg
ICAgICAgIHZhciBmb2xkZXJOYW1lID0gdGhpcy5fZm9sZGVyTmFtZUZvclJlc291cmNlVHlwZShy
ZXByZXNlbnRlZE9iamVjdC50eXBlKTsKICAgICAgICAgICAgIGlmICghZm9sZGVyTmFtZSkKQEAg
LTQ4NCw2ICs1MzMsOSBAQCBXZWJJbnNwZWN0b3IuRnJhbWVUcmVlRWxlbWVudC5wcm90b3R5cGUg
PSB7CiAgICAgICAgIHZhciBudW1iZXJPZk1lZGl1bUNhdGVnb3JpZXMgPSAwOwogICAgICAgICB2
YXIgZm91bmRMYXJnZUNhdGVnb3J5ID0gZmFsc2U7CiAKKyAgICAgICAgLy8gRklYTUU6IFVzZSB0
aGlzLl9mcmFtZS5kb21UcmVlLmZsb3dzQ291bnQgdG8gY291bnQgdGhlIG51bWJlciBvZiBmbG93
cyBpbiBhIGZyYW1lLgorICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTIyOTI2CisKICAgICAgICAgaWYgKHRoaXMuX2ZyYW1lLmNoaWxkRnJhbWVzLmxl
bmd0aCA+PSBXZWJJbnNwZWN0b3IuRnJhbWVUcmVlRWxlbWVudC5MYXJnZUNoaWxkQ291bnRUaHJl
c2hvbGQpCiAgICAgICAgICAgICBmb3VuZExhcmdlQ2F0ZWdvcnkgPSB0cnVlOwogICAgICAgICBl
bHNlIGlmICh0aGlzLl9mcmFtZS5jaGlsZEZyYW1lcy5sZW5ndGggPj0gV2ViSW5zcGVjdG9yLkZy
YW1lVHJlZUVsZW1lbnQuTWVkaXVtQ2hpbGRDb3VudFRocmVzaG9sZCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0ltYWdlcy9Db250ZW50Rmxvdy5zdmcg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9JbWFnZXMvQ29udGVudEZsb3cu
c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRlMzc5ZDMKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9JbWFnZXMvQ29u
dGVudEZsb3cuc3ZnCkBAIC0wLDAgKzEsOCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGlu
Zz0idXRmLTgiPz4NCis8IS0tIENvcHlyaWdodCDCqSAyMDEzIEFkb2JlIFN5c3RlbXMgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLiAtLT4NCis8c3ZnIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgMTYgMTYiPg0KKyAgICA8cGF0aCBm
aWxsPSJyZ2IoMTEyLCAxMTIsIDExMikiIGQ9Ik0gMTMuMTc5IDAuNzUgSCAyLjgyMSBjIC0xLjE0
MSAwIC0yLjA3MSAwLjkzMSAtMi4wNzEgMi4wNzEgdiAxMC4zNTcgYyAwIDEuMTQxIDAuOTMxIDIu
MDcxIDIuMDcxIDIuMDcxIGggMTAuMzU3IGMgMS4xNDEgMCAyLjA3MSAtMC45MzEgMi4wNzEgLTIu
MDcxIFYgMi44MjEgQyAxNS4yNSAxLjY4MSAxNC4zMTkgMC43NSAxMy4xNzkgMC43NSBNIDEzLjE3
OSAxLjc4NSBjIDAuNTcgMCAxLjAzNSAwLjQ2NiAxLjAzNSAxLjAzNiB2IDEwLjM1NyBjIDAgMC41
NyAtMC40NjUgMS4wMzUgLTEuMDM1IDEuMDM1IEggMi44MjEgYyAtMC41NyAwIC0xLjAzNiAtMC40
NjUgLTEuMDM2IC0xLjAzNSBWIDIuODIxIGMgMCAtMC41NyAwLjQ2NSAtMS4wMzYgMS4wMzYgLTEu
MDM2IEggMTMuMTc5Ii8+DQorICAgIDxyZWN0IHg9IjIuNjc2IiB5PSIyLjk2NyIgZmlsbD0icmdi
KDExMiwgMTEyLCAxMTIpIiB3aWR0aD0iNC44NTQiIGhlaWdodD0iNC4wOTQiLz4NCisgICAgPHJl
Y3QgeD0iMi42NzYiIHk9IjguNDk3IiBmaWxsPSJyZ2IoMTEyLCAxMTIsIDExMikiIHdpZHRoPSIy
Ljc1NSIgaGVpZ2h0PSI0LjM1Ii8+DQorICAgIDxyZWN0IHg9IjguODkxIiB5PSIyLjk2NyIgZmls
bD0icmdiKDExMiwgMTEyLCAxMTIpIiB3aWR0aD0iNC40MTIiIGhlaWdodD0iMTAuMTA4Ii8+DQor
PC9zdmc+DQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
TWFpbi5odG1sIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTWFpbi5odG1s
CmluZGV4IDVmNTJjNDQuLjM4ZGMwMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL01haW4uaHRtbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9NYWluLmh0bWwKQEAgLTQ0LDYgKzQ0LDcgQEAKICAgICA8bGluayByZWw9InN0
eWxlc2hlZXQiIGhyZWY9IkNvbnRlbnRCcm93c2VyLmNzcyI+CiAgICAgPGxpbmsgcmVsPSJzdHls
ZXNoZWV0IiBocmVmPSJOYXZpZ2F0aW9uU2lkZWJhclBhbmVsLmNzcyI+CiAgICAgPGxpbmsgcmVs
PSJzdHlsZXNoZWV0IiBocmVmPSJSZXNvdXJjZUljb25zLmNzcyI+CisgICAgPGxpbmsgcmVsPSJz
dHlsZXNoZWV0IiBocmVmPSJDb250ZW50Rmxvd0ljb24uY3NzIj4KICAgICA8bGluayByZWw9InN0
eWxlc2hlZXQiIGhyZWY9IkZvbGRlckljb24uY3NzIj4KICAgICA8bGluayByZWw9InN0eWxlc2hl
ZXQiIGhyZWY9IkNvbnRlbnRWaWV3Q29udGFpbmVyLmNzcyI+CiAgICAgPGxpbmsgcmVsPSJzdHls
ZXNoZWV0IiBocmVmPSJDbHVzdGVyQ29udGVudFZpZXcuY3NzIj4KQEAgLTIzMCw2ICsyMzEsNyBA
QAogICAgIDxzY3JpcHQgc3JjPSJBcHBsaWNhdGlvbkNhY2hlTWFuaWZlc3RUcmVlRWxlbWVudC5q
cyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IlRyZWVFbGVtZW50U3RhdHVzQnV0dG9uLmpz
Ij48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iSXNzdWVNZXNzYWdlLmpzIj48L3NjcmlwdD4K
KyAgICA8c2NyaXB0IHNyYz0iQ29udGVudEZsb3dUcmVlRWxlbWVudC5qcyI+PC9zY3JpcHQ+CiAg
ICAgPHNjcmlwdCBzcmM9IkZyYW1lVHJlZUVsZW1lbnQuanMiPjwvc2NyaXB0PgogICAgIDxzY3Jp
cHQgc3JjPSJDU1NDb21wbGV0aW9ucy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IkNT
U0tleXdvcmRDb21wbGV0aW9ucy5qcyI+PC9zY3JpcHQ+CkBAIC0yNjMsNiArMjY1LDcgQEAKICAg
ICA8c2NyaXB0IHNyYz0iRE9NVHJlZU1hbmFnZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQg
c3JjPSJET01Ob2RlLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iRE9NVXRpbGl0aWVz
LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iQ29udGVudEZsb3cuanMiPjwvc2NyaXB0
PgogICAgIDxzY3JpcHQgc3JjPSJET01UcmVlLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNy
Yz0iRE9NVHJlZU91dGxpbmUuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJET01UcmVl
VXBkYXRlci5qcyI+PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9SZXNvdXJjZVNpZGViYXJQYW5lbC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1Jlc291cmNlU2lkZWJhclBhbmVsLmpzCmluZGV4IDk3YmYzOWYu
LmM0MmU3ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1Jlc291cmNlU2lkZWJhclBhbmVsLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1Jlc291cmNlU2lkZWJhclBhbmVsLmpzCkBAIC02MTAsNiArNjEwLDEzIEBAIFdl
Ykluc3BlY3Rvci5SZXNvdXJjZVNpZGViYXJQYW5lbC5wcm90b3R5cGUgPSB7CiAKICAgICBfdHJl
ZUVsZW1lbnRTZWxlY3RlZDogZnVuY3Rpb24odHJlZUVsZW1lbnQsIHNlbGVjdGVkQnlVc2VyKQog
ICAgIHsKKyAgICAgICAgaWYgKHRyZWVFbGVtZW50IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkNv
bnRlbnRGbG93VHJlZUVsZW1lbnQpIHsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQg
RE9NIHRyZWUgaW5zcGVjdG9yIGZvciBjb250ZW50IGZsb3cgdHJlZSBlbGVtZW50cy4KKyAgICAg
ICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjI5MjcK
KyAgICAgICAgICAgIGNvbnNvbGUubG9nKCJDb250ZW50IEZsb3cgdmlldyBub3QgaW1wbGVtZW50
ZWQiKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCiAgICAgICAgIGlmICh0cmVl
RWxlbWVudCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5Gb2xkZXJUcmVlRWxlbWVudCkKICAgICAg
ICAgICAgIHJldHVybjsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>214497</attachid>
            <date>2013-10-17 13:19:17 -0700</date>
            <delta_ts>2013-10-18 13:37:27 -0700</delta_ts>
            <desc>Patch V5</desc>
            <filename>bug122924_v5.patch</filename>
            <type>text/plain</type>
            <size>35738</size>
            <attacher name="Alexandru Chiculita">achicu</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IDg0N2RjOGIuLmFkNWVjNjggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDczIEBACisyMDEzLTEwLTE3ICBBbGV4YW5kcnUgQ2hp
Y3VsaXRhICA8YWNoaWN1QGFkb2JlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBDU1Mg
UmVnaW9uczogQWRkIHRoZSBsaXN0IG9mIGZsb3dzIGluIHRoZSBGcmFtZVRyZWVFbGVtZW50Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjI5MjQKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBjb2Rl
IHRvIGNvbGxlY3QgdGhlIGZsb3dzIGZyb20gdGhlIGJhY2tlbmQgaW50byB0aGUgRE9NVHJlZSBv
YmplY3QKKyAgICAgICAgb24gdGhlIGZyb250ZW5kLiBBZGRlZCBDb250ZW50RmxvdyB0byByZXBy
ZXNlbnQgdGhlIGZsb3dzIG9uIHRoZSBmcm9udGVuZAorICAgICAgICBzaWRlIGFuZCBjcmVhdGVk
IENvbnRlbnRGbG93VHJlZUVsZW1lbnQgdG8gZGlzcGxheSB0aGUgZmxvd3MgaW4gdGhlIEZyYW1l
VHJlZUVsZW1lbnQuCisKKyAgICAgICAgKiBMb2NhbGl6YXRpb25zL2VuLmxwcm9qL2xvY2FsaXpl
ZFN0cmluZ3MuanM6CisgICAgICAgICogU2NyaXB0cy9jb3B5LXVzZXItaW50ZXJmYWNlLXJlc291
cmNlcy5zaDoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0NTU09ic2VydmVyLmpzOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLkNTU09ic2VydmVyLnByb3RvdHlwZS5uYW1lZEZsb3dDcmVhdGVkKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NPYnNlcnZlci5wcm90b3R5cGUubmFtZWRGbG93UmVt
b3ZlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTT2JzZXJ2ZXIucHJvdG90eXBlLnJlZ2lv
bkxheW91dFVwZGF0ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU09ic2VydmVyLnByb3Rv
dHlwZS5yZWdpb25PdmVyc2V0Q2hhbmdlZCk6CisgICAgICAgICogVXNlckludGVyZmFjZS9Db250
ZW50Rmxvdy5qczogQWRkZWQuCisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29udGVudEZsb3cpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbnRlbnRGbG93LnByb3RvdHlwZS5nZXQgaWQpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLkNvbnRlbnRGbG93LnByb3RvdHlwZS5nZXQgZG9jdW1lbnROb2Rl
SWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbnRlbnRGbG93LnByb3RvdHlwZS5nZXQgbmFt
ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29udGVudEZsb3cucHJvdG90eXBlLmdldCBvdmVy
c2V0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db250ZW50Rmxvdy5wcm90b3R5cGUuZ2V0IHJl
Z2lvbnMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbnRlbnRGbG93LnByb3RvdHlwZS5nZXQg
Y29udGVudCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29udGVudEZsb3cucHJvdG90eXBlLnVw
ZGF0ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29udGVudEZsb3cucHJvdG90eXBlLl9kaWZm
Rmxvd0NoYW5nZXMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbnRlbnRGbG93LnByb3RvdHlw
ZS5fbG9hZEZyb21KU09OKToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0NvbnRlbnRGbG93SWNv
bi5jc3M6IEFkZGVkLgorICAgICAgICAoLmNvbnRlbnQtZmxvdy1pY29uIC5pY29uKToKKyAgICAg
ICAgKiBVc2VySW50ZXJmYWNlL0NvbnRlbnRGbG93VHJlZUVsZW1lbnQuanM6IEFkZGVkLgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLkNvbnRlbnRGbG93VHJlZUVsZW1lbnQpOgorICAgICAgICAqIFVz
ZXJJbnRlcmZhY2UvRE9NVHJlZS5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5ET01UcmVlKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5ET01UcmVlLnByb3RvdHlwZS5nZXQgZmxvd3MpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLkRPTVRyZWUucHJvdG90eXBlLmdldCBmbG93c0NvdW50KToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5ET01UcmVlLnByb3RvdHlwZS5yZXF1ZXN0Q29udGVudEZsb3dM
aXN0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5ET01UcmVlLnByb3RvdHlwZS5faXNDb250ZW50
Rmxvd0luQ3VycmVudERvY3VtZW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5ET01UcmVlLnBy
b3RvdHlwZS5fY29udGVudEZsb3dMaXN0V2FzVXBkYXRlZCk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuRE9NVHJlZS5wcm90b3R5cGUuX2NvbnRlbnRGbG93V2FzQWRkZWQpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLkRPTVRyZWUucHJvdG90eXBlLl9jb250ZW50Rmxvd1dhc1JlbW92ZWQpOgorICAg
ICAgICAqIFVzZXJJbnRlcmZhY2UvRE9NVHJlZU1hbmFnZXIuanM6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuRE9NVHJlZU1hbmFnZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTVRyZWVNYW5h
Z2VyLl9mbG93UGF5bG9hZEhhc2hLZXkpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTVRyZWVN
YW5hZ2VyLnByb3RvdHlwZS5nZXROYW1lZEZsb3dDb2xsZWN0aW9uKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5ET01UcmVlTWFuYWdlci5wcm90b3R5cGUubmFtZWRGbG93Q3JlYXRlZCk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuRE9NVHJlZU1hbmFnZXIucHJvdG90eXBlLm5hbWVkRmxvd1JlbW92
ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTVRyZWVNYW5hZ2VyLnByb3RvdHlwZS5fc2Vu
ZE5hbWVkRmxvd1VwZGF0ZUV2ZW50cyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRE9NVHJlZU1h
bmFnZXIucHJvdG90eXBlLnJlZ2lvbkxheW91dFVwZGF0ZWQpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkRPTVRyZWVNYW5hZ2VyLnByb3RvdHlwZS5yZWdpb25PdmVyc2V0Q2hhbmdlZCk6CisgICAg
ICAgICogVXNlckludGVyZmFjZS9GcmFtZVRyZWVFbGVtZW50LmpzOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkZyYW1lVHJlZUVsZW1lbnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkZyYW1lVHJl
ZUVsZW1lbnQucHJvdG90eXBlLm9ucG9wdWxhdGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkZy
YW1lVHJlZUVsZW1lbnQucHJvdG90eXBlLm9uZXhwYW5kKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5GcmFtZVRyZWVFbGVtZW50LnByb3RvdHlwZS5fY2hpbGRDb250ZW50Rmxvd1dhc0FkZGVkKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5GcmFtZVRyZWVFbGVtZW50LnByb3RvdHlwZS5fY2hpbGRD
b250ZW50Rmxvd1dhc1JlbW92ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkZyYW1lVHJlZUVs
ZW1lbnQucHJvdG90eXBlLl9yb290RE9NTm9kZUludmFsaWRhdGVkKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5GcmFtZVRyZWVFbGVtZW50LnByb3RvdHlwZS5fYWRkQ2hpbGRGb3JSZXByZXNlbnRl
ZE9iamVjdCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRnJhbWVUcmVlRWxlbWVudC5wcm90b3R5
cGUuX3JlbW92ZUNoaWxkRm9yUmVwcmVzZW50ZWRPYmplY3QpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkZyYW1lVHJlZUVsZW1lbnQucHJvdG90eXBlLl9hZGRUcmVlRWxlbWVudEZvclJlcHJlc2Vu
dGVkT2JqZWN0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5GcmFtZVRyZWVFbGVtZW50LnByb3Rv
dHlwZS5fY29tcGFyZVJlc291cmNlVHJlZUVsZW1lbnRzKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5GcmFtZVRyZWVFbGVtZW50LnByb3RvdHlwZS5faW5zZXJ0UmVzb3VyY2VUcmVlRWxlbWVudCk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuRnJhbWVUcmVlRWxlbWVudC5wcm90b3R5cGUuX3BhcmVu
dFRyZWVFbGVtZW50Rm9yUmVwcmVzZW50ZWRPYmplY3QpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkZyYW1lVHJlZUVsZW1lbnQucHJvdG90eXBlLl9zaG91bGRHcm91cEludG9Gb2xkZXJzKToKKyAg
ICAgICAgKiBVc2VySW50ZXJmYWNlL0ltYWdlcy9Db250ZW50Rmxvdy5zdmc6IEFkZGVkLgorICAg
ICAgICAqIFVzZXJJbnRlcmZhY2UvTWFpbi5odG1sOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2Uv
UmVzb3VyY2VTaWRlYmFyUGFuZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VT
aWRlYmFyUGFuZWwucHJvdG90eXBlLl90cmVlRWxlbWVudFNlbGVjdGVkKToKKwogMjAxMy0xMC0x
NSAgQW50b2luZSBRdWludCAgPGdyYW91dHNAYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNw
ZWN0b3I6IGNhbid0IHNlbGVjdCB0ZXh0IGluc2lkZSBhIHRleHQgbm9kZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkluc3BlY3RvclVJL0xvY2FsaXphdGlvbnMvZW4ubHByb2ovbG9jYWxpemVkU3Ry
aW5ncy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Mb2NhbGl6YXRpb25zL2VuLmxwcm9qL2xv
Y2FsaXplZFN0cmluZ3MuanMKaW5kZXggYmNiODczOTQyM2MwNGY2Mjk0YmY4MTg4YzMwZWU1MmU0
MTUyMTlhYi4uMzkwNGVkYzk5YzE2NDJiNDNkOGVlZGI1M2VhYmY2ODc3ZWU1OTRmMCAxMDA2NDQK
R0lUIGJpbmFyeSBwYXRjaApkZWx0YSA0Mgp0Y21iUXolWTNod2RCZ2Z4PV5UYzloSHsydDF8XjFB
MV9jSU5BWFp7PFYqcmI4WmlwNGgxT05wdjNpMUV8CgpkZWx0YSAxOAphY21jY0QlUkhyKmRCZ2hI
JEBYejxvQnprJiZqMHtYeWE/TD4KCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
U2NyaXB0cy9jb3B5LXVzZXItaW50ZXJmYWNlLXJlc291cmNlcy5zaCBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9TY3JpcHRzL2NvcHktdXNlci1pbnRlcmZhY2UtcmVzb3VyY2VzLnNoCmluZGV4IDAy
OGM3YTUuLmE2ZWU4OWUgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9TY3JpcHRz
L2NvcHktdXNlci1pbnRlcmZhY2UtcmVzb3VyY2VzLnNoCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9TY3JpcHRzL2NvcHktdXNlci1pbnRlcmZhY2UtcmVzb3VyY2VzLnNoCkBAIC0xMyw2ICsx
Myw3IEBAIExJQ0VOU0U9JChjYXQgPDxFT0YKICAqIENvcHlyaWdodCAoQykgMjAxMyBNYXR0IEhv
bGRlbiA8amZ0aG9sZGVuQHlhaG9vLmNvbT4KICAqIENvcHlyaWdodCAoQykgMjAxMyBTYW1zdW5n
IEVsZWN0cm9uaWNzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEz
IFNlb2tqdSBLd29uIChzZW9ranUua3dvbkBnbWFpbC5jb20pCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTMgQWRvYmUgU3lzdGVtcyBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL0NTU09ic2VydmVyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvQ1NTT2JzZXJ2ZXIuanMKaW5kZXggY2QwNjZkMS4uNTVmMzQ0MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ1NTT2JzZXJ2ZXIuanMKKysrIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ1NTT2JzZXJ2ZXIuanMKQEAgLTU1
LDE3ICs1NSwyMiBAQCBXZWJJbnNwZWN0b3IuQ1NTT2JzZXJ2ZXIucHJvdG90eXBlID0gewogCiAg
ICAgbmFtZWRGbG93Q3JlYXRlZDogZnVuY3Rpb24obmFtZWRGbG93KQogICAgIHsKLSAgICAgICAg
Ly8gRklYTUU6IE5vdCBpbXBsZW1lbnRlZC4KKyAgICAgICAgV2ViSW5zcGVjdG9yLmRvbVRyZWVN
YW5hZ2VyLm5hbWVkRmxvd0NyZWF0ZWQobmFtZWRGbG93KTsKICAgICB9LAogCiAgICAgbmFtZWRG
bG93UmVtb3ZlZDogZnVuY3Rpb24oZG9jdW1lbnROb2RlSWQsIGZsb3dOYW1lKQogICAgIHsKLSAg
ICAgICAgLy8gRklYTUU6IE5vdCBpbXBsZW1lbnRlZC4KKyAgICAgICAgV2ViSW5zcGVjdG9yLmRv
bVRyZWVNYW5hZ2VyLm5hbWVkRmxvd1JlbW92ZWQoZG9jdW1lbnROb2RlSWQsIGZsb3dOYW1lKTsK
ICAgICB9LAogCiAgICAgcmVnaW9uTGF5b3V0VXBkYXRlZDogZnVuY3Rpb24obmFtZWRGbG93KQog
ICAgIHsKLSAgICAgICAgLy8gRklYTUU6IE5vdCBpbXBsZW1lbnRlZC4KKyAgICAgICAgV2ViSW5z
cGVjdG9yLmRvbVRyZWVNYW5hZ2VyLnJlZ2lvbkxheW91dFVwZGF0ZWQobmFtZWRGbG93KTsKKyAg
ICB9LAorCisgICAgcmVnaW9uT3ZlcnNldENoYW5nZWQ6IGZ1bmN0aW9uKG5hbWVkRmxvdykKKyAg
ICB7CisgICAgICAgIFdlYkluc3BlY3Rvci5kb21UcmVlTWFuYWdlci5yZWdpb25PdmVyc2V0Q2hh
bmdlZChuYW1lZEZsb3cpOwogICAgIH0KIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRlbnRGbG93LmpzIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvQ29udGVudEZsb3cuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uZWU5MTgwNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRlbnRGbG93LmpzCkBAIC0wLDAgKzEsMTQzIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEzIEFkb2JlIFN5c3RlbXMgSW5jb3Jwb3JhdGVkLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUKKyAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nCisgKiAgICBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogICAgY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyAq
ICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cworICogICAgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSICJBUyBJUyIgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgQkUKKyAqIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwKKyAq
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IKKyAqIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRgorICogVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
CisgKiBTVUNIIERBTUFHRS4KKyAqLworCitXZWJJbnNwZWN0b3IuQ29udGVudEZsb3cgPSBmdW5j
dGlvbihkYXRhKQoreworICAgIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKKworICAg
IHRoaXMuX2xvYWRGcm9tSlNPTihkYXRhKTsKK307CisKK1dlYkluc3BlY3Rvci5Db250ZW50Rmxv
dy5FdmVudCA9IHsKKyAgICBPdmVyc2V0V2FzQ2hhbmdlZDogImNvbnRlbnQtZmxvdy1vdmVyc2V0
LXdhcy1jaGFuZ2VkIiwKKyAgICBDb250ZW50V2FzQ2hhbmdlZDogImNvbnRlbnQtZmxvdy1jb250
ZW50LXdhcy1jaGFuZ2VkIiwKKyAgICBSZWdpb25DaGFpbldhc0NoYW5nZWQ6ICJjb250ZW50LWZs
b3ctcmVnaW9uLWNoYWluLXdhcy1jaGFuZ2VkIiwKK307CisKK1dlYkluc3BlY3Rvci5Db250ZW50
Rmxvdy5wcm90b3R5cGUgPSB7CisKKyAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLkNvbnRl
bnRGbG93LAorCisgICAgLy8gUHVibGljCisKKyAgICAvKiBnZXR0ZXJzIGFuZCBzZXR0ZXJzICov
CisKKyAgICBnZXQgaWQoKQorICAgIHsKKyAgICAgICAgLy8gVXNlIHRoZSBmbG93IG5vZGUgaWQs
IHRvIGF2b2lkIGNvbGxpc2lvbnMgd2hlbiB3ZSBjaGFuZ2UgbWFpbiBkb2N1bWVudCBpZC4KKyAg
ICAgICAgcmV0dXJuIHRoaXMuX2RvY3VtZW50Tm9kZUlkICsgIjoiICsgdGhpcy5fbmFtZTsKKyAg
ICB9LAorCisgICAgZ2V0IGRvY3VtZW50Tm9kZUlkKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0
aGlzLl9kb2N1bWVudE5vZGVJZDsKKyAgICB9LAorCisgICAgZ2V0IG5hbWUoKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIHRoaXMuX25hbWU7CisgICAgfSwKKworICAgIGdldCBvdmVyc2V0KCkKKyAg
ICB7CisgICAgICAgIHJldHVybiB0aGlzLl9vdmVyc2V0OworICAgIH0sCisKKyAgICBnZXQgcmVn
aW9ucygpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fcmVnaW9uczsKKyAgICB9LAorCisg
ICAgZ2V0IGNvbnRlbnQoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2NvbnRlbnQ7Cisg
ICAgfSwKKworICAgIHVwZGF0ZTogZnVuY3Rpb24oZGF0YSkKKyAgICB7CisgICAgICAgIHZhciBk
aWZmID0gdGhpcy5fZGlmZkZsb3dDaGFuZ2VzKGRhdGEpOworICAgICAgICB0aGlzLl9sb2FkRnJv
bUpTT04oZGF0YSk7CisKKyAgICAgICAgaWYgKGRpZmYub3ZlcnNldCkKKyAgICAgICAgICAgIHRo
aXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5Db250ZW50Rmxvdy5FdmVu
dC5GbG93T3ZlcnNldFdhc0NoYW5nZWQpOworICAgICAgICBpZiAoZGlmZi5jb250ZW50KQorICAg
ICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkNvbnRl
bnRGbG93LkV2ZW50LkZsb3dDb250ZW50V2FzQ2hhbmdlZCk7CisgICAgICAgIGlmIChkaWZmLnJl
Z2lvbnMpCisgICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNw
ZWN0b3IuQ29udGVudEZsb3cuRXZlbnQuRmxvd1JlZ2lvbnNXYXNDaGFuZ2VkKTsKKyAgICB9LAor
CisgICAgLy8gUHJpdmF0ZQorCisgICAgX2RpZmZGbG93Q2hhbmdlczogZnVuY3Rpb24ob3RoZXIp
CisgICAgeworICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9uYW1lID09PSBvdGhlci5uYW1l
KTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5fZG9jdW1lbnROb2RlSWQgPT09IG90aGVy
LmRvY3VtZW50Tm9kZUlkKTsKKworICAgICAgICB2YXIgZGlmZiA9IHsKKyAgICAgICAgICAgIGZs
b3dPdmVyc2V0OiB0aGlzLl9vdmVyc2V0ICE9PSBvdGhlci5vdmVyc2V0LAorICAgICAgICAgICAg
Y29udGVudDogdGhpcy5fY29udGVudC5sZW5ndGggIT09IG90aGVyLmNvbnRlbnQubGVuZ3RoLAor
ICAgICAgICAgICAgcmVnaW9uczogdGhpcy5fcmVnaW9ucy5sZW5ndGggIT09IG90aGVyLnJlZ2lv
bnMubGVuZ3RoCisgICAgICAgIH07CisKKyAgICAgICAgaWYgKCFkaWZmLmNvbnRlbnQpIHsKKyAg
ICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5fY29udGVudC5sZW5ndGg7ICsraSkg
eworICAgICAgICAgICAgICAgIGlmICh0aGlzLl9jb250ZW50W2ldICE9PSBvdGhlci5jb250ZW50
W2ldKSB7CisgICAgICAgICAgICAgICAgICAgIGRpZmYuY29udGVudCA9IHRydWU7CisgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorCisgICAgICAgIGlmICghZGlmZi5yZWdpb25zKSB7CisgICAgICAgICAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IHRoaXMuX3JlZ2lvbnMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAg
ICAgICB2YXIgY3VycmVudFJlZ2lvbiA9IHRoaXMuX3JlZ2lvbnNbaV07CisgICAgICAgICAgICAg
ICAgdmFyIG5ld1JlZ2lvbiA9IG90aGVyLnJlZ2lvbnNbaV07CisgICAgICAgICAgICAgICAgaWYg
KGN1cnJlbnRSZWdpb24ubm9kZUlkICE9PSBuZXdSZWdpb24ubm9kZUlkIHx8IGN1cnJlbnRSZWdp
b24ucmVnaW9uT3ZlcnNldCAhPT0gbmV3UmVnaW9uLnJlZ2lvbk92ZXJzZXQpIHsKKyAgICAgICAg
ICAgICAgICAgICAgZGlmZi5yZWdpb25zID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAg
ICAgcmV0dXJuIGRpZmY7CisgICAgfSwKKworICAgIF9sb2FkRnJvbUpTT046IGZ1bmN0aW9uKGRh
dGEpCisgICAgeworICAgICAgICB0aGlzLl9kb2N1bWVudE5vZGVJZCA9IGRhdGEuZG9jdW1lbnRO
b2RlSWQ7CisgICAgICAgIHRoaXMuX25hbWUgPSBkYXRhLm5hbWU7CisgICAgICAgIHRoaXMuX292
ZXJzZXQgPSBkYXRhLm92ZXJzZXQ7CisgICAgICAgIHRoaXMuX3JlZ2lvbnMgPSBkYXRhLnJlZ2lv
bnM7CisgICAgICAgIHRoaXMuX2NvbnRlbnQgPSBkYXRhLmNvbnRlbnQ7CisgICAgfQorCit9Owor
CisKK1dlYkluc3BlY3Rvci5Db250ZW50Rmxvdy5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5z
cGVjdG9yLk9iamVjdC5wcm90b3R5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9Db250ZW50Rmxvd0ljb24uY3NzIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvQ29udGVudEZsb3dJY29uLmNzcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi5iMjZlNzY2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udGVudEZsb3dJY29uLmNzcwpAQCAtMCwwICsxLDMy
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFkb2JlIFN5c3RlbXMgSW5jb3Jwb3JhdGVk
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUKKyAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisgKiAgICBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICog
ICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcKKyAqICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscworICogICAgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSICJBUyBJ
UyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgQkUKKyAqIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwKKyAqIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IKKyAqIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRgor
ICogVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GCisgKiBTVUNIIERBTUFHRS4KKyAqLworCisuY29udGVudC1mbG93LWljb24gLmlj
b24geworICAgIGNvbnRlbnQ6IHVybChJbWFnZXMvQ29udGVudEZsb3cuc3ZnKTsKK30KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRlbnRGbG93VHJl
ZUVsZW1lbnQuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250ZW50
Rmxvd1RyZWVFbGVtZW50LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc2
NmZmN2UKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9Db250ZW50Rmxvd1RyZWVFbGVtZW50LmpzCkBAIC0wLDAgKzEsNDQgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTMgQWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZQorICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcKKyAqICAgIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiAgICBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworICogICAg
ZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzCisg
KiAgICBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVIgIkFTIElTIiBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBCRQorICogTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLAorICogT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUgorICogVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GCisgKiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKyAq
IFNVQ0ggREFNQUdFLgorICovCisKK1dlYkluc3BlY3Rvci5Db250ZW50Rmxvd1RyZWVFbGVtZW50
ID0gZnVuY3Rpb24ocmVwcmVzZW50ZWRPYmplY3QpCit7CisgICAgY29uc29sZS5hc3NlcnQocmVw
cmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuQ29udGVudEZsb3cpOworICAg
IFdlYkluc3BlY3Rvci5HZW5lcmFsVHJlZUVsZW1lbnQuY2FsbCh0aGlzLCBbV2ViSW5zcGVjdG9y
LkNvbnRlbnRGbG93VHJlZUVsZW1lbnQuU3R5bGVDbGFzc05hbWUsIFdlYkluc3BlY3Rvci5Db250
ZW50Rmxvd1RyZWVFbGVtZW50LkNvbnRlbnRGbG93SWNvblN0eWxlQ2xhc3NOYW1lXSwgcmVwcmVz
ZW50ZWRPYmplY3QubmFtZSwgbnVsbCwgcmVwcmVzZW50ZWRPYmplY3QsIGZhbHNlKTsKKworICAg
IHRoaXMuc21hbGwgPSB0cnVlOworfTsKKworV2ViSW5zcGVjdG9yLkNvbnRlbnRGbG93VHJlZUVs
ZW1lbnQuQ29udGVudEZsb3dJY29uU3R5bGVDbGFzc05hbWUgPSAiY29udGVudC1mbG93LWljb24i
OworCitXZWJJbnNwZWN0b3IuQ29udGVudEZsb3dUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7Cisg
ICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5Db250ZW50Rmxvd1RyZWVFbGVtZW50Cit9Owor
CitXZWJJbnNwZWN0b3IuQ29udGVudEZsb3dUcmVlRWxlbWVudC5wcm90b3R5cGUuX19wcm90b19f
ID0gV2ViSW5zcGVjdG9yLkdlbmVyYWxUcmVlRWxlbWVudC5wcm90b3R5cGU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9ET01UcmVlLmpzIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvRE9NVHJlZS5qcwppbmRleCA3ODNlOTdkLi5k
ZGRiNGFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9E
T01UcmVlLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0RPTVRy
ZWUuanMKQEAgLTMxLDYgKzMxLDggQEAgV2ViSW5zcGVjdG9yLkRPTVRyZWUgPSBmdW5jdGlvbihm
cmFtZSkKIAogICAgIHRoaXMuX3Jvb3RET01Ob2RlID0gbnVsbDsKICAgICB0aGlzLl9yZXF1ZXN0
SWRlbnRpZmllciA9IDA7CisgICAgdGhpcy5fZmxvd3MgPSB7fTsKKyAgICB0aGlzLl9mbG93c0Nv
dW50ID0gMDsKIAogICAgIHRoaXMuX2ZyYW1lLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9y
LkZyYW1lLkV2ZW50LlBhZ2VFeGVjdXRpb25Db250ZXh0Q2hhbmdlZCwgdGhpcy5fZnJhbWVQYWdl
RXhlY3V0aW9uQ29udGV4dENoYW5nZWQsIHRoaXMpOwogCkBAIC00MSwxMiArNDMsMTggQEAgV2Vi
SW5zcGVjdG9yLkRPTVRyZWUgPSBmdW5jdGlvbihmcmFtZSkKICAgICAgICAgV2ViSW5zcGVjdG9y
LmRvbVRyZWVNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRPTVRyZWVNYW5h
Z2VyLkV2ZW50Lk5vZGVSZW1vdmVkLCB0aGlzLl9ub2RlUmVtb3ZlZCwgdGhpcyk7CiAgICAgICAg
IHRoaXMuX2ZyYW1lLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkZyYW1lLkV2ZW50Lk1h
aW5SZXNvdXJjZURpZENoYW5nZSwgdGhpcy5fZnJhbWVNYWluUmVzb3VyY2VEaWRDaGFuZ2UsIHRo
aXMpOwogICAgIH0KKworICAgIFdlYkluc3BlY3Rvci5kb21UcmVlTWFuYWdlci5hZGRFdmVudExp
c3RlbmVyKFdlYkluc3BlY3Rvci5ET01UcmVlTWFuYWdlci5FdmVudC5Db250ZW50Rmxvd0xpc3RX
YXNVcGRhdGVkLCB0aGlzLl9jb250ZW50Rmxvd0xpc3RXYXNVcGRhdGVkLCB0aGlzKTsKKyAgICBX
ZWJJbnNwZWN0b3IuZG9tVHJlZU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3Iu
RE9NVHJlZU1hbmFnZXIuRXZlbnQuQ29udGVudEZsb3dXYXNBZGRlZCwgdGhpcy5fY29udGVudEZs
b3dXYXNBZGRlZCwgdGhpcyk7CisgICAgV2ViSW5zcGVjdG9yLmRvbVRyZWVNYW5hZ2VyLmFkZEV2
ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRPTVRyZWVNYW5hZ2VyLkV2ZW50LkNvbnRlbnRGbG93
V2FzUmVtb3ZlZCwgdGhpcy5fY29udGVudEZsb3dXYXNSZW1vdmVkLCB0aGlzKTsKIH07CiAKIFdl
Ykluc3BlY3Rvci5PYmplY3QuYWRkQ29uc3RydWN0b3JGdW5jdGlvbnMoV2ViSW5zcGVjdG9yLkRP
TVRyZWUpOwogCiBXZWJJbnNwZWN0b3IuRE9NVHJlZS5FdmVudCA9IHsKLSAgICBSb290RE9NTm9k
ZUludmFsaWRhdGVkOiAiZG9tLXRyZWUtcm9vdC1kb20tbm9kZS1pbnZhbGlkYXRlZCIKKyAgICBS
b290RE9NTm9kZUludmFsaWRhdGVkOiAiZG9tLXRyZWUtcm9vdC1kb20tbm9kZS1pbnZhbGlkYXRl
ZCIsCisgICAgQ29udGVudEZsb3dXYXNBZGRlZDogImRvbS10cmVlLWNvbnRlbnQtZmxvdy13YXMt
YWRkZWQiLAorICAgIENvbnRlbnRGbG93V2FzUmVtb3ZlZDogImRvbS10cmVlLWNvbnRlbnQtZmxv
dy13YXMtcmVtb3ZlZCIKIH07CiAKIFdlYkluc3BlY3Rvci5ET01UcmVlLnByb3RvdHlwZSA9IHsK
QEAgLTU5LDYgKzY3LDE2IEBAIFdlYkluc3BlY3Rvci5ET01UcmVlLnByb3RvdHlwZSA9IHsKICAg
ICAgICAgcmV0dXJuIHRoaXMuX2ZyYW1lOwogICAgIH0sCiAKKyAgICBnZXQgZmxvd3MoKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2Zsb3dzOworICAgIH0sCisKKyAgICBnZXQgZmxvd3ND
b3VudCgpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fZmxvd3NDb3VudDsKKyAgICB9LAor
CiAgICAgaW52YWxpZGF0ZTogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgLy8gU2V0IHRvIG51
bGwgc28gaXQgaXMgZmV0Y2hlZCBhZ2FpbiBuZXh0IHRpbWUgcmVxdWVzdFJvb3RET01Ob2RlIGlz
IGNhbGxlZC4KQEAgLTIzMCw2ICsyNDgsOTMgQEAgV2ViSW5zcGVjdG9yLkRPTVRyZWUucHJvdG90
eXBlID0gewogCiAgICAgICAgICAgICB0aGlzLl9yZXF1ZXN0Um9vdERPTU5vZGUoKTsKICAgICAg
ICAgfQorICAgIH0sCisKKyAgICByZXF1ZXN0Q29udGVudEZsb3dMaXN0OiBmdW5jdGlvbigpCisg
ICAgeworICAgICAgICB0aGlzLnJlcXVlc3RSb290RE9NTm9kZShmdW5jdGlvbihyb290Tm9kZSkg
eworICAgICAgICAgICAgLy8gTGV0IHRoZSBiYWNrZW5kIGtub3cgd2UgYXJlIGludGVyZXN0ZWQg
YWJvdXQgdGhlIG5hbWVkIGZsb3cgZXZlbnRzIGZvciB0aGlzIGRvY3VtZW50LgorICAgICAgICAg
ICAgV2ViSW5zcGVjdG9yLmRvbVRyZWVNYW5hZ2VyLmdldE5hbWVkRmxvd0NvbGxlY3Rpb24ocm9v
dE5vZGUuaWQpOworICAgICAgICB9KTsKKyAgICB9LAorCisgICAgX2lzQ29udGVudEZsb3dJbkN1
cnJlbnREb2N1bWVudDogZnVuY3Rpb24oZmxvdykKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlz
Ll9yb290RE9NTm9kZSAmJiBmbG93LmRvY3VtZW50Tm9kZUlkID09PSB0aGlzLl9yb290RE9NTm9k
ZS5pZDsKKyAgICB9LAorCisgICAgX2NvbnRlbnRGbG93TGlzdFdhc1VwZGF0ZWQ6IGZ1bmN0aW9u
KGV2ZW50KQorICAgIHsKKyAgICAgICAgaWYgKCF0aGlzLl9yb290RE9NTm9kZSB8fCB0aGlzLl9y
b290RE9NTm9kZS5pZCAhPT0gZXZlbnQuZGF0YS5kb2N1bWVudE5vZGVJZCkKKyAgICAgICAgICAg
IHJldHVybjsKKworICAgICAgICAvLyBBc3N1bWUgdGhhdCBhbGwgdGhlIGZsb3dzIGhhdmUgYmVl
biByZW1vdmVkLgorICAgICAgICB2YXIgZGVsZXRlZEZsb3dzID0ge307CisgICAgICAgIGZvciAo
dmFyIGZsb3dJZCBpbiB0aGlzLl9mbG93cykKKyAgICAgICAgICAgIGRlbGV0ZWRGbG93c1tmbG93
SWRdID0gdGhpcy5fZmxvd3NbZmxvd0lkXTsKKworICAgICAgICB2YXIgbmV3Rmxvd3MgPSBbXTsK
KworICAgICAgICB2YXIgZmxvd3MgPSBldmVudC5kYXRhLmZsb3dzOworICAgICAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IGZsb3dzLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICB2YXIgZmxvdyA9
IGZsb3dzW2ldOworICAgICAgICAgICAgLy8gQWxsIHRoZSBmbG93cyByZWNlaXZlZCBmcm9tIFdl
YktpdCBhcmUgcGFydCBvZiB0aGUgc2FtZSBkb2N1bWVudC4KKyAgICAgICAgICAgIGNvbnNvbGUu
YXNzZXJ0KHRoaXMuX2lzQ29udGVudEZsb3dJbkN1cnJlbnREb2N1bWVudChmbG93KSk7CisKKyAg
ICAgICAgICAgIHZhciBmbG93SWQgPSBmbG93LmlkOworICAgICAgICAgICAgaWYgKHRoaXMuX2Zs
b3dzLmhhc093blByb3BlcnR5KGZsb3dJZCkpIHsKKyAgICAgICAgICAgICAgICAvLyBSZW1vdmUg
dGhlIGZsb3cgbmFtZSBmcm9tIHRoZSBkZWxldGVkIGxpc3QuCisgICAgICAgICAgICAgICAgY29u
c29sZS5hc3NlcnQoZGVsZXRlZEZsb3dzLmhhc093blByb3BlcnR5KGZsb3dLZXkpKTsKKyAgICAg
ICAgICAgICAgICBkZWxldGUgZGVsZXRlZEZsb3dzW2Zsb3dJZF07CisgICAgICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgICAgIHRoaXMuX2Zsb3dzW2Zsb3dJZF0gPSBmbG93OworICAgICAg
ICAgICAgICAgIG5ld0Zsb3dzLnB1c2goZmxvdyk7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KworICAgICAgICBmb3IgKHZhciBmbG93SWQgaW4gZGVsZXRlZEZsb3dzKSB7CisgICAgICAgICAg
ICAtLXRoaXMuX2Zsb3dzQ291bnQ7CisgICAgICAgICAgICBkZWxldGUgdGhpcy5fZmxvd3NbZmxv
d0lkXTsKKyAgICAgICAgfQorICAgICAgICB0aGlzLl9mbG93c0NvdW50ICs9IG5ld0Zsb3dzLmxl
bmd0aDsKKworICAgICAgICAvLyBTZW5kIHVwZGF0ZSBldmVudHMgdG8gbGlzdGVuZXJzLgorCisg
ICAgICAgIGZvciAodmFyIGZsb3dJZCBpbiBkZWxldGVkRmxvd3MpCisgICAgICAgICAgICB0aGlz
LmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuRE9NVHJlZS5FdmVudC5Db250
ZW50Rmxvd1dhc1JlbW92ZWQsIHtmbG93OiBkZWxldGVkRmxvd3NbZmxvd0lkXX0pOworCisgICAg
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbmV3Rmxvd3MubGVuZ3RoOyArK2kpCisgICAgICAgICAg
ICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuRE9NVHJlZS5FdmVu
dC5Db250ZW50Rmxvd1dhc0FkZGVkLCB7ZmxvdzogbmV3Rmxvd3NbaV19KTsKKyAgICB9LAorCisg
ICAgX2NvbnRlbnRGbG93V2FzQWRkZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIHsKKyAgICAgICAg
dmFyIGZsb3cgPSBldmVudC5kYXRhLmZsb3c7CisgICAgICAgIGlmICghdGhpcy5faXNDb250ZW50
Rmxvd0luQ3VycmVudERvY3VtZW50KGZsb3cpKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAg
ICAgIHZhciBmbG93SWQgPSBmbG93LmlkOworICAgICAgICBjb25zb2xlLmFzc2VydCghdGhpcy5f
Zmxvd3MuaGFzT3duUHJvcGVydHkoZmxvd0lkKSk7CisgICAgICAgIHRoaXMuX2Zsb3dzW2Zsb3dJ
ZF0gPSBmbG93OworCisgICAgICAgICsrdGhpcy5fZmxvd3NDb3VudDsKKworICAgICAgICB0aGlz
LmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuRE9NVHJlZS5FdmVudC5Db250
ZW50Rmxvd1dhc0FkZGVkLCB7ZmxvdzogZmxvd30pOworICAgIH0sCisKKyAgICBfY29udGVudEZs
b3dXYXNSZW1vdmVkOiBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAgICAgIHZhciBmbG93ID0g
ZXZlbnQuZGF0YS5mbG93OworICAgICAgICBpZiAoIXRoaXMuX2lzQ29udGVudEZsb3dJbkN1cnJl
bnREb2N1bWVudChmbG93KSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB2YXIgZmxv
d0lkID0gZmxvdy5pZDsKKyAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5fZmxvd3MuaGFzT3du
UHJvcGVydHkoZmxvd0lkKSk7CisgICAgICAgIGRlbGV0ZSB0aGlzLl9mbG93c1tmbG93SWRdOwor
CisgICAgICAgIC0tdGhpcy5fZmxvd3NDb3VudDsKKworICAgICAgICB0aGlzLmRpc3BhdGNoRXZl
bnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuRE9NVHJlZS5FdmVudC5Db250ZW50Rmxvd1dhc1Jl
bW92ZWQsIHtmbG93OiBmbG93fSk7CiAgICAgfQogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvRE9NVHJlZU1hbmFnZXIuanMgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9ET01UcmVlTWFuYWdlci5qcwppbmRleCA4MTgyNGRi
Li4wOGZkODQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9ET01UcmVlTWFuYWdlci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9ET01UcmVlTWFuYWdlci5qcwpAQCAtMzksNiArMzksNyBAQCBXZWJJbnNwZWN0b3IuRE9N
VHJlZU1hbmFnZXIgPSBmdW5jdGlvbigpIHsKICAgICB0aGlzLl9pZFRvRE9NTm9kZSA9IHt9Owog
ICAgIHRoaXMuX2RvY3VtZW50ID0gbnVsbDsKICAgICB0aGlzLl9hdHRyaWJ1dGVMb2FkTm9kZUlk
cyA9IHt9OworICAgIHRoaXMuX2Zsb3dzID0ge307CiB9CiAKIFdlYkluc3BlY3Rvci5PYmplY3Qu
YWRkQ29uc3RydWN0b3JGdW5jdGlvbnMoV2ViSW5zcGVjdG9yLkRPTVRyZWVNYW5hZ2VyKTsKQEAg
LTUyLDcgKzUzLDE4IEBAIFdlYkluc3BlY3Rvci5ET01UcmVlTWFuYWdlci5FdmVudCA9IHsKICAg
ICBEb2N1bWVudFVwZGF0ZWQ6ICJkb20tdHJlZS1tYW5hZ2VyLWRvY3VtZW50LXVwZGF0ZWQiLAog
ICAgIENoaWxkTm9kZUNvdW50VXBkYXRlZDogImRvbS10cmVlLW1hbmFnZXItY2hpbGQtbm9kZS1j
b3VudC11cGRhdGVkIiwKICAgICBET01Ob2RlV2FzSW5zcGVjdGVkOiAiZG9tLXRyZWUtbWFuYWdl
ci1kb20tbm9kZS13YXMtaW5zcGVjdGVkIiwKLSAgICBJbnNwZWN0TW9kZVN0YXRlQ2hhbmdlZDog
ImRvbS10cmVlLW1hbmFnZXItaW5zcGVjdC1tb2RlLXN0YXRlLWNoYW5nZWQiCisgICAgSW5zcGVj
dE1vZGVTdGF0ZUNoYW5nZWQ6ICJkb20tdHJlZS1tYW5hZ2VyLWluc3BlY3QtbW9kZS1zdGF0ZS1j
aGFuZ2VkIiwKKyAgICBDb250ZW50Rmxvd0xpc3RXYXNVcGRhdGVkOiAiZG9tLXRyZWUtbWFuYWdl
ci1jb250ZW50LWZsb3ctbGlzdC13YXMtdXBkYXRlZCIsCisgICAgQ29udGVudEZsb3dXYXNBZGRl
ZDogImRvbS10cmVlLW1hbmFnZXItY29udGVudC1mbG93LXdhcy1hZGRlZCIsCisgICAgQ29udGVu
dEZsb3dXYXNSZW1vdmVkOiAiZG9tLXRyZWUtbWFuYWdlci1jb250ZW50LWZsb3ctd2FzLXJlbW92
ZWQiLAorICAgIFJlZ2lvbkxheW91dFVwZGF0ZWQ6ICJkb20tdHJlZS1tYW5hZ2VyLXJlZ2lvbi1s
YXlvdXQtdXBkYXRlZCIsCisgICAgUmVnaW9uT3ZlcnNldENoYW5nZWQ6ICJkb20tdHJlZS1tYW5h
Z2VyLXJlZ2lvbi1vdmVyc2V0LWNoYW5nZWQiCit9OworCitXZWJJbnNwZWN0b3IuRE9NVHJlZU1h
bmFnZXIuX2Zsb3dQYXlsb2FkSGFzaEtleSA9IGZ1bmN0aW9uKGZsb3dQYXlsb2FkKQoreworICAg
IC8vIFVzZSB0aGUgZmxvdyBub2RlIGlkLCB0byBhdm9pZCBjb2xsaXNpb25zIHdoZW4gd2UgY2hh
bmdlIG1haW4gZG9jdW1lbnQgaWQuCisgICAgcmV0dXJuIGZsb3dQYXlsb2FkLmRvY3VtZW50Tm9k
ZUlkICsgIjoiICsgZmxvd1BheWxvYWQubmFtZTsKIH07CiAKIFdlYkluc3BlY3Rvci5ET01UcmVl
TWFuYWdlci5wcm90b3R5cGUgPSB7CkBAIC01MTksNiArNTMxLDY3IEBAIFdlYkluc3BlY3Rvci5E
T01UcmVlTWFuYWdlci5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBoaWdobGlnaHRDb25maWcu
bWFyZ2luQ29sb3IgPSB7cjogMjQ2LCBnOiAxNzgsIGI6IDEwNywgYTogMC42Nn07CiAKICAgICAg
ICAgcmV0dXJuIGhpZ2hsaWdodENvbmZpZzsKKyAgICB9LAorCisgICAgZ2V0TmFtZWRGbG93Q29s
bGVjdGlvbjogZnVuY3Rpb24oZG9jdW1lbnROb2RlSWQpCisgICAgeworICAgICAgICBmdW5jdGlv
biBvbk5hbWVkRmxvd0NvbGxlY3Rpb25BdmFpbGFibGUoZXJyb3IsIGZsb3dzKQorICAgICAgICB7
CisgICAgICAgICAgICBpZiAoZXJyb3IpIHsKKyAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9y
KCJFcnJvciB3aGlsZSBnZXR0aW5nIHRoZSBuYW1lZCBmbG93cyBmb3IgZG9jdW1lbnQgIiArIGRv
Y3VtZW50Tm9kZUlkICsgIjogIiArIGVycm9yKTsKKyAgICAgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICB2YXIgY29udGVudEZsb3dzID0gW107CisgICAgICAg
ICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGZsb3dzLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAg
ICAgICAgdmFyIGZsb3dQYXlsb2FkID0gZmxvd3NbaV07CisgICAgICAgICAgICAgICAgdmFyIGZs
b3dLZXkgPSBXZWJJbnNwZWN0b3IuRE9NVHJlZU1hbmFnZXIuX2Zsb3dQYXlsb2FkSGFzaEtleShm
bG93UGF5bG9hZCk7CisgICAgICAgICAgICAgICAgdmFyIGNvbnRlbnRGbG93ID0gdGhpcy5fZmxv
d3NbZmxvd0tleV07CisgICAgICAgICAgICAgICAgaWYgKGNvbnRlbnRGbG93KQorICAgICAgICAg
ICAgICAgICAgICBjb250ZW50Rmxvdy51cGRhdGUoZmxvd1BheWxvYWQpOworICAgICAgICAgICAg
ICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICBjb250ZW50RmxvdyA9IG5ldyBXZWJJbnNw
ZWN0b3IuQ29udGVudEZsb3coZmxvd1BheWxvYWQpOworICAgICAgICAgICAgICAgICAgICB0aGlz
Ll9mbG93c1tmbG93S2V5XSA9IGNvbnRlbnRGbG93OworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICBjb250ZW50Rmxvd3MucHVzaChjb250ZW50Rmxvdyk7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3Iu
RE9NVHJlZU1hbmFnZXIuRXZlbnQuQ29udGVudEZsb3dMaXN0V2FzVXBkYXRlZCwge2RvY3VtZW50
Tm9kZUlkOiBkb2N1bWVudE5vZGVJZCwgZmxvd3M6IGNvbnRlbnRGbG93c30pOworICAgICAgICB9
CisgICAgICAgIENTU0FnZW50LmdldE5hbWVkRmxvd0NvbGxlY3Rpb24oZG9jdW1lbnROb2RlSWQs
IG9uTmFtZWRGbG93Q29sbGVjdGlvbkF2YWlsYWJsZS5iaW5kKHRoaXMpKTsKKyAgICB9LAorCisg
ICAgbmFtZWRGbG93Q3JlYXRlZDogZnVuY3Rpb24oZmxvd1BheWxvYWQpCisgICAgeworICAgICAg
ICB2YXIgZmxvd0tleSA9IFdlYkluc3BlY3Rvci5ET01UcmVlTWFuYWdlci5fZmxvd1BheWxvYWRI
YXNoS2V5KGZsb3dQYXlsb2FkKTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoIXRoaXMuX2Zsb3dz
Lmhhc093blByb3BlcnR5KGZsb3dLZXkpKTsKKyAgICAgICAgdmFyIGNvbnRlbnRGbG93ID0gbmV3
IFdlYkluc3BlY3Rvci5Db250ZW50RmxvdyhmbG93UGF5bG9hZCk7CisgICAgICAgIHRoaXMuX2Zs
b3dzW2Zsb3dLZXldID0gY29udGVudEZsb3c7CisgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRv
TGlzdGVuZXJzKFdlYkluc3BlY3Rvci5ET01UcmVlTWFuYWdlci5FdmVudC5Db250ZW50Rmxvd1dh
c0FkZGVkLCB7ZmxvdzogY29udGVudEZsb3d9KTsKKyAgICB9LAorCisgICAgbmFtZWRGbG93UmVt
b3ZlZDogZnVuY3Rpb24oZG9jdW1lbnROb2RlSWQsIGZsb3dOYW1lKQorICAgIHsKKyAgICAgICAg
dmFyIGZsb3dLZXkgPSBXZWJJbnNwZWN0b3IuRE9NVHJlZU1hbmFnZXIuX2Zsb3dQYXlsb2FkSGFz
aEtleSh7ZG9jdW1lbnROb2RlSWQ6IGRvY3VtZW50Tm9kZUlkLCBuYW1lOiBmbG93TmFtZX0pOwor
ICAgICAgICB2YXIgY29udGVudEZsb3cgPSB0aGlzLl9mbG93c1tmbG93S2V5XTsKKyAgICAgICAg
Y29uc29sZS5hc3NlcnQoY29udGVudEZsb3cpOworICAgICAgICBkZWxldGUgdGhpcy5fZmxvd3Nb
Zmxvd0tleV07CisgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3Bl
Y3Rvci5ET01UcmVlTWFuYWdlci5FdmVudC5Db250ZW50Rmxvd1dhc1JlbW92ZWQsIHtmbG93OiBj
b250ZW50Rmxvd30pOworICAgIH0sCisKKyAgICBfc2VuZE5hbWVkRmxvd1VwZGF0ZUV2ZW50czog
ZnVuY3Rpb24oZmxvd1BheWxvYWQpCisgICAgeworICAgICAgICB2YXIgZmxvd0tleSA9IFdlYklu
c3BlY3Rvci5ET01UcmVlTWFuYWdlci5fZmxvd1BheWxvYWRIYXNoS2V5KGZsb3dQYXlsb2FkKTsK
KyAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5fZmxvd3MuaGFzT3duUHJvcGVydHkoZmxvd0tl
eSkpOworICAgICAgICB0aGlzLl9mbG93c1tmbG93S2V5XS51cGRhdGUoZmxvd1BheWxvYWQpOwor
ICAgIH0sCisKKyAgICByZWdpb25MYXlvdXRVcGRhdGVkOiBmdW5jdGlvbihmbG93UGF5bG9hZCkK
KyAgICB7CisgICAgICAgIHRoaXMuX3NlbmROYW1lZEZsb3dVcGRhdGVFdmVudHMoZmxvd1BheWxv
YWQpOworICAgIH0sCisKKyAgICByZWdpb25PdmVyc2V0Q2hhbmdlZDogZnVuY3Rpb24oZmxvd1Bh
eWxvYWQpCisgICAgeworICAgICAgICB0aGlzLl9zZW5kTmFtZWRGbG93VXBkYXRlRXZlbnRzKGZs
b3dQYXlsb2FkKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL0ZyYW1lVHJlZUVsZW1lbnQuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9GcmFtZVRyZWVFbGVtZW50LmpzCmluZGV4IDQwMjU1YTguLmQyNjA4
YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0ZyYW1l
VHJlZUVsZW1lbnQuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
RnJhbWVUcmVlRWxlbWVudC5qcwpAQCAtNDAsNiArNDAsMTAgQEAgV2ViSW5zcGVjdG9yLkZyYW1l
VHJlZUVsZW1lbnQgPSBmdW5jdGlvbihmcmFtZSwgcmVwcmVzZW50ZWRPYmplY3QpCiAgICAgZnJh
bWUuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRnJhbWUuRXZlbnQuQ2hpbGRGcmFtZVdh
c0FkZGVkLCB0aGlzLl9jaGlsZEZyYW1lV2FzQWRkZWQsIHRoaXMpOwogICAgIGZyYW1lLmFkZEV2
ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkZyYW1lLkV2ZW50LkNoaWxkRnJhbWVXYXNSZW1vdmVk
LCB0aGlzLl9jaGlsZEZyYW1lV2FzUmVtb3ZlZCwgdGhpcyk7CiAKKyAgICBmcmFtZS5kb21UcmVl
LmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRPTVRyZWUuRXZlbnQuQ29udGVudEZsb3dX
YXNBZGRlZCwgdGhpcy5fY2hpbGRDb250ZW50Rmxvd1dhc0FkZGVkLCB0aGlzKTsKKyAgICBmcmFt
ZS5kb21UcmVlLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRPTVRyZWUuRXZlbnQuQ29u
dGVudEZsb3dXYXNSZW1vdmVkLCB0aGlzLl9jaGlsZENvbnRlbnRGbG93V2FzUmVtb3ZlZCwgdGhp
cyk7CisgICAgZnJhbWUuZG9tVHJlZS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5ET01U
cmVlLkV2ZW50LlJvb3RET01Ob2RlSW52YWxpZGF0ZWQsIHRoaXMuX3Jvb3RET01Ob2RlSW52YWxp
ZGF0ZWQsIHRoaXMpOworCiAgICAgaWYgKHRoaXMuX2ZyYW1lLmlzTWFpbkZyYW1lKCkpIHsKICAg
ICAgICAgdGhpcy5fZG93bmxvYWRpbmdQYWdlID0gZmFsc2U7CiAgICAgICAgIFdlYkluc3BlY3Rv
ci5ub3RpZmljYXRpb25zLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLk5vdGlmaWNhdGlv
bi5QYWdlQXJjaGl2ZVN0YXJ0ZWQsIHRoaXMuX3BhZ2VBcmNoaXZlU3RhcnRlZCwgdGhpcyk7CkBA
IC0xNzYsMTEgKzE4MCwxNiBAQCBXZWJJbnNwZWN0b3IuRnJhbWVUcmVlRWxlbWVudC5wcm90b3R5
cGUgPSB7CiAgICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IHNvdXJjZU1hcC5yZXNvdXJj
ZXMubGVuZ3RoOyArK2opCiAgICAgICAgICAgICB0aGlzLl9hZGRUcmVlRWxlbWVudEZvclJlcHJl
c2VudGVkT2JqZWN0KHNvdXJjZU1hcC5yZXNvdXJjZXNbal0pOwogICAgICAgICB9CisKKyAgICAg
ICAgdmFyIGZsb3dzID0gdGhpcy5fZnJhbWUuZG9tVHJlZS5mbG93czsKKyAgICAgICAgZm9yICh2
YXIgZmxvd0tleSBpbiBmbG93cykKKyAgICAgICAgICAgIHRoaXMuX2FkZFRyZWVFbGVtZW50Rm9y
UmVwcmVzZW50ZWRPYmplY3QoZmxvd3NbZmxvd0tleV0pOwogICAgIH0sCiAKICAgICBvbmV4cGFu
ZDogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgdGhpcy5fZXhwYW5kZWRTZXR0aW5nLnZhbHVl
ID0gdHJ1ZTsKKyAgICAgICAgdGhpcy5fZnJhbWUuZG9tVHJlZS5yZXF1ZXN0Q29udGVudEZsb3dM
aXN0KCk7CiAgICAgfSwKIAogICAgIG9uY29sbGFwc2U6IGZ1bmN0aW9uKCkKQEAgLTI2NCw2ICsy
NzMsMjEgQEAgV2ViSW5zcGVjdG9yLkZyYW1lVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAg
ICAgICB0aGlzLl9yZW1vdmVDaGlsZEZvclJlcHJlc2VudGVkT2JqZWN0KGV2ZW50LmRhdGEuY2hp
bGRGcmFtZSk7CiAgICAgfSwKIAorICAgIF9jaGlsZENvbnRlbnRGbG93V2FzQWRkZWQ6IGZ1bmN0
aW9uKGV2ZW50KQorICAgIHsKKyAgICAgICAgdGhpcy5fYWRkUmVwcmVzZW50ZWRPYmplY3RUb05l
d0NoaWxkUXVldWUoZXZlbnQuZGF0YS5mbG93KTsKKyAgICB9LAorCisgICAgX2NoaWxkQ29udGVu
dEZsb3dXYXNSZW1vdmVkOiBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAgICAgIHRoaXMuX3Jl
bW92ZUNoaWxkRm9yUmVwcmVzZW50ZWRPYmplY3QoZXZlbnQuZGF0YS5mbG93KTsKKyAgICB9LAor
CisgICAgX3Jvb3RET01Ob2RlSW52YWxpZGF0ZWQ6IGZ1bmN0aW9uKCkgeworICAgICAgICBpZiAo
dGhpcy5leHBhbmRlZCkKKyAgICAgICAgICAgIHRoaXMuX2ZyYW1lLmRvbVRyZWUucmVxdWVzdENv
bnRlbnRGbG93TGlzdCgpOworICAgIH0sCisKICAgICBfYWRkUmVwcmVzZW50ZWRPYmplY3RUb05l
d0NoaWxkUXVldWU6IGZ1bmN0aW9uKHJlcHJlc2VudGVkT2JqZWN0KQogICAgIHsKICAgICAgICAg
Ly8gVGhpcyBxdWV1ZSByZWR1Y2VzIGZsYXNoaW5nIGFzIHJlc291cmNlcyBsb2FkIGFuZCBjaGFu
Z2UgZm9sZGVycyB3aGVuIHRoZWlyIHR5cGUgYmVjb21lcyBrbm93bi4KQEAgLTI5OCw4ICszMjIs
OCBAQCBXZWJJbnNwZWN0b3IuRnJhbWVUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAKICAgICBf
YWRkQ2hpbGRGb3JSZXByZXNlbnRlZE9iamVjdDogZnVuY3Rpb24ocmVwcmVzZW50ZWRPYmplY3Qp
CiAgICAgewotICAgICAgICBjb25zb2xlLmFzc2VydChyZXByZXNlbnRlZE9iamVjdCBpbnN0YW5j
ZW9mIFdlYkluc3BlY3Rvci5SZXNvdXJjZSB8fCByZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9m
IFdlYkluc3BlY3Rvci5GcmFtZSk7Ci0gICAgICAgIGlmICghKHJlcHJlc2VudGVkT2JqZWN0IGlu
c3RhbmNlb2YgV2ViSW5zcGVjdG9yLlJlc291cmNlIHx8IHJlcHJlc2VudGVkT2JqZWN0IGluc3Rh
bmNlb2YgV2ViSW5zcGVjdG9yLkZyYW1lKSkKKyAgICAgICAgY29uc29sZS5hc3NlcnQocmVwcmVz
ZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuUmVzb3VyY2UgfHwgcmVwcmVzZW50
ZWRPYmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuRnJhbWUgfHwgcmVwcmVzZW50ZWRPYmpl
Y3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuQ29udGVudEZsb3cpOworICAgICAgICBpZiAoIShy
ZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5SZXNvdXJjZSB8fCByZXBy
ZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5GcmFtZSB8fCByZXByZXNlbnRl
ZE9iamVjdCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5Db250ZW50RmxvdykpCiAgICAgICAgICAg
ICByZXR1cm47CiAKICAgICAgICAgdGhpcy5fdXBkYXRlUGFyZW50U3RhdHVzKCk7CkBAIC0zMjIs
OCArMzQ2LDggQEAgV2ViSW5zcGVjdG9yLkZyYW1lVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewog
CiAgICAgX3JlbW92ZUNoaWxkRm9yUmVwcmVzZW50ZWRPYmplY3Q6IGZ1bmN0aW9uKHJlcHJlc2Vu
dGVkT2JqZWN0KQogICAgIHsKLSAgICAgICAgY29uc29sZS5hc3NlcnQocmVwcmVzZW50ZWRPYmpl
Y3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuUmVzb3VyY2UgfHwgcmVwcmVzZW50ZWRPYmplY3Qg
aW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuRnJhbWUpOwotICAgICAgICBpZiAoIShyZXByZXNlbnRl
ZE9iamVjdCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5SZXNvdXJjZSB8fCByZXByZXNlbnRlZE9i
amVjdCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5GcmFtZSkpCisgICAgICAgIGNvbnNvbGUuYXNz
ZXJ0KHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlJlc291cmNlIHx8
IHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkZyYW1lIHx8IHJlcHJl
c2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkNvbnRlbnRGbG93KTsKKyAgICAg
ICAgaWYgKCEocmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuUmVzb3Vy
Y2UgfHwgcmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuRnJhbWUgfHwg
cmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuQ29udGVudEZsb3cpKQog
ICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIHRoaXMuX3JlbW92ZVJlcHJlc2VudGVkT2Jq
ZWN0RnJvbU5ld0NoaWxkUXVldWUocmVwcmVzZW50ZWRPYmplY3QpOwpAQCAtMzU1LDYgKzM3OSw4
IEBAIFdlYkluc3BlY3Rvci5GcmFtZVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAg
ICAgICAgICBjaGlsZFRyZWVFbGVtZW50ID0gbmV3IFdlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVF
bGVtZW50KHJlcHJlc2VudGVkT2JqZWN0KTsKICAgICAgICAgICAgIGVsc2UgaWYgKHJlcHJlc2Vu
dGVkT2JqZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkZyYW1lKQogICAgICAgICAgICAgICAg
IGNoaWxkVHJlZUVsZW1lbnQgPSBuZXcgV2ViSW5zcGVjdG9yLkZyYW1lVHJlZUVsZW1lbnQocmVw
cmVzZW50ZWRPYmplY3QpOworICAgICAgICAgICAgZWxzZSBpZiAocmVwcmVzZW50ZWRPYmplY3Qg
aW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuQ29udGVudEZsb3cpCisgICAgICAgICAgICAgICAgY2hp
bGRUcmVlRWxlbWVudCA9IG5ldyBXZWJJbnNwZWN0b3IuQ29udGVudEZsb3dUcmVlRWxlbWVudChy
ZXByZXNlbnRlZE9iamVjdCk7CiAgICAgICAgIH0KIAogICAgICAgICB0aGlzLl9hZGRUcmVlRWxl
bWVudChjaGlsZFRyZWVFbGVtZW50KTsKQEAgLTM5MiwxMCArNDE4LDMxIEBAIFdlYkluc3BlY3Rv
ci5GcmFtZVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5pbnNlcnRDaGls
ZChmb2xkZXJUcmVlRWxlbWVudCwgaW5zZXJ0aW9uSW5kZXhGb3JPYmplY3RJbkxpc3RTb3J0ZWRC
eUZ1bmN0aW9uKGZvbGRlclRyZWVFbGVtZW50LCB0aGlzLmNoaWxkcmVuLCB0aGlzLl9jb21wYXJl
VHJlZUVsZW1lbnRzQnlNYWluVGl0bGUpKTsKICAgICB9LAogCisgICAgX2NvbXBhcmVSZXNvdXJj
ZVRyZWVFbGVtZW50czogZnVuY3Rpb24oYSwgYikKKyAgICB7CisgICAgICAgIGlmIChhID09PSBi
KQorICAgICAgICAgICAgcmV0dXJuIDA7CisKKyAgICAgICAgdmFyIGFJc1Jlc291cmNlID0gYSBp
bnN0YW5jZW9mIFdlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVFbGVtZW50OworICAgICAgICB2YXIg
YklzUmVzb3VyY2UgPSBiIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZUVsZW1l
bnQ7CisKKyAgICAgICAgaWYgKGFJc1Jlc291cmNlICYmIGJJc1Jlc291cmNlKQorICAgICAgICAg
ICAgcmV0dXJuIFdlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVFbGVtZW50LmNvbXBhcmVSZXNvdXJj
ZVRyZWVFbGVtZW50cyhhLCBiKTsKKworICAgICAgICBpZiAoIWFJc1Jlc291cmNlICYmICFiSXNS
ZXNvdXJjZSkgeworICAgICAgICAgICAgLy8gV2hlbiBib3RoIGNvbXBvbmVudHMgYXJlIG5vdCBy
ZXNvdXJjZXMgdGhlbiBqdXN0IGNvbXBhcmUgdGhlIHRpdGxlcy4KKyAgICAgICAgICAgIHJldHVy
biBhLm1haW5UaXRsZS5sb2NhbGVDb21wYXJlKGIubWFpblRpdGxlKTsKKyAgICAgICAgfQorICAg
ICAgICAKKyAgICAgICAgLy8gTm9uLXJlc291cmNlcyBzaG91bGQgYXBwZWFyIGJlZm9yZSB0aGUg
cmVzb3VyY2VzLgorICAgICAgICAvLyBGSVhNRTogVGhlcmUgc2hvdWxkIGJlIGEgYmV0dGVyIHdh
eSB0byBncm91cCB0aGUgZWxlbWVudHMgYnkgdGhlaXIgdHlwZS4KKyAgICAgICAgcmV0dXJuIGFJ
c1Jlc291cmNlID8gMSA6IC0xOworICAgIH0sCisKICAgICBfaW5zZXJ0UmVzb3VyY2VUcmVlRWxl
bWVudDogZnVuY3Rpb24ocGFyZW50VHJlZUVsZW1lbnQsIGNoaWxkVHJlZUVsZW1lbnQpCiAgICAg
ewogICAgICAgICBjb25zb2xlLmFzc2VydCghY2hpbGRUcmVlRWxlbWVudC5wYXJlbnQpOwotICAg
ICAgICBwYXJlbnRUcmVlRWxlbWVudC5pbnNlcnRDaGlsZChjaGlsZFRyZWVFbGVtZW50LCBpbnNl
cnRpb25JbmRleEZvck9iamVjdEluTGlzdFNvcnRlZEJ5RnVuY3Rpb24oY2hpbGRUcmVlRWxlbWVu
dCwgcGFyZW50VHJlZUVsZW1lbnQuY2hpbGRyZW4sIFdlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVF
bGVtZW50LmNvbXBhcmVSZXNvdXJjZVRyZWVFbGVtZW50cykpOworICAgICAgICBwYXJlbnRUcmVl
RWxlbWVudC5pbnNlcnRDaGlsZChjaGlsZFRyZWVFbGVtZW50LCBpbnNlcnRpb25JbmRleEZvck9i
amVjdEluTGlzdFNvcnRlZEJ5RnVuY3Rpb24oY2hpbGRUcmVlRWxlbWVudCwgcGFyZW50VHJlZUVs
ZW1lbnQuY2hpbGRyZW4sIHRoaXMuX2NvbXBhcmVSZXNvdXJjZVRyZWVFbGVtZW50cykpOwogICAg
IH0sCiAKICAgICBfcmVtb3ZlVHJlZUVsZW1lbnQ6IGZ1bmN0aW9uKGNoaWxkVHJlZUVsZW1lbnQs
IHN1cHByZXNzT25EZXNlbGVjdCwgc3VwcHJlc3NTZWxlY3RTaWJsaW5nKQpAQCAtNDQ1LDYgKzQ5
MiwxMiBAQCBXZWJJbnNwZWN0b3IuRnJhbWVUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAg
ICAgICAgICByZXR1cm4gdGhpcy5fZnJhbWVzRm9sZGVyVHJlZUVsZW1lbnQ7CiAgICAgICAgIH0K
IAorICAgICAgICBpZiAocmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3Iu
Q29udGVudEZsb3cpIHsKKyAgICAgICAgICAgIGlmICghdGhpcy5fZmxvd3NGb2xkZXJUcmVlRWxl
bWVudCkKKyAgICAgICAgICAgICAgICB0aGlzLl9mbG93c0ZvbGRlclRyZWVFbGVtZW50ID0gY3Jl
YXRlRm9sZGVyVHJlZUVsZW1lbnQuY2FsbCh0aGlzLCAiZmxvd3MiLCBXZWJJbnNwZWN0b3IuVUlT
dHJpbmcoIkZsb3dzIikpOworICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2Zsb3dzRm9sZGVyVHJl
ZUVsZW1lbnQ7CisgICAgICAgIH0KKwogICAgICAgICBpZiAocmVwcmVzZW50ZWRPYmplY3QgaW5z
dGFuY2VvZiBXZWJJbnNwZWN0b3IuUmVzb3VyY2UpIHsKICAgICAgICAgICAgIHZhciBmb2xkZXJO
YW1lID0gdGhpcy5fZm9sZGVyTmFtZUZvclJlc291cmNlVHlwZShyZXByZXNlbnRlZE9iamVjdC50
eXBlKTsKICAgICAgICAgICAgIGlmICghZm9sZGVyTmFtZSkKQEAgLTQ4NCw2ICs1MzcsOSBAQCBX
ZWJJbnNwZWN0b3IuRnJhbWVUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHZhciBu
dW1iZXJPZk1lZGl1bUNhdGVnb3JpZXMgPSAwOwogICAgICAgICB2YXIgZm91bmRMYXJnZUNhdGVn
b3J5ID0gZmFsc2U7CiAKKyAgICAgICAgLy8gRklYTUU6IFVzZSB0aGlzLl9mcmFtZS5kb21UcmVl
LmZsb3dzQ291bnQgdG8gY291bnQgdGhlIG51bWJlciBvZiBmbG93cyBpbiBhIGZyYW1lLgorICAg
ICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIyOTI2CisK
ICAgICAgICAgaWYgKHRoaXMuX2ZyYW1lLmNoaWxkRnJhbWVzLmxlbmd0aCA+PSBXZWJJbnNwZWN0
b3IuRnJhbWVUcmVlRWxlbWVudC5MYXJnZUNoaWxkQ291bnRUaHJlc2hvbGQpCiAgICAgICAgICAg
ICBmb3VuZExhcmdlQ2F0ZWdvcnkgPSB0cnVlOwogICAgICAgICBlbHNlIGlmICh0aGlzLl9mcmFt
ZS5jaGlsZEZyYW1lcy5sZW5ndGggPj0gV2ViSW5zcGVjdG9yLkZyYW1lVHJlZUVsZW1lbnQuTWVk
aXVtQ2hpbGRDb3VudFRocmVzaG9sZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL0ltYWdlcy9Db250ZW50Rmxvdy5zdmcgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9JbWFnZXMvQ29udGVudEZsb3cuc3ZnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRlMzc5ZDMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9JbWFnZXMvQ29udGVudEZsb3cuc3ZnCkBAIC0w
LDAgKzEsOCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCis8IS0t
IENvcHlyaWdodCDCqSAyMDEzIEFkb2JlIFN5c3RlbXMgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LiAtLT4NCis8c3ZnIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiB2aWV3Qm94PSIwIDAgMTYgMTYiPg0KKyAgICA8cGF0aCBmaWxsPSJyZ2IoMTEyLCAxMTIs
IDExMikiIGQ9Ik0gMTMuMTc5IDAuNzUgSCAyLjgyMSBjIC0xLjE0MSAwIC0yLjA3MSAwLjkzMSAt
Mi4wNzEgMi4wNzEgdiAxMC4zNTcgYyAwIDEuMTQxIDAuOTMxIDIuMDcxIDIuMDcxIDIuMDcxIGgg
MTAuMzU3IGMgMS4xNDEgMCAyLjA3MSAtMC45MzEgMi4wNzEgLTIuMDcxIFYgMi44MjEgQyAxNS4y
NSAxLjY4MSAxNC4zMTkgMC43NSAxMy4xNzkgMC43NSBNIDEzLjE3OSAxLjc4NSBjIDAuNTcgMCAx
LjAzNSAwLjQ2NiAxLjAzNSAxLjAzNiB2IDEwLjM1NyBjIDAgMC41NyAtMC40NjUgMS4wMzUgLTEu
MDM1IDEuMDM1IEggMi44MjEgYyAtMC41NyAwIC0xLjAzNiAtMC40NjUgLTEuMDM2IC0xLjAzNSBW
IDIuODIxIGMgMCAtMC41NyAwLjQ2NSAtMS4wMzYgMS4wMzYgLTEuMDM2IEggMTMuMTc5Ii8+DQor
ICAgIDxyZWN0IHg9IjIuNjc2IiB5PSIyLjk2NyIgZmlsbD0icmdiKDExMiwgMTEyLCAxMTIpIiB3
aWR0aD0iNC44NTQiIGhlaWdodD0iNC4wOTQiLz4NCisgICAgPHJlY3QgeD0iMi42NzYiIHk9Ijgu
NDk3IiBmaWxsPSJyZ2IoMTEyLCAxMTIsIDExMikiIHdpZHRoPSIyLjc1NSIgaGVpZ2h0PSI0LjM1
Ii8+DQorICAgIDxyZWN0IHg9IjguODkxIiB5PSIyLjk2NyIgZmlsbD0icmdiKDExMiwgMTEyLCAx
MTIpIiB3aWR0aD0iNC40MTIiIGhlaWdodD0iMTAuMTA4Ii8+DQorPC9zdmc+DQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTWFpbi5odG1sIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTWFpbi5odG1sCmluZGV4IDVmNTJjNDQuLjM4
ZGMwMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01h
aW4uaHRtbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9NYWluLmh0
bWwKQEAgLTQ0LDYgKzQ0LDcgQEAKICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IkNv
bnRlbnRCcm93c2VyLmNzcyI+CiAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJOYXZp
Z2F0aW9uU2lkZWJhclBhbmVsLmNzcyI+CiAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVm
PSJSZXNvdXJjZUljb25zLmNzcyI+CisgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJD
b250ZW50Rmxvd0ljb24uY3NzIj4KICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IkZv
bGRlckljb24uY3NzIj4KICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IkNvbnRlbnRW
aWV3Q29udGFpbmVyLmNzcyI+CiAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJDbHVz
dGVyQ29udGVudFZpZXcuY3NzIj4KQEAgLTIzMCw2ICsyMzEsNyBAQAogICAgIDxzY3JpcHQgc3Jj
PSJBcHBsaWNhdGlvbkNhY2hlTWFuaWZlc3RUcmVlRWxlbWVudC5qcyI+PC9zY3JpcHQ+CiAgICAg
PHNjcmlwdCBzcmM9IlRyZWVFbGVtZW50U3RhdHVzQnV0dG9uLmpzIj48L3NjcmlwdD4KICAgICA8
c2NyaXB0IHNyYz0iSXNzdWVNZXNzYWdlLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0i
Q29udGVudEZsb3dUcmVlRWxlbWVudC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IkZy
YW1lVHJlZUVsZW1lbnQuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJDU1NDb21wbGV0
aW9ucy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IkNTU0tleXdvcmRDb21wbGV0aW9u
cy5qcyI+PC9zY3JpcHQ+CkBAIC0yNjMsNiArMjY1LDcgQEAKICAgICA8c2NyaXB0IHNyYz0iRE9N
VHJlZU1hbmFnZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJET01Ob2RlLmpzIj48
L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iRE9NVXRpbGl0aWVzLmpzIj48L3NjcmlwdD4KKyAg
ICA8c2NyaXB0IHNyYz0iQ29udGVudEZsb3cuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3Jj
PSJET01UcmVlLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iRE9NVHJlZU91dGxpbmUu
anMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJET01UcmVlVXBkYXRlci5qcyI+PC9zY3Jp
cHQ+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9SZXNv
dXJjZVNpZGViYXJQYW5lbC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1Jlc291cmNlU2lkZWJhclBhbmVsLmpzCmluZGV4IDk3YmYzOWYuLmM0MmU3ZTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Jlc291cmNlU2lkZWJhclBh
bmVsLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Jlc291cmNl
U2lkZWJhclBhbmVsLmpzCkBAIC02MTAsNiArNjEwLDEzIEBAIFdlYkluc3BlY3Rvci5SZXNvdXJj
ZVNpZGViYXJQYW5lbC5wcm90b3R5cGUgPSB7CiAKICAgICBfdHJlZUVsZW1lbnRTZWxlY3RlZDog
ZnVuY3Rpb24odHJlZUVsZW1lbnQsIHNlbGVjdGVkQnlVc2VyKQogICAgIHsKKyAgICAgICAgaWYg
KHRyZWVFbGVtZW50IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkNvbnRlbnRGbG93VHJlZUVsZW1l
bnQpIHsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgRE9NIHRyZWUgaW5zcGVjdG9y
IGZvciBjb250ZW50IGZsb3cgdHJlZSBlbGVtZW50cy4KKyAgICAgICAgICAgIC8vIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjI5MjcKKyAgICAgICAgICAgIGNvbnNv
bGUubG9nKCJDb250ZW50IEZsb3cgdmlldyBub3QgaW1wbGVtZW50ZWQiKTsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorCiAgICAgICAgIGlmICh0cmVlRWxlbWVudCBpbnN0YW5jZW9m
IFdlYkluc3BlY3Rvci5Gb2xkZXJUcmVlRWxlbWVudCkKICAgICAgICAgICAgIHJldHVybjsKIAo=
</data>
<flag name="review"
          id="237043"
          type_id="1"
          status="+"
          setter="timothy"
    />
    <flag name="commit-queue"
          id="237044"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>214600</attachid>
            <date>2013-10-18 13:37:27 -0700</date>
            <delta_ts>2013-10-18 14:12:14 -0700</delta_ts>
            <desc>Patch V6</desc>
            <filename>bug122924_v6.patch</filename>
            <type>text/plain</type>
            <size>34482</size>
            <attacher name="Alexandru Chiculita">achicu</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IDg0N2RjOGIuLmUyZDZkMjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDczIEBACisyMDEzLTEwLTE3ICBBbGV4YW5kcnUgQ2hp
Y3VsaXRhICA8YWNoaWN1QGFkb2JlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBDU1Mg
UmVnaW9uczogQWRkIHRoZSBsaXN0IG9mIGZsb3dzIGluIHRoZSBGcmFtZVRyZWVFbGVtZW50Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjI5MjQKKwor
ICAgICAgICBSZXZpZXdlZCBieSBUaW1vdGh5IEhhdGNoZXIuCisKKyAgICAgICAgQWRkZWQgY29k
ZSB0byBjb2xsZWN0IHRoZSBmbG93cyBmcm9tIHRoZSBiYWNrZW5kIGludG8gdGhlIERPTVRyZWUg
b2JqZWN0CisgICAgICAgIG9uIHRoZSBmcm9udGVuZC4gQWRkZWQgQ29udGVudEZsb3cgdG8gcmVw
cmVzZW50IHRoZSBmbG93cyBvbiB0aGUgZnJvbnRlbmQKKyAgICAgICAgc2lkZSBhbmQgY3JlYXRl
ZCBDb250ZW50Rmxvd1RyZWVFbGVtZW50IHRvIGRpc3BsYXkgdGhlIGZsb3dzIGluIHRoZSBGcmFt
ZVRyZWVFbGVtZW50LgorCisgICAgICAgICogTG9jYWxpemF0aW9ucy9lbi5scHJvai9sb2NhbGl6
ZWRTdHJpbmdzLmpzOgorICAgICAgICAqIFNjcmlwdHMvY29weS11c2VyLWludGVyZmFjZS1yZXNv
dXJjZXMuc2g6CisgICAgICAgICogVXNlckludGVyZmFjZS9DU1NPYnNlcnZlci5qczoKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5DU1NPYnNlcnZlci5wcm90b3R5cGUubmFtZWRGbG93Q3JlYXRlZCk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTT2JzZXJ2ZXIucHJvdG90eXBlLm5hbWVkRmxvd1Jl
bW92ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU09ic2VydmVyLnByb3RvdHlwZS5yZWdp
b25MYXlvdXRVcGRhdGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NPYnNlcnZlci5wcm90
b3R5cGUucmVnaW9uT3ZlcnNldENoYW5nZWQpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvQ29u
dGVudEZsb3cuanM6IEFkZGVkLgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbnRlbnRGbG93KToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5Db250ZW50Rmxvdy5wcm90b3R5cGUuZ2V0IGlkKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5Db250ZW50Rmxvdy5wcm90b3R5cGUuZ2V0IGRvY3VtZW50Tm9k
ZUlkZW50aWZpZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbnRlbnRGbG93LnByb3RvdHlw
ZS5nZXQgbmFtZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29udGVudEZsb3cucHJvdG90eXBl
LmdldCBvdmVyc2V0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db250ZW50Rmxvdy5wcm90b3R5
cGUuc2V0IG92ZXJzZXQpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvQ29udGVudEZsb3dJY29u
LmNzczogQWRkZWQuCisgICAgICAgICguY29udGVudC1mbG93LWljb24gLmljb24pOgorICAgICAg
ICAqIFVzZXJJbnRlcmZhY2UvQ29udGVudEZsb3dUcmVlRWxlbWVudC5qczogQWRkZWQuCisgICAg
ICAgIChXZWJJbnNwZWN0b3IuQ29udGVudEZsb3dUcmVlRWxlbWVudCk6CisgICAgICAgICogVXNl
ckludGVyZmFjZS9ET01UcmVlLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTVRyZWUpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTVRyZWUucHJvdG90eXBlLmdldCBmbG93TWFwKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5ET01UcmVlLnByb3RvdHlwZS5nZXQgZmxvd3NDb3VudCk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuRE9NVHJlZS5wcm90b3R5cGUuX2ZyYW1lUGFnZUV4ZWN1dGlv
bkNvbnRleHRDaGFuZ2VkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5ET01UcmVlLnByb3RvdHlw
ZS5yZXF1ZXN0Q29udGVudEZsb3dMaXN0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5ET01UcmVl
LnByb3RvdHlwZS5faXNDb250ZW50Rmxvd0luQ3VycmVudERvY3VtZW50KToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5ET01UcmVlLnByb3RvdHlwZS5fY29udGVudEZsb3dMaXN0V2FzVXBkYXRlZCk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuRE9NVHJlZS5wcm90b3R5cGUuX2NvbnRlbnRGbG93V2Fz
QWRkZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTVRyZWUucHJvdG90eXBlLl9jb250ZW50
Rmxvd1dhc1JlbW92ZWQpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvRE9NVHJlZU1hbmFnZXIu
anM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRE9NVHJlZU1hbmFnZXIpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLkRPTVRyZWVNYW5hZ2VyLl9mbG93UGF5bG9hZEhhc2hLZXkpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLkRPTVRyZWVNYW5hZ2VyLnByb3RvdHlwZS5fYnVpbGRIaWdobGlnaHRDb25m
aWcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTVRyZWVNYW5hZ2VyLnByb3RvdHlwZS5fY3Jl
YXRlQ29udGVudEZsb3dGcm9tUGF5bG9hZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRE9NVHJl
ZU1hbmFnZXIucHJvdG90eXBlLl91cGRhdGVDb250ZW50Rmxvd0Zyb21QYXlsb2FkKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5ET01UcmVlTWFuYWdlci5wcm90b3R5cGUuZ2V0TmFtZWRGbG93Q29s
bGVjdGlvbik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRE9NVHJlZU1hbmFnZXIucHJvdG90eXBl
Lm5hbWVkRmxvd0NyZWF0ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTVRyZWVNYW5hZ2Vy
LnByb3RvdHlwZS5uYW1lZEZsb3dSZW1vdmVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5ET01U
cmVlTWFuYWdlci5wcm90b3R5cGUuX3NlbmROYW1lZEZsb3dVcGRhdGVFdmVudHMpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLkRPTVRyZWVNYW5hZ2VyLnByb3RvdHlwZS5yZWdpb25MYXlvdXRVcGRh
dGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5ET01UcmVlTWFuYWdlci5wcm90b3R5cGUucmVn
aW9uT3ZlcnNldENoYW5nZWQpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvRnJhbWVUcmVlRWxl
bWVudC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5GcmFtZVRyZWVFbGVtZW50KToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5GcmFtZVRyZWVFbGVtZW50LnByb3RvdHlwZS5vbnBvcHVsYXRlKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5GcmFtZVRyZWVFbGVtZW50LnByb3RvdHlwZS5vbmV4cGFu
ZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRnJhbWVUcmVlRWxlbWVudC5wcm90b3R5cGUuX2No
aWxkQ29udGVudEZsb3dXYXNBZGRlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRnJhbWVUcmVl
RWxlbWVudC5wcm90b3R5cGUuX2NoaWxkQ29udGVudEZsb3dXYXNSZW1vdmVkKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5GcmFtZVRyZWVFbGVtZW50LnByb3RvdHlwZS5fcm9vdERPTU5vZGVJbnZh
bGlkYXRlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRnJhbWVUcmVlRWxlbWVudC5wcm90b3R5
cGUuX2FkZENoaWxkRm9yUmVwcmVzZW50ZWRPYmplY3QpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkZyYW1lVHJlZUVsZW1lbnQucHJvdG90eXBlLl9yZW1vdmVDaGlsZEZvclJlcHJlc2VudGVkT2Jq
ZWN0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5GcmFtZVRyZWVFbGVtZW50LnByb3RvdHlwZS5f
YWRkVHJlZUVsZW1lbnRGb3JSZXByZXNlbnRlZE9iamVjdCk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuRnJhbWVUcmVlRWxlbWVudC5wcm90b3R5cGUuX2NvbXBhcmVSZXNvdXJjZVRyZWVFbGVtZW50
cyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRnJhbWVUcmVlRWxlbWVudC5wcm90b3R5cGUuX2lu
c2VydFJlc291cmNlVHJlZUVsZW1lbnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkZyYW1lVHJl
ZUVsZW1lbnQucHJvdG90eXBlLl9wYXJlbnRUcmVlRWxlbWVudEZvclJlcHJlc2VudGVkT2JqZWN0
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5GcmFtZVRyZWVFbGVtZW50LnByb3RvdHlwZS5fc2hv
dWxkR3JvdXBJbnRvRm9sZGVycyk6CisgICAgICAgICogVXNlckludGVyZmFjZS9JbWFnZXMvQ29u
dGVudEZsb3cuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL01haW4uaHRtbDoK
KyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1Jlc291cmNlU2lkZWJhclBhbmVsLmpzOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlJlc291cmNlU2lkZWJhclBhbmVsLnByb3RvdHlwZS5fdHJlZUVsZW1l
bnRTZWxlY3RlZCk6CisKIDIwMTMtMTAtMTUgIEFudG9pbmUgUXVpbnQgIDxncmFvdXRzQGFwcGxl
LmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBjYW4ndCBzZWxlY3QgdGV4dCBpbnNpZGUg
YSB0ZXh0IG5vZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Mb2NhbGl6YXRp
b25zL2VuLmxwcm9qL2xvY2FsaXplZFN0cmluZ3MuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
TG9jYWxpemF0aW9ucy9lbi5scHJvai9sb2NhbGl6ZWRTdHJpbmdzLmpzCmluZGV4IGJjYjg3Mzk0
MjNjMDRmNjI5NGJmODE4OGMzMGVlNTJlNDE1MjE5YWIuLjM5MDRlZGM5OWMxNjQyYjQzZDhlZWRi
NTNlYWJmNjg3N2VlNTk0ZjAgMTAwNjQ0CkdJVCBiaW5hcnkgcGF0Y2gKZGVsdGEgNDIKdGNtYlF6
JVkzaHdkQmdmeD1eVGM5aEh7MnQxfF4xQTFfY0lOQVhaezxWKnJiOFppcDRoMU9OcHYzaTFFfAoK
ZGVsdGEgMTgKYWNtY2NEJVJIcipkQmdoSCRAWHo8b0J6ayYmajB7WHlhP0w+CgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1NjcmlwdHMvY29weS11c2VyLWludGVyZmFjZS1yZXNv
dXJjZXMuc2ggYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvU2NyaXB0cy9jb3B5LXVzZXItaW50ZXJm
YWNlLXJlc291cmNlcy5zaAppbmRleCAwMjhjN2E1Li5hNmVlODllIDEwMDc1NQotLS0gYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvU2NyaXB0cy9jb3B5LXVzZXItaW50ZXJmYWNlLXJlc291cmNlcy5z
aAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvU2NyaXB0cy9jb3B5LXVzZXItaW50ZXJmYWNl
LXJlc291cmNlcy5zaApAQCAtMTMsNiArMTMsNyBAQCBMSUNFTlNFPSQoY2F0IDw8RU9GCiAgKiBD
b3B5cmlnaHQgKEMpIDIwMTMgTWF0dCBIb2xkZW4gPGpmdGhvbGRlbkB5YWhvby5jb20+CiAgKiBD
b3B5cmlnaHQgKEMpIDIwMTMgU2Ftc3VuZyBFbGVjdHJvbmljcy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqIENvcHlyaWdodCAoQykgMjAxMyBTZW9ranUgS3dvbiAoc2Vva2p1Lmt3b25AZ21haWwu
Y29tKQorICogQ29weXJpZ2h0IChDKSAyMDEzIEFkb2JlIFN5c3RlbXMgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9DU1NPYnNlcnZlci5qcyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NTU09ic2VydmVyLmpzCmluZGV4IGNkMDY2
ZDEuLjU1ZjM0NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL0NTU09ic2VydmVyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL0NTU09ic2VydmVyLmpzCkBAIC01NSwxNyArNTUsMjIgQEAgV2ViSW5zcGVjdG9yLkNTU09i
c2VydmVyLnByb3RvdHlwZSA9IHsKIAogICAgIG5hbWVkRmxvd0NyZWF0ZWQ6IGZ1bmN0aW9uKG5h
bWVkRmxvdykKICAgICB7Ci0gICAgICAgIC8vIEZJWE1FOiBOb3QgaW1wbGVtZW50ZWQuCisgICAg
ICAgIFdlYkluc3BlY3Rvci5kb21UcmVlTWFuYWdlci5uYW1lZEZsb3dDcmVhdGVkKG5hbWVkRmxv
dyk7CiAgICAgfSwKIAogICAgIG5hbWVkRmxvd1JlbW92ZWQ6IGZ1bmN0aW9uKGRvY3VtZW50Tm9k
ZUlkLCBmbG93TmFtZSkKICAgICB7Ci0gICAgICAgIC8vIEZJWE1FOiBOb3QgaW1wbGVtZW50ZWQu
CisgICAgICAgIFdlYkluc3BlY3Rvci5kb21UcmVlTWFuYWdlci5uYW1lZEZsb3dSZW1vdmVkKGRv
Y3VtZW50Tm9kZUlkLCBmbG93TmFtZSk7CiAgICAgfSwKIAogICAgIHJlZ2lvbkxheW91dFVwZGF0
ZWQ6IGZ1bmN0aW9uKG5hbWVkRmxvdykKICAgICB7Ci0gICAgICAgIC8vIEZJWE1FOiBOb3QgaW1w
bGVtZW50ZWQuCisgICAgICAgIFdlYkluc3BlY3Rvci5kb21UcmVlTWFuYWdlci5yZWdpb25MYXlv
dXRVcGRhdGVkKG5hbWVkRmxvdyk7CisgICAgfSwKKworICAgIHJlZ2lvbk92ZXJzZXRDaGFuZ2Vk
OiBmdW5jdGlvbihuYW1lZEZsb3cpCisgICAgeworICAgICAgICBXZWJJbnNwZWN0b3IuZG9tVHJl
ZU1hbmFnZXIucmVnaW9uT3ZlcnNldENoYW5nZWQobmFtZWRGbG93KTsKICAgICB9CiB9OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250ZW50Rmxv
dy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRlbnRGbG93Lmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIyYzhhMmMKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250ZW50Rmxvdy5q
cwpAQCAtMCwwICsxLDgzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFkb2JlIFN5c3Rl
bXMgSW5jb3Jwb3JhdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUKKyAqICAgIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisgKiAgICBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQorICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcKKyAqICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscworICogICAgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICogCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBI
T0xERVIgQkUKKyAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwKKyAqIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IK
KyAqIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRgorICogVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisgKiBTVUNIIERBTUFHRS4KKyAqLworCitXZWJJbnNw
ZWN0b3IuQ29udGVudEZsb3cgPSBmdW5jdGlvbihkb2N1bWVudE5vZGVJZGVudGlmaWVyLCBuYW1l
LCBvdmVyc2V0KQoreworICAgIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKKworICAg
IHRoaXMuX2RvY3VtZW50Tm9kZUlkZW50aWZpZXIgPSBkb2N1bWVudE5vZGVJZGVudGlmaWVyOwor
ICAgIHRoaXMuX25hbWUgPSBuYW1lOworICAgIHRoaXMuX292ZXJzZXQgPSBvdmVyc2V0OworfTsK
KworV2ViSW5zcGVjdG9yLkNvbnRlbnRGbG93LkV2ZW50ID0geworICAgIE92ZXJzZXRXYXNDaGFu
Z2VkOiAiY29udGVudC1mbG93LW92ZXJzZXQtd2FzLWNoYW5nZWQiCit9OworCitXZWJJbnNwZWN0
b3IuQ29udGVudEZsb3cucHJvdG90eXBlID0geworCisgICAgY29uc3RydWN0b3I6IFdlYkluc3Bl
Y3Rvci5Db250ZW50RmxvdywKKworICAgIC8vIFB1YmxpYworCisgICAgLyogZ2V0dGVycyBhbmQg
c2V0dGVycyAqLworCisgICAgZ2V0IGlkKCkKKyAgICB7CisgICAgICAgIC8vIFVzZSB0aGUgZmxv
dyBub2RlIGlkLCB0byBhdm9pZCBjb2xsaXNpb25zIHdoZW4gd2UgY2hhbmdlIG1haW4gZG9jdW1l
bnQgaWQuCisgICAgICAgIHJldHVybiB0aGlzLl9kb2N1bWVudE5vZGVJZGVudGlmaWVyICsgIjoi
ICsgdGhpcy5fbmFtZTsKKyAgICB9LAorCisgICAgZ2V0IGRvY3VtZW50Tm9kZUlkZW50aWZpZXIo
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2RvY3VtZW50Tm9kZUlkZW50aWZpZXI7Cisg
ICAgfSwKKworICAgIGdldCBuYW1lKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9uYW1l
OworICAgIH0sCisKKyAgICBnZXQgb3ZlcnNldCgpCisgICAgeworICAgICAgICByZXR1cm4gdGhp
cy5fb3ZlcnNldDsKKyAgICB9LAorCisgICAgc2V0IG92ZXJzZXQob3ZlcnNldCkKKyAgICB7Cisg
ICAgICAgIGlmICh0aGlzLl9vdmVyc2V0ID09PSBvdmVyc2V0KQorICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB0aGlzLl9vdmVyc2V0ID0gb3ZlcnNldDsKKyAgICAgICAgdGhpcy5kaXNwYXRj
aEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkNvbnRlbnRGbG93LkV2ZW50LkZsb3dPdmVy
c2V0V2FzQ2hhbmdlZCk7CisgICAgfQorCit9OworCisKK1dlYkluc3BlY3Rvci5Db250ZW50Rmxv
dy5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLk9iamVjdC5wcm90b3R5cGU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250ZW50Rmxv
d0ljb24uY3NzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udGVudEZs
b3dJY29uLmNzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMjZlNzY2Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29u
dGVudEZsb3dJY29uLmNzcwpAQCAtMCwwICsxLDMyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEzIEFkb2JlIFN5c3RlbXMgSW5jb3Jwb3JhdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUKKyAqICAgIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
CisgKiAgICBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyAqICAgIGRpc2NsYWltZXIgaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscworICogICAgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVCBIT0xERVIgQkUKKyAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwKKyAqIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IKKyAqIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRgorICogVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisgKiBTVUNIIERBTUFHRS4K
KyAqLworCisuY29udGVudC1mbG93LWljb24gLmljb24geworICAgIGNvbnRlbnQ6IHVybChJbWFn
ZXMvQ29udGVudEZsb3cuc3ZnKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL0NvbnRlbnRGbG93VHJlZUVsZW1lbnQuanMgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250ZW50Rmxvd1RyZWVFbGVtZW50LmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc2NmZmN2UKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250ZW50Rmxvd1RyZWVFbGVtZW50
LmpzCkBAIC0wLDAgKzEsNDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQWRvYmUgU3lz
dGVtcyBJbmNvcnBvcmF0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZQorICogICAgY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyAqICAgIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCisgKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZworICogICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzCisgKiAgICBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKiAKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVIgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
IEhPTERFUiBCRQorICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLAorICogT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UgorICogVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GCisgKiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKyAqIFNVQ0ggREFNQUdFLgorICovCisKK1dlYklu
c3BlY3Rvci5Db250ZW50Rmxvd1RyZWVFbGVtZW50ID0gZnVuY3Rpb24ocmVwcmVzZW50ZWRPYmpl
Y3QpCit7CisgICAgY29uc29sZS5hc3NlcnQocmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBX
ZWJJbnNwZWN0b3IuQ29udGVudEZsb3cpOworICAgIFdlYkluc3BlY3Rvci5HZW5lcmFsVHJlZUVs
ZW1lbnQuY2FsbCh0aGlzLCBbV2ViSW5zcGVjdG9yLkNvbnRlbnRGbG93VHJlZUVsZW1lbnQuU3R5
bGVDbGFzc05hbWUsIFdlYkluc3BlY3Rvci5Db250ZW50Rmxvd1RyZWVFbGVtZW50LkNvbnRlbnRG
bG93SWNvblN0eWxlQ2xhc3NOYW1lXSwgcmVwcmVzZW50ZWRPYmplY3QubmFtZSwgbnVsbCwgcmVw
cmVzZW50ZWRPYmplY3QsIGZhbHNlKTsKKworICAgIHRoaXMuc21hbGwgPSB0cnVlOworfTsKKwor
V2ViSW5zcGVjdG9yLkNvbnRlbnRGbG93VHJlZUVsZW1lbnQuQ29udGVudEZsb3dJY29uU3R5bGVD
bGFzc05hbWUgPSAiY29udGVudC1mbG93LWljb24iOworCitXZWJJbnNwZWN0b3IuQ29udGVudEZs
b3dUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CisgICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rv
ci5Db250ZW50Rmxvd1RyZWVFbGVtZW50Cit9OworCitXZWJJbnNwZWN0b3IuQ29udGVudEZsb3dU
cmVlRWxlbWVudC5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLkdlbmVyYWxUcmVl
RWxlbWVudC5wcm90b3R5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9ET01UcmVlLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvRE9NVHJlZS5qcwppbmRleCA3ODNlOTdkLi40YTZmZjJmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9ET01UcmVlLmpzCisrKyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0RPTVRyZWUuanMKQEAgLTMxLDYgKzMxLDcgQEAgV2Vi
SW5zcGVjdG9yLkRPTVRyZWUgPSBmdW5jdGlvbihmcmFtZSkKIAogICAgIHRoaXMuX3Jvb3RET01O
b2RlID0gbnVsbDsKICAgICB0aGlzLl9yZXF1ZXN0SWRlbnRpZmllciA9IDA7CisgICAgdGhpcy5f
Zmxvd01hcCA9IHt9OwogCiAgICAgdGhpcy5fZnJhbWUuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNw
ZWN0b3IuRnJhbWUuRXZlbnQuUGFnZUV4ZWN1dGlvbkNvbnRleHRDaGFuZ2VkLCB0aGlzLl9mcmFt
ZVBhZ2VFeGVjdXRpb25Db250ZXh0Q2hhbmdlZCwgdGhpcyk7CiAKQEAgLTQxLDEyICs0MiwxOCBA
QCBXZWJJbnNwZWN0b3IuRE9NVHJlZSA9IGZ1bmN0aW9uKGZyYW1lKQogICAgICAgICBXZWJJbnNw
ZWN0b3IuZG9tVHJlZU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRE9NVHJl
ZU1hbmFnZXIuRXZlbnQuTm9kZVJlbW92ZWQsIHRoaXMuX25vZGVSZW1vdmVkLCB0aGlzKTsKICAg
ICAgICAgdGhpcy5fZnJhbWUuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRnJhbWUuRXZl
bnQuTWFpblJlc291cmNlRGlkQ2hhbmdlLCB0aGlzLl9mcmFtZU1haW5SZXNvdXJjZURpZENoYW5n
ZSwgdGhpcyk7CiAgICAgfQorCisgICAgV2ViSW5zcGVjdG9yLmRvbVRyZWVNYW5hZ2VyLmFkZEV2
ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRPTVRyZWVNYW5hZ2VyLkV2ZW50LkNvbnRlbnRGbG93
TGlzdFdhc1VwZGF0ZWQsIHRoaXMuX2NvbnRlbnRGbG93TGlzdFdhc1VwZGF0ZWQsIHRoaXMpOwor
ICAgIFdlYkluc3BlY3Rvci5kb21UcmVlTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3Bl
Y3Rvci5ET01UcmVlTWFuYWdlci5FdmVudC5Db250ZW50Rmxvd1dhc0FkZGVkLCB0aGlzLl9jb250
ZW50Rmxvd1dhc0FkZGVkLCB0aGlzKTsKKyAgICBXZWJJbnNwZWN0b3IuZG9tVHJlZU1hbmFnZXIu
YWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRE9NVHJlZU1hbmFnZXIuRXZlbnQuQ29udGVu
dEZsb3dXYXNSZW1vdmVkLCB0aGlzLl9jb250ZW50Rmxvd1dhc1JlbW92ZWQsIHRoaXMpOwogfTsK
IAogV2ViSW5zcGVjdG9yLk9iamVjdC5hZGRDb25zdHJ1Y3RvckZ1bmN0aW9ucyhXZWJJbnNwZWN0
b3IuRE9NVHJlZSk7CiAKIFdlYkluc3BlY3Rvci5ET01UcmVlLkV2ZW50ID0gewotICAgIFJvb3RE
T01Ob2RlSW52YWxpZGF0ZWQ6ICJkb20tdHJlZS1yb290LWRvbS1ub2RlLWludmFsaWRhdGVkIgor
ICAgIFJvb3RET01Ob2RlSW52YWxpZGF0ZWQ6ICJkb20tdHJlZS1yb290LWRvbS1ub2RlLWludmFs
aWRhdGVkIiwKKyAgICBDb250ZW50Rmxvd1dhc0FkZGVkOiAiZG9tLXRyZWUtY29udGVudC1mbG93
LXdhcy1hZGRlZCIsCisgICAgQ29udGVudEZsb3dXYXNSZW1vdmVkOiAiZG9tLXRyZWUtY29udGVu
dC1mbG93LXdhcy1yZW1vdmVkIgogfTsKIAogV2ViSW5zcGVjdG9yLkRPTVRyZWUucHJvdG90eXBl
ID0gewpAQCAtNTksNiArNjYsMTYgQEAgV2ViSW5zcGVjdG9yLkRPTVRyZWUucHJvdG90eXBlID0g
ewogICAgICAgICByZXR1cm4gdGhpcy5fZnJhbWU7CiAgICAgfSwKIAorICAgIGdldCBmbG93TWFw
KCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9mbG93TWFwOworICAgIH0sCisKKyAgICBn
ZXQgZmxvd3NDb3VudCgpCisgICAgeworICAgICAgICByZXR1cm4gT2JqZWN0LmtleXModGhpcy5f
Zmxvd01hcCkubGVuZ3RoOworICAgIH0sCisKICAgICBpbnZhbGlkYXRlOiBmdW5jdGlvbigpCiAg
ICAgewogICAgICAgICAvLyBTZXQgdG8gbnVsbCBzbyBpdCBpcyBmZXRjaGVkIGFnYWluIG5leHQg
dGltZSByZXF1ZXN0Um9vdERPTU5vZGUgaXMgY2FsbGVkLgpAQCAtMjMwLDYgKzI0Nyw4NyBAQCBX
ZWJJbnNwZWN0b3IuRE9NVHJlZS5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgICAgIHRoaXMuX3Jl
cXVlc3RSb290RE9NTm9kZSgpOwogICAgICAgICB9CisgICAgfSwKKworICAgIHJlcXVlc3RDb250
ZW50Rmxvd0xpc3Q6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHRoaXMucmVxdWVzdFJvb3RE
T01Ob2RlKGZ1bmN0aW9uKHJvb3ROb2RlKSB7CisgICAgICAgICAgICAvLyBMZXQgdGhlIGJhY2tl
bmQga25vdyB3ZSBhcmUgaW50ZXJlc3RlZCBhYm91dCB0aGUgbmFtZWQgZmxvdyBldmVudHMgZm9y
IHRoaXMgZG9jdW1lbnQuCisgICAgICAgICAgICBXZWJJbnNwZWN0b3IuZG9tVHJlZU1hbmFnZXIu
Z2V0TmFtZWRGbG93Q29sbGVjdGlvbihyb290Tm9kZS5pZCk7CisgICAgICAgIH0pOworICAgIH0s
CisKKyAgICBfaXNDb250ZW50Rmxvd0luQ3VycmVudERvY3VtZW50OiBmdW5jdGlvbihmbG93KQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3Jvb3RET01Ob2RlICYmIGZsb3cuZG9jdW1lbnRO
b2RlSWRlbnRpZmllciA9PT0gdGhpcy5fcm9vdERPTU5vZGUuaWQ7CisgICAgfSwKKworICAgIF9j
b250ZW50Rmxvd0xpc3RXYXNVcGRhdGVkOiBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAgICAg
IGlmICghdGhpcy5fcm9vdERPTU5vZGUgfHwgdGhpcy5fcm9vdERPTU5vZGUuaWQgIT09IGV2ZW50
LmRhdGEuZG9jdW1lbnROb2RlSWRlbnRpZmllcikKKyAgICAgICAgICAgIHJldHVybjsKKworICAg
ICAgICAvLyBBc3N1bWUgdGhhdCBhbGwgdGhlIGZsb3dzIGhhdmUgYmVlbiByZW1vdmVkLgorICAg
ICAgICB2YXIgZGVsZXRlZEZsb3dzID0ge307CisgICAgICAgIGZvciAodmFyIGZsb3dJZCBpbiB0
aGlzLl9mbG93TWFwKQorICAgICAgICAgICAgZGVsZXRlZEZsb3dzW2Zsb3dJZF0gPSB0aGlzLl9m
bG93TWFwW2Zsb3dJZF07CisKKyAgICAgICAgdmFyIG5ld0Zsb3dzID0gW107CisKKyAgICAgICAg
dmFyIGZsb3dzID0gZXZlbnQuZGF0YS5mbG93czsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkg
PCBmbG93cy5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgdmFyIGZsb3cgPSBmbG93c1tpXTsK
KyAgICAgICAgICAgIC8vIEFsbCB0aGUgZmxvd3MgcmVjZWl2ZWQgZnJvbSBXZWJLaXQgYXJlIHBh
cnQgb2YgdGhlIHNhbWUgZG9jdW1lbnQuCisgICAgICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlz
Ll9pc0NvbnRlbnRGbG93SW5DdXJyZW50RG9jdW1lbnQoZmxvdykpOworCisgICAgICAgICAgICB2
YXIgZmxvd0lkID0gZmxvdy5pZDsKKyAgICAgICAgICAgIGlmICh0aGlzLl9mbG93TWFwLmhhc093
blByb3BlcnR5KGZsb3dJZCkpIHsKKyAgICAgICAgICAgICAgICAvLyBSZW1vdmUgdGhlIGZsb3cg
bmFtZSBmcm9tIHRoZSBkZWxldGVkIGxpc3QuCisgICAgICAgICAgICAgICAgY29uc29sZS5hc3Nl
cnQoZGVsZXRlZEZsb3dzLmhhc093blByb3BlcnR5KGZsb3dLZXkpKTsKKyAgICAgICAgICAgICAg
ICBkZWxldGUgZGVsZXRlZEZsb3dzW2Zsb3dJZF07CisgICAgICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgICAgIHRoaXMuX2Zsb3dNYXBbZmxvd0lkXSA9IGZsb3c7CisgICAgICAgICAgICAg
ICAgbmV3Rmxvd3MucHVzaChmbG93KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAg
ICAgIGZvciAodmFyIGZsb3dJZCBpbiBkZWxldGVkRmxvd3MpIHsKKyAgICAgICAgICAgIGRlbGV0
ZSB0aGlzLl9mbG93TWFwW2Zsb3dJZF07CisgICAgICAgIH0KKworICAgICAgICAvLyBTZW5kIHVw
ZGF0ZSBldmVudHMgdG8gbGlzdGVuZXJzLgorCisgICAgICAgIGZvciAodmFyIGZsb3dJZCBpbiBk
ZWxldGVkRmxvd3MpCisgICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhX
ZWJJbnNwZWN0b3IuRE9NVHJlZS5FdmVudC5Db250ZW50Rmxvd1dhc1JlbW92ZWQsIHtmbG93OiBk
ZWxldGVkRmxvd3NbZmxvd0lkXX0pOworCisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbmV3
Rmxvd3MubGVuZ3RoOyArK2kpCisgICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3Rl
bmVycyhXZWJJbnNwZWN0b3IuRE9NVHJlZS5FdmVudC5Db250ZW50Rmxvd1dhc0FkZGVkLCB7Zmxv
dzogbmV3Rmxvd3NbaV19KTsKKyAgICB9LAorCisgICAgX2NvbnRlbnRGbG93V2FzQWRkZWQ6IGZ1
bmN0aW9uKGV2ZW50KQorICAgIHsKKyAgICAgICAgdmFyIGZsb3cgPSBldmVudC5kYXRhLmZsb3c7
CisgICAgICAgIGlmICghdGhpcy5faXNDb250ZW50Rmxvd0luQ3VycmVudERvY3VtZW50KGZsb3cp
KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHZhciBmbG93SWQgPSBmbG93LmlkOwor
ICAgICAgICBjb25zb2xlLmFzc2VydCghdGhpcy5fZmxvd01hcC5oYXNPd25Qcm9wZXJ0eShmbG93
SWQpKTsKKyAgICAgICAgdGhpcy5fZmxvd01hcFtmbG93SWRdID0gZmxvdzsKKworICAgICAgICB0
aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuRE9NVHJlZS5FdmVudC5D
b250ZW50Rmxvd1dhc0FkZGVkLCB7ZmxvdzogZmxvd30pOworICAgIH0sCisKKyAgICBfY29udGVu
dEZsb3dXYXNSZW1vdmVkOiBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAgICAgIHZhciBmbG93
ID0gZXZlbnQuZGF0YS5mbG93OworICAgICAgICBpZiAoIXRoaXMuX2lzQ29udGVudEZsb3dJbkN1
cnJlbnREb2N1bWVudChmbG93KSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB2YXIg
Zmxvd0lkID0gZmxvdy5pZDsKKyAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5fZmxvd01hcC5o
YXNPd25Qcm9wZXJ0eShmbG93SWQpKTsKKyAgICAgICAgZGVsZXRlIHRoaXMuX2Zsb3dNYXBbZmxv
d0lkXTsKKworICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0
b3IuRE9NVHJlZS5FdmVudC5Db250ZW50Rmxvd1dhc1JlbW92ZWQsIHtmbG93OiBmbG93fSk7CiAg
ICAgfQogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvRE9NVHJlZU1hbmFnZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9ET01UcmVlTWFuYWdlci5qcwppbmRleCA4MTgyNGRiLi5hZTdmYWM5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9ET01UcmVlTWFuYWdlci5qcworKysg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9ET01UcmVlTWFuYWdlci5qcwpA
QCAtMzksNiArMzksNyBAQCBXZWJJbnNwZWN0b3IuRE9NVHJlZU1hbmFnZXIgPSBmdW5jdGlvbigp
IHsKICAgICB0aGlzLl9pZFRvRE9NTm9kZSA9IHt9OwogICAgIHRoaXMuX2RvY3VtZW50ID0gbnVs
bDsKICAgICB0aGlzLl9hdHRyaWJ1dGVMb2FkTm9kZUlkcyA9IHt9OworICAgIHRoaXMuX2Zsb3dz
ID0ge307CiB9CiAKIFdlYkluc3BlY3Rvci5PYmplY3QuYWRkQ29uc3RydWN0b3JGdW5jdGlvbnMo
V2ViSW5zcGVjdG9yLkRPTVRyZWVNYW5hZ2VyKTsKQEAgLTUyLDcgKzUzLDE4IEBAIFdlYkluc3Bl
Y3Rvci5ET01UcmVlTWFuYWdlci5FdmVudCA9IHsKICAgICBEb2N1bWVudFVwZGF0ZWQ6ICJkb20t
dHJlZS1tYW5hZ2VyLWRvY3VtZW50LXVwZGF0ZWQiLAogICAgIENoaWxkTm9kZUNvdW50VXBkYXRl
ZDogImRvbS10cmVlLW1hbmFnZXItY2hpbGQtbm9kZS1jb3VudC11cGRhdGVkIiwKICAgICBET01O
b2RlV2FzSW5zcGVjdGVkOiAiZG9tLXRyZWUtbWFuYWdlci1kb20tbm9kZS13YXMtaW5zcGVjdGVk
IiwKLSAgICBJbnNwZWN0TW9kZVN0YXRlQ2hhbmdlZDogImRvbS10cmVlLW1hbmFnZXItaW5zcGVj
dC1tb2RlLXN0YXRlLWNoYW5nZWQiCisgICAgSW5zcGVjdE1vZGVTdGF0ZUNoYW5nZWQ6ICJkb20t
dHJlZS1tYW5hZ2VyLWluc3BlY3QtbW9kZS1zdGF0ZS1jaGFuZ2VkIiwKKyAgICBDb250ZW50Rmxv
d0xpc3RXYXNVcGRhdGVkOiAiZG9tLXRyZWUtbWFuYWdlci1jb250ZW50LWZsb3ctbGlzdC13YXMt
dXBkYXRlZCIsCisgICAgQ29udGVudEZsb3dXYXNBZGRlZDogImRvbS10cmVlLW1hbmFnZXItY29u
dGVudC1mbG93LXdhcy1hZGRlZCIsCisgICAgQ29udGVudEZsb3dXYXNSZW1vdmVkOiAiZG9tLXRy
ZWUtbWFuYWdlci1jb250ZW50LWZsb3ctd2FzLXJlbW92ZWQiLAorICAgIFJlZ2lvbkxheW91dFVw
ZGF0ZWQ6ICJkb20tdHJlZS1tYW5hZ2VyLXJlZ2lvbi1sYXlvdXQtdXBkYXRlZCIsCisgICAgUmVn
aW9uT3ZlcnNldENoYW5nZWQ6ICJkb20tdHJlZS1tYW5hZ2VyLXJlZ2lvbi1vdmVyc2V0LWNoYW5n
ZWQiCit9OworCitXZWJJbnNwZWN0b3IuRE9NVHJlZU1hbmFnZXIuX2Zsb3dQYXlsb2FkSGFzaEtl
eSA9IGZ1bmN0aW9uKGZsb3dQYXlsb2FkKQoreworICAgIC8vIFVzZSB0aGUgZmxvdyBub2RlIGlk
LCB0byBhdm9pZCBjb2xsaXNpb25zIHdoZW4gd2UgY2hhbmdlIG1haW4gZG9jdW1lbnQgaWQuCisg
ICAgcmV0dXJuIGZsb3dQYXlsb2FkLmRvY3VtZW50Tm9kZUlkICsgIjoiICsgZmxvd1BheWxvYWQu
bmFtZTsKIH07CiAKIFdlYkluc3BlY3Rvci5ET01UcmVlTWFuYWdlci5wcm90b3R5cGUgPSB7CkBA
IC01MTksNiArNTMxLDc5IEBAIFdlYkluc3BlY3Rvci5ET01UcmVlTWFuYWdlci5wcm90b3R5cGUg
PSB7CiAgICAgICAgICAgICBoaWdobGlnaHRDb25maWcubWFyZ2luQ29sb3IgPSB7cjogMjQ2LCBn
OiAxNzgsIGI6IDEwNywgYTogMC42Nn07CiAKICAgICAgICAgcmV0dXJuIGhpZ2hsaWdodENvbmZp
ZzsKKyAgICB9LAorCisgICAgX2NyZWF0ZUNvbnRlbnRGbG93RnJvbVBheWxvYWQ6IGZ1bmN0aW9u
KGZsb3dQYXlsb2FkKQorICAgIHsKKyAgICAgICAgLy8gRklYTUU6IENvbGxlY3QgdGhlIGNvbnRl
bnQgYW5kIHJlZ2lvbnMgZnJvbSB0aGUgcGF5bG9hZC4KKyAgICAgICAgcmV0dXJuIG5ldyBXZWJJ
bnNwZWN0b3IuQ29udGVudEZsb3coZmxvd1BheWxvYWQuZG9jdW1lbnROb2RlSWQsIGZsb3dQYXls
b2FkLm5hbWUsIGZsb3dQYXlsb2FkLm92ZXJzZXQpOworICAgIH0sCisKKyAgICBfdXBkYXRlQ29u
dGVudEZsb3dGcm9tUGF5bG9hZDogZnVuY3Rpb24oY29udGVudEZsb3csIGZsb3dQYXlsb2FkKQor
ICAgIHsKKyAgICAgICAgLy8gRklYTUU6IENvbGxlY3QgdGhlIGNvbnRlbnQgYW5kIHJlZ2lvbnMg
ZnJvbSB0aGUgcGF5bG9hZC4KKyAgICAgICAgY29udGVudEZsb3cub3ZlcnNldCA9IGZsb3dQYXls
b2FkLm92ZXJzZXQ7CisgICAgfSwKKworICAgIGdldE5hbWVkRmxvd0NvbGxlY3Rpb246IGZ1bmN0
aW9uKGRvY3VtZW50Tm9kZUlkZW50aWZpZXIpCisgICAgeworICAgICAgICBmdW5jdGlvbiBvbk5h
bWVkRmxvd0NvbGxlY3Rpb25BdmFpbGFibGUoZXJyb3IsIGZsb3dzKQorICAgICAgICB7CisgICAg
ICAgICAgICBpZiAoZXJyb3IpIHsKKyAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCJFcnJv
ciB3aGlsZSBnZXR0aW5nIHRoZSBuYW1lZCBmbG93cyBmb3IgZG9jdW1lbnQgIiArIGRvY3VtZW50
Tm9kZUlkZW50aWZpZXIgKyAiOiAiICsgZXJyb3IpOworICAgICAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHZhciBjb250ZW50Rmxvd3MgPSBbXTsKKyAgICAg
ICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZmxvd3MubGVuZ3RoOyArK2kpIHsKKyAgICAgICAg
ICAgICAgICB2YXIgZmxvd1BheWxvYWQgPSBmbG93c1tpXTsKKyAgICAgICAgICAgICAgICB2YXIg
Zmxvd0tleSA9IFdlYkluc3BlY3Rvci5ET01UcmVlTWFuYWdlci5fZmxvd1BheWxvYWRIYXNoS2V5
KGZsb3dQYXlsb2FkKTsKKyAgICAgICAgICAgICAgICB2YXIgY29udGVudEZsb3cgPSB0aGlzLl9m
bG93c1tmbG93S2V5XTsKKyAgICAgICAgICAgICAgICBpZiAoY29udGVudEZsb3cpCisgICAgICAg
ICAgICAgICAgICAgIHRoaXMuX3VwZGF0ZUNvbnRlbnRGbG93RnJvbVBheWxvYWQoY29udGVudEZs
b3csIGZsb3dQYXlsb2FkKTsKKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAg
ICAgICAgY29udGVudEZsb3cgPSB0aGlzLl9jcmVhdGVDb250ZW50Rmxvd0Zyb21QYXlsb2FkKGZs
b3dQYXlsb2FkKTsKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5fZmxvd3NbZmxvd0tleV0gPSBj
b250ZW50RmxvdzsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgY29udGVudEZs
b3dzLnB1c2goY29udGVudEZsb3cpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgdGhpcy5k
aXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkRPTVRyZWVNYW5hZ2VyLkV2ZW50
LkNvbnRlbnRGbG93TGlzdFdhc1VwZGF0ZWQsIHtkb2N1bWVudE5vZGVJZGVudGlmaWVyOiBkb2N1
bWVudE5vZGVJZGVudGlmaWVyLCBmbG93czogY29udGVudEZsb3dzfSk7CisgICAgICAgIH0KKyAg
ICAgICAgQ1NTQWdlbnQuZ2V0TmFtZWRGbG93Q29sbGVjdGlvbihkb2N1bWVudE5vZGVJZGVudGlm
aWVyLCBvbk5hbWVkRmxvd0NvbGxlY3Rpb25BdmFpbGFibGUuYmluZCh0aGlzKSk7CisgICAgfSwK
KworICAgIG5hbWVkRmxvd0NyZWF0ZWQ6IGZ1bmN0aW9uKGZsb3dQYXlsb2FkKQorICAgIHsKKyAg
ICAgICAgdmFyIGZsb3dLZXkgPSBXZWJJbnNwZWN0b3IuRE9NVHJlZU1hbmFnZXIuX2Zsb3dQYXls
b2FkSGFzaEtleShmbG93UGF5bG9hZCk7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCF0aGlzLl9m
bG93cy5oYXNPd25Qcm9wZXJ0eShmbG93S2V5KSk7CisgICAgICAgIHZhciBjb250ZW50RmxvdyA9
IHRoaXMuX2NyZWF0ZUNvbnRlbnRGbG93RnJvbVBheWxvYWQoZmxvd1BheWxvYWQpOworICAgICAg
ICB0aGlzLl9mbG93c1tmbG93S2V5XSA9IGNvbnRlbnRGbG93OworICAgICAgICB0aGlzLmRpc3Bh
dGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuRE9NVHJlZU1hbmFnZXIuRXZlbnQuQ29u
dGVudEZsb3dXYXNBZGRlZCwge2Zsb3c6IGNvbnRlbnRGbG93fSk7CisgICAgfSwKKworICAgIG5h
bWVkRmxvd1JlbW92ZWQ6IGZ1bmN0aW9uKGRvY3VtZW50Tm9kZUlkZW50aWZpZXIsIGZsb3dOYW1l
KQorICAgIHsKKyAgICAgICAgdmFyIGZsb3dLZXkgPSBXZWJJbnNwZWN0b3IuRE9NVHJlZU1hbmFn
ZXIuX2Zsb3dQYXlsb2FkSGFzaEtleSh7ZG9jdW1lbnROb2RlSWQ6IGRvY3VtZW50Tm9kZUlkZW50
aWZpZXIsIG5hbWU6IGZsb3dOYW1lfSk7CisgICAgICAgIHZhciBjb250ZW50RmxvdyA9IHRoaXMu
X2Zsb3dzW2Zsb3dLZXldOworICAgICAgICBjb25zb2xlLmFzc2VydChjb250ZW50Rmxvdyk7Cisg
ICAgICAgIGRlbGV0ZSB0aGlzLl9mbG93c1tmbG93S2V5XTsKKyAgICAgICAgdGhpcy5kaXNwYXRj
aEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkRPTVRyZWVNYW5hZ2VyLkV2ZW50LkNvbnRl
bnRGbG93V2FzUmVtb3ZlZCwge2Zsb3c6IGNvbnRlbnRGbG93fSk7CisgICAgfSwKKworICAgIF9z
ZW5kTmFtZWRGbG93VXBkYXRlRXZlbnRzOiBmdW5jdGlvbihmbG93UGF5bG9hZCkKKyAgICB7Cisg
ICAgICAgIHZhciBmbG93S2V5ID0gV2ViSW5zcGVjdG9yLkRPTVRyZWVNYW5hZ2VyLl9mbG93UGF5
bG9hZEhhc2hLZXkoZmxvd1BheWxvYWQpOworICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9m
bG93cy5oYXNPd25Qcm9wZXJ0eShmbG93S2V5KSk7CisgICAgICAgIHRoaXMuX3VwZGF0ZUNvbnRl
bnRGbG93RnJvbVBheWxvYWQodGhpcy5fZmxvd3NbZmxvd0tleV0sIGZsb3dQYXlsb2FkKTsKKyAg
ICB9LAorCisgICAgcmVnaW9uTGF5b3V0VXBkYXRlZDogZnVuY3Rpb24oZmxvd1BheWxvYWQpCisg
ICAgeworICAgICAgICB0aGlzLl9zZW5kTmFtZWRGbG93VXBkYXRlRXZlbnRzKGZsb3dQYXlsb2Fk
KTsKKyAgICB9LAorCisgICAgcmVnaW9uT3ZlcnNldENoYW5nZWQ6IGZ1bmN0aW9uKGZsb3dQYXls
b2FkKQorICAgIHsKKyAgICAgICAgdGhpcy5fc2VuZE5hbWVkRmxvd1VwZGF0ZUV2ZW50cyhmbG93
UGF5bG9hZCk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9GcmFtZVRyZWVFbGVtZW50LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvRnJhbWVUcmVlRWxlbWVudC5qcwppbmRleCA0MDI1NWE4Li45ZjQ3ZGE3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9GcmFtZVRy
ZWVFbGVtZW50LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Zy
YW1lVHJlZUVsZW1lbnQuanMKQEAgLTQwLDYgKzQwLDEwIEBAIFdlYkluc3BlY3Rvci5GcmFtZVRy
ZWVFbGVtZW50ID0gZnVuY3Rpb24oZnJhbWUsIHJlcHJlc2VudGVkT2JqZWN0KQogICAgIGZyYW1l
LmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkZyYW1lLkV2ZW50LkNoaWxkRnJhbWVXYXNB
ZGRlZCwgdGhpcy5fY2hpbGRGcmFtZVdhc0FkZGVkLCB0aGlzKTsKICAgICBmcmFtZS5hZGRFdmVu
dExpc3RlbmVyKFdlYkluc3BlY3Rvci5GcmFtZS5FdmVudC5DaGlsZEZyYW1lV2FzUmVtb3ZlZCwg
dGhpcy5fY2hpbGRGcmFtZVdhc1JlbW92ZWQsIHRoaXMpOwogCisgICAgZnJhbWUuZG9tVHJlZS5h
ZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5ET01UcmVlLkV2ZW50LkNvbnRlbnRGbG93V2Fz
QWRkZWQsIHRoaXMuX2NoaWxkQ29udGVudEZsb3dXYXNBZGRlZCwgdGhpcyk7CisgICAgZnJhbWUu
ZG9tVHJlZS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5ET01UcmVlLkV2ZW50LkNvbnRl
bnRGbG93V2FzUmVtb3ZlZCwgdGhpcy5fY2hpbGRDb250ZW50Rmxvd1dhc1JlbW92ZWQsIHRoaXMp
OworICAgIGZyYW1lLmRvbVRyZWUuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRE9NVHJl
ZS5FdmVudC5Sb290RE9NTm9kZUludmFsaWRhdGVkLCB0aGlzLl9yb290RE9NTm9kZUludmFsaWRh
dGVkLCB0aGlzKTsKKwogICAgIGlmICh0aGlzLl9mcmFtZS5pc01haW5GcmFtZSgpKSB7CiAgICAg
ICAgIHRoaXMuX2Rvd25sb2FkaW5nUGFnZSA9IGZhbHNlOwogICAgICAgICBXZWJJbnNwZWN0b3Iu
bm90aWZpY2F0aW9ucy5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5Ob3RpZmljYXRpb24u
UGFnZUFyY2hpdmVTdGFydGVkLCB0aGlzLl9wYWdlQXJjaGl2ZVN0YXJ0ZWQsIHRoaXMpOwpAQCAt
MTc2LDExICsxODAsMTYgQEAgV2ViSW5zcGVjdG9yLkZyYW1lVHJlZUVsZW1lbnQucHJvdG90eXBl
ID0gewogICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBzb3VyY2VNYXAucmVzb3VyY2Vz
Lmxlbmd0aDsgKytqKQogICAgICAgICAgICAgdGhpcy5fYWRkVHJlZUVsZW1lbnRGb3JSZXByZXNl
bnRlZE9iamVjdChzb3VyY2VNYXAucmVzb3VyY2VzW2pdKTsKICAgICAgICAgfQorCisgICAgICAg
IHZhciBmbG93TWFwID0gdGhpcy5fZnJhbWUuZG9tVHJlZS5mbG93TWFwOworICAgICAgICBmb3Ig
KHZhciBmbG93S2V5IGluIGZsb3dNYXApCisgICAgICAgICAgICB0aGlzLl9hZGRUcmVlRWxlbWVu
dEZvclJlcHJlc2VudGVkT2JqZWN0KGZsb3dNYXBbZmxvd0tleV0pOwogICAgIH0sCiAKICAgICBv
bmV4cGFuZDogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgdGhpcy5fZXhwYW5kZWRTZXR0aW5n
LnZhbHVlID0gdHJ1ZTsKKyAgICAgICAgdGhpcy5fZnJhbWUuZG9tVHJlZS5yZXF1ZXN0Q29udGVu
dEZsb3dMaXN0KCk7CiAgICAgfSwKIAogICAgIG9uY29sbGFwc2U6IGZ1bmN0aW9uKCkKQEAgLTI2
NCw2ICsyNzMsMjEgQEAgV2ViSW5zcGVjdG9yLkZyYW1lVHJlZUVsZW1lbnQucHJvdG90eXBlID0g
ewogICAgICAgICB0aGlzLl9yZW1vdmVDaGlsZEZvclJlcHJlc2VudGVkT2JqZWN0KGV2ZW50LmRh
dGEuY2hpbGRGcmFtZSk7CiAgICAgfSwKIAorICAgIF9jaGlsZENvbnRlbnRGbG93V2FzQWRkZWQ6
IGZ1bmN0aW9uKGV2ZW50KQorICAgIHsKKyAgICAgICAgdGhpcy5fYWRkUmVwcmVzZW50ZWRPYmpl
Y3RUb05ld0NoaWxkUXVldWUoZXZlbnQuZGF0YS5mbG93KTsKKyAgICB9LAorCisgICAgX2NoaWxk
Q29udGVudEZsb3dXYXNSZW1vdmVkOiBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAgICAgIHRo
aXMuX3JlbW92ZUNoaWxkRm9yUmVwcmVzZW50ZWRPYmplY3QoZXZlbnQuZGF0YS5mbG93KTsKKyAg
ICB9LAorCisgICAgX3Jvb3RET01Ob2RlSW52YWxpZGF0ZWQ6IGZ1bmN0aW9uKCkgeworICAgICAg
ICBpZiAodGhpcy5leHBhbmRlZCkKKyAgICAgICAgICAgIHRoaXMuX2ZyYW1lLmRvbVRyZWUucmVx
dWVzdENvbnRlbnRGbG93TGlzdCgpOworICAgIH0sCisKICAgICBfYWRkUmVwcmVzZW50ZWRPYmpl
Y3RUb05ld0NoaWxkUXVldWU6IGZ1bmN0aW9uKHJlcHJlc2VudGVkT2JqZWN0KQogICAgIHsKICAg
ICAgICAgLy8gVGhpcyBxdWV1ZSByZWR1Y2VzIGZsYXNoaW5nIGFzIHJlc291cmNlcyBsb2FkIGFu
ZCBjaGFuZ2UgZm9sZGVycyB3aGVuIHRoZWlyIHR5cGUgYmVjb21lcyBrbm93bi4KQEAgLTI5OCw4
ICszMjIsOCBAQCBXZWJJbnNwZWN0b3IuRnJhbWVUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAK
ICAgICBfYWRkQ2hpbGRGb3JSZXByZXNlbnRlZE9iamVjdDogZnVuY3Rpb24ocmVwcmVzZW50ZWRP
YmplY3QpCiAgICAgewotICAgICAgICBjb25zb2xlLmFzc2VydChyZXByZXNlbnRlZE9iamVjdCBp
bnN0YW5jZW9mIFdlYkluc3BlY3Rvci5SZXNvdXJjZSB8fCByZXByZXNlbnRlZE9iamVjdCBpbnN0
YW5jZW9mIFdlYkluc3BlY3Rvci5GcmFtZSk7Ci0gICAgICAgIGlmICghKHJlcHJlc2VudGVkT2Jq
ZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlJlc291cmNlIHx8IHJlcHJlc2VudGVkT2JqZWN0
IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkZyYW1lKSkKKyAgICAgICAgY29uc29sZS5hc3NlcnQo
cmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuUmVzb3VyY2UgfHwgcmVw
cmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuRnJhbWUgfHwgcmVwcmVzZW50
ZWRPYmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuQ29udGVudEZsb3cpOworICAgICAgICBp
ZiAoIShyZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5SZXNvdXJjZSB8
fCByZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5GcmFtZSB8fCByZXBy
ZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5Db250ZW50RmxvdykpCiAgICAg
ICAgICAgICByZXR1cm47CiAKICAgICAgICAgdGhpcy5fdXBkYXRlUGFyZW50U3RhdHVzKCk7CkBA
IC0zMjIsOCArMzQ2LDggQEAgV2ViSW5zcGVjdG9yLkZyYW1lVHJlZUVsZW1lbnQucHJvdG90eXBl
ID0gewogCiAgICAgX3JlbW92ZUNoaWxkRm9yUmVwcmVzZW50ZWRPYmplY3Q6IGZ1bmN0aW9uKHJl
cHJlc2VudGVkT2JqZWN0KQogICAgIHsKLSAgICAgICAgY29uc29sZS5hc3NlcnQocmVwcmVzZW50
ZWRPYmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuUmVzb3VyY2UgfHwgcmVwcmVzZW50ZWRP
YmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuRnJhbWUpOwotICAgICAgICBpZiAoIShyZXBy
ZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5SZXNvdXJjZSB8fCByZXByZXNl
bnRlZE9iamVjdCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5GcmFtZSkpCisgICAgICAgIGNvbnNv
bGUuYXNzZXJ0KHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlJlc291
cmNlIHx8IHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkZyYW1lIHx8
IHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkNvbnRlbnRGbG93KTsK
KyAgICAgICAgaWYgKCEocmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3Iu
UmVzb3VyY2UgfHwgcmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuRnJh
bWUgfHwgcmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuQ29udGVudEZs
b3cpKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIHRoaXMuX3JlbW92ZVJlcHJlc2Vu
dGVkT2JqZWN0RnJvbU5ld0NoaWxkUXVldWUocmVwcmVzZW50ZWRPYmplY3QpOwpAQCAtMzU1LDYg
KzM3OSw4IEBAIFdlYkluc3BlY3Rvci5GcmFtZVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAg
ICAgICAgICAgICAgICBjaGlsZFRyZWVFbGVtZW50ID0gbmV3IFdlYkluc3BlY3Rvci5SZXNvdXJj
ZVRyZWVFbGVtZW50KHJlcHJlc2VudGVkT2JqZWN0KTsKICAgICAgICAgICAgIGVsc2UgaWYgKHJl
cHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkZyYW1lKQogICAgICAgICAg
ICAgICAgIGNoaWxkVHJlZUVsZW1lbnQgPSBuZXcgV2ViSW5zcGVjdG9yLkZyYW1lVHJlZUVsZW1l
bnQocmVwcmVzZW50ZWRPYmplY3QpOworICAgICAgICAgICAgZWxzZSBpZiAocmVwcmVzZW50ZWRP
YmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuQ29udGVudEZsb3cpCisgICAgICAgICAgICAg
ICAgY2hpbGRUcmVlRWxlbWVudCA9IG5ldyBXZWJJbnNwZWN0b3IuQ29udGVudEZsb3dUcmVlRWxl
bWVudChyZXByZXNlbnRlZE9iamVjdCk7CiAgICAgICAgIH0KIAogICAgICAgICB0aGlzLl9hZGRU
cmVlRWxlbWVudChjaGlsZFRyZWVFbGVtZW50KTsKQEAgLTM5MiwxMCArNDE4LDMxIEBAIFdlYklu
c3BlY3Rvci5GcmFtZVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5pbnNl
cnRDaGlsZChmb2xkZXJUcmVlRWxlbWVudCwgaW5zZXJ0aW9uSW5kZXhGb3JPYmplY3RJbkxpc3RT
b3J0ZWRCeUZ1bmN0aW9uKGZvbGRlclRyZWVFbGVtZW50LCB0aGlzLmNoaWxkcmVuLCB0aGlzLl9j
b21wYXJlVHJlZUVsZW1lbnRzQnlNYWluVGl0bGUpKTsKICAgICB9LAogCisgICAgX2NvbXBhcmVS
ZXNvdXJjZVRyZWVFbGVtZW50czogZnVuY3Rpb24oYSwgYikKKyAgICB7CisgICAgICAgIGlmIChh
ID09PSBiKQorICAgICAgICAgICAgcmV0dXJuIDA7CisKKyAgICAgICAgdmFyIGFJc1Jlc291cmNl
ID0gYSBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVFbGVtZW50OworICAgICAg
ICB2YXIgYklzUmVzb3VyY2UgPSBiIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlJlc291cmNlVHJl
ZUVsZW1lbnQ7CisKKyAgICAgICAgaWYgKGFJc1Jlc291cmNlICYmIGJJc1Jlc291cmNlKQorICAg
ICAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVFbGVtZW50LmNvbXBhcmVS
ZXNvdXJjZVRyZWVFbGVtZW50cyhhLCBiKTsKKworICAgICAgICBpZiAoIWFJc1Jlc291cmNlICYm
ICFiSXNSZXNvdXJjZSkgeworICAgICAgICAgICAgLy8gV2hlbiBib3RoIGNvbXBvbmVudHMgYXJl
IG5vdCByZXNvdXJjZXMgdGhlbiBqdXN0IGNvbXBhcmUgdGhlIHRpdGxlcy4KKyAgICAgICAgICAg
IHJldHVybiBhLm1haW5UaXRsZS5sb2NhbGVDb21wYXJlKGIubWFpblRpdGxlKTsKKyAgICAgICAg
fQorICAgICAgICAKKyAgICAgICAgLy8gTm9uLXJlc291cmNlcyBzaG91bGQgYXBwZWFyIGJlZm9y
ZSB0aGUgcmVzb3VyY2VzLgorICAgICAgICAvLyBGSVhNRTogVGhlcmUgc2hvdWxkIGJlIGEgYmV0
dGVyIHdheSB0byBncm91cCB0aGUgZWxlbWVudHMgYnkgdGhlaXIgdHlwZS4KKyAgICAgICAgcmV0
dXJuIGFJc1Jlc291cmNlID8gMSA6IC0xOworICAgIH0sCisKICAgICBfaW5zZXJ0UmVzb3VyY2VU
cmVlRWxlbWVudDogZnVuY3Rpb24ocGFyZW50VHJlZUVsZW1lbnQsIGNoaWxkVHJlZUVsZW1lbnQp
CiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydCghY2hpbGRUcmVlRWxlbWVudC5wYXJlbnQp
OwotICAgICAgICBwYXJlbnRUcmVlRWxlbWVudC5pbnNlcnRDaGlsZChjaGlsZFRyZWVFbGVtZW50
LCBpbnNlcnRpb25JbmRleEZvck9iamVjdEluTGlzdFNvcnRlZEJ5RnVuY3Rpb24oY2hpbGRUcmVl
RWxlbWVudCwgcGFyZW50VHJlZUVsZW1lbnQuY2hpbGRyZW4sIFdlYkluc3BlY3Rvci5SZXNvdXJj
ZVRyZWVFbGVtZW50LmNvbXBhcmVSZXNvdXJjZVRyZWVFbGVtZW50cykpOworICAgICAgICBwYXJl
bnRUcmVlRWxlbWVudC5pbnNlcnRDaGlsZChjaGlsZFRyZWVFbGVtZW50LCBpbnNlcnRpb25JbmRl
eEZvck9iamVjdEluTGlzdFNvcnRlZEJ5RnVuY3Rpb24oY2hpbGRUcmVlRWxlbWVudCwgcGFyZW50
VHJlZUVsZW1lbnQuY2hpbGRyZW4sIHRoaXMuX2NvbXBhcmVSZXNvdXJjZVRyZWVFbGVtZW50cykp
OwogICAgIH0sCiAKICAgICBfcmVtb3ZlVHJlZUVsZW1lbnQ6IGZ1bmN0aW9uKGNoaWxkVHJlZUVs
ZW1lbnQsIHN1cHByZXNzT25EZXNlbGVjdCwgc3VwcHJlc3NTZWxlY3RTaWJsaW5nKQpAQCAtNDQ1
LDYgKzQ5MiwxMiBAQCBXZWJJbnNwZWN0b3IuRnJhbWVUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7
CiAgICAgICAgICAgICByZXR1cm4gdGhpcy5fZnJhbWVzRm9sZGVyVHJlZUVsZW1lbnQ7CiAgICAg
ICAgIH0KIAorICAgICAgICBpZiAocmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXZWJJbnNw
ZWN0b3IuQ29udGVudEZsb3cpIHsKKyAgICAgICAgICAgIGlmICghdGhpcy5fZmxvd3NGb2xkZXJU
cmVlRWxlbWVudCkKKyAgICAgICAgICAgICAgICB0aGlzLl9mbG93c0ZvbGRlclRyZWVFbGVtZW50
ID0gY3JlYXRlRm9sZGVyVHJlZUVsZW1lbnQuY2FsbCh0aGlzLCAiZmxvd3MiLCBXZWJJbnNwZWN0
b3IuVUlTdHJpbmcoIkZsb3dzIikpOworICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2Zsb3dzRm9s
ZGVyVHJlZUVsZW1lbnQ7CisgICAgICAgIH0KKwogICAgICAgICBpZiAocmVwcmVzZW50ZWRPYmpl
Y3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuUmVzb3VyY2UpIHsKICAgICAgICAgICAgIHZhciBm
b2xkZXJOYW1lID0gdGhpcy5fZm9sZGVyTmFtZUZvclJlc291cmNlVHlwZShyZXByZXNlbnRlZE9i
amVjdC50eXBlKTsKICAgICAgICAgICAgIGlmICghZm9sZGVyTmFtZSkKQEAgLTQ4NCw2ICs1Mzcs
OSBAQCBXZWJJbnNwZWN0b3IuRnJhbWVUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAg
IHZhciBudW1iZXJPZk1lZGl1bUNhdGVnb3JpZXMgPSAwOwogICAgICAgICB2YXIgZm91bmRMYXJn
ZUNhdGVnb3J5ID0gZmFsc2U7CiAKKyAgICAgICAgLy8gRklYTUU6IFVzZSB0aGlzLl9mcmFtZS5k
b21UcmVlLmZsb3dzQ291bnQgdG8gY291bnQgdGhlIG51bWJlciBvZiBmbG93cyBpbiBhIGZyYW1l
LgorICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIy
OTI2CisKICAgICAgICAgaWYgKHRoaXMuX2ZyYW1lLmNoaWxkRnJhbWVzLmxlbmd0aCA+PSBXZWJJ
bnNwZWN0b3IuRnJhbWVUcmVlRWxlbWVudC5MYXJnZUNoaWxkQ291bnRUaHJlc2hvbGQpCiAgICAg
ICAgICAgICBmb3VuZExhcmdlQ2F0ZWdvcnkgPSB0cnVlOwogICAgICAgICBlbHNlIGlmICh0aGlz
Ll9mcmFtZS5jaGlsZEZyYW1lcy5sZW5ndGggPj0gV2ViSW5zcGVjdG9yLkZyYW1lVHJlZUVsZW1l
bnQuTWVkaXVtQ2hpbGRDb3VudFRocmVzaG9sZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0ltYWdlcy9Db250ZW50Rmxvdy5zdmcgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9JbWFnZXMvQ29udGVudEZsb3cuc3ZnCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJmMWYzZGYKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9JbWFnZXMvQ29udGVudEZsb3cuc3Zn
CkBAIC0wLDAgKzEsOCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4K
KzwhLS0gQ29weXJpZ2h0IMKpIDIwMTMgQWRvYmUgU3lzdGVtcyBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuIC0tPgorPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgdmlld0JveD0iMCAwIDE2IDE2Ij4KKyAgICA8cGF0aCBmaWxsPSJyZ2IoMTEyLCAx
MTIsIDExMikiIGQ9Ik0gMTMuMTc5IDAuNzUgSCAyLjgyMSBjIC0xLjE0MSAwIC0yLjA3MSAwLjkz
MSAtMi4wNzEgMi4wNzEgdiAxMC4zNTcgYyAwIDEuMTQxIDAuOTMxIDIuMDcxIDIuMDcxIDIuMDcx
IGggMTAuMzU3IGMgMS4xNDEgMCAyLjA3MSAtMC45MzEgMi4wNzEgLTIuMDcxIFYgMi44MjEgQyAx
NS4yNSAxLjY4MSAxNC4zMTkgMC43NSAxMy4xNzkgMC43NSBNIDEzLjE3OSAxLjc4NSBjIDAuNTcg
MCAxLjAzNSAwLjQ2NiAxLjAzNSAxLjAzNiB2IDEwLjM1NyBjIDAgMC41NyAtMC40NjUgMS4wMzUg
LTEuMDM1IDEuMDM1IEggMi44MjEgYyAtMC41NyAwIC0xLjAzNiAtMC40NjUgLTEuMDM2IC0xLjAz
NSBWIDIuODIxIGMgMCAtMC41NyAwLjQ2NSAtMS4wMzYgMS4wMzYgLTEuMDM2IEggMTMuMTc5Ii8+
CisgICAgPHJlY3QgeD0iMi42NzYiIHk9IjIuOTY3IiBmaWxsPSJyZ2IoMTEyLCAxMTIsIDExMiki
IHdpZHRoPSI0Ljg1NCIgaGVpZ2h0PSI0LjA5NCIvPgorICAgIDxyZWN0IHg9IjIuNjc2IiB5PSI4
LjQ5NyIgZmlsbD0icmdiKDExMiwgMTEyLCAxMTIpIiB3aWR0aD0iMi43NTUiIGhlaWdodD0iNC4z
NSIvPgorICAgIDxyZWN0IHg9IjguODkxIiB5PSIyLjk2NyIgZmlsbD0icmdiKDExMiwgMTEyLCAx
MTIpIiB3aWR0aD0iNC40MTIiIGhlaWdodD0iMTAuMTA4Ii8+Cis8L3N2Zz4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01haW4uaHRtbCBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01haW4uaHRtbAppbmRleCA1ZjUyYzQ0Li4zOGRj
MDAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9NYWlu
Lmh0bWwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTWFpbi5odG1s
CkBAIC00NCw2ICs0NCw3IEBACiAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJDb250
ZW50QnJvd3Nlci5jc3MiPgogICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iTmF2aWdh
dGlvblNpZGViYXJQYW5lbC5jc3MiPgogICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0i
UmVzb3VyY2VJY29ucy5jc3MiPgorICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iQ29u
dGVudEZsb3dJY29uLmNzcyI+CiAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJGb2xk
ZXJJY29uLmNzcyI+CiAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJDb250ZW50Vmll
d0NvbnRhaW5lci5jc3MiPgogICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iQ2x1c3Rl
ckNvbnRlbnRWaWV3LmNzcyI+CkBAIC0yMzAsNiArMjMxLDcgQEAKICAgICA8c2NyaXB0IHNyYz0i
QXBwbGljYXRpb25DYWNoZU1hbmlmZXN0VHJlZUVsZW1lbnQuanMiPjwvc2NyaXB0PgogICAgIDxz
Y3JpcHQgc3JjPSJUcmVlRWxlbWVudFN0YXR1c0J1dHRvbi5qcyI+PC9zY3JpcHQ+CiAgICAgPHNj
cmlwdCBzcmM9Iklzc3VlTWVzc2FnZS5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9IkNv
bnRlbnRGbG93VHJlZUVsZW1lbnQuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJGcmFt
ZVRyZWVFbGVtZW50LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iQ1NTQ29tcGxldGlv
bnMuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJDU1NLZXl3b3JkQ29tcGxldGlvbnMu
anMiPjwvc2NyaXB0PgpAQCAtMjYzLDYgKzI2NSw3IEBACiAgICAgPHNjcmlwdCBzcmM9IkRPTVRy
ZWVNYW5hZ2VyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iRE9NTm9kZS5qcyI+PC9z
Y3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IkRPTVV0aWxpdGllcy5qcyI+PC9zY3JpcHQ+CisgICAg
PHNjcmlwdCBzcmM9IkNvbnRlbnRGbG93LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0i
RE9NVHJlZS5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IkRPTVRyZWVPdXRsaW5lLmpz
Ij48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iRE9NVHJlZVVwZGF0ZXIuanMiPjwvc2NyaXB0
PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUmVzb3Vy
Y2VTaWRlYmFyUGFuZWwuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9S
ZXNvdXJjZVNpZGViYXJQYW5lbC5qcwppbmRleCA5N2JmMzlmLi5jNDJlN2UxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9SZXNvdXJjZVNpZGViYXJQYW5l
bC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9SZXNvdXJjZVNp
ZGViYXJQYW5lbC5qcwpAQCAtNjEwLDYgKzYxMCwxMyBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VT
aWRlYmFyUGFuZWwucHJvdG90eXBlID0gewogCiAgICAgX3RyZWVFbGVtZW50U2VsZWN0ZWQ6IGZ1
bmN0aW9uKHRyZWVFbGVtZW50LCBzZWxlY3RlZEJ5VXNlcikKICAgICB7CisgICAgICAgIGlmICh0
cmVlRWxlbWVudCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5Db250ZW50Rmxvd1RyZWVFbGVtZW50
KSB7CisgICAgICAgICAgICAvLyBGSVhNRTogSW1wbGVtZW50IERPTSB0cmVlIGluc3BlY3RvciBm
b3IgY29udGVudCBmbG93IHRyZWUgZWxlbWVudHMuCisgICAgICAgICAgICAvLyBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIyOTI3CisgICAgICAgICAgICBjb25zb2xl
LmxvZygiQ29udGVudCBGbG93IHZpZXcgbm90IGltcGxlbWVudGVkIik7CisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIH0KKwogICAgICAgICBpZiAodHJlZUVsZW1lbnQgaW5zdGFuY2VvZiBX
ZWJJbnNwZWN0b3IuRm9sZGVyVHJlZUVsZW1lbnQpCiAgICAgICAgICAgICByZXR1cm47CiAK
</data>
<flag name="review"
          id="237165"
          type_id="1"
          status="+"
          setter="timothy"
    />
    <flag name="commit-queue"
          id="237166"
          type_id="3"
          status="-"
          setter="timothy"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>214601</attachid>
            <date>2013-10-18 14:12:14 -0700</date>
            <delta_ts>2013-10-18 14:40:12 -0700</delta_ts>
            <desc>Patch V7</desc>
            <filename>bug122924_v7.patch</filename>
            <type>text/plain</type>
            <size>34451</size>
            <attacher name="Alexandru Chiculita">achicu</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IDAyZTdkZTcuLjQ2ZGQ1Y2UgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDczIEBACisyMDEzLTEwLTE3ICBBbGV4YW5kcnUgQ2hp
Y3VsaXRhICA8YWNoaWN1QGFkb2JlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBDU1Mg
UmVnaW9uczogQWRkIHRoZSBsaXN0IG9mIGZsb3dzIGluIHRoZSBGcmFtZVRyZWVFbGVtZW50Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjI5MjQKKwor
ICAgICAgICBSZXZpZXdlZCBieSBUaW1vdGh5IEhhdGNoZXIuCisKKyAgICAgICAgQWRkZWQgY29k
ZSB0byBjb2xsZWN0IHRoZSBmbG93cyBmcm9tIHRoZSBiYWNrZW5kIGludG8gdGhlIERPTVRyZWUg
b2JqZWN0CisgICAgICAgIG9uIHRoZSBmcm9udGVuZC4gQWRkZWQgQ29udGVudEZsb3cgdG8gcmVw
cmVzZW50IHRoZSBmbG93cyBvbiB0aGUgZnJvbnRlbmQKKyAgICAgICAgc2lkZSBhbmQgY3JlYXRl
ZCBDb250ZW50Rmxvd1RyZWVFbGVtZW50IHRvIGRpc3BsYXkgdGhlIGZsb3dzIGluIHRoZSBGcmFt
ZVRyZWVFbGVtZW50LgorCisgICAgICAgICogTG9jYWxpemF0aW9ucy9lbi5scHJvai9sb2NhbGl6
ZWRTdHJpbmdzLmpzOgorICAgICAgICAqIFNjcmlwdHMvY29weS11c2VyLWludGVyZmFjZS1yZXNv
dXJjZXMuc2g6CisgICAgICAgICogVXNlckludGVyZmFjZS9DU1NPYnNlcnZlci5qczoKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5DU1NPYnNlcnZlci5wcm90b3R5cGUubmFtZWRGbG93Q3JlYXRlZCk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTT2JzZXJ2ZXIucHJvdG90eXBlLm5hbWVkRmxvd1Jl
bW92ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU09ic2VydmVyLnByb3RvdHlwZS5yZWdp
b25MYXlvdXRVcGRhdGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NPYnNlcnZlci5wcm90
b3R5cGUucmVnaW9uT3ZlcnNldENoYW5nZWQpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvQ29u
dGVudEZsb3cuanM6IEFkZGVkLgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbnRlbnRGbG93KToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5Db250ZW50Rmxvdy5wcm90b3R5cGUuZ2V0IGlkKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5Db250ZW50Rmxvdy5wcm90b3R5cGUuZ2V0IGRvY3VtZW50Tm9k
ZUlkZW50aWZpZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbnRlbnRGbG93LnByb3RvdHlw
ZS5nZXQgbmFtZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29udGVudEZsb3cucHJvdG90eXBl
LmdldCBvdmVyc2V0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db250ZW50Rmxvdy5wcm90b3R5
cGUuc2V0IG92ZXJzZXQpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvQ29udGVudEZsb3dJY29u
LmNzczogQWRkZWQuCisgICAgICAgICguY29udGVudC1mbG93LWljb24gLmljb24pOgorICAgICAg
ICAqIFVzZXJJbnRlcmZhY2UvQ29udGVudEZsb3dUcmVlRWxlbWVudC5qczogQWRkZWQuCisgICAg
ICAgIChXZWJJbnNwZWN0b3IuQ29udGVudEZsb3dUcmVlRWxlbWVudCk6CisgICAgICAgICogVXNl
ckludGVyZmFjZS9ET01UcmVlLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTVRyZWUpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTVRyZWUucHJvdG90eXBlLmdldCBmbG93TWFwKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5ET01UcmVlLnByb3RvdHlwZS5nZXQgZmxvd3NDb3VudCk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuRE9NVHJlZS5wcm90b3R5cGUuX2ZyYW1lUGFnZUV4ZWN1dGlv
bkNvbnRleHRDaGFuZ2VkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5ET01UcmVlLnByb3RvdHlw
ZS5yZXF1ZXN0Q29udGVudEZsb3dMaXN0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5ET01UcmVl
LnByb3RvdHlwZS5faXNDb250ZW50Rmxvd0luQ3VycmVudERvY3VtZW50KToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5ET01UcmVlLnByb3RvdHlwZS5fY29udGVudEZsb3dMaXN0V2FzVXBkYXRlZCk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuRE9NVHJlZS5wcm90b3R5cGUuX2NvbnRlbnRGbG93V2Fz
QWRkZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTVRyZWUucHJvdG90eXBlLl9jb250ZW50
Rmxvd1dhc1JlbW92ZWQpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvRE9NVHJlZU1hbmFnZXIu
anM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRE9NVHJlZU1hbmFnZXIpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLkRPTVRyZWVNYW5hZ2VyLl9mbG93UGF5bG9hZEhhc2hLZXkpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLkRPTVRyZWVNYW5hZ2VyLnByb3RvdHlwZS5fYnVpbGRIaWdobGlnaHRDb25m
aWcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTVRyZWVNYW5hZ2VyLnByb3RvdHlwZS5fY3Jl
YXRlQ29udGVudEZsb3dGcm9tUGF5bG9hZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRE9NVHJl
ZU1hbmFnZXIucHJvdG90eXBlLl91cGRhdGVDb250ZW50Rmxvd0Zyb21QYXlsb2FkKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5ET01UcmVlTWFuYWdlci5wcm90b3R5cGUuZ2V0TmFtZWRGbG93Q29s
bGVjdGlvbik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRE9NVHJlZU1hbmFnZXIucHJvdG90eXBl
Lm5hbWVkRmxvd0NyZWF0ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTVRyZWVNYW5hZ2Vy
LnByb3RvdHlwZS5uYW1lZEZsb3dSZW1vdmVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5ET01U
cmVlTWFuYWdlci5wcm90b3R5cGUuX3NlbmROYW1lZEZsb3dVcGRhdGVFdmVudHMpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLkRPTVRyZWVNYW5hZ2VyLnByb3RvdHlwZS5yZWdpb25MYXlvdXRVcGRh
dGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5ET01UcmVlTWFuYWdlci5wcm90b3R5cGUucmVn
aW9uT3ZlcnNldENoYW5nZWQpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvRnJhbWVUcmVlRWxl
bWVudC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5GcmFtZVRyZWVFbGVtZW50KToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5GcmFtZVRyZWVFbGVtZW50LnByb3RvdHlwZS5vbnBvcHVsYXRlKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5GcmFtZVRyZWVFbGVtZW50LnByb3RvdHlwZS5vbmV4cGFu
ZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRnJhbWVUcmVlRWxlbWVudC5wcm90b3R5cGUuX2No
aWxkQ29udGVudEZsb3dXYXNBZGRlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRnJhbWVUcmVl
RWxlbWVudC5wcm90b3R5cGUuX2NoaWxkQ29udGVudEZsb3dXYXNSZW1vdmVkKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5GcmFtZVRyZWVFbGVtZW50LnByb3RvdHlwZS5fcm9vdERPTU5vZGVJbnZh
bGlkYXRlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRnJhbWVUcmVlRWxlbWVudC5wcm90b3R5
cGUuX2FkZENoaWxkRm9yUmVwcmVzZW50ZWRPYmplY3QpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkZyYW1lVHJlZUVsZW1lbnQucHJvdG90eXBlLl9yZW1vdmVDaGlsZEZvclJlcHJlc2VudGVkT2Jq
ZWN0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5GcmFtZVRyZWVFbGVtZW50LnByb3RvdHlwZS5f
YWRkVHJlZUVsZW1lbnRGb3JSZXByZXNlbnRlZE9iamVjdCk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuRnJhbWVUcmVlRWxlbWVudC5wcm90b3R5cGUuX2NvbXBhcmVSZXNvdXJjZVRyZWVFbGVtZW50
cyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRnJhbWVUcmVlRWxlbWVudC5wcm90b3R5cGUuX2lu
c2VydFJlc291cmNlVHJlZUVsZW1lbnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkZyYW1lVHJl
ZUVsZW1lbnQucHJvdG90eXBlLl9wYXJlbnRUcmVlRWxlbWVudEZvclJlcHJlc2VudGVkT2JqZWN0
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5GcmFtZVRyZWVFbGVtZW50LnByb3RvdHlwZS5fc2hv
dWxkR3JvdXBJbnRvRm9sZGVycyk6CisgICAgICAgICogVXNlckludGVyZmFjZS9JbWFnZXMvQ29u
dGVudEZsb3cuc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL01haW4uaHRtbDoK
KyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1Jlc291cmNlU2lkZWJhclBhbmVsLmpzOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlJlc291cmNlU2lkZWJhclBhbmVsLnByb3RvdHlwZS5fdHJlZUVsZW1l
bnRTZWxlY3RlZCk6CisKIDIwMTMtMTAtMTcgIEFudG9pbmUgUXVpbnQgIDxncmFvdXRzQGFwcGxl
LmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBHbyB0byBsaW5lIGtleWJvYXJkIGNvbW1h
bmQgYW5kIGRpYWxvZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL0xvY2FsaXph
dGlvbnMvZW4ubHByb2ovbG9jYWxpemVkU3RyaW5ncy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Mb2NhbGl6YXRpb25zL2VuLmxwcm9qL2xvY2FsaXplZFN0cmluZ3MuanMKaW5kZXggYWUzNmJm
N2YxY2MyNDk4NjI4ZDc5YWJhYmUzMTQ1ZTI4NmZlYWJmYi4uZmEyOTVhNjVmYTllMTM2YjczNGNk
YzQ2MTQwZTRmNGRhZGIyNjIxOSAxMDA2NDQKR0lUIGJpbmFyeSBwYXRjaApkZWx0YSA0Mgp0Y21l
eT8lWTJ9WmRCZ2Z4PV5UYzloSHsydDF8XjFBMV9jSU5BWFp7PFYqcmI4WmlwPyoxT080NzN6K31f
CgpkZWx0YSAxOAphY21YQG0kTmE2QWRCZ2hIJEBYejxvQnppO1cmIXxJR3pmekwKCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvU2NyaXB0cy9jb3B5LXVzZXItaW50ZXJmYWNlLXJl
c291cmNlcy5zaCBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9TY3JpcHRzL2NvcHktdXNlci1pbnRl
cmZhY2UtcmVzb3VyY2VzLnNoCmluZGV4IDAyOGM3YTUuLmE2ZWU4OWUgMTAwNzU1Ci0tLSBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9TY3JpcHRzL2NvcHktdXNlci1pbnRlcmZhY2UtcmVzb3VyY2Vz
LnNoCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9TY3JpcHRzL2NvcHktdXNlci1pbnRlcmZh
Y2UtcmVzb3VyY2VzLnNoCkBAIC0xMyw2ICsxMyw3IEBAIExJQ0VOU0U9JChjYXQgPDxFT0YKICAq
IENvcHlyaWdodCAoQykgMjAxMyBNYXR0IEhvbGRlbiA8amZ0aG9sZGVuQHlhaG9vLmNvbT4KICAq
IENvcHlyaWdodCAoQykgMjAxMyBTYW1zdW5nIEVsZWN0cm9uaWNzLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEzIFNlb2tqdSBLd29uIChzZW9ranUua3dvbkBnbWFp
bC5jb20pCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQWRvYmUgU3lzdGVtcyBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NTU09ic2VydmVyLmpzIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ1NTT2JzZXJ2ZXIuanMKaW5kZXggY2Qw
NjZkMS4uNTVmMzQ0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvQ1NTT2JzZXJ2ZXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvQ1NTT2JzZXJ2ZXIuanMKQEAgLTU1LDE3ICs1NSwyMiBAQCBXZWJJbnNwZWN0b3IuQ1NT
T2JzZXJ2ZXIucHJvdG90eXBlID0gewogCiAgICAgbmFtZWRGbG93Q3JlYXRlZDogZnVuY3Rpb24o
bmFtZWRGbG93KQogICAgIHsKLSAgICAgICAgLy8gRklYTUU6IE5vdCBpbXBsZW1lbnRlZC4KKyAg
ICAgICAgV2ViSW5zcGVjdG9yLmRvbVRyZWVNYW5hZ2VyLm5hbWVkRmxvd0NyZWF0ZWQobmFtZWRG
bG93KTsKICAgICB9LAogCiAgICAgbmFtZWRGbG93UmVtb3ZlZDogZnVuY3Rpb24oZG9jdW1lbnRO
b2RlSWQsIGZsb3dOYW1lKQogICAgIHsKLSAgICAgICAgLy8gRklYTUU6IE5vdCBpbXBsZW1lbnRl
ZC4KKyAgICAgICAgV2ViSW5zcGVjdG9yLmRvbVRyZWVNYW5hZ2VyLm5hbWVkRmxvd1JlbW92ZWQo
ZG9jdW1lbnROb2RlSWQsIGZsb3dOYW1lKTsKICAgICB9LAogCiAgICAgcmVnaW9uTGF5b3V0VXBk
YXRlZDogZnVuY3Rpb24obmFtZWRGbG93KQogICAgIHsKLSAgICAgICAgLy8gRklYTUU6IE5vdCBp
bXBsZW1lbnRlZC4KKyAgICAgICAgV2ViSW5zcGVjdG9yLmRvbVRyZWVNYW5hZ2VyLnJlZ2lvbkxh
eW91dFVwZGF0ZWQobmFtZWRGbG93KTsKKyAgICB9LAorCisgICAgcmVnaW9uT3ZlcnNldENoYW5n
ZWQ6IGZ1bmN0aW9uKG5hbWVkRmxvdykKKyAgICB7CisgICAgICAgIFdlYkluc3BlY3Rvci5kb21U
cmVlTWFuYWdlci5yZWdpb25PdmVyc2V0Q2hhbmdlZChuYW1lZEZsb3cpOwogICAgIH0KIH07CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRlbnRG
bG93LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udGVudEZsb3cu
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2YzYTcxMAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRlbnRGbG93
LmpzCkBAIC0wLDAgKzEsODEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQWRvYmUgU3lz
dGVtcyBJbmNvcnBvcmF0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZQorICogICAgY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyAqICAgIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCisgKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZworICogICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzCisgKiAgICBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKiAKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVIgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
IEhPTERFUiBCRQorICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLAorICogT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UgorICogVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GCisgKiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKyAqIFNVQ0ggREFNQUdFLgorICovCisKK1dlYklu
c3BlY3Rvci5Db250ZW50RmxvdyA9IGZ1bmN0aW9uKGRvY3VtZW50Tm9kZUlkZW50aWZpZXIsIG5h
bWUsIG92ZXJzZXQpCit7CisgICAgV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOworCisg
ICAgdGhpcy5fZG9jdW1lbnROb2RlSWRlbnRpZmllciA9IGRvY3VtZW50Tm9kZUlkZW50aWZpZXI7
CisgICAgdGhpcy5fbmFtZSA9IG5hbWU7CisgICAgdGhpcy5fb3ZlcnNldCA9IG92ZXJzZXQ7Cit9
OworCitXZWJJbnNwZWN0b3IuQ29udGVudEZsb3cuRXZlbnQgPSB7CisgICAgT3ZlcnNldFdhc0No
YW5nZWQ6ICJjb250ZW50LWZsb3ctb3ZlcnNldC13YXMtY2hhbmdlZCIKK307CisKK1dlYkluc3Bl
Y3Rvci5Db250ZW50Rmxvdy5wcm90b3R5cGUgPSB7CisKKyAgICBjb25zdHJ1Y3RvcjogV2ViSW5z
cGVjdG9yLkNvbnRlbnRGbG93LAorCisgICAgLy8gUHVibGljCisKKyAgICBnZXQgaWQoKQorICAg
IHsKKyAgICAgICAgLy8gVXNlIHRoZSBmbG93IG5vZGUgaWQsIHRvIGF2b2lkIGNvbGxpc2lvbnMg
d2hlbiB3ZSBjaGFuZ2UgbWFpbiBkb2N1bWVudCBpZC4KKyAgICAgICAgcmV0dXJuIHRoaXMuX2Rv
Y3VtZW50Tm9kZUlkZW50aWZpZXIgKyAiOiIgKyB0aGlzLl9uYW1lOworICAgIH0sCisKKyAgICBn
ZXQgZG9jdW1lbnROb2RlSWRlbnRpZmllcigpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5f
ZG9jdW1lbnROb2RlSWRlbnRpZmllcjsKKyAgICB9LAorCisgICAgZ2V0IG5hbWUoKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIHRoaXMuX25hbWU7CisgICAgfSwKKworICAgIGdldCBvdmVyc2V0KCkK
KyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9vdmVyc2V0OworICAgIH0sCisKKyAgICBzZXQg
b3ZlcnNldChvdmVyc2V0KQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMuX292ZXJzZXQgPT09IG92
ZXJzZXQpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIHRoaXMuX292ZXJzZXQgPSBvdmVy
c2V0OworICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3Iu
Q29udGVudEZsb3cuRXZlbnQuRmxvd092ZXJzZXRXYXNDaGFuZ2VkKTsKKyAgICB9CisKK307CisK
KworV2ViSW5zcGVjdG9yLkNvbnRlbnRGbG93LnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNw
ZWN0b3IuT2JqZWN0LnByb3RvdHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL0NvbnRlbnRGbG93SWNvbi5jc3MgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9Db250ZW50Rmxvd0ljb24uY3NzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLmIyNmU3NjYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250ZW50Rmxvd0ljb24uY3NzCkBAIC0wLDAgKzEsMzIg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZQorICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyAqICAgIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiAg
ICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZworICogICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzCisgKiAgICBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVIgIkFTIElT
IiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBCRQorICogTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLAorICogT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUgorICogVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GCisg
KiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YKKyAqIFNVQ0ggREFNQUdFLgorICovCisKKy5jb250ZW50LWZsb3ctaWNvbiAuaWNv
biB7CisgICAgY29udGVudDogdXJsKEltYWdlcy9Db250ZW50Rmxvdy5zdmcpOworfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udGVudEZsb3dUcmVl
RWxlbWVudC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRlbnRG
bG93VHJlZUVsZW1lbnQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzY2
ZmY3ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL0NvbnRlbnRGbG93VHJlZUVsZW1lbnQuanMKQEAgLTAsMCArMSw0NCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMyBBZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRlZC4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlCisgKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZworICogICAgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqICAgIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisgKiAgICBk
aXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMKKyAq
ICAgIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIAorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUiAiQVMgSVMiIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIEJFCisgKiBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksCisgKiBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SCisgKiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YKKyAqIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgorICog
U1VDSCBEQU1BR0UuCisgKi8KKworV2ViSW5zcGVjdG9yLkNvbnRlbnRGbG93VHJlZUVsZW1lbnQg
PSBmdW5jdGlvbihyZXByZXNlbnRlZE9iamVjdCkKK3sKKyAgICBjb25zb2xlLmFzc2VydChyZXBy
ZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5Db250ZW50Rmxvdyk7CisgICAg
V2ViSW5zcGVjdG9yLkdlbmVyYWxUcmVlRWxlbWVudC5jYWxsKHRoaXMsIFtXZWJJbnNwZWN0b3Iu
Q29udGVudEZsb3dUcmVlRWxlbWVudC5TdHlsZUNsYXNzTmFtZSwgV2ViSW5zcGVjdG9yLkNvbnRl
bnRGbG93VHJlZUVsZW1lbnQuQ29udGVudEZsb3dJY29uU3R5bGVDbGFzc05hbWVdLCByZXByZXNl
bnRlZE9iamVjdC5uYW1lLCBudWxsLCByZXByZXNlbnRlZE9iamVjdCwgZmFsc2UpOworCisgICAg
dGhpcy5zbWFsbCA9IHRydWU7Cit9OworCitXZWJJbnNwZWN0b3IuQ29udGVudEZsb3dUcmVlRWxl
bWVudC5Db250ZW50Rmxvd0ljb25TdHlsZUNsYXNzTmFtZSA9ICJjb250ZW50LWZsb3ctaWNvbiI7
CisKK1dlYkluc3BlY3Rvci5Db250ZW50Rmxvd1RyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKKyAg
ICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLkNvbnRlbnRGbG93VHJlZUVsZW1lbnQKK307CisK
K1dlYkluc3BlY3Rvci5Db250ZW50Rmxvd1RyZWVFbGVtZW50LnByb3RvdHlwZS5fX3Byb3RvX18g
PSBXZWJJbnNwZWN0b3IuR2VuZXJhbFRyZWVFbGVtZW50LnByb3RvdHlwZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0RPTVRyZWUuanMgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9ET01UcmVlLmpzCmluZGV4IDc4M2U5N2QuLmM2
ODcwMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0RP
TVRyZWUuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvRE9NVHJl
ZS5qcwpAQCAtMzEsNiArMzEsNyBAQCBXZWJJbnNwZWN0b3IuRE9NVHJlZSA9IGZ1bmN0aW9uKGZy
YW1lKQogCiAgICAgdGhpcy5fcm9vdERPTU5vZGUgPSBudWxsOwogICAgIHRoaXMuX3JlcXVlc3RJ
ZGVudGlmaWVyID0gMDsKKyAgICB0aGlzLl9mbG93TWFwID0ge307CiAKICAgICB0aGlzLl9mcmFt
ZS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5GcmFtZS5FdmVudC5QYWdlRXhlY3V0aW9u
Q29udGV4dENoYW5nZWQsIHRoaXMuX2ZyYW1lUGFnZUV4ZWN1dGlvbkNvbnRleHRDaGFuZ2VkLCB0
aGlzKTsKIApAQCAtNDEsMTIgKzQyLDE4IEBAIFdlYkluc3BlY3Rvci5ET01UcmVlID0gZnVuY3Rp
b24oZnJhbWUpCiAgICAgICAgIFdlYkluc3BlY3Rvci5kb21UcmVlTWFuYWdlci5hZGRFdmVudExp
c3RlbmVyKFdlYkluc3BlY3Rvci5ET01UcmVlTWFuYWdlci5FdmVudC5Ob2RlUmVtb3ZlZCwgdGhp
cy5fbm9kZVJlbW92ZWQsIHRoaXMpOwogICAgICAgICB0aGlzLl9mcmFtZS5hZGRFdmVudExpc3Rl
bmVyKFdlYkluc3BlY3Rvci5GcmFtZS5FdmVudC5NYWluUmVzb3VyY2VEaWRDaGFuZ2UsIHRoaXMu
X2ZyYW1lTWFpblJlc291cmNlRGlkQ2hhbmdlLCB0aGlzKTsKICAgICB9CisKKyAgICBXZWJJbnNw
ZWN0b3IuZG9tVHJlZU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRE9NVHJl
ZU1hbmFnZXIuRXZlbnQuQ29udGVudEZsb3dMaXN0V2FzVXBkYXRlZCwgdGhpcy5fY29udGVudEZs
b3dMaXN0V2FzVXBkYXRlZCwgdGhpcyk7CisgICAgV2ViSW5zcGVjdG9yLmRvbVRyZWVNYW5hZ2Vy
LmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRPTVRyZWVNYW5hZ2VyLkV2ZW50LkNvbnRl
bnRGbG93V2FzQWRkZWQsIHRoaXMuX2NvbnRlbnRGbG93V2FzQWRkZWQsIHRoaXMpOworICAgIFdl
Ykluc3BlY3Rvci5kb21UcmVlTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5E
T01UcmVlTWFuYWdlci5FdmVudC5Db250ZW50Rmxvd1dhc1JlbW92ZWQsIHRoaXMuX2NvbnRlbnRG
bG93V2FzUmVtb3ZlZCwgdGhpcyk7CiB9OwogCiBXZWJJbnNwZWN0b3IuT2JqZWN0LmFkZENvbnN0
cnVjdG9yRnVuY3Rpb25zKFdlYkluc3BlY3Rvci5ET01UcmVlKTsKIAogV2ViSW5zcGVjdG9yLkRP
TVRyZWUuRXZlbnQgPSB7Ci0gICAgUm9vdERPTU5vZGVJbnZhbGlkYXRlZDogImRvbS10cmVlLXJv
b3QtZG9tLW5vZGUtaW52YWxpZGF0ZWQiCisgICAgUm9vdERPTU5vZGVJbnZhbGlkYXRlZDogImRv
bS10cmVlLXJvb3QtZG9tLW5vZGUtaW52YWxpZGF0ZWQiLAorICAgIENvbnRlbnRGbG93V2FzQWRk
ZWQ6ICJkb20tdHJlZS1jb250ZW50LWZsb3ctd2FzLWFkZGVkIiwKKyAgICBDb250ZW50Rmxvd1dh
c1JlbW92ZWQ6ICJkb20tdHJlZS1jb250ZW50LWZsb3ctd2FzLXJlbW92ZWQiCiB9OwogCiBXZWJJ
bnNwZWN0b3IuRE9NVHJlZS5wcm90b3R5cGUgPSB7CkBAIC01OSw2ICs2NiwxNiBAQCBXZWJJbnNw
ZWN0b3IuRE9NVHJlZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIHJldHVybiB0aGlzLl9mcmFtZTsK
ICAgICB9LAogCisgICAgZ2V0IGZsb3dNYXAoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMu
X2Zsb3dNYXA7CisgICAgfSwKKworICAgIGdldCBmbG93c0NvdW50KCkKKyAgICB7CisgICAgICAg
IHJldHVybiBPYmplY3Qua2V5cyh0aGlzLl9mbG93TWFwKS5sZW5ndGg7CisgICAgfSwKKwogICAg
IGludmFsaWRhdGU6IGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIC8vIFNldCB0byBudWxsIHNv
IGl0IGlzIGZldGNoZWQgYWdhaW4gbmV4dCB0aW1lIHJlcXVlc3RSb290RE9NTm9kZSBpcyBjYWxs
ZWQuCkBAIC0yMzAsNiArMjQ3LDg3IEBAIFdlYkluc3BlY3Rvci5ET01UcmVlLnByb3RvdHlwZSA9
IHsKIAogICAgICAgICAgICAgdGhpcy5fcmVxdWVzdFJvb3RET01Ob2RlKCk7CiAgICAgICAgIH0K
KyAgICB9LAorCisgICAgcmVxdWVzdENvbnRlbnRGbG93TGlzdDogZnVuY3Rpb24oKQorICAgIHsK
KyAgICAgICAgdGhpcy5yZXF1ZXN0Um9vdERPTU5vZGUoZnVuY3Rpb24ocm9vdE5vZGUpIHsKKyAg
ICAgICAgICAgIC8vIExldCB0aGUgYmFja2VuZCBrbm93IHdlIGFyZSBpbnRlcmVzdGVkIGFib3V0
IHRoZSBuYW1lZCBmbG93IGV2ZW50cyBmb3IgdGhpcyBkb2N1bWVudC4KKyAgICAgICAgICAgIFdl
Ykluc3BlY3Rvci5kb21UcmVlTWFuYWdlci5nZXROYW1lZEZsb3dDb2xsZWN0aW9uKHJvb3ROb2Rl
LmlkKTsKKyAgICAgICAgfSk7CisgICAgfSwKKworICAgIF9pc0NvbnRlbnRGbG93SW5DdXJyZW50
RG9jdW1lbnQ6IGZ1bmN0aW9uKGZsb3cpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fcm9v
dERPTU5vZGUgJiYgdGhpcy5fcm9vdERPTU5vZGUuaWQgPT09IGZsb3cuZG9jdW1lbnROb2RlSWRl
bnRpZmllcjsKKyAgICB9LAorCisgICAgX2NvbnRlbnRGbG93TGlzdFdhc1VwZGF0ZWQ6IGZ1bmN0
aW9uKGV2ZW50KQorICAgIHsKKyAgICAgICAgaWYgKCF0aGlzLl9yb290RE9NTm9kZSB8fCB0aGlz
Ll9yb290RE9NTm9kZS5pZCAhPT0gZXZlbnQuZGF0YS5kb2N1bWVudE5vZGVJZGVudGlmaWVyKQor
ICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIC8vIEFzc3VtZSB0aGF0IGFsbCB0aGUgZmxv
d3MgaGF2ZSBiZWVuIHJlbW92ZWQuCisgICAgICAgIHZhciBkZWxldGVkRmxvd3MgPSB7fTsKKyAg
ICAgICAgZm9yICh2YXIgZmxvd0lkIGluIHRoaXMuX2Zsb3dNYXApCisgICAgICAgICAgICBkZWxl
dGVkRmxvd3NbZmxvd0lkXSA9IHRoaXMuX2Zsb3dNYXBbZmxvd0lkXTsKKworICAgICAgICB2YXIg
bmV3Rmxvd3MgPSBbXTsKKworICAgICAgICB2YXIgZmxvd3MgPSBldmVudC5kYXRhLmZsb3dzOwor
ICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGZsb3dzLmxlbmd0aDsgKytpKSB7CisgICAgICAg
ICAgICB2YXIgZmxvdyA9IGZsb3dzW2ldOworICAgICAgICAgICAgLy8gQWxsIHRoZSBmbG93cyBy
ZWNlaXZlZCBmcm9tIFdlYktpdCBhcmUgcGFydCBvZiB0aGUgc2FtZSBkb2N1bWVudC4KKyAgICAg
ICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX2lzQ29udGVudEZsb3dJbkN1cnJlbnREb2N1bWVu
dChmbG93KSk7CisKKyAgICAgICAgICAgIHZhciBmbG93SWQgPSBmbG93LmlkOworICAgICAgICAg
ICAgaWYgKHRoaXMuX2Zsb3dNYXAuaGFzT3duUHJvcGVydHkoZmxvd0lkKSkgeworICAgICAgICAg
ICAgICAgIC8vIFJlbW92ZSB0aGUgZmxvdyBuYW1lIGZyb20gdGhlIGRlbGV0ZWQgbGlzdC4KKyAg
ICAgICAgICAgICAgICBjb25zb2xlLmFzc2VydChkZWxldGVkRmxvd3MuaGFzT3duUHJvcGVydHko
Zmxvd0tleSkpOworICAgICAgICAgICAgICAgIGRlbGV0ZSBkZWxldGVkRmxvd3NbZmxvd0lkXTsK
KyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgdGhpcy5fZmxvd01hcFtmbG93
SWRdID0gZmxvdzsKKyAgICAgICAgICAgICAgICBuZXdGbG93cy5wdXNoKGZsb3cpOworICAgICAg
ICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgZm9yICh2YXIgZmxvd0lkIGluIGRlbGV0ZWRG
bG93cykgeworICAgICAgICAgICAgZGVsZXRlIHRoaXMuX2Zsb3dNYXBbZmxvd0lkXTsKKyAgICAg
ICAgfQorCisgICAgICAgIC8vIFNlbmQgdXBkYXRlIGV2ZW50cyB0byBsaXN0ZW5lcnMuCisKKyAg
ICAgICAgZm9yICh2YXIgZmxvd0lkIGluIGRlbGV0ZWRGbG93cykKKyAgICAgICAgICAgIHRoaXMu
ZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5ET01UcmVlLkV2ZW50LkNvbnRl
bnRGbG93V2FzUmVtb3ZlZCwge2Zsb3c6IGRlbGV0ZWRGbG93c1tmbG93SWRdfSk7CisKKyAgICAg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuZXdGbG93cy5sZW5ndGg7ICsraSkKKyAgICAgICAgICAg
IHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5ET01UcmVlLkV2ZW50
LkNvbnRlbnRGbG93V2FzQWRkZWQsIHtmbG93OiBuZXdGbG93c1tpXX0pOworICAgIH0sCisKKyAg
ICBfY29udGVudEZsb3dXYXNBZGRlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgeworICAgICAgICB2
YXIgZmxvdyA9IGV2ZW50LmRhdGEuZmxvdzsKKyAgICAgICAgaWYgKCF0aGlzLl9pc0NvbnRlbnRG
bG93SW5DdXJyZW50RG9jdW1lbnQoZmxvdykpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAg
ICAgdmFyIGZsb3dJZCA9IGZsb3cuaWQ7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCF0aGlzLl9m
bG93TWFwLmhhc093blByb3BlcnR5KGZsb3dJZCkpOworICAgICAgICB0aGlzLl9mbG93TWFwW2Zs
b3dJZF0gPSBmbG93OworCisgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdl
Ykluc3BlY3Rvci5ET01UcmVlLkV2ZW50LkNvbnRlbnRGbG93V2FzQWRkZWQsIHtmbG93OiBmbG93
fSk7CisgICAgfSwKKworICAgIF9jb250ZW50Rmxvd1dhc1JlbW92ZWQ6IGZ1bmN0aW9uKGV2ZW50
KQorICAgIHsKKyAgICAgICAgdmFyIGZsb3cgPSBldmVudC5kYXRhLmZsb3c7CisgICAgICAgIGlm
ICghdGhpcy5faXNDb250ZW50Rmxvd0luQ3VycmVudERvY3VtZW50KGZsb3cpKQorICAgICAgICAg
ICAgcmV0dXJuOworCisgICAgICAgIHZhciBmbG93SWQgPSBmbG93LmlkOworICAgICAgICBjb25z
b2xlLmFzc2VydCh0aGlzLl9mbG93TWFwLmhhc093blByb3BlcnR5KGZsb3dJZCkpOworICAgICAg
ICBkZWxldGUgdGhpcy5fZmxvd01hcFtmbG93SWRdOworCisgICAgICAgIHRoaXMuZGlzcGF0Y2hF
dmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5ET01UcmVlLkV2ZW50LkNvbnRlbnRGbG93V2Fz
UmVtb3ZlZCwge2Zsb3c6IGZsb3d9KTsKICAgICB9CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9ET01UcmVlTWFuYWdlci5qcyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0RPTVRyZWVNYW5hZ2VyLmpzCmluZGV4IDgxODI0
ZGIuLmFlN2ZhYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL0RPTVRyZWVNYW5hZ2VyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL0RPTVRyZWVNYW5hZ2VyLmpzCkBAIC0zOSw2ICszOSw3IEBAIFdlYkluc3BlY3Rvci5E
T01UcmVlTWFuYWdlciA9IGZ1bmN0aW9uKCkgewogICAgIHRoaXMuX2lkVG9ET01Ob2RlID0ge307
CiAgICAgdGhpcy5fZG9jdW1lbnQgPSBudWxsOwogICAgIHRoaXMuX2F0dHJpYnV0ZUxvYWROb2Rl
SWRzID0ge307CisgICAgdGhpcy5fZmxvd3MgPSB7fTsKIH0KIAogV2ViSW5zcGVjdG9yLk9iamVj
dC5hZGRDb25zdHJ1Y3RvckZ1bmN0aW9ucyhXZWJJbnNwZWN0b3IuRE9NVHJlZU1hbmFnZXIpOwpA
QCAtNTIsNyArNTMsMTggQEAgV2ViSW5zcGVjdG9yLkRPTVRyZWVNYW5hZ2VyLkV2ZW50ID0gewog
ICAgIERvY3VtZW50VXBkYXRlZDogImRvbS10cmVlLW1hbmFnZXItZG9jdW1lbnQtdXBkYXRlZCIs
CiAgICAgQ2hpbGROb2RlQ291bnRVcGRhdGVkOiAiZG9tLXRyZWUtbWFuYWdlci1jaGlsZC1ub2Rl
LWNvdW50LXVwZGF0ZWQiLAogICAgIERPTU5vZGVXYXNJbnNwZWN0ZWQ6ICJkb20tdHJlZS1tYW5h
Z2VyLWRvbS1ub2RlLXdhcy1pbnNwZWN0ZWQiLAotICAgIEluc3BlY3RNb2RlU3RhdGVDaGFuZ2Vk
OiAiZG9tLXRyZWUtbWFuYWdlci1pbnNwZWN0LW1vZGUtc3RhdGUtY2hhbmdlZCIKKyAgICBJbnNw
ZWN0TW9kZVN0YXRlQ2hhbmdlZDogImRvbS10cmVlLW1hbmFnZXItaW5zcGVjdC1tb2RlLXN0YXRl
LWNoYW5nZWQiLAorICAgIENvbnRlbnRGbG93TGlzdFdhc1VwZGF0ZWQ6ICJkb20tdHJlZS1tYW5h
Z2VyLWNvbnRlbnQtZmxvdy1saXN0LXdhcy11cGRhdGVkIiwKKyAgICBDb250ZW50Rmxvd1dhc0Fk
ZGVkOiAiZG9tLXRyZWUtbWFuYWdlci1jb250ZW50LWZsb3ctd2FzLWFkZGVkIiwKKyAgICBDb250
ZW50Rmxvd1dhc1JlbW92ZWQ6ICJkb20tdHJlZS1tYW5hZ2VyLWNvbnRlbnQtZmxvdy13YXMtcmVt
b3ZlZCIsCisgICAgUmVnaW9uTGF5b3V0VXBkYXRlZDogImRvbS10cmVlLW1hbmFnZXItcmVnaW9u
LWxheW91dC11cGRhdGVkIiwKKyAgICBSZWdpb25PdmVyc2V0Q2hhbmdlZDogImRvbS10cmVlLW1h
bmFnZXItcmVnaW9uLW92ZXJzZXQtY2hhbmdlZCIKK307CisKK1dlYkluc3BlY3Rvci5ET01UcmVl
TWFuYWdlci5fZmxvd1BheWxvYWRIYXNoS2V5ID0gZnVuY3Rpb24oZmxvd1BheWxvYWQpCit7Cisg
ICAgLy8gVXNlIHRoZSBmbG93IG5vZGUgaWQsIHRvIGF2b2lkIGNvbGxpc2lvbnMgd2hlbiB3ZSBj
aGFuZ2UgbWFpbiBkb2N1bWVudCBpZC4KKyAgICByZXR1cm4gZmxvd1BheWxvYWQuZG9jdW1lbnRO
b2RlSWQgKyAiOiIgKyBmbG93UGF5bG9hZC5uYW1lOwogfTsKIAogV2ViSW5zcGVjdG9yLkRPTVRy
ZWVNYW5hZ2VyLnByb3RvdHlwZSA9IHsKQEAgLTUxOSw2ICs1MzEsNzkgQEAgV2ViSW5zcGVjdG9y
LkRPTVRyZWVNYW5hZ2VyLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIGhpZ2hsaWdodENvbmZp
Zy5tYXJnaW5Db2xvciA9IHtyOiAyNDYsIGc6IDE3OCwgYjogMTA3LCBhOiAwLjY2fTsKIAogICAg
ICAgICByZXR1cm4gaGlnaGxpZ2h0Q29uZmlnOworICAgIH0sCisKKyAgICBfY3JlYXRlQ29udGVu
dEZsb3dGcm9tUGF5bG9hZDogZnVuY3Rpb24oZmxvd1BheWxvYWQpCisgICAgeworICAgICAgICAv
LyBGSVhNRTogQ29sbGVjdCB0aGUgY29udGVudCBhbmQgcmVnaW9ucyBmcm9tIHRoZSBwYXlsb2Fk
LgorICAgICAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5Db250ZW50RmxvdyhmbG93UGF5bG9h
ZC5kb2N1bWVudE5vZGVJZCwgZmxvd1BheWxvYWQubmFtZSwgZmxvd1BheWxvYWQub3ZlcnNldCk7
CisgICAgfSwKKworICAgIF91cGRhdGVDb250ZW50Rmxvd0Zyb21QYXlsb2FkOiBmdW5jdGlvbihj
b250ZW50RmxvdywgZmxvd1BheWxvYWQpCisgICAgeworICAgICAgICAvLyBGSVhNRTogQ29sbGVj
dCB0aGUgY29udGVudCBhbmQgcmVnaW9ucyBmcm9tIHRoZSBwYXlsb2FkLgorICAgICAgICBjb250
ZW50Rmxvdy5vdmVyc2V0ID0gZmxvd1BheWxvYWQub3ZlcnNldDsKKyAgICB9LAorCisgICAgZ2V0
TmFtZWRGbG93Q29sbGVjdGlvbjogZnVuY3Rpb24oZG9jdW1lbnROb2RlSWRlbnRpZmllcikKKyAg
ICB7CisgICAgICAgIGZ1bmN0aW9uIG9uTmFtZWRGbG93Q29sbGVjdGlvbkF2YWlsYWJsZShlcnJv
ciwgZmxvd3MpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChlcnJvcikgeworICAgICAgICAg
ICAgICAgIGNvbnNvbGUuZXJyb3IoIkVycm9yIHdoaWxlIGdldHRpbmcgdGhlIG5hbWVkIGZsb3dz
IGZvciBkb2N1bWVudCAiICsgZG9jdW1lbnROb2RlSWRlbnRpZmllciArICI6ICIgKyBlcnJvcik7
CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgdmFy
IGNvbnRlbnRGbG93cyA9IFtdOworICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBmbG93
cy5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgICAgIHZhciBmbG93UGF5bG9hZCA9IGZsb3dz
W2ldOworICAgICAgICAgICAgICAgIHZhciBmbG93S2V5ID0gV2ViSW5zcGVjdG9yLkRPTVRyZWVN
YW5hZ2VyLl9mbG93UGF5bG9hZEhhc2hLZXkoZmxvd1BheWxvYWQpOworICAgICAgICAgICAgICAg
IHZhciBjb250ZW50RmxvdyA9IHRoaXMuX2Zsb3dzW2Zsb3dLZXldOworICAgICAgICAgICAgICAg
IGlmIChjb250ZW50RmxvdykKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5fdXBkYXRlQ29udGVu
dEZsb3dGcm9tUGF5bG9hZChjb250ZW50RmxvdywgZmxvd1BheWxvYWQpOworICAgICAgICAgICAg
ICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICBjb250ZW50RmxvdyA9IHRoaXMuX2NyZWF0
ZUNvbnRlbnRGbG93RnJvbVBheWxvYWQoZmxvd1BheWxvYWQpOworICAgICAgICAgICAgICAgICAg
ICB0aGlzLl9mbG93c1tmbG93S2V5XSA9IGNvbnRlbnRGbG93OworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICBjb250ZW50Rmxvd3MucHVzaChjb250ZW50Rmxvdyk7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNw
ZWN0b3IuRE9NVHJlZU1hbmFnZXIuRXZlbnQuQ29udGVudEZsb3dMaXN0V2FzVXBkYXRlZCwge2Rv
Y3VtZW50Tm9kZUlkZW50aWZpZXI6IGRvY3VtZW50Tm9kZUlkZW50aWZpZXIsIGZsb3dzOiBjb250
ZW50Rmxvd3N9KTsKKyAgICAgICAgfQorICAgICAgICBDU1NBZ2VudC5nZXROYW1lZEZsb3dDb2xs
ZWN0aW9uKGRvY3VtZW50Tm9kZUlkZW50aWZpZXIsIG9uTmFtZWRGbG93Q29sbGVjdGlvbkF2YWls
YWJsZS5iaW5kKHRoaXMpKTsKKyAgICB9LAorCisgICAgbmFtZWRGbG93Q3JlYXRlZDogZnVuY3Rp
b24oZmxvd1BheWxvYWQpCisgICAgeworICAgICAgICB2YXIgZmxvd0tleSA9IFdlYkluc3BlY3Rv
ci5ET01UcmVlTWFuYWdlci5fZmxvd1BheWxvYWRIYXNoS2V5KGZsb3dQYXlsb2FkKTsKKyAgICAg
ICAgY29uc29sZS5hc3NlcnQoIXRoaXMuX2Zsb3dzLmhhc093blByb3BlcnR5KGZsb3dLZXkpKTsK
KyAgICAgICAgdmFyIGNvbnRlbnRGbG93ID0gdGhpcy5fY3JlYXRlQ29udGVudEZsb3dGcm9tUGF5
bG9hZChmbG93UGF5bG9hZCk7CisgICAgICAgIHRoaXMuX2Zsb3dzW2Zsb3dLZXldID0gY29udGVu
dEZsb3c7CisgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rv
ci5ET01UcmVlTWFuYWdlci5FdmVudC5Db250ZW50Rmxvd1dhc0FkZGVkLCB7ZmxvdzogY29udGVu
dEZsb3d9KTsKKyAgICB9LAorCisgICAgbmFtZWRGbG93UmVtb3ZlZDogZnVuY3Rpb24oZG9jdW1l
bnROb2RlSWRlbnRpZmllciwgZmxvd05hbWUpCisgICAgeworICAgICAgICB2YXIgZmxvd0tleSA9
IFdlYkluc3BlY3Rvci5ET01UcmVlTWFuYWdlci5fZmxvd1BheWxvYWRIYXNoS2V5KHtkb2N1bWVu
dE5vZGVJZDogZG9jdW1lbnROb2RlSWRlbnRpZmllciwgbmFtZTogZmxvd05hbWV9KTsKKyAgICAg
ICAgdmFyIGNvbnRlbnRGbG93ID0gdGhpcy5fZmxvd3NbZmxvd0tleV07CisgICAgICAgIGNvbnNv
bGUuYXNzZXJ0KGNvbnRlbnRGbG93KTsKKyAgICAgICAgZGVsZXRlIHRoaXMuX2Zsb3dzW2Zsb3dL
ZXldOworICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3Iu
RE9NVHJlZU1hbmFnZXIuRXZlbnQuQ29udGVudEZsb3dXYXNSZW1vdmVkLCB7ZmxvdzogY29udGVu
dEZsb3d9KTsKKyAgICB9LAorCisgICAgX3NlbmROYW1lZEZsb3dVcGRhdGVFdmVudHM6IGZ1bmN0
aW9uKGZsb3dQYXlsb2FkKQorICAgIHsKKyAgICAgICAgdmFyIGZsb3dLZXkgPSBXZWJJbnNwZWN0
b3IuRE9NVHJlZU1hbmFnZXIuX2Zsb3dQYXlsb2FkSGFzaEtleShmbG93UGF5bG9hZCk7CisgICAg
ICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX2Zsb3dzLmhhc093blByb3BlcnR5KGZsb3dLZXkpKTsK
KyAgICAgICAgdGhpcy5fdXBkYXRlQ29udGVudEZsb3dGcm9tUGF5bG9hZCh0aGlzLl9mbG93c1tm
bG93S2V5XSwgZmxvd1BheWxvYWQpOworICAgIH0sCisKKyAgICByZWdpb25MYXlvdXRVcGRhdGVk
OiBmdW5jdGlvbihmbG93UGF5bG9hZCkKKyAgICB7CisgICAgICAgIHRoaXMuX3NlbmROYW1lZEZs
b3dVcGRhdGVFdmVudHMoZmxvd1BheWxvYWQpOworICAgIH0sCisKKyAgICByZWdpb25PdmVyc2V0
Q2hhbmdlZDogZnVuY3Rpb24oZmxvd1BheWxvYWQpCisgICAgeworICAgICAgICB0aGlzLl9zZW5k
TmFtZWRGbG93VXBkYXRlRXZlbnRzKGZsb3dQYXlsb2FkKTsKICAgICB9CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0ZyYW1lVHJlZUVsZW1lbnQu
anMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9GcmFtZVRyZWVFbGVtZW50
LmpzCmluZGV4IDQwMjU1YTguLjlmNDdkYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL0ZyYW1lVHJlZUVsZW1lbnQuanMKKysrIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvRnJhbWVUcmVlRWxlbWVudC5qcwpAQCAtNDAsNiArNDAs
MTAgQEAgV2ViSW5zcGVjdG9yLkZyYW1lVHJlZUVsZW1lbnQgPSBmdW5jdGlvbihmcmFtZSwgcmVw
cmVzZW50ZWRPYmplY3QpCiAgICAgZnJhbWUuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3Iu
RnJhbWUuRXZlbnQuQ2hpbGRGcmFtZVdhc0FkZGVkLCB0aGlzLl9jaGlsZEZyYW1lV2FzQWRkZWQs
IHRoaXMpOwogICAgIGZyYW1lLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkZyYW1lLkV2
ZW50LkNoaWxkRnJhbWVXYXNSZW1vdmVkLCB0aGlzLl9jaGlsZEZyYW1lV2FzUmVtb3ZlZCwgdGhp
cyk7CiAKKyAgICBmcmFtZS5kb21UcmVlLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRP
TVRyZWUuRXZlbnQuQ29udGVudEZsb3dXYXNBZGRlZCwgdGhpcy5fY2hpbGRDb250ZW50Rmxvd1dh
c0FkZGVkLCB0aGlzKTsKKyAgICBmcmFtZS5kb21UcmVlLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5z
cGVjdG9yLkRPTVRyZWUuRXZlbnQuQ29udGVudEZsb3dXYXNSZW1vdmVkLCB0aGlzLl9jaGlsZENv
bnRlbnRGbG93V2FzUmVtb3ZlZCwgdGhpcyk7CisgICAgZnJhbWUuZG9tVHJlZS5hZGRFdmVudExp
c3RlbmVyKFdlYkluc3BlY3Rvci5ET01UcmVlLkV2ZW50LlJvb3RET01Ob2RlSW52YWxpZGF0ZWQs
IHRoaXMuX3Jvb3RET01Ob2RlSW52YWxpZGF0ZWQsIHRoaXMpOworCiAgICAgaWYgKHRoaXMuX2Zy
YW1lLmlzTWFpbkZyYW1lKCkpIHsKICAgICAgICAgdGhpcy5fZG93bmxvYWRpbmdQYWdlID0gZmFs
c2U7CiAgICAgICAgIFdlYkluc3BlY3Rvci5ub3RpZmljYXRpb25zLmFkZEV2ZW50TGlzdGVuZXIo
V2ViSW5zcGVjdG9yLk5vdGlmaWNhdGlvbi5QYWdlQXJjaGl2ZVN0YXJ0ZWQsIHRoaXMuX3BhZ2VB
cmNoaXZlU3RhcnRlZCwgdGhpcyk7CkBAIC0xNzYsMTEgKzE4MCwxNiBAQCBXZWJJbnNwZWN0b3Iu
RnJhbWVUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBmb3IgKHZhciBqID0g
MDsgaiA8IHNvdXJjZU1hcC5yZXNvdXJjZXMubGVuZ3RoOyArK2opCiAgICAgICAgICAgICB0aGlz
Ll9hZGRUcmVlRWxlbWVudEZvclJlcHJlc2VudGVkT2JqZWN0KHNvdXJjZU1hcC5yZXNvdXJjZXNb
al0pOwogICAgICAgICB9CisKKyAgICAgICAgdmFyIGZsb3dNYXAgPSB0aGlzLl9mcmFtZS5kb21U
cmVlLmZsb3dNYXA7CisgICAgICAgIGZvciAodmFyIGZsb3dLZXkgaW4gZmxvd01hcCkKKyAgICAg
ICAgICAgIHRoaXMuX2FkZFRyZWVFbGVtZW50Rm9yUmVwcmVzZW50ZWRPYmplY3QoZmxvd01hcFtm
bG93S2V5XSk7CiAgICAgfSwKIAogICAgIG9uZXhwYW5kOiBmdW5jdGlvbigpCiAgICAgewogICAg
ICAgICB0aGlzLl9leHBhbmRlZFNldHRpbmcudmFsdWUgPSB0cnVlOworICAgICAgICB0aGlzLl9m
cmFtZS5kb21UcmVlLnJlcXVlc3RDb250ZW50Rmxvd0xpc3QoKTsKICAgICB9LAogCiAgICAgb25j
b2xsYXBzZTogZnVuY3Rpb24oKQpAQCAtMjY0LDYgKzI3MywyMSBAQCBXZWJJbnNwZWN0b3IuRnJh
bWVUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX3JlbW92ZUNoaWxkRm9y
UmVwcmVzZW50ZWRPYmplY3QoZXZlbnQuZGF0YS5jaGlsZEZyYW1lKTsKICAgICB9LAogCisgICAg
X2NoaWxkQ29udGVudEZsb3dXYXNBZGRlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgeworICAgICAg
ICB0aGlzLl9hZGRSZXByZXNlbnRlZE9iamVjdFRvTmV3Q2hpbGRRdWV1ZShldmVudC5kYXRhLmZs
b3cpOworICAgIH0sCisKKyAgICBfY2hpbGRDb250ZW50Rmxvd1dhc1JlbW92ZWQ6IGZ1bmN0aW9u
KGV2ZW50KQorICAgIHsKKyAgICAgICAgdGhpcy5fcmVtb3ZlQ2hpbGRGb3JSZXByZXNlbnRlZE9i
amVjdChldmVudC5kYXRhLmZsb3cpOworICAgIH0sCisKKyAgICBfcm9vdERPTU5vZGVJbnZhbGlk
YXRlZDogZnVuY3Rpb24oKSB7CisgICAgICAgIGlmICh0aGlzLmV4cGFuZGVkKQorICAgICAgICAg
ICAgdGhpcy5fZnJhbWUuZG9tVHJlZS5yZXF1ZXN0Q29udGVudEZsb3dMaXN0KCk7CisgICAgfSwK
KwogICAgIF9hZGRSZXByZXNlbnRlZE9iamVjdFRvTmV3Q2hpbGRRdWV1ZTogZnVuY3Rpb24ocmVw
cmVzZW50ZWRPYmplY3QpCiAgICAgewogICAgICAgICAvLyBUaGlzIHF1ZXVlIHJlZHVjZXMgZmxh
c2hpbmcgYXMgcmVzb3VyY2VzIGxvYWQgYW5kIGNoYW5nZSBmb2xkZXJzIHdoZW4gdGhlaXIgdHlw
ZSBiZWNvbWVzIGtub3duLgpAQCAtMjk4LDggKzMyMiw4IEBAIFdlYkluc3BlY3Rvci5GcmFtZVRy
ZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKIAogICAgIF9hZGRDaGlsZEZvclJlcHJlc2VudGVkT2Jq
ZWN0OiBmdW5jdGlvbihyZXByZXNlbnRlZE9iamVjdCkKICAgICB7Ci0gICAgICAgIGNvbnNvbGUu
YXNzZXJ0KHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlJlc291cmNl
IHx8IHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkZyYW1lKTsKLSAg
ICAgICAgaWYgKCEocmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuUmVz
b3VyY2UgfHwgcmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuRnJhbWUp
KQorICAgICAgICBjb25zb2xlLmFzc2VydChyZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdl
Ykluc3BlY3Rvci5SZXNvdXJjZSB8fCByZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdlYklu
c3BlY3Rvci5GcmFtZSB8fCByZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rv
ci5Db250ZW50Rmxvdyk7CisgICAgICAgIGlmICghKHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNl
b2YgV2ViSW5zcGVjdG9yLlJlc291cmNlIHx8IHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2Yg
V2ViSW5zcGVjdG9yLkZyYW1lIHx8IHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV2ViSW5z
cGVjdG9yLkNvbnRlbnRGbG93KSkKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICB0aGlz
Ll91cGRhdGVQYXJlbnRTdGF0dXMoKTsKQEAgLTMyMiw4ICszNDYsOCBAQCBXZWJJbnNwZWN0b3Iu
RnJhbWVUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAKICAgICBfcmVtb3ZlQ2hpbGRGb3JSZXBy
ZXNlbnRlZE9iamVjdDogZnVuY3Rpb24ocmVwcmVzZW50ZWRPYmplY3QpCiAgICAgewotICAgICAg
ICBjb25zb2xlLmFzc2VydChyZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rv
ci5SZXNvdXJjZSB8fCByZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5G
cmFtZSk7Ci0gICAgICAgIGlmICghKHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV2ViSW5z
cGVjdG9yLlJlc291cmNlIHx8IHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVj
dG9yLkZyYW1lKSkKKyAgICAgICAgY29uc29sZS5hc3NlcnQocmVwcmVzZW50ZWRPYmplY3QgaW5z
dGFuY2VvZiBXZWJJbnNwZWN0b3IuUmVzb3VyY2UgfHwgcmVwcmVzZW50ZWRPYmplY3QgaW5zdGFu
Y2VvZiBXZWJJbnNwZWN0b3IuRnJhbWUgfHwgcmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBX
ZWJJbnNwZWN0b3IuQ29udGVudEZsb3cpOworICAgICAgICBpZiAoIShyZXByZXNlbnRlZE9iamVj
dCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5SZXNvdXJjZSB8fCByZXByZXNlbnRlZE9iamVjdCBp
bnN0YW5jZW9mIFdlYkluc3BlY3Rvci5GcmFtZSB8fCByZXByZXNlbnRlZE9iamVjdCBpbnN0YW5j
ZW9mIFdlYkluc3BlY3Rvci5Db250ZW50RmxvdykpCiAgICAgICAgICAgICByZXR1cm47CiAKICAg
ICAgICAgdGhpcy5fcmVtb3ZlUmVwcmVzZW50ZWRPYmplY3RGcm9tTmV3Q2hpbGRRdWV1ZShyZXBy
ZXNlbnRlZE9iamVjdCk7CkBAIC0zNTUsNiArMzc5LDggQEAgV2ViSW5zcGVjdG9yLkZyYW1lVHJl
ZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICAgICAgICAgIGNoaWxkVHJlZUVsZW1lbnQg
PSBuZXcgV2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZUVsZW1lbnQocmVwcmVzZW50ZWRPYmplY3Qp
OwogICAgICAgICAgICAgZWxzZSBpZiAocmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXZWJJ
bnNwZWN0b3IuRnJhbWUpCiAgICAgICAgICAgICAgICAgY2hpbGRUcmVlRWxlbWVudCA9IG5ldyBX
ZWJJbnNwZWN0b3IuRnJhbWVUcmVlRWxlbWVudChyZXByZXNlbnRlZE9iamVjdCk7CisgICAgICAg
ICAgICBlbHNlIGlmIChyZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5D
b250ZW50RmxvdykKKyAgICAgICAgICAgICAgICBjaGlsZFRyZWVFbGVtZW50ID0gbmV3IFdlYklu
c3BlY3Rvci5Db250ZW50Rmxvd1RyZWVFbGVtZW50KHJlcHJlc2VudGVkT2JqZWN0KTsKICAgICAg
ICAgfQogCiAgICAgICAgIHRoaXMuX2FkZFRyZWVFbGVtZW50KGNoaWxkVHJlZUVsZW1lbnQpOwpA
QCAtMzkyLDEwICs0MTgsMzEgQEAgV2ViSW5zcGVjdG9yLkZyYW1lVHJlZUVsZW1lbnQucHJvdG90
eXBlID0gewogICAgICAgICB0aGlzLmluc2VydENoaWxkKGZvbGRlclRyZWVFbGVtZW50LCBpbnNl
cnRpb25JbmRleEZvck9iamVjdEluTGlzdFNvcnRlZEJ5RnVuY3Rpb24oZm9sZGVyVHJlZUVsZW1l
bnQsIHRoaXMuY2hpbGRyZW4sIHRoaXMuX2NvbXBhcmVUcmVlRWxlbWVudHNCeU1haW5UaXRsZSkp
OwogICAgIH0sCiAKKyAgICBfY29tcGFyZVJlc291cmNlVHJlZUVsZW1lbnRzOiBmdW5jdGlvbihh
LCBiKQorICAgIHsKKyAgICAgICAgaWYgKGEgPT09IGIpCisgICAgICAgICAgICByZXR1cm4gMDsK
KworICAgICAgICB2YXIgYUlzUmVzb3VyY2UgPSBhIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlJl
c291cmNlVHJlZUVsZW1lbnQ7CisgICAgICAgIHZhciBiSXNSZXNvdXJjZSA9IGIgaW5zdGFuY2Vv
ZiBXZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlRWxlbWVudDsKKworICAgICAgICBpZiAoYUlzUmVz
b3VyY2UgJiYgYklzUmVzb3VyY2UpCisgICAgICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLlJl
c291cmNlVHJlZUVsZW1lbnQuY29tcGFyZVJlc291cmNlVHJlZUVsZW1lbnRzKGEsIGIpOworCisg
ICAgICAgIGlmICghYUlzUmVzb3VyY2UgJiYgIWJJc1Jlc291cmNlKSB7CisgICAgICAgICAgICAv
LyBXaGVuIGJvdGggY29tcG9uZW50cyBhcmUgbm90IHJlc291cmNlcyB0aGVuIGp1c3QgY29tcGFy
ZSB0aGUgdGl0bGVzLgorICAgICAgICAgICAgcmV0dXJuIGEubWFpblRpdGxlLmxvY2FsZUNvbXBh
cmUoYi5tYWluVGl0bGUpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICAvLyBOb24tcmVz
b3VyY2VzIHNob3VsZCBhcHBlYXIgYmVmb3JlIHRoZSByZXNvdXJjZXMuCisgICAgICAgIC8vIEZJ
WE1FOiBUaGVyZSBzaG91bGQgYmUgYSBiZXR0ZXIgd2F5IHRvIGdyb3VwIHRoZSBlbGVtZW50cyBi
eSB0aGVpciB0eXBlLgorICAgICAgICByZXR1cm4gYUlzUmVzb3VyY2UgPyAxIDogLTE7CisgICAg
fSwKKwogICAgIF9pbnNlcnRSZXNvdXJjZVRyZWVFbGVtZW50OiBmdW5jdGlvbihwYXJlbnRUcmVl
RWxlbWVudCwgY2hpbGRUcmVlRWxlbWVudCkKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0
KCFjaGlsZFRyZWVFbGVtZW50LnBhcmVudCk7Ci0gICAgICAgIHBhcmVudFRyZWVFbGVtZW50Lmlu
c2VydENoaWxkKGNoaWxkVHJlZUVsZW1lbnQsIGluc2VydGlvbkluZGV4Rm9yT2JqZWN0SW5MaXN0
U29ydGVkQnlGdW5jdGlvbihjaGlsZFRyZWVFbGVtZW50LCBwYXJlbnRUcmVlRWxlbWVudC5jaGls
ZHJlbiwgV2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZUVsZW1lbnQuY29tcGFyZVJlc291cmNlVHJl
ZUVsZW1lbnRzKSk7CisgICAgICAgIHBhcmVudFRyZWVFbGVtZW50Lmluc2VydENoaWxkKGNoaWxk
VHJlZUVsZW1lbnQsIGluc2VydGlvbkluZGV4Rm9yT2JqZWN0SW5MaXN0U29ydGVkQnlGdW5jdGlv
bihjaGlsZFRyZWVFbGVtZW50LCBwYXJlbnRUcmVlRWxlbWVudC5jaGlsZHJlbiwgdGhpcy5fY29t
cGFyZVJlc291cmNlVHJlZUVsZW1lbnRzKSk7CiAgICAgfSwKIAogICAgIF9yZW1vdmVUcmVlRWxl
bWVudDogZnVuY3Rpb24oY2hpbGRUcmVlRWxlbWVudCwgc3VwcHJlc3NPbkRlc2VsZWN0LCBzdXBw
cmVzc1NlbGVjdFNpYmxpbmcpCkBAIC00NDUsNiArNDkyLDEyIEBAIFdlYkluc3BlY3Rvci5GcmFt
ZVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHJldHVybiB0aGlzLl9mcmFt
ZXNGb2xkZXJUcmVlRWxlbWVudDsKICAgICAgICAgfQogCisgICAgICAgIGlmIChyZXByZXNlbnRl
ZE9iamVjdCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5Db250ZW50RmxvdykgeworICAgICAgICAg
ICAgaWYgKCF0aGlzLl9mbG93c0ZvbGRlclRyZWVFbGVtZW50KQorICAgICAgICAgICAgICAgIHRo
aXMuX2Zsb3dzRm9sZGVyVHJlZUVsZW1lbnQgPSBjcmVhdGVGb2xkZXJUcmVlRWxlbWVudC5jYWxs
KHRoaXMsICJmbG93cyIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiRmxvd3MiKSk7CisgICAgICAg
ICAgICByZXR1cm4gdGhpcy5fZmxvd3NGb2xkZXJUcmVlRWxlbWVudDsKKyAgICAgICAgfQorCiAg
ICAgICAgIGlmIChyZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5SZXNv
dXJjZSkgewogICAgICAgICAgICAgdmFyIGZvbGRlck5hbWUgPSB0aGlzLl9mb2xkZXJOYW1lRm9y
UmVzb3VyY2VUeXBlKHJlcHJlc2VudGVkT2JqZWN0LnR5cGUpOwogICAgICAgICAgICAgaWYgKCFm
b2xkZXJOYW1lKQpAQCAtNDg0LDYgKzUzNyw5IEBAIFdlYkluc3BlY3Rvci5GcmFtZVRyZWVFbGVt
ZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgdmFyIG51bWJlck9mTWVkaXVtQ2F0ZWdvcmllcyA9
IDA7CiAgICAgICAgIHZhciBmb3VuZExhcmdlQ2F0ZWdvcnkgPSBmYWxzZTsKIAorICAgICAgICAv
LyBGSVhNRTogVXNlIHRoaXMuX2ZyYW1lLmRvbVRyZWUuZmxvd3NDb3VudCB0byBjb3VudCB0aGUg
bnVtYmVyIG9mIGZsb3dzIGluIGEgZnJhbWUuCisgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjI5MjYKKwogICAgICAgICBpZiAodGhpcy5fZnJhbWUu
Y2hpbGRGcmFtZXMubGVuZ3RoID49IFdlYkluc3BlY3Rvci5GcmFtZVRyZWVFbGVtZW50Lkxhcmdl
Q2hpbGRDb3VudFRocmVzaG9sZCkKICAgICAgICAgICAgIGZvdW5kTGFyZ2VDYXRlZ29yeSA9IHRy
dWU7CiAgICAgICAgIGVsc2UgaWYgKHRoaXMuX2ZyYW1lLmNoaWxkRnJhbWVzLmxlbmd0aCA+PSBX
ZWJJbnNwZWN0b3IuRnJhbWVUcmVlRWxlbWVudC5NZWRpdW1DaGlsZENvdW50VGhyZXNob2xkKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvSW1hZ2VzL0Nv
bnRlbnRGbG93LnN2ZyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0ltYWdl
cy9Db250ZW50Rmxvdy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmYx
ZjNkZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL0ltYWdlcy9Db250ZW50Rmxvdy5zdmcKQEAgLTAsMCArMSw4IEBACis8P3htbCB2ZXJzaW9u
PSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPCEtLSBDb3B5cmlnaHQgwqkgMjAxMyBBZG9iZSBT
eXN0ZW1zIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gLS0+Cis8c3ZnIHZlcnNpb249IjEuMSIg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgMTYgMTYiPgor
ICAgIDxwYXRoIGZpbGw9InJnYigxMTIsIDExMiwgMTEyKSIgZD0iTSAxMy4xNzkgMC43NSBIIDIu
ODIxIGMgLTEuMTQxIDAgLTIuMDcxIDAuOTMxIC0yLjA3MSAyLjA3MSB2IDEwLjM1NyBjIDAgMS4x
NDEgMC45MzEgMi4wNzEgMi4wNzEgMi4wNzEgaCAxMC4zNTcgYyAxLjE0MSAwIDIuMDcxIC0wLjkz
MSAyLjA3MSAtMi4wNzEgViAyLjgyMSBDIDE1LjI1IDEuNjgxIDE0LjMxOSAwLjc1IDEzLjE3OSAw
Ljc1IE0gMTMuMTc5IDEuNzg1IGMgMC41NyAwIDEuMDM1IDAuNDY2IDEuMDM1IDEuMDM2IHYgMTAu
MzU3IGMgMCAwLjU3IC0wLjQ2NSAxLjAzNSAtMS4wMzUgMS4wMzUgSCAyLjgyMSBjIC0wLjU3IDAg
LTEuMDM2IC0wLjQ2NSAtMS4wMzYgLTEuMDM1IFYgMi44MjEgYyAwIC0wLjU3IDAuNDY1IC0xLjAz
NiAxLjAzNiAtMS4wMzYgSCAxMy4xNzkiLz4KKyAgICA8cmVjdCB4PSIyLjY3NiIgeT0iMi45Njci
IGZpbGw9InJnYigxMTIsIDExMiwgMTEyKSIgd2lkdGg9IjQuODU0IiBoZWlnaHQ9IjQuMDk0Ii8+
CisgICAgPHJlY3QgeD0iMi42NzYiIHk9IjguNDk3IiBmaWxsPSJyZ2IoMTEyLCAxMTIsIDExMiki
IHdpZHRoPSIyLjc1NSIgaGVpZ2h0PSI0LjM1Ii8+CisgICAgPHJlY3QgeD0iOC44OTEiIHk9IjIu
OTY3IiBmaWxsPSJyZ2IoMTEyLCAxMTIsIDExMikiIHdpZHRoPSI0LjQxMiIgaGVpZ2h0PSIxMC4x
MDgiLz4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvTWFpbi5odG1sIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTWFp
bi5odG1sCmluZGV4IDczZmUxZTguLmFlOTExMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01haW4uaHRtbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9NYWluLmh0bWwKQEAgLTQ0LDYgKzQ0LDcgQEAKICAgICA8bGluayBy
ZWw9InN0eWxlc2hlZXQiIGhyZWY9IkNvbnRlbnRCcm93c2VyLmNzcyI+CiAgICAgPGxpbmsgcmVs
PSJzdHlsZXNoZWV0IiBocmVmPSJOYXZpZ2F0aW9uU2lkZWJhclBhbmVsLmNzcyI+CiAgICAgPGxp
bmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJSZXNvdXJjZUljb25zLmNzcyI+CisgICAgPGxpbmsg
cmVsPSJzdHlsZXNoZWV0IiBocmVmPSJDb250ZW50Rmxvd0ljb24uY3NzIj4KICAgICA8bGluayBy
ZWw9InN0eWxlc2hlZXQiIGhyZWY9IkZvbGRlckljb24uY3NzIj4KICAgICA8bGluayByZWw9InN0
eWxlc2hlZXQiIGhyZWY9IkNvbnRlbnRWaWV3Q29udGFpbmVyLmNzcyI+CiAgICAgPGxpbmsgcmVs
PSJzdHlsZXNoZWV0IiBocmVmPSJDbHVzdGVyQ29udGVudFZpZXcuY3NzIj4KQEAgLTIzMSw2ICsy
MzIsNyBAQAogICAgIDxzY3JpcHQgc3JjPSJBcHBsaWNhdGlvbkNhY2hlTWFuaWZlc3RUcmVlRWxl
bWVudC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IlRyZWVFbGVtZW50U3RhdHVzQnV0
dG9uLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iSXNzdWVNZXNzYWdlLmpzIj48L3Nj
cmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iQ29udGVudEZsb3dUcmVlRWxlbWVudC5qcyI+PC9zY3Jp
cHQ+CiAgICAgPHNjcmlwdCBzcmM9IkZyYW1lVHJlZUVsZW1lbnQuanMiPjwvc2NyaXB0PgogICAg
IDxzY3JpcHQgc3JjPSJDU1NDb21wbGV0aW9ucy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBz
cmM9IkNTU0tleXdvcmRDb21wbGV0aW9ucy5qcyI+PC9zY3JpcHQ+CkBAIC0yNjQsNiArMjY2LDcg
QEAKICAgICA8c2NyaXB0IHNyYz0iRE9NVHJlZU1hbmFnZXIuanMiPjwvc2NyaXB0PgogICAgIDxz
Y3JpcHQgc3JjPSJET01Ob2RlLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iRE9NVXRp
bGl0aWVzLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iQ29udGVudEZsb3cuanMiPjwv
c2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJET01UcmVlLmpzIj48L3NjcmlwdD4KICAgICA8c2Ny
aXB0IHNyYz0iRE9NVHJlZU91dGxpbmUuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJE
T01UcmVlVXBkYXRlci5qcyI+PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9SZXNvdXJjZVNpZGViYXJQYW5lbC5qcyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Jlc291cmNlU2lkZWJhclBhbmVsLmpzCmluZGV4IDk3
YmYzOWYuLmM0MmU3ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1Jlc291cmNlU2lkZWJhclBhbmVsLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1Jlc291cmNlU2lkZWJhclBhbmVsLmpzCkBAIC02MTAsNiArNjEwLDEz
IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZVNpZGViYXJQYW5lbC5wcm90b3R5cGUgPSB7CiAKICAg
ICBfdHJlZUVsZW1lbnRTZWxlY3RlZDogZnVuY3Rpb24odHJlZUVsZW1lbnQsIHNlbGVjdGVkQnlV
c2VyKQogICAgIHsKKyAgICAgICAgaWYgKHRyZWVFbGVtZW50IGluc3RhbmNlb2YgV2ViSW5zcGVj
dG9yLkNvbnRlbnRGbG93VHJlZUVsZW1lbnQpIHsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBJbXBs
ZW1lbnQgRE9NIHRyZWUgaW5zcGVjdG9yIGZvciBjb250ZW50IGZsb3cgdHJlZSBlbGVtZW50cy4K
KyAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MjI5MjcKKyAgICAgICAgICAgIGNvbnNvbGUubG9nKCJDb250ZW50IEZsb3cgdmlldyBub3QgaW1w
bGVtZW50ZWQiKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCiAgICAgICAgIGlm
ICh0cmVlRWxlbWVudCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5Gb2xkZXJUcmVlRWxlbWVudCkK
ICAgICAgICAgICAgIHJldHVybjsKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>