<?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>232699</bug_id>
          
          <creation_ts>2021-11-04 00:02:09 -0700</creation_ts>
          <short_desc>Web Inspector: sync changes to settings across instances</short_desc>
          <delta_ts>2021-11-10 23:03:19 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=232697</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=232698</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Devin Rousso">hi</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>hi</cc>
    
    <cc>inspector-bugzilla-changes</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1811775</commentid>
    <comment_count>0</comment_count>
    <who name="Devin Rousso">hi</who>
    <bug_when>2021-11-04 00:02:09 -0700</bug_when>
    <thetext>.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1811788</commentid>
    <comment_count>1</comment_count>
      <attachid>443285</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2021-11-04 01:49:25 -0700</bug_when>
    <thetext>Created attachment 443285
[Patch] WIP

Now that `BroadcastChannel` exists, I figured I&apos;d give this a shot as it&apos;s something I&apos;ve always wanted to try :)

Having used it briefly, however, I&apos;m a bit conflicted.

On one hand, there definitely is something super awesome about things just magically syncing between Web Inspector instances (e.g. adding a JS breakpoint in one will make it appear (assuming you&apos;re inspecting the same page) in the other).  If not everything it would at least be nice to have more general UI things sync (e.g. Appearance, indentation style, etc.).

On the other hand, having Web Inspector instances be (mostly) isolated means that you can do different things in each while they&apos;re both simultaneously open.  As an example, when debugging two versions of the same site (e.g. the server sends back different content depending on some state) it may actually be incorrect to sync things like breakpoints as the contents of resources with the same `objectIdentifier` may not be the same (note that `objectIdentifier` is intended to be a way of uniquely identifying something within a specific Web Inspector, not globally).

Regardless, there are still some kinks to work out in this
- figure out how to guarantee that `WI.FrontendSynchronizer.close();` is called, no matter how Web Inspector is closed
- make sure all `WI.Setting` actually listen for changes (e.g. `_bootstrapScriptEnabledSetting`)
- write some tests (will likely have to be an API test as I don&apos;t think LayoutTests allow for multiple pages/inspectors)
- confirm that no extra work is being done if there are no other Web Inspector frontends to talk to
- audit the codepaths surrounding each usage of `WI.FrontendSynchronizer` to really make sure that there&apos;s no re-entrancy or infinite ping-pong (`BroadcastChannel` is only supposed to send a `&quot;message&quot;` to _other_ instances, but if they then turn around and send it right back then we&apos;re in a bit of a pickle)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1813923</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-11-10 23:03:19 -0800</bug_when>
    <thetext>&lt;rdar://problem/85286040&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>443285</attachid>
            <date>2021-11-04 01:49:25 -0700</date>
            <delta_ts>2021-11-04 01:49:25 -0700</delta_ts>
            <desc>[Patch] WIP</desc>
            <filename>232699.diff</filename>
            <type>text/plain</type>
            <size>67833</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci91bml0LXRlc3RzL211bHRpbWFwLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci91bml0LXRlc3RzL211bHRpbWFwLWV4
cGVjdGVkLnR4dAppbmRleCA5MmM1NDY1MDgxZDkuLmE3MGNjMmU3YTE0NSAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL3VuaXQtdGVzdHMvbXVsdGltYXAtZXhwZWN0ZWQudHh0Cisr
KyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci91bml0LXRlc3RzL211bHRpbWFwLWV4cGVjdGVkLnR4
dApAQCAtMTAyLDYgKzEwMiwxMCBAQCBQQVNTOiBSZXN1bHQgc2hvdWxkIGluY2x1ZGUgInJhY2Nv
b24iLgogW1sib25lIiwidHdvIl0sWyJvbmUiLCJmaXZlIl0sWyJ0aHJlZSIsImZvdXIiXSxbInRo
cmVlIiwic2l4Il1dCiBbWyJvbmUiLFsidHdvIiwiZml2ZSJdXSxbInRocmVlIixbImZvdXIiLCJz
aXgiXV1dCiAKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBNdWx0aW1hcC5wcm90b3R5cGUuZmluZAor
W1sib25lIiwidHdvIl0sWyJvbmUiLCJmaXZlIl0sWyJ0aHJlZSIsImZvdXIiXSxbInRocmVlIiwi
c2l4Il1dCitQQVNTOiBTaG91bGQgc3RvcCBpdGVyYXRpbmcgb25jZSB0aGUgY2FsbGJhY2sgcmV0
dXJucyBgdHJ1ZWAuCisKIC0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBNdWx0aW1hcC5wcm90b3R5cGUu
Y29weQogW1sib25lIiwidHdvIl0sWyJ0aHJlZSIsImZvdXIiXV0KIFBBU1M6IENvcHkgc2hvdWxk
IG5vdCByZXR1cm4gdGhlIHNhbWUgb2JqZWN0LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL3VuaXQtdGVzdHMvbXVsdGltYXAuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci91
bml0LXRlc3RzL211bHRpbWFwLmh0bWwKaW5kZXggOGFlM2VlZDMwYzAzLi44ODU0ZTU5MzlkNzkg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci91bml0LXRlc3RzL211bHRpbWFwLmh0
bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3VuaXQtdGVzdHMvbXVsdGltYXAuaHRtbApA
QCAtMjkzLDYgKzI5MywyNyBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgfSwKICAgICB9KTsK
IAorICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIk11bHRpbWFwLnByb3Rv
dHlwZS5maW5kIiwKKyAgICAgICAgdGVzdCgpIHsKKyAgICAgICAgICAgIGxldCBtdWx0aW1hcCA9
IG5ldyBNdWx0aW1hcDsKKworICAgICAgICAgICAgbXVsdGltYXAuYWRkKCJvbmUiLCAidHdvIik7
CisgICAgICAgICAgICBtdWx0aW1hcC5hZGQoInRocmVlIiwgImZvdXIiKTsKKyAgICAgICAgICAg
IG11bHRpbWFwLmFkZCgib25lIiwgImZpdmUiKTsKKyAgICAgICAgICAgIG11bHRpbWFwLmFkZCgi
dGhyZWUiLCAic2l4Iik7CisKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKG11bHRpbWFw
KTsKKworICAgICAgICAgICAgbGV0IHBhaXJzID0gW107CisgICAgICAgICAgICBtdWx0aW1hcC5m
aW5kKChwYWlyKSA9PiB7CisgICAgICAgICAgICAgICAgcGFpcnMucHVzaChwYWlyKTsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gcGFpclsxXSA9PT0gImZvdXIiOworICAgICAgICAgICAgfSk7Cisg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFNoYWxsb3dFcXVhbChwYWlycywgW1sib25l
IiwgInR3byJdLCBbIm9uZSIsICJmaXZlIl0sIFsidGhyZWUiLCAiZm91ciJdXSwgIlNob3VsZCBz
dG9wIGl0ZXJhdGluZyBvbmNlIHRoZSBjYWxsYmFjayByZXR1cm5zIGB0cnVlYC4iKTsKKyAgICAg
ICAgfSwKKyAgICB9KTsKKwogICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKICAgICAgICAgbmFtZTog
Ik11bHRpbWFwLnByb3RvdHlwZS5jb3B5IiwKICAgICAgICAgdGVzdCgpIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5jcHAKaW5kZXggMjE4
ZGY2YTE5MTEyLi42NzQ0ZmQ5YTYzMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwCkBAIC02NCw2ICs2NCw3IEBACiAjaW5jbHVk
ZSA8cGFsL3N5c3RlbS9Tb3VuZC5oPgogI2luY2x1ZGUgPHd0Zi9KU09OVmFsdWVzLmg+CiAjaW5j
bHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi9VVUlELmg+CiAjaW5jbHVk
ZSA8d3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnREZWNvZGVyLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvQmFzZTY0Lmg+CiAKQEAgLTU2Myw2ICs1NjQsMTEgQEAgdm9pZCBJbnNwZWN0b3JGcm9udGVu
ZEhvc3Q6OmJlZXAoKQogICAgIFN5c3RlbVNvdW5kTWFuYWdlcjo6c2luZ2xldG9uKCkuc3lzdGVt
QmVlcCgpOwogfQogCitTdHJpbmcgSW5zcGVjdG9yRnJvbnRlbmRIb3N0OjpnZW5lcmF0ZVVVSUQo
KQoreworICAgIHJldHVybiBjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCk7Cit9CisKIHZvaWQg
SW5zcGVjdG9yRnJvbnRlbmRIb3N0OjppbnNwZWN0SW5zcGVjdG9yKCkKIHsKICAgICBzZXRBbGxv
d3NJbnNwZWN0aW5nSW5zcGVjdG9yKHRydWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5oCmluZGV4IDdiM2JhYWQ3MWYwZS4uZDFkNGNhMDAw
YTNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRl
bmRIb3N0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5k
SG9zdC5oCkBAIC0xMjksNiArMTI5LDkgQEAgcHVibGljOgogICAgIHZvaWQgdW5idWZmZXJlZExv
Zyhjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwogCiAgICAgdm9pZCBiZWVwKCk7CisKKyAgICBTdHJp
bmcgZ2VuZXJhdGVVVUlEKCk7CisKICAgICB2b2lkIGluc3BlY3RJbnNwZWN0b3IoKTsKICAgICBi
b29sIGlzQmVpbmdJbnNwZWN0ZWQoKTsKICAgICB2b2lkIHNldEFsbG93c0luc3BlY3RpbmdJbnNw
ZWN0b3IoYm9vbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yRnJvbnRlbmRIb3N0LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JG
cm9udGVuZEhvc3QuaWRsCmluZGV4IDUwZTE0ZGRjMGZiMC4uMGRlOWZkNWNjMjY1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmlkbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmlkbApA
QCAtOTAsNiArOTAsOSBAQAogICAgIGJvb2xlYW4gaXNFeHBlcmltZW50YWxCdWlsZCgpOwogCiAg
ICAgdW5kZWZpbmVkIGJlZXAoKTsKKworICAgIERPTVN0cmluZyBnZW5lcmF0ZVVVSUQoKTsKKwog
ICAgIHVuZGVmaW5lZCBpbnNwZWN0SW5zcGVjdG9yKCk7CiAgICAgYm9vbGVhbiBpc0JlaW5nSW5z
cGVjdGVkKCk7CiAgICAgdW5kZWZpbmVkIHNldEFsbG93c0luc3BlY3RpbmdJbnNwZWN0b3IoYm9v
bGVhbiBhbGxvdyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9CYXNlL0Zyb250ZW5kU3luY2hyb25pemVyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvQmFzZS9Gcm9udGVuZFN5bmNocm9uaXplci5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmQyYmU4MzRmMzJjMgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvRnJvbnRlbmRTeW5j
aHJvbml6ZXIuanMKQEAgLTAsMCArMSwxMjggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitXSS5Gcm9udGVuZFN5
bmNocm9uaXplciA9IGNsYXNzIEZyb250ZW5kU3luY2hyb25pemVyCit7CisgICAgY29uc3RydWN0
b3IoY2F0ZWdvcnksIGhhbmRsZXIpCisgICAgeworICAgICAgICBjb25zb2xlLmFzc2VydCh0eXBl
b2YgY2F0ZWdvcnkgPT09ICJzdHJpbmciLCBjYXRlZ29yeSk7CisgICAgICAgIGNvbnNvbGUuYXNz
ZXJ0KHR5cGVvZiBoYW5kbGVyID09PSAiZnVuY3Rpb24iLCBoYW5kbGVyKTsKKworICAgICAgICB0
aGlzLl9jYXRlZ29yeSA9IGNhdGVnb3J5OworICAgICAgICB0aGlzLl9oYW5kbGVyID0gaGFuZGxl
cjsKKworICAgICAgICBjb25zb2xlLmFzc2VydCghV0kuRnJvbnRlbmRTeW5jaHJvbml6ZXIuX3N5
bmNocm9uaXplckZvckNhdGVnb3J5Lmhhcyh0aGlzLl9jYXRlZ29yeSksIHRoaXMpOworICAgICAg
ICBXSS5Gcm9udGVuZFN5bmNocm9uaXplci5fc3luY2hyb25pemVyRm9yQ2F0ZWdvcnkuc2V0KHRo
aXMuX2NhdGVnb3J5LCB0aGlzKTsKKworICAgICAgICBpZiAoIVdJLkZyb250ZW5kU3luY2hyb25p
emVyLl9jaGFubmVsICYmIHdpbmRvdy5Ccm9hZGNhc3RDaGFubmVsKSB7CisgICAgICAgICAgICBX
SS5Gcm9udGVuZFN5bmNocm9uaXplci5fY2hhbm5lbCA9IG5ldyBCcm9hZGNhc3RDaGFubmVsKCJX
ZWJJbnNwZWN0b3JGcm9udGVuZFN5bmNocm9uaXplciIpOworICAgICAgICAgICAgV0kuRnJvbnRl
bmRTeW5jaHJvbml6ZXIuX2NoYW5uZWwuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIFdJLkZy
b250ZW5kU3luY2hyb25pemVyLl9oYW5kbGVNZXNzYWdlKTsKKworICAgICAgICAgICAgV0kuRnJv
bnRlbmRTeW5jaHJvbml6ZXIuX2Jyb2FkY2FzdFVVSUQoKTsKKyAgICAgICAgfQorICAgIH0KKwor
ICAgIC8vIFN0YXRpYworCisgICAgc3RhdGljIGNsb3NlKCkKKyAgICB7CisgICAgICAgIGlmICgh
V0kuRnJvbnRlbmRTeW5jaHJvbml6ZXIuX2NoYW5uZWwpIHsKKyAgICAgICAgICAgIGNvbnNvbGUu
dHJhY2UoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIFdJLkZy
b250ZW5kU3luY2hyb25pemVyLl9zeW5jaHJvbml6ZXJGb3JDYXRlZ29yeS5jbGVhcigpOworCisg
ICAgICAgIFdJLkZyb250ZW5kU3luY2hyb25pemVyLl9rbm93bkZyb250ZW5kVVVJRHMuY2xlYXIo
KTsKKworICAgICAgICBjb25zb2xlLmFzc2VydChXSS5Gcm9udGVuZFN5bmNocm9uaXplci5faWRl
bnRpZmllcik7CisgICAgICAgIFdJLkZyb250ZW5kU3luY2hyb25pemVyLl9jaGFubmVsLnBvc3RN
ZXNzYWdlKHtmcm9udGVuZElkZW50aWZpZXI6IFdJLkZyb250ZW5kU3luY2hyb25pemVyLl9pZGVu
dGlmaWVyLCBjYXRlZ29yeTogImRpc2Nvbm5lY3QifSk7CisgICAgICAgIFdJLkZyb250ZW5kU3lu
Y2hyb25pemVyLl9pZGVudGlmaWVyID0gbnVsbDsKKworICAgICAgICBXSS5Gcm9udGVuZFN5bmNo
cm9uaXplci5fY2hhbm5lbC5jbG9zZSgpOworICAgICAgICBXSS5Gcm9udGVuZFN5bmNocm9uaXpl
ci5fY2hhbm5lbCA9IG51bGw7CisgICAgfQorCisgICAgc3RhdGljIF9icm9hZGNhc3RVVUlEKCkK
KyAgICB7CisgICAgICAgIFdJLkZyb250ZW5kU3luY2hyb25pemVyLl9pZGVudGlmaWVyID8/PSBJ
bnNwZWN0b3JGcm9udGVuZEhvc3QuZ2VuZXJhdGVVVUlEKCk7CisKKyAgICAgICAgV0kuRnJvbnRl
bmRTeW5jaHJvbml6ZXIuX2NoYW5uZWwucG9zdE1lc3NhZ2Uoe2Zyb250ZW5kSWRlbnRpZmllcjog
V0kuRnJvbnRlbmRTeW5jaHJvbml6ZXIuX2lkZW50aWZpZXIsIGNhdGVnb3J5OiAiY29ubmVjdCJ9
KTsKKyAgICB9CisKKyAgICBzdGF0aWMgX2hhbmRsZU1lc3NhZ2UoZXZlbnQpCisgICAgeworICAg
ICAgICBjb25zb2xlLmFzc2VydChldmVudC5kYXRhLmZyb250ZW5kSWRlbnRpZmllciAhPT0gV0ku
RnJvbnRlbmRTeW5jaHJvbml6ZXIuX2lkZW50aWZpZXIsIGV2ZW50LmRhdGEuZnJvbnRlbmRJZGVu
dGlmaWVyKTsKKworICAgICAgICBzd2l0Y2ggKGV2ZW50LmRhdGEuY2F0ZWdvcnkpIHsKKyAgICAg
ICAgY2FzZSAiY29ubmVjdCI6CisgICAgICAgICAgICBpZiAoIVdJLkZyb250ZW5kU3luY2hyb25p
emVyLl9rbm93bkZyb250ZW5kVVVJRHMuaGFzKGV2ZW50LmRhdGEuZnJvbnRlbmRJZGVudGlmaWVy
KSkgeworICAgICAgICAgICAgICAgIFdJLkZyb250ZW5kU3luY2hyb25pemVyLl9rbm93bkZyb250
ZW5kVVVJRHMuYWRkKGV2ZW50LmRhdGEuZnJvbnRlbmRJZGVudGlmaWVyKTsKKworICAgICAgICAg
ICAgICAgIC8vIEVuc3VyZSB0aGF0IGFsbCBvdGhlciBmcm9udGVuZHMga25vdyBhYm91dCB0aGlz
IGZyb250ZW5kLgorICAgICAgICAgICAgICAgIFdJLkZyb250ZW5kU3luY2hyb25pemVyLl9icm9h
ZGNhc3RVVUlEKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm47CisKKyAgICAg
ICAgY2FzZSAiZGlzY29ubmVjdCI6IHsKKyAgICAgICAgICAgIGxldCByZXN1bHQgPSBXSS5Gcm9u
dGVuZFN5bmNocm9uaXplci5fa25vd25Gcm9udGVuZFVVSURzLmRlbGV0ZShldmVudC5kYXRhLmZy
b250ZW5kSWRlbnRpZmllcik7CisgICAgICAgICAgICBjb25zb2xlLmFzc2VydChyZXN1bHQsIGV2
ZW50LmRhdGEuZnJvbnRlbmRJZGVudGlmaWVyKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQorICAgICAgICB9CisKKyAgICAgICAgbGV0IHN5bmNocm9uaXplciA9IFdJLkZyb250ZW5k
U3luY2hyb25pemVyLl9zeW5jaHJvbml6ZXJGb3JDYXRlZ29yeS5nZXQoZXZlbnQuZGF0YS5jYXRl
Z29yeSk7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHN5bmNocm9uaXplciwgZXZlbnQuZGF0YS5j
YXRlZ29yeSk7CisgICAgICAgIHN5bmNocm9uaXplci5faGFuZGxlcihldmVudC5kYXRhLmFjdGlv
biwgZXZlbnQuZGF0YS5kYXRhKTsKKyAgICB9CisKKyAgICAvLyBQdWJsaWMKKworICAgIG5vdGlm
eUlmTmVlZGVkKGFjdGlvbiwgZ2VuZXJhdGVEYXRhQ2FsbGJhY2spCisgICAgeworICAgICAgICBj
b25zb2xlLmFzc2VydChXSS5Gcm9udGVuZFN5bmNocm9uaXplci5fc3luY2hyb25pemVyRm9yQ2F0
ZWdvcnkuaGFzKHRoaXMuX2NhdGVnb3J5KSwgdGhpcyk7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0
KE9iamVjdC52YWx1ZXMoV0kuRnJvbnRlbmRTeW5jaHJvbml6ZXIuQWN0aW9uKS5pbmNsdWRlcyhh
Y3Rpb24pLCBhY3Rpb24pOworCisgICAgICAgIGlmICghV0kuRnJvbnRlbmRTeW5jaHJvbml6ZXIu
X2tub3duRnJvbnRlbmRVVUlEcy5zaXplKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAg
IGxldCBtZXNzYWdlID0ge2Zyb250ZW5kSWRlbnRpZmllcjogV0kuRnJvbnRlbmRTeW5jaHJvbml6
ZXIuX2lkZW50aWZpZXIsIGNhdGVnb3J5OiB0aGlzLl9jYXRlZ29yeSwgYWN0aW9ufTsKKyAgICAg
ICAgaWYgKGdlbmVyYXRlRGF0YUNhbGxiYWNrKQorICAgICAgICAgICAgbWVzc2FnZS5kYXRhID0g
Z2VuZXJhdGVEYXRhQ2FsbGJhY2soKTsKKyAgICAgICAgV0kuRnJvbnRlbmRTeW5jaHJvbml6ZXIu
X2NoYW5uZWwucG9zdE1lc3NhZ2UobWVzc2FnZSk7CisgICAgfQorfTsKKworV0kuRnJvbnRlbmRT
eW5jaHJvbml6ZXIuQWN0aW9uID0geworICAgIEFkZDogImFkZCIsCisgICAgUmVtb3ZlOiAicmVt
b3ZlIiwKKyAgICBVcGRhdGU6ICJ1cGRhdGUiLAorfTsKKworV0kuRnJvbnRlbmRTeW5jaHJvbml6
ZXIuX2lkZW50aWZpZXIgPSBudWxsOworV0kuRnJvbnRlbmRTeW5jaHJvbml6ZXIuX2NoYW5uZWwg
PSBudWxsOworV0kuRnJvbnRlbmRTeW5jaHJvbml6ZXIuX2tub3duRnJvbnRlbmRVVUlEcyA9IG5l
dyBTZXQ7CisKK1dJLkZyb250ZW5kU3luY2hyb25pemVyLl9zeW5jaHJvbml6ZXJGb3JDYXRlZ29y
eSA9IG5ldyBNYXA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9CYXNlL011bHRpbWFwLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvQmFzZS9NdWx0aW1hcC5qcwppbmRleCAzZWU3MjFmNTZjNjUuLmEzMzg0YjVkMDAxNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9NdWx0aW1h
cC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL011bHRp
bWFwLmpzCkBAIC0xMzAsNiArMTMwLDE1IEBAIGNsYXNzIE11bHRpbWFwCiAgICAgICAgIH0KICAg
ICB9CiAKKyAgICBmaW5kKGNhbGxiYWNrKQorICAgIHsKKyAgICAgICAgZm9yIChsZXQgcGFpciBv
ZiB0aGlzKSB7CisgICAgICAgICAgICBpZiAoY2FsbGJhY2socGFpcikpCisgICAgICAgICAgICAg
ICAgcmV0dXJuIHBhaXI7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDsKKyAg
ICB9CisKICAgICBjb3B5KCkKICAgICB7CiAgICAgICAgIHJldHVybiBuZXcgTXVsdGltYXAodGhp
cy50b0pTT04oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9CYXNlL09iamVjdFN0b3JlLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvQmFzZS9PYmplY3RTdG9yZS5qcwppbmRleCAwNWVkZDcyYTU4MzMuLmM3MzYxYWY3Yjc4
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9P
YmplY3RTdG9yZS5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9C
YXNlL09iamVjdFN0b3JlLmpzCkBAIC0xNzIsNiArMTcyLDggQEAgV0kuT2JqZWN0U3RvcmUgPSBj
bGFzcyBPYmplY3RTdG9yZQogCiAgICAgYXN5bmMgY2xlYXIoLi4uYXJncykKICAgICB7CisgICAg
ICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMgIT09IFdJLm9iamVjdFN0b3Jlcy5nZW5lcmFsKTsKKwog
ICAgICAgICBpZiAoIVdJLk9iamVjdFN0b3JlLnN1cHBvcnRlZCgpKQogICAgICAgICAgICAgcmV0
dXJuIHVuZGVmaW5lZDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvQmFzZS9TZXR0aW5nLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvQmFzZS9TZXR0aW5nLmpzCmluZGV4IGQyZWIyNWI3ZWNlMS4uMWM1YWY3Yzk0ZDc4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL1NldHRp
bmcuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9TZXR0
aW5nLmpzCkBAIC0zOCw2ICszOCw4IEBAIFdJLlNldHRpbmcgPSBjbGFzcyBTZXR0aW5nIGV4dGVu
ZHMgV0kuT2JqZWN0CiAgICAgICAgIHRoaXMuX25hbWUgPSBuYW1lOwogCiAgICAgICAgIHRoaXMu
X2RlZmF1bHRWYWx1ZSA9IGRlZmF1bHRWYWx1ZTsKKworICAgICAgICBXSS5TZXR0aW5nLl9zZXR0
aW5nc0ZvcktleS5hZGQoV0kuU2V0dGluZy5fbG9jYWxTdG9yYWdlS2V5UHJlZml4ICsgdGhpcy5f
bmFtZSwgdGhpcyk7CiAgICAgfQogCiAgICAgLy8gU3RhdGljCkBAIC0xNDMsNiArMTQ1LDI1IEBA
IFdJLlNldHRpbmcuX2xvY2FsU3RvcmFnZUtleVByZWZpeCA9IChmdW5jdGlvbigpIHsKICAgICBy
ZXR1cm4gYGNvbS5hcHBsZS5XZWJJbnNwZWN0b3Ike2xldmVsU3RyaW5nfS5gOwogfSkoKTsKIAor
V0kuU2V0dGluZy5fc2V0dGluZ3NGb3JLZXkgPSBuZXcgTXVsdGltYXA7Cit3aW5kb3cuYWRkRXZl
bnRMaXN0ZW5lcigic3RvcmFnZSIsIChldmVudCkgPT4geworICAgIGxldCB7a2V5LCBuZXdWYWx1
ZTogdmFsdWV9ID0gZXZlbnQ7CisKKyAgICBpZiAodmFsdWUgIT09IG51bGwpIHsKKyAgICAgICAg
dHJ5IHsKKyAgICAgICAgICAgIHZhbHVlID0gSlNPTi5wYXJzZSh2YWx1ZSk7CisgICAgICAgIH0g
Y2F0Y2ggeworICAgICAgICAgICAgdmFsdWUgPSBudWxsOworICAgICAgICAgICAgd2luZG93Lmxv
Y2FsU3RvcmFnZS5yZW1vdmVJdGVtKGtleSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBmb3Ig
KGxldCBzZXR0aW5nIG9mIChXSS5TZXR0aW5nLl9zZXR0aW5nc0ZvcktleS5nZXQoa2V5KSB8fCBb
XSkpIHsKKyAgICAgICAgc2V0dGluZy5fdmFsdWUgPSB2YWx1ZTsKKyAgICAgICAgc2V0dGluZy5k
aXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuU2V0dGluZy5FdmVudC5DaGFuZ2VkLCBzZXR0aW5n
Ll92YWx1ZSwge25hbWU6IHNldHRpbmcuX25hbWV9KTsKKyAgICB9Cit9KTsKKwogV0kuU2V0dGlu
Zy5pc0ZpcnN0TGF1bmNoID0gISF3aW5kb3cuSW5zcGVjdG9yVGVzdCB8fCAod2luZG93LmxvY2Fs
U3RvcmFnZSAmJiBPYmplY3Qua2V5cyh3aW5kb3cubG9jYWxTdG9yYWdlKS5ldmVyeSgoa2V5KSA9
PiAha2V5LnN0YXJ0c1dpdGgoV0kuU2V0dGluZy5fbG9jYWxTdG9yYWdlS2V5UHJlZml4KSkpOwog
CiBXSS5TZXR0aW5nLkV2ZW50ID0gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvQXVkaXRNYW5hZ2VyLmpzIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvQXVkaXRNYW5hZ2VyLmpzCmluZGV4
IGNkMDY0NjFjMzZhYy4uM2JmN2QwYmJiYzVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9BdWRpdE1hbmFnZXIuanMKKysrIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvQXVkaXRNYW5hZ2Vy
LmpzCkBAIC05OSw2ICs5OSw4IEBAIFdJLkF1ZGl0TWFuYWdlciA9IGNsYXNzIEF1ZGl0TWFuYWdl
ciBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVy
cyhXSS5BdWRpdE1hbmFnZXIuRXZlbnQuRWRpdGluZ0NoYW5nZWQpOwogCiAgICAgICAgIGlmICgh
dGhpcy5lZGl0aW5nKSB7CisgICAgICAgICAgICAvLyBGSVhNRTogPGh0dHBzOi8vd2Via2l0Lm9y
Zy9iLzIzMjY5OD4gKFdlYiBJbnNwZWN0b3I6IHVwZGF0ZSBhdWRpdHMgaW4gb2JqZWN0IHN0b3Jl
IGFmdGVyIGVkaXRpbmcgaW5zdGVhZCBvZiByZXBsYWNpbmcgZXZlcnl0aGluZykKKwogICAgICAg
ICAgICAgV0kub2JqZWN0U3RvcmVzLmF1ZGl0cy5jbGVhcigpOwogCiAgICAgICAgICAgICBsZXQg
ZGlzYWJsZWREZWZhdWx0VGVzdHMgPSBbXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0RPTURlYnVnZ2VyTWFuYWdlci5qcyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0RPTURlYnVnZ2Vy
TWFuYWdlci5qcwppbmRleCAyZjI3MjZlZjg1MGQuLjQ1NjM2NmMxY2UxZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvRE9NRGVidWdn
ZXJNYW5hZ2VyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Nv
bnRyb2xsZXJzL0RPTURlYnVnZ2VyTWFuYWdlci5qcwpAQCAtNzAsNyArNzAsNyBAQCBXSS5ET01E
ZWJ1Z2dlck1hbmFnZXIgPSBjbGFzcyBET01EZWJ1Z2dlck1hbmFnZXIgZXh0ZW5kcyBXSS5PYmpl
Y3QKICAgICAgICAgV0kuRnJhbWUuYWRkRXZlbnRMaXN0ZW5lcihXSS5GcmFtZS5FdmVudC5DaGls
ZEZyYW1lV2FzUmVtb3ZlZCwgdGhpcy5fY2hpbGRGcmFtZVdhc1JlbW92ZWQsIHRoaXMpOwogICAg
ICAgICBXSS5GcmFtZS5hZGRFdmVudExpc3RlbmVyKFdJLkZyYW1lLkV2ZW50Lk1haW5SZXNvdXJj
ZURpZENoYW5nZSwgdGhpcy5fbWFpblJlc291cmNlRGlkQ2hhbmdlLCB0aGlzKTsKIAotICAgICAg
ICBsZXQgbG9hZEJyZWFrcG9pbnRzID0gKGNvbnN0cnVjdG9yLCBvYmplY3RTdG9yZSwgb2xkU2V0
dGluZ3MsIGNhbGxiYWNrKSA9PiB7CisgICAgICAgIGxldCBsb2FkQnJlYWtwb2ludHMgPSAoY29u
c3RydWN0b3IsIG9iamVjdFN0b3JlLCBvbGRTZXR0aW5ncywgY2FsbGJhY2ssIGNvbXBsZXRpb24p
ID0+IHsKICAgICAgICAgICAgIFdJLlRhcmdldC5yZWdpc3RlckluaXRpYWxpemF0aW9uUHJvbWlz
ZSgoYXN5bmMgKCkgPT4gewogICAgICAgICAgICAgICAgIGZvciAobGV0IGtleSBvZiBvbGRTZXR0
aW5ncykgewogICAgICAgICAgICAgICAgICAgICBsZXQgZXhpc3RpbmdTZXJpYWxpemVkQnJlYWtw
b2ludHMgPSBXSS5TZXR0aW5nLm1pZ3JhdGVWYWx1ZShrZXkpOwpAQCAtODMsMTUgKzgzLDExIEBA
IFdJLkRPTURlYnVnZ2VyTWFuYWdlciA9IGNsYXNzIERPTURlYnVnZ2VyTWFuYWdlciBleHRlbmRz
IFdJLk9iamVjdAogICAgICAgICAgICAgICAgIGxldCBzZXJpYWxpemVkQnJlYWtwb2ludHMgPSBh
d2FpdCBvYmplY3RTdG9yZS5nZXRBbGwoKTsKIAogICAgICAgICAgICAgICAgIHRoaXMuX3Jlc3Rv
cmluZ0JyZWFrcG9pbnRzID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICBmb3IgKGxldCBzZXJpYWxp
emVkQnJlYWtwb2ludCBvZiBzZXJpYWxpemVkQnJlYWtwb2ludHMpIHsKLSAgICAgICAgICAgICAg
ICAgICAgbGV0IGJyZWFrcG9pbnQgPSBjb25zdHJ1Y3Rvci5mcm9tSlNPTihzZXJpYWxpemVkQnJl
YWtwb2ludCk7Ci0KLSAgICAgICAgICAgICAgICAgICAgY29uc3Qga2V5ID0gbnVsbDsKLSAgICAg
ICAgICAgICAgICAgICAgb2JqZWN0U3RvcmUuYXNzb2NpYXRlT2JqZWN0KGJyZWFrcG9pbnQsIGtl
eSwgc2VyaWFsaXplZEJyZWFrcG9pbnQpOwotCi0gICAgICAgICAgICAgICAgICAgIGNhbGxiYWNr
KGJyZWFrcG9pbnQpOwotICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBmb3IgKGxl
dCBzZXJpYWxpemVkQnJlYWtwb2ludCBvZiBzZXJpYWxpemVkQnJlYWtwb2ludHMpCisgICAgICAg
ICAgICAgICAgICAgIGNhbGxiYWNrKHNlcmlhbGl6ZWRCcmVha3BvaW50KTsKICAgICAgICAgICAg
ICAgICB0aGlzLl9yZXN0b3JpbmdCcmVha3BvaW50cyA9IGZhbHNlOworCisgICAgICAgICAgICAg
ICAgY29tcGxldGlvbigpOwogICAgICAgICAgICAgfSkoKSk7CiAgICAgICAgIH07CiAKQEAgLTEw
NSwxNCArMTAxLDE4IEBAIFdJLkRPTURlYnVnZ2VyTWFuYWdlciA9IGNsYXNzIERPTURlYnVnZ2Vy
TWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICB9CiAKICAgICAgICAgaWYgKERPTURl
YnVnZ2VyTWFuYWdlci5zdXBwb3J0c0RPTUJyZWFrcG9pbnRzKCkpIHsKLSAgICAgICAgICAgIGxv
YWRCcmVha3BvaW50cyhXSS5ET01CcmVha3BvaW50LCBXSS5vYmplY3RTdG9yZXMuZG9tQnJlYWtw
b2ludHMsIFsiZG9tLWJyZWFrcG9pbnRzIl0sIChicmVha3BvaW50KSA9PiB7Ci0gICAgICAgICAg
ICAgICAgdGhpcy5hZGRET01CcmVha3BvaW50KGJyZWFrcG9pbnQpOworICAgICAgICAgICAgbG9h
ZEJyZWFrcG9pbnRzKFdJLkRPTUJyZWFrcG9pbnQsIFdJLm9iamVjdFN0b3Jlcy5kb21CcmVha3Bv
aW50cywgWyJkb20tYnJlYWtwb2ludHMiXSwgKHNlcmlhbGl6ZWRCcmVha3BvaW50KSA9PiB7Cisg
ICAgICAgICAgICAgICAgdGhpcy5fcmVzdG9yZURPTUJyZWFrcG9pbnQoc2VyaWFsaXplZEJyZWFr
cG9pbnQpOworICAgICAgICAgICAgfSwgKCkgPT4geworICAgICAgICAgICAgICAgIHRoaXMuX2Rv
bUJyZWFrcG9pbnRzU3luY2hyb25pemVyID8/PSBuZXcgV0kuRnJvbnRlbmRTeW5jaHJvbml6ZXIo
ImRvbS1icmVha3BvaW50cyIsIHRoaXMuX2hhbmRsZURPTUJyZWFrcG9pbnRzU3luY2hyb25pemUu
YmluZCh0aGlzKSk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChE
T01EZWJ1Z2dlck1hbmFnZXIuc3VwcG9ydHNFdmVudEJyZWFrcG9pbnRzKCkgfHwgRE9NRGVidWdn
ZXJNYW5hZ2VyLnN1cHBvcnRzRXZlbnRMaXN0ZW5lckJyZWFrcG9pbnRzKCkpIHsKLSAgICAgICAg
ICAgIGxvYWRCcmVha3BvaW50cyhXSS5FdmVudEJyZWFrcG9pbnQsIFdJLm9iamVjdFN0b3Jlcy5l
dmVudEJyZWFrcG9pbnRzLCBbImV2ZW50LWJyZWFrcG9pbnRzIl0sIChicmVha3BvaW50KSA9PiB7
Ci0gICAgICAgICAgICAgICAgdGhpcy5hZGRFdmVudEJyZWFrcG9pbnQoYnJlYWtwb2ludCk7Cisg
ICAgICAgICAgICBsb2FkQnJlYWtwb2ludHMoV0kuRXZlbnRCcmVha3BvaW50LCBXSS5vYmplY3RT
dG9yZXMuZXZlbnRCcmVha3BvaW50cywgWyJldmVudC1icmVha3BvaW50cyJdLCAoc2VyaWFsaXpl
ZEJyZWFrcG9pbnQpID0+IHsKKyAgICAgICAgICAgICAgICB0aGlzLl9yZXN0b3JlRXZlbnRCcmVh
a3BvaW50KHNlcmlhbGl6ZWRCcmVha3BvaW50KTsKKyAgICAgICAgICAgIH0sICgpID0+IHsKKyAg
ICAgICAgICAgICAgICB0aGlzLl9ldmVudEJyZWFrcG9pbnRzU3luY2hyb25pemVyID8/PSBuZXcg
V0kuRnJvbnRlbmRTeW5jaHJvbml6ZXIoImV2ZW50LWJyZWFrcG9pbnRzIiwgdGhpcy5faGFuZGxl
RXZlbnRCcmVha3BvaW50c1N5bmNocm9uaXplLmJpbmQodGhpcykpOwogICAgICAgICAgICAgfSk7
CiAKICAgICAgICAgICAgIHRoaXMuX2FsbEFuaW1hdGlvbkZyYW1lc0JyZWFrcG9pbnQgPz89IGxv
YWRMZWdhY3lTcGVjaWFsQnJlYWtwb2ludCgic2hvdy1hbGwtYW5pbWF0aW9uLWZyYW1lcy1icmVh
a3BvaW50IiwgImJyZWFrLW9uLWFsbC1hbmltYXRpb24tZnJhbWVzIiwgKG9wdGlvbnMpID0+IG5l
dyBXSS5FdmVudEJyZWFrcG9pbnQoV0kuRXZlbnRCcmVha3BvaW50LlR5cGUuQW5pbWF0aW9uRnJh
bWUsIG9wdGlvbnMpKTsKQEAgLTEyMiw4ICsxMjIsMTAgQEAgV0kuRE9NRGVidWdnZXJNYW5hZ2Vy
ID0gY2xhc3MgRE9NRGVidWdnZXJNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgIH0K
IAogICAgICAgICBpZiAoRE9NRGVidWdnZXJNYW5hZ2VyLnN1cHBvcnRzVVJMQnJlYWtwb2ludHMo
KSB8fCBET01EZWJ1Z2dlck1hbmFnZXIuc3VwcG9ydHNYSFJCcmVha3BvaW50cygpKSB7Ci0gICAg
ICAgICAgICBsb2FkQnJlYWtwb2ludHMoV0kuVVJMQnJlYWtwb2ludCwgV0kub2JqZWN0U3RvcmVz
LnVybEJyZWFrcG9pbnRzLCBbInhoci1icmVha3BvaW50cyIsICJ1cmwtYnJlYWtwb2ludHMiXSwg
KGJyZWFrcG9pbnQpID0+IHsKLSAgICAgICAgICAgICAgICB0aGlzLmFkZFVSTEJyZWFrcG9pbnQo
YnJlYWtwb2ludCk7CisgICAgICAgICAgICBsb2FkQnJlYWtwb2ludHMoV0kuVVJMQnJlYWtwb2lu
dCwgV0kub2JqZWN0U3RvcmVzLnVybEJyZWFrcG9pbnRzLCBbInhoci1icmVha3BvaW50cyIsICJ1
cmwtYnJlYWtwb2ludHMiXSwgKHNlcmlhbGl6ZWRCcmVha3BvaW50KSA9PiB7CisgICAgICAgICAg
ICAgICAgdGhpcy5fcmVzdG9yZVVSTEJyZWFrcG9pbnQoc2VyaWFsaXplZEJyZWFrcG9pbnQpOwor
ICAgICAgICAgICAgfSwgKCkgPT4geworICAgICAgICAgICAgICAgIHRoaXMuX3VybEJyZWFrcG9p
bnRzU3luY2hyb25pemVyID8/PSBuZXcgV0kuRnJvbnRlbmRTeW5jaHJvbml6ZXIoInVybC1icmVh
a3BvaW50cyIsIHRoaXMuX2hhbmRsZVVSTEJyZWFrcG9pbnRzU3luY2hyb25pemUuYmluZCh0aGlz
KSk7CiAgICAgICAgICAgICB9KTsKIAogICAgICAgICAgICAgdGhpcy5fYWxsUmVxdWVzdHNCcmVh
a3BvaW50ID8/PSBsb2FkTGVnYWN5U3BlY2lhbEJyZWFrcG9pbnQoInNob3ctYWxsLXJlcXVlc3Rz
LWJyZWFrcG9pbnQiLCAiYnJlYWstb24tYWxsLXJlcXVlc3RzIiwgKG9wdGlvbnMpID0+IG5ldyBX
SS5VUkxCcmVha3BvaW50KFdJLlVSTEJyZWFrcG9pbnQuVHlwZS5UZXh0LCAiIiwgb3B0aW9ucykp
OwpAQCAtMzExLDggKzMxMywxMCBAQCBXSS5ET01EZWJ1Z2dlck1hbmFnZXIgPSBjbGFzcyBET01E
ZWJ1Z2dlck1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgfSBlbHNlCiAgICAgICAg
ICAgICB0aGlzLl9zcGVjdWxhdGl2ZWx5UmVzb2x2ZURPTUJyZWFrcG9pbnQoYnJlYWtwb2ludCk7
CiAKLSAgICAgICAgaWYgKCF0aGlzLl9yZXN0b3JpbmdCcmVha3BvaW50cykKKyAgICAgICAgaWYg
KCF0aGlzLl9yZXN0b3JpbmdCcmVha3BvaW50cykgewogICAgICAgICAgICAgV0kub2JqZWN0U3Rv
cmVzLmRvbUJyZWFrcG9pbnRzLnB1dE9iamVjdChicmVha3BvaW50KTsKKyAgICAgICAgICAgIHRo
aXMuX2RvbUJyZWFrcG9pbnRzU3luY2hyb25pemVyLm5vdGlmeUlmTmVlZGVkKFdJLkZyb250ZW5k
U3luY2hyb25pemVyLkFjdGlvbi5BZGQsICgpID0+ICh7c2VyaWFsaXplZEJyZWFrcG9pbnQ6IGJy
ZWFrcG9pbnQudG9KU09OKCl9KSk7CisgICAgICAgIH0KICAgICB9CiAKICAgICByZW1vdmVET01C
cmVha3BvaW50KGJyZWFrcG9pbnQpCkBAIC0zNDMsOCArMzQ3LDEwIEBAIFdJLkRPTURlYnVnZ2Vy
TWFuYWdlciA9IGNsYXNzIERPTURlYnVnZ2VyTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogICAg
ICAgICAgICAgYnJlYWtwb2ludC5kb21Ob2RlID0gbnVsbDsKICAgICAgICAgfQogCi0gICAgICAg
IGlmICghdGhpcy5fcmVzdG9yaW5nQnJlYWtwb2ludHMpCisgICAgICAgIGlmICghdGhpcy5fcmVz
dG9yaW5nQnJlYWtwb2ludHMpIHsKICAgICAgICAgICAgIFdJLm9iamVjdFN0b3Jlcy5kb21CcmVh
a3BvaW50cy5kZWxldGVPYmplY3QoYnJlYWtwb2ludCk7CisgICAgICAgICAgICB0aGlzLl9kb21C
cmVha3BvaW50c1N5bmNocm9uaXplci5ub3RpZnlJZk5lZWRlZChXSS5Gcm9udGVuZFN5bmNocm9u
aXplci5BY3Rpb24uUmVtb3ZlLCAoKSA9PiAoe29iamVjdElkZW50aWZpZXI6IGJyZWFrcG9pbnQu
b2JqZWN0SWRlbnRpZmllcn0pKTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIHJlbW92ZURPTUJy
ZWFrcG9pbnRzRm9yTm9kZShub2RlKQpAQCAtNDA1LDggKzQxMSwxMCBAQCBXSS5ET01EZWJ1Z2dl
ck1hbmFnZXIgPSBjbGFzcyBET01EZWJ1Z2dlck1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKICAg
ICAgICAgICAgICAgICB0aGlzLl9zZXRFdmVudEJyZWFrcG9pbnQoYnJlYWtwb2ludCwgdGFyZ2V0
KTsKICAgICAgICAgfQogCi0gICAgICAgIGlmICghdGhpcy5fcmVzdG9yaW5nQnJlYWtwb2ludHMp
CisgICAgICAgIGlmICghdGhpcy5fcmVzdG9yaW5nQnJlYWtwb2ludHMpIHsKICAgICAgICAgICAg
IFdJLm9iamVjdFN0b3Jlcy5ldmVudEJyZWFrcG9pbnRzLnB1dE9iamVjdChicmVha3BvaW50KTsK
KyAgICAgICAgICAgIHRoaXMuX2V2ZW50QnJlYWtwb2ludHNTeW5jaHJvbml6ZXIubm90aWZ5SWZO
ZWVkZWQoV0kuRnJvbnRlbmRTeW5jaHJvbml6ZXIuQWN0aW9uLkFkZCwgKCkgPT4gKHtzZXJpYWxp
emVkQnJlYWtwb2ludDogYnJlYWtwb2ludC50b0pTT04oKX0pKTsKKyAgICAgICAgfQogCiAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAgLTQ1MSw4ICs0NTksMTAgQEAgV0kuRE9NRGVidWdn
ZXJNYW5hZ2VyID0gY2xhc3MgRE9NRGVidWdnZXJNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCi0gICAgICAgIGlmICghdGhpcy5fcmVzdG9y
aW5nQnJlYWtwb2ludHMpCisgICAgICAgIGlmICghdGhpcy5fcmVzdG9yaW5nQnJlYWtwb2ludHMp
IHsKICAgICAgICAgICAgIFdJLm9iamVjdFN0b3Jlcy5ldmVudEJyZWFrcG9pbnRzLmRlbGV0ZU9i
amVjdChicmVha3BvaW50KTsKKyAgICAgICAgICAgIHRoaXMuX2V2ZW50QnJlYWtwb2ludHNTeW5j
aHJvbml6ZXIubm90aWZ5SWZOZWVkZWQoV0kuRnJvbnRlbmRTeW5jaHJvbml6ZXIuQWN0aW9uLlJl
bW92ZSwgKCkgPT4gKHtvYmplY3RJZGVudGlmaWVyOiBicmVha3BvaW50Lm9iamVjdElkZW50aWZp
ZXJ9KSk7CisgICAgICAgIH0KIAogICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIucmVtb3ZlUHJv
YmVzRm9yQnJlYWtwb2ludChicmVha3BvaW50KTsKIApAQCAtNDkwLDggKzUwMCwxMCBAQCBXSS5E
T01EZWJ1Z2dlck1hbmFnZXIgPSBjbGFzcyBET01EZWJ1Z2dlck1hbmFnZXIgZXh0ZW5kcyBXSS5P
YmplY3QKICAgICAgICAgICAgICAgICB0aGlzLl9zZXRVUkxCcmVha3BvaW50KGJyZWFrcG9pbnQs
IHRhcmdldCk7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoIXRoaXMuX3Jlc3RvcmluZ0JyZWFr
cG9pbnRzKQorICAgICAgICBpZiAoIXRoaXMuX3Jlc3RvcmluZ0JyZWFrcG9pbnRzKSB7CiAgICAg
ICAgICAgICBXSS5vYmplY3RTdG9yZXMudXJsQnJlYWtwb2ludHMucHV0T2JqZWN0KGJyZWFrcG9p
bnQpOworICAgICAgICAgICAgdGhpcy5fdXJsQnJlYWtwb2ludHNTeW5jaHJvbml6ZXIubm90aWZ5
SWZOZWVkZWQoV0kuRnJvbnRlbmRTeW5jaHJvbml6ZXIuQWN0aW9uLkFkZCwgKCkgPT4gKHtzZXJp
YWxpemVkQnJlYWtwb2ludDogYnJlYWtwb2ludC50b0pTT04oKX0pKTsKKyAgICAgICAgfQogCiAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAgLTUxNyw4ICs1MjksMTAgQEAgV0kuRE9NRGVi
dWdnZXJNYW5hZ2VyID0gY2xhc3MgRE9NRGVidWdnZXJNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0
CiAgICAgICAgICAgICB0aGlzLl9hbGxSZXF1ZXN0c0JyZWFrcG9pbnQgPSBudWxsOwogICAgICAg
ICB9CiAKLSAgICAgICAgaWYgKCF0aGlzLl9yZXN0b3JpbmdCcmVha3BvaW50cykKKyAgICAgICAg
aWYgKCF0aGlzLl9yZXN0b3JpbmdCcmVha3BvaW50cykgewogICAgICAgICAgICAgV0kub2JqZWN0
U3RvcmVzLnVybEJyZWFrcG9pbnRzLmRlbGV0ZU9iamVjdChicmVha3BvaW50KTsKKyAgICAgICAg
ICAgIHRoaXMuX3VybEJyZWFrcG9pbnRzU3luY2hyb25pemVyLm5vdGlmeUlmTmVlZGVkKFdJLkZy
b250ZW5kU3luY2hyb25pemVyLkFjdGlvbi5SZW1vdmUsICgpID0+ICh7b2JqZWN0SWRlbnRpZmll
cjogYnJlYWtwb2ludC5vYmplY3RJZGVudGlmaWVyfSkpOworICAgICAgICB9CiAKICAgICAgICAg
V0kuZGVidWdnZXJNYW5hZ2VyLnJlbW92ZVByb2Jlc0ZvckJyZWFrcG9pbnQoYnJlYWtwb2ludCk7
CiAKQEAgLTU5NCw2ICs2MDgsMTggQEAgV0kuRE9NRGVidWdnZXJNYW5hZ2VyID0gY2xhc3MgRE9N
RGVidWdnZXJNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgIGJyZWFrcG9pbnQuZG9t
Tm9kZSA9IG5vZGU7CiAgICAgfQogCisgICAgX3Jlc3RvcmVET01CcmVha3BvaW50KHNlcmlhbGl6
ZWRCcmVha3BvaW50KQorICAgIHsKKyAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5fcmVzdG9y
aW5nQnJlYWtwb2ludHMpOworCisgICAgICAgIGxldCBicmVha3BvaW50ID0gV0kuRE9NQnJlYWtw
b2ludC5mcm9tSlNPTihzZXJpYWxpemVkQnJlYWtwb2ludCk7CisKKyAgICAgICAgY29uc3Qga2V5
ID0gbnVsbDsKKyAgICAgICAgV0kub2JqZWN0U3RvcmVzLmRvbUJyZWFrcG9pbnRzLmFzc29jaWF0
ZU9iamVjdChicmVha3BvaW50LCBrZXksIHNlcmlhbGl6ZWRCcmVha3BvaW50KTsKKworICAgICAg
ICB0aGlzLmFkZERPTUJyZWFrcG9pbnQoYnJlYWtwb2ludCk7CisgICAgfQorCiAgICAgX3NldERP
TUJyZWFrcG9pbnQoYnJlYWtwb2ludCwgdGFyZ2V0KQogICAgIHsKICAgICAgICAgY29uc29sZS5h
c3NlcnQoIWJyZWFrcG9pbnQuZGlzYWJsZWQsIGJyZWFrcG9pbnQpOwpAQCAtNjcyLDYgKzY5OCwx
OCBAQCBXSS5ET01EZWJ1Z2dlck1hbmFnZXIgPSBjbGFzcyBET01EZWJ1Z2dlck1hbmFnZXIgZXh0
ZW5kcyBXSS5PYmplY3QKICAgICAgICAgcmV0dXJuIGNvbW1hbmRBcmd1bWVudHM7CiAgICAgfQog
CisgICAgX3Jlc3RvcmVFdmVudEJyZWFrcG9pbnQoc2VyaWFsaXplZEJyZWFrcG9pbnQpCisgICAg
eworICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9yZXN0b3JpbmdCcmVha3BvaW50cyk7CisK
KyAgICAgICAgbGV0IGJyZWFrcG9pbnQgPSBXSS5FdmVudEJyZWFrcG9pbnQuZnJvbUpTT04oc2Vy
aWFsaXplZEJyZWFrcG9pbnQpOworCisgICAgICAgIGNvbnN0IGtleSA9IG51bGw7CisgICAgICAg
IFdJLm9iamVjdFN0b3Jlcy5ldmVudEJyZWFrcG9pbnRzLmFzc29jaWF0ZU9iamVjdChicmVha3Bv
aW50LCBrZXksIHNlcmlhbGl6ZWRCcmVha3BvaW50KTsKKworICAgICAgICB0aGlzLmFkZEV2ZW50
QnJlYWtwb2ludChicmVha3BvaW50KTsKKyAgICB9CisKICAgICBfc2V0RXZlbnRCcmVha3BvaW50
KGJyZWFrcG9pbnQsIHRhcmdldCkKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCFicmVh
a3BvaW50LmRpc2FibGVkLCBicmVha3BvaW50KTsKQEAgLTcyOSw2ICs3NjcsMTggQEAgV0kuRE9N
RGVidWdnZXJNYW5hZ2VyID0gY2xhc3MgRE9NRGVidWdnZXJNYW5hZ2VyIGV4dGVuZHMgV0kuT2Jq
ZWN0CiAgICAgICAgIHRhcmdldC5ET01EZWJ1Z2dlckFnZW50LnJlbW92ZUV2ZW50QnJlYWtwb2lu
dC5pbnZva2UoY29tbWFuZEFyZ3VtZW50cyk7CiAgICAgfQogCisgICAgX3Jlc3RvcmVVUkxCcmVh
a3BvaW50KHNlcmlhbGl6ZWRCcmVha3BvaW50KQorICAgIHsKKyAgICAgICAgY29uc29sZS5hc3Nl
cnQodGhpcy5fcmVzdG9yaW5nQnJlYWtwb2ludHMpOworCisgICAgICAgIGxldCBicmVha3BvaW50
ID0gV0kuVVJMQnJlYWtwb2ludC5mcm9tSlNPTihzZXJpYWxpemVkQnJlYWtwb2ludCk7CisKKyAg
ICAgICAgY29uc3Qga2V5ID0gbnVsbDsKKyAgICAgICAgV0kub2JqZWN0U3RvcmVzLnVybEJyZWFr
cG9pbnRzLmFzc29jaWF0ZU9iamVjdChicmVha3BvaW50LCBrZXksIHNlcmlhbGl6ZWRCcmVha3Bv
aW50KTsKKworICAgICAgICB0aGlzLmFkZFVSTEJyZWFrcG9pbnQoYnJlYWtwb2ludCk7CisgICAg
fQorCiAgICAgX3NldFVSTEJyZWFrcG9pbnQoYnJlYWtwb2ludCwgdGFyZ2V0KQogICAgIHsKICAg
ICAgICAgY29uc29sZS5hc3NlcnQoIWJyZWFrcG9pbnQuZGlzYWJsZWQsIGJyZWFrcG9pbnQpOwpA
QCAtNzgxLDggKzgzMSwxMyBAQCBXSS5ET01EZWJ1Z2dlck1hbmFnZXIgPSBjbGFzcyBET01EZWJ1
Z2dlck1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKICAgICB7CiAgICAgICAgIGxldCBicmVha3Bv
aW50ID0gZXZlbnQudGFyZ2V0OwogCi0gICAgICAgIGlmICghdGhpcy5fcmVzdG9yaW5nQnJlYWtw
b2ludHMpCisgICAgICAgIGlmICghdGhpcy5fcmVzdG9yaW5nQnJlYWtwb2ludHMpIHsKICAgICAg
ICAgICAgIFdJLm9iamVjdFN0b3Jlcy5kb21CcmVha3BvaW50cy5wdXRPYmplY3QoYnJlYWtwb2lu
dCk7CisgICAgICAgICAgICB0aGlzLl9kb21CcmVha3BvaW50c1N5bmNocm9uaXplci5ub3RpZnlJ
Zk5lZWRlZChXSS5Gcm9udGVuZFN5bmNocm9uaXplci5BY3Rpb24uVXBkYXRlLCAoKSA9PiAoewor
ICAgICAgICAgICAgICAgIG9iamVjdElkZW50aWZpZXI6IGJyZWFrcG9pbnQub2JqZWN0SWRlbnRp
ZmllciwKKyAgICAgICAgICAgICAgICBzZXJpYWxpemVkQnJlYWtwb2ludDogYnJlYWtwb2ludC50
b0pTT04oKSwKKyAgICAgICAgICAgIH0pKTsKKyAgICAgICAgfQogCiAgICAgICAgIGlmICghYnJl
YWtwb2ludC5kb21Ob2RlKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtODAxLDggKzg1NiwxMyBA
QCBXSS5ET01EZWJ1Z2dlck1hbmFnZXIgPSBjbGFzcyBET01EZWJ1Z2dlck1hbmFnZXIgZXh0ZW5k
cyBXSS5PYmplY3QKICAgICB7CiAgICAgICAgIGxldCBicmVha3BvaW50ID0gZXZlbnQudGFyZ2V0
OwogCi0gICAgICAgIGlmICghdGhpcy5fcmVzdG9yaW5nQnJlYWtwb2ludHMpCisgICAgICAgIGlm
ICghdGhpcy5fcmVzdG9yaW5nQnJlYWtwb2ludHMpIHsKICAgICAgICAgICAgIFdJLm9iamVjdFN0
b3Jlcy5kb21CcmVha3BvaW50cy5wdXRPYmplY3QoYnJlYWtwb2ludCk7CisgICAgICAgICAgICB0
aGlzLl9kb21CcmVha3BvaW50c1N5bmNocm9uaXplci5ub3RpZnlJZk5lZWRlZChXSS5Gcm9udGVu
ZFN5bmNocm9uaXplci5BY3Rpb24uVXBkYXRlLCAoKSA9PiAoeworICAgICAgICAgICAgICAgIG9i
amVjdElkZW50aWZpZXI6IGJyZWFrcG9pbnQub2JqZWN0SWRlbnRpZmllciwKKyAgICAgICAgICAg
ICAgICBzZXJpYWxpemVkQnJlYWtwb2ludDogYnJlYWtwb2ludC50b0pTT04oKSwKKyAgICAgICAg
ICAgIH0pKTsKKyAgICAgICAgfQogCiAgICAgICAgIGlmICghYnJlYWtwb2ludC5kb21Ob2RlKQog
ICAgICAgICAgICAgcmV0dXJuOwpAQCAtODg1LDggKzk0NSwxMyBAQCBXSS5ET01EZWJ1Z2dlck1h
bmFnZXIgPSBjbGFzcyBET01EZWJ1Z2dlck1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAg
ICAgICAgICAgICB0aGlzLl9zZXRFdmVudEJyZWFrcG9pbnQoYnJlYWtwb2ludCwgdGFyZ2V0KTsK
ICAgICAgICAgfQogCi0gICAgICAgIGlmICghdGhpcy5fcmVzdG9yaW5nQnJlYWtwb2ludHMpCisg
ICAgICAgIGlmICghdGhpcy5fcmVzdG9yaW5nQnJlYWtwb2ludHMpIHsKICAgICAgICAgICAgIFdJ
Lm9iamVjdFN0b3Jlcy5ldmVudEJyZWFrcG9pbnRzLnB1dE9iamVjdChicmVha3BvaW50KTsKKyAg
ICAgICAgICAgIHRoaXMuX2V2ZW50QnJlYWtwb2ludHNTeW5jaHJvbml6ZXIubm90aWZ5SWZOZWVk
ZWQoV0kuRnJvbnRlbmRTeW5jaHJvbml6ZXIuQWN0aW9uLlVwZGF0ZSwgKCkgPT4gKHsKKyAgICAg
ICAgICAgICAgICBvYmplY3RJZGVudGlmaWVyOiBicmVha3BvaW50Lm9iamVjdElkZW50aWZpZXIs
CisgICAgICAgICAgICAgICAgc2VyaWFsaXplZEJyZWFrcG9pbnQ6IGJyZWFrcG9pbnQudG9KU09O
KCksCisgICAgICAgICAgICB9KSk7CisgICAgICAgIH0KICAgICB9CiAKICAgICBfaGFuZGxlRXZl
bnRCcmVha3BvaW50RWRpdGFibGVQcm9wZXJ0eUNoYW5nZWQoZXZlbnQpCkBAIC04OTcsOCArOTYy
LDEzIEBAIFdJLkRPTURlYnVnZ2VyTWFuYWdlciA9IGNsYXNzIERPTURlYnVnZ2VyTWFuYWdlciBl
eHRlbmRzIFdJLk9iamVjdAogICAgICAgICBpZiAoYnJlYWtwb2ludC5ldmVudExpc3RlbmVyKQog
ICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGlmICghdGhpcy5fcmVzdG9yaW5nQnJlYWtw
b2ludHMpCisgICAgICAgIGlmICghdGhpcy5fcmVzdG9yaW5nQnJlYWtwb2ludHMpIHsKICAgICAg
ICAgICAgIFdJLm9iamVjdFN0b3Jlcy5ldmVudEJyZWFrcG9pbnRzLnB1dE9iamVjdChicmVha3Bv
aW50KTsKKyAgICAgICAgICAgIHRoaXMuX2V2ZW50QnJlYWtwb2ludHNTeW5jaHJvbml6ZXIubm90
aWZ5SWZOZWVkZWQoV0kuRnJvbnRlbmRTeW5jaHJvbml6ZXIuQWN0aW9uLlVwZGF0ZSwgKCkgPT4g
KHsKKyAgICAgICAgICAgICAgICBvYmplY3RJZGVudGlmaWVyOiBicmVha3BvaW50Lm9iamVjdElk
ZW50aWZpZXIsCisgICAgICAgICAgICAgICAgc2VyaWFsaXplZEJyZWFrcG9pbnQ6IGJyZWFrcG9p
bnQudG9KU09OKCksCisgICAgICAgICAgICB9KSk7CisgICAgICAgIH0KIAogICAgICAgICBpZiAo
YnJlYWtwb2ludC5kaXNhYmxlZCkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTkzNiwxNiArMTAw
NiwyNiBAQCBXSS5ET01EZWJ1Z2dlck1hbmFnZXIgPSBjbGFzcyBET01EZWJ1Z2dlck1hbmFnZXIg
ZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgICAgICAgICB0aGlzLl9zZXRVUkxCcmVha3BvaW50
KGJyZWFrcG9pbnQsIHRhcmdldCk7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoIXRoaXMuX3Jl
c3RvcmluZ0JyZWFrcG9pbnRzKQorICAgICAgICBpZiAoIXRoaXMuX3Jlc3RvcmluZ0JyZWFrcG9p
bnRzKSB7CiAgICAgICAgICAgICBXSS5vYmplY3RTdG9yZXMudXJsQnJlYWtwb2ludHMucHV0T2Jq
ZWN0KGJyZWFrcG9pbnQpOworICAgICAgICAgICAgdGhpcy5fdXJsQnJlYWtwb2ludHNTeW5jaHJv
bml6ZXIubm90aWZ5SWZOZWVkZWQoV0kuRnJvbnRlbmRTeW5jaHJvbml6ZXIuQWN0aW9uLlVwZGF0
ZSwgKCkgPT4gKHsKKyAgICAgICAgICAgICAgICBvYmplY3RJZGVudGlmaWVyOiBicmVha3BvaW50
Lm9iamVjdElkZW50aWZpZXIsCisgICAgICAgICAgICAgICAgc2VyaWFsaXplZEJyZWFrcG9pbnQ6
IGJyZWFrcG9pbnQudG9KU09OKCksCisgICAgICAgICAgICB9KSk7CisgICAgICAgIH0KICAgICB9
CiAKICAgICBfaGFuZGxlVVJMQnJlYWtwb2ludEVkaXRhYmxlUHJvcGVydHlDaGFuZ2VkKGV2ZW50
KQogICAgIHsKICAgICAgICAgbGV0IGJyZWFrcG9pbnQgPSBldmVudC50YXJnZXQ7CiAKLSAgICAg
ICAgaWYgKCF0aGlzLl9yZXN0b3JpbmdCcmVha3BvaW50cykKKyAgICAgICAgaWYgKCF0aGlzLl9y
ZXN0b3JpbmdCcmVha3BvaW50cykgewogICAgICAgICAgICAgV0kub2JqZWN0U3RvcmVzLnVybEJy
ZWFrcG9pbnRzLnB1dE9iamVjdChicmVha3BvaW50KTsKKyAgICAgICAgICAgIHRoaXMuX3VybEJy
ZWFrcG9pbnRzU3luY2hyb25pemVyLm5vdGlmeUlmTmVlZGVkKFdJLkZyb250ZW5kU3luY2hyb25p
emVyLkFjdGlvbi5VcGRhdGUsICgpID0+ICh7CisgICAgICAgICAgICAgICAgb2JqZWN0SWRlbnRp
ZmllcjogYnJlYWtwb2ludC5vYmplY3RJZGVudGlmaWVyLAorICAgICAgICAgICAgICAgIHNlcmlh
bGl6ZWRCcmVha3BvaW50OiBicmVha3BvaW50LnRvSlNPTigpLAorICAgICAgICAgICAgfSkpOwor
ICAgICAgICB9CiAKICAgICAgICAgaWYgKGJyZWFrcG9pbnQuZGlzYWJsZWQpCiAgICAgICAgICAg
ICByZXR1cm47CkBAIC0xMDYzLDYgKzExNDMsOTkgQEAgV0kuRE9NRGVidWdnZXJNYW5hZ2VyID0g
Y2xhc3MgRE9NRGVidWdnZXJNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgICAgICB9
CiAgICAgICAgIH0KICAgICB9CisKKyAgICBfaGFuZGxlRE9NQnJlYWtwb2ludHNTeW5jaHJvbml6
ZShhY3Rpb24sIGRhdGEpCisgICAgeworICAgICAgICB0aGlzLl9yZXN0b3JpbmdCcmVha3BvaW50
cyA9IHRydWU7CisKKyAgICAgICAgc3dpdGNoIChhY3Rpb24pIHsKKyAgICAgICAgY2FzZSBXSS5G
cm9udGVuZFN5bmNocm9uaXplci5BY3Rpb24uQWRkOgorICAgICAgICAgICAgdGhpcy5fcmVzdG9y
ZURPTUJyZWFrcG9pbnQoZGF0YS5zZXJpYWxpemVkQnJlYWtwb2ludCk7CisgICAgICAgICAgICBi
cmVhazsKKworICAgICAgICBjYXNlIFdJLkZyb250ZW5kU3luY2hyb25pemVyLkFjdGlvbi5VcGRh
dGU6IHsKKyAgICAgICAgICAgIGxldCBleGlzdGluZ0JyZWFrcG9pbnQgPSB0aGlzLl9kb21CcmVh
a3BvaW50VVJMTWFwLmZpbmQoKFt1cmwsIGJyZWFrcG9pbnRdKSA9PiBicmVha3BvaW50Lm9iamVj
dElkZW50aWZpZXIgPT09IGRhdGEub2JqZWN0SWRlbnRpZmllcik/LmJyZWFrcG9pbnQ7CisgICAg
ICAgICAgICBjb25zb2xlLmFzc2VydChleGlzdGluZ0JyZWFrcG9pbnQsIGRhdGEub2JqZWN0SWRl
bnRpZmllcik7CisgICAgICAgICAgICBleGlzdGluZ0JyZWFrcG9pbnQudXBkYXRlRnJvbUpTT04o
ZGF0YS5zZXJpYWxpemVkQnJlYWtwb2ludCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
fQorCisgICAgICAgIGNhc2UgV0kuRnJvbnRlbmRTeW5jaHJvbml6ZXIuQWN0aW9uLlJlbW92ZTog
eworICAgICAgICAgICAgbGV0IGV4aXN0aW5nQnJlYWtwb2ludCA9IHRoaXMuX2RvbUJyZWFrcG9p
bnRVUkxNYXAuZmluZCgoW3VybCwgYnJlYWtwb2ludF0pID0+IGJyZWFrcG9pbnQub2JqZWN0SWRl
bnRpZmllciA9PT0gZGF0YS5vYmplY3RJZGVudGlmaWVyKT8uYnJlYWtwb2ludDsKKyAgICAgICAg
ICAgIGNvbnNvbGUuYXNzZXJ0KGV4aXN0aW5nQnJlYWtwb2ludCwgZGF0YS5vYmplY3RJZGVudGlm
aWVyKTsKKyAgICAgICAgICAgIHRoaXMucmVtb3ZlRE9NQnJlYWtwb2ludChleGlzdGluZ0JyZWFr
cG9pbnQpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBkZWZhdWx0
OgorICAgICAgICAgICAgY29uc29sZS5hc3NlcnQoZmFsc2UsICJVbmV4cGVjdGVkIGFjdGlvbiIs
IGFjdGlvbik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIHRoaXMu
X3Jlc3RvcmluZ0JyZWFrcG9pbnRzID0gZmFsc2U7CisgICAgfQorCisgICAgX2hhbmRsZUV2ZW50
QnJlYWtwb2ludHNTeW5jaHJvbml6ZShhY3Rpb24sIGRhdGEpCisgICAgeworICAgICAgICB0aGlz
Ll9yZXN0b3JpbmdCcmVha3BvaW50cyA9IHRydWU7CisKKyAgICAgICAgc3dpdGNoIChhY3Rpb24p
IHsKKyAgICAgICAgY2FzZSBXSS5Gcm9udGVuZFN5bmNocm9uaXplci5BY3Rpb24uQWRkOgorICAg
ICAgICAgICAgdGhpcy5fcmVzdG9yZUV2ZW50QnJlYWtwb2ludChkYXRhLnNlcmlhbGl6ZWRCcmVh
a3BvaW50KTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgV0kuRnJvbnRlbmRT
eW5jaHJvbml6ZXIuQWN0aW9uLlVwZGF0ZTogeworICAgICAgICAgICAgbGV0IGV4aXN0aW5nQnJl
YWtwb2ludCA9IHRoaXMuX2xpc3RlbmVyQnJlYWtwb2ludHMuZmluZCgoYnJlYWtwb2ludCkgPT4g
YnJlYWtwb2ludC5vYmplY3RJZGVudGlmaWVyID09PSBkYXRhLm9iamVjdElkZW50aWZpZXIpOwor
ICAgICAgICAgICAgY29uc29sZS5hc3NlcnQoZXhpc3RpbmdCcmVha3BvaW50LCBkYXRhLm9iamVj
dElkZW50aWZpZXIpOworICAgICAgICAgICAgZXhpc3RpbmdCcmVha3BvaW50LnVwZGF0ZUZyb21K
U09OKGRhdGEuc2VyaWFsaXplZEJyZWFrcG9pbnQpOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIH0KKworICAgICAgICBjYXNlIFdJLkZyb250ZW5kU3luY2hyb25pemVyLkFjdGlvbi5SZW1v
dmU6IHsKKyAgICAgICAgICAgIGxldCBleGlzdGluZ0JyZWFrcG9pbnQgPSB0aGlzLl9saXN0ZW5l
ckJyZWFrcG9pbnRzLmZpbmQoKGJyZWFrcG9pbnQpID0+IGJyZWFrcG9pbnQub2JqZWN0SWRlbnRp
ZmllciA9PT0gZGF0YS5vYmplY3RJZGVudGlmaWVyKTsKKyAgICAgICAgICAgIGNvbnNvbGUuYXNz
ZXJ0KGV4aXN0aW5nQnJlYWtwb2ludCwgZGF0YS5vYmplY3RJZGVudGlmaWVyKTsKKyAgICAgICAg
ICAgIHRoaXMucmVtb3ZlRXZlbnRCcmVha3BvaW50KGV4aXN0aW5nQnJlYWtwb2ludCk7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAg
ICBjb25zb2xlLmFzc2VydChmYWxzZSwgIlVuZXhwZWN0ZWQgYWN0aW9uIiwgYWN0aW9uKTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgdGhpcy5fcmVzdG9yaW5nQnJl
YWtwb2ludHMgPSBmYWxzZTsKKyAgICB9CisKKyAgICBfaGFuZGxlVVJMQnJlYWtwb2ludHNTeW5j
aHJvbml6ZShhY3Rpb24sIGRhdGEpCisgICAgeworICAgICAgICB0aGlzLl9yZXN0b3JpbmdCcmVh
a3BvaW50cyA9IHRydWU7CisKKyAgICAgICAgc3dpdGNoIChhY3Rpb24pIHsKKyAgICAgICAgY2Fz
ZSBXSS5Gcm9udGVuZFN5bmNocm9uaXplci5BY3Rpb24uQWRkOgorICAgICAgICAgICAgdGhpcy5f
cmVzdG9yZVVSTEJyZWFrcG9pbnQoZGF0YS5zZXJpYWxpemVkQnJlYWtwb2ludCk7CisgICAgICAg
ICAgICBicmVhazsKKworICAgICAgICBjYXNlIFdJLkZyb250ZW5kU3luY2hyb25pemVyLkFjdGlv
bi5VcGRhdGU6IHsKKyAgICAgICAgICAgIGxldCBleGlzdGluZ0JyZWFrcG9pbnQgPSB0aGlzLl91
cmxCcmVha3BvaW50cy5maW5kKChicmVha3BvaW50KSA9PiBicmVha3BvaW50Lm9iamVjdElkZW50
aWZpZXIgPT09IGRhdGEub2JqZWN0SWRlbnRpZmllcik7CisgICAgICAgICAgICBjb25zb2xlLmFz
c2VydChleGlzdGluZ0JyZWFrcG9pbnQsIGRhdGEub2JqZWN0SWRlbnRpZmllcik7CisgICAgICAg
ICAgICBleGlzdGluZ0JyZWFrcG9pbnQudXBkYXRlRnJvbUpTT04oZGF0YS5zZXJpYWxpemVkQnJl
YWtwb2ludCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2Ug
V0kuRnJvbnRlbmRTeW5jaHJvbml6ZXIuQWN0aW9uLlJlbW92ZTogeworICAgICAgICAgICAgbGV0
IGV4aXN0aW5nQnJlYWtwb2ludCA9IHRoaXMuX3VybEJyZWFrcG9pbnRzLmZpbmQoKGJyZWFrcG9p
bnQpID0+IGJyZWFrcG9pbnQub2JqZWN0SWRlbnRpZmllciA9PT0gZGF0YS5vYmplY3RJZGVudGlm
aWVyKTsKKyAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGV4aXN0aW5nQnJlYWtwb2ludCwgZGF0
YS5vYmplY3RJZGVudGlmaWVyKTsKKyAgICAgICAgICAgIHRoaXMucmVtb3ZlVVJMQnJlYWtwb2lu
dChleGlzdGluZ0JyZWFrcG9pbnQpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKwor
ICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgY29uc29sZS5hc3NlcnQoZmFsc2UsICJVbmV4
cGVjdGVkIGFjdGlvbiIsIGFjdGlvbik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQor
CisgICAgICAgIHRoaXMuX3Jlc3RvcmluZ0JyZWFrcG9pbnRzID0gZmFsc2U7CisgICAgfQogfTsK
IAogV0kuRE9NRGVidWdnZXJNYW5hZ2VyLkV2ZW50ID0gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvRGVidWdnZXJNYW5hZ2VyLmpz
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvRGVidWdn
ZXJNYW5hZ2VyLmpzCmluZGV4IGVhZjM5ZDk2ZTNjYy4uNzcyN2IxZWU3YjU2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9EZWJ1Z2dl
ck1hbmFnZXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29u
dHJvbGxlcnMvRGVidWdnZXJNYW5hZ2VyLmpzCkBAIC0zNCw3ICszNCw3IEBAIFdJLkRlYnVnZ2Vy
TWFuYWdlciA9IGNsYXNzIERlYnVnZ2VyTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogICAgICAg
ICBXSS5KYXZhU2NyaXB0QnJlYWtwb2ludC5hZGRFdmVudExpc3RlbmVyKFdJLkJyZWFrcG9pbnQu
RXZlbnQuSWdub3JlQ291bnREaWRDaGFuZ2UsIHRoaXMuX2JyZWFrcG9pbnRFZGl0YWJsZVByb3Bl
cnR5RGlkQ2hhbmdlLCB0aGlzKTsKICAgICAgICAgV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQuYWRk
RXZlbnRMaXN0ZW5lcihXSS5CcmVha3BvaW50LkV2ZW50LkF1dG9Db250aW51ZURpZENoYW5nZSwg
dGhpcy5fYnJlYWtwb2ludEVkaXRhYmxlUHJvcGVydHlEaWRDaGFuZ2UsIHRoaXMpOwogICAgICAg
ICBXSS5KYXZhU2NyaXB0QnJlYWtwb2ludC5hZGRFdmVudExpc3RlbmVyKFdJLkJyZWFrcG9pbnQu
RXZlbnQuQWN0aW9uc0RpZENoYW5nZSwgdGhpcy5faGFuZGxlQnJlYWtwb2ludEFjdGlvbnNEaWRD
aGFuZ2UsIHRoaXMpOwotICAgICAgICBXSS5KYXZhU2NyaXB0QnJlYWtwb2ludC5hZGRFdmVudExp
c3RlbmVyKFdJLkphdmFTY3JpcHRCcmVha3BvaW50LkV2ZW50LkRpc3BsYXlMb2NhdGlvbkRpZENo
YW5nZSwgdGhpcy5fYnJlYWtwb2ludERpc3BsYXlMb2NhdGlvbkRpZENoYW5nZSwgdGhpcyk7Cisg
ICAgICAgIFdJLkphdmFTY3JpcHRCcmVha3BvaW50LmFkZEV2ZW50TGlzdGVuZXIoV0kuSmF2YVNj
cmlwdEJyZWFrcG9pbnQuRXZlbnQuTG9jYXRpb25EaWRDaGFuZ2UsIHRoaXMuX2JyZWFrcG9pbnRM
b2NhdGlvbkRpZENoYW5nZSwgdGhpcyk7CiAKICAgICAgICAgV0kudGltZWxpbmVNYW5hZ2VyLmFk
ZEV2ZW50TGlzdGVuZXIoV0kuVGltZWxpbmVNYW5hZ2VyLkV2ZW50LkNhcHR1cmluZ1N0YXRlQ2hh
bmdlZCwgdGhpcy5faGFuZGxlVGltZWxpbmVDYXB0dXJpbmdTdGF0ZUNoYW5nZWQsIHRoaXMpOwog
CkBAIC0xMDIsNyArMTAyLDcgQEAgV0kuRGVidWdnZXJNYW5hZ2VyID0gY2xhc3MgRGVidWdnZXJN
YW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgIH0KICAgICAgICAgdGhpcy5fdGVtcG9y
YXJpbHlEaXNhYmxlQnJlYWtwb2ludHNSZXF1ZXN0Q291bnQgPSAwOwogCi0gICAgICAgIHRoaXMu
X2lnbm9yZUJyZWFrcG9pbnREaXNwbGF5TG9jYXRpb25EaWRDaGFuZ2VFdmVudCA9IGZhbHNlOwor
ICAgICAgICB0aGlzLl9pZ25vcmVCcmVha3BvaW50TG9jYXRpb25EaWRDaGFuZ2VFdmVudCA9IGZh
bHNlOwogCiAgICAgICAgIFdJLlRhcmdldC5yZWdpc3RlckluaXRpYWxpemF0aW9uUHJvbWlzZSgo
YXN5bmMgKCkgPT4gewogICAgICAgICAgICAgbGV0IGV4aXN0aW5nU2VyaWFsaXplZEJyZWFrcG9p
bnRzID0gV0kuU2V0dGluZy5taWdyYXRlVmFsdWUoImJyZWFrcG9pbnRzIik7CkBAIC0xMTQsMTUg
KzExNCwxMSBAQCBXSS5EZWJ1Z2dlck1hbmFnZXIgPSBjbGFzcyBEZWJ1Z2dlck1hbmFnZXIgZXh0
ZW5kcyBXSS5PYmplY3QKICAgICAgICAgICAgIGxldCBzZXJpYWxpemVkQnJlYWtwb2ludHMgPSBh
d2FpdCBXSS5vYmplY3RTdG9yZXMuYnJlYWtwb2ludHMuZ2V0QWxsKCk7CiAKICAgICAgICAgICAg
IHRoaXMuX3Jlc3RvcmluZ0JyZWFrcG9pbnRzID0gdHJ1ZTsKLSAgICAgICAgICAgIGZvciAobGV0
IHNlcmlhbGl6ZWRCcmVha3BvaW50IG9mIHNlcmlhbGl6ZWRCcmVha3BvaW50cykgewotICAgICAg
ICAgICAgICAgIGxldCBicmVha3BvaW50ID0gV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQuZnJvbUpT
T04oc2VyaWFsaXplZEJyZWFrcG9pbnQpOwotCi0gICAgICAgICAgICAgICAgY29uc3Qga2V5ID0g
bnVsbDsKLSAgICAgICAgICAgICAgICBXSS5vYmplY3RTdG9yZXMuYnJlYWtwb2ludHMuYXNzb2Np
YXRlT2JqZWN0KGJyZWFrcG9pbnQsIGtleSwgc2VyaWFsaXplZEJyZWFrcG9pbnQpOwotCi0gICAg
ICAgICAgICAgICAgdGhpcy5hZGRCcmVha3BvaW50KGJyZWFrcG9pbnQpOwotICAgICAgICAgICAg
fQorICAgICAgICAgICAgZm9yIChsZXQgc2VyaWFsaXplZEJyZWFrcG9pbnQgb2Ygc2VyaWFsaXpl
ZEJyZWFrcG9pbnRzKQorICAgICAgICAgICAgICAgIHRoaXMuX3Jlc3RvcmVCcmVha3BvaW50KHNl
cmlhbGl6ZWRCcmVha3BvaW50KTsKICAgICAgICAgICAgIHRoaXMuX3Jlc3RvcmluZ0JyZWFrcG9p
bnRzID0gZmFsc2U7CisKKyAgICAgICAgICAgIHRoaXMuX2JyZWFrcG9pbnRzU3luY2hyb25pemVy
ID0gbmV3IFdJLkZyb250ZW5kU3luY2hyb25pemVyKCJicmVha3BvaW50cyIsIHRoaXMuX2hhbmRs
ZUJyZWFrcG9pbnRzU3luY2hyb25pemUuYmluZCh0aGlzKSk7CiAgICAgICAgIH0pKCkpOwogCiAg
ICAgICAgIFdJLlRhcmdldC5yZWdpc3RlckluaXRpYWxpemF0aW9uUHJvbWlzZSgoYXN5bmMgKCkg
PT4gewpAQCAtNjU0LDggKzY1MCwxMCBAQCBXSS5EZWJ1Z2dlck1hbmFnZXIgPSBjbGFzcyBEZWJ1
Z2dlck1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgICAgIGlmICghYnJlYWtwb2lu
dC5kaXNhYmxlZCkKICAgICAgICAgICAgICAgICB0aGlzLl9zZXRCcmVha3BvaW50KGJyZWFrcG9p
bnQpOwogCi0gICAgICAgICAgICBpZiAoIXRoaXMuX3Jlc3RvcmluZ0JyZWFrcG9pbnRzKQorICAg
ICAgICAgICAgaWYgKCF0aGlzLl9yZXN0b3JpbmdCcmVha3BvaW50cykgewogICAgICAgICAgICAg
ICAgIFdJLm9iamVjdFN0b3Jlcy5icmVha3BvaW50cy5wdXRPYmplY3QoYnJlYWtwb2ludCk7Cisg
ICAgICAgICAgICAgICAgdGhpcy5fYnJlYWtwb2ludHNTeW5jaHJvbml6ZXIubm90aWZ5SWZOZWVk
ZWQoV0kuRnJvbnRlbmRTeW5jaHJvbml6ZXIuQWN0aW9uLkFkZCwgKCkgPT4gKHtzZXJpYWxpemVk
QnJlYWtwb2ludDogYnJlYWtwb2ludC50b0pTT04oKX0pKTsKKyAgICAgICAgICAgIH0KICAgICAg
ICAgfQogCiAgICAgICAgIHRoaXMuYWRkUHJvYmVzRm9yQnJlYWtwb2ludChicmVha3BvaW50KTsK
QEAgLTcwNCw4ICs3MDIsMTAgQEAgV0kuRGVidWdnZXJNYW5hZ2VyID0gY2xhc3MgRGVidWdnZXJN
YW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgICAgICAgICAgdGhpcy5fYWxsTWljcm90
YXNrc0JyZWFrcG9pbnQgPSBudWxsOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgfQotICAgICAgICB9IGVsc2UgaWYgKCF0aGlzLl9yZXN0b3JpbmdCcmVha3BvaW50cykKKyAg
ICAgICAgfSBlbHNlIGlmICghdGhpcy5fcmVzdG9yaW5nQnJlYWtwb2ludHMpIHsKICAgICAgICAg
ICAgIFdJLm9iamVjdFN0b3Jlcy5icmVha3BvaW50cy5kZWxldGVPYmplY3QoYnJlYWtwb2ludCk7
CisgICAgICAgICAgICB0aGlzLl9icmVha3BvaW50c1N5bmNocm9uaXplci5ub3RpZnlJZk5lZWRl
ZChXSS5Gcm9udGVuZFN5bmNocm9uaXplci5BY3Rpb24uUmVtb3ZlLCAoKSA9PiAoe29iamVjdElk
ZW50aWZpZXI6IGJyZWFrcG9pbnQub2JqZWN0SWRlbnRpZmllcn0pKTsKKyAgICAgICAgfQogCiAg
ICAgICAgIHRoaXMucmVtb3ZlUHJvYmVzRm9yQnJlYWtwb2ludChicmVha3BvaW50KTsKIApAQCAt
ODE2LDcgKzgxNiw3IEBAIFdJLkRlYnVnZ2VyTWFuYWdlciA9IGNsYXNzIERlYnVnZ2VyTWFuYWdl
ciBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICB0aGlzLl9pbnRlcm5hbFdlYktpdFNjcmlwdHMg
PSBbXTsKICAgICAgICAgdGhpcy5fdGFyZ2V0RGVidWdnZXJEYXRhTWFwLmNsZWFyKCk7CiAKLSAg
ICAgICAgdGhpcy5faWdub3JlQnJlYWtwb2ludERpc3BsYXlMb2NhdGlvbkRpZENoYW5nZUV2ZW50
ID0gdHJ1ZTsKKyAgICAgICAgdGhpcy5faWdub3JlQnJlYWtwb2ludExvY2F0aW9uRGlkQ2hhbmdl
RXZlbnQgPSB0cnVlOwogCiAgICAgICAgIC8vIE1hcmsgYWxsIHRoZSBicmVha3BvaW50cyBhcyB1
bnJlc29sdmVkLiBUaGV5IHdpbGwgYmUgcmVwb3J0ZWQgYXMgcmVzb2x2ZWQgd2hlbgogICAgICAg
ICAvLyBicmVha3BvaW50UmVzb2x2ZWQgaXMgY2FsbGVkIGFzIHRoZSBwYWdlIGxvYWRzLgpAQCAt
ODI2LDcgKzgyNiw3IEBAIFdJLkRlYnVnZ2VyTWFuYWdlciA9IGNsYXNzIERlYnVnZ2VyTWFuYWdl
ciBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICAgICAgICAgIGJyZWFrcG9pbnQuc291cmNlQ29k
ZUxvY2F0aW9uLnNvdXJjZUNvZGUgPSBudWxsOwogICAgICAgICB9CiAKLSAgICAgICAgdGhpcy5f
aWdub3JlQnJlYWtwb2ludERpc3BsYXlMb2NhdGlvbkRpZENoYW5nZUV2ZW50ID0gZmFsc2U7Cisg
ICAgICAgIHRoaXMuX2lnbm9yZUJyZWFrcG9pbnRMb2NhdGlvbkRpZENoYW5nZUV2ZW50ID0gZmFs
c2U7CiAKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuRGVidWdnZXJN
YW5hZ2VyLkV2ZW50LlNjcmlwdHNDbGVhcmVkKTsKIApAQCAtMTA1NCw2ICsxMDU0LDE4IEBAIFdJ
LkRlYnVnZ2VyTWFuYWdlciA9IGNsYXNzIERlYnVnZ2VyTWFuYWdlciBleHRlbmRzIFdJLk9iamVj
dAogICAgICAgICByZXR1cm4gbmV3IFdJLlNjb3BlQ2hhaW5Ob2RlKHR5cGUsIFtvYmplY3RdLCBw
YXlsb2FkLm5hbWUsIHBheWxvYWQubG9jYXRpb24sIHBheWxvYWQuZW1wdHkpOwogICAgIH0KIAor
ICAgIF9yZXN0b3JlQnJlYWtwb2ludChzZXJpYWxpemVkQnJlYWtwb2ludCkKKyAgICB7CisgICAg
ICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX3Jlc3RvcmluZ0JyZWFrcG9pbnRzKTsKKworICAgICAg
ICBsZXQgYnJlYWtwb2ludCA9IFdJLkphdmFTY3JpcHRCcmVha3BvaW50LmZyb21KU09OKHNlcmlh
bGl6ZWRCcmVha3BvaW50KTsKKworICAgICAgICBjb25zdCBrZXkgPSBudWxsOworICAgICAgICBX
SS5vYmplY3RTdG9yZXMuYnJlYWtwb2ludHMuYXNzb2NpYXRlT2JqZWN0KGJyZWFrcG9pbnQsIGtl
eSwgc2VyaWFsaXplZEJyZWFrcG9pbnQpOworCisgICAgICAgIHRoaXMuYWRkQnJlYWtwb2ludChi
cmVha3BvaW50KTsKKyAgICB9CisKICAgICBfc2V0QnJlYWtwb2ludChicmVha3BvaW50LCBzcGVj
aWZpY1RhcmdldCkKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCFicmVha3BvaW50LmRp
c2FibGVkKTsKQEAgLTEyMzUsOSArMTI0Nyw5IEBAIFdJLkRlYnVnZ2VyTWFuYWdlciA9IGNsYXNz
IERlYnVnZ2VyTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICB9CiAgICAgfQogCi0g
ICAgX2JyZWFrcG9pbnREaXNwbGF5TG9jYXRpb25EaWRDaGFuZ2UoZXZlbnQpCisgICAgX2JyZWFr
cG9pbnRMb2NhdGlvbkRpZENoYW5nZShldmVudCkKICAgICB7Ci0gICAgICAgIGlmICh0aGlzLl9p
Z25vcmVCcmVha3BvaW50RGlzcGxheUxvY2F0aW9uRGlkQ2hhbmdlRXZlbnQpCisgICAgICAgIGlm
ICh0aGlzLl9pZ25vcmVCcmVha3BvaW50TG9jYXRpb25EaWRDaGFuZ2VFdmVudCkKICAgICAgICAg
ICAgIHJldHVybjsKIAogICAgICAgICBsZXQgYnJlYWtwb2ludCA9IGV2ZW50LnRhcmdldDsKQEAg
LTEyNjQsOCArMTI3NiwxMyBAQCBXSS5EZWJ1Z2dlck1hbmFnZXIgPSBjbGFzcyBEZWJ1Z2dlck1h
bmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQog
Ci0gICAgICAgIGlmICghdGhpcy5fcmVzdG9yaW5nQnJlYWtwb2ludHMpCisgICAgICAgIGlmICgh
dGhpcy5fcmVzdG9yaW5nQnJlYWtwb2ludHMpIHsKICAgICAgICAgICAgIFdJLm9iamVjdFN0b3Jl
cy5icmVha3BvaW50cy5wdXRPYmplY3QoYnJlYWtwb2ludCk7CisgICAgICAgICAgICB0aGlzLl9i
cmVha3BvaW50c1N5bmNocm9uaXplci5ub3RpZnlJZk5lZWRlZChXSS5Gcm9udGVuZFN5bmNocm9u
aXplci5BY3Rpb24uVXBkYXRlLCAoKSA9PiAoeworICAgICAgICAgICAgICAgIG9iamVjdElkZW50
aWZpZXI6IGJyZWFrcG9pbnQub2JqZWN0SWRlbnRpZmllciwKKyAgICAgICAgICAgICAgICBzZXJp
YWxpemVkQnJlYWtwb2ludDogYnJlYWtwb2ludC50b0pTT04oKSwKKyAgICAgICAgICAgIH0pKTsK
KyAgICAgICAgfQogCiAgICAgICAgIGlmIChicmVha3BvaW50LmRpc2FibGVkKQogICAgICAgICAg
ICAgdGhpcy5fcmVtb3ZlQnJlYWtwb2ludChicmVha3BvaW50KTsKQEAgLTEyODQsOCArMTMwMSwx
MyBAQCBXSS5EZWJ1Z2dlck1hbmFnZXIgPSBjbGFzcyBEZWJ1Z2dlck1hbmFnZXIgZXh0ZW5kcyBX
SS5PYmplY3QKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIGlmICgh
dGhpcy5fcmVzdG9yaW5nQnJlYWtwb2ludHMpCisgICAgICAgIGlmICghdGhpcy5fcmVzdG9yaW5n
QnJlYWtwb2ludHMpIHsKICAgICAgICAgICAgIFdJLm9iamVjdFN0b3Jlcy5icmVha3BvaW50cy5w
dXRPYmplY3QoYnJlYWtwb2ludCk7CisgICAgICAgICAgICB0aGlzLl9icmVha3BvaW50c1N5bmNo
cm9uaXplci5ub3RpZnlJZk5lZWRlZChXSS5Gcm9udGVuZFN5bmNocm9uaXplci5BY3Rpb24uVXBk
YXRlLCAoKSA9PiAoeworICAgICAgICAgICAgICAgIG9iamVjdElkZW50aWZpZXI6IGJyZWFrcG9p
bnQub2JqZWN0SWRlbnRpZmllciwKKyAgICAgICAgICAgICAgICBzZXJpYWxpemVkQnJlYWtwb2lu
dDogYnJlYWtwb2ludC50b0pTT04oKSwKKyAgICAgICAgICAgIH0pKTsKKyAgICAgICAgfQogCiAg
ICAgICAgIGlmIChicmVha3BvaW50LmRpc2FibGVkKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAt
MTQwMiw2ICsxNDI0LDM3IEBAIFdJLkRlYnVnZ2VyTWFuYWdlciA9IGNsYXNzIERlYnVnZ2VyTWFu
YWdlciBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICB0aGlzLl9kaWRSZXN1bWVJbnRlcm5hbChX
SS5tYWluVGFyZ2V0KTsKICAgICB9CiAKKyAgICBfaGFuZGxlQnJlYWtwb2ludHNTeW5jaHJvbml6
ZShhY3Rpb24sIGRhdGEpCisgICAgeworICAgICAgICB0aGlzLl9yZXN0b3JpbmdCcmVha3BvaW50
cyA9IHRydWU7CisKKyAgICAgICAgc3dpdGNoIChhY3Rpb24pIHsKKyAgICAgICAgY2FzZSBXSS5G
cm9udGVuZFN5bmNocm9uaXplci5BY3Rpb24uQWRkOgorICAgICAgICAgICAgdGhpcy5fcmVzdG9y
ZUJyZWFrcG9pbnQoZGF0YS5zZXJpYWxpemVkQnJlYWtwb2ludCk7CisgICAgICAgICAgICBicmVh
azsKKworICAgICAgICBjYXNlIFdJLkZyb250ZW5kU3luY2hyb25pemVyLkFjdGlvbi5VcGRhdGU6
IHsKKyAgICAgICAgICAgIGxldCBleGlzdGluZ0JyZWFrcG9pbnQgPSB0aGlzLl9icmVha3BvaW50
cy5maW5kKChicmVha3BvaW50KSA9PiBicmVha3BvaW50Lm9iamVjdElkZW50aWZpZXIgPT09IGRh
dGEub2JqZWN0SWRlbnRpZmllcik7CisgICAgICAgICAgICBjb25zb2xlLmFzc2VydChleGlzdGlu
Z0JyZWFrcG9pbnQsIGRhdGEub2JqZWN0SWRlbnRpZmllcik7CisgICAgICAgICAgICBleGlzdGlu
Z0JyZWFrcG9pbnQudXBkYXRlRnJvbUpTT04oZGF0YS5zZXJpYWxpemVkQnJlYWtwb2ludCk7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2UgV0kuRnJvbnRlbmRT
eW5jaHJvbml6ZXIuQWN0aW9uLlJlbW92ZTogeworICAgICAgICAgICAgbGV0IGV4aXN0aW5nQnJl
YWtwb2ludCA9IHRoaXMuX2JyZWFrcG9pbnRzLmZpbmQoKGJyZWFrcG9pbnQpID0+IGJyZWFrcG9p
bnQub2JqZWN0SWRlbnRpZmllciA9PT0gZGF0YS5vYmplY3RJZGVudGlmaWVyKTsKKyAgICAgICAg
ICAgIGNvbnNvbGUuYXNzZXJ0KGV4aXN0aW5nQnJlYWtwb2ludCwgZGF0YS5vYmplY3RJZGVudGlm
aWVyKTsKKyAgICAgICAgICAgIHRoaXMucmVtb3ZlQnJlYWtwb2ludChleGlzdGluZ0JyZWFrcG9p
bnQpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBkZWZhdWx0Ogor
ICAgICAgICAgICAgY29uc29sZS5hc3NlcnQoZmFsc2UsICJVbmV4cGVjdGVkIGFjdGlvbiIsIGFj
dGlvbik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIHRoaXMuX3Jl
c3RvcmluZ0JyZWFrcG9pbnRzID0gZmFsc2U7CisgICAgfQorCiAgICAgX2RpZFJlc3VtZUludGVy
bmFsKHRhcmdldCkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5wYXVzZWQpCkBAIC0xNDMxLDcg
KzE0ODQsNyBAQCBXSS5EZWJ1Z2dlck1hbmFnZXIgPSBjbGFzcyBEZWJ1Z2dlck1hbmFnZXIgZXh0
ZW5kcyBXSS5PYmplY3QKIAogICAgIF9hc3NvY2lhdGVCcmVha3BvaW50c1dpdGhTb3VyY2VDb2Rl
KGJyZWFrcG9pbnRzLCBzb3VyY2VDb2RlKQogICAgIHsKLSAgICAgICAgdGhpcy5faWdub3JlQnJl
YWtwb2ludERpc3BsYXlMb2NhdGlvbkRpZENoYW5nZUV2ZW50ID0gdHJ1ZTsKKyAgICAgICAgdGhp
cy5faWdub3JlQnJlYWtwb2ludExvY2F0aW9uRGlkQ2hhbmdlRXZlbnQgPSB0cnVlOwogCiAgICAg
ICAgIGZvciAobGV0IGJyZWFrcG9pbnQgb2YgYnJlYWtwb2ludHMpIHsKICAgICAgICAgICAgIGlm
ICghYnJlYWtwb2ludC5zb3VyY2VDb2RlTG9jYXRpb24uc291cmNlQ29kZSkKQEAgLTE0NDAsNyAr
MTQ5Myw3IEBAIFdJLkRlYnVnZ2VyTWFuYWdlciA9IGNsYXNzIERlYnVnZ2VyTWFuYWdlciBleHRl
bmRzIFdJLk9iamVjdAogICAgICAgICAgICAgY29uc29sZS5hc3NlcnQoYnJlYWtwb2ludC5zb3Vy
Y2VDb2RlTG9jYXRpb24uc291cmNlQ29kZSA9PT0gc291cmNlQ29kZSB8fCBicmVha3BvaW50LnNv
dXJjZUNvZGVMb2NhdGlvbi5zb3VyY2VDb2RlLmNvbnRlbnRJZGVudGlmaWVyID09PSBzb3VyY2VD
b2RlLmNvbnRlbnRJZGVudGlmaWVyKTsKICAgICAgICAgfQogCi0gICAgICAgIHRoaXMuX2lnbm9y
ZUJyZWFrcG9pbnREaXNwbGF5TG9jYXRpb25EaWRDaGFuZ2VFdmVudCA9IGZhbHNlOworICAgICAg
ICB0aGlzLl9pZ25vcmVCcmVha3BvaW50TG9jYXRpb25EaWRDaGFuZ2VFdmVudCA9IGZhbHNlOwog
ICAgIH0KIAogICAgIF9wcm9iZVNldEZvckJyZWFrcG9pbnQoYnJlYWtwb2ludCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL05ldHdv
cmtNYW5hZ2VyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJv
bGxlcnMvTmV0d29ya01hbmFnZXIuanMKaW5kZXggMmExNjg4YzE0ZmZmLi4yZDVjZmIwMzliNTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xs
ZXJzL05ldHdvcmtNYW5hZ2VyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL0NvbnRyb2xsZXJzL05ldHdvcmtNYW5hZ2VyLmpzCkBAIC02NiwzMiArNjYsMTEgQEAg
V0kuTmV0d29ya01hbmFnZXIgPSBjbGFzcyBOZXR3b3JrTWFuYWdlciBleHRlbmRzIFdJLk9iamVj
dAogICAgICAgICAgICAgICAgIGxldCBzZXJpYWxpemVkTG9jYWxSZXNvdXJjZU92ZXJyaWRlcyA9
IGF3YWl0IFdJLm9iamVjdFN0b3Jlcy5sb2NhbFJlc291cmNlT3ZlcnJpZGVzLmdldEFsbCgpOwog
CiAgICAgICAgICAgICAgICAgdGhpcy5fcmVzdG9yaW5nTG9jYWxSZXNvdXJjZU92ZXJyaWRlcyA9
IHRydWU7Ci0gICAgICAgICAgICAgICAgZm9yIChsZXQgc2VyaWFsaXplZExvY2FsUmVzb3VyY2VP
dmVycmlkZSBvZiBzZXJpYWxpemVkTG9jYWxSZXNvdXJjZU92ZXJyaWRlcykgewotICAgICAgICAg
ICAgICAgICAgICBsZXQgbG9jYWxSZXNvdXJjZU92ZXJyaWRlID0gV0kuTG9jYWxSZXNvdXJjZU92
ZXJyaWRlLmZyb21KU09OKHNlcmlhbGl6ZWRMb2NhbFJlc291cmNlT3ZlcnJpZGUpOwotCi0gICAg
ICAgICAgICAgICAgICAgIGxldCBzdXBwb3J0ZWQgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICAg
ICAgc3dpdGNoIChsb2NhbFJlc291cmNlT3ZlcnJpZGUudHlwZSkgewotICAgICAgICAgICAgICAg
ICAgICBjYXNlIFdJLkxvY2FsUmVzb3VyY2VPdmVycmlkZS5JbnRlcmNlcHRUeXBlLlJlcXVlc3Q6
Ci0gICAgICAgICAgICAgICAgICAgICAgICBzdXBwb3J0ZWQgPSBXSS5OZXR3b3JrTWFuYWdlci5z
dXBwb3J0c092ZXJyaWRpbmdSZXF1ZXN0cygpOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7Ci0KLSAgICAgICAgICAgICAgICAgICAgY2FzZSBXSS5Mb2NhbFJlc291cmNlT3ZlcnJpZGUu
SW50ZXJjZXB0VHlwZS5SZXNwb25zZToKLSAgICAgICAgICAgICAgICAgICAgICAgIHN1cHBvcnRl
ZCA9IFdJLk5ldHdvcmtNYW5hZ2VyLnN1cHBvcnRzT3ZlcnJpZGluZ1Jlc3BvbnNlcygpOwotICAg
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgICAgICAgICAgICAgY2FzZSBX
SS5Mb2NhbFJlc291cmNlT3ZlcnJpZGUuSW50ZXJjZXB0VHlwZS5SZXNwb25zZVNraXBwaW5nTmV0
d29yazoKLSAgICAgICAgICAgICAgICAgICAgICAgIHN1cHBvcnRlZCA9IFdJLk5ldHdvcmtNYW5h
Z2VyLnN1cHBvcnRzT3ZlcnJpZGluZ1JlcXVlc3RzV2l0aFJlc3BvbnNlcygpOwotICAgICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
ICAgICAgICAgaWYgKCFzdXBwb3J0ZWQpCi0gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51
ZTsKLQotICAgICAgICAgICAgICAgICAgICBjb25zdCBrZXkgPSBudWxsOwotICAgICAgICAgICAg
ICAgICAgICBXSS5vYmplY3RTdG9yZXMubG9jYWxSZXNvdXJjZU92ZXJyaWRlcy5hc3NvY2lhdGVP
YmplY3QobG9jYWxSZXNvdXJjZU92ZXJyaWRlLCBrZXksIHNlcmlhbGl6ZWRMb2NhbFJlc291cmNl
T3ZlcnJpZGUpOwotCi0gICAgICAgICAgICAgICAgICAgIHRoaXMuYWRkTG9jYWxSZXNvdXJjZU92
ZXJyaWRlKGxvY2FsUmVzb3VyY2VPdmVycmlkZSk7Ci0gICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgIGZvciAobGV0IHNlcmlhbGl6ZWRMb2NhbFJlc291cmNlT3ZlcnJpZGUgb2Ygc2Vy
aWFsaXplZExvY2FsUmVzb3VyY2VPdmVycmlkZXMpCisgICAgICAgICAgICAgICAgICAgIHRoaXMu
X3Jlc3RvcmVMb2NhbFJlc291cmNlT3ZlcnJpZGUoc2VyaWFsaXplZExvY2FsUmVzb3VyY2VPdmVy
cmlkZSk7CiAgICAgICAgICAgICAgICAgdGhpcy5fcmVzdG9yaW5nTG9jYWxSZXNvdXJjZU92ZXJy
aWRlcyA9IGZhbHNlOworCisgICAgICAgICAgICAgICAgdGhpcy5fbG9jYWxSZXNvdXJjZU92ZXJy
aWRlc1N5bmNocm9uaXplciA9IG5ldyBXSS5Gcm9udGVuZFN5bmNocm9uaXplcigibG9jYWwtcmVz
b3VyY2Utb3ZlcnJpZGVzIiwgdGhpcy5faGFuZGxlTG9jYWxSZXNvdXJjZU92ZXJyaWRlc1N5bmNo
cm9uaXplLmJpbmQodGhpcykpOwogICAgICAgICAgICAgfSkoKSk7CiAgICAgICAgIH0KIApAQCAt
MTAwLDkgKzc5LDEzIEBAIFdJLk5ldHdvcmtNYW5hZ2VyID0gY2xhc3MgTmV0d29ya01hbmFnZXIg
ZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgICAgIHRoaXMuX2Jvb3RzdHJhcFNjcmlwdEVuYWJs
ZWRTZXR0aW5nID0gbmV3IFdJLlNldHRpbmcoImJvb3RzdHJhcC1zY3JpcHQtZW5hYmxlZCIsIHRy
dWUpOwogCiAgICAgICAgICAgICBXSS5UYXJnZXQucmVnaXN0ZXJJbml0aWFsaXphdGlvblByb21p
c2UoKGFzeW5jICgpID0+IHsKLSAgICAgICAgICAgICAgICBsZXQgYm9vdHN0cmFwU2NyaXB0U291
cmNlID0gYXdhaXQgV0kub2JqZWN0U3RvcmVzLmdlbmVyYWwuZ2V0KE5ldHdvcmtNYW5hZ2VyLmJv
b3RzdHJhcFNjcmlwdFNvdXJjZU9iamVjdFN0b3JlS2V5KTsKKyAgICAgICAgICAgICAgICB0aGlz
Ll9yZXN0b3JpbmdCb290c3RyYXBTY3JpcHQgPSB0cnVlOworICAgICAgICAgICAgICAgIGxldCBi
b290c3RyYXBTY3JpcHRTb3VyY2UgPSBhd2FpdCBXSS5vYmplY3RTdG9yZXMuZ2VuZXJhbC5nZXQo
V0kuTmV0d29ya01hbmFnZXIuYm9vdHN0cmFwU2NyaXB0U291cmNlT2JqZWN0U3RvcmVLZXkpOwog
ICAgICAgICAgICAgICAgIGlmIChib290c3RyYXBTY3JpcHRTb3VyY2UgIT09IHVuZGVmaW5lZCkK
ICAgICAgICAgICAgICAgICAgICAgdGhpcy5jcmVhdGVCb290c3RyYXBTY3JpcHQoYm9vdHN0cmFw
U2NyaXB0U291cmNlKTsKKyAgICAgICAgICAgICAgICB0aGlzLl9yZXN0b3JpbmdCb290c3RyYXBT
Y3JpcHQgPSBmYWxzZTsKKworICAgICAgICAgICAgICAgIHRoaXMuX2Jvb3RzdHJhcFNjcmlwdFN5
bmNocm9uaXplciA9IG5ldyBXSS5Gcm9udGVuZFN5bmNocm9uaXplcigiYm9vdHN0cmFwLXNjcmlw
dCIsIHRoaXMuX2hhbmRsZUJvb3RzdHJhcFNjcmlwdFN5bmNocm9uaXplLmJpbmQodGhpcykpOwog
ICAgICAgICAgICAgfSkoKSk7CiAgICAgICAgIH0KICAgICB9CkBAIC0zNDIsNiArMzI1LDggQEAg
V0kuTmV0d29ya01hbmFnZXIgPSBjbGFzcyBOZXR3b3JrTWFuYWdlciBleHRlbmRzIFdJLk9iamVj
dAogICogJHtXSS5VSVN0cmluZygiTW9yZSBpbmZvcm1hdGlvbiBpcyBhdmFpbGFibGUgYXQgPGh0
dHBzOi8vd2Via2l0Lm9yZy93ZWItaW5zcGVjdG9yL2luc3BlY3Rvci1ib290c3RyYXAtc2NyaXB0
Lz4uIil9CiAgKi8KIGAudHJpbVN0YXJ0KCk7CisgICAgICAgICAgICBpZiAoIXRoaXMuX3Jlc3Rv
cmluZ0Jvb3RzdHJhcFNjcmlwdCkKKyAgICAgICAgICAgICAgICBXSS5vYmplY3RTdG9yZXMuZ2Vu
ZXJhbC5wdXQoc291cmNlLCBOZXR3b3JrTWFuYWdlci5ib290c3RyYXBTY3JpcHRTb3VyY2VPYmpl
Y3RTdG9yZUtleSk7CiAgICAgICAgIH0KIAogICAgICAgICBjb25zdCB0YXJnZXQgPSBudWxsOwpA
QCAtMzQ5LDcgKzMzNCwxNCBAQCBXSS5OZXR3b3JrTWFuYWdlciA9IGNsYXNzIE5ldHdvcmtNYW5h
Z2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgIGNvbnN0IHNvdXJjZVVSTCA9IE5ldHdvcmtN
YW5hZ2VyLmJvb3RzdHJhcFNjcmlwdFVSTDsKICAgICAgICAgdGhpcy5fYm9vdHN0cmFwU2NyaXB0
ID0gbmV3IFdJLkxvY2FsU2NyaXB0KHRhcmdldCwgdXJsLCBzb3VyY2VVUkwsIFdJLlNjcmlwdC5T
b3VyY2VUeXBlLlByb2dyYW0sIHNvdXJjZSwge2luamVjdGVkOiB0cnVlLCBlZGl0YWJsZTogdHJ1
ZX0pOwogICAgICAgICB0aGlzLl9ib290c3RyYXBTY3JpcHQuYWRkRXZlbnRMaXN0ZW5lcihXSS5T
b3VyY2VDb2RlLkV2ZW50LkNvbnRlbnREaWRDaGFuZ2UsIHRoaXMuX2hhbmRsZUJvb3RzdHJhcFNj
cmlwdENvbnRlbnREaWRDaGFuZ2UsIHRoaXMpOworCisgICAgICAgIGlmICghdGhpcy5fcmVzdG9y
aW5nQm9vdHN0cmFwU2NyaXB0KQorICAgICAgICAgICAgdGhpcy5fYm9vdHN0cmFwU2NyaXB0U3lu
Y2hyb25pemVyLm5vdGlmeUlmTmVlZGVkKFdJLkZyb250ZW5kU3luY2hyb25pemVyLkFjdGlvbi5B
ZGQsICgpID0+IHNvdXJjZSk7CisKKyAgICAgICAgdGhpcy5fcmVzdG9yaW5nQm9vdHN0cmFwU2Ny
aXB0ID0gdHJ1ZTsKICAgICAgICAgdGhpcy5faGFuZGxlQm9vdHN0cmFwU2NyaXB0Q29udGVudERp
ZENoYW5nZSgpOworICAgICAgICB0aGlzLl9yZXN0b3JpbmdCb290c3RyYXBTY3JpcHQgPSBmYWxz
ZTsKKwogCiAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKE5ldHdvcmtNYW5h
Z2VyLkV2ZW50LkJvb3RzdHJhcFNjcmlwdENyZWF0ZWQsIHtib290c3RyYXBTY3JpcHQ6IHRoaXMu
X2Jvb3RzdHJhcFNjcmlwdH0pOwogICAgIH0KQEAgLTM2NCw3ICszNTYsMTEgQEAgV0kuTmV0d29y
a01hbmFnZXIgPSBjbGFzcyBOZXR3b3JrTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogICAgICAg
ICBsZXQgYm9vdHN0cmFwU2NyaXB0ID0gdGhpcy5fYm9vdHN0cmFwU2NyaXB0OwogCiAgICAgICAg
IHRoaXMuX2Jvb3RzdHJhcFNjcmlwdCA9IG51bGw7Ci0gICAgICAgIFdJLm9iamVjdFN0b3Jlcy5n
ZW5lcmFsLmRlbGV0ZShOZXR3b3JrTWFuYWdlci5ib290c3RyYXBTY3JpcHRTb3VyY2VPYmplY3RT
dG9yZUtleSk7CisKKyAgICAgICAgaWYgKCF0aGlzLl9yZXN0b3JpbmdCb290c3RyYXBTY3JpcHQp
IHsKKyAgICAgICAgICAgIFdJLm9iamVjdFN0b3Jlcy5nZW5lcmFsLmRlbGV0ZShOZXR3b3JrTWFu
YWdlci5ib290c3RyYXBTY3JpcHRTb3VyY2VPYmplY3RTdG9yZUtleSk7CisgICAgICAgICAgICB0
aGlzLl9ib290c3RyYXBTY3JpcHRTeW5jaHJvbml6ZXIubm90aWZ5SWZOZWVkZWQoV0kuRnJvbnRl
bmRTeW5jaHJvbml6ZXIuQWN0aW9uLlJlbW92ZSk7CisgICAgICAgIH0KIAogICAgICAgICAvLyBD
T01QQVRJQklMSVRZIChpT1MgMTMuMCk6IFBhZ2Uuc2V0Qm9vdHN0cmFwU2NyaXB0IGRpZCBub3Qg
ZXhpc3QgeWV0LgogICAgICAgICBmb3IgKGxldCB0YXJnZXQgb2YgV0kudGFyZ2V0cykgewpAQCAt
MzgyLDggKzM3OCwxMCBAQCBXSS5OZXR3b3JrTWFuYWdlciA9IGNsYXNzIE5ldHdvcmtNYW5hZ2Vy
IGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCF0aGlzLl9sb2NhbFJl
c291cmNlT3ZlcnJpZGVzLmluY2x1ZGVzKGxvY2FsUmVzb3VyY2VPdmVycmlkZSkpOwogICAgICAg
ICB0aGlzLl9sb2NhbFJlc291cmNlT3ZlcnJpZGVzLnB1c2gobG9jYWxSZXNvdXJjZU92ZXJyaWRl
KTsKIAotICAgICAgICBpZiAoIXRoaXMuX3Jlc3RvcmluZ0xvY2FsUmVzb3VyY2VPdmVycmlkZXMp
CisgICAgICAgIGlmICghdGhpcy5fcmVzdG9yaW5nTG9jYWxSZXNvdXJjZU92ZXJyaWRlcykgewog
ICAgICAgICAgICAgV0kub2JqZWN0U3RvcmVzLmxvY2FsUmVzb3VyY2VPdmVycmlkZXMucHV0T2Jq
ZWN0KGxvY2FsUmVzb3VyY2VPdmVycmlkZSk7CisgICAgICAgICAgICB0aGlzLl9sb2NhbFJlc291
cmNlT3ZlcnJpZGVzU3luY2hyb25pemVyLm5vdGlmeUlmTmVlZGVkKFdJLkZyb250ZW5kU3luY2hy
b25pemVyLkFjdGlvbi5BZGQsICgpID0+ICh7c2VyaWFsaXplZExvY2FsUmVzb3VyY2VPdmVycmlk
ZTogbG9jYWxSZXNvdXJjZU92ZXJyaWRlLnRvSlNPTigpfSkpOworICAgICAgICB9CiAKICAgICAg
ICAgaWYgKCFsb2NhbFJlc291cmNlT3ZlcnJpZGUuZGlzYWJsZWQpCiAgICAgICAgICAgICB0aGlz
Ll9hZGRJbnRlcmNlcHRpb24obG9jYWxSZXNvdXJjZU92ZXJyaWRlKTsKQEAgLTQwMyw4ICs0MDEs
MTAgQEAgV0kuTmV0d29ya01hbmFnZXIgPSBjbGFzcyBOZXR3b3JrTWFuYWdlciBleHRlbmRzIFdJ
Lk9iamVjdAogICAgICAgICBpZiAodGhpcy5fcGVuZGluZ0xvY2FsUmVzb3VyY2VPdmVycmlkZVNh
dmVzKQogICAgICAgICAgICAgdGhpcy5fcGVuZGluZ0xvY2FsUmVzb3VyY2VPdmVycmlkZVNhdmVz
LmRlbGV0ZShsb2NhbFJlc291cmNlT3ZlcnJpZGUpOwogCi0gICAgICAgIGlmICghdGhpcy5fcmVz
dG9yaW5nTG9jYWxSZXNvdXJjZU92ZXJyaWRlcykKKyAgICAgICAgaWYgKCF0aGlzLl9yZXN0b3Jp
bmdMb2NhbFJlc291cmNlT3ZlcnJpZGVzKSB7CiAgICAgICAgICAgICBXSS5vYmplY3RTdG9yZXMu
bG9jYWxSZXNvdXJjZU92ZXJyaWRlcy5kZWxldGVPYmplY3QobG9jYWxSZXNvdXJjZU92ZXJyaWRl
KTsKKyAgICAgICAgICAgIHRoaXMuX2xvY2FsUmVzb3VyY2VPdmVycmlkZXNTeW5jaHJvbml6ZXIu
bm90aWZ5SWZOZWVkZWQoV0kuRnJvbnRlbmRTeW5jaHJvbml6ZXIuQWN0aW9uLlJlbW92ZSwgKCkg
PT4gKHtvYmplY3RJZGVudGlmaWVyOiBsb2NhbFJlc291cmNlT3ZlcnJpZGUub2JqZWN0SWRlbnRp
Zmllcn0pKTsKKyAgICAgICAgfQogCiAgICAgICAgIGlmICghbG9jYWxSZXNvdXJjZU92ZXJyaWRl
LmRpc2FibGVkKQogICAgICAgICAgICAgdGhpcy5fcmVtb3ZlSW50ZXJjZXB0aW9uKGxvY2FsUmVz
b3VyY2VPdmVycmlkZSk7CkBAIC0xMzQwLDYgKzEzNDAsMzUgQEAgV0kuTmV0d29ya01hbmFnZXIg
PSBjbGFzcyBOZXR3b3JrTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICB9OwogICAg
IH0KIAorICAgIF9yZXN0b3JlTG9jYWxSZXNvdXJjZU92ZXJyaWRlKHNlcmlhbGl6ZWRMb2NhbFJl
c291cmNlT3ZlcnJpZGUpCisgICAgeworICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9yZXN0
b3JpbmdMb2NhbFJlc291cmNlT3ZlcnJpZGVzKTsKKworICAgICAgICBsZXQgbG9jYWxSZXNvdXJj
ZU92ZXJyaWRlID0gV0kuTG9jYWxSZXNvdXJjZU92ZXJyaWRlLmZyb21KU09OKHNlcmlhbGl6ZWRM
b2NhbFJlc291cmNlT3ZlcnJpZGUpOworCisgICAgICAgIHN3aXRjaCAobG9jYWxSZXNvdXJjZU92
ZXJyaWRlLnR5cGUpIHsKKyAgICAgICAgY2FzZSBXSS5Mb2NhbFJlc291cmNlT3ZlcnJpZGUuSW50
ZXJjZXB0VHlwZS5SZXF1ZXN0OgorICAgICAgICAgICAgaWYgKCFXSS5OZXR3b3JrTWFuYWdlci5z
dXBwb3J0c092ZXJyaWRpbmdSZXF1ZXN0cygpKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgV0kuTG9jYWxSZXNvdXJjZU92ZXJyaWRl
LkludGVyY2VwdFR5cGUuUmVzcG9uc2U6CisgICAgICAgICAgICBpZiAoIVdJLk5ldHdvcmtNYW5h
Z2VyLnN1cHBvcnRzT3ZlcnJpZGluZ1Jlc3BvbnNlcygpKQorICAgICAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgV0kuTG9jYWxSZXNvdXJjZU92
ZXJyaWRlLkludGVyY2VwdFR5cGUuUmVzcG9uc2VTa2lwcGluZ05ldHdvcms6CisgICAgICAgICAg
ICBpZiAoIVdJLk5ldHdvcmtNYW5hZ2VyLnN1cHBvcnRzT3ZlcnJpZGluZ1JlcXVlc3RzV2l0aFJl
c3BvbnNlcygpKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICB9CisKKyAgICAgICAgY29uc3Qga2V5ID0gbnVsbDsKKyAgICAgICAgV0kub2JqZWN0
U3RvcmVzLmxvY2FsUmVzb3VyY2VPdmVycmlkZXMuYXNzb2NpYXRlT2JqZWN0KGxvY2FsUmVzb3Vy
Y2VPdmVycmlkZSwga2V5LCBzZXJpYWxpemVkTG9jYWxSZXNvdXJjZU92ZXJyaWRlKTsKKworICAg
ICAgICB0aGlzLmFkZExvY2FsUmVzb3VyY2VPdmVycmlkZShsb2NhbFJlc291cmNlT3ZlcnJpZGUp
OworICAgIH0KKwogICAgIF9hZGRJbnRlcmNlcHRpb24obG9jYWxSZXNvdXJjZU92ZXJyaWRlLCBz
cGVjaWZpY1RhcmdldCkKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGxvY2FsUmVzb3Vy
Y2VPdmVycmlkZSBpbnN0YW5jZW9mIFdJLkxvY2FsUmVzb3VyY2VPdmVycmlkZSwgbG9jYWxSZXNv
dXJjZU92ZXJyaWRlKTsKQEAgLTE0NzksNiArMTUwOCwxMCBAQCBXSS5OZXR3b3JrTWFuYWdlciA9
IGNsYXNzIE5ldHdvcmtNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgICAgICAgICAg
Zm9yIChsZXQgbG9jYWxSZXNvdXJjZU92ZXJyaWRlIG9mIHRoaXMuX3BlbmRpbmdMb2NhbFJlc291
cmNlT3ZlcnJpZGVTYXZlcykgewogICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmFzc2VydChs
b2NhbFJlc291cmNlT3ZlcnJpZGUgaW5zdGFuY2VvZiBXSS5Mb2NhbFJlc291cmNlT3ZlcnJpZGUp
OwogICAgICAgICAgICAgICAgICAgICBXSS5vYmplY3RTdG9yZXMubG9jYWxSZXNvdXJjZU92ZXJy
aWRlcy5wdXRPYmplY3QobG9jYWxSZXNvdXJjZU92ZXJyaWRlKTsKKyAgICAgICAgICAgICAgICAg
ICAgdGhpcy5fbG9jYWxSZXNvdXJjZU92ZXJyaWRlc1N5bmNocm9uaXplci5ub3RpZnlJZk5lZWRl
ZChXSS5Gcm9udGVuZFN5bmNocm9uaXplci5BY3Rpb24uVXBkYXRlLCAoKSA9PiAoeworICAgICAg
ICAgICAgICAgICAgICAgICAgb2JqZWN0SWRlbnRpZmllcjogbG9jYWxSZXNvdXJjZU92ZXJyaWRl
Lm9iamVjdElkZW50aWZpZXIsCisgICAgICAgICAgICAgICAgICAgICAgICBzZXJpYWxpemVkTG9j
YWxSZXNvdXJjZU92ZXJyaWRlOiBsb2NhbFJlc291cmNlT3ZlcnJpZGUudG9KU09OKCksCisgICAg
ICAgICAgICAgICAgICAgIH0pKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9KTsK
ICAgICAgICAgfQpAQCAtMTQ5Miw3ICsxNTI1LDE0IEBAIFdJLk5ldHdvcmtNYW5hZ2VyID0gY2xh
c3MgTmV0d29ya01hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgY29uc29sZS5hc3Nl
cnQoV0kuTmV0d29ya01hbmFnZXIuc3VwcG9ydHNPdmVycmlkaW5nUmVzcG9uc2VzKCkpOwogCiAg
ICAgICAgIGxldCBsb2NhbFJlc291cmNlT3ZlcnJpZGUgPSBldmVudC50YXJnZXQ7Ci0gICAgICAg
IFdJLm9iamVjdFN0b3Jlcy5sb2NhbFJlc291cmNlT3ZlcnJpZGVzLnB1dE9iamVjdChsb2NhbFJl
c291cmNlT3ZlcnJpZGUpOworCisgICAgICAgIGlmICghdGhpcy5fcmVzdG9yaW5nTG9jYWxSZXNv
dXJjZU92ZXJyaWRlcykgeworICAgICAgICAgICAgV0kub2JqZWN0U3RvcmVzLmxvY2FsUmVzb3Vy
Y2VPdmVycmlkZXMucHV0T2JqZWN0KGxvY2FsUmVzb3VyY2VPdmVycmlkZSk7CisgICAgICAgICAg
ICB0aGlzLl9sb2NhbFJlc291cmNlT3ZlcnJpZGVzU3luY2hyb25pemVyLm5vdGlmeUlmTmVlZGVk
KFdJLkZyb250ZW5kU3luY2hyb25pemVyLkFjdGlvbi5VcGRhdGUsICgpID0+ICh7CisgICAgICAg
ICAgICAgICAgb2JqZWN0SWRlbnRpZmllcjogbG9jYWxSZXNvdXJjZU92ZXJyaWRlLm9iamVjdElk
ZW50aWZpZXIsCisgICAgICAgICAgICAgICAgc2VyaWFsaXplZExvY2FsUmVzb3VyY2VPdmVycmlk
ZTogbG9jYWxSZXNvdXJjZU92ZXJyaWRlLnRvSlNPTigpLAorICAgICAgICAgICAgfSkpOworICAg
ICAgICB9CiAKICAgICAgICAgaWYgKGxvY2FsUmVzb3VyY2VPdmVycmlkZS5kaXNhYmxlZCkKICAg
ICAgICAgICAgIHRoaXMuX3JlbW92ZUludGVyY2VwdGlvbihsb2NhbFJlc291cmNlT3ZlcnJpZGUp
OwpAQCAtMTUwNCw3ICsxNTQ0LDEwIEBAIFdJLk5ldHdvcmtNYW5hZ2VyID0gY2xhc3MgTmV0d29y
a01hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKICAgICB7CiAgICAgICAgIGxldCBzb3VyY2UgPSB0
aGlzLl9ib290c3RyYXBTY3JpcHQuY29udGVudCB8fCAiIjsKIAotICAgICAgICBXSS5vYmplY3RT
dG9yZXMuZ2VuZXJhbC5wdXQoc291cmNlLCBOZXR3b3JrTWFuYWdlci5ib290c3RyYXBTY3JpcHRT
b3VyY2VPYmplY3RTdG9yZUtleSk7CisgICAgICAgIGlmICghdGhpcy5fcmVzdG9yaW5nQm9vdHN0
cmFwU2NyaXB0KSB7CisgICAgICAgICAgICBXSS5vYmplY3RTdG9yZXMuZ2VuZXJhbC5wdXQoc291
cmNlLCBOZXR3b3JrTWFuYWdlci5ib290c3RyYXBTY3JpcHRTb3VyY2VPYmplY3RTdG9yZUtleSk7
CisgICAgICAgICAgICB0aGlzLl9ib290c3RyYXBTY3JpcHRTeW5jaHJvbml6ZXIubm90aWZ5SWZO
ZWVkZWQoV0kuRnJvbnRlbmRTeW5jaHJvbml6ZXIuQWN0aW9uLlVwZGF0ZSwgKCkgPT4gc291cmNl
KTsKKyAgICAgICAgfQogCiAgICAgICAgIGlmICghdGhpcy5fYm9vdHN0cmFwU2NyaXB0RW5hYmxl
ZFNldHRpbmcudmFsdWUpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0xNTMzLDYgKzE1NzYsNjIg
QEAgV0kuTmV0d29ya01hbmFnZXIgPSBjbGFzcyBOZXR3b3JrTWFuYWdlciBleHRlbmRzIFdJLk9i
amVjdAogICAgICAgICB0aGlzLl9zb3VyY2VNYXBVUkxNYXAuY2xlYXIoKTsKICAgICAgICAgdGhp
cy5fZG93bmxvYWRpbmdTb3VyY2VNYXBzLmNsZWFyKCk7CiAgICAgfQorCisgICAgX2hhbmRsZUxv
Y2FsUmVzb3VyY2VPdmVycmlkZXNTeW5jaHJvbml6ZShhY3Rpb24sIGRhdGEpCisgICAgeworICAg
ICAgICB0aGlzLl9yZXN0b3JpbmdMb2NhbFJlc291cmNlT3ZlcnJpZGVzID0gdHJ1ZTsKKworICAg
ICAgICBzd2l0Y2ggKGFjdGlvbikgeworICAgICAgICBjYXNlIFdJLkZyb250ZW5kU3luY2hyb25p
emVyLkFjdGlvbi5BZGQ6CisgICAgICAgICAgICB0aGlzLl9yZXN0b3JlTG9jYWxSZXNvdXJjZU92
ZXJyaWRlKGRhdGEuc2VyaWFsaXplZExvY2FsUmVzb3VyY2VPdmVycmlkZSk7CisgICAgICAgICAg
ICBicmVhazsKKworICAgICAgICBjYXNlIFdJLkZyb250ZW5kU3luY2hyb25pemVyLkFjdGlvbi5V
cGRhdGU6IHsKKyAgICAgICAgICAgIGxldCBleGlzdGluZ0xvY2FsUmVzb3VyY2VPdmVycmlkZSA9
IHRoaXMuX2xvY2FsUmVzb3VyY2VPdmVycmlkZXMuZmluZCgobG9jYWxSZXNvdXJjZU92ZXJyaWRl
KSA9PiBsb2NhbFJlc291cmNlT3ZlcnJpZGUub2JqZWN0SWRlbnRpZmllciA9PT0gZGF0YS5vYmpl
Y3RJZGVudGlmaWVyKTsKKyAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGV4aXN0aW5nTG9jYWxS
ZXNvdXJjZU92ZXJyaWRlLCBkYXRhLm9iamVjdElkZW50aWZpZXIpOworICAgICAgICAgICAgZXhp
c3RpbmdMb2NhbFJlc291cmNlT3ZlcnJpZGUudXBkYXRlRnJvbUpTT04oZGF0YS5zZXJpYWxpemVk
QnJlYWtwb2ludCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGNh
c2UgV0kuRnJvbnRlbmRTeW5jaHJvbml6ZXIuQWN0aW9uLlJlbW92ZTogeworICAgICAgICAgICAg
bGV0IGV4aXN0aW5nTG9jYWxSZXNvdXJjZU92ZXJyaWRlID0gdGhpcy5fbG9jYWxSZXNvdXJjZU92
ZXJyaWRlcy5maW5kKChsb2NhbFJlc291cmNlT3ZlcnJpZGUpID0+IGxvY2FsUmVzb3VyY2VPdmVy
cmlkZS5vYmplY3RJZGVudGlmaWVyID09PSBkYXRhLm9iamVjdElkZW50aWZpZXIpOworICAgICAg
ICAgICAgY29uc29sZS5hc3NlcnQoZXhpc3RpbmdMb2NhbFJlc291cmNlT3ZlcnJpZGUsIGRhdGEu
b2JqZWN0SWRlbnRpZmllcik7CisgICAgICAgICAgICB0aGlzLnJlbW92ZUxvY2FsUmVzb3VyY2VP
dmVycmlkZShleGlzdGluZ0xvY2FsUmVzb3VyY2VPdmVycmlkZSk7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgfQorCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBjb25zb2xlLmFz
c2VydChmYWxzZSwgIlVuZXhwZWN0ZWQgYWN0aW9uIiwgYWN0aW9uKTsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICB9CisKKyAgICAgICAgdGhpcy5fcmVzdG9yaW5nTG9jYWxSZXNvdXJjZU92
ZXJyaWRlcyA9IGZhbHNlOworICAgIH0KKworICAgIF9oYW5kbGVCb290c3RyYXBTY3JpcHRTeW5j
aHJvbml6ZShhY3Rpb24sIGRhdGEpCisgICAgeworICAgICAgICB0aGlzLl9yZXN0b3JpbmdCb290
c3RyYXBTY3JpcHQgPSB0cnVlOworCisgICAgICAgIHN3aXRjaCAoYWN0aW9uKSB7CisgICAgICAg
IGNhc2UgV0kuRnJvbnRlbmRTeW5jaHJvbml6ZXIuQWN0aW9uLkFkZDoKKyAgICAgICAgICAgIHRo
aXMuY3JlYXRlQm9vdHN0cmFwU2NyaXB0KGRhdGEpOworICAgICAgICAgICAgYnJlYWs7CisKKyAg
ICAgICAgY2FzZSBXSS5Gcm9udGVuZFN5bmNocm9uaXplci5BY3Rpb24uVXBkYXRlOgorICAgICAg
ICAgICAgdGhpcy5fYm9vdHN0cmFwU2NyaXB0LmVkaXRhYmxlUmV2aXNpb24udXBkYXRlUmV2aXNp
b25Db250ZW50KGRhdGEpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBXSS5G
cm9udGVuZFN5bmNocm9uaXplci5BY3Rpb24uUmVtb3ZlOgorICAgICAgICAgICAgdGhpcy5kZXN0
cm95Qm9vdHN0cmFwU2NyaXB0KCk7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBkZWZh
dWx0OgorICAgICAgICAgICAgY29uc29sZS5hc3NlcnQoZmFsc2UsICJVbmV4cGVjdGVkIGFjdGlv
biIsIGFjdGlvbik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIHRo
aXMuX3Jlc3RvcmluZ0Jvb3RzdHJhcFNjcmlwdCA9IGZhbHNlOworICAgIH0KIH07CiAKIFdJLk5l
dHdvcmtNYW5hZ2VyLkV2ZW50ID0gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvTWFpbi5odG1sIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvTWFpbi5odG1sCmluZGV4IGNmY2UxOGQ4M2E5NS4uOWM3NTM1NWJjMDJhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9NYWluLmh0bWwKKysrIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTWFpbi5odG1sCkBAIC0zMTcsNiAr
MzE3LDcgQEAKICAgICA8c2NyaXB0IHNyYz0iQmFzZS9CbG9iVXRpbGl0aWVzLmpzIj48L3Njcmlw
dD4KICAgICA8c2NyaXB0IHNyYz0iQmFzZS9ET01VdGlsaXRpZXMuanMiPjwvc2NyaXB0PgogICAg
IDxzY3JpcHQgc3JjPSJCYXNlL0ZpbGVVdGlsaXRpZXMuanMiPjwvc2NyaXB0PgorICAgIDxzY3Jp
cHQgc3JjPSJCYXNlL0Zyb250ZW5kU3luY2hyb25pemVyLmpzIj48L3NjcmlwdD4KICAgICA8c2Ny
aXB0IHNyYz0iQmFzZS9IVFRQVXRpbGl0aWVzLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNy
Yz0iQmFzZS9JbWFnZVV0aWxpdGllcy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IkJh
c2UvTG9hZExvY2FsaXplZFN0cmluZ3MuanMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0JyZWFrcG9pbnQuanMgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvQnJlYWtwb2ludC5qcwppbmRl
eCBiNjMxMTRiOTQyNjEuLjM4M2NiYmI1YzVjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0JyZWFrcG9pbnQuanMKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0JyZWFrcG9pbnQuanMKQEAgLTUxLDYg
KzUxLDIwIEBAIFdJLkJyZWFrcG9pbnQgPSBjbGFzcyBCcmVha3BvaW50IGV4dGVuZHMgV0kuT2Jq
ZWN0CiAKICAgICAvLyBJbXBvcnQgLyBFeHBvcnQKIAorICAgIHVwZGF0ZUZyb21KU09OKGpzb24p
CisgICAgeworICAgICAgICBpZiAoImRpc2FibGVkIiBpbiBqc29uKQorICAgICAgICAgICAgdGhp
cy5kaXNhYmxlZCA9IGpzb24uZGlzYWJsZWQ7CisgICAgICAgIGlmICgiY29uZGl0aW9uIiBpbiBq
c29uKQorICAgICAgICAgICAgdGhpcy5jb25kaXRpb24gPSBqc29uLmNvbmRpdGlvbjsKKyAgICAg
ICAgaWYgKCJhY3Rpb25zIiBpbiBqc29uKSB7CisgICAgICAgICAgICB0aGlzLl9hY3Rpb25zID0g
anNvbi5hY3Rpb25zLm1hcCgoYWN0aW9uSlNPTikgPT4gV0kuQnJlYWtwb2ludEFjdGlvbi5mcm9t
SlNPTihhY3Rpb25KU09OKSk7CisgICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3Rl
bmVycyhXSS5CcmVha3BvaW50LkV2ZW50LkFjdGlvbnNEaWRDaGFuZ2UpOworICAgICAgICB9Cisg
ICAgICAgIGlmICgiYXV0b0NvbnRpbnVlIiBpbiBqc29uKQorICAgICAgICAgICAgdGhpcy5hdXRv
Q29udGludWUgPSBqc29uLmF1dG9Db250aW51ZTsKKyAgICB9CisKICAgICB0b0pTT04oa2V5KQog
ICAgIHsKICAgICAgICAgbGV0IGpzb24gPSB7fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9ET01CcmVha3BvaW50LmpzIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0RPTUJyZWFrcG9pbnQuanMKaW5kZXgg
NmVlYjMyMDhlMmQ2Li5iYmE3MTY4ZDdkZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9ET01CcmVha3BvaW50LmpzCisrKyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9ET01CcmVha3BvaW50LmpzCkBAIC02
Nyw2ICs2Nyw4IEBAIFdJLkRPTUJyZWFrcG9pbnQgPSBjbGFzcyBET01CcmVha3BvaW50IGV4dGVu
ZHMgV0kuQnJlYWtwb2ludAogICAgICAgICByZXR1cm4gV0kuVUlTdHJpbmcoIkRPTSIpOwogICAg
IH0KIAorICAgIC8vIEltcG9ydCAvIEV4cG9ydAorCiAgICAgc3RhdGljIGZyb21KU09OKGpzb24p
CiAgICAgewogICAgICAgICByZXR1cm4gbmV3IFdJLkRPTUJyZWFrcG9pbnQoanNvbiwganNvbi50
eXBlLCB7CkBAIC03OCw2ICs4MCwxMSBAQCBXSS5ET01CcmVha3BvaW50ID0gY2xhc3MgRE9NQnJl
YWtwb2ludCBleHRlbmRzIFdJLkJyZWFrcG9pbnQKICAgICAgICAgfSk7CiAgICAgfQogCisgICAg
Z2V0IG9iamVjdElkZW50aWZpZXIoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3VybCAr
ICI6IiArIHRoaXMuX3BhdGggKyAiOiIgKyB0aGlzLl90eXBlOworICAgIH0KKwogICAgIC8vIFB1
YmxpYwogCiAgICAgZ2V0IHR5cGUoKSB7IHJldHVybiB0aGlzLl90eXBlOyB9CkBAIC0xMzMsNyAr
MTQwLDcgQEAgV0kuRE9NQnJlYWtwb2ludCA9IGNsYXNzIERPTUJyZWFrcG9pbnQgZXh0ZW5kcyBX
SS5CcmVha3BvaW50CiAgICAgICAgIGpzb24ucGF0aCA9IHRoaXMuX3BhdGg7CiAgICAgICAgIGpz
b24udHlwZSA9IHRoaXMuX3R5cGU7CiAgICAgICAgIGlmIChrZXkgPT09IFdJLk9iamVjdFN0b3Jl
LnRvSlNPTlN5bWJvbCkKLSAgICAgICAgICAgIGpzb25bV0kub2JqZWN0U3RvcmVzLmRvbUJyZWFr
cG9pbnRzLmtleVBhdGhdID0gdGhpcy5fdXJsICsgIjoiICsgdGhpcy5fcGF0aCArICI6IiArIHRo
aXMuX3R5cGU7CisgICAgICAgICAgICBqc29uW1dJLm9iamVjdFN0b3Jlcy5kb21CcmVha3BvaW50
cy5rZXlQYXRoXSA9IHRoaXMub2JqZWN0SWRlbnRpZmllcjsKICAgICAgICAgcmV0dXJuIGpzb247
CiAgICAgfQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL01vZGVscy9FdmVudEJyZWFrcG9pbnQuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9Nb2RlbHMvRXZlbnRCcmVha3BvaW50LmpzCmluZGV4IDBhZDg4ZjRlZmI0OC4u
OTUwMjE1MzFhZGFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9Nb2RlbHMvRXZlbnRCcmVha3BvaW50LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL01vZGVscy9FdmVudEJyZWFrcG9pbnQuanMKQEAgLTU5LDYgKzU5LDgg
QEAgV0kuRXZlbnRCcmVha3BvaW50ID0gY2xhc3MgRXZlbnRCcmVha3BvaW50IGV4dGVuZHMgV0ku
QnJlYWtwb2ludAogICAgICAgICByZXR1cm4gSW5zcGVjdG9yQmFja2VuZC5oYXNDb21tYW5kKCJE
T01EZWJ1Z2dlci5zZXRFdmVudEJyZWFrcG9pbnQiLCAib3B0aW9ucyIpOwogICAgIH0KIAorICAg
IC8vIEltcG9ydCAvIEV4cG9ydAorCiAgICAgc3RhdGljIGZyb21KU09OKGpzb24pCiAgICAgewog
ICAgICAgICByZXR1cm4gbmV3IFdJLkV2ZW50QnJlYWtwb2ludChqc29uLnR5cGUsIHsKQEAgLTcx
LDYgKzczLDExIEBAIFdJLkV2ZW50QnJlYWtwb2ludCA9IGNsYXNzIEV2ZW50QnJlYWtwb2ludCBl
eHRlbmRzIFdJLkJyZWFrcG9pbnQKICAgICAgICAgfSk7CiAgICAgfQogCisgICAgZ2V0IG9iamVj
dElkZW50aWZpZXIoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3R5cGUgKyAodGhpcy5f
ZXZlbnROYW1lID8gIjoiICsgdGhpcy5fZXZlbnROYW1lIDogIiIpOworICAgIH0KKwogICAgIC8v
IFB1YmxpYwogCiAgICAgZ2V0IHR5cGUoKSB7IHJldHVybiB0aGlzLl90eXBlOyB9CkBAIC0xNDUs
NyArMTUyLDcgQEAgV0kuRXZlbnRCcmVha3BvaW50ID0gY2xhc3MgRXZlbnRCcmVha3BvaW50IGV4
dGVuZHMgV0kuQnJlYWtwb2ludAogICAgICAgICBpZiAodGhpcy5fZXZlbnROYW1lKQogICAgICAg
ICAgICAganNvbi5ldmVudE5hbWUgPSB0aGlzLl9ldmVudE5hbWU7CiAgICAgICAgIGlmIChrZXkg
PT09IFdJLk9iamVjdFN0b3JlLnRvSlNPTlN5bWJvbCkKLSAgICAgICAgICAgIGpzb25bV0kub2Jq
ZWN0U3RvcmVzLmV2ZW50QnJlYWtwb2ludHMua2V5UGF0aF0gPSB0aGlzLl90eXBlICsgKHRoaXMu
X2V2ZW50TmFtZSA/ICI6IiArIHRoaXMuX2V2ZW50TmFtZSA6ICIiKTsKKyAgICAgICAgICAgIGpz
b25bV0kub2JqZWN0U3RvcmVzLmV2ZW50QnJlYWtwb2ludHMua2V5UGF0aF0gPSB0aGlzLm9iamVj
dElkZW50aWZpZXI7CiAgICAgICAgIHJldHVybiBqc29uOwogICAgIH0KIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvSmF2YVNjcmlwdEJy
ZWFrcG9pbnQuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMv
SmF2YVNjcmlwdEJyZWFrcG9pbnQuanMKaW5kZXggM2VmOGZmZThjOWRiLi5iYTBjMDJiNWI5NWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9K
YXZhU2NyaXB0QnJlYWtwb2ludC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9Nb2RlbHMvSmF2YVNjcmlwdEJyZWFrcG9pbnQuanMKQEAgLTgzLDYgKzgzLDE1IEBA
IFdJLkphdmFTY3JpcHRCcmVha3BvaW50ID0gY2xhc3MgSmF2YVNjcmlwdEJyZWFrcG9pbnQgZXh0
ZW5kcyBXSS5CcmVha3BvaW50CiAgICAgICAgIH0pOwogICAgIH0KIAorICAgIHVwZGF0ZUZyb21K
U09OKGpzb24pCisgICAgeworICAgICAgICBzdXBlci51cGRhdGVGcm9tSlNPTihqc29uKTsKKwor
ICAgICAgICBsZXQgbGluZU51bWJlciA9IGpzb24ubGluZU51bWJlciA/PyB0aGlzLl9zb3VyY2VD
b2RlTG9jYXRpb24ubGluZU51bWJlcjsKKyAgICAgICAgbGV0IGNvbHVtbk51bWJlciA9IGpzb24u
Y29sdW1uTnVtYmVyID8/IHRoaXMuX3NvdXJjZUNvZGVMb2NhdGlvbi5jb2x1bW5OdW1iZXI7Cisg
ICAgICAgIHRoaXMuX3NvdXJjZUNvZGVMb2NhdGlvbi51cGRhdGUodGhpcy5fc291cmNlQ29kZUxv
Y2F0aW9uLnNvdXJjZUNvZGUsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcik7CisgICAgfQorCiAg
ICAgdG9KU09OKGtleSkKICAgICB7CiAgICAgICAgIC8vIFRoZSBpZCwgc2NyaXB0SWRlbnRpZmll
ciwgdGFyZ2V0LCBhbmQgcmVzb2x2ZWQgc3RhdGUgYXJlIHRpZWQgdG8gdGhlIGN1cnJlbnQgc2Vz
c2lvbiwgc28gZG9uJ3QgaW5jbHVkZSB0aGVtIGZvciBzZXJpYWxpemF0aW9uLgpAQCAtOTQsMTAg
KzEwMywxNSBAQCBXSS5KYXZhU2NyaXB0QnJlYWtwb2ludCA9IGNsYXNzIEphdmFTY3JpcHRCcmVh
a3BvaW50IGV4dGVuZHMgV0kuQnJlYWtwb2ludAogICAgICAgICBpZiAoaXNGaW5pdGUodGhpcy5f
c291cmNlQ29kZUxvY2F0aW9uLmNvbHVtbk51bWJlcikpCiAgICAgICAgICAgICBqc29uLmNvbHVt
bk51bWJlciA9IHRoaXMuX3NvdXJjZUNvZGVMb2NhdGlvbi5jb2x1bW5OdW1iZXI7CiAgICAgICAg
IGlmIChrZXkgPT09IFdJLk9iamVjdFN0b3JlLnRvSlNPTlN5bWJvbCkKLSAgICAgICAgICAgIGpz
b25bV0kub2JqZWN0U3RvcmVzLmJyZWFrcG9pbnRzLmtleVBhdGhdID0gdGhpcy5fY29udGVudElk
ZW50aWZpZXIgKyAiOiIgKyB0aGlzLl9zb3VyY2VDb2RlTG9jYXRpb24ubGluZU51bWJlciArICI6
IiArIHRoaXMuX3NvdXJjZUNvZGVMb2NhdGlvbi5jb2x1bW5OdW1iZXI7CisgICAgICAgICAgICBq
c29uW1dJLm9iamVjdFN0b3Jlcy5icmVha3BvaW50cy5rZXlQYXRoXSA9IHRoaXMub2JqZWN0SWRl
bnRpZmllcjsKICAgICAgICAgcmV0dXJuIGpzb247CiAgICAgfQogCisgICAgZ2V0IG9iamVjdElk
ZW50aWZpZXIoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2NvbnRlbnRJZGVudGlmaWVy
ICsgIjoiICsgdGhpcy5fc291cmNlQ29kZUxvY2F0aW9uLmxpbmVOdW1iZXIgKyAiOiIgKyB0aGlz
Ll9zb3VyY2VDb2RlTG9jYXRpb24uY29sdW1uTnVtYmVyOworICAgIH0KKwogICAgIC8vIFB1Ymxp
YwogCiAgICAgZ2V0IHNvdXJjZUNvZGVMb2NhdGlvbigpIHsgcmV0dXJuIHRoaXMuX3NvdXJjZUNv
ZGVMb2NhdGlvbjsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvTW9kZWxzL0xvY2FsUmVzb3VyY2VPdmVycmlkZS5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9Mb2NhbFJlc291cmNlT3ZlcnJpZGUuanMKaW5kZXgg
YmFkNzIwZTVhMDA5Li5lYmQxYjA4OTJmMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9Mb2NhbFJlc291cmNlT3ZlcnJpZGUuanMKKysrIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0xvY2FsUmVzb3VyY2VP
dmVycmlkZS5qcwpAQCAtMTAxLDYgKzEwMSwxNCBAQCBXSS5Mb2NhbFJlc291cmNlT3ZlcnJpZGUg
PSBjbGFzcyBMb2NhbFJlc291cmNlT3ZlcnJpZGUgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAg
cmV0dXJuIG5ldyBXSS5Mb2NhbFJlc291cmNlT3ZlcnJpZGUodXJsLCB0eXBlLCBsb2NhbFJlc291
cmNlLCB7aXNDYXNlU2Vuc2l0aXZlLCBpc1JlZ2V4LCBkaXNhYmxlZH0pOwogICAgIH0KIAorICAg
IHVwZGF0ZUZyb21KU09OKGpzb24pCisgICAgeworICAgICAgICBpZiAoImRpc2FibGVkIiBpbiBq
c29uKQorICAgICAgICAgICAgdGhpcy5kaXNhYmxlZCA9IGpzb24uZGlzYWJsZWQ7CisKKyAgICAg
ICAgLy8gRklYTUU6IDxodHRwczovL3dlYmtpdC5vcmcvYi8yMzI2OTc+IChXZWIgSW5zcGVjdG9y
OiB1cGRhdGUgbG9jYWwgb3ZlcnJpZGVzIGFmdGVyIGVkaXRpbmcgaW5zdGVhZCBvZiByZXBsYWNp
bmcgdGhlbSkKKyAgICB9CisKICAgICB0b0pTT04oa2V5KQogICAgIHsKICAgICAgICAgbGV0IGpz
b24gPSB7CkBAIC0xMTMsMTEgKzEyMSwxNiBAQCBXSS5Mb2NhbFJlc291cmNlT3ZlcnJpZGUgPSBj
bGFzcyBMb2NhbFJlc291cmNlT3ZlcnJpZGUgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgfTsK
IAogICAgICAgICBpZiAoa2V5ID09PSBXSS5PYmplY3RTdG9yZS50b0pTT05TeW1ib2wpCi0gICAg
ICAgICAgICBqc29uW1dJLm9iamVjdFN0b3Jlcy5sb2NhbFJlc291cmNlT3ZlcnJpZGVzLmtleVBh
dGhdID0gdGhpcy5fdXJsOworICAgICAgICAgICAganNvbltXSS5vYmplY3RTdG9yZXMubG9jYWxS
ZXNvdXJjZU92ZXJyaWRlcy5rZXlQYXRoXSA9IHRoaXMub2JqZWN0SWRlbnRpZmllcjsKIAogICAg
ICAgICByZXR1cm4ganNvbjsKICAgICB9CiAKKyAgICBnZXQgb2JqZWN0SWRlbnRpZmllcigpCisg
ICAgeworICAgICAgICByZXR1cm4gdGhpcy5fdXJsOworICAgIH0KKwogICAgIC8vIFB1YmxpYwog
CiAgICAgZ2V0IHVybCgpIHsgcmV0dXJuIHRoaXMuX3VybDsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1VSTEJyZWFrcG9pbnQuanMgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvVVJMQnJlYWtwb2ludC5q
cwppbmRleCBmNDE0OWRkMWFlOTEuLmFiMjIwZGUxNTdiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1VSTEJyZWFrcG9pbnQuanMKKysrIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1VSTEJyZWFrcG9pbnQu
anMKQEAgLTQ0LDYgKzQ0LDggQEAgV0kuVVJMQnJlYWtwb2ludCA9IGNsYXNzIFVSTEJyZWFrcG9p
bnQgZXh0ZW5kcyBXSS5CcmVha3BvaW50CiAgICAgICAgIHJldHVybiBJbnNwZWN0b3JCYWNrZW5k
Lmhhc0NvbW1hbmQoIkRPTURlYnVnZ2VyLnNldFVSTEJyZWFrcG9pbnQiLCAib3B0aW9ucyIpOwog
ICAgIH0KIAorICAgIC8vIEltcG9ydCAvIEV4cG9ydAorCiAgICAgc3RhdGljIGZyb21KU09OKGpz
b24pCiAgICAgewogICAgICAgICByZXR1cm4gbmV3IFdJLlVSTEJyZWFrcG9pbnQoanNvbi50eXBl
LCBqc29uLnVybCwgewpAQCAtNTUsNiArNTcsMTEgQEAgV0kuVVJMQnJlYWtwb2ludCA9IGNsYXNz
IFVSTEJyZWFrcG9pbnQgZXh0ZW5kcyBXSS5CcmVha3BvaW50CiAgICAgICAgIH0pOwogICAgIH0K
IAorICAgIGdldCBvYmplY3RJZGVudGlmaWVyKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlz
Ll90eXBlICsgIjoiICsgdGhpcy5fdXJsOworICAgIH0KKwogICAgIC8vIFB1YmxpYwogCiAgICAg
Z2V0IHR5cGUoKSB7IHJldHVybiB0aGlzLl90eXBlOyB9CkBAIC0xMDYsNyArMTEzLDcgQEAgV0ku
VVJMQnJlYWtwb2ludCA9IGNsYXNzIFVSTEJyZWFrcG9pbnQgZXh0ZW5kcyBXSS5CcmVha3BvaW50
CiAgICAgICAgIGpzb24udHlwZSA9IHRoaXMuX3R5cGU7CiAgICAgICAgIGpzb24udXJsID0gdGhp
cy5fdXJsOwogICAgICAgICBpZiAoa2V5ID09PSBXSS5PYmplY3RTdG9yZS50b0pTT05TeW1ib2wp
Ci0gICAgICAgICAgICBqc29uW1dJLm9iamVjdFN0b3Jlcy51cmxCcmVha3BvaW50cy5rZXlQYXRo
XSA9IHRoaXMuX3R5cGUgKyAiOiIgKyB0aGlzLl91cmw7CisgICAgICAgICAgICBqc29uW1dJLm9i
amVjdFN0b3Jlcy51cmxCcmVha3BvaW50cy5rZXlQYXRoXSA9IHRoaXMub2JqZWN0SWRlbnRpZmll
cjsKICAgICAgICAgcmV0dXJuIGpzb247CiAgICAgfQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0luc3BlY3RvckZyb250ZW5kQVBJ
LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvSW5zcGVj
dG9yRnJvbnRlbmRBUEkuanMKaW5kZXggYTQ2ZTM5YzJhZjU4Li5lYTg1MzIyZjEzM2EgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0luc3Bl
Y3RvckZyb250ZW5kQVBJLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1Byb3RvY29sL0luc3BlY3RvckZyb250ZW5kQVBJLmpzCkBAIC0yNyw2ICsyNywxMSBAQCBJ
bnNwZWN0b3JGcm9udGVuZEFQSSA9IHsKICAgICBfbG9hZGVkOiBmYWxzZSwKICAgICBfcGVuZGlu
Z0NvbW1hbmRzOiBbXSwKIAorICAgIHdpbGxDbG9zZSgpCisgICAgeworICAgICAgICBXSS5Gcm9u
dGVuZFN5bmNocm9uaXplci5jbG9zZSgpOworICAgIH0sCisKICAgICBzYXZlZFVSTDogZnVuY3Rp
b24odXJsKQogICAgIHsKICAgICAgICAgLy8gTm90IHVzZWQgeWV0LgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVGVzdC5odG1sIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVGVzdC5odG1sCmluZGV4IDMxNjIxZmY1NzVhMS4uYzk0
OGY4M2NmODhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9UZXN0Lmh0bWwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVGVz
dC5odG1sCkBAIC01Nyw2ICs1Nyw3IEBACiAgICAgPHNjcmlwdCBzcmM9IkJhc2UvQmxvYlV0aWxp
dGllcy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IkJhc2UvRE9NVXRpbGl0aWVzLmpz
Ij48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iQmFzZS9GaWxlVXRpbGl0aWVzLmpzIj48L3Nj
cmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iQmFzZS9Gcm9udGVuZFN5bmNocm9uaXplci5qcyI+PC9z
Y3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IkJhc2UvSFRUUFV0aWxpdGllcy5qcyI+PC9zY3JpcHQ+
CiAgICAgPHNjcmlwdCBzcmM9IkJhc2UvSW1hZ2VVdGlsaXRpZXMuanMiPjwvc2NyaXB0PgogICAg
IDxzY3JpcHQgc3JjPSJCYXNlL01JTUVUeXBlVXRpbGl0aWVzLmpzIj48L3NjcmlwdD4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0xvY2FsUmVz
b3VyY2VPdmVycmlkZVRyZWVFbGVtZW50LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvTG9jYWxSZXNvdXJjZU92ZXJyaWRlVHJlZUVsZW1lbnQuanMKaW5kZXgg
ZDg0ZDRjZjVhYmQ2Li4zNGMyNTA2N2ExNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0xvY2FsUmVzb3VyY2VPdmVycmlkZVRyZWVFbGVtZW50
LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0xvY2Fs
UmVzb3VyY2VPdmVycmlkZVRyZWVFbGVtZW50LmpzCkBAIC0xMzMsNiArMTMzLDcgQEAgV0kuTG9j
YWxSZXNvdXJjZU92ZXJyaWRlVHJlZUVsZW1lbnQgPSBjbGFzcyBMb2NhbFJlc291cmNlT3ZlcnJp
ZGVUcmVlRWxlbWVudCBleHQKICAgICAgICAgICAgIHNlcmlhbGl6ZWREYXRhLnJlc3BvbnNlQmFz
ZTY0RW5jb2RlZCA9IHJldmlzaW9uLmJhc2U2NEVuY29kZWQ7CiAgICAgICAgIH0KIAorICAgICAg
ICAvLyBGSVhNRTogPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzIzMjY5Nz4gKFdlYiBJbnNwZWN0b3I6
IHVwZGF0ZSBsb2NhbCBvdmVycmlkZXMgYWZ0ZXIgZWRpdGluZyBpbnN0ZWFkIG9mIHJlcGxhY2lu
ZyB0aGVtKQogICAgICAgICBsZXQgbmV3TG9jYWxSZXNvdXJjZU92ZXJyaWRlID0gV0kuTG9jYWxS
ZXNvdXJjZU92ZXJyaWRlLmNyZWF0ZShzZXJpYWxpemVkRGF0YS51cmwsIHNlcmlhbGl6ZWREYXRh
LnR5cGUsIHNlcmlhbGl6ZWREYXRhKTsKICAgICAgICAgV0kubmV0d29ya01hbmFnZXIucmVtb3Zl
TG9jYWxSZXNvdXJjZU92ZXJyaWRlKHRoaXMuX2xvY2FsUmVzb3VyY2VPdmVycmlkZSk7CiAgICAg
ICAgIFdJLm5ldHdvcmtNYW5hZ2VyLmFkZExvY2FsUmVzb3VyY2VPdmVycmlkZShuZXdMb2NhbFJl
c291cmNlT3ZlcnJpZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5z
cGVjdG9yL1JlbW90ZVdlYkluc3BlY3RvclVJUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvSW5zcGVjdG9yL1JlbW90ZVdlYkluc3BlY3RvclVJUHJveHkuY3BwCmluZGV4IDZiZjQ3
YmYyNWU3MS4uY2UwMDAxNmZkN2MxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9JbnNwZWN0b3IvUmVtb3RlV2ViSW5zcGVjdG9yVUlQcm94eS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1JlbW90ZVdlYkluc3BlY3RvclVJUHJveHkuY3BwCkBA
IC0yMDYsNiArMjA2LDcgQEAgdm9pZCBSZW1vdGVXZWJJbnNwZWN0b3JVSVByb3h5OjpjbG9zZUZy
b250ZW5kUGFnZUFuZFdpbmRvdygpCiAgICAgaWYgKCFtX2luc3BlY3RvclBhZ2UpCiAgICAgICAg
IHJldHVybjsKIAorICAgIG1faW5zcGVjdG9yUGFnZS0+c2VuZChNZXNzYWdlczo6UmVtb3RlV2Vi
SW5zcGVjdG9yVUk6OldpbGxDbG9zZSgpKTsKICAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3Mo
KS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZVdlYkluc3BlY3RvclVJUHJv
eHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9pbnNwZWN0b3JQYWdlLT53ZWJQYWdlSUQoKSk7
CiAKICAgICB1bnRyYWNrSW5zcGVjdG9yUGFnZShtX2luc3BlY3RvclBhZ2UpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJUHJveHku
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJUHJv
eHkuY3BwCmluZGV4IDU3MmQyMzVjNmQxZi4uMjA3ZTBhYmQwODI5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlQcm94eS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJUHJveHku
Y3BwCkBAIC01MzksNiArNTM5LDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JVSVByb3h5OjpjbG9zZUZy
b250ZW5kUGFnZUFuZFdpbmRvdygpCiAgICAgdW50cmFja0luc3BlY3RvclBhZ2UobV9pbnNwZWN0
b3JQYWdlKTsKIAogICAgIG1faW5zcGVjdG9yUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVj
dG9yVUk6OlNldElzVmlzaWJsZShtX2lzVmlzaWJsZSkpOworICAgIG1faW5zcGVjdG9yUGFnZS0+
c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6OldpbGxDbG9zZSgpKTsKICAgICBtX2luc3Bl
Y3RvclBhZ2UtPnByb2Nlc3MoKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYklu
c3BlY3RvclVJUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9pbnNwZWN0ZWRQYWdlLT5p
ZGVudGlmaWVyKCkpOwogCiAgICAgaWYgKG1faXNBY3RpdmVGcm9udGVuZCkgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9SZW1vdGVXZWJJbnNwZWN0b3JV
SS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1JlbW90ZVdlYkluc3Bl
Y3RvclVJLmNwcAppbmRleCBjOGFkMzE4Njk1ZDkuLjExNWFmNGNiYzQyOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9SZW1vdGVXZWJJbnNwZWN0b3JVSS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9SZW1vdGVXZWJJbnNw
ZWN0b3JVSS5jcHAKQEAgLTc5LDYgKzc5LDExIEBAIHZvaWQgUmVtb3RlV2ViSW5zcGVjdG9yVUk6
OmluaXRpYWxpemUoRGVidWdnYWJsZUluZm9EYXRhJiYgZGVidWdnYWJsZUluZm8sIGNvbnN0CiAg
ICAgbV9mcm9udGVuZEFQSURpc3BhdGNoZXItPmRpc3BhdGNoQ29tbWFuZFdpdGhSZXN1bHRBc3lu
Yygic2V0RG9ja2luZ1VuYXZhaWxhYmxlIl9zLCB7IEpTT046OlZhbHVlOjpjcmVhdGUodHJ1ZSkg
fSk7CiB9CiAKK3ZvaWQgUmVtb3RlV2ViSW5zcGVjdG9yVUk6OndpbGxDbG9zZSgpCit7CisgICAg
bV9mcm9udGVuZEFQSURpc3BhdGNoZXItPmRpc3BhdGNoQ29tbWFuZFdpdGhSZXN1bHRBc3luYygi
d2lsbENsb3NlIl9zKTsKK30KKwogdm9pZCBSZW1vdGVXZWJJbnNwZWN0b3JVSTo6dXBkYXRlRmlu
ZFN0cmluZyhjb25zdCBTdHJpbmcmIGZpbmRTdHJpbmcpCiB7CiAgICAgbV9mcm9udGVuZEFQSURp
c3BhdGNoZXItPmRpc3BhdGNoQ29tbWFuZFdpdGhSZXN1bHRBc3luYygidXBkYXRlRmluZFN0cmlu
ZyJfcywgeyBKU09OOjpWYWx1ZTo6Y3JlYXRlKGZpbmRTdHJpbmcpIH0pOwpAQCAtMTg0LDYgKzE4
OSw4IEBAIHZvaWQgUmVtb3RlV2ViSW5zcGVjdG9yVUk6OmJyaW5nVG9Gcm9udCgpCiAKIHZvaWQg
UmVtb3RlV2ViSW5zcGVjdG9yVUk6OmNsb3NlV2luZG93KCkKIHsKKyAgICBtX2Zyb250ZW5kQVBJ
RGlzcGF0Y2hlci0+ZGlzcGF0Y2hDb21tYW5kV2l0aFJlc3VsdEFzeW5jKCJ3aWxsQ2xvc2UiX3Mp
OworCiAgICAgbV9wYWdlLmNvcmVQYWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIoKS5zZXRJbnNw
ZWN0b3JGcm9udGVuZENsaWVudChudWxscHRyKTsKIAogI2lmIEVOQUJMRShJTlNQRUNUT1JfRVhU
RU5TSU9OUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3Iv
UmVtb3RlV2ViSW5zcGVjdG9yVUkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0
b3IvUmVtb3RlV2ViSW5zcGVjdG9yVUkuaAppbmRleCAzNmM3MDExM2NmNGIuLmNkMjdjNmZkZWEx
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9SZW1vdGVX
ZWJJbnNwZWN0b3JVSS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3Iv
UmVtb3RlV2ViSW5zcGVjdG9yVUkuaApAQCAtNjEsNiArNjEsNyBAQCBwdWJsaWM6CiAKICAgICAv
LyBDYWxsZWQgYnkgUmVtb3RlV2ViSW5zcGVjdG9yVUkgbWVzc2FnZXMKICAgICB2b2lkIGluaXRp
YWxpemUoRGVidWdnYWJsZUluZm9EYXRhJiYsIGNvbnN0IFN0cmluZyYgYmFja2VuZENvbW1hbmRz
VVJMKTsKKyAgICB2b2lkIHdpbGxDbG9zZSgpOwogICAgIHZvaWQgdXBkYXRlRmluZFN0cmluZyhj
b25zdCBTdHJpbmcmKTsKICAgICB2b2lkIGRpZFNhdmUoY29uc3QgU3RyaW5nJiB1cmwpOwogICAg
IHZvaWQgZGlkQXBwZW5kKGNvbnN0IFN0cmluZyYgdXJsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvUmVtb3RlV2ViSW5zcGVjdG9yVUkubWVzc2FnZXMu
aW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1JlbW90ZVdlYkluc3BlY3Rv
clVJLm1lc3NhZ2VzLmluCmluZGV4IDk1NWI2OGVkNDMwMS4uMzRjN2RmOWQyM2E3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1JlbW90ZVdlYkluc3BlY3Rv
clVJLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3Iv
UmVtb3RlV2ViSW5zcGVjdG9yVUkubWVzc2FnZXMuaW4KQEAgLTIyLDYgKzIyLDcgQEAKIAogbWVz
c2FnZXMgLT4gUmVtb3RlV2ViSW5zcGVjdG9yVUkgewogICAgIEluaXRpYWxpemUoc3RydWN0IFdl
YktpdDo6RGVidWdnYWJsZUluZm9EYXRhIGRlYnVnZ2FibGVJbmZvLCBTdHJpbmcgYmFja2VuZENv
bW1hbmRzVVJMKQorICAgIFdpbGxDbG9zZSgpCiAKICAgICBVcGRhdGVGaW5kU3RyaW5nKFN0cmlu
ZyBmaW5kU3RyaW5nKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5z
cGVjdG9yL1dlYkluc3BlY3RvclVJLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNw
ZWN0b3IvV2ViSW5zcGVjdG9yVUkuY3BwCmluZGV4IGZhN2NjZDk0OTc5Ni4uODU2MzYzNmU0YzEx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3Bl
Y3RvclVJLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYklu
c3BlY3RvclVJLmNwcApAQCAtMTMyLDYgKzEzMiwxMSBAQCB2b2lkIFdlYkluc3BlY3RvclVJOjp1
cGRhdGVDb25uZWN0aW9uKCkKICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9j
ZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSVByb3h5OjpTZXRG
cm9udGVuZENvbm5lY3Rpb24oY29ubmVjdGlvbkNsaWVudFBvcnQpLCBtX2luc3BlY3RlZFBhZ2VJ
ZGVudGlmaWVyKTsKIH0KIAordm9pZCBXZWJJbnNwZWN0b3JVSTo6d2lsbENsb3NlKCkKK3sKKyAg
ICBtX2Zyb250ZW5kQVBJRGlzcGF0Y2hlci0+ZGlzcGF0Y2hDb21tYW5kV2l0aFJlc3VsdEFzeW5j
KCJ3aWxsQ2xvc2UiX3MpOworfQorCiB2b2lkIFdlYkluc3BlY3RvclVJOjp3aW5kb3dPYmplY3RD
bGVhcmVkKCkKIHsKICAgICBpZiAobV9mcm9udGVuZEhvc3QpCkBAIC0xNzUsNiArMTgwLDggQEAg
dm9pZCBXZWJJbnNwZWN0b3JVSTo6YnJpbmdUb0Zyb250KCkKIAogdm9pZCBXZWJJbnNwZWN0b3JV
STo6Y2xvc2VXaW5kb3coKQogeworICAgIG1fZnJvbnRlbmRBUElEaXNwYXRjaGVyLT5kaXNwYXRj
aENvbW1hbmRXaXRoUmVzdWx0QXN5bmMoIndpbGxDbG9zZSJfcyk7CisKICAgICBXZWJQcm9jZXNz
OjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJJbnNwZWN0b3JVSVByb3h5OjpEaWRDbG9zZSgpLCBtX2luc3BlY3RlZFBhZ2VJZGVudGlmaWVy
KTsKIAogICAgIGlmIChtX2JhY2tlbmRDb25uZWN0aW9uKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJLmggYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJLmgKaW5kZXggZjZlZDcwNGNm
YWRjLi44NTBmODVhZTZkMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9J
bnNwZWN0b3IvV2ViSW5zcGVjdG9yVUkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
SW5zcGVjdG9yL1dlYkluc3BlY3RvclVJLmgKQEAgLTcwLDYgKzcwLDcgQEAgcHVibGljOgogICAg
IC8vIENhbGxlZCBieSBXZWJJbnNwZWN0b3JVSSBtZXNzYWdlcwogICAgIHZvaWQgZXN0YWJsaXNo
Q29ubmVjdGlvbihXZWJQYWdlUHJveHlJZGVudGlmaWVyIGluc3BlY3RlZFBhZ2VJZGVudGlmaWVy
LCBjb25zdCBEZWJ1Z2dhYmxlSW5mb0RhdGEmLCBib29sIHVuZGVyVGVzdCwgdW5zaWduZWQgaW5z
cGVjdGlvbkxldmVsKTsKICAgICB2b2lkIHVwZGF0ZUNvbm5lY3Rpb24oKTsKKyAgICB2b2lkIHdp
bGxDbG9zZSgpOwogCiAgICAgdm9pZCBzaG93Q29uc29sZSgpOwogICAgIHZvaWQgc2hvd1Jlc291
cmNlcygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9X
ZWJJbnNwZWN0b3JVSS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNw
ZWN0b3IvV2ViSW5zcGVjdG9yVUkubWVzc2FnZXMuaW4KaW5kZXggNDM1OWRkYjkwODk0Li43MDcx
Y2Y2M2Q5OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3Iv
V2ViSW5zcGVjdG9yVUkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSS5tZXNzYWdlcy5pbgpAQCAtMjMsNiArMjMsNyBAQAog
bWVzc2FnZXMgLT4gV2ViSW5zcGVjdG9yVUkgewogICAgIEVzdGFibGlzaENvbm5lY3Rpb24oV2Vi
S2l0OjpXZWJQYWdlUHJveHlJZGVudGlmaWVyIGluc3BlY3RlZFBhZ2VJZGVudGlmaWVyLCBzdHJ1
Y3QgV2ViS2l0OjpEZWJ1Z2dhYmxlSW5mb0RhdGEgZGVidWdnYWJsZUluZm8sIGJvb2wgdW5kZXJU
ZXN0LCB1bnNpZ25lZCBpbnNwZWN0aW9uTGV2ZWwpCiAgICAgVXBkYXRlQ29ubmVjdGlvbigpCisg
ICAgV2lsbENsb3NlKCkKIAogICAgIEF0dGFjaGVkQm90dG9tKCkKICAgICBBdHRhY2hlZFJpZ2h0
KCkK
</data>

          </attachment>
      

    </bug>

</bugzilla>