<?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>51738</bug_id>
          
          <creation_ts>2010-12-30 02:38:02 -0800</creation_ts>
          <short_desc>Web Inspector: refactoring: encapsulate lazy initialization of SourceFrame</short_desc>
          <delta_ts>2011-01-17 06:14:16 -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>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Pavel Podivilov">podivilov</reporter>
          <assigned_to name="Pavel Podivilov">podivilov</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>327866</commentid>
    <comment_count>0</comment_count>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2010-12-30 02:38:02 -0800</bug_when>
    <thetext>Web Inspector: refactoring: encapsulate lazy initialization of SourceFrame</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>327867</commentid>
    <comment_count>1</comment_count>
      <attachid>77667</attachid>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2010-12-30 02:38:45 -0800</bug_when>
    <thetext>Created attachment 77667
Patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>327868</commentid>
    <comment_count>2</comment_count>
      <attachid>77667</attachid>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2010-12-30 02:39:17 -0800</bug_when>
    <thetext>Comment on attachment 77667
Patch.

Extract content loading logic from SourceView and ScriptView to ContentProvider implementations.
Pass ContentProvider in SourceFrame constructor to allow SourceFrame manage it&apos;s lazy initialization.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>327908</commentid>
    <comment_count>3</comment_count>
      <attachid>77667</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-12-30 06:09:50 -0800</bug_when>
    <thetext>Comment on attachment 77667
Patch.

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

Could you please split this into smaller patches? It is really hard to follow the changes here and I feel there are bugs introduced.

&gt; WebCore/inspector/front-end/ScriptView.js:34
&gt; +    this.sourceFrame.addScript(script.sourceID, script.startingLine);

I did not know SourceFrame is sourceID aware. It probably should not be.

&gt; WebCore/inspector/front-end/SourceFrame.js:869
&gt; +WebInspector.ContentProvider = function()

SourceFrameContentProvider ?

&gt; WebCore/inspector/front-end/SourceFrame.js:914
&gt; +WebInspector.ResourceContentProvider = function(resource)

I thought the whole point of content provider was to isolate SourceFrame from Script / Resource. Now I see explicit resource usage in SourceFrame.js. This seems wrong.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>327938</commentid>
    <comment_count>4</comment_count>
      <attachid>77685</attachid>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2010-12-30 09:13:41 -0800</bug_when>
    <thetext>Created attachment 77685
Patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>327939</commentid>
    <comment_count>5</comment_count>
      <attachid>77685</attachid>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2010-12-30 09:13:56 -0800</bug_when>
    <thetext>Comment on attachment 77685
Patch.

All comments addressed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>328150</commentid>
    <comment_count>6</comment_count>
      <attachid>77685</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-12-31 04:13:09 -0800</bug_when>
    <thetext>Comment on attachment 77685
Patch.

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

&gt; WebCore/inspector/front-end/SourceFrame.js:835
&gt; +        var sourceIDToStartingLineMap = this._contentProvider.sourceIDToStartingLineMap();

You will be able to use short for syntax if you make properties on Array&apos;s prototype non-enumerable:
Object.defineProperty(Array.prototype, &quot;remove&quot;, { value: function() { ... }}); By default it&apos;ll create non-writable, non-enumerable, non-configurable property.

&gt; WebCore/inspector/front-end/SourceFrame.js:874
&gt; +    sourceIDToStartingLineMap: function()

This is a very strange content provider. I&apos;d suggest to provide Scripts array here: you can then get both ids and starting lines from the scripts.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>328160</commentid>
    <comment_count>7</comment_count>
      <attachid>77716</attachid>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2010-12-31 05:19:09 -0800</bug_when>
    <thetext>Created attachment 77716
Comments addressed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>332313</commentid>
    <comment_count>8</comment_count>
      <attachid>78525</attachid>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2011-01-11 06:52:36 -0800</bug_when>
    <thetext>Created attachment 78525
Rebase.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>335280</commentid>
    <comment_count>9</comment_count>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2011-01-17 06:14:16 -0800</bug_when>
    <thetext>Committed r75937: &lt;http://trac.webkit.org/changeset/75937&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>77667</attachid>
            <date>2010-12-30 02:38:45 -0800</date>
            <delta_ts>2010-12-30 09:13:41 -0800</delta_ts>
            <desc>Patch.</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>25753</size>
            <attacher name="Pavel Podivilov">podivilov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
YWU2Zjc1My4uYTJhODczYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1NCBAQAorMjAxMC0xMi0zMCAgUGF2ZWwgUG9kaXZp
bG92ICA8cG9kaXZpbG92QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiByZWZhY3RvcmluZzogZW5jYXBz
dWxhdGUgbGF6eSBpbml0aWFsaXphdGlvbiBvZiBTb3VyY2VGcmFtZS4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUxNzM4CisKKyAgICAgICAgRXh0cmFj
dCBjb250ZW50IGxvYWRpbmcgbG9naWMgZnJvbSBTb3VyY2VWaWV3IGFuZCBTY3JpcHRWaWV3IHRv
IENvbnRlbnRQcm92aWRlciBpbXBsZW1lbnRhdGlvbnMuCisgICAgICAgIFBhc3MgQ29udGVudFBy
b3ZpZGVyIGluIFNvdXJjZUZyYW1lIGNvbnN0cnVjdG9yIHRvIGFsbG93IFNvdXJjZUZyYW1lIG1h
bmFnZSBpdCdzIGxhenkgaW5pdGlhbGl6YXRpb24uCisKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJv
bnQtZW5kL1NjcmlwdC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TY3JpcHQucHJvdG90eXBl
LnNldCBzb3VyY2UpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0Vmlldy5q
czoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TY3JpcHRWaWV3KToKKyAgICAgICAgKiBpbnNwZWN0
b3IvZnJvbnQtZW5kL1NjcmlwdHNQYW5lbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TY3Jp
cHRzUGFuZWwucHJvdG90eXBlLl9hZGRTY3JpcHQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNj
cmlwdHNQYW5lbC5wcm90b3R5cGUuZWRpdFNjcmlwdFNvdXJjZS5teWNhbGxiYWNrKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwucHJvdG90eXBlLmVkaXRTY3JpcHRTb3VyY2Up
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5wcm90b3R5cGUudmlld1JlY3Jl
YXRlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsLnByb3RvdHlwZS5zb3Vy
Y2VGcmFtZUZvclNjcmlwdCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsLnBy
b3RvdHlwZS5fc291cmNlRnJhbWVGb3JSZXNvdXJjZSk6CisgICAgICAgICogaW5zcGVjdG9yL2Zy
b250LWVuZC9Tb3VyY2VGcmFtZS5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Tb3VyY2VGcmFt
ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU291cmNlRnJhbWUucHJvdG90eXBlLnNldCB2aXNp
YmxlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Tb3VyY2VGcmFtZS5wcm90b3R5cGUuYWRkU2Ny
aXB0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Tb3VyY2VGcmFtZS5wcm90b3R5cGUuX2NyZWF0
ZVRleHRWaWV3ZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNvdXJjZUZyYW1lLnByb3RvdHlw
ZS5maW5kU2VhcmNoTWF0Y2hlcyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU291cmNlRnJhbWUu
cHJvdG90eXBlLmNhbmNlbEZpbmRTZWFyY2hNYXRjaGVzKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5Tb3VyY2VGcmFtZS5wcm90b3R5cGUuX2JyZWFrcG9pbnRBZGRlZCk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuU291cmNlRnJhbWUucHJvdG90eXBlLl9kb0VkaXRMaW5lKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5Tb3VyY2VGcmFtZS5wcm90b3R5cGUuX2JyZWFrcG9pbnRzKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5Tb3VyY2VGcmFtZS5wcm90b3R5cGUuX3NvdXJjZUlERm9yTGluZSk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuQ29udGVudFByb3ZpZGVyKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5Db250ZW50UHJvdmlkZXIucHJvdG90eXBlLnJlcXVlc3RDb250ZW50KToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5TY3JpcHRDb250ZW50UHJvdmlkZXIpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLlNjcmlwdENvbnRlbnRQcm92aWRlci5wcm90b3R5cGUucmVxdWVzdENvbnRlbnQuY29udGVu
dExvYWRlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2NyaXB0Q29udGVudFByb3ZpZGVyLnBy
b3RvdHlwZS5yZXF1ZXN0Q29udGVudCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VD
b250ZW50UHJvdmlkZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlQ29udGVudFBy
b3ZpZGVyLnByb3RvdHlwZS5yZXF1ZXN0Q29udGVudCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zy
b250LWVuZC9Tb3VyY2VWaWV3LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNvdXJjZVZpZXcp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNvdXJjZVZpZXcucHJvdG90eXBlLnNob3cpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLlNvdXJjZVZpZXcucHJvdG90eXBlLmhpZGUpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLlNvdXJjZVZpZXcucHJvdG90eXBlLnJlc2l6ZSk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuU291cmNlVmlldy5wcm90b3R5cGUuc2VhcmNoQ2FuY2VsZWQpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLlNvdXJjZVZpZXcucHJvdG90eXBlLnBlcmZvcm1TZWFyY2guZGlkRmluZFNl
YXJjaE1hdGNoZXMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNvdXJjZVZpZXcucHJvdG90eXBl
LnBlcmZvcm1TZWFyY2gpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNvdXJjZVZpZXcucHJvdG90
eXBlLnJldmVhbExpbmUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNvdXJjZVZpZXcucHJvdG90
eXBlLmhpZ2hsaWdodExpbmUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNvdXJjZVZpZXcucHJv
dG90eXBlLl9qdW1wVG9TZWFyY2hSZXN1bHQpOgorCiAyMDEwLTEyLTI5ICBBbnRvbiBNdWhpbiAg
PGFudG9ubUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwu
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0LmpzIGIvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NjcmlwdC5qcwppbmRleCAxODRmZTk3Li41MjdkZDlk
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0LmpzCisrKyBi
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHQuanMKQEAgLTU3LDEwICs1Nyw2IEBA
IFdlYkluc3BlY3Rvci5TY3JpcHQuV29ybGRUeXBlID0gewogICAgIEVYVEVOU0lPTlNfV09STEQ6
IDEKIH0KIAotV2ViSW5zcGVjdG9yLlNjcmlwdC5FdmVudHMgPSB7Ci0gICAgU291cmNlQ2hhbmdl
ZDogInNvdXJjZS1jaGFuZ2VkIgotfQotCiBXZWJJbnNwZWN0b3IuU2NyaXB0LnByb3RvdHlwZSA9
IHsKICAgICBnZXQgbGluZXNDb3VudCgpCiAgICAgewpAQCAtODUsOCArODEsNSBAQCBXZWJJbnNw
ZWN0b3IuU2NyaXB0LnByb3RvdHlwZSA9IHsKICAgICBzZXQgc291cmNlKHNvdXJjZSkKICAgICB7
CiAgICAgICAgIHRoaXMuX3NvdXJjZSA9IHNvdXJjZTsKLSAgICAgICAgdGhpcy5kaXNwYXRjaEV2
ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLlNjcmlwdC5FdmVudHMuU291cmNlQ2hhbmdlZCk7
CiAgICAgfQogfQotCi1XZWJJbnNwZWN0b3IuU2NyaXB0LnByb3RvdHlwZS5fX3Byb3RvX18gPSBX
ZWJJbnNwZWN0b3IuT2JqZWN0LnByb3RvdHlwZTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9TY3JpcHRWaWV3LmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L1NjcmlwdFZpZXcuanMKaW5kZXggMzlkYWU1NS4uMDg3MGY1NCAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NjcmlwdFZpZXcuanMKKysrIGIvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL1NjcmlwdFZpZXcuanMKQEAgLTI5LDcwICsyOSwxNiBAQCBXZWJJbnNwZWN0
b3IuU2NyaXB0VmlldyA9IGZ1bmN0aW9uKHNjcmlwdCkKIAogICAgIHRoaXMuZWxlbWVudC5hZGRT
dHlsZUNsYXNzKCJzY3JpcHQtdmlldyIpOwogCi0gICAgdGhpcy5zY3JpcHQgPSBzY3JpcHQ7Ci0g
ICAgdGhpcy5zY3JpcHQuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuU2NyaXB0LkV2ZW50
cy5Tb3VyY2VDaGFuZ2VkLCB0aGlzLl9zY3JpcHRTb3VyY2VDaGFuZ2VkLCB0aGlzKTsKLQotICAg
IHRoaXMuX2ZyYW1lTmVlZHNTZXR1cCA9IHRydWU7Ci0gICAgdGhpcy5fc291cmNlRnJhbWVTZXR1
cCA9IGZhbHNlOwotICAgIHRoaXMuc291cmNlRnJhbWUgPSBuZXcgV2ViSW5zcGVjdG9yLlNvdXJj
ZUZyYW1lKHRoaXMuZWxlbWVudCwgW3NjcmlwdF0sIFdlYkluc3BlY3Rvci5wYW5lbHMuc2NyaXB0
cy5jYW5FZGl0U2NyaXB0cygpKTsKKyAgICB2YXIgY29udGVudFByb3ZpZGVyID0gbmV3IFdlYklu
c3BlY3Rvci5TY3JpcHRDb250ZW50UHJvdmlkZXIoc2NyaXB0KTsKKyAgICB0aGlzLnNvdXJjZUZy
YW1lID0gbmV3IFdlYkluc3BlY3Rvci5Tb3VyY2VGcmFtZSh0aGlzLmVsZW1lbnQsIGNvbnRlbnRQ
cm92aWRlciwgIiIsIFdlYkluc3BlY3Rvci5wYW5lbHMuc2NyaXB0cy5jYW5FZGl0U2NyaXB0cygp
KTsKKyAgICB0aGlzLnNvdXJjZUZyYW1lLmFkZFNjcmlwdChzY3JpcHQuc291cmNlSUQsIHNjcmlw
dC5zdGFydGluZ0xpbmUpOwogfQogCiBXZWJJbnNwZWN0b3IuU2NyaXB0Vmlldy5wcm90b3R5cGUg
PSB7Ci0gICAgc2hvdzogZnVuY3Rpb24ocGFyZW50RWxlbWVudCkKLSAgICB7Ci0gICAgICAgIFdl
Ykluc3BlY3Rvci5WaWV3LnByb3RvdHlwZS5zaG93LmNhbGwodGhpcywgcGFyZW50RWxlbWVudCk7
Ci0gICAgICAgIHRoaXMuc2V0dXBTb3VyY2VGcmFtZUlmTmVlZGVkKCk7Ci0gICAgICAgIHRoaXMu
c291cmNlRnJhbWUudmlzaWJsZSA9IHRydWU7Ci0gICAgICAgIHRoaXMucmVzaXplKCk7Ci0gICAg
fSwKLQotICAgIHNldHVwU291cmNlRnJhbWVJZk5lZWRlZDogZnVuY3Rpb24oKQotICAgIHsKLSAg
ICAgICAgaWYgKCF0aGlzLl9mcmFtZU5lZWRzU2V0dXApCi0gICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgIGRlbGV0ZSB0aGlzLl9mcmFtZU5lZWRzU2V0dXA7Ci0KLSAgICAgICAgdGhpcy5hdHRh
Y2goKTsKLQotICAgICAgICBpZiAodGhpcy5zY3JpcHQuc291cmNlKQotICAgICAgICAgICAgdGhp
cy5fc291cmNlRnJhbWVTZXR1cEZpbmlzaGVkKCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAg
IEluc3BlY3RvckJhY2tlbmQuZ2V0U2NyaXB0U291cmNlKHRoaXMuc2NyaXB0LnNvdXJjZUlELCB0
aGlzLl9kaWRHZXRTY3JpcHRTb3VyY2UuYmluZCh0aGlzKSk7Ci0gICAgfSwKLQotICAgIF9kaWRH
ZXRTY3JpcHRTb3VyY2U6IGZ1bmN0aW9uKHNvdXJjZSkKLSAgICB7Ci0gICAgICAgIHRoaXMuc2Ny
aXB0LnNvdXJjZSA9IHNvdXJjZSB8fCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIjxzb3VyY2UgaXMg
bm90IGF2YWlsYWJsZT4iKTsKLSAgICAgICAgdGhpcy5fc291cmNlRnJhbWVTZXR1cEZpbmlzaGVk
KCk7Ci0gICAgfSwKLQotICAgIF9zb3VyY2VGcmFtZVNldHVwRmluaXNoZWQ6IGZ1bmN0aW9uKCkK
LSAgICB7Ci0gICAgICAgIHRoaXMuc291cmNlRnJhbWUuc2V0Q29udGVudCgidGV4dC9qYXZhc2Ny
aXB0IiwgdGhpcy5fcHJlcGVuZFdoaXRlc3BhY2UodGhpcy5zY3JpcHQuc291cmNlKSk7Ci0gICAg
ICAgIHRoaXMuX3NvdXJjZUZyYW1lU2V0dXAgPSB0cnVlOwotICAgIH0sCi0KLSAgICBfcHJlcGVu
ZFdoaXRlc3BhY2U6IGZ1bmN0aW9uKGNvbnRlbnQpIHsKLSAgICAgICAgdmFyIHByZWZpeCA9ICIi
OwotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuc2NyaXB0LnN0YXJ0aW5nTGluZSAt
IDE7ICsraSkKLSAgICAgICAgICAgIHByZWZpeCArPSAiXG4iOwotICAgICAgICByZXR1cm4gcHJl
Zml4ICsgY29udGVudDsKLSAgICB9LAotCi0gICAgYXR0YWNoOiBmdW5jdGlvbigpCi0gICAgewot
ICAgICAgICBpZiAoIXRoaXMuZWxlbWVudC5wYXJlbnROb2RlKQotICAgICAgICAgICAgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoInNjcmlwdC1yZXNvdXJjZS12aWV3cyIpLmFwcGVuZENoaWxkKHRo
aXMuZWxlbWVudCk7Ci0gICAgfSwKLQotICAgIF9zY3JpcHRTb3VyY2VDaGFuZ2VkOiBmdW5jdGlv
bihldmVudCkKLSAgICB7Ci0gICAgICAgIHRoaXMuc291cmNlRnJhbWUudXBkYXRlQ29udGVudCh0
aGlzLl9wcmVwZW5kV2hpdGVzcGFjZSh0aGlzLnNjcmlwdC5zb3VyY2UpKTsKLSAgICB9LAotCiAg
ICAgLy8gVGhlIGZvbGxvd2luZyBtZXRob2RzIGFyZSBwdWxsZWQgZnJvbSBTb3VyY2VWaWV3LCBz
aW5jZSB0aGV5IGFyZQogICAgIC8vIGdlbmVyaWMgYW5kIHdvcmsgd2l0aCBTY3JpcHRWaWV3IGp1
c3QgZmluZS4KIAorICAgIHNob3c6IFdlYkluc3BlY3Rvci5Tb3VyY2VWaWV3LnByb3RvdHlwZS5z
aG93LAogICAgIGhpZGU6IFdlYkluc3BlY3Rvci5Tb3VyY2VWaWV3LnByb3RvdHlwZS5oaWRlLAog
ICAgIHJldmVhbExpbmU6IFdlYkluc3BlY3Rvci5Tb3VyY2VWaWV3LnByb3RvdHlwZS5yZXZlYWxM
aW5lLAogICAgIGhpZ2hsaWdodExpbmU6IFdlYkluc3BlY3Rvci5Tb3VyY2VWaWV3LnByb3RvdHlw
ZS5oaWdobGlnaHRMaW5lLApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L1NjcmlwdHNQYW5lbC5qcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRzUGFu
ZWwuanMKaW5kZXggZmQ0NDQwNC4uNDU4OTcwOCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL1NjcmlwdHNQYW5lbC5qcworKysgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvU2NyaXB0c1BhbmVsLmpzCkBAIC0yNTgsNyArMjU4LDcgQEAgV2ViSW5zcGVjdG9yLlNj
cmlwdHNQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICAgICAgc2NyaXB0LnJlc291cmNl
ID0gcmVzb3VyY2U7CiAgICAgICAgICAgICAgICAgdmFyIHZpZXcgPSBXZWJJbnNwZWN0b3IuUmVz
b3VyY2VWaWV3LmV4aXN0aW5nUmVzb3VyY2VWaWV3Rm9yUmVzb3VyY2UocmVzb3VyY2UpOwogICAg
ICAgICAgICAgICAgIGlmICh2aWV3ICYmIHZpZXcuc291cmNlRnJhbWUpCi0gICAgICAgICAgICAg
ICAgICAgIHZpZXcuc291cmNlRnJhbWUuYWRkU2NyaXB0KHNjcmlwdCk7CisgICAgICAgICAgICAg
ICAgICAgIHZpZXcuc291cmNlRnJhbWUuYWRkU2NyaXB0KHNjcmlwdC5zb3VyY2VJRCwgc2NyaXB0
LnN0YXJ0aW5nTGluZSk7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIC8v
IFJlc291cmNlIGlzIG5vdCBmaW5pc2hlZCwgYmluZCB0aGUgc2NyaXB0IGxhdGVyLgogICAgICAg
ICAgICAgICAgIGlmICghcmVzb3VyY2UuX3NjcmlwdHNQZW5kaW5nUmVzb3VyY2VMb2FkKSB7CkBA
IC0yOTIsNyArMjkyLDcgQEAgV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5wcm90b3R5cGUgPSB7
CiAgICAgICAgIHJldHVybiBQcmVmZXJlbmNlcy5jYW5FZGl0U2NyaXB0U291cmNlOwogICAgIH0s
CiAKLSAgICBlZGl0U2NyaXB0U291cmNlOiBmdW5jdGlvbihlZGl0RGF0YSwgY29tbWl0RWRpdGlu
Z0NhbGxiYWNrLCBjYW5jZWxFZGl0aW5nQ2FsbGJhY2spCisgICAgZWRpdFNjcmlwdFNvdXJjZTog
ZnVuY3Rpb24oZWRpdERhdGEsIHJldmVydEVkaXRpbmdDYWxsYmFjaywgY2FuY2VsRWRpdGluZ0Nh
bGxiYWNrKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLmNhbkVkaXRTY3JpcHRzKCkpCiAgICAg
ICAgICAgICByZXR1cm47CkBAIC0zMDUsNyArMzA1LDE1IEBAIFdlYkluc3BlY3Rvci5TY3JpcHRz
UGFuZWwucHJvdG90eXBlID0gewogICAgICAgICBmdW5jdGlvbiBteWNhbGxiYWNrKHN1Y2Nlc3Ms
IG5ld0JvZHlPckVycm9yTWVzc2FnZSwgY2FsbEZyYW1lcykKICAgICAgICAgewogICAgICAgICAg
ICAgaWYgKHN1Y2Nlc3MpIHsKLSAgICAgICAgICAgICAgICBjb21taXRFZGl0aW5nQ2FsbGJhY2so
bmV3Qm9keU9yRXJyb3JNZXNzYWdlKTsKKyAgICAgICAgICAgICAgICB2YXIgc2NyaXB0ID0gV2Vi
SW5zcGVjdG9yLmRlYnVnZ2VyTW9kZWwuc2NyaXB0Rm9yU291cmNlSUQoZWRpdERhdGEuc291cmNl
SUQpOworICAgICAgICAgICAgICAgIHNjcmlwdC5zb3VyY2UgPSBuZXdCb2R5T3JFcnJvck1lc3Nh
Z2U7CisgICAgICAgICAgICAgICAgdmFyIG9sZFZpZXcgPSBzY3JpcHQuX3NjcmlwdFZpZXcKKyAg
ICAgICAgICAgICAgICBpZiAob2xkVmlldykgeworICAgICAgICAgICAgICAgICAgICBzY3JpcHQu
X3NjcmlwdFZpZXcgPSBuZXcgV2ViSW5zcGVjdG9yLlNjcmlwdFZpZXcoc2NyaXB0KTsKKyAgICAg
ICAgICAgICAgICAgICAgdGhpcy52aWV3UmVjcmVhdGVkKG9sZFZpZXcsIHNjcmlwdC5fc2NyaXB0
Vmlldyk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChzY3JpcHQucmVz
b3VyY2UpCisgICAgICAgICAgICAgICAgICAgIHNjcmlwdC5yZXNvdXJjZS5zZXRDb250ZW50KG5l
d0JvZHlPckVycm9yTWVzc2FnZSwgcmV2ZXJ0RWRpdGluZ0NhbGxiYWNrKTsKICAgICAgICAgICAg
ICAgICBpZiAoY2FsbEZyYW1lcyAmJiBjYWxsRnJhbWVzLmxlbmd0aCkKICAgICAgICAgICAgICAg
ICAgICAgdGhpcy5fZGVidWdnZXJQYXVzZWQoeyBkYXRhOiB7IGNhbGxGcmFtZXM6IGNhbGxGcmFt
ZXMgfSB9KTsKICAgICAgICAgICAgIH0gZWxzZSB7CkBAIC00NjAsOCArNDY4LDggQEAgV2ViSW5z
cGVjdG9yLlNjcmlwdHNQYW5lbC5wcm90b3R5cGUgPSB7CiAKICAgICB2aWV3UmVjcmVhdGVkOiBm
dW5jdGlvbihvbGRWaWV3LCBuZXdWaWV3KQogICAgIHsKLSAgICAgICAgaWYgKHRoaXMuX3Zpc2li
bGVWaWV3ID09PSBvbGRWaWV3KQotICAgICAgICAgICAgdGhpcy5fdmlzaWJsZVZpZXcgPSBuZXdW
aWV3OworICAgICAgICBpZiAodGhpcy52aXNpYmxlVmlldyA9PT0gb2xkVmlldykKKyAgICAgICAg
ICAgIHRoaXMudmlzaWJsZVZpZXcgPSBuZXdWaWV3OwogICAgIH0sCiAKICAgICBjYW5TaG93U291
cmNlTGluZTogZnVuY3Rpb24odXJsLCBsaW5lKQpAQCAtNTI3LDcgKzUzNSw2IEBAIFdlYkluc3Bl
Y3Rvci5TY3JpcHRzUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICBpZiAoIXRoaXMuZWxlbWVu
dC5wYXJlbnROb2RlKQogICAgICAgICAgICAgdGhpcy5hdHRhY2goKTsKIAotICAgICAgICB2aWV3
LnNldHVwU291cmNlRnJhbWVJZk5lZWRlZCgpOwogICAgICAgICByZXR1cm4gdmlldy5zb3VyY2VG
cmFtZTsKICAgICB9LAogCkBAIC01NDUsMTAgKzU1Miw2IEBAIFdlYkluc3BlY3Rvci5TY3JpcHRz
UGFuZWwucHJvdG90eXBlID0gewogICAgICAgICBpZiAoIXZpZXcpCiAgICAgICAgICAgICByZXR1
cm4gbnVsbDsKIAotICAgICAgICBpZiAoIXZpZXcuc2V0dXBTb3VyY2VGcmFtZUlmTmVlZGVkKQot
ICAgICAgICAgICAgcmV0dXJuIG51bGw7Ci0KLSAgICAgICAgdmlldy5zZXR1cFNvdXJjZUZyYW1l
SWZOZWVkZWQoKTsKICAgICAgICAgcmV0dXJuIHZpZXcuc291cmNlRnJhbWU7CiAgICAgfSwKIApk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NvdXJjZUZyYW1lLmpzIGIv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NvdXJjZUZyYW1lLmpzCmluZGV4IGZhODQ0MWQu
LjMzM2Y3YjYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Tb3VyY2VG
cmFtZS5qcworKysgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU291cmNlRnJhbWUuanMK
QEAgLTI4LDE0ICsyOCwxNSBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3Iu
U291cmNlRnJhbWUgPSBmdW5jdGlvbihwYXJlbnRFbGVtZW50LCBzY3JpcHRzLCBjYW5FZGl0U2Ny
aXB0cykKK1dlYkluc3BlY3Rvci5Tb3VyY2VGcmFtZSA9IGZ1bmN0aW9uKHBhcmVudEVsZW1lbnQs
IGNvbnRlbnRQcm92aWRlciwgdXJsLCBjYW5FZGl0U2NyaXB0cykKIHsKICAgICB0aGlzLl9wYXJl
bnRFbGVtZW50ID0gcGFyZW50RWxlbWVudDsKLSAgICB0aGlzLl9zY3JpcHRzID0ge307Ci0gICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCBzY3JpcHRzLmxlbmd0aDsgKytpKQotICAgICAgICB0aGlzLl9z
Y3JpcHRzW3NjcmlwdHNbaV0uc291cmNlSURdID0gc2NyaXB0c1tpXTsKKyAgICB0aGlzLl9jb250
ZW50UHJvdmlkZXIgPSBjb250ZW50UHJvdmlkZXI7CisgICAgdGhpcy5fdXJsID0gdXJsOwogICAg
IHRoaXMuX2NhbkVkaXRTY3JpcHRzID0gY2FuRWRpdFNjcmlwdHM7CiAKKyAgICB0aGlzLl9zb3Vy
Y2VJRFRvU3RhcnRpbmdMaW5lID0ge307CisKICAgICB0aGlzLl90ZXh0TW9kZWwgPSBuZXcgV2Vi
SW5zcGVjdG9yLlRleHRFZGl0b3JNb2RlbCgpOwogICAgIHRoaXMuX3RleHRNb2RlbC5yZXBsYWNl
VGFic1dpdGhTcGFjZXMgPSB0cnVlOwogCkBAIC00Myw3ICs0NCw2IEBAIFdlYkluc3BlY3Rvci5T
b3VyY2VGcmFtZSA9IGZ1bmN0aW9uKHBhcmVudEVsZW1lbnQsIHNjcmlwdHMsIGNhbkVkaXRTY3Jp
cHRzKQogICAgIHRoaXMuX3Jvd01lc3NhZ2VzID0ge307CiAgICAgdGhpcy5fbWVzc2FnZUJ1YmJs
ZXMgPSB7fTsKIAotICAgIHRoaXMuX2xvYWRlZCA9IGZhbHNlOwogICAgIHRoaXMuX3BvcG92ZXJP
YmplY3RHcm91cCA9ICJwb3BvdmVyIjsKIH0KIApAQCAtNTEsMTQgKzUxLDE4IEBAIFdlYkluc3Bl
Y3Rvci5Tb3VyY2VGcmFtZS5wcm90b3R5cGUgPSB7CiAKICAgICBzZXQgdmlzaWJsZSh2aXNpYmxl
KQogICAgIHsKLSAgICAgICAgdGhpcy5fdmlzaWJsZSA9IHZpc2libGU7Ci0gICAgICAgIHRoaXMu
X2NyZWF0ZVZpZXdlcklmTmVlZGVkKCk7CisgICAgICAgIGlmICghdGhpcy5fY29udGVudFJlcXVl
c3RlZCkgeworICAgICAgICAgICAgdGhpcy5fY29udGVudFJlcXVlc3RlZCA9IHRydWU7CisgICAg
ICAgICAgICB0aGlzLl9jb250ZW50UHJvdmlkZXIucmVxdWVzdENvbnRlbnQodGhpcy5fY3JlYXRl
VGV4dFZpZXdlci5iaW5kKHRoaXMpKTsKKyAgICAgICAgfQogCiAgICAgICAgIGlmICh2aXNpYmxl
KSB7CiAgICAgICAgICAgICBpZiAodGhpcy5fdGV4dFZpZXdlciAmJiB0aGlzLl9zY3JvbGxUb3Ap
CiAgICAgICAgICAgICAgICAgdGhpcy5fdGV4dFZpZXdlci5lbGVtZW50LnNjcm9sbFRvcCA9IHRo
aXMuX3Njcm9sbFRvcDsKICAgICAgICAgICAgIGlmICh0aGlzLl90ZXh0Vmlld2VyICYmIHRoaXMu
X3Njcm9sbExlZnQpCiAgICAgICAgICAgICAgICAgdGhpcy5fdGV4dFZpZXdlci5lbGVtZW50LnNj
cm9sbExlZnQgPSB0aGlzLl9zY3JvbGxMZWZ0OworICAgICAgICAgICAgaWYgKHRoaXMuX3RleHRW
aWV3ZXIpCisgICAgICAgICAgICAgICAgdGhpcy5fdGV4dFZpZXdlci5yZXNpemUoKTsKICAgICAg
ICAgfSBlbHNlIHsKICAgICAgICAgICAgIHRoaXMuX2hpZGVQb3B1cCgpOwogICAgICAgICAgICAg
aWYgKHRoaXMuX3RleHRWaWV3ZXIpIHsKQEAgLTExNCw5ICsxMTgsOSBAQCBXZWJJbnNwZWN0b3Iu
U291cmNlRnJhbWUucHJvdG90eXBlID0gewogICAgICAgICAgICAgdGhpcy5fYWRkTWVzc2FnZVRv
U291cmNlKG1zZyk7CiAgICAgfSwKIAotICAgIGFkZFNjcmlwdDogZnVuY3Rpb24oc2NyaXB0KQor
ICAgIGFkZFNjcmlwdDogZnVuY3Rpb24oc291cmNlSUQsIHN0YXJ0aW5nTGluZSkKICAgICB7Ci0g
ICAgICAgIHRoaXMuX3NjcmlwdHNbc2NyaXB0LnNvdXJjZUlEXSA9IHNjcmlwdDsKKyAgICAgICAg
dGhpcy5fc291cmNlSURUb1N0YXJ0aW5nTGluZVtzb3VyY2VJRF0gPSBzdGFydGluZ0xpbmU7CiAg
ICAgfSwKIAogICAgIGNsZWFyTWVzc2FnZXM6IGZ1bmN0aW9uKCkKQEAgLTEzOSwyMCArMTQzLDYg
QEAgV2ViSW5zcGVjdG9yLlNvdXJjZUZyYW1lLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRo
aXMuX3RleHRWaWV3ZXIucmV2YWxpZGF0ZURlY29yYXRpb25zQW5kUGFpbnQoKTsKICAgICB9LAog
Ci0gICAgc2V0Q29udGVudDogZnVuY3Rpb24obWltZVR5cGUsIGNvbnRlbnQsIHVybCkKLSAgICB7
Ci0gICAgICAgIHRoaXMuX2xvYWRlZCA9IHRydWU7Ci0gICAgICAgIHRoaXMuX3RleHRNb2RlbC5z
ZXRUZXh0KG51bGwsIGNvbnRlbnQpOwotICAgICAgICB0aGlzLl9taW1lVHlwZSA9IG1pbWVUeXBl
OwotICAgICAgICB0aGlzLl91cmwgPSB1cmw7Ci0gICAgICAgIHRoaXMuX2NyZWF0ZVZpZXdlcklm
TmVlZGVkKCk7Ci0gICAgfSwKLQotICAgIHVwZGF0ZUNvbnRlbnQ6IGZ1bmN0aW9uKGNvbnRlbnQp
Ci0gICAgewotICAgICAgICB0aGlzLl90ZXh0TW9kZWwuc2V0VGV4dChudWxsLCBjb250ZW50KTsK
LSAgICB9LAotCiAgICAgZ2V0IHRleHRNb2RlbCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhp
cy5fdGV4dE1vZGVsOwpAQCAtMTg1LDEwICsxNzUsOSBAQCBXZWJJbnNwZWN0b3IuU291cmNlRnJh
bWUucHJvdG90eXBlID0gewogICAgICAgICAgICAgZGVsZXRlIHRoaXMuX2xpbmVUb0hpZ2hsaWdo
dDsKICAgICB9LAogCi0gICAgX2NyZWF0ZVZpZXdlcklmTmVlZGVkOiBmdW5jdGlvbigpCisgICAg
X2NyZWF0ZVRleHRWaWV3ZXI6IGZ1bmN0aW9uKG1pbWVUeXBlLCBjb250ZW50KQogICAgIHsKLSAg
ICAgICAgaWYgKCF0aGlzLl92aXNpYmxlIHx8ICF0aGlzLl9sb2FkZWQgfHwgdGhpcy5fdGV4dFZp
ZXdlcikKLSAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgdGhpcy5fdGV4dE1vZGVsLnNldFRl
eHQobnVsbCwgY29udGVudCk7CiAKICAgICAgICAgdGhpcy5fdGV4dFZpZXdlciA9IG5ldyBXZWJJ
bnNwZWN0b3IuVGV4dFZpZXdlcih0aGlzLl90ZXh0TW9kZWwsIFdlYkluc3BlY3Rvci5wbGF0Zm9y
bSwgdGhpcy5fdXJsKTsKICAgICAgICAgdmFyIGVsZW1lbnQgPSB0aGlzLl90ZXh0Vmlld2VyLmVs
ZW1lbnQ7CkBAIC0yMDAsNyArMTg5LDcgQEAgV2ViSW5zcGVjdG9yLlNvdXJjZUZyYW1lLnByb3Rv
dHlwZSA9IHsKIAogICAgICAgICB0aGlzLl90ZXh0Vmlld2VyLmJlZ2luVXBkYXRlcygpOwogCi0g
ICAgICAgIHRoaXMuX3RleHRWaWV3ZXIubWltZVR5cGUgPSB0aGlzLl9taW1lVHlwZTsKKyAgICAg
ICAgdGhpcy5fdGV4dFZpZXdlci5taW1lVHlwZSA9IG1pbWVUeXBlOwogICAgICAgICB0aGlzLl9h
ZGRFeGlzdGluZ01lc3NhZ2VzVG9Tb3VyY2UoKTsKICAgICAgICAgdGhpcy5fdXBkYXRlRXhlY3V0
aW9uTGluZSgpOwogICAgICAgICB0aGlzLl91cGRhdGVEaWZmRGVjb3JhdGlvbnMoKTsKQEAgLTIy
Miw2ICsyMTEsMTEgQEAgV2ViSW5zcGVjdG9yLlNvdXJjZUZyYW1lLnByb3RvdHlwZSA9IHsKICAg
ICAgICAgICAgIGRlbGV0ZSB0aGlzLl9saW5lVG9IaWdobGlnaHQ7CiAgICAgICAgIH0KIAorICAg
ICAgICBpZiAodGhpcy5fZGVsYXllZEZpbmRTZWFyY2hNYXRjaGVzKSB7CisgICAgICAgICAgICB0
aGlzLl9kZWxheWVkRmluZFNlYXJjaE1hdGNoZXMoKTsKKyAgICAgICAgICAgIGRlbGV0ZSB0aGlz
Ll9kZWxheWVkRmluZFNlYXJjaE1hdGNoZXM7CisgICAgICAgIH0KKwogICAgICAgICB2YXIgYnJl
YWtwb2ludHMgPSB0aGlzLl9icmVha3BvaW50cygpOwogICAgICAgICBmb3IgKHZhciBpID0gMDsg
aSA8IGJyZWFrcG9pbnRzLmxlbmd0aDsgKytpKQogICAgICAgICAgICAgdGhpcy5fYWRkQnJlYWtw
b2ludChicmVha3BvaW50c1tpXSk7CkBAIC0yMzMsMjIgKzIyNywzNCBAQCBXZWJJbnNwZWN0b3Iu
U291cmNlRnJhbWUucHJvdG90eXBlID0gewogICAgICAgICAgICAgdGhpcy5fdGV4dFZpZXdlci5l
ZGl0Q2FsbGJhY2sgPSB0aGlzLl9lZGl0TGluZS5iaW5kKHRoaXMpOwogICAgIH0sCiAKLSAgICBm
aW5kU2VhcmNoTWF0Y2hlczogZnVuY3Rpb24ocXVlcnkpCisgICAgZmluZFNlYXJjaE1hdGNoZXM6
IGZ1bmN0aW9uKHF1ZXJ5LCBmaW5pc2hlZENhbGxiYWNrKQogICAgIHsKLSAgICAgICAgdmFyIHJh
bmdlcyA9IFtdOwotCi0gICAgICAgIC8vIEZpcnN0IGRvIGNhc2UtaW5zZW5zaXRpdmUgc2VhcmNo
LgotICAgICAgICB2YXIgcmVnZXhPYmplY3QgPSBjcmVhdGVTZWFyY2hSZWdleChxdWVyeSk7Ci0g
ICAgICAgIHRoaXMuX2NvbGxlY3RSZWdleE1hdGNoZXMocmVnZXhPYmplY3QsIHJhbmdlcyk7Ci0K
LSAgICAgICAgLy8gVGhlbiB0cnkgcmVnZXggc2VhcmNoIGlmIHVzZXIga25vd3MgdGhlIC8gLyBo
aW50LgotICAgICAgICB0cnkgewotICAgICAgICAgICAgaWYgKC9eXC8uKlwvJC8udGVzdChxdWVy
eSkpCi0gICAgICAgICAgICAgICAgdGhpcy5fY29sbGVjdFJlZ2V4TWF0Y2hlcyhuZXcgUmVnRXhw
KHF1ZXJ5LnN1YnN0cmluZygxLCBxdWVyeS5sZW5ndGggLSAxKSksIHJhbmdlcyk7Ci0gICAgICAg
IH0gY2F0Y2ggKGUpIHsKLSAgICAgICAgICAgIC8vIFNpbGVudCBjYXRjaC4KKyAgICAgICAgZnVu
Y3Rpb24gZG9GaW5kU2VhcmNoTWF0Y2hlcygpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBy
YW5nZXMgPSBbXTsKKworICAgICAgICAgICAgLy8gRmlyc3QgZG8gY2FzZS1pbnNlbnNpdGl2ZSBz
ZWFyY2guCisgICAgICAgICAgICB2YXIgcmVnZXhPYmplY3QgPSBjcmVhdGVTZWFyY2hSZWdleChx
dWVyeSk7CisgICAgICAgICAgICB0aGlzLl9jb2xsZWN0UmVnZXhNYXRjaGVzKHJlZ2V4T2JqZWN0
LCByYW5nZXMpOworCisgICAgICAgICAgICAvLyBUaGVuIHRyeSByZWdleCBzZWFyY2ggaWYgdXNl
ciBrbm93cyB0aGUgLyAvIGhpbnQuCisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAg
IGlmICgvXlwvLipcLyQvLnRlc3QocXVlcnkpKQorICAgICAgICAgICAgICAgICAgICB0aGlzLl9j
b2xsZWN0UmVnZXhNYXRjaGVzKG5ldyBSZWdFeHAocXVlcnkuc3Vic3RyaW5nKDEsIHF1ZXJ5Lmxl
bmd0aCAtIDEpKSwgcmFuZ2VzKTsKKyAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAg
ICAgICAgICAvLyBTaWxlbnQgY2F0Y2guCisgICAgICAgICAgICB9CisgICAgICAgICAgICBmaW5p
c2hlZENhbGxiYWNrKHJhbmdlcyk7CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHJhbmdlczsK
KyAgICAgICAgaWYgKHRoaXMuX3RleHRWaWV3ZXIpCisgICAgICAgICAgICBkb0ZpbmRTZWFyY2hN
YXRjaGVzLmNhbGwodGhpcyk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHRoaXMuX2RlbGF5
ZWRGaW5kU2VhcmNoTWF0Y2hlcyA9IGRvRmluZFNlYXJjaE1hdGNoZXMuYmluZCh0aGlzKTsKKyAg
ICB9LAorCisgICAgY2FuY2VsRmluZFNlYXJjaE1hdGNoZXM6IGZ1bmN0aW9uKCkKKyAgICB7Cisg
ICAgICAgIGRlbGV0ZSB0aGlzLl9kZWxheWVkRmluZFNlYXJjaE1hdGNoZXM7CiAgICAgfSwKIAog
ICAgIF9jb2xsZWN0UmVnZXhNYXRjaGVzOiBmdW5jdGlvbihyZWdleE9iamVjdCwgcmFuZ2VzKQpA
QCAtNDA1LDcgKzQxMSw3IEBAIFdlYkluc3BlY3Rvci5Tb3VyY2VGcmFtZS5wcm90b3R5cGUgPSB7
CiAgICAgewogICAgICAgICB2YXIgYnJlYWtwb2ludCA9IGV2ZW50LmRhdGE7CiAKLSAgICAgICAg
aWYgKGJyZWFrcG9pbnQuc291cmNlSUQgaW4gdGhpcy5fc2NyaXB0cykKKyAgICAgICAgaWYgKGJy
ZWFrcG9pbnQuc291cmNlSUQgaW4gdGhpcy5fc291cmNlSURUb1N0YXJ0aW5nTGluZSkKICAgICAg
ICAgICAgIHRoaXMuX2FkZEJyZWFrcG9pbnQoYnJlYWtwb2ludCk7CiAgICAgfSwKIApAQCAtODE3
LDE2ICs4MjMsNyBAQCBXZWJJbnNwZWN0b3IuU291cmNlRnJhbWUucHJvdG90eXBlID0gewogICAg
IF9kb0VkaXRMaW5lOiBmdW5jdGlvbihlZGl0RGF0YSwgY2FuY2VsRWRpdGluZ0NhbGxiYWNrKQog
ICAgIHsKICAgICAgICAgdmFyIHJldmVydEVkaXRpbmdDYWxsYmFjayA9IHRoaXMuX3JldmVydEVk
aXRMaW5lLmJpbmQodGhpcywgZWRpdERhdGEpOwotICAgICAgICB2YXIgY29tbWl0RWRpdGluZ0Nh
bGxiYWNrID0gdGhpcy5fY29tbWl0RWRpdExpbmUuYmluZCh0aGlzLCBlZGl0RGF0YSwgcmV2ZXJ0
RWRpdGluZ0NhbGxiYWNrKTsKLSAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5zY3JpcHRzLmVk
aXRTY3JpcHRTb3VyY2UoZWRpdERhdGEsIGNvbW1pdEVkaXRpbmdDYWxsYmFjaywgY2FuY2VsRWRp
dGluZ0NhbGxiYWNrKTsKLSAgICB9LAotCi0gICAgX2NvbW1pdEVkaXRMaW5lOiBmdW5jdGlvbihl
ZGl0RGF0YSwgcmV2ZXJ0RWRpdExpbmVDYWxsYmFjaywgbmV3Q29udGVudCkKLSAgICB7Ci0gICAg
ICAgIHZhciBzY3JpcHQgPSB0aGlzLl9zY3JpcHRzW2VkaXREYXRhLnNvdXJjZUlEXTsKLSAgICAg
ICAgc2NyaXB0LnNvdXJjZSA9IG5ld0NvbnRlbnQ7Ci0gICAgICAgIGlmIChzY3JpcHQucmVzb3Vy
Y2UpCi0gICAgICAgICAgICBzY3JpcHQucmVzb3VyY2Uuc2V0Q29udGVudChuZXdDb250ZW50LCBy
ZXZlcnRFZGl0TGluZUNhbGxiYWNrKTsKKyAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5zY3Jp
cHRzLmVkaXRTY3JpcHRTb3VyY2UoZWRpdERhdGEsIHJldmVydEVkaXRpbmdDYWxsYmFjaywgY2Fu
Y2VsRWRpdGluZ0NhbGxiYWNrKTsKICAgICB9LAogCiAgICAgX3NldEJyZWFrcG9pbnQ6IGZ1bmN0
aW9uKGxpbmVOdW1iZXIsIGVuYWJsZWQsIGNvbmRpdGlvbikKQEAgLTg0MSw3ICs4MzgsNyBAQCBX
ZWJJbnNwZWN0b3IuU291cmNlRnJhbWUucHJvdG90eXBlID0gewogCiAgICAgX2JyZWFrcG9pbnRz
OiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICB2YXIgc2NyaXB0cyA9IHRoaXMuX3NjcmlwdHM7
CisgICAgICAgIHZhciBzY3JpcHRzID0gdGhpcy5fc291cmNlSURUb1N0YXJ0aW5nTGluZTsKICAg
ICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1vZGVsLnF1ZXJ5QnJlYWtwb2ludHMo
ZnVuY3Rpb24oYikgeyByZXR1cm4gYi5zb3VyY2VJRCBpbiBzY3JpcHRzOyB9KTsKICAgICB9LAog
CkBAIC04NTUsMTAgKzg1MiwxMCBAQCBXZWJJbnNwZWN0b3IuU291cmNlRnJhbWUucHJvdG90eXBl
ID0gewogICAgIHsKICAgICAgICAgdmFyIHNvdXJjZUlERm9yTGluZSA9IG51bGw7CiAgICAgICAg
IHZhciBjbG9zZXN0U3RhcnRpbmdMaW5lID0gMDsKLSAgICAgICAgZm9yICh2YXIgc291cmNlSUQg
aW4gdGhpcy5fc2NyaXB0cykgewotICAgICAgICAgICAgdmFyIHNjcmlwdCA9IHRoaXMuX3Njcmlw
dHNbc291cmNlSURdOwotICAgICAgICAgICAgaWYgKHNjcmlwdC5zdGFydGluZ0xpbmUgPD0gbGlu
ZU51bWJlciAmJiBzY3JpcHQuc3RhcnRpbmdMaW5lID49IGNsb3Nlc3RTdGFydGluZ0xpbmUpIHsK
LSAgICAgICAgICAgICAgICBjbG9zZXN0U3RhcnRpbmdMaW5lID0gc2NyaXB0LnN0YXJ0aW5nTGlu
ZTsKKyAgICAgICAgZm9yICh2YXIgc291cmNlSUQgaW4gdGhpcy5fc291cmNlSURUb1N0YXJ0aW5n
TGluZSkgeworICAgICAgICAgICAgdmFyIHN0YXJ0aW5nTGluZSA9IHRoaXMuX3NvdXJjZUlEVG9T
dGFydGluZ0xpbmVbc291cmNlSURdOworICAgICAgICAgICAgaWYgKHN0YXJ0aW5nTGluZSA8PSBs
aW5lTnVtYmVyICYmIHN0YXJ0aW5nTGluZSA+PSBjbG9zZXN0U3RhcnRpbmdMaW5lKSB7CisgICAg
ICAgICAgICAgICAgY2xvc2VzdFN0YXJ0aW5nTGluZSA9IHN0YXJ0aW5nTGluZTsKICAgICAgICAg
ICAgICAgICBzb3VyY2VJREZvckxpbmUgPSBzb3VyY2VJRDsKICAgICAgICAgICAgIH0KICAgICAg
ICAgfQpAQCAtODY3LDMgKzg2NCw3NyBAQCBXZWJJbnNwZWN0b3IuU291cmNlRnJhbWUucHJvdG90
eXBlID0gewogfQogCiBXZWJJbnNwZWN0b3IuU291cmNlRnJhbWUucHJvdG90eXBlLl9fcHJvdG9f
XyA9IFdlYkluc3BlY3Rvci5PYmplY3QucHJvdG90eXBlOworCisKK1dlYkluc3BlY3Rvci5Db250
ZW50UHJvdmlkZXIgPSBmdW5jdGlvbigpCit7Cit9CisKK1dlYkluc3BlY3Rvci5Db250ZW50UHJv
dmlkZXIucHJvdG90eXBlID0geworICAgIHJlcXVlc3RDb250ZW50OiBmdW5jdGlvbihjYWxsYmFj
aykKKyAgICB7CisgICAgICAgIC8vIFRoaXMgbWV0aG9kIHNob3VsZCBiZSBpbXBsZW1lbnRlZCBi
eSBzdWJjbGFzc2VzLgorICAgIH0KK30KKworV2ViSW5zcGVjdG9yLlNjcmlwdENvbnRlbnRQcm92
aWRlciA9IGZ1bmN0aW9uKHNjcmlwdCkKK3sKKyAgICBXZWJJbnNwZWN0b3IuQ29udGVudFByb3Zp
ZGVyLmNhbGwodGhpcyk7CisgICAgdGhpcy5fc2NyaXB0ID0gc2NyaXB0OworfQorCitXZWJJbnNw
ZWN0b3IuU2NyaXB0Q29udGVudFByb3ZpZGVyLnByb3RvdHlwZSA9IHsKKyAgICByZXF1ZXN0Q29u
dGVudDogZnVuY3Rpb24oY2FsbGJhY2spCisgICAgeworICAgICAgICBpZiAodGhpcy5fc2NyaXB0
LnNvdXJjZSkgeworICAgICAgICAgICAgY2FsbGJhY2soInRleHQvamF2YXNjcmlwdCIsIHRoaXMu
X3NjcmlwdC5zb3VyY2UpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAg
ICAgZnVuY3Rpb24gY29udGVudExvYWRlZChjb250ZW50KQorICAgICAgICB7CisgICAgICAgICAg
ICB2YXIgc291cmNlOworICAgICAgICAgICAgaWYgKGNvbnRlbnQpIHsKKyAgICAgICAgICAgICAg
ICB2YXIgcHJlZml4ID0gIiI7CisgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0
aGlzLl9zY3JpcHQuc3RhcnRpbmdMaW5lIC0gMTsgKytpKQorICAgICAgICAgICAgICAgICAgICBw
cmVmaXggKz0gIlxuIjsKKyAgICAgICAgICAgICAgICBzb3VyY2UgPSBwcmVmaXggKyBjb250ZW50
OworICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgc291cmNlID0gV2ViSW5zcGVj
dG9yLlVJU3RyaW5nKCI8c291cmNlIGlzIG5vdCBhdmFpbGFibGU+Iik7CisgICAgICAgICAgICB0
aGlzLl9zY3JpcHQuc291cmNlID0gc291cmNlOworICAgICAgICAgICAgY2FsbGJhY2soInRleHQv
amF2YXNjcmlwdCIsIHNvdXJjZSk7CisgICAgICAgIH0KKyAgICAgICAgSW5zcGVjdG9yQmFja2Vu
ZC5nZXRTY3JpcHRTb3VyY2UodGhpcy5fc2NyaXB0LnNvdXJjZUlELCBjb250ZW50TG9hZGVkLmJp
bmQodGhpcykpOworICAgIH0KK30KKworV2ViSW5zcGVjdG9yLlNjcmlwdENvbnRlbnRQcm92aWRl
ci5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLkNvbnRlbnRQcm92aWRlci5wcm90
b3R5cGU7CisKKworV2ViSW5zcGVjdG9yLlJlc291cmNlQ29udGVudFByb3ZpZGVyID0gZnVuY3Rp
b24ocmVzb3VyY2UpCit7CisgICAgV2ViSW5zcGVjdG9yLkNvbnRlbnRQcm92aWRlci5jYWxsKHRo
aXMpOworICAgIHRoaXMuX3Jlc291cmNlID0gcmVzb3VyY2U7Cit9CisKKy8vVGhpcyBpcyBhIG1h
cCBmcm9tIHJlc291cmNlLnR5cGUgdG8gbWltZSB0eXBlcworLy9mb3VuZCBpbiBXZWJJbnNwZWN0
b3IuU291cmNlVG9rZW5pemVyLlJlZ2lzdHJ5LgorV2ViSW5zcGVjdG9yLlJlc291cmNlQ29udGVu
dFByb3ZpZGVyLkRlZmF1bHRNSU1FVHlwZUZvclJlc291cmNlVHlwZSA9IHsKKyAwOiAidGV4dC9o
dG1sIiwKKyAxOiAidGV4dC9jc3MiLAorIDQ6ICJ0ZXh0L2phdmFzY3JpcHQiCit9CisKK1dlYklu
c3BlY3Rvci5SZXNvdXJjZUNvbnRlbnRQcm92aWRlci5wcm90b3R5cGUgPSB7CisgICAgcmVxdWVz
dENvbnRlbnQ6IGZ1bmN0aW9uKGNhbGxiYWNrKQorICAgIHsKKyAgICAgICAgZnVuY3Rpb24gY29u
dGVudExvYWRlZChjb250ZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgbWltZVR5cGUg
PSBXZWJJbnNwZWN0b3IuUmVzb3VyY2VDb250ZW50UHJvdmlkZXIuRGVmYXVsdE1JTUVUeXBlRm9y
UmVzb3VyY2VUeXBlW3RoaXMuX3Jlc291cmNlLnR5cGVdIHx8IHRoaXMuX3Jlc291cmNlLm1pbWVU
eXBlOworICAgICAgICAgICAgY2FsbGJhY2sobWltZVR5cGUsIGNvbnRlbnQpOworICAgICAgICB9
CisgICAgICAgIHRoaXMuX3Jlc291cmNlLnJlcXVlc3RDb250ZW50KGNvbnRlbnRMb2FkZWQuYmlu
ZCh0aGlzKSk7CisgICAgfQorfQorCitXZWJJbnNwZWN0b3IuUmVzb3VyY2VDb250ZW50UHJvdmlk
ZXIucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5Db250ZW50UHJvdmlkZXIucHJv
dG90eXBlOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NvdXJjZVZp
ZXcuanMgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU291cmNlVmlldy5qcwppbmRleCA3
YTk3ZGIyLi40Y2I3YWQ1IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
U291cmNlVmlldy5qcworKysgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU291cmNlVmll
dy5qcwpAQCAtMzIsNDMgKzMyLDMzIEBAIFdlYkluc3BlY3Rvci5Tb3VyY2VWaWV3ID0gZnVuY3Rp
b24ocmVzb3VyY2UpCiAKICAgICB0aGlzLmVsZW1lbnQuYWRkU3R5bGVDbGFzcygic291cmNlIik7
CiAKLSAgICB2YXIgc2NyaXB0cyA9IFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1vZGVsLnNjcmlwdHNG
b3JVUkwocmVzb3VyY2UudXJsKTsKKyAgICB2YXIgY29udGVudFByb3ZpZGVyID0gbmV3IFdlYklu
c3BlY3Rvci5SZXNvdXJjZUNvbnRlbnRQcm92aWRlcihyZXNvdXJjZSk7CiAgICAgdmFyIGNhbkVk
aXRTY3JpcHRzID0gV2ViSW5zcGVjdG9yLnBhbmVscy5zY3JpcHRzLmNhbkVkaXRTY3JpcHRzKCkg
JiYgcmVzb3VyY2UudHlwZSA9PT0gV2ViSW5zcGVjdG9yLlJlc291cmNlLlR5cGUuU2NyaXB0Owot
ICAgIHRoaXMuc291cmNlRnJhbWUgPSBuZXcgV2ViSW5zcGVjdG9yLlNvdXJjZUZyYW1lKHRoaXMu
ZWxlbWVudCwgc2NyaXB0cywgY2FuRWRpdFNjcmlwdHMpOwotICAgIHJlc291cmNlLmFkZEV2ZW50
TGlzdGVuZXIoImZpbmlzaGVkIiwgdGhpcy5fcmVzb3VyY2VMb2FkaW5nRmluaXNoZWQsIHRoaXMp
OwotICAgIHRoaXMuX2ZyYW1lTmVlZHNTZXR1cCA9IHRydWU7Ci19CisgICAgdGhpcy5zb3VyY2VG
cmFtZSA9IG5ldyBXZWJJbnNwZWN0b3IuU291cmNlRnJhbWUodGhpcy5lbGVtZW50LCBjb250ZW50
UHJvdmlkZXIsIHJlc291cmNlLnVybCwgY2FuRWRpdFNjcmlwdHMpOwogCi0vLyBUaGlzIGlzIGEg
bWFwIGZyb20gcmVzb3VyY2UudHlwZSB0byBtaW1lIHR5cGVzCi0vLyBmb3VuZCBpbiBXZWJJbnNw
ZWN0b3IuU291cmNlVG9rZW5pemVyLlJlZ2lzdHJ5LgotV2ViSW5zcGVjdG9yLlNvdXJjZVZpZXcu
RGVmYXVsdE1JTUVUeXBlRm9yUmVzb3VyY2VUeXBlID0gewotICAgIDA6ICJ0ZXh0L2h0bWwiLAot
ICAgIDE6ICJ0ZXh0L2NzcyIsCi0gICAgNDogInRleHQvamF2YXNjcmlwdCIKKyAgICB2YXIgc2Ny
aXB0cyA9IFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1vZGVsLnNjcmlwdHNGb3JVUkwocmVzb3VyY2Uu
dXJsKTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNjcmlwdHMubGVuZ3RoOyArK2kpCisgICAg
ICAgIHRoaXMuc291cmNlRnJhbWUuYWRkU2NyaXB0KHNjcmlwdHNbaV0uc291cmNlSUQsIHNjcmlw
dHNbaV0uc3RhcnRpbmdMaW5lKTsKIH0KIAogV2ViSW5zcGVjdG9yLlNvdXJjZVZpZXcucHJvdG90
eXBlID0gewogICAgIHNob3c6IGZ1bmN0aW9uKHBhcmVudEVsZW1lbnQpCiAgICAgewotICAgICAg
ICBXZWJJbnNwZWN0b3IuUmVzb3VyY2VWaWV3LnByb3RvdHlwZS5zaG93LmNhbGwodGhpcywgcGFy
ZW50RWxlbWVudCk7Ci0gICAgICAgIHRoaXMuc2V0dXBTb3VyY2VGcmFtZUlmTmVlZGVkKCk7Cisg
ICAgICAgIFdlYkluc3BlY3Rvci5WaWV3LnByb3RvdHlwZS5zaG93LmNhbGwodGhpcywgcGFyZW50
RWxlbWVudCk7CiAgICAgICAgIHRoaXMuc291cmNlRnJhbWUudmlzaWJsZSA9IHRydWU7Ci0gICAg
ICAgIHRoaXMucmVzaXplKCk7CiAgICAgfSwKIAogICAgIGhpZGU6IGZ1bmN0aW9uKCkKICAgICB7
CiAgICAgICAgIHRoaXMuc291cmNlRnJhbWUudmlzaWJsZSA9IGZhbHNlOwotICAgICAgICBpZiAo
IXRoaXMuX2ZyYW1lTmVlZHNTZXR1cCkKLSAgICAgICAgICAgIHRoaXMuc291cmNlRnJhbWUuY2xl
YXJMaW5lSGlnaGxpZ2h0KCk7CisgICAgICAgIHRoaXMuc291cmNlRnJhbWUuY2xlYXJMaW5lSGln
aGxpZ2h0KCk7CiAgICAgICAgIFdlYkluc3BlY3Rvci5WaWV3LnByb3RvdHlwZS5oaWRlLmNhbGwo
dGhpcyk7CiAgICAgICAgIHRoaXMuX2N1cnJlbnRTZWFyY2hSZXN1bHRJbmRleCA9IC0xOwogICAg
IH0sCiAKICAgICByZXNpemU6IGZ1bmN0aW9uKCkKICAgICB7Ci0gICAgICAgIGlmICh0aGlzLnNv
dXJjZUZyYW1lKQotICAgICAgICAgICAgdGhpcy5zb3VyY2VGcmFtZS5yZXNpemUoKTsKKyAgICAg
ICAgdGhpcy5zb3VyY2VGcmFtZS5yZXNpemUoKTsKICAgICB9LAogCiAgICAgZ2V0IHNjcm9sbFRv
cCgpCkBAIC04MSw0MiArNzEsMTEgQEAgV2ViSW5zcGVjdG9yLlNvdXJjZVZpZXcucHJvdG90eXBl
ID0gewogICAgICAgICB0aGlzLnNvdXJjZUZyYW1lLnNjcm9sbFRvcCA9IHNjcm9sbFRvcDsKICAg
ICB9LAogCi0KLSAgICBzZXR1cFNvdXJjZUZyYW1lSWZOZWVkZWQ6IGZ1bmN0aW9uKCkKLSAgICB7
Ci0gICAgICAgIGlmICghdGhpcy5fZnJhbWVOZWVkc1NldHVwKQotICAgICAgICAgICAgcmV0dXJu
OwotCi0gICAgICAgIGRlbGV0ZSB0aGlzLl9mcmFtZU5lZWRzU2V0dXA7Ci0gICAgICAgIHRoaXMu
cmVzb3VyY2UucmVxdWVzdENvbnRlbnQodGhpcy5fY29udGVudExvYWRlZC5iaW5kKHRoaXMpKTsK
LSAgICB9LAotCiAgICAgaGFzQ29udGVudDogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgfSwKIAotICAgIF9jb250ZW50TG9hZGVkOiBmdW5jdGlvbihjb250ZW50
KQotICAgIHsKLSAgICAgICAgdmFyIG1pbWVUeXBlID0gdGhpcy5fY2Fub25pY2FsTWltZVR5cGUo
dGhpcy5yZXNvdXJjZSk7Ci0gICAgICAgIHRoaXMuc291cmNlRnJhbWUuc2V0Q29udGVudChtaW1l
VHlwZSwgY29udGVudCwgdGhpcy5yZXNvdXJjZS51cmwpOwotICAgICAgICB0aGlzLl9zb3VyY2VG
cmFtZVNldHVwRmluaXNoZWQoKTsKLSAgICB9LAotCi0gICAgX2Nhbm9uaWNhbE1pbWVUeXBlOiBm
dW5jdGlvbihyZXNvdXJjZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuU291
cmNlVmlldy5EZWZhdWx0TUlNRVR5cGVGb3JSZXNvdXJjZVR5cGVbcmVzb3VyY2UudHlwZV0gfHwg
cmVzb3VyY2UubWltZVR5cGU7Ci0gICAgfSwKLQotICAgIF9yZXNvdXJjZUxvYWRpbmdGaW5pc2hl
ZDogZnVuY3Rpb24oZXZlbnQpCi0gICAgewotICAgICAgICB0aGlzLl9mcmFtZU5lZWRzU2V0dXAg
PSB0cnVlOwotICAgICAgICB0aGlzLl9zb3VyY2VGcmFtZVNldHVwID0gZmFsc2U7Ci0gICAgICAg
IGlmICh0aGlzLnZpc2libGUpCi0gICAgICAgICAgICB0aGlzLnNldHVwU291cmNlRnJhbWVJZk5l
ZWRlZCgpOwotICAgICAgICB0aGlzLnJlc291cmNlLnJlbW92ZUV2ZW50TGlzdGVuZXIoImZpbmlz
aGVkIiwgdGhpcy5fcmVzb3VyY2VMb2FkaW5nRmluaXNoZWQsIHRoaXMpOwotICAgIH0sCi0KICAg
ICAvLyBUaGUgcmVzdCBvZiB0aGUgbWV0aG9kcyBpbiB0aGlzIHByb3RvdHlwZSBuZWVkIHRvIGJl
IGdlbmVyaWMgZW5vdWdoIHRvIHdvcmsgd2l0aCBhIFNjcmlwdFZpZXcuCiAgICAgLy8gVGhlIFNj
cmlwdFZpZXcgcHJvdG90eXBlIHB1bGxzIHRoZXNlIG1ldGhvZHMgaW50byBpdCdzIHByb3RvdHlw
ZSB0byBhdm9pZCBkdXBsaWNhdGUgY29kZS4KIApAQCAtMTI1LDcgKzg0LDcgQEAgV2ViSW5zcGVj
dG9yLlNvdXJjZVZpZXcucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9jdXJyZW50U2VhcmNo
UmVzdWx0SW5kZXggPSAtMTsKICAgICAgICAgdGhpcy5fc2VhcmNoUmVzdWx0cyA9IFtdOwogICAg
ICAgICB0aGlzLnNvdXJjZUZyYW1lLmNsZWFyTWFya2VkUmFuZ2UoKTsKLSAgICAgICAgZGVsZXRl
IHRoaXMuX2RlbGF5ZWRGaW5kU2VhcmNoTWF0Y2hlczsKKyAgICAgICAgdGhpcy5zb3VyY2VGcmFt
ZS5jYW5jZWxGaW5kU2VhcmNoTWF0Y2hlcygpOwogICAgIH0sCiAKICAgICBwZXJmb3JtU2VhcmNo
OiBmdW5jdGlvbihxdWVyeSwgZmluaXNoZWRDYWxsYmFjaykKQEAgLTEzMywyMyArOTIsMTMgQEAg
V2ViSW5zcGVjdG9yLlNvdXJjZVZpZXcucHJvdG90eXBlID0gewogICAgICAgICAvLyBDYWxsIHNl
YXJjaENhbmNlbGVkIHNpbmNlIGl0IHdpbGwgcmVzZXQgZXZlcnl0aGluZyB3ZSBuZWVkIGJlZm9y
ZSBkb2luZyBhIG5ldyBzZWFyY2guCiAgICAgICAgIHRoaXMuc2VhcmNoQ2FuY2VsZWQoKTsKIAot
ICAgICAgICB0aGlzLl9zZWFyY2hGaW5pc2hlZENhbGxiYWNrID0gZmluaXNoZWRDYWxsYmFjazsK
LQotICAgICAgICBmdW5jdGlvbiBmaW5kU2VhcmNoTWF0Y2hlcyhxdWVyeSwgZmluaXNoZWRDYWxs
YmFjaykKKyAgICAgICAgZnVuY3Rpb24gZGlkRmluZFNlYXJjaE1hdGNoZXMoc2VhcmNoUmVzdWx0
cykKICAgICAgICAgewotICAgICAgICAgICAgdGhpcy5fc2VhcmNoUmVzdWx0cyA9IHRoaXMuc291
cmNlRnJhbWUuZmluZFNlYXJjaE1hdGNoZXMocXVlcnkpOworICAgICAgICAgICAgdGhpcy5fc2Vh
cmNoUmVzdWx0cyA9IHNlYXJjaFJlc3VsdHM7CiAgICAgICAgICAgICBpZiAodGhpcy5fc2VhcmNo
UmVzdWx0cykKICAgICAgICAgICAgICAgICBmaW5pc2hlZENhbGxiYWNrKHRoaXMsIHRoaXMuX3Nl
YXJjaFJlc3VsdHMubGVuZ3RoKTsKICAgICAgICAgfQotCi0gICAgICAgIGlmICghdGhpcy5fc291
cmNlRnJhbWVTZXR1cCkgewotICAgICAgICAgICAgLy8gVGhlIHNlYXJjaCBpcyBwZXJmb3JtZWQg
aW4gX3NvdXJjZUZyYW1lU2V0dXBGaW5pc2hlZCBieSBjYWxsaW5nIF9kZWxheWVkRmluZFNlYXJj
aE1hdGNoZXMuCi0gICAgICAgICAgICB0aGlzLl9kZWxheWVkRmluZFNlYXJjaE1hdGNoZXMgPSBm
aW5kU2VhcmNoTWF0Y2hlcy5iaW5kKHRoaXMsIHF1ZXJ5LCBmaW5pc2hlZENhbGxiYWNrKTsKLSAg
ICAgICAgICAgIHRoaXMuc2V0dXBTb3VyY2VGcmFtZUlmTmVlZGVkKCk7Ci0gICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBmaW5kU2VhcmNoTWF0Y2hlcy5jYWxsKHRoaXMs
IHF1ZXJ5LCBmaW5pc2hlZENhbGxiYWNrKTsKKyAgICAgICAgdGhpcy5zb3VyY2VGcmFtZS5maW5k
U2VhcmNoTWF0Y2hlcyhxdWVyeSwgZGlkRmluZFNlYXJjaE1hdGNoZXMuYmluZCh0aGlzKSk7CiAg
ICAgfSwKIAogICAgIGp1bXBUb0ZpcnN0U2VhcmNoUmVzdWx0OiBmdW5jdGlvbigpCkBAIC0xOTgs
MTMgKzE0NywxMSBAQCBXZWJJbnNwZWN0b3IuU291cmNlVmlldy5wcm90b3R5cGUgPSB7CiAKICAg
ICByZXZlYWxMaW5lOiBmdW5jdGlvbihsaW5lTnVtYmVyKQogICAgIHsKLSAgICAgICAgdGhpcy5z
ZXR1cFNvdXJjZUZyYW1lSWZOZWVkZWQoKTsKICAgICAgICAgdGhpcy5zb3VyY2VGcmFtZS5yZXZl
YWxMaW5lKGxpbmVOdW1iZXIpOwogICAgIH0sCiAKICAgICBoaWdobGlnaHRMaW5lOiBmdW5jdGlv
bihsaW5lTnVtYmVyKQogICAgIHsKLSAgICAgICAgdGhpcy5zZXR1cFNvdXJjZUZyYW1lSWZOZWVk
ZWQoKTsKICAgICAgICAgdGhpcy5zb3VyY2VGcmFtZS5oaWdobGlnaHRMaW5lKGxpbmVOdW1iZXIp
OwogICAgIH0sCiAKQEAgLTIyNSwxNiArMTcyLDYgQEAgV2ViSW5zcGVjdG9yLlNvdXJjZVZpZXcu
cHJvdG90eXBlID0gewogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIHRoaXMuc291cmNl
RnJhbWUubWFya0FuZFJldmVhbFJhbmdlKGZvdW5kUmFuZ2UpOwotICAgIH0sCi0KLSAgICBfc291
cmNlRnJhbWVTZXR1cEZpbmlzaGVkOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICB0aGlzLl9z
b3VyY2VGcmFtZVNldHVwID0gdHJ1ZTsKLSAgICAgICAgdGhpcy5yZXNpemUoKTsKLSAgICAgICAg
aWYgKHRoaXMuX2RlbGF5ZWRGaW5kU2VhcmNoTWF0Y2hlcykgewotICAgICAgICAgICAgdGhpcy5f
ZGVsYXllZEZpbmRTZWFyY2hNYXRjaGVzKCk7Ci0gICAgICAgICAgICBkZWxldGUgdGhpcy5fZGVs
YXllZEZpbmRTZWFyY2hNYXRjaGVzOwotICAgICAgICB9CiAgICAgfQogfQogCg==
</data>
<flag name="review"
          id="68835"
          type_id="1"
          status="-"
          setter="pfeldman"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>77685</attachid>
            <date>2010-12-30 09:13:41 -0800</date>
            <delta_ts>2010-12-31 05:19:09 -0800</delta_ts>
            <desc>Patch.</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>18491</size>
            <attacher name="Pavel Podivilov">podivilov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
OTE5MGVmOC4uMjRhODE3OSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTIsNiArMiwzNyBAQAogCiAgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgogCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IHJlZmFjdG9yaW5nOiBlbmNh
cHN1bGF0ZSBsYXp5IGluaXRpYWxpemF0aW9uIG9mIFNvdXJjZUZyYW1lLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTE3MzgKKworICAgICAgICBFeHRy
YWN0IGNvbnRlbnQgbG9hZGluZyBsb2dpYyBmcm9tIFNvdXJjZVZpZXcgYW5kIFNjcmlwdFZpZXcg
dG8gQ29udGVudFByb3ZpZGVyIGltcGxlbWVudGF0aW9ucy4KKyAgICAgICAgUGFzcyBDb250ZW50
UHJvdmlkZXIgaW4gU291cmNlRnJhbWUgY29uc3RydWN0b3IgdG8gYWxsb3cgU291cmNlRnJhbWUg
bWFuYWdlIGl0J3MgbGF6eSBpbml0aWFsaXphdGlvbi4KKworICAgICAgICAqIGluc3BlY3Rvci9m
cm9udC1lbmQvU2NyaXB0Vmlldy5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TY3JpcHRWaWV3
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Tb3VyY2VGcmFtZUNvbnRlbnRQcm92aWRlckZvclNj
cmlwdCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRzUGFuZWwuanM6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsLnByb3RvdHlwZS5fYWRkU2NyaXB0KToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwucHJvdG90eXBlLnNvdXJjZUZyYW1l
Rm9yU2NyaXB0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwucHJvdG90eXBl
Ll9zb3VyY2VGcmFtZUZvclJlc291cmNlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5k
L1NvdXJjZUZyYW1lLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNvdXJjZUZyYW1lKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5Tb3VyY2VGcmFtZS5wcm90b3R5cGUuc2V0IHZpc2libGUpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLlNvdXJjZUZyYW1lLnByb3RvdHlwZS5fY3JlYXRlVGV4dFZp
ZXdlcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU291cmNlRnJhbWUucHJvdG90eXBlLl9icmVh
a3BvaW50QWRkZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNvdXJjZUZyYW1lLnByb3RvdHlw
ZS5fYnJlYWtwb2ludHMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNvdXJjZUZyYW1lLnByb3Rv
dHlwZS5fc291cmNlSURGb3JMaW5lKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Tb3VyY2VGcmFt
ZUNvbnRlbnRQcm92aWRlcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU291cmNlRnJhbWVDb250
ZW50UHJvdmlkZXIucHJvdG90eXBlLnJlcXVlc3RDb250ZW50KToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5Tb3VyY2VGcmFtZUNvbnRlbnRQcm92aWRlci5wcm90b3R5cGUuc291cmNlSURUb1N0YXJ0
aW5nTGluZU1hcCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9Tb3VyY2VWaWV3Lmpz
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNvdXJjZVZpZXcpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLlNvdXJjZUZyYW1lQ29udGVudFByb3ZpZGVyRm9yUmVzb3VyY2UpOgorCisyMDEwLTEyLTMw
ICBQYXZlbCBQb2Rpdmlsb3YgIDxwb2Rpdmlsb3ZAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IG1vdmUg
ZGVsYXllZCBzZWFyY2ggaW1wbGVtZW50YXRpb24gdG8gU291cmNlRnJhbWUuCiAgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MTc1MwogCmRpZmYgLS1naXQg
YS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0Vmlldy5qcyBiL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9TY3JpcHRWaWV3LmpzCmluZGV4IGYxMzU0NzUuLjEzMmJlNzcgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRWaWV3LmpzCisrKyBi
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRWaWV3LmpzCkBAIC0yOSw2NCArMjks
MTUgQEAgV2ViSW5zcGVjdG9yLlNjcmlwdFZpZXcgPSBmdW5jdGlvbihzY3JpcHQpCiAKICAgICB0
aGlzLmVsZW1lbnQuYWRkU3R5bGVDbGFzcygic2NyaXB0LXZpZXciKTsKIAotICAgIHRoaXMuc2Ny
aXB0ID0gc2NyaXB0OwotCi0gICAgdGhpcy5fZnJhbWVOZWVkc1NldHVwID0gdHJ1ZTsKLSAgICB0
aGlzLl9zb3VyY2VGcmFtZVNldHVwID0gZmFsc2U7Ci0gICAgdGhpcy5zb3VyY2VGcmFtZSA9IG5l
dyBXZWJJbnNwZWN0b3IuU291cmNlRnJhbWUodGhpcy5lbGVtZW50LCBbc2NyaXB0XSwgV2ViSW5z
cGVjdG9yLnBhbmVscy5zY3JpcHRzLmNhbkVkaXRTY3JpcHRzKCkpOworICAgIHZhciBjb250ZW50
UHJvdmlkZXIgPSBuZXcgV2ViSW5zcGVjdG9yLlNvdXJjZUZyYW1lQ29udGVudFByb3ZpZGVyRm9y
U2NyaXB0KHNjcmlwdCk7CisgICAgdGhpcy5zb3VyY2VGcmFtZSA9IG5ldyBXZWJJbnNwZWN0b3Iu
U291cmNlRnJhbWUodGhpcy5lbGVtZW50LCBjb250ZW50UHJvdmlkZXIsICIiLCBXZWJJbnNwZWN0
b3IucGFuZWxzLnNjcmlwdHMuY2FuRWRpdFNjcmlwdHMoKSk7CiB9CiAKIFdlYkluc3BlY3Rvci5T
Y3JpcHRWaWV3LnByb3RvdHlwZSA9IHsKLSAgICBzaG93OiBmdW5jdGlvbihwYXJlbnRFbGVtZW50
KQotICAgIHsKLSAgICAgICAgV2ViSW5zcGVjdG9yLlZpZXcucHJvdG90eXBlLnNob3cuY2FsbCh0
aGlzLCBwYXJlbnRFbGVtZW50KTsKLSAgICAgICAgdGhpcy5zZXR1cFNvdXJjZUZyYW1lSWZOZWVk
ZWQoKTsKLSAgICAgICAgdGhpcy5zb3VyY2VGcmFtZS52aXNpYmxlID0gdHJ1ZTsKLSAgICAgICAg
dGhpcy5yZXNpemUoKTsKLSAgICB9LAotCi0gICAgc2V0dXBTb3VyY2VGcmFtZUlmTmVlZGVkOiBm
dW5jdGlvbigpCi0gICAgewotICAgICAgICBpZiAoIXRoaXMuX2ZyYW1lTmVlZHNTZXR1cCkKLSAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgZGVsZXRlIHRoaXMuX2ZyYW1lTmVlZHNTZXR1cDsK
LQotICAgICAgICB0aGlzLmF0dGFjaCgpOwotCi0gICAgICAgIGlmICh0aGlzLnNjcmlwdC5zb3Vy
Y2UpCi0gICAgICAgICAgICB0aGlzLl9zb3VyY2VGcmFtZVNldHVwRmluaXNoZWQoKTsKLSAgICAg
ICAgZWxzZQotICAgICAgICAgICAgSW5zcGVjdG9yQmFja2VuZC5nZXRTY3JpcHRTb3VyY2UodGhp
cy5zY3JpcHQuc291cmNlSUQsIHRoaXMuX2RpZEdldFNjcmlwdFNvdXJjZS5iaW5kKHRoaXMpKTsK
LSAgICB9LAotCi0gICAgX2RpZEdldFNjcmlwdFNvdXJjZTogZnVuY3Rpb24oc291cmNlKQotICAg
IHsKLSAgICAgICAgdGhpcy5zY3JpcHQuc291cmNlID0gc291cmNlIHx8IFdlYkluc3BlY3Rvci5V
SVN0cmluZygiPHNvdXJjZSBpcyBub3QgYXZhaWxhYmxlPiIpOwotICAgICAgICB0aGlzLl9zb3Vy
Y2VGcmFtZVNldHVwRmluaXNoZWQoKTsKLSAgICB9LAotCi0gICAgX3NvdXJjZUZyYW1lU2V0dXBG
aW5pc2hlZDogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgdGhpcy5zb3VyY2VGcmFtZS5zZXRD
b250ZW50KCJ0ZXh0L2phdmFzY3JpcHQiLCB0aGlzLl9wcmVwZW5kV2hpdGVzcGFjZSh0aGlzLnNj
cmlwdC5zb3VyY2UpKTsKLSAgICAgICAgdGhpcy5fc291cmNlRnJhbWVTZXR1cCA9IHRydWU7Ci0g
ICAgfSwKLQotICAgIF9wcmVwZW5kV2hpdGVzcGFjZTogZnVuY3Rpb24oY29udGVudCkgewotICAg
ICAgICB2YXIgcHJlZml4ID0gIiI7Ci0gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5z
Y3JpcHQuc3RhcnRpbmdMaW5lIC0gMTsgKytpKQotICAgICAgICAgICAgcHJlZml4ICs9ICJcbiI7
Ci0gICAgICAgIHJldHVybiBwcmVmaXggKyBjb250ZW50OwotICAgIH0sCi0KLSAgICBhdHRhY2g6
IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIGlmICghdGhpcy5lbGVtZW50LnBhcmVudE5vZGUp
Ci0gICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic2NyaXB0LXJlc291cmNlLXZp
ZXdzIikuYXBwZW5kQ2hpbGQodGhpcy5lbGVtZW50KTsKLSAgICB9LAotCiAgICAgLy8gVGhlIGZv
bGxvd2luZyBtZXRob2RzIGFyZSBwdWxsZWQgZnJvbSBTb3VyY2VWaWV3LCBzaW5jZSB0aGV5IGFy
ZQogICAgIC8vIGdlbmVyaWMgYW5kIHdvcmsgd2l0aCBTY3JpcHRWaWV3IGp1c3QgZmluZS4KIAor
ICAgIHNob3c6IFdlYkluc3BlY3Rvci5Tb3VyY2VWaWV3LnByb3RvdHlwZS5zaG93LAogICAgIGhp
ZGU6IFdlYkluc3BlY3Rvci5Tb3VyY2VWaWV3LnByb3RvdHlwZS5oaWRlLAogICAgIHJldmVhbExp
bmU6IFdlYkluc3BlY3Rvci5Tb3VyY2VWaWV3LnByb3RvdHlwZS5yZXZlYWxMaW5lLAogICAgIGhp
Z2hsaWdodExpbmU6IFdlYkluc3BlY3Rvci5Tb3VyY2VWaWV3LnByb3RvdHlwZS5oaWdobGlnaHRM
aW5lLApAQCAtMTA1LDMgKzU2LDQ0IEBAIFdlYkluc3BlY3Rvci5TY3JpcHRWaWV3LnByb3RvdHlw
ZSA9IHsKIH0KIAogV2ViSW5zcGVjdG9yLlNjcmlwdFZpZXcucHJvdG90eXBlLl9fcHJvdG9fXyA9
IFdlYkluc3BlY3Rvci5WaWV3LnByb3RvdHlwZTsKKworCitXZWJJbnNwZWN0b3IuU291cmNlRnJh
bWVDb250ZW50UHJvdmlkZXJGb3JTY3JpcHQgPSBmdW5jdGlvbihzY3JpcHQpCit7CisgICAgV2Vi
SW5zcGVjdG9yLkNvbnRlbnRQcm92aWRlci5jYWxsKHRoaXMpOworICAgIHRoaXMuX3NjcmlwdCA9
IHNjcmlwdDsKK30KKworV2ViSW5zcGVjdG9yLlNvdXJjZUZyYW1lQ29udGVudFByb3ZpZGVyRm9y
U2NyaXB0LnByb3RvdHlwZSA9IHsKKyAgICByZXF1ZXN0Q29udGVudDogZnVuY3Rpb24oY2FsbGJh
Y2spCisgICAgeworICAgICAgICBpZiAodGhpcy5fc2NyaXB0LnNvdXJjZSkgeworICAgICAgICAg
ICAgY2FsbGJhY2soInRleHQvamF2YXNjcmlwdCIsIHRoaXMuX3NjcmlwdC5zb3VyY2UpOworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY29udGVudExv
YWRlZChjb250ZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgc291cmNlOworICAgICAg
ICAgICAgaWYgKGNvbnRlbnQpIHsKKyAgICAgICAgICAgICAgICB2YXIgcHJlZml4ID0gIiI7Cisg
ICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLl9zY3JpcHQuc3RhcnRpbmdM
aW5lIC0gMTsgKytpKQorICAgICAgICAgICAgICAgICAgICBwcmVmaXggKz0gIlxuIjsKKyAgICAg
ICAgICAgICAgICBzb3VyY2UgPSBwcmVmaXggKyBjb250ZW50OworICAgICAgICAgICAgfSBlbHNl
CisgICAgICAgICAgICAgICAgc291cmNlID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCI8c291cmNl
IGlzIG5vdCBhdmFpbGFibGU+Iik7CisgICAgICAgICAgICB0aGlzLl9zY3JpcHQuc291cmNlID0g
c291cmNlOworICAgICAgICAgICAgY2FsbGJhY2soInRleHQvamF2YXNjcmlwdCIsIHNvdXJjZSk7
CisgICAgICAgIH0KKyAgICAgICAgSW5zcGVjdG9yQmFja2VuZC5nZXRTY3JpcHRTb3VyY2UodGhp
cy5fc2NyaXB0LnNvdXJjZUlELCBjb250ZW50TG9hZGVkLmJpbmQodGhpcykpOworICAgIH0sCisK
KyAgICBzb3VyY2VJRFRvU3RhcnRpbmdMaW5lTWFwOiBmdW5jdGlvbigpCisgICAgeworICAgICAg
ICB2YXIgbWFwID0ge307CisgICAgICAgIG1hcFt0aGlzLl9zY3JpcHQuc291cmNlSURdID0gdGhp
cy5fc2NyaXB0LnN0YXJ0aW5nTGluZTsKKyAgICAgICAgcmV0dXJtIG1hcDsKKyAgICB9Cit9CisK
K1dlYkluc3BlY3Rvci5Tb3VyY2VGcmFtZUNvbnRlbnRQcm92aWRlckZvclNjcmlwdC5wcm90b3R5
cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLlNvdXJjZUZyYW1lQ29udGVudFByb3ZpZGVyLnBy
b3RvdHlwZTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRz
UGFuZWwuanMgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0c1BhbmVsLmpzCmlu
ZGV4IGNkMzdmOTMuLmYzNDQ4Y2IgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9TY3JpcHRzUGFuZWwuanMKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Nj
cmlwdHNQYW5lbC5qcwpAQCAtMjU2LDkgKzI1Niw2IEBAIFdlYkluc3BlY3Rvci5TY3JpcHRzUGFu
ZWwucHJvdG90eXBlID0gewogICAgICAgICAgICAgaWYgKHJlc291cmNlLmZpbmlzaGVkKSB7CiAg
ICAgICAgICAgICAgICAgLy8gUmVzb3VyY2UgaXMgZmluaXNoZWQsIGJpbmQgdGhlIHNjcmlwdCBy
aWdodCBhd2F5LgogICAgICAgICAgICAgICAgIHNjcmlwdC5yZXNvdXJjZSA9IHJlc291cmNlOwot
ICAgICAgICAgICAgICAgIHZhciB2aWV3ID0gV2ViSW5zcGVjdG9yLlJlc291cmNlVmlldy5leGlz
dGluZ1Jlc291cmNlVmlld0ZvclJlc291cmNlKHJlc291cmNlKTsKLSAgICAgICAgICAgICAgICBp
ZiAodmlldyAmJiB2aWV3LnNvdXJjZUZyYW1lKQotICAgICAgICAgICAgICAgICAgICB2aWV3LnNv
dXJjZUZyYW1lLmFkZFNjcmlwdChzY3JpcHQpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAg
ICAgICAgICAgICAvLyBSZXNvdXJjZSBpcyBub3QgZmluaXNoZWQsIGJpbmQgdGhlIHNjcmlwdCBs
YXRlci4KICAgICAgICAgICAgICAgICBpZiAoIXJlc291cmNlLl9zY3JpcHRzUGVuZGluZ1Jlc291
cmNlTG9hZCkgewpAQCAtNTM2LDcgKzUzMyw2IEBAIFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwu
cHJvdG90eXBlID0gewogICAgICAgICBpZiAoIXRoaXMuZWxlbWVudC5wYXJlbnROb2RlKQogICAg
ICAgICAgICAgdGhpcy5hdHRhY2goKTsKIAotICAgICAgICB2aWV3LnNldHVwU291cmNlRnJhbWVJ
Zk5lZWRlZCgpOwogICAgICAgICByZXR1cm4gdmlldy5zb3VyY2VGcmFtZTsKICAgICB9LAogCkBA
IC01NTQsMTAgKzU1MCw2IEBAIFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwucHJvdG90eXBlID0g
ewogICAgICAgICBpZiAoIXZpZXcpCiAgICAgICAgICAgICByZXR1cm4gbnVsbDsKIAotICAgICAg
ICBpZiAoIXZpZXcuc2V0dXBTb3VyY2VGcmFtZUlmTmVlZGVkKQotICAgICAgICAgICAgcmV0dXJu
IG51bGw7Ci0KLSAgICAgICAgdmlldy5zZXR1cFNvdXJjZUZyYW1lSWZOZWVkZWQoKTsKICAgICAg
ICAgcmV0dXJuIHZpZXcuc291cmNlRnJhbWU7CiAgICAgfSwKIApkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NvdXJjZUZyYW1lLmpzIGIvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL1NvdXJjZUZyYW1lLmpzCmluZGV4IDc0Y2M4NWMuLjQ2MzljMzkgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Tb3VyY2VGcmFtZS5qcworKysgYi9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU291cmNlRnJhbWUuanMKQEAgLTI4LDEyICsyOCwxMSBA
QAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuU291cmNlRnJhbWUgPSBmdW5j
dGlvbihwYXJlbnRFbGVtZW50LCBzY3JpcHRzLCBjYW5FZGl0U2NyaXB0cykKK1dlYkluc3BlY3Rv
ci5Tb3VyY2VGcmFtZSA9IGZ1bmN0aW9uKHBhcmVudEVsZW1lbnQsIGNvbnRlbnRQcm92aWRlciwg
dXJsLCBjYW5FZGl0U2NyaXB0cykKIHsKICAgICB0aGlzLl9wYXJlbnRFbGVtZW50ID0gcGFyZW50
RWxlbWVudDsKLSAgICB0aGlzLl9zY3JpcHRzID0ge307Ci0gICAgZm9yICh2YXIgaSA9IDA7IGkg
PCBzY3JpcHRzLmxlbmd0aDsgKytpKQotICAgICAgICB0aGlzLl9zY3JpcHRzW3NjcmlwdHNbaV0u
c291cmNlSURdID0gc2NyaXB0c1tpXTsKKyAgICB0aGlzLl9jb250ZW50UHJvdmlkZXIgPSBjb250
ZW50UHJvdmlkZXI7CisgICAgdGhpcy5fdXJsID0gdXJsOwogICAgIHRoaXMuX2NhbkVkaXRTY3Jp
cHRzID0gY2FuRWRpdFNjcmlwdHM7CiAKICAgICB0aGlzLl90ZXh0TW9kZWwgPSBuZXcgV2ViSW5z
cGVjdG9yLlRleHRFZGl0b3JNb2RlbCgpOwpAQCAtNDMsNyArNDIsNiBAQCBXZWJJbnNwZWN0b3Iu
U291cmNlRnJhbWUgPSBmdW5jdGlvbihwYXJlbnRFbGVtZW50LCBzY3JpcHRzLCBjYW5FZGl0U2Ny
aXB0cykKICAgICB0aGlzLl9yb3dNZXNzYWdlcyA9IHt9OwogICAgIHRoaXMuX21lc3NhZ2VCdWJi
bGVzID0ge307CiAKLSAgICB0aGlzLl9sb2FkZWQgPSBmYWxzZTsKICAgICB0aGlzLl9wb3BvdmVy
T2JqZWN0R3JvdXAgPSAicG9wb3ZlciI7CiB9CiAKQEAgLTUxLDE0ICs0OSwxOCBAQCBXZWJJbnNw
ZWN0b3IuU291cmNlRnJhbWUucHJvdG90eXBlID0gewogCiAgICAgc2V0IHZpc2libGUodmlzaWJs
ZSkKICAgICB7Ci0gICAgICAgIHRoaXMuX3Zpc2libGUgPSB2aXNpYmxlOwotICAgICAgICB0aGlz
Ll9jcmVhdGVWaWV3ZXJJZk5lZWRlZCgpOworICAgICAgICBpZiAoIXRoaXMuX2NvbnRlbnRSZXF1
ZXN0ZWQpIHsKKyAgICAgICAgICAgIHRoaXMuX2NvbnRlbnRSZXF1ZXN0ZWQgPSB0cnVlOworICAg
ICAgICAgICAgdGhpcy5fY29udGVudFByb3ZpZGVyLnJlcXVlc3RDb250ZW50KHRoaXMuX2NyZWF0
ZVRleHRWaWV3ZXIuYmluZCh0aGlzKSk7CisgICAgICAgIH0KIAogICAgICAgICBpZiAodmlzaWJs
ZSkgewogICAgICAgICAgICAgaWYgKHRoaXMuX3RleHRWaWV3ZXIgJiYgdGhpcy5fc2Nyb2xsVG9w
KQogICAgICAgICAgICAgICAgIHRoaXMuX3RleHRWaWV3ZXIuZWxlbWVudC5zY3JvbGxUb3AgPSB0
aGlzLl9zY3JvbGxUb3A7CiAgICAgICAgICAgICBpZiAodGhpcy5fdGV4dFZpZXdlciAmJiB0aGlz
Ll9zY3JvbGxMZWZ0KQogICAgICAgICAgICAgICAgIHRoaXMuX3RleHRWaWV3ZXIuZWxlbWVudC5z
Y3JvbGxMZWZ0ID0gdGhpcy5fc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgIGlmICh0aGlzLl90ZXh0
Vmlld2VyKQorICAgICAgICAgICAgICAgIHRoaXMuX3RleHRWaWV3ZXIucmVzaXplKCk7CiAgICAg
ICAgIH0gZWxzZSB7CiAgICAgICAgICAgICB0aGlzLl9oaWRlUG9wdXAoKTsKICAgICAgICAgICAg
IGlmICh0aGlzLl90ZXh0Vmlld2VyKSB7CkBAIC0xMTQsMTEgKzExNiw2IEBAIFdlYkluc3BlY3Rv
ci5Tb3VyY2VGcmFtZS5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlzLl9hZGRNZXNzYWdl
VG9Tb3VyY2UobXNnKTsKICAgICB9LAogCi0gICAgYWRkU2NyaXB0OiBmdW5jdGlvbihzY3JpcHQp
Ci0gICAgewotICAgICAgICB0aGlzLl9zY3JpcHRzW3NjcmlwdC5zb3VyY2VJRF0gPSBzY3JpcHQ7
Ci0gICAgfSwKLQogICAgIGNsZWFyTWVzc2FnZXM6IGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAg
IGZvciAodmFyIGxpbmUgaW4gdGhpcy5fbWVzc2FnZUJ1YmJsZXMpIHsKQEAgLTEzOSwxNSArMTM2
LDYgQEAgV2ViSW5zcGVjdG9yLlNvdXJjZUZyYW1lLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAg
IHRoaXMuX3RleHRWaWV3ZXIucmV2YWxpZGF0ZURlY29yYXRpb25zQW5kUGFpbnQoKTsKICAgICB9
LAogCi0gICAgc2V0Q29udGVudDogZnVuY3Rpb24obWltZVR5cGUsIGNvbnRlbnQsIHVybCkKLSAg
ICB7Ci0gICAgICAgIHRoaXMuX2xvYWRlZCA9IHRydWU7Ci0gICAgICAgIHRoaXMuX3RleHRNb2Rl
bC5zZXRUZXh0KG51bGwsIGNvbnRlbnQpOwotICAgICAgICB0aGlzLl9taW1lVHlwZSA9IG1pbWVU
eXBlOwotICAgICAgICB0aGlzLl91cmwgPSB1cmw7Ci0gICAgICAgIHRoaXMuX2NyZWF0ZVZpZXdl
cklmTmVlZGVkKCk7Ci0gICAgfSwKLQogICAgIGdldCB0ZXh0TW9kZWwoKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIHRoaXMuX3RleHRNb2RlbDsKQEAgLTE4MCwxMCArMTY4LDkgQEAgV2ViSW5zcGVj
dG9yLlNvdXJjZUZyYW1lLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIGRlbGV0ZSB0aGlzLl9s
aW5lVG9IaWdobGlnaHQ7CiAgICAgfSwKIAotICAgIF9jcmVhdGVWaWV3ZXJJZk5lZWRlZDogZnVu
Y3Rpb24oKQorICAgIF9jcmVhdGVUZXh0Vmlld2VyOiBmdW5jdGlvbihtaW1lVHlwZSwgY29udGVu
dCkKICAgICB7Ci0gICAgICAgIGlmICghdGhpcy5fdmlzaWJsZSB8fCAhdGhpcy5fbG9hZGVkIHx8
IHRoaXMuX3RleHRWaWV3ZXIpCi0gICAgICAgICAgICByZXR1cm47CisgICAgICAgIHRoaXMuX3Rl
eHRNb2RlbC5zZXRUZXh0KG51bGwsIGNvbnRlbnQpOwogCiAgICAgICAgIHRoaXMuX3RleHRWaWV3
ZXIgPSBuZXcgV2ViSW5zcGVjdG9yLlRleHRWaWV3ZXIodGhpcy5fdGV4dE1vZGVsLCBXZWJJbnNw
ZWN0b3IucGxhdGZvcm0sIHRoaXMuX3VybCk7CiAgICAgICAgIHZhciBlbGVtZW50ID0gdGhpcy5f
dGV4dFZpZXdlci5lbGVtZW50OwpAQCAtMTk1LDcgKzE4Miw3IEBAIFdlYkluc3BlY3Rvci5Tb3Vy
Y2VGcmFtZS5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgdGhpcy5fdGV4dFZpZXdlci5iZWdpblVw
ZGF0ZXMoKTsKIAotICAgICAgICB0aGlzLl90ZXh0Vmlld2VyLm1pbWVUeXBlID0gdGhpcy5fbWlt
ZVR5cGU7CisgICAgICAgIHRoaXMuX3RleHRWaWV3ZXIubWltZVR5cGUgPSBtaW1lVHlwZTsKICAg
ICAgICAgdGhpcy5fYWRkRXhpc3RpbmdNZXNzYWdlc1RvU291cmNlKCk7CiAgICAgICAgIHRoaXMu
X3VwZGF0ZUV4ZWN1dGlvbkxpbmUoKTsKICAgICAgICAgdGhpcy5fdXBkYXRlRGlmZkRlY29yYXRp
b25zKCk7CkBAIC00MTgsNyArNDA1LDcgQEAgV2ViSW5zcGVjdG9yLlNvdXJjZUZyYW1lLnByb3Rv
dHlwZSA9IHsKICAgICB7CiAgICAgICAgIHZhciBicmVha3BvaW50ID0gZXZlbnQuZGF0YTsKIAot
ICAgICAgICBpZiAoYnJlYWtwb2ludC5zb3VyY2VJRCBpbiB0aGlzLl9zY3JpcHRzKQorICAgICAg
ICBpZiAoYnJlYWtwb2ludC5zb3VyY2VJRCBpbiB0aGlzLl9jb250ZW50UHJvdmlkZXIuc291cmNl
SURUb1N0YXJ0aW5nTGluZU1hcCgpKQogICAgICAgICAgICAgdGhpcy5fYWRkQnJlYWtwb2ludChi
cmVha3BvaW50KTsKICAgICB9LAogCkBAIC04NDUsOCArODMyLDggQEAgV2ViSW5zcGVjdG9yLlNv
dXJjZUZyYW1lLnByb3RvdHlwZSA9IHsKIAogICAgIF9icmVha3BvaW50czogZnVuY3Rpb24oKQog
ICAgIHsKLSAgICAgICAgdmFyIHNjcmlwdHMgPSB0aGlzLl9zY3JpcHRzOwotICAgICAgICByZXR1
cm4gV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTW9kZWwucXVlcnlCcmVha3BvaW50cyhmdW5jdGlvbihi
KSB7IHJldHVybiBiLnNvdXJjZUlEIGluIHNjcmlwdHM7IH0pOworICAgICAgICB2YXIgc291cmNl
SURUb1N0YXJ0aW5nTGluZU1hcCA9IHRoaXMuX2NvbnRlbnRQcm92aWRlci5zb3VyY2VJRFRvU3Rh
cnRpbmdMaW5lTWFwKCk7CisgICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuZGVidWdnZXJNb2Rl
bC5xdWVyeUJyZWFrcG9pbnRzKGZ1bmN0aW9uKGIpIHsgcmV0dXJuIGIuc291cmNlSUQgaW4gc291
cmNlSURUb1N0YXJ0aW5nTGluZU1hcDsgfSk7CiAgICAgfSwKIAogICAgIF9maW5kQnJlYWtwb2lu
dDogZnVuY3Rpb24obGluZU51bWJlcikKQEAgLTg1OSwxMCArODQ2LDExIEBAIFdlYkluc3BlY3Rv
ci5Tb3VyY2VGcmFtZS5wcm90b3R5cGUgPSB7CiAgICAgewogICAgICAgICB2YXIgc291cmNlSURG
b3JMaW5lID0gbnVsbDsKICAgICAgICAgdmFyIGNsb3Nlc3RTdGFydGluZ0xpbmUgPSAwOwotICAg
ICAgICBmb3IgKHZhciBzb3VyY2VJRCBpbiB0aGlzLl9zY3JpcHRzKSB7Ci0gICAgICAgICAgICB2
YXIgc2NyaXB0ID0gdGhpcy5fc2NyaXB0c1tzb3VyY2VJRF07Ci0gICAgICAgICAgICBpZiAoc2Ny
aXB0LnN0YXJ0aW5nTGluZSA8PSBsaW5lTnVtYmVyICYmIHNjcmlwdC5zdGFydGluZ0xpbmUgPj0g
Y2xvc2VzdFN0YXJ0aW5nTGluZSkgewotICAgICAgICAgICAgICAgIGNsb3Nlc3RTdGFydGluZ0xp
bmUgPSBzY3JpcHQuc3RhcnRpbmdMaW5lOworICAgICAgICB2YXIgc291cmNlSURUb1N0YXJ0aW5n
TGluZU1hcCA9IHRoaXMuX2NvbnRlbnRQcm92aWRlci5zb3VyY2VJRFRvU3RhcnRpbmdMaW5lTWFw
KCk7CisgICAgICAgIGZvciAodmFyIHNvdXJjZUlEIGluIHNvdXJjZUlEVG9TdGFydGluZ0xpbmVN
YXApIHsKKyAgICAgICAgICAgIHZhciBzdGFydGluZ0xpbmUgPSBzb3VyY2VJRFRvU3RhcnRpbmdM
aW5lTWFwW3NvdXJjZUlEXTsKKyAgICAgICAgICAgIGlmIChzdGFydGluZ0xpbmUgPD0gbGluZU51
bWJlciAmJiBzdGFydGluZ0xpbmUgPj0gY2xvc2VzdFN0YXJ0aW5nTGluZSkgeworICAgICAgICAg
ICAgICAgIGNsb3Nlc3RTdGFydGluZ0xpbmUgPSBzdGFydGluZ0xpbmU7CiAgICAgICAgICAgICAg
ICAgc291cmNlSURGb3JMaW5lID0gc291cmNlSUQ7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0K
QEAgLTg3MSwzICs4NTksMjAgQEAgV2ViSW5zcGVjdG9yLlNvdXJjZUZyYW1lLnByb3RvdHlwZSA9
IHsKIH0KIAogV2ViSW5zcGVjdG9yLlNvdXJjZUZyYW1lLnByb3RvdHlwZS5fX3Byb3RvX18gPSBX
ZWJJbnNwZWN0b3IuT2JqZWN0LnByb3RvdHlwZTsKKworCitXZWJJbnNwZWN0b3IuU291cmNlRnJh
bWVDb250ZW50UHJvdmlkZXIgPSBmdW5jdGlvbigpCit7Cit9CisKK1dlYkluc3BlY3Rvci5Tb3Vy
Y2VGcmFtZUNvbnRlbnRQcm92aWRlci5wcm90b3R5cGUgPSB7CisgICAgcmVxdWVzdENvbnRlbnQ6
IGZ1bmN0aW9uKGNhbGxiYWNrKQorICAgIHsKKyAgICAgICAgLy8gU2hvdWxkIGJlIGltcGxlbWVu
dGVkIGJ5IHN1YmNsYXNzZXMuCisgICAgfSwKKworICAgIHNvdXJjZUlEVG9TdGFydGluZ0xpbmVN
YXA6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIC8vIFNob3VsZCBiZSBpbXBsZW1lbnRlZCBi
eSBzdWJjbGFzc2VzLgorICAgIH0KK30KZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9Tb3VyY2VWaWV3LmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NvdXJj
ZVZpZXcuanMKaW5kZXggMWU0ZWY1ZC4uODU1MTQ5NiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL1NvdXJjZVZpZXcuanMKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL1NvdXJjZVZpZXcuanMKQEAgLTMyLDI4ICszMiwxNiBAQCBXZWJJbnNwZWN0b3IuU291
cmNlVmlldyA9IGZ1bmN0aW9uKHJlc291cmNlKQogCiAgICAgdGhpcy5lbGVtZW50LmFkZFN0eWxl
Q2xhc3MoInNvdXJjZSIpOwogCi0gICAgdmFyIHNjcmlwdHMgPSBXZWJJbnNwZWN0b3IuZGVidWdn
ZXJNb2RlbC5zY3JpcHRzRm9yVVJMKHJlc291cmNlLnVybCk7CisgICAgdmFyIGNvbnRlbnRQcm92
aWRlciA9IG5ldyBXZWJJbnNwZWN0b3IuU291cmNlRnJhbWVDb250ZW50UHJvdmlkZXJGb3JSZXNv
dXJjZShyZXNvdXJjZSk7CiAgICAgdmFyIGNhbkVkaXRTY3JpcHRzID0gV2ViSW5zcGVjdG9yLnBh
bmVscy5zY3JpcHRzLmNhbkVkaXRTY3JpcHRzKCkgJiYgcmVzb3VyY2UudHlwZSA9PT0gV2ViSW5z
cGVjdG9yLlJlc291cmNlLlR5cGUuU2NyaXB0OwotICAgIHRoaXMuc291cmNlRnJhbWUgPSBuZXcg
V2ViSW5zcGVjdG9yLlNvdXJjZUZyYW1lKHRoaXMuZWxlbWVudCwgc2NyaXB0cywgY2FuRWRpdFNj
cmlwdHMpOwotICAgIHJlc291cmNlLmFkZEV2ZW50TGlzdGVuZXIoImZpbmlzaGVkIiwgdGhpcy5f
cmVzb3VyY2VMb2FkaW5nRmluaXNoZWQsIHRoaXMpOwotICAgIHRoaXMuX2ZyYW1lTmVlZHNTZXR1
cCA9IHRydWU7Ci19Ci0KLS8vIFRoaXMgaXMgYSBtYXAgZnJvbSByZXNvdXJjZS50eXBlIHRvIG1p
bWUgdHlwZXMKLS8vIGZvdW5kIGluIFdlYkluc3BlY3Rvci5Tb3VyY2VUb2tlbml6ZXIuUmVnaXN0
cnkuCi1XZWJJbnNwZWN0b3IuU291cmNlVmlldy5EZWZhdWx0TUlNRVR5cGVGb3JSZXNvdXJjZVR5
cGUgPSB7Ci0gICAgMDogInRleHQvaHRtbCIsCi0gICAgMTogInRleHQvY3NzIiwKLSAgICA0OiAi
dGV4dC9qYXZhc2NyaXB0IgorICAgIHRoaXMuc291cmNlRnJhbWUgPSBuZXcgV2ViSW5zcGVjdG9y
LlNvdXJjZUZyYW1lKHRoaXMuZWxlbWVudCwgY29udGVudFByb3ZpZGVyLCByZXNvdXJjZS51cmws
IGNhbkVkaXRTY3JpcHRzKTsKIH0KIAogV2ViSW5zcGVjdG9yLlNvdXJjZVZpZXcucHJvdG90eXBl
ID0gewogICAgIHNob3c6IGZ1bmN0aW9uKHBhcmVudEVsZW1lbnQpCiAgICAgewotICAgICAgICBX
ZWJJbnNwZWN0b3IuUmVzb3VyY2VWaWV3LnByb3RvdHlwZS5zaG93LmNhbGwodGhpcywgcGFyZW50
RWxlbWVudCk7Ci0gICAgICAgIHRoaXMuc2V0dXBTb3VyY2VGcmFtZUlmTmVlZGVkKCk7CisgICAg
ICAgIFdlYkluc3BlY3Rvci5WaWV3LnByb3RvdHlwZS5zaG93LmNhbGwodGhpcywgcGFyZW50RWxl
bWVudCk7CiAgICAgICAgIHRoaXMuc291cmNlRnJhbWUudmlzaWJsZSA9IHRydWU7Ci0gICAgICAg
IHRoaXMucmVzaXplKCk7CiAgICAgfSwKIAogICAgIGhpZGU6IGZ1bmN0aW9uKCkKQEAgLTY2LDgg
KzU0LDcgQEAgV2ViSW5zcGVjdG9yLlNvdXJjZVZpZXcucHJvdG90eXBlID0gewogCiAgICAgcmVz
aXplOiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICBpZiAodGhpcy5zb3VyY2VGcmFtZSkKLSAg
ICAgICAgICAgIHRoaXMuc291cmNlRnJhbWUucmVzaXplKCk7CisgICAgICAgIHRoaXMuc291cmNl
RnJhbWUucmVzaXplKCk7CiAgICAgfSwKIAogICAgIGdldCBzY3JvbGxUb3AoKQpAQCAtODAsNDIg
KzY3LDExIEBAIFdlYkluc3BlY3Rvci5Tb3VyY2VWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAg
dGhpcy5zb3VyY2VGcmFtZS5zY3JvbGxUb3AgPSBzY3JvbGxUb3A7CiAgICAgfSwKIAotCi0gICAg
c2V0dXBTb3VyY2VGcmFtZUlmTmVlZGVkOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICBpZiAo
IXRoaXMuX2ZyYW1lTmVlZHNTZXR1cCkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBk
ZWxldGUgdGhpcy5fZnJhbWVOZWVkc1NldHVwOwotICAgICAgICB0aGlzLnJlc291cmNlLnJlcXVl
c3RDb250ZW50KHRoaXMuX2NvbnRlbnRMb2FkZWQuYmluZCh0aGlzKSk7Ci0gICAgfSwKLQogICAg
IGhhc0NvbnRlbnQ6IGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAg
IH0sCiAKLSAgICBfY29udGVudExvYWRlZDogZnVuY3Rpb24oY29udGVudCkKLSAgICB7Ci0gICAg
ICAgIHZhciBtaW1lVHlwZSA9IHRoaXMuX2Nhbm9uaWNhbE1pbWVUeXBlKHRoaXMucmVzb3VyY2Up
OwotICAgICAgICB0aGlzLnNvdXJjZUZyYW1lLnNldENvbnRlbnQobWltZVR5cGUsIGNvbnRlbnQs
IHRoaXMucmVzb3VyY2UudXJsKTsKLSAgICAgICAgdGhpcy5fc291cmNlRnJhbWVTZXR1cEZpbmlz
aGVkKCk7Ci0gICAgfSwKLQotICAgIF9jYW5vbmljYWxNaW1lVHlwZTogZnVuY3Rpb24ocmVzb3Vy
Y2UpCi0gICAgewotICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLlNvdXJjZVZpZXcuRGVmYXVs
dE1JTUVUeXBlRm9yUmVzb3VyY2VUeXBlW3Jlc291cmNlLnR5cGVdIHx8IHJlc291cmNlLm1pbWVU
eXBlOwotICAgIH0sCi0KLSAgICBfcmVzb3VyY2VMb2FkaW5nRmluaXNoZWQ6IGZ1bmN0aW9uKGV2
ZW50KQotICAgIHsKLSAgICAgICAgdGhpcy5fZnJhbWVOZWVkc1NldHVwID0gdHJ1ZTsKLSAgICAg
ICAgdGhpcy5fc291cmNlRnJhbWVTZXR1cCA9IGZhbHNlOwotICAgICAgICBpZiAodGhpcy52aXNp
YmxlKQotICAgICAgICAgICAgdGhpcy5zZXR1cFNvdXJjZUZyYW1lSWZOZWVkZWQoKTsKLSAgICAg
ICAgdGhpcy5yZXNvdXJjZS5yZW1vdmVFdmVudExpc3RlbmVyKCJmaW5pc2hlZCIsIHRoaXMuX3Jl
c291cmNlTG9hZGluZ0ZpbmlzaGVkLCB0aGlzKTsKLSAgICB9LAotCiAgICAgLy8gVGhlIHJlc3Qg
b2YgdGhlIG1ldGhvZHMgaW4gdGhpcyBwcm90b3R5cGUgbmVlZCB0byBiZSBnZW5lcmljIGVub3Vn
aCB0byB3b3JrIHdpdGggYSBTY3JpcHRWaWV3LgogICAgIC8vIFRoZSBTY3JpcHRWaWV3IHByb3Rv
dHlwZSBwdWxscyB0aGVzZSBtZXRob2RzIGludG8gaXQncyBwcm90b3R5cGUgdG8gYXZvaWQgZHVw
bGljYXRlIGNvZGUuCiAKQEAgLTEzOCw3ICs5NCw2IEBAIFdlYkluc3BlY3Rvci5Tb3VyY2VWaWV3
LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIGlmICh0aGlzLl9zZWFyY2hSZXN1bHRzKQogICAg
ICAgICAgICAgICAgIGZpbmlzaGVkQ2FsbGJhY2sodGhpcywgdGhpcy5fc2VhcmNoUmVzdWx0cy5s
ZW5ndGgpOwogICAgICAgICB9Ci0KICAgICAgICAgdGhpcy5zb3VyY2VGcmFtZS5maW5kU2VhcmNo
TWF0Y2hlcyhxdWVyeSwgZGlkRmluZFNlYXJjaE1hdGNoZXMuYmluZCh0aGlzKSk7CiAgICAgfSwK
IApAQCAtMTg4LDEzICsxNDMsMTEgQEAgV2ViSW5zcGVjdG9yLlNvdXJjZVZpZXcucHJvdG90eXBl
ID0gewogCiAgICAgcmV2ZWFsTGluZTogZnVuY3Rpb24obGluZU51bWJlcikKICAgICB7Ci0gICAg
ICAgIHRoaXMuc2V0dXBTb3VyY2VGcmFtZUlmTmVlZGVkKCk7CiAgICAgICAgIHRoaXMuc291cmNl
RnJhbWUucmV2ZWFsTGluZShsaW5lTnVtYmVyKTsKICAgICB9LAogCiAgICAgaGlnaGxpZ2h0TGlu
ZTogZnVuY3Rpb24obGluZU51bWJlcikKICAgICB7Ci0gICAgICAgIHRoaXMuc2V0dXBTb3VyY2VG
cmFtZUlmTmVlZGVkKCk7CiAgICAgICAgIHRoaXMuc291cmNlRnJhbWUuaGlnaGxpZ2h0TGluZShs
aW5lTnVtYmVyKTsKICAgICB9LAogCkBAIC0yMTUsMTcgKzE2OCw0OSBAQCBXZWJJbnNwZWN0b3Iu
U291cmNlVmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAg
dGhpcy5zb3VyY2VGcmFtZS5tYXJrQW5kUmV2ZWFsUmFuZ2UoZm91bmRSYW5nZSk7CisgICAgfQor
fQorCitXZWJJbnNwZWN0b3IuU291cmNlVmlldy5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5z
cGVjdG9yLlJlc291cmNlVmlldy5wcm90b3R5cGU7CisKKworV2ViSW5zcGVjdG9yLlNvdXJjZUZy
YW1lQ29udGVudFByb3ZpZGVyRm9yUmVzb3VyY2UgPSBmdW5jdGlvbihyZXNvdXJjZSkKK3sKKyAg
ICBXZWJJbnNwZWN0b3IuU291cmNlRnJhbWVDb250ZW50UHJvdmlkZXIuY2FsbCh0aGlzKTsKKyAg
ICB0aGlzLl9yZXNvdXJjZSA9IHJlc291cmNlOworfQorCisvL1RoaXMgaXMgYSBtYXAgZnJvbSBy
ZXNvdXJjZS50eXBlIHRvIG1pbWUgdHlwZXMKKy8vZm91bmQgaW4gV2ViSW5zcGVjdG9yLlNvdXJj
ZVRva2VuaXplci5SZWdpc3RyeS4KK1dlYkluc3BlY3Rvci5Tb3VyY2VGcmFtZUNvbnRlbnRQcm92
aWRlckZvclJlc291cmNlLkRlZmF1bHRNSU1FVHlwZUZvclJlc291cmNlVHlwZSA9IHsKKyAwOiAi
dGV4dC9odG1sIiwKKyAxOiAidGV4dC9jc3MiLAorIDQ6ICJ0ZXh0L2phdmFzY3JpcHQiCit9CisK
K1dlYkluc3BlY3Rvci5Tb3VyY2VGcmFtZUNvbnRlbnRQcm92aWRlckZvclJlc291cmNlLnByb3Rv
dHlwZSA9IHsKKyAgICByZXF1ZXN0Q29udGVudDogZnVuY3Rpb24oY2FsbGJhY2spCisgICAgewor
ICAgICAgICBmdW5jdGlvbiBjb250ZW50TG9hZGVkKGNvbnRlbnQpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHZhciBtaW1lVHlwZSA9IFdlYkluc3BlY3Rvci5Tb3VyY2VGcmFtZUNvbnRlbnRQcm92
aWRlckZvclJlc291cmNlLkRlZmF1bHRNSU1FVHlwZUZvclJlc291cmNlVHlwZVt0aGlzLl9yZXNv
dXJjZS50eXBlXSB8fCB0aGlzLl9yZXNvdXJjZS5taW1lVHlwZTsKKyAgICAgICAgICAgIGNhbGxi
YWNrKG1pbWVUeXBlLCBjb250ZW50KTsKKyAgICAgICAgfQorICAgICAgICB0aGlzLl9yZXNvdXJj
ZS5yZXF1ZXN0Q29udGVudChjb250ZW50TG9hZGVkLmJpbmQodGhpcykpOwogICAgIH0sCiAKLSAg
ICBfc291cmNlRnJhbWVTZXR1cEZpbmlzaGVkOiBmdW5jdGlvbigpCisgICAgc291cmNlSURUb1N0
YXJ0aW5nTGluZU1hcDogZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAgdGhpcy5fc291cmNlRnJh
bWVTZXR1cCA9IHRydWU7Ci0gICAgICAgIHRoaXMucmVzaXplKCk7Ci0gICAgICAgIGlmICh0aGlz
Ll9kZWxheWVkRmluZFNlYXJjaE1hdGNoZXMpIHsKLSAgICAgICAgICAgIHRoaXMuX2RlbGF5ZWRG
aW5kU2VhcmNoTWF0Y2hlcygpOwotICAgICAgICAgICAgZGVsZXRlIHRoaXMuX2RlbGF5ZWRGaW5k
U2VhcmNoTWF0Y2hlczsKKyAgICAgICAgdmFyIG1hcCA9IHt9OworICAgICAgICB2YXIgdXJsID0g
dGhpcy5fcmVzb3VyY2UudXJsOworICAgICAgICBmdW5jdGlvbiBmaWx0ZXIoc2NyaXB0KQorICAg
ICAgICB7CisgICAgICAgICAgICBpZiAoc2NyaXB0LnNvdXJjZVVSTCA9PT0gdXJsKQorICAgICAg
ICAgICAgICAgIG1hcFtzY3JpcHQuc291cmNlSURdID0gc2NyaXB0LnN0YXJ0aW5nTGluZTsKICAg
ICAgICAgfQorICAgICAgICBXZWJJbnNwZWN0b3IuZGVidWdnZXJNb2RlbC5xdWVyeVNjcmlwdHMo
ZmlsdGVyKTsKKyAgICAgICAgcmV0dXJuIG1hcDsKICAgICB9CiB9CiAKLVdlYkluc3BlY3Rvci5T
b3VyY2VWaWV3LnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuUmVzb3VyY2VWaWV3
LnByb3RvdHlwZTsKK1dlYkluc3BlY3Rvci5Tb3VyY2VGcmFtZUNvbnRlbnRQcm92aWRlckZvclJl
c291cmNlLnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuU291cmNlRnJhbWVDb250
ZW50UHJvdmlkZXIucHJvdG90eXBlOwo=
</data>
<flag name="review"
          id="68859"
          type_id="1"
          status="-"
          setter="pfeldman"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>77716</attachid>
            <date>2010-12-31 05:19:09 -0800</date>
            <delta_ts>2011-01-11 06:52:36 -0800</delta_ts>
            <desc>Comments addressed.</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>18152</size>
            <attacher name="Pavel Podivilov">podivilov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
OTE5MGVmOC4uOGY2YzRjMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTIsNiArMiwzNSBAQAogCiAgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgogCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IHJlZmFjdG9yaW5nOiBlbmNh
cHN1bGF0ZSBsYXp5IGluaXRpYWxpemF0aW9uIG9mIFNvdXJjZUZyYW1lLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTE3MzgKKworICAgICAgICBFeHRy
YWN0IGNvbnRlbnQgbG9hZGluZyBsb2dpYyBmcm9tIFNvdXJjZVZpZXcgYW5kIFNjcmlwdFZpZXcg
dG8gQ29udGVudFByb3ZpZGVyIGltcGxlbWVudGF0aW9ucy4KKyAgICAgICAgUGFzcyBDb250ZW50
UHJvdmlkZXIgaW4gU291cmNlRnJhbWUgY29uc3RydWN0b3IgdG8gYWxsb3cgU291cmNlRnJhbWUg
bWFuYWdlIGl0J3MgbGF6eSBpbml0aWFsaXphdGlvbi4KKworICAgICAgICAqIGluc3BlY3Rvci9m
cm9udC1lbmQvU2NyaXB0Vmlldy5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TY3JpcHRWaWV3
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Tb3VyY2VGcmFtZUNvbnRlbnRQcm92aWRlckZvclNj
cmlwdCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRzUGFuZWwuanM6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsLnByb3RvdHlwZS5fYWRkU2NyaXB0KToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwucHJvdG90eXBlLnNvdXJjZUZyYW1l
Rm9yU2NyaXB0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwucHJvdG90eXBl
Ll9zb3VyY2VGcmFtZUZvclJlc291cmNlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5k
L1NvdXJjZUZyYW1lLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNvdXJjZUZyYW1lKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5Tb3VyY2VGcmFtZS5wcm90b3R5cGUuc2V0IHZpc2libGUpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLlNvdXJjZUZyYW1lLnByb3RvdHlwZS5fY3JlYXRlVGV4dFZp
ZXdlcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU291cmNlRnJhbWUucHJvdG90eXBlLl9icmVh
a3BvaW50QWRkZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNvdXJjZUZyYW1lLnByb3RvdHlw
ZS5fYnJlYWtwb2ludHMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNvdXJjZUZyYW1lLnByb3Rv
dHlwZS5fc291cmNlSURGb3JMaW5lKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Tb3VyY2VGcmFt
ZUNvbnRlbnRQcm92aWRlcik6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9Tb3VyY2VW
aWV3LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNvdXJjZVZpZXcpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlNvdXJjZUZyYW1lQ29udGVudFByb3ZpZGVyRm9yUmVzb3VyY2UpOgorCisyMDEw
LTEyLTMwICBQYXZlbCBQb2Rpdmlsb3YgIDxwb2Rpdmlsb3ZAY2hyb21pdW0ub3JnPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6
IG1vdmUgZGVsYXllZCBzZWFyY2ggaW1wbGVtZW50YXRpb24gdG8gU291cmNlRnJhbWUuCiAgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MTc1MwogCmRpZmYg
LS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0Vmlldy5qcyBiL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRWaWV3LmpzCmluZGV4IGYxMzU0NzUuLjM3ZjEy
MTEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRWaWV3Lmpz
CisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRWaWV3LmpzCkBAIC0yOSw2
NCArMjksMTUgQEAgV2ViSW5zcGVjdG9yLlNjcmlwdFZpZXcgPSBmdW5jdGlvbihzY3JpcHQpCiAK
ICAgICB0aGlzLmVsZW1lbnQuYWRkU3R5bGVDbGFzcygic2NyaXB0LXZpZXciKTsKIAotICAgIHRo
aXMuc2NyaXB0ID0gc2NyaXB0OwotCi0gICAgdGhpcy5fZnJhbWVOZWVkc1NldHVwID0gdHJ1ZTsK
LSAgICB0aGlzLl9zb3VyY2VGcmFtZVNldHVwID0gZmFsc2U7Ci0gICAgdGhpcy5zb3VyY2VGcmFt
ZSA9IG5ldyBXZWJJbnNwZWN0b3IuU291cmNlRnJhbWUodGhpcy5lbGVtZW50LCBbc2NyaXB0XSwg
V2ViSW5zcGVjdG9yLnBhbmVscy5zY3JpcHRzLmNhbkVkaXRTY3JpcHRzKCkpOworICAgIHZhciBj
b250ZW50UHJvdmlkZXIgPSBuZXcgV2ViSW5zcGVjdG9yLlNvdXJjZUZyYW1lQ29udGVudFByb3Zp
ZGVyRm9yU2NyaXB0KHNjcmlwdCk7CisgICAgdGhpcy5zb3VyY2VGcmFtZSA9IG5ldyBXZWJJbnNw
ZWN0b3IuU291cmNlRnJhbWUodGhpcy5lbGVtZW50LCBjb250ZW50UHJvdmlkZXIsICIiLCBXZWJJ
bnNwZWN0b3IucGFuZWxzLnNjcmlwdHMuY2FuRWRpdFNjcmlwdHMoKSk7CiB9CiAKIFdlYkluc3Bl
Y3Rvci5TY3JpcHRWaWV3LnByb3RvdHlwZSA9IHsKLSAgICBzaG93OiBmdW5jdGlvbihwYXJlbnRF
bGVtZW50KQotICAgIHsKLSAgICAgICAgV2ViSW5zcGVjdG9yLlZpZXcucHJvdG90eXBlLnNob3cu
Y2FsbCh0aGlzLCBwYXJlbnRFbGVtZW50KTsKLSAgICAgICAgdGhpcy5zZXR1cFNvdXJjZUZyYW1l
SWZOZWVkZWQoKTsKLSAgICAgICAgdGhpcy5zb3VyY2VGcmFtZS52aXNpYmxlID0gdHJ1ZTsKLSAg
ICAgICAgdGhpcy5yZXNpemUoKTsKLSAgICB9LAotCi0gICAgc2V0dXBTb3VyY2VGcmFtZUlmTmVl
ZGVkOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICBpZiAoIXRoaXMuX2ZyYW1lTmVlZHNTZXR1
cCkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgZGVsZXRlIHRoaXMuX2ZyYW1lTmVlZHNT
ZXR1cDsKLQotICAgICAgICB0aGlzLmF0dGFjaCgpOwotCi0gICAgICAgIGlmICh0aGlzLnNjcmlw
dC5zb3VyY2UpCi0gICAgICAgICAgICB0aGlzLl9zb3VyY2VGcmFtZVNldHVwRmluaXNoZWQoKTsK
LSAgICAgICAgZWxzZQotICAgICAgICAgICAgSW5zcGVjdG9yQmFja2VuZC5nZXRTY3JpcHRTb3Vy
Y2UodGhpcy5zY3JpcHQuc291cmNlSUQsIHRoaXMuX2RpZEdldFNjcmlwdFNvdXJjZS5iaW5kKHRo
aXMpKTsKLSAgICB9LAotCi0gICAgX2RpZEdldFNjcmlwdFNvdXJjZTogZnVuY3Rpb24oc291cmNl
KQotICAgIHsKLSAgICAgICAgdGhpcy5zY3JpcHQuc291cmNlID0gc291cmNlIHx8IFdlYkluc3Bl
Y3Rvci5VSVN0cmluZygiPHNvdXJjZSBpcyBub3QgYXZhaWxhYmxlPiIpOwotICAgICAgICB0aGlz
Ll9zb3VyY2VGcmFtZVNldHVwRmluaXNoZWQoKTsKLSAgICB9LAotCi0gICAgX3NvdXJjZUZyYW1l
U2V0dXBGaW5pc2hlZDogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgdGhpcy5zb3VyY2VGcmFt
ZS5zZXRDb250ZW50KCJ0ZXh0L2phdmFzY3JpcHQiLCB0aGlzLl9wcmVwZW5kV2hpdGVzcGFjZSh0
aGlzLnNjcmlwdC5zb3VyY2UpKTsKLSAgICAgICAgdGhpcy5fc291cmNlRnJhbWVTZXR1cCA9IHRy
dWU7Ci0gICAgfSwKLQotICAgIF9wcmVwZW5kV2hpdGVzcGFjZTogZnVuY3Rpb24oY29udGVudCkg
ewotICAgICAgICB2YXIgcHJlZml4ID0gIiI7Ci0gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
dGhpcy5zY3JpcHQuc3RhcnRpbmdMaW5lIC0gMTsgKytpKQotICAgICAgICAgICAgcHJlZml4ICs9
ICJcbiI7Ci0gICAgICAgIHJldHVybiBwcmVmaXggKyBjb250ZW50OwotICAgIH0sCi0KLSAgICBh
dHRhY2g6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIGlmICghdGhpcy5lbGVtZW50LnBhcmVu
dE5vZGUpCi0gICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic2NyaXB0LXJlc291
cmNlLXZpZXdzIikuYXBwZW5kQ2hpbGQodGhpcy5lbGVtZW50KTsKLSAgICB9LAotCiAgICAgLy8g
VGhlIGZvbGxvd2luZyBtZXRob2RzIGFyZSBwdWxsZWQgZnJvbSBTb3VyY2VWaWV3LCBzaW5jZSB0
aGV5IGFyZQogICAgIC8vIGdlbmVyaWMgYW5kIHdvcmsgd2l0aCBTY3JpcHRWaWV3IGp1c3QgZmlu
ZS4KIAorICAgIHNob3c6IFdlYkluc3BlY3Rvci5Tb3VyY2VWaWV3LnByb3RvdHlwZS5zaG93LAog
ICAgIGhpZGU6IFdlYkluc3BlY3Rvci5Tb3VyY2VWaWV3LnByb3RvdHlwZS5oaWRlLAogICAgIHJl
dmVhbExpbmU6IFdlYkluc3BlY3Rvci5Tb3VyY2VWaWV3LnByb3RvdHlwZS5yZXZlYWxMaW5lLAog
ICAgIGhpZ2hsaWdodExpbmU6IFdlYkluc3BlY3Rvci5Tb3VyY2VWaWV3LnByb3RvdHlwZS5oaWdo
bGlnaHRMaW5lLApAQCAtMTA1LDMgKzU2LDQyIEBAIFdlYkluc3BlY3Rvci5TY3JpcHRWaWV3LnBy
b3RvdHlwZSA9IHsKIH0KIAogV2ViSW5zcGVjdG9yLlNjcmlwdFZpZXcucHJvdG90eXBlLl9fcHJv
dG9fXyA9IFdlYkluc3BlY3Rvci5WaWV3LnByb3RvdHlwZTsKKworCitXZWJJbnNwZWN0b3IuU291
cmNlRnJhbWVDb250ZW50UHJvdmlkZXJGb3JTY3JpcHQgPSBmdW5jdGlvbihzY3JpcHQpCit7Cisg
ICAgV2ViSW5zcGVjdG9yLlNvdXJjZUZyYW1lQ29udGVudFByb3ZpZGVyLmNhbGwodGhpcyk7Cisg
ICAgdGhpcy5fc2NyaXB0ID0gc2NyaXB0OworfQorCitXZWJJbnNwZWN0b3IuU291cmNlRnJhbWVD
b250ZW50UHJvdmlkZXJGb3JTY3JpcHQucHJvdG90eXBlID0geworICAgIHJlcXVlc3RDb250ZW50
OiBmdW5jdGlvbihjYWxsYmFjaykKKyAgICB7CisgICAgICAgIGlmICh0aGlzLl9zY3JpcHQuc291
cmNlKSB7CisgICAgICAgICAgICBjYWxsYmFjaygidGV4dC9qYXZhc2NyaXB0IiwgdGhpcy5fc2Ny
aXB0LnNvdXJjZSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBm
dW5jdGlvbiBjb250ZW50TG9hZGVkKGNvbnRlbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZh
ciBzb3VyY2U7CisgICAgICAgICAgICBpZiAoY29udGVudCkgeworICAgICAgICAgICAgICAgIHZh
ciBwcmVmaXggPSAiIjsKKyAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMu
X3NjcmlwdC5zdGFydGluZ0xpbmUgLSAxOyArK2kpCisgICAgICAgICAgICAgICAgICAgIHByZWZp
eCArPSAiXG4iOworICAgICAgICAgICAgICAgIHNvdXJjZSA9IHByZWZpeCArIGNvbnRlbnQ7Cisg
ICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICBzb3VyY2UgPSBXZWJJbnNwZWN0b3Iu
VUlTdHJpbmcoIjxzb3VyY2UgaXMgbm90IGF2YWlsYWJsZT4iKTsKKyAgICAgICAgICAgIHRoaXMu
X3NjcmlwdC5zb3VyY2UgPSBzb3VyY2U7CisgICAgICAgICAgICBjYWxsYmFjaygidGV4dC9qYXZh
c2NyaXB0Iiwgc291cmNlKTsKKyAgICAgICAgfQorICAgICAgICBJbnNwZWN0b3JCYWNrZW5kLmdl
dFNjcmlwdFNvdXJjZSh0aGlzLl9zY3JpcHQuc291cmNlSUQsIGNvbnRlbnRMb2FkZWQuYmluZCh0
aGlzKSk7CisgICAgfSwKKworICAgIHNjcmlwdHM6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAg
IHJldHVybiBbdGhpcy5fc2NyaXB0XTsKKyAgICB9Cit9CisKK1dlYkluc3BlY3Rvci5Tb3VyY2VG
cmFtZUNvbnRlbnRQcm92aWRlckZvclNjcmlwdC5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5z
cGVjdG9yLlNvdXJjZUZyYW1lQ29udGVudFByb3ZpZGVyLnByb3RvdHlwZTsKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRzUGFuZWwuanMgYi9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0c1BhbmVsLmpzCmluZGV4IGNkMzdmOTMuLmYzNDQ4Y2Ig
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRzUGFuZWwuanMK
KysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NjcmlwdHNQYW5lbC5qcwpAQCAtMjU2
LDkgKzI1Niw2IEBAIFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwucHJvdG90eXBlID0gewogICAg
ICAgICAgICAgaWYgKHJlc291cmNlLmZpbmlzaGVkKSB7CiAgICAgICAgICAgICAgICAgLy8gUmVz
b3VyY2UgaXMgZmluaXNoZWQsIGJpbmQgdGhlIHNjcmlwdCByaWdodCBhd2F5LgogICAgICAgICAg
ICAgICAgIHNjcmlwdC5yZXNvdXJjZSA9IHJlc291cmNlOwotICAgICAgICAgICAgICAgIHZhciB2
aWV3ID0gV2ViSW5zcGVjdG9yLlJlc291cmNlVmlldy5leGlzdGluZ1Jlc291cmNlVmlld0ZvclJl
c291cmNlKHJlc291cmNlKTsKLSAgICAgICAgICAgICAgICBpZiAodmlldyAmJiB2aWV3LnNvdXJj
ZUZyYW1lKQotICAgICAgICAgICAgICAgICAgICB2aWV3LnNvdXJjZUZyYW1lLmFkZFNjcmlwdChz
Y3JpcHQpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAvLyBSZXNvdXJj
ZSBpcyBub3QgZmluaXNoZWQsIGJpbmQgdGhlIHNjcmlwdCBsYXRlci4KICAgICAgICAgICAgICAg
ICBpZiAoIXJlc291cmNlLl9zY3JpcHRzUGVuZGluZ1Jlc291cmNlTG9hZCkgewpAQCAtNTM2LDcg
KzUzMyw2IEBAIFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwucHJvdG90eXBlID0gewogICAgICAg
ICBpZiAoIXRoaXMuZWxlbWVudC5wYXJlbnROb2RlKQogICAgICAgICAgICAgdGhpcy5hdHRhY2go
KTsKIAotICAgICAgICB2aWV3LnNldHVwU291cmNlRnJhbWVJZk5lZWRlZCgpOwogICAgICAgICBy
ZXR1cm4gdmlldy5zb3VyY2VGcmFtZTsKICAgICB9LAogCkBAIC01NTQsMTAgKzU1MCw2IEBAIFdl
Ykluc3BlY3Rvci5TY3JpcHRzUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICBpZiAoIXZpZXcp
CiAgICAgICAgICAgICByZXR1cm4gbnVsbDsKIAotICAgICAgICBpZiAoIXZpZXcuc2V0dXBTb3Vy
Y2VGcmFtZUlmTmVlZGVkKQotICAgICAgICAgICAgcmV0dXJuIG51bGw7Ci0KLSAgICAgICAgdmll
dy5zZXR1cFNvdXJjZUZyYW1lSWZOZWVkZWQoKTsKICAgICAgICAgcmV0dXJuIHZpZXcuc291cmNl
RnJhbWU7CiAgICAgfSwKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L1NvdXJjZUZyYW1lLmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NvdXJjZUZyYW1l
LmpzCmluZGV4IDc0Y2M4NWMuLmE4MGE0NjQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9Tb3VyY2VGcmFtZS5qcworKysgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvU291cmNlRnJhbWUuanMKQEAgLTI4LDEyICsyOCwxMSBAQAogICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAq
LwogCi1XZWJJbnNwZWN0b3IuU291cmNlRnJhbWUgPSBmdW5jdGlvbihwYXJlbnRFbGVtZW50LCBz
Y3JpcHRzLCBjYW5FZGl0U2NyaXB0cykKK1dlYkluc3BlY3Rvci5Tb3VyY2VGcmFtZSA9IGZ1bmN0
aW9uKHBhcmVudEVsZW1lbnQsIGNvbnRlbnRQcm92aWRlciwgdXJsLCBjYW5FZGl0U2NyaXB0cykK
IHsKICAgICB0aGlzLl9wYXJlbnRFbGVtZW50ID0gcGFyZW50RWxlbWVudDsKLSAgICB0aGlzLl9z
Y3JpcHRzID0ge307Ci0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzY3JpcHRzLmxlbmd0aDsgKytp
KQotICAgICAgICB0aGlzLl9zY3JpcHRzW3NjcmlwdHNbaV0uc291cmNlSURdID0gc2NyaXB0c1tp
XTsKKyAgICB0aGlzLl9jb250ZW50UHJvdmlkZXIgPSBjb250ZW50UHJvdmlkZXI7CisgICAgdGhp
cy5fdXJsID0gdXJsOwogICAgIHRoaXMuX2NhbkVkaXRTY3JpcHRzID0gY2FuRWRpdFNjcmlwdHM7
CiAKICAgICB0aGlzLl90ZXh0TW9kZWwgPSBuZXcgV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JNb2Rl
bCgpOwpAQCAtNDMsNyArNDIsNiBAQCBXZWJJbnNwZWN0b3IuU291cmNlRnJhbWUgPSBmdW5jdGlv
bihwYXJlbnRFbGVtZW50LCBzY3JpcHRzLCBjYW5FZGl0U2NyaXB0cykKICAgICB0aGlzLl9yb3dN
ZXNzYWdlcyA9IHt9OwogICAgIHRoaXMuX21lc3NhZ2VCdWJibGVzID0ge307CiAKLSAgICB0aGlz
Ll9sb2FkZWQgPSBmYWxzZTsKICAgICB0aGlzLl9wb3BvdmVyT2JqZWN0R3JvdXAgPSAicG9wb3Zl
ciI7CiB9CiAKQEAgLTUxLDE0ICs0OSwxOCBAQCBXZWJJbnNwZWN0b3IuU291cmNlRnJhbWUucHJv
dG90eXBlID0gewogCiAgICAgc2V0IHZpc2libGUodmlzaWJsZSkKICAgICB7Ci0gICAgICAgIHRo
aXMuX3Zpc2libGUgPSB2aXNpYmxlOwotICAgICAgICB0aGlzLl9jcmVhdGVWaWV3ZXJJZk5lZWRl
ZCgpOworICAgICAgICBpZiAoIXRoaXMuX2NvbnRlbnRSZXF1ZXN0ZWQpIHsKKyAgICAgICAgICAg
IHRoaXMuX2NvbnRlbnRSZXF1ZXN0ZWQgPSB0cnVlOworICAgICAgICAgICAgdGhpcy5fY29udGVu
dFByb3ZpZGVyLnJlcXVlc3RDb250ZW50KHRoaXMuX2NyZWF0ZVRleHRWaWV3ZXIuYmluZCh0aGlz
KSk7CisgICAgICAgIH0KIAogICAgICAgICBpZiAodmlzaWJsZSkgewogICAgICAgICAgICAgaWYg
KHRoaXMuX3RleHRWaWV3ZXIgJiYgdGhpcy5fc2Nyb2xsVG9wKQogICAgICAgICAgICAgICAgIHRo
aXMuX3RleHRWaWV3ZXIuZWxlbWVudC5zY3JvbGxUb3AgPSB0aGlzLl9zY3JvbGxUb3A7CiAgICAg
ICAgICAgICBpZiAodGhpcy5fdGV4dFZpZXdlciAmJiB0aGlzLl9zY3JvbGxMZWZ0KQogICAgICAg
ICAgICAgICAgIHRoaXMuX3RleHRWaWV3ZXIuZWxlbWVudC5zY3JvbGxMZWZ0ID0gdGhpcy5fc2Ny
b2xsTGVmdDsKKyAgICAgICAgICAgIGlmICh0aGlzLl90ZXh0Vmlld2VyKQorICAgICAgICAgICAg
ICAgIHRoaXMuX3RleHRWaWV3ZXIucmVzaXplKCk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAg
ICAgICB0aGlzLl9oaWRlUG9wdXAoKTsKICAgICAgICAgICAgIGlmICh0aGlzLl90ZXh0Vmlld2Vy
KSB7CkBAIC0xMTQsMTEgKzExNiw2IEBAIFdlYkluc3BlY3Rvci5Tb3VyY2VGcmFtZS5wcm90b3R5
cGUgPSB7CiAgICAgICAgICAgICB0aGlzLl9hZGRNZXNzYWdlVG9Tb3VyY2UobXNnKTsKICAgICB9
LAogCi0gICAgYWRkU2NyaXB0OiBmdW5jdGlvbihzY3JpcHQpCi0gICAgewotICAgICAgICB0aGlz
Ll9zY3JpcHRzW3NjcmlwdC5zb3VyY2VJRF0gPSBzY3JpcHQ7Ci0gICAgfSwKLQogICAgIGNsZWFy
TWVzc2FnZXM6IGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIGZvciAodmFyIGxpbmUgaW4gdGhp
cy5fbWVzc2FnZUJ1YmJsZXMpIHsKQEAgLTEzOSwxNSArMTM2LDYgQEAgV2ViSW5zcGVjdG9yLlNv
dXJjZUZyYW1lLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMuX3RleHRWaWV3ZXIucmV2
YWxpZGF0ZURlY29yYXRpb25zQW5kUGFpbnQoKTsKICAgICB9LAogCi0gICAgc2V0Q29udGVudDog
ZnVuY3Rpb24obWltZVR5cGUsIGNvbnRlbnQsIHVybCkKLSAgICB7Ci0gICAgICAgIHRoaXMuX2xv
YWRlZCA9IHRydWU7Ci0gICAgICAgIHRoaXMuX3RleHRNb2RlbC5zZXRUZXh0KG51bGwsIGNvbnRl
bnQpOwotICAgICAgICB0aGlzLl9taW1lVHlwZSA9IG1pbWVUeXBlOwotICAgICAgICB0aGlzLl91
cmwgPSB1cmw7Ci0gICAgICAgIHRoaXMuX2NyZWF0ZVZpZXdlcklmTmVlZGVkKCk7Ci0gICAgfSwK
LQogICAgIGdldCB0ZXh0TW9kZWwoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3RleHRN
b2RlbDsKQEAgLTE4MCwxMCArMTY4LDkgQEAgV2ViSW5zcGVjdG9yLlNvdXJjZUZyYW1lLnByb3Rv
dHlwZSA9IHsKICAgICAgICAgICAgIGRlbGV0ZSB0aGlzLl9saW5lVG9IaWdobGlnaHQ7CiAgICAg
fSwKIAotICAgIF9jcmVhdGVWaWV3ZXJJZk5lZWRlZDogZnVuY3Rpb24oKQorICAgIF9jcmVhdGVU
ZXh0Vmlld2VyOiBmdW5jdGlvbihtaW1lVHlwZSwgY29udGVudCkKICAgICB7Ci0gICAgICAgIGlm
ICghdGhpcy5fdmlzaWJsZSB8fCAhdGhpcy5fbG9hZGVkIHx8IHRoaXMuX3RleHRWaWV3ZXIpCi0g
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIHRoaXMuX3RleHRNb2RlbC5zZXRUZXh0KG51bGws
IGNvbnRlbnQpOwogCiAgICAgICAgIHRoaXMuX3RleHRWaWV3ZXIgPSBuZXcgV2ViSW5zcGVjdG9y
LlRleHRWaWV3ZXIodGhpcy5fdGV4dE1vZGVsLCBXZWJJbnNwZWN0b3IucGxhdGZvcm0sIHRoaXMu
X3VybCk7CiAgICAgICAgIHZhciBlbGVtZW50ID0gdGhpcy5fdGV4dFZpZXdlci5lbGVtZW50OwpA
QCAtMTk1LDcgKzE4Miw3IEBAIFdlYkluc3BlY3Rvci5Tb3VyY2VGcmFtZS5wcm90b3R5cGUgPSB7
CiAKICAgICAgICAgdGhpcy5fdGV4dFZpZXdlci5iZWdpblVwZGF0ZXMoKTsKIAotICAgICAgICB0
aGlzLl90ZXh0Vmlld2VyLm1pbWVUeXBlID0gdGhpcy5fbWltZVR5cGU7CisgICAgICAgIHRoaXMu
X3RleHRWaWV3ZXIubWltZVR5cGUgPSBtaW1lVHlwZTsKICAgICAgICAgdGhpcy5fYWRkRXhpc3Rp
bmdNZXNzYWdlc1RvU291cmNlKCk7CiAgICAgICAgIHRoaXMuX3VwZGF0ZUV4ZWN1dGlvbkxpbmUo
KTsKICAgICAgICAgdGhpcy5fdXBkYXRlRGlmZkRlY29yYXRpb25zKCk7CkBAIC00MTgsNyArNDA1
LDcgQEAgV2ViSW5zcGVjdG9yLlNvdXJjZUZyYW1lLnByb3RvdHlwZSA9IHsKICAgICB7CiAgICAg
ICAgIHZhciBicmVha3BvaW50ID0gZXZlbnQuZGF0YTsKIAotICAgICAgICBpZiAoYnJlYWtwb2lu
dC5zb3VyY2VJRCBpbiB0aGlzLl9zY3JpcHRzKQorICAgICAgICBpZiAoYnJlYWtwb2ludC5zb3Vy
Y2VJRCBpbiB0aGlzLl9zb3VyY2VJRFNldCgpKQogICAgICAgICAgICAgdGhpcy5fYWRkQnJlYWtw
b2ludChicmVha3BvaW50KTsKICAgICB9LAogCkBAIC04NDUsOCArODMyLDggQEAgV2ViSW5zcGVj
dG9yLlNvdXJjZUZyYW1lLnByb3RvdHlwZSA9IHsKIAogICAgIF9icmVha3BvaW50czogZnVuY3Rp
b24oKQogICAgIHsKLSAgICAgICAgdmFyIHNjcmlwdHMgPSB0aGlzLl9zY3JpcHRzOwotICAgICAg
ICByZXR1cm4gV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTW9kZWwucXVlcnlCcmVha3BvaW50cyhmdW5j
dGlvbihiKSB7IHJldHVybiBiLnNvdXJjZUlEIGluIHNjcmlwdHM7IH0pOworICAgICAgICB2YXIg
c291cmNlSURTZXQgPSB0aGlzLl9zb3VyY2VJRFNldCgpOworICAgICAgICByZXR1cm4gV2ViSW5z
cGVjdG9yLmRlYnVnZ2VyTW9kZWwucXVlcnlCcmVha3BvaW50cyhmdW5jdGlvbihiKSB7IHJldHVy
biBiLnNvdXJjZUlEIGluIHNvdXJjZUlEU2V0OyB9KTsKICAgICB9LAogCiAgICAgX2ZpbmRCcmVh
a3BvaW50OiBmdW5jdGlvbihsaW5lTnVtYmVyKQpAQCAtODU5LDE1ICs4NDYsNDIgQEAgV2ViSW5z
cGVjdG9yLlNvdXJjZUZyYW1lLnByb3RvdHlwZSA9IHsKICAgICB7CiAgICAgICAgIHZhciBzb3Vy
Y2VJREZvckxpbmUgPSBudWxsOwogICAgICAgICB2YXIgY2xvc2VzdFN0YXJ0aW5nTGluZSA9IDA7
Ci0gICAgICAgIGZvciAodmFyIHNvdXJjZUlEIGluIHRoaXMuX3NjcmlwdHMpIHsKLSAgICAgICAg
ICAgIHZhciBzY3JpcHQgPSB0aGlzLl9zY3JpcHRzW3NvdXJjZUlEXTsKLSAgICAgICAgICAgIGlm
IChzY3JpcHQuc3RhcnRpbmdMaW5lIDw9IGxpbmVOdW1iZXIgJiYgc2NyaXB0LnN0YXJ0aW5nTGlu
ZSA+PSBjbG9zZXN0U3RhcnRpbmdMaW5lKSB7Ci0gICAgICAgICAgICAgICAgY2xvc2VzdFN0YXJ0
aW5nTGluZSA9IHNjcmlwdC5zdGFydGluZ0xpbmU7Ci0gICAgICAgICAgICAgICAgc291cmNlSURG
b3JMaW5lID0gc291cmNlSUQ7CisgICAgICAgIHZhciBzY3JpcHRzID0gdGhpcy5fY29udGVudFBy
b3ZpZGVyLnNjcmlwdHMoKTsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzY3JpcHRzLmxl
bmd0aDsgKytpKSB7CisgICAgICAgICAgICB2YXIgc3RhcnRpbmdMaW5lID0gc2NyaXB0c1tpXS5z
dGFydGluZ0xpbmU7CisgICAgICAgICAgICBpZiAoc3RhcnRpbmdMaW5lIDw9IGxpbmVOdW1iZXIg
JiYgc3RhcnRpbmdMaW5lID49IGNsb3Nlc3RTdGFydGluZ0xpbmUpIHsKKyAgICAgICAgICAgICAg
ICBjbG9zZXN0U3RhcnRpbmdMaW5lID0gc3RhcnRpbmdMaW5lOworICAgICAgICAgICAgICAgIHNv
dXJjZUlERm9yTGluZSA9IHNjcmlwdHNbaV0uc291cmNlSUQ7CiAgICAgICAgICAgICB9CiAgICAg
ICAgIH0KICAgICAgICAgcmV0dXJuIHNvdXJjZUlERm9yTGluZTsKKyAgICB9LAorCisgICAgX3Nv
dXJjZUlEU2V0OiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB2YXIgc2NyaXB0cyA9IHRoaXMu
X2NvbnRlbnRQcm92aWRlci5zY3JpcHRzKCk7CisgICAgICAgIHZhciBzb3VyY2VJRFNldCA9IHt9
OworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNjcmlwdHMubGVuZ3RoOyArK2kpCisgICAg
ICAgICAgICBzb3VyY2VJRFNldFtzY3JpcHRzW2ldLnNvdXJjZUlEXSA9IHRydWU7CisgICAgICAg
IHJldHVybiBzb3VyY2VJRFNldDsKICAgICB9CiB9CiAKIFdlYkluc3BlY3Rvci5Tb3VyY2VGcmFt
ZS5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLk9iamVjdC5wcm90b3R5cGU7CisK
KworV2ViSW5zcGVjdG9yLlNvdXJjZUZyYW1lQ29udGVudFByb3ZpZGVyID0gZnVuY3Rpb24oKQor
eworfQorCitXZWJJbnNwZWN0b3IuU291cmNlRnJhbWVDb250ZW50UHJvdmlkZXIucHJvdG90eXBl
ID0geworICAgIHJlcXVlc3RDb250ZW50OiBmdW5jdGlvbihjYWxsYmFjaykKKyAgICB7CisgICAg
ICAgIC8vIFNob3VsZCBiZSBpbXBsZW1lbnRlZCBieSBzdWJjbGFzc2VzLgorICAgIH0sCisKKyAg
ICBzY3JpcHRzOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICAvLyBTaG91bGQgYmUgaW1wbGVt
ZW50ZWQgYnkgc3ViY2xhc3Nlcy4KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvU291cmNlVmlldy5qcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9Tb3VyY2VWaWV3LmpzCmluZGV4IDFlNGVmNWQuLmU3OGZmOTQgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Tb3VyY2VWaWV3LmpzCisrKyBiL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9Tb3VyY2VWaWV3LmpzCkBAIC0zMiwyOCArMzIsMTYgQEAgV2ViSW5zcGVj
dG9yLlNvdXJjZVZpZXcgPSBmdW5jdGlvbihyZXNvdXJjZSkKIAogICAgIHRoaXMuZWxlbWVudC5h
ZGRTdHlsZUNsYXNzKCJzb3VyY2UiKTsKIAotICAgIHZhciBzY3JpcHRzID0gV2ViSW5zcGVjdG9y
LmRlYnVnZ2VyTW9kZWwuc2NyaXB0c0ZvclVSTChyZXNvdXJjZS51cmwpOworICAgIHZhciBjb250
ZW50UHJvdmlkZXIgPSBuZXcgV2ViSW5zcGVjdG9yLlNvdXJjZUZyYW1lQ29udGVudFByb3ZpZGVy
Rm9yUmVzb3VyY2UocmVzb3VyY2UpOwogICAgIHZhciBjYW5FZGl0U2NyaXB0cyA9IFdlYkluc3Bl
Y3Rvci5wYW5lbHMuc2NyaXB0cy5jYW5FZGl0U2NyaXB0cygpICYmIHJlc291cmNlLnR5cGUgPT09
IFdlYkluc3BlY3Rvci5SZXNvdXJjZS5UeXBlLlNjcmlwdDsKLSAgICB0aGlzLnNvdXJjZUZyYW1l
ID0gbmV3IFdlYkluc3BlY3Rvci5Tb3VyY2VGcmFtZSh0aGlzLmVsZW1lbnQsIHNjcmlwdHMsIGNh
bkVkaXRTY3JpcHRzKTsKLSAgICByZXNvdXJjZS5hZGRFdmVudExpc3RlbmVyKCJmaW5pc2hlZCIs
IHRoaXMuX3Jlc291cmNlTG9hZGluZ0ZpbmlzaGVkLCB0aGlzKTsKLSAgICB0aGlzLl9mcmFtZU5l
ZWRzU2V0dXAgPSB0cnVlOwotfQotCi0vLyBUaGlzIGlzIGEgbWFwIGZyb20gcmVzb3VyY2UudHlw
ZSB0byBtaW1lIHR5cGVzCi0vLyBmb3VuZCBpbiBXZWJJbnNwZWN0b3IuU291cmNlVG9rZW5pemVy
LlJlZ2lzdHJ5LgotV2ViSW5zcGVjdG9yLlNvdXJjZVZpZXcuRGVmYXVsdE1JTUVUeXBlRm9yUmVz
b3VyY2VUeXBlID0gewotICAgIDA6ICJ0ZXh0L2h0bWwiLAotICAgIDE6ICJ0ZXh0L2NzcyIsCi0g
ICAgNDogInRleHQvamF2YXNjcmlwdCIKKyAgICB0aGlzLnNvdXJjZUZyYW1lID0gbmV3IFdlYklu
c3BlY3Rvci5Tb3VyY2VGcmFtZSh0aGlzLmVsZW1lbnQsIGNvbnRlbnRQcm92aWRlciwgcmVzb3Vy
Y2UudXJsLCBjYW5FZGl0U2NyaXB0cyk7CiB9CiAKIFdlYkluc3BlY3Rvci5Tb3VyY2VWaWV3LnBy
b3RvdHlwZSA9IHsKICAgICBzaG93OiBmdW5jdGlvbihwYXJlbnRFbGVtZW50KQogICAgIHsKLSAg
ICAgICAgV2ViSW5zcGVjdG9yLlJlc291cmNlVmlldy5wcm90b3R5cGUuc2hvdy5jYWxsKHRoaXMs
IHBhcmVudEVsZW1lbnQpOwotICAgICAgICB0aGlzLnNldHVwU291cmNlRnJhbWVJZk5lZWRlZCgp
OworICAgICAgICBXZWJJbnNwZWN0b3IuVmlldy5wcm90b3R5cGUuc2hvdy5jYWxsKHRoaXMsIHBh
cmVudEVsZW1lbnQpOwogICAgICAgICB0aGlzLnNvdXJjZUZyYW1lLnZpc2libGUgPSB0cnVlOwot
ICAgICAgICB0aGlzLnJlc2l6ZSgpOwogICAgIH0sCiAKICAgICBoaWRlOiBmdW5jdGlvbigpCkBA
IC02Niw4ICs1NCw3IEBAIFdlYkluc3BlY3Rvci5Tb3VyY2VWaWV3LnByb3RvdHlwZSA9IHsKIAog
ICAgIHJlc2l6ZTogZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAgaWYgKHRoaXMuc291cmNlRnJh
bWUpCi0gICAgICAgICAgICB0aGlzLnNvdXJjZUZyYW1lLnJlc2l6ZSgpOworICAgICAgICB0aGlz
LnNvdXJjZUZyYW1lLnJlc2l6ZSgpOwogICAgIH0sCiAKICAgICBnZXQgc2Nyb2xsVG9wKCkKQEAg
LTgwLDQyICs2NywxMSBAQCBXZWJJbnNwZWN0b3IuU291cmNlVmlldy5wcm90b3R5cGUgPSB7CiAg
ICAgICAgIHRoaXMuc291cmNlRnJhbWUuc2Nyb2xsVG9wID0gc2Nyb2xsVG9wOwogICAgIH0sCiAK
LQotICAgIHNldHVwU291cmNlRnJhbWVJZk5lZWRlZDogZnVuY3Rpb24oKQotICAgIHsKLSAgICAg
ICAgaWYgKCF0aGlzLl9mcmFtZU5lZWRzU2V0dXApCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAg
ICAgICAgZGVsZXRlIHRoaXMuX2ZyYW1lTmVlZHNTZXR1cDsKLSAgICAgICAgdGhpcy5yZXNvdXJj
ZS5yZXF1ZXN0Q29udGVudCh0aGlzLl9jb250ZW50TG9hZGVkLmJpbmQodGhpcykpOwotICAgIH0s
Ci0KICAgICBoYXNDb250ZW50OiBmdW5jdGlvbigpCiAgICAgewogICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICB9LAogCi0gICAgX2NvbnRlbnRMb2FkZWQ6IGZ1bmN0aW9uKGNvbnRlbnQpCi0gICAg
ewotICAgICAgICB2YXIgbWltZVR5cGUgPSB0aGlzLl9jYW5vbmljYWxNaW1lVHlwZSh0aGlzLnJl
c291cmNlKTsKLSAgICAgICAgdGhpcy5zb3VyY2VGcmFtZS5zZXRDb250ZW50KG1pbWVUeXBlLCBj
b250ZW50LCB0aGlzLnJlc291cmNlLnVybCk7Ci0gICAgICAgIHRoaXMuX3NvdXJjZUZyYW1lU2V0
dXBGaW5pc2hlZCgpOwotICAgIH0sCi0KLSAgICBfY2Fub25pY2FsTWltZVR5cGU6IGZ1bmN0aW9u
KHJlc291cmNlKQotICAgIHsKLSAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5Tb3VyY2VWaWV3
LkRlZmF1bHRNSU1FVHlwZUZvclJlc291cmNlVHlwZVtyZXNvdXJjZS50eXBlXSB8fCByZXNvdXJj
ZS5taW1lVHlwZTsKLSAgICB9LAotCi0gICAgX3Jlc291cmNlTG9hZGluZ0ZpbmlzaGVkOiBmdW5j
dGlvbihldmVudCkKLSAgICB7Ci0gICAgICAgIHRoaXMuX2ZyYW1lTmVlZHNTZXR1cCA9IHRydWU7
Ci0gICAgICAgIHRoaXMuX3NvdXJjZUZyYW1lU2V0dXAgPSBmYWxzZTsKLSAgICAgICAgaWYgKHRo
aXMudmlzaWJsZSkKLSAgICAgICAgICAgIHRoaXMuc2V0dXBTb3VyY2VGcmFtZUlmTmVlZGVkKCk7
Ci0gICAgICAgIHRoaXMucmVzb3VyY2UucmVtb3ZlRXZlbnRMaXN0ZW5lcigiZmluaXNoZWQiLCB0
aGlzLl9yZXNvdXJjZUxvYWRpbmdGaW5pc2hlZCwgdGhpcyk7Ci0gICAgfSwKLQogICAgIC8vIFRo
ZSByZXN0IG9mIHRoZSBtZXRob2RzIGluIHRoaXMgcHJvdG90eXBlIG5lZWQgdG8gYmUgZ2VuZXJp
YyBlbm91Z2ggdG8gd29yayB3aXRoIGEgU2NyaXB0Vmlldy4KICAgICAvLyBUaGUgU2NyaXB0Vmll
dyBwcm90b3R5cGUgcHVsbHMgdGhlc2UgbWV0aG9kcyBpbnRvIGl0J3MgcHJvdG90eXBlIHRvIGF2
b2lkIGR1cGxpY2F0ZSBjb2RlLgogCkBAIC0xMzgsNyArOTQsNiBAQCBXZWJJbnNwZWN0b3IuU291
cmNlVmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBpZiAodGhpcy5fc2VhcmNoUmVzdWx0
cykKICAgICAgICAgICAgICAgICBmaW5pc2hlZENhbGxiYWNrKHRoaXMsIHRoaXMuX3NlYXJjaFJl
c3VsdHMubGVuZ3RoKTsKICAgICAgICAgfQotCiAgICAgICAgIHRoaXMuc291cmNlRnJhbWUuZmlu
ZFNlYXJjaE1hdGNoZXMocXVlcnksIGRpZEZpbmRTZWFyY2hNYXRjaGVzLmJpbmQodGhpcykpOwog
ICAgIH0sCiAKQEAgLTE4OCwxMyArMTQzLDExIEBAIFdlYkluc3BlY3Rvci5Tb3VyY2VWaWV3LnBy
b3RvdHlwZSA9IHsKIAogICAgIHJldmVhbExpbmU6IGZ1bmN0aW9uKGxpbmVOdW1iZXIpCiAgICAg
ewotICAgICAgICB0aGlzLnNldHVwU291cmNlRnJhbWVJZk5lZWRlZCgpOwogICAgICAgICB0aGlz
LnNvdXJjZUZyYW1lLnJldmVhbExpbmUobGluZU51bWJlcik7CiAgICAgfSwKIAogICAgIGhpZ2hs
aWdodExpbmU6IGZ1bmN0aW9uKGxpbmVOdW1iZXIpCiAgICAgewotICAgICAgICB0aGlzLnNldHVw
U291cmNlRnJhbWVJZk5lZWRlZCgpOwogICAgICAgICB0aGlzLnNvdXJjZUZyYW1lLmhpZ2hsaWdo
dExpbmUobGluZU51bWJlcik7CiAgICAgfSwKIApAQCAtMjE1LDE3ICsxNjgsNDEgQEAgV2ViSW5z
cGVjdG9yLlNvdXJjZVZpZXcucHJvdG90eXBlID0gewogICAgICAgICAgICAgcmV0dXJuOwogCiAg
ICAgICAgIHRoaXMuc291cmNlRnJhbWUubWFya0FuZFJldmVhbFJhbmdlKGZvdW5kUmFuZ2UpOwot
ICAgIH0sCisgICAgfQorfQogCi0gICAgX3NvdXJjZUZyYW1lU2V0dXBGaW5pc2hlZDogZnVuY3Rp
b24oKQorV2ViSW5zcGVjdG9yLlNvdXJjZVZpZXcucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYklu
c3BlY3Rvci5SZXNvdXJjZVZpZXcucHJvdG90eXBlOworCisKK1dlYkluc3BlY3Rvci5Tb3VyY2VG
cmFtZUNvbnRlbnRQcm92aWRlckZvclJlc291cmNlID0gZnVuY3Rpb24ocmVzb3VyY2UpCit7Cisg
ICAgV2ViSW5zcGVjdG9yLlNvdXJjZUZyYW1lQ29udGVudFByb3ZpZGVyLmNhbGwodGhpcyk7Cisg
ICAgdGhpcy5fcmVzb3VyY2UgPSByZXNvdXJjZTsKK30KKworLy9UaGlzIGlzIGEgbWFwIGZyb20g
cmVzb3VyY2UudHlwZSB0byBtaW1lIHR5cGVzCisvL2ZvdW5kIGluIFdlYkluc3BlY3Rvci5Tb3Vy
Y2VUb2tlbml6ZXIuUmVnaXN0cnkuCitXZWJJbnNwZWN0b3IuU291cmNlRnJhbWVDb250ZW50UHJv
dmlkZXJGb3JSZXNvdXJjZS5EZWZhdWx0TUlNRVR5cGVGb3JSZXNvdXJjZVR5cGUgPSB7CisgMDog
InRleHQvaHRtbCIsCisgMTogInRleHQvY3NzIiwKKyA0OiAidGV4dC9qYXZhc2NyaXB0IgorfQor
CitXZWJJbnNwZWN0b3IuU291cmNlRnJhbWVDb250ZW50UHJvdmlkZXJGb3JSZXNvdXJjZS5wcm90
b3R5cGUgPSB7CisgICAgcmVxdWVzdENvbnRlbnQ6IGZ1bmN0aW9uKGNhbGxiYWNrKQogICAgIHsK
LSAgICAgICAgdGhpcy5fc291cmNlRnJhbWVTZXR1cCA9IHRydWU7Ci0gICAgICAgIHRoaXMucmVz
aXplKCk7Ci0gICAgICAgIGlmICh0aGlzLl9kZWxheWVkRmluZFNlYXJjaE1hdGNoZXMpIHsKLSAg
ICAgICAgICAgIHRoaXMuX2RlbGF5ZWRGaW5kU2VhcmNoTWF0Y2hlcygpOwotICAgICAgICAgICAg
ZGVsZXRlIHRoaXMuX2RlbGF5ZWRGaW5kU2VhcmNoTWF0Y2hlczsKKyAgICAgICAgZnVuY3Rpb24g
Y29udGVudExvYWRlZChjb250ZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgbWltZVR5
cGUgPSBXZWJJbnNwZWN0b3IuU291cmNlRnJhbWVDb250ZW50UHJvdmlkZXJGb3JSZXNvdXJjZS5E
ZWZhdWx0TUlNRVR5cGVGb3JSZXNvdXJjZVR5cGVbdGhpcy5fcmVzb3VyY2UudHlwZV0gfHwgdGhp
cy5fcmVzb3VyY2UubWltZVR5cGU7CisgICAgICAgICAgICBjYWxsYmFjayhtaW1lVHlwZSwgY29u
dGVudCk7CiAgICAgICAgIH0KKyAgICAgICAgdGhpcy5fcmVzb3VyY2UucmVxdWVzdENvbnRlbnQo
Y29udGVudExvYWRlZC5iaW5kKHRoaXMpKTsKKyAgICB9LAorCisgICAgc2NyaXB0czogZnVuY3Rp
b24oKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1vZGVsLnNj
cmlwdHNGb3JVUkwodGhpcy5fcmVzb3VyY2UudXJsKTsKICAgICB9CiB9CiAKLVdlYkluc3BlY3Rv
ci5Tb3VyY2VWaWV3LnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuUmVzb3VyY2VW
aWV3LnByb3RvdHlwZTsKK1dlYkluc3BlY3Rvci5Tb3VyY2VGcmFtZUNvbnRlbnRQcm92aWRlckZv
clJlc291cmNlLnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuU291cmNlRnJhbWVD
b250ZW50UHJvdmlkZXIucHJvdG90eXBlOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>78525</attachid>
            <date>2011-01-11 06:52:36 -0800</date>
            <delta_ts>2011-01-17 01:37:53 -0800</delta_ts>
            <desc>Rebase.</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>19345</size>
            <attacher name="Pavel Podivilov">podivilov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAwNDQxZWI4Li5kMTM2NTY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsNDkg
QEAKIDIwMTEtMDEtMTEgIFBhdmVsIFBvZGl2aWxvdiAgPHBvZGl2aWxvdkBjaHJvbWl1bS5vcmc+
CiAKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViIElu
c3BlY3RvcjogcmVmYWN0b3Jpbmc6IGVuY2Fwc3VsYXRlIGxhenkgaW5pdGlhbGl6YXRpb24gb2Yg
U291cmNlRnJhbWUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD01MTczOAorCisgICAgICAgIEV4dHJhY3QgY29udGVudCBsb2FkaW5nIGxvZ2ljIGZyb20g
U291cmNlVmlldyBhbmQgU2NyaXB0VmlldyB0byBDb250ZW50UHJvdmlkZXIgaW1wbGVtZW50YXRp
b25zLgorICAgICAgICBQYXNzIENvbnRlbnRQcm92aWRlciBpbiBTb3VyY2VGcmFtZSBjb25zdHJ1
Y3RvciB0byBhbGxvdyBTb3VyY2VGcmFtZSBtYW5hZ2UgaXQncyBsYXp5IGluaXRpYWxpemF0aW9u
LgorCisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRWaWV3LmpzOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlNjcmlwdFZpZXcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNvdXJj
ZUZyYW1lQ29udGVudFByb3ZpZGVyRm9yU2NyaXB0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5T
b3VyY2VGcmFtZUNvbnRlbnRQcm92aWRlckZvclNjcmlwdC5wcm90b3R5cGUucmVxdWVzdENvbnRl
bnQuY29udGVudExvYWRlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU291cmNlRnJhbWVDb250
ZW50UHJvdmlkZXJGb3JTY3JpcHQucHJvdG90eXBlLnJlcXVlc3RDb250ZW50KToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5Tb3VyY2VGcmFtZUNvbnRlbnRQcm92aWRlckZvclNjcmlwdC5wcm90b3R5
cGUuc2NyaXB0cyk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRzUGFuZWwu
anM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsLnByb3RvdHlwZS5fYWRkU2Ny
aXB0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwucHJvdG90eXBlLnNvdXJj
ZUZyYW1lRm9yU2NyaXB0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwucHJv
dG90eXBlLl9zb3VyY2VGcmFtZUZvclJlc291cmNlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJv
bnQtZW5kL1NvdXJjZUZyYW1lLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNvdXJjZUZyYW1l
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Tb3VyY2VGcmFtZS5wcm90b3R5cGUuc2V0IHZpc2li
bGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNvdXJjZUZyYW1lLnByb3RvdHlwZS5fY3JlYXRl
VGV4dFZpZXdlcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU291cmNlRnJhbWUucHJvdG90eXBl
Ll9icmVha3BvaW50QWRkZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNvdXJjZUZyYW1lLnBy
b3RvdHlwZS5fYnJlYWtwb2ludHMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNvdXJjZUZyYW1l
LnByb3RvdHlwZS5fc291cmNlSURGb3JMaW5lKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Tb3Vy
Y2VGcmFtZS5wcm90b3R5cGUuX3NvdXJjZUlEU2V0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5T
b3VyY2VGcmFtZUNvbnRlbnRQcm92aWRlcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU291cmNl
RnJhbWVDb250ZW50UHJvdmlkZXIucHJvdG90eXBlLnJlcXVlc3RDb250ZW50KToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5Tb3VyY2VGcmFtZUNvbnRlbnRQcm92aWRlci5wcm90b3R5cGUuc2NyaXB0
cyk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9Tb3VyY2VWaWV3LmpzOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlNvdXJjZVZpZXcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNvdXJj
ZVZpZXcucHJvdG90eXBlLnNob3cpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNvdXJjZVZpZXcu
cHJvdG90eXBlLnJlc2l6ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU291cmNlVmlldy5wcm90
b3R5cGUucGVyZm9ybVNlYXJjaC5kaWRGaW5kU2VhcmNoTWF0Y2hlcyk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuU291cmNlVmlldy5wcm90b3R5cGUucGVyZm9ybVNlYXJjaCk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuU291cmNlVmlldy5wcm90b3R5cGUucmV2ZWFsTGluZSk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuU291cmNlVmlldy5wcm90b3R5cGUuaGlnaGxpZ2h0TGluZSk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuU291cmNlVmlldy5wcm90b3R5cGUuX2p1bXBUb1NlYXJjaFJlc3VsdCk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuU291cmNlRnJhbWVDb250ZW50UHJvdmlkZXJGb3JSZXNv
dXJjZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU291cmNlRnJhbWVDb250ZW50UHJvdmlkZXJG
b3JSZXNvdXJjZS5wcm90b3R5cGUucmVxdWVzdENvbnRlbnQpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLlNvdXJjZUZyYW1lQ29udGVudFByb3ZpZGVyRm9yUmVzb3VyY2UucHJvdG90eXBlLnNjcmlw
dHMpOgorCisyMDExLTAxLTExICBQYXZlbCBQb2Rpdmlsb3YgIDxwb2Rpdmlsb3ZAY2hyb21pdW0u
b3JnPgorCiAgICAgICAgIFJldmlld2VkIGJ5IFBhdmVsIEZlbGRtYW4uCiAKICAgICAgICAgV2Vi
IEluc3BlY3RvcjogcmVjcmVhdGUgc2NyaXB0IHZpZXcgYWZ0ZXIgbGl2ZSBlZGl0LgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRWaWV3LmpzIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRWaWV3LmpzCmluZGV4IGYx
MzU0NzUuLjM3ZjEyMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvU2NyaXB0Vmlldy5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL1NjcmlwdFZpZXcuanMKQEAgLTI5LDY0ICsyOSwxNSBAQCBXZWJJbnNwZWN0b3IuU2NyaXB0
VmlldyA9IGZ1bmN0aW9uKHNjcmlwdCkKIAogICAgIHRoaXMuZWxlbWVudC5hZGRTdHlsZUNsYXNz
KCJzY3JpcHQtdmlldyIpOwogCi0gICAgdGhpcy5zY3JpcHQgPSBzY3JpcHQ7Ci0KLSAgICB0aGlz
Ll9mcmFtZU5lZWRzU2V0dXAgPSB0cnVlOwotICAgIHRoaXMuX3NvdXJjZUZyYW1lU2V0dXAgPSBm
YWxzZTsKLSAgICB0aGlzLnNvdXJjZUZyYW1lID0gbmV3IFdlYkluc3BlY3Rvci5Tb3VyY2VGcmFt
ZSh0aGlzLmVsZW1lbnQsIFtzY3JpcHRdLCBXZWJJbnNwZWN0b3IucGFuZWxzLnNjcmlwdHMuY2Fu
RWRpdFNjcmlwdHMoKSk7CisgICAgdmFyIGNvbnRlbnRQcm92aWRlciA9IG5ldyBXZWJJbnNwZWN0
b3IuU291cmNlRnJhbWVDb250ZW50UHJvdmlkZXJGb3JTY3JpcHQoc2NyaXB0KTsKKyAgICB0aGlz
LnNvdXJjZUZyYW1lID0gbmV3IFdlYkluc3BlY3Rvci5Tb3VyY2VGcmFtZSh0aGlzLmVsZW1lbnQs
IGNvbnRlbnRQcm92aWRlciwgIiIsIFdlYkluc3BlY3Rvci5wYW5lbHMuc2NyaXB0cy5jYW5FZGl0
U2NyaXB0cygpKTsKIH0KIAogV2ViSW5zcGVjdG9yLlNjcmlwdFZpZXcucHJvdG90eXBlID0gewot
ICAgIHNob3c6IGZ1bmN0aW9uKHBhcmVudEVsZW1lbnQpCi0gICAgewotICAgICAgICBXZWJJbnNw
ZWN0b3IuVmlldy5wcm90b3R5cGUuc2hvdy5jYWxsKHRoaXMsIHBhcmVudEVsZW1lbnQpOwotICAg
ICAgICB0aGlzLnNldHVwU291cmNlRnJhbWVJZk5lZWRlZCgpOwotICAgICAgICB0aGlzLnNvdXJj
ZUZyYW1lLnZpc2libGUgPSB0cnVlOwotICAgICAgICB0aGlzLnJlc2l6ZSgpOwotICAgIH0sCi0K
LSAgICBzZXR1cFNvdXJjZUZyYW1lSWZOZWVkZWQ6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAg
IGlmICghdGhpcy5fZnJhbWVOZWVkc1NldHVwKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICBkZWxldGUgdGhpcy5fZnJhbWVOZWVkc1NldHVwOwotCi0gICAgICAgIHRoaXMuYXR0YWNoKCk7
Ci0KLSAgICAgICAgaWYgKHRoaXMuc2NyaXB0LnNvdXJjZSkKLSAgICAgICAgICAgIHRoaXMuX3Nv
dXJjZUZyYW1lU2V0dXBGaW5pc2hlZCgpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBJbnNw
ZWN0b3JCYWNrZW5kLmdldFNjcmlwdFNvdXJjZSh0aGlzLnNjcmlwdC5zb3VyY2VJRCwgdGhpcy5f
ZGlkR2V0U2NyaXB0U291cmNlLmJpbmQodGhpcykpOwotICAgIH0sCi0KLSAgICBfZGlkR2V0U2Ny
aXB0U291cmNlOiBmdW5jdGlvbihzb3VyY2UpCi0gICAgewotICAgICAgICB0aGlzLnNjcmlwdC5z
b3VyY2UgPSBzb3VyY2UgfHwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCI8c291cmNlIGlzIG5vdCBh
dmFpbGFibGU+Iik7Ci0gICAgICAgIHRoaXMuX3NvdXJjZUZyYW1lU2V0dXBGaW5pc2hlZCgpOwot
ICAgIH0sCi0KLSAgICBfc291cmNlRnJhbWVTZXR1cEZpbmlzaGVkOiBmdW5jdGlvbigpCi0gICAg
ewotICAgICAgICB0aGlzLnNvdXJjZUZyYW1lLnNldENvbnRlbnQoInRleHQvamF2YXNjcmlwdCIs
IHRoaXMuX3ByZXBlbmRXaGl0ZXNwYWNlKHRoaXMuc2NyaXB0LnNvdXJjZSkpOwotICAgICAgICB0
aGlzLl9zb3VyY2VGcmFtZVNldHVwID0gdHJ1ZTsKLSAgICB9LAotCi0gICAgX3ByZXBlbmRXaGl0
ZXNwYWNlOiBmdW5jdGlvbihjb250ZW50KSB7Ci0gICAgICAgIHZhciBwcmVmaXggPSAiIjsKLSAg
ICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLnNjcmlwdC5zdGFydGluZ0xpbmUgLSAxOyAr
K2kpCi0gICAgICAgICAgICBwcmVmaXggKz0gIlxuIjsKLSAgICAgICAgcmV0dXJuIHByZWZpeCAr
IGNvbnRlbnQ7Ci0gICAgfSwKLQotICAgIGF0dGFjaDogZnVuY3Rpb24oKQotICAgIHsKLSAgICAg
ICAgaWYgKCF0aGlzLmVsZW1lbnQucGFyZW50Tm9kZSkKLSAgICAgICAgICAgIGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJzY3JpcHQtcmVzb3VyY2Utdmlld3MiKS5hcHBlbmRDaGlsZCh0aGlzLmVs
ZW1lbnQpOwotICAgIH0sCi0KICAgICAvLyBUaGUgZm9sbG93aW5nIG1ldGhvZHMgYXJlIHB1bGxl
ZCBmcm9tIFNvdXJjZVZpZXcsIHNpbmNlIHRoZXkgYXJlCiAgICAgLy8gZ2VuZXJpYyBhbmQgd29y
ayB3aXRoIFNjcmlwdFZpZXcganVzdCBmaW5lLgogCisgICAgc2hvdzogV2ViSW5zcGVjdG9yLlNv
dXJjZVZpZXcucHJvdG90eXBlLnNob3csCiAgICAgaGlkZTogV2ViSW5zcGVjdG9yLlNvdXJjZVZp
ZXcucHJvdG90eXBlLmhpZGUsCiAgICAgcmV2ZWFsTGluZTogV2ViSW5zcGVjdG9yLlNvdXJjZVZp
ZXcucHJvdG90eXBlLnJldmVhbExpbmUsCiAgICAgaGlnaGxpZ2h0TGluZTogV2ViSW5zcGVjdG9y
LlNvdXJjZVZpZXcucHJvdG90eXBlLmhpZ2hsaWdodExpbmUsCkBAIC0xMDUsMyArNTYsNDIgQEAg
V2ViSW5zcGVjdG9yLlNjcmlwdFZpZXcucHJvdG90eXBlID0gewogfQogCiBXZWJJbnNwZWN0b3Iu
U2NyaXB0Vmlldy5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLlZpZXcucHJvdG90
eXBlOworCisKK1dlYkluc3BlY3Rvci5Tb3VyY2VGcmFtZUNvbnRlbnRQcm92aWRlckZvclNjcmlw
dCA9IGZ1bmN0aW9uKHNjcmlwdCkKK3sKKyAgICBXZWJJbnNwZWN0b3IuU291cmNlRnJhbWVDb250
ZW50UHJvdmlkZXIuY2FsbCh0aGlzKTsKKyAgICB0aGlzLl9zY3JpcHQgPSBzY3JpcHQ7Cit9CisK
K1dlYkluc3BlY3Rvci5Tb3VyY2VGcmFtZUNvbnRlbnRQcm92aWRlckZvclNjcmlwdC5wcm90b3R5
cGUgPSB7CisgICAgcmVxdWVzdENvbnRlbnQ6IGZ1bmN0aW9uKGNhbGxiYWNrKQorICAgIHsKKyAg
ICAgICAgaWYgKHRoaXMuX3NjcmlwdC5zb3VyY2UpIHsKKyAgICAgICAgICAgIGNhbGxiYWNrKCJ0
ZXh0L2phdmFzY3JpcHQiLCB0aGlzLl9zY3JpcHQuc291cmNlKTsKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNvbnRlbnRMb2FkZWQoY29udGVudCkK
KyAgICAgICAgeworICAgICAgICAgICAgdmFyIHNvdXJjZTsKKyAgICAgICAgICAgIGlmIChjb250
ZW50KSB7CisgICAgICAgICAgICAgICAgdmFyIHByZWZpeCA9ICIiOworICAgICAgICAgICAgICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5fc2NyaXB0LnN0YXJ0aW5nTGluZSAtIDE7ICsraSkK
KyAgICAgICAgICAgICAgICAgICAgcHJlZml4ICs9ICJcbiI7CisgICAgICAgICAgICAgICAgc291
cmNlID0gcHJlZml4ICsgY29udGVudDsKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAg
ICAgIHNvdXJjZSA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiPHNvdXJjZSBpcyBub3QgYXZhaWxh
YmxlPiIpOworICAgICAgICAgICAgdGhpcy5fc2NyaXB0LnNvdXJjZSA9IHNvdXJjZTsKKyAgICAg
ICAgICAgIGNhbGxiYWNrKCJ0ZXh0L2phdmFzY3JpcHQiLCBzb3VyY2UpOworICAgICAgICB9Cisg
ICAgICAgIEluc3BlY3RvckJhY2tlbmQuZ2V0U2NyaXB0U291cmNlKHRoaXMuX3NjcmlwdC5zb3Vy
Y2VJRCwgY29udGVudExvYWRlZC5iaW5kKHRoaXMpKTsKKyAgICB9LAorCisgICAgc2NyaXB0czog
ZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFt0aGlzLl9zY3JpcHRdOworICAgIH0K
K30KKworV2ViSW5zcGVjdG9yLlNvdXJjZUZyYW1lQ29udGVudFByb3ZpZGVyRm9yU2NyaXB0LnBy
b3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuU291cmNlRnJhbWVDb250ZW50UHJvdmlk
ZXIucHJvdG90eXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9TY3JpcHRzUGFuZWwuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L1NjcmlwdHNQYW5lbC5qcwppbmRleCBhMDQ5NzBlLi44MmMxYjM5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NjcmlwdHNQYW5lbC5qcworKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NjcmlwdHNQYW5lbC5qcwpAQCAtMjU2LDkg
KzI1Niw2IEBAIFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwucHJvdG90eXBlID0gewogICAgICAg
ICAgICAgaWYgKHJlc291cmNlLmZpbmlzaGVkKSB7CiAgICAgICAgICAgICAgICAgLy8gUmVzb3Vy
Y2UgaXMgZmluaXNoZWQsIGJpbmQgdGhlIHNjcmlwdCByaWdodCBhd2F5LgogICAgICAgICAgICAg
ICAgIHNjcmlwdC5yZXNvdXJjZSA9IHJlc291cmNlOwotICAgICAgICAgICAgICAgIHZhciB2aWV3
ID0gV2ViSW5zcGVjdG9yLlJlc291cmNlVmlldy5leGlzdGluZ1Jlc291cmNlVmlld0ZvclJlc291
cmNlKHJlc291cmNlKTsKLSAgICAgICAgICAgICAgICBpZiAodmlldyAmJiB2aWV3LnNvdXJjZUZy
YW1lKQotICAgICAgICAgICAgICAgICAgICB2aWV3LnNvdXJjZUZyYW1lLmFkZFNjcmlwdChzY3Jp
cHQpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAvLyBSZXNvdXJjZSBp
cyBub3QgZmluaXNoZWQsIGJpbmQgdGhlIHNjcmlwdCBsYXRlci4KICAgICAgICAgICAgICAgICBp
ZiAoIXJlc291cmNlLl9zY3JpcHRzUGVuZGluZ1Jlc291cmNlTG9hZCkgewpAQCAtNTM2LDcgKzUz
Myw2IEBAIFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICBp
ZiAoIXRoaXMuZWxlbWVudC5wYXJlbnROb2RlKQogICAgICAgICAgICAgdGhpcy5hdHRhY2goKTsK
IAotICAgICAgICB2aWV3LnNldHVwU291cmNlRnJhbWVJZk5lZWRlZCgpOwogICAgICAgICByZXR1
cm4gdmlldy5zb3VyY2VGcmFtZTsKICAgICB9LAogCkBAIC01NTQsMTAgKzU1MCw2IEBAIFdlYklu
c3BlY3Rvci5TY3JpcHRzUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICBpZiAoIXZpZXcpCiAg
ICAgICAgICAgICByZXR1cm4gbnVsbDsKIAotICAgICAgICBpZiAoIXZpZXcuc2V0dXBTb3VyY2VG
cmFtZUlmTmVlZGVkKQotICAgICAgICAgICAgcmV0dXJuIG51bGw7Ci0KLSAgICAgICAgdmlldy5z
ZXR1cFNvdXJjZUZyYW1lSWZOZWVkZWQoKTsKICAgICAgICAgcmV0dXJuIHZpZXcuc291cmNlRnJh
bWU7CiAgICAgfSwKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9Tb3VyY2VGcmFtZS5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
U291cmNlRnJhbWUuanMKaW5kZXggNzRjYzg1Yy4uYTgwYTQ2NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Tb3VyY2VGcmFtZS5qcworKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NvdXJjZUZyYW1lLmpzCkBAIC0yOCwxMiArMjgs
MTEgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLlNvdXJjZUZyYW1lID0g
ZnVuY3Rpb24ocGFyZW50RWxlbWVudCwgc2NyaXB0cywgY2FuRWRpdFNjcmlwdHMpCitXZWJJbnNw
ZWN0b3IuU291cmNlRnJhbWUgPSBmdW5jdGlvbihwYXJlbnRFbGVtZW50LCBjb250ZW50UHJvdmlk
ZXIsIHVybCwgY2FuRWRpdFNjcmlwdHMpCiB7CiAgICAgdGhpcy5fcGFyZW50RWxlbWVudCA9IHBh
cmVudEVsZW1lbnQ7Ci0gICAgdGhpcy5fc2NyaXB0cyA9IHt9OwotICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgc2NyaXB0cy5sZW5ndGg7ICsraSkKLSAgICAgICAgdGhpcy5fc2NyaXB0c1tzY3JpcHRz
W2ldLnNvdXJjZUlEXSA9IHNjcmlwdHNbaV07CisgICAgdGhpcy5fY29udGVudFByb3ZpZGVyID0g
Y29udGVudFByb3ZpZGVyOworICAgIHRoaXMuX3VybCA9IHVybDsKICAgICB0aGlzLl9jYW5FZGl0
U2NyaXB0cyA9IGNhbkVkaXRTY3JpcHRzOwogCiAgICAgdGhpcy5fdGV4dE1vZGVsID0gbmV3IFdl
Ykluc3BlY3Rvci5UZXh0RWRpdG9yTW9kZWwoKTsKQEAgLTQzLDcgKzQyLDYgQEAgV2ViSW5zcGVj
dG9yLlNvdXJjZUZyYW1lID0gZnVuY3Rpb24ocGFyZW50RWxlbWVudCwgc2NyaXB0cywgY2FuRWRp
dFNjcmlwdHMpCiAgICAgdGhpcy5fcm93TWVzc2FnZXMgPSB7fTsKICAgICB0aGlzLl9tZXNzYWdl
QnViYmxlcyA9IHt9OwogCi0gICAgdGhpcy5fbG9hZGVkID0gZmFsc2U7CiAgICAgdGhpcy5fcG9w
b3Zlck9iamVjdEdyb3VwID0gInBvcG92ZXIiOwogfQogCkBAIC01MSwxNCArNDksMTggQEAgV2Vi
SW5zcGVjdG9yLlNvdXJjZUZyYW1lLnByb3RvdHlwZSA9IHsKIAogICAgIHNldCB2aXNpYmxlKHZp
c2libGUpCiAgICAgewotICAgICAgICB0aGlzLl92aXNpYmxlID0gdmlzaWJsZTsKLSAgICAgICAg
dGhpcy5fY3JlYXRlVmlld2VySWZOZWVkZWQoKTsKKyAgICAgICAgaWYgKCF0aGlzLl9jb250ZW50
UmVxdWVzdGVkKSB7CisgICAgICAgICAgICB0aGlzLl9jb250ZW50UmVxdWVzdGVkID0gdHJ1ZTsK
KyAgICAgICAgICAgIHRoaXMuX2NvbnRlbnRQcm92aWRlci5yZXF1ZXN0Q29udGVudCh0aGlzLl9j
cmVhdGVUZXh0Vmlld2VyLmJpbmQodGhpcykpOworICAgICAgICB9CiAKICAgICAgICAgaWYgKHZp
c2libGUpIHsKICAgICAgICAgICAgIGlmICh0aGlzLl90ZXh0Vmlld2VyICYmIHRoaXMuX3Njcm9s
bFRvcCkKICAgICAgICAgICAgICAgICB0aGlzLl90ZXh0Vmlld2VyLmVsZW1lbnQuc2Nyb2xsVG9w
ID0gdGhpcy5fc2Nyb2xsVG9wOwogICAgICAgICAgICAgaWYgKHRoaXMuX3RleHRWaWV3ZXIgJiYg
dGhpcy5fc2Nyb2xsTGVmdCkKICAgICAgICAgICAgICAgICB0aGlzLl90ZXh0Vmlld2VyLmVsZW1l
bnQuc2Nyb2xsTGVmdCA9IHRoaXMuX3Njcm9sbExlZnQ7CisgICAgICAgICAgICBpZiAodGhpcy5f
dGV4dFZpZXdlcikKKyAgICAgICAgICAgICAgICB0aGlzLl90ZXh0Vmlld2VyLnJlc2l6ZSgpOwog
ICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgdGhpcy5faGlkZVBvcHVwKCk7CiAgICAgICAg
ICAgICBpZiAodGhpcy5fdGV4dFZpZXdlcikgewpAQCAtMTE0LDExICsxMTYsNiBAQCBXZWJJbnNw
ZWN0b3IuU291cmNlRnJhbWUucHJvdG90eXBlID0gewogICAgICAgICAgICAgdGhpcy5fYWRkTWVz
c2FnZVRvU291cmNlKG1zZyk7CiAgICAgfSwKIAotICAgIGFkZFNjcmlwdDogZnVuY3Rpb24oc2Ny
aXB0KQotICAgIHsKLSAgICAgICAgdGhpcy5fc2NyaXB0c1tzY3JpcHQuc291cmNlSURdID0gc2Ny
aXB0OwotICAgIH0sCi0KICAgICBjbGVhck1lc3NhZ2VzOiBmdW5jdGlvbigpCiAgICAgewogICAg
ICAgICBmb3IgKHZhciBsaW5lIGluIHRoaXMuX21lc3NhZ2VCdWJibGVzKSB7CkBAIC0xMzksMTUg
KzEzNiw2IEBAIFdlYkluc3BlY3Rvci5Tb3VyY2VGcmFtZS5wcm90b3R5cGUgPSB7CiAgICAgICAg
ICAgICB0aGlzLl90ZXh0Vmlld2VyLnJldmFsaWRhdGVEZWNvcmF0aW9uc0FuZFBhaW50KCk7CiAg
ICAgfSwKIAotICAgIHNldENvbnRlbnQ6IGZ1bmN0aW9uKG1pbWVUeXBlLCBjb250ZW50LCB1cmwp
Ci0gICAgewotICAgICAgICB0aGlzLl9sb2FkZWQgPSB0cnVlOwotICAgICAgICB0aGlzLl90ZXh0
TW9kZWwuc2V0VGV4dChudWxsLCBjb250ZW50KTsKLSAgICAgICAgdGhpcy5fbWltZVR5cGUgPSBt
aW1lVHlwZTsKLSAgICAgICAgdGhpcy5fdXJsID0gdXJsOwotICAgICAgICB0aGlzLl9jcmVhdGVW
aWV3ZXJJZk5lZWRlZCgpOwotICAgIH0sCi0KICAgICBnZXQgdGV4dE1vZGVsKCkKICAgICB7CiAg
ICAgICAgIHJldHVybiB0aGlzLl90ZXh0TW9kZWw7CkBAIC0xODAsMTAgKzE2OCw5IEBAIFdlYklu
c3BlY3Rvci5Tb3VyY2VGcmFtZS5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBkZWxldGUgdGhp
cy5fbGluZVRvSGlnaGxpZ2h0OwogICAgIH0sCiAKLSAgICBfY3JlYXRlVmlld2VySWZOZWVkZWQ6
IGZ1bmN0aW9uKCkKKyAgICBfY3JlYXRlVGV4dFZpZXdlcjogZnVuY3Rpb24obWltZVR5cGUsIGNv
bnRlbnQpCiAgICAgewotICAgICAgICBpZiAoIXRoaXMuX3Zpc2libGUgfHwgIXRoaXMuX2xvYWRl
ZCB8fCB0aGlzLl90ZXh0Vmlld2VyKQotICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB0aGlz
Ll90ZXh0TW9kZWwuc2V0VGV4dChudWxsLCBjb250ZW50KTsKIAogICAgICAgICB0aGlzLl90ZXh0
Vmlld2VyID0gbmV3IFdlYkluc3BlY3Rvci5UZXh0Vmlld2VyKHRoaXMuX3RleHRNb2RlbCwgV2Vi
SW5zcGVjdG9yLnBsYXRmb3JtLCB0aGlzLl91cmwpOwogICAgICAgICB2YXIgZWxlbWVudCA9IHRo
aXMuX3RleHRWaWV3ZXIuZWxlbWVudDsKQEAgLTE5NSw3ICsxODIsNyBAQCBXZWJJbnNwZWN0b3Iu
U291cmNlRnJhbWUucHJvdG90eXBlID0gewogCiAgICAgICAgIHRoaXMuX3RleHRWaWV3ZXIuYmVn
aW5VcGRhdGVzKCk7CiAKLSAgICAgICAgdGhpcy5fdGV4dFZpZXdlci5taW1lVHlwZSA9IHRoaXMu
X21pbWVUeXBlOworICAgICAgICB0aGlzLl90ZXh0Vmlld2VyLm1pbWVUeXBlID0gbWltZVR5cGU7
CiAgICAgICAgIHRoaXMuX2FkZEV4aXN0aW5nTWVzc2FnZXNUb1NvdXJjZSgpOwogICAgICAgICB0
aGlzLl91cGRhdGVFeGVjdXRpb25MaW5lKCk7CiAgICAgICAgIHRoaXMuX3VwZGF0ZURpZmZEZWNv
cmF0aW9ucygpOwpAQCAtNDE4LDcgKzQwNSw3IEBAIFdlYkluc3BlY3Rvci5Tb3VyY2VGcmFtZS5w
cm90b3R5cGUgPSB7CiAgICAgewogICAgICAgICB2YXIgYnJlYWtwb2ludCA9IGV2ZW50LmRhdGE7
CiAKLSAgICAgICAgaWYgKGJyZWFrcG9pbnQuc291cmNlSUQgaW4gdGhpcy5fc2NyaXB0cykKKyAg
ICAgICAgaWYgKGJyZWFrcG9pbnQuc291cmNlSUQgaW4gdGhpcy5fc291cmNlSURTZXQoKSkKICAg
ICAgICAgICAgIHRoaXMuX2FkZEJyZWFrcG9pbnQoYnJlYWtwb2ludCk7CiAgICAgfSwKIApAQCAt
ODQ1LDggKzgzMiw4IEBAIFdlYkluc3BlY3Rvci5Tb3VyY2VGcmFtZS5wcm90b3R5cGUgPSB7CiAK
ICAgICBfYnJlYWtwb2ludHM6IGZ1bmN0aW9uKCkKICAgICB7Ci0gICAgICAgIHZhciBzY3JpcHRz
ID0gdGhpcy5fc2NyaXB0czsKLSAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1v
ZGVsLnF1ZXJ5QnJlYWtwb2ludHMoZnVuY3Rpb24oYikgeyByZXR1cm4gYi5zb3VyY2VJRCBpbiBz
Y3JpcHRzOyB9KTsKKyAgICAgICAgdmFyIHNvdXJjZUlEU2V0ID0gdGhpcy5fc291cmNlSURTZXQo
KTsKKyAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1vZGVsLnF1ZXJ5QnJlYWtw
b2ludHMoZnVuY3Rpb24oYikgeyByZXR1cm4gYi5zb3VyY2VJRCBpbiBzb3VyY2VJRFNldDsgfSk7
CiAgICAgfSwKIAogICAgIF9maW5kQnJlYWtwb2ludDogZnVuY3Rpb24obGluZU51bWJlcikKQEAg
LTg1OSwxNSArODQ2LDQyIEBAIFdlYkluc3BlY3Rvci5Tb3VyY2VGcmFtZS5wcm90b3R5cGUgPSB7
CiAgICAgewogICAgICAgICB2YXIgc291cmNlSURGb3JMaW5lID0gbnVsbDsKICAgICAgICAgdmFy
IGNsb3Nlc3RTdGFydGluZ0xpbmUgPSAwOwotICAgICAgICBmb3IgKHZhciBzb3VyY2VJRCBpbiB0
aGlzLl9zY3JpcHRzKSB7Ci0gICAgICAgICAgICB2YXIgc2NyaXB0ID0gdGhpcy5fc2NyaXB0c1tz
b3VyY2VJRF07Ci0gICAgICAgICAgICBpZiAoc2NyaXB0LnN0YXJ0aW5nTGluZSA8PSBsaW5lTnVt
YmVyICYmIHNjcmlwdC5zdGFydGluZ0xpbmUgPj0gY2xvc2VzdFN0YXJ0aW5nTGluZSkgewotICAg
ICAgICAgICAgICAgIGNsb3Nlc3RTdGFydGluZ0xpbmUgPSBzY3JpcHQuc3RhcnRpbmdMaW5lOwot
ICAgICAgICAgICAgICAgIHNvdXJjZUlERm9yTGluZSA9IHNvdXJjZUlEOworICAgICAgICB2YXIg
c2NyaXB0cyA9IHRoaXMuX2NvbnRlbnRQcm92aWRlci5zY3JpcHRzKCk7CisgICAgICAgIGZvciAo
dmFyIGkgPSAwOyBpIDwgc2NyaXB0cy5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgdmFyIHN0
YXJ0aW5nTGluZSA9IHNjcmlwdHNbaV0uc3RhcnRpbmdMaW5lOworICAgICAgICAgICAgaWYgKHN0
YXJ0aW5nTGluZSA8PSBsaW5lTnVtYmVyICYmIHN0YXJ0aW5nTGluZSA+PSBjbG9zZXN0U3RhcnRp
bmdMaW5lKSB7CisgICAgICAgICAgICAgICAgY2xvc2VzdFN0YXJ0aW5nTGluZSA9IHN0YXJ0aW5n
TGluZTsKKyAgICAgICAgICAgICAgICBzb3VyY2VJREZvckxpbmUgPSBzY3JpcHRzW2ldLnNvdXJj
ZUlEOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIHJldHVybiBzb3VyY2VJREZv
ckxpbmU7CisgICAgfSwKKworICAgIF9zb3VyY2VJRFNldDogZnVuY3Rpb24oKQorICAgIHsKKyAg
ICAgICAgdmFyIHNjcmlwdHMgPSB0aGlzLl9jb250ZW50UHJvdmlkZXIuc2NyaXB0cygpOworICAg
ICAgICB2YXIgc291cmNlSURTZXQgPSB7fTsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBz
Y3JpcHRzLmxlbmd0aDsgKytpKQorICAgICAgICAgICAgc291cmNlSURTZXRbc2NyaXB0c1tpXS5z
b3VyY2VJRF0gPSB0cnVlOworICAgICAgICByZXR1cm4gc291cmNlSURTZXQ7CiAgICAgfQogfQog
CiBXZWJJbnNwZWN0b3IuU291cmNlRnJhbWUucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3Bl
Y3Rvci5PYmplY3QucHJvdG90eXBlOworCisKK1dlYkluc3BlY3Rvci5Tb3VyY2VGcmFtZUNvbnRl
bnRQcm92aWRlciA9IGZ1bmN0aW9uKCkKK3sKK30KKworV2ViSW5zcGVjdG9yLlNvdXJjZUZyYW1l
Q29udGVudFByb3ZpZGVyLnByb3RvdHlwZSA9IHsKKyAgICByZXF1ZXN0Q29udGVudDogZnVuY3Rp
b24oY2FsbGJhY2spCisgICAgeworICAgICAgICAvLyBTaG91bGQgYmUgaW1wbGVtZW50ZWQgYnkg
c3ViY2xhc3Nlcy4KKyAgICB9LAorCisgICAgc2NyaXB0czogZnVuY3Rpb24oKQorICAgIHsKKyAg
ICAgICAgLy8gU2hvdWxkIGJlIGltcGxlbWVudGVkIGJ5IHN1YmNsYXNzZXMuCisgICAgfQorfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Tb3VyY2VWaWV3
LmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Tb3VyY2VWaWV3LmpzCmlu
ZGV4IDFlNGVmNWQuLmU3OGZmOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvU291cmNlVmlldy5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL1NvdXJjZVZpZXcuanMKQEAgLTMyLDI4ICszMiwxNiBAQCBXZWJJbnNwZWN0b3Iu
U291cmNlVmlldyA9IGZ1bmN0aW9uKHJlc291cmNlKQogCiAgICAgdGhpcy5lbGVtZW50LmFkZFN0
eWxlQ2xhc3MoInNvdXJjZSIpOwogCi0gICAgdmFyIHNjcmlwdHMgPSBXZWJJbnNwZWN0b3IuZGVi
dWdnZXJNb2RlbC5zY3JpcHRzRm9yVVJMKHJlc291cmNlLnVybCk7CisgICAgdmFyIGNvbnRlbnRQ
cm92aWRlciA9IG5ldyBXZWJJbnNwZWN0b3IuU291cmNlRnJhbWVDb250ZW50UHJvdmlkZXJGb3JS
ZXNvdXJjZShyZXNvdXJjZSk7CiAgICAgdmFyIGNhbkVkaXRTY3JpcHRzID0gV2ViSW5zcGVjdG9y
LnBhbmVscy5zY3JpcHRzLmNhbkVkaXRTY3JpcHRzKCkgJiYgcmVzb3VyY2UudHlwZSA9PT0gV2Vi
SW5zcGVjdG9yLlJlc291cmNlLlR5cGUuU2NyaXB0OwotICAgIHRoaXMuc291cmNlRnJhbWUgPSBu
ZXcgV2ViSW5zcGVjdG9yLlNvdXJjZUZyYW1lKHRoaXMuZWxlbWVudCwgc2NyaXB0cywgY2FuRWRp
dFNjcmlwdHMpOwotICAgIHJlc291cmNlLmFkZEV2ZW50TGlzdGVuZXIoImZpbmlzaGVkIiwgdGhp
cy5fcmVzb3VyY2VMb2FkaW5nRmluaXNoZWQsIHRoaXMpOwotICAgIHRoaXMuX2ZyYW1lTmVlZHNT
ZXR1cCA9IHRydWU7Ci19Ci0KLS8vIFRoaXMgaXMgYSBtYXAgZnJvbSByZXNvdXJjZS50eXBlIHRv
IG1pbWUgdHlwZXMKLS8vIGZvdW5kIGluIFdlYkluc3BlY3Rvci5Tb3VyY2VUb2tlbml6ZXIuUmVn
aXN0cnkuCi1XZWJJbnNwZWN0b3IuU291cmNlVmlldy5EZWZhdWx0TUlNRVR5cGVGb3JSZXNvdXJj
ZVR5cGUgPSB7Ci0gICAgMDogInRleHQvaHRtbCIsCi0gICAgMTogInRleHQvY3NzIiwKLSAgICA0
OiAidGV4dC9qYXZhc2NyaXB0IgorICAgIHRoaXMuc291cmNlRnJhbWUgPSBuZXcgV2ViSW5zcGVj
dG9yLlNvdXJjZUZyYW1lKHRoaXMuZWxlbWVudCwgY29udGVudFByb3ZpZGVyLCByZXNvdXJjZS51
cmwsIGNhbkVkaXRTY3JpcHRzKTsKIH0KIAogV2ViSW5zcGVjdG9yLlNvdXJjZVZpZXcucHJvdG90
eXBlID0gewogICAgIHNob3c6IGZ1bmN0aW9uKHBhcmVudEVsZW1lbnQpCiAgICAgewotICAgICAg
ICBXZWJJbnNwZWN0b3IuUmVzb3VyY2VWaWV3LnByb3RvdHlwZS5zaG93LmNhbGwodGhpcywgcGFy
ZW50RWxlbWVudCk7Ci0gICAgICAgIHRoaXMuc2V0dXBTb3VyY2VGcmFtZUlmTmVlZGVkKCk7Cisg
ICAgICAgIFdlYkluc3BlY3Rvci5WaWV3LnByb3RvdHlwZS5zaG93LmNhbGwodGhpcywgcGFyZW50
RWxlbWVudCk7CiAgICAgICAgIHRoaXMuc291cmNlRnJhbWUudmlzaWJsZSA9IHRydWU7Ci0gICAg
ICAgIHRoaXMucmVzaXplKCk7CiAgICAgfSwKIAogICAgIGhpZGU6IGZ1bmN0aW9uKCkKQEAgLTY2
LDggKzU0LDcgQEAgV2ViSW5zcGVjdG9yLlNvdXJjZVZpZXcucHJvdG90eXBlID0gewogCiAgICAg
cmVzaXplOiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICBpZiAodGhpcy5zb3VyY2VGcmFtZSkK
LSAgICAgICAgICAgIHRoaXMuc291cmNlRnJhbWUucmVzaXplKCk7CisgICAgICAgIHRoaXMuc291
cmNlRnJhbWUucmVzaXplKCk7CiAgICAgfSwKIAogICAgIGdldCBzY3JvbGxUb3AoKQpAQCAtODAs
NDIgKzY3LDExIEBAIFdlYkluc3BlY3Rvci5Tb3VyY2VWaWV3LnByb3RvdHlwZSA9IHsKICAgICAg
ICAgdGhpcy5zb3VyY2VGcmFtZS5zY3JvbGxUb3AgPSBzY3JvbGxUb3A7CiAgICAgfSwKIAotCi0g
ICAgc2V0dXBTb3VyY2VGcmFtZUlmTmVlZGVkOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICBp
ZiAoIXRoaXMuX2ZyYW1lTmVlZHNTZXR1cCkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAg
ICBkZWxldGUgdGhpcy5fZnJhbWVOZWVkc1NldHVwOwotICAgICAgICB0aGlzLnJlc291cmNlLnJl
cXVlc3RDb250ZW50KHRoaXMuX2NvbnRlbnRMb2FkZWQuYmluZCh0aGlzKSk7Ci0gICAgfSwKLQog
ICAgIGhhc0NvbnRlbnQ6IGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgIH0sCiAKLSAgICBfY29udGVudExvYWRlZDogZnVuY3Rpb24oY29udGVudCkKLSAgICB7Ci0g
ICAgICAgIHZhciBtaW1lVHlwZSA9IHRoaXMuX2Nhbm9uaWNhbE1pbWVUeXBlKHRoaXMucmVzb3Vy
Y2UpOwotICAgICAgICB0aGlzLnNvdXJjZUZyYW1lLnNldENvbnRlbnQobWltZVR5cGUsIGNvbnRl
bnQsIHRoaXMucmVzb3VyY2UudXJsKTsKLSAgICAgICAgdGhpcy5fc291cmNlRnJhbWVTZXR1cEZp
bmlzaGVkKCk7Ci0gICAgfSwKLQotICAgIF9jYW5vbmljYWxNaW1lVHlwZTogZnVuY3Rpb24ocmVz
b3VyY2UpCi0gICAgewotICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLlNvdXJjZVZpZXcuRGVm
YXVsdE1JTUVUeXBlRm9yUmVzb3VyY2VUeXBlW3Jlc291cmNlLnR5cGVdIHx8IHJlc291cmNlLm1p
bWVUeXBlOwotICAgIH0sCi0KLSAgICBfcmVzb3VyY2VMb2FkaW5nRmluaXNoZWQ6IGZ1bmN0aW9u
KGV2ZW50KQotICAgIHsKLSAgICAgICAgdGhpcy5fZnJhbWVOZWVkc1NldHVwID0gdHJ1ZTsKLSAg
ICAgICAgdGhpcy5fc291cmNlRnJhbWVTZXR1cCA9IGZhbHNlOwotICAgICAgICBpZiAodGhpcy52
aXNpYmxlKQotICAgICAgICAgICAgdGhpcy5zZXR1cFNvdXJjZUZyYW1lSWZOZWVkZWQoKTsKLSAg
ICAgICAgdGhpcy5yZXNvdXJjZS5yZW1vdmVFdmVudExpc3RlbmVyKCJmaW5pc2hlZCIsIHRoaXMu
X3Jlc291cmNlTG9hZGluZ0ZpbmlzaGVkLCB0aGlzKTsKLSAgICB9LAotCiAgICAgLy8gVGhlIHJl
c3Qgb2YgdGhlIG1ldGhvZHMgaW4gdGhpcyBwcm90b3R5cGUgbmVlZCB0byBiZSBnZW5lcmljIGVu
b3VnaCB0byB3b3JrIHdpdGggYSBTY3JpcHRWaWV3LgogICAgIC8vIFRoZSBTY3JpcHRWaWV3IHBy
b3RvdHlwZSBwdWxscyB0aGVzZSBtZXRob2RzIGludG8gaXQncyBwcm90b3R5cGUgdG8gYXZvaWQg
ZHVwbGljYXRlIGNvZGUuCiAKQEAgLTEzOCw3ICs5NCw2IEBAIFdlYkluc3BlY3Rvci5Tb3VyY2VW
aWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIGlmICh0aGlzLl9zZWFyY2hSZXN1bHRzKQog
ICAgICAgICAgICAgICAgIGZpbmlzaGVkQ2FsbGJhY2sodGhpcywgdGhpcy5fc2VhcmNoUmVzdWx0
cy5sZW5ndGgpOwogICAgICAgICB9Ci0KICAgICAgICAgdGhpcy5zb3VyY2VGcmFtZS5maW5kU2Vh
cmNoTWF0Y2hlcyhxdWVyeSwgZGlkRmluZFNlYXJjaE1hdGNoZXMuYmluZCh0aGlzKSk7CiAgICAg
fSwKIApAQCAtMTg4LDEzICsxNDMsMTEgQEAgV2ViSW5zcGVjdG9yLlNvdXJjZVZpZXcucHJvdG90
eXBlID0gewogCiAgICAgcmV2ZWFsTGluZTogZnVuY3Rpb24obGluZU51bWJlcikKICAgICB7Ci0g
ICAgICAgIHRoaXMuc2V0dXBTb3VyY2VGcmFtZUlmTmVlZGVkKCk7CiAgICAgICAgIHRoaXMuc291
cmNlRnJhbWUucmV2ZWFsTGluZShsaW5lTnVtYmVyKTsKICAgICB9LAogCiAgICAgaGlnaGxpZ2h0
TGluZTogZnVuY3Rpb24obGluZU51bWJlcikKICAgICB7Ci0gICAgICAgIHRoaXMuc2V0dXBTb3Vy
Y2VGcmFtZUlmTmVlZGVkKCk7CiAgICAgICAgIHRoaXMuc291cmNlRnJhbWUuaGlnaGxpZ2h0TGlu
ZShsaW5lTnVtYmVyKTsKICAgICB9LAogCkBAIC0yMTUsMTcgKzE2OCw0MSBAQCBXZWJJbnNwZWN0
b3IuU291cmNlVmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAg
ICAgdGhpcy5zb3VyY2VGcmFtZS5tYXJrQW5kUmV2ZWFsUmFuZ2UoZm91bmRSYW5nZSk7Ci0gICAg
fSwKKyAgICB9Cit9CiAKLSAgICBfc291cmNlRnJhbWVTZXR1cEZpbmlzaGVkOiBmdW5jdGlvbigp
CitXZWJJbnNwZWN0b3IuU291cmNlVmlldy5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVj
dG9yLlJlc291cmNlVmlldy5wcm90b3R5cGU7CisKKworV2ViSW5zcGVjdG9yLlNvdXJjZUZyYW1l
Q29udGVudFByb3ZpZGVyRm9yUmVzb3VyY2UgPSBmdW5jdGlvbihyZXNvdXJjZSkKK3sKKyAgICBX
ZWJJbnNwZWN0b3IuU291cmNlRnJhbWVDb250ZW50UHJvdmlkZXIuY2FsbCh0aGlzKTsKKyAgICB0
aGlzLl9yZXNvdXJjZSA9IHJlc291cmNlOworfQorCisvL1RoaXMgaXMgYSBtYXAgZnJvbSByZXNv
dXJjZS50eXBlIHRvIG1pbWUgdHlwZXMKKy8vZm91bmQgaW4gV2ViSW5zcGVjdG9yLlNvdXJjZVRv
a2VuaXplci5SZWdpc3RyeS4KK1dlYkluc3BlY3Rvci5Tb3VyY2VGcmFtZUNvbnRlbnRQcm92aWRl
ckZvclJlc291cmNlLkRlZmF1bHRNSU1FVHlwZUZvclJlc291cmNlVHlwZSA9IHsKKyAwOiAidGV4
dC9odG1sIiwKKyAxOiAidGV4dC9jc3MiLAorIDQ6ICJ0ZXh0L2phdmFzY3JpcHQiCit9CisKK1dl
Ykluc3BlY3Rvci5Tb3VyY2VGcmFtZUNvbnRlbnRQcm92aWRlckZvclJlc291cmNlLnByb3RvdHlw
ZSA9IHsKKyAgICByZXF1ZXN0Q29udGVudDogZnVuY3Rpb24oY2FsbGJhY2spCiAgICAgewotICAg
ICAgICB0aGlzLl9zb3VyY2VGcmFtZVNldHVwID0gdHJ1ZTsKLSAgICAgICAgdGhpcy5yZXNpemUo
KTsKLSAgICAgICAgaWYgKHRoaXMuX2RlbGF5ZWRGaW5kU2VhcmNoTWF0Y2hlcykgewotICAgICAg
ICAgICAgdGhpcy5fZGVsYXllZEZpbmRTZWFyY2hNYXRjaGVzKCk7Ci0gICAgICAgICAgICBkZWxl
dGUgdGhpcy5fZGVsYXllZEZpbmRTZWFyY2hNYXRjaGVzOworICAgICAgICBmdW5jdGlvbiBjb250
ZW50TG9hZGVkKGNvbnRlbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBtaW1lVHlwZSA9
IFdlYkluc3BlY3Rvci5Tb3VyY2VGcmFtZUNvbnRlbnRQcm92aWRlckZvclJlc291cmNlLkRlZmF1
bHRNSU1FVHlwZUZvclJlc291cmNlVHlwZVt0aGlzLl9yZXNvdXJjZS50eXBlXSB8fCB0aGlzLl9y
ZXNvdXJjZS5taW1lVHlwZTsKKyAgICAgICAgICAgIGNhbGxiYWNrKG1pbWVUeXBlLCBjb250ZW50
KTsKICAgICAgICAgfQorICAgICAgICB0aGlzLl9yZXNvdXJjZS5yZXF1ZXN0Q29udGVudChjb250
ZW50TG9hZGVkLmJpbmQodGhpcykpOworICAgIH0sCisKKyAgICBzY3JpcHRzOiBmdW5jdGlvbigp
CisgICAgeworICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTW9kZWwuc2NyaXB0
c0ZvclVSTCh0aGlzLl9yZXNvdXJjZS51cmwpOwogICAgIH0KIH0KIAotV2ViSW5zcGVjdG9yLlNv
dXJjZVZpZXcucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5SZXNvdXJjZVZpZXcu
cHJvdG90eXBlOworV2ViSW5zcGVjdG9yLlNvdXJjZUZyYW1lQ29udGVudFByb3ZpZGVyRm9yUmVz
b3VyY2UucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5Tb3VyY2VGcmFtZUNvbnRl
bnRQcm92aWRlci5wcm90b3R5cGU7Cg==
</data>
<flag name="review"
          id="69856"
          type_id="1"
          status="+"
          setter="pfeldman"
    />
          </attachment>
      

    </bug>

</bugzilla>