<?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>151594</bug_id>
          
          <creation_ts>2015-11-24 15:36:02 -0800</creation_ts>
          <short_desc>Web Inspector: support runtime registration of tab type associations</short_desc>
          <delta_ts>2015-12-04 11:53:21 -0800</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>
          
          
          <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="Blaze Burg">bburg</reporter>
          <assigned_to name="Blaze Burg">bburg</assigned_to>
          <cc>bburg</cc>
    
    <cc>graouts</cc>
    
    <cc>joepeck</cc>
    
    <cc>mattbaker</cc>
    
    <cc>nvasilyev</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1144380</commentid>
    <comment_count>0</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-11-24 15:36:02 -0800</bug_when>
    <thetext>I want to add tabs that only exist in engineering builds. This would be done by putting the relevant models and content views in the Debug/ directory and registering it inside Bootstrap.js. But, the list of tab types is hardcoded. We should make it dynamic.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1144381</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2015-11-24 15:36:16 -0800</bug_when>
    <thetext>&lt;rdar://problem/23659417&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1144394</commentid>
    <comment_count>2</comment_count>
      <attachid>266146</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-11-24 23:39:50 -0800</bug_when>
    <thetext>Created attachment 266146
Proposed Fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1145621</commentid>
    <comment_count>3</comment_count>
      <attachid>266146</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-12-02 10:58:25 -0800</bug_when>
    <thetext>Comment on attachment 266146
Proposed Fix

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

Looks good. r=me

&gt; Source/WebInspectorUI/ChangeLog:10
&gt; +        for debugging purposes. Though the relevant models and views can be
&gt; +        put Debug/ directory to exclude from production builds, there&apos;s no

Grammar: &quot;can be put Debug/&quot; needs refinement.

&gt; Source/WebInspectorUI/UserInterface/Base/Main.js:444
&gt; +    return new Set(this._knownTabClassesByType.values());

Maybe this should just return the values and not a set?

&gt; Source/WebInspectorUI/UserInterface/Views/ConsoleTabContentView.js:38
&gt; +    static tabInfo()

Style: We&apos;ve been putting &quot;static&quot; functions inside a &quot;// Static&quot; block. But I&apos;ve also considered just dropping that block and putting it above the &quot;// Public&quot; block like the constructor.

&gt; Source/WebInspectorUI/UserInterface/Views/NewTabContentView.js:137
&gt; +        allowedTabClasses.sort(function(a, b) {
&gt; +            return a.tabInfo().title.localeCompare(b.tabInfo().title);
&gt; +        });

Arrow function? foo.sort((a, b) =&gt; a.tabInfo().title.localeCompare(b.tabInfo().title))</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1146295</commentid>
    <comment_count>4</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-12-04 09:31:48 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; Comment on attachment 266146 [details]
&gt; Proposed Fix
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=266146&amp;action=review
&gt; 
&gt; Looks good. r=me
&gt; 
&gt; &gt; Source/WebInspectorUI/ChangeLog:10
&gt; &gt; +        for debugging purposes. Though the relevant models and views can be
&gt; &gt; +        put Debug/ directory to exclude from production builds, there&apos;s no
&gt; 
&gt; Grammar: &quot;can be put Debug/&quot; needs refinement.
&gt; 
&gt; &gt; Source/WebInspectorUI/UserInterface/Base/Main.js:444
&gt; &gt; +    return new Set(this._knownTabClassesByType.values());
&gt; 
&gt; Maybe this should just return the values and not a set?

I want to expose the fact that there are no duplicates as part of the API.

&gt; &gt; Source/WebInspectorUI/UserInterface/Views/ConsoleTabContentView.js:38
&gt; &gt; +    static tabInfo()
&gt; 
&gt; Style: We&apos;ve been putting &quot;static&quot; functions inside a &quot;// Static&quot; block. But
&gt; I&apos;ve also considered just dropping that block and putting it above the &quot;//
&gt; Public&quot; block like the constructor.

The block was more useful when we couldn&apos;t use the static keyword. I will move this up.

&gt; 
&gt; &gt; Source/WebInspectorUI/UserInterface/Views/NewTabContentView.js:137
&gt; &gt; +        allowedTabClasses.sort(function(a, b) {
&gt; &gt; +            return a.tabInfo().title.localeCompare(b.tabInfo().title);
&gt; &gt; +        });
&gt; 
&gt; Arrow function? foo.sort((a, b) =&gt;
&gt; a.tabInfo().title.localeCompare(b.tabInfo().title))</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1146356</commentid>
    <comment_count>5</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-12-04 11:53:21 -0800</bug_when>
    <thetext>Committed r193432: &lt;http://trac.webkit.org/changeset/193432&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>266146</attachid>
            <date>2015-11-24 23:39:50 -0800</date>
            <delta_ts>2015-12-02 10:58:25 -0800</delta_ts>
            <desc>Proposed Fix</desc>
            <filename>bug-151594-20151124233934.patch</filename>
            <type>text/plain</type>
            <size>36974</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkyNzY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCBl
MzVmNDdjOGE3M2ZlODgyMjI0ZTQzOWE5ZDNmZTE0ZjYyYTE2ODA4Li5kYmIxMmRhNGZkZWNjNWQ2
NTE5ODJiMzEzMDE2NTQ4NDIyZDkwN2UwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
NSArMSw5NiBAQAogMjAxNS0xMS0yNCAgQnJpYW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KIAor
ICAgICAgICBXZWIgSW5zcGVjdG9yOiBzdXBwb3J0IHJ1bnRpbWUgcmVnaXN0cmF0aW9uIG9mIHRh
YiB0eXBlIGFzc29jaWF0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTUxNTk0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgV2Ugd2FudCB0byBhZGQgc3BlY2lhbCB0YWJzIHRoYXQgb25seSBleGlzdCBp
biBlbmdpbmVlcmluZyBidWlsZHMKKyAgICAgICAgZm9yIGRlYnVnZ2luZyBwdXJwb3Nlcy4gVGhv
dWdoIHRoZSByZWxldmFudCBtb2RlbHMgYW5kIHZpZXdzIGNhbiBiZQorICAgICAgICBwdXQgRGVi
dWcvIGRpcmVjdG9yeSB0byBleGNsdWRlIGZyb20gcHJvZHVjdGlvbiBidWlsZHMsIHRoZXJlJ3Mg
bm8KKyAgICAgICAgd2F5IHRvIHJlZ2lzdGVyIHRhYnMgY29uZGl0aW9uYWxseSBhdCBydW50aW1l
OyB0YWJzIGFyZSBoYXJkY29kZWQuCisKKyAgICAgICAgVGhpcyBwYXRjaCBtYWtlcyBpdCBwb3Nz
aWJsZSB0byByZWdpc3RlciBuZXcgdGFiIHR5cGVzIGF0IHJ1bnRpbWUuCisgICAgICAgIEZpcnN0
LCBXZWJJbnNwZWN0b3Iga2VlcHMgYSBtYXAgb2Yga25vd24sIHJlZ2lzdGVyZWQgdGFiIGNsYXNz
ZXMuCisgICAgICAgIERldGFpbHMgdGhhdCB3ZXJlIGhhcmRjb2RlZCBiZWZvcmUtLS13aGV0aGVy
IHRvIHNob3cgaW4gTmV3IFRhYiwKKyAgICAgICAgd2hldGhlciBhIHRhYiBjYW4gYmUgaW5zdGFu
dGlhdGVkIGdpdmVuIHRoZSBhY3RpdmUgZG9tYWlucywgVUkgdGV4dCwKKyAgICAgICAgZXRjLi0t
LWFyZSBub3cgc3RhdGljIG1ldGhvZHMgb24gdGhlIGJhc2UgVGFiQ29udGVudFZpZXcgb3Igb3Zl
cmlkZGVuCisgICAgICAgIGluIGl0cyBzdWJjbGFzc2VzLiBMYXN0bHksIGEgcHVibGljIG1ldGhv
ZCBhbGxvd3MgY29kZSBpbiBCb290c3RyYXAuanMKKyAgICAgICAgdG8gcmVnaXN0ZXIgdGFicyBh
dCBydW50aW1lLiBEb2luZyBzbyBzZW5kcyBhIG5vdGlmaWNhdGlvbiBzbyB0aGUKKyAgICAgICAg
TmV3VGFiQ29udGVudFZpZXcgY2FuIHNob3cgdGhlIG5ld2x5IGF2YWlsYWJsZSB0YWIgaXRlbS4K
KworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvQmFzZS9NYWluLmpzOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLmNvbnRlbnRMb2FkZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLmlzVGFiVHlwZUFs
bG93ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLmtub3duVGFiQ2xhc3Nlcyk6IEFkZGVkLCB1
c2VkIGJ5IE5ld1RhYkNvbnRlbnRWaWV3LgorICAgICAgICAoV2ViSW5zcGVjdG9yLl9jcmVhdGVU
YWJDb250ZW50Vmlld0ZvclR5cGUpOiBSZW5hbWVkIGZyb20gX3RhYkNvbnRlbnRWaWV3Rm9yVHlw
ZS4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5fcmVtZW1iZXJPcGVuVGFicyk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuX3VwZGF0ZU5ld1RhYkJ1dHRvblN0YXRlKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5fdHJ5VG9SZXN0b3JlUGVuZGluZ1RhYnMpOiBBZGRlZC4KKworICAgICAgICBXaGVuZXZl
ciBhIG5ldyB0YWIgaXMgcmVnaXN0ZXJlZCwgdHJ5IHRvIHJlc3RvcmUgcGVuZGluZyB0YWJzLCBz
aW5jZQorICAgICAgICBhbiBleHRyYSB0YWIgd29uJ3QgYmUgYWRkZWQgaW5pdGlhbGx5IHdoZW4g
cHJvZHVjdGlvbiB0YWJzIGFyZSBhZGRlZC4KKyAgICAgICAgQnV0LCBpdCBjb3VsZCBoYXZlIGJl
ZW4gc2F2ZWQgaW4gdGhlIFNldHRpbmcgZm9yIG9wZW5lZCB0YWJzLgorCisgICAgICAgIChXZWJJ
bnNwZWN0b3Iuc2hvd05ld1RhYlRhYik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuaXNOZXdUYWJX
aXRoVHlwZUFsbG93ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLmNyZWF0ZU5ld1RhYldpdGhU
eXBlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5fdGFiQ29udGVudFZpZXdGb3JUeXBlKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0Jhc2UvT2JqZWN0LmpzOgorICAgICAgICAq
IFVzZXJJbnRlcmZhY2UvVmlld3MvQ29uc29sZVRhYkNvbnRlbnRWaWV3LmpzOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLkNvbnNvbGVUYWJDb250ZW50Vmlldyk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuQ29uc29sZVRhYkNvbnRlbnRWaWV3LnRhYkluZm8pOiBBZGRlZC4KKyAgICAgICAgKiBVc2Vy
SW50ZXJmYWNlL1ZpZXdzL0RlYnVnZ2VyVGFiQ29udGVudFZpZXcuanM6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuRGVidWdnZXJUYWJDb250ZW50Vmlldyk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
RGVidWdnZXJUYWJDb250ZW50Vmlldy50YWJJbmZvKTogQWRkZWQuCisgICAgICAgICogVXNlcklu
dGVyZmFjZS9WaWV3cy9FbGVtZW50c1RhYkNvbnRlbnRWaWV3LmpzOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkVsZW1lbnRzVGFiQ29udGVudFZpZXcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkVs
ZW1lbnRzVGFiQ29udGVudFZpZXcudGFiSW5mbyk6IEFkZGVkLgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkVsZW1lbnRzVGFiQ29udGVudFZpZXcuaXNUYWJBbGxvd2VkKTogQWRkZWQuCisgICAgICAg
ICogVXNlckludGVyZmFjZS9WaWV3cy9OZXR3b3JrVGFiQ29udGVudFZpZXcuanM6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuTmV0d29ya1RhYkNvbnRlbnRWaWV3KToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5OZXR3b3JrVGFiQ29udGVudFZpZXcudGFiSW5mbyk6IEFkZGVkLgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLk5ldHdvcmtUYWJDb250ZW50Vmlldy5pc1RhYkFsbG93ZWQpOiBBZGRlZC4KKyAg
ICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL05ld1RhYkNvbnRlbnRWaWV3LmpzOgorCisgICAg
ICAgIEtlZXAgYSBsaXN0IG9mIHNob3duIHRhYiBpdGVtcywgc28gd2UgZG9uJ3QgaGF2ZSB0byBx
dWVyeSB0aGUgRE9NCisgICAgICAgIHRvIHVwZGF0ZSBlbmFibGVkL2Rpc2FibGVkIHN0YXRlLiBQ
dXQgdHJlZSBjb25zdHJ1Y3Rpb24gaW5zaWRlIGEKKyAgICAgICAgbGF5b3V0KCkgb3ZlcnJpZGUg
YW5kIGRpcnR5IHRoZSB2aWV3IHdoZW5ldmVyIGtub3duIHRhYiB0eXBlcyBjaGFuZ2UuCisKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5OZXdUYWJDb250ZW50Vmlldyk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuTmV3VGFiQ29udGVudFZpZXcudGFiSW5mbyk6IEFkZGVkLgorICAgICAgICAoV2ViSW5z
cGVjdG9yLk5ld1RhYkNvbnRlbnRWaWV3LmlzRXBoZW1lcmFsKTogQWRkZWQuCisgICAgICAgIChX
ZWJJbnNwZWN0b3IuTmV3VGFiQ29udGVudFZpZXcuc2hvdWxkU2F2ZVRhYik6IEFkZGVkLgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLk5ld1RhYkNvbnRlbnRWaWV3LnByb3RvdHlwZS5sYXlvdXQpOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5OZXdUYWJDb250ZW50Vmlldy5wcm90b3R5cGUu
X3VwZGF0ZVNob3duVGFicyk6IEFkZGVkLgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5ld1RhYkNv
bnRlbnRWaWV3LnByb3RvdHlwZS5fYWxsb3dhYmxlVGFiVHlwZXMpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLk5ld1RhYkNvbnRlbnRWaWV3LnByb3RvdHlwZS5fdXBkYXRlVGFiSXRlbXMpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLk5ld1RhYkNvbnRlbnRWaWV3LnByb3RvdHlwZS5nZXQgdGFiSXRl
bUVsZW1lbnRzKTogRGVsZXRlZC4KKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1Jlc291
cmNlc1RhYkNvbnRlbnRWaWV3LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlc1Rh
YkNvbnRlbnRWaWV3KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZXNUYWJDb250ZW50
Vmlldy50YWJJbmZvKTogQWRkZWQuCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9TZWFy
Y2hUYWJDb250ZW50Vmlldy5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TZWFyY2hUYWJDb250
ZW50Vmlldyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2VhcmNoVGFiQ29udGVudFZpZXcudGFi
SW5mbyk6IEFkZGVkLgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNlYXJjaFRhYkNvbnRlbnRWaWV3
LmlzRXBoZW1lcmFsKTogQWRkZWQuCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9TZXR0
aW5nc1RhYkNvbnRlbnRWaWV3LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNldHRpbmdzVGFi
Q29udGVudFZpZXcuaXNUYWJBbGxvd2VkKTogQWRkZWQuCisgICAgICAgIChXZWJJbnNwZWN0b3Iu
U2V0dGluZ3NUYWJDb250ZW50Vmlldy5zaG91bGRTYXZlVGFiKTogQWRkZWQuCisgICAgICAgICog
VXNlckludGVyZmFjZS9WaWV3cy9TdG9yYWdlVGFiQ29udGVudFZpZXcuanM6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuU3RvcmFnZVRhYkNvbnRlbnRWaWV3KToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5TdG9yYWdlVGFiQ29udGVudFZpZXcudGFiSW5mbyk6IEFkZGVkLgorICAgICAgICAoV2ViSW5z
cGVjdG9yLlN0b3JhZ2VUYWJDb250ZW50Vmlldy5pc1RhYkFsbG93ZWQpOiBBZGRlZC4KKyAgICAg
ICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1RhYkNvbnRlbnRWaWV3LmpzOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlRhYkNvbnRlbnRWaWV3LmlzVGFiQWxsb3dlZCk6IEFkZGVkLgorICAgICAgICAo
V2ViSW5zcGVjdG9yLlRhYkNvbnRlbnRWaWV3LmlzRXBoZW1lcmFsKTogQWRkZWQuCisgICAgICAg
IChXZWJJbnNwZWN0b3IuVGFiQ29udGVudFZpZXcuc2hvdWxkU2F2ZVRhYik6IEFkZGVkLgorICAg
ICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvVGltZWxpbmVUYWJDb250ZW50Vmlldy5qczoKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZVRhYkNvbnRlbnRWaWV3KToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5UaW1lbGluZVRhYkNvbnRlbnRWaWV3LnRhYkluZm8pOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5UaW1lbGluZVRhYkNvbnRlbnRWaWV3LmlzVGFiQWxsb3dlZCk6IEFk
ZGVkLgorCisyMDE1LTExLTI0ICBCcmlhbiBCdXJnICA8YmJ1cmdAYXBwbGUuY29tPgorCiAgICAg
ICAgIFdlYiBJbnNwZWN0b3I6IENtZC0xIHRvIENtZC05IHNob3J0Y3V0cyBzaG91bGQgc2VsZWN0
IHRhYnMgYnkgb3JkaW5hbAogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTUxNTc3CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL0Jhc2UvTWFpbi5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL0Jhc2UvTWFpbi5qcwppbmRleCAzMmQyYTMwZWM2ZDY2MGNjNWE1NDFhNmU5NTA1NTFlY2Iz
OWU2YTg2Li44ZTc4OGRiZmI5ZWJjYjVhYjI4NDg3NzlhZTQ1ZmQ2NjMxM2I4NWU4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL01haW4uanMKKysr
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9NYWluLmpzCkBAIC0z
NjAsNiArMzYwLDI2IEBAIFdlYkluc3BlY3Rvci5jb250ZW50TG9hZGVkID0gZnVuY3Rpb24oKQog
ICAgIHRoaXMuX3VwZGF0ZVRvb2xiYXJIZWlnaHQoKTsKICAgICB0aGlzLl9zZXR1cFZpZXdIaWVy
YXJjaHkoKTsKIAorICAgIC8vIFRoZXNlIHRhYnMgYXJlIGFsd2F5cyBhdmFpbGFibGUgZm9yIHNl
bGVjdGluZywgbW9kdWxvIGlzVGFiQWxsb3dlZCgpLgorICAgIC8vIE90aGVyIHRhYnMgbWF5IGJl
IGVuZ2luZWVyaW5nLW9ubHkgb3IgdG9nZ2xlZCBhdCBydW50aW1lIGlmIGluY29tcGxldGUuCisg
ICAgbGV0IHByb2R1Y3Rpb25UYWJDbGFzc2VzID0gWworICAgICAgICBXZWJJbnNwZWN0b3IuQ29u
c29sZVRhYkNvbnRlbnRWaWV3LAorICAgICAgICBXZWJJbnNwZWN0b3IuRGVidWdnZXJUYWJDb250
ZW50VmlldywKKyAgICAgICAgV2ViSW5zcGVjdG9yLkVsZW1lbnRzVGFiQ29udGVudFZpZXcsCisg
ICAgICAgIFdlYkluc3BlY3Rvci5OZXR3b3JrVGFiQ29udGVudFZpZXcsCisgICAgICAgIFdlYklu
c3BlY3Rvci5OZXdUYWJDb250ZW50VmlldywKKyAgICAgICAgV2ViSW5zcGVjdG9yLlJlc291cmNl
c1RhYkNvbnRlbnRWaWV3LAorICAgICAgICBXZWJJbnNwZWN0b3IuU2VhcmNoVGFiQ29udGVudFZp
ZXcsCisgICAgICAgIFdlYkluc3BlY3Rvci5TdG9yYWdlVGFiQ29udGVudFZpZXcsCisgICAgICAg
IFdlYkluc3BlY3Rvci5UaW1lbGluZVRhYkNvbnRlbnRWaWV3LAorICAgIF07CisKKyAgICB0aGlz
Ll9rbm93blRhYkNsYXNzZXNCeVR5cGUgPSBuZXcgTWFwOworICAgIC8vIFNldCB0YWIgY2xhc3Nl
cyBkaXJlY3RseS4gVGhlIHB1YmxpYyBBUEkgdHJpZ2dlcnMgb3RoZXIgdXBkYXRlcyBhbmQKKyAg
ICAvLyBub3RpZmljYXRpb25zIHRoYXQgd29uJ3Qgd29yayBvciBoYXZlIG5vIGxpc3RlbmVycyBh
dCB0aGlzIHBvaW50LgorICAgIGZvciAobGV0IHRhYkNsYXNzIG9mIHByb2R1Y3Rpb25UYWJDbGFz
c2VzKQorICAgICAgICB0aGlzLl9rbm93blRhYkNsYXNzZXNCeVR5cGUuc2V0KHRhYkNsYXNzLlR5
cGUsIHRhYkNsYXNzKTsKKwogICAgIHRoaXMuX3BlbmRpbmdPcGVuVGFicyA9IFtdOwogCiAgICAg
bGV0IG9wZW5UYWJUeXBlcyA9IHRoaXMuX29wZW5UYWJzU2V0dGluZy52YWx1ZTsKQEAgLTM3MSw3
ICszOTEsNyBAQCBXZWJJbnNwZWN0b3IuY29udGVudExvYWRlZCA9IGZ1bmN0aW9uKCkKICAgICAg
ICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAKLSAgICAgICAgbGV0IHRhYkNvbnRlbnRWaWV3
ID0gdGhpcy5fdGFiQ29udGVudFZpZXdGb3JUeXBlKHRhYlR5cGUpOworICAgICAgICBsZXQgdGFi
Q29udGVudFZpZXcgPSB0aGlzLl9jcmVhdGVUYWJDb250ZW50Vmlld0ZvclR5cGUodGFiVHlwZSk7
CiAgICAgICAgIGlmICghdGFiQ29udGVudFZpZXcpCiAgICAgICAgICAgICBjb250aW51ZTsKICAg
ICAgICAgdGhpcy50YWJCcm93c2VyLmFkZFRhYkZvckNvbnRlbnRWaWV3KHRhYkNvbnRlbnRWaWV3
LCB0cnVlKTsKQEAgLTQxMiw1NyArNDMyLDM5IEBAIFdlYkluc3BlY3Rvci5jb250ZW50TG9hZGVk
ID0gZnVuY3Rpb24oKQogCiBXZWJJbnNwZWN0b3IuaXNUYWJUeXBlQWxsb3dlZCA9IGZ1bmN0aW9u
KHRhYlR5cGUpCiB7Ci0gICAgc3dpdGNoICh0YWJUeXBlKSB7Ci0gICAgY2FzZSBXZWJJbnNwZWN0
b3IuRWxlbWVudHNUYWJDb250ZW50Vmlldy5UeXBlOgotICAgICAgICByZXR1cm4gISF3aW5kb3cu
RE9NQWdlbnQ7Ci0gICAgY2FzZSBXZWJJbnNwZWN0b3IuTmV0d29ya1RhYkNvbnRlbnRWaWV3LlR5
cGU6Ci0gICAgICAgIHJldHVybiAhIXdpbmRvdy5OZXR3b3JrQWdlbnQgJiYgISF3aW5kb3cuUGFn
ZUFnZW50OwotICAgIGNhc2UgV2ViSW5zcGVjdG9yLlN0b3JhZ2VUYWJDb250ZW50Vmlldy5UeXBl
OgotICAgICAgICByZXR1cm4gISF3aW5kb3cuRE9NU3RvcmFnZUFnZW50IHx8ICEhd2luZG93LkRh
dGFiYXNlQWdlbnQgfHwgISF3aW5kb3cuSW5kZXhlZERCQWdlbnQ7Ci0gICAgY2FzZSBXZWJJbnNw
ZWN0b3IuVGltZWxpbmVUYWJDb250ZW50Vmlldy5UeXBlOgotICAgICAgICByZXR1cm4gISF3aW5k
b3cuVGltZWxpbmVBZ2VudDsKLSAgICB9CisgICAgbGV0IHRhYkNsYXNzID0gdGhpcy5fa25vd25U
YWJDbGFzc2VzQnlUeXBlLmdldCh0YWJUeXBlKTsKKyAgICBpZiAoIXRhYkNsYXNzKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gdGFiQ2xhc3Mu
aXNUYWJBbGxvd2VkKCk7CiB9OwogCi1XZWJJbnNwZWN0b3IuX3RhYkNvbnRlbnRWaWV3Rm9yVHlw
ZSA9IGZ1bmN0aW9uKHRhYlR5cGUpCi17Ci0gICAgc3dpdGNoICh0YWJUeXBlKSB7Ci0gICAgY2Fz
ZSBXZWJJbnNwZWN0b3IuQ29uc29sZVRhYkNvbnRlbnRWaWV3LlR5cGU6Ci0gICAgICAgIHJldHVy
biBuZXcgV2ViSW5zcGVjdG9yLkNvbnNvbGVUYWJDb250ZW50VmlldzsKLSAgICBjYXNlIFdlYklu
c3BlY3Rvci5EZWJ1Z2dlclRhYkNvbnRlbnRWaWV3LlR5cGU6Ci0gICAgICAgIHJldHVybiBuZXcg
V2ViSW5zcGVjdG9yLkRlYnVnZ2VyVGFiQ29udGVudFZpZXc7Ci0gICAgY2FzZSBXZWJJbnNwZWN0
b3IuRWxlbWVudHNUYWJDb250ZW50Vmlldy5UeXBlOgotICAgICAgICByZXR1cm4gbmV3IFdlYklu
c3BlY3Rvci5FbGVtZW50c1RhYkNvbnRlbnRWaWV3OwotICAgIGNhc2UgV2ViSW5zcGVjdG9yLk5l
dHdvcmtUYWJDb250ZW50Vmlldy5UeXBlOgotICAgICAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rv
ci5OZXR3b3JrVGFiQ29udGVudFZpZXc7Ci0gICAgY2FzZSBXZWJJbnNwZWN0b3IuTmV3VGFiQ29u
dGVudFZpZXcuVHlwZToKLSAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuTmV3VGFiQ29u
dGVudFZpZXc7Ci0gICAgY2FzZSBXZWJJbnNwZWN0b3IuUmVzb3VyY2VzVGFiQ29udGVudFZpZXcu
VHlwZToKLSAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuUmVzb3VyY2VzVGFiQ29udGVu
dFZpZXc7Ci0gICAgY2FzZSBXZWJJbnNwZWN0b3IuU2VhcmNoVGFiQ29udGVudFZpZXcuVHlwZToK
LSAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuU2VhcmNoVGFiQ29udGVudFZpZXc7Ci0g
ICAgY2FzZSBXZWJJbnNwZWN0b3IuU3RvcmFnZVRhYkNvbnRlbnRWaWV3LlR5cGU6Ci0gICAgICAg
IHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLlN0b3JhZ2VUYWJDb250ZW50VmlldzsKLSAgICBjYXNl
IFdlYkluc3BlY3Rvci5UaW1lbGluZVRhYkNvbnRlbnRWaWV3LlR5cGU6Ci0gICAgICAgIHJldHVy
biBuZXcgV2ViSW5zcGVjdG9yLlRpbWVsaW5lVGFiQ29udGVudFZpZXc7Ci0gICAgZGVmYXVsdDoK
K1dlYkluc3BlY3Rvci5rbm93blRhYkNsYXNzZXMgPSBmdW5jdGlvbigpCit7CisgICAgcmV0dXJu
IG5ldyBTZXQodGhpcy5fa25vd25UYWJDbGFzc2VzQnlUeXBlLnZhbHVlcygpKTsKK30KKworV2Vi
SW5zcGVjdG9yLl9jcmVhdGVUYWJDb250ZW50Vmlld0ZvclR5cGUgPSBmdW5jdGlvbih0YWJUeXBl
KQoreworICAgIGxldCB0YWJDbGFzcyA9IHRoaXMuX2tub3duVGFiQ2xhc3Nlc0J5VHlwZS5nZXQo
dGFiVHlwZSk7CisgICAgaWYgKCF0YWJDbGFzcykgewogICAgICAgICBjb25zb2xlLmVycm9yKCJV
bmtub3duIHRhYiB0eXBlIiwgdGFiVHlwZSk7CisgICAgICAgIHJldHVybiBudWxsOwogICAgIH0K
IAotICAgIHJldHVybiBudWxsOworICAgIGNvbnNvbGUuYXNzZXJ0KFdlYkluc3BlY3Rvci5UYWJD
b250ZW50Vmlldy5pc1Byb3RvdHlwZU9mKHRhYkNsYXNzKSk7CisgICAgcmV0dXJuIG5ldyB0YWJD
bGFzczsKIH07CiAKIFdlYkluc3BlY3Rvci5fcmVtZW1iZXJPcGVuVGFicyA9IGZ1bmN0aW9uKCkK
IHsKLSAgICB2YXIgb3BlblRhYnMgPSBbXTsKKyAgICBsZXQgb3BlblRhYnMgPSBbXTsKIAotICAg
IGZvciAodmFyIHRhYkJhckl0ZW0gb2YgdGhpcy50YWJCYXIudGFiQmFySXRlbXMpIHsKLSAgICAg
ICAgdmFyIHRhYkNvbnRlbnRWaWV3ID0gdGFiQmFySXRlbS5yZXByZXNlbnRlZE9iamVjdDsKKyAg
ICBmb3IgKGxldCB0YWJCYXJJdGVtIG9mIHRoaXMudGFiQmFyLnRhYkJhckl0ZW1zKSB7CisgICAg
ICAgIGxldCB0YWJDb250ZW50VmlldyA9IHRhYkJhckl0ZW0ucmVwcmVzZW50ZWRPYmplY3Q7CiAg
ICAgICAgIGlmICghKHRhYkNvbnRlbnRWaWV3IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlRhYkNv
bnRlbnRWaWV3KSkKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBpZiAodGFiQ29udGVu
dFZpZXcgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuU2V0dGluZ3NUYWJDb250ZW50VmlldyB8fCB0
YWJDb250ZW50VmlldyBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5OZXdUYWJDb250ZW50VmlldykK
KyAgICAgICAgaWYgKCF0YWJDb250ZW50Vmlldy5jb25zdHJ1Y3Rvci5zaG91bGRTYXZlVGFiKCkp
CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgY29uc29sZS5hc3NlcnQodGFiQ29udGVu
dFZpZXcudHlwZSwgIlRhYiB0eXBlIGNhbid0IGJlIG51bGwsIHVuZGVmaW5lZCwgb3IgZW1wdHkg
c3RyaW5nIiwgdGFiQ29udGVudFZpZXcudHlwZSwgdGFiQ29udGVudFZpZXcpOwogICAgICAgICBv
cGVuVGFicy5wdXNoKHRhYkNvbnRlbnRWaWV3LnR5cGUpOwpAQCAtNDc3LDExICs0NzksMTAgQEAg
V2ViSW5zcGVjdG9yLl9yZW1lbWJlck9wZW5UYWJzID0gZnVuY3Rpb24oKQogCiBXZWJJbnNwZWN0
b3IuX3VwZGF0ZU5ld1RhYkJ1dHRvblN0YXRlID0gZnVuY3Rpb24oZXZlbnQpCiB7Ci0gICAgdmFy
IG5ld1RhYkFsbG93ZWQgPSB0aGlzLmlzTmV3VGFiV2l0aFR5cGVBbGxvd2VkKFdlYkluc3BlY3Rv
ci5Db25zb2xlVGFiQ29udGVudFZpZXcuVHlwZSkgfHwgdGhpcy5pc05ld1RhYldpdGhUeXBlQWxs
b3dlZChXZWJJbnNwZWN0b3IuRWxlbWVudHNUYWJDb250ZW50Vmlldy5UeXBlKQotICAgICAgICB8
fCB0aGlzLmlzTmV3VGFiV2l0aFR5cGVBbGxvd2VkKFdlYkluc3BlY3Rvci5SZXNvdXJjZXNUYWJD
b250ZW50Vmlldy5UeXBlKSB8fCB0aGlzLmlzTmV3VGFiV2l0aFR5cGVBbGxvd2VkKFdlYkluc3Bl
Y3Rvci5TdG9yYWdlVGFiQ29udGVudFZpZXcuVHlwZSkKLSAgICAgICAgfHwgdGhpcy5pc05ld1Rh
YldpdGhUeXBlQWxsb3dlZChXZWJJbnNwZWN0b3IuVGltZWxpbmVUYWJDb250ZW50Vmlldy5UeXBl
KSB8fCB0aGlzLmlzTmV3VGFiV2l0aFR5cGVBbGxvd2VkKFdlYkluc3BlY3Rvci5EZWJ1Z2dlclRh
YkNvbnRlbnRWaWV3LlR5cGUpCi0gICAgICAgIHx8IHRoaXMuaXNOZXdUYWJXaXRoVHlwZUFsbG93
ZWQoV2ViSW5zcGVjdG9yLk5ldHdvcmtUYWJDb250ZW50Vmlldy5UeXBlKTsKLSAgICB0aGlzLnRh
YkJhci5uZXdUYWJJdGVtLmRpc2FibGVkID0gIW5ld1RhYkFsbG93ZWQ7CisgICAgbGV0IGFsbFRh
YnMgPSBbLi4udGhpcy5fa25vd25UYWJDbGFzc2VzQnlUeXBlLnZhbHVlcygpXTsKKyAgICBsZXQg
YWRkYWJsZVRhYnMgPSBhbGxUYWJzLmZpbHRlcigodGFiQ2xhc3MpID0+ICF0YWJDbGFzcy5pc0Vw
aGVtZXJhbCgpKTsKKyAgICBsZXQgY2FuTWFrZU5ld1RhYiA9IGFkZGFibGVUYWJzLnNvbWUoKHRh
YkNsYXNzKSA9PiB0aGlzLmlzTmV3VGFiV2l0aFR5cGVBbGxvd2VkKHRhYkNsYXNzLlR5cGUpKTsK
KyAgICB0aGlzLnRhYkJhci5uZXdUYWJJdGVtLmRpc2FibGVkID0gIWNhbk1ha2VOZXdUYWI7CiB9
OwogCiBXZWJJbnNwZWN0b3IuX25ld1RhYkl0ZW1DbGlja2VkID0gZnVuY3Rpb24oZXZlbnQpCkBA
IC00OTUsOSArNDk2LDMyIEBAIFdlYkluc3BlY3Rvci5fb3BlbkRlZmF1bHRUYWIgPSBmdW5jdGlv
bihldmVudCkKICAgICB0aGlzLnNob3dOZXdUYWJUYWIoKTsKIH07CiAKK1dlYkluc3BlY3Rvci5f
dHJ5VG9SZXN0b3JlUGVuZGluZ1RhYnMgPSBmdW5jdGlvbigpCit7CisgICAgbGV0IHN0aWxsUGVu
ZGluZ09wZW5UYWJzID0gW107CisgICAgZm9yIChsZXQge3RhYlR5cGUsIGluZGV4fSBvZiB0aGlz
Ll9wZW5kaW5nT3BlblRhYnMpIHsKKyAgICAgICAgaWYgKCF0aGlzLmlzVGFiVHlwZUFsbG93ZWQo
dGFiVHlwZSkpIHsKKyAgICAgICAgICAgIHN0aWxsUGVuZGluZ09wZW5UYWJzLnB1c2goe3RhYlR5
cGUsIGluZGV4fSk7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAg
IGxldCB0YWJDb250ZW50VmlldyA9IHRoaXMuX2NyZWF0ZVRhYkNvbnRlbnRWaWV3Rm9yVHlwZSh0
YWJUeXBlKTsKKyAgICAgICAgaWYgKCF0YWJDb250ZW50VmlldykKKyAgICAgICAgICAgIGNvbnRp
bnVlOworCisgICAgICAgIHRoaXMudGFiQnJvd3Nlci5hZGRUYWJGb3JDb250ZW50Vmlldyh0YWJD
b250ZW50VmlldywgdHJ1ZSwgaW5kZXgpOworCisgICAgICAgIHRhYkNvbnRlbnRWaWV3LnJlc3Rv
cmVTdGF0ZUZyb21Db29raWUoV2ViSW5zcGVjdG9yLlN0YXRlUmVzdG9yYXRpb25UeXBlLkxvYWQp
OworICAgIH0KKworICAgIHRoaXMuX3BlbmRpbmdPcGVuVGFicyA9IHN0aWxsUGVuZGluZ09wZW5U
YWJzOworCisgICAgdGhpcy5fdXBkYXRlTmV3VGFiQnV0dG9uU3RhdGUoKTsKK30KKwogV2ViSW5z
cGVjdG9yLnNob3dOZXdUYWJUYWIgPSBmdW5jdGlvbihzaG91bGRBbmltYXRlKQogewotICAgIHZh
ciB0YWJDb250ZW50VmlldyA9IHRoaXMudGFiQnJvd3Nlci5iZXN0VGFiQ29udGVudFZpZXdGb3JD
bGFzcyhXZWJJbnNwZWN0b3IuTmV3VGFiQ29udGVudFZpZXcpOworICAgIGxldCB0YWJDb250ZW50
VmlldyA9IHRoaXMudGFiQnJvd3Nlci5iZXN0VGFiQ29udGVudFZpZXdGb3JDbGFzcyhXZWJJbnNw
ZWN0b3IuTmV3VGFiQ29udGVudFZpZXcpOwogICAgIGlmICghdGFiQ29udGVudFZpZXcpCiAgICAg
ICAgIHRhYkNvbnRlbnRWaWV3ID0gbmV3IFdlYkluc3BlY3Rvci5OZXdUYWJDb250ZW50VmlldzsK
ICAgICB0aGlzLnRhYkJyb3dzZXIuc2hvd1RhYkZvckNvbnRlbnRWaWV3KHRhYkNvbnRlbnRWaWV3
LCAhc2hvdWxkQW5pbWF0ZSk7CkBAIC01MDUsMTUgKzUyOSwxNiBAQCBXZWJJbnNwZWN0b3Iuc2hv
d05ld1RhYlRhYiA9IGZ1bmN0aW9uKHNob3VsZEFuaW1hdGUpCiAKIFdlYkluc3BlY3Rvci5pc05l
d1RhYldpdGhUeXBlQWxsb3dlZCA9IGZ1bmN0aW9uKHRhYlR5cGUpCiB7Ci0gICAgaWYgKCF0aGlz
LmlzVGFiVHlwZUFsbG93ZWQodGFiVHlwZSkpCisgICAgbGV0IHRhYkNsYXNzID0gdGhpcy5fa25v
d25UYWJDbGFzc2VzQnlUeXBlLmdldCh0YWJUeXBlKTsKKyAgICBpZiAoIXRhYkNsYXNzIHx8ICF0
YWJDbGFzcy5pc1RhYkFsbG93ZWQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgLy8g
T25seSBhbGxvdyBvbmUgdGFiIHBlciBjbGFzcyBmb3Igbm93LgotICAgIGZvciAodmFyIHRhYkJh
ckl0ZW0gb2YgdGhpcy50YWJCYXIudGFiQmFySXRlbXMpIHsKLSAgICAgICAgdmFyIHRhYkNvbnRl
bnRWaWV3ID0gdGFiQmFySXRlbS5yZXByZXNlbnRlZE9iamVjdDsKKyAgICBmb3IgKGxldCB0YWJC
YXJJdGVtIG9mIHRoaXMudGFiQmFyLnRhYkJhckl0ZW1zKSB7CisgICAgICAgIGxldCB0YWJDb250
ZW50VmlldyA9IHRhYkJhckl0ZW0ucmVwcmVzZW50ZWRPYmplY3Q7CiAgICAgICAgIGlmICghKHRh
YkNvbnRlbnRWaWV3IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlRhYkNvbnRlbnRWaWV3KSkKICAg
ICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBpZiAodGFiQ29udGVudFZpZXcudHlwZSA9PT0g
dGFiVHlwZSkKKyAgICAgICAgaWYgKHRhYkNvbnRlbnRWaWV3LmNvbnN0cnVjdG9yID09PSB0YWJD
bGFzcykKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTUyOCw3ICs1NTMs
NyBAQCBXZWJJbnNwZWN0b3IuY3JlYXRlTmV3VGFiV2l0aFR5cGUgPSBmdW5jdGlvbih0YWJUeXBl
LCBvcHRpb25zID0ge30pCiAgICAgY29uc29sZS5hc3NlcnQoIXJlZmVyZW5jZWRWaWV3IHx8IHJl
ZmVyZW5jZWRWaWV3IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlRhYkNvbnRlbnRWaWV3LCByZWZl
cmVuY2VkVmlldyk7CiAgICAgY29uc29sZS5hc3NlcnQoIXNob3VsZFJlcGxhY2VUYWIgfHwgcmVm
ZXJlbmNlZFZpZXcsICJNdXN0IHByb3ZpZGUgYSByZWZlcmVuY2UgdmlldyB0byByZXBsYWNlIGEg
dGFiLiIpOwogCi0gICAgbGV0IHRhYkNvbnRlbnRWaWV3ID0gdGhpcy5fdGFiQ29udGVudFZpZXdG
b3JUeXBlKHRhYlR5cGUpOworICAgIGxldCB0YWJDb250ZW50VmlldyA9IHRoaXMuX2NyZWF0ZVRh
YkNvbnRlbnRWaWV3Rm9yVHlwZSh0YWJUeXBlKTsKICAgICBjb25zdCBzdXBwcmVzc0FuaW1hdGlv
bnMgPSB0cnVlOwogICAgIGxldCBpbnNlcnRpb25JbmRleCA9IHJlZmVyZW5jZWRWaWV3ID8gdGhp
cy50YWJCYXIudGFiQmFySXRlbXMuaW5kZXhPZihyZWZlcmVuY2VkVmlldy50YWJCYXJJdGVtKSA6
IHVuZGVmaW5lZDsKICAgICB0aGlzLnRhYkJyb3dzZXIuYWRkVGFiRm9yQ29udGVudFZpZXcodGFi
Q29udGVudFZpZXcsIHN1cHByZXNzQW5pbWF0aW9ucywgaW5zZXJ0aW9uSW5kZXgpOwpAQCAtNTQw
LDYgKzU2NSwyMSBAQCBXZWJJbnNwZWN0b3IuY3JlYXRlTmV3VGFiV2l0aFR5cGUgPSBmdW5jdGlv
bih0YWJUeXBlLCBvcHRpb25zID0ge30pCiAgICAgICAgIHRoaXMudGFiQnJvd3Nlci5zaG93VGFi
Rm9yQ29udGVudFZpZXcodGFiQ29udGVudFZpZXcpOwogfTsKIAorV2ViSW5zcGVjdG9yLnJlZ2lz
dGVyVGFiQ2xhc3MgPSBmdW5jdGlvbih0YWJDbGFzcykKK3sKKyAgICBjb25zb2xlLmFzc2VydChX
ZWJJbnNwZWN0b3IuVGFiQ29udGVudFZpZXcuaXNQcm90b3R5cGVPZih0YWJDbGFzcykpOworICAg
IGlmICghV2ViSW5zcGVjdG9yLlRhYkNvbnRlbnRWaWV3LmlzUHJvdG90eXBlT2YodGFiQ2xhc3Mp
KQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAodGhpcy5fa25vd25UYWJDbGFzc2VzQnlUeXBl
Lmhhcyh0YWJDbGFzcy5UeXBlKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgdGhpcy5fa25vd25U
YWJDbGFzc2VzQnlUeXBlLnNldCh0YWJDbGFzcy5UeXBlLCB0YWJDbGFzcyk7CisKKyAgICB0aGlz
Ll90cnlUb1Jlc3RvcmVQZW5kaW5nVGFicygpOworICAgIHRoaXMubm90aWZpY2F0aW9ucy5kaXNw
YXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLk5vdGlmaWNhdGlvbi5UYWJUeXBlc0No
YW5nZWQpOworfQorCiBXZWJJbnNwZWN0b3IuYWN0aXZhdGVFeHRyYURvbWFpbnMgPSBmdW5jdGlv
bihkb21haW5zKQogewogICAgIHRoaXMuaGFzRXh0cmFEb21haW5zID0gdHJ1ZTsKQEAgLTU1Niwy
NiArNTk2LDcgQEAgV2ViSW5zcGVjdG9yLmFjdGl2YXRlRXh0cmFEb21haW5zID0gZnVuY3Rpb24o
ZG9tYWlucykKIAogICAgIHRoaXMuX3VwZGF0ZVJlbG9hZFRvb2xiYXJCdXR0b24oKTsKICAgICB0
aGlzLl91cGRhdGVEb3dubG9hZFRvb2xiYXJCdXR0b24oKTsKLQotICAgIGxldCBzdGlsbFBlbmRp
bmdPcGVuVGFicyA9IFtdOwotICAgIGZvciAobGV0IHt0YWJUeXBlLCBpbmRleH0gb2YgdGhpcy5f
cGVuZGluZ09wZW5UYWJzKSB7Ci0gICAgICAgIGlmICghdGhpcy5pc1RhYlR5cGVBbGxvd2VkKHRh
YlR5cGUpKSB7Ci0gICAgICAgICAgICBzdGlsbFBlbmRpbmdPcGVuVGFicy5wdXNoKHt0YWJUeXBl
LCBpbmRleH0pOwotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KLQotICAgICAgICBs
ZXQgdGFiQ29udGVudFZpZXcgPSB0aGlzLl90YWJDb250ZW50Vmlld0ZvclR5cGUodGFiVHlwZSk7
Ci0gICAgICAgIGlmICghdGFiQ29udGVudFZpZXcpCi0gICAgICAgICAgICBjb250aW51ZTsKLQot
ICAgICAgICB0aGlzLnRhYkJyb3dzZXIuYWRkVGFiRm9yQ29udGVudFZpZXcodGFiQ29udGVudFZp
ZXcsIHRydWUsIGluZGV4KTsKLQotICAgICAgICB0YWJDb250ZW50Vmlldy5yZXN0b3JlU3RhdGVG
cm9tQ29va2llKFdlYkluc3BlY3Rvci5TdGF0ZVJlc3RvcmF0aW9uVHlwZS5Mb2FkKTsKLSAgICB9
Ci0KLSAgICB0aGlzLl9wZW5kaW5nT3BlblRhYnMgPSBzdGlsbFBlbmRpbmdPcGVuVGFiczsKLQot
ICAgIHRoaXMuX3VwZGF0ZU5ld1RhYkJ1dHRvblN0YXRlKCk7CisgICAgdGhpcy5fdHJ5VG9SZXN0
b3JlUGVuZGluZ1RhYnMoKTsKIH07CiAKIFdlYkluc3BlY3Rvci5jb250ZW50QnJvd3NlclRyZWVF
bGVtZW50Rm9yUmVwcmVzZW50ZWRPYmplY3QgPSBmdW5jdGlvbihjb250ZW50QnJvd3NlciwgcmVw
cmVzZW50ZWRPYmplY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9CYXNlL09iamVjdC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL0Jhc2UvT2JqZWN0LmpzCmluZGV4IDk3OTU2OWU2ZmFmMzYwYTM0MGVmODNiNTc5ZmJlNDAx
YTc4Y2YzNzQuLjFhMmI5OTVjZjc1ZDhmZGQwYTNlNjhjNGM5OWVmMjg0ZjJiYmJhODEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvT2JqZWN0Lmpz
CisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvT2JqZWN0Lmpz
CkBAIC0yMDgsNCArMjA4LDUgQEAgV2ViSW5zcGVjdG9yLk5vdGlmaWNhdGlvbiA9IHsKICAgICBQ
YWdlQXJjaGl2ZVN0YXJ0ZWQ6ICJwYWdlLWFyY2hpdmUtc3RhcnRlZCIsCiAgICAgUGFnZUFyY2hp
dmVFbmRlZDogInBhZ2UtYXJjaGl2ZS1lbmRlZCIsCiAgICAgRXh0cmFEb21haW5zQWN0aXZhdGVk
OiAiZXh0cmEtZG9tYWlucy1hY3RpdmF0ZWQiLAorICAgIFRhYlR5cGVzQ2hhbmdlZDogInRhYi10
eXBlcy1jaGFuZ2VkIiwKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9Db25zb2xlVGFiQ29udGVudFZpZXcuanMgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db25zb2xlVGFiQ29udGVudFZpZXcuanMKaW5k
ZXggYzkzMDE0ODZhZDhhYTMzYTYyNTc4YWY1NzFlNTQxZDE4YjkwMGJlZi4uMjJjMTMyNjNlNjFi
NmNjM2I5OTljNWQzNGQ2MDA1MGM3MjE1MzdmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29uc29sZVRhYkNvbnRlbnRWaWV3LmpzCisrKyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnNvbGVUYWJDb250
ZW50Vmlldy5qcwpAQCAtMjcsMTMgKzI3LDIyIEBAIFdlYkluc3BlY3Rvci5Db25zb2xlVGFiQ29u
dGVudFZpZXcgPSBjbGFzcyBDb25zb2xlVGFiQ29udGVudFZpZXcgZXh0ZW5kcyBXZWJJbnNwCiB7
CiAgICAgY29uc3RydWN0b3IoaWRlbnRpZmllcikKICAgICB7Ci0gICAgICAgIHZhciB0YWJCYXJJ
dGVtID0gbmV3IFdlYkluc3BlY3Rvci5UYWJCYXJJdGVtKCJJbWFnZXMvQ29uc29sZS5zdmciLCBX
ZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNvbnNvbGUiKSk7CisgICAgICAgIGxldCB7aW1hZ2UsIHRp
dGxlfSA9IFdlYkluc3BlY3Rvci5Db25zb2xlVGFiQ29udGVudFZpZXcudGFiSW5mbygpOworICAg
ICAgICBsZXQgdGFiQmFySXRlbSA9IG5ldyBXZWJJbnNwZWN0b3IuVGFiQmFySXRlbShpbWFnZSwg
dGl0bGUpOwogCiAgICAgICAgIHN1cGVyKGlkZW50aWZpZXIgfHwgImNvbnNvbGUiLCAiY29uc29s
ZSIsIHRhYkJhckl0ZW0sIG51bGwsIG51bGwsIHRydWUpOwogICAgIH0KIAogICAgIC8vIFB1Ymxp
YwogCisgICAgc3RhdGljIHRhYkluZm8oKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHsKKyAgICAg
ICAgICAgIGltYWdlOiAiSW1hZ2VzL0NvbnNvbGUuc3ZnIiwKKyAgICAgICAgICAgIHRpdGxlOiBX
ZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNvbnNvbGUiKSwKKyAgICAgICAgfTsKKyAgICB9CisKICAg
ICBnZXQgdHlwZSgpCiAgICAgewogICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLkNvbnNvbGVU
YWJDb250ZW50Vmlldy5UeXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvRGVidWdnZXJUYWJDb250ZW50Vmlldy5qcyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RlYnVnZ2VyVGFiQ29udGVudFZpZXcuanMK
aW5kZXggYTU4Yjk2MmRjM2E2NTIxYWI4MzZmZjdjOGYxOTE4NDM5YmMxMjVkZi4uYWU4NmVhMGM1
MTc4N2FkMDJiMGE2ZmU4YzRlMjAzZDAwMmE5Y2Q3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRGVidWdnZXJUYWJDb250ZW50Vmlldy5qcwor
KysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9EZWJ1Z2dlclRh
YkNvbnRlbnRWaWV3LmpzCkBAIC0yNywxNCArMjcsMjMgQEAgV2ViSW5zcGVjdG9yLkRlYnVnZ2Vy
VGFiQ29udGVudFZpZXcgPSBjbGFzcyBEZWJ1Z2dlclRhYkNvbnRlbnRWaWV3IGV4dGVuZHMgV2Vi
SW4KIHsKICAgICBjb25zdHJ1Y3RvcihpZGVudGlmaWVyKQogICAgIHsKLSAgICAgICAgdmFyIHRh
YkJhckl0ZW0gPSBuZXcgV2ViSW5zcGVjdG9yLlRhYkJhckl0ZW0oIkltYWdlcy9EZWJ1Z2dlci5z
dmciLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkRlYnVnZ2VyIikpOwotICAgICAgICB2YXIgZGV0
YWlsc1NpZGViYXJQYW5lbHMgPSBbV2ViSW5zcGVjdG9yLnJlc291cmNlRGV0YWlsc1NpZGViYXJQ
YW5lbCwgV2ViSW5zcGVjdG9yLnNjb3BlQ2hhaW5EZXRhaWxzU2lkZWJhclBhbmVsLCBXZWJJbnNw
ZWN0b3IucHJvYmVEZXRhaWxzU2lkZWJhclBhbmVsXTsKKyAgICAgICAgbGV0IHtpbWFnZSwgdGl0
bGV9ID0gV2ViSW5zcGVjdG9yLkRlYnVnZ2VyVGFiQ29udGVudFZpZXcudGFiSW5mbygpOworICAg
ICAgICBsZXQgdGFiQmFySXRlbSA9IG5ldyBXZWJJbnNwZWN0b3IuVGFiQmFySXRlbShpbWFnZSwg
dGl0bGUpOworICAgICAgICBsZXQgZGV0YWlsc1NpZGViYXJQYW5lbHMgPSBbV2ViSW5zcGVjdG9y
LnJlc291cmNlRGV0YWlsc1NpZGViYXJQYW5lbCwgV2ViSW5zcGVjdG9yLnNjb3BlQ2hhaW5EZXRh
aWxzU2lkZWJhclBhbmVsLCBXZWJJbnNwZWN0b3IucHJvYmVEZXRhaWxzU2lkZWJhclBhbmVsXTsK
IAogICAgICAgICBzdXBlcihpZGVudGlmaWVyIHx8ICJkZWJ1Z2dlciIsICJkZWJ1Z2dlciIsIHRh
YkJhckl0ZW0sIFdlYkluc3BlY3Rvci5EZWJ1Z2dlclNpZGViYXJQYW5lbCwgZGV0YWlsc1NpZGVi
YXJQYW5lbHMpOwogICAgIH0KIAogICAgIC8vIFB1YmxpYwogCisgICAgc3RhdGljIHRhYkluZm8o
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHsKKyAgICAgICAgICAgIGltYWdlOiAiSW1hZ2VzL0Rl
YnVnZ2VyLnN2ZyIsCisgICAgICAgICAgICB0aXRsZTogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJE
ZWJ1Z2dlciIpLAorICAgICAgICB9OworICAgIH0KKwogICAgIGdldCB0eXBlKCkKICAgICB7CiAg
ICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuRGVidWdnZXJUYWJDb250ZW50Vmlldy5UeXBlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRWxl
bWVudHNUYWJDb250ZW50Vmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL0VsZW1lbnRzVGFiQ29udGVudFZpZXcuanMKaW5kZXggMWQ1ZWZhOTU1MDM1OTgw
NjhhZDRmNDljMzhiZGQyOWQyOTU5N2RkYi4uYzE2MmE4MzFjOWM0YWRhOGNkMjcwMTE0YTAxOWJk
MWQ1YzZjYjg3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvRWxlbWVudHNUYWJDb250ZW50Vmlldy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9FbGVtZW50c1RhYkNvbnRlbnRWaWV3LmpzCkBAIC0y
Nyw4ICsyNyw5IEBAIFdlYkluc3BlY3Rvci5FbGVtZW50c1RhYkNvbnRlbnRWaWV3ID0gY2xhc3Mg
RWxlbWVudHNUYWJDb250ZW50VmlldyBleHRlbmRzIFdlYkluCiB7CiAgICAgY29uc3RydWN0b3Io
aWRlbnRpZmllcikKICAgICB7Ci0gICAgICAgIHZhciB0YWJCYXJJdGVtID0gbmV3IFdlYkluc3Bl
Y3Rvci5UYWJCYXJJdGVtKCJJbWFnZXMvRWxlbWVudHMuc3ZnIiwgV2ViSW5zcGVjdG9yLlVJU3Ry
aW5nKCJFbGVtZW50cyIpKTsKLSAgICAgICAgdmFyIGRldGFpbHNTaWRlYmFyUGFuZWxzID0gW1dl
Ykluc3BlY3Rvci5kb21Ob2RlRGV0YWlsc1NpZGViYXJQYW5lbCwgV2ViSW5zcGVjdG9yLmNzc1N0
eWxlRGV0YWlsc1NpZGViYXJQYW5lbF07CisgICAgICAgIGxldCB7aW1hZ2UsIHRpdGxlfSA9IFdl
Ykluc3BlY3Rvci5FbGVtZW50c1RhYkNvbnRlbnRWaWV3LnRhYkluZm8oKTsKKyAgICAgICAgbGV0
IHRhYkJhckl0ZW0gPSBuZXcgV2ViSW5zcGVjdG9yLlRhYkJhckl0ZW0oaW1hZ2UsIHRpdGxlKTsK
KyAgICAgICAgbGV0IGRldGFpbHNTaWRlYmFyUGFuZWxzID0gW1dlYkluc3BlY3Rvci5kb21Ob2Rl
RGV0YWlsc1NpZGViYXJQYW5lbCwgV2ViSW5zcGVjdG9yLmNzc1N0eWxlRGV0YWlsc1NpZGViYXJQ
YW5lbF07CiAKICAgICAgICAgaWYgKFdlYkluc3BlY3Rvci5sYXllclRyZWVEZXRhaWxzU2lkZWJh
clBhbmVsKQogICAgICAgICAgICAgZGV0YWlsc1NpZGViYXJQYW5lbHMucHVzaChXZWJJbnNwZWN0
b3IubGF5ZXJUcmVlRGV0YWlsc1NpZGViYXJQYW5lbCk7CkBAIC00Myw2ICs0NCwxOSBAQCBXZWJJ
bnNwZWN0b3IuRWxlbWVudHNUYWJDb250ZW50VmlldyA9IGNsYXNzIEVsZW1lbnRzVGFiQ29udGVu
dFZpZXcgZXh0ZW5kcyBXZWJJbgogCiAgICAgLy8gUHVibGljCiAKKyAgICBzdGF0aWMgdGFiSW5m
bygpCisgICAgeworICAgICAgICByZXR1cm4geworICAgICAgICAgICAgaW1hZ2U6ICJJbWFnZXMv
RWxlbWVudHMuc3ZnIiwKKyAgICAgICAgICAgIHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmco
IkVsZW1lbnRzIiksCisgICAgICAgIH07CisgICAgfQorCisgICAgc3RhdGljIGlzVGFiQWxsb3dl
ZCgpCisgICAgeworICAgICAgICByZXR1cm4gISF3aW5kb3cuRE9NQWdlbnQ7CisgICAgfQorCiAg
ICAgZ2V0IHR5cGUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5FbGVtZW50
c1RhYkNvbnRlbnRWaWV3LlR5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9OZXR3b3JrVGFiQ29udGVudFZpZXcuanMgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9OZXR3b3JrVGFiQ29udGVudFZpZXcuanMK
aW5kZXggZDE1M2MxMjRlZDM4OTcyZGIxYzY4MThjMjFhNTlmMzdlNjZjNDI3OC4uMDE3MTVjMTJh
NDZkNzU4OTRkNTk4NjAwYzEwZjFhOGMyMTQ3M2U1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTmV0d29ya1RhYkNvbnRlbnRWaWV3LmpzCisr
KyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL05ldHdvcmtUYWJD
b250ZW50Vmlldy5qcwpAQCAtMjcsMTQgKzI3LDI4IEBAIFdlYkluc3BlY3Rvci5OZXR3b3JrVGFi
Q29udGVudFZpZXcgPSBjbGFzcyBOZXR3b3JrVGFiQ29udGVudFZpZXcgZXh0ZW5kcyBXZWJJbnNw
CiB7CiAgICAgY29uc3RydWN0b3IoaWRlbnRpZmllcikKICAgICB7Ci0gICAgICAgIHZhciB0YWJC
YXJJdGVtID0gbmV3IFdlYkluc3BlY3Rvci5UYWJCYXJJdGVtKCJJbWFnZXMvTmV0d29yay5zdmci
LCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIk5ldHdvcmsiKSk7Ci0gICAgICAgIHZhciBkZXRhaWxz
U2lkZWJhclBhbmVscyA9IFtXZWJJbnNwZWN0b3IucmVzb3VyY2VEZXRhaWxzU2lkZWJhclBhbmVs
LCBXZWJJbnNwZWN0b3IucHJvYmVEZXRhaWxzU2lkZWJhclBhbmVsXTsKKyAgICAgICAgbGV0IHtp
bWFnZSwgdGl0bGV9ID0gV2ViSW5zcGVjdG9yLk5ldHdvcmtUYWJDb250ZW50Vmlldy50YWJJbmZv
KCk7CisgICAgICAgIGxldCB0YWJCYXJJdGVtID0gbmV3IFdlYkluc3BlY3Rvci5UYWJCYXJJdGVt
KGltYWdlLCB0aXRsZSk7CisgICAgICAgIGxldCBkZXRhaWxzU2lkZWJhclBhbmVscyA9IFtXZWJJ
bnNwZWN0b3IucmVzb3VyY2VEZXRhaWxzU2lkZWJhclBhbmVsLCBXZWJJbnNwZWN0b3IucHJvYmVE
ZXRhaWxzU2lkZWJhclBhbmVsXTsKIAogICAgICAgICBzdXBlcihpZGVudGlmaWVyIHx8ICJuZXR3
b3JrIiwgIm5ldHdvcmsiLCB0YWJCYXJJdGVtLCBXZWJJbnNwZWN0b3IuTmV0d29ya1NpZGViYXJQ
YW5lbCwgZGV0YWlsc1NpZGViYXJQYW5lbHMpOwogICAgIH0KIAogICAgIC8vIFB1YmxpYwogCisg
ICAgc3RhdGljIHRhYkluZm8oKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHsKKyAgICAgICAgICAg
IGltYWdlOiAiSW1hZ2VzL05ldHdvcmsuc3ZnIiwKKyAgICAgICAgICAgIHRpdGxlOiBXZWJJbnNw
ZWN0b3IuVUlTdHJpbmcoIk5ldHdvcmsiKSwKKyAgICAgICAgfTsKKyAgICB9CisKKyAgICBzdGF0
aWMgaXNUYWJBbGxvd2VkKCkKKyAgICB7CisgICAgICAgIHJldHVybiAhIXdpbmRvdy5OZXR3b3Jr
QWdlbnQgJiYgISF3aW5kb3cuUGFnZUFnZW50OworICAgIH0KKwogICAgIGdldCB0eXBlKCkKICAg
ICB7CiAgICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuTmV0d29ya1RhYkNvbnRlbnRWaWV3LlR5
cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9OZXdUYWJDb250ZW50Vmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL05ld1RhYkNvbnRlbnRWaWV3LmpzCmluZGV4IDFkYjMwMTkxY2M1NjY3M2RhM2Uz
ODZlMjc4ZWE3ZjQwNTRhODliZjQuLmU1ZWU0YmFjNTQ3YmQ2ZjJmMmQzYjU4ZjdhMmRlMjRlNDkx
OTFhNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL05ld1RhYkNvbnRlbnRWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL05ld1RhYkNvbnRlbnRWaWV3LmpzCkBAIC0yNyw0NiArMjcsMzcgQEAg
V2ViSW5zcGVjdG9yLk5ld1RhYkNvbnRlbnRWaWV3ID0gY2xhc3MgTmV3VGFiQ29udGVudFZpZXcg
ZXh0ZW5kcyBXZWJJbnNwZWN0b3IuVGEKIHsKICAgICBjb25zdHJ1Y3RvcihpZGVudGlmaWVyKQog
ICAgIHsKLSAgICAgICAgdmFyIHRhYkJhckl0ZW0gPSBuZXcgV2ViSW5zcGVjdG9yLlRhYkJhckl0
ZW0oIkltYWdlcy9OZXdUYWIuc3ZnIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJOZXcgVGFiIikp
OworICAgICAgICBsZXQge2ltYWdlLCB0aXRsZX0gPSBXZWJJbnNwZWN0b3IuQ29uc29sZVRhYkNv
bnRlbnRWaWV3LnRhYkluZm8oKTsKKyAgICAgICAgbGV0IHRhYkJhckl0ZW0gPSBuZXcgV2ViSW5z
cGVjdG9yLlRhYkJhckl0ZW0oaW1hZ2UsIHRpdGxlKTsKICAgICAgICAgdGFiQmFySXRlbS5pc0Rl
ZmF1bHRUYWIgPSB0cnVlOwogCiAgICAgICAgIHN1cGVyKGlkZW50aWZpZXIgfHwgIm5ldy10YWIi
LCAibmV3LXRhYiIsIHRhYkJhckl0ZW0pOwogCi0gICAgICAgIHZhciBhbGxvd2VkTmV3VGFicyA9
IFsKLSAgICAgICAgICAgIHtpbWFnZTogIkltYWdlcy9Db25zb2xlLnN2ZyIsIHRpdGxlOiBXZWJJ
bnNwZWN0b3IuVUlTdHJpbmcoIkNvbnNvbGUiKSwgdHlwZTogV2ViSW5zcGVjdG9yLkNvbnNvbGVU
YWJDb250ZW50Vmlldy5UeXBlfSwKLSAgICAgICAgICAgIHtpbWFnZTogIkltYWdlcy9EZWJ1Z2dl
ci5zdmciLCB0aXRsZTogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJEZWJ1Z2dlciIpLCB0eXBlOiBX
ZWJJbnNwZWN0b3IuRGVidWdnZXJUYWJDb250ZW50Vmlldy5UeXBlfSwKLSAgICAgICAgICAgIHtp
bWFnZTogIkltYWdlcy9FbGVtZW50cy5zdmciLCB0aXRsZTogV2ViSW5zcGVjdG9yLlVJU3RyaW5n
KCJFbGVtZW50cyIpLCB0eXBlOiBXZWJJbnNwZWN0b3IuRWxlbWVudHNUYWJDb250ZW50Vmlldy5U
eXBlfSwKLSAgICAgICAgICAgIHtpbWFnZTogIkltYWdlcy9OZXR3b3JrLnN2ZyIsIHRpdGxlOiBX
ZWJJbnNwZWN0b3IuVUlTdHJpbmcoIk5ldHdvcmsiKSwgdHlwZTogV2ViSW5zcGVjdG9yLk5ldHdv
cmtUYWJDb250ZW50Vmlldy5UeXBlfSwKLSAgICAgICAgICAgIHtpbWFnZTogIkltYWdlcy9SZXNv
dXJjZXMuc3ZnIiwgdGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiUmVzb3VyY2VzIiksIHR5
cGU6IFdlYkluc3BlY3Rvci5SZXNvdXJjZXNUYWJDb250ZW50Vmlldy5UeXBlfSwKLSAgICAgICAg
ICAgIHtpbWFnZTogIkltYWdlcy9TdG9yYWdlLnN2ZyIsIHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlT
dHJpbmcoIlN0b3JhZ2UiKSwgdHlwZTogV2ViSW5zcGVjdG9yLlN0b3JhZ2VUYWJDb250ZW50Vmll
dy5UeXBlfSwKLSAgICAgICAgICAgIHtpbWFnZTogIkltYWdlcy9UaW1lbGluZS5zdmciLCB0aXRs
ZTogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJUaW1lbGluZXMiKSwgdHlwZTogV2ViSW5zcGVjdG9y
LlRpbWVsaW5lVGFiQ29udGVudFZpZXcuVHlwZX0KLSAgICAgICAgXTsKKyAgICAgICAgV2ViSW5z
cGVjdG9yLm5vdGlmaWNhdGlvbnMuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuTm90aWZp
Y2F0aW9uLlRhYlR5cGVzQ2hhbmdlZCwgdGhpcy5fdXBkYXRlU2hvd25UYWJzLmJpbmQodGhpcykp
OwogCi0gICAgICAgIGFsbG93ZWROZXdUYWJzLnNvcnQoZnVuY3Rpb24oYSwgYikgeyByZXR1cm4g
YS50aXRsZS5sb2NhbGVDb21wYXJlKGIudGl0bGUpOyB9KTsKLQotICAgICAgICBmb3IgKHZhciBp
bmZvIG9mIGFsbG93ZWROZXdUYWJzKSB7Ci0gICAgICAgICAgICBpZiAoIVdlYkluc3BlY3Rvci5p
c1RhYlR5cGVBbGxvd2VkKGluZm8udHlwZSkpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0K
LSAgICAgICAgICAgIHZhciB0YWJJdGVtRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
ImRpdiIpOwotICAgICAgICAgICAgdGFiSXRlbUVsZW1lbnQuY2xhc3NMaXN0LmFkZChXZWJJbnNw
ZWN0b3IuTmV3VGFiQ29udGVudFZpZXcuVGFiSXRlbVN0eWxlQ2xhc3NOYW1lKTsKLSAgICAgICAg
ICAgIHRhYkl0ZW1FbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5fY3JlYXRl
TmV3VGFiV2l0aFR5cGUuYmluZCh0aGlzLCBpbmZvLnR5cGUpKTsKLSAgICAgICAgICAgIHRhYkl0
ZW1FbGVtZW50W1dlYkluc3BlY3Rvci5OZXdUYWJDb250ZW50Vmlldy5UeXBlU3ltYm9sXSA9IGlu
Zm8udHlwZTsKLQotICAgICAgICAgICAgdmFyIGJveEVsZW1lbnQgPSB0YWJJdGVtRWxlbWVudC5h
cHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSk7Ci0gICAgICAgICAgICBi
b3hFbGVtZW50LmNsYXNzTGlzdC5hZGQoImJveCIpOworICAgICAgICB0aGlzLl90YWJFbGVtZW50
c0J5VGFiQ2xhc3MgPSBuZXcgTWFwOworICAgICAgICB0aGlzLl91cGRhdGVTaG93blRhYnMoKTsK
KyAgICB9CiAKLSAgICAgICAgICAgIHZhciBpbWFnZUVsZW1lbnQgPSBib3hFbGVtZW50LmFwcGVu
ZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImltZyIpKTsKLSAgICAgICAgICAgIGltYWdl
RWxlbWVudC5zcmMgPSBpbmZvLmltYWdlOworICAgIC8vIFB1YmxpYwogCi0gICAgICAgICAgICB2
YXIgbGFiZWxFbGVtZW50ID0gdGFiSXRlbUVsZW1lbnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgibGFiZWwiKSk7Ci0gICAgICAgICAgICBsYWJlbEVsZW1lbnQudGV4dENvbnRl
bnQgPSBpbmZvLnRpdGxlOworICAgIHN0YXRpYyB0YWJJbmZvKCkKKyAgICB7CisgICAgICAgIHJl
dHVybiB7CisgICAgICAgICAgICBpbWFnZTogIkltYWdlcy9OZXdUYWIuc3ZnIiwKKyAgICAgICAg
ICAgIHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIk5ldyBUYWIiKSwKKyAgICAgICAgfTsK
KyAgICB9CiAKLSAgICAgICAgICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZCh0YWJJdGVtRWxl
bWVudCk7Ci0gICAgICAgIH0KKyAgICBzdGF0aWMgaXNFcGhlbWVyYWwoKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgLy8gUHVibGljCisgICAgc3RhdGljIHNob3Vs
ZFNhdmVUYWIoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KIAogICAgIGdl
dCB0eXBlKCkKICAgICB7CkBAIC05Myw5ICs4NCwzMiBAQCBXZWJJbnNwZWN0b3IuTmV3VGFiQ29u
dGVudFZpZXcgPSBjbGFzcyBOZXdUYWJDb250ZW50VmlldyBleHRlbmRzIFdlYkluc3BlY3Rvci5U
YQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgZ2V0IHRhYkl0ZW1FbGVtZW50
cygpCisgICAgbGF5b3V0KCkKICAgICB7Ci0gICAgICAgIHJldHVybiBBcnJheS5mcm9tKHRoaXMu
ZWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCIuIiArIFdlYkluc3BlY3Rvci5OZXdUYWJDb250ZW50
Vmlldy5UYWJJdGVtU3R5bGVDbGFzc05hbWUpKTsKKyAgICAgICAgdGhpcy5fdGFiRWxlbWVudHNC
eVRhYkNsYXNzLmNsZWFyKCk7CisgICAgICAgIHRoaXMuZWxlbWVudC5yZW1vdmVDaGlsZHJlbigp
OworCisgICAgICAgIGZvciAobGV0IHRhYkNsYXNzIG9mIHRoaXMuX3Nob3duVGFiQ2xhc3Nlcykg
eworICAgICAgICAgICAgbGV0IHRhYkl0ZW1FbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgiZGl2Iik7CisgICAgICAgICAgICB0YWJJdGVtRWxlbWVudC5jbGFzc0xpc3QuYWRkKCJ0YWIt
aXRlbSIpOworICAgICAgICAgICAgdGFiSXRlbUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY2xp
Y2siLCB0aGlzLl9jcmVhdGVOZXdUYWJXaXRoVHlwZS5iaW5kKHRoaXMsIHRhYkNsYXNzLlR5cGUp
KTsKKyAgICAgICAgICAgIHRhYkl0ZW1FbGVtZW50W1dlYkluc3BlY3Rvci5OZXdUYWJDb250ZW50
Vmlldy5UeXBlU3ltYm9sXSA9IHRhYkNsYXNzLlR5cGU7CisKKyAgICAgICAgICAgIGxldCBib3hF
bGVtZW50ID0gdGFiSXRlbUVsZW1lbnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgiZGl2IikpOworICAgICAgICAgICAgYm94RWxlbWVudC5jbGFzc0xpc3QuYWRkKCJib3giKTsK
KworICAgICAgICAgICAgbGV0IGluZm8gPSB0YWJDbGFzcy50YWJJbmZvKCk7CisgICAgICAgICAg
ICBsZXQgaW1hZ2VFbGVtZW50ID0gYm94RWxlbWVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJpbWciKSk7CisgICAgICAgICAgICBpbWFnZUVsZW1lbnQuc3JjID0gaW5mby5p
bWFnZTsKKworICAgICAgICAgICAgbGV0IGxhYmVsRWxlbWVudCA9IHRhYkl0ZW1FbGVtZW50LmFw
cGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImxhYmVsIikpOworICAgICAgICAgICAg
bGFiZWxFbGVtZW50LnRleHRDb250ZW50ID0gaW5mby50aXRsZTsKKworICAgICAgICAgICAgdGhp
cy5lbGVtZW50LmFwcGVuZENoaWxkKHRhYkl0ZW1FbGVtZW50KTsKKyAgICAgICAgICAgIHRoaXMu
X3RhYkVsZW1lbnRzQnlUYWJDbGFzcy5zZXQodGFiQ2xhc3MsIHRhYkl0ZW1FbGVtZW50KTsKKyAg
ICAgICAgfQorCisgICAgICAgIHRoaXMuX3VwZGF0ZVRhYkl0ZW1zKCk7CiAgICAgfQogCiAgICAg
Ly8gUHJpdmF0ZQpAQCAtMTE0LDE5ICsxMjgsMzEgQEAgV2ViSW5zcGVjdG9yLk5ld1RhYkNvbnRl
bnRWaWV3ID0gY2xhc3MgTmV3VGFiQ29udGVudFZpZXcgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuVGEK
ICAgICAgICAgV2ViSW5zcGVjdG9yLmNyZWF0ZU5ld1RhYldpdGhUeXBlKHRhYlR5cGUsIG9wdGlv
bnMpOwogICAgIH0KIAorICAgIF91cGRhdGVTaG93blRhYnMoKQorICAgIHsKKyAgICAgICAgbGV0
IGFsbFRhYkNsYXNzZXMgPSBbLi4uV2ViSW5zcGVjdG9yLmtub3duVGFiQ2xhc3NlcygpXTsKKyAg
ICAgICAgbGV0IGFsbG93ZWRUYWJDbGFzc2VzID0gYWxsVGFiQ2xhc3Nlcy5maWx0ZXIoKHRhYkNs
YXNzKSA9PiB0YWJDbGFzcy5pc1RhYkFsbG93ZWQoKSAmJiAhdGFiQ2xhc3MuaXNFcGhlbWVyYWwo
KSk7CisgICAgICAgIGFsbG93ZWRUYWJDbGFzc2VzLnNvcnQoZnVuY3Rpb24oYSwgYikgeworICAg
ICAgICAgICAgcmV0dXJuIGEudGFiSW5mbygpLnRpdGxlLmxvY2FsZUNvbXBhcmUoYi50YWJJbmZv
KCkudGl0bGUpOworICAgICAgICB9KTsKKworICAgICAgICBpZiAoT2JqZWN0LnNoYWxsb3dFcXVh
bCh0aGlzLl9zaG93blRhYkNsYXNzZXMsIGFsbG93ZWRUYWJDbGFzc2VzKSkKKyAgICAgICAgICAg
IHJldHVybjsKKworICAgICAgICB0aGlzLl9zaG93blRhYkNsYXNzZXMgPSBhbGxvd2VkVGFiQ2xh
c3NlczsKKyAgICAgICAgdGhpcy5uZWVkc0xheW91dCgpOworICAgIH0KKwogICAgIF9hbGxvd2Fi
bGVUYWJUeXBlcygpCiAgICAgewotICAgICAgICBsZXQgdGFiSXRlbUVsZW1lbnRzID0gdGhpcy50
YWJJdGVtRWxlbWVudHM7Ci0gICAgICAgIGxldCB0YWJUeXBlcyA9IHRhYkl0ZW1FbGVtZW50cy5t
YXAoKHRhYkl0ZW1FbGVtZW50KSA9PiB0YWJJdGVtRWxlbWVudFtXZWJJbnNwZWN0b3IuTmV3VGFi
Q29udGVudFZpZXcuVHlwZVN5bWJvbF0pOworICAgICAgICBsZXQgdGFiVHlwZXMgPSB0aGlzLl9z
aG93blRhYkNsYXNzZXMubWFwKCh0YWJDbGFzcykgPT4gdGFiQ2xhc3MuVHlwZSk7CiAgICAgICAg
IHJldHVybiB0YWJUeXBlcy5maWx0ZXIoKHR5cGUpID0+IFdlYkluc3BlY3Rvci5pc05ld1RhYldp
dGhUeXBlQWxsb3dlZCh0eXBlKSk7CiAgICAgfQogCiAgICAgX3VwZGF0ZVRhYkl0ZW1zKCkKICAg
ICB7Ci0gICAgICAgIGxldCB0YWJJdGVtRWxlbWVudHMgPSB0aGlzLnRhYkl0ZW1FbGVtZW50czsK
LSAgICAgICAgZm9yIChsZXQgdGFiSXRlbUVsZW1lbnQgb2YgdGFiSXRlbUVsZW1lbnRzKSB7Ci0g
ICAgICAgICAgICBsZXQgdHlwZSA9IHRhYkl0ZW1FbGVtZW50W1dlYkluc3BlY3Rvci5OZXdUYWJD
b250ZW50Vmlldy5UeXBlU3ltYm9sXTsKLSAgICAgICAgICAgIGxldCBhbGxvd2VkID0gV2ViSW5z
cGVjdG9yLmlzTmV3VGFiV2l0aFR5cGVBbGxvd2VkKHR5cGUpOworICAgICAgICBmb3IgKGxldCBb
dGFiQ2xhc3MsIHRhYkl0ZW1FbGVtZW50XSBvZiB0aGlzLl90YWJFbGVtZW50c0J5VGFiQ2xhc3Mu
ZW50cmllcygpKSB7CisgICAgICAgICAgICBsZXQgYWxsb3dlZCA9IFdlYkluc3BlY3Rvci5pc05l
d1RhYldpdGhUeXBlQWxsb3dlZCh0YWJDbGFzcy5UeXBlKTsKICAgICAgICAgICAgIHRhYkl0ZW1F
bGVtZW50LmNsYXNzTGlzdC50b2dnbGUoV2ViSW5zcGVjdG9yLk5ld1RhYkNvbnRlbnRWaWV3LkRp
c2FibGVkU3R5bGVDbGFzc05hbWUsICFhbGxvd2VkKTsKICAgICAgICAgfQogICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Jlc291cmNl
c1RhYkNvbnRlbnRWaWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvUmVzb3VyY2VzVGFiQ29udGVudFZpZXcuanMKaW5kZXggMWRhYjU3ZGI3NDY0YmUwMDIz
NjNlYWI3Yzk0YThhZmNkOWFmZjYwNy4uODgxMjc2YzU4ZTAyNzI5NDNjNzY2MmI0YWMzMmU5MmZj
YmRlYmZmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvUmVzb3VyY2VzVGFiQ29udGVudFZpZXcuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUmVzb3VyY2VzVGFiQ29udGVudFZpZXcuanMKQEAgLTI3
LDggKzI3LDkgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlc1RhYkNvbnRlbnRWaWV3ID0gY2xhc3Mg
UmVzb3VyY2VzVGFiQ29udGVudFZpZXcgZXh0ZW5kcyBXZWIKIHsKICAgICBjb25zdHJ1Y3Rvcihp
ZGVudGlmaWVyKQogICAgIHsKLSAgICAgICAgdmFyIHRhYkJhckl0ZW0gPSBuZXcgV2ViSW5zcGVj
dG9yLlRhYkJhckl0ZW0oIkltYWdlcy9SZXNvdXJjZXMuc3ZnIiwgV2ViSW5zcGVjdG9yLlVJU3Ry
aW5nKCJSZXNvdXJjZXMiKSk7Ci0gICAgICAgIHZhciBkZXRhaWxzU2lkZWJhclBhbmVscyA9IFtX
ZWJJbnNwZWN0b3IucmVzb3VyY2VEZXRhaWxzU2lkZWJhclBhbmVsLCBXZWJJbnNwZWN0b3IucHJv
YmVEZXRhaWxzU2lkZWJhclBhbmVsXTsKKyAgICAgICAgbGV0IHtpbWFnZSwgdGl0bGV9ID0gV2Vi
SW5zcGVjdG9yLlJlc291cmNlc1RhYkNvbnRlbnRWaWV3LnRhYkluZm8oKTsKKyAgICAgICAgbGV0
IHRhYkJhckl0ZW0gPSBuZXcgV2ViSW5zcGVjdG9yLlRhYkJhckl0ZW0oaW1hZ2UsIHRpdGxlKTsK
KyAgICAgICAgbGV0IGRldGFpbHNTaWRlYmFyUGFuZWxzID0gW1dlYkluc3BlY3Rvci5yZXNvdXJj
ZURldGFpbHNTaWRlYmFyUGFuZWwsIFdlYkluc3BlY3Rvci5wcm9iZURldGFpbHNTaWRlYmFyUGFu
ZWxdOwogCiAgICAgICAgIC8vIEZJWE1FOiBVbnRpbCBDb250ZW50Rmxvd3MgYXJlIG1vdmVkIHRv
IHRoZSBFbGVtZW50cyB0YWIsIHRoZXNlIGRldGFpbHMgc2lkZWJhciBwYW5lbHMgbmVlZCB0byBi
ZSBpbmNsdWRlZC4KICAgICAgICAgZGV0YWlsc1NpZGViYXJQYW5lbHMgPSBkZXRhaWxzU2lkZWJh
clBhbmVscy5jb25jYXQoW1dlYkluc3BlY3Rvci5kb21Ob2RlRGV0YWlsc1NpZGViYXJQYW5lbCwg
V2ViSW5zcGVjdG9yLmNzc1N0eWxlRGV0YWlsc1NpZGViYXJQYW5lbF0pOwpAQCAtNDAsNiArNDEs
MTQgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlc1RhYkNvbnRlbnRWaWV3ID0gY2xhc3MgUmVzb3Vy
Y2VzVGFiQ29udGVudFZpZXcgZXh0ZW5kcyBXZWIKIAogICAgIC8vIFB1YmxpYwogCisgICAgc3Rh
dGljIHRhYkluZm8oKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHsKKyAgICAgICAgICAgIGltYWdl
OiAiSW1hZ2VzL1Jlc291cmNlcy5zdmciLAorICAgICAgICAgICAgdGl0bGU6IFdlYkluc3BlY3Rv
ci5VSVN0cmluZygiUmVzb3VyY2VzIiksCisgICAgICAgIH07CisgICAgfQorCiAgICAgZ2V0IHR5
cGUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5SZXNvdXJjZXNUYWJDb250
ZW50Vmlldy5UeXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvU2VhcmNoVGFiQ29udGVudFZpZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9TZWFyY2hUYWJDb250ZW50Vmlldy5qcwppbmRleCA0ZTc2
MTk0MjFkMWQ3ZjYxOGExYjM3YmU0NTMwY2FiZmNiMTQ5ZTQ1Li5kNTA1NTMwZDE2MDg5Zjg1MWVh
ZWRkMjIxNjEzNTIxOWI0N2M3NDFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9TZWFyY2hUYWJDb250ZW50Vmlldy5qcworKysgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TZWFyY2hUYWJDb250ZW50Vmlldy5q
cwpAQCAtMjcsOCArMjcsOSBAQCBXZWJJbnNwZWN0b3IuU2VhcmNoVGFiQ29udGVudFZpZXcgPSBj
bGFzcyBTZWFyY2hUYWJDb250ZW50VmlldyBleHRlbmRzIFdlYkluc3BlYwogewogICAgIGNvbnN0
cnVjdG9yKGlkZW50aWZpZXIpCiAgICAgewotICAgICAgICB2YXIgdGFiQmFySXRlbSA9IG5ldyBX
ZWJJbnNwZWN0b3IuVGFiQmFySXRlbSgiSW1hZ2VzL1NlYXJjaFJlc3VsdHMuc3ZnIiwgV2ViSW5z
cGVjdG9yLlVJU3RyaW5nKCJTZWFyY2giKSk7Ci0gICAgICAgIHZhciBkZXRhaWxzU2lkZWJhclBh
bmVscyA9IFtXZWJJbnNwZWN0b3IucmVzb3VyY2VEZXRhaWxzU2lkZWJhclBhbmVsLCBXZWJJbnNw
ZWN0b3IucHJvYmVEZXRhaWxzU2lkZWJhclBhbmVsLAorICAgICAgICBsZXQge2ltYWdlLCB0aXRs
ZX0gPSBXZWJJbnNwZWN0b3IuU2VhcmNoVGFiQ29udGVudFZpZXcudGFiSW5mbygpOworICAgICAg
ICBsZXQgdGFiQmFySXRlbSA9IG5ldyBXZWJJbnNwZWN0b3IuVGFiQmFySXRlbShpbWFnZSwgdGl0
bGUpOworICAgICAgICBsZXQgZGV0YWlsc1NpZGViYXJQYW5lbHMgPSBbV2ViSW5zcGVjdG9yLnJl
c291cmNlRGV0YWlsc1NpZGViYXJQYW5lbCwgV2ViSW5zcGVjdG9yLnByb2JlRGV0YWlsc1NpZGVi
YXJQYW5lbCwKICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5kb21Ob2RlRGV0YWlsc1NpZGViYXJQ
YW5lbCwgV2ViSW5zcGVjdG9yLmNzc1N0eWxlRGV0YWlsc1NpZGViYXJQYW5lbF07CiAKICAgICAg
ICAgaWYgKFdlYkluc3BlY3Rvci5sYXllclRyZWVEZXRhaWxzU2lkZWJhclBhbmVsKQpAQCAtMzks
NiArNDAsMTkgQEAgV2ViSW5zcGVjdG9yLlNlYXJjaFRhYkNvbnRlbnRWaWV3ID0gY2xhc3MgU2Vh
cmNoVGFiQ29udGVudFZpZXcgZXh0ZW5kcyBXZWJJbnNwZWMKIAogICAgIC8vIFB1YmxpYwogCisg
ICAgc3RhdGljIHRhYkluZm8oKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHsKKyAgICAgICAgICAg
IGltYWdlOiAiSW1hZ2VzL1NlYXJjaFJlc3VsdHMuc3ZnIiwKKyAgICAgICAgICAgIHRpdGxlOiBX
ZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlNlYXJjaCIpLAorICAgICAgICB9OworICAgIH0KKworICAg
IHN0YXRpYyBpc0VwaGVtZXJhbCgpCisgICAgeworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9
CisKICAgICBnZXQgdHlwZSgpCiAgICAgewogICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLlNl
YXJjaFRhYkNvbnRlbnRWaWV3LlR5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9TZXR0aW5nc1RhYkNvbnRlbnRWaWV3LmpzIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU2V0dGluZ3NUYWJDb250ZW50Vmll
dy5qcwppbmRleCA4OGE2ZTBhZWE2MmY4MDQ5MmFhN2Y1Y2I3ZjM1NDY3M2FkYjkwYjA5Li4xNzc5
ZDVmYmE5MzY1ZDczNWU3NGMzNzkxNzdmMjIwMmNkMWRkNTQwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TZXR0aW5nc1RhYkNvbnRlbnRWaWV3
LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NldHRp
bmdzVGFiQ29udGVudFZpZXcuanMKQEAgLTM0LDYgKzM0LDE3IEBAIFdlYkluc3BlY3Rvci5TZXR0
aW5nc1RhYkNvbnRlbnRWaWV3ID0gY2xhc3MgU2V0dGluZ3NUYWJDb250ZW50VmlldyBleHRlbmRz
IFdlYkluCiAKICAgICAvLyBQdWJsaWMKIAorICAgIHN0YXRpYyBpc1RhYkFsbG93ZWQoKQorICAg
IHsKKyAgICAgICAgLy8gRklYTUUgKDE0OTI4NCk6IFRoaXMgdGFiIGlzbid0IHJlYWR5IHRvIGJl
IHNob3duIHlldC4KKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHN0YXRpYyBz
aG91bGRTYXZlVGFiKCkKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKICAg
ICBnZXQgdHlwZSgpCiAgICAgewogICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLlNldHRpbmdz
VGFiQ29udGVudFZpZXcuVHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL1N0b3JhZ2VUYWJDb250ZW50Vmlldy5qcyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1N0b3JhZ2VUYWJDb250ZW50Vmlldy5qcwpp
bmRleCAzMWU1MzZmMjMwYjE5MjRkMjY0YjNmMzc2NGE4NmZhOTUwZmEyY2JhLi5kOGVjMjk3MTBj
Y2QyYjE1ZDc1OTFjNmIyNTJkMjAwYzk2MTZmYzRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TdG9yYWdlVGFiQ29udGVudFZpZXcuanMKKysr
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU3RvcmFnZVRhYkNv
bnRlbnRWaWV3LmpzCkBAIC0yNywxNCArMjcsMjggQEAgV2ViSW5zcGVjdG9yLlN0b3JhZ2VUYWJD
b250ZW50VmlldyA9IGNsYXNzIFN0b3JhZ2VUYWJDb250ZW50VmlldyBleHRlbmRzIFdlYkluc3AK
IHsKICAgICBjb25zdHJ1Y3RvcihpZGVudGlmaWVyKQogICAgIHsKLSAgICAgICAgdmFyIHRhYkJh
ckl0ZW0gPSBuZXcgV2ViSW5zcGVjdG9yLlRhYkJhckl0ZW0oIkltYWdlcy9TdG9yYWdlLnN2ZyIs
IFdlYkluc3BlY3Rvci5VSVN0cmluZygiU3RvcmFnZSIpKTsKLSAgICAgICAgdmFyIGRldGFpbHNT
aWRlYmFyUGFuZWxzID0gW1dlYkluc3BlY3Rvci5hcHBsaWNhdGlvbkNhY2hlRGV0YWlsc1NpZGVi
YXJQYW5lbF07CisgICAgICAgIGxldCB7aW1hZ2UsIHRpdGxlfSA9IFdlYkluc3BlY3Rvci5TdG9y
YWdlVGFiQ29udGVudFZpZXcudGFiSW5mbygpOworICAgICAgICBsZXQgdGFiQmFySXRlbSA9IG5l
dyBXZWJJbnNwZWN0b3IuVGFiQmFySXRlbShpbWFnZSwgdGl0bGUpOworICAgICAgICBsZXQgZGV0
YWlsc1NpZGViYXJQYW5lbHMgPSBbV2ViSW5zcGVjdG9yLmFwcGxpY2F0aW9uQ2FjaGVEZXRhaWxz
U2lkZWJhclBhbmVsXTsKIAogICAgICAgICBzdXBlcihpZGVudGlmaWVyIHx8ICJzdG9yYWdlIiwg
InN0b3JhZ2UiLCB0YWJCYXJJdGVtLCBXZWJJbnNwZWN0b3IuU3RvcmFnZVNpZGViYXJQYW5lbCwg
ZGV0YWlsc1NpZGViYXJQYW5lbHMpOwogICAgIH0KIAogICAgIC8vIFB1YmxpYwogCisgICAgc3Rh
dGljIHRhYkluZm8oKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHsKKyAgICAgICAgICAgIGltYWdl
OiAiSW1hZ2VzL1N0b3JhZ2Uuc3ZnIiwKKyAgICAgICAgICAgIHRpdGxlOiBXZWJJbnNwZWN0b3Iu
VUlTdHJpbmcoIlN0b3JhZ2UiKSwKKyAgICAgICAgfTsKKyAgICB9CisKKyAgICBzdGF0aWMgaXNU
YWJBbGxvd2VkKCkKKyAgICB7CisgICAgICAgIHJldHVybiAhIXdpbmRvdy5ET01TdG9yYWdlQWdl
bnQgfHwgISF3aW5kb3cuRGF0YWJhc2VBZ2VudCB8fCAhIXdpbmRvdy5JbmRleGVkREJBZ2VudDsK
KyAgICB9CisKICAgICBnZXQgdHlwZSgpCiAgICAgewogICAgICAgICByZXR1cm4gV2ViSW5zcGVj
dG9yLlN0b3JhZ2VUYWJDb250ZW50Vmlldy5UeXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGFiQ29udGVudFZpZXcuanMgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UYWJDb250ZW50Vmlldy5qcwppbmRl
eCA5MTI5NmVhOGM5ZTU1YTBjZjdlYjliMjY0YjM0OWQ1ZGYxNTQ0M2UyLi4xZjIxZTk2NmZhYTY1
MGNlNmRkOTYyNjE0MDU4ZmQyMTQxNDUwNjFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UYWJDb250ZW50Vmlldy5qcworKysgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UYWJDb250ZW50Vmlldy5qcwpAQCAt
NTcsNiArNTcsMjQgQEAgV2ViSW5zcGVjdG9yLlRhYkNvbnRlbnRWaWV3ID0gY2xhc3MgVGFiQ29u
dGVudFZpZXcgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuQ29udGVudFYKIAogICAgIC8vIFB1YmxpYwog
CisgICAgc3RhdGljIGlzVGFiQWxsb3dlZCgpCisgICAgeworICAgICAgICAvLyBSZXR1cm5zIGZh
bHNlIGlmIGEgbmVjZXNzYXJ5IGRvbWFpbiBvciBvdGhlciBmZWF0dXJlcyBhcmUgdW5hdmFpbGFi
bGUuCisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIHN0YXRpYyBpc0VwaGVtZXJh
bCgpCisgICAgeworICAgICAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIHRhYiBzaG91bGQgbm90
IGJlIHNob3duIGluIHRoZSBuZXcgdGFiIGNvbnRlbnQgdmlldy4KKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIH0KKworICAgIHN0YXRpYyBzaG91bGRTYXZlVGFiKCkKKyAgICB7CisgICAgICAg
IC8vIFJldHVybnMgZmFsc2UgaWYgdGhlIHRhYiBzaG91bGQgbm90IGJlIHJlc3RvcmVkIHdoZW4g
cmUtb3BlbmluZyB0aGUgSW5zcGVjdG9yLgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisK
ICAgICBnZXQgdHlwZSgpCiAgICAgewogICAgICAgICAvLyBJbXBsZW1lbnRlZCBieSBzdWJjbGFz
c2VzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvVGltZWxpbmVUYWJDb250ZW50Vmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL1RpbWVsaW5lVGFiQ29udGVudFZpZXcuanMKaW5kZXggNzQ2OGQ0NTk5
YzAyMTQ2MTVjYjY0ZTY4MzZlM2IyMGVmNTVhYzBhZC4uNzIxZGZiMjg2NTkyMjgyMmRjZWJiOWIw
MzhjM2ZkYWI5MTg0OTVmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvVGltZWxpbmVUYWJDb250ZW50Vmlldy5qcworKysgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UaW1lbGluZVRhYkNvbnRlbnRWaWV3Lmpz
CkBAIC0yNywxNCArMjcsMjggQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lVGFiQ29udGVudFZpZXcg
PSBjbGFzcyBUaW1lbGluZVRhYkNvbnRlbnRWaWV3IGV4dGVuZHMgV2ViSW4KIHsKICAgICBjb25z
dHJ1Y3RvcihpZGVudGlmaWVyKQogICAgIHsKLSAgICAgICAgdmFyIHRhYkJhckl0ZW0gPSBuZXcg
V2ViSW5zcGVjdG9yLlRhYkJhckl0ZW0oIkltYWdlcy9UaW1lbGluZS5zdmciLCBXZWJJbnNwZWN0
b3IuVUlTdHJpbmcoIlRpbWVsaW5lcyIpKTsKLSAgICAgICAgdmFyIGRldGFpbHNTaWRlYmFyUGFu
ZWxzID0gW1dlYkluc3BlY3Rvci5yZXNvdXJjZURldGFpbHNTaWRlYmFyUGFuZWwsIFdlYkluc3Bl
Y3Rvci5wcm9iZURldGFpbHNTaWRlYmFyUGFuZWxdOworICAgICAgICBsZXQge2ltYWdlLCB0aXRs
ZX0gPSBXZWJJbnNwZWN0b3IuVGltZWxpbmVUYWJDb250ZW50Vmlldy50YWJJbmZvKCk7CisgICAg
ICAgIGxldCB0YWJCYXJJdGVtID0gbmV3IFdlYkluc3BlY3Rvci5UYWJCYXJJdGVtKGltYWdlLCB0
aXRsZSk7CisgICAgICAgIGxldCBkZXRhaWxzU2lkZWJhclBhbmVscyA9IFtXZWJJbnNwZWN0b3Iu
cmVzb3VyY2VEZXRhaWxzU2lkZWJhclBhbmVsLCBXZWJJbnNwZWN0b3IucHJvYmVEZXRhaWxzU2lk
ZWJhclBhbmVsXTsKIAogICAgICAgICBzdXBlcihpZGVudGlmaWVyIHx8ICJ0aW1lbGluZSIsICJ0
aW1lbGluZSIsIHRhYkJhckl0ZW0sIFdlYkluc3BlY3Rvci5UaW1lbGluZVNpZGViYXJQYW5lbCwg
ZGV0YWlsc1NpZGViYXJQYW5lbHMpOwogICAgIH0KIAogICAgIC8vIFB1YmxpYwogCisgICAgc3Rh
dGljIHRhYkluZm8oKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHsKKyAgICAgICAgICAgIGltYWdl
OiAiSW1hZ2VzL1RpbWVsaW5lLnN2ZyIsCisgICAgICAgICAgICB0aXRsZTogV2ViSW5zcGVjdG9y
LlVJU3RyaW5nKCJUaW1lbGluZXMiKSwKKyAgICAgICAgfTsKKyAgICB9CisKKyAgICBzdGF0aWMg
aXNUYWJBbGxvd2VkKCkKKyAgICB7CisgICAgICAgIHJldHVybiAhIXdpbmRvdy5UaW1lbGluZUFn
ZW50OworICAgIH0KKwogICAgIGdldCB0eXBlKCkKICAgICB7CiAgICAgICAgIHJldHVybiBXZWJJ
bnNwZWN0b3IuVGltZWxpbmVUYWJDb250ZW50Vmlldy5UeXBlOwo=
</data>
<flag name="review"
          id="291171"
          type_id="1"
          status="+"
          setter="joepeck"
    />
          </attachment>
      

    </bug>

</bugzilla>