<?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>106795</bug_id>
          
          <creation_ts>2013-01-14 07:43:41 -0800</creation_ts>
          <short_desc>Web Inspector: Introduce file mapping allowing to map network loaded scripts and stylesheets to file system files.</short_desc>
          <delta_ts>2013-01-16 02:28:07 -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>1</everconfirmed>
          <reporter name="Vsevolod Vlasov">vsevik</reporter>
          <assigned_to name="Vsevolod Vlasov">vsevik</assigned_to>
          <cc>apavlov</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>vsevik</cc>
    
    <cc>web-inspector-bugs</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>806348</commentid>
    <comment_count>0</comment_count>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2013-01-14 07:43:41 -0800</bug_when>
    <thetext>Introduced file mapping for inspector.
FileMapping is essentially an array of MappingEntries where each MappingEntry is a pair of urlPrefix and pathPrefix.
When scripts and stylesheets are mapped to uiSourceCodes FileMapping methods are used to establish prefix based matching with file system uiSourceCodes if possible.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>806383</commentid>
    <comment_count>1</comment_count>
      <attachid>182583</attachid>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2013-01-14 08:43:32 -0800</bug_when>
    <thetext>Created attachment 182583
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>806401</commentid>
    <comment_count>2</comment_count>
      <attachid>182583</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2013-01-14 09:02:10 -0800</bug_when>
    <thetext>Comment on attachment 182583
Patch

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

&gt; Source/WebCore/inspector/front-end/BreakpointManager.js:453
&gt; +            var url = WebInspector.fileMapping.urlForUISourceCode(this._primaryUILocation.uiSourceCode);

I think I like it more the way it was before. I.e. if each UISourceCode has exactly one (or zero) URLs and that URL does not change during the UISourceCode lifetime, why not to store it internally? External mapping just adds indirection. Look at the way you bloat the code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>807335</commentid>
    <comment_count>3</comment_count>
      <attachid>182781</attachid>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2013-01-15 08:33:09 -0800</bug_when>
    <thetext>Created attachment 182781
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>808153</commentid>
    <comment_count>4</comment_count>
      <attachid>182781</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2013-01-16 01:27:38 -0800</bug_when>
    <thetext>Comment on attachment 182781
Patch

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

&gt; LayoutTests/inspector/file-mapping.html:40
&gt; +    InspectorTest.assertEquals(fileMapping.uriForURL(&quot;http://www.example.com&quot;), &quot;uri:/home/example.com&quot;, &quot;fileMapping.uriForURL failed.&quot;);

Please never use assertEquals, do InspectorTest.addResult(fileMapping.uriForURL(&quot;http://www.example.com&quot;)) instead; It greatly improves debuggability.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>808203</commentid>
    <comment_count>5</comment_count>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2013-01-16 02:28:07 -0800</bug_when>
    <thetext>Committed r139860: &lt;http://trac.webkit.org/changeset/139860&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>182583</attachid>
            <date>2013-01-14 08:43:32 -0800</date>
            <delta_ts>2013-01-15 08:33:04 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-106795-20130114204031.patch</filename>
            <type>text/plain</type>
            <size>40981</size>
            <attacher name="Vsevolod Vlasov">vsevik</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM5NTgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2RjNjU4MjRhYzVjMDI0
NjY3ZTRkMTNiNzUwNDE2ZTM1Yzk2Yjc2YS4uZWIyODBhZTlkOWNhOTIxYTUxMTQ3YzkzZWIxOWVi
YTg5Y2VjYThiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDczIEBACisyMDEzLTAxLTE0ICBWc2V2
b2xvZCBWbGFzb3YgIDx2c2V2aWtAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IEludHJvZHVjZSBmaWxlIG1hcHBpbmcgYWxsb3dpbmcgdG8gbWFwIG5ldHdvcmsgbG9hZGVk
IHNjcmlwdHMgYW5kIHN0eWxlc2hlZXRzIHRvIGZpbGUgc3lzdGVtIGZpbGVzLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA2Nzk1CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW50cm9kdWNlZCBmaWxlIG1h
cHBpbmcgZm9yIGluc3BlY3Rvci4KKyAgICAgICAgRmlsZU1hcHBpbmcgaXMgZXNzZW50aWFsbHkg
YW4gYXJyYXkgb2YgTWFwcGluZ0VudHJpZXMgd2hlcmUgZWFjaCBNYXBwaW5nRW50cnkgaXMgYSBw
YWlyIG9mIHVybFByZWZpeCBhbmQgcGF0aFByZWZpeC4KKyAgICAgICAgV2hlbiBzY3JpcHRzIGFu
ZCBzdHlsZXNoZWV0cyBhcmUgbWFwcGVkIHRvIHVpU291cmNlQ29kZXMgRmlsZU1hcHBpbmcgbWV0
aG9kcyBhcmUgdXNlZCB0byBlc3RhYmxpc2gKKyAgICAgICAgcHJlZml4IGJhc2VkIG1hdGNoaW5n
IHdpdGggZmlsZSBzeXN0ZW0gdWlTb3VyY2VDb2RlcyBpZiBwb3NzaWJsZS4KKworICAgICAgICBU
ZXN0OiBpbnNwZWN0b3IvZmlsZS1tYXBwaW5nLmh0bWwKKworICAgICAgICAqIFdlYkNvcmUuZ3lw
aToKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBp
bnNwZWN0b3IvY29tcGlsZS1mcm9udC1lbmQucHk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250
LWVuZC9CcmVha3BvaW50TWFuYWdlci5qczoKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5k
L0NvbXBpbGVyU2NyaXB0TWFwcGluZy5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db21waWxl
clNjcmlwdE1hcHBpbmcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbXBpbGVyU2NyaXB0TWFw
cGluZy5wcm90b3R5cGUucmF3TG9jYXRpb25Ub1VJTG9jYXRpb24pOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkNvbXBpbGVyU2NyaXB0TWFwcGluZy5wcm90b3R5cGUudWlMb2NhdGlvblRvUmF3TG9j
YXRpb24pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbXBpbGVyU2NyaXB0TWFwcGluZy5wcm90
b3R5cGUuZ2V0IGFkZFNjcmlwdC5nZXQgdGhpcyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29t
cGlsZXJTY3JpcHRNYXBwaW5nLnByb3RvdHlwZS5nZXQgYWRkU2NyaXB0KToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5Db21waWxlclNjcmlwdE1hcHBpbmcucHJvdG90eXBlLl9iaW5kVUlTb3VyY2VD
b2RlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db21waWxlclNjcmlwdE1hcHBpbmcucHJvdG90
eXBlLl91aVNvdXJjZUNvZGVBZGRlZFRvV29ya3NwYWNlKToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
ZnJvbnQtZW5kL0ZpbGVNYXBwaW5nLmpzOiBBZGRlZC4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5G
aWxlTWFwcGluZyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRmlsZU1hcHBpbmcucHJvdG90eXBl
Lmhhc01hcHBpbmdGb3JVUkwpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkZpbGVNYXBwaW5nLnBy
b3RvdHlwZS51cmlGb3JVUkwpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkZpbGVNYXBwaW5nLnBy
b3RvdHlwZS51cmxGb3JVSVNvdXJjZUNvZGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkZpbGVN
YXBwaW5nLnByb3RvdHlwZS51cmxGb3JVUkkpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkZpbGVN
YXBwaW5nLnByb3RvdHlwZS5zZXRNYXBwaW5ncyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRmls
ZU1hcHBpbmcucHJvdG90eXBlLm1hcHBpbmdzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5GaWxl
TWFwcGluZy5wcm90b3R5cGUuX2Rlc2VyaWFsaXplKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5G
aWxlTWFwcGluZy5wcm90b3R5cGUuX3NlcmlhbGl6ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
RmlsZU1hcHBpbmcuTWFwcGluZ0VudHJ5KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5GaWxlTWFw
cGluZy5NYXBwaW5nRW50cnkuZGVzZXJpYWxpemUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkZp
bGVNYXBwaW5nLk1hcHBpbmdFbnRyeS5wcm90b3R5cGUubWF0Y2hlc1VSTCk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuRmlsZU1hcHBpbmcuTWFwcGluZ0VudHJ5LnByb3RvdHlwZS5tYXRjaGVzVVJJ
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5GaWxlTWFwcGluZy5NYXBwaW5nRW50cnkucHJvdG90
eXBlLnVyaUZvclVSTCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRmlsZU1hcHBpbmcuTWFwcGlu
Z0VudHJ5LnByb3RvdHlwZS51cmxGb3JVUkkpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkZpbGVN
YXBwaW5nLk1hcHBpbmdFbnRyeS5wcm90b3R5cGUuc2VyaWFsaXplKToKKyAgICAgICAgKiBpbnNw
ZWN0b3IvZnJvbnQtZW5kL05ldHdvcmtVSVNvdXJjZUNvZGVQcm92aWRlci5qczoKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5OZXR3b3JrVUlTb3VyY2VDb2RlUHJvdmlkZXIucHJvdG90eXBlLl9hZGRG
aWxlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlU2NyaXB0TWFwcGlu
Zy5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZVNjcmlwdE1hcHBpbmcucHJvdG90
eXBlLl93b3Jrc3BhY2VVSVNvdXJjZUNvZGVGb3JTY3JpcHQpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLlJlc291cmNlU2NyaXB0TWFwcGluZy5wcm90b3R5cGUuX3NjcmlwdHNGb3JVSVNvdXJjZUNv
ZGUpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VVdGlscy5qczoKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5kaXNwbGF5TmFtZUZvclVSTCk6CisgICAgICAgICogaW5zcGVj
dG9yL2Zyb250LWVuZC9TQVNTU291cmNlTWFwcGluZy5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5TQVNTU291cmNlTWFwcGluZyk6CisgICAgICAgIChfYWRkVVJMTWFwcGluZyk6CisgICAgICAg
IChyYXdMb2NhdGlvblRvVUlMb2NhdGlvbik6CisgICAgICAgIChfcmVzZXQpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLlNBU1NTb3VyY2VNYXBwaW5nLk1hcHBpbmdFbnRyeSk6CisgICAgICAgICog
aW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRzUGFuZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuU2NyaXB0c1BhbmVsLnByb3RvdHlwZS5fYWRkVUlTb3VyY2VDb2RlKToKKyAgICAgICAgKiBp
bnNwZWN0b3IvZnJvbnQtZW5kL1N0eWxlc1NvdXJjZU1hcHBpbmcuanM6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuU3R5bGVzU291cmNlTWFwcGluZyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3R5
bGVzU291cmNlTWFwcGluZy5wcm90b3R5cGUucmF3TG9jYXRpb25Ub1VJTG9jYXRpb24pOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLlN0eWxlc1NvdXJjZU1hcHBpbmcucHJvdG90eXBlLnVpTG9jYXRp
b25Ub1Jhd0xvY2F0aW9uKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TdHlsZXNTb3VyY2VNYXBw
aW5nLnByb3RvdHlwZS5fdWlTb3VyY2VDb2RlQWRkZWRUb1dvcmtzcGFjZSk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuU3R5bGVzU291cmNlTWFwcGluZy5wcm90b3R5cGUuX3Byb2plY3RXaWxsUmVz
ZXQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlN0eWxlQ29udGVudEJpbmRpbmcucHJvdG90eXBl
Lik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3R5bGVDb250ZW50QmluZGluZy5wcm90b3R5cGUu
X2lubmVyU3R5bGVTaGVldENoYW5nZWQpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQv
V2ViS2l0LnFyYzoKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5odG1s
OgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzOgorCiAyMDEyLTEy
LTI4ICBWc2V2b2xvZCBWbGFzb3YgIDx2c2V2aWtAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdl
YiBJbnNwZWN0b3I6IFN1cHBvcnQgaW5zcGVjdG9yIGZpbGUgc3lzdGVtIGFjY2VzcyB3aXRoIGlz
b2xhdGVkIGZpbGUgc3lzdGVtIHRocm91Z2ggSW5zcGVjdG9yRnJvbnRlbmRIb3N0LgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5neXBpCmluZGV4IDk5M2ViZDVjZjdjZDA2NjdmMjU5ZGRjYzU1MjRhZDhiOWY2NzI5N2QuLjEz
ZDZlN2UyMzI1NGM3NDY1NjExZGU2ZmQ3ZTVhNTI0NzE1ODY2NDUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkK
QEAgLTUxNDYsNiArNTE0Niw3IEBACiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9F
eHRlbnNpb25TZXJ2ZXIuanMnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvRXh0
ZW5zaW9uVmlldy5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9GaWxlTWFu
YWdlci5qcycsCisgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9GaWxlTWFwcGluZy5q
cycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9GaWxlU3lzdGVtTWFwcGluZy5q
cycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9GaWxlU3lzdGVtTW9kZWwuanMn
LAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvRmlsZVV0aWxzLmpzJywKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5kZXggYzE4ZDhkOTcy
NDMwN2M3Y2VjZTBkOWVmZDA5OGZhNTkwMzhkNDNhZC4uNDE2Yzc2MmEyZmZmYTdlMjc2ZmMxYjgy
OTBjNzYxOGU4ZmM5Y2Q3MCAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3By
b2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2Vi
Q29yZS52Y3Byb2oKQEAgLTc2NzI1LDYgKzc2NzI1LDEwIEBACiAJCQkJCT4KIAkJCQk8L0ZpbGU+
CiAJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcZnJvbnQtZW5kXEZp
bGVNYXBwaW5nLmpzIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCiAJCQkJCVJlbGF0
aXZlUGF0aD0iLi5caW5zcGVjdG9yXGZyb250LWVuZFxGaWxlU3lzdGVtTWFwcGluZy5qcyIKIAkJ
CQkJPgogCQkJCTwvRmlsZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9j
b21waWxlLWZyb250LWVuZC5weSBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9jb21waWxlLWZy
b250LWVuZC5weQppbmRleCAzYTRhZDk3YjUzOGQ0MmNlZmU1NDdhZGI0ZTI4MDg5Y2ZhZjExMDlk
Li4xZTQ4MjA1NzIwNThiZWU0OTlmYWNmNWM4MmVlNjYxY2E4ZjM0YzIxIDEwMDc1NQotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvY29tcGlsZS1mcm9udC1lbmQucHkKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2NvbXBpbGUtZnJvbnQtZW5kLnB5CkBAIC03Niw2ICs3Niw3IEBA
IG1vZHVsZXMgPSBbCiAgICAgICAgICAgICAiRGVidWdnZXJNb2RlbC5qcyIsCiAgICAgICAgICAg
ICAiRGVidWdnZXJTY3JpcHRNYXBwaW5nLmpzIiwKICAgICAgICAgICAgICJGaWxlTWFuYWdlci5q
cyIsCisgICAgICAgICAgICAiRmlsZU1hcHBpbmcuanMiLAogICAgICAgICAgICAgIkZpbGVTeXN0
ZW1NYXBwaW5nLmpzIiwKICAgICAgICAgICAgICJGaWxlU3lzdGVtTW9kZWwuanMiLAogICAgICAg
ICAgICAgIkZpbGVVdGlscy5qcyIsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL0JyZWFrcG9pbnRNYW5hZ2VyLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9CcmVha3BvaW50TWFuYWdlci5qcwppbmRleCAzMmRlMTQ1ZDBjOWE4NDEx
ZmI1MGEzNzQ0ZmRmMzc5OWI3MTVjZDcyLi41NzIxNGMyNTE3YWI4OTJlNzg4YjRkMzk3YzkyMDRm
ZDUyNDM3YzI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L0JyZWFrcG9pbnRNYW5hZ2VyLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvQnJlYWtwb2ludE1hbmFnZXIuanMKQEAgLTQ0OSw4ICs0NDksMTAgQEAgV2ViSW5zcGVj
dG9yLkJyZWFrcG9pbnRNYW5hZ2VyLkJyZWFrcG9pbnQucHJvdG90eXBlID0gewogICAgICAgICB2
YXIgZGVidWdnZXJNb2RlbExvY2F0aW9uID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuRGVidWdn
ZXJNb2RlbC5Mb2NhdGlvbn0gKi8gKHJhd0xvY2F0aW9uKTsKICAgICAgICAgaWYgKGRlYnVnZ2Vy
TW9kZWxMb2NhdGlvbikKICAgICAgICAgICAgIHRoaXMuX2JyZWFrcG9pbnRNYW5hZ2VyLl9kZWJ1
Z2dlck1vZGVsLnNldEJyZWFrcG9pbnRCeVNjcmlwdExvY2F0aW9uKGRlYnVnZ2VyTW9kZWxMb2Nh
dGlvbiwgdGhpcy5fY29uZGl0aW9uLCBkaWRTZXRCcmVha3BvaW50LmJpbmQodGhpcykpOwotICAg
ICAgICBlbHNlCi0gICAgICAgICAgICB0aGlzLl9icmVha3BvaW50TWFuYWdlci5fZGVidWdnZXJN
b2RlbC5zZXRCcmVha3BvaW50QnlVUkwodGhpcy5fcHJpbWFyeVVJTG9jYXRpb24udWlTb3VyY2VD
b2RlLnVybCwgdGhpcy5fcHJpbWFyeVVJTG9jYXRpb24ubGluZU51bWJlciwgMCwgdGhpcy5fY29u
ZGl0aW9uLCBkaWRTZXRCcmVha3BvaW50LmJpbmQodGhpcykpOworICAgICAgICBlbHNlIHsKKyAg
ICAgICAgICAgIHZhciB1cmwgPSBXZWJJbnNwZWN0b3IuZmlsZU1hcHBpbmcudXJsRm9yVUlTb3Vy
Y2VDb2RlKHRoaXMuX3ByaW1hcnlVSUxvY2F0aW9uLnVpU291cmNlQ29kZSk7CisgICAgICAgICAg
ICB0aGlzLl9icmVha3BvaW50TWFuYWdlci5fZGVidWdnZXJNb2RlbC5zZXRCcmVha3BvaW50QnlV
UkwodXJsLCB0aGlzLl9wcmltYXJ5VUlMb2NhdGlvbi5saW5lTnVtYmVyLCAwLCB0aGlzLl9jb25k
aXRpb24sIGRpZFNldEJyZWFrcG9pbnQuYmluZCh0aGlzKSk7CisgICAgICAgIH0KIAogICAgICAg
ICAvKioKICAgICAgICAgICogQHRoaXMge1dlYkluc3BlY3Rvci5CcmVha3BvaW50TWFuYWdlci5C
cmVha3BvaW50fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9Db21waWxlclNjcmlwdE1hcHBpbmcuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL0NvbXBpbGVyU2NyaXB0TWFwcGluZy5qcwppbmRleCBlZDE1YmI2MmZkNGY5M2EwMmRh
MmM5MTJiMDliN2IyMDhjYzcyYmZjLi4zMjZhNmI2MTY2NjIxMzI2Mjg5YTliMjllOWQ5NDhlNTFh
NjQwZTY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0Nv
bXBpbGVyU2NyaXB0TWFwcGluZy5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL0NvbXBpbGVyU2NyaXB0TWFwcGluZy5qcwpAQCAtMzcsNiArMzcsNyBAQAogV2ViSW5z
cGVjdG9yLkNvbXBpbGVyU2NyaXB0TWFwcGluZyA9IGZ1bmN0aW9uKHdvcmtzcGFjZSwgbmV0d29y
a1dvcmtzcGFjZVByb3ZpZGVyKQogewogICAgIHRoaXMuX3dvcmtzcGFjZSA9IHdvcmtzcGFjZTsK
KyAgICB0aGlzLl93b3Jrc3BhY2UuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuVUlTb3Vy
Y2VDb2RlUHJvdmlkZXIuRXZlbnRzLlVJU291cmNlQ29kZUFkZGVkLCB0aGlzLl91aVNvdXJjZUNv
ZGVBZGRlZFRvV29ya3NwYWNlLCB0aGlzKTsKICAgICB0aGlzLl9uZXR3b3JrV29ya3NwYWNlUHJv
dmlkZXIgPSBuZXR3b3JrV29ya3NwYWNlUHJvdmlkZXI7CiAgICAgLyoqIEB0eXBlIHtPYmplY3Qu
PHN0cmluZywgV2ViSW5zcGVjdG9yLlBvc2l0aW9uQmFzZWRTb3VyY2VNYXA+fSAqLwogICAgIHRo
aXMuX3NvdXJjZU1hcEZvclNvdXJjZU1hcFVSTCA9IHt9OwpAQCAtNjIsNyArNjMsMTEgQEAgV2Vi
SW5zcGVjdG9yLkNvbXBpbGVyU2NyaXB0TWFwcGluZy5wcm90b3R5cGUgPSB7CiAgICAgICAgIHZh
ciBlbnRyeSA9IHNvdXJjZU1hcC5maW5kRW50cnkobGluZU51bWJlciwgY29sdW1uTnVtYmVyKTsK
ICAgICAgICAgaWYgKGVudHJ5Lmxlbmd0aCA9PT0gMikKICAgICAgICAgICAgIHJldHVybiBudWxs
OwotICAgICAgICB2YXIgdWlTb3VyY2VDb2RlID0gdGhpcy5fd29ya3NwYWNlLnVpU291cmNlQ29k
ZUZvclVSTChlbnRyeVsyXSk7CisgICAgICAgIHZhciB1cmwgPSBlbnRyeVsyXTsKKyAgICAgICAg
dmFyIHVyaSA9IFdlYkluc3BlY3Rvci5maWxlTWFwcGluZy51cmlGb3JVUkwodXJsKTsKKyAgICAg
ICAgdmFyIHVpU291cmNlQ29kZSA9IHRoaXMuX3dvcmtzcGFjZS51aVNvdXJjZUNvZGVGb3JVUkko
dXJpKTsKKyAgICAgICAgaWYgKCF1aVNvdXJjZUNvZGUpCisgICAgICAgICAgICByZXR1cm4gbnVs
bDsKICAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuVUlMb2NhdGlvbih1aVNvdXJjZUNv
ZGUsIGVudHJ5WzNdLCBlbnRyeVs0XSk7CiAgICAgfSwKIApAQCAtNzQsOCArNzksMTMgQEAgV2Vi
SW5zcGVjdG9yLkNvbXBpbGVyU2NyaXB0TWFwcGluZy5wcm90b3R5cGUgPSB7CiAgICAgICovCiAg
ICAgdWlMb2NhdGlvblRvUmF3TG9jYXRpb246IGZ1bmN0aW9uKHVpU291cmNlQ29kZSwgbGluZU51
bWJlciwgY29sdW1uTnVtYmVyKQogICAgIHsKLSAgICAgICAgdmFyIHNvdXJjZU1hcCA9IHRoaXMu
X3NvdXJjZU1hcEZvclVSTFt1aVNvdXJjZUNvZGUudXJsXTsKLSAgICAgICAgdmFyIGVudHJ5ID0g
c291cmNlTWFwLmZpbmRFbnRyeVJldmVyc2VkKHVpU291cmNlQ29kZS51cmwsIGxpbmVOdW1iZXIp
OworICAgICAgICB2YXIgdXJsID0gV2ViSW5zcGVjdG9yLmZpbGVNYXBwaW5nLnVybEZvclVJU291
cmNlQ29kZSh1aVNvdXJjZUNvZGUpOworICAgICAgICBpZiAoIXVybCkKKyAgICAgICAgICAgIHJl
dHVybiBudWxsOworICAgICAgICB2YXIgc291cmNlTWFwID0gdGhpcy5fc291cmNlTWFwRm9yVVJM
W3VybF07CisgICAgICAgIGlmICghc291cmNlTWFwKQorICAgICAgICAgICAgcmV0dXJuIG51bGw7
CisgICAgICAgIHZhciBlbnRyeSA9IHNvdXJjZU1hcC5maW5kRW50cnlSZXZlcnNlZCh1cmwsIGxp
bmVOdW1iZXIpOwogICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTW9kZWwuY3Jl
YXRlUmF3TG9jYXRpb24odGhpcy5fc2NyaXB0Rm9yU291cmNlTWFwLmdldChzb3VyY2VNYXApLCBl
bnRyeVswXSwgZW50cnlbMV0pOwogICAgIH0sCiAKQEAgLTk1LDI2ICsxMDUsNTEgQEAgV2ViSW5z
cGVjdG9yLkNvbXBpbGVyU2NyaXB0TWFwcGluZy5wcm90b3R5cGUgPSB7CiAgICAgICAgIHZhciBz
b3VyY2VVUkxzID0gc291cmNlTWFwLnNvdXJjZXMoKTsKICAgICAgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCBzb3VyY2VVUkxzLmxlbmd0aDsgKytpKSB7CiAgICAgICAgICAgICB2YXIgc291cmNlVVJM
ID0gc291cmNlVVJMc1tpXTsKLSAgICAgICAgICAgIGlmICh0aGlzLl93b3Jrc3BhY2UudWlTb3Vy
Y2VDb2RlRm9yVVJMKHNvdXJjZVVSTCkpCisgICAgICAgICAgICB2YXIgdXJpID0gV2ViSW5zcGVj
dG9yLmZpbGVNYXBwaW5nLnVyaUZvclVSTChzb3VyY2VVUkwpOworICAgICAgICAgICAgaWYgKHRo
aXMuX3NvdXJjZU1hcEZvclVSTFtzb3VyY2VVUkxdKQogICAgICAgICAgICAgICAgIGNvbnRpbnVl
OwogICAgICAgICAgICAgdGhpcy5fc291cmNlTWFwRm9yVVJMW3NvdXJjZVVSTF0gPSBzb3VyY2VN
YXA7Ci0gICAgICAgICAgICB2YXIgc291cmNlQ29udGVudCA9IHNvdXJjZU1hcC5zb3VyY2VDb250
ZW50KHNvdXJjZVVSTCk7Ci0gICAgICAgICAgICB2YXIgY29udGVudFByb3ZpZGVyOwotICAgICAg
ICAgICAgaWYgKHNvdXJjZUNvbnRlbnQpCi0gICAgICAgICAgICAgICAgY29udGVudFByb3ZpZGVy
ID0gbmV3IFdlYkluc3BlY3Rvci5TdGF0aWNDb250ZW50UHJvdmlkZXIoV2ViSW5zcGVjdG9yLnJl
c291cmNlVHlwZXMuU2NyaXB0LCBzb3VyY2VDb250ZW50KTsKLSAgICAgICAgICAgIGVsc2UKLSAg
ICAgICAgICAgICAgICBjb250ZW50UHJvdmlkZXIgPSBuZXcgV2ViSW5zcGVjdG9yLkNvbXBpbGVy
U291cmNlTWFwcGluZ0NvbnRlbnRQcm92aWRlcihzb3VyY2VVUkwpOwotICAgICAgICAgICAgdmFy
IHVpU291cmNlQ29kZSA9IHRoaXMuX25ldHdvcmtXb3Jrc3BhY2VQcm92aWRlci5hZGRGaWxlRm9y
VVJMKHNvdXJjZVVSTCwgY29udGVudFByb3ZpZGVyLCB0cnVlKTsKLSAgICAgICAgICAgIHVpU291
cmNlQ29kZS5zZXRTb3VyY2VNYXBwaW5nKHRoaXMpOwotICAgICAgICAgICAgdWlTb3VyY2VDb2Rl
LmlzQ29udGVudFNjcmlwdCA9IHNjcmlwdC5pc0NvbnRlbnRTY3JpcHQ7CisgICAgICAgICAgICBp
ZiAoIVdlYkluc3BlY3Rvci5maWxlTWFwcGluZy5oYXNNYXBwaW5nRm9yVVJMKHNvdXJjZVVSTCkg
JiYgIXRoaXMuX3dvcmtzcGFjZS51aVNvdXJjZUNvZGVGb3JVUkkodXJpKSkgeworICAgICAgICAg
ICAgICAgIHZhciBzb3VyY2VDb250ZW50ID0gc291cmNlTWFwLnNvdXJjZUNvbnRlbnQoc291cmNl
VVJMKTsKKyAgICAgICAgICAgICAgICB2YXIgY29udGVudFByb3ZpZGVyOworICAgICAgICAgICAg
ICAgIGlmIChzb3VyY2VDb250ZW50KQorICAgICAgICAgICAgICAgICAgICBjb250ZW50UHJvdmlk
ZXIgPSBuZXcgV2ViSW5zcGVjdG9yLlN0YXRpY0NvbnRlbnRQcm92aWRlcihXZWJJbnNwZWN0b3Iu
cmVzb3VyY2VUeXBlcy5TY3JpcHQsIHNvdXJjZUNvbnRlbnQpOworICAgICAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICAgICAgY29udGVudFByb3ZpZGVyID0gbmV3IFdlYkluc3BlY3Rv
ci5Db21waWxlclNvdXJjZU1hcHBpbmdDb250ZW50UHJvdmlkZXIoc291cmNlVVJMKTsKKyAgICAg
ICAgICAgICAgICB0aGlzLl9uZXR3b3JrV29ya3NwYWNlUHJvdmlkZXIuYWRkRmlsZUZvclVSTChz
b3VyY2VVUkwsIGNvbnRlbnRQcm92aWRlciwgdHJ1ZSk7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICB2YXIgdWlTb3VyY2VDb2RlID0gdGhpcy5fd29ya3NwYWNlLnVpU291cmNlQ29kZUZvclVS
SSh1cmkpOworICAgICAgICAgICAgaWYgKHVpU291cmNlQ29kZSkgeworICAgICAgICAgICAgICAg
IHRoaXMuX2JpbmRVSVNvdXJjZUNvZGUodGhpcy5fd29ya3NwYWNlLnVpU291cmNlQ29kZUZvclVS
SSh1cmkpKTsKKyAgICAgICAgICAgICAgICB1aVNvdXJjZUNvZGUuaXNDb250ZW50U2NyaXB0ID0g
c2NyaXB0LmlzQ29udGVudFNjcmlwdDsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQotCiAgICAg
ICAgIHRoaXMuX3NvdXJjZU1hcEZvclNjcmlwdElkW3NjcmlwdC5zY3JpcHRJZF0gPSBzb3VyY2VN
YXA7CiAgICAgICAgIHRoaXMuX3NjcmlwdEZvclNvdXJjZU1hcC5wdXQoc291cmNlTWFwLCBzY3Jp
cHQpOwogICAgICAgICBzY3JpcHQucHVzaFNvdXJjZU1hcHBpbmcodGhpcyk7CiAgICAgfSwKIAog
ICAgIC8qKgorICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZX0gdWlTb3Vy
Y2VDb2RlCisgICAgICovCisgICAgX2JpbmRVSVNvdXJjZUNvZGU6IGZ1bmN0aW9uKHVpU291cmNl
Q29kZSkKKyAgICB7CisgICAgICAgIHVpU291cmNlQ29kZS5zZXRTb3VyY2VNYXBwaW5nKHRoaXMp
OworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5FdmVudH0g
ZXZlbnQKKyAgICAgKi8KKyAgICBfdWlTb3VyY2VDb2RlQWRkZWRUb1dvcmtzcGFjZTogZnVuY3Rp
b24oZXZlbnQpCisgICAgeworICAgICAgICB2YXIgdWlTb3VyY2VDb2RlID0gLyoqIEB0eXBlIHtX
ZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2RlfSAqLyAoZXZlbnQuZGF0YSk7CisgICAgICAgIHZhciBz
b3VyY2VVUkwgPSBXZWJJbnNwZWN0b3IuZmlsZU1hcHBpbmcudXJsRm9yVUlTb3VyY2VDb2RlKHVp
U291cmNlQ29kZSk7CisgICAgICAgIGlmICghc291cmNlVVJMIHx8ICF0aGlzLl9zb3VyY2VNYXBG
b3JVUkxbc291cmNlVVJMXSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgdGhpcy5fYmlu
ZFVJU291cmNlQ29kZSh1aVNvdXJjZUNvZGUpOworICAgIH0sCisKKyAgICAvKioKICAgICAgKiBA
cGFyYW0ge1dlYkluc3BlY3Rvci5TY3JpcHR9IHNjcmlwdAogICAgICAqIEByZXR1cm4ge1dlYklu
c3BlY3Rvci5Qb3NpdGlvbkJhc2VkU291cmNlTWFwfQogICAgICAqLwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9GaWxlTWFwcGluZy5qcyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRmlsZU1hcHBpbmcuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTk1
YjdmZmJkOTJmZjIwNDIzMmQzYjU2MzY0OWEwNzkzMTg0ZDlhZgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRmlsZU1hcHBpbmcuanMKQEAgLTAs
MCArMSwyMTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1l
dDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICogQHBhcmFtIHtXZWJJbnNwZWN0b3Iu
RmlsZVN5c3RlbU1hcHBpbmd9IGZpbGVTeXN0ZW1NYXBwaW5nCisgKi8KK1dlYkluc3BlY3Rvci5G
aWxlTWFwcGluZyA9IGZ1bmN0aW9uKGZpbGVTeXN0ZW1NYXBwaW5nKQoreworICAgIHRoaXMuX2Zp
bGVTeXN0ZW1NYXBwaW5nID0gZmlsZVN5c3RlbU1hcHBpbmc7CisgICAgdGhpcy5fbWFwcGluZ0Vu
dHJpZXNTZXR0aW5nID0gV2ViSW5zcGVjdG9yLnNldHRpbmdzLmNyZWF0ZVNldHRpbmcoImZpbGVN
YXBwaW5nRW50cmllcyIsIFtdKTsKKyAgICAvKiogQHR5cGUge0FycmF5LjxXZWJJbnNwZWN0b3Iu
RmlsZU1hcHBpbmcuTWFwcGluZ0VudHJ5Pn0gKi8KKyAgICB0aGlzLl9tYXBwaW5nRW50cmllcyA9
IFtdOworICAgIHRoaXMuX2Rlc2VyaWFsaXplKC8qKiBAdHlwZSB7QXJyYXkuPFdlYkluc3BlY3Rv
ci5GaWxlTWFwcGluZy5NYXBwaW5nRW50cnk+fSAqLyAodGhpcy5fbWFwcGluZ0VudHJpZXNTZXR0
aW5nLmdldCgpKSk7Cit9CisKKy8qKiBAdHlwZWRlZiB7e3VybFByZWZpeDogc3RyaW5nLCBwYXRo
UHJlZml4OiBzdHJpbmd9fSAqLworV2ViSW5zcGVjdG9yLkZpbGVNYXBwaW5nLlNlcmlhbGl6ZWRN
YXBwaW5nRW50cnk7CisKK1dlYkluc3BlY3Rvci5GaWxlTWFwcGluZy5wcm90b3R5cGUgPSB7Cisg
ICAgLyoqCisgICAgICogQHBhcmFtIHtzdHJpbmd9IHVybAorICAgICAqIEByZXR1cm4ge2Jvb2xl
YW59CisgICAgICovCisgICAgaGFzTWFwcGluZ0ZvclVSTDogZnVuY3Rpb24odXJsKQorICAgIHsK
KyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLl9tYXBwaW5nRW50cmllcy5sZW5ndGg7
ICsraSkgeworICAgICAgICAgICAgaWYgKHRoaXMuX21hcHBpbmdFbnRyaWVzW2ldLm1hdGNoZXNV
UkwodXJsKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgfSwKKyAgICAKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge3N0
cmluZ30gdXJsCisgICAgICogQHJldHVybiB7c3RyaW5nfQorICAgICAqLworICAgIHVyaUZvclVS
TDogZnVuY3Rpb24odXJsKQorICAgIHsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlz
Ll9tYXBwaW5nRW50cmllcy5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgdmFyIHVyaSA9IHRo
aXMuX21hcHBpbmdFbnRyaWVzW2ldLnVyaUZvclVSTCh1cmwpOworICAgICAgICAgICAgaWYgKHR5
cGVvZiB1cmkgPT09ICJzdHJpbmciKQorICAgICAgICAgICAgICAgIHJldHVybiB1cmk7CisgICAg
ICAgIH0KKyAgICAgICAgLy8gRklYTUU6IEZpbGVNYXBwaW5nIHNob3VsZCBiZSBuZXR3b3JrIHBy
b2plY3QgYXdhcmUuIEl0IHNob3VsZCByZXR1cm4gY29ycmVjdCB1cmkgZm9yIG5ldHdvcmsgcHJv
amVjdCB1aVNvdXJjZUNvZGVzLgorICAgICAgICByZXR1cm4gdXJsOworICAgIH0sCisgICAgCisg
ICAgLyoqCisgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2RlfSB1aVNvdXJj
ZUNvZGUKKyAgICAgKiBAcmV0dXJuIHtzdHJpbmd9CisgICAgICovCisgICAgdXJsRm9yVUlTb3Vy
Y2VDb2RlOiBmdW5jdGlvbih1aVNvdXJjZUNvZGUpCisgICAgeworICAgICAgICB2YXIgdXJsID0g
dGhpcy51cmxGb3JVUkkodWlTb3VyY2VDb2RlLnVyaSgpKTsKKyAgICAgICAgaWYgKHR5cGVvZiB1
cmwgPT09ICJzdHJpbmciKQorICAgICAgICAgICAgcmV0dXJuIHVybDsKKyAgICAgICAgcmV0dXJu
IHVpU291cmNlQ29kZS51cmw7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7c3Ry
aW5nfSB1cmkKKyAgICAgKiBAcmV0dXJuIHs/c3RyaW5nfQorICAgICAqLworICAgIHVybEZvclVS
STogZnVuY3Rpb24odXJpKQorICAgIHsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlz
Ll9tYXBwaW5nRW50cmllcy5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgaWYgKHRoaXMuX21h
cHBpbmdFbnRyaWVzW2ldLm1hdGNoZXNVUkkodXJpKSkKKyAgICAgICAgICAgICAgICByZXR1cm4g
dGhpcy5fbWFwcGluZ0VudHJpZXNbaV0udXJsRm9yVVJJKHVyaSk7CisgICAgICAgIH0KKyAgICAg
ICAgcmV0dXJuIG51bGw7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7QXJyYXku
PFdlYkluc3BlY3Rvci5GaWxlTWFwcGluZy5TZXJpYWxpemVkTWFwcGluZ0VudHJ5Pn0gc2VyaWFs
aXplZE1hcHBpbmdFbnRyaWVzCisgICAgICovCisgICAgc2V0TWFwcGluZ3M6IGZ1bmN0aW9uKHNl
cmlhbGl6ZWRNYXBwaW5nRW50cmllcykKKyAgICB7CisgICAgICAgIHRoaXMuX2Rlc2VyaWFsaXpl
KHNlcmlhbGl6ZWRNYXBwaW5nRW50cmllcyk7CisgICAgICAgIHRoaXMuX3NlcmlhbGl6ZSgpOwor
ICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcmV0dXJuIHtBcnJheS48V2ViSW5zcGVjdG9yLkZp
bGVNYXBwaW5nLk1hcHBpbmdFbnRyeT59CisgICAgICovCisgICAgbWFwcGluZ3M6IGZ1bmN0aW9u
KCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9tYXBwaW5nRW50cmllcy5zbGljZSgpOwor
ICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge0FycmF5LjxXZWJJbnNwZWN0b3IuRmls
ZU1hcHBpbmcuU2VyaWFsaXplZE1hcHBpbmdFbnRyeT59IHNlcmlhbGl6ZWRNYXBwaW5nRW50cmll
cworICAgICAqLworICAgIF9kZXNlcmlhbGl6ZTogZnVuY3Rpb24oc2VyaWFsaXplZE1hcHBpbmdF
bnRyaWVzKQorICAgIHsKKyAgICAgICAgdGhpcy5fbWFwcGluZ0VudHJpZXMgPSBbXTsKKyAgICAg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzZXJpYWxpemVkTWFwcGluZ0VudHJpZXMubGVuZ3RoOyAr
K2kpCisgICAgICAgICAgICB0aGlzLl9tYXBwaW5nRW50cmllcy5wdXNoKFdlYkluc3BlY3Rvci5G
aWxlTWFwcGluZy5NYXBwaW5nRW50cnkuZGVzZXJpYWxpemUoc2VyaWFsaXplZE1hcHBpbmdFbnRy
aWVzW2ldLCB0aGlzLl9maWxlU3lzdGVtTWFwcGluZykpOworICAgIH0sCisKKyAgICBfc2VyaWFs
aXplOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB2YXIgc2F2ZWRFbnRyaWVzID0gW107Cisg
ICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5fbWFwcGluZ0VudHJpZXMubGVuZ3RoOyAr
K2kpCisgICAgICAgICAgICBzYXZlZEVudHJpZXMucHVzaCh0aGlzLl9tYXBwaW5nRW50cmllc1tp
XS5zZXJpYWxpemUoKSk7CisgICAgICAgIHRoaXMuX21hcHBpbmdFbnRyaWVzU2V0dGluZy5zZXQo
c2F2ZWRFbnRyaWVzKTsKKyAgICB9LAorCisgICAgX19wcm90b19fOiBXZWJJbnNwZWN0b3IuT2Jq
ZWN0LnByb3RvdHlwZQorfQorCisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICogQHBhcmFtIHtzdHJp
bmd9IHVybFByZWZpeAorICogQHBhcmFtIHtzdHJpbmd9IHBhdGhQcmVmaXgKKyAqIEBwYXJhbSB7
P3N0cmluZ30gdXJpUHJlZml4CisgKi8KK1dlYkluc3BlY3Rvci5GaWxlTWFwcGluZy5NYXBwaW5n
RW50cnkgPSBmdW5jdGlvbih1cmxQcmVmaXgsIHBhdGhQcmVmaXgsIHVyaVByZWZpeCkKK3sKKyAg
ICB0aGlzLl91cmxQcmVmaXggPSB1cmxQcmVmaXg7CisgICAgdGhpcy5fcGF0aFByZWZpeCA9IHBh
dGhQcmVmaXg7CisgICAgdGhpcy5fdXJpUHJlZml4ID0gdXJpUHJlZml4OworfQorCisvKioKKyAq
IEBwYXJhbSB7V2ViSW5zcGVjdG9yLkZpbGVNYXBwaW5nLlNlcmlhbGl6ZWRNYXBwaW5nRW50cnl9
IHNlcmlhbGl6ZWRNYXBwaW5nRW50cnkKKyAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLkZpbGVTeXN0
ZW1NYXBwaW5nfSBmaWxlU3lzdGVtTWFwcGluZworICovCitXZWJJbnNwZWN0b3IuRmlsZU1hcHBp
bmcuTWFwcGluZ0VudHJ5LmRlc2VyaWFsaXplID0gZnVuY3Rpb24oc2VyaWFsaXplZE1hcHBpbmdF
bnRyeSwgZmlsZVN5c3RlbU1hcHBpbmcpCit7CisgICAgdmFyIHVyaVByZWZpeCA9IGZpbGVTeXN0
ZW1NYXBwaW5nLnVyaUZvclBhdGgoc2VyaWFsaXplZE1hcHBpbmdFbnRyeS5wYXRoUHJlZml4KTsK
KyAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5GaWxlTWFwcGluZy5NYXBwaW5nRW50cnkoc2Vy
aWFsaXplZE1hcHBpbmdFbnRyeS51cmxQcmVmaXgsIHNlcmlhbGl6ZWRNYXBwaW5nRW50cnkucGF0
aFByZWZpeCwgdXJpUHJlZml4KTsKK30KKworV2ViSW5zcGVjdG9yLkZpbGVNYXBwaW5nLk1hcHBp
bmdFbnRyeS5wcm90b3R5cGUgPSB7CisgICAgLyoqCisgICAgICogQHBhcmFtIHtzdHJpbmd9IHVy
bAorICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CisgICAgICovCisgICAgbWF0Y2hlc1VSTDogZnVu
Y3Rpb24odXJsKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHVybC5pbmRleE9mKHRoaXMuX3VybFBy
ZWZpeCkgPT09IDA7CisgICAgfSwKKyAgICAKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge3N0cmlu
Z30gdXJpCisgICAgICogQHJldHVybiB7Ym9vbGVhbn0KKyAgICAgKi8KKyAgICBtYXRjaGVzVVJJ
OiBmdW5jdGlvbih1cmkpCisgICAgeworICAgICAgICBpZiAoIXRoaXMuX3VyaVByZWZpeCkKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIHVyaS5pbmRleE9mKHRoaXMu
X3VyaVByZWZpeCkgPT09IDA7CisgICAgfSwKKyAgICAKKyAgICAvKioKKyAgICAgKiBAcGFyYW0g
e3N0cmluZ30gdXJsCisgICAgICogQHJldHVybiB7P3N0cmluZ30KKyAgICAgKi8KKyAgICB1cmlG
b3JVUkw6IGZ1bmN0aW9uKHVybCkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLl91cmlQcmVmaXgg
JiYgdGhpcy5tYXRjaGVzVVJMKHVybCkpCisgICAgICAgICAgICByZXR1cm4gdGhpcy5fdXJpUHJl
Zml4ICsgdXJsLnN1YnN0cmluZyh0aGlzLl91cmxQcmVmaXgubGVuZ3RoKTsKKyAgICAgICAgcmV0
dXJuIG51bGw7CisgICAgfSwKKyAgICAKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30g
dXJpCisgICAgICogQHJldHVybiB7P3N0cmluZ30KKyAgICAgKi8KKyAgICB1cmxGb3JVUkk6IGZ1
bmN0aW9uKHVyaSkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLm1hdGNoZXNVUkkodXJpKSkKKyAg
ICAgICAgICAgIHJldHVybiB0aGlzLl91cmxQcmVmaXggKyB1cmkuc3Vic3RyaW5nKHRoaXMuX3Vy
aVByZWZpeC5sZW5ndGgpOworICAgICAgICByZXR1cm4gbnVsbDsKKyAgICB9LAorICAgIAorICAg
IC8qKgorICAgICAqIEByZXR1cm4ge09iamVjdH0KKyAgICAgKi8KKyAgICBzZXJpYWxpemU6IGZ1
bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHJldHVybiB7IHVybFByZWZpeDogdGhpcy5fdXJsUHJl
Zml4LCBwYXRoUHJlZml4OiB0aGlzLl9wYXRoUHJlZml4IH07CisgICAgfSwKKworICAgIF9fcHJv
dG9fXzogV2ViSW5zcGVjdG9yLk9iamVjdC5wcm90b3R5cGUKK30KKworLyoqCisgKiBAdHlwZSB7
P1dlYkluc3BlY3Rvci5GaWxlTWFwcGluZ30KKyAqLworV2ViSW5zcGVjdG9yLmZpbGVNYXBwaW5n
ID0gbnVsbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
TmV0d29ya1VJU291cmNlQ29kZVByb3ZpZGVyLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9OZXR3b3JrVUlTb3VyY2VDb2RlUHJvdmlkZXIuanMKaW5kZXggOWQ1MTY4MTFh
YjRkMWE5YWMyZDRlMzUxYmE2YjcxOTEyY2M4YzdiYi4uZTA2MGVkZGQ3YWExMjEwOTU4YmM5OTBh
NDkzYzQ0ODVlZDA0NDM5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9OZXR3b3JrVUlTb3VyY2VDb2RlUHJvdmlkZXIuanMKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9OZXR3b3JrVUlTb3VyY2VDb2RlUHJvdmlkZXIuanMKQEAg
LTExNCw2ICsxMTQsOSBAQCBXZWJJbnNwZWN0b3IuTmV0d29ya1VJU291cmNlQ29kZVByb3ZpZGVy
LnByb3RvdHlwZSA9IHsKICAgICAgKi8KICAgICBfYWRkRmlsZTogZnVuY3Rpb24odXJsLCBjb250
ZW50UHJvdmlkZXIsIGlzQ29udGVudFNjcmlwdCkKICAgICB7CisgICAgICAgIGlmIChXZWJJbnNw
ZWN0b3IuZmlsZU1hcHBpbmcuaGFzTWFwcGluZ0ZvclVSTCh1cmwpKQorICAgICAgICAgICAgcmV0
dXJuOworCiAgICAgICAgIHZhciB0eXBlID0gY29udGVudFByb3ZpZGVyLmNvbnRlbnRUeXBlKCk7
CiAgICAgICAgIGlmICh0eXBlICE9PSBXZWJJbnNwZWN0b3IucmVzb3VyY2VUeXBlcy5TdHlsZXNo
ZWV0ICYmIHR5cGUgIT09IFdlYkluc3BlY3Rvci5yZXNvdXJjZVR5cGVzLkRvY3VtZW50ICYmIHR5
cGUgIT09IFdlYkluc3BlY3Rvci5yZXNvdXJjZVR5cGVzLlNjcmlwdCkKICAgICAgICAgICAgIHJl
dHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVz
b3VyY2VTY3JpcHRNYXBwaW5nLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9SZXNvdXJjZVNjcmlwdE1hcHBpbmcuanMKaW5kZXggODUyZDJiNDU4NWZmOThlZmQ3MTk5MTk0
Y2Y3ODcyYWFhYTg1ODkxNy4uZWM5YjViMWMyNDA1ODBkY2U2YWIyZWYxNGM2OTc3MjU5Y2U1MTAz
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJj
ZVNjcmlwdE1hcHBpbmcuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9SZXNvdXJjZVNjcmlwdE1hcHBpbmcuanMKQEAgLTEzOCw3ICsxMzgsOSBAQCBXZWJJbnNwZWN0
b3IuUmVzb3VyY2VTY3JpcHRNYXBwaW5nLnByb3RvdHlwZSA9IHsKICAgICAgICAgLy8gRklYTUU6
IHdvcmthcm91bmQgZm9yIHNjcmlwdC5pc0R5bmFtaWNTY3JpcHQoKSBiZWluZyB1bnJlbGlhYmxl
LgogICAgICAgICBpZiAoIXNjcmlwdC5pc0lubGluZVNjcmlwdCgpICYmIHRoaXMuX2lubGluZVNj
cmlwdHNGb3JTb3VyY2VVUkxbc2NyaXB0LnNvdXJjZVVSTF0pCiAgICAgICAgICAgICByZXR1cm4g
bnVsbDsKLSAgICAgICAgcmV0dXJuIHRoaXMuX3dvcmtzcGFjZS51aVNvdXJjZUNvZGVGb3JVUkwo
c2NyaXB0LnNvdXJjZVVSTCk7CisKKyAgICAgICAgdmFyIHVyaSA9IFdlYkluc3BlY3Rvci5maWxl
TWFwcGluZy51cmlGb3JVUkwoc2NyaXB0LnNvdXJjZVVSTCk7CisgICAgICAgIHJldHVybiB0aGlz
Ll93b3Jrc3BhY2UudWlTb3VyY2VDb2RlRm9yVVJJKHVyaSk7CiAgICAgfSwKIAogICAgIC8qKgpA
QCAtMTU4LDggKzE2MCwxMSBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VTY3JpcHRNYXBwaW5nLnBy
b3RvdHlwZSA9IHsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIHJldHVybiBbXTsKICAg
ICAgICAgfQorICAgICAgICB2YXIgc291cmNlVVJMID0gV2ViSW5zcGVjdG9yLmZpbGVNYXBwaW5n
LnVybEZvclVJU291cmNlQ29kZSh1aVNvdXJjZUNvZGUpOworICAgICAgICBpZiAoIXNvdXJjZVVS
TCkKKyAgICAgICAgICAgIHJldHVybiBbXTsKICAgICAgICAgdmFyIHNjcmlwdHNGb3JTb3VyY2VV
UkwgPSBpc0lubGluZVNjcmlwdCA/IHRoaXMuX2lubGluZVNjcmlwdHNGb3JTb3VyY2VVUkwgOiB0
aGlzLl9ub25JbmxpbmVTY3JpcHRzRm9yU291cmNlVVJMOwotICAgICAgICByZXR1cm4gc2NyaXB0
c0ZvclNvdXJjZVVSTFt1aVNvdXJjZUNvZGUudXJsXSB8fCBbXTsKKyAgICAgICAgcmV0dXJuIHNj
cmlwdHNGb3JTb3VyY2VVUkxbc291cmNlVVJMXSB8fCBbXTsKICAgICB9LAogCiAgICAgLyoqCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlVXRp
bHMuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlVXRpbHMu
anMKaW5kZXggY2UwNDdhNjZhNTAwYmZmYWU4NTE1OWQ4ZWI2ZjgwNTUzNTBjNTUwZS4uNjRiN2Ux
NTFjZWE2OTllZGJiZDNjY2Y5ZDdjMDI4YTUzZjNlZmRmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZVV0aWxzLmpzCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VVdGlscy5qcwpAQCAtNTgsNyArNTgs
OCBAQCBXZWJJbnNwZWN0b3IuZGlzcGxheU5hbWVGb3JVUkwgPSBmdW5jdGlvbih1cmwpCiAgICAg
aWYgKHJlc291cmNlKQogICAgICAgICByZXR1cm4gcmVzb3VyY2UuZGlzcGxheU5hbWU7CiAKLSAg
ICB2YXIgdWlTb3VyY2VDb2RlID0gV2ViSW5zcGVjdG9yLndvcmtzcGFjZS51aVNvdXJjZUNvZGVG
b3JVUkwodXJsKTsKKyAgICB2YXIgdXJpID0gV2ViSW5zcGVjdG9yLmZpbGVNYXBwaW5nLnVyaUZv
clVSTCh1cmwpOworICAgIHZhciB1aVNvdXJjZUNvZGUgPSBXZWJJbnNwZWN0b3Iud29ya3NwYWNl
LnVpU291cmNlQ29kZUZvclVSSSh1cmkpOwogICAgIGlmICh1aVNvdXJjZUNvZGUpCiAgICAgICAg
IHJldHVybiB1aVNvdXJjZUNvZGUucGFyc2VkVVJMLmRpc3BsYXlOYW1lOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NBU1NTb3VyY2VNYXBwaW5nLmpz
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TQVNTU291cmNlTWFwcGluZy5q
cwppbmRleCAyYTY0ZDA5MzM0MDczMjQ5NjZiZWJhMGE2ZjY0MTAxZjIyYTI3ZjIzLi40MTY4OTRk
YjljYTkxOGZmMjgwMTkwYjA5ZjZiODNjZGMyZTg4Yjg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NBU1NTb3VyY2VNYXBwaW5nLmpzCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU0FTU1NvdXJjZU1hcHBpbmcuanMKQEAgLTM4
LDcgKzM4LDcgQEAgV2ViSW5zcGVjdG9yLlNBU1NTb3VyY2VNYXBwaW5nID0gZnVuY3Rpb24od29y
a3NwYWNlLCBuZXR3b3JrV29ya3NwYWNlUHJvdmlkZXIpCiB7CiAgICAgdGhpcy5fd29ya3NwYWNl
ID0gd29ya3NwYWNlOwogICAgIHRoaXMuX25ldHdvcmtXb3Jrc3BhY2VQcm92aWRlciA9IG5ldHdv
cmtXb3Jrc3BhY2VQcm92aWRlcjsKLSAgICB0aGlzLl91aUxvY2F0aW9ucyA9IHt9OworICAgIHRo
aXMuX21hcHBpbmdFbnRyaWVzID0ge307CiAgICAgdGhpcy5fY3NzVVJMc0ZvclNBU1NVUkwgPSB7
fTsKICAgICB0aGlzLl90aW1lb3V0Rm9yVVJMID0ge307CiAgICAgV2ViSW5zcGVjdG9yLnJlc291
cmNlVHJlZU1vZGVsLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZU1v
ZGVsLkV2ZW50VHlwZXMuUmVzb3VyY2VBZGRlZCwgdGhpcy5fcmVzb3VyY2VBZGRlZCwgdGhpcyk7
CkBAIC02Nyw2ICs2Nyw3IEBAIFdlYkluc3BlY3Rvci5TQVNTU291cmNlTWFwcGluZy5wcm90b3R5
cGUgPSB7CiAgICAgICovCiAgICAgX2ZpbGVTYXZlRmluaXNoZWQ6IGZ1bmN0aW9uKGV2ZW50KQog
ICAgIHsKKyAgICAgICAgLy8gRklYTUU6IGFkZCBzdXBwb3J0IGZvciBGaWxlTWFwcGluZy4KICAg
ICAgICAgdmFyIHNhc3NVUkwgPSAvKiogQHR5cGUge3N0cmluZ30gKi8gKGV2ZW50LmRhdGEpOwog
ICAgICAgICBmdW5jdGlvbiBjYWxsYmFjaygpCiAgICAgICAgIHsKQEAgLTE1MSwxOCArMTUyLDE4
IEBAIFdlYkluc3BlY3Rvci5TQVNTU291cmNlTWFwcGluZy5wcm90b3R5cGUgPSB7CiAgICAgICog
QHBhcmFtIHtzdHJpbmd9IHJhd1VSTAogICAgICAqIEBwYXJhbSB7bnVtYmVyfSByYXdMaW5lCiAg
ICAgICovCi0gICAgX2JpbmRVSVNvdXJjZUNvZGU6IGZ1bmN0aW9uKHVybCwgbGluZSwgcmF3VVJM
LCByYXdMaW5lKQorICAgIF9hZGRVUkxNYXBwaW5nOiBmdW5jdGlvbih1cmwsIGxpbmUsIHJhd1VS
TCwgcmF3TGluZSkKICAgICB7Ci0gICAgICAgIHZhciB1aVNvdXJjZUNvZGUgPSB0aGlzLl93b3Jr
c3BhY2UudWlTb3VyY2VDb2RlRm9yVVJMKHVybCk7Ci0gICAgICAgIGlmICghdWlTb3VyY2VDb2Rl
KSB7CisgICAgICAgIHZhciB1cmkgPSBXZWJJbnNwZWN0b3IuZmlsZU1hcHBpbmcudXJpRm9yVVJM
KHVybCk7CisgICAgICAgIGlmICghV2ViSW5zcGVjdG9yLmZpbGVNYXBwaW5nLmhhc01hcHBpbmdG
b3JVUkwodXJsKSAmJiAhdGhpcy5fd29ya3NwYWNlLnVpU291cmNlQ29kZUZvclVSSSh1cmkpKSB7
CiAgICAgICAgICAgICB2YXIgY29udGVudCA9IEluc3BlY3RvckZyb250ZW5kSG9zdC5sb2FkUmVz
b3VyY2VTeW5jaHJvbm91c2x5KHVybCk7CiAgICAgICAgICAgICB2YXIgY29udGVudFByb3ZpZGVy
ID0gbmV3IFdlYkluc3BlY3Rvci5TdGF0aWNDb250ZW50UHJvdmlkZXIoV2ViSW5zcGVjdG9yLnJl
c291cmNlVHlwZXMuU3R5bGVzaGVldCwgY29udGVudCwgInRleHQveC1zY3NzIik7Ci0gICAgICAg
ICAgICB1aVNvdXJjZUNvZGUgPSB0aGlzLl9uZXR3b3JrV29ya3NwYWNlUHJvdmlkZXIuYWRkRmls
ZUZvclVSTCh1cmwsIGNvbnRlbnRQcm92aWRlciwgdHJ1ZSk7Ci0gICAgICAgICAgICBXZWJJbnNw
ZWN0b3IuY3NzTW9kZWwuc2V0U291cmNlTWFwcGluZyhyYXdVUkwsIHRoaXMpOworICAgICAgICAg
ICAgdGhpcy5fbmV0d29ya1dvcmtzcGFjZVByb3ZpZGVyLmFkZEZpbGVGb3JVUkwodXJsLCBjb250
ZW50UHJvdmlkZXIsIHRydWUpOwogICAgICAgICB9CiAgICAgICAgIHZhciByYXdMb2NhdGlvblN0
cmluZyA9IHJhd1VSTCArICI6IiArIChyYXdMaW5lICsgMSk7ICAvLyBOZXh0IGxpbmUgYWZ0ZXIg
bWFwcGluZyBtZXRhaW5mbwotICAgICAgICB0aGlzLl91aUxvY2F0aW9uc1tyYXdMb2NhdGlvblN0
cmluZ10gPSBuZXcgV2ViSW5zcGVjdG9yLlVJTG9jYXRpb24odWlTb3VyY2VDb2RlLCBsaW5lIC0g
MSwgMCk7CisgICAgICAgIHRoaXMuX21hcHBpbmdFbnRyaWVzW3Jhd0xvY2F0aW9uU3RyaW5nXSA9
IG5ldyBXZWJJbnNwZWN0b3IuU0FTU1NvdXJjZU1hcHBpbmcuTWFwcGluZ0VudHJ5KHVyaSwgbGlu
ZSAtIDEsIDApOwogICAgICAgICB0aGlzLl9hZGRDU1NVUkxmb3JTQVNTVVJMKHJhd1VSTCwgdXJs
KTsKKyAgICAgICAgV2ViSW5zcGVjdG9yLmNzc01vZGVsLnNldFNvdXJjZU1hcHBpbmcocmF3VVJM
LCB0aGlzKTsKICAgICB9LAogCiAgICAgLyoqCkBAIC0xODksMTAgKzE5MCwxOCBAQCBXZWJJbnNw
ZWN0b3IuU0FTU1NvdXJjZU1hcHBpbmcucHJvdG90eXBlID0gewogICAgIHJhd0xvY2F0aW9uVG9V
SUxvY2F0aW9uOiBmdW5jdGlvbihyYXdMb2NhdGlvbikKICAgICB7CiAgICAgICAgIHZhciBsb2Nh
dGlvbiA9IC8qKiBAdHlwZSBXZWJJbnNwZWN0b3IuQ1NTTG9jYXRpb24gKi8gKHJhd0xvY2F0aW9u
KTsKLSAgICAgICAgdmFyIHVpTG9jYXRpb24gPSB0aGlzLl91aUxvY2F0aW9uc1tsb2NhdGlvbi51
cmwgKyAiOiIgKyBsb2NhdGlvbi5saW5lTnVtYmVyXTsKKyAgICAgICAgdmFyIG1hcHBpbmdFbnRy
eSA9IHRoaXMuX21hcHBpbmdFbnRyaWVzW2xvY2F0aW9uLnVybCArICI6IiArIGxvY2F0aW9uLmxp
bmVOdW1iZXJdOworICAgICAgICB2YXIgdWlMb2NhdGlvbiA9IG51bGw7OworICAgICAgICBpZiAo
bWFwcGluZ0VudHJ5KSB7CisgICAgICAgICAgICB2YXIgdWlTb3VyY2VDb2RlID0gdGhpcy5fd29y
a3NwYWNlLnVpU291cmNlQ29kZUZvclVSSShtYXBwaW5nRW50cnkudXJpKTsKKyAgICAgICAgICAg
IGlmICh1aVNvdXJjZUNvZGUpCisgICAgICAgICAgICAgICAgdWlMb2NhdGlvbiA9IG5ldyBXZWJJ
bnNwZWN0b3IuVUlMb2NhdGlvbih1aVNvdXJjZUNvZGUsIG1hcHBpbmdFbnRyeS5saW5lTnVtYmVy
LCBtYXBwaW5nRW50cnkuY29sdW1uTnVtYmVyKTsKKyAgICAgICAgfQogICAgICAgICBpZiAoIXVp
TG9jYXRpb24pIHsKLSAgICAgICAgICAgIHZhciB1aVNvdXJjZUNvZGUgPSB0aGlzLl93b3Jrc3Bh
Y2UudWlTb3VyY2VDb2RlRm9yVVJMKGxvY2F0aW9uLnVybCk7Ci0gICAgICAgICAgICB1aUxvY2F0
aW9uID0gbmV3IFdlYkluc3BlY3Rvci5VSUxvY2F0aW9uKHVpU291cmNlQ29kZSwgbG9jYXRpb24u
bGluZU51bWJlciwgMCk7CisgICAgICAgICAgICB2YXIgdXJpID0gV2ViSW5zcGVjdG9yLmZpbGVN
YXBwaW5nLnVyaUZvclVSTChsb2NhdGlvbi51cmwpOworICAgICAgICAgICAgdmFyIHVpU291cmNl
Q29kZSA9IHRoaXMuX3dvcmtzcGFjZS51aVNvdXJjZUNvZGVGb3JVUkkodXJpKTsKKyAgICAgICAg
ICAgIGlmICh1aVNvdXJjZUNvZGUpCisgICAgICAgICAgICAgICAgdWlMb2NhdGlvbiA9IG5ldyBX
ZWJJbnNwZWN0b3IuVUlMb2NhdGlvbih1aVNvdXJjZUNvZGUsIGxvY2F0aW9uLmxpbmVOdW1iZXIs
IDApOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiB1aUxvY2F0aW9uOwogICAgIH0sCkBAIC0y
MTEsOCArMjIwLDIwIEBAIFdlYkluc3BlY3Rvci5TQVNTU291cmNlTWFwcGluZy5wcm90b3R5cGUg
PSB7CiAKICAgICBfcmVzZXQ6IGZ1bmN0aW9uKCkKICAgICB7Ci0gICAgICAgIHRoaXMuX3VpTG9j
YXRpb25zID0ge307CisgICAgICAgIHRoaXMuX21hcHBpbmdFbnRyaWVzID0ge307CiAgICAgICAg
IHRoaXMuX3BvcHVsYXRlKCk7CiAgICAgfQogfQogCisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICog
QHBhcmFtIHtzdHJpbmd9IHVyaQorICogQHBhcmFtIHtudW1iZXJ9IGxpbmVOdW1iZXIKKyAqLwor
V2ViSW5zcGVjdG9yLlNBU1NTb3VyY2VNYXBwaW5nLk1hcHBpbmdFbnRyeSA9IGZ1bmN0aW9uKHVy
aSwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyKQoreworICAgIHRoaXMudXJpID0gdXJpOworICAg
IHRoaXMubGluZU51bWJlciA9IGxpbmVOdW1iZXI7CisgICAgdGhpcy5jb2x1bW5OdW1iZXIgPSBj
b2x1bW5OdW1iZXI7Cit9CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvU2NyaXB0c1BhbmVsLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9TY3JpcHRzUGFuZWwuanMKaW5kZXggYzI1NGY3MWU4YWIyNGVmZTYyODdhMDY1OWNkMWJh
NmIwZGM1NDVmNi4uOGNiNWJiOTMyYjIyOGExNmJjZTJjNTRhZDg0YzdmNjUyMDRlYTBmMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRzUGFuZWwu
anMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRzUGFuZWwu
anMKQEAgLTI1MCw5ICsyNTAsMTEgQEAgV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5wcm90b3R5
cGUgPSB7CiAgICAgICAgIHRoaXMuX25hdmlnYXRvci5hZGRVSVNvdXJjZUNvZGUodWlTb3VyY2VD
b2RlKTsKICAgICAgICAgLy8gUmVwbGFjZSBkZWJ1Z2dlciBzY3JpcHQtYmFzZWQgdWlTb3VyY2VD
b2RlIHdpdGggYSBuZXR3b3JrLWJhc2VkIG9uZS4KICAgICAgICAgdmFyIGN1cnJlbnRVSVNvdXJj
ZUNvZGUgPSB0aGlzLl9jdXJyZW50VUlTb3VyY2VDb2RlOwotICAgICAgICBpZiAoY3VycmVudFVJ
U291cmNlQ29kZSAmJiBjdXJyZW50VUlTb3VyY2VDb2RlLnByb2plY3QoKS5pc1NlcnZpY2VQcm9q
ZWN0KCkgJiYgY3VycmVudFVJU291cmNlQ29kZSAhPT0gdWlTb3VyY2VDb2RlICYmIGN1cnJlbnRV
SVNvdXJjZUNvZGUudXJsID09PSB1aVNvdXJjZUNvZGUudXJsKSB7Ci0gICAgICAgICAgICB0aGlz
Ll9zaG93RmlsZSh1aVNvdXJjZUNvZGUpOwotICAgICAgICAgICAgdGhpcy5fZWRpdG9yQ29udGFp
bmVyLnJlbW92ZVVJU291cmNlQ29kZShjdXJyZW50VUlTb3VyY2VDb2RlKTsKKyAgICAgICAgaWYg
KGN1cnJlbnRVSVNvdXJjZUNvZGUgJiYgY3VycmVudFVJU291cmNlQ29kZS5wcm9qZWN0KCkuaXNT
ZXJ2aWNlUHJvamVjdCgpICYmIGN1cnJlbnRVSVNvdXJjZUNvZGUgIT09IHVpU291cmNlQ29kZSkg
eworICAgICAgICAgICAgaWYgKHRoaXMuX2N1cnJlbnRVSVNvdXJjZUNvZGUudXJsID09PSBXZWJJ
bnNwZWN0b3IuZmlsZU1hcHBpbmcudXJsRm9yVUlTb3VyY2VDb2RlKHVpU291cmNlQ29kZSkpIHsK
KyAgICAgICAgICAgICAgICB0aGlzLl9zaG93RmlsZSh1aVNvdXJjZUNvZGUpOworICAgICAgICAg
ICAgICAgIHRoaXMuX2VkaXRvckNvbnRhaW5lci5yZW1vdmVVSVNvdXJjZUNvZGUoY3VycmVudFVJ
U291cmNlQ29kZSk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9LAogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1N0eWxlc1NvdXJjZU1hcHBp
bmcuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1N0eWxlc1NvdXJjZU1h
cHBpbmcuanMKaW5kZXggZmE4NmFjYmM0ZGYwYTE0ZTYzYzY0MWVhNGE0ZTk2MzkwZGY3ZjUwNy4u
YTRjYzkwNzU3NjY1N2JmNWNjNWEwOTZhOGJkOWM0MmIzODAzODU0MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TdHlsZXNTb3VyY2VNYXBwaW5nLmpzCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU3R5bGVzU291cmNlTWFwcGlu
Zy5qcwpAQCAtMzksNyArMzksNyBAQCBXZWJJbnNwZWN0b3IuU3R5bGVzU291cmNlTWFwcGluZyA9
IGZ1bmN0aW9uKHdvcmtzcGFjZSkKICAgICB0aGlzLl93b3Jrc3BhY2UuYWRkRXZlbnRMaXN0ZW5l
cihXZWJJbnNwZWN0b3IuV29ya3NwYWNlLkV2ZW50cy5Qcm9qZWN0V2lsbFJlc2V0LCB0aGlzLl9w
cm9qZWN0V2lsbFJlc2V0LCB0aGlzKTsKICAgICB0aGlzLl93b3Jrc3BhY2UuYWRkRXZlbnRMaXN0
ZW5lcihXZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2RlUHJvdmlkZXIuRXZlbnRzLlVJU291cmNlQ29k
ZUFkZGVkLCB0aGlzLl91aVNvdXJjZUNvZGVBZGRlZFRvV29ya3NwYWNlLCB0aGlzKTsKIAotICAg
IHRoaXMuX3VpU291cmNlQ29kZUZvclVSTCA9IHt9OworICAgIHRoaXMuX21hcHBlZFVSTHMgPSB7
fTsKIH0KIAogV2ViSW5zcGVjdG9yLlN0eWxlc1NvdXJjZU1hcHBpbmcucHJvdG90eXBlID0gewpA
QCAtNTAsNyArNTAsOCBAQCBXZWJJbnNwZWN0b3IuU3R5bGVzU291cmNlTWFwcGluZy5wcm90b3R5
cGUgPSB7CiAgICAgcmF3TG9jYXRpb25Ub1VJTG9jYXRpb246IGZ1bmN0aW9uKHJhd0xvY2F0aW9u
KQogICAgIHsKICAgICAgICAgdmFyIGxvY2F0aW9uID0gLyoqIEB0eXBlIFdlYkluc3BlY3Rvci5D
U1NMb2NhdGlvbiAqLyAocmF3TG9jYXRpb24pOwotICAgICAgICB2YXIgdWlTb3VyY2VDb2RlID0g
dGhpcy5fdWlTb3VyY2VDb2RlRm9yVVJMW2xvY2F0aW9uLnVybF07CisgICAgICAgIHZhciB1cmkg
PSBXZWJJbnNwZWN0b3IuZmlsZU1hcHBpbmcudXJpRm9yVVJMKGxvY2F0aW9uLnVybCk7CisgICAg
ICAgIHZhciB1aVNvdXJjZUNvZGUgPSB0aGlzLl93b3Jrc3BhY2UudWlTb3VyY2VDb2RlRm9yVVJJ
KHVyaSk7CiAgICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLlVJTG9jYXRpb24odWlTb3Vy
Y2VDb2RlLCBsb2NhdGlvbi5saW5lTnVtYmVyLCAwKTsKICAgICB9LAogCkBAIC02Miw0MCArNjMs
MzUgQEAgV2ViSW5zcGVjdG9yLlN0eWxlc1NvdXJjZU1hcHBpbmcucHJvdG90eXBlID0gewogICAg
ICAqLwogICAgIHVpTG9jYXRpb25Ub1Jhd0xvY2F0aW9uOiBmdW5jdGlvbih1aVNvdXJjZUNvZGUs
IGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcikKICAgICB7Ci0gICAgICAgIHJldHVybiBuZXcgV2Vi
SW5zcGVjdG9yLkNTU0xvY2F0aW9uKHVpU291cmNlQ29kZS5jb250ZW50VVJMKCkgfHwgIiIsIGxp
bmVOdW1iZXIpOworICAgICAgICB2YXIgdXJsID0gV2ViSW5zcGVjdG9yLmZpbGVNYXBwaW5nLnVy
bEZvclVJU291cmNlQ29kZSh1aVNvdXJjZUNvZGUpOworICAgICAgICByZXR1cm4gbmV3IFdlYklu
c3BlY3Rvci5DU1NMb2NhdGlvbih1cmwgfHwgIiIsIGxpbmVOdW1iZXIpOwogICAgIH0sCiAKICAg
ICBfdWlTb3VyY2VDb2RlQWRkZWRUb1dvcmtzcGFjZTogZnVuY3Rpb24oZXZlbnQpCiAgICAgewog
ICAgICAgICB2YXIgdWlTb3VyY2VDb2RlID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuVUlTb3Vy
Y2VDb2RlfSAqLyAoZXZlbnQuZGF0YSk7Ci0gICAgICAgIGlmICghdWlTb3VyY2VDb2RlLnVybCB8
fCB0aGlzLl91aVNvdXJjZUNvZGVGb3JVUkxbdWlTb3VyY2VDb2RlLnVybF0pCi0gICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIGlmICh1aVNvdXJjZUNvZGUuY29udGVudFR5cGUoKSAhPT0gV2Vi
SW5zcGVjdG9yLnJlc291cmNlVHlwZXMuU3R5bGVzaGVldCkKICAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgaWYgKCFXZWJJbnNwZWN0b3IucmVzb3VyY2VGb3JVUkwodWlTb3VyY2VDb2RlLnVy
bCkpCisgICAgICAgIHZhciB1cmwgPSBXZWJJbnNwZWN0b3IuZmlsZU1hcHBpbmcudXJsRm9yVUlT
b3VyY2VDb2RlKHVpU291cmNlQ29kZSk7CisgICAgICAgIGlmICghdXJsIHx8ICFXZWJJbnNwZWN0
b3IucmVzb3VyY2VGb3JVUkwodXJsKSkKICAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICB0
aGlzLl9hZGRVSVNvdXJjZUNvZGUodWlTb3VyY2VDb2RlKTsKLSAgICB9LAotCi0gICAgLyoqCi0g
ICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2RlfSB1aVNvdXJjZUNvZGUKLSAg
ICAgKi8KLSAgICBfYWRkVUlTb3VyY2VDb2RlOiBmdW5jdGlvbih1aVNvdXJjZUNvZGUpCi0gICAg
ewotICAgICAgICB0aGlzLl91aVNvdXJjZUNvZGVGb3JVUkxbdWlTb3VyY2VDb2RlLnVybF0gPSB1
aVNvdXJjZUNvZGU7CisgICAgICAgIGlmICh0aGlzLl9tYXBwZWRVUkxzW3VybF0pCisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIHRoaXMuX21hcHBlZFVSTHNbdXJsXSA9IHRydWU7CiAgICAg
ICAgIHVpU291cmNlQ29kZS5zZXRTb3VyY2VNYXBwaW5nKHRoaXMpOwogICAgICAgICB2YXIgc3R5
bGVGaWxlID0gbmV3IFdlYkluc3BlY3Rvci5TdHlsZUZpbGUodWlTb3VyY2VDb2RlKTsKICAgICAg
ICAgdWlTb3VyY2VDb2RlLnNldFN0eWxlRmlsZShzdHlsZUZpbGUpOwotICAgICAgICBXZWJJbnNw
ZWN0b3IuY3NzTW9kZWwuc2V0U291cmNlTWFwcGluZyh1aVNvdXJjZUNvZGUudXJsLCB0aGlzKTsK
KyAgICAgICAgV2ViSW5zcGVjdG9yLmNzc01vZGVsLnNldFNvdXJjZU1hcHBpbmcodXJsLCB0aGlz
KTsKICAgICB9LAogCiAgICAgX3Byb2plY3RXaWxsUmVzZXQ6IGZ1bmN0aW9uKGV2ZW50KQogICAg
IHsKICAgICAgICAgdmFyIHByb2plY3QgPSBldmVudC5kYXRhOwogICAgICAgICB2YXIgdWlTb3Vy
Y2VDb2RlcyA9IHByb2plY3QudWlTb3VyY2VDb2RlcygpOwotICAgICAgICBmb3IgKHZhciBpID0g
MDsgaSA8IHVpU291cmNlQ29kZXM7ICsraSkKLSAgICAgICAgICAgIGRlbGV0ZSB0aGlzLl91aVNv
dXJjZUNvZGVGb3JVUkxbdWlTb3VyY2VDb2Rlc1tpXS51cmxdOworICAgICAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IHVpU291cmNlQ29kZXM7ICsraSkgeworICAgICAgICAgICAgdmFyIHVybCA9IFdl
Ykluc3BlY3Rvci5maWxlTWFwcGluZy51cmxGb3JVSVNvdXJjZUNvZGUodWlTb3VyY2VDb2Rlc1tp
XSk7CisgICAgICAgICAgICBkZWxldGUgdGhpcy5fbWFwcGVkVVJMc1t1cmxdOworICAgICAgICB9
CiAgICAgfQogfQogCkBAIC0yNjYsNyArMjYyLDggQEAgV2ViSW5zcGVjdG9yLlN0eWxlQ29udGVu
dEJpbmRpbmcucHJvdG90eXBlID0gewogICAgICAgICAgICAgaWYgKHR5cGVvZiBzdHlsZVNoZWV0
VVJMICE9PSAic3RyaW5nIikKICAgICAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgICAg
IHZhciB1aVNvdXJjZUNvZGUgPSBXZWJJbnNwZWN0b3Iud29ya3NwYWNlLnVpU291cmNlQ29kZUZv
clVSTChzdHlsZVNoZWV0VVJMKTsKKyAgICAgICAgICAgIHZhciB1cmkgPSBXZWJJbnNwZWN0b3Iu
ZmlsZU1hcHBpbmcudXJpRm9yVVJMKHN0eWxlU2hlZXRVUkwpOworICAgICAgICAgICAgdmFyIHVp
U291cmNlQ29kZSA9IFdlYkluc3BlY3Rvci53b3Jrc3BhY2UudWlTb3VyY2VDb2RlRm9yVVJJKHVy
aSk7CiAgICAgICAgICAgICBpZiAoIXVpU291cmNlQ29kZSkKICAgICAgICAgICAgICAgICByZXR1
cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvV2Vi
S2l0LnFyYyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvV2ViS2l0LnFyYwpp
bmRleCBiNzViNzliODllOTc3ZGVhNzY5ODFkYmViN2U2MzExMGU0MmY0ZWFlLi42NGYwZTlhMWFm
M2I5ODUxMGY1NTJlZjNhNjAzYzQ1NWUxY2NjMDRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5xcmMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9XZWJLaXQucXJjCkBAIC03NCw2ICs3NCw3IEBACiAgICAgPGZpbGU+
RXh0ZW5zaW9uVmlldy5qczwvZmlsZT4KICAgICA8ZmlsZT5GaWxlQ29udGVudFZpZXcuanM8L2Zp
bGU+CiAgICAgPGZpbGU+RmlsZU1hbmFnZXIuanM8L2ZpbGU+CisgICAgPGZpbGU+RmlsZU1hcHBp
bmcuanM8L2ZpbGU+CiAgICAgPGZpbGU+RmlsZVN5c3RlbU1hcHBpbmcuanM8L2ZpbGU+CiAgICAg
PGZpbGU+RmlsZVN5c3RlbU1vZGVsLmpzPC9maWxlPgogICAgIDxmaWxlPkZpbGVTeXN0ZW1WaWV3
LmpzPC9maWxlPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9pbnNwZWN0b3IuaHRtbCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5z
cGVjdG9yLmh0bWwKaW5kZXggMDE5YTYxYWY3OGUwZjJhMmU1MjNjNmE1YTAyOWU0YTdlZDJmNGM0
Ny4uMDA1NDdiMDhmZjJiYjJkM2E3YmQ2NGIxZjU5NmVmNDdmYTg5NjJlNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuaHRtbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5odG1sCkBAIC0xMzks
NiArMTM5LDcgQEAgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIg
c3JjPSJQcmVzZW50YXRpb25Db25zb2xlTWVzc2FnZUhlbHBlci5qcyI+PC9zY3JpcHQ+CiAgICAg
PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iSXNvbGF0ZWRGaWxlU3lzdGVtTW9k
ZWwuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9
IkZpbGVTeXN0ZW1NYXBwaW5nLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHR5cGU9InRleHQv
amF2YXNjcmlwdCIgc3JjPSJGaWxlTWFwcGluZy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0
eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iV29ya3NwYWNlLmpzIj48L3NjcmlwdD4KICAgICA8
c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJTaW1wbGVXb3Jrc3BhY2VQcm92aWRl
ci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0i
QnJlYWtwb2ludE1hbmFnZXIuanMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcwppbmRleCBkYzNlZjA4MWM3NDYwMWRjNWRjZWU4
MTE2YmU3YzIwMmM4YzA4OTE2Li5mMzliYzZkNjg2ZWEwZGQyYWY3OGM1M2M1MTk4NzYyMTY5MWIx
MWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3Bl
Y3Rvci5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rv
ci5qcwpAQCAtNDMyLDYgKzQzMiw3IEBAIFdlYkluc3BlY3Rvci5fZG9Mb2FkZWREb25lV2l0aENh
cGFiaWxpdGllcyA9IGZ1bmN0aW9uKCkKIAogICAgIHRoaXMuaXNvbGF0ZWRGaWxlU3lzdGVtTW9k
ZWwgPSBuZXcgV2ViSW5zcGVjdG9yLklzb2xhdGVkRmlsZVN5c3RlbU1vZGVsKCk7CiAgICAgdGhp
cy5pc29sYXRlZEZpbGVTeXN0ZW1EaXNwYXRjaGVyID0gbmV3IFdlYkluc3BlY3Rvci5Jc29sYXRl
ZEZpbGVTeXN0ZW1EaXNwYXRjaGVyKHRoaXMuaXNvbGF0ZWRGaWxlU3lzdGVtTW9kZWwpOworICAg
IHRoaXMuZmlsZU1hcHBpbmcgPSBuZXcgV2ViSW5zcGVjdG9yLkZpbGVNYXBwaW5nKHRoaXMuaXNv
bGF0ZWRGaWxlU3lzdGVtTW9kZWwubWFwcGluZygpKTsKICAgICB0aGlzLndvcmtzcGFjZSA9IG5l
dyBXZWJJbnNwZWN0b3IuV29ya3NwYWNlKCk7CiAgICAgdGhpcy5uZXR3b3JrV29ya3NwYWNlUHJv
dmlkZXIgPSBuZXcgV2ViSW5zcGVjdG9yLlNpbXBsZVdvcmtzcGFjZVByb3ZpZGVyKHRoaXMud29y
a3NwYWNlKTsKICAgICB0aGlzLndvcmtzcGFjZS5hZGRQcm9qZWN0KFdlYkluc3BlY3Rvci5wcm9q
ZWN0TmFtZXMuTmV0d29yaywgdGhpcy5uZXR3b3JrV29ya3NwYWNlUHJvdmlkZXIpOwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4
IGRjMmUwYzAwYWYzOGJhNTVlOGIwZGZjYjNkYTc3YThkOGU0ZGUzZDEuLjBlOTE2ZjcxNzlkYjhh
MWY3NDRlZDRmY2FlNjY1MWQwYzY5ZWFkNGIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMy0w
MS0xNCAgVnNldm9sb2QgVmxhc292ICA8dnNldmlrQGNocm9taXVtLm9yZz4KKworICAgICAgICBX
ZWIgSW5zcGVjdG9yOiBJbnRyb2R1Y2UgZmlsZSBtYXBwaW5nIGFsbG93aW5nIHRvIG1hcCBuZXR3
b3JrIGxvYWRlZCBzY3JpcHRzIGFuZCBzdHlsZXNoZWV0cyB0byBmaWxlIHN5c3RlbSBmaWxlcy4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNjc5NQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaW5zcGVj
dG9yL2ZpbGUtbWFwcGluZy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGluc3BlY3Rv
ci9maWxlLW1hcHBpbmcuaHRtbDogQWRkZWQuCisKIDIwMTMtMDEtMTMgIE5vZWwgR29yZG9uICA8
bm9lbC5nb3Jkb25AZ21haWwuY29tPgogCiAgICAgICAgIFtjaHJvbWl1bV0gT3B0aW1pemUgc3Zn
L1czQy1TVkctMS4xL2FuaW1hdGUtZWxlbS04MC10LnN2ZyBvbiBsaW51eCBhbmQgd2luCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZmlsZS1tYXBwaW5nLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2luc3BlY3Rvci9maWxlLW1hcHBpbmctZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmJjODYwZmU3YWYwMzJiNjRhMTAzZDExODFlM2NjY2U2ZWE4ZjE3NjcKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZmlsZS1tYXBwaW5nLWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxLDQgQEAKK1Rlc3RzIEZpbGVNYXBwaW5nCisKK0FsbCBtYXBwaW5ncyB3ZXJlIGNv
cnJlY3QuCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9maWxlLW1hcHBpbmcu
aHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9maWxlLW1hcHBpbmcuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5lMzViNDM5MzhiOGU4YmJjMjE1YTJkOWZjNTYzMDE0MmVlZjFiY2IwCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2ZpbGUtbWFwcGluZy5odG1sCkBAIC0wLDAgKzEs
NzcgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vaHR0cC90ZXN0cy9pbnNwZWN0
b3IvaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK2Z1bmN0aW9uIHRlc3Qo
KQoreworICAgIGZ1bmN0aW9uIE1vY2tGaWxlU3lzdGVtTWFwcGluZygpIHt9CisgICAgTW9ja0Zp
bGVTeXN0ZW1NYXBwaW5nLnByb3RvdHlwZSA9IHsKKyAgICAgICAgdXJpRm9yUGF0aDogZnVuY3Rp
b24ocGF0aCkgeworICAgICAgICAgICAgcmV0dXJuICJ1cmk6IiArIHBhdGg7CisgICAgICAgIH0K
KyAgICB9OworICAgIAorICAgIGZ1bmN0aW9uIGNyZWF0ZU1vY2tNYXBwaW5nRW50cnkodXJsUHJl
Zml4LCBwYXRoUHJlZml4KQorICAgIHsKKyAgICAgICAgdmFyIHJlc3VsdCA9IHt9OworICAgICAg
ICByZXN1bHQudXJsUHJlZml4ID0gdXJsUHJlZml4OworICAgICAgICByZXN1bHQucGF0aFByZWZp
eCA9IHBhdGhQcmVmaXg7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgZnVu
Y3Rpb24gY3JlYXRlTW9ja1VJU291cmNlQ29kZSh1cmwsIGhhc1VSSSkKKyAgICB7CisgICAgICAg
IHZhciByZXN1bHQgPSB7fTsKKyAgICAgICAgcmVzdWx0LnVyaSA9IGZ1bmN0aW9uKCkgeyByZXR1
cm4gKGhhc1VSSSA/ICJ1cmk6IiA6ICIiKSArIHVybDsgfTsKKyAgICAgICAgcmVzdWx0LnVybCA9
IHVybDsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICAvLyBBdCBmaXJzdCBm
aWxsIGZpbGUgbWFwcGluZyB3aXRoIGVudHJpZXMuCisgICAgdmFyIGZpbGVNYXBwaW5nID0gbmV3
IFdlYkluc3BlY3Rvci5GaWxlTWFwcGluZyhuZXcgTW9ja0ZpbGVTeXN0ZW1NYXBwaW5nKCkpOwor
ICAgIHZhciBtYXBwaW5nRW50cmllcyA9IFtdOworICAgIG1hcHBpbmdFbnRyaWVzLnB1c2goY3Jl
YXRlTW9ja01hcHBpbmdFbnRyeSgiaHR0cDovL2xvY2FsaG9zdCIsICIvdmFyL3d3dyIpKTsKKyAg
ICBtYXBwaW5nRW50cmllcy5wdXNoKGNyZWF0ZU1vY2tNYXBwaW5nRW50cnkoImh0dHA6Ly93d3cu
ZXhhbXBsZS5jb20iLCAiL2hvbWUvZXhhbXBsZS5jb20iKSk7CisgICAgZmlsZU1hcHBpbmcuc2V0
TWFwcGluZ3MobWFwcGluZ0VudHJpZXMpOworCisgICAgLy8gVGhlbiBjcmVhdGUgYW5vdGhlciBm
aWxlIG1hcHBpbmcgdG8gbWFrZSBzdXJlIGl0IGlzIGNvcnJlY3RseSByZXN0b3JlZCBmcm9tIHRo
ZSBzZXR0aW5ncy4KKyAgICBmaWxlTWFwcGluZyA9IG5ldyBXZWJJbnNwZWN0b3IuRmlsZU1hcHBp
bmcobmV3IE1vY2tGaWxlU3lzdGVtTWFwcGluZygpKTsKKworICAgIC8vIE5vdyB0ZXN0IGFsbCBG
aWxlTWFwcGluZyBtZXRob2RzLgorICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0VHJ1ZShmaWxlTWFw
cGluZy5oYXNNYXBwaW5nRm9yVVJMKCJodHRwOi8vd3d3LmV4YW1wbGUuY29tIiksICJmaWxlTWFw
cGluZy5oYXNNYXBwaW5nRm9yVVJMIGZhaWxlZC4iKTsKKyAgICBJbnNwZWN0b3JUZXN0LmFzc2Vy
dFRydWUoZmlsZU1hcHBpbmcuaGFzTWFwcGluZ0ZvclVSTCgiaHR0cDovL3d3dy5leGFtcGxlLmNv
bS8iKSwgImZpbGVNYXBwaW5nLmhhc01hcHBpbmdGb3JVUkwgZmFpbGVkLiIpOworICAgIEluc3Bl
Y3RvclRlc3QuYXNzZXJ0VHJ1ZShmaWxlTWFwcGluZy5oYXNNYXBwaW5nRm9yVVJMKCJodHRwOi8v
bG9jYWxob3N0L2luZGV4Lmh0bWwiKSwgImZpbGVNYXBwaW5nLmhhc01hcHBpbmdGb3JVUkwgZmFp
bGVkLiIpOworICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0VHJ1ZShmaWxlTWFwcGluZy5oYXNNYXBw
aW5nRm9yVVJMKCJodHRwOi8vbG9jYWxob3N0L2Zvby9pbmRleC5odG1sIiksICJmaWxlTWFwcGlu
Zy5oYXNNYXBwaW5nRm9yVVJMIGZhaWxlZC4iKTsKKyAgICBJbnNwZWN0b3JUZXN0LmFzc2VydFRy
dWUoIWZpbGVNYXBwaW5nLmhhc01hcHBpbmdGb3JVUkwoImh0dHBzOi8vbG9jYWxob3N0IiksICJm
aWxlTWFwcGluZy5oYXNNYXBwaW5nRm9yVVJMIGZhaWxlZC4iKTsKKyAgICBJbnNwZWN0b3JUZXN0
LmFzc2VydFRydWUoIWZpbGVNYXBwaW5nLmhhc01hcHBpbmdGb3JVUkwoImh0dHA6Ly9leGFtcGxl
LmNvbSIpLCAiZmlsZU1hcHBpbmcuaGFzTWFwcGluZ0ZvclVSTCBmYWlsZWQuIik7CisKKyAgICBJ
bnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscyhmaWxlTWFwcGluZy51cmlGb3JVUkwoImh0dHA6Ly93
d3cuZXhhbXBsZS5jb20iKSwgInVyaTovaG9tZS9leGFtcGxlLmNvbSIsICJmaWxlTWFwcGluZy51
cmlGb3JVUkwgZmFpbGVkLiIpOworICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKGZpbGVN
YXBwaW5nLnVyaUZvclVSTCgiaHR0cDovL3d3dy5leGFtcGxlLmNvbS8iKSwgInVyaTovaG9tZS9l
eGFtcGxlLmNvbS8iLCAiZmlsZU1hcHBpbmcudXJpRm9yVVJMIGZhaWxlZC4iKTsKKyAgICBJbnNw
ZWN0b3JUZXN0LmFzc2VydEVxdWFscyhmaWxlTWFwcGluZy51cmlGb3JVUkwoImh0dHA6Ly9sb2Nh
bGhvc3QvaW5kZXguaHRtbCIpLCAidXJpOi92YXIvd3d3L2luZGV4Lmh0bWwiLCAiZmlsZU1hcHBp
bmcudXJpRm9yVVJMIGZhaWxlZC4iKTsKKyAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscyhm
aWxlTWFwcGluZy51cmlGb3JVUkwoImh0dHA6Ly9sb2NhbGhvc3QvZm9vL2luZGV4Lmh0bWwiKSwg
InVyaTovdmFyL3d3dy9mb28vaW5kZXguaHRtbCIsICJmaWxlTWFwcGluZy51cmlGb3JVUkwgZmFp
bGVkLiIpOworICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKGZpbGVNYXBwaW5nLnVyaUZv
clVSTCgiaHR0cHM6Ly9sb2NhbGhvc3QiKSwgImh0dHBzOi8vbG9jYWxob3N0IiwgImZpbGVNYXBw
aW5nLnVyaUZvclVSTCBmYWlsZWQuIik7CisgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHMo
ZmlsZU1hcHBpbmcudXJpRm9yVVJMKCJodHRwOi8vZXhhbXBsZS5jb20iKSwgImh0dHA6Ly9leGFt
cGxlLmNvbSIsICJmaWxlTWFwcGluZy51cmlGb3JVUkwgZmFpbGVkLiIpOworCisgICAgSW5zcGVj
dG9yVGVzdC5hc3NlcnRFcXVhbHMoZmlsZU1hcHBpbmcudXJsRm9yVVJJKCJ1cmk6L2hvbWUvZXhh
bXBsZS5jb20iKSwgImh0dHA6Ly93d3cuZXhhbXBsZS5jb20iLCAiZmlsZU1hcHBpbmcudXJsRm9y
VVJJIGZhaWxlZC4iKTsKKyAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscyhmaWxlTWFwcGlu
Zy51cmxGb3JVUkkoInVyaTovaG9tZS9leGFtcGxlLmNvbS8iKSwgImh0dHA6Ly93d3cuZXhhbXBs
ZS5jb20vIiwgImZpbGVNYXBwaW5nLnVybEZvclVSSSBmYWlsZWQuIik7CisgICAgSW5zcGVjdG9y
VGVzdC5hc3NlcnRFcXVhbHMoZmlsZU1hcHBpbmcudXJsRm9yVVJJKCJ1cmk6L3Zhci93d3cvaW5k
ZXguaHRtbCIpLCAiaHR0cDovL2xvY2FsaG9zdC9pbmRleC5odG1sIiwgImZpbGVNYXBwaW5nLnVy
bEZvclVSSSBmYWlsZWQuIik7CisgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHMoZmlsZU1h
cHBpbmcudXJsRm9yVVJJKCJ1cmk6L3Zhci93d3cvZm9vL2luZGV4Lmh0bWwiKSwgImh0dHA6Ly9s
b2NhbGhvc3QvZm9vL2luZGV4Lmh0bWwiLCAiZmlsZU1hcHBpbmcudXJsRm9yVVJJIGZhaWxlZC4i
KTsKKyAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscyhmaWxlTWFwcGluZy51cmxGb3JVUkko
Imh0dHBzOi8vbG9jYWxob3N0IiksIG51bGwsICJmaWxlTWFwcGluZy51cmxGb3JVUkkgZmFpbGVk
LiIpOworICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKGZpbGVNYXBwaW5nLnVybEZvclVS
SSgiaHR0cDovL2V4YW1wbGUuY29tIiksIG51bGwsICJmaWxlTWFwcGluZy51cmxGb3JVUkkgZmFp
bGVkLiIpOworCisgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHMoZmlsZU1hcHBpbmcudXJs
Rm9yVUlTb3VyY2VDb2RlKGNyZWF0ZU1vY2tVSVNvdXJjZUNvZGUoIi9ob21lL2V4YW1wbGUuY29t
IiwgdHJ1ZSkpLCAiaHR0cDovL3d3dy5leGFtcGxlLmNvbSIsICJmaWxlTWFwcGluZy51cmxGb3JV
SVNvdXJjZUNvZGUgZmFpbGVkLiIpOworICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKGZp
bGVNYXBwaW5nLnVybEZvclVJU291cmNlQ29kZShjcmVhdGVNb2NrVUlTb3VyY2VDb2RlKCIvaG9t
ZS9leGFtcGxlLmNvbS8iLCB0cnVlKSksICJodHRwOi8vd3d3LmV4YW1wbGUuY29tLyIsICJmaWxl
TWFwcGluZy51cmxGb3JVSVNvdXJjZUNvZGUgZmFpbGVkLiIpOworICAgIEluc3BlY3RvclRlc3Qu
YXNzZXJ0RXF1YWxzKGZpbGVNYXBwaW5nLnVybEZvclVJU291cmNlQ29kZShjcmVhdGVNb2NrVUlT
b3VyY2VDb2RlKCIvdmFyL3d3dy9pbmRleC5odG1sIiwgdHJ1ZSkpLCAiaHR0cDovL2xvY2FsaG9z
dC9pbmRleC5odG1sIiwgImZpbGVNYXBwaW5nLnVybEZvclVJU291cmNlQ29kZSBmYWlsZWQuIik7
CisgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHMoZmlsZU1hcHBpbmcudXJsRm9yVUlTb3Vy
Y2VDb2RlKGNyZWF0ZU1vY2tVSVNvdXJjZUNvZGUoIi92YXIvd3d3L2Zvby9pbmRleC5odG1sIiwg
dHJ1ZSkpLCAiaHR0cDovL2xvY2FsaG9zdC9mb28vaW5kZXguaHRtbCIsICJmaWxlTWFwcGluZy51
cmxGb3JVSVNvdXJjZUNvZGUgZmFpbGVkLiIpOworICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1
YWxzKGZpbGVNYXBwaW5nLnVybEZvclVJU291cmNlQ29kZShjcmVhdGVNb2NrVUlTb3VyY2VDb2Rl
KCJodHRwczovL2xvY2FsaG9zdCIpKSwgImh0dHBzOi8vbG9jYWxob3N0IiwgImZpbGVNYXBwaW5n
LnVybEZvclVJU291cmNlQ29kZSBmYWlsZWQuIik7CisgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRF
cXVhbHMoZmlsZU1hcHBpbmcudXJsRm9yVUlTb3VyY2VDb2RlKGNyZWF0ZU1vY2tVSVNvdXJjZUNv
ZGUoImh0dHA6Ly9leGFtcGxlLmNvbSIpKSwgImh0dHA6Ly9leGFtcGxlLmNvbSIsICJmaWxlTWFw
cGluZy51cmxGb3JVSVNvdXJjZUNvZGUgZmFpbGVkLiIpOworCisgICAgSW5zcGVjdG9yVGVzdC5h
ZGRSZXN1bHQoIkFsbCBtYXBwaW5ncyB3ZXJlIGNvcnJlY3QuIik7CisgICAgSW5zcGVjdG9yVGVz
dC5jb21wbGV0ZVRlc3QoKTsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJy
dW5UZXN0KCkiPgorPHA+VGVzdHMgRmlsZU1hcHBpbmc8L3A+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>182781</attachid>
            <date>2013-01-15 08:33:09 -0800</date>
            <delta_ts>2013-01-16 01:27:38 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-106795-20130115203008.patch</filename>
            <type>text/plain</type>
            <size>37208</size>
            <attacher name="Vsevolod Vlasov">vsevik</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM5NzQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzMzNjVjYjk0YWEzYTc1
MjQ3NDZiMTQ3ZjZmMWIyNzIyNWM0ZjlmOC4uODE3ZmRiNGI5ZTE4OWM3MGY2Y2IzZTJiNjk5Zjgy
ZjI3YzMzMzRiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDcyIEBACiAyMDEzLTAxLTE1ICBWc2V2
b2xvZCBWbGFzb3YgIDx2c2V2aWtAY2hyb21pdW0ub3JnPgogCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IEludHJvZHVjZSBmaWxlIG1hcHBpbmcgYWxsb3dpbmcgdG8gbWFwIG5ldHdvcmsgbG9hZGVk
IHNjcmlwdHMgYW5kIHN0eWxlc2hlZXRzIHRvIGZpbGUgc3lzdGVtIGZpbGVzLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA2Nzk1CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW50cm9kdWNlZCBmaWxlIG1h
cHBpbmcgZm9yIGluc3BlY3Rvci4KKyAgICAgICAgRmlsZU1hcHBpbmcgaXMgZXNzZW50aWFsbHkg
YW4gYXJyYXkgb2YgTWFwcGluZ0VudHJpZXMgd2hlcmUgZWFjaCBNYXBwaW5nRW50cnkgaXMgYSBw
YWlyIG9mIHVybFByZWZpeCBhbmQgcGF0aFByZWZpeC4KKyAgICAgICAgV2hlbiBzY3JpcHRzIGFu
ZCBzdHlsZXNoZWV0cyBhcmUgbWFwcGVkIHRvIHVpU291cmNlQ29kZXMgRmlsZU1hcHBpbmcgbWV0
aG9kcyBhcmUgdXNlZCB0byBlc3RhYmxpc2gKKyAgICAgICAgcHJlZml4IGJhc2VkIG1hdGNoaW5n
IHdpdGggZmlsZSBzeXN0ZW0gdWlTb3VyY2VDb2RlcyBpZiBwb3NzaWJsZS4KKworICAgICAgICBU
ZXN0OiBpbnNwZWN0b3IvZmlsZS1tYXBwaW5nLmh0bWwKKworICAgICAgICAqIFdlYkNvcmUuZ3lw
aToKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBp
bnNwZWN0b3IvY29tcGlsZS1mcm9udC1lbmQucHk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250
LWVuZC9Db21waWxlclNjcmlwdE1hcHBpbmcuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29t
cGlsZXJTY3JpcHRNYXBwaW5nKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db21waWxlclNjcmlw
dE1hcHBpbmcucHJvdG90eXBlLnJhd0xvY2F0aW9uVG9VSUxvY2F0aW9uKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5Db21waWxlclNjcmlwdE1hcHBpbmcucHJvdG90eXBlLnVpTG9jYXRpb25Ub1Jh
d0xvY2F0aW9uKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db21waWxlclNjcmlwdE1hcHBpbmcu
cHJvdG90eXBlLmdldCBhZGRTY3JpcHQuZ2V0IHRoaXMpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkNvbXBpbGVyU2NyaXB0TWFwcGluZy5wcm90b3R5cGUuZ2V0IGFkZFNjcmlwdCk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuQ29tcGlsZXJTY3JpcHRNYXBwaW5nLnByb3RvdHlwZS5fYmluZFVJU291
cmNlQ29kZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29tcGlsZXJTY3JpcHRNYXBwaW5nLnBy
b3RvdHlwZS5fdWlTb3VyY2VDb2RlQWRkZWRUb1dvcmtzcGFjZSk6CisgICAgICAgICogaW5zcGVj
dG9yL2Zyb250LWVuZC9GaWxlTWFwcGluZy5qczogQWRkZWQuCisgICAgICAgIChXZWJJbnNwZWN0
b3IuRmlsZU1hcHBpbmcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkZpbGVNYXBwaW5nLnByb3Rv
dHlwZS5oYXNNYXBwaW5nRm9yVVJMKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5GaWxlTWFwcGlu
Zy5wcm90b3R5cGUudXJpRm9yVVJMKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5GaWxlTWFwcGlu
Zy5wcm90b3R5cGUudXJsRm9yVVJJKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5GaWxlTWFwcGlu
Zy5wcm90b3R5cGUuc2V0TWFwcGluZ3MpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkZpbGVNYXBw
aW5nLnByb3RvdHlwZS5tYXBwaW5ncyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRmlsZU1hcHBp
bmcucHJvdG90eXBlLl9kZXNlcmlhbGl6ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRmlsZU1h
cHBpbmcucHJvdG90eXBlLl9zZXJpYWxpemUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkZpbGVN
YXBwaW5nLk1hcHBpbmdFbnRyeSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRmlsZU1hcHBpbmcu
TWFwcGluZ0VudHJ5LmRlc2VyaWFsaXplKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5GaWxlTWFw
cGluZy5NYXBwaW5nRW50cnkucHJvdG90eXBlLm1hdGNoZXNVUkwpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkZpbGVNYXBwaW5nLk1hcHBpbmdFbnRyeS5wcm90b3R5cGUubWF0Y2hlc1VSSSk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuRmlsZU1hcHBpbmcuTWFwcGluZ0VudHJ5LnByb3RvdHlwZS51
cmlGb3JVUkwpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkZpbGVNYXBwaW5nLk1hcHBpbmdFbnRy
eS5wcm90b3R5cGUudXJsRm9yVVJJKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5GaWxlTWFwcGlu
Zy5NYXBwaW5nRW50cnkucHJvdG90eXBlLnNlcmlhbGl6ZSk6CisgICAgICAgICogaW5zcGVjdG9y
L2Zyb250LWVuZC9OZXR3b3JrVUlTb3VyY2VDb2RlUHJvdmlkZXIuanM6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuTmV0d29ya1VJU291cmNlQ29kZVByb3ZpZGVyLnByb3RvdHlwZS5fYWRkRmlsZSk6
CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZVNjcmlwdE1hcHBpbmcuanM6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VTY3JpcHRNYXBwaW5nLnByb3RvdHlwZS5f
d29ya3NwYWNlVUlTb3VyY2VDb2RlRm9yU2NyaXB0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5S
ZXNvdXJjZVNjcmlwdE1hcHBpbmcucHJvdG90eXBlLl9zY3JpcHRzRm9yVUlTb3VyY2VDb2RlKToK
KyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlVXRpbHMuanM6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuZGlzcGxheU5hbWVGb3JVUkwpOgorICAgICAgICAqIGluc3BlY3Rvci9m
cm9udC1lbmQvU0FTU1NvdXJjZU1hcHBpbmcuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU0FT
U1NvdXJjZU1hcHBpbmcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNBU1NTb3VyY2VNYXBwaW5n
LnByb3RvdHlwZS5fcmVsb2FkQ1NTKToKKyAgICAgICAgKF9hZGRVUkxNYXBwaW5nKToKKyAgICAg
ICAgKHJhd0xvY2F0aW9uVG9VSUxvY2F0aW9uKToKKyAgICAgICAgKF9yZXNldCk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuU0FTU1NvdXJjZU1hcHBpbmcuTWFwcGluZ0VudHJ5KToKKyAgICAgICAg
KiBpbnNwZWN0b3IvZnJvbnQtZW5kL1N0eWxlc1NvdXJjZU1hcHBpbmcuanM6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuU3R5bGVzU291cmNlTWFwcGluZyk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
U3R5bGVzU291cmNlTWFwcGluZy5wcm90b3R5cGUucmF3TG9jYXRpb25Ub1VJTG9jYXRpb24pOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLlN0eWxlc1NvdXJjZU1hcHBpbmcucHJvdG90eXBlLl91aVNv
dXJjZUNvZGVBZGRlZFRvV29ya3NwYWNlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TdHlsZXNT
b3VyY2VNYXBwaW5nLnByb3RvdHlwZS5fcHJvamVjdFdpbGxSZXNldCk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuU3R5bGVDb250ZW50QmluZGluZy5wcm90b3R5cGUuKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5TdHlsZUNvbnRlbnRCaW5kaW5nLnByb3RvdHlwZS5faW5uZXJTdHlsZVNoZWV0Q2hh
bmdlZCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9XZWJLaXQucXJjOgorICAgICAg
ICAqIGluc3BlY3Rvci9mcm9udC1lbmQvV29ya3NwYWNlLmpzOgorICAgICAgICAqIGluc3BlY3Rv
ci9mcm9udC1lbmQvaW5zcGVjdG9yLmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVu
ZC9pbnNwZWN0b3IuanM6CisKKzIwMTMtMDEtMTUgIFZzZXZvbG9kIFZsYXNvdiAgPHZzZXZpa0Bj
aHJvbWl1bS5vcmc+CisKICAgICAgICAgV2ViIEluc3BlY3RvcjogSW50cm9kdWNlIFVJU291cmNl
Q29kZS5vcmlnaW5VUkwoKS4KICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEwNjkwOQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5
cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggNjkwNzViMjRjZDdjMWMxYmE0
ZDc3NGJlZDM4NDRkZmVkODU1MTFmZi4uNzk2YjMxNWIzNWIyOWQzNjg3ZmY5YTdmYmUxZDNiNWNm
OTI2YzRmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtNTE0NSw2ICs1MTQ1LDcgQEAKICAgICAgICAg
ICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0V4dGVuc2lvblNlcnZlci5qcycsCiAgICAgICAgICAg
ICAnaW5zcGVjdG9yL2Zyb250LWVuZC9FeHRlbnNpb25WaWV3LmpzJywKICAgICAgICAgICAgICdp
bnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVNYW5hZ2VyLmpzJywKKyAgICAgICAgICAgICdpbnNwZWN0
b3IvZnJvbnQtZW5kL0ZpbGVNYXBwaW5nLmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJv
bnQtZW5kL0ZpbGVTeXN0ZW1NYXBwaW5nLmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJv
bnQtZW5kL0ZpbGVTeXN0ZW1Nb2RlbC5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250
LWVuZC9GaWxlVXRpbHMuanMnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52
Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJD
b3JlLnZjcHJvagppbmRleCA5ZDUwM2YyNGYwOTFiOGVmNWU2MGQzZTBmMGU0ZjkxZDg4N2Y0YWIx
Li5kYjU2YjU5ZjFkYjczNTNlNzRlN2U4MjY2YzdmNzI3MDQ2MTlmNTZmIDEwMDc1NQotLS0gYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtNzY3MTcsNiArNzY3MTcs
MTAgQEAKIAkJCQkJPgogCQkJCTwvRmlsZT4KIAkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9
Ii4uXGluc3BlY3Rvclxmcm9udC1lbmRcRmlsZU1hcHBpbmcuanMiCisJCQkJCT4KKwkJCQk8L0Zp
bGU+CisJCQkJPEZpbGUKIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcZnJvbnQtZW5k
XEZpbGVTeXN0ZW1NYXBwaW5nLmpzIgogCQkJCQk+CiAJCQkJPC9GaWxlPgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2NvbXBpbGUtZnJvbnQtZW5kLnB5IGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2NvbXBpbGUtZnJvbnQtZW5kLnB5CmluZGV4IDNhNGFkOTdiNTM4ZDQy
Y2VmZTU0N2FkYjRlMjgwODljZmFmMTEwOWQuLjFlNDgyMDU3MjA1OGJlZTQ5OWZhY2Y1YzgyZWU2
NjFjYThmMzRjMjEgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9jb21waWxl
LWZyb250LWVuZC5weQorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvY29tcGlsZS1mcm9u
dC1lbmQucHkKQEAgLTc2LDYgKzc2LDcgQEAgbW9kdWxlcyA9IFsKICAgICAgICAgICAgICJEZWJ1
Z2dlck1vZGVsLmpzIiwKICAgICAgICAgICAgICJEZWJ1Z2dlclNjcmlwdE1hcHBpbmcuanMiLAog
ICAgICAgICAgICAgIkZpbGVNYW5hZ2VyLmpzIiwKKyAgICAgICAgICAgICJGaWxlTWFwcGluZy5q
cyIsCiAgICAgICAgICAgICAiRmlsZVN5c3RlbU1hcHBpbmcuanMiLAogICAgICAgICAgICAgIkZp
bGVTeXN0ZW1Nb2RlbC5qcyIsCiAgICAgICAgICAgICAiRmlsZVV0aWxzLmpzIiwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ29tcGlsZXJTY3JpcHRNYXBw
aW5nLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Db21waWxlclNjcmlw
dE1hcHBpbmcuanMKaW5kZXggZWQxNWJiNjJmZDRmOTNhMDJkYTJjOTEyYjA5YjdiMjA4Y2M3MmJm
Yy4uNzIzNmRjZmI4Y2ViODExNTJkZmVhMzQ1YTQ5YjUxZDhkYjU0Njg0YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Db21waWxlclNjcmlwdE1hcHBpbmcu
anMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Db21waWxlclNjcmlw
dE1hcHBpbmcuanMKQEAgLTM3LDYgKzM3LDcgQEAKIFdlYkluc3BlY3Rvci5Db21waWxlclNjcmlw
dE1hcHBpbmcgPSBmdW5jdGlvbih3b3Jrc3BhY2UsIG5ldHdvcmtXb3Jrc3BhY2VQcm92aWRlcikK
IHsKICAgICB0aGlzLl93b3Jrc3BhY2UgPSB3b3Jrc3BhY2U7CisgICAgdGhpcy5fd29ya3NwYWNl
LmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZVByb3ZpZGVyLkV2ZW50
cy5VSVNvdXJjZUNvZGVBZGRlZCwgdGhpcy5fdWlTb3VyY2VDb2RlQWRkZWRUb1dvcmtzcGFjZSwg
dGhpcyk7CiAgICAgdGhpcy5fbmV0d29ya1dvcmtzcGFjZVByb3ZpZGVyID0gbmV0d29ya1dvcmtz
cGFjZVByb3ZpZGVyOwogICAgIC8qKiBAdHlwZSB7T2JqZWN0LjxzdHJpbmcsIFdlYkluc3BlY3Rv
ci5Qb3NpdGlvbkJhc2VkU291cmNlTWFwPn0gKi8KICAgICB0aGlzLl9zb3VyY2VNYXBGb3JTb3Vy
Y2VNYXBVUkwgPSB7fTsKQEAgLTYyLDcgKzYzLDExIEBAIFdlYkluc3BlY3Rvci5Db21waWxlclNj
cmlwdE1hcHBpbmcucHJvdG90eXBlID0gewogICAgICAgICB2YXIgZW50cnkgPSBzb3VyY2VNYXAu
ZmluZEVudHJ5KGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcik7CiAgICAgICAgIGlmIChlbnRyeS5s
ZW5ndGggPT09IDIpCiAgICAgICAgICAgICByZXR1cm4gbnVsbDsKLSAgICAgICAgdmFyIHVpU291
cmNlQ29kZSA9IHRoaXMuX3dvcmtzcGFjZS51aVNvdXJjZUNvZGVGb3JVUkwoZW50cnlbMl0pOwor
ICAgICAgICB2YXIgdXJsID0gZW50cnlbMl07CisgICAgICAgIHZhciB1cmkgPSBXZWJJbnNwZWN0
b3IuZmlsZU1hcHBpbmcudXJpRm9yVVJMKHVybCk7CisgICAgICAgIHZhciB1aVNvdXJjZUNvZGUg
PSB0aGlzLl93b3Jrc3BhY2UudWlTb3VyY2VDb2RlRm9yVVJJKHVyaSk7CisgICAgICAgIGlmICgh
dWlTb3VyY2VDb2RlKQorICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgIHJldHVybiBu
ZXcgV2ViSW5zcGVjdG9yLlVJTG9jYXRpb24odWlTb3VyY2VDb2RlLCBlbnRyeVszXSwgZW50cnlb
NF0pOwogICAgIH0sCiAKQEAgLTc0LDcgKzc5LDExIEBAIFdlYkluc3BlY3Rvci5Db21waWxlclNj
cmlwdE1hcHBpbmcucHJvdG90eXBlID0gewogICAgICAqLwogICAgIHVpTG9jYXRpb25Ub1Jhd0xv
Y2F0aW9uOiBmdW5jdGlvbih1aVNvdXJjZUNvZGUsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcikK
ICAgICB7CisgICAgICAgIGlmICghdWlTb3VyY2VDb2RlLnVybCkKKyAgICAgICAgICAgIHJldHVy
biBudWxsOwogICAgICAgICB2YXIgc291cmNlTWFwID0gdGhpcy5fc291cmNlTWFwRm9yVVJMW3Vp
U291cmNlQ29kZS51cmxdOworICAgICAgICBpZiAoIXNvdXJjZU1hcCkKKyAgICAgICAgICAgIHJl
dHVybiBudWxsOwogICAgICAgICB2YXIgZW50cnkgPSBzb3VyY2VNYXAuZmluZEVudHJ5UmV2ZXJz
ZWQodWlTb3VyY2VDb2RlLnVybCwgbGluZU51bWJlcik7CiAgICAgICAgIHJldHVybiBXZWJJbnNw
ZWN0b3IuZGVidWdnZXJNb2RlbC5jcmVhdGVSYXdMb2NhdGlvbih0aGlzLl9zY3JpcHRGb3JTb3Vy
Y2VNYXAuZ2V0KHNvdXJjZU1hcCksIGVudHJ5WzBdLCBlbnRyeVsxXSk7CiAgICAgfSwKQEAgLTk1
LDI2ICsxMDQsNTAgQEAgV2ViSW5zcGVjdG9yLkNvbXBpbGVyU2NyaXB0TWFwcGluZy5wcm90b3R5
cGUgPSB7CiAgICAgICAgIHZhciBzb3VyY2VVUkxzID0gc291cmNlTWFwLnNvdXJjZXMoKTsKICAg
ICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzb3VyY2VVUkxzLmxlbmd0aDsgKytpKSB7CiAgICAg
ICAgICAgICB2YXIgc291cmNlVVJMID0gc291cmNlVVJMc1tpXTsKLSAgICAgICAgICAgIGlmICh0
aGlzLl93b3Jrc3BhY2UudWlTb3VyY2VDb2RlRm9yVVJMKHNvdXJjZVVSTCkpCisgICAgICAgICAg
ICB2YXIgdXJpID0gV2ViSW5zcGVjdG9yLmZpbGVNYXBwaW5nLnVyaUZvclVSTChzb3VyY2VVUkwp
OworICAgICAgICAgICAgaWYgKHRoaXMuX3NvdXJjZU1hcEZvclVSTFtzb3VyY2VVUkxdKQogICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgdGhpcy5fc291cmNlTWFwRm9yVVJM
W3NvdXJjZVVSTF0gPSBzb3VyY2VNYXA7Ci0gICAgICAgICAgICB2YXIgc291cmNlQ29udGVudCA9
IHNvdXJjZU1hcC5zb3VyY2VDb250ZW50KHNvdXJjZVVSTCk7Ci0gICAgICAgICAgICB2YXIgY29u
dGVudFByb3ZpZGVyOwotICAgICAgICAgICAgaWYgKHNvdXJjZUNvbnRlbnQpCi0gICAgICAgICAg
ICAgICAgY29udGVudFByb3ZpZGVyID0gbmV3IFdlYkluc3BlY3Rvci5TdGF0aWNDb250ZW50UHJv
dmlkZXIoV2ViSW5zcGVjdG9yLnJlc291cmNlVHlwZXMuU2NyaXB0LCBzb3VyY2VDb250ZW50KTsK
LSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBjb250ZW50UHJvdmlkZXIgPSBuZXcg
V2ViSW5zcGVjdG9yLkNvbXBpbGVyU291cmNlTWFwcGluZ0NvbnRlbnRQcm92aWRlcihzb3VyY2VV
UkwpOwotICAgICAgICAgICAgdmFyIHVpU291cmNlQ29kZSA9IHRoaXMuX25ldHdvcmtXb3Jrc3Bh
Y2VQcm92aWRlci5hZGRGaWxlRm9yVVJMKHNvdXJjZVVSTCwgY29udGVudFByb3ZpZGVyLCB0cnVl
KTsKLSAgICAgICAgICAgIHVpU291cmNlQ29kZS5zZXRTb3VyY2VNYXBwaW5nKHRoaXMpOwotICAg
ICAgICAgICAgdWlTb3VyY2VDb2RlLmlzQ29udGVudFNjcmlwdCA9IHNjcmlwdC5pc0NvbnRlbnRT
Y3JpcHQ7CisgICAgICAgICAgICBpZiAoIVdlYkluc3BlY3Rvci5maWxlTWFwcGluZy5oYXNNYXBw
aW5nRm9yVVJMKHNvdXJjZVVSTCkgJiYgIXRoaXMuX3dvcmtzcGFjZS51aVNvdXJjZUNvZGVGb3JV
UkkodXJpKSkgeworICAgICAgICAgICAgICAgIHZhciBzb3VyY2VDb250ZW50ID0gc291cmNlTWFw
LnNvdXJjZUNvbnRlbnQoc291cmNlVVJMKTsKKyAgICAgICAgICAgICAgICB2YXIgY29udGVudFBy
b3ZpZGVyOworICAgICAgICAgICAgICAgIGlmIChzb3VyY2VDb250ZW50KQorICAgICAgICAgICAg
ICAgICAgICBjb250ZW50UHJvdmlkZXIgPSBuZXcgV2ViSW5zcGVjdG9yLlN0YXRpY0NvbnRlbnRQ
cm92aWRlcihXZWJJbnNwZWN0b3IucmVzb3VyY2VUeXBlcy5TY3JpcHQsIHNvdXJjZUNvbnRlbnQp
OworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgY29udGVudFByb3Zp
ZGVyID0gbmV3IFdlYkluc3BlY3Rvci5Db21waWxlclNvdXJjZU1hcHBpbmdDb250ZW50UHJvdmlk
ZXIoc291cmNlVVJMKTsKKyAgICAgICAgICAgICAgICB0aGlzLl9uZXR3b3JrV29ya3NwYWNlUHJv
dmlkZXIuYWRkRmlsZUZvclVSTChzb3VyY2VVUkwsIGNvbnRlbnRQcm92aWRlciwgdHJ1ZSk7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICB2YXIgdWlTb3VyY2VDb2RlID0gdGhpcy5fd29ya3Nw
YWNlLnVpU291cmNlQ29kZUZvclVSSSh1cmkpOworICAgICAgICAgICAgaWYgKHVpU291cmNlQ29k
ZSkgeworICAgICAgICAgICAgICAgIHRoaXMuX2JpbmRVSVNvdXJjZUNvZGUodGhpcy5fd29ya3Nw
YWNlLnVpU291cmNlQ29kZUZvclVSSSh1cmkpKTsKKyAgICAgICAgICAgICAgICB1aVNvdXJjZUNv
ZGUuaXNDb250ZW50U2NyaXB0ID0gc2NyaXB0LmlzQ29udGVudFNjcmlwdDsKKyAgICAgICAgICAg
IH0KICAgICAgICAgfQotCiAgICAgICAgIHRoaXMuX3NvdXJjZU1hcEZvclNjcmlwdElkW3Njcmlw
dC5zY3JpcHRJZF0gPSBzb3VyY2VNYXA7CiAgICAgICAgIHRoaXMuX3NjcmlwdEZvclNvdXJjZU1h
cC5wdXQoc291cmNlTWFwLCBzY3JpcHQpOwogICAgICAgICBzY3JpcHQucHVzaFNvdXJjZU1hcHBp
bmcodGhpcyk7CiAgICAgfSwKIAogICAgIC8qKgorICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9y
LlVJU291cmNlQ29kZX0gdWlTb3VyY2VDb2RlCisgICAgICovCisgICAgX2JpbmRVSVNvdXJjZUNv
ZGU6IGZ1bmN0aW9uKHVpU291cmNlQ29kZSkKKyAgICB7CisgICAgICAgIHVpU291cmNlQ29kZS5z
ZXRTb3VyY2VNYXBwaW5nKHRoaXMpOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0g
e1dlYkluc3BlY3Rvci5FdmVudH0gZXZlbnQKKyAgICAgKi8KKyAgICBfdWlTb3VyY2VDb2RlQWRk
ZWRUb1dvcmtzcGFjZTogZnVuY3Rpb24oZXZlbnQpCisgICAgeworICAgICAgICB2YXIgdWlTb3Vy
Y2VDb2RlID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2RlfSAqLyAoZXZlbnQu
ZGF0YSk7CisgICAgICAgIGlmICghdWlTb3VyY2VDb2RlLnVybCB8fCAhdGhpcy5fc291cmNlTWFw
Rm9yVVJMW3VpU291cmNlQ29kZS51cmxdKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB0
aGlzLl9iaW5kVUlTb3VyY2VDb2RlKHVpU291cmNlQ29kZSk7CisgICAgfSwKKworICAgIC8qKgog
ICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlNjcmlwdH0gc2NyaXB0CiAgICAgICogQHJldHVy
biB7V2ViSW5zcGVjdG9yLlBvc2l0aW9uQmFzZWRTb3VyY2VNYXB9CiAgICAgICovCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVNYXBwaW5nLmpzIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9GaWxlTWFwcGluZy5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5kZTVlZGQzMDdjYzA5YjI0NzE5MzQwYmFmMTNlZWYzNzUxNDFjZmMwCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9GaWxlTWFwcGluZy5q
cwpAQCAtMCwwICsxLDIwNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisg
KiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKy8qKgorICogQGNvbnN0cnVjdG9yCisgKiBAcGFyYW0ge1dlYklu
c3BlY3Rvci5GaWxlU3lzdGVtTWFwcGluZ30gZmlsZVN5c3RlbU1hcHBpbmcKKyAqLworV2ViSW5z
cGVjdG9yLkZpbGVNYXBwaW5nID0gZnVuY3Rpb24oZmlsZVN5c3RlbU1hcHBpbmcpCit7CisgICAg
dGhpcy5fZmlsZVN5c3RlbU1hcHBpbmcgPSBmaWxlU3lzdGVtTWFwcGluZzsKKyAgICB0aGlzLl9t
YXBwaW5nRW50cmllc1NldHRpbmcgPSBXZWJJbnNwZWN0b3Iuc2V0dGluZ3MuY3JlYXRlU2V0dGlu
ZygiZmlsZU1hcHBpbmdFbnRyaWVzIiwgW10pOworICAgIC8qKiBAdHlwZSB7QXJyYXkuPFdlYklu
c3BlY3Rvci5GaWxlTWFwcGluZy5NYXBwaW5nRW50cnk+fSAqLworICAgIHRoaXMuX21hcHBpbmdF
bnRyaWVzID0gW107CisgICAgdGhpcy5fZGVzZXJpYWxpemUoLyoqIEB0eXBlIHtBcnJheS48V2Vi
SW5zcGVjdG9yLkZpbGVNYXBwaW5nLk1hcHBpbmdFbnRyeT59ICovICh0aGlzLl9tYXBwaW5nRW50
cmllc1NldHRpbmcuZ2V0KCkpKTsKK30KKworLyoqIEB0eXBlZGVmIHt7dXJsUHJlZml4OiBzdHJp
bmcsIHBhdGhQcmVmaXg6IHN0cmluZ319ICovCitXZWJJbnNwZWN0b3IuRmlsZU1hcHBpbmcuU2Vy
aWFsaXplZE1hcHBpbmdFbnRyeTsKKworV2ViSW5zcGVjdG9yLkZpbGVNYXBwaW5nLnByb3RvdHlw
ZSA9IHsKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gdXJsCisgICAgICogQHJldHVy
biB7Ym9vbGVhbn0KKyAgICAgKi8KKyAgICBoYXNNYXBwaW5nRm9yVVJMOiBmdW5jdGlvbih1cmwp
CisgICAgeworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuX21hcHBpbmdFbnRyaWVz
Lmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICBpZiAodGhpcy5fbWFwcGluZ0VudHJpZXNbaV0u
bWF0Y2hlc1VSTCh1cmwpKQorICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9LAorICAgIAorICAgIC8qKgorICAgICAqIEBw
YXJhbSB7c3RyaW5nfSB1cmwKKyAgICAgKiBAcmV0dXJuIHtzdHJpbmd9CisgICAgICovCisgICAg
dXJpRm9yVVJMOiBmdW5jdGlvbih1cmwpCisgICAgeworICAgICAgICBmb3IgKHZhciBpID0gMDsg
aSA8IHRoaXMuX21hcHBpbmdFbnRyaWVzLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICB2YXIg
dXJpID0gdGhpcy5fbWFwcGluZ0VudHJpZXNbaV0udXJpRm9yVVJMKHVybCk7CisgICAgICAgICAg
ICBpZiAodHlwZW9mIHVyaSA9PT0gInN0cmluZyIpCisgICAgICAgICAgICAgICAgcmV0dXJuIHVy
aTsKKyAgICAgICAgfQorICAgICAgICAvLyBGSVhNRTogRmlsZU1hcHBpbmcgc2hvdWxkIGJlIG5l
dHdvcmsgcHJvamVjdCBhd2FyZS4gSXQgc2hvdWxkIHJldHVybiBjb3JyZWN0IHVyaSBmb3IgbmV0
d29yayBwcm9qZWN0IHVpU291cmNlQ29kZXMuCisgICAgICAgIHJldHVybiB1cmw7CisgICAgfSwK
KyAgICAKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gdXJpCisgICAgICogQHJldHVy
biB7P3N0cmluZ30KKyAgICAgKi8KKyAgICB1cmxGb3JVUkk6IGZ1bmN0aW9uKHVyaSkKKyAgICB7
CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5fbWFwcGluZ0VudHJpZXMubGVuZ3Ro
OyArK2kpIHsKKyAgICAgICAgICAgIGlmICh0aGlzLl9tYXBwaW5nRW50cmllc1tpXS5tYXRjaGVz
VVJJKHVyaSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX21hcHBpbmdFbnRyaWVzW2ld
LnVybEZvclVSSSh1cmkpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBudWxsOworICAgIH0s
CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge0FycmF5LjxXZWJJbnNwZWN0b3IuRmlsZU1hcHBp
bmcuU2VyaWFsaXplZE1hcHBpbmdFbnRyeT59IHNlcmlhbGl6ZWRNYXBwaW5nRW50cmllcworICAg
ICAqLworICAgIHNldE1hcHBpbmdzOiBmdW5jdGlvbihzZXJpYWxpemVkTWFwcGluZ0VudHJpZXMp
CisgICAgeworICAgICAgICB0aGlzLl9kZXNlcmlhbGl6ZShzZXJpYWxpemVkTWFwcGluZ0VudHJp
ZXMpOworICAgICAgICB0aGlzLl9zZXJpYWxpemUoKTsKKyAgICB9LAorCisgICAgLyoqCisgICAg
ICogQHJldHVybiB7QXJyYXkuPFdlYkluc3BlY3Rvci5GaWxlTWFwcGluZy5NYXBwaW5nRW50cnk+
fQorICAgICAqLworICAgIG1hcHBpbmdzOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICByZXR1
cm4gdGhpcy5fbWFwcGluZ0VudHJpZXMuc2xpY2UoKTsKKyAgICB9LAorCisgICAgLyoqCisgICAg
ICogQHBhcmFtIHtBcnJheS48V2ViSW5zcGVjdG9yLkZpbGVNYXBwaW5nLlNlcmlhbGl6ZWRNYXBw
aW5nRW50cnk+fSBzZXJpYWxpemVkTWFwcGluZ0VudHJpZXMKKyAgICAgKi8KKyAgICBfZGVzZXJp
YWxpemU6IGZ1bmN0aW9uKHNlcmlhbGl6ZWRNYXBwaW5nRW50cmllcykKKyAgICB7CisgICAgICAg
IHRoaXMuX21hcHBpbmdFbnRyaWVzID0gW107CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
c2VyaWFsaXplZE1hcHBpbmdFbnRyaWVzLmxlbmd0aDsgKytpKQorICAgICAgICAgICAgdGhpcy5f
bWFwcGluZ0VudHJpZXMucHVzaChXZWJJbnNwZWN0b3IuRmlsZU1hcHBpbmcuTWFwcGluZ0VudHJ5
LmRlc2VyaWFsaXplKHNlcmlhbGl6ZWRNYXBwaW5nRW50cmllc1tpXSwgdGhpcy5fZmlsZVN5c3Rl
bU1hcHBpbmcpKTsKKyAgICB9LAorCisgICAgX3NlcmlhbGl6ZTogZnVuY3Rpb24oKQorICAgIHsK
KyAgICAgICAgdmFyIHNhdmVkRW50cmllcyA9IFtdOworICAgICAgICBmb3IgKHZhciBpID0gMDsg
aSA8IHRoaXMuX21hcHBpbmdFbnRyaWVzLmxlbmd0aDsgKytpKQorICAgICAgICAgICAgc2F2ZWRF
bnRyaWVzLnB1c2godGhpcy5fbWFwcGluZ0VudHJpZXNbaV0uc2VyaWFsaXplKCkpOworICAgICAg
ICB0aGlzLl9tYXBwaW5nRW50cmllc1NldHRpbmcuc2V0KHNhdmVkRW50cmllcyk7CisgICAgfSwK
KworICAgIF9fcHJvdG9fXzogV2ViSW5zcGVjdG9yLk9iamVjdC5wcm90b3R5cGUKK30KKworLyoq
CisgKiBAY29uc3RydWN0b3IKKyAqIEBwYXJhbSB7c3RyaW5nfSB1cmxQcmVmaXgKKyAqIEBwYXJh
bSB7c3RyaW5nfSBwYXRoUHJlZml4CisgKiBAcGFyYW0gez9zdHJpbmd9IHVyaVByZWZpeAorICov
CitXZWJJbnNwZWN0b3IuRmlsZU1hcHBpbmcuTWFwcGluZ0VudHJ5ID0gZnVuY3Rpb24odXJsUHJl
Zml4LCBwYXRoUHJlZml4LCB1cmlQcmVmaXgpCit7CisgICAgdGhpcy5fdXJsUHJlZml4ID0gdXJs
UHJlZml4OworICAgIHRoaXMuX3BhdGhQcmVmaXggPSBwYXRoUHJlZml4OworICAgIHRoaXMuX3Vy
aVByZWZpeCA9IHVyaVByZWZpeDsKK30KKworLyoqCisgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5G
aWxlTWFwcGluZy5TZXJpYWxpemVkTWFwcGluZ0VudHJ5fSBzZXJpYWxpemVkTWFwcGluZ0VudHJ5
CisgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5GaWxlU3lzdGVtTWFwcGluZ30gZmlsZVN5c3RlbU1h
cHBpbmcKKyAqLworV2ViSW5zcGVjdG9yLkZpbGVNYXBwaW5nLk1hcHBpbmdFbnRyeS5kZXNlcmlh
bGl6ZSA9IGZ1bmN0aW9uKHNlcmlhbGl6ZWRNYXBwaW5nRW50cnksIGZpbGVTeXN0ZW1NYXBwaW5n
KQoreworICAgIHZhciB1cmlQcmVmaXggPSBmaWxlU3lzdGVtTWFwcGluZy51cmlGb3JQYXRoKHNl
cmlhbGl6ZWRNYXBwaW5nRW50cnkucGF0aFByZWZpeCk7CisgICAgcmV0dXJuIG5ldyBXZWJJbnNw
ZWN0b3IuRmlsZU1hcHBpbmcuTWFwcGluZ0VudHJ5KHNlcmlhbGl6ZWRNYXBwaW5nRW50cnkudXJs
UHJlZml4LCBzZXJpYWxpemVkTWFwcGluZ0VudHJ5LnBhdGhQcmVmaXgsIHVyaVByZWZpeCk7Cit9
CisKK1dlYkluc3BlY3Rvci5GaWxlTWFwcGluZy5NYXBwaW5nRW50cnkucHJvdG90eXBlID0gewor
ICAgIC8qKgorICAgICAqIEBwYXJhbSB7c3RyaW5nfSB1cmwKKyAgICAgKiBAcmV0dXJuIHtib29s
ZWFufQorICAgICAqLworICAgIG1hdGNoZXNVUkw6IGZ1bmN0aW9uKHVybCkKKyAgICB7CisgICAg
ICAgIHJldHVybiB1cmwuaW5kZXhPZih0aGlzLl91cmxQcmVmaXgpID09PSAwOworICAgIH0sCisg
ICAgCisgICAgLyoqCisgICAgICogQHBhcmFtIHtzdHJpbmd9IHVyaQorICAgICAqIEByZXR1cm4g
e2Jvb2xlYW59CisgICAgICovCisgICAgbWF0Y2hlc1VSSTogZnVuY3Rpb24odXJpKQorICAgIHsK
KyAgICAgICAgaWYgKCF0aGlzLl91cmlQcmVmaXgpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgIHJldHVybiB1cmkuaW5kZXhPZih0aGlzLl91cmlQcmVmaXgpID09PSAwOworICAg
IH0sCisgICAgCisgICAgLyoqCisgICAgICogQHBhcmFtIHtzdHJpbmd9IHVybAorICAgICAqIEBy
ZXR1cm4gez9zdHJpbmd9CisgICAgICovCisgICAgdXJpRm9yVVJMOiBmdW5jdGlvbih1cmwpCisg
ICAgeworICAgICAgICBpZiAodGhpcy5fdXJpUHJlZml4ICYmIHRoaXMubWF0Y2hlc1VSTCh1cmwp
KQorICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3VyaVByZWZpeCArIHVybC5zdWJzdHJpbmcodGhp
cy5fdXJsUHJlZml4Lmxlbmd0aCk7CisgICAgICAgIHJldHVybiBudWxsOworICAgIH0sCisgICAg
CisgICAgLyoqCisgICAgICogQHBhcmFtIHtzdHJpbmd9IHVyaQorICAgICAqIEByZXR1cm4gez9z
dHJpbmd9CisgICAgICovCisgICAgdXJsRm9yVVJJOiBmdW5jdGlvbih1cmkpCisgICAgeworICAg
ICAgICBpZiAodGhpcy5tYXRjaGVzVVJJKHVyaSkpCisgICAgICAgICAgICByZXR1cm4gdGhpcy5f
dXJsUHJlZml4ICsgdXJpLnN1YnN0cmluZyh0aGlzLl91cmlQcmVmaXgubGVuZ3RoKTsKKyAgICAg
ICAgcmV0dXJuIG51bGw7CisgICAgfSwKKyAgICAKKyAgICAvKioKKyAgICAgKiBAcmV0dXJuIHtP
YmplY3R9CisgICAgICovCisgICAgc2VyaWFsaXplOiBmdW5jdGlvbigpCisgICAgeworICAgICAg
ICByZXR1cm4geyB1cmxQcmVmaXg6IHRoaXMuX3VybFByZWZpeCwgcGF0aFByZWZpeDogdGhpcy5f
cGF0aFByZWZpeCB9OworICAgIH0sCisKKyAgICBfX3Byb3RvX186IFdlYkluc3BlY3Rvci5PYmpl
Y3QucHJvdG90eXBlCit9CisKKy8qKgorICogQHR5cGUgez9XZWJJbnNwZWN0b3IuRmlsZU1hcHBp
bmd9CisgKi8KK1dlYkluc3BlY3Rvci5maWxlTWFwcGluZyA9IG51bGw7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL05ldHdvcmtVSVNvdXJjZUNvZGVQcm92
aWRlci5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvTmV0d29ya1VJU291
cmNlQ29kZVByb3ZpZGVyLmpzCmluZGV4IDlkNTE2ODExYWI0ZDFhOWFjMmQ0ZTM1MWJhNmI3MTkx
MmNjOGM3YmIuLmUwNjBlZGRkN2FhMTIxMDk1OGJjOTkwYTQ5M2M0NDg1ZWQwNDQzOTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvTmV0d29ya1VJU291cmNl
Q29kZVByb3ZpZGVyLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
TmV0d29ya1VJU291cmNlQ29kZVByb3ZpZGVyLmpzCkBAIC0xMTQsNiArMTE0LDkgQEAgV2ViSW5z
cGVjdG9yLk5ldHdvcmtVSVNvdXJjZUNvZGVQcm92aWRlci5wcm90b3R5cGUgPSB7CiAgICAgICov
CiAgICAgX2FkZEZpbGU6IGZ1bmN0aW9uKHVybCwgY29udGVudFByb3ZpZGVyLCBpc0NvbnRlbnRT
Y3JpcHQpCiAgICAgeworICAgICAgICBpZiAoV2ViSW5zcGVjdG9yLmZpbGVNYXBwaW5nLmhhc01h
cHBpbmdGb3JVUkwodXJsKSkKKyAgICAgICAgICAgIHJldHVybjsKKwogICAgICAgICB2YXIgdHlw
ZSA9IGNvbnRlbnRQcm92aWRlci5jb250ZW50VHlwZSgpOwogICAgICAgICBpZiAodHlwZSAhPT0g
V2ViSW5zcGVjdG9yLnJlc291cmNlVHlwZXMuU3R5bGVzaGVldCAmJiB0eXBlICE9PSBXZWJJbnNw
ZWN0b3IucmVzb3VyY2VUeXBlcy5Eb2N1bWVudCAmJiB0eXBlICE9PSBXZWJJbnNwZWN0b3IucmVz
b3VyY2VUeXBlcy5TY3JpcHQpCiAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlU2NyaXB0TWFwcGluZy5qcyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VTY3JpcHRNYXBwaW5n
LmpzCmluZGV4IDg1MmQyYjQ1ODVmZjk4ZWZkNzE5OTE5NGNmNzg3MmFhYWE4NTg5MTcuLjM5MzVi
MDAxOGE4NGNhZWYwZjA3ZTFhYzY5Y2JiZDZjZTU3OGYyYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VTY3JpcHRNYXBwaW5nLmpzCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VTY3JpcHRNYXBwaW5n
LmpzCkBAIC0xMzgsNyArMTM4LDggQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlU2NyaXB0TWFwcGlu
Zy5wcm90b3R5cGUgPSB7CiAgICAgICAgIC8vIEZJWE1FOiB3b3JrYXJvdW5kIGZvciBzY3JpcHQu
aXNEeW5hbWljU2NyaXB0KCkgYmVpbmcgdW5yZWxpYWJsZS4KICAgICAgICAgaWYgKCFzY3JpcHQu
aXNJbmxpbmVTY3JpcHQoKSAmJiB0aGlzLl9pbmxpbmVTY3JpcHRzRm9yU291cmNlVVJMW3Njcmlw
dC5zb3VyY2VVUkxdKQogICAgICAgICAgICAgcmV0dXJuIG51bGw7Ci0gICAgICAgIHJldHVybiB0
aGlzLl93b3Jrc3BhY2UudWlTb3VyY2VDb2RlRm9yVVJMKHNjcmlwdC5zb3VyY2VVUkwpOworICAg
ICAgICB2YXIgdXJpID0gV2ViSW5zcGVjdG9yLmZpbGVNYXBwaW5nLnVyaUZvclVSTChzY3JpcHQu
c291cmNlVVJMKTsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3dvcmtzcGFjZS51aVNvdXJjZUNvZGVG
b3JVUkkodXJpKTsKICAgICB9LAogCiAgICAgLyoqCkBAIC0xNTgsNiArMTU5LDggQEAgV2ViSW5z
cGVjdG9yLlJlc291cmNlU2NyaXB0TWFwcGluZy5wcm90b3R5cGUgPSB7CiAgICAgICAgIGRlZmF1
bHQ6CiAgICAgICAgICAgICByZXR1cm4gW107CiAgICAgICAgIH0KKyAgICAgICAgaWYgKCF1aVNv
dXJjZUNvZGUudXJsKQorICAgICAgICAgICAgcmV0dXJuIFtdOwogICAgICAgICB2YXIgc2NyaXB0
c0ZvclNvdXJjZVVSTCA9IGlzSW5saW5lU2NyaXB0ID8gdGhpcy5faW5saW5lU2NyaXB0c0ZvclNv
dXJjZVVSTCA6IHRoaXMuX25vbklubGluZVNjcmlwdHNGb3JTb3VyY2VVUkw7CiAgICAgICAgIHJl
dHVybiBzY3JpcHRzRm9yU291cmNlVVJMW3VpU291cmNlQ29kZS51cmxdIHx8IFtdOwogICAgIH0s
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNl
VXRpbHMuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlVXRp
bHMuanMKaW5kZXggY2UwNDdhNjZhNTAwYmZmYWU4NTE1OWQ4ZWI2ZjgwNTUzNTBjNTUwZS4uNjRi
N2UxNTFjZWE2OTllZGJiZDNjY2Y5ZDdjMDI4YTUzZjNlZmRmNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZVV0aWxzLmpzCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VVdGlscy5qcwpAQCAtNTgsNyAr
NTgsOCBAQCBXZWJJbnNwZWN0b3IuZGlzcGxheU5hbWVGb3JVUkwgPSBmdW5jdGlvbih1cmwpCiAg
ICAgaWYgKHJlc291cmNlKQogICAgICAgICByZXR1cm4gcmVzb3VyY2UuZGlzcGxheU5hbWU7CiAK
LSAgICB2YXIgdWlTb3VyY2VDb2RlID0gV2ViSW5zcGVjdG9yLndvcmtzcGFjZS51aVNvdXJjZUNv
ZGVGb3JVUkwodXJsKTsKKyAgICB2YXIgdXJpID0gV2ViSW5zcGVjdG9yLmZpbGVNYXBwaW5nLnVy
aUZvclVSTCh1cmwpOworICAgIHZhciB1aVNvdXJjZUNvZGUgPSBXZWJJbnNwZWN0b3Iud29ya3Nw
YWNlLnVpU291cmNlQ29kZUZvclVSSSh1cmkpOwogICAgIGlmICh1aVNvdXJjZUNvZGUpCiAgICAg
ICAgIHJldHVybiB1aVNvdXJjZUNvZGUucGFyc2VkVVJMLmRpc3BsYXlOYW1lOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NBU1NTb3VyY2VNYXBwaW5n
LmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TQVNTU291cmNlTWFwcGlu
Zy5qcwppbmRleCA4NDRiNmFmY2YyYzQ5NmMwMTUzNGM2NGQwYmY1NjY0ODEzODUwOTFmLi4zMzZk
MDA3Y2MyZDhkZjg1ZGU3MDY2Y2YzOTc3NzIwYmYyZjU3NjNiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NBU1NTb3VyY2VNYXBwaW5nLmpzCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU0FTU1NvdXJjZU1hcHBpbmcuanMKQEAg
LTM4LDcgKzM4LDcgQEAgV2ViSW5zcGVjdG9yLlNBU1NTb3VyY2VNYXBwaW5nID0gZnVuY3Rpb24o
d29ya3NwYWNlLCBuZXR3b3JrV29ya3NwYWNlUHJvdmlkZXIpCiB7CiAgICAgdGhpcy5fd29ya3Nw
YWNlID0gd29ya3NwYWNlOwogICAgIHRoaXMuX25ldHdvcmtXb3Jrc3BhY2VQcm92aWRlciA9IG5l
dHdvcmtXb3Jrc3BhY2VQcm92aWRlcjsKLSAgICB0aGlzLl91aUxvY2F0aW9ucyA9IHt9OworICAg
IHRoaXMuX21hcHBpbmdFbnRyaWVzID0ge307CiAgICAgdGhpcy5fY3NzVVJMc0ZvclNBU1NVUkwg
PSB7fTsKICAgICB0aGlzLl90aW1lb3V0Rm9yVVJMID0ge307CiAgICAgV2ViSW5zcGVjdG9yLnJl
c291cmNlVHJlZU1vZGVsLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlJlc291cmNlVHJl
ZU1vZGVsLkV2ZW50VHlwZXMuUmVzb3VyY2VBZGRlZCwgdGhpcy5fcmVzb3VyY2VBZGRlZCwgdGhp
cyk7CkBAIC02Nyw2ICs2Nyw3IEBAIFdlYkluc3BlY3Rvci5TQVNTU291cmNlTWFwcGluZy5wcm90
b3R5cGUgPSB7CiAgICAgICovCiAgICAgX2ZpbGVTYXZlRmluaXNoZWQ6IGZ1bmN0aW9uKGV2ZW50
KQogICAgIHsKKyAgICAgICAgLy8gRklYTUU6IGFkZCBzdXBwb3J0IGZvciBGaWxlTWFwcGluZy4K
ICAgICAgICAgdmFyIHNhc3NVUkwgPSAvKiogQHR5cGUge3N0cmluZ30gKi8gKGV2ZW50LmRhdGEp
OwogICAgICAgICBmdW5jdGlvbiBjYWxsYmFjaygpCiAgICAgICAgIHsKQEAgLTkyLDcgKzkzLDgg
QEAgV2ViSW5zcGVjdG9yLlNBU1NTb3VyY2VNYXBwaW5nLnByb3RvdHlwZSA9IHsKIAogICAgIF9y
ZWxvYWRDU1M6IGZ1bmN0aW9uKHVybCkKICAgICB7Ci0gICAgICAgIHZhciB1aVNvdXJjZUNvZGUg
PSB0aGlzLl93b3Jrc3BhY2UudWlTb3VyY2VDb2RlRm9yVVJMKHVybCk7CisgICAgICAgIHZhciB1
cmkgPSBXZWJJbnNwZWN0b3IuZmlsZU1hcHBpbmcudXJpRm9yVVJMKHVybCk7CisgICAgICAgIHZh
ciB1aVNvdXJjZUNvZGUgPSB0aGlzLl93b3Jrc3BhY2UudWlTb3VyY2VDb2RlRm9yVVJJKHVyaSk7
CiAgICAgICAgIGlmICghdWlTb3VyY2VDb2RlKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB2YXIgbmV3Q29udGVudCA9IEluc3BlY3RvckZyb250ZW5kSG9zdC5sb2FkUmVzb3VyY2VTeW5j
aHJvbm91c2x5KHVybCk7CkBAIC0xNTEsMTggKzE1MywxOCBAQCBXZWJJbnNwZWN0b3IuU0FTU1Nv
dXJjZU1hcHBpbmcucHJvdG90eXBlID0gewogICAgICAqIEBwYXJhbSB7c3RyaW5nfSByYXdVUkwK
ICAgICAgKiBAcGFyYW0ge251bWJlcn0gcmF3TGluZQogICAgICAqLwotICAgIF9iaW5kVUlTb3Vy
Y2VDb2RlOiBmdW5jdGlvbih1cmwsIGxpbmUsIHJhd1VSTCwgcmF3TGluZSkKKyAgICBfYWRkVVJM
TWFwcGluZzogZnVuY3Rpb24odXJsLCBsaW5lLCByYXdVUkwsIHJhd0xpbmUpCiAgICAgewotICAg
ICAgICB2YXIgdWlTb3VyY2VDb2RlID0gdGhpcy5fd29ya3NwYWNlLnVpU291cmNlQ29kZUZvclVS
TCh1cmwpOwotICAgICAgICBpZiAoIXVpU291cmNlQ29kZSkgeworICAgICAgICB2YXIgdXJpID0g
V2ViSW5zcGVjdG9yLmZpbGVNYXBwaW5nLnVyaUZvclVSTCh1cmwpOworICAgICAgICBpZiAoIVdl
Ykluc3BlY3Rvci5maWxlTWFwcGluZy5oYXNNYXBwaW5nRm9yVVJMKHVybCkgJiYgIXRoaXMuX3dv
cmtzcGFjZS51aVNvdXJjZUNvZGVGb3JVUkkodXJpKSkgewogICAgICAgICAgICAgdmFyIGNvbnRl
bnQgPSBJbnNwZWN0b3JGcm9udGVuZEhvc3QubG9hZFJlc291cmNlU3luY2hyb25vdXNseSh1cmwp
OwogICAgICAgICAgICAgdmFyIGNvbnRlbnRQcm92aWRlciA9IG5ldyBXZWJJbnNwZWN0b3IuU3Rh
dGljQ29udGVudFByb3ZpZGVyKFdlYkluc3BlY3Rvci5yZXNvdXJjZVR5cGVzLlN0eWxlc2hlZXQs
IGNvbnRlbnQsICJ0ZXh0L3gtc2NzcyIpOwotICAgICAgICAgICAgdWlTb3VyY2VDb2RlID0gdGhp
cy5fbmV0d29ya1dvcmtzcGFjZVByb3ZpZGVyLmFkZEZpbGVGb3JVUkwodXJsLCBjb250ZW50UHJv
dmlkZXIsIHRydWUpOwotICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmNzc01vZGVsLnNldFNvdXJj
ZU1hcHBpbmcocmF3VVJMLCB0aGlzKTsKKyAgICAgICAgICAgIHRoaXMuX25ldHdvcmtXb3Jrc3Bh
Y2VQcm92aWRlci5hZGRGaWxlRm9yVVJMKHVybCwgY29udGVudFByb3ZpZGVyLCB0cnVlKTsKICAg
ICAgICAgfQogICAgICAgICB2YXIgcmF3TG9jYXRpb25TdHJpbmcgPSByYXdVUkwgKyAiOiIgKyAo
cmF3TGluZSArIDEpOyAgLy8gTmV4dCBsaW5lIGFmdGVyIG1hcHBpbmcgbWV0YWluZm8KLSAgICAg
ICAgdGhpcy5fdWlMb2NhdGlvbnNbcmF3TG9jYXRpb25TdHJpbmddID0gbmV3IFdlYkluc3BlY3Rv
ci5VSUxvY2F0aW9uKHVpU291cmNlQ29kZSwgbGluZSAtIDEsIDApOworICAgICAgICB0aGlzLl9t
YXBwaW5nRW50cmllc1tyYXdMb2NhdGlvblN0cmluZ10gPSBuZXcgV2ViSW5zcGVjdG9yLlNBU1NT
b3VyY2VNYXBwaW5nLk1hcHBpbmdFbnRyeSh1cmksIGxpbmUgLSAxLCAwKTsKICAgICAgICAgdGhp
cy5fYWRkQ1NTVVJMZm9yU0FTU1VSTChyYXdVUkwsIHVybCk7CisgICAgICAgIFdlYkluc3BlY3Rv
ci5jc3NNb2RlbC5zZXRTb3VyY2VNYXBwaW5nKHJhd1VSTCwgdGhpcyk7CiAgICAgfSwKIAogICAg
IC8qKgpAQCAtMTg5LDEwICsxOTEsMTggQEAgV2ViSW5zcGVjdG9yLlNBU1NTb3VyY2VNYXBwaW5n
LnByb3RvdHlwZSA9IHsKICAgICByYXdMb2NhdGlvblRvVUlMb2NhdGlvbjogZnVuY3Rpb24ocmF3
TG9jYXRpb24pCiAgICAgewogICAgICAgICB2YXIgbG9jYXRpb24gPSAvKiogQHR5cGUgV2ViSW5z
cGVjdG9yLkNTU0xvY2F0aW9uICovIChyYXdMb2NhdGlvbik7Ci0gICAgICAgIHZhciB1aUxvY2F0
aW9uID0gdGhpcy5fdWlMb2NhdGlvbnNbbG9jYXRpb24udXJsICsgIjoiICsgbG9jYXRpb24ubGlu
ZU51bWJlcl07CisgICAgICAgIHZhciBtYXBwaW5nRW50cnkgPSB0aGlzLl9tYXBwaW5nRW50cmll
c1tsb2NhdGlvbi51cmwgKyAiOiIgKyBsb2NhdGlvbi5saW5lTnVtYmVyXTsKKyAgICAgICAgdmFy
IHVpTG9jYXRpb24gPSBudWxsOworICAgICAgICBpZiAobWFwcGluZ0VudHJ5KSB7CisgICAgICAg
ICAgICB2YXIgdWlTb3VyY2VDb2RlID0gdGhpcy5fd29ya3NwYWNlLnVpU291cmNlQ29kZUZvclVS
SShtYXBwaW5nRW50cnkudXJpKTsKKyAgICAgICAgICAgIGlmICh1aVNvdXJjZUNvZGUpCisgICAg
ICAgICAgICAgICAgdWlMb2NhdGlvbiA9IG5ldyBXZWJJbnNwZWN0b3IuVUlMb2NhdGlvbih1aVNv
dXJjZUNvZGUsIG1hcHBpbmdFbnRyeS5saW5lTnVtYmVyLCBtYXBwaW5nRW50cnkuY29sdW1uTnVt
YmVyKTsKKyAgICAgICAgfQogICAgICAgICBpZiAoIXVpTG9jYXRpb24pIHsKLSAgICAgICAgICAg
IHZhciB1aVNvdXJjZUNvZGUgPSB0aGlzLl93b3Jrc3BhY2UudWlTb3VyY2VDb2RlRm9yVVJMKGxv
Y2F0aW9uLnVybCk7Ci0gICAgICAgICAgICB1aUxvY2F0aW9uID0gbmV3IFdlYkluc3BlY3Rvci5V
SUxvY2F0aW9uKHVpU291cmNlQ29kZSwgbG9jYXRpb24ubGluZU51bWJlciwgMCk7CisgICAgICAg
ICAgICB2YXIgdXJpID0gV2ViSW5zcGVjdG9yLmZpbGVNYXBwaW5nLnVyaUZvclVSTChsb2NhdGlv
bi51cmwpOworICAgICAgICAgICAgdmFyIHVpU291cmNlQ29kZSA9IHRoaXMuX3dvcmtzcGFjZS51
aVNvdXJjZUNvZGVGb3JVUkkodXJpKTsKKyAgICAgICAgICAgIGlmICh1aVNvdXJjZUNvZGUpCisg
ICAgICAgICAgICAgICAgdWlMb2NhdGlvbiA9IG5ldyBXZWJJbnNwZWN0b3IuVUlMb2NhdGlvbih1
aVNvdXJjZUNvZGUsIGxvY2F0aW9uLmxpbmVOdW1iZXIsIDApOwogICAgICAgICB9CiAgICAgICAg
IHJldHVybiB1aUxvY2F0aW9uOwogICAgIH0sCkBAIC0yMTEsOCArMjIxLDIwIEBAIFdlYkluc3Bl
Y3Rvci5TQVNTU291cmNlTWFwcGluZy5wcm90b3R5cGUgPSB7CiAKICAgICBfcmVzZXQ6IGZ1bmN0
aW9uKCkKICAgICB7Ci0gICAgICAgIHRoaXMuX3VpTG9jYXRpb25zID0ge307CisgICAgICAgIHRo
aXMuX21hcHBpbmdFbnRyaWVzID0ge307CiAgICAgICAgIHRoaXMuX3BvcHVsYXRlKCk7CiAgICAg
fQogfQogCisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICogQHBhcmFtIHtzdHJpbmd9IHVyaQorICog
QHBhcmFtIHtudW1iZXJ9IGxpbmVOdW1iZXIKKyAqLworV2ViSW5zcGVjdG9yLlNBU1NTb3VyY2VN
YXBwaW5nLk1hcHBpbmdFbnRyeSA9IGZ1bmN0aW9uKHVyaSwgbGluZU51bWJlciwgY29sdW1uTnVt
YmVyKQoreworICAgIHRoaXMudXJpID0gdXJpOworICAgIHRoaXMubGluZU51bWJlciA9IGxpbmVO
dW1iZXI7CisgICAgdGhpcy5jb2x1bW5OdW1iZXIgPSBjb2x1bW5OdW1iZXI7Cit9CisKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU3R5bGVzU291cmNlTWFw
cGluZy5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU3R5bGVzU291cmNl
TWFwcGluZy5qcwppbmRleCBiZjI5YTkxODFmMzk2YjM2MWE3NmU1OGRkMjk3ZjFkNWM0NzgwOTA0
Li44M2I2ZDViZDg1ZTIyNGY3NmFiMDNjZmNjZGQ2ZmU5YWQ4M2IyMzYwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1N0eWxlc1NvdXJjZU1hcHBpbmcuanMK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TdHlsZXNTb3VyY2VNYXBw
aW5nLmpzCkBAIC0zOSw3ICszOSw3IEBAIFdlYkluc3BlY3Rvci5TdHlsZXNTb3VyY2VNYXBwaW5n
ID0gZnVuY3Rpb24od29ya3NwYWNlKQogICAgIHRoaXMuX3dvcmtzcGFjZS5hZGRFdmVudExpc3Rl
bmVyKFdlYkluc3BlY3Rvci5Xb3Jrc3BhY2UuRXZlbnRzLlByb2plY3RXaWxsUmVzZXQsIHRoaXMu
X3Byb2plY3RXaWxsUmVzZXQsIHRoaXMpOwogICAgIHRoaXMuX3dvcmtzcGFjZS5hZGRFdmVudExp
c3RlbmVyKFdlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGVQcm92aWRlci5FdmVudHMuVUlTb3VyY2VD
b2RlQWRkZWQsIHRoaXMuX3VpU291cmNlQ29kZUFkZGVkVG9Xb3Jrc3BhY2UsIHRoaXMpOwogCi0g
ICAgdGhpcy5fdWlTb3VyY2VDb2RlRm9yVVJMID0ge307CisgICAgdGhpcy5fbWFwcGVkVVJMcyA9
IHt9OwogfQogCiBXZWJJbnNwZWN0b3IuU3R5bGVzU291cmNlTWFwcGluZy5wcm90b3R5cGUgPSB7
CkBAIC01MCw3ICs1MCw4IEBAIFdlYkluc3BlY3Rvci5TdHlsZXNTb3VyY2VNYXBwaW5nLnByb3Rv
dHlwZSA9IHsKICAgICByYXdMb2NhdGlvblRvVUlMb2NhdGlvbjogZnVuY3Rpb24ocmF3TG9jYXRp
b24pCiAgICAgewogICAgICAgICB2YXIgbG9jYXRpb24gPSAvKiogQHR5cGUgV2ViSW5zcGVjdG9y
LkNTU0xvY2F0aW9uICovIChyYXdMb2NhdGlvbik7Ci0gICAgICAgIHZhciB1aVNvdXJjZUNvZGUg
PSB0aGlzLl91aVNvdXJjZUNvZGVGb3JVUkxbbG9jYXRpb24udXJsXTsKKyAgICAgICAgdmFyIHVy
aSA9IFdlYkluc3BlY3Rvci5maWxlTWFwcGluZy51cmlGb3JVUkwobG9jYXRpb24udXJsKTsKKyAg
ICAgICAgdmFyIHVpU291cmNlQ29kZSA9IHRoaXMuX3dvcmtzcGFjZS51aVNvdXJjZUNvZGVGb3JV
UkkodXJpKTsKICAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuVUlMb2NhdGlvbih1aVNv
dXJjZUNvZGUsIGxvY2F0aW9uLmxpbmVOdW1iZXIsIDApOwogICAgIH0sCiAKQEAgLTY4LDIyICs2
OSwxMyBAQCBXZWJJbnNwZWN0b3IuU3R5bGVzU291cmNlTWFwcGluZy5wcm90b3R5cGUgPSB7CiAg
ICAgX3VpU291cmNlQ29kZUFkZGVkVG9Xb3Jrc3BhY2U6IGZ1bmN0aW9uKGV2ZW50KQogICAgIHsK
ICAgICAgICAgdmFyIHVpU291cmNlQ29kZSA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLlVJU291
cmNlQ29kZX0gKi8gKGV2ZW50LmRhdGEpOwotICAgICAgICBpZiAoIXVpU291cmNlQ29kZS51cmwg
fHwgdGhpcy5fdWlTb3VyY2VDb2RlRm9yVVJMW3VpU291cmNlQ29kZS51cmxdKQotICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICBpZiAodWlTb3VyY2VDb2RlLmNvbnRlbnRUeXBlKCkgIT09IFdl
Ykluc3BlY3Rvci5yZXNvdXJjZVR5cGVzLlN0eWxlc2hlZXQpCiAgICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgIGlmICghV2ViSW5zcGVjdG9yLnJlc291cmNlRm9yVVJMKHVpU291cmNlQ29kZS51
cmwpKQorICAgICAgICBpZiAoIXVpU291cmNlQ29kZS51cmwgfHwgIVdlYkluc3BlY3Rvci5yZXNv
dXJjZUZvclVSTCh1aVNvdXJjZUNvZGUudXJsKSkKICAgICAgICAgICAgIHJldHVybjsKLQotICAg
ICAgICB0aGlzLl9hZGRVSVNvdXJjZUNvZGUodWlTb3VyY2VDb2RlKTsKLSAgICB9LAotCi0gICAg
LyoqCi0gICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2RlfSB1aVNvdXJjZUNv
ZGUKLSAgICAgKi8KLSAgICBfYWRkVUlTb3VyY2VDb2RlOiBmdW5jdGlvbih1aVNvdXJjZUNvZGUp
Ci0gICAgewotICAgICAgICB0aGlzLl91aVNvdXJjZUNvZGVGb3JVUkxbdWlTb3VyY2VDb2RlLnVy
bF0gPSB1aVNvdXJjZUNvZGU7CisgICAgICAgIGlmICh0aGlzLl9tYXBwZWRVUkxzW3VpU291cmNl
Q29kZS51cmxdKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB0aGlzLl9tYXBwZWRVUkxz
W3VpU291cmNlQ29kZS51cmxdID0gdHJ1ZTsKICAgICAgICAgdWlTb3VyY2VDb2RlLnNldFNvdXJj
ZU1hcHBpbmcodGhpcyk7CiAgICAgICAgIHZhciBzdHlsZUZpbGUgPSBuZXcgV2ViSW5zcGVjdG9y
LlN0eWxlRmlsZSh1aVNvdXJjZUNvZGUpOwogICAgICAgICB1aVNvdXJjZUNvZGUuc2V0U3R5bGVG
aWxlKHN0eWxlRmlsZSk7CkBAIC05NSw3ICs4Nyw3IEBAIFdlYkluc3BlY3Rvci5TdHlsZXNTb3Vy
Y2VNYXBwaW5nLnByb3RvdHlwZSA9IHsKICAgICAgICAgdmFyIHByb2plY3QgPSBldmVudC5kYXRh
OwogICAgICAgICB2YXIgdWlTb3VyY2VDb2RlcyA9IHByb2plY3QudWlTb3VyY2VDb2RlcygpOwog
ICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHVpU291cmNlQ29kZXM7ICsraSkKLSAgICAgICAg
ICAgIGRlbGV0ZSB0aGlzLl91aVNvdXJjZUNvZGVGb3JVUkxbdWlTb3VyY2VDb2Rlc1tpXS51cmxd
OworICAgICAgICAgICAgZGVsZXRlIHRoaXMuX21hcHBlZFVSTHNbdWlTb3VyY2VDb2Rlc1tpXS51
cmxdOwogICAgIH0KIH0KIApAQCAtMjY2LDcgKzI1OCw4IEBAIFdlYkluc3BlY3Rvci5TdHlsZUNv
bnRlbnRCaW5kaW5nLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIGlmICh0eXBlb2Ygc3R5bGVT
aGVldFVSTCAhPT0gInN0cmluZyIpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAg
ICAgICB2YXIgdWlTb3VyY2VDb2RlID0gV2ViSW5zcGVjdG9yLndvcmtzcGFjZS51aVNvdXJjZUNv
ZGVGb3JVUkwoc3R5bGVTaGVldFVSTCk7CisgICAgICAgICAgICB2YXIgdXJpID0gV2ViSW5zcGVj
dG9yLmZpbGVNYXBwaW5nLnVyaUZvclVSTChzdHlsZVNoZWV0VVJMKTsKKyAgICAgICAgICAgIHZh
ciB1aVNvdXJjZUNvZGUgPSBXZWJJbnNwZWN0b3Iud29ya3NwYWNlLnVpU291cmNlQ29kZUZvclVS
SSh1cmkpOwogICAgICAgICAgICAgaWYgKCF1aVNvdXJjZUNvZGUpCiAgICAgICAgICAgICAgICAg
cmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L1dlYktpdC5xcmMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5x
cmMKaW5kZXggYjc1Yjc5Yjg5ZTk3N2RlYTc2OTgxZGJlYjdlNjMxMTBlNDJmNGVhZS4uNjRmMGU5
YTFhZjNiOTg1MTBmNTUyZWYzYTYwM2M0NTVlMWNjYzA0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9XZWJLaXQucXJjCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvV2ViS2l0LnFyYwpAQCAtNzQsNiArNzQsNyBAQAogICAgIDxm
aWxlPkV4dGVuc2lvblZpZXcuanM8L2ZpbGU+CiAgICAgPGZpbGU+RmlsZUNvbnRlbnRWaWV3Lmpz
PC9maWxlPgogICAgIDxmaWxlPkZpbGVNYW5hZ2VyLmpzPC9maWxlPgorICAgIDxmaWxlPkZpbGVN
YXBwaW5nLmpzPC9maWxlPgogICAgIDxmaWxlPkZpbGVTeXN0ZW1NYXBwaW5nLmpzPC9maWxlPgog
ICAgIDxmaWxlPkZpbGVTeXN0ZW1Nb2RlbC5qczwvZmlsZT4KICAgICA8ZmlsZT5GaWxlU3lzdGVt
Vmlldy5qczwvZmlsZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvV29ya3NwYWNlLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9X
b3Jrc3BhY2UuanMKaW5kZXggZGEwMzVhMmE5NGRmMjI4OTAxYzM3YjE3YTgwZGQ3ZWJiYzVmYTYx
Zi4uZTFjYzBjODMyM2JiZmE2YzUwZThlZGMwNzgxMGQ2ZWY1NzYyNjBjZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Xb3Jrc3BhY2UuanMKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Xb3Jrc3BhY2UuanMKQEAgLTE4OCwxOSAr
MTg4LDYgQEAgV2ViSW5zcGVjdG9yLlByb2plY3QucHJvdG90eXBlID0gewogICAgIH0sCiAKICAg
ICAvKioKLSAgICAgKiBAcGFyYW0ge3N0cmluZ30gdXJsCi0gICAgICogQHJldHVybiB7P1dlYklu
c3BlY3Rvci5VSVNvdXJjZUNvZGV9Ci0gICAgICovCi0gICAgdWlTb3VyY2VDb2RlRm9yVVJMOiBm
dW5jdGlvbih1cmwpCi0gICAgewotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuX3Vp
U291cmNlQ29kZXMubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgIGlmICh0aGlzLl91aVNvdXJj
ZUNvZGVzW2ldLnVybCA9PT0gdXJsKQotICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl91aVNv
dXJjZUNvZGVzW2ldOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBudWxsOwotICAgIH0sCi0K
LSAgICAvKioKICAgICAgKiBAcGFyYW0ge3N0cmluZ30gb3JpZ2luVVJMCiAgICAgICogQHJldHVy
biB7P1dlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGV9CiAgICAgICovCkBAIC0zMDEsMTUgKzI4OCw2
IEBAIFdlYkluc3BlY3Rvci5Xb3Jrc3BhY2UucHJvdG90eXBlID0gewogICAgIH0sCiAKICAgICAv
KioKLSAgICAgKiBAcGFyYW0ge3N0cmluZ30gdXJsCi0gICAgICogQHJldHVybiB7P1dlYkluc3Bl
Y3Rvci5VSVNvdXJjZUNvZGV9Ci0gICAgICovCi0gICAgdWlTb3VyY2VDb2RlRm9yVVJMOiBmdW5j
dGlvbih1cmwpCi0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5fcHJvamVjdHNbV2ViSW5zcGVj
dG9yLnByb2plY3ROYW1lcy5OZXR3b3JrXS51aVNvdXJjZUNvZGVGb3JVUkwodXJsKTsKLSAgICB9
LAotCi0gICAgLyoqCiAgICAgICogQHBhcmFtIHtzdHJpbmd9IHVyaQogICAgICAqIEByZXR1cm4g
ez9XZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2RlfQogICAgICAqLwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuaHRtbCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmh0bWwKaW5kZXggMDE5YTYxYWY3OGUw
ZjJhMmU1MjNjNmE1YTAyOWU0YTdlZDJmNGM0Ny4uMDA1NDdiMDhmZjJiYjJkM2E3YmQ2NGIxZjU5
NmVmNDdmYTg5NjJlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9pbnNwZWN0b3IuaHRtbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL2luc3BlY3Rvci5odG1sCkBAIC0xMzksNiArMTM5LDcgQEAgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAgICA8c2Ny
aXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJQcmVzZW50YXRpb25Db25zb2xlTWVzc2Fn
ZUhlbHBlci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQi
IHNyYz0iSXNvbGF0ZWRGaWxlU3lzdGVtTW9kZWwuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQg
dHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IkZpbGVTeXN0ZW1NYXBwaW5nLmpzIj48L3Njcmlw
dD4KKyAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJGaWxlTWFwcGluZy5q
cyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iV29y
a3NwYWNlLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIg
c3JjPSJTaW1wbGVXb3Jrc3BhY2VQcm92aWRlci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0
eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iQnJlYWtwb2ludE1hbmFnZXIuanMiPjwvc2NyaXB0
PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0
b3IuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcwpp
bmRleCBkYzNlZjA4MWM3NDYwMWRjNWRjZWU4MTE2YmU3YzIwMmM4YzA4OTE2Li5mMzliYzZkNjg2
ZWEwZGQyYWY3OGM1M2M1MTk4NzYyMTY5MWIxMWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcwpAQCAtNDMyLDYgKzQzMiw3IEBAIFdlYklu
c3BlY3Rvci5fZG9Mb2FkZWREb25lV2l0aENhcGFiaWxpdGllcyA9IGZ1bmN0aW9uKCkKIAogICAg
IHRoaXMuaXNvbGF0ZWRGaWxlU3lzdGVtTW9kZWwgPSBuZXcgV2ViSW5zcGVjdG9yLklzb2xhdGVk
RmlsZVN5c3RlbU1vZGVsKCk7CiAgICAgdGhpcy5pc29sYXRlZEZpbGVTeXN0ZW1EaXNwYXRjaGVy
ID0gbmV3IFdlYkluc3BlY3Rvci5Jc29sYXRlZEZpbGVTeXN0ZW1EaXNwYXRjaGVyKHRoaXMuaXNv
bGF0ZWRGaWxlU3lzdGVtTW9kZWwpOworICAgIHRoaXMuZmlsZU1hcHBpbmcgPSBuZXcgV2ViSW5z
cGVjdG9yLkZpbGVNYXBwaW5nKHRoaXMuaXNvbGF0ZWRGaWxlU3lzdGVtTW9kZWwubWFwcGluZygp
KTsKICAgICB0aGlzLndvcmtzcGFjZSA9IG5ldyBXZWJJbnNwZWN0b3IuV29ya3NwYWNlKCk7CiAg
ICAgdGhpcy5uZXR3b3JrV29ya3NwYWNlUHJvdmlkZXIgPSBuZXcgV2ViSW5zcGVjdG9yLlNpbXBs
ZVdvcmtzcGFjZVByb3ZpZGVyKHRoaXMud29ya3NwYWNlKTsKICAgICB0aGlzLndvcmtzcGFjZS5h
ZGRQcm9qZWN0KFdlYkluc3BlY3Rvci5wcm9qZWN0TmFtZXMuTmV0d29yaywgdGhpcy5uZXR3b3Jr
V29ya3NwYWNlUHJvdmlkZXIpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGY2ZGJlNjcwOWU2ZThmNDEyMmMxNDlmNGQyNTg1
YjYzNjZjNjEzZGEuLmY1MjBiZjQxMDViZjBhNTA3OTAwNjgyOTYwZTQ1NTBlYThmMTQxZjEgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKQEAgLTEsNSArMSwxNSBAQAogMjAxMy0wMS0xNSAgVnNldm9sb2QgVmxhc292ICA8dnNldmlr
QGNocm9taXVtLm9yZz4KIAorICAgICAgICBXZWIgSW5zcGVjdG9yOiBJbnRyb2R1Y2UgZmlsZSBt
YXBwaW5nIGFsbG93aW5nIHRvIG1hcCBuZXR3b3JrIGxvYWRlZCBzY3JpcHRzIGFuZCBzdHlsZXNo
ZWV0cyB0byBmaWxlIHN5c3RlbSBmaWxlcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEwNjc5NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogaW5zcGVjdG9yL2ZpbGUtbWFwcGluZy1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIGluc3BlY3Rvci9maWxlLW1hcHBpbmcuaHRtbDogQWRkZWQuCisK
KzIwMTMtMDEtMTUgIFZzZXZvbG9kIFZsYXNvdiAgPHZzZXZpa0BjaHJvbWl1bS5vcmc+CisKICAg
ICAgICAgV2ViIEluc3BlY3RvcjogSW50cm9kdWNlIFVJU291cmNlQ29kZS5vcmlnaW5VUkwoKS4K
ICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNjkwOQog
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZmlsZS1tYXBwaW5nLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9maWxlLW1hcHBpbmctZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmJjODYwZmU3YWYwMzJiNjRhMTAzZDExODFlM2NjY2U2ZWE4ZjE3NjcKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZmlsZS1tYXBwaW5nLWV4cGVjdGVk
LnR4dApAQCAtMCwwICsxLDQgQEAKK1Rlc3RzIEZpbGVNYXBwaW5nCisKK0FsbCBtYXBwaW5ncyB3
ZXJlIGNvcnJlY3QuCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9maWxlLW1h
cHBpbmcuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9maWxlLW1hcHBpbmcuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5lYWM2MTczNTY3NTZjNDRlMjRjYWU3YzJiMjcxZjYyZWUzOTc5MzUxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2ZpbGUtbWFwcGluZy5odG1sCkBAIC0w
LDAgKzEsNjIgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vaHR0cC90ZXN0cy9p
bnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK2Z1bmN0aW9u
IHRlc3QoKQoreworICAgIGZ1bmN0aW9uIE1vY2tGaWxlU3lzdGVtTWFwcGluZygpIHt9CisgICAg
TW9ja0ZpbGVTeXN0ZW1NYXBwaW5nLnByb3RvdHlwZSA9IHsKKyAgICAgICAgdXJpRm9yUGF0aDog
ZnVuY3Rpb24ocGF0aCkgeworICAgICAgICAgICAgcmV0dXJuICJ1cmk6IiArIHBhdGg7CisgICAg
ICAgIH0KKyAgICB9OworICAgIAorICAgIGZ1bmN0aW9uIGNyZWF0ZU1vY2tNYXBwaW5nRW50cnko
dXJsUHJlZml4LCBwYXRoUHJlZml4KQorICAgIHsKKyAgICAgICAgdmFyIHJlc3VsdCA9IHt9Owor
ICAgICAgICByZXN1bHQudXJsUHJlZml4ID0gdXJsUHJlZml4OworICAgICAgICByZXN1bHQucGF0
aFByZWZpeCA9IHBhdGhQcmVmaXg7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisg
ICAgLy8gQXQgZmlyc3QgZmlsbCBmaWxlIG1hcHBpbmcgd2l0aCBlbnRyaWVzLgorICAgIHZhciBm
aWxlTWFwcGluZyA9IG5ldyBXZWJJbnNwZWN0b3IuRmlsZU1hcHBpbmcobmV3IE1vY2tGaWxlU3lz
dGVtTWFwcGluZygpKTsKKyAgICB2YXIgbWFwcGluZ0VudHJpZXMgPSBbXTsKKyAgICBtYXBwaW5n
RW50cmllcy5wdXNoKGNyZWF0ZU1vY2tNYXBwaW5nRW50cnkoImh0dHA6Ly9sb2NhbGhvc3QiLCAi
L3Zhci93d3ciKSk7CisgICAgbWFwcGluZ0VudHJpZXMucHVzaChjcmVhdGVNb2NrTWFwcGluZ0Vu
dHJ5KCJodHRwOi8vd3d3LmV4YW1wbGUuY29tIiwgIi9ob21lL2V4YW1wbGUuY29tIikpOworICAg
IGZpbGVNYXBwaW5nLnNldE1hcHBpbmdzKG1hcHBpbmdFbnRyaWVzKTsKKworICAgIC8vIFRoZW4g
Y3JlYXRlIGFub3RoZXIgZmlsZSBtYXBwaW5nIHRvIG1ha2Ugc3VyZSBpdCBpcyBjb3JyZWN0bHkg
cmVzdG9yZWQgZnJvbSB0aGUgc2V0dGluZ3MuCisgICAgZmlsZU1hcHBpbmcgPSBuZXcgV2ViSW5z
cGVjdG9yLkZpbGVNYXBwaW5nKG5ldyBNb2NrRmlsZVN5c3RlbU1hcHBpbmcoKSk7CisKKyAgICAv
LyBOb3cgdGVzdCBhbGwgRmlsZU1hcHBpbmcgbWV0aG9kcy4KKyAgICBJbnNwZWN0b3JUZXN0LmFz
c2VydFRydWUoZmlsZU1hcHBpbmcuaGFzTWFwcGluZ0ZvclVSTCgiaHR0cDovL3d3dy5leGFtcGxl
LmNvbSIpLCAiZmlsZU1hcHBpbmcuaGFzTWFwcGluZ0ZvclVSTCBmYWlsZWQuIik7CisgICAgSW5z
cGVjdG9yVGVzdC5hc3NlcnRUcnVlKGZpbGVNYXBwaW5nLmhhc01hcHBpbmdGb3JVUkwoImh0dHA6
Ly93d3cuZXhhbXBsZS5jb20vIiksICJmaWxlTWFwcGluZy5oYXNNYXBwaW5nRm9yVVJMIGZhaWxl
ZC4iKTsKKyAgICBJbnNwZWN0b3JUZXN0LmFzc2VydFRydWUoZmlsZU1hcHBpbmcuaGFzTWFwcGlu
Z0ZvclVSTCgiaHR0cDovL2xvY2FsaG9zdC9pbmRleC5odG1sIiksICJmaWxlTWFwcGluZy5oYXNN
YXBwaW5nRm9yVVJMIGZhaWxlZC4iKTsKKyAgICBJbnNwZWN0b3JUZXN0LmFzc2VydFRydWUoZmls
ZU1hcHBpbmcuaGFzTWFwcGluZ0ZvclVSTCgiaHR0cDovL2xvY2FsaG9zdC9mb28vaW5kZXguaHRt
bCIpLCAiZmlsZU1hcHBpbmcuaGFzTWFwcGluZ0ZvclVSTCBmYWlsZWQuIik7CisgICAgSW5zcGVj
dG9yVGVzdC5hc3NlcnRUcnVlKCFmaWxlTWFwcGluZy5oYXNNYXBwaW5nRm9yVVJMKCJodHRwczov
L2xvY2FsaG9zdCIpLCAiZmlsZU1hcHBpbmcuaGFzTWFwcGluZ0ZvclVSTCBmYWlsZWQuIik7Cisg
ICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRUcnVlKCFmaWxlTWFwcGluZy5oYXNNYXBwaW5nRm9yVVJM
KCJodHRwOi8vZXhhbXBsZS5jb20iKSwgImZpbGVNYXBwaW5nLmhhc01hcHBpbmdGb3JVUkwgZmFp
bGVkLiIpOworCisgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHMoZmlsZU1hcHBpbmcudXJp
Rm9yVVJMKCJodHRwOi8vd3d3LmV4YW1wbGUuY29tIiksICJ1cmk6L2hvbWUvZXhhbXBsZS5jb20i
LCAiZmlsZU1hcHBpbmcudXJpRm9yVVJMIGZhaWxlZC4iKTsKKyAgICBJbnNwZWN0b3JUZXN0LmFz
c2VydEVxdWFscyhmaWxlTWFwcGluZy51cmlGb3JVUkwoImh0dHA6Ly93d3cuZXhhbXBsZS5jb20v
IiksICJ1cmk6L2hvbWUvZXhhbXBsZS5jb20vIiwgImZpbGVNYXBwaW5nLnVyaUZvclVSTCBmYWls
ZWQuIik7CisgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHMoZmlsZU1hcHBpbmcudXJpRm9y
VVJMKCJodHRwOi8vbG9jYWxob3N0L2luZGV4Lmh0bWwiKSwgInVyaTovdmFyL3d3dy9pbmRleC5o
dG1sIiwgImZpbGVNYXBwaW5nLnVyaUZvclVSTCBmYWlsZWQuIik7CisgICAgSW5zcGVjdG9yVGVz
dC5hc3NlcnRFcXVhbHMoZmlsZU1hcHBpbmcudXJpRm9yVVJMKCJodHRwOi8vbG9jYWxob3N0L2Zv
by9pbmRleC5odG1sIiksICJ1cmk6L3Zhci93d3cvZm9vL2luZGV4Lmh0bWwiLCAiZmlsZU1hcHBp
bmcudXJpRm9yVVJMIGZhaWxlZC4iKTsKKyAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscyhm
aWxlTWFwcGluZy51cmlGb3JVUkwoImh0dHBzOi8vbG9jYWxob3N0IiksICJodHRwczovL2xvY2Fs
aG9zdCIsICJmaWxlTWFwcGluZy51cmlGb3JVUkwgZmFpbGVkLiIpOworICAgIEluc3BlY3RvclRl
c3QuYXNzZXJ0RXF1YWxzKGZpbGVNYXBwaW5nLnVyaUZvclVSTCgiaHR0cDovL2V4YW1wbGUuY29t
IiksICJodHRwOi8vZXhhbXBsZS5jb20iLCAiZmlsZU1hcHBpbmcudXJpRm9yVVJMIGZhaWxlZC4i
KTsKKworICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKGZpbGVNYXBwaW5nLnVybEZvclVS
SSgidXJpOi9ob21lL2V4YW1wbGUuY29tIiksICJodHRwOi8vd3d3LmV4YW1wbGUuY29tIiwgImZp
bGVNYXBwaW5nLnVybEZvclVSSSBmYWlsZWQuIik7CisgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRF
cXVhbHMoZmlsZU1hcHBpbmcudXJsRm9yVVJJKCJ1cmk6L2hvbWUvZXhhbXBsZS5jb20vIiksICJo
dHRwOi8vd3d3LmV4YW1wbGUuY29tLyIsICJmaWxlTWFwcGluZy51cmxGb3JVUkkgZmFpbGVkLiIp
OworICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKGZpbGVNYXBwaW5nLnVybEZvclVSSSgi
dXJpOi92YXIvd3d3L2luZGV4Lmh0bWwiKSwgImh0dHA6Ly9sb2NhbGhvc3QvaW5kZXguaHRtbCIs
ICJmaWxlTWFwcGluZy51cmxGb3JVUkkgZmFpbGVkLiIpOworICAgIEluc3BlY3RvclRlc3QuYXNz
ZXJ0RXF1YWxzKGZpbGVNYXBwaW5nLnVybEZvclVSSSgidXJpOi92YXIvd3d3L2Zvby9pbmRleC5o
dG1sIiksICJodHRwOi8vbG9jYWxob3N0L2Zvby9pbmRleC5odG1sIiwgImZpbGVNYXBwaW5nLnVy
bEZvclVSSSBmYWlsZWQuIik7CisgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHMoZmlsZU1h
cHBpbmcudXJsRm9yVVJJKCJodHRwczovL2xvY2FsaG9zdCIpLCBudWxsLCAiZmlsZU1hcHBpbmcu
dXJsRm9yVVJJIGZhaWxlZC4iKTsKKyAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscyhmaWxl
TWFwcGluZy51cmxGb3JVUkkoImh0dHA6Ly9leGFtcGxlLmNvbSIpLCBudWxsLCAiZmlsZU1hcHBp
bmcudXJsRm9yVVJJIGZhaWxlZC4iKTsKKworICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJB
bGwgbWFwcGluZ3Mgd2VyZSBjb3JyZWN0LiIpOworICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVU
ZXN0KCk7Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4K
KzxwPlRlc3RzIEZpbGVNYXBwaW5nPC9wPgorPC9ib2R5PgorPC9odG1sPgo=
</data>
<flag name="review"
          id="200919"
          type_id="1"
          status="+"
          setter="pfeldman"
    />
          </attachment>
      

    </bug>

</bugzilla>