<?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>201082</bug_id>
          
          <creation_ts>2019-08-23 11:46:38 -0700</creation_ts>
          <short_desc>Web Inspector: replace uses of `Array.prototype.concat` with `Array.prototype.push`</short_desc>
          <delta_ts>2019-08-29 16:57:18 -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>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=201194</see_also>
          <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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Devin Rousso">hi</reporter>
          <assigned_to name="Devin Rousso">hi</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>hi</cc>
    
    <cc>inspector-bugzilla-changes</cc>
    
    <cc>joepeck</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1564535</commentid>
    <comment_count>0</comment_count>
    <who name="Devin Rousso">hi</who>
    <bug_when>2019-08-23 11:46:38 -0700</bug_when>
    <thetext>function bench(name, f, ...args) {
    let start = Date.now();
    let result = f(...args);
    let end = Date.now();
    let duration = end - start;
    console.log(name, duration + &quot;ms&quot;, result);
}

bench(&quot;push&quot;, function() {
    let last = [];
    for (let i = 0; i &lt; 1e6; ++i) {
        last.push(1, 2, 3);
    }
    return last;
});

bench(&quot;concat&quot;, function() {
    let last = [];
    for (let i = 0; i &lt; 1e6; ++i) {
        last = last.concat([1, 2, 3]);
    }
    return last;
});

bench(&quot;concat-cache&quot;, function() {
    let last = [];
    let cache = [1, 2, 3];
    for (let i = 0; i &lt; 1e6; ++i) {
        last = last.concat(cache);
    }
    return last;
});</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1564620</commentid>
    <comment_count>1</comment_count>
      <attachid>377158</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2019-08-23 15:03:59 -0700</bug_when>
    <thetext>Created attachment 377158
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1565447</commentid>
    <comment_count>2</comment_count>
      <attachid>377158</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2019-08-27 12:08:16 -0700</bug_when>
    <thetext>Comment on attachment 377158
Patch

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

Awesome! Some comments

&gt; Source/WebInspectorUI/ChangeLog:8
&gt; +        `x = x.concat(y)` is MUCH slower than `x.push(...y)`.

Maybe we should create:

    Object.defineProperty(Array.prototype, &quot;pushArray&quot;,
    {
        value(array)
        {
            for (let i = 0, len = array.length; i &lt; len; ++i)
                this.push(array[i]);
        }
    });

    Object.defineProperty(Array.prototype, &quot;pushSpread&quot;,
    {
        value(iterable)
        {
            for (let x of iterable)
                this.push(x);
        }
    });

Which seems ~twice as fast as `x.push(...y)` by avoiding unnecessary allocations (and probably GC pressure) and more so if `y` is larger.

Names up for grab (pushArray, pushSpread).

&gt; Source/WebInspectorUI/UserInterface/Base/Utilities.js:-693
&gt; -Object.defineProperty(Array.prototype, &quot;keySet&quot;,

Removing keySet should be its own patch.

&gt; Source/WebInspectorUI/UserInterface/Views/HeapAllocationsTimelineView.js:220
&gt; -            components = components.concat(this._contentViewContainer.currentContentView.selectionPathComponents);
&gt; +            components.append(...this._contentViewContainer.currentContentView.selectionPathComponents);

Why is this one `append` and not push?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1565448</commentid>
    <comment_count>3</comment_count>
      <attachid>377158</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2019-08-27 12:12:18 -0700</bug_when>
    <thetext>Comment on attachment 377158
Patch

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

&gt;&gt; Source/WebInspectorUI/ChangeLog:8
&gt;&gt; +        `x = x.concat(y)` is MUCH slower than `x.push(...y)`.
&gt; 
&gt; Maybe we should create:
&gt; 
&gt;     Object.defineProperty(Array.prototype, &quot;pushArray&quot;,
&gt;     {
&gt;         value(array)
&gt;         {
&gt;             for (let i = 0, len = array.length; i &lt; len; ++i)
&gt;                 this.push(array[i]);
&gt;         }
&gt;     });
&gt; 
&gt;     Object.defineProperty(Array.prototype, &quot;pushSpread&quot;,
&gt;     {
&gt;         value(iterable)
&gt;         {
&gt;             for (let x of iterable)
&gt;                 this.push(x);
&gt;         }
&gt;     });
&gt; 
&gt; Which seems ~twice as fast as `x.push(...y)` by avoiding unnecessary allocations (and probably GC pressure) and more so if `y` is larger.
&gt; 
&gt; Names up for grab (pushArray, pushSpread).

How about `pushIterable` (second implementation)?

&gt;&gt; Source/WebInspectorUI/UserInterface/Views/HeapAllocationsTimelineView.js:220
&gt;&gt; +            components.append(...this._contentViewContainer.currentContentView.selectionPathComponents);
&gt; 
&gt; Why is this one `append` and not push?

All the WTF collections use `append`, and I keep mixing them up.

(╯°□°）╯︵ ┻━┻</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1565499</commentid>
    <comment_count>4</comment_count>
      <attachid>377374</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2019-08-27 13:18:06 -0700</bug_when>
    <thetext>Created attachment 377374
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1566291</commentid>
    <comment_count>5</comment_count>
      <attachid>377374</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2019-08-29 11:16:13 -0700</bug_when>
    <thetext>Comment on attachment 377374
Patch

Nice! r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1566373</commentid>
    <comment_count>6</comment_count>
      <attachid>377374</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-08-29 13:51:07 -0700</bug_when>
    <thetext>Comment on attachment 377374
Patch

Rejecting attachment 377374 from commit-queue.

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

Logging in as commit-queue@webkit.org...
Fetching: https://bugs.webkit.org/attachment.cgi?id=377374&amp;action=edit
Fetching: https://bugs.webkit.org/show_bug.cgi?id=201082&amp;ctype=xml&amp;excludefield=attachmentdata
Processing 1 patch from 1 bug.
Processing patch 377374 from bug 201082.
Fetching: https://bugs.webkit.org/attachment.cgi?id=377374
Failed to run &quot;[u&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/svn-apply&apos;, &apos;--force&apos;, &apos;--reviewer&apos;, u&apos;Joseph Pecoraro&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

Parsed 31 diffs from patch file(s).
patching file Source/WebInspectorUI/ChangeLog
Hunk #1 succeeded at 1 with fuzz 3.
patching file Source/WebInspectorUI/UserInterface/Base/Utilities.js
Hunk #1 FAILED at 690.
1 out of 1 hunk FAILED -- saving rejects to file Source/WebInspectorUI/UserInterface/Base/Utilities.js.rej
patching file Source/WebInspectorUI/UserInterface/Controllers/DOMDebuggerManager.js
patching file Source/WebInspectorUI/UserInterface/Controllers/JavaScriptRuntimeCompletionProvider.js
Hunk #1 succeeded at 268 (offset 6 lines).
patching file Source/WebInspectorUI/UserInterface/Models/CSSCompletions.js
patching file Source/WebInspectorUI/UserInterface/Models/CSSKeywordCompletions.js
patching file Source/WebInspectorUI/UserInterface/Models/Canvas.js
patching file Source/WebInspectorUI/UserInterface/Models/DOMNodeStyles.js
patching file Source/WebInspectorUI/UserInterface/Models/TimelineRecording.js
patching file Source/WebInspectorUI/UserInterface/Protocol/RemoteObject.js
patching file Source/WebInspectorUI/UserInterface/Views/ConsoleMessageView.js
patching file Source/WebInspectorUI/UserInterface/Views/ContentBrowser.js
patching file Source/WebInspectorUI/UserInterface/Views/DOMTreeElement.js
patching file Source/WebInspectorUI/UserInterface/Views/DataGridNode.js
patching file Source/WebInspectorUI/UserInterface/Views/HeapAllocationsTimelineView.js
patching file Source/WebInspectorUI/UserInterface/Views/IndexedDatabaseObjectStoreContentView.js
patching file Source/WebInspectorUI/UserInterface/Views/NavigationItem.js
patching file Source/WebInspectorUI/UserInterface/Views/ObjectTreeView.js
patching file Source/WebInspectorUI/UserInterface/Views/OpenResourceDialog.js
patching file Source/WebInspectorUI/UserInterface/Views/OverviewTimelineView.js
patching file Source/WebInspectorUI/UserInterface/Views/ResourceCollectionContentView.js
patching file Source/WebInspectorUI/UserInterface/Views/ResourceHeadersContentView.js
patching file Source/WebInspectorUI/UserInterface/Views/ResourceSecurityContentView.js
patching file Source/WebInspectorUI/UserInterface/Views/ScriptClusterTimelineView.js
patching file Source/WebInspectorUI/UserInterface/Views/ScrubberNavigationItem.js
patching file Source/WebInspectorUI/UserInterface/Views/SpreadsheetStyleProperty.js
patching file Source/WebInspectorUI/UserInterface/Views/TreeOutline.js
patching file Source/WebInspectorUI/UserInterface/Views/View.js
patching file LayoutTests/ChangeLog
Hunk #1 succeeded at 1 with fuzz 3.
patching file LayoutTests/inspector/unit-tests/array-utilities-expected.txt
Hunk #1 FAILED at 132.
1 out of 1 hunk FAILED -- saving rejects to file LayoutTests/inspector/unit-tests/array-utilities-expected.txt.rej
patching file LayoutTests/inspector/unit-tests/array-utilities.html
Hunk #1 succeeded at 277 with fuzz 2 (offset -27 lines).

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

Full output: https://webkit-queues.webkit.org/results/12981439</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1566411</commentid>
    <comment_count>7</comment_count>
      <attachid>377632</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2019-08-29 15:15:38 -0700</bug_when>
    <thetext>Created attachment 377632
Patch

I talked with Joe offline, and we both agreed that `pushAll` was a better name :D</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1566466</commentid>
    <comment_count>8</comment_count>
      <attachid>377632</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-08-29 16:56:19 -0700</bug_when>
    <thetext>Comment on attachment 377632
Patch

Clearing flags on attachment: 377632

Committed r249301: &lt;https://trac.webkit.org/changeset/249301&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1566467</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-08-29 16:56:20 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1566469</commentid>
    <comment_count>10</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-08-29 16:57:18 -0700</bug_when>
    <thetext>&lt;rdar://problem/54861391&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>377158</attachid>
            <date>2019-08-23 15:03:59 -0700</date>
            <delta_ts>2019-08-27 13:18:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201082-20190823150358.patch</filename>
            <type>text/plain</type>
            <size>41421</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IGJlOWMxMGMzMzc5NjcwODY3MWM5M2U2MWY4NDVk
MmQ5YzE0Y2FiNTEuLmYxYWI5YWUxYTA4MGMzNjRhOTYxNzI1ZTc1MDQwMzI5MjRhYzQwYmIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDczIEBACisyMDE5LTA4LTIzICBEZXZp
biBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBy
ZXBsYWNlIHVzZXMgb2YgYEFycmF5LnByb3RvdHlwZS5jb25jYXRgIHdpdGggYEFycmF5LnByb3Rv
dHlwZS5wdXNoYAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjAxMDgyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgYHggPSB4LmNvbmNhdCh5KWAgaXMgTVVDSCBzbG93ZXIgdGhhbiBgeC5wdXNoKC4uLnkpYC4K
KworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvRE9NRGVidWdnZXJNYW5hZ2Vy
LmpzOgorICAgICAgICAoV0kuRE9NRGVidWdnZXJNYW5hZ2VyLnByb3RvdHlwZS5nZXQgZG9tQnJl
YWtwb2ludHMpOgorICAgICAgICAoV0kuRE9NRGVidWdnZXJNYW5hZ2VyLnByb3RvdHlwZS5kb21C
cmVha3BvaW50c0luU3VidHJlZSk6CisgICAgICAgICogVXNlckludGVyZmFjZS9Nb2RlbHMvQ1NT
Q29tcGxldGlvbnMuanM6CisgICAgICAgIChXSS5DU1NDb21wbGV0aW9ucyk6CisgICAgICAgICog
VXNlckludGVyZmFjZS9Nb2RlbHMvQ1NTS2V5d29yZENvbXBsZXRpb25zLmpzOgorICAgICAgICAo
V0kuQ1NTS2V5d29yZENvbXBsZXRpb25zLmZvclByb3BlcnR5KToKKyAgICAgICAgKFdJLkNTU0tl
eXdvcmRDb21wbGV0aW9ucy5mb3JQcm9wZXJ0eS5hZGRLZXl3b3Jkc0Zvck5hbWUpOgorICAgICAg
ICAoV0kuQ1NTS2V5d29yZENvbXBsZXRpb25zLmZvckZ1bmN0aW9uKToKKyAgICAgICAgKiBVc2Vy
SW50ZXJmYWNlL01vZGVscy9ET01Ob2RlU3R5bGVzLmpzOgorICAgICAgICAoV0kuRE9NTm9kZVN0
eWxlcy5wcm90b3R5cGUuX3VwZGF0ZVN0eWxlQ2FzY2FkZSk6CisgICAgICAgIChXSS5ET01Ob2Rl
U3R5bGVzLnByb3RvdHlwZS5fY29sbGVjdFN0eWxlc0luQ2FzY2FkZU9yZGVyKToKKyAgICAgICAg
KiBVc2VySW50ZXJmYWNlL01vZGVscy9UaW1lbGluZVJlY29yZGluZy5qczoKKyAgICAgICAgKFdJ
LlRpbWVsaW5lUmVjb3JkaW5nLnByb3RvdHlwZS5nZXQgc291cmNlQ29kZVRpbWVsaW5lcyk6Cisg
ICAgICAgIChXSS5UaW1lbGluZVJlY29yZGluZy5wcm90b3R5cGUuaW5pdGlhbGl6ZUNhbGxpbmdD
b250ZXh0VHJlZXMpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvUHJvdG9jb2wvUmVtb3RlT2Jq
ZWN0LmpzOgorICAgICAgICAoV0kuUmVtb3RlT2JqZWN0LnByb3RvdHlwZS5fZ2V0UHJvcGVydHlE
ZXNjcmlwdG9yc1Jlc29sdmVyKToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnNv
bGVNZXNzYWdlVmlldy5qczoKKyAgICAgICAgKFdJLkNvbnNvbGVNZXNzYWdlVmlldy5wcm90b3R5
cGUuX2FwcGVuZE1lc3NhZ2VUZXh0QW5kQXJndW1lbnRzKToKKyAgICAgICAgKiBVc2VySW50ZXJm
YWNlL1ZpZXdzL0NvbnRlbnRCcm93c2VyLmpzOgorICAgICAgICAoV0kuQ29udGVudEJyb3dzZXIu
cHJvdG90eXBlLmdldCBjdXJyZW50UmVwcmVzZW50ZWRPYmplY3RzKToKKyAgICAgICAgKiBVc2Vy
SW50ZXJmYWNlL1ZpZXdzL0RPTVRyZWVFbGVtZW50LmpzOgorICAgICAgICAoV0kuRE9NVHJlZUVs
ZW1lbnQucHJvdG90eXBlLl92aXNpYmxlQ2hpbGRyZW4pOgorICAgICAgICAqIFVzZXJJbnRlcmZh
Y2UvVmlld3MvRGF0YUdyaWROb2RlLmpzOgorICAgICAgICAoV0kuRGF0YUdyaWROb2RlLnByb3Rv
dHlwZS5nZXQgZmlsdGVyYWJsZURhdGEpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3Mv
SGVhcEFsbG9jYXRpb25zVGltZWxpbmVWaWV3LmpzOgorICAgICAgICAoV0kuSGVhcEFsbG9jYXRp
b25zVGltZWxpbmVWaWV3LnByb3RvdHlwZS5nZXQgc2VsZWN0aW9uUGF0aENvbXBvbmVudHMpOgor
ICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvSW5kZXhlZERhdGFiYXNlT2JqZWN0U3RvcmVD
b250ZW50Vmlldy5qczoKKyAgICAgICAgKFdJLkluZGV4ZWREYXRhYmFzZU9iamVjdFN0b3JlQ29u
dGVudFZpZXcucHJvdG90eXBlLl9mZXRjaE1vcmVEYXRhLnByb2Nlc3NFbnRyaWVzKToKKyAgICAg
ICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL05hdmlnYXRpb25JdGVtLmpzOgorICAgICAgICAoV0ku
TmF2aWdhdGlvbkl0ZW0ucHJvdG90eXBlLmdldCBfY2xhc3NOYW1lcyk6CisgICAgICAgICogVXNl
ckludGVyZmFjZS9WaWV3cy9PYmplY3RUcmVlVmlldy5qczoKKyAgICAgICAgKFdJLk9iamVjdFRy
ZWVWaWV3LnByb3RvdHlwZS5fdXBkYXRlUHJvcGVydGllcyk6CisgICAgICAgICogVXNlckludGVy
ZmFjZS9WaWV3cy9PdmVydmlld1RpbWVsaW5lVmlldy5qczoKKyAgICAgICAgKFdJLk92ZXJ2aWV3
VGltZWxpbmVWaWV3LnByb3RvdHlwZS5fbG9hZEV4aXN0aW5nUmVjb3Jkcyk6CisgICAgICAgICog
VXNlckludGVyZmFjZS9WaWV3cy9SZXNvdXJjZUNvbGxlY3Rpb25Db250ZW50Vmlldy5qczoKKyAg
ICAgICAgKFdJLlJlc291cmNlQ29sbGVjdGlvbkNvbnRlbnRWaWV3LnByb3RvdHlwZS5nZXQgbmF2
aWdhdGlvbkl0ZW1zKToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1Jlc291cmNlSGVh
ZGVyc0NvbnRlbnRWaWV3LmpzOgorICAgICAgICAoV0kuUmVzb3VyY2VIZWFkZXJzQ29udGVudFZp
ZXcucHJvdG90eXBlLl9wZXJmb21TZWFyY2hPbktleVZhbHVlUGFpcnMpOgorICAgICAgICAqIFVz
ZXJJbnRlcmZhY2UvVmlld3MvUmVzb3VyY2VTZWN1cml0eUNvbnRlbnRWaWV3LmpzOgorICAgICAg
ICAoV0kuUmVzb3VyY2VTZWN1cml0eUNvbnRlbnRWaWV3LnByb3RvdHlwZS5fcGVyZm9tU2VhcmNo
T25LZXlWYWx1ZVBhaXJzKToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1NjcmlwdENs
dXN0ZXJUaW1lbGluZVZpZXcuanM6CisgICAgICAgIChXSS5TY3JpcHRDbHVzdGVyVGltZWxpbmVW
aWV3LnByb3RvdHlwZS5nZXQgc2VsZWN0aW9uUGF0aENvbXBvbmVudHMpOgorICAgICAgICAqIFVz
ZXJJbnRlcmZhY2UvVmlld3MvU2NydWJiZXJOYXZpZ2F0aW9uSXRlbS5qczoKKyAgICAgICAgKFdJ
LlNjcnViYmVyTmF2aWdhdGlvbkl0ZW0ucHJvdG90eXBlLmdldCBhZGRpdGlvbmFsQ2xhc3NOYW1l
cyk6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9TcHJlYWRzaGVldFN0eWxlUHJvcGVy
dHkuanM6CisgICAgICAgIChXSS5TcHJlYWRzaGVldFN0eWxlUHJvcGVydHkucHJvdG90eXBlLl9h
ZGRWYXJpYWJsZVRva2Vucyk6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9UcmVlT3V0
bGluZS5qczoKKyAgICAgICAgKFdJLlRyZWVPdXRsaW5lLnByb3RvdHlwZS5zZWxmT3JEZXNjZW5k
YW50KToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1ZpZXcuanM6CisgICAgICAgIChX
SS5WaWV3Ll92aXNpdFZpZXdUcmVlRm9yTGF5b3V0KToKKworICAgICAgICAqIFVzZXJJbnRlcmZh
Y2UvQmFzZS9VdGlsaXRpZXMuanM6CisgICAgICAgIChBcnJheS5wcm90b3R5cGUua2V5U2V0KTog
RGVsZXRlZC4KKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0NvZGVNaXJyb3JD
b21wbGV0aW9uQ29udHJvbGxlci5qczoKKyAgICAgICAgKFdJLkNvZGVNaXJyb3JDb21wbGV0aW9u
Q29udHJvbGxlci5wcm90b3R5cGUuX2dlbmVyYXRlSmF2YVNjcmlwdENvbXBsZXRpb25zKToKKyAg
ICAgICAgKFdJLkNvZGVNaXJyb3JDb21wbGV0aW9uQ29udHJvbGxlci5wcm90b3R5cGUuX2dlbmVy
YXRlSmF2YVNjcmlwdENvbXBsZXRpb25zLm1hdGNoS2V5d29yZHMpOgorICAgICAgICAqIFVzZXJJ
bnRlcmZhY2UvQ29udHJvbGxlcnMvSmF2YVNjcmlwdFJ1bnRpbWVDb21wbGV0aW9uUHJvdmlkZXIu
anM6CisgICAgICAgIChXSS5KYXZhU2NyaXB0UnVudGltZUNvbXBsZXRpb25Qcm92aWRlci5jb21w
bGV0aW9uQ29udHJvbGxlckNvbXBsZXRpb25zTmVlZGVkLnJlY2VpdmVkUHJvcGVydHlOYW1lcyk6
CisgICAgICAgIFJlbW92ZSBgQXJyYXkucHJvdG90eXBlLmtleVNldGAgaW4gZmF2b3Igb2YgdXNp
bmcgYFNldGBzLgorCiAyMDE5LTA4LTIyICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNv
bT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBDb25zb2xlOiBhdXRvbWF0aWNhbGx5IHNlbGVj
dCB0aGUgIkV2YWx1YXRpb25zIiBmaWx0ZXIgd2hlbmV2ZXIgcnVubmluZyBjb21tYW5kcwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9VdGlsaXRp
ZXMuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL1V0aWxpdGll
cy5qcwppbmRleCBkZGU5ZWViM2FlOGY0MWQ0YjEyZGRhN2VkNGE0YTY0OTY5ZmI4ZDg0Li43NGJl
NDIxNjg3Zjk1YjE5NjAzMDk3MjRjOTJkYzhmNjEwY2IzZmUxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL1V0aWxpdGllcy5qcworKysgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL1V0aWxpdGllcy5qcwpAQCAtNjkw
LDE3ICs2OTAsNiBAQCBPYmplY3QuZGVmaW5lUHJvcGVydHkoQXJyYXkucHJvdG90eXBlLCAiaW5z
ZXJ0QXRJbmRleCIsCiAgICAgfQogfSk7CiAKLU9iamVjdC5kZWZpbmVQcm9wZXJ0eShBcnJheS5w
cm90b3R5cGUsICJrZXlTZXQiLAotewotICAgIHZhbHVlKCkKLSAgICB7Ci0gICAgICAgIGxldCBr
ZXlzID0gT2JqZWN0LmNyZWF0ZShudWxsKTsKLSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0
aGlzLmxlbmd0aDsgKytpKQotICAgICAgICAgICAga2V5c1t0aGlzW2ldXSA9IHRydWU7Ci0gICAg
ICAgIHJldHVybiBrZXlzOwotICAgIH0KLX0pOwotCiBPYmplY3QuZGVmaW5lUHJvcGVydHkoQXJy
YXkucHJvdG90eXBlLCAicGFydGl0aW9uIiwKIHsKICAgICB2YWx1ZShjYWxsYmFjaykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0Nv
ZGVNaXJyb3JDb21wbGV0aW9uQ29udHJvbGxlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0NvZGVNaXJyb3JDb21wbGV0aW9uQ29udHJvbGxlci5q
cwppbmRleCA3Nzc0ZjFjYmE3NjcyMWI3NWZiMWFiMDc0OTM0ZTI1NTgzNWE0ZGJkLi5jOTRhNzVh
OTY3ZjYzZDg1ZTdmY2VmMjk1YTlkOWNhNTg0YmE3YzMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9Db2RlTWlycm9yQ29tcGxldGlv
bkNvbnRyb2xsZXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Q29udHJvbGxlcnMvQ29kZU1pcnJvckNvbXBsZXRpb25Db250cm9sbGVyLmpzCkBAIC02NTQsMzYg
KzY1NCwzOCBAQCBXSS5Db2RlTWlycm9yQ29tcGxldGlvbkNvbnRyb2xsZXIgPSBjbGFzcyBDb2Rl
TWlycm9yQ29tcGxldGlvbkNvbnRyb2xsZXIgZXh0ZW5kcwogICAgICAgICAvLyBGSVhNRTogSW5j
bHVkZSBtb2R1bGUga2V5d29yZHMgaWYgd2Uga25vdyB0aGlzIGlzIGEgbW9kdWxlIGVudmlyb25t
ZW50LgogICAgICAgICAvLyB2YXIgbW9kdWxlS2V5d29yZHMgPSBbImRlZmF1bHQiLCAiZXhwb3J0
IiwgImltcG9ydCJdOwogCi0gICAgICAgIHZhciBhbGxLZXl3b3JkcyA9IFsKKyAgICAgICAgY29u
c3QgYWxsS2V5d29yZHMgPSBbCiAgICAgICAgICAgICAiYnJlYWsiLCAiY2FzZSIsICJjYXRjaCIs
ICJjbGFzcyIsICJjb25zdCIsICJjb250aW51ZSIsICJkZWJ1Z2dlciIsICJkZWZhdWx0IiwKICAg
ICAgICAgICAgICJkZWxldGUiLCAiZG8iLCAiZWxzZSIsICJleHRlbmRzIiwgImZhbHNlIiwgImZp
bmFsbHkiLCAiZm9yIiwgImZ1bmN0aW9uIiwKICAgICAgICAgICAgICJpZiIsICJpbiIsICJJbmZp
bml0eSIsICJpbnN0YW5jZW9mIiwgImxldCIsICJOYU4iLCAibmV3IiwgIm51bGwiLCAib2YiLAog
ICAgICAgICAgICAgInJldHVybiIsICJzdGF0aWMiLCAic3VwZXIiLCAic3dpdGNoIiwgInRoaXMi
LCAidGhyb3ciLCAidHJ1ZSIsICJ0cnkiLAogICAgICAgICAgICAgInR5cGVvZiIsICJ1bmRlZmlu
ZWQiLCAidmFyIiwgInZvaWQiLCAid2hpbGUiLCAid2l0aCIsICJ5aWVsZCIKICAgICAgICAgXTsK
LSAgICAgICAgdmFyIHZhbHVlS2V5d29yZHMgPSBbImZhbHNlIiwgIkluZmluaXR5IiwgIk5hTiIs
ICJudWxsIiwgInRoaXMiLCAidHJ1ZSIsICJ1bmRlZmluZWQiLCAiZ2xvYmFsVGhpcyJdOworICAg
ICAgICBjb25zdCB2YWx1ZUtleXdvcmRzID0gWyJmYWxzZSIsICJJbmZpbml0eSIsICJOYU4iLCAi
bnVsbCIsICJ0aGlzIiwgInRydWUiLCAidW5kZWZpbmVkIiwgImdsb2JhbFRoaXMiXTsKIAotICAg
ICAgICB2YXIgYWxsb3dlZEtleXdvcmRzSW5zaWRlQmxvY2tzID0gYWxsS2V5d29yZHMua2V5U2V0
KCk7Ci0gICAgICAgIHZhciBhbGxvd2VkS2V5d29yZHNXaGVuRGVjbGFyaW5nVmFyaWFibGUgPSB2
YWx1ZUtleXdvcmRzLmtleVNldCgpOwotICAgICAgICB2YXIgYWxsb3dlZEtleXdvcmRzSW5zaWRl
UGFyZW50aGVzaXMgPSB2YWx1ZUtleXdvcmRzLmNvbmNhdChbImNsYXNzIiwgImZ1bmN0aW9uIl0p
LmtleVNldCgpOwotICAgICAgICB2YXIgYWxsb3dlZEtleXdvcmRzSW5zaWRlQnJhY2tldHMgPSBh
bGxvd2VkS2V5d29yZHNJbnNpZGVQYXJlbnRoZXNpczsKLSAgICAgICAgdmFyIGFsbG93ZWRLZXl3
b3Jkc09ubHlJbnNpZGVTd2l0Y2ggPSBbImNhc2UiLCAiZGVmYXVsdCJdLmtleVNldCgpOworICAg
ICAgICBjb25zdCBhbGxvd2VkS2V5d29yZHNJbnNpZGVCbG9ja3MgPSBuZXcgU2V0KGFsbEtleXdv
cmRzKTsKKyAgICAgICAgY29uc3QgYWxsb3dlZEtleXdvcmRzV2hlbkRlY2xhcmluZ1ZhcmlhYmxl
ID0gbmV3IFNldCh2YWx1ZUtleXdvcmRzKTsKKyAgICAgICAgY29uc3QgYWxsb3dlZEtleXdvcmRz
SW5zaWRlUGFyZW50aGVzaXMgPSBuZXcgU2V0KHZhbHVlS2V5d29yZHMuY29uY2F0KFsiY2xhc3Mi
LCAiZnVuY3Rpb24iXSkpOworICAgICAgICBjb25zdCBhbGxvd2VkS2V5d29yZHNJbnNpZGVCcmFj
a2V0cyA9IGFsbG93ZWRLZXl3b3Jkc0luc2lkZVBhcmVudGhlc2lzOworICAgICAgICBjb25zdCBh
bGxvd2VkS2V5d29yZHNPbmx5SW5zaWRlU3dpdGNoID0gbmV3IFNldChbImNhc2UiLCAiZGVmYXVs
dCJdKTsKIAogICAgICAgICBmdW5jdGlvbiBtYXRjaEtleXdvcmRzKGtleXdvcmRzKQogICAgICAg
ICB7Ci0gICAgICAgICAgICBtYXRjaGluZ1dvcmRzID0gbWF0Y2hpbmdXb3Jkcy5jb25jYXQoa2V5
d29yZHMuZmlsdGVyKGZ1bmN0aW9uKHdvcmQpIHsKLSAgICAgICAgICAgICAgICBpZiAoIWluc2lk
ZVN3aXRjaCAmJiB3b3JkIGluIGFsbG93ZWRLZXl3b3Jkc09ubHlJbnNpZGVTd2l0Y2gpCi0gICAg
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgICAgICBpZiAoaW5zaWRl
QmxvY2sgJiYgISh3b3JkIGluIGFsbG93ZWRLZXl3b3Jkc0luc2lkZUJsb2NrcykpCi0gICAgICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgICAgICBpZiAoaW5zaWRlQnJh
Y2tldHMgJiYgISh3b3JkIGluIGFsbG93ZWRLZXl3b3Jkc0luc2lkZUJyYWNrZXRzKSkKLSAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgICAgIGlmIChpbnNpZGVQ
YXJlbnRoZXNpcyAmJiAhKHdvcmQgaW4gYWxsb3dlZEtleXdvcmRzSW5zaWRlUGFyZW50aGVzaXMp
KQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAgICAgaWYg
KGRlY2xhcmluZ1ZhcmlhYmxlICYmICEod29yZCBpbiBhbGxvd2VkS2V5d29yZHNXaGVuRGVjbGFy
aW5nVmFyaWFibGUpKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuIHdvcmQuc3RhcnRzV2l0aChwcmVmaXgpOwotICAgICAgICAgICAgfSkp
OworICAgICAgICAgICAgZm9yIChsZXQga2V5d29yZCBvZiBrZXl3b3JkcykgeworICAgICAgICAg
ICAgICAgIGlmICghaW5zaWRlU3dpdGNoICYmIGFsbG93ZWRLZXl3b3Jkc09ubHlJbnNpZGVTd2l0
Y2guaGFzKGtleXdvcmQpKQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAg
ICAgICAgICBpZiAoaW5zaWRlQmxvY2sgJiYgIWFsbG93ZWRLZXl3b3Jkc0luc2lkZUJsb2Nrcy5o
YXMoa2V5d29yZCkpCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAg
ICAgIGlmIChpbnNpZGVCcmFja2V0cyAmJiAhYWxsb3dlZEtleXdvcmRzSW5zaWRlQnJhY2tldHMu
aGFzKGtleXdvcmQpKQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAg
ICAgICBpZiAoaW5zaWRlUGFyZW50aGVzaXMgJiYgIWFsbG93ZWRLZXl3b3Jkc0luc2lkZVBhcmVu
dGhlc2lzLmhhcyhrZXl3b3JkKSkKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAg
ICAgICAgICAgICAgaWYgKGRlY2xhcmluZ1ZhcmlhYmxlICYmICFhbGxvd2VkS2V5d29yZHNXaGVu
RGVjbGFyaW5nVmFyaWFibGUuaGFzKGtleXdvcmQpKQorICAgICAgICAgICAgICAgICAgICBjb250
aW51ZTsKKyAgICAgICAgICAgICAgICBpZiAoIWtleXdvcmQuc3RhcnRzV2l0aChwcmVmaXgpKQor
ICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICBtYXRjaGluZ1dv
cmRzLnB1c2goa2V5d29yZCk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KIAogICAgICAgICBm
dW5jdGlvbiBtYXRjaFZhcmlhYmxlcygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9ET01EZWJ1Z2dlck1hbmFnZXIuanMgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9ET01EZWJ1Z2dlck1h
bmFnZXIuanMKaW5kZXggZTAyNzk0NTdiNTIzNzBlNWQ1YjhmMTljYTc0MGU4NTYxODcxMjU1Yy4u
ZTBlMGU5MzNiMTQyZjZhMTIzMWI0ZmU3OTg2OTBmNDJmMWI2NjAyMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvRE9NRGVidWdnZXJN
YW5hZ2VyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRy
b2xsZXJzL0RPTURlYnVnZ2VyTWFuYWdlci5qcwpAQCAtMjQ2LDkgKzI0NiwxMCBAQCBXSS5ET01E
ZWJ1Z2dlck1hbmFnZXIgPSBjbGFzcyBET01EZWJ1Z2dlck1hbmFnZXIgZXh0ZW5kcyBXSS5PYmpl
Y3QKICAgICAgICAgbGV0IGZyYW1lcyA9IFttYWluRnJhbWVdOwogICAgICAgICB3aGlsZSAoZnJh
bWVzLmxlbmd0aCkgewogICAgICAgICAgICAgbGV0IGZyYW1lID0gZnJhbWVzLnNoaWZ0KCk7CisK
ICAgICAgICAgICAgIGxldCBkb21CcmVha3BvaW50Tm9kZUlkZW50aWZpZXJNYXAgPSB0aGlzLl9k
b21CcmVha3BvaW50RnJhbWVJZGVudGlmaWVyTWFwLmdldChmcmFtZS5pZCk7CiAgICAgICAgICAg
ICBpZiAoZG9tQnJlYWtwb2ludE5vZGVJZGVudGlmaWVyTWFwKQotICAgICAgICAgICAgICAgIHJl
c29sdmVkQnJlYWtwb2ludHMgPSByZXNvbHZlZEJyZWFrcG9pbnRzLmNvbmNhdChBcnJheS5mcm9t
KGRvbUJyZWFrcG9pbnROb2RlSWRlbnRpZmllck1hcC52YWx1ZXMoKSkpOworICAgICAgICAgICAg
ICAgIHJlc29sdmVkQnJlYWtwb2ludHMucHVzaCguLi5kb21CcmVha3BvaW50Tm9kZUlkZW50aWZp
ZXJNYXAudmFsdWVzKCkpOwogCiAgICAgICAgICAgICBmcmFtZXMucHVzaCguLi5mcmFtZS5jaGls
ZEZyYW1lQ29sbGVjdGlvbik7CiAgICAgICAgIH0KQEAgLTI5NCw4ICsyOTUsOCBAQCBXSS5ET01E
ZWJ1Z2dlck1hbmFnZXIgPSBjbGFzcyBET01EZWJ1Z2dlck1hbmFnZXIgZXh0ZW5kcyBXSS5PYmpl
Y3QKICAgICAgICAgICAgIHdoaWxlIChjaGlsZHJlbi5sZW5ndGgpIHsKICAgICAgICAgICAgICAg
ICBsZXQgY2hpbGQgPSBjaGlsZHJlbi5wb3AoKTsKICAgICAgICAgICAgICAgICBpZiAoY2hpbGQu
Y2hpbGRyZW4pCi0gICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gY2hpbGRyZW4uY29uY2F0
KGNoaWxkLmNoaWxkcmVuKTsKLSAgICAgICAgICAgICAgICBicmVha3BvaW50cyA9IGJyZWFrcG9p
bnRzLmNvbmNhdCh0aGlzLmRvbUJyZWFrcG9pbnRzRm9yTm9kZShjaGlsZCkpOworICAgICAgICAg
ICAgICAgICAgICBjaGlsZHJlbi5wdXNoKC4uLmNoaWxkLmNoaWxkcmVuKTsKKyAgICAgICAgICAg
ICAgICBicmVha3BvaW50cy5wdXNoKC4uLnRoaXMuZG9tQnJlYWtwb2ludHNGb3JOb2RlKGNoaWxk
KSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvSmF2YVNjcmlwdFJ1bnRpbWVDb21w
bGV0aW9uUHJvdmlkZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9D
b250cm9sbGVycy9KYXZhU2NyaXB0UnVudGltZUNvbXBsZXRpb25Qcm92aWRlci5qcwppbmRleCBh
NDdlN2RhMjFhYjJkOTVhODNiOWY1YWIxMmM3ZmQ3YmNhOTA2ZTI4Li4zMzllZmY1M2IxM2FlMWU0
NDAyZjkxNGNjNGUyMjE0YzQ0ZWFhNWFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9KYXZhU2NyaXB0UnVudGltZUNvbXBsZXRpb25Q
cm92aWRlci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250
cm9sbGVycy9KYXZhU2NyaXB0UnVudGltZUNvbXBsZXRpb25Qcm92aWRlci5qcwpAQCAtMjU0LDcg
KzI1NCw3IEBAIFdJLkphdmFTY3JpcHRSdW50aW1lQ29tcGxldGlvblByb3ZpZGVyID0gY2xhc3Mg
SmF2YVNjcmlwdFJ1bnRpbWVDb21wbGV0aW9uUHJvdmlkCiAgICAgICAgICAgICB9CiAKICAgICAg
ICAgICAgIHZhciBjb21wbGV0aW9ucyA9IGRlZmF1bHRDb21wbGV0aW9uczsKLSAgICAgICAgICAg
IHZhciBrbm93bkNvbXBsZXRpb25zID0gY29tcGxldGlvbnMua2V5U2V0KCk7CisgICAgICAgICAg
ICBsZXQga25vd25Db21wbGV0aW9ucyA9IG5ldyBTZXQoY29tcGxldGlvbnMpOwogCiAgICAgICAg
ICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BlcnR5TmFtZXMubGVuZ3RoOyArK2kpIHsKICAg
ICAgICAgICAgICAgICB2YXIgcHJvcGVydHkgPSBwcm9wZXJ0eU5hbWVzW2ldOwpAQCAtMjY3LDEx
ICsyNjcsMTEgQEAgV0kuSmF2YVNjcmlwdFJ1bnRpbWVDb21wbGV0aW9uUHJvdmlkZXIgPSBjbGFz
cyBKYXZhU2NyaXB0UnVudGltZUNvbXBsZXRpb25Qcm92aWQKICAgICAgICAgICAgICAgICAgICAg
ICAgIHByb3BlcnR5ID0gcXVvdGVVc2VkICsgcHJvcGVydHkuZXNjYXBlQ2hhcmFjdGVycyhxdW90
ZVVzZWQgKyAiXFwiKSArIChzdWZmaXggIT09IHF1b3RlVXNlZCA/IHF1b3RlVXNlZCA6ICIiKTsK
ICAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICBpZiAoIXByb3BlcnR5LnN0YXJ0
c1dpdGgocHJlZml4KSB8fCBwcm9wZXJ0eSBpbiBrbm93bkNvbXBsZXRpb25zKQorICAgICAgICAg
ICAgICAgIGlmICghcHJvcGVydHkuc3RhcnRzV2l0aChwcmVmaXgpIHx8IGtub3duQ29tcGxldGlv
bnMuaGFzKHByb3BlcnR5KSkKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAKICAgICAg
ICAgICAgICAgICBjb21wbGV0aW9ucy5wdXNoKHByb3BlcnR5KTsKLSAgICAgICAgICAgICAgICBr
bm93bkNvbXBsZXRpb25zW3Byb3BlcnR5XSA9IHRydWU7CisgICAgICAgICAgICAgICAga25vd25D
b21wbGV0aW9ucy5hZGQocHJvcGVydHkpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBm
dW5jdGlvbiBjb21wYXJlKGEsIGIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9Nb2RlbHMvQ1NTQ29tcGxldGlvbnMuanMgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvQ1NTQ29tcGxldGlvbnMuanMKaW5kZXggZGMyODEy
MmRkYjllOTgxYmIyNjY0YzJkZjQ2OGFmODJjZDI2MWMxZC4uYjRhMDQ4NWRlMTE5OGUwZTliODhh
YTEwYjJiODFlMmY5ODRjZGVjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvTW9kZWxzL0NTU0NvbXBsZXRpb25zLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9DU1NDb21wbGV0aW9ucy5qcwpAQCAtNDIsNyAr
NDIsNyBAQCBXSS5DU1NDb21wbGV0aW9ucyA9IGNsYXNzIENTU0NvbXBsZXRpb25zCiAgICAgICAg
IC8vIHByb3BlcnRpZXMgd2hlbiBpbml0aWFsaXplZCBmcm9tIHRoZSBwcm90b2NvbCBmb3IgQ1NT
Q29tcGxldGlvbnMuY3NzTmFtZUNvbXBsZXRpb25zLgogICAgICAgICAvLyBPciBpdCBtYXkganVz
dCBhIGxpc3Qgb2Ygc3RyaW5ncyB3aGVuIHF1aWNrbHkgaW5pdGlhbGl6ZWQgZm9yIG90aGVyIGNv
bXBsZXRpb24gcHVycG9zZXMuCiAgICAgICAgIGlmIChwcm9wZXJ0aWVzLmxlbmd0aCAmJiB0eXBl
b2YgcHJvcGVydGllc1swXSA9PT0gInN0cmluZyIpCi0gICAgICAgICAgICB0aGlzLl92YWx1ZXMg
PSB0aGlzLl92YWx1ZXMuY29uY2F0KHByb3BlcnRpZXMpOworICAgICAgICAgICAgdGhpcy5fdmFs
dWVzLnB1c2goLi4ucHJvcGVydGllcyk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgZm9y
ICh2YXIgcHJvcGVydHkgb2YgcHJvcGVydGllcykgewogICAgICAgICAgICAgICAgIHZhciBwcm9w
ZXJ0eU5hbWUgPSBwcm9wZXJ0eS5uYW1lOwpAQCAtNTIsNyArNTIsNyBAQCBXSS5DU1NDb21wbGV0
aW9ucyA9IGNsYXNzIENTU0NvbXBsZXRpb25zCiAKICAgICAgICAgICAgICAgICBsZXQgYWxpYXNl
cyA9IHByb3BlcnR5LmFsaWFzZXM7CiAgICAgICAgICAgICAgICAgaWYgKGFsaWFzZXMpCi0gICAg
ICAgICAgICAgICAgICAgIHRoaXMuX3ZhbHVlcyA9IHRoaXMuX3ZhbHVlcy5jb25jYXQoYWxpYXNl
cyk7CisgICAgICAgICAgICAgICAgICAgIHRoaXMuX3ZhbHVlcy5wdXNoKC4uLmFsaWFzZXMpOwog
CiAgICAgICAgICAgICAgICAgdmFyIGxvbmdoYW5kcyA9IHByb3BlcnR5LmxvbmdoYW5kczsKICAg
ICAgICAgICAgICAgICBpZiAobG9uZ2hhbmRzKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvQ1NTS2V5d29yZENvbXBsZXRpb25zLmpzIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0NTU0tleXdvcmRDb21w
bGV0aW9ucy5qcwppbmRleCBhNTM2YTVhODQxMjdhMWU4YWYzODBmZTJmOTg3YTllY2I4MWM0NzZh
Li42MmRiNmZjZTlhODI4MjVkYjczMjkyZWQxNDgyZDMyNTVkMmIwZGE2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvQ1NTS2V5d29yZENvbXBs
ZXRpb25zLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVs
cy9DU1NLZXl3b3JkQ29tcGxldGlvbnMuanMKQEAgLTM5LDEyICszOSwxMiBAQCBXSS5DU1NLZXl3
b3JkQ29tcGxldGlvbnMuZm9yUHJvcGVydHkgPSBmdW5jdGlvbihwcm9wZXJ0eU5hbWUpCiAgICAg
ICAgIGxldCBpc05vdFByZWZpeGVkID0gbmFtZS5jaGFyQXQoMCkgIT09ICItIjsKIAogICAgICAg
ICBpZiAobmFtZSBpbiBXSS5DU1NLZXl3b3JkQ29tcGxldGlvbnMuX3Byb3BlcnR5S2V5d29yZE1h
cCkKLSAgICAgICAgICAgIGFjY2VwdGVkS2V5d29yZHMgPSBhY2NlcHRlZEtleXdvcmRzLmNvbmNh
dChXSS5DU1NLZXl3b3JkQ29tcGxldGlvbnMuX3Byb3BlcnR5S2V5d29yZE1hcFtuYW1lXSk7Cisg
ICAgICAgICAgICBhY2NlcHRlZEtleXdvcmRzLnB1c2goLi4uV0kuQ1NTS2V5d29yZENvbXBsZXRp
b25zLl9wcm9wZXJ0eUtleXdvcmRNYXBbbmFtZV0pOwogICAgICAgICBlbHNlIGlmIChpc05vdFBy
ZWZpeGVkICYmICgiLXdlYmtpdC0iICsgbmFtZSkgaW4gV0kuQ1NTS2V5d29yZENvbXBsZXRpb25z
Ll9wcm9wZXJ0eUtleXdvcmRNYXApCi0gICAgICAgICAgICBhY2NlcHRlZEtleXdvcmRzID0gYWNj
ZXB0ZWRLZXl3b3Jkcy5jb25jYXQoV0kuQ1NTS2V5d29yZENvbXBsZXRpb25zLl9wcm9wZXJ0eUtl
eXdvcmRNYXBbIi13ZWJraXQtIiArIG5hbWVdKTsKKyAgICAgICAgICAgIGFjY2VwdGVkS2V5d29y
ZHMucHVzaCguLi5XSS5DU1NLZXl3b3JkQ29tcGxldGlvbnMuX3Byb3BlcnR5S2V5d29yZE1hcFsi
LXdlYmtpdC0iICsgbmFtZV0pOwogCiAgICAgICAgIGlmIChXSS5DU1NLZXl3b3JkQ29tcGxldGlv
bnMuaXNDb2xvckF3YXJlUHJvcGVydHkobmFtZSkpCi0gICAgICAgICAgICBhY2NlcHRlZEtleXdv
cmRzID0gYWNjZXB0ZWRLZXl3b3Jkcy5jb25jYXQoV0kuQ1NTS2V5d29yZENvbXBsZXRpb25zLl9j
b2xvcnMpOworICAgICAgICAgICAgYWNjZXB0ZWRLZXl3b3Jkcy5wdXNoKC4uLldJLkNTU0tleXdv
cmRDb21wbGV0aW9ucy5fY29sb3JzKTsKIAogICAgICAgICAvLyBPbmx5IHN1Z2dlc3QgImluaGVy
aXQiIG9uIGluaGVyaXRhYmxlIHByb3BlcnRpZXMgZXZlbiB0aG91Z2ggaXQgaXMgdmFsaWQgb24g
YWxsIHByb3BlcnRpZXMuCiAgICAgICAgIGlmIChXSS5DU1NLZXl3b3JkQ29tcGxldGlvbnMuSW5o
ZXJpdGVkUHJvcGVydGllcy5oYXMobmFtZSkpCkBAIC02Nyw3ICs2Nyw3IEBAIFdJLkNTU0tleXdv
cmRDb21wbGV0aW9ucy5mb3JQcm9wZXJ0eSA9IGZ1bmN0aW9uKHByb3BlcnR5TmFtZSkKIAogICAg
IGlmIChhY2NlcHRlZEtleXdvcmRzLmluY2x1ZGVzKFdJLkNTU0tleXdvcmRDb21wbGV0aW9ucy5B
bGxQcm9wZXJ0eU5hbWVzUGxhY2Vob2xkZXIpICYmIFdJLkNTU0NvbXBsZXRpb25zLmNzc05hbWVD
b21wbGV0aW9ucykgewogICAgICAgICBhY2NlcHRlZEtleXdvcmRzLnJlbW92ZShXSS5DU1NLZXl3
b3JkQ29tcGxldGlvbnMuQWxsUHJvcGVydHlOYW1lc1BsYWNlaG9sZGVyKTsKLSAgICAgICAgYWNj
ZXB0ZWRLZXl3b3JkcyA9IGFjY2VwdGVkS2V5d29yZHMuY29uY2F0KFdJLkNTU0NvbXBsZXRpb25z
LmNzc05hbWVDb21wbGV0aW9ucy52YWx1ZXMpOworICAgICAgICBhY2NlcHRlZEtleXdvcmRzLnB1
c2goLi4uV0kuQ1NTQ29tcGxldGlvbnMuY3NzTmFtZUNvbXBsZXRpb25zLnZhbHVlcyk7CiAgICAg
fQogCiAgICAgcmV0dXJuIG5ldyBXSS5DU1NDb21wbGV0aW9ucyhBcnJheS5mcm9tKG5ldyBTZXQo
YWNjZXB0ZWRLZXl3b3JkcykpLCB0cnVlKTsKQEAgLTEwNywxNyArMTA3LDE1IEBAIFdJLkNTU0tl
eXdvcmRDb21wbGV0aW9ucy5mb3JGdW5jdGlvbiA9IGZ1bmN0aW9uKGZ1bmN0aW9uTmFtZSkKICAg
ICBpZiAoZnVuY3Rpb25OYW1lID09PSAidmFyIikKICAgICAgICAgc3VnZ2VzdGlvbnMgPSBbXTsK
ICAgICBlbHNlIGlmIChmdW5jdGlvbk5hbWUgPT09ICJjYWxjIiB8fCBmdW5jdGlvbk5hbWUgPT09
ICJtaW4iIHx8IGZ1bmN0aW9uTmFtZSA9PT0gIm1heCIpCi0gICAgICAgIHN1Z2dlc3Rpb25zID0g
c3VnZ2VzdGlvbnMuY29uY2F0KFsiY2FsYygpIiwgIm1pbigpIiwgIm1heCgpIl0pOworICAgICAg
ICBzdWdnZXN0aW9ucy5wdXNoKCJjYWxjKCkiLCAibWluKCkiLCAibWF4KCkiKTsKICAgICBlbHNl
IGlmIChmdW5jdGlvbk5hbWUgPT09ICJlbnYiKQotICAgICAgICBzdWdnZXN0aW9ucyA9IHN1Z2dl
c3Rpb25zLmNvbmNhdChbInNhZmUtYXJlYS1pbnNldC10b3AiLCAic2FmZS1hcmVhLWluc2V0LXJp
Z2h0IiwgInNhZmUtYXJlYS1pbnNldC1ib3R0b20iLCAic2FmZS1hcmVhLWluc2V0LWxlZnQiXSk7
CisgICAgICAgIHN1Z2dlc3Rpb25zLnB1c2goInNhZmUtYXJlYS1pbnNldC10b3AiLCAic2FmZS1h
cmVhLWluc2V0LXJpZ2h0IiwgInNhZmUtYXJlYS1pbnNldC1ib3R0b20iLCAic2FmZS1hcmVhLWlu
c2V0LWxlZnQiKTsKICAgICBlbHNlIGlmIChmdW5jdGlvbk5hbWUgPT09ICJpbWFnZS1zZXQiKQog
ICAgICAgICBzdWdnZXN0aW9ucy5wdXNoKCJ1cmwoKSIpOwogICAgIGVsc2UgaWYgKGZ1bmN0aW9u
TmFtZSA9PT0gInJlcGVhdCIpCi0gICAgICAgIHN1Z2dlc3Rpb25zID0gc3VnZ2VzdGlvbnMuY29u
Y2F0KFsiYXV0byIsICJhdXRvLWZpbGwiLCAiYXV0by1maXQiLCAibWluLWNvbnRlbnQiLCAibWF4
LWNvbnRlbnQiXSk7Ci0gICAgZWxzZSBpZiAoZnVuY3Rpb25OYW1lLmVuZHNXaXRoKCJncmFkaWVu
dCIpKSB7Ci0gICAgICAgIHN1Z2dlc3Rpb25zID0gc3VnZ2VzdGlvbnMuY29uY2F0KFsidG8iLCAi
bGVmdCIsICJyaWdodCIsICJ0b3AiLCAiYm90dG9tIl0pOwotICAgICAgICBzdWdnZXN0aW9ucyA9
IHN1Z2dlc3Rpb25zLmNvbmNhdChXSS5DU1NLZXl3b3JkQ29tcGxldGlvbnMuX2NvbG9ycyk7Ci0g
ICAgfQorICAgICAgICBzdWdnZXN0aW9ucy5wdXNoKCJhdXRvIiwgImF1dG8tZmlsbCIsICJhdXRv
LWZpdCIsICJtaW4tY29udGVudCIsICJtYXgtY29udGVudCIpOworICAgIGVsc2UgaWYgKGZ1bmN0
aW9uTmFtZS5lbmRzV2l0aCgiZ3JhZGllbnQiKSkKKyAgICAgICAgc3VnZ2VzdGlvbnMucHVzaCgi
dG8iLCAibGVmdCIsICJyaWdodCIsICJ0b3AiLCAiYm90dG9tIiwgLi4uV0kuQ1NTS2V5d29yZENv
bXBsZXRpb25zLl9jb2xvcnMpOwogCiAgICAgcmV0dXJuIG5ldyBXSS5DU1NDb21wbGV0aW9ucyhz
dWdnZXN0aW9ucywgdHJ1ZSk7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvTW9kZWxzL0RPTU5vZGVTdHlsZXMuanMgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvRE9NTm9kZVN0eWxlcy5qcwppbmRleCA0MzA5YjZh
NjFlMzc4OWU0Y2QxMmM2NzJiMGUyOTNhNjA4OGQ4NWNkLi4xYzdhYmNkZGE1MzI5ZjE0MmY1M2E0
NDJjYzY4YWJlN2MwYWI0ZTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9Nb2RlbHMvRE9NTm9kZVN0eWxlcy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvRE9NTm9kZVN0eWxlcy5qcwpAQCAtNzM4LDcgKzcz
OCw3IEBAIFdJLkRPTU5vZGVTdHlsZXMgPSBjbGFzcyBET01Ob2RlU3R5bGVzIGV4dGVuZHMgV0ku
T2JqZWN0CiAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5faW5oZXJpdGVkUnVsZXMu
bGVuZ3RoOyArK2kpIHsKICAgICAgICAgICAgIHZhciBpbmhlcml0ZWRTdHlsZUluZm8gPSB0aGlz
Ll9pbmhlcml0ZWRSdWxlc1tpXTsKICAgICAgICAgICAgIHZhciBpbmhlcml0ZWRDYXNjYWRlT3Jk
ZXIgPSB0aGlzLl9jb2xsZWN0U3R5bGVzSW5DYXNjYWRlT3JkZXIoaW5oZXJpdGVkU3R5bGVJbmZv
Lm1hdGNoZWRSdWxlcywgaW5oZXJpdGVkU3R5bGVJbmZvLmlubGluZVN0eWxlLCBudWxsKTsKLSAg
ICAgICAgICAgIGNhc2NhZGVPcmRlcmVkU3R5bGVEZWNsYXJhdGlvbnMgPSBjYXNjYWRlT3JkZXJl
ZFN0eWxlRGVjbGFyYXRpb25zLmNvbmNhdChpbmhlcml0ZWRDYXNjYWRlT3JkZXIpOworICAgICAg
ICAgICAgY2FzY2FkZU9yZGVyZWRTdHlsZURlY2xhcmF0aW9ucy5wdXNoKC4uLmluaGVyaXRlZENh
c2NhZGVPcmRlcik7CiAgICAgICAgIH0KIAogICAgICAgICB0aGlzLl9vcmRlcmVkU3R5bGVzID0g
Y2FzY2FkZU9yZGVyZWRTdHlsZURlY2xhcmF0aW9uczsKQEAgLTc4OCw3ICs3ODgsNyBAQCBXSS5E
T01Ob2RlU3R5bGVzID0gY2xhc3MgRE9NTm9kZVN0eWxlcyBleHRlbmRzIFdJLk9iamVjdAogICAg
ICAgICAgICAgcmVzdWx0LnB1c2goYXR0cmlidXRlc1N0eWxlKTsKIAogICAgICAgICAvLyBGaW5h
bGx5IGFkZCB0aGUgdXNlciBhbmQgdXNlciBzdHlsZXNoZWV0J3MgbWF0Y2hlZCBzdHlsZSBydWxl
cyB3ZSBjb2xsZWN0ZWQgZWFybGllci4KLSAgICAgICAgcmVzdWx0ID0gcmVzdWx0LmNvbmNhdCh1
c2VyQW5kVXNlckFnZW50U3R5bGVzKTsKKyAgICAgICAgcmVzdWx0LnB1c2goLi4udXNlckFuZFVz
ZXJBZ2VudFN0eWxlcyk7CiAKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvVGltZWxpbmVS
ZWNvcmRpbmcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMv
VGltZWxpbmVSZWNvcmRpbmcuanMKaW5kZXggODczZTg3OGVlZjFjZDI5NmRlZmZhNDE3MzRjYmVh
MWQwNGYwZWMxYS4uNTY1ZjM1Mjk3YWExMGJlNTJlNWFmODU0ZWFkOTljYWMyMTZkMTE1ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1RpbWVs
aW5lUmVjb3JkaW5nLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L01vZGVscy9UaW1lbGluZVJlY29yZGluZy5qcwpAQCAtMjcyLDcgKzI3Miw3IEBAIFdJLlRpbWVs
aW5lUmVjb3JkaW5nID0gY2xhc3MgVGltZWxpbmVSZWNvcmRpbmcgZXh0ZW5kcyBXSS5PYmplY3QK
ICAgICB7CiAgICAgICAgIGxldCB0aW1lbGluZXMgPSBbXTsKICAgICAgICAgZm9yIChsZXQgdGlt
ZWxpbmVzRm9yU291cmNlQ29kZSBvZiB0aGlzLl9zb3VyY2VDb2RlVGltZWxpbmVzTWFwLnZhbHVl
cygpKQotICAgICAgICAgICAgdGltZWxpbmVzID0gdGltZWxpbmVzLmNvbmNhdChBcnJheS5mcm9t
KHRpbWVsaW5lc0ZvclNvdXJjZUNvZGUudmFsdWVzKCkpKTsKKyAgICAgICAgICAgIHRpbWVsaW5l
cy5wdXNoKC4uLnRpbWVsaW5lc0ZvclNvdXJjZUNvZGUudmFsdWVzKCkpOwogICAgICAgICByZXR1
cm4gdGltZWxpbmVzOwogICAgIH0KIApAQCAtNDYwLDggKzQ2MCw4IEBAIFdJLlRpbWVsaW5lUmVj
b3JkaW5nID0gY2xhc3MgVGltZWxpbmVSZWNvcmRpbmcgZXh0ZW5kcyBXSS5PYmplY3QKIAogICAg
IGluaXRpYWxpemVDYWxsaW5nQ29udGV4dFRyZWVzKHN0YWNrVHJhY2VzLCBzYW1wbGVEdXJhdGlv
bnMpCiAgICAgewotICAgICAgICB0aGlzLl9leHBvcnREYXRhU2FtcGxlU3RhY2tUcmFjZXMgPSB0
aGlzLl9leHBvcnREYXRhU2FtcGxlU3RhY2tUcmFjZXMuY29uY2F0KHN0YWNrVHJhY2VzKTsKLSAg
ICAgICAgdGhpcy5fZXhwb3J0RGF0YVNhbXBsZUR1cmF0aW9ucyA9IHRoaXMuX2V4cG9ydERhdGFT
YW1wbGVEdXJhdGlvbnMuY29uY2F0KHNhbXBsZUR1cmF0aW9ucyk7CisgICAgICAgIHRoaXMuX2V4
cG9ydERhdGFTYW1wbGVTdGFja1RyYWNlcy5wdXNoKC4uLnN0YWNrVHJhY2VzKTsKKyAgICAgICAg
dGhpcy5fZXhwb3J0RGF0YVNhbXBsZUR1cmF0aW9ucy5wdXNoKC4uLnNhbXBsZUR1cmF0aW9ucyk7
CiAKICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzdGFja1RyYWNlcy5sZW5ndGg7IGkrKykg
ewogICAgICAgICAgICAgdGhpcy5fdG9wRG93bkNhbGxpbmdDb250ZXh0VHJlZS51cGRhdGVUcmVl
V2l0aFN0YWNrVHJhY2Uoc3RhY2tUcmFjZXNbaV0sIHNhbXBsZUR1cmF0aW9uc1tpXSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9SZW1v
dGVPYmplY3QuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2Nv
bC9SZW1vdGVPYmplY3QuanMKaW5kZXggMDIyODI3OTQwZDBmZTA5ZGQ1N2RjN2M0N2FjYjdiNmY2
ZjNmMDc2Yi4uMGI0NGE0MDMxODY4NmE1OTE2MTNlM2JmMzYwMDc3NmRhMjllNTI0MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvUmVtb3Rl
T2JqZWN0LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3Rv
Y29sL1JlbW90ZU9iamVjdC5qcwpAQCAtNjI4LDE0ICs2MjgsMTEgQEAgV0kuUmVtb3RlT2JqZWN0
ID0gY2xhc3MgUmVtb3RlT2JqZWN0CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAot
ICAgICAgICBsZXQgZGVzY3JpcHRvcnMgPSBwcm9wZXJ0aWVzLm1hcCgocGF5bG9hZCkgPT4gewot
ICAgICAgICAgICAgcmV0dXJuIFdJLlByb3BlcnR5RGVzY3JpcHRvci5mcm9tUGF5bG9hZChwYXls
b2FkLCBmYWxzZSwgdGhpcy5fdGFyZ2V0KTsKLSAgICAgICAgfSk7CisgICAgICAgIGxldCBkZXNj
cmlwdG9ycyA9IHByb3BlcnRpZXMubWFwKChwYXlsb2FkKSA9PiBXSS5Qcm9wZXJ0eURlc2NyaXB0
b3IuZnJvbVBheWxvYWQocGF5bG9hZCwgZmFsc2UsIHRoaXMuX3RhcmdldCkpOwogCiAgICAgICAg
IGlmIChpbnRlcm5hbFByb3BlcnRpZXMpIHsKLSAgICAgICAgICAgIGRlc2NyaXB0b3JzID0gZGVz
Y3JpcHRvcnMuY29uY2F0KGludGVybmFsUHJvcGVydGllcy5tYXAoKHBheWxvYWQpID0+IHsKLSAg
ICAgICAgICAgICAgICByZXR1cm4gV0kuUHJvcGVydHlEZXNjcmlwdG9yLmZyb21QYXlsb2FkKHBh
eWxvYWQsIHRydWUsIHRoaXMuX3RhcmdldCk7Ci0gICAgICAgICAgICB9KSk7CisgICAgICAgICAg
ICBmb3IgKGxldCBwYXlsb2FkIG9mIGludGVybmFsUHJvcGVydGllcykKKyAgICAgICAgICAgICAg
ICBkZXNjcmlwdG9ycy5wdXNoKFdJLlByb3BlcnR5RGVzY3JpcHRvci5mcm9tUGF5bG9hZChwYXls
b2FkLCB0cnVlLCB0aGlzLl90YXJnZXQpKTsKICAgICAgICAgfQogCiAgICAgICAgIGNhbGxiYWNr
KGRlc2NyaXB0b3JzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL0NvbnNvbGVNZXNzYWdlVmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnNvbGVNZXNzYWdlVmlldy5qcwppbmRleCAyNTQ0ZDdm
NTA1M2M2MzQyMjBlNmJkYjU3MjE5ZmFkZjM1MzI2ZGEwLi41ZGNkNWU5ZWJlYWZkZmFkZTI2Zjky
MDFlNmNmMzZjZmY1ZWU4YzY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9Db25zb2xlTWVzc2FnZVZpZXcuanMKKysrIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29uc29sZU1lc3NhZ2VWaWV3LmpzCkBAIC0y
NjIsNyArMjYyLDcgQEAgV0kuQ29uc29sZU1lc3NhZ2VWaWV3ID0gY2xhc3MgQ29uc29sZU1lc3Nh
Z2VWaWV3IGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcHJl
Zml4ZWRGb3JtYXRTdHJpbmcgPSBXSS5VSVN0cmluZygiVHJhY2U6ICVzIikuZm9ybWF0KHRoaXMu
X21lc3NhZ2UucGFyYW1ldGVyc1swXS5kZXNjcmlwdGlvbik7CiAgICAgICAgICAgICAgICAgICAg
ICAgICBhcmdzID0gW3ByZWZpeGVkRm9ybWF0U3RyaW5nXS5jb25jYXQodGhpcy5fbWVzc2FnZS5w
YXJhbWV0ZXJzLnNsaWNlKDEpKTsKICAgICAgICAgICAgICAgICAgICAgfSBlbHNlCi0gICAgICAg
ICAgICAgICAgICAgICAgICBhcmdzID0gYXJncy5jb25jYXQodGhpcy5fbWVzc2FnZS5wYXJhbWV0
ZXJzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3MucHVzaCguLi50aGlzLl9tZXNzYWdl
LnBhcmFtZXRlcnMpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB0aGlzLl9h
cHBlbmRGb3JtYXR0ZWRBcmd1bWVudHMoZWxlbWVudCwgYXJncyk7CiAgICAgICAgICAgICAgICAg
cmV0dXJuOwpAQCAtMjc0LDcgKzI3NCw3IEBAIFdJLkNvbnNvbGVNZXNzYWdlVmlldyA9IGNsYXNz
IENvbnNvbGVNZXNzYWdlVmlldyBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICAgICAgICAgICAg
ICAgICAgdmFyIHByZWZpeGVkRm9ybWF0U3RyaW5nID0gV0kuVUlTdHJpbmcoIkFzc2VydGlvbiBG
YWlsZWQ6ICVzIikuZm9ybWF0KHRoaXMuX21lc3NhZ2UucGFyYW1ldGVyc1swXS5kZXNjcmlwdGlv
bik7CiAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzID0gW3ByZWZpeGVkRm9ybWF0U3RyaW5n
XS5jb25jYXQodGhpcy5fbWVzc2FnZS5wYXJhbWV0ZXJzLnNsaWNlKDEpKTsKICAgICAgICAgICAg
ICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgICAgICAgICBhcmdzID0gYXJncy5jb25j
YXQodGhpcy5fbWVzc2FnZS5wYXJhbWV0ZXJzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFy
Z3MucHVzaCguLi50aGlzLl9tZXNzYWdlLnBhcmFtZXRlcnMpOwogICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgICB0aGlzLl9hcHBlbmRGb3JtYXR0ZWRBcmd1bWVudHMoZWxlbWVudCwg
YXJncyk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtMzAwLDcgKzMwMCw3IEBAIFdJLkNv
bnNvbGVNZXNzYWdlVmlldyA9IGNsYXNzIENvbnNvbGVNZXNzYWdlVmlldyBleHRlbmRzIFdJLk9i
amVjdAogICAgICAgICAgICAgY2FzZSBXSS5Db25zb2xlTWVzc2FnZS5NZXNzYWdlVHlwZS5UaW1p
bmc6IHsKICAgICAgICAgICAgICAgICBsZXQgYXJncyA9IFt0aGlzLl9tZXNzYWdlLm1lc3NhZ2VU
ZXh0XTsKICAgICAgICAgICAgICAgICBpZiAodGhpcy5fZXh0cmFQYXJhbWV0ZXJzKQotICAgICAg
ICAgICAgICAgICAgICBhcmdzID0gYXJncy5jb25jYXQodGhpcy5fZXh0cmFQYXJhbWV0ZXJzKTsK
KyAgICAgICAgICAgICAgICAgICAgYXJncy5wdXNoKC4uLnRoaXMuX2V4dHJhUGFyYW1ldGVycyk7
CiAgICAgICAgICAgICAgICAgdGhpcy5fYXBwZW5kRm9ybWF0dGVkQXJndW1lbnRzKGVsZW1lbnQs
IGFyZ3MpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KQEAgLTM0NSw3
ICszNDUsNyBAQCBXSS5Db25zb2xlTWVzc2FnZVZpZXcgPSBjbGFzcyBDb25zb2xlTWVzc2FnZVZp
ZXcgZXh0ZW5kcyBXSS5PYmplY3QKIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBh
cmdzID0gW1dJLlVJU3RyaW5nKCJDb3VsZCBub3QgY2FwdHVyZSBzY3JlZW5zaG90IiksIHRoaXMu
X21lc3NhZ2UubWVzc2FnZVRleHRdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0
aGlzLl9leHRyYVBhcmFtZXRlcnMpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFy
Z3MgPSBhcmdzLmNvbmNhdCh0aGlzLl9leHRyYVBhcmFtZXRlcnMpOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBhcmdzLnB1c2goLi4udGhpcy5fZXh0cmFQYXJhbWV0ZXJzKTsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9hcHBlbmRGb3JtYXR0ZWRBcmd1bWVudHMo
ZWxlbWVudCwgYXJncyk7CiAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAg
ICAgICAgICAgfQpAQCAtMzU5LDcgKzM1OSw3IEBAIFdJLkNvbnNvbGVNZXNzYWdlVmlldyA9IGNs
YXNzIENvbnNvbGVNZXNzYWdlVmlldyBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICAgICAgICAg
ICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzLnB1c2godGhpcy5fbWVzc2Fn
ZS5tZXNzYWdlVGV4dCk7CiAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLl9leHRyYVBhcmFt
ZXRlcnMpCi0gICAgICAgICAgICAgICAgICAgICAgICBhcmdzID0gYXJncy5jb25jYXQodGhpcy5f
ZXh0cmFQYXJhbWV0ZXJzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3MucHVzaCguLi50
aGlzLl9leHRyYVBhcmFtZXRlcnMpOwogICAgICAgICAgICAgICAgICAgICB0aGlzLl9hcHBlbmRG
b3JtYXR0ZWRBcmd1bWVudHMoZWxlbWVudCwgYXJncyk7CiAgICAgICAgICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9Db250ZW50QnJvd3Nlci5qcyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRlbnRCcm93c2VyLmpzCmluZGV4IDdlOWEy
ZjkxZWZmNDhjYjBmZTRiYjYxZTYwOGE1Njc1YmY1ZjAyNmUuLmQzYzUxODNjNDZiZDgyNzgxMTRj
Zjc3YWFiYzg2ZWYwNmZkN2U3MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRlbnRCcm93c2VyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRlbnRCcm93c2VyLmpzCkBAIC0xNDAsNyAr
MTQwLDcgQEAgV0kuQ29udGVudEJyb3dzZXIgPSBjbGFzcyBDb250ZW50QnJvd3NlciBleHRlbmRz
IFdJLlZpZXcKICAgICAgICAgaWYgKGN1cnJlbnRDb250ZW50VmlldykgewogICAgICAgICAgICAg
dmFyIHN1cHBsZW1lbnRhbFJlcHJlc2VudGVkT2JqZWN0cyA9IGN1cnJlbnRDb250ZW50Vmlldy5z
dXBwbGVtZW50YWxSZXByZXNlbnRlZE9iamVjdHM7CiAgICAgICAgICAgICBpZiAoc3VwcGxlbWVu
dGFsUmVwcmVzZW50ZWRPYmplY3RzICYmIHN1cHBsZW1lbnRhbFJlcHJlc2VudGVkT2JqZWN0cy5s
ZW5ndGgpCi0gICAgICAgICAgICAgICAgcmVwcmVzZW50ZWRPYmplY3RzID0gcmVwcmVzZW50ZWRP
YmplY3RzLmNvbmNhdChzdXBwbGVtZW50YWxSZXByZXNlbnRlZE9iamVjdHMpOworICAgICAgICAg
ICAgICAgIHJlcHJlc2VudGVkT2JqZWN0cy5wdXNoKC4uLnN1cHBsZW1lbnRhbFJlcHJlc2VudGVk
T2JqZWN0cyk7CiAgICAgICAgIH0KIAogICAgICAgICByZXR1cm4gcmVwcmVzZW50ZWRPYmplY3Rz
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
RE9NVHJlZUVsZW1lbnQuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9ET01UcmVlRWxlbWVudC5qcwppbmRleCA1Y2UzMzk1YWIyZDU5YmRiYTFkZDY3MDE0MGMx
M2ZhYmIyZjMyNjA4Li5jYTBlOWQyZDU4ZDUzNTc1Nzk4MDg0N2I0Mzc1YzM0NjcxYTRiZjc2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9ET01U
cmVlRWxlbWVudC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9ET01UcmVlRWxlbWVudC5qcwpAQCAtMTYyOCw3ICsxNjI4LDcgQEAgV0kuRE9NVHJlZUVs
ZW1lbnQgPSBjbGFzcyBET01UcmVlRWxlbWVudCBleHRlbmRzIFdJLlRyZWVFbGVtZW50CiAgICAg
ICAgICAgICB2aXNpYmxlQ2hpbGRyZW4ucHVzaChiZWZvcmVQc2V1ZG9FbGVtZW50KTsKIAogICAg
ICAgICBpZiAobm9kZS5jaGlsZE5vZGVDb3VudCAmJiBub2RlLmNoaWxkcmVuKQotICAgICAgICAg
ICAgdmlzaWJsZUNoaWxkcmVuID0gdmlzaWJsZUNoaWxkcmVuLmNvbmNhdChub2RlLmNoaWxkcmVu
KTsKKyAgICAgICAgICAgIHZpc2libGVDaGlsZHJlbi5wdXNoKC4uLm5vZGUuY2hpbGRyZW4pOwog
CiAgICAgICAgIHZhciBhZnRlclBzZXVkb0VsZW1lbnQgPSBub2RlLmFmdGVyUHNldWRvRWxlbWVu
dCgpOwogICAgICAgICBpZiAoYWZ0ZXJQc2V1ZG9FbGVtZW50KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRGF0YUdyaWROb2RlLmpzIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRGF0YUdyaWROb2RlLmpzCmlu
ZGV4IGQ5MGE5NDgwYWUwMDU2ZDM2NjFiN2FjYWI5OTk2ZmJjNmFlNGRmMTUuLjkwYjExZDNlMWU4
NmRhZWUxNDJlNTRlY2M4MGExOGUxMDU3YTI4M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RhdGFHcmlkTm9kZS5qcworKysgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9EYXRhR3JpZE5vZGUuanMKQEAgLTE3
NSw3ICsxNzUsNyBAQCBXSS5EYXRhR3JpZE5vZGUgPSBjbGFzcyBEYXRhR3JpZE5vZGUgZXh0ZW5k
cyBXSS5PYmplY3QKICAgICAgICAgICAgIGlmICghdmFsdWUubGVuZ3RoKQogICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOwogCi0gICAgICAgICAgICB0aGlzLl9jYWNoZWRGaWx0ZXJhYmxlRGF0YSA9
IHRoaXMuX2NhY2hlZEZpbHRlcmFibGVEYXRhLmNvbmNhdCh2YWx1ZSk7CisgICAgICAgICAgICB0
aGlzLl9jYWNoZWRGaWx0ZXJhYmxlRGF0YS5wdXNoKC4uLnZhbHVlKTsKICAgICAgICAgfQogCiAg
ICAgICAgIHJldHVybiB0aGlzLl9jYWNoZWRGaWx0ZXJhYmxlRGF0YTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0hlYXBBbGxvY2F0aW9uc1Rp
bWVsaW5lVmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L0hlYXBBbGxvY2F0aW9uc1RpbWVsaW5lVmlldy5qcwppbmRleCBiZTVkYWMzMDk1MTJjMDk5Y2Y3
NTk3ZWU1ZmU0MGI5YTE0ZTRjZmQ2Li5lNDA2ZWQ2NzA2MDY4ZTg3N2JjNTcxYjE2YjUyYzFlN2My
YThkYjE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9IZWFwQWxsb2NhdGlvbnNUaW1lbGluZVZpZXcuanMKKysrIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvSGVhcEFsbG9jYXRpb25zVGltZWxpbmVWaWV3Lmpz
CkBAIC0yMTcsNyArMjE3LDcgQEAgV0kuSGVhcEFsbG9jYXRpb25zVGltZWxpbmVWaWV3ID0gY2xh
c3MgSGVhcEFsbG9jYXRpb25zVGltZWxpbmVWaWV3IGV4dGVuZHMgV0kuVGkKICAgICAgICAgfQog
CiAgICAgICAgIGlmICh0aGlzLl9jb250ZW50Vmlld0NvbnRhaW5lci5jdXJyZW50Q29udGVudFZp
ZXcpCi0gICAgICAgICAgICBjb21wb25lbnRzID0gY29tcG9uZW50cy5jb25jYXQodGhpcy5fY29u
dGVudFZpZXdDb250YWluZXIuY3VycmVudENvbnRlbnRWaWV3LnNlbGVjdGlvblBhdGhDb21wb25l
bnRzKTsKKyAgICAgICAgICAgIGNvbXBvbmVudHMuYXBwZW5kKC4uLnRoaXMuX2NvbnRlbnRWaWV3
Q29udGFpbmVyLmN1cnJlbnRDb250ZW50Vmlldy5zZWxlY3Rpb25QYXRoQ29tcG9uZW50cyk7CiAK
ICAgICAgICAgcmV0dXJuIGNvbXBvbmVudHM7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvSW5kZXhlZERhdGFiYXNlT2JqZWN0U3Rv
cmVDb250ZW50Vmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL0luZGV4ZWREYXRhYmFzZU9iamVjdFN0b3JlQ29udGVudFZpZXcuanMKaW5kZXggODBiZDEw
NTE4NDljYzkxNmNlNDYzZDQ2Nzk5ZGQ0ODNhZjI3OTNiZi4uMzZkZjRkMWEzMzM2NWIwNGZmYjc3
MjIzZWJjYzJkYjg3N2ExY2E2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvSW5kZXhlZERhdGFiYXNlT2JqZWN0U3RvcmVDb250ZW50Vmlldy5q
cworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9JbmRleGVk
RGF0YWJhc2VPYmplY3RTdG9yZUNvbnRlbnRWaWV3LmpzCkBAIC0xNDIsNyArMTQyLDcgQEAgV0ku
SW5kZXhlZERhdGFiYXNlT2JqZWN0U3RvcmVDb250ZW50VmlldyA9IGNsYXNzIEluZGV4ZWREYXRh
YmFzZU9iamVjdFN0b3JlQ29udGUKIAogICAgICAgICBmdW5jdGlvbiBwcm9jZXNzRW50cmllcyhl
bnRyaWVzLCBtb3JlQXZhaWxhYmxlKQogICAgICAgICB7Ci0gICAgICAgICAgICB0aGlzLl9lbnRy
aWVzID0gdGhpcy5fZW50cmllcy5jb25jYXQoZW50cmllcyk7CisgICAgICAgICAgICB0aGlzLl9l
bnRyaWVzLnB1c2goLi4uZW50cmllcyk7CiAgICAgICAgICAgICB0aGlzLl9tb3JlRW50cmllc0F2
YWlsYWJsZSA9IG1vcmVBdmFpbGFibGU7CiAKICAgICAgICAgICAgIGZvciAodmFyIGVudHJ5IG9m
IGVudHJpZXMpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL05hdmlnYXRpb25JdGVtLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvTmF2aWdhdGlvbkl0ZW0uanMKaW5kZXggOWM5YWEwMGUxMThjYWNmMjU3
YjE2ZjRlY2E5ODkyMjc5YjFjNGQ0OS4uYWQ3YmFiYjlmY2U2MzgyYmFkYWM3MWY3ZjkwOTJkN2Qx
NDUxZWY1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvTmF2aWdhdGlvbkl0ZW0uanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvTmF2aWdhdGlvbkl0ZW0uanMKQEAgLTEyNSw4ICsxMjUsOCBAQCBXSS5O
YXZpZ2F0aW9uSXRlbSA9IGNsYXNzIE5hdmlnYXRpb25JdGVtIGV4dGVuZHMgV0kuT2JqZWN0CiAg
ICAgICAgIHZhciBjbGFzc05hbWVzID0gWyJpdGVtIl07CiAgICAgICAgIGlmICh0aGlzLl9pZGVu
dGlmaWVyKQogICAgICAgICAgICAgY2xhc3NOYW1lcy5wdXNoKHRoaXMuX2lkZW50aWZpZXIpOwot
ICAgICAgICBpZiAodGhpcy5hZGRpdGlvbmFsQ2xhc3NOYW1lcyBpbnN0YW5jZW9mIEFycmF5KQot
ICAgICAgICAgICAgY2xhc3NOYW1lcyA9IGNsYXNzTmFtZXMuY29uY2F0KHRoaXMuYWRkaXRpb25h
bENsYXNzTmFtZXMpOworICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh0aGlzLmFkZGl0aW9uYWxD
bGFzc05hbWVzKSkKKyAgICAgICAgICAgIGNsYXNzTmFtZXMucHVzaCguLi50aGlzLmFkZGl0aW9u
YWxDbGFzc05hbWVzKTsKICAgICAgICAgcmV0dXJuIGNsYXNzTmFtZXM7CiAgICAgfQogfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL09iamVj
dFRyZWVWaWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
T2JqZWN0VHJlZVZpZXcuanMKaW5kZXggZGEyOTM4ZWI2NjE5ODYyOGZhMzViZDlmZjQyMTNmMmU1
NjUxNTdjOS4uNDcyZjg0NjlhYWE3NTMwNzI4NGE0N2Y3ZGEzYmU5MDM2MWE5MWRiZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvT2JqZWN0VHJl
ZVZpZXcuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
T2JqZWN0VHJlZVZpZXcuanMKQEAgLTMxMSw3ICszMTEsNyBAQCBXSS5PYmplY3RUcmVlVmlldyA9
IGNsYXNzIE9iamVjdFRyZWVWaWV3IGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgX3VwZGF0ZVByb3Bl
cnRpZXMocHJvcGVydGllcywgcHJvcGVydHlQYXRoKQogICAgIHsKICAgICAgICAgaWYgKHRoaXMu
X2V4dHJhUHJvcGVydGllcykKLSAgICAgICAgICAgIHByb3BlcnRpZXMgPSBwcm9wZXJ0aWVzLmNv
bmNhdCh0aGlzLl9leHRyYVByb3BlcnRpZXMpOworICAgICAgICAgICAgcHJvcGVydGllcy5wdXNo
KC4uLnRoaXMuX2V4dHJhUHJvcGVydGllcyk7CiAKICAgICAgICAgcHJvcGVydGllcy5zb3J0KFdJ
Lk9iamVjdFRyZWVWaWV3LmNvbXBhcmVQcm9wZXJ0eURlc2NyaXB0b3JzKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvT3ZlcnZpZXdUaW1l
bGluZVZpZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9P
dmVydmlld1RpbWVsaW5lVmlldy5qcwppbmRleCAwZDczYWU0NmM3NmI4MDhmMTc5OTFiM2RiNjFj
N2Q1NmJiMzY2ODYzLi5iYTg1MmE3YTJiNWYzNGY0OTMxYjhlZDMyZjRjNDRmYTMzNGI2MmI5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9PdmVy
dmlld1RpbWVsaW5lVmlldy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9PdmVydmlld1RpbWVsaW5lVmlldy5qcwpAQCAtMjI1LDEyICsyMjUsMTIgQEAg
V0kuT3ZlcnZpZXdUaW1lbGluZVZpZXcgPSBjbGFzcyBPdmVydmlld1RpbWVsaW5lVmlldyBleHRl
bmRzIFdJLlRpbWVsaW5lVmlldwogICAgICAgICBpZiAodGhpcy5fc2hvdWxkR3JvdXBCeVNvdXJj
ZUNvZGUpIHsKICAgICAgICAgICAgIGxldCBuZXR3b3JrVGltZWxpbmUgPSB0aGlzLl9yZWNvcmRp
bmcudGltZWxpbmVzLmdldChXSS5UaW1lbGluZVJlY29yZC5UeXBlLk5ldHdvcmspOwogICAgICAg
ICAgICAgaWYgKG5ldHdvcmtUaW1lbGluZSkKLSAgICAgICAgICAgICAgICB0aGlzLl9wZW5kaW5n
UmVwcmVzZW50ZWRPYmplY3RzID0gdGhpcy5fcGVuZGluZ1JlcHJlc2VudGVkT2JqZWN0cy5jb25j
YXQobmV0d29ya1RpbWVsaW5lLnJlY29yZHMubWFwKChyZWNvcmQpID0+IHJlY29yZC5yZXNvdXJj
ZSkpOworICAgICAgICAgICAgICAgIHRoaXMuX3BlbmRpbmdSZXByZXNlbnRlZE9iamVjdHMucHVz
aCguLi5uZXR3b3JrVGltZWxpbmUucmVjb3Jkcy5tYXAoKHJlY29yZCkgPT4gcmVjb3JkLnJlc291
cmNlKSk7CiAKLSAgICAgICAgICAgIHRoaXMuX3BlbmRpbmdSZXByZXNlbnRlZE9iamVjdHMgPSB0
aGlzLl9wZW5kaW5nUmVwcmVzZW50ZWRPYmplY3RzLmNvbmNhdCh0aGlzLl9yZWNvcmRpbmcuc291
cmNlQ29kZVRpbWVsaW5lcyk7CisgICAgICAgICAgICB0aGlzLl9wZW5kaW5nUmVwcmVzZW50ZWRP
YmplY3RzLnB1c2goLi4udGhpcy5fcmVjb3JkaW5nLnNvdXJjZUNvZGVUaW1lbGluZXMpOwogICAg
ICAgICB9IGVsc2UgewogICAgICAgICAgICAgZm9yIChsZXQgdGltZWxpbmUgb2YgdGhpcy5fcmVs
ZXZhbnRUaW1lbGluZXMpCi0gICAgICAgICAgICAgICAgdGhpcy5fcGVuZGluZ1JlcHJlc2VudGVk
T2JqZWN0cyA9IHRoaXMuX3BlbmRpbmdSZXByZXNlbnRlZE9iamVjdHMuY29uY2F0KHRpbWVsaW5l
LnJlY29yZHMpOworICAgICAgICAgICAgICAgIHRoaXMuX3BlbmRpbmdSZXByZXNlbnRlZE9iamVj
dHMucHVzaCguLi50aW1lbGluZS5yZWNvcmRzKTsKICAgICAgICAgfQogCiAgICAgICAgIHRoaXMu
bmVlZHNMYXlvdXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL1Jlc291cmNlQ29sbGVjdGlvbkNvbnRlbnRWaWV3LmpzIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUmVzb3VyY2VDb2xsZWN0aW9uQ29udGVu
dFZpZXcuanMKaW5kZXggNTY5NmFiZjljNGNiNjYxN2Y4NzA3ZTIxYjU5ZTE2ODJhNDQ3MTM3Mi4u
MTVmNWYzZmU1OTRlYWEwZWRlZTIxNDJlNDI4OGNlMTdiYjgzZGU4MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUmVzb3VyY2VDb2xsZWN0aW9u
Q29udGVudFZpZXcuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvUmVzb3VyY2VDb2xsZWN0aW9uQ29udGVudFZpZXcuanMKQEAgLTc4LDcgKzc4LDcgQEAg
V0kuUmVzb3VyY2VDb2xsZWN0aW9uQ29udGVudFZpZXcgPSBjbGFzcyBSZXNvdXJjZUNvbGxlY3Rp
b25Db250ZW50VmlldyBleHRlbmRzIFcKICAgICAgICAgICAgIG5hdmlnYXRpb25JdGVtcy5wdXNo
KHRoaXMuX2ltYWdlVHlwZVNjb3BlQmFyKTsKICAgICAgICAgaWYgKHRoaXMuX3Nob3dHcmlkQnV0
dG9uTmF2aWdhdGlvbkl0ZW0pCiAgICAgICAgICAgICBuYXZpZ2F0aW9uSXRlbXMucHVzaCh0aGlz
Ll9zaG93R3JpZEJ1dHRvbk5hdmlnYXRpb25JdGVtKTsKLSAgICAgICAgbmF2aWdhdGlvbkl0ZW1z
ID0gbmF2aWdhdGlvbkl0ZW1zLmNvbmNhdChzdXBlci5uYXZpZ2F0aW9uSXRlbXMpOworICAgICAg
ICBuYXZpZ2F0aW9uSXRlbXMucHVzaCguLi5zdXBlci5uYXZpZ2F0aW9uSXRlbXMpOwogICAgICAg
ICByZXR1cm4gbmF2aWdhdGlvbkl0ZW1zOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUmVzb3VyY2VIZWFkZXJzQ29udGVudFZp
ZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9SZXNvdXJj
ZUhlYWRlcnNDb250ZW50Vmlldy5qcwppbmRleCBhY2M1MDU1ZjQxMWIyZWE4NGE0MTVlODcxMmQ0
YjQ5ZDVjNjZhYzUyLi5mNmIzMThkMjEwNTYwYTI3YjE5YmRiMzkxZDFlYWY2MTNkYmUxMTYyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9SZXNv
dXJjZUhlYWRlcnNDb250ZW50Vmlldy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9SZXNvdXJjZUhlYWRlcnNDb250ZW50Vmlldy5qcwpAQCAtNDg3LDcg
KzQ4Nyw3IEBAIFdJLlJlc291cmNlSGVhZGVyc0NvbnRlbnRWaWV3ID0gY2xhc3MgUmVzb3VyY2VI
ZWFkZXJzQ29udGVudFZpZXcgZXh0ZW5kcyBXSS5Db250CiAKICAgICAgICAgICAgIGlmIChtYXRj
aFJhbmdlcy5sZW5ndGgpIHsKICAgICAgICAgICAgICAgICBsZXQgaGlnaGxpZ2h0ZWROb2RlcyA9
IFdJLmhpZ2hsaWdodFJhbmdlc1dpdGhTdHlsZUNsYXNzKGVsZW1lbnQsIG1hdGNoUmFuZ2VzLCAi
c2VhcmNoLWhpZ2hsaWdodCIsIHRoaXMuX3NlYXJjaERPTUNoYW5nZXMpOwotICAgICAgICAgICAg
ICAgIHRoaXMuX3NlYXJjaFJlc3VsdHMgPSB0aGlzLl9zZWFyY2hSZXN1bHRzLmNvbmNhdChoaWdo
bGlnaHRlZE5vZGVzKTsKKyAgICAgICAgICAgICAgICB0aGlzLl9zZWFyY2hSZXN1bHRzLnB1c2go
Li4uaGlnaGxpZ2h0ZWROb2Rlcyk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9SZXNv
dXJjZVNlY3VyaXR5Q29udGVudFZpZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9SZXNvdXJjZVNlY3VyaXR5Q29udGVudFZpZXcuanMKaW5kZXggMTI4MDg0
MThmMjlkZGMzYTMzYWIxZjAxOTRjZWQ5NmJjODVjMTU1MC4uMDVhYTZlODM1MTIzODQ3MDNjODMz
NmM2MTQzNDBjZjZlZmY3MDhkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvUmVzb3VyY2VTZWN1cml0eUNvbnRlbnRWaWV3LmpzCisrKyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Jlc291cmNlU2VjdXJpdHlD
b250ZW50Vmlldy5qcwpAQCAtMjk4LDcgKzI5OCw3IEBAIFdJLlJlc291cmNlU2VjdXJpdHlDb250
ZW50VmlldyA9IGNsYXNzIFJlc291cmNlU2VjdXJpdHlDb250ZW50VmlldyBleHRlbmRzIFdJLkNv
CiAKICAgICAgICAgICAgIGlmIChtYXRjaFJhbmdlcy5sZW5ndGgpIHsKICAgICAgICAgICAgICAg
ICBsZXQgaGlnaGxpZ2h0ZWROb2RlcyA9IFdJLmhpZ2hsaWdodFJhbmdlc1dpdGhTdHlsZUNsYXNz
KGVsZW1lbnQsIG1hdGNoUmFuZ2VzLCAic2VhcmNoLWhpZ2hsaWdodCIsIHRoaXMuX3NlYXJjaERP
TUNoYW5nZXMpOwotICAgICAgICAgICAgICAgIHRoaXMuX3NlYXJjaFJlc3VsdHMgPSB0aGlzLl9z
ZWFyY2hSZXN1bHRzLmNvbmNhdChoaWdobGlnaHRlZE5vZGVzKTsKKyAgICAgICAgICAgICAgICB0
aGlzLl9zZWFyY2hSZXN1bHRzID0gdGhpcy5fc2VhcmNoUmVzdWx0cy5wdXNoKC4uLmhpZ2hsaWdo
dGVkTm9kZXMpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU2NyaXB0Q2x1c3RlclRp
bWVsaW5lVmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L1NjcmlwdENsdXN0ZXJUaW1lbGluZVZpZXcuanMKaW5kZXggZmZhMzM0MWYxMDJmZWRlMzIxZjI5
NWUyOGZkYTk0NmZkOWI5NzJkZi4uZTFlZDA2ZmIzZjEyMjA0OWEwODZmMWVhNTI4NzY5NTJlNzQ4
YTU1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvU2NyaXB0Q2x1c3RlclRpbWVsaW5lVmlldy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9TY3JpcHRDbHVzdGVyVGltZWxpbmVWaWV3LmpzCkBAIC0x
MDQsOSArMTA0LDExIEBAIFdJLlNjcmlwdENsdXN0ZXJUaW1lbGluZVZpZXcgPSBjbGFzcyBTY3Jp
cHRDbHVzdGVyVGltZWxpbmVWaWV3IGV4dGVuZHMgV0kuQ2x1c3RlCiAgICAgICAgICAgICByZXR1
cm4gW107CiAKICAgICAgICAgbGV0IGNvbXBvbmVudHMgPSBbdGhpcy5fcGF0aENvbXBvbmVudEZv
ckNvbnRlbnRWaWV3KGN1cnJlbnRDb250ZW50VmlldyldOworCiAgICAgICAgIGxldCBzdWJDb21w
b25lbnRzID0gY3VycmVudENvbnRlbnRWaWV3LnNlbGVjdGlvblBhdGhDb21wb25lbnRzOwogICAg
ICAgICBpZiAoc3ViQ29tcG9uZW50cykKLSAgICAgICAgICAgIHJldHVybiBjb21wb25lbnRzLmNv
bmNhdChzdWJDb21wb25lbnRzKTsKKyAgICAgICAgICAgIGNvbXBvbmVudHMucHVzaCguLi5zdWJD
b21wb25lbnRzKTsKKwogICAgICAgICByZXR1cm4gY29tcG9uZW50czsKICAgICB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NjcnViYmVy
TmF2aWdhdGlvbkl0ZW0uanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9TY3J1YmJlck5hdmlnYXRpb25JdGVtLmpzCmluZGV4IGE2YTFkOTliOTI4MGRhYjJmYjBj
N2NmYjQzMmI4YjU3ZmE2NGFjYWIuLjk0ODY1NGI0ZmY0YWJmN2M2YzczYTAyMzJhZTUwNDhhN2Yz
YjBlZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL1NjcnViYmVyTmF2aWdhdGlvbkl0ZW0uanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvU2NydWJiZXJOYXZpZ2F0aW9uSXRlbS5qcwpAQCAtNTksNyAr
NTksOSBAQCBXSS5TY3J1YmJlck5hdmlnYXRpb25JdGVtID0gY2xhc3MgU2NydWJiZXJOYXZpZ2F0
aW9uSXRlbSBleHRlbmRzIFdJLkZsZXhpYmxlU3BhYwogCiAgICAgZ2V0IGFkZGl0aW9uYWxDbGFz
c05hbWVzKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBzdXBlci5hZGRpdGlvbmFsQ2xhc3NOYW1l
cy5jb25jYXQoWyJzY3J1YmJlciJdKTsKKyAgICAgICAgbGV0IGFkZGl0aW9uYWxDbGFzc05hbWVz
ID0gc3VwZXIuYWRkaXRpb25hbENsYXNzTmFtZXM7CisgICAgICAgIGFkZGl0aW9uYWxDbGFzc05h
bWVzLnB1c2goInNjcnViYmVyIik7CisgICAgICAgIHJldHVybiBhZGRpdGlvbmFsQ2xhc3NOYW1l
czsKICAgICB9CiAKICAgICAvLyBQcml2YXRlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TcHJlYWRzaGVldFN0eWxlUHJvcGVydHkuanMgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TcHJlYWRzaGVldFN0eWxl
UHJvcGVydHkuanMKaW5kZXggZWQxZDdiNWE0NjFiODg5MWJhNjRmN2ZmOWJjODE5ODhiZTBiZDlk
Yy4uZGMwYjg0YmUwMTQ4YWYzOTk5NTcyZDFmMDI5ZTNkZGNiOTExZTczOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU3ByZWFkc2hlZXRTdHls
ZVByb3BlcnR5LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL1NwcmVhZHNoZWV0U3R5bGVQcm9wZXJ0eS5qcwpAQCAtNzAyLDE3ICs3MDIsMTcgQEAgV0ku
U3ByZWFkc2hlZXRTdHlsZVByb3BlcnR5ID0gY2xhc3MgU3ByZWFkc2hlZXRTdHlsZVByb3BlcnR5
IGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgICAgICAgICAgICAgIGxldCBjb250ZW50cyA9IFtd
OwogICAgICAgICAgICAgICAgICAgICBsZXQgZmFsbGJhY2tTdGFydEluZGV4ID0gcmF3VG9rZW5z
LmZpbmRJbmRleCgodmFsdWUsIGkpID0+IGkgPiB2YXJpYWJsZU5hbWVJbmRleCArIDEgJiYgL1xi
bS1jc3NcYi8udGVzdCh2YWx1ZS50eXBlKSk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChmYWxs
YmFja1N0YXJ0SW5kZXggIT09IC0xKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50
cyA9IGNvbnRlbnRzLmNvbmNhdChyYXdUb2tlbnMuc2xpY2UoMCwgZmFsbGJhY2tTdGFydEluZGV4
KSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50cyA9IGNvbnRlbnRzLmNvbmNhdCh0
aGlzLl9yZXBsYWNlU3BlY2lhbFRva2VucyhyYXdUb2tlbnMuc2xpY2UoZmFsbGJhY2tTdGFydElu
ZGV4LCBpKSkpOworICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudHMucHVzaCguLi5yYXdU
b2tlbnMuc2xpY2UoMCwgZmFsbGJhY2tTdGFydEluZGV4KSk7CisgICAgICAgICAgICAgICAgICAg
ICAgICBjb250ZW50cy5wdXNoKC4uLnRoaXMuX3JlcGxhY2VTcGVjaWFsVG9rZW5zKHJhd1Rva2Vu
cy5zbGljZShmYWxsYmFja1N0YXJ0SW5kZXgsIGkpKSk7CiAgICAgICAgICAgICAgICAgICAgIH0g
ZWxzZQotICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudHMgPSBjb250ZW50cy5jb25jYXQo
cmF3VG9rZW5zLnNsaWNlKDAsIGkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnRz
LnB1c2goLi4ucmF3VG9rZW5zLnNsaWNlKDAsIGkpKTsKICAgICAgICAgICAgICAgICAgICAgY29u
dGVudHMucHVzaCh0b2tlbik7CiAKICAgICAgICAgICAgICAgICAgICAgbGV0IHRleHQgPSByYXdU
b2tlbnMucmVkdWNlKChhY2N1bXVsYXRvciwgdG9rZW4pID0+IGFjY3VtdWxhdG9yICsgdG9rZW4u
dmFsdWUsICIiKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX3Byb3BlcnR5Lm93bmVy
U3R5bGUubm9kZVN0eWxlcy5jb21wdXRlZFN0eWxlLnJlc29sdmVWYXJpYWJsZVZhbHVlKHRleHQp
KQogICAgICAgICAgICAgICAgICAgICAgICAgbmV3VG9rZW5zLnB1c2godGhpcy5fY3JlYXRlSW5s
aW5lU3dhdGNoKFdJLklubGluZVN3YXRjaC5UeXBlLlZhcmlhYmxlLCBjb250ZW50cykpOwogICAg
ICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgICAgICBuZXdUb2tlbnMg
PSBuZXdUb2tlbnMuY29uY2F0KGNvbnRlbnRzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG5l
d1Rva2Vucy5wdXNoKC4uLmNvbnRlbnRzKTsKICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAg
ICAgICAgICAgICAgICAgICB0aGlzLl9oYXNJbnZhbGlkVmFyaWFibGVWYWx1ZSA9IHRydWU7CiAg
ICAgICAgICAgICAgICAgICAgIG5ld1Rva2Vucy5wdXNoKC4uLnJhd1Rva2Vucyk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UcmVlT3V0bGlu
ZS5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RyZWVPdXRs
aW5lLmpzCmluZGV4IDRhNzJkYTE0MDE1YTExNTRjYzAwNWVjZmU1ZTFlNjQxY2FkMWNjOWUuLjQ5
ZDM2NDI0ZjlmZmI1Y2UxZjc0OTBjNmIwY2RhZmJjMjU2MDFlYjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RyZWVPdXRsaW5lLmpzCisrKyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RyZWVPdXRsaW5lLmpz
CkBAIC01MTAsNyArNTEwLDcgQEAgV0kuVHJlZU91dGxpbmUgPSBjbGFzcyBUcmVlT3V0bGluZSBl
eHRlbmRzIFdJLk9iamVjdAogICAgICAgICAgICAgaWYgKHByZWRpY2F0ZSh0cmVlRWxlbWVudCkp
CiAgICAgICAgICAgICAgICAgcmV0dXJuIHRyZWVFbGVtZW50OwogCi0gICAgICAgICAgICB0cmVl
RWxlbWVudHMgPSB0cmVlRWxlbWVudHMuY29uY2F0KHRyZWVFbGVtZW50LmNoaWxkcmVuKTsKKyAg
ICAgICAgICAgIHRyZWVFbGVtZW50cy5wdXNoKC4uLnRyZWVFbGVtZW50LmNoaWxkcmVuKTsKICAg
ICAgICAgfQogCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1ZpZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9WaWV3LmpzCmluZGV4IDYzNjM5OTEyMjNhNjhhM2Ey
NTgwYmRhMjRhNTlkYWMxZmM0NDNkZGEuLjBmYWJiZGE2YzlmNjQ0NWYyMzZkNTU3MGIxYWFiZWE4
OTQwYmRmZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL1ZpZXcuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvVmlldy5qcwpAQCAtMzkxLDcgKzM5MSw3IEBAIFdJLlZpZXcgPSBjbGFzcyBWaWV3IGV4
dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgICAgICBpZiAodmlldy5sYXlvdXRQZW5kaW5nKQogICAg
ICAgICAgICAgICAgIHZpZXcuX2xheW91dFN1YnRyZWUoKTsKICAgICAgICAgICAgIGVsc2UgaWYg
KHZpZXcuX2RpcnR5RGVzY2VuZGFudHNDb3VudCkgewotICAgICAgICAgICAgICAgIHZpZXdzID0g
dmlld3MuY29uY2F0KHZpZXcuc3Vidmlld3MpOworICAgICAgICAgICAgICAgIHZpZXdzLnB1c2go
Li4udmlldy5zdWJ2aWV3cyk7CiAgICAgICAgICAgICAgICAgdmlldy5fZGlydHlEZXNjZW5kYW50
c0NvdW50ID0gMDsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGVhNWNmYWFiMDhm
YTEwOTRhYmUwMDdmM2U2MGY3MDIxZjcwZTA4ZjkuLjJiMTJjMjhiM2E4ZmUxOTcxMGMyY2VkMjBh
ZGIwMzY3MTZkMDAxMzEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxOS0wOC0yMyAgRGV2aW4g
Um91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogcmVw
bGFjZSB1c2VzIG9mIGBBcnJheS5wcm90b3R5cGUuY29uY2F0YCB3aXRoIGBBcnJheS5wcm90b3R5
cGUucHVzaGAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIwMTA4MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogaW5zcGVjdG9yL3VuaXQtdGVzdHMvYXJyYXktdXRpbGl0aWVzLmh0bWw6CisgICAgICAgICog
aW5zcGVjdG9yL3VuaXQtdGVzdHMvYXJyYXktdXRpbGl0aWVzLWV4cGVjdGVkLnR4dDoKKyAgICAg
ICAgUmVtb3ZlIGBBcnJheS5wcm90b3R5cGUua2V5U2V0YCBpbiBmYXZvciBvZiB1c2luZyBgU2V0
YHMuCisKIDIwMTktMDgtMjIgIEZ1amlpIEhpcm9ub3JpICA8SGlyb25vcmkuRnVqaWlAc29ueS5j
b20+CiAKICAgICAgICAgW1NWR10gLXdlYmtpdC1jbGlwLXBhdGggdHJlYXRzIHVybChhYmMjeHl6
KSBhcyB1cmwoI3h5eikgYmVjYXVzZSBpdCBjaGVja3Mgb25seSBVUkwgZnJhZ21lbnQgcGFydApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3VuaXQtdGVzdHMvYXJyYXktdXRpbGl0
aWVzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci91bml0LXRlc3RzL2FycmF5
LXV0aWxpdGllcy1leHBlY3RlZC50eHQKaW5kZXggOWNjNmM5NmE5OWYxMmQyNmI5NDQwNDRiYWFi
Y2IzZmFmMzlkOTc2Yi4uOGRmYmFiNWIwOTNmNDZlZjNhZWNmOWYwYmMyYjQ2MmQ0YjFmYjlkMyAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3VuaXQtdGVzdHMvYXJyYXktdXRpbGl0
aWVzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdW5pdC10ZXN0cy9h
cnJheS11dGlsaXRpZXMtZXhwZWN0ZWQudHh0CkBAIC0xMzIsOCArMTMyLDMgQEAgUEFTUzogaW5z
ZXJ0QXRJbmRleCB3aXRoIDAgPCBpbmRleCA8IGxlbmd0aCBzaG91bGQgaW5zZXJ0IGF0IHRoZSBj
b3JyZWN0IGxvY2F0aW8KIFBBU1M6IGluc2VydEF0SW5kZXggd2l0aCBuZWdhdGl2ZSBpbmRleCBz
aG91bGQgaW5zZXJ0IGZyb20gdGhlIGVuZC4KIFBBU1M6IGluc2VydEF0SW5kZXggd2l0aCBpbmRl
eCBncmVhdGVyIHRoYW4gYXJyYXkgbGVuZ3RoIHNob3VsZCBpbnNlcnQgYXQgdGhlIGVuZC4KIAot
LS0gUnVubmluZyB0ZXN0IGNhc2U6IEFycmF5LnByb3RvdHlwZS5rZXlTZXQKLVBBU1M6IGtleVNl
dCBzaG91bGQgY3JlYXRlIGFuIG9iamVjdCB3aXRoIGtleXMgZXF1YWwgdG8gdGhlIGFycmF5IHZh
bHVlcy4KLVBBU1M6IGtleVNldCBzaG91bGQgY3JlYXRlIGFuIG9iamVjdCB3aXRoIGFsbCB2YWx1
ZXMgZXF1YWwgdG8gdHJ1ZS4KLVBBU1M6IGtleVNldCBzaG91bGQgY3JlYXRlIGFuIG9iamVjdCB3
aXRoIGtleXMgZXF1YWwgdG8gc3RyaW5naWZpZWQgYXJyYXkgdmFsdWVzLgotCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdW5pdC10ZXN0cy9hcnJheS11dGlsaXRpZXMuaHRtbCBi
L0xheW91dFRlc3RzL2luc3BlY3Rvci91bml0LXRlc3RzL2FycmF5LXV0aWxpdGllcy5odG1sCmlu
ZGV4IGMzMjgyYTc3OGMwNWZiZTY2NmYzNDFjNWU2NGZjNTBkMDdkNjc1YWMuLjgzNzA4MzNmNDY1
NjM1NWQyNDk1ZjcyOWY3MGU1Nzg0ZmFiZmQzNGMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2lu
c3BlY3Rvci91bml0LXRlc3RzL2FycmF5LXV0aWxpdGllcy5odG1sCisrKyBiL0xheW91dFRlc3Rz
L2luc3BlY3Rvci91bml0LXRlc3RzL2FycmF5LXV0aWxpdGllcy5odG1sCkBAIC0zMDQsMjEgKzMw
NCw2IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICB9CiAgICAgfSk7CiAKLSAgICBzdWl0ZS5h
ZGRUZXN0Q2FzZSh7Ci0gICAgICAgIG5hbWU6ICJBcnJheS5wcm90b3R5cGUua2V5U2V0IiwKLSAg
ICAgICAgdGVzdCgpIHsKLSAgICAgICAgICAgIGxldCBhcnIxID0gWyJhYmMiLCAiZGVmIiwgInh5
eiJdOwotICAgICAgICAgICAgbGV0IGtleVNldCA9IGFycjEua2V5U2V0KCk7Ci0gICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmV4cGVjdFNoYWxsb3dFcXVhbChPYmplY3Qua2V5cyhrZXlTZXQpLCBh
cnIxLCAia2V5U2V0IHNob3VsZCBjcmVhdGUgYW4gb2JqZWN0IHdpdGgga2V5cyBlcXVhbCB0byB0
aGUgYXJyYXkgdmFsdWVzLiIpOwotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RTaGFs
bG93RXF1YWwoT2JqZWN0LnZhbHVlcyhrZXlTZXQpLCBbdHJ1ZSwgdHJ1ZSwgdHJ1ZV0sICJrZXlT
ZXQgc2hvdWxkIGNyZWF0ZSBhbiBvYmplY3Qgd2l0aCBhbGwgdmFsdWVzIGVxdWFsIHRvIHRydWUu
Iik7Ci0KLSAgICAgICAgICAgIGxldCBhcnIyID0gWzEsIDIsIDNdOwotICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5leHBlY3RTaGFsbG93RXF1YWwoT2JqZWN0LmtleXMoYXJyMi5rZXlTZXQoKSks
IGFycjIubWFwKHggPT4geC50b1N0cmluZygpKSwgImtleVNldCBzaG91bGQgY3JlYXRlIGFuIG9i
amVjdCB3aXRoIGtleXMgZXF1YWwgdG8gc3RyaW5naWZpZWQgYXJyYXkgdmFsdWVzLiIpOwotCi0g
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotICAgIH0pOwotCiAgICAgc3VpdGUu
cnVuVGVzdENhc2VzQW5kRmluaXNoKCk7CiB9CiA8L3NjcmlwdD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>377374</attachid>
            <date>2019-08-27 13:18:06 -0700</date>
            <delta_ts>2019-08-29 15:15:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201082-20190827131805.patch</filename>
            <type>text/plain</type>
            <size>42742</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IDk3MDY5ZTA3ZWFhMTdlMzExODgzOWMxOWZlZDUy
N2Q3YWVjODdhYjAuLmMxNjhjNTZlNGU3NDdkMjJmNjE3YzVhNTViYjE3MTc2OTI2NzUyMDIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc1IEBACisyMDE5LTA4LTI3ICBEZXZp
biBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBy
ZXBsYWNlIHVzZXMgb2YgYEFycmF5LnByb3RvdHlwZS5jb25jYXRgIHdpdGggYEFycmF5LnByb3Rv
dHlwZS5wdXNoYAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjAxMDgyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgYHggPSB4LmNvbmNhdCh5KWAgaXMgdmVyeSBzbG93LCBhcyBgeGAgaGFzIHRvIGJlIGZ1bGx5
IGNvcGllZCBpbiBvcmRlciB0byBhZGQgYHlgIHRvIGl0LgorICAgICAgICBJbnRyb2R1Y2UgYEFy
cmF5LnByb3RvdHlwZS5wdXNoSXRlcmFibGVgLCB3aGljaCBpdGVyYXRlcyB0aGUgZ2l2ZW4gYGl0
ZXJhYmxlYCBhbmQgYWRkcyBlYWNoCisgICAgICAgIGl0ZW0gdG8gdGhlIGB0aGlzYCBhcnJheS4K
KworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvRE9NRGVidWdnZXJNYW5hZ2Vy
LmpzOgorICAgICAgICAoV0kuRE9NRGVidWdnZXJNYW5hZ2VyLnByb3RvdHlwZS5nZXQgZG9tQnJl
YWtwb2ludHMpOgorICAgICAgICAoV0kuRE9NRGVidWdnZXJNYW5hZ2VyLnByb3RvdHlwZS5kb21C
cmVha3BvaW50c0luU3VidHJlZSk6CisgICAgICAgICogVXNlckludGVyZmFjZS9Db250cm9sbGVy
cy9KYXZhU2NyaXB0UnVudGltZUNvbXBsZXRpb25Qcm92aWRlci5qczoKKyAgICAgICAgKFdJLkph
dmFTY3JpcHRSdW50aW1lQ29tcGxldGlvblByb3ZpZGVyLmNvbXBsZXRpb25Db250cm9sbGVyQ29t
cGxldGlvbnNOZWVkZWQucmVjZWl2ZWRQcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKiBVc2VySW50
ZXJmYWNlL01vZGVscy9DU1NDb21wbGV0aW9ucy5qczoKKyAgICAgICAgKFdJLkNTU0NvbXBsZXRp
b25zKToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL01vZGVscy9DU1NLZXl3b3JkQ29tcGxldGlv
bnMuanM6CisgICAgICAgIChXSS5DU1NLZXl3b3JkQ29tcGxldGlvbnMuZm9yUHJvcGVydHkpOgor
ICAgICAgICAoV0kuQ1NTS2V5d29yZENvbXBsZXRpb25zLmZvclByb3BlcnR5LmFkZEtleXdvcmRz
Rm9yTmFtZSk6CisgICAgICAgIChXSS5DU1NLZXl3b3JkQ29tcGxldGlvbnMuZm9yRnVuY3Rpb24p
OgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvTW9kZWxzL0NhbnZhcy5qczoKKyAgICAgICAgKFdJ
LkNhbnZhcy5wcm90b3R5cGUucmVjb3JkaW5nUHJvZ3Jlc3MpOgorICAgICAgICAqIFVzZXJJbnRl
cmZhY2UvTW9kZWxzL0RPTU5vZGVTdHlsZXMuanM6CisgICAgICAgIChXSS5ET01Ob2RlU3R5bGVz
LnByb3RvdHlwZS5fdXBkYXRlU3R5bGVDYXNjYWRlKToKKyAgICAgICAgKFdJLkRPTU5vZGVTdHls
ZXMucHJvdG90eXBlLl9jb2xsZWN0U3R5bGVzSW5DYXNjYWRlT3JkZXIpOgorICAgICAgICAqIFVz
ZXJJbnRlcmZhY2UvTW9kZWxzL1RpbWVsaW5lUmVjb3JkaW5nLmpzOgorICAgICAgICAoV0kuVGlt
ZWxpbmVSZWNvcmRpbmcucHJvdG90eXBlLmdldCBzb3VyY2VDb2RlVGltZWxpbmVzKToKKyAgICAg
ICAgKFdJLlRpbWVsaW5lUmVjb3JkaW5nLnByb3RvdHlwZS5pbml0aWFsaXplQ2FsbGluZ0NvbnRl
eHRUcmVlcyk6CisgICAgICAgICogVXNlckludGVyZmFjZS9Qcm90b2NvbC9SZW1vdGVPYmplY3Qu
anM6CisgICAgICAgIChXSS5SZW1vdGVPYmplY3QucHJvdG90eXBlLl9nZXRQcm9wZXJ0eURlc2Ny
aXB0b3JzUmVzb2x2ZXIpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvQ29uc29sZU1l
c3NhZ2VWaWV3LmpzOgorICAgICAgICAoV0kuQ29uc29sZU1lc3NhZ2VWaWV3LnByb3RvdHlwZS5f
YXBwZW5kTWVzc2FnZVRleHRBbmRBcmd1bWVudHMpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2Uv
Vmlld3MvQ29udGVudEJyb3dzZXIuanM6CisgICAgICAgIChXSS5Db250ZW50QnJvd3Nlci5wcm90
b3R5cGUuZ2V0IGN1cnJlbnRSZXByZXNlbnRlZE9iamVjdHMpOgorICAgICAgICAqIFVzZXJJbnRl
cmZhY2UvVmlld3MvRE9NVHJlZUVsZW1lbnQuanM6CisgICAgICAgIChXSS5ET01UcmVlRWxlbWVu
dC5wcm90b3R5cGUuX3Zpc2libGVDaGlsZHJlbik6CisgICAgICAgICogVXNlckludGVyZmFjZS9W
aWV3cy9EYXRhR3JpZE5vZGUuanM6CisgICAgICAgIChXSS5EYXRhR3JpZE5vZGUucHJvdG90eXBl
LmdldCBmaWx0ZXJhYmxlRGF0YSk6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9IZWFw
QWxsb2NhdGlvbnNUaW1lbGluZVZpZXcuanM6CisgICAgICAgIChXSS5IZWFwQWxsb2NhdGlvbnNU
aW1lbGluZVZpZXcucHJvdG90eXBlLmdldCBzZWxlY3Rpb25QYXRoQ29tcG9uZW50cyk6CisgICAg
ICAgICogVXNlckludGVyZmFjZS9WaWV3cy9JbmRleGVkRGF0YWJhc2VPYmplY3RTdG9yZUNvbnRl
bnRWaWV3LmpzOgorICAgICAgICAoV0kuSW5kZXhlZERhdGFiYXNlT2JqZWN0U3RvcmVDb250ZW50
Vmlldy5wcm90b3R5cGUuX2ZldGNoTW9yZURhdGEucHJvY2Vzc0VudHJpZXMpOgorICAgICAgICAq
IFVzZXJJbnRlcmZhY2UvVmlld3MvTmF2aWdhdGlvbkl0ZW0uanM6CisgICAgICAgIChXSS5OYXZp
Z2F0aW9uSXRlbS5wcm90b3R5cGUuZ2V0IF9jbGFzc05hbWVzKToKKyAgICAgICAgKiBVc2VySW50
ZXJmYWNlL1ZpZXdzL09iamVjdFRyZWVWaWV3LmpzOgorICAgICAgICAoV0kuT2JqZWN0VHJlZVZp
ZXcucHJvdG90eXBlLl91cGRhdGVQcm9wZXJ0aWVzKToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNl
L1ZpZXdzL09wZW5SZXNvdXJjZURpYWxvZy5qczoKKyAgICAgICAgKFdJLk9wZW5SZXNvdXJjZURp
YWxvZy5wcm90b3R5cGUuX2FkZFJlc291cmNlc0ZvckZyYW1lKToKKyAgICAgICAgKiBVc2VySW50
ZXJmYWNlL1ZpZXdzL092ZXJ2aWV3VGltZWxpbmVWaWV3LmpzOgorICAgICAgICAoV0kuT3ZlcnZp
ZXdUaW1lbGluZVZpZXcucHJvdG90eXBlLl9sb2FkRXhpc3RpbmdSZWNvcmRzKToKKyAgICAgICAg
KiBVc2VySW50ZXJmYWNlL1ZpZXdzL1Jlc291cmNlQ29sbGVjdGlvbkNvbnRlbnRWaWV3LmpzOgor
ICAgICAgICAoV0kuUmVzb3VyY2VDb2xsZWN0aW9uQ29udGVudFZpZXcucHJvdG90eXBlLmdldCBu
YXZpZ2F0aW9uSXRlbXMpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvUmVzb3VyY2VI
ZWFkZXJzQ29udGVudFZpZXcuanM6CisgICAgICAgIChXSS5SZXNvdXJjZUhlYWRlcnNDb250ZW50
Vmlldy5wcm90b3R5cGUuX3BlcmZvbVNlYXJjaE9uS2V5VmFsdWVQYWlycyk6CisgICAgICAgICog
VXNlckludGVyZmFjZS9WaWV3cy9SZXNvdXJjZVNlY3VyaXR5Q29udGVudFZpZXcuanM6CisgICAg
ICAgIChXSS5SZXNvdXJjZVNlY3VyaXR5Q29udGVudFZpZXcucHJvdG90eXBlLl9wZXJmb21TZWFy
Y2hPbktleVZhbHVlUGFpcnMpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvU2NyaXB0
Q2x1c3RlclRpbWVsaW5lVmlldy5qczoKKyAgICAgICAgKFdJLlNjcmlwdENsdXN0ZXJUaW1lbGlu
ZVZpZXcucHJvdG90eXBlLmdldCBzZWxlY3Rpb25QYXRoQ29tcG9uZW50cyk6CisgICAgICAgICog
VXNlckludGVyZmFjZS9WaWV3cy9TY3J1YmJlck5hdmlnYXRpb25JdGVtLmpzOgorICAgICAgICAo
V0kuU2NydWJiZXJOYXZpZ2F0aW9uSXRlbS5wcm90b3R5cGUuZ2V0IGFkZGl0aW9uYWxDbGFzc05h
bWVzKToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1NwcmVhZHNoZWV0U3R5bGVQcm9w
ZXJ0eS5qczoKKyAgICAgICAgKFdJLlNwcmVhZHNoZWV0U3R5bGVQcm9wZXJ0eS5wcm90b3R5cGUu
X2FkZEdyYWRpZW50VG9rZW5zKToKKyAgICAgICAgKFdJLlNwcmVhZHNoZWV0U3R5bGVQcm9wZXJ0
eS5wcm90b3R5cGUuX2FkZENvbG9yVG9rZW5zLnB1c2hQb3NzaWJsZUNvbG9yVG9rZW4pOgorICAg
ICAgICAoV0kuU3ByZWFkc2hlZXRTdHlsZVByb3BlcnR5LnByb3RvdHlwZS5fYWRkVGltaW5nRnVu
Y3Rpb25Ub2tlbnMpOgorICAgICAgICAoV0kuU3ByZWFkc2hlZXRTdHlsZVByb3BlcnR5LnByb3Rv
dHlwZS5fYWRkVmFyaWFibGVUb2tlbnMpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3Mv
VHJlZU91dGxpbmUuanM6CisgICAgICAgIChXSS5UcmVlT3V0bGluZS5wcm90b3R5cGUuc2VsZk9y
RGVzY2VuZGFudCk6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9WaWV3LmpzOgorICAg
ICAgICAoV0kuVmlldy5fdmlzaXRWaWV3VHJlZUZvckxheW91dCk6CisKIDIwMTktMDgtMjYgIERl
dmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6
IGRlY3JlYXNlIGhvcml6b250YWwgcGFkZGluZyBvZiBgV0kuU2NvcGVCYXJgIHRvIGhhdmUgbW9y
ZSByb29tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9C
YXNlL1V0aWxpdGllcy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jh
c2UvVXRpbGl0aWVzLmpzCmluZGV4IGRkZTllZWIzYWU4ZjQxZDRiMTJkZGE3ZWQ0YTRhNjQ5Njlm
YjhkODQuLjVmODBmN2EwNzNhYzNmMThlN2Q0NTBkY2QwMzRjYzViYzg3N2U2MWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvVXRpbGl0aWVzLmpz
CisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvVXRpbGl0aWVz
LmpzCkBAIC02OTAsNiArNjkwLDE1IEBAIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShBcnJheS5wcm90
b3R5cGUsICJpbnNlcnRBdEluZGV4IiwKICAgICB9CiB9KTsKIAorT2JqZWN0LmRlZmluZVByb3Bl
cnR5KEFycmF5LnByb3RvdHlwZSwgInB1c2hJdGVyYWJsZSIsCit7CisgICAgdmFsdWUoaXRlcmFi
bGUpCisgICAgeworICAgICAgICBmb3IgKGxldCBpdGVtIG9mIGl0ZXJhYmxlKQorICAgICAgICAg
ICAgdGhpcy5wdXNoKGl0ZW0pOworICAgIH0sCit9KTsKKwogT2JqZWN0LmRlZmluZVByb3BlcnR5
KEFycmF5LnByb3RvdHlwZSwgImtleVNldCIsCiB7CiAgICAgdmFsdWUoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvRE9NRGVidWdn
ZXJNYW5hZ2VyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJv
bGxlcnMvRE9NRGVidWdnZXJNYW5hZ2VyLmpzCmluZGV4IGUwMjc5NDU3YjUyMzcwZTVkNWI4ZjE5
Y2E3NDBlODU2MTg3MTI1NWMuLjZhZjI0NTcwYTY4MjgzNGU3MzJhZWVkNDlmY2NlYzhkZDkzMGRl
YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRy
b2xsZXJzL0RPTURlYnVnZ2VyTWFuYWdlci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9Db250cm9sbGVycy9ET01EZWJ1Z2dlck1hbmFnZXIuanMKQEAgLTI0Niwx
MSArMjQ2LDEyIEBAIFdJLkRPTURlYnVnZ2VyTWFuYWdlciA9IGNsYXNzIERPTURlYnVnZ2VyTWFu
YWdlciBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICBsZXQgZnJhbWVzID0gW21haW5GcmFtZV07
CiAgICAgICAgIHdoaWxlIChmcmFtZXMubGVuZ3RoKSB7CiAgICAgICAgICAgICBsZXQgZnJhbWUg
PSBmcmFtZXMuc2hpZnQoKTsKKwogICAgICAgICAgICAgbGV0IGRvbUJyZWFrcG9pbnROb2RlSWRl
bnRpZmllck1hcCA9IHRoaXMuX2RvbUJyZWFrcG9pbnRGcmFtZUlkZW50aWZpZXJNYXAuZ2V0KGZy
YW1lLmlkKTsKICAgICAgICAgICAgIGlmIChkb21CcmVha3BvaW50Tm9kZUlkZW50aWZpZXJNYXAp
Ci0gICAgICAgICAgICAgICAgcmVzb2x2ZWRCcmVha3BvaW50cyA9IHJlc29sdmVkQnJlYWtwb2lu
dHMuY29uY2F0KEFycmF5LmZyb20oZG9tQnJlYWtwb2ludE5vZGVJZGVudGlmaWVyTWFwLnZhbHVl
cygpKSk7CisgICAgICAgICAgICAgICAgcmVzb2x2ZWRCcmVha3BvaW50cy5wdXNoSXRlcmFibGUo
ZG9tQnJlYWtwb2ludE5vZGVJZGVudGlmaWVyTWFwLnZhbHVlcygpKTsKIAotICAgICAgICAgICAg
ZnJhbWVzLnB1c2goLi4uZnJhbWUuY2hpbGRGcmFtZUNvbGxlY3Rpb24pOworICAgICAgICAgICAg
ZnJhbWVzLnB1c2hJdGVyYWJsZShmcmFtZS5jaGlsZEZyYW1lQ29sbGVjdGlvbik7CiAgICAgICAg
IH0KIAogICAgICAgICByZXR1cm4gcmVzb2x2ZWRCcmVha3BvaW50czsKQEAgLTI5NCw4ICsyOTUs
OCBAQCBXSS5ET01EZWJ1Z2dlck1hbmFnZXIgPSBjbGFzcyBET01EZWJ1Z2dlck1hbmFnZXIgZXh0
ZW5kcyBXSS5PYmplY3QKICAgICAgICAgICAgIHdoaWxlIChjaGlsZHJlbi5sZW5ndGgpIHsKICAg
ICAgICAgICAgICAgICBsZXQgY2hpbGQgPSBjaGlsZHJlbi5wb3AoKTsKICAgICAgICAgICAgICAg
ICBpZiAoY2hpbGQuY2hpbGRyZW4pCi0gICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gY2hp
bGRyZW4uY29uY2F0KGNoaWxkLmNoaWxkcmVuKTsKLSAgICAgICAgICAgICAgICBicmVha3BvaW50
cyA9IGJyZWFrcG9pbnRzLmNvbmNhdCh0aGlzLmRvbUJyZWFrcG9pbnRzRm9yTm9kZShjaGlsZCkp
OworICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbi5wdXNoSXRlcmFibGUoY2hpbGQuY2hpbGRy
ZW4pOworICAgICAgICAgICAgICAgIGJyZWFrcG9pbnRzLnB1c2hJdGVyYWJsZSh0aGlzLmRvbUJy
ZWFrcG9pbnRzRm9yTm9kZShjaGlsZCkpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJz
L0phdmFTY3JpcHRSdW50aW1lQ29tcGxldGlvblByb3ZpZGVyLmpzIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvSmF2YVNjcmlwdFJ1bnRpbWVDb21wbGV0
aW9uUHJvdmlkZXIuanMKaW5kZXggZDEyZDQyYjM2MGUxZTVhOGQzMjE4MWUwNDIyYjI2NjQ5Yjk1
NjBlNS4uMTc1ODM1NmZlYmIyZDkwM2VhNTA4ODU2MjU4MzJlYzMzYmUxMzZkMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvSmF2YVNj
cmlwdFJ1bnRpbWVDb21wbGV0aW9uUHJvdmlkZXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvSmF2YVNjcmlwdFJ1bnRpbWVDb21wbGV0aW9u
UHJvdmlkZXIuanMKQEAgLTI2Miw3ICsyNjIsNyBAQCBXSS5KYXZhU2NyaXB0UnVudGltZUNvbXBs
ZXRpb25Qcm92aWRlciA9IGNsYXNzIEphdmFTY3JpcHRSdW50aW1lQ29tcGxldGlvblByb3ZpZAog
ICAgICAgICAgICAgV0kucnVudGltZU1hbmFnZXIuYWN0aXZlRXhlY3V0aW9uQ29udGV4dC50YXJn
ZXQuUnVudGltZUFnZW50LnJlbGVhc2VPYmplY3RHcm91cCgiY29tcGxldGlvbiIpOwogCiAgICAg
ICAgICAgICBpZiAoIWJhc2UpIHsKLSAgICAgICAgICAgICAgICBwcm9wZXJ0eU5hbWVzLnB1c2go
Li4uSmF2YVNjcmlwdFJ1bnRpbWVDb21wbGV0aW9uUHJvdmlkZXIuX2NvbW1hbmRMaW5lQVBJS2V5
cyk7CisgICAgICAgICAgICAgICAgcHJvcGVydHlOYW1lcy5wdXNoSXRlcmFibGUoSmF2YVNjcmlw
dFJ1bnRpbWVDb21wbGV0aW9uUHJvdmlkZXIuX2NvbW1hbmRMaW5lQVBJS2V5cyk7CiAKICAgICAg
ICAgICAgICAgICBsZXQgc2F2ZWRSZXN1bHRBbGlhcyA9IFdJLnNldHRpbmdzLmNvbnNvbGVTYXZl
ZFJlc3VsdEFsaWFzLnZhbHVlOwogICAgICAgICAgICAgICAgIGlmIChzYXZlZFJlc3VsdEFsaWFz
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxz
L0NTU0NvbXBsZXRpb25zLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
TW9kZWxzL0NTU0NvbXBsZXRpb25zLmpzCmluZGV4IGRjMjgxMjJkZGI5ZTk4MWJiMjY2NGMyZGY0
NjhhZjgyY2QyNjFjMWQuLjI1NDg4ZTJiZGZlZWZkZTkzMWI3MGI5YjBlMzAyMDUxMTdiNzdiNWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9D
U1NDb21wbGV0aW9ucy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9Nb2RlbHMvQ1NTQ29tcGxldGlvbnMuanMKQEAgLTQyLDcgKzQyLDcgQEAgV0kuQ1NTQ29tcGxl
dGlvbnMgPSBjbGFzcyBDU1NDb21wbGV0aW9ucwogICAgICAgICAvLyBwcm9wZXJ0aWVzIHdoZW4g
aW5pdGlhbGl6ZWQgZnJvbSB0aGUgcHJvdG9jb2wgZm9yIENTU0NvbXBsZXRpb25zLmNzc05hbWVD
b21wbGV0aW9ucy4KICAgICAgICAgLy8gT3IgaXQgbWF5IGp1c3QgYSBsaXN0IG9mIHN0cmluZ3Mg
d2hlbiBxdWlja2x5IGluaXRpYWxpemVkIGZvciBvdGhlciBjb21wbGV0aW9uIHB1cnBvc2VzLgog
ICAgICAgICBpZiAocHJvcGVydGllcy5sZW5ndGggJiYgdHlwZW9mIHByb3BlcnRpZXNbMF0gPT09
ICJzdHJpbmciKQotICAgICAgICAgICAgdGhpcy5fdmFsdWVzID0gdGhpcy5fdmFsdWVzLmNvbmNh
dChwcm9wZXJ0aWVzKTsKKyAgICAgICAgICAgIHRoaXMuX3ZhbHVlcy5wdXNoSXRlcmFibGUocHJv
cGVydGllcyk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgZm9yICh2YXIgcHJvcGVydHkg
b2YgcHJvcGVydGllcykgewogICAgICAgICAgICAgICAgIHZhciBwcm9wZXJ0eU5hbWUgPSBwcm9w
ZXJ0eS5uYW1lOwpAQCAtNTIsNyArNTIsNyBAQCBXSS5DU1NDb21wbGV0aW9ucyA9IGNsYXNzIENT
U0NvbXBsZXRpb25zCiAKICAgICAgICAgICAgICAgICBsZXQgYWxpYXNlcyA9IHByb3BlcnR5LmFs
aWFzZXM7CiAgICAgICAgICAgICAgICAgaWYgKGFsaWFzZXMpCi0gICAgICAgICAgICAgICAgICAg
IHRoaXMuX3ZhbHVlcyA9IHRoaXMuX3ZhbHVlcy5jb25jYXQoYWxpYXNlcyk7CisgICAgICAgICAg
ICAgICAgICAgIHRoaXMuX3ZhbHVlcy5wdXNoSXRlcmFibGUoYWxpYXNlcyk7CiAKICAgICAgICAg
ICAgICAgICB2YXIgbG9uZ2hhbmRzID0gcHJvcGVydHkubG9uZ2hhbmRzOwogICAgICAgICAgICAg
ICAgIGlmIChsb25naGFuZHMpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL01vZGVscy9DU1NLZXl3b3JkQ29tcGxldGlvbnMuanMgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvQ1NTS2V5d29yZENvbXBsZXRpb25zLmpz
CmluZGV4IGE1MzZhNWE4NDEyN2ExZThhZjM4MGZlMmY5ODdhOWVjYjgxYzQ3NmEuLjY5OTNkOWZi
NWNiODJjZTY0NWYzMmY5NWFkYmJjMzM4NzlkNmU2YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9DU1NLZXl3b3JkQ29tcGxldGlvbnMuanMK
KysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0NTU0tleXdv
cmRDb21wbGV0aW9ucy5qcwpAQCAtMzksMTIgKzM5LDEyIEBAIFdJLkNTU0tleXdvcmRDb21wbGV0
aW9ucy5mb3JQcm9wZXJ0eSA9IGZ1bmN0aW9uKHByb3BlcnR5TmFtZSkKICAgICAgICAgbGV0IGlz
Tm90UHJlZml4ZWQgPSBuYW1lLmNoYXJBdCgwKSAhPT0gIi0iOwogCiAgICAgICAgIGlmIChuYW1l
IGluIFdJLkNTU0tleXdvcmRDb21wbGV0aW9ucy5fcHJvcGVydHlLZXl3b3JkTWFwKQotICAgICAg
ICAgICAgYWNjZXB0ZWRLZXl3b3JkcyA9IGFjY2VwdGVkS2V5d29yZHMuY29uY2F0KFdJLkNTU0tl
eXdvcmRDb21wbGV0aW9ucy5fcHJvcGVydHlLZXl3b3JkTWFwW25hbWVdKTsKKyAgICAgICAgICAg
IGFjY2VwdGVkS2V5d29yZHMucHVzaEl0ZXJhYmxlKFdJLkNTU0tleXdvcmRDb21wbGV0aW9ucy5f
cHJvcGVydHlLZXl3b3JkTWFwW25hbWVdKTsKICAgICAgICAgZWxzZSBpZiAoaXNOb3RQcmVmaXhl
ZCAmJiAoIi13ZWJraXQtIiArIG5hbWUpIGluIFdJLkNTU0tleXdvcmRDb21wbGV0aW9ucy5fcHJv
cGVydHlLZXl3b3JkTWFwKQotICAgICAgICAgICAgYWNjZXB0ZWRLZXl3b3JkcyA9IGFjY2VwdGVk
S2V5d29yZHMuY29uY2F0KFdJLkNTU0tleXdvcmRDb21wbGV0aW9ucy5fcHJvcGVydHlLZXl3b3Jk
TWFwWyItd2Via2l0LSIgKyBuYW1lXSk7CisgICAgICAgICAgICBhY2NlcHRlZEtleXdvcmRzLnB1
c2hJdGVyYWJsZShXSS5DU1NLZXl3b3JkQ29tcGxldGlvbnMuX3Byb3BlcnR5S2V5d29yZE1hcFsi
LXdlYmtpdC0iICsgbmFtZV0pOwogCiAgICAgICAgIGlmIChXSS5DU1NLZXl3b3JkQ29tcGxldGlv
bnMuaXNDb2xvckF3YXJlUHJvcGVydHkobmFtZSkpCi0gICAgICAgICAgICBhY2NlcHRlZEtleXdv
cmRzID0gYWNjZXB0ZWRLZXl3b3Jkcy5jb25jYXQoV0kuQ1NTS2V5d29yZENvbXBsZXRpb25zLl9j
b2xvcnMpOworICAgICAgICAgICAgYWNjZXB0ZWRLZXl3b3Jkcy5wdXNoSXRlcmFibGUoV0kuQ1NT
S2V5d29yZENvbXBsZXRpb25zLl9jb2xvcnMpOwogCiAgICAgICAgIC8vIE9ubHkgc3VnZ2VzdCAi
aW5oZXJpdCIgb24gaW5oZXJpdGFibGUgcHJvcGVydGllcyBldmVuIHRob3VnaCBpdCBpcyB2YWxp
ZCBvbiBhbGwgcHJvcGVydGllcy4KICAgICAgICAgaWYgKFdJLkNTU0tleXdvcmRDb21wbGV0aW9u
cy5Jbmhlcml0ZWRQcm9wZXJ0aWVzLmhhcyhuYW1lKSkKQEAgLTY3LDcgKzY3LDcgQEAgV0kuQ1NT
S2V5d29yZENvbXBsZXRpb25zLmZvclByb3BlcnR5ID0gZnVuY3Rpb24ocHJvcGVydHlOYW1lKQog
CiAgICAgaWYgKGFjY2VwdGVkS2V5d29yZHMuaW5jbHVkZXMoV0kuQ1NTS2V5d29yZENvbXBsZXRp
b25zLkFsbFByb3BlcnR5TmFtZXNQbGFjZWhvbGRlcikgJiYgV0kuQ1NTQ29tcGxldGlvbnMuY3Nz
TmFtZUNvbXBsZXRpb25zKSB7CiAgICAgICAgIGFjY2VwdGVkS2V5d29yZHMucmVtb3ZlKFdJLkNT
U0tleXdvcmRDb21wbGV0aW9ucy5BbGxQcm9wZXJ0eU5hbWVzUGxhY2Vob2xkZXIpOwotICAgICAg
ICBhY2NlcHRlZEtleXdvcmRzID0gYWNjZXB0ZWRLZXl3b3Jkcy5jb25jYXQoV0kuQ1NTQ29tcGxl
dGlvbnMuY3NzTmFtZUNvbXBsZXRpb25zLnZhbHVlcyk7CisgICAgICAgIGFjY2VwdGVkS2V5d29y
ZHMucHVzaEl0ZXJhYmxlKFdJLkNTU0NvbXBsZXRpb25zLmNzc05hbWVDb21wbGV0aW9ucy52YWx1
ZXMpOwogICAgIH0KIAogICAgIHJldHVybiBuZXcgV0kuQ1NTQ29tcGxldGlvbnMoQXJyYXkuZnJv
bShuZXcgU2V0KGFjY2VwdGVkS2V5d29yZHMpKSwgdHJ1ZSk7CkBAIC0xMDcsMTYgKzEwNywxNiBA
QCBXSS5DU1NLZXl3b3JkQ29tcGxldGlvbnMuZm9yRnVuY3Rpb24gPSBmdW5jdGlvbihmdW5jdGlv
bk5hbWUpCiAgICAgaWYgKGZ1bmN0aW9uTmFtZSA9PT0gInZhciIpCiAgICAgICAgIHN1Z2dlc3Rp
b25zID0gW107CiAgICAgZWxzZSBpZiAoZnVuY3Rpb25OYW1lID09PSAiY2FsYyIgfHwgZnVuY3Rp
b25OYW1lID09PSAibWluIiB8fCBmdW5jdGlvbk5hbWUgPT09ICJtYXgiKQotICAgICAgICBzdWdn
ZXN0aW9ucyA9IHN1Z2dlc3Rpb25zLmNvbmNhdChbImNhbGMoKSIsICJtaW4oKSIsICJtYXgoKSJd
KTsKKyAgICAgICAgc3VnZ2VzdGlvbnMucHVzaCgiY2FsYygpIiwgIm1pbigpIiwgIm1heCgpIik7
CiAgICAgZWxzZSBpZiAoZnVuY3Rpb25OYW1lID09PSAiZW52IikKLSAgICAgICAgc3VnZ2VzdGlv
bnMgPSBzdWdnZXN0aW9ucy5jb25jYXQoWyJzYWZlLWFyZWEtaW5zZXQtdG9wIiwgInNhZmUtYXJl
YS1pbnNldC1yaWdodCIsICJzYWZlLWFyZWEtaW5zZXQtYm90dG9tIiwgInNhZmUtYXJlYS1pbnNl
dC1sZWZ0Il0pOworICAgICAgICBzdWdnZXN0aW9ucy5wdXNoKCJzYWZlLWFyZWEtaW5zZXQtdG9w
IiwgInNhZmUtYXJlYS1pbnNldC1yaWdodCIsICJzYWZlLWFyZWEtaW5zZXQtYm90dG9tIiwgInNh
ZmUtYXJlYS1pbnNldC1sZWZ0Iik7CiAgICAgZWxzZSBpZiAoZnVuY3Rpb25OYW1lID09PSAiaW1h
Z2Utc2V0IikKICAgICAgICAgc3VnZ2VzdGlvbnMucHVzaCgidXJsKCkiKTsKICAgICBlbHNlIGlm
IChmdW5jdGlvbk5hbWUgPT09ICJyZXBlYXQiKQotICAgICAgICBzdWdnZXN0aW9ucyA9IHN1Z2dl
c3Rpb25zLmNvbmNhdChbImF1dG8iLCAiYXV0by1maWxsIiwgImF1dG8tZml0IiwgIm1pbi1jb250
ZW50IiwgIm1heC1jb250ZW50Il0pOworICAgICAgICBzdWdnZXN0aW9ucy5wdXNoKCJhdXRvIiwg
ImF1dG8tZmlsbCIsICJhdXRvLWZpdCIsICJtaW4tY29udGVudCIsICJtYXgtY29udGVudCIpOwog
ICAgIGVsc2UgaWYgKGZ1bmN0aW9uTmFtZS5lbmRzV2l0aCgiZ3JhZGllbnQiKSkgewotICAgICAg
ICBzdWdnZXN0aW9ucyA9IHN1Z2dlc3Rpb25zLmNvbmNhdChbInRvIiwgImxlZnQiLCAicmlnaHQi
LCAidG9wIiwgImJvdHRvbSJdKTsKLSAgICAgICAgc3VnZ2VzdGlvbnMgPSBzdWdnZXN0aW9ucy5j
b25jYXQoV0kuQ1NTS2V5d29yZENvbXBsZXRpb25zLl9jb2xvcnMpOworICAgICAgICBzdWdnZXN0
aW9ucy5wdXNoKCJ0byIsICJsZWZ0IiwgInJpZ2h0IiwgInRvcCIsICJib3R0b20iKTsKKyAgICAg
ICAgc3VnZ2VzdGlvbnMucHVzaEl0ZXJhYmxlKFdJLkNTU0tleXdvcmRDb21wbGV0aW9ucy5fY29s
b3JzKTsKICAgICB9CiAKICAgICByZXR1cm4gbmV3IFdJLkNTU0NvbXBsZXRpb25zKHN1Z2dlc3Rp
b25zLCB0cnVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL01vZGVscy9DYW52YXMuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9Nb2RlbHMvQ2FudmFzLmpzCmluZGV4IDdhMzg4MGZkNTZjN2U2MDFkMTY2OGYxODJlNjI1OTg3
Y2FjYzAwMzIuLjZkY2I2MzdjYTE3M2E2MjFiMzg0NjI3YTdmNDVlMGYwNDFhYWY0ZGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9DYW52YXMu
anMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0NhbnZh
cy5qcwpAQCAtMzYyLDcgKzM2Miw3IEBAIFdJLkNhbnZhcyA9IGNsYXNzIENhbnZhcyBleHRlbmRz
IFdJLk9iamVjdAogICAgIHsKICAgICAgICAgLy8gQ2FsbGVkIGZyb20gV0kuQ2FudmFzTWFuYWdl
ci4KIAotICAgICAgICB0aGlzLl9yZWNvcmRpbmdGcmFtZXMucHVzaCguLi5mcmFtZXNQYXlsb2Fk
Lm1hcChXSS5SZWNvcmRpbmdGcmFtZS5mcm9tUGF5bG9hZCkpOworICAgICAgICB0aGlzLl9yZWNv
cmRpbmdGcmFtZXMucHVzaEl0ZXJhYmxlKGZyYW1lc1BheWxvYWQubWFwKFdJLlJlY29yZGluZ0Zy
YW1lLmZyb21QYXlsb2FkKSk7CiAKICAgICAgICAgdGhpcy5fcmVjb3JkaW5nQnVmZmVyVXNlZCA9
IGJ1ZmZlclVzZWQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL01vZGVscy9ET01Ob2RlU3R5bGVzLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvTW9kZWxzL0RPTU5vZGVTdHlsZXMuanMKaW5kZXggNDMwOWI2YTYxZTM3ODll
NGNkMTJjNjcyYjBlMjkzYTYwODhkODVjZC4uNzlmMmU3NDg4YTVmNGJjNWIyODZjM2NlYWRjNTY1
ZWEwYTcyMmY5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvTW9kZWxzL0RPTU5vZGVTdHlsZXMuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvTW9kZWxzL0RPTU5vZGVTdHlsZXMuanMKQEAgLTczOCw3ICs3MzgsNyBAQCBX
SS5ET01Ob2RlU3R5bGVzID0gY2xhc3MgRE9NTm9kZVN0eWxlcyBleHRlbmRzIFdJLk9iamVjdAog
ICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuX2luaGVyaXRlZFJ1bGVzLmxlbmd0aDsg
KytpKSB7CiAgICAgICAgICAgICB2YXIgaW5oZXJpdGVkU3R5bGVJbmZvID0gdGhpcy5faW5oZXJp
dGVkUnVsZXNbaV07CiAgICAgICAgICAgICB2YXIgaW5oZXJpdGVkQ2FzY2FkZU9yZGVyID0gdGhp
cy5fY29sbGVjdFN0eWxlc0luQ2FzY2FkZU9yZGVyKGluaGVyaXRlZFN0eWxlSW5mby5tYXRjaGVk
UnVsZXMsIGluaGVyaXRlZFN0eWxlSW5mby5pbmxpbmVTdHlsZSwgbnVsbCk7Ci0gICAgICAgICAg
ICBjYXNjYWRlT3JkZXJlZFN0eWxlRGVjbGFyYXRpb25zID0gY2FzY2FkZU9yZGVyZWRTdHlsZURl
Y2xhcmF0aW9ucy5jb25jYXQoaW5oZXJpdGVkQ2FzY2FkZU9yZGVyKTsKKyAgICAgICAgICAgIGNh
c2NhZGVPcmRlcmVkU3R5bGVEZWNsYXJhdGlvbnMucHVzaEl0ZXJhYmxlKGluaGVyaXRlZENhc2Nh
ZGVPcmRlcik7CiAgICAgICAgIH0KIAogICAgICAgICB0aGlzLl9vcmRlcmVkU3R5bGVzID0gY2Fz
Y2FkZU9yZGVyZWRTdHlsZURlY2xhcmF0aW9uczsKQEAgLTc4OCw3ICs3ODgsNyBAQCBXSS5ET01O
b2RlU3R5bGVzID0gY2xhc3MgRE9NTm9kZVN0eWxlcyBleHRlbmRzIFdJLk9iamVjdAogICAgICAg
ICAgICAgcmVzdWx0LnB1c2goYXR0cmlidXRlc1N0eWxlKTsKIAogICAgICAgICAvLyBGaW5hbGx5
IGFkZCB0aGUgdXNlciBhbmQgdXNlciBzdHlsZXNoZWV0J3MgbWF0Y2hlZCBzdHlsZSBydWxlcyB3
ZSBjb2xsZWN0ZWQgZWFybGllci4KLSAgICAgICAgcmVzdWx0ID0gcmVzdWx0LmNvbmNhdCh1c2Vy
QW5kVXNlckFnZW50U3R5bGVzKTsKKyAgICAgICAgcmVzdWx0LnB1c2hJdGVyYWJsZSh1c2VyQW5k
VXNlckFnZW50U3R5bGVzKTsKIAogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9UaW1lbGlu
ZVJlY29yZGluZy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVs
cy9UaW1lbGluZVJlY29yZGluZy5qcwppbmRleCA4NzNlODc4ZWVmMWNkMjk2ZGVmZmE0MTczNGNi
ZWExZDA0ZjBlYzFhLi43YjlhNTRhNmE5MGY0YTgyOTQzZjc3MWFhZTgxYmZkZmU0MjhmOWQ5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvVGlt
ZWxpbmVSZWNvcmRpbmcuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvTW9kZWxzL1RpbWVsaW5lUmVjb3JkaW5nLmpzCkBAIC0yNzIsNyArMjcyLDcgQEAgV0kuVGlt
ZWxpbmVSZWNvcmRpbmcgPSBjbGFzcyBUaW1lbGluZVJlY29yZGluZyBleHRlbmRzIFdJLk9iamVj
dAogICAgIHsKICAgICAgICAgbGV0IHRpbWVsaW5lcyA9IFtdOwogICAgICAgICBmb3IgKGxldCB0
aW1lbGluZXNGb3JTb3VyY2VDb2RlIG9mIHRoaXMuX3NvdXJjZUNvZGVUaW1lbGluZXNNYXAudmFs
dWVzKCkpCi0gICAgICAgICAgICB0aW1lbGluZXMgPSB0aW1lbGluZXMuY29uY2F0KEFycmF5LmZy
b20odGltZWxpbmVzRm9yU291cmNlQ29kZS52YWx1ZXMoKSkpOworICAgICAgICAgICAgdGltZWxp
bmVzLnB1c2hJdGVyYWJsZSh0aW1lbGluZXNGb3JTb3VyY2VDb2RlLnZhbHVlcygpKTsKICAgICAg
ICAgcmV0dXJuIHRpbWVsaW5lczsKICAgICB9CiAKQEAgLTQ2MCw4ICs0NjAsOCBAQCBXSS5UaW1l
bGluZVJlY29yZGluZyA9IGNsYXNzIFRpbWVsaW5lUmVjb3JkaW5nIGV4dGVuZHMgV0kuT2JqZWN0
CiAKICAgICBpbml0aWFsaXplQ2FsbGluZ0NvbnRleHRUcmVlcyhzdGFja1RyYWNlcywgc2FtcGxl
RHVyYXRpb25zKQogICAgIHsKLSAgICAgICAgdGhpcy5fZXhwb3J0RGF0YVNhbXBsZVN0YWNrVHJh
Y2VzID0gdGhpcy5fZXhwb3J0RGF0YVNhbXBsZVN0YWNrVHJhY2VzLmNvbmNhdChzdGFja1RyYWNl
cyk7Ci0gICAgICAgIHRoaXMuX2V4cG9ydERhdGFTYW1wbGVEdXJhdGlvbnMgPSB0aGlzLl9leHBv
cnREYXRhU2FtcGxlRHVyYXRpb25zLmNvbmNhdChzYW1wbGVEdXJhdGlvbnMpOworICAgICAgICB0
aGlzLl9leHBvcnREYXRhU2FtcGxlU3RhY2tUcmFjZXMucHVzaEl0ZXJhYmxlKHN0YWNrVHJhY2Vz
KTsKKyAgICAgICAgdGhpcy5fZXhwb3J0RGF0YVNhbXBsZUR1cmF0aW9ucy5wdXNoSXRlcmFibGUo
c2FtcGxlRHVyYXRpb25zKTsKIAogICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHN0YWNrVHJh
Y2VzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgICB0aGlzLl90b3BEb3duQ2FsbGluZ0NvbnRl
eHRUcmVlLnVwZGF0ZVRyZWVXaXRoU3RhY2tUcmFjZShzdGFja1RyYWNlc1tpXSwgc2FtcGxlRHVy
YXRpb25zW2ldKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1Byb3RvY29sL1JlbW90ZU9iamVjdC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1Byb3RvY29sL1JlbW90ZU9iamVjdC5qcwppbmRleCAwMjI4Mjc5NDBkMGZlMDlk
ZDU3ZGM3YzQ3YWNiN2I2ZjZmM2YwNzZiLi4wYjQ0YTQwMzE4Njg2YTU5MTYxM2UzYmYzNjAwNzc2
ZGEyOWU1MjQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9Qcm90b2NvbC9SZW1vdGVPYmplY3QuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvUHJvdG9jb2wvUmVtb3RlT2JqZWN0LmpzCkBAIC02MjgsMTQgKzYyOCwxMSBA
QCBXSS5SZW1vdGVPYmplY3QgPSBjbGFzcyBSZW1vdGVPYmplY3QKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQogCi0gICAgICAgIGxldCBkZXNjcmlwdG9ycyA9IHByb3BlcnRpZXMubWFw
KChwYXlsb2FkKSA9PiB7Ci0gICAgICAgICAgICByZXR1cm4gV0kuUHJvcGVydHlEZXNjcmlwdG9y
LmZyb21QYXlsb2FkKHBheWxvYWQsIGZhbHNlLCB0aGlzLl90YXJnZXQpOwotICAgICAgICB9KTsK
KyAgICAgICAgbGV0IGRlc2NyaXB0b3JzID0gcHJvcGVydGllcy5tYXAoKHBheWxvYWQpID0+IFdJ
LlByb3BlcnR5RGVzY3JpcHRvci5mcm9tUGF5bG9hZChwYXlsb2FkLCBmYWxzZSwgdGhpcy5fdGFy
Z2V0KSk7CiAKICAgICAgICAgaWYgKGludGVybmFsUHJvcGVydGllcykgewotICAgICAgICAgICAg
ZGVzY3JpcHRvcnMgPSBkZXNjcmlwdG9ycy5jb25jYXQoaW50ZXJuYWxQcm9wZXJ0aWVzLm1hcCgo
cGF5bG9hZCkgPT4gewotICAgICAgICAgICAgICAgIHJldHVybiBXSS5Qcm9wZXJ0eURlc2NyaXB0
b3IuZnJvbVBheWxvYWQocGF5bG9hZCwgdHJ1ZSwgdGhpcy5fdGFyZ2V0KTsKLSAgICAgICAgICAg
IH0pKTsKKyAgICAgICAgICAgIGZvciAobGV0IHBheWxvYWQgb2YgaW50ZXJuYWxQcm9wZXJ0aWVz
KQorICAgICAgICAgICAgICAgIGRlc2NyaXB0b3JzLnB1c2goV0kuUHJvcGVydHlEZXNjcmlwdG9y
LmZyb21QYXlsb2FkKHBheWxvYWQsIHRydWUsIHRoaXMuX3RhcmdldCkpOwogICAgICAgICB9CiAK
ICAgICAgICAgY2FsbGJhY2soZGVzY3JpcHRvcnMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29uc29sZU1lc3NhZ2VWaWV3LmpzIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29uc29sZU1lc3NhZ2VWaWV3
LmpzCmluZGV4IDI1NDRkN2Y1MDUzYzYzNDIyMGU2YmRiNTcyMTlmYWRmMzUzMjZkYTAuLjA3YTkw
N2I0NGYxZGVhNWVlMmVmZjI1NWY3MTZiN2FjMzEzOGFmZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnNvbGVNZXNzYWdlVmlldy5qcwor
KysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db25zb2xlTWVz
c2FnZVZpZXcuanMKQEAgLTI2Miw3ICsyNjIsNyBAQCBXSS5Db25zb2xlTWVzc2FnZVZpZXcgPSBj
bGFzcyBDb25zb2xlTWVzc2FnZVZpZXcgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgICAgICAg
ICAgICAgICAgIHZhciBwcmVmaXhlZEZvcm1hdFN0cmluZyA9IFdJLlVJU3RyaW5nKCJUcmFjZTog
JXMiKS5mb3JtYXQodGhpcy5fbWVzc2FnZS5wYXJhbWV0ZXJzWzBdLmRlc2NyaXB0aW9uKTsKICAg
ICAgICAgICAgICAgICAgICAgICAgIGFyZ3MgPSBbcHJlZml4ZWRGb3JtYXRTdHJpbmddLmNvbmNh
dCh0aGlzLl9tZXNzYWdlLnBhcmFtZXRlcnMuc2xpY2UoMSkpOwogICAgICAgICAgICAgICAgICAg
ICB9IGVsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3MgPSBhcmdzLmNvbmNhdCh0aGlz
Ll9tZXNzYWdlLnBhcmFtZXRlcnMpOworICAgICAgICAgICAgICAgICAgICAgICAgYXJncy5wdXNo
SXRlcmFibGUodGhpcy5fbWVzc2FnZS5wYXJhbWV0ZXJzKTsKICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAgICAgdGhpcy5fYXBwZW5kRm9ybWF0dGVkQXJndW1lbnRzKGVsZW1lbnQsIGFy
Z3MpOwogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTI3NCw3ICsyNzQsNyBAQCBXSS5Db25z
b2xlTWVzc2FnZVZpZXcgPSBjbGFzcyBDb25zb2xlTWVzc2FnZVZpZXcgZXh0ZW5kcyBXSS5PYmpl
Y3QKICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBwcmVmaXhlZEZvcm1hdFN0cmluZyA9IFdJ
LlVJU3RyaW5nKCJBc3NlcnRpb24gRmFpbGVkOiAlcyIpLmZvcm1hdCh0aGlzLl9tZXNzYWdlLnBh
cmFtZXRlcnNbMF0uZGVzY3JpcHRpb24pOwogICAgICAgICAgICAgICAgICAgICAgICAgYXJncyA9
IFtwcmVmaXhlZEZvcm1hdFN0cmluZ10uY29uY2F0KHRoaXMuX21lc3NhZ2UucGFyYW1ldGVycy5z
bGljZSgxKSk7CiAgICAgICAgICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgICAg
ICAgICAgYXJncyA9IGFyZ3MuY29uY2F0KHRoaXMuX21lc3NhZ2UucGFyYW1ldGVycyk7CisgICAg
ICAgICAgICAgICAgICAgICAgICBhcmdzLnB1c2hJdGVyYWJsZSh0aGlzLl9tZXNzYWdlLnBhcmFt
ZXRlcnMpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB0aGlzLl9hcHBlbmRG
b3JtYXR0ZWRBcmd1bWVudHMoZWxlbWVudCwgYXJncyk7CiAgICAgICAgICAgICAgICAgcmV0dXJu
OwpAQCAtMzAwLDcgKzMwMCw3IEBAIFdJLkNvbnNvbGVNZXNzYWdlVmlldyA9IGNsYXNzIENvbnNv
bGVNZXNzYWdlVmlldyBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICAgICAgY2FzZSBXSS5Db25z
b2xlTWVzc2FnZS5NZXNzYWdlVHlwZS5UaW1pbmc6IHsKICAgICAgICAgICAgICAgICBsZXQgYXJn
cyA9IFt0aGlzLl9tZXNzYWdlLm1lc3NhZ2VUZXh0XTsKICAgICAgICAgICAgICAgICBpZiAodGhp
cy5fZXh0cmFQYXJhbWV0ZXJzKQotICAgICAgICAgICAgICAgICAgICBhcmdzID0gYXJncy5jb25j
YXQodGhpcy5fZXh0cmFQYXJhbWV0ZXJzKTsKKyAgICAgICAgICAgICAgICAgICAgYXJncy5wdXNo
SXRlcmFibGUodGhpcy5fZXh0cmFQYXJhbWV0ZXJzKTsKICAgICAgICAgICAgICAgICB0aGlzLl9h
cHBlbmRGb3JtYXR0ZWRBcmd1bWVudHMoZWxlbWVudCwgYXJncyk7CiAgICAgICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICAgICAgfQpAQCAtMzQ1LDcgKzM0NSw3IEBAIFdJLkNvbnNvbGVNZXNz
YWdlVmlldyA9IGNsYXNzIENvbnNvbGVNZXNzYWdlVmlldyBleHRlbmRzIFdJLk9iamVjdAogCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGFyZ3MgPSBbV0kuVUlTdHJpbmcoIkNvdWxk
IG5vdCBjYXB0dXJlIHNjcmVlbnNob3QiKSwgdGhpcy5fbWVzc2FnZS5tZXNzYWdlVGV4dF07CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX2V4dHJhUGFyYW1ldGVycykKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncyA9IGFyZ3MuY29uY2F0KHRoaXMuX2V4
dHJhUGFyYW1ldGVycyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3MucHVz
aEl0ZXJhYmxlKHRoaXMuX2V4dHJhUGFyYW1ldGVycyk7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdGhpcy5fYXBwZW5kRm9ybWF0dGVkQXJndW1lbnRzKGVsZW1lbnQsIGFyZ3MpOwogICAg
ICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgIH0KQEAgLTM1OSw3
ICszNTksNyBAQCBXSS5Db25zb2xlTWVzc2FnZVZpZXcgPSBjbGFzcyBDb25zb2xlTWVzc2FnZVZp
ZXcgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAg
ICAgICAgICAgICAgICAgYXJncy5wdXNoKHRoaXMuX21lc3NhZ2UubWVzc2FnZVRleHQpOwogICAg
ICAgICAgICAgICAgICAgICBpZiAodGhpcy5fZXh0cmFQYXJhbWV0ZXJzKQotICAgICAgICAgICAg
ICAgICAgICAgICAgYXJncyA9IGFyZ3MuY29uY2F0KHRoaXMuX2V4dHJhUGFyYW1ldGVycyk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBhcmdzLnB1c2hJdGVyYWJsZSh0aGlzLl9leHRyYVBhcmFt
ZXRlcnMpOwogICAgICAgICAgICAgICAgICAgICB0aGlzLl9hcHBlbmRGb3JtYXR0ZWRBcmd1bWVu
dHMoZWxlbWVudCwgYXJncyk7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
ICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9Db250ZW50QnJvd3Nlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL0NvbnRlbnRCcm93c2VyLmpzCmluZGV4IDdlOWEyZjkxZWZmNDhjYjBmZTRi
YjYxZTYwOGE1Njc1YmY1ZjAyNmUuLmU0NWY4NzI4YTFhMjIxODRhYTkzZDVlNzE2ZGRhOTFkMzMw
OGQ3ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL0NvbnRlbnRCcm93c2VyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL0NvbnRlbnRCcm93c2VyLmpzCkBAIC0xNDAsNyArMTQwLDcgQEAgV0kuQ29u
dGVudEJyb3dzZXIgPSBjbGFzcyBDb250ZW50QnJvd3NlciBleHRlbmRzIFdJLlZpZXcKICAgICAg
ICAgaWYgKGN1cnJlbnRDb250ZW50VmlldykgewogICAgICAgICAgICAgdmFyIHN1cHBsZW1lbnRh
bFJlcHJlc2VudGVkT2JqZWN0cyA9IGN1cnJlbnRDb250ZW50Vmlldy5zdXBwbGVtZW50YWxSZXBy
ZXNlbnRlZE9iamVjdHM7CiAgICAgICAgICAgICBpZiAoc3VwcGxlbWVudGFsUmVwcmVzZW50ZWRP
YmplY3RzICYmIHN1cHBsZW1lbnRhbFJlcHJlc2VudGVkT2JqZWN0cy5sZW5ndGgpCi0gICAgICAg
ICAgICAgICAgcmVwcmVzZW50ZWRPYmplY3RzID0gcmVwcmVzZW50ZWRPYmplY3RzLmNvbmNhdChz
dXBwbGVtZW50YWxSZXByZXNlbnRlZE9iamVjdHMpOworICAgICAgICAgICAgICAgIHJlcHJlc2Vu
dGVkT2JqZWN0cy5wdXNoSXRlcmFibGUoc3VwcGxlbWVudGFsUmVwcmVzZW50ZWRPYmplY3RzKTsK
ICAgICAgICAgfQogCiAgICAgICAgIHJldHVybiByZXByZXNlbnRlZE9iamVjdHM7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9ET01UcmVlRWxl
bWVudC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RPTVRy
ZWVFbGVtZW50LmpzCmluZGV4IDVjZTMzOTVhYjJkNTliZGJhMWRkNjcwMTQwYzEzZmFiYjJmMzI2
MDguLjI2OWEyMWE2YzYyNjRhOGE0OWFmOTZiM2ZmOWRmMWI5YjFmMDkzNzEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RPTVRyZWVFbGVtZW50
LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RPTVRy
ZWVFbGVtZW50LmpzCkBAIC0xNjI4LDcgKzE2MjgsNyBAQCBXSS5ET01UcmVlRWxlbWVudCA9IGNs
YXNzIERPTVRyZWVFbGVtZW50IGV4dGVuZHMgV0kuVHJlZUVsZW1lbnQKICAgICAgICAgICAgIHZp
c2libGVDaGlsZHJlbi5wdXNoKGJlZm9yZVBzZXVkb0VsZW1lbnQpOwogCiAgICAgICAgIGlmIChu
b2RlLmNoaWxkTm9kZUNvdW50ICYmIG5vZGUuY2hpbGRyZW4pCi0gICAgICAgICAgICB2aXNpYmxl
Q2hpbGRyZW4gPSB2aXNpYmxlQ2hpbGRyZW4uY29uY2F0KG5vZGUuY2hpbGRyZW4pOworICAgICAg
ICAgICAgdmlzaWJsZUNoaWxkcmVuLnB1c2hJdGVyYWJsZShub2RlLmNoaWxkcmVuKTsKIAogICAg
ICAgICB2YXIgYWZ0ZXJQc2V1ZG9FbGVtZW50ID0gbm9kZS5hZnRlclBzZXVkb0VsZW1lbnQoKTsK
ICAgICAgICAgaWYgKGFmdGVyUHNldWRvRWxlbWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RhdGFHcmlkTm9kZS5qcyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RhdGFHcmlkTm9kZS5qcwppbmRleCBk
OTBhOTQ4MGFlMDA1NmQzNjYxYjdhY2FiOTk5NmZiYzZhZTRkZjE1Li5lNTllY2NiOTJmZmYyZDg4
YzczM2ViMzdhNDNhODBkYjIyYjdjYmY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9EYXRhR3JpZE5vZGUuanMKKysrIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRGF0YUdyaWROb2RlLmpzCkBAIC0xNzUsNyAr
MTc1LDcgQEAgV0kuRGF0YUdyaWROb2RlID0gY2xhc3MgRGF0YUdyaWROb2RlIGV4dGVuZHMgV0ku
T2JqZWN0CiAgICAgICAgICAgICBpZiAoIXZhbHVlLmxlbmd0aCkKICAgICAgICAgICAgICAgICBj
b250aW51ZTsKIAotICAgICAgICAgICAgdGhpcy5fY2FjaGVkRmlsdGVyYWJsZURhdGEgPSB0aGlz
Ll9jYWNoZWRGaWx0ZXJhYmxlRGF0YS5jb25jYXQodmFsdWUpOworICAgICAgICAgICAgdGhpcy5f
Y2FjaGVkRmlsdGVyYWJsZURhdGEucHVzaEl0ZXJhYmxlKHZhbHVlKTsKICAgICAgICAgfQogCiAg
ICAgICAgIHJldHVybiB0aGlzLl9jYWNoZWRGaWx0ZXJhYmxlRGF0YTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0hlYXBBbGxvY2F0aW9uc1Rp
bWVsaW5lVmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L0hlYXBBbGxvY2F0aW9uc1RpbWVsaW5lVmlldy5qcwppbmRleCBiZTVkYWMzMDk1MTJjMDk5Y2Y3
NTk3ZWU1ZmU0MGI5YTE0ZTRjZmQ2Li41OWM3ODVmZjQyNWI4MTYzNDY0ZjczMjNkZDJmNTE3MjQ2
N2YwMWVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9IZWFwQWxsb2NhdGlvbnNUaW1lbGluZVZpZXcuanMKKysrIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvSGVhcEFsbG9jYXRpb25zVGltZWxpbmVWaWV3Lmpz
CkBAIC0yMTcsNyArMjE3LDcgQEAgV0kuSGVhcEFsbG9jYXRpb25zVGltZWxpbmVWaWV3ID0gY2xh
c3MgSGVhcEFsbG9jYXRpb25zVGltZWxpbmVWaWV3IGV4dGVuZHMgV0kuVGkKICAgICAgICAgfQog
CiAgICAgICAgIGlmICh0aGlzLl9jb250ZW50Vmlld0NvbnRhaW5lci5jdXJyZW50Q29udGVudFZp
ZXcpCi0gICAgICAgICAgICBjb21wb25lbnRzID0gY29tcG9uZW50cy5jb25jYXQodGhpcy5fY29u
dGVudFZpZXdDb250YWluZXIuY3VycmVudENvbnRlbnRWaWV3LnNlbGVjdGlvblBhdGhDb21wb25l
bnRzKTsKKyAgICAgICAgICAgIGNvbXBvbmVudHMucHVzaEl0ZXJhYmxlKHRoaXMuX2NvbnRlbnRW
aWV3Q29udGFpbmVyLmN1cnJlbnRDb250ZW50Vmlldy5zZWxlY3Rpb25QYXRoQ29tcG9uZW50cyk7
CiAKICAgICAgICAgcmV0dXJuIGNvbXBvbmVudHM7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvSW5kZXhlZERhdGFiYXNlT2JqZWN0
U3RvcmVDb250ZW50Vmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL0luZGV4ZWREYXRhYmFzZU9iamVjdFN0b3JlQ29udGVudFZpZXcuanMKaW5kZXggODBi
ZDEwNTE4NDljYzkxNmNlNDYzZDQ2Nzk5ZGQ0ODNhZjI3OTNiZi4uZGE2YWExMzE5YjlkYTA4OTU2
MjA2ZWJmODA1MjU0ZDE3M2Y2Y2FjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvSW5kZXhlZERhdGFiYXNlT2JqZWN0U3RvcmVDb250ZW50Vmll
dy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9JbmRl
eGVkRGF0YWJhc2VPYmplY3RTdG9yZUNvbnRlbnRWaWV3LmpzCkBAIC0xNDIsNyArMTQyLDcgQEAg
V0kuSW5kZXhlZERhdGFiYXNlT2JqZWN0U3RvcmVDb250ZW50VmlldyA9IGNsYXNzIEluZGV4ZWRE
YXRhYmFzZU9iamVjdFN0b3JlQ29udGUKIAogICAgICAgICBmdW5jdGlvbiBwcm9jZXNzRW50cmll
cyhlbnRyaWVzLCBtb3JlQXZhaWxhYmxlKQogICAgICAgICB7Ci0gICAgICAgICAgICB0aGlzLl9l
bnRyaWVzID0gdGhpcy5fZW50cmllcy5jb25jYXQoZW50cmllcyk7CisgICAgICAgICAgICB0aGlz
Ll9lbnRyaWVzLnB1c2hJdGVyYWJsZShlbnRyaWVzKTsKICAgICAgICAgICAgIHRoaXMuX21vcmVF
bnRyaWVzQXZhaWxhYmxlID0gbW9yZUF2YWlsYWJsZTsKIAogICAgICAgICAgICAgZm9yICh2YXIg
ZW50cnkgb2YgZW50cmllcykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvTmF2aWdhdGlvbkl0ZW0uanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9OYXZpZ2F0aW9uSXRlbS5qcwppbmRleCA5YzlhYTAwZTEx
OGNhY2YyNTdiMTZmNGVjYTk4OTIyNzliMWM0ZDQ5Li45OTMwM2JmMDM1ZjM5ZDE2YWM4MDBlMWFh
ZWQ0Mzg0NmI3MGEwYjZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9OYXZpZ2F0aW9uSXRlbS5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9OYXZpZ2F0aW9uSXRlbS5qcwpAQCAtMTI1LDggKzEyNSw4
IEBAIFdJLk5hdmlnYXRpb25JdGVtID0gY2xhc3MgTmF2aWdhdGlvbkl0ZW0gZXh0ZW5kcyBXSS5P
YmplY3QKICAgICAgICAgdmFyIGNsYXNzTmFtZXMgPSBbIml0ZW0iXTsKICAgICAgICAgaWYgKHRo
aXMuX2lkZW50aWZpZXIpCiAgICAgICAgICAgICBjbGFzc05hbWVzLnB1c2godGhpcy5faWRlbnRp
Zmllcik7Ci0gICAgICAgIGlmICh0aGlzLmFkZGl0aW9uYWxDbGFzc05hbWVzIGluc3RhbmNlb2Yg
QXJyYXkpCi0gICAgICAgICAgICBjbGFzc05hbWVzID0gY2xhc3NOYW1lcy5jb25jYXQodGhpcy5h
ZGRpdGlvbmFsQ2xhc3NOYW1lcyk7CisgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHRoaXMuYWRk
aXRpb25hbENsYXNzTmFtZXMpKQorICAgICAgICAgICAgY2xhc3NOYW1lcy5wdXNoSXRlcmFibGUo
dGhpcy5hZGRpdGlvbmFsQ2xhc3NOYW1lcyk7CiAgICAgICAgIHJldHVybiBjbGFzc05hbWVzOwog
ICAgIH0KIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9PYmplY3RUcmVlVmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL09iamVjdFRyZWVWaWV3LmpzCmluZGV4IGRhMjkzOGViNjYxOTg2MjhmYTM1
YmQ5ZmY0MjEzZjJlNTY1MTU3YzkuLjU1YTJlNTE3ZGY2MDg1MmFmNmU3OTFjNGRlM2NmMzMzNzFj
ZjdjOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL09iamVjdFRyZWVWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL09iamVjdFRyZWVWaWV3LmpzCkBAIC0zMTEsNyArMzExLDcgQEAgV0kuT2Jq
ZWN0VHJlZVZpZXcgPSBjbGFzcyBPYmplY3RUcmVlVmlldyBleHRlbmRzIFdJLk9iamVjdAogICAg
IF91cGRhdGVQcm9wZXJ0aWVzKHByb3BlcnRpZXMsIHByb3BlcnR5UGF0aCkKICAgICB7CiAgICAg
ICAgIGlmICh0aGlzLl9leHRyYVByb3BlcnRpZXMpCi0gICAgICAgICAgICBwcm9wZXJ0aWVzID0g
cHJvcGVydGllcy5jb25jYXQodGhpcy5fZXh0cmFQcm9wZXJ0aWVzKTsKKyAgICAgICAgICAgIHBy
b3BlcnRpZXMucHVzaEl0ZXJhYmxlKHRoaXMuX2V4dHJhUHJvcGVydGllcyk7CiAKICAgICAgICAg
cHJvcGVydGllcy5zb3J0KFdJLk9iamVjdFRyZWVWaWV3LmNvbXBhcmVQcm9wZXJ0eURlc2NyaXB0
b3JzKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvT3BlblJlc291cmNlRGlhbG9nLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvT3BlblJlc291cmNlRGlhbG9nLmpzCmluZGV4IGVhMzk1YjVkNmJhMjYy
MDNlNGI0NGEwY2Q0OWY0NWE3NTI0ZWRiOGYuLmRiYWM3ODZlMDQ0NjFkYTQzYjliMWVkYjY0NTlj
ZGM2YjM4OTlmMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL09wZW5SZXNvdXJjZURpYWxvZy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9PcGVuUmVzb3VyY2VEaWFsb2cuanMKQEAgLTMwMSw3ICsz
MDEsNyBAQCBXSS5PcGVuUmVzb3VyY2VEaWFsb2cgPSBjbGFzcyBPcGVuUmVzb3VyY2VEaWFsb2cg
ZXh0ZW5kcyBXSS5EaWFsb2cKICAgICAgICAgICAgIGZvciAobGV0IHJlc291cmNlIG9mIGN1cnJl
bnRGcmFtZS5yZXNvdXJjZUNvbGxlY3Rpb24pCiAgICAgICAgICAgICAgICAgdGhpcy5fYWRkUmVz
b3VyY2UocmVzb3VyY2UsIHN1cHByZXNzRmlsdGVyVXBkYXRlKTsKIAotICAgICAgICAgICAgZnJh
bWVzLnB1c2goLi4uY3VycmVudEZyYW1lLmNoaWxkRnJhbWVDb2xsZWN0aW9uKTsKKyAgICAgICAg
ICAgIGZyYW1lcy5wdXNoSXRlcmFibGUoY3VycmVudEZyYW1lLmNoaWxkRnJhbWVDb2xsZWN0aW9u
KTsKICAgICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvT3ZlcnZpZXdUaW1lbGluZVZpZXcuanMgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9PdmVydmlld1RpbWVsaW5lVmlldy5qcwpp
bmRleCAwZDczYWU0NmM3NmI4MDhmMTc5OTFiM2RiNjFjN2Q1NmJiMzY2ODYzLi41NDg4NGUzMTEz
ODRkMmZjNzY2OWUzYzJhMmI1MjY0MmRkMzM2ZDhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9PdmVydmlld1RpbWVsaW5lVmlldy5qcworKysg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9PdmVydmlld1RpbWVs
aW5lVmlldy5qcwpAQCAtMjI1LDEyICsyMjUsMTIgQEAgV0kuT3ZlcnZpZXdUaW1lbGluZVZpZXcg
PSBjbGFzcyBPdmVydmlld1RpbWVsaW5lVmlldyBleHRlbmRzIFdJLlRpbWVsaW5lVmlldwogICAg
ICAgICBpZiAodGhpcy5fc2hvdWxkR3JvdXBCeVNvdXJjZUNvZGUpIHsKICAgICAgICAgICAgIGxl
dCBuZXR3b3JrVGltZWxpbmUgPSB0aGlzLl9yZWNvcmRpbmcudGltZWxpbmVzLmdldChXSS5UaW1l
bGluZVJlY29yZC5UeXBlLk5ldHdvcmspOwogICAgICAgICAgICAgaWYgKG5ldHdvcmtUaW1lbGlu
ZSkKLSAgICAgICAgICAgICAgICB0aGlzLl9wZW5kaW5nUmVwcmVzZW50ZWRPYmplY3RzID0gdGhp
cy5fcGVuZGluZ1JlcHJlc2VudGVkT2JqZWN0cy5jb25jYXQobmV0d29ya1RpbWVsaW5lLnJlY29y
ZHMubWFwKChyZWNvcmQpID0+IHJlY29yZC5yZXNvdXJjZSkpOworICAgICAgICAgICAgICAgIHRo
aXMuX3BlbmRpbmdSZXByZXNlbnRlZE9iamVjdHMucHVzaEl0ZXJhYmxlKG5ldHdvcmtUaW1lbGlu
ZS5yZWNvcmRzLm1hcCgocmVjb3JkKSA9PiByZWNvcmQucmVzb3VyY2UpKTsKIAotICAgICAgICAg
ICAgdGhpcy5fcGVuZGluZ1JlcHJlc2VudGVkT2JqZWN0cyA9IHRoaXMuX3BlbmRpbmdSZXByZXNl
bnRlZE9iamVjdHMuY29uY2F0KHRoaXMuX3JlY29yZGluZy5zb3VyY2VDb2RlVGltZWxpbmVzKTsK
KyAgICAgICAgICAgIHRoaXMuX3BlbmRpbmdSZXByZXNlbnRlZE9iamVjdHMucHVzaEl0ZXJhYmxl
KHRoaXMuX3JlY29yZGluZy5zb3VyY2VDb2RlVGltZWxpbmVzKTsKICAgICAgICAgfSBlbHNlIHsK
ICAgICAgICAgICAgIGZvciAobGV0IHRpbWVsaW5lIG9mIHRoaXMuX3JlbGV2YW50VGltZWxpbmVz
KQotICAgICAgICAgICAgICAgIHRoaXMuX3BlbmRpbmdSZXByZXNlbnRlZE9iamVjdHMgPSB0aGlz
Ll9wZW5kaW5nUmVwcmVzZW50ZWRPYmplY3RzLmNvbmNhdCh0aW1lbGluZS5yZWNvcmRzKTsKKyAg
ICAgICAgICAgICAgICB0aGlzLl9wZW5kaW5nUmVwcmVzZW50ZWRPYmplY3RzLnB1c2hJdGVyYWJs
ZSh0aW1lbGluZS5yZWNvcmRzKTsKICAgICAgICAgfQogCiAgICAgICAgIHRoaXMubmVlZHNMYXlv
dXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL1Jlc291cmNlQ29sbGVjdGlvbkNvbnRlbnRWaWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUmVzb3VyY2VDb2xsZWN0aW9uQ29udGVudFZpZXcuanMK
aW5kZXggNTY5NmFiZjljNGNiNjYxN2Y4NzA3ZTIxYjU5ZTE2ODJhNDQ3MTM3Mi4uMDI0ZmVkMzBk
NjZiYmU1OTYwN2YyZWJkM2NmOWI4OTlhOGE3NTAxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUmVzb3VyY2VDb2xsZWN0aW9uQ29udGVudFZp
ZXcuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUmVz
b3VyY2VDb2xsZWN0aW9uQ29udGVudFZpZXcuanMKQEAgLTc4LDcgKzc4LDcgQEAgV0kuUmVzb3Vy
Y2VDb2xsZWN0aW9uQ29udGVudFZpZXcgPSBjbGFzcyBSZXNvdXJjZUNvbGxlY3Rpb25Db250ZW50
VmlldyBleHRlbmRzIFcKICAgICAgICAgICAgIG5hdmlnYXRpb25JdGVtcy5wdXNoKHRoaXMuX2lt
YWdlVHlwZVNjb3BlQmFyKTsKICAgICAgICAgaWYgKHRoaXMuX3Nob3dHcmlkQnV0dG9uTmF2aWdh
dGlvbkl0ZW0pCiAgICAgICAgICAgICBuYXZpZ2F0aW9uSXRlbXMucHVzaCh0aGlzLl9zaG93R3Jp
ZEJ1dHRvbk5hdmlnYXRpb25JdGVtKTsKLSAgICAgICAgbmF2aWdhdGlvbkl0ZW1zID0gbmF2aWdh
dGlvbkl0ZW1zLmNvbmNhdChzdXBlci5uYXZpZ2F0aW9uSXRlbXMpOworICAgICAgICBuYXZpZ2F0
aW9uSXRlbXMucHVzaEl0ZXJhYmxlKHN1cGVyLm5hdmlnYXRpb25JdGVtcyk7CiAgICAgICAgIHJl
dHVybiBuYXZpZ2F0aW9uSXRlbXM7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9SZXNvdXJjZUhlYWRlcnNDb250ZW50Vmlldy5q
cyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Jlc291cmNlSGVh
ZGVyc0NvbnRlbnRWaWV3LmpzCmluZGV4IGFjYzUwNTVmNDExYjJlYTg0YTQxNWU4NzEyZDRiNDlk
NWM2NmFjNTIuLmU0ZDg5M2U2N2M5ZWNiNzU2NmNkMzRiZTgyNDE2Mjk3ODY2OWZhNTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Jlc291cmNl
SGVhZGVyc0NvbnRlbnRWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL1Jlc291cmNlSGVhZGVyc0NvbnRlbnRWaWV3LmpzCkBAIC00ODcsNyArNDg3
LDcgQEAgV0kuUmVzb3VyY2VIZWFkZXJzQ29udGVudFZpZXcgPSBjbGFzcyBSZXNvdXJjZUhlYWRl
cnNDb250ZW50VmlldyBleHRlbmRzIFdJLkNvbnQKIAogICAgICAgICAgICAgaWYgKG1hdGNoUmFu
Z2VzLmxlbmd0aCkgewogICAgICAgICAgICAgICAgIGxldCBoaWdobGlnaHRlZE5vZGVzID0gV0ku
aGlnaGxpZ2h0UmFuZ2VzV2l0aFN0eWxlQ2xhc3MoZWxlbWVudCwgbWF0Y2hSYW5nZXMsICJzZWFy
Y2gtaGlnaGxpZ2h0IiwgdGhpcy5fc2VhcmNoRE9NQ2hhbmdlcyk7Ci0gICAgICAgICAgICAgICAg
dGhpcy5fc2VhcmNoUmVzdWx0cyA9IHRoaXMuX3NlYXJjaFJlc3VsdHMuY29uY2F0KGhpZ2hsaWdo
dGVkTm9kZXMpOworICAgICAgICAgICAgICAgIHRoaXMuX3NlYXJjaFJlc3VsdHMucHVzaEl0ZXJh
YmxlKGhpZ2hsaWdodGVkTm9kZXMpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUmVz
b3VyY2VTZWN1cml0eUNvbnRlbnRWaWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvUmVzb3VyY2VTZWN1cml0eUNvbnRlbnRWaWV3LmpzCmluZGV4IDEyODA4
NDE4ZjI5ZGRjM2EzM2FiMWYwMTk0Y2VkOTZiYzg1YzE1NTAuLmNkODlmYWQzMzFlOWM0N2IxNjgz
YmY5OThiYjA5ZGJhMTJhY2ZmZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL1Jlc291cmNlU2VjdXJpdHlDb250ZW50Vmlldy5qcworKysgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9SZXNvdXJjZVNlY3VyaXR5
Q29udGVudFZpZXcuanMKQEAgLTI5OCw3ICsyOTgsNyBAQCBXSS5SZXNvdXJjZVNlY3VyaXR5Q29u
dGVudFZpZXcgPSBjbGFzcyBSZXNvdXJjZVNlY3VyaXR5Q29udGVudFZpZXcgZXh0ZW5kcyBXSS5D
bwogCiAgICAgICAgICAgICBpZiAobWF0Y2hSYW5nZXMubGVuZ3RoKSB7CiAgICAgICAgICAgICAg
ICAgbGV0IGhpZ2hsaWdodGVkTm9kZXMgPSBXSS5oaWdobGlnaHRSYW5nZXNXaXRoU3R5bGVDbGFz
cyhlbGVtZW50LCBtYXRjaFJhbmdlcywgInNlYXJjaC1oaWdobGlnaHQiLCB0aGlzLl9zZWFyY2hE
T01DaGFuZ2VzKTsKLSAgICAgICAgICAgICAgICB0aGlzLl9zZWFyY2hSZXN1bHRzID0gdGhpcy5f
c2VhcmNoUmVzdWx0cy5jb25jYXQoaGlnaGxpZ2h0ZWROb2Rlcyk7CisgICAgICAgICAgICAgICAg
dGhpcy5fc2VhcmNoUmVzdWx0cy5wdXNoSXRlcmFibGUoaGlnaGxpZ2h0ZWROb2Rlcyk7CiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TY3JpcHRDbHVzdGVyVGltZWxpbmVWaWV3LmpzIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU2NyaXB0Q2x1c3RlclRp
bWVsaW5lVmlldy5qcwppbmRleCBmZmEzMzQxZjEwMmZlZGUzMjFmMjk1ZTI4ZmRhOTQ2ZmQ5Yjk3
MmRmLi5kY2M0ZDcwN2EyMzQ0ZGY5NjM3YTNiYWU0MWY4OGFjYjczYjgyOWQ2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TY3JpcHRDbHVzdGVy
VGltZWxpbmVWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL1NjcmlwdENsdXN0ZXJUaW1lbGluZVZpZXcuanMKQEAgLTEwNCw5ICsxMDQsMTEgQEAg
V0kuU2NyaXB0Q2x1c3RlclRpbWVsaW5lVmlldyA9IGNsYXNzIFNjcmlwdENsdXN0ZXJUaW1lbGlu
ZVZpZXcgZXh0ZW5kcyBXSS5DbHVzdGUKICAgICAgICAgICAgIHJldHVybiBbXTsKIAogICAgICAg
ICBsZXQgY29tcG9uZW50cyA9IFt0aGlzLl9wYXRoQ29tcG9uZW50Rm9yQ29udGVudFZpZXcoY3Vy
cmVudENvbnRlbnRWaWV3KV07CisKICAgICAgICAgbGV0IHN1YkNvbXBvbmVudHMgPSBjdXJyZW50
Q29udGVudFZpZXcuc2VsZWN0aW9uUGF0aENvbXBvbmVudHM7CiAgICAgICAgIGlmIChzdWJDb21w
b25lbnRzKQotICAgICAgICAgICAgcmV0dXJuIGNvbXBvbmVudHMuY29uY2F0KHN1YkNvbXBvbmVu
dHMpOworICAgICAgICAgICAgY29tcG9uZW50cy5wdXNoSXRlcmFibGUoc3ViQ29tcG9uZW50cyk7
CisKICAgICAgICAgcmV0dXJuIGNvbXBvbmVudHM7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TY3J1YmJlck5hdmlnYXRpb25J
dGVtLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU2NydWJi
ZXJOYXZpZ2F0aW9uSXRlbS5qcwppbmRleCBhNmExZDk5YjkyODBkYWIyZmIwYzdjZmI0MzJiOGI1
N2ZhNjRhY2FiLi45NDg2NTRiNGZmNGFiZjdjNmM3M2EwMjMyYWU1MDQ4YTdmM2IwZWRlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TY3J1YmJl
ck5hdmlnYXRpb25JdGVtLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL1NjcnViYmVyTmF2aWdhdGlvbkl0ZW0uanMKQEAgLTU5LDcgKzU5LDkgQEAgV0ku
U2NydWJiZXJOYXZpZ2F0aW9uSXRlbSA9IGNsYXNzIFNjcnViYmVyTmF2aWdhdGlvbkl0ZW0gZXh0
ZW5kcyBXSS5GbGV4aWJsZVNwYWMKIAogICAgIGdldCBhZGRpdGlvbmFsQ2xhc3NOYW1lcygpCiAg
ICAgewotICAgICAgICByZXR1cm4gc3VwZXIuYWRkaXRpb25hbENsYXNzTmFtZXMuY29uY2F0KFsi
c2NydWJiZXIiXSk7CisgICAgICAgIGxldCBhZGRpdGlvbmFsQ2xhc3NOYW1lcyA9IHN1cGVyLmFk
ZGl0aW9uYWxDbGFzc05hbWVzOworICAgICAgICBhZGRpdGlvbmFsQ2xhc3NOYW1lcy5wdXNoKCJz
Y3J1YmJlciIpOworICAgICAgICByZXR1cm4gYWRkaXRpb25hbENsYXNzTmFtZXM7CiAgICAgfQog
CiAgICAgLy8gUHJpdmF0ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvU3ByZWFkc2hlZXRTdHlsZVByb3BlcnR5LmpzIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU3ByZWFkc2hlZXRTdHlsZVByb3BlcnR5Lmpz
CmluZGV4IGVkMWQ3YjVhNDYxYjg4OTFiYTY0ZjdmZjliYzgxOTg4YmUwYmQ5ZGMuLmJlYzE3ZjRi
MGNhMDRjZjQwZjU1NDE5ZmZmNGU3NWY4MTljMjlkMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NwcmVhZHNoZWV0U3R5bGVQcm9wZXJ0eS5q
cworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TcHJlYWRz
aGVldFN0eWxlUHJvcGVydHkuanMKQEAgLTU4MCw3ICs1ODAsNyBAQCBXSS5TcHJlYWRzaGVldFN0
eWxlUHJvcGVydHkgPSBjbGFzcyBTcHJlYWRzaGVldFN0eWxlUHJvcGVydHkgZXh0ZW5kcyBXSS5P
YmplY3QKICAgICAgICAgICAgICAgICBpZiAoZ3JhZGllbnQpCiAgICAgICAgICAgICAgICAgICAg
IG5ld1Rva2Vucy5wdXNoKHRoaXMuX2NyZWF0ZUlubGluZVN3YXRjaChXSS5JbmxpbmVTd2F0Y2gu
VHlwZS5HcmFkaWVudCwgcmF3VG9rZW5zLCBncmFkaWVudCkpOwogICAgICAgICAgICAgICAgIGVs
c2UKLSAgICAgICAgICAgICAgICAgICAgbmV3VG9rZW5zLnB1c2goLi4ucmF3VG9rZW5zKTsKKyAg
ICAgICAgICAgICAgICAgICAgbmV3VG9rZW5zLnB1c2hJdGVyYWJsZShyYXdUb2tlbnMpOwogCiAg
ICAgICAgICAgICAgICAgZ3JhZGllbnRTdGFydEluZGV4ID0gTmFOOwogICAgICAgICAgICAgfSBl
bHNlIGlmIChpc05hTihncmFkaWVudFN0YXJ0SW5kZXgpKQpAQCAtNTk5LDcgKzU5OSw3IEBAIFdJ
LlNwcmVhZHNoZWV0U3R5bGVQcm9wZXJ0eSA9IGNsYXNzIFNwcmVhZHNoZWV0U3R5bGVQcm9wZXJ0
eSBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICAgICAgaWYgKGNvbG9yKQogICAgICAgICAgICAg
ICAgIG5ld1Rva2Vucy5wdXNoKHRoaXMuX2NyZWF0ZUlubGluZVN3YXRjaChXSS5JbmxpbmVTd2F0
Y2guVHlwZS5Db2xvciwgcmF3VG9rZW5zLCBjb2xvcikpOwogICAgICAgICAgICAgZWxzZQotICAg
ICAgICAgICAgICAgIG5ld1Rva2Vucy5wdXNoKC4uLnJhd1Rva2Vucyk7CisgICAgICAgICAgICAg
ICAgbmV3VG9rZW5zLnB1c2hJdGVyYWJsZShyYXdUb2tlbnMpOwogICAgICAgICB9OwogCiAgICAg
ICAgIGxldCBjb2xvckZ1bmN0aW9uU3RhcnRJbmRleCA9IE5hTjsKQEAgLTY2Niw3ICs2NjYsNyBA
QCBXSS5TcHJlYWRzaGVldFN0eWxlUHJvcGVydHkgPSBjbGFzcyBTcHJlYWRzaGVldFN0eWxlUHJv
cGVydHkgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgICAgICAgICBpZiAodmFsdWVPYmplY3Qp
CiAgICAgICAgICAgICAgICAgICAgIG5ld1Rva2Vucy5wdXNoKHRoaXMuX2NyZWF0ZUlubGluZVN3
YXRjaChpbmxpbmVTd2F0Y2hUeXBlLCByYXdUb2tlbnMsIHZhbHVlT2JqZWN0KSk7CiAgICAgICAg
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBuZXdUb2tlbnMucHVzaCguLi5yYXdU
b2tlbnMpOworICAgICAgICAgICAgICAgICAgICBuZXdUb2tlbnMucHVzaEl0ZXJhYmxlKHJhd1Rv
a2Vucyk7CiAKICAgICAgICAgICAgICAgICBzdGFydEluZGV4ID0gTmFOOwogICAgICAgICAgICAg
fSBlbHNlIGlmIChpc05hTihzdGFydEluZGV4KSkKQEAgLTcwMiwyMCArNzAyLDIwIEBAIFdJLlNw
cmVhZHNoZWV0U3R5bGVQcm9wZXJ0eSA9IGNsYXNzIFNwcmVhZHNoZWV0U3R5bGVQcm9wZXJ0eSBl
eHRlbmRzIFdJLk9iamVjdAogICAgICAgICAgICAgICAgICAgICBsZXQgY29udGVudHMgPSBbXTsK
ICAgICAgICAgICAgICAgICAgICAgbGV0IGZhbGxiYWNrU3RhcnRJbmRleCA9IHJhd1Rva2Vucy5m
aW5kSW5kZXgoKHZhbHVlLCBpKSA9PiBpID4gdmFyaWFibGVOYW1lSW5kZXggKyAxICYmIC9cYm0t
Y3NzXGIvLnRlc3QodmFsdWUudHlwZSkpOwogICAgICAgICAgICAgICAgICAgICBpZiAoZmFsbGJh
Y2tTdGFydEluZGV4ICE9PSAtMSkgewotICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudHMg
PSBjb250ZW50cy5jb25jYXQocmF3VG9rZW5zLnNsaWNlKDAsIGZhbGxiYWNrU3RhcnRJbmRleCkp
OwotICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudHMgPSBjb250ZW50cy5jb25jYXQodGhp
cy5fcmVwbGFjZVNwZWNpYWxUb2tlbnMocmF3VG9rZW5zLnNsaWNlKGZhbGxiYWNrU3RhcnRJbmRl
eCwgaSkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnRzLnB1c2hJdGVyYWJsZShy
YXdUb2tlbnMuc2xpY2UoMCwgZmFsbGJhY2tTdGFydEluZGV4KSk7CisgICAgICAgICAgICAgICAg
ICAgICAgICBjb250ZW50cy5wdXNoSXRlcmFibGUodGhpcy5fcmVwbGFjZVNwZWNpYWxUb2tlbnMo
cmF3VG9rZW5zLnNsaWNlKGZhbGxiYWNrU3RhcnRJbmRleCwgaSkpKTsKICAgICAgICAgICAgICAg
ICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50cyA9IGNvbnRlbnRz
LmNvbmNhdChyYXdUb2tlbnMuc2xpY2UoMCwgaSkpOworICAgICAgICAgICAgICAgICAgICAgICAg
Y29udGVudHMucHVzaEl0ZXJhYmxlKHJhd1Rva2Vucy5zbGljZSgwLCBpKSk7CiAgICAgICAgICAg
ICAgICAgICAgIGNvbnRlbnRzLnB1c2godG9rZW4pOwogCiAgICAgICAgICAgICAgICAgICAgIGxl
dCB0ZXh0ID0gcmF3VG9rZW5zLnJlZHVjZSgoYWNjdW11bGF0b3IsIHRva2VuKSA9PiBhY2N1bXVs
YXRvciArIHRva2VuLnZhbHVlLCAiIik7CiAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLl9w
cm9wZXJ0eS5vd25lclN0eWxlLm5vZGVTdHlsZXMuY29tcHV0ZWRTdHlsZS5yZXNvbHZlVmFyaWFi
bGVWYWx1ZSh0ZXh0KSkKICAgICAgICAgICAgICAgICAgICAgICAgIG5ld1Rva2Vucy5wdXNoKHRo
aXMuX2NyZWF0ZUlubGluZVN3YXRjaChXSS5JbmxpbmVTd2F0Y2guVHlwZS5WYXJpYWJsZSwgY29u
dGVudHMpKTsKICAgICAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICAg
ICAgbmV3VG9rZW5zID0gbmV3VG9rZW5zLmNvbmNhdChjb250ZW50cyk7CisgICAgICAgICAgICAg
ICAgICAgICAgICBuZXdUb2tlbnMucHVzaEl0ZXJhYmxlKGNvbnRlbnRzKTsKICAgICAgICAgICAg
ICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICB0aGlzLl9oYXNJbnZhbGlkVmFyaWFi
bGVWYWx1ZSA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgIG5ld1Rva2Vucy5wdXNoKC4uLnJh
d1Rva2Vucyk7CisgICAgICAgICAgICAgICAgICAgIG5ld1Rva2Vucy5wdXNoSXRlcmFibGUocmF3
VG9rZW5zKTsKICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICBzdGFydEluZGV4
ID0gTmFOOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvVHJlZU91dGxpbmUuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9UcmVlT3V0bGluZS5qcwppbmRleCA0YTcyZGExNDAxNWExMTU0Y2MwMDVlY2ZlNWUx
ZTY0MWNhZDFjYzllLi44MWY3NTMwOTlkMDNlNjU1MDc1NWI4YTk0MzdiYTY4ZjE3YmM1NGNhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UcmVl
T3V0bGluZS5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9UcmVlT3V0bGluZS5qcwpAQCAtNTEwLDcgKzUxMCw3IEBAIFdJLlRyZWVPdXRsaW5lID0gY2xh
c3MgVHJlZU91dGxpbmUgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgICAgIGlmIChwcmVkaWNh
dGUodHJlZUVsZW1lbnQpKQogICAgICAgICAgICAgICAgIHJldHVybiB0cmVlRWxlbWVudDsKIAot
ICAgICAgICAgICAgdHJlZUVsZW1lbnRzID0gdHJlZUVsZW1lbnRzLmNvbmNhdCh0cmVlRWxlbWVu
dC5jaGlsZHJlbik7CisgICAgICAgICAgICB0cmVlRWxlbWVudHMucHVzaEl0ZXJhYmxlKHRyZWVF
bGVtZW50LmNoaWxkcmVuKTsKICAgICAgICAgfQogCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1ZpZXcu
anMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9WaWV3LmpzCmlu
ZGV4IDYzNjM5OTEyMjNhNjhhM2EyNTgwYmRhMjRhNTlkYWMxZmM0NDNkZGEuLjE5ZTk2NGQzZTFm
MmQ3YWNmZDFjYmZmOGUwZjg5OTI1NjAyZjNjMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1ZpZXcuanMKKysrIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVmlldy5qcwpAQCAtMzkxLDcgKzM5MSw3IEBAIFdJ
LlZpZXcgPSBjbGFzcyBWaWV3IGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgICAgICBpZiAodmll
dy5sYXlvdXRQZW5kaW5nKQogICAgICAgICAgICAgICAgIHZpZXcuX2xheW91dFN1YnRyZWUoKTsK
ICAgICAgICAgICAgIGVsc2UgaWYgKHZpZXcuX2RpcnR5RGVzY2VuZGFudHNDb3VudCkgewotICAg
ICAgICAgICAgICAgIHZpZXdzID0gdmlld3MuY29uY2F0KHZpZXcuc3Vidmlld3MpOworICAgICAg
ICAgICAgICAgIHZpZXdzLnB1c2hJdGVyYWJsZSh2aWV3LnN1YnZpZXdzKTsKICAgICAgICAgICAg
ICAgICB2aWV3Ll9kaXJ0eURlc2NlbmRhbnRzQ291bnQgPSAwOwogICAgICAgICAgICAgfQogICAg
ICAgICB9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKaW5kZXggMDRhOTQ1OTU2MDBjODY3NmY1YzVlYzk4ZGYxMzVkZWRhZWQ1YTg2NC4u
MWFiYWI4MTQ5YWNlMzQyOTkzMmVmZDM3ZDI4MjMwMTZjMjcxMjlhZiAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE0IEBACisyMDE5LTA4LTI3ICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKwor
ICAgICAgICBXZWIgSW5zcGVjdG9yOiByZXBsYWNlIHVzZXMgb2YgYEFycmF5LnByb3RvdHlwZS5j
b25jYXRgIHdpdGggYEFycmF5LnByb3RvdHlwZS5wdXNoYAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAxMDgyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvdW5pdC10ZXN0cy9hcnJheS11
dGlsaXRpZXMuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvdW5pdC10ZXN0cy9hcnJheS11dGls
aXRpZXMtZXhwZWN0ZWQudHh0OgorICAgICAgICBBZGQgdGVzdHMgZm9yIGFkZGVkIHV0aWxpdHkg
YEFycmF5LnByb3RvdHlwZS5wdXNoSXRlcmFibGVgLgorCiAyMDE5LTA4LTI2ICBNeWxlcyBDLiBN
YXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CiAKICAgICAgICAgW1dITFNMXSBSZXdyaXRl
IGFsbCB0ZXN0cyB0byB1c2UgV0hMU0wgYW5kIGRlbGV0ZSB0aGUgaXNXSExTTCBmbGFnCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdW5pdC10ZXN0cy9hcnJheS11dGlsaXRpZXMt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3VuaXQtdGVzdHMvYXJyYXktdXRp
bGl0aWVzLWV4cGVjdGVkLnR4dAppbmRleCA5Y2M2Yzk2YTk5ZjEyZDI2Yjk0NDA0NGJhYWJjYjNm
YWYzOWQ5NzZiLi4zZjEyYjE5YTA1Mjc2MDRkZDljOWJiMjQ3YmVmYzQ5ZDdhYWYwY2FkIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdW5pdC10ZXN0cy9hcnJheS11dGlsaXRpZXMt
ZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci91bml0LXRlc3RzL2FycmF5
LXV0aWxpdGllcy1leHBlY3RlZC50eHQKQEAgLTEzMiw2ICsxMzIsMzggQEAgUEFTUzogaW5zZXJ0
QXRJbmRleCB3aXRoIDAgPCBpbmRleCA8IGxlbmd0aCBzaG91bGQgaW5zZXJ0IGF0IHRoZSBjb3Jy
ZWN0IGxvY2F0aW8KIFBBU1M6IGluc2VydEF0SW5kZXggd2l0aCBuZWdhdGl2ZSBpbmRleCBzaG91
bGQgaW5zZXJ0IGZyb20gdGhlIGVuZC4KIFBBU1M6IGluc2VydEF0SW5kZXggd2l0aCBpbmRleCBn
cmVhdGVyIHRoYW4gYXJyYXkgbGVuZ3RoIHNob3VsZCBpbnNlcnQgYXQgdGhlIGVuZC4KIAorLS0g
UnVubmluZyB0ZXN0IGNhc2U6IEFycmF5LnByb3RvdHlwZS5wdXNoSXRlcmFibGUKK0FycmF5Ogor
WzEsMl0gPT4gWzEsMiwiYTEiLCJhMiJdCisKK1NldDoKK1sxLDJdID0+IFsxLDIsInMxIiwiczIi
XQorWzEsMl0gPT4gWzEsMixbInMxIiwiczEiXSxbInMyIiwiczIiXV0KK1sxLDJdID0+IFsxLDIs
InMxIiwiczIiXQorWzEsMl0gPT4gWzEsMiwiczEiLCJzMiJdCisKK01hcDoKK1sxLDJdID0+IFsx
LDIsWyJtMWsiLCJtMXYiXSxbIm0yayIsIm0ydiJdXQorWzEsMl0gPT4gWzEsMixbIm0xayIsIm0x
diJdLFsibTJrIiwibTJ2Il1dCitbMSwyXSA9PiBbMSwyLCJtMWsiLCJtMmsiXQorWzEsMl0gPT4g
WzEsMiwibTF2IiwibTJ2Il0KKworT2JqZWN0OgorWzEsMl0gPT4gWzEsMixbIm8xayIsIm8xdiJd
LFsibzJrIiwibzJ2Il1dCitbMSwyXSA9PiBbMSwyLCJvMWsiLCJvMmsiXQorWzEsMl0gPT4gWzEs
MiwibzF2IiwibzJ2Il0KKworR2VuZXJhdG9yOgorWzEsMl0gPT4gWzEsMiwiZzEiLCJnMiJdCisK
K05vZGU6CitbMSwyXSA9PiBbMSwyLDxuMT4sPG4yPl0KK1sxLDJdID0+IFsxLDIsPG4xPiw8bjI+
XQorCitPYmplY3QgKGRvZXNuJ3QgaGF2ZSBbU3ltYm9sLml0ZXJhdG9yXSk6CitQQVNTOiBTaG91
bGQgcHJvZHVjZSBhbiBleGNlcHRpb24uCitUeXBlRXJyb3I6IHVuZGVmaW5lZCBpcyBub3QgYSBm
dW5jdGlvbiAobmVhciAnLi4uaXRlbSBvZiBpdGVyYWJsZS4uLicpCisKIC0tIFJ1bm5pbmcgdGVz
dCBjYXNlOiBBcnJheS5wcm90b3R5cGUua2V5U2V0CiBQQVNTOiBrZXlTZXQgc2hvdWxkIGNyZWF0
ZSBhbiBvYmplY3Qgd2l0aCBrZXlzIGVxdWFsIHRvIHRoZSBhcnJheSB2YWx1ZXMuCiBQQVNTOiBr
ZXlTZXQgc2hvdWxkIGNyZWF0ZSBhbiBvYmplY3Qgd2l0aCBhbGwgdmFsdWVzIGVxdWFsIHRvIHRy
dWUuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdW5pdC10ZXN0cy9hcnJheS11
dGlsaXRpZXMuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci91bml0LXRlc3RzL2FycmF5LXV0
aWxpdGllcy5odG1sCmluZGV4IGMzMjgyYTc3OGMwNWZiZTY2NmYzNDFjNWU2NGZjNTBkMDdkNjc1
YWMuLmYzZWIzODE2MDExZTE3ZGRlMGIxOWFmNjdlZGYwODc3ZDE5MDdkOGQgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2luc3BlY3Rvci91bml0LXRlc3RzL2FycmF5LXV0aWxpdGllcy5odG1sCisr
KyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci91bml0LXRlc3RzL2FycmF5LXV0aWxpdGllcy5odG1s
CkBAIC0zMDQsNiArMzA0LDg4IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICB9CiAgICAgfSk7
CiAKKyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJBcnJheS5wcm90b3R5
cGUucHVzaEl0ZXJhYmxlIiwKKyAgICAgICAgdGVzdCgpIHsKKyAgICAgICAgICAgIGZ1bmN0aW9u
IHRlc3QoaXRlcmFibGUpIHsKKyAgICAgICAgICAgICAgICBsZXQgYXJyYXkgPSBbMSwgMl07CisK
KyAgICAgICAgICAgICAgICBmdW5jdGlvbiBzdHJpbmdpZnkob2JqZWN0KQorICAgICAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICAgICAgbGV0IHN0cmluZyA9IEpTT04uc3RyaW5naWZ5KG9i
amVjdCwgZnVuY3Rpb24oa2V5LCB2YWx1ZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KHZhbHVlIGluc3RhbmNlb2YgTm9kZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gIjwiICsgdmFsdWUubG9jYWxOYW1lICsgIj4iOworICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIHZhbHVlOworICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKC8iKDxbXj5dKj4pIi9nLCAiJDEiKTsKKyAgICAgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBsZXQgYmVmb3JlID0gc3RyaW5naWZ5KGFycmF5
KTsKKyAgICAgICAgICAgICAgICBhcnJheS5wdXNoSXRlcmFibGUoaXRlcmFibGUpOworICAgICAg
ICAgICAgICAgIGxldCBhZnRlciA9IHN0cmluZ2lmeShhcnJheSk7CisKKyAgICAgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmxvZyhiZWZvcmUgKyAiID0+ICIgKyBhZnRlcik7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJBcnJheToiKTsKKyAgICAgICAg
ICAgIHRlc3QoWyJhMSIsICJhMiJdKTsKKworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5uZXds
aW5lKCk7CisKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJTZXQ6Iik7CisgICAgICAg
ICAgICBjb25zdCBzZXQgPSBuZXcgU2V0KFsiczEiLCAiczIiXSk7CisgICAgICAgICAgICB0ZXN0
KHNldCk7CisgICAgICAgICAgICB0ZXN0KHNldC5lbnRyaWVzKCkpOworICAgICAgICAgICAgdGVz
dChzZXQua2V5cygpKTsKKyAgICAgICAgICAgIHRlc3Qoc2V0LnZhbHVlcygpKTsKKworICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5uZXdsaW5lKCk7CisKKyAgICAgICAgICAgIEluc3BlY3RvclRl
c3QubG9nKCJNYXA6Iik7CisgICAgICAgICAgICBjb25zdCBtYXAgPSBuZXcgTWFwKFtbIm0xayIs
ICJtMXYiXSwgWyJtMmsiLCAibTJ2Il1dKTsKKyAgICAgICAgICAgIHRlc3QobWFwKTsKKyAgICAg
ICAgICAgIHRlc3QobWFwLmVudHJpZXMoKSk7CisgICAgICAgICAgICB0ZXN0KG1hcC5rZXlzKCkp
OworICAgICAgICAgICAgdGVzdChtYXAudmFsdWVzKCkpOworCisgICAgICAgICAgICBJbnNwZWN0
b3JUZXN0Lm5ld2xpbmUoKTsKKworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIk9iamVj
dDoiKTsKKyAgICAgICAgICAgIGNvbnN0IG9iamVjdCA9IHsKKyAgICAgICAgICAgICAgICBvMWs6
ICJvMXYiLAorICAgICAgICAgICAgICAgIG8yazogIm8ydiIsCisgICAgICAgICAgICB9OworICAg
ICAgICAgICAgdGVzdChPYmplY3QuZW50cmllcyhvYmplY3QpKTsKKyAgICAgICAgICAgIHRlc3Qo
T2JqZWN0LmtleXMob2JqZWN0KSk7CisgICAgICAgICAgICB0ZXN0KE9iamVjdC52YWx1ZXMob2Jq
ZWN0KSk7CisKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QubmV3bGluZSgpOworCisgICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LmxvZygiR2VuZXJhdG9yOiIpOworICAgICAgICAgICAgZnVuY3Rp
b24qIGdlbmVyYXRvcigpIHsKKyAgICAgICAgICAgICAgICB5aWVsZCAiZzEiOworICAgICAgICAg
ICAgICAgIHlpZWxkICJnMiI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICB0ZXN0KGdlbmVy
YXRvcigpKTsKKworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5uZXdsaW5lKCk7CisKKyAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJOb2RlOiIpOworICAgICAgICAgICAgY29uc3Qgbm9k
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgICAgICAgICAgbm9kZS5hcHBl
bmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJuMSIpKTsKKyAgICAgICAgICAgIG5vZGUu
YXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibjIiKSk7CisgICAgICAgICAgICB0
ZXN0KG5vZGUuY2hpbGRyZW4pOworICAgICAgICAgICAgdGVzdChub2RlLnF1ZXJ5U2VsZWN0b3JB
bGwoIioiKSk7CisKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QubmV3bGluZSgpOworCisgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiT2JqZWN0IChkb2Vzbid0IGhhdmUgW1N5bWJvbC5p
dGVyYXRvcl0pOiIpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFeGNlcHRpb24o
KCkgPT4geworICAgICAgICAgICAgICAgIHRlc3Qob2JqZWN0KTsKKyAgICAgICAgICAgIH0pOwor
ICAgICAgICB9LAorICAgIH0pOworCiAgICAgc3VpdGUuYWRkVGVzdENhc2UoewogICAgICAgICBu
YW1lOiAiQXJyYXkucHJvdG90eXBlLmtleVNldCIsCiAgICAgICAgIHRlc3QoKSB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>377632</attachid>
            <date>2019-08-29 15:15:38 -0700</date>
            <delta_ts>2019-08-29 16:56:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201082-20190829151537.patch</filename>
            <type>text/plain</type>
            <size>42319</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IGU0N2M4ODliZTVjMDlkNmQ2OTcyNDQ4NTVjNjQy
ZjhlNzRiMzc2ODAuLjQwYjlkZTEwZDRmNjZhOTZhOTQwZTBiZjgwNTIxMDhjMzBjZTkxYmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc1IEBACisyMDE5LTA4LTI5ICBEZXZp
biBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBy
ZXBsYWNlIHVzZXMgb2YgYEFycmF5LnByb3RvdHlwZS5jb25jYXRgIHdpdGggYEFycmF5LnByb3Rv
dHlwZS5wdXNoYAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjAxMDgyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgSm9zZXBoIFBlY29yYXJvLgorCisgICAg
ICAgIGB4ID0geC5jb25jYXQoeSlgIGlzIHZlcnkgc2xvdywgYXMgYHhgIGhhcyB0byBiZSBmdWxs
eSBjb3BpZWQgaW4gb3JkZXIgdG8gYWRkIGB5YCB0byBpdC4KKyAgICAgICAgSW50cm9kdWNlIGBB
cnJheS5wcm90b3R5cGUucHVzaEl0ZXJhYmxlYCwgd2hpY2ggaXRlcmF0ZXMgdGhlIGdpdmVuIGBp
dGVyYWJsZWAgYW5kIGFkZHMgZWFjaAorICAgICAgICBpdGVtIHRvIHRoZSBgdGhpc2AgYXJyYXku
CisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0RPTURlYnVnZ2VyTWFuYWdl
ci5qczoKKyAgICAgICAgKFdJLkRPTURlYnVnZ2VyTWFuYWdlci5wcm90b3R5cGUuZ2V0IGRvbUJy
ZWFrcG9pbnRzKToKKyAgICAgICAgKFdJLkRPTURlYnVnZ2VyTWFuYWdlci5wcm90b3R5cGUuZG9t
QnJlYWtwb2ludHNJblN1YnRyZWUpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvQ29udHJvbGxl
cnMvSmF2YVNjcmlwdFJ1bnRpbWVDb21wbGV0aW9uUHJvdmlkZXIuanM6CisgICAgICAgIChXSS5K
YXZhU2NyaXB0UnVudGltZUNvbXBsZXRpb25Qcm92aWRlci5jb21wbGV0aW9uQ29udHJvbGxlckNv
bXBsZXRpb25zTmVlZGVkLnJlY2VpdmVkUHJvcGVydHlOYW1lcyk6CisgICAgICAgICogVXNlcklu
dGVyZmFjZS9Nb2RlbHMvQ1NTQ29tcGxldGlvbnMuanM6CisgICAgICAgIChXSS5DU1NDb21wbGV0
aW9ucyk6CisgICAgICAgICogVXNlckludGVyZmFjZS9Nb2RlbHMvQ1NTS2V5d29yZENvbXBsZXRp
b25zLmpzOgorICAgICAgICAoV0kuQ1NTS2V5d29yZENvbXBsZXRpb25zLmZvclByb3BlcnR5KToK
KyAgICAgICAgKFdJLkNTU0tleXdvcmRDb21wbGV0aW9ucy5mb3JQcm9wZXJ0eS5hZGRLZXl3b3Jk
c0Zvck5hbWUpOgorICAgICAgICAoV0kuQ1NTS2V5d29yZENvbXBsZXRpb25zLmZvckZ1bmN0aW9u
KToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL01vZGVscy9DYW52YXMuanM6CisgICAgICAgIChX
SS5DYW52YXMucHJvdG90eXBlLnJlY29yZGluZ1Byb2dyZXNzKToKKyAgICAgICAgKiBVc2VySW50
ZXJmYWNlL01vZGVscy9ET01Ob2RlU3R5bGVzLmpzOgorICAgICAgICAoV0kuRE9NTm9kZVN0eWxl
cy5wcm90b3R5cGUuX3VwZGF0ZVN0eWxlQ2FzY2FkZSk6CisgICAgICAgIChXSS5ET01Ob2RlU3R5
bGVzLnByb3RvdHlwZS5fY29sbGVjdFN0eWxlc0luQ2FzY2FkZU9yZGVyKToKKyAgICAgICAgKiBV
c2VySW50ZXJmYWNlL01vZGVscy9UaW1lbGluZVJlY29yZGluZy5qczoKKyAgICAgICAgKFdJLlRp
bWVsaW5lUmVjb3JkaW5nLnByb3RvdHlwZS5nZXQgc291cmNlQ29kZVRpbWVsaW5lcyk6CisgICAg
ICAgIChXSS5UaW1lbGluZVJlY29yZGluZy5wcm90b3R5cGUuaW5pdGlhbGl6ZUNhbGxpbmdDb250
ZXh0VHJlZXMpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvUHJvdG9jb2wvUmVtb3RlT2JqZWN0
LmpzOgorICAgICAgICAoV0kuUmVtb3RlT2JqZWN0LnByb3RvdHlwZS5fZ2V0UHJvcGVydHlEZXNj
cmlwdG9yc1Jlc29sdmVyKToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnNvbGVN
ZXNzYWdlVmlldy5qczoKKyAgICAgICAgKFdJLkNvbnNvbGVNZXNzYWdlVmlldy5wcm90b3R5cGUu
X2FwcGVuZE1lc3NhZ2VUZXh0QW5kQXJndW1lbnRzKToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNl
L1ZpZXdzL0NvbnRlbnRCcm93c2VyLmpzOgorICAgICAgICAoV0kuQ29udGVudEJyb3dzZXIucHJv
dG90eXBlLmdldCBjdXJyZW50UmVwcmVzZW50ZWRPYmplY3RzKToKKyAgICAgICAgKiBVc2VySW50
ZXJmYWNlL1ZpZXdzL0RPTVRyZWVFbGVtZW50LmpzOgorICAgICAgICAoV0kuRE9NVHJlZUVsZW1l
bnQucHJvdG90eXBlLl92aXNpYmxlQ2hpbGRyZW4pOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2Uv
Vmlld3MvRGF0YUdyaWROb2RlLmpzOgorICAgICAgICAoV0kuRGF0YUdyaWROb2RlLnByb3RvdHlw
ZS5nZXQgZmlsdGVyYWJsZURhdGEpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvSGVh
cEFsbG9jYXRpb25zVGltZWxpbmVWaWV3LmpzOgorICAgICAgICAoV0kuSGVhcEFsbG9jYXRpb25z
VGltZWxpbmVWaWV3LnByb3RvdHlwZS5nZXQgc2VsZWN0aW9uUGF0aENvbXBvbmVudHMpOgorICAg
ICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvSW5kZXhlZERhdGFiYXNlT2JqZWN0U3RvcmVDb250
ZW50Vmlldy5qczoKKyAgICAgICAgKFdJLkluZGV4ZWREYXRhYmFzZU9iamVjdFN0b3JlQ29udGVu
dFZpZXcucHJvdG90eXBlLl9mZXRjaE1vcmVEYXRhLnByb2Nlc3NFbnRyaWVzKToKKyAgICAgICAg
KiBVc2VySW50ZXJmYWNlL1ZpZXdzL05hdmlnYXRpb25JdGVtLmpzOgorICAgICAgICAoV0kuTmF2
aWdhdGlvbkl0ZW0ucHJvdG90eXBlLmdldCBfY2xhc3NOYW1lcyk6CisgICAgICAgICogVXNlcklu
dGVyZmFjZS9WaWV3cy9PYmplY3RUcmVlVmlldy5qczoKKyAgICAgICAgKFdJLk9iamVjdFRyZWVW
aWV3LnByb3RvdHlwZS5fdXBkYXRlUHJvcGVydGllcyk6CisgICAgICAgICogVXNlckludGVyZmFj
ZS9WaWV3cy9PcGVuUmVzb3VyY2VEaWFsb2cuanM6CisgICAgICAgIChXSS5PcGVuUmVzb3VyY2VE
aWFsb2cucHJvdG90eXBlLl9hZGRSZXNvdXJjZXNGb3JGcmFtZSk6CisgICAgICAgICogVXNlcklu
dGVyZmFjZS9WaWV3cy9PdmVydmlld1RpbWVsaW5lVmlldy5qczoKKyAgICAgICAgKFdJLk92ZXJ2
aWV3VGltZWxpbmVWaWV3LnByb3RvdHlwZS5fbG9hZEV4aXN0aW5nUmVjb3Jkcyk6CisgICAgICAg
ICogVXNlckludGVyZmFjZS9WaWV3cy9SZXNvdXJjZUNvbGxlY3Rpb25Db250ZW50Vmlldy5qczoK
KyAgICAgICAgKFdJLlJlc291cmNlQ29sbGVjdGlvbkNvbnRlbnRWaWV3LnByb3RvdHlwZS5nZXQg
bmF2aWdhdGlvbkl0ZW1zKToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1Jlc291cmNl
SGVhZGVyc0NvbnRlbnRWaWV3LmpzOgorICAgICAgICAoV0kuUmVzb3VyY2VIZWFkZXJzQ29udGVu
dFZpZXcucHJvdG90eXBlLl9wZXJmb21TZWFyY2hPbktleVZhbHVlUGFpcnMpOgorICAgICAgICAq
IFVzZXJJbnRlcmZhY2UvVmlld3MvUmVzb3VyY2VTZWN1cml0eUNvbnRlbnRWaWV3LmpzOgorICAg
ICAgICAoV0kuUmVzb3VyY2VTZWN1cml0eUNvbnRlbnRWaWV3LnByb3RvdHlwZS5fcGVyZm9tU2Vh
cmNoT25LZXlWYWx1ZVBhaXJzKToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1Njcmlw
dENsdXN0ZXJUaW1lbGluZVZpZXcuanM6CisgICAgICAgIChXSS5TY3JpcHRDbHVzdGVyVGltZWxp
bmVWaWV3LnByb3RvdHlwZS5nZXQgc2VsZWN0aW9uUGF0aENvbXBvbmVudHMpOgorICAgICAgICAq
IFVzZXJJbnRlcmZhY2UvVmlld3MvU2NydWJiZXJOYXZpZ2F0aW9uSXRlbS5qczoKKyAgICAgICAg
KFdJLlNjcnViYmVyTmF2aWdhdGlvbkl0ZW0ucHJvdG90eXBlLmdldCBhZGRpdGlvbmFsQ2xhc3NO
YW1lcyk6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9TcHJlYWRzaGVldFN0eWxlUHJv
cGVydHkuanM6CisgICAgICAgIChXSS5TcHJlYWRzaGVldFN0eWxlUHJvcGVydHkucHJvdG90eXBl
Ll9hZGRHcmFkaWVudFRva2Vucyk6CisgICAgICAgIChXSS5TcHJlYWRzaGVldFN0eWxlUHJvcGVy
dHkucHJvdG90eXBlLl9hZGRDb2xvclRva2Vucy5wdXNoUG9zc2libGVDb2xvclRva2VuKToKKyAg
ICAgICAgKFdJLlNwcmVhZHNoZWV0U3R5bGVQcm9wZXJ0eS5wcm90b3R5cGUuX2FkZFRpbWluZ0Z1
bmN0aW9uVG9rZW5zKToKKyAgICAgICAgKFdJLlNwcmVhZHNoZWV0U3R5bGVQcm9wZXJ0eS5wcm90
b3R5cGUuX2FkZFZhcmlhYmxlVG9rZW5zKToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdz
L1RyZWVPdXRsaW5lLmpzOgorICAgICAgICAoV0kuVHJlZU91dGxpbmUucHJvdG90eXBlLnNlbGZP
ckRlc2NlbmRhbnQpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvVmlldy5qczoKKyAg
ICAgICAgKFdJLlZpZXcuX3Zpc2l0Vmlld1RyZWVGb3JMYXlvdXQpOgorCiAyMDE5LTA4LTI5ICBE
ZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9y
OiBSRUdSRVNTSU9OIChyMjQ4ODczKTogRGVidWdnZXI6IHByZXNzaW5nIGRlbGV0ZSBvbiBhIGJy
ZWFrcG9pbnQgd2lsbCBhbHNvIGRlbGV0ZSBhbnkgcmVzb3VyY2UvZWxlbWVudCBwYXJlbnQgaW1t
ZWRpYXRlbHkgYmVmb3JlIGl0IGluIHRoZSBsaXN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL1V0aWxpdGllcy5qcyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvVXRpbGl0aWVzLmpzCmluZGV4IDc0YmU0MjE2ODdm
OTViMTk2MDMwOTcyNGM5MmRjOGY2MTBjYjNmZTEuLmMzZTEzOWUzODE1MjczOWY0ZmMwZjkxN2Nh
YjUyNWUyMGI1NzZkNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL0Jhc2UvVXRpbGl0aWVzLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL0Jhc2UvVXRpbGl0aWVzLmpzCkBAIC02OTAsNiArNjkwLDE1IEBAIE9iamVjdC5k
ZWZpbmVQcm9wZXJ0eShBcnJheS5wcm90b3R5cGUsICJpbnNlcnRBdEluZGV4IiwKICAgICB9CiB9
KTsKIAorT2JqZWN0LmRlZmluZVByb3BlcnR5KEFycmF5LnByb3RvdHlwZSwgInB1c2hBbGwiLAor
eworICAgIHZhbHVlKGl0ZXJhYmxlKQorICAgIHsKKyAgICAgICAgZm9yIChsZXQgaXRlbSBvZiBp
dGVyYWJsZSkKKyAgICAgICAgICAgIHRoaXMucHVzaChpdGVtKTsKKyAgICB9LAorfSk7CisKIE9i
amVjdC5kZWZpbmVQcm9wZXJ0eShBcnJheS5wcm90b3R5cGUsICJwYXJ0aXRpb24iLAogewogICAg
IHZhbHVlKGNhbGxiYWNrKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvQ29udHJvbGxlcnMvRE9NRGVidWdnZXJNYW5hZ2VyLmpzIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvRE9NRGVidWdnZXJNYW5hZ2VyLmpz
CmluZGV4IGUwMjc5NDU3YjUyMzcwZTVkNWI4ZjE5Y2E3NDBlODU2MTg3MTI1NWMuLjBmYmM1YmE2
N2Y5YTU4ZGFjMzRiYmM1ZDU2OTZjNGQ3ZmYzMmViNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0RPTURlYnVnZ2VyTWFuYWdlci5q
cworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9E
T01EZWJ1Z2dlck1hbmFnZXIuanMKQEAgLTI0NiwxMSArMjQ2LDEyIEBAIFdJLkRPTURlYnVnZ2Vy
TWFuYWdlciA9IGNsYXNzIERPTURlYnVnZ2VyTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogICAg
ICAgICBsZXQgZnJhbWVzID0gW21haW5GcmFtZV07CiAgICAgICAgIHdoaWxlIChmcmFtZXMubGVu
Z3RoKSB7CiAgICAgICAgICAgICBsZXQgZnJhbWUgPSBmcmFtZXMuc2hpZnQoKTsKKwogICAgICAg
ICAgICAgbGV0IGRvbUJyZWFrcG9pbnROb2RlSWRlbnRpZmllck1hcCA9IHRoaXMuX2RvbUJyZWFr
cG9pbnRGcmFtZUlkZW50aWZpZXJNYXAuZ2V0KGZyYW1lLmlkKTsKICAgICAgICAgICAgIGlmIChk
b21CcmVha3BvaW50Tm9kZUlkZW50aWZpZXJNYXApCi0gICAgICAgICAgICAgICAgcmVzb2x2ZWRC
cmVha3BvaW50cyA9IHJlc29sdmVkQnJlYWtwb2ludHMuY29uY2F0KEFycmF5LmZyb20oZG9tQnJl
YWtwb2ludE5vZGVJZGVudGlmaWVyTWFwLnZhbHVlcygpKSk7CisgICAgICAgICAgICAgICAgcmVz
b2x2ZWRCcmVha3BvaW50cy5wdXNoQWxsKGRvbUJyZWFrcG9pbnROb2RlSWRlbnRpZmllck1hcC52
YWx1ZXMoKSk7CiAKLSAgICAgICAgICAgIGZyYW1lcy5wdXNoKC4uLmZyYW1lLmNoaWxkRnJhbWVD
b2xsZWN0aW9uKTsKKyAgICAgICAgICAgIGZyYW1lcy5wdXNoQWxsKGZyYW1lLmNoaWxkRnJhbWVD
b2xsZWN0aW9uKTsKICAgICAgICAgfQogCiAgICAgICAgIHJldHVybiByZXNvbHZlZEJyZWFrcG9p
bnRzOwpAQCAtMjk0LDggKzI5NSw4IEBAIFdJLkRPTURlYnVnZ2VyTWFuYWdlciA9IGNsYXNzIERP
TURlYnVnZ2VyTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICAgICAgd2hpbGUgKGNo
aWxkcmVuLmxlbmd0aCkgewogICAgICAgICAgICAgICAgIGxldCBjaGlsZCA9IGNoaWxkcmVuLnBv
cCgpOwogICAgICAgICAgICAgICAgIGlmIChjaGlsZC5jaGlsZHJlbikKLSAgICAgICAgICAgICAg
ICAgICAgY2hpbGRyZW4gPSBjaGlsZHJlbi5jb25jYXQoY2hpbGQuY2hpbGRyZW4pOwotICAgICAg
ICAgICAgICAgIGJyZWFrcG9pbnRzID0gYnJlYWtwb2ludHMuY29uY2F0KHRoaXMuZG9tQnJlYWtw
b2ludHNGb3JOb2RlKGNoaWxkKSk7CisgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuLnB1c2hB
bGwoY2hpbGQuY2hpbGRyZW4pOworICAgICAgICAgICAgICAgIGJyZWFrcG9pbnRzLnB1c2hBbGwo
dGhpcy5kb21CcmVha3BvaW50c0Zvck5vZGUoY2hpbGQpKTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9D
b250cm9sbGVycy9KYXZhU2NyaXB0UnVudGltZUNvbXBsZXRpb25Qcm92aWRlci5qcyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0phdmFTY3JpcHRSdW50
aW1lQ29tcGxldGlvblByb3ZpZGVyLmpzCmluZGV4IDE0ZmQyYmE5NDRhOTg4ZTYyM2YxMGYxYWIz
NjRhMjQ1MGVjMzg0ZDQuLjdjZjEyYTQzMjI4OTVkZDUwZDczZGFkOTlmODU1MzU4YjBiOWMyZDIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xs
ZXJzL0phdmFTY3JpcHRSdW50aW1lQ29tcGxldGlvblByb3ZpZGVyLmpzCisrKyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0phdmFTY3JpcHRSdW50aW1l
Q29tcGxldGlvblByb3ZpZGVyLmpzCkBAIC0yNjgsNyArMjY4LDcgQEAgV0kuSmF2YVNjcmlwdFJ1
bnRpbWVDb21wbGV0aW9uUHJvdmlkZXIgPSBjbGFzcyBKYXZhU2NyaXB0UnVudGltZUNvbXBsZXRp
b25Qcm92aWQKICAgICAgICAgICAgIFdJLnJ1bnRpbWVNYW5hZ2VyLmFjdGl2ZUV4ZWN1dGlvbkNv
bnRleHQudGFyZ2V0LlJ1bnRpbWVBZ2VudC5yZWxlYXNlT2JqZWN0R3JvdXAoImNvbXBsZXRpb24i
KTsKIAogICAgICAgICAgICAgaWYgKCFiYXNlKSB7Ci0gICAgICAgICAgICAgICAgcHJvcGVydHlO
YW1lcy5wdXNoKC4uLkphdmFTY3JpcHRSdW50aW1lQ29tcGxldGlvblByb3ZpZGVyLl9jb21tYW5k
TGluZUFQSUtleXMpOworICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZXMucHVzaEFsbChKYXZh
U2NyaXB0UnVudGltZUNvbXBsZXRpb25Qcm92aWRlci5fY29tbWFuZExpbmVBUElLZXlzKTsKIAog
ICAgICAgICAgICAgICAgIGxldCBzYXZlZFJlc3VsdEFsaWFzID0gV0kuc2V0dGluZ3MuY29uc29s
ZVNhdmVkUmVzdWx0QWxpYXMudmFsdWU7CiAgICAgICAgICAgICAgICAgaWYgKHNhdmVkUmVzdWx0
QWxpYXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9N
b2RlbHMvQ1NTQ29tcGxldGlvbnMuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9Nb2RlbHMvQ1NTQ29tcGxldGlvbnMuanMKaW5kZXggZGMyODEyMmRkYjllOTgxYmIyNjY0
YzJkZjQ2OGFmODJjZDI2MWMxZC4uOTY4YzMyMWNiYmU2NzA0N2RkNGUyNzdmYzhhMTRkZDkwODc2
NDFhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9k
ZWxzL0NTU0NvbXBsZXRpb25zLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL01vZGVscy9DU1NDb21wbGV0aW9ucy5qcwpAQCAtNDIsNyArNDIsNyBAQCBXSS5DU1ND
b21wbGV0aW9ucyA9IGNsYXNzIENTU0NvbXBsZXRpb25zCiAgICAgICAgIC8vIHByb3BlcnRpZXMg
d2hlbiBpbml0aWFsaXplZCBmcm9tIHRoZSBwcm90b2NvbCBmb3IgQ1NTQ29tcGxldGlvbnMuY3Nz
TmFtZUNvbXBsZXRpb25zLgogICAgICAgICAvLyBPciBpdCBtYXkganVzdCBhIGxpc3Qgb2Ygc3Ry
aW5ncyB3aGVuIHF1aWNrbHkgaW5pdGlhbGl6ZWQgZm9yIG90aGVyIGNvbXBsZXRpb24gcHVycG9z
ZXMuCiAgICAgICAgIGlmIChwcm9wZXJ0aWVzLmxlbmd0aCAmJiB0eXBlb2YgcHJvcGVydGllc1sw
XSA9PT0gInN0cmluZyIpCi0gICAgICAgICAgICB0aGlzLl92YWx1ZXMgPSB0aGlzLl92YWx1ZXMu
Y29uY2F0KHByb3BlcnRpZXMpOworICAgICAgICAgICAgdGhpcy5fdmFsdWVzLnB1c2hBbGwocHJv
cGVydGllcyk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgZm9yICh2YXIgcHJvcGVydHkg
b2YgcHJvcGVydGllcykgewogICAgICAgICAgICAgICAgIHZhciBwcm9wZXJ0eU5hbWUgPSBwcm9w
ZXJ0eS5uYW1lOwpAQCAtNTIsNyArNTIsNyBAQCBXSS5DU1NDb21wbGV0aW9ucyA9IGNsYXNzIENT
U0NvbXBsZXRpb25zCiAKICAgICAgICAgICAgICAgICBsZXQgYWxpYXNlcyA9IHByb3BlcnR5LmFs
aWFzZXM7CiAgICAgICAgICAgICAgICAgaWYgKGFsaWFzZXMpCi0gICAgICAgICAgICAgICAgICAg
IHRoaXMuX3ZhbHVlcyA9IHRoaXMuX3ZhbHVlcy5jb25jYXQoYWxpYXNlcyk7CisgICAgICAgICAg
ICAgICAgICAgIHRoaXMuX3ZhbHVlcy5wdXNoQWxsKGFsaWFzZXMpOwogCiAgICAgICAgICAgICAg
ICAgdmFyIGxvbmdoYW5kcyA9IHByb3BlcnR5LmxvbmdoYW5kczsKICAgICAgICAgICAgICAgICBp
ZiAobG9uZ2hhbmRzKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9Nb2RlbHMvQ1NTS2V5d29yZENvbXBsZXRpb25zLmpzIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0NTU0tleXdvcmRDb21wbGV0aW9ucy5qcwppbmRl
eCBhNTM2YTVhODQxMjdhMWU4YWYzODBmZTJmOTg3YTllY2I4MWM0NzZhLi41ZWI2MTRjM2FkYzNl
YmQwZGNlMjc5Nzk3Y2FhOGY4ZGY0ZjA4MDA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvQ1NTS2V5d29yZENvbXBsZXRpb25zLmpzCisrKyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9DU1NLZXl3b3JkQ29t
cGxldGlvbnMuanMKQEAgLTM5LDEyICszOSwxMiBAQCBXSS5DU1NLZXl3b3JkQ29tcGxldGlvbnMu
Zm9yUHJvcGVydHkgPSBmdW5jdGlvbihwcm9wZXJ0eU5hbWUpCiAgICAgICAgIGxldCBpc05vdFBy
ZWZpeGVkID0gbmFtZS5jaGFyQXQoMCkgIT09ICItIjsKIAogICAgICAgICBpZiAobmFtZSBpbiBX
SS5DU1NLZXl3b3JkQ29tcGxldGlvbnMuX3Byb3BlcnR5S2V5d29yZE1hcCkKLSAgICAgICAgICAg
IGFjY2VwdGVkS2V5d29yZHMgPSBhY2NlcHRlZEtleXdvcmRzLmNvbmNhdChXSS5DU1NLZXl3b3Jk
Q29tcGxldGlvbnMuX3Byb3BlcnR5S2V5d29yZE1hcFtuYW1lXSk7CisgICAgICAgICAgICBhY2Nl
cHRlZEtleXdvcmRzLnB1c2hBbGwoV0kuQ1NTS2V5d29yZENvbXBsZXRpb25zLl9wcm9wZXJ0eUtl
eXdvcmRNYXBbbmFtZV0pOwogICAgICAgICBlbHNlIGlmIChpc05vdFByZWZpeGVkICYmICgiLXdl
YmtpdC0iICsgbmFtZSkgaW4gV0kuQ1NTS2V5d29yZENvbXBsZXRpb25zLl9wcm9wZXJ0eUtleXdv
cmRNYXApCi0gICAgICAgICAgICBhY2NlcHRlZEtleXdvcmRzID0gYWNjZXB0ZWRLZXl3b3Jkcy5j
b25jYXQoV0kuQ1NTS2V5d29yZENvbXBsZXRpb25zLl9wcm9wZXJ0eUtleXdvcmRNYXBbIi13ZWJr
aXQtIiArIG5hbWVdKTsKKyAgICAgICAgICAgIGFjY2VwdGVkS2V5d29yZHMucHVzaEFsbChXSS5D
U1NLZXl3b3JkQ29tcGxldGlvbnMuX3Byb3BlcnR5S2V5d29yZE1hcFsiLXdlYmtpdC0iICsgbmFt
ZV0pOwogCiAgICAgICAgIGlmIChXSS5DU1NLZXl3b3JkQ29tcGxldGlvbnMuaXNDb2xvckF3YXJl
UHJvcGVydHkobmFtZSkpCi0gICAgICAgICAgICBhY2NlcHRlZEtleXdvcmRzID0gYWNjZXB0ZWRL
ZXl3b3Jkcy5jb25jYXQoV0kuQ1NTS2V5d29yZENvbXBsZXRpb25zLl9jb2xvcnMpOworICAgICAg
ICAgICAgYWNjZXB0ZWRLZXl3b3Jkcy5wdXNoQWxsKFdJLkNTU0tleXdvcmRDb21wbGV0aW9ucy5f
Y29sb3JzKTsKIAogICAgICAgICAvLyBPbmx5IHN1Z2dlc3QgImluaGVyaXQiIG9uIGluaGVyaXRh
YmxlIHByb3BlcnRpZXMgZXZlbiB0aG91Z2ggaXQgaXMgdmFsaWQgb24gYWxsIHByb3BlcnRpZXMu
CiAgICAgICAgIGlmIChXSS5DU1NLZXl3b3JkQ29tcGxldGlvbnMuSW5oZXJpdGVkUHJvcGVydGll
cy5oYXMobmFtZSkpCkBAIC02Nyw3ICs2Nyw3IEBAIFdJLkNTU0tleXdvcmRDb21wbGV0aW9ucy5m
b3JQcm9wZXJ0eSA9IGZ1bmN0aW9uKHByb3BlcnR5TmFtZSkKIAogICAgIGlmIChhY2NlcHRlZEtl
eXdvcmRzLmluY2x1ZGVzKFdJLkNTU0tleXdvcmRDb21wbGV0aW9ucy5BbGxQcm9wZXJ0eU5hbWVz
UGxhY2Vob2xkZXIpICYmIFdJLkNTU0NvbXBsZXRpb25zLmNzc05hbWVDb21wbGV0aW9ucykgewog
ICAgICAgICBhY2NlcHRlZEtleXdvcmRzLnJlbW92ZShXSS5DU1NLZXl3b3JkQ29tcGxldGlvbnMu
QWxsUHJvcGVydHlOYW1lc1BsYWNlaG9sZGVyKTsKLSAgICAgICAgYWNjZXB0ZWRLZXl3b3JkcyA9
IGFjY2VwdGVkS2V5d29yZHMuY29uY2F0KFdJLkNTU0NvbXBsZXRpb25zLmNzc05hbWVDb21wbGV0
aW9ucy52YWx1ZXMpOworICAgICAgICBhY2NlcHRlZEtleXdvcmRzLnB1c2hBbGwoV0kuQ1NTQ29t
cGxldGlvbnMuY3NzTmFtZUNvbXBsZXRpb25zLnZhbHVlcyk7CiAgICAgfQogCiAgICAgcmV0dXJu
IG5ldyBXSS5DU1NDb21wbGV0aW9ucyhBcnJheS5mcm9tKG5ldyBTZXQoYWNjZXB0ZWRLZXl3b3Jk
cykpLCB0cnVlKTsKQEAgLTEwNywxNiArMTA3LDE2IEBAIFdJLkNTU0tleXdvcmRDb21wbGV0aW9u
cy5mb3JGdW5jdGlvbiA9IGZ1bmN0aW9uKGZ1bmN0aW9uTmFtZSkKICAgICBpZiAoZnVuY3Rpb25O
YW1lID09PSAidmFyIikKICAgICAgICAgc3VnZ2VzdGlvbnMgPSBbXTsKICAgICBlbHNlIGlmIChm
dW5jdGlvbk5hbWUgPT09ICJjYWxjIiB8fCBmdW5jdGlvbk5hbWUgPT09ICJtaW4iIHx8IGZ1bmN0
aW9uTmFtZSA9PT0gIm1heCIpCi0gICAgICAgIHN1Z2dlc3Rpb25zID0gc3VnZ2VzdGlvbnMuY29u
Y2F0KFsiY2FsYygpIiwgIm1pbigpIiwgIm1heCgpIl0pOworICAgICAgICBzdWdnZXN0aW9ucy5w
dXNoKCJjYWxjKCkiLCAibWluKCkiLCAibWF4KCkiKTsKICAgICBlbHNlIGlmIChmdW5jdGlvbk5h
bWUgPT09ICJlbnYiKQotICAgICAgICBzdWdnZXN0aW9ucyA9IHN1Z2dlc3Rpb25zLmNvbmNhdChb
InNhZmUtYXJlYS1pbnNldC10b3AiLCAic2FmZS1hcmVhLWluc2V0LXJpZ2h0IiwgInNhZmUtYXJl
YS1pbnNldC1ib3R0b20iLCAic2FmZS1hcmVhLWluc2V0LWxlZnQiXSk7CisgICAgICAgIHN1Z2dl
c3Rpb25zLnB1c2goInNhZmUtYXJlYS1pbnNldC10b3AiLCAic2FmZS1hcmVhLWluc2V0LXJpZ2h0
IiwgInNhZmUtYXJlYS1pbnNldC1ib3R0b20iLCAic2FmZS1hcmVhLWluc2V0LWxlZnQiKTsKICAg
ICBlbHNlIGlmIChmdW5jdGlvbk5hbWUgPT09ICJpbWFnZS1zZXQiKQogICAgICAgICBzdWdnZXN0
aW9ucy5wdXNoKCJ1cmwoKSIpOwogICAgIGVsc2UgaWYgKGZ1bmN0aW9uTmFtZSA9PT0gInJlcGVh
dCIpCi0gICAgICAgIHN1Z2dlc3Rpb25zID0gc3VnZ2VzdGlvbnMuY29uY2F0KFsiYXV0byIsICJh
dXRvLWZpbGwiLCAiYXV0by1maXQiLCAibWluLWNvbnRlbnQiLCAibWF4LWNvbnRlbnQiXSk7Cisg
ICAgICAgIHN1Z2dlc3Rpb25zLnB1c2goImF1dG8iLCAiYXV0by1maWxsIiwgImF1dG8tZml0Iiwg
Im1pbi1jb250ZW50IiwgIm1heC1jb250ZW50Iik7CiAgICAgZWxzZSBpZiAoZnVuY3Rpb25OYW1l
LmVuZHNXaXRoKCJncmFkaWVudCIpKSB7Ci0gICAgICAgIHN1Z2dlc3Rpb25zID0gc3VnZ2VzdGlv
bnMuY29uY2F0KFsidG8iLCAibGVmdCIsICJyaWdodCIsICJ0b3AiLCAiYm90dG9tIl0pOwotICAg
ICAgICBzdWdnZXN0aW9ucyA9IHN1Z2dlc3Rpb25zLmNvbmNhdChXSS5DU1NLZXl3b3JkQ29tcGxl
dGlvbnMuX2NvbG9ycyk7CisgICAgICAgIHN1Z2dlc3Rpb25zLnB1c2goInRvIiwgImxlZnQiLCAi
cmlnaHQiLCAidG9wIiwgImJvdHRvbSIpOworICAgICAgICBzdWdnZXN0aW9ucy5wdXNoQWxsKFdJ
LkNTU0tleXdvcmRDb21wbGV0aW9ucy5fY29sb3JzKTsKICAgICB9CiAKICAgICByZXR1cm4gbmV3
IFdJLkNTU0NvbXBsZXRpb25zKHN1Z2dlc3Rpb25zLCB0cnVlKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9DYW52YXMuanMgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvQ2FudmFzLmpzCmluZGV4IDdhMzg4
MGZkNTZjN2U2MDFkMTY2OGYxODJlNjI1OTg3Y2FjYzAwMzIuLjI4ZTc4NTg4ZGJkMzE0NmEzZTRl
NmIyYzIyOWQ3MGZkY2M2YWY0OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL01vZGVscy9DYW52YXMuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvTW9kZWxzL0NhbnZhcy5qcwpAQCAtMzYyLDcgKzM2Miw3IEBAIFdJLkNh
bnZhcyA9IGNsYXNzIENhbnZhcyBleHRlbmRzIFdJLk9iamVjdAogICAgIHsKICAgICAgICAgLy8g
Q2FsbGVkIGZyb20gV0kuQ2FudmFzTWFuYWdlci4KIAotICAgICAgICB0aGlzLl9yZWNvcmRpbmdG
cmFtZXMucHVzaCguLi5mcmFtZXNQYXlsb2FkLm1hcChXSS5SZWNvcmRpbmdGcmFtZS5mcm9tUGF5
bG9hZCkpOworICAgICAgICB0aGlzLl9yZWNvcmRpbmdGcmFtZXMucHVzaEFsbChmcmFtZXNQYXls
b2FkLm1hcChXSS5SZWNvcmRpbmdGcmFtZS5mcm9tUGF5bG9hZCkpOwogCiAgICAgICAgIHRoaXMu
X3JlY29yZGluZ0J1ZmZlclVzZWQgPSBidWZmZXJVc2VkOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvRE9NTm9kZVN0eWxlcy5qcyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9ET01Ob2RlU3R5bGVzLmpz
CmluZGV4IDQzMDliNmE2MWUzNzg5ZTRjZDEyYzY3MmIwZTI5M2E2MDg4ZDg1Y2QuLjVkOWM3YmNk
MGQ4YWU4M2E0YjE0NjMyNTI2MWM1YzIwZTFkN2M0OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9ET01Ob2RlU3R5bGVzLmpzCisrKyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9ET01Ob2RlU3R5bGVzLmpz
CkBAIC03MzgsNyArNzM4LDcgQEAgV0kuRE9NTm9kZVN0eWxlcyA9IGNsYXNzIERPTU5vZGVTdHls
ZXMgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLl9p
bmhlcml0ZWRSdWxlcy5sZW5ndGg7ICsraSkgewogICAgICAgICAgICAgdmFyIGluaGVyaXRlZFN0
eWxlSW5mbyA9IHRoaXMuX2luaGVyaXRlZFJ1bGVzW2ldOwogICAgICAgICAgICAgdmFyIGluaGVy
aXRlZENhc2NhZGVPcmRlciA9IHRoaXMuX2NvbGxlY3RTdHlsZXNJbkNhc2NhZGVPcmRlcihpbmhl
cml0ZWRTdHlsZUluZm8ubWF0Y2hlZFJ1bGVzLCBpbmhlcml0ZWRTdHlsZUluZm8uaW5saW5lU3R5
bGUsIG51bGwpOwotICAgICAgICAgICAgY2FzY2FkZU9yZGVyZWRTdHlsZURlY2xhcmF0aW9ucyA9
IGNhc2NhZGVPcmRlcmVkU3R5bGVEZWNsYXJhdGlvbnMuY29uY2F0KGluaGVyaXRlZENhc2NhZGVP
cmRlcik7CisgICAgICAgICAgICBjYXNjYWRlT3JkZXJlZFN0eWxlRGVjbGFyYXRpb25zLnB1c2hB
bGwoaW5oZXJpdGVkQ2FzY2FkZU9yZGVyKTsKICAgICAgICAgfQogCiAgICAgICAgIHRoaXMuX29y
ZGVyZWRTdHlsZXMgPSBjYXNjYWRlT3JkZXJlZFN0eWxlRGVjbGFyYXRpb25zOwpAQCAtNzg4LDcg
Kzc4OCw3IEBAIFdJLkRPTU5vZGVTdHlsZXMgPSBjbGFzcyBET01Ob2RlU3R5bGVzIGV4dGVuZHMg
V0kuT2JqZWN0CiAgICAgICAgICAgICByZXN1bHQucHVzaChhdHRyaWJ1dGVzU3R5bGUpOwogCiAg
ICAgICAgIC8vIEZpbmFsbHkgYWRkIHRoZSB1c2VyIGFuZCB1c2VyIHN0eWxlc2hlZXQncyBtYXRj
aGVkIHN0eWxlIHJ1bGVzIHdlIGNvbGxlY3RlZCBlYXJsaWVyLgotICAgICAgICByZXN1bHQgPSBy
ZXN1bHQuY29uY2F0KHVzZXJBbmRVc2VyQWdlbnRTdHlsZXMpOworICAgICAgICByZXN1bHQucHVz
aEFsbCh1c2VyQW5kVXNlckFnZW50U3R5bGVzKTsKIAogICAgICAgICByZXR1cm4gcmVzdWx0Owog
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01v
ZGVscy9UaW1lbGluZVJlY29yZGluZy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL01vZGVscy9UaW1lbGluZVJlY29yZGluZy5qcwppbmRleCA4NzNlODc4ZWVmMWNkMjk2
ZGVmZmE0MTczNGNiZWExZDA0ZjBlYzFhLi40OGZlM2U1MTMwOWNhZjY2NDY5ODA4NzRjOTZlYTNi
ZWMwZTZmMTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9Nb2RlbHMvVGltZWxpbmVSZWNvcmRpbmcuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvTW9kZWxzL1RpbWVsaW5lUmVjb3JkaW5nLmpzCkBAIC0yNzIsNyArMjcy
LDcgQEAgV0kuVGltZWxpbmVSZWNvcmRpbmcgPSBjbGFzcyBUaW1lbGluZVJlY29yZGluZyBleHRl
bmRzIFdJLk9iamVjdAogICAgIHsKICAgICAgICAgbGV0IHRpbWVsaW5lcyA9IFtdOwogICAgICAg
ICBmb3IgKGxldCB0aW1lbGluZXNGb3JTb3VyY2VDb2RlIG9mIHRoaXMuX3NvdXJjZUNvZGVUaW1l
bGluZXNNYXAudmFsdWVzKCkpCi0gICAgICAgICAgICB0aW1lbGluZXMgPSB0aW1lbGluZXMuY29u
Y2F0KEFycmF5LmZyb20odGltZWxpbmVzRm9yU291cmNlQ29kZS52YWx1ZXMoKSkpOworICAgICAg
ICAgICAgdGltZWxpbmVzLnB1c2hBbGwodGltZWxpbmVzRm9yU291cmNlQ29kZS52YWx1ZXMoKSk7
CiAgICAgICAgIHJldHVybiB0aW1lbGluZXM7CiAgICAgfQogCkBAIC00NjAsOCArNDYwLDggQEAg
V0kuVGltZWxpbmVSZWNvcmRpbmcgPSBjbGFzcyBUaW1lbGluZVJlY29yZGluZyBleHRlbmRzIFdJ
Lk9iamVjdAogCiAgICAgaW5pdGlhbGl6ZUNhbGxpbmdDb250ZXh0VHJlZXMoc3RhY2tUcmFjZXMs
IHNhbXBsZUR1cmF0aW9ucykKICAgICB7Ci0gICAgICAgIHRoaXMuX2V4cG9ydERhdGFTYW1wbGVT
dGFja1RyYWNlcyA9IHRoaXMuX2V4cG9ydERhdGFTYW1wbGVTdGFja1RyYWNlcy5jb25jYXQoc3Rh
Y2tUcmFjZXMpOwotICAgICAgICB0aGlzLl9leHBvcnREYXRhU2FtcGxlRHVyYXRpb25zID0gdGhp
cy5fZXhwb3J0RGF0YVNhbXBsZUR1cmF0aW9ucy5jb25jYXQoc2FtcGxlRHVyYXRpb25zKTsKKyAg
ICAgICAgdGhpcy5fZXhwb3J0RGF0YVNhbXBsZVN0YWNrVHJhY2VzLnB1c2hBbGwoc3RhY2tUcmFj
ZXMpOworICAgICAgICB0aGlzLl9leHBvcnREYXRhU2FtcGxlRHVyYXRpb25zLnB1c2hBbGwoc2Ft
cGxlRHVyYXRpb25zKTsKIAogICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHN0YWNrVHJhY2Vz
Lmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgICB0aGlzLl90b3BEb3duQ2FsbGluZ0NvbnRleHRU
cmVlLnVwZGF0ZVRyZWVXaXRoU3RhY2tUcmFjZShzdGFja1RyYWNlc1tpXSwgc2FtcGxlRHVyYXRp
b25zW2ldKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1Byb3RvY29sL1JlbW90ZU9iamVjdC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1Byb3RvY29sL1JlbW90ZU9iamVjdC5qcwppbmRleCAwMjI4Mjc5NDBkMGZlMDlkZDU3
ZGM3YzQ3YWNiN2I2ZjZmM2YwNzZiLi4wYjQ0YTQwMzE4Njg2YTU5MTYxM2UzYmYzNjAwNzc2ZGEy
OWU1MjQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Q
cm90b2NvbC9SZW1vdGVPYmplY3QuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvUHJvdG9jb2wvUmVtb3RlT2JqZWN0LmpzCkBAIC02MjgsMTQgKzYyOCwxMSBAQCBX
SS5SZW1vdGVPYmplY3QgPSBjbGFzcyBSZW1vdGVPYmplY3QKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQogCi0gICAgICAgIGxldCBkZXNjcmlwdG9ycyA9IHByb3BlcnRpZXMubWFwKChw
YXlsb2FkKSA9PiB7Ci0gICAgICAgICAgICByZXR1cm4gV0kuUHJvcGVydHlEZXNjcmlwdG9yLmZy
b21QYXlsb2FkKHBheWxvYWQsIGZhbHNlLCB0aGlzLl90YXJnZXQpOwotICAgICAgICB9KTsKKyAg
ICAgICAgbGV0IGRlc2NyaXB0b3JzID0gcHJvcGVydGllcy5tYXAoKHBheWxvYWQpID0+IFdJLlBy
b3BlcnR5RGVzY3JpcHRvci5mcm9tUGF5bG9hZChwYXlsb2FkLCBmYWxzZSwgdGhpcy5fdGFyZ2V0
KSk7CiAKICAgICAgICAgaWYgKGludGVybmFsUHJvcGVydGllcykgewotICAgICAgICAgICAgZGVz
Y3JpcHRvcnMgPSBkZXNjcmlwdG9ycy5jb25jYXQoaW50ZXJuYWxQcm9wZXJ0aWVzLm1hcCgocGF5
bG9hZCkgPT4gewotICAgICAgICAgICAgICAgIHJldHVybiBXSS5Qcm9wZXJ0eURlc2NyaXB0b3Iu
ZnJvbVBheWxvYWQocGF5bG9hZCwgdHJ1ZSwgdGhpcy5fdGFyZ2V0KTsKLSAgICAgICAgICAgIH0p
KTsKKyAgICAgICAgICAgIGZvciAobGV0IHBheWxvYWQgb2YgaW50ZXJuYWxQcm9wZXJ0aWVzKQor
ICAgICAgICAgICAgICAgIGRlc2NyaXB0b3JzLnB1c2goV0kuUHJvcGVydHlEZXNjcmlwdG9yLmZy
b21QYXlsb2FkKHBheWxvYWQsIHRydWUsIHRoaXMuX3RhcmdldCkpOwogICAgICAgICB9CiAKICAg
ICAgICAgY2FsbGJhY2soZGVzY3JpcHRvcnMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29uc29sZU1lc3NhZ2VWaWV3LmpzIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29uc29sZU1lc3NhZ2VWaWV3Lmpz
CmluZGV4IDI1NDRkN2Y1MDUzYzYzNDIyMGU2YmRiNTcyMTlmYWRmMzUzMjZkYTAuLmJiZjhjMzhh
MmU1ZTc0NjQxMmY1OThmNmZkNzgwNTRiYjc0NzVkNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnNvbGVNZXNzYWdlVmlldy5qcworKysg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db25zb2xlTWVzc2Fn
ZVZpZXcuanMKQEAgLTI2Miw3ICsyNjIsNyBAQCBXSS5Db25zb2xlTWVzc2FnZVZpZXcgPSBjbGFz
cyBDb25zb2xlTWVzc2FnZVZpZXcgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgICAgICAgICAg
ICAgICAgIHZhciBwcmVmaXhlZEZvcm1hdFN0cmluZyA9IFdJLlVJU3RyaW5nKCJUcmFjZTogJXMi
KS5mb3JtYXQodGhpcy5fbWVzc2FnZS5wYXJhbWV0ZXJzWzBdLmRlc2NyaXB0aW9uKTsKICAgICAg
ICAgICAgICAgICAgICAgICAgIGFyZ3MgPSBbcHJlZml4ZWRGb3JtYXRTdHJpbmddLmNvbmNhdCh0
aGlzLl9tZXNzYWdlLnBhcmFtZXRlcnMuc2xpY2UoMSkpOwogICAgICAgICAgICAgICAgICAgICB9
IGVsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3MgPSBhcmdzLmNvbmNhdCh0aGlzLl9t
ZXNzYWdlLnBhcmFtZXRlcnMpOworICAgICAgICAgICAgICAgICAgICAgICAgYXJncy5wdXNoQWxs
KHRoaXMuX21lc3NhZ2UucGFyYW1ldGVycyk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgIHRoaXMuX2FwcGVuZEZvcm1hdHRlZEFyZ3VtZW50cyhlbGVtZW50LCBhcmdzKTsKICAg
ICAgICAgICAgICAgICByZXR1cm47CkBAIC0yNzQsNyArMjc0LDcgQEAgV0kuQ29uc29sZU1lc3Nh
Z2VWaWV3ID0gY2xhc3MgQ29uc29sZU1lc3NhZ2VWaWV3IGV4dGVuZHMgV0kuT2JqZWN0CiAgICAg
ICAgICAgICAgICAgICAgICAgICB2YXIgcHJlZml4ZWRGb3JtYXRTdHJpbmcgPSBXSS5VSVN0cmlu
ZygiQXNzZXJ0aW9uIEZhaWxlZDogJXMiKS5mb3JtYXQodGhpcy5fbWVzc2FnZS5wYXJhbWV0ZXJz
WzBdLmRlc2NyaXB0aW9uKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3MgPSBbcHJlZml4
ZWRGb3JtYXRTdHJpbmddLmNvbmNhdCh0aGlzLl9tZXNzYWdlLnBhcmFtZXRlcnMuc2xpY2UoMSkp
OwogICAgICAgICAgICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgIGFy
Z3MgPSBhcmdzLmNvbmNhdCh0aGlzLl9tZXNzYWdlLnBhcmFtZXRlcnMpOworICAgICAgICAgICAg
ICAgICAgICAgICAgYXJncy5wdXNoQWxsKHRoaXMuX21lc3NhZ2UucGFyYW1ldGVycyk7CiAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIHRoaXMuX2FwcGVuZEZvcm1hdHRlZEFyZ3Vt
ZW50cyhlbGVtZW50LCBhcmdzKTsKICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC0zMDAsNyAr
MzAwLDcgQEAgV0kuQ29uc29sZU1lc3NhZ2VWaWV3ID0gY2xhc3MgQ29uc29sZU1lc3NhZ2VWaWV3
IGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgICAgICBjYXNlIFdJLkNvbnNvbGVNZXNzYWdlLk1l
c3NhZ2VUeXBlLlRpbWluZzogewogICAgICAgICAgICAgICAgIGxldCBhcmdzID0gW3RoaXMuX21l
c3NhZ2UubWVzc2FnZVRleHRdOwogICAgICAgICAgICAgICAgIGlmICh0aGlzLl9leHRyYVBhcmFt
ZXRlcnMpCi0gICAgICAgICAgICAgICAgICAgIGFyZ3MgPSBhcmdzLmNvbmNhdCh0aGlzLl9leHRy
YVBhcmFtZXRlcnMpOworICAgICAgICAgICAgICAgICAgICBhcmdzLnB1c2hBbGwodGhpcy5fZXh0
cmFQYXJhbWV0ZXJzKTsKICAgICAgICAgICAgICAgICB0aGlzLl9hcHBlbmRGb3JtYXR0ZWRBcmd1
bWVudHMoZWxlbWVudCwgYXJncyk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAg
ICAgfQpAQCAtMzQ1LDcgKzM0NSw3IEBAIFdJLkNvbnNvbGVNZXNzYWdlVmlldyA9IGNsYXNzIENv
bnNvbGVNZXNzYWdlVmlldyBleHRlbmRzIFdJLk9iamVjdAogCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbGV0IGFyZ3MgPSBbV0kuVUlTdHJpbmcoIkNvdWxkIG5vdCBjYXB0dXJlIHNjcmVl
bnNob3QiKSwgdGhpcy5fbWVzc2FnZS5tZXNzYWdlVGV4dF07CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKHRoaXMuX2V4dHJhUGFyYW1ldGVycykKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYXJncyA9IGFyZ3MuY29uY2F0KHRoaXMuX2V4dHJhUGFyYW1ldGVycyk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3MucHVzaEFsbCh0aGlzLl9leHRyYVBh
cmFtZXRlcnMpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2FwcGVuZEZvcm1h
dHRlZEFyZ3VtZW50cyhlbGVtZW50LCBhcmdzKTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0p
OwogICAgICAgICAgICAgICAgICAgICB9CkBAIC0zNTksNyArMzU5LDcgQEAgV0kuQ29uc29sZU1l
c3NhZ2VWaWV3ID0gY2xhc3MgQ29uc29sZU1lc3NhZ2VWaWV3IGV4dGVuZHMgV0kuT2JqZWN0CiAg
ICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3MucHVz
aCh0aGlzLl9tZXNzYWdlLm1lc3NhZ2VUZXh0KTsKICAgICAgICAgICAgICAgICAgICAgaWYgKHRo
aXMuX2V4dHJhUGFyYW1ldGVycykKLSAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3MgPSBhcmdz
LmNvbmNhdCh0aGlzLl9leHRyYVBhcmFtZXRlcnMpOworICAgICAgICAgICAgICAgICAgICAgICAg
YXJncy5wdXNoQWxsKHRoaXMuX2V4dHJhUGFyYW1ldGVycyk7CiAgICAgICAgICAgICAgICAgICAg
IHRoaXMuX2FwcGVuZEZvcm1hdHRlZEFyZ3VtZW50cyhlbGVtZW50LCBhcmdzKTsKICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRlbnRCcm93c2VyLmpzIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29udGVudEJyb3dzZXIu
anMKaW5kZXggN2U5YTJmOTFlZmY0OGNiMGZlNGJiNjFlNjA4YTU2NzViZjVmMDI2ZS4uMmEyODY3
YTFkN2FmMGJlMTcwNzJkYzRmM2IzOTYyODMyZjZhNWEwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29udGVudEJyb3dzZXIuanMKKysrIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29udGVudEJyb3dzZXIu
anMKQEAgLTE0MCw3ICsxNDAsNyBAQCBXSS5Db250ZW50QnJvd3NlciA9IGNsYXNzIENvbnRlbnRC
cm93c2VyIGV4dGVuZHMgV0kuVmlldwogICAgICAgICBpZiAoY3VycmVudENvbnRlbnRWaWV3KSB7
CiAgICAgICAgICAgICB2YXIgc3VwcGxlbWVudGFsUmVwcmVzZW50ZWRPYmplY3RzID0gY3VycmVu
dENvbnRlbnRWaWV3LnN1cHBsZW1lbnRhbFJlcHJlc2VudGVkT2JqZWN0czsKICAgICAgICAgICAg
IGlmIChzdXBwbGVtZW50YWxSZXByZXNlbnRlZE9iamVjdHMgJiYgc3VwcGxlbWVudGFsUmVwcmVz
ZW50ZWRPYmplY3RzLmxlbmd0aCkKLSAgICAgICAgICAgICAgICByZXByZXNlbnRlZE9iamVjdHMg
PSByZXByZXNlbnRlZE9iamVjdHMuY29uY2F0KHN1cHBsZW1lbnRhbFJlcHJlc2VudGVkT2JqZWN0
cyk7CisgICAgICAgICAgICAgICAgcmVwcmVzZW50ZWRPYmplY3RzLnB1c2hBbGwoc3VwcGxlbWVu
dGFsUmVwcmVzZW50ZWRPYmplY3RzKTsKICAgICAgICAgfQogCiAgICAgICAgIHJldHVybiByZXBy
ZXNlbnRlZE9iamVjdHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9ET01UcmVlRWxlbWVudC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL0RPTVRyZWVFbGVtZW50LmpzCmluZGV4IDVjZTMzOTVhYjJkNTli
ZGJhMWRkNjcwMTQwYzEzZmFiYjJmMzI2MDguLmRhYmFiYTQwODI0MTZhZmIwOGUwMTA2MDdlZDAw
ZjExYTMzMjU2NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL0RPTVRyZWVFbGVtZW50LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL0RPTVRyZWVFbGVtZW50LmpzCkBAIC0xNjI4LDcgKzE2MjgsNyBA
QCBXSS5ET01UcmVlRWxlbWVudCA9IGNsYXNzIERPTVRyZWVFbGVtZW50IGV4dGVuZHMgV0kuVHJl
ZUVsZW1lbnQKICAgICAgICAgICAgIHZpc2libGVDaGlsZHJlbi5wdXNoKGJlZm9yZVBzZXVkb0Vs
ZW1lbnQpOwogCiAgICAgICAgIGlmIChub2RlLmNoaWxkTm9kZUNvdW50ICYmIG5vZGUuY2hpbGRy
ZW4pCi0gICAgICAgICAgICB2aXNpYmxlQ2hpbGRyZW4gPSB2aXNpYmxlQ2hpbGRyZW4uY29uY2F0
KG5vZGUuY2hpbGRyZW4pOworICAgICAgICAgICAgdmlzaWJsZUNoaWxkcmVuLnB1c2hBbGwobm9k
ZS5jaGlsZHJlbik7CiAKICAgICAgICAgdmFyIGFmdGVyUHNldWRvRWxlbWVudCA9IG5vZGUuYWZ0
ZXJQc2V1ZG9FbGVtZW50KCk7CiAgICAgICAgIGlmIChhZnRlclBzZXVkb0VsZW1lbnQpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9EYXRhR3Jp
ZE5vZGUuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9EYXRh
R3JpZE5vZGUuanMKaW5kZXggZDkwYTk0ODBhZTAwNTZkMzY2MWI3YWNhYjk5OTZmYmM2YWU0ZGYx
NS4uYWU5NTYzZTI4MDA1OTlmYzhlYzRkMDI4ZDhlYTM2ZGVkNzA4YThiMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRGF0YUdyaWROb2RlLmpz
CisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RhdGFHcmlk
Tm9kZS5qcwpAQCAtMTc1LDcgKzE3NSw3IEBAIFdJLkRhdGFHcmlkTm9kZSA9IGNsYXNzIERhdGFH
cmlkTm9kZSBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICAgICAgaWYgKCF2YWx1ZS5sZW5ndGgp
CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgICAgIHRoaXMuX2NhY2hlZEZp
bHRlcmFibGVEYXRhID0gdGhpcy5fY2FjaGVkRmlsdGVyYWJsZURhdGEuY29uY2F0KHZhbHVlKTsK
KyAgICAgICAgICAgIHRoaXMuX2NhY2hlZEZpbHRlcmFibGVEYXRhLnB1c2hBbGwodmFsdWUpOwog
ICAgICAgICB9CiAKICAgICAgICAgcmV0dXJuIHRoaXMuX2NhY2hlZEZpbHRlcmFibGVEYXRhOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvSGVh
cEFsbG9jYXRpb25zVGltZWxpbmVWaWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvSGVhcEFsbG9jYXRpb25zVGltZWxpbmVWaWV3LmpzCmluZGV4IGJlNWRh
YzMwOTUxMmMwOTljZjc1OTdlZTVmZTQwYjlhMTRlNGNmZDYuLmQxZjMyZGNlZjAzYzZmYTUzOGQ1
Y2IzN2YyMGE5MTI2YmI1OGI1NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL0hlYXBBbGxvY2F0aW9uc1RpbWVsaW5lVmlldy5qcworKysgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9IZWFwQWxsb2NhdGlvbnNU
aW1lbGluZVZpZXcuanMKQEAgLTIxNyw3ICsyMTcsNyBAQCBXSS5IZWFwQWxsb2NhdGlvbnNUaW1l
bGluZVZpZXcgPSBjbGFzcyBIZWFwQWxsb2NhdGlvbnNUaW1lbGluZVZpZXcgZXh0ZW5kcyBXSS5U
aQogICAgICAgICB9CiAKICAgICAgICAgaWYgKHRoaXMuX2NvbnRlbnRWaWV3Q29udGFpbmVyLmN1
cnJlbnRDb250ZW50VmlldykKLSAgICAgICAgICAgIGNvbXBvbmVudHMgPSBjb21wb25lbnRzLmNv
bmNhdCh0aGlzLl9jb250ZW50Vmlld0NvbnRhaW5lci5jdXJyZW50Q29udGVudFZpZXcuc2VsZWN0
aW9uUGF0aENvbXBvbmVudHMpOworICAgICAgICAgICAgY29tcG9uZW50cy5wdXNoQWxsKHRoaXMu
X2NvbnRlbnRWaWV3Q29udGFpbmVyLmN1cnJlbnRDb250ZW50Vmlldy5zZWxlY3Rpb25QYXRoQ29t
cG9uZW50cyk7CiAKICAgICAgICAgcmV0dXJuIGNvbXBvbmVudHM7CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvSW5kZXhlZERhdGFi
YXNlT2JqZWN0U3RvcmVDb250ZW50Vmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL0luZGV4ZWREYXRhYmFzZU9iamVjdFN0b3JlQ29udGVudFZpZXcuanMK
aW5kZXggODBiZDEwNTE4NDljYzkxNmNlNDYzZDQ2Nzk5ZGQ0ODNhZjI3OTNiZi4uNjYyMDJhZGFi
OTFiOWZjZjVlZDg1MmQ5ZDBhY2Q2NTFlZGVkMjE1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvSW5kZXhlZERhdGFiYXNlT2JqZWN0U3RvcmVD
b250ZW50Vmlldy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9JbmRleGVkRGF0YWJhc2VPYmplY3RTdG9yZUNvbnRlbnRWaWV3LmpzCkBAIC0xNDIsNyAr
MTQyLDcgQEAgV0kuSW5kZXhlZERhdGFiYXNlT2JqZWN0U3RvcmVDb250ZW50VmlldyA9IGNsYXNz
IEluZGV4ZWREYXRhYmFzZU9iamVjdFN0b3JlQ29udGUKIAogICAgICAgICBmdW5jdGlvbiBwcm9j
ZXNzRW50cmllcyhlbnRyaWVzLCBtb3JlQXZhaWxhYmxlKQogICAgICAgICB7Ci0gICAgICAgICAg
ICB0aGlzLl9lbnRyaWVzID0gdGhpcy5fZW50cmllcy5jb25jYXQoZW50cmllcyk7CisgICAgICAg
ICAgICB0aGlzLl9lbnRyaWVzLnB1c2hBbGwoZW50cmllcyk7CiAgICAgICAgICAgICB0aGlzLl9t
b3JlRW50cmllc0F2YWlsYWJsZSA9IG1vcmVBdmFpbGFibGU7CiAKICAgICAgICAgICAgIGZvciAo
dmFyIGVudHJ5IG9mIGVudHJpZXMpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL05hdmlnYXRpb25JdGVtLmpzIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTmF2aWdhdGlvbkl0ZW0uanMKaW5kZXggOWM5YWEw
MGUxMThjYWNmMjU3YjE2ZjRlY2E5ODkyMjc5YjFjNGQ0OS4uMWIxOWRmMDdjY2RjYjVkMGQ2ZmY1
NmU1YWJmYmNjMzdlMGY2ODZmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvTmF2aWdhdGlvbkl0ZW0uanMKKysrIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTmF2aWdhdGlvbkl0ZW0uanMKQEAgLTEyNSw4ICsx
MjUsOCBAQCBXSS5OYXZpZ2F0aW9uSXRlbSA9IGNsYXNzIE5hdmlnYXRpb25JdGVtIGV4dGVuZHMg
V0kuT2JqZWN0CiAgICAgICAgIHZhciBjbGFzc05hbWVzID0gWyJpdGVtIl07CiAgICAgICAgIGlm
ICh0aGlzLl9pZGVudGlmaWVyKQogICAgICAgICAgICAgY2xhc3NOYW1lcy5wdXNoKHRoaXMuX2lk
ZW50aWZpZXIpOwotICAgICAgICBpZiAodGhpcy5hZGRpdGlvbmFsQ2xhc3NOYW1lcyBpbnN0YW5j
ZW9mIEFycmF5KQotICAgICAgICAgICAgY2xhc3NOYW1lcyA9IGNsYXNzTmFtZXMuY29uY2F0KHRo
aXMuYWRkaXRpb25hbENsYXNzTmFtZXMpOworICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh0aGlz
LmFkZGl0aW9uYWxDbGFzc05hbWVzKSkKKyAgICAgICAgICAgIGNsYXNzTmFtZXMucHVzaEFsbCh0
aGlzLmFkZGl0aW9uYWxDbGFzc05hbWVzKTsKICAgICAgICAgcmV0dXJuIGNsYXNzTmFtZXM7CiAg
ICAgfQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL09iamVjdFRyZWVWaWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvT2JqZWN0VHJlZVZpZXcuanMKaW5kZXggZGEyOTM4ZWI2NjE5ODYyOGZhMzVi
ZDlmZjQyMTNmMmU1NjUxNTdjOS4uOGY0MjIwZjc0N2IyNDJmMWM1NDgzOTQxZTU0NTY4NTRjNTU2
OThiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvT2JqZWN0VHJlZVZpZXcuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvT2JqZWN0VHJlZVZpZXcuanMKQEAgLTMxMSw3ICszMTEsNyBAQCBXSS5PYmpl
Y3RUcmVlVmlldyA9IGNsYXNzIE9iamVjdFRyZWVWaWV3IGV4dGVuZHMgV0kuT2JqZWN0CiAgICAg
X3VwZGF0ZVByb3BlcnRpZXMocHJvcGVydGllcywgcHJvcGVydHlQYXRoKQogICAgIHsKICAgICAg
ICAgaWYgKHRoaXMuX2V4dHJhUHJvcGVydGllcykKLSAgICAgICAgICAgIHByb3BlcnRpZXMgPSBw
cm9wZXJ0aWVzLmNvbmNhdCh0aGlzLl9leHRyYVByb3BlcnRpZXMpOworICAgICAgICAgICAgcHJv
cGVydGllcy5wdXNoQWxsKHRoaXMuX2V4dHJhUHJvcGVydGllcyk7CiAKICAgICAgICAgcHJvcGVy
dGllcy5zb3J0KFdJLk9iamVjdFRyZWVWaWV3LmNvbXBhcmVQcm9wZXJ0eURlc2NyaXB0b3JzKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
T3BlblJlc291cmNlRGlhbG9nLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvT3BlblJlc291cmNlRGlhbG9nLmpzCmluZGV4IGVhMzk1YjVkNmJhMjYyMDNlNGI0
NGEwY2Q0OWY0NWE3NTI0ZWRiOGYuLjVkMzdkZTdkZDJjZmY4MzI4ZTUzZDRkMDA5NThmMmFhOWY5
M2Q2ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL09wZW5SZXNvdXJjZURpYWxvZy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9PcGVuUmVzb3VyY2VEaWFsb2cuanMKQEAgLTMwMSw3ICszMDEsNyBA
QCBXSS5PcGVuUmVzb3VyY2VEaWFsb2cgPSBjbGFzcyBPcGVuUmVzb3VyY2VEaWFsb2cgZXh0ZW5k
cyBXSS5EaWFsb2cKICAgICAgICAgICAgIGZvciAobGV0IHJlc291cmNlIG9mIGN1cnJlbnRGcmFt
ZS5yZXNvdXJjZUNvbGxlY3Rpb24pCiAgICAgICAgICAgICAgICAgdGhpcy5fYWRkUmVzb3VyY2Uo
cmVzb3VyY2UsIHN1cHByZXNzRmlsdGVyVXBkYXRlKTsKIAotICAgICAgICAgICAgZnJhbWVzLnB1
c2goLi4uY3VycmVudEZyYW1lLmNoaWxkRnJhbWVDb2xsZWN0aW9uKTsKKyAgICAgICAgICAgIGZy
YW1lcy5wdXNoQWxsKGN1cnJlbnRGcmFtZS5jaGlsZEZyYW1lQ29sbGVjdGlvbik7CiAgICAgICAg
IH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL092ZXJ2aWV3VGltZWxpbmVWaWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvT3ZlcnZpZXdUaW1lbGluZVZpZXcuanMKaW5kZXggMGQ3M2Fl
NDZjNzZiODA4ZjE3OTkxYjNkYjYxYzdkNTZiYjM2Njg2My4uYTNhMDQyMTE4NzQ2ZmUwNzdjZDYy
YjcyNjNkZDQ3MjQ5NWQ2M2I2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvT3ZlcnZpZXdUaW1lbGluZVZpZXcuanMKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvT3ZlcnZpZXdUaW1lbGluZVZpZXcuanMK
QEAgLTIyNSwxMiArMjI1LDEyIEBAIFdJLk92ZXJ2aWV3VGltZWxpbmVWaWV3ID0gY2xhc3MgT3Zl
cnZpZXdUaW1lbGluZVZpZXcgZXh0ZW5kcyBXSS5UaW1lbGluZVZpZXcKICAgICAgICAgaWYgKHRo
aXMuX3Nob3VsZEdyb3VwQnlTb3VyY2VDb2RlKSB7CiAgICAgICAgICAgICBsZXQgbmV0d29ya1Rp
bWVsaW5lID0gdGhpcy5fcmVjb3JkaW5nLnRpbWVsaW5lcy5nZXQoV0kuVGltZWxpbmVSZWNvcmQu
VHlwZS5OZXR3b3JrKTsKICAgICAgICAgICAgIGlmIChuZXR3b3JrVGltZWxpbmUpCi0gICAgICAg
ICAgICAgICAgdGhpcy5fcGVuZGluZ1JlcHJlc2VudGVkT2JqZWN0cyA9IHRoaXMuX3BlbmRpbmdS
ZXByZXNlbnRlZE9iamVjdHMuY29uY2F0KG5ldHdvcmtUaW1lbGluZS5yZWNvcmRzLm1hcCgocmVj
b3JkKSA9PiByZWNvcmQucmVzb3VyY2UpKTsKKyAgICAgICAgICAgICAgICB0aGlzLl9wZW5kaW5n
UmVwcmVzZW50ZWRPYmplY3RzLnB1c2hBbGwobmV0d29ya1RpbWVsaW5lLnJlY29yZHMubWFwKChy
ZWNvcmQpID0+IHJlY29yZC5yZXNvdXJjZSkpOwogCi0gICAgICAgICAgICB0aGlzLl9wZW5kaW5n
UmVwcmVzZW50ZWRPYmplY3RzID0gdGhpcy5fcGVuZGluZ1JlcHJlc2VudGVkT2JqZWN0cy5jb25j
YXQodGhpcy5fcmVjb3JkaW5nLnNvdXJjZUNvZGVUaW1lbGluZXMpOworICAgICAgICAgICAgdGhp
cy5fcGVuZGluZ1JlcHJlc2VudGVkT2JqZWN0cy5wdXNoQWxsKHRoaXMuX3JlY29yZGluZy5zb3Vy
Y2VDb2RlVGltZWxpbmVzKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGZvciAobGV0
IHRpbWVsaW5lIG9mIHRoaXMuX3JlbGV2YW50VGltZWxpbmVzKQotICAgICAgICAgICAgICAgIHRo
aXMuX3BlbmRpbmdSZXByZXNlbnRlZE9iamVjdHMgPSB0aGlzLl9wZW5kaW5nUmVwcmVzZW50ZWRP
YmplY3RzLmNvbmNhdCh0aW1lbGluZS5yZWNvcmRzKTsKKyAgICAgICAgICAgICAgICB0aGlzLl9w
ZW5kaW5nUmVwcmVzZW50ZWRPYmplY3RzLnB1c2hBbGwodGltZWxpbmUucmVjb3Jkcyk7CiAgICAg
ICAgIH0KIAogICAgICAgICB0aGlzLm5lZWRzTGF5b3V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9SZXNvdXJjZUNvbGxlY3Rpb25Db250
ZW50Vmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Jl
c291cmNlQ29sbGVjdGlvbkNvbnRlbnRWaWV3LmpzCmluZGV4IDU2OTZhYmY5YzRjYjY2MTdmODcw
N2UyMWI1OWUxNjgyYTQ0NzEzNzIuLmZlOGU3NDE1ZjA4MDU4OGY1M2FiZjM4MDYxZjQxZjA3ZWJm
OTdjNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL1Jlc291cmNlQ29sbGVjdGlvbkNvbnRlbnRWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Jlc291cmNlQ29sbGVjdGlvbkNvbnRlbnRWaWV3
LmpzCkBAIC03OCw3ICs3OCw3IEBAIFdJLlJlc291cmNlQ29sbGVjdGlvbkNvbnRlbnRWaWV3ID0g
Y2xhc3MgUmVzb3VyY2VDb2xsZWN0aW9uQ29udGVudFZpZXcgZXh0ZW5kcyBXCiAgICAgICAgICAg
ICBuYXZpZ2F0aW9uSXRlbXMucHVzaCh0aGlzLl9pbWFnZVR5cGVTY29wZUJhcik7CiAgICAgICAg
IGlmICh0aGlzLl9zaG93R3JpZEJ1dHRvbk5hdmlnYXRpb25JdGVtKQogICAgICAgICAgICAgbmF2
aWdhdGlvbkl0ZW1zLnB1c2godGhpcy5fc2hvd0dyaWRCdXR0b25OYXZpZ2F0aW9uSXRlbSk7Ci0g
ICAgICAgIG5hdmlnYXRpb25JdGVtcyA9IG5hdmlnYXRpb25JdGVtcy5jb25jYXQoc3VwZXIubmF2
aWdhdGlvbkl0ZW1zKTsKKyAgICAgICAgbmF2aWdhdGlvbkl0ZW1zLnB1c2hBbGwoc3VwZXIubmF2
aWdhdGlvbkl0ZW1zKTsKICAgICAgICAgcmV0dXJuIG5hdmlnYXRpb25JdGVtczsKICAgICB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Jl
c291cmNlSGVhZGVyc0NvbnRlbnRWaWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvUmVzb3VyY2VIZWFkZXJzQ29udGVudFZpZXcuanMKaW5kZXggYWNjNTA1
NWY0MTFiMmVhODRhNDE1ZTg3MTJkNGI0OWQ1YzY2YWM1Mi4uY2FiYjQzNzZmZjA2NWExZTZjODQ1
ZDY0ZWY5YTgyZWU3NjZlZmViNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvUmVzb3VyY2VIZWFkZXJzQ29udGVudFZpZXcuanMKKysrIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUmVzb3VyY2VIZWFkZXJzQ29u
dGVudFZpZXcuanMKQEAgLTQ4Nyw3ICs0ODcsNyBAQCBXSS5SZXNvdXJjZUhlYWRlcnNDb250ZW50
VmlldyA9IGNsYXNzIFJlc291cmNlSGVhZGVyc0NvbnRlbnRWaWV3IGV4dGVuZHMgV0kuQ29udAog
CiAgICAgICAgICAgICBpZiAobWF0Y2hSYW5nZXMubGVuZ3RoKSB7CiAgICAgICAgICAgICAgICAg
bGV0IGhpZ2hsaWdodGVkTm9kZXMgPSBXSS5oaWdobGlnaHRSYW5nZXNXaXRoU3R5bGVDbGFzcyhl
bGVtZW50LCBtYXRjaFJhbmdlcywgInNlYXJjaC1oaWdobGlnaHQiLCB0aGlzLl9zZWFyY2hET01D
aGFuZ2VzKTsKLSAgICAgICAgICAgICAgICB0aGlzLl9zZWFyY2hSZXN1bHRzID0gdGhpcy5fc2Vh
cmNoUmVzdWx0cy5jb25jYXQoaGlnaGxpZ2h0ZWROb2Rlcyk7CisgICAgICAgICAgICAgICAgdGhp
cy5fc2VhcmNoUmVzdWx0cy5wdXNoQWxsKGhpZ2hsaWdodGVkTm9kZXMpOwogICAgICAgICAgICAg
fQogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvUmVzb3VyY2VTZWN1cml0eUNvbnRlbnRWaWV3LmpzIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUmVzb3VyY2VTZWN1cml0eUNvbnRl
bnRWaWV3LmpzCmluZGV4IDEyODA4NDE4ZjI5ZGRjM2EzM2FiMWYwMTk0Y2VkOTZiYzg1YzE1NTAu
LjVjZWFhNGZmNTk0NTY0MzkwZDYyNGQ3MTYzMTZhMDg5ZmVkODkzYTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Jlc291cmNlU2VjdXJpdHlD
b250ZW50Vmlldy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9SZXNvdXJjZVNlY3VyaXR5Q29udGVudFZpZXcuanMKQEAgLTI5OCw3ICsyOTgsNyBAQCBX
SS5SZXNvdXJjZVNlY3VyaXR5Q29udGVudFZpZXcgPSBjbGFzcyBSZXNvdXJjZVNlY3VyaXR5Q29u
dGVudFZpZXcgZXh0ZW5kcyBXSS5DbwogCiAgICAgICAgICAgICBpZiAobWF0Y2hSYW5nZXMubGVu
Z3RoKSB7CiAgICAgICAgICAgICAgICAgbGV0IGhpZ2hsaWdodGVkTm9kZXMgPSBXSS5oaWdobGln
aHRSYW5nZXNXaXRoU3R5bGVDbGFzcyhlbGVtZW50LCBtYXRjaFJhbmdlcywgInNlYXJjaC1oaWdo
bGlnaHQiLCB0aGlzLl9zZWFyY2hET01DaGFuZ2VzKTsKLSAgICAgICAgICAgICAgICB0aGlzLl9z
ZWFyY2hSZXN1bHRzID0gdGhpcy5fc2VhcmNoUmVzdWx0cy5jb25jYXQoaGlnaGxpZ2h0ZWROb2Rl
cyk7CisgICAgICAgICAgICAgICAgdGhpcy5fc2VhcmNoUmVzdWx0cy5wdXNoQWxsKGhpZ2hsaWdo
dGVkTm9kZXMpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU2NyaXB0Q2x1c3RlclRp
bWVsaW5lVmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L1NjcmlwdENsdXN0ZXJUaW1lbGluZVZpZXcuanMKaW5kZXggZmZhMzM0MWYxMDJmZWRlMzIxZjI5
NWUyOGZkYTk0NmZkOWI5NzJkZi4uZGRmMzMxNTIzMzBhMzM1YjRiMzk3MDc4MmI2ZWU1ZWExNDNl
ZjkwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvU2NyaXB0Q2x1c3RlclRpbWVsaW5lVmlldy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9TY3JpcHRDbHVzdGVyVGltZWxpbmVWaWV3LmpzCkBAIC0x
MDQsOSArMTA0LDExIEBAIFdJLlNjcmlwdENsdXN0ZXJUaW1lbGluZVZpZXcgPSBjbGFzcyBTY3Jp
cHRDbHVzdGVyVGltZWxpbmVWaWV3IGV4dGVuZHMgV0kuQ2x1c3RlCiAgICAgICAgICAgICByZXR1
cm4gW107CiAKICAgICAgICAgbGV0IGNvbXBvbmVudHMgPSBbdGhpcy5fcGF0aENvbXBvbmVudEZv
ckNvbnRlbnRWaWV3KGN1cnJlbnRDb250ZW50VmlldyldOworCiAgICAgICAgIGxldCBzdWJDb21w
b25lbnRzID0gY3VycmVudENvbnRlbnRWaWV3LnNlbGVjdGlvblBhdGhDb21wb25lbnRzOwogICAg
ICAgICBpZiAoc3ViQ29tcG9uZW50cykKLSAgICAgICAgICAgIHJldHVybiBjb21wb25lbnRzLmNv
bmNhdChzdWJDb21wb25lbnRzKTsKKyAgICAgICAgICAgIGNvbXBvbmVudHMucHVzaEFsbChzdWJD
b21wb25lbnRzKTsKKwogICAgICAgICByZXR1cm4gY29tcG9uZW50czsKICAgICB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NjcnViYmVy
TmF2aWdhdGlvbkl0ZW0uanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9TY3J1YmJlck5hdmlnYXRpb25JdGVtLmpzCmluZGV4IGE2YTFkOTliOTI4MGRhYjJmYjBj
N2NmYjQzMmI4YjU3ZmE2NGFjYWIuLjk0ODY1NGI0ZmY0YWJmN2M2YzczYTAyMzJhZTUwNDhhN2Yz
YjBlZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL1NjcnViYmVyTmF2aWdhdGlvbkl0ZW0uanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvU2NydWJiZXJOYXZpZ2F0aW9uSXRlbS5qcwpAQCAtNTksNyAr
NTksOSBAQCBXSS5TY3J1YmJlck5hdmlnYXRpb25JdGVtID0gY2xhc3MgU2NydWJiZXJOYXZpZ2F0
aW9uSXRlbSBleHRlbmRzIFdJLkZsZXhpYmxlU3BhYwogCiAgICAgZ2V0IGFkZGl0aW9uYWxDbGFz
c05hbWVzKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBzdXBlci5hZGRpdGlvbmFsQ2xhc3NOYW1l
cy5jb25jYXQoWyJzY3J1YmJlciJdKTsKKyAgICAgICAgbGV0IGFkZGl0aW9uYWxDbGFzc05hbWVz
ID0gc3VwZXIuYWRkaXRpb25hbENsYXNzTmFtZXM7CisgICAgICAgIGFkZGl0aW9uYWxDbGFzc05h
bWVzLnB1c2goInNjcnViYmVyIik7CisgICAgICAgIHJldHVybiBhZGRpdGlvbmFsQ2xhc3NOYW1l
czsKICAgICB9CiAKICAgICAvLyBQcml2YXRlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TcHJlYWRzaGVldFN0eWxlUHJvcGVydHkuanMgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TcHJlYWRzaGVldFN0eWxl
UHJvcGVydHkuanMKaW5kZXggZWQxZDdiNWE0NjFiODg5MWJhNjRmN2ZmOWJjODE5ODhiZTBiZDlk
Yy4uMTQ0YzExMmIyNzYwZWJmZmJmZjUwYzE5ZTYxMDY3NTY0MjVjYzQ2ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU3ByZWFkc2hlZXRTdHls
ZVByb3BlcnR5LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL1NwcmVhZHNoZWV0U3R5bGVQcm9wZXJ0eS5qcwpAQCAtNTgwLDcgKzU4MCw3IEBAIFdJLlNw
cmVhZHNoZWV0U3R5bGVQcm9wZXJ0eSA9IGNsYXNzIFNwcmVhZHNoZWV0U3R5bGVQcm9wZXJ0eSBl
eHRlbmRzIFdJLk9iamVjdAogICAgICAgICAgICAgICAgIGlmIChncmFkaWVudCkKICAgICAgICAg
ICAgICAgICAgICAgbmV3VG9rZW5zLnB1c2godGhpcy5fY3JlYXRlSW5saW5lU3dhdGNoKFdJLklu
bGluZVN3YXRjaC5UeXBlLkdyYWRpZW50LCByYXdUb2tlbnMsIGdyYWRpZW50KSk7CiAgICAgICAg
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBuZXdUb2tlbnMucHVzaCguLi5yYXdU
b2tlbnMpOworICAgICAgICAgICAgICAgICAgICBuZXdUb2tlbnMucHVzaEFsbChyYXdUb2tlbnMp
OwogCiAgICAgICAgICAgICAgICAgZ3JhZGllbnRTdGFydEluZGV4ID0gTmFOOwogICAgICAgICAg
ICAgfSBlbHNlIGlmIChpc05hTihncmFkaWVudFN0YXJ0SW5kZXgpKQpAQCAtNTk5LDcgKzU5OSw3
IEBAIFdJLlNwcmVhZHNoZWV0U3R5bGVQcm9wZXJ0eSA9IGNsYXNzIFNwcmVhZHNoZWV0U3R5bGVQ
cm9wZXJ0eSBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICAgICAgaWYgKGNvbG9yKQogICAgICAg
ICAgICAgICAgIG5ld1Rva2Vucy5wdXNoKHRoaXMuX2NyZWF0ZUlubGluZVN3YXRjaChXSS5Jbmxp
bmVTd2F0Y2guVHlwZS5Db2xvciwgcmF3VG9rZW5zLCBjb2xvcikpOwogICAgICAgICAgICAgZWxz
ZQotICAgICAgICAgICAgICAgIG5ld1Rva2Vucy5wdXNoKC4uLnJhd1Rva2Vucyk7CisgICAgICAg
ICAgICAgICAgbmV3VG9rZW5zLnB1c2hBbGwocmF3VG9rZW5zKTsKICAgICAgICAgfTsKIAogICAg
ICAgICBsZXQgY29sb3JGdW5jdGlvblN0YXJ0SW5kZXggPSBOYU47CkBAIC02NjYsNyArNjY2LDcg
QEAgV0kuU3ByZWFkc2hlZXRTdHlsZVByb3BlcnR5ID0gY2xhc3MgU3ByZWFkc2hlZXRTdHlsZVBy
b3BlcnR5IGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgICAgICAgICAgaWYgKHZhbHVlT2JqZWN0
KQogICAgICAgICAgICAgICAgICAgICBuZXdUb2tlbnMucHVzaCh0aGlzLl9jcmVhdGVJbmxpbmVT
d2F0Y2goaW5saW5lU3dhdGNoVHlwZSwgcmF3VG9rZW5zLCB2YWx1ZU9iamVjdCkpOwogICAgICAg
ICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgbmV3VG9rZW5zLnB1c2goLi4ucmF3
VG9rZW5zKTsKKyAgICAgICAgICAgICAgICAgICAgbmV3VG9rZW5zLnB1c2hBbGwocmF3VG9rZW5z
KTsKIAogICAgICAgICAgICAgICAgIHN0YXJ0SW5kZXggPSBOYU47CiAgICAgICAgICAgICB9IGVs
c2UgaWYgKGlzTmFOKHN0YXJ0SW5kZXgpKQpAQCAtNzAyLDIwICs3MDIsMjAgQEAgV0kuU3ByZWFk
c2hlZXRTdHlsZVByb3BlcnR5ID0gY2xhc3MgU3ByZWFkc2hlZXRTdHlsZVByb3BlcnR5IGV4dGVu
ZHMgV0kuT2JqZWN0CiAgICAgICAgICAgICAgICAgICAgIGxldCBjb250ZW50cyA9IFtdOwogICAg
ICAgICAgICAgICAgICAgICBsZXQgZmFsbGJhY2tTdGFydEluZGV4ID0gcmF3VG9rZW5zLmZpbmRJ
bmRleCgodmFsdWUsIGkpID0+IGkgPiB2YXJpYWJsZU5hbWVJbmRleCArIDEgJiYgL1xibS1jc3Nc
Yi8udGVzdCh2YWx1ZS50eXBlKSk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChmYWxsYmFja1N0
YXJ0SW5kZXggIT09IC0xKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50cyA9IGNv
bnRlbnRzLmNvbmNhdChyYXdUb2tlbnMuc2xpY2UoMCwgZmFsbGJhY2tTdGFydEluZGV4KSk7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50cyA9IGNvbnRlbnRzLmNvbmNhdCh0aGlzLl9y
ZXBsYWNlU3BlY2lhbFRva2VucyhyYXdUb2tlbnMuc2xpY2UoZmFsbGJhY2tTdGFydEluZGV4LCBp
KSkpOworICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudHMucHVzaEFsbChyYXdUb2tlbnMu
c2xpY2UoMCwgZmFsbGJhY2tTdGFydEluZGV4KSk7CisgICAgICAgICAgICAgICAgICAgICAgICBj
b250ZW50cy5wdXNoQWxsKHRoaXMuX3JlcGxhY2VTcGVjaWFsVG9rZW5zKHJhd1Rva2Vucy5zbGlj
ZShmYWxsYmFja1N0YXJ0SW5kZXgsIGkpKSk7CiAgICAgICAgICAgICAgICAgICAgIH0gZWxzZQot
ICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudHMgPSBjb250ZW50cy5jb25jYXQocmF3VG9r
ZW5zLnNsaWNlKDAsIGkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnRzLnB1c2hB
bGwocmF3VG9rZW5zLnNsaWNlKDAsIGkpKTsKICAgICAgICAgICAgICAgICAgICAgY29udGVudHMu
cHVzaCh0b2tlbik7CiAKICAgICAgICAgICAgICAgICAgICAgbGV0IHRleHQgPSByYXdUb2tlbnMu
cmVkdWNlKChhY2N1bXVsYXRvciwgdG9rZW4pID0+IGFjY3VtdWxhdG9yICsgdG9rZW4udmFsdWUs
ICIiKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX3Byb3BlcnR5Lm93bmVyU3R5bGUu
bm9kZVN0eWxlcy5jb21wdXRlZFN0eWxlLnJlc29sdmVWYXJpYWJsZVZhbHVlKHRleHQpKQogICAg
ICAgICAgICAgICAgICAgICAgICAgbmV3VG9rZW5zLnB1c2godGhpcy5fY3JlYXRlSW5saW5lU3dh
dGNoKFdJLklubGluZVN3YXRjaC5UeXBlLlZhcmlhYmxlLCBjb250ZW50cykpOwogICAgICAgICAg
ICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgICAgICBuZXdUb2tlbnMgPSBuZXdU
b2tlbnMuY29uY2F0KGNvbnRlbnRzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG5ld1Rva2Vu
cy5wdXNoQWxsKGNvbnRlbnRzKTsKICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAg
ICAgICAgICAgICB0aGlzLl9oYXNJbnZhbGlkVmFyaWFibGVWYWx1ZSA9IHRydWU7Ci0gICAgICAg
ICAgICAgICAgICAgIG5ld1Rva2Vucy5wdXNoKC4uLnJhd1Rva2Vucyk7CisgICAgICAgICAgICAg
ICAgICAgIG5ld1Rva2Vucy5wdXNoQWxsKHJhd1Rva2Vucyk7CiAgICAgICAgICAgICAgICAgfQog
CiAgICAgICAgICAgICAgICAgc3RhcnRJbmRleCA9IE5hTjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RyZWVPdXRsaW5lLmpzIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVHJlZU91dGxpbmUuanMKaW5kZXgg
NGE3MmRhMTQwMTVhMTE1NGNjMDA1ZWNmZTVlMWU2NDFjYWQxY2M5ZS4uOTA2Y2MzMjBjYmJlY2Q3
MzJlYTE0ZThjMjY5Zjc5MGJhMzE1YjIzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVHJlZU91dGxpbmUuanMKKysrIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVHJlZU91dGxpbmUuanMKQEAgLTUxMCw3ICs1
MTAsNyBAQCBXSS5UcmVlT3V0bGluZSA9IGNsYXNzIFRyZWVPdXRsaW5lIGV4dGVuZHMgV0kuT2Jq
ZWN0CiAgICAgICAgICAgICBpZiAocHJlZGljYXRlKHRyZWVFbGVtZW50KSkKICAgICAgICAgICAg
ICAgICByZXR1cm4gdHJlZUVsZW1lbnQ7CiAKLSAgICAgICAgICAgIHRyZWVFbGVtZW50cyA9IHRy
ZWVFbGVtZW50cy5jb25jYXQodHJlZUVsZW1lbnQuY2hpbGRyZW4pOworICAgICAgICAgICAgdHJl
ZUVsZW1lbnRzLnB1c2hBbGwodHJlZUVsZW1lbnQuY2hpbGRyZW4pOwogICAgICAgICB9CiAKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvVmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL1ZpZXcuanMKaW5kZXggNjM2Mzk5MTIyM2E2OGEzYTI1ODBiZGEyNGE1OWRh
YzFmYzQ0M2RkYS4uNjI4NDQ3ZmYzZTUyYzIyYmRhNjkxYjA5MmNhZDZmZWMyMTcwMDJjOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVmlldy5q
cworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9WaWV3Lmpz
CkBAIC0zOTEsNyArMzkxLDcgQEAgV0kuVmlldyA9IGNsYXNzIFZpZXcgZXh0ZW5kcyBXSS5PYmpl
Y3QKICAgICAgICAgICAgIGlmICh2aWV3LmxheW91dFBlbmRpbmcpCiAgICAgICAgICAgICAgICAg
dmlldy5fbGF5b3V0U3VidHJlZSgpOwogICAgICAgICAgICAgZWxzZSBpZiAodmlldy5fZGlydHlE
ZXNjZW5kYW50c0NvdW50KSB7Ci0gICAgICAgICAgICAgICAgdmlld3MgPSB2aWV3cy5jb25jYXQo
dmlldy5zdWJ2aWV3cyk7CisgICAgICAgICAgICAgICAgdmlld3MucHVzaEFsbCh2aWV3LnN1YnZp
ZXdzKTsKICAgICAgICAgICAgICAgICB2aWV3Ll9kaXJ0eURlc2NlbmRhbnRzQ291bnQgPSAwOwog
ICAgICAgICAgICAgfQogICAgICAgICB9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNjcwOGE5OWI0NmQ4NDNiM2EyZjM3OWRj
MDExMTNlMWRjNmFiMDg0OC4uMGE3NjEzN2Q5ZGM2ZTdlMTE4OTQ5MTdlMzgwZjEzYTQ5MTFkOWIx
NCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE5LTA4LTI5ICBEZXZpbiBSb3Vzc28gIDxkcm91
c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiByZXBsYWNlIHVzZXMgb2Yg
YEFycmF5LnByb3RvdHlwZS5jb25jYXRgIHdpdGggYEFycmF5LnByb3RvdHlwZS5wdXNoYAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAxMDgyCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgSm9zZXBoIFBlY29yYXJvLgorCisgICAgICAgICogaW5zcGVjdG9y
L3VuaXQtdGVzdHMvYXJyYXktdXRpbGl0aWVzLmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL3Vu
aXQtdGVzdHMvYXJyYXktdXRpbGl0aWVzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgQWRkIHRlc3Rz
IGZvciBhZGRlZCB1dGlsaXR5IGBBcnJheS5wcm90b3R5cGUucHVzaEl0ZXJhYmxlYC4KKwogMjAx
OS0wOC0yOSAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBGbGFr
eSBUZXN0OiBzdmcvY3VzdG9tL3RhYmluZGV4LW9yZGVyLmh0bWwKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2luc3BlY3Rvci91bml0LXRlc3RzL2FycmF5LXV0aWxpdGllcy1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdW5pdC10ZXN0cy9hcnJheS11dGlsaXRpZXMtZXhwZWN0
ZWQudHh0CmluZGV4IDhkZmJhYjViMDkzZjQ2ZWYzYWVjZjlmMGJjMmI0NjJkNGIxZmI5ZDMuLmVm
NTRjMDk1ZmVjNmZjYzAwNGUyYzgyYWEwMTM3OTJjZTM2ZDAxYTQgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2luc3BlY3Rvci91bml0LXRlc3RzL2FycmF5LXV0aWxpdGllcy1leHBlY3RlZC50eHQK
KysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3VuaXQtdGVzdHMvYXJyYXktdXRpbGl0aWVzLWV4
cGVjdGVkLnR4dApAQCAtMTMyLDMgKzEzMiwzNSBAQCBQQVNTOiBpbnNlcnRBdEluZGV4IHdpdGgg
MCA8IGluZGV4IDwgbGVuZ3RoIHNob3VsZCBpbnNlcnQgYXQgdGhlIGNvcnJlY3QgbG9jYXRpbwog
UEFTUzogaW5zZXJ0QXRJbmRleCB3aXRoIG5lZ2F0aXZlIGluZGV4IHNob3VsZCBpbnNlcnQgZnJv
bSB0aGUgZW5kLgogUEFTUzogaW5zZXJ0QXRJbmRleCB3aXRoIGluZGV4IGdyZWF0ZXIgdGhhbiBh
cnJheSBsZW5ndGggc2hvdWxkIGluc2VydCBhdCB0aGUgZW5kLgogCistLSBSdW5uaW5nIHRlc3Qg
Y2FzZTogQXJyYXkucHJvdG90eXBlLnB1c2hBbGwKK0FycmF5OgorWzEsMl0gPT4gWzEsMiwiYTEi
LCJhMiJdCisKK1NldDoKK1sxLDJdID0+IFsxLDIsInMxIiwiczIiXQorWzEsMl0gPT4gWzEsMixb
InMxIiwiczEiXSxbInMyIiwiczIiXV0KK1sxLDJdID0+IFsxLDIsInMxIiwiczIiXQorWzEsMl0g
PT4gWzEsMiwiczEiLCJzMiJdCisKK01hcDoKK1sxLDJdID0+IFsxLDIsWyJtMWsiLCJtMXYiXSxb
Im0yayIsIm0ydiJdXQorWzEsMl0gPT4gWzEsMixbIm0xayIsIm0xdiJdLFsibTJrIiwibTJ2Il1d
CitbMSwyXSA9PiBbMSwyLCJtMWsiLCJtMmsiXQorWzEsMl0gPT4gWzEsMiwibTF2IiwibTJ2Il0K
KworT2JqZWN0OgorWzEsMl0gPT4gWzEsMixbIm8xayIsIm8xdiJdLFsibzJrIiwibzJ2Il1dCitb
MSwyXSA9PiBbMSwyLCJvMWsiLCJvMmsiXQorWzEsMl0gPT4gWzEsMiwibzF2IiwibzJ2Il0KKwor
R2VuZXJhdG9yOgorWzEsMl0gPT4gWzEsMiwiZzEiLCJnMiJdCisKK05vZGU6CitbMSwyXSA9PiBb
MSwyLDxuMT4sPG4yPl0KK1sxLDJdID0+IFsxLDIsPG4xPiw8bjI+XQorCitPYmplY3QgKGRvZXNu
J3QgaGF2ZSBbU3ltYm9sLml0ZXJhdG9yXSk6CitQQVNTOiBTaG91bGQgcHJvZHVjZSBhbiBleGNl
cHRpb24uCitUeXBlRXJyb3I6IHVuZGVmaW5lZCBpcyBub3QgYSBmdW5jdGlvbiAobmVhciAnLi4u
aXRlbSBvZiBpdGVyYWJsZS4uLicpCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rv
ci91bml0LXRlc3RzL2FycmF5LXV0aWxpdGllcy5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L3VuaXQtdGVzdHMvYXJyYXktdXRpbGl0aWVzLmh0bWwKaW5kZXggODM3MDgzM2Y0NjU2MzU1ZDI0
OTVmNzI5ZjcwZTU3ODRmYWJmZDM0Yy4uYWUzNmRlOWUzNjhlZmIyYWRkZDE5OWUyMzUzM2EwMjU3
ZDhlNTg3NCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3VuaXQtdGVzdHMvYXJy
YXktdXRpbGl0aWVzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3VuaXQtdGVzdHMv
YXJyYXktdXRpbGl0aWVzLmh0bWwKQEAgLTMwNCw2ICszMDQsODggQEAgZnVuY3Rpb24gdGVzdCgp
CiAgICAgICAgIH0KICAgICB9KTsKIAorICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAg
bmFtZTogIkFycmF5LnByb3RvdHlwZS5wdXNoQWxsIiwKKyAgICAgICAgdGVzdCgpIHsKKyAgICAg
ICAgICAgIGZ1bmN0aW9uIHRlc3QoaXRlcmFibGUpIHsKKyAgICAgICAgICAgICAgICBsZXQgYXJy
YXkgPSBbMSwgMl07CisKKyAgICAgICAgICAgICAgICBmdW5jdGlvbiBzdHJpbmdpZnkob2JqZWN0
KQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgbGV0IHN0cmluZyA9IEpT
T04uc3RyaW5naWZ5KG9iamVjdCwgZnVuY3Rpb24oa2V5LCB2YWx1ZSkgeworICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgTm9kZSkKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gIjwiICsgdmFsdWUubG9jYWxOYW1lICsgIj4iOworICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlOworICAgICAgICAgICAgICAgICAgICB9KTsKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKC8iKDxbXj5dKj4pIi9nLCAi
JDEiKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBsZXQgYmVmb3JlID0g
c3RyaW5naWZ5KGFycmF5KTsKKyAgICAgICAgICAgICAgICBhcnJheS5wdXNoQWxsKGl0ZXJhYmxl
KTsKKyAgICAgICAgICAgICAgICBsZXQgYWZ0ZXIgPSBzdHJpbmdpZnkoYXJyYXkpOworCisgICAg
ICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coYmVmb3JlICsgIiA9PiAiICsgYWZ0ZXIpOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiQXJyYXk6Iik7
CisgICAgICAgICAgICB0ZXN0KFsiYTEiLCAiYTIiXSk7CisKKyAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QubmV3bGluZSgpOworCisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiU2V0OiIp
OworICAgICAgICAgICAgY29uc3Qgc2V0ID0gbmV3IFNldChbInMxIiwgInMyIl0pOworICAgICAg
ICAgICAgdGVzdChzZXQpOworICAgICAgICAgICAgdGVzdChzZXQuZW50cmllcygpKTsKKyAgICAg
ICAgICAgIHRlc3Qoc2V0LmtleXMoKSk7CisgICAgICAgICAgICB0ZXN0KHNldC52YWx1ZXMoKSk7
CisKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QubmV3bGluZSgpOworCisgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmxvZygiTWFwOiIpOworICAgICAgICAgICAgY29uc3QgbWFwID0gbmV3IE1h
cChbWyJtMWsiLCAibTF2Il0sIFsibTJrIiwgIm0ydiJdXSk7CisgICAgICAgICAgICB0ZXN0KG1h
cCk7CisgICAgICAgICAgICB0ZXN0KG1hcC5lbnRyaWVzKCkpOworICAgICAgICAgICAgdGVzdCht
YXAua2V5cygpKTsKKyAgICAgICAgICAgIHRlc3QobWFwLnZhbHVlcygpKTsKKworICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5uZXdsaW5lKCk7CisKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
bG9nKCJPYmplY3Q6Iik7CisgICAgICAgICAgICBjb25zdCBvYmplY3QgPSB7CisgICAgICAgICAg
ICAgICAgbzFrOiAibzF2IiwKKyAgICAgICAgICAgICAgICBvMms6ICJvMnYiLAorICAgICAgICAg
ICAgfTsKKyAgICAgICAgICAgIHRlc3QoT2JqZWN0LmVudHJpZXMob2JqZWN0KSk7CisgICAgICAg
ICAgICB0ZXN0KE9iamVjdC5rZXlzKG9iamVjdCkpOworICAgICAgICAgICAgdGVzdChPYmplY3Qu
dmFsdWVzKG9iamVjdCkpOworCisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0Lm5ld2xpbmUoKTsK
KworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIkdlbmVyYXRvcjoiKTsKKyAgICAgICAg
ICAgIGZ1bmN0aW9uKiBnZW5lcmF0b3IoKSB7CisgICAgICAgICAgICAgICAgeWllbGQgImcxIjsK
KyAgICAgICAgICAgICAgICB5aWVsZCAiZzIiOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
dGVzdChnZW5lcmF0b3IoKSk7CisKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QubmV3bGluZSgp
OworCisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiTm9kZToiKTsKKyAgICAgICAgICAg
IGNvbnN0IG5vZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICAgICAgICAg
IG5vZGUuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibjEiKSk7CisgICAgICAg
ICAgICBub2RlLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIm4yIikpOworICAg
ICAgICAgICAgdGVzdChub2RlLmNoaWxkcmVuKTsKKyAgICAgICAgICAgIHRlc3Qobm9kZS5xdWVy
eVNlbGVjdG9yQWxsKCIqIikpOworCisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0Lm5ld2xpbmUo
KTsKKworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIk9iamVjdCAoZG9lc24ndCBoYXZl
IFtTeW1ib2wuaXRlcmF0b3JdKToiKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0
RXhjZXB0aW9uKCgpID0+IHsKKyAgICAgICAgICAgICAgICB0ZXN0KG9iamVjdCk7CisgICAgICAg
ICAgICB9KTsKKyAgICAgICAgfSwKKyAgICB9KTsKKwogICAgIHN1aXRlLnJ1blRlc3RDYXNlc0Fu
ZEZpbmlzaCgpOwogfQogPC9zY3JpcHQ+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>