<?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>110866</bug_id>
          
          <creation_ts>2013-02-26 03:43:12 -0800</creation_ts>
          <short_desc>Web Inspector: Refactor AuditsPanel with AuditController as newly introduced entity</short_desc>
          <delta_ts>2013-02-27 07:13:54 -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 (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>103945</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Vivek Galatage">vivekg</reporter>
          <assigned_to name="Vivek Galatage">vivekg</assigned_to>
          <cc>apavlov</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>vsevik</cc>
    
    <cc>web-inspector-bugs</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>841853</commentid>
    <comment_count>0</comment_count>
    <who name="Vivek Galatage">vivekg</who>
    <bug_when>2013-02-26 03:43:12 -0800</bug_when>
    <thetext>AuditController is being introduced in order to follow MVC pattern with the Audits. This is the first step about the refactoring. 

Moving the methods from the AuditsPanel into AuditController would ease the event driven approach(to be added later) to de-couple the AuditsPanel and the AuditLauncherView.

Patch follows</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>841856</commentid>
    <comment_count>1</comment_count>
      <attachid>190253</attachid>
    <who name="Vivek Galatage">vivekg</who>
    <bug_when>2013-02-26 03:46:53 -0800</bug_when>
    <thetext>Created attachment 190253
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>841990</commentid>
    <comment_count>2</comment_count>
      <attachid>190253</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2013-02-26 07:43:47 -0800</bug_when>
    <thetext>Comment on attachment 190253
Patch

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

Barring the file patching for the new JS addition, looks good for a start.

&gt; Source/WebCore/ChangeLog:16
&gt; +        * inspector/front-end/AuditController.js: Added.

You forgot to patch WebCore.vcproj and compile-front-end.py for the new file.

&gt; Source/WebCore/inspector/front-end/AuditController.js:91
&gt; +        this._auditsPanel._auditFinishedCallback(mainResourceURL, results);

For the time being, you should remove the leading &apos;_&apos; from &quot;_auditFinishedCallback&quot;, since this denotes a file-private member. Hopefully, this will get removed altogether soon.

&gt; Source/WebCore/inspector/front-end/AuditLauncherView.js:160
&gt; +        this._auditController.initiateAudit(catIds, this._progressIndicator, this._auditPresentStateElement.checked, onAuditStarted.bind(this), this._setAuditRunning.bind(this, false));

These callbacks will go away once we migrate to the events.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>842615</commentid>
    <comment_count>3</comment_count>
      <attachid>190420</attachid>
    <who name="Vivek Galatage">vivekg</who>
    <bug_when>2013-02-26 19:31:08 -0800</bug_when>
    <thetext>Created attachment 190420
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>842624</commentid>
    <comment_count>4</comment_count>
    <who name="Vivek Galatage">vivekg</who>
    <bug_when>2013-02-26 19:36:53 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; Barring the file patching for the new JS addition, looks good for a start.
&gt; 

Thank you for the review. :)

&gt; &gt; Source/WebCore/ChangeLog:16
&gt; &gt; +        * inspector/front-end/AuditController.js: Added.
&gt; 
&gt; You forgot to patch WebCore.vcproj and compile-front-end.py for the new file.
&gt; 

Oh sure, forgot these ones. Done.

&gt; &gt; Source/WebCore/inspector/front-end/AuditController.js:91
&gt; &gt; +        this._auditsPanel._auditFinishedCallback(mainResourceURL, results);
&gt; 
&gt; For the time being, you should remove the leading &apos;_&apos; from &quot;_auditFinishedCallback&quot;, since this denotes a file-private member. Hopefully, this will get removed altogether soon.
&gt;

Modified the method to remove the leading &apos;_&apos;. Also modified the respective extension test which sniffs for this method.
 
&gt; &gt; Source/WebCore/inspector/front-end/AuditLauncherView.js:160
&gt; &gt; +        this._auditController.initiateAudit(catIds, this._progressIndicator, this._auditPresentStateElement.checked, onAuditStarted.bind(this), this._setAuditRunning.bind(this, false));
&gt; 
&gt; These callbacks will go away once we migrate to the events.

Yes with the events, every callback in controller should disappear.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>842993</commentid>
    <comment_count>5</comment_count>
      <attachid>190420</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2013-02-27 06:18:52 -0800</bug_when>
    <thetext>Comment on attachment 190420
Patch

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

Once the JSDoc is added, we are good to land.

&gt; Source/WebCore/inspector/front-end/AuditController.js:128
&gt; +    _reloadResources: function(callback)

Please add a JSDoc:

/**
 * @param {function()=} callback
 */</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>843006</commentid>
    <comment_count>6</comment_count>
      <attachid>190510</attachid>
    <who name="Vivek Galatage">vivekg</who>
    <bug_when>2013-02-27 06:31:37 -0800</bug_when>
    <thetext>Created attachment 190510
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>843031</commentid>
    <comment_count>7</comment_count>
      <attachid>190510</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-27 07:13:51 -0800</bug_when>
    <thetext>Comment on attachment 190510
Patch

Clearing flags on attachment: 190510

Committed r144182: &lt;http://trac.webkit.org/changeset/144182&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>843032</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-27 07:13:54 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>190253</attachid>
            <date>2013-02-26 03:46:53 -0800</date>
            <delta_ts>2013-02-26 19:31:02 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-110866-20130226171413.patch</filename>
            <type>text/plain</type>
            <size>15767</size>
            <attacher name="Vivek Galatage">vivekg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ0MDI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjBhZDg1OGMxZTAyMjdi
NmYzNmEyNzI3NzZmYTYwNWNkYzNkZTFhNS4uMTQwMjE4NmJkNTc2YzkwMzQ5ZDdkYzA4MmUxYWUz
OGVkMGVjMDAwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDEzLTAyLTI2ICBWaXZl
ayBHYWxhdGFnZSAgPHZpdmVrLnZnQHNhbXN1bmcuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IFJlZmFjdG9yIEF1ZGl0c1BhbmVsIHdpdGggQXVkaXRDb250cm9sbGVyIGFzIG5ld2x5IGlu
dHJvZHVjZWQgZW50aXR5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMTA4NjYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBBdWRpdENvbnRyb2xsZXIgaXMgYmVpbmcgaW50cm9kdWNlZCBpbiBvcmRlciB0byBm
b2xsb3cgTVZDIHBhdHRlcm4gd2l0aCB0aGUgQXVkaXRzLgorICAgICAgICBUaGlzIGlzIHRoZSBm
aXJzdCBzdGVwIGFib3V0IHRoZSByZWZhY3RvcmluZy4gTW92aW5nIHRoZSBtZXRob2RzIGZyb20g
dGhlIEF1ZGl0c1BhbmVsCisgICAgICAgIGludG8gQXVkaXRDb250cm9sbGVyIHdvdWxkIGVhc2Ug
dGhlIGV2ZW50IGRyaXZlbiBhcHByb2FjaCB0byBkZS1jb3VwbGUgdGhlIEF1ZGl0c1BhbmVsCisg
ICAgICAgIGFuZCB0aGUgQXVkaXRMYXVuY2hlclZpZXcuCisKKyAgICAgICAgTm8gbmV3IHRlc3Rz
IGFzIGNvZGUgcmVmYWN0b3JpbmcuCisKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAg
ICogaW5zcGVjdG9yL2Zyb250LWVuZC9BdWRpdENvbnRyb2xsZXIuanM6IEFkZGVkLgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLkF1ZGl0Q29udHJvbGxlcik6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
QXVkaXRDb250cm9sbGVyLnByb3RvdHlwZS5ydWxlUmVzdWx0UmVhZHlDYWxsYmFjayk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuQXVkaXRDb250cm9sbGVyLnByb3RvdHlwZS5jYXRlZ29yeURvbmVD
YWxsYmFjayk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQXVkaXRDb250cm9sbGVyLnByb3RvdHlw
ZS5fZXhlY3V0ZUF1ZGl0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5BdWRpdENvbnRyb2xsZXIu
cHJvdG90eXBlLl9hdWRpdEZpbmlzaGVkQ2FsbGJhY2spOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkF1ZGl0Q29udHJvbGxlci5wcm90b3R5cGUuc3RhcnRBdWRpdFdoZW5SZXNvdXJjZXNSZWFkeSk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuQXVkaXRDb250cm9sbGVyLnByb3RvdHlwZS5pbml0aWF0
ZUF1ZGl0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5BdWRpdENvbnRyb2xsZXIucHJvdG90eXBl
Ll9yZWxvYWRSZXNvdXJjZXMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkF1ZGl0Q29udHJvbGxl
ci5wcm90b3R5cGUuX2RpZE1haW5SZXNvdXJjZUxvYWQpOgorICAgICAgICAqIGluc3BlY3Rvci9m
cm9udC1lbmQvQXVkaXRMYXVuY2hlclZpZXcuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQXVk
aXRMYXVuY2hlclZpZXcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkF1ZGl0TGF1bmNoZXJWaWV3
LnByb3RvdHlwZS5fc3RhcnRBdWRpdCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9B
dWRpdHNQYW5lbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5BdWRpdHNQYW5lbCk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuQXVkaXRzUGFuZWwucHJvdG90eXBlLl9hdWRpdEZpbmlzaGVkQ2Fs
bGJhY2spOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvV2ViS2l0LnFyYzoKKwogMjAx
My0wMi0yNiAgQWxleGFuZGVyIFBhdmxvdiAgPGFwYXZsb3ZAY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIFdlYiBJbnNwZWN0b3I6IENTU0FnZW50LnNldFN0eWxlU2hlZXRUZXh0IGNyYXNoZXMgb24g
aW5saW5lIHN0eWxlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IGVhMDRjODcyNWFiMDNmM2E4Mjc5OThm
ZjY3YWM1ZWQxNjJkYTBmNGIuLmUzMzI2NjQwNzVmZTFjZmE4NTQyM2FhZTAxMDYwNzBjZjBiOGI3
MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTU0NTMsNiArNTQ1Myw3IEBACiAKICAgICAgICAgJ3dl
Ymluc3BlY3Rvcl9hdWRpdHNfanNfZmlsZXMnOiBbCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zy
b250LWVuZC9BdWRpdENhdGVnb3JpZXMuanMnLAorICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9u
dC1lbmQvQXVkaXRDb250cm9sbGVyLmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQt
ZW5kL0F1ZGl0Rm9ybWF0dGVycy5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVu
ZC9BdWRpdExhdW5jaGVyVmlldy5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVu
ZC9BdWRpdFJlc3VsdFZpZXcuanMnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9BdWRpdENvbnRyb2xsZXIuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL0F1ZGl0Q29udHJvbGxlci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40YjE1MjUzNDFmODQx
YzU4YjY1ZjgyZmYwZTI5MDMwYWRmMjJjZDU5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9BdWRpdENvbnRyb2xsZXIuanMKQEAgLTAsMCArMSwx
NDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMyBTYW1zdW5nIEVsZWN0cm9uaWNzLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICog
bWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICog
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAq
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKy8qKgorICogQGNvbnN0cnVjdG9yCisgKiBAcGFyYW0ge1dlYkluc3BlY3Rv
ci5BdWRpdHNQYW5lbH0gYXVkaXRzUGFuZWwKKyAqLworV2ViSW5zcGVjdG9yLkF1ZGl0Q29udHJv
bGxlciA9IGZ1bmN0aW9uKGF1ZGl0c1BhbmVsKQoreworICAgIHRoaXMuX2F1ZGl0c1BhbmVsID0g
YXVkaXRzUGFuZWw7CisgICAgV2ViSW5zcGVjdG9yLnJlc291cmNlVHJlZU1vZGVsLmFkZEV2ZW50
TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZU1vZGVsLkV2ZW50VHlwZXMuT25Mb2Fk
LCB0aGlzLl9kaWRNYWluUmVzb3VyY2VMb2FkLCB0aGlzKTsKK30KKworV2ViSW5zcGVjdG9yLkF1
ZGl0Q29udHJvbGxlci5wcm90b3R5cGUgPSB7CisgICAgLyoqCisgICAgICogQHBhcmFtIHshQXJy
YXkuPCFXZWJJbnNwZWN0b3IuQXVkaXRDYXRlZ29yeT59IGNhdGVnb3JpZXMKKyAgICAgKiBAcGFy
YW0ge2Z1bmN0aW9uKHN0cmluZywgIUFycmF5LjwhV2ViSW5zcGVjdG9yLkF1ZGl0Q2F0ZWdvcnlS
ZXN1bHQ+KX0gcmVzdWx0Q2FsbGJhY2sKKyAgICAgKi8KKyAgICBfZXhlY3V0ZUF1ZGl0OiBmdW5j
dGlvbihjYXRlZ29yaWVzLCByZXN1bHRDYWxsYmFjaykKKyAgICB7CisgICAgICAgIHRoaXMuX3By
b2dyZXNzLnNldFRpdGxlKFdlYkluc3BlY3Rvci5VSVN0cmluZygiUnVubmluZyBhdWRpdCIpKTsK
KworICAgICAgICBmdW5jdGlvbiBydWxlUmVzdWx0UmVhZHlDYWxsYmFjayhjYXRlZ29yeVJlc3Vs
dCwgcnVsZVJlc3VsdCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHJ1bGVSZXN1bHQgJiYg
cnVsZVJlc3VsdC5jaGlsZHJlbikKKyAgICAgICAgICAgICAgICBjYXRlZ29yeVJlc3VsdC5hZGRS
dWxlUmVzdWx0KHJ1bGVSZXN1bHQpOworCisgICAgICAgICAgICBpZiAodGhpcy5fcHJvZ3Jlc3Mu
aXNDYW5jZWxlZCgpKQorICAgICAgICAgICAgICAgIHRoaXMuX3Byb2dyZXNzLmRvbmUoKTsKKyAg
ICAgICAgfQorCisgICAgICAgIHZhciByZXN1bHRzID0gW107CisgICAgICAgIHZhciBtYWluUmVz
b3VyY2VVUkwgPSBXZWJJbnNwZWN0b3IuaW5zcGVjdGVkUGFnZVVSTDsKKyAgICAgICAgdmFyIGNh
dGVnb3JpZXNEb25lID0gMDsKKyAgICAgICAgZnVuY3Rpb24gY2F0ZWdvcnlEb25lQ2FsbGJhY2so
KQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoKytjYXRlZ29yaWVzRG9uZSAhPT0gY2F0ZWdv
cmllcy5sZW5ndGgpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgdGhpcy5f
cHJvZ3Jlc3MuZG9uZSgpOworICAgICAgICAgICAgcmVzdWx0Q2FsbGJhY2sobWFpblJlc291cmNl
VVJMLCByZXN1bHRzKQorICAgICAgICB9CisKKyAgICAgICAgdmFyIHJlcXVlc3RzID0gV2ViSW5z
cGVjdG9yLm5ldHdvcmtMb2cucmVxdWVzdHMuc2xpY2UoKTsKKyAgICAgICAgdmFyIGNvbXBvc2l0
ZVByb2dyZXNzID0gbmV3IFdlYkluc3BlY3Rvci5Db21wb3NpdGVQcm9ncmVzcyh0aGlzLl9wcm9n
cmVzcyk7CisgICAgICAgIHZhciBzdWJwcm9ncmVzc2VzID0gW107CisgICAgICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgY2F0ZWdvcmllcy5sZW5ndGg7ICsraSkKKyAgICAgICAgICAgIHN1YnByb2dy
ZXNzZXMucHVzaChjb21wb3NpdGVQcm9ncmVzcy5jcmVhdGVTdWJQcm9ncmVzcygpKTsKKyAgICAg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjYXRlZ29yaWVzLmxlbmd0aDsgKytpKSB7CisgICAgICAg
ICAgICB2YXIgY2F0ZWdvcnkgPSBjYXRlZ29yaWVzW2ldOworICAgICAgICAgICAgdmFyIHJlc3Vs
dCA9IG5ldyBXZWJJbnNwZWN0b3IuQXVkaXRDYXRlZ29yeVJlc3VsdChjYXRlZ29yeSk7CisgICAg
ICAgICAgICByZXN1bHRzLnB1c2gocmVzdWx0KTsKKyAgICAgICAgICAgIGNhdGVnb3J5LnJ1bihy
ZXF1ZXN0cywgcnVsZVJlc3VsdFJlYWR5Q2FsbGJhY2suYmluZCh0aGlzLCByZXN1bHQpLCBjYXRl
Z29yeURvbmVDYWxsYmFjay5iaW5kKHRoaXMpLCBzdWJwcm9ncmVzc2VzW2ldKTsKKyAgICAgICAg
fQorICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge2Z1bmN0aW9uKCl9IGxhdW5jaGVy
Q2FsbGJhY2sKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gbWFpblJlc291cmNlVVJMCisgICAgICog
QHBhcmFtIHshQXJyYXkuPCFXZWJJbnNwZWN0b3IuQXVkaXRDYXRlZ29yeVJlc3VsdD59IHJlc3Vs
dHMKKyAgICAgKi8KKyAgICBfYXVkaXRGaW5pc2hlZENhbGxiYWNrOiBmdW5jdGlvbihsYXVuY2hl
ckNhbGxiYWNrLCBtYWluUmVzb3VyY2VVUkwsIHJlc3VsdHMpCisgICAgeworICAgICAgICB0aGlz
Ll9hdWRpdHNQYW5lbC5fYXVkaXRGaW5pc2hlZENhbGxiYWNrKG1haW5SZXNvdXJjZVVSTCwgcmVz
dWx0cyk7CisgICAgICAgIGlmICghdGhpcy5fcHJvZ3Jlc3MuaXNDYW5jZWxlZCgpKQorICAgICAg
ICAgICAgbGF1bmNoZXJDYWxsYmFjaygpOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFy
YW0ge0FycmF5LjxzdHJpbmc+fSBjYXRlZ29yeUlkcworICAgICAqIEBwYXJhbSB7V2ViSW5zcGVj
dG9yLlByb2dyZXNzfSBwcm9ncmVzcworICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gcnVuSW1tZWRp
YXRlbHkKKyAgICAgKiBAcGFyYW0ge2Z1bmN0aW9uKCl9IHN0YXJ0ZWRDYWxsYmFjaworICAgICAq
IEBwYXJhbSB7ZnVuY3Rpb24oKX0gZmluaXNoZWRDYWxsYmFjaworICAgICAqLworICAgIGluaXRp
YXRlQXVkaXQ6IGZ1bmN0aW9uKGNhdGVnb3J5SWRzLCBwcm9ncmVzcywgcnVuSW1tZWRpYXRlbHks
IHN0YXJ0ZWRDYWxsYmFjaywgZmluaXNoZWRDYWxsYmFjaykKKyAgICB7CisgICAgICAgIGlmICgh
Y2F0ZWdvcnlJZHMgfHwgIWNhdGVnb3J5SWRzLmxlbmd0aCkKKyAgICAgICAgICAgIHJldHVybjsK
KworICAgICAgICB0aGlzLl9wcm9ncmVzcyA9IHByb2dyZXNzOworCisgICAgICAgIHZhciBjYXRl
Z29yaWVzID0gW107CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2F0ZWdvcnlJZHMubGVu
Z3RoOyArK2kpCisgICAgICAgICAgICBjYXRlZ29yaWVzLnB1c2godGhpcy5fYXVkaXRzUGFuZWwu
Y2F0ZWdvcmllc0J5SWRbY2F0ZWdvcnlJZHNbaV1dKTsKKworICAgICAgICBmdW5jdGlvbiBzdGFy
dEF1ZGl0V2hlblJlc291cmNlc1JlYWR5KCkKKyAgICAgICAgeworICAgICAgICAgICAgc3RhcnRl
ZENhbGxiYWNrKCk7CisgICAgICAgICAgICB0aGlzLl9leGVjdXRlQXVkaXQoY2F0ZWdvcmllcywg
dGhpcy5fYXVkaXRGaW5pc2hlZENhbGxiYWNrLmJpbmQodGhpcywgZmluaXNoZWRDYWxsYmFjaykp
OworICAgICAgICB9CisKKyAgICAgICAgaWYgKHJ1bkltbWVkaWF0ZWx5KQorICAgICAgICAgICAg
c3RhcnRBdWRpdFdoZW5SZXNvdXJjZXNSZWFkeS5jYWxsKHRoaXMpOworICAgICAgICBlbHNlCisg
ICAgICAgICAgICB0aGlzLl9yZWxvYWRSZXNvdXJjZXMoc3RhcnRBdWRpdFdoZW5SZXNvdXJjZXNS
ZWFkeS5iaW5kKHRoaXMpKTsKKworICAgICAgICBXZWJJbnNwZWN0b3IudXNlck1ldHJpY3MuQXVk
aXRzU3RhcnRlZC5yZWNvcmQoKTsKKyAgICB9LAorCisgICAgX3JlbG9hZFJlc291cmNlczogZnVu
Y3Rpb24oY2FsbGJhY2spCisgICAgeworICAgICAgICB0aGlzLl9wYWdlUmVsb2FkQ2FsbGJhY2sg
PSBjYWxsYmFjazsKKyAgICAgICAgUGFnZUFnZW50LnJlbG9hZChmYWxzZSk7CisgICAgfSwKKwor
ICAgIF9kaWRNYWluUmVzb3VyY2VMb2FkOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICBpZiAo
dGhpcy5fcGFnZVJlbG9hZENhbGxiYWNrKSB7CisgICAgICAgICAgICB2YXIgY2FsbGJhY2sgPSB0
aGlzLl9wYWdlUmVsb2FkQ2FsbGJhY2s7CisgICAgICAgICAgICBkZWxldGUgdGhpcy5fcGFnZVJl
bG9hZENhbGxiYWNrOworICAgICAgICAgICAgY2FsbGJhY2soKTsKKyAgICAgICAgfQorICAgIH0K
K30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQXVkaXRM
YXVuY2hlclZpZXcuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0F1ZGl0
TGF1bmNoZXJWaWV3LmpzCmluZGV4IGZlNGE0MjYyZGQ5NzllNGE3YTRmMDdmZGVmMTg5ZmE0ZDYx
ODAyZjEuLjE3ODI5YjJjMTIzMjMxMDgxYmFlNGMzOTY0MDM1MjVkYjAzOTRjZWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQXVkaXRMYXVuY2hlclZpZXcu
anMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9BdWRpdExhdW5jaGVy
Vmlldy5qcwpAQCAtMzAsMTQgKzMwLDE1IEBACiAKIC8qKgogICogQGNvbnN0cnVjdG9yCi0gKiBA
cGFyYW0ge2Z1bmN0aW9uKEFycmF5LjxzdHJpbmc+LCBXZWJJbnNwZWN0b3IuUHJvZ3Jlc3MsIGJv
b2xlYW4sIGZ1bmN0aW9uKCksIGZ1bmN0aW9uKCkpOnVuZGVmaW5lZH0gcnVubmVyQ2FsbGJhY2sK
KyAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLkF1ZGl0Q29udHJvbGxlcn0gYXVkaXRDb250cm9sbGVy
CiAgKiBAZXh0ZW5kcyB7V2ViSW5zcGVjdG9yLlZpZXd9CiAgKi8KLVdlYkluc3BlY3Rvci5BdWRp
dExhdW5jaGVyVmlldyA9IGZ1bmN0aW9uKHJ1bm5lckNhbGxiYWNrKQorV2ViSW5zcGVjdG9yLkF1
ZGl0TGF1bmNoZXJWaWV3ID0gZnVuY3Rpb24oYXVkaXRDb250cm9sbGVyKQogewogICAgIFdlYklu
c3BlY3Rvci5WaWV3LmNhbGwodGhpcyk7CiAKLSAgICB0aGlzLl9ydW5uZXJDYWxsYmFjayA9IHJ1
bm5lckNhbGxiYWNrOworICAgIHRoaXMuX2F1ZGl0Q29udHJvbGxlciA9IGF1ZGl0Q29udHJvbGxl
cjsKKwogICAgIHRoaXMuX2NhdGVnb3J5SWRQcmVmaXggPSAiYXVkaXQtY2F0ZWdvcnktaXRlbS0i
OwogICAgIHRoaXMuX2F1ZGl0UnVubmluZyA9IGZhbHNlOwogCkBAIC0xNTYsNyArMTU3LDcgQEAg
V2ViSW5zcGVjdG9yLkF1ZGl0TGF1bmNoZXJWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgewog
ICAgICAgICAgICAgdGhpcy5fZGlzcGxheVJlc291cmNlTG9hZGluZ1Byb2dyZXNzID0gZmFsc2U7
CiAgICAgICAgIH0KLSAgICAgICAgdGhpcy5fcnVubmVyQ2FsbGJhY2soY2F0SWRzLCB0aGlzLl9w
cm9ncmVzc0luZGljYXRvciwgdGhpcy5fYXVkaXRQcmVzZW50U3RhdGVFbGVtZW50LmNoZWNrZWQs
IG9uQXVkaXRTdGFydGVkLmJpbmQodGhpcyksIHRoaXMuX3NldEF1ZGl0UnVubmluZy5iaW5kKHRo
aXMsIGZhbHNlKSk7CisgICAgICAgIHRoaXMuX2F1ZGl0Q29udHJvbGxlci5pbml0aWF0ZUF1ZGl0
KGNhdElkcywgdGhpcy5fcHJvZ3Jlc3NJbmRpY2F0b3IsIHRoaXMuX2F1ZGl0UHJlc2VudFN0YXRl
RWxlbWVudC5jaGVja2VkLCBvbkF1ZGl0U3RhcnRlZC5iaW5kKHRoaXMpLCB0aGlzLl9zZXRBdWRp
dFJ1bm5pbmcuYmluZCh0aGlzLCBmYWxzZSkpOwogICAgIH0sCiAKICAgICBfc3RvcEF1ZGl0OiBm
dW5jdGlvbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L0F1ZGl0c1BhbmVsLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9BdWRp
dHNQYW5lbC5qcwppbmRleCBjNmVkMTdkYjI4Mjc0ODViZjY2M2FlNjJlZWVmNDFmODVmMjRkYTky
Li44NTVmNjgwODIxYWQzMjk2ZGNkNmYzZGE5NDZhNmM3NzdlNmRjMDEzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0F1ZGl0c1BhbmVsLmpzCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQXVkaXRzUGFuZWwuanMKQEAgLTU3LDEx
ICs1NywxMCBAQCBXZWJJbnNwZWN0b3IuQXVkaXRzUGFuZWwgPSBmdW5jdGlvbigpCiAKICAgICB0
aGlzLl9jb25zdHJ1Y3RDYXRlZ29yaWVzKCk7CiAKLSAgICB0aGlzLl9sYXVuY2hlclZpZXcgPSBu
ZXcgV2ViSW5zcGVjdG9yLkF1ZGl0TGF1bmNoZXJWaWV3KHRoaXMuaW5pdGlhdGVBdWRpdC5iaW5k
KHRoaXMpKTsKKyAgICB0aGlzLl9hdWRpdENvbnRyb2xsZXIgPSBuZXcgV2ViSW5zcGVjdG9yLkF1
ZGl0Q29udHJvbGxlcih0aGlzKTsKKyAgICB0aGlzLl9sYXVuY2hlclZpZXcgPSBuZXcgV2ViSW5z
cGVjdG9yLkF1ZGl0TGF1bmNoZXJWaWV3KHRoaXMuX2F1ZGl0Q29udHJvbGxlcik7CiAgICAgZm9y
ICh2YXIgaWQgaW4gdGhpcy5jYXRlZ29yaWVzQnlJZCkKICAgICAgICAgdGhpcy5fbGF1bmNoZXJW
aWV3LmFkZENhdGVnb3J5KHRoaXMuY2F0ZWdvcmllc0J5SWRbaWRdKTsKLQotICAgIFdlYkluc3Bl
Y3Rvci5yZXNvdXJjZVRyZWVNb2RlbC5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5SZXNv
dXJjZVRyZWVNb2RlbC5FdmVudFR5cGVzLk9uTG9hZCwgdGhpcy5fZGlkTWFpblJlc291cmNlTG9h
ZCwgdGhpcyk7CiB9CiAKIFdlYkluc3BlY3Rvci5BdWRpdHNQYW5lbC5wcm90b3R5cGUgPSB7CkBA
IC0xMDcsNTIgKzEwNiwxMCBAQCBXZWJJbnNwZWN0b3IuQXVkaXRzUGFuZWwucHJvdG90eXBlID0g
ewogICAgIH0sCiAKICAgICAvKioKLSAgICAgKiBAcGFyYW0geyFBcnJheS48IVdlYkluc3BlY3Rv
ci5BdWRpdENhdGVnb3J5Pn0gY2F0ZWdvcmllcwotICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24oc3Ry
aW5nLCAhQXJyYXkuPCFXZWJJbnNwZWN0b3IuQXVkaXRDYXRlZ29yeVJlc3VsdD4pfSByZXN1bHRD
YWxsYmFjawotICAgICAqLwotICAgIF9leGVjdXRlQXVkaXQ6IGZ1bmN0aW9uKGNhdGVnb3JpZXMs
IHJlc3VsdENhbGxiYWNrKQotICAgIHsKLSAgICAgICAgdGhpcy5fcHJvZ3Jlc3Muc2V0VGl0bGUo
V2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJSdW5uaW5nIGF1ZGl0IikpOwotCi0gICAgICAgIGZ1bmN0
aW9uIHJ1bGVSZXN1bHRSZWFkeUNhbGxiYWNrKGNhdGVnb3J5UmVzdWx0LCBydWxlUmVzdWx0KQot
ICAgICAgICB7Ci0gICAgICAgICAgICBpZiAocnVsZVJlc3VsdCAmJiBydWxlUmVzdWx0LmNoaWxk
cmVuKQotICAgICAgICAgICAgICAgIGNhdGVnb3J5UmVzdWx0LmFkZFJ1bGVSZXN1bHQocnVsZVJl
c3VsdCk7Ci0KLSAgICAgICAgICAgIGlmICh0aGlzLl9wcm9ncmVzcy5pc0NhbmNlbGVkKCkpCi0g
ICAgICAgICAgICAgICAgdGhpcy5fcHJvZ3Jlc3MuZG9uZSgpOwotICAgICAgICB9Ci0KLSAgICAg
ICAgdmFyIHJlc3VsdHMgPSBbXTsKLSAgICAgICAgdmFyIG1haW5SZXNvdXJjZVVSTCA9IFdlYklu
c3BlY3Rvci5pbnNwZWN0ZWRQYWdlVVJMOwotICAgICAgICB2YXIgY2F0ZWdvcmllc0RvbmUgPSAw
OwotICAgICAgICBmdW5jdGlvbiBjYXRlZ29yeURvbmVDYWxsYmFjaygpCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIGlmICgrK2NhdGVnb3JpZXNEb25lICE9PSBjYXRlZ29yaWVzLmxlbmd0aCkKLSAg
ICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB0aGlzLl9wcm9ncmVzcy5kb25lKCk7
Ci0gICAgICAgICAgICByZXN1bHRDYWxsYmFjayhtYWluUmVzb3VyY2VVUkwsIHJlc3VsdHMpCi0g
ICAgICAgIH0KLQotICAgICAgICB2YXIgcmVxdWVzdHMgPSBXZWJJbnNwZWN0b3IubmV0d29ya0xv
Zy5yZXF1ZXN0cy5zbGljZSgpOwotICAgICAgICB2YXIgY29tcG9zaXRlUHJvZ3Jlc3MgPSBuZXcg
V2ViSW5zcGVjdG9yLkNvbXBvc2l0ZVByb2dyZXNzKHRoaXMuX3Byb2dyZXNzKTsKLSAgICAgICAg
dmFyIHN1YnByb2dyZXNzZXMgPSBbXTsKLSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjYXRl
Z29yaWVzLmxlbmd0aDsgKytpKQotICAgICAgICAgICAgc3VicHJvZ3Jlc3Nlcy5wdXNoKGNvbXBv
c2l0ZVByb2dyZXNzLmNyZWF0ZVN1YlByb2dyZXNzKCkpOwotICAgICAgICBmb3IgKHZhciBpID0g
MDsgaSA8IGNhdGVnb3JpZXMubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgIHZhciBjYXRlZ29y
eSA9IGNhdGVnb3JpZXNbaV07Ci0gICAgICAgICAgICB2YXIgcmVzdWx0ID0gbmV3IFdlYkluc3Bl
Y3Rvci5BdWRpdENhdGVnb3J5UmVzdWx0KGNhdGVnb3J5KTsKLSAgICAgICAgICAgIHJlc3VsdHMu
cHVzaChyZXN1bHQpOwotICAgICAgICAgICAgY2F0ZWdvcnkucnVuKHJlcXVlc3RzLCBydWxlUmVz
dWx0UmVhZHlDYWxsYmFjay5iaW5kKHRoaXMsIHJlc3VsdCksIGNhdGVnb3J5RG9uZUNhbGxiYWNr
LmJpbmQodGhpcyksIHN1YnByb2dyZXNzZXNbaV0pOwotICAgICAgICB9Ci0gICAgfSwKLQotICAg
IC8qKgotICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24oKX0gbGF1bmNoZXJDYWxsYmFjawogICAgICAq
IEBwYXJhbSB7c3RyaW5nfSBtYWluUmVzb3VyY2VVUkwKICAgICAgKiBAcGFyYW0geyFBcnJheS48
IVdlYkluc3BlY3Rvci5BdWRpdENhdGVnb3J5UmVzdWx0Pn0gcmVzdWx0cwogICAgICAqLwotICAg
IF9hdWRpdEZpbmlzaGVkQ2FsbGJhY2s6IGZ1bmN0aW9uKGxhdW5jaGVyQ2FsbGJhY2ssIG1haW5S
ZXNvdXJjZVVSTCwgcmVzdWx0cykKKyAgICBfYXVkaXRGaW5pc2hlZENhbGxiYWNrOiBmdW5jdGlv
bihtYWluUmVzb3VyY2VVUkwsIHJlc3VsdHMpCiAgICAgewogICAgICAgICB2YXIgY2hpbGRyZW4g
PSB0aGlzLmF1ZGl0UmVzdWx0c1RyZWVFbGVtZW50LmNoaWxkcmVuOwogICAgICAgICB2YXIgb3Jk
aW5hbCA9IDE7CkBAIC0xNjQsNTUgKzEyMSw2IEBAIFdlYkluc3BlY3Rvci5BdWRpdHNQYW5lbC5w
cm90b3R5cGUgPSB7CiAgICAgICAgIHZhciByZXN1bHRUcmVlRWxlbWVudCA9IG5ldyBXZWJJbnNw
ZWN0b3IuQXVkaXRSZXN1bHRTaWRlYmFyVHJlZUVsZW1lbnQodGhpcywgcmVzdWx0cywgbWFpblJl
c291cmNlVVJMLCBvcmRpbmFsKTsKICAgICAgICAgdGhpcy5hdWRpdFJlc3VsdHNUcmVlRWxlbWVu
dC5hcHBlbmRDaGlsZChyZXN1bHRUcmVlRWxlbWVudCk7CiAgICAgICAgIHJlc3VsdFRyZWVFbGVt
ZW50LnJldmVhbEFuZFNlbGVjdCgpOwotICAgICAgICBpZiAoIXRoaXMuX3Byb2dyZXNzLmlzQ2Fu
Y2VsZWQoKSkKLSAgICAgICAgICAgIGxhdW5jaGVyQ2FsbGJhY2soKTsKLSAgICB9LAotCi0gICAg
LyoqCi0gICAgICogQHBhcmFtIHtBcnJheS48c3RyaW5nPn0gY2F0ZWdvcnlJZHMKLSAgICAgKiBA
cGFyYW0ge1dlYkluc3BlY3Rvci5Qcm9ncmVzc30gcHJvZ3Jlc3MKLSAgICAgKiBAcGFyYW0ge2Jv
b2xlYW59IHJ1bkltbWVkaWF0ZWx5Ci0gICAgICogQHBhcmFtIHtmdW5jdGlvbigpfSBzdGFydGVk
Q2FsbGJhY2sKLSAgICAgKiBAcGFyYW0ge2Z1bmN0aW9uKCl9IGZpbmlzaGVkQ2FsbGJhY2sKLSAg
ICAgKi8KLSAgICBpbml0aWF0ZUF1ZGl0OiBmdW5jdGlvbihjYXRlZ29yeUlkcywgcHJvZ3Jlc3Ms
IHJ1bkltbWVkaWF0ZWx5LCBzdGFydGVkQ2FsbGJhY2ssIGZpbmlzaGVkQ2FsbGJhY2spCi0gICAg
ewotICAgICAgICBpZiAoIWNhdGVnb3J5SWRzIHx8ICFjYXRlZ29yeUlkcy5sZW5ndGgpCi0gICAg
ICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgdGhpcy5fcHJvZ3Jlc3MgPSBwcm9ncmVzczsKLQot
ICAgICAgICB2YXIgY2F0ZWdvcmllcyA9IFtdOwotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8
IGNhdGVnb3J5SWRzLmxlbmd0aDsgKytpKQotICAgICAgICAgICAgY2F0ZWdvcmllcy5wdXNoKHRo
aXMuY2F0ZWdvcmllc0J5SWRbY2F0ZWdvcnlJZHNbaV1dKTsKLQotICAgICAgICBmdW5jdGlvbiBz
dGFydEF1ZGl0V2hlblJlc291cmNlc1JlYWR5KCkKLSAgICAgICAgewotICAgICAgICAgICAgc3Rh
cnRlZENhbGxiYWNrKCk7Ci0gICAgICAgICAgICB0aGlzLl9leGVjdXRlQXVkaXQoY2F0ZWdvcmll
cywgdGhpcy5fYXVkaXRGaW5pc2hlZENhbGxiYWNrLmJpbmQodGhpcywgZmluaXNoZWRDYWxsYmFj
aykpOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKHJ1bkltbWVkaWF0ZWx5KQotICAgICAgICAg
ICAgc3RhcnRBdWRpdFdoZW5SZXNvdXJjZXNSZWFkeS5jYWxsKHRoaXMpOwotICAgICAgICBlbHNl
Ci0gICAgICAgICAgICB0aGlzLl9yZWxvYWRSZXNvdXJjZXMoc3RhcnRBdWRpdFdoZW5SZXNvdXJj
ZXNSZWFkeS5iaW5kKHRoaXMpKTsKLQotICAgICAgICBXZWJJbnNwZWN0b3IudXNlck1ldHJpY3Mu
QXVkaXRzU3RhcnRlZC5yZWNvcmQoKTsKLSAgICB9LAotCi0gICAgX3JlbG9hZFJlc291cmNlczog
ZnVuY3Rpb24oY2FsbGJhY2spCi0gICAgewotICAgICAgICB0aGlzLl9wYWdlUmVsb2FkQ2FsbGJh
Y2sgPSBjYWxsYmFjazsKLSAgICAgICAgUGFnZUFnZW50LnJlbG9hZChmYWxzZSk7Ci0gICAgfSwK
LQotICAgIF9kaWRNYWluUmVzb3VyY2VMb2FkOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICBp
ZiAodGhpcy5fcGFnZVJlbG9hZENhbGxiYWNrKSB7Ci0gICAgICAgICAgICB2YXIgY2FsbGJhY2sg
PSB0aGlzLl9wYWdlUmVsb2FkQ2FsbGJhY2s7Ci0gICAgICAgICAgICBkZWxldGUgdGhpcy5fcGFn
ZVJlbG9hZENhbGxiYWNrOwotICAgICAgICAgICAgY2FsbGJhY2soKTsKLSAgICAgICAgfQogICAg
IH0sCiAKICAgICAvKioKQEAgLTYwNyw2ICs1MTUsNyBAQCBXZWJJbnNwZWN0b3IuQXVkaXRSdWxl
cyA9IHt9OwogV2ViSW5zcGVjdG9yLkF1ZGl0Q2F0ZWdvcmllcyA9IHt9OwogCiBpbXBvcnRTY3Jp
cHQoIkF1ZGl0Q2F0ZWdvcmllcy5qcyIpOworaW1wb3J0U2NyaXB0KCJBdWRpdENvbnRyb2xsZXIu
anMiKTsKIGltcG9ydFNjcmlwdCgiQXVkaXRGb3JtYXR0ZXJzLmpzIik7CiBpbXBvcnRTY3JpcHQo
IkF1ZGl0TGF1bmNoZXJWaWV3LmpzIik7CiBpbXBvcnRTY3JpcHQoIkF1ZGl0UmVzdWx0Vmlldy5q
cyIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9XZWJL
aXQucXJjIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9XZWJLaXQucXJjCmlu
ZGV4IDFkZWVmMzEwN2U0ZTFmODIwNDM1OGNlYmI5NTRmODI4ODI4MzZjOGYuLjM1YWJlMmI2Njgz
YWIwMDYxZTYwOTkyN2RiN2Q5ZTliNDAxMmI3NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvV2ViS2l0LnFyYworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5xcmMKQEAgLTUsNiArNSw3IEBACiAgICAgPGZpbGU+QXBw
bGljYXRpb25DYWNoZUl0ZW1zVmlldy5qczwvZmlsZT4KICAgICA8ZmlsZT5BcHBsaWNhdGlvbkNh
Y2hlTW9kZWwuanM8L2ZpbGU+CiAgICAgPGZpbGU+QXVkaXRDYXRlZ29yaWVzLmpzPC9maWxlPgor
ICAgIDxmaWxlPkF1ZGl0Q29udHJvbGxlci5qczwvZmlsZT4KICAgICA8ZmlsZT5BdWRpdEZvcm1h
dHRlcnMuanM8L2ZpbGU+CiAgICAgPGZpbGU+QXVkaXRMYXVuY2hlclZpZXcuanM8L2ZpbGU+CiAg
ICAgPGZpbGU+QXVkaXRSZXN1bHRWaWV3LmpzPC9maWxlPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>190420</attachid>
            <date>2013-02-26 19:31:08 -0800</date>
            <delta_ts>2013-02-27 06:31:31 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-110866-20130227085827.patch</filename>
            <type>text/plain</type>
            <size>18392</size>
            <attacher name="Vivek Galatage">vivekg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ0MDI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjBhZDg1OGMxZTAyMjdi
NmYzNmEyNzI3NzZmYTYwNWNkYzNkZTFhNS4uODllNTAxYWMwM2ZlOTZhOGEyN2M4YmJhZDIzZGU5
ZjRhYTNiNTlkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDEzLTAyLTI2ICBWaXZl
ayBHYWxhdGFnZSAgPHZpdmVrLnZnQHNhbXN1bmcuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IFJlZmFjdG9yIEF1ZGl0c1BhbmVsIHdpdGggQXVkaXRDb250cm9sbGVyIGFzIG5ld2x5IGlu
dHJvZHVjZWQgZW50aXR5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMTA4NjYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBBdWRpdENvbnRyb2xsZXIgaXMgYmVpbmcgaW50cm9kdWNlZCBpbiBvcmRlciB0byBm
b2xsb3cgTVZDIHBhdHRlcm4gd2l0aCB0aGUgQXVkaXRzLgorICAgICAgICBUaGlzIGlzIHRoZSBm
aXJzdCBzdGVwIGFib3V0IHRoZSByZWZhY3RvcmluZy4gTW92aW5nIHRoZSBtZXRob2RzIGZyb20g
dGhlIEF1ZGl0c1BhbmVsCisgICAgICAgIGludG8gQXVkaXRDb250cm9sbGVyIHdvdWxkIGVhc2Ug
dGhlIGV2ZW50IGRyaXZlbiBhcHByb2FjaCB0byBkZS1jb3VwbGUgdGhlIEF1ZGl0c1BhbmVsCisg
ICAgICAgIGFuZCB0aGUgQXVkaXRMYXVuY2hlclZpZXcuCisKKyAgICAgICAgTm8gbmV3IHRlc3Rz
IGFzIGNvZGUgcmVmYWN0b3JpbmcuCisKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAg
ICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogaW5zcGVjdG9yL2Nv
bXBpbGUtZnJvbnQtZW5kLnB5OgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvQXVkaXRD
b250cm9sbGVyLmpzOiBBZGRlZC4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5BdWRpdENvbnRyb2xs
ZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkF1ZGl0Q29udHJvbGxlci5wcm90b3R5cGUucnVs
ZVJlc3VsdFJlYWR5Q2FsbGJhY2spOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkF1ZGl0Q29udHJv
bGxlci5wcm90b3R5cGUuY2F0ZWdvcnlEb25lQ2FsbGJhY2spOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkF1ZGl0Q29udHJvbGxlci5wcm90b3R5cGUuX2V4ZWN1dGVBdWRpdCk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuQXVkaXRDb250cm9sbGVyLnByb3RvdHlwZS5fYXVkaXRGaW5pc2hlZENhbGxi
YWNrKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5BdWRpdENvbnRyb2xsZXIucHJvdG90eXBlLnN0
YXJ0QXVkaXRXaGVuUmVzb3VyY2VzUmVhZHkpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkF1ZGl0
Q29udHJvbGxlci5wcm90b3R5cGUuaW5pdGlhdGVBdWRpdCk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuQXVkaXRDb250cm9sbGVyLnByb3RvdHlwZS5fcmVsb2FkUmVzb3VyY2VzKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5BdWRpdENvbnRyb2xsZXIucHJvdG90eXBlLl9kaWRNYWluUmVzb3VyY2VM
b2FkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0F1ZGl0TGF1bmNoZXJWaWV3Lmpz
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkF1ZGl0TGF1bmNoZXJWaWV3KToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5BdWRpdExhdW5jaGVyVmlldy5wcm90b3R5cGUuX3N0YXJ0QXVkaXQpOgorICAg
ICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvQXVkaXRzUGFuZWwuanM6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuQXVkaXRzUGFuZWwpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkF1ZGl0c1BhbmVs
LnByb3RvdHlwZS5hdWRpdEZpbmlzaGVkQ2FsbGJhY2spOgorICAgICAgICAqIGluc3BlY3Rvci9m
cm9udC1lbmQvV2ViS2l0LnFyYzoKKwogMjAxMy0wMi0yNiAgQWxleGFuZGVyIFBhdmxvdiAgPGFw
YXZsb3ZAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IENTU0FnZW50LnNl
dFN0eWxlU2hlZXRUZXh0IGNyYXNoZXMgb24gaW5saW5lIHN0eWxlcwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmlu
ZGV4IGVhMDRjODcyNWFiMDNmM2E4Mjc5OThmZjY3YWM1ZWQxNjJkYTBmNGIuLmUzMzI2NjQwNzVm
ZTFjZmE4NTQyM2FhZTAxMDYwNzBjZjBiOGI3MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTU0NTMs
NiArNTQ1Myw3IEBACiAKICAgICAgICAgJ3dlYmluc3BlY3Rvcl9hdWRpdHNfanNfZmlsZXMnOiBb
CiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9BdWRpdENhdGVnb3JpZXMuanMnLAor
ICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvQXVkaXRDb250cm9sbGVyLmpzJywKICAg
ICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0F1ZGl0Rm9ybWF0dGVycy5qcycsCiAgICAg
ICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9BdWRpdExhdW5jaGVyVmlldy5qcycsCiAgICAg
ICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9BdWRpdFJlc3VsdFZpZXcuanMnLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCBkNDg5OWIxYjg0
MTM1NTRjMDYwOTViNzAxMDA1M2M5NWMyZGEwMzk1Li41ODBkMzQ2NWNjMjM1NzFlMjA3YWUwM2Q4
N2IxMTAzNzExYzU3ZDZmIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJv
ai9XZWJDb3JlLnZjcHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJD
b3JlLnZjcHJvagpAQCAtNzY5NzAsNiArNzY5NzAsMTAgQEAKIAkJCQkJPgogCQkJCTwvRmlsZT4K
IAkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3Rvclxmcm9udC1lbmRcQXVk
aXRDb250cm9sbGVyLmpzIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCiAJCQkJCVJl
bGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXGZyb250LWVuZFxBdWRpdEZvcm1hdHRlcnMuanMiCiAJ
CQkJCT4KIAkJCQk8L0ZpbGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
Y29tcGlsZS1mcm9udC1lbmQucHkgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvY29tcGlsZS1m
cm9udC1lbmQucHkKaW5kZXggNGM0ZDdhYmIxNTZmNWZlMDYxNDk2Y2VjNDEwNjMyMjEzY2NmOGE2
Zi4uZTk5ZTM3NzE2MzljZjgyNDEyNGM4MTdhNzU3NWVlZGQyZjg5ODAxZCAxMDA3NTUKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2NvbXBpbGUtZnJvbnQtZW5kLnB5CisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9jb21waWxlLWZyb250LWVuZC5weQpAQCAtMjk1LDYgKzI5NSw3
IEBAIG1vZHVsZXMgPSBbCiAgICAgICAgICJkZXBlbmRlbmNpZXMiOiBbImNvbXBvbmVudHMiXSwK
ICAgICAgICAgInNvdXJjZXMiOiBbCiAgICAgICAgICAgICAiQXVkaXRDYXRlZ29yaWVzLmpzIiwK
KyAgICAgICAgICAgICJBdWRpdENvbnRyb2xsZXIuanMiLAogICAgICAgICAgICAgIkF1ZGl0Rm9y
bWF0dGVycy5qcyIsCiAgICAgICAgICAgICAiQXVkaXRMYXVuY2hlclZpZXcuanMiLAogICAgICAg
ICAgICAgIkF1ZGl0UmVzdWx0Vmlldy5qcyIsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL0F1ZGl0Q29udHJvbGxlci5qcyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvQXVkaXRDb250cm9sbGVyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE0OTY5MGY3
N2VjZTE1YzRhODYzZTNmZTcwN2RhZGM2MDk0Y2UxNDQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0F1ZGl0Q29udHJvbGxlci5qcwpAQCAtMCww
ICsxLDE0MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzIFNhbXN1bmcgRWxlY3Ryb25pY3Mu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
CisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhl
IG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
CisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAq
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworLyoqCisgKiBAY29uc3RydWN0b3IKKyAqIEBwYXJhbSB7V2ViSW5z
cGVjdG9yLkF1ZGl0c1BhbmVsfSBhdWRpdHNQYW5lbAorICovCitXZWJJbnNwZWN0b3IuQXVkaXRD
b250cm9sbGVyID0gZnVuY3Rpb24oYXVkaXRzUGFuZWwpCit7CisgICAgdGhpcy5fYXVkaXRzUGFu
ZWwgPSBhdWRpdHNQYW5lbDsKKyAgICBXZWJJbnNwZWN0b3IucmVzb3VyY2VUcmVlTW9kZWwuYWRk
RXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlTW9kZWwuRXZlbnRUeXBlcy5P
bkxvYWQsIHRoaXMuX2RpZE1haW5SZXNvdXJjZUxvYWQsIHRoaXMpOworfQorCitXZWJJbnNwZWN0
b3IuQXVkaXRDb250cm9sbGVyLnByb3RvdHlwZSA9IHsKKyAgICAvKioKKyAgICAgKiBAcGFyYW0g
eyFBcnJheS48IVdlYkluc3BlY3Rvci5BdWRpdENhdGVnb3J5Pn0gY2F0ZWdvcmllcworICAgICAq
IEBwYXJhbSB7ZnVuY3Rpb24oc3RyaW5nLCAhQXJyYXkuPCFXZWJJbnNwZWN0b3IuQXVkaXRDYXRl
Z29yeVJlc3VsdD4pfSByZXN1bHRDYWxsYmFjaworICAgICAqLworICAgIF9leGVjdXRlQXVkaXQ6
IGZ1bmN0aW9uKGNhdGVnb3JpZXMsIHJlc3VsdENhbGxiYWNrKQorICAgIHsKKyAgICAgICAgdGhp
cy5fcHJvZ3Jlc3Muc2V0VGl0bGUoV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJSdW5uaW5nIGF1ZGl0
IikpOworCisgICAgICAgIGZ1bmN0aW9uIHJ1bGVSZXN1bHRSZWFkeUNhbGxiYWNrKGNhdGVnb3J5
UmVzdWx0LCBydWxlUmVzdWx0KQorICAgICAgICB7CisgICAgICAgICAgICBpZiAocnVsZVJlc3Vs
dCAmJiBydWxlUmVzdWx0LmNoaWxkcmVuKQorICAgICAgICAgICAgICAgIGNhdGVnb3J5UmVzdWx0
LmFkZFJ1bGVSZXN1bHQocnVsZVJlc3VsdCk7CisKKyAgICAgICAgICAgIGlmICh0aGlzLl9wcm9n
cmVzcy5pc0NhbmNlbGVkKCkpCisgICAgICAgICAgICAgICAgdGhpcy5fcHJvZ3Jlc3MuZG9uZSgp
OworICAgICAgICB9CisKKyAgICAgICAgdmFyIHJlc3VsdHMgPSBbXTsKKyAgICAgICAgdmFyIG1h
aW5SZXNvdXJjZVVSTCA9IFdlYkluc3BlY3Rvci5pbnNwZWN0ZWRQYWdlVVJMOworICAgICAgICB2
YXIgY2F0ZWdvcmllc0RvbmUgPSAwOworICAgICAgICBmdW5jdGlvbiBjYXRlZ29yeURvbmVDYWxs
YmFjaygpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICgrK2NhdGVnb3JpZXNEb25lICE9PSBj
YXRlZ29yaWVzLmxlbmd0aCkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB0
aGlzLl9wcm9ncmVzcy5kb25lKCk7CisgICAgICAgICAgICByZXN1bHRDYWxsYmFjayhtYWluUmVz
b3VyY2VVUkwsIHJlc3VsdHMpCisgICAgICAgIH0KKworICAgICAgICB2YXIgcmVxdWVzdHMgPSBX
ZWJJbnNwZWN0b3IubmV0d29ya0xvZy5yZXF1ZXN0cy5zbGljZSgpOworICAgICAgICB2YXIgY29t
cG9zaXRlUHJvZ3Jlc3MgPSBuZXcgV2ViSW5zcGVjdG9yLkNvbXBvc2l0ZVByb2dyZXNzKHRoaXMu
X3Byb2dyZXNzKTsKKyAgICAgICAgdmFyIHN1YnByb2dyZXNzZXMgPSBbXTsKKyAgICAgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCBjYXRlZ29yaWVzLmxlbmd0aDsgKytpKQorICAgICAgICAgICAgc3Vi
cHJvZ3Jlc3Nlcy5wdXNoKGNvbXBvc2l0ZVByb2dyZXNzLmNyZWF0ZVN1YlByb2dyZXNzKCkpOwor
ICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNhdGVnb3JpZXMubGVuZ3RoOyArK2kpIHsKKyAg
ICAgICAgICAgIHZhciBjYXRlZ29yeSA9IGNhdGVnb3JpZXNbaV07CisgICAgICAgICAgICB2YXIg
cmVzdWx0ID0gbmV3IFdlYkluc3BlY3Rvci5BdWRpdENhdGVnb3J5UmVzdWx0KGNhdGVnb3J5KTsK
KyAgICAgICAgICAgIHJlc3VsdHMucHVzaChyZXN1bHQpOworICAgICAgICAgICAgY2F0ZWdvcnku
cnVuKHJlcXVlc3RzLCBydWxlUmVzdWx0UmVhZHlDYWxsYmFjay5iaW5kKHRoaXMsIHJlc3VsdCks
IGNhdGVnb3J5RG9uZUNhbGxiYWNrLmJpbmQodGhpcyksIHN1YnByb2dyZXNzZXNbaV0pOworICAg
ICAgICB9CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24oKX0gbGF1
bmNoZXJDYWxsYmFjaworICAgICAqIEBwYXJhbSB7c3RyaW5nfSBtYWluUmVzb3VyY2VVUkwKKyAg
ICAgKiBAcGFyYW0geyFBcnJheS48IVdlYkluc3BlY3Rvci5BdWRpdENhdGVnb3J5UmVzdWx0Pn0g
cmVzdWx0cworICAgICAqLworICAgIF9hdWRpdEZpbmlzaGVkQ2FsbGJhY2s6IGZ1bmN0aW9uKGxh
dW5jaGVyQ2FsbGJhY2ssIG1haW5SZXNvdXJjZVVSTCwgcmVzdWx0cykKKyAgICB7CisgICAgICAg
IHRoaXMuX2F1ZGl0c1BhbmVsLmF1ZGl0RmluaXNoZWRDYWxsYmFjayhtYWluUmVzb3VyY2VVUkws
IHJlc3VsdHMpOworICAgICAgICBpZiAoIXRoaXMuX3Byb2dyZXNzLmlzQ2FuY2VsZWQoKSkKKyAg
ICAgICAgICAgIGxhdW5jaGVyQ2FsbGJhY2soKTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICog
QHBhcmFtIHtBcnJheS48c3RyaW5nPn0gY2F0ZWdvcnlJZHMKKyAgICAgKiBAcGFyYW0ge1dlYklu
c3BlY3Rvci5Qcm9ncmVzc30gcHJvZ3Jlc3MKKyAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IHJ1bklt
bWVkaWF0ZWx5CisgICAgICogQHBhcmFtIHtmdW5jdGlvbigpfSBzdGFydGVkQ2FsbGJhY2sKKyAg
ICAgKiBAcGFyYW0ge2Z1bmN0aW9uKCl9IGZpbmlzaGVkQ2FsbGJhY2sKKyAgICAgKi8KKyAgICBp
bml0aWF0ZUF1ZGl0OiBmdW5jdGlvbihjYXRlZ29yeUlkcywgcHJvZ3Jlc3MsIHJ1bkltbWVkaWF0
ZWx5LCBzdGFydGVkQ2FsbGJhY2ssIGZpbmlzaGVkQ2FsbGJhY2spCisgICAgeworICAgICAgICBp
ZiAoIWNhdGVnb3J5SWRzIHx8ICFjYXRlZ29yeUlkcy5sZW5ndGgpCisgICAgICAgICAgICByZXR1
cm47CisKKyAgICAgICAgdGhpcy5fcHJvZ3Jlc3MgPSBwcm9ncmVzczsKKworICAgICAgICB2YXIg
Y2F0ZWdvcmllcyA9IFtdOworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNhdGVnb3J5SWRz
Lmxlbmd0aDsgKytpKQorICAgICAgICAgICAgY2F0ZWdvcmllcy5wdXNoKHRoaXMuX2F1ZGl0c1Bh
bmVsLmNhdGVnb3JpZXNCeUlkW2NhdGVnb3J5SWRzW2ldXSk7CisKKyAgICAgICAgZnVuY3Rpb24g
c3RhcnRBdWRpdFdoZW5SZXNvdXJjZXNSZWFkeSgpCisgICAgICAgIHsKKyAgICAgICAgICAgIHN0
YXJ0ZWRDYWxsYmFjaygpOworICAgICAgICAgICAgdGhpcy5fZXhlY3V0ZUF1ZGl0KGNhdGVnb3Jp
ZXMsIHRoaXMuX2F1ZGl0RmluaXNoZWRDYWxsYmFjay5iaW5kKHRoaXMsIGZpbmlzaGVkQ2FsbGJh
Y2spKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChydW5JbW1lZGlhdGVseSkKKyAgICAgICAg
ICAgIHN0YXJ0QXVkaXRXaGVuUmVzb3VyY2VzUmVhZHkuY2FsbCh0aGlzKTsKKyAgICAgICAgZWxz
ZQorICAgICAgICAgICAgdGhpcy5fcmVsb2FkUmVzb3VyY2VzKHN0YXJ0QXVkaXRXaGVuUmVzb3Vy
Y2VzUmVhZHkuYmluZCh0aGlzKSk7CisKKyAgICAgICAgV2ViSW5zcGVjdG9yLnVzZXJNZXRyaWNz
LkF1ZGl0c1N0YXJ0ZWQucmVjb3JkKCk7CisgICAgfSwKKworICAgIF9yZWxvYWRSZXNvdXJjZXM6
IGZ1bmN0aW9uKGNhbGxiYWNrKQorICAgIHsKKyAgICAgICAgdGhpcy5fcGFnZVJlbG9hZENhbGxi
YWNrID0gY2FsbGJhY2s7CisgICAgICAgIFBhZ2VBZ2VudC5yZWxvYWQoZmFsc2UpOworICAgIH0s
CisKKyAgICBfZGlkTWFpblJlc291cmNlTG9hZDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAg
aWYgKHRoaXMuX3BhZ2VSZWxvYWRDYWxsYmFjaykgeworICAgICAgICAgICAgdmFyIGNhbGxiYWNr
ID0gdGhpcy5fcGFnZVJlbG9hZENhbGxiYWNrOworICAgICAgICAgICAgZGVsZXRlIHRoaXMuX3Bh
Z2VSZWxvYWRDYWxsYmFjazsKKyAgICAgICAgICAgIGNhbGxiYWNrKCk7CisgICAgICAgIH0KKyAg
ICB9Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0F1
ZGl0TGF1bmNoZXJWaWV3LmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9B
dWRpdExhdW5jaGVyVmlldy5qcwppbmRleCBmZTRhNDI2MmRkOTc5ZTRhN2E0ZjA3ZmRlZjE4OWZh
NGQ2MTgwMmYxLi4xNzgyOWIyYzEyMzIzMTA4MWJhZTRjMzk2NDAzNTI1ZGIwMzk0Y2VhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0F1ZGl0TGF1bmNoZXJW
aWV3LmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQXVkaXRMYXVu
Y2hlclZpZXcuanMKQEAgLTMwLDE0ICszMCwxNSBAQAogCiAvKioKICAqIEBjb25zdHJ1Y3Rvcgot
ICogQHBhcmFtIHtmdW5jdGlvbihBcnJheS48c3RyaW5nPiwgV2ViSW5zcGVjdG9yLlByb2dyZXNz
LCBib29sZWFuLCBmdW5jdGlvbigpLCBmdW5jdGlvbigpKTp1bmRlZmluZWR9IHJ1bm5lckNhbGxi
YWNrCisgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5BdWRpdENvbnRyb2xsZXJ9IGF1ZGl0Q29udHJv
bGxlcgogICogQGV4dGVuZHMge1dlYkluc3BlY3Rvci5WaWV3fQogICovCi1XZWJJbnNwZWN0b3Iu
QXVkaXRMYXVuY2hlclZpZXcgPSBmdW5jdGlvbihydW5uZXJDYWxsYmFjaykKK1dlYkluc3BlY3Rv
ci5BdWRpdExhdW5jaGVyVmlldyA9IGZ1bmN0aW9uKGF1ZGl0Q29udHJvbGxlcikKIHsKICAgICBX
ZWJJbnNwZWN0b3IuVmlldy5jYWxsKHRoaXMpOwogCi0gICAgdGhpcy5fcnVubmVyQ2FsbGJhY2sg
PSBydW5uZXJDYWxsYmFjazsKKyAgICB0aGlzLl9hdWRpdENvbnRyb2xsZXIgPSBhdWRpdENvbnRy
b2xsZXI7CisKICAgICB0aGlzLl9jYXRlZ29yeUlkUHJlZml4ID0gImF1ZGl0LWNhdGVnb3J5LWl0
ZW0tIjsKICAgICB0aGlzLl9hdWRpdFJ1bm5pbmcgPSBmYWxzZTsKIApAQCAtMTU2LDcgKzE1Nyw3
IEBAIFdlYkluc3BlY3Rvci5BdWRpdExhdW5jaGVyVmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAg
IHsKICAgICAgICAgICAgIHRoaXMuX2Rpc3BsYXlSZXNvdXJjZUxvYWRpbmdQcm9ncmVzcyA9IGZh
bHNlOwogICAgICAgICB9Ci0gICAgICAgIHRoaXMuX3J1bm5lckNhbGxiYWNrKGNhdElkcywgdGhp
cy5fcHJvZ3Jlc3NJbmRpY2F0b3IsIHRoaXMuX2F1ZGl0UHJlc2VudFN0YXRlRWxlbWVudC5jaGVj
a2VkLCBvbkF1ZGl0U3RhcnRlZC5iaW5kKHRoaXMpLCB0aGlzLl9zZXRBdWRpdFJ1bm5pbmcuYmlu
ZCh0aGlzLCBmYWxzZSkpOworICAgICAgICB0aGlzLl9hdWRpdENvbnRyb2xsZXIuaW5pdGlhdGVB
dWRpdChjYXRJZHMsIHRoaXMuX3Byb2dyZXNzSW5kaWNhdG9yLCB0aGlzLl9hdWRpdFByZXNlbnRT
dGF0ZUVsZW1lbnQuY2hlY2tlZCwgb25BdWRpdFN0YXJ0ZWQuYmluZCh0aGlzKSwgdGhpcy5fc2V0
QXVkaXRSdW5uaW5nLmJpbmQodGhpcywgZmFsc2UpKTsKICAgICB9LAogCiAgICAgX3N0b3BBdWRp
dDogZnVuY3Rpb24oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9BdWRpdHNQYW5lbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
QXVkaXRzUGFuZWwuanMKaW5kZXggYzZlZDE3ZGIyODI3NDg1YmY2NjNhZTYyZWVlZjQxZjg1ZjI0
ZGE5Mi4uYzM0NzUwMDM3ZTgzZjU1MjYxMTFlZmY1ZWM2NzU3NmIzOTFhMGFjZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9BdWRpdHNQYW5lbC5qcworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0F1ZGl0c1BhbmVsLmpzCkBAIC01
NywxMSArNTcsMTAgQEAgV2ViSW5zcGVjdG9yLkF1ZGl0c1BhbmVsID0gZnVuY3Rpb24oKQogCiAg
ICAgdGhpcy5fY29uc3RydWN0Q2F0ZWdvcmllcygpOwogCi0gICAgdGhpcy5fbGF1bmNoZXJWaWV3
ID0gbmV3IFdlYkluc3BlY3Rvci5BdWRpdExhdW5jaGVyVmlldyh0aGlzLmluaXRpYXRlQXVkaXQu
YmluZCh0aGlzKSk7CisgICAgdGhpcy5fYXVkaXRDb250cm9sbGVyID0gbmV3IFdlYkluc3BlY3Rv
ci5BdWRpdENvbnRyb2xsZXIodGhpcyk7CisgICAgdGhpcy5fbGF1bmNoZXJWaWV3ID0gbmV3IFdl
Ykluc3BlY3Rvci5BdWRpdExhdW5jaGVyVmlldyh0aGlzLl9hdWRpdENvbnRyb2xsZXIpOwogICAg
IGZvciAodmFyIGlkIGluIHRoaXMuY2F0ZWdvcmllc0J5SWQpCiAgICAgICAgIHRoaXMuX2xhdW5j
aGVyVmlldy5hZGRDYXRlZ29yeSh0aGlzLmNhdGVnb3JpZXNCeUlkW2lkXSk7Ci0KLSAgICBXZWJJ
bnNwZWN0b3IucmVzb3VyY2VUcmVlTW9kZWwuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3Iu
UmVzb3VyY2VUcmVlTW9kZWwuRXZlbnRUeXBlcy5PbkxvYWQsIHRoaXMuX2RpZE1haW5SZXNvdXJj
ZUxvYWQsIHRoaXMpOwogfQogCiBXZWJJbnNwZWN0b3IuQXVkaXRzUGFuZWwucHJvdG90eXBlID0g
ewpAQCAtMTA3LDUyICsxMDYsMTAgQEAgV2ViSW5zcGVjdG9yLkF1ZGl0c1BhbmVsLnByb3RvdHlw
ZSA9IHsKICAgICB9LAogCiAgICAgLyoqCi0gICAgICogQHBhcmFtIHshQXJyYXkuPCFXZWJJbnNw
ZWN0b3IuQXVkaXRDYXRlZ29yeT59IGNhdGVnb3JpZXMKLSAgICAgKiBAcGFyYW0ge2Z1bmN0aW9u
KHN0cmluZywgIUFycmF5LjwhV2ViSW5zcGVjdG9yLkF1ZGl0Q2F0ZWdvcnlSZXN1bHQ+KX0gcmVz
dWx0Q2FsbGJhY2sKLSAgICAgKi8KLSAgICBfZXhlY3V0ZUF1ZGl0OiBmdW5jdGlvbihjYXRlZ29y
aWVzLCByZXN1bHRDYWxsYmFjaykKLSAgICB7Ci0gICAgICAgIHRoaXMuX3Byb2dyZXNzLnNldFRp
dGxlKFdlYkluc3BlY3Rvci5VSVN0cmluZygiUnVubmluZyBhdWRpdCIpKTsKLQotICAgICAgICBm
dW5jdGlvbiBydWxlUmVzdWx0UmVhZHlDYWxsYmFjayhjYXRlZ29yeVJlc3VsdCwgcnVsZVJlc3Vs
dCkKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKHJ1bGVSZXN1bHQgJiYgcnVsZVJlc3VsdC5j
aGlsZHJlbikKLSAgICAgICAgICAgICAgICBjYXRlZ29yeVJlc3VsdC5hZGRSdWxlUmVzdWx0KHJ1
bGVSZXN1bHQpOwotCi0gICAgICAgICAgICBpZiAodGhpcy5fcHJvZ3Jlc3MuaXNDYW5jZWxlZCgp
KQotICAgICAgICAgICAgICAgIHRoaXMuX3Byb2dyZXNzLmRvbmUoKTsKLSAgICAgICAgfQotCi0g
ICAgICAgIHZhciByZXN1bHRzID0gW107Ci0gICAgICAgIHZhciBtYWluUmVzb3VyY2VVUkwgPSBX
ZWJJbnNwZWN0b3IuaW5zcGVjdGVkUGFnZVVSTDsKLSAgICAgICAgdmFyIGNhdGVnb3JpZXNEb25l
ID0gMDsKLSAgICAgICAgZnVuY3Rpb24gY2F0ZWdvcnlEb25lQ2FsbGJhY2soKQotICAgICAgICB7
Ci0gICAgICAgICAgICBpZiAoKytjYXRlZ29yaWVzRG9uZSAhPT0gY2F0ZWdvcmllcy5sZW5ndGgp
Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgdGhpcy5fcHJvZ3Jlc3MuZG9u
ZSgpOwotICAgICAgICAgICAgcmVzdWx0Q2FsbGJhY2sobWFpblJlc291cmNlVVJMLCByZXN1bHRz
KQotICAgICAgICB9Ci0KLSAgICAgICAgdmFyIHJlcXVlc3RzID0gV2ViSW5zcGVjdG9yLm5ldHdv
cmtMb2cucmVxdWVzdHMuc2xpY2UoKTsKLSAgICAgICAgdmFyIGNvbXBvc2l0ZVByb2dyZXNzID0g
bmV3IFdlYkluc3BlY3Rvci5Db21wb3NpdGVQcm9ncmVzcyh0aGlzLl9wcm9ncmVzcyk7Ci0gICAg
ICAgIHZhciBzdWJwcm9ncmVzc2VzID0gW107Ci0gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
Y2F0ZWdvcmllcy5sZW5ndGg7ICsraSkKLSAgICAgICAgICAgIHN1YnByb2dyZXNzZXMucHVzaChj
b21wb3NpdGVQcm9ncmVzcy5jcmVhdGVTdWJQcm9ncmVzcygpKTsKLSAgICAgICAgZm9yICh2YXIg
aSA9IDA7IGkgPCBjYXRlZ29yaWVzLmxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICB2YXIgY2F0
ZWdvcnkgPSBjYXRlZ29yaWVzW2ldOwotICAgICAgICAgICAgdmFyIHJlc3VsdCA9IG5ldyBXZWJJ
bnNwZWN0b3IuQXVkaXRDYXRlZ29yeVJlc3VsdChjYXRlZ29yeSk7Ci0gICAgICAgICAgICByZXN1
bHRzLnB1c2gocmVzdWx0KTsKLSAgICAgICAgICAgIGNhdGVnb3J5LnJ1bihyZXF1ZXN0cywgcnVs
ZVJlc3VsdFJlYWR5Q2FsbGJhY2suYmluZCh0aGlzLCByZXN1bHQpLCBjYXRlZ29yeURvbmVDYWxs
YmFjay5iaW5kKHRoaXMpLCBzdWJwcm9ncmVzc2VzW2ldKTsKLSAgICAgICAgfQotICAgIH0sCi0K
LSAgICAvKioKLSAgICAgKiBAcGFyYW0ge2Z1bmN0aW9uKCl9IGxhdW5jaGVyQ2FsbGJhY2sKICAg
ICAgKiBAcGFyYW0ge3N0cmluZ30gbWFpblJlc291cmNlVVJMCiAgICAgICogQHBhcmFtIHshQXJy
YXkuPCFXZWJJbnNwZWN0b3IuQXVkaXRDYXRlZ29yeVJlc3VsdD59IHJlc3VsdHMKICAgICAgKi8K
LSAgICBfYXVkaXRGaW5pc2hlZENhbGxiYWNrOiBmdW5jdGlvbihsYXVuY2hlckNhbGxiYWNrLCBt
YWluUmVzb3VyY2VVUkwsIHJlc3VsdHMpCisgICAgYXVkaXRGaW5pc2hlZENhbGxiYWNrOiBmdW5j
dGlvbihtYWluUmVzb3VyY2VVUkwsIHJlc3VsdHMpCiAgICAgewogICAgICAgICB2YXIgY2hpbGRy
ZW4gPSB0aGlzLmF1ZGl0UmVzdWx0c1RyZWVFbGVtZW50LmNoaWxkcmVuOwogICAgICAgICB2YXIg
b3JkaW5hbCA9IDE7CkBAIC0xNjQsNTUgKzEyMSw2IEBAIFdlYkluc3BlY3Rvci5BdWRpdHNQYW5l
bC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHZhciByZXN1bHRUcmVlRWxlbWVudCA9IG5ldyBXZWJJ
bnNwZWN0b3IuQXVkaXRSZXN1bHRTaWRlYmFyVHJlZUVsZW1lbnQodGhpcywgcmVzdWx0cywgbWFp
blJlc291cmNlVVJMLCBvcmRpbmFsKTsKICAgICAgICAgdGhpcy5hdWRpdFJlc3VsdHNUcmVlRWxl
bWVudC5hcHBlbmRDaGlsZChyZXN1bHRUcmVlRWxlbWVudCk7CiAgICAgICAgIHJlc3VsdFRyZWVF
bGVtZW50LnJldmVhbEFuZFNlbGVjdCgpOwotICAgICAgICBpZiAoIXRoaXMuX3Byb2dyZXNzLmlz
Q2FuY2VsZWQoKSkKLSAgICAgICAgICAgIGxhdW5jaGVyQ2FsbGJhY2soKTsKLSAgICB9LAotCi0g
ICAgLyoqCi0gICAgICogQHBhcmFtIHtBcnJheS48c3RyaW5nPn0gY2F0ZWdvcnlJZHMKLSAgICAg
KiBAcGFyYW0ge1dlYkluc3BlY3Rvci5Qcm9ncmVzc30gcHJvZ3Jlc3MKLSAgICAgKiBAcGFyYW0g
e2Jvb2xlYW59IHJ1bkltbWVkaWF0ZWx5Ci0gICAgICogQHBhcmFtIHtmdW5jdGlvbigpfSBzdGFy
dGVkQ2FsbGJhY2sKLSAgICAgKiBAcGFyYW0ge2Z1bmN0aW9uKCl9IGZpbmlzaGVkQ2FsbGJhY2sK
LSAgICAgKi8KLSAgICBpbml0aWF0ZUF1ZGl0OiBmdW5jdGlvbihjYXRlZ29yeUlkcywgcHJvZ3Jl
c3MsIHJ1bkltbWVkaWF0ZWx5LCBzdGFydGVkQ2FsbGJhY2ssIGZpbmlzaGVkQ2FsbGJhY2spCi0g
ICAgewotICAgICAgICBpZiAoIWNhdGVnb3J5SWRzIHx8ICFjYXRlZ29yeUlkcy5sZW5ndGgpCi0g
ICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgdGhpcy5fcHJvZ3Jlc3MgPSBwcm9ncmVzczsK
LQotICAgICAgICB2YXIgY2F0ZWdvcmllcyA9IFtdOwotICAgICAgICBmb3IgKHZhciBpID0gMDsg
aSA8IGNhdGVnb3J5SWRzLmxlbmd0aDsgKytpKQotICAgICAgICAgICAgY2F0ZWdvcmllcy5wdXNo
KHRoaXMuY2F0ZWdvcmllc0J5SWRbY2F0ZWdvcnlJZHNbaV1dKTsKLQotICAgICAgICBmdW5jdGlv
biBzdGFydEF1ZGl0V2hlblJlc291cmNlc1JlYWR5KCkKLSAgICAgICAgewotICAgICAgICAgICAg
c3RhcnRlZENhbGxiYWNrKCk7Ci0gICAgICAgICAgICB0aGlzLl9leGVjdXRlQXVkaXQoY2F0ZWdv
cmllcywgdGhpcy5fYXVkaXRGaW5pc2hlZENhbGxiYWNrLmJpbmQodGhpcywgZmluaXNoZWRDYWxs
YmFjaykpOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKHJ1bkltbWVkaWF0ZWx5KQotICAgICAg
ICAgICAgc3RhcnRBdWRpdFdoZW5SZXNvdXJjZXNSZWFkeS5jYWxsKHRoaXMpOwotICAgICAgICBl
bHNlCi0gICAgICAgICAgICB0aGlzLl9yZWxvYWRSZXNvdXJjZXMoc3RhcnRBdWRpdFdoZW5SZXNv
dXJjZXNSZWFkeS5iaW5kKHRoaXMpKTsKLQotICAgICAgICBXZWJJbnNwZWN0b3IudXNlck1ldHJp
Y3MuQXVkaXRzU3RhcnRlZC5yZWNvcmQoKTsKLSAgICB9LAotCi0gICAgX3JlbG9hZFJlc291cmNl
czogZnVuY3Rpb24oY2FsbGJhY2spCi0gICAgewotICAgICAgICB0aGlzLl9wYWdlUmVsb2FkQ2Fs
bGJhY2sgPSBjYWxsYmFjazsKLSAgICAgICAgUGFnZUFnZW50LnJlbG9hZChmYWxzZSk7Ci0gICAg
fSwKLQotICAgIF9kaWRNYWluUmVzb3VyY2VMb2FkOiBmdW5jdGlvbigpCi0gICAgewotICAgICAg
ICBpZiAodGhpcy5fcGFnZVJlbG9hZENhbGxiYWNrKSB7Ci0gICAgICAgICAgICB2YXIgY2FsbGJh
Y2sgPSB0aGlzLl9wYWdlUmVsb2FkQ2FsbGJhY2s7Ci0gICAgICAgICAgICBkZWxldGUgdGhpcy5f
cGFnZVJlbG9hZENhbGxiYWNrOwotICAgICAgICAgICAgY2FsbGJhY2soKTsKLSAgICAgICAgfQog
ICAgIH0sCiAKICAgICAvKioKQEAgLTYwNyw2ICs1MTUsNyBAQCBXZWJJbnNwZWN0b3IuQXVkaXRS
dWxlcyA9IHt9OwogV2ViSW5zcGVjdG9yLkF1ZGl0Q2F0ZWdvcmllcyA9IHt9OwogCiBpbXBvcnRT
Y3JpcHQoIkF1ZGl0Q2F0ZWdvcmllcy5qcyIpOworaW1wb3J0U2NyaXB0KCJBdWRpdENvbnRyb2xs
ZXIuanMiKTsKIGltcG9ydFNjcmlwdCgiQXVkaXRGb3JtYXR0ZXJzLmpzIik7CiBpbXBvcnRTY3Jp
cHQoIkF1ZGl0TGF1bmNoZXJWaWV3LmpzIik7CiBpbXBvcnRTY3JpcHQoIkF1ZGl0UmVzdWx0Vmll
dy5qcyIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9X
ZWJLaXQucXJjIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9XZWJLaXQucXJj
CmluZGV4IDFkZWVmMzEwN2U0ZTFmODIwNDM1OGNlYmI5NTRmODI4ODI4MzZjOGYuLjM1YWJlMmI2
NjgzYWIwMDYxZTYwOTkyN2RiN2Q5ZTliNDAxMmI3NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvV2ViS2l0LnFyYworKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5xcmMKQEAgLTUsNiArNSw3IEBACiAgICAgPGZpbGU+
QXBwbGljYXRpb25DYWNoZUl0ZW1zVmlldy5qczwvZmlsZT4KICAgICA8ZmlsZT5BcHBsaWNhdGlv
bkNhY2hlTW9kZWwuanM8L2ZpbGU+CiAgICAgPGZpbGU+QXVkaXRDYXRlZ29yaWVzLmpzPC9maWxl
PgorICAgIDxmaWxlPkF1ZGl0Q29udHJvbGxlci5qczwvZmlsZT4KICAgICA8ZmlsZT5BdWRpdEZv
cm1hdHRlcnMuanM8L2ZpbGU+CiAgICAgPGZpbGU+QXVkaXRMYXVuY2hlclZpZXcuanM8L2ZpbGU+
CiAgICAgPGZpbGU+QXVkaXRSZXN1bHRWaWV3LmpzPC9maWxlPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDk0NTA1MzIzZGFk
ZGY3N2I3ZTYwNzc3OWI5ZTE3ZDI0YjhjMDkyMWYuLmM1MTc2YzBjMzEzM2Q5NTQ4MjJkNDgxYTMx
YTZiN2YxZGRiZmNjMzMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxMy0wMi0yNiAgVml2ZWsg
R2FsYXRhZ2UgIDx2aXZlay52Z0BzYW1zdW5nLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9y
OiBSZWZhY3RvciBBdWRpdHNQYW5lbCB3aXRoIEF1ZGl0Q29udHJvbGxlciBhcyBuZXdseSBpbnRy
b2R1Y2VkIGVudGl0eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTEwODY2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBpbnNwZWN0b3IvZXh0ZW5zaW9ucy9leHRlbnNpb25zLWF1ZGl0cy10ZXN0cy5qczoK
KwogMjAxMy0wMi0yNiAgQWxleGFuZGVyIFBhdmxvdiAgPGFwYXZsb3ZAY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IENTU0FnZW50LnNldFN0eWxlU2hlZXRUZXh0IGNyYXNo
ZXMgb24gaW5saW5lIHN0eWxlcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2V4
dGVuc2lvbnMvZXh0ZW5zaW9ucy1hdWRpdHMtdGVzdHMuanMgYi9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvZXh0ZW5zaW9ucy9leHRlbnNpb25zLWF1ZGl0cy10ZXN0cy5qcwppbmRleCA3NGQ3OGQ1YWI4
YzAzODM4MjVhYzFjZWRiOGRlNzQzOTQyMWNhYzc2Li5jYjI2N2FmYWE0OTc2MGIzYWIyOGE5OWJj
Zjg5MzI2YmY5MjdiZjZlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZXh0ZW5z
aW9ucy9leHRlbnNpb25zLWF1ZGl0cy10ZXN0cy5qcworKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvZXh0ZW5zaW9ucy9leHRlbnNpb25zLWF1ZGl0cy10ZXN0cy5qcwpAQCAtMjUsNyArMjUsNyBA
QCB2YXIgaW5pdGlhbGl6ZV9FeHRlbnNpb25zQXVkaXRzVGVzdCA9IGZ1bmN0aW9uKCkKICAgICAg
ICAgICAgICAgICBjYWxsYmFjaygpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0KLSAgICAg
ICAgSW5zcGVjdG9yVGVzdC5hZGRTbmlmZmVyKFdlYkluc3BlY3Rvci5wYW5lbHMuYXVkaXRzLCAi
X2F1ZGl0RmluaXNoZWRDYWxsYmFjayIsIG9uQXVkaXRzRG9uZSwgdHJ1ZSk7CisgICAgICAgIElu
c3BlY3RvclRlc3QuYWRkU25pZmZlcihXZWJJbnNwZWN0b3IucGFuZWxzLmF1ZGl0cywgImF1ZGl0
RmluaXNoZWRDYWxsYmFjayIsIG9uQXVkaXRzRG9uZSwgdHJ1ZSk7CiAKICAgICAgICAgbGF1bmNo
ZXJWaWV3Ll9sYXVuY2hCdXR0b25DbGlja2VkKCk7CiAgICAgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>190510</attachid>
            <date>2013-02-27 06:31:37 -0800</date>
            <delta_ts>2013-02-27 07:13:51 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-110866-20130227195749.patch</filename>
            <type>text/plain</type>
            <size>18408</size>
            <attacher name="Vivek Galatage">vivekg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ0MDY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjdlZmQ3NGRlMmNjY2Q2
YzNlMmMxYzI1OGVkODYwNGQ5Y2FjYzRiOS4uNzQ0MjZhYWI4Nzk2ZjI3NjViNzZjOTM4OTdlZTc3
NDllYTJiZmEwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDEzLTAyLTI3ICBWaXZl
ayBHYWxhdGFnZSAgPHZpdmVrLnZnQHNhbXN1bmcuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IFJlZmFjdG9yIEF1ZGl0c1BhbmVsIHdpdGggQXVkaXRDb250cm9sbGVyIGFzIG5ld2x5IGlu
dHJvZHVjZWQgZW50aXR5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMTA4NjYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBBdWRpdENvbnRyb2xsZXIgaXMgYmVpbmcgaW50cm9kdWNlZCBpbiBvcmRlciB0byBm
b2xsb3cgTVZDIHBhdHRlcm4gd2l0aCB0aGUgQXVkaXRzLgorICAgICAgICBUaGlzIGlzIHRoZSBm
aXJzdCBzdGVwIGFib3V0IHRoZSByZWZhY3RvcmluZy4gTW92aW5nIHRoZSBtZXRob2RzIGZyb20g
dGhlIEF1ZGl0c1BhbmVsCisgICAgICAgIGludG8gQXVkaXRDb250cm9sbGVyIHdvdWxkIGVhc2Ug
dGhlIGV2ZW50IGRyaXZlbiBhcHByb2FjaCB0byBkZS1jb3VwbGUgdGhlIEF1ZGl0c1BhbmVsCisg
ICAgICAgIGFuZCB0aGUgQXVkaXRMYXVuY2hlclZpZXcuCisKKyAgICAgICAgTm8gbmV3IHRlc3Rz
IGFzIGNvZGUgcmVmYWN0b3JpbmcuCisKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAg
ICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogaW5zcGVjdG9yL2Nv
bXBpbGUtZnJvbnQtZW5kLnB5OgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvQXVkaXRD
b250cm9sbGVyLmpzOiBBZGRlZC4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5BdWRpdENvbnRyb2xs
ZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkF1ZGl0Q29udHJvbGxlci5wcm90b3R5cGUucnVs
ZVJlc3VsdFJlYWR5Q2FsbGJhY2spOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkF1ZGl0Q29udHJv
bGxlci5wcm90b3R5cGUuY2F0ZWdvcnlEb25lQ2FsbGJhY2spOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkF1ZGl0Q29udHJvbGxlci5wcm90b3R5cGUuX2V4ZWN1dGVBdWRpdCk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuQXVkaXRDb250cm9sbGVyLnByb3RvdHlwZS5fYXVkaXRGaW5pc2hlZENhbGxi
YWNrKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5BdWRpdENvbnRyb2xsZXIucHJvdG90eXBlLnN0
YXJ0QXVkaXRXaGVuUmVzb3VyY2VzUmVhZHkpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkF1ZGl0
Q29udHJvbGxlci5wcm90b3R5cGUuaW5pdGlhdGVBdWRpdCk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuQXVkaXRDb250cm9sbGVyLnByb3RvdHlwZS5fcmVsb2FkUmVzb3VyY2VzKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5BdWRpdENvbnRyb2xsZXIucHJvdG90eXBlLl9kaWRNYWluUmVzb3VyY2VM
b2FkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0F1ZGl0TGF1bmNoZXJWaWV3Lmpz
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkF1ZGl0TGF1bmNoZXJWaWV3KToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5BdWRpdExhdW5jaGVyVmlldy5wcm90b3R5cGUuX3N0YXJ0QXVkaXQpOgorICAg
ICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvQXVkaXRzUGFuZWwuanM6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuQXVkaXRzUGFuZWwpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkF1ZGl0c1BhbmVs
LnByb3RvdHlwZS5hdWRpdEZpbmlzaGVkQ2FsbGJhY2spOgorICAgICAgICAqIGluc3BlY3Rvci9m
cm9udC1lbmQvV2ViS2l0LnFyYzoKKwogMjAxMy0wMi0yNiAgRG1pdHJ5IFp2b3J5Z2luICA8enZv
cnlnaW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIE1lcmdlZCBUaXAgYW5kIERlYnVnIGxvZyBs
ZXZlbHMgZm9yIHdlYiBjb25zb2xlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IGViNGZhYjk5OTMwMDAz
YjVjNGRjYTUyNDZhYTQ0NzQwM2Y1MDg3ZTcuLjZiZjc1MmMwZThlNjU1MGFmMWEzNmFkOWRiZGEy
ZDk3MTU1N2UzYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTU0NTUsNiArNTQ1NSw3IEBACiAKICAg
ICAgICAgJ3dlYmluc3BlY3Rvcl9hdWRpdHNfanNfZmlsZXMnOiBbCiAgICAgICAgICAgICAnaW5z
cGVjdG9yL2Zyb250LWVuZC9BdWRpdENhdGVnb3JpZXMuanMnLAorICAgICAgICAgICAgJ2luc3Bl
Y3Rvci9mcm9udC1lbmQvQXVkaXRDb250cm9sbGVyLmpzJywKICAgICAgICAgICAgICdpbnNwZWN0
b3IvZnJvbnQtZW5kL0F1ZGl0Rm9ybWF0dGVycy5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9y
L2Zyb250LWVuZC9BdWRpdExhdW5jaGVyVmlldy5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9y
L2Zyb250LWVuZC9BdWRpdFJlc3VsdFZpZXcuanMnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCAzZWY4MWYyY2U3MjQzODYzZTVhNmVhMTBlOWIw
ZGYyNGI3NjRhOGQ3Li43NGExOWQ2NDdkOGYxMWNiY2UwZDhhOWQyOTg0ZDFkZjI2NDAzNWMxIDEw
MDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagor
KysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtNzY5
OTQsNiArNzY5OTQsMTAgQEAKIAkJCQkJPgogCQkJCTwvRmlsZT4KIAkJCQk8RmlsZQorCQkJCQlS
ZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3Rvclxmcm9udC1lbmRcQXVkaXRDb250cm9sbGVyLmpzIgor
CQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5z
cGVjdG9yXGZyb250LWVuZFxBdWRpdEZvcm1hdHRlcnMuanMiCiAJCQkJCT4KIAkJCQk8L0ZpbGU+
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvY29tcGlsZS1mcm9udC1lbmQu
cHkgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvY29tcGlsZS1mcm9udC1lbmQucHkKaW5kZXgg
NGM0ZDdhYmIxNTZmNWZlMDYxNDk2Y2VjNDEwNjMyMjEzY2NmOGE2Zi4uZTk5ZTM3NzE2MzljZjgy
NDEyNGM4MTdhNzU3NWVlZGQyZjg5ODAxZCAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2NvbXBpbGUtZnJvbnQtZW5kLnB5CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9jb21waWxlLWZyb250LWVuZC5weQpAQCAtMjk1LDYgKzI5NSw3IEBAIG1vZHVsZXMgPSBbCiAg
ICAgICAgICJkZXBlbmRlbmNpZXMiOiBbImNvbXBvbmVudHMiXSwKICAgICAgICAgInNvdXJjZXMi
OiBbCiAgICAgICAgICAgICAiQXVkaXRDYXRlZ29yaWVzLmpzIiwKKyAgICAgICAgICAgICJBdWRp
dENvbnRyb2xsZXIuanMiLAogICAgICAgICAgICAgIkF1ZGl0Rm9ybWF0dGVycy5qcyIsCiAgICAg
ICAgICAgICAiQXVkaXRMYXVuY2hlclZpZXcuanMiLAogICAgICAgICAgICAgIkF1ZGl0UmVzdWx0
Vmlldy5qcyIsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L0F1ZGl0Q29udHJvbGxlci5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
QXVkaXRDb250cm9sbGVyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM2NzQ4ZjJlZWQ1OTc4ZDI1OTQ5ODJlMjE2
MWY1ZmVhMTJkNmMxN2UKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL0F1ZGl0Q29udHJvbGxlci5qcwpAQCAtMCwwICsxLDE0NSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDEzIFNhbXN1bmcgRWxlY3Ryb25pY3MuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICog
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
KyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
CisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
LyoqCisgKiBAY29uc3RydWN0b3IKKyAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLkF1ZGl0c1BhbmVs
fSBhdWRpdHNQYW5lbAorICovCitXZWJJbnNwZWN0b3IuQXVkaXRDb250cm9sbGVyID0gZnVuY3Rp
b24oYXVkaXRzUGFuZWwpCit7CisgICAgdGhpcy5fYXVkaXRzUGFuZWwgPSBhdWRpdHNQYW5lbDsK
KyAgICBXZWJJbnNwZWN0b3IucmVzb3VyY2VUcmVlTW9kZWwuYWRkRXZlbnRMaXN0ZW5lcihXZWJJ
bnNwZWN0b3IuUmVzb3VyY2VUcmVlTW9kZWwuRXZlbnRUeXBlcy5PbkxvYWQsIHRoaXMuX2RpZE1h
aW5SZXNvdXJjZUxvYWQsIHRoaXMpOworfQorCitXZWJJbnNwZWN0b3IuQXVkaXRDb250cm9sbGVy
LnByb3RvdHlwZSA9IHsKKyAgICAvKioKKyAgICAgKiBAcGFyYW0geyFBcnJheS48IVdlYkluc3Bl
Y3Rvci5BdWRpdENhdGVnb3J5Pn0gY2F0ZWdvcmllcworICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24o
c3RyaW5nLCAhQXJyYXkuPCFXZWJJbnNwZWN0b3IuQXVkaXRDYXRlZ29yeVJlc3VsdD4pfSByZXN1
bHRDYWxsYmFjaworICAgICAqLworICAgIF9leGVjdXRlQXVkaXQ6IGZ1bmN0aW9uKGNhdGVnb3Jp
ZXMsIHJlc3VsdENhbGxiYWNrKQorICAgIHsKKyAgICAgICAgdGhpcy5fcHJvZ3Jlc3Muc2V0VGl0
bGUoV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJSdW5uaW5nIGF1ZGl0IikpOworCisgICAgICAgIGZ1
bmN0aW9uIHJ1bGVSZXN1bHRSZWFkeUNhbGxiYWNrKGNhdGVnb3J5UmVzdWx0LCBydWxlUmVzdWx0
KQorICAgICAgICB7CisgICAgICAgICAgICBpZiAocnVsZVJlc3VsdCAmJiBydWxlUmVzdWx0LmNo
aWxkcmVuKQorICAgICAgICAgICAgICAgIGNhdGVnb3J5UmVzdWx0LmFkZFJ1bGVSZXN1bHQocnVs
ZVJlc3VsdCk7CisKKyAgICAgICAgICAgIGlmICh0aGlzLl9wcm9ncmVzcy5pc0NhbmNlbGVkKCkp
CisgICAgICAgICAgICAgICAgdGhpcy5fcHJvZ3Jlc3MuZG9uZSgpOworICAgICAgICB9CisKKyAg
ICAgICAgdmFyIHJlc3VsdHMgPSBbXTsKKyAgICAgICAgdmFyIG1haW5SZXNvdXJjZVVSTCA9IFdl
Ykluc3BlY3Rvci5pbnNwZWN0ZWRQYWdlVVJMOworICAgICAgICB2YXIgY2F0ZWdvcmllc0RvbmUg
PSAwOworICAgICAgICBmdW5jdGlvbiBjYXRlZ29yeURvbmVDYWxsYmFjaygpCisgICAgICAgIHsK
KyAgICAgICAgICAgIGlmICgrK2NhdGVnb3JpZXNEb25lICE9PSBjYXRlZ29yaWVzLmxlbmd0aCkK
KyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB0aGlzLl9wcm9ncmVzcy5kb25l
KCk7CisgICAgICAgICAgICByZXN1bHRDYWxsYmFjayhtYWluUmVzb3VyY2VVUkwsIHJlc3VsdHMp
CisgICAgICAgIH0KKworICAgICAgICB2YXIgcmVxdWVzdHMgPSBXZWJJbnNwZWN0b3IubmV0d29y
a0xvZy5yZXF1ZXN0cy5zbGljZSgpOworICAgICAgICB2YXIgY29tcG9zaXRlUHJvZ3Jlc3MgPSBu
ZXcgV2ViSW5zcGVjdG9yLkNvbXBvc2l0ZVByb2dyZXNzKHRoaXMuX3Byb2dyZXNzKTsKKyAgICAg
ICAgdmFyIHN1YnByb2dyZXNzZXMgPSBbXTsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBj
YXRlZ29yaWVzLmxlbmd0aDsgKytpKQorICAgICAgICAgICAgc3VicHJvZ3Jlc3Nlcy5wdXNoKGNv
bXBvc2l0ZVByb2dyZXNzLmNyZWF0ZVN1YlByb2dyZXNzKCkpOworICAgICAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IGNhdGVnb3JpZXMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgIHZhciBjYXRl
Z29yeSA9IGNhdGVnb3JpZXNbaV07CisgICAgICAgICAgICB2YXIgcmVzdWx0ID0gbmV3IFdlYklu
c3BlY3Rvci5BdWRpdENhdGVnb3J5UmVzdWx0KGNhdGVnb3J5KTsKKyAgICAgICAgICAgIHJlc3Vs
dHMucHVzaChyZXN1bHQpOworICAgICAgICAgICAgY2F0ZWdvcnkucnVuKHJlcXVlc3RzLCBydWxl
UmVzdWx0UmVhZHlDYWxsYmFjay5iaW5kKHRoaXMsIHJlc3VsdCksIGNhdGVnb3J5RG9uZUNhbGxi
YWNrLmJpbmQodGhpcyksIHN1YnByb2dyZXNzZXNbaV0pOworICAgICAgICB9CisgICAgfSwKKwor
ICAgIC8qKgorICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24oKX0gbGF1bmNoZXJDYWxsYmFjaworICAg
ICAqIEBwYXJhbSB7c3RyaW5nfSBtYWluUmVzb3VyY2VVUkwKKyAgICAgKiBAcGFyYW0geyFBcnJh
eS48IVdlYkluc3BlY3Rvci5BdWRpdENhdGVnb3J5UmVzdWx0Pn0gcmVzdWx0cworICAgICAqLwor
ICAgIF9hdWRpdEZpbmlzaGVkQ2FsbGJhY2s6IGZ1bmN0aW9uKGxhdW5jaGVyQ2FsbGJhY2ssIG1h
aW5SZXNvdXJjZVVSTCwgcmVzdWx0cykKKyAgICB7CisgICAgICAgIHRoaXMuX2F1ZGl0c1BhbmVs
LmF1ZGl0RmluaXNoZWRDYWxsYmFjayhtYWluUmVzb3VyY2VVUkwsIHJlc3VsdHMpOworICAgICAg
ICBpZiAoIXRoaXMuX3Byb2dyZXNzLmlzQ2FuY2VsZWQoKSkKKyAgICAgICAgICAgIGxhdW5jaGVy
Q2FsbGJhY2soKTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtBcnJheS48c3Ry
aW5nPn0gY2F0ZWdvcnlJZHMKKyAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5Qcm9ncmVzc30g
cHJvZ3Jlc3MKKyAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IHJ1bkltbWVkaWF0ZWx5CisgICAgICog
QHBhcmFtIHtmdW5jdGlvbigpfSBzdGFydGVkQ2FsbGJhY2sKKyAgICAgKiBAcGFyYW0ge2Z1bmN0
aW9uKCl9IGZpbmlzaGVkQ2FsbGJhY2sKKyAgICAgKi8KKyAgICBpbml0aWF0ZUF1ZGl0OiBmdW5j
dGlvbihjYXRlZ29yeUlkcywgcHJvZ3Jlc3MsIHJ1bkltbWVkaWF0ZWx5LCBzdGFydGVkQ2FsbGJh
Y2ssIGZpbmlzaGVkQ2FsbGJhY2spCisgICAgeworICAgICAgICBpZiAoIWNhdGVnb3J5SWRzIHx8
ICFjYXRlZ29yeUlkcy5sZW5ndGgpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdGhp
cy5fcHJvZ3Jlc3MgPSBwcm9ncmVzczsKKworICAgICAgICB2YXIgY2F0ZWdvcmllcyA9IFtdOwor
ICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNhdGVnb3J5SWRzLmxlbmd0aDsgKytpKQorICAg
ICAgICAgICAgY2F0ZWdvcmllcy5wdXNoKHRoaXMuX2F1ZGl0c1BhbmVsLmNhdGVnb3JpZXNCeUlk
W2NhdGVnb3J5SWRzW2ldXSk7CisKKyAgICAgICAgZnVuY3Rpb24gc3RhcnRBdWRpdFdoZW5SZXNv
dXJjZXNSZWFkeSgpCisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXJ0ZWRDYWxsYmFjaygpOwor
ICAgICAgICAgICAgdGhpcy5fZXhlY3V0ZUF1ZGl0KGNhdGVnb3JpZXMsIHRoaXMuX2F1ZGl0Rmlu
aXNoZWRDYWxsYmFjay5iaW5kKHRoaXMsIGZpbmlzaGVkQ2FsbGJhY2spKTsKKyAgICAgICAgfQor
CisgICAgICAgIGlmIChydW5JbW1lZGlhdGVseSkKKyAgICAgICAgICAgIHN0YXJ0QXVkaXRXaGVu
UmVzb3VyY2VzUmVhZHkuY2FsbCh0aGlzKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgdGhp
cy5fcmVsb2FkUmVzb3VyY2VzKHN0YXJ0QXVkaXRXaGVuUmVzb3VyY2VzUmVhZHkuYmluZCh0aGlz
KSk7CisKKyAgICAgICAgV2ViSW5zcGVjdG9yLnVzZXJNZXRyaWNzLkF1ZGl0c1N0YXJ0ZWQucmVj
b3JkKCk7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24oKT19IGNh
bGxiYWNrCisgICAgICovCisgICAgX3JlbG9hZFJlc291cmNlczogZnVuY3Rpb24oY2FsbGJhY2sp
CisgICAgeworICAgICAgICB0aGlzLl9wYWdlUmVsb2FkQ2FsbGJhY2sgPSBjYWxsYmFjazsKKyAg
ICAgICAgUGFnZUFnZW50LnJlbG9hZChmYWxzZSk7CisgICAgfSwKKworICAgIF9kaWRNYWluUmVz
b3VyY2VMb2FkOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICBpZiAodGhpcy5fcGFnZVJlbG9h
ZENhbGxiYWNrKSB7CisgICAgICAgICAgICB2YXIgY2FsbGJhY2sgPSB0aGlzLl9wYWdlUmVsb2Fk
Q2FsbGJhY2s7CisgICAgICAgICAgICBkZWxldGUgdGhpcy5fcGFnZVJlbG9hZENhbGxiYWNrOwor
ICAgICAgICAgICAgY2FsbGJhY2soKTsKKyAgICAgICAgfQorICAgIH0KK30KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQXVkaXRMYXVuY2hlclZpZXcuanMg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0F1ZGl0TGF1bmNoZXJWaWV3Lmpz
CmluZGV4IGZlNGE0MjYyZGQ5NzllNGE3YTRmMDdmZGVmMTg5ZmE0ZDYxODAyZjEuLjE3ODI5YjJj
MTIzMjMxMDgxYmFlNGMzOTY0MDM1MjVkYjAzOTRjZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQXVkaXRMYXVuY2hlclZpZXcuanMKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9BdWRpdExhdW5jaGVyVmlldy5qcwpAQCAtMzAs
MTQgKzMwLDE1IEBACiAKIC8qKgogICogQGNvbnN0cnVjdG9yCi0gKiBAcGFyYW0ge2Z1bmN0aW9u
KEFycmF5LjxzdHJpbmc+LCBXZWJJbnNwZWN0b3IuUHJvZ3Jlc3MsIGJvb2xlYW4sIGZ1bmN0aW9u
KCksIGZ1bmN0aW9uKCkpOnVuZGVmaW5lZH0gcnVubmVyQ2FsbGJhY2sKKyAqIEBwYXJhbSB7V2Vi
SW5zcGVjdG9yLkF1ZGl0Q29udHJvbGxlcn0gYXVkaXRDb250cm9sbGVyCiAgKiBAZXh0ZW5kcyB7
V2ViSW5zcGVjdG9yLlZpZXd9CiAgKi8KLVdlYkluc3BlY3Rvci5BdWRpdExhdW5jaGVyVmlldyA9
IGZ1bmN0aW9uKHJ1bm5lckNhbGxiYWNrKQorV2ViSW5zcGVjdG9yLkF1ZGl0TGF1bmNoZXJWaWV3
ID0gZnVuY3Rpb24oYXVkaXRDb250cm9sbGVyKQogewogICAgIFdlYkluc3BlY3Rvci5WaWV3LmNh
bGwodGhpcyk7CiAKLSAgICB0aGlzLl9ydW5uZXJDYWxsYmFjayA9IHJ1bm5lckNhbGxiYWNrOwor
ICAgIHRoaXMuX2F1ZGl0Q29udHJvbGxlciA9IGF1ZGl0Q29udHJvbGxlcjsKKwogICAgIHRoaXMu
X2NhdGVnb3J5SWRQcmVmaXggPSAiYXVkaXQtY2F0ZWdvcnktaXRlbS0iOwogICAgIHRoaXMuX2F1
ZGl0UnVubmluZyA9IGZhbHNlOwogCkBAIC0xNTYsNyArMTU3LDcgQEAgV2ViSW5zcGVjdG9yLkF1
ZGl0TGF1bmNoZXJWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgewogICAgICAgICAgICAgdGhp
cy5fZGlzcGxheVJlc291cmNlTG9hZGluZ1Byb2dyZXNzID0gZmFsc2U7CiAgICAgICAgIH0KLSAg
ICAgICAgdGhpcy5fcnVubmVyQ2FsbGJhY2soY2F0SWRzLCB0aGlzLl9wcm9ncmVzc0luZGljYXRv
ciwgdGhpcy5fYXVkaXRQcmVzZW50U3RhdGVFbGVtZW50LmNoZWNrZWQsIG9uQXVkaXRTdGFydGVk
LmJpbmQodGhpcyksIHRoaXMuX3NldEF1ZGl0UnVubmluZy5iaW5kKHRoaXMsIGZhbHNlKSk7Cisg
ICAgICAgIHRoaXMuX2F1ZGl0Q29udHJvbGxlci5pbml0aWF0ZUF1ZGl0KGNhdElkcywgdGhpcy5f
cHJvZ3Jlc3NJbmRpY2F0b3IsIHRoaXMuX2F1ZGl0UHJlc2VudFN0YXRlRWxlbWVudC5jaGVja2Vk
LCBvbkF1ZGl0U3RhcnRlZC5iaW5kKHRoaXMpLCB0aGlzLl9zZXRBdWRpdFJ1bm5pbmcuYmluZCh0
aGlzLCBmYWxzZSkpOwogICAgIH0sCiAKICAgICBfc3RvcEF1ZGl0OiBmdW5jdGlvbigpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0F1ZGl0c1BhbmVsLmpz
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9BdWRpdHNQYW5lbC5qcwppbmRl
eCBjNmVkMTdkYjI4Mjc0ODViZjY2M2FlNjJlZWVmNDFmODVmMjRkYTkyLi5jMzQ3NTAwMzdlODNm
NTUyNjExMWVmZjVlYzY3NTc2YjM5MWEwYWNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL0F1ZGl0c1BhbmVsLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvQXVkaXRzUGFuZWwuanMKQEAgLTU3LDExICs1NywxMCBAQCBXZWJJ
bnNwZWN0b3IuQXVkaXRzUGFuZWwgPSBmdW5jdGlvbigpCiAKICAgICB0aGlzLl9jb25zdHJ1Y3RD
YXRlZ29yaWVzKCk7CiAKLSAgICB0aGlzLl9sYXVuY2hlclZpZXcgPSBuZXcgV2ViSW5zcGVjdG9y
LkF1ZGl0TGF1bmNoZXJWaWV3KHRoaXMuaW5pdGlhdGVBdWRpdC5iaW5kKHRoaXMpKTsKKyAgICB0
aGlzLl9hdWRpdENvbnRyb2xsZXIgPSBuZXcgV2ViSW5zcGVjdG9yLkF1ZGl0Q29udHJvbGxlcih0
aGlzKTsKKyAgICB0aGlzLl9sYXVuY2hlclZpZXcgPSBuZXcgV2ViSW5zcGVjdG9yLkF1ZGl0TGF1
bmNoZXJWaWV3KHRoaXMuX2F1ZGl0Q29udHJvbGxlcik7CiAgICAgZm9yICh2YXIgaWQgaW4gdGhp
cy5jYXRlZ29yaWVzQnlJZCkKICAgICAgICAgdGhpcy5fbGF1bmNoZXJWaWV3LmFkZENhdGVnb3J5
KHRoaXMuY2F0ZWdvcmllc0J5SWRbaWRdKTsKLQotICAgIFdlYkluc3BlY3Rvci5yZXNvdXJjZVRy
ZWVNb2RlbC5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVNb2RlbC5F
dmVudFR5cGVzLk9uTG9hZCwgdGhpcy5fZGlkTWFpblJlc291cmNlTG9hZCwgdGhpcyk7CiB9CiAK
IFdlYkluc3BlY3Rvci5BdWRpdHNQYW5lbC5wcm90b3R5cGUgPSB7CkBAIC0xMDcsNTIgKzEwNiwx
MCBAQCBXZWJJbnNwZWN0b3IuQXVkaXRzUGFuZWwucHJvdG90eXBlID0gewogICAgIH0sCiAKICAg
ICAvKioKLSAgICAgKiBAcGFyYW0geyFBcnJheS48IVdlYkluc3BlY3Rvci5BdWRpdENhdGVnb3J5
Pn0gY2F0ZWdvcmllcwotICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24oc3RyaW5nLCAhQXJyYXkuPCFX
ZWJJbnNwZWN0b3IuQXVkaXRDYXRlZ29yeVJlc3VsdD4pfSByZXN1bHRDYWxsYmFjawotICAgICAq
LwotICAgIF9leGVjdXRlQXVkaXQ6IGZ1bmN0aW9uKGNhdGVnb3JpZXMsIHJlc3VsdENhbGxiYWNr
KQotICAgIHsKLSAgICAgICAgdGhpcy5fcHJvZ3Jlc3Muc2V0VGl0bGUoV2ViSW5zcGVjdG9yLlVJ
U3RyaW5nKCJSdW5uaW5nIGF1ZGl0IikpOwotCi0gICAgICAgIGZ1bmN0aW9uIHJ1bGVSZXN1bHRS
ZWFkeUNhbGxiYWNrKGNhdGVnb3J5UmVzdWx0LCBydWxlUmVzdWx0KQotICAgICAgICB7Ci0gICAg
ICAgICAgICBpZiAocnVsZVJlc3VsdCAmJiBydWxlUmVzdWx0LmNoaWxkcmVuKQotICAgICAgICAg
ICAgICAgIGNhdGVnb3J5UmVzdWx0LmFkZFJ1bGVSZXN1bHQocnVsZVJlc3VsdCk7Ci0KLSAgICAg
ICAgICAgIGlmICh0aGlzLl9wcm9ncmVzcy5pc0NhbmNlbGVkKCkpCi0gICAgICAgICAgICAgICAg
dGhpcy5fcHJvZ3Jlc3MuZG9uZSgpOwotICAgICAgICB9Ci0KLSAgICAgICAgdmFyIHJlc3VsdHMg
PSBbXTsKLSAgICAgICAgdmFyIG1haW5SZXNvdXJjZVVSTCA9IFdlYkluc3BlY3Rvci5pbnNwZWN0
ZWRQYWdlVVJMOwotICAgICAgICB2YXIgY2F0ZWdvcmllc0RvbmUgPSAwOwotICAgICAgICBmdW5j
dGlvbiBjYXRlZ29yeURvbmVDYWxsYmFjaygpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICgr
K2NhdGVnb3JpZXNEb25lICE9PSBjYXRlZ29yaWVzLmxlbmd0aCkKLSAgICAgICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgICAgICB0aGlzLl9wcm9ncmVzcy5kb25lKCk7Ci0gICAgICAgICAgICBy
ZXN1bHRDYWxsYmFjayhtYWluUmVzb3VyY2VVUkwsIHJlc3VsdHMpCi0gICAgICAgIH0KLQotICAg
ICAgICB2YXIgcmVxdWVzdHMgPSBXZWJJbnNwZWN0b3IubmV0d29ya0xvZy5yZXF1ZXN0cy5zbGlj
ZSgpOwotICAgICAgICB2YXIgY29tcG9zaXRlUHJvZ3Jlc3MgPSBuZXcgV2ViSW5zcGVjdG9yLkNv
bXBvc2l0ZVByb2dyZXNzKHRoaXMuX3Byb2dyZXNzKTsKLSAgICAgICAgdmFyIHN1YnByb2dyZXNz
ZXMgPSBbXTsKLSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjYXRlZ29yaWVzLmxlbmd0aDsg
KytpKQotICAgICAgICAgICAgc3VicHJvZ3Jlc3Nlcy5wdXNoKGNvbXBvc2l0ZVByb2dyZXNzLmNy
ZWF0ZVN1YlByb2dyZXNzKCkpOwotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNhdGVnb3Jp
ZXMubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgIHZhciBjYXRlZ29yeSA9IGNhdGVnb3JpZXNb
aV07Ci0gICAgICAgICAgICB2YXIgcmVzdWx0ID0gbmV3IFdlYkluc3BlY3Rvci5BdWRpdENhdGVn
b3J5UmVzdWx0KGNhdGVnb3J5KTsKLSAgICAgICAgICAgIHJlc3VsdHMucHVzaChyZXN1bHQpOwot
ICAgICAgICAgICAgY2F0ZWdvcnkucnVuKHJlcXVlc3RzLCBydWxlUmVzdWx0UmVhZHlDYWxsYmFj
ay5iaW5kKHRoaXMsIHJlc3VsdCksIGNhdGVnb3J5RG9uZUNhbGxiYWNrLmJpbmQodGhpcyksIHN1
YnByb2dyZXNzZXNbaV0pOwotICAgICAgICB9Ci0gICAgfSwKLQotICAgIC8qKgotICAgICAqIEBw
YXJhbSB7ZnVuY3Rpb24oKX0gbGF1bmNoZXJDYWxsYmFjawogICAgICAqIEBwYXJhbSB7c3RyaW5n
fSBtYWluUmVzb3VyY2VVUkwKICAgICAgKiBAcGFyYW0geyFBcnJheS48IVdlYkluc3BlY3Rvci5B
dWRpdENhdGVnb3J5UmVzdWx0Pn0gcmVzdWx0cwogICAgICAqLwotICAgIF9hdWRpdEZpbmlzaGVk
Q2FsbGJhY2s6IGZ1bmN0aW9uKGxhdW5jaGVyQ2FsbGJhY2ssIG1haW5SZXNvdXJjZVVSTCwgcmVz
dWx0cykKKyAgICBhdWRpdEZpbmlzaGVkQ2FsbGJhY2s6IGZ1bmN0aW9uKG1haW5SZXNvdXJjZVVS
TCwgcmVzdWx0cykKICAgICB7CiAgICAgICAgIHZhciBjaGlsZHJlbiA9IHRoaXMuYXVkaXRSZXN1
bHRzVHJlZUVsZW1lbnQuY2hpbGRyZW47CiAgICAgICAgIHZhciBvcmRpbmFsID0gMTsKQEAgLTE2
NCw1NSArMTIxLDYgQEAgV2ViSW5zcGVjdG9yLkF1ZGl0c1BhbmVsLnByb3RvdHlwZSA9IHsKICAg
ICAgICAgdmFyIHJlc3VsdFRyZWVFbGVtZW50ID0gbmV3IFdlYkluc3BlY3Rvci5BdWRpdFJlc3Vs
dFNpZGViYXJUcmVlRWxlbWVudCh0aGlzLCByZXN1bHRzLCBtYWluUmVzb3VyY2VVUkwsIG9yZGlu
YWwpOwogICAgICAgICB0aGlzLmF1ZGl0UmVzdWx0c1RyZWVFbGVtZW50LmFwcGVuZENoaWxkKHJl
c3VsdFRyZWVFbGVtZW50KTsKICAgICAgICAgcmVzdWx0VHJlZUVsZW1lbnQucmV2ZWFsQW5kU2Vs
ZWN0KCk7Ci0gICAgICAgIGlmICghdGhpcy5fcHJvZ3Jlc3MuaXNDYW5jZWxlZCgpKQotICAgICAg
ICAgICAgbGF1bmNoZXJDYWxsYmFjaygpOwotICAgIH0sCi0KLSAgICAvKioKLSAgICAgKiBAcGFy
YW0ge0FycmF5LjxzdHJpbmc+fSBjYXRlZ29yeUlkcwotICAgICAqIEBwYXJhbSB7V2ViSW5zcGVj
dG9yLlByb2dyZXNzfSBwcm9ncmVzcwotICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gcnVuSW1tZWRp
YXRlbHkKLSAgICAgKiBAcGFyYW0ge2Z1bmN0aW9uKCl9IHN0YXJ0ZWRDYWxsYmFjawotICAgICAq
IEBwYXJhbSB7ZnVuY3Rpb24oKX0gZmluaXNoZWRDYWxsYmFjawotICAgICAqLwotICAgIGluaXRp
YXRlQXVkaXQ6IGZ1bmN0aW9uKGNhdGVnb3J5SWRzLCBwcm9ncmVzcywgcnVuSW1tZWRpYXRlbHks
IHN0YXJ0ZWRDYWxsYmFjaywgZmluaXNoZWRDYWxsYmFjaykKLSAgICB7Ci0gICAgICAgIGlmICgh
Y2F0ZWdvcnlJZHMgfHwgIWNhdGVnb3J5SWRzLmxlbmd0aCkKLSAgICAgICAgICAgIHJldHVybjsK
LQotICAgICAgICB0aGlzLl9wcm9ncmVzcyA9IHByb2dyZXNzOwotCi0gICAgICAgIHZhciBjYXRl
Z29yaWVzID0gW107Ci0gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2F0ZWdvcnlJZHMubGVu
Z3RoOyArK2kpCi0gICAgICAgICAgICBjYXRlZ29yaWVzLnB1c2godGhpcy5jYXRlZ29yaWVzQnlJ
ZFtjYXRlZ29yeUlkc1tpXV0pOwotCi0gICAgICAgIGZ1bmN0aW9uIHN0YXJ0QXVkaXRXaGVuUmVz
b3VyY2VzUmVhZHkoKQotICAgICAgICB7Ci0gICAgICAgICAgICBzdGFydGVkQ2FsbGJhY2soKTsK
LSAgICAgICAgICAgIHRoaXMuX2V4ZWN1dGVBdWRpdChjYXRlZ29yaWVzLCB0aGlzLl9hdWRpdEZp
bmlzaGVkQ2FsbGJhY2suYmluZCh0aGlzLCBmaW5pc2hlZENhbGxiYWNrKSk7Ci0gICAgICAgIH0K
LQotICAgICAgICBpZiAocnVuSW1tZWRpYXRlbHkpCi0gICAgICAgICAgICBzdGFydEF1ZGl0V2hl
blJlc291cmNlc1JlYWR5LmNhbGwodGhpcyk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHRo
aXMuX3JlbG9hZFJlc291cmNlcyhzdGFydEF1ZGl0V2hlblJlc291cmNlc1JlYWR5LmJpbmQodGhp
cykpOwotCi0gICAgICAgIFdlYkluc3BlY3Rvci51c2VyTWV0cmljcy5BdWRpdHNTdGFydGVkLnJl
Y29yZCgpOwotICAgIH0sCi0KLSAgICBfcmVsb2FkUmVzb3VyY2VzOiBmdW5jdGlvbihjYWxsYmFj
aykKLSAgICB7Ci0gICAgICAgIHRoaXMuX3BhZ2VSZWxvYWRDYWxsYmFjayA9IGNhbGxiYWNrOwot
ICAgICAgICBQYWdlQWdlbnQucmVsb2FkKGZhbHNlKTsKLSAgICB9LAotCi0gICAgX2RpZE1haW5S
ZXNvdXJjZUxvYWQ6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIGlmICh0aGlzLl9wYWdlUmVs
b2FkQ2FsbGJhY2spIHsKLSAgICAgICAgICAgIHZhciBjYWxsYmFjayA9IHRoaXMuX3BhZ2VSZWxv
YWRDYWxsYmFjazsKLSAgICAgICAgICAgIGRlbGV0ZSB0aGlzLl9wYWdlUmVsb2FkQ2FsbGJhY2s7
Ci0gICAgICAgICAgICBjYWxsYmFjaygpOwotICAgICAgICB9CiAgICAgfSwKIAogICAgIC8qKgpA
QCAtNjA3LDYgKzUxNSw3IEBAIFdlYkluc3BlY3Rvci5BdWRpdFJ1bGVzID0ge307CiBXZWJJbnNw
ZWN0b3IuQXVkaXRDYXRlZ29yaWVzID0ge307CiAKIGltcG9ydFNjcmlwdCgiQXVkaXRDYXRlZ29y
aWVzLmpzIik7CitpbXBvcnRTY3JpcHQoIkF1ZGl0Q29udHJvbGxlci5qcyIpOwogaW1wb3J0U2Ny
aXB0KCJBdWRpdEZvcm1hdHRlcnMuanMiKTsKIGltcG9ydFNjcmlwdCgiQXVkaXRMYXVuY2hlclZp
ZXcuanMiKTsKIGltcG9ydFNjcmlwdCgiQXVkaXRSZXN1bHRWaWV3LmpzIik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5xcmMgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5xcmMKaW5kZXggMWRlZWYzMTA3ZTRl
MWY4MjA0MzU4Y2ViYjk1NGY4Mjg4MjgzNmM4Zi4uMzVhYmUyYjY2ODNhYjAwNjFlNjA5OTI3ZGI3
ZDllOWI0MDEyYjc0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9XZWJLaXQucXJjCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
V2ViS2l0LnFyYwpAQCAtNSw2ICs1LDcgQEAKICAgICA8ZmlsZT5BcHBsaWNhdGlvbkNhY2hlSXRl
bXNWaWV3LmpzPC9maWxlPgogICAgIDxmaWxlPkFwcGxpY2F0aW9uQ2FjaGVNb2RlbC5qczwvZmls
ZT4KICAgICA8ZmlsZT5BdWRpdENhdGVnb3JpZXMuanM8L2ZpbGU+CisgICAgPGZpbGU+QXVkaXRD
b250cm9sbGVyLmpzPC9maWxlPgogICAgIDxmaWxlPkF1ZGl0Rm9ybWF0dGVycy5qczwvZmlsZT4K
ICAgICA8ZmlsZT5BdWRpdExhdW5jaGVyVmlldy5qczwvZmlsZT4KICAgICA8ZmlsZT5BdWRpdFJl
c3VsdFZpZXcuanM8L2ZpbGU+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNjZhYTRhNDY4YjRlMmI3ZjVjMGJjYTI1YjBjYzBl
NGYyYzRhODNiZS4uMjZlYjc0NzNiNjZiZWFmMDRiYjgzYWVjMWM4NGNlOTBlNGUxMjI5MCAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDEyIEBACisyMDEzLTAyLTI3ICBWaXZlayBHYWxhdGFnZSAgPHZpdmVrLnZn
QHNhbXN1bmcuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IFJlZmFjdG9yIEF1ZGl0c1Bh
bmVsIHdpdGggQXVkaXRDb250cm9sbGVyIGFzIG5ld2x5IGludHJvZHVjZWQgZW50aXR5CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTA4NjYKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGluc3BlY3Rvci9l
eHRlbnNpb25zL2V4dGVuc2lvbnMtYXVkaXRzLXRlc3RzLmpzOgorCiAyMDEzLTAyLTI2ICBTdGVw
aGVuIENoZW5uZXkgIDxzY2hlbm5leUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW0Nocm9taXVt
XSBOZXcgYmFzZWxpbmVzIGZvciBjc3MzLW1vZHNlbC0xNWMKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2luc3BlY3Rvci9leHRlbnNpb25zL2V4dGVuc2lvbnMtYXVkaXRzLXRlc3RzLmpzIGIvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL2V4dGVuc2lvbnMvZXh0ZW5zaW9ucy1hdWRpdHMtdGVzdHMuanMK
aW5kZXggNzRkNzhkNWFiOGMwMzgzODI1YWMxY2VkYjhkZTc0Mzk0MjFjYWM3Ni4uY2IyNjdhZmFh
NDk3NjBiM2FiMjhhOTliY2Y4OTMyNmJmOTI3YmY2ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL2V4dGVuc2lvbnMvZXh0ZW5zaW9ucy1hdWRpdHMtdGVzdHMuanMKKysrIGIvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL2V4dGVuc2lvbnMvZXh0ZW5zaW9ucy1hdWRpdHMtdGVzdHMuanMK
QEAgLTI1LDcgKzI1LDcgQEAgdmFyIGluaXRpYWxpemVfRXh0ZW5zaW9uc0F1ZGl0c1Rlc3QgPSBm
dW5jdGlvbigpCiAgICAgICAgICAgICAgICAgY2FsbGJhY2soKTsKICAgICAgICAgICAgIH0pOwog
ICAgICAgICB9Ci0gICAgICAgIEluc3BlY3RvclRlc3QuYWRkU25pZmZlcihXZWJJbnNwZWN0b3Iu
cGFuZWxzLmF1ZGl0cywgIl9hdWRpdEZpbmlzaGVkQ2FsbGJhY2siLCBvbkF1ZGl0c0RvbmUsIHRy
dWUpOworICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFNuaWZmZXIoV2ViSW5zcGVjdG9yLnBhbmVs
cy5hdWRpdHMsICJhdWRpdEZpbmlzaGVkQ2FsbGJhY2siLCBvbkF1ZGl0c0RvbmUsIHRydWUpOwog
CiAgICAgICAgIGxhdW5jaGVyVmlldy5fbGF1bmNoQnV0dG9uQ2xpY2tlZCgpOwogICAgIH0K
</data>

          </attachment>
      

    </bug>

</bugzilla>