<?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>86285</bug_id>
          
          <creation_ts>2012-05-12 01:14:25 -0700</creation_ts>
          <short_desc>Web Inspector: merge MainScriptMapping into DebuggerPresentationModel; move other classes into their own files.</short_desc>
          <delta_ts>2012-05-12 01:32:45 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Pavel Feldman">pfeldman</reporter>
          <assigned_to name="Pavel Feldman">pfeldman</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>622275</commentid>
    <comment_count>0</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-05-12 01:14:25 -0700</bug_when>
    <thetext>The only purpose of the debugger presentation model now is to manage mappings. Merging main script mapping back into it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>622279</commentid>
    <comment_count>1</comment_count>
      <attachid>141558</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-05-12 01:24:03 -0700</bug_when>
    <thetext>Created attachment 141558
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>622282</commentid>
    <comment_count>2</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-05-12 01:32:45 -0700</bug_when>
    <thetext>Committed r116843: &lt;http://trac.webkit.org/changeset/116843&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>141558</attachid>
            <date>2012-05-12 01:24:03 -0700</date>
            <delta_ts>2012-05-12 01:27:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-86285-20120512122401.patch</filename>
            <type>text/plain</type>
            <size>39890</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE2NzkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDFkNmNiMzE4NjY3YTU2
N2IzODZhYzZkZTJjOGZlYWRkNmQ0Y2QwMC4uN2U4YWMzMzZiYzliMGE4ZDU3OTU0MGU1YjY1ZDIy
ZWRlYjUzZmUyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDEyLTA1LTEyICBQYXZl
bCBGZWxkbWFuICA8cGZlbGRtYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IG1lcmdlIE1haW5TY3JpcHRNYXBwaW5nIGludG8gRGVidWdnZXJQcmVzZW50YXRpb25Nb2Rl
bDsgbW92ZSBvdGhlciBjbGFzc2VzIGludG8gdGhlaXIgb3duIGZpbGVzLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODYyODUKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgb25seSBwdXJwb3NlIG9mIHRo
ZSBkZWJ1Z2dlciBwcmVzZW50YXRpb24gbW9kZWwgbm93IGlzIHRvIG1hbmFnZSBtYXBwaW5ncy4g
TWVyZ2luZyBtYWluIHNjcmlwdCBtYXBwaW5nIGJhY2sgaW50byBpdC4KKyAgICAgICAgT3RoZXIg
Y2xhc3NlcyBkZWZpbmVkIGluIHRoYXQgY2xhc3MgYXJlIG1vdmVkIG91dCBpbnRvIHRoZWlyIG93
biBmaWxlcy4KKworICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnZj
cHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBpbnNwZWN0b3IvY29tcGlsZS1mcm9udC1l
bmQucHk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9EZWJ1Z2dlclByZXNlbnRhdGlv
bk1vZGVsLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9k
ZWwpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwucHJv
dG90eXBlLl9wYXJzZWRTY3JpcHRTb3VyY2UpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRlYnVn
Z2VyUHJlc2VudGF0aW9uTW9kZWwucHJvdG90eXBlLnVpU291cmNlQ29kZXMpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwucHJvdG90eXBlLl9kZWJ1Z2dl
clJlc2V0KToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0RlYnVnZ2VyUmVzb3VyY2VC
aW5kaW5nLmpzOiBBZGRlZC4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWJ1Z2dlclJlc291cmNl
QmluZGluZyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGVidWdnZXJSZXNvdXJjZUJpbmRpbmcu
Y2FuRWRpdFNjcmlwdFNvdXJjZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGVidWdnZXJSZXNv
dXJjZUJpbmRpbmcuc2V0U2NyaXB0U291cmNlLmRpZEVkaXRTY3JpcHRTb3VyY2UpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUmVzb3VyY2VCaW5kaW5nLnNldFNjcmlwdFNvdXJjZSk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGVidWdnZXJSZXNvdXJjZUJpbmRpbmcucHJvdG90eXBl
LmNhblNldENvbnRlbnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUmVzb3VyY2VC
aW5kaW5nLnByb3RvdHlwZS5zZXRDb250ZW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWJ1
Z2dlclJlc291cmNlQmluZGluZy5wcm90b3R5cGUuX3VpU291cmNlQ29kZUZvclJlc291cmNlKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWJ1Z2dlclJlc291cmNlQmluZGluZy5wcm90b3R5cGUu
X3NldENvbnRlbnRXaXRoSW5pdGlhbENvbnRlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9u
dC1lbmQvUHJlc2VudGF0aW9uQ29uc29sZU1lc3NhZ2VIZWxwZXIuanM6IEFkZGVkLgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlByZXNlbnRhdGlvbkNvbnNvbGVNZXNzYWdlSGVscGVyKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5QcmVzZW50YXRpb25Db25zb2xlTWVzc2FnZUhlbHBlci5wcm90b3R5
cGUuX2NvbnNvbGVNZXNzYWdlQWRkZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlByZXNlbnRh
dGlvbkNvbnNvbGVNZXNzYWdlSGVscGVyLnByb3RvdHlwZS5fYWRkQ29uc29sZU1lc3NhZ2VUb1Nj
cmlwdCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUHJlc2VudGF0aW9uQ29uc29sZU1lc3NhZ2VI
ZWxwZXIucHJvdG90eXBlLl9hZGRQZW5kaW5nQ29uc29sZU1lc3NhZ2UpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlByZXNlbnRhdGlvbkNvbnNvbGVNZXNzYWdlSGVscGVyLnByb3RvdHlwZS5fcGFy
c2VkU2NyaXB0U291cmNlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5QcmVzZW50YXRpb25Db25z
b2xlTWVzc2FnZUhlbHBlci5wcm90b3R5cGUuX2NvbnNvbGVDbGVhcmVkKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5QcmVzZW50YXRpb25Db25zb2xlTWVzc2FnZUhlbHBlci5wcm90b3R5cGUuX2Rl
YnVnZ2VyUmVzZXQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlByZXNlbnRhdGlvbkNvbnNvbGVN
ZXNzYWdlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5QcmVzZW50YXRpb25Db25zb2xlTWVzc2Fn
ZS5wcm90b3R5cGUuX3VwZGF0ZUxvY2F0aW9uKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5QcmVz
ZW50YXRpb25Db25zb2xlTWVzc2FnZS5wcm90b3R5cGUuZ2V0IGxpbmVOdW1iZXIpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlByZXNlbnRhdGlvbkNvbnNvbGVNZXNzYWdlLnByb3RvdHlwZS5kaXNw
b3NlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1NjcmlwdE1hcHBpbmcuanM6Cisg
ICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRzUGFuZWwuanM6CisgICAgICAgICog
aW5zcGVjdG9yL2Zyb250LWVuZC9XZWJLaXQucXJjOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9u
dC1lbmQvaW5zcGVjdG9yLmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNw
ZWN0b3IuanM6CisKIDIwMTItMDUtMTEgIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogbW92ZSBjYW5FZGl0U2NyaXB0U291cmNl
IGFuZCBzZXRTY3JpcHRTb3VyY2UgZnJvbSBEZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsIGludG8g
UmVzb3VyY2VCaW5kaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkg
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggZTc3NDZlNjQ3MWU5NDY3NjBkOWE1
OThmMDhkZjk5YjRlZWMwMjA5Mi4uZDgwMGY2YjQwNDljYjk1MTUyYTM1ODY4YWE1NWYyNzIxMzZl
OTM4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtNjM1OSw2ICs2MzU5LDcgQEAKICAgICAgICAgICAg
ICdpbnNwZWN0b3IvZnJvbnQtZW5kL0RhdGFHcmlkLmpzJywKICAgICAgICAgICAgICdpbnNwZWN0
b3IvZnJvbnQtZW5kL0RlYnVnZ2VyTW9kZWwuanMnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9m
cm9udC1lbmQvRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5qcycsCisgICAgICAgICAgICAnaW5z
cGVjdG9yL2Zyb250LWVuZC9EZWJ1Z2dlclJlc291cmNlQmluZGluZy5qcycsCiAgICAgICAgICAg
ICAnaW5zcGVjdG9yL2Zyb250LWVuZC9EaWFsb2cuanMnLAogICAgICAgICAgICAgJ2luc3BlY3Rv
ci9mcm9udC1lbmQvRE9NQWdlbnQuanMnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1l
bmQvRE9NQnJlYWtwb2ludHNTaWRlYmFyUGFuZS5qcycsCkBAIC02NDIzLDYgKzY0MjQsNyBAQAog
ICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvUGFuZWxFbmFibGVyVmlldy5qcycsCiAg
ICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9QbGFjYXJkLmpzJywKICAgICAgICAgICAg
ICdpbnNwZWN0b3IvZnJvbnQtZW5kL1BvcG92ZXIuanMnLAorICAgICAgICAgICAgJ2luc3BlY3Rv
ci9mcm9udC1lbmQvUHJlc2VudGF0aW9uQ29uc29sZU1lc3NhZ2VIZWxwZXIuanMnLAogICAgICAg
ICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvUHJvZmlsZURhdGFHcmlkVHJlZS5qcycsCiAgICAg
ICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9Qcm9maWxlTGF1bmNoZXJWaWV3LmpzJywKICAg
ICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL1Byb2ZpbGVzUGFuZWwuanMnLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCAzNzM1YmM4YzAy
NTc5OWY0NTVmZGIwNTUxNDdmM2QxYzY0NDZhZDIzLi45YWM3YWZkZmE2NTI2MmJhZGIwMTgyNzhi
MjIxZDljYjJlYmM5NmE3IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJv
ai9XZWJDb3JlLnZjcHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJD
b3JlLnZjcHJvagpAQCAtNzQyMjEsNiArNzQyMjEsMTAgQEAKIAkJCQkJPgogCQkJCTwvRmlsZT4K
IAkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3Rvclxmcm9udC1lbmRcRGVi
dWdnZXJSZXNvdXJjZUJpbmRpbmcuanMiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUK
IAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcZnJvbnQtZW5kXGRpYWxvZy5jc3MiCiAJ
CQkJCT4KIAkJCQk8L0ZpbGU+CkBAIC03NDU0MSw2ICs3NDU0NSwxMCBAQAogCQkJCQk+CiAJCQkJ
PC9GaWxlPgogCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXGZyb250
LWVuZFxQcmVzZW50YXRpb25Db25zb2xlTWVzc2FnZUhlbHBlci5qcyIKKwkJCQkJPgorCQkJCTwv
RmlsZT4KKwkJCQk8RmlsZQogCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3Rvclxmcm9udC1l
bmRcUHJvZmlsZURhdGFHcmlkVHJlZS5qcyIKIAkJCQkJPgogCQkJCTwvRmlsZT4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9jb21waWxlLWZyb250LWVuZC5weSBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9jb21waWxlLWZyb250LWVuZC5weQppbmRleCAwNjAyOGU0YmU5
MWYzOWZhZjkyMGIzNTc0ZDE1MTUyZWU1ZjI0NDBkLi45MDQ4ZWJmYzI4YzlmZTkzMWVhZjhlMzdj
MjIyOTM2OTViNWY2NzBkIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvY29t
cGlsZS1mcm9udC1lbmQucHkKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2NvbXBpbGUt
ZnJvbnQtZW5kLnB5CkBAIC03NCw2ICs3NCw3IEBAIG1vZHVsZXMgPSBbCiAgICAgICAgICAgICAi
RE9NU3RvcmFnZS5qcyIsCiAgICAgICAgICAgICAiRGVidWdnZXJNb2RlbC5qcyIsCiAgICAgICAg
ICAgICAiRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5qcyIsCisgICAgICAgICAgICAiRGVidWdn
ZXJSZXNvdXJjZUJpbmRpbmcuanMiLAogICAgICAgICAgICAgIkZpbGVNYW5hZ2VyLmpzIiwKICAg
ICAgICAgICAgICJIQVJFbnRyeS5qcyIsCiAgICAgICAgICAgICAiSW5kZXhlZERCTW9kZWwuanMi
LApAQCAtMjEzLDYgKzIxNCw3IEBAIG1vZHVsZXMgPSBbCiAgICAgICAgICAgICAiQ2FsbFN0YWNr
U2lkZWJhclBhbmUuanMiLAogICAgICAgICAgICAgIlNjb3BlQ2hhaW5TaWRlYmFyUGFuZS5qcyIs
CiAgICAgICAgICAgICAiSmF2YVNjcmlwdFNvdXJjZUZyYW1lLmpzIiwKKyAgICAgICAgICAgICJQ
cmVzZW50YXRpb25Db25zb2xlTWVzc2FnZUhlbHBlci5qcyIsCiAgICAgICAgICAgICAiVGFiYmVk
RWRpdG9yQ29udGFpbmVyLmpzIiwKICAgICAgICAgICAgICJTY3JpcHRzTmF2aWdhdG9yLmpzIiwK
ICAgICAgICAgICAgICJTY3JpcHRzUGFuZWwuanMiLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLmpzIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVs
LmpzCmluZGV4IGE0OTE1MDRiNGU5MjdjYTZhZjI1MzQzNWUxYzhmMGRhYjc3YmMyOTEuLmZjZTJm
NjdmMTIyZjIyZDNiOGIyYzE3ZDQ3MGZiZWEwNDg1M2I5MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5qcwor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RlYnVnZ2VyUHJlc2VudGF0
aW9uTW9kZWwuanMKQEAgLTM0LDE1ICszNCwyMSBAQAogICovCiBXZWJJbnNwZWN0b3IuRGVidWdn
ZXJQcmVzZW50YXRpb25Nb2RlbCA9IGZ1bmN0aW9uKCkKIHsKLSAgICB0aGlzLl9zY3JpcHRNYXBw
aW5nID0gbmV3IFdlYkluc3BlY3Rvci5NYWluU2NyaXB0TWFwcGluZygpOwotICAgIHRoaXMuX3Nj
cmlwdE1hcHBpbmcuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuTWFpblNjcmlwdE1hcHBp
bmcuRXZlbnRzLlVJU291cmNlQ29kZUxpc3RDaGFuZ2VkLCB0aGlzLl9oYW5kbGVVSVNvdXJjZUNv
ZGVMaXN0Q2hhbmdlZCwgdGhpcyk7CisgICAgdGhpcy5fbWFwcGluZ3MgPSBbXTsKKyAgCisgICAg
dGhpcy5fcmVzb3VyY2VNYXBwaW5nID0gbmV3IFdlYkluc3BlY3Rvci5SZXNvdXJjZVNjcmlwdE1h
cHBpbmcoKTsKKyAgICB0aGlzLl9tYXBwaW5ncy5wdXNoKHRoaXMuX3Jlc291cmNlTWFwcGluZyk7
CisgICAgdGhpcy5fY29tcGlsZXJNYXBwaW5nID0gbmV3IFdlYkluc3BlY3Rvci5Db21waWxlclNj
cmlwdE1hcHBpbmcoKTsKKyAgICB0aGlzLl9tYXBwaW5ncy5wdXNoKHRoaXMuX2NvbXBpbGVyTWFw
cGluZyk7CisgICAgdGhpcy5fc25pcHBldHNNYXBwaW5nID0gbmV3IFdlYkluc3BlY3Rvci5Tbmlw
cGV0c1NjcmlwdE1hcHBpbmcoKTsKKyAgICB0aGlzLl9tYXBwaW5ncy5wdXNoKHRoaXMuX3NuaXBw
ZXRzTWFwcGluZyk7CisgIAorICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5fbWFwcGluZ3Mu
bGVuZ3RoOyArK2kpCisgICAgICAgIHRoaXMuX21hcHBpbmdzW2ldLmFkZEV2ZW50TGlzdGVuZXIo
V2ViSW5zcGVjdG9yLlNjcmlwdE1hcHBpbmcuRXZlbnRzLlVJU291cmNlQ29kZUxpc3RDaGFuZ2Vk
LCB0aGlzLl9oYW5kbGVVSVNvdXJjZUNvZGVMaXN0Q2hhbmdlZCwgdGhpcyk7CiAKICAgICBXZWJJ
bnNwZWN0b3IuZGVidWdnZXJNb2RlbC5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5EZWJ1
Z2dlck1vZGVsLkV2ZW50cy5QYXJzZWRTY3JpcHRTb3VyY2UsIHRoaXMuX3BhcnNlZFNjcmlwdFNv
dXJjZSwgdGhpcyk7CiAgICAgV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTW9kZWwuYWRkRXZlbnRMaXN0
ZW5lcihXZWJJbnNwZWN0b3IuRGVidWdnZXJNb2RlbC5FdmVudHMuRmFpbGVkVG9QYXJzZVNjcmlw
dFNvdXJjZSwgdGhpcy5fcGFyc2VkU2NyaXB0U291cmNlLCB0aGlzKTsKICAgICBXZWJJbnNwZWN0
b3IuZGVidWdnZXJNb2RlbC5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5EZWJ1Z2dlck1v
ZGVsLkV2ZW50cy5HbG9iYWxPYmplY3RDbGVhcmVkLCB0aGlzLl9kZWJ1Z2dlclJlc2V0LCB0aGlz
KTsKLQotICAgIG5ldyBXZWJJbnNwZWN0b3IuRGVidWdnZXJSZXNvdXJjZUJpbmRpbmcoKTsKLSAg
ICBuZXcgV2ViSW5zcGVjdG9yLlByZXNlbnRhdGlvbkNvbnNvbGVNZXNzYWdlSGVscGVyKCk7CiB9
CiAKIFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLkV2ZW50cyA9IHsKQEAg
LTU4LDcgKzY0LDggQEAgV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwucHJv
dG90eXBlID0gewogICAgIF9wYXJzZWRTY3JpcHRTb3VyY2U6IGZ1bmN0aW9uKGV2ZW50KQogICAg
IHsKICAgICAgICAgdmFyIHNjcmlwdCA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLlNjcmlwdH0g
Ki8gZXZlbnQuZGF0YTsKLSAgICAgICAgdGhpcy5fc2NyaXB0TWFwcGluZy5hZGRTY3JpcHQoc2Ny
aXB0KTsKKyAgICAgICAgdmFyIG1hcHBpbmcgPSB0aGlzLl9tYXBwaW5nRm9yU2NyaXB0KHNjcmlw
dCk7CisgICAgICAgIG1hcHBpbmcuYWRkU2NyaXB0KHNjcmlwdCk7CiAgICAgfSwKIAogICAgIC8q
KgpAQCAtNjYsNyArNzMsMTMgQEAgV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9k
ZWwucHJvdG90eXBlID0gewogICAgICAqLwogICAgIHVpU291cmNlQ29kZXM6IGZ1bmN0aW9uKCkK
ICAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9zY3JpcHRNYXBwaW5nLnVpU291cmNlQ29kZUxp
c3QoKTsKKyAgICAgICAgdmFyIHJlc3VsdCA9IFtdOworICAgICAgICBmb3IgKHZhciBpID0gMDsg
aSA8IHRoaXMuX21hcHBpbmdzLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICB2YXIgdWlTb3Vy
Y2VDb2RlTGlzdCA9IHRoaXMuX21hcHBpbmdzW2ldLnVpU291cmNlQ29kZUxpc3QoKTsKKyAgICAg
ICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgdWlTb3VyY2VDb2RlTGlzdC5sZW5ndGg7ICsraikK
KyAgICAgICAgICAgICAgICByZXN1bHQucHVzaCh1aVNvdXJjZUNvZGVMaXN0W2pdKTsKKyAgICAg
ICAgfQorICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0sCiAKICAgICAvKioKQEAgLTg5LDI2
MiArMTAyLDMzIEBAIFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLnByb3Rv
dHlwZSA9IHsKICAgICAgICAgfQogICAgIH0sCiAKLSAgICBfZGVidWdnZXJSZXNldDogZnVuY3Rp
b24oKQotICAgIHsKLSAgICAgICAgdGhpcy5fc2NyaXB0TWFwcGluZy5yZXNldCgpOwotICAgIH0K
LX0KLQotV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwucHJvdG90eXBlLl9f
cHJvdG9fXyA9IFdlYkluc3BlY3Rvci5PYmplY3QucHJvdG90eXBlOwotCi0vKioKLSAqIEBjb25z
dHJ1Y3RvcgotICovCi1XZWJJbnNwZWN0b3IuUHJlc2VudGF0aW9uQ29uc29sZU1lc3NhZ2VIZWxw
ZXIgPSBmdW5jdGlvbigpCi17Ci0gICAgdGhpcy5fcGVuZGluZ0NvbnNvbGVNZXNzYWdlcyA9IHt9
OwotICAgIHRoaXMuX3ByZXNlbnRhdGlvbkNvbnNvbGVNZXNzYWdlcyA9IFtdOwotCi0gICAgV2Vi
SW5zcGVjdG9yLmNvbnNvbGUuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuQ29uc29sZU1v
ZGVsLkV2ZW50cy5NZXNzYWdlQWRkZWQsIHRoaXMuX2NvbnNvbGVNZXNzYWdlQWRkZWQsIHRoaXMp
OwotICAgIFdlYkluc3BlY3Rvci5jb25zb2xlLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9y
LkNvbnNvbGVNb2RlbC5FdmVudHMuQ29uc29sZUNsZWFyZWQsIHRoaXMuX2NvbnNvbGVDbGVhcmVk
LCB0aGlzKTsKLQotICAgIFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1vZGVsLmFkZEV2ZW50TGlzdGVu
ZXIoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9kZWwuRXZlbnRzLlBhcnNlZFNjcmlwdFNvdXJjZSwg
dGhpcy5fcGFyc2VkU2NyaXB0U291cmNlLCB0aGlzKTsKLSAgICBXZWJJbnNwZWN0b3IuZGVidWdn
ZXJNb2RlbC5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5EZWJ1Z2dlck1vZGVsLkV2ZW50
cy5GYWlsZWRUb1BhcnNlU2NyaXB0U291cmNlLCB0aGlzLl9wYXJzZWRTY3JpcHRTb3VyY2UsIHRo
aXMpOwotICAgIFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1vZGVsLmFkZEV2ZW50TGlzdGVuZXIoV2Vi
SW5zcGVjdG9yLkRlYnVnZ2VyTW9kZWwuRXZlbnRzLkdsb2JhbE9iamVjdENsZWFyZWQsIHRoaXMu
X2RlYnVnZ2VyUmVzZXQsIHRoaXMpOwotfQotCi1XZWJJbnNwZWN0b3IuUHJlc2VudGF0aW9uQ29u
c29sZU1lc3NhZ2VIZWxwZXIucHJvdG90eXBlID0gewotICAgIC8qKgotICAgICAqIEBwYXJhbSB7
V2ViSW5zcGVjdG9yLkV2ZW50fSBldmVudAotICAgICAqLwotICAgIF9jb25zb2xlTWVzc2FnZUFk
ZGVkOiBmdW5jdGlvbihldmVudCkKLSAgICB7Ci0gICAgICAgIHZhciBtZXNzYWdlID0gLyoqIEB0
eXBlIHtXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2V9ICovIGV2ZW50LmRhdGE7Ci0gICAgICAg
IGlmICghbWVzc2FnZS51cmwgfHwgIW1lc3NhZ2UuaXNFcnJvck9yV2FybmluZygpKQotICAgICAg
ICAgICAgcmV0dXJuOwotCi0gICAgICAgIHZhciByYXdMb2NhdGlvbiA9IG1lc3NhZ2UubG9jYXRp
b24oKTsKLSAgICAgICAgaWYgKHJhd0xvY2F0aW9uKQotICAgICAgICAgICAgdGhpcy5fYWRkQ29u
c29sZU1lc3NhZ2VUb1NjcmlwdChtZXNzYWdlLCByYXdMb2NhdGlvbik7Ci0gICAgICAgIGVsc2UK
LSAgICAgICAgICAgIHRoaXMuX2FkZFBlbmRpbmdDb25zb2xlTWVzc2FnZShtZXNzYWdlKTsKLSAg
ICB9LAotCiAgICAgLyoqCi0gICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3Nh
Z2V9IG1lc3NhZ2UKLSAgICAgKiBAcGFyYW0ge0RlYnVnZ2VyQWdlbnQuTG9jYXRpb259IHJhd0xv
Y2F0aW9uCisgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuU2NyaXB0fSBzY3JpcHQKKyAgICAg
KiBAcmV0dXJuIHtXZWJJbnNwZWN0b3IuU2NyaXB0TWFwcGluZ30KICAgICAgKi8KLSAgICBfYWRk
Q29uc29sZU1lc3NhZ2VUb1NjcmlwdDogZnVuY3Rpb24obWVzc2FnZSwgcmF3TG9jYXRpb24pCisg
ICAgX21hcHBpbmdGb3JTY3JpcHQ6IGZ1bmN0aW9uKHNjcmlwdCkKICAgICB7Ci0gICAgICAgIHRo
aXMuX3ByZXNlbnRhdGlvbkNvbnNvbGVNZXNzYWdlcy5wdXNoKG5ldyBXZWJJbnNwZWN0b3IuUHJl
c2VudGF0aW9uQ29uc29sZU1lc3NhZ2UobWVzc2FnZSwgcmF3TG9jYXRpb24pKTsKLSAgICB9LAot
Ci0gICAgLyoqCi0gICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2V9IG1l
c3NhZ2UKLSAgICAgKi8KLSAgICBfYWRkUGVuZGluZ0NvbnNvbGVNZXNzYWdlOiBmdW5jdGlvbiht
ZXNzYWdlKQotICAgIHsKLSAgICAgICAgaWYgKCF0aGlzLl9wZW5kaW5nQ29uc29sZU1lc3NhZ2Vz
W21lc3NhZ2UudXJsXSkKLSAgICAgICAgICAgIHRoaXMuX3BlbmRpbmdDb25zb2xlTWVzc2FnZXNb
bWVzc2FnZS51cmxdID0gW107Ci0gICAgICAgIHRoaXMuX3BlbmRpbmdDb25zb2xlTWVzc2FnZXNb
bWVzc2FnZS51cmxdLnB1c2gobWVzc2FnZSk7Ci0gICAgfSwKLQotICAgIC8qKgotICAgICAqIEBw
YXJhbSB7V2ViSW5zcGVjdG9yLkV2ZW50fSBldmVudAotICAgICAqLwotICAgIF9wYXJzZWRTY3Jp
cHRTb3VyY2U6IGZ1bmN0aW9uKGV2ZW50KQotICAgIHsKLSAgICAgICAgdmFyIHNjcmlwdCA9IC8q
KiBAdHlwZSB7V2ViSW5zcGVjdG9yLlNjcmlwdH0gKi8gZXZlbnQuZGF0YTsKLQotICAgICAgICB2
YXIgbWVzc2FnZXMgPSB0aGlzLl9wZW5kaW5nQ29uc29sZU1lc3NhZ2VzW3NjcmlwdC5zb3VyY2VV
UkxdOwotICAgICAgICBpZiAoIW1lc3NhZ2VzKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAg
ICAgIHZhciBwZW5kaW5nTWVzc2FnZXMgPSBbXTsKLSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkg
PCBtZXNzYWdlcy5sZW5ndGg7IGkrKykgewotICAgICAgICAgICAgdmFyIG1lc3NhZ2UgPSBtZXNz
YWdlc1tpXTsKLSAgICAgICAgICAgIHZhciByYXdMb2NhdGlvbiA9IG1lc3NhZ2UubG9jYXRpb24o
KTsKLSAgICAgICAgICAgIGlmIChzY3JpcHQuc2NyaXB0SWQgPT09IHJhd0xvY2F0aW9uLnNjcmlw
dElkKQotICAgICAgICAgICAgICAgIHRoaXMuX2FkZENvbnNvbGVNZXNzYWdlVG9TY3JpcHQobWVz
c2FnZXMsIHJhd0xvY2F0aW9uKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBw
ZW5kaW5nTWVzc2FnZXMucHVzaChtZXNzYWdlKTsKKyAgICAgICAgaWYgKFdlYkluc3BlY3Rvci5l
eHBlcmltZW50c1NldHRpbmdzLnNuaXBwZXRzU3VwcG9ydC5pc0VuYWJsZWQoKSkgeworICAgICAg
ICAgICAgaWYgKFdlYkluc3BlY3Rvci5zbmlwcGV0c01vZGVsLnNuaXBwZXRJZEZvclNvdXJjZVVS
TChzY3JpcHQuc291cmNlVVJMKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fc25pcHBl
dHNNYXBwaW5nOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKHBlbmRpbmdNZXNzYWdlcy5sZW5n
dGgpCi0gICAgICAgICAgICB0aGlzLl9wZW5kaW5nQ29uc29sZU1lc3NhZ2VzW3NjcmlwdC5zb3Vy
Y2VVUkxdID0gcGVuZGluZ01lc3NhZ2VzOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBkZWxl
dGUgdGhpcy5fcGVuZGluZ0NvbnNvbGVNZXNzYWdlc1tzY3JpcHQuc291cmNlVVJMXTsKLSAgICB9
LAotCi0gICAgX2NvbnNvbGVDbGVhcmVkOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICB0aGlz
Ll9wZW5kaW5nQ29uc29sZU1lc3NhZ2VzID0ge307Ci0gICAgICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgdGhpcy5fcHJlc2VudGF0aW9uQ29uc29sZU1lc3NhZ2VzLmxlbmd0aDsgKytpKQotICAgICAg
ICAgICAgdGhpcy5fcHJlc2VudGF0aW9uQ29uc29sZU1lc3NhZ2VzW2ldLmRpc3Bvc2UoKTsKLSAg
ICAgICAgdGhpcy5fcHJlc2VudGF0aW9uQ29uc29sZU1lc3NhZ2VzID0gW107Ci0gICAgICAgIHZh
ciB1aVNvdXJjZUNvZGVzID0gV2ViSW5zcGVjdG9yLmRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwu
dWlTb3VyY2VDb2RlcygpOwotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHVpU291cmNlQ29k
ZXMubGVuZ3RoOyArK2kpCi0gICAgICAgICAgICB1aVNvdXJjZUNvZGVzW2ldLmNvbnNvbGVNZXNz
YWdlc0NsZWFyZWQoKTsKLSAgICB9LAotCi0gICAgX2RlYnVnZ2VyUmVzZXQ6IGZ1bmN0aW9uKCkK
LSAgICB7Ci0gICAgICAgIHRoaXMuX3BlbmRpbmdDb25zb2xlTWVzc2FnZXMgPSB7fTsKLSAgICAg
ICAgdGhpcy5fcHJlc2VudGF0aW9uQ29uc29sZU1lc3NhZ2VzID0gW107Ci0gICAgfQotfQotCi0v
KioKLSAqIEBjb25zdHJ1Y3RvcgotICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3Nh
Z2V9IG1lc3NhZ2UKLSAqIEBwYXJhbSB7RGVidWdnZXJBZ2VudC5Mb2NhdGlvbn0gcmF3TG9jYXRp
b24KLSAqLwotV2ViSW5zcGVjdG9yLlByZXNlbnRhdGlvbkNvbnNvbGVNZXNzYWdlID0gZnVuY3Rp
b24obWVzc2FnZSwgcmF3TG9jYXRpb24pCi17Ci0gICAgdGhpcy5vcmlnaW5hbE1lc3NhZ2UgPSBt
ZXNzYWdlOwotICAgIHRoaXMuX2xpdmVMb2NhdGlvbiA9IFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1v
ZGVsLmNyZWF0ZUxpdmVMb2NhdGlvbihyYXdMb2NhdGlvbiwgdGhpcy5fdXBkYXRlTG9jYXRpb24u
YmluZCh0aGlzKSk7Ci19Ci0KLVdlYkluc3BlY3Rvci5QcmVzZW50YXRpb25Db25zb2xlTWVzc2Fn
ZS5wcm90b3R5cGUgPSB7Ci0gICAgLyoqCi0gICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuVUlM
b2NhdGlvbn0gdWlMb2NhdGlvbgotICAgICAqLwotICAgIF91cGRhdGVMb2NhdGlvbjogZnVuY3Rp
b24odWlMb2NhdGlvbikKLSAgICB7Ci0gICAgICAgIGlmICh0aGlzLl91aUxvY2F0aW9uKQotICAg
ICAgICAgICAgdGhpcy5fdWlMb2NhdGlvbi51aVNvdXJjZUNvZGUuY29uc29sZU1lc3NhZ2VSZW1v
dmVkKHRoaXMpOwotICAgICAgICB0aGlzLl91aUxvY2F0aW9uID0gdWlMb2NhdGlvbjsKLSAgICAg
ICAgdGhpcy5fdWlMb2NhdGlvbi51aVNvdXJjZUNvZGUuY29uc29sZU1lc3NhZ2VBZGRlZCh0aGlz
KTsKLSAgICB9LAotCi0gICAgZ2V0IGxpbmVOdW1iZXIoKQotICAgIHsKLSAgICAgICAgcmV0dXJu
IHRoaXMuX3VpTG9jYXRpb24ubGluZU51bWJlcjsKLSAgICB9LAotCi0gICAgZGlzcG9zZTogZnVu
Y3Rpb24oKQotICAgIHsKLSAgICAgICAgdGhpcy5fbGl2ZUxvY2F0aW9uLmRpc3Bvc2UoKTsKLSAg
ICB9Ci19Ci0KLS8qKgotICogQGNvbnN0cnVjdG9yCi0gKiBAaW1wbGVtZW50cyB7V2ViSW5zcGVj
dG9yLlJlc291cmNlRG9tYWluTW9kZWxCaW5kaW5nfQotICovCi1XZWJJbnNwZWN0b3IuRGVidWdn
ZXJSZXNvdXJjZUJpbmRpbmcgPSBmdW5jdGlvbigpCi17Ci0gICAgV2ViSW5zcGVjdG9yLlJlc291
cmNlLnJlZ2lzdGVyRG9tYWluTW9kZWxCaW5kaW5nKFdlYkluc3BlY3Rvci5yZXNvdXJjZVR5cGVz
LlNjcmlwdCwgdGhpcyk7Ci19Ci0KLQotLyoqCi0gKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5VSVNv
dXJjZUNvZGV9IHVpU291cmNlQ29kZQotICogQHJldHVybiB7Ym9vbGVhbn0KLSAqLwotV2ViSW5z
cGVjdG9yLkRlYnVnZ2VyUmVzb3VyY2VCaW5kaW5nLmNhbkVkaXRTY3JpcHRTb3VyY2UgPSBmdW5j
dGlvbih1aVNvdXJjZUNvZGUpCi17Ci0gICAgcmV0dXJuIFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1v
ZGVsLmNhblNldFNjcmlwdFNvdXJjZSgpICYmIHVpU291cmNlQ29kZS5pc0VkaXRhYmxlOwotfQot
Ci0vKioKLSAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZX0gdWlTb3VyY2VDb2Rl
Ci0gKiBAcGFyYW0ge3N0cmluZ30gbmV3U291cmNlCi0gKiBAcGFyYW0ge2Z1bmN0aW9uKD9Qcm90
b2NvbC5FcnJvcil9IGNhbGxiYWNrCi0gKi8KLVdlYkluc3BlY3Rvci5EZWJ1Z2dlclJlc291cmNl
QmluZGluZy5zZXRTY3JpcHRTb3VyY2UgPSBmdW5jdGlvbih1aVNvdXJjZUNvZGUsIG5ld1NvdXJj
ZSwgY2FsbGJhY2spCi17Ci0gICAgdmFyIHJhd0xvY2F0aW9uID0gdWlTb3VyY2VDb2RlLnVpTG9j
YXRpb25Ub1Jhd0xvY2F0aW9uKDAsIDApOwotICAgIHZhciBzY3JpcHQgPSBXZWJJbnNwZWN0b3Iu
ZGVidWdnZXJNb2RlbC5zY3JpcHRGb3JJZChyYXdMb2NhdGlvbi5zY3JpcHRJZCk7Ci0KLSAgICAv
KioKLSAgICAgKiBAdGhpcyB7V2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWx9
Ci0gICAgICogQHBhcmFtIHs/UHJvdG9jb2wuRXJyb3J9IGVycm9yCi0gICAgICovCi0gICAgZnVu
Y3Rpb24gZGlkRWRpdFNjcmlwdFNvdXJjZShlcnJvcikKLSAgICB7Ci0gICAgICAgIGNhbGxiYWNr
KGVycm9yKTsKLSAgICAgICAgaWYgKGVycm9yKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAg
ICAgIHZhciByZXNvdXJjZSA9IFdlYkluc3BlY3Rvci5yZXNvdXJjZUZvclVSTChzY3JpcHQuc291
cmNlVVJMKTsKLSAgICAgICAgaWYgKHJlc291cmNlKQotICAgICAgICAgICAgcmVzb3VyY2UuYWRk
UmV2aXNpb24obmV3U291cmNlKTsKLQotICAgICAgICB1aVNvdXJjZUNvZGUuY29udGVudENoYW5n
ZWQobmV3U291cmNlKTsKLSAgICB9Ci0gICAgV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTW9kZWwuc2V0
U2NyaXB0U291cmNlKHNjcmlwdC5zY3JpcHRJZCwgbmV3U291cmNlLCBkaWRFZGl0U2NyaXB0U291
cmNlLmJpbmQodGhpcykpOwotfQotCi1XZWJJbnNwZWN0b3IuRGVidWdnZXJSZXNvdXJjZUJpbmRp
bmcucHJvdG90eXBlID0gewotICAgIC8qKgotICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlJl
c291cmNlfSByZXNvdXJjZQotICAgICAqIEByZXR1cm4ge2Jvb2xlYW59Ci0gICAgICovCi0gICAg
Y2FuU2V0Q29udGVudDogZnVuY3Rpb24ocmVzb3VyY2UpCi0gICAgewotICAgICAgICB2YXIgdWlT
b3VyY2VDb2RlID0gdGhpcy5fdWlTb3VyY2VDb2RlRm9yUmVzb3VyY2UocmVzb3VyY2UpOwotICAg
ICAgICByZXR1cm4gISF1aVNvdXJjZUNvZGUgJiYgV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUmVzb3Vy
Y2VCaW5kaW5nLmNhbkVkaXRTY3JpcHRTb3VyY2UodWlTb3VyY2VDb2RlKTsKLSAgICB9LAotCi0g
ICAgLyoqCi0gICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuUmVzb3VyY2V9IHJlc291cmNlCi0g
ICAgICogQHBhcmFtIHtzdHJpbmd9IGNvbnRlbnQKLSAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IG1h
am9yQ2hhbmdlCi0gICAgICogQHBhcmFtIHtmdW5jdGlvbig/c3RyaW5nKX0gdXNlckNhbGxiYWNr
Ci0gICAgICovCi0gICAgc2V0Q29udGVudDogZnVuY3Rpb24ocmVzb3VyY2UsIGNvbnRlbnQsIG1h
am9yQ2hhbmdlLCB1c2VyQ2FsbGJhY2spCi0gICAgewotICAgICAgICBpZiAoIW1ham9yQ2hhbmdl
KQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIHZhciB1aVNvdXJjZUNvZGUgPSB0aGlz
Ll91aVNvdXJjZUNvZGVGb3JSZXNvdXJjZShyZXNvdXJjZSk7Ci0gICAgICAgIGlmICghdWlTb3Vy
Y2VDb2RlKSB7Ci0gICAgICAgICAgICB1c2VyQ2FsbGJhY2soIlJlc291cmNlIGlzIG5vdCBlZGl0
YWJsZSIpOwotICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBpZiAoV2ViSW5zcGVjdG9yLnNl
dHRpbmdzLnNvdXJjZU1hcHNFbmFibGVkLmdldCgpICYmIHNjcmlwdC5zb3VyY2VNYXBVUkwpIHsK
KyAgICAgICAgICAgIGlmICh0aGlzLl9jb21waWxlck1hcHBpbmcubG9hZFNvdXJjZU1hcEZvclNj
cmlwdChzY3JpcHQpKQorICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9jb21waWxlck1hcHBp
bmc7CiAgICAgICAgIH0KIAotICAgICAgICByZXNvdXJjZS5yZXF1ZXN0Q29udGVudCh0aGlzLl9z
ZXRDb250ZW50V2l0aEluaXRpYWxDb250ZW50LmJpbmQodGhpcywgdWlTb3VyY2VDb2RlLCBjb250
ZW50LCB1c2VyQ2FsbGJhY2spKTsKLSAgICB9LAotCi0gICAgLyoqCi0gICAgICogQHBhcmFtIHtX
ZWJJbnNwZWN0b3IuUmVzb3VyY2V9IHJlc291cmNlCi0gICAgICogQHJldHVybiB7V2ViSW5zcGVj
dG9yLlVJU291cmNlQ29kZX0KLSAgICAgKi8KLSAgICBfdWlTb3VyY2VDb2RlRm9yUmVzb3VyY2U6
IGZ1bmN0aW9uKHJlc291cmNlKQotICAgIHsKLSAgICAgICAgdmFyIHVpU291cmNlQ29kZXMgPSBX
ZWJJbnNwZWN0b3IuZGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC51aVNvdXJjZUNvZGVzKCk7Ci0g
ICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdWlTb3VyY2VDb2Rlcy5sZW5ndGg7ICsraSkgewot
ICAgICAgICAgICAgaWYgKHVpU291cmNlQ29kZXNbaV0udXJsID09PSByZXNvdXJjZS51cmwpCi0g
ICAgICAgICAgICAgICAgcmV0dXJuIHVpU291cmNlQ29kZXNbaV07Ci0gICAgICAgIH0KLSAgICAg
ICAgcmV0dXJuIG51bGw7CisgICAgICAgIHJldHVybiB0aGlzLl9yZXNvdXJjZU1hcHBpbmc7CiAg
ICAgfSwKIAotICAgIC8qKgotICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlVJU291cmNlQ29k
ZX0gdWlTb3VyY2VDb2RlCi0gICAgICogQHBhcmFtIHtzdHJpbmd9IGNvbnRlbnQKLSAgICAgKiBA
cGFyYW0ge2Z1bmN0aW9uKD9zdHJpbmcpfSB1c2VyQ2FsbGJhY2sKLSAgICAgKiBAcGFyYW0gez9z
dHJpbmd9IG9sZENvbnRlbnQKLSAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IG9sZENvbnRlbnRFbmNv
ZGVkCi0gICAgICogQHBhcmFtIHtzdHJpbmd9IG1pbWVUeXBlCi0gICAgICovCi0gICAgX3NldENv
bnRlbnRXaXRoSW5pdGlhbENvbnRlbnQ6IGZ1bmN0aW9uKHVpU291cmNlQ29kZSwgY29udGVudCwg
dXNlckNhbGxiYWNrLCBvbGRDb250ZW50LCBvbGRDb250ZW50RW5jb2RlZCwgbWltZVR5cGUpCisg
ICAgX2RlYnVnZ2VyUmVzZXQ6IGZ1bmN0aW9uKCkKICAgICB7Ci0gICAgICAgIC8qKgotICAgICAg
ICAgKiBAdGhpcyB7V2ViSW5zcGVjdG9yLkRlYnVnZ2VyUmVzb3VyY2VCaW5kaW5nfQotICAgICAg
ICAgKiBAcGFyYW0gez9zdHJpbmd9IGVycm9yCi0gICAgICAgICAqLwotICAgICAgICBmdW5jdGlv
biBjYWxsYmFjayhlcnJvcikKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKHVzZXJDYWxsYmFj
aykKLSAgICAgICAgICAgICAgICB1c2VyQ2FsbGJhY2soZXJyb3IpOwotICAgICAgICB9Ci0gICAg
ICAgIFdlYkluc3BlY3Rvci5EZWJ1Z2dlclJlc291cmNlQmluZGluZy5zZXRTY3JpcHRTb3VyY2Uo
dWlTb3VyY2VDb2RlLCBjb250ZW50LCBjYWxsYmFjay5iaW5kKHRoaXMpKTsKKyAgICAgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCB0aGlzLl9tYXBwaW5ncy5sZW5ndGg7ICsraSkKKyAgICAgICAgICAg
IHRoaXMuX21hcHBpbmdzW2ldLnJlc2V0KCk7CiAgICAgfQogfQogCi1XZWJJbnNwZWN0b3IuRGVi
dWdnZXJSZXNvdXJjZUJpbmRpbmcucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5S
ZXNvdXJjZURvbWFpbk1vZGVsQmluZGluZy5wcm90b3R5cGU7CitXZWJJbnNwZWN0b3IuRGVidWdn
ZXJQcmVzZW50YXRpb25Nb2RlbC5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLk9i
amVjdC5wcm90b3R5cGU7CiAKIC8qKgogICogQHR5cGUgez9XZWJJbnNwZWN0b3IuRGVidWdnZXJQ
cmVzZW50YXRpb25Nb2RlbH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvRGVidWdnZXJSZXNvdXJjZUJpbmRpbmcuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL0RlYnVnZ2VyUmVzb3VyY2VCaW5kaW5nLmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ4
YWE4MjQ0NDUyZWQ3OGZlNWQzMjg5OTBjMDRiNzUxY2VlYTExYjIKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RlYnVnZ2VyUmVzb3VyY2VCaW5k
aW5nLmpzCkBAIC0wLDAgKzEsMTQ3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAq
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRo
ZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworLyoqCisgKiBAY29uc3RydWN0b3IKKyAqIEBpbXBsZW1l
bnRzIHtXZWJJbnNwZWN0b3IuUmVzb3VyY2VEb21haW5Nb2RlbEJpbmRpbmd9CisgKi8KK1dlYklu
c3BlY3Rvci5EZWJ1Z2dlclJlc291cmNlQmluZGluZyA9IGZ1bmN0aW9uKCkKK3sKKyAgICBXZWJJ
bnNwZWN0b3IuUmVzb3VyY2UucmVnaXN0ZXJEb21haW5Nb2RlbEJpbmRpbmcoV2ViSW5zcGVjdG9y
LnJlc291cmNlVHlwZXMuU2NyaXB0LCB0aGlzKTsKK30KKworCisvKioKKyAqIEBwYXJhbSB7V2Vi
SW5zcGVjdG9yLlVJU291cmNlQ29kZX0gdWlTb3VyY2VDb2RlCisgKiBAcmV0dXJuIHtib29sZWFu
fQorICovCitXZWJJbnNwZWN0b3IuRGVidWdnZXJSZXNvdXJjZUJpbmRpbmcuY2FuRWRpdFNjcmlw
dFNvdXJjZSA9IGZ1bmN0aW9uKHVpU291cmNlQ29kZSkKK3sKKyAgICByZXR1cm4gV2ViSW5zcGVj
dG9yLmRlYnVnZ2VyTW9kZWwuY2FuU2V0U2NyaXB0U291cmNlKCkgJiYgdWlTb3VyY2VDb2RlLmlz
RWRpdGFibGU7Cit9CisKKy8qKgorICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2Rl
fSB1aVNvdXJjZUNvZGUKKyAqIEBwYXJhbSB7c3RyaW5nfSBuZXdTb3VyY2UKKyAqIEBwYXJhbSB7
ZnVuY3Rpb24oP1Byb3RvY29sLkVycm9yKX0gY2FsbGJhY2sKKyAqLworV2ViSW5zcGVjdG9yLkRl
YnVnZ2VyUmVzb3VyY2VCaW5kaW5nLnNldFNjcmlwdFNvdXJjZSA9IGZ1bmN0aW9uKHVpU291cmNl
Q29kZSwgbmV3U291cmNlLCBjYWxsYmFjaykKK3sKKyAgICB2YXIgcmF3TG9jYXRpb24gPSB1aVNv
dXJjZUNvZGUudWlMb2NhdGlvblRvUmF3TG9jYXRpb24oMCwgMCk7CisgICAgdmFyIHNjcmlwdCA9
IFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1vZGVsLnNjcmlwdEZvcklkKHJhd0xvY2F0aW9uLnNjcmlw
dElkKTsKKworICAgIC8qKgorICAgICAqIEB0aGlzIHtXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVz
ZW50YXRpb25Nb2RlbH0KKyAgICAgKiBAcGFyYW0gez9Qcm90b2NvbC5FcnJvcn0gZXJyb3IKKyAg
ICAgKi8KKyAgICBmdW5jdGlvbiBkaWRFZGl0U2NyaXB0U291cmNlKGVycm9yKQorICAgIHsKKyAg
ICAgICAgY2FsbGJhY2soZXJyb3IpOworICAgICAgICBpZiAoZXJyb3IpCisgICAgICAgICAgICBy
ZXR1cm47CisKKyAgICAgICAgdmFyIHJlc291cmNlID0gV2ViSW5zcGVjdG9yLnJlc291cmNlRm9y
VVJMKHNjcmlwdC5zb3VyY2VVUkwpOworICAgICAgICBpZiAocmVzb3VyY2UpCisgICAgICAgICAg
ICByZXNvdXJjZS5hZGRSZXZpc2lvbihuZXdTb3VyY2UpOworCisgICAgICAgIHVpU291cmNlQ29k
ZS5jb250ZW50Q2hhbmdlZChuZXdTb3VyY2UpOworICAgIH0KKyAgICBXZWJJbnNwZWN0b3IuZGVi
dWdnZXJNb2RlbC5zZXRTY3JpcHRTb3VyY2Uoc2NyaXB0LnNjcmlwdElkLCBuZXdTb3VyY2UsIGRp
ZEVkaXRTY3JpcHRTb3VyY2UuYmluZCh0aGlzKSk7Cit9CisKK1dlYkluc3BlY3Rvci5EZWJ1Z2dl
clJlc291cmNlQmluZGluZy5wcm90b3R5cGUgPSB7CisgICAgLyoqCisgICAgICogQHBhcmFtIHtX
ZWJJbnNwZWN0b3IuUmVzb3VyY2V9IHJlc291cmNlCisgICAgICogQHJldHVybiB7Ym9vbGVhbn0K
KyAgICAgKi8KKyAgICBjYW5TZXRDb250ZW50OiBmdW5jdGlvbihyZXNvdXJjZSkKKyAgICB7Cisg
ICAgICAgIHZhciB1aVNvdXJjZUNvZGUgPSB0aGlzLl91aVNvdXJjZUNvZGVGb3JSZXNvdXJjZShy
ZXNvdXJjZSk7CisgICAgICAgIHJldHVybiAhIXVpU291cmNlQ29kZSAmJiBXZWJJbnNwZWN0b3Iu
RGVidWdnZXJSZXNvdXJjZUJpbmRpbmcuY2FuRWRpdFNjcmlwdFNvdXJjZSh1aVNvdXJjZUNvZGUp
OworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5SZXNvdXJj
ZX0gcmVzb3VyY2UKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gY29udGVudAorICAgICAqIEBwYXJh
bSB7Ym9vbGVhbn0gbWFqb3JDaGFuZ2UKKyAgICAgKiBAcGFyYW0ge2Z1bmN0aW9uKD9zdHJpbmcp
fSB1c2VyQ2FsbGJhY2sKKyAgICAgKi8KKyAgICBzZXRDb250ZW50OiBmdW5jdGlvbihyZXNvdXJj
ZSwgY29udGVudCwgbWFqb3JDaGFuZ2UsIHVzZXJDYWxsYmFjaykKKyAgICB7CisgICAgICAgIGlm
ICghbWFqb3JDaGFuZ2UpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdmFyIHVpU291
cmNlQ29kZSA9IHRoaXMuX3VpU291cmNlQ29kZUZvclJlc291cmNlKHJlc291cmNlKTsKKyAgICAg
ICAgaWYgKCF1aVNvdXJjZUNvZGUpIHsKKyAgICAgICAgICAgIHVzZXJDYWxsYmFjaygiUmVzb3Vy
Y2UgaXMgbm90IGVkaXRhYmxlIik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKwor
ICAgICAgICByZXNvdXJjZS5yZXF1ZXN0Q29udGVudCh0aGlzLl9zZXRDb250ZW50V2l0aEluaXRp
YWxDb250ZW50LmJpbmQodGhpcywgdWlTb3VyY2VDb2RlLCBjb250ZW50LCB1c2VyQ2FsbGJhY2sp
KTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuUmVzb3Vy
Y2V9IHJlc291cmNlCisgICAgICogQHJldHVybiB7V2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZX0K
KyAgICAgKi8KKyAgICBfdWlTb3VyY2VDb2RlRm9yUmVzb3VyY2U6IGZ1bmN0aW9uKHJlc291cmNl
KQorICAgIHsKKyAgICAgICAgdmFyIHVpU291cmNlQ29kZXMgPSBXZWJJbnNwZWN0b3IuZGVidWdn
ZXJQcmVzZW50YXRpb25Nb2RlbC51aVNvdXJjZUNvZGVzKCk7CisgICAgICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgdWlTb3VyY2VDb2Rlcy5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgaWYgKHVp
U291cmNlQ29kZXNbaV0udXJsID09PSByZXNvdXJjZS51cmwpCisgICAgICAgICAgICAgICAgcmV0
dXJuIHVpU291cmNlQ29kZXNbaV07CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG51bGw7Cisg
ICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlVJU291cmNlQ29k
ZX0gdWlTb3VyY2VDb2RlCisgICAgICogQHBhcmFtIHtzdHJpbmd9IGNvbnRlbnQKKyAgICAgKiBA
cGFyYW0ge2Z1bmN0aW9uKD9zdHJpbmcpfSB1c2VyQ2FsbGJhY2sKKyAgICAgKiBAcGFyYW0gez9z
dHJpbmd9IG9sZENvbnRlbnQKKyAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IG9sZENvbnRlbnRFbmNv
ZGVkCisgICAgICogQHBhcmFtIHtzdHJpbmd9IG1pbWVUeXBlCisgICAgICovCisgICAgX3NldENv
bnRlbnRXaXRoSW5pdGlhbENvbnRlbnQ6IGZ1bmN0aW9uKHVpU291cmNlQ29kZSwgY29udGVudCwg
dXNlckNhbGxiYWNrLCBvbGRDb250ZW50LCBvbGRDb250ZW50RW5jb2RlZCwgbWltZVR5cGUpCisg
ICAgeworICAgICAgICAvKioKKyAgICAgICAgICogQHRoaXMge1dlYkluc3BlY3Rvci5EZWJ1Z2dl
clJlc291cmNlQmluZGluZ30KKyAgICAgICAgICogQHBhcmFtIHs/c3RyaW5nfSBlcnJvcgorICAg
ICAgICAgKi8KKyAgICAgICAgZnVuY3Rpb24gY2FsbGJhY2soZXJyb3IpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGlmICh1c2VyQ2FsbGJhY2spCisgICAgICAgICAgICAgICAgdXNlckNhbGxiYWNr
KGVycm9yKTsKKyAgICAgICAgfQorICAgICAgICBXZWJJbnNwZWN0b3IuRGVidWdnZXJSZXNvdXJj
ZUJpbmRpbmcuc2V0U2NyaXB0U291cmNlKHVpU291cmNlQ29kZSwgY29udGVudCwgY2FsbGJhY2su
YmluZCh0aGlzKSk7CisgICAgfQorfQorCitXZWJJbnNwZWN0b3IuRGVidWdnZXJSZXNvdXJjZUJp
bmRpbmcucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5SZXNvdXJjZURvbWFpbk1v
ZGVsQmluZGluZy5wcm90b3R5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL1ByZXNlbnRhdGlvbkNvbnNvbGVNZXNzYWdlSGVscGVyLmpzIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9QcmVzZW50YXRpb25Db25zb2xlTWVzc2FnZUhl
bHBlci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi45YTY4OTcyMDg0OGFiYjFjOGVjYzJiNWU3NzVkM2JiOGY1NWVl
Mjk2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9QcmVzZW50YXRpb25Db25zb2xlTWVzc2FnZUhlbHBlci5qcwpAQCAtMCwwICsxLDE2MCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisg
KiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQor
ICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKy8q
KgorICogQGNvbnN0cnVjdG9yCisgKi8KK1dlYkluc3BlY3Rvci5QcmVzZW50YXRpb25Db25zb2xl
TWVzc2FnZUhlbHBlciA9IGZ1bmN0aW9uKCkKK3sKKyAgICB0aGlzLl9wZW5kaW5nQ29uc29sZU1l
c3NhZ2VzID0ge307CisgICAgdGhpcy5fcHJlc2VudGF0aW9uQ29uc29sZU1lc3NhZ2VzID0gW107
CisKKyAgICBXZWJJbnNwZWN0b3IuY29uc29sZS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rv
ci5Db25zb2xlTW9kZWwuRXZlbnRzLk1lc3NhZ2VBZGRlZCwgdGhpcy5fY29uc29sZU1lc3NhZ2VB
ZGRlZCwgdGhpcyk7CisgICAgV2ViSW5zcGVjdG9yLmNvbnNvbGUuYWRkRXZlbnRMaXN0ZW5lcihX
ZWJJbnNwZWN0b3IuQ29uc29sZU1vZGVsLkV2ZW50cy5Db25zb2xlQ2xlYXJlZCwgdGhpcy5fY29u
c29sZUNsZWFyZWQsIHRoaXMpOworCisgICAgV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTW9kZWwuYWRk
RXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRGVidWdnZXJNb2RlbC5FdmVudHMuUGFyc2VkU2Ny
aXB0U291cmNlLCB0aGlzLl9wYXJzZWRTY3JpcHRTb3VyY2UsIHRoaXMpOworICAgIFdlYkluc3Bl
Y3Rvci5kZWJ1Z2dlck1vZGVsLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRlYnVnZ2Vy
TW9kZWwuRXZlbnRzLkZhaWxlZFRvUGFyc2VTY3JpcHRTb3VyY2UsIHRoaXMuX3BhcnNlZFNjcmlw
dFNvdXJjZSwgdGhpcyk7CisgICAgV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTW9kZWwuYWRkRXZlbnRM
aXN0ZW5lcihXZWJJbnNwZWN0b3IuRGVidWdnZXJNb2RlbC5FdmVudHMuR2xvYmFsT2JqZWN0Q2xl
YXJlZCwgdGhpcy5fZGVidWdnZXJSZXNldCwgdGhpcyk7Cit9CisKK1dlYkluc3BlY3Rvci5QcmVz
ZW50YXRpb25Db25zb2xlTWVzc2FnZUhlbHBlci5wcm90b3R5cGUgPSB7CisgICAgLyoqCisgICAg
ICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuRXZlbnR9IGV2ZW50CisgICAgICovCisgICAgX2NvbnNv
bGVNZXNzYWdlQWRkZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIHsKKyAgICAgICAgdmFyIG1lc3Nh
Z2UgPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZX0gKi8gZXZlbnQuZGF0
YTsKKyAgICAgICAgaWYgKCFtZXNzYWdlLnVybCB8fCAhbWVzc2FnZS5pc0Vycm9yT3JXYXJuaW5n
KCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdmFyIHJhd0xvY2F0aW9uID0gbWVz
c2FnZS5sb2NhdGlvbigpOworICAgICAgICBpZiAocmF3TG9jYXRpb24pCisgICAgICAgICAgICB0
aGlzLl9hZGRDb25zb2xlTWVzc2FnZVRvU2NyaXB0KG1lc3NhZ2UsIHJhd0xvY2F0aW9uKTsKKyAg
ICAgICAgZWxzZQorICAgICAgICAgICAgdGhpcy5fYWRkUGVuZGluZ0NvbnNvbGVNZXNzYWdlKG1l
c3NhZ2UpOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5D
b25zb2xlTWVzc2FnZX0gbWVzc2FnZQorICAgICAqIEBwYXJhbSB7RGVidWdnZXJBZ2VudC5Mb2Nh
dGlvbn0gcmF3TG9jYXRpb24KKyAgICAgKi8KKyAgICBfYWRkQ29uc29sZU1lc3NhZ2VUb1Njcmlw
dDogZnVuY3Rpb24obWVzc2FnZSwgcmF3TG9jYXRpb24pCisgICAgeworICAgICAgICB0aGlzLl9w
cmVzZW50YXRpb25Db25zb2xlTWVzc2FnZXMucHVzaChuZXcgV2ViSW5zcGVjdG9yLlByZXNlbnRh
dGlvbkNvbnNvbGVNZXNzYWdlKG1lc3NhZ2UsIHJhd0xvY2F0aW9uKSk7CisgICAgfSwKKworICAg
IC8qKgorICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlfSBtZXNzYWdl
CisgICAgICovCisgICAgX2FkZFBlbmRpbmdDb25zb2xlTWVzc2FnZTogZnVuY3Rpb24obWVzc2Fn
ZSkKKyAgICB7CisgICAgICAgIGlmICghdGhpcy5fcGVuZGluZ0NvbnNvbGVNZXNzYWdlc1ttZXNz
YWdlLnVybF0pCisgICAgICAgICAgICB0aGlzLl9wZW5kaW5nQ29uc29sZU1lc3NhZ2VzW21lc3Nh
Z2UudXJsXSA9IFtdOworICAgICAgICB0aGlzLl9wZW5kaW5nQ29uc29sZU1lc3NhZ2VzW21lc3Nh
Z2UudXJsXS5wdXNoKG1lc3NhZ2UpOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0g
e1dlYkluc3BlY3Rvci5FdmVudH0gZXZlbnQKKyAgICAgKi8KKyAgICBfcGFyc2VkU2NyaXB0U291
cmNlOiBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAgICAgIHZhciBzY3JpcHQgPSAvKiogQHR5
cGUge1dlYkluc3BlY3Rvci5TY3JpcHR9ICovIGV2ZW50LmRhdGE7CisKKyAgICAgICAgdmFyIG1l
c3NhZ2VzID0gdGhpcy5fcGVuZGluZ0NvbnNvbGVNZXNzYWdlc1tzY3JpcHQuc291cmNlVVJMXTsK
KyAgICAgICAgaWYgKCFtZXNzYWdlcykKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB2
YXIgcGVuZGluZ01lc3NhZ2VzID0gW107CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbWVz
c2FnZXMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgIHZhciBtZXNzYWdlID0gbWVzc2FnZXNb
aV07CisgICAgICAgICAgICB2YXIgcmF3TG9jYXRpb24gPSBtZXNzYWdlLmxvY2F0aW9uKCk7Cisg
ICAgICAgICAgICBpZiAoc2NyaXB0LnNjcmlwdElkID09PSByYXdMb2NhdGlvbi5zY3JpcHRJZCkK
KyAgICAgICAgICAgICAgICB0aGlzLl9hZGRDb25zb2xlTWVzc2FnZVRvU2NyaXB0KG1lc3NhZ2Vz
LCByYXdMb2NhdGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgcGVuZGlu
Z01lc3NhZ2VzLnB1c2gobWVzc2FnZSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAocGVuZGlu
Z01lc3NhZ2VzLmxlbmd0aCkKKyAgICAgICAgICAgIHRoaXMuX3BlbmRpbmdDb25zb2xlTWVzc2Fn
ZXNbc2NyaXB0LnNvdXJjZVVSTF0gPSBwZW5kaW5nTWVzc2FnZXM7CisgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgIGRlbGV0ZSB0aGlzLl9wZW5kaW5nQ29uc29sZU1lc3NhZ2VzW3NjcmlwdC5zb3Vy
Y2VVUkxdOworICAgIH0sCisKKyAgICBfY29uc29sZUNsZWFyZWQ6IGZ1bmN0aW9uKCkKKyAgICB7
CisgICAgICAgIHRoaXMuX3BlbmRpbmdDb25zb2xlTWVzc2FnZXMgPSB7fTsKKyAgICAgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCB0aGlzLl9wcmVzZW50YXRpb25Db25zb2xlTWVzc2FnZXMubGVuZ3Ro
OyArK2kpCisgICAgICAgICAgICB0aGlzLl9wcmVzZW50YXRpb25Db25zb2xlTWVzc2FnZXNbaV0u
ZGlzcG9zZSgpOworICAgICAgICB0aGlzLl9wcmVzZW50YXRpb25Db25zb2xlTWVzc2FnZXMgPSBb
XTsKKyAgICAgICAgdmFyIHVpU291cmNlQ29kZXMgPSBXZWJJbnNwZWN0b3IuZGVidWdnZXJQcmVz
ZW50YXRpb25Nb2RlbC51aVNvdXJjZUNvZGVzKCk7CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgdWlTb3VyY2VDb2Rlcy5sZW5ndGg7ICsraSkKKyAgICAgICAgICAgIHVpU291cmNlQ29kZXNb
aV0uY29uc29sZU1lc3NhZ2VzQ2xlYXJlZCgpOworICAgIH0sCisKKyAgICBfZGVidWdnZXJSZXNl
dDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdGhpcy5fcGVuZGluZ0NvbnNvbGVNZXNzYWdl
cyA9IHt9OworICAgICAgICB0aGlzLl9wcmVzZW50YXRpb25Db25zb2xlTWVzc2FnZXMgPSBbXTsK
KyAgICB9Cit9CisKKy8qKgorICogQGNvbnN0cnVjdG9yCisgKiBAcGFyYW0ge1dlYkluc3BlY3Rv
ci5Db25zb2xlTWVzc2FnZX0gbWVzc2FnZQorICogQHBhcmFtIHtEZWJ1Z2dlckFnZW50LkxvY2F0
aW9ufSByYXdMb2NhdGlvbgorICovCitXZWJJbnNwZWN0b3IuUHJlc2VudGF0aW9uQ29uc29sZU1l
c3NhZ2UgPSBmdW5jdGlvbihtZXNzYWdlLCByYXdMb2NhdGlvbikKK3sKKyAgICB0aGlzLm9yaWdp
bmFsTWVzc2FnZSA9IG1lc3NhZ2U7CisgICAgdGhpcy5fbGl2ZUxvY2F0aW9uID0gV2ViSW5zcGVj
dG9yLmRlYnVnZ2VyTW9kZWwuY3JlYXRlTGl2ZUxvY2F0aW9uKHJhd0xvY2F0aW9uLCB0aGlzLl91
cGRhdGVMb2NhdGlvbi5iaW5kKHRoaXMpKTsKK30KKworV2ViSW5zcGVjdG9yLlByZXNlbnRhdGlv
bkNvbnNvbGVNZXNzYWdlLnByb3RvdHlwZSA9IHsKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge1dl
Ykluc3BlY3Rvci5VSUxvY2F0aW9ufSB1aUxvY2F0aW9uCisgICAgICovCisgICAgX3VwZGF0ZUxv
Y2F0aW9uOiBmdW5jdGlvbih1aUxvY2F0aW9uKQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMuX3Vp
TG9jYXRpb24pCisgICAgICAgICAgICB0aGlzLl91aUxvY2F0aW9uLnVpU291cmNlQ29kZS5jb25z
b2xlTWVzc2FnZVJlbW92ZWQodGhpcyk7CisgICAgICAgIHRoaXMuX3VpTG9jYXRpb24gPSB1aUxv
Y2F0aW9uOworICAgICAgICB0aGlzLl91aUxvY2F0aW9uLnVpU291cmNlQ29kZS5jb25zb2xlTWVz
c2FnZUFkZGVkKHRoaXMpOworICAgIH0sCisKKyAgICBnZXQgbGluZU51bWJlcigpCisgICAgewor
ICAgICAgICByZXR1cm4gdGhpcy5fdWlMb2NhdGlvbi5saW5lTnVtYmVyOworICAgIH0sCisKKyAg
ICBkaXNwb3NlOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB0aGlzLl9saXZlTG9jYXRpb24u
ZGlzcG9zZSgpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvU2NyaXB0TWFwcGluZy5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvU2NyaXB0TWFwcGluZy5qcwppbmRleCAwYjI4YzhlMWFiMzkxODQwNzUwN2FiNTEx
YTAyNmUyOGI1ZGRiM2U2Li5lZmNmYWIwZmQ0MzNhZTFlOTVkOTE3OTM1ZWFkMmE3MTdlMWIyZmU4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NjcmlwdE1h
cHBpbmcuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRN
YXBwaW5nLmpzCkBAIC0xMjIsOTAgKzEyMiwzIEBAIFdlYkluc3BlY3Rvci5TY3JpcHRNYXBwaW5n
LnByb3RvdHlwZSA9IHsKIH0KIAogV2ViSW5zcGVjdG9yLlNjcmlwdE1hcHBpbmcucHJvdG90eXBl
Ll9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5PYmplY3QucHJvdG90eXBlOwotCi0vKioKLSAqIEBj
b25zdHJ1Y3RvcgotICogQGV4dGVuZHMge1dlYkluc3BlY3Rvci5PYmplY3R9Ci0gKi8KLVdlYklu
c3BlY3Rvci5NYWluU2NyaXB0TWFwcGluZyA9IGZ1bmN0aW9uKCkKLXsKLSAgICB0aGlzLl9tYXBw
aW5ncyA9IFtdOwotCi0gICAgdGhpcy5fcmVzb3VyY2VNYXBwaW5nID0gbmV3IFdlYkluc3BlY3Rv
ci5SZXNvdXJjZVNjcmlwdE1hcHBpbmcoKTsKLSAgICB0aGlzLl9tYXBwaW5ncy5wdXNoKHRoaXMu
X3Jlc291cmNlTWFwcGluZyk7Ci0gICAgdGhpcy5fY29tcGlsZXJNYXBwaW5nID0gbmV3IFdlYklu
c3BlY3Rvci5Db21waWxlclNjcmlwdE1hcHBpbmcoKTsKLSAgICB0aGlzLl9tYXBwaW5ncy5wdXNo
KHRoaXMuX2NvbXBpbGVyTWFwcGluZyk7Ci0gICAgdGhpcy5fc25pcHBldHNNYXBwaW5nID0gbmV3
IFdlYkluc3BlY3Rvci5TbmlwcGV0c1NjcmlwdE1hcHBpbmcoKTsKLSAgICB0aGlzLl9tYXBwaW5n
cy5wdXNoKHRoaXMuX3NuaXBwZXRzTWFwcGluZyk7Ci0KLSAgICBmb3IgKHZhciBpID0gMDsgaSA8
IHRoaXMuX21hcHBpbmdzLmxlbmd0aDsgKytpKQotICAgICAgICB0aGlzLl9tYXBwaW5nc1tpXS5h
ZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5TY3JpcHRNYXBwaW5nLkV2ZW50cy5VSVNvdXJj
ZUNvZGVMaXN0Q2hhbmdlZCwgdGhpcy5faGFuZGxlVUlTb3VyY2VDb2RlTGlzdENoYW5nZWQsIHRo
aXMpOwotCi0gICAgdGhpcy5fbWFwcGluZ0ZvclNjcmlwdElkID0ge307Ci19Ci0KLVdlYkluc3Bl
Y3Rvci5NYWluU2NyaXB0TWFwcGluZy5FdmVudHMgPSB7Ci0gICAgVUlTb3VyY2VDb2RlTGlzdENo
YW5nZWQ6ICJ1aS1zb3VyY2UtY29kZS1saXN0LWNoYW5nZWQiCi19Ci0KLVdlYkluc3BlY3Rvci5N
YWluU2NyaXB0TWFwcGluZy5wcm90b3R5cGUgPSB7Ci0gICAgLyoqCi0gICAgICogQHJldHVybiB7
QXJyYXkuPFdlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGU+fQotICAgICAqLwotICAgIHVpU291cmNl
Q29kZUxpc3Q6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHZhciByZXN1bHQgPSBbXTsKLSAg
ICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLl9tYXBwaW5ncy5sZW5ndGg7ICsraSkgewot
ICAgICAgICAgICAgdmFyIHVpU291cmNlQ29kZUxpc3QgPSB0aGlzLl9tYXBwaW5nc1tpXS51aVNv
dXJjZUNvZGVMaXN0KCk7Ci0gICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IHVpU291cmNl
Q29kZUxpc3QubGVuZ3RoOyArK2opCi0gICAgICAgICAgICAgICAgcmVzdWx0LnB1c2godWlTb3Vy
Y2VDb2RlTGlzdFtqXSk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9
LAotCi0gICAgLyoqCi0gICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuU2NyaXB0fSBzY3JpcHQK
LSAgICAgKi8KLSAgICBhZGRTY3JpcHQ6IGZ1bmN0aW9uKHNjcmlwdCkKLSAgICB7Ci0gICAgICAg
IHZhciBtYXBwaW5nID0gdGhpcy5fbWFwcGluZ0ZvclNjcmlwdChzY3JpcHQpOwotICAgICAgICB0
aGlzLl9tYXBwaW5nRm9yU2NyaXB0SWRbc2NyaXB0LnNjcmlwdElkXSA9IG1hcHBpbmc7Ci0gICAg
ICAgIG1hcHBpbmcuYWRkU2NyaXB0KHNjcmlwdCk7Ci0gICAgfSwKLQotICAgIC8qKgotICAgICAq
IEBwYXJhbSB7V2ViSW5zcGVjdG9yLlNjcmlwdH0gc2NyaXB0Ci0gICAgICogQHJldHVybiB7V2Vi
SW5zcGVjdG9yLlNjcmlwdE1hcHBpbmd9Ci0gICAgICovCi0gICAgX21hcHBpbmdGb3JTY3JpcHQ6
IGZ1bmN0aW9uKHNjcmlwdCkKLSAgICB7Ci0gICAgICAgIGlmIChXZWJJbnNwZWN0b3IuZXhwZXJp
bWVudHNTZXR0aW5ncy5zbmlwcGV0c1N1cHBvcnQuaXNFbmFibGVkKCkpIHsKLSAgICAgICAgICAg
IGlmIChXZWJJbnNwZWN0b3Iuc25pcHBldHNNb2RlbC5zbmlwcGV0SWRGb3JTb3VyY2VVUkwoc2Ny
aXB0LnNvdXJjZVVSTCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3NuaXBwZXRzTWFw
cGluZzsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChXZWJJbnNwZWN0b3Iuc2V0dGluZ3Muc291
cmNlTWFwc0VuYWJsZWQuZ2V0KCkgJiYgc2NyaXB0LnNvdXJjZU1hcFVSTCkgewotICAgICAgICAg
ICAgaWYgKHRoaXMuX2NvbXBpbGVyTWFwcGluZy5sb2FkU291cmNlTWFwRm9yU2NyaXB0KHNjcmlw
dCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2NvbXBpbGVyTWFwcGluZzsKLSAgICAg
ICAgfQotCi0gICAgICAgIHJldHVybiB0aGlzLl9yZXNvdXJjZU1hcHBpbmc7Ci0gICAgfSwKLQot
ICAgIC8qKgotICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLkV2ZW50fSBldmVudAotICAgICAq
LwotICAgIF9oYW5kbGVVSVNvdXJjZUNvZGVMaXN0Q2hhbmdlZDogZnVuY3Rpb24oZXZlbnQpCi0g
ICAgewotICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3Iu
TWFpblNjcmlwdE1hcHBpbmcuRXZlbnRzLlVJU291cmNlQ29kZUxpc3RDaGFuZ2VkLCBldmVudC5k
YXRhKTsKLSAgICB9LAotCi0gICAgcmVzZXQ6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgdGhpcy5fbWFwcGluZ3MubGVuZ3RoOyArK2kpCi0gICAgICAgICAg
ICB0aGlzLl9tYXBwaW5nc1tpXS5yZXNldCgpOwotICAgICAgICB0aGlzLl9tYXBwaW5nRm9yU2Ny
aXB0SWQgPSB7fTsKLSAgICB9Ci19Ci0KLVdlYkluc3BlY3Rvci5NYWluU2NyaXB0TWFwcGluZy5w
cm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLk9iamVjdC5wcm90b3R5cGU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NjcmlwdHNQYW5lbC5q
cyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0c1BhbmVsLmpzCmlu
ZGV4IDk1MjI2YjZkNWNkNWQxNWQ4YzI3MWZjZWNkODNkODZkNjQ5NTNjYjIuLjFkOTk0ZjgwNzA1
YTM5MjgwMDBmZGY1MDkxZjkwNjk0ZmZkMGZjMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0c1BhbmVsLmpzCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0c1BhbmVsLmpzCkBAIC0zOCw2ICszOCw3IEBAIFdl
Ykluc3BlY3Rvci5TY3JpcHRzUGFuZWwgPSBmdW5jdGlvbihwcmVzZW50YXRpb25Nb2RlbCkKICAg
ICBXZWJJbnNwZWN0b3Iuc2V0dGluZ3MubmF2aWdhdG9yV2FzT25jZUhpZGRlbiA9IFdlYkluc3Bl
Y3Rvci5zZXR0aW5ncy5jcmVhdGVTZXR0aW5nKCJuYXZpZ2F0b3JXYXNPbmNlSGlkZGVuIiwgZmFs
c2UpOwogCiAgICAgdGhpcy5fcHJlc2VudGF0aW9uTW9kZWwgPSBwcmVzZW50YXRpb25Nb2RlbDsK
KyAgICBuZXcgV2ViSW5zcGVjdG9yLlByZXNlbnRhdGlvbkNvbnNvbGVNZXNzYWdlSGVscGVyKCk7
CiAKICAgICBmdW5jdGlvbiB2aWV3R2V0dGVyKCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5xcmMgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5xcmMKaW5kZXggOGRkOTM3NmEwZmUzYzhhZTg0NzE2
ZjA3MTYxNzk1OGQ5YTM3NWYwNy4uZWRiMzJmNGQ0OGIzYjE2ODE2MzJiMWUxMjUzNGZiOGFlZWIw
OTI5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9XZWJL
aXQucXJjCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvV2ViS2l0LnFy
YwpAQCAtMzcsNiArMzcsNyBAQAogICAgIDxmaWxlPkRhdGFHcmlkLmpzPC9maWxlPgogICAgIDxm
aWxlPkRlYnVnZ2VyTW9kZWwuanM8L2ZpbGU+CiAgICAgPGZpbGU+RGVidWdnZXJQcmVzZW50YXRp
b25Nb2RlbC5qczwvZmlsZT4KKyAgICA8ZmlsZT5EZWJ1Z2dlclJlc291cmNlQmluZGluZy5qczwv
ZmlsZT4KICAgICA8ZmlsZT5EaWFsb2cuanM8L2ZpbGU+CiAgICAgPGZpbGU+RE9NQWdlbnQuanM8
L2ZpbGU+CiAgICAgPGZpbGU+RE9NQnJlYWtwb2ludHNTaWRlYmFyUGFuZS5qczwvZmlsZT4KQEAg
LTEwMSw2ICsxMDIsNyBAQAogICAgIDxmaWxlPlBhbmVsRW5hYmxlclZpZXcuanM8L2ZpbGU+CiAg
ICAgPGZpbGU+UGxhY2FyZC5qczwvZmlsZT4KICAgICA8ZmlsZT5Qb3BvdmVyLmpzPC9maWxlPgor
ICAgIDxmaWxlPlByZXNlbnRhdGlvbkNvbnNvbGVNZXNzYWdlSGVscGVyLmpzPC9maWxlPgogICAg
IDxmaWxlPlByb2ZpbGVEYXRhR3JpZFRyZWUuanM8L2ZpbGU+CiAgICAgPGZpbGU+UHJvZmlsZUxh
dW5jaGVyVmlldy5qczwvZmlsZT4KICAgICA8ZmlsZT5Qcm9maWxlc1BhbmVsLmpzPC9maWxlPgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3Iu
aHRtbCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmh0bWwK
aW5kZXggNjEyNTlhM2RmYmVkMjY0OWZkZGMwMTU1MzI0YTRlMGM0OWI0MGFjYi4uZGVmNWMzNTlk
NjA3YzU2ZjZjNzc5ODRiOTAwMzlkYzdhNGZiNzFlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuaHRtbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5odG1sCkBAIC0xODIsNiArMTgyLDggQEAg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJKYXZhU2Ny
aXB0U291cmNlLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlw
dCIgc3JjPSJMaW5raWZpZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9q
YXZhc2NyaXB0IiBzcmM9IkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwuanMiPjwvc2NyaXB0Pgor
ICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IkRlYnVnZ2VyUmVzb3VyY2VC
aW5kaW5nLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIg
c3JjPSJQcmVzZW50YXRpb25Db25zb2xlTWVzc2FnZUhlbHBlci5qcyI+PC9zY3JpcHQ+CiAgICAg
PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iQnJlYWtwb2ludE1hbmFnZXIuanMi
Pjwvc2NyaXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IkNvbnRl
bnRQcm92aWRlcnMuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2Ny
aXB0IiBzcmM9IlJhd1NvdXJjZUNvZGUuanMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanMgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcwppbmRleCBlZjkwZDZkMjg1ZjI4NzQ0
NGI5MDk2YjBmYTIxMWYzMGQwYjRmNWRkLi42MTA3MzkzZTk1OGE1OWNmNzI0YTIxMzRhOTFmZmY0
MmQ3NjVlN2ViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L2luc3BlY3Rvci5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2lu
c3BlY3Rvci5qcwpAQCAtNDE1LDYgKzQxNSw3IEBAIFdlYkluc3BlY3Rvci5fZG9Mb2FkZWREb25l
V2l0aENhcGFiaWxpdGllcyA9IGZ1bmN0aW9uKCkKICAgICB0aGlzLnNuaXBwZXRzTW9kZWwgPSBu
ZXcgV2ViSW5zcGVjdG9yLlNuaXBwZXRzTW9kZWwoKTsKICAgICB0aGlzLmJyZWFrcG9pbnRNYW5h
Z2VyID0gbmV3IFdlYkluc3BlY3Rvci5CcmVha3BvaW50TWFuYWdlcihXZWJJbnNwZWN0b3Iuc2V0
dGluZ3MuYnJlYWtwb2ludHMsIHRoaXMuZGVidWdnZXJNb2RlbCk7CiAgICAgdGhpcy5kZWJ1Z2dl
clByZXNlbnRhdGlvbk1vZGVsID0gbmV3IFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlv
bk1vZGVsKCk7CisgICAgbmV3IFdlYkluc3BlY3Rvci5EZWJ1Z2dlclJlc291cmNlQmluZGluZygp
OwogCiAgICAgdGhpcy5kcmF3ZXIgPSBuZXcgV2ViSW5zcGVjdG9yLkRyYXdlcigpOwogICAgIHRo
aXMuY29uc29sZVZpZXcgPSBuZXcgV2ViSW5zcGVjdG9yLkNvbnNvbGVWaWV3KFdlYkluc3BlY3Rv
ci5Xb3JrZXJNYW5hZ2VyLmlzV29ya2VyRnJvbnRlbmQoKSk7CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggN2Q5N2JlZTY0OTYx
MzIxZDIwZTlmMTdiNjMzMGE0YTJhZmIwY2FhZS4uODY2ZjA4MzI4ZjI5NjRhZDMwNThjMzgxZjIy
ZDgyODIzMDZjZmI2ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDEyLTA1LTEyICBQYXZlbCBG
ZWxkbWFuICA8cGZlbGRtYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6
IG1lcmdlIE1haW5TY3JpcHRNYXBwaW5nIGludG8gRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbDsg
bW92ZSBvdGhlciBjbGFzc2VzIGludG8gdGhlaXIgb3duIGZpbGVzLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODYyODUKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL2Nv
bXBpbGVyLXNjcmlwdC1tYXBwaW5nLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBodHRwL3Rlc3Rz
L2luc3BlY3Rvci9jb21waWxlci1zY3JpcHQtbWFwcGluZy5odG1sOgorCiAyMDEyLTA1LTExICBJ
YW4gVm9sbGljayAgPHZvbGxpY2tAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0g
RW5zdXJlIHRoYXQgYW5pbWF0aW9ucyBjb250aW51ZSB0byBydW4gd2hlbiB0cmFuc2Zvcm0tc3R5
bGUgaXMgY2hhbmdlZApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0
b3IvY29tcGlsZXItc2NyaXB0LW1hcHBpbmctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9pbnNwZWN0b3IvY29tcGlsZXItc2NyaXB0LW1hcHBpbmctZXhwZWN0ZWQudHh0Cmlu
ZGV4IDA3YTUyNjRlMTk5MWI3YWYyZmRhNWUwZDE4NDMxMmNkZWIzYjJjZGIuLjE3YjY5NzdhYTFj
NDE5ODlmOGRjMmRjYzQ3ZDViNTBlMTM5Mjc5YjEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvaW5zcGVjdG9yL2NvbXBpbGVyLXNjcmlwdC1tYXBwaW5nLWV4cGVjdGVkLnR4dAor
KysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9jb21waWxlci1zY3JpcHQtbWFw
cGluZy1leHBlY3RlZC50eHQKQEAgLTE2LDQgKzE2LDUgQEAgUnVubmluZzogdGVzdENvbXBpbGVy
U2NyaXB0TWFwcGluZwogUnVubmluZzogdGVzdElubGluZWRTb3VyY2VNYXAKIAogUnVubmluZzog
dGVzdFNvdXJjZU1hcENvdWxkTm90QmVMb2FkZWQKK2NvbXBpbGVkLmpzCiAKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2NvbXBpbGVyLXNjcmlwdC1tYXBwaW5n
Lmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9jb21waWxlci1zY3JpcHQt
bWFwcGluZy5odG1sCmluZGV4IDkyNGMzMzYxZTkxZGZmNjJmNzFmNzc3MDU3YzY5NmQ5MGIwODZi
YzIuLmFmMTMwYzlhYTQ5Y2U4NTczZDUwYzRlMmNmZGQ3ZDY2NWY3OTAyZDcgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2NvbXBpbGVyLXNjcmlwdC1tYXBwaW5n
Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvY29tcGlsZXItc2Ny
aXB0LW1hcHBpbmcuaHRtbApAQCAtMTkyLDE4ICsxOTIsMTcgQEAgZnVuY3Rpb24gdGVzdCgpCiAg
ICAgICAgIHsKICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5zZXR0aW5ncy5zb3VyY2VNYXBzRW5h
YmxlZC5zZXQodHJ1ZSk7CiAgICAgICAgICAgICBXZWJJbnNwZWN0b3IuZGVidWdnZXJNb2RlbC5f
cmVzZXQoKTsKLSAgICAgICAgICAgIHZhciBtYWluU2NyaXB0TWFwcGluZyA9IG5ldyBXZWJJbnNw
ZWN0b3IuTWFpblNjcmlwdE1hcHBpbmcoKTsKLSAgICAgICAgICAgIG1haW5TY3JpcHRNYXBwaW5n
LmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLk1haW5TY3JpcHRNYXBwaW5nLkV2ZW50cy5V
SVNvdXJjZUNvZGVMaXN0Q2hhbmdlZCwgdWlTb3VyY2VDb2RlTGlzdENoYW5nZWQpOworICAgICAg
ICAgICAgdmFyIGRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwgPSBuZXcgV2ViSW5zcGVjdG9yLkRl
YnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwoKTsKKyAgICAgICAgICAgIGRlYnVnZ2VyUHJlc2VudGF0
aW9uTW9kZWwuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRp
b25Nb2RlbC5FdmVudHMuVUlTb3VyY2VDb2RlQWRkZWQsIHVpU291cmNlQ29kZUFkZGVkKTsKIAog
ICAgICAgICAgICAgdmFyIHNjcmlwdCA9IEluc3BlY3RvclRlc3QuY3JlYXRlU2NyaXB0TW9jaygi
Y29tcGlsZWQuanMiLCAwLCAwLCB0cnVlLCAiIik7CiAgICAgICAgICAgICBzY3JpcHQuc291cmNl
TWFwVVJMID0gImh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9pbnNwZWN0b3IvcmVzb3VyY2VzL3NvdXJj
ZS1tYXAuanNvbl8iOwogICAgICAgICAgICAgY29uc29sZS5lcnJvciA9IGZ1bmN0aW9uKCkge307
IC8vIEVycm9yIG1lc3NhZ2UgaXMgcGxhdGZvcm0gZGVwZW5kZW50LgotICAgICAgICAgICAgbWFp
blNjcmlwdE1hcHBpbmcuYWRkU2NyaXB0KHNjcmlwdCk7CisgICAgICAgICAgICBkZWJ1Z2dlclBy
ZXNlbnRhdGlvbk1vZGVsLl9wYXJzZWRTY3JpcHRTb3VyY2Uoe2RhdGE6c2NyaXB0fSk7CiAKLSAg
ICAgICAgICAgIGZ1bmN0aW9uIHVpU291cmNlQ29kZUxpc3RDaGFuZ2VkKGV2ZW50KQorICAgICAg
ICAgICAgZnVuY3Rpb24gdWlTb3VyY2VDb2RlQWRkZWQoZXZlbnQpCiAgICAgICAgICAgICB7Ci0g
ICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHMoMSwgZXZlbnQuZGF0YS5h
ZGRlZEl0ZW1zLmxlbmd0aCk7Ci0gICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRF
cXVhbHMoImNvbXBpbGVkLmpzIiwgZXZlbnQuZGF0YS5hZGRlZEl0ZW1zWzBdLnVybCk7CisgICAg
ICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoZXZlbnQuZGF0YS51cmwpOwogICAg
ICAgICAgICAgICAgIG5leHQoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQo=
</data>
<flag name="review"
          id="147716"
          type_id="1"
          status="+"
          setter="yurys"
    />
          </attachment>
      

    </bug>

</bugzilla>