<?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>85710</bug_id>
          
          <creation_ts>2012-05-05 07:47:18 -0700</creation_ts>
          <short_desc>Web Inspector: convert standalone functions save/append/savedURL/appendedToURL into WebInspector.FileManager object.</short_desc>
          <delta_ts>2012-05-05 08:35:55 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Ilya Tikhonovsky">loislo</reporter>
          <assigned_to name="Ilya Tikhonovsky">loislo</assigned_to>
          <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>616962</commentid>
    <comment_count>0</comment_count>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-05-05 07:47:18 -0700</bug_when>
    <thetext>The idea is to have an object and be able to add/remove event listeners from it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>616964</commentid>
    <comment_count>1</comment_count>
      <attachid>140399</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-05-05 07:49:24 -0700</bug_when>
    <thetext>Created attachment 140399
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>616970</commentid>
    <comment_count>2</comment_count>
      <attachid>140399</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-05-05 07:58:32 -0700</bug_when>
    <thetext>Comment on attachment 140399
Patch

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

&gt; Source/WebCore/inspector/front-end/HeapSnapshotView.js:872
&gt; +        return this._loaded &amp;&amp; !this._savedChunksCount &amp;&amp; WebInspector.fileManager.canAppendTo();

canAppendTo -&gt; canAppend as there is no argument.

&gt; Source/WebCore/inspector/front-end/HeapSnapshotView.js:878
&gt; +    _startWritingSnapshot: function(event)

I&apos;d leave this function internal to save(), you should be able to remove it as WebInspector.fileManager.removeEventListener(WebInspector.FileManager.EventTypes.SavedURL, startWritingSnapshot, this);

&gt; Source/WebCore/inspector/front-end/InspectorFrontendHostStub.js:184
&gt; +WebInspector.FileManager = function()

Move it to a separate file?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>616979</commentid>
    <comment_count>3</comment_count>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-05-05 08:32:28 -0700</bug_when>
    <thetext>Committed r116222: &lt;http://trac.webkit.org/changeset/116222&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>616980</commentid>
    <comment_count>4</comment_count>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-05-05 08:35:08 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 140399 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=140399&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/inspector/front-end/HeapSnapshotView.js:872
&gt; &gt; +        return this._loaded &amp;&amp; !this._savedChunksCount &amp;&amp; WebInspector.fileManager.canAppendTo();

done 

&gt; 
&gt; canAppendTo -&gt; canAppend as there is no argument.
&gt; 
&gt; &gt; Source/WebCore/inspector/front-end/HeapSnapshotView.js:878
&gt; &gt; +    _startWritingSnapshot: function(event)
&gt; 
&gt; I&apos;d leave this function internal to save(), you should be able to remove it as WebInspector.fileManager.removeEventListener(WebInspector.FileManager.EventTypes.SavedURL, startWritingSnapshot, this);

done

&gt; 
&gt; &gt; Source/WebCore/inspector/front-end/InspectorFrontendHostStub.js:184
&gt; &gt; +WebInspector.FileManager = function()
&gt; 
&gt; Move it to a separate file?

done</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>616981</commentid>
    <comment_count>5</comment_count>
      <attachid>140403</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-05-05 08:35:55 -0700</bug_when>
    <thetext>Created attachment 140403
actually landed</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>140399</attachid>
            <date>2012-05-05 07:49:24 -0700</date>
            <delta_ts>2012-05-05 08:35:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-85710-20120505184922.patch</filename>
            <type>text/plain</type>
            <size>15043</size>
            <attacher name="Ilya Tikhonovsky">loislo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE2MjIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTMwZGY4MTI5ZTQ3NTQ3
ZjIyMmUxOTRmZjE0ZjdjOWRjZjIyOGE0Yy4uYTM2MDE1YTU5NDhkYzRjNzY4NmEwODA5ZWZhY2Yz
ODUxOTczZTc1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDEyLTA1LTA1ICBJbHlh
IFRpa2hvbm92c2t5ICA8bG9pc2xvQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVj
dG9yOiBjb252ZXJ0IHN0YW5kYWxvbmUgZnVuY3Rpb25zIHNhdmUvYXBwZW5kL3NhdmVkVVJML2Fw
cGVuZGVkVG9VUkwgaW50byBXZWJJbnNwZWN0b3IuRmlsZU1hbmFnZXIgb2JqZWN0LgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODU3MTAKKworICAgICAg
ICBUaGUgaWRlYSBpcyB0byBoYXZlIGFuIG9iamVjdCBhbmQgYmUgYWJsZSB0byBhZGQvcmVtb3Zl
IGV2ZW50IGxpc3RlbmVycyBmcm9tIGl0LgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9IZWFwU25hcHNob3RWaWV3
LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBQcm9maWxlSGVhZGVyLnByb3RvdHlwZS5f
c2F2ZVN0YXR1c1VwZGF0ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFByb2ZpbGVIZWFk
ZXIucHJvdG90eXBlLnB1c2hKU09OQ2h1bmspOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBQ
cm9maWxlSGVhZGVyLnByb3RvdHlwZS5jYW5TYXZlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5I
ZWFwUHJvZmlsZUhlYWRlci5wcm90b3R5cGUuX3N0YXJ0V3JpdGluZ1NuYXBzaG90KToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5IZWFwUHJvZmlsZUhlYWRlci5wcm90b3R5cGUuc2F2ZSk6CisgICAg
ICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9JbnNwZWN0b3JGcm9udGVuZEFQSS5qczoKKyAgICAg
ICAgKEluc3BlY3RvckZyb250ZW5kQVBJLnNhdmVkVVJMKToKKyAgICAgICAgKEluc3BlY3RvckZy
b250ZW5kQVBJLmFwcGVuZGVkVG9VUkwpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQv
SW5zcGVjdG9yRnJvbnRlbmRIb3N0U3R1Yi5qczoKKyAgICAgICAgKC5XZWJJbnNwZWN0b3IuSW5z
cGVjdG9yRnJvbnRlbmRIb3N0U3R1Yi5wcm90b3R5cGUuY2FuQXBwZW5kKToKKyAgICAgICAgKC5X
ZWJJbnNwZWN0b3IuSW5zcGVjdG9yRnJvbnRlbmRIb3N0U3R1Yi5wcm90b3R5cGUuYXBwZW5kKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5GaWxlTWFuYWdlcik6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuRmlsZU1hbmFnZXIucHJvdG90eXBlLmNhblNhdmUpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkZpbGVNYW5hZ2VyLnByb3RvdHlwZS5jYW5BcHBlbmRUbyk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuRmlsZU1hbmFnZXIucHJvdG90eXBlLmFwcGVuZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
RmlsZU1hbmFnZXIucHJvdG90eXBlLmFwcGVuZGVkVG9VUkwpOgorICAgICAgICAqIGluc3BlY3Rv
ci9mcm9udC1lbmQvUHJvZmlsZXNQYW5lbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Qcm9m
aWxlSGVhZGVyLnByb3RvdHlwZS5sb2FkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Qcm9maWxl
SGVhZGVyLnByb3RvdHlwZS5jYW5TYXZlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Qcm9maWxl
SGVhZGVyLnByb3RvdHlwZS5zYXZlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Qcm9maWxlU2lk
ZWJhclRyZWVFbGVtZW50LnByb3RvdHlwZS5oYW5kbGVDb250ZXh0TWVudUV2ZW50KToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1RleHRWaWV3ZXIuanM6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuVGV4dFZpZXdlci5wcm90b3R5cGUuX2NvbW1pdEVkaXRpbmcpOgorICAgICAgICAqIGlu
c3BlY3Rvci9mcm9udC1lbmQvVGltZWxpbmVNb2RlbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5UaW1lbGluZU1vZGVsLnByb3RvdHlwZS5zYXZlVG9GaWxlKToKKyAgICAgICAgKiBpbnNwZWN0
b3IvZnJvbnQtZW5kL2V4dGVybnMuanM6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9p
bnNwZWN0b3IuanM6CisKIDIwMTItMDUtMDUgIEFuZHJleSBLb3N5YWtvdiAgPGNhc2VxQGNocm9t
aXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBhZGQgc2VwYXJhdGUgdGltZWxpbmUg
b3ZlcnZpZXcgaXRlbSBmb3IgdGhlIGZyYW1lIG1vZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSGVhcFNuYXBzaG90Vmlldy5qcyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSGVhcFNuYXBzaG90Vmlldy5qcwppbmRleCA0ZDYyMDQ1
NWY4MTI0ZWYzZjlkMTRmNWViNmE4NjA5YmE1MGIxOGIxLi45ZDQyOGVhODcyNjZhYjBlZTVmZjky
ZDZkZWNlOGQxOTgzOTcyODRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL0hlYXBTbmFwc2hvdFZpZXcuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9IZWFwU25hcHNob3RWaWV3LmpzCkBAIC03ODgsNiArNzg4LDEwIEBAIFdl
Ykluc3BlY3Rvci5IZWFwUHJvZmlsZUhlYWRlciA9IGZ1bmN0aW9uKHByb2ZpbGVUeXBlLCB0aXRs
ZSwgdWlkLCBtYXhKU09iamVjdElkCiB9CiAKIFdlYkluc3BlY3Rvci5IZWFwUHJvZmlsZUhlYWRl
ci5wcm90b3R5cGUgPSB7CisgICAgLyoqCisgICAgICogQG92ZXJyaWRlCisgICAgICogQHBhcmFt
IHtGdW5jdGlvbn0gY2FsbGJhY2sKKyAgICAgKi8KICAgICBsb2FkOiBmdW5jdGlvbihjYWxsYmFj
aykKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9sb2FkZWQpIHsKQEAgLTgxNSwyMSArODE5LDMw
IEBAIFdlYkluc3BlY3Rvci5IZWFwUHJvZmlsZUhlYWRlci5wcm90b3R5cGUgPSB7CiAgICAgICAg
IH0KICAgICB9LAogCi0gICAgX3NhdmVTdGF0dXNVcGRhdGU6IGZ1bmN0aW9uKCkKKyAgICAvKioK
KyAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5FdmVudH0gZXZlbnQKKyAgICAgKi8KKyAgICBf
c2F2ZVN0YXR1c1VwZGF0ZTogZnVuY3Rpb24oZXZlbnQpCiAgICAgewotICAgICAgICArK3RoaXMu
X3NhdmVkQ2h1bmtzQ291bnQ7Ci0gICAgICAgIGlmICh0aGlzLl9zYXZlZENodW5rc0NvdW50ID09
PSB0aGlzLl90b3RhbE51bWJlck9mQ2h1bmtzKSB7CisgICAgICAgIGlmIChldmVudC5kYXRhICE9
PSB0aGlzLl9maWxlTmFtZSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgaWYgKCsrdGhp
cy5fc2F2ZWRDaHVua3NDb3VudCA9PT0gdGhpcy5fdG90YWxOdW1iZXJPZkNodW5rcykgewogICAg
ICAgICAgICAgdGhpcy5zaWRlYmFyRWxlbWVudC5zdWJ0aXRsZSA9IE51bWJlci5ieXRlc1RvU3Ry
aW5nKHRoaXMuX3Byb3h5LnRvdGFsU2l6ZSk7CiAgICAgICAgICAgICB0aGlzLnNpZGViYXJFbGVt
ZW50LndhaXQgPSBmYWxzZTsKKyAgICAgICAgICAgIHRoaXMuX3NhdmVkQ2h1bmtzQ291bnQgPSAw
OworICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmZpbGVNYW5hZ2VyLnJlbW92ZUV2ZW50TGlzdGVu
ZXIoV2ViSW5zcGVjdG9yLkZpbGVNYW5hZ2VyLkV2ZW50VHlwZXMuQXBwZW5kZWRUb1VSTCwgdGhp
cy5fc2F2ZVN0YXR1c1VwZGF0ZSwgdGhpcyk7CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAg
dGhpcy5zaWRlYmFyRWxlbWVudC5zdWJ0aXRsZSA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiU2F2
aW5nXHUyMDI2ICVkXCUiLCBNYXRoLmZsb29yKHRoaXMuX3NhdmVkQ2h1bmtzQ291bnQgKiAxMDAg
LyB0aGlzLl90b3RhbE51bWJlck9mQ2h1bmtzKSk7CiAgICAgfSwKIAorICAgIC8qKgorICAgICAq
IEBwYXJhbSB7c3RyaW5nfSBjaHVuaworICAgICAqLwogICAgIHB1c2hKU09OQ2h1bms6IGZ1bmN0
aW9uKGNodW5rKQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX2xvYWRlZCkgewogICAgICAgICAg
ICAgdGhpcy5zaWRlYmFyRWxlbWVudC53YWl0ID0gdHJ1ZTsKLSAgICAgICAgICAgIFdlYkluc3Bl
Y3Rvci5hcHBlbmQodGhpcy5fZmlsZU5hbWUsIGNodW5rLCB0aGlzLl9zYXZlU3RhdHVzVXBkYXRl
LmJpbmQodGhpcykpOworICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmZpbGVNYW5hZ2VyLmFwcGVu
ZCh0aGlzLl9maWxlTmFtZSwgY2h1bmspOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAg
Kyt0aGlzLl90b3RhbE51bWJlck9mQ2h1bmtzOwogICAgICAgICAgICAgdGhpcy5fcHJveHkucHVz
aEpTT05DaHVuayhjaHVuayk7CkBAIC04NTAsMjIgKzg2MywzOCBAQCBXZWJJbnNwZWN0b3IuSGVh
cFByb2ZpbGVIZWFkZXIucHJvdG90eXBlID0gewogICAgICAgICAgICAgdGhpcy5zaWRlYmFyRWxl
bWVudC5zdWJ0aXRsZSA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiUGFyc2luZ1x1MjAyNiIpOwog
ICAgIH0sCiAKKyAgICAvKioKKyAgICAgKiBAb3ZlcnJpZGUKKyAgICAgKiBAcmV0dXJuIHtib29s
ZWFufQorICAgICAqLwogICAgIGNhblNhdmU6IGZ1bmN0aW9uKCkKICAgICB7Ci0gICAgICAgIHJl
dHVybiB0aGlzLl9sb2FkZWQgJiYgSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNhblNhdmUoKSAmJiAo
ImFwcGVuZCIgaW4gSW5zcGVjdG9yRnJvbnRlbmRIb3N0KTsKKyAgICAgICAgcmV0dXJuIHRoaXMu
X2xvYWRlZCAmJiAhdGhpcy5fc2F2ZWRDaHVua3NDb3VudCAmJiBXZWJJbnNwZWN0b3IuZmlsZU1h
bmFnZXIuY2FuQXBwZW5kVG8oKTsKICAgICB9LAogCisgICAgLyoqCisgICAgICogQHBhcmFtIHtX
ZWJJbnNwZWN0b3IuRXZlbnR9IGV2ZW50CisgICAgICovCisgICAgX3N0YXJ0V3JpdGluZ1NuYXBz
aG90OiBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAgICAgIGlmIChldmVudC5kYXRhICE9PSB0
aGlzLl9maWxlTmFtZSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgdGhpcy5zaWRlYmFy
RWxlbWVudC53YWl0ID0gdHJ1ZTsKKyAgICAgICAgdGhpcy5zaWRlYmFyRWxlbWVudC5zdWJ0aXRs
ZSA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiU2F2aW5nXHUyMDI2IDBcJSIpOworICAgICAgICB0
aGlzLl9zYXZlZENodW5rc0NvdW50ID0gMDsKKyAgICAgICAgV2ViSW5zcGVjdG9yLmZpbGVNYW5h
Z2VyLnJlbW92ZUV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkZpbGVNYW5hZ2VyLkV2ZW50VHlw
ZXMuU2F2ZWRVUkwsIHRoaXMuX3N0YXJ0V3JpdGluZ1NuYXBzaG90LCB0aGlzKTsKKyAgICAgICAg
V2ViSW5zcGVjdG9yLmZpbGVNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkZp
bGVNYW5hZ2VyLkV2ZW50VHlwZXMuQXBwZW5kZWRUb1VSTCwgdGhpcy5fc2F2ZVN0YXR1c1VwZGF0
ZSwgdGhpcyk7CisgICAgICAgIFByb2ZpbGVyQWdlbnQuZ2V0UHJvZmlsZSh0aGlzLnR5cGVJZCwg
dGhpcy51aWQpOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAb3ZlcnJpZGUKKyAgICAgKi8K
ICAgICBzYXZlOiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICBmdW5jdGlvbiBzdGFydFdyaXRp
bmdTbmFwc2hvdCgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHRoaXMuc2lkZWJhckVsZW1lbnQu
d2FpdCA9IHRydWU7Ci0gICAgICAgICAgICB0aGlzLnNpZGViYXJFbGVtZW50LnN1YnRpdGxlID0g
V2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTYXZpbmdcdTIwMjYgMFwlIik7Ci0gICAgICAgICAgICB0
aGlzLl9zYXZlZENodW5rc0NvdW50ID0gMDsKLSAgICAgICAgICAgIFByb2ZpbGVyQWdlbnQuZ2V0
UHJvZmlsZSh0aGlzLnR5cGVJZCwgdGhpcy51aWQpOwotICAgICAgICB9CiAgICAgICAgIHRoaXMu
X2ZpbGVOYW1lID0gdGhpcy5fZmlsZU5hbWUgfHwgIkhlYXAtIiArIG5ldyBEYXRlKCkudG9JU084
NjAxQ29tcGFjdCgpICsgIi5qc29uIjsKLSAgICAgICAgV2ViSW5zcGVjdG9yLnNhdmUodGhpcy5f
ZmlsZU5hbWUsICIiLCB0cnVlLCBzdGFydFdyaXRpbmdTbmFwc2hvdC5iaW5kKHRoaXMpKTsKKyAg
ICAgICAgV2ViSW5zcGVjdG9yLmZpbGVNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVj
dG9yLkZpbGVNYW5hZ2VyLkV2ZW50VHlwZXMuU2F2ZWRVUkwsIHRoaXMuX3N0YXJ0V3JpdGluZ1Nu
YXBzaG90LCB0aGlzKTsKKyAgICAgICAgV2ViSW5zcGVjdG9yLmZpbGVNYW5hZ2VyLnNhdmUodGhp
cy5fZmlsZU5hbWUsICIiLCB0cnVlKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSW5zcGVjdG9yRnJvbnRlbmRBUEkuanMgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0luc3BlY3RvckZyb250ZW5kQVBJLmpzCmlu
ZGV4IDI4NzdmMDM0NmQ0Yzg0ZTU4NTdiMTM0ZTY4ZTJhOGE3YmRkY2Q3MzAuLjdlZjg0Nzk4MGI1
N2UxMTY3YjQ0MTc5Nzk5Yzk4NWEzYzcxOGYyNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvSW5zcGVjdG9yRnJvbnRlbmRBUEkuanMKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9JbnNwZWN0b3JGcm9udGVuZEFQSS5qcwpAQCAt
MTA3LDEyICsxMDcsMTIgQEAgSW5zcGVjdG9yRnJvbnRlbmRBUEkgPSB7CiAKICAgICBzYXZlZFVS
TDogZnVuY3Rpb24odXJsKQogICAgIHsKLSAgICAgICAgV2ViSW5zcGVjdG9yLnNhdmVkVVJMKHVy
bCk7CisgICAgICAgIFdlYkluc3BlY3Rvci5maWxlTWFuYWdlci5zYXZlZFVSTCh1cmwpOwogICAg
IH0sCiAKICAgICBhcHBlbmRlZFRvVVJMOiBmdW5jdGlvbih1cmwpCiAgICAgewotICAgICAgICBX
ZWJJbnNwZWN0b3IuYXBwZW5kZWRUb1VSTCh1cmwpOworICAgICAgICBXZWJJbnNwZWN0b3IuZmls
ZU1hbmFnZXIuYXBwZW5kZWRUb1VSTCh1cmwpOwogICAgIH0sCiAKICAgICBzZXRUb29sYmFyQ29s
b3JzOiBmdW5jdGlvbihiYWNrZ3JvdW5kQ29sb3IsIGNvbG9yKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9JbnNwZWN0b3JGcm9udGVuZEhvc3RTdHViLmpz
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9JbnNwZWN0b3JGcm9udGVuZEhv
c3RTdHViLmpzCmluZGV4IDk5NWI2YTQxN2Q5MzI2MjRkNjM5ZTRjOThjZDk3MWZkNjkwM2EzMmMu
LjY1N2NlOTAyNTE1ZjI1YTdhM2Q4NDhjMjc3ZjU0NTdhMmU1MDc5MDQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSW5zcGVjdG9yRnJvbnRlbmRIb3N0U3R1
Yi5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0luc3BlY3RvckZy
b250ZW5kSG9zdFN0dWIuanMKQEAgLTEzNyw2ICsxMzcsMTUgQEAgV2ViSW5zcGVjdG9yLkluc3Bl
Y3RvckZyb250ZW5kSG9zdFN0dWIucHJvdG90eXBlID0gewogICAgICAgICBmci5yZWFkQXNEYXRh
VVJMKGJsb2IpOwogICAgIH0sCiAKKyAgICBjYW5BcHBlbmQ6IGZ1bmN0aW9uKCkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9LAorCisgICAgYXBwZW5kOiBmdW5jdGlvbih1cmws
IGNvbnRlbnQpCisgICAgeworICAgIH0sCisKICAgICBzZW5kTWVzc2FnZVRvQmFja2VuZDogZnVu
Y3Rpb24obWVzc2FnZSkKICAgICB7CiAgICAgfSwKQEAgLTE2NywzICsxNzYsOTEgQEAgdmFyIElu
c3BlY3RvckZyb250ZW5kSG9zdCA9IG5ldyBXZWJJbnNwZWN0b3IuSW5zcGVjdG9yRnJvbnRlbmRI
b3N0U3R1YigpOwogUHJlZmVyZW5jZXMubG9jYWxpemVVSSA9IGZhbHNlOwogCiB9CisKKy8qKgor
ICogQGNvbnN0cnVjdG9yCisgKiBAZXh0ZW5kcyB7V2ViSW5zcGVjdG9yLk9iamVjdH0KKyAqLwor
V2ViSW5zcGVjdG9yLkZpbGVNYW5hZ2VyID0gZnVuY3Rpb24oKQoreworfQorCitXZWJJbnNwZWN0
b3IuRmlsZU1hbmFnZXIuRXZlbnRUeXBlcyA9IHsKKyAgICBTYXZlZFVSTDogIlNhdmVkVVJMIiwK
KyAgICBBcHBlbmRlZFRvVVJMOiAiQXBwZW5kZWRUb1VSTCIKK30KKworV2ViSW5zcGVjdG9yLkZp
bGVNYW5hZ2VyLnByb3RvdHlwZSA9IHsKKyAgICAvKioKKyAgICAgKiBAcmV0dXJuIHtib29sZWFu
fQorICAgICAqLworICAgIGNhblNhdmU6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHJldHVy
biBJbnNwZWN0b3JGcm9udGVuZEhvc3QuY2FuU2F2ZSgpOworICAgIH0sCisKKyAgICAvKioKKyAg
ICAgKiBAcmV0dXJuIHtib29sZWFufQorICAgICAqLworICAgIGNhbkFwcGVuZFRvOiBmdW5jdGlv
bigpCisgICAgeworICAgICAgICByZXR1cm4gSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNhblNhdmUo
KSAmJiAoImFwcGVuZCIgaW4gSW5zcGVjdG9yRnJvbnRlbmRIb3N0KTsKKyAgICB9LAorCisgICAg
LyoqCisgICAgICogQHBhcmFtIHtzdHJpbmd9IHVybAorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBj
b250ZW50CisgICAgICogQHBhcmFtIHtib29sZWFufSBmb3JjZVNhdmVBcworICAgICAqLworICAg
IHNhdmU6IGZ1bmN0aW9uKHVybCwgY29udGVudCwgZm9yY2VTYXZlQXMpCisgICAgeworICAgICAg
ICAvLyBSZW1vdmUgdGhpcyB1cmwgZnJvbSB0aGUgc2F2ZWQgVVJMcyB3aGlsZSBpdCBpcyBiZWlu
ZyBzYXZlZC4KKyAgICAgICAgdmFyIHNhdmVkVVJMcyA9IFdlYkluc3BlY3Rvci5zZXR0aW5ncy5z
YXZlZFVSTHMuZ2V0KCk7CisgICAgICAgIGRlbGV0ZSBzYXZlZFVSTHNbdXJsXTsKKyAgICAgICAg
V2ViSW5zcGVjdG9yLnNldHRpbmdzLnNhdmVkVVJMcy5zZXQoc2F2ZWRVUkxzKTsKKyAgICAgICAg
SW5zcGVjdG9yRnJvbnRlbmRIb3N0LnNhdmUodXJsLCBjb250ZW50LCBmb3JjZVNhdmVBcyk7Cisg
ICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7c3RyaW5nfSB1cmwKKyAgICAgKi8KKyAg
ICBzYXZlZFVSTDogZnVuY3Rpb24odXJsKQorICAgIHsKKyAgICAgICAgdmFyIHNhdmVkVVJMcyA9
IFdlYkluc3BlY3Rvci5zZXR0aW5ncy5zYXZlZFVSTHMuZ2V0KCk7CisgICAgICAgIHNhdmVkVVJM
c1t1cmxdID0gdHJ1ZTsKKyAgICAgICAgV2ViSW5zcGVjdG9yLnNldHRpbmdzLnNhdmVkVVJMcy5z
ZXQoc2F2ZWRVUkxzKTsKKyAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2Vi
SW5zcGVjdG9yLkZpbGVNYW5hZ2VyLkV2ZW50VHlwZXMuU2F2ZWRVUkwsIHVybCk7CisgICAgfSwK
KworICAgIC8qKgorICAgICAqIEBwYXJhbSB7c3RyaW5nfSB1cmwKKyAgICAgKiBAcmV0dXJuIHti
b29sZWFufQorICAgICAqLworICAgIGlzVVJMU2F2ZWQ6IGZ1bmN0aW9uKHVybCkKKyAgICB7Cisg
ICAgICAgIHZhciBzYXZlZFVSTHMgPSBXZWJJbnNwZWN0b3Iuc2V0dGluZ3Muc2F2ZWRVUkxzLmdl
dCgpOworICAgICAgICByZXR1cm4gc2F2ZWRVUkxzW3VybF07CisgICAgfSwKKworICAgIC8qKgor
ICAgICAqIEBwYXJhbSB7c3RyaW5nfSB1cmwKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gY29udGVu
dAorICAgICAqLworICAgIGFwcGVuZDogZnVuY3Rpb24odXJsLCBjb250ZW50KQorICAgIHsKKyAg
ICAgICAgSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmFwcGVuZCh1cmwsIGNvbnRlbnQpOworICAgIH0s
CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gdXJsCisgICAgICovCisgICAgYXBw
ZW5kZWRUb1VSTDogZnVuY3Rpb24odXJsKQorICAgIHsKKyAgICAgICAgdGhpcy5kaXNwYXRjaEV2
ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkZpbGVNYW5hZ2VyLkV2ZW50VHlwZXMuQXBwZW5k
ZWRUb1VSTCwgdXJsKTsKKyAgICB9Cit9CisKK1dlYkluc3BlY3Rvci5GaWxlTWFuYWdlci5wcm90
b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLk9iamVjdC5wcm90b3R5cGU7CisKK1dlYklu
c3BlY3Rvci5maWxlTWFuYWdlciA9IG5ldyBXZWJJbnNwZWN0b3IuRmlsZU1hbmFnZXIoKTsKKwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Qcm9maWxlc1Bh
bmVsLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Qcm9maWxlc1BhbmVs
LmpzCmluZGV4IDI5ZTlkNTQwZjZmMzRkMjZlOGU0MDNkMWY2MDQ4ZmE5MTc0YmJhYmYuLmE4MjFj
OTI4OTM4YWMyMjYzYWFiY2NkNTQ2ODRiYmQ2ZmViZjU1N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUHJvZmlsZXNQYW5lbC5qcworKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Byb2ZpbGVzUGFuZWwuanMKQEAgLTEzNiw2ICsx
MzYsMjAgQEAgV2ViSW5zcGVjdG9yLlByb2ZpbGVIZWFkZXIgPSBmdW5jdGlvbihwcm9maWxlVHlw
ZSwgdGl0bGUsIHVpZCkKICAgICB9CiB9CiAKK1dlYkluc3BlY3Rvci5Qcm9maWxlSGVhZGVyLnBy
b3RvdHlwZSA9IHsKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBjYWxsYmFjawor
ICAgICAqLworICAgIGxvYWQ6IGZ1bmN0aW9uKGNhbGxiYWNrKSB7IH0sCisKKyAgICAvKioKKyAg
ICAgKiBAcmV0dXJuIHtib29sZWFufQorICAgICAqLworICAgIGNhblNhdmU6IGZ1bmN0aW9uKCkg
eyByZXR1cm4gZmFsc2U7IH0sCisKKyAgICBzYXZlOiBmdW5jdGlvbigpIHsgdGhyb3cgbmV3IEVy
cm9yKCJOZWVkcyBpbXBsZW1lbnRlZCIpOyB9Cit9CisKIC8qKgogICogQGNvbnN0cnVjdG9yCiAg
KiBAZXh0ZW5kcyB7V2ViSW5zcGVjdG9yLlBhbmVsfQpAQCAtMTA5NSw3ICsxMTA5LDcgQEAgV2Vi
SW5zcGVjdG9yLlByb2ZpbGVTaWRlYmFyVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgIGhh
bmRsZUNvbnRleHRNZW51RXZlbnQ6IGZ1bmN0aW9uKGV2ZW50KQogICAgIHsKICAgICAgICAgdmFy
IHByb2ZpbGUgPSB0aGlzLnByb2ZpbGU7Ci0gICAgICAgIGlmICghcHJvZmlsZS5jYW5TYXZlIHx8
ICFwcm9maWxlLmNhblNhdmUoKSkKKyAgICAgICAgaWYgKCFwcm9maWxlLmNhblNhdmUoKSkKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgdmFyIGNvbnRleHRNZW51ID0gbmV3IFdlYkluc3Bl
Y3Rvci5Db250ZXh0TWVudSgpOwogICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRJdGVtKFdlYklu
c3BlY3Rvci5VSVN0cmluZygiU2F2ZSBwcm9maWxlIiksIHByb2ZpbGUuc2F2ZS5iaW5kKHByb2Zp
bGUpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVGV4
dFZpZXdlci5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVGV4dFZpZXdl
ci5qcwppbmRleCBlNGIxMjU2MmVhYmVlYWJmZTQ0YTU2MjQ5MWUwZmQ2ZjM2YTY5NTZhLi43NDVj
NDk0ZTFkOThiNzdkNTM4ODM3OGQ2NGQ1MzY4YjUxM2I4YTRhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RleHRWaWV3ZXIuanMKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UZXh0Vmlld2VyLmpzCkBAIC0zMDQsOCArMzA0LDgg
QEAgV2ViSW5zcGVjdG9yLlRleHRWaWV3ZXIucHJvdG90eXBlID0gewogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCiAgICAgICAgIHRoaXMuX2RlbGVnYXRlLmNvbW1pdEVkaXRpbmcoKTsKLSAg
ICAgICAgaWYgKHRoaXMuX3VybCAmJiBXZWJJbnNwZWN0b3IuaXNVUkxTYXZlZCh0aGlzLl91cmwp
KQotICAgICAgICAgICAgV2ViSW5zcGVjdG9yLnNhdmUodGhpcy5fdXJsLCB0aGlzLl90ZXh0TW9k
ZWwudGV4dCwgZmFsc2UpOworICAgICAgICBpZiAodGhpcy5fdXJsICYmIFdlYkluc3BlY3Rvci5m
aWxlTWFuYWdlci5pc1VSTFNhdmVkKHRoaXMuX3VybCkpCisgICAgICAgICAgICBXZWJJbnNwZWN0
b3IuZmlsZU1hbmFnZXIuc2F2ZSh0aGlzLl91cmwsIHRoaXMuX3RleHRNb2RlbC50ZXh0LCBmYWxz
ZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0sCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVGltZWxpbmVNb2RlbC5qcyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVGltZWxpbmVNb2RlbC5qcwppbmRleCA1MmM2YjRlMDVi
NjEyY2IyMjA1NDA4N2NiN2Q0YTMzYzNiZmFlZmUyLi4zNjYxOWY0ZGI3YTY2NWRjNjk4OTU4MDE0
YTNmYzk5NzZkZDFlODg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL1RpbWVsaW5lTW9kZWwuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9UaW1lbGluZU1vZGVsLmpzCkBAIC0yMDMsNyArMjAzLDggQEAgV2ViSW5zcGVjdG9y
LlRpbWVsaW5lTW9kZWwucHJvdG90eXBlID0gewogCiAgICAgICAgIHZhciBub3cgPSBuZXcgRGF0
ZSgpOwogICAgICAgICB2YXIgZmlsZU5hbWUgPSAiVGltZWxpbmVSYXdEYXRhLSIgKyBub3cudG9J
U084NjAxQ29tcGFjdCgpICsgIi5qc29uIjsKLSAgICAgICAgV2ViSW5zcGVjdG9yLnNhdmUoZmls
ZU5hbWUsIHJlY29yZHMuam9pbigiLFxuIiksIHRydWUpOworICAgICAgICBXZWJJbnNwZWN0b3Iu
ZmlsZU1hbmFnZXIuc2F2ZShmaWxlTmFtZSwgcmVjb3Jkcy5qb2luKCIsXG4iKSwgdHJ1ZSk7CisK
ICAgICB9LAogCiAgICAgcmVzZXQ6IGZ1bmN0aW9uKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvZXh0ZXJucy5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvZXh0ZXJucy5qcwppbmRleCBkZjVlMmJlYjU1ZmQ0YzMwNGVlNGMyZWQ1
ZjExYTYyMmE2MzcyMGRjLi4xZjJlMWQwM2JiNzE1YzdjNDk0OTExZjY1N2UzNWM4ODRmZDRlY2Rl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2V4dGVybnMu
anMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9leHRlcm5zLmpzCkBA
IC0xNTYsOCArMTU2LDYgQEAgV2ViSW5zcGVjdG9yLnBvcHVsYXRlUmVzb3VyY2VDb250ZXh0TWVu
dSA9IGZ1bmN0aW9uKGNvbnRleHRNZW51LCB1cmwsIHByZWZlcnJlZEwKICAqLwogV2ViSW5zcGVj
dG9yLmV2YWx1YXRlSW5Db25zb2xlID0gZnVuY3Rpb24oZXhwcmVzc2lvbiwgc2hvd1Jlc3VsdE9u
bHkpIHt9CiAKLVdlYkluc3BlY3Rvci5pc1VSTFNhdmVkID0gZnVuY3Rpb24odXJsKSB7fQotCiB2
YXIgSW5qZWN0ZWRGYWtlV29ya2VyID0gZnVuY3Rpb24oKSB7fQogCiBXZWJJbnNwZWN0b3IucXVl
cnlQYXJhbXNPYmplY3QgPSB7fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9pbnNwZWN0b3IuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL2luc3BlY3Rvci5qcwppbmRleCA3ZmVmZjU2OWMwZTY0NTRkZTRmYTk4YmQzOWI5YmY2OGY2
YTE5NmJkLi5jNzlkY2IyOWJhMjBhYjJkMzUzZDA2NjcwNDQ4NDk0YjNkYjFiMTEyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcwpAQCAtMTAz
Miw1MCArMTAzMiwzIEBAIFdlYkluc3BlY3Rvci5fdG9vbGJhckl0ZW1DbGlja2VkID0gZnVuY3Rp
b24oZXZlbnQpCiAgICAgV2ViSW5zcGVjdG9yLmluc3BlY3RvclZpZXcuc2V0Q3VycmVudFBhbmVs
KHRvb2xiYXJJdGVtLnBhbmVsKTsKIH0KIAotV2ViSW5zcGVjdG9yLl9zYXZlQ2FsbGJhY2tzID0g
W107Ci0KLVdlYkluc3BlY3Rvci5zYXZlID0gZnVuY3Rpb24odXJsLCBjb250ZW50LCBmb3JjZVNh
dmVBcywgY2FsbGJhY2spCi17Ci0gICAgLy8gUmVtb3ZlIHRoaXMgdXJsIGZyb20gdGhlIHNhdmVk
IFVSTHMgd2hpbGUgaXQgaXMgYmVpbmcgc2F2ZWQuCi0gICAgdmFyIHNhdmVkVVJMcyA9IFdlYklu
c3BlY3Rvci5zZXR0aW5ncy5zYXZlZFVSTHMuZ2V0KCk7Ci0gICAgZGVsZXRlIHNhdmVkVVJMc1t1
cmxdOwotICAgIFdlYkluc3BlY3Rvci5zZXR0aW5ncy5zYXZlZFVSTHMuc2V0KHNhdmVkVVJMcyk7
Ci0gICAgaWYgKGNhbGxiYWNrKQotICAgICAgICBXZWJJbnNwZWN0b3IuX3NhdmVDYWxsYmFja3Nb
dXJsXSA9IGNhbGxiYWNrOwotICAgIEluc3BlY3RvckZyb250ZW5kSG9zdC5zYXZlKHVybCwgY29u
dGVudCwgZm9yY2VTYXZlQXMpOwotfQotCi1XZWJJbnNwZWN0b3Iuc2F2ZWRVUkwgPSBmdW5jdGlv
bih1cmwpCi17Ci0gICAgdmFyIHNhdmVkVVJMcyA9IFdlYkluc3BlY3Rvci5zZXR0aW5ncy5zYXZl
ZFVSTHMuZ2V0KCk7Ci0gICAgc2F2ZWRVUkxzW3VybF0gPSB0cnVlOwotICAgIFdlYkluc3BlY3Rv
ci5zZXR0aW5ncy5zYXZlZFVSTHMuc2V0KHNhdmVkVVJMcyk7Ci0gICAgdmFyIGNhbGxiYWNrID0g
V2ViSW5zcGVjdG9yLl9zYXZlQ2FsbGJhY2tzW3VybF07Ci0gICAgaWYgKCFjYWxsYmFjaykKLSAg
ICAgICAgcmV0dXJuOwotICAgIGRlbGV0ZSBXZWJJbnNwZWN0b3IuX3NhdmVDYWxsYmFja3NbdXJs
XTsKLSAgICBjYWxsYmFjay5jYWxsKG51bGwsIHVybCk7Ci19Ci0KLVdlYkluc3BlY3Rvci5pc1VS
TFNhdmVkID0gZnVuY3Rpb24odXJsKQotewotICAgIHZhciBzYXZlZFVSTHMgPSBXZWJJbnNwZWN0
b3Iuc2V0dGluZ3Muc2F2ZWRVUkxzLmdldCgpOwotICAgIHJldHVybiBzYXZlZFVSTHNbdXJsXTsK
LX0KLQotV2ViSW5zcGVjdG9yLl9hcHBlbmRDYWxsYmFja3MgPSBbXTsKLQotV2ViSW5zcGVjdG9y
LmFwcGVuZCA9IGZ1bmN0aW9uKHVybCwgY29udGVudCwgY2FsbGJhY2spCi17Ci0gICAgaWYgKGNh
bGxiYWNrKQotICAgICAgICBXZWJJbnNwZWN0b3IuX2FwcGVuZENhbGxiYWNrc1t1cmxdID0gY2Fs
bGJhY2s7Ci0gICAgSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmFwcGVuZCh1cmwsIGNvbnRlbnQpOwot
fQotCi1XZWJJbnNwZWN0b3IuYXBwZW5kZWRUb1VSTCA9IGZ1bmN0aW9uKHVybCkKLXsKLSAgICB2
YXIgY2FsbGJhY2sgPSBXZWJJbnNwZWN0b3IuX2FwcGVuZENhbGxiYWNrc1t1cmxdOwotICAgIGlm
IChjYWxsYmFjaykKLSAgICAgICAgY2FsbGJhY2suY2FsbChudWxsLCB1cmwpOwotfQotCg==
</data>
<flag name="review"
          id="146240"
          type_id="1"
          status="+"
          setter="yurys"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>140403</attachid>
            <date>2012-05-05 08:35:55 -0700</date>
            <delta_ts>2012-05-05 08:35:55 -0700</delta_ts>
            <desc>actually landed</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>18550</size>
            <attacher name="Ilya Tikhonovsky">loislo</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBjOTM2NDhkLi5jY2Y5ZDE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkg
QEAKKzIwMTItMDUtMDUgIElseWEgVGlraG9ub3Zza3kgIDxsb2lzbG9AY2hyb21pdW0ub3JnPgor
CisgICAgICAgIFdlYiBJbnNwZWN0b3I6IGNvbnZlcnQgc3RhbmRhbG9uZSBmdW5jdGlvbnMgc2F2
ZS9hcHBlbmQvc2F2ZWRVUkwvYXBwZW5kZWRUb1VSTCBpbnRvIFdlYkluc3BlY3Rvci5GaWxlTWFu
YWdlciBvYmplY3QuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD04NTcxMAorCisgICAgICAgIFRoZSBpZGVhIGlzIHRvIGhhdmUgYW4gb2JqZWN0IGFuZCBi
ZSBhYmxlIHRvIGFkZC9yZW1vdmUgZXZlbnQgbGlzdGVuZXJzIGZyb20gaXQuCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgWXVyeSBTZW1pa2hhdHNreS4KKworICAgICAgICAqIEVuZ2xpc2gubHByb2ov
bG9jYWxpemVkU3RyaW5ncy5qczoKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICog
V2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogaW5zcGVjdG9yL2NvbXBp
bGUtZnJvbnQtZW5kLnB5OgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvRmlsZU1hbmFn
ZXIuanM6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSW5z
cGVjdG9yRnJvbnRlbmRIb3N0U3R1Yi5qcy4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5GaWxlTWFu
YWdlcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRmlsZU1hbmFnZXIucHJvdG90eXBlLmNhblNh
dmUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkZpbGVNYW5hZ2VyLnByb3RvdHlwZS5jYW5BcHBl
bmQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkZpbGVNYW5hZ2VyLnByb3RvdHlwZS5hcHBlbmQp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkZpbGVNYW5hZ2VyLnByb3RvdHlwZS5hcHBlbmRlZFRv
VVJMKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0hlYXBTbmFwc2hvdFZpZXcuanM6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFByb2ZpbGVIZWFkZXIucHJvdG90eXBlLmNhblNh
dmUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBQcm9maWxlSGVhZGVyLnByb3RvdHlwZS5z
YXZlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0luc3BlY3RvckZyb250ZW5kSG9z
dFN0dWIuanM6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9XZWJLaXQucXJjOgorICAg
ICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmh0bWw6CisKIDIwMTItMDUtMDUg
IFpoZW55YW8gTW8gIDx6bW9AZ29vZ2xlLmNvbT4KIAogICAgICAgICB2ZXJ0ZXhBdHRyaWJQb2lu
dGVyIG5lZWRzIHRvIHJlamVjdCBsYXJnZSBuZWdhdGl2ZSBvZmZzZXRzCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9FbmdsaXNoLmxwcm9qL2xvY2FsaXplZFN0cmluZ3MuanMgYi9Tb3VyY2Uv
V2ViQ29yZS9FbmdsaXNoLmxwcm9qL2xvY2FsaXplZFN0cmluZ3MuanMKaW5kZXggZjhiZjFhNS4u
NjJjNDRlZCAxMDA2NDQKQmluYXJ5IGZpbGVzIGEvU291cmNlL1dlYkNvcmUvRW5nbGlzaC5scHJv
ai9sb2NhbGl6ZWRTdHJpbmdzLmpzIGFuZCBiL1NvdXJjZS9XZWJDb3JlL0VuZ2xpc2gubHByb2ov
bG9jYWxpemVkU3RyaW5ncy5qcyBkaWZmZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCBkYTI0OTI3Li5h
ZTU4YTY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC02MzY0LDYgKzYzNjQsNyBAQAogICAgICAgICAg
ICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvRXh0ZW5zaW9uUGFuZWwuanMnLAogICAgICAgICAgICAg
J2luc3BlY3Rvci9mcm9udC1lbmQvRXh0ZW5zaW9uUmVnaXN0cnlTdHViLmpzJywKICAgICAgICAg
ICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0V4dGVuc2lvblNlcnZlci5qcycsCisgICAgICAgICAg
ICAnaW5zcGVjdG9yL2Zyb250LWVuZC9GaWxlTWFuYWdlci5qcycsCiAgICAgICAgICAgICAnaW5z
cGVjdG9yL2Zyb250LWVuZC9GaWx0ZXJlZEl0ZW1TZWxlY3Rpb25EaWFsb2cuanMnLAogICAgICAg
ICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvRm9udFZpZXcuanMnLAogICAgICAgICAgICAgJ2lu
c3BlY3Rvci9mcm9udC1lbmQvR29Ub0xpbmVEaWFsb2cuanMnLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCAzM2M3ZDZlLi4wZDUzNjM1IDEwMDc1
NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtNzQyMzMs
NiArNzQyMzMsMTAgQEAKIAkJCQkJPgogCQkJCTwvRmlsZT4KIAkJCQk8RmlsZQorCQkJCQlSZWxh
dGl2ZVBhdGg9Ii4uXGluc3BlY3Rvclxmcm9udC1lbmRcRmlsZU1hbmFnZXIuanMiCisJCQkJCT4K
KwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3Jc
ZnJvbnQtZW5kXEZpbHRlcmVkSXRlbVNlbGVjdGlvbkRpYWxvZy5qcyIKIAkJCQkJPgogCQkJCTwv
RmlsZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9jb21waWxlLWZyb250
LWVuZC5weSBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9jb21waWxlLWZyb250LWVuZC5weQpp
bmRleCBiMTkxNTllLi4wNjAyOGU0IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvY29tcGlsZS1mcm9udC1lbmQucHkKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Nv
bXBpbGUtZnJvbnQtZW5kLnB5CkBAIC03NCw2ICs3NCw3IEBAIG1vZHVsZXMgPSBbCiAgICAgICAg
ICAgICAiRE9NU3RvcmFnZS5qcyIsCiAgICAgICAgICAgICAiRGVidWdnZXJNb2RlbC5qcyIsCiAg
ICAgICAgICAgICAiRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5qcyIsCisgICAgICAgICAgICAi
RmlsZU1hbmFnZXIuanMiLAogICAgICAgICAgICAgIkhBUkVudHJ5LmpzIiwKICAgICAgICAgICAg
ICJJbmRleGVkREJNb2RlbC5qcyIsCiAgICAgICAgICAgICAiTGlua2lmaWVyLmpzIiwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRmlsZU1hbmFnZXIuanMg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVNYW5hZ2VyLmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFkMTAxZDcKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVNYW5hZ2VyLmpzCkBAIC0w
LDAgKzEsMTE2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBt
ZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICog
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworLyoqCisgKiBAY29uc3RydWN0b3IKKyAqIEBleHRlbmRzIHtXZWJJbnNwZWN0
b3IuT2JqZWN0fQorICovCitXZWJJbnNwZWN0b3IuRmlsZU1hbmFnZXIgPSBmdW5jdGlvbigpCit7
Cit9CisKK1dlYkluc3BlY3Rvci5GaWxlTWFuYWdlci5FdmVudFR5cGVzID0geworICAgIFNhdmVk
VVJMOiAiU2F2ZWRVUkwiLAorICAgIEFwcGVuZGVkVG9VUkw6ICJBcHBlbmRlZFRvVVJMIgorfQor
CitXZWJJbnNwZWN0b3IuRmlsZU1hbmFnZXIucHJvdG90eXBlID0geworICAgIC8qKgorICAgICAq
IEByZXR1cm4ge2Jvb2xlYW59CisgICAgICovCisgICAgY2FuU2F2ZTogZnVuY3Rpb24oKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIEluc3BlY3RvckZyb250ZW5kSG9zdC5jYW5TYXZlKCk7CisgICAg
fSwKKworICAgIC8qKgorICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CisgICAgICovCisgICAgY2Fu
QXBwZW5kOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICByZXR1cm4gSW5zcGVjdG9yRnJvbnRl
bmRIb3N0LmNhblNhdmUoKSAmJiAoImFwcGVuZCIgaW4gSW5zcGVjdG9yRnJvbnRlbmRIb3N0KTsK
KyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtzdHJpbmd9IHVybAorICAgICAqIEBw
YXJhbSB7c3RyaW5nfSBjb250ZW50CisgICAgICogQHBhcmFtIHtib29sZWFufSBmb3JjZVNhdmVB
cworICAgICAqLworICAgIHNhdmU6IGZ1bmN0aW9uKHVybCwgY29udGVudCwgZm9yY2VTYXZlQXMp
CisgICAgeworICAgICAgICAvLyBSZW1vdmUgdGhpcyB1cmwgZnJvbSB0aGUgc2F2ZWQgVVJMcyB3
aGlsZSBpdCBpcyBiZWluZyBzYXZlZC4KKyAgICAgICAgdmFyIHNhdmVkVVJMcyA9IFdlYkluc3Bl
Y3Rvci5zZXR0aW5ncy5zYXZlZFVSTHMuZ2V0KCk7CisgICAgICAgIGRlbGV0ZSBzYXZlZFVSTHNb
dXJsXTsKKyAgICAgICAgV2ViSW5zcGVjdG9yLnNldHRpbmdzLnNhdmVkVVJMcy5zZXQoc2F2ZWRV
UkxzKTsKKyAgICAgICAgSW5zcGVjdG9yRnJvbnRlbmRIb3N0LnNhdmUodXJsLCBjb250ZW50LCBm
b3JjZVNhdmVBcyk7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7c3RyaW5nfSB1
cmwKKyAgICAgKi8KKyAgICBzYXZlZFVSTDogZnVuY3Rpb24odXJsKQorICAgIHsKKyAgICAgICAg
dmFyIHNhdmVkVVJMcyA9IFdlYkluc3BlY3Rvci5zZXR0aW5ncy5zYXZlZFVSTHMuZ2V0KCk7Cisg
ICAgICAgIHNhdmVkVVJMc1t1cmxdID0gdHJ1ZTsKKyAgICAgICAgV2ViSW5zcGVjdG9yLnNldHRp
bmdzLnNhdmVkVVJMcy5zZXQoc2F2ZWRVUkxzKTsKKyAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50
VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkZpbGVNYW5hZ2VyLkV2ZW50VHlwZXMuU2F2ZWRVUkws
IHVybCk7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7c3RyaW5nfSB1cmwKKyAg
ICAgKiBAcmV0dXJuIHtib29sZWFufQorICAgICAqLworICAgIGlzVVJMU2F2ZWQ6IGZ1bmN0aW9u
KHVybCkKKyAgICB7CisgICAgICAgIHZhciBzYXZlZFVSTHMgPSBXZWJJbnNwZWN0b3Iuc2V0dGlu
Z3Muc2F2ZWRVUkxzLmdldCgpOworICAgICAgICByZXR1cm4gc2F2ZWRVUkxzW3VybF07CisgICAg
fSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7c3RyaW5nfSB1cmwKKyAgICAgKiBAcGFyYW0g
e3N0cmluZ30gY29udGVudAorICAgICAqLworICAgIGFwcGVuZDogZnVuY3Rpb24odXJsLCBjb250
ZW50KQorICAgIHsKKyAgICAgICAgSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmFwcGVuZCh1cmwsIGNv
bnRlbnQpOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gdXJsCisg
ICAgICovCisgICAgYXBwZW5kZWRUb1VSTDogZnVuY3Rpb24odXJsKQorICAgIHsKKyAgICAgICAg
dGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkZpbGVNYW5hZ2VyLkV2
ZW50VHlwZXMuQXBwZW5kZWRUb1VSTCwgdXJsKTsKKyAgICB9Cit9CisKK1dlYkluc3BlY3Rvci5G
aWxlTWFuYWdlci5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLk9iamVjdC5wcm90
b3R5cGU7CisKK1dlYkluc3BlY3Rvci5maWxlTWFuYWdlciA9IG5ldyBXZWJJbnNwZWN0b3IuRmls
ZU1hbmFnZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvSGVhcFNuYXBzaG90Vmlldy5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvSGVhcFNuYXBzaG90Vmlldy5qcwppbmRleCA0ZDYyMDQ1Li42YzUxNDgwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0hlYXBTbmFwc2hvdFZpZXcuanMK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9IZWFwU25hcHNob3RWaWV3
LmpzCkBAIC03ODgsNiArNzg4LDEwIEBAIFdlYkluc3BlY3Rvci5IZWFwUHJvZmlsZUhlYWRlciA9
IGZ1bmN0aW9uKHByb2ZpbGVUeXBlLCB0aXRsZSwgdWlkLCBtYXhKU09iamVjdElkCiB9CiAKIFdl
Ykluc3BlY3Rvci5IZWFwUHJvZmlsZUhlYWRlci5wcm90b3R5cGUgPSB7CisgICAgLyoqCisgICAg
ICogQG92ZXJyaWRlCisgICAgICogQHBhcmFtIHtGdW5jdGlvbn0gY2FsbGJhY2sKKyAgICAgKi8K
ICAgICBsb2FkOiBmdW5jdGlvbihjYWxsYmFjaykKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9s
b2FkZWQpIHsKQEAgLTgxNSwyMSArODE5LDMwIEBAIFdlYkluc3BlY3Rvci5IZWFwUHJvZmlsZUhl
YWRlci5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KICAgICB9LAogCi0gICAgX3NhdmVTdGF0dXNV
cGRhdGU6IGZ1bmN0aW9uKCkKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5F
dmVudH0gZXZlbnQKKyAgICAgKi8KKyAgICBfc2F2ZVN0YXR1c1VwZGF0ZTogZnVuY3Rpb24oZXZl
bnQpCiAgICAgewotICAgICAgICArK3RoaXMuX3NhdmVkQ2h1bmtzQ291bnQ7Ci0gICAgICAgIGlm
ICh0aGlzLl9zYXZlZENodW5rc0NvdW50ID09PSB0aGlzLl90b3RhbE51bWJlck9mQ2h1bmtzKSB7
CisgICAgICAgIGlmIChldmVudC5kYXRhICE9PSB0aGlzLl9maWxlTmFtZSkKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgaWYgKCsrdGhpcy5fc2F2ZWRDaHVua3NDb3VudCA9PT0gdGhpcy5f
dG90YWxOdW1iZXJPZkNodW5rcykgewogICAgICAgICAgICAgdGhpcy5zaWRlYmFyRWxlbWVudC5z
dWJ0aXRsZSA9IE51bWJlci5ieXRlc1RvU3RyaW5nKHRoaXMuX3Byb3h5LnRvdGFsU2l6ZSk7CiAg
ICAgICAgICAgICB0aGlzLnNpZGViYXJFbGVtZW50LndhaXQgPSBmYWxzZTsKKyAgICAgICAgICAg
IHRoaXMuX3NhdmVkQ2h1bmtzQ291bnQgPSAwOworICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmZp
bGVNYW5hZ2VyLnJlbW92ZUV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkZpbGVNYW5hZ2VyLkV2
ZW50VHlwZXMuQXBwZW5kZWRUb1VSTCwgdGhpcy5fc2F2ZVN0YXR1c1VwZGF0ZSwgdGhpcyk7CiAg
ICAgICAgIH0gZWxzZQogICAgICAgICAgICAgdGhpcy5zaWRlYmFyRWxlbWVudC5zdWJ0aXRsZSA9
IFdlYkluc3BlY3Rvci5VSVN0cmluZygiU2F2aW5nXHUyMDI2ICVkXCUiLCBNYXRoLmZsb29yKHRo
aXMuX3NhdmVkQ2h1bmtzQ291bnQgKiAxMDAgLyB0aGlzLl90b3RhbE51bWJlck9mQ2h1bmtzKSk7
CiAgICAgfSwKIAorICAgIC8qKgorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBjaHVuaworICAgICAq
LwogICAgIHB1c2hKU09OQ2h1bms6IGZ1bmN0aW9uKGNodW5rKQogICAgIHsKICAgICAgICAgaWYg
KHRoaXMuX2xvYWRlZCkgewogICAgICAgICAgICAgdGhpcy5zaWRlYmFyRWxlbWVudC53YWl0ID0g
dHJ1ZTsKLSAgICAgICAgICAgIFdlYkluc3BlY3Rvci5hcHBlbmQodGhpcy5fZmlsZU5hbWUsIGNo
dW5rLCB0aGlzLl9zYXZlU3RhdHVzVXBkYXRlLmJpbmQodGhpcykpOworICAgICAgICAgICAgV2Vi
SW5zcGVjdG9yLmZpbGVNYW5hZ2VyLmFwcGVuZCh0aGlzLl9maWxlTmFtZSwgY2h1bmspOwogICAg
ICAgICB9IGVsc2UgewogICAgICAgICAgICAgKyt0aGlzLl90b3RhbE51bWJlck9mQ2h1bmtzOwog
ICAgICAgICAgICAgdGhpcy5fcHJveHkucHVzaEpTT05DaHVuayhjaHVuayk7CkBAIC04NTAsMjIg
Kzg2MywzOCBAQCBXZWJJbnNwZWN0b3IuSGVhcFByb2ZpbGVIZWFkZXIucHJvdG90eXBlID0gewog
ICAgICAgICAgICAgdGhpcy5zaWRlYmFyRWxlbWVudC5zdWJ0aXRsZSA9IFdlYkluc3BlY3Rvci5V
SVN0cmluZygiUGFyc2luZ1x1MjAyNiIpOwogICAgIH0sCiAKKyAgICAvKioKKyAgICAgKiBAb3Zl
cnJpZGUKKyAgICAgKiBAcmV0dXJuIHtib29sZWFufQorICAgICAqLwogICAgIGNhblNhdmU6IGZ1
bmN0aW9uKCkKICAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9sb2FkZWQgJiYgSW5zcGVjdG9y
RnJvbnRlbmRIb3N0LmNhblNhdmUoKSAmJiAoImFwcGVuZCIgaW4gSW5zcGVjdG9yRnJvbnRlbmRI
b3N0KTsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2xvYWRlZCAmJiAhdGhpcy5fc2F2ZWRDaHVua3ND
b3VudCAmJiBXZWJJbnNwZWN0b3IuZmlsZU1hbmFnZXIuY2FuQXBwZW5kKCk7CiAgICAgfSwKIAor
ICAgIC8qKgorICAgICAqIEBvdmVycmlkZQorICAgICAqLwogICAgIHNhdmU6IGZ1bmN0aW9uKCkK
ICAgICB7Ci0gICAgICAgIGZ1bmN0aW9uIHN0YXJ0V3JpdGluZ1NuYXBzaG90KCkKKyAgICAgICAg
LyoqCisgICAgICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLkV2ZW50fSBldmVudAorICAgICAg
ICAgKi8KKyAgICAgICAgZnVuY3Rpb24gc3RhcnRXcml0aW5nU25hcHNob3QoZXZlbnQpCiAgICAg
ICAgIHsKKyAgICAgICAgICAgIGlmIChldmVudC5kYXRhICE9PSB0aGlzLl9maWxlTmFtZSkKKyAg
ICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB0aGlzLnNpZGViYXJFbGVtZW50Lndh
aXQgPSB0cnVlOwotICAgICAgICAgICAgdGhpcy5zaWRlYmFyRWxlbWVudC5zdWJ0aXRsZSA9IFdl
Ykluc3BlY3Rvci5VSVN0cmluZygiU2F2aW5nXHUyMDI2IDBcJSIpOworICAgICAgICAgICAgdGhp
cy5zaWRlYmFyRWxlbWVudC5zdWJ0aXRsZSA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiU2F2aW5n
XHUyMDI2ICVkXCUiLCAwKTsKICAgICAgICAgICAgIHRoaXMuX3NhdmVkQ2h1bmtzQ291bnQgPSAw
OworICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmZpbGVNYW5hZ2VyLnJlbW92ZUV2ZW50TGlzdGVu
ZXIoV2ViSW5zcGVjdG9yLkZpbGVNYW5hZ2VyLkV2ZW50VHlwZXMuU2F2ZWRVUkwsIHN0YXJ0V3Jp
dGluZ1NuYXBzaG90LCB0aGlzKTsKKyAgICAgICAgICAgIFdlYkluc3BlY3Rvci5maWxlTWFuYWdl
ci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5GaWxlTWFuYWdlci5FdmVudFR5cGVzLkFw
cGVuZGVkVG9VUkwsIHRoaXMuX3NhdmVTdGF0dXNVcGRhdGUsIHRoaXMpOwogICAgICAgICAgICAg
UHJvZmlsZXJBZ2VudC5nZXRQcm9maWxlKHRoaXMudHlwZUlkLCB0aGlzLnVpZCk7CiAgICAgICAg
IH0KKwogICAgICAgICB0aGlzLl9maWxlTmFtZSA9IHRoaXMuX2ZpbGVOYW1lIHx8ICJIZWFwLSIg
KyBuZXcgRGF0ZSgpLnRvSVNPODYwMUNvbXBhY3QoKSArICIuanNvbiI7Ci0gICAgICAgIFdlYklu
c3BlY3Rvci5zYXZlKHRoaXMuX2ZpbGVOYW1lLCAiIiwgdHJ1ZSwgc3RhcnRXcml0aW5nU25hcHNo
b3QuYmluZCh0aGlzKSk7CisgICAgICAgIFdlYkluc3BlY3Rvci5maWxlTWFuYWdlci5hZGRFdmVu
dExpc3RlbmVyKFdlYkluc3BlY3Rvci5GaWxlTWFuYWdlci5FdmVudFR5cGVzLlNhdmVkVVJMLCBz
dGFydFdyaXRpbmdTbmFwc2hvdCwgdGhpcyk7CisgICAgICAgIFdlYkluc3BlY3Rvci5maWxlTWFu
YWdlci5zYXZlKHRoaXMuX2ZpbGVOYW1lLCAiIiwgdHJ1ZSk7CiAgICAgfQogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0luc3BlY3RvckZyb250ZW5k
QVBJLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9JbnNwZWN0b3JGcm9u
dGVuZEFQSS5qcwppbmRleCAyODc3ZjAzLi43ZWY4NDc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0luc3BlY3RvckZyb250ZW5kQVBJLmpzCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSW5zcGVjdG9yRnJvbnRlbmRBUEkuanMK
QEAgLTEwNywxMiArMTA3LDEyIEBAIEluc3BlY3RvckZyb250ZW5kQVBJID0gewogCiAgICAgc2F2
ZWRVUkw6IGZ1bmN0aW9uKHVybCkKICAgICB7Ci0gICAgICAgIFdlYkluc3BlY3Rvci5zYXZlZFVS
TCh1cmwpOworICAgICAgICBXZWJJbnNwZWN0b3IuZmlsZU1hbmFnZXIuc2F2ZWRVUkwodXJsKTsK
ICAgICB9LAogCiAgICAgYXBwZW5kZWRUb1VSTDogZnVuY3Rpb24odXJsKQogICAgIHsKLSAgICAg
ICAgV2ViSW5zcGVjdG9yLmFwcGVuZGVkVG9VUkwodXJsKTsKKyAgICAgICAgV2ViSW5zcGVjdG9y
LmZpbGVNYW5hZ2VyLmFwcGVuZGVkVG9VUkwodXJsKTsKICAgICB9LAogCiAgICAgc2V0VG9vbGJh
ckNvbG9yczogZnVuY3Rpb24oYmFja2dyb3VuZENvbG9yLCBjb2xvcikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSW5zcGVjdG9yRnJvbnRlbmRIb3N0U3R1
Yi5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSW5zcGVjdG9yRnJvbnRl
bmRIb3N0U3R1Yi5qcwppbmRleCA5OTViNmE0Li4zNDg1NWNjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0luc3BlY3RvckZyb250ZW5kSG9zdFN0dWIuanMK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9JbnNwZWN0b3JGcm9udGVu
ZEhvc3RTdHViLmpzCkBAIC0xMzcsNiArMTM3LDE1IEBAIFdlYkluc3BlY3Rvci5JbnNwZWN0b3JG
cm9udGVuZEhvc3RTdHViLnByb3RvdHlwZSA9IHsKICAgICAgICAgZnIucmVhZEFzRGF0YVVSTChi
bG9iKTsKICAgICB9LAogCisgICAgY2FuQXBwZW5kOiBmdW5jdGlvbigpCisgICAgeworICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgfSwKKworICAgIGFwcGVuZDogZnVuY3Rpb24odXJsLCBjb250
ZW50KQorICAgIHsKKyAgICB9LAorCiAgICAgc2VuZE1lc3NhZ2VUb0JhY2tlbmQ6IGZ1bmN0aW9u
KG1lc3NhZ2UpCiAgICAgewogICAgIH0sCkBAIC0xNjcsMyArMTc2LDQgQEAgdmFyIEluc3BlY3Rv
ckZyb250ZW5kSG9zdCA9IG5ldyBXZWJJbnNwZWN0b3IuSW5zcGVjdG9yRnJvbnRlbmRIb3N0U3R1
YigpOwogUHJlZmVyZW5jZXMubG9jYWxpemVVSSA9IGZhbHNlOwogCiB9CisKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUHJvZmlsZXNQYW5lbC5qcyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUHJvZmlsZXNQYW5lbC5qcwppbmRleCAy
OWU5ZDU0Li5hODIxYzkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL1Byb2ZpbGVzUGFuZWwuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9Qcm9maWxlc1BhbmVsLmpzCkBAIC0xMzYsNiArMTM2LDIwIEBAIFdlYkluc3BlY3Rv
ci5Qcm9maWxlSGVhZGVyID0gZnVuY3Rpb24ocHJvZmlsZVR5cGUsIHRpdGxlLCB1aWQpCiAgICAg
fQogfQogCitXZWJJbnNwZWN0b3IuUHJvZmlsZUhlYWRlci5wcm90b3R5cGUgPSB7CisgICAgLyoq
CisgICAgICogQHBhcmFtIHtGdW5jdGlvbn0gY2FsbGJhY2sKKyAgICAgKi8KKyAgICBsb2FkOiBm
dW5jdGlvbihjYWxsYmFjaykgeyB9LAorCisgICAgLyoqCisgICAgICogQHJldHVybiB7Ym9vbGVh
bn0KKyAgICAgKi8KKyAgICBjYW5TYXZlOiBmdW5jdGlvbigpIHsgcmV0dXJuIGZhbHNlOyB9LAor
CisgICAgc2F2ZTogZnVuY3Rpb24oKSB7IHRocm93IG5ldyBFcnJvcigiTmVlZHMgaW1wbGVtZW50
ZWQiKTsgfQorfQorCiAvKioKICAqIEBjb25zdHJ1Y3RvcgogICogQGV4dGVuZHMge1dlYkluc3Bl
Y3Rvci5QYW5lbH0KQEAgLTEwOTUsNyArMTEwOSw3IEBAIFdlYkluc3BlY3Rvci5Qcm9maWxlU2lk
ZWJhclRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICBoYW5kbGVDb250ZXh0TWVudUV2ZW50
OiBmdW5jdGlvbihldmVudCkKICAgICB7CiAgICAgICAgIHZhciBwcm9maWxlID0gdGhpcy5wcm9m
aWxlOwotICAgICAgICBpZiAoIXByb2ZpbGUuY2FuU2F2ZSB8fCAhcHJvZmlsZS5jYW5TYXZlKCkp
CisgICAgICAgIGlmICghcHJvZmlsZS5jYW5TYXZlKCkpCiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIHZhciBjb250ZXh0TWVudSA9IG5ldyBXZWJJbnNwZWN0b3IuQ29udGV4dE1lbnUoKTsK
ICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlNh
dmUgcHJvZmlsZSIpLCBwcm9maWxlLnNhdmUuYmluZChwcm9maWxlKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RleHRWaWV3ZXIuanMgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RleHRWaWV3ZXIuanMKaW5kZXggZTRiMTI1Ni4u
NzQ1YzQ5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9U
ZXh0Vmlld2VyLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVGV4
dFZpZXdlci5qcwpAQCAtMzA0LDggKzMwNCw4IEBAIFdlYkluc3BlY3Rvci5UZXh0Vmlld2VyLnBy
b3RvdHlwZSA9IHsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICB0aGlzLl9k
ZWxlZ2F0ZS5jb21taXRFZGl0aW5nKCk7Ci0gICAgICAgIGlmICh0aGlzLl91cmwgJiYgV2ViSW5z
cGVjdG9yLmlzVVJMU2F2ZWQodGhpcy5fdXJsKSkKLSAgICAgICAgICAgIFdlYkluc3BlY3Rvci5z
YXZlKHRoaXMuX3VybCwgdGhpcy5fdGV4dE1vZGVsLnRleHQsIGZhbHNlKTsKKyAgICAgICAgaWYg
KHRoaXMuX3VybCAmJiBXZWJJbnNwZWN0b3IuZmlsZU1hbmFnZXIuaXNVUkxTYXZlZCh0aGlzLl91
cmwpKQorICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmZpbGVNYW5hZ2VyLnNhdmUodGhpcy5fdXJs
LCB0aGlzLl90ZXh0TW9kZWwudGV4dCwgZmFsc2UpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICB9LAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Rp
bWVsaW5lTW9kZWwuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RpbWVs
aW5lTW9kZWwuanMKaW5kZXggNTJjNmI0ZS4uMzY2MTlmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UaW1lbGluZU1vZGVsLmpzCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVGltZWxpbmVNb2RlbC5qcwpAQCAtMjAzLDcgKzIw
Myw4IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZU1vZGVsLnByb3RvdHlwZSA9IHsKIAogICAgICAg
ICB2YXIgbm93ID0gbmV3IERhdGUoKTsKICAgICAgICAgdmFyIGZpbGVOYW1lID0gIlRpbWVsaW5l
UmF3RGF0YS0iICsgbm93LnRvSVNPODYwMUNvbXBhY3QoKSArICIuanNvbiI7Ci0gICAgICAgIFdl
Ykluc3BlY3Rvci5zYXZlKGZpbGVOYW1lLCByZWNvcmRzLmpvaW4oIixcbiIpLCB0cnVlKTsKKyAg
ICAgICAgV2ViSW5zcGVjdG9yLmZpbGVNYW5hZ2VyLnNhdmUoZmlsZU5hbWUsIHJlY29yZHMuam9p
bigiLFxuIiksIHRydWUpOworCiAgICAgfSwKIAogICAgIHJlc2V0OiBmdW5jdGlvbigpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5xcmMgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5xcmMKaW5kZXggMGRiNjZl
Ny4uOGRkOTM3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9XZWJLaXQucXJjCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvV2Vi
S2l0LnFyYwpAQCAtNTUsNiArNTUsNyBAQAogICAgIDxmaWxlPkV4dGVuc2lvblBhbmVsLmpzPC9m
aWxlPgogICAgIDxmaWxlPkV4dGVuc2lvblJlZ2lzdHJ5U3R1Yi5qczwvZmlsZT4KICAgICA8Zmls
ZT5FeHRlbnNpb25TZXJ2ZXIuanM8L2ZpbGU+CisgICAgPGZpbGU+RmlsZU1hbmFnZXIuanM8L2Zp
bGU+CiAgICAgPGZpbGU+RmlsdGVyZWRJdGVtU2VsZWN0aW9uRGlhbG9nLmpzPC9maWxlPgogICAg
IDxmaWxlPkZvbnRWaWV3LmpzPC9maWxlPgogICAgIDxmaWxlPkdvVG9MaW5lRGlhbG9nLmpzPC9m
aWxlPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9leHRl
cm5zLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9leHRlcm5zLmpzCmlu
ZGV4IGRmNWUyYmUuLjFmMmUxZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvZXh0ZXJucy5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL2V4dGVybnMuanMKQEAgLTE1Niw4ICsxNTYsNiBAQCBXZWJJbnNwZWN0b3IucG9wdWxh
dGVSZXNvdXJjZUNvbnRleHRNZW51ID0gZnVuY3Rpb24oY29udGV4dE1lbnUsIHVybCwgcHJlZmVy
cmVkTAogICovCiBXZWJJbnNwZWN0b3IuZXZhbHVhdGVJbkNvbnNvbGUgPSBmdW5jdGlvbihleHBy
ZXNzaW9uLCBzaG93UmVzdWx0T25seSkge30KIAotV2ViSW5zcGVjdG9yLmlzVVJMU2F2ZWQgPSBm
dW5jdGlvbih1cmwpIHt9Ci0KIHZhciBJbmplY3RlZEZha2VXb3JrZXIgPSBmdW5jdGlvbigpIHt9
CiAKIFdlYkluc3BlY3Rvci5xdWVyeVBhcmFtc09iamVjdCA9IHt9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5odG1sIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuaHRtbAppbmRleCBmZjcwNzI1Li41
YmI5OTAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2lu
c3BlY3Rvci5odG1sCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5z
cGVjdG9yLmh0bWwKQEAgLTQ3LDYgKzQ3LDcgQEAgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAgICA8c2NyaXB0IHR5cGU9
InRleHQvamF2YXNjcmlwdCIgc3JjPSJPYmplY3QuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQg
dHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IlNldHRpbmdzLmpzIj48L3NjcmlwdD4KICAgICA8
c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJJbnNwZWN0b3JGcm9udGVuZEhvc3RT
dHViLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3Jj
PSJGaWxlTWFuYWdlci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFz
Y3JpcHQiIHNyYz0iQ2hlY2tib3guanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4
dC9qYXZhc2NyaXB0IiBzcmM9IkNvbnRleHRNZW51LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0
IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJTb2Z0Q29udGV4dE1lbnUuanMiPjwvc2NyaXB0
PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0
b3IuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcwpp
bmRleCA3ZmVmZjU2Li5jNzlkY2IyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL2luc3BlY3Rvci5qcwpAQCAtMTAzMiw1MCArMTAzMiwzIEBAIFdlYkluc3BlY3Rv
ci5fdG9vbGJhckl0ZW1DbGlja2VkID0gZnVuY3Rpb24oZXZlbnQpCiAgICAgV2ViSW5zcGVjdG9y
Lmluc3BlY3RvclZpZXcuc2V0Q3VycmVudFBhbmVsKHRvb2xiYXJJdGVtLnBhbmVsKTsKIH0KIAot
V2ViSW5zcGVjdG9yLl9zYXZlQ2FsbGJhY2tzID0gW107Ci0KLVdlYkluc3BlY3Rvci5zYXZlID0g
ZnVuY3Rpb24odXJsLCBjb250ZW50LCBmb3JjZVNhdmVBcywgY2FsbGJhY2spCi17Ci0gICAgLy8g
UmVtb3ZlIHRoaXMgdXJsIGZyb20gdGhlIHNhdmVkIFVSTHMgd2hpbGUgaXQgaXMgYmVpbmcgc2F2
ZWQuCi0gICAgdmFyIHNhdmVkVVJMcyA9IFdlYkluc3BlY3Rvci5zZXR0aW5ncy5zYXZlZFVSTHMu
Z2V0KCk7Ci0gICAgZGVsZXRlIHNhdmVkVVJMc1t1cmxdOwotICAgIFdlYkluc3BlY3Rvci5zZXR0
aW5ncy5zYXZlZFVSTHMuc2V0KHNhdmVkVVJMcyk7Ci0gICAgaWYgKGNhbGxiYWNrKQotICAgICAg
ICBXZWJJbnNwZWN0b3IuX3NhdmVDYWxsYmFja3NbdXJsXSA9IGNhbGxiYWNrOwotICAgIEluc3Bl
Y3RvckZyb250ZW5kSG9zdC5zYXZlKHVybCwgY29udGVudCwgZm9yY2VTYXZlQXMpOwotfQotCi1X
ZWJJbnNwZWN0b3Iuc2F2ZWRVUkwgPSBmdW5jdGlvbih1cmwpCi17Ci0gICAgdmFyIHNhdmVkVVJM
cyA9IFdlYkluc3BlY3Rvci5zZXR0aW5ncy5zYXZlZFVSTHMuZ2V0KCk7Ci0gICAgc2F2ZWRVUkxz
W3VybF0gPSB0cnVlOwotICAgIFdlYkluc3BlY3Rvci5zZXR0aW5ncy5zYXZlZFVSTHMuc2V0KHNh
dmVkVVJMcyk7Ci0gICAgdmFyIGNhbGxiYWNrID0gV2ViSW5zcGVjdG9yLl9zYXZlQ2FsbGJhY2tz
W3VybF07Ci0gICAgaWYgKCFjYWxsYmFjaykKLSAgICAgICAgcmV0dXJuOwotICAgIGRlbGV0ZSBX
ZWJJbnNwZWN0b3IuX3NhdmVDYWxsYmFja3NbdXJsXTsKLSAgICBjYWxsYmFjay5jYWxsKG51bGws
IHVybCk7Ci19Ci0KLVdlYkluc3BlY3Rvci5pc1VSTFNhdmVkID0gZnVuY3Rpb24odXJsKQotewot
ICAgIHZhciBzYXZlZFVSTHMgPSBXZWJJbnNwZWN0b3Iuc2V0dGluZ3Muc2F2ZWRVUkxzLmdldCgp
OwotICAgIHJldHVybiBzYXZlZFVSTHNbdXJsXTsKLX0KLQotV2ViSW5zcGVjdG9yLl9hcHBlbmRD
YWxsYmFja3MgPSBbXTsKLQotV2ViSW5zcGVjdG9yLmFwcGVuZCA9IGZ1bmN0aW9uKHVybCwgY29u
dGVudCwgY2FsbGJhY2spCi17Ci0gICAgaWYgKGNhbGxiYWNrKQotICAgICAgICBXZWJJbnNwZWN0
b3IuX2FwcGVuZENhbGxiYWNrc1t1cmxdID0gY2FsbGJhY2s7Ci0gICAgSW5zcGVjdG9yRnJvbnRl
bmRIb3N0LmFwcGVuZCh1cmwsIGNvbnRlbnQpOwotfQotCi1XZWJJbnNwZWN0b3IuYXBwZW5kZWRU
b1VSTCA9IGZ1bmN0aW9uKHVybCkKLXsKLSAgICB2YXIgY2FsbGJhY2sgPSBXZWJJbnNwZWN0b3Iu
X2FwcGVuZENhbGxiYWNrc1t1cmxdOwotICAgIGlmIChjYWxsYmFjaykKLSAgICAgICAgY2FsbGJh
Y2suY2FsbChudWxsLCB1cmwpOwotfQotCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>