<?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>71301</bug_id>
          
          <creation_ts>2011-11-01 10:17:46 -0700</creation_ts>
          <short_desc>Web Inspector: load source maps via front-end host.</short_desc>
          <delta_ts>2011-11-10 01:20:10 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Pavel Podivilov">podivilov</reporter>
          <assigned_to name="Pavel Podivilov">podivilov</assigned_to>
          <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>dglazkov</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>493985</commentid>
    <comment_count>0</comment_count>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2011-11-01 10:17:46 -0700</bug_when>
    <thetext>Web Inspector: load source maps via front-end host.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>493989</commentid>
    <comment_count>1</comment_count>
      <attachid>113187</attachid>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2011-11-01 10:20:46 -0700</bug_when>
    <thetext>Created attachment 113187
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>494072</commentid>
    <comment_count>2</comment_count>
      <attachid>113187</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-01 12:33:42 -0700</bug_when>
    <thetext>Comment on attachment 113187
Patch

Attachment 113187 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/10259031

New failing tests:
inspector/debugger/raw-source-code.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>494694</commentid>
    <comment_count>3</comment_count>
      <attachid>113326</attachid>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2011-11-02 10:14:03 -0700</bug_when>
    <thetext>Created attachment 113326
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495257</commentid>
    <comment_count>4</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2011-11-03 01:22:23 -0700</bug_when>
    <thetext>Could you provide more context and explain why this change is necessary?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495261</commentid>
    <comment_count>5</comment_count>
      <attachid>113326</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2011-11-03 01:29:13 -0700</bug_when>
    <thetext>Comment on attachment 113326
Patch

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

&gt; Source/WebCore/inspector/front-end/CompilerSourceMapping.js:97
&gt; +            callback(true);

The function is synchronous, why not get rid of the callback and return the value?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495340</commentid>
    <comment_count>6</comment_count>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2011-11-03 04:25:23 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; Could you provide more context and explain why this change is necessary?

Done</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495401</commentid>
    <comment_count>7</comment_count>
      <attachid>113472</attachid>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2011-11-03 06:18:17 -0700</bug_when>
    <thetext>Created attachment 113472
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495402</commentid>
    <comment_count>8</comment_count>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2011-11-03 06:18:41 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 113326 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=113326&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/inspector/front-end/CompilerSourceMapping.js:97
&gt; &gt; +            callback(true);
&gt; 
&gt; The function is synchronous, why not get rid of the callback and return the value?

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>499675</commentid>
    <comment_count>9</comment_count>
      <attachid>113472</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2011-11-09 23:29:17 -0800</bug_when>
    <thetext>Comment on attachment 113472
Patch

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

&gt; Source/WebCore/inspector/InspectorFrontendHost.cpp:262
&gt; +    m_frontendPage-&gt;mainFrame()-&gt;loader()-&gt;loadResourceSynchronously(request, DoNotAllowStoredCredentials, error, response, data);

What if load fails? We should notify user somehow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>499677</commentid>
    <comment_count>10</comment_count>
      <attachid>113472</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2011-11-09 23:30:54 -0800</bug_when>
    <thetext>Comment on attachment 113472
Patch

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

&gt; Source/WebCore/inspector/front-end/CompilerSourceMapping.js:91
&gt; +    load: function(callback)

Unused param.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>499720</commentid>
    <comment_count>11</comment_count>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2011-11-10 01:20:10 -0800</bug_when>
    <thetext>Committed r99823: &lt;http://trac.webkit.org/changeset/99823&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>113187</attachid>
            <date>2011-11-01 10:20:46 -0700</date>
            <delta_ts>2011-11-02 10:13:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-71301-20111101212044.patch</filename>
            <type>text/plain</type>
            <size>38306</size>
            <attacher name="Pavel Podivilov">podivilov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTg5NDcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA5NGIwYWYzNDFjZGY1MjE5
Y2Y5OGM4YTQ0MmQzZGU5NzNjN2I0MzQ1Li5iYmQzMzBiMjJiOGY5ZWVjNmFiZjg0ODlmZjFhY2Nl
MzcyNmM3ZGVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzQgQEAKKzIwMTEtMTEtMDEgIFBhdmVs
IFBvZGl2aWxvdiAgPHBvZGl2aWxvdkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3Bl
Y3RvcjogbG9hZCBzb3VyY2UgbWFwcyB2aWEgZnJvbnQtZW5kIGhvc3QuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MTMwMQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAg
ICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIGluc3BlY3Rvci9J
bnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRnJv
bnRlbmRIb3N0Ojpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KToKKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rv
ckZyb250ZW5kSG9zdC5pZGw6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9Db21waWxl
clNvdXJjZU1hcHBpbmcuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ2xvc3VyZUNvbXBpbGVy
U291cmNlTWFwcGluZyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ2xvc3VyZUNvbXBpbGVyU291
cmNlTWFwcGluZy5wcm90b3R5cGUubG9hZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ2xvc3Vy
ZUNvbXBpbGVyU291cmNlTWFwcGluZy5wcm90b3R5cGUubG9hZFNvdXJjZUNvZGUpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLkNsb3N1cmVDb21waWxlclNvdXJjZU1hcHBpbmcucHJvdG90eXBlLl9w
YXJzZU1hcHBpbmdQYXlsb2FkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0NvbXBp
bGVyU291cmNlTWFwcGluZ1Byb3ZpZGVyLmpzOiBSZW1vdmVkLgorICAgICAgICAqIGluc3BlY3Rv
ci9mcm9udC1lbmQvQ29udGVudFByb3ZpZGVycy5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5D
b21waWxlclNvdXJjZU1hcHBpbmdDb250ZW50UHJvdmlkZXIpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkNvbXBpbGVyU291cmNlTWFwcGluZ0NvbnRlbnRQcm92aWRlci5wcm90b3R5cGUucmVxdWVz
dENvbnRlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvUmF3U291cmNlQ29kZS5q
czoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SYXdTb3VyY2VDb2RlLnByb3RvdHlwZS5zZXRDb21w
aWxlclNvdXJjZU1hcHBpbmcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJhd1NvdXJjZUNvZGUu
cHJvdG90eXBlLl9yZXNvdXJjZUZpbmlzaGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SYXdT
b3VyY2VDb2RlLnByb3RvdHlwZS5fY3JlYXRlU291cmNlTWFwcGluZy5kaWRMb2FkU291cmNlTWFw
cGluZyk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9XZWJLaXQucXJjOgorICAgICAg
ICAqIGluc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmh0bWw6CisgICAgICAgICogaW5zcGVj
dG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuaW5zdGFs
bFNvdXJjZU1hcHBpbmdGb3JUZXN0KToKKwogMjAxMS0xMS0wMSAgWmVubyBBbGJpc3NlciAgPHpl
bm8uYWxiaXNzZXJAbm9raWEuY29tPgogCiAgICAgICAgIFtRdF0gYmFkIGNvZGVnZW4sIHBvaW50
ZXIgZGlmZiBpbiBKU0M6OkpTQ2FsbGJhY2tDb25zdHJ1Y3Rvcjo6SlNDYWxsYmFja0NvbnN0cnVj
dG9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmd5cGkKaW5kZXggNGJiNjI0NzAwMTMzMzJjN2RlZjUxOGFmODRjOGIxZWU4
NWY3YzU5Ni4uNWM0MDYxM2MyMGMyMDk1YjQwYzQ4OWE2MGMyZTE2OTMwMmJhZjBlNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZ3lwaQpAQCAtNjI2Myw3ICs2MjYzLDYgQEAKICAgICAgICAgICAgICdpbnNwZWN0b3Iv
ZnJvbnQtZW5kL0NoZWNrYm94LmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5k
L0NvbG9yLmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0NvbXBpbGVyU291
cmNlTWFwcGluZy5qcycsCi0gICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9Db21waWxl
clNvdXJjZU1hcHBpbmdQcm92aWRlci5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250
LWVuZC9Db25zb2xlTWVzc2FnZS5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVu
ZC9Db25zb2xlTW9kZWwuanMnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvQ29u
c29sZVBhbmVsLmpzJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9q
L1dlYkNvcmUudmNwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52
Y3Byb2oKaW5kZXggYmNlYTUzZTNiY2YxMjRjOWUzY2Y5NTMxMGNhNDE5NGM2MTM4NWRmZS4uODQ5
NDdjNDIxNTVmNTQwMTA2YWE3NjRjZGIzMWI0MjZhODIzYTRiNyAxMDA3NTUKLS0tIGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAgLTY4NTYxLDEwICs2ODU2MSw2IEBA
CiAJCQkJCT4KIAkJCQk8L0ZpbGU+CiAJCQkJPEZpbGUKLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxp
bnNwZWN0b3JcZnJvbnQtZW5kXENvbXBpbGVyU291cmNlTWFwcGluZ1Byb3ZpZGVyLmpzIgotCQkJ
CQk+Ci0JCQkJPC9GaWxlPgotCQkJCTxGaWxlCiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5zcGVj
dG9yXGZyb250LWVuZFxDb25zb2xlTWVzc2FnZS5qcyIKIAkJCQkJPgogCQkJCTwvRmlsZT4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3Qu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5jcHAK
aW5kZXggZDJhNzAzMzdlZmIwYzUzYWY2NDVkOGRiYzVlZjFhNGJkYmI5ZGJkMy4uOWY0OWI0ZGQz
NGYzYWI4ZWEyOTczNzA0OTEwNGNhNDVjMWY1MDVkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5jcHAKQEAgLTI1MSw2ICsyNTEsMTgg
QEAgdm9pZCBJbnNwZWN0b3JGcm9udGVuZEhvc3Q6OnNob3dDb250ZXh0TWVudShFdmVudCogZXZl
bnQsIGNvbnN0IFZlY3RvcjxDb250ZXh0TWUKIH0KICNlbmRpZgogCitTdHJpbmcgSW5zcGVjdG9y
RnJvbnRlbmRIb3N0Ojpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGNvbnN0IFN0cmluZyYgdXJs
KQoreworICAgIFJlc291cmNlUmVxdWVzdCByZXF1ZXN0KHVybCk7CisgICAgcmVxdWVzdC5zZXRI
VFRQTWV0aG9kKCJHRVQiKTsKKworICAgIFZlY3RvcjxjaGFyPiBkYXRhOworICAgIFJlc291cmNl
RXJyb3IgZXJyb3I7CisgICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZTsKKyAgICBtX2Zyb250
ZW5kUGFnZS0+bWFpbkZyYW1lKCktPmxvYWRlcigpLT5sb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5
KHJlcXVlc3QsIERvTm90QWxsb3dTdG9yZWRDcmVkZW50aWFscywgZXJyb3IsIHJlc3BvbnNlLCBk
YXRhKTsKKyAgICByZXR1cm4gU3RyaW5nKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7Cit9CisK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1IpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0
LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmgKaW5k
ZXggZGVjZmU5YTk4MDQxZGJmNTJjNWM4Njg0NGRjODY4M2Q5NWZlNTI1OC4uOTdiNTU4Y2RkZmZh
ZWM1NzYzZjAzNWJjMWM1ZmU3NTFiMGU4Mzk3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuaApAQCAtNzksNiArNzksOCBAQCBwdWJsaWM6
CiAgICAgdm9pZCBzaG93Q29udGV4dE1lbnUoRXZlbnQqLCBjb25zdCBWZWN0b3I8Q29udGV4dE1l
bnVJdGVtKj4mIGl0ZW1zKTsKICAgICB2b2lkIHNlbmRNZXNzYWdlVG9CYWNrZW5kKGNvbnN0IFN0
cmluZyYgbWVzc2FnZSk7CiAKKyAgICBTdHJpbmcgbG9hZFJlc291cmNlU3luY2hyb25vdXNseShj
b25zdCBTdHJpbmcmIHVybCk7CisKIHByaXZhdGU6CiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMp
CiAgICAgZnJpZW5kIGNsYXNzIEZyb250ZW5kTWVudVByb3ZpZGVyOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5pZGwgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmlkbAppbmRleCBjYmIwYmFj
YjQ1YTQ0YjcwNzJmOGJhNTBhZTMyODE1MTg4OWI4M2JjLi5kYjk0MzZiZDc4NzYxNWY3YTY0NWQ1
NDk5ODE3MWZkZTY4MGE4MzE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRnJvbnRlbmRIb3N0LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRnJvbnRlbmRIb3N0LmlkbApAQCAtNjAsNSArNjAsNyBAQCBtb2R1bGUgY29yZSB7
CiAgICAgICAgIFtDdXN0b21dIHZvaWQgcmVjb3JkQWN0aW9uVGFrZW4oaW4gdW5zaWduZWQgbG9u
ZyBhY3Rpb25Db2RlKTsKICAgICAgICAgW0N1c3RvbV0gdm9pZCByZWNvcmRQYW5lbFNob3duKGlu
IHVuc2lnbmVkIGxvbmcgcGFuZWxDb2RlKTsKICAgICAgICAgW0N1c3RvbV0gdm9pZCByZWNvcmRT
ZXR0aW5nQ2hhbmdlZChpbiB1bnNpZ25lZCBsb25nIHNldHRpbmdDaGFuZ2VkKTsKKyAgICAgICAg
CisgICAgICAgIERPTVN0cmluZyBsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGluIERPTVN0cmlu
ZyB1cmwpOwogICAgIH07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL0NvbXBpbGVyU291cmNlTWFwcGluZy5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvQ29tcGlsZXJTb3VyY2VNYXBwaW5nLmpzCmluZGV4IDc0Y2QxNmIyZTE1
OGQzZTg2MTc0NWMyOTYxZmZjYzdiZDBhZDM2ZjQuLjI0ODI3NjMyNTIwNDc3NGQ5YjNkNDMxNWMw
M2JhZDZkNzRkY2MzMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvQ29tcGlsZXJTb3VyY2VNYXBwaW5nLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvQ29tcGlsZXJTb3VyY2VNYXBwaW5nLmpzCkBAIC03MCw5ICs3MCw5IEBA
IFdlYkluc3BlY3Rvci5DbG9zdXJlQ29tcGlsZXJTb3VyY2VNYXBwaW5nUGF5bG9hZCA9IGZ1bmN0
aW9uKCkKICAqIGZvciBmb3JtYXQgZGVzY3JpcHRpb24uCiAgKiBAaW1wbGVtZW50cyB7V2ViSW5z
cGVjdG9yLkNvbXBpbGVyU291cmNlTWFwcGluZ30KICAqIEBjb25zdHJ1Y3RvcgotICogQHBhcmFt
IHtXZWJJbnNwZWN0b3IuQ2xvc3VyZUNvbXBpbGVyU291cmNlTWFwcGluZ1BheWxvYWR9IG1hcHBp
bmdQYXlsb2FkCisgKiBAcGFyYW0ge3N0cmluZ30gc291cmNlTWFwcGluZ1VSTAogICovCi1XZWJJ
bnNwZWN0b3IuQ2xvc3VyZUNvbXBpbGVyU291cmNlTWFwcGluZyA9IGZ1bmN0aW9uKG1hcHBpbmdQ
YXlsb2FkKQorV2ViSW5zcGVjdG9yLkNsb3N1cmVDb21waWxlclNvdXJjZU1hcHBpbmcgPSBmdW5j
dGlvbihzb3VyY2VNYXBwaW5nVVJMKQogewogICAgIGlmICghV2ViSW5zcGVjdG9yLkNsb3N1cmVD
b21waWxlclNvdXJjZU1hcHBpbmcucHJvdG90eXBlLl9iYXNlNjRNYXApIHsKICAgICAgICAgY29u
c3QgYmFzZTY0RGlnaXRzID0gIkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamts
bW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky8iOwpAQCAtODAsMTcgKzgwLDI4IEBAIFdlYkluc3Bl
Y3Rvci5DbG9zdXJlQ29tcGlsZXJTb3VyY2VNYXBwaW5nID0gZnVuY3Rpb24obWFwcGluZ1BheWxv
YWQpCiAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYmFzZTY0RGlnaXRzLmxlbmd0aDsgKytp
KQogICAgICAgICAgICAgV2ViSW5zcGVjdG9yLkNsb3N1cmVDb21waWxlclNvdXJjZU1hcHBpbmcu
cHJvdG90eXBlLl9iYXNlNjRNYXBbYmFzZTY0RGlnaXRzLmNoYXJBdChpKV0gPSBpOwogICAgIH0K
LQotICAgIHRoaXMuX3NvdXJjZXMgPSBtYXBwaW5nUGF5bG9hZC5zb3VyY2VzOwotICAgIHRoaXMu
X21hcHBpbmdzID0gW107Ci0gICAgdGhpcy5fcmV2ZXJzZU1hcHBpbmdzQnlTb3VyY2VVUkwgPSB7
fTsKLSAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuX3NvdXJjZXMubGVuZ3RoOyArK2kpCi0g
ICAgICAgIHRoaXMuX3JldmVyc2VNYXBwaW5nc0J5U291cmNlVVJMW3RoaXMuX3NvdXJjZXNbaV1d
ID0gW107Ci0gICAgdGhpcy5fcGFyc2VNYXBwaW5ncyhtYXBwaW5nUGF5bG9hZCk7CisgICAgCisg
ICAgdGhpcy5fc291cmNlTWFwcGluZ1VSTCA9IHNvdXJjZU1hcHBpbmdVUkw7CiB9CiAKIFdlYklu
c3BlY3Rvci5DbG9zdXJlQ29tcGlsZXJTb3VyY2VNYXBwaW5nLnByb3RvdHlwZSA9IHsKICAgICAv
KioKKyAgICAgKiBAcGFyYW0ge2Z1bmN0aW9uKGJvb2xlYW4pfSBjYWxsYmFjaworICAgICAqLwor
ICAgIGxvYWQ6IGZ1bmN0aW9uKGNhbGxiYWNrKQorICAgIHsgICAgICAgICAgIAorICAgICAgICB0
cnkgeworICAgICAgICAgICAgLy8gRklYTUU6IG1ha2Ugc2VuZFJlcXVlc3QgYXN5bmMuCisgICAg
ICAgICAgICB2YXIgcmVzcG9uc2UgPSBJbnNwZWN0b3JGcm9udGVuZEhvc3QubG9hZFJlc291cmNl
U3luY2hyb25vdXNseSh0aGlzLl9zb3VyY2VNYXBwaW5nVVJMKTsKKyAgICAgICAgICAgIHRoaXMu
X3BhcnNlTWFwcGluZ1BheWxvYWQoSlNPTi5wYXJzZShyZXNwb25zZSkpOworICAgICAgICAgICAg
Y2FsbGJhY2sodHJ1ZSk7CisgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAgICAgY29uc29s
ZS5lcnJvcihlLm1lc3NhZ2UpOworICAgICAgICAgICAgY2FsbGJhY2soZmFsc2UpOworICAgICAg
ICB9CisgICAgfSwKKyAgICAgICAKKyAgICAvKioKICAgICAgKiBAcGFyYW0ge251bWJlcn0gbGlu
ZU51bWJlcgogICAgICAqIEBwYXJhbSB7bnVtYmVyfSBjb2x1bW5OdW1iZXIKICAgICAgKiBAcmV0
dXJuIHtPYmplY3R9CkBAIC0xMTgsNiArMTI5LDI2IEBAIFdlYkluc3BlY3Rvci5DbG9zdXJlQ29t
cGlsZXJTb3VyY2VNYXBwaW5nLnByb3RvdHlwZSA9IHsKICAgICB7CiAgICAgICAgIHJldHVybiB0
aGlzLl9zb3VyY2VzOwogICAgIH0sCisgICAgCisgICAgLyoqCisgICAgICogQHBhcmFtIHtzdHJp
bmd9IHNvdXJjZVVSTAorICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24oc3RyaW5nKX0gY2FsbGJhY2sK
KyAgICAgKiBAcGFyYW0ge251bWJlcn0gdGltZW91dAorICAgICAqLworICAgIGxvYWRTb3VyY2VD
b2RlOiBmdW5jdGlvbihzb3VyY2VVUkwsIGNhbGxiYWNrLCB0aW1lb3V0KQorICAgIHsKKyAgICAg
ICAgdHJ5IHsKKyAgICAgICAgICAgIHZhciByb290VVJMID0gdGhpcy5fc291cmNlTWFwcGluZ1VS
TC5zdWJzdHJpbmcoMCwgdGhpcy5fc291cmNlTWFwcGluZ1VSTC5sYXN0SW5kZXhPZigiLyIpICsg
MSk7CisgICAgICAgICAgICBpZiAodGhpcy5fc291cmNlUm9vdCkKKyAgICAgICAgICAgICAgICBy
b290VVJMICs9IHRoaXMuX3NvdXJjZVJvb3QgKyAiLyI7CisgICAgICAgICAgICAvLyBGSVhNRTog
bWFrZSBzZW5kUmVxdWVzdCBhc3luYy4KKyAgICAgICAgICAgIHZhciByZXNwb25zZSA9IEluc3Bl
Y3RvckZyb250ZW5kSG9zdC5sb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KHJvb3RVUkwgKyBzb3Vy
Y2VVUkwpOworICAgICAgICAgICAgY2FsbGJhY2socmVzcG9uc2UpOworICAgICAgICB9IGNhdGNo
KGUpIHsKKyAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZS5tZXNzYWdlKTsKKyAgICAgICAgICAg
IGNhbGxiYWNrKCIiKTsKKyAgICAgICAgfSAgICAgICAgCisgICAgfSwgICAgCiAKICAgICBfZmlu
ZE1hcHBpbmc6IGZ1bmN0aW9uKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcikKICAgICB7CkBAIC0x
MzcsOCArMTY4LDE2IEBAIFdlYkluc3BlY3Rvci5DbG9zdXJlQ29tcGlsZXJTb3VyY2VNYXBwaW5n
LnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJuIHRoaXMuX21hcHBpbmdzW2ZpcnN0XTsKICAg
ICB9LAogCi0gICAgX3BhcnNlTWFwcGluZ3M6IGZ1bmN0aW9uKG1hcHBpbmdQYXlsb2FkKQorICAg
IF9wYXJzZU1hcHBpbmdQYXlsb2FkOiBmdW5jdGlvbihtYXBwaW5nUGF5bG9hZCkKICAgICB7Cisg
ICAgICAgIHRoaXMuX3NvdXJjZVJvb3QgPSBtYXBwaW5nUGF5bG9hZC5zb3VyY2VSb290OworICAg
ICAgICB0aGlzLl9zb3VyY2VzID0gbWFwcGluZ1BheWxvYWQuc291cmNlczsKKyAgICAgICAgCisg
ICAgICAgIHRoaXMuX21hcHBpbmdzID0gW107CisgICAgICAgIHRoaXMuX3JldmVyc2VNYXBwaW5n
c0J5U291cmNlVVJMID0ge307CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5fc291
cmNlcy5sZW5ndGg7ICsraSkKKyAgICAgICAgICAgIHRoaXMuX3JldmVyc2VNYXBwaW5nc0J5U291
cmNlVVJMW3RoaXMuX3NvdXJjZXNbaV1dID0gW107CisgICAgICAgIAogICAgICAgICB2YXIgc3Ry
aW5nQ2hhckl0ZXJhdG9yID0gbmV3IFdlYkluc3BlY3Rvci5DbG9zdXJlQ29tcGlsZXJTb3VyY2VN
YXBwaW5nLlN0cmluZ0NoYXJJdGVyYXRvcihtYXBwaW5nUGF5bG9hZC5tYXBwaW5ncyk7CiAKICAg
ICAgICAgdmFyIGxpbmVOdW1iZXIgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9Db21waWxlclNvdXJjZU1hcHBpbmdQcm92aWRlci5qcyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ29tcGlsZXJTb3VyY2VNYXBwaW5nUHJvdmlk
ZXIuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDliNzcwMDJjOWM2YmM4MWFkMzFi
OGIyMGMwYzdkZjhhMDQ3YjdiZjkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Db21waWxlclNv
dXJjZU1hcHBpbmdQcm92aWRlci5qcworKysgL2Rldi9udWxsCkBAIC0xLDEzMCArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAg
ICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAq
IGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4g
bm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05F
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0g
KiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotLyoq
Ci0gKiBAY29uc3RydWN0b3IKLSAqIEBwYXJhbSB7c3RyaW5nfSBzb3VyY2VNYXBwaW5nUGFnZVVS
TAotICovCi1XZWJJbnNwZWN0b3IuQ29tcGlsZXJTb3VyY2VNYXBwaW5nUHJvdmlkZXIgPSBmdW5j
dGlvbihzb3VyY2VNYXBwaW5nUGFnZVVSTCkKLXsKLSAgICBpZiAoIXRoaXMuX2luaXRpYWxpemVk
KSB7Ci0gICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwgdGhpcy5fb25N
ZXNzYWdlLCB0cnVlKTsKLSAgICAgICAgV2ViSW5zcGVjdG9yLkNvbXBpbGVyU291cmNlTWFwcGlu
Z1Byb3ZpZGVyLnByb3RvdHlwZS5faW5pdGlhbGl6ZWQgPSB0cnVlOwotICAgIH0KLSAgICB0aGlz
Ll9zb3VyY2VNYXBwaW5nUGFnZVVSTCA9IHNvdXJjZU1hcHBpbmdQYWdlVVJMOwotfQotCi1XZWJJ
bnNwZWN0b3IuQ29tcGlsZXJTb3VyY2VNYXBwaW5nUHJvdmlkZXIucHJvdG90eXBlID0gewotICAg
IC8qKgotICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24oV2ViSW5zcGVjdG9yLkNvbXBpbGVyU291cmNl
TWFwcGluZyl9IGNhbGxiYWNrCi0gICAgICovCi0gICAgbG9hZFNvdXJjZU1hcHBpbmc6IGZ1bmN0
aW9uKGNhbGxiYWNrKQotICAgIHsKLSAgICAgICAgdGhpcy5fZnJhbWUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJpZnJhbWUiKTsKLSAgICAgICAgdGhpcy5fZnJhbWUuc3JjID0gdGhpcy5fc291
cmNlTWFwcGluZ1BhZ2VVUkw7Ci0gICAgICAgIGZ1bmN0aW9uIGZyYW1lTG9hZGVkKCkKLSAgICAg
ICAgewotICAgICAgICAgICAgZnVuY3Rpb24gZGlkTG9hZERhdGEoZXJyb3IsIHJlc3VsdCkKLSAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBpZiAoZXJyb3IpIHsKLSAgICAgICAgICAgICAg
ICAgICAgY29uc29sZS5sb2coZXJyb3IpOwotICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhu
dWxsKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgIH0KLQot
ICAgICAgICAgICAgICAgIHZhciBwYXlsb2FkOwotICAgICAgICAgICAgICAgIHRyeSB7Ci0gICAg
ICAgICAgICAgICAgICAgIHBheWxvYWQgPSBKU09OLnBhcnNlKHJlc3VsdCk7Ci0gICAgICAgICAg
ICAgICAgfSBjYXRjaCAoZSkgewotICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygiRmFp
bGVkIHRvIHBhcnNlIEpTT04uIik7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAg
ICAgaWYgKHBheWxvYWQpCi0gICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKG5ldyBXZWJJbnNw
ZWN0b3IuQ2xvc3VyZUNvbXBpbGVyU291cmNlTWFwcGluZyhwYXlsb2FkKSk7Ci0gICAgICAgICAg
ICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhudWxsKTsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIHRoaXMuX3NlbmRSZXF1ZXN0KCJsb2FkU291cmNlTWFwIiwgW10s
IGRpZExvYWREYXRhKTsKLSAgICAgICAgfQotICAgICAgICB0aGlzLl9mcmFtZS5hZGRFdmVudExp
c3RlbmVyKCJsb2FkIiwgZnJhbWVMb2FkZWQuYmluZCh0aGlzKSwgdHJ1ZSk7Ci0gICAgICAgIC8v
IEZJWE1FOiByZW1vdmUgaWZyYW1lIGZyb20gdGhlIGRvY3VtZW50IHdoZW4gaXQgaXMgbm90IG5l
ZWRlZCBhbnltb3JlLgotICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHRoaXMuX2Zy
YW1lKTsKLSAgICB9LAotCi0gICAgLyoqCi0gICAgICogQHBhcmFtIHtzdHJpbmd9IHNvdXJjZVVS
TAotICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24oc3RyaW5nKX0gY2FsbGJhY2sKLSAgICAgKiBAcGFy
YW0ge251bWJlcn0gdGltZW91dAotICAgICAqLwotICAgIGxvYWRTb3VyY2VDb2RlOiBmdW5jdGlv
bihzb3VyY2VVUkwsIGNhbGxiYWNrLCB0aW1lb3V0KQotICAgIHsKLSAgICAgICAgZnVuY3Rpb24g
ZGlkU2VuZFJlcXVlc3QoZXJyb3IsIHJlc3VsdCkKLSAgICAgICAgewotICAgICAgICAgICAgaWYg
KGVycm9yKSB7Ci0gICAgICAgICAgICAgICAgY29uc29sZS5sb2coZXJyb3IpOwotICAgICAgICAg
ICAgICAgIGNhbGxiYWNrKCIiKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgICAgICBjYWxsYmFjayhyZXN1bHQpOwotICAgICAgICB9Ci0gICAgICAgIHRo
aXMuX3NlbmRSZXF1ZXN0KCJsb2FkU291cmNlQ29kZSIsIFtzb3VyY2VVUkxdLCBkaWRTZW5kUmVx
dWVzdCwgdGltZW91dCk7Ci0gICAgfSwKLQotICAgIF9zZW5kUmVxdWVzdDogZnVuY3Rpb24obWV0
aG9kLCBwYXJhbWV0ZXJzLCBjYWxsYmFjaywgdGltZW91dCkKLSAgICB7Ci0gICAgICAgIHZhciBy
ZXF1ZXN0SWQgPSB0aGlzLl9yZXF1ZXN0SWQrKzsKLSAgICAgICAgdmFyIHRpbWVySWQgPSBzZXRU
aW1lb3V0KHRoaXMuX2NhbmNlbFJlcXVlc3QuYmluZCh0aGlzLCByZXF1ZXN0SWQpLCB0aW1lb3V0
IHx8IDUwMDApOwotICAgICAgICB0aGlzLl9yZXF1ZXN0c1tyZXF1ZXN0SWRdID0geyBjYWxsYmFj
azogY2FsbGJhY2ssIHRpbWVySWQ6IHRpbWVySWQgfTsKLSAgICAgICAgdmFyIHJlcXVlc3REYXRh
ID0geyBpZDogcmVxdWVzdElkLCBtZXRob2Q6IG1ldGhvZCwgcGFyYW1zOiBwYXJhbWV0ZXJzIH07
Ci0gICAgICAgIHRoaXMuX2ZyYW1lLmNvbnRlbnRXaW5kb3cucG9zdE1lc3NhZ2UocmVxdWVzdERh
dGEsIHRoaXMuX3NvdXJjZU1hcHBpbmdQYWdlVVJMKTsKLSAgICB9LAotCi0gICAgX29uTWVzc2Fn
ZTogZnVuY3Rpb24oZXZlbnQpCi0gICAgewotICAgICAgICB2YXIgcmVxdWVzdElkID0gZXZlbnQu
ZGF0YS5pZDsKLSAgICAgICAgdmFyIHJlcXVlc3RzID0gV2ViSW5zcGVjdG9yLkNvbXBpbGVyU291
cmNlTWFwcGluZ1Byb3ZpZGVyLnByb3RvdHlwZS5fcmVxdWVzdHM7Ci0gICAgICAgIHZhciByZXF1
ZXN0ID0gcmVxdWVzdHNbcmVxdWVzdElkXTsKLSAgICAgICAgaWYgKCFyZXF1ZXN0KQotICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICBkZWxldGUgcmVxdWVzdHNbcmVxdWVzdElkXTsKLSAgICAg
ICAgY2xlYXJUaW1lb3V0KHJlcXVlc3QudGltZXJJZCk7Ci0gICAgICAgIHJlcXVlc3QuY2FsbGJh
Y2soZXZlbnQuZGF0YS5lcnJvciwgZXZlbnQuZGF0YS5yZXN1bHQpOwotICAgIH0sCi0KLSAgICBf
Y2FuY2VsUmVxdWVzdDogZnVuY3Rpb24ocmVxdWVzdElkKQotICAgIHsKLSAgICAgICAgdmFyIHJl
cXVlc3QgPSB0aGlzLl9yZXF1ZXN0c1tyZXF1ZXN0SWRdOwotICAgICAgICBkZWxldGUgdGhpcy5f
cmVxdWVzdHNbcmVxdWVzdElkXTsKLSAgICAgICAgcmVxdWVzdC5jYWxsYmFjaygiUmVxdWVzdCB0
aW1lZCBvdXQuIiwgbnVsbCk7Ci0gICAgfSwKLQotICAgIF9yZXF1ZXN0SWQ6IDAsCi0gICAgX3Jl
cXVlc3RzOiB7fQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9Db250ZW50UHJvdmlkZXJzLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9Db250ZW50UHJvdmlkZXJzLmpzCmluZGV4IDAxMWI5MDM0ODM5YzkwNTUyYjdjNTJmNzMx
YmFjMTQ2OTc3ZjIwN2EuLjA2NTlmMTMzNzJmNjUwOGY4ZDU0YTljM2Q1NmNlMTdhNmMxNDM2YmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ29udGVudFBy
b3ZpZGVycy5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NvbnRl
bnRQcm92aWRlcnMuanMKQEAgLTI0MywxMSArMjQzLDExIEBAIFdlYkluc3BlY3Rvci5SZXNvdXJj
ZUNvbnRlbnRQcm92aWRlci5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLkNvbnRl
bnRQCiAgKiBAY29uc3RydWN0b3IKICAqIEBpbXBsZW1lbnRzIHtXZWJJbnNwZWN0b3IuQ29udGVu
dFByb3ZpZGVyfQogICovCi1XZWJJbnNwZWN0b3IuQ29tcGlsZXJTb3VyY2VNYXBwaW5nQ29udGVu
dFByb3ZpZGVyID0gZnVuY3Rpb24oc291cmNlVVJMLCBjb21waWxlclNvdXJjZU1hcHBpbmdQcm92
aWRlcikKK1dlYkluc3BlY3Rvci5Db21waWxlclNvdXJjZU1hcHBpbmdDb250ZW50UHJvdmlkZXIg
PSBmdW5jdGlvbihzb3VyY2VVUkwsIGNvbXBpbGVyU291cmNlTWFwcGluZykKIHsKICAgICB0aGlz
Ll9taW1lVHlwZSA9ICJ0ZXh0L2phdmFzY3JpcHQiOwogICAgIHRoaXMuX3NvdXJjZVVSTCA9IHNv
dXJjZVVSTDsKLSAgICB0aGlzLl9jb21waWxlclNvdXJjZU1hcHBpbmdQcm92aWRlciA9IGNvbXBp
bGVyU291cmNlTWFwcGluZ1Byb3ZpZGVyOworICAgIHRoaXMuX2NvbXBpbGVyU291cmNlTWFwcGlu
ZyA9IGNvbXBpbGVyU291cmNlTWFwcGluZzsKIH07CiAKIFdlYkluc3BlY3Rvci5Db21waWxlclNv
dXJjZU1hcHBpbmdDb250ZW50UHJvdmlkZXIucHJvdG90eXBlID0gewpAQCAtMjYwLDcgKzI2MCw3
IEBAIFdlYkluc3BlY3Rvci5Db21waWxlclNvdXJjZU1hcHBpbmdDb250ZW50UHJvdmlkZXIucHJv
dG90eXBlID0gewogICAgICAgICB7CiAgICAgICAgICAgICBjYWxsYmFjayh0aGlzLl9taW1lVHlw
ZSwgc291cmNlQ29kZSk7CiAgICAgICAgIH0KLSAgICAgICAgdGhpcy5fY29tcGlsZXJTb3VyY2VN
YXBwaW5nUHJvdmlkZXIubG9hZFNvdXJjZUNvZGUodGhpcy5fc291cmNlVVJMLCBkaWRMb2FkU291
cmNlQ29kZS5iaW5kKHRoaXMpKTsKKyAgICAgICAgdGhpcy5fY29tcGlsZXJTb3VyY2VNYXBwaW5n
LmxvYWRTb3VyY2VDb2RlKHRoaXMuX3NvdXJjZVVSTCwgZGlkTG9hZFNvdXJjZUNvZGUuYmluZCh0
aGlzKSk7CiAgICAgfSwKIAogICAgIC8qKgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9SYXdTb3VyY2VDb2RlLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9SYXdTb3VyY2VDb2RlLmpzCmluZGV4IGU5MWQ5YTk2OGU5ZGFiM2E2Nzhm
MDBmNzNjNjU0N2I5MzFlZDZiNzIuLmVmMWViOTU2ZmFkZDdlNTMwNGMyZDg0YWFlMzdhYzllZjAw
YWVhZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmF3
U291cmNlQ29kZS5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jh
d1NvdXJjZUNvZGUuanMKQEAgLTk1LDE3ICs5NSwxNyBAQCBXZWJJbnNwZWN0b3IuUmF3U291cmNl
Q29kZS5wcm90b3R5cGUgPSB7CiAgICAgLyoqCiAgICAgICogQHBhcmFtIHtudW1iZXJ9IHByb3Zp
ZGVyIFNob3VsZCBhc3NpZ24gcHJvcGVyIHR5cGUgdXBvbiBmaXJzdCB1c2UKICAgICAgKi8KLSAg
ICBzZXRDb21waWxlclNvdXJjZU1hcHBpbmdQcm92aWRlcjogZnVuY3Rpb24ocHJvdmlkZXIpCisg
ICAgc2V0Q29tcGlsZXJTb3VyY2VNYXBwaW5nOiBmdW5jdGlvbihjb21waWxlclNvdXJjZU1hcHBp
bmcpCiAgICAgewotICAgICAgICBpZiAocHJvdmlkZXIpCisgICAgICAgIGlmIChjb21waWxlclNv
dXJjZU1hcHBpbmcpCiAgICAgICAgICAgICB0aGlzLl91c2VUZW1wb3JhcnlDb250ZW50ID0gZmFs
c2U7Ci0gICAgICAgIHRoaXMuX2NvbXBpbGVyU291cmNlTWFwcGluZ1Byb3ZpZGVyID0gcHJvdmlk
ZXI7CisgICAgICAgIHRoaXMuX2NvbXBpbGVyU291cmNlTWFwcGluZyA9IGNvbXBpbGVyU291cmNl
TWFwcGluZzsKICAgICAgICAgdGhpcy5fdXBkYXRlU291cmNlTWFwcGluZygpOwogICAgIH0sCiAK
ICAgICBfcmVzb3VyY2VGaW5pc2hlZDogZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAgaWYgKHRo
aXMuX2NvbXBpbGVyU291cmNlTWFwcGluZ1Byb3ZpZGVyKQorICAgICAgICBpZiAodGhpcy5fY29t
cGlsZXJTb3VyY2VNYXBwaW5nKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB0aGlzLl91
c2VUZW1wb3JhcnlDb250ZW50ID0gZmFsc2U7CiAgICAgICAgIHRoaXMuX3VwZGF0ZVNvdXJjZU1h
cHBpbmcoKTsKQEAgLTE4MiwzMCArMTgyLDMwIEBAIFdlYkluc3BlY3Rvci5SYXdTb3VyY2VDb2Rl
LnByb3RvdHlwZSA9IHsKICAgICAgKi8KICAgICBfY3JlYXRlU291cmNlTWFwcGluZzogZnVuY3Rp
b24oY2FsbGJhY2spCiAgICAgewotICAgICAgICBpZiAodGhpcy5fY29tcGlsZXJTb3VyY2VNYXBw
aW5nUHJvdmlkZXIpIHsKKyAgICAgICAgaWYgKHRoaXMuX2NvbXBpbGVyU291cmNlTWFwcGluZykg
ewogICAgICAgICAgICAgLyoqCiAgICAgICAgICAgICAgKiBAdGhpcyB7V2ViSW5zcGVjdG9yLlJh
d1NvdXJjZUNvZGV9Ci0gICAgICAgICAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5Db21waWxl
clNvdXJjZU1hcHBpbmd9IGNvbXBpbGVyU291cmNlTWFwcGluZworICAgICAgICAgICAgICogQHBh
cmFtIHtib29sZWFufSBzdWNjZXNzCiAgICAgICAgICAgICAgKi8KLSAgICAgICAgICAgIGZ1bmN0
aW9uIGRpZExvYWRTb3VyY2VNYXBwaW5nKGNvbXBpbGVyU291cmNlTWFwcGluZykKKyAgICAgICAg
ICAgIGZ1bmN0aW9uIGRpZExvYWRTb3VyY2VNYXBwaW5nKHN1Y2Nlc3MpCiAgICAgICAgICAgICB7
Ci0gICAgICAgICAgICAgICAgaWYgKCFjb21waWxlclNvdXJjZU1hcHBpbmcpIHsKLSAgICAgICAg
ICAgICAgICAgICAgZGVsZXRlIHRoaXMuX2NvbXBpbGVyU291cmNlTWFwcGluZ1Byb3ZpZGVyOwor
ICAgICAgICAgICAgICAgIGlmICghc3VjY2VzcykgeworICAgICAgICAgICAgICAgICAgICBkZWxl
dGUgdGhpcy5fY29tcGlsZXJTb3VyY2VNYXBwaW5nOwogICAgICAgICAgICAgICAgICAgICBjYWxs
YmFjayhudWxsKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgICB2YXIgdWlTb3VyY2VDb2RlTGlzdCA9IFtdOwotICAgICAgICAg
ICAgICAgIHZhciBzb3VyY2VVUkxzID0gY29tcGlsZXJTb3VyY2VNYXBwaW5nLnNvdXJjZXMoKTsK
KyAgICAgICAgICAgICAgICB2YXIgc291cmNlVVJMcyA9IHRoaXMuX2NvbXBpbGVyU291cmNlTWFw
cGluZy5zb3VyY2VzKCk7CiAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzb3Vy
Y2VVUkxzLmxlbmd0aDsgKytpKSB7CiAgICAgICAgICAgICAgICAgICAgIHZhciBzb3VyY2VVUkwg
PSBzb3VyY2VVUkxzW2ldOwotICAgICAgICAgICAgICAgICAgICB2YXIgY29udGVudFByb3ZpZGVy
ID0gbmV3IFdlYkluc3BlY3Rvci5Db21waWxlclNvdXJjZU1hcHBpbmdDb250ZW50UHJvdmlkZXIo
c291cmNlVVJMLCB0aGlzLl9jb21waWxlclNvdXJjZU1hcHBpbmdQcm92aWRlcik7CisgICAgICAg
ICAgICAgICAgICAgIHZhciBjb250ZW50UHJvdmlkZXIgPSBuZXcgV2ViSW5zcGVjdG9yLkNvbXBp
bGVyU291cmNlTWFwcGluZ0NvbnRlbnRQcm92aWRlcihzb3VyY2VVUkwsIHRoaXMuX2NvbXBpbGVy
U291cmNlTWFwcGluZyk7CiAgICAgICAgICAgICAgICAgICAgIHZhciB1aVNvdXJjZUNvZGUgPSBu
ZXcgV2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZShzb3VyY2VVUkwsIHNvdXJjZVVSTCwgdGhpcy5p
c0NvbnRlbnRTY3JpcHQsIHRoaXMsIGNvbnRlbnRQcm92aWRlcik7CiAgICAgICAgICAgICAgICAg
ICAgIHVpU291cmNlQ29kZUxpc3QucHVzaCh1aVNvdXJjZUNvZGUpOwogICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgICAgICB2YXIgc291cmNlTWFwcGluZyA9IG5ldyBXZWJJbnNwZWN0b3Iu
UmF3U291cmNlQ29kZS5Db21waWxlclNvdXJjZU1hcHBpbmcodGhpcywgdWlTb3VyY2VDb2RlTGlz
dCwgY29tcGlsZXJTb3VyY2VNYXBwaW5nKTsKKyAgICAgICAgICAgICAgICB2YXIgc291cmNlTWFw
cGluZyA9IG5ldyBXZWJJbnNwZWN0b3IuUmF3U291cmNlQ29kZS5Db21waWxlclNvdXJjZU1hcHBp
bmcodGhpcywgdWlTb3VyY2VDb2RlTGlzdCwgdGhpcy5fY29tcGlsZXJTb3VyY2VNYXBwaW5nKTsK
ICAgICAgICAgICAgICAgICBjYWxsYmFjayhzb3VyY2VNYXBwaW5nKTsKICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIHRoaXMuX2NvbXBpbGVyU291cmNlTWFwcGluZ1Byb3ZpZGVyLmxvYWRTb3Vy
Y2VNYXBwaW5nKGRpZExvYWRTb3VyY2VNYXBwaW5nLmJpbmQodGhpcykpOworICAgICAgICAgICAg
dGhpcy5fY29tcGlsZXJTb3VyY2VNYXBwaW5nLmxvYWQoZGlkTG9hZFNvdXJjZU1hcHBpbmcuYmlu
ZCh0aGlzKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9XZWJLaXQucXJjIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9XZWJLaXQucXJjCmluZGV4IGI1ZmE5NWEwMTkzMjk0
MWE2MTdhMTRhOTM0Zjg2YjJiMTc5Nzk4NmUuLjNkMGQ5YzQ2NjFkZmE1ODNiMmE5NzA2ODMwZjg5
Y2U0MGY2NmIzMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvV2ViS2l0LnFyYworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1dl
YktpdC5xcmMKQEAgLTE3LDcgKzE3LDYgQEAKICAgICA8ZmlsZT5DaGVja2JveC5qczwvZmlsZT4K
ICAgICA8ZmlsZT5Db2xvci5qczwvZmlsZT4KICAgICA8ZmlsZT5Db21waWxlclNvdXJjZU1hcHBp
bmcuanM8L2ZpbGU+Ci0gICAgPGZpbGU+Q29tcGlsZXJTb3VyY2VNYXBwaW5nUHJvdmlkZXIuanM8
L2ZpbGU+CiAgICAgPGZpbGU+Q29uc29sZU1lc3NhZ2UuanM8L2ZpbGU+CiAgICAgPGZpbGU+Q29u
c29sZU1vZGVsLmpzPC9maWxlPgogICAgIDxmaWxlPkNvbnNvbGVQYW5lbC5qczwvZmlsZT4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmh0
bWwgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5odG1sCmlu
ZGV4IDJhNzY0OTMwNWY2OTNiYWQyYzUwYjc3YTM2NzNjZGVjZDRhNzc3ZWUuLmJjNjAxN2NhMzhj
ZTBkZTI5YTkwMDcxMGNiY2MwYWRkZmZmZTQzNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmh0bWwKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuaHRtbApAQCAtMTY0LDcgKzE2NCw2IEBAIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iQ29udGVudFBy
b3ZpZGVycy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQi
IHNyYz0iUmF3U291cmNlQ29kZS5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0
L2phdmFzY3JpcHQiIHNyYz0iQ29tcGlsZXJTb3VyY2VNYXBwaW5nLmpzIj48L3NjcmlwdD4KLSAg
ICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJDb21waWxlclNvdXJjZU1hcHBp
bmdQcm92aWRlci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3Jp
cHQiIHNyYz0iU2NyaXB0c1NlYXJjaFNjb3BlLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5
cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJET01BZ2VudC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNj
cmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iVGltZWxpbmVBZ2VudC5qcyI+PC9zY3Jp
cHQ+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3Bl
Y3Rvci5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpz
CmluZGV4IDc2MzlhZmQ3ZmMwM2ZkNTQxNzMzNWE3YjE3YjUxMmZmMTJhMmY2ZjQuLjhkM2Q4Mzc0
MDgwNjY4MGMyYzdhYjhiZTAwYzBiODFjOTYzYWU0ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzCkBAIC04NzMsNyArODczLDcgQEAgV2Vi
SW5zcGVjdG9yLl90b29sYmFySXRlbUNsaWNrZWQgPSBmdW5jdGlvbihldmVudCkKIFdlYkluc3Bl
Y3Rvci5pbnN0YWxsU291cmNlTWFwcGluZ0ZvclRlc3QgPSBmdW5jdGlvbih1cmwpCiB7CiAgICAg
Ly8gRklYTUU6IHJlbW92ZSB0aGlzIG1ldGhvZCB3aGVuIGl0J3MgcG9zc2libGUgdG8gc2V0IGNv
bXBpbGVyIHNvdXJjZSBtYXBwaW5ncyB2aWEgVUkuCi0gICAgdmFyIHByb3ZpZGVyID0gbmV3IFdl
Ykluc3BlY3Rvci5Db21waWxlclNvdXJjZU1hcHBpbmdQcm92aWRlcih1cmwpOworICAgIHZhciBz
b3VyY2VNYXBwaW5nID0gbmV3IFdlYkluc3BlY3Rvci5DbG9zdXJlQ29tcGlsZXJTb3VyY2VNYXBw
aW5nKHVybCk7CiAgICAgdmFyIHVpU291cmNlQ29kZSA9IFdlYkluc3BlY3Rvci5wYW5lbHMuc2Ny
aXB0cy52aXNpYmxlVmlldy5fZGVsZWdhdGUuX3VpU291cmNlQ29kZTsKLSAgICB1aVNvdXJjZUNv
ZGUucmF3U291cmNlQ29kZS5zZXRDb21waWxlclNvdXJjZU1hcHBpbmdQcm92aWRlcihwcm92aWRl
cik7CisgICAgdWlTb3VyY2VDb2RlLnJhd1NvdXJjZUNvZGUuc2V0Q29tcGlsZXJTb3VyY2VNYXBw
aW5nKHNvdXJjZU1hcHBpbmcpOwogfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDdjMzc4NWRkOTM4YTA4NzY5YWY1YTQ0ZGQz
ZWZiNmE5ZmNiM2Y2Y2YuLjAwOGU5ODlhYjE5ODM1YzBlYjIxZThiMWU3OWUyMjc4MGI0MjA4YjEg
MTAwNzU1Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAxMS0xMS0wMSAgUGF2ZWwgUG9kaXZpbG92ICA8cG9k
aXZpbG92QGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBsb2FkIHNvdXJj
ZSBtYXBzIHZpYSBmcm9udC1lbmQgaG9zdC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTcxMzAxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9jb21waWxlci1zb3VyY2Ut
bWFwcGluZy1wcm92aWRlci1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogaHR0cC90
ZXN0cy9pbnNwZWN0b3IvY29tcGlsZXItc291cmNlLW1hcHBpbmctcHJvdmlkZXIuaHRtbDogUmVt
b3ZlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZXMvY29tcGlsZXIt
c291cmNlLW1hcHBpbmctcHJvdmlkZXIvYXBwLW1hcC5odG1sOiBSZW1vdmVkLgorICAgICAgICAq
IGh0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlcy9zb3VyY2UtbWFwLmpzb246IFJlbmFtZWQg
ZnJvbSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZXMvY29tcGlsZXIt
c291cmNlLW1hcHBpbmctcHJvdmlkZXIvYXBwLW1hcC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2lu
c3BlY3Rvci9yZXNvdXJjZXMvc291cmNlMS5qczogUmVuYW1lZCBmcm9tIExheW91dFRlc3RzL2h0
dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlcy9jb21waWxlci1zb3VyY2UtbWFwcGluZy1wcm92
aWRlci9hcHAuanMuCisgICAgICAgICh3aW5kb3cub25sb2FkKToKKyAgICAgICAgKGhhbmRsZUNs
aWNrKToKKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZXMvc291cmNlMi5q
czogUmVuYW1lZCBmcm9tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNl
cy9jb21waWxlci1zb3VyY2UtbWFwcGluZy1wcm92aWRlci9mb28uanMuCisgICAgICAgIChDbGlj
a0hhbmRsZXIpOgorICAgICAgICAoQ2xpY2tIYW5kbGVyLnByb3RvdHlwZS5oYW5kbGUpOgorICAg
ICAgICAqIGluc3BlY3Rvci9kZWJ1Z2dlci9jb21waWxlci1zb3VyY2UtbWFwcGluZy5odG1sOiBS
ZW1vdmVkLgorCiAyMDExLTExLTAxICBQYXZlbCBGZWxkbWFuICA8cGZlbGRtYW5AZ29vZ2xlLmNv
bT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBpbnRyb2R1Y2UgUGFuZWxDb250YWluZXIgY2xh
c3MsIHN0YXJ0IG1vdmluZyBwYW5lbCBtYW5hZ2VtZW50IGZyb20gaW5zcGVjdG9yLmpzIHRvIHRo
ZSBuZXcgY2xhc3MuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rv
ci9jb21waWxlci1zb3VyY2UtbWFwcGluZy1wcm92aWRlci1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9jb21waWxlci1zb3VyY2UtbWFwcGluZy1wcm92aWRl
ci1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZiNDcxNjhiNTM3
OGY2MDE3NzIzMDI0MzBlODhhMGM1OWY2YzhhNTguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvY29t
cGlsZXItc291cmNlLW1hcHBpbmctcHJvdmlkZXItZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwK
QEAgLTEsOCArMCwwIEBACi1UZXN0cyBDb21waWxlclNvdXJjZU1hcHBpbmdQcm92aWRlciBjbGFz
cy4KLQotCi1SdW5uaW5nOiB0ZXN0TG9hZAotCi1SdW5uaW5nOiB0ZXN0VGltZW91dAotbG9nOiBS
ZXF1ZXN0IHRpbWVkIG91dC4KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9p
bnNwZWN0b3IvY29tcGlsZXItc291cmNlLW1hcHBpbmctcHJvdmlkZXIuaHRtbCBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2NvbXBpbGVyLXNvdXJjZS1tYXBwaW5nLXByb3ZpZGVy
Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk0ODY5ODVlYzNjY2ZjMjlhYTRj
MzZlMTM3YmYzMzk2NjVhYTliMzcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvY29tcGlsZXItc291
cmNlLW1hcHBpbmctcHJvdmlkZXIuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDU4ICswLDAgQEAK
LTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0
PgotCi08c2NyaXB0PgotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICBJbnNwZWN0b3JUZXN0LnJ1
blRlc3RTdWl0ZShbCi0gICAgICAgIGZ1bmN0aW9uIHRlc3RMb2FkKG5leHQpCi0gICAgICAgIHsK
LSAgICAgICAgICAgIHZhciBwcm92aWRlciA9IG5ldyBXZWJJbnNwZWN0b3IuQ29tcGlsZXJTb3Vy
Y2VNYXBwaW5nUHJvdmlkZXIoImh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9pbnNwZWN0b3IvcmVzb3Vy
Y2VzL2NvbXBpbGVyLXNvdXJjZS1tYXBwaW5nLXByb3ZpZGVyL2FwcC1tYXAuaHRtbD9zb3VyY2VN
YXA9YXBwLW1hcCIpOwotICAgICAgICAgICAgdmFyIHNvdXJjZU1hcHBpbmc7Ci0gICAgICAgICAg
ICBwcm92aWRlci5sb2FkU291cmNlTWFwcGluZyhkaWRMb2FkU291cmNlTWFwcGluZyk7Ci0gICAg
ICAgICAgICBmdW5jdGlvbiBkaWRMb2FkU291cmNlTWFwcGluZyhzb3VyY2VNYXBwaW5nQXJnKQot
ICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHNvdXJjZU1hcHBpbmcgPSBzb3VyY2VNYXBw
aW5nQXJnOwotICAgICAgICAgICAgICAgIHZhciBzb3VyY2VzID0gc291cmNlTWFwcGluZy5zb3Vy
Y2VzKCk7Ci0gICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHMoMiwgc291
cmNlcy5sZW5ndGgpOwotICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxz
KCJhcHAuanMiLCBzb3VyY2VzWzBdKTsKLSAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFz
c2VydEVxdWFscygiZm9vLmpzIiwgc291cmNlc1sxXSk7Ci0gICAgICAgICAgICAgICAgcHJvdmlk
ZXIubG9hZFNvdXJjZUNvZGUoc291cmNlTWFwcGluZy5zb3VyY2VzKClbMF0sIGRpZExvYWRTb3Vy
Y2VDb2RlKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgZnVuY3Rpb24gZGlkTG9hZFNv
dXJjZUNvZGUoY29udGVudCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LmFzc2VydEVxdWFscygwLCBjb250ZW50LmluZGV4T2YoIndpbmRvdy5vbmxvYWQgPSBm
dW5jdGlvbigpIikpOwotICAgICAgICAgICAgICAgIHByb3ZpZGVyLmxvYWRTb3VyY2VDb2RlKHNv
dXJjZU1hcHBpbmcuc291cmNlcygpWzFdLCBkaWRMb2FkU291cmNlQ29kZTIpOwotICAgICAgICAg
ICAgfQotCi0gICAgICAgICAgICBmdW5jdGlvbiBkaWRMb2FkU291cmNlQ29kZTIoY29udGVudCkK
LSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFs
cygwLCBjb250ZW50LmluZGV4T2YoImZ1bmN0aW9uIENsaWNrSGFuZGxlcigpIikpOwotICAgICAg
ICAgICAgICAgIG5leHQoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSwKLQotICAgICAgICBm
dW5jdGlvbiB0ZXN0VGltZW91dChuZXh0KQotICAgICAgICB7Ci0gICAgICAgICAgICB2YXIgcHJv
dmlkZXIgPSBuZXcgV2ViSW5zcGVjdG9yLkNvbXBpbGVyU291cmNlTWFwcGluZ1Byb3ZpZGVyKCJo
dHRwOi8vbG9jYWxob3N0OjgwMDAvZG9lcy1ub3QtZXhpc3QiKTsKLSAgICAgICAgICAgIHByb3Zp
ZGVyLmxvYWRTb3VyY2VNYXBwaW5nKGRpZExvYWRTb3VyY2VNYXBwaW5nKTsKLSAgICAgICAgICAg
IGZ1bmN0aW9uIGRpZExvYWRTb3VyY2VNYXBwaW5nKHNvdXJjZU1hcHBpbmcpCi0gICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHMobnVsbCwgc291
cmNlTWFwcGluZyk7Ci0gICAgICAgICAgICAgICAgbmV4dCgpOwotICAgICAgICAgICAgfQotICAg
ICAgICB9Ci0gICAgXSk7Ci19OwotCi08L3NjcmlwdD4KLQotPC9oZWFkPgotCi08Ym9keSBvbmxv
YWQ9InJ1blRlc3QoKSI+Ci08cD5UZXN0cyBDb21waWxlclNvdXJjZU1hcHBpbmdQcm92aWRlciBj
bGFzcy48L3A+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZXMvY29tcGlsZXItc291cmNlLW1hcHBpbmctcHJvdmlk
ZXIvYXBwLW1hcCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlcy9j
b21waWxlci1zb3VyY2UtbWFwcGluZy1wcm92aWRlci9hcHAtbWFwCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwODI5YjBiY2M3YWI2NzNiYjUwNTFmOGZmMzU4ZjllZjFhYTY3ODVkLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlcy9jb21waWxlci1zb3VyY2UtbWFwcGluZy1w
cm92aWRlci9hcHAtbWFwCisrKyAvZGV2L251bGwKQEAgLTEsOCArMCwwIEBACi17Ci0idmVyc2lv
biI6MywKLSJmaWxlIjoiLi9hcHAtbWFwIiwKLSJsaW5lQ291bnQiOjIsCi0ibWFwcGluZ3MiOiJB
QUNBQSxNQUFBQyxPQUFBLENBQXdCQyxRQUFBLEVBQ3hCLENBQ0ksSUFBSUMsRUFBTUMsUUFBQUMs
Y0FBc0IsQ0FBQyxLQUFELENBQ2hDRixFQUFBRyxZQUFBLENBQWtCLEtBQ2xCSCxFQUFBSSxpQkFB
b0IsQ0FBQyxPQUFELENBQVVDLFdBQVYsQ0FBdUIsQ0FBQSxDQUF2QixDQUNwQkosU0FBQUssS0FB
QUMsWUFBeUIsQ0FBQ1AsQ0FBRCxDQUVyQlEsRUFBQUEsQ0FBTVAsUUFBQUMsY0FBc0IsQ0FBQyxL
QUFELENBQ2hDTSxFQUFBTCxZQUFBLENBQWtCLG9jQUNsQkY7UUFBQUssS0FBQUMsWUFBeUIsQ0FB
Q0MsQ0FBRCxDQVI3QixDQVdTSCxTQUFBQSxZQUFXLENBQUNJLENBQUQsQ0FDcEIsQ0FFSUMsQ0FE
OEJDLElBQVpDLFlBQ2xCRixRQUFjLENBQUNELENBQUQsQ0FGbEIsQ0NiU0csUUFBQUEsYUFBWSxF
QUNyQixFQUdBQSxZQUFBQyxVQUFBSCxPQUFBLENBQXdDSSxRQUFBLENBQUNMLENBQUQsQ0FDeEMs
Q0FDSSxJQUFJTSxFQUFVZCxRQUFBQyxjQUFzQixDQUFDLEtBQUQsQ0FDcENhLEVBQUFaLFlBQUEs
Q0FBc0JNLENBQUFPLFVBQ3RCZixTQUFBSyxLQUFBQyxZQUF5QixDQUFDUSxDQUFELENBSDdCOyIs
Ci0ic291cmNlcyI6WyJhcHAuanMiLCJmb28uanMiXSwKLSJuYW1lcyI6WyJ3aW5kb3ciLCJvbmxv
YWQiLCJ3aW5kb3cub25sb2FkIiwiZm9vIiwiZG9jdW1lbnQiLCJjcmVhdGVFbGVtZW50IiwidGV4
dENvbnRlbnQiLCJhZGRFdmVudExpc3RlbmVyIiwiaGFuZGxlQ2xpY2siLCJib2R5IiwiYXBwZW5k
Q2hpbGQiLCJiYXIiLCJldmVudCIsImhhbmRsZSIsImhhbmRsZXIiLCJDbGlja0hhbmRsZXIiLCJw
cm90b3R5cGUiLCJDbGlja0hhbmRsZXIucHJvdG90eXBlLmhhbmRsZSIsImVsZW1lbnQiLCJ0aW1l
U3RhbXAiXQotfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3Iv
cmVzb3VyY2VzL2NvbXBpbGVyLXNvdXJjZS1tYXBwaW5nLXByb3ZpZGVyL2FwcC1tYXAuaHRtbCBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlcy9jb21waWxlci1zb3Vy
Y2UtbWFwcGluZy1wcm92aWRlci9hcHAtbWFwLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDNiOGRkYmRkNjQ4ZGFjNGEzYWYzYmJjYTU5YmE1NDEyMGJiNmQ4OTQuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL2NvbXBpbGVyLXNvdXJjZS1tYXBwaW5nLXByb3ZpZGVy
L2FwcC1tYXAuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDQ0ICswLDAgQEAKLTxzY3JpcHQ+Ci13
aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIGhhbmRsZU1lc3NhZ2UsIGZhbHNlKTsK
LQotZnVuY3Rpb24gaGFuZGxlTWVzc2FnZShldmVudCkKLXsKLSAgICB2YXIgcmVxdWVzdElkID0g
ZXZlbnQuZGF0YS5pZDsKLSAgICB2YXIgbWV0aG9kID0gZXZlbnQuZGF0YS5tZXRob2Q7Ci0gICAg
aWYgKG1ldGhvZCA9PT0gImxvYWRTb3VyY2VNYXAiKSB7Ci0gICAgICAgIHZhciBxdWVyeVBhcmFt
ZXRlcnMgPSBwYXJzZVF1ZXJ5U3RyaW5nKHdpbmRvdy5sb2NhdGlvbi50b1N0cmluZygpKTsKLSAg
ICAgICAgc2VuZFJlcXVlc3QoZXZlbnQsIHF1ZXJ5UGFyYW1ldGVycy5zb3VyY2VNYXApOwotICAg
IH0gZWxzZSBpZiAobWV0aG9kID09PSAibG9hZFNvdXJjZUNvZGUiKSB7Ci0gICAgICAgIHZhciBz
b3VyY2VDb2RlVVJMID0gZXZlbnQuZGF0YS5wYXJhbXNbMF07Ci0gICAgICAgIHNlbmRSZXF1ZXN0
KGV2ZW50LCBzb3VyY2VDb2RlVVJMKTsKLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIHNlbmRSZXF1ZXN0
KGV2ZW50LCB1cmwpCi17Ci0gICAgdmFyIHJlcXVlc3QgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsK
LSAgICByZXF1ZXN0Lm9wZW4oIkdFVCIsIHVybCwgdHJ1ZSk7Ci0gICAgcmVxdWVzdC5vbnJlYWR5
c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbigpCi0gICAgewotICAgICAgICBpZiAocmVxdWVzdC5yZWFk
eVN0YXRlICE9PSA0KQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBpZiAocmVxdWVzdC5z
dGF0dXMgPT09IDIwMCkKLSAgICAgICAgICAgIGV2ZW50LnNvdXJjZS5wb3N0TWVzc2FnZSh7IGlk
OiBldmVudC5kYXRhLmlkLCByZXN1bHQ6IHJlcXVlc3QucmVzcG9uc2VUZXh0IH0sIGV2ZW50Lm9y
aWdpbik7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGV2ZW50LnNvdXJjZS5wb3N0TWVzc2Fn
ZSh7IGlkOiBldmVudC5kYXRhLmlkLCBlcnJvcjogcmVxdWVzdC5zdGF0dXNUZXh0IH0sIGV2ZW50
Lm9yaWdpbik7Ci0gICAgfQotICAgIHJlcXVlc3Quc2VuZCgpOwotfQotCi1mdW5jdGlvbiBwYXJz
ZVF1ZXJ5U3RyaW5nKHVybCkKLXsKLSAgICB2YXIgcXVlcnkgPSB1cmwuc3BsaXQoIj8iKVsxXTsK
LSAgICB2YXIgcGFyYW1ldGVycyA9IHF1ZXJ5LnNwbGl0KCImIik7Ci0gICAgdmFyIHJlc3VsdCA9
IHt9OwotICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcGFyYW1ldGVycy5sZW5ndGg7ICsraSkgewot
ICAgICAgICB2YXIgcGFyYW1ldGVyID0gcGFyYW1ldGVyc1tpXS5zcGxpdCgiPSIpOwotICAgICAg
ICByZXN1bHRbcGFyYW1ldGVyWzBdXSA9IHBhcmFtZXRlclsxXTsKLSAgICB9Ci0gICAgcmV0dXJu
IHJlc3VsdDsKLX0KLTwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9pbnNwZWN0b3IvcmVzb3VyY2VzL2NvbXBpbGVyLXNvdXJjZS1tYXBwaW5nLXByb3ZpZGVyL2Fw
cC5qcyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlcy9jb21waWxl
ci1zb3VyY2UtbWFwcGluZy1wcm92aWRlci9hcHAuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDZlYzM1ODg2YzA2ZTBjMjU5ZDg3YzQ2YWQxZWYzNGJlMDY1ZmUxOGIuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL2NvbXBpbGVyLXNvdXJjZS1tYXBwaW5nLXByb3ZpZGVy
L2FwcC5qcworKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLXdpbmRvdy5vbmxvYWQgPSBm
dW5jdGlvbigpCi17Ci0gICAgdmFyIGZvbyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2Rpdicp
OwotICAgIGZvby50ZXh0Q29udGVudCA9ICdmb28nOwotICAgIGZvby5hZGRFdmVudExpc3RlbmVy
KCdjbGljaycsIGhhbmRsZUNsaWNrLCB0cnVlKTsKLSAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENo
aWxkKGZvbyk7Ci0KLSAgICB2YXIgYmFyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7
Ci0gICAgYmFyLnRleHRDb250ZW50ID0gJ2JhcnJycnJycnJycnJycnJycnJycnJycnJycnJycnJy
cnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJy
cnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJy
cnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJy
cnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJy
cnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJy
cnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJy
cnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJy
cnJycnJycnJycnJycnJycnJycic7Ci0gICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChiYXIp
OwotfQotCi1mdW5jdGlvbiBoYW5kbGVDbGljayhldmVudCkKLXsKLSAgICB2YXIgaGFuZGxlciA9
IG5ldyBDbGlja0hhbmRsZXIoKTsKLSAgICBoYW5kbGVyLmhhbmRsZShldmVudCk7Ci19CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZXMvY29tcGls
ZXItc291cmNlLW1hcHBpbmctcHJvdmlkZXIvZm9vLmpzIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9pbnNwZWN0b3IvcmVzb3VyY2VzL2NvbXBpbGVyLXNvdXJjZS1tYXBwaW5nLXByb3ZpZGVyL2Zv
by5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmNlNzhhNmZmZDc2YmJjZDg3ZGI2
MDJiZmNiOTAwNzljNDIzODgyNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZXMvY29t
cGlsZXItc291cmNlLW1hcHBpbmctcHJvdmlkZXIvZm9vLmpzCisrKyAvZGV2L251bGwKQEAgLTEs
MTAgKzAsMCBAQAotZnVuY3Rpb24gQ2xpY2tIYW5kbGVyKCkKLXsKLX0KLQotQ2xpY2tIYW5kbGVy
LnByb3RvdHlwZS5oYW5kbGUgPSBmdW5jdGlvbihldmVudCkKLXsKLSAgICB2YXIgZWxlbWVudCA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwotICAgIGVsZW1lbnQudGV4dENvbnRlbnQg
PSBldmVudC50aW1lU3RhbXA7Ci0gICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChlbGVtZW50
KTsKLX0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291
cmNlcy9zb3VyY2UtbWFwLmpzb24gYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9y
ZXNvdXJjZXMvc291cmNlLW1hcC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUzNTI3NjM0NzM2YjkwNTQ3MjUw
OTY3ZDBmMTQ4ZmIxMzU3ZGM1MmYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZXMvc291cmNlLW1hcC5qc29uCkBAIC0wLDAgKzEsNyBA
QAoreworInZlcnNpb24iOjMsCisibGluZUNvdW50IjoyLAorIm1hcHBpbmdzIjoiQUFDQUEsTUFB
QUMsT0FBQSxDQUF3QkMsUUFBQSxFQUN4QixDQUNJLElBQUlDLEVBQU1DLFFBQUFDLGNBQXNCLENB
QUMsS0FBRCxDQUNoQ0YsRUFBQUcsWUFBQSxDQUFrQixLQUNsQkgsRUFBQUksaUJBQW9CLENBQUMs
T0FBRCxDQUFVQyxXQUFWLENBQXVCLENBQUEsQ0FBdkIsQ0FDcEJKLFNBQUFLLEtBQUFDLFlBQXlC
LENBQUNQLENBQUQsQ0FFckJRLEVBQUFBLENBQU1QLFFBQUFDLGNBQXNCLENBQUMsS0FBRCxDQUNo
Q00sRUFBQUwsWUFBQSxDQUFrQixvY0FDbEJGO1FBQUFLLEtBQUFDLFlBQXlCLENBQUNDLENBQUQs
Q0FSN0IsQ0FXU0gsU0FBQUEsWUFBVyxDQUFDSSxDQUFELENBQ3BCLENBRUlDLENBRDhCQyxJQUFa
QyxZQUNsQkYsUUFBYyxDQUFDRCxDQUFELENBRmxCLENDYlNHLFFBQUFBLGFBQVksRUFDckIsRUFH
QUEsWUFBQUMsVUFBQUgsT0FBQSxDQUF3Q0ksUUFBQSxDQUFDTCxDQUFELENBQ3hDLENBQ0ksSUFB
SU0sRUFBVWQsUUFBQUMsY0FBc0IsQ0FBQyxLQUFELENBQ3BDYSxFQUFBWixZQUFBLENBQXNCTSxD
QUFBTyxVQUN0QmYsU0FBQUssS0FBQUMsWUFBeUIsQ0FBQ1EsQ0FBRCxDQUg3QjsiLAorInNvdXJj
ZXMiOlsic291cmNlMS5qcyIsInNvdXJjZTIuanMiXSwKKyJuYW1lcyI6WyJ3aW5kb3ciLCJvbmxv
YWQiLCJ3aW5kb3cub25sb2FkIiwiZm9vIiwiZG9jdW1lbnQiLCJjcmVhdGVFbGVtZW50IiwidGV4
dENvbnRlbnQiLCJhZGRFdmVudExpc3RlbmVyIiwiaGFuZGxlQ2xpY2siLCJib2R5IiwiYXBwZW5k
Q2hpbGQiLCJiYXIiLCJldmVudCIsImhhbmRsZSIsImhhbmRsZXIiLCJDbGlja0hhbmRsZXIiLCJw
cm90b3R5cGUiLCJDbGlja0hhbmRsZXIucHJvdG90eXBlLmhhbmRsZSIsImVsZW1lbnQiLCJ0aW1l
U3RhbXAiXQorfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3Iv
cmVzb3VyY2VzL3NvdXJjZTEuanMgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9y
ZXNvdXJjZXMvc291cmNlMS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZWMzNTg4NmMwNmUwYzI1OWQ4N2M0NmFk
MWVmMzRiZTA2NWZlMThiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9pbnNwZWN0b3IvcmVzb3VyY2VzL3NvdXJjZTEuanMKQEAgLTAsMCArMSwxNyBAQAord2luZG93
Lm9ubG9hZCA9IGZ1bmN0aW9uKCkKK3sKKyAgICB2YXIgZm9vID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgnZGl2Jyk7CisgICAgZm9vLnRleHRDb250ZW50ID0gJ2Zvbyc7CisgICAgZm9vLmFkZEV2
ZW50TGlzdGVuZXIoJ2NsaWNrJywgaGFuZGxlQ2xpY2ssIHRydWUpOworICAgIGRvY3VtZW50LmJv
ZHkuYXBwZW5kQ2hpbGQoZm9vKTsKKworICAgIHZhciBiYXIgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCdkaXYnKTsKKyAgICBiYXIudGV4dENvbnRlbnQgPSAnYmFycnJycnJycnJycnJycnJycnJy
cnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJy
cnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJy
cnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJy
cnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJy
cnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJy
cnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJy
cnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJy
cnJycnJycnJycnJycnJycnJycnJycnJycnJycnJyJzsKKyAgICBkb2N1bWVudC5ib2R5LmFwcGVu
ZENoaWxkKGJhcik7Cit9CisKK2Z1bmN0aW9uIGhhbmRsZUNsaWNrKGV2ZW50KQoreworICAgIHZh
ciBoYW5kbGVyID0gbmV3IENsaWNrSGFuZGxlcigpOworICAgIGhhbmRsZXIuaGFuZGxlKGV2ZW50
KTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291
cmNlcy9zb3VyY2UyLmpzIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3Vy
Y2VzL3NvdXJjZTIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmNlNzhhNmZmZDc2YmJjZDg3ZGI2MDJiZmNiOTAw
NzljNDIzODgyNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5z
cGVjdG9yL3Jlc291cmNlcy9zb3VyY2UyLmpzCkBAIC0wLDAgKzEsMTAgQEAKK2Z1bmN0aW9uIENs
aWNrSGFuZGxlcigpCit7Cit9CisKK0NsaWNrSGFuZGxlci5wcm90b3R5cGUuaGFuZGxlID0gZnVu
Y3Rpb24oZXZlbnQpCit7CisgICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCdkaXYnKTsKKyAgICBlbGVtZW50LnRleHRDb250ZW50ID0gZXZlbnQudGltZVN0YW1wOworICAg
IGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZWxlbWVudCk7Cit9CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvY29tcGlsZXItc291cmNlLW1hcHBpbmcuaHRtbCBi
L0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9jb21waWxlci1zb3VyY2UtbWFwcGluZy5o
dG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MDc3N2U0MThjZGE4NThiNTdiYThi
OGVhNThhYmE2OWFjMjk1MjUwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9jb21waWxlci1zb3VyY2Ut
bWFwcGluZy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsOTkgKzAsMCBAQAotPGh0bWw+Ci08aGVh
ZD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbnNwZWN0b3ItdGVz
dC5qcyI+PC9zY3JpcHQ+Ci0KLTxzY3JpcHQ+Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewotICAgIGZ1
bmN0aW9uIGNoZWNrTWFwcGluZyhjb21waWxlZExpbmVOdW1iZXIsIGNvbXBpbGVkQ29sdW1uTnVt
YmVyLCBzb3VyY2VVUkwsIHNvdXJjZUxpbmVOdW1iZXIsIHNvdXJjZUNvbHVtbk51bWJlciwgbWFw
cGluZykKLSAgICB7Ci0gICAgICAgIHZhciBzb3VyY2VMb2NhdGlvbiA9IG1hcHBpbmcuY29tcGls
ZWRMb2NhdGlvblRvU291cmNlTG9jYXRpb24oY29tcGlsZWRMaW5lTnVtYmVyLCBjb21waWxlZENv
bHVtbk51bWJlcik7Ci0gICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKHNvdXJjZVVS
TCwgc291cmNlTG9jYXRpb24uc291cmNlVVJMKTsKLSAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3Nl
cnRFcXVhbHMoc291cmNlTGluZU51bWJlciwgc291cmNlTG9jYXRpb24ubGluZU51bWJlcik7Ci0g
ICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKHNvdXJjZUNvbHVtbk51bWJlciwgc291
cmNlTG9jYXRpb24uY29sdW1uTnVtYmVyKTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBjaGVja1Jl
dmVyc2VNYXBwaW5nKGNvbXBpbGVkTGluZU51bWJlciwgY29tcGlsZWRDb2x1bW5OdW1iZXIsIHNv
dXJjZVVSTCwgc291cmNlTGluZU51bWJlciwgbWFwcGluZykKLSAgICB7Ci0gICAgICAgIHZhciBj
b21waWxlZExvY2F0aW9uID0gbWFwcGluZy5zb3VyY2VMb2NhdGlvblRvQ29tcGlsZWRMb2NhdGlv
bihzb3VyY2VVUkwsIHNvdXJjZUxpbmVOdW1iZXIpOwotICAgICAgICBJbnNwZWN0b3JUZXN0LmFz
c2VydEVxdWFscyhjb21waWxlZExpbmVOdW1iZXIsIGNvbXBpbGVkTG9jYXRpb24ubGluZU51bWJl
cik7Ci0gICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKGNvbXBpbGVkQ29sdW1uTnVt
YmVyLCBjb21waWxlZExvY2F0aW9uLmNvbHVtbk51bWJlcik7Ci0gICAgfQotCi0gICAgSW5zcGVj
dG9yVGVzdC5ydW5UZXN0U3VpdGUoWwotICAgICAgICBmdW5jdGlvbiB0ZXN0U2ltcGxlTWFwcGlu
ZyhuZXh0KQotICAgICAgICB7Ci0gICAgICAgICAgICAvKgotICAgICAgICAgICAgICAgIGV4YW1w
bGUuanM6Ci0gICAgICAgICAgICAgICAgMCAgICAgICAgIDEgICAgICAgICAyICAgICAgICAgMwot
ICAgICAgICAgICAgICAgIDAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NQotICAg
ICAgICAgICAgICAgIGZ1bmN0aW9uIGFkZCh2YXJpYWJsZV94LCB2YXJpYWJsZV95KQotICAgICAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZhcmlhYmxlX3ggKyB2YXJp
YWJsZV95OwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIHZhciBnbG9iYWwg
PSAiZm9vIjsKLSAgICAgICAgICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCi0gICAgICAgICAgICAgICAgZXhhbXBsZS1jb21waWxlZC5qczoKLSAgICAgICAg
ICAgICAgICAwICAgICAgICAgMSAgICAgICAgIDIgICAgICAgICAzCi0gICAgICAgICAgICAgICAg
MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Ci0gICAgICAgICAgICAgICAgZnVu
Y3Rpb24gYWRkKGEsYil7cmV0dXJuIGErYn12YXIgZ2xvYmFsPSJmb28iOwotICAgICAgICAgICAg
Ki8KLSAgICAgICAgICAgIHZhciBtYXBwaW5nUGF5bG9hZCA9IHsKLSAgICAgICAgICAgICAgICAi
bWFwcGluZ3MiOiJBQUFTQSxRQUFBQSxJQUFHLENBQUNDLENBQUQsQ0FBYUMsQ0FBYixDQUNaLENB
Q0ksTUFBT0QsRUFBUCxDQUFvQkMsQ0FEeEIsQ0FJQSxJQUFJQyxPQUFTOyIsCi0gICAgICAgICAg
ICAgICAgInNvdXJjZXMiOlsiZXhhbXBsZS5qcyJdCi0gICAgICAgICAgICB9OwotICAgICAgICAg
ICAgdmFyIG1hcHBpbmcgPSBuZXcgV2ViSW5zcGVjdG9yLkNsb3N1cmVDb21waWxlclNvdXJjZU1h
cHBpbmcobWFwcGluZ1BheWxvYWQpOwotCi0gICAgICAgICAgICBjaGVja01hcHBpbmcoMCwgOSwg
ImV4YW1wbGUuanMiLCAwLCA5LCBtYXBwaW5nKTsKLSAgICAgICAgICAgIGNoZWNrTWFwcGluZygw
LCAxMywgImV4YW1wbGUuanMiLCAwLCAxMywgbWFwcGluZyk7Ci0gICAgICAgICAgICBjaGVja01h
cHBpbmcoMCwgMTUsICJleGFtcGxlLmpzIiwgMCwgMjUsIG1hcHBpbmcpOwotICAgICAgICAgICAg
Y2hlY2tNYXBwaW5nKDAsIDE4LCAiZXhhbXBsZS5qcyIsIDIsIDQsIG1hcHBpbmcpOwotICAgICAg
ICAgICAgY2hlY2tNYXBwaW5nKDAsIDI1LCAiZXhhbXBsZS5qcyIsIDIsIDExLCBtYXBwaW5nKTsK
LSAgICAgICAgICAgIGNoZWNrTWFwcGluZygwLCAyNywgImV4YW1wbGUuanMiLCAyLCAyNCwgbWFw
cGluZyk7Ci0KLSAgICAgICAgICAgIGNoZWNrUmV2ZXJzZU1hcHBpbmcoMCwgMCwgImV4YW1wbGUu
anMiLCAwLCBtYXBwaW5nKTsKLSAgICAgICAgICAgIGNoZWNrUmV2ZXJzZU1hcHBpbmcoMCwgMTcs
ICJleGFtcGxlLmpzIiwgMSwgbWFwcGluZyk7Ci0gICAgICAgICAgICBjaGVja1JldmVyc2VNYXBw
aW5nKDAsIDE4LCAiZXhhbXBsZS5qcyIsIDIsIG1hcHBpbmcpOwotICAgICAgICAgICAgY2hlY2tS
ZXZlcnNlTWFwcGluZygwLCAyOSwgImV4YW1wbGUuanMiLCA0LCBtYXBwaW5nKTsKLSAgICAgICAg
ICAgIGNoZWNrUmV2ZXJzZU1hcHBpbmcoMCwgMjksICJleGFtcGxlLmpzIiwgNSwgbWFwcGluZyk7
Ci0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydFRydWUoIW1hcHBpbmcuc291cmNlTG9j
YXRpb25Ub0NvbXBpbGVkTG9jYXRpb24oImV4YW1wbGUuanMiLCA2KSk7Ci0KLSAgICAgICAgICAg
IG5leHQoKTsKLSAgICAgICAgfSwKLQotICAgICAgICBmdW5jdGlvbiB0ZXN0Tm9NYXBwaW5nRW50
cnkobmV4dCkKLSAgICAgICAgewotICAgICAgICAgICAgdmFyIG1hcHBpbmdQYXlsb2FkID0gewot
ICAgICAgICAgICAgICAgICJtYXBwaW5ncyI6IkFBQUEsQyxDQUFFOyIsCi0gICAgICAgICAgICAg
ICAgInNvdXJjZXMiOlsiZXhhbXBsZS5qcyJdCi0gICAgICAgICAgICB9OwotICAgICAgICAgICAg
dmFyIG1hcHBpbmcgPSBuZXcgV2ViSW5zcGVjdG9yLkNsb3N1cmVDb21waWxlclNvdXJjZU1hcHBp
bmcobWFwcGluZ1BheWxvYWQpOwotICAgICAgICAgICAgY2hlY2tNYXBwaW5nKDAsIDAsICJleGFt
cGxlLmpzIiwgMCwgMCwgbWFwcGluZyk7Ci0gICAgICAgICAgICBjaGVja01hcHBpbmcoMCwgMiwg
ImV4YW1wbGUuanMiLCAwLCAyLCBtYXBwaW5nKTsKLSAgICAgICAgICAgIG5leHQoKTsKLSAgICAg
ICAgfSwKLQotICAgICAgICBmdW5jdGlvbiB0ZXN0RW1wdHlMaW5lKG5leHQpCi0gICAgICAgIHsK
LSAgICAgICAgICAgIHZhciBtYXBwaW5nUGF5bG9hZCA9IHsKLSAgICAgICAgICAgICAgICAibWFw
cGluZ3MiOiJBQUFBOzs7Q0FDQSIsCi0gICAgICAgICAgICAgICAgInNvdXJjZXMiOlsiZXhhbXBs
ZS5qcyJdCi0gICAgICAgICAgICB9OwotICAgICAgICAgICAgdmFyIG1hcHBpbmcgPSBuZXcgV2Vi
SW5zcGVjdG9yLkNsb3N1cmVDb21waWxlclNvdXJjZU1hcHBpbmcobWFwcGluZ1BheWxvYWQpOwot
ICAgICAgICAgICAgY2hlY2tNYXBwaW5nKDAsIDAsICJleGFtcGxlLmpzIiwgMCwgMCwgbWFwcGlu
Zyk7Ci0gICAgICAgICAgICBjaGVja1JldmVyc2VNYXBwaW5nKDMsIDEsICJleGFtcGxlLmpzIiwg
MSwgbWFwcGluZyk7Ci0gICAgICAgICAgICBuZXh0KCk7Ci0gICAgICAgIH0KLSAgICBdKTsKLX07
Ci0KLTwvc2NyaXB0PgotCi08L2hlYWQ+Ci0KLTxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KLTxw
PlRlc3RzIENsb3N1cmVDb21waWxlclNvdXJjZU1hcHBpbmcuPC9wPgotPC9ib2R5PgotPC9odG1s
Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>113326</attachid>
            <date>2011-11-02 10:14:03 -0700</date>
            <delta_ts>2011-11-03 06:18:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-71301-20111102211401.patch</filename>
            <type>text/plain</type>
            <size>42593</size>
            <attacher name="Pavel Podivilov">podivilov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTkwNzUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBmZjNiNDZkMmNjYmE4Njhi
ZWQ4NzQ2OGU0NGM3MmMxYjI5N2U2MTVkLi4yYmRiODdiYzBjMzJhNzI1NmQwOTk5Y2JhYWU2ZDE0
MjZjZThkZmVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzQgQEAKKzIwMTEtMTEtMDEgIFBhdmVs
IFBvZGl2aWxvdiAgPHBvZGl2aWxvdkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3Bl
Y3RvcjogbG9hZCBzb3VyY2UgbWFwcyB2aWEgZnJvbnQtZW5kIGhvc3QuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MTMwMQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAg
ICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIGluc3BlY3Rvci9J
bnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRnJv
bnRlbmRIb3N0Ojpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KToKKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rv
ckZyb250ZW5kSG9zdC5pZGw6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9Db21waWxl
clNvdXJjZU1hcHBpbmcuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ2xvc3VyZUNvbXBpbGVy
U291cmNlTWFwcGluZyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ2xvc3VyZUNvbXBpbGVyU291
cmNlTWFwcGluZy5wcm90b3R5cGUubG9hZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ2xvc3Vy
ZUNvbXBpbGVyU291cmNlTWFwcGluZy5wcm90b3R5cGUubG9hZFNvdXJjZUNvZGUpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLkNsb3N1cmVDb21waWxlclNvdXJjZU1hcHBpbmcucHJvdG90eXBlLl9w
YXJzZU1hcHBpbmdQYXlsb2FkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0NvbXBp
bGVyU291cmNlTWFwcGluZ1Byb3ZpZGVyLmpzOiBSZW1vdmVkLgorICAgICAgICAqIGluc3BlY3Rv
ci9mcm9udC1lbmQvQ29udGVudFByb3ZpZGVycy5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5D
b21waWxlclNvdXJjZU1hcHBpbmdDb250ZW50UHJvdmlkZXIpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkNvbXBpbGVyU291cmNlTWFwcGluZ0NvbnRlbnRQcm92aWRlci5wcm90b3R5cGUucmVxdWVz
dENvbnRlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvUmF3U291cmNlQ29kZS5q
czoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SYXdTb3VyY2VDb2RlLnByb3RvdHlwZS5zZXRDb21w
aWxlclNvdXJjZU1hcHBpbmcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJhd1NvdXJjZUNvZGUu
cHJvdG90eXBlLl9yZXNvdXJjZUZpbmlzaGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SYXdT
b3VyY2VDb2RlLnByb3RvdHlwZS5fY3JlYXRlU291cmNlTWFwcGluZy5kaWRMb2FkU291cmNlTWFw
cGluZyk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9XZWJLaXQucXJjOgorICAgICAg
ICAqIGluc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmh0bWw6CisgICAgICAgICogaW5zcGVj
dG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuaW5zdGFs
bFNvdXJjZU1hcHBpbmdGb3JUZXN0KToKKwogMjAxMS0xMS0wMiAgUnlvc3VrZSBOaXdhICA8cm5p
d2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBSRUdSRVNTSU9OKHI5Njg3MCk6IFdlYktpdCBnZW5l
cmF0ZXMgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQgb24gYmxvZ2dlci5jb20KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lw
aQppbmRleCA0YmI2MjQ3MDAxMzMzMmM3ZGVmNTE4YWY4NGM4YjFlZTg1ZjdjNTk2Li41YzQwNjEz
YzIwYzIwOTViNDBjNDg5YTYwYzJlMTY5MzAyYmFmMGU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC02
MjYzLDcgKzYyNjMsNiBAQAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvQ2hlY2ti
b3guanMnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvQ29sb3IuanMnLAogICAg
ICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvQ29tcGlsZXJTb3VyY2VNYXBwaW5nLmpzJywK
LSAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0NvbXBpbGVyU291cmNlTWFwcGluZ1By
b3ZpZGVyLmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0NvbnNvbGVNZXNz
YWdlLmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0NvbnNvbGVNb2RlbC5q
cycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9Db25zb2xlUGFuZWwuanMnLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2og
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCBiY2Vh
NTNlM2JjZjEyNGM5ZTNjZjk1MzEwY2E0MTk0YzYxMzg1ZGZlLi44NDk0N2M0MjE1NWY1NDAxMDZh
YTc2NGNkYjMxYjQyNmE4MjNhNGI3IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJv
ai9XZWJDb3JlLnZjcHJvagpAQCAtNjg1NjEsMTAgKzY4NTYxLDYgQEAKIAkJCQkJPgogCQkJCTwv
RmlsZT4KIAkJCQk8RmlsZQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3Rvclxmcm9udC1l
bmRcQ29tcGlsZXJTb3VyY2VNYXBwaW5nUHJvdmlkZXIuanMiCi0JCQkJCT4KLQkJCQk8L0ZpbGU+
Ci0JCQkJPEZpbGUKIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcZnJvbnQtZW5kXENv
bnNvbGVNZXNzYWdlLmpzIgogCQkJCQk+CiAJCQkJPC9GaWxlPgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcAppbmRleCBkMmE3MDMzN2Vm
YjBjNTNhZjY0NWQ4ZGJjNWVmMWE0YmRiYjlkYmQzLi45ZjQ5YjRkZDM0ZjNhYjhlYTI5NzM3MDQ5
MTA0Y2E0NWMxZjUwNWQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yRnJvbnRlbmRIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yRnJvbnRlbmRIb3N0LmNwcApAQCAtMjUxLDYgKzI1MSwxOCBAQCB2b2lkIEluc3BlY3Rv
ckZyb250ZW5kSG9zdDo6c2hvd0NvbnRleHRNZW51KEV2ZW50KiBldmVudCwgY29uc3QgVmVjdG9y
PENvbnRleHRNZQogfQogI2VuZGlmCiAKK1N0cmluZyBJbnNwZWN0b3JGcm9udGVuZEhvc3Q6Omxv
YWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoY29uc3QgU3RyaW5nJiB1cmwpCit7CisgICAgUmVzb3Vy
Y2VSZXF1ZXN0IHJlcXVlc3QodXJsKTsKKyAgICByZXF1ZXN0LnNldEhUVFBNZXRob2QoIkdFVCIp
OworCisgICAgVmVjdG9yPGNoYXI+IGRhdGE7CisgICAgUmVzb3VyY2VFcnJvciBlcnJvcjsKKyAg
ICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlOworICAgIG1fZnJvbnRlbmRQYWdlLT5tYWluRnJh
bWUoKS0+bG9hZGVyKCktPmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkocmVxdWVzdCwgRG9Ob3RB
bGxvd1N0b3JlZENyZWRlbnRpYWxzLCBlcnJvciwgcmVzcG9uc2UsIGRhdGEpOworICAgIHJldHVy
biBTdHJpbmcoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKK30KKwogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuaCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuaAppbmRleCBkZWNmZTlhOTgwNDFk
YmY1MmM1Yzg2ODQ0ZGM4NjgzZDk1ZmU1MjU4Li45N2I1NThjZGRmZmFlYzU3NjNmMDM1YmMxYzVm
ZTc1MWIwZTgzOTc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yRnJvbnRlbmRIb3N0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckZyb250ZW5kSG9zdC5oCkBAIC03OSw2ICs3OSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNob3dD
b250ZXh0TWVudShFdmVudCosIGNvbnN0IFZlY3RvcjxDb250ZXh0TWVudUl0ZW0qPiYgaXRlbXMp
OwogICAgIHZvaWQgc2VuZE1lc3NhZ2VUb0JhY2tlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsK
IAorICAgIFN0cmluZyBsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGNvbnN0IFN0cmluZyYgdXJs
KTsKKwogcHJpdmF0ZToKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKICAgICBmcmllbmQgY2xh
c3MgRnJvbnRlbmRNZW51UHJvdmlkZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuaWRsCmluZGV4IGNiYjBiYWNiNDVhNDRiNzA3MmY4YmE1
MGFlMzI4MTUxODg5YjgzYmMuLmRiOTQzNmJkNzg3NjE1ZjdhNjQ1ZDU0OTk4MTcxZmRlNjgwYTgz
MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVu
ZEhvc3QuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVu
ZEhvc3QuaWRsCkBAIC02MCw1ICs2MCw3IEBAIG1vZHVsZSBjb3JlIHsKICAgICAgICAgW0N1c3Rv
bV0gdm9pZCByZWNvcmRBY3Rpb25UYWtlbihpbiB1bnNpZ25lZCBsb25nIGFjdGlvbkNvZGUpOwog
ICAgICAgICBbQ3VzdG9tXSB2b2lkIHJlY29yZFBhbmVsU2hvd24oaW4gdW5zaWduZWQgbG9uZyBw
YW5lbENvZGUpOwogICAgICAgICBbQ3VzdG9tXSB2b2lkIHJlY29yZFNldHRpbmdDaGFuZ2VkKGlu
IHVuc2lnbmVkIGxvbmcgc2V0dGluZ0NoYW5nZWQpOworICAgICAgICAKKyAgICAgICAgRE9NU3Ry
aW5nIGxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoaW4gRE9NU3RyaW5nIHVybCk7CiAgICAgfTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ29tcGls
ZXJTb3VyY2VNYXBwaW5nLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9D
b21waWxlclNvdXJjZU1hcHBpbmcuanMKaW5kZXggNzRjZDE2YjJlMTU4ZDNlODYxNzQ1YzI5NjFm
ZmNjN2JkMGFkMzZmNC4uMjQ4Mjc2MzI1MjA0Nzc0ZDliM2Q0MzE1YzAzYmFkNmQ3NGRjYzMzMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Db21waWxlclNv
dXJjZU1hcHBpbmcuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9D
b21waWxlclNvdXJjZU1hcHBpbmcuanMKQEAgLTcwLDkgKzcwLDkgQEAgV2ViSW5zcGVjdG9yLkNs
b3N1cmVDb21waWxlclNvdXJjZU1hcHBpbmdQYXlsb2FkID0gZnVuY3Rpb24oKQogICogZm9yIGZv
cm1hdCBkZXNjcmlwdGlvbi4KICAqIEBpbXBsZW1lbnRzIHtXZWJJbnNwZWN0b3IuQ29tcGlsZXJT
b3VyY2VNYXBwaW5nfQogICogQGNvbnN0cnVjdG9yCi0gKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5D
bG9zdXJlQ29tcGlsZXJTb3VyY2VNYXBwaW5nUGF5bG9hZH0gbWFwcGluZ1BheWxvYWQKKyAqIEBw
YXJhbSB7c3RyaW5nfSBzb3VyY2VNYXBwaW5nVVJMCiAgKi8KLVdlYkluc3BlY3Rvci5DbG9zdXJl
Q29tcGlsZXJTb3VyY2VNYXBwaW5nID0gZnVuY3Rpb24obWFwcGluZ1BheWxvYWQpCitXZWJJbnNw
ZWN0b3IuQ2xvc3VyZUNvbXBpbGVyU291cmNlTWFwcGluZyA9IGZ1bmN0aW9uKHNvdXJjZU1hcHBp
bmdVUkwpCiB7CiAgICAgaWYgKCFXZWJJbnNwZWN0b3IuQ2xvc3VyZUNvbXBpbGVyU291cmNlTWFw
cGluZy5wcm90b3R5cGUuX2Jhc2U2NE1hcCkgewogICAgICAgICBjb25zdCBiYXNlNjREaWdpdHMg
PSAiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAx
MjM0NTY3ODkrLyI7CkBAIC04MCwxNyArODAsMjggQEAgV2ViSW5zcGVjdG9yLkNsb3N1cmVDb21w
aWxlclNvdXJjZU1hcHBpbmcgPSBmdW5jdGlvbihtYXBwaW5nUGF5bG9hZCkKICAgICAgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCBiYXNlNjREaWdpdHMubGVuZ3RoOyArK2kpCiAgICAgICAgICAgICBX
ZWJJbnNwZWN0b3IuQ2xvc3VyZUNvbXBpbGVyU291cmNlTWFwcGluZy5wcm90b3R5cGUuX2Jhc2U2
NE1hcFtiYXNlNjREaWdpdHMuY2hhckF0KGkpXSA9IGk7CiAgICAgfQotCi0gICAgdGhpcy5fc291
cmNlcyA9IG1hcHBpbmdQYXlsb2FkLnNvdXJjZXM7Ci0gICAgdGhpcy5fbWFwcGluZ3MgPSBbXTsK
LSAgICB0aGlzLl9yZXZlcnNlTWFwcGluZ3NCeVNvdXJjZVVSTCA9IHt9OwotICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgdGhpcy5fc291cmNlcy5sZW5ndGg7ICsraSkKLSAgICAgICAgdGhpcy5fcmV2
ZXJzZU1hcHBpbmdzQnlTb3VyY2VVUkxbdGhpcy5fc291cmNlc1tpXV0gPSBbXTsKLSAgICB0aGlz
Ll9wYXJzZU1hcHBpbmdzKG1hcHBpbmdQYXlsb2FkKTsKKyAgICAKKyAgICB0aGlzLl9zb3VyY2VN
YXBwaW5nVVJMID0gc291cmNlTWFwcGluZ1VSTDsKIH0KIAogV2ViSW5zcGVjdG9yLkNsb3N1cmVD
b21waWxlclNvdXJjZU1hcHBpbmcucHJvdG90eXBlID0gewogICAgIC8qKgorICAgICAqIEBwYXJh
bSB7ZnVuY3Rpb24oYm9vbGVhbil9IGNhbGxiYWNrCisgICAgICovCisgICAgbG9hZDogZnVuY3Rp
b24oY2FsbGJhY2spCisgICAgeyAgICAgICAgICAgCisgICAgICAgIHRyeSB7CisgICAgICAgICAg
ICAvLyBGSVhNRTogbWFrZSBzZW5kUmVxdWVzdCBhc3luYy4KKyAgICAgICAgICAgIHZhciByZXNw
b25zZSA9IEluc3BlY3RvckZyb250ZW5kSG9zdC5sb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KHRo
aXMuX3NvdXJjZU1hcHBpbmdVUkwpOworICAgICAgICAgICAgdGhpcy5fcGFyc2VNYXBwaW5nUGF5
bG9hZChKU09OLnBhcnNlKHJlc3BvbnNlKSk7CisgICAgICAgICAgICBjYWxsYmFjayh0cnVlKTsK
KyAgICAgICAgfSBjYXRjaChlKSB7CisgICAgICAgICAgICBjb25zb2xlLmVycm9yKGUubWVzc2Fn
ZSk7CisgICAgICAgICAgICBjYWxsYmFjayhmYWxzZSk7CisgICAgICAgIH0KKyAgICB9LAorICAg
ICAgIAorICAgIC8qKgogICAgICAqIEBwYXJhbSB7bnVtYmVyfSBsaW5lTnVtYmVyCiAgICAgICog
QHBhcmFtIHtudW1iZXJ9IGNvbHVtbk51bWJlcgogICAgICAqIEByZXR1cm4ge09iamVjdH0KQEAg
LTExOCw2ICsxMjksMjYgQEAgV2ViSW5zcGVjdG9yLkNsb3N1cmVDb21waWxlclNvdXJjZU1hcHBp
bmcucHJvdG90eXBlID0gewogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3NvdXJjZXM7CiAg
ICAgfSwKKyAgICAKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gc291cmNlVVJMCisg
ICAgICogQHBhcmFtIHtmdW5jdGlvbihzdHJpbmcpfSBjYWxsYmFjaworICAgICAqIEBwYXJhbSB7
bnVtYmVyfSB0aW1lb3V0CisgICAgICovCisgICAgbG9hZFNvdXJjZUNvZGU6IGZ1bmN0aW9uKHNv
dXJjZVVSTCwgY2FsbGJhY2ssIHRpbWVvdXQpCisgICAgeworICAgICAgICB0cnkgeworICAgICAg
ICAgICAgdmFyIHJvb3RVUkwgPSB0aGlzLl9zb3VyY2VNYXBwaW5nVVJMLnN1YnN0cmluZygwLCB0
aGlzLl9zb3VyY2VNYXBwaW5nVVJMLmxhc3RJbmRleE9mKCIvIikgKyAxKTsKKyAgICAgICAgICAg
IGlmICh0aGlzLl9zb3VyY2VSb290KQorICAgICAgICAgICAgICAgIHJvb3RVUkwgKz0gdGhpcy5f
c291cmNlUm9vdCArICIvIjsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBtYWtlIHNlbmRSZXF1ZXN0
IGFzeW5jLgorICAgICAgICAgICAgdmFyIHJlc3BvbnNlID0gSW5zcGVjdG9yRnJvbnRlbmRIb3N0
LmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkocm9vdFVSTCArIHNvdXJjZVVSTCk7CisgICAgICAg
ICAgICBjYWxsYmFjayhyZXNwb25zZSk7CisgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAg
ICAgY29uc29sZS5lcnJvcihlLm1lc3NhZ2UpOworICAgICAgICAgICAgY2FsbGJhY2soIiIpOwor
ICAgICAgICB9ICAgICAgICAKKyAgICB9LCAgICAKIAogICAgIF9maW5kTWFwcGluZzogZnVuY3Rp
b24obGluZU51bWJlciwgY29sdW1uTnVtYmVyKQogICAgIHsKQEAgLTEzNyw4ICsxNjgsMTYgQEAg
V2ViSW5zcGVjdG9yLkNsb3N1cmVDb21waWxlclNvdXJjZU1hcHBpbmcucHJvdG90eXBlID0gewog
ICAgICAgICByZXR1cm4gdGhpcy5fbWFwcGluZ3NbZmlyc3RdOwogICAgIH0sCiAKLSAgICBfcGFy
c2VNYXBwaW5nczogZnVuY3Rpb24obWFwcGluZ1BheWxvYWQpCisgICAgX3BhcnNlTWFwcGluZ1Bh
eWxvYWQ6IGZ1bmN0aW9uKG1hcHBpbmdQYXlsb2FkKQogICAgIHsKKyAgICAgICAgdGhpcy5fc291
cmNlUm9vdCA9IG1hcHBpbmdQYXlsb2FkLnNvdXJjZVJvb3Q7CisgICAgICAgIHRoaXMuX3NvdXJj
ZXMgPSBtYXBwaW5nUGF5bG9hZC5zb3VyY2VzOworICAgICAgICAKKyAgICAgICAgdGhpcy5fbWFw
cGluZ3MgPSBbXTsKKyAgICAgICAgdGhpcy5fcmV2ZXJzZU1hcHBpbmdzQnlTb3VyY2VVUkwgPSB7
fTsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLl9zb3VyY2VzLmxlbmd0aDsgKytp
KQorICAgICAgICAgICAgdGhpcy5fcmV2ZXJzZU1hcHBpbmdzQnlTb3VyY2VVUkxbdGhpcy5fc291
cmNlc1tpXV0gPSBbXTsKKyAgICAgICAgCiAgICAgICAgIHZhciBzdHJpbmdDaGFySXRlcmF0b3Ig
PSBuZXcgV2ViSW5zcGVjdG9yLkNsb3N1cmVDb21waWxlclNvdXJjZU1hcHBpbmcuU3RyaW5nQ2hh
ckl0ZXJhdG9yKG1hcHBpbmdQYXlsb2FkLm1hcHBpbmdzKTsKIAogICAgICAgICB2YXIgbGluZU51
bWJlciA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L0NvbXBpbGVyU291cmNlTWFwcGluZ1Byb3ZpZGVyLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9Db21waWxlclNvdXJjZU1hcHBpbmdQcm92aWRlci5qcwpkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggOWI3NzAwMmM5YzZiYzgxYWQzMWI4YjIwYzBjN2RmOGEwNDdi
N2JmOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NvbXBpbGVyU291cmNlTWFwcGluZ1Byb3Zp
ZGVyLmpzCisrKyAvZGV2L251bGwKQEAgLTEsMTMwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgot
ICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9m
IGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
LSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0vKioKLSAqIEBjb25zdHJ1Y3Rv
cgotICogQHBhcmFtIHtzdHJpbmd9IHNvdXJjZU1hcHBpbmdQYWdlVVJMCi0gKi8KLVdlYkluc3Bl
Y3Rvci5Db21waWxlclNvdXJjZU1hcHBpbmdQcm92aWRlciA9IGZ1bmN0aW9uKHNvdXJjZU1hcHBp
bmdQYWdlVVJMKQotewotICAgIGlmICghdGhpcy5faW5pdGlhbGl6ZWQpIHsKLSAgICAgICAgd2lu
ZG93LmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCB0aGlzLl9vbk1lc3NhZ2UsIHRydWUpOwot
ICAgICAgICBXZWJJbnNwZWN0b3IuQ29tcGlsZXJTb3VyY2VNYXBwaW5nUHJvdmlkZXIucHJvdG90
eXBlLl9pbml0aWFsaXplZCA9IHRydWU7Ci0gICAgfQotICAgIHRoaXMuX3NvdXJjZU1hcHBpbmdQ
YWdlVVJMID0gc291cmNlTWFwcGluZ1BhZ2VVUkw7Ci19Ci0KLVdlYkluc3BlY3Rvci5Db21waWxl
clNvdXJjZU1hcHBpbmdQcm92aWRlci5wcm90b3R5cGUgPSB7Ci0gICAgLyoqCi0gICAgICogQHBh
cmFtIHtmdW5jdGlvbihXZWJJbnNwZWN0b3IuQ29tcGlsZXJTb3VyY2VNYXBwaW5nKX0gY2FsbGJh
Y2sKLSAgICAgKi8KLSAgICBsb2FkU291cmNlTWFwcGluZzogZnVuY3Rpb24oY2FsbGJhY2spCi0g
ICAgewotICAgICAgICB0aGlzLl9mcmFtZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlmcmFt
ZSIpOwotICAgICAgICB0aGlzLl9mcmFtZS5zcmMgPSB0aGlzLl9zb3VyY2VNYXBwaW5nUGFnZVVS
TDsKLSAgICAgICAgZnVuY3Rpb24gZnJhbWVMb2FkZWQoKQotICAgICAgICB7Ci0gICAgICAgICAg
ICBmdW5jdGlvbiBkaWRMb2FkRGF0YShlcnJvciwgcmVzdWx0KQotICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgIGlmIChlcnJvcikgewotICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxv
ZyhlcnJvcik7Ci0gICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKG51bGwpOwotICAgICAgICAg
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAg
dmFyIHBheWxvYWQ7Ci0gICAgICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICAgICAg
cGF5bG9hZCA9IEpTT04ucGFyc2UocmVzdWx0KTsKLSAgICAgICAgICAgICAgICB9IGNhdGNoIChl
KSB7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCJGYWlsZWQgdG8gcGFyc2UgSlNP
Ti4iKTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBpZiAocGF5bG9hZCkK
LSAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2sobmV3IFdlYkluc3BlY3Rvci5DbG9zdXJlQ29t
cGlsZXJTb3VyY2VNYXBwaW5nKHBheWxvYWQpKTsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAg
ICAgICAgICAgICAgICAgIGNhbGxiYWNrKG51bGwpOwotICAgICAgICAgICAgfQotICAgICAgICAg
ICAgdGhpcy5fc2VuZFJlcXVlc3QoImxvYWRTb3VyY2VNYXAiLCBbXSwgZGlkTG9hZERhdGEpOwot
ICAgICAgICB9Ci0gICAgICAgIHRoaXMuX2ZyYW1lLmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCBm
cmFtZUxvYWRlZC5iaW5kKHRoaXMpLCB0cnVlKTsKLSAgICAgICAgLy8gRklYTUU6IHJlbW92ZSBp
ZnJhbWUgZnJvbSB0aGUgZG9jdW1lbnQgd2hlbiBpdCBpcyBub3QgbmVlZGVkIGFueW1vcmUuCi0g
ICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodGhpcy5fZnJhbWUpOwotICAgIH0sCi0K
LSAgICAvKioKLSAgICAgKiBAcGFyYW0ge3N0cmluZ30gc291cmNlVVJMCi0gICAgICogQHBhcmFt
IHtmdW5jdGlvbihzdHJpbmcpfSBjYWxsYmFjawotICAgICAqIEBwYXJhbSB7bnVtYmVyfSB0aW1l
b3V0Ci0gICAgICovCi0gICAgbG9hZFNvdXJjZUNvZGU6IGZ1bmN0aW9uKHNvdXJjZVVSTCwgY2Fs
bGJhY2ssIHRpbWVvdXQpCi0gICAgewotICAgICAgICBmdW5jdGlvbiBkaWRTZW5kUmVxdWVzdChl
cnJvciwgcmVzdWx0KQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoZXJyb3IpIHsKLSAgICAg
ICAgICAgICAgICBjb25zb2xlLmxvZyhlcnJvcik7Ci0gICAgICAgICAgICAgICAgY2FsbGJhY2so
IiIpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IGNhbGxiYWNrKHJlc3VsdCk7Ci0gICAgICAgIH0KLSAgICAgICAgdGhpcy5fc2VuZFJlcXVlc3Qo
ImxvYWRTb3VyY2VDb2RlIiwgW3NvdXJjZVVSTF0sIGRpZFNlbmRSZXF1ZXN0LCB0aW1lb3V0KTsK
LSAgICB9LAotCi0gICAgX3NlbmRSZXF1ZXN0OiBmdW5jdGlvbihtZXRob2QsIHBhcmFtZXRlcnMs
IGNhbGxiYWNrLCB0aW1lb3V0KQotICAgIHsKLSAgICAgICAgdmFyIHJlcXVlc3RJZCA9IHRoaXMu
X3JlcXVlc3RJZCsrOwotICAgICAgICB2YXIgdGltZXJJZCA9IHNldFRpbWVvdXQodGhpcy5fY2Fu
Y2VsUmVxdWVzdC5iaW5kKHRoaXMsIHJlcXVlc3RJZCksIHRpbWVvdXQgfHwgNTAwMCk7Ci0gICAg
ICAgIHRoaXMuX3JlcXVlc3RzW3JlcXVlc3RJZF0gPSB7IGNhbGxiYWNrOiBjYWxsYmFjaywgdGlt
ZXJJZDogdGltZXJJZCB9OwotICAgICAgICB2YXIgcmVxdWVzdERhdGEgPSB7IGlkOiByZXF1ZXN0
SWQsIG1ldGhvZDogbWV0aG9kLCBwYXJhbXM6IHBhcmFtZXRlcnMgfTsKLSAgICAgICAgdGhpcy5f
ZnJhbWUuY29udGVudFdpbmRvdy5wb3N0TWVzc2FnZShyZXF1ZXN0RGF0YSwgdGhpcy5fc291cmNl
TWFwcGluZ1BhZ2VVUkwpOwotICAgIH0sCi0KLSAgICBfb25NZXNzYWdlOiBmdW5jdGlvbihldmVu
dCkKLSAgICB7Ci0gICAgICAgIHZhciByZXF1ZXN0SWQgPSBldmVudC5kYXRhLmlkOwotICAgICAg
ICB2YXIgcmVxdWVzdHMgPSBXZWJJbnNwZWN0b3IuQ29tcGlsZXJTb3VyY2VNYXBwaW5nUHJvdmlk
ZXIucHJvdG90eXBlLl9yZXF1ZXN0czsKLSAgICAgICAgdmFyIHJlcXVlc3QgPSByZXF1ZXN0c1ty
ZXF1ZXN0SWRdOwotICAgICAgICBpZiAoIXJlcXVlc3QpCi0gICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgIGRlbGV0ZSByZXF1ZXN0c1tyZXF1ZXN0SWRdOwotICAgICAgICBjbGVhclRpbWVvdXQo
cmVxdWVzdC50aW1lcklkKTsKLSAgICAgICAgcmVxdWVzdC5jYWxsYmFjayhldmVudC5kYXRhLmVy
cm9yLCBldmVudC5kYXRhLnJlc3VsdCk7Ci0gICAgfSwKLQotICAgIF9jYW5jZWxSZXF1ZXN0OiBm
dW5jdGlvbihyZXF1ZXN0SWQpCi0gICAgewotICAgICAgICB2YXIgcmVxdWVzdCA9IHRoaXMuX3Jl
cXVlc3RzW3JlcXVlc3RJZF07Ci0gICAgICAgIGRlbGV0ZSB0aGlzLl9yZXF1ZXN0c1tyZXF1ZXN0
SWRdOwotICAgICAgICByZXF1ZXN0LmNhbGxiYWNrKCJSZXF1ZXN0IHRpbWVkIG91dC4iLCBudWxs
KTsKLSAgICB9LAotCi0gICAgX3JlcXVlc3RJZDogMCwKLSAgICBfcmVxdWVzdHM6IHt9Ci19CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NvbnRlbnRQcm92
aWRlcnMuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NvbnRlbnRQcm92
aWRlcnMuanMKaW5kZXggMDExYjkwMzQ4MzljOTA1NTJiN2M1MmY3MzFiYWMxNDY5NzdmMjA3YS4u
MDY1OWYxMzM3MmY2NTA4ZjhkNTRhOWMzZDU2Y2UxN2E2YzE0MzZiZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Db250ZW50UHJvdmlkZXJzLmpzCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ29udGVudFByb3ZpZGVycy5qcwpA
QCAtMjQzLDExICsyNDMsMTEgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlQ29udGVudFByb3ZpZGVy
LnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuQ29udGVudFAKICAqIEBjb25zdHJ1
Y3RvcgogICogQGltcGxlbWVudHMge1dlYkluc3BlY3Rvci5Db250ZW50UHJvdmlkZXJ9CiAgKi8K
LVdlYkluc3BlY3Rvci5Db21waWxlclNvdXJjZU1hcHBpbmdDb250ZW50UHJvdmlkZXIgPSBmdW5j
dGlvbihzb3VyY2VVUkwsIGNvbXBpbGVyU291cmNlTWFwcGluZ1Byb3ZpZGVyKQorV2ViSW5zcGVj
dG9yLkNvbXBpbGVyU291cmNlTWFwcGluZ0NvbnRlbnRQcm92aWRlciA9IGZ1bmN0aW9uKHNvdXJj
ZVVSTCwgY29tcGlsZXJTb3VyY2VNYXBwaW5nKQogewogICAgIHRoaXMuX21pbWVUeXBlID0gInRl
eHQvamF2YXNjcmlwdCI7CiAgICAgdGhpcy5fc291cmNlVVJMID0gc291cmNlVVJMOwotICAgIHRo
aXMuX2NvbXBpbGVyU291cmNlTWFwcGluZ1Byb3ZpZGVyID0gY29tcGlsZXJTb3VyY2VNYXBwaW5n
UHJvdmlkZXI7CisgICAgdGhpcy5fY29tcGlsZXJTb3VyY2VNYXBwaW5nID0gY29tcGlsZXJTb3Vy
Y2VNYXBwaW5nOwogfTsKIAogV2ViSW5zcGVjdG9yLkNvbXBpbGVyU291cmNlTWFwcGluZ0NvbnRl
bnRQcm92aWRlci5wcm90b3R5cGUgPSB7CkBAIC0yNjAsNyArMjYwLDcgQEAgV2ViSW5zcGVjdG9y
LkNvbXBpbGVyU291cmNlTWFwcGluZ0NvbnRlbnRQcm92aWRlci5wcm90b3R5cGUgPSB7CiAgICAg
ICAgIHsKICAgICAgICAgICAgIGNhbGxiYWNrKHRoaXMuX21pbWVUeXBlLCBzb3VyY2VDb2RlKTsK
ICAgICAgICAgfQotICAgICAgICB0aGlzLl9jb21waWxlclNvdXJjZU1hcHBpbmdQcm92aWRlci5s
b2FkU291cmNlQ29kZSh0aGlzLl9zb3VyY2VVUkwsIGRpZExvYWRTb3VyY2VDb2RlLmJpbmQodGhp
cykpOworICAgICAgICB0aGlzLl9jb21waWxlclNvdXJjZU1hcHBpbmcubG9hZFNvdXJjZUNvZGUo
dGhpcy5fc291cmNlVVJMLCBkaWRMb2FkU291cmNlQ29kZS5iaW5kKHRoaXMpKTsKICAgICB9LAog
CiAgICAgLyoqCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L1Jhd1NvdXJjZUNvZGUuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jh
d1NvdXJjZUNvZGUuanMKaW5kZXggZTkxZDlhOTY4ZTlkYWIzYTY3OGYwMGY3M2M2NTQ3YjkzMWVk
NmI3Mi4uZWYxZWI5NTZmYWRkN2U1MzA0YzJkODRhYWUzN2FjOWVmMDBhZWFkNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SYXdTb3VyY2VDb2RlLmpzCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmF3U291cmNlQ29kZS5qcwpA
QCAtOTUsMTcgKzk1LDE3IEBAIFdlYkluc3BlY3Rvci5SYXdTb3VyY2VDb2RlLnByb3RvdHlwZSA9
IHsKICAgICAvKioKICAgICAgKiBAcGFyYW0ge251bWJlcn0gcHJvdmlkZXIgU2hvdWxkIGFzc2ln
biBwcm9wZXIgdHlwZSB1cG9uIGZpcnN0IHVzZQogICAgICAqLwotICAgIHNldENvbXBpbGVyU291
cmNlTWFwcGluZ1Byb3ZpZGVyOiBmdW5jdGlvbihwcm92aWRlcikKKyAgICBzZXRDb21waWxlclNv
dXJjZU1hcHBpbmc6IGZ1bmN0aW9uKGNvbXBpbGVyU291cmNlTWFwcGluZykKICAgICB7Ci0gICAg
ICAgIGlmIChwcm92aWRlcikKKyAgICAgICAgaWYgKGNvbXBpbGVyU291cmNlTWFwcGluZykKICAg
ICAgICAgICAgIHRoaXMuX3VzZVRlbXBvcmFyeUNvbnRlbnQgPSBmYWxzZTsKLSAgICAgICAgdGhp
cy5fY29tcGlsZXJTb3VyY2VNYXBwaW5nUHJvdmlkZXIgPSBwcm92aWRlcjsKKyAgICAgICAgdGhp
cy5fY29tcGlsZXJTb3VyY2VNYXBwaW5nID0gY29tcGlsZXJTb3VyY2VNYXBwaW5nOwogICAgICAg
ICB0aGlzLl91cGRhdGVTb3VyY2VNYXBwaW5nKCk7CiAgICAgfSwKIAogICAgIF9yZXNvdXJjZUZp
bmlzaGVkOiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICBpZiAodGhpcy5fY29tcGlsZXJTb3Vy
Y2VNYXBwaW5nUHJvdmlkZXIpCisgICAgICAgIGlmICh0aGlzLl9jb21waWxlclNvdXJjZU1hcHBp
bmcpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIHRoaXMuX3VzZVRlbXBvcmFyeUNvbnRl
bnQgPSBmYWxzZTsKICAgICAgICAgdGhpcy5fdXBkYXRlU291cmNlTWFwcGluZygpOwpAQCAtMTgy
LDMwICsxODIsMzAgQEAgV2ViSW5zcGVjdG9yLlJhd1NvdXJjZUNvZGUucHJvdG90eXBlID0gewog
ICAgICAqLwogICAgIF9jcmVhdGVTb3VyY2VNYXBwaW5nOiBmdW5jdGlvbihjYWxsYmFjaykKICAg
ICB7Ci0gICAgICAgIGlmICh0aGlzLl9jb21waWxlclNvdXJjZU1hcHBpbmdQcm92aWRlcikgewor
ICAgICAgICBpZiAodGhpcy5fY29tcGlsZXJTb3VyY2VNYXBwaW5nKSB7CiAgICAgICAgICAgICAv
KioKICAgICAgICAgICAgICAqIEB0aGlzIHtXZWJJbnNwZWN0b3IuUmF3U291cmNlQ29kZX0KLSAg
ICAgICAgICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLkNvbXBpbGVyU291cmNlTWFwcGluZ30g
Y29tcGlsZXJTb3VyY2VNYXBwaW5nCisgICAgICAgICAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IHN1
Y2Nlc3MKICAgICAgICAgICAgICAqLwotICAgICAgICAgICAgZnVuY3Rpb24gZGlkTG9hZFNvdXJj
ZU1hcHBpbmcoY29tcGlsZXJTb3VyY2VNYXBwaW5nKQorICAgICAgICAgICAgZnVuY3Rpb24gZGlk
TG9hZFNvdXJjZU1hcHBpbmcoc3VjY2VzcykKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICBpZiAoIWNvbXBpbGVyU291cmNlTWFwcGluZykgewotICAgICAgICAgICAgICAgICAgICBkZWxl
dGUgdGhpcy5fY29tcGlsZXJTb3VyY2VNYXBwaW5nUHJvdmlkZXI7CisgICAgICAgICAgICAgICAg
aWYgKCFzdWNjZXNzKSB7CisgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSB0aGlzLl9jb21waWxl
clNvdXJjZU1hcHBpbmc7CiAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKG51bGwpOwogICAg
ICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgIHZhciB1aVNvdXJjZUNvZGVMaXN0ID0gW107Ci0gICAgICAgICAgICAgICAgdmFyIHNvdXJj
ZVVSTHMgPSBjb21waWxlclNvdXJjZU1hcHBpbmcuc291cmNlcygpOworICAgICAgICAgICAgICAg
IHZhciBzb3VyY2VVUkxzID0gdGhpcy5fY29tcGlsZXJTb3VyY2VNYXBwaW5nLnNvdXJjZXMoKTsK
ICAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNvdXJjZVVSTHMubGVuZ3RoOyAr
K2kpIHsKICAgICAgICAgICAgICAgICAgICAgdmFyIHNvdXJjZVVSTCA9IHNvdXJjZVVSTHNbaV07
Ci0gICAgICAgICAgICAgICAgICAgIHZhciBjb250ZW50UHJvdmlkZXIgPSBuZXcgV2ViSW5zcGVj
dG9yLkNvbXBpbGVyU291cmNlTWFwcGluZ0NvbnRlbnRQcm92aWRlcihzb3VyY2VVUkwsIHRoaXMu
X2NvbXBpbGVyU291cmNlTWFwcGluZ1Byb3ZpZGVyKTsKKyAgICAgICAgICAgICAgICAgICAgdmFy
IGNvbnRlbnRQcm92aWRlciA9IG5ldyBXZWJJbnNwZWN0b3IuQ29tcGlsZXJTb3VyY2VNYXBwaW5n
Q29udGVudFByb3ZpZGVyKHNvdXJjZVVSTCwgdGhpcy5fY29tcGlsZXJTb3VyY2VNYXBwaW5nKTsK
ICAgICAgICAgICAgICAgICAgICAgdmFyIHVpU291cmNlQ29kZSA9IG5ldyBXZWJJbnNwZWN0b3Iu
VUlTb3VyY2VDb2RlKHNvdXJjZVVSTCwgc291cmNlVVJMLCB0aGlzLmlzQ29udGVudFNjcmlwdCwg
dGhpcywgY29udGVudFByb3ZpZGVyKTsKICAgICAgICAgICAgICAgICAgICAgdWlTb3VyY2VDb2Rl
TGlzdC5wdXNoKHVpU291cmNlQ29kZSk7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
ICAgIHZhciBzb3VyY2VNYXBwaW5nID0gbmV3IFdlYkluc3BlY3Rvci5SYXdTb3VyY2VDb2RlLkNv
bXBpbGVyU291cmNlTWFwcGluZyh0aGlzLCB1aVNvdXJjZUNvZGVMaXN0LCBjb21waWxlclNvdXJj
ZU1hcHBpbmcpOworICAgICAgICAgICAgICAgIHZhciBzb3VyY2VNYXBwaW5nID0gbmV3IFdlYklu
c3BlY3Rvci5SYXdTb3VyY2VDb2RlLkNvbXBpbGVyU291cmNlTWFwcGluZyh0aGlzLCB1aVNvdXJj
ZUNvZGVMaXN0LCB0aGlzLl9jb21waWxlclNvdXJjZU1hcHBpbmcpOwogICAgICAgICAgICAgICAg
IGNhbGxiYWNrKHNvdXJjZU1hcHBpbmcpOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgdGhp
cy5fY29tcGlsZXJTb3VyY2VNYXBwaW5nUHJvdmlkZXIubG9hZFNvdXJjZU1hcHBpbmcoZGlkTG9h
ZFNvdXJjZU1hcHBpbmcuYmluZCh0aGlzKSk7CisgICAgICAgICAgICB0aGlzLl9jb21waWxlclNv
dXJjZU1hcHBpbmcubG9hZChkaWRMb2FkU291cmNlTWFwcGluZy5iaW5kKHRoaXMpKTsKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5xcmMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL1dlYktpdC5xcmMKaW5kZXggYjVmYTk1YTAxOTMyOTQxYTYxN2ExNGE5MzRmODZi
MmIxNzk3OTg2ZS4uM2QwZDljNDY2MWRmYTU4M2IyYTk3MDY4MzBmODljZTQwZjY2YjMyMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9XZWJLaXQucXJjCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvV2ViS2l0LnFyYwpAQCAtMTcs
NyArMTcsNiBAQAogICAgIDxmaWxlPkNoZWNrYm94LmpzPC9maWxlPgogICAgIDxmaWxlPkNvbG9y
LmpzPC9maWxlPgogICAgIDxmaWxlPkNvbXBpbGVyU291cmNlTWFwcGluZy5qczwvZmlsZT4KLSAg
ICA8ZmlsZT5Db21waWxlclNvdXJjZU1hcHBpbmdQcm92aWRlci5qczwvZmlsZT4KICAgICA8Zmls
ZT5Db25zb2xlTWVzc2FnZS5qczwvZmlsZT4KICAgICA8ZmlsZT5Db25zb2xlTW9kZWwuanM8L2Zp
bGU+CiAgICAgPGZpbGU+Q29uc29sZVBhbmVsLmpzPC9maWxlPgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuaHRtbCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmh0bWwKaW5kZXggMmE3NjQ5MzA1ZjY5
M2JhZDJjNTBiNzdhMzY3M2NkZWNkNGE3NzdlZS4uYmM2MDE3Y2EzOGNlMGRlMjlhOTAwNzEwY2Jj
YzBhZGRmZmZlNDM0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9pbnNwZWN0b3IuaHRtbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL2luc3BlY3Rvci5odG1sCkBAIC0xNjQsNyArMTY0LDYgQEAgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAgICA8c2Ny
aXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJDb250ZW50UHJvdmlkZXJzLmpzIj48L3Nj
cmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJSYXdTb3VyY2VD
b2RlLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3Jj
PSJDb21waWxlclNvdXJjZU1hcHBpbmcuanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgdHlwZT0i
dGV4dC9qYXZhc2NyaXB0IiBzcmM9IkNvbXBpbGVyU291cmNlTWFwcGluZ1Byb3ZpZGVyLmpzIj48
L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJTY3JpcHRz
U2VhcmNoU2NvcGUuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2Ny
aXB0IiBzcmM9IkRPTUFnZW50LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQv
amF2YXNjcmlwdCIgc3JjPSJUaW1lbGluZUFnZW50LmpzIj48L3NjcmlwdD4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanMKaW5kZXggNzYzOWFmZDdm
YzAzZmQ1NDE3MzM1YTdiMTdiNTEyZmYxMmEyZjZmNC4uOGQzZDgzNzQwODA2NjgwYzJjN2FiOGJl
MDBjMGI4MWM5NjNhZTRkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9pbnNwZWN0b3IuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9pbnNwZWN0b3IuanMKQEAgLTg3Myw3ICs4NzMsNyBAQCBXZWJJbnNwZWN0b3IuX3Rvb2xi
YXJJdGVtQ2xpY2tlZCA9IGZ1bmN0aW9uKGV2ZW50KQogV2ViSW5zcGVjdG9yLmluc3RhbGxTb3Vy
Y2VNYXBwaW5nRm9yVGVzdCA9IGZ1bmN0aW9uKHVybCkKIHsKICAgICAvLyBGSVhNRTogcmVtb3Zl
IHRoaXMgbWV0aG9kIHdoZW4gaXQncyBwb3NzaWJsZSB0byBzZXQgY29tcGlsZXIgc291cmNlIG1h
cHBpbmdzIHZpYSBVSS4KLSAgICB2YXIgcHJvdmlkZXIgPSBuZXcgV2ViSW5zcGVjdG9yLkNvbXBp
bGVyU291cmNlTWFwcGluZ1Byb3ZpZGVyKHVybCk7CisgICAgdmFyIHNvdXJjZU1hcHBpbmcgPSBu
ZXcgV2ViSW5zcGVjdG9yLkNsb3N1cmVDb21waWxlclNvdXJjZU1hcHBpbmcodXJsKTsKICAgICB2
YXIgdWlTb3VyY2VDb2RlID0gV2ViSW5zcGVjdG9yLnBhbmVscy5zY3JpcHRzLnZpc2libGVWaWV3
Ll9kZWxlZ2F0ZS5fdWlTb3VyY2VDb2RlOwotICAgIHVpU291cmNlQ29kZS5yYXdTb3VyY2VDb2Rl
LnNldENvbXBpbGVyU291cmNlTWFwcGluZ1Byb3ZpZGVyKHByb3ZpZGVyKTsKKyAgICB1aVNvdXJj
ZUNvZGUucmF3U291cmNlQ29kZS5zZXRDb21waWxlclNvdXJjZU1hcHBpbmcoc291cmNlTWFwcGlu
Zyk7CiB9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKaW5kZXggYmEwMTA0ZTAxODI2MjgzMjQzZDYyZGEwZDhiNjgwNzM2N2IwYWYwYS4u
YTg0YjllOTQxYTEwNjVhODI2ZDE4Y2I0OWU0NzhhODA5NzM0YTcxOSAxMDA3NTUKLS0tIGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDIyIEBACisyMDExLTExLTAxICBQYXZlbCBQb2Rpdmlsb3YgIDxwb2Rpdmlsb3ZAY2hyb21pdW0u
b3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IGxvYWQgc291cmNlIG1hcHMgdmlhIGZyb250
LWVuZCBob3N0LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NzEzMDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL2NvbXBpbGVyLXNvdXJjZS1tYXBwaW5nLXByb3ZpZGVy
LWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9j
b21waWxlci1zb3VyY2UtbWFwcGluZy1wcm92aWRlci5odG1sOiBSZW1vdmVkLgorICAgICAgICAq
IGh0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlcy9jb21waWxlci1zb3VyY2UtbWFwcGluZy1w
cm92aWRlci9hcHAtbWFwLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9pbnNw
ZWN0b3IvcmVzb3VyY2VzL3NvdXJjZS1tYXAuanNvbjogUmVuYW1lZCBmcm9tIExheW91dFRlc3Rz
L2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlcy9jb21waWxlci1zb3VyY2UtbWFwcGluZy1w
cm92aWRlci9hcHAtbWFwLgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNl
cy9zb3VyY2UxLmpzOiBSZW5hbWVkIGZyb20gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0
b3IvcmVzb3VyY2VzL2NvbXBpbGVyLXNvdXJjZS1tYXBwaW5nLXByb3ZpZGVyL2FwcC5qcy4KKyAg
ICAgICAgKHdpbmRvdy5vbmxvYWQpOgorICAgICAgICAoaGFuZGxlQ2xpY2spOgorICAgICAgICAq
IGh0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlcy9zb3VyY2UyLmpzOiBSZW5hbWVkIGZyb20g
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL2NvbXBpbGVyLXNvdXJj
ZS1tYXBwaW5nLXByb3ZpZGVyL2Zvby5qcy4KKyAgICAgICAgKENsaWNrSGFuZGxlcik6CisgICAg
ICAgIChDbGlja0hhbmRsZXIucHJvdG90eXBlLmhhbmRsZSk6CisgICAgICAgICogaW5zcGVjdG9y
L2RlYnVnZ2VyL2NvbXBpbGVyLXNvdXJjZS1tYXBwaW5nLmh0bWw6IFJlbW92ZWQuCisKIDIwMTEt
MTEtMDIgIFRvbnkgQ2hhbmcgIDx0b255QGNocm9taXVtLm9yZz4KIAogICAgICAgICBBZGQgY2hy
b21pdW0gdGVzdCByZXN1bHRzIGZvciBmYXN0L3JlZmxlY3Rpb25zL3JlZmxlY3Rpb24tbWFza3Mt
b3V0c2V0Lmh0bWwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9y
L2NvbXBpbGVyLXNvdXJjZS1tYXBwaW5nLXByb3ZpZGVyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2NvbXBpbGVyLXNvdXJjZS1tYXBwaW5nLXByb3ZpZGVy
LWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmI0NzE2OGI1Mzc4
ZjYwMTc3MjMwMjQzMGU4OGEwYzU5ZjZjOGE1OC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9jb21w
aWxlci1zb3VyY2UtbWFwcGluZy1wcm92aWRlci1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApA
QCAtMSw4ICswLDAgQEAKLVRlc3RzIENvbXBpbGVyU291cmNlTWFwcGluZ1Byb3ZpZGVyIGNsYXNz
LgotCi0KLVJ1bm5pbmc6IHRlc3RMb2FkCi0KLVJ1bm5pbmc6IHRlc3RUaW1lb3V0Ci1sb2c6IFJl
cXVlc3QgdGltZWQgb3V0LgotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2lu
c3BlY3Rvci9jb21waWxlci1zb3VyY2UtbWFwcGluZy1wcm92aWRlci5odG1sIGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvY29tcGlsZXItc291cmNlLW1hcHBpbmctcHJvdmlkZXIu
aHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTQ4Njk4NWVjM2NjZmMyOWFhNGMz
NmUxMzdiZjMzOTY2NWFhOWIzNy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9jb21waWxlci1zb3Vy
Y2UtbWFwcGluZy1wcm92aWRlci5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsNTggKzAsMCBAQAot
PGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSJpbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+
Ci0KLTxzY3JpcHQ+Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewotICAgIEluc3BlY3RvclRlc3QucnVu
VGVzdFN1aXRlKFsKLSAgICAgICAgZnVuY3Rpb24gdGVzdExvYWQobmV4dCkKLSAgICAgICAgewot
ICAgICAgICAgICAgdmFyIHByb3ZpZGVyID0gbmV3IFdlYkluc3BlY3Rvci5Db21waWxlclNvdXJj
ZU1hcHBpbmdQcm92aWRlcigiaHR0cDovL2xvY2FsaG9zdDo4MDAwL2luc3BlY3Rvci9yZXNvdXJj
ZXMvY29tcGlsZXItc291cmNlLW1hcHBpbmctcHJvdmlkZXIvYXBwLW1hcC5odG1sP3NvdXJjZU1h
cD1hcHAtbWFwIik7Ci0gICAgICAgICAgICB2YXIgc291cmNlTWFwcGluZzsKLSAgICAgICAgICAg
IHByb3ZpZGVyLmxvYWRTb3VyY2VNYXBwaW5nKGRpZExvYWRTb3VyY2VNYXBwaW5nKTsKLSAgICAg
ICAgICAgIGZ1bmN0aW9uIGRpZExvYWRTb3VyY2VNYXBwaW5nKHNvdXJjZU1hcHBpbmdBcmcpCi0g
ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgc291cmNlTWFwcGluZyA9IHNvdXJjZU1hcHBp
bmdBcmc7Ci0gICAgICAgICAgICAgICAgdmFyIHNvdXJjZXMgPSBzb3VyY2VNYXBwaW5nLnNvdXJj
ZXMoKTsKLSAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscygyLCBzb3Vy
Y2VzLmxlbmd0aCk7Ci0gICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHMo
ImFwcC5qcyIsIHNvdXJjZXNbMF0pOwotICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNz
ZXJ0RXF1YWxzKCJmb28uanMiLCBzb3VyY2VzWzFdKTsKLSAgICAgICAgICAgICAgICBwcm92aWRl
ci5sb2FkU291cmNlQ29kZShzb3VyY2VNYXBwaW5nLnNvdXJjZXMoKVswXSwgZGlkTG9hZFNvdXJj
ZUNvZGUpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBmdW5jdGlvbiBkaWRMb2FkU291
cmNlQ29kZShjb250ZW50KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QuYXNzZXJ0RXF1YWxzKDAsIGNvbnRlbnQuaW5kZXhPZigid2luZG93Lm9ubG9hZCA9IGZ1
bmN0aW9uKCkiKSk7Ci0gICAgICAgICAgICAgICAgcHJvdmlkZXIubG9hZFNvdXJjZUNvZGUoc291
cmNlTWFwcGluZy5zb3VyY2VzKClbMV0sIGRpZExvYWRTb3VyY2VDb2RlMik7Ci0gICAgICAgICAg
ICB9Ci0KLSAgICAgICAgICAgIGZ1bmN0aW9uIGRpZExvYWRTb3VyY2VDb2RlMihjb250ZW50KQot
ICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxz
KDAsIGNvbnRlbnQuaW5kZXhPZigiZnVuY3Rpb24gQ2xpY2tIYW5kbGVyKCkiKSk7Ci0gICAgICAg
ICAgICAgICAgbmV4dCgpOwotICAgICAgICAgICAgfQotICAgICAgICB9LAotCi0gICAgICAgIGZ1
bmN0aW9uIHRlc3RUaW1lb3V0KG5leHQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHZhciBwcm92
aWRlciA9IG5ldyBXZWJJbnNwZWN0b3IuQ29tcGlsZXJTb3VyY2VNYXBwaW5nUHJvdmlkZXIoImh0
dHA6Ly9sb2NhbGhvc3Q6ODAwMC9kb2VzLW5vdC1leGlzdCIpOwotICAgICAgICAgICAgcHJvdmlk
ZXIubG9hZFNvdXJjZU1hcHBpbmcoZGlkTG9hZFNvdXJjZU1hcHBpbmcpOwotICAgICAgICAgICAg
ZnVuY3Rpb24gZGlkTG9hZFNvdXJjZU1hcHBpbmcoc291cmNlTWFwcGluZykKLSAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscyhudWxsLCBzb3Vy
Y2VNYXBwaW5nKTsKLSAgICAgICAgICAgICAgICBuZXh0KCk7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgIH0KLSAgICBdKTsKLX07Ci0KLTwvc2NyaXB0PgotCi08L2hlYWQ+Ci0KLTxib2R5IG9ubG9h
ZD0icnVuVGVzdCgpIj4KLTxwPlRlc3RzIENvbXBpbGVyU291cmNlTWFwcGluZ1Byb3ZpZGVyIGNs
YXNzLjwvcD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlcy9jb21waWxlci1zb3VyY2UtbWFwcGluZy1wcm92aWRl
ci9hcHAtbWFwIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL2Nv
bXBpbGVyLXNvdXJjZS1tYXBwaW5nLXByb3ZpZGVyL2FwcC1tYXAKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDA4MjliMGJjYzdhYjY3M2JiNTA1MWY4ZmYzNThmOWVmMWFhNjc4NWQuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL2NvbXBpbGVyLXNvdXJjZS1tYXBwaW5nLXBy
b3ZpZGVyL2FwcC1tYXAKKysrIC9kZXYvbnVsbApAQCAtMSw4ICswLDAgQEAKLXsKLSJ2ZXJzaW9u
IjozLAotImZpbGUiOiIuL2FwcC1tYXAiLAotImxpbmVDb3VudCI6MiwKLSJtYXBwaW5ncyI6IkFB
Q0FBLE1BQUFDLE9BQUEsQ0FBd0JDLFFBQUEsRUFDeEIsQ0FDSSxJQUFJQyxFQUFNQyxRQUFBQyxj
QUFzQixDQUFDLEtBQUQsQ0FDaENGLEVBQUFHLFlBQUEsQ0FBa0IsS0FDbEJILEVBQUFJLGlCQUFv
QixDQUFDLE9BQUQsQ0FBVUMsV0FBVixDQUF1QixDQUFBLENBQXZCLENBQ3BCSixTQUFBSyxLQUFB
QyxZQUF5QixDQUFDUCxDQUFELENBRXJCUSxFQUFBQSxDQUFNUCxRQUFBQyxjQUFzQixDQUFDLEtB
QUQsQ0FDaENNLEVBQUFMLFlBQUEsQ0FBa0Isb2NBQ2xCRjtRQUFBSyxLQUFBQyxZQUF5QixDQUFD
QyxDQUFELENBUjdCLENBV1NILFNBQUFBLFlBQVcsQ0FBQ0ksQ0FBRCxDQUNwQixDQUVJQyxDQUQ4
QkMsSUFBWkMsWUFDbEJGLFFBQWMsQ0FBQ0QsQ0FBRCxDQUZsQixDQ2JTRyxRQUFBQSxhQUFZLEVB
Q3JCLEVBR0FBLFlBQUFDLFVBQUFILE9BQUEsQ0FBd0NJLFFBQUEsQ0FBQ0wsQ0FBRCxDQUN4QyxD
QUNJLElBQUlNLEVBQVVkLFFBQUFDLGNBQXNCLENBQUMsS0FBRCxDQUNwQ2EsRUFBQVosWUFBQSxD
QUFzQk0sQ0FBQU8sVUFDdEJmLFNBQUFLLEtBQUFDLFlBQXlCLENBQUNRLENBQUQsQ0FIN0I7IiwK
LSJzb3VyY2VzIjpbImFwcC5qcyIsImZvby5qcyJdLAotIm5hbWVzIjpbIndpbmRvdyIsIm9ubG9h
ZCIsIndpbmRvdy5vbmxvYWQiLCJmb28iLCJkb2N1bWVudCIsImNyZWF0ZUVsZW1lbnQiLCJ0ZXh0
Q29udGVudCIsImFkZEV2ZW50TGlzdGVuZXIiLCJoYW5kbGVDbGljayIsImJvZHkiLCJhcHBlbmRD
aGlsZCIsImJhciIsImV2ZW50IiwiaGFuZGxlIiwiaGFuZGxlciIsIkNsaWNrSGFuZGxlciIsInBy
b3RvdHlwZSIsIkNsaWNrSGFuZGxlci5wcm90b3R5cGUuaGFuZGxlIiwiZWxlbWVudCIsInRpbWVT
dGFtcCJdCi19CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9y
ZXNvdXJjZXMvY29tcGlsZXItc291cmNlLW1hcHBpbmctcHJvdmlkZXIvYXBwLW1hcC5odG1sIGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL2NvbXBpbGVyLXNvdXJj
ZS1tYXBwaW5nLXByb3ZpZGVyL2FwcC1tYXAuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggM2I4ZGRiZGQ2NDhkYWM0YTNhZjNiYmNhNTliYTU0MTIwYmI2ZDg5NC4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2luc3BlY3Rvci9yZXNvdXJjZXMvY29tcGlsZXItc291cmNlLW1hcHBpbmctcHJvdmlkZXIv
YXBwLW1hcC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsNDQgKzAsMCBAQAotPHNjcmlwdD4KLXdp
bmRvdy5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwgaGFuZGxlTWVzc2FnZSwgZmFsc2UpOwot
Ci1mdW5jdGlvbiBoYW5kbGVNZXNzYWdlKGV2ZW50KQotewotICAgIHZhciByZXF1ZXN0SWQgPSBl
dmVudC5kYXRhLmlkOwotICAgIHZhciBtZXRob2QgPSBldmVudC5kYXRhLm1ldGhvZDsKLSAgICBp
ZiAobWV0aG9kID09PSAibG9hZFNvdXJjZU1hcCIpIHsKLSAgICAgICAgdmFyIHF1ZXJ5UGFyYW1l
dGVycyA9IHBhcnNlUXVlcnlTdHJpbmcod2luZG93LmxvY2F0aW9uLnRvU3RyaW5nKCkpOwotICAg
ICAgICBzZW5kUmVxdWVzdChldmVudCwgcXVlcnlQYXJhbWV0ZXJzLnNvdXJjZU1hcCk7Ci0gICAg
fSBlbHNlIGlmIChtZXRob2QgPT09ICJsb2FkU291cmNlQ29kZSIpIHsKLSAgICAgICAgdmFyIHNv
dXJjZUNvZGVVUkwgPSBldmVudC5kYXRhLnBhcmFtc1swXTsKLSAgICAgICAgc2VuZFJlcXVlc3Qo
ZXZlbnQsIHNvdXJjZUNvZGVVUkwpOwotICAgIH0KLX0KLQotZnVuY3Rpb24gc2VuZFJlcXVlc3Qo
ZXZlbnQsIHVybCkKLXsKLSAgICB2YXIgcmVxdWVzdCA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpOwot
ICAgIHJlcXVlc3Qub3BlbigiR0VUIiwgdXJsLCB0cnVlKTsKLSAgICByZXF1ZXN0Lm9ucmVhZHlz
dGF0ZWNoYW5nZSA9IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIGlmIChyZXF1ZXN0LnJlYWR5
U3RhdGUgIT09IDQpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGlmIChyZXF1ZXN0LnN0
YXR1cyA9PT0gMjAwKQotICAgICAgICAgICAgZXZlbnQuc291cmNlLnBvc3RNZXNzYWdlKHsgaWQ6
IGV2ZW50LmRhdGEuaWQsIHJlc3VsdDogcmVxdWVzdC5yZXNwb25zZVRleHQgfSwgZXZlbnQub3Jp
Z2luKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgZXZlbnQuc291cmNlLnBvc3RNZXNzYWdl
KHsgaWQ6IGV2ZW50LmRhdGEuaWQsIGVycm9yOiByZXF1ZXN0LnN0YXR1c1RleHQgfSwgZXZlbnQu
b3JpZ2luKTsKLSAgICB9Ci0gICAgcmVxdWVzdC5zZW5kKCk7Ci19Ci0KLWZ1bmN0aW9uIHBhcnNl
UXVlcnlTdHJpbmcodXJsKQotewotICAgIHZhciBxdWVyeSA9IHVybC5zcGxpdCgiPyIpWzFdOwot
ICAgIHZhciBwYXJhbWV0ZXJzID0gcXVlcnkuc3BsaXQoIiYiKTsKLSAgICB2YXIgcmVzdWx0ID0g
e307Ci0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwYXJhbWV0ZXJzLmxlbmd0aDsgKytpKSB7Ci0g
ICAgICAgIHZhciBwYXJhbWV0ZXIgPSBwYXJhbWV0ZXJzW2ldLnNwbGl0KCI9Iik7Ci0gICAgICAg
IHJlc3VsdFtwYXJhbWV0ZXJbMF1dID0gcGFyYW1ldGVyWzFdOwotICAgIH0KLSAgICByZXR1cm4g
cmVzdWx0OwotfQotPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2luc3BlY3Rvci9yZXNvdXJjZXMvY29tcGlsZXItc291cmNlLW1hcHBpbmctcHJvdmlkZXIvYXBw
LmpzIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL2NvbXBpbGVy
LXNvdXJjZS1tYXBwaW5nLXByb3ZpZGVyL2FwcC5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggNmVjMzU4ODZjMDZlMGMyNTlkODdjNDZhZDFlZjM0YmUwNjVmZTE4Yi4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2luc3BlY3Rvci9yZXNvdXJjZXMvY29tcGlsZXItc291cmNlLW1hcHBpbmctcHJvdmlkZXIv
YXBwLmpzCisrKyAvZGV2L251bGwKQEAgLTEsMTcgKzAsMCBAQAotd2luZG93Lm9ubG9hZCA9IGZ1
bmN0aW9uKCkKLXsKLSAgICB2YXIgZm9vID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7
Ci0gICAgZm9vLnRleHRDb250ZW50ID0gJ2Zvbyc7Ci0gICAgZm9vLmFkZEV2ZW50TGlzdGVuZXIo
J2NsaWNrJywgaGFuZGxlQ2xpY2ssIHRydWUpOwotICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hp
bGQoZm9vKTsKLQotICAgIHZhciBiYXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsK
LSAgICBiYXIudGV4dENvbnRlbnQgPSAnYmFycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJy
cnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJy
cnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJy
cnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJy
cnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJy
cnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJy
cnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJy
cnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJy
cnJycnJycnJycnJycnJycnJyJzsKLSAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGJhcik7
Ci19Ci0KLWZ1bmN0aW9uIGhhbmRsZUNsaWNrKGV2ZW50KQotewotICAgIHZhciBoYW5kbGVyID0g
bmV3IENsaWNrSGFuZGxlcigpOwotICAgIGhhbmRsZXIuaGFuZGxlKGV2ZW50KTsKLX0KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlcy9jb21waWxl
ci1zb3VyY2UtbWFwcGluZy1wcm92aWRlci9mb28uanMgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2luc3BlY3Rvci9yZXNvdXJjZXMvY29tcGlsZXItc291cmNlLW1hcHBpbmctcHJvdmlkZXIvZm9v
LmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiY2U3OGE2ZmZkNzZiYmNkODdkYjYw
MmJmY2I5MDA3OWM0MjM4ODI0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlcy9jb21w
aWxlci1zb3VyY2UtbWFwcGluZy1wcm92aWRlci9mb28uanMKKysrIC9kZXYvbnVsbApAQCAtMSwx
MCArMCwwIEBACi1mdW5jdGlvbiBDbGlja0hhbmRsZXIoKQotewotfQotCi1DbGlja0hhbmRsZXIu
cHJvdG90eXBlLmhhbmRsZSA9IGZ1bmN0aW9uKGV2ZW50KQotewotICAgIHZhciBlbGVtZW50ID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7Ci0gICAgZWxlbWVudC50ZXh0Q29udGVudCA9
IGV2ZW50LnRpbWVTdGFtcDsKLSAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGVsZW1lbnQp
OwotfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3Vy
Y2VzL3NvdXJjZS1tYXAuanNvbiBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Jl
c291cmNlcy9zb3VyY2UtbWFwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTM1Mjc2MzQ3MzZiOTA1NDcyNTA5
NjdkMGYxNDhmYjEzNTdkYzUyZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlcy9zb3VyY2UtbWFwLmpzb24KQEAgLTAsMCArMSw3IEBA
Cit7CisidmVyc2lvbiI6MywKKyJsaW5lQ291bnQiOjIsCisibWFwcGluZ3MiOiJBQUNBQSxNQUFB
QyxPQUFBLENBQXdCQyxRQUFBLEVBQ3hCLENBQ0ksSUFBSUMsRUFBTUMsUUFBQUMsY0FBc0IsQ0FB
QyxLQUFELENBQ2hDRixFQUFBRyxZQUFBLENBQWtCLEtBQ2xCSCxFQUFBSSxpQkFBb0IsQ0FBQyxP
QUFELENBQVVDLFdBQVYsQ0FBdUIsQ0FBQSxDQUF2QixDQUNwQkosU0FBQUssS0FBQUMsWUFBeUIs
Q0FBQ1AsQ0FBRCxDQUVyQlEsRUFBQUEsQ0FBTVAsUUFBQUMsY0FBc0IsQ0FBQyxLQUFELENBQ2hD
TSxFQUFBTCxZQUFBLENBQWtCLG9jQUNsQkY7UUFBQUssS0FBQUMsWUFBeUIsQ0FBQ0MsQ0FBRCxD
QVI3QixDQVdTSCxTQUFBQSxZQUFXLENBQUNJLENBQUQsQ0FDcEIsQ0FFSUMsQ0FEOEJDLElBQVpD
LFlBQ2xCRixRQUFjLENBQUNELENBQUQsQ0FGbEIsQ0NiU0csUUFBQUEsYUFBWSxFQUNyQixFQUdB
QSxZQUFBQyxVQUFBSCxPQUFBLENBQXdDSSxRQUFBLENBQUNMLENBQUQsQ0FDeEMsQ0FDSSxJQUFJ
TSxFQUFVZCxRQUFBQyxjQUFzQixDQUFDLEtBQUQsQ0FDcENhLEVBQUFaLFlBQUEsQ0FBc0JNLENB
QUFPLFVBQ3RCZixTQUFBSyxLQUFBQyxZQUF5QixDQUFDUSxDQUFELENBSDdCOyIsCisic291cmNl
cyI6WyJzb3VyY2UxLmpzIiwic291cmNlMi5qcyJdLAorIm5hbWVzIjpbIndpbmRvdyIsIm9ubG9h
ZCIsIndpbmRvdy5vbmxvYWQiLCJmb28iLCJkb2N1bWVudCIsImNyZWF0ZUVsZW1lbnQiLCJ0ZXh0
Q29udGVudCIsImFkZEV2ZW50TGlzdGVuZXIiLCJoYW5kbGVDbGljayIsImJvZHkiLCJhcHBlbmRD
aGlsZCIsImJhciIsImV2ZW50IiwiaGFuZGxlIiwiaGFuZGxlciIsIkNsaWNrSGFuZGxlciIsInBy
b3RvdHlwZSIsIkNsaWNrSGFuZGxlci5wcm90b3R5cGUuaGFuZGxlIiwiZWxlbWVudCIsInRpbWVT
dGFtcCJdCit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9y
ZXNvdXJjZXMvc291cmNlMS5qcyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Jl
c291cmNlcy9zb3VyY2UxLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlYzM1ODg2YzA2ZTBjMjU5ZDg3YzQ2YWQx
ZWYzNGJlMDY1ZmUxOGIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2luc3BlY3Rvci9yZXNvdXJjZXMvc291cmNlMS5qcwpAQCAtMCwwICsxLDE3IEBACit3aW5kb3cu
b25sb2FkID0gZnVuY3Rpb24oKQoreworICAgIHZhciBmb28gPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCdkaXYnKTsKKyAgICBmb28udGV4dENvbnRlbnQgPSAnZm9vJzsKKyAgICBmb28uYWRkRXZl
bnRMaXN0ZW5lcignY2xpY2snLCBoYW5kbGVDbGljaywgdHJ1ZSk7CisgICAgZG9jdW1lbnQuYm9k
eS5hcHBlbmRDaGlsZChmb28pOworCisgICAgdmFyIGJhciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoJ2RpdicpOworICAgIGJhci50ZXh0Q29udGVudCA9ICdiYXJycnJycnJycnJycnJycnJycnJy
cnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJy
cnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJy
cnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJy
cnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJy
cnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJy
cnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJy
cnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJy
cnJycnJycnJycnJycnJycnJycnJycnJycnJycnInOworICAgIGRvY3VtZW50LmJvZHkuYXBwZW5k
Q2hpbGQoYmFyKTsKK30KKworZnVuY3Rpb24gaGFuZGxlQ2xpY2soZXZlbnQpCit7CisgICAgdmFy
IGhhbmRsZXIgPSBuZXcgQ2xpY2tIYW5kbGVyKCk7CisgICAgaGFuZGxlci5oYW5kbGUoZXZlbnQp
OworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3Vy
Y2VzL3NvdXJjZTIuanMgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJj
ZXMvc291cmNlMi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iY2U3OGE2ZmZkNzZiYmNkODdkYjYwMmJmY2I5MDA3
OWM0MjM4ODI0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNw
ZWN0b3IvcmVzb3VyY2VzL3NvdXJjZTIuanMKQEAgLTAsMCArMSwxMCBAQAorZnVuY3Rpb24gQ2xp
Y2tIYW5kbGVyKCkKK3sKK30KKworQ2xpY2tIYW5kbGVyLnByb3RvdHlwZS5oYW5kbGUgPSBmdW5j
dGlvbihldmVudCkKK3sKKyAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
J2RpdicpOworICAgIGVsZW1lbnQudGV4dENvbnRlbnQgPSBldmVudC50aW1lU3RhbXA7CisgICAg
ZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChlbGVtZW50KTsKK30KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9jb21waWxlci1zb3VyY2UtbWFwcGluZy5odG1sIGIv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL2NvbXBpbGVyLXNvdXJjZS1tYXBwaW5nLmh0
bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUwNzc3ZTQxOGNkYTg1OGI1N2JhOGI4
ZWE1OGFiYTY5YWMyOTUyNTAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL2NvbXBpbGVyLXNvdXJjZS1t
YXBwaW5nLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw5OSArMCwwIEBACi08aHRtbD4KLTxoZWFk
PgotPHNjcmlwdCBzcmM9Ii4uLy4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0
LmpzIj48L3NjcmlwdD4KLQotPHNjcmlwdD4KLQotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgZnVu
Y3Rpb24gY2hlY2tNYXBwaW5nKGNvbXBpbGVkTGluZU51bWJlciwgY29tcGlsZWRDb2x1bW5OdW1i
ZXIsIHNvdXJjZVVSTCwgc291cmNlTGluZU51bWJlciwgc291cmNlQ29sdW1uTnVtYmVyLCBtYXBw
aW5nKQotICAgIHsKLSAgICAgICAgdmFyIHNvdXJjZUxvY2F0aW9uID0gbWFwcGluZy5jb21waWxl
ZExvY2F0aW9uVG9Tb3VyY2VMb2NhdGlvbihjb21waWxlZExpbmVOdW1iZXIsIGNvbXBpbGVkQ29s
dW1uTnVtYmVyKTsKLSAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHMoc291cmNlVVJM
LCBzb3VyY2VMb2NhdGlvbi5zb3VyY2VVUkwpOwotICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2Vy
dEVxdWFscyhzb3VyY2VMaW5lTnVtYmVyLCBzb3VyY2VMb2NhdGlvbi5saW5lTnVtYmVyKTsKLSAg
ICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHMoc291cmNlQ29sdW1uTnVtYmVyLCBzb3Vy
Y2VMb2NhdGlvbi5jb2x1bW5OdW1iZXIpOwotICAgIH0KLQotICAgIGZ1bmN0aW9uIGNoZWNrUmV2
ZXJzZU1hcHBpbmcoY29tcGlsZWRMaW5lTnVtYmVyLCBjb21waWxlZENvbHVtbk51bWJlciwgc291
cmNlVVJMLCBzb3VyY2VMaW5lTnVtYmVyLCBtYXBwaW5nKQotICAgIHsKLSAgICAgICAgdmFyIGNv
bXBpbGVkTG9jYXRpb24gPSBtYXBwaW5nLnNvdXJjZUxvY2F0aW9uVG9Db21waWxlZExvY2F0aW9u
KHNvdXJjZVVSTCwgc291cmNlTGluZU51bWJlcik7Ci0gICAgICAgIEluc3BlY3RvclRlc3QuYXNz
ZXJ0RXF1YWxzKGNvbXBpbGVkTGluZU51bWJlciwgY29tcGlsZWRMb2NhdGlvbi5saW5lTnVtYmVy
KTsKLSAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHMoY29tcGlsZWRDb2x1bW5OdW1i
ZXIsIGNvbXBpbGVkTG9jYXRpb24uY29sdW1uTnVtYmVyKTsKLSAgICB9Ci0KLSAgICBJbnNwZWN0
b3JUZXN0LnJ1blRlc3RTdWl0ZShbCi0gICAgICAgIGZ1bmN0aW9uIHRlc3RTaW1wbGVNYXBwaW5n
KG5leHQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIC8qCi0gICAgICAgICAgICAgICAgZXhhbXBs
ZS5qczoKLSAgICAgICAgICAgICAgICAwICAgICAgICAgMSAgICAgICAgIDIgICAgICAgICAzCi0g
ICAgICAgICAgICAgICAgMDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Ci0gICAg
ICAgICAgICAgICAgZnVuY3Rpb24gYWRkKHZhcmlhYmxlX3gsIHZhcmlhYmxlX3kpCi0gICAgICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gdmFyaWFibGVfeCArIHZhcmlh
YmxlX3k7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgdmFyIGdsb2JhbCA9
ICJmb28iOwotICAgICAgICAgICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KLSAgICAgICAgICAgICAgICBleGFtcGxlLWNvbXBpbGVkLmpzOgotICAgICAgICAg
ICAgICAgIDAgICAgICAgICAxICAgICAgICAgMiAgICAgICAgIDMKLSAgICAgICAgICAgICAgICAw
MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDUKLSAgICAgICAgICAgICAgICBmdW5j
dGlvbiBhZGQoYSxiKXtyZXR1cm4gYStifXZhciBnbG9iYWw9ImZvbyI7Ci0gICAgICAgICAgICAq
LwotICAgICAgICAgICAgdmFyIG1hcHBpbmdQYXlsb2FkID0gewotICAgICAgICAgICAgICAgICJt
YXBwaW5ncyI6IkFBQVNBLFFBQUFBLElBQUcsQ0FBQ0MsQ0FBRCxDQUFhQyxDQUFiLENBQ1osQ0FD
SSxNQUFPRCxFQUFQLENBQW9CQyxDQUR4QixDQUlBLElBQUlDLE9BQVM7IiwKLSAgICAgICAgICAg
ICAgICAic291cmNlcyI6WyJleGFtcGxlLmpzIl0KLSAgICAgICAgICAgIH07Ci0gICAgICAgICAg
ICB2YXIgbWFwcGluZyA9IG5ldyBXZWJJbnNwZWN0b3IuQ2xvc3VyZUNvbXBpbGVyU291cmNlTWFw
cGluZyhtYXBwaW5nUGF5bG9hZCk7Ci0KLSAgICAgICAgICAgIGNoZWNrTWFwcGluZygwLCA5LCAi
ZXhhbXBsZS5qcyIsIDAsIDksIG1hcHBpbmcpOwotICAgICAgICAgICAgY2hlY2tNYXBwaW5nKDAs
IDEzLCAiZXhhbXBsZS5qcyIsIDAsIDEzLCBtYXBwaW5nKTsKLSAgICAgICAgICAgIGNoZWNrTWFw
cGluZygwLCAxNSwgImV4YW1wbGUuanMiLCAwLCAyNSwgbWFwcGluZyk7Ci0gICAgICAgICAgICBj
aGVja01hcHBpbmcoMCwgMTgsICJleGFtcGxlLmpzIiwgMiwgNCwgbWFwcGluZyk7Ci0gICAgICAg
ICAgICBjaGVja01hcHBpbmcoMCwgMjUsICJleGFtcGxlLmpzIiwgMiwgMTEsIG1hcHBpbmcpOwot
ICAgICAgICAgICAgY2hlY2tNYXBwaW5nKDAsIDI3LCAiZXhhbXBsZS5qcyIsIDIsIDI0LCBtYXBw
aW5nKTsKLQotICAgICAgICAgICAgY2hlY2tSZXZlcnNlTWFwcGluZygwLCAwLCAiZXhhbXBsZS5q
cyIsIDAsIG1hcHBpbmcpOwotICAgICAgICAgICAgY2hlY2tSZXZlcnNlTWFwcGluZygwLCAxNywg
ImV4YW1wbGUuanMiLCAxLCBtYXBwaW5nKTsKLSAgICAgICAgICAgIGNoZWNrUmV2ZXJzZU1hcHBp
bmcoMCwgMTgsICJleGFtcGxlLmpzIiwgMiwgbWFwcGluZyk7Ci0gICAgICAgICAgICBjaGVja1Jl
dmVyc2VNYXBwaW5nKDAsIDI5LCAiZXhhbXBsZS5qcyIsIDQsIG1hcHBpbmcpOwotICAgICAgICAg
ICAgY2hlY2tSZXZlcnNlTWFwcGluZygwLCAyOSwgImV4YW1wbGUuanMiLCA1LCBtYXBwaW5nKTsK
LSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0VHJ1ZSghbWFwcGluZy5zb3VyY2VMb2Nh
dGlvblRvQ29tcGlsZWRMb2NhdGlvbigiZXhhbXBsZS5qcyIsIDYpKTsKLQotICAgICAgICAgICAg
bmV4dCgpOwotICAgICAgICB9LAotCi0gICAgICAgIGZ1bmN0aW9uIHRlc3ROb01hcHBpbmdFbnRy
eShuZXh0KQotICAgICAgICB7Ci0gICAgICAgICAgICB2YXIgbWFwcGluZ1BheWxvYWQgPSB7Ci0g
ICAgICAgICAgICAgICAgIm1hcHBpbmdzIjoiQUFBQSxDLENBQUU7IiwKLSAgICAgICAgICAgICAg
ICAic291cmNlcyI6WyJleGFtcGxlLmpzIl0KLSAgICAgICAgICAgIH07Ci0gICAgICAgICAgICB2
YXIgbWFwcGluZyA9IG5ldyBXZWJJbnNwZWN0b3IuQ2xvc3VyZUNvbXBpbGVyU291cmNlTWFwcGlu
ZyhtYXBwaW5nUGF5bG9hZCk7Ci0gICAgICAgICAgICBjaGVja01hcHBpbmcoMCwgMCwgImV4YW1w
bGUuanMiLCAwLCAwLCBtYXBwaW5nKTsKLSAgICAgICAgICAgIGNoZWNrTWFwcGluZygwLCAyLCAi
ZXhhbXBsZS5qcyIsIDAsIDIsIG1hcHBpbmcpOwotICAgICAgICAgICAgbmV4dCgpOwotICAgICAg
ICB9LAotCi0gICAgICAgIGZ1bmN0aW9uIHRlc3RFbXB0eUxpbmUobmV4dCkKLSAgICAgICAgewot
ICAgICAgICAgICAgdmFyIG1hcHBpbmdQYXlsb2FkID0gewotICAgICAgICAgICAgICAgICJtYXBw
aW5ncyI6IkFBQUE7OztDQUNBIiwKLSAgICAgICAgICAgICAgICAic291cmNlcyI6WyJleGFtcGxl
LmpzIl0KLSAgICAgICAgICAgIH07Ci0gICAgICAgICAgICB2YXIgbWFwcGluZyA9IG5ldyBXZWJJ
bnNwZWN0b3IuQ2xvc3VyZUNvbXBpbGVyU291cmNlTWFwcGluZyhtYXBwaW5nUGF5bG9hZCk7Ci0g
ICAgICAgICAgICBjaGVja01hcHBpbmcoMCwgMCwgImV4YW1wbGUuanMiLCAwLCAwLCBtYXBwaW5n
KTsKLSAgICAgICAgICAgIGNoZWNrUmV2ZXJzZU1hcHBpbmcoMywgMSwgImV4YW1wbGUuanMiLCAx
LCBtYXBwaW5nKTsKLSAgICAgICAgICAgIG5leHQoKTsKLSAgICAgICAgfQotICAgIF0pOwotfTsK
LQotPC9zY3JpcHQ+Ci0KLTwvaGVhZD4KLQotPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgotPHA+
VGVzdHMgQ2xvc3VyZUNvbXBpbGVyU291cmNlTWFwcGluZy48L3A+Ci08L2JvZHk+Ci08L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvcmF3LXNvdXJjZS1j
b2RlLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvcmF3LXNvdXJjZS1jb2Rl
Lmh0bWwKaW5kZXggNTY3M2EwYzNlYWUyMmNlODJlYzE3OTFiYTljNzZiOTQ4YjU5NmFkNi4uMzRh
YzkyZDQ4MzZkNDdmMjNlODYzNzQ2YTY5MjViZDlmNjQ0ZDk2ZiAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3Jhdy1zb3VyY2UtY29kZS5odG1sCisrKyBiL0xheW91
dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9yYXctc291cmNlLWNvZGUuaHRtbApAQCAtMzM5LDMx
ICszMzksMjMgQEAgZnVuY3Rpb24gdGVzdCgpCiAKICAgICAgICAgZnVuY3Rpb24gdGVzdENvbXBp
bGVyU291cmNlTWFwcGluZyhuZXh0KQogICAgICAgICB7Ci0gICAgICAgICAgICBmdW5jdGlvbiBj
cmVhdGVDb21waWxlclNvdXJjZU1hcHBpbmdNb2NrKCkKLSAgICAgICAgICAgIHsKLSAgICAgICAg
ICAgICAgICByZXR1cm4gewotICAgICAgICAgICAgICAgICAgICBjb21waWxlZExvY2F0aW9uVG9T
b3VyY2VMb2NhdGlvbjogZnVuY3Rpb24obGluZU51bWJlciwgY29sdW1uTnVtYmVyKQotICAgICAg
ICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAobGluZU51bWJlciA8
IDEwKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7IHNvdXJjZVVSTDogInNv
dXJjZTEuanMiLCBsaW5lTnVtYmVyOiBsaW5lTnVtYmVyICogMiwgY29sdW1uTnVtYmVyOiBjb2x1
bW5OdW1iZXIgKiAyIH07Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4geyBzb3VyY2VV
Ukw6ICJzb3VyY2UyLmpzIiwgbGluZU51bWJlcjogKGxpbmVOdW1iZXIgLSAxMCkgKiAyLCBjb2x1
bW5OdW1iZXI6IGNvbHVtbk51bWJlciAqIDIgfTsKLSAgICAgICAgICAgICAgICAgICAgfSwKLSAg
ICAgICAgICAgICAgICAgICAgc291cmNlTG9jYXRpb25Ub0NvbXBpbGVkTG9jYXRpb246IGZ1bmN0
aW9uKHNvdXJjZVVSTCwgbGluZU51bWJlcikKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKHNvdXJjZVVSTCA9PT0gInNvdXJjZTEuanMiKQotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7IGxpbmVOdW1iZXI6IE1hdGguZmxvb3IobGlu
ZU51bWJlciAvIDIpLCBjb2x1bW5OdW1iZXI6IDAgfTsKLSAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiB7IGxpbmVOdW1iZXI6IE1hdGguZmxvb3IobGluZU51bWJlciAvIDIpICsgMTAsIGNv
bHVtbk51bWJlcjogMCB9OwotICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAg
ICAgICBzb3VyY2VzOiBmdW5jdGlvbigpIHsgcmV0dXJuIFsic291cmNlMS5qcyIsICJzb3VyY2Uy
LmpzIl07IH0KLSAgICAgICAgICAgICAgICB9OwotICAgICAgICAgICAgfQotICAgICAgICAgICAg
ZnVuY3Rpb24gY3JlYXRlQ29tcGlsZXJTb3VyY2VNYXBwaW5nUHJvdmlkZXJNb2NrKCkKLSAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gewotICAgICAgICAgICAgICAgICAgICBs
b2FkU291cmNlTWFwcGluZzogZnVuY3Rpb24oY2FsbGJhY2spIHsgY2FsbGJhY2soY3JlYXRlQ29t
cGlsZXJTb3VyY2VNYXBwaW5nTW9jaygpKTsgfSwKLSAgICAgICAgICAgICAgICAgICAgbG9hZFNv
dXJjZUNvZGU6IGZ1bmN0aW9uKHVybCwgY2FsbGJhY2spIHsgY2FsbGJhY2soIjxjb250ZW50IG9m
ICIgKyB1cmwgKyAiPiIpOyB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQorICAg
ICAgICAgICAgdmFyIGNvbXBpbGVyU291cmNlTWFwcGluZ01vY2sgPSB7CisgICAgICAgICAgICAg
ICAgY29tcGlsZWRMb2NhdGlvblRvU291cmNlTG9jYXRpb246IGZ1bmN0aW9uKGxpbmVOdW1iZXIs
IGNvbHVtbk51bWJlcikKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIGlm
IChsaW5lTnVtYmVyIDwgMTApCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4geyBzb3Vy
Y2VVUkw6ICJzb3VyY2UxLmpzIiwgbGluZU51bWJlcjogbGluZU51bWJlciAqIDIsIGNvbHVtbk51
bWJlcjogY29sdW1uTnVtYmVyICogMiB9OworICAgICAgICAgICAgICAgICAgICByZXR1cm4geyBz
b3VyY2VVUkw6ICJzb3VyY2UyLmpzIiwgbGluZU51bWJlcjogKGxpbmVOdW1iZXIgLSAxMCkgKiAy
LCBjb2x1bW5OdW1iZXI6IGNvbHVtbk51bWJlciAqIDIgfTsKKyAgICAgICAgICAgICAgICB9LAor
ICAgICAgICAgICAgICAgIHNvdXJjZUxvY2F0aW9uVG9Db21waWxlZExvY2F0aW9uOiBmdW5jdGlv
bihzb3VyY2VVUkwsIGxpbmVOdW1iZXIpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgICAgICBpZiAoc291cmNlVVJMID09PSAic291cmNlMS5qcyIpCisgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4geyBsaW5lTnVtYmVyOiBNYXRoLmZsb29yKGxpbmVOdW1iZXIgLyAyKSwg
Y29sdW1uTnVtYmVyOiAwIH07CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB7IGxpbmVOdW1i
ZXI6IE1hdGguZmxvb3IobGluZU51bWJlciAvIDIpICsgMTAsIGNvbHVtbk51bWJlcjogMCB9Owor
ICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgc291cmNlczogZnVuY3Rpb24oKSB7
IHJldHVybiBbInNvdXJjZTEuanMiLCAic291cmNlMi5qcyJdOyB9LAorICAgICAgICAgICAgICAg
IGxvYWQ6IGZ1bmN0aW9uKGNhbGxiYWNrKSB7IGNhbGxiYWNrKHRydWUpOyB9LAorICAgICAgICAg
ICAgICAgIGxvYWRTb3VyY2VDb2RlOiBmdW5jdGlvbih1cmwsIGNhbGxiYWNrKSB7IGNhbGxiYWNr
KCI8Y29udGVudCBvZiAiICsgdXJsICsgIj4iKTsgfQorICAgICAgICAgICAgfTsKIAogICAgICAg
ICAgICAgdmFyIHNjcmlwdCA9IGNyZWF0ZVNjcmlwdE1vY2soImNvbXBpbGVkLmpzIiwgMCwgMCwg
dHJ1ZSwgIjxzY3JpcHQgc291cmNlPiIpOwogICAgICAgICAgICAgdmFyIHJlc291cmNlID0gY3Jl
YXRlUGVuZGluZ1Jlc291cmNlTW9jaygic2NyaXB0IiwgIjxyZXNvdXJjZSBjb250ZW50PiIpOwpA
QCAtMzcxLDcgKzM2Myw3IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICAgICAgdmFyIHVpU291
cmNlQ29kZUxpc3Q7CiAKICAgICAgICAgICAgIHdhaXRGb3JTb3VyY2VNYXBwaW5nRXZlbnQocmF3
U291cmNlQ29kZSwgY2hlY2tNYXBwaW5nKTsKLSAgICAgICAgICAgIHJhd1NvdXJjZUNvZGUuc2V0
Q29tcGlsZXJTb3VyY2VNYXBwaW5nUHJvdmlkZXIoY3JlYXRlQ29tcGlsZXJTb3VyY2VNYXBwaW5n
UHJvdmlkZXJNb2NrKCkpOworICAgICAgICAgICAgcmF3U291cmNlQ29kZS5zZXRDb21waWxlclNv
dXJjZU1hcHBpbmcoY29tcGlsZXJTb3VyY2VNYXBwaW5nTW9jayk7CiAgICAgICAgICAgICBmdW5j
dGlvbiBjaGVja01hcHBpbmcoKQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIHZhciBz
b3VyY2VNYXBwaW5nID0gcmF3U291cmNlQ29kZS5zb3VyY2VNYXBwaW5nOwpAQCAtNDA0LDE0ICsz
OTYsMTQgQEAgZnVuY3Rpb24gdGVzdCgpCiAKICAgICAgICAgZnVuY3Rpb24gdGVzdENvbXBpbGVy
U291cmNlTWFwcGluZ0NvdWxkTm90QmVMb2FkZWQobmV4dCkKICAgICAgICAgewotICAgICAgICAg
ICAgdmFyIGNvbXBpbGVyU291cmNlTWFwcGluZ1Byb3ZpZGVyTW9jayA9IHsgbG9hZFNvdXJjZU1h
cHBpbmc6IGZ1bmN0aW9uKGNhbGxiYWNrKSB7IGNhbGxiYWNrKG51bGwpOyB9IH07CisgICAgICAg
ICAgICB2YXIgY29tcGlsZXJTb3VyY2VNYXBwaW5nTW9jayA9IHsgbG9hZDogZnVuY3Rpb24oY2Fs
bGJhY2spIHsgY2FsbGJhY2soZmFsc2UpOyB9IH07CiAKICAgICAgICAgICAgIHZhciBzY3JpcHQg
PSBjcmVhdGVTY3JpcHRNb2NrKCJjb21waWxlZC5qcyIsIDAsIDAsIHRydWUsICI8c2NyaXB0IHNv
dXJjZT4iKTsKICAgICAgICAgICAgIHZhciByYXdTb3VyY2VDb2RlID0gY3JlYXRlUmF3U291cmNl
Q29kZShzY3JpcHQsIG51bGwpOwogICAgICAgICAgICAgdmFyIHVpU291cmNlQ29kZUxpc3Q7CiAK
ICAgICAgICAgICAgIHdhaXRGb3JTb3VyY2VNYXBwaW5nRXZlbnQocmF3U291cmNlQ29kZSwgY2hl
Y2tNYXBwaW5nKTsKLSAgICAgICAgICAgIHJhd1NvdXJjZUNvZGUuc2V0Q29tcGlsZXJTb3VyY2VN
YXBwaW5nUHJvdmlkZXIoY29tcGlsZXJTb3VyY2VNYXBwaW5nUHJvdmlkZXJNb2NrKTsKKyAgICAg
ICAgICAgIHJhd1NvdXJjZUNvZGUuc2V0Q29tcGlsZXJTb3VyY2VNYXBwaW5nKGNvbXBpbGVyU291
cmNlTWFwcGluZ01vY2spOwogCiAgICAgICAgICAgICBmdW5jdGlvbiBjaGVja01hcHBpbmcoKQog
ICAgICAgICAgICAgewo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>113472</attachid>
            <date>2011-11-03 06:18:17 -0700</date>
            <delta_ts>2011-11-09 23:30:54 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-71301-20111103171814.patch</filename>
            <type>text/plain</type>
            <size>43308</size>
            <attacher name="Pavel Podivilov">podivilov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTkwNzUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBmZjNiNDZkMmNjYmE4Njhi
ZWQ4NzQ2OGU0NGM3MmMxYjI5N2U2MTVkLi5lNTA0NGIwYTQyYWNhYmNiYmNhNmU1NjZkMzM2OWJl
ZjYzZjI5NmZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDAgQEAKKzIwMTEtMTEtMDEgIFBhdmVs
IFBvZGl2aWxvdiAgPHBvZGl2aWxvdkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3Bl
Y3RvcjogbG9hZCBzb3VyY2UgbWFwcyB2aWEgZnJvbnQtZW5kIGhvc3QuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MTMwMQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEN1cnJlbnRseSB3ZSB1c2UgYW4gYXV4
aWxpYXJ5IGlmcmFtZSBoYWNrIHRvIGxvYWQgc291cmNlIG1hcCBmaWxlcyBmcm9tIGluc3BlY3Rv
ciBwYWdlLiBUaGlzIGFwcHJvYWNoIGhhcyBzZXZlcmFsIGRyYXdiYWNrczoKKyAgICAgICAgIC0g
aW4gYWRkaXRpb24gdG8gc291cmNlIG1hcCB1cmwgd2UgbmVlZCB0byBrbm93IGF1eGlsaWFyeSBp
ZnJhbWUgdXJsCisgICAgICAgICAtIHdlIG5lZWQgYSBwcm90b2NvbCB0byBjb21tdW5pY2F0ZSB3
aXRoIGlmcmFtZQorICAgICAgICAgLSBzb3VyY2UgbWFwIHByb3ZpZGVyIG5lZWRzIHRvIHByb3Zp
ZGUgYXV4aWxpYXJ5IGRvY3VtZW50IHRvIG1ha2Ugb3VyIGhhY2sgd29yaworICAgICAgICBMb2Fk
aW5nIHNvdXJjZSBtYXBzIGZyb20gZnJvbnQtZW5kIGhvc3Qgc29sdmVzIGFsbCBwcm9ibGVtcy4K
KworICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJD
b3JlLnZjcHJvajoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kSG9zdDo6bG9hZFJlc291cmNl
U3luY2hyb25vdXNseSk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9z
dC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuaWRsOgorICAg
ICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvQ29tcGlsZXJTb3VyY2VNYXBwaW5nLmpzOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLkNsb3N1cmVDb21waWxlclNvdXJjZU1hcHBpbmcpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLkNsb3N1cmVDb21waWxlclNvdXJjZU1hcHBpbmcucHJvdG90eXBlLmxv
YWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNsb3N1cmVDb21waWxlclNvdXJjZU1hcHBpbmcu
cHJvdG90eXBlLmxvYWRTb3VyY2VDb2RlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DbG9zdXJl
Q29tcGlsZXJTb3VyY2VNYXBwaW5nLnByb3RvdHlwZS5fcGFyc2VNYXBwaW5nUGF5bG9hZCk6Cisg
ICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9Db21waWxlclNvdXJjZU1hcHBpbmdQcm92aWRl
ci5qczogUmVtb3ZlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0NvbnRlbnRQcm92
aWRlcnMuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29tcGlsZXJTb3VyY2VNYXBwaW5nQ29u
dGVudFByb3ZpZGVyKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db21waWxlclNvdXJjZU1hcHBp
bmdDb250ZW50UHJvdmlkZXIucHJvdG90eXBlLnJlcXVlc3RDb250ZW50KToKKyAgICAgICAgKiBp
bnNwZWN0b3IvZnJvbnQtZW5kL1Jhd1NvdXJjZUNvZGUuanM6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuUmF3U291cmNlQ29kZS5wcm90b3R5cGUuc2V0Q29tcGlsZXJTb3VyY2VNYXBwaW5nKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5SYXdTb3VyY2VDb2RlLnByb3RvdHlwZS5fcmVzb3VyY2VGaW5p
c2hlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmF3U291cmNlQ29kZS5wcm90b3R5cGUuX2Ny
ZWF0ZVNvdXJjZU1hcHBpbmcuZGlkTG9hZFNvdXJjZU1hcHBpbmcpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9mcm9udC1lbmQvV2ViS2l0LnFyYzoKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5k
L2luc3BlY3Rvci5odG1sOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9y
LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLmluc3RhbGxTb3VyY2VNYXBwaW5nRm9yVGVzdCk6
CisKIDIwMTEtMTEtMDIgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgUkVHUkVTU0lPTihyOTY4NzApOiBXZWJLaXQgZ2VuZXJhdGVzIGJhY2tncm91bmQ6IHRyYW5z
cGFyZW50IG9uIGJsb2dnZXIuY29tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggNGJiNjI0NzAwMTMzMzJj
N2RlZjUxOGFmODRjOGIxZWU4NWY3YzU5Ni4uNWM0MDYxM2MyMGMyMDk1YjQwYzQ4OWE2MGMyZTE2
OTMwMmJhZjBlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtNjI2Myw3ICs2MjYzLDYgQEAKICAgICAg
ICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0NoZWNrYm94LmpzJywKICAgICAgICAgICAgICdp
bnNwZWN0b3IvZnJvbnQtZW5kL0NvbG9yLmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJv
bnQtZW5kL0NvbXBpbGVyU291cmNlTWFwcGluZy5qcycsCi0gICAgICAgICAgICAnaW5zcGVjdG9y
L2Zyb250LWVuZC9Db21waWxlclNvdXJjZU1hcHBpbmdQcm92aWRlci5qcycsCiAgICAgICAgICAg
ICAnaW5zcGVjdG9yL2Zyb250LWVuZC9Db25zb2xlTWVzc2FnZS5qcycsCiAgICAgICAgICAgICAn
aW5zcGVjdG9yL2Zyb250LWVuZC9Db25zb2xlTW9kZWwuanMnLAogICAgICAgICAgICAgJ2luc3Bl
Y3Rvci9mcm9udC1lbmQvQ29uc29sZVBhbmVsLmpzJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5kZXggYmNlYTUzZTNiY2YxMjRjOWUzY2Y5NTMxMGNh
NDE5NGM2MTM4NWRmZS4uODQ5NDdjNDIxNTVmNTQwMTA2YWE3NjRjZGIzMWI0MjZhODIzYTRiNyAx
MDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oK
KysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAgLTY4
NTYxLDEwICs2ODU2MSw2IEBACiAJCQkJCT4KIAkJCQk8L0ZpbGU+CiAJCQkJPEZpbGUKLQkJCQkJ
UmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcZnJvbnQtZW5kXENvbXBpbGVyU291cmNlTWFwcGlu
Z1Byb3ZpZGVyLmpzIgotCQkJCQk+Ci0JCQkJPC9GaWxlPgotCQkJCTxGaWxlCiAJCQkJCVJlbGF0
aXZlUGF0aD0iLi5caW5zcGVjdG9yXGZyb250LWVuZFxDb25zb2xlTWVzc2FnZS5qcyIKIAkJCQkJ
PgogCQkJCTwvRmlsZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JGcm9udGVuZEhvc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckZyb250ZW5kSG9zdC5jcHAKaW5kZXggZDJhNzAzMzdlZmIwYzUzYWY2NDVkOGRiYzVlZjFhNGJk
YmI5ZGJkMy4uOWY0OWI0ZGQzNGYzYWI4ZWEyOTczNzA0OTEwNGNhNDVjMWY1MDVkMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5jcHAK
QEAgLTI1MSw2ICsyNTEsMTggQEAgdm9pZCBJbnNwZWN0b3JGcm9udGVuZEhvc3Q6OnNob3dDb250
ZXh0TWVudShFdmVudCogZXZlbnQsIGNvbnN0IFZlY3RvcjxDb250ZXh0TWUKIH0KICNlbmRpZgog
CitTdHJpbmcgSW5zcGVjdG9yRnJvbnRlbmRIb3N0Ojpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5
KGNvbnN0IFN0cmluZyYgdXJsKQoreworICAgIFJlc291cmNlUmVxdWVzdCByZXF1ZXN0KHVybCk7
CisgICAgcmVxdWVzdC5zZXRIVFRQTWV0aG9kKCJHRVQiKTsKKworICAgIFZlY3RvcjxjaGFyPiBk
YXRhOworICAgIFJlc291cmNlRXJyb3IgZXJyb3I7CisgICAgUmVzb3VyY2VSZXNwb25zZSByZXNw
b25zZTsKKyAgICBtX2Zyb250ZW5kUGFnZS0+bWFpbkZyYW1lKCktPmxvYWRlcigpLT5sb2FkUmVz
b3VyY2VTeW5jaHJvbm91c2x5KHJlcXVlc3QsIERvTm90QWxsb3dTdG9yZWRDcmVkZW50aWFscywg
ZXJyb3IsIHJlc3BvbnNlLCBkYXRhKTsKKyAgICByZXR1cm4gU3RyaW5nKGRhdGEuZGF0YSgpLCBk
YXRhLnNpemUoKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVO
QUJMRShJTlNQRUNUT1IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yRnJvbnRlbmRIb3N0LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
RnJvbnRlbmRIb3N0LmgKaW5kZXggZGVjZmU5YTk4MDQxZGJmNTJjNWM4Njg0NGRjODY4M2Q5NWZl
NTI1OC4uOTdiNTU4Y2RkZmZhZWM1NzYzZjAzNWJjMWM1ZmU3NTFiMGU4Mzk3NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuaApAQCAtNzks
NiArNzksOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzaG93Q29udGV4dE1lbnUoRXZlbnQqLCBjb25z
dCBWZWN0b3I8Q29udGV4dE1lbnVJdGVtKj4mIGl0ZW1zKTsKICAgICB2b2lkIHNlbmRNZXNzYWdl
VG9CYWNrZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7CiAKKyAgICBTdHJpbmcgbG9hZFJlc291
cmNlU3luY2hyb25vdXNseShjb25zdCBTdHJpbmcmIHVybCk7CisKIHByaXZhdGU6CiAjaWYgRU5B
QkxFKENPTlRFWFRfTUVOVVMpCiAgICAgZnJpZW5kIGNsYXNzIEZyb250ZW5kTWVudVByb3ZpZGVy
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5k
SG9zdC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0
LmlkbAppbmRleCBjYmIwYmFjYjQ1YTQ0YjcwNzJmOGJhNTBhZTMyODE1MTg4OWI4M2JjLi5kYjk0
MzZiZDc4NzYxNWY3YTY0NWQ1NDk5ODE3MWZkZTY4MGE4MzE3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmlkbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmlkbApAQCAtNjAsNSArNjAs
NyBAQCBtb2R1bGUgY29yZSB7CiAgICAgICAgIFtDdXN0b21dIHZvaWQgcmVjb3JkQWN0aW9uVGFr
ZW4oaW4gdW5zaWduZWQgbG9uZyBhY3Rpb25Db2RlKTsKICAgICAgICAgW0N1c3RvbV0gdm9pZCBy
ZWNvcmRQYW5lbFNob3duKGluIHVuc2lnbmVkIGxvbmcgcGFuZWxDb2RlKTsKICAgICAgICAgW0N1
c3RvbV0gdm9pZCByZWNvcmRTZXR0aW5nQ2hhbmdlZChpbiB1bnNpZ25lZCBsb25nIHNldHRpbmdD
aGFuZ2VkKTsKKyAgICAgICAgCisgICAgICAgIERPTVN0cmluZyBsb2FkUmVzb3VyY2VTeW5jaHJv
bm91c2x5KGluIERPTVN0cmluZyB1cmwpOwogICAgIH07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NvbXBpbGVyU291cmNlTWFwcGluZy5qcyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ29tcGlsZXJTb3VyY2VNYXBwaW5nLmpz
CmluZGV4IDc0Y2QxNmIyZTE1OGQzZTg2MTc0NWMyOTYxZmZjYzdiZDBhZDM2ZjQuLjAxMTZlZWVm
YmYxNTkzNTliYzZmOTQzNzJhNDBhOGY3OWY2ZWJhODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ29tcGlsZXJTb3VyY2VNYXBwaW5nLmpzCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ29tcGlsZXJTb3VyY2VNYXBwaW5nLmpz
CkBAIC03MCw5ICs3MCw5IEBAIFdlYkluc3BlY3Rvci5DbG9zdXJlQ29tcGlsZXJTb3VyY2VNYXBw
aW5nUGF5bG9hZCA9IGZ1bmN0aW9uKCkKICAqIGZvciBmb3JtYXQgZGVzY3JpcHRpb24uCiAgKiBA
aW1wbGVtZW50cyB7V2ViSW5zcGVjdG9yLkNvbXBpbGVyU291cmNlTWFwcGluZ30KICAqIEBjb25z
dHJ1Y3RvcgotICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuQ2xvc3VyZUNvbXBpbGVyU291cmNlTWFw
cGluZ1BheWxvYWR9IG1hcHBpbmdQYXlsb2FkCisgKiBAcGFyYW0ge3N0cmluZ30gc291cmNlTWFw
cGluZ1VSTAogICovCi1XZWJJbnNwZWN0b3IuQ2xvc3VyZUNvbXBpbGVyU291cmNlTWFwcGluZyA9
IGZ1bmN0aW9uKG1hcHBpbmdQYXlsb2FkKQorV2ViSW5zcGVjdG9yLkNsb3N1cmVDb21waWxlclNv
dXJjZU1hcHBpbmcgPSBmdW5jdGlvbihzb3VyY2VNYXBwaW5nVVJMKQogewogICAgIGlmICghV2Vi
SW5zcGVjdG9yLkNsb3N1cmVDb21waWxlclNvdXJjZU1hcHBpbmcucHJvdG90eXBlLl9iYXNlNjRN
YXApIHsKICAgICAgICAgY29uc3QgYmFzZTY0RGlnaXRzID0gIkFCQ0RFRkdISUpLTE1OT1BRUlNU
VVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky8iOwpAQCAtODAsMTcg
KzgwLDI4IEBAIFdlYkluc3BlY3Rvci5DbG9zdXJlQ29tcGlsZXJTb3VyY2VNYXBwaW5nID0gZnVu
Y3Rpb24obWFwcGluZ1BheWxvYWQpCiAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYmFzZTY0
RGlnaXRzLmxlbmd0aDsgKytpKQogICAgICAgICAgICAgV2ViSW5zcGVjdG9yLkNsb3N1cmVDb21w
aWxlclNvdXJjZU1hcHBpbmcucHJvdG90eXBlLl9iYXNlNjRNYXBbYmFzZTY0RGlnaXRzLmNoYXJB
dChpKV0gPSBpOwogICAgIH0KLQotICAgIHRoaXMuX3NvdXJjZXMgPSBtYXBwaW5nUGF5bG9hZC5z
b3VyY2VzOwotICAgIHRoaXMuX21hcHBpbmdzID0gW107Ci0gICAgdGhpcy5fcmV2ZXJzZU1hcHBp
bmdzQnlTb3VyY2VVUkwgPSB7fTsKLSAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuX3NvdXJj
ZXMubGVuZ3RoOyArK2kpCi0gICAgICAgIHRoaXMuX3JldmVyc2VNYXBwaW5nc0J5U291cmNlVVJM
W3RoaXMuX3NvdXJjZXNbaV1dID0gW107Ci0gICAgdGhpcy5fcGFyc2VNYXBwaW5ncyhtYXBwaW5n
UGF5bG9hZCk7CisgICAgCisgICAgdGhpcy5fc291cmNlTWFwcGluZ1VSTCA9IHNvdXJjZU1hcHBp
bmdVUkw7CiB9CiAKIFdlYkluc3BlY3Rvci5DbG9zdXJlQ29tcGlsZXJTb3VyY2VNYXBwaW5nLnBy
b3RvdHlwZSA9IHsKICAgICAvKioKKyAgICAgKiBAcmV0dXJuIHtib29sZWFufQorICAgICAqLwor
ICAgIGxvYWQ6IGZ1bmN0aW9uKGNhbGxiYWNrKQorICAgIHsgICAgICAgICAgIAorICAgICAgICB0
cnkgeworICAgICAgICAgICAgLy8gRklYTUU6IG1ha2Ugc2VuZFJlcXVlc3QgYXN5bmMuCisgICAg
ICAgICAgICB2YXIgcmVzcG9uc2UgPSBJbnNwZWN0b3JGcm9udGVuZEhvc3QubG9hZFJlc291cmNl
U3luY2hyb25vdXNseSh0aGlzLl9zb3VyY2VNYXBwaW5nVVJMKTsKKyAgICAgICAgICAgIHRoaXMu
X3BhcnNlTWFwcGluZ1BheWxvYWQoSlNPTi5wYXJzZShyZXNwb25zZSkpOworICAgICAgICAgICAg
cmV0dXJuIHRydWUKKyAgICAgICAgfSBjYXRjaChlKSB7CisgICAgICAgICAgICBjb25zb2xlLmVy
cm9yKGUubWVzc2FnZSk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAg
ICB9LAorICAgICAgIAorICAgIC8qKgogICAgICAqIEBwYXJhbSB7bnVtYmVyfSBsaW5lTnVtYmVy
CiAgICAgICogQHBhcmFtIHtudW1iZXJ9IGNvbHVtbk51bWJlcgogICAgICAqIEByZXR1cm4ge09i
amVjdH0KQEAgLTExOCw2ICsxMjksMjQgQEAgV2ViSW5zcGVjdG9yLkNsb3N1cmVDb21waWxlclNv
dXJjZU1hcHBpbmcucHJvdG90eXBlID0gewogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3Nv
dXJjZXM7CiAgICAgfSwKKyAgICAKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gc291
cmNlVVJMCisgICAgICogQHJldHVybiB7c3RyaW5nfQorICAgICAqLworICAgIGxvYWRTb3VyY2VD
b2RlOiBmdW5jdGlvbihzb3VyY2VVUkwpCisgICAgeworICAgICAgICB0cnkgeworICAgICAgICAg
ICAgdmFyIHJvb3RVUkwgPSB0aGlzLl9zb3VyY2VNYXBwaW5nVVJMLnN1YnN0cmluZygwLCB0aGlz
Ll9zb3VyY2VNYXBwaW5nVVJMLmxhc3RJbmRleE9mKCIvIikgKyAxKTsKKyAgICAgICAgICAgIGlm
ICh0aGlzLl9zb3VyY2VSb290KQorICAgICAgICAgICAgICAgIHJvb3RVUkwgKz0gdGhpcy5fc291
cmNlUm9vdCArICIvIjsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBtYWtlIHNlbmRSZXF1ZXN0IGFz
eW5jLgorICAgICAgICAgICAgcmV0dXJuIEluc3BlY3RvckZyb250ZW5kSG9zdC5sb2FkUmVzb3Vy
Y2VTeW5jaHJvbm91c2x5KHJvb3RVUkwgKyBzb3VyY2VVUkwpOworICAgICAgICB9IGNhdGNoKGUp
IHsKKyAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZS5tZXNzYWdlKTsKKyAgICAgICAgICAgIHJl
dHVybiAiIjsKKyAgICAgICAgfSAgICAgICAgCisgICAgfSwgICAgCiAKICAgICBfZmluZE1hcHBp
bmc6IGZ1bmN0aW9uKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcikKICAgICB7CkBAIC0xMzcsOCAr
MTY2LDE2IEBAIFdlYkluc3BlY3Rvci5DbG9zdXJlQ29tcGlsZXJTb3VyY2VNYXBwaW5nLnByb3Rv
dHlwZSA9IHsKICAgICAgICAgcmV0dXJuIHRoaXMuX21hcHBpbmdzW2ZpcnN0XTsKICAgICB9LAog
Ci0gICAgX3BhcnNlTWFwcGluZ3M6IGZ1bmN0aW9uKG1hcHBpbmdQYXlsb2FkKQorICAgIF9wYXJz
ZU1hcHBpbmdQYXlsb2FkOiBmdW5jdGlvbihtYXBwaW5nUGF5bG9hZCkKICAgICB7CisgICAgICAg
IHRoaXMuX3NvdXJjZVJvb3QgPSBtYXBwaW5nUGF5bG9hZC5zb3VyY2VSb290OworICAgICAgICB0
aGlzLl9zb3VyY2VzID0gbWFwcGluZ1BheWxvYWQuc291cmNlczsKKyAgICAgICAgCisgICAgICAg
IHRoaXMuX21hcHBpbmdzID0gW107CisgICAgICAgIHRoaXMuX3JldmVyc2VNYXBwaW5nc0J5U291
cmNlVVJMID0ge307CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5fc291cmNlcy5s
ZW5ndGg7ICsraSkKKyAgICAgICAgICAgIHRoaXMuX3JldmVyc2VNYXBwaW5nc0J5U291cmNlVVJM
W3RoaXMuX3NvdXJjZXNbaV1dID0gW107CisgICAgICAgIAogICAgICAgICB2YXIgc3RyaW5nQ2hh
ckl0ZXJhdG9yID0gbmV3IFdlYkluc3BlY3Rvci5DbG9zdXJlQ29tcGlsZXJTb3VyY2VNYXBwaW5n
LlN0cmluZ0NoYXJJdGVyYXRvcihtYXBwaW5nUGF5bG9hZC5tYXBwaW5ncyk7CiAKICAgICAgICAg
dmFyIGxpbmVOdW1iZXIgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9Db21waWxlclNvdXJjZU1hcHBpbmdQcm92aWRlci5qcyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ29tcGlsZXJTb3VyY2VNYXBwaW5nUHJvdmlkZXIuanMK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDliNzcwMDJjOWM2YmM4MWFkMzFiOGIyMGMw
YzdkZjhhMDQ3YjdiZjkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Db21waWxlclNvdXJjZU1h
cHBpbmdQcm92aWRlci5qcworKysgL2Rldi9udWxsCkBAIC0xLDEzMCArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3Ry
aWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAq
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotLyoqCi0gKiBA
Y29uc3RydWN0b3IKLSAqIEBwYXJhbSB7c3RyaW5nfSBzb3VyY2VNYXBwaW5nUGFnZVVSTAotICov
Ci1XZWJJbnNwZWN0b3IuQ29tcGlsZXJTb3VyY2VNYXBwaW5nUHJvdmlkZXIgPSBmdW5jdGlvbihz
b3VyY2VNYXBwaW5nUGFnZVVSTCkKLXsKLSAgICBpZiAoIXRoaXMuX2luaXRpYWxpemVkKSB7Ci0g
ICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwgdGhpcy5fb25NZXNzYWdl
LCB0cnVlKTsKLSAgICAgICAgV2ViSW5zcGVjdG9yLkNvbXBpbGVyU291cmNlTWFwcGluZ1Byb3Zp
ZGVyLnByb3RvdHlwZS5faW5pdGlhbGl6ZWQgPSB0cnVlOwotICAgIH0KLSAgICB0aGlzLl9zb3Vy
Y2VNYXBwaW5nUGFnZVVSTCA9IHNvdXJjZU1hcHBpbmdQYWdlVVJMOwotfQotCi1XZWJJbnNwZWN0
b3IuQ29tcGlsZXJTb3VyY2VNYXBwaW5nUHJvdmlkZXIucHJvdG90eXBlID0gewotICAgIC8qKgot
ICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24oV2ViSW5zcGVjdG9yLkNvbXBpbGVyU291cmNlTWFwcGlu
Zyl9IGNhbGxiYWNrCi0gICAgICovCi0gICAgbG9hZFNvdXJjZU1hcHBpbmc6IGZ1bmN0aW9uKGNh
bGxiYWNrKQotICAgIHsKLSAgICAgICAgdGhpcy5fZnJhbWUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJpZnJhbWUiKTsKLSAgICAgICAgdGhpcy5fZnJhbWUuc3JjID0gdGhpcy5fc291cmNlTWFw
cGluZ1BhZ2VVUkw7Ci0gICAgICAgIGZ1bmN0aW9uIGZyYW1lTG9hZGVkKCkKLSAgICAgICAgewot
ICAgICAgICAgICAgZnVuY3Rpb24gZGlkTG9hZERhdGEoZXJyb3IsIHJlc3VsdCkKLSAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICBpZiAoZXJyb3IpIHsKLSAgICAgICAgICAgICAgICAgICAg
Y29uc29sZS5sb2coZXJyb3IpOwotICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhudWxsKTsK
LSAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAg
ICAgICAgICAgIHZhciBwYXlsb2FkOwotICAgICAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAg
ICAgICAgICAgIHBheWxvYWQgPSBKU09OLnBhcnNlKHJlc3VsdCk7Ci0gICAgICAgICAgICAgICAg
fSBjYXRjaCAoZSkgewotICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygiRmFpbGVkIHRv
IHBhcnNlIEpTT04uIik7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgaWYg
KHBheWxvYWQpCi0gICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKG5ldyBXZWJJbnNwZWN0b3Iu
Q2xvc3VyZUNvbXBpbGVyU291cmNlTWFwcGluZyhwYXlsb2FkKSk7Ci0gICAgICAgICAgICAgICAg
ZWxzZQotICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhudWxsKTsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIHRoaXMuX3NlbmRSZXF1ZXN0KCJsb2FkU291cmNlTWFwIiwgW10sIGRpZExv
YWREYXRhKTsKLSAgICAgICAgfQotICAgICAgICB0aGlzLl9mcmFtZS5hZGRFdmVudExpc3RlbmVy
KCJsb2FkIiwgZnJhbWVMb2FkZWQuYmluZCh0aGlzKSwgdHJ1ZSk7Ci0gICAgICAgIC8vIEZJWE1F
OiByZW1vdmUgaWZyYW1lIGZyb20gdGhlIGRvY3VtZW50IHdoZW4gaXQgaXMgbm90IG5lZWRlZCBh
bnltb3JlLgotICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHRoaXMuX2ZyYW1lKTsK
LSAgICB9LAotCi0gICAgLyoqCi0gICAgICogQHBhcmFtIHtzdHJpbmd9IHNvdXJjZVVSTAotICAg
ICAqIEBwYXJhbSB7ZnVuY3Rpb24oc3RyaW5nKX0gY2FsbGJhY2sKLSAgICAgKiBAcGFyYW0ge251
bWJlcn0gdGltZW91dAotICAgICAqLwotICAgIGxvYWRTb3VyY2VDb2RlOiBmdW5jdGlvbihzb3Vy
Y2VVUkwsIGNhbGxiYWNrLCB0aW1lb3V0KQotICAgIHsKLSAgICAgICAgZnVuY3Rpb24gZGlkU2Vu
ZFJlcXVlc3QoZXJyb3IsIHJlc3VsdCkKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKGVycm9y
KSB7Ci0gICAgICAgICAgICAgICAgY29uc29sZS5sb2coZXJyb3IpOwotICAgICAgICAgICAgICAg
IGNhbGxiYWNrKCIiKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgICAgICBjYWxsYmFjayhyZXN1bHQpOwotICAgICAgICB9Ci0gICAgICAgIHRoaXMuX3Nl
bmRSZXF1ZXN0KCJsb2FkU291cmNlQ29kZSIsIFtzb3VyY2VVUkxdLCBkaWRTZW5kUmVxdWVzdCwg
dGltZW91dCk7Ci0gICAgfSwKLQotICAgIF9zZW5kUmVxdWVzdDogZnVuY3Rpb24obWV0aG9kLCBw
YXJhbWV0ZXJzLCBjYWxsYmFjaywgdGltZW91dCkKLSAgICB7Ci0gICAgICAgIHZhciByZXF1ZXN0
SWQgPSB0aGlzLl9yZXF1ZXN0SWQrKzsKLSAgICAgICAgdmFyIHRpbWVySWQgPSBzZXRUaW1lb3V0
KHRoaXMuX2NhbmNlbFJlcXVlc3QuYmluZCh0aGlzLCByZXF1ZXN0SWQpLCB0aW1lb3V0IHx8IDUw
MDApOwotICAgICAgICB0aGlzLl9yZXF1ZXN0c1tyZXF1ZXN0SWRdID0geyBjYWxsYmFjazogY2Fs
bGJhY2ssIHRpbWVySWQ6IHRpbWVySWQgfTsKLSAgICAgICAgdmFyIHJlcXVlc3REYXRhID0geyBp
ZDogcmVxdWVzdElkLCBtZXRob2Q6IG1ldGhvZCwgcGFyYW1zOiBwYXJhbWV0ZXJzIH07Ci0gICAg
ICAgIHRoaXMuX2ZyYW1lLmNvbnRlbnRXaW5kb3cucG9zdE1lc3NhZ2UocmVxdWVzdERhdGEsIHRo
aXMuX3NvdXJjZU1hcHBpbmdQYWdlVVJMKTsKLSAgICB9LAotCi0gICAgX29uTWVzc2FnZTogZnVu
Y3Rpb24oZXZlbnQpCi0gICAgewotICAgICAgICB2YXIgcmVxdWVzdElkID0gZXZlbnQuZGF0YS5p
ZDsKLSAgICAgICAgdmFyIHJlcXVlc3RzID0gV2ViSW5zcGVjdG9yLkNvbXBpbGVyU291cmNlTWFw
cGluZ1Byb3ZpZGVyLnByb3RvdHlwZS5fcmVxdWVzdHM7Ci0gICAgICAgIHZhciByZXF1ZXN0ID0g
cmVxdWVzdHNbcmVxdWVzdElkXTsKLSAgICAgICAgaWYgKCFyZXF1ZXN0KQotICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICBkZWxldGUgcmVxdWVzdHNbcmVxdWVzdElkXTsKLSAgICAgICAgY2xl
YXJUaW1lb3V0KHJlcXVlc3QudGltZXJJZCk7Ci0gICAgICAgIHJlcXVlc3QuY2FsbGJhY2soZXZl
bnQuZGF0YS5lcnJvciwgZXZlbnQuZGF0YS5yZXN1bHQpOwotICAgIH0sCi0KLSAgICBfY2FuY2Vs
UmVxdWVzdDogZnVuY3Rpb24ocmVxdWVzdElkKQotICAgIHsKLSAgICAgICAgdmFyIHJlcXVlc3Qg
PSB0aGlzLl9yZXF1ZXN0c1tyZXF1ZXN0SWRdOwotICAgICAgICBkZWxldGUgdGhpcy5fcmVxdWVz
dHNbcmVxdWVzdElkXTsKLSAgICAgICAgcmVxdWVzdC5jYWxsYmFjaygiUmVxdWVzdCB0aW1lZCBv
dXQuIiwgbnVsbCk7Ci0gICAgfSwKLQotICAgIF9yZXF1ZXN0SWQ6IDAsCi0gICAgX3JlcXVlc3Rz
OiB7fQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9D
b250ZW50UHJvdmlkZXJzLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9D
b250ZW50UHJvdmlkZXJzLmpzCmluZGV4IDAxMWI5MDM0ODM5YzkwNTUyYjdjNTJmNzMxYmFjMTQ2
OTc3ZjIwN2EuLjhlZjYyMmRhYWU0NmNiNmU2NDExZjNkYmY0OThhMjliY2I2ZjFhODAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ29udGVudFByb3ZpZGVy
cy5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NvbnRlbnRQcm92
aWRlcnMuanMKQEAgLTI0MywxMSArMjQzLDExIEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZUNvbnRl
bnRQcm92aWRlci5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLkNvbnRlbnRQCiAg
KiBAY29uc3RydWN0b3IKICAqIEBpbXBsZW1lbnRzIHtXZWJJbnNwZWN0b3IuQ29udGVudFByb3Zp
ZGVyfQogICovCi1XZWJJbnNwZWN0b3IuQ29tcGlsZXJTb3VyY2VNYXBwaW5nQ29udGVudFByb3Zp
ZGVyID0gZnVuY3Rpb24oc291cmNlVVJMLCBjb21waWxlclNvdXJjZU1hcHBpbmdQcm92aWRlcikK
K1dlYkluc3BlY3Rvci5Db21waWxlclNvdXJjZU1hcHBpbmdDb250ZW50UHJvdmlkZXIgPSBmdW5j
dGlvbihzb3VyY2VVUkwsIGNvbXBpbGVyU291cmNlTWFwcGluZykKIHsKICAgICB0aGlzLl9taW1l
VHlwZSA9ICJ0ZXh0L2phdmFzY3JpcHQiOwogICAgIHRoaXMuX3NvdXJjZVVSTCA9IHNvdXJjZVVS
TDsKLSAgICB0aGlzLl9jb21waWxlclNvdXJjZU1hcHBpbmdQcm92aWRlciA9IGNvbXBpbGVyU291
cmNlTWFwcGluZ1Byb3ZpZGVyOworICAgIHRoaXMuX2NvbXBpbGVyU291cmNlTWFwcGluZyA9IGNv
bXBpbGVyU291cmNlTWFwcGluZzsKIH07CiAKIFdlYkluc3BlY3Rvci5Db21waWxlclNvdXJjZU1h
cHBpbmdDb250ZW50UHJvdmlkZXIucHJvdG90eXBlID0gewpAQCAtMjU2LDExICsyNTYsOCBAQCBX
ZWJJbnNwZWN0b3IuQ29tcGlsZXJTb3VyY2VNYXBwaW5nQ29udGVudFByb3ZpZGVyLnByb3RvdHlw
ZSA9IHsKICAgICAgKi8KICAgICByZXF1ZXN0Q29udGVudDogZnVuY3Rpb24oY2FsbGJhY2spCiAg
ICAgewotICAgICAgICBmdW5jdGlvbiBkaWRMb2FkU291cmNlQ29kZShzb3VyY2VDb2RlKQotICAg
ICAgICB7Ci0gICAgICAgICAgICBjYWxsYmFjayh0aGlzLl9taW1lVHlwZSwgc291cmNlQ29kZSk7
Ci0gICAgICAgIH0KLSAgICAgICAgdGhpcy5fY29tcGlsZXJTb3VyY2VNYXBwaW5nUHJvdmlkZXIu
bG9hZFNvdXJjZUNvZGUodGhpcy5fc291cmNlVVJMLCBkaWRMb2FkU291cmNlQ29kZS5iaW5kKHRo
aXMpKTsKKyAgICAgICAgdmFyIHNvdXJjZUNvZGUgPSB0aGlzLl9jb21waWxlclNvdXJjZU1hcHBp
bmcubG9hZFNvdXJjZUNvZGUodGhpcy5fc291cmNlVVJMKTsKKyAgICAgICAgY2FsbGJhY2sodGhp
cy5fbWltZVR5cGUsIHNvdXJjZUNvZGUpOwogICAgIH0sCiAKICAgICAvKioKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmF3U291cmNlQ29kZS5qcyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmF3U291cmNlQ29kZS5qcwppbmRleCBl
OTFkOWE5NjhlOWRhYjNhNjc4ZjAwZjczYzY1NDdiOTMxZWQ2YjcyLi5hM2YzNGZhYTUzYzZhNDQw
ZTE4ZjE3NDc1ZWU2NDM0NzgwNDQ5ZjZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL1Jhd1NvdXJjZUNvZGUuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9SYXdTb3VyY2VDb2RlLmpzCkBAIC05NSwxNyArOTUsMTcgQEAgV2Vi
SW5zcGVjdG9yLlJhd1NvdXJjZUNvZGUucHJvdG90eXBlID0gewogICAgIC8qKgogICAgICAqIEBw
YXJhbSB7bnVtYmVyfSBwcm92aWRlciBTaG91bGQgYXNzaWduIHByb3BlciB0eXBlIHVwb24gZmly
c3QgdXNlCiAgICAgICovCi0gICAgc2V0Q29tcGlsZXJTb3VyY2VNYXBwaW5nUHJvdmlkZXI6IGZ1
bmN0aW9uKHByb3ZpZGVyKQorICAgIHNldENvbXBpbGVyU291cmNlTWFwcGluZzogZnVuY3Rpb24o
Y29tcGlsZXJTb3VyY2VNYXBwaW5nKQogICAgIHsKLSAgICAgICAgaWYgKHByb3ZpZGVyKQorICAg
ICAgICBpZiAoY29tcGlsZXJTb3VyY2VNYXBwaW5nKQogICAgICAgICAgICAgdGhpcy5fdXNlVGVt
cG9yYXJ5Q29udGVudCA9IGZhbHNlOwotICAgICAgICB0aGlzLl9jb21waWxlclNvdXJjZU1hcHBp
bmdQcm92aWRlciA9IHByb3ZpZGVyOworICAgICAgICB0aGlzLl9jb21waWxlclNvdXJjZU1hcHBp
bmcgPSBjb21waWxlclNvdXJjZU1hcHBpbmc7CiAgICAgICAgIHRoaXMuX3VwZGF0ZVNvdXJjZU1h
cHBpbmcoKTsKICAgICB9LAogCiAgICAgX3Jlc291cmNlRmluaXNoZWQ6IGZ1bmN0aW9uKCkKICAg
ICB7Ci0gICAgICAgIGlmICh0aGlzLl9jb21waWxlclNvdXJjZU1hcHBpbmdQcm92aWRlcikKKyAg
ICAgICAgaWYgKHRoaXMuX2NvbXBpbGVyU291cmNlTWFwcGluZykKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgdGhpcy5fdXNlVGVtcG9yYXJ5Q29udGVudCA9IGZhbHNlOwogICAgICAgICB0
aGlzLl91cGRhdGVTb3VyY2VNYXBwaW5nKCk7CkBAIC0xODIsMzAgKzE4MiwyMyBAQCBXZWJJbnNw
ZWN0b3IuUmF3U291cmNlQ29kZS5wcm90b3R5cGUgPSB7CiAgICAgICovCiAgICAgX2NyZWF0ZVNv
dXJjZU1hcHBpbmc6IGZ1bmN0aW9uKGNhbGxiYWNrKQogICAgIHsKLSAgICAgICAgaWYgKHRoaXMu
X2NvbXBpbGVyU291cmNlTWFwcGluZ1Byb3ZpZGVyKSB7Ci0gICAgICAgICAgICAvKioKLSAgICAg
ICAgICAgICAqIEB0aGlzIHtXZWJJbnNwZWN0b3IuUmF3U291cmNlQ29kZX0KLSAgICAgICAgICAg
ICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLkNvbXBpbGVyU291cmNlTWFwcGluZ30gY29tcGlsZXJT
b3VyY2VNYXBwaW5nCi0gICAgICAgICAgICAgKi8KLSAgICAgICAgICAgIGZ1bmN0aW9uIGRpZExv
YWRTb3VyY2VNYXBwaW5nKGNvbXBpbGVyU291cmNlTWFwcGluZykKLSAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgICBpZiAoIWNvbXBpbGVyU291cmNlTWFwcGluZykgewotICAgICAgICAgICAg
ICAgICAgICBkZWxldGUgdGhpcy5fY29tcGlsZXJTb3VyY2VNYXBwaW5nUHJvdmlkZXI7Ci0gICAg
ICAgICAgICAgICAgICAgIGNhbGxiYWNrKG51bGwpOwotICAgICAgICAgICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHZhciB1aVNvdXJjZUNvZGVM
aXN0ID0gW107Ci0gICAgICAgICAgICAgICAgdmFyIHNvdXJjZVVSTHMgPSBjb21waWxlclNvdXJj
ZU1hcHBpbmcuc291cmNlcygpOwotICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
c291cmNlVVJMcy5sZW5ndGg7ICsraSkgewotICAgICAgICAgICAgICAgICAgICB2YXIgc291cmNl
VVJMID0gc291cmNlVVJMc1tpXTsKLSAgICAgICAgICAgICAgICAgICAgdmFyIGNvbnRlbnRQcm92
aWRlciA9IG5ldyBXZWJJbnNwZWN0b3IuQ29tcGlsZXJTb3VyY2VNYXBwaW5nQ29udGVudFByb3Zp
ZGVyKHNvdXJjZVVSTCwgdGhpcy5fY29tcGlsZXJTb3VyY2VNYXBwaW5nUHJvdmlkZXIpOwotICAg
ICAgICAgICAgICAgICAgICB2YXIgdWlTb3VyY2VDb2RlID0gbmV3IFdlYkluc3BlY3Rvci5VSVNv
dXJjZUNvZGUoc291cmNlVVJMLCBzb3VyY2VVUkwsIHRoaXMuaXNDb250ZW50U2NyaXB0LCB0aGlz
LCBjb250ZW50UHJvdmlkZXIpOwotICAgICAgICAgICAgICAgICAgICB1aVNvdXJjZUNvZGVMaXN0
LnB1c2godWlTb3VyY2VDb2RlKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAg
dmFyIHNvdXJjZU1hcHBpbmcgPSBuZXcgV2ViSW5zcGVjdG9yLlJhd1NvdXJjZUNvZGUuQ29tcGls
ZXJTb3VyY2VNYXBwaW5nKHRoaXMsIHVpU291cmNlQ29kZUxpc3QsIGNvbXBpbGVyU291cmNlTWFw
cGluZyk7Ci0gICAgICAgICAgICAgICAgY2FsbGJhY2soc291cmNlTWFwcGluZyk7CisgICAgICAg
IGlmICh0aGlzLl9jb21waWxlclNvdXJjZU1hcHBpbmcpIHsKKyAgICAgICAgICAgIHZhciBzdWNj
ZXNzID0gdGhpcy5fY29tcGlsZXJTb3VyY2VNYXBwaW5nLmxvYWQoKTsKKyAgICAgICAgICAgIGlm
ICghc3VjY2VzcykgeworICAgICAgICAgICAgICAgIGRlbGV0ZSB0aGlzLl9jb21waWxlclNvdXJj
ZU1hcHBpbmc7CisgICAgICAgICAgICAgICAgY2FsbGJhY2sobnVsbCk7CisgICAgICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgdGhpcy5fY29tcGlsZXJTb3Vy
Y2VNYXBwaW5nUHJvdmlkZXIubG9hZFNvdXJjZU1hcHBpbmcoZGlkTG9hZFNvdXJjZU1hcHBpbmcu
YmluZCh0aGlzKSk7CisgICAgICAgICAgICB2YXIgdWlTb3VyY2VDb2RlTGlzdCA9IFtdOworICAg
ICAgICAgICAgdmFyIHNvdXJjZVVSTHMgPSB0aGlzLl9jb21waWxlclNvdXJjZU1hcHBpbmcuc291
cmNlcygpOworICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzb3VyY2VVUkxzLmxlbmd0
aDsgKytpKSB7CisgICAgICAgICAgICAgICAgdmFyIHNvdXJjZVVSTCA9IHNvdXJjZVVSTHNbaV07
CisgICAgICAgICAgICAgICAgdmFyIGNvbnRlbnRQcm92aWRlciA9IG5ldyBXZWJJbnNwZWN0b3Iu
Q29tcGlsZXJTb3VyY2VNYXBwaW5nQ29udGVudFByb3ZpZGVyKHNvdXJjZVVSTCwgdGhpcy5fY29t
cGlsZXJTb3VyY2VNYXBwaW5nKTsKKyAgICAgICAgICAgICAgICB2YXIgdWlTb3VyY2VDb2RlID0g
bmV3IFdlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGUoc291cmNlVVJMLCBzb3VyY2VVUkwsIHRoaXMu
aXNDb250ZW50U2NyaXB0LCB0aGlzLCBjb250ZW50UHJvdmlkZXIpOworICAgICAgICAgICAgICAg
IHVpU291cmNlQ29kZUxpc3QucHVzaCh1aVNvdXJjZUNvZGUpOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgdmFyIHNvdXJjZU1hcHBpbmcgPSBuZXcgV2ViSW5zcGVjdG9yLlJhd1NvdXJjZUNv
ZGUuQ29tcGlsZXJTb3VyY2VNYXBwaW5nKHRoaXMsIHVpU291cmNlQ29kZUxpc3QsIHRoaXMuX2Nv
bXBpbGVyU291cmNlTWFwcGluZyk7CisgICAgICAgICAgICBjYWxsYmFjayhzb3VyY2VNYXBwaW5n
KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5xcmMgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5xcmMKaW5kZXggYjVmYTk1YTAxOTMyOTQxYTYxN2Ex
NGE5MzRmODZiMmIxNzk3OTg2ZS4uM2QwZDljNDY2MWRmYTU4M2IyYTk3MDY4MzBmODljZTQwZjY2
YjMyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9XZWJL
aXQucXJjCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvV2ViS2l0LnFy
YwpAQCAtMTcsNyArMTcsNiBAQAogICAgIDxmaWxlPkNoZWNrYm94LmpzPC9maWxlPgogICAgIDxm
aWxlPkNvbG9yLmpzPC9maWxlPgogICAgIDxmaWxlPkNvbXBpbGVyU291cmNlTWFwcGluZy5qczwv
ZmlsZT4KLSAgICA8ZmlsZT5Db21waWxlclNvdXJjZU1hcHBpbmdQcm92aWRlci5qczwvZmlsZT4K
ICAgICA8ZmlsZT5Db25zb2xlTWVzc2FnZS5qczwvZmlsZT4KICAgICA8ZmlsZT5Db25zb2xlTW9k
ZWwuanM8L2ZpbGU+CiAgICAgPGZpbGU+Q29uc29sZVBhbmVsLmpzPC9maWxlPgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuaHRtbCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmh0bWwKaW5kZXggMmE3
NjQ5MzA1ZjY5M2JhZDJjNTBiNzdhMzY3M2NkZWNkNGE3NzdlZS4uYmM2MDE3Y2EzOGNlMGRlMjlh
OTAwNzEwY2JjYzBhZGRmZmZlNDM0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuaHRtbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5odG1sCkBAIC0xNjQsNyArMTY0LDYgQEAgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
ICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJDb250ZW50UHJvdmlkZXJz
LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJS
YXdTb3VyY2VDb2RlLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNj
cmlwdCIgc3JjPSJDb21waWxlclNvdXJjZU1hcHBpbmcuanMiPjwvc2NyaXB0PgotICAgIDxzY3Jp
cHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IkNvbXBpbGVyU291cmNlTWFwcGluZ1Byb3Zp
ZGVyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3Jj
PSJTY3JpcHRzU2VhcmNoU2NvcGUuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4
dC9qYXZhc2NyaXB0IiBzcmM9IkRPTUFnZW50LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5
cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJUaW1lbGluZUFnZW50LmpzIj48L3NjcmlwdD4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpz
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanMKaW5kZXgg
NzYzOWFmZDdmYzAzZmQ1NDE3MzM1YTdiMTdiNTEyZmYxMmEyZjZmNC4uOGQzZDgzNzQwODA2Njgw
YzJjN2FiOGJlMDBjMGI4MWM5NjNhZTRkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanMKQEAgLTg3Myw3ICs4NzMsNyBAQCBXZWJJbnNwZWN0
b3IuX3Rvb2xiYXJJdGVtQ2xpY2tlZCA9IGZ1bmN0aW9uKGV2ZW50KQogV2ViSW5zcGVjdG9yLmlu
c3RhbGxTb3VyY2VNYXBwaW5nRm9yVGVzdCA9IGZ1bmN0aW9uKHVybCkKIHsKICAgICAvLyBGSVhN
RTogcmVtb3ZlIHRoaXMgbWV0aG9kIHdoZW4gaXQncyBwb3NzaWJsZSB0byBzZXQgY29tcGlsZXIg
c291cmNlIG1hcHBpbmdzIHZpYSBVSS4KLSAgICB2YXIgcHJvdmlkZXIgPSBuZXcgV2ViSW5zcGVj
dG9yLkNvbXBpbGVyU291cmNlTWFwcGluZ1Byb3ZpZGVyKHVybCk7CisgICAgdmFyIHNvdXJjZU1h
cHBpbmcgPSBuZXcgV2ViSW5zcGVjdG9yLkNsb3N1cmVDb21waWxlclNvdXJjZU1hcHBpbmcodXJs
KTsKICAgICB2YXIgdWlTb3VyY2VDb2RlID0gV2ViSW5zcGVjdG9yLnBhbmVscy5zY3JpcHRzLnZp
c2libGVWaWV3Ll9kZWxlZ2F0ZS5fdWlTb3VyY2VDb2RlOwotICAgIHVpU291cmNlQ29kZS5yYXdT
b3VyY2VDb2RlLnNldENvbXBpbGVyU291cmNlTWFwcGluZ1Byb3ZpZGVyKHByb3ZpZGVyKTsKKyAg
ICB1aVNvdXJjZUNvZGUucmF3U291cmNlQ29kZS5zZXRDb21waWxlclNvdXJjZU1hcHBpbmcoc291
cmNlTWFwcGluZyk7CiB9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYmEwMTA0ZTAxODI2MjgzMjQzZDYyZGEwZDhiNjgwNzM2
N2IwYWYwYS4uYTg0YjllOTQxYTEwNjVhODI2ZDE4Y2I0OWU0NzhhODA5NzM0YTcxOSAxMDA3NTUK
LS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDIyIEBACisyMDExLTExLTAxICBQYXZlbCBQb2Rpdmlsb3YgIDxwb2Rpdmlsb3ZA
Y2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IGxvYWQgc291cmNlIG1hcHMg
dmlhIGZyb250LWVuZCBob3N0LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NzEzMDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL2NvbXBpbGVyLXNvdXJjZS1tYXBwaW5n
LXByb3ZpZGVyLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2lu
c3BlY3Rvci9jb21waWxlci1zb3VyY2UtbWFwcGluZy1wcm92aWRlci5odG1sOiBSZW1vdmVkLgor
ICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlcy9jb21waWxlci1zb3VyY2Ut
bWFwcGluZy1wcm92aWRlci9hcHAtbWFwLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogaHR0cC90
ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL3NvdXJjZS1tYXAuanNvbjogUmVuYW1lZCBmcm9tIExh
eW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlcy9jb21waWxlci1zb3VyY2Ut
bWFwcGluZy1wcm92aWRlci9hcHAtbWFwLgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9y
L3Jlc291cmNlcy9zb3VyY2UxLmpzOiBSZW5hbWVkIGZyb20gTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9pbnNwZWN0b3IvcmVzb3VyY2VzL2NvbXBpbGVyLXNvdXJjZS1tYXBwaW5nLXByb3ZpZGVyL2Fw
cC5qcy4KKyAgICAgICAgKHdpbmRvdy5vbmxvYWQpOgorICAgICAgICAoaGFuZGxlQ2xpY2spOgor
ICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlcy9zb3VyY2UyLmpzOiBSZW5h
bWVkIGZyb20gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL2NvbXBp
bGVyLXNvdXJjZS1tYXBwaW5nLXByb3ZpZGVyL2Zvby5qcy4KKyAgICAgICAgKENsaWNrSGFuZGxl
cik6CisgICAgICAgIChDbGlja0hhbmRsZXIucHJvdG90eXBlLmhhbmRsZSk6CisgICAgICAgICog
aW5zcGVjdG9yL2RlYnVnZ2VyL2NvbXBpbGVyLXNvdXJjZS1tYXBwaW5nLmh0bWw6IFJlbW92ZWQu
CisKIDIwMTEtMTEtMDIgIFRvbnkgQ2hhbmcgIDx0b255QGNocm9taXVtLm9yZz4KIAogICAgICAg
ICBBZGQgY2hyb21pdW0gdGVzdCByZXN1bHRzIGZvciBmYXN0L3JlZmxlY3Rpb25zL3JlZmxlY3Rp
b24tbWFza3Mtb3V0c2V0Lmh0bWwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
aW5zcGVjdG9yL2NvbXBpbGVyLXNvdXJjZS1tYXBwaW5nLXByb3ZpZGVyLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2NvbXBpbGVyLXNvdXJjZS1tYXBwaW5n
LXByb3ZpZGVyLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmI0
NzE2OGI1Mzc4ZjYwMTc3MjMwMjQzMGU4OGEwYzU5ZjZjOGE1OC4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3Bl
Y3Rvci9jb21waWxlci1zb3VyY2UtbWFwcGluZy1wcm92aWRlci1leHBlY3RlZC50eHQKKysrIC9k
ZXYvbnVsbApAQCAtMSw4ICswLDAgQEAKLVRlc3RzIENvbXBpbGVyU291cmNlTWFwcGluZ1Byb3Zp
ZGVyIGNsYXNzLgotCi0KLVJ1bm5pbmc6IHRlc3RMb2FkCi0KLVJ1bm5pbmc6IHRlc3RUaW1lb3V0
Ci1sb2c6IFJlcXVlc3QgdGltZWQgb3V0LgotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2luc3BlY3Rvci9jb21waWxlci1zb3VyY2UtbWFwcGluZy1wcm92aWRlci5odG1sIGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvY29tcGlsZXItc291cmNlLW1hcHBpbmct
cHJvdmlkZXIuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTQ4Njk4NWVjM2Nj
ZmMyOWFhNGMzNmUxMzdiZjMzOTY2NWFhOWIzNy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9jb21w
aWxlci1zb3VyY2UtbWFwcGluZy1wcm92aWRlci5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsNTgg
KzAsMCBAQAotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSJpbnNwZWN0b3ItdGVzdC5qcyI+
PC9zY3JpcHQ+Ci0KLTxzY3JpcHQ+Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewotICAgIEluc3BlY3Rv
clRlc3QucnVuVGVzdFN1aXRlKFsKLSAgICAgICAgZnVuY3Rpb24gdGVzdExvYWQobmV4dCkKLSAg
ICAgICAgewotICAgICAgICAgICAgdmFyIHByb3ZpZGVyID0gbmV3IFdlYkluc3BlY3Rvci5Db21w
aWxlclNvdXJjZU1hcHBpbmdQcm92aWRlcigiaHR0cDovL2xvY2FsaG9zdDo4MDAwL2luc3BlY3Rv
ci9yZXNvdXJjZXMvY29tcGlsZXItc291cmNlLW1hcHBpbmctcHJvdmlkZXIvYXBwLW1hcC5odG1s
P3NvdXJjZU1hcD1hcHAtbWFwIik7Ci0gICAgICAgICAgICB2YXIgc291cmNlTWFwcGluZzsKLSAg
ICAgICAgICAgIHByb3ZpZGVyLmxvYWRTb3VyY2VNYXBwaW5nKGRpZExvYWRTb3VyY2VNYXBwaW5n
KTsKLSAgICAgICAgICAgIGZ1bmN0aW9uIGRpZExvYWRTb3VyY2VNYXBwaW5nKHNvdXJjZU1hcHBp
bmdBcmcpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgc291cmNlTWFwcGluZyA9IHNv
dXJjZU1hcHBpbmdBcmc7Ci0gICAgICAgICAgICAgICAgdmFyIHNvdXJjZXMgPSBzb3VyY2VNYXBw
aW5nLnNvdXJjZXMoKTsKLSAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFs
cygyLCBzb3VyY2VzLmxlbmd0aCk7Ci0gICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3Nl
cnRFcXVhbHMoImFwcC5qcyIsIHNvdXJjZXNbMF0pOwotICAgICAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QuYXNzZXJ0RXF1YWxzKCJmb28uanMiLCBzb3VyY2VzWzFdKTsKLSAgICAgICAgICAgICAg
ICBwcm92aWRlci5sb2FkU291cmNlQ29kZShzb3VyY2VNYXBwaW5nLnNvdXJjZXMoKVswXSwgZGlk
TG9hZFNvdXJjZUNvZGUpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBmdW5jdGlvbiBk
aWRMb2FkU291cmNlQ29kZShjb250ZW50KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
IEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKDAsIGNvbnRlbnQuaW5kZXhPZigid2luZG93Lm9u
bG9hZCA9IGZ1bmN0aW9uKCkiKSk7Ci0gICAgICAgICAgICAgICAgcHJvdmlkZXIubG9hZFNvdXJj
ZUNvZGUoc291cmNlTWFwcGluZy5zb3VyY2VzKClbMV0sIGRpZExvYWRTb3VyY2VDb2RlMik7Ci0g
ICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGZ1bmN0aW9uIGRpZExvYWRTb3VyY2VDb2RlMihj
b250ZW50KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNz
ZXJ0RXF1YWxzKDAsIGNvbnRlbnQuaW5kZXhPZigiZnVuY3Rpb24gQ2xpY2tIYW5kbGVyKCkiKSk7
Ci0gICAgICAgICAgICAgICAgbmV4dCgpOwotICAgICAgICAgICAgfQotICAgICAgICB9LAotCi0g
ICAgICAgIGZ1bmN0aW9uIHRlc3RUaW1lb3V0KG5leHQpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IHZhciBwcm92aWRlciA9IG5ldyBXZWJJbnNwZWN0b3IuQ29tcGlsZXJTb3VyY2VNYXBwaW5nUHJv
dmlkZXIoImh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9kb2VzLW5vdC1leGlzdCIpOwotICAgICAgICAg
ICAgcHJvdmlkZXIubG9hZFNvdXJjZU1hcHBpbmcoZGlkTG9hZFNvdXJjZU1hcHBpbmcpOwotICAg
ICAgICAgICAgZnVuY3Rpb24gZGlkTG9hZFNvdXJjZU1hcHBpbmcoc291cmNlTWFwcGluZykKLSAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscyhu
dWxsLCBzb3VyY2VNYXBwaW5nKTsKLSAgICAgICAgICAgICAgICBuZXh0KCk7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgIH0KLSAgICBdKTsKLX07Ci0KLTwvc2NyaXB0PgotCi08L2hlYWQ+Ci0KLTxi
b2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KLTxwPlRlc3RzIENvbXBpbGVyU291cmNlTWFwcGluZ1By
b3ZpZGVyIGNsYXNzLjwvcD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlcy9jb21waWxlci1zb3VyY2UtbWFwcGlu
Zy1wcm92aWRlci9hcHAtbWFwIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVz
b3VyY2VzL2NvbXBpbGVyLXNvdXJjZS1tYXBwaW5nLXByb3ZpZGVyL2FwcC1tYXAKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA4MjliMGJjYzdhYjY3M2JiNTA1MWY4ZmYzNThmOWVmMWFh
Njc4NWQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL2NvbXBpbGVyLXNvdXJjZS1t
YXBwaW5nLXByb3ZpZGVyL2FwcC1tYXAKKysrIC9kZXYvbnVsbApAQCAtMSw4ICswLDAgQEAKLXsK
LSJ2ZXJzaW9uIjozLAotImZpbGUiOiIuL2FwcC1tYXAiLAotImxpbmVDb3VudCI6MiwKLSJtYXBw
aW5ncyI6IkFBQ0FBLE1BQUFDLE9BQUEsQ0FBd0JDLFFBQUEsRUFDeEIsQ0FDSSxJQUFJQyxFQUFN
QyxRQUFBQyxjQUFzQixDQUFDLEtBQUQsQ0FDaENGLEVBQUFHLFlBQUEsQ0FBa0IsS0FDbEJILEVB
QUFJLGlCQUFvQixDQUFDLE9BQUQsQ0FBVUMsV0FBVixDQUF1QixDQUFBLENBQXZCLENBQ3BCSixT
QUFBSyxLQUFBQyxZQUF5QixDQUFDUCxDQUFELENBRXJCUSxFQUFBQSxDQUFNUCxRQUFBQyxjQUFz
QixDQUFDLEtBQUQsQ0FDaENNLEVBQUFMLFlBQUEsQ0FBa0Isb2NBQ2xCRjtRQUFBSyxLQUFBQyxZ
QUF5QixDQUFDQyxDQUFELENBUjdCLENBV1NILFNBQUFBLFlBQVcsQ0FBQ0ksQ0FBRCxDQUNwQixD
QUVJQyxDQUQ4QkMsSUFBWkMsWUFDbEJGLFFBQWMsQ0FBQ0QsQ0FBRCxDQUZsQixDQ2JTRyxRQUFB
QSxhQUFZLEVBQ3JCLEVBR0FBLFlBQUFDLFVBQUFILE9BQUEsQ0FBd0NJLFFBQUEsQ0FBQ0wsQ0FB
RCxDQUN4QyxDQUNJLElBQUlNLEVBQVVkLFFBQUFDLGNBQXNCLENBQUMsS0FBRCxDQUNwQ2EsRUFB
QVosWUFBQSxDQUFzQk0sQ0FBQU8sVUFDdEJmLFNBQUFLLEtBQUFDLFlBQXlCLENBQUNRLENBQUQs
Q0FIN0I7IiwKLSJzb3VyY2VzIjpbImFwcC5qcyIsImZvby5qcyJdLAotIm5hbWVzIjpbIndpbmRv
dyIsIm9ubG9hZCIsIndpbmRvdy5vbmxvYWQiLCJmb28iLCJkb2N1bWVudCIsImNyZWF0ZUVsZW1l
bnQiLCJ0ZXh0Q29udGVudCIsImFkZEV2ZW50TGlzdGVuZXIiLCJoYW5kbGVDbGljayIsImJvZHki
LCJhcHBlbmRDaGlsZCIsImJhciIsImV2ZW50IiwiaGFuZGxlIiwiaGFuZGxlciIsIkNsaWNrSGFu
ZGxlciIsInByb3RvdHlwZSIsIkNsaWNrSGFuZGxlci5wcm90b3R5cGUuaGFuZGxlIiwiZWxlbWVu
dCIsInRpbWVTdGFtcCJdCi19CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2lu
c3BlY3Rvci9yZXNvdXJjZXMvY29tcGlsZXItc291cmNlLW1hcHBpbmctcHJvdmlkZXIvYXBwLW1h
cC5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL2NvbXBp
bGVyLXNvdXJjZS1tYXBwaW5nLXByb3ZpZGVyL2FwcC1tYXAuaHRtbApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggM2I4ZGRiZGQ2NDhkYWM0YTNhZjNiYmNhNTliYTU0MTIwYmI2ZDg5NC4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZXMvY29tcGlsZXItc291cmNlLW1hcHBpbmct
cHJvdmlkZXIvYXBwLW1hcC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsNDQgKzAsMCBAQAotPHNj
cmlwdD4KLXdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwgaGFuZGxlTWVzc2FnZSwg
ZmFsc2UpOwotCi1mdW5jdGlvbiBoYW5kbGVNZXNzYWdlKGV2ZW50KQotewotICAgIHZhciByZXF1
ZXN0SWQgPSBldmVudC5kYXRhLmlkOwotICAgIHZhciBtZXRob2QgPSBldmVudC5kYXRhLm1ldGhv
ZDsKLSAgICBpZiAobWV0aG9kID09PSAibG9hZFNvdXJjZU1hcCIpIHsKLSAgICAgICAgdmFyIHF1
ZXJ5UGFyYW1ldGVycyA9IHBhcnNlUXVlcnlTdHJpbmcod2luZG93LmxvY2F0aW9uLnRvU3RyaW5n
KCkpOwotICAgICAgICBzZW5kUmVxdWVzdChldmVudCwgcXVlcnlQYXJhbWV0ZXJzLnNvdXJjZU1h
cCk7Ci0gICAgfSBlbHNlIGlmIChtZXRob2QgPT09ICJsb2FkU291cmNlQ29kZSIpIHsKLSAgICAg
ICAgdmFyIHNvdXJjZUNvZGVVUkwgPSBldmVudC5kYXRhLnBhcmFtc1swXTsKLSAgICAgICAgc2Vu
ZFJlcXVlc3QoZXZlbnQsIHNvdXJjZUNvZGVVUkwpOwotICAgIH0KLX0KLQotZnVuY3Rpb24gc2Vu
ZFJlcXVlc3QoZXZlbnQsIHVybCkKLXsKLSAgICB2YXIgcmVxdWVzdCA9IG5ldyBYTUxIdHRwUmVx
dWVzdCgpOwotICAgIHJlcXVlc3Qub3BlbigiR0VUIiwgdXJsLCB0cnVlKTsKLSAgICByZXF1ZXN0
Lm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIGlmIChyZXF1
ZXN0LnJlYWR5U3RhdGUgIT09IDQpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGlmIChy
ZXF1ZXN0LnN0YXR1cyA9PT0gMjAwKQotICAgICAgICAgICAgZXZlbnQuc291cmNlLnBvc3RNZXNz
YWdlKHsgaWQ6IGV2ZW50LmRhdGEuaWQsIHJlc3VsdDogcmVxdWVzdC5yZXNwb25zZVRleHQgfSwg
ZXZlbnQub3JpZ2luKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgZXZlbnQuc291cmNlLnBv
c3RNZXNzYWdlKHsgaWQ6IGV2ZW50LmRhdGEuaWQsIGVycm9yOiByZXF1ZXN0LnN0YXR1c1RleHQg
fSwgZXZlbnQub3JpZ2luKTsKLSAgICB9Ci0gICAgcmVxdWVzdC5zZW5kKCk7Ci19Ci0KLWZ1bmN0
aW9uIHBhcnNlUXVlcnlTdHJpbmcodXJsKQotewotICAgIHZhciBxdWVyeSA9IHVybC5zcGxpdCgi
PyIpWzFdOwotICAgIHZhciBwYXJhbWV0ZXJzID0gcXVlcnkuc3BsaXQoIiYiKTsKLSAgICB2YXIg
cmVzdWx0ID0ge307Ci0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwYXJhbWV0ZXJzLmxlbmd0aDsg
KytpKSB7Ci0gICAgICAgIHZhciBwYXJhbWV0ZXIgPSBwYXJhbWV0ZXJzW2ldLnNwbGl0KCI9Iik7
Ci0gICAgICAgIHJlc3VsdFtwYXJhbWV0ZXJbMF1dID0gcGFyYW1ldGVyWzFdOwotICAgIH0KLSAg
ICByZXR1cm4gcmVzdWx0OwotfQotPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZXMvY29tcGlsZXItc291cmNlLW1hcHBpbmctcHJv
dmlkZXIvYXBwLmpzIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2Vz
L2NvbXBpbGVyLXNvdXJjZS1tYXBwaW5nLXByb3ZpZGVyL2FwcC5qcwpkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggNmVjMzU4ODZjMDZlMGMyNTlkODdjNDZhZDFlZjM0YmUwNjVmZTE4Yi4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZXMvY29tcGlsZXItc291cmNlLW1hcHBpbmct
cHJvdmlkZXIvYXBwLmpzCisrKyAvZGV2L251bGwKQEAgLTEsMTcgKzAsMCBAQAotd2luZG93Lm9u
bG9hZCA9IGZ1bmN0aW9uKCkKLXsKLSAgICB2YXIgZm9vID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgnZGl2Jyk7Ci0gICAgZm9vLnRleHRDb250ZW50ID0gJ2Zvbyc7Ci0gICAgZm9vLmFkZEV2ZW50
TGlzdGVuZXIoJ2NsaWNrJywgaGFuZGxlQ2xpY2ssIHRydWUpOwotICAgIGRvY3VtZW50LmJvZHku
YXBwZW5kQ2hpbGQoZm9vKTsKLQotICAgIHZhciBiYXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCdkaXYnKTsKLSAgICBiYXIudGV4dENvbnRlbnQgPSAnYmFycnJycnJycnJycnJycnJycnJycnJy
cnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJy
cnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJy
cnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJy
cnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJy
cnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJy
cnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJy
cnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJy
cnJycnJycnJycnJycnJycnJycnJycnJycnJyJzsKLSAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENo
aWxkKGJhcik7Ci19Ci0KLWZ1bmN0aW9uIGhhbmRsZUNsaWNrKGV2ZW50KQotewotICAgIHZhciBo
YW5kbGVyID0gbmV3IENsaWNrSGFuZGxlcigpOwotICAgIGhhbmRsZXIuaGFuZGxlKGV2ZW50KTsK
LX0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNl
cy9jb21waWxlci1zb3VyY2UtbWFwcGluZy1wcm92aWRlci9mb28uanMgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZXMvY29tcGlsZXItc291cmNlLW1hcHBpbmctcHJv
dmlkZXIvZm9vLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiY2U3OGE2ZmZkNzZi
YmNkODdkYjYwMmJmY2I5MDA3OWM0MjM4ODI0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291
cmNlcy9jb21waWxlci1zb3VyY2UtbWFwcGluZy1wcm92aWRlci9mb28uanMKKysrIC9kZXYvbnVs
bApAQCAtMSwxMCArMCwwIEBACi1mdW5jdGlvbiBDbGlja0hhbmRsZXIoKQotewotfQotCi1DbGlj
a0hhbmRsZXIucHJvdG90eXBlLmhhbmRsZSA9IGZ1bmN0aW9uKGV2ZW50KQotewotICAgIHZhciBl
bGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7Ci0gICAgZWxlbWVudC50ZXh0
Q29udGVudCA9IGV2ZW50LnRpbWVTdGFtcDsKLSAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxk
KGVsZW1lbnQpOwotfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0
b3IvcmVzb3VyY2VzL3NvdXJjZS1tYXAuanNvbiBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5z
cGVjdG9yL3Jlc291cmNlcy9zb3VyY2UtbWFwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTM1Mjc2MzQ3MzZi
OTA1NDcyNTA5NjdkMGYxNDhmYjEzNTdkYzUyZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlcy9zb3VyY2UtbWFwLmpzb24KQEAgLTAs
MCArMSw3IEBACit7CisidmVyc2lvbiI6MywKKyJsaW5lQ291bnQiOjIsCisibWFwcGluZ3MiOiJB
QUNBQSxNQUFBQyxPQUFBLENBQXdCQyxRQUFBLEVBQ3hCLENBQ0ksSUFBSUMsRUFBTUMsUUFBQUMs
Y0FBc0IsQ0FBQyxLQUFELENBQ2hDRixFQUFBRyxZQUFBLENBQWtCLEtBQ2xCSCxFQUFBSSxpQkFB
b0IsQ0FBQyxPQUFELENBQVVDLFdBQVYsQ0FBdUIsQ0FBQSxDQUF2QixDQUNwQkosU0FBQUssS0FB
QUMsWUFBeUIsQ0FBQ1AsQ0FBRCxDQUVyQlEsRUFBQUEsQ0FBTVAsUUFBQUMsY0FBc0IsQ0FBQyxL
QUFELENBQ2hDTSxFQUFBTCxZQUFBLENBQWtCLG9jQUNsQkY7UUFBQUssS0FBQUMsWUFBeUIsQ0FB
Q0MsQ0FBRCxDQVI3QixDQVdTSCxTQUFBQSxZQUFXLENBQUNJLENBQUQsQ0FDcEIsQ0FFSUMsQ0FE
OEJDLElBQVpDLFlBQ2xCRixRQUFjLENBQUNELENBQUQsQ0FGbEIsQ0NiU0csUUFBQUEsYUFBWSxF
QUNyQixFQUdBQSxZQUFBQyxVQUFBSCxPQUFBLENBQXdDSSxRQUFBLENBQUNMLENBQUQsQ0FDeEMs
Q0FDSSxJQUFJTSxFQUFVZCxRQUFBQyxjQUFzQixDQUFDLEtBQUQsQ0FDcENhLEVBQUFaLFlBQUEs
Q0FBc0JNLENBQUFPLFVBQ3RCZixTQUFBSyxLQUFBQyxZQUF5QixDQUFDUSxDQUFELENBSDdCOyIs
Cisic291cmNlcyI6WyJzb3VyY2UxLmpzIiwic291cmNlMi5qcyJdLAorIm5hbWVzIjpbIndpbmRv
dyIsIm9ubG9hZCIsIndpbmRvdy5vbmxvYWQiLCJmb28iLCJkb2N1bWVudCIsImNyZWF0ZUVsZW1l
bnQiLCJ0ZXh0Q29udGVudCIsImFkZEV2ZW50TGlzdGVuZXIiLCJoYW5kbGVDbGljayIsImJvZHki
LCJhcHBlbmRDaGlsZCIsImJhciIsImV2ZW50IiwiaGFuZGxlIiwiaGFuZGxlciIsIkNsaWNrSGFu
ZGxlciIsInByb3RvdHlwZSIsIkNsaWNrSGFuZGxlci5wcm90b3R5cGUuaGFuZGxlIiwiZWxlbWVu
dCIsInRpbWVTdGFtcCJdCit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2lu
c3BlY3Rvci9yZXNvdXJjZXMvc291cmNlMS5qcyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5z
cGVjdG9yL3Jlc291cmNlcy9zb3VyY2UxLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlYzM1ODg2YzA2ZTBjMjU5
ZDg3YzQ2YWQxZWYzNGJlMDY1ZmUxOGIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZXMvc291cmNlMS5qcwpAQCAtMCwwICsxLDE3IEBA
Cit3aW5kb3cub25sb2FkID0gZnVuY3Rpb24oKQoreworICAgIHZhciBmb28gPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICBmb28udGV4dENvbnRlbnQgPSAnZm9vJzsKKyAgICBm
b28uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBoYW5kbGVDbGljaywgdHJ1ZSk7CisgICAgZG9j
dW1lbnQuYm9keS5hcHBlbmRDaGlsZChmb28pOworCisgICAgdmFyIGJhciA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgIGJhci50ZXh0Q29udGVudCA9ICdiYXJycnJycnJycnJy
cnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJy
cnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJy
cnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJy
cnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJy
cnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJy
cnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJy
cnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJy
cnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnInOworICAgIGRvY3VtZW50LmJv
ZHkuYXBwZW5kQ2hpbGQoYmFyKTsKK30KKworZnVuY3Rpb24gaGFuZGxlQ2xpY2soZXZlbnQpCit7
CisgICAgdmFyIGhhbmRsZXIgPSBuZXcgQ2xpY2tIYW5kbGVyKCk7CisgICAgaGFuZGxlci5oYW5k
bGUoZXZlbnQpOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0
b3IvcmVzb3VyY2VzL3NvdXJjZTIuanMgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rv
ci9yZXNvdXJjZXMvc291cmNlMi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iY2U3OGE2ZmZkNzZiYmNkODdkYjYw
MmJmY2I5MDA3OWM0MjM4ODI0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL3NvdXJjZTIuanMKQEAgLTAsMCArMSwxMCBAQAorZnVu
Y3Rpb24gQ2xpY2tIYW5kbGVyKCkKK3sKK30KKworQ2xpY2tIYW5kbGVyLnByb3RvdHlwZS5oYW5k
bGUgPSBmdW5jdGlvbihldmVudCkKK3sKKyAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoJ2RpdicpOworICAgIGVsZW1lbnQudGV4dENvbnRlbnQgPSBldmVudC50aW1lU3Rh
bXA7CisgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChlbGVtZW50KTsKK30KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9jb21waWxlci1zb3VyY2UtbWFwcGlu
Zy5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL2NvbXBpbGVyLXNvdXJjZS1t
YXBwaW5nLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUwNzc3ZTQxOGNkYTg1
OGI1N2JhOGI4ZWE1OGFiYTY5YWMyOTUyNTAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL2NvbXBpbGVy
LXNvdXJjZS1tYXBwaW5nLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw5OSArMCwwIEBACi08aHRt
bD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3Bl
Y3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KLQotPHNjcmlwdD4KLQotZnVuY3Rpb24gdGVzdCgpCi17
Ci0gICAgZnVuY3Rpb24gY2hlY2tNYXBwaW5nKGNvbXBpbGVkTGluZU51bWJlciwgY29tcGlsZWRD
b2x1bW5OdW1iZXIsIHNvdXJjZVVSTCwgc291cmNlTGluZU51bWJlciwgc291cmNlQ29sdW1uTnVt
YmVyLCBtYXBwaW5nKQotICAgIHsKLSAgICAgICAgdmFyIHNvdXJjZUxvY2F0aW9uID0gbWFwcGlu
Zy5jb21waWxlZExvY2F0aW9uVG9Tb3VyY2VMb2NhdGlvbihjb21waWxlZExpbmVOdW1iZXIsIGNv
bXBpbGVkQ29sdW1uTnVtYmVyKTsKLSAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHMo
c291cmNlVVJMLCBzb3VyY2VMb2NhdGlvbi5zb3VyY2VVUkwpOwotICAgICAgICBJbnNwZWN0b3JU
ZXN0LmFzc2VydEVxdWFscyhzb3VyY2VMaW5lTnVtYmVyLCBzb3VyY2VMb2NhdGlvbi5saW5lTnVt
YmVyKTsKLSAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHMoc291cmNlQ29sdW1uTnVt
YmVyLCBzb3VyY2VMb2NhdGlvbi5jb2x1bW5OdW1iZXIpOwotICAgIH0KLQotICAgIGZ1bmN0aW9u
IGNoZWNrUmV2ZXJzZU1hcHBpbmcoY29tcGlsZWRMaW5lTnVtYmVyLCBjb21waWxlZENvbHVtbk51
bWJlciwgc291cmNlVVJMLCBzb3VyY2VMaW5lTnVtYmVyLCBtYXBwaW5nKQotICAgIHsKLSAgICAg
ICAgdmFyIGNvbXBpbGVkTG9jYXRpb24gPSBtYXBwaW5nLnNvdXJjZUxvY2F0aW9uVG9Db21waWxl
ZExvY2F0aW9uKHNvdXJjZVVSTCwgc291cmNlTGluZU51bWJlcik7Ci0gICAgICAgIEluc3BlY3Rv
clRlc3QuYXNzZXJ0RXF1YWxzKGNvbXBpbGVkTGluZU51bWJlciwgY29tcGlsZWRMb2NhdGlvbi5s
aW5lTnVtYmVyKTsKLSAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHMoY29tcGlsZWRD
b2x1bW5OdW1iZXIsIGNvbXBpbGVkTG9jYXRpb24uY29sdW1uTnVtYmVyKTsKLSAgICB9Ci0KLSAg
ICBJbnNwZWN0b3JUZXN0LnJ1blRlc3RTdWl0ZShbCi0gICAgICAgIGZ1bmN0aW9uIHRlc3RTaW1w
bGVNYXBwaW5nKG5leHQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIC8qCi0gICAgICAgICAgICAg
ICAgZXhhbXBsZS5qczoKLSAgICAgICAgICAgICAgICAwICAgICAgICAgMSAgICAgICAgIDIgICAg
ICAgICAzCi0gICAgICAgICAgICAgICAgMDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEy
MzQ1Ci0gICAgICAgICAgICAgICAgZnVuY3Rpb24gYWRkKHZhcmlhYmxlX3gsIHZhcmlhYmxlX3kp
Ci0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gdmFyaWFibGVf
eCArIHZhcmlhYmxlX3k7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgdmFy
IGdsb2JhbCA9ICJmb28iOwotICAgICAgICAgICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KLSAgICAgICAgICAgICAgICBleGFtcGxlLWNvbXBpbGVkLmpzOgot
ICAgICAgICAgICAgICAgIDAgICAgICAgICAxICAgICAgICAgMiAgICAgICAgIDMKLSAgICAgICAg
ICAgICAgICAwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDUKLSAgICAgICAgICAg
ICAgICBmdW5jdGlvbiBhZGQoYSxiKXtyZXR1cm4gYStifXZhciBnbG9iYWw9ImZvbyI7Ci0gICAg
ICAgICAgICAqLwotICAgICAgICAgICAgdmFyIG1hcHBpbmdQYXlsb2FkID0gewotICAgICAgICAg
ICAgICAgICJtYXBwaW5ncyI6IkFBQVNBLFFBQUFBLElBQUcsQ0FBQ0MsQ0FBRCxDQUFhQyxDQUFi
LENBQ1osQ0FDSSxNQUFPRCxFQUFQLENBQW9CQyxDQUR4QixDQUlBLElBQUlDLE9BQVM7IiwKLSAg
ICAgICAgICAgICAgICAic291cmNlcyI6WyJleGFtcGxlLmpzIl0KLSAgICAgICAgICAgIH07Ci0g
ICAgICAgICAgICB2YXIgbWFwcGluZyA9IG5ldyBXZWJJbnNwZWN0b3IuQ2xvc3VyZUNvbXBpbGVy
U291cmNlTWFwcGluZyhtYXBwaW5nUGF5bG9hZCk7Ci0KLSAgICAgICAgICAgIGNoZWNrTWFwcGlu
ZygwLCA5LCAiZXhhbXBsZS5qcyIsIDAsIDksIG1hcHBpbmcpOwotICAgICAgICAgICAgY2hlY2tN
YXBwaW5nKDAsIDEzLCAiZXhhbXBsZS5qcyIsIDAsIDEzLCBtYXBwaW5nKTsKLSAgICAgICAgICAg
IGNoZWNrTWFwcGluZygwLCAxNSwgImV4YW1wbGUuanMiLCAwLCAyNSwgbWFwcGluZyk7Ci0gICAg
ICAgICAgICBjaGVja01hcHBpbmcoMCwgMTgsICJleGFtcGxlLmpzIiwgMiwgNCwgbWFwcGluZyk7
Ci0gICAgICAgICAgICBjaGVja01hcHBpbmcoMCwgMjUsICJleGFtcGxlLmpzIiwgMiwgMTEsIG1h
cHBpbmcpOwotICAgICAgICAgICAgY2hlY2tNYXBwaW5nKDAsIDI3LCAiZXhhbXBsZS5qcyIsIDIs
IDI0LCBtYXBwaW5nKTsKLQotICAgICAgICAgICAgY2hlY2tSZXZlcnNlTWFwcGluZygwLCAwLCAi
ZXhhbXBsZS5qcyIsIDAsIG1hcHBpbmcpOwotICAgICAgICAgICAgY2hlY2tSZXZlcnNlTWFwcGlu
ZygwLCAxNywgImV4YW1wbGUuanMiLCAxLCBtYXBwaW5nKTsKLSAgICAgICAgICAgIGNoZWNrUmV2
ZXJzZU1hcHBpbmcoMCwgMTgsICJleGFtcGxlLmpzIiwgMiwgbWFwcGluZyk7Ci0gICAgICAgICAg
ICBjaGVja1JldmVyc2VNYXBwaW5nKDAsIDI5LCAiZXhhbXBsZS5qcyIsIDQsIG1hcHBpbmcpOwot
ICAgICAgICAgICAgY2hlY2tSZXZlcnNlTWFwcGluZygwLCAyOSwgImV4YW1wbGUuanMiLCA1LCBt
YXBwaW5nKTsKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0VHJ1ZSghbWFwcGluZy5z
b3VyY2VMb2NhdGlvblRvQ29tcGlsZWRMb2NhdGlvbigiZXhhbXBsZS5qcyIsIDYpKTsKLQotICAg
ICAgICAgICAgbmV4dCgpOwotICAgICAgICB9LAotCi0gICAgICAgIGZ1bmN0aW9uIHRlc3ROb01h
cHBpbmdFbnRyeShuZXh0KQotICAgICAgICB7Ci0gICAgICAgICAgICB2YXIgbWFwcGluZ1BheWxv
YWQgPSB7Ci0gICAgICAgICAgICAgICAgIm1hcHBpbmdzIjoiQUFBQSxDLENBQUU7IiwKLSAgICAg
ICAgICAgICAgICAic291cmNlcyI6WyJleGFtcGxlLmpzIl0KLSAgICAgICAgICAgIH07Ci0gICAg
ICAgICAgICB2YXIgbWFwcGluZyA9IG5ldyBXZWJJbnNwZWN0b3IuQ2xvc3VyZUNvbXBpbGVyU291
cmNlTWFwcGluZyhtYXBwaW5nUGF5bG9hZCk7Ci0gICAgICAgICAgICBjaGVja01hcHBpbmcoMCwg
MCwgImV4YW1wbGUuanMiLCAwLCAwLCBtYXBwaW5nKTsKLSAgICAgICAgICAgIGNoZWNrTWFwcGlu
ZygwLCAyLCAiZXhhbXBsZS5qcyIsIDAsIDIsIG1hcHBpbmcpOwotICAgICAgICAgICAgbmV4dCgp
OwotICAgICAgICB9LAotCi0gICAgICAgIGZ1bmN0aW9uIHRlc3RFbXB0eUxpbmUobmV4dCkKLSAg
ICAgICAgewotICAgICAgICAgICAgdmFyIG1hcHBpbmdQYXlsb2FkID0gewotICAgICAgICAgICAg
ICAgICJtYXBwaW5ncyI6IkFBQUE7OztDQUNBIiwKLSAgICAgICAgICAgICAgICAic291cmNlcyI6
WyJleGFtcGxlLmpzIl0KLSAgICAgICAgICAgIH07Ci0gICAgICAgICAgICB2YXIgbWFwcGluZyA9
IG5ldyBXZWJJbnNwZWN0b3IuQ2xvc3VyZUNvbXBpbGVyU291cmNlTWFwcGluZyhtYXBwaW5nUGF5
bG9hZCk7Ci0gICAgICAgICAgICBjaGVja01hcHBpbmcoMCwgMCwgImV4YW1wbGUuanMiLCAwLCAw
LCBtYXBwaW5nKTsKLSAgICAgICAgICAgIGNoZWNrUmV2ZXJzZU1hcHBpbmcoMywgMSwgImV4YW1w
bGUuanMiLCAxLCBtYXBwaW5nKTsKLSAgICAgICAgICAgIG5leHQoKTsKLSAgICAgICAgfQotICAg
IF0pOwotfTsKLQotPC9zY3JpcHQ+Ci0KLTwvaGVhZD4KLQotPGJvZHkgb25sb2FkPSJydW5UZXN0
KCkiPgotPHA+VGVzdHMgQ2xvc3VyZUNvbXBpbGVyU291cmNlTWFwcGluZy48L3A+Ci08L2JvZHk+
Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvcmF3
LXNvdXJjZS1jb2RlLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvcmF3LXNv
dXJjZS1jb2RlLmh0bWwKaW5kZXggNTY3M2EwYzNlYWUyMmNlODJlYzE3OTFiYTljNzZiOTQ4YjU5
NmFkNi4uNGYyMTM4ZDU2YTFlMjI5MTUzNGRlOTk2N2EzZGRlZTBiZDdjMjg0YiAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3Jhdy1zb3VyY2UtY29kZS5odG1sCisr
KyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9yYXctc291cmNlLWNvZGUuaHRtbApA
QCAtMzM5LDMxICszMzksMjMgQEAgZnVuY3Rpb24gdGVzdCgpCiAKICAgICAgICAgZnVuY3Rpb24g
dGVzdENvbXBpbGVyU291cmNlTWFwcGluZyhuZXh0KQogICAgICAgICB7Ci0gICAgICAgICAgICBm
dW5jdGlvbiBjcmVhdGVDb21waWxlclNvdXJjZU1hcHBpbmdNb2NrKCkKLSAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICByZXR1cm4gewotICAgICAgICAgICAgICAgICAgICBjb21waWxlZExv
Y2F0aW9uVG9Tb3VyY2VMb2NhdGlvbjogZnVuY3Rpb24obGluZU51bWJlciwgY29sdW1uTnVtYmVy
KQotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAobGlu
ZU51bWJlciA8IDEwKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7IHNvdXJj
ZVVSTDogInNvdXJjZTEuanMiLCBsaW5lTnVtYmVyOiBsaW5lTnVtYmVyICogMiwgY29sdW1uTnVt
YmVyOiBjb2x1bW5OdW1iZXIgKiAyIH07Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
eyBzb3VyY2VVUkw6ICJzb3VyY2UyLmpzIiwgbGluZU51bWJlcjogKGxpbmVOdW1iZXIgLSAxMCkg
KiAyLCBjb2x1bW5OdW1iZXI6IGNvbHVtbk51bWJlciAqIDIgfTsKLSAgICAgICAgICAgICAgICAg
ICAgfSwKLSAgICAgICAgICAgICAgICAgICAgc291cmNlTG9jYXRpb25Ub0NvbXBpbGVkTG9jYXRp
b246IGZ1bmN0aW9uKHNvdXJjZVVSTCwgbGluZU51bWJlcikKLSAgICAgICAgICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNvdXJjZVVSTCA9PT0gInNvdXJjZTEuanMi
KQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7IGxpbmVOdW1iZXI6IE1hdGgu
Zmxvb3IobGluZU51bWJlciAvIDIpLCBjb2x1bW5OdW1iZXI6IDAgfTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiB7IGxpbmVOdW1iZXI6IE1hdGguZmxvb3IobGluZU51bWJlciAvIDIp
ICsgMTAsIGNvbHVtbk51bWJlcjogMCB9OwotICAgICAgICAgICAgICAgICAgICB9LAotICAgICAg
ICAgICAgICAgICAgICBzb3VyY2VzOiBmdW5jdGlvbigpIHsgcmV0dXJuIFsic291cmNlMS5qcyIs
ICJzb3VyY2UyLmpzIl07IH0KLSAgICAgICAgICAgICAgICB9OwotICAgICAgICAgICAgfQotICAg
ICAgICAgICAgZnVuY3Rpb24gY3JlYXRlQ29tcGlsZXJTb3VyY2VNYXBwaW5nUHJvdmlkZXJNb2Nr
KCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gewotICAgICAgICAgICAg
ICAgICAgICBsb2FkU291cmNlTWFwcGluZzogZnVuY3Rpb24oY2FsbGJhY2spIHsgY2FsbGJhY2so
Y3JlYXRlQ29tcGlsZXJTb3VyY2VNYXBwaW5nTW9jaygpKTsgfSwKLSAgICAgICAgICAgICAgICAg
ICAgbG9hZFNvdXJjZUNvZGU6IGZ1bmN0aW9uKHVybCwgY2FsbGJhY2spIHsgY2FsbGJhY2soIjxj
b250ZW50IG9mICIgKyB1cmwgKyAiPiIpOyB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgfQorICAgICAgICAgICAgdmFyIGNvbXBpbGVyU291cmNlTWFwcGluZ01vY2sgPSB7CisgICAg
ICAgICAgICAgICAgY29tcGlsZWRMb2NhdGlvblRvU291cmNlTG9jYXRpb246IGZ1bmN0aW9uKGxp
bmVOdW1iZXIsIGNvbHVtbk51bWJlcikKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgICAgIGlmIChsaW5lTnVtYmVyIDwgMTApCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4geyBzb3VyY2VVUkw6ICJzb3VyY2UxLmpzIiwgbGluZU51bWJlcjogbGluZU51bWJlciAqIDIs
IGNvbHVtbk51bWJlcjogY29sdW1uTnVtYmVyICogMiB9OworICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4geyBzb3VyY2VVUkw6ICJzb3VyY2UyLmpzIiwgbGluZU51bWJlcjogKGxpbmVOdW1iZXIg
LSAxMCkgKiAyLCBjb2x1bW5OdW1iZXI6IGNvbHVtbk51bWJlciAqIDIgfTsKKyAgICAgICAgICAg
ICAgICB9LAorICAgICAgICAgICAgICAgIHNvdXJjZUxvY2F0aW9uVG9Db21waWxlZExvY2F0aW9u
OiBmdW5jdGlvbihzb3VyY2VVUkwsIGxpbmVOdW1iZXIpCisgICAgICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgICAgICBpZiAoc291cmNlVVJMID09PSAic291cmNlMS5qcyIpCisgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4geyBsaW5lTnVtYmVyOiBNYXRoLmZsb29yKGxpbmVOdW1i
ZXIgLyAyKSwgY29sdW1uTnVtYmVyOiAwIH07CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB7
IGxpbmVOdW1iZXI6IE1hdGguZmxvb3IobGluZU51bWJlciAvIDIpICsgMTAsIGNvbHVtbk51bWJl
cjogMCB9OworICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgc291cmNlczogZnVu
Y3Rpb24oKSB7IHJldHVybiBbInNvdXJjZTEuanMiLCAic291cmNlMi5qcyJdOyB9LAorICAgICAg
ICAgICAgICAgIGxvYWQ6IGZ1bmN0aW9uKCkgeyByZXR1cm4gdHJ1ZTsgfSwKKyAgICAgICAgICAg
ICAgICBsb2FkU291cmNlQ29kZTogZnVuY3Rpb24odXJsKSB7IHJldHVybiAiPGNvbnRlbnQgb2Yg
IiArIHVybCArICI+IjsgfQorICAgICAgICAgICAgfTsKIAogICAgICAgICAgICAgdmFyIHNjcmlw
dCA9IGNyZWF0ZVNjcmlwdE1vY2soImNvbXBpbGVkLmpzIiwgMCwgMCwgdHJ1ZSwgIjxzY3JpcHQg
c291cmNlPiIpOwogICAgICAgICAgICAgdmFyIHJlc291cmNlID0gY3JlYXRlUGVuZGluZ1Jlc291
cmNlTW9jaygic2NyaXB0IiwgIjxyZXNvdXJjZSBjb250ZW50PiIpOwpAQCAtMzcxLDcgKzM2Myw3
IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICAgICAgdmFyIHVpU291cmNlQ29kZUxpc3Q7CiAK
ICAgICAgICAgICAgIHdhaXRGb3JTb3VyY2VNYXBwaW5nRXZlbnQocmF3U291cmNlQ29kZSwgY2hl
Y2tNYXBwaW5nKTsKLSAgICAgICAgICAgIHJhd1NvdXJjZUNvZGUuc2V0Q29tcGlsZXJTb3VyY2VN
YXBwaW5nUHJvdmlkZXIoY3JlYXRlQ29tcGlsZXJTb3VyY2VNYXBwaW5nUHJvdmlkZXJNb2NrKCkp
OworICAgICAgICAgICAgcmF3U291cmNlQ29kZS5zZXRDb21waWxlclNvdXJjZU1hcHBpbmcoY29t
cGlsZXJTb3VyY2VNYXBwaW5nTW9jayk7CiAgICAgICAgICAgICBmdW5jdGlvbiBjaGVja01hcHBp
bmcoKQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIHZhciBzb3VyY2VNYXBwaW5nID0g
cmF3U291cmNlQ29kZS5zb3VyY2VNYXBwaW5nOwpAQCAtNDA0LDE0ICszOTYsMTQgQEAgZnVuY3Rp
b24gdGVzdCgpCiAKICAgICAgICAgZnVuY3Rpb24gdGVzdENvbXBpbGVyU291cmNlTWFwcGluZ0Nv
dWxkTm90QmVMb2FkZWQobmV4dCkKICAgICAgICAgewotICAgICAgICAgICAgdmFyIGNvbXBpbGVy
U291cmNlTWFwcGluZ1Byb3ZpZGVyTW9jayA9IHsgbG9hZFNvdXJjZU1hcHBpbmc6IGZ1bmN0aW9u
KGNhbGxiYWNrKSB7IGNhbGxiYWNrKG51bGwpOyB9IH07CisgICAgICAgICAgICB2YXIgY29tcGls
ZXJTb3VyY2VNYXBwaW5nTW9jayA9IHsgbG9hZDogZnVuY3Rpb24oKSB7IHJldHVybiBmYWxzZTsg
fSB9OwogCiAgICAgICAgICAgICB2YXIgc2NyaXB0ID0gY3JlYXRlU2NyaXB0TW9jaygiY29tcGls
ZWQuanMiLCAwLCAwLCB0cnVlLCAiPHNjcmlwdCBzb3VyY2U+Iik7CiAgICAgICAgICAgICB2YXIg
cmF3U291cmNlQ29kZSA9IGNyZWF0ZVJhd1NvdXJjZUNvZGUoc2NyaXB0LCBudWxsKTsKICAgICAg
ICAgICAgIHZhciB1aVNvdXJjZUNvZGVMaXN0OwogCiAgICAgICAgICAgICB3YWl0Rm9yU291cmNl
TWFwcGluZ0V2ZW50KHJhd1NvdXJjZUNvZGUsIGNoZWNrTWFwcGluZyk7Ci0gICAgICAgICAgICBy
YXdTb3VyY2VDb2RlLnNldENvbXBpbGVyU291cmNlTWFwcGluZ1Byb3ZpZGVyKGNvbXBpbGVyU291
cmNlTWFwcGluZ1Byb3ZpZGVyTW9jayk7CisgICAgICAgICAgICByYXdTb3VyY2VDb2RlLnNldENv
bXBpbGVyU291cmNlTWFwcGluZyhjb21waWxlclNvdXJjZU1hcHBpbmdNb2NrKTsKIAogICAgICAg
ICAgICAgZnVuY3Rpb24gY2hlY2tNYXBwaW5nKCkKICAgICAgICAgICAgIHsK
</data>
<flag name="review"
          id="111854"
          type_id="1"
          status="+"
          setter="yurys"
    />
          </attachment>
      

    </bug>

</bugzilla>