<?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>83460</bug_id>
          
          <creation_ts>2012-04-09 02:05:15 -0700</creation_ts>
          <short_desc>Web Inspector: remove ComboBoxFileSelector and SingleFileEditorContainer.</short_desc>
          <delta_ts>2012-04-09 02:39:38 -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>598178</commentid>
    <comment_count>0</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-04-09 02:05:15 -0700</bug_when>
    <thetext>We are now using scripts navigator and tabbed editor container, removing the old components.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>598183</commentid>
    <comment_count>1</comment_count>
      <attachid>136198</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-04-09 02:20:34 -0700</bug_when>
    <thetext>Created attachment 136198
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>598184</commentid>
    <comment_count>2</comment_count>
      <attachid>136199</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-04-09 02:22:35 -0700</bug_when>
    <thetext>Created attachment 136199
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>598190</commentid>
    <comment_count>3</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-04-09 02:39:38 -0700</bug_when>
    <thetext>Committed r113563: &lt;http://trac.webkit.org/changeset/113563&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>136198</attachid>
            <date>2012-04-09 02:20:34 -0700</date>
            <delta_ts>2012-04-09 02:22:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-83460-20120409132032.patch</filename>
            <type>text/plain</type>
            <size>57339</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEzNTU4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTQ2ODk3ZTAzMDk1MWU2
MzA1ODJlM2EwODE5NTYwZDE1ODBjNjM0YS4uYWVjM2NiOTQ0NWM5ZDQzMjZiZGRkYWIzYTEwZTA4
YmE3Mzk4MTY3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDEyLTA0LTA5ICBQYXZl
bCBGZWxkbWFuICA8cGZlbGRtYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IHJlbW92ZSBDb21ib0JveEZpbGVTZWxlY3RvciBhbmQgU2luZ2xlRmlsZUVkaXRvckNvbnRh
aW5lci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgz
NDYwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2Ug
YXJlIG5vdyB1c2luZyBzY3JpcHRzIG5hdmlnYXRvciBhbmQgdGFiYmVkIGVkaXRvciBjb250YWlu
ZXIsIHJlbW92aW5nIHRoZSBvbGQgY29tcG9uZW50cy4KKyAgICAgICAgVGhpcyBjaGFuZ2UgcmVt
b3ZlcyB0aGUgY29ycmVzcG9uZGluZyBjbGFzc2VzIGFuZCB0aGUgYWJzdHJhY3Rpb25zIHVzZWQg
ZHVyaW5nIHRoZQorICAgICAgICB0cmFuc2l0aW9uIHBlcmlvZC4KKworICAgICAgICAqIEVuZ2xp
c2gubHByb2ovbG9jYWxpemVkU3RyaW5ncy5qczoKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQt
ZW5kL1NjcmlwdHNOYXZpZ2F0b3IuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2NyaXB0c05h
dmlnYXRvci5wcm90b3R5cGUuX3NjcmlwdFNlbGVjdGVkKToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
ZnJvbnQtZW5kL1NjcmlwdHNQYW5lbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TY3JpcHRz
UGFuZWwuZ2V0IHRoaXMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5wcm90
b3R5cGUuZ2V0IGRlZmF1bHRGb2N1c2VkRWxlbWVudCk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
U2NyaXB0c1BhbmVsLnByb3RvdHlwZS5fYWRkVUlTb3VyY2VDb2RlKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5TY3JpcHRzUGFuZWwucHJvdG90eXBlLnNldFNjcmlwdFNvdXJjZUlzRGlydHkpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5wcm90b3R5cGUuX3Jlc2V0KToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwucHJvdG90eXBlLl9zaG93RmlsZSk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsLnByb3RvdHlwZS5fdWlTb3VyY2VDb2Rl
UmVwbGFjZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5wcm90b3R5cGUu
X2VkaXRvckNsb3NlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsLnByb3Rv
dHlwZS5fc2NyaXB0U2VsZWN0ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5l
bC5wcm90b3R5cGUuX2hpZGVQaW5uZWROYXZpZ2F0b3IpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LlNjcmlwdHNQYW5lbC5wcm90b3R5cGUuc2V0IF9waW5OYXZpZ2F0b3IpOgorICAgICAgICAqIGlu
c3BlY3Rvci9mcm9udC1lbmQvU2V0dGluZ3NTY3JlZW4uanM6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuU2V0dGluZ3NTY3JlZW4pOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvVGFiYmVk
RWRpdG9yQ29udGFpbmVyLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRhYmJlZEVkaXRvckNv
bnRhaW5lckRlbGVnYXRlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UYWJiZWRFZGl0b3JDb250
YWluZXJEZWxlZ2F0ZS5wcm90b3R5cGUudmlld0ZvckZpbGUpOgorICAgICAgICAoZ2V0IFdlYklu
c3BlY3Rvcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGFiYmVkRWRpdG9yQ29udGFpbmVyLnBy
b3RvdHlwZS5fdGFiQ2xvc2VkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL3Njcmlw
dHNQYW5lbC5jc3M6CisKIDIwMTItMDQtMDYgIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogbW92ZSBicmVha3BvaW50cyBhY3Rp
dmUgc3RhdGUgZnJvbSBzY3JpcHRzIHBhbmVsIHRvIGRlYnVnZ2VyIHByZXNlbnRhdGlvbiBtb2Rl
bC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0VuZ2xpc2gubHByb2ovbG9jYWxpemVkU3Ry
aW5ncy5qcyBiL1NvdXJjZS9XZWJDb3JlL0VuZ2xpc2gubHByb2ovbG9jYWxpemVkU3RyaW5ncy5q
cwppbmRleCAzZDM1NGY3M2ZiNTVkM2FiYWRlMzE2N2Q0MTM3MzdjMmJiNTJlODNmLi43ZTgxZDM3
N2UyYjI4Yjk0MTUzZjViMDFjYTM4NmY4OTc1NWJmOTc2IDEwMDY0NApHSVQgYmluYXJ5IHBhdGNo
CmRlbHRhIDIwCmNjbVo0VmtFUGAmJUxlQilvN2I8RVkxO25SZktpblgwQzQzQWlVMHJyCgpkZWx0
YSAzODQKemNtWnFxJCtHQWwlTGVCKXMoQjJsMz42RnwzPD9hejQ5Tl5kNDREaUNVfHRiV3lxRj1N
cCVmXlZKZWhCbXZ+Q0dRCnoyMmYwYWZqQXU+NEQ9YGVVKFVyMilpcWg2VDJ2Q1JgOSFMT24hRE0w
alk8PUxEQTApQEMjMzxNb3hfa2lUfHRqZwp6KUtZO1Y1JE1KZ3BsfUowbD5+JlRVPj1DZjFkOFBZ
ZVdVPk5ZZCVtRk5KUz50TT9rVVpBOU5WU0MkQiFzSFRpckMKVyZ0JUBDOVBIRktIQC1AMWQlUFpf
RGp4dnZKNiVLbwoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvU2NyaXB0c05hdmlnYXRvci5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvU2NyaXB0c05hdmlnYXRvci5qcwppbmRleCBkNjRmZDg5ZGU2ZGE0YzQ4YTc5MmExZDM2YThj
N2M1NTNhMjcyZDFkLi42ZjlhZTQxNmJlMmI0MjYyMTkxMmY0ZGU5YjIwZTdhNTBmZWJkZTM0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NjcmlwdHNOYXZp
Z2F0b3IuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRz
TmF2aWdhdG9yLmpzCkBAIC0yNyw3ICsyNyw2IEBACiAgKi8KIAogLyoqCi0gKiBAaW1wbGVtZW50
cyB7V2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5GaWxlU2VsZWN0b3J9CiAgKiBAZXh0ZW5kcyB7
V2ViSW5zcGVjdG9yLk9iamVjdH0KICAqIEBjb25zdHJ1Y3RvcgogICovCkBAIC04MCw2ICs3OSwx
MSBAQCBXZWJJbnNwZWN0b3IuU2NyaXB0c05hdmlnYXRvciA9IGZ1bmN0aW9uKCkKICAgICBXZWJJ
bnNwZWN0b3Iuc2V0dGluZ3Muc2hvd1NjcmlwdEZvbGRlcnMuYWRkQ2hhbmdlTGlzdGVuZXIodGhp
cy5fc2hvd1NjcmlwdEZvbGRlcnNTZXR0aW5nQ2hhbmdlZC5iaW5kKHRoaXMpKTsKIH0KIAorCitX
ZWJJbnNwZWN0b3IuU2NyaXB0c05hdmlnYXRvci5FdmVudHMgPSB7CisgICAgU2NyaXB0U2VsZWN0
ZWQ6ICJTY3JpcHRTZWxlY3RlZCIKK30KKwogV2ViSW5zcGVjdG9yLlNjcmlwdHNOYXZpZ2F0b3Iu
U2NyaXB0c1RhYiA9ICJzY3JpcHRzIjsKIFdlYkluc3BlY3Rvci5TY3JpcHRzTmF2aWdhdG9yLkNv
bnRlbnRTY3JpcHRzVGFiID0gImNvbnRlbnRTY3JpcHRzIjsKIFdlYkluc3BlY3Rvci5TY3JpcHRz
TmF2aWdhdG9yLlNuaXBwZXRzVGFiID0gInNuaXBwZXRzIjsKQEAgLTIzNiw5ICsyNDAsOCBAQCBX
ZWJJbnNwZWN0b3IuU2NyaXB0c05hdmlnYXRvci5wcm90b3R5cGUgPSB7CiAgICAgX3NjcmlwdFNl
bGVjdGVkOiBmdW5jdGlvbih1aVNvdXJjZUNvZGUsIGZvY3VzU291cmNlKQogICAgIHsKICAgICAg
ICAgdGhpcy5fbGFzdFNlbGVjdGVkVUlTb3VyY2VDb2RlID0gdWlTb3VyY2VDb2RlOwotICAgICAg
ICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVs
LkZpbGVTZWxlY3Rvci5FdmVudHMuRmlsZVNlbGVjdGVkLCB1aVNvdXJjZUNvZGUpOwotICAgICAg
ICBpZiAoZm9jdXNTb3VyY2UpCi0gICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3Rl
bmVycyhXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsLkZpbGVTZWxlY3Rvci5FdmVudHMuUmVsZWFz
ZWRGb2N1c0FmdGVyU2VsZWN0aW9uLCB1aVNvdXJjZUNvZGUpOworICAgICAgICB2YXIgZGF0YSA9
IHsgdWlTb3VyY2VDb2RlOiB1aVNvdXJjZUNvZGUsIGZvY3VzU291cmNlOiBmb2N1c1NvdXJjZX07
CisgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5TY3Jp
cHRzTmF2aWdhdG9yLkV2ZW50cy5TY3JpcHRTZWxlY3RlZCwgdWlTb3VyY2VDb2RlKTsKICAgICB9
LAogCiAgICAgLyoqCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL1NjcmlwdHNQYW5lbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
U2NyaXB0c1BhbmVsLmpzCmluZGV4IDAzOGM5MjVkNjM3ODIxNTdhODFjZTI0YWE4NTk2NjFjYjQx
MGNlMTguLmNhZWIxY2EwYmEwY2MyNjE2ZmNiZjBkZmM2MDdlN2E4Y2RlZDY0MTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0c1BhbmVsLmpzCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0c1BhbmVsLmpzCkBA
IC0yNiw3ICsyNiw3IEBACiAKIC8qKgogICogQGNvbnN0cnVjdG9yCi0gKiBAaW1wbGVtZW50cyB7
V2ViSW5zcGVjdG9yLkVkaXRvckNvbnRhaW5lckRlbGVnYXRlfQorICogQGltcGxlbWVudHMge1dl
Ykluc3BlY3Rvci5UYWJiZWRFZGl0b3JDb250YWluZXJEZWxlZ2F0ZX0KICAqIEBleHRlbmRzIHtX
ZWJJbnNwZWN0b3IuUGFuZWx9CiAgKi8KIFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwgPSBmdW5j
dGlvbihwcmVzZW50YXRpb25Nb2RlbCkKQEAgLTYxLDQ0ICs2MSwzMyBAQCBXZWJJbnNwZWN0b3Iu
U2NyaXB0c1BhbmVsID0gZnVuY3Rpb24ocHJlc2VudGF0aW9uTW9kZWwpCiAgICAgdGhpcy5kZWJ1
Z1NpZGViYXJSZXNpemVXaWRnZXRFbGVtZW50LmlkID0gInNjcmlwdHMtZGVidWctc2lkZWJhci1y
ZXNpemVyLXdpZGdldCI7CiAgICAgdGhpcy5zcGxpdFZpZXcuaW5zdGFsbFJlc2l6ZXIodGhpcy5k
ZWJ1Z1NpZGViYXJSZXNpemVXaWRnZXRFbGVtZW50KTsKIAotICAgIFdlYkluc3BlY3Rvci5zZXR0
aW5ncy51c2VTY3JpcHRzTmF2aWdhdG9yID0gV2ViSW5zcGVjdG9yLnNldHRpbmdzLmNyZWF0ZVNl
dHRpbmcoInVzZVNjcmlwdHNOYXZpZ2F0b3IiLCB0cnVlKTsKLSAgICBpZiAoV2ViSW5zcGVjdG9y
LnNldHRpbmdzLnVzZVNjcmlwdHNOYXZpZ2F0b3IuZ2V0KCkpIHsKLSAgICAgICAgY29uc3QgaW5p
dGlhbE5hdmlnYXRvcldpZHRoID0gMjI1OwotICAgICAgICBjb25zdCBtaW5pbWFsVmlld3NDb250
YWluZXJXaWR0aFBlcmNlbnQgPSA1MDsKLSAgICAgICAgdGhpcy5lZGl0b3JWaWV3ID0gbmV3IFdl
Ykluc3BlY3Rvci5TcGxpdFZpZXcoV2ViSW5zcGVjdG9yLlNwbGl0Vmlldy5TaWRlYmFyUG9zaXRp
b24uTGVmdCwgInNjcmlwdHNQYW5lbE5hdmlnYXRvclNpZGViYXJXaWR0aCIsIGluaXRpYWxOYXZp
Z2F0b3JXaWR0aCk7Ci0gICAgICAgIHRoaXMuZWRpdG9yVmlldy5lbGVtZW50LmlkID0gInNjcmlw
dHMtZWRpdG9yLXZpZXciOwotICAgICAgICB0aGlzLmVkaXRvclZpZXcuZWxlbWVudC50YWJJbmRl
eCA9IDA7Ci0KLSAgICAgICAgdGhpcy5lZGl0b3JWaWV3Lm1pbmltYWxTaWRlYmFyV2lkdGggPSBQ
cmVmZXJlbmNlcy5taW5TY3JpcHRzU2lkZWJhcldpZHRoOwotICAgICAgICB0aGlzLmVkaXRvclZp
ZXcubWluaW1hbE1haW5XaWR0aFBlcmNlbnQgPSBtaW5pbWFsVmlld3NDb250YWluZXJXaWR0aFBl
cmNlbnQ7Ci0gICAgICAgIHRoaXMuZWRpdG9yVmlldy5zaG93KHRoaXMuc3BsaXRWaWV3Lm1haW5F
bGVtZW50KTsKLQotICAgICAgICB0aGlzLl9uYXZpZ2F0b3IgPSBuZXcgV2ViSW5zcGVjdG9yLlNj
cmlwdHNOYXZpZ2F0b3IoKTsKLSAgICAgICAgdGhpcy5fbmF2aWdhdG9yVmlldyA9IHRoaXMuX25h
dmlnYXRvci52aWV3OwotICAgICAgICB0aGlzLl9maWxlU2VsZWN0b3IgPSB0aGlzLl9uYXZpZ2F0
b3I7Ci0gICAgICAgIHRoaXMuX2ZpbGVTZWxlY3Rvci5zaG93KHRoaXMuZWRpdG9yVmlldy5zaWRl
YmFyRWxlbWVudCk7Ci0KLSAgICAgICAgdGhpcy5fdGFiYmVkRWRpdG9yQ29udGFpbmVyID0gbmV3
IFdlYkluc3BlY3Rvci5UYWJiZWRFZGl0b3JDb250YWluZXIodGhpcyk7Ci0gICAgICAgIHRoaXMu
X2VkaXRvckNvbnRhaW5lciA9IHRoaXMuX3RhYmJlZEVkaXRvckNvbnRhaW5lcjsKLSAgICAgICAg
dGhpcy5fZWRpdG9yQ29udGFpbmVyLnNob3codGhpcy5lZGl0b3JWaWV3Lm1haW5FbGVtZW50KTsK
LSAgICAgICAgV2ViSW5zcGVjdG9yLk9wZW5SZXNvdXJjZURpYWxvZy5pbnN0YWxsKHRoaXMsIHRo
aXMuX3ByZXNlbnRhdGlvbk1vZGVsLCB0aGlzLmVkaXRvclZpZXcubWFpbkVsZW1lbnQpOwotCi0g
ICAgICAgIHRoaXMuX2NyZWF0ZU5hdmlnYXRvckNvbnRyb2xzKCk7Ci0gICAgICAgIFdlYkluc3Bl
Y3Rvci5zZXR0aW5ncy5uYXZpZ2F0b3JIaWRkZW4gPSBXZWJJbnNwZWN0b3Iuc2V0dGluZ3MuY3Jl
YXRlU2V0dGluZygibmF2aWdhdG9ySGlkZGVuIiwgdHJ1ZSk7Ci0gICAgICAgIGlmIChXZWJJbnNw
ZWN0b3Iuc2V0dGluZ3MubmF2aWdhdG9ySGlkZGVuLmdldCgpKQotICAgICAgICAgICAgdGhpcy5f
dG9nZ2xlTmF2aWdhdG9yKCk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgdGhpcy5fZmlsZVNlbGVj
dG9yID0gbmV3IFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwuQ29tYm9Cb3hGaWxlU2VsZWN0b3Io
KTsKLSAgICAgICAgdGhpcy5fZmlsZVNlbGVjdG9yLnNob3codGhpcy5zcGxpdFZpZXcubWFpbkVs
ZW1lbnQpOwotCi0gICAgICAgIHRoaXMuX2VkaXRvckNvbnRhaW5lciA9IG5ldyBXZWJJbnNwZWN0
b3IuU2NyaXB0c1BhbmVsLlNpbmdsZUZpbGVFZGl0b3JDb250YWluZXIodGhpcyk7Ci0gICAgICAg
IHRoaXMuX2VkaXRvckNvbnRhaW5lci5zaG93KHRoaXMuc3BsaXRWaWV3Lm1haW5FbGVtZW50KTsK
LSAgICAgICAgV2ViSW5zcGVjdG9yLk9wZW5SZXNvdXJjZURpYWxvZy5pbnN0YWxsKHRoaXMsIHRo
aXMuX3ByZXNlbnRhdGlvbk1vZGVsLCB0aGlzLnNwbGl0Vmlldy5tYWluRWxlbWVudCk7Ci0gICAg
fQotICAgIHRoaXMuX2ZpbGVTZWxlY3Rvci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5T
Y3JpcHRzUGFuZWwuRmlsZVNlbGVjdG9yLkV2ZW50cy5GaWxlU2VsZWN0ZWQsIHRoaXMuX2ZpbGVT
ZWxlY3RlZCwgdGhpcyk7Ci0gICAgdGhpcy5fZmlsZVNlbGVjdG9yLmFkZEV2ZW50TGlzdGVuZXIo
V2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5GaWxlU2VsZWN0b3IuRXZlbnRzLlJlbGVhc2VkRm9j
dXNBZnRlclNlbGVjdGlvbiwgdGhpcy5fZmlsZVNlbGVjdG9yUmVsZWFzZWRGb2N1cywgdGhpcyk7
Ci0gICAgdGhpcy5fZWRpdG9yQ29udGFpbmVyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9y
LkVkaXRvckNvbnRhaW5lci5FdmVudHMuRWRpdG9yU2VsZWN0ZWQsIHRoaXMuX2VkaXRvclNlbGVj
dGVkLCB0aGlzKTsKLSAgICB0aGlzLl9lZGl0b3JDb250YWluZXIuYWRkRXZlbnRMaXN0ZW5lcihX
ZWJJbnNwZWN0b3IuRWRpdG9yQ29udGFpbmVyLkV2ZW50cy5FZGl0b3JDbG9zZWQsIHRoaXMuX2Vk
aXRvckNsb3NlZCwgdGhpcyk7CisgICAgLy8gQ3JlYXRlIHNjcmlwdHMgbmF2aWdhdG9yCisgICAg
Y29uc3QgaW5pdGlhbE5hdmlnYXRvcldpZHRoID0gMjI1OworICAgIGNvbnN0IG1pbmltYWxWaWV3
c0NvbnRhaW5lcldpZHRoUGVyY2VudCA9IDUwOworICAgIHRoaXMuZWRpdG9yVmlldyA9IG5ldyBX
ZWJJbnNwZWN0b3IuU3BsaXRWaWV3KFdlYkluc3BlY3Rvci5TcGxpdFZpZXcuU2lkZWJhclBvc2l0
aW9uLkxlZnQsICJzY3JpcHRzUGFuZWxOYXZpZ2F0b3JTaWRlYmFyV2lkdGgiLCBpbml0aWFsTmF2
aWdhdG9yV2lkdGgpOworICAgIHRoaXMuZWRpdG9yVmlldy5lbGVtZW50LmlkID0gInNjcmlwdHMt
ZWRpdG9yLXZpZXciOworICAgIHRoaXMuZWRpdG9yVmlldy5lbGVtZW50LnRhYkluZGV4ID0gMDsK
KworICAgIHRoaXMuZWRpdG9yVmlldy5taW5pbWFsU2lkZWJhcldpZHRoID0gUHJlZmVyZW5jZXMu
bWluU2NyaXB0c1NpZGViYXJXaWR0aDsKKyAgICB0aGlzLmVkaXRvclZpZXcubWluaW1hbE1haW5X
aWR0aFBlcmNlbnQgPSBtaW5pbWFsVmlld3NDb250YWluZXJXaWR0aFBlcmNlbnQ7CisgICAgdGhp
cy5lZGl0b3JWaWV3LnNob3codGhpcy5zcGxpdFZpZXcubWFpbkVsZW1lbnQpOworCisgICAgdGhp
cy5fbmF2aWdhdG9yID0gbmV3IFdlYkluc3BlY3Rvci5TY3JpcHRzTmF2aWdhdG9yKCk7CisgICAg
dGhpcy5fbmF2aWdhdG9yVmlldyA9IHRoaXMuX25hdmlnYXRvci52aWV3OworICAgIHRoaXMuX25h
dmlnYXRvci5zaG93KHRoaXMuZWRpdG9yVmlldy5zaWRlYmFyRWxlbWVudCk7CisKKyAgICB0aGlz
Ll9lZGl0b3JDb250YWluZXIgPSBuZXcgV2ViSW5zcGVjdG9yLlRhYmJlZEVkaXRvckNvbnRhaW5l
cih0aGlzKTsKKyAgICB0aGlzLl9lZGl0b3JDb250YWluZXIuc2hvdyh0aGlzLmVkaXRvclZpZXcu
bWFpbkVsZW1lbnQpOworICAgIFdlYkluc3BlY3Rvci5PcGVuUmVzb3VyY2VEaWFsb2cuaW5zdGFs
bCh0aGlzLCB0aGlzLl9wcmVzZW50YXRpb25Nb2RlbCwgdGhpcy5lZGl0b3JWaWV3Lm1haW5FbGVt
ZW50KTsKKworICAgIHRoaXMuX2NyZWF0ZU5hdmlnYXRvckNvbnRyb2xzKCk7CisgICAgV2ViSW5z
cGVjdG9yLnNldHRpbmdzLm5hdmlnYXRvckhpZGRlbiA9IFdlYkluc3BlY3Rvci5zZXR0aW5ncy5j
cmVhdGVTZXR0aW5nKCJuYXZpZ2F0b3JIaWRkZW4iLCB0cnVlKTsKKyAgICBpZiAoV2ViSW5zcGVj
dG9yLnNldHRpbmdzLm5hdmlnYXRvckhpZGRlbi5nZXQoKSkKKyAgICAgICAgdGhpcy5fdG9nZ2xl
TmF2aWdhdG9yKCk7CisKKyAgICB0aGlzLl9uYXZpZ2F0b3IuYWRkRXZlbnRMaXN0ZW5lcihXZWJJ
bnNwZWN0b3IuU2NyaXB0c05hdmlnYXRvci5FdmVudHMuU2NyaXB0U2VsZWN0ZWQsIHRoaXMuX3Nj
cmlwdFNlbGVjdGVkLCB0aGlzKTsKKyAgICB0aGlzLl9lZGl0b3JDb250YWluZXIuYWRkRXZlbnRM
aXN0ZW5lcihXZWJJbnNwZWN0b3IuVGFiYmVkRWRpdG9yQ29udGFpbmVyLkV2ZW50cy5FZGl0b3JT
ZWxlY3RlZCwgdGhpcy5fZWRpdG9yU2VsZWN0ZWQsIHRoaXMpOworICAgIHRoaXMuX2VkaXRvckNv
bnRhaW5lci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5UYWJiZWRFZGl0b3JDb250YWlu
ZXIuRXZlbnRzLkVkaXRvckNsb3NlZCwgdGhpcy5fZWRpdG9yQ2xvc2VkLCB0aGlzKTsKIAogICAg
IHRoaXMuc3BsaXRWaWV3Lm1haW5FbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuZGVidWdTaWRlYmFy
UmVzaXplV2lkZ2V0RWxlbWVudCk7CiAKQEAgLTIxMSw3ICsyMDAsNyBAQCBXZWJJbnNwZWN0b3Iu
U2NyaXB0c1BhbmVsLnByb3RvdHlwZSA9IHsKIAogICAgIGdldCBkZWZhdWx0Rm9jdXNlZEVsZW1l
bnQoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX2ZpbGVTZWxlY3Rvci5kZWZhdWx0Rm9j
dXNlZEVsZW1lbnQ7CisgICAgICAgIHJldHVybiB0aGlzLl9uYXZpZ2F0b3IuZGVmYXVsdEZvY3Vz
ZWRFbGVtZW50OwogICAgIH0sCiAKICAgICBnZXQgcGF1c2VkKCkKQEAgLTI3OSw3ICsyNjgsNyBA
QCBXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgKi8KICAgICBf
YWRkVUlTb3VyY2VDb2RlOiBmdW5jdGlvbih1aVNvdXJjZUNvZGUpCiAgICAgewotICAgICAgICB0
aGlzLl9maWxlU2VsZWN0b3IuYWRkVUlTb3VyY2VDb2RlKHVpU291cmNlQ29kZSk7CisgICAgICAg
IHRoaXMuX25hdmlnYXRvci5hZGRVSVNvdXJjZUNvZGUodWlTb3VyY2VDb2RlKTsKICAgICAgICAg
dGhpcy5fZWRpdG9yQ29udGFpbmVyLnVpU291cmNlQ29kZUFkZGVkKHVpU291cmNlQ29kZSk7CiAg
ICAgfSwKIApAQCAtMzE0LDcgKzMwMyw3IEBAIFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwucHJv
dG90eXBlID0gewogICAgICAqLwogICAgIHNldFNjcmlwdFNvdXJjZUlzRGlydHk6IGZ1bmN0aW9u
KHVpU291cmNlQ29kZSwgaXNEaXJ0eSkKICAgICB7Ci0gICAgICAgIHRoaXMuX2ZpbGVTZWxlY3Rv
ci5zZXRTY3JpcHRTb3VyY2VJc0RpcnR5KHVpU291cmNlQ29kZSwgaXNEaXJ0eSk7CisgICAgICAg
IHRoaXMuX25hdmlnYXRvci5zZXRTY3JpcHRTb3VyY2VJc0RpcnR5KHVpU291cmNlQ29kZSwgaXNE
aXJ0eSk7CiAgICAgICAgIHRoaXMuX2VkaXRvckNvbnRhaW5lci5zZXRGaWxlSXNEaXJ0eSh1aVNv
dXJjZUNvZGUsIGlzRGlydHkpOwogICAgIH0sCiAKQEAgLTQxOCw3ICs0MDcsNyBAQCBXZWJJbnNw
ZWN0b3IuU2NyaXB0c1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fZGVidWdnZXJS
ZXN1bWVkKCk7CiAKICAgICAgICAgZGVsZXRlIHRoaXMuX2N1cnJlbnRVSVNvdXJjZUNvZGU7Ci0g
ICAgICAgIHRoaXMuX2ZpbGVTZWxlY3Rvci5yZXNldCgpOworICAgICAgICB0aGlzLl9uYXZpZ2F0
b3IucmVzZXQoKTsKICAgICAgICAgdGhpcy5fZWRpdG9yQ29udGFpbmVyLnJlc2V0KCk7CiAgICAg
ICAgIHRoaXMuX3VwZGF0ZVNjcmlwdFZpZXdTdGF0dXNCYXJJdGVtcygpOwogCkBAIC00ODYsNyAr
NDc1LDcgQEAgV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICov
CiAgICAgX3Nob3dGaWxlOiBmdW5jdGlvbih1aVNvdXJjZUNvZGUpCiAgICAgewotICAgICAgICBp
ZiAoIXRoaXMuX2ZpbGVTZWxlY3Rvci5pc1NjcmlwdFNvdXJjZUFkZGVkKHVpU291cmNlQ29kZSkp
CisgICAgICAgIGlmICghdGhpcy5fbmF2aWdhdG9yLmlzU2NyaXB0U291cmNlQWRkZWQodWlTb3Vy
Y2VDb2RlKSkKICAgICAgICAgICAgIHJldHVybiBudWxsOwogCiAgICAgICAgIHZhciBzb3VyY2VG
cmFtZSA9IHRoaXMuX2dldE9yQ3JlYXRlU291cmNlRnJhbWUodWlTb3VyY2VDb2RlKTsKQEAgLTQ5
NCw3ICs0ODMsNyBAQCBXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsLnByb3RvdHlwZSA9IHsKICAg
ICAgICAgICAgIHJldHVybiBzb3VyY2VGcmFtZTsKICAgICAgICAgdGhpcy5fY3VycmVudFVJU291
cmNlQ29kZSA9IHVpU291cmNlQ29kZTsKIAotICAgICAgICB0aGlzLl9maWxlU2VsZWN0b3IucmV2
ZWFsVUlTb3VyY2VDb2RlKHVpU291cmNlQ29kZSk7CisgICAgICAgIHRoaXMuX25hdmlnYXRvci5y
ZXZlYWxVSVNvdXJjZUNvZGUodWlTb3VyY2VDb2RlKTsKICAgICAgICAgdGhpcy5fZWRpdG9yQ29u
dGFpbmVyLnNob3dGaWxlKHVpU291cmNlQ29kZSk7CiAgICAgICAgIHRoaXMuX3VwZGF0ZVNjcmlw
dFZpZXdTdGF0dXNCYXJJdGVtcygpOwogCkBAIC01NjgsNyArNTU3LDcgQEAgV2ViSW5zcGVjdG9y
LlNjcmlwdHNQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHZhciBvbGRVSVNvdXJjZUNvZGVM
aXN0ID0gLyoqIEB0eXBlIHtBcnJheS48V2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZT59ICovIGV2
ZW50LmRhdGEub2xkVUlTb3VyY2VDb2RlTGlzdDsKICAgICAgICAgdmFyIHVpU291cmNlQ29kZUxp
c3QgPSAvKiogQHR5cGUge0FycmF5LjxXZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2RlPn0gKi8gZXZl
bnQuZGF0YS51aVNvdXJjZUNvZGVMaXN0OwogCi0gICAgICAgIHRoaXMuX2ZpbGVTZWxlY3Rvci5y
ZXBsYWNlVUlTb3VyY2VDb2RlcyhvbGRVSVNvdXJjZUNvZGVMaXN0LCB1aVNvdXJjZUNvZGVMaXN0
KTsKKyAgICAgICAgdGhpcy5fbmF2aWdhdG9yLnJlcGxhY2VVSVNvdXJjZUNvZGVzKG9sZFVJU291
cmNlQ29kZUxpc3QsIHVpU291cmNlQ29kZUxpc3QpOwogICAgICAgICB0aGlzLl9lZGl0b3JDb250
YWluZXIucmVwbGFjZUZpbGVzKG9sZFVJU291cmNlQ29kZUxpc3QsIHVpU291cmNlQ29kZUxpc3Qp
OwogICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG9sZFVJU291cmNlQ29kZUxpc3QubGVuZ3Ro
OyArK2kpCiAgICAgICAgICAgICB0aGlzLl9yZW1vdmVTb3VyY2VGcmFtZShvbGRVSVNvdXJjZUNv
ZGVMaXN0W2ldKTsKQEAgLTYzMiwxMCArNjIxLDcgQEAgV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5l
bC5wcm90b3R5cGUgPSB7CiAgICAgICAgIGlmICh0aGlzLl9jdXJyZW50VUlTb3VyY2VDb2RlID09
PSB1aVNvdXJjZUNvZGUpCiAgICAgICAgICAgICBkZWxldGUgdGhpcy5fY3VycmVudFVJU291cmNl
Q29kZTsKIAotICAgICAgICAvLyBXZSBkb24ndCBuZWVkIHRvIHVwZGF0ZSBmaWxlIHNlbGVjdG9y
IGhlcmUgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIHVzZVNjcmlwdHNOYXZpZ2F0b3IgaXMgc2V0IG9y
IG5vdDoKLSAgICAgICAgLy8gU2luZ2xlRmlsZUVkaXRvckNvbnRhaW5lciBuZXZlciBkaXNwYXRj
aGVzIEVkaXRvckNsb3NlZCwgc28gbm8gbmVlZCB0byB1cGRhdGUgQ29tYm9Cb3hGaWxlU2VsZWN0
b3I7CiAgICAgICAgIC8vIFNjcmlwdHNOYXZpZ2F0b3IgZG9lcyBub3QgbmVlZCB0byB1cGRhdGUg
b24gRWRpdG9yQ2xvc2VkLgotCiAgICAgICAgIHRoaXMuX3VwZGF0ZVNjcmlwdFZpZXdTdGF0dXNC
YXJJdGVtcygpOwogICAgIH0sCiAKQEAgLTY0NiwxOCArNjMyLDEyIEBAIFdlYkluc3BlY3Rvci5T
Y3JpcHRzUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9oaWRlTmF2aWdhdG9yT3Zl
cmxheSgpOwogICAgIH0sCiAKLSAgICBfZmlsZVNlbGVjdGVkOiBmdW5jdGlvbihldmVudCkKKyAg
ICBfc2NyaXB0U2VsZWN0ZWQ6IGZ1bmN0aW9uKGV2ZW50KQogICAgIHsKLSAgICAgICAgdmFyIHVp
U291cmNlQ29kZSA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZX0gKi8gZXZl
bnQuZGF0YTsKLSAgICAgICAgdGhpcy5fc2hvd0ZpbGUodWlTb3VyY2VDb2RlKTsKKyAgICAgICAg
dmFyIHVpU291cmNlQ29kZSA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZX0g
Ki8gZXZlbnQuZGF0YS51aVNvdXJjZUNvZGU7CisgICAgICAgIHZhciBzb3VyY2VGcmFtZSA9IHRo
aXMuX3Nob3dGaWxlKHVpU291cmNlQ29kZSk7CiAgICAgICAgIHRoaXMuX2hpZGVOYXZpZ2F0b3JP
dmVybGF5KCk7Ci0gICAgfSwKLQotICAgIF9maWxlU2VsZWN0b3JSZWxlYXNlZEZvY3VzOiBmdW5j
dGlvbihldmVudCkKLSAgICB7Ci0gICAgICAgIHZhciB1aVNvdXJjZUNvZGUgPSAvKiogQHR5cGUg
e1dlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGV9ICovIGV2ZW50LmRhdGE7Ci0gICAgICAgIHZhciBz
b3VyY2VGcmFtZSA9IHRoaXMuX3NvdXJjZUZyYW1lc0J5VUlTb3VyY2VDb2RlLmdldCh1aVNvdXJj
ZUNvZGUpOwotICAgICAgICBpZiAoc291cmNlRnJhbWUpCisgICAgICAgIGlmIChzb3VyY2VGcmFt
ZSAmJiBldmVudC5kYXRhLmZvY3VzU291cmNlKQogICAgICAgICAgICAgc291cmNlRnJhbWUuZm9j
dXMoKTsKICAgICB9LAogCkBAIC05NzAsNyArOTUwLDcgQEAgV2ViSW5zcGVjdG9yLlNjcmlwdHNQ
YW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX25hdmlnYXRvckhpZGRlbiA9IHRydWU7
CiAgICAgICAgIHRoaXMuX25hdmlnYXRvclNob3dIaWRlQnV0dG9uLnJlbW92ZVN0eWxlQ2xhc3Mo
InRvZ2dsZWQtb24iKTsKICAgICAgICAgdGhpcy5fbmF2aWdhdG9yU2hvd0hpZGVCdXR0b24udGl0
bGUgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlNob3cgc2NyaXB0cyBuYXZpZ2F0b3IiKTsKLSAg
ICAgICAgdGhpcy5fdGFiYmVkRWRpdG9yQ29udGFpbmVyLmVsZW1lbnQuYWRkU3R5bGVDbGFzcygi
bmF2aWdhdG9yLWhpZGRlbiIpOworICAgICAgICB0aGlzLl9lZGl0b3JDb250YWluZXIuZWxlbWVu
dC5hZGRTdHlsZUNsYXNzKCJuYXZpZ2F0b3ItaGlkZGVuIik7CiAgICAgICAgIHRoaXMuX25hdmln
YXRvclNpZGViYXJSZXNpemVXaWRnZXRFbGVtZW50LmFkZFN0eWxlQ2xhc3MoImhpZGRlbiIpOwog
CiAgICAgICAgIHRoaXMuX25hdmlnYXRvclBpbkJ1dHRvbi5yZW1vdmVTdHlsZUNsYXNzKCJoaWRk
ZW4iKTsKQEAgLTk4OSw3ICs5NjksNyBAQCBXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsLnByb3Rv
dHlwZSA9IHsKICAgICAgICAgdGhpcy5fbmF2aWdhdG9yU2hvd0hpZGVCdXR0b24uYWRkU3R5bGVD
bGFzcygidG9nZ2xlZC1vbiIpOwogICAgICAgICB0aGlzLl9uYXZpZ2F0b3JTaG93SGlkZUJ1dHRv
bi50aXRsZSA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiSGlkZSBzY3JpcHRzIG5hdmlnYXRvciIp
OwogCi0gICAgICAgIHRoaXMuX3RhYmJlZEVkaXRvckNvbnRhaW5lci5lbGVtZW50LnJlbW92ZVN0
eWxlQ2xhc3MoIm5hdmlnYXRvci1oaWRkZW4iKTsKKyAgICAgICAgdGhpcy5fZWRpdG9yQ29udGFp
bmVyLmVsZW1lbnQucmVtb3ZlU3R5bGVDbGFzcygibmF2aWdhdG9yLWhpZGRlbiIpOwogICAgICAg
ICB0aGlzLl9uYXZpZ2F0b3JTaWRlYmFyUmVzaXplV2lkZ2V0RWxlbWVudC5yZW1vdmVTdHlsZUNs
YXNzKCJoaWRkZW4iKTsKIAogICAgICAgICB0aGlzLmVkaXRvclZpZXcuc2hvd1NpZGViYXJFbGVt
ZW50KCk7CkBAIC0xMTQ5LDU4MCArMTEyOSwzIEBAIFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwu
cHJvdG90eXBlID0gewogfQogCiBXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsLnByb3RvdHlwZS5f
X3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuUGFuZWwucHJvdG90eXBlOwotCi0vKioKLSAqIEBpbnRl
cmZhY2UKLSAqLwotV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5GaWxlU2VsZWN0b3IgPSBmdW5j
dGlvbigpIHsgfQotCi1XZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsLkZpbGVTZWxlY3Rvci5FdmVu
dHMgPSB7Ci0gICAgRmlsZVNlbGVjdGVkOiAiRmlsZVNlbGVjdGVkIiwKLSAgICBSZWxlYXNlZEZv
Y3VzQWZ0ZXJTZWxlY3Rpb246ICJSZWxlYXNlZEZvY3VzQWZ0ZXJTZWxlY3Rpb24iCi19Ci0KLVdl
Ykluc3BlY3Rvci5TY3JpcHRzUGFuZWwuRmlsZVNlbGVjdG9yLnByb3RvdHlwZSA9IHsKLSAgICAv
KioKLSAgICAgKiBAdHlwZSB7RWxlbWVudH0KLSAgICAgKi8KLSAgICBnZXQgZGVmYXVsdEZvY3Vz
ZWRFbGVtZW50KCkgeyB9LAotCi0gICAgLyoqCi0gICAgICogQHBhcmFtIHtFbGVtZW50fSBlbGVt
ZW50Ci0gICAgICovCi0gICAgc2hvdzogZnVuY3Rpb24oZWxlbWVudCkgeyB9LAotCi0gICAgLyoq
Ci0gICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2RlfSB1aVNvdXJjZUNvZGUK
LSAgICAgKi8KLSAgICBhZGRVSVNvdXJjZUNvZGU6IGZ1bmN0aW9uKHVpU291cmNlQ29kZSkgeyB9
LAotCi0gICAgLyoqCi0gICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2RlfSB1
aVNvdXJjZUNvZGUKLSAgICAgKiBAcmV0dXJuIHtib29sZWFufQotICAgICAqLwotICAgIGlzU2Ny
aXB0U291cmNlQWRkZWQ6IGZ1bmN0aW9uKHVpU291cmNlQ29kZSkgeyB9LAotCi0gICAgLyoqCi0g
ICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2RlfSB1aVNvdXJjZUNvZGUKLSAg
ICAgKi8KLSAgICByZXZlYWxVSVNvdXJjZUNvZGU6IGZ1bmN0aW9uKHVpU291cmNlQ29kZSkgeyB9
LAotCi0gICAgLyoqCi0gICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2RlfSB1
aVNvdXJjZUNvZGUKLSAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IGlzRGlydHkKLSAgICAgKi8KLSAg
ICBzZXRTY3JpcHRTb3VyY2VJc0RpcnR5OiBmdW5jdGlvbih1aVNvdXJjZUNvZGUsIGlzRGlydHkp
IHsgfSwKLQotICAgIC8qKgotICAgICAqIEBwYXJhbSB7QXJyYXkuPFdlYkluc3BlY3Rvci5VSVNv
dXJjZUNvZGU+fSBvbGRVSVNvdXJjZUNvZGVMaXN0Ci0gICAgICogQHBhcmFtIHtBcnJheS48V2Vi
SW5zcGVjdG9yLlVJU291cmNlQ29kZT59IHVpU291cmNlQ29kZUxpc3QKLSAgICAgKi8KLSAgICBy
ZXBsYWNlVUlTb3VyY2VDb2RlczogZnVuY3Rpb24ob2xkVUlTb3VyY2VDb2RlTGlzdCwgdWlTb3Vy
Y2VDb2RlTGlzdCkgeyB9LAotCi0gICAgcmVzZXQ6IGZ1bmN0aW9uKCkgeyB9Ci19Ci0KLS8qKgot
ICogQGludGVyZmFjZQotICovCi1XZWJJbnNwZWN0b3IuRWRpdG9yQ29udGFpbmVyID0gZnVuY3Rp
b24oKSB7IH0KLQotV2ViSW5zcGVjdG9yLkVkaXRvckNvbnRhaW5lci5FdmVudHMgPSB7Ci0gICAg
RWRpdG9yU2VsZWN0ZWQ6ICJFZGl0b3JTZWxlY3RlZCIsCi0gICAgRWRpdG9yQ2xvc2VkOiAiRWRp
dG9yQ2xvc2VkIgotfQotCi1XZWJJbnNwZWN0b3IuRWRpdG9yQ29udGFpbmVyLnByb3RvdHlwZSA9
IHsKLSAgICAvKioKLSAgICAgKiBAdHlwZSB7V2ViSW5zcGVjdG9yLlNvdXJjZUZyYW1lfQotICAg
ICAqLwotICAgIGdldCB2aXNpYmxlVmlldygpIHsgfSwKLQotICAgIC8qKgotICAgICAqIEBwYXJh
bSB7RWxlbWVudH0gZWxlbWVudAotICAgICAqLwotICAgIHNob3c6IGZ1bmN0aW9uKGVsZW1lbnQp
IHsgfSwKLQotICAgIC8qKgotICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlVJU291cmNlQ29k
ZX0gdWlTb3VyY2VDb2RlCi0gICAgICovCi0gICAgc2hvd0ZpbGU6IGZ1bmN0aW9uKHVpU291cmNl
Q29kZSkgeyB9LAotCi0gICAgLyoqCi0gICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuVUlTb3Vy
Y2VDb2RlfSB1aVNvdXJjZUNvZGUKLSAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IGlzRGlydHkKLSAg
ICAgKi8KLSAgICBzZXRGaWxlSXNEaXJ0eTogZnVuY3Rpb24odWlTb3VyY2VDb2RlLCBpc0RpcnR5
KSB7IH0sCi0KLSAgICAvKioKLSAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5VSVNvdXJjZUNv
ZGV9IHVpU291cmNlQ29kZQotICAgICAqLwotICAgIHVpU291cmNlQ29kZUFkZGVkOiBmdW5jdGlv
bih1aVNvdXJjZUNvZGUpIHsgfSwKLQotICAgIC8qKgotICAgICAqIEBwYXJhbSB7QXJyYXkuPFdl
Ykluc3BlY3Rvci5VSVNvdXJjZUNvZGU+fSBvbGRVSVNvdXJjZUNvZGVMaXN0Ci0gICAgICogQHBh
cmFtIHtBcnJheS48V2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZT59IHVpU291cmNlQ29kZUxpc3QK
LSAgICAgKi8KLSAgICByZXBsYWNlRmlsZXM6IGZ1bmN0aW9uKG9sZFVJU291cmNlQ29kZUxpc3Qs
IHVpU291cmNlQ29kZUxpc3QpIHsgfSwKLQotICAgIHJlc2V0OiBmdW5jdGlvbigpIHsgfQotfQot
Ci0vKioKLSAqIEBpbnRlcmZhY2UKLSAqLwotV2ViSW5zcGVjdG9yLkVkaXRvckNvbnRhaW5lckRl
bGVnYXRlID0gZnVuY3Rpb24oKSB7IH0KLQotV2ViSW5zcGVjdG9yLkVkaXRvckNvbnRhaW5lckRl
bGVnYXRlLnByb3RvdHlwZSA9IHsKLSAgICAvKioKLSAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rv
ci5VSVNvdXJjZUNvZGV9IHVpU291cmNlQ29kZQotICAgICAqIEByZXR1cm4ge1dlYkluc3BlY3Rv
ci5Tb3VyY2VGcmFtZX0KLSAgICAgKi8KLSAgICB2aWV3Rm9yRmlsZTogZnVuY3Rpb24odWlTb3Vy
Y2VDb2RlKSB7IH0KLX0KLQotLyoqCi0gKiBAaW1wbGVtZW50cyB7V2ViSW5zcGVjdG9yLlNjcmlw
dHNQYW5lbC5GaWxlU2VsZWN0b3J9Ci0gKiBAZXh0ZW5kcyB7V2ViSW5zcGVjdG9yLk9iamVjdH0K
LSAqIEBjb25zdHJ1Y3RvcgotICovCi1XZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsLkNvbWJvQm94
RmlsZVNlbGVjdG9yID0gZnVuY3Rpb24oKQotewotICAgIFdlYkluc3BlY3Rvci5PYmplY3QuY2Fs
bCh0aGlzKTsKLSAgICB0aGlzLmVkaXRvclRvb2xiYXIgPSB0aGlzLl9jcmVhdGVFZGl0b3JUb29s
YmFyKCk7Ci0KLSAgICBXZWJJbnNwZWN0b3Iuc2V0dGluZ3Muc2hvd1NjcmlwdEZvbGRlcnMuYWRk
Q2hhbmdlTGlzdGVuZXIodGhpcy5fc2hvd1NjcmlwdEZvbGRlcnNTZXR0aW5nQ2hhbmdlZC5iaW5k
KHRoaXMpKTsKLQotICAgIHRoaXMuX2JhY2tGb3J3YXJkTGlzdCA9IFtdOwotfQotCi1XZWJJbnNw
ZWN0b3IuU2NyaXB0c1BhbmVsLkNvbWJvQm94RmlsZVNlbGVjdG9yLnByb3RvdHlwZSA9IHsKLSAg
ICBnZXQgZGVmYXVsdEZvY3VzZWRFbGVtZW50KCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlz
Ll9maWxlc1NlbGVjdEVsZW1lbnQ7Ci0gICAgfSwKLQotICAgIC8qKgotICAgICAqIEBwYXJhbSB7
RWxlbWVudH0gZWxlbWVudAotICAgICAqLwotICAgIHNob3c6IGZ1bmN0aW9uKGVsZW1lbnQpCi0g
ICAgewotICAgICAgICBlbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuZWRpdG9yVG9vbGJhcik7Ci0g
ICAgfSwKLQotICAgIC8qKgotICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlVJU291cmNlQ29k
ZX0gdWlTb3VyY2VDb2RlCi0gICAgICovCi0gICAgYWRkVUlTb3VyY2VDb2RlOiBmdW5jdGlvbih1
aVNvdXJjZUNvZGUpCi0gICAgewotICAgICAgICBpZiAodWlTb3VyY2VDb2RlLl9vcHRpb24pCi0g
ICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgdGhpcy5fYWRkT3B0aW9uVG9GaWxlc1NlbGVj
dCh1aVNvdXJjZUNvZGUpOwotICAgIH0sCi0KLSAgICAvKioKLSAgICAgKiBAcGFyYW0ge1dlYklu
c3BlY3Rvci5VSVNvdXJjZUNvZGV9IHVpU291cmNlQ29kZQotICAgICAqIEByZXR1cm4ge2Jvb2xl
YW59Ci0gICAgICovCi0gICAgaXNTY3JpcHRTb3VyY2VBZGRlZDogZnVuY3Rpb24odWlTb3VyY2VD
b2RlKQotICAgIHsKLSAgICAgICAgcmV0dXJuICEhdWlTb3VyY2VDb2RlLl9vcHRpb247Ci0gICAg
fSwKLQotICAgIC8qKgotICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZX0g
dWlTb3VyY2VDb2RlCi0gICAgICovCi0gICAgcmV2ZWFsVUlTb3VyY2VDb2RlOiBmdW5jdGlvbih1
aVNvdXJjZUNvZGUpCi0gICAgewotICAgICAgICBpZiAodGhpcy5fZmlsZXNTZWxlY3RFbGVtZW50
LnNlbGVjdGVkSW5kZXggPT09IHVpU291cmNlQ29kZS5fb3B0aW9uLmluZGV4KQotICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICB0aGlzLl9pbm5lclJldmVhbFVJU291cmNlQ29kZSh1aVNvdXJj
ZUNvZGUsIHRydWUpOwotICAgIH0sCi0KLSAgICAvKioKLSAgICAgKiBAcGFyYW0ge1dlYkluc3Bl
Y3Rvci5VSVNvdXJjZUNvZGV9IHVpU291cmNlQ29kZQotICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0g
YWRkVG9IaXN0b3J5Ci0gICAgICovCi0gICAgX2lubmVyUmV2ZWFsVUlTb3VyY2VDb2RlOiBmdW5j
dGlvbih1aVNvdXJjZUNvZGUsIGFkZFRvSGlzdG9yeSkKLSAgICB7Ci0gICAgICAgIGlmICghdWlT
b3VyY2VDb2RlLl9vcHRpb24pCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgaWYgKGFk
ZFRvSGlzdG9yeSkKLSAgICAgICAgICAgIHRoaXMuX2FkZFRvSGlzdG9yeSh1aVNvdXJjZUNvZGUp
OwotCi0gICAgICAgIHRoaXMuX3VwZGF0ZUJhY2tBbmRGb3J3YXJkQnV0dG9ucygpOwotICAgICAg
ICB0aGlzLl9maWxlc1NlbGVjdEVsZW1lbnQuc2VsZWN0ZWRJbmRleCA9IHVpU291cmNlQ29kZS5f
b3B0aW9uLmluZGV4OwotICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJ
bnNwZWN0b3IuU2NyaXB0c1BhbmVsLkZpbGVTZWxlY3Rvci5FdmVudHMuRmlsZVNlbGVjdGVkLCB1
aVNvdXJjZUNvZGUpOwotICAgIH0sCi0KLSAgICAvKioKLSAgICAgKiBAcGFyYW0ge1dlYkluc3Bl
Y3Rvci5VSVNvdXJjZUNvZGV9IHVpU291cmNlQ29kZQotICAgICAqLwotICAgIF9hZGRUb0hpc3Rv
cnk6IGZ1bmN0aW9uKHVpU291cmNlQ29kZSkKLSAgICB7Ci0gICAgICAgIHZhciBvbGRJbmRleCA9
IHRoaXMuX2N1cnJlbnRCYWNrRm9yd2FyZEluZGV4OwotICAgICAgICBpZiAob2xkSW5kZXggPj0g
MCkKLSAgICAgICAgICAgIHRoaXMuX2JhY2tGb3J3YXJkTGlzdC5zcGxpY2Uob2xkSW5kZXggKyAx
LCB0aGlzLl9iYWNrRm9yd2FyZExpc3QubGVuZ3RoIC0gb2xkSW5kZXgpOwotCi0gICAgICAgIC8v
IENoZWNrIGZvciBhIHByZXZpb3VzIGVudHJ5IG9mIHRoZSBzYW1lIG9iamVjdCBpbiBfYmFja0Zv
cndhcmRMaXN0LiBJZiBvbmUgaXMgZm91bmQsIHJlbW92ZSBpdC4KLSAgICAgICAgdmFyIHByZXZp
b3VzRW50cnlJbmRleCA9IHRoaXMuX2JhY2tGb3J3YXJkTGlzdC5pbmRleE9mKHVpU291cmNlQ29k
ZSk7Ci0gICAgICAgIGlmIChwcmV2aW91c0VudHJ5SW5kZXggIT09IC0xKQotICAgICAgICAgICAg
dGhpcy5fYmFja0ZvcndhcmRMaXN0LnNwbGljZShwcmV2aW91c0VudHJ5SW5kZXgsIDEpOwotCi0g
ICAgICAgIHRoaXMuX2JhY2tGb3J3YXJkTGlzdC5wdXNoKHVpU291cmNlQ29kZSk7Ci0gICAgICAg
IHRoaXMuX2N1cnJlbnRCYWNrRm9yd2FyZEluZGV4ID0gdGhpcy5fYmFja0ZvcndhcmRMaXN0Lmxl
bmd0aCAtIDE7Ci0gICAgfSwKLQotICAgIC8qKgotICAgICAqIEBwYXJhbSB7QXJyYXkuPFdlYklu
c3BlY3Rvci5VSVNvdXJjZUNvZGU+fSBvbGRVSVNvdXJjZUNvZGVMaXN0Ci0gICAgICogQHBhcmFt
IHtBcnJheS48V2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZT59IHVpU291cmNlQ29kZUxpc3QKLSAg
ICAgKi8KLSAgICByZXBsYWNlVUlTb3VyY2VDb2RlczogZnVuY3Rpb24ob2xkVUlTb3VyY2VDb2Rl
TGlzdCwgdWlTb3VyY2VDb2RlTGlzdCkKLSAgICB7Ci0gICAgICAgIHZhciBzZWxlY3RlZCA9IGZh
bHNlOwotICAgICAgICB2YXIgYWRkZWQgPSBmYWxzZTsKLSAgICAgICAgdmFyIHNlbGVjdGVkT3B0
aW9uID0gdGhpcy5fZmlsZXNTZWxlY3RFbGVtZW50W3RoaXMuX2ZpbGVzU2VsZWN0RWxlbWVudC5z
ZWxlY3RlZEluZGV4XTsKLSAgICAgICAgdmFyIHNlbGVjdGVkVUlTb3VyY2VDb2RlID0gc2VsZWN0
ZWRPcHRpb24gPyBzZWxlY3RlZE9wdGlvbi5fdWlTb3VyY2VDb2RlIDogbnVsbDsKLSAgICAgICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCBvbGRVSVNvdXJjZUNvZGVMaXN0Lmxlbmd0aDsgKytpKSB7Ci0g
ICAgICAgICAgICB2YXIgdWlTb3VyY2VDb2RlID0gb2xkVUlTb3VyY2VDb2RlTGlzdFtpXTsKLSAg
ICAgICAgICAgIHZhciBvcHRpb24gPSB1aVNvdXJjZUNvZGUuX29wdGlvbjsKLSAgICAgICAgICAg
IGlmICghb3B0aW9uKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgYWRk
ZWQgPSB0cnVlOwotCi0gICAgICAgICAgICAvLyBGSVhNRTogZmluZCBvdXQgd2h5IHdlIGFyZSBn
ZXR0aW5nIGhlcmUgd2l0aCBvcHRpb24gZGV0YWNoZWQuCi0gICAgICAgICAgICBpZiAodGhpcy5f
ZmlsZXNTZWxlY3RFbGVtZW50ID09PSBvcHRpb24ucGFyZW50RWxlbWVudCkKLSAgICAgICAgICAg
ICAgICB0aGlzLl9maWxlc1NlbGVjdEVsZW1lbnQucmVtb3ZlQ2hpbGQob3B0aW9uKTsKLQotICAg
ICAgICAgICAgaWYgKHNlbGVjdGVkVUlTb3VyY2VDb2RlID09PSBvbGRVSVNvdXJjZUNvZGVMaXN0
W2ldKQotICAgICAgICAgICAgICAgIHNlbGVjdGVkID0gdHJ1ZTsKLSAgICAgICAgfQotCi0gICAg
ICAgIGlmICghYWRkZWQpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgZm9yICh2YXIg
aSA9IDA7IGkgPCB1aVNvdXJjZUNvZGVMaXN0Lmxlbmd0aDsgKytpKQotICAgICAgICAgICAgdGhp
cy5fYWRkT3B0aW9uVG9GaWxlc1NlbGVjdCh1aVNvdXJjZUNvZGVMaXN0W2ldKTsKLQotICAgICAg
ICBpZiAoc2VsZWN0ZWQpCi0gICAgICAgICAgICB0aGlzLl9maWxlc1NlbGVjdEVsZW1lbnQuc2Vs
ZWN0ZWRJbmRleCA9IHVpU291cmNlQ29kZUxpc3RbMF0uX29wdGlvbi5pbmRleDsKLSAgICB9LAot
Ci0gICAgX3Nob3dTY3JpcHRGb2xkZXJzU2V0dGluZ0NoYW5nZWQ6IGZ1bmN0aW9uKCkKLSAgICB7
Ci0gICAgICAgIHZhciBzZWxlY3RlZE9wdGlvbiA9IHRoaXMuX2ZpbGVzU2VsZWN0RWxlbWVudFt0
aGlzLl9maWxlc1NlbGVjdEVsZW1lbnQuc2VsZWN0ZWRJbmRleF07Ci0gICAgICAgIHZhciB1aVNv
dXJjZUNvZGUgPSBzZWxlY3RlZE9wdGlvbiA/IHNlbGVjdGVkT3B0aW9uLl91aVNvdXJjZUNvZGUg
OiBudWxsOwotCi0gICAgICAgIHZhciBvcHRpb25zID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNh
bGwodGhpcy5fZmlsZXNTZWxlY3RFbGVtZW50KTsKLSAgICAgICAgdGhpcy5fcmVzZXRGaWxlc1Nl
bGVjdCgpOwotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG9wdGlvbnMubGVuZ3RoOyArK2kp
IHsKLSAgICAgICAgICAgIGlmIChvcHRpb25zW2ldLl91aVNvdXJjZUNvZGUpCi0gICAgICAgICAg
ICAgICAgdGhpcy5fYWRkT3B0aW9uVG9GaWxlc1NlbGVjdChvcHRpb25zW2ldLl91aVNvdXJjZUNv
ZGUpOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKHVpU291cmNlQ29kZSkgewotICAgICAgICAg
ICAgdmFyIGluZGV4ID0gdWlTb3VyY2VDb2RlLl9vcHRpb24uaW5kZXg7Ci0gICAgICAgICAgICBp
ZiAodHlwZW9mIGluZGV4ID09PSAibnVtYmVyIikKLSAgICAgICAgICAgICAgICB0aGlzLl9maWxl
c1NlbGVjdEVsZW1lbnQuc2VsZWN0ZWRJbmRleCA9IGluZGV4OwotICAgICAgICB9Ci0gICAgfSwK
LQotICAgIHJlc2V0OiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICB0aGlzLl9iYWNrRm9yd2Fy
ZExpc3QgPSBbXTsKLSAgICAgICAgdGhpcy5fY3VycmVudEJhY2tGb3J3YXJkSW5kZXggPSAtMTsK
LSAgICAgICAgdGhpcy5fdXBkYXRlQmFja0FuZEZvcndhcmRCdXR0b25zKCk7Ci0gICAgICAgIHRo
aXMuX3Jlc2V0RmlsZXNTZWxlY3QoKTsKLSAgICB9LAotCi0gICAgLyoqCi0gICAgICogQHBhcmFt
IHtXZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2RlfSB1aVNvdXJjZUNvZGUKLSAgICAgKiBAcGFyYW0g
e2Jvb2xlYW59IGlzRGlydHkKLSAgICAgKi8KLSAgICBzZXRTY3JpcHRTb3VyY2VJc0RpcnR5OiBm
dW5jdGlvbih1aVNvdXJjZUNvZGUsIGlzRGlydHkpCi0gICAgewotICAgICAgICB2YXIgb3B0aW9u
ID0gdWlTb3VyY2VDb2RlLl9vcHRpb247Ci0gICAgICAgIGlmICghb3B0aW9uKQotICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICBpZiAoaXNEaXJ0eSkKLSAgICAgICAgICAgIG9wdGlvbi50ZXh0
ID0gb3B0aW9uLnRleHQucmVwbGFjZSgvW14qXSQvLCAiJCYqIik7Ci0gICAgICAgIGVsc2UKLSAg
ICAgICAgICAgIG9wdGlvbi50ZXh0ID0gb3B0aW9uLnRleHQucmVwbGFjZSgvWypdJC8sICIiKTsK
LSAgICB9LAotCi0gICAgLyoqCi0gICAgICogQHJldHVybiB7RWxlbWVudH0KLSAgICAgKi8KLSAg
ICBfY3JlYXRlRWRpdG9yVG9vbGJhcjogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgdmFyIGVk
aXRvclRvb2xiYXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKLSAgICAgICAgZWRp
dG9yVG9vbGJhci5jbGFzc05hbWUgPSAic3RhdHVzLWJhciI7Ci0gICAgICAgIGVkaXRvclRvb2xi
YXIuaWQgPSAic2NyaXB0cy1lZGl0b3ItdG9vbGJhciI7Ci0KLSAgICAgICAgdGhpcy5iYWNrQnV0
dG9uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYnV0dG9uIik7Ci0gICAgICAgIHRoaXMuYmFj
a0J1dHRvbi5jbGFzc05hbWUgPSAic3RhdHVzLWJhci1pdGVtIjsKLSAgICAgICAgdGhpcy5iYWNr
QnV0dG9uLmlkID0gInNjcmlwdHMtYmFjayI7Ci0gICAgICAgIHRoaXMuYmFja0J1dHRvbi50aXRs
ZSA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiU2hvdyB0aGUgcHJldmlvdXMgc2NyaXB0IHJlc291
cmNlLiIpOwotICAgICAgICB0aGlzLmJhY2tCdXR0b24uZGlzYWJsZWQgPSB0cnVlOwotICAgICAg
ICB0aGlzLmJhY2tCdXR0b24uYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW1n
IikpOwotICAgICAgICB0aGlzLmJhY2tCdXR0b24uYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0
aGlzLl9nb0JhY2suYmluZCh0aGlzKSwgZmFsc2UpOwotICAgICAgICBlZGl0b3JUb29sYmFyLmFw
cGVuZENoaWxkKHRoaXMuYmFja0J1dHRvbik7Ci0KLSAgICAgICAgdGhpcy5mb3J3YXJkQnV0dG9u
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYnV0dG9uIik7Ci0gICAgICAgIHRoaXMuZm9yd2Fy
ZEJ1dHRvbi5jbGFzc05hbWUgPSAic3RhdHVzLWJhci1pdGVtIjsKLSAgICAgICAgdGhpcy5mb3J3
YXJkQnV0dG9uLmlkID0gInNjcmlwdHMtZm9yd2FyZCI7Ci0gICAgICAgIHRoaXMuZm9yd2FyZEJ1
dHRvbi50aXRsZSA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiU2hvdyB0aGUgbmV4dCBzY3JpcHQg
cmVzb3VyY2UuIik7Ci0gICAgICAgIHRoaXMuZm9yd2FyZEJ1dHRvbi5kaXNhYmxlZCA9IHRydWU7
Ci0gICAgICAgIHRoaXMuZm9yd2FyZEJ1dHRvbi5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCJpbWciKSk7Ci0gICAgICAgIHRoaXMuZm9yd2FyZEJ1dHRvbi5hZGRFdmVudExpc3Rl
bmVyKCJjbGljayIsIHRoaXMuX2dvRm9yd2FyZC5iaW5kKHRoaXMpLCBmYWxzZSk7Ci0gICAgICAg
IGVkaXRvclRvb2xiYXIuYXBwZW5kQ2hpbGQodGhpcy5mb3J3YXJkQnV0dG9uKTsKLQotICAgICAg
ICB0aGlzLl9maWxlc1NlbGVjdEVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzZWxl
Y3QiKTsKLSAgICAgICAgdGhpcy5fZmlsZXNTZWxlY3RFbGVtZW50LmNsYXNzTmFtZSA9ICJzdGF0
dXMtYmFyLWl0ZW0iOwotICAgICAgICB0aGlzLl9maWxlc1NlbGVjdEVsZW1lbnQuaWQgPSAic2Ny
aXB0cy1maWxlcyI7Ci0gICAgICAgIHRoaXMuX2ZpbGVzU2VsZWN0RWxlbWVudC5hZGRFdmVudExp
c3RlbmVyKCJjaGFuZ2UiLCB0aGlzLl9maWxlc1NlbGVjdENoYW5nZWQuYmluZCh0aGlzLCB0cnVl
KSwgZmFsc2UpOwotICAgICAgICB0aGlzLl9maWxlc1NlbGVjdEVsZW1lbnQuYWRkRXZlbnRMaXN0
ZW5lcigia2V5dXAiLCB0aGlzLl9maWxlc1NlbGVjdENoYW5nZWQuYmluZCh0aGlzLCBmYWxzZSks
IGZhbHNlKTsKLSAgICAgICAgZWRpdG9yVG9vbGJhci5hcHBlbmRDaGlsZCh0aGlzLl9maWxlc1Nl
bGVjdEVsZW1lbnQpOwotCi0gICAgICAgIHJldHVybiBlZGl0b3JUb29sYmFyOwotICAgIH0sCi0K
LSAgICAvKioKLSAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGV9IHVpU291
cmNlQ29kZQotICAgICAqLwotICAgIF9hZGRPcHRpb25Ub0ZpbGVzU2VsZWN0OiBmdW5jdGlvbih1
aVNvdXJjZUNvZGUpCi0gICAgewotICAgICAgICB2YXIgc2hvd1NjcmlwdEZvbGRlcnMgPSBXZWJJ
bnNwZWN0b3Iuc2V0dGluZ3Muc2hvd1NjcmlwdEZvbGRlcnMuZ2V0KCk7Ci0KLSAgICAgICAgdmFy
IHNlbGVjdCA9IHRoaXMuX2ZpbGVzU2VsZWN0RWxlbWVudDsKLSAgICAgICAgaWYgKCFzZWxlY3Qu
ZG9tYWluT3B0aW9ucykKLSAgICAgICAgICAgIHNlbGVjdC5kb21haW5PcHRpb25zID0ge307Ci0g
ICAgICAgIGlmICghc2VsZWN0LmZvbGRlck9wdGlvbnMpCi0gICAgICAgICAgICBzZWxlY3QuZm9s
ZGVyT3B0aW9ucyA9IHt9OwotCi0gICAgICAgIHZhciBvcHRpb24gPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCJvcHRpb24iKTsKLSAgICAgICAgdmFyIHBhcnNlZFVSTCA9IHVpU291cmNlQ29kZS51
cmwuYXNQYXJzZWRVUkwoKTsKLQotICAgICAgICBjb25zdCBpbmRlbnQgPSBXZWJJbnNwZWN0b3Iu
aXNNYWMoKSA/ICIiIDogIlx1MDBhMFx1MDBhMFx1MDBhMFx1MDBhMCI7Ci0KLSAgICAgICAgb3B0
aW9uLmRpc3BsYXlOYW1lID0gdWlTb3VyY2VDb2RlLmRpc3BsYXlOYW1lOwotCi0gICAgICAgIHZh
ciBjb250ZW50U2NyaXB0UHJlZml4ID0gdWlTb3VyY2VDb2RlLmlzQ29udGVudFNjcmlwdCA/ICIy
OiIgOiAiMDoiOwotICAgICAgICB2YXIgZm9sZGVyTmFtZSA9IHVpU291cmNlQ29kZS5mb2xkZXJO
YW1lOwotICAgICAgICB2YXIgZG9tYWluID0gdWlTb3VyY2VDb2RlLmRvbWFpbjsKLQotICAgICAg
ICBpZiAodWlTb3VyY2VDb2RlLmlzQ29udGVudFNjcmlwdCAmJiBkb21haW4pIHsKLSAgICAgICAg
ICAgIC8vIFJlbmRlciBleHRlbnNpb24gZG9tYWluIGFzIGEgcGF0aCBpbiBzdHJ1Y3R1cmVkIHZp
ZXcKLSAgICAgICAgICAgIGZvbGRlck5hbWUgPSBkb21haW4gKyAoZm9sZGVyTmFtZSA/IGZvbGRl
ck5hbWUgOiAiIik7Ci0gICAgICAgICAgICBkb21haW4gPSAiIjsKLSAgICAgICAgfQotCi0gICAg
ICAgIHZhciBmb2xkZXJOYW1lRm9yU29ydGluZyA9IGNvbnRlbnRTY3JpcHRQcmVmaXggKyAoZG9t
YWluID8gZG9tYWluICsgIlx0XHQiIDogIiIpICsgZm9sZGVyTmFtZTsKLQotICAgICAgICBpZiAo
c2hvd1NjcmlwdEZvbGRlcnMpIHsKLSAgICAgICAgICAgIG9wdGlvbi50ZXh0ID0gaW5kZW50ICsg
dWlTb3VyY2VDb2RlLmRpc3BsYXlOYW1lOwotICAgICAgICAgICAgb3B0aW9uLm5hbWVGb3JTb3J0
aW5nID0gZm9sZGVyTmFtZUZvclNvcnRpbmcgKyAiXHQvXHQiICsgdWlTb3VyY2VDb2RlLmZpbGVO
YW1lOyAvLyBVc2UgJ1x0JyB0byBtYWtlIGZpbGVzIHN0aWNrIHRvIHRoZWlyIGZvbGRlci4KLSAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIG9wdGlvbi50ZXh0ID0gdWlTb3VyY2VDb2RlLmRp
c3BsYXlOYW1lOwotICAgICAgICAgICAgLy8gQ29udGVudCBzY3JpcHQgc2hvdWxkIGNvbnRhaW4g
aXRzIGRvbWFpbiBuYW1lIGFzIGEgcHJlZml4Ci0gICAgICAgICAgICBpZiAodWlTb3VyY2VDb2Rl
LmlzQ29udGVudFNjcmlwdCAmJiBmb2xkZXJOYW1lKQotICAgICAgICAgICAgICAgIG9wdGlvbi50
ZXh0ID0gZm9sZGVyTmFtZSArICIvIiArIG9wdGlvbi50ZXh0OwotICAgICAgICAgICAgb3B0aW9u
Lm5hbWVGb3JTb3J0aW5nID0gY29udGVudFNjcmlwdFByZWZpeCArIG9wdGlvbi50ZXh0OwotICAg
ICAgICB9Ci0gICAgICAgIG9wdGlvbi50aXRsZSA9IHVpU291cmNlQ29kZS51cmw7Ci0KLSAgICAg
ICAgaWYgKHVpU291cmNlQ29kZS5pc0NvbnRlbnRTY3JpcHQpCi0gICAgICAgICAgICBvcHRpb24u
YWRkU3R5bGVDbGFzcygiZXh0ZW5zaW9uLXNjcmlwdCIpOwotCi0gICAgICAgIGZ1bmN0aW9uIGlu
c2VydE9yZGVyZWQob3B0aW9uKQotICAgICAgICB7Ci0gICAgICAgICAgICBmdW5jdGlvbiBvcHRp
b25Db21wYXJlKGEsIGIpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGEu
bmFtZUZvclNvcnRpbmcubG9jYWxlQ29tcGFyZShiLm5hbWVGb3JTb3J0aW5nKTsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIHZhciBpbnNlcnRpb25JbmRleCA9IGluc2VydGlvbkluZGV4Rm9y
T2JqZWN0SW5MaXN0U29ydGVkQnlGdW5jdGlvbihvcHRpb24sIHNlbGVjdC5jaGlsZE5vZGVzLCBv
cHRpb25Db21wYXJlKTsKLSAgICAgICAgICAgIHZhciBzaG93c05vdGhpbmcgPSBzZWxlY3Quc2Vs
ZWN0ZWRJbmRleCA9PT0gLTE7Ci0gICAgICAgICAgICBzZWxlY3QuaW5zZXJ0QmVmb3JlKG9wdGlv
biwgaW5zZXJ0aW9uSW5kZXggPCAwID8gbnVsbCA6IHNlbGVjdC5jaGlsZE5vZGVzLml0ZW0oaW5z
ZXJ0aW9uSW5kZXgpKTsKLSAgICAgICAgICAgIGlmIChzaG93c05vdGhpbmcpCi0gICAgICAgICAg
ICAgICAgc2VsZWN0LnNlbGVjdGVkSW5kZXggPSAtMTsKLSAgICAgICAgfQotCi0gICAgICAgIGlu
c2VydE9yZGVyZWQob3B0aW9uKTsKLQotICAgICAgICBpZiAodWlTb3VyY2VDb2RlLmlzQ29udGVu
dFNjcmlwdCAmJiAhc2VsZWN0LmNvbnRlbnRTY3JpcHRTZWN0aW9uKSB7Ci0gICAgICAgICAgICB2
YXIgY29udGVudFNjcmlwdFNlY3Rpb24gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJvcHRpb24i
KTsKLSAgICAgICAgICAgIGNvbnRlbnRTY3JpcHRTZWN0aW9uLnRleHQgPSAiXHUyMDE0ICIgKyBX
ZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNvbnRlbnQgc2NyaXB0cyIpICsgIiBcdTIwMTQiOwotICAg
ICAgICAgICAgY29udGVudFNjcmlwdFNlY3Rpb24uZGlzYWJsZWQgPSB0cnVlOwotICAgICAgICAg
ICAgY29udGVudFNjcmlwdFNlY3Rpb24ubmFtZUZvclNvcnRpbmcgPSAiMS9Db250ZW50U2NyaXB0
U2VwYXJhdG9yIjsKLSAgICAgICAgICAgIHNlbGVjdC5jb250ZW50U2NyaXB0U2VjdGlvbiA9IGNv
bnRlbnRTY3JpcHRTZWN0aW9uOwotICAgICAgICAgICAgaW5zZXJ0T3JkZXJlZChjb250ZW50U2Ny
aXB0U2VjdGlvbik7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoc2hvd1NjcmlwdEZvbGRlcnMg
JiYgIXVpU291cmNlQ29kZS5pc0NvbnRlbnRTY3JpcHQgJiYgZG9tYWluICYmICFzZWxlY3QuZG9t
YWluT3B0aW9uc1tkb21haW5dKSB7Ci0gICAgICAgICAgICB2YXIgZG9tYWluT3B0aW9uID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgib3B0aW9uIik7Ci0gICAgICAgICAgICBkb21haW5PcHRpb24u
dGV4dCA9ICJcdTIwMTQgIiArIGRvbWFpbiArICIgXHUyMDE0IjsKLSAgICAgICAgICAgIGRvbWFp
bk9wdGlvbi5uYW1lRm9yU29ydGluZyA9ICIwOiIgKyBkb21haW47Ci0gICAgICAgICAgICBkb21h
aW5PcHRpb24uZGlzYWJsZWQgPSB0cnVlOwotICAgICAgICAgICAgc2VsZWN0LmRvbWFpbk9wdGlv
bnNbZG9tYWluXSA9IGRvbWFpbk9wdGlvbjsKLSAgICAgICAgICAgIGluc2VydE9yZGVyZWQoZG9t
YWluT3B0aW9uKTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChzaG93U2NyaXB0Rm9sZGVycyAm
JiBmb2xkZXJOYW1lICYmICFzZWxlY3QuZm9sZGVyT3B0aW9uc1tmb2xkZXJOYW1lRm9yU29ydGlu
Z10pIHsKLSAgICAgICAgICAgIHZhciBmb2xkZXJPcHRpb24gPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJvcHRpb24iKTsKLSAgICAgICAgICAgIGZvbGRlck9wdGlvbi50ZXh0ID0gZm9sZGVyTmFt
ZTsKLSAgICAgICAgICAgIGZvbGRlck9wdGlvbi5uYW1lRm9yU29ydGluZyA9IGZvbGRlck5hbWVG
b3JTb3J0aW5nOwotICAgICAgICAgICAgZm9sZGVyT3B0aW9uLmRpc2FibGVkID0gdHJ1ZTsKLSAg
ICAgICAgICAgIHNlbGVjdC5mb2xkZXJPcHRpb25zW2ZvbGRlck5hbWVGb3JTb3J0aW5nXSA9IGZv
bGRlck9wdGlvbjsKLSAgICAgICAgICAgIGluc2VydE9yZGVyZWQoZm9sZGVyT3B0aW9uKTsKLSAg
ICAgICAgfQotCi0gICAgICAgIG9wdGlvbi5fdWlTb3VyY2VDb2RlID0gdWlTb3VyY2VDb2RlOwot
ICAgICAgICB1aVNvdXJjZUNvZGUuX29wdGlvbiA9IG9wdGlvbjsKLSAgICB9LAotCi0gICAgX3Jl
c2V0RmlsZXNTZWxlY3Q6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHRoaXMuX2ZpbGVzU2Vs
ZWN0RWxlbWVudC5yZW1vdmVDaGlsZHJlbigpOwotICAgICAgICB0aGlzLl9maWxlc1NlbGVjdEVs
ZW1lbnQuZG9tYWluT3B0aW9ucyA9IHt9OwotICAgICAgICB0aGlzLl9maWxlc1NlbGVjdEVsZW1l
bnQuZm9sZGVyT3B0aW9ucyA9IHt9OwotICAgICAgICBkZWxldGUgdGhpcy5fZmlsZXNTZWxlY3RF
bGVtZW50LmNvbnRlbnRTY3JpcHRTZWN0aW9uOwotICAgIH0sCi0KLSAgICBfdXBkYXRlQmFja0Fu
ZEZvcndhcmRCdXR0b25zOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICB0aGlzLmJhY2tCdXR0
b24uZGlzYWJsZWQgPSB0aGlzLl9jdXJyZW50QmFja0ZvcndhcmRJbmRleCA8PSAwOwotICAgICAg
ICB0aGlzLmZvcndhcmRCdXR0b24uZGlzYWJsZWQgPSB0aGlzLl9jdXJyZW50QmFja0ZvcndhcmRJ
bmRleCA+PSAodGhpcy5fYmFja0ZvcndhcmRMaXN0Lmxlbmd0aCAtIDEpOwotICAgIH0sCi0KLSAg
ICBfZ29CYWNrOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICBpZiAodGhpcy5fY3VycmVudEJh
Y2tGb3J3YXJkSW5kZXggPD0gMCkgewotICAgICAgICAgICAgY29uc29sZS5lcnJvcigiQ2FuJ3Qg
Z28gYmFjayBmcm9tIGluZGV4ICIgKyB0aGlzLl9jdXJyZW50QmFja0ZvcndhcmRJbmRleCk7Ci0g
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICB2YXIgdWlTb3VyY2VDb2Rl
ID0gdGhpcy5fYmFja0ZvcndhcmRMaXN0Wy0tdGhpcy5fY3VycmVudEJhY2tGb3J3YXJkSW5kZXhd
OwotICAgICAgICB0aGlzLl9pbm5lclJldmVhbFVJU291cmNlQ29kZSh1aVNvdXJjZUNvZGUsIGZh
bHNlKTsKLSAgICB9LAotCi0gICAgX2dvRm9yd2FyZDogZnVuY3Rpb24oKQotICAgIHsKLSAgICAg
ICAgaWYgKHRoaXMuX2N1cnJlbnRCYWNrRm9yd2FyZEluZGV4ID49IHRoaXMuX2JhY2tGb3J3YXJk
TGlzdC5sZW5ndGggLSAxKSB7Ci0gICAgICAgICAgICBjb25zb2xlLmVycm9yKCJDYW4ndCBnbyBm
b3J3YXJkIGZyb20gaW5kZXggIiArIHRoaXMuX2N1cnJlbnRCYWNrRm9yd2FyZEluZGV4KTsKLSAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIHZhciB1aVNvdXJjZUNvZGUg
PSB0aGlzLl9iYWNrRm9yd2FyZExpc3RbKyt0aGlzLl9jdXJyZW50QmFja0ZvcndhcmRJbmRleF07
Ci0gICAgICAgIHRoaXMuX2lubmVyUmV2ZWFsVUlTb3VyY2VDb2RlKHVpU291cmNlQ29kZSwgZmFs
c2UpOwotICAgIH0sCi0KLSAgICAvKioKLSAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IGZvY3VzU291
cmNlCi0gICAgICovCi0gICAgX2ZpbGVzU2VsZWN0Q2hhbmdlZDogZnVuY3Rpb24oZm9jdXNTb3Vy
Y2UpCi0gICAgewotICAgICAgICBpZiAodGhpcy5fZmlsZXNTZWxlY3RFbGVtZW50LnNlbGVjdGVk
SW5kZXggPT09IC0xKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIHZhciB1aVNvdXJj
ZUNvZGUgPSB0aGlzLl9maWxlc1NlbGVjdEVsZW1lbnRbdGhpcy5fZmlsZXNTZWxlY3RFbGVtZW50
LnNlbGVjdGVkSW5kZXhdLl91aVNvdXJjZUNvZGU7Ci0gICAgICAgIHRoaXMuX2lubmVyUmV2ZWFs
VUlTb3VyY2VDb2RlKHVpU291cmNlQ29kZSwgdHJ1ZSk7Ci0gICAgICAgIGlmIChmb2N1c1NvdXJj
ZSkKLSAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rv
ci5TY3JpcHRzUGFuZWwuRmlsZVNlbGVjdG9yLkV2ZW50cy5SZWxlYXNlZEZvY3VzQWZ0ZXJTZWxl
Y3Rpb24sIHVpU291cmNlQ29kZSk7Ci0gICAgfQotfQotCi1XZWJJbnNwZWN0b3IuU2NyaXB0c1Bh
bmVsLkNvbWJvQm94RmlsZVNlbGVjdG9yLnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0
b3IuT2JqZWN0LnByb3RvdHlwZTsKLQotLyoqCi0gKiBAaW1wbGVtZW50cyB7V2ViSW5zcGVjdG9y
LkVkaXRvckNvbnRhaW5lcn0KLSAqIEBleHRlbmRzIHtXZWJJbnNwZWN0b3IuT2JqZWN0fQotICog
QGNvbnN0cnVjdG9yCi0gKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5FZGl0b3JDb250YWluZXJEZWxl
Z2F0ZX0gZGVsZWdhdGUKLSAqLwotV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5TaW5nbGVGaWxl
RWRpdG9yQ29udGFpbmVyID0gZnVuY3Rpb24oZGVsZWdhdGUpCi17Ci0gICAgdGhpcy5fZGVsZWdh
dGUgPSBkZWxlZ2F0ZTsKLSAgICB0aGlzLmVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCJkaXYiKTsKLSAgICB0aGlzLmVsZW1lbnQuY2xhc3NOYW1lID0gInNjcmlwdHMtdmlld3MtY29u
dGFpbmVyIjsKLX0KLQotV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5TaW5nbGVGaWxlRWRpdG9y
Q29udGFpbmVyLnByb3RvdHlwZSA9IHsKLSAgICAvKioKLSAgICAgKiBAdHlwZSB7V2ViSW5zcGVj
dG9yLlNvdXJjZUZyYW1lfQotICAgICAqLwotICAgIGdldCB2aXNpYmxlVmlldygpCi0gICAgewot
ICAgICAgICByZXR1cm4gdGhpcy5fY3VycmVudFNvdXJjZUZyYW1lOwotICAgIH0sCi0KLSAgICAv
KioKLSAgICAgKiBAcGFyYW0ge0VsZW1lbnR9IGVsZW1lbnQKLSAgICAgKi8KLSAgICBzaG93OiBm
dW5jdGlvbihlbGVtZW50KQotICAgIHsKLSAgICAgICAgZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlz
LmVsZW1lbnQpOwotICAgIH0sCi0KLSAgICAvKioKLSAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rv
ci5VSVNvdXJjZUNvZGV9IHVpU291cmNlQ29kZQotICAgICAqLwotICAgIHNob3dGaWxlOiBmdW5j
dGlvbih1aVNvdXJjZUNvZGUpCi0gICAgewotICAgICAgICB2YXIgc291cmNlRnJhbWUgPSB0aGlz
Ll9kZWxlZ2F0ZS52aWV3Rm9yRmlsZSh1aVNvdXJjZUNvZGUpOwotICAgICAgICBpZiAodGhpcy5f
Y3VycmVudFNvdXJjZUZyYW1lID09PSBzb3VyY2VGcmFtZSkKLSAgICAgICAgICAgIHJldHVybjsK
LQotICAgICAgICB0aGlzLl9pbm5lclNob3dGaWxlKHVpU291cmNlQ29kZSwgdHJ1ZSk7Ci0gICAg
fSwKLQotICAgIC8qKgotICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZX0g
dWlTb3VyY2VDb2RlCi0gICAgICogQHBhcmFtIHtib29sZWFufSB1c2VyR2VzdHVyZQotICAgICAq
LwotICAgIF9pbm5lclNob3dGaWxlOiBmdW5jdGlvbih1aVNvdXJjZUNvZGUsIHVzZXJHZXN0dXJl
KQotICAgIHsKLSAgICAgICAgaWYgKHRoaXMuX2N1cnJlbnRTb3VyY2VGcmFtZSkKLSAgICAgICAg
ICAgIHRoaXMuX2N1cnJlbnRTb3VyY2VGcmFtZS5kZXRhY2goKTsKLQotICAgICAgICB0aGlzLl9p
bml0aWFsVmlld1NlbGVjdGlvblByb2Nlc3NlZCA9IHRydWU7Ci0KLSAgICAgICAgdmFyIHNvdXJj
ZUZyYW1lID0gdGhpcy5fZGVsZWdhdGUudmlld0ZvckZpbGUodWlTb3VyY2VDb2RlKTsKLSAgICAg
ICAgdGhpcy5fY3VycmVudFNvdXJjZUZyYW1lID0gc291cmNlRnJhbWU7Ci0gICAgICAgIHRoaXMu
X2N1cnJlbnRGaWxlID0gdWlTb3VyY2VDb2RlOwotCi0gICAgICAgIGlmICh1c2VyR2VzdHVyZSkg
ewotICAgICAgICAgICAgdGhpcy5fdXNlclNlbGVjdGVkRmlsZXMgPSB0cnVlOwotICAgICAgICAg
ICAgV2ViSW5zcGVjdG9yLnNldHRpbmdzLmxhc3RWaWV3ZWRTY3JpcHRGaWxlLnNldCh1aVNvdXJj
ZUNvZGUudXJsKTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChzb3VyY2VGcmFtZSkKLSAgICAg
ICAgICAgIHNvdXJjZUZyYW1lLnNob3codGhpcy5lbGVtZW50KTsKLSAgICAgICAgdGhpcy5kaXNw
YXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkVkaXRvckNvbnRhaW5lci5FdmVudHMu
RWRpdG9yU2VsZWN0ZWQsIHVpU291cmNlQ29kZSk7Ci0gICAgfSwKLQotICAgIC8qKgotICAgICAq
IEBwYXJhbSB7V2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZX0gdWlTb3VyY2VDb2RlCi0gICAgICov
Ci0gICAgdWlTb3VyY2VDb2RlQWRkZWQ6IGZ1bmN0aW9uKHVpU291cmNlQ29kZSkKLSAgICB7Ci0g
ICAgICAgIHZhciBsYXN0Vmlld2VkVVJMID0gV2ViSW5zcGVjdG9yLnNldHRpbmdzLmxhc3RWaWV3
ZWRTY3JpcHRGaWxlLmdldCgpOwotICAgICAgICAvLyBTaG93IGZpcnN0IGZpbGUgdGhhdCB3YXMg
YWRkZWQgb3IgZmlsZSB3aXRoIHRoZSBsYXN0IHZpZXdlZCB1cmwuCi0gICAgICAgIGlmICh0aGlz
Ll91c2VyU2VsZWN0ZWRGaWxlcykKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgaWYgKHVp
U291cmNlQ29kZS51cmwgPT09IGxhc3RWaWV3ZWRVUkwgfHwgIXRoaXMuX2luaXRpYWxWaWV3U2Vs
ZWN0aW9uUHJvY2Vzc2VkKQotICAgICAgICAgICAgdGhpcy5faW5uZXJTaG93RmlsZSh1aVNvdXJj
ZUNvZGUsIGZhbHNlKTsKLSAgICB9LAotCi0gICAgLyoqCi0gICAgICogQHBhcmFtIHtXZWJJbnNw
ZWN0b3IuVUlTb3VyY2VDb2RlfSB1aVNvdXJjZUNvZGUKLSAgICAgKiBAcGFyYW0ge2Jvb2xlYW59
IGlzRGlydHkKLSAgICAgKi8KLSAgICBzZXRGaWxlSXNEaXJ0eTogZnVuY3Rpb24odWlTb3VyY2VD
b2RlLCBpc0RpcnR5KQotICAgIHsKLSAgICAgICAgLy8gRG8gbm90aGluZy4KLSAgICB9LAotCi0g
ICAgLyoqCi0gICAgICogQHBhcmFtIHtBcnJheS48V2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZT59
IG9sZFVJU291cmNlQ29kZUxpc3QKLSAgICAgKiBAcGFyYW0ge0FycmF5LjxXZWJJbnNwZWN0b3Iu
VUlTb3VyY2VDb2RlPn0gdWlTb3VyY2VDb2RlTGlzdAotICAgICAqLwotICAgIHJlcGxhY2VGaWxl
czogZnVuY3Rpb24ob2xkVUlTb3VyY2VDb2RlTGlzdCwgdWlTb3VyY2VDb2RlTGlzdCkKLSAgICB7
Ci0gICAgICAgIGlmIChvbGRVSVNvdXJjZUNvZGVMaXN0LmluZGV4T2YodGhpcy5fY3VycmVudEZp
bGUpICE9PSAtMSkKLSAgICAgICAgICAgIHRoaXMuc2hvd0ZpbGUodWlTb3VyY2VDb2RlTGlzdFsw
XSk7Ci0gICAgfSwKLQotICAgIHJlc2V0OiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICBpZiAo
dGhpcy5fY3VycmVudFNvdXJjZUZyYW1lKQotICAgICAgICAgICAgdGhpcy5fY3VycmVudFNvdXJj
ZUZyYW1lLmRldGFjaCgpOwotICAgICAgICB0aGlzLl9jdXJyZW50U291cmNlRnJhbWUgPSBudWxs
OwotICAgICAgICB0aGlzLl9jdXJyZW50RmlsZSA9IG51bGw7Ci0gICAgICAgIGRlbGV0ZSB0aGlz
Ll9pbml0aWFsVmlld1NlbGVjdGlvblByb2Nlc3NlZDsKLSAgICAgICAgZGVsZXRlIHRoaXMuX3Vz
ZXJTZWxlY3RlZEZpbGVzOwotICAgIH0KLX0KLQotV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5T
aW5nbGVGaWxlRWRpdG9yQ29udGFpbmVyLnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0
b3IuT2JqZWN0LnByb3RvdHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvU2V0dGluZ3NTY3JlZW4uanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL1NldHRpbmdzU2NyZWVuLmpzCmluZGV4IDEwOTA2NTJjZmRlYWFjZmE4NTc3M2M2
ZTFhNGIzYWJhNDE3M2IyMDIuLjVkM2U0Yjc5MzU2ZTkzYmE4YWQzYjFlNzAxMmRlZTcyM2FjZDk4
N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2V0dGlu
Z3NTY3JlZW4uanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TZXR0
aW5nc1NjcmVlbi5qcwpAQCAtNzgsNyArNzgsNiBAQCBXZWJJbnNwZWN0b3IuU2V0dGluZ3NTY3Jl
ZW4gPSBmdW5jdGlvbigpCiAgICAgcC5hcHBlbmRDaGlsZCh0aGlzLl9jcmVhdGVDaGVja2JveFNl
dHRpbmcoV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJFbXVsYXRlIHRvdWNoIGV2ZW50cyIpLCBXZWJJ
bnNwZWN0b3Iuc2V0dGluZ3MuZW11bGF0ZVRvdWNoRXZlbnRzKSk7CiAKICAgICBwID0gdGhpcy5f
YXBwZW5kU2VjdGlvbihXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlNjcmlwdHMiKSwgdHJ1ZSk7Ci0g
ICAgcC5hcHBlbmRDaGlsZCh0aGlzLl9jcmVhdGVDaGVja2JveFNldHRpbmcoV2ViSW5zcGVjdG9y
LlVJU3RyaW5nKCJVc2UgZmlsZSBuYXZpZ2F0b3IgYW5kIHRhYmJlZCBlZGl0b3IgY29udGFpbmVy
IGluIHNjcmlwdHMgcGFuZWwiKSwgV2ViSW5zcGVjdG9yLnNldHRpbmdzLnVzZVNjcmlwdHNOYXZp
Z2F0b3IpKTsKICAgICBwLmFwcGVuZENoaWxkKHRoaXMuX2NyZWF0ZUNoZWNrYm94U2V0dGluZyhX
ZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlNob3cgc2NyaXB0IGZvbGRlcnMiKSwgV2ViSW5zcGVjdG9y
LnNldHRpbmdzLnNob3dTY3JpcHRGb2xkZXJzKSk7CiAgICAgcC5hcHBlbmRDaGlsZCh0aGlzLl9j
cmVhdGVDaGVja2JveFNldHRpbmcoV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTZWFyY2ggaW4gY29u
dGVudCBzY3JpcHRzIiksIFdlYkluc3BlY3Rvci5zZXR0aW5ncy5zZWFyY2hJbkNvbnRlbnRTY3Jp
cHRzKSk7CiAgICAgcC5hcHBlbmRDaGlsZCh0aGlzLl9jcmVhdGVDaGVja2JveFNldHRpbmcoV2Vi
SW5zcGVjdG9yLlVJU3RyaW5nKCJFbmFibGUgc291cmNlIG1hcHMiKSwgV2ViSW5zcGVjdG9yLnNl
dHRpbmdzLnNvdXJjZU1hcHNFbmFibGVkKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL1RhYmJlZEVkaXRvckNvbnRhaW5lci5qcyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVGFiYmVkRWRpdG9yQ29udGFpbmVyLmpzCmluZGV4IDgy
Zjc0NDdkM2FkODBjZDhmZTU5ZjBjMDVkNDgxMWQ2NzI3ZDNlOTEuLjY4MTFlNzhkMDUyMGI3NjA1
YjIxNDhlMDM4NjlkYmZiNDFkNWNhMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvVGFiYmVkRWRpdG9yQ29udGFpbmVyLmpzCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVGFiYmVkRWRpdG9yQ29udGFpbmVyLmpzCkBAIC0yNywx
MCArMjcsMjIgQEAKICAqLwogCiAvKioKLSAqIEBpbXBsZW1lbnRzIHtXZWJJbnNwZWN0b3IuRWRp
dG9yQ29udGFpbmVyfQotICogQGV4dGVuZHMge1dlYkluc3BlY3Rvci5PYmplY3R9CisgKiBAaW50
ZXJmYWNlCisgKi8KK1dlYkluc3BlY3Rvci5UYWJiZWRFZGl0b3JDb250YWluZXJEZWxlZ2F0ZSA9
IGZ1bmN0aW9uKCkgeyB9CisKK1dlYkluc3BlY3Rvci5UYWJiZWRFZGl0b3JDb250YWluZXJEZWxl
Z2F0ZS5wcm90b3R5cGUgPSB7CisgICAgLyoqCisgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3Iu
VUlTb3VyY2VDb2RlfSB1aVNvdXJjZUNvZGUKKyAgICAgKiBAcmV0dXJuIHtXZWJJbnNwZWN0b3Iu
U291cmNlRnJhbWV9CisgICAgICovCisgICAgdmlld0ZvckZpbGU6IGZ1bmN0aW9uKHVpU291cmNl
Q29kZSkgeyB9Cit9CisKKy8qKgogICogQGNvbnN0cnVjdG9yCi0gKiBAcGFyYW0ge1dlYkluc3Bl
Y3Rvci5FZGl0b3JDb250YWluZXJEZWxlZ2F0ZX0gZGVsZWdhdGUKKyAqIEBleHRlbmRzIHtXZWJJ
bnNwZWN0b3IuT2JqZWN0fQorICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuVGFiYmVkRWRpdG9yQ29u
dGFpbmVyRGVsZWdhdGV9IGRlbGVnYXRlCiAgKi8KIFdlYkluc3BlY3Rvci5UYWJiZWRFZGl0b3JD
b250YWluZXIgPSBmdW5jdGlvbihkZWxlZ2F0ZSkKIHsKQEAgLTUxLDYgKzYzLDEyIEBAIFdlYklu
c3BlY3Rvci5UYWJiZWRFZGl0b3JDb250YWluZXIgPSBmdW5jdGlvbihkZWxlZ2F0ZSkKICAgICB0
aGlzLl9oaXN0b3J5ID0gbmV3IFdlYkluc3BlY3Rvci5UYWJiZWRFZGl0b3JDb250YWluZXIuSGlz
dG9yeSh0aGlzLl9wcmV2aW91c2x5Vmlld2VkRmlsZXNTZXR0aW5nLmdldCgpKTsKIH0KIAorCitX
ZWJJbnNwZWN0b3IuVGFiYmVkRWRpdG9yQ29udGFpbmVyLkV2ZW50cyA9IHsKKyAgICBFZGl0b3JT
ZWxlY3RlZDogIkVkaXRvclNlbGVjdGVkIiwKKyAgICBFZGl0b3JDbG9zZWQ6ICJFZGl0b3JDbG9z
ZWQiCit9CisKIFdlYkluc3BlY3Rvci5UYWJiZWRFZGl0b3JDb250YWluZXIuX3RhYklkID0gMDsK
IAogV2ViSW5zcGVjdG9yLlRhYmJlZEVkaXRvckNvbnRhaW5lci5tYXhpbWFsUHJldmlvdXNseVZp
ZXdlZEZpbGVzQ291bnQgPSAzMDsKQEAgLTEwNCw3ICsxMjIsNyBAQCBXZWJJbnNwZWN0b3IuVGFi
YmVkRWRpdG9yQ29udGFpbmVyLnByb3RvdHlwZSA9IHsKICAgICAgICAgaWYgKHVzZXJHZXN0dXJl
KQogICAgICAgICAgICAgdGhpcy5fZWRpdG9yU2VsZWN0ZWRCeVVzZXJBY3Rpb24oKTsKICAgICAg
ICAgCi0gICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5F
ZGl0b3JDb250YWluZXIuRXZlbnRzLkVkaXRvclNlbGVjdGVkLCB0aGlzLl9jdXJyZW50RmlsZSk7
CisgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5UYWJi
ZWRFZGl0b3JDb250YWluZXIuRXZlbnRzLkVkaXRvclNlbGVjdGVkLCB0aGlzLl9jdXJyZW50Rmls
ZSk7CiAgICAgfSwKIAogICAgIC8qKgpAQCAtMjE2LDcgKzIzNCw3IEBAIFdlYkluc3BlY3Rvci5U
YWJiZWRFZGl0b3JDb250YWluZXIucHJvdG90eXBlID0gewogICAgICAgICBkZWxldGUgdGhpcy5f
ZmlsZXNbdGFiSWRdOwogICAgICAgICBkZWxldGUgdGhpcy5fY3VycmVudEZpbGU7CiAKLSAgICAg
ICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkVkaXRvckNvbnRh
aW5lci5FdmVudHMuRWRpdG9yQ2xvc2VkLCB1aVNvdXJjZUNvZGUpOworICAgICAgICB0aGlzLmRp
c3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuVGFiYmVkRWRpdG9yQ29udGFpbmVy
LkV2ZW50cy5FZGl0b3JDbG9zZWQsIHVpU291cmNlQ29kZSk7CiAKICAgICAgICAgaWYgKHVzZXJH
ZXN0dXJlKQogICAgICAgICAgICAgdGhpcy5fZWRpdG9yQ2xvc2VkQnlVc2VyQWN0aW9uKHVpU291
cmNlQ29kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L3NjcmlwdHNQYW5lbC5jc3MgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL3Nj
cmlwdHNQYW5lbC5jc3MKaW5kZXggYjA1YTllNWY1YTcyODg5Njc2MjNiM2RkODE1ZDNjMzMwZThi
OTRiMC4uN2UxOTNiMTMyZTkyZGRjMzU5NWM5ZGE0YTQwNjhjMzVjYzc2YTY3YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9zY3JpcHRzUGFuZWwuY3NzCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvc2NyaXB0c1BhbmVsLmNzcwpA
QCAtODQsMTQgKzg0LDYgQEAKICAgICBtYXJnaW4tdG9wOiAycHg7CiB9CiAKLSNzY3JpcHRzLWJh
Y2sgaW1nIHsKLSAgICBjb250ZW50OiB1cmwoSW1hZ2VzL2JhY2sucG5nKTsKLX0KLQotI3Njcmlw
dHMtZm9yd2FyZCBpbWcgewotICAgIGNvbnRlbnQ6IHVybChJbWFnZXMvZm9yd2FyZC5wbmcpOwot
fQotCiAjc2NyaXB0cy1wYXVzZSBpbWcgewogICAgIGNvbnRlbnQ6IHVybChJbWFnZXMvZGVidWdn
ZXJQYXVzZS5wbmcpOwogfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGMwNDIwN2JjNDMzMDgyZmQyZThjYzY0Y2RhNGNlYWFh
ZDIwYjM5MzIuLmJhMTFiNWFiMThkMjgwN2UwMjU0ODlmYjM5OGQwYjFlYTc4YTRmZDMgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwyMCBAQAorMjAxMi0wNC0wOSAgUGF2ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGNo
cm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiByZW1vdmUgQ29tYm9Cb3hGaWxl
U2VsZWN0b3IgYW5kIFNpbmdsZUZpbGVFZGl0b3JDb250YWluZXIuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MzQ2MAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaW5zcGVjdG9yL2RlYnVnZ2VyL3Njcmlw
dHMtY29tYm9ib3gtZmlsZS1zZWxlY3Rvci1oaXN0b3J5LWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4K
KyAgICAgICAgKiBpbnNwZWN0b3IvZGVidWdnZXIvc2NyaXB0cy1jb21ib2JveC1maWxlLXNlbGVj
dG9yLWhpc3RvcnkuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvZGVidWdnZXIv
c2NyaXB0cy1maWxlLXNlbGVjdG9yLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBpbnNwZWN0b3Iv
ZGVidWdnZXIvc2NyaXB0cy1maWxlLXNlbGVjdG9yLmh0bWw6CisgICAgICAgICogaW5zcGVjdG9y
L2RlYnVnZ2VyL3NjcmlwdHMtcGFuZWwtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGluc3BlY3Rv
ci9kZWJ1Z2dlci9zY3JpcHRzLXBhbmVsLmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL2RlYnVn
Z2VyL3NjcmlwdHMtc29ydGluZy1leHBlY3RlZC50eHQ6CisgICAgICAgICogaW5zcGVjdG9yL2Rl
YnVnZ2VyL3NjcmlwdHMtc29ydGluZy5odG1sOgorICAgICAgICAqIGluc3BlY3Rvci9kZWJ1Z2dl
ci9zb3VyY2UtZnJhbWUtY291bnQuaHRtbDoKKwogMjAxMi0wNC0wNiAgUGF2ZWwgRmVsZG1hbiAg
PHBmZWxkbWFuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBtb3ZlIGJy
ZWFrcG9pbnRzIGFjdGl2ZSBzdGF0ZSBmcm9tIHNjcmlwdHMgcGFuZWwgdG8gZGVidWdnZXIgcHJl
c2VudGF0aW9uIG1vZGVsLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVn
Z2VyL3NjcmlwdHMtY29tYm9ib3gtZmlsZS1zZWxlY3Rvci1oaXN0b3J5LWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zY3JpcHRzLWNvbWJvYm94LWZpbGUtc2Vs
ZWN0b3ItaGlzdG9yeS1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGE4N2U0NDdlOTJhNTA4ODhkZmVkNTBmNzhmMjY4ZGYwOGMwNzQyNGEuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Rl
YnVnZ2VyL3NjcmlwdHMtY29tYm9ib3gtZmlsZS1zZWxlY3Rvci1oaXN0b3J5LWV4cGVjdGVkLnR4
dAorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLVRlc3RzIHNjcmlwdHMgcGFuZWwgY29tYm8g
Ym94IGZpbGUgc2VsZWN0b3IgaGlzdG9yeS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9kZWJ1Z2dlci9zY3JpcHRzLWNvbWJvYm94LWZpbGUtc2VsZWN0b3ItaGlzdG9yeS5odG1s
IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3NjcmlwdHMtY29tYm9ib3gtZmlsZS1z
ZWxlY3Rvci1oaXN0b3J5Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJkMDQ1
MzA5NDJiZTgzZWNlMDczMDhiMWI0NTk5YzFjZDQ3ZDRlYmYuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2Vy
L3NjcmlwdHMtY29tYm9ib3gtZmlsZS1zZWxlY3Rvci1oaXN0b3J5Lmh0bWwKKysrIC9kZXYvbnVs
bApAQCAtMSw4NCArMCwwIEBACi08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4uL2h0
dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQg
c3JjPSIuLi8uLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci10ZXN0LmpzIj48L3Njcmlw
dD4KLQotPHNjcmlwdD4KLQotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgLy8gQWx3YXlzIHVzZSBp
bmRlbnRhdGlvbiBpbiBzY3JpcHRzIGRyb3AgYm94Ci0gICAgV2ViSW5zcGVjdG9yLl9pc01hYyA9
IGZhbHNlOwotCi0gICAgdmFyIHVpU291cmNlQ29kZXMgPSBbXTsKLSAgICBmdW5jdGlvbiBhZGRV
SVNvdXJjZUNvZGUodXJsKQotICAgIHsKLSAgICAgICAgdmFyIHVpU291cmNlQ29kZSA9IG5ldyBX
ZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2RlKDAsIHVybCwgbnVsbCwgbnVsbCk7Ci0gICAgICAgIGNv
bWJvQm94RmlsZVNlbGVjdG9yLmFkZFVJU291cmNlQ29kZSh1aVNvdXJjZUNvZGUpOwotICAgICAg
ICB1aVNvdXJjZUNvZGVzLnB1c2godWlTb3VyY2VDb2RlKTsKLSAgICB9Ci0KLSAgICBmdW5jdGlv
biBjaGVja0N1cnJlbnRseVNlbGVjdGVkRmlsZU5hbWUoZmlsZU5hbWUpCi0gICAgewotICAgICAg
ICB2YXIgaW5kZXggPSBjb21ib0JveEZpbGVTZWxlY3Rvci5fZmlsZXNTZWxlY3RFbGVtZW50LnNl
bGVjdGVkSW5kZXg7Ci0gICAgICAgIHZhciB0ZXh0ID0gY29tYm9Cb3hGaWxlU2VsZWN0b3IuX2Zp
bGVzU2VsZWN0RWxlbWVudFtpbmRleF0udGV4dDsKLSAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3Nl
cnRUcnVlKHRleHQuaW5kZXhPZihmaWxlTmFtZSkgIT09IC0xLAotICAgICAgICAgICAgIldyb25n
IG9wdGlvbiB0ZXh0LiBFeHBlY3RlZCA8IiArIGZpbGVOYW1lICsgIj4sIGZvdW5kIDwiICsgdGV4
dCArICI+LiIpOwotICAgIH0KLQotICAgIHZhciBjb21ib0JveEZpbGVTZWxlY3RvciA9IG5ldyBX
ZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsLkNvbWJvQm94RmlsZVNlbGVjdG9yKCk7Ci0KLSAgICB2
YXIgZmlsZXMgPSBbImluZGV4Lmh0bWwiLCAic2NyaXB0MS5qcyIsICJzY3JpcHQyLmpzIiwgInNj
cmlwdDMuanMiXTsKLSAgICBmb3IgKHZhciBpID0gMDsgaSA8IGZpbGVzLmxlbmd0aDsgKytpKQot
ICAgICAgICBhZGRVSVNvdXJjZUNvZGUoZmlsZXNbaV0pOwotCi0gICAgZm9yICh2YXIgaSA9IDA7
IGkgPCB1aVNvdXJjZUNvZGVzLmxlbmd0aDsgKytpKQotICAgICAgICBjb21ib0JveEZpbGVTZWxl
Y3Rvci5yZXZlYWxVSVNvdXJjZUNvZGUodWlTb3VyY2VDb2Rlc1tpXSk7Ci0KLSAgICBjaGVja0N1
cnJlbnRseVNlbGVjdGVkRmlsZU5hbWUoInNjcmlwdDMuanMiKTsKLSAgICBJbnNwZWN0b3JUZXN0
LmFzc2VydEVxdWFscyh0cnVlLCBjb21ib0JveEZpbGVTZWxlY3Rvci5mb3J3YXJkQnV0dG9uLmRp
c2FibGVkLCAiRm9yd2FyZCBzaG91bGQgYmUgZGlzYWJsZWQuIik7Ci0KLSAgICBjb21ib0JveEZp
bGVTZWxlY3Rvci5iYWNrQnV0dG9uLmNsaWNrKCk7Ci0gICAgY2hlY2tDdXJyZW50bHlTZWxlY3Rl
ZEZpbGVOYW1lKCJzY3JpcHQyLmpzIik7Ci0gICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHMo
ZmFsc2UsIGNvbWJvQm94RmlsZVNlbGVjdG9yLmZvcndhcmRCdXR0b24uZGlzYWJsZWQsICJGb3J3
YXJkIHNob3VsZCBiZSBlbmFibGVkIGFmdGVyIGJhY2sgYnV0dG9uIGNsaWNrLiIpOwotCi0gICAg
Y29tYm9Cb3hGaWxlU2VsZWN0b3IuZm9yd2FyZEJ1dHRvbi5jbGljaygpOwotICAgIGNoZWNrQ3Vy
cmVudGx5U2VsZWN0ZWRGaWxlTmFtZSgic2NyaXB0My5qcyIpOwotICAgIEluc3BlY3RvclRlc3Qu
YXNzZXJ0RXF1YWxzKHRydWUsIGNvbWJvQm94RmlsZVNlbGVjdG9yLmZvcndhcmRCdXR0b24uZGlz
YWJsZWQsICJGb3J3YXJkIHNob3VsZCBiZSBkaXNhYmxlZCBhZnRlciBmb3J3YXJkIGJ1dHRvbiBj
bGljay4iKTsKLQotICAgIGNvbWJvQm94RmlsZVNlbGVjdG9yLmJhY2tCdXR0b24uY2xpY2soKTsK
LSAgICBjaGVja0N1cnJlbnRseVNlbGVjdGVkRmlsZU5hbWUoInNjcmlwdDIuanMiKTsKLQotICAg
IGNvbWJvQm94RmlsZVNlbGVjdG9yLmJhY2tCdXR0b24uY2xpY2soKTsKLSAgICBjaGVja0N1cnJl
bnRseVNlbGVjdGVkRmlsZU5hbWUoInNjcmlwdDEuanMiKTsKLQotICAgIGNvbWJvQm94RmlsZVNl
bGVjdG9yLmJhY2tCdXR0b24uY2xpY2soKTsKLSAgICBjaGVja0N1cnJlbnRseVNlbGVjdGVkRmls
ZU5hbWUoImluZGV4Lmh0bWwiKTsKLQotICAgIGNvbWJvQm94RmlsZVNlbGVjdG9yLmZvcndhcmRC
dXR0b24uY2xpY2soKTsKLSAgICBjb21ib0JveEZpbGVTZWxlY3Rvci5mb3J3YXJkQnV0dG9uLmNs
aWNrKCk7Ci0gICAgY2hlY2tDdXJyZW50bHlTZWxlY3RlZEZpbGVOYW1lKCJzY3JpcHQyLmpzIik7
Ci0KLSAgICBjb21ib0JveEZpbGVTZWxlY3Rvci5yZXZlYWxVSVNvdXJjZUNvZGUodWlTb3VyY2VD
b2Rlc1sxXSk7Ci0KLSAgICBjaGVja0N1cnJlbnRseVNlbGVjdGVkRmlsZU5hbWUoInNjcmlwdDEu
anMiKTsKLSAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscyh0cnVlLCBjb21ib0JveEZpbGVT
ZWxlY3Rvci5mb3J3YXJkQnV0dG9uLmRpc2FibGVkKTsKLQotICAgIGNvbWJvQm94RmlsZVNlbGVj
dG9yLmJhY2tCdXR0b24uY2xpY2soKTsKLSAgICBjaGVja0N1cnJlbnRseVNlbGVjdGVkRmlsZU5h
bWUoInNjcmlwdDIuanMiKTsKLQotICAgIGNvbWJvQm94RmlsZVNlbGVjdG9yLmJhY2tCdXR0b24u
Y2xpY2soKTsKLSAgICBjaGVja0N1cnJlbnRseVNlbGVjdGVkRmlsZU5hbWUoImluZGV4Lmh0bWwi
KTsKLQotICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0KCk7Ci19OwotCi08L3NjcmlwdD4K
LQotPC9oZWFkPgotCi08Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Ci08cD5UZXN0cyBzY3JpcHRz
IHBhbmVsIGNvbWJvIGJveCBmaWxlIHNlbGVjdG9yIGhpc3RvcnkuPC9wPgotCi08L2JvZHk+Ci08
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc2NyaXB0
cy1maWxlLXNlbGVjdG9yLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1
Z2dlci9zY3JpcHRzLWZpbGUtc2VsZWN0b3ItZXhwZWN0ZWQudHh0CmluZGV4IGQxOGViOWFiZTlk
OTI1MDQ2YWM4MDY0MzFhNDkxOWJkNTliMjkxZmUuLmZlYzI3YWU0YTk3Y2I5YmExZDA0NTg5Mjlh
ZmZjM2U4NzgyOTg5MzIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dl
ci9zY3JpcHRzLWZpbGUtc2VsZWN0b3ItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2lu
c3BlY3Rvci9kZWJ1Z2dlci9zY3JpcHRzLWZpbGUtc2VsZWN0b3ItZXhwZWN0ZWQudHh0CkBAIC0x
LDIyICsxLDUgQEAKIFRlc3RzIHNjcmlwdHMgcGFuZWwgZmlsZSBzZWxlY3RvcnMuCiAKLUR1bXBp
bmcgQ29tYm9Cb3hGaWxlU2VsZWN0b3I6Ci0gICAgP2E9Yig/YT1iKQotICAgIHZlcnlfbG9vb29v
b29vby4uLm9vb29vb29vbmdfdXJsKHZlcnlfbG9vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb25nX3VybCkKLeKAlCBleGFtcGxlLmNvbSDigJQKLSAgICA/YT1iKGh0dHA6Ly9leGFt
cGxlLmNvbS8/YT1iKQot4oCUIGxvY2FsaG9zdCDigJQKLUxheW91dFRlc3RzL2luc3BlY3Rvci9k
ZWJ1Z2dlci9mb28vYmFyCi0gICAgc2NyaXB0LmpzKDxyb290Pi9mb28vYmFyL3NjcmlwdC5qcykK
LSAgICBzY3JpcHQuanM/YT0xKDxyb290Pi9mb28vYmFyL3NjcmlwdC5qcz9hPTEpCi0gICAgc2Ny
aXB0LmpzP2E9Mig8cm9vdD4vZm9vL2Jhci9zY3JpcHQuanM/YT0yKQotTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL2RlYnVnZ2VyL2Zvby9iYXoKLSAgICBzY3JpcHQuanMoPHJvb3Q+L2Zvby9iYXovc2Ny
aXB0LmpzKQot4oCUIENvbnRlbnQgc2NyaXB0cyDigJQKLUxheW91dFRlc3RzL2luc3BlY3Rvci9k
ZWJ1Z2dlci9mb28vYmFyCi0gICAgY29udGVudFNjcmlwdC5qcz9hPTEoPHJvb3Q+L2Zvby9iYXIv
Y29udGVudFNjcmlwdC5qcz9hPTEpCi0gICAgY29udGVudFNjcmlwdC5qcz9hPTIoPHJvb3Q+L2Zv
by9iYXIvY29udGVudFNjcmlwdC5qcz9hPTIpCi0gICAgY29udGVudFNjcmlwdDIuanM/YT0xKDxy
b290Pi9mb28vYmFyL2NvbnRlbnRTY3JpcHQyLmpzP2E9MSkKIER1bXBpbmcgU2NyaXB0c05hdmln
YXRvciAnU2NyaXB0cycgdGFiOgogICBleGFtcGxlLmNvbQogICAgID9hPWIKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zY3JpcHRzLWZpbGUtc2VsZWN0b3IuaHRt
bCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zY3JpcHRzLWZpbGUtc2VsZWN0b3Iu
aHRtbAppbmRleCBmMDlkOTRmN2IxNzk4OGRkOGMxMWM0OWVhYzIxNjQ5NmE5MGY4YzdiLi42OTM5
NDZiZjRlOGNmZTA2YWM0ZTZjZDg1ZTYzYWE4ZGIwOTQ0M2IxIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc2NyaXB0cy1maWxlLXNlbGVjdG9yLmh0bWwKKysrIGIv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3NjcmlwdHMtZmlsZS1zZWxlY3Rvci5odG1s
CkBAIC0xMCwxNCArMTAsMTIgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgV2ViSW5zcGVjdG9yLl9p
c01hYyA9IGZhbHNlOwogCiAgICAgdmFyIG5hdmlnYXRvckZpbGVTZWxlY3RvciA9IG5ldyBXZWJJ
bnNwZWN0b3IuU2NyaXB0c05hdmlnYXRvcigpOwotICAgIHZhciBjb21ib0JveEZpbGVTZWxlY3Rv
ciA9IG5ldyBXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsLkNvbWJvQm94RmlsZVNlbGVjdG9yKCk7
CiAKICAgICBmdW5jdGlvbiBhZGRVSVNvdXJjZUNvZGUodXJsLCBpc0NvbnRlbnRTY3JpcHQpCiAg
ICAgewogICAgICAgICB2YXIgdWlTb3VyY2VDb2RlID0gbmV3IFdlYkluc3BlY3Rvci5VSVNvdXJj
ZUNvZGUoMCwgdXJsLCBudWxsLCBudWxsKTsKICAgICAgICAgdWlTb3VyY2VDb2RlLmlzQ29udGVu
dFNjcmlwdCA9IGlzQ29udGVudFNjcmlwdDsKICAgICAgICAgbmF2aWdhdG9yRmlsZVNlbGVjdG9y
LmFkZFVJU291cmNlQ29kZSh1aVNvdXJjZUNvZGUpOwotICAgICAgICBjb21ib0JveEZpbGVTZWxl
Y3Rvci5hZGRVSVNvdXJjZUNvZGUodWlTb3VyY2VDb2RlKTsKICAgICB9CiAKICAgICB2YXIgcm9v
dFVSTCA9ICJodHRwOi8vbG9jYWxob3N0OjgwODAvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVn
Z2VyLyI7CkBAIC0zMiw3ICszMCw2IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgIGFkZFVJU291cmNl
Q29kZSgiP2E9YiIsIGZhbHNlKTsKICAgICBhZGRVSVNvdXJjZUNvZGUoInZlcnlfbG9vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb25nX3VybCIsIGZhbHNlKTsKIAotICAgIEluc3Bl
Y3RvclRlc3QuZHVtcENvbWJvQm94RmlsZVNlbGVjdG9yKGNvbWJvQm94RmlsZVNlbGVjdG9yKQog
ICAgIEluc3BlY3RvclRlc3QuZHVtcFNjcmlwdHNOYXZpZ2F0b3IobmF2aWdhdG9yRmlsZVNlbGVj
dG9yKTsKIAogICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0KCk7CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc2NyaXB0cy1wYW5lbC1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc2NyaXB0cy1wYW5lbC1leHBlY3RlZC50
eHQKaW5kZXggM2I1ZTBhODA0NmM0MjhhOTE4ODAwMWQ5OTkxYmI4YjUzMWE5ODA5ZS4uNTg4YTdi
ZDBiYTNiMmY0ZTljNWQxYTRhMThhZmZhNDZmNmQ3NzU5ZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3NjcmlwdHMtcGFuZWwtZXhwZWN0ZWQudHh0CisrKyBiL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zY3JpcHRzLXBhbmVsLWV4cGVjdGVkLnR4dApA
QCAtMTAsMTUgKzEwLDYgQEAgRHVtcGluZyBTY3JpcHRzTmF2aWdhdG9yICdTY3JpcHRzJyB0YWI6
CiBEdW1waW5nIFNjcmlwdHNOYXZpZ2F0b3IgJ0NvbnRlbnQgc2NyaXB0cycgdGFiOgogU291cmNl
IHJlcXVlc3RlZCBmb3IgYmF6LmpzCiAKLVJ1bm5pbmc6IHRlc3RJbml0aWFsTG9hZFdpdGhDb21i
b0JveEZpbGVTZWxlY3RvcgotU291cmNlIHJlcXVlc3RlZCBmb3IgZm9vYmFyLmpzCi1EdW1wIGZp
bGVzIHNlbGVjdDoKLSAgICBiYXIuanMKLSAgICBiYXouanMKLSAgICBmb28uanMKLSAgICBmb29i
YXIuanMKLVNvdXJjZSByZXF1ZXN0ZWQgZm9yIGJhei5qcwotCiBSdW5uaW5nOiB0ZXN0UmVzZXQK
IFNvdXJjZSByZXF1ZXN0ZWQgZm9yIGJhei5qcwogRHVtcGluZyBTY3JpcHRzTmF2aWdhdG9yICdT
Y3JpcHRzJyB0YWI6CkBAIC00OCwxOSArMzksMyBAQCBEdW1waW5nIFNjcmlwdHNOYXZpZ2F0b3Ig
J1NjcmlwdHMnIHRhYjoKICAgZm9vLmpzCiBEdW1waW5nIFNjcmlwdHNOYXZpZ2F0b3IgJ0NvbnRl
bnQgc2NyaXB0cycgdGFiOgogCi1SdW5uaW5nOiB0ZXN0U291cmNlUmVwbGFjZWRXaXRoQ29tYm9C
b3hGaWxlU2VsZWN0b3IKLVNvdXJjZSByZXF1ZXN0ZWQgZm9yIGZvby5qcwotRHVtcGluZyBDb21i
b0JveEZpbGVTZWxlY3RvcjoKLSAgICBjb21waWxlZC5qcyhjb21waWxlZC5qcykKLSAgICBmb28u
anMoZm9vLmpzKQotRHVtcGluZyBDb21ib0JveEZpbGVTZWxlY3RvcjoKLSAgICBmb28uanMoZm9v
LmpzKQotICAgIHNvdXJjZTEuanMoc291cmNlMS5qcykKLSAgICBzb3VyY2UyLmpzKHNvdXJjZTIu
anMpCi1Tb3VyY2UgcmVxdWVzdGVkIGZvciBzb3VyY2UyLmpzCi1Tb3VyY2UgcmVxdWVzdGVkIGZv
ciBzb3VyY2UxLmpzCi1Tb3VyY2UgcmVxdWVzdGVkIGZvciBjb21waWxlZC5qcwotRHVtcGluZyBD
b21ib0JveEZpbGVTZWxlY3RvcjoKLSAgICBjb21waWxlZC5qcyhjb21waWxlZC5qcykKLSAgICBm
b28uanMoZm9vLmpzKQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdn
ZXIvc2NyaXB0cy1wYW5lbC5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3Nj
cmlwdHMtcGFuZWwuaHRtbAppbmRleCA5ZDkzOWQwMzkwZjljNzgzY2M0MDdjY2E0OTRmYWIwOTJk
YTg4YmUyLi44MTQ5MTlhOTgyMTA1ZjUxODYwMDYwYWQyZmFhZTMxZmE4Mzg3OTI0IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc2NyaXB0cy1wYW5lbC5odG1sCisr
KyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zY3JpcHRzLXBhbmVsLmh0bWwKQEAg
LTgwLDQyICs4MCw2IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICAgICAgbmV4dCgpOwogICAg
ICAgICB9LAogCi0gICAgICAgIGZ1bmN0aW9uIHRlc3RJbml0aWFsTG9hZFdpdGhDb21ib0JveEZp
bGVTZWxlY3RvcihuZXh0KQotICAgICAgICB7Ci0gICAgICAgICAgICB2YXIgbW9kZWwgPSBjcmVh
dGVEZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsTW9jaygpOwotICAgICAgICAgICAgdmFyIHVpU291
cmNlQ29kZSA9IGNyZWF0ZVVJU291Y2VDb2RlKCJmb29iYXIuanMiKTsKLSAgICAgICAgICAgIHZh
ciB1aVNvdXJjZUNvZGVGb28gPSBjcmVhdGVVSVNvdWNlQ29kZSgiZm9vLmpzIik7Ci0gICAgICAg
ICAgICB2YXIgdWlTb3VyY2VDb2RlQmFyID0gY3JlYXRlVUlTb3VjZUNvZGUoImJhci5qcyIpOwot
ICAgICAgICAgICAgdmFyIHVpU291cmNlQ29kZUJheiA9IGNyZWF0ZVVJU291Y2VDb2RlKCJiYXou
anMiKTsKLQotICAgICAgICAgICAgbW9kZWwuX2FkZFVJU291cmNlQ29kZSh1aVNvdXJjZUNvZGUp
OwotCi0gICAgICAgICAgICBXZWJJbnNwZWN0b3Iuc2V0dGluZ3MudXNlU2NyaXB0c05hdmlnYXRv
ci5zZXQoZmFsc2UpOwotICAgICAgICAgICAgdmFyIHBhbmVsID0gbmV3IFdlYkluc3BlY3Rvci5T
Y3JpcHRzUGFuZWwobW9kZWwpOwotICAgICAgICAgICAgV2ViSW5zcGVjdG9yLnNldHRpbmdzLnVz
ZVNjcmlwdHNOYXZpZ2F0b3Iuc2V0KHRydWUpOwotICAgICAgICAgICAgcGFuZWwuc2hvdygpOwot
Ci0gICAgICAgICAgICBtb2RlbC5fYWRkVUlTb3VyY2VDb2RlKHVpU291cmNlQ29kZUZvbyk7Ci0g
ICAgICAgICAgICBtb2RlbC5fYWRkVUlTb3VyY2VDb2RlKHVpU291cmNlQ29kZUJhcik7Ci0gICAg
ICAgICAgICBtb2RlbC5fYWRkVUlTb3VyY2VDb2RlKHVpU291cmNlQ29kZUJheik7Ci0KLSAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJEdW1wIGZpbGVzIHNlbGVjdDoiKTsKLSAg
ICAgICAgICAgIHZhciBzZWxlY3QgPSBwYW5lbC5fZmlsZVNlbGVjdG9yLl9maWxlc1NlbGVjdEVs
ZW1lbnQ7Ci0gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNlbGVjdC5sZW5ndGg7ICsr
aSkKLSAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdChzZWxlY3RbaV0udGV4
dC5yZXBsYWNlKC9cdTAwYTAvZywgIiAiKSk7Ci0KLSAgICAgICAgICAgIC8vIFNlbGVjdGVkIGZp
bGUgc2hvdWxkIGJlICJmb28uanMiLgotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRF
cXVhbHMoMywgc2VsZWN0LnNlbGVjdGVkSW5kZXgpOwotICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5hc3NlcnRFcXVhbHMoImZvb2Jhci5qcyIsIHNlbGVjdFszXS50ZXh0LnJlcGxhY2UoL1xzL2cs
ICIiKSk7Ci0KLSAgICAgICAgICAgIC8vIFNlbGVjdCAiYmF6LmpzIi4KLSAgICAgICAgICAgIHNl
bGVjdC5zZWxlY3RlZEluZGV4ID0gMTsKLSAgICAgICAgICAgIHBhbmVsLl9maWxlU2VsZWN0b3Iu
X2ZpbGVzU2VsZWN0Q2hhbmdlZCgpOwotICAgICAgICAgICAgcGFuZWwuZGV0YWNoKCk7Ci0KLSAg
ICAgICAgICAgIG5leHQoKTsKLSAgICAgICAgfSwKLQogICAgICAgICBmdW5jdGlvbiB0ZXN0UmVz
ZXQobmV4dCkKICAgICAgICAgewogICAgICAgICAgICAgdmFyIG1vZGVsID0gY3JlYXRlRGVidWdn
ZXJQcmVzZW50YXRpb25Nb2RlbE1vY2soKTsKQEAgLTE3Myw0MiArMTM3LDYgQEAgZnVuY3Rpb24g
dGVzdCgpCiAgICAgICAgICAgICAgICAgcGFuZWwuZGV0YWNoKCk7CiAgICAgICAgICAgICAgICAg
bmV4dCgpOwogICAgICAgICAgICAgfQotICAgICAgICB9LAotCi0gICAgICAgIGZ1bmN0aW9uIHRl
c3RTb3VyY2VSZXBsYWNlZFdpdGhDb21ib0JveEZpbGVTZWxlY3RvcihuZXh0KQotICAgICAgICB7
Ci0gICAgICAgICAgICB2YXIgbW9kZWwgPSBjcmVhdGVEZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVs
TW9jaygpOwotICAgICAgICAgICAgV2ViSW5zcGVjdG9yLnNldHRpbmdzLnVzZVNjcmlwdHNOYXZp
Z2F0b3Iuc2V0KGZhbHNlKTsKLSAgICAgICAgICAgIHZhciBwYW5lbCA9IG5ldyBXZWJJbnNwZWN0
b3IuU2NyaXB0c1BhbmVsKG1vZGVsKTsKLSAgICAgICAgICAgIFdlYkluc3BlY3Rvci5zZXR0aW5n
cy51c2VTY3JpcHRzTmF2aWdhdG9yLnNldCh0cnVlKTsKLSAgICAgICAgICAgIHBhbmVsLnNob3co
KTsKLQotICAgICAgICAgICAgdmFyIHVpU291cmNlQ29kZUZvbyA9IGNyZWF0ZVVJU291Y2VDb2Rl
KCJmb28uanMiKTsKLSAgICAgICAgICAgIG1vZGVsLl9hZGRVSVNvdXJjZUNvZGUodWlTb3VyY2VD
b2RlRm9vKTsKLSAgICAgICAgICAgIHZhciBjb21waWxlZFNvdXJjZUNvZGUgPSBjcmVhdGVVSVNv
dWNlQ29kZSgiY29tcGlsZWQuanMiKTsKLSAgICAgICAgICAgIG1vZGVsLl9hZGRVSVNvdXJjZUNv
ZGUoY29tcGlsZWRTb3VyY2VDb2RlKTsKLQotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5kdW1w
Q29tYm9Cb3hGaWxlU2VsZWN0b3IocGFuZWwuX2ZpbGVTZWxlY3Rvcik7Ci0KLSAgICAgICAgICAg
IC8vIFBsdWcgY29tcGlsZXIgc291cmNlIG1hcHBpbmcuCi0gICAgICAgICAgICB2YXIgc291cmNl
MVNvdXJjZUNvZGUgPSBjcmVhdGVVSVNvdWNlQ29kZSgic291cmNlMS5qcyIpOwotICAgICAgICAg
ICAgdmFyIHNvdXJjZTJTb3VyY2VDb2RlID0gY3JlYXRlVUlTb3VjZUNvZGUoInNvdXJjZTIuanMi
KTsKLSAgICAgICAgICAgIG1vZGVsLl9yZXBsYWNlVUlTb3VyY2VDb2RlcyhbY29tcGlsZWRTb3Vy
Y2VDb2RlXSwgW3NvdXJjZTFTb3VyY2VDb2RlLCBzb3VyY2UyU291cmNlQ29kZV0pOwotICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5kdW1wQ29tYm9Cb3hGaWxlU2VsZWN0b3IocGFuZWwuX2ZpbGVT
ZWxlY3Rvcik7Ci0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LnNob3dTY3JpcHRTb3VyY2VPblNj
cmlwdHNQYW5lbChwYW5lbCwgInNvdXJjZTIuanMiLCBzdGVwMik7Ci0KLSAgICAgICAgICAgIGZ1
bmN0aW9uIHN0ZXAyKCkgewotICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3Quc2hvd1Njcmlw
dFNvdXJjZU9uU2NyaXB0c1BhbmVsKHBhbmVsLCAic291cmNlMS5qcyIsIHN0ZXAzKTsKLSAgICAg
ICAgICAgIH0KLQotICAgICAgICAgICAgZnVuY3Rpb24gc3RlcDMoKSB7Ci0gICAgICAgICAgICAg
ICAgLy8gVW5wbHVnIGNvbXBpbGVyIHNvdXJjZSBtYXBwaW5nLgotICAgICAgICAgICAgICAgIG1v
ZGVsLl9yZXBsYWNlVUlTb3VyY2VDb2Rlcyhbc291cmNlMVNvdXJjZUNvZGUsIHNvdXJjZTJTb3Vy
Y2VDb2RlXSwgW2NvbXBpbGVkU291cmNlQ29kZV0pOwotICAgICAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QuZHVtcENvbWJvQm94RmlsZVNlbGVjdG9yKHBhbmVsLl9maWxlU2VsZWN0b3IpOwotCi0g
ICAgICAgICAgICAgICAgcGFuZWwuZGV0YWNoKCk7Ci0gICAgICAgICAgICAgICAgbmV4dCgpOwot
ICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgXSk7CiB9OwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3NjcmlwdHMtc29ydGluZy1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc2NyaXB0cy1zb3J0aW5nLWV4cGVjdGVkLnR4
dAppbmRleCAwMjMwY2Q2ZWQyNjUwMWY3Y2I1NzYzMTNiZGU5N2JmNGUzNjMyOTljLi5hOWYyYWRh
YjVkNTg1Njg1OTljZDI1ZTliMDM3MTBlZTZiOWJjOWViIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvZGVidWdnZXIvc2NyaXB0cy1zb3J0aW5nLWV4cGVjdGVkLnR4dAorKysgYi9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc2NyaXB0cy1zb3J0aW5nLWV4cGVjdGVkLnR4
dApAQCAtMiwzNCArMiw2IEBAIFRlc3RzIHNjcmlwdHMgc29ydGluZyBpbiB0aGUgc2NyaXB0cyBw
YW5lbC4KIAogCiBXZWJJbnNwZWN0b3Iuc2V0dGluZ3Muc2hvd1NjcmlwdEZvbGRlcnMgPSB0cnVl
Ci1EdW1waW5nIENvbWJvQm94RmlsZVNlbGVjdG9yOgotICAgICpOb24qVVJMKnBhdGgoKk5vbipV
UkwqcGF0aCkKLeKAlCBiYXIuY29tIOKAlAotL2Zvby9wYXRoCi0gICAgYmFyLmpzP2ZpbGU9YmFy
L3p6ei5qcyhodHRwOi8vYmFyLmNvbS9mb28vcGF0aC9iYXIuanM/ZmlsZT1iYXIvenp6LmpzKQot
ICAgIGZvby5qcz9maWxlPWJhci9hYWEuanMoaHR0cDovL2Jhci5jb20vZm9vL3BhdGgvZm9vLmpz
P2ZpbGU9YmFyL2FhYS5qcykKLeKAlCBmb28uY29tIOKAlAotICAgIGJsb2NrLmpzP2Jsb2NrPWZv
byhodHRwOi8vZm9vLmNvbS9ibG9jay5qcz9ibG9jaz1mb28pCi0gICAgZ2EuanMoaHR0cDovL2Zv
by5jb20vZ2EuanMpCi0gICAgbGVudGEuYmFuP3BnPTQ4ODMmaWZyPTEoaHR0cDovL2Zvby5jb20v
bGVudGEuYmFuP3BnPTQ4ODMmaWZyPTEpCi0gICAgbGVudGEuYmFuP3BnPTUzMDkmaWZyPTEoaHR0
cDovL2Zvby5jb20vbGVudGEuYmFuP3BnPTUzMDkmaWZyPTEpCi0gICAgdG9wMTAwLmpjbj84MDY3
NChodHRwOi8vZm9vLmNvbS90b3AxMDAuamNuPzgwNjc0KQotL19qcy9wcm9kdWN0aW9uCi0gICAg
bW90b3IuanM/MTMwODkyNzQzMihodHRwOi8vZm9vLmNvbS9fanMvcHJvZHVjdGlvbi9tb3Rvci5q
cz8xMzA4OTI3NDMyKQotL2Zvby9wYXRoCi0gICAgYmFyLmpzP2ZpbGU9YmFyL3p6ei5qcyhodHRw
Oi8vZm9vLmNvbS9mb28vcGF0aC9iYXIuanM/ZmlsZT1iYXIvenp6LmpzKQotICAgIGZvby5qcz9m
aWxlPWJhci9hYWEuanMoaHR0cDovL2Zvby5jb20vZm9vL3BhdGgvZm9vLmpzP2ZpbGU9YmFyL2Fh
YS5qcykKLS9pCi0gICAgeGdlbWl1cy5qcyhodHRwOi8vZm9vLmNvbS9pL3hnZW1pdXMuanMpCi0v
aS9qcwotICAgIGpxdWVyeS0xLjUuMS5taW4uanMoaHR0cDovL2Zvby5jb20vaS9qcy9qcXVlcnkt
MS41LjEubWluLmpzKQotICAgIGpxdWVyeS5jb29raWUuanMoaHR0cDovL2Zvby5jb20vaS9qcy9q
cXVlcnkuY29va2llLmpzKQot4oCUIENvbnRlbnQgc2NyaXB0cyDigJQKLSAgICAqTm9uKlVSTCpw
YXRoKCpOb24qVVJMKnBhdGgpCi1leHRlbnNpb24tbmFtZQotICAgIGJhci5qcyhleHRlbnNpb24t
c2NoZW1hOi8vZXh0ZW5zaW9uLW5hbWUvYmFyLmpzKQotZXh0ZW5zaW9uLW5hbWUvZm9sZGVyCi0g
ICAgYmF6LmpzKGV4dGVuc2lvbi1zY2hlbWE6Ly9leHRlbnNpb24tbmFtZS9mb2xkZXIvYmF6Lmpz
KQogRHVtcGluZyBTY3JpcHRzTmF2aWdhdG9yICdTY3JpcHRzJyB0YWI6CiAgIGJhci5jb20KICAg
ICBmb28vcGF0aApAQCAtNjAsMjUgKzMyLDYgQEAgRHVtcGluZyBTY3JpcHRzTmF2aWdhdG9yICdD
b250ZW50IHNjcmlwdHMnIHRhYjoKICAgKk5vbipVUkwqcGF0aAogCiBXZWJJbnNwZWN0b3Iuc2V0
dGluZ3Muc2hvd1NjcmlwdEZvbGRlcnMgPSBmYWxzZQotRHVtcGluZyBDb21ib0JveEZpbGVTZWxl
Y3RvcjoKLSpOb24qVVJMKnBhdGgoKk5vbipVUkwqcGF0aCkKLWJhci5qcz9maWxlPWJhci96enou
anMoaHR0cDovL2Zvby5jb20vZm9vL3BhdGgvYmFyLmpzP2ZpbGU9YmFyL3p6ei5qcykKLWJhci5q
cz9maWxlPWJhci96enouanMoaHR0cDovL2Jhci5jb20vZm9vL3BhdGgvYmFyLmpzP2ZpbGU9YmFy
L3p6ei5qcykKLWJsb2NrLmpzP2Jsb2NrPWZvbyhodHRwOi8vZm9vLmNvbS9ibG9jay5qcz9ibG9j
az1mb28pCi1mb28uanM/ZmlsZT1iYXIvYWFhLmpzKGh0dHA6Ly9mb28uY29tL2Zvby9wYXRoL2Zv
by5qcz9maWxlPWJhci9hYWEuanMpCi1mb28uanM/ZmlsZT1iYXIvYWFhLmpzKGh0dHA6Ly9iYXIu
Y29tL2Zvby9wYXRoL2Zvby5qcz9maWxlPWJhci9hYWEuanMpCi1nYS5qcyhodHRwOi8vZm9vLmNv
bS9nYS5qcykKLWpxdWVyeS0xLjUuMS5taW4uanMoaHR0cDovL2Zvby5jb20vaS9qcy9qcXVlcnkt
MS41LjEubWluLmpzKQotanF1ZXJ5LmNvb2tpZS5qcyhodHRwOi8vZm9vLmNvbS9pL2pzL2pxdWVy
eS5jb29raWUuanMpCi1sZW50YS5iYW4/cGc9NDg4MyZpZnI9MShodHRwOi8vZm9vLmNvbS9sZW50
YS5iYW4/cGc9NDg4MyZpZnI9MSkKLWxlbnRhLmJhbj9wZz01MzA5Jmlmcj0xKGh0dHA6Ly9mb28u
Y29tL2xlbnRhLmJhbj9wZz01MzA5Jmlmcj0xKQotbW90b3IuanM/MTMwODkyNzQzMihodHRwOi8v
Zm9vLmNvbS9fanMvcHJvZHVjdGlvbi9tb3Rvci5qcz8xMzA4OTI3NDMyKQotdG9wMTAwLmpjbj84
MDY3NChodHRwOi8vZm9vLmNvbS90b3AxMDAuamNuPzgwNjc0KQoteGdlbWl1cy5qcyhodHRwOi8v
Zm9vLmNvbS9pL3hnZW1pdXMuanMpCi3igJQgQ29udGVudCBzY3JpcHRzIOKAlAotKk5vbipVUkwq
cGF0aCgqTm9uKlVSTCpwYXRoKQotZXh0ZW5zaW9uLW5hbWUvYmFyLmpzKGV4dGVuc2lvbi1zY2hl
bWE6Ly9leHRlbnNpb24tbmFtZS9iYXIuanMpCi1leHRlbnNpb24tbmFtZS9mb2xkZXIvYmF6Lmpz
KGV4dGVuc2lvbi1zY2hlbWE6Ly9leHRlbnNpb24tbmFtZS9mb2xkZXIvYmF6LmpzKQogRHVtcGlu
ZyBTY3JpcHRzTmF2aWdhdG9yICdTY3JpcHRzJyB0YWI6CiAgICpOb24qVVJMKnBhdGgKICAgYmFy
LmpzP2ZpbGU9YmFyL3p6ei5qcwpAQCAtMTAwLDM0ICs1Myw2IEBAIER1bXBpbmcgU2NyaXB0c05h
dmlnYXRvciAnQ29udGVudCBzY3JpcHRzJyB0YWI6CiAgIGJhei5qcwogCiBXZWJJbnNwZWN0b3Iu
c2V0dGluZ3Muc2hvd1NjcmlwdEZvbGRlcnMgPSB0cnVlCi1EdW1waW5nIENvbWJvQm94RmlsZVNl
bGVjdG9yOgotICAgICpOb24qVVJMKnBhdGgoKk5vbipVUkwqcGF0aCkKLeKAlCBiYXIuY29tIOKA
lAotL2Zvby9wYXRoCi0gICAgYmFyLmpzP2ZpbGU9YmFyL3p6ei5qcyhodHRwOi8vYmFyLmNvbS9m
b28vcGF0aC9iYXIuanM/ZmlsZT1iYXIvenp6LmpzKQotICAgIGZvby5qcz9maWxlPWJhci9hYWEu
anMoaHR0cDovL2Jhci5jb20vZm9vL3BhdGgvZm9vLmpzP2ZpbGU9YmFyL2FhYS5qcykKLeKAlCBm
b28uY29tIOKAlAotICAgIGJsb2NrLmpzP2Jsb2NrPWZvbyhodHRwOi8vZm9vLmNvbS9ibG9jay5q
cz9ibG9jaz1mb28pCi0gICAgZ2EuanMoaHR0cDovL2Zvby5jb20vZ2EuanMpCi0gICAgbGVudGEu
YmFuP3BnPTQ4ODMmaWZyPTEoaHR0cDovL2Zvby5jb20vbGVudGEuYmFuP3BnPTQ4ODMmaWZyPTEp
Ci0gICAgbGVudGEuYmFuP3BnPTUzMDkmaWZyPTEoaHR0cDovL2Zvby5jb20vbGVudGEuYmFuP3Bn
PTUzMDkmaWZyPTEpCi0gICAgdG9wMTAwLmpjbj84MDY3NChodHRwOi8vZm9vLmNvbS90b3AxMDAu
amNuPzgwNjc0KQotL19qcy9wcm9kdWN0aW9uCi0gICAgbW90b3IuanM/MTMwODkyNzQzMihodHRw
Oi8vZm9vLmNvbS9fanMvcHJvZHVjdGlvbi9tb3Rvci5qcz8xMzA4OTI3NDMyKQotL2Zvby9wYXRo
Ci0gICAgYmFyLmpzP2ZpbGU9YmFyL3p6ei5qcyhodHRwOi8vZm9vLmNvbS9mb28vcGF0aC9iYXIu
anM/ZmlsZT1iYXIvenp6LmpzKQotICAgIGZvby5qcz9maWxlPWJhci9hYWEuanMoaHR0cDovL2Zv
by5jb20vZm9vL3BhdGgvZm9vLmpzP2ZpbGU9YmFyL2FhYS5qcykKLS9pCi0gICAgeGdlbWl1cy5q
cyhodHRwOi8vZm9vLmNvbS9pL3hnZW1pdXMuanMpCi0vaS9qcwotICAgIGpxdWVyeS0xLjUuMS5t
aW4uanMoaHR0cDovL2Zvby5jb20vaS9qcy9qcXVlcnktMS41LjEubWluLmpzKQotICAgIGpxdWVy
eS5jb29raWUuanMoaHR0cDovL2Zvby5jb20vaS9qcy9qcXVlcnkuY29va2llLmpzKQot4oCUIENv
bnRlbnQgc2NyaXB0cyDigJQKLSAgICAqTm9uKlVSTCpwYXRoKCpOb24qVVJMKnBhdGgpCi1leHRl
bnNpb24tbmFtZQotICAgIGJhci5qcyhleHRlbnNpb24tc2NoZW1hOi8vZXh0ZW5zaW9uLW5hbWUv
YmFyLmpzKQotZXh0ZW5zaW9uLW5hbWUvZm9sZGVyCi0gICAgYmF6LmpzKGV4dGVuc2lvbi1zY2hl
bWE6Ly9leHRlbnNpb24tbmFtZS9mb2xkZXIvYmF6LmpzKQogRHVtcGluZyBTY3JpcHRzTmF2aWdh
dG9yICdTY3JpcHRzJyB0YWI6CiAgIGJhci5jb20KICAgICBmb28vcGF0aApkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3NjcmlwdHMtc29ydGluZy5odG1sIGIvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3NjcmlwdHMtc29ydGluZy5odG1sCmluZGV4IGVl
NDEwOTY5NWY5NGNmZDIyYzg1ZThmZTY4NTA2YWY1OGZjYmIyMTcuLmQzYzg2YzkwZTYyNWJmODBj
MWI0Yzc1M2ExYzRkNWYwMzg4ZThjNmMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rv
ci9kZWJ1Z2dlci9zY3JpcHRzLXNvcnRpbmcuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvZGVidWdnZXIvc2NyaXB0cy1zb3J0aW5nLmh0bWwKQEAgLTEwLDcgKzEwLDYgQEAgZnVuY3Rp
b24gdGVzdCgpCiAgICAgV2ViSW5zcGVjdG9yLl9pc01hYyA9IGZhbHNlOwogCiAgICAgdmFyIG5h
dmlnYXRvckZpbGVTZWxlY3RvciA9IG5ldyBXZWJJbnNwZWN0b3IuU2NyaXB0c05hdmlnYXRvcigp
OwotICAgIHZhciBjb21ib0JveEZpbGVTZWxlY3RvciA9IG5ldyBXZWJJbnNwZWN0b3IuU2NyaXB0
c1BhbmVsLkNvbWJvQm94RmlsZVNlbGVjdG9yKCk7CiAKICAgICB2YXIgbmV4dElkID0gMTsKICAg
ICBmdW5jdGlvbiBhZGRVSVNvdXJjZUNvZGUodXJsLCBpc0NvbnRlbnRTY3JpcHQpCkBAIC0xOCw3
ICsxNyw2IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICB2YXIgdWlTb3VyY2VDb2RlID0gbmV3
IFdlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGUobmV4dElkKyssIHVybCwgbnVsbCwgbnVsbCk7CiAg
ICAgICAgIHVpU291cmNlQ29kZS5pc0NvbnRlbnRTY3JpcHQgPSBpc0NvbnRlbnRTY3JpcHQ7CiAg
ICAgICAgIG5hdmlnYXRvckZpbGVTZWxlY3Rvci5hZGRVSVNvdXJjZUNvZGUodWlTb3VyY2VDb2Rl
KTsKLSAgICAgICAgY29tYm9Cb3hGaWxlU2VsZWN0b3IuYWRkVUlTb3VyY2VDb2RlKHVpU291cmNl
Q29kZSk7CiAgICAgfQogCiAgICAgZnVuY3Rpb24gZHVtcFNjcmlwdHNMaXN0KCkKQEAgLTI2LDcg
KzI0LDYgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0
KCIiKTsKICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIldlYkluc3BlY3Rvci5zZXR0
aW5ncy5zaG93U2NyaXB0Rm9sZGVycyA9ICIgKyBXZWJJbnNwZWN0b3Iuc2V0dGluZ3Muc2hvd1Nj
cmlwdEZvbGRlcnMuZ2V0KCkpOwogCi0gICAgICAgIEluc3BlY3RvclRlc3QuZHVtcENvbWJvQm94
RmlsZVNlbGVjdG9yKGNvbWJvQm94RmlsZVNlbGVjdG9yKTsKICAgICAgICAgSW5zcGVjdG9yVGVz
dC5kdW1wU2NyaXB0c05hdmlnYXRvcihuYXZpZ2F0b3JGaWxlU2VsZWN0b3IpOwogICAgIH0KIApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3NvdXJjZS1mcmFtZS1j
b3VudC5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3NvdXJjZS1mcmFtZS1j
b3VudC5odG1sCmluZGV4IDc3ZDkyMjVhZDY5YmU5NmI4NGZhYTE3ODY5MWFhYmYyN2UzZTgyZDEu
LjA4ODQxZmZlZjFlZWE2N2FlMTg4MGMzYjcxMGQxMTdkYzk0MzM5MzUgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zb3VyY2UtZnJhbWUtY291bnQuaHRtbAorKysg
Yi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc291cmNlLWZyYW1lLWNvdW50Lmh0bWwK
QEAgLTE0LDcgKzE0LDcgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgIGZ1bmN0aW9uIHRlc3RT
b3VyY2VGcmFtZXNDb3VudChuZXh0KQogICAgICAgICB7CiAgICAgICAgICAgICB2YXIgcGFuZWwg
PSBXZWJJbnNwZWN0b3IucGFuZWxzLnNjcmlwdHM7Ci0gICAgICAgICAgICB2YXIgc2VsZWN0ID0g
cGFuZWwuX2ZpbGVTZWxlY3Rvci5fZmlsZXNTZWxlY3RFbGVtZW50OworICAgICAgICAgICAgdmFy
IHNlbGVjdCA9IHBhbmVsLl9uYXZpZ2F0b3IuX2ZpbGVzU2VsZWN0RWxlbWVudDsKICAgICAgICAg
ICAgIHZhciBzb3VyY2VGcmFtZUNvdW50ID0gMDsKIAogICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5zaG93U2NyaXB0U291cmNlKCJzb3VyY2UtZnJhbWUtY291bnQuaHRtbCIsIHN0ZXAyKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>136199</attachid>
            <date>2012-04-09 02:22:35 -0700</date>
            <delta_ts>2012-04-09 02:37:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-83460-20120409132233.patch</filename>
            <type>text/plain</type>
            <size>57331</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEzNTU4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTQ2ODk3ZTAzMDk1MWU2
MzA1ODJlM2EwODE5NTYwZDE1ODBjNjM0YS4uYWVjM2NiOTQ0NWM5ZDQzMjZiZGRkYWIzYTEwZTA4
YmE3Mzk4MTY3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDEyLTA0LTA5ICBQYXZl
bCBGZWxkbWFuICA8cGZlbGRtYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IHJlbW92ZSBDb21ib0JveEZpbGVTZWxlY3RvciBhbmQgU2luZ2xlRmlsZUVkaXRvckNvbnRh
aW5lci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgz
NDYwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2Ug
YXJlIG5vdyB1c2luZyBzY3JpcHRzIG5hdmlnYXRvciBhbmQgdGFiYmVkIGVkaXRvciBjb250YWlu
ZXIsIHJlbW92aW5nIHRoZSBvbGQgY29tcG9uZW50cy4KKyAgICAgICAgVGhpcyBjaGFuZ2UgcmVt
b3ZlcyB0aGUgY29ycmVzcG9uZGluZyBjbGFzc2VzIGFuZCB0aGUgYWJzdHJhY3Rpb25zIHVzZWQg
ZHVyaW5nIHRoZQorICAgICAgICB0cmFuc2l0aW9uIHBlcmlvZC4KKworICAgICAgICAqIEVuZ2xp
c2gubHByb2ovbG9jYWxpemVkU3RyaW5ncy5qczoKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQt
ZW5kL1NjcmlwdHNOYXZpZ2F0b3IuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2NyaXB0c05h
dmlnYXRvci5wcm90b3R5cGUuX3NjcmlwdFNlbGVjdGVkKToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
ZnJvbnQtZW5kL1NjcmlwdHNQYW5lbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TY3JpcHRz
UGFuZWwuZ2V0IHRoaXMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5wcm90
b3R5cGUuZ2V0IGRlZmF1bHRGb2N1c2VkRWxlbWVudCk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
U2NyaXB0c1BhbmVsLnByb3RvdHlwZS5fYWRkVUlTb3VyY2VDb2RlKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5TY3JpcHRzUGFuZWwucHJvdG90eXBlLnNldFNjcmlwdFNvdXJjZUlzRGlydHkpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5wcm90b3R5cGUuX3Jlc2V0KToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwucHJvdG90eXBlLl9zaG93RmlsZSk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsLnByb3RvdHlwZS5fdWlTb3VyY2VDb2Rl
UmVwbGFjZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5wcm90b3R5cGUu
X2VkaXRvckNsb3NlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsLnByb3Rv
dHlwZS5fc2NyaXB0U2VsZWN0ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5l
bC5wcm90b3R5cGUuX2hpZGVQaW5uZWROYXZpZ2F0b3IpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LlNjcmlwdHNQYW5lbC5wcm90b3R5cGUuc2V0IF9waW5OYXZpZ2F0b3IpOgorICAgICAgICAqIGlu
c3BlY3Rvci9mcm9udC1lbmQvU2V0dGluZ3NTY3JlZW4uanM6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuU2V0dGluZ3NTY3JlZW4pOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvVGFiYmVk
RWRpdG9yQ29udGFpbmVyLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRhYmJlZEVkaXRvckNv
bnRhaW5lckRlbGVnYXRlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UYWJiZWRFZGl0b3JDb250
YWluZXJEZWxlZ2F0ZS5wcm90b3R5cGUudmlld0ZvckZpbGUpOgorICAgICAgICAoZ2V0IFdlYklu
c3BlY3Rvcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGFiYmVkRWRpdG9yQ29udGFpbmVyLnBy
b3RvdHlwZS5fdGFiQ2xvc2VkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL3Njcmlw
dHNQYW5lbC5jc3M6CisKIDIwMTItMDQtMDYgIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogbW92ZSBicmVha3BvaW50cyBhY3Rp
dmUgc3RhdGUgZnJvbSBzY3JpcHRzIHBhbmVsIHRvIGRlYnVnZ2VyIHByZXNlbnRhdGlvbiBtb2Rl
bC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0VuZ2xpc2gubHByb2ovbG9jYWxpemVkU3Ry
aW5ncy5qcyBiL1NvdXJjZS9XZWJDb3JlL0VuZ2xpc2gubHByb2ovbG9jYWxpemVkU3RyaW5ncy5q
cwppbmRleCAzZDM1NGY3M2ZiNTVkM2FiYWRlMzE2N2Q0MTM3MzdjMmJiNTJlODNmLi43ZTgxZDM3
N2UyYjI4Yjk0MTUzZjViMDFjYTM4NmY4OTc1NWJmOTc2IDEwMDY0NApHSVQgYmluYXJ5IHBhdGNo
CmRlbHRhIDIwCmNjbVo0VmtFUGAmJUxlQilvN2I8RVkxO25SZktpblgwQzQzQWlVMHJyCgpkZWx0
YSAzODQKemNtWnFxJCtHQWwlTGVCKXMoQjJsMz42RnwzPD9hejQ5Tl5kNDREaUNVfHRiV3lxRj1N
cCVmXlZKZWhCbXZ+Q0dRCnoyMmYwYWZqQXU+NEQ9YGVVKFVyMilpcWg2VDJ2Q1JgOSFMT24hRE0w
alk8PUxEQTApQEMjMzxNb3hfa2lUfHRqZwp6KUtZO1Y1JE1KZ3BsfUowbD5+JlRVPj1DZjFkOFBZ
ZVdVPk5ZZCVtRk5KUz50TT9rVVpBOU5WU0MkQiFzSFRpckMKVyZ0JUBDOVBIRktIQC1AMWQlUFpf
RGp4dnZKNiVLbwoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvU2NyaXB0c05hdmlnYXRvci5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvU2NyaXB0c05hdmlnYXRvci5qcwppbmRleCBkNjRmZDg5ZGU2ZGE0YzQ4YTc5MmExZDM2YThj
N2M1NTNhMjcyZDFkLi4yYmRlN2MwYjI1YzkxNjQ5MGQ2ZmQ0ODE0N2EyZjY1YjY4ZmQ3NDNiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NjcmlwdHNOYXZp
Z2F0b3IuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRz
TmF2aWdhdG9yLmpzCkBAIC0yNyw3ICsyNyw2IEBACiAgKi8KIAogLyoqCi0gKiBAaW1wbGVtZW50
cyB7V2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5GaWxlU2VsZWN0b3J9CiAgKiBAZXh0ZW5kcyB7
V2ViSW5zcGVjdG9yLk9iamVjdH0KICAqIEBjb25zdHJ1Y3RvcgogICovCkBAIC04MCw2ICs3OSwx
MSBAQCBXZWJJbnNwZWN0b3IuU2NyaXB0c05hdmlnYXRvciA9IGZ1bmN0aW9uKCkKICAgICBXZWJJ
bnNwZWN0b3Iuc2V0dGluZ3Muc2hvd1NjcmlwdEZvbGRlcnMuYWRkQ2hhbmdlTGlzdGVuZXIodGhp
cy5fc2hvd1NjcmlwdEZvbGRlcnNTZXR0aW5nQ2hhbmdlZC5iaW5kKHRoaXMpKTsKIH0KIAorCitX
ZWJJbnNwZWN0b3IuU2NyaXB0c05hdmlnYXRvci5FdmVudHMgPSB7CisgICAgU2NyaXB0U2VsZWN0
ZWQ6ICJTY3JpcHRTZWxlY3RlZCIKK30KKwogV2ViSW5zcGVjdG9yLlNjcmlwdHNOYXZpZ2F0b3Iu
U2NyaXB0c1RhYiA9ICJzY3JpcHRzIjsKIFdlYkluc3BlY3Rvci5TY3JpcHRzTmF2aWdhdG9yLkNv
bnRlbnRTY3JpcHRzVGFiID0gImNvbnRlbnRTY3JpcHRzIjsKIFdlYkluc3BlY3Rvci5TY3JpcHRz
TmF2aWdhdG9yLlNuaXBwZXRzVGFiID0gInNuaXBwZXRzIjsKQEAgLTIzNiw5ICsyNDAsOCBAQCBX
ZWJJbnNwZWN0b3IuU2NyaXB0c05hdmlnYXRvci5wcm90b3R5cGUgPSB7CiAgICAgX3NjcmlwdFNl
bGVjdGVkOiBmdW5jdGlvbih1aVNvdXJjZUNvZGUsIGZvY3VzU291cmNlKQogICAgIHsKICAgICAg
ICAgdGhpcy5fbGFzdFNlbGVjdGVkVUlTb3VyY2VDb2RlID0gdWlTb3VyY2VDb2RlOwotICAgICAg
ICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVs
LkZpbGVTZWxlY3Rvci5FdmVudHMuRmlsZVNlbGVjdGVkLCB1aVNvdXJjZUNvZGUpOwotICAgICAg
ICBpZiAoZm9jdXNTb3VyY2UpCi0gICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3Rl
bmVycyhXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsLkZpbGVTZWxlY3Rvci5FdmVudHMuUmVsZWFz
ZWRGb2N1c0FmdGVyU2VsZWN0aW9uLCB1aVNvdXJjZUNvZGUpOworICAgICAgICB2YXIgZGF0YSA9
IHsgdWlTb3VyY2VDb2RlOiB1aVNvdXJjZUNvZGUsIGZvY3VzU291cmNlOiBmb2N1c1NvdXJjZX07
CisgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5TY3Jp
cHRzTmF2aWdhdG9yLkV2ZW50cy5TY3JpcHRTZWxlY3RlZCwgZGF0YSk7CiAgICAgfSwKIAogICAg
IC8qKgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TY3Jp
cHRzUGFuZWwuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NjcmlwdHNQ
YW5lbC5qcwppbmRleCAwMzhjOTI1ZDYzNzgyMTU3YTgxY2UyNGFhODU5NjYxY2I0MTBjZTE4Li5j
YWViMWNhMGJhMGNjMjYxNmZjYmYwZGZjNjA3ZTdhOGNkZWQ2NDExIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NjcmlwdHNQYW5lbC5qcworKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NjcmlwdHNQYW5lbC5qcwpAQCAtMjYsNyAr
MjYsNyBAQAogCiAvKioKICAqIEBjb25zdHJ1Y3RvcgotICogQGltcGxlbWVudHMge1dlYkluc3Bl
Y3Rvci5FZGl0b3JDb250YWluZXJEZWxlZ2F0ZX0KKyAqIEBpbXBsZW1lbnRzIHtXZWJJbnNwZWN0
b3IuVGFiYmVkRWRpdG9yQ29udGFpbmVyRGVsZWdhdGV9CiAgKiBAZXh0ZW5kcyB7V2ViSW5zcGVj
dG9yLlBhbmVsfQogICovCiBXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsID0gZnVuY3Rpb24ocHJl
c2VudGF0aW9uTW9kZWwpCkBAIC02MSw0NCArNjEsMzMgQEAgV2ViSW5zcGVjdG9yLlNjcmlwdHNQ
YW5lbCA9IGZ1bmN0aW9uKHByZXNlbnRhdGlvbk1vZGVsKQogICAgIHRoaXMuZGVidWdTaWRlYmFy
UmVzaXplV2lkZ2V0RWxlbWVudC5pZCA9ICJzY3JpcHRzLWRlYnVnLXNpZGViYXItcmVzaXplci13
aWRnZXQiOwogICAgIHRoaXMuc3BsaXRWaWV3Lmluc3RhbGxSZXNpemVyKHRoaXMuZGVidWdTaWRl
YmFyUmVzaXplV2lkZ2V0RWxlbWVudCk7CiAKLSAgICBXZWJJbnNwZWN0b3Iuc2V0dGluZ3MudXNl
U2NyaXB0c05hdmlnYXRvciA9IFdlYkluc3BlY3Rvci5zZXR0aW5ncy5jcmVhdGVTZXR0aW5nKCJ1
c2VTY3JpcHRzTmF2aWdhdG9yIiwgdHJ1ZSk7Ci0gICAgaWYgKFdlYkluc3BlY3Rvci5zZXR0aW5n
cy51c2VTY3JpcHRzTmF2aWdhdG9yLmdldCgpKSB7Ci0gICAgICAgIGNvbnN0IGluaXRpYWxOYXZp
Z2F0b3JXaWR0aCA9IDIyNTsKLSAgICAgICAgY29uc3QgbWluaW1hbFZpZXdzQ29udGFpbmVyV2lk
dGhQZXJjZW50ID0gNTA7Ci0gICAgICAgIHRoaXMuZWRpdG9yVmlldyA9IG5ldyBXZWJJbnNwZWN0
b3IuU3BsaXRWaWV3KFdlYkluc3BlY3Rvci5TcGxpdFZpZXcuU2lkZWJhclBvc2l0aW9uLkxlZnQs
ICJzY3JpcHRzUGFuZWxOYXZpZ2F0b3JTaWRlYmFyV2lkdGgiLCBpbml0aWFsTmF2aWdhdG9yV2lk
dGgpOwotICAgICAgICB0aGlzLmVkaXRvclZpZXcuZWxlbWVudC5pZCA9ICJzY3JpcHRzLWVkaXRv
ci12aWV3IjsKLSAgICAgICAgdGhpcy5lZGl0b3JWaWV3LmVsZW1lbnQudGFiSW5kZXggPSAwOwot
Ci0gICAgICAgIHRoaXMuZWRpdG9yVmlldy5taW5pbWFsU2lkZWJhcldpZHRoID0gUHJlZmVyZW5j
ZXMubWluU2NyaXB0c1NpZGViYXJXaWR0aDsKLSAgICAgICAgdGhpcy5lZGl0b3JWaWV3Lm1pbmlt
YWxNYWluV2lkdGhQZXJjZW50ID0gbWluaW1hbFZpZXdzQ29udGFpbmVyV2lkdGhQZXJjZW50Owot
ICAgICAgICB0aGlzLmVkaXRvclZpZXcuc2hvdyh0aGlzLnNwbGl0Vmlldy5tYWluRWxlbWVudCk7
Ci0KLSAgICAgICAgdGhpcy5fbmF2aWdhdG9yID0gbmV3IFdlYkluc3BlY3Rvci5TY3JpcHRzTmF2
aWdhdG9yKCk7Ci0gICAgICAgIHRoaXMuX25hdmlnYXRvclZpZXcgPSB0aGlzLl9uYXZpZ2F0b3Iu
dmlldzsKLSAgICAgICAgdGhpcy5fZmlsZVNlbGVjdG9yID0gdGhpcy5fbmF2aWdhdG9yOwotICAg
ICAgICB0aGlzLl9maWxlU2VsZWN0b3Iuc2hvdyh0aGlzLmVkaXRvclZpZXcuc2lkZWJhckVsZW1l
bnQpOwotCi0gICAgICAgIHRoaXMuX3RhYmJlZEVkaXRvckNvbnRhaW5lciA9IG5ldyBXZWJJbnNw
ZWN0b3IuVGFiYmVkRWRpdG9yQ29udGFpbmVyKHRoaXMpOwotICAgICAgICB0aGlzLl9lZGl0b3JD
b250YWluZXIgPSB0aGlzLl90YWJiZWRFZGl0b3JDb250YWluZXI7Ci0gICAgICAgIHRoaXMuX2Vk
aXRvckNvbnRhaW5lci5zaG93KHRoaXMuZWRpdG9yVmlldy5tYWluRWxlbWVudCk7Ci0gICAgICAg
IFdlYkluc3BlY3Rvci5PcGVuUmVzb3VyY2VEaWFsb2cuaW5zdGFsbCh0aGlzLCB0aGlzLl9wcmVz
ZW50YXRpb25Nb2RlbCwgdGhpcy5lZGl0b3JWaWV3Lm1haW5FbGVtZW50KTsKLQotICAgICAgICB0
aGlzLl9jcmVhdGVOYXZpZ2F0b3JDb250cm9scygpOwotICAgICAgICBXZWJJbnNwZWN0b3Iuc2V0
dGluZ3MubmF2aWdhdG9ySGlkZGVuID0gV2ViSW5zcGVjdG9yLnNldHRpbmdzLmNyZWF0ZVNldHRp
bmcoIm5hdmlnYXRvckhpZGRlbiIsIHRydWUpOwotICAgICAgICBpZiAoV2ViSW5zcGVjdG9yLnNl
dHRpbmdzLm5hdmlnYXRvckhpZGRlbi5nZXQoKSkKLSAgICAgICAgICAgIHRoaXMuX3RvZ2dsZU5h
dmlnYXRvcigpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIHRoaXMuX2ZpbGVTZWxlY3RvciA9IG5l
dyBXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsLkNvbWJvQm94RmlsZVNlbGVjdG9yKCk7Ci0gICAg
ICAgIHRoaXMuX2ZpbGVTZWxlY3Rvci5zaG93KHRoaXMuc3BsaXRWaWV3Lm1haW5FbGVtZW50KTsK
LQotICAgICAgICB0aGlzLl9lZGl0b3JDb250YWluZXIgPSBuZXcgV2ViSW5zcGVjdG9yLlNjcmlw
dHNQYW5lbC5TaW5nbGVGaWxlRWRpdG9yQ29udGFpbmVyKHRoaXMpOwotICAgICAgICB0aGlzLl9l
ZGl0b3JDb250YWluZXIuc2hvdyh0aGlzLnNwbGl0Vmlldy5tYWluRWxlbWVudCk7Ci0gICAgICAg
IFdlYkluc3BlY3Rvci5PcGVuUmVzb3VyY2VEaWFsb2cuaW5zdGFsbCh0aGlzLCB0aGlzLl9wcmVz
ZW50YXRpb25Nb2RlbCwgdGhpcy5zcGxpdFZpZXcubWFpbkVsZW1lbnQpOwotICAgIH0KLSAgICB0
aGlzLl9maWxlU2VsZWN0b3IuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuU2NyaXB0c1Bh
bmVsLkZpbGVTZWxlY3Rvci5FdmVudHMuRmlsZVNlbGVjdGVkLCB0aGlzLl9maWxlU2VsZWN0ZWQs
IHRoaXMpOwotICAgIHRoaXMuX2ZpbGVTZWxlY3Rvci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3Bl
Y3Rvci5TY3JpcHRzUGFuZWwuRmlsZVNlbGVjdG9yLkV2ZW50cy5SZWxlYXNlZEZvY3VzQWZ0ZXJT
ZWxlY3Rpb24sIHRoaXMuX2ZpbGVTZWxlY3RvclJlbGVhc2VkRm9jdXMsIHRoaXMpOwotICAgIHRo
aXMuX2VkaXRvckNvbnRhaW5lci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5FZGl0b3JD
b250YWluZXIuRXZlbnRzLkVkaXRvclNlbGVjdGVkLCB0aGlzLl9lZGl0b3JTZWxlY3RlZCwgdGhp
cyk7Ci0gICAgdGhpcy5fZWRpdG9yQ29udGFpbmVyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVj
dG9yLkVkaXRvckNvbnRhaW5lci5FdmVudHMuRWRpdG9yQ2xvc2VkLCB0aGlzLl9lZGl0b3JDbG9z
ZWQsIHRoaXMpOworICAgIC8vIENyZWF0ZSBzY3JpcHRzIG5hdmlnYXRvcgorICAgIGNvbnN0IGlu
aXRpYWxOYXZpZ2F0b3JXaWR0aCA9IDIyNTsKKyAgICBjb25zdCBtaW5pbWFsVmlld3NDb250YWlu
ZXJXaWR0aFBlcmNlbnQgPSA1MDsKKyAgICB0aGlzLmVkaXRvclZpZXcgPSBuZXcgV2ViSW5zcGVj
dG9yLlNwbGl0VmlldyhXZWJJbnNwZWN0b3IuU3BsaXRWaWV3LlNpZGViYXJQb3NpdGlvbi5MZWZ0
LCAic2NyaXB0c1BhbmVsTmF2aWdhdG9yU2lkZWJhcldpZHRoIiwgaW5pdGlhbE5hdmlnYXRvcldp
ZHRoKTsKKyAgICB0aGlzLmVkaXRvclZpZXcuZWxlbWVudC5pZCA9ICJzY3JpcHRzLWVkaXRvci12
aWV3IjsKKyAgICB0aGlzLmVkaXRvclZpZXcuZWxlbWVudC50YWJJbmRleCA9IDA7CisKKyAgICB0
aGlzLmVkaXRvclZpZXcubWluaW1hbFNpZGViYXJXaWR0aCA9IFByZWZlcmVuY2VzLm1pblNjcmlw
dHNTaWRlYmFyV2lkdGg7CisgICAgdGhpcy5lZGl0b3JWaWV3Lm1pbmltYWxNYWluV2lkdGhQZXJj
ZW50ID0gbWluaW1hbFZpZXdzQ29udGFpbmVyV2lkdGhQZXJjZW50OworICAgIHRoaXMuZWRpdG9y
Vmlldy5zaG93KHRoaXMuc3BsaXRWaWV3Lm1haW5FbGVtZW50KTsKKworICAgIHRoaXMuX25hdmln
YXRvciA9IG5ldyBXZWJJbnNwZWN0b3IuU2NyaXB0c05hdmlnYXRvcigpOworICAgIHRoaXMuX25h
dmlnYXRvclZpZXcgPSB0aGlzLl9uYXZpZ2F0b3IudmlldzsKKyAgICB0aGlzLl9uYXZpZ2F0b3Iu
c2hvdyh0aGlzLmVkaXRvclZpZXcuc2lkZWJhckVsZW1lbnQpOworCisgICAgdGhpcy5fZWRpdG9y
Q29udGFpbmVyID0gbmV3IFdlYkluc3BlY3Rvci5UYWJiZWRFZGl0b3JDb250YWluZXIodGhpcyk7
CisgICAgdGhpcy5fZWRpdG9yQ29udGFpbmVyLnNob3codGhpcy5lZGl0b3JWaWV3Lm1haW5FbGVt
ZW50KTsKKyAgICBXZWJJbnNwZWN0b3IuT3BlblJlc291cmNlRGlhbG9nLmluc3RhbGwodGhpcywg
dGhpcy5fcHJlc2VudGF0aW9uTW9kZWwsIHRoaXMuZWRpdG9yVmlldy5tYWluRWxlbWVudCk7CisK
KyAgICB0aGlzLl9jcmVhdGVOYXZpZ2F0b3JDb250cm9scygpOworICAgIFdlYkluc3BlY3Rvci5z
ZXR0aW5ncy5uYXZpZ2F0b3JIaWRkZW4gPSBXZWJJbnNwZWN0b3Iuc2V0dGluZ3MuY3JlYXRlU2V0
dGluZygibmF2aWdhdG9ySGlkZGVuIiwgdHJ1ZSk7CisgICAgaWYgKFdlYkluc3BlY3Rvci5zZXR0
aW5ncy5uYXZpZ2F0b3JIaWRkZW4uZ2V0KCkpCisgICAgICAgIHRoaXMuX3RvZ2dsZU5hdmlnYXRv
cigpOworCisgICAgdGhpcy5fbmF2aWdhdG9yLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9y
LlNjcmlwdHNOYXZpZ2F0b3IuRXZlbnRzLlNjcmlwdFNlbGVjdGVkLCB0aGlzLl9zY3JpcHRTZWxl
Y3RlZCwgdGhpcyk7CisgICAgdGhpcy5fZWRpdG9yQ29udGFpbmVyLmFkZEV2ZW50TGlzdGVuZXIo
V2ViSW5zcGVjdG9yLlRhYmJlZEVkaXRvckNvbnRhaW5lci5FdmVudHMuRWRpdG9yU2VsZWN0ZWQs
IHRoaXMuX2VkaXRvclNlbGVjdGVkLCB0aGlzKTsKKyAgICB0aGlzLl9lZGl0b3JDb250YWluZXIu
YWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuVGFiYmVkRWRpdG9yQ29udGFpbmVyLkV2ZW50
cy5FZGl0b3JDbG9zZWQsIHRoaXMuX2VkaXRvckNsb3NlZCwgdGhpcyk7CiAKICAgICB0aGlzLnNw
bGl0Vmlldy5tYWluRWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLmRlYnVnU2lkZWJhclJlc2l6ZVdp
ZGdldEVsZW1lbnQpOwogCkBAIC0yMTEsNyArMjAwLDcgQEAgV2ViSW5zcGVjdG9yLlNjcmlwdHNQ
YW5lbC5wcm90b3R5cGUgPSB7CiAKICAgICBnZXQgZGVmYXVsdEZvY3VzZWRFbGVtZW50KCkKICAg
ICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9maWxlU2VsZWN0b3IuZGVmYXVsdEZvY3VzZWRFbGVt
ZW50OworICAgICAgICByZXR1cm4gdGhpcy5fbmF2aWdhdG9yLmRlZmF1bHRGb2N1c2VkRWxlbWVu
dDsKICAgICB9LAogCiAgICAgZ2V0IHBhdXNlZCgpCkBAIC0yNzksNyArMjY4LDcgQEAgV2ViSW5z
cGVjdG9yLlNjcmlwdHNQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICovCiAgICAgX2FkZFVJU291
cmNlQ29kZTogZnVuY3Rpb24odWlTb3VyY2VDb2RlKQogICAgIHsKLSAgICAgICAgdGhpcy5fZmls
ZVNlbGVjdG9yLmFkZFVJU291cmNlQ29kZSh1aVNvdXJjZUNvZGUpOworICAgICAgICB0aGlzLl9u
YXZpZ2F0b3IuYWRkVUlTb3VyY2VDb2RlKHVpU291cmNlQ29kZSk7CiAgICAgICAgIHRoaXMuX2Vk
aXRvckNvbnRhaW5lci51aVNvdXJjZUNvZGVBZGRlZCh1aVNvdXJjZUNvZGUpOwogICAgIH0sCiAK
QEAgLTMxNCw3ICszMDMsNyBAQCBXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsLnByb3RvdHlwZSA9
IHsKICAgICAgKi8KICAgICBzZXRTY3JpcHRTb3VyY2VJc0RpcnR5OiBmdW5jdGlvbih1aVNvdXJj
ZUNvZGUsIGlzRGlydHkpCiAgICAgewotICAgICAgICB0aGlzLl9maWxlU2VsZWN0b3Iuc2V0U2Ny
aXB0U291cmNlSXNEaXJ0eSh1aVNvdXJjZUNvZGUsIGlzRGlydHkpOworICAgICAgICB0aGlzLl9u
YXZpZ2F0b3Iuc2V0U2NyaXB0U291cmNlSXNEaXJ0eSh1aVNvdXJjZUNvZGUsIGlzRGlydHkpOwog
ICAgICAgICB0aGlzLl9lZGl0b3JDb250YWluZXIuc2V0RmlsZUlzRGlydHkodWlTb3VyY2VDb2Rl
LCBpc0RpcnR5KTsKICAgICB9LAogCkBAIC00MTgsNyArNDA3LDcgQEAgV2ViSW5zcGVjdG9yLlNj
cmlwdHNQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX2RlYnVnZ2VyUmVzdW1lZCgp
OwogCiAgICAgICAgIGRlbGV0ZSB0aGlzLl9jdXJyZW50VUlTb3VyY2VDb2RlOwotICAgICAgICB0
aGlzLl9maWxlU2VsZWN0b3IucmVzZXQoKTsKKyAgICAgICAgdGhpcy5fbmF2aWdhdG9yLnJlc2V0
KCk7CiAgICAgICAgIHRoaXMuX2VkaXRvckNvbnRhaW5lci5yZXNldCgpOwogICAgICAgICB0aGlz
Ll91cGRhdGVTY3JpcHRWaWV3U3RhdHVzQmFySXRlbXMoKTsKIApAQCAtNDg2LDcgKzQ3NSw3IEBA
IFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwucHJvdG90eXBlID0gewogICAgICAqLwogICAgIF9z
aG93RmlsZTogZnVuY3Rpb24odWlTb3VyY2VDb2RlKQogICAgIHsKLSAgICAgICAgaWYgKCF0aGlz
Ll9maWxlU2VsZWN0b3IuaXNTY3JpcHRTb3VyY2VBZGRlZCh1aVNvdXJjZUNvZGUpKQorICAgICAg
ICBpZiAoIXRoaXMuX25hdmlnYXRvci5pc1NjcmlwdFNvdXJjZUFkZGVkKHVpU291cmNlQ29kZSkp
CiAgICAgICAgICAgICByZXR1cm4gbnVsbDsKIAogICAgICAgICB2YXIgc291cmNlRnJhbWUgPSB0
aGlzLl9nZXRPckNyZWF0ZVNvdXJjZUZyYW1lKHVpU291cmNlQ29kZSk7CkBAIC00OTQsNyArNDgz
LDcgQEAgV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAg
ICByZXR1cm4gc291cmNlRnJhbWU7CiAgICAgICAgIHRoaXMuX2N1cnJlbnRVSVNvdXJjZUNvZGUg
PSB1aVNvdXJjZUNvZGU7CiAKLSAgICAgICAgdGhpcy5fZmlsZVNlbGVjdG9yLnJldmVhbFVJU291
cmNlQ29kZSh1aVNvdXJjZUNvZGUpOworICAgICAgICB0aGlzLl9uYXZpZ2F0b3IucmV2ZWFsVUlT
b3VyY2VDb2RlKHVpU291cmNlQ29kZSk7CiAgICAgICAgIHRoaXMuX2VkaXRvckNvbnRhaW5lci5z
aG93RmlsZSh1aVNvdXJjZUNvZGUpOwogICAgICAgICB0aGlzLl91cGRhdGVTY3JpcHRWaWV3U3Rh
dHVzQmFySXRlbXMoKTsKIApAQCAtNTY4LDcgKzU1Nyw3IEBAIFdlYkluc3BlY3Rvci5TY3JpcHRz
UGFuZWwucHJvdG90eXBlID0gewogICAgICAgICB2YXIgb2xkVUlTb3VyY2VDb2RlTGlzdCA9IC8q
KiBAdHlwZSB7QXJyYXkuPFdlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGU+fSAqLyBldmVudC5kYXRh
Lm9sZFVJU291cmNlQ29kZUxpc3Q7CiAgICAgICAgIHZhciB1aVNvdXJjZUNvZGVMaXN0ID0gLyoq
IEB0eXBlIHtBcnJheS48V2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZT59ICovIGV2ZW50LmRhdGEu
dWlTb3VyY2VDb2RlTGlzdDsKIAotICAgICAgICB0aGlzLl9maWxlU2VsZWN0b3IucmVwbGFjZVVJ
U291cmNlQ29kZXMob2xkVUlTb3VyY2VDb2RlTGlzdCwgdWlTb3VyY2VDb2RlTGlzdCk7CisgICAg
ICAgIHRoaXMuX25hdmlnYXRvci5yZXBsYWNlVUlTb3VyY2VDb2RlcyhvbGRVSVNvdXJjZUNvZGVM
aXN0LCB1aVNvdXJjZUNvZGVMaXN0KTsKICAgICAgICAgdGhpcy5fZWRpdG9yQ29udGFpbmVyLnJl
cGxhY2VGaWxlcyhvbGRVSVNvdXJjZUNvZGVMaXN0LCB1aVNvdXJjZUNvZGVMaXN0KTsKICAgICAg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCBvbGRVSVNvdXJjZUNvZGVMaXN0Lmxlbmd0aDsgKytpKQog
ICAgICAgICAgICAgdGhpcy5fcmVtb3ZlU291cmNlRnJhbWUob2xkVUlTb3VyY2VDb2RlTGlzdFtp
XSk7CkBAIC02MzIsMTAgKzYyMSw3IEBAIFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwucHJvdG90
eXBlID0gewogICAgICAgICBpZiAodGhpcy5fY3VycmVudFVJU291cmNlQ29kZSA9PT0gdWlTb3Vy
Y2VDb2RlKQogICAgICAgICAgICAgZGVsZXRlIHRoaXMuX2N1cnJlbnRVSVNvdXJjZUNvZGU7CiAK
LSAgICAgICAgLy8gV2UgZG9uJ3QgbmVlZCB0byB1cGRhdGUgZmlsZSBzZWxlY3RvciBoZXJlIHJl
Z2FyZGxlc3Mgb2Ygd2hldGhlciB1c2VTY3JpcHRzTmF2aWdhdG9yIGlzIHNldCBvciBub3Q6Ci0g
ICAgICAgIC8vIFNpbmdsZUZpbGVFZGl0b3JDb250YWluZXIgbmV2ZXIgZGlzcGF0Y2hlcyBFZGl0
b3JDbG9zZWQsIHNvIG5vIG5lZWQgdG8gdXBkYXRlIENvbWJvQm94RmlsZVNlbGVjdG9yOwogICAg
ICAgICAvLyBTY3JpcHRzTmF2aWdhdG9yIGRvZXMgbm90IG5lZWQgdG8gdXBkYXRlIG9uIEVkaXRv
ckNsb3NlZC4KLQogICAgICAgICB0aGlzLl91cGRhdGVTY3JpcHRWaWV3U3RhdHVzQmFySXRlbXMo
KTsKICAgICB9LAogCkBAIC02NDYsMTggKzYzMiwxMiBAQCBXZWJJbnNwZWN0b3IuU2NyaXB0c1Bh
bmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5faGlkZU5hdmlnYXRvck92ZXJsYXkoKTsK
ICAgICB9LAogCi0gICAgX2ZpbGVTZWxlY3RlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgX3Njcmlw
dFNlbGVjdGVkOiBmdW5jdGlvbihldmVudCkKICAgICB7Ci0gICAgICAgIHZhciB1aVNvdXJjZUNv
ZGUgPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGV9ICovIGV2ZW50LmRhdGE7
Ci0gICAgICAgIHRoaXMuX3Nob3dGaWxlKHVpU291cmNlQ29kZSk7CisgICAgICAgIHZhciB1aVNv
dXJjZUNvZGUgPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGV9ICovIGV2ZW50
LmRhdGEudWlTb3VyY2VDb2RlOworICAgICAgICB2YXIgc291cmNlRnJhbWUgPSB0aGlzLl9zaG93
RmlsZSh1aVNvdXJjZUNvZGUpOwogICAgICAgICB0aGlzLl9oaWRlTmF2aWdhdG9yT3ZlcmxheSgp
OwotICAgIH0sCi0KLSAgICBfZmlsZVNlbGVjdG9yUmVsZWFzZWRGb2N1czogZnVuY3Rpb24oZXZl
bnQpCi0gICAgewotICAgICAgICB2YXIgdWlTb3VyY2VDb2RlID0gLyoqIEB0eXBlIHtXZWJJbnNw
ZWN0b3IuVUlTb3VyY2VDb2RlfSAqLyBldmVudC5kYXRhOwotICAgICAgICB2YXIgc291cmNlRnJh
bWUgPSB0aGlzLl9zb3VyY2VGcmFtZXNCeVVJU291cmNlQ29kZS5nZXQodWlTb3VyY2VDb2RlKTsK
LSAgICAgICAgaWYgKHNvdXJjZUZyYW1lKQorICAgICAgICBpZiAoc291cmNlRnJhbWUgJiYgZXZl
bnQuZGF0YS5mb2N1c1NvdXJjZSkKICAgICAgICAgICAgIHNvdXJjZUZyYW1lLmZvY3VzKCk7CiAg
ICAgfSwKIApAQCAtOTcwLDcgKzk1MCw3IEBAIFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwucHJv
dG90eXBlID0gewogICAgICAgICB0aGlzLl9uYXZpZ2F0b3JIaWRkZW4gPSB0cnVlOwogICAgICAg
ICB0aGlzLl9uYXZpZ2F0b3JTaG93SGlkZUJ1dHRvbi5yZW1vdmVTdHlsZUNsYXNzKCJ0b2dnbGVk
LW9uIik7CiAgICAgICAgIHRoaXMuX25hdmlnYXRvclNob3dIaWRlQnV0dG9uLnRpdGxlID0gV2Vi
SW5zcGVjdG9yLlVJU3RyaW5nKCJTaG93IHNjcmlwdHMgbmF2aWdhdG9yIik7Ci0gICAgICAgIHRo
aXMuX3RhYmJlZEVkaXRvckNvbnRhaW5lci5lbGVtZW50LmFkZFN0eWxlQ2xhc3MoIm5hdmlnYXRv
ci1oaWRkZW4iKTsKKyAgICAgICAgdGhpcy5fZWRpdG9yQ29udGFpbmVyLmVsZW1lbnQuYWRkU3R5
bGVDbGFzcygibmF2aWdhdG9yLWhpZGRlbiIpOwogICAgICAgICB0aGlzLl9uYXZpZ2F0b3JTaWRl
YmFyUmVzaXplV2lkZ2V0RWxlbWVudC5hZGRTdHlsZUNsYXNzKCJoaWRkZW4iKTsKIAogICAgICAg
ICB0aGlzLl9uYXZpZ2F0b3JQaW5CdXR0b24ucmVtb3ZlU3R5bGVDbGFzcygiaGlkZGVuIik7CkBA
IC05ODksNyArOTY5LDcgQEAgV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5wcm90b3R5cGUgPSB7
CiAgICAgICAgIHRoaXMuX25hdmlnYXRvclNob3dIaWRlQnV0dG9uLmFkZFN0eWxlQ2xhc3MoInRv
Z2dsZWQtb24iKTsKICAgICAgICAgdGhpcy5fbmF2aWdhdG9yU2hvd0hpZGVCdXR0b24udGl0bGUg
PSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkhpZGUgc2NyaXB0cyBuYXZpZ2F0b3IiKTsKIAotICAg
ICAgICB0aGlzLl90YWJiZWRFZGl0b3JDb250YWluZXIuZWxlbWVudC5yZW1vdmVTdHlsZUNsYXNz
KCJuYXZpZ2F0b3ItaGlkZGVuIik7CisgICAgICAgIHRoaXMuX2VkaXRvckNvbnRhaW5lci5lbGVt
ZW50LnJlbW92ZVN0eWxlQ2xhc3MoIm5hdmlnYXRvci1oaWRkZW4iKTsKICAgICAgICAgdGhpcy5f
bmF2aWdhdG9yU2lkZWJhclJlc2l6ZVdpZGdldEVsZW1lbnQucmVtb3ZlU3R5bGVDbGFzcygiaGlk
ZGVuIik7CiAKICAgICAgICAgdGhpcy5lZGl0b3JWaWV3LnNob3dTaWRlYmFyRWxlbWVudCgpOwpA
QCAtMTE0OSw1ODAgKzExMjksMyBAQCBXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsLnByb3RvdHlw
ZSA9IHsKIH0KIAogV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5wcm90b3R5cGUuX19wcm90b19f
ID0gV2ViSW5zcGVjdG9yLlBhbmVsLnByb3RvdHlwZTsKLQotLyoqCi0gKiBAaW50ZXJmYWNlCi0g
Ki8KLVdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwuRmlsZVNlbGVjdG9yID0gZnVuY3Rpb24oKSB7
IH0KLQotV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5GaWxlU2VsZWN0b3IuRXZlbnRzID0gewot
ICAgIEZpbGVTZWxlY3RlZDogIkZpbGVTZWxlY3RlZCIsCi0gICAgUmVsZWFzZWRGb2N1c0FmdGVy
U2VsZWN0aW9uOiAiUmVsZWFzZWRGb2N1c0FmdGVyU2VsZWN0aW9uIgotfQotCi1XZWJJbnNwZWN0
b3IuU2NyaXB0c1BhbmVsLkZpbGVTZWxlY3Rvci5wcm90b3R5cGUgPSB7Ci0gICAgLyoqCi0gICAg
ICogQHR5cGUge0VsZW1lbnR9Ci0gICAgICovCi0gICAgZ2V0IGRlZmF1bHRGb2N1c2VkRWxlbWVu
dCgpIHsgfSwKLQotICAgIC8qKgotICAgICAqIEBwYXJhbSB7RWxlbWVudH0gZWxlbWVudAotICAg
ICAqLwotICAgIHNob3c6IGZ1bmN0aW9uKGVsZW1lbnQpIHsgfSwKLQotICAgIC8qKgotICAgICAq
IEBwYXJhbSB7V2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZX0gdWlTb3VyY2VDb2RlCi0gICAgICov
Ci0gICAgYWRkVUlTb3VyY2VDb2RlOiBmdW5jdGlvbih1aVNvdXJjZUNvZGUpIHsgfSwKLQotICAg
IC8qKgotICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZX0gdWlTb3VyY2VD
b2RlCi0gICAgICogQHJldHVybiB7Ym9vbGVhbn0KLSAgICAgKi8KLSAgICBpc1NjcmlwdFNvdXJj
ZUFkZGVkOiBmdW5jdGlvbih1aVNvdXJjZUNvZGUpIHsgfSwKLQotICAgIC8qKgotICAgICAqIEBw
YXJhbSB7V2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZX0gdWlTb3VyY2VDb2RlCi0gICAgICovCi0g
ICAgcmV2ZWFsVUlTb3VyY2VDb2RlOiBmdW5jdGlvbih1aVNvdXJjZUNvZGUpIHsgfSwKLQotICAg
IC8qKgotICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZX0gdWlTb3VyY2VD
b2RlCi0gICAgICogQHBhcmFtIHtib29sZWFufSBpc0RpcnR5Ci0gICAgICovCi0gICAgc2V0U2Ny
aXB0U291cmNlSXNEaXJ0eTogZnVuY3Rpb24odWlTb3VyY2VDb2RlLCBpc0RpcnR5KSB7IH0sCi0K
LSAgICAvKioKLSAgICAgKiBAcGFyYW0ge0FycmF5LjxXZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2Rl
Pn0gb2xkVUlTb3VyY2VDb2RlTGlzdAotICAgICAqIEBwYXJhbSB7QXJyYXkuPFdlYkluc3BlY3Rv
ci5VSVNvdXJjZUNvZGU+fSB1aVNvdXJjZUNvZGVMaXN0Ci0gICAgICovCi0gICAgcmVwbGFjZVVJ
U291cmNlQ29kZXM6IGZ1bmN0aW9uKG9sZFVJU291cmNlQ29kZUxpc3QsIHVpU291cmNlQ29kZUxp
c3QpIHsgfSwKLQotICAgIHJlc2V0OiBmdW5jdGlvbigpIHsgfQotfQotCi0vKioKLSAqIEBpbnRl
cmZhY2UKLSAqLwotV2ViSW5zcGVjdG9yLkVkaXRvckNvbnRhaW5lciA9IGZ1bmN0aW9uKCkgeyB9
Ci0KLVdlYkluc3BlY3Rvci5FZGl0b3JDb250YWluZXIuRXZlbnRzID0gewotICAgIEVkaXRvclNl
bGVjdGVkOiAiRWRpdG9yU2VsZWN0ZWQiLAotICAgIEVkaXRvckNsb3NlZDogIkVkaXRvckNsb3Nl
ZCIKLX0KLQotV2ViSW5zcGVjdG9yLkVkaXRvckNvbnRhaW5lci5wcm90b3R5cGUgPSB7Ci0gICAg
LyoqCi0gICAgICogQHR5cGUge1dlYkluc3BlY3Rvci5Tb3VyY2VGcmFtZX0KLSAgICAgKi8KLSAg
ICBnZXQgdmlzaWJsZVZpZXcoKSB7IH0sCi0KLSAgICAvKioKLSAgICAgKiBAcGFyYW0ge0VsZW1l
bnR9IGVsZW1lbnQKLSAgICAgKi8KLSAgICBzaG93OiBmdW5jdGlvbihlbGVtZW50KSB7IH0sCi0K
LSAgICAvKioKLSAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGV9IHVpU291
cmNlQ29kZQotICAgICAqLwotICAgIHNob3dGaWxlOiBmdW5jdGlvbih1aVNvdXJjZUNvZGUpIHsg
fSwKLQotICAgIC8qKgotICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZX0g
dWlTb3VyY2VDb2RlCi0gICAgICogQHBhcmFtIHtib29sZWFufSBpc0RpcnR5Ci0gICAgICovCi0g
ICAgc2V0RmlsZUlzRGlydHk6IGZ1bmN0aW9uKHVpU291cmNlQ29kZSwgaXNEaXJ0eSkgeyB9LAot
Ci0gICAgLyoqCi0gICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2RlfSB1aVNv
dXJjZUNvZGUKLSAgICAgKi8KLSAgICB1aVNvdXJjZUNvZGVBZGRlZDogZnVuY3Rpb24odWlTb3Vy
Y2VDb2RlKSB7IH0sCi0KLSAgICAvKioKLSAgICAgKiBAcGFyYW0ge0FycmF5LjxXZWJJbnNwZWN0
b3IuVUlTb3VyY2VDb2RlPn0gb2xkVUlTb3VyY2VDb2RlTGlzdAotICAgICAqIEBwYXJhbSB7QXJy
YXkuPFdlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGU+fSB1aVNvdXJjZUNvZGVMaXN0Ci0gICAgICov
Ci0gICAgcmVwbGFjZUZpbGVzOiBmdW5jdGlvbihvbGRVSVNvdXJjZUNvZGVMaXN0LCB1aVNvdXJj
ZUNvZGVMaXN0KSB7IH0sCi0KLSAgICByZXNldDogZnVuY3Rpb24oKSB7IH0KLX0KLQotLyoqCi0g
KiBAaW50ZXJmYWNlCi0gKi8KLVdlYkluc3BlY3Rvci5FZGl0b3JDb250YWluZXJEZWxlZ2F0ZSA9
IGZ1bmN0aW9uKCkgeyB9Ci0KLVdlYkluc3BlY3Rvci5FZGl0b3JDb250YWluZXJEZWxlZ2F0ZS5w
cm90b3R5cGUgPSB7Ci0gICAgLyoqCi0gICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuVUlTb3Vy
Y2VDb2RlfSB1aVNvdXJjZUNvZGUKLSAgICAgKiBAcmV0dXJuIHtXZWJJbnNwZWN0b3IuU291cmNl
RnJhbWV9Ci0gICAgICovCi0gICAgdmlld0ZvckZpbGU6IGZ1bmN0aW9uKHVpU291cmNlQ29kZSkg
eyB9Ci19Ci0KLS8qKgotICogQGltcGxlbWVudHMge1dlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwu
RmlsZVNlbGVjdG9yfQotICogQGV4dGVuZHMge1dlYkluc3BlY3Rvci5PYmplY3R9Ci0gKiBAY29u
c3RydWN0b3IKLSAqLwotV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5Db21ib0JveEZpbGVTZWxl
Y3RvciA9IGZ1bmN0aW9uKCkKLXsKLSAgICBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7
Ci0gICAgdGhpcy5lZGl0b3JUb29sYmFyID0gdGhpcy5fY3JlYXRlRWRpdG9yVG9vbGJhcigpOwot
Ci0gICAgV2ViSW5zcGVjdG9yLnNldHRpbmdzLnNob3dTY3JpcHRGb2xkZXJzLmFkZENoYW5nZUxp
c3RlbmVyKHRoaXMuX3Nob3dTY3JpcHRGb2xkZXJzU2V0dGluZ0NoYW5nZWQuYmluZCh0aGlzKSk7
Ci0KLSAgICB0aGlzLl9iYWNrRm9yd2FyZExpc3QgPSBbXTsKLX0KLQotV2ViSW5zcGVjdG9yLlNj
cmlwdHNQYW5lbC5Db21ib0JveEZpbGVTZWxlY3Rvci5wcm90b3R5cGUgPSB7Ci0gICAgZ2V0IGRl
ZmF1bHRGb2N1c2VkRWxlbWVudCgpCi0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5fZmlsZXNT
ZWxlY3RFbGVtZW50OwotICAgIH0sCi0KLSAgICAvKioKLSAgICAgKiBAcGFyYW0ge0VsZW1lbnR9
IGVsZW1lbnQKLSAgICAgKi8KLSAgICBzaG93OiBmdW5jdGlvbihlbGVtZW50KQotICAgIHsKLSAg
ICAgICAgZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLmVkaXRvclRvb2xiYXIpOwotICAgIH0sCi0K
LSAgICAvKioKLSAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGV9IHVpU291
cmNlQ29kZQotICAgICAqLwotICAgIGFkZFVJU291cmNlQ29kZTogZnVuY3Rpb24odWlTb3VyY2VD
b2RlKQotICAgIHsKLSAgICAgICAgaWYgKHVpU291cmNlQ29kZS5fb3B0aW9uKQotICAgICAgICAg
ICAgcmV0dXJuOwotCi0gICAgICAgIHRoaXMuX2FkZE9wdGlvblRvRmlsZXNTZWxlY3QodWlTb3Vy
Y2VDb2RlKTsKLSAgICB9LAotCi0gICAgLyoqCi0gICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3Iu
VUlTb3VyY2VDb2RlfSB1aVNvdXJjZUNvZGUKLSAgICAgKiBAcmV0dXJuIHtib29sZWFufQotICAg
ICAqLwotICAgIGlzU2NyaXB0U291cmNlQWRkZWQ6IGZ1bmN0aW9uKHVpU291cmNlQ29kZSkKLSAg
ICB7Ci0gICAgICAgIHJldHVybiAhIXVpU291cmNlQ29kZS5fb3B0aW9uOwotICAgIH0sCi0KLSAg
ICAvKioKLSAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGV9IHVpU291cmNl
Q29kZQotICAgICAqLwotICAgIHJldmVhbFVJU291cmNlQ29kZTogZnVuY3Rpb24odWlTb3VyY2VD
b2RlKQotICAgIHsKLSAgICAgICAgaWYgKHRoaXMuX2ZpbGVzU2VsZWN0RWxlbWVudC5zZWxlY3Rl
ZEluZGV4ID09PSB1aVNvdXJjZUNvZGUuX29wdGlvbi5pbmRleCkKLSAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgdGhpcy5faW5uZXJSZXZlYWxVSVNvdXJjZUNvZGUodWlTb3VyY2VDb2RlLCB0
cnVlKTsKLSAgICB9LAotCi0gICAgLyoqCi0gICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuVUlT
b3VyY2VDb2RlfSB1aVNvdXJjZUNvZGUKLSAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IGFkZFRvSGlz
dG9yeQotICAgICAqLwotICAgIF9pbm5lclJldmVhbFVJU291cmNlQ29kZTogZnVuY3Rpb24odWlT
b3VyY2VDb2RlLCBhZGRUb0hpc3RvcnkpCi0gICAgewotICAgICAgICBpZiAoIXVpU291cmNlQ29k
ZS5fb3B0aW9uKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGlmIChhZGRUb0hpc3Rv
cnkpCi0gICAgICAgICAgICB0aGlzLl9hZGRUb0hpc3RvcnkodWlTb3VyY2VDb2RlKTsKLQotICAg
ICAgICB0aGlzLl91cGRhdGVCYWNrQW5kRm9yd2FyZEJ1dHRvbnMoKTsKLSAgICAgICAgdGhpcy5f
ZmlsZXNTZWxlY3RFbGVtZW50LnNlbGVjdGVkSW5kZXggPSB1aVNvdXJjZUNvZGUuX29wdGlvbi5p
bmRleDsKLSAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9y
LlNjcmlwdHNQYW5lbC5GaWxlU2VsZWN0b3IuRXZlbnRzLkZpbGVTZWxlY3RlZCwgdWlTb3VyY2VD
b2RlKTsKLSAgICB9LAotCi0gICAgLyoqCi0gICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuVUlT
b3VyY2VDb2RlfSB1aVNvdXJjZUNvZGUKLSAgICAgKi8KLSAgICBfYWRkVG9IaXN0b3J5OiBmdW5j
dGlvbih1aVNvdXJjZUNvZGUpCi0gICAgewotICAgICAgICB2YXIgb2xkSW5kZXggPSB0aGlzLl9j
dXJyZW50QmFja0ZvcndhcmRJbmRleDsKLSAgICAgICAgaWYgKG9sZEluZGV4ID49IDApCi0gICAg
ICAgICAgICB0aGlzLl9iYWNrRm9yd2FyZExpc3Quc3BsaWNlKG9sZEluZGV4ICsgMSwgdGhpcy5f
YmFja0ZvcndhcmRMaXN0Lmxlbmd0aCAtIG9sZEluZGV4KTsKLQotICAgICAgICAvLyBDaGVjayBm
b3IgYSBwcmV2aW91cyBlbnRyeSBvZiB0aGUgc2FtZSBvYmplY3QgaW4gX2JhY2tGb3J3YXJkTGlz
dC4gSWYgb25lIGlzIGZvdW5kLCByZW1vdmUgaXQuCi0gICAgICAgIHZhciBwcmV2aW91c0VudHJ5
SW5kZXggPSB0aGlzLl9iYWNrRm9yd2FyZExpc3QuaW5kZXhPZih1aVNvdXJjZUNvZGUpOwotICAg
ICAgICBpZiAocHJldmlvdXNFbnRyeUluZGV4ICE9PSAtMSkKLSAgICAgICAgICAgIHRoaXMuX2Jh
Y2tGb3J3YXJkTGlzdC5zcGxpY2UocHJldmlvdXNFbnRyeUluZGV4LCAxKTsKLQotICAgICAgICB0
aGlzLl9iYWNrRm9yd2FyZExpc3QucHVzaCh1aVNvdXJjZUNvZGUpOwotICAgICAgICB0aGlzLl9j
dXJyZW50QmFja0ZvcndhcmRJbmRleCA9IHRoaXMuX2JhY2tGb3J3YXJkTGlzdC5sZW5ndGggLSAx
OwotICAgIH0sCi0KLSAgICAvKioKLSAgICAgKiBAcGFyYW0ge0FycmF5LjxXZWJJbnNwZWN0b3Iu
VUlTb3VyY2VDb2RlPn0gb2xkVUlTb3VyY2VDb2RlTGlzdAotICAgICAqIEBwYXJhbSB7QXJyYXku
PFdlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGU+fSB1aVNvdXJjZUNvZGVMaXN0Ci0gICAgICovCi0g
ICAgcmVwbGFjZVVJU291cmNlQ29kZXM6IGZ1bmN0aW9uKG9sZFVJU291cmNlQ29kZUxpc3QsIHVp
U291cmNlQ29kZUxpc3QpCi0gICAgewotICAgICAgICB2YXIgc2VsZWN0ZWQgPSBmYWxzZTsKLSAg
ICAgICAgdmFyIGFkZGVkID0gZmFsc2U7Ci0gICAgICAgIHZhciBzZWxlY3RlZE9wdGlvbiA9IHRo
aXMuX2ZpbGVzU2VsZWN0RWxlbWVudFt0aGlzLl9maWxlc1NlbGVjdEVsZW1lbnQuc2VsZWN0ZWRJ
bmRleF07Ci0gICAgICAgIHZhciBzZWxlY3RlZFVJU291cmNlQ29kZSA9IHNlbGVjdGVkT3B0aW9u
ID8gc2VsZWN0ZWRPcHRpb24uX3VpU291cmNlQ29kZSA6IG51bGw7Ci0gICAgICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgb2xkVUlTb3VyY2VDb2RlTGlzdC5sZW5ndGg7ICsraSkgewotICAgICAgICAg
ICAgdmFyIHVpU291cmNlQ29kZSA9IG9sZFVJU291cmNlQ29kZUxpc3RbaV07Ci0gICAgICAgICAg
ICB2YXIgb3B0aW9uID0gdWlTb3VyY2VDb2RlLl9vcHRpb247Ci0gICAgICAgICAgICBpZiAoIW9w
dGlvbikKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIGFkZGVkID0gdHJ1
ZTsKLQotICAgICAgICAgICAgLy8gRklYTUU6IGZpbmQgb3V0IHdoeSB3ZSBhcmUgZ2V0dGluZyBo
ZXJlIHdpdGggb3B0aW9uIGRldGFjaGVkLgotICAgICAgICAgICAgaWYgKHRoaXMuX2ZpbGVzU2Vs
ZWN0RWxlbWVudCA9PT0gb3B0aW9uLnBhcmVudEVsZW1lbnQpCi0gICAgICAgICAgICAgICAgdGhp
cy5fZmlsZXNTZWxlY3RFbGVtZW50LnJlbW92ZUNoaWxkKG9wdGlvbik7Ci0KLSAgICAgICAgICAg
IGlmIChzZWxlY3RlZFVJU291cmNlQ29kZSA9PT0gb2xkVUlTb3VyY2VDb2RlTGlzdFtpXSkKLSAg
ICAgICAgICAgICAgICBzZWxlY3RlZCA9IHRydWU7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAo
IWFkZGVkKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgdWlTb3VyY2VDb2RlTGlzdC5sZW5ndGg7ICsraSkKLSAgICAgICAgICAgIHRoaXMuX2FkZE9w
dGlvblRvRmlsZXNTZWxlY3QodWlTb3VyY2VDb2RlTGlzdFtpXSk7Ci0KLSAgICAgICAgaWYgKHNl
bGVjdGVkKQotICAgICAgICAgICAgdGhpcy5fZmlsZXNTZWxlY3RFbGVtZW50LnNlbGVjdGVkSW5k
ZXggPSB1aVNvdXJjZUNvZGVMaXN0WzBdLl9vcHRpb24uaW5kZXg7Ci0gICAgfSwKLQotICAgIF9z
aG93U2NyaXB0Rm9sZGVyc1NldHRpbmdDaGFuZ2VkOiBmdW5jdGlvbigpCi0gICAgewotICAgICAg
ICB2YXIgc2VsZWN0ZWRPcHRpb24gPSB0aGlzLl9maWxlc1NlbGVjdEVsZW1lbnRbdGhpcy5fZmls
ZXNTZWxlY3RFbGVtZW50LnNlbGVjdGVkSW5kZXhdOwotICAgICAgICB2YXIgdWlTb3VyY2VDb2Rl
ID0gc2VsZWN0ZWRPcHRpb24gPyBzZWxlY3RlZE9wdGlvbi5fdWlTb3VyY2VDb2RlIDogbnVsbDsK
LQotICAgICAgICB2YXIgb3B0aW9ucyA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHRoaXMu
X2ZpbGVzU2VsZWN0RWxlbWVudCk7Ci0gICAgICAgIHRoaXMuX3Jlc2V0RmlsZXNTZWxlY3QoKTsK
LSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBvcHRpb25zLmxlbmd0aDsgKytpKSB7Ci0gICAg
ICAgICAgICBpZiAob3B0aW9uc1tpXS5fdWlTb3VyY2VDb2RlKQotICAgICAgICAgICAgICAgIHRo
aXMuX2FkZE9wdGlvblRvRmlsZXNTZWxlY3Qob3B0aW9uc1tpXS5fdWlTb3VyY2VDb2RlKTsKLSAg
ICAgICAgfQotCi0gICAgICAgIGlmICh1aVNvdXJjZUNvZGUpIHsKLSAgICAgICAgICAgIHZhciBp
bmRleCA9IHVpU291cmNlQ29kZS5fb3B0aW9uLmluZGV4OwotICAgICAgICAgICAgaWYgKHR5cGVv
ZiBpbmRleCA9PT0gIm51bWJlciIpCi0gICAgICAgICAgICAgICAgdGhpcy5fZmlsZXNTZWxlY3RF
bGVtZW50LnNlbGVjdGVkSW5kZXggPSBpbmRleDsKLSAgICAgICAgfQotICAgIH0sCi0KLSAgICBy
ZXNldDogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgdGhpcy5fYmFja0ZvcndhcmRMaXN0ID0g
W107Ci0gICAgICAgIHRoaXMuX2N1cnJlbnRCYWNrRm9yd2FyZEluZGV4ID0gLTE7Ci0gICAgICAg
IHRoaXMuX3VwZGF0ZUJhY2tBbmRGb3J3YXJkQnV0dG9ucygpOwotICAgICAgICB0aGlzLl9yZXNl
dEZpbGVzU2VsZWN0KCk7Ci0gICAgfSwKLQotICAgIC8qKgotICAgICAqIEBwYXJhbSB7V2ViSW5z
cGVjdG9yLlVJU291cmNlQ29kZX0gdWlTb3VyY2VDb2RlCi0gICAgICogQHBhcmFtIHtib29sZWFu
fSBpc0RpcnR5Ci0gICAgICovCi0gICAgc2V0U2NyaXB0U291cmNlSXNEaXJ0eTogZnVuY3Rpb24o
dWlTb3VyY2VDb2RlLCBpc0RpcnR5KQotICAgIHsKLSAgICAgICAgdmFyIG9wdGlvbiA9IHVpU291
cmNlQ29kZS5fb3B0aW9uOwotICAgICAgICBpZiAoIW9wdGlvbikKLSAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgaWYgKGlzRGlydHkpCi0gICAgICAgICAgICBvcHRpb24udGV4dCA9IG9wdGlv
bi50ZXh0LnJlcGxhY2UoL1teKl0kLywgIiQmKiIpOwotICAgICAgICBlbHNlCi0gICAgICAgICAg
ICBvcHRpb24udGV4dCA9IG9wdGlvbi50ZXh0LnJlcGxhY2UoL1sqXSQvLCAiIik7Ci0gICAgfSwK
LQotICAgIC8qKgotICAgICAqIEByZXR1cm4ge0VsZW1lbnR9Ci0gICAgICovCi0gICAgX2NyZWF0
ZUVkaXRvclRvb2xiYXI6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHZhciBlZGl0b3JUb29s
YmFyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0gICAgICAgIGVkaXRvclRvb2xi
YXIuY2xhc3NOYW1lID0gInN0YXR1cy1iYXIiOwotICAgICAgICBlZGl0b3JUb29sYmFyLmlkID0g
InNjcmlwdHMtZWRpdG9yLXRvb2xiYXIiOwotCi0gICAgICAgIHRoaXMuYmFja0J1dHRvbiA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoImJ1dHRvbiIpOwotICAgICAgICB0aGlzLmJhY2tCdXR0b24u
Y2xhc3NOYW1lID0gInN0YXR1cy1iYXItaXRlbSI7Ci0gICAgICAgIHRoaXMuYmFja0J1dHRvbi5p
ZCA9ICJzY3JpcHRzLWJhY2siOwotICAgICAgICB0aGlzLmJhY2tCdXR0b24udGl0bGUgPSBXZWJJ
bnNwZWN0b3IuVUlTdHJpbmcoIlNob3cgdGhlIHByZXZpb3VzIHNjcmlwdCByZXNvdXJjZS4iKTsK
LSAgICAgICAgdGhpcy5iYWNrQnV0dG9uLmRpc2FibGVkID0gdHJ1ZTsKLSAgICAgICAgdGhpcy5i
YWNrQnV0dG9uLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImltZyIpKTsKLSAg
ICAgICAgdGhpcy5iYWNrQnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5fZ29C
YWNrLmJpbmQodGhpcyksIGZhbHNlKTsKLSAgICAgICAgZWRpdG9yVG9vbGJhci5hcHBlbmRDaGls
ZCh0aGlzLmJhY2tCdXR0b24pOwotCi0gICAgICAgIHRoaXMuZm9yd2FyZEJ1dHRvbiA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoImJ1dHRvbiIpOwotICAgICAgICB0aGlzLmZvcndhcmRCdXR0b24u
Y2xhc3NOYW1lID0gInN0YXR1cy1iYXItaXRlbSI7Ci0gICAgICAgIHRoaXMuZm9yd2FyZEJ1dHRv
bi5pZCA9ICJzY3JpcHRzLWZvcndhcmQiOwotICAgICAgICB0aGlzLmZvcndhcmRCdXR0b24udGl0
bGUgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlNob3cgdGhlIG5leHQgc2NyaXB0IHJlc291cmNl
LiIpOwotICAgICAgICB0aGlzLmZvcndhcmRCdXR0b24uZGlzYWJsZWQgPSB0cnVlOwotICAgICAg
ICB0aGlzLmZvcndhcmRCdXR0b24uYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
aW1nIikpOwotICAgICAgICB0aGlzLmZvcndhcmRCdXR0b24uYWRkRXZlbnRMaXN0ZW5lcigiY2xp
Y2siLCB0aGlzLl9nb0ZvcndhcmQuYmluZCh0aGlzKSwgZmFsc2UpOwotICAgICAgICBlZGl0b3JU
b29sYmFyLmFwcGVuZENoaWxkKHRoaXMuZm9yd2FyZEJ1dHRvbik7Ci0KLSAgICAgICAgdGhpcy5f
ZmlsZXNTZWxlY3RFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2VsZWN0Iik7Ci0g
ICAgICAgIHRoaXMuX2ZpbGVzU2VsZWN0RWxlbWVudC5jbGFzc05hbWUgPSAic3RhdHVzLWJhci1p
dGVtIjsKLSAgICAgICAgdGhpcy5fZmlsZXNTZWxlY3RFbGVtZW50LmlkID0gInNjcmlwdHMtZmls
ZXMiOwotICAgICAgICB0aGlzLl9maWxlc1NlbGVjdEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigi
Y2hhbmdlIiwgdGhpcy5fZmlsZXNTZWxlY3RDaGFuZ2VkLmJpbmQodGhpcywgdHJ1ZSksIGZhbHNl
KTsKLSAgICAgICAgdGhpcy5fZmlsZXNTZWxlY3RFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImtl
eXVwIiwgdGhpcy5fZmlsZXNTZWxlY3RDaGFuZ2VkLmJpbmQodGhpcywgZmFsc2UpLCBmYWxzZSk7
Ci0gICAgICAgIGVkaXRvclRvb2xiYXIuYXBwZW5kQ2hpbGQodGhpcy5fZmlsZXNTZWxlY3RFbGVt
ZW50KTsKLQotICAgICAgICByZXR1cm4gZWRpdG9yVG9vbGJhcjsKLSAgICB9LAotCi0gICAgLyoq
Ci0gICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2RlfSB1aVNvdXJjZUNvZGUK
LSAgICAgKi8KLSAgICBfYWRkT3B0aW9uVG9GaWxlc1NlbGVjdDogZnVuY3Rpb24odWlTb3VyY2VD
b2RlKQotICAgIHsKLSAgICAgICAgdmFyIHNob3dTY3JpcHRGb2xkZXJzID0gV2ViSW5zcGVjdG9y
LnNldHRpbmdzLnNob3dTY3JpcHRGb2xkZXJzLmdldCgpOwotCi0gICAgICAgIHZhciBzZWxlY3Qg
PSB0aGlzLl9maWxlc1NlbGVjdEVsZW1lbnQ7Ci0gICAgICAgIGlmICghc2VsZWN0LmRvbWFpbk9w
dGlvbnMpCi0gICAgICAgICAgICBzZWxlY3QuZG9tYWluT3B0aW9ucyA9IHt9OwotICAgICAgICBp
ZiAoIXNlbGVjdC5mb2xkZXJPcHRpb25zKQotICAgICAgICAgICAgc2VsZWN0LmZvbGRlck9wdGlv
bnMgPSB7fTsKLQotICAgICAgICB2YXIgb3B0aW9uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
b3B0aW9uIik7Ci0gICAgICAgIHZhciBwYXJzZWRVUkwgPSB1aVNvdXJjZUNvZGUudXJsLmFzUGFy
c2VkVVJMKCk7Ci0KLSAgICAgICAgY29uc3QgaW5kZW50ID0gV2ViSW5zcGVjdG9yLmlzTWFjKCkg
PyAiIiA6ICJcdTAwYTBcdTAwYTBcdTAwYTBcdTAwYTAiOwotCi0gICAgICAgIG9wdGlvbi5kaXNw
bGF5TmFtZSA9IHVpU291cmNlQ29kZS5kaXNwbGF5TmFtZTsKLQotICAgICAgICB2YXIgY29udGVu
dFNjcmlwdFByZWZpeCA9IHVpU291cmNlQ29kZS5pc0NvbnRlbnRTY3JpcHQgPyAiMjoiIDogIjA6
IjsKLSAgICAgICAgdmFyIGZvbGRlck5hbWUgPSB1aVNvdXJjZUNvZGUuZm9sZGVyTmFtZTsKLSAg
ICAgICAgdmFyIGRvbWFpbiA9IHVpU291cmNlQ29kZS5kb21haW47Ci0KLSAgICAgICAgaWYgKHVp
U291cmNlQ29kZS5pc0NvbnRlbnRTY3JpcHQgJiYgZG9tYWluKSB7Ci0gICAgICAgICAgICAvLyBS
ZW5kZXIgZXh0ZW5zaW9uIGRvbWFpbiBhcyBhIHBhdGggaW4gc3RydWN0dXJlZCB2aWV3Ci0gICAg
ICAgICAgICBmb2xkZXJOYW1lID0gZG9tYWluICsgKGZvbGRlck5hbWUgPyBmb2xkZXJOYW1lIDog
IiIpOwotICAgICAgICAgICAgZG9tYWluID0gIiI7Ci0gICAgICAgIH0KLQotICAgICAgICB2YXIg
Zm9sZGVyTmFtZUZvclNvcnRpbmcgPSBjb250ZW50U2NyaXB0UHJlZml4ICsgKGRvbWFpbiA/IGRv
bWFpbiArICJcdFx0IiA6ICIiKSArIGZvbGRlck5hbWU7Ci0KLSAgICAgICAgaWYgKHNob3dTY3Jp
cHRGb2xkZXJzKSB7Ci0gICAgICAgICAgICBvcHRpb24udGV4dCA9IGluZGVudCArIHVpU291cmNl
Q29kZS5kaXNwbGF5TmFtZTsKLSAgICAgICAgICAgIG9wdGlvbi5uYW1lRm9yU29ydGluZyA9IGZv
bGRlck5hbWVGb3JTb3J0aW5nICsgIlx0L1x0IiArIHVpU291cmNlQ29kZS5maWxlTmFtZTsgLy8g
VXNlICdcdCcgdG8gbWFrZSBmaWxlcyBzdGljayB0byB0aGVpciBmb2xkZXIuCi0gICAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgICAgICBvcHRpb24udGV4dCA9IHVpU291cmNlQ29kZS5kaXNwbGF5TmFt
ZTsKLSAgICAgICAgICAgIC8vIENvbnRlbnQgc2NyaXB0IHNob3VsZCBjb250YWluIGl0cyBkb21h
aW4gbmFtZSBhcyBhIHByZWZpeAotICAgICAgICAgICAgaWYgKHVpU291cmNlQ29kZS5pc0NvbnRl
bnRTY3JpcHQgJiYgZm9sZGVyTmFtZSkKLSAgICAgICAgICAgICAgICBvcHRpb24udGV4dCA9IGZv
bGRlck5hbWUgKyAiLyIgKyBvcHRpb24udGV4dDsKLSAgICAgICAgICAgIG9wdGlvbi5uYW1lRm9y
U29ydGluZyA9IGNvbnRlbnRTY3JpcHRQcmVmaXggKyBvcHRpb24udGV4dDsKLSAgICAgICAgfQot
ICAgICAgICBvcHRpb24udGl0bGUgPSB1aVNvdXJjZUNvZGUudXJsOwotCi0gICAgICAgIGlmICh1
aVNvdXJjZUNvZGUuaXNDb250ZW50U2NyaXB0KQotICAgICAgICAgICAgb3B0aW9uLmFkZFN0eWxl
Q2xhc3MoImV4dGVuc2lvbi1zY3JpcHQiKTsKLQotICAgICAgICBmdW5jdGlvbiBpbnNlcnRPcmRl
cmVkKG9wdGlvbikKLSAgICAgICAgewotICAgICAgICAgICAgZnVuY3Rpb24gb3B0aW9uQ29tcGFy
ZShhLCBiKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiBhLm5hbWVGb3JT
b3J0aW5nLmxvY2FsZUNvbXBhcmUoYi5uYW1lRm9yU29ydGluZyk7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgICAgICB2YXIgaW5zZXJ0aW9uSW5kZXggPSBpbnNlcnRpb25JbmRleEZvck9iamVjdElu
TGlzdFNvcnRlZEJ5RnVuY3Rpb24ob3B0aW9uLCBzZWxlY3QuY2hpbGROb2Rlcywgb3B0aW9uQ29t
cGFyZSk7Ci0gICAgICAgICAgICB2YXIgc2hvd3NOb3RoaW5nID0gc2VsZWN0LnNlbGVjdGVkSW5k
ZXggPT09IC0xOwotICAgICAgICAgICAgc2VsZWN0Lmluc2VydEJlZm9yZShvcHRpb24sIGluc2Vy
dGlvbkluZGV4IDwgMCA/IG51bGwgOiBzZWxlY3QuY2hpbGROb2Rlcy5pdGVtKGluc2VydGlvbklu
ZGV4KSk7Ci0gICAgICAgICAgICBpZiAoc2hvd3NOb3RoaW5nKQotICAgICAgICAgICAgICAgIHNl
bGVjdC5zZWxlY3RlZEluZGV4ID0gLTE7Ci0gICAgICAgIH0KLQotICAgICAgICBpbnNlcnRPcmRl
cmVkKG9wdGlvbik7Ci0KLSAgICAgICAgaWYgKHVpU291cmNlQ29kZS5pc0NvbnRlbnRTY3JpcHQg
JiYgIXNlbGVjdC5jb250ZW50U2NyaXB0U2VjdGlvbikgewotICAgICAgICAgICAgdmFyIGNvbnRl
bnRTY3JpcHRTZWN0aW9uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgib3B0aW9uIik7Ci0gICAg
ICAgICAgICBjb250ZW50U2NyaXB0U2VjdGlvbi50ZXh0ID0gIlx1MjAxNCAiICsgV2ViSW5zcGVj
dG9yLlVJU3RyaW5nKCJDb250ZW50IHNjcmlwdHMiKSArICIgXHUyMDE0IjsKLSAgICAgICAgICAg
IGNvbnRlbnRTY3JpcHRTZWN0aW9uLmRpc2FibGVkID0gdHJ1ZTsKLSAgICAgICAgICAgIGNvbnRl
bnRTY3JpcHRTZWN0aW9uLm5hbWVGb3JTb3J0aW5nID0gIjEvQ29udGVudFNjcmlwdFNlcGFyYXRv
ciI7Ci0gICAgICAgICAgICBzZWxlY3QuY29udGVudFNjcmlwdFNlY3Rpb24gPSBjb250ZW50U2Ny
aXB0U2VjdGlvbjsKLSAgICAgICAgICAgIGluc2VydE9yZGVyZWQoY29udGVudFNjcmlwdFNlY3Rp
b24pOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKHNob3dTY3JpcHRGb2xkZXJzICYmICF1aVNv
dXJjZUNvZGUuaXNDb250ZW50U2NyaXB0ICYmIGRvbWFpbiAmJiAhc2VsZWN0LmRvbWFpbk9wdGlv
bnNbZG9tYWluXSkgewotICAgICAgICAgICAgdmFyIGRvbWFpbk9wdGlvbiA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoIm9wdGlvbiIpOwotICAgICAgICAgICAgZG9tYWluT3B0aW9uLnRleHQgPSAi
XHUyMDE0ICIgKyBkb21haW4gKyAiIFx1MjAxNCI7Ci0gICAgICAgICAgICBkb21haW5PcHRpb24u
bmFtZUZvclNvcnRpbmcgPSAiMDoiICsgZG9tYWluOwotICAgICAgICAgICAgZG9tYWluT3B0aW9u
LmRpc2FibGVkID0gdHJ1ZTsKLSAgICAgICAgICAgIHNlbGVjdC5kb21haW5PcHRpb25zW2RvbWFp
bl0gPSBkb21haW5PcHRpb247Ci0gICAgICAgICAgICBpbnNlcnRPcmRlcmVkKGRvbWFpbk9wdGlv
bik7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoc2hvd1NjcmlwdEZvbGRlcnMgJiYgZm9sZGVy
TmFtZSAmJiAhc2VsZWN0LmZvbGRlck9wdGlvbnNbZm9sZGVyTmFtZUZvclNvcnRpbmddKSB7Ci0g
ICAgICAgICAgICB2YXIgZm9sZGVyT3B0aW9uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgib3B0
aW9uIik7Ci0gICAgICAgICAgICBmb2xkZXJPcHRpb24udGV4dCA9IGZvbGRlck5hbWU7Ci0gICAg
ICAgICAgICBmb2xkZXJPcHRpb24ubmFtZUZvclNvcnRpbmcgPSBmb2xkZXJOYW1lRm9yU29ydGlu
ZzsKLSAgICAgICAgICAgIGZvbGRlck9wdGlvbi5kaXNhYmxlZCA9IHRydWU7Ci0gICAgICAgICAg
ICBzZWxlY3QuZm9sZGVyT3B0aW9uc1tmb2xkZXJOYW1lRm9yU29ydGluZ10gPSBmb2xkZXJPcHRp
b247Ci0gICAgICAgICAgICBpbnNlcnRPcmRlcmVkKGZvbGRlck9wdGlvbik7Ci0gICAgICAgIH0K
LQotICAgICAgICBvcHRpb24uX3VpU291cmNlQ29kZSA9IHVpU291cmNlQ29kZTsKLSAgICAgICAg
dWlTb3VyY2VDb2RlLl9vcHRpb24gPSBvcHRpb247Ci0gICAgfSwKLQotICAgIF9yZXNldEZpbGVz
U2VsZWN0OiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICB0aGlzLl9maWxlc1NlbGVjdEVsZW1l
bnQucmVtb3ZlQ2hpbGRyZW4oKTsKLSAgICAgICAgdGhpcy5fZmlsZXNTZWxlY3RFbGVtZW50LmRv
bWFpbk9wdGlvbnMgPSB7fTsKLSAgICAgICAgdGhpcy5fZmlsZXNTZWxlY3RFbGVtZW50LmZvbGRl
ck9wdGlvbnMgPSB7fTsKLSAgICAgICAgZGVsZXRlIHRoaXMuX2ZpbGVzU2VsZWN0RWxlbWVudC5j
b250ZW50U2NyaXB0U2VjdGlvbjsKLSAgICB9LAotCi0gICAgX3VwZGF0ZUJhY2tBbmRGb3J3YXJk
QnV0dG9uczogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgdGhpcy5iYWNrQnV0dG9uLmRpc2Fi
bGVkID0gdGhpcy5fY3VycmVudEJhY2tGb3J3YXJkSW5kZXggPD0gMDsKLSAgICAgICAgdGhpcy5m
b3J3YXJkQnV0dG9uLmRpc2FibGVkID0gdGhpcy5fY3VycmVudEJhY2tGb3J3YXJkSW5kZXggPj0g
KHRoaXMuX2JhY2tGb3J3YXJkTGlzdC5sZW5ndGggLSAxKTsKLSAgICB9LAotCi0gICAgX2dvQmFj
azogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgaWYgKHRoaXMuX2N1cnJlbnRCYWNrRm9yd2Fy
ZEluZGV4IDw9IDApIHsKLSAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoIkNhbid0IGdvIGJhY2sg
ZnJvbSBpbmRleCAiICsgdGhpcy5fY3VycmVudEJhY2tGb3J3YXJkSW5kZXgpOwotICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgdmFyIHVpU291cmNlQ29kZSA9IHRoaXMu
X2JhY2tGb3J3YXJkTGlzdFstLXRoaXMuX2N1cnJlbnRCYWNrRm9yd2FyZEluZGV4XTsKLSAgICAg
ICAgdGhpcy5faW5uZXJSZXZlYWxVSVNvdXJjZUNvZGUodWlTb3VyY2VDb2RlLCBmYWxzZSk7Ci0g
ICAgfSwKLQotICAgIF9nb0ZvcndhcmQ6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIGlmICh0
aGlzLl9jdXJyZW50QmFja0ZvcndhcmRJbmRleCA+PSB0aGlzLl9iYWNrRm9yd2FyZExpc3QubGVu
Z3RoIC0gMSkgewotICAgICAgICAgICAgY29uc29sZS5lcnJvcigiQ2FuJ3QgZ28gZm9yd2FyZCBm
cm9tIGluZGV4ICIgKyB0aGlzLl9jdXJyZW50QmFja0ZvcndhcmRJbmRleCk7Ci0gICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICB2YXIgdWlTb3VyY2VDb2RlID0gdGhpcy5f
YmFja0ZvcndhcmRMaXN0WysrdGhpcy5fY3VycmVudEJhY2tGb3J3YXJkSW5kZXhdOwotICAgICAg
ICB0aGlzLl9pbm5lclJldmVhbFVJU291cmNlQ29kZSh1aVNvdXJjZUNvZGUsIGZhbHNlKTsKLSAg
ICB9LAotCi0gICAgLyoqCi0gICAgICogQHBhcmFtIHtib29sZWFufSBmb2N1c1NvdXJjZQotICAg
ICAqLwotICAgIF9maWxlc1NlbGVjdENoYW5nZWQ6IGZ1bmN0aW9uKGZvY3VzU291cmNlKQotICAg
IHsKLSAgICAgICAgaWYgKHRoaXMuX2ZpbGVzU2VsZWN0RWxlbWVudC5zZWxlY3RlZEluZGV4ID09
PSAtMSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICB2YXIgdWlTb3VyY2VDb2RlID0g
dGhpcy5fZmlsZXNTZWxlY3RFbGVtZW50W3RoaXMuX2ZpbGVzU2VsZWN0RWxlbWVudC5zZWxlY3Rl
ZEluZGV4XS5fdWlTb3VyY2VDb2RlOwotICAgICAgICB0aGlzLl9pbm5lclJldmVhbFVJU291cmNl
Q29kZSh1aVNvdXJjZUNvZGUsIHRydWUpOwotICAgICAgICBpZiAoZm9jdXNTb3VyY2UpCi0gICAg
ICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuU2NyaXB0
c1BhbmVsLkZpbGVTZWxlY3Rvci5FdmVudHMuUmVsZWFzZWRGb2N1c0FmdGVyU2VsZWN0aW9uLCB1
aVNvdXJjZUNvZGUpOwotICAgIH0KLX0KLQotV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5Db21i
b0JveEZpbGVTZWxlY3Rvci5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLk9iamVj
dC5wcm90b3R5cGU7Ci0KLS8qKgotICogQGltcGxlbWVudHMge1dlYkluc3BlY3Rvci5FZGl0b3JD
b250YWluZXJ9Ci0gKiBAZXh0ZW5kcyB7V2ViSW5zcGVjdG9yLk9iamVjdH0KLSAqIEBjb25zdHJ1
Y3RvcgotICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuRWRpdG9yQ29udGFpbmVyRGVsZWdhdGV9IGRl
bGVnYXRlCi0gKi8KLVdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwuU2luZ2xlRmlsZUVkaXRvckNv
bnRhaW5lciA9IGZ1bmN0aW9uKGRlbGVnYXRlKQotewotICAgIHRoaXMuX2RlbGVnYXRlID0gZGVs
ZWdhdGU7Ci0gICAgdGhpcy5lbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7
Ci0gICAgdGhpcy5lbGVtZW50LmNsYXNzTmFtZSA9ICJzY3JpcHRzLXZpZXdzLWNvbnRhaW5lciI7
Ci19Ci0KLVdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwuU2luZ2xlRmlsZUVkaXRvckNvbnRhaW5l
ci5wcm90b3R5cGUgPSB7Ci0gICAgLyoqCi0gICAgICogQHR5cGUge1dlYkluc3BlY3Rvci5Tb3Vy
Y2VGcmFtZX0KLSAgICAgKi8KLSAgICBnZXQgdmlzaWJsZVZpZXcoKQotICAgIHsKLSAgICAgICAg
cmV0dXJuIHRoaXMuX2N1cnJlbnRTb3VyY2VGcmFtZTsKLSAgICB9LAotCi0gICAgLyoqCi0gICAg
ICogQHBhcmFtIHtFbGVtZW50fSBlbGVtZW50Ci0gICAgICovCi0gICAgc2hvdzogZnVuY3Rpb24o
ZWxlbWVudCkKLSAgICB7Ci0gICAgICAgIGVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5lbGVtZW50
KTsKLSAgICB9LAotCi0gICAgLyoqCi0gICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuVUlTb3Vy
Y2VDb2RlfSB1aVNvdXJjZUNvZGUKLSAgICAgKi8KLSAgICBzaG93RmlsZTogZnVuY3Rpb24odWlT
b3VyY2VDb2RlKQotICAgIHsKLSAgICAgICAgdmFyIHNvdXJjZUZyYW1lID0gdGhpcy5fZGVsZWdh
dGUudmlld0ZvckZpbGUodWlTb3VyY2VDb2RlKTsKLSAgICAgICAgaWYgKHRoaXMuX2N1cnJlbnRT
b3VyY2VGcmFtZSA9PT0gc291cmNlRnJhbWUpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAg
ICAgdGhpcy5faW5uZXJTaG93RmlsZSh1aVNvdXJjZUNvZGUsIHRydWUpOwotICAgIH0sCi0KLSAg
ICAvKioKLSAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGV9IHVpU291cmNl
Q29kZQotICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gdXNlckdlc3R1cmUKLSAgICAgKi8KLSAgICBf
aW5uZXJTaG93RmlsZTogZnVuY3Rpb24odWlTb3VyY2VDb2RlLCB1c2VyR2VzdHVyZSkKLSAgICB7
Ci0gICAgICAgIGlmICh0aGlzLl9jdXJyZW50U291cmNlRnJhbWUpCi0gICAgICAgICAgICB0aGlz
Ll9jdXJyZW50U291cmNlRnJhbWUuZGV0YWNoKCk7Ci0KLSAgICAgICAgdGhpcy5faW5pdGlhbFZp
ZXdTZWxlY3Rpb25Qcm9jZXNzZWQgPSB0cnVlOwotCi0gICAgICAgIHZhciBzb3VyY2VGcmFtZSA9
IHRoaXMuX2RlbGVnYXRlLnZpZXdGb3JGaWxlKHVpU291cmNlQ29kZSk7Ci0gICAgICAgIHRoaXMu
X2N1cnJlbnRTb3VyY2VGcmFtZSA9IHNvdXJjZUZyYW1lOwotICAgICAgICB0aGlzLl9jdXJyZW50
RmlsZSA9IHVpU291cmNlQ29kZTsKLQotICAgICAgICBpZiAodXNlckdlc3R1cmUpIHsKLSAgICAg
ICAgICAgIHRoaXMuX3VzZXJTZWxlY3RlZEZpbGVzID0gdHJ1ZTsKLSAgICAgICAgICAgIFdlYklu
c3BlY3Rvci5zZXR0aW5ncy5sYXN0Vmlld2VkU2NyaXB0RmlsZS5zZXQodWlTb3VyY2VDb2RlLnVy
bCk7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoc291cmNlRnJhbWUpCi0gICAgICAgICAgICBz
b3VyY2VGcmFtZS5zaG93KHRoaXMuZWxlbWVudCk7Ci0gICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVu
dFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5FZGl0b3JDb250YWluZXIuRXZlbnRzLkVkaXRvclNl
bGVjdGVkLCB1aVNvdXJjZUNvZGUpOwotICAgIH0sCi0KLSAgICAvKioKLSAgICAgKiBAcGFyYW0g
e1dlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGV9IHVpU291cmNlQ29kZQotICAgICAqLwotICAgIHVp
U291cmNlQ29kZUFkZGVkOiBmdW5jdGlvbih1aVNvdXJjZUNvZGUpCi0gICAgewotICAgICAgICB2
YXIgbGFzdFZpZXdlZFVSTCA9IFdlYkluc3BlY3Rvci5zZXR0aW5ncy5sYXN0Vmlld2VkU2NyaXB0
RmlsZS5nZXQoKTsKLSAgICAgICAgLy8gU2hvdyBmaXJzdCBmaWxlIHRoYXQgd2FzIGFkZGVkIG9y
IGZpbGUgd2l0aCB0aGUgbGFzdCB2aWV3ZWQgdXJsLgotICAgICAgICBpZiAodGhpcy5fdXNlclNl
bGVjdGVkRmlsZXMpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGlmICh1aVNvdXJjZUNv
ZGUudXJsID09PSBsYXN0Vmlld2VkVVJMIHx8ICF0aGlzLl9pbml0aWFsVmlld1NlbGVjdGlvblBy
b2Nlc3NlZCkKLSAgICAgICAgICAgIHRoaXMuX2lubmVyU2hvd0ZpbGUodWlTb3VyY2VDb2RlLCBm
YWxzZSk7Ci0gICAgfSwKLQotICAgIC8qKgotICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlVJ
U291cmNlQ29kZX0gdWlTb3VyY2VDb2RlCi0gICAgICogQHBhcmFtIHtib29sZWFufSBpc0RpcnR5
Ci0gICAgICovCi0gICAgc2V0RmlsZUlzRGlydHk6IGZ1bmN0aW9uKHVpU291cmNlQ29kZSwgaXNE
aXJ0eSkKLSAgICB7Ci0gICAgICAgIC8vIERvIG5vdGhpbmcuCi0gICAgfSwKLQotICAgIC8qKgot
ICAgICAqIEBwYXJhbSB7QXJyYXkuPFdlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGU+fSBvbGRVSVNv
dXJjZUNvZGVMaXN0Ci0gICAgICogQHBhcmFtIHtBcnJheS48V2ViSW5zcGVjdG9yLlVJU291cmNl
Q29kZT59IHVpU291cmNlQ29kZUxpc3QKLSAgICAgKi8KLSAgICByZXBsYWNlRmlsZXM6IGZ1bmN0
aW9uKG9sZFVJU291cmNlQ29kZUxpc3QsIHVpU291cmNlQ29kZUxpc3QpCi0gICAgewotICAgICAg
ICBpZiAob2xkVUlTb3VyY2VDb2RlTGlzdC5pbmRleE9mKHRoaXMuX2N1cnJlbnRGaWxlKSAhPT0g
LTEpCi0gICAgICAgICAgICB0aGlzLnNob3dGaWxlKHVpU291cmNlQ29kZUxpc3RbMF0pOwotICAg
IH0sCi0KLSAgICByZXNldDogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgaWYgKHRoaXMuX2N1
cnJlbnRTb3VyY2VGcmFtZSkKLSAgICAgICAgICAgIHRoaXMuX2N1cnJlbnRTb3VyY2VGcmFtZS5k
ZXRhY2goKTsKLSAgICAgICAgdGhpcy5fY3VycmVudFNvdXJjZUZyYW1lID0gbnVsbDsKLSAgICAg
ICAgdGhpcy5fY3VycmVudEZpbGUgPSBudWxsOwotICAgICAgICBkZWxldGUgdGhpcy5faW5pdGlh
bFZpZXdTZWxlY3Rpb25Qcm9jZXNzZWQ7Ci0gICAgICAgIGRlbGV0ZSB0aGlzLl91c2VyU2VsZWN0
ZWRGaWxlczsKLSAgICB9Ci19Ci0KLVdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwuU2luZ2xlRmls
ZUVkaXRvckNvbnRhaW5lci5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLk9iamVj
dC5wcm90b3R5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL1NldHRpbmdzU2NyZWVuLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9TZXR0aW5nc1NjcmVlbi5qcwppbmRleCAxMDkwNjUyY2ZkZWFhY2ZhODU3NzNjNmUxYTRiM2Fi
YTQxNzNiMjAyLi41ZDNlNGI3OTM1NmU5M2JhOGFkM2IxZTcwMTJkZWU3MjNhY2Q5ODdlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NldHRpbmdzU2NyZWVu
LmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2V0dGluZ3NTY3Jl
ZW4uanMKQEAgLTc4LDcgKzc4LDYgQEAgV2ViSW5zcGVjdG9yLlNldHRpbmdzU2NyZWVuID0gZnVu
Y3Rpb24oKQogICAgIHAuYXBwZW5kQ2hpbGQodGhpcy5fY3JlYXRlQ2hlY2tib3hTZXR0aW5nKFdl
Ykluc3BlY3Rvci5VSVN0cmluZygiRW11bGF0ZSB0b3VjaCBldmVudHMiKSwgV2ViSW5zcGVjdG9y
LnNldHRpbmdzLmVtdWxhdGVUb3VjaEV2ZW50cykpOwogCiAgICAgcCA9IHRoaXMuX2FwcGVuZFNl
Y3Rpb24oV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTY3JpcHRzIiksIHRydWUpOwotICAgIHAuYXBw
ZW5kQ2hpbGQodGhpcy5fY3JlYXRlQ2hlY2tib3hTZXR0aW5nKFdlYkluc3BlY3Rvci5VSVN0cmlu
ZygiVXNlIGZpbGUgbmF2aWdhdG9yIGFuZCB0YWJiZWQgZWRpdG9yIGNvbnRhaW5lciBpbiBzY3Jp
cHRzIHBhbmVsIiksIFdlYkluc3BlY3Rvci5zZXR0aW5ncy51c2VTY3JpcHRzTmF2aWdhdG9yKSk7
CiAgICAgcC5hcHBlbmRDaGlsZCh0aGlzLl9jcmVhdGVDaGVja2JveFNldHRpbmcoV2ViSW5zcGVj
dG9yLlVJU3RyaW5nKCJTaG93IHNjcmlwdCBmb2xkZXJzIiksIFdlYkluc3BlY3Rvci5zZXR0aW5n
cy5zaG93U2NyaXB0Rm9sZGVycykpOwogICAgIHAuYXBwZW5kQ2hpbGQodGhpcy5fY3JlYXRlQ2hl
Y2tib3hTZXR0aW5nKFdlYkluc3BlY3Rvci5VSVN0cmluZygiU2VhcmNoIGluIGNvbnRlbnQgc2Ny
aXB0cyIpLCBXZWJJbnNwZWN0b3Iuc2V0dGluZ3Muc2VhcmNoSW5Db250ZW50U2NyaXB0cykpOwog
ICAgIHAuYXBwZW5kQ2hpbGQodGhpcy5fY3JlYXRlQ2hlY2tib3hTZXR0aW5nKFdlYkluc3BlY3Rv
ci5VSVN0cmluZygiRW5hYmxlIHNvdXJjZSBtYXBzIiksIFdlYkluc3BlY3Rvci5zZXR0aW5ncy5z
b3VyY2VNYXBzRW5hYmxlZCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9UYWJiZWRFZGl0b3JDb250YWluZXIuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL1RhYmJlZEVkaXRvckNvbnRhaW5lci5qcwppbmRleCA4MmY3NDQ3ZDNh
ZDgwY2Q4ZmU1OWYwYzA1ZDQ4MTFkNjcyN2QzZTkxLi42ODExZTc4ZDA1MjBiNzYwNWIyMTQ4ZTAz
ODY5ZGJmYjQxZDVjYTBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL1RhYmJlZEVkaXRvckNvbnRhaW5lci5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL1RhYmJlZEVkaXRvckNvbnRhaW5lci5qcwpAQCAtMjcsMTAgKzI3LDIy
IEBACiAgKi8KIAogLyoqCi0gKiBAaW1wbGVtZW50cyB7V2ViSW5zcGVjdG9yLkVkaXRvckNvbnRh
aW5lcn0KLSAqIEBleHRlbmRzIHtXZWJJbnNwZWN0b3IuT2JqZWN0fQorICogQGludGVyZmFjZQor
ICovCitXZWJJbnNwZWN0b3IuVGFiYmVkRWRpdG9yQ29udGFpbmVyRGVsZWdhdGUgPSBmdW5jdGlv
bigpIHsgfQorCitXZWJJbnNwZWN0b3IuVGFiYmVkRWRpdG9yQ29udGFpbmVyRGVsZWdhdGUucHJv
dG90eXBlID0geworICAgIC8qKgorICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlVJU291cmNl
Q29kZX0gdWlTb3VyY2VDb2RlCisgICAgICogQHJldHVybiB7V2ViSW5zcGVjdG9yLlNvdXJjZUZy
YW1lfQorICAgICAqLworICAgIHZpZXdGb3JGaWxlOiBmdW5jdGlvbih1aVNvdXJjZUNvZGUpIHsg
fQorfQorCisvKioKICAqIEBjb25zdHJ1Y3RvcgotICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuRWRp
dG9yQ29udGFpbmVyRGVsZWdhdGV9IGRlbGVnYXRlCisgKiBAZXh0ZW5kcyB7V2ViSW5zcGVjdG9y
Lk9iamVjdH0KKyAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlRhYmJlZEVkaXRvckNvbnRhaW5lckRl
bGVnYXRlfSBkZWxlZ2F0ZQogICovCiBXZWJJbnNwZWN0b3IuVGFiYmVkRWRpdG9yQ29udGFpbmVy
ID0gZnVuY3Rpb24oZGVsZWdhdGUpCiB7CkBAIC01MSw2ICs2MywxMiBAQCBXZWJJbnNwZWN0b3Iu
VGFiYmVkRWRpdG9yQ29udGFpbmVyID0gZnVuY3Rpb24oZGVsZWdhdGUpCiAgICAgdGhpcy5faGlz
dG9yeSA9IG5ldyBXZWJJbnNwZWN0b3IuVGFiYmVkRWRpdG9yQ29udGFpbmVyLkhpc3RvcnkodGhp
cy5fcHJldmlvdXNseVZpZXdlZEZpbGVzU2V0dGluZy5nZXQoKSk7CiB9CiAKKworV2ViSW5zcGVj
dG9yLlRhYmJlZEVkaXRvckNvbnRhaW5lci5FdmVudHMgPSB7CisgICAgRWRpdG9yU2VsZWN0ZWQ6
ICJFZGl0b3JTZWxlY3RlZCIsCisgICAgRWRpdG9yQ2xvc2VkOiAiRWRpdG9yQ2xvc2VkIgorfQor
CiBXZWJJbnNwZWN0b3IuVGFiYmVkRWRpdG9yQ29udGFpbmVyLl90YWJJZCA9IDA7CiAKIFdlYklu
c3BlY3Rvci5UYWJiZWRFZGl0b3JDb250YWluZXIubWF4aW1hbFByZXZpb3VzbHlWaWV3ZWRGaWxl
c0NvdW50ID0gMzA7CkBAIC0xMDQsNyArMTIyLDcgQEAgV2ViSW5zcGVjdG9yLlRhYmJlZEVkaXRv
ckNvbnRhaW5lci5wcm90b3R5cGUgPSB7CiAgICAgICAgIGlmICh1c2VyR2VzdHVyZSkKICAgICAg
ICAgICAgIHRoaXMuX2VkaXRvclNlbGVjdGVkQnlVc2VyQWN0aW9uKCk7CiAgICAgICAgIAotICAg
ICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuRWRpdG9yQ29u
dGFpbmVyLkV2ZW50cy5FZGl0b3JTZWxlY3RlZCwgdGhpcy5fY3VycmVudEZpbGUpOworICAgICAg
ICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuVGFiYmVkRWRpdG9y
Q29udGFpbmVyLkV2ZW50cy5FZGl0b3JTZWxlY3RlZCwgdGhpcy5fY3VycmVudEZpbGUpOwogICAg
IH0sCiAKICAgICAvKioKQEAgLTIxNiw3ICsyMzQsNyBAQCBXZWJJbnNwZWN0b3IuVGFiYmVkRWRp
dG9yQ29udGFpbmVyLnByb3RvdHlwZSA9IHsKICAgICAgICAgZGVsZXRlIHRoaXMuX2ZpbGVzW3Rh
YklkXTsKICAgICAgICAgZGVsZXRlIHRoaXMuX2N1cnJlbnRGaWxlOwogCi0gICAgICAgIHRoaXMu
ZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5FZGl0b3JDb250YWluZXIuRXZl
bnRzLkVkaXRvckNsb3NlZCwgdWlTb3VyY2VDb2RlKTsKKyAgICAgICAgdGhpcy5kaXNwYXRjaEV2
ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLlRhYmJlZEVkaXRvckNvbnRhaW5lci5FdmVudHMu
RWRpdG9yQ2xvc2VkLCB1aVNvdXJjZUNvZGUpOwogCiAgICAgICAgIGlmICh1c2VyR2VzdHVyZSkK
ICAgICAgICAgICAgIHRoaXMuX2VkaXRvckNsb3NlZEJ5VXNlckFjdGlvbih1aVNvdXJjZUNvZGUp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9zY3JpcHRz
UGFuZWwuY3NzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9zY3JpcHRzUGFu
ZWwuY3NzCmluZGV4IGIwNWE5ZTVmNWE3Mjg4OTY3NjIzYjNkZDgxNWQzYzMzMGU4Yjk0YjAuLjdl
MTkzYjEzMmU5MmRkYzM1OTVjOWRhNGE0MDY4YzM1Y2M3NmE2N2IgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvc2NyaXB0c1BhbmVsLmNzcworKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL3NjcmlwdHNQYW5lbC5jc3MKQEAgLTg0LDE0
ICs4NCw2IEBACiAgICAgbWFyZ2luLXRvcDogMnB4OwogfQogCi0jc2NyaXB0cy1iYWNrIGltZyB7
Ci0gICAgY29udGVudDogdXJsKEltYWdlcy9iYWNrLnBuZyk7Ci19Ci0KLSNzY3JpcHRzLWZvcndh
cmQgaW1nIHsKLSAgICBjb250ZW50OiB1cmwoSW1hZ2VzL2ZvcndhcmQucG5nKTsKLX0KLQogI3Nj
cmlwdHMtcGF1c2UgaW1nIHsKICAgICBjb250ZW50OiB1cmwoSW1hZ2VzL2RlYnVnZ2VyUGF1c2Uu
cG5nKTsKIH0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwppbmRleCBjMDQyMDdiYzQzMzA4MmZkMmU4Y2M2NGNkYTRjZWFhYWQyMGIzOTMy
Li5iYTExYjVhYjE4ZDI4MDdlMDI1NDg5ZmIzOThkMGIxZWE3OGE0ZmQzIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMjAgQEAKKzIwMTItMDQtMDkgIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBjaHJvbWl1bS5v
cmc+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogcmVtb3ZlIENvbWJvQm94RmlsZVNlbGVjdG9y
IGFuZCBTaW5nbGVGaWxlRWRpdG9yQ29udGFpbmVyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODM0NjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIGluc3BlY3Rvci9kZWJ1Z2dlci9zY3JpcHRzLWNvbWJv
Ym94LWZpbGUtc2VsZWN0b3ItaGlzdG9yeS1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAg
ICogaW5zcGVjdG9yL2RlYnVnZ2VyL3NjcmlwdHMtY29tYm9ib3gtZmlsZS1zZWxlY3Rvci1oaXN0
b3J5Lmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogaW5zcGVjdG9yL2RlYnVnZ2VyL3NjcmlwdHMt
ZmlsZS1zZWxlY3Rvci1leHBlY3RlZC50eHQ6CisgICAgICAgICogaW5zcGVjdG9yL2RlYnVnZ2Vy
L3NjcmlwdHMtZmlsZS1zZWxlY3Rvci5odG1sOgorICAgICAgICAqIGluc3BlY3Rvci9kZWJ1Z2dl
ci9zY3JpcHRzLXBhbmVsLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZGVidWdn
ZXIvc2NyaXB0cy1wYW5lbC5odG1sOgorICAgICAgICAqIGluc3BlY3Rvci9kZWJ1Z2dlci9zY3Jp
cHRzLXNvcnRpbmctZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGluc3BlY3Rvci9kZWJ1Z2dlci9z
Y3JpcHRzLXNvcnRpbmcuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZGVidWdnZXIvc291cmNl
LWZyYW1lLWNvdW50Lmh0bWw6CisKIDIwMTItMDQtMDYgIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1h
bkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogbW92ZSBicmVha3BvaW50
cyBhY3RpdmUgc3RhdGUgZnJvbSBzY3JpcHRzIHBhbmVsIHRvIGRlYnVnZ2VyIHByZXNlbnRhdGlv
biBtb2RlbC4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zY3Jp
cHRzLWNvbWJvYm94LWZpbGUtc2VsZWN0b3ItaGlzdG9yeS1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc2NyaXB0cy1jb21ib2JveC1maWxlLXNlbGVjdG9yLWhp
c3RvcnktZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhODdlNDQ3
ZTkyYTUwODg4ZGZlZDUwZjc4ZjI2OGRmMDhjMDc0MjRhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9z
Y3JpcHRzLWNvbWJvYm94LWZpbGUtc2VsZWN0b3ItaGlzdG9yeS1leHBlY3RlZC50eHQKKysrIC9k
ZXYvbnVsbApAQCAtMSArMCwwIEBACi1UZXN0cyBzY3JpcHRzIHBhbmVsIGNvbWJvIGJveCBmaWxl
IHNlbGVjdG9yIGhpc3RvcnkuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVi
dWdnZXIvc2NyaXB0cy1jb21ib2JveC1maWxlLXNlbGVjdG9yLWhpc3RvcnkuaHRtbCBiL0xheW91
dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zY3JpcHRzLWNvbWJvYm94LWZpbGUtc2VsZWN0b3It
aGlzdG9yeS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZDA0NTMwOTQyYmU4
M2VjZTA3MzA4YjFiNDU5OWMxY2Q0N2Q0ZWJmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zY3JpcHRz
LWNvbWJvYm94LWZpbGUtc2VsZWN0b3ItaGlzdG9yeS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEs
ODQgKzAsMCBAQAotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9odHRwL3Rlc3Rz
L2luc3BlY3Rvci9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4v
Li4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvZGVidWdnZXItdGVzdC5qcyI+PC9zY3JpcHQ+Ci0KLTxz
Y3JpcHQ+Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewotICAgIC8vIEFsd2F5cyB1c2UgaW5kZW50YXRp
b24gaW4gc2NyaXB0cyBkcm9wIGJveAotICAgIFdlYkluc3BlY3Rvci5faXNNYWMgPSBmYWxzZTsK
LQotICAgIHZhciB1aVNvdXJjZUNvZGVzID0gW107Ci0gICAgZnVuY3Rpb24gYWRkVUlTb3VyY2VD
b2RlKHVybCkKLSAgICB7Ci0gICAgICAgIHZhciB1aVNvdXJjZUNvZGUgPSBuZXcgV2ViSW5zcGVj
dG9yLlVJU291cmNlQ29kZSgwLCB1cmwsIG51bGwsIG51bGwpOwotICAgICAgICBjb21ib0JveEZp
bGVTZWxlY3Rvci5hZGRVSVNvdXJjZUNvZGUodWlTb3VyY2VDb2RlKTsKLSAgICAgICAgdWlTb3Vy
Y2VDb2Rlcy5wdXNoKHVpU291cmNlQ29kZSk7Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gY2hlY2tD
dXJyZW50bHlTZWxlY3RlZEZpbGVOYW1lKGZpbGVOYW1lKQotICAgIHsKLSAgICAgICAgdmFyIGlu
ZGV4ID0gY29tYm9Cb3hGaWxlU2VsZWN0b3IuX2ZpbGVzU2VsZWN0RWxlbWVudC5zZWxlY3RlZElu
ZGV4OwotICAgICAgICB2YXIgdGV4dCA9IGNvbWJvQm94RmlsZVNlbGVjdG9yLl9maWxlc1NlbGVj
dEVsZW1lbnRbaW5kZXhdLnRleHQ7Ci0gICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0VHJ1ZSh0
ZXh0LmluZGV4T2YoZmlsZU5hbWUpICE9PSAtMSwKLSAgICAgICAgICAgICJXcm9uZyBvcHRpb24g
dGV4dC4gRXhwZWN0ZWQgPCIgKyBmaWxlTmFtZSArICI+LCBmb3VuZCA8IiArIHRleHQgKyAiPi4i
KTsKLSAgICB9Ci0KLSAgICB2YXIgY29tYm9Cb3hGaWxlU2VsZWN0b3IgPSBuZXcgV2ViSW5zcGVj
dG9yLlNjcmlwdHNQYW5lbC5Db21ib0JveEZpbGVTZWxlY3RvcigpOwotCi0gICAgdmFyIGZpbGVz
ID0gWyJpbmRleC5odG1sIiwgInNjcmlwdDEuanMiLCAic2NyaXB0Mi5qcyIsICJzY3JpcHQzLmpz
Il07Ci0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBmaWxlcy5sZW5ndGg7ICsraSkKLSAgICAgICAg
YWRkVUlTb3VyY2VDb2RlKGZpbGVzW2ldKTsKLQotICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdWlT
b3VyY2VDb2Rlcy5sZW5ndGg7ICsraSkKLSAgICAgICAgY29tYm9Cb3hGaWxlU2VsZWN0b3IucmV2
ZWFsVUlTb3VyY2VDb2RlKHVpU291cmNlQ29kZXNbaV0pOwotCi0gICAgY2hlY2tDdXJyZW50bHlT
ZWxlY3RlZEZpbGVOYW1lKCJzY3JpcHQzLmpzIik7Ci0gICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRF
cXVhbHModHJ1ZSwgY29tYm9Cb3hGaWxlU2VsZWN0b3IuZm9yd2FyZEJ1dHRvbi5kaXNhYmxlZCwg
IkZvcndhcmQgc2hvdWxkIGJlIGRpc2FibGVkLiIpOwotCi0gICAgY29tYm9Cb3hGaWxlU2VsZWN0
b3IuYmFja0J1dHRvbi5jbGljaygpOwotICAgIGNoZWNrQ3VycmVudGx5U2VsZWN0ZWRGaWxlTmFt
ZSgic2NyaXB0Mi5qcyIpOwotICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKGZhbHNlLCBj
b21ib0JveEZpbGVTZWxlY3Rvci5mb3J3YXJkQnV0dG9uLmRpc2FibGVkLCAiRm9yd2FyZCBzaG91
bGQgYmUgZW5hYmxlZCBhZnRlciBiYWNrIGJ1dHRvbiBjbGljay4iKTsKLQotICAgIGNvbWJvQm94
RmlsZVNlbGVjdG9yLmZvcndhcmRCdXR0b24uY2xpY2soKTsKLSAgICBjaGVja0N1cnJlbnRseVNl
bGVjdGVkRmlsZU5hbWUoInNjcmlwdDMuanMiKTsKLSAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVx
dWFscyh0cnVlLCBjb21ib0JveEZpbGVTZWxlY3Rvci5mb3J3YXJkQnV0dG9uLmRpc2FibGVkLCAi
Rm9yd2FyZCBzaG91bGQgYmUgZGlzYWJsZWQgYWZ0ZXIgZm9yd2FyZCBidXR0b24gY2xpY2suIik7
Ci0KLSAgICBjb21ib0JveEZpbGVTZWxlY3Rvci5iYWNrQnV0dG9uLmNsaWNrKCk7Ci0gICAgY2hl
Y2tDdXJyZW50bHlTZWxlY3RlZEZpbGVOYW1lKCJzY3JpcHQyLmpzIik7Ci0KLSAgICBjb21ib0Jv
eEZpbGVTZWxlY3Rvci5iYWNrQnV0dG9uLmNsaWNrKCk7Ci0gICAgY2hlY2tDdXJyZW50bHlTZWxl
Y3RlZEZpbGVOYW1lKCJzY3JpcHQxLmpzIik7Ci0KLSAgICBjb21ib0JveEZpbGVTZWxlY3Rvci5i
YWNrQnV0dG9uLmNsaWNrKCk7Ci0gICAgY2hlY2tDdXJyZW50bHlTZWxlY3RlZEZpbGVOYW1lKCJp
bmRleC5odG1sIik7Ci0KLSAgICBjb21ib0JveEZpbGVTZWxlY3Rvci5mb3J3YXJkQnV0dG9uLmNs
aWNrKCk7Ci0gICAgY29tYm9Cb3hGaWxlU2VsZWN0b3IuZm9yd2FyZEJ1dHRvbi5jbGljaygpOwot
ICAgIGNoZWNrQ3VycmVudGx5U2VsZWN0ZWRGaWxlTmFtZSgic2NyaXB0Mi5qcyIpOwotCi0gICAg
Y29tYm9Cb3hGaWxlU2VsZWN0b3IucmV2ZWFsVUlTb3VyY2VDb2RlKHVpU291cmNlQ29kZXNbMV0p
OwotCi0gICAgY2hlY2tDdXJyZW50bHlTZWxlY3RlZEZpbGVOYW1lKCJzY3JpcHQxLmpzIik7Ci0g
ICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHModHJ1ZSwgY29tYm9Cb3hGaWxlU2VsZWN0b3Iu
Zm9yd2FyZEJ1dHRvbi5kaXNhYmxlZCk7Ci0KLSAgICBjb21ib0JveEZpbGVTZWxlY3Rvci5iYWNr
QnV0dG9uLmNsaWNrKCk7Ci0gICAgY2hlY2tDdXJyZW50bHlTZWxlY3RlZEZpbGVOYW1lKCJzY3Jp
cHQyLmpzIik7Ci0KLSAgICBjb21ib0JveEZpbGVTZWxlY3Rvci5iYWNrQnV0dG9uLmNsaWNrKCk7
Ci0gICAgY2hlY2tDdXJyZW50bHlTZWxlY3RlZEZpbGVOYW1lKCJpbmRleC5odG1sIik7Ci0KLSAg
ICBJbnNwZWN0b3JUZXN0LmNvbXBsZXRlVGVzdCgpOwotfTsKLQotPC9zY3JpcHQ+Ci0KLTwvaGVh
ZD4KLQotPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgotPHA+VGVzdHMgc2NyaXB0cyBwYW5lbCBj
b21ibyBib3ggZmlsZSBzZWxlY3RvciBoaXN0b3J5LjwvcD4KLQotPC9ib2R5PgotPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3NjcmlwdHMtZmlsZS1z
ZWxlY3Rvci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc2Ny
aXB0cy1maWxlLXNlbGVjdG9yLWV4cGVjdGVkLnR4dAppbmRleCBkMThlYjlhYmU5ZDkyNTA0NmFj
ODA2NDMxYTQ5MTliZDU5YjI5MWZlLi5mZWMyN2FlNGE5N2NiOWJhMWQwNDU4OTI5YWZmYzNlODc4
Mjk4OTMyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc2NyaXB0
cy1maWxlLXNlbGVjdG9yLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
ZGVidWdnZXIvc2NyaXB0cy1maWxlLXNlbGVjdG9yLWV4cGVjdGVkLnR4dApAQCAtMSwyMiArMSw1
IEBACiBUZXN0cyBzY3JpcHRzIHBhbmVsIGZpbGUgc2VsZWN0b3JzLgogCi1EdW1waW5nIENvbWJv
Qm94RmlsZVNlbGVjdG9yOgotICAgID9hPWIoP2E9YikKLSAgICB2ZXJ5X2xvb29vb29vb28uLi5v
b29vb29vb25nX3VybCh2ZXJ5X2xvb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29u
Z191cmwpCi3igJQgZXhhbXBsZS5jb20g4oCUCi0gICAgP2E9YihodHRwOi8vZXhhbXBsZS5jb20v
P2E9YikKLeKAlCBsb2NhbGhvc3Qg4oCUCi1MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIv
Zm9vL2JhcgotICAgIHNjcmlwdC5qcyg8cm9vdD4vZm9vL2Jhci9zY3JpcHQuanMpCi0gICAgc2Ny
aXB0LmpzP2E9MSg8cm9vdD4vZm9vL2Jhci9zY3JpcHQuanM/YT0xKQotICAgIHNjcmlwdC5qcz9h
PTIoPHJvb3Q+L2Zvby9iYXIvc2NyaXB0LmpzP2E9MikKLUxheW91dFRlc3RzL2luc3BlY3Rvci9k
ZWJ1Z2dlci9mb28vYmF6Ci0gICAgc2NyaXB0LmpzKDxyb290Pi9mb28vYmF6L3NjcmlwdC5qcykK
LeKAlCBDb250ZW50IHNjcmlwdHMg4oCUCi1MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIv
Zm9vL2JhcgotICAgIGNvbnRlbnRTY3JpcHQuanM/YT0xKDxyb290Pi9mb28vYmFyL2NvbnRlbnRT
Y3JpcHQuanM/YT0xKQotICAgIGNvbnRlbnRTY3JpcHQuanM/YT0yKDxyb290Pi9mb28vYmFyL2Nv
bnRlbnRTY3JpcHQuanM/YT0yKQotICAgIGNvbnRlbnRTY3JpcHQyLmpzP2E9MSg8cm9vdD4vZm9v
L2Jhci9jb250ZW50U2NyaXB0Mi5qcz9hPTEpCiBEdW1waW5nIFNjcmlwdHNOYXZpZ2F0b3IgJ1Nj
cmlwdHMnIHRhYjoKICAgZXhhbXBsZS5jb20KICAgICA/YT1iCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc2NyaXB0cy1maWxlLXNlbGVjdG9yLmh0bWwgYi9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc2NyaXB0cy1maWxlLXNlbGVjdG9yLmh0bWwKaW5k
ZXggZjA5ZDk0ZjdiMTc5ODhkZDhjMTFjNDllYWMyMTY0OTZhOTBmOGM3Yi4uNjkzOTQ2YmY0ZThj
ZmUwNmFjNGU2Y2Q4NWU2M2FhOGRiMDk0NDNiMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL2RlYnVnZ2VyL3NjcmlwdHMtZmlsZS1zZWxlY3Rvci5odG1sCisrKyBiL0xheW91dFRl
c3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zY3JpcHRzLWZpbGUtc2VsZWN0b3IuaHRtbApAQCAtMTAs
MTQgKzEwLDEyIEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgIFdlYkluc3BlY3Rvci5faXNNYWMgPSBm
YWxzZTsKIAogICAgIHZhciBuYXZpZ2F0b3JGaWxlU2VsZWN0b3IgPSBuZXcgV2ViSW5zcGVjdG9y
LlNjcmlwdHNOYXZpZ2F0b3IoKTsKLSAgICB2YXIgY29tYm9Cb3hGaWxlU2VsZWN0b3IgPSBuZXcg
V2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5Db21ib0JveEZpbGVTZWxlY3RvcigpOwogCiAgICAg
ZnVuY3Rpb24gYWRkVUlTb3VyY2VDb2RlKHVybCwgaXNDb250ZW50U2NyaXB0KQogICAgIHsKICAg
ICAgICAgdmFyIHVpU291cmNlQ29kZSA9IG5ldyBXZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2RlKDAs
IHVybCwgbnVsbCwgbnVsbCk7CiAgICAgICAgIHVpU291cmNlQ29kZS5pc0NvbnRlbnRTY3JpcHQg
PSBpc0NvbnRlbnRTY3JpcHQ7CiAgICAgICAgIG5hdmlnYXRvckZpbGVTZWxlY3Rvci5hZGRVSVNv
dXJjZUNvZGUodWlTb3VyY2VDb2RlKTsKLSAgICAgICAgY29tYm9Cb3hGaWxlU2VsZWN0b3IuYWRk
VUlTb3VyY2VDb2RlKHVpU291cmNlQ29kZSk7CiAgICAgfQogCiAgICAgdmFyIHJvb3RVUkwgPSAi
aHR0cDovL2xvY2FsaG9zdDo4MDgwL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci8iOwpA
QCAtMzIsNyArMzAsNiBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICBhZGRVSVNvdXJjZUNvZGUoIj9h
PWIiLCBmYWxzZSk7CiAgICAgYWRkVUlTb3VyY2VDb2RlKCJ2ZXJ5X2xvb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29uZ191cmwiLCBmYWxzZSk7CiAKLSAgICBJbnNwZWN0b3JUZXN0
LmR1bXBDb21ib0JveEZpbGVTZWxlY3Rvcihjb21ib0JveEZpbGVTZWxlY3RvcikKICAgICBJbnNw
ZWN0b3JUZXN0LmR1bXBTY3JpcHRzTmF2aWdhdG9yKG5hdmlnYXRvckZpbGVTZWxlY3Rvcik7CiAK
ICAgICBJbnNwZWN0b3JUZXN0LmNvbXBsZXRlVGVzdCgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3NjcmlwdHMtcGFuZWwtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3NjcmlwdHMtcGFuZWwtZXhwZWN0ZWQudHh0CmluZGV4
IDNiNWUwYTgwNDZjNDI4YTkxODgwMDFkOTk5MWJiOGI1MzFhOTgwOWUuLjU4OGE3YmQwYmEzYjJm
NGU5YzVkMWE0YTE4YWZmYTQ2ZjZkNzc1OWYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9kZWJ1Z2dlci9zY3JpcHRzLXBhbmVsLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvZGVidWdnZXIvc2NyaXB0cy1wYW5lbC1leHBlY3RlZC50eHQKQEAgLTEwLDE1
ICsxMCw2IEBAIER1bXBpbmcgU2NyaXB0c05hdmlnYXRvciAnU2NyaXB0cycgdGFiOgogRHVtcGlu
ZyBTY3JpcHRzTmF2aWdhdG9yICdDb250ZW50IHNjcmlwdHMnIHRhYjoKIFNvdXJjZSByZXF1ZXN0
ZWQgZm9yIGJhei5qcwogCi1SdW5uaW5nOiB0ZXN0SW5pdGlhbExvYWRXaXRoQ29tYm9Cb3hGaWxl
U2VsZWN0b3IKLVNvdXJjZSByZXF1ZXN0ZWQgZm9yIGZvb2Jhci5qcwotRHVtcCBmaWxlcyBzZWxl
Y3Q6Ci0gICAgYmFyLmpzCi0gICAgYmF6LmpzCi0gICAgZm9vLmpzCi0gICAgZm9vYmFyLmpzCi1T
b3VyY2UgcmVxdWVzdGVkIGZvciBiYXouanMKLQogUnVubmluZzogdGVzdFJlc2V0CiBTb3VyY2Ug
cmVxdWVzdGVkIGZvciBiYXouanMKIER1bXBpbmcgU2NyaXB0c05hdmlnYXRvciAnU2NyaXB0cycg
dGFiOgpAQCAtNDgsMTkgKzM5LDMgQEAgRHVtcGluZyBTY3JpcHRzTmF2aWdhdG9yICdTY3JpcHRz
JyB0YWI6CiAgIGZvby5qcwogRHVtcGluZyBTY3JpcHRzTmF2aWdhdG9yICdDb250ZW50IHNjcmlw
dHMnIHRhYjoKIAotUnVubmluZzogdGVzdFNvdXJjZVJlcGxhY2VkV2l0aENvbWJvQm94RmlsZVNl
bGVjdG9yCi1Tb3VyY2UgcmVxdWVzdGVkIGZvciBmb28uanMKLUR1bXBpbmcgQ29tYm9Cb3hGaWxl
U2VsZWN0b3I6Ci0gICAgY29tcGlsZWQuanMoY29tcGlsZWQuanMpCi0gICAgZm9vLmpzKGZvby5q
cykKLUR1bXBpbmcgQ29tYm9Cb3hGaWxlU2VsZWN0b3I6Ci0gICAgZm9vLmpzKGZvby5qcykKLSAg
ICBzb3VyY2UxLmpzKHNvdXJjZTEuanMpCi0gICAgc291cmNlMi5qcyhzb3VyY2UyLmpzKQotU291
cmNlIHJlcXVlc3RlZCBmb3Igc291cmNlMi5qcwotU291cmNlIHJlcXVlc3RlZCBmb3Igc291cmNl
MS5qcwotU291cmNlIHJlcXVlc3RlZCBmb3IgY29tcGlsZWQuanMKLUR1bXBpbmcgQ29tYm9Cb3hG
aWxlU2VsZWN0b3I6Ci0gICAgY29tcGlsZWQuanMoY29tcGlsZWQuanMpCi0gICAgZm9vLmpzKGZv
by5qcykKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3Njcmlw
dHMtcGFuZWwuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zY3JpcHRzLXBh
bmVsLmh0bWwKaW5kZXggOWQ5MzlkMDM5MGY5Yzc4M2NjNDA3Y2NhNDk0ZmFiMDkyZGE4OGJlMi4u
ODE0OTE5YTk4MjEwNWY1MTg2MDA2MGFkMmZhYWUzMWZhODM4NzkyNCAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3NjcmlwdHMtcGFuZWwuaHRtbAorKysgYi9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc2NyaXB0cy1wYW5lbC5odG1sCkBAIC04MCw0MiAr
ODAsNiBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgICAgIG5leHQoKTsKICAgICAgICAgfSwK
IAotICAgICAgICBmdW5jdGlvbiB0ZXN0SW5pdGlhbExvYWRXaXRoQ29tYm9Cb3hGaWxlU2VsZWN0
b3IobmV4dCkKLSAgICAgICAgewotICAgICAgICAgICAgdmFyIG1vZGVsID0gY3JlYXRlRGVidWdn
ZXJQcmVzZW50YXRpb25Nb2RlbE1vY2soKTsKLSAgICAgICAgICAgIHZhciB1aVNvdXJjZUNvZGUg
PSBjcmVhdGVVSVNvdWNlQ29kZSgiZm9vYmFyLmpzIik7Ci0gICAgICAgICAgICB2YXIgdWlTb3Vy
Y2VDb2RlRm9vID0gY3JlYXRlVUlTb3VjZUNvZGUoImZvby5qcyIpOwotICAgICAgICAgICAgdmFy
IHVpU291cmNlQ29kZUJhciA9IGNyZWF0ZVVJU291Y2VDb2RlKCJiYXIuanMiKTsKLSAgICAgICAg
ICAgIHZhciB1aVNvdXJjZUNvZGVCYXogPSBjcmVhdGVVSVNvdWNlQ29kZSgiYmF6LmpzIik7Ci0K
LSAgICAgICAgICAgIG1vZGVsLl9hZGRVSVNvdXJjZUNvZGUodWlTb3VyY2VDb2RlKTsKLQotICAg
ICAgICAgICAgV2ViSW5zcGVjdG9yLnNldHRpbmdzLnVzZVNjcmlwdHNOYXZpZ2F0b3Iuc2V0KGZh
bHNlKTsKLSAgICAgICAgICAgIHZhciBwYW5lbCA9IG5ldyBXZWJJbnNwZWN0b3IuU2NyaXB0c1Bh
bmVsKG1vZGVsKTsKLSAgICAgICAgICAgIFdlYkluc3BlY3Rvci5zZXR0aW5ncy51c2VTY3JpcHRz
TmF2aWdhdG9yLnNldCh0cnVlKTsKLSAgICAgICAgICAgIHBhbmVsLnNob3coKTsKLQotICAgICAg
ICAgICAgbW9kZWwuX2FkZFVJU291cmNlQ29kZSh1aVNvdXJjZUNvZGVGb28pOwotICAgICAgICAg
ICAgbW9kZWwuX2FkZFVJU291cmNlQ29kZSh1aVNvdXJjZUNvZGVCYXIpOwotICAgICAgICAgICAg
bW9kZWwuX2FkZFVJU291cmNlQ29kZSh1aVNvdXJjZUNvZGVCYXopOwotCi0gICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiRHVtcCBmaWxlcyBzZWxlY3Q6Iik7Ci0gICAgICAgICAg
ICB2YXIgc2VsZWN0ID0gcGFuZWwuX2ZpbGVTZWxlY3Rvci5fZmlsZXNTZWxlY3RFbGVtZW50Owot
ICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzZWxlY3QubGVuZ3RoOyArK2kpCi0gICAg
ICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoc2VsZWN0W2ldLnRleHQucmVwbGFj
ZSgvXHUwMGEwL2csICIgIikpOwotCi0gICAgICAgICAgICAvLyBTZWxlY3RlZCBmaWxlIHNob3Vs
ZCBiZSAiZm9vLmpzIi4KLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKDMs
IHNlbGVjdC5zZWxlY3RlZEluZGV4KTsKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0
RXF1YWxzKCJmb29iYXIuanMiLCBzZWxlY3RbM10udGV4dC5yZXBsYWNlKC9ccy9nLCAiIikpOwot
Ci0gICAgICAgICAgICAvLyBTZWxlY3QgImJhei5qcyIuCi0gICAgICAgICAgICBzZWxlY3Quc2Vs
ZWN0ZWRJbmRleCA9IDE7Ci0gICAgICAgICAgICBwYW5lbC5fZmlsZVNlbGVjdG9yLl9maWxlc1Nl
bGVjdENoYW5nZWQoKTsKLSAgICAgICAgICAgIHBhbmVsLmRldGFjaCgpOwotCi0gICAgICAgICAg
ICBuZXh0KCk7Ci0gICAgICAgIH0sCi0KICAgICAgICAgZnVuY3Rpb24gdGVzdFJlc2V0KG5leHQp
CiAgICAgICAgIHsKICAgICAgICAgICAgIHZhciBtb2RlbCA9IGNyZWF0ZURlYnVnZ2VyUHJlc2Vu
dGF0aW9uTW9kZWxNb2NrKCk7CkBAIC0xNzMsNDIgKzEzNyw2IEBAIGZ1bmN0aW9uIHRlc3QoKQog
ICAgICAgICAgICAgICAgIHBhbmVsLmRldGFjaCgpOwogICAgICAgICAgICAgICAgIG5leHQoKTsK
ICAgICAgICAgICAgIH0KLSAgICAgICAgfSwKLQotICAgICAgICBmdW5jdGlvbiB0ZXN0U291cmNl
UmVwbGFjZWRXaXRoQ29tYm9Cb3hGaWxlU2VsZWN0b3IobmV4dCkKLSAgICAgICAgewotICAgICAg
ICAgICAgdmFyIG1vZGVsID0gY3JlYXRlRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbE1vY2soKTsK
LSAgICAgICAgICAgIFdlYkluc3BlY3Rvci5zZXR0aW5ncy51c2VTY3JpcHRzTmF2aWdhdG9yLnNl
dChmYWxzZSk7Ci0gICAgICAgICAgICB2YXIgcGFuZWwgPSBuZXcgV2ViSW5zcGVjdG9yLlNjcmlw
dHNQYW5lbChtb2RlbCk7Ci0gICAgICAgICAgICBXZWJJbnNwZWN0b3Iuc2V0dGluZ3MudXNlU2Ny
aXB0c05hdmlnYXRvci5zZXQodHJ1ZSk7Ci0gICAgICAgICAgICBwYW5lbC5zaG93KCk7Ci0KLSAg
ICAgICAgICAgIHZhciB1aVNvdXJjZUNvZGVGb28gPSBjcmVhdGVVSVNvdWNlQ29kZSgiZm9vLmpz
Iik7Ci0gICAgICAgICAgICBtb2RlbC5fYWRkVUlTb3VyY2VDb2RlKHVpU291cmNlQ29kZUZvbyk7
Ci0gICAgICAgICAgICB2YXIgY29tcGlsZWRTb3VyY2VDb2RlID0gY3JlYXRlVUlTb3VjZUNvZGUo
ImNvbXBpbGVkLmpzIik7Ci0gICAgICAgICAgICBtb2RlbC5fYWRkVUlTb3VyY2VDb2RlKGNvbXBp
bGVkU291cmNlQ29kZSk7Ci0KLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZHVtcENvbWJvQm94
RmlsZVNlbGVjdG9yKHBhbmVsLl9maWxlU2VsZWN0b3IpOwotCi0gICAgICAgICAgICAvLyBQbHVn
IGNvbXBpbGVyIHNvdXJjZSBtYXBwaW5nLgotICAgICAgICAgICAgdmFyIHNvdXJjZTFTb3VyY2VD
b2RlID0gY3JlYXRlVUlTb3VjZUNvZGUoInNvdXJjZTEuanMiKTsKLSAgICAgICAgICAgIHZhciBz
b3VyY2UyU291cmNlQ29kZSA9IGNyZWF0ZVVJU291Y2VDb2RlKCJzb3VyY2UyLmpzIik7Ci0gICAg
ICAgICAgICBtb2RlbC5fcmVwbGFjZVVJU291cmNlQ29kZXMoW2NvbXBpbGVkU291cmNlQ29kZV0s
IFtzb3VyY2UxU291cmNlQ29kZSwgc291cmNlMlNvdXJjZUNvZGVdKTsKLSAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuZHVtcENvbWJvQm94RmlsZVNlbGVjdG9yKHBhbmVsLl9maWxlU2VsZWN0b3Ip
OwotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5zaG93U2NyaXB0U291cmNlT25TY3JpcHRzUGFu
ZWwocGFuZWwsICJzb3VyY2UyLmpzIiwgc3RlcDIpOwotCi0gICAgICAgICAgICBmdW5jdGlvbiBz
dGVwMigpIHsKLSAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LnNob3dTY3JpcHRTb3VyY2VP
blNjcmlwdHNQYW5lbChwYW5lbCwgInNvdXJjZTEuanMiLCBzdGVwMyk7Ci0gICAgICAgICAgICB9
Ci0KLSAgICAgICAgICAgIGZ1bmN0aW9uIHN0ZXAzKCkgewotICAgICAgICAgICAgICAgIC8vIFVu
cGx1ZyBjb21waWxlciBzb3VyY2UgbWFwcGluZy4KLSAgICAgICAgICAgICAgICBtb2RlbC5fcmVw
bGFjZVVJU291cmNlQ29kZXMoW3NvdXJjZTFTb3VyY2VDb2RlLCBzb3VyY2UyU291cmNlQ29kZV0s
IFtjb21waWxlZFNvdXJjZUNvZGVdKTsKLSAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmR1
bXBDb21ib0JveEZpbGVTZWxlY3RvcihwYW5lbC5fZmlsZVNlbGVjdG9yKTsKLQotICAgICAgICAg
ICAgICAgIHBhbmVsLmRldGFjaCgpOwotICAgICAgICAgICAgICAgIG5leHQoKTsKLSAgICAgICAg
ICAgIH0KICAgICAgICAgfQogICAgIF0pOwogfTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lu
c3BlY3Rvci9kZWJ1Z2dlci9zY3JpcHRzLXNvcnRpbmctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3NjcmlwdHMtc29ydGluZy1leHBlY3RlZC50eHQKaW5kZXgg
MDIzMGNkNmVkMjY1MDFmN2NiNTc2MzEzYmRlOTdiZjRlMzYzMjk5Yy4uYTlmMmFkYWI1ZDU4NTY4
NTk5Y2QyNWU5YjAzNzEwZWU2YjliYzllYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL2RlYnVnZ2VyL3NjcmlwdHMtc29ydGluZy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3NjcmlwdHMtc29ydGluZy1leHBlY3RlZC50eHQKQEAgLTIs
MzQgKzIsNiBAQCBUZXN0cyBzY3JpcHRzIHNvcnRpbmcgaW4gdGhlIHNjcmlwdHMgcGFuZWwuCiAK
IAogV2ViSW5zcGVjdG9yLnNldHRpbmdzLnNob3dTY3JpcHRGb2xkZXJzID0gdHJ1ZQotRHVtcGlu
ZyBDb21ib0JveEZpbGVTZWxlY3RvcjoKLSAgICAqTm9uKlVSTCpwYXRoKCpOb24qVVJMKnBhdGgp
Ci3igJQgYmFyLmNvbSDigJQKLS9mb28vcGF0aAotICAgIGJhci5qcz9maWxlPWJhci96enouanMo
aHR0cDovL2Jhci5jb20vZm9vL3BhdGgvYmFyLmpzP2ZpbGU9YmFyL3p6ei5qcykKLSAgICBmb28u
anM/ZmlsZT1iYXIvYWFhLmpzKGh0dHA6Ly9iYXIuY29tL2Zvby9wYXRoL2Zvby5qcz9maWxlPWJh
ci9hYWEuanMpCi3igJQgZm9vLmNvbSDigJQKLSAgICBibG9jay5qcz9ibG9jaz1mb28oaHR0cDov
L2Zvby5jb20vYmxvY2suanM/YmxvY2s9Zm9vKQotICAgIGdhLmpzKGh0dHA6Ly9mb28uY29tL2dh
LmpzKQotICAgIGxlbnRhLmJhbj9wZz00ODgzJmlmcj0xKGh0dHA6Ly9mb28uY29tL2xlbnRhLmJh
bj9wZz00ODgzJmlmcj0xKQotICAgIGxlbnRhLmJhbj9wZz01MzA5Jmlmcj0xKGh0dHA6Ly9mb28u
Y29tL2xlbnRhLmJhbj9wZz01MzA5Jmlmcj0xKQotICAgIHRvcDEwMC5qY24/ODA2NzQoaHR0cDov
L2Zvby5jb20vdG9wMTAwLmpjbj84MDY3NCkKLS9fanMvcHJvZHVjdGlvbgotICAgIG1vdG9yLmpz
PzEzMDg5Mjc0MzIoaHR0cDovL2Zvby5jb20vX2pzL3Byb2R1Y3Rpb24vbW90b3IuanM/MTMwODky
NzQzMikKLS9mb28vcGF0aAotICAgIGJhci5qcz9maWxlPWJhci96enouanMoaHR0cDovL2Zvby5j
b20vZm9vL3BhdGgvYmFyLmpzP2ZpbGU9YmFyL3p6ei5qcykKLSAgICBmb28uanM/ZmlsZT1iYXIv
YWFhLmpzKGh0dHA6Ly9mb28uY29tL2Zvby9wYXRoL2Zvby5qcz9maWxlPWJhci9hYWEuanMpCi0v
aQotICAgIHhnZW1pdXMuanMoaHR0cDovL2Zvby5jb20vaS94Z2VtaXVzLmpzKQotL2kvanMKLSAg
ICBqcXVlcnktMS41LjEubWluLmpzKGh0dHA6Ly9mb28uY29tL2kvanMvanF1ZXJ5LTEuNS4xLm1p
bi5qcykKLSAgICBqcXVlcnkuY29va2llLmpzKGh0dHA6Ly9mb28uY29tL2kvanMvanF1ZXJ5LmNv
b2tpZS5qcykKLeKAlCBDb250ZW50IHNjcmlwdHMg4oCUCi0gICAgKk5vbipVUkwqcGF0aCgqTm9u
KlVSTCpwYXRoKQotZXh0ZW5zaW9uLW5hbWUKLSAgICBiYXIuanMoZXh0ZW5zaW9uLXNjaGVtYTov
L2V4dGVuc2lvbi1uYW1lL2Jhci5qcykKLWV4dGVuc2lvbi1uYW1lL2ZvbGRlcgotICAgIGJhei5q
cyhleHRlbnNpb24tc2NoZW1hOi8vZXh0ZW5zaW9uLW5hbWUvZm9sZGVyL2Jhei5qcykKIER1bXBp
bmcgU2NyaXB0c05hdmlnYXRvciAnU2NyaXB0cycgdGFiOgogICBiYXIuY29tCiAgICAgZm9vL3Bh
dGgKQEAgLTYwLDI1ICszMiw2IEBAIER1bXBpbmcgU2NyaXB0c05hdmlnYXRvciAnQ29udGVudCBz
Y3JpcHRzJyB0YWI6CiAgICpOb24qVVJMKnBhdGgKIAogV2ViSW5zcGVjdG9yLnNldHRpbmdzLnNo
b3dTY3JpcHRGb2xkZXJzID0gZmFsc2UKLUR1bXBpbmcgQ29tYm9Cb3hGaWxlU2VsZWN0b3I6Ci0q
Tm9uKlVSTCpwYXRoKCpOb24qVVJMKnBhdGgpCi1iYXIuanM/ZmlsZT1iYXIvenp6LmpzKGh0dHA6
Ly9mb28uY29tL2Zvby9wYXRoL2Jhci5qcz9maWxlPWJhci96enouanMpCi1iYXIuanM/ZmlsZT1i
YXIvenp6LmpzKGh0dHA6Ly9iYXIuY29tL2Zvby9wYXRoL2Jhci5qcz9maWxlPWJhci96enouanMp
Ci1ibG9jay5qcz9ibG9jaz1mb28oaHR0cDovL2Zvby5jb20vYmxvY2suanM/YmxvY2s9Zm9vKQot
Zm9vLmpzP2ZpbGU9YmFyL2FhYS5qcyhodHRwOi8vZm9vLmNvbS9mb28vcGF0aC9mb28uanM/Zmls
ZT1iYXIvYWFhLmpzKQotZm9vLmpzP2ZpbGU9YmFyL2FhYS5qcyhodHRwOi8vYmFyLmNvbS9mb28v
cGF0aC9mb28uanM/ZmlsZT1iYXIvYWFhLmpzKQotZ2EuanMoaHR0cDovL2Zvby5jb20vZ2EuanMp
Ci1qcXVlcnktMS41LjEubWluLmpzKGh0dHA6Ly9mb28uY29tL2kvanMvanF1ZXJ5LTEuNS4xLm1p
bi5qcykKLWpxdWVyeS5jb29raWUuanMoaHR0cDovL2Zvby5jb20vaS9qcy9qcXVlcnkuY29va2ll
LmpzKQotbGVudGEuYmFuP3BnPTQ4ODMmaWZyPTEoaHR0cDovL2Zvby5jb20vbGVudGEuYmFuP3Bn
PTQ4ODMmaWZyPTEpCi1sZW50YS5iYW4/cGc9NTMwOSZpZnI9MShodHRwOi8vZm9vLmNvbS9sZW50
YS5iYW4/cGc9NTMwOSZpZnI9MSkKLW1vdG9yLmpzPzEzMDg5Mjc0MzIoaHR0cDovL2Zvby5jb20v
X2pzL3Byb2R1Y3Rpb24vbW90b3IuanM/MTMwODkyNzQzMikKLXRvcDEwMC5qY24/ODA2NzQoaHR0
cDovL2Zvby5jb20vdG9wMTAwLmpjbj84MDY3NCkKLXhnZW1pdXMuanMoaHR0cDovL2Zvby5jb20v
aS94Z2VtaXVzLmpzKQot4oCUIENvbnRlbnQgc2NyaXB0cyDigJQKLSpOb24qVVJMKnBhdGgoKk5v
bipVUkwqcGF0aCkKLWV4dGVuc2lvbi1uYW1lL2Jhci5qcyhleHRlbnNpb24tc2NoZW1hOi8vZXh0
ZW5zaW9uLW5hbWUvYmFyLmpzKQotZXh0ZW5zaW9uLW5hbWUvZm9sZGVyL2Jhei5qcyhleHRlbnNp
b24tc2NoZW1hOi8vZXh0ZW5zaW9uLW5hbWUvZm9sZGVyL2Jhei5qcykKIER1bXBpbmcgU2NyaXB0
c05hdmlnYXRvciAnU2NyaXB0cycgdGFiOgogICAqTm9uKlVSTCpwYXRoCiAgIGJhci5qcz9maWxl
PWJhci96enouanMKQEAgLTEwMCwzNCArNTMsNiBAQCBEdW1waW5nIFNjcmlwdHNOYXZpZ2F0b3Ig
J0NvbnRlbnQgc2NyaXB0cycgdGFiOgogICBiYXouanMKIAogV2ViSW5zcGVjdG9yLnNldHRpbmdz
LnNob3dTY3JpcHRGb2xkZXJzID0gdHJ1ZQotRHVtcGluZyBDb21ib0JveEZpbGVTZWxlY3RvcjoK
LSAgICAqTm9uKlVSTCpwYXRoKCpOb24qVVJMKnBhdGgpCi3igJQgYmFyLmNvbSDigJQKLS9mb28v
cGF0aAotICAgIGJhci5qcz9maWxlPWJhci96enouanMoaHR0cDovL2Jhci5jb20vZm9vL3BhdGgv
YmFyLmpzP2ZpbGU9YmFyL3p6ei5qcykKLSAgICBmb28uanM/ZmlsZT1iYXIvYWFhLmpzKGh0dHA6
Ly9iYXIuY29tL2Zvby9wYXRoL2Zvby5qcz9maWxlPWJhci9hYWEuanMpCi3igJQgZm9vLmNvbSDi
gJQKLSAgICBibG9jay5qcz9ibG9jaz1mb28oaHR0cDovL2Zvby5jb20vYmxvY2suanM/YmxvY2s9
Zm9vKQotICAgIGdhLmpzKGh0dHA6Ly9mb28uY29tL2dhLmpzKQotICAgIGxlbnRhLmJhbj9wZz00
ODgzJmlmcj0xKGh0dHA6Ly9mb28uY29tL2xlbnRhLmJhbj9wZz00ODgzJmlmcj0xKQotICAgIGxl
bnRhLmJhbj9wZz01MzA5Jmlmcj0xKGh0dHA6Ly9mb28uY29tL2xlbnRhLmJhbj9wZz01MzA5Jmlm
cj0xKQotICAgIHRvcDEwMC5qY24/ODA2NzQoaHR0cDovL2Zvby5jb20vdG9wMTAwLmpjbj84MDY3
NCkKLS9fanMvcHJvZHVjdGlvbgotICAgIG1vdG9yLmpzPzEzMDg5Mjc0MzIoaHR0cDovL2Zvby5j
b20vX2pzL3Byb2R1Y3Rpb24vbW90b3IuanM/MTMwODkyNzQzMikKLS9mb28vcGF0aAotICAgIGJh
ci5qcz9maWxlPWJhci96enouanMoaHR0cDovL2Zvby5jb20vZm9vL3BhdGgvYmFyLmpzP2ZpbGU9
YmFyL3p6ei5qcykKLSAgICBmb28uanM/ZmlsZT1iYXIvYWFhLmpzKGh0dHA6Ly9mb28uY29tL2Zv
by9wYXRoL2Zvby5qcz9maWxlPWJhci9hYWEuanMpCi0vaQotICAgIHhnZW1pdXMuanMoaHR0cDov
L2Zvby5jb20vaS94Z2VtaXVzLmpzKQotL2kvanMKLSAgICBqcXVlcnktMS41LjEubWluLmpzKGh0
dHA6Ly9mb28uY29tL2kvanMvanF1ZXJ5LTEuNS4xLm1pbi5qcykKLSAgICBqcXVlcnkuY29va2ll
LmpzKGh0dHA6Ly9mb28uY29tL2kvanMvanF1ZXJ5LmNvb2tpZS5qcykKLeKAlCBDb250ZW50IHNj
cmlwdHMg4oCUCi0gICAgKk5vbipVUkwqcGF0aCgqTm9uKlVSTCpwYXRoKQotZXh0ZW5zaW9uLW5h
bWUKLSAgICBiYXIuanMoZXh0ZW5zaW9uLXNjaGVtYTovL2V4dGVuc2lvbi1uYW1lL2Jhci5qcykK
LWV4dGVuc2lvbi1uYW1lL2ZvbGRlcgotICAgIGJhei5qcyhleHRlbnNpb24tc2NoZW1hOi8vZXh0
ZW5zaW9uLW5hbWUvZm9sZGVyL2Jhei5qcykKIER1bXBpbmcgU2NyaXB0c05hdmlnYXRvciAnU2Ny
aXB0cycgdGFiOgogICBiYXIuY29tCiAgICAgZm9vL3BhdGgKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zY3JpcHRzLXNvcnRpbmcuaHRtbCBiL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9kZWJ1Z2dlci9zY3JpcHRzLXNvcnRpbmcuaHRtbAppbmRleCBlZTQxMDk2OTVm
OTRjZmQyMmM4NWU4ZmU2ODUwNmFmNThmY2JiMjE3Li5kM2M4NmM5MGU2MjViZjgwYzFiNGM3NTNh
MWM0ZDVmMDM4OGU4YzZjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdn
ZXIvc2NyaXB0cy1zb3J0aW5nLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVn
Z2VyL3NjcmlwdHMtc29ydGluZy5odG1sCkBAIC0xMCw3ICsxMCw2IEBAIGZ1bmN0aW9uIHRlc3Qo
KQogICAgIFdlYkluc3BlY3Rvci5faXNNYWMgPSBmYWxzZTsKIAogICAgIHZhciBuYXZpZ2F0b3JG
aWxlU2VsZWN0b3IgPSBuZXcgV2ViSW5zcGVjdG9yLlNjcmlwdHNOYXZpZ2F0b3IoKTsKLSAgICB2
YXIgY29tYm9Cb3hGaWxlU2VsZWN0b3IgPSBuZXcgV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5D
b21ib0JveEZpbGVTZWxlY3RvcigpOwogCiAgICAgdmFyIG5leHRJZCA9IDE7CiAgICAgZnVuY3Rp
b24gYWRkVUlTb3VyY2VDb2RlKHVybCwgaXNDb250ZW50U2NyaXB0KQpAQCAtMTgsNyArMTcsNiBA
QCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgdmFyIHVpU291cmNlQ29kZSA9IG5ldyBXZWJJbnNw
ZWN0b3IuVUlTb3VyY2VDb2RlKG5leHRJZCsrLCB1cmwsIG51bGwsIG51bGwpOwogICAgICAgICB1
aVNvdXJjZUNvZGUuaXNDb250ZW50U2NyaXB0ID0gaXNDb250ZW50U2NyaXB0OwogICAgICAgICBu
YXZpZ2F0b3JGaWxlU2VsZWN0b3IuYWRkVUlTb3VyY2VDb2RlKHVpU291cmNlQ29kZSk7Ci0gICAg
ICAgIGNvbWJvQm94RmlsZVNlbGVjdG9yLmFkZFVJU291cmNlQ29kZSh1aVNvdXJjZUNvZGUpOwog
ICAgIH0KIAogICAgIGZ1bmN0aW9uIGR1bXBTY3JpcHRzTGlzdCgpCkBAIC0yNiw3ICsyNCw2IEBA
IGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiIik7CiAg
ICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJXZWJJbnNwZWN0b3Iuc2V0dGluZ3Muc2hv
d1NjcmlwdEZvbGRlcnMgPSAiICsgV2ViSW5zcGVjdG9yLnNldHRpbmdzLnNob3dTY3JpcHRGb2xk
ZXJzLmdldCgpKTsKIAotICAgICAgICBJbnNwZWN0b3JUZXN0LmR1bXBDb21ib0JveEZpbGVTZWxl
Y3Rvcihjb21ib0JveEZpbGVTZWxlY3Rvcik7CiAgICAgICAgIEluc3BlY3RvclRlc3QuZHVtcFNj
cmlwdHNOYXZpZ2F0b3IobmF2aWdhdG9yRmlsZVNlbGVjdG9yKTsKICAgICB9CiAKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zb3VyY2UtZnJhbWUtY291bnQuaHRt
bCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zb3VyY2UtZnJhbWUtY291bnQuaHRt
bAppbmRleCA3N2Q5MjI1YWQ2OWJlOTZiODRmYWExNzg2OTFhYWJmMjdlM2U4MmQxLi4wODg0MWZm
ZWYxZWVhNjdhZTE4ODBjM2I3MTBkMTE3ZGM5NDMzOTM1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvZGVidWdnZXIvc291cmNlLWZyYW1lLWNvdW50Lmh0bWwKKysrIGIvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3NvdXJjZS1mcmFtZS1jb3VudC5odG1sCkBAIC0xNCw3
ICsxNCw3IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICBmdW5jdGlvbiB0ZXN0U291cmNlRnJh
bWVzQ291bnQobmV4dCkKICAgICAgICAgewogICAgICAgICAgICAgdmFyIHBhbmVsID0gV2ViSW5z
cGVjdG9yLnBhbmVscy5zY3JpcHRzOwotICAgICAgICAgICAgdmFyIHNlbGVjdCA9IHBhbmVsLl9m
aWxlU2VsZWN0b3IuX2ZpbGVzU2VsZWN0RWxlbWVudDsKKyAgICAgICAgICAgIHZhciBzZWxlY3Qg
PSBwYW5lbC5fbmF2aWdhdG9yLl9maWxlc1NlbGVjdEVsZW1lbnQ7CiAgICAgICAgICAgICB2YXIg
c291cmNlRnJhbWVDb3VudCA9IDA7CiAKICAgICAgICAgICAgIEluc3BlY3RvclRlc3Quc2hvd1Nj
cmlwdFNvdXJjZSgic291cmNlLWZyYW1lLWNvdW50Lmh0bWwiLCBzdGVwMik7Cg==
</data>
<flag name="review"
          id="140907"
          type_id="1"
          status="+"
          setter="yurys"
    />
          </attachment>
      

    </bug>

</bugzilla>