<?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>54961</bug_id>
          
          <creation_ts>2011-02-22 08:27:52 -0800</creation_ts>
          <short_desc>Web Inspector: refactor &quot;script or resource&quot; mess in scripts panel</short_desc>
          <delta_ts>2011-02-24 06:38:41 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Pavel Podivilov">podivilov</reporter>
          <assigned_to name="Pavel Podivilov">podivilov</assigned_to>
          <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>355288</commentid>
    <comment_count>0</comment_count>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2011-02-22 08:27:52 -0800</bug_when>
    <thetext>Web Inspector: refactor &quot;script or resource&quot; mess in scripts panel.

- use sourceName instead of scriptOrResource
- replace two huge functions _addScriptToFilesMenu and _showScriptOrResource that are calling each other recursively with small one-purpose non-recursive functions</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>355290</commentid>
    <comment_count>1</comment_count>
      <attachid>83320</attachid>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2011-02-22 08:29:12 -0800</bug_when>
    <thetext>Created attachment 83320
Patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>355502</commentid>
    <comment_count>2</comment_count>
      <attachid>83320</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-02-22 12:33:02 -0800</bug_when>
    <thetext>Comment on attachment 83320
Patch.

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

r+ with nits and request for tests.

&gt; LayoutTests/inspector/debugger/scripts-panel.html:30
&gt; +    InspectorTest.runDebuggerTestSuite([

InspectorTest.runTestSuite ?

&gt; Source/WebCore/inspector/front-end/ScriptsPanel.js:335
&gt; +        // 1) Added script url is the first item in files select

Can you add tests for these? (I.e. make sure SourceFrame is not created). There was a huge regression once in this logic.

&gt; Source/WebCore/inspector/front-end/ScriptsPanel.js:540
&gt; +    _showSourceFrame: function(sourceName, addToBackForwardList, saveAsLastViewedScriptFile)

saveAsLastViewedScriptFile -&gt; userGesture? Aslo, I&apos;d prefer couple of wrapper functions with sound names instead of these two boolean params all over the calling code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>356938</commentid>
    <comment_count>3</comment_count>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2011-02-24 06:38:41 -0800</bug_when>
    <thetext>Committed r79555: &lt;http://trac.webkit.org/changeset/79555&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>83320</attachid>
            <date>2011-02-22 08:29:12 -0800</date>
            <delta_ts>2011-02-22 12:33:02 -0800</delta_ts>
            <desc>Patch.</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>32698</size>
            <attacher name="Pavel Podivilov">podivilov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBkM2E0ZDdjLi40NzY4MmQwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIwMTEtMDIt
MjIgIFBhdmVsIFBvZGl2aWxvdiAgPHBvZGl2aWxvdkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogcmVm
YWN0b3IgInNjcmlwdCBvciByZXNvdXJjZSIgbWVzcyBpbiBzY3JpcHRzIHBhbmVsLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTQ5NjEKKworICAgICAg
ICAtIFVzZSBzb3VyY2VOYW1lIGluc3RlYWQgb2Ygc2NyaXB0T3JSZXNvdXJjZQorICAgICAgICAt
IFJlcGxhY2UgdHdvIGh1Z2UgZnVuY3Rpb25zIF9hZGRTY3JpcHRUb0ZpbGVzTWVudSBhbmQgX3No
b3dTY3JpcHRPclJlc291cmNlIHRoYXQgYXJlCisgICAgICAgICAgY2FsbGluZyBlYWNoIG90aGVy
IHJlY3Vyc2l2ZWx5IHdpdGggc21hbGwgb25lLXB1cnBvc2Ugbm9uLXJlY3Vyc2l2ZSBmdW5jdGlv
bnMKKworICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyLXRlc3QuanM6Cisg
ICAgICAgIChpbml0aWFsaXplX0RlYnVnZ2VyVGVzdC5JbnNwZWN0b3JUZXN0LnNob3dTY3JpcHRT
b3VyY2UpOgorICAgICAgICAoaW5pdGlhbGl6ZV9EZWJ1Z2dlclRlc3QuSW5zcGVjdG9yVGVzdC5f
c2hvd1NjcmlwdFNvdXJjZSk6CisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVj
dG9yLXRlc3QuanM6CisgICAgICAgIChpbml0aWFsaXplX0luc3BlY3RvclRlc3QuSW5zcGVjdG9y
VGVzdC5hc3NlcnRFcXVhbHMpOgorICAgICAgICAoaW5pdGlhbGl6ZV9JbnNwZWN0b3JUZXN0Lklu
c3BlY3RvclRlc3Quc2FmZVdyYXApOgorICAgICAgICAqIGluc3BlY3Rvci9kZWJ1Z2dlci9yZXNv
dXJjZXMvc2NyaXB0MS5qczogQWRkZWQuCisgICAgICAgIChmMSk6CisgICAgICAgICogaW5zcGVj
dG9yL2RlYnVnZ2VyL3Jlc291cmNlcy9zY3JpcHQyLmpzOiBBZGRlZC4KKyAgICAgICAgKGYyKToK
KyAgICAgICAgKiBpbnNwZWN0b3IvZGVidWdnZXIvcmVzb3VyY2VzL3NjcmlwdDMuanM6IEFkZGVk
LgorICAgICAgICAoZjMpOgorICAgICAgICAqIGluc3BlY3Rvci9kZWJ1Z2dlci9zY3JpcHRzLXBh
bmVsLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaW5zcGVjdG9yL2RlYnVnZ2VyL3Nj
cmlwdHMtcGFuZWwuaHRtbDogQWRkZWQuCisKIDIwMTEtMDItMTUgIEplciBOb2JsZSAgPGplci5u
b2JsZUBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci10ZXN0Lmpz
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvZGVidWdnZXItdGVzdC5qcwppbmRl
eCA1MGJhMDNmLi4zZWFjOWVhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2lu
c3BlY3Rvci9kZWJ1Z2dlci10ZXN0LmpzCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5z
cGVjdG9yL2RlYnVnZ2VyLXRlc3QuanMKQEAgLTE1Miw3ICsxNTIsNyBAQCBJbnNwZWN0b3JUZXN0
LnNob3dTY3JpcHRTb3VyY2UgPSBmdW5jdGlvbihzY3JpcHROYW1lLCBjYWxsYmFjaykKICAgICBp
ZiAoSW5zcGVjdG9yVGVzdC5fc2NyaXB0c0FyZVBhcnNlZChbc2NyaXB0TmFtZV0pKQogICAgICAg
ICBJbnNwZWN0b3JUZXN0Ll9zaG93U2NyaXB0U291cmNlKHNjcmlwdE5hbWUsIEluc3BlY3RvclRl
c3Quc2FmZVdyYXAoY2FsbGJhY2spKTsKICAgICAgZWxzZQotICAgICAgICBJbnNwZWN0b3JUZXN0
LmFkZFNuaWZmZXIoV2ViSW5zcGVjdG9yLnBhbmVscy5zY3JpcHRzLCAiX2FkZFNjcmlwdFRvRmls
ZXNNZW51IiwgSW5zcGVjdG9yVGVzdC5zaG93U2NyaXB0U291cmNlLmJpbmQoSW5zcGVjdG9yVGVz
dCwgc2NyaXB0TmFtZSwgY2FsbGJhY2spKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRTbmlm
ZmVyKFdlYkluc3BlY3Rvci5wYW5lbHMuc2NyaXB0cywgIl9hZGRPcHRpb25Ub0ZpbGVzU2VsZWN0
IiwgSW5zcGVjdG9yVGVzdC5zaG93U2NyaXB0U291cmNlLmJpbmQoSW5zcGVjdG9yVGVzdCwgc2Ny
aXB0TmFtZSwgY2FsbGJhY2spKTsKIH07CiAKIEluc3BlY3RvclRlc3QuX3NjcmlwdHNBcmVQYXJz
ZWQgPSBmdW5jdGlvbihzY3JpcHRzKQpAQCAtMTc3LDI4ICsxNzcsOCBAQCBJbnNwZWN0b3JUZXN0
Ll9zY3JpcHRzQXJlUGFyc2VkID0gZnVuY3Rpb24oc2NyaXB0cykKIAogSW5zcGVjdG9yVGVzdC5f
c2hvd1NjcmlwdFNvdXJjZSA9IGZ1bmN0aW9uKHNjcmlwdE5hbWUsIGNhbGxiYWNrKQogewotICAg
IHZhciBzY3JpcHRTZWxlY3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic2NyaXB0cy1maWxl
cyIpOwotICAgIHZhciBvcHRpb25zID0gc2NyaXB0U2VsZWN0Lm9wdGlvbnM7Ci0gICAgdmFyIHNj
cmlwdHNQYW5lbCA9IFdlYkluc3BlY3Rvci5wYW5lbHMuc2NyaXB0czsKLQotICAgIC8vIFNlbGVj
dCBwYWdlJ3Mgc2NyaXB0IGlmIGl0J3Mgbm90IGN1cnJlbnQgb3B0aW9uLgotICAgIHZhciBzY3Jp
cHRSZXNvdXJjZTsKLSAgICBpZiAob3B0aW9uc1tzY3JpcHRTZWxlY3Quc2VsZWN0ZWRJbmRleF0u
dGV4dCA9PT0gc2NyaXB0TmFtZSkKLSAgICAgICAgc2NyaXB0UmVzb3VyY2UgPSBvcHRpb25zW3Nj
cmlwdFNlbGVjdC5zZWxlY3RlZEluZGV4XS5yZXByZXNlbnRlZE9iamVjdDsKLSAgICBlbHNlIHsK
LSAgICAgICAgdmFyIHBhZ2VTY3JpcHRJbmRleCA9IC0xOwotICAgICAgICBmb3IgKHZhciBpID0g
MDsgaSA8IG9wdGlvbnMubGVuZ3RoOyBpKyspIHsKLSAgICAgICAgICAgIGlmIChvcHRpb25zW2ld
LnRleHQgPT09IHNjcmlwdE5hbWUpIHsKLSAgICAgICAgICAgICAgICBwYWdlU2NyaXB0SW5kZXgg
PSBpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0g
ICAgICAgIHNjcmlwdFJlc291cmNlID0gb3B0aW9uc1twYWdlU2NyaXB0SW5kZXhdLnJlcHJlc2Vu
dGVkT2JqZWN0OwotICAgICAgICBzY3JpcHRzUGFuZWwuX3Nob3dTY3JpcHRPclJlc291cmNlKHNj
cmlwdFJlc291cmNlKTsKLSAgICB9Ci0KLSAgICB2YXIgc291cmNlRnJhbWUgPSBXZWJJbnNwZWN0
b3IuY3VycmVudFBhbmVsLnZpc2libGVWaWV3OwotICAgIGlmIChzb3VyY2VGcmFtZS5fY29udGVu
dCkKKyAgICB2YXIgc291cmNlRnJhbWUgPSBXZWJJbnNwZWN0b3IucGFuZWxzLnNjcmlwdHMuX3No
b3dTb3VyY2VGcmFtZShzY3JpcHROYW1lKTsKKyAgICBpZiAoc291cmNlRnJhbWUubG9hZGVkKQog
ICAgICAgICBjYWxsYmFjayhzb3VyY2VGcmFtZSk7CiAgICAgZWxzZQogICAgICAgICBJbnNwZWN0
b3JUZXN0LmFkZFNuaWZmZXIoc291cmNlRnJhbWUuX3RleHRNb2RlbCwgInNldFRleHQiLCBjYWxs
YmFjay5iaW5kKG51bGwsIHNvdXJjZUZyYW1lKSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2luc3BlY3Rvci9pbnNwZWN0b3ItdGVzdC5qcyBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0LmpzCmluZGV4IDkxYWY4MDUuLmY1NDgwYjkg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10
ZXN0LmpzCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10
ZXN0LmpzCkBAIC0xNTUsNiArMTU1LDE5IEBAIEluc3BlY3RvclRlc3QucnVuVGVzdFN1aXRlID0g
ZnVuY3Rpb24odGVzdFN1aXRlKQogICAgIHJ1bm5lcigpOwogfQogCitJbnNwZWN0b3JUZXN0LmFz
c2VydEVxdWFscyA9IGZ1bmN0aW9uKGV4cGVjdGVkLCBmb3VuZCwgbWVzc2FnZSkKK3sKKyAgICBp
ZiAoZXhwZWN0ZWQgPT09IGZvdW5kKQorICAgICAgICByZXR1cm47CisKKyAgICB2YXIgZXJyb3I7
CisgICAgaWYgKG1lc3NhZ2UpCisgICAgICAgIGVycm9yID0gIkZhaWx1cmUgKCIgKyBtZXNzYWdl
ICsgIik6IjsKKyAgICBlbHNlCisgICAgICAgIGVycm9yID0gIkZhaWx1cmU6IjsKKyAgICB0aHJv
dyBuZXcgRXJyb3IoZXJyb3IgKyAiIGV4cGVjdGVkIDwiICsgZXhwZWN0ZWQgKyAiPiBmb3VuZCA8
IiArIGZvdW5kICsgIj4iKTsKK30KKwogSW5zcGVjdG9yVGVzdC5zYWZlV3JhcCA9IGZ1bmN0aW9u
KGZ1bmMsIG9uZXhjZXB0aW9uKQogewogICAgIGZ1bmN0aW9uIHJlc3VsdCgpCkBAIC0xNjUsNyAr
MTc4LDcgQEAgSW5zcGVjdG9yVGVzdC5zYWZlV3JhcCA9IGZ1bmN0aW9uKGZ1bmMsIG9uZXhjZXB0
aW9uKQogICAgICAgICB0cnkgewogICAgICAgICAgICAgcmV0dXJuIGZ1bmMuYXBwbHkod3JhcFRo
aXMsIGFyZ3VtZW50cyk7CiAgICAgICAgIH0gY2F0Y2goZSkgewotICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5hZGRSZXN1bHQoIkV4Y2VwdGlvbiB3aGlsZSBydW5uaW5nOiAiICsgZnVuYyArICJc
biIgKyBlKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJFeGNlcHRpb24g
d2hpbGUgcnVubmluZzogIiArIGZ1bmMgKyAiXG4iICsgKGUuc3RhY2sgfHwgZSkpOwogICAgICAg
ICAgICAgaWYgKG9uZXhjZXB0aW9uKQogICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3Quc2Fm
ZVdyYXAob25leGNlcHRpb24pKCk7CiAgICAgICAgICAgICBlbHNlCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvcmVzb3VyY2VzL3NjcmlwdDEuanMgYi9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvcmVzb3VyY2VzL3NjcmlwdDEuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTZmZTRjMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9yZXNvdXJjZXMvc2NyaXB0MS5qcwpAQCAtMCwwICsx
IEBACitmdW5jdGlvbiBmMSgpIHt9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3Jlc291cmNlcy9zY3JpcHQyLmpz
IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3Jlc291cmNlcy9zY3JpcHQyLmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg2NjVhMGYKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvcmVzb3VyY2VzL3NjcmlwdDIuanMK
QEAgLTAsMCArMSBAQAorZnVuY3Rpb24gZjIoKSB7fQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZp
bGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9yZXNvdXJjZXMv
c2NyaXB0My5qcyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9yZXNvdXJjZXMvc2Ny
aXB0My5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lM2ZiMzQzCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3Jlc291cmNlcy9z
Y3JpcHQzLmpzCkBAIC0wLDAgKzEgQEAKK2Z1bmN0aW9uIGYzKCkge30KXCBObyBuZXdsaW5lIGF0
IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIv
c2NyaXB0cy1wYW5lbC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdn
ZXIvc2NyaXB0cy1wYW5lbC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uMTYyNDhmMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rv
ci9kZWJ1Z2dlci9zY3JpcHRzLXBhbmVsLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDUgQEAKK1Rl
c3RzIHRoYXQgc2NyaXB0cyBwYW5lbCBVSSBlbGVtZW50cyB3b3JrIGFzIGludGVuZGVkLgorCitE
ZWJ1Z2dlciB3YXMgZW5hYmxlZC4KK0RlYnVnZ2VyIHdhcyBkaXNhYmxlZC4KKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3NjcmlwdHMtcGFuZWwuaHRtbCBiL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zY3JpcHRzLXBhbmVsLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWU1MGY1YQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zY3JpcHRzLXBhbmVsLmh0bWwKQEAgLTAsMCAr
MSwxMDAgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vaHR0cC90ZXN0cy9p
bnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
L2h0dHAvdGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9InJlc291cmNlcy9zY3JpcHQxLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNv
dXJjZXMvc2NyaXB0Mi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3Njcmlw
dDMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0PgorCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICB2
YXIgcGFuZWwgPSBXZWJJbnNwZWN0b3IucGFuZWxzLnNjcmlwdHM7CisgICAgdmFyIHNlbGVjdCA9
IHBhbmVsLl9maWxlc1NlbGVjdEVsZW1lbnQ7CisgICAgdmFyIGZpbGVzID0gWyJkZWJ1Z2dlci10
ZXN0LmpzIiwgImluc3BlY3Rvci10ZXN0LmpzIiwgInNjcmlwdDEuanMiLCAic2NyaXB0Mi5qcyIs
ICJzY3JpcHQzLmpzIiwgInNjcmlwdHMtcGFuZWwuaHRtbCJdOworCisgICAgZnVuY3Rpb24gc2hv
d1NvdXJjZUZyYW1lKGZpbGVOYW1lKQorICAgIHsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkg
PCBzZWxlY3QubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgIGlmIChzZWxlY3RbaV0udGV4dCA9
PT0gZmlsZU5hbWUpCisgICAgICAgICAgICAgICAgcGFuZWwuX3Nob3dTb3VyY2VGcmFtZShzZWxl
Y3RbaV0uX3NvdXJjZU5hbWUsIHRydWUsIHRydWUpOworICAgICAgICB9CisgICAgfQorCisgICAg
ZnVuY3Rpb24gY2hlY2tDdXJyZW50bHlTZWxlY3RlZEZpbGVOYW1lKGZpbGVOYW1lKQorICAgIHsK
KyAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHMoZmlsZU5hbWUsIHNlbGVjdFtzZWxl
Y3Quc2VsZWN0ZWRJbmRleF0udGV4dCk7CisgICAgfQorCisgICAgSW5zcGVjdG9yVGVzdC5ydW5E
ZWJ1Z2dlclRlc3RTdWl0ZShbCisgICAgICAgIGZ1bmN0aW9uIHRlc3RBbGxTY3JpcHRzTG9hZGVk
KG5leHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGZ1bmN0aW9uIGNoZWNrRmlsZXNMaXN0KCkK
KyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpZiAoc2VsZWN0Lmxlbmd0aCA8IGZpbGVz
Lmxlbmd0aCkgeworICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFNuaWZmZXIo
cGFuZWwsICJfYWRkT3B0aW9uVG9GaWxlc1NlbGVjdCIsIGNoZWNrRmlsZXNMaXN0KTsKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IHNlbGVjdC5sZW5ndGg7ICsraSkKKyAgICAgICAgICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHMoZmlsZXNbaV0sIHNlbGVjdFtpXS50ZXh0
LCAid3JvbmcgZmlsZSBzZWxlY3Qgb3B0aW9uIHRleHQiKTsKKyAgICAgICAgICAgICAgICBuZXh0
KCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjaGVja0ZpbGVzTGlzdCgpOworICAgICAg
ICB9LAorCisgICAgICAgIGZ1bmN0aW9uIHRlc3RIaXN0b3J5KG5leHQpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZmlsZXMubGVuZ3RoOyArK2kpCisgICAgICAg
ICAgICAgICAgc2hvd1NvdXJjZUZyYW1lKGZpbGVzW2ldKTsKKyAgICAgICAgICAgIGNoZWNrQ3Vy
cmVudGx5U2VsZWN0ZWRGaWxlTmFtZSgic2NyaXB0cy1wYW5lbC5odG1sIik7CisgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscyh0cnVlLCBwYW5lbC5mb3J3YXJkQnV0dG9uLmRp
c2FibGVkKTsKKworICAgICAgICAgICAgcGFuZWwuYmFja0J1dHRvbi5jbGljaygpOworICAgICAg
ICAgICAgY2hlY2tDdXJyZW50bHlTZWxlY3RlZEZpbGVOYW1lKCJzY3JpcHQzLmpzIik7CisgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscyhmYWxzZSwgcGFuZWwuZm9yd2FyZEJ1
dHRvbi5kaXNhYmxlZCk7CisKKyAgICAgICAgICAgIHBhbmVsLmZvcndhcmRCdXR0b24uY2xpY2so
KTsKKyAgICAgICAgICAgIGNoZWNrQ3VycmVudGx5U2VsZWN0ZWRGaWxlTmFtZSgic2NyaXB0cy1w
YW5lbC5odG1sIik7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscyh0cnVl
LCBwYW5lbC5mb3J3YXJkQnV0dG9uLmRpc2FibGVkKTsKKworICAgICAgICAgICAgZm9yICh2YXIg
aSA9IDA7IGkgPCBmaWxlcy5sZW5ndGggLSAxOyArK2kpCisgICAgICAgICAgICAgICAgcGFuZWwu
YmFja0J1dHRvbi5jbGljaygpOworICAgICAgICAgICAgY2hlY2tDdXJyZW50bHlTZWxlY3RlZEZp
bGVOYW1lKCJkZWJ1Z2dlci10ZXN0LmpzIik7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFz
c2VydEVxdWFscyh0cnVlLCBwYW5lbC5iYWNrQnV0dG9uLmRpc2FibGVkKTsKKworICAgICAgICAg
ICAgcGFuZWwuZm9yd2FyZEJ1dHRvbi5jbGljaygpOworICAgICAgICAgICAgcGFuZWwuZm9yd2Fy
ZEJ1dHRvbi5jbGljaygpOworICAgICAgICAgICAgcGFuZWwuZm9yd2FyZEJ1dHRvbi5jbGljaygp
OworICAgICAgICAgICAgY2hlY2tDdXJyZW50bHlTZWxlY3RlZEZpbGVOYW1lKCJzY3JpcHQyLmpz
Iik7CisKKyAgICAgICAgICAgIHNob3dTb3VyY2VGcmFtZSgiaW5zcGVjdG9yLXRlc3QuanMiKTsK
KyAgICAgICAgICAgIGNoZWNrQ3VycmVudGx5U2VsZWN0ZWRGaWxlTmFtZSgiaW5zcGVjdG9yLXRl
c3QuanMiKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKHRydWUsIHBh
bmVsLmZvcndhcmRCdXR0b24uZGlzYWJsZWQpOworCisgICAgICAgICAgICBwYW5lbC5iYWNrQnV0
dG9uLmNsaWNrKCk7CisgICAgICAgICAgICBjaGVja0N1cnJlbnRseVNlbGVjdGVkRmlsZU5hbWUo
InNjcmlwdDIuanMiKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKGZh
bHNlLCBwYW5lbC5mb3J3YXJkQnV0dG9uLmRpc2FibGVkKTsKKworICAgICAgICAgICAgcGFuZWwu
YmFja0J1dHRvbi5jbGljaygpOworICAgICAgICAgICAgY2hlY2tDdXJyZW50bHlTZWxlY3RlZEZp
bGVOYW1lKCJzY3JpcHQxLmpzIik7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVx
dWFscyhmYWxzZSwgcGFuZWwuZm9yd2FyZEJ1dHRvbi5kaXNhYmxlZCk7CisKKyAgICAgICAgICAg
IHBhbmVsLmJhY2tCdXR0b24uY2xpY2soKTsKKyAgICAgICAgICAgIGNoZWNrQ3VycmVudGx5U2Vs
ZWN0ZWRGaWxlTmFtZSgiZGVidWdnZXItdGVzdC5qcyIpOworICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5hc3NlcnRFcXVhbHMoZmFsc2UsIHBhbmVsLmZvcndhcmRCdXR0b24uZGlzYWJsZWQpOwor
CisgICAgICAgICAgICBuZXh0KCk7CisgICAgICAgIH0KKyAgICBdKTsKK307CisKKzwvc2NyaXB0
PgorCis8L2hlYWQ+CisKKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KKzxwPlRlc3RzIHRoYXQg
c2NyaXB0cyBwYW5lbCBVSSBlbGVtZW50cyB3b3JrIGFzIGludGVuZGVkLjwvcD4KKworPC9ib2R5
PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA4MTNj
NDEyLi4yODdmZGUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDIgQEAKKzIwMTEtMDItMjIgIFBh
dmVsIFBvZGl2aWxvdiAgPHBvZGl2aWxvdkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogcmVmYWN0b3Ig
InNjcmlwdCBvciByZXNvdXJjZSIgbWVzcyBpbiBzY3JpcHRzIHBhbmVsLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTQ5NjEKKworICAgICAgICAtIFVz
ZSBzb3VyY2VOYW1lIGluc3RlYWQgb2Ygc2NyaXB0T3JSZXNvdXJjZQorICAgICAgICAtIFJlcGxh
Y2UgdHdvIGh1Z2UgZnVuY3Rpb25zIF9hZGRTY3JpcHRUb0ZpbGVzTWVudSBhbmQgX3Nob3dTY3Jp
cHRPclJlc291cmNlIHRoYXQgYXJlCisgICAgICAgICAgY2FsbGluZyBlYWNoIG90aGVyIHJlY3Vy
c2l2ZWx5IHdpdGggc21hbGwgb25lLXB1cnBvc2Ugbm9uLXJlY3Vyc2l2ZSBmdW5jdGlvbnMKKwor
ICAgICAgICBUZXN0OiBpbnNwZWN0b3IvZGVidWdnZXIvc2NyaXB0cy1wYW5lbC5odG1sCisKKyAg
ICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1NjcmlwdHNQYW5lbC5qczoKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5TY3JpcHRzUGFuZWwpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlwdHNQ
YW5lbC5wcm90b3R5cGUuZ2V0IGRlZmF1bHRGb2N1c2VkRWxlbWVudCk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuU2NyaXB0c1BhbmVsLnByb3RvdHlwZS5fc2NyaXB0U291cmNlQ2hhbmdlZCk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsLnByb3RvdHlwZS5fYWRkU2NyaXB0KToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwucHJvdG90eXBlLl9yZXNvdXJjZUxv
YWRpbmdGaW5pc2hlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsLnByb3Rv
dHlwZS5fYWRkT3B0aW9uVG9GaWxlc1NlbGVjdEFuZFNob3dTb3VyY2VGcmFtZUlmTmVlZGVkKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwucHJvdG90eXBlLl9hZGRPcHRpb25U
b0ZpbGVzU2VsZWN0Lm9wdGlvbkNvbXBhcmUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlw
dHNQYW5lbC5wcm90b3R5cGUuX2FkZE9wdGlvblRvRmlsZXNTZWxlY3QpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5wcm90b3R5cGUucmVzZXQpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLlNjcmlwdHNQYW5lbC5wcm90b3R5cGUuY2FuU2hvd1NvdXJjZUxpbmUpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5wcm90b3R5cGUuc2hvd1NvdXJjZUxpbmUpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5wcm90b3R5cGUuX3Nob3dTb3VyY2VG
cmFtZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsLnByb3RvdHlwZS5fc291
cmNlRnJhbWVGb3JTb3VyY2VOYW1lKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TY3JpcHRzUGFu
ZWwucHJvdG90eXBlLl9yZWNyZWF0ZVNvdXJjZUZyYW1lKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5TY3JpcHRzUGFuZWwucHJvdG90eXBlLl9zb3VyY2VGcmFtZUxvYWRlZCk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsLnByb3RvdHlwZS5fYWRkSXRlbVRvQmFja0ZvcndhcmRM
aXN0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwucHJvdG90eXBlLl9zb3Vy
Y2VOYW1lRm9yU2NyaXB0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwucHJv
dG90eXBlLl9zY3JpcHRGb3JTb3VyY2VOYW1lKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TY3Jp
cHRzUGFuZWwucHJvdG90eXBlLl9jYWxsRnJhbWVTZWxlY3RlZCk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuU2NyaXB0c1BhbmVsLnByb3RvdHlwZS5fZmlsZXNTZWxlY3RDaGFuZ2VkKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwucHJvdG90eXBlLl9nb0JhY2spOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5wcm90b3R5cGUuX2dvRm9yd2FyZCk6CisgICAg
ICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9Tb3VyY2VGcmFtZS5qczoKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5Tb3VyY2VGcmFtZS5wcm90b3R5cGUuc2V0RXhlY3V0aW9uTGluZSk6CisKIDIwMTEt
MDItMjIgIEFuZHJhcyBCZWNzaSAgPGFiZWNzaUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IExhc3psbyBHb21ib3MuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL1NjcmlwdHNQYW5lbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvU2NyaXB0c1BhbmVsLmpzCmluZGV4IGEyOTllNzYuLmQ1ZmViODggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0c1BhbmVsLmpzCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0c1BhbmVsLmpzCkBA
IC01MiwxMSArNTIsMTEgQEAgV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbCA9IGZ1bmN0aW9uKCkK
ICAgICB0aGlzLmZvcndhcmRCdXR0b24uYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0aGlzLl9n
b0ZvcndhcmQuYmluZCh0aGlzKSwgZmFsc2UpOwogICAgIHRoaXMudG9wU3RhdHVzQmFyLmFwcGVu
ZENoaWxkKHRoaXMuZm9yd2FyZEJ1dHRvbik7CiAKLSAgICB0aGlzLmZpbGVzU2VsZWN0RWxlbWVu
dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNlbGVjdCIpOwotICAgIHRoaXMuZmlsZXNTZWxl
Y3RFbGVtZW50LmNsYXNzTmFtZSA9ICJzdGF0dXMtYmFyLWl0ZW0iOwotICAgIHRoaXMuZmlsZXNT
ZWxlY3RFbGVtZW50LmlkID0gInNjcmlwdHMtZmlsZXMiOwotICAgIHRoaXMuZmlsZXNTZWxlY3RF
bGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNoYW5nZSIsIHRoaXMuX2NoYW5nZVZpc2libGVGaWxl
LmJpbmQodGhpcyksIGZhbHNlKTsKLSAgICB0aGlzLnRvcFN0YXR1c0Jhci5hcHBlbmRDaGlsZCh0
aGlzLmZpbGVzU2VsZWN0RWxlbWVudCk7CisgICAgdGhpcy5fZmlsZXNTZWxlY3RFbGVtZW50ID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2VsZWN0Iik7CisgICAgdGhpcy5fZmlsZXNTZWxlY3RF
bGVtZW50LmNsYXNzTmFtZSA9ICJzdGF0dXMtYmFyLWl0ZW0iOworICAgIHRoaXMuX2ZpbGVzU2Vs
ZWN0RWxlbWVudC5pZCA9ICJzY3JpcHRzLWZpbGVzIjsKKyAgICB0aGlzLl9maWxlc1NlbGVjdEVs
ZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY2hhbmdlIiwgdGhpcy5fZmlsZXNTZWxlY3RDaGFuZ2Vk
LmJpbmQodGhpcyksIGZhbHNlKTsKKyAgICB0aGlzLnRvcFN0YXR1c0Jhci5hcHBlbmRDaGlsZCh0
aGlzLl9maWxlc1NlbGVjdEVsZW1lbnQpOwogCiAgICAgdGhpcy5mdW5jdGlvbnNTZWxlY3RFbGVt
ZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2VsZWN0Iik7CiAgICAgdGhpcy5mdW5jdGlv
bnNTZWxlY3RFbGVtZW50LmNsYXNzTmFtZSA9ICJzdGF0dXMtYmFyLWl0ZW0iOwpAQCAtMjE1LDcg
KzIxNSw3IEBAIFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwucHJvdG90eXBlID0gewogCiAgICAg
Z2V0IGRlZmF1bHRGb2N1c2VkRWxlbWVudCgpCiAgICAgewotICAgICAgICByZXR1cm4gdGhpcy5m
aWxlc1NlbGVjdEVsZW1lbnQ7CisgICAgICAgIHJldHVybiB0aGlzLl9maWxlc1NlbGVjdEVsZW1l
bnQ7CiAgICAgfSwKIAogICAgIGdldCBwYXVzZWQoKQpAQCAtMjY1LDggKzI2NSw4IEBAIFdlYklu
c3BlY3Rvci5TY3JpcHRzUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICAgICAgc2NyaXB0LnJl
c291cmNlLnNldENvbnRlbnQoc2NyaXB0LnNvdXJjZSwgcmV2ZXJ0SGFuZGxlKTsKICAgICAgICAg
fQogCi0gICAgICAgIHZhciBzb3VyY2VOYW1lID0gc2NyaXB0LnNvdXJjZVVSTCB8fCBzY3JpcHQu
c291cmNlSUQ7Ci0gICAgICAgIHRoaXMuX3JlY3JlYXRlU291cmNlRnJhbWUoc291cmNlTmFtZSwg
c2NyaXB0LnJlc291cmNlIHx8IHNjcmlwdCk7CisgICAgICAgIHZhciBzb3VyY2VOYW1lID0gdGhp
cy5fc291cmNlTmFtZUZvclNjcmlwdChzY3JpcHQpOworICAgICAgICB0aGlzLl9yZWNyZWF0ZVNv
dXJjZUZyYW1lKHNvdXJjZU5hbWUpOwogCiAgICAgICAgIHZhciBjYWxsRnJhbWVzID0gV2ViSW5z
cGVjdG9yLmRlYnVnZ2VyTW9kZWwuY2FsbEZyYW1lczsKICAgICAgICAgaWYgKGNhbGxGcmFtZXMu
bGVuZ3RoKQpAQCAtMjk1LDExICsyOTUsMTEgQEAgV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5w
cm90b3R5cGUgPSB7CiAgICAgICAgICAgICAgICAgcmVzb3VyY2UuX3NjcmlwdHNQZW5kaW5nUmVz
b3VyY2VMb2FkLnB1c2goc2NyaXB0KTsKIAogICAgICAgICAgICAgICAgIC8vIFNvdXJjZSBmcmFt
ZSBjb250ZW50IGlzIG91dGRhdGVkIHNpbmNlIHdlIGhhdmUgbmV3IHNjcmlwdCBwYXJzZWQuCi0g
ICAgICAgICAgICAgICAgdGhpcy5fcmVjcmVhdGVTb3VyY2VGcmFtZShzY3JpcHQuc291cmNlVVJM
LCBzY3JpcHQucmVzb3VyY2UgfHwgc2NyaXB0KTsKKyAgICAgICAgICAgICAgICB0aGlzLl9yZWNy
ZWF0ZVNvdXJjZUZyYW1lKHNjcmlwdC5zb3VyY2VVUkwpOwogICAgICAgICAgICAgfQotICAgICAg
ICB9IGVsc2UgeworICAgICAgICB9IGVsc2UgaWYgKCEoc2NyaXB0LnNvdXJjZVVSTCBpbiB0aGlz
Ll9zb3VyY2VOYW1lVG9GaWxlc1NlbGVjdE9wdGlvbikpIHsKICAgICAgICAgICAgIC8vIFRoaXMg
aXMgYSBkeW5hbWljIHNjcmlwdCB3aXRoICIvL0Agc291cmNlVVJMPSIgY29tbWVudC4KLSAgICAg
ICAgICAgIHRoaXMuX2FkZFNjcmlwdFRvRmlsZXNNZW51KHNjcmlwdCk7CisgICAgICAgICAgICB0
aGlzLl9hZGRPcHRpb25Ub0ZpbGVzU2VsZWN0QW5kU2hvd1NvdXJjZUZyYW1lSWZOZWVkZWQoc2Ny
aXB0LnNvdXJjZVVSTCk7CiAgICAgICAgIH0KICAgICB9LAogCkBAIC0zMTIsMTggKzMxMiw1MyBA
QCBXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICB7CiAgICAgICAg
IHZhciByZXNvdXJjZSA9IGUudGFyZ2V0OwogCisgICAgICAgIC8vIEJpbmQgc2NyaXB0cyB0byBy
ZXNvdXJjZS4KICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCByZXNvdXJjZS5fc2NyaXB0c1Bl
bmRpbmdSZXNvdXJjZUxvYWQubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgIC8vIEJpbmQgc2Ny
aXB0IHRvIHJlc291cmNlLgogICAgICAgICAgICAgdmFyIHNjcmlwdCA9IHJlc291cmNlLl9zY3Jp
cHRzUGVuZGluZ1Jlc291cmNlTG9hZFtpXTsKICAgICAgICAgICAgIHNjcmlwdC5yZXNvdXJjZSA9
IHJlc291cmNlOwogICAgICAgICB9CisgICAgICAgIGRlbGV0ZSByZXNvdXJjZS5fc2NyaXB0c1Bl
bmRpbmdSZXNvdXJjZUxvYWQ7CiAKICAgICAgICAgLy8gUmVjcmVhdGUgc291cmNlIGZyYW1lIHRv
IHNob3cgcmVzb3VyY2UgY29udGVudC4KLSAgICAgICAgdGhpcy5fcmVjcmVhdGVTb3VyY2VGcmFt
ZShyZXNvdXJjZS51cmwsIHJlc291cmNlKTsKKyAgICAgICAgdGhpcy5fcmVjcmVhdGVTb3VyY2VG
cmFtZShyZXNvdXJjZS51cmwpOwogCi0gICAgICAgIC8vIEFkZGluZyBmaXJzdCBzY3JpcHQgd2ls
bCBhZGQgcmVzb3VyY2UuCi0gICAgICAgIHRoaXMuX2FkZFNjcmlwdFRvRmlsZXNNZW51KHJlc291
cmNlLl9zY3JpcHRzUGVuZGluZ1Jlc291cmNlTG9hZFswXSk7Ci0gICAgICAgIGRlbGV0ZSByZXNv
dXJjZS5fc2NyaXB0c1BlbmRpbmdSZXNvdXJjZUxvYWQ7CisgICAgICAgIC8vIEFkZCByZXNvdXJj
ZSB1cmwgdG8gZmlsZXMgc2VsZWN0IGlmIG5vdCBhbHJlYWR5IGFkZGVkIHdoaWxlIGRlYnVnZ2lu
ZyBpbmxpbmVkIHNjcmlwdHMuCisgICAgICAgIGlmICghKHJlc291cmNlLnVybCBpbiB0aGlzLl9z
b3VyY2VOYW1lVG9GaWxlc1NlbGVjdE9wdGlvbikpCisgICAgICAgICAgICB0aGlzLl9hZGRPcHRp
b25Ub0ZpbGVzU2VsZWN0QW5kU2hvd1NvdXJjZUZyYW1lSWZOZWVkZWQocmVzb3VyY2UudXJsKTsK
KyAgICB9LAorCisgICAgX2FkZE9wdGlvblRvRmlsZXNTZWxlY3RBbmRTaG93U291cmNlRnJhbWVJ
Zk5lZWRlZDogZnVuY3Rpb24odXJsKQorICAgIHsKKyAgICAgICAgdGhpcy5fYWRkT3B0aW9uVG9G
aWxlc1NlbGVjdCh1cmwpOworCisgICAgICAgIC8vIFNob3cgc291cmNlIGZyYW1lIGltbWVkaWF0
ZWx5IGluIHR3byBjYXNlczoKKyAgICAgICAgLy8gMSkgQWRkZWQgc2NyaXB0IHVybCBpcyB0aGUg
Zmlyc3QgaXRlbSBpbiBmaWxlcyBzZWxlY3QKKyAgICAgICAgLy8gMikgQWRkZWQgc2NyaXB0IHVy
bCBtYXRjaGVzIGxhc3Qgdmlld2VkIHNjcmlwdCB1cmwKKyAgICAgICAgaWYgKHRoaXMuX2ZpbGVz
U2VsZWN0RWxlbWVudC5sZW5ndGggPT09IDEgfHwgdXJsID09PSBXZWJJbnNwZWN0b3Iuc2V0dGlu
Z3MubGFzdFZpZXdlZFNjcmlwdEZpbGUpCisgICAgICAgICAgICB0aGlzLl9zaG93U291cmNlRnJh
bWUodXJsLCB0cnVlLCBmYWxzZSk7CisgICAgfSwKKworICAgIF9hZGRPcHRpb25Ub0ZpbGVzU2Vs
ZWN0OiBmdW5jdGlvbihzb3VyY2VOYW1lKQorICAgIHsKKyAgICAgICAgdmFyIHNjcmlwdCA9IHRo
aXMuX3NjcmlwdEZvclNvdXJjZU5hbWUoc291cmNlTmFtZSk7CisgICAgICAgIHZhciBzZWxlY3Qg
PSB0aGlzLl9maWxlc1NlbGVjdEVsZW1lbnQ7CisgICAgICAgIHZhciBvcHRpb24gPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJvcHRpb24iKTsKKyAgICAgICAgb3B0aW9uLnRleHQgPSBzY3JpcHQu
c291cmNlVVJMID8gV2ViSW5zcGVjdG9yLmRpc3BsYXlOYW1lRm9yVVJMKHNjcmlwdC5zb3VyY2VV
UkwpIDogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCIocHJvZ3JhbSkiKTsKKyAgICAgICAgaWYgKHNj
cmlwdC53b3JsZFR5cGUgPT09IFdlYkluc3BlY3Rvci5TY3JpcHQuV29ybGRUeXBlLkVYVEVOU0lP
TlNfV09STEQpCisgICAgICAgICAgICBvcHRpb24uYWRkU3R5bGVDbGFzcygiZXh0ZW5zaW9uLXNj
cmlwdCIpOworICAgICAgICBvcHRpb24uX3NvdXJjZU5hbWUgPSBzb3VyY2VOYW1lOworICAgICAg
ICBmdW5jdGlvbiBvcHRpb25Db21wYXJlKGEsIGIpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlm
IChhLnRleHQgPT09IGIudGV4dCkKKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAg
ICAgIHJldHVybiBhLnRleHQgPCBiLnRleHQgPyAtMSA6IDE7CisgICAgICAgIH0KKyAgICAgICAg
dmFyIGluc2VydGlvbkluZGV4ID0gaW5zZXJ0aW9uSW5kZXhGb3JPYmplY3RJbkxpc3RTb3J0ZWRC
eUZ1bmN0aW9uKG9wdGlvbiwgc2VsZWN0LmNoaWxkTm9kZXMsIG9wdGlvbkNvbXBhcmUpOworICAg
ICAgICBpZiAoaW5zZXJ0aW9uSW5kZXggPCAwKQorICAgICAgICAgICAgc2VsZWN0LmFwcGVuZENo
aWxkKG9wdGlvbik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHNlbGVjdC5pbnNlcnRCZWZv
cmUob3B0aW9uLCBzZWxlY3QuY2hpbGROb2Rlcy5pdGVtKGluc2VydGlvbkluZGV4KSk7CisgICAg
ICAgIHRoaXMuX3NvdXJjZU5hbWVUb0ZpbGVzU2VsZWN0T3B0aW9uW3NvdXJjZU5hbWVdID0gb3B0
aW9uOwogICAgIH0sCiAKICAgICBhZGRDb25zb2xlTWVzc2FnZTogZnVuY3Rpb24obWVzc2FnZSkK
QEAgLTQ1MCw3ICs0ODUsNyBAQCBXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsLnByb3RvdHlwZSA9
IHsKICAgICAgICAgdGhpcy5fc291cmNlTmFtZVRvU291cmNlRnJhbWUgPSB7fTsKICAgICAgICAg
dGhpcy5fc291cmNlTmFtZVRvRmlsZXNTZWxlY3RPcHRpb24gPSB7fTsKICAgICAgICAgdGhpcy5f
bWVzc2FnZXMgPSBbXTsKLSAgICAgICAgdGhpcy5maWxlc1NlbGVjdEVsZW1lbnQucmVtb3ZlQ2hp
bGRyZW4oKTsKKyAgICAgICAgdGhpcy5fZmlsZXNTZWxlY3RFbGVtZW50LnJlbW92ZUNoaWxkcmVu
KCk7CiAgICAgICAgIHRoaXMuZnVuY3Rpb25zU2VsZWN0RWxlbWVudC5yZW1vdmVDaGlsZHJlbigp
OwogICAgICAgICB0aGlzLnZpZXdzQ29udGFpbmVyRWxlbWVudC5yZW1vdmVDaGlsZHJlbigpOwog
CkBAIC00ODAsMzUgKzUxNSwxNSBAQCBXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsLnByb3RvdHlw
ZSA9IHsKIAogICAgIGNhblNob3dTb3VyY2VMaW5lOiBmdW5jdGlvbih1cmwsIGxpbmUpCiAgICAg
ewotICAgICAgICBpZiAoIXRoaXMuX2RlYnVnZ2VyRW5hYmxlZCkKLSAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICAgICAgcmV0dXJuICEhdGhpcy5fc2NyaXB0T3JSZXNvdXJjZUZvclVSTEFu
ZExpbmUodXJsLCBsaW5lKTsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2RlYnVnZ2VyRW5hYmxlZCAm
JiAodXJsIGluIHRoaXMuX3NvdXJjZU5hbWVUb0ZpbGVzU2VsZWN0T3B0aW9uKTsKICAgICB9LAog
CiAgICAgc2hvd1NvdXJjZUxpbmU6IGZ1bmN0aW9uKHVybCwgbGluZSkKICAgICB7Ci0gICAgICAg
IHZhciBzY3JpcHRPclJlc291cmNlID0gdGhpcy5fc2NyaXB0T3JSZXNvdXJjZUZvclVSTEFuZExp
bmUodXJsLCBsaW5lKTsKLSAgICAgICAgdGhpcy5fc2hvd1NjcmlwdE9yUmVzb3VyY2Uoc2NyaXB0
T3JSZXNvdXJjZSwge2xpbmU6IGxpbmUsIHNob3VsZEhpZ2hsaWdodExpbmU6IHRydWV9KTsKLSAg
ICB9LAotCi0gICAgX3NjcmlwdE9yUmVzb3VyY2VGb3JVUkxBbmRMaW5lOiBmdW5jdGlvbih1cmws
IGxpbmUpCi0gICAgewotICAgICAgICB2YXIgc2NyaXB0cyA9IFdlYkluc3BlY3Rvci5kZWJ1Z2dl
ck1vZGVsLnNjcmlwdHNGb3JVUkwodXJsKTsKLSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBz
Y3JpcHRzLmxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICB2YXIgc2NyaXB0ID0gc2NyaXB0c1tp
XTsKLSAgICAgICAgICAgIGlmIChzY3JpcHQucmVzb3VyY2UpCi0gICAgICAgICAgICAgICAgcmV0
dXJuIHNjcmlwdC5yZXNvdXJjZTsKLSAgICAgICAgICAgIGlmIChzY3JpcHQuc3RhcnRpbmdMaW5l
IDw9IGxpbmUgJiYgc2NyaXB0LnN0YXJ0aW5nTGluZSArIHNjcmlwdC5saW5lc0NvdW50ID4gbGlu
ZSkKLSAgICAgICAgICAgICAgICByZXR1cm4gc2NyaXB0OwotICAgICAgICB9Ci0gICAgICAgIHJl
dHVybiBudWxsOwotICAgIH0sCi0KLSAgICBzaG93VmlldzogZnVuY3Rpb24odmlldykKLSAgICB7
Ci0gICAgICAgIGlmICghdmlldykKKyAgICAgICAgaWYgKCEodXJsIGluIHRoaXMuX3NvdXJjZU5h
bWVUb0ZpbGVzU2VsZWN0T3B0aW9uKSkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgdGhp
cy5fc2hvd1NjcmlwdE9yUmVzb3VyY2Uodmlldy5yZXNvdXJjZSB8fCB2aWV3LnNjcmlwdCk7Cisg
ICAgICAgIHZhciBzb3VyY2VGcmFtZSA9IHRoaXMuX3Nob3dTb3VyY2VGcmFtZSh1cmwsIHRydWUs
IHRydWUpOworICAgICAgICBzb3VyY2VGcmFtZS5oaWdobGlnaHRMaW5lKGxpbmUpOwogICAgIH0s
CiAKICAgICBoYW5kbGVTaG9ydGN1dDogZnVuY3Rpb24oZXZlbnQpCkBAIC01MjIsNjIgKzUzNyw2
NCBAQCBXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAg
IHRoaXMuc2lkZWJhclBhbmVzLmNhbGxzdGFjay5oYW5kbGVTaG9ydGN1dChldmVudCk7CiAgICAg
fSwKIAotICAgIF9zb3VyY2VGcmFtZUZvclNjcmlwdE9yUmVzb3VyY2U6IGZ1bmN0aW9uKHNjcmlw
dE9yUmVzb3VyY2UpCisgICAgX3Nob3dTb3VyY2VGcmFtZTogZnVuY3Rpb24oc291cmNlTmFtZSwg
YWRkVG9CYWNrRm9yd2FyZExpc3QsIHNhdmVBc0xhc3RWaWV3ZWRTY3JpcHRGaWxlKQogICAgIHsK
LSAgICAgICAgaWYgKHNjcmlwdE9yUmVzb3VyY2UgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuUmVz
b3VyY2UpCi0gICAgICAgICAgICByZXR1cm4gdGhpcy5fc291cmNlRnJhbWVGb3JSZXNvdXJjZShz
Y3JpcHRPclJlc291cmNlKTsKLSAgICAgICAgcmV0dXJuIHRoaXMuX3NvdXJjZUZyYW1lRm9yU2Ny
aXB0KHNjcmlwdE9yUmVzb3VyY2UpOwotICAgIH0sCisgICAgICAgIHZhciBzY3JpcHQgPSB0aGlz
Ll9zY3JpcHRGb3JTb3VyY2VOYW1lKHNvdXJjZU5hbWUpOwogCi0gICAgX3NvdXJjZUZyYW1lRm9y
UmVzb3VyY2U6IGZ1bmN0aW9uKHJlc291cmNlKQotICAgIHsKLSAgICAgICAgdmFyIHNvdXJjZUZy
YW1lID0gdGhpcy5fc291cmNlTmFtZVRvU291cmNlRnJhbWVbcmVzb3VyY2UudXJsXTsKLSAgICAg
ICAgaWYgKHNvdXJjZUZyYW1lKQotICAgICAgICAgICAgcmV0dXJuIHNvdXJjZUZyYW1lOworICAg
ICAgICB2YXIgaW5kZXggPSB0aGlzLl9zb3VyY2VOYW1lVG9GaWxlc1NlbGVjdE9wdGlvbltzb3Vy
Y2VOYW1lXS5pbmRleDsKKyAgICAgICAgdGhpcy5fZmlsZXNTZWxlY3RFbGVtZW50LnNlbGVjdGVk
SW5kZXggPSBpbmRleDsKKworICAgICAgICB2YXIgc291cmNlRnJhbWUgPSB0aGlzLl9zb3VyY2VG
cmFtZUZvclNvdXJjZU5hbWUoc291cmNlTmFtZSk7CisgICAgICAgIHRoaXMudmlzaWJsZVZpZXcg
PSBzb3VyY2VGcmFtZTsKKworICAgICAgICBpZiAoYWRkVG9CYWNrRm9yd2FyZExpc3QpCisgICAg
ICAgICAgICB0aGlzLl9hZGRJdGVtVG9CYWNrRm9yd2FyZExpc3Qoc291cmNlTmFtZSk7CisKKyAg
ICAgICAgaWYgKHNhdmVBc0xhc3RWaWV3ZWRTY3JpcHRGaWxlICYmIHNjcmlwdC5zb3VyY2VVUkwp
CisgICAgICAgICAgICBXZWJJbnNwZWN0b3Iuc2V0dGluZ3MubGFzdFZpZXdlZFNjcmlwdEZpbGUg
PSBzY3JpcHQuc291cmNlVVJMOwogCi0gICAgICAgIHZhciBjb250ZW50UHJvdmlkZXIgPSBuZXcg
V2ViSW5zcGVjdG9yLlNvdXJjZUZyYW1lQ29udGVudFByb3ZpZGVyRm9yUmVzb3VyY2UocmVzb3Vy
Y2UpOwotICAgICAgICB2YXIgaXNTY3JpcHQgPSByZXNvdXJjZS50eXBlID09PSBXZWJJbnNwZWN0
b3IuUmVzb3VyY2UuVHlwZS5TY3JpcHQ7Ci0gICAgICAgIHNvdXJjZUZyYW1lID0gbmV3IFdlYklu
c3BlY3Rvci5Tb3VyY2VGcmFtZShjb250ZW50UHJvdmlkZXIsIHJlc291cmNlLnVybCwgaXNTY3Jp
cHQpOwotICAgICAgICB0aGlzLl9hZGRTb3VyY2VGcmFtZShyZXNvdXJjZS51cmwsIHNvdXJjZUZy
YW1lKTsKICAgICAgICAgcmV0dXJuIHNvdXJjZUZyYW1lOwogICAgIH0sCiAKLSAgICBfc291cmNl
RnJhbWVGb3JTY3JpcHQ6IGZ1bmN0aW9uKHNjcmlwdCkKKyAgICBfc291cmNlRnJhbWVGb3JTb3Vy
Y2VOYW1lOiBmdW5jdGlvbihzb3VyY2VOYW1lKQogICAgIHsKLSAgICAgICAgdmFyIHNvdXJjZU5h
bWUgPSBzY3JpcHQuc291cmNlVVJMIHx8IHNjcmlwdC5zb3VyY2VJRDsKICAgICAgICAgdmFyIHNv
dXJjZUZyYW1lID0gdGhpcy5fc291cmNlTmFtZVRvU291cmNlRnJhbWVbc291cmNlTmFtZV07CiAg
ICAgICAgIGlmIChzb3VyY2VGcmFtZSkKICAgICAgICAgICAgIHJldHVybiBzb3VyY2VGcmFtZTsK
IAotICAgICAgICB2YXIgY29udGVudFByb3ZpZGVyID0gbmV3IFdlYkluc3BlY3Rvci5Tb3VyY2VG
cmFtZUNvbnRlbnRQcm92aWRlckZvclNjcmlwdChzY3JpcHQpOwotICAgICAgICB2YXIgaXNTY3Jp
cHQgPSAhc2NyaXB0LmxpbmVPZmZzZXQgJiYgIXNjcmlwdC5jb2x1bW5PZmZzZXQ7CisgICAgICAg
IHZhciBzY3JpcHQgPSB0aGlzLl9zY3JpcHRGb3JTb3VyY2VOYW1lKHNvdXJjZU5hbWUpOworICAg
ICAgICB2YXIgY29udGVudFByb3ZpZGVyOworICAgICAgICB2YXIgaXNTY3JpcHQ7CisgICAgICAg
IGlmIChzY3JpcHQucmVzb3VyY2UpIHsKKyAgICAgICAgICAgIGNvbnRlbnRQcm92aWRlciA9IG5l
dyBXZWJJbnNwZWN0b3IuU291cmNlRnJhbWVDb250ZW50UHJvdmlkZXJGb3JSZXNvdXJjZShzY3Jp
cHQucmVzb3VyY2UpOworICAgICAgICAgICAgaXNTY3JpcHQgPSBzY3JpcHQucmVzb3VyY2UudHlw
ZSA9PT0gV2ViSW5zcGVjdG9yLlJlc291cmNlLlR5cGUuU2NyaXB0OworICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgY29udGVudFByb3ZpZGVyID0gbmV3IFdlYkluc3BlY3Rvci5Tb3VyY2VG
cmFtZUNvbnRlbnRQcm92aWRlckZvclNjcmlwdChzY3JpcHQpOworICAgICAgICAgICAgaXNTY3Jp
cHQgPSAhc2NyaXB0LmxpbmVPZmZzZXQgJiYgIXNjcmlwdC5jb2x1bW5PZmZzZXQ7CisgICAgICAg
IH0KICAgICAgICAgc291cmNlRnJhbWUgPSBuZXcgV2ViSW5zcGVjdG9yLlNvdXJjZUZyYW1lKGNv
bnRlbnRQcm92aWRlciwgc2NyaXB0LnNvdXJjZVVSTCwgaXNTY3JpcHQpOwotICAgICAgICB0aGlz
Ll9hZGRTb3VyY2VGcmFtZShzb3VyY2VOYW1lLCBzb3VyY2VGcmFtZSk7CisgICAgICAgIHNvdXJj
ZUZyYW1lLl9zb3VyY2VOYW1lID0gc291cmNlTmFtZTsKKyAgICAgICAgc291cmNlRnJhbWUuYWRk
RXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuU291cmNlRnJhbWUuRXZlbnRzLkxvYWRlZCwgdGhp
cy5fc291cmNlRnJhbWVMb2FkZWQsIHRoaXMpOworICAgICAgICB0aGlzLl9zb3VyY2VOYW1lVG9T
b3VyY2VGcmFtZVtzb3VyY2VOYW1lXSA9IHNvdXJjZUZyYW1lOwogICAgICAgICByZXR1cm4gc291
cmNlRnJhbWU7CiAgICAgfSwKIAotICAgIF9yZWNyZWF0ZVNvdXJjZUZyYW1lOiBmdW5jdGlvbihz
b3VyY2VOYW1lLCBzY3JpcHRPclJlc291cmNlKQorICAgIF9yZWNyZWF0ZVNvdXJjZUZyYW1lOiBm
dW5jdGlvbihzb3VyY2VOYW1lKQogICAgIHsKICAgICAgICAgdmFyIG9sZFNvdXJjZUZyYW1lID0g
dGhpcy5fc291cmNlTmFtZVRvU291cmNlRnJhbWVbc291cmNlTmFtZV07CiAgICAgICAgIGlmICgh
b2xkU291cmNlRnJhbWUpCiAgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG9sZFNvdXJjZUZy
YW1lLnJlbW92ZUV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlNvdXJjZUZyYW1lLkV2ZW50cy5M
b2FkZWQsIHRoaXMuX3NvdXJjZUZyYW1lTG9hZGVkLCB0aGlzKTsKICAgICAgICAgZGVsZXRlIHRo
aXMuX3NvdXJjZU5hbWVUb1NvdXJjZUZyYW1lW3NvdXJjZU5hbWVdOwogICAgICAgICBvbGRTb3Vy
Y2VGcmFtZS5yZW1vdmVFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5Tb3VyY2VGcmFtZS5FdmVu
dHMuTG9hZGVkLCB0aGlzLl9zb3VyY2VGcmFtZUxvYWRlZCwgdGhpcyk7CiAgICAgICAgIGlmICh0
aGlzLnZpc2libGVWaWV3ICE9PSBvbGRTb3VyY2VGcmFtZSkKICAgICAgICAgICAgIHJldHVybjsK
IAotICAgICAgICB2YXIgbmV3U291cmNlRnJhbWUgPSB0aGlzLl9zb3VyY2VGcmFtZUZvclNjcmlw
dE9yUmVzb3VyY2Uoc2NyaXB0T3JSZXNvdXJjZSkKKyAgICAgICAgdmFyIG5ld1NvdXJjZUZyYW1l
ID0gdGhpcy5fc291cmNlRnJhbWVGb3JTb3VyY2VOYW1lKHNvdXJjZU5hbWUpCiAgICAgICAgIG5l
d1NvdXJjZUZyYW1lLnNjcm9sbFRvcCA9IG9sZFNvdXJjZUZyYW1lLnNjcm9sbFRvcDsKICAgICAg
ICAgdGhpcy52aXNpYmxlVmlldyA9IG5ld1NvdXJjZUZyYW1lOwogICAgIH0sCiAKLSAgICBfYWRk
U291cmNlRnJhbWU6IGZ1bmN0aW9uKHNvdXJjZU5hbWUsIHNvdXJjZUZyYW1lKQotICAgIHsKLSAg
ICAgICAgc291cmNlRnJhbWUuX3NvdXJjZU5hbWUgPSBzb3VyY2VOYW1lOwotICAgICAgICBzb3Vy
Y2VGcmFtZS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5Tb3VyY2VGcmFtZS5FdmVudHMu
TG9hZGVkLCB0aGlzLl9zb3VyY2VGcmFtZUxvYWRlZCwgdGhpcyk7Ci0gICAgICAgIHRoaXMuX3Nv
dXJjZU5hbWVUb1NvdXJjZUZyYW1lW3NvdXJjZU5hbWVdID0gc291cmNlRnJhbWU7Ci0gICAgfSwK
LQogICAgIF9zb3VyY2VGcmFtZUxvYWRlZDogZnVuY3Rpb24oZXZlbnQpCiAgICAgewogICAgICAg
ICB2YXIgc291cmNlRnJhbWUgPSBldmVudC50YXJnZXQ7CkBAIC01OTgsMTE3ICs2MTUsNDMgQEAg
V2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHZhciBzZWxl
Y3RlZENhbGxGcmFtZSA9IHRoaXMuc2lkZWJhclBhbmVzLmNhbGxzdGFjay5zZWxlY3RlZENhbGxG
cmFtZTsKICAgICAgICAgaWYgKHNlbGVjdGVkQ2FsbEZyYW1lKSB7CiAgICAgICAgICAgICB2YXIg
c2NyaXB0ID0gV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTW9kZWwuc2NyaXB0Rm9yU291cmNlSUQoc2Vs
ZWN0ZWRDYWxsRnJhbWUuc291cmNlSUQpOwotICAgICAgICAgICAgaWYgKChzY3JpcHQuc291cmNl
VVJMIHx8IHNjcmlwdC5zb3VyY2VJRCkgPT09IHNvdXJjZU5hbWUpIHsKKyAgICAgICAgICAgIGlm
ICh0aGlzLl9zb3VyY2VOYW1lRm9yU2NyaXB0KHNjcmlwdCkgPT09IHNvdXJjZU5hbWUpIHsKICAg
ICAgICAgICAgICAgICBzb3VyY2VGcmFtZS5zZXRFeGVjdXRpb25MaW5lKHNlbGVjdGVkQ2FsbEZy
YW1lLmxpbmUpOwogICAgICAgICAgICAgICAgIHRoaXMuX2V4ZWN1dGlvblNvdXJjZUZyYW1lID0g
c291cmNlRnJhbWU7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9LAogCi0gICAgX3No
b3dTY3JpcHRPclJlc291cmNlOiBmdW5jdGlvbihzY3JpcHRPclJlc291cmNlLCBvcHRpb25zKQor
ICAgIF9hZGRJdGVtVG9CYWNrRm9yd2FyZExpc3Q6IGZ1bmN0aW9uKHNvdXJjZU5hbWUpCiAgICAg
ewotICAgICAgICAvLyBvcHRpb25zID0ge2xpbmU6LCBzaG91bGRIaWdobGlnaHRMaW5lOiwgZnJv
bUJhY2tGb3J3YXJkQWN0aW9uOiwgaW5pdGlhbExvYWQ6fQotICAgICAgICBvcHRpb25zID0gb3B0
aW9ucyB8fCB7fTsKLQotICAgICAgICBpZiAoIXNjcmlwdE9yUmVzb3VyY2UpCi0gICAgICAgICAg
ICByZXR1cm47Ci0KLSAgICAgICAgdmFyIHZpZXcgPSB0aGlzLl9zb3VyY2VGcmFtZUZvclNjcmlw
dE9yUmVzb3VyY2Uoc2NyaXB0T3JSZXNvdXJjZSk7Ci0gICAgICAgIGlmICghdmlldykKLSAgICAg
ICAgICAgIHJldHVybjsKLQotICAgICAgICB2YXIgdXJsID0gc2NyaXB0T3JSZXNvdXJjZS51cmwg
fHwgc2NyaXB0T3JSZXNvdXJjZS5zb3VyY2VVUkw7Ci0gICAgICAgIGlmICh1cmwgJiYgIW9wdGlv
bnMuaW5pdGlhbExvYWQpCi0gICAgICAgICAgICBXZWJJbnNwZWN0b3Iuc2V0dGluZ3MubGFzdFZp
ZXdlZFNjcmlwdEZpbGUgPSB1cmw7Ci0KLSAgICAgICAgaWYgKCFvcHRpb25zLmZyb21CYWNrRm9y
d2FyZEFjdGlvbikgewotICAgICAgICAgICAgdmFyIG9sZEluZGV4ID0gdGhpcy5fY3VycmVudEJh
Y2tGb3J3YXJkSW5kZXg7Ci0gICAgICAgICAgICBpZiAob2xkSW5kZXggPj0gMCkKLSAgICAgICAg
ICAgICAgICB0aGlzLl9iYWNrRm9yd2FyZExpc3Quc3BsaWNlKG9sZEluZGV4ICsgMSwgdGhpcy5f
YmFja0ZvcndhcmRMaXN0Lmxlbmd0aCAtIG9sZEluZGV4KTsKLQotICAgICAgICAgICAgLy8gQ2hl
Y2sgZm9yIGEgcHJldmlvdXMgZW50cnkgb2YgdGhlIHNhbWUgb2JqZWN0IGluIF9iYWNrRm9yd2Fy
ZExpc3QuCi0gICAgICAgICAgICAvLyBJZiBvbmUgaXMgZm91bmQsIHJlbW92ZSBpdCBhbmQgdXBk
YXRlIF9jdXJyZW50QmFja0ZvcndhcmRJbmRleCB0byBtYXRjaC4KLSAgICAgICAgICAgIHZhciBw
cmV2aW91c0VudHJ5SW5kZXggPSB0aGlzLl9iYWNrRm9yd2FyZExpc3QuaW5kZXhPZihzY3JpcHRP
clJlc291cmNlKTsKLSAgICAgICAgICAgIGlmIChwcmV2aW91c0VudHJ5SW5kZXggIT09IC0xKSB7
Ci0gICAgICAgICAgICAgICAgdGhpcy5fYmFja0ZvcndhcmRMaXN0LnNwbGljZShwcmV2aW91c0Vu
dHJ5SW5kZXgsIDEpOwotICAgICAgICAgICAgICAgIC0tdGhpcy5fY3VycmVudEJhY2tGb3J3YXJk
SW5kZXg7Ci0gICAgICAgICAgICB9CisgICAgICAgIHZhciBvbGRJbmRleCA9IHRoaXMuX2N1cnJl
bnRCYWNrRm9yd2FyZEluZGV4OworICAgICAgICBpZiAob2xkSW5kZXggPj0gMCkKKyAgICAgICAg
ICAgIHRoaXMuX2JhY2tGb3J3YXJkTGlzdC5zcGxpY2Uob2xkSW5kZXggKyAxLCB0aGlzLl9iYWNr
Rm9yd2FyZExpc3QubGVuZ3RoIC0gb2xkSW5kZXgpOwogCi0gICAgICAgICAgICB0aGlzLl9iYWNr
Rm9yd2FyZExpc3QucHVzaChzY3JpcHRPclJlc291cmNlKTsKLSAgICAgICAgICAgICsrdGhpcy5f
Y3VycmVudEJhY2tGb3J3YXJkSW5kZXg7CisgICAgICAgIC8vIENoZWNrIGZvciBhIHByZXZpb3Vz
IGVudHJ5IG9mIHRoZSBzYW1lIG9iamVjdCBpbiBfYmFja0ZvcndhcmRMaXN0LgorICAgICAgICAv
LyBJZiBvbmUgaXMgZm91bmQsIHJlbW92ZSBpdC4KKyAgICAgICAgdmFyIHByZXZpb3VzRW50cnlJ
bmRleCA9IHRoaXMuX2JhY2tGb3J3YXJkTGlzdC5pbmRleE9mKHNvdXJjZU5hbWUpOworICAgICAg
ICBpZiAocHJldmlvdXNFbnRyeUluZGV4ICE9PSAtMSkKKyAgICAgICAgICAgIHRoaXMuX2JhY2tG
b3J3YXJkTGlzdC5zcGxpY2UocHJldmlvdXNFbnRyeUluZGV4LCAxKTsKIAotICAgICAgICAgICAg
dGhpcy5fdXBkYXRlQmFja0FuZEZvcndhcmRCdXR0b25zKCk7Ci0gICAgICAgIH0KLQotICAgICAg
ICB0aGlzLnZpc2libGVWaWV3ID0gdmlldzsKLQotICAgICAgICBpZiAob3B0aW9ucy5saW5lKSB7
Ci0gICAgICAgICAgICBpZiAodmlldy5yZXZlYWxMaW5lKQotICAgICAgICAgICAgICAgIHZpZXcu
cmV2ZWFsTGluZShvcHRpb25zLmxpbmUpOwotICAgICAgICAgICAgaWYgKHZpZXcuaGlnaGxpZ2h0
TGluZSAmJiBvcHRpb25zLnNob3VsZEhpZ2hsaWdodExpbmUpCi0gICAgICAgICAgICAgICAgdmll
dy5oaWdobGlnaHRMaW5lKG9wdGlvbnMubGluZSk7Ci0gICAgICAgIH0KLQotICAgICAgICB2YXIg
b3B0aW9uOwotICAgICAgICBpZiAoc2NyaXB0T3JSZXNvdXJjZSBpbnN0YW5jZW9mIFdlYkluc3Bl
Y3Rvci5TY3JpcHQpIHsKLSAgICAgICAgICAgIHZhciBzb3VyY2VOYW1lID0gc2NyaXB0T3JSZXNv
dXJjZS5zb3VyY2VVUkwgfHwgc2NyaXB0T3JSZXNvdXJjZS5zb3VyY2VJRDsKLSAgICAgICAgICAg
IG9wdGlvbiA9IHRoaXMuX3NvdXJjZU5hbWVUb0ZpbGVzU2VsZWN0T3B0aW9uW3NvdXJjZU5hbWVd
OwotCi0gICAgICAgICAgICAvLyBIYXNuJ3QgYmVlbiBhZGRlZCB5ZXQgLSBoYXBwZW5zIGZvciBz
dGVwcGluZyBpbiBpbmxpbmUgc2NyaXB0cyBhbmQgZXZhbHMuCi0gICAgICAgICAgICBpZiAoIW9w
dGlvbikgewotICAgICAgICAgICAgICAgIHRoaXMuX2FkZFNjcmlwdFRvRmlsZXNNZW51KHNjcmlw
dE9yUmVzb3VyY2UpOwotICAgICAgICAgICAgICAgIG9wdGlvbiA9IHRoaXMuX3NvdXJjZU5hbWVU
b0ZpbGVzU2VsZWN0T3B0aW9uW3NvdXJjZU5hbWVdOwotICAgICAgICAgICAgfQotCi0gICAgICAg
ICAgICBjb25zb2xlLmFzc2VydChvcHRpb24pOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAg
IG9wdGlvbiA9IHRoaXMuX3NvdXJjZU5hbWVUb0ZpbGVzU2VsZWN0T3B0aW9uW3NjcmlwdE9yUmVz
b3VyY2UudXJsXTsKKyAgICAgICAgdGhpcy5fYmFja0ZvcndhcmRMaXN0LnB1c2goc291cmNlTmFt
ZSk7CisgICAgICAgIHRoaXMuX2N1cnJlbnRCYWNrRm9yd2FyZEluZGV4ID0gdGhpcy5fYmFja0Zv
cndhcmRMaXN0Lmxlbmd0aCAtIDE7CiAKLSAgICAgICAgaWYgKG9wdGlvbikKLSAgICAgICAgICAg
IHRoaXMuZmlsZXNTZWxlY3RFbGVtZW50LnNlbGVjdGVkSW5kZXggPSBvcHRpb24uaW5kZXg7Cisg
ICAgICAgIHRoaXMuX3VwZGF0ZUJhY2tBbmRGb3J3YXJkQnV0dG9ucygpOwogICAgIH0sCiAKLSAg
ICBfYWRkU2NyaXB0VG9GaWxlc01lbnU6IGZ1bmN0aW9uKHNjcmlwdCkKKyAgICBfc291cmNlTmFt
ZUZvclNjcmlwdDogZnVuY3Rpb24oc2NyaXB0KQogICAgIHsKLSAgICAgICAgdmFyIHNvdXJjZU5h
bWUgPSBzY3JpcHQuc291cmNlVVJMIHx8IHNjcmlwdC5zb3VyY2VJRDsKLSAgICAgICAgaWYgKHNv
dXJjZU5hbWUgaW4gdGhpcy5fc291cmNlTmFtZVRvRmlsZXNTZWxlY3RPcHRpb24pCi0gICAgICAg
ICAgICByZXR1cm47Ci0KLSAgICAgICAgdmFyIGRpc3BsYXlOYW1lID0gc2NyaXB0LnNvdXJjZVVS
TCA/IFdlYkluc3BlY3Rvci5kaXNwbGF5TmFtZUZvclVSTChzY3JpcHQuc291cmNlVVJMKSA6IFdl
Ykluc3BlY3Rvci5VSVN0cmluZygiKHByb2dyYW0pIik7Ci0KLSAgICAgICAgdmFyIHNlbGVjdCA9
IHRoaXMuZmlsZXNTZWxlY3RFbGVtZW50OwotICAgICAgICB2YXIgb3B0aW9uID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgib3B0aW9uIik7Ci0gICAgICAgIG9wdGlvbi5yZXByZXNlbnRlZE9iamVj
dCA9IHNjcmlwdC5yZXNvdXJjZSB8fCBzY3JpcHQ7Ci0gICAgICAgIG9wdGlvbi50ZXh0ID0gZGlz
cGxheU5hbWU7Ci0gICAgICAgIHRoaXMuX3NvdXJjZU5hbWVUb0ZpbGVzU2VsZWN0T3B0aW9uW3Nv
dXJjZU5hbWVdID0gb3B0aW9uOworICAgICAgICByZXR1cm4gc2NyaXB0LnNvdXJjZVVSTCB8fCBz
Y3JpcHQuc291cmNlSUQ7CisgICAgfSwKIAotICAgICAgICBmdW5jdGlvbiBvcHRpb25Db21wYXJl
KGEsIGIpCisgICAgX3NjcmlwdEZvclNvdXJjZU5hbWU6IGZ1bmN0aW9uKHNvdXJjZU5hbWUpCisg
ICAgeworICAgICAgICBmdW5jdGlvbiBmaWx0ZXIoc2NyaXB0KQogICAgICAgICB7Ci0gICAgICAg
ICAgICBpZiAoYS50ZXh0ID09PSBiLnRleHQpCi0gICAgICAgICAgICAgICAgcmV0dXJuIDA7Ci0g
ICAgICAgICAgICByZXR1cm4gYS50ZXh0IDwgYi50ZXh0ID8gLTEgOiAxOworICAgICAgICAgICAg
cmV0dXJuIChzY3JpcHQuc291cmNlVVJMIHx8IHNjcmlwdC5zb3VyY2VJRCkgPT09IHNvdXJjZU5h
bWU7CiAgICAgICAgIH0KLQotICAgICAgICB2YXIgaW5zZXJ0aW9uSW5kZXggPSBpbnNlcnRpb25J
bmRleEZvck9iamVjdEluTGlzdFNvcnRlZEJ5RnVuY3Rpb24ob3B0aW9uLCBzZWxlY3QuY2hpbGRO
b2Rlcywgb3B0aW9uQ29tcGFyZSk7Ci0gICAgICAgIGlmIChpbnNlcnRpb25JbmRleCA8IDApCi0g
ICAgICAgICAgICBzZWxlY3QuYXBwZW5kQ2hpbGQob3B0aW9uKTsKLSAgICAgICAgZWxzZQotICAg
ICAgICAgICAgc2VsZWN0Lmluc2VydEJlZm9yZShvcHRpb24sIHNlbGVjdC5jaGlsZE5vZGVzLml0
ZW0oaW5zZXJ0aW9uSW5kZXgpKTsKLQotICAgICAgICBpZiAoc2VsZWN0Lm9wdGlvbnNbc2VsZWN0
LnNlbGVjdGVkSW5kZXhdID09PSBvcHRpb24pIHsKLSAgICAgICAgICAgIC8vIENhbGwgX3Nob3dT
Y3JpcHRPclJlc291cmNlIGlmIHRoZSBvcHRpb24gd2UganVzdCBhcHBlbmRlZCBlbmRlZCB1cCBi
ZWluZyBzZWxlY3RlZC4KLSAgICAgICAgICAgIC8vIFRoaXMgd2lsbCBoYXBwZW4gZm9yIHRoZSBm
aXJzdCBpdGVtIGFkZGVkIHRvIHRoZSBtZW51LgotICAgICAgICAgICAgdGhpcy5fc2hvd1Njcmlw
dE9yUmVzb3VyY2Uob3B0aW9uLnJlcHJlc2VudGVkT2JqZWN0LCB7aW5pdGlhbExvYWQ6IHRydWV9
KTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIC8vIElmIG5vdCBmaXJzdCBpdGVtLCBj
aGVjayB0byBzZWUgaWYgdGhpcyB3YXMgdGhlIGxhc3Qgdmlld2VkCi0gICAgICAgICAgICB2YXIg
dXJsID0gb3B0aW9uLnJlcHJlc2VudGVkT2JqZWN0LnVybCB8fCBvcHRpb24ucmVwcmVzZW50ZWRP
YmplY3Quc291cmNlVVJMOwotICAgICAgICAgICAgdmFyIGxhc3RVUkwgPSBXZWJJbnNwZWN0b3Iu
c2V0dGluZ3MubGFzdFZpZXdlZFNjcmlwdEZpbGU7Ci0gICAgICAgICAgICBpZiAodXJsICYmIHVy
bCA9PT0gbGFzdFVSTCkKLSAgICAgICAgICAgICAgICB0aGlzLl9zaG93U2NyaXB0T3JSZXNvdXJj
ZShvcHRpb24ucmVwcmVzZW50ZWRPYmplY3QsIHtpbml0aWFsTG9hZDogdHJ1ZX0pOwotICAgICAg
ICB9Ci0KLSAgICAgICAgaWYgKHNjcmlwdC53b3JsZFR5cGUgPT09IFdlYkluc3BlY3Rvci5TY3Jp
cHQuV29ybGRUeXBlLkVYVEVOU0lPTlNfV09STEQpCi0gICAgICAgICAgICBvcHRpb24uYWRkU3R5
bGVDbGFzcygiZXh0ZW5zaW9uLXNjcmlwdCIpOworICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9y
LmRlYnVnZ2VyTW9kZWwucXVlcnlTY3JpcHRzKGZpbHRlcilbMF07CiAgICAgfSwKIAogICAgIF9j
bGVhckN1cnJlbnRFeGVjdXRpb25MaW5lOiBmdW5jdGlvbigpCkBAIC03MzEsMjAgKzY3NCwyNCBA
QCBXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5z
aWRlYmFyUGFuZXMud2F0Y2hFeHByZXNzaW9ucy5yZWZyZXNoRXhwcmVzc2lvbnMoKTsKIAogICAg
ICAgICB2YXIgc2NyaXB0ID0gV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTW9kZWwuc2NyaXB0Rm9yU291
cmNlSUQoY3VycmVudEZyYW1lLnNvdXJjZUlEKTsKLSAgICAgICAgdmFyIHNjcmlwdE9yUmVzb3Vy
Y2UgPSBzY3JpcHQucmVzb3VyY2UgfHwgc2NyaXB0OwotICAgICAgICB0aGlzLl9zaG93U2NyaXB0
T3JSZXNvdXJjZShzY3JpcHRPclJlc291cmNlLCB7bGluZTogY3VycmVudEZyYW1lLmxpbmV9KTsK
LQotICAgICAgICB2YXIgc291cmNlRnJhbWUgPSB0aGlzLl9zb3VyY2VGcmFtZUZvclNjcmlwdE9y
UmVzb3VyY2Uoc2NyaXB0T3JSZXNvdXJjZSk7Ci0gICAgICAgIGlmIChzb3VyY2VGcmFtZSAmJiBz
b3VyY2VGcmFtZS5sb2FkZWQpIHsKKyAgICAgICAgdmFyIHNvdXJjZU5hbWUgPSB0aGlzLl9zb3Vy
Y2VOYW1lRm9yU2NyaXB0KHNjcmlwdCk7CisgICAgICAgIGlmICghKHNvdXJjZU5hbWUgaW4gdGhp
cy5fc291cmNlTmFtZVRvRmlsZXNTZWxlY3RPcHRpb24pKSB7CisgICAgICAgICAgICAvLyBUaGlz
IGhhcHBlbnMgaW4gdHdvIGNhc2VzOgorICAgICAgICAgICAgLy8gMSkgQ3VycmVudCBjYWxsIGZy
YW1lIGZ1bmN0aW9uIGlzIGRlZmluZWQgaW4gYW5vbnltb3VzIHNjcmlwdCAoYW5vbnltb3VzIHNj
cmlwdHMgYXJlbid0IGFkZGVkIHRvIGZpbGVzIHNlbGVjdCBieSBkZWZhdWx0KQorICAgICAgICAg
ICAgLy8gMikgV2UgYXJlIGRlYnVnZ2luZyBzeW5jaHJvbm91c2x5IGV4ZWN1dGVkIGlubGluZWQg
c2NyaXB0IGFuZCB0aGVyZSBpcyBubyByZXNvdXJjZSBzbyBmYXIKKyAgICAgICAgICAgIHRoaXMu
X2FkZE9wdGlvblRvRmlsZXNTZWxlY3Qoc291cmNlTmFtZSk7CisgICAgICAgIH0KKyAgICAgICAg
dmFyIHNvdXJjZUZyYW1lID0gdGhpcy5fc2hvd1NvdXJjZUZyYW1lKHNvdXJjZU5hbWUsIHRydWUs
IHRydWUpOworICAgICAgICBpZiAoc291cmNlRnJhbWUubG9hZGVkKSB7CiAgICAgICAgICAgICBz
b3VyY2VGcmFtZS5zZXRFeGVjdXRpb25MaW5lKGN1cnJlbnRGcmFtZS5saW5lKTsKICAgICAgICAg
ICAgIHRoaXMuX2V4ZWN1dGlvblNvdXJjZUZyYW1lID0gc291cmNlRnJhbWU7CiAgICAgICAgIH0K
ICAgICB9LAogCi0gICAgX2NoYW5nZVZpc2libGVGaWxlOiBmdW5jdGlvbihldmVudCkKKyAgICBf
ZmlsZXNTZWxlY3RDaGFuZ2VkOiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICB2YXIgc2VsZWN0
ID0gdGhpcy5maWxlc1NlbGVjdEVsZW1lbnQ7Ci0gICAgICAgIHRoaXMuX3Nob3dTY3JpcHRPclJl
c291cmNlKHNlbGVjdC5vcHRpb25zW3NlbGVjdC5zZWxlY3RlZEluZGV4XS5yZXByZXNlbnRlZE9i
amVjdCk7CisgICAgICAgIHZhciBzb3VyY2VOYW1lID0gdGhpcy5fZmlsZXNTZWxlY3RFbGVtZW50
W3RoaXMuX2ZpbGVzU2VsZWN0RWxlbWVudC5zZWxlY3RlZEluZGV4XS5fc291cmNlTmFtZTsKKyAg
ICAgICAgdGhpcy5fc2hvd1NvdXJjZUZyYW1lKHNvdXJjZU5hbWUsIHRydWUsIHRydWUpOwogICAg
IH0sCiAKICAgICBfc3RhcnRTaWRlYmFyUmVzaXplRHJhZzogZnVuY3Rpb24oZXZlbnQpCkBAIC04
NjIsNyArODA5LDcgQEAgV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5wcm90b3R5cGUgPSB7CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICB0aGlzLl9zaG93U2NyaXB0
T3JSZXNvdXJjZSh0aGlzLl9iYWNrRm9yd2FyZExpc3RbLS10aGlzLl9jdXJyZW50QmFja0Zvcndh
cmRJbmRleF0sIHtmcm9tQmFja0ZvcndhcmRBY3Rpb246IHRydWV9KTsKKyAgICAgICAgdGhpcy5f
c2hvd1NvdXJjZUZyYW1lKHRoaXMuX2JhY2tGb3J3YXJkTGlzdFstLXRoaXMuX2N1cnJlbnRCYWNr
Rm9yd2FyZEluZGV4XSwgZmFsc2UsIHRydWUpOwogICAgICAgICB0aGlzLl91cGRhdGVCYWNrQW5k
Rm9yd2FyZEJ1dHRvbnMoKTsKICAgICB9LAogCkBAIC04NzMsNyArODIwLDcgQEAgV2ViSW5zcGVj
dG9yLlNjcmlwdHNQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KIAotICAgICAgICB0aGlzLl9zaG93U2NyaXB0T3JSZXNvdXJjZSh0aGlzLl9iYWNrRm9y
d2FyZExpc3RbKyt0aGlzLl9jdXJyZW50QmFja0ZvcndhcmRJbmRleF0sIHtmcm9tQmFja0Zvcndh
cmRBY3Rpb246IHRydWV9KTsKKyAgICAgICAgdGhpcy5fc2hvd1NvdXJjZUZyYW1lKHRoaXMuX2Jh
Y2tGb3J3YXJkTGlzdFsrK3RoaXMuX2N1cnJlbnRCYWNrRm9yd2FyZEluZGV4XSwgZmFsc2UsIHRy
dWUpOwogICAgICAgICB0aGlzLl91cGRhdGVCYWNrQW5kRm9yd2FyZEJ1dHRvbnMoKTsKICAgICB9
LAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NvdXJj
ZUZyYW1lLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Tb3VyY2VGcmFt
ZS5qcwppbmRleCBkMzcyY2IzLi44MDUxOGIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL1NvdXJjZUZyYW1lLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvU291cmNlRnJhbWUuanMKQEAgLTM1MSw2ICszNTEsNyBAQCBXZWJJ
bnNwZWN0b3IuU291cmNlRnJhbWUucHJvdG90eXBlID0gewogICAgIHsKICAgICAgICAgdGhpcy5f
ZXhlY3V0aW9uTGluZU51bWJlciA9IGxpbmVOdW1iZXI7CiAgICAgICAgIHRoaXMuX3RleHRWaWV3
ZXIuYWRkRGVjb3JhdGlvbihsaW5lTnVtYmVyLCAid2Via2l0LWV4ZWN1dGlvbi1saW5lIik7Cisg
ICAgICAgIHRoaXMuX3RleHRWaWV3ZXIucmV2ZWFsTGluZShsaW5lTnVtYmVyKTsKICAgICB9LAog
CiAgICAgY2xlYXJFeGVjdXRpb25MaW5lOiBmdW5jdGlvbigpCg==
</data>
<flag name="review"
          id="75106"
          type_id="1"
          status="+"
          setter="pfeldman"
    />
          </attachment>
      

    </bug>

</bugzilla>