<?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>56748</bug_id>
          
          <creation_ts>2011-03-21 09:21:05 -0700</creation_ts>
          <short_desc>Web Inspector: move content loading logic to a new SourceFile class.</short_desc>
          <delta_ts>2011-03-23 05:57:11 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="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>webkit.review.bot</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>370412</commentid>
    <comment_count>0</comment_count>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2011-03-21 09:21:05 -0700</bug_when>
    <thetext>Web Inspector: move content loading logic to a new SourceFile class.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>370413</commentid>
    <comment_count>1</comment_count>
      <attachid>86323</attachid>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2011-03-21 09:21:42 -0700</bug_when>
    <thetext>Created attachment 86323
Patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>370415</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-03-21 09:24:28 -0700</bug_when>
    <thetext>Attachment 86323 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1

Source/WebCore/WebCore.vcproj/WebCore.vcproj:66823:  not well-formed (invalid token)  [xml/syntax] [5]
Total errors found: 1 in 7 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>371301</commentid>
    <comment_count>3</comment_count>
      <attachid>86323</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2011-03-22 02:30:29 -0700</bug_when>
    <thetext>Comment on attachment 86323
Patch.

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

Several minor comments, otherwise looks good.

&gt; Source/WebCore/inspector/front-end/DebuggerPresentationModel.js:89
&gt;          sourceFile.id = sourceFileId;

Move this into SourceFile constructor.

&gt; Source/WebCore/inspector/front-end/DebuggerPresentationModel.js:90
&gt; +        sourceFile._breakpoints = [];

Move this into SourceFile constructor.

&gt; Source/WebCore/inspector/front-end/DebuggerPresentationModel.js:95
&gt; +            if (!(id in this._presentationBreakpoints))

Why do we have to iterate though all breakpoints when a script is being added? Is it possible to update only breakpoints related to the script?

&gt; Source/WebCore/inspector/front-end/SourceFile.js:31
&gt; +WebInspector.SourceFile = function(script, contentChangedDelegate)

I don&apos;t like the name, but I don&apos;t have a better suggestion at the moment.

&gt; Source/WebCore/inspector/front-end/SourceFile.js:111
&gt; +        // FIXME: move provider&apos;s load functions here.

Can you fix this as part of this change?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>371316</commentid>
    <comment_count>4</comment_count>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2011-03-22 03:15:59 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 86323 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=86323&amp;action=review
&gt; 
&gt; Several minor comments, otherwise looks good.
&gt; 
&gt; &gt; Source/WebCore/inspector/front-end/DebuggerPresentationModel.js:89
&gt; &gt;          sourceFile.id = sourceFileId;
&gt; 
&gt; Move this into SourceFile constructor.
Done.

&gt; 
&gt; &gt; Source/WebCore/inspector/front-end/DebuggerPresentationModel.js:90
&gt; &gt; +        sourceFile._breakpoints = [];
&gt; 
&gt; Move this into SourceFile constructor.
Done.

&gt; 
&gt; &gt; Source/WebCore/inspector/front-end/DebuggerPresentationModel.js:95
&gt; &gt; +            if (!(id in this._presentationBreakpoints))
&gt; 
&gt; Why do we have to iterate though all breakpoints when a script is being added? Is it possible to update only breakpoints related to the script?
DebuggerModel contains all breakpoints from local storage, but we want to show only those that have corresponding scripts. When the new script is added, we have to find all breakpoints matching the script and show them in UI.

&gt; 
&gt; &gt; Source/WebCore/inspector/front-end/SourceFile.js:31
&gt; &gt; +WebInspector.SourceFile = function(script, contentChangedDelegate)
&gt; 
&gt; I don&apos;t like the name, but I don&apos;t have a better suggestion at the moment.
&gt; 
&gt; &gt; Source/WebCore/inspector/front-end/SourceFile.js:111
&gt; &gt; +        // FIXME: move provider&apos;s load functions here.
&gt; 
&gt; Can you fix this as part of this change?

There is already a separate change for this - https://bugs.webkit.org/show_bug.cgi?id=56756.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>371317</commentid>
    <comment_count>5</comment_count>
      <attachid>86451</attachid>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2011-03-22 03:16:15 -0700</bug_when>
    <thetext>Created attachment 86451
Patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>372102</commentid>
    <comment_count>6</comment_count>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2011-03-23 05:57:11 -0700</bug_when>
    <thetext>Committed r81767: &lt;http://trac.webkit.org/changeset/81767&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>86323</attachid>
            <date>2011-03-21 09:21:42 -0700</date>
            <delta_ts>2011-03-22 03:16:15 -0700</delta_ts>
            <desc>Patch.</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>15859</size>
            <attacher name="Pavel Podivilov">podivilov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBhODNlYWRmLi4yNjI5NDM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzMg
QEAKKzIwMTEtMDMtMjEgIFBhdmVsIFBvZGl2aWxvdiAgPHBvZGl2aWxvdkBjaHJvbWl1bS5vcmc+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViIElu
c3BlY3RvcjogbW92ZSBjb250ZW50IGxvYWRpbmcgbG9naWMgdG8gYSBuZXcgU291cmNlRmlsZSBj
bGFzcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU2
NzQ4CisKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ov
V2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9EZWJ1Z2dlclBy
ZXNlbnRhdGlvbk1vZGVsLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2Vu
dGF0aW9uTW9kZWwucHJvdG90eXBlLnJlcXVlc3RTb3VyY2VGaWxlQ29udGVudCk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5wcm90b3R5cGUuX2FkZFNj
cmlwdC5jb250ZW50Q2hhbmdlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVz
ZW50YXRpb25Nb2RlbC5wcm90b3R5cGUuX2FkZFNjcmlwdCk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5wcm90b3R5cGUuX3NjcmlwdFNvdXJjZUNoYW5n
ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwucHJv
dG90eXBlLnNldCBzZWxlY3RlZENhbGxGcmFtZSk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250
LWVuZC9Tb3VyY2VGaWxlLmpzOiBBZGRlZC4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5Tb3VyY2VG
aWxlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Tb3VyY2VGaWxlLnByb3RvdHlwZS5hZGRTY3Jp
cHQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNvdXJjZUZpbGUucHJvdG90eXBlLnJlcXVlc3RD
b250ZW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Tb3VyY2VGaWxlLnByb3RvdHlwZS5mb3Jj
ZUxvYWRDb250ZW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Tb3VyY2VGaWxlLnByb3RvdHlw
ZS5yZWxvYWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNvdXJjZUZpbGUucHJvdG90eXBlLl9y
ZXF1ZXN0Q29udGVudCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU291cmNlRmlsZS5wcm90b3R5
cGUuX2xvYWRSZXNvdXJjZUNvbnRlbnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNvdXJjZUZp
bGUucHJvdG90eXBlLl9sb2FkU2NyaXB0Q29udGVudCk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
U291cmNlRmlsZS5wcm90b3R5cGUuX2xvYWRBbmRDb25jYXRlbmF0ZVNjcmlwdHNDb250ZW50KToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5Tb3VyY2VGaWxlLnByb3RvdHlwZS5fZGlkUmVxdWVzdENv
bnRlbnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNvdXJjZUZpbGUucHJvdG90eXBlLl9oYXNQ
ZW5kaW5nUmVzb3VyY2UpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvV2ViS2l0LnFy
YzoKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5odG1sOgorCiAyMDEx
LTAzLTIwICBCaWxsIEJ1ZGdlICA8YmJ1ZGdlQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBBZGFtIEJhcnRoLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5n
eXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IDQwNjRlMDUuLjU4ODhjOWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmd5cGkKQEAgLTYzMzksNiArNjMzOSw3IEBACiAgICAgICAgICAgICAnaW5z
cGVjdG9yL2Zyb250LWVuZC9TaWRlYmFyUGFuZS5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9y
L2Zyb250LWVuZC9TaWRlYmFyVHJlZUVsZW1lbnQuanMnLAogICAgICAgICAgICAgJ2luc3BlY3Rv
ci9mcm9udC1lbmQvU291cmNlQ1NTVG9rZW5pemVyLmpzJywKKyAgICAgICAgICAgICdpbnNwZWN0
b3IvZnJvbnQtZW5kL1NvdXJjZUZpbGUuanMnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9u
dC1lbmQvU291cmNlRnJhbWUuanMnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQv
U291cmNlRnJhbWVDb250ZW50LmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5k
L1NvdXJjZUhUTUxUb2tlbml6ZXIuanMnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJv
ai9XZWJDb3JlLnZjcHJvagppbmRleCA3M2ZlZjEzLi4zNDM0NGMxIDEwMDc1NQotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtNjY3NzMsNiArNjY3NzMsMTAg
QEAKIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcZnJvbnQtZW5kXFNvdXJjZUNTU1Rv
a2VuaXplci5qcyIKIAkJCQkJPgogCQkJCTwvRmlsZT4KKwkJCQk8PEZpbGUKKwkJCQkJUmVsYXRp
dmVQYXRoPSIuLlxpbnNwZWN0b3JcZnJvbnQtZW5kXFNvdXJjZUZpbGUuanMiCisJCQkJCT4KKwkJ
CQk8L0ZpbGU+CiAJCQkJPEZpbGUKIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcZnJv
bnQtZW5kXFNvdXJjZUZyYW1lLmpzIgogCQkJCQk+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwuanMgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwu
anMKaW5kZXggYmE4M2ZmMi4uZDcxYzRhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLmpzCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5q
cwpAQCAtNTksMjMgKzU5LDcgQEAgV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9k
ZWwucHJvdG90eXBlID0gewogCiAgICAgcmVxdWVzdFNvdXJjZUZpbGVDb250ZW50OiBmdW5jdGlv
bihzb3VyY2VGaWxlSWQsIGNhbGxiYWNrKQogICAgIHsKLSAgICAgICAgdmFyIHNvdXJjZUZpbGUg
PSB0aGlzLl9zb3VyY2VGaWxlc1tzb3VyY2VGaWxlSWRdOwotICAgICAgICB2YXIgc2NyaXB0ID0g
c291cmNlRmlsZS5fc2NyaXB0OwotICAgICAgICB2YXIgcmVzb3VyY2UgPSBzb3VyY2VGaWxlLl9y
ZXNvdXJjZTsKLSAgICAgICAgaWYgKHJlc291cmNlKSB7Ci0gICAgICAgICAgICAvLyBGSVhNRTog
bW92ZSBwcm92aWRlcidzIGxvYWQgZnVuY3Rpb25zIGhlcmUuCi0gICAgICAgICAgICB2YXIgcHJv
dmlkZXIgPSBuZXcgV2ViSW5zcGVjdG9yLlNvdXJjZUZyYW1lRGVsZWdhdGVGb3JTY3JpcHRzUGFu
ZWwobnVsbCwgbnVsbCwgc2NyaXB0KTsKLSAgICAgICAgICAgIGlmIChyZXNvdXJjZS5maW5pc2hl
ZCkKLSAgICAgICAgICAgICAgICBwcm92aWRlci5fbG9hZFJlc291cmNlQ29udGVudChyZXNvdXJj
ZSwgY2FsbGJhY2spOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHByb3ZpZGVy
Ll9sb2FkQW5kQ29uY2F0ZW5hdGVTY3JpcHRzQ29udGVudChjYWxsYmFjayk7Ci0gICAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgICAgICBmdW5jdGlvbiBkaWRSZXF1ZXN0U291cmNlKHNvdXJjZSkKLSAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjYWxsYmFjaygidGV4dC9qYXZhc2NyaXB0Iiwg
c291cmNlKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHNjcmlwdC5yZXF1ZXN0U291cmNl
KGRpZFJlcXVlc3RTb3VyY2UpOwotICAgICAgICB9CisgICAgICAgIHRoaXMuX3NvdXJjZUZpbGVz
W3NvdXJjZUZpbGVJZF0ucmVxdWVzdENvbnRlbnQoY2FsbGJhY2spOwogICAgIH0sCiAKICAgICBf
cGFyc2VkU2NyaXB0U291cmNlOiBmdW5jdGlvbihldmVudCkKQEAgLTkxLDUzICs3NSwyOCBAQCBX
ZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5wcm90b3R5cGUgPSB7CiAgICAg
X2FkZFNjcmlwdDogZnVuY3Rpb24oc2NyaXB0KQogICAgIHsKICAgICAgICAgdmFyIHNvdXJjZUZp
bGVJZCA9IHNjcmlwdC5zb3VyY2VVUkwgfHwgc2NyaXB0LnNvdXJjZUlEOwotICAgICAgICBpZiAo
c291cmNlRmlsZUlkIGluIHRoaXMuX3NvdXJjZUZpbGVzKQorICAgICAgICB2YXIgc291cmNlRmls
ZSA9IHRoaXMuX3NvdXJjZUZpbGVzW3NvdXJjZUZpbGVJZF07CisgICAgICAgIGlmIChzb3VyY2VG
aWxlKSB7CisgICAgICAgICAgICBzb3VyY2VGaWxlLmFkZFNjcmlwdChzY3JpcHQpOwogICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CiAKLSAgICAgICAgdmFyIHNvdXJjZUZpbGUgPSB7fTsK
KyAgICAgICAgZnVuY3Rpb24gY29udGVudENoYW5nZWQoc291cmNlRmlsZSkKKyAgICAgICAgewor
ICAgICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkRl
YnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwuRXZlbnRzLlNvdXJjZUZpbGVDaGFuZ2VkLCB0aGlzLl9z
b3VyY2VGaWxlc1tzb3VyY2VGaWxlSWRdKTsKKyAgICAgICAgfQorICAgICAgICBzb3VyY2VGaWxl
ID0gbmV3IFdlYkluc3BlY3Rvci5Tb3VyY2VGaWxlKHNjcmlwdCwgY29udGVudENoYW5nZWQuYmlu
ZCh0aGlzKSk7CiAgICAgICAgIHNvdXJjZUZpbGUuaWQgPSBzb3VyY2VGaWxlSWQ7Ci0gICAgICAg
IHNvdXJjZUZpbGUudXJsID0gc2NyaXB0LnNvdXJjZVVSTDsKLSAgICAgICAgc291cmNlRmlsZS5p
c0V4dGVuc2lvblNjcmlwdCA9IHNjcmlwdC53b3JsZFR5cGUgPT09IFdlYkluc3BlY3Rvci5TY3Jp
cHQuV29ybGRUeXBlLkVYVEVOU0lPTlNfV09STEQ7Ci0gICAgICAgIHNvdXJjZUZpbGUuX3Njcmlw
dCA9IHNjcmlwdDsKLSAgICAgICAgc291cmNlRmlsZS5fcmVzb3VyY2UgPSBzY3JpcHQuc291cmNl
VVJMID8gdGhpcy5fcmVzb3VyY2VGb3JVUkwoc2NyaXB0LnNvdXJjZVVSTCkgOiBudWxsOworICAg
ICAgICBzb3VyY2VGaWxlLl9icmVha3BvaW50cyA9IFtdOwogICAgICAgICB0aGlzLl9zb3VyY2VG
aWxlc1tzb3VyY2VGaWxlSWRdID0gc291cmNlRmlsZTsKIAotICAgICAgICBpZiAoIXNvdXJjZUZp
bGUuX3Jlc291cmNlIHx8IHNvdXJjZUZpbGUuX3Jlc291cmNlLmZpbmlzaGVkKQotICAgICAgICAg
ICAgdGhpcy5fc291cmNlRmlsZUFkZGVkKHNvdXJjZUZpbGUpOwotICAgICAgICBlbHNlIHsKLSAg
ICAgICAgICAgIHNvdXJjZUZpbGUuX3BlbmRpbmcgPSB0cnVlOwotICAgICAgICAgICAgZnVuY3Rp
b24gcmVzb3VyY2VGaW5pc2hlZCgpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgaWYg
KHNvdXJjZUZpbGUuX3BlbmRpbmcpIHsKLSAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHNvdXJj
ZUZpbGUuX3BlbmRpbmc7Ci0gICAgICAgICAgICAgICAgICAgIHRoaXMuX3NvdXJjZUZpbGVBZGRl
ZChzb3VyY2VGaWxlKTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAg
ICAgICAvLyBTb3VyY2UgZmlsZSB3YXMgZm9yY2libHkgYWRkZWQgYmVmb3JlIHJlc291cmNlIHdh
cyBmaW5pc2hlZC4KLSAgICAgICAgICAgICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0
ZW5lcnMoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwuRXZlbnRzLlNvdXJj
ZUZpbGVDaGFuZ2VkLCBzb3VyY2VGaWxlKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgICAgICBzb3VyY2VGaWxlLl9yZXNvdXJjZS5hZGRFdmVudExpc3RlbmVyKCJm
aW5pc2hlZCIsIHJlc291cmNlRmluaXNoZWQuYmluZCh0aGlzKSk7Ci0gICAgICAgIH0KLSAgICB9
LAotCi0gICAgX2Vuc3VyZVNvdXJjZUZpbGVBZGRlZDogZnVuY3Rpb24oc2NyaXB0KQotICAgIHsK
LSAgICAgICAgdmFyIHNvdXJjZUZpbGUgPSB0aGlzLl9zb3VyY2VGaWxlc1tzY3JpcHQuc291cmNl
VVJMIHx8IHNjcmlwdC5zb3VyY2VJRF07Ci0gICAgICAgIGlmICghc291cmNlRmlsZS5fcmVzb3Vy
Y2UgfHwgc291cmNlRmlsZS5fcmVzb3VyY2UuZmluaXNoZWQpCi0gICAgICAgICAgICByZXR1cm47
Ci0KLSAgICAgICAgaWYgKHNvdXJjZUZpbGUuX3BlbmRpbmcpIHsKLSAgICAgICAgICAgIGRlbGV0
ZSBzb3VyY2VGaWxlLl9wZW5kaW5nOwotICAgICAgICAgICAgdGhpcy5fc291cmNlRmlsZUFkZGVk
KHNvdXJjZUZpbGUpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgLy8gRklYTUU6IGRp
c3BhdGNoIGV2ZW50IG9ubHkgaWYgc291cmNlIGZpbGUgY29udGVudCBjaGFuZ2VkLgotICAgICAg
ICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkRlYnVnZ2Vy
UHJlc2VudGF0aW9uTW9kZWwuRXZlbnRzLlNvdXJjZUZpbGVDaGFuZ2VkLCBzb3VyY2VGaWxlKTsK
KyAgICAgICAgdmFyIGJyZWFrcG9pbnRzID0gV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTW9kZWwuYnJl
YWtwb2ludHM7CisgICAgICAgIGZvciAodmFyIGlkIGluIGJyZWFrcG9pbnRzKSB7CisgICAgICAg
ICAgICBpZiAoIShpZCBpbiB0aGlzLl9wcmVzZW50YXRpb25CcmVha3BvaW50cykpCisgICAgICAg
ICAgICAgICAgdGhpcy5fYnJlYWtwb2ludEFkZGVkKGJyZWFrcG9pbnRzW2lkXSk7CiAgICAgICAg
IH0KLSAgICB9LAogCi0gICAgX3Jlc291cmNlRm9yVVJMOiBmdW5jdGlvbih1cmwpCi0gICAgewot
ICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLm5ldHdvcmtNYW5hZ2VyLmluZmxpZ2h0UmVzb3Vy
Y2VGb3JVUkwodXJsKSB8fCBXZWJJbnNwZWN0b3IucmVzb3VyY2VGb3JVUkwodXJsKTsKKyAgICAg
ICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJl
c2VudGF0aW9uTW9kZWwuRXZlbnRzLlNvdXJjZUZpbGVBZGRlZCwgc291cmNlRmlsZSk7CiAgICAg
fSwKIAogICAgIF9zY3JpcHRTb3VyY2VDaGFuZ2VkOiBmdW5jdGlvbihldmVudCkKQEAgLTE4MSwx
OSArMTQwLDcgQEAgV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwucHJvdG90
eXBlID0gewogICAgICAgICAgICAgICAgIHRoaXMuc2V0QnJlYWtwb2ludChzb3VyY2VGaWxlSWQs
IG5ld0xpbmVOdW1iZXIsIGJyZWFrcG9pbnQuY29uZGl0aW9uLCBicmVha3BvaW50LmVuYWJsZWQp
OwogICAgICAgICB9CiAKLSAgICAgICAgdmFyIHNvdXJjZUZpbGUgPSB0aGlzLl9zb3VyY2VGaWxl
c1tzb3VyY2VGaWxlSWRdOwotICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhX
ZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5FdmVudHMuU291cmNlRmlsZUNo
YW5nZWQsIHNvdXJjZUZpbGUpOwotICAgIH0sCi0KLSAgICBfc291cmNlRmlsZUFkZGVkOiBmdW5j
dGlvbihzb3VyY2VGaWxlKQotICAgIHsKLSAgICAgICAgc291cmNlRmlsZS5fYnJlYWtwb2ludHMg
PSBbXTsKLSAgICAgICAgdmFyIGJyZWFrcG9pbnRzID0gV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTW9k
ZWwuYnJlYWtwb2ludHM7Ci0gICAgICAgIGZvciAodmFyIGlkIGluIGJyZWFrcG9pbnRzKSB7Ci0g
ICAgICAgICAgICBpZiAoIShpZCBpbiB0aGlzLl9wcmVzZW50YXRpb25CcmVha3BvaW50cykpCi0g
ICAgICAgICAgICAgICAgdGhpcy5fYnJlYWtwb2ludEFkZGVkKGJyZWFrcG9pbnRzW2lkXSk7Ci0g
ICAgICAgIH0KLSAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVj
dG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwuRXZlbnRzLlNvdXJjZUZpbGVBZGRlZCwgc291
cmNlRmlsZSk7CisgICAgICAgIHRoaXMuX3NvdXJjZUZpbGVzW3NvdXJjZUZpbGVJZF0ucmVsb2Fk
KCk7CiAgICAgfSwKIAogICAgIGNvbnRpbnVlVG9MaW5lOiBmdW5jdGlvbihzb3VyY2VGaWxlSWQs
IGxpbmVOdW1iZXIpCkBAIC0zNDksNyArMjk2LDkgQEAgV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJl
c2VudGF0aW9uTW9kZWwucHJvdG90eXBlID0gewogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAg
ICAgIHZhciBzY3JpcHQgPSBXZWJJbnNwZWN0b3IuZGVidWdnZXJNb2RlbC5zY3JpcHRGb3JTb3Vy
Y2VJRChjYWxsRnJhbWUuc291cmNlSUQpOwotICAgICAgICB0aGlzLl9lbnN1cmVTb3VyY2VGaWxl
QWRkZWQoc2NyaXB0KTsKKyAgICAgICAgdmFyIHNvdXJjZUZpbGUgPSB0aGlzLl9zb3VyY2VGaWxl
c1tzY3JpcHQuc291cmNlVVJMIHx8IHNjcmlwdC5zb3VyY2VJRF07CisgICAgICAgIGlmIChzb3Vy
Y2VGaWxlKQorICAgICAgICAgICAgc291cmNlRmlsZS5mb3JjZUxvYWRDb250ZW50KHNjcmlwdCk7
CiAgICAgICAgIGNhbGxGcmFtZS5zb3VyY2VMb2NhdGlvbiA9IHRoaXMuX2FjdHVhbExvY2F0aW9u
VG9Tb3VyY2VMb2NhdGlvbihzY3JpcHQuc291cmNlVVJMLCBzY3JpcHQuc291cmNlSUQsIGNhbGxG
cmFtZS5saW5lLCBjYWxsRnJhbWUuY29sdW1uKTsKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50
VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwuRXZlbnRz
LkNhbGxGcmFtZVNlbGVjdGVkLCBjYWxsRnJhbWUpOwogICAgIH0sCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NvdXJjZUZpbGUuanMgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NvdXJjZUZpbGUuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uNmNiZjZhYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU291cmNlRmlsZS5qcwpAQCAtMCwwICsxLDE0NyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisg
KiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQor
ICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1dl
Ykluc3BlY3Rvci5Tb3VyY2VGaWxlID0gZnVuY3Rpb24oc2NyaXB0LCBjb250ZW50Q2hhbmdlZERl
bGVnYXRlKQoreworICAgIHRoaXMuX3NjcmlwdHMgPSBbc2NyaXB0XTsKKyAgICB0aGlzLl9jb250
ZW50Q2hhbmdlZERlbGVnYXRlID0gY29udGVudENoYW5nZWREZWxlZ2F0ZTsKKyAgICB0aGlzLnVy
bCA9IHNjcmlwdC5zb3VyY2VVUkw7CisgICAgdGhpcy5pc0V4dGVuc2lvblNjcmlwdCA9IHNjcmlw
dC53b3JsZFR5cGUgPT09IFdlYkluc3BlY3Rvci5TY3JpcHQuV29ybGRUeXBlLkVYVEVOU0lPTlNf
V09STEQ7CisgICAgaWYgKHNjcmlwdC5zb3VyY2VVUkwpCisgICAgICAgIHRoaXMuX3Jlc291cmNl
ID0gV2ViSW5zcGVjdG9yLm5ldHdvcmtNYW5hZ2VyLmluZmxpZ2h0UmVzb3VyY2VGb3JVUkwoc2Ny
aXB0LnNvdXJjZVVSTCkgfHwgV2ViSW5zcGVjdG9yLnJlc291cmNlRm9yVVJMKHNjcmlwdC5zb3Vy
Y2VVUkwpOworICAgIHRoaXMuX3JlcXVlc3RDb250ZW50Q2FsbGJhY2tzID0gW107CisKKyAgICBp
ZiAodGhpcy5faGFzUGVuZGluZ1Jlc291cmNlKCkpCisgICAgICAgIHRoaXMuX3Jlc291cmNlLmFk
ZEV2ZW50TGlzdGVuZXIoImZpbmlzaGVkIiwgdGhpcy5yZWxvYWQuYmluZCh0aGlzKSk7Cit9CisK
K1dlYkluc3BlY3Rvci5Tb3VyY2VGaWxlLnByb3RvdHlwZSA9IHsKKyAgICBhZGRTY3JpcHQ6IGZ1
bmN0aW9uKHNjcmlwdCkKKyAgICB7CisgICAgICAgIHRoaXMuX3NjcmlwdHMucHVzaChzY3JpcHQp
OworICAgIH0sCisKKyAgICByZXF1ZXN0Q29udGVudDogZnVuY3Rpb24oY2FsbGJhY2spCisgICAg
eworICAgICAgICBpZiAodGhpcy5fY29udGVudExvYWRlZCkgeworICAgICAgICAgICAgY2FsbGJh
Y2sodGhpcy5fbWltZVR5cGUsIHRoaXMuX2NvbnRlbnQpOworICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CisKKyAgICAgICAgdGhpcy5fcmVxdWVzdENvbnRlbnRDYWxsYmFja3MucHVzaChj
YWxsYmFjayk7CisgICAgICAgIHRoaXMuX3JlcXVlc3RDb250ZW50KCk7CisgICAgfSwKKworICAg
IGZvcmNlTG9hZENvbnRlbnQ6IGZ1bmN0aW9uKHNjcmlwdCkKKyAgICB7CisgICAgICAgIGlmICgh
dGhpcy5faGFzUGVuZGluZ1Jlc291cmNlKCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAg
ICAgaWYgKCF0aGlzLl9jb25jYXRlbmF0ZWRTY3JpcHRzKQorICAgICAgICAgICAgdGhpcy5fY29u
Y2F0ZW5hdGVkU2NyaXB0cyA9IHt9OworICAgICAgICBpZiAodGhpcy5fY29uY2F0ZW5hdGVkU2Ny
aXB0c1tzY3JpcHQuc291cmNlSURdKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IHRoaXMuX3NjcmlwdHMubGVuZ3RoOyArK2kpCisgICAgICAgICAgICB0
aGlzLl9jb25jYXRlbmF0ZWRTY3JpcHRzW3RoaXMuX3NjcmlwdHNbaV0uc291cmNlSURdID0gdHJ1
ZTsKKworICAgICAgICB0aGlzLnJlbG9hZCgpOworCisgICAgICAgIGlmICghdGhpcy5fY29udGVu
dFJlcXVlc3RlZCkgeworICAgICAgICAgICAgdGhpcy5fY29udGVudFJlcXVlc3RlZCA9IHRydWU7
CisgICAgICAgICAgICB0aGlzLl9sb2FkQW5kQ29uY2F0ZW5hdGVTY3JpcHRzQ29udGVudCgpOwor
ICAgICAgICB9CisgICAgfSwKKworICAgIHJlbG9hZDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAg
ICAgaWYgKHRoaXMuX2NvbnRlbnRMb2FkZWQpIHsKKyAgICAgICAgICAgIHRoaXMuX2NvbnRlbnRM
b2FkZWQgPSBmYWxzZTsKKyAgICAgICAgICAgIHRoaXMuX2NvbnRlbnRDaGFuZ2VkRGVsZWdhdGUo
KTsKKyAgICAgICAgfSBlbHNlIGlmICh0aGlzLl9jb250ZW50UmVxdWVzdGVkKQorICAgICAgICAg
ICAgdGhpcy5fcmVsb2FkQ29udGVudCA9IHRydWU7CisgICAgICAgIGVsc2UgaWYgKHRoaXMuX3Jl
cXVlc3RDb250ZW50Q2FsbGJhY2tzLmxlbmd0aCkKKyAgICAgICAgICAgIHRoaXMuX3JlcXVlc3RD
b250ZW50KCk7CisgICAgfSwKKworICAgIF9yZXF1ZXN0Q29udGVudDogZnVuY3Rpb24oKQorICAg
IHsKKyAgICAgICAgaWYgKHRoaXMuX2NvbnRlbnRSZXF1ZXN0ZWQpCisgICAgICAgICAgICByZXR1
cm47CisKKyAgICAgICAgdGhpcy5fY29udGVudFJlcXVlc3RlZCA9IHRydWU7CisgICAgICAgIGlm
ICh0aGlzLl9yZXNvdXJjZSAmJiB0aGlzLl9yZXNvdXJjZS5maW5pc2hlZCkKKyAgICAgICAgICAg
IHRoaXMuX2xvYWRSZXNvdXJjZUNvbnRlbnQoKTsKKyAgICAgICAgZWxzZSBpZiAoIXRoaXMuX3Jl
c291cmNlKQorICAgICAgICAgICAgdGhpcy5fbG9hZFNjcmlwdENvbnRlbnQoKTsKKyAgICAgICAg
ZWxzZSBpZiAodGhpcy5fY29uY2F0ZW5hdGVkU2NyaXB0cykKKyAgICAgICAgICAgIHRoaXMuX2xv
YWRBbmRDb25jYXRlbmF0ZVNjcmlwdHNDb250ZW50KCk7CisgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgIHRoaXMuX2NvbnRlbnRSZXF1ZXN0ZWQgPSBmYWxzZTsKKyAgICB9LAorCisgICAgX2xvYWRS
ZXNvdXJjZUNvbnRlbnQ6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIC8vIEZJWE1FOiBtb3Zl
IHByb3ZpZGVyJ3MgbG9hZCBmdW5jdGlvbnMgaGVyZS4KKyAgICAgICAgdmFyIHByb3ZpZGVyID0g
bmV3IFdlYkluc3BlY3Rvci5Tb3VyY2VGcmFtZURlbGVnYXRlRm9yU2NyaXB0c1BhbmVsKG51bGws
IG51bGwsIHRoaXMuX3NjcmlwdHNbMF0pOworICAgICAgICBwcm92aWRlci5fbG9hZFJlc291cmNl
Q29udGVudCh0aGlzLl9yZXNvdXJjZSwgdGhpcy5fZGlkUmVxdWVzdENvbnRlbnQuYmluZCh0aGlz
KSk7CisgICAgfSwKKworICAgIF9sb2FkU2NyaXB0Q29udGVudDogZnVuY3Rpb24oKQorICAgIHsK
KyAgICAgICAgdGhpcy5fc2NyaXB0c1swXS5yZXF1ZXN0U291cmNlKHRoaXMuX2RpZFJlcXVlc3RD
b250ZW50LmJpbmQodGhpcywgInRleHQvamF2YXNjcmlwdCIpKTsKKyAgICB9LAorCisgICAgX2xv
YWRBbmRDb25jYXRlbmF0ZVNjcmlwdHNDb250ZW50OiBmdW5jdGlvbigpCisgICAgeworICAgICAg
ICAvLyBGSVhNRTogbW92ZSBwcm92aWRlcidzIGxvYWQgZnVuY3Rpb25zIGhlcmUuCisgICAgICAg
IHZhciBwcm92aWRlciA9IG5ldyBXZWJJbnNwZWN0b3IuU291cmNlRnJhbWVEZWxlZ2F0ZUZvclNj
cmlwdHNQYW5lbChudWxsLCBudWxsLCB0aGlzLl9zY3JpcHRzWzBdKTsKKyAgICAgICAgcHJvdmlk
ZXIuX2xvYWRBbmRDb25jYXRlbmF0ZVNjcmlwdHNDb250ZW50KHRoaXMuX2RpZFJlcXVlc3RDb250
ZW50LmJpbmQodGhpcykpOworICAgIH0sCisKKyAgICBfZGlkUmVxdWVzdENvbnRlbnQ6IGZ1bmN0
aW9uKG1pbWVUeXBlLCBjb250ZW50KQorICAgIHsKKyAgICAgICAgdGhpcy5fY29udGVudExvYWRl
ZCA9IHRydWU7CisgICAgICAgIHRoaXMuX2NvbnRlbnRSZXF1ZXN0ZWQgPSBmYWxzZTsKKyAgICAg
ICAgdGhpcy5fbWltZVR5cGUgPSBtaW1lVHlwZTsKKyAgICAgICAgdGhpcy5fY29udGVudCA9IGNv
bnRlbnQ7CisKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLl9yZXF1ZXN0Q29udGVu
dENhbGxiYWNrcy5sZW5ndGg7ICsraSkKKyAgICAgICAgICAgIHRoaXMuX3JlcXVlc3RDb250ZW50
Q2FsbGJhY2tzW2ldKG1pbWVUeXBlLCBjb250ZW50KTsKKyAgICAgICAgdGhpcy5fcmVxdWVzdENv
bnRlbnRDYWxsYmFja3MgPSBbXTsKKworICAgICAgICBpZiAodGhpcy5fcmVsb2FkQ29udGVudCkK
KyAgICAgICAgICAgIHRoaXMucmVsb2FkKCk7CisgICAgfSwKKworICAgIF9oYXNQZW5kaW5nUmVz
b3VyY2U6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9yZXNvdXJjZSAm
JiAhdGhpcy5fcmVzb3VyY2UuZmluaXNoZWQ7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9XZWJLaXQucXJjIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9XZWJLaXQucXJjCmluZGV4IDNhNWVhNTEuLjJmOTZmZjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvV2ViS2l0LnFyYwor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5xcmMKQEAgLTMy
LDYgKzMyLDcgQEAKICAgICA8ZmlsZT5EYXRhR3JpZC5qczwvZmlsZT4KICAgICA8ZmlsZT5EZWJ1
Z2dlck1vZGVsLmpzPC9maWxlPgogICAgIDxmaWxlPkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwu
anM8L2ZpbGU+CisgICAgPGZpbGU+U291cmNlRmlsZS5qczwvZmlsZT4KICAgICA8ZmlsZT5ET01B
Z2VudC5qczwvZmlsZT4KICAgICA8ZmlsZT5ET01TdG9yYWdlLmpzPC9maWxlPgogICAgIDxmaWxl
PkRPTVN0b3JhZ2VJdGVtc1ZpZXcuanM8L2ZpbGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5odG1sIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuaHRtbAppbmRleCBkNmM4MTBlLi42MDdmN2U4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5o
dG1sCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmh0
bWwKQEAgLTE0Niw2ICsxNDYsNyBAQCBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9q
YXZhc2NyaXB0IiBzcmM9IkRldGFpbGVkSGVhcHNob3RWaWV3LmpzIj48L3NjcmlwdD4KICAgICA8
c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJEZWJ1Z2dlck1vZGVsLmpzIj48L3Nj
cmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJEZWJ1Z2dlclBy
ZXNlbnRhdGlvbk1vZGVsLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2
YXNjcmlwdCIgc3JjPSJTb3VyY2VGaWxlLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9
InRleHQvamF2YXNjcmlwdCIgc3JjPSJET01BZ2VudC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlw
dCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iVGltZWxpbmVBZ2VudC5qcyI+PC9zY3JpcHQ+
CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iVGltZWxpbmVQYW5lbC5q
cyI+PC9zY3JpcHQ+Cg==
</data>
<flag name="review"
          id="78563"
          type_id="1"
          status="-"
          setter="yurys"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>86451</attachid>
            <date>2011-03-22 03:16:15 -0700</date>
            <delta_ts>2011-03-22 07:01:28 -0700</delta_ts>
            <desc>Patch.</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>17714</size>
            <attacher name="Pavel Podivilov">podivilov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBlYzg2NDE2Li43NzZhZjljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzMg
QEAKKzIwMTEtMDMtMjEgIFBhdmVsIFBvZGl2aWxvdiAgPHBvZGl2aWxvdkBjaHJvbWl1bS5vcmc+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViIElu
c3BlY3RvcjogbW92ZSBjb250ZW50IGxvYWRpbmcgbG9naWMgdG8gYSBuZXcgU291cmNlRmlsZSBj
bGFzcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU2
NzQ4CisKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ov
V2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9EZWJ1Z2dlclBy
ZXNlbnRhdGlvbk1vZGVsLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2Vu
dGF0aW9uTW9kZWwucHJvdG90eXBlLnJlcXVlc3RTb3VyY2VGaWxlQ29udGVudCk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5wcm90b3R5cGUuX2FkZFNj
cmlwdC5jb250ZW50Q2hhbmdlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVz
ZW50YXRpb25Nb2RlbC5wcm90b3R5cGUuX2FkZFNjcmlwdCk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5wcm90b3R5cGUuX3NjcmlwdFNvdXJjZUNoYW5n
ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwucHJv
dG90eXBlLnNldCBzZWxlY3RlZENhbGxGcmFtZSk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250
LWVuZC9Tb3VyY2VGaWxlLmpzOiBBZGRlZC4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5Tb3VyY2VG
aWxlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Tb3VyY2VGaWxlLnByb3RvdHlwZS5hZGRTY3Jp
cHQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNvdXJjZUZpbGUucHJvdG90eXBlLnJlcXVlc3RD
b250ZW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Tb3VyY2VGaWxlLnByb3RvdHlwZS5mb3Jj
ZUxvYWRDb250ZW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Tb3VyY2VGaWxlLnByb3RvdHlw
ZS5yZWxvYWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNvdXJjZUZpbGUucHJvdG90eXBlLl9y
ZXF1ZXN0Q29udGVudCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU291cmNlRmlsZS5wcm90b3R5
cGUuX2xvYWRSZXNvdXJjZUNvbnRlbnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNvdXJjZUZp
bGUucHJvdG90eXBlLl9sb2FkU2NyaXB0Q29udGVudCk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
U291cmNlRmlsZS5wcm90b3R5cGUuX2xvYWRBbmRDb25jYXRlbmF0ZVNjcmlwdHNDb250ZW50KToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5Tb3VyY2VGaWxlLnByb3RvdHlwZS5fZGlkUmVxdWVzdENv
bnRlbnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNvdXJjZUZpbGUucHJvdG90eXBlLl9oYXNQ
ZW5kaW5nUmVzb3VyY2UpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvV2ViS2l0LnFy
YzoKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5odG1sOgorCiAyMDEx
LTAzLTIxICBBYmhpc2hlayBBcnlhICA8aW5mZXJub0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggMGVjNjhlNC4uNjUy
YjRkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtNjM0MSw2ICs2MzQxLDcgQEAKICAgICAgICAgICAg
ICdpbnNwZWN0b3IvZnJvbnQtZW5kL1NpZGViYXJQYW5lLmpzJywKICAgICAgICAgICAgICdpbnNw
ZWN0b3IvZnJvbnQtZW5kL1NpZGViYXJUcmVlRWxlbWVudC5qcycsCiAgICAgICAgICAgICAnaW5z
cGVjdG9yL2Zyb250LWVuZC9Tb3VyY2VDU1NUb2tlbml6ZXIuanMnLAorICAgICAgICAgICAgJ2lu
c3BlY3Rvci9mcm9udC1lbmQvU291cmNlRmlsZS5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9y
L2Zyb250LWVuZC9Tb3VyY2VGcmFtZS5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250
LWVuZC9Tb3VyY2VGcmFtZUNvbnRlbnQuanMnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9u
dC1lbmQvU291cmNlSFRNTFRva2VuaXplci5qcycsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
dmNwcm9qL1dlYkNvcmUudmNwcm9qCmluZGV4IDkyY2U4OGQuLjM1MDA3ODggMTAwNzU1Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBAIC02NjgyMSw2ICs2Njgy
MSwxMCBAQAogCQkJCQk+CiAJCQkJPC9GaWxlPgogCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0
aD0iLi5caW5zcGVjdG9yXGZyb250LWVuZFxTb3VyY2VGaWxlLmpzIgorCQkJCQk+CisJCQkJPC9G
aWxlPgorCQkJCTxGaWxlCiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXGZyb250LWVu
ZFxTb3VyY2VGcmFtZS5qcyIKIAkJCQkJPgogCQkJCTwvRmlsZT4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5q
cyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGVidWdnZXJQcmVzZW50YXRp
b25Nb2RlbC5qcwppbmRleCBiYTgzZmYyLi5iZDQzMzVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwuanMKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EZWJ1Z2dlclByZXNlbnRhdGlv
bk1vZGVsLmpzCkBAIC01OSwyMyArNTksNyBAQCBXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50
YXRpb25Nb2RlbC5wcm90b3R5cGUgPSB7CiAKICAgICByZXF1ZXN0U291cmNlRmlsZUNvbnRlbnQ6
IGZ1bmN0aW9uKHNvdXJjZUZpbGVJZCwgY2FsbGJhY2spCiAgICAgewotICAgICAgICB2YXIgc291
cmNlRmlsZSA9IHRoaXMuX3NvdXJjZUZpbGVzW3NvdXJjZUZpbGVJZF07Ci0gICAgICAgIHZhciBz
Y3JpcHQgPSBzb3VyY2VGaWxlLl9zY3JpcHQ7Ci0gICAgICAgIHZhciByZXNvdXJjZSA9IHNvdXJj
ZUZpbGUuX3Jlc291cmNlOwotICAgICAgICBpZiAocmVzb3VyY2UpIHsKLSAgICAgICAgICAgIC8v
IEZJWE1FOiBtb3ZlIHByb3ZpZGVyJ3MgbG9hZCBmdW5jdGlvbnMgaGVyZS4KLSAgICAgICAgICAg
IHZhciBwcm92aWRlciA9IG5ldyBXZWJJbnNwZWN0b3IuU291cmNlRnJhbWVEZWxlZ2F0ZUZvclNj
cmlwdHNQYW5lbChudWxsLCBudWxsLCBzY3JpcHQpOwotICAgICAgICAgICAgaWYgKHJlc291cmNl
LmZpbmlzaGVkKQotICAgICAgICAgICAgICAgIHByb3ZpZGVyLl9sb2FkUmVzb3VyY2VDb250ZW50
KHJlc291cmNlLCBjYWxsYmFjayk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAg
cHJvdmlkZXIuX2xvYWRBbmRDb25jYXRlbmF0ZVNjcmlwdHNDb250ZW50KGNhbGxiYWNrKTsKLSAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGZ1bmN0aW9uIGRpZFJlcXVlc3RTb3VyY2Uoc291
cmNlKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGNhbGxiYWNrKCJ0ZXh0L2phdmFz
Y3JpcHQiLCBzb3VyY2UpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgc2NyaXB0LnJlcXVl
c3RTb3VyY2UoZGlkUmVxdWVzdFNvdXJjZSk7Ci0gICAgICAgIH0KKyAgICAgICAgdGhpcy5fc291
cmNlRmlsZXNbc291cmNlRmlsZUlkXS5yZXF1ZXN0Q29udGVudChjYWxsYmFjayk7CiAgICAgfSwK
IAogICAgIF9wYXJzZWRTY3JpcHRTb3VyY2U6IGZ1bmN0aW9uKGV2ZW50KQpAQCAtOTEsNTMgKzc1
LDI2IEBAIFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLnByb3RvdHlwZSA9
IHsKICAgICBfYWRkU2NyaXB0OiBmdW5jdGlvbihzY3JpcHQpCiAgICAgewogICAgICAgICB2YXIg
c291cmNlRmlsZUlkID0gc2NyaXB0LnNvdXJjZVVSTCB8fCBzY3JpcHQuc291cmNlSUQ7Ci0gICAg
ICAgIGlmIChzb3VyY2VGaWxlSWQgaW4gdGhpcy5fc291cmNlRmlsZXMpCisgICAgICAgIHZhciBz
b3VyY2VGaWxlID0gdGhpcy5fc291cmNlRmlsZXNbc291cmNlRmlsZUlkXTsKKyAgICAgICAgaWYg
KHNvdXJjZUZpbGUpIHsKKyAgICAgICAgICAgIHNvdXJjZUZpbGUuYWRkU2NyaXB0KHNjcmlwdCk7
CiAgICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgdmFyIHNvdXJjZUZpbGUgPSB7fTsKLSAg
ICAgICAgc291cmNlRmlsZS5pZCA9IHNvdXJjZUZpbGVJZDsKLSAgICAgICAgc291cmNlRmlsZS51
cmwgPSBzY3JpcHQuc291cmNlVVJMOwotICAgICAgICBzb3VyY2VGaWxlLmlzRXh0ZW5zaW9uU2Ny
aXB0ID0gc2NyaXB0LndvcmxkVHlwZSA9PT0gV2ViSW5zcGVjdG9yLlNjcmlwdC5Xb3JsZFR5cGUu
RVhURU5TSU9OU19XT1JMRDsKLSAgICAgICAgc291cmNlRmlsZS5fc2NyaXB0ID0gc2NyaXB0Owot
ICAgICAgICBzb3VyY2VGaWxlLl9yZXNvdXJjZSA9IHNjcmlwdC5zb3VyY2VVUkwgPyB0aGlzLl9y
ZXNvdXJjZUZvclVSTChzY3JpcHQuc291cmNlVVJMKSA6IG51bGw7Ci0gICAgICAgIHRoaXMuX3Nv
dXJjZUZpbGVzW3NvdXJjZUZpbGVJZF0gPSBzb3VyY2VGaWxlOwotCi0gICAgICAgIGlmICghc291
cmNlRmlsZS5fcmVzb3VyY2UgfHwgc291cmNlRmlsZS5fcmVzb3VyY2UuZmluaXNoZWQpCi0gICAg
ICAgICAgICB0aGlzLl9zb3VyY2VGaWxlQWRkZWQoc291cmNlRmlsZSk7Ci0gICAgICAgIGVsc2Ug
ewotICAgICAgICAgICAgc291cmNlRmlsZS5fcGVuZGluZyA9IHRydWU7Ci0gICAgICAgICAgICBm
dW5jdGlvbiByZXNvdXJjZUZpbmlzaGVkKCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICBpZiAoc291cmNlRmlsZS5fcGVuZGluZykgewotICAgICAgICAgICAgICAgICAgICBkZWxldGUg
c291cmNlRmlsZS5fcGVuZGluZzsKLSAgICAgICAgICAgICAgICAgICAgdGhpcy5fc291cmNlRmls
ZUFkZGVkKHNvdXJjZUZpbGUpOwotICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAg
ICAgICAgICAgIC8vIFNvdXJjZSBmaWxlIHdhcyBmb3JjaWJseSBhZGRlZCBiZWZvcmUgcmVzb3Vy
Y2Ugd2FzIGZpbmlzaGVkLgotICAgICAgICAgICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRU
b0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5FdmVudHMu
U291cmNlRmlsZUNoYW5nZWQsIHNvdXJjZUZpbGUpOwotICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIHNvdXJjZUZpbGUuX3Jlc291cmNlLmFkZEV2ZW50TGlzdGVu
ZXIoImZpbmlzaGVkIiwgcmVzb3VyY2VGaW5pc2hlZC5iaW5kKHRoaXMpKTsKICAgICAgICAgfQot
ICAgIH0sCiAKLSAgICBfZW5zdXJlU291cmNlRmlsZUFkZGVkOiBmdW5jdGlvbihzY3JpcHQpCi0g
ICAgewotICAgICAgICB2YXIgc291cmNlRmlsZSA9IHRoaXMuX3NvdXJjZUZpbGVzW3NjcmlwdC5z
b3VyY2VVUkwgfHwgc2NyaXB0LnNvdXJjZUlEXTsKLSAgICAgICAgaWYgKCFzb3VyY2VGaWxlLl9y
ZXNvdXJjZSB8fCBzb3VyY2VGaWxlLl9yZXNvdXJjZS5maW5pc2hlZCkKLSAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgZnVuY3Rpb24gY29udGVudENoYW5nZWQoc291cmNlRmlsZSkKKyAgICAg
ICAgeworICAgICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVj
dG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwuRXZlbnRzLlNvdXJjZUZpbGVDaGFuZ2VkLCB0
aGlzLl9zb3VyY2VGaWxlc1tzb3VyY2VGaWxlSWRdKTsKKyAgICAgICAgfQorICAgICAgICBzb3Vy
Y2VGaWxlID0gbmV3IFdlYkluc3BlY3Rvci5Tb3VyY2VGaWxlKHNvdXJjZUZpbGVJZCwgc2NyaXB0
LCBjb250ZW50Q2hhbmdlZC5iaW5kKHRoaXMpKTsKKyAgICAgICAgdGhpcy5fc291cmNlRmlsZXNb
c291cmNlRmlsZUlkXSA9IHNvdXJjZUZpbGU7CiAKLSAgICAgICAgaWYgKHNvdXJjZUZpbGUuX3Bl
bmRpbmcpIHsKLSAgICAgICAgICAgIGRlbGV0ZSBzb3VyY2VGaWxlLl9wZW5kaW5nOwotICAgICAg
ICAgICAgdGhpcy5fc291cmNlRmlsZUFkZGVkKHNvdXJjZUZpbGUpOwotICAgICAgICB9IGVsc2Ug
ewotICAgICAgICAgICAgLy8gRklYTUU6IGRpc3BhdGNoIGV2ZW50IG9ubHkgaWYgc291cmNlIGZp
bGUgY29udGVudCBjaGFuZ2VkLgotICAgICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0
ZW5lcnMoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwuRXZlbnRzLlNvdXJj
ZUZpbGVDaGFuZ2VkLCBzb3VyY2VGaWxlKTsKKyAgICAgICAgdmFyIGJyZWFrcG9pbnRzID0gV2Vi
SW5zcGVjdG9yLmRlYnVnZ2VyTW9kZWwuYnJlYWtwb2ludHM7CisgICAgICAgIGZvciAodmFyIGlk
IGluIGJyZWFrcG9pbnRzKSB7CisgICAgICAgICAgICBpZiAoIShpZCBpbiB0aGlzLl9wcmVzZW50
YXRpb25CcmVha3BvaW50cykpCisgICAgICAgICAgICAgICAgdGhpcy5fYnJlYWtwb2ludEFkZGVk
KGJyZWFrcG9pbnRzW2lkXSk7CiAgICAgICAgIH0KLSAgICB9LAogCi0gICAgX3Jlc291cmNlRm9y
VVJMOiBmdW5jdGlvbih1cmwpCi0gICAgewotICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLm5l
dHdvcmtNYW5hZ2VyLmluZmxpZ2h0UmVzb3VyY2VGb3JVUkwodXJsKSB8fCBXZWJJbnNwZWN0b3Iu
cmVzb3VyY2VGb3JVUkwodXJsKTsKKyAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5l
cnMoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwuRXZlbnRzLlNvdXJjZUZp
bGVBZGRlZCwgc291cmNlRmlsZSk7CiAgICAgfSwKIAogICAgIF9zY3JpcHRTb3VyY2VDaGFuZ2Vk
OiBmdW5jdGlvbihldmVudCkKQEAgLTE4MSwxOSArMTM4LDcgQEAgV2ViSW5zcGVjdG9yLkRlYnVn
Z2VyUHJlc2VudGF0aW9uTW9kZWwucHJvdG90eXBlID0gewogICAgICAgICAgICAgICAgIHRoaXMu
c2V0QnJlYWtwb2ludChzb3VyY2VGaWxlSWQsIG5ld0xpbmVOdW1iZXIsIGJyZWFrcG9pbnQuY29u
ZGl0aW9uLCBicmVha3BvaW50LmVuYWJsZWQpOwogICAgICAgICB9CiAKLSAgICAgICAgdmFyIHNv
dXJjZUZpbGUgPSB0aGlzLl9zb3VyY2VGaWxlc1tzb3VyY2VGaWxlSWRdOwotICAgICAgICB0aGlz
LmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRp
b25Nb2RlbC5FdmVudHMuU291cmNlRmlsZUNoYW5nZWQsIHNvdXJjZUZpbGUpOwotICAgIH0sCi0K
LSAgICBfc291cmNlRmlsZUFkZGVkOiBmdW5jdGlvbihzb3VyY2VGaWxlKQotICAgIHsKLSAgICAg
ICAgc291cmNlRmlsZS5fYnJlYWtwb2ludHMgPSBbXTsKLSAgICAgICAgdmFyIGJyZWFrcG9pbnRz
ID0gV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTW9kZWwuYnJlYWtwb2ludHM7Ci0gICAgICAgIGZvciAo
dmFyIGlkIGluIGJyZWFrcG9pbnRzKSB7Ci0gICAgICAgICAgICBpZiAoIShpZCBpbiB0aGlzLl9w
cmVzZW50YXRpb25CcmVha3BvaW50cykpCi0gICAgICAgICAgICAgICAgdGhpcy5fYnJlYWtwb2lu
dEFkZGVkKGJyZWFrcG9pbnRzW2lkXSk7Ci0gICAgICAgIH0KLSAgICAgICAgdGhpcy5kaXNwYXRj
aEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwu
RXZlbnRzLlNvdXJjZUZpbGVBZGRlZCwgc291cmNlRmlsZSk7CisgICAgICAgIHRoaXMuX3NvdXJj
ZUZpbGVzW3NvdXJjZUZpbGVJZF0ucmVsb2FkKCk7CiAgICAgfSwKIAogICAgIGNvbnRpbnVlVG9M
aW5lOiBmdW5jdGlvbihzb3VyY2VGaWxlSWQsIGxpbmVOdW1iZXIpCkBAIC0yMDksOCArMTU0LDgg
QEAgV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwucHJvdG90eXBlID0gewog
ICAgICAgICBpZiAoIXNvdXJjZUZpbGUpCiAgICAgICAgICAgICByZXR1cm4gW107CiAgICAgICAg
IHZhciBicmVha3BvaW50cyA9IFtdOwotICAgICAgICBmb3IgKHZhciBsaW5lTnVtYmVyIGluIHNv
dXJjZUZpbGUuX2JyZWFrcG9pbnRzKQotICAgICAgICAgICAgYnJlYWtwb2ludHMucHVzaChzb3Vy
Y2VGaWxlLl9icmVha3BvaW50c1tsaW5lTnVtYmVyXSk7CisgICAgICAgIGZvciAodmFyIGxpbmVO
dW1iZXIgaW4gc291cmNlRmlsZS5icmVha3BvaW50cykKKyAgICAgICAgICAgIGJyZWFrcG9pbnRz
LnB1c2goc291cmNlRmlsZS5icmVha3BvaW50c1tsaW5lTnVtYmVyXSk7CiAgICAgICAgIHJldHVy
biBicmVha3BvaW50czsKICAgICB9LAogCkBAIC0yNTUsNyArMjAwLDcgQEAgV2ViSW5zcGVjdG9y
LkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwucHJvdG90eXBlID0gewogICAgIHsKICAgICAgICAg
dmFyIHNvdXJjZUZpbGUgPSB0aGlzLnNvdXJjZUZpbGUoc291cmNlRmlsZUlkKTsKICAgICAgICAg
aWYgKHNvdXJjZUZpbGUpCi0gICAgICAgICAgICByZXR1cm4gc291cmNlRmlsZS5fYnJlYWtwb2lu
dHNbbGluZU51bWJlcl07CisgICAgICAgICAgICByZXR1cm4gc291cmNlRmlsZS5icmVha3BvaW50
c1tsaW5lTnVtYmVyXTsKICAgICB9LAogCiAgICAgX2JyZWFrcG9pbnRBZGRlZDogZnVuY3Rpb24o
YnJlYWtwb2ludCkKQEAgLTI4Nyw3ICsyMzIsNyBAQCBXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVz
ZW50YXRpb25Nb2RlbC5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgdGhpcy5fcHJlc2VudGF0aW9u
QnJlYWtwb2ludHNbYnJlYWtwb2ludC5pZF0gPSBwcmVzZW50YXRpb25CcmVha3BvaW50OwogICAg
ICAgICB2YXIgc291cmNlRmlsZSA9IHRoaXMuc291cmNlRmlsZShzb3VyY2VMb2NhdGlvbi5zb3Vy
Y2VGaWxlSWQpOwotICAgICAgICBzb3VyY2VGaWxlLl9icmVha3BvaW50c1tzb3VyY2VMb2NhdGlv
bi5saW5lTnVtYmVyXSA9IHByZXNlbnRhdGlvbkJyZWFrcG9pbnQ7CisgICAgICAgIHNvdXJjZUZp
bGUuYnJlYWtwb2ludHNbc291cmNlTG9jYXRpb24ubGluZU51bWJlcl0gPSBwcmVzZW50YXRpb25C
cmVha3BvaW50OwogICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNw
ZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5FdmVudHMuQnJlYWtwb2ludEFkZGVkLCBw
cmVzZW50YXRpb25CcmVha3BvaW50KTsKICAgICB9LAogCkBAIC0yOTYsNyArMjQxLDcgQEAgV2Vi
SW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwucHJvdG90eXBlID0gewogICAgICAg
ICB2YXIgYnJlYWtwb2ludCA9IHRoaXMuX3ByZXNlbnRhdGlvbkJyZWFrcG9pbnRzW2JyZWFrcG9p
bnRJZF07CiAgICAgICAgIGRlbGV0ZSB0aGlzLl9wcmVzZW50YXRpb25CcmVha3BvaW50c1ticmVh
a3BvaW50SWRdOwogICAgICAgICB2YXIgc291cmNlRmlsZSA9IHRoaXMuc291cmNlRmlsZShicmVh
a3BvaW50LnNvdXJjZUZpbGVJZCk7Ci0gICAgICAgIGRlbGV0ZSBzb3VyY2VGaWxlLl9icmVha3Bv
aW50c1ticmVha3BvaW50LmxpbmVOdW1iZXJdOworICAgICAgICBkZWxldGUgc291cmNlRmlsZS5i
cmVha3BvaW50c1ticmVha3BvaW50LmxpbmVOdW1iZXJdOwogICAgICAgICB0aGlzLmRpc3BhdGNo
RXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5F
dmVudHMuQnJlYWtwb2ludFJlbW92ZWQsIGJyZWFrcG9pbnQpOwogICAgIH0sCiAKQEAgLTM0OSw3
ICsyOTQsOSBAQCBXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5wcm90b3R5
cGUgPSB7CiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgdmFyIHNjcmlwdCA9IFdlYklu
c3BlY3Rvci5kZWJ1Z2dlck1vZGVsLnNjcmlwdEZvclNvdXJjZUlEKGNhbGxGcmFtZS5zb3VyY2VJ
RCk7Ci0gICAgICAgIHRoaXMuX2Vuc3VyZVNvdXJjZUZpbGVBZGRlZChzY3JpcHQpOworICAgICAg
ICB2YXIgc291cmNlRmlsZSA9IHRoaXMuX3NvdXJjZUZpbGVzW3NjcmlwdC5zb3VyY2VVUkwgfHwg
c2NyaXB0LnNvdXJjZUlEXTsKKyAgICAgICAgaWYgKHNvdXJjZUZpbGUpCisgICAgICAgICAgICBz
b3VyY2VGaWxlLmZvcmNlTG9hZENvbnRlbnQoc2NyaXB0KTsKICAgICAgICAgY2FsbEZyYW1lLnNv
dXJjZUxvY2F0aW9uID0gdGhpcy5fYWN0dWFsTG9jYXRpb25Ub1NvdXJjZUxvY2F0aW9uKHNjcmlw
dC5zb3VyY2VVUkwsIHNjcmlwdC5zb3VyY2VJRCwgY2FsbEZyYW1lLmxpbmUsIGNhbGxGcmFtZS5j
b2x1bW4pOwogICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0
b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5FdmVudHMuQ2FsbEZyYW1lU2VsZWN0ZWQsIGNh
bGxGcmFtZSk7CiAgICAgfSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvU291cmNlRmlsZS5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvU291cmNlRmlsZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYTJm
ZmY2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9Tb3VyY2VGaWxlLmpzCkBAIC0wLDAgKzEsMTUwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAg
ICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMK
KyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
KyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworV2ViSW5zcGVjdG9yLlNvdXJjZUZpbGUg
PSBmdW5jdGlvbihpZCwgc2NyaXB0LCBjb250ZW50Q2hhbmdlZERlbGVnYXRlKQoreworICAgIHRo
aXMuX3NjcmlwdHMgPSBbc2NyaXB0XTsKKyAgICB0aGlzLl9jb250ZW50Q2hhbmdlZERlbGVnYXRl
ID0gY29udGVudENoYW5nZWREZWxlZ2F0ZTsKKyAgICBpZiAoc2NyaXB0LnNvdXJjZVVSTCkKKyAg
ICAgICAgdGhpcy5fcmVzb3VyY2UgPSBXZWJJbnNwZWN0b3IubmV0d29ya01hbmFnZXIuaW5mbGln
aHRSZXNvdXJjZUZvclVSTChzY3JpcHQuc291cmNlVVJMKSB8fCBXZWJJbnNwZWN0b3IucmVzb3Vy
Y2VGb3JVUkwoc2NyaXB0LnNvdXJjZVVSTCk7CisgICAgdGhpcy5fcmVxdWVzdENvbnRlbnRDYWxs
YmFja3MgPSBbXTsKKworICAgIHRoaXMuaWQgPSBpZDsKKyAgICB0aGlzLnVybCA9IHNjcmlwdC5z
b3VyY2VVUkw7CisgICAgdGhpcy5pc0V4dGVuc2lvblNjcmlwdCA9IHNjcmlwdC53b3JsZFR5cGUg
PT09IFdlYkluc3BlY3Rvci5TY3JpcHQuV29ybGRUeXBlLkVYVEVOU0lPTlNfV09STEQ7CisgICAg
dGhpcy5icmVha3BvaW50cyA9IHt9OworCisgICAgaWYgKHRoaXMuX2hhc1BlbmRpbmdSZXNvdXJj
ZSgpKQorICAgICAgICB0aGlzLl9yZXNvdXJjZS5hZGRFdmVudExpc3RlbmVyKCJmaW5pc2hlZCIs
IHRoaXMucmVsb2FkLmJpbmQodGhpcykpOworfQorCitXZWJJbnNwZWN0b3IuU291cmNlRmlsZS5w
cm90b3R5cGUgPSB7CisgICAgYWRkU2NyaXB0OiBmdW5jdGlvbihzY3JpcHQpCisgICAgeworICAg
ICAgICB0aGlzLl9zY3JpcHRzLnB1c2goc2NyaXB0KTsKKyAgICB9LAorCisgICAgcmVxdWVzdENv
bnRlbnQ6IGZ1bmN0aW9uKGNhbGxiYWNrKQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMuX2NvbnRl
bnRMb2FkZWQpIHsKKyAgICAgICAgICAgIGNhbGxiYWNrKHRoaXMuX21pbWVUeXBlLCB0aGlzLl9j
b250ZW50KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIHRoaXMu
X3JlcXVlc3RDb250ZW50Q2FsbGJhY2tzLnB1c2goY2FsbGJhY2spOworICAgICAgICB0aGlzLl9y
ZXF1ZXN0Q29udGVudCgpOworICAgIH0sCisKKyAgICBmb3JjZUxvYWRDb250ZW50OiBmdW5jdGlv
bihzY3JpcHQpCisgICAgeworICAgICAgICBpZiAoIXRoaXMuX2hhc1BlbmRpbmdSZXNvdXJjZSgp
KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGlmICghdGhpcy5fY29uY2F0ZW5hdGVk
U2NyaXB0cykKKyAgICAgICAgICAgIHRoaXMuX2NvbmNhdGVuYXRlZFNjcmlwdHMgPSB7fTsKKyAg
ICAgICAgaWYgKHRoaXMuX2NvbmNhdGVuYXRlZFNjcmlwdHNbc2NyaXB0LnNvdXJjZUlEXSkKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLl9zY3Jp
cHRzLmxlbmd0aDsgKytpKQorICAgICAgICAgICAgdGhpcy5fY29uY2F0ZW5hdGVkU2NyaXB0c1t0
aGlzLl9zY3JpcHRzW2ldLnNvdXJjZUlEXSA9IHRydWU7CisKKyAgICAgICAgdGhpcy5yZWxvYWQo
KTsKKworICAgICAgICBpZiAoIXRoaXMuX2NvbnRlbnRSZXF1ZXN0ZWQpIHsKKyAgICAgICAgICAg
IHRoaXMuX2NvbnRlbnRSZXF1ZXN0ZWQgPSB0cnVlOworICAgICAgICAgICAgdGhpcy5fbG9hZEFu
ZENvbmNhdGVuYXRlU2NyaXB0c0NvbnRlbnQoKTsKKyAgICAgICAgfQorICAgIH0sCisKKyAgICBy
ZWxvYWQ6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLl9jb250ZW50TG9hZGVk
KSB7CisgICAgICAgICAgICB0aGlzLl9jb250ZW50TG9hZGVkID0gZmFsc2U7CisgICAgICAgICAg
ICB0aGlzLl9jb250ZW50Q2hhbmdlZERlbGVnYXRlKCk7CisgICAgICAgIH0gZWxzZSBpZiAodGhp
cy5fY29udGVudFJlcXVlc3RlZCkKKyAgICAgICAgICAgIHRoaXMuX3JlbG9hZENvbnRlbnQgPSB0
cnVlOworICAgICAgICBlbHNlIGlmICh0aGlzLl9yZXF1ZXN0Q29udGVudENhbGxiYWNrcy5sZW5n
dGgpCisgICAgICAgICAgICB0aGlzLl9yZXF1ZXN0Q29udGVudCgpOworICAgIH0sCisKKyAgICBf
cmVxdWVzdENvbnRlbnQ6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLl9jb250
ZW50UmVxdWVzdGVkKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHRoaXMuX2NvbnRl
bnRSZXF1ZXN0ZWQgPSB0cnVlOworICAgICAgICBpZiAodGhpcy5fcmVzb3VyY2UgJiYgdGhpcy5f
cmVzb3VyY2UuZmluaXNoZWQpCisgICAgICAgICAgICB0aGlzLl9sb2FkUmVzb3VyY2VDb250ZW50
KCk7CisgICAgICAgIGVsc2UgaWYgKCF0aGlzLl9yZXNvdXJjZSkKKyAgICAgICAgICAgIHRoaXMu
X2xvYWRTY3JpcHRDb250ZW50KCk7CisgICAgICAgIGVsc2UgaWYgKHRoaXMuX2NvbmNhdGVuYXRl
ZFNjcmlwdHMpCisgICAgICAgICAgICB0aGlzLl9sb2FkQW5kQ29uY2F0ZW5hdGVTY3JpcHRzQ29u
dGVudCgpOworICAgICAgICBlbHNlCisgICAgICAgICAgICB0aGlzLl9jb250ZW50UmVxdWVzdGVk
ID0gZmFsc2U7CisgICAgfSwKKworICAgIF9sb2FkUmVzb3VyY2VDb250ZW50OiBmdW5jdGlvbigp
CisgICAgeworICAgICAgICAvLyBGSVhNRTogbW92ZSBwcm92aWRlcidzIGxvYWQgZnVuY3Rpb25z
IGhlcmUuCisgICAgICAgIHZhciBwcm92aWRlciA9IG5ldyBXZWJJbnNwZWN0b3IuU291cmNlRnJh
bWVEZWxlZ2F0ZUZvclNjcmlwdHNQYW5lbChudWxsLCBudWxsLCB0aGlzLl9zY3JpcHRzWzBdKTsK
KyAgICAgICAgcHJvdmlkZXIuX2xvYWRSZXNvdXJjZUNvbnRlbnQodGhpcy5fcmVzb3VyY2UsIHRo
aXMuX2RpZFJlcXVlc3RDb250ZW50LmJpbmQodGhpcykpOworICAgIH0sCisKKyAgICBfbG9hZFNj
cmlwdENvbnRlbnQ6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHRoaXMuX3NjcmlwdHNbMF0u
cmVxdWVzdFNvdXJjZSh0aGlzLl9kaWRSZXF1ZXN0Q29udGVudC5iaW5kKHRoaXMsICJ0ZXh0L2ph
dmFzY3JpcHQiKSk7CisgICAgfSwKKworICAgIF9sb2FkQW5kQ29uY2F0ZW5hdGVTY3JpcHRzQ29u
dGVudDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgLy8gRklYTUU6IG1vdmUgcHJvdmlkZXIn
cyBsb2FkIGZ1bmN0aW9ucyBoZXJlLgorICAgICAgICB2YXIgcHJvdmlkZXIgPSBuZXcgV2ViSW5z
cGVjdG9yLlNvdXJjZUZyYW1lRGVsZWdhdGVGb3JTY3JpcHRzUGFuZWwobnVsbCwgbnVsbCwgdGhp
cy5fc2NyaXB0c1swXSk7CisgICAgICAgIHByb3ZpZGVyLl9sb2FkQW5kQ29uY2F0ZW5hdGVTY3Jp
cHRzQ29udGVudCh0aGlzLl9kaWRSZXF1ZXN0Q29udGVudC5iaW5kKHRoaXMpKTsKKyAgICB9LAor
CisgICAgX2RpZFJlcXVlc3RDb250ZW50OiBmdW5jdGlvbihtaW1lVHlwZSwgY29udGVudCkKKyAg
ICB7CisgICAgICAgIHRoaXMuX2NvbnRlbnRMb2FkZWQgPSB0cnVlOworICAgICAgICB0aGlzLl9j
b250ZW50UmVxdWVzdGVkID0gZmFsc2U7CisgICAgICAgIHRoaXMuX21pbWVUeXBlID0gbWltZVR5
cGU7CisgICAgICAgIHRoaXMuX2NvbnRlbnQgPSBjb250ZW50OworCisgICAgICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgdGhpcy5fcmVxdWVzdENvbnRlbnRDYWxsYmFja3MubGVuZ3RoOyArK2kpCisg
ICAgICAgICAgICB0aGlzLl9yZXF1ZXN0Q29udGVudENhbGxiYWNrc1tpXShtaW1lVHlwZSwgY29u
dGVudCk7CisgICAgICAgIHRoaXMuX3JlcXVlc3RDb250ZW50Q2FsbGJhY2tzID0gW107CisKKyAg
ICAgICAgaWYgKHRoaXMuX3JlbG9hZENvbnRlbnQpCisgICAgICAgICAgICB0aGlzLnJlbG9hZCgp
OworICAgIH0sCisKKyAgICBfaGFzUGVuZGluZ1Jlc291cmNlOiBmdW5jdGlvbigpCisgICAgewor
ICAgICAgICByZXR1cm4gdGhpcy5fcmVzb3VyY2UgJiYgIXRoaXMuX3Jlc291cmNlLmZpbmlzaGVk
OworICAgIH0KK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvV2ViS2l0LnFyYyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvV2ViS2l0
LnFyYwppbmRleCAzYTVlYTUxLi4yZjk2ZmYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5xcmMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9XZWJLaXQucXJjCkBAIC0zMiw2ICszMiw3IEBACiAgICAgPGZpbGU+RGF0
YUdyaWQuanM8L2ZpbGU+CiAgICAgPGZpbGU+RGVidWdnZXJNb2RlbC5qczwvZmlsZT4KICAgICA8
ZmlsZT5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLmpzPC9maWxlPgorICAgIDxmaWxlPlNvdXJj
ZUZpbGUuanM8L2ZpbGU+CiAgICAgPGZpbGU+RE9NQWdlbnQuanM8L2ZpbGU+CiAgICAgPGZpbGU+
RE9NU3RvcmFnZS5qczwvZmlsZT4KICAgICA8ZmlsZT5ET01TdG9yYWdlSXRlbXNWaWV3LmpzPC9m
aWxlPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNw
ZWN0b3IuaHRtbCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9y
Lmh0bWwKaW5kZXggZDZjODEwZS4uNjA3ZjdlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuaHRtbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5odG1sCkBAIC0xNDYsNiArMTQ2LDcgQEAgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJEZXRhaWxlZEhl
YXBzaG90Vmlldy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3Jp
cHQiIHNyYz0iRGVidWdnZXJNb2RlbC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0
ZXh0L2phdmFzY3JpcHQiIHNyYz0iRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5qcyI+PC9zY3Jp
cHQ+CisgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iU291cmNlRmlsZS5q
cyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iRE9N
QWdlbnQuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBz
cmM9IlRpbWVsaW5lQWdlbnQuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9q
YXZhc2NyaXB0IiBzcmM9IlRpbWVsaW5lUGFuZWwuanMiPjwvc2NyaXB0Pgo=
</data>
<flag name="review"
          id="78719"
          type_id="1"
          status="+"
          setter="yurys"
    />
          </attachment>
      

    </bug>

</bugzilla>