<?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>229120</bug_id>
          
          <creation_ts>2021-08-15 08:17:09 -0700</creation_ts>
          <short_desc>Allow a same-origin &lt;iframe&gt; to programmatically navigate its top frame to an external URL</short_desc>
          <delta_ts>2022-10-10 14:09:24 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></resolution>
          
          
          <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>
          
          <blocked>231702</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexey Shvayka">ashvayka</reporter>
          <assigned_to name="Alexey Shvayka">ashvayka</assigned_to>
          <cc>ahmad.saleem792</cc>
    
    <cc>beidson</cc>
    
    <cc>cdumez</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>hi</cc>
    
    <cc>japhet</cc>
    
    <cc>joepeck</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>pangle</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1784378</commentid>
    <comment_count>0</comment_count>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-08-15 08:17:09 -0700</bug_when>
    <thetext>Allow a same-origin &lt;iframe&gt; to programmatically navigate its top frame to an external URL</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1784379</commentid>
    <comment_count>1</comment_count>
      <attachid>435564</attachid>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-08-15 08:21:13 -0700</bug_when>
    <thetext>Created attachment 435564
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1786243</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-08-22 08:18:15 -0700</bug_when>
    <thetext>&lt;rdar://problem/82217976&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1803436</commentid>
    <comment_count>3</comment_count>
      <attachid>435564</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2021-10-12 15:00:39 -0700</bug_when>
    <thetext>Comment on attachment 435564
Patch

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

I think the general approach to allow an iframe to open an external URL, if and only if it is same origin and a top-level navigation, seems sounds, and a good way to resolve the regression. It&apos;s sound because you&apos;re right, there was never any security boundary there anyway. And, of course, we want to resolve the regression.

&gt; Source/WebCore/ChangeLog:20
&gt; +        This patch reverts r280826 and makes it legal for iframes to open external URLs

makes it legal for same-origin iframes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1806161</commentid>
    <comment_count>4</comment_count>
      <attachid>441758</attachid>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-10-19 11:04:06 -0700</bug_when>
    <thetext>Created attachment 441758
Patch

Same idea, way better implementation that enabled nice refactoring.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1806306</commentid>
    <comment_count>5</comment_count>
      <attachid>441796</attachid>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-10-19 14:11:42 -0700</bug_when>
    <thetext>Created attachment 441796
Patch

Fix iOS build, ignore http/tests/navigation-policy on non-WK2, and fix isMainFrame() called on nullptr.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1830226</commentid>
    <comment_count>6</comment_count>
      <attachid>441796</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2022-01-12 11:11:29 -0800</bug_when>
    <thetext>Comment on attachment 441796
Patch

r=me

I recommend double-checking where the ShouldOpenExternalURLsPolicy originates in the navigation request, and verifying that it enforces a main frame requirement.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1904615</commentid>
    <comment_count>7</comment_count>
    <who name="Ahmad Saleem">ahmad.saleem792</who>
    <bug_when>2022-10-10 14:09:24 -0700</bug_when>
    <thetext>Checking via BugID, it seems this r+ patch didn&apos;t landed.

Is this needed now? Thanks!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>435564</attachid>
            <date>2021-08-15 08:21:13 -0700</date>
            <delta_ts>2021-10-19 11:04:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-229120-20210815182112.patch</filename>
            <type>text/plain</type>
            <size>32163</size>
            <attacher name="Alexey Shvayka">ashvayka</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI4MTA1OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ3IEBACisyMDIxLTA4LTE1ICBBbGV4ZXkg
U2h2YXlrYSAgPHNodmFpa2FsZXNoQGdtYWlsLmNvbT4KKworICAgICAgICBBbGxvdyBhIHNhbWUt
b3JpZ2luIDxpZnJhbWU+IHRvIHByb2dyYW1tYXRpY2FsbHkgbmF2aWdhdGUgaXRzIHRvcCBmcmFt
ZSB0byBhbiBleHRlcm5hbCBVUkwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIyOTEyMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFNpbmNlIHRoZSBpbnRyb2R1Y3Rpb24gb2YgU2hvdWxkT3BlbkV4dGVybmFs
VVJMc1BvbGljeSBpbiByMTg1MTExLCBpZnJhbWVzIHdlcmUgYmFubmVkIGZyb20KKyAgICAgICAg
cHJvZ3JhbW1hdGljYWxseSAod2l0aG91dCBhIHVzZXIgZ2VzdHVyZSkgbmF2aWdhdGluZyB0aGVp
ciB0b3AgZnJhbWVzIHRvIGV4dGVybmFsIFVSTHMuCisKKyAgICAgICAgSG93ZXZlciwgb25seSBu
YXZpZ2F0aW9uIHZpYSBgbG9jYXRpb24uaHJlZmAgd2FzIGRpc2FsbG93ZWQuIExvY2F0aW9uIG1l
dGhvZHMgbGlrZSByZXBsYWNlKCkKKyAgICAgICAgZGlkIHdvcmsgYmVjYXVzZSB0aGV5IGluY29y
cmVjdGx5IGluZmVycmVkIHRoZSBpbml0aWF0aW5nIGRvY3VtZW50LCB3aGljaCB3YXMgZml4ZWQg
aW4gcjI4MDI1NgorICAgICAgICBieSBwYXNzaW5nIGBJbmN1bWJlbnRXaW5kb3dgIHRvIExvY2F0
aW9uIG1ldGhvZHMuCisKKyAgICAgICAgVGhhdCBmaXggYnJva2UgRmFjZVRpbWUgd2ViIGFwcCwg
d2hpY2ggZGVwZW5kZWQgb24gYmVoYXZpb3IgdGhhdCB3YXMgZGVlbWVkIHVuZGVzaXJhYmxlLgor
ICAgICAgICBUaGVyZSBpcyBubyByZWxpYWJsZSB3YXkgdG8gZGV0ZWN0IGlmIG5hdmlnYXRpb24g
aXMgdHJpZ2dlcmVkIGJ5IGEgdG9wIGZyYW1lIG9yIHNhbWUtb3JpZ2luCisgICAgICAgIGlmcmFt
ZTsgZXZlbiB3aXRoIGZpeGVkIExvY2F0aW9uIG1ldGhvZHMsIGZvcmNpbmcgdG9wIGZyYW1lIHRv
IG5hdmlnYXRlIHRvIGV4dGVybmFsIFVSTCBpcworICAgICAgICBhcyBzaW1wbGUgYXMgYHRvcC5l
dmFsKCJsb2NhdGlvbi5ocmVmID0gLi4uIilgLgorCisgICAgICAgIFRoaXMgcGF0Y2ggcmV2ZXJ0
cyByMjgwODI2IGFuZCBtYWtlcyBpdCBsZWdhbCBmb3IgaWZyYW1lcyB0byBvcGVuIGV4dGVybmFs
IFVSTHMKKyAgICAgICAgKGNoYW5nZXMgaW4gTmF2aWdhdGlvblNjaGVkdWxlci5jcHApLiBObyBi
ZWhhdmlvciBjaGFuZ2UgZm9yIGNyb3NzLW9yaWdpbiBpZnJhbWVzLgorICAgICAgICBBbHNvLCBy
ZXBsYWNlcyAiYWN0aXZlIiB3aXRoICJpbmN1bWJlbnQiIGluIHZhcmlhYmxlIG5hbWVzLgorCisg
ICAgICAgIFRlc3RzOiBodHRwL3Rlc3RzL25hdmlnYXRpb24tcG9saWN5L21haW4tZnJhbWUtbmF2
aWdhdGVkLXByb2dyYW1hdGljYWxseS1ieS1zdWJmcmFtZS1jcm9zcy1vcmlnaW4uaHRtbAorICAg
ICAgICAgICAgICAgbG9hZGVyL25hdmlnYXRpb24tcG9saWN5L3Nob3VsZC1vcGVuLWV4dGVybmFs
LXVybHMvbWFpbi1mcmFtZS1uYXZpZ2F0ZWQtcHJvZ3JhbWF0aWNhbGx5LWJ5LXN1YmZyYW1lLmh0
bWwKKyAgICAgICAgICAgICAgIGxvYWRlci9uYXZpZ2F0aW9uLXBvbGljeS9zaG91bGQtb3Blbi1l
eHRlcm5hbC11cmxzL21haW4tZnJhbWUtbmF2aWdhdGVkLXByb2dyYW1hdGljYWxseS1ieS1zdWJm
cmFtZS12aWEtbWV0aG9kLmh0bWwKKyAgICAgICAgICAgICAgIGxvYWRlci9uYXZpZ2F0aW9uLXBv
bGljeS9zaG91bGQtb3Blbi1leHRlcm5hbC11cmxzL21haW4tZnJhbWUtbmF2aWdhdGVkLXByb2dy
YW1hdGljYWxseS1ieS1zdWJmcmFtZS13aXRob3V0LWZsYWcuaHRtbAorCisgICAgICAgICogbG9h
ZGVyL05hdmlnYXRpb25TY2hlZHVsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NoZWR1bGVk
VVJMTmF2aWdhdGlvbjo6U2NoZWR1bGVkVVJMTmF2aWdhdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpTY2hlZHVsZWRMb2NhdGlvbkNoYW5nZTo6U2NoZWR1bGVkTG9jYXRpb25DaGFuZ2UpOgorICAg
ICAgICAoV2ViQ29yZTo6TmF2aWdhdGlvblNjaGVkdWxlcjo6c2NoZWR1bGVMb2NhdGlvbkNoYW5n
ZSk6CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9N
V2luZG93OjpzZXRMb2NhdGlvbik6CisgICAgICAgIFJlbW92ZSBGSVhNRSBhcyBjYW5OYXZpZ2F0
ZSgpIHJldHVybmluZyBgdHJ1ZWAgZ3VhcmFudGVlcyBpdHMgY29udGV4dCBoYXMgbm9uLW51bGwg
ZnJhbWUoKS4KKworICAgICAgICAqIHBhZ2UvRE9NV2luZG93Lmg6CisgICAgICAgICogcGFnZS9M
b2NhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMb2NhdGlvbjo6YXNzaWduKToKKyAgICAg
ICAgKFdlYkNvcmU6OkxvY2F0aW9uOjpyZXBsYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkxvY2F0
aW9uOjpyZWxvYWQpOgorICAgICAgICAqIHBhZ2UvTG9jYXRpb24uaDoKKyAgICAgICAgKiBwYWdl
L0xvY2F0aW9uLmlkbDoKKwogMjAyMS0wOC0xNCAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFw
cGxlLmNvbT4KIAogICAgICAgICBbR1BVIFByb2Nlc3NdIFJFR1JFU1NJT046IFdlYkNvbnRlbnQg
b2Z0ZW4gY3Jhc2hlcyB3aGVuIG9wZW5pbmcgYSBHb29nbGUgc3ByZWFkc2hlZXQgd2l0aCBjaGFy
dHMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uU2NoZWR1bGVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvblNjaGVkdWxlci5j
cHAJKHJldmlzaW9uIDI4MTAyNikKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9u
U2NoZWR1bGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE4LDggKzExOCw4IEBAIHByaXZhdGU6
CiAKIGNsYXNzIFNjaGVkdWxlZFVSTE5hdmlnYXRpb24gOiBwdWJsaWMgU2NoZWR1bGVkTmF2aWdh
dGlvbiB7CiBwcm90ZWN0ZWQ6Ci0gICAgU2NoZWR1bGVkVVJMTmF2aWdhdGlvbihEb2N1bWVudCYg
aW5pdGlhdGluZ0RvY3VtZW50LCBkb3VibGUgZGVsYXksIFNlY3VyaXR5T3JpZ2luKiBzZWN1cml0
eU9yaWdpbiwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIExvY2tIaXN0
b3J5IGxvY2tIaXN0b3J5LCBMb2NrQmFja0ZvcndhcmRMaXN0IGxvY2tCYWNrRm9yd2FyZExpc3Qs
IGJvb2wgZHVyaW5nTG9hZCwgYm9vbCBpc0xvY2F0aW9uQ2hhbmdlKQotICAgICAgICA6IFNjaGVk
dWxlZE5hdmlnYXRpb24oZGVsYXksIGxvY2tIaXN0b3J5LCBsb2NrQmFja0ZvcndhcmRMaXN0LCBk
dXJpbmdMb2FkLCBpc0xvY2F0aW9uQ2hhbmdlLCBpbml0aWF0aW5nRG9jdW1lbnQuc2hvdWxkT3Bl
bkV4dGVybmFsVVJMc1BvbGljeVRvUHJvcGFnYXRlKCkpCisgICAgU2NoZWR1bGVkVVJMTmF2aWdh
dGlvbihEb2N1bWVudCYgaW5pdGlhdGluZ0RvY3VtZW50LCBkb3VibGUgZGVsYXksIFNlY3VyaXR5
T3JpZ2luKiBzZWN1cml0eU9yaWdpbiwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcmVm
ZXJyZXIsIExvY2tIaXN0b3J5IGxvY2tIaXN0b3J5LCBMb2NrQmFja0ZvcndhcmRMaXN0IGxvY2tC
YWNrRm9yd2FyZExpc3QsIGJvb2wgZHVyaW5nTG9hZCwgYm9vbCBpc0xvY2F0aW9uQ2hhbmdlLCBz
dGQ6Om9wdGlvbmFsPFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k+IGV4dGVybmFsVVJMUG9s
aWN5ID0gc3RkOjpudWxsb3B0KQorICAgICAgICA6IFNjaGVkdWxlZE5hdmlnYXRpb24oZGVsYXks
IGxvY2tIaXN0b3J5LCBsb2NrQmFja0ZvcndhcmRMaXN0LCBkdXJpbmdMb2FkLCBpc0xvY2F0aW9u
Q2hhbmdlLCBleHRlcm5hbFVSTFBvbGljeS52YWx1ZV9vcihpbml0aWF0aW5nRG9jdW1lbnQuc2hv
dWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeVRvUHJvcGFnYXRlKCkpKQogICAgICAgICAsIG1faW5p
dGlhdGluZ0RvY3VtZW50IHsgbWFrZVJlZihpbml0aWF0aW5nRG9jdW1lbnQpIH0KICAgICAgICAg
LCBtX3NlY3VyaXR5T3JpZ2lueyBtYWtlUmVmUHRyKHNlY3VyaXR5T3JpZ2luKSB9CiAgICAgICAg
ICwgbV91cmwgeyB1cmwgfQpAQCAtMjA5LDggKzIwOSw4IEBAIHByaXZhdGU6CiAKIGNsYXNzIFNj
aGVkdWxlZExvY2F0aW9uQ2hhbmdlIDogcHVibGljIFNjaGVkdWxlZFVSTE5hdmlnYXRpb24gewog
cHVibGljOgotICAgIFNjaGVkdWxlZExvY2F0aW9uQ2hhbmdlKERvY3VtZW50JiBpbml0aWF0aW5n
RG9jdW1lbnQsIFNlY3VyaXR5T3JpZ2luKiBzZWN1cml0eU9yaWdpbiwgY29uc3QgVVJMJiB1cmws
IGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIExvY2tIaXN0b3J5IGxvY2tIaXN0b3J5LCBMb2NrQmFj
a0ZvcndhcmRMaXN0IGxvY2tCYWNrRm9yd2FyZExpc3QsIGJvb2wgZHVyaW5nTG9hZCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQotICAgICAgICA6IFNjaGVk
dWxlZFVSTE5hdmlnYXRpb24oaW5pdGlhdGluZ0RvY3VtZW50LCAwLjAsIHNlY3VyaXR5T3JpZ2lu
LCB1cmwsIHJlZmVycmVyLCBsb2NrSGlzdG9yeSwgbG9ja0JhY2tGb3J3YXJkTGlzdCwgZHVyaW5n
TG9hZCwgdHJ1ZSkKKyAgICBTY2hlZHVsZWRMb2NhdGlvbkNoYW5nZShEb2N1bWVudCYgaW5pdGlh
dGluZ0RvY3VtZW50LCBTZWN1cml0eU9yaWdpbiogc2VjdXJpdHlPcmlnaW4sIGNvbnN0IFVSTCYg
dXJsLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBMb2NrSGlzdG9yeSBsb2NrSGlzdG9yeSwgTG9j
a0JhY2tGb3J3YXJkTGlzdCBsb2NrQmFja0ZvcndhcmRMaXN0LCBib29sIGR1cmluZ0xvYWQsIFNo
b3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgZXh0ZXJuYWxVUkxQb2xpY3ksIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICAgICAgOiBTY2hlZHVsZWRV
UkxOYXZpZ2F0aW9uKGluaXRpYXRpbmdEb2N1bWVudCwgMC4wLCBzZWN1cml0eU9yaWdpbiwgdXJs
LCByZWZlcnJlciwgbG9ja0hpc3RvcnksIGxvY2tCYWNrRm9yd2FyZExpc3QsIGR1cmluZ0xvYWQs
IHRydWUsIGV4dGVybmFsVVJMUG9saWN5KQogICAgICAgICAsIG1fY29tcGxldGlvbkhhbmRsZXIo
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpCiAgICAgewogICAgIH0KQEAgLTQ4Miw3ICs0ODIs
MTMgQEAgdm9pZCBOYXZpZ2F0aW9uU2NoZWR1bGVyOjpzY2hlZHVsZUxvY2F0aQogICAgIC8vIFRo
aXMgbWF5IGhhcHBlbiB3aGVuIGEgZnJhbWUgY2hhbmdlcyB0aGUgbG9jYXRpb24gb2YgYW5vdGhl
ciBmcmFtZS4KICAgICBib29sIGR1cmluZ0xvYWQgPSAhbG9hZGVyLnN0YXRlTWFjaGluZSgpLmNv
bW1pdHRlZEZpcnN0UmVhbERvY3VtZW50TG9hZCgpOwogCi0gICAgc2NoZWR1bGUobWFrZVVuaXF1
ZTxTY2hlZHVsZWRMb2NhdGlvbkNoYW5nZT4oaW5pdGlhdGluZ0RvY3VtZW50LCAmc2VjdXJpdHlP
cmlnaW4sIHVybCwgcmVmZXJyZXIsIGxvY2tIaXN0b3J5LCBsb2NrQmFja0ZvcndhcmRMaXN0LCBk
dXJpbmdMb2FkLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkpOworICAgIFNob3VsZE9wZW5F
eHRlcm5hbFVSTHNQb2xpY3kgZXh0ZXJuYWxVUkxQb2xpY3kgPSBpbml0aWF0aW5nRG9jdW1lbnQu
c2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeVRvUHJvcGFnYXRlKCk7CisgICAgaWYgKGV4dGVy
bmFsVVJMUG9saWN5ID09IFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNob3VsZE5vdEFs
bG93CisgICAgICAgICYmIG1fZnJhbWUuZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKS5pc1Nh
bWVPcmlnaW5BcyhzZWN1cml0eU9yaWdpbikKKyAgICAgICAgJiYgbV9mcmFtZS5kb2N1bWVudCgp
LT5zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5VG9Qcm9wYWdhdGUoKSAhPSBTaG91bGRPcGVu
RXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91bGROb3RBbGxvdykKKyAgICAgICAgZXh0ZXJuYWxVUkxQ
b2xpY3kgPSBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91bGRBbGxvd0V4dGVybmFs
U2NoZW1lc0J1dE5vdEFwcExpbmtzOworCisgICAgc2NoZWR1bGUobWFrZVVuaXF1ZTxTY2hlZHVs
ZWRMb2NhdGlvbkNoYW5nZT4oaW5pdGlhdGluZ0RvY3VtZW50LCAmc2VjdXJpdHlPcmlnaW4sIHVy
bCwgcmVmZXJyZXIsIGxvY2tIaXN0b3J5LCBsb2NrQmFja0ZvcndhcmRMaXN0LCBkdXJpbmdMb2Fk
LCBleHRlcm5hbFVSTFBvbGljeSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpKTsKIH0KIAog
dm9pZCBOYXZpZ2F0aW9uU2NoZWR1bGVyOjpzY2hlZHVsZUZvcm1TdWJtaXNzaW9uKFJlZjxGb3Jt
U3VibWlzc2lvbj4mJiBzdWJtaXNzaW9uKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9ET01X
aW5kb3cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNw
cAkocmV2aXNpb24gMjgxMDI2KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yMzgzLDI4ICsyMzgzLDI4IEBAIHZvaWQgRE9NV2luZG93Ojpm
aW5pc2hlZExvYWRpbmcoKQogICAgIH0KIH0KIAotdm9pZCBET01XaW5kb3c6OnNldExvY2F0aW9u
KERPTVdpbmRvdyYgYWN0aXZlV2luZG93LCBjb25zdCBVUkwmIGNvbXBsZXRlZFVSTCwgU2V0TG9j
YXRpb25Mb2NraW5nIGxvY2tpbmcpCit2b2lkIERPTVdpbmRvdzo6c2V0TG9jYXRpb24oRE9NV2lu
ZG93JiBpbmN1bWJlbnRXaW5kb3csIGNvbnN0IFVSTCYgY29tcGxldGVkVVJMLCBTZXRMb2NhdGlv
bkxvY2tpbmcgbG9ja2luZykKIHsKICAgICBpZiAoIWlzQ3VycmVudGx5RGlzcGxheWVkSW5GcmFt
ZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBSZWZQdHIgYWN0aXZlRG9jdW1lbnQgPSBhY3Rp
dmVXaW5kb3cuZG9jdW1lbnQoKTsKLSAgICBpZiAoIWFjdGl2ZURvY3VtZW50KQorICAgIFJlZlB0
ciBpbmN1bWJlbnREb2N1bWVudCA9IGluY3VtYmVudFdpbmRvdy5kb2N1bWVudCgpOworICAgIGlm
ICghaW5jdW1iZW50RG9jdW1lbnQpCiAgICAgICAgIHJldHVybjsKIAogICAgIFJlZlB0ciBmcmFt
ZSA9IHRoaXMtPmZyYW1lKCk7Ci0gICAgaWYgKCFhY3RpdmVEb2N1bWVudC0+Y2FuTmF2aWdhdGUo
ZnJhbWUuZ2V0KCksIGNvbXBsZXRlZFVSTCkpCisgICAgaWYgKCFpbmN1bWJlbnREb2N1bWVudC0+
Y2FuTmF2aWdhdGUoZnJhbWUuZ2V0KCksIGNvbXBsZXRlZFVSTCkpCiAgICAgICAgIHJldHVybjsK
IAotICAgIGlmIChpc0luc2VjdXJlU2NyaXB0QWNjZXNzKGFjdGl2ZVdpbmRvdywgY29tcGxldGVk
VVJMLnN0cmluZygpKSkKKyAgICBBU1NFUlQoaW5jdW1iZW50RG9jdW1lbnQtPmZyYW1lKCkpOwor
ICAgIGlmIChpc0luc2VjdXJlU2NyaXB0QWNjZXNzKGluY3VtYmVudFdpbmRvdywgY29tcGxldGVk
VVJMLnN0cmluZygpKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gV2Ugd2FudCBhIG5ldyBo
aXN0b3J5IGl0ZW0gaWYgd2UgYXJlIHByb2Nlc3NpbmcgYSB1c2VyIGdlc3R1cmUuCiAgICAgTG9j
a0hpc3RvcnkgbG9ja0hpc3RvcnkgPSAobG9ja2luZyAhPSBMb2NrSGlzdG9yeUJhc2VkT25HZXN0
dXJlU3RhdGUgfHwgIVVzZXJHZXN0dXJlSW5kaWNhdG9yOjpwcm9jZXNzaW5nVXNlckdlc3R1cmUo
KSkgPyBMb2NrSGlzdG9yeTo6WWVzIDogTG9ja0hpc3Rvcnk6Ok5vOwogICAgIExvY2tCYWNrRm9y
d2FyZExpc3QgbG9ja0JhY2tGb3J3YXJkTGlzdCA9IChsb2NraW5nICE9IExvY2tIaXN0b3J5QmFz
ZWRPbkdlc3R1cmVTdGF0ZSkgPyBMb2NrQmFja0ZvcndhcmRMaXN0OjpZZXMgOiBMb2NrQmFja0Zv
cndhcmRMaXN0OjpObzsKLSAgICBmcmFtZS0+bmF2aWdhdGlvblNjaGVkdWxlcigpLnNjaGVkdWxl
TG9jYXRpb25DaGFuZ2UoKmFjdGl2ZURvY3VtZW50LCBhY3RpdmVEb2N1bWVudC0+c2VjdXJpdHlP
cmlnaW4oKSwKLSAgICAgICAgLy8gRklYTUU6IFdoYXQgaWYgYWN0aXZlRG9jdW1lbnQoKS0+ZnJh
bWUoKSBpcyAwPwotICAgICAgICBjb21wbGV0ZWRVUkwsIGFjdGl2ZURvY3VtZW50LT5mcmFtZSgp
LT5sb2FkZXIoKS5vdXRnb2luZ1JlZmVycmVyKCksCisgICAgZnJhbWUtPm5hdmlnYXRpb25TY2hl
ZHVsZXIoKS5zY2hlZHVsZUxvY2F0aW9uQ2hhbmdlKCppbmN1bWJlbnREb2N1bWVudCwgaW5jdW1i
ZW50RG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCksCisgICAgICAgIGNvbXBsZXRlZFVSTCwgaW5j
dW1iZW50RG9jdW1lbnQtPmZyYW1lKCktPmxvYWRlcigpLm91dGdvaW5nUmVmZXJyZXIoKSwKICAg
ICAgICAgbG9ja0hpc3RvcnksIGxvY2tCYWNrRm9yd2FyZExpc3QpOwogfQogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvRE9NV2luZG93LmgJKHJldmlzaW9uIDI4MTAyNikKKysrIFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvRE9NV2luZG93LmgJKHdvcmtpbmcgY29weSkKQEAgLTE4NCw3ICsxODQsNyBAQCBwdWJsaWM6
CiAgICAgYm9vbCBjb25zdW1lVHJhbnNpZW50QWN0aXZhdGlvbigpOwogCiAgICAgV0VCQ09SRV9F
WFBPUlQgTG9jYXRpb24mIGxvY2F0aW9uKCk7Ci0gICAgdm9pZCBzZXRMb2NhdGlvbihET01XaW5k
b3cmIGFjdGl2ZVdpbmRvdywgY29uc3QgVVJMJiBjb21wbGV0ZWRVUkwsIFNldExvY2F0aW9uTG9j
a2luZyA9IExvY2tIaXN0b3J5QmFzZWRPbkdlc3R1cmVTdGF0ZSk7CisgICAgdm9pZCBzZXRMb2Nh
dGlvbihET01XaW5kb3cmIGluY3VtYmVudFdpbmRvdywgY29uc3QgVVJMJiBjb21wbGV0ZWRVUkws
IFNldExvY2F0aW9uTG9ja2luZyA9IExvY2tIaXN0b3J5QmFzZWRPbkdlc3R1cmVTdGF0ZSk7CiAK
ICAgICBET01TZWxlY3Rpb24qIGdldFNlbGVjdGlvbigpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wYWdlL0xvY2F0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0xv
Y2F0aW9uLmNwcAkocmV2aXNpb24gMjgxMDI2KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9Mb2Nh
dGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxMCwxNCArMjEwLDE0IEBAIEV4Y2VwdGlvbk9y
PHZvaWQ+IExvY2F0aW9uOjpzZXRIYXNoKERPTVcKICAgICByZXR1cm4gc2V0TG9jYXRpb24oaW5j
dW1iZW50V2luZG93LCBmaXJzdFdpbmRvdywgdXJsLnN0cmluZygpKTsKIH0KIAotRXhjZXB0aW9u
T3I8dm9pZD4gTG9jYXRpb246OmFzc2lnbihET01XaW5kb3cmIGFjdGl2ZVdpbmRvdywgRE9NV2lu
ZG93JiBmaXJzdFdpbmRvdywgY29uc3QgU3RyaW5nJiB1cmwpCitFeGNlcHRpb25Pcjx2b2lkPiBM
b2NhdGlvbjo6YXNzaWduKERPTVdpbmRvdyYgaW5jdW1iZW50V2luZG93LCBET01XaW5kb3cmIGZp
cnN0V2luZG93LCBjb25zdCBTdHJpbmcmIHVybCkKIHsKICAgICBpZiAoIWZyYW1lKCkpCiAgICAg
ICAgIHJldHVybiB7IH07Ci0gICAgcmV0dXJuIHNldExvY2F0aW9uKGFjdGl2ZVdpbmRvdywgZmly
c3RXaW5kb3csIHVybCk7CisgICAgcmV0dXJuIHNldExvY2F0aW9uKGluY3VtYmVudFdpbmRvdywg
Zmlyc3RXaW5kb3csIHVybCk7CiB9CiAKLUV4Y2VwdGlvbk9yPHZvaWQ+IExvY2F0aW9uOjpyZXBs
YWNlKERPTVdpbmRvdyYgYWN0aXZlV2luZG93LCBET01XaW5kb3cmIGZpcnN0V2luZG93LCBjb25z
dCBTdHJpbmcmIHVybFN0cmluZykKK0V4Y2VwdGlvbk9yPHZvaWQ+IExvY2F0aW9uOjpyZXBsYWNl
KERPTVdpbmRvdyYgaW5jdW1iZW50V2luZG93LCBET01XaW5kb3cmIGZpcnN0V2luZG93LCBjb25z
dCBTdHJpbmcmIHVybFN0cmluZykKIHsKICAgICBhdXRvKiBmcmFtZSA9IHRoaXMtPmZyYW1lKCk7
CiAgICAgaWYgKCFmcmFtZSkKQEAgLTIzNCwzNiArMjM0LDM2IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+
IExvY2F0aW9uOjpyZXBsYWNlKERPTVcKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFN5bnRh
eEVycm9yIH07CiAKICAgICAvLyBXZSBjYWxsIERPTVdpbmRvdzo6c2V0TG9jYXRpb24gZGlyZWN0
bHkgaGVyZSBiZWNhdXNlIHJlcGxhY2UoKSBhbHdheXMgb3BlcmF0ZXMgb24gdGhlIGN1cnJlbnQg
ZnJhbWUuCi0gICAgZnJhbWUtPmRvY3VtZW50KCktPmRvbVdpbmRvdygpLT5zZXRMb2NhdGlvbihh
Y3RpdmVXaW5kb3csIGNvbXBsZXRlZFVSTCwgTG9ja0hpc3RvcnlBbmRCYWNrRm9yd2FyZExpc3Qp
OworICAgIGZyYW1lLT5kb2N1bWVudCgpLT5kb21XaW5kb3coKS0+c2V0TG9jYXRpb24oaW5jdW1i
ZW50V2luZG93LCBjb21wbGV0ZWRVUkwsIExvY2tIaXN0b3J5QW5kQmFja0ZvcndhcmRMaXN0KTsK
ICAgICByZXR1cm4geyB9OwogfQogCi12b2lkIExvY2F0aW9uOjpyZWxvYWQoRE9NV2luZG93JiBh
Y3RpdmVXaW5kb3cpCit2b2lkIExvY2F0aW9uOjpyZWxvYWQoRE9NV2luZG93JiBpbmN1bWJlbnRX
aW5kb3cpCiB7CiAgICAgYXV0byogZnJhbWUgPSB0aGlzLT5mcmFtZSgpOwogICAgIGlmICghZnJh
bWUpCiAgICAgICAgIHJldHVybjsKIAotICAgIEFTU0VSVChhY3RpdmVXaW5kb3cuZG9jdW1lbnQo
KSk7CisgICAgQVNTRVJUKGluY3VtYmVudFdpbmRvdy5kb2N1bWVudCgpKTsKICAgICBBU1NFUlQo
ZnJhbWUtPmRvY3VtZW50KCkpOwogICAgIEFTU0VSVChmcmFtZS0+ZG9jdW1lbnQoKS0+ZG9tV2lu
ZG93KCkpOwogCi0gICAgYXV0byYgYWN0aXZlRG9jdW1lbnQgPSAqYWN0aXZlV2luZG93LmRvY3Vt
ZW50KCk7CisgICAgYXV0byYgaW5jdW1iZW50RG9jdW1lbnQgPSAqaW5jdW1iZW50V2luZG93LmRv
Y3VtZW50KCk7CiAgICAgYXV0byYgdGFyZ2V0RG9jdW1lbnQgPSAqZnJhbWUtPmRvY3VtZW50KCk7
CiAKICAgICAvLyBGSVhNRTogSXQncyBub3QgY2xlYXIgdGhpcyBjcm9zcy1vcmlnaW4gc2VjdXJp
dHkgY2hlY2sgaXMgdmFsdWFibGUuCiAgICAgLy8gV2UgYWxsb3cgb25lIHBhZ2UgdG8gY2hhbmdl
IHRoZSBsb2NhdGlvbiBvZiBhbm90aGVyLiBXaHkgYmxvY2sgYXR0ZW1wdHMgdG8gcmVsb2FkPwog
ICAgIC8vIE90aGVyIGxvY2F0aW9uIG9wZXJhdGlvbnMgc2ltcGx5IGJsb2NrIHVzZSBvZiBKYXZh
U2NyaXB0IFVSTHMgY3Jvc3Mgb3JpZ2luLgotICAgIGlmICghYWN0aXZlRG9jdW1lbnQuc2VjdXJp
dHlPcmlnaW4oKS5pc1NhbWVPcmlnaW5Eb21haW4odGFyZ2V0RG9jdW1lbnQuc2VjdXJpdHlPcmln
aW4oKSkpIHsKKyAgICBpZiAoIWluY3VtYmVudERvY3VtZW50LnNlY3VyaXR5T3JpZ2luKCkuaXNT
YW1lT3JpZ2luRG9tYWluKHRhcmdldERvY3VtZW50LnNlY3VyaXR5T3JpZ2luKCkpKSB7CiAgICAg
ICAgIGF1dG8mIHRhcmdldFdpbmRvdyA9ICp0YXJnZXREb2N1bWVudC5kb21XaW5kb3coKTsKLSAg
ICAgICAgdGFyZ2V0V2luZG93LnByaW50RXJyb3JNZXNzYWdlKHRhcmdldFdpbmRvdy5jcm9zc0Rv
bWFpbkFjY2Vzc0Vycm9yTWVzc2FnZShhY3RpdmVXaW5kb3csIEluY2x1ZGVUYXJnZXRPcmlnaW46
OlllcykpOworICAgICAgICB0YXJnZXRXaW5kb3cucHJpbnRFcnJvck1lc3NhZ2UodGFyZ2V0V2lu
ZG93LmNyb3NzRG9tYWluQWNjZXNzRXJyb3JNZXNzYWdlKGluY3VtYmVudFdpbmRvdywgSW5jbHVk
ZVRhcmdldE9yaWdpbjo6WWVzKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBpZiAo
dGFyZ2V0RG9jdW1lbnQudXJsKCkucHJvdG9jb2xJc0phdmFTY3JpcHQoKSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgZnJhbWUtPm5hdmlnYXRpb25TY2hlZHVsZXIoKS5zY2hlZHVsZVJlZnJlc2go
YWN0aXZlRG9jdW1lbnQpOworICAgIGZyYW1lLT5uYXZpZ2F0aW9uU2NoZWR1bGVyKCkuc2NoZWR1
bGVSZWZyZXNoKGluY3VtYmVudERvY3VtZW50KTsKIH0KIAogRXhjZXB0aW9uT3I8dm9pZD4gTG9j
YXRpb246OnNldExvY2F0aW9uKERPTVdpbmRvdyYgaW5jdW1iZW50V2luZG93LCBET01XaW5kb3cm
IGZpcnN0V2luZG93LCBjb25zdCBTdHJpbmcmIHVybFN0cmluZykKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BhZ2UvTG9jYXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0xv
Y2F0aW9uLmgJKHJldmlzaW9uIDI4MTAyNikKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvTG9jYXRp
b24uaAkod29ya2luZyBjb3B5KQpAQCAtNDUsOSArNDUsOSBAQCBwdWJsaWM6CiAgICAgRXhjZXB0
aW9uT3I8dm9pZD4gc2V0SHJlZihET01XaW5kb3cmIGluY3VtYmVudFdpbmRvdywgRE9NV2luZG93
JiBmaXJzdFdpbmRvdywgY29uc3QgU3RyaW5nJik7CiAgICAgU3RyaW5nIGhyZWYoKSBjb25zdDsK
IAotICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IGFzc2lnbihET01XaW5kb3cmIGFjdGl2ZVdpbmRvdywg
RE9NV2luZG93JiBmaXJzdFdpbmRvdywgY29uc3QgU3RyaW5nJik7Ci0gICAgRXhjZXB0aW9uT3I8
dm9pZD4gcmVwbGFjZShET01XaW5kb3cmIGFjdGl2ZVdpbmRvdywgRE9NV2luZG93JiBmaXJzdFdp
bmRvdywgY29uc3QgU3RyaW5nJik7Ci0gICAgdm9pZCByZWxvYWQoRE9NV2luZG93JiBhY3RpdmVX
aW5kb3cpOworICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IGFzc2lnbihET01XaW5kb3cmIGluY3VtYmVu
dFdpbmRvdywgRE9NV2luZG93JiBmaXJzdFdpbmRvdywgY29uc3QgU3RyaW5nJik7CisgICAgRXhj
ZXB0aW9uT3I8dm9pZD4gcmVwbGFjZShET01XaW5kb3cmIGluY3VtYmVudFdpbmRvdywgRE9NV2lu
ZG93JiBmaXJzdFdpbmRvdywgY29uc3QgU3RyaW5nJik7CisgICAgdm9pZCByZWxvYWQoRE9NV2lu
ZG93JiBpbmN1bWJlbnRXaW5kb3cpOwogCiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gc2V0UHJvdG9j
b2woRE9NV2luZG93JiBpbmN1bWJlbnRXaW5kb3csIERPTVdpbmRvdyYgZmlyc3RXaW5kb3csIGNv
bnN0IFN0cmluZyYpOwogICAgIFN0cmluZyBwcm90b2NvbCgpIGNvbnN0OwpJbmRleDogU291cmNl
L1dlYkNvcmUvcGFnZS9Mb2NhdGlvbi5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGFnZS9Mb2NhdGlvbi5pZGwJKHJldmlzaW9uIDI4MTAyNikKKysrIFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvTG9jYXRpb24uaWRsCSh3b3JraW5nIGNvcHkpCkBAIC00NSwxMCArNDUsOSBAQAogXSBpbnRl
cmZhY2UgTG9jYXRpb24gewogICAgIFtTZXR0ZXJDYWxsV2l0aD1JbmN1bWJlbnRXaW5kb3cmRmly
c3RXaW5kb3csIERvTm90Q2hlY2tTZWN1cml0eU9uU2V0dGVyXSBzdHJpbmdpZmllciBhdHRyaWJ1
dGUgVVNWU3RyaW5nIGhyZWY7CiAKLSAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHVzZSBJbmN1bWJl
bnRXaW5kb3cgb25jZSB3ZSBmb3VuZCB3aHkgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIyODk0MyBpc3N1ZSBvY2N1cmVkLgotICAgIFtDYWxsV2l0aD1BY3RpdmVXaW5k
b3cmRmlyc3RXaW5kb3ddIHVuZGVmaW5lZCBhc3NpZ24oVVNWU3RyaW5nIHVybCk7Ci0gICAgW0Nh
bGxXaXRoPUFjdGl2ZVdpbmRvdyZGaXJzdFdpbmRvdywgRG9Ob3RDaGVja1NlY3VyaXR5XSB1bmRl
ZmluZWQgcmVwbGFjZShVU1ZTdHJpbmcgdXJsKTsKLSAgICBbQ2FsbFdpdGg9QWN0aXZlV2luZG93
XSB1bmRlZmluZWQgcmVsb2FkKCk7CisgICAgW0NhbGxXaXRoPUluY3VtYmVudFdpbmRvdyZGaXJz
dFdpbmRvd10gdW5kZWZpbmVkIGFzc2lnbihVU1ZTdHJpbmcgdXJsKTsKKyAgICBbQ2FsbFdpdGg9
SW5jdW1iZW50V2luZG93JkZpcnN0V2luZG93LCBEb05vdENoZWNrU2VjdXJpdHldIHVuZGVmaW5l
ZCByZXBsYWNlKFVTVlN0cmluZyB1cmwpOworICAgIFtDYWxsV2l0aD1JbmN1bWJlbnRXaW5kb3dd
IHVuZGVmaW5lZCByZWxvYWQoKTsKIAogICAgIC8vIFVSSSBkZWNvbXBvc2l0aW9uIGF0dHJpYnV0
ZXMKICAgICBbU2V0dGVyQ2FsbFdpdGg9SW5jdW1iZW50V2luZG93JkZpcnN0V2luZG93XSBhdHRy
aWJ1dGUgVVNWU3RyaW5nIHByb3RvY29sOwpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMjgxMDI2KQorKysg
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjggQEAKKzIw
MjEtMDgtMTUgIEFsZXhleSBTaHZheWthICA8c2h2YWlrYWxlc2hAZ21haWwuY29tPgorCisgICAg
ICAgIEFsbG93IGEgc2FtZS1vcmlnaW4gPGlmcmFtZT4gdG8gcHJvZ3JhbW1hdGljYWxseSBuYXZp
Z2F0ZSBpdHMgdG9wIGZyYW1lIHRvIGFuIGV4dGVybmFsIFVSTAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI5MTIwCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZy
YW1lLW5hdmlnYXRpb24tcGFyZW50LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2ZyYW1l
cy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24tcGFyZW50Lmh0bWw6CisgICAgICAgICogaHR0
cC90ZXN0cy9uYXZpZ2F0aW9uLXBvbGljeTogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9u
YXZpZ2F0aW9uLXBvbGljeS9tYWluLWZyYW1lLW5hdmlnYXRlZC1wcm9ncmFtYXRpY2FsbHktYnkt
c3ViZnJhbWUtY3Jvc3Mtb3JpZ2luLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0
cC90ZXN0cy9uYXZpZ2F0aW9uLXBvbGljeS9tYWluLWZyYW1lLW5hdmlnYXRlZC1wcm9ncmFtYXRp
Y2FsbHktYnktc3ViZnJhbWUtY3Jvc3Mtb3JpZ2luLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0
dHAvdGVzdHMvbmF2aWdhdGlvbi1wb2xpY3kvcmVzb3VyY2VzOiBBZGRlZC4KKyAgICAgICAgKiBo
dHRwL3Rlc3RzL25hdmlnYXRpb24tcG9saWN5L3Jlc291cmNlcy9tYWluLWZyYW1lLXdpdGgtc3Vi
ZnJhbWUtcHJvZ3JhbWF0aWNhbGx5LW5hdmlnYXRlcy1tYWluLWNyb3NzLW9yaWdpbi5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL25hdmlnYXRpb24tcG9saWN5L3Jlc291cmNlcy9u
b3RpZnktZG9uZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL25hdmlnYXRpb24t
cG9saWN5L3Jlc291cmNlcy9wcm9ncmFtYXRpY2FsbHktbmF2aWdhdGUtdG8tbm90aWZ5LWRvbmUt
dGFyZ2V0LXRvcC1jcm9zcy1vcmlnaW4uaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0
cy9zZWN1cml0eS9mcmFtZU5hdmlnYXRpb24vY29udGV4dC1mb3ItbG9jYXRpb24tYXNzaWduLWV4
cGVjdGVkLnR4dDoKKyAgICAgICAgKiBsb2FkZXIvbmF2aWdhdGlvbi1wb2xpY3kvc2hvdWxkLW9w
ZW4tZXh0ZXJuYWwtdXJscy9tYWluLWZyYW1lLW5hdmlnYXRlZC1wcm9ncmFtYXRpY2FsbHktYnkt
c3ViZnJhbWUtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGxvYWRlci9uYXZpZ2F0aW9uLXBvbGlj
eS9zaG91bGQtb3Blbi1leHRlcm5hbC11cmxzL21haW4tZnJhbWUtbmF2aWdhdGVkLXByb2dyYW1h
dGljYWxseS1ieS1zdWJmcmFtZS12aWEtbWV0aG9kLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogbG9hZGVyL25hdmlnYXRpb24tcG9saWN5L3Nob3VsZC1vcGVuLWV4dGVybmFsLXVybHMv
bWFpbi1mcmFtZS1uYXZpZ2F0ZWQtcHJvZ3JhbWF0aWNhbGx5LWJ5LXN1YmZyYW1lLXZpYS1tZXRo
b2QuaHRtbDogQWRkZWQuCisgICAgICAgICogbG9hZGVyL25hdmlnYXRpb24tcG9saWN5L3Nob3Vs
ZC1vcGVuLWV4dGVybmFsLXVybHMvbWFpbi1mcmFtZS1uYXZpZ2F0ZWQtcHJvZ3JhbWF0aWNhbGx5
LWJ5LXN1YmZyYW1lLXdpdGhvdXQtZmxhZy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IGxvYWRlci9uYXZpZ2F0aW9uLXBvbGljeS9zaG91bGQtb3Blbi1leHRlcm5hbC11cmxzL21haW4t
ZnJhbWUtbmF2aWdhdGVkLXByb2dyYW1hdGljYWxseS1ieS1zdWJmcmFtZS13aXRob3V0LWZsYWcu
aHRtbDogQWRkZWQuCisgICAgICAgICogbG9hZGVyL25hdmlnYXRpb24tcG9saWN5L3Nob3VsZC1v
cGVuLWV4dGVybmFsLXVybHMvcmVzb3VyY2VzL21haW4tZnJhbWUtd2l0aC1zdWJmcmFtZS1wcm9n
cmFtYXRpY2FsbHktbmF2aWdhdGVzLW1haW4tdmlhLW1ldGhvZC5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBsb2FkZXIvbmF2aWdhdGlvbi1wb2xpY3kvc2hvdWxkLW9wZW4tZXh0ZXJuYWwtdXJscy9y
ZXNvdXJjZXMvcHJvZ3JhbWF0aWNhbGx5LW5hdmlnYXRlLXRvLW5vdGlmeS1kb25lLXRhcmdldC10
b3AtdmlhLW1ldGhvZC5odG1sOiBBZGRlZC4KKwogMjAyMS0wOC0xMyAgQWxleCBDaHJpc3RlbnNl
biAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJldmVy
dGluZyByMjgxMDA5LgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlm
cmFtZS1uYXZpZ2F0aW9uLXBhcmVudC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXBhcmVudC1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDI4MTAyNikKKysrIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Nh
bmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi1wYXJlbnQtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNv
cHkpCkBAIC0xLDQgKzEsOSBAQAotVGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQgYSBzYW5kYm94ZWQg
SUZyYW1lIHdpdGggdGhlIGtleXdvcmRzIGFsbG93LXNjcmlwdHMgYW5kIGFsbG93LXNhbWUtb3Jp
Z2luIGlzIGFsbG93ZWQgdG8gbmF2aWdhdGUgYW4gYW5jZXN0b3IgaW4gdGhlIGZyYW1lIHRyZWUg
YnkgYXNzaWduaW5nIHRoZSBsb2NhdGlvbiBhdHRyaWJ1dGUuCitDT05TT0xFIE1FU1NBR0U6IFVu
c2FmZSBKYXZhU2NyaXB0IGF0dGVtcHQgdG8gaW5pdGlhdGUgbmF2aWdhdGlvbiBmb3IgZnJhbWUg
d2l0aCBVUkwgJ3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi1zb3VyY2UuaHRtbCcuIFRoZSBm
cmFtZSBhdHRlbXB0aW5nIG5hdmlnYXRpb24gaXMgc2FuZGJveGVkLCBhbmQgaXMgdGhlcmVmb3Jl
IGRpc2FsbG93ZWQgZnJvbSBuYXZpZ2F0aW5nIGl0cyBhbmNlc3RvcnMuCisKK0NPTlNPTEUgTUVT
U0FHRTogU2VjdXJpdHlFcnJvcjogVGhlIG9wZXJhdGlvbiBpcyBpbnNlY3VyZS4KK1RoaXMgdGVz
dCB2ZXJpZmllcyB0aGF0IGEgc2FuZGJveGVkIElGcmFtZSBjYW5ub3QgbmF2aWdhdGUgYW4gYW5j
ZXN0b3IgaW4gdGhlIGZyYW1lIHRyZWUgYnkgYXNzaWduaW5nIHRoZSBsb2NhdGlvbiBhdHRyaWJ1
dGUuCisKK1RoaXMgaXMgZG9uZSBieSBsb2FkaW5nIHRlbiBub24tc2FuZGJveGVkIElGcmFtZXMs
IGFuZCBhIHNpbmdsZSBzYW5kYm94ZWQgb25lLiBFeHBlY3QgdGVuIGZyYW1lcyB0byBiZSBuYXZp
Z2F0ZWQsIGJ1dCB0aGUgc2FuZGJveGVkIG9uZSB0byBub3QgYmUgb25lIG9mIHRoZW0uCiAKIFRo
aXMgdGVzdCB3aWxsIHByaW50ICJQQVNTIiBvbiBzdWNjZXNzLgogCkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24tcGFyZW50Lmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZp
Z2F0aW9uLXBhcmVudC5odG1sCShyZXZpc2lvbiAyODEwMjYpCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24tcGFyZW50Lmh0bWwJKHdvcmtpbmcg
Y29weSkKQEAgLTEzLDkgKzEzLDkgQEAgZnVuY3Rpb24gY2hlY2tSZXN1bHRzKCkKIHsKICAgICB2
YXIgdGVzdFN0YXR1cyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZXN0U3RhdHVzJyk7CiAK
LSAgICBpZiAoc2VsZi5uYXZpZ2F0ZWQubG9jYXRpb24uaHJlZi5pbmRleE9mKCdwYXJlbnQuaHRt
bCcpICE9IC0xKQotICAgICAgICB0ZXN0U3RhdHVzLmlubmVySFRNTCA9ICdGQUlMOiBzYW5kYm94
ZWQgZnJhbWUgY291bGRuXCd0IG5hdmlnYXRlJzsKLSAgICBlbHNlIGlmIChuYXZpZ2F0ZWRGcmFt
ZXMgPT0gMTEpCisgICAgaWYgKHNlbGYubmF2aWdhdGVkLmxvY2F0aW9uLmhyZWYuaW5kZXhPZign
cGFyZW50Lmh0bWwnKSA9PSAtMSkKKyAgICAgICAgdGVzdFN0YXR1cy5pbm5lckhUTUwgPSAnRkFJ
TDogZGlzYWxsb3dlZCBmcmFtZSBuYXZpZ2F0ZWQnOworICAgIGVsc2UgaWYgKG5hdmlnYXRlZEZy
YW1lcyA9PSAxMCkKICAgICAgICAgdGVzdFN0YXR1cy5pbm5lckhUTUwgPSAnUEFTUyc7CiAgICAg
ZWxzZQogICAgICAgICB0ZXN0U3RhdHVzLmlubmVySFRNTCA9ICdGQUlMOiBmcmFtZXMgbm90IG5h
dmlnYXRlZCBwcm9wZXJseSc7CkBAIC0yOCw3ICsyOCw3IEBAIGZ1bmN0aW9uIGNvdW50RnJhbWUo
KQogewogICAgICsrbmF2aWdhdGVkRnJhbWVzOwogCi0gICAgaWYgKG5hdmlnYXRlZEZyYW1lcyA9
PSAxMSkKKyAgICBpZiAobmF2aWdhdGVkRnJhbWVzID09IDEwKQogICAgICAgICBjaGVja1Jlc3Vs
dHMoKTsKIH0KIApAQCAtMzcsMTAgKzM3LDEzIEBAIGZ1bmN0aW9uIGNvdW50RnJhbWUoKQogCiA8
Ym9keT4KIAotICAgIDxwPlRoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IGEgc2FuZGJveGVkIElGcmFt
ZSB3aXRoIHRoZSBrZXl3b3JkcwotICAgIGFsbG93LXNjcmlwdHMgYW5kIGFsbG93LXNhbWUtb3Jp
Z2luIGlzIGFsbG93ZWQgdG8gbmF2aWdhdGUgYW4gYW5jZXN0b3IKKyAgICA8cD5UaGlzIHRlc3Qg
dmVyaWZpZXMgdGhhdCBhIHNhbmRib3hlZCBJRnJhbWUgY2Fubm90IG5hdmlnYXRlIGFuIGFuY2Vz
dG9yCiAgICAgaW4gdGhlIGZyYW1lIHRyZWUgYnkgYXNzaWduaW5nIHRoZSBsb2NhdGlvbiBhdHRy
aWJ1dGUuPC9wPgogCisgICAgPHA+VGhpcyBpcyBkb25lIGJ5IGxvYWRpbmcgdGVuIG5vbi1zYW5k
Ym94ZWQgSUZyYW1lcywgYW5kIGEgc2luZ2xlCisgICAgc2FuZGJveGVkIG9uZS4gRXhwZWN0IHRl
biBmcmFtZXMgdG8gYmUgbmF2aWdhdGVkLCBidXQgdGhlIHNhbmRib3hlZAorICAgIG9uZSB0byA8
Yj5ub3Q8L2I+IGJlIG9uZSBvZiB0aGVtLjwvcD4KKyAgICAKICAgICA8cD5UaGlzIHRlc3Qgd2ls
bCBwcmludCAmcXVvdDtQQVNTJnF1b3Q7IG9uIHN1Y2Nlc3MuPC9wPgogCiAgICAgPGlmcmFtZSBz
cmM9InJlc291cmNlcy9ub24tc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLmh0bWwiPjwvaWZy
YW1lPgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9uYXZpZ2F0aW9uLXBvbGljeS9tYWlu
LWZyYW1lLW5hdmlnYXRlZC1wcm9ncmFtYXRpY2FsbHktYnktc3ViZnJhbWUtY3Jvc3Mtb3JpZ2lu
LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL25hdmln
YXRpb24tcG9saWN5L21haW4tZnJhbWUtbmF2aWdhdGVkLXByb2dyYW1hdGljYWxseS1ieS1zdWJm
cmFtZS1jcm9zcy1vcmlnaW4tZXhwZWN0ZWQudHh0CShub25leGlzdGVudCkKKysrIExheW91dFRl
c3RzL2h0dHAvdGVzdHMvbmF2aWdhdGlvbi1wb2xpY3kvbWFpbi1mcmFtZS1uYXZpZ2F0ZWQtcHJv
Z3JhbWF0aWNhbGx5LWJ5LXN1YmZyYW1lLWNyb3NzLW9yaWdpbi1leHBlY3RlZC50eHQJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSw3IEBACisgLSBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0
aW9uCis8TlNVUkxSZXF1ZXN0IFVSTCBodHRwOi8vMTI3LjAuMC4xOjgwMDAvbmF2aWdhdGlvbi1w
b2xpY3kvcmVzb3VyY2VzL21haW4tZnJhbWUtd2l0aC1zdWJmcmFtZS1wcm9ncmFtYXRpY2FsbHkt
bmF2aWdhdGVzLW1haW4tY3Jvc3Mtb3JpZ2luLmh0bWwsIG1haW4gZG9jdW1lbnQgVVJMIGh0dHA6
Ly8xMjcuMC4wLjE6ODAwMC9uYXZpZ2F0aW9uLXBvbGljeS9yZXNvdXJjZXMvbWFpbi1mcmFtZS13
aXRoLXN1YmZyYW1lLXByb2dyYW1hdGljYWxseS1uYXZpZ2F0ZXMtbWFpbi1jcm9zcy1vcmlnaW4u
aHRtbCwgaHR0cCBtZXRob2QgR0VUPiBpcyBtYWluIGZyYW1lIC0geWVzIHNob3VsZCBvcGVuIFVS
THMgZXh0ZXJuYWxseSAtIHllcworIC0gZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbgor
PE5TVVJMUmVxdWVzdCBVUkwgaHR0cDovL2xvY2FsaG9zdDo4MDgwL25hdmlnYXRpb24tcG9saWN5
L3Jlc291cmNlcy9wcm9ncmFtYXRpY2FsbHktbmF2aWdhdGUtdG8tbm90aWZ5LWRvbmUtdGFyZ2V0
LXRvcC1jcm9zcy1vcmlnaW4uaHRtbCwgbWFpbiBkb2N1bWVudCBVUkwgaHR0cDovLzEyNy4wLjAu
MTo4MDAwL25hdmlnYXRpb24tcG9saWN5L3Jlc291cmNlcy9tYWluLWZyYW1lLXdpdGgtc3ViZnJh
bWUtcHJvZ3JhbWF0aWNhbGx5LW5hdmlnYXRlcy1tYWluLWNyb3NzLW9yaWdpbi5odG1sLCBodHRw
IG1ldGhvZCBHRVQ+IGlzIG1haW4gZnJhbWUgLSBubyBzaG91bGQgb3BlbiBVUkxzIGV4dGVybmFs
bHkgLSBubworIC0gZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbgorPE5TVVJMUmVxdWVz
dCBVUkwgaHR0cDovLzEyNy4wLjAuMTo4MDAwL25hdmlnYXRpb24tcG9saWN5L3Jlc291cmNlcy9u
b3RpZnktZG9uZS5odG1sLCBtYWluIGRvY3VtZW50IFVSTCBodHRwOi8vMTI3LjAuMC4xOjgwMDAv
bmF2aWdhdGlvbi1wb2xpY3kvcmVzb3VyY2VzL25vdGlmeS1kb25lLmh0bWwsIGh0dHAgbWV0aG9k
IEdFVD4gaXMgbWFpbiBmcmFtZSAtIHllcyBzaG91bGQgb3BlbiBVUkxzIGV4dGVybmFsbHkgLSBu
bworCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL25hdmlnYXRpb24tcG9saWN5L21haW4t
ZnJhbWUtbmF2aWdhdGVkLXByb2dyYW1hdGljYWxseS1ieS1zdWJmcmFtZS1jcm9zcy1vcmlnaW4u
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL25hdmlnYXRpb24tcG9s
aWN5L21haW4tZnJhbWUtbmF2aWdhdGVkLXByb2dyYW1hdGljYWxseS1ieS1zdWJmcmFtZS1jcm9z
cy1vcmlnaW4uaHRtbAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL25h
dmlnYXRpb24tcG9saWN5L21haW4tZnJhbWUtbmF2aWdhdGVkLXByb2dyYW1hdGljYWxseS1ieS1z
dWJmcmFtZS1jcm9zcy1vcmlnaW4uaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEzIEBA
Cis8c2NyaXB0PgorCitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1
bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLmR1bXBQb2xpY3lEZWxlZ2F0ZUNhbGxiYWNrcygp
OworICAgIHRlc3RSdW5uZXIucXVldWVMb2FkKCJyZXNvdXJjZXMvbWFpbi1mcmFtZS13aXRoLXN1
YmZyYW1lLXByb2dyYW1hdGljYWxseS1uYXZpZ2F0ZXMtbWFpbi1jcm9zcy1vcmlnaW4uaHRtbCIs
ICIiLCB0cnVlKTsKK30KKworPC9zY3JpcHQ+CitUaGlzIHBhZ2UgaGFzIGRvZXMgbm90IGhhdmUg
dGhlICJzaG91bGQgb3BlbiBleHRlcm5hbCBVUkxzIiBmbGFnIHNldC48YnI+CitJdCBuYXZpZ2F0
ZXMgdG8gYSAybmQgcGFnZSB0aGF0IGRvZXMgaGF2ZSB0aGUgZmxhZyBzZXQuPGJyPgorVGhhdCAy
bmQgcGFnZSBjb250YWlucyBhbiBpZnJhbWUgd2hpY2ggcHJvZ3JhbWF0aWNhbGx5IG5hdmlnYXRl
cyB0aGUgbWFpbiBmcmFtZSB0byBhIDNyZCBwYWdlLjxicj4KK1RoZSAic2hvdWxkIG9wZW4gZXh0
ZXJuYWwgVVJMcyIgZmxhZyBzaG91bGQgYmUgdW5zZXQgYmVjYXVzZSB0aGUgc3ViZnJhbWUtPm1h
aW4gZnJhbWUgbmF2aWdhdGlvbiB3YXMgcHJvZ3JhbWF0aWMuPGJyPgpJbmRleDogTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9uYXZpZ2F0aW9uLXBvbGljeS9yZXNvdXJjZXMvbWFpbi1mcmFtZS13aXRo
LXN1YmZyYW1lLXByb2dyYW1hdGljYWxseS1uYXZpZ2F0ZXMtbWFpbi1jcm9zcy1vcmlnaW4uaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL25hdmlnYXRpb24tcG9saWN5
L3Jlc291cmNlcy9tYWluLWZyYW1lLXdpdGgtc3ViZnJhbWUtcHJvZ3JhbWF0aWNhbGx5LW5hdmln
YXRlcy1tYWluLWNyb3NzLW9yaWdpbi5odG1sCShub25leGlzdGVudCkKKysrIExheW91dFRlc3Rz
L2h0dHAvdGVzdHMvbmF2aWdhdGlvbi1wb2xpY3kvcmVzb3VyY2VzL21haW4tZnJhbWUtd2l0aC1z
dWJmcmFtZS1wcm9ncmFtYXRpY2FsbHktbmF2aWdhdGVzLW1haW4tY3Jvc3Mtb3JpZ2luLmh0bWwJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2IEBACis8c2NyaXB0PgoraWYgKHdpbmRvdy50ZXN0
UnVubmVyKQorICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworPC9zY3JpcHQ+CisKKzxp
ZnJhbWUgc3JjPSJodHRwOi8vbG9jYWxob3N0OjgwODAvbmF2aWdhdGlvbi1wb2xpY3kvcmVzb3Vy
Y2VzL3Byb2dyYW1hdGljYWxseS1uYXZpZ2F0ZS10by1ub3RpZnktZG9uZS10YXJnZXQtdG9wLWNy
b3NzLW9yaWdpbi5odG1sIj48L2lmcmFtZT4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMv
bmF2aWdhdGlvbi1wb2xpY3kvcmVzb3VyY2VzL25vdGlmeS1kb25lLmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9uYXZpZ2F0aW9uLXBvbGljeS9yZXNvdXJjZXMvbm90
aWZ5LWRvbmUuaHRtbAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL25h
dmlnYXRpb24tcG9saWN5L3Jlc291cmNlcy9ub3RpZnktZG9uZS5odG1sCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsNCBAQAorPHNjcmlwdD4KK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0
ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKzwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9uYXZpZ2F0aW9uLXBvbGljeS9yZXNvdXJjZXMvcHJvZ3JhbWF0aWNhbGx5LW5hdmln
YXRlLXRvLW5vdGlmeS1kb25lLXRhcmdldC10b3AtY3Jvc3Mtb3JpZ2luLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9uYXZpZ2F0aW9uLXBvbGljeS9yZXNvdXJjZXMv
cHJvZ3JhbWF0aWNhbGx5LW5hdmlnYXRlLXRvLW5vdGlmeS1kb25lLXRhcmdldC10b3AtY3Jvc3Mt
b3JpZ2luLmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9uYXZp
Z2F0aW9uLXBvbGljeS9yZXNvdXJjZXMvcHJvZ3JhbWF0aWNhbGx5LW5hdmlnYXRlLXRvLW5vdGlm
eS1kb25lLXRhcmdldC10b3AtY3Jvc3Mtb3JpZ2luLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSwxNCBAQAorPHNjcmlwdD4KKworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RS
dW5uZXIud2FpdFVudGlsRG9uZSgpOworICAgIAorZnVuY3Rpb24gbG9hZGVkKCkKK3sKKyAgICB3
aW5kb3cudG9wLmxvY2F0aW9uID0gImh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9uYXZpZ2F0aW9uLXBv
bGljeS9yZXNvdXJjZXMvbm90aWZ5LWRvbmUuaHRtbCI7Cit9CisKKzwvc2NyaXB0PgorPGJvZHkg
b25sb2FkPSJsb2FkZWQoKTsiPgorVGhpcyBwYWdlIGRvZXMgYSBqYXZhc2NyaXB0IGNsaWVudCBy
ZWRpcmVjdCB0byBub3RpZnktZG9uZS5odG1sIGluIHRoZSBtYWluIGZyYW1lLgorPC9ib2R5PgpJ
bmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9mcmFtZU5hdmlnYXRpb24vY29u
dGV4dC1mb3ItbG9jYXRpb24tYXNzaWduLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi9jb250ZXh0LWZvci1s
b2NhdGlvbi1hc3NpZ24tZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyODEwMjYpCisrKyBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi9jb250ZXh0LWZvci1sb2Nh
dGlvbi1hc3NpZ24tZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDIgKzEsMiBAQAot
ZG9jdW1lbnQucmVmZXJyZXIgPQorZG9jdW1lbnQucmVmZXJyZXIgPSBodHRwOi8vMTI3LjAuMC4x
OjgwMDAvc2VjdXJpdHkvZnJhbWVOYXZpZ2F0aW9uL2NvbnRleHQtZm9yLWxvY2F0aW9uLWFzc2ln
bi5odG1sCiAKSW5kZXg6IExheW91dFRlc3RzL2xvYWRlci9uYXZpZ2F0aW9uLXBvbGljeS9zaG91
bGQtb3Blbi1leHRlcm5hbC11cmxzL21haW4tZnJhbWUtbmF2aWdhdGVkLXByb2dyYW1hdGljYWxs
eS1ieS1zdWJmcmFtZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvbG9h
ZGVyL25hdmlnYXRpb24tcG9saWN5L3Nob3VsZC1vcGVuLWV4dGVybmFsLXVybHMvbWFpbi1mcmFt
ZS1uYXZpZ2F0ZWQtcHJvZ3JhbWF0aWNhbGx5LWJ5LXN1YmZyYW1lLWV4cGVjdGVkLnR4dAkocmV2
aXNpb24gMjgxMDI2KQorKysgTGF5b3V0VGVzdHMvbG9hZGVyL25hdmlnYXRpb24tcG9saWN5L3No
b3VsZC1vcGVuLWV4dGVybmFsLXVybHMvbWFpbi1mcmFtZS1uYXZpZ2F0ZWQtcHJvZ3JhbWF0aWNh
bGx5LWJ5LXN1YmZyYW1lLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMyw1ICszLDUg
QEAKICAtIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24KIDxOU1VSTFJlcXVlc3QgVVJM
IHByb2dyYW1hdGljYWxseS1uYXZpZ2F0ZS10by1ub3RpZnktZG9uZS10YXJnZXQtdG9wLmh0bWws
IG1haW4gZG9jdW1lbnQgVVJMIG1haW4tZnJhbWUtd2l0aC1zdWJmcmFtZS1wcm9ncmFtYXRpY2Fs
bHktbmF2aWdhdGVzLW1haW4uaHRtbCwgaHR0cCBtZXRob2QgR0VUPiBpcyBtYWluIGZyYW1lIC0g
bm8gc2hvdWxkIG9wZW4gVVJMcyBleHRlcm5hbGx5IC0gbm8KICAtIGRlY2lkZVBvbGljeUZvck5h
dmlnYXRpb25BY3Rpb24KLTxOU1VSTFJlcXVlc3QgVVJMIG5vdGlmeS1kb25lLmh0bWwsIG1haW4g
ZG9jdW1lbnQgVVJMIG5vdGlmeS1kb25lLmh0bWwsIGh0dHAgbWV0aG9kIEdFVD4gaXMgbWFpbiBm
cmFtZSAtIHllcyBzaG91bGQgb3BlbiBVUkxzIGV4dGVybmFsbHkgLSBubworPE5TVVJMUmVxdWVz
dCBVUkwgbm90aWZ5LWRvbmUuaHRtbCwgbWFpbiBkb2N1bWVudCBVUkwgbm90aWZ5LWRvbmUuaHRt
bCwgaHR0cCBtZXRob2QgR0VUPiBpcyBtYWluIGZyYW1lIC0geWVzIHNob3VsZCBvcGVuIFVSTHMg
ZXh0ZXJuYWxseSAtIHllcwogCkluZGV4OiBMYXlvdXRUZXN0cy9sb2FkZXIvbmF2aWdhdGlvbi1w
b2xpY3kvc2hvdWxkLW9wZW4tZXh0ZXJuYWwtdXJscy9tYWluLWZyYW1lLW5hdmlnYXRlZC1wcm9n
cmFtYXRpY2FsbHktYnktc3ViZnJhbWUtdmlhLW1ldGhvZC1leHBlY3RlZC50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvbG9hZGVyL25hdmlnYXRpb24tcG9saWN5L3Nob3VsZC1vcGVuLWV4
dGVybmFsLXVybHMvbWFpbi1mcmFtZS1uYXZpZ2F0ZWQtcHJvZ3JhbWF0aWNhbGx5LWJ5LXN1YmZy
YW1lLXZpYS1tZXRob2QtZXhwZWN0ZWQudHh0CShub25leGlzdGVudCkKKysrIExheW91dFRlc3Rz
L2xvYWRlci9uYXZpZ2F0aW9uLXBvbGljeS9zaG91bGQtb3Blbi1leHRlcm5hbC11cmxzL21haW4t
ZnJhbWUtbmF2aWdhdGVkLXByb2dyYW1hdGljYWxseS1ieS1zdWJmcmFtZS12aWEtbWV0aG9kLWV4
cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDcgQEAKKyAtIGRlY2lkZVBvbGlj
eUZvck5hdmlnYXRpb25BY3Rpb24KKzxOU1VSTFJlcXVlc3QgVVJMIHJlc291cmNlcy9tYWluLWZy
YW1lLXdpdGgtc3ViZnJhbWUtcHJvZ3JhbWF0aWNhbGx5LW5hdmlnYXRlcy1tYWluLXZpYS1tZXRo
b2QuaHRtbCwgbWFpbiBkb2N1bWVudCBVUkwgcmVzb3VyY2VzL21haW4tZnJhbWUtd2l0aC1zdWJm
cmFtZS1wcm9ncmFtYXRpY2FsbHktbmF2aWdhdGVzLW1haW4tdmlhLW1ldGhvZC5odG1sLCBodHRw
IG1ldGhvZCBHRVQ+IGlzIG1haW4gZnJhbWUgLSB5ZXMgc2hvdWxkIG9wZW4gVVJMcyBleHRlcm5h
bGx5IC0geWVzCisgLSBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uCis8TlNVUkxSZXF1
ZXN0IFVSTCBwcm9ncmFtYXRpY2FsbHktbmF2aWdhdGUtdG8tbm90aWZ5LWRvbmUtdGFyZ2V0LXRv
cC12aWEtbWV0aG9kLmh0bWwsIG1haW4gZG9jdW1lbnQgVVJMIG1haW4tZnJhbWUtd2l0aC1zdWJm
cmFtZS1wcm9ncmFtYXRpY2FsbHktbmF2aWdhdGVzLW1haW4tdmlhLW1ldGhvZC5odG1sLCBodHRw
IG1ldGhvZCBHRVQ+IGlzIG1haW4gZnJhbWUgLSBubyBzaG91bGQgb3BlbiBVUkxzIGV4dGVybmFs
bHkgLSBubworIC0gZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbgorPE5TVVJMUmVxdWVz
dCBVUkwgbm90aWZ5LWRvbmUuaHRtbCwgbWFpbiBkb2N1bWVudCBVUkwgbm90aWZ5LWRvbmUuaHRt
bCwgaHR0cCBtZXRob2QgR0VUPiBpcyBtYWluIGZyYW1lIC0geWVzIHNob3VsZCBvcGVuIFVSTHMg
ZXh0ZXJuYWxseSAtIHllcworCkluZGV4OiBMYXlvdXRUZXN0cy9sb2FkZXIvbmF2aWdhdGlvbi1w
b2xpY3kvc2hvdWxkLW9wZW4tZXh0ZXJuYWwtdXJscy9tYWluLWZyYW1lLW5hdmlnYXRlZC1wcm9n
cmFtYXRpY2FsbHktYnktc3ViZnJhbWUtdmlhLW1ldGhvZC5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2xvYWRlci9uYXZpZ2F0aW9uLXBvbGljeS9zaG91bGQtb3Blbi1leHRlcm5hbC11
cmxzL21haW4tZnJhbWUtbmF2aWdhdGVkLXByb2dyYW1hdGljYWxseS1ieS1zdWJmcmFtZS12aWEt
bWV0aG9kLmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvbG9hZGVyL25hdmlnYXRp
b24tcG9saWN5L3Nob3VsZC1vcGVuLWV4dGVybmFsLXVybHMvbWFpbi1mcmFtZS1uYXZpZ2F0ZWQt
cHJvZ3JhbWF0aWNhbGx5LWJ5LXN1YmZyYW1lLXZpYS1tZXRob2QuaHRtbAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDEzIEBACis8c2NyaXB0PgorCitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsK
KyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLmR1bXBQb2xpY3lE
ZWxlZ2F0ZUNhbGxiYWNrcygpOworICAgIHRlc3RSdW5uZXIucXVldWVMb2FkKCJyZXNvdXJjZXMv
bWFpbi1mcmFtZS13aXRoLXN1YmZyYW1lLXByb2dyYW1hdGljYWxseS1uYXZpZ2F0ZXMtbWFpbi12
aWEtbWV0aG9kLmh0bWwiLCAiIiwgdHJ1ZSk7Cit9CisKKzwvc2NyaXB0PgorVGhpcyBwYWdlIGhh
cyBkb2VzIG5vdCBoYXZlIHRoZSAic2hvdWxkIG9wZW4gZXh0ZXJuYWwgVVJMcyIgZmxhZyBzZXQu
PGJyPgorSXQgbmF2aWdhdGVzIHRvIGEgMm5kIHBhZ2UgdGhhdCBkb2VzIGhhdmUgdGhlIGZsYWcg
c2V0Ljxicj4KK1RoYXQgMm5kIHBhZ2UgY29udGFpbnMgYW4gaWZyYW1lIHdoaWNoIHByb2dyYW1h
dGljYWxseSBuYXZpZ2F0ZXMgdGhlIG1haW4gZnJhbWUgdG8gYSAzcmQgcGFnZS48YnI+CitUaGUg
InNob3VsZCBvcGVuIGV4dGVybmFsIFVSTHMiIGZsYWcgc2hvdWxkIGJlIHVuc2V0IGJlY2F1c2Ug
dGhlIHN1YmZyYW1lLT5tYWluIGZyYW1lIG5hdmlnYXRpb24gd2FzIHByb2dyYW1hdGljLjxicj4K
SW5kZXg6IExheW91dFRlc3RzL2xvYWRlci9uYXZpZ2F0aW9uLXBvbGljeS9zaG91bGQtb3Blbi1l
eHRlcm5hbC11cmxzL21haW4tZnJhbWUtbmF2aWdhdGVkLXByb2dyYW1hdGljYWxseS1ieS1zdWJm
cmFtZS13aXRob3V0LWZsYWctZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2xvYWRlci9uYXZpZ2F0aW9uLXBvbGljeS9zaG91bGQtb3Blbi1leHRlcm5hbC11cmxzL21haW4t
ZnJhbWUtbmF2aWdhdGVkLXByb2dyYW1hdGljYWxseS1ieS1zdWJmcmFtZS13aXRob3V0LWZsYWct
ZXhwZWN0ZWQudHh0CShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2xvYWRlci9uYXZpZ2F0
aW9uLXBvbGljeS9zaG91bGQtb3Blbi1leHRlcm5hbC11cmxzL21haW4tZnJhbWUtbmF2aWdhdGVk
LXByb2dyYW1hdGljYWxseS1ieS1zdWJmcmFtZS13aXRob3V0LWZsYWctZXhwZWN0ZWQudHh0CSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNyBAQAorIC0gZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlv
bkFjdGlvbgorPE5TVVJMUmVxdWVzdCBVUkwgcmVzb3VyY2VzL21haW4tZnJhbWUtd2l0aC1zdWJm
cmFtZS1wcm9ncmFtYXRpY2FsbHktbmF2aWdhdGVzLW1haW4uaHRtbCwgbWFpbiBkb2N1bWVudCBV
UkwgcmVzb3VyY2VzL21haW4tZnJhbWUtd2l0aC1zdWJmcmFtZS1wcm9ncmFtYXRpY2FsbHktbmF2
aWdhdGVzLW1haW4uaHRtbCwgaHR0cCBtZXRob2QgR0VUPiBpcyBtYWluIGZyYW1lIC0geWVzIHNo
b3VsZCBvcGVuIFVSTHMgZXh0ZXJuYWxseSAtIG5vCisgLSBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0
aW9uQWN0aW9uCis8TlNVUkxSZXF1ZXN0IFVSTCBwcm9ncmFtYXRpY2FsbHktbmF2aWdhdGUtdG8t
bm90aWZ5LWRvbmUtdGFyZ2V0LXRvcC5odG1sLCBtYWluIGRvY3VtZW50IFVSTCBtYWluLWZyYW1l
LXdpdGgtc3ViZnJhbWUtcHJvZ3JhbWF0aWNhbGx5LW5hdmlnYXRlcy1tYWluLmh0bWwsIGh0dHAg
bWV0aG9kIEdFVD4gaXMgbWFpbiBmcmFtZSAtIG5vIHNob3VsZCBvcGVuIFVSTHMgZXh0ZXJuYWxs
eSAtIG5vCisgLSBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uCis8TlNVUkxSZXF1ZXN0
IFVSTCBub3RpZnktZG9uZS5odG1sLCBtYWluIGRvY3VtZW50IFVSTCBub3RpZnktZG9uZS5odG1s
LCBodHRwIG1ldGhvZCBHRVQ+IGlzIG1haW4gZnJhbWUgLSB5ZXMgc2hvdWxkIG9wZW4gVVJMcyBl
eHRlcm5hbGx5IC0gbm8KKwpJbmRleDogTGF5b3V0VGVzdHMvbG9hZGVyL25hdmlnYXRpb24tcG9s
aWN5L3Nob3VsZC1vcGVuLWV4dGVybmFsLXVybHMvbWFpbi1mcmFtZS1uYXZpZ2F0ZWQtcHJvZ3Jh
bWF0aWNhbGx5LWJ5LXN1YmZyYW1lLXdpdGhvdXQtZmxhZy5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2xvYWRlci9uYXZpZ2F0aW9uLXBvbGljeS9zaG91bGQtb3Blbi1leHRlcm5hbC11
cmxzL21haW4tZnJhbWUtbmF2aWdhdGVkLXByb2dyYW1hdGljYWxseS1ieS1zdWJmcmFtZS13aXRo
b3V0LWZsYWcuaHRtbAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9sb2FkZXIvbmF2aWdh
dGlvbi1wb2xpY3kvc2hvdWxkLW9wZW4tZXh0ZXJuYWwtdXJscy9tYWluLWZyYW1lLW5hdmlnYXRl
ZC1wcm9ncmFtYXRpY2FsbHktYnktc3ViZnJhbWUtd2l0aG91dC1mbGFnLmh0bWwJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSwxMyBAQAorPHNjcmlwdD4KKworaWYgKHdpbmRvdy50ZXN0UnVubmVy
KSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci5kdW1wUG9s
aWN5RGVsZWdhdGVDYWxsYmFja3MoKTsKKyAgICB0ZXN0UnVubmVyLnF1ZXVlTG9hZCgicmVzb3Vy
Y2VzL21haW4tZnJhbWUtd2l0aC1zdWJmcmFtZS1wcm9ncmFtYXRpY2FsbHktbmF2aWdhdGVzLW1h
aW4uaHRtbCIpOworfQorCis8L3NjcmlwdD4KK1RoaXMgcGFnZSBoYXMgZG9lcyBub3QgaGF2ZSB0
aGUgInNob3VsZCBvcGVuIGV4dGVybmFsIFVSTHMiIGZsYWcgc2V0Ljxicj4KK0l0IG5hdmlnYXRl
cyB0byBhIDJuZCBwYWdlIHRoYXQgZG9lcyBoYXZlIHRoZSBmbGFnIHNldC48YnI+CitUaGF0IDJu
ZCBwYWdlIGNvbnRhaW5zIGFuIGlmcmFtZSB3aGljaCBwcm9ncmFtYXRpY2FsbHkgbmF2aWdhdGVz
IHRoZSBtYWluIGZyYW1lIHRvIGEgM3JkIHBhZ2UuPGJyPgorVGhlICJzaG91bGQgb3BlbiBleHRl
cm5hbCBVUkxzIiBmbGFnIHNob3VsZCBiZSB1bnNldCBiZWNhdXNlIHRoZSBzdWJmcmFtZS0+bWFp
biBmcmFtZSBuYXZpZ2F0aW9uIHdhcyBwcm9ncmFtYXRpYy48YnI+CkluZGV4OiBMYXlvdXRUZXN0
cy9sb2FkZXIvbmF2aWdhdGlvbi1wb2xpY3kvc2hvdWxkLW9wZW4tZXh0ZXJuYWwtdXJscy9yZXNv
dXJjZXMvbWFpbi1mcmFtZS13aXRoLXN1YmZyYW1lLXByb2dyYW1hdGljYWxseS1uYXZpZ2F0ZXMt
bWFpbi12aWEtbWV0aG9kLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvbG9hZGVyL25h
dmlnYXRpb24tcG9saWN5L3Nob3VsZC1vcGVuLWV4dGVybmFsLXVybHMvcmVzb3VyY2VzL21haW4t
ZnJhbWUtd2l0aC1zdWJmcmFtZS1wcm9ncmFtYXRpY2FsbHktbmF2aWdhdGVzLW1haW4tdmlhLW1l
dGhvZC5odG1sCShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2xvYWRlci9uYXZpZ2F0aW9u
LXBvbGljeS9zaG91bGQtb3Blbi1leHRlcm5hbC11cmxzL3Jlc291cmNlcy9tYWluLWZyYW1lLXdp
dGgtc3ViZnJhbWUtcHJvZ3JhbWF0aWNhbGx5LW5hdmlnYXRlcy1tYWluLXZpYS1tZXRob2QuaHRt
bAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDYgQEAKKzxzY3JpcHQ+CitpZiAod2luZG93LnRl
c3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Cis8L3NjcmlwdD4KKwor
PGlmcmFtZSBzcmM9InByb2dyYW1hdGljYWxseS1uYXZpZ2F0ZS10by1ub3RpZnktZG9uZS10YXJn
ZXQtdG9wLXZpYS1tZXRob2QuaHRtbCI+PC9pZnJhbWU+CkluZGV4OiBMYXlvdXRUZXN0cy9sb2Fk
ZXIvbmF2aWdhdGlvbi1wb2xpY3kvc2hvdWxkLW9wZW4tZXh0ZXJuYWwtdXJscy9yZXNvdXJjZXMv
cHJvZ3JhbWF0aWNhbGx5LW5hdmlnYXRlLXRvLW5vdGlmeS1kb25lLXRhcmdldC10b3AtdmlhLW1l
dGhvZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2xvYWRlci9uYXZpZ2F0aW9uLXBv
bGljeS9zaG91bGQtb3Blbi1leHRlcm5hbC11cmxzL3Jlc291cmNlcy9wcm9ncmFtYXRpY2FsbHkt
bmF2aWdhdGUtdG8tbm90aWZ5LWRvbmUtdGFyZ2V0LXRvcC12aWEtbWV0aG9kLmh0bWwJKG5vbmV4
aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvbG9hZGVyL25hdmlnYXRpb24tcG9saWN5L3Nob3VsZC1v
cGVuLWV4dGVybmFsLXVybHMvcmVzb3VyY2VzL3Byb2dyYW1hdGljYWxseS1uYXZpZ2F0ZS10by1u
b3RpZnktZG9uZS10YXJnZXQtdG9wLXZpYS1tZXRob2QuaHRtbAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDE0IEBACis8c2NyaXB0PgorCitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVz
dFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgCitmdW5jdGlvbiBsb2FkZWQoKQoreworICAg
IHdpbmRvdy50b3AubG9jYXRpb24ucmVwbGFjZSgibm90aWZ5LWRvbmUuaHRtbCIpOworfQorCis8
L3NjcmlwdD4KKzxib2R5IG9ubG9hZD0ibG9hZGVkKCk7Ij4KK1RoaXMgcGFnZSBkb2VzIGEgamF2
YXNjcmlwdCBjbGllbnQgcmVkaXJlY3QgdG8gbm90aWZ5LWRvbmUuaHRtbCBpbiB0aGUgbWFpbiBm
cmFtZS4KKzwvYm9keT4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>441758</attachid>
            <date>2021-10-19 11:04:06 -0700</date>
            <delta_ts>2021-10-19 14:11:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-229120-20211019190404.patch</filename>
            <type>text/plain</type>
            <size>90475</size>
            <attacher name="Alexey Shvayka">ashvayka</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI4NDQ2NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwMyBAQAorMjAyMS0xMC0xOSAgQWxleGV5
IFNodmF5a2EgIDxzaHZhaWthbGVzaEBnbWFpbC5jb20+CisKKyAgICAgICAgQWxsb3cgYSBzYW1l
LW9yaWdpbiA8aWZyYW1lPiB0byBwcm9ncmFtbWF0aWNhbGx5IG5hdmlnYXRlIGl0cyB0b3AgZnJh
bWUgdG8gYW4gZXh0ZXJuYWwgVVJMCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMjkxMjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBTaW5jZSB0aGUgaW50cm9kdWN0aW9uIG9mIFNob3VsZE9wZW5FeHRlcm5h
bFVSTHNQb2xpY3kgaW4gcjE4NTExMSwgaWZyYW1lcyB3ZXJlIGJhbm5lZCBmcm9tCisgICAgICAg
IHByb2dyYW1tYXRpY2FsbHkgKHdpdGhvdXQgYSB1c2VyIGdlc3R1cmUpIG5hdmlnYXRpbmcgdGhl
aXIgdG9wIGZyYW1lcyB0byBleHRlcm5hbCBVUkxzLgorCisgICAgICAgIEhvd2V2ZXIsIG9ubHkg
bmF2aWdhdGlvbiB2aWEgYGxvY2F0aW9uLmhyZWZgIHdhcyBkaXNhbGxvd2VkLiBMb2NhdGlvbiBt
ZXRob2RzIGxpa2UgcmVwbGFjZSgpCisgICAgICAgIGRpZCB3b3JrIGJlY2F1c2UgdGhleSBpbmNv
cnJlY3RseSBpbmZlcnJlZCB0aGUgaW5pdGlhdGluZyBkb2N1bWVudCwgd2hpY2ggd2FzIGZpeGVk
IGluIHIyODAyNTYKKyAgICAgICAgYnkgcGFzc2luZyBgSW5jdW1iZW50V2luZG93YCB0byBMb2Nh
dGlvbiBtZXRob2RzLgorCisgICAgICAgIFRoYXQgZml4IGJyb2tlIEZhY2VUaW1lIHdlYiBhcHAs
IHdoaWNoIGRlcGVuZGVkIG9uIGJlaGF2aW9yIHRoYXQgd2FzIGRlZW1lZCB1bmRlc2lyYWJsZS4K
KyAgICAgICAgVGhlcmUgaXMgbm8gcmVsaWFibGUgd2F5IHRvIGRldGVjdCBpZiBuYXZpZ2F0aW9u
IGlzIHRyaWdnZXJlZCBieSB0aGUgdG9wIGZyYW1lIG9yIGEgc2FtZS1vcmlnaW4KKyAgICAgICAg
PGlmcmFtZT47IGV2ZW4gd2l0aCBmaXhlZCBMb2NhdGlvbiBtZXRob2RzLCBmb3JjaW5nIHRoZSB0
b3AgZnJhbWUgdG8gbmF2aWdhdGUgdG8gZXh0ZXJuYWwgVVJMIGlzCisgICAgICAgIGFzIHNpbXBs
ZSBhcyBgdG9wLmV2YWwoImxvY2F0aW9uLmhyZWYgPSAuLi4iKWAuCisKKyAgICAgICAgVGhpcyBw
YXRjaCByZXZlcnRzIHIyODA4MjYgYW5kIG1ha2VzIGl0IGxlZ2FsIGZvciBzYW1lLW9yaWdpbiBp
ZnJhbWVzIHRvIG9wZW4gZXh0ZXJuYWwgVVJMcy4KKyAgICAgICAgTm8gYmVoYXZpb3IgY2hhbmdl
IGZvciBjcm9zcy1vcmlnaW4gaWZyYW1lcyBhcyBwcm92ZWQgYnkgdGhlICotY3Jvc3Mtb3JpZ2lu
Lmh0bWwgdGVzdC4KKworICAgICAgICBJbml0aWF0ZWRCeU1haW5GcmFtZSwgaW50cm9kdWNlZCBp
biByMjE5MTcwLCBiZWNhbWUgdW5uZWNlc3NhcnkgYWZ0ZXIgdGhpcyBjaGFuZ2UgYW5kCisgICAg
ICAgIHdhcyByZW1vdmVkLiBJbnN0ZWFkIG9mIHVzaW5nIGxleGljYWxGcmFtZUZyb21Db21tb25W
TSgpLCB3aGljaCBkaWRuJ3QgaGFuZGxlIG5hdmlnYXRpb24KKyAgICAgICAgdmlhIExvY2F0aW9u
IG1ldGhvZHMgY29ycmVjdGx5IChzZWUgKi12aWEtbWV0aG9kLmh0bWwgdGVzdHMpLCB3ZSBub3cg
cmVseSBvbiBpbml0aWF0aW5nCisgICAgICAgIGRvY3VtZW50LCBlbmFibGluZyBmdXJ0aGVyIHNp
bXBsaWZpY2F0aW9ucyB0byBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5VG9Qcm9wYWdhdGUo
KQorICAgICAgICBhbmQgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeVRvQXBwbHkoKS4KKwor
ICAgICAgICBBbHNvLCByZXBsYWNlcyAiYWN0aXZlIiB3aXRoICJpbmN1bWJlbnQiIGluIHZhcmlh
YmxlIG5hbWVzLgorCisgICAgICAgIFRlc3RzOiBodHRwL3Rlc3RzL25hdmlnYXRpb24tcG9saWN5
L21haW4tZnJhbWUtbmF2aWdhdGVkLXByb2dyYW1hdGljYWxseS1ieS1zdWJmcmFtZS1jcm9zcy1v
cmlnaW4uaHRtbAorICAgICAgICAgICAgICAgbG9hZGVyL25hdmlnYXRpb24tcG9saWN5L3Nob3Vs
ZC1vcGVuLWV4dGVybmFsLXVybHMvbWFpbi1mcmFtZS1uYXZpZ2F0ZWQtcHJvZ3JhbWF0aWNhbGx5
LWJ5LXN1YmZyYW1lLXZpYS1tZXRob2QuaHRtbAorICAgICAgICAgICAgICAgbG9hZGVyL25hdmln
YXRpb24tcG9saWN5L3Nob3VsZC1vcGVuLWV4dGVybmFsLXVybHMvbWFpbi1mcmFtZS1uYXZpZ2F0
ZWQtcHJvZ3JhbWF0aWNhbGx5LWJ5LXN1YmZyYW1lLXdpdGhvdXQtZmxhZy5odG1sCisgICAgICAg
ICAgICAgICBsb2FkZXIvbmF2aWdhdGlvbi1wb2xpY3kvc2hvdWxkLW9wZW4tZXh0ZXJuYWwtdXJs
cy9tYWluLWZyYW1lLW5hdmlnYXRlZC1wcm9ncmFtYXRpY2FsbHktYnktc3ViZnJhbWUuaHRtbAor
ICAgICAgICAgICAgICAgbG9hZGVyL25hdmlnYXRpb24tcG9saWN5L3Nob3VsZC1vcGVuLWV4dGVy
bmFsLXVybHMvc3ViZnJhbWUtbmF2aWdhdGVkLXByb2dyYW1hdGljYWxseS1ieS1tYWluLWZyYW1l
LW5vLXRvcENhbGxGcmFtZS5odG1sCisgICAgICAgICAgICAgICBsb2FkZXIvbmF2aWdhdGlvbi1w
b2xpY3kvc2hvdWxkLW9wZW4tZXh0ZXJuYWwtdXJscy9zdWJmcmFtZS1uYXZpZ2F0ZWQtcHJvZ3Jh
bWF0aWNhbGx5LWJ5LW1haW4tZnJhbWUtdmlhLW1ldGhvZC5odG1sCisKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9Db21tb25WTS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpsZXhpY2FsRnJhbWVGcm9t
Q29tbW9uVk0pOiBEZWxldGVkLgorICAgICAgICAqIGJpbmRpbmdzL2pzL0NvbW1vblZNLmg6Cisg
ICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6b3BlblVSTEV4dGVy
bmFsbHkpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6bmF2aWdhdGUpOgorICAg
ICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudExvYWRlcjo6c2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeVRvUHJvcGFnYXRlIGNvbnN0
KToKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGcmFtZUxvYWRSZXF1ZXN0OjpGcmFtZUxvYWRSZXF1ZXN0KToKKyAgICAgICAgKiBsb2Fk
ZXIvRnJhbWVMb2FkUmVxdWVzdC5oOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkUmVxdWVz
dDo6RnJhbWVMb2FkUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRSZXF1ZXN0
Ojppbml0aWF0ZWRCeU1haW5GcmFtZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogbG9hZGVy
L0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpjaGFuZ2VM
b2NhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9hZFVSTEludG9DaGls
ZEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3lU
b0FwcGx5KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkVVJMKToKKyAgICAg
ICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1l
TG9hZGVyOjpsb2FkV2l0aE5hdmlnYXRpb25BY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6RnJh
bWVMb2FkZXI6OmxvYWRXaXRoRG9jdW1lbnRMb2FkZXIpOgorICAgICAgICAoV2ViQ29yZTo6RnJh
bWVMb2FkZXI6OnJlbG9hZFdpdGhPdmVycmlkZUVuY29kaW5nKToKKyAgICAgICAgKFdlYkNvcmU6
OkZyYW1lTG9hZGVyOjpyZWxvYWQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6Omxv
YWRQb3N0UmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6Y29udGludWVM
b2FkQWZ0ZXJOZXdXaW5kb3dQb2xpY3kpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6
OmxvYWREaWZmZXJlbnREb2N1bWVudEl0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlV2lu
ZG93KToKKyAgICAgICAgKFdlYkNvcmU6OmFwcGx5U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGlj
eVRvTmV3RG9jdW1lbnRMb2FkZXIpOiBEZWxldGVkLgorICAgICAgICAqIGxvYWRlci9GcmFtZUxv
YWRlclR5cGVzLmg6CisgICAgICAgICogbG9hZGVyL05hdmlnYXRpb25BY3Rpb24uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TmF2aWdhdGlvbkFjdGlvbjo6TmF2aWdhdGlvbkFjdGlvbik6CisgICAg
ICAgICogbG9hZGVyL05hdmlnYXRpb25BY3Rpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6Ok5hdmln
YXRpb25BY3Rpb246OmluaXRpYXRlZEJ5TWFpbkZyYW1lIGNvbnN0KToKKyAgICAgICAgKiBsb2Fk
ZXIvTmF2aWdhdGlvblNjaGVkdWxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY2hlZHVsZWRO
YXZpZ2F0aW9uOjpTY2hlZHVsZWROYXZpZ2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNjaGVk
dWxlZE5hdmlnYXRpb246OmNsZWFyVXNlckdlc3R1cmUpOgorICAgICAgICAoV2ViQ29yZTo6Y2hv
b3NlVGhlTW9zdFBlcm1pc3NpdmVFeHRlcm5hbFVSTHNQb2xpY3kpOgorICAgICAgICAoV2ViQ29y
ZTo6Y29tcHV0ZUV4dGVybmFsVVJMc1BvbGljeUZvclNhbWVPcmlnaW5OYXZpZ2F0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjaGVkdWxlZFVSTE5hdmlnYXRpb246OlNjaGVkdWxlZFVSTE5hdmln
YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2NoZWR1bGVkVVJMTmF2aWdhdGlvbjo6c2hvdWxk
T3BlbkV4dGVybmFsVVJMcyk6CisgICAgICAgIChXZWJDb3JlOjpTY2hlZHVsZWRGb3JtU3VibWlz
c2lvbjo6U2NoZWR1bGVkRm9ybVN1Ym1pc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdh
dGlvblNjaGVkdWxlcjo6c2NoZWR1bGVMb2NhdGlvbkNoYW5nZSk6CisgICAgICAgIChXZWJDb3Jl
OjpTY2hlZHVsZWROYXZpZ2F0aW9uOjpzaG91bGRPcGVuRXh0ZXJuYWxVUkxzIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNjaGVkdWxlZE5hdmlnYXRpb246OmluaXRpYXRlZEJ5
TWFpbkZyYW1lIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBsb2FkZXIvUG9saWN5Q2hlY2tl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6UG9saWN5Q2hlY2tlcjo6Y2hl
Y2tOYXZpZ2F0aW9uUG9saWN5KToKKyAgICAgICAgKiBwYWdlL0NvbnRleHRNZW51Q29udHJvbGxl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpvcGVuTmV3V2luZG93KToKKyAgICAgICAgKFdlYkNv
cmU6OkNvbnRleHRNZW51Q29udHJvbGxlcjo6Y29udGV4dE1lbnVJdGVtU2VsZWN0ZWQpOgorICAg
ICAgICAqIHBhZ2UvRE9NV2luZG93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6
c2V0TG9jYXRpb24pOgorICAgICAgICBSZW1vdmUgRklYTUUgYXMgY2FuTmF2aWdhdGUoKSByZXR1
cm5pbmcgYHRydWVgIGd1YXJhbnRlZXMgaXRzIGNvbnRleHQgaGFzIG5vbi1udWxsIGZyYW1lKCku
CisKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6Y3JlYXRlV2luZG93KToKKyAgICAgICAg
KiBwYWdlL0RPTVdpbmRvdy5oOgorICAgICAgICAqIHBhZ2UvTG9jYXRpb24uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TG9jYXRpb246OmFzc2lnbik6CisgICAgICAgIChXZWJDb3JlOjpMb2NhdGlv
bjo6cmVwbGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpMb2NhdGlvbjo6cmVsb2FkKToKKyAgICAg
ICAgKiBwYWdlL0xvY2F0aW9uLmg6CisgICAgICAgICogcGFnZS9Mb2NhdGlvbi5pZGw6CisKIDIw
MjEtMTAtMTkgIEFudG9pbmUgUXVpbnQgIDxncmFvdXRzQHdlYmtpdC5vcmc+CiAKICAgICAgICAg
UkVHUkVTU0lPTihyMjg0MzEzKTogOjptYXJrZXIgYWNjZWxlcmF0ZWQgYW5pbWF0aW9ucyBhcmUg
YnJva2VuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Db21tb25WTS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQ29tbW9uVk0uY3BwCShyZXZp
c2lvbiAyODQ0NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Db21tb25WTS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTc4LDIwICs3OCw2IEBAIEpTQzo6Vk0mIGNvbW1vblZNU2xvdygp
CiAgICAgcmV0dXJuIHZtOwogfQogCi1GcmFtZSogbGV4aWNhbEZyYW1lRnJvbUNvbW1vblZNKCkK
LXsKLSAgICBKU0M6OlZNJiB2bSA9IGNvbW1vblZNKCk7Ci0gICAgaWYgKGF1dG8qIHRvcENhbGxG
cmFtZSA9IHZtLnRvcENhbGxGcmFtZSkgewotICAgICAgICBpZiAoYXV0byogZ2xvYmFsT2JqZWN0
ID0gSlNDOjpqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPih0b3BDYWxsRnJhbWUtPmxleGljYWxH
bG9iYWxPYmplY3Qodm0pKSkgewotICAgICAgICAgICAgaWYgKGF1dG8qIHdpbmRvdyA9IEpTQzo6
anNEeW5hbWljQ2FzdDxKU0RPTVdpbmRvdyo+KHZtLCBnbG9iYWxPYmplY3QpKSB7Ci0gICAgICAg
ICAgICAgICAgaWYgKGF1dG8qIGZyYW1lID0gd2luZG93LT53cmFwcGVkKCkuZnJhbWUoKSkKLSAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIGZyYW1lOwotICAgICAgICAgICAgfQotICAgICAgICB9
Ci0gICAgfQotICAgIHJldHVybiBudWxscHRyOwotfQotCiB2b2lkIGFkZEltcHVyZVByb3BlcnR5
KGNvbnN0IEF0b21TdHJpbmcmIHByb3BlcnR5TmFtZSkKIHsKICAgICBjb21tb25WTSgpLmFkZElt
cHVyZVByb3BlcnR5KHByb3BlcnR5TmFtZS5pbXBsKCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvQ29tbW9uVk0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9Db21tb25WTS5oCShyZXZpc2lvbiAyODQ0NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9Db21tb25WTS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw5ICszMyw2IEBAIGNs
YXNzIFZNOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEZyYW1lOwotRnJhbWUqIGxl
eGljYWxGcmFtZUZyb21Db21tb25WTSgpOwotCiBXRUJDT1JFX0VYUE9SVCBleHRlcm4gSlNDOjpW
TSogZ19jb21tb25WTU9yTnVsbDsKIAogV0VCQ09SRV9FWFBPUlQgSlNDOjpWTSYgY29tbW9uVk1T
bG93KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRD
bGllbnRMb2NhbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuY3BwCShyZXZpc2lvbiAyODQ0NjcpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI2Nyw3ICsyNjcsNyBAQCB2b2lkIEluc3BlY3RvckZyb250ZW5kQ2xp
ZW50TG9jYWw6Om9wZW5VCiB7CiAgICAgVXNlckdlc3R1cmVJbmRpY2F0b3IgaW5kaWNhdG9yIHsg
UHJvY2Vzc2luZ1VzZXJHZXN0dXJlIH07CiAgICAgRnJhbWUmIG1haW5GcmFtZSA9IG1faW5zcGVj
dGVkUGFnZUNvbnRyb2xsZXItPmluc3BlY3RlZFBhZ2UoKS5tYWluRnJhbWUoKTsKLSAgICBGcmFt
ZUxvYWRSZXF1ZXN0IGZyYW1lTG9hZFJlcXVlc3QgeyAqbWFpbkZyYW1lLmRvY3VtZW50KCksIG1h
aW5GcmFtZS5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLCB7IH0sICJfYmxhbmsiX3MsIElu
aXRpYXRlZEJ5TWFpbkZyYW1lOjpVbmtub3duIH07CisgICAgRnJhbWVMb2FkUmVxdWVzdCBmcmFt
ZUxvYWRSZXF1ZXN0IHsgKm1haW5GcmFtZS5kb2N1bWVudCgpLCBtYWluRnJhbWUuZG9jdW1lbnQo
KS0+c2VjdXJpdHlPcmlnaW4oKSwgeyB9LCAiX2JsYW5rIl9zIH07CiAKICAgICBib29sIGNyZWF0
ZWQ7CiAgICAgV2luZG93RmVhdHVyZXMgZmVhdHVyZXM7CkBAIC0yODAsNyArMjgwLDcgQEAgdm9p
ZCBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjpvcGVuVQogCiAgICAgLy8gRklYTUU6IFdo
eSBkbyB3ZSBjb21wdXRlIHRoZSBhYnNvbHV0ZSBVUkwgd2l0aCByZXNwZWN0IHRvIHxmcmFtZXwg
aW5zdGVhZCBvZiB8bWFpbkZyYW1lfD8KICAgICBSZXNvdXJjZVJlcXVlc3QgcmVzb3VyY2VSZXF1
ZXN0IHsgZnJhbWUtPmRvY3VtZW50KCktPmNvbXBsZXRlVVJMKHVybCkgfTsKLSAgICBGcmFtZUxv
YWRSZXF1ZXN0IGZyYW1lTG9hZFJlcXVlc3QyIHsgKm1haW5GcmFtZS5kb2N1bWVudCgpLCBtYWlu
RnJhbWUuZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSwgV1RGTW92ZShyZXNvdXJjZVJlcXVl
c3QpLCAiX3NlbGYiX3MsIEluaXRpYXRlZEJ5TWFpbkZyYW1lOjpVbmtub3duIH07CisgICAgRnJh
bWVMb2FkUmVxdWVzdCBmcmFtZUxvYWRSZXF1ZXN0MiB7ICptYWluRnJhbWUuZG9jdW1lbnQoKSwg
bWFpbkZyYW1lLmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCksIFdURk1vdmUocmVzb3VyY2VS
ZXF1ZXN0KSwgIl9zZWxmIl9zIH07CiAgICAgZnJhbWUtPmxvYWRlcigpLmNoYW5nZUxvY2F0aW9u
KFdURk1vdmUoZnJhbWVMb2FkUmVxdWVzdDIpKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcAkocmV2
aXNpb24gMjg0NDY3KQorKysgU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JQYWdlQWdlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MTMsNyArNDEzLDcgQEAgUHJvdG9j
b2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gSW5zcGVjdG9yUAogICAgIEZyYW1lJiBmcmFtZSA9IG1f
aW5zcGVjdGVkUGFnZS5tYWluRnJhbWUoKTsKIAogICAgIFJlc291cmNlUmVxdWVzdCByZXNvdXJj
ZVJlcXVlc3QgeyBmcmFtZS5kb2N1bWVudCgpLT5jb21wbGV0ZVVSTCh1cmwpIH07Ci0gICAgRnJh
bWVMb2FkUmVxdWVzdCBmcmFtZUxvYWRSZXF1ZXN0IHsgKmZyYW1lLmRvY3VtZW50KCksIGZyYW1l
LmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCksIFdURk1vdmUocmVzb3VyY2VSZXF1ZXN0KSwg
Il9zZWxmIl9zLCBJbml0aWF0ZWRCeU1haW5GcmFtZTo6VW5rbm93biB9OworICAgIEZyYW1lTG9h
ZFJlcXVlc3QgZnJhbWVMb2FkUmVxdWVzdCB7ICpmcmFtZS5kb2N1bWVudCgpLCBmcmFtZS5kb2N1
bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLCBXVEZNb3ZlKHJlc291cmNlUmVxdWVzdCksICJfc2Vs
ZiJfcyB9OwogICAgIGZyYW1lTG9hZFJlcXVlc3QuZGlzYWJsZU5hdmlnYXRpb25Ub0ludmFsaWRV
UkwoKTsKICAgICBmcmFtZS5sb2FkZXIoKS5jaGFuZ2VMb2NhdGlvbihXVEZNb3ZlKGZyYW1lTG9h
ZFJlcXVlc3QpKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIu
Y3BwCShyZXZpc2lvbiAyODQ0NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRM
b2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzMyLDE2ICsyMzMyLDcgQEAgdm9pZCBEb2N1
bWVudExvYWRlcjo6c2V0VHJpZ2dlcmluZ0FjdGlvbgogCiBTaG91bGRPcGVuRXh0ZXJuYWxVUkxz
UG9saWN5IERvY3VtZW50TG9hZGVyOjpzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5VG9Qcm9w
YWdhdGUoKSBjb25zdAogewotICAgIGlmICghbV9mcmFtZSkKLSAgICAgICAgcmV0dXJuIFNob3Vs
ZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNob3VsZE5vdEFsbG93OwotCi0gICAgaWYgKG1fZnJh
bWUtPmlzTWFpbkZyYW1lKCkpCi0gICAgICAgIHJldHVybiBtX3Nob3VsZE9wZW5FeHRlcm5hbFVS
THNQb2xpY3k7Ci0KLSAgICBpZiAoZG9jdW1lbnQoKSAmJiBkb2N1bWVudCgpLT5pc1NhbWVPcmln
aW5Bc1RvcERvY3VtZW50KCkpCi0gICAgICAgIHJldHVybiBtX3Nob3VsZE9wZW5FeHRlcm5hbFVS
THNQb2xpY3k7Ci0KLSAgICByZXR1cm4gU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTo6U2hv
dWxkTm90QWxsb3c7CisgICAgcmV0dXJuIG1fc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTsK
IH0KIAogdm9pZCBEb2N1bWVudExvYWRlcjo6YmVjb21lTWFpblJlc291cmNlQ2xpZW50KCkKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRSZXF1ZXN0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkUmVxdWVzdC5jcHAJKHJldmlzaW9u
IDI4NDQ2NykKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRSZXF1ZXN0LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzcsMTMgKzM3LDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotRnJhbWVMb2FkUmVxdWVzdDo6RnJhbWVMb2FkUmVxdWVzdChEb2N1bWVudCYgcmVxdWVzdGVy
LCBTZWN1cml0eU9yaWdpbiYgcmVxdWVzdGVyU2VjdXJpdHlPcmlnaW4sIFJlc291cmNlUmVxdWVz
dCYmIHJlc291cmNlUmVxdWVzdCwgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIEluaXRpYXRlZEJ5
TWFpbkZyYW1lIGluaXRpYXRlZEJ5TWFpbkZyYW1lLCBjb25zdCBBdG9tU3RyaW5nJiBkb3dubG9h
ZEF0dHJpYnV0ZSwgY29uc3QgU3lzdGVtUHJldmlld0luZm8mIHN5c3RlbVByZXZpZXdJbmZvKQor
RnJhbWVMb2FkUmVxdWVzdDo6RnJhbWVMb2FkUmVxdWVzdChEb2N1bWVudCYgcmVxdWVzdGVyLCBT
ZWN1cml0eU9yaWdpbiYgcmVxdWVzdGVyU2VjdXJpdHlPcmlnaW4sIFJlc291cmNlUmVxdWVzdCYm
IHJlc291cmNlUmVxdWVzdCwgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIGNvbnN0IEF0b21TdHJp
bmcmIGRvd25sb2FkQXR0cmlidXRlLCBjb25zdCBTeXN0ZW1QcmV2aWV3SW5mbyYgc3lzdGVtUHJl
dmlld0luZm8pCiAgICAgOiBtX3JlcXVlc3RlciB7IHJlcXVlc3RlciB9CiAgICAgLCBtX3JlcXVl
c3RlclNlY3VyaXR5T3JpZ2luIHsgcmVxdWVzdGVyU2VjdXJpdHlPcmlnaW4gfQogICAgICwgbV9y
ZXNvdXJjZVJlcXVlc3QgeyBXVEZNb3ZlKHJlc291cmNlUmVxdWVzdCkgfQogICAgICwgbV9mcmFt
ZU5hbWUgeyBmcmFtZU5hbWUgfQogICAgICwgbV9kb3dubG9hZEF0dHJpYnV0ZSB7IGRvd25sb2Fk
QXR0cmlidXRlIH0KLSAgICAsIG1faW5pdGlhdGVkQnlNYWluRnJhbWUgeyBpbml0aWF0ZWRCeU1h
aW5GcmFtZSB9CiAgICAgLCBtX3N5c3RlbVByZXZpZXdJbmZvIHsgc3lzdGVtUHJldmlld0luZm8g
fQogewogfQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZFJlcXVlc3QuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkUmVxdWVzdC5oCShy
ZXZpc2lvbiAyODQ0NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkUmVxdWVz
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0MCw3IEBAIGNsYXNzIFNlY3VyaXR5T3JpZ2lu
OwogCiBjbGFzcyBGcmFtZUxvYWRSZXF1ZXN0IHsKIHB1YmxpYzoKLSAgICBXRUJDT1JFX0VYUE9S
VCBGcmFtZUxvYWRSZXF1ZXN0KERvY3VtZW50JiwgU2VjdXJpdHlPcmlnaW4mLCBSZXNvdXJjZVJl
cXVlc3QmJiwgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIEluaXRpYXRlZEJ5TWFpbkZyYW1lLCBj
b25zdCBBdG9tU3RyaW5nJiBkb3dubG9hZEF0dHJpYnV0ZSA9IHsgfSwgY29uc3QgU3lzdGVtUHJl
dmlld0luZm8mID0geyB9KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBGcmFtZUxvYWRSZXF1ZXN0KERv
Y3VtZW50JiwgU2VjdXJpdHlPcmlnaW4mLCBSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgU3RyaW5n
JiBmcmFtZU5hbWUsIGNvbnN0IEF0b21TdHJpbmcmIGRvd25sb2FkQXR0cmlidXRlID0geyB9LCBj
b25zdCBTeXN0ZW1QcmV2aWV3SW5mbyYgPSB7IH0pOwogICAgIFdFQkNPUkVfRVhQT1JUIEZyYW1l
TG9hZFJlcXVlc3QoRnJhbWUmLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBTdWJzdGl0
dXRlRGF0YSYgPSBTdWJzdGl0dXRlRGF0YSgpKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIH5GcmFt
ZUxvYWRSZXF1ZXN0KCk7CkBAIC05Nyw4ICs5Nyw2IEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IEF0
b21TdHJpbmcmIGRvd25sb2FkQXR0cmlidXRlKCkgY29uc3QgeyByZXR1cm4gbV9kb3dubG9hZEF0
dHJpYnV0ZTsgfQogCi0gICAgSW5pdGlhdGVkQnlNYWluRnJhbWUgaW5pdGlhdGVkQnlNYWluRnJh
bWUoKSBjb25zdCB7IHJldHVybiBtX2luaXRpYXRlZEJ5TWFpbkZyYW1lOyB9Ci0KICAgICBib29s
IGlzU3lzdGVtUHJldmlldygpIGNvbnN0IHsgcmV0dXJuIG1fc3lzdGVtUHJldmlld0luZm8uaXNQ
cmV2aWV3OyB9CiAgICAgY29uc3QgU3lzdGVtUHJldmlld0luZm8mIHN5c3RlbVByZXZpZXdJbmZv
KCkgY29uc3QgeyByZXR1cm4gbV9zeXN0ZW1QcmV2aWV3SW5mbzsgfQogCkBAIC0xMjMsNyArMTIx
LDYgQEAgcHJpdmF0ZToKICAgICBTaG91bGRSZXBsYWNlRG9jdW1lbnRJZkphdmFTY3JpcHRVUkwg
bV9zaG91bGRSZXBsYWNlRG9jdW1lbnRJZkphdmFTY3JpcHRVUkwgeyBSZXBsYWNlRG9jdW1lbnRJ
ZkphdmFTY3JpcHRVUkwgfTsKICAgICBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IG1fc2hv
dWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSB7IFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6
OlNob3VsZE5vdEFsbG93IH07CiAgICAgQXRvbVN0cmluZyBtX2Rvd25sb2FkQXR0cmlidXRlOwot
ICAgIEluaXRpYXRlZEJ5TWFpbkZyYW1lIG1faW5pdGlhdGVkQnlNYWluRnJhbWUgeyBJbml0aWF0
ZWRCeU1haW5GcmFtZTo6VW5rbm93biB9OwogICAgIFN5c3RlbVByZXZpZXdJbmZvIG1fc3lzdGVt
UHJldmlld0luZm87CiAgICAgYm9vbCBtX2lzUmVxdWVzdEZyb21DbGllbnRPclVzZXJJbnB1dCB7
IGZhbHNlIH07CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCShy
ZXZpc2lvbiAyODQ0NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00MjcsMTEgKzQyNyw4IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmNo
ZWNrQ29udGVudFBvbGljeShjb24KIAogdm9pZCBGcmFtZUxvYWRlcjo6Y2hhbmdlTG9jYXRpb24o
Y29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcGFzc2VkVGFyZ2V0LCBFdmVudCogdHJpZ2dl
cmluZ0V2ZW50LCBjb25zdCBSZWZlcnJlclBvbGljeSYgcmVmZXJyZXJQb2xpY3ksIFNob3VsZE9w
ZW5FeHRlcm5hbFVSTHNQb2xpY3kgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSwgc3RkOjpv
cHRpb25hbDxOZXdGcmFtZU9wZW5lclBvbGljeT4gb3BlbmVyUG9saWN5LCBjb25zdCBBdG9tU3Ry
aW5nJiBkb3dubG9hZEF0dHJpYnV0ZSwgY29uc3QgU3lzdGVtUHJldmlld0luZm8mIHN5c3RlbVBy
ZXZpZXdJbmZvLCBzdGQ6Om9wdGlvbmFsPFByaXZhdGVDbGlja01lYXN1cmVtZW50PiYmIHByaXZh
dGVDbGlja01lYXN1cmVtZW50KQogewotICAgIGF1dG8qIGZyYW1lID0gbGV4aWNhbEZyYW1lRnJv
bUNvbW1vblZNKCk7Ci0gICAgYXV0byBpbml0aWF0ZWRCeU1haW5GcmFtZSA9IGZyYW1lICYmIGZy
YW1lLT5pc01haW5GcmFtZSgpID8gSW5pdGlhdGVkQnlNYWluRnJhbWU6OlllcyA6IEluaXRpYXRl
ZEJ5TWFpbkZyYW1lOjpVbmtub3duOwotCiAgICAgTmV3RnJhbWVPcGVuZXJQb2xpY3kgbmV3RnJh
bWVPcGVuZXJQb2xpY3kgPSBvcGVuZXJQb2xpY3kudmFsdWVfb3IocmVmZXJyZXJQb2xpY3kgPT0g
UmVmZXJyZXJQb2xpY3k6Ok5vUmVmZXJyZXIgPyBOZXdGcmFtZU9wZW5lclBvbGljeTo6U3VwcHJl
c3MgOiBOZXdGcmFtZU9wZW5lclBvbGljeTo6QWxsb3cpOwotICAgIEZyYW1lTG9hZFJlcXVlc3Qg
ZnJhbWVMb2FkUmVxdWVzdCgqbV9mcmFtZS5kb2N1bWVudCgpLCBtX2ZyYW1lLmRvY3VtZW50KCkt
PnNlY3VyaXR5T3JpZ2luKCksIHsgdXJsIH0sIHBhc3NlZFRhcmdldCwgaW5pdGlhdGVkQnlNYWlu
RnJhbWUsIGRvd25sb2FkQXR0cmlidXRlLCBzeXN0ZW1QcmV2aWV3SW5mbyk7CisgICAgRnJhbWVM
b2FkUmVxdWVzdCBmcmFtZUxvYWRSZXF1ZXN0KCptX2ZyYW1lLmRvY3VtZW50KCksIG1fZnJhbWUu
ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSwgeyB1cmwgfSwgcGFzc2VkVGFyZ2V0LCBkb3du
bG9hZEF0dHJpYnV0ZSwgc3lzdGVtUHJldmlld0luZm8pOwogICAgIGZyYW1lTG9hZFJlcXVlc3Qu
c2V0TmV3RnJhbWVPcGVuZXJQb2xpY3kobmV3RnJhbWVPcGVuZXJQb2xpY3kpOwogICAgIGZyYW1l
TG9hZFJlcXVlc3Quc2V0UmVmZXJyZXJQb2xpY3kocmVmZXJyZXJQb2xpY3kpOwogICAgIGZyYW1l
TG9hZFJlcXVlc3Quc2V0U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeShzaG91bGRPcGVuRXh0
ZXJuYWxVUkxzUG9saWN5KTsKQEAgLTk4MiwxMCArOTc5LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6
bG9hZFVSTEludG9DaGlsZEZyYW1lKAogICAgICAgICB9CiAgICAgfQogCi0gICAgYXV0byogbGV4
aWNhbEZyYW1lID0gbGV4aWNhbEZyYW1lRnJvbUNvbW1vblZNKCk7Ci0gICAgYXV0byBpbml0aWF0
ZWRCeU1haW5GcmFtZSA9IGxleGljYWxGcmFtZSAmJiBsZXhpY2FsRnJhbWUtPmlzTWFpbkZyYW1l
KCkgPyBJbml0aWF0ZWRCeU1haW5GcmFtZTo6WWVzIDogSW5pdGlhdGVkQnlNYWluRnJhbWU6OlVu
a25vd247Ci0KLSAgICBGcmFtZUxvYWRSZXF1ZXN0IGZyYW1lTG9hZFJlcXVlc3QgeyAqbV9mcmFt
ZS5kb2N1bWVudCgpLCBtX2ZyYW1lLmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCksIHsgdXJs
IH0sICJfc2VsZiJfcywgaW5pdGlhdGVkQnlNYWluRnJhbWUgfTsKKyAgICBGcmFtZUxvYWRSZXF1
ZXN0IGZyYW1lTG9hZFJlcXVlc3QgeyAqbV9mcmFtZS5kb2N1bWVudCgpLCBtX2ZyYW1lLmRvY3Vt
ZW50KCktPnNlY3VyaXR5T3JpZ2luKCksIHsgdXJsIH0sICJfc2VsZiJfcyB9OwogICAgIGZyYW1l
TG9hZFJlcXVlc3Quc2V0TmV3RnJhbWVPcGVuZXJQb2xpY3koTmV3RnJhbWVPcGVuZXJQb2xpY3k6
OlN1cHByZXNzKTsKICAgICBmcmFtZUxvYWRSZXF1ZXN0LnNldExvY2tCYWNrRm9yd2FyZExpc3Qo
TG9ja0JhY2tGb3J3YXJkTGlzdDo6WWVzKTsKICAgICBjaGlsZEZyYW1lLT5sb2FkZXIoKS5sb2Fk
VVJMKFdURk1vdmUoZnJhbWVMb2FkUmVxdWVzdCksIHJlZmVyZXIsIEZyYW1lTG9hZFR5cGU6OlJl
ZGlyZWN0V2l0aExvY2tlZEJhY2tGb3J3YXJkTGlzdCwgbnVsbHB0ciwgeyB9LCBzdGQ6Om51bGxv
cHQsIFtdIHsgfSk7CkBAIC0xMjg5LDM1ICsxMjgzLDE0IEBAIHZvaWQgRnJhbWVMb2FkZXI6Omxv
YWRGcmFtZVJlcXVlc3QoRnJhbWUKICAgICAgICAgbG9hZFVSTChXVEZNb3ZlKHJlcXVlc3QpLCBy
ZWZlcnJlciwgbG9hZFR5cGUsIGV2ZW50LCBXVEZNb3ZlKGZvcm1TdGF0ZSksIFdURk1vdmUocHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAK
LXN0YXRpYyBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IHNob3VsZE9wZW5FeHRlcm5hbFVS
THNQb2xpY3lUb0FwcGx5KEZyYW1lJiBjdXJyZW50RnJhbWUsIEluaXRpYXRlZEJ5TWFpbkZyYW1l
IGluaXRpYXRlZEJ5TWFpbkZyYW1lLCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IHByb3Bh
Z2F0ZWRQb2xpY3kpCitzdGF0aWMgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSBzaG91bGRP
cGVuRXh0ZXJuYWxVUkxzUG9saWN5VG9BcHBseShTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5
IHByb3BhZ2F0ZWRQb2xpY3kpCiB7CiAgICAgaWYgKFVzZXJHZXN0dXJlSW5kaWNhdG9yOjpwcm9j
ZXNzaW5nVXNlckdlc3R1cmUoKSkKICAgICAgICAgcmV0dXJuIFNob3VsZE9wZW5FeHRlcm5hbFVS
THNQb2xpY3k6OlNob3VsZEFsbG93OwogCi0gICAgaWYgKGluaXRpYXRlZEJ5TWFpbkZyYW1lID09
IEluaXRpYXRlZEJ5TWFpbkZyYW1lOjpZZXMpCi0gICAgICAgIHJldHVybiBwcm9wYWdhdGVkUG9s
aWN5OwotCi0gICAgaWYgKCFjdXJyZW50RnJhbWUuaXNNYWluRnJhbWUoKSkKLSAgICAgICAgcmV0
dXJuIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNob3VsZE5vdEFsbG93OwotCiAgICAg
cmV0dXJuIHByb3BhZ2F0ZWRQb2xpY3k7CiB9CiAKLXN0YXRpYyBTaG91bGRPcGVuRXh0ZXJuYWxV
UkxzUG9saWN5IHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3lUb0FwcGx5KEZyYW1lJiBjdXJy
ZW50RnJhbWUsIGNvbnN0IEZyYW1lTG9hZFJlcXVlc3QmIGZyYW1lTG9hZFJlcXVlc3QpCi17Ci0g
ICAgcmV0dXJuIHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3lUb0FwcGx5KGN1cnJlbnRGcmFt
ZSwgZnJhbWVMb2FkUmVxdWVzdC5pbml0aWF0ZWRCeU1haW5GcmFtZSgpLCBmcmFtZUxvYWRSZXF1
ZXN0LnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3koKSk7Ci19Ci0KLXN0YXRpYyB2b2lkIGFw
cGx5U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeVRvTmV3RG9jdW1lbnRMb2FkZXIoRnJhbWUm
IGZyYW1lLCBEb2N1bWVudExvYWRlciYgZG9jdW1lbnRMb2FkZXIsIEluaXRpYXRlZEJ5TWFpbkZy
YW1lIGluaXRpYXRlZEJ5TWFpbkZyYW1lLCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IHBy
b3BhZ2F0ZWRQb2xpY3kpCi17Ci0gICAgZG9jdW1lbnRMb2FkZXIuc2V0U2hvdWxkT3BlbkV4dGVy
bmFsVVJMc1BvbGljeShzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5VG9BcHBseShmcmFtZSwg
aW5pdGlhdGVkQnlNYWluRnJhbWUsIHByb3BhZ2F0ZWRQb2xpY3kpKTsKLX0KLQotc3RhdGljIHZv
aWQgYXBwbHlTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5VG9OZXdEb2N1bWVudExvYWRlcihG
cmFtZSYgZnJhbWUsIERvY3VtZW50TG9hZGVyJiBkb2N1bWVudExvYWRlciwgY29uc3QgRnJhbWVM
b2FkUmVxdWVzdCYgZnJhbWVMb2FkUmVxdWVzdCkKLXsKLSAgICBkb2N1bWVudExvYWRlci5zZXRT
aG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3lU
b0FwcGx5KGZyYW1lLCBmcmFtZUxvYWRSZXF1ZXN0KSk7Ci19Ci0KIGJvb2wgRnJhbWVMb2FkZXI6
OmlzTmF2aWdhdGlvbkFsbG93ZWQoKSBjb25zdAogewogICAgIHJldHVybiBtX3BhZ2VEaXNtaXNz
YWxFdmVudEJlaW5nRGlzcGF0Y2hlZCA9PSBQYWdlRGlzbWlzc2FsVHlwZTo6Tm9uZSAmJiAhbV9m
cmFtZS5zY3JpcHQoKS53aWxsUmVwbGFjZVdpdGhSZXN1bHRPZkV4ZWN1dGluZ0phdmFzY3JpcHRV
UkwoKSAmJiBOYXZpZ2F0aW9uRGlzYWJsZXI6OmlzTmF2aWdhdGlvbkFsbG93ZWQobV9mcmFtZSk7
CkBAIC0xMzYzLDcgKzEzMzYsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkVVJMKEZyYW1lTG9h
ZFJlcXVlCiAgICAgaWYgKCFpc05hdmlnYXRpb25BbGxvd2VkKCkpCiAgICAgICAgIHJldHVybjsK
IAotICAgIE5hdmlnYXRpb25BY3Rpb24gYWN0aW9uIHsgZnJhbWVMb2FkUmVxdWVzdC5yZXF1ZXN0
ZXIoKSwgcmVxdWVzdCwgZnJhbWVMb2FkUmVxdWVzdC5pbml0aWF0ZWRCeU1haW5GcmFtZSgpLCBu
ZXdMb2FkVHlwZSwgaXNGb3JtU3VibWlzc2lvbiwgZXZlbnQsIGZyYW1lTG9hZFJlcXVlc3Quc2hv
dWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSgpLCBmcmFtZUxvYWRSZXF1ZXN0LmRvd25sb2FkQXR0
cmlidXRlKCkgfTsKKyAgICBOYXZpZ2F0aW9uQWN0aW9uIGFjdGlvbiB7IGZyYW1lTG9hZFJlcXVl
c3QucmVxdWVzdGVyKCksIHJlcXVlc3QsIG5ld0xvYWRUeXBlLCBpc0Zvcm1TdWJtaXNzaW9uLCBl
dmVudCwgZnJhbWVMb2FkUmVxdWVzdC5zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KCksIGZy
YW1lTG9hZFJlcXVlc3QuZG93bmxvYWRBdHRyaWJ1dGUoKSB9OwogICAgIGFjdGlvbi5zZXRMb2Nr
SGlzdG9yeShmcmFtZUxvYWRSZXF1ZXN0LmxvY2tIaXN0b3J5KCkpOwogICAgIGFjdGlvbi5zZXRM
b2NrQmFja0ZvcndhcmRMaXN0KGZyYW1lTG9hZFJlcXVlc3QubG9ja0JhY2tGb3J3YXJkTGlzdCgp
KTsKICAgICBpZiAocHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgJiYgbV9mcmFtZS5pc01haW5GcmFt
ZSgpKQpAQCAtMTM3Miw3ICsxMzQ1LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZFVSTChGcmFt
ZUxvYWRSZXF1ZQogICAgIE5ld0ZyYW1lT3BlbmVyUG9saWN5IG9wZW5lclBvbGljeSA9IGZyYW1l
TG9hZFJlcXVlc3QubmV3RnJhbWVPcGVuZXJQb2xpY3koKTsKICAgICBBbGxvd05hdmlnYXRpb25U
b0ludmFsaWRVUkwgYWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMID0gZnJhbWVMb2FkUmVxdWVz
dC5hbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkwoKTsKICAgICBpZiAoIXRhcmdldEZyYW1lICYm
ICFlZmZlY3RpdmVGcmFtZU5hbWUuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGFjdGlvbiA9IGFjdGlv
bi5jb3B5V2l0aFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3koc2hvdWxkT3BlbkV4dGVybmFs
VVJMc1BvbGljeVRvQXBwbHkobV9mcmFtZSwgZnJhbWVMb2FkUmVxdWVzdCkpOworICAgICAgICBh
Y3Rpb24gPSBhY3Rpb24uY29weVdpdGhTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KHNob3Vs
ZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3lUb0FwcGx5KGZyYW1lTG9hZFJlcXVlc3Quc2hvdWxkT3Bl
bkV4dGVybmFsVVJMc1BvbGljeSgpKSk7CiAKICAgICAgICAgLy8gaHR0cHM6Ly9odG1sLnNwZWMu
d2hhdHdnLm9yZy8jdGhlLXJ1bGVzLWZvci1jaG9vc2luZy1hLWJyb3dzaW5nLWNvbnRleHQtZ2l2
ZW4tYS1icm93c2luZy1jb250ZXh0LW5hbWUgKFN0ZXAgOC4yKQogICAgICAgICBpZiAoZnJhbWVM
b2FkUmVxdWVzdC5yZXF1ZXN0ZXIoKS5zaG91bGRGb3JjZU5vT3BlbmVyQmFzZWRPbkNPT1AoKSkg
ewpAQCAtMTQ2Miw3ICsxNDM1LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZChGcmFtZUxvYWRS
ZXF1ZXN0JgogICAgIH0KIAogICAgIGlmIChyZXF1ZXN0LnNob3VsZENoZWNrTmV3V2luZG93UG9s
aWN5KCkpIHsKLSAgICAgICAgTmF2aWdhdGlvbkFjdGlvbiBhY3Rpb24geyByZXF1ZXN0LnJlcXVl
c3RlcigpLCByZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpLCBJbml0aWF0ZWRCeU1haW5GcmFtZTo6
VW5rbm93biwgTmF2aWdhdGlvblR5cGU6Ok90aGVyLCByZXF1ZXN0LnNob3VsZE9wZW5FeHRlcm5h
bFVSTHNQb2xpY3koKSB9OworICAgICAgICBOYXZpZ2F0aW9uQWN0aW9uIGFjdGlvbiB7IHJlcXVl
c3QucmVxdWVzdGVyKCksIHJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCksIE5hdmlnYXRpb25UeXBl
OjpPdGhlciwgcmVxdWVzdC5zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KCkgfTsKICAgICAg
ICAgcG9saWN5Q2hlY2tlcigpLmNoZWNrTmV3V2luZG93UG9saWN5KFdURk1vdmUoYWN0aW9uKSwg
V1RGTW92ZShyZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpKSwgeyB9LCByZXF1ZXN0LmZyYW1lTmFt
ZSgpLCBbdGhpc10gKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgV2Vha1B0cjxGb3Jt
U3RhdGU+JiYgZm9ybVN0YXRlLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgY29uc3QgTmF2aWdh
dGlvbkFjdGlvbiYgYWN0aW9uLCBTaG91bGRDb250aW51ZVBvbGljeUNoZWNrIHNob3VsZENvbnRp
bnVlKSB7CiAgICAgICAgICAgICBjb250aW51ZUxvYWRBZnRlck5ld1dpbmRvd1BvbGljeShyZXF1
ZXN0LCBmb3JtU3RhdGUuZ2V0KCksIGZyYW1lTmFtZSwgYWN0aW9uLCBzaG91bGRDb250aW51ZSwg
QWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMOjpZZXMsIE5ld0ZyYW1lT3BlbmVyUG9saWN5OjpT
dXBwcmVzcyk7CiAgICAgICAgIH0pOwpAQCAtMTQ3OCw3ICsxNDUxLDcgQEAgdm9pZCBGcmFtZUxv
YWRlcjo6bG9hZChGcmFtZUxvYWRSZXF1ZXN0JgogICAgIGxvYWRlci0+c2V0QWxsb3dzRGF0YVVS
THNGb3JNYWluRnJhbWUocmVxdWVzdC5pc1JlcXVlc3RGcm9tQ2xpZW50T3JVc2VySW5wdXQoKSk7
CiAgICAgbG9hZGVyLT5zZXRJc0NvbnRpbnVpbmdMb2FkQWZ0ZXJQcm92aXNpb25hbExvYWRTdGFy
dGVkKHJlcXVlc3Quc2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkKCkgPT0gU2hvdWxkVHJlYXRB
c0NvbnRpbnVpbmdMb2FkOjpZZXNBZnRlclByb3Zpc2lvbmFsTG9hZFN0YXJ0ZWQpOwogICAgIGFk
ZFNhbWVTaXRlSW5mb1RvUmVxdWVzdElmTmVlZGVkKGxvYWRlci0+cmVxdWVzdCgpKTsKLSAgICBh
cHBseVNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3lUb05ld0RvY3VtZW50TG9hZGVyKG1fZnJh
bWUsIGxvYWRlciwgcmVxdWVzdCk7CisgICAgbG9hZGVyLT5zZXRTaG91bGRPcGVuRXh0ZXJuYWxV
UkxzUG9saWN5KHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3lUb0FwcGx5KHJlcXVlc3Quc2hv
dWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSgpKSk7CiAKICAgICBpZiAocmVxdWVzdC5zaG91bGRU
cmVhdEFzQ29udGludWluZ0xvYWQoKSAhPSBTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQ6Ok5v
KSB7CiAgICAgICAgIGxvYWRlci0+c2V0Q2xpZW50UmVkaXJlY3RTb3VyY2VGb3JIaXN0b3J5KHJl
cXVlc3QuY2xpZW50UmVkaXJlY3RTb3VyY2VGb3JIaXN0b3J5KCkpOwpAQCAtMTQ5Nyw3ICsxNDcw
LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZFdpdGhOYXZpZ2F0aW9uQWN0aQogICAgIEZSQU1F
TE9BREVSX1JFTEVBU0VfTE9HKFJlc291cmNlTG9hZGluZywgImxvYWRXaXRoTmF2aWdhdGlvbkFj
dGlvbjogZnJhbWUgbG9hZCBzdGFydGVkIik7CiAKICAgICBSZWY8RG9jdW1lbnRMb2FkZXI+IGxv
YWRlciA9IG1fY2xpZW50LT5jcmVhdGVEb2N1bWVudExvYWRlcihyZXF1ZXN0LCBkZWZhdWx0U3Vi
c3RpdHV0ZURhdGFGb3JVUkwocmVxdWVzdC51cmwoKSkpOwotICAgIGFwcGx5U2hvdWxkT3BlbkV4
dGVybmFsVVJMc1BvbGljeVRvTmV3RG9jdW1lbnRMb2FkZXIobV9mcmFtZSwgbG9hZGVyLCBhY3Rp
b24uaW5pdGlhdGVkQnlNYWluRnJhbWUoKSwgYWN0aW9uLnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQ
b2xpY3koKSk7CisgICAgbG9hZGVyLT5zZXRTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KHNo
b3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3lUb0FwcGx5KGFjdGlvbi5zaG91bGRPcGVuRXh0ZXJu
YWxVUkxzUG9saWN5KCkpKTsKIAogICAgIGlmIChhY3Rpb24ubG9ja0hpc3RvcnkoKSA9PSBMb2Nr
SGlzdG9yeTo6WWVzICYmIG1fZG9jdW1lbnRMb2FkZXIpCiAgICAgICAgIGxvYWRlci0+c2V0Q2xp
ZW50UmVkaXJlY3RTb3VyY2VGb3JIaXN0b3J5KG1fZG9jdW1lbnRMb2FkZXItPmRpZENyZWF0ZUds
b2JhbEhpc3RvcnlFbnRyeSgpID8gbV9kb2N1bWVudExvYWRlci0+dXJsRm9ySGlzdG9yeSgpLnN0
cmluZygpIDogbV9kb2N1bWVudExvYWRlci0+Y2xpZW50UmVkaXJlY3RTb3VyY2VGb3JIaXN0b3J5
KCkpOwpAQCAtMTU5OCw3ICsxNTcxLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZFdpdGhEb2N1
bWVudExvYWRlcgogCiAgICAgaWYgKHNob3VsZFBlcmZvcm1GcmFnbWVudE5hdmlnYXRpb24oaXNG
b3JtU3VibWlzc2lvbiwgaHR0cE1ldGhvZCwgcG9saWN5Q2hlY2tlcigpLmxvYWRUeXBlKCksIG5l
d1VSTCkpIHsKICAgICAgICAgUmVmUHRyPERvY3VtZW50TG9hZGVyPiBvbGREb2N1bWVudExvYWRl
ciA9IG1fZG9jdW1lbnRMb2FkZXI7Ci0gICAgICAgIE5hdmlnYXRpb25BY3Rpb24gYWN0aW9uIHsg
Km1fZnJhbWUuZG9jdW1lbnQoKSwgbG9hZGVyLT5yZXF1ZXN0KCksIEluaXRpYXRlZEJ5TWFpbkZy
YW1lOjpVbmtub3duLCBwb2xpY3lDaGVja2VyKCkubG9hZFR5cGUoKSwgaXNGb3JtU3VibWlzc2lv
biB9OworICAgICAgICBOYXZpZ2F0aW9uQWN0aW9uIGFjdGlvbiB7ICptX2ZyYW1lLmRvY3VtZW50
KCksIGxvYWRlci0+cmVxdWVzdCgpLCBwb2xpY3lDaGVja2VyKCkubG9hZFR5cGUoKSwgaXNGb3Jt
U3VibWlzc2lvbiB9OwogCiAgICAgICAgIG9sZERvY3VtZW50TG9hZGVyLT5zZXRUcmlnZ2VyaW5n
QWN0aW9uKFdURk1vdmUoYWN0aW9uKSk7CiAgICAgICAgIG9sZERvY3VtZW50TG9hZGVyLT5zZXRM
YXN0Q2hlY2tlZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0KCkpOwpAQCAtMTYxNiw3ICsxNTg5LDcg
QEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZFdpdGhEb2N1bWVudExvYWRlcgogICAgIHBvbGljeUNo
ZWNrZXIoKS5zdG9wQ2hlY2soKTsKICAgICBzZXRQb2xpY3lEb2N1bWVudExvYWRlcihsb2FkZXIp
OwogICAgIGlmIChsb2FkZXItPnRyaWdnZXJpbmdBY3Rpb24oKS5pc0VtcHR5KCkpCi0gICAgICAg
IGxvYWRlci0+c2V0VHJpZ2dlcmluZ0FjdGlvbih7ICptX2ZyYW1lLmRvY3VtZW50KCksIGxvYWRl
ci0+cmVxdWVzdCgpLCBJbml0aWF0ZWRCeU1haW5GcmFtZTo6VW5rbm93biwgcG9saWN5Q2hlY2tl
cigpLmxvYWRUeXBlKCksIGlzRm9ybVN1Ym1pc3Npb24gfSk7CisgICAgICAgIGxvYWRlci0+c2V0
VHJpZ2dlcmluZ0FjdGlvbih7ICptX2ZyYW1lLmRvY3VtZW50KCksIGxvYWRlci0+cmVxdWVzdCgp
LCBwb2xpY3lDaGVja2VyKCkubG9hZFR5cGUoKSwgaXNGb3JtU3VibWlzc2lvbiB9KTsKIAogICAg
IGlmIChFbGVtZW50KiBvd25lckVsZW1lbnQgPSBtX2ZyYW1lLm93bmVyRWxlbWVudCgpKSB7CiAg
ICAgICAgIC8vIFdlIHNraXAgZGlzcGF0Y2hpbmcgdGhlIGJlZm9yZWxvYWQgZXZlbnQgaWYgd2Un
dmUgYWxyZWFkeQpAQCAtMTczNyw3ICsxNzEwLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6cmVsb2Fk
V2l0aE92ZXJyaWRlRW5jbwogICAgIHJlcXVlc3Quc2V0Q2FjaGVQb2xpY3koUmVzb3VyY2VSZXF1
ZXN0Q2FjaGVQb2xpY3k6OlJldHVybkNhY2hlRGF0YUVsc2VMb2FkKTsKIAogICAgIFJlZjxEb2N1
bWVudExvYWRlcj4gbG9hZGVyID0gbV9jbGllbnQtPmNyZWF0ZURvY3VtZW50TG9hZGVyKHJlcXVl
c3QsIGRlZmF1bHRTdWJzdGl0dXRlRGF0YUZvclVSTChyZXF1ZXN0LnVybCgpKSk7Ci0gICAgYXBw
bHlTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5VG9OZXdEb2N1bWVudExvYWRlcihtX2ZyYW1l
LCBsb2FkZXIsIEluaXRpYXRlZEJ5TWFpbkZyYW1lOjpVbmtub3duLCBtX2RvY3VtZW50TG9hZGVy
LT5zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5VG9Qcm9wYWdhdGUoKSk7CisgICAgbG9hZGVy
LT5zZXRTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQ
b2xpY3lUb0FwcGx5KG1fZG9jdW1lbnRMb2FkZXItPnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xp
Y3lUb1Byb3BhZ2F0ZSgpKSk7CiAKICAgICBzZXRQb2xpY3lEb2N1bWVudExvYWRlcihsb2FkZXIu
cHRyKCkpOwogCkBAIC0xNzY5LDggKzE3NDIsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpyZWxvYWQo
T3B0aW9uU2V0PFJlbG9hCiAgICAgUmVmPERvY3VtZW50TG9hZGVyPiBsb2FkZXIgPSBtX2NsaWVu
dC0+Y3JlYXRlRG9jdW1lbnRMb2FkZXIoaW5pdGlhbFJlcXVlc3QsIGRlZmF1bHRTdWJzdGl0dXRl
RGF0YUZvclVSTChpbml0aWFsUmVxdWVzdC51cmwoKSkpOwogICAgIGxvYWRlci0+c2V0QWxsb3dz
V2ViQXJjaGl2ZUZvck1haW5GcmFtZShtX2RvY3VtZW50TG9hZGVyLT5hbGxvd3NXZWJBcmNoaXZl
Rm9yTWFpbkZyYW1lKCkpOwogICAgIGxvYWRlci0+c2V0QWxsb3dzRGF0YVVSTHNGb3JNYWluRnJh
bWUobV9kb2N1bWVudExvYWRlci0+YWxsb3dzRGF0YVVSTHNGb3JNYWluRnJhbWUoKSk7Ci0gICAg
YXBwbHlTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5VG9OZXdEb2N1bWVudExvYWRlcihtX2Zy
YW1lLCBsb2FkZXIsIEluaXRpYXRlZEJ5TWFpbkZyYW1lOjpVbmtub3duLCBtX2RvY3VtZW50TG9h
ZGVyLT5zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5VG9Qcm9wYWdhdGUoKSk7Ci0KKyAgICBs
b2FkZXItPnNldFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3koc2hvdWxkT3BlbkV4dGVybmFs
VVJMc1BvbGljeVRvQXBwbHkobV9kb2N1bWVudExvYWRlci0+c2hvdWxkT3BlbkV4dGVybmFsVVJM
c1BvbGljeVRvUHJvcGFnYXRlKCkpKTsKICAgICBsb2FkZXItPnNldFVzZXJDb250ZW50RXh0ZW5z
aW9uc0VuYWJsZWQoIW9wdGlvbnMuY29udGFpbnMoUmVsb2FkT3B0aW9uOjpEaXNhYmxlQ29udGVu
dEJsb2NrZXJzKSk7CiAgICAgCiAgICAgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0ID0gbG9hZGVy
LT5yZXF1ZXN0KCk7CkBAIC0xNzgyLDcgKzE3NTQsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpyZWxv
YWQoT3B0aW9uU2V0PFJlbG9hCiAKICAgICAvLyBJZiB3ZSdyZSBhYm91dCB0byByZS1wb3N0LCBz
ZXQgdXAgYWN0aW9uIHNvIHRoZSBhcHBsaWNhdGlvbiBjYW4gd2FybiB0aGUgdXNlci4KICAgICBp
ZiAocmVxdWVzdC5odHRwTWV0aG9kKCkgPT0gIlBPU1QiKQotICAgICAgICBsb2FkZXItPnNldFRy
aWdnZXJpbmdBY3Rpb24oeyAqbV9mcmFtZS5kb2N1bWVudCgpLCByZXF1ZXN0LCBJbml0aWF0ZWRC
eU1haW5GcmFtZTo6VW5rbm93biwgTmF2aWdhdGlvblR5cGU6OkZvcm1SZXN1Ym1pdHRlZCB9KTsK
KyAgICAgICAgbG9hZGVyLT5zZXRUcmlnZ2VyaW5nQWN0aW9uKHsgKm1fZnJhbWUuZG9jdW1lbnQo
KSwgcmVxdWVzdCwgTmF2aWdhdGlvblR5cGU6OkZvcm1SZXN1Ym1pdHRlZCB9KTsKIAogICAgIGxv
YWRlci0+c2V0T3ZlcnJpZGVFbmNvZGluZyhtX2RvY3VtZW50TG9hZGVyLT5vdmVycmlkZUVuY29k
aW5nKCkpOwogCkBAIC0zMDcwLDcgKzMwNDIsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkUG9z
dFJlcXVlc3QoRnJhbWVMCiAgICAgaWYgKERvY3VtZW50KiBkb2N1bWVudCA9IG1fZnJhbWUuZG9j
dW1lbnQoKSkKICAgICAgICAgZG9jdW1lbnQtPmNvbnRlbnRTZWN1cml0eVBvbGljeSgpLT51cGdy
YWRlSW5zZWN1cmVSZXF1ZXN0SWZOZWVkZWQod29ya2luZ1Jlc291cmNlUmVxdWVzdCwgQ29udGVu
dFNlY3VyaXR5UG9saWN5OjpJbnNlY3VyZVJlcXVlc3RUeXBlOjpMb2FkKTsKIAotICAgIE5hdmln
YXRpb25BY3Rpb24gYWN0aW9uIHsgcmVxdWVzdC5yZXF1ZXN0ZXIoKSwgd29ya2luZ1Jlc291cmNl
UmVxdWVzdCwgcmVxdWVzdC5pbml0aWF0ZWRCeU1haW5GcmFtZSgpLCBsb2FkVHlwZSwgdHJ1ZSwg
ZXZlbnQsIHJlcXVlc3Quc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSgpLCB7IH0gfTsKKyAg
ICBOYXZpZ2F0aW9uQWN0aW9uIGFjdGlvbiB7IHJlcXVlc3QucmVxdWVzdGVyKCksIHdvcmtpbmdS
ZXNvdXJjZVJlcXVlc3QsIGxvYWRUeXBlLCB0cnVlLCBldmVudCwgcmVxdWVzdC5zaG91bGRPcGVu
RXh0ZXJuYWxVUkxzUG9saWN5KCksIHsgfSB9OwogICAgIGFjdGlvbi5zZXRMb2NrSGlzdG9yeShs
b2NrSGlzdG9yeSk7CiAKICAgICBpZiAoIWZyYW1lTmFtZS5pc0VtcHR5KCkpIHsKQEAgLTM1ODQs
NyArMzU1Niw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmNvbnRpbnVlTG9hZEFmdGVyTmV3V2kKICAg
ICAgICAgbWFpbkZyYW1lLT5kb2N1bWVudCgpLT5zZXRSZWZlcnJlclBvbGljeShmcmFtZS0+ZG9j
dW1lbnQoKS0+cmVmZXJyZXJQb2xpY3koKSk7CiAgICAgfQogCi0gICAgTmF2aWdhdGlvbkFjdGlv
biBuZXdBY3Rpb24geyAqZnJhbWUtPmRvY3VtZW50KCksIHJlcXVlc3QsIEluaXRpYXRlZEJ5TWFp
bkZyYW1lOjpVbmtub3duLCBOYXZpZ2F0aW9uVHlwZTo6T3RoZXIsIGFjdGlvbi5zaG91bGRPcGVu
RXh0ZXJuYWxVUkxzUG9saWN5KCksIG51bGxwdHIsIGFjdGlvbi5kb3dubG9hZEF0dHJpYnV0ZSgp
IH07CisgICAgTmF2aWdhdGlvbkFjdGlvbiBuZXdBY3Rpb24geyAqZnJhbWUtPmRvY3VtZW50KCks
IHJlcXVlc3QsIE5hdmlnYXRpb25UeXBlOjpPdGhlciwgYWN0aW9uLnNob3VsZE9wZW5FeHRlcm5h
bFVSTHNQb2xpY3koKSwgbnVsbHB0ciwgYWN0aW9uLmRvd25sb2FkQXR0cmlidXRlKCkgfTsKICAg
ICBtYWluRnJhbWUtPmxvYWRlcigpLmxvYWRXaXRoTmF2aWdhdGlvbkFjdGlvbihyZXF1ZXN0LCBX
VEZNb3ZlKG5ld0FjdGlvbiksIEZyYW1lTG9hZFR5cGU6OlN0YW5kYXJkLCBmb3JtU3RhdGUsIGFs
bG93TmF2aWdhdGlvblRvSW52YWxpZFVSTCk7CiB9CiAKQEAgLTM3NzIsMTUgKzM3NDQsMTMgQEAg
dm9pZCBGcmFtZUxvYWRlcjo6bG9hZERpZmZlcmVudERvY3VtZW50SQogICAgIC8vIFJlbWVtYmVy
IHRoaXMgaXRlbSBzbyB3ZSBjYW4gdHJhdmVyc2UgYW55IGNoaWxkIGl0ZW1zIGFzIGNoaWxkIGZy
YW1lcyBsb2FkCiAgICAgaGlzdG9yeSgpLnNldFByb3Zpc2lvbmFsSXRlbSgmaXRlbSk7CiAKLSAg
ICBhdXRvIGluaXRpYXRlZEJ5TWFpbkZyYW1lID0gSW5pdGlhdGVkQnlNYWluRnJhbWU6OlVua25v
d247Ci0KICAgICBTZXRGb3JTY29wZTxMb2FkQ29udGludWluZ1N0YXRlPiBjb250aW51aW5nTG9h
ZEd1YXJkKG1fY3VycmVudExvYWRDb250aW51aW5nU3RhdGUsIHNob3VsZFRyZWF0QXNDb250aW51
aW5nTG9hZCAhPSBTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQ6Ok5vID8gTG9hZENvbnRpbnVp
bmdTdGF0ZTo6Q29udGludWluZ1dpdGhIaXN0b3J5SXRlbSA6IExvYWRDb250aW51aW5nU3RhdGU6
Ok5vdENvbnRpbnVpbmcpOwogCiAgICAgaWYgKENhY2hlZFBhZ2UqIGNhY2hlZFBhZ2UgPSBCYWNr
Rm9yd2FyZENhY2hlOjpzaW5nbGV0b24oKS5nZXQoaXRlbSwgbV9mcmFtZS5wYWdlKCkpKSB7CiAg
ICAgICAgIGF1dG8gZG9jdW1lbnRMb2FkZXIgPSBjYWNoZWRQYWdlLT5kb2N1bWVudExvYWRlcigp
OwogICAgICAgICBtX2NsaWVudC0+dXBkYXRlQ2FjaGVkRG9jdW1lbnRMb2FkZXIoKmRvY3VtZW50
TG9hZGVyKTsKIAotICAgICAgICBhdXRvIGFjdGlvbiA9IE5hdmlnYXRpb25BY3Rpb24geyAqbV9m
cmFtZS5kb2N1bWVudCgpLCBkb2N1bWVudExvYWRlci0+cmVxdWVzdCgpLCBpbml0aWF0ZWRCeU1h
aW5GcmFtZSwgbG9hZFR5cGUsIGZhbHNlIH07CisgICAgICAgIGF1dG8gYWN0aW9uID0gTmF2aWdh
dGlvbkFjdGlvbiB7ICptX2ZyYW1lLmRvY3VtZW50KCksIGRvY3VtZW50TG9hZGVyLT5yZXF1ZXN0
KCksIGxvYWRUeXBlLCBmYWxzZSB9OwogICAgICAgICBhY3Rpb24uc2V0VGFyZ2V0QmFja0Zvcndh
cmRJdGVtKGl0ZW0pOwogICAgICAgICBhY3Rpb24uc2V0U291cmNlQmFja0ZvcndhcmRJdGVtKGZy
b21JdGVtKTsKICAgICAgICAgZG9jdW1lbnRMb2FkZXItPnNldFRyaWdnZXJpbmdBY3Rpb24oV1RG
TW92ZShhY3Rpb24pKTsKQEAgLTM4MDIsNyArMzc3Miw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6Omxv
YWREaWZmZXJlbnREb2N1bWVudEkKICAgICBpZiAoIWl0ZW0ucmVmZXJyZXIoKS5pc051bGwoKSkK
ICAgICAgICAgcmVxdWVzdC5zZXRIVFRQUmVmZXJyZXIoaXRlbS5yZWZlcnJlcigpKTsKIAotICAg
IFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGlj
eSA9IHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3lUb0FwcGx5KG1fZnJhbWUsIGluaXRpYXRl
ZEJ5TWFpbkZyYW1lLCBpdGVtLnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3koKSk7CisgICAg
U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5
ID0gc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeVRvQXBwbHkoaXRlbS5zaG91bGRPcGVuRXh0
ZXJuYWxVUkxzUG9saWN5KCkpOwogICAgIGJvb2wgaXNGb3JtU3VibWlzc2lvbiA9IGZhbHNlOwog
ICAgIEV2ZW50KiBldmVudCA9IG51bGxwdHI7CiAKQEAgLTM4MzAsMTAgKzM4MDAsMTAgQEAgdm9p
ZCBGcmFtZUxvYWRlcjo6bG9hZERpZmZlcmVudERvY3VtZW50SQogICAgICAgICAKICAgICAgICAg
aWYgKGNhY2hlTG9hZFBvbGljeSA9PSBNYXlBdHRlbXB0Q2FjaGVPbmx5TG9hZEZvckZvcm1TdWJt
aXNzaW9uSXRlbSkgewogICAgICAgICAgICAgcmVxdWVzdC5zZXRDYWNoZVBvbGljeShSZXNvdXJj
ZVJlcXVlc3RDYWNoZVBvbGljeTo6UmV0dXJuQ2FjaGVEYXRhRG9udExvYWQpOwotICAgICAgICAg
ICAgYWN0aW9uID0geyAqbV9mcmFtZS5kb2N1bWVudCgpLCByZXF1ZXN0LCBpbml0aWF0ZWRCeU1h
aW5GcmFtZSwgbG9hZFR5cGUsIGlzRm9ybVN1Ym1pc3Npb24sIGV2ZW50LCBzaG91bGRPcGVuRXh0
ZXJuYWxVUkxzUG9saWN5IH07CisgICAgICAgICAgICBhY3Rpb24gPSB7ICptX2ZyYW1lLmRvY3Vt
ZW50KCksIHJlcXVlc3QsIGxvYWRUeXBlLCBpc0Zvcm1TdWJtaXNzaW9uLCBldmVudCwgc2hvdWxk
T3BlbkV4dGVybmFsVVJMc1BvbGljeSB9OwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAg
cmVxdWVzdC5zZXRDYWNoZVBvbGljeShSZXNvdXJjZVJlcXVlc3RDYWNoZVBvbGljeTo6UmV0dXJu
Q2FjaGVEYXRhRWxzZUxvYWQpOwotICAgICAgICAgICAgYWN0aW9uID0geyAqbV9mcmFtZS5kb2N1
bWVudCgpLCByZXF1ZXN0LCBpbml0aWF0ZWRCeU1haW5GcmFtZSwgTmF2aWdhdGlvblR5cGU6OkZv
cm1SZXN1Ym1pdHRlZCwgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSwgZXZlbnQgfTsKKyAg
ICAgICAgICAgIGFjdGlvbiA9IHsgKm1fZnJhbWUuZG9jdW1lbnQoKSwgcmVxdWVzdCwgTmF2aWdh
dGlvblR5cGU6OkZvcm1SZXN1Ym1pdHRlZCwgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSwg
ZXZlbnQgfTsKICAgICAgICAgfQogICAgIH0gZWxzZSB7CiAgICAgICAgIHN3aXRjaCAobG9hZFR5
cGUpIHsKQEAgLTM4NjcsNyArMzgzNyw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWREaWZmZXJl
bnREb2N1bWVudEkKIAogICAgICAgICBSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdEZvck9yaWdpbmFs
VVJMKHJlcXVlc3QpOwogICAgICAgICByZXF1ZXN0Rm9yT3JpZ2luYWxVUkwuc2V0VVJMKGl0ZW1P
cmlnaW5hbFVSTCk7Ci0gICAgICAgIGFjdGlvbiA9IHsgKm1fZnJhbWUuZG9jdW1lbnQoKSwgcmVx
dWVzdEZvck9yaWdpbmFsVVJMLCBpbml0aWF0ZWRCeU1haW5GcmFtZSwgbG9hZFR5cGUsIGlzRm9y
bVN1Ym1pc3Npb24sIGV2ZW50LCBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IH07CisgICAg
ICAgIGFjdGlvbiA9IHsgKm1fZnJhbWUuZG9jdW1lbnQoKSwgcmVxdWVzdEZvck9yaWdpbmFsVVJM
LCBsb2FkVHlwZSwgaXNGb3JtU3VibWlzc2lvbiwgZXZlbnQsIHNob3VsZE9wZW5FeHRlcm5hbFVS
THNQb2xpY3kgfTsKICAgICB9CiAKICAgICBhY3Rpb24uc2V0VGFyZ2V0QmFja0ZvcndhcmRJdGVt
KGl0ZW0pOwpAQCAtNDEzOCw4ICs0MTA4LDggQEAgUmVmUHRyPEZyYW1lPiBjcmVhdGVXaW5kb3co
RnJhbWUmIG9wZW5lcgogICAgIGlmICghb2xkUGFnZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKLSAgICBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IHNob3VsZE9wZW5FeHRlcm5hbFVS
THNQb2xpY3kgPSBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5VG9BcHBseShvcGVuZXJGcmFt
ZSwgcmVxdWVzdCk7Ci0gICAgTmF2aWdhdGlvbkFjdGlvbiBhY3Rpb24geyByZXF1ZXN0LnJlcXVl
c3RlcigpLCByZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpLCByZXF1ZXN0LmluaXRpYXRlZEJ5TWFp
bkZyYW1lKCksIE5hdmlnYXRpb25UeXBlOjpPdGhlciwgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1Bv
bGljeSB9OworICAgIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgc2hvdWxkT3BlbkV4dGVy
bmFsVVJMc1BvbGljeSA9IHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3lUb0FwcGx5KHJlcXVl
c3Quc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSgpKTsKKyAgICBOYXZpZ2F0aW9uQWN0aW9u
IGFjdGlvbiB7IHJlcXVlc3QucmVxdWVzdGVyKCksIHJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCks
IE5hdmlnYXRpb25UeXBlOjpPdGhlciwgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSB9Owog
ICAgIFBhZ2UqIHBhZ2UgPSBvbGRQYWdlLT5jaHJvbWUoKS5jcmVhdGVXaW5kb3cob3BlbmVyRnJh
bWUsIGZlYXR1cmVzLCBhY3Rpb24pOwogICAgIGlmICghcGFnZSkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJUeXBlcy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlclR5cGVzLmgJKHJl
dmlzaW9uIDI4NDQ2NykKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlclR5cGVz
LmgJKHdvcmtpbmcgY29weSkKQEAgLTEzOSwxMSArMTM5LDYgQEAgZW51bSBjbGFzcyBTaG91bGRP
cGVuRXh0ZXJuYWxVUkxzUG9saWN5IAogICAgIFNob3VsZEFsbG93LAogfTsKIAotZW51bSBjbGFz
cyBJbml0aWF0ZWRCeU1haW5GcmFtZSA6IHVpbnQ4X3QgewotICAgIFllcywKLSAgICBVbmtub3du
LAotfTsKLQogZW51bSBjbGFzcyBDbGVhclByb3Zpc2lvbmFsSXRlbSA6IGJvb2wgewogICAgIFll
cywKICAgICBObwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25BY3Rpb24u
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uQWN0aW9u
LmNwcAkocmV2aXNpb24gMjg0NDY3KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRp
b25BY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NiwxNiArODYsMTYgQEAgc3RhdGljIHN0
ZDo6b3B0aW9uYWw8TmF2aWdhdGlvbkFjdGlvbjo6TQogICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiB9CiAKLU5hdmlnYXRpb25BY3Rpb246Ok5hdmlnYXRpb25BY3Rpb24oRG9jdW1lbnQmIHJlcXVl
c3RlciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QsIEluaXRpYXRlZEJ5
TWFpbkZyYW1lIGluaXRpYXRlZEJ5TWFpbkZyYW1lLCBOYXZpZ2F0aW9uVHlwZSB0eXBlLCBTaG91
bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3ksIEV2
ZW50KiBldmVudCwgY29uc3QgQXRvbVN0cmluZyYgZG93bmxvYWRBdHRyaWJ1dGUpCitOYXZpZ2F0
aW9uQWN0aW9uOjpOYXZpZ2F0aW9uQWN0aW9uKERvY3VtZW50JiByZXF1ZXN0ZXIsIGNvbnN0IFJl
c291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0LCBOYXZpZ2F0aW9uVHlwZSB0eXBlLCBTaG91
bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3ksIEV2
ZW50KiBldmVudCwgY29uc3QgQXRvbVN0cmluZyYgZG93bmxvYWRBdHRyaWJ1dGUpCiAgICAgOiBt
X3JlcXVlc3RlciB7IE5hdmlnYXRpb25SZXF1ZXN0ZXI6OmZyb20ocmVxdWVzdGVyKSB9CiAgICAg
LCBtX3Jlc291cmNlUmVxdWVzdCB7IHJlc291cmNlUmVxdWVzdCB9CiAgICAgLCBtX3R5cGUgeyB0
eXBlIH0KICAgICAsIG1fc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSB7IHNob3VsZE9wZW5F
eHRlcm5hbFVSTHNQb2xpY3kgfQotICAgICwgbV9pbml0aWF0ZWRCeU1haW5GcmFtZSB7IGluaXRp
YXRlZEJ5TWFpbkZyYW1lIH0KICAgICAsIG1fa2V5U3RhdGVFdmVudERhdGEgeyBrZXlTdGF0ZURh
dGFGb3JGaXJzdEV2ZW50V2l0aEtleVN0YXRlKGV2ZW50KSB9CiAgICAgLCBtX21vdXNlRXZlbnRE
YXRhIHsgbW91c2VFdmVudERhdGFGb3JGaXJzdE1vdXNlRXZlbnQoZXZlbnQpIH0KICAgICAsIG1f
ZG93bmxvYWRBdHRyaWJ1dGUgeyBkb3dubG9hZEF0dHJpYnV0ZSB9CiAgICAgLCBtX3RyZWF0QXNT
YW1lT3JpZ2luTmF2aWdhdGlvbiB7IHNob3VsZFRyZWF0QXNTYW1lT3JpZ2luTmF2aWdhdGlvbihy
ZXF1ZXN0ZXIsIHJlc291cmNlUmVxdWVzdC51cmwoKSkgfQorICAgICwgbV9pbml0aWF0ZWRCeU1h
aW5GcmFtZSB7IHJlcXVlc3Rlci5mcmFtZSgpLT5pc01haW5GcmFtZSgpIH0KIHsKIH0KIApAQCAt
MTEyLDE2ICsxMTIsMTYgQEAgc3RhdGljIE5hdmlnYXRpb25UeXBlIG5hdmlnYXRpb25UeXBlKEZy
YQogICAgIHJldHVybiBOYXZpZ2F0aW9uVHlwZTo6T3RoZXI7CiB9CiAKLU5hdmlnYXRpb25BY3Rp
b246Ok5hdmlnYXRpb25BY3Rpb24oRG9jdW1lbnQmIHJlcXVlc3RlciwgY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QsIEluaXRpYXRlZEJ5TWFpbkZyYW1lIGluaXRpYXRlZEJ5
TWFpbkZyYW1lLCBGcmFtZUxvYWRUeXBlIGZyYW1lTG9hZFR5cGUsIGJvb2wgaXNGb3JtU3VibWlz
c2lvbiwgRXZlbnQqIGV2ZW50LCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IHNob3VsZE9w
ZW5FeHRlcm5hbFVSTHNQb2xpY3ksIGNvbnN0IEF0b21TdHJpbmcmIGRvd25sb2FkQXR0cmlidXRl
KQorTmF2aWdhdGlvbkFjdGlvbjo6TmF2aWdhdGlvbkFjdGlvbihEb2N1bWVudCYgcmVxdWVzdGVy
LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCwgRnJhbWVMb2FkVHlwZSBm
cmFtZUxvYWRUeXBlLCBib29sIGlzRm9ybVN1Ym1pc3Npb24sIEV2ZW50KiBldmVudCwgU2hvdWxk
T3BlbkV4dGVybmFsVVJMc1BvbGljeSBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5LCBjb25z
dCBBdG9tU3RyaW5nJiBkb3dubG9hZEF0dHJpYnV0ZSkKICAgICA6IG1fcmVxdWVzdGVyIHsgTmF2
aWdhdGlvblJlcXVlc3Rlcjo6ZnJvbShyZXF1ZXN0ZXIpIH0KICAgICAsIG1fcmVzb3VyY2VSZXF1
ZXN0IHsgcmVzb3VyY2VSZXF1ZXN0IH0KICAgICAsIG1fdHlwZSB7IG5hdmlnYXRpb25UeXBlKGZy
YW1lTG9hZFR5cGUsIGlzRm9ybVN1Ym1pc3Npb24sICEhZXZlbnQpIH0KICAgICAsIG1fc2hvdWxk
T3BlbkV4dGVybmFsVVJMc1BvbGljeSB7IHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgfQot
ICAgICwgbV9pbml0aWF0ZWRCeU1haW5GcmFtZSB7IGluaXRpYXRlZEJ5TWFpbkZyYW1lIH0KICAg
ICAsIG1fa2V5U3RhdGVFdmVudERhdGEgeyBrZXlTdGF0ZURhdGFGb3JGaXJzdEV2ZW50V2l0aEtl
eVN0YXRlKGV2ZW50KSB9CiAgICAgLCBtX21vdXNlRXZlbnREYXRhIHsgbW91c2VFdmVudERhdGFG
b3JGaXJzdE1vdXNlRXZlbnQoZXZlbnQpIH0KICAgICAsIG1fZG93bmxvYWRBdHRyaWJ1dGUgeyBk
b3dubG9hZEF0dHJpYnV0ZSB9CiAgICAgLCBtX3RyZWF0QXNTYW1lT3JpZ2luTmF2aWdhdGlvbiB7
IHNob3VsZFRyZWF0QXNTYW1lT3JpZ2luTmF2aWdhdGlvbihyZXF1ZXN0ZXIsIHJlc291cmNlUmVx
dWVzdC51cmwoKSkgfQorICAgICwgbV9pbml0aWF0ZWRCeU1haW5GcmFtZSB7IHJlcXVlc3Rlci5m
cmFtZSgpLT5pc01haW5GcmFtZSgpIH0KIHsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvbG9h
ZGVyL05hdmlnYXRpb25BY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvTmF2aWdhdGlvbkFjdGlvbi5oCShyZXZpc2lvbiAyODQ0NjcpCisrKyBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvTmF2aWdhdGlvbkFjdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC01NCw4ICs1NCw4
IEBAIGNsYXNzIFVJRXZlbnRXaXRoS2V5U3RhdGU7CiBjbGFzcyBOYXZpZ2F0aW9uQWN0aW9uIHsK
IHB1YmxpYzoKICAgICBOYXZpZ2F0aW9uQWN0aW9uKCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgTmF2
aWdhdGlvbkFjdGlvbihEb2N1bWVudCYsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIEluaXRpYXRl
ZEJ5TWFpbkZyYW1lLCBOYXZpZ2F0aW9uVHlwZSA9IE5hdmlnYXRpb25UeXBlOjpPdGhlciwgU2hv
dWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSA9IFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6
OlNob3VsZE5vdEFsbG93LCBFdmVudCogPSBudWxscHRyLCBjb25zdCBBdG9tU3RyaW5nJiBkb3du
bG9hZEF0dHJpYnV0ZSA9IG51bGxBdG9tKCkpOwotICAgIE5hdmlnYXRpb25BY3Rpb24oRG9jdW1l
bnQmLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBJbml0aWF0ZWRCeU1haW5GcmFtZSwgRnJhbWVM
b2FkVHlwZSwgYm9vbCBpc0Zvcm1TdWJtaXNzaW9uLCBFdmVudCogPSBudWxscHRyLCBTaG91bGRP
cGVuRXh0ZXJuYWxVUkxzUG9saWN5ID0gU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTo6U2hv
dWxkTm90QWxsb3csIGNvbnN0IEF0b21TdHJpbmcmIGRvd25sb2FkQXR0cmlidXRlID0gbnVsbEF0
b20oKSk7CisgICAgV0VCQ09SRV9FWFBPUlQgTmF2aWdhdGlvbkFjdGlvbihEb2N1bWVudCYsIGNv
bnN0IFJlc291cmNlUmVxdWVzdCYsIE5hdmlnYXRpb25UeXBlID0gTmF2aWdhdGlvblR5cGU6Ok90
aGVyLCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5ID0gU2hvdWxkT3BlbkV4dGVybmFsVVJM
c1BvbGljeTo6U2hvdWxkTm90QWxsb3csIEV2ZW50KiA9IG51bGxwdHIsIGNvbnN0IEF0b21TdHJp
bmcmIGRvd25sb2FkQXR0cmlidXRlID0gbnVsbEF0b20oKSk7CisgICAgTmF2aWdhdGlvbkFjdGlv
bihEb2N1bWVudCYsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIEZyYW1lTG9hZFR5cGUsIGJvb2wg
aXNGb3JtU3VibWlzc2lvbiwgRXZlbnQqID0gbnVsbHB0ciwgU2hvdWxkT3BlbkV4dGVybmFsVVJM
c1BvbGljeSA9IFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNob3VsZE5vdEFsbG93LCBj
b25zdCBBdG9tU3RyaW5nJiBkb3dubG9hZEF0dHJpYnV0ZSA9IG51bGxBdG9tKCkpOwogCiAgICAg
V0VCQ09SRV9FWFBPUlQgfk5hdmlnYXRpb25BY3Rpb24oKTsKIApAQCAtMTAyLDcgKzEwMiw3IEBA
IHB1YmxpYzoKIAogICAgIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgc2hvdWxkT3BlbkV4
dGVybmFsVVJMc1BvbGljeSgpIGNvbnN0IHsgcmV0dXJuIG1fc2hvdWxkT3BlbkV4dGVybmFsVVJM
c1BvbGljeTsgfQogICAgIHZvaWQgc2V0U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeShTaG91
bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IHBvbGljeSkgeyAgbV9zaG91bGRPcGVuRXh0ZXJuYWxV
UkxzUG9saWN5ID0gcG9saWN5OyB9Ci0gICAgSW5pdGlhdGVkQnlNYWluRnJhbWUgaW5pdGlhdGVk
QnlNYWluRnJhbWUoKSBjb25zdCB7IHJldHVybiBtX2luaXRpYXRlZEJ5TWFpbkZyYW1lOyB9Cisg
ICAgYm9vbCBpbml0aWF0ZWRCeU1haW5GcmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1faW5pdGlhdGVk
QnlNYWluRnJhbWU7IH0KIAogICAgIGNvbnN0IEF0b21TdHJpbmcmIGRvd25sb2FkQXR0cmlidXRl
KCkgY29uc3QgeyByZXR1cm4gbV9kb3dubG9hZEF0dHJpYnV0ZTsgfQogCkBAIC0xMzYsMTIgKzEz
NiwxMiBAQCBwcml2YXRlOgogICAgIFJlc291cmNlUmVxdWVzdCBtX3Jlc291cmNlUmVxdWVzdDsK
ICAgICBOYXZpZ2F0aW9uVHlwZSBtX3R5cGU7CiAgICAgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1Bv
bGljeSBtX3Nob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k7Ci0gICAgSW5pdGlhdGVkQnlNYWlu
RnJhbWUgbV9pbml0aWF0ZWRCeU1haW5GcmFtZTsKICAgICBzdGQ6Om9wdGlvbmFsPFVJRXZlbnRX
aXRoS2V5U3RhdGVEYXRhPiBtX2tleVN0YXRlRXZlbnREYXRhOwogICAgIHN0ZDo6b3B0aW9uYWw8
TW91c2VFdmVudERhdGE+IG1fbW91c2VFdmVudERhdGE7CiAgICAgUmVmUHRyPFVzZXJHZXN0dXJl
VG9rZW4+IG1fdXNlckdlc3R1cmVUb2tlbiB7IFVzZXJHZXN0dXJlSW5kaWNhdG9yOjpjdXJyZW50
VXNlckdlc3R1cmUoKSB9OwogICAgIEF0b21TdHJpbmcgbV9kb3dubG9hZEF0dHJpYnV0ZTsKICAg
ICBib29sIG1fdHJlYXRBc1NhbWVPcmlnaW5OYXZpZ2F0aW9uOworICAgIGJvb2wgbV9pbml0aWF0
ZWRCeU1haW5GcmFtZTsKICAgICBib29sIG1faGFzT3BlbmVkRnJhbWVzIHsgZmFsc2UgfTsKICAg
ICBib29sIG1fb3BlbmVkQnlET01XaXRoT3BlbmVyIHsgZmFsc2UgfTsKICAgICBzdGQ6Om9wdGlv
bmFsPEJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXI+IG1fdGFyZ2V0QmFja0ZvcndhcmRJdGVtSWRl
bnRpZmllcjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uU2NoZWR1bGVy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvblNjaGVk
dWxlci5jcHAJKHJldmlzaW9uIDI4NDQ2NykKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZp
Z2F0aW9uU2NoZWR1bGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzEsMjAgKzcxLDYgQEAgcHVi
bGljOgogICAgICAgICAsIG1fdXNlckdlc3R1cmVUb0ZvcndhcmQoVXNlckdlc3R1cmVJbmRpY2F0
b3I6OmN1cnJlbnRVc2VyR2VzdHVyZSgpKQogICAgIHsKICAgICB9Ci0gICAgU2NoZWR1bGVkTmF2
aWdhdGlvbihkb3VibGUgZGVsYXksIExvY2tIaXN0b3J5IGxvY2tIaXN0b3J5LCBMb2NrQmFja0Zv
cndhcmRMaXN0IGxvY2tCYWNrRm9yd2FyZExpc3QsIGJvb2wgd2FzRHVyaW5nTG9hZCwgYm9vbCBp
c0xvY2F0aW9uQ2hhbmdlLCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IGV4dGVybmFsVVJM
UG9saWN5KQotICAgICAgICA6IG1fZGVsYXkoZGVsYXkpCi0gICAgICAgICwgbV9sb2NrSGlzdG9y
eShsb2NrSGlzdG9yeSkKLSAgICAgICAgLCBtX2xvY2tCYWNrRm9yd2FyZExpc3QobG9ja0JhY2tG
b3J3YXJkTGlzdCkKLSAgICAgICAgLCBtX3dhc0R1cmluZ0xvYWQod2FzRHVyaW5nTG9hZCkKLSAg
ICAgICAgLCBtX2lzTG9jYXRpb25DaGFuZ2UoaXNMb2NhdGlvbkNoYW5nZSkKLSAgICAgICAgLCBt
X3VzZXJHZXN0dXJlVG9Gb3J3YXJkKFVzZXJHZXN0dXJlSW5kaWNhdG9yOjpjdXJyZW50VXNlckdl
c3R1cmUoKSkKLSAgICAgICAgLCBtX3Nob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3koZXh0ZXJu
YWxVUkxQb2xpY3kpCi0gICAgewotICAgICAgICBpZiAoYXV0byogZnJhbWUgPSBsZXhpY2FsRnJh
bWVGcm9tQ29tbW9uVk0oKSkgewotICAgICAgICAgICAgaWYgKGZyYW1lLT5pc01haW5GcmFtZSgp
KQotICAgICAgICAgICAgICAgIG1faW5pdGlhdGVkQnlNYWluRnJhbWUgPSBJbml0aWF0ZWRCeU1h
aW5GcmFtZTo6WWVzOwotICAgICAgICB9Ci0gICAgfQogICAgIHZpcnR1YWwgflNjaGVkdWxlZE5h
dmlnYXRpb24oKSA9IGRlZmF1bHQ7CiAKICAgICB2aXJ0dWFsIHZvaWQgZmlyZShGcmFtZSYpID0g
MDsKQEAgLTEwMiw4ICs4OCw2IEBAIHB1YmxpYzoKIAogcHJvdGVjdGVkOgogICAgIHZvaWQgY2xl
YXJVc2VyR2VzdHVyZSgpIHsgbV91c2VyR2VzdHVyZVRvRm9yd2FyZCA9IG51bGxwdHI7IH0KLSAg
ICBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IHNob3VsZE9wZW5FeHRlcm5hbFVSTHMoKSBj
b25zdCB7IHJldHVybiBtX3Nob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k7IH0KLSAgICBJbml0
aWF0ZWRCeU1haW5GcmFtZSBpbml0aWF0ZWRCeU1haW5GcmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1f
aW5pdGlhdGVkQnlNYWluRnJhbWU7IH07CiAKIHByaXZhdGU6CiAgICAgZG91YmxlIG1fZGVsYXk7
CkBAIC0xMTIsMTQgKzk2LDI2IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3dhc0R1cmluZ0xvYWQ7
CiAgICAgYm9vbCBtX2lzTG9jYXRpb25DaGFuZ2U7CiAgICAgUmVmUHRyPFVzZXJHZXN0dXJlVG9r
ZW4+IG1fdXNlckdlc3R1cmVUb0ZvcndhcmQ7Ci0gICAgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1Bv
bGljeSBtX3Nob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgeyBTaG91bGRPcGVuRXh0ZXJuYWxV
UkxzUG9saWN5OjpTaG91bGROb3RBbGxvdyB9OwotICAgIEluaXRpYXRlZEJ5TWFpbkZyYW1lIG1f
aW5pdGlhdGVkQnlNYWluRnJhbWUgeyBJbml0aWF0ZWRCeU1haW5GcmFtZTo6VW5rbm93biB9Owog
fTsKIAorc3RhdGljIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgY2hvb3NlVGhlTW9zdFBl
cm1pc3NpdmVFeHRlcm5hbFVSTHNQb2xpY3koU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSBw
b2xpY3lBLCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IHBvbGljeUIpCit7CisgICAgcmV0
dXJuIHN0YXRpY19jYXN0PFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k+KHN0ZDo6bWF4KHN0
YXRpY19jYXN0PHVpbnQ4X3Q+KHBvbGljeUEpLCBzdGF0aWNfY2FzdDx1aW50OF90Pihwb2xpY3lC
KSkpOworfQorCitzdGF0aWMgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSBjb21wdXRlRXh0
ZXJuYWxVUkxzUG9saWN5Rm9yU2FtZU9yaWdpbk5hdmlnYXRpb24oRG9jdW1lbnQmIGluaXRpYXRp
bmdEb2N1bWVudCwgRnJhbWUmIHRhcmdldEZyYW1lKQoreworICAgIGlmIChhdXRvKiB0YXJnZXRE
b2N1bWVudCA9IHRhcmdldEZyYW1lLmRvY3VtZW50KCkpIHsKKyAgICAgICAgaWYgKHRhcmdldERv
Y3VtZW50LT5zZWN1cml0eU9yaWdpbigpLmlzU2FtZU9yaWdpbkFzKGluaXRpYXRpbmdEb2N1bWVu
dC5zZWN1cml0eU9yaWdpbigpKSkKKyAgICAgICAgICAgIHJldHVybiBjaG9vc2VUaGVNb3N0UGVy
bWlzc2l2ZUV4dGVybmFsVVJMc1BvbGljeSh0YXJnZXREb2N1bWVudC0+c2hvdWxkT3BlbkV4dGVy
bmFsVVJMc1BvbGljeVRvUHJvcGFnYXRlKCksIGluaXRpYXRpbmdEb2N1bWVudC5zaG91bGRPcGVu
RXh0ZXJuYWxVUkxzUG9saWN5VG9Qcm9wYWdhdGUoKSk7CisgICAgfQorICAgIHJldHVybiBpbml0
aWF0aW5nRG9jdW1lbnQuc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeVRvUHJvcGFnYXRlKCk7
Cit9CisKIGNsYXNzIFNjaGVkdWxlZFVSTE5hdmlnYXRpb24gOiBwdWJsaWMgU2NoZWR1bGVkTmF2
aWdhdGlvbiB7CiBwcm90ZWN0ZWQ6CiAgICAgU2NoZWR1bGVkVVJMTmF2aWdhdGlvbihEb2N1bWVu
dCYgaW5pdGlhdGluZ0RvY3VtZW50LCBkb3VibGUgZGVsYXksIFNlY3VyaXR5T3JpZ2luKiBzZWN1
cml0eU9yaWdpbiwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIExvY2tI
aXN0b3J5IGxvY2tIaXN0b3J5LCBMb2NrQmFja0ZvcndhcmRMaXN0IGxvY2tCYWNrRm9yd2FyZExp
c3QsIGJvb2wgZHVyaW5nTG9hZCwgYm9vbCBpc0xvY2F0aW9uQ2hhbmdlKQotICAgICAgICA6IFNj
aGVkdWxlZE5hdmlnYXRpb24oZGVsYXksIGxvY2tIaXN0b3J5LCBsb2NrQmFja0ZvcndhcmRMaXN0
LCBkdXJpbmdMb2FkLCBpc0xvY2F0aW9uQ2hhbmdlLCBpbml0aWF0aW5nRG9jdW1lbnQuc2hvdWxk
T3BlbkV4dGVybmFsVVJMc1BvbGljeVRvUHJvcGFnYXRlKCkpCisgICAgICAgIDogU2NoZWR1bGVk
TmF2aWdhdGlvbihkZWxheSwgbG9ja0hpc3RvcnksIGxvY2tCYWNrRm9yd2FyZExpc3QsIGR1cmlu
Z0xvYWQsIGlzTG9jYXRpb25DaGFuZ2UpCiAgICAgICAgICwgbV9pbml0aWF0aW5nRG9jdW1lbnQg
eyBpbml0aWF0aW5nRG9jdW1lbnQgfQogICAgICAgICAsIG1fc2VjdXJpdHlPcmlnaW4geyBzZWN1
cml0eU9yaWdpbiB9CiAgICAgICAgICwgbV91cmwgeyB1cmwgfQpAQCAtMTU2LDYgKzE1Miw3IEBA
IHByb3RlY3RlZDoKICAgICBTZWN1cml0eU9yaWdpbiogc2VjdXJpdHlPcmlnaW4oKSBjb25zdCB7
IHJldHVybiBtX3NlY3VyaXR5T3JpZ2luLmdldCgpOyB9CiAgICAgY29uc3QgVVJMJiB1cmwoKSBj
b25zdCB7IHJldHVybiBtX3VybDsgfQogICAgIFN0cmluZyByZWZlcnJlcigpIGNvbnN0IHsgcmV0
dXJuIG1fcmVmZXJyZXI7IH0KKyAgICBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IHNob3Vs
ZE9wZW5FeHRlcm5hbFVSTHMoRnJhbWUmIHRhcmdldEZyYW1lKSB7IHJldHVybiBjb21wdXRlRXh0
ZXJuYWxVUkxzUG9saWN5Rm9yU2FtZU9yaWdpbk5hdmlnYXRpb24oaW5pdGlhdGluZ0RvY3VtZW50
KCksIHRhcmdldEZyYW1lKTsgfQogCiBwcml2YXRlOgogICAgIFJlZjxEb2N1bWVudD4gbV9pbml0
aWF0aW5nRG9jdW1lbnQ7CkBAIC0xOTIsMTMgKzE4OSwxMyBAQCBwdWJsaWM6CiAKICAgICAgICAg
Ym9vbCByZWZyZXNoID0gZXF1YWxJZ25vcmluZ0ZyYWdtZW50SWRlbnRpZmllcihmcmFtZS5kb2N1
bWVudCgpLT51cmwoKSwgdXJsKCkpOwogICAgICAgICBSZXNvdXJjZVJlcXVlc3QgcmVzb3VyY2VS
ZXF1ZXN0IHsgdXJsKCksIHJlZmVycmVyKCksIHJlZnJlc2ggPyBSZXNvdXJjZVJlcXVlc3RDYWNo
ZVBvbGljeTo6UmVsb2FkSWdub3JpbmdDYWNoZURhdGEgOiBSZXNvdXJjZVJlcXVlc3RDYWNoZVBv
bGljeTo6VXNlUHJvdG9jb2xDYWNoZVBvbGljeSB9OwotICAgICAgICBpZiAoaW5pdGlhdGVkQnlN
YWluRnJhbWUoKSA9PSBJbml0aWF0ZWRCeU1haW5GcmFtZTo6WWVzKQorICAgICAgICBpZiAoaW5p
dGlhdGluZ0RvY3VtZW50KCkuZnJhbWUoKS0+aXNNYWluRnJhbWUoKSkKICAgICAgICAgICAgIHJl
c291cmNlUmVxdWVzdC5zZXRSZXF1ZXN0ZXIoUmVzb3VyY2VSZXF1ZXN0OjpSZXF1ZXN0ZXI6Ok1h
aW4pOwotICAgICAgICBGcmFtZUxvYWRSZXF1ZXN0IGZyYW1lTG9hZFJlcXVlc3QgeyBpbml0aWF0
aW5nRG9jdW1lbnQoKSwgKnNlY3VyaXR5T3JpZ2luKCksIFdURk1vdmUocmVzb3VyY2VSZXF1ZXN0
KSwgIl9zZWxmIiwgaW5pdGlhdGVkQnlNYWluRnJhbWUoKSB9OworICAgICAgICBGcmFtZUxvYWRS
ZXF1ZXN0IGZyYW1lTG9hZFJlcXVlc3QgeyBpbml0aWF0aW5nRG9jdW1lbnQoKSwgKnNlY3VyaXR5
T3JpZ2luKCksIFdURk1vdmUocmVzb3VyY2VSZXF1ZXN0KSwgIl9zZWxmIl9zIH07CiAgICAgICAg
IGZyYW1lTG9hZFJlcXVlc3Quc2V0TG9ja0hpc3RvcnkobG9ja0hpc3RvcnkoKSk7CiAgICAgICAg
IGZyYW1lTG9hZFJlcXVlc3Quc2V0TG9ja0JhY2tGb3J3YXJkTGlzdChsb2NrQmFja0ZvcndhcmRM
aXN0KCkpOwogICAgICAgICBmcmFtZUxvYWRSZXF1ZXN0LmRpc2FibGVOYXZpZ2F0aW9uVG9JbnZh
bGlkVVJMKCk7Ci0gICAgICAgIGZyYW1lTG9hZFJlcXVlc3Quc2V0U2hvdWxkT3BlbkV4dGVybmFs
VVJMc1BvbGljeShzaG91bGRPcGVuRXh0ZXJuYWxVUkxzKCkpOworICAgICAgICBmcmFtZUxvYWRS
ZXF1ZXN0LnNldFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3koc2hvdWxkT3BlbkV4dGVybmFs
VVJMcyhmcmFtZSkpOwogCiAgICAgICAgIGZyYW1lLmxvYWRlcigpLmNoYW5nZUxvY2F0aW9uKFdU
Rk1vdmUoZnJhbWVMb2FkUmVxdWVzdCkpOwogICAgIH0KQEAgLTIyNiwxMSArMjIzLDExIEBAIHB1
YmxpYzoKICAgICAgICAgVXNlckdlc3R1cmVJbmRpY2F0b3IgZ2VzdHVyZUluZGljYXRvciB7IHVz
ZXJHZXN0dXJlVG9Gb3J3YXJkKCkgfTsKIAogICAgICAgICBSZXNvdXJjZVJlcXVlc3QgcmVzb3Vy
Y2VSZXF1ZXN0IHsgdXJsKCksIHJlZmVycmVyKCksIFJlc291cmNlUmVxdWVzdENhY2hlUG9saWN5
OjpVc2VQcm90b2NvbENhY2hlUG9saWN5IH07Ci0gICAgICAgIEZyYW1lTG9hZFJlcXVlc3QgZnJh
bWVMb2FkUmVxdWVzdCB7IGluaXRpYXRpbmdEb2N1bWVudCgpLCAqc2VjdXJpdHlPcmlnaW4oKSwg
V1RGTW92ZShyZXNvdXJjZVJlcXVlc3QpLCAiX3NlbGYiLCBpbml0aWF0ZWRCeU1haW5GcmFtZSgp
IH07CisgICAgICAgIEZyYW1lTG9hZFJlcXVlc3QgZnJhbWVMb2FkUmVxdWVzdCB7IGluaXRpYXRp
bmdEb2N1bWVudCgpLCAqc2VjdXJpdHlPcmlnaW4oKSwgV1RGTW92ZShyZXNvdXJjZVJlcXVlc3Qp
LCAiX3NlbGYiX3MgfTsKICAgICAgICAgZnJhbWVMb2FkUmVxdWVzdC5zZXRMb2NrSGlzdG9yeShs
b2NrSGlzdG9yeSgpKTsKICAgICAgICAgZnJhbWVMb2FkUmVxdWVzdC5zZXRMb2NrQmFja0Zvcndh
cmRMaXN0KGxvY2tCYWNrRm9yd2FyZExpc3QoKSk7CiAgICAgICAgIGZyYW1lTG9hZFJlcXVlc3Qu
ZGlzYWJsZU5hdmlnYXRpb25Ub0ludmFsaWRVUkwoKTsKLSAgICAgICAgZnJhbWVMb2FkUmVxdWVz
dC5zZXRTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KHNob3VsZE9wZW5FeHRlcm5hbFVSTHMo
KSk7CisgICAgICAgIGZyYW1lTG9hZFJlcXVlc3Quc2V0U2hvdWxkT3BlbkV4dGVybmFsVVJMc1Bv
bGljeShzaG91bGRPcGVuRXh0ZXJuYWxVUkxzKGZyYW1lKSk7CiAKICAgICAgICAgYXV0byBjb21w
bGV0aW9uSGFuZGxlciA9IHN0ZDo6ZXhjaGFuZ2UobV9jb21wbGV0aW9uSGFuZGxlciwgbnVsbHB0
cik7CiAgICAgICAgIGZyYW1lLmxvYWRlcigpLmNoYW5nZUxvY2F0aW9uKFdURk1vdmUoZnJhbWVM
b2FkUmVxdWVzdCkpOwpAQCAtMjUzLDEwICsyNTAsMTAgQEAgcHVibGljOgogICAgICAgICBVc2Vy
R2VzdHVyZUluZGljYXRvciBnZXN0dXJlSW5kaWNhdG9yIHsgdXNlckdlc3R1cmVUb0ZvcndhcmQo
KSB9OwogCiAgICAgICAgIFJlc291cmNlUmVxdWVzdCByZXNvdXJjZVJlcXVlc3QgeyB1cmwoKSwg
cmVmZXJyZXIoKSwgUmVzb3VyY2VSZXF1ZXN0Q2FjaGVQb2xpY3k6OlJlbG9hZElnbm9yaW5nQ2Fj
aGVEYXRhIH07Ci0gICAgICAgIEZyYW1lTG9hZFJlcXVlc3QgZnJhbWVMb2FkUmVxdWVzdCB7IGlu
aXRpYXRpbmdEb2N1bWVudCgpLCAqc2VjdXJpdHlPcmlnaW4oKSwgV1RGTW92ZShyZXNvdXJjZVJl
cXVlc3QpLCAiX3NlbGYiLCBpbml0aWF0ZWRCeU1haW5GcmFtZSgpIH07CisgICAgICAgIEZyYW1l
TG9hZFJlcXVlc3QgZnJhbWVMb2FkUmVxdWVzdCB7IGluaXRpYXRpbmdEb2N1bWVudCgpLCAqc2Vj
dXJpdHlPcmlnaW4oKSwgV1RGTW92ZShyZXNvdXJjZVJlcXVlc3QpLCAiX3NlbGYiX3MgfTsKICAg
ICAgICAgZnJhbWVMb2FkUmVxdWVzdC5zZXRMb2NrSGlzdG9yeShsb2NrSGlzdG9yeSgpKTsKICAg
ICAgICAgZnJhbWVMb2FkUmVxdWVzdC5zZXRMb2NrQmFja0ZvcndhcmRMaXN0KGxvY2tCYWNrRm9y
d2FyZExpc3QoKSk7Ci0gICAgICAgIGZyYW1lTG9hZFJlcXVlc3Quc2V0U2hvdWxkT3BlbkV4dGVy
bmFsVVJMc1BvbGljeShzaG91bGRPcGVuRXh0ZXJuYWxVUkxzKCkpOworICAgICAgICBmcmFtZUxv
YWRSZXF1ZXN0LnNldFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3koc2hvdWxkT3BlbkV4dGVy
bmFsVVJMcyhmcmFtZSkpOwogCiAgICAgICAgIGZyYW1lLmxvYWRlcigpLmNoYW5nZUxvY2F0aW9u
KFdURk1vdmUoZnJhbWVMb2FkUmVxdWVzdCkpOwogICAgIH0KQEAgLTI3Nyw3ICsyNzQsNyBAQCBw
dWJsaWM6CiAgICAgICAgIGlmICghbV9oaXN0b3J5U3RlcHMpIHsKICAgICAgICAgICAgIC8vIFNw
ZWNpYWwgY2FzZSBmb3IgZ28oMCkgZnJvbSBhIGZyYW1lIC0+IHJlbG9hZCBvbmx5IHRoZSBmcmFt
ZQogICAgICAgICAgICAgLy8gVG8gZm9sbG93IEZpcmVmb3ggYW5kIElFJ3MgYmVoYXZpb3IsIGhp
c3RvcnkgcmVsb2FkIGNhbiBvbmx5IG5hdmlnYXRlIHRoZSBzZWxmIGZyYW1lLgotICAgICAgICAg
ICAgZnJhbWUubG9hZGVyKCkuY2hhbmdlTG9jYXRpb24oZnJhbWUuZG9jdW1lbnQoKS0+dXJsKCks
ICJfc2VsZiIsIDAsIFJlZmVycmVyUG9saWN5OjpFbXB0eVN0cmluZywgc2hvdWxkT3BlbkV4dGVy
bmFsVVJMcygpKTsKKyAgICAgICAgICAgIGZyYW1lLmxvYWRlcigpLmNoYW5nZUxvY2F0aW9uKGZy
YW1lLmRvY3VtZW50KCktPnVybCgpLCAiX3NlbGYiX3MsIDAsIFJlZmVycmVyUG9saWN5OjpFbXB0
eVN0cmluZywgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTo6U2hvdWxkTm90QWxsb3cpOwog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIApAQCAtMjkzLDcgKzI5MCw3
IEBAIHByaXZhdGU6CiBjbGFzcyBTY2hlZHVsZWRGb3JtU3VibWlzc2lvbiA6IHB1YmxpYyBTY2hl
ZHVsZWROYXZpZ2F0aW9uIHsKIHB1YmxpYzoKICAgICBTY2hlZHVsZWRGb3JtU3VibWlzc2lvbihS
ZWY8Rm9ybVN1Ym1pc3Npb24+JiYgc3VibWlzc2lvbiwgTG9ja0JhY2tGb3J3YXJkTGlzdCBsb2Nr
QmFja0ZvcndhcmRMaXN0LCBib29sIGR1cmluZ0xvYWQpCi0gICAgICAgIDogU2NoZWR1bGVkTmF2
aWdhdGlvbigwLCBzdWJtaXNzaW9uLT5sb2NrSGlzdG9yeSgpLCBsb2NrQmFja0ZvcndhcmRMaXN0
LCBkdXJpbmdMb2FkLCB0cnVlLCBzdWJtaXNzaW9uLT5zdGF0ZSgpLnNvdXJjZURvY3VtZW50KCku
c2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeVRvUHJvcGFnYXRlKCkpCisgICAgICAgIDogU2No
ZWR1bGVkTmF2aWdhdGlvbigwLCBzdWJtaXNzaW9uLT5sb2NrSGlzdG9yeSgpLCBsb2NrQmFja0Zv
cndhcmRMaXN0LCBkdXJpbmdMb2FkLCB0cnVlKQogICAgICAgICAsIG1fc3VibWlzc2lvbihXVEZN
b3ZlKHN1Ym1pc3Npb24pKQogICAgIHsKICAgICB9CkBAIC0zMTIsMTEgKzMwOSwxMSBAQCBwdWJs
aWM6CiAgICAgICAgIGF1dG8mIHJlcXVlc3RpbmdEb2N1bWVudCA9IG1fc3VibWlzc2lvbi0+c3Rh
dGUoKS5zb3VyY2VEb2N1bWVudCgpOwogICAgICAgICBpZiAoIXJlcXVlc3RpbmdEb2N1bWVudC5j
YW5OYXZpZ2F0ZSgmZnJhbWUpKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBGcmFtZUxv
YWRSZXF1ZXN0IGZyYW1lTG9hZFJlcXVlc3QgeyByZXF1ZXN0aW5nRG9jdW1lbnQsIHJlcXVlc3Rp
bmdEb2N1bWVudC5zZWN1cml0eU9yaWdpbigpLCB7IH0sIHsgfSwgaW5pdGlhdGVkQnlNYWluRnJh
bWUoKSB9OworICAgICAgICBGcmFtZUxvYWRSZXF1ZXN0IGZyYW1lTG9hZFJlcXVlc3QgeyByZXF1
ZXN0aW5nRG9jdW1lbnQsIHJlcXVlc3RpbmdEb2N1bWVudC5zZWN1cml0eU9yaWdpbigpLCB7IH0s
IHsgfSB9OwogICAgICAgICBmcmFtZUxvYWRSZXF1ZXN0LnNldExvY2tIaXN0b3J5KGxvY2tIaXN0
b3J5KCkpOwogICAgICAgICBmcmFtZUxvYWRSZXF1ZXN0LnNldExvY2tCYWNrRm9yd2FyZExpc3Qo
bG9ja0JhY2tGb3J3YXJkTGlzdCgpKTsKICAgICAgICAgZnJhbWVMb2FkUmVxdWVzdC5zZXRSZWZl
cnJlclBvbGljeShSZWZlcnJlclBvbGljeTo6RW1wdHlTdHJpbmcpOwotICAgICAgICBmcmFtZUxv
YWRSZXF1ZXN0LnNldFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3koc2hvdWxkT3BlbkV4dGVy
bmFsVVJMcygpKTsKKyAgICAgICAgZnJhbWVMb2FkUmVxdWVzdC5zZXRTaG91bGRPcGVuRXh0ZXJu
YWxVUkxzUG9saWN5KGNvbXB1dGVFeHRlcm5hbFVSTHNQb2xpY3lGb3JTYW1lT3JpZ2luTmF2aWdh
dGlvbihyZXF1ZXN0aW5nRG9jdW1lbnQsIGZyYW1lKSk7CiAgICAgICAgIG1fc3VibWlzc2lvbi0+
cG9wdWxhdGVGcmFtZUxvYWRSZXF1ZXN0KGZyYW1lTG9hZFJlcXVlc3QpOwogICAgICAgICBmcmFt
ZS5sb2FkZXIoKS5sb2FkRnJhbWVSZXF1ZXN0KFdURk1vdmUoZnJhbWVMb2FkUmVxdWVzdCksIG1f
c3VibWlzc2lvbi0+ZXZlbnQoKSwgbV9zdWJtaXNzaW9uLT50YWtlU3RhdGUoKSk7CiAgICAgfQpA
QCAtMzY2LDExICszNjMsMTEgQEAgcHVibGljOgogICAgICAgICBTdWJzdGl0dXRlRGF0YSByZXBs
YWNlbWVudERhdGEgeyBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpLCBtX29yaWdpbkRvY3VtZW50LnVy
bCgpLCByZXBsYWNlbWVudFJlc3BvbnNlLCBTdWJzdGl0dXRlRGF0YTo6U2Vzc2lvbkhpc3RvcnlW
aXNpYmlsaXR5OjpIaWRkZW4gfTsKIAogICAgICAgICBSZXNvdXJjZVJlcXVlc3QgcmVzb3VyY2VS
ZXF1ZXN0IHsgbV9vcmlnaW5Eb2N1bWVudC51cmwoKSwgZW1wdHlTdHJpbmcoKSwgUmVzb3VyY2VS
ZXF1ZXN0Q2FjaGVQb2xpY3k6OlJlbG9hZElnbm9yaW5nQ2FjaGVEYXRhIH07Ci0gICAgICAgIEZy
YW1lTG9hZFJlcXVlc3QgZnJhbWVMb2FkUmVxdWVzdCB7IG1fb3JpZ2luRG9jdW1lbnQsIG1fb3Jp
Z2luRG9jdW1lbnQuc2VjdXJpdHlPcmlnaW4oKSwgV1RGTW92ZShyZXNvdXJjZVJlcXVlc3QpLCB7
IH0sIGluaXRpYXRlZEJ5TWFpbkZyYW1lKCkgfTsKKyAgICAgICAgRnJhbWVMb2FkUmVxdWVzdCBm
cmFtZUxvYWRSZXF1ZXN0IHsgbV9vcmlnaW5Eb2N1bWVudCwgbV9vcmlnaW5Eb2N1bWVudC5zZWN1
cml0eU9yaWdpbigpLCBXVEZNb3ZlKHJlc291cmNlUmVxdWVzdCksIHsgfSB9OwogICAgICAgICBm
cmFtZUxvYWRSZXF1ZXN0LnNldExvY2tIaXN0b3J5KGxvY2tIaXN0b3J5KCkpOwogICAgICAgICBm
cmFtZUxvYWRSZXF1ZXN0LnNldExvY2tCYWNrRm9yd2FyZExpc3QobG9ja0JhY2tGb3J3YXJkTGlz
dCgpKTsKICAgICAgICAgZnJhbWVMb2FkUmVxdWVzdC5zZXRTdWJzdGl0dXRlRGF0YShyZXBsYWNl
bWVudERhdGEpOwotICAgICAgICBmcmFtZUxvYWRSZXF1ZXN0LnNldFNob3VsZE9wZW5FeHRlcm5h
bFVSTHNQb2xpY3koc2hvdWxkT3BlbkV4dGVybmFsVVJMcygpKTsKKyAgICAgICAgZnJhbWVMb2Fk
UmVxdWVzdC5zZXRTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KFNob3VsZE9wZW5FeHRlcm5h
bFVSTHNQb2xpY3k6OlNob3VsZE5vdEFsbG93KTsKICAgICAgICAgZnJhbWUubG9hZGVyKCkubG9h
ZChXVEZNb3ZlKGZyYW1lTG9hZFJlcXVlc3QpKTsKICAgICB9CiAKQEAgLTQ2NiwxNCArNDYzLDEy
IEBAIHZvaWQgTmF2aWdhdGlvblNjaGVkdWxlcjo6c2NoZWR1bGVMb2NhdGkKICAgICAvLyBmcmFn
bWVudCBwYXJ0LCB3ZSBkb24ndCBuZWVkIHRvIHNjaGVkdWxlIHRoZSBsb2NhdGlvbiBjaGFuZ2Uu
CiAgICAgaWYgKHVybC5oYXNGcmFnbWVudElkZW50aWZpZXIoKSAmJiBlcXVhbElnbm9yaW5nRnJh
Z21lbnRJZGVudGlmaWVyKG1fZnJhbWUuZG9jdW1lbnQoKS0+dXJsKCksIHVybCkpIHsKICAgICAg
ICAgUmVzb3VyY2VSZXF1ZXN0IHJlc291cmNlUmVxdWVzdCB7IG1fZnJhbWUuZG9jdW1lbnQoKS0+
Y29tcGxldGVVUkwodXJsLnN0cmluZygpKSwgcmVmZXJyZXIsIFJlc291cmNlUmVxdWVzdENhY2hl
UG9saWN5OjpVc2VQcm90b2NvbENhY2hlUG9saWN5IH07Ci0gICAgICAgIGF1dG8qIGZyYW1lID0g
bGV4aWNhbEZyYW1lRnJvbUNvbW1vblZNKCk7Ci0gICAgICAgIGF1dG8gaW5pdGlhdGVkQnlNYWlu
RnJhbWUgPSBmcmFtZSAmJiBmcmFtZS0+aXNNYWluRnJhbWUoKSA/IEluaXRpYXRlZEJ5TWFpbkZy
YW1lOjpZZXMgOiBJbml0aWF0ZWRCeU1haW5GcmFtZTo6VW5rbm93bjsKLSAgICAgICAgCi0gICAg
ICAgIEZyYW1lTG9hZFJlcXVlc3QgZnJhbWVMb2FkUmVxdWVzdCB7IGluaXRpYXRpbmdEb2N1bWVu
dCwgc2VjdXJpdHlPcmlnaW4sIFdURk1vdmUocmVzb3VyY2VSZXF1ZXN0KSwgIl9zZWxmIl9zLCBp
bml0aWF0ZWRCeU1haW5GcmFtZSB9OworCisgICAgICAgIEZyYW1lTG9hZFJlcXVlc3QgZnJhbWVM
b2FkUmVxdWVzdCB7IGluaXRpYXRpbmdEb2N1bWVudCwgc2VjdXJpdHlPcmlnaW4sIFdURk1vdmUo
cmVzb3VyY2VSZXF1ZXN0KSwgIl9zZWxmIl9zIH07CiAgICAgICAgIGZyYW1lTG9hZFJlcXVlc3Qu
c2V0TG9ja0hpc3RvcnkobG9ja0hpc3RvcnkpOwogICAgICAgICBmcmFtZUxvYWRSZXF1ZXN0LnNl
dExvY2tCYWNrRm9yd2FyZExpc3QobG9ja0JhY2tGb3J3YXJkTGlzdCk7CiAgICAgICAgIGZyYW1l
TG9hZFJlcXVlc3QuZGlzYWJsZU5hdmlnYXRpb25Ub0ludmFsaWRVUkwoKTsKLSAgICAgICAgZnJh
bWVMb2FkUmVxdWVzdC5zZXRTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KGluaXRpYXRpbmdE
b2N1bWVudC5zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5VG9Qcm9wYWdhdGUoKSk7CisgICAg
ICAgIGZyYW1lTG9hZFJlcXVlc3Quc2V0U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeShjb21w
dXRlRXh0ZXJuYWxVUkxzUG9saWN5Rm9yU2FtZU9yaWdpbk5hdmlnYXRpb24oaW5pdGlhdGluZ0Rv
Y3VtZW50LCBtX2ZyYW1lKSk7CiAgICAgICAgIGxvYWRlci5jaGFuZ2VMb2NhdGlvbihXVEZNb3Zl
KGZyYW1lTG9hZFJlcXVlc3QpKTsKICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKCk7
CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNoZWNrZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Qb2xpY3lDaGVja2VyLmNwcAkocmV2
aXNpb24gMjg0NDY3KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNoZWNrZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMTYsNyArMTE2LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6UG9s
aWN5Q2hlY2tlcjo6Y2hlY2tOYQogewogICAgIE5hdmlnYXRpb25BY3Rpb24gYWN0aW9uID0gbG9h
ZGVyLT50cmlnZ2VyaW5nQWN0aW9uKCk7CiAgICAgaWYgKGFjdGlvbi5pc0VtcHR5KCkpIHsKLSAg
ICAgICAgYWN0aW9uID0gTmF2aWdhdGlvbkFjdGlvbiB7ICptX2ZyYW1lLmRvY3VtZW50KCksIHJl
cXVlc3QsIEluaXRpYXRlZEJ5TWFpbkZyYW1lOjpVbmtub3duLCBOYXZpZ2F0aW9uVHlwZTo6T3Ro
ZXIsIGxvYWRlci0+c2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeVRvUHJvcGFnYXRlKCkgfTsK
KyAgICAgICAgYWN0aW9uID0gTmF2aWdhdGlvbkFjdGlvbiB7ICptX2ZyYW1lLmRvY3VtZW50KCks
IHJlcXVlc3QsIE5hdmlnYXRpb25UeXBlOjpPdGhlciwgbG9hZGVyLT5zaG91bGRPcGVuRXh0ZXJu
YWxVUkxzUG9saWN5VG9Qcm9wYWdhdGUoKSB9OwogICAgICAgICBsb2FkZXItPnNldFRyaWdnZXJp
bmdBY3Rpb24oTmF2aWdhdGlvbkFjdGlvbiB7IGFjdGlvbiB9KTsKICAgICB9CiAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAJKHJldmlzaW9u
IDI4NDQ2NykKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTg0LDExICsxODQsMTEgQEAgc3RhdGljIHZvaWQgb3Blbk5l
d1dpbmRvdyhjb25zdCBVUkwmIHVybAogICAgIGlmICghb2xkUGFnZSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgRnJhbWVMb2FkUmVxdWVzdCBmcmFtZUxvYWRSZXF1ZXN0IHsgKmZyYW1lLmRvY3Vt
ZW50KCksIGZyYW1lLmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCksIFJlc291cmNlUmVxdWVz
dCh1cmxUb0xvYWQsIGZyYW1lLmxvYWRlcigpLm91dGdvaW5nUmVmZXJyZXIoKSksIHsgfSwgSW5p
dGlhdGVkQnlNYWluRnJhbWU6OlVua25vd24gfTsKKyAgICBGcmFtZUxvYWRSZXF1ZXN0IGZyYW1l
TG9hZFJlcXVlc3QgeyAqZnJhbWUuZG9jdW1lbnQoKSwgZnJhbWUuZG9jdW1lbnQoKS0+c2VjdXJp
dHlPcmlnaW4oKSwgUmVzb3VyY2VSZXF1ZXN0KHVybFRvTG9hZCwgZnJhbWUubG9hZGVyKCkub3V0
Z29pbmdSZWZlcnJlcigpKSwgeyB9IH07CiAgICAgZnJhbWVMb2FkUmVxdWVzdC5zZXRTaG91bGRP
cGVuRXh0ZXJuYWxVUkxzUG9saWN5KHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kpOwogICAg
IGZyYW1lTG9hZFJlcXVlc3Quc2V0TmV3RnJhbWVPcGVuZXJQb2xpY3koTmV3RnJhbWVPcGVuZXJQ
b2xpY3k6OlN1cHByZXNzKTsKIAotICAgIFBhZ2UqIG5ld1BhZ2UgPSBvbGRQYWdlLT5jaHJvbWUo
KS5jcmVhdGVXaW5kb3coZnJhbWUsIHsgfSwgeyAqZnJhbWUuZG9jdW1lbnQoKSwgZnJhbWVMb2Fk
UmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKSwgZnJhbWVMb2FkUmVxdWVzdC5pbml0aWF0ZWRCeU1h
aW5GcmFtZSgpIH0pOworICAgIFBhZ2UqIG5ld1BhZ2UgPSBvbGRQYWdlLT5jaHJvbWUoKS5jcmVh
dGVXaW5kb3coZnJhbWUsIHsgfSwgeyAqZnJhbWUuZG9jdW1lbnQoKSwgZnJhbWVMb2FkUmVxdWVz
dC5yZXNvdXJjZVJlcXVlc3QoKSB9KTsKICAgICBpZiAoIW5ld1BhZ2UpCiAgICAgICAgIHJldHVy
bjsKICAgICBuZXdQYWdlLT5jaHJvbWUoKS5zaG93KCk7CkBAIC0zOTgsNyArMzk4LDcgQEAgdm9p
ZCBDb250ZXh0TWVudUNvbnRyb2xsZXI6OmNvbnRleHRNZW51SQogICAgIGNhc2UgQ29udGV4dE1l
bnVJdGVtVGFnT3Blbkxpbms6CiAgICAgICAgIGlmIChGcmFtZSogdGFyZ2V0RnJhbWUgPSBtX2Nv
bnRleHQuaGl0VGVzdFJlc3VsdCgpLnRhcmdldEZyYW1lKCkpIHsKICAgICAgICAgICAgIFJlc291
cmNlUmVxdWVzdCByZXNvdXJjZVJlcXVlc3QgeyBtX2NvbnRleHQuaGl0VGVzdFJlc3VsdCgpLmFi
c29sdXRlTGlua1VSTCgpLCBmcmFtZS0+bG9hZGVyKCkub3V0Z29pbmdSZWZlcnJlcigpIH07Ci0g
ICAgICAgICAgICBGcmFtZUxvYWRSZXF1ZXN0IGZyYW1lTG9hZFJlcXVlc3QgeyAqZnJhbWUtPmRv
Y3VtZW50KCksIGZyYW1lLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLCBXVEZNb3ZlKHJl
c291cmNlUmVxdWVzdCksIHsgfSwgSW5pdGlhdGVkQnlNYWluRnJhbWU6OlVua25vd24gfTsKKyAg
ICAgICAgICAgIEZyYW1lTG9hZFJlcXVlc3QgZnJhbWVMb2FkUmVxdWVzdCB7ICpmcmFtZS0+ZG9j
dW1lbnQoKSwgZnJhbWUtPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCksIFdURk1vdmUocmVz
b3VyY2VSZXF1ZXN0KSwgeyB9IH07CiAgICAgICAgICAgICBmcmFtZUxvYWRSZXF1ZXN0LnNldE5l
d0ZyYW1lT3BlbmVyUG9saWN5KE5ld0ZyYW1lT3BlbmVyUG9saWN5OjpTdXBwcmVzcyk7CiAgICAg
ICAgICAgICBpZiAodGFyZ2V0RnJhbWUtPmlzTWFpbkZyYW1lKCkpCiAgICAgICAgICAgICAgICAg
ZnJhbWVMb2FkUmVxdWVzdC5zZXRTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KFNob3VsZE9w
ZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNob3VsZEFsbG93KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvRE9NV2luZG93LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0RP
TVdpbmRvdy5jcHAJKHJldmlzaW9uIDI4NDQ2NykKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9N
V2luZG93LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjM4MywyOCArMjM4MywyOCBAQCB2b2lkIERP
TVdpbmRvdzo6ZmluaXNoZWRMb2FkaW5nKCkKICAgICB9CiB9CiAKLXZvaWQgRE9NV2luZG93Ojpz
ZXRMb2NhdGlvbihET01XaW5kb3cmIGFjdGl2ZVdpbmRvdywgY29uc3QgVVJMJiBjb21wbGV0ZWRV
UkwsIFNldExvY2F0aW9uTG9ja2luZyBsb2NraW5nKQordm9pZCBET01XaW5kb3c6OnNldExvY2F0
aW9uKERPTVdpbmRvdyYgaW5jdW1iZW50V2luZG93LCBjb25zdCBVUkwmIGNvbXBsZXRlZFVSTCwg
U2V0TG9jYXRpb25Mb2NraW5nIGxvY2tpbmcpCiB7CiAgICAgaWYgKCFpc0N1cnJlbnRseURpc3Bs
YXllZEluRnJhbWUoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUmVmUHRyIGFjdGl2ZURvY3Vt
ZW50ID0gYWN0aXZlV2luZG93LmRvY3VtZW50KCk7Ci0gICAgaWYgKCFhY3RpdmVEb2N1bWVudCkK
KyAgICBSZWZQdHIgaW5jdW1iZW50RG9jdW1lbnQgPSBpbmN1bWJlbnRXaW5kb3cuZG9jdW1lbnQo
KTsKKyAgICBpZiAoIWluY3VtYmVudERvY3VtZW50KQogICAgICAgICByZXR1cm47CiAKICAgICBS
ZWZQdHIgZnJhbWUgPSB0aGlzLT5mcmFtZSgpOwotICAgIGlmICghYWN0aXZlRG9jdW1lbnQtPmNh
bk5hdmlnYXRlKGZyYW1lLmdldCgpLCBjb21wbGV0ZWRVUkwpKQorICAgIGlmICghaW5jdW1iZW50
RG9jdW1lbnQtPmNhbk5hdmlnYXRlKGZyYW1lLmdldCgpLCBjb21wbGV0ZWRVUkwpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBpZiAoaXNJbnNlY3VyZVNjcmlwdEFjY2VzcyhhY3RpdmVXaW5kb3cs
IGNvbXBsZXRlZFVSTC5zdHJpbmcoKSkpCisgICAgQVNTRVJUKGluY3VtYmVudERvY3VtZW50LT5m
cmFtZSgpKTsKKyAgICBpZiAoaXNJbnNlY3VyZVNjcmlwdEFjY2VzcyhpbmN1bWJlbnRXaW5kb3cs
IGNvbXBsZXRlZFVSTC5zdHJpbmcoKSkpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIFdlIHdh
bnQgYSBuZXcgaGlzdG9yeSBpdGVtIGlmIHdlIGFyZSBwcm9jZXNzaW5nIGEgdXNlciBnZXN0dXJl
LgogICAgIExvY2tIaXN0b3J5IGxvY2tIaXN0b3J5ID0gKGxvY2tpbmcgIT0gTG9ja0hpc3RvcnlC
YXNlZE9uR2VzdHVyZVN0YXRlIHx8ICFVc2VyR2VzdHVyZUluZGljYXRvcjo6cHJvY2Vzc2luZ1Vz
ZXJHZXN0dXJlKCkpID8gTG9ja0hpc3Rvcnk6OlllcyA6IExvY2tIaXN0b3J5OjpObzsKICAgICBM
b2NrQmFja0ZvcndhcmRMaXN0IGxvY2tCYWNrRm9yd2FyZExpc3QgPSAobG9ja2luZyAhPSBMb2Nr
SGlzdG9yeUJhc2VkT25HZXN0dXJlU3RhdGUpID8gTG9ja0JhY2tGb3J3YXJkTGlzdDo6WWVzIDog
TG9ja0JhY2tGb3J3YXJkTGlzdDo6Tm87Ci0gICAgZnJhbWUtPm5hdmlnYXRpb25TY2hlZHVsZXIo
KS5zY2hlZHVsZUxvY2F0aW9uQ2hhbmdlKCphY3RpdmVEb2N1bWVudCwgYWN0aXZlRG9jdW1lbnQt
PnNlY3VyaXR5T3JpZ2luKCksCi0gICAgICAgIC8vIEZJWE1FOiBXaGF0IGlmIGFjdGl2ZURvY3Vt
ZW50KCktPmZyYW1lKCkgaXMgMD8KLSAgICAgICAgY29tcGxldGVkVVJMLCBhY3RpdmVEb2N1bWVu
dC0+ZnJhbWUoKS0+bG9hZGVyKCkub3V0Z29pbmdSZWZlcnJlcigpLAorICAgIGZyYW1lLT5uYXZp
Z2F0aW9uU2NoZWR1bGVyKCkuc2NoZWR1bGVMb2NhdGlvbkNoYW5nZSgqaW5jdW1iZW50RG9jdW1l
bnQsIGluY3VtYmVudERvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpLAorICAgICAgICBjb21wbGV0
ZWRVUkwsIGluY3VtYmVudERvY3VtZW50LT5mcmFtZSgpLT5sb2FkZXIoKS5vdXRnb2luZ1JlZmVy
cmVyKCksCiAgICAgICAgIGxvY2tIaXN0b3J5LCBsb2NrQmFja0ZvcndhcmRMaXN0KTsKIH0KIApA
QCAtMjUxMCwxMCArMjUxMCw5IEBAIEV4Y2VwdGlvbk9yPFJlZlB0cjxGcmFtZT4+IERPTVdpbmRv
dzo6Y3IKIAogICAgIC8vIEZvciB3aGF0ZXZlciByZWFzb24sIEZpcmVmb3ggdXNlcyB0aGUgZmly
c3QgZnJhbWUgdG8gZGV0ZXJtaW5lIHRoZSBvdXRnb2luZ1JlZmVycmVyLiBXZSByZXBsaWNhdGUg
dGhhdCBiZWhhdmlvciBoZXJlLgogICAgIFN0cmluZyByZWZlcnJlciA9IHdpbmRvd0ZlYXR1cmVz
Lm5vcmVmZXJyZXIgPyBTdHJpbmcoKSA6IFNlY3VyaXR5UG9saWN5OjpnZW5lcmF0ZVJlZmVycmVy
SGVhZGVyKGZpcnN0RnJhbWUuZG9jdW1lbnQoKS0+cmVmZXJyZXJQb2xpY3koKSwgY29tcGxldGVk
VVJMLCBmaXJzdEZyYW1lLmxvYWRlcigpLm91dGdvaW5nUmVmZXJyZXIoKSk7Ci0gICAgYXV0byBp
bml0aWF0ZWRCeU1haW5GcmFtZSA9IGFjdGl2ZUZyYW1lLT5pc01haW5GcmFtZSgpID8gSW5pdGlh
dGVkQnlNYWluRnJhbWU6OlllcyA6IEluaXRpYXRlZEJ5TWFpbkZyYW1lOjpVbmtub3duOwogCiAg
ICAgUmVzb3VyY2VSZXF1ZXN0IHJlc291cmNlUmVxdWVzdCB7IGNvbXBsZXRlZFVSTCwgcmVmZXJy
ZXIgfTsKLSAgICBGcmFtZUxvYWRSZXF1ZXN0IGZyYW1lTG9hZFJlcXVlc3QgeyAqYWN0aXZlRG9j
dW1lbnQsIGFjdGl2ZURvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpLCBXVEZNb3ZlKHJlc291cmNl
UmVxdWVzdCksIGZyYW1lTmFtZSwgaW5pdGlhdGVkQnlNYWluRnJhbWUgfTsKKyAgICBGcmFtZUxv
YWRSZXF1ZXN0IGZyYW1lTG9hZFJlcXVlc3QgeyAqYWN0aXZlRG9jdW1lbnQsIGFjdGl2ZURvY3Vt
ZW50LT5zZWN1cml0eU9yaWdpbigpLCBXVEZNb3ZlKHJlc291cmNlUmVxdWVzdCksIGZyYW1lTmFt
ZSB9OwogICAgIGZyYW1lTG9hZFJlcXVlc3Quc2V0U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGlj
eShhY3RpdmVEb2N1bWVudC0+c2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeVRvUHJvcGFnYXRl
KCkpOwogCiAgICAgLy8gV2UgcGFzcyB0aGUgb3BlbmVyIGZyYW1lIGZvciB0aGUgbG9va3VwRnJh
bWUgaW4gY2FzZSB0aGUgYWN0aXZlIGZyYW1lIGlzIGRpZmZlcmVudCBmcm9tCkBAIC0yNTM5LDcg
KzI1MzgsNyBAQCBFeGNlcHRpb25PcjxSZWZQdHI8RnJhbWU+PiBET01XaW5kb3c6OmNyCiAgICAg
aWYgKGNyZWF0ZWQpIHsKICAgICAgICAgUmVzb3VyY2VSZXF1ZXN0IHJlc291cmNlUmVxdWVzdCB7
IGNvbXBsZXRlZFVSTCwgcmVmZXJyZXIsIFJlc291cmNlUmVxdWVzdENhY2hlUG9saWN5OjpVc2VQ
cm90b2NvbENhY2hlUG9saWN5IH07CiAgICAgICAgIEZyYW1lTG9hZGVyOjphZGRTYW1lU2l0ZUlu
Zm9Ub1JlcXVlc3RJZk5lZWRlZChyZXNvdXJjZVJlcXVlc3QsIG9wZW5lckZyYW1lLmRvY3VtZW50
KCkpOwotICAgICAgICBGcmFtZUxvYWRSZXF1ZXN0IGZyYW1lTG9hZFJlcXVlc3QgeyAqYWN0aXZl
V2luZG93LmRvY3VtZW50KCksIGFjdGl2ZVdpbmRvdy5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdp
bigpLCBXVEZNb3ZlKHJlc291cmNlUmVxdWVzdCksICJfc2VsZiJfcywgaW5pdGlhdGVkQnlNYWlu
RnJhbWUgfTsKKyAgICAgICAgRnJhbWVMb2FkUmVxdWVzdCBmcmFtZUxvYWRSZXF1ZXN0IHsgKmFj
dGl2ZVdpbmRvdy5kb2N1bWVudCgpLCBhY3RpdmVXaW5kb3cuZG9jdW1lbnQoKS0+c2VjdXJpdHlP
cmlnaW4oKSwgV1RGTW92ZShyZXNvdXJjZVJlcXVlc3QpLCAiX3NlbGYiX3MgfTsKICAgICAgICAg
ZnJhbWVMb2FkUmVxdWVzdC5zZXRTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KGFjdGl2ZURv
Y3VtZW50LT5zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5VG9Qcm9wYWdhdGUoKSk7CiAgICAg
ICAgIG5ld0ZyYW1lLT5sb2FkZXIoKS5jaGFuZ2VMb2NhdGlvbihXVEZNb3ZlKGZyYW1lTG9hZFJl
cXVlc3QpKTsKICAgICB9IGVsc2UgaWYgKCF1cmxTdHJpbmcuaXNFbXB0eSgpKSB7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BhZ2UvRE9NV2luZG93LmgJKHJldmlzaW9uIDI4NDQ2NykKKysrIFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvRE9NV2luZG93LmgJKHdvcmtpbmcgY29weSkKQEAgLTE4Niw3ICsxODYsNyBAQCBwdWJs
aWM6CiAgICAgYm9vbCBjb25zdW1lVHJhbnNpZW50QWN0aXZhdGlvbigpOwogCiAgICAgV0VCQ09S
RV9FWFBPUlQgTG9jYXRpb24mIGxvY2F0aW9uKCk7Ci0gICAgdm9pZCBzZXRMb2NhdGlvbihET01X
aW5kb3cmIGFjdGl2ZVdpbmRvdywgY29uc3QgVVJMJiBjb21wbGV0ZWRVUkwsIFNldExvY2F0aW9u
TG9ja2luZyA9IExvY2tIaXN0b3J5QmFzZWRPbkdlc3R1cmVTdGF0ZSk7CisgICAgdm9pZCBzZXRM
b2NhdGlvbihET01XaW5kb3cmIGluY3VtYmVudFdpbmRvdywgY29uc3QgVVJMJiBjb21wbGV0ZWRV
UkwsIFNldExvY2F0aW9uTG9ja2luZyA9IExvY2tIaXN0b3J5QmFzZWRPbkdlc3R1cmVTdGF0ZSk7
CiAKICAgICBET01TZWxlY3Rpb24qIGdldFNlbGVjdGlvbigpOwogCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wYWdlL0xvY2F0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdl
L0xvY2F0aW9uLmNwcAkocmV2aXNpb24gMjg0NDY3KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9M
b2NhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxMCwxNCArMjEwLDE0IEBAIEV4Y2VwdGlv
bk9yPHZvaWQ+IExvY2F0aW9uOjpzZXRIYXNoKERPTVcKICAgICByZXR1cm4gc2V0TG9jYXRpb24o
aW5jdW1iZW50V2luZG93LCBmaXJzdFdpbmRvdywgdXJsLnN0cmluZygpKTsKIH0KIAotRXhjZXB0
aW9uT3I8dm9pZD4gTG9jYXRpb246OmFzc2lnbihET01XaW5kb3cmIGFjdGl2ZVdpbmRvdywgRE9N
V2luZG93JiBmaXJzdFdpbmRvdywgY29uc3QgU3RyaW5nJiB1cmwpCitFeGNlcHRpb25Pcjx2b2lk
PiBMb2NhdGlvbjo6YXNzaWduKERPTVdpbmRvdyYgaW5jdW1iZW50V2luZG93LCBET01XaW5kb3cm
IGZpcnN0V2luZG93LCBjb25zdCBTdHJpbmcmIHVybCkKIHsKICAgICBpZiAoIWZyYW1lKCkpCiAg
ICAgICAgIHJldHVybiB7IH07Ci0gICAgcmV0dXJuIHNldExvY2F0aW9uKGFjdGl2ZVdpbmRvdywg
Zmlyc3RXaW5kb3csIHVybCk7CisgICAgcmV0dXJuIHNldExvY2F0aW9uKGluY3VtYmVudFdpbmRv
dywgZmlyc3RXaW5kb3csIHVybCk7CiB9CiAKLUV4Y2VwdGlvbk9yPHZvaWQ+IExvY2F0aW9uOjpy
ZXBsYWNlKERPTVdpbmRvdyYgYWN0aXZlV2luZG93LCBET01XaW5kb3cmIGZpcnN0V2luZG93LCBj
b25zdCBTdHJpbmcmIHVybFN0cmluZykKK0V4Y2VwdGlvbk9yPHZvaWQ+IExvY2F0aW9uOjpyZXBs
YWNlKERPTVdpbmRvdyYgaW5jdW1iZW50V2luZG93LCBET01XaW5kb3cmIGZpcnN0V2luZG93LCBj
b25zdCBTdHJpbmcmIHVybFN0cmluZykKIHsKICAgICBhdXRvKiBmcmFtZSA9IHRoaXMtPmZyYW1l
KCk7CiAgICAgaWYgKCFmcmFtZSkKQEAgLTIzNCwzNiArMjM0LDM2IEBAIEV4Y2VwdGlvbk9yPHZv
aWQ+IExvY2F0aW9uOjpyZXBsYWNlKERPTVcKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFN5
bnRheEVycm9yIH07CiAKICAgICAvLyBXZSBjYWxsIERPTVdpbmRvdzo6c2V0TG9jYXRpb24gZGly
ZWN0bHkgaGVyZSBiZWNhdXNlIHJlcGxhY2UoKSBhbHdheXMgb3BlcmF0ZXMgb24gdGhlIGN1cnJl
bnQgZnJhbWUuCi0gICAgZnJhbWUtPmRvY3VtZW50KCktPmRvbVdpbmRvdygpLT5zZXRMb2NhdGlv
bihhY3RpdmVXaW5kb3csIGNvbXBsZXRlZFVSTCwgTG9ja0hpc3RvcnlBbmRCYWNrRm9yd2FyZExp
c3QpOworICAgIGZyYW1lLT5kb2N1bWVudCgpLT5kb21XaW5kb3coKS0+c2V0TG9jYXRpb24oaW5j
dW1iZW50V2luZG93LCBjb21wbGV0ZWRVUkwsIExvY2tIaXN0b3J5QW5kQmFja0ZvcndhcmRMaXN0
KTsKICAgICByZXR1cm4geyB9OwogfQogCi12b2lkIExvY2F0aW9uOjpyZWxvYWQoRE9NV2luZG93
JiBhY3RpdmVXaW5kb3cpCit2b2lkIExvY2F0aW9uOjpyZWxvYWQoRE9NV2luZG93JiBpbmN1bWJl
bnRXaW5kb3cpCiB7CiAgICAgYXV0byogZnJhbWUgPSB0aGlzLT5mcmFtZSgpOwogICAgIGlmICgh
ZnJhbWUpCiAgICAgICAgIHJldHVybjsKIAotICAgIEFTU0VSVChhY3RpdmVXaW5kb3cuZG9jdW1l
bnQoKSk7CisgICAgQVNTRVJUKGluY3VtYmVudFdpbmRvdy5kb2N1bWVudCgpKTsKICAgICBBU1NF
UlQoZnJhbWUtPmRvY3VtZW50KCkpOwogICAgIEFTU0VSVChmcmFtZS0+ZG9jdW1lbnQoKS0+ZG9t
V2luZG93KCkpOwogCi0gICAgYXV0byYgYWN0aXZlRG9jdW1lbnQgPSAqYWN0aXZlV2luZG93LmRv
Y3VtZW50KCk7CisgICAgYXV0byYgaW5jdW1iZW50RG9jdW1lbnQgPSAqaW5jdW1iZW50V2luZG93
LmRvY3VtZW50KCk7CiAgICAgYXV0byYgdGFyZ2V0RG9jdW1lbnQgPSAqZnJhbWUtPmRvY3VtZW50
KCk7CiAKICAgICAvLyBGSVhNRTogSXQncyBub3QgY2xlYXIgdGhpcyBjcm9zcy1vcmlnaW4gc2Vj
dXJpdHkgY2hlY2sgaXMgdmFsdWFibGUuCiAgICAgLy8gV2UgYWxsb3cgb25lIHBhZ2UgdG8gY2hh
bmdlIHRoZSBsb2NhdGlvbiBvZiBhbm90aGVyLiBXaHkgYmxvY2sgYXR0ZW1wdHMgdG8gcmVsb2Fk
PwogICAgIC8vIE90aGVyIGxvY2F0aW9uIG9wZXJhdGlvbnMgc2ltcGx5IGJsb2NrIHVzZSBvZiBK
YXZhU2NyaXB0IFVSTHMgY3Jvc3Mgb3JpZ2luLgotICAgIGlmICghYWN0aXZlRG9jdW1lbnQuc2Vj
dXJpdHlPcmlnaW4oKS5pc1NhbWVPcmlnaW5Eb21haW4odGFyZ2V0RG9jdW1lbnQuc2VjdXJpdHlP
cmlnaW4oKSkpIHsKKyAgICBpZiAoIWluY3VtYmVudERvY3VtZW50LnNlY3VyaXR5T3JpZ2luKCku
aXNTYW1lT3JpZ2luRG9tYWluKHRhcmdldERvY3VtZW50LnNlY3VyaXR5T3JpZ2luKCkpKSB7CiAg
ICAgICAgIGF1dG8mIHRhcmdldFdpbmRvdyA9ICp0YXJnZXREb2N1bWVudC5kb21XaW5kb3coKTsK
LSAgICAgICAgdGFyZ2V0V2luZG93LnByaW50RXJyb3JNZXNzYWdlKHRhcmdldFdpbmRvdy5jcm9z
c0RvbWFpbkFjY2Vzc0Vycm9yTWVzc2FnZShhY3RpdmVXaW5kb3csIEluY2x1ZGVUYXJnZXRPcmln
aW46OlllcykpOworICAgICAgICB0YXJnZXRXaW5kb3cucHJpbnRFcnJvck1lc3NhZ2UodGFyZ2V0
V2luZG93LmNyb3NzRG9tYWluQWNjZXNzRXJyb3JNZXNzYWdlKGluY3VtYmVudFdpbmRvdywgSW5j
bHVkZVRhcmdldE9yaWdpbjo6WWVzKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBp
ZiAodGFyZ2V0RG9jdW1lbnQudXJsKCkucHJvdG9jb2xJc0phdmFTY3JpcHQoKSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgZnJhbWUtPm5hdmlnYXRpb25TY2hlZHVsZXIoKS5zY2hlZHVsZVJlZnJl
c2goYWN0aXZlRG9jdW1lbnQpOworICAgIGZyYW1lLT5uYXZpZ2F0aW9uU2NoZWR1bGVyKCkuc2No
ZWR1bGVSZWZyZXNoKGluY3VtYmVudERvY3VtZW50KTsKIH0KIAogRXhjZXB0aW9uT3I8dm9pZD4g
TG9jYXRpb246OnNldExvY2F0aW9uKERPTVdpbmRvdyYgaW5jdW1iZW50V2luZG93LCBET01XaW5k
b3cmIGZpcnN0V2luZG93LCBjb25zdCBTdHJpbmcmIHVybFN0cmluZykKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvTG9jYXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdl
L0xvY2F0aW9uLmgJKHJldmlzaW9uIDI4NDQ2NykKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvTG9j
YXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNDUsOSArNDUsOSBAQCBwdWJsaWM6CiAgICAgRXhj
ZXB0aW9uT3I8dm9pZD4gc2V0SHJlZihET01XaW5kb3cmIGluY3VtYmVudFdpbmRvdywgRE9NV2lu
ZG93JiBmaXJzdFdpbmRvdywgY29uc3QgU3RyaW5nJik7CiAgICAgU3RyaW5nIGhyZWYoKSBjb25z
dDsKIAotICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IGFzc2lnbihET01XaW5kb3cmIGFjdGl2ZVdpbmRv
dywgRE9NV2luZG93JiBmaXJzdFdpbmRvdywgY29uc3QgU3RyaW5nJik7Ci0gICAgRXhjZXB0aW9u
T3I8dm9pZD4gcmVwbGFjZShET01XaW5kb3cmIGFjdGl2ZVdpbmRvdywgRE9NV2luZG93JiBmaXJz
dFdpbmRvdywgY29uc3QgU3RyaW5nJik7Ci0gICAgdm9pZCByZWxvYWQoRE9NV2luZG93JiBhY3Rp
dmVXaW5kb3cpOworICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IGFzc2lnbihET01XaW5kb3cmIGluY3Vt
YmVudFdpbmRvdywgRE9NV2luZG93JiBmaXJzdFdpbmRvdywgY29uc3QgU3RyaW5nJik7CisgICAg
RXhjZXB0aW9uT3I8dm9pZD4gcmVwbGFjZShET01XaW5kb3cmIGluY3VtYmVudFdpbmRvdywgRE9N
V2luZG93JiBmaXJzdFdpbmRvdywgY29uc3QgU3RyaW5nJik7CisgICAgdm9pZCByZWxvYWQoRE9N
V2luZG93JiBpbmN1bWJlbnRXaW5kb3cpOwogCiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gc2V0UHJv
dG9jb2woRE9NV2luZG93JiBpbmN1bWJlbnRXaW5kb3csIERPTVdpbmRvdyYgZmlyc3RXaW5kb3cs
IGNvbnN0IFN0cmluZyYpOwogICAgIFN0cmluZyBwcm90b2NvbCgpIGNvbnN0OwpJbmRleDogU291
cmNlL1dlYkNvcmUvcGFnZS9Mb2NhdGlvbi5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGFnZS9Mb2NhdGlvbi5pZGwJKHJldmlzaW9uIDI4NDQ2NykKKysrIFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvTG9jYXRpb24uaWRsCSh3b3JraW5nIGNvcHkpCkBAIC00NSwxMCArNDUsOSBAQAogXSBp
bnRlcmZhY2UgTG9jYXRpb24gewogICAgIFtTZXR0ZXJDYWxsV2l0aD1MZWdhY3lBY3RpdmVXaW5k
b3dGb3JBY2Nlc3NvciZGaXJzdFdpbmRvdywgRG9Ob3RDaGVja1NlY3VyaXR5T25TZXR0ZXJdIHN0
cmluZ2lmaWVyIGF0dHJpYnV0ZSBVU1ZTdHJpbmcgaHJlZjsKIAotICAgIC8vIEZJWE1FOiBXZSBz
aG91bGQgdXNlIEluY3VtYmVudFdpbmRvdyBvbmNlIHdlIGZvdW5kIHdoeSBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI4OTQzIGlzc3VlIG9jY3VyZWQuCi0gICAgW0Nh
bGxXaXRoPUFjdGl2ZVdpbmRvdyZGaXJzdFdpbmRvd10gdW5kZWZpbmVkIGFzc2lnbihVU1ZTdHJp
bmcgdXJsKTsKLSAgICBbQ2FsbFdpdGg9QWN0aXZlV2luZG93JkZpcnN0V2luZG93LCBEb05vdENo
ZWNrU2VjdXJpdHldIHVuZGVmaW5lZCByZXBsYWNlKFVTVlN0cmluZyB1cmwpOwotICAgIFtDYWxs
V2l0aD1BY3RpdmVXaW5kb3ddIHVuZGVmaW5lZCByZWxvYWQoKTsKKyAgICBbQ2FsbFdpdGg9SW5j
dW1iZW50V2luZG93JkZpcnN0V2luZG93XSB1bmRlZmluZWQgYXNzaWduKFVTVlN0cmluZyB1cmwp
OworICAgIFtDYWxsV2l0aD1JbmN1bWJlbnRXaW5kb3cmRmlyc3RXaW5kb3csIERvTm90Q2hlY2tT
ZWN1cml0eV0gdW5kZWZpbmVkIHJlcGxhY2UoVVNWU3RyaW5nIHVybCk7CisgICAgW0NhbGxXaXRo
PUluY3VtYmVudFdpbmRvd10gdW5kZWZpbmVkIHJlbG9hZCgpOwogCiAgICAgLy8gVVJJIGRlY29t
cG9zaXRpb24gYXR0cmlidXRlcwogICAgIFtTZXR0ZXJDYWxsV2l0aD1MZWdhY3lBY3RpdmVXaW5k
b3dGb3JBY2Nlc3NvciZGaXJzdFdpbmRvd10gYXR0cmlidXRlIFVTVlN0cmluZyBwcm90b2NvbDsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyODQ0NjcpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDIxLTEwLTE5ICBBbGV4ZXkgU2h2
YXlrYSAgPHNodmFpa2FsZXNoQGdtYWlsLmNvbT4KKworICAgICAgICBBbGxvdyBhIHNhbWUtb3Jp
Z2luIDxpZnJhbWU+IHRvIHByb2dyYW1tYXRpY2FsbHkgbmF2aWdhdGUgaXRzIHRvcCBmcmFtZSB0
byBhbiBleHRlcm5hbCBVUkwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIyOTEyMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwOgorICAgICAgICAo
V2ViS2l0OjpQbHVnaW5WaWV3Ojpsb2FkVVJMKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlv
bik6CisKIDIwMjEtMTAtMTkgIERhdmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4KIAog
ICAgICAgICBGb2xsb3ctdXAgIzI6IFdlYktpdDo6TG9jYWxDb25uZWN0aW9uOjpjcmVhdGVDcmVk
ZW50aWFsUHJpdmF0ZUtleSBsZWFrcyBhbiBOU011dGFibGVEaWN0aW9uYXJ5CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAkocmV2aXNp
b24gMjg0NDY3KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmll
dy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzNDQsNyArMTM0NCw3IEBAIFN0cmluZyBQbHVnaW5W
aWV3Ojp1c2VyQWdlbnQoKQogCiB2b2lkIFBsdWdpblZpZXc6OmxvYWRVUkwodWludDY0X3QgcmVx
dWVzdElELCBjb25zdCBTdHJpbmcmIG1ldGhvZCwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNv
bnN0IFN0cmluZyYgdGFyZ2V0LCBjb25zdCBIVFRQSGVhZGVyTWFwJiBoZWFkZXJGaWVsZHMsIGNv
bnN0IFZlY3Rvcjx1aW50OF90PiYgaHR0cEJvZHksIGJvb2wgYWxsb3dQb3B1cHMpCiB7Ci0gICAg
RnJhbWVMb2FkUmVxdWVzdCBmcmFtZUxvYWRSZXF1ZXN0IHsgbV9wbHVnaW5FbGVtZW50LT5kb2N1
bWVudCgpLCBtX3BsdWdpbkVsZW1lbnQtPmRvY3VtZW50KCkuc2VjdXJpdHlPcmlnaW4oKSwgeyB9
LCB0YXJnZXQsIEluaXRpYXRlZEJ5TWFpbkZyYW1lOjpVbmtub3duIH07CisgICAgRnJhbWVMb2Fk
UmVxdWVzdCBmcmFtZUxvYWRSZXF1ZXN0IHsgbV9wbHVnaW5FbGVtZW50LT5kb2N1bWVudCgpLCBt
X3BsdWdpbkVsZW1lbnQtPmRvY3VtZW50KCkuc2VjdXJpdHlPcmlnaW4oKSwgeyB9LCB0YXJnZXQg
fTsKICAgICBmcmFtZUxvYWRSZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpLnNldEhUVFBNZXRob2Qo
bWV0aG9kKTsKICAgICBmcmFtZUxvYWRSZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpLnNldFVSTCht
X3BsdWdpbkVsZW1lbnQtPmRvY3VtZW50KCkuY29tcGxldGVVUkwodXJsU3RyaW5nKSk7CiAgICAg
ZnJhbWVMb2FkUmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKS5zZXRIVFRQSGVhZGVyRmllbGRzKGhl
YWRlckZpZWxkcyk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAJKHJldmlz
aW9uIDI4NDQ2NykKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk2NSw3ICs5NjUsNyBA
QCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkCiAgICAgfQogCiAgICAg
RnJhbWVJbmZvRGF0YSBvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEgewotICAgICAgICBuYXZpZ2F0
aW9uQWN0aW9uLmluaXRpYXRlZEJ5TWFpbkZyYW1lKCkgPT0gSW5pdGlhdGVkQnlNYWluRnJhbWU6
OlllcywKKyAgICAgICAgbmF2aWdhdGlvbkFjdGlvbi5pbml0aWF0ZWRCeU1haW5GcmFtZSgpLAog
ICAgICAgICBSZXNvdXJjZVJlcXVlc3QgeyByZXF1ZXN0ZXIudXJsIH0sCiAgICAgICAgIHJlcXVl
c3Rlci5zZWN1cml0eU9yaWdpbi0+ZGF0YSgpLAogICAgICAgICBXVEZNb3ZlKG9yaWdpbmF0aW5n
RnJhbWVJRCksCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyODQ0
NjcpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwxMyBAQAorMjAyMS0xMC0xOSAgQWxleGV5IFNodmF5a2EgIDxzaHZhaWthbGVz
aEBnbWFpbC5jb20+CisKKyAgICAgICAgQWxsb3cgYSBzYW1lLW9yaWdpbiA8aWZyYW1lPiB0byBw
cm9ncmFtbWF0aWNhbGx5IG5hdmlnYXRlIGl0cyB0b3AgZnJhbWUgdG8gYW4gZXh0ZXJuYWwgVVJM
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjkxMjAK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYlZp
ZXcvV2ViUERGVmlldy5tbToKKyAgICAgICAgKC1bV2ViUERGVmlldyBQREZWaWV3V2lsbENsaWNr
T25MaW5rOndpdGhVUkw6XSk6CisKIDIwMjEtMTAtMTkgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFw
cGxlLmNvbT4KIAogICAgICAgICBjYWNoZWRDR0NvbG9yKCkgYW5kIG5zQ29sb3IoKSBzaG91bGQg
cmV0dXJuIHNtYXJ0IHBvaW50ZXJzCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJW
aWV3L1dlYlBERlZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViVmlldy9XZWJQREZWaWV3Lm1tCShyZXZpc2lvbiAyODQ0NjcpCisrKyBTb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYlBERlZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTk2Niw3
ICs5NjYsNyBAQCAtICh2b2lkKVBERlZpZXdXaWxsQ2xpY2tPbkxpbms6KFBERlZpZXcgCiAKICAg
ICAvLyBDYWxsIHRvIHRoZSBmcmFtZSBsb2FkZXIgYmVjYXVzZSB0aGlzIGlzIHdoZXJlIG91ciBz
ZWN1cml0eSBjaGVja3MgYXJlIG1hZGUuCiAgICAgYXV0byogZnJhbWUgPSBjb3JlKFtkYXRhU291
cmNlIHdlYkZyYW1lXSk7Ci0gICAgV2ViQ29yZTo6RnJhbWVMb2FkUmVxdWVzdCBmcmFtZUxvYWRS
ZXF1ZXN0IHsgKmZyYW1lLT5kb2N1bWVudCgpLCBmcmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlP
cmlnaW4oKSwgeyBVUkwgfSwgeyB9LCBXZWJDb3JlOjpJbml0aWF0ZWRCeU1haW5GcmFtZTo6VW5r
bm93biB9OworICAgIFdlYkNvcmU6OkZyYW1lTG9hZFJlcXVlc3QgZnJhbWVMb2FkUmVxdWVzdCB7
ICpmcmFtZS0+ZG9jdW1lbnQoKSwgZnJhbWUtPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCks
IHsgVVJMIH0sIHsgfSB9OwogICAgIGZyYW1lTG9hZFJlcXVlc3Quc2V0UmVmZXJyZXJQb2xpY3ko
V2ViQ29yZTo6UmVmZXJyZXJQb2xpY3k6Ok5vUmVmZXJyZXIpOwogICAgIGZyYW1lLT5sb2FkZXIo
KS5sb2FkRnJhbWVSZXF1ZXN0KFdURk1vdmUoZnJhbWVMb2FkUmVxdWVzdCksIGV2ZW50LmdldCgp
LCBudWxscHRyKTsKIH0KSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI4NDQ2NykKKysrIExheW91dFRlc3Rz
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM0IEBACisyMDIxLTEwLTE5ICBB
bGV4ZXkgU2h2YXlrYSAgPHNodmFpa2FsZXNoQGdtYWlsLmNvbT4KKworICAgICAgICBBbGxvdyBh
IHNhbWUtb3JpZ2luIDxpZnJhbWU+IHRvIHByb2dyYW1tYXRpY2FsbHkgbmF2aWdhdGUgaXRzIHRv
cCBmcmFtZSB0byBhbiBleHRlcm5hbCBVUkwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIyOTEyMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0
aW9uLXBhcmVudC1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9mcmFtZXMvc2FuZGJveGVk
LWlmcmFtZS1uYXZpZ2F0aW9uLXBhcmVudC5odG1sOgorICAgICAgICAqIGh0dHAvdGVzdHMvbmF2
aWdhdGlvbi1wb2xpY3k6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvbmF2aWdhdGlvbi1w
b2xpY3kvbWFpbi1mcmFtZS1uYXZpZ2F0ZWQtcHJvZ3JhbWF0aWNhbGx5LWJ5LXN1YmZyYW1lLWNy
b3NzLW9yaWdpbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvbmF2
aWdhdGlvbi1wb2xpY3kvbWFpbi1mcmFtZS1uYXZpZ2F0ZWQtcHJvZ3JhbWF0aWNhbGx5LWJ5LXN1
YmZyYW1lLWNyb3NzLW9yaWdpbi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL25h
dmlnYXRpb24tcG9saWN5L3Jlc291cmNlczogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9u
YXZpZ2F0aW9uLXBvbGljeS9yZXNvdXJjZXMvbWFpbi1mcmFtZS13aXRoLXN1YmZyYW1lLXByb2dy
YW1hdGljYWxseS1uYXZpZ2F0ZXMtbWFpbi1jcm9zcy1vcmlnaW4uaHRtbDogQWRkZWQuCisgICAg
ICAgICogaHR0cC90ZXN0cy9uYXZpZ2F0aW9uLXBvbGljeS9yZXNvdXJjZXMvbm90aWZ5LWRvbmUu
aHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9uYXZpZ2F0aW9uLXBvbGljeS9yZXNv
dXJjZXMvcHJvZ3JhbWF0aWNhbGx5LW5hdmlnYXRlLXRvLW5vdGlmeS1kb25lLXRhcmdldC10b3At
Y3Jvc3Mtb3JpZ2luLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkv
ZnJhbWVOYXZpZ2F0aW9uL2NvbnRleHQtZm9yLWxvY2F0aW9uLWFzc2lnbi1leHBlY3RlZC50eHQ6
CisgICAgICAgICogbG9hZGVyL25hdmlnYXRpb24tcG9saWN5L3Nob3VsZC1vcGVuLWV4dGVybmFs
LXVybHMvbWFpbi1mcmFtZS1uYXZpZ2F0ZWQtcHJvZ3JhbWF0aWNhbGx5LWJ5LXN1YmZyYW1lLWV4
cGVjdGVkLnR4dDoKKyAgICAgICAgKiBsb2FkZXIvbmF2aWdhdGlvbi1wb2xpY3kvc2hvdWxkLW9w
ZW4tZXh0ZXJuYWwtdXJscy9tYWluLWZyYW1lLW5hdmlnYXRlZC1wcm9ncmFtYXRpY2FsbHktYnkt
c3ViZnJhbWUtdmlhLW1ldGhvZC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGxvYWRl
ci9uYXZpZ2F0aW9uLXBvbGljeS9zaG91bGQtb3Blbi1leHRlcm5hbC11cmxzL21haW4tZnJhbWUt
bmF2aWdhdGVkLXByb2dyYW1hdGljYWxseS1ieS1zdWJmcmFtZS12aWEtbWV0aG9kLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIGxvYWRlci9uYXZpZ2F0aW9uLXBvbGljeS9zaG91bGQtb3Blbi1leHRl
cm5hbC11cmxzL21haW4tZnJhbWUtbmF2aWdhdGVkLXByb2dyYW1hdGljYWxseS1ieS1zdWJmcmFt
ZS13aXRob3V0LWZsYWctZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBsb2FkZXIvbmF2
aWdhdGlvbi1wb2xpY3kvc2hvdWxkLW9wZW4tZXh0ZXJuYWwtdXJscy9tYWluLWZyYW1lLW5hdmln
YXRlZC1wcm9ncmFtYXRpY2FsbHktYnktc3ViZnJhbWUtd2l0aG91dC1mbGFnLmh0bWw6IEFkZGVk
LgorICAgICAgICAqIGxvYWRlci9uYXZpZ2F0aW9uLXBvbGljeS9zaG91bGQtb3Blbi1leHRlcm5h
bC11cmxzL3Jlc291cmNlcy9tYWluLWZyYW1lLXdpdGgtc3ViZnJhbWUtbWFpbi1wcm9ncmFtYXRp
Y2FsbHktbmF2aWdhdGVzLXN1YmZyYW1lLW5vLXRvcENhbGxGcmFtZS5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBsb2FkZXIvbmF2aWdhdGlvbi1wb2xpY3kvc2hvdWxkLW9wZW4tZXh0ZXJuYWwtdXJs
cy9yZXNvdXJjZXMvbWFpbi1mcmFtZS13aXRoLXN1YmZyYW1lLW1haW4tcHJvZ3JhbWF0aWNhbGx5
LW5hdmlnYXRlcy1zdWJmcmFtZS12aWEtbWV0aG9kLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGxv
YWRlci9uYXZpZ2F0aW9uLXBvbGljeS9zaG91bGQtb3Blbi1leHRlcm5hbC11cmxzL3Jlc291cmNl
cy9tYWluLWZyYW1lLXdpdGgtc3ViZnJhbWUtcHJvZ3JhbWF0aWNhbGx5LW5hdmlnYXRlcy1tYWlu
LXZpYS1tZXRob2QuaHRtbDogQWRkZWQuCisgICAgICAgICogbG9hZGVyL25hdmlnYXRpb24tcG9s
aWN5L3Nob3VsZC1vcGVuLWV4dGVybmFsLXVybHMvcmVzb3VyY2VzL3Byb2dyYW1hdGljYWxseS1u
YXZpZ2F0ZS10by1ub3RpZnktZG9uZS10YXJnZXQtdG9wLXZpYS1tZXRob2QuaHRtbDogQWRkZWQu
CisgICAgICAgICogbG9hZGVyL25hdmlnYXRpb24tcG9saWN5L3Nob3VsZC1vcGVuLWV4dGVybmFs
LXVybHMvc3ViZnJhbWUtbmF2aWdhdGVkLXByb2dyYW1hdGljYWxseS1ieS1tYWluLWZyYW1lLW5v
LXRvcENhbGxGcmFtZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGxvYWRlci9uYXZp
Z2F0aW9uLXBvbGljeS9zaG91bGQtb3Blbi1leHRlcm5hbC11cmxzL3N1YmZyYW1lLW5hdmlnYXRl
ZC1wcm9ncmFtYXRpY2FsbHktYnktbWFpbi1mcmFtZS1uby10b3BDYWxsRnJhbWUuaHRtbDogQWRk
ZWQuCisgICAgICAgICogbG9hZGVyL25hdmlnYXRpb24tcG9saWN5L3Nob3VsZC1vcGVuLWV4dGVy
bmFsLXVybHMvc3ViZnJhbWUtbmF2aWdhdGVkLXByb2dyYW1hdGljYWxseS1ieS1tYWluLWZyYW1l
LXZpYS1tZXRob2QtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBsb2FkZXIvbmF2aWdh
dGlvbi1wb2xpY3kvc2hvdWxkLW9wZW4tZXh0ZXJuYWwtdXJscy9zdWJmcmFtZS1uYXZpZ2F0ZWQt
cHJvZ3JhbWF0aWNhbGx5LWJ5LW1haW4tZnJhbWUtdmlhLW1ldGhvZC5odG1sOiBBZGRlZC4KKwog
MjAyMS0xMC0xOSAgQW50b2luZSBRdWludCAgPGdyYW91dHNAd2Via2l0Lm9yZz4KIAogICAgICAg
ICBSRUdSRVNTSU9OKHIyODQzMTMpOiA6Om1hcmtlciBhY2NlbGVyYXRlZCBhbmltYXRpb25zIGFy
ZSBicm9rZW4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUt
bmF2aWdhdGlvbi1wYXJlbnQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi1wYXJlbnQtZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiAyODQ0NjcpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94
ZWQtaWZyYW1lLW5hdmlnYXRpb24tcGFyZW50LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtMSw0ICsxLDkgQEAKLVRoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IGEgc2FuZGJveGVkIElGcmFt
ZSB3aXRoIHRoZSBrZXl3b3JkcyBhbGxvdy1zY3JpcHRzIGFuZCBhbGxvdy1zYW1lLW9yaWdpbiBp
cyBhbGxvd2VkIHRvIG5hdmlnYXRlIGFuIGFuY2VzdG9yIGluIHRoZSBmcmFtZSB0cmVlIGJ5IGFz
c2lnbmluZyB0aGUgbG9jYXRpb24gYXR0cmlidXRlLgorQ09OU09MRSBNRVNTQUdFOiBVbnNhZmUg
SmF2YVNjcmlwdCBhdHRlbXB0IHRvIGluaXRpYXRlIG5hdmlnYXRpb24gZm9yIGZyYW1lIHdpdGgg
VVJMICdzYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24tc291cmNlLmh0bWwnLiBUaGUgZnJhbWUg
YXR0ZW1wdGluZyBuYXZpZ2F0aW9uIGlzIHNhbmRib3hlZCwgYW5kIGlzIHRoZXJlZm9yZSBkaXNh
bGxvd2VkIGZyb20gbmF2aWdhdGluZyBpdHMgYW5jZXN0b3JzLgorCitDT05TT0xFIE1FU1NBR0U6
IFNlY3VyaXR5RXJyb3I6IFRoZSBvcGVyYXRpb24gaXMgaW5zZWN1cmUuCitUaGlzIHRlc3QgdmVy
aWZpZXMgdGhhdCBhIHNhbmRib3hlZCBJRnJhbWUgY2Fubm90IG5hdmlnYXRlIGFuIGFuY2VzdG9y
IGluIHRoZSBmcmFtZSB0cmVlIGJ5IGFzc2lnbmluZyB0aGUgbG9jYXRpb24gYXR0cmlidXRlLgor
CitUaGlzIGlzIGRvbmUgYnkgbG9hZGluZyB0ZW4gbm9uLXNhbmRib3hlZCBJRnJhbWVzLCBhbmQg
YSBzaW5nbGUgc2FuZGJveGVkIG9uZS4gRXhwZWN0IHRlbiBmcmFtZXMgdG8gYmUgbmF2aWdhdGVk
LCBidXQgdGhlIHNhbmRib3hlZCBvbmUgdG8gbm90IGJlIG9uZSBvZiB0aGVtLgogCiBUaGlzIHRl
c3Qgd2lsbCBwcmludCAiUEFTUyIgb24gc3VjY2Vzcy4KIApJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXBhcmVudC5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlv
bi1wYXJlbnQuaHRtbAkocmV2aXNpb24gMjg0NDY3KQorKysgTGF5b3V0VGVzdHMvZmFzdC9mcmFt
ZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXBhcmVudC5odG1sCSh3b3JraW5nIGNvcHkp
CkBAIC0xMyw5ICsxMyw5IEBAIGZ1bmN0aW9uIGNoZWNrUmVzdWx0cygpCiB7CiAgICAgdmFyIHRl
c3RTdGF0dXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGVzdFN0YXR1cycpOwogCi0gICAg
aWYgKHNlbGYubmF2aWdhdGVkLmxvY2F0aW9uLmhyZWYuaW5kZXhPZigncGFyZW50Lmh0bWwnKSAh
PSAtMSkKLSAgICAgICAgdGVzdFN0YXR1cy5pbm5lckhUTUwgPSAnRkFJTDogc2FuZGJveGVkIGZy
YW1lIGNvdWxkblwndCBuYXZpZ2F0ZSc7Ci0gICAgZWxzZSBpZiAobmF2aWdhdGVkRnJhbWVzID09
IDExKQorICAgIGlmIChzZWxmLm5hdmlnYXRlZC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoJ3BhcmVu
dC5odG1sJykgPT0gLTEpCisgICAgICAgIHRlc3RTdGF0dXMuaW5uZXJIVE1MID0gJ0ZBSUw6IGRp
c2FsbG93ZWQgZnJhbWUgbmF2aWdhdGVkJzsKKyAgICBlbHNlIGlmIChuYXZpZ2F0ZWRGcmFtZXMg
PT0gMTApCiAgICAgICAgIHRlc3RTdGF0dXMuaW5uZXJIVE1MID0gJ1BBU1MnOwogICAgIGVsc2UK
ICAgICAgICAgdGVzdFN0YXR1cy5pbm5lckhUTUwgPSAnRkFJTDogZnJhbWVzIG5vdCBuYXZpZ2F0
ZWQgcHJvcGVybHknOwpAQCAtMjgsNyArMjgsNyBAQCBmdW5jdGlvbiBjb3VudEZyYW1lKCkKIHsK
ICAgICArK25hdmlnYXRlZEZyYW1lczsKIAotICAgIGlmIChuYXZpZ2F0ZWRGcmFtZXMgPT0gMTEp
CisgICAgaWYgKG5hdmlnYXRlZEZyYW1lcyA9PSAxMCkKICAgICAgICAgY2hlY2tSZXN1bHRzKCk7
CiB9CiAKQEAgLTM3LDEwICszNywxMyBAQCBmdW5jdGlvbiBjb3VudEZyYW1lKCkKIAogPGJvZHk+
CiAKLSAgICA8cD5UaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCBhIHNhbmRib3hlZCBJRnJhbWUgd2l0
aCB0aGUga2V5d29yZHMKLSAgICBhbGxvdy1zY3JpcHRzIGFuZCBhbGxvdy1zYW1lLW9yaWdpbiBp
cyBhbGxvd2VkIHRvIG5hdmlnYXRlIGFuIGFuY2VzdG9yCisgICAgPHA+VGhpcyB0ZXN0IHZlcmlm
aWVzIHRoYXQgYSBzYW5kYm94ZWQgSUZyYW1lIGNhbm5vdCBuYXZpZ2F0ZSBhbiBhbmNlc3Rvcgog
ICAgIGluIHRoZSBmcmFtZSB0cmVlIGJ5IGFzc2lnbmluZyB0aGUgbG9jYXRpb24gYXR0cmlidXRl
LjwvcD4KIAorICAgIDxwPlRoaXMgaXMgZG9uZSBieSBsb2FkaW5nIHRlbiBub24tc2FuZGJveGVk
IElGcmFtZXMsIGFuZCBhIHNpbmdsZQorICAgIHNhbmRib3hlZCBvbmUuIEV4cGVjdCB0ZW4gZnJh
bWVzIHRvIGJlIG5hdmlnYXRlZCwgYnV0IHRoZSBzYW5kYm94ZWQKKyAgICBvbmUgdG8gPGI+bm90
PC9iPiBiZSBvbmUgb2YgdGhlbS48L3A+CisgICAgCiAgICAgPHA+VGhpcyB0ZXN0IHdpbGwgcHJp
bnQgJnF1b3Q7UEFTUyZxdW90OyBvbiBzdWNjZXNzLjwvcD4KIAogICAgIDxpZnJhbWUgc3JjPSJy
ZXNvdXJjZXMvbm9uLXNhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi5odG1sIj48L2lmcmFtZT4K
SW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvbmF2aWdhdGlvbi1wb2xpY3kvbWFpbi1mcmFt
ZS1uYXZpZ2F0ZWQtcHJvZ3JhbWF0aWNhbGx5LWJ5LXN1YmZyYW1lLWNyb3NzLW9yaWdpbi1leHBl
Y3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9uYXZpZ2F0aW9u
LXBvbGljeS9tYWluLWZyYW1lLW5hdmlnYXRlZC1wcm9ncmFtYXRpY2FsbHktYnktc3ViZnJhbWUt
Y3Jvc3Mtb3JpZ2luLWV4cGVjdGVkLnR4dAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL25hdmlnYXRpb24tcG9saWN5L21haW4tZnJhbWUtbmF2aWdhdGVkLXByb2dyYW1h
dGljYWxseS1ieS1zdWJmcmFtZS1jcm9zcy1vcmlnaW4tZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsNyBAQAorIC0gZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbgor
PE5TVVJMUmVxdWVzdCBVUkwgaHR0cDovLzEyNy4wLjAuMTo4MDAwL25hdmlnYXRpb24tcG9saWN5
L3Jlc291cmNlcy9tYWluLWZyYW1lLXdpdGgtc3ViZnJhbWUtcHJvZ3JhbWF0aWNhbGx5LW5hdmln
YXRlcy1tYWluLWNyb3NzLW9yaWdpbi5odG1sLCBtYWluIGRvY3VtZW50IFVSTCBodHRwOi8vMTI3
LjAuMC4xOjgwMDAvbmF2aWdhdGlvbi1wb2xpY3kvcmVzb3VyY2VzL21haW4tZnJhbWUtd2l0aC1z
dWJmcmFtZS1wcm9ncmFtYXRpY2FsbHktbmF2aWdhdGVzLW1haW4tY3Jvc3Mtb3JpZ2luLmh0bWws
IGh0dHAgbWV0aG9kIEdFVD4gaXMgbWFpbiBmcmFtZSAtIHllcyBzaG91bGQgb3BlbiBVUkxzIGV4
dGVybmFsbHkgLSB5ZXMKKyAtIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24KKzxOU1VS
TFJlcXVlc3QgVVJMIGh0dHA6Ly9sb2NhbGhvc3Q6ODA4MC9uYXZpZ2F0aW9uLXBvbGljeS9yZXNv
dXJjZXMvcHJvZ3JhbWF0aWNhbGx5LW5hdmlnYXRlLXRvLW5vdGlmeS1kb25lLXRhcmdldC10b3At
Y3Jvc3Mtb3JpZ2luLmh0bWwsIG1haW4gZG9jdW1lbnQgVVJMIGh0dHA6Ly8xMjcuMC4wLjE6ODAw
MC9uYXZpZ2F0aW9uLXBvbGljeS9yZXNvdXJjZXMvbWFpbi1mcmFtZS13aXRoLXN1YmZyYW1lLXBy
b2dyYW1hdGljYWxseS1uYXZpZ2F0ZXMtbWFpbi1jcm9zcy1vcmlnaW4uaHRtbCwgaHR0cCBtZXRo
b2QgR0VUPiBpcyBtYWluIGZyYW1lIC0gbm8gc2hvdWxkIG9wZW4gVVJMcyBleHRlcm5hbGx5IC0g
bm8KKyAtIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24KKzxOU1VSTFJlcXVlc3QgVVJM
IGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9uYXZpZ2F0aW9uLXBvbGljeS9yZXNvdXJjZXMvbm90aWZ5
LWRvbmUuaHRtbCwgbWFpbiBkb2N1bWVudCBVUkwgaHR0cDovLzEyNy4wLjAuMTo4MDAwL25hdmln
YXRpb24tcG9saWN5L3Jlc291cmNlcy9ub3RpZnktZG9uZS5odG1sLCBodHRwIG1ldGhvZCBHRVQ+
IGlzIG1haW4gZnJhbWUgLSB5ZXMgc2hvdWxkIG9wZW4gVVJMcyBleHRlcm5hbGx5IC0gbm8KKwpJ
bmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9uYXZpZ2F0aW9uLXBvbGljeS9tYWluLWZyYW1l
LW5hdmlnYXRlZC1wcm9ncmFtYXRpY2FsbHktYnktc3ViZnJhbWUtY3Jvc3Mtb3JpZ2luLmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9uYXZpZ2F0aW9uLXBvbGljeS9t
YWluLWZyYW1lLW5hdmlnYXRlZC1wcm9ncmFtYXRpY2FsbHktYnktc3ViZnJhbWUtY3Jvc3Mtb3Jp
Z2luLmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9uYXZpZ2F0
aW9uLXBvbGljeS9tYWluLWZyYW1lLW5hdmlnYXRlZC1wcm9ncmFtYXRpY2FsbHktYnktc3ViZnJh
bWUtY3Jvc3Mtb3JpZ2luLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMyBAQAorPHNj
cmlwdD4KKworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNU
ZXh0KCk7CisgICAgdGVzdFJ1bm5lci5kdW1wUG9saWN5RGVsZWdhdGVDYWxsYmFja3MoKTsKKyAg
ICB0ZXN0UnVubmVyLnF1ZXVlTG9hZCgicmVzb3VyY2VzL21haW4tZnJhbWUtd2l0aC1zdWJmcmFt
ZS1wcm9ncmFtYXRpY2FsbHktbmF2aWdhdGVzLW1haW4tY3Jvc3Mtb3JpZ2luLmh0bWwiLCAiIiwg
dHJ1ZSk7Cit9CisKKzwvc2NyaXB0PgorVGhpcyBwYWdlIGhhcyBkb2VzIG5vdCBoYXZlIHRoZSAi
c2hvdWxkIG9wZW4gZXh0ZXJuYWwgVVJMcyIgZmxhZyBzZXQuPGJyPgorSXQgbmF2aWdhdGVzIHRv
IGEgMm5kIHBhZ2UgdGhhdCBkb2VzIGhhdmUgdGhlIGZsYWcgc2V0Ljxicj4KK1RoYXQgMm5kIHBh
Z2UgY29udGFpbnMgYW4gaWZyYW1lIHdoaWNoIHByb2dyYW1hdGljYWxseSBuYXZpZ2F0ZXMgdGhl
IG1haW4gZnJhbWUgdG8gYSAzcmQgcGFnZS48YnI+CitUaGUgInNob3VsZCBvcGVuIGV4dGVybmFs
IFVSTHMiIGZsYWcgc2hvdWxkIGJlIHVuc2V0IGJlY2F1c2UgdGhlIHN1YmZyYW1lLT5tYWluIGZy
YW1lIG5hdmlnYXRpb24gd2FzIHByb2dyYW1hdGljLjxicj4KSW5kZXg6IExheW91dFRlc3RzL2h0
dHAvdGVzdHMvbmF2aWdhdGlvbi1wb2xpY3kvcmVzb3VyY2VzL21haW4tZnJhbWUtd2l0aC1zdWJm
cmFtZS1wcm9ncmFtYXRpY2FsbHktbmF2aWdhdGVzLW1haW4tY3Jvc3Mtb3JpZ2luLmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9uYXZpZ2F0aW9uLXBvbGljeS9yZXNv
dXJjZXMvbWFpbi1mcmFtZS13aXRoLXN1YmZyYW1lLXByb2dyYW1hdGljYWxseS1uYXZpZ2F0ZXMt
bWFpbi1jcm9zcy1vcmlnaW4uaHRtbAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL25hdmlnYXRpb24tcG9saWN5L3Jlc291cmNlcy9tYWluLWZyYW1lLXdpdGgtc3ViZnJh
bWUtcHJvZ3JhbWF0aWNhbGx5LW5hdmlnYXRlcy1tYWluLWNyb3NzLW9yaWdpbi5odG1sCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsNiBAQAorPHNjcmlwdD4KK2lmICh3aW5kb3cudGVzdFJ1bm5l
cikKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKzwvc2NyaXB0PgorCis8aWZyYW1l
IHNyYz0iaHR0cDovL2xvY2FsaG9zdDo4MDgwL25hdmlnYXRpb24tcG9saWN5L3Jlc291cmNlcy9w
cm9ncmFtYXRpY2FsbHktbmF2aWdhdGUtdG8tbm90aWZ5LWRvbmUtdGFyZ2V0LXRvcC1jcm9zcy1v
cmlnaW4uaHRtbCI+PC9pZnJhbWU+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL25hdmln
YXRpb24tcG9saWN5L3Jlc291cmNlcy9ub3RpZnktZG9uZS5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2h0dHAvdGVzdHMvbmF2aWdhdGlvbi1wb2xpY3kvcmVzb3VyY2VzL25vdGlmeS1k
b25lLmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9uYXZpZ2F0
aW9uLXBvbGljeS9yZXNvdXJjZXMvbm90aWZ5LWRvbmUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDQgQEAKKzxzY3JpcHQ+CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1
bm5lci5ub3RpZnlEb25lKCk7Cis8L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVz
dHMvbmF2aWdhdGlvbi1wb2xpY3kvcmVzb3VyY2VzL3Byb2dyYW1hdGljYWxseS1uYXZpZ2F0ZS10
by1ub3RpZnktZG9uZS10YXJnZXQtdG9wLWNyb3NzLW9yaWdpbi5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2h0dHAvdGVzdHMvbmF2aWdhdGlvbi1wb2xpY3kvcmVzb3VyY2VzL3Byb2dy
YW1hdGljYWxseS1uYXZpZ2F0ZS10by1ub3RpZnktZG9uZS10YXJnZXQtdG9wLWNyb3NzLW9yaWdp
bi5odG1sCShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbmF2aWdhdGlv
bi1wb2xpY3kvcmVzb3VyY2VzL3Byb2dyYW1hdGljYWxseS1uYXZpZ2F0ZS10by1ub3RpZnktZG9u
ZS10YXJnZXQtdG9wLWNyb3NzLW9yaWdpbi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
MTQgQEAKKzxzY3JpcHQ+CisKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVy
LndhaXRVbnRpbERvbmUoKTsKKyAgICAKK2Z1bmN0aW9uIGxvYWRlZCgpCit7CisgICAgd2luZG93
LnRvcC5sb2NhdGlvbiA9ICJodHRwOi8vMTI3LjAuMC4xOjgwMDAvbmF2aWdhdGlvbi1wb2xpY3kv
cmVzb3VyY2VzL25vdGlmeS1kb25lLmh0bWwiOworfQorCis8L3NjcmlwdD4KKzxib2R5IG9ubG9h
ZD0ibG9hZGVkKCk7Ij4KK1RoaXMgcGFnZSBkb2VzIGEgamF2YXNjcmlwdCBjbGllbnQgcmVkaXJl
Y3QgdG8gbm90aWZ5LWRvbmUuaHRtbCBpbiB0aGUgbWFpbiBmcmFtZS4KKzwvYm9keT4KSW5kZXg6
IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvZnJhbWVOYXZpZ2F0aW9uL2NvbnRleHQt
Zm9yLWxvY2F0aW9uLWFzc2lnbi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9zZWN1cml0eS9mcmFtZU5hdmlnYXRpb24vY29udGV4dC1mb3ItbG9jYXRp
b24tYXNzaWduLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMjg0NDY3KQorKysgTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9zZWN1cml0eS9mcmFtZU5hdmlnYXRpb24vY29udGV4dC1mb3ItbG9jYXRpb24t
YXNzaWduLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSwyICsxLDIgQEAKLWRvY3Vt
ZW50LnJlZmVycmVyID0KK2RvY3VtZW50LnJlZmVycmVyID0gaHR0cDovLzEyNy4wLjAuMTo4MDAw
L3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi9jb250ZXh0LWZvci1sb2NhdGlvbi1hc3NpZ24uaHRt
bAogCkluZGV4OiBMYXlvdXRUZXN0cy9sb2FkZXIvbmF2aWdhdGlvbi1wb2xpY3kvc2hvdWxkLW9w
ZW4tZXh0ZXJuYWwtdXJscy9tYWluLWZyYW1lLW5hdmlnYXRlZC1wcm9ncmFtYXRpY2FsbHktYnkt
c3ViZnJhbWUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2xvYWRlci9u
YXZpZ2F0aW9uLXBvbGljeS9zaG91bGQtb3Blbi1leHRlcm5hbC11cmxzL21haW4tZnJhbWUtbmF2
aWdhdGVkLXByb2dyYW1hdGljYWxseS1ieS1zdWJmcmFtZS1leHBlY3RlZC50eHQJKHJldmlzaW9u
IDI4NDQ2NykKKysrIExheW91dFRlc3RzL2xvYWRlci9uYXZpZ2F0aW9uLXBvbGljeS9zaG91bGQt
b3Blbi1leHRlcm5hbC11cmxzL21haW4tZnJhbWUtbmF2aWdhdGVkLXByb2dyYW1hdGljYWxseS1i
eS1zdWJmcmFtZS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTMsNSArMyw1IEBACiAg
LSBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uCiA8TlNVUkxSZXF1ZXN0IFVSTCBwcm9n
cmFtYXRpY2FsbHktbmF2aWdhdGUtdG8tbm90aWZ5LWRvbmUtdGFyZ2V0LXRvcC5odG1sLCBtYWlu
IGRvY3VtZW50IFVSTCBtYWluLWZyYW1lLXdpdGgtc3ViZnJhbWUtcHJvZ3JhbWF0aWNhbGx5LW5h
dmlnYXRlcy1tYWluLmh0bWwsIGh0dHAgbWV0aG9kIEdFVD4gaXMgbWFpbiBmcmFtZSAtIG5vIHNo
b3VsZCBvcGVuIFVSTHMgZXh0ZXJuYWxseSAtIG5vCiAgLSBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0
aW9uQWN0aW9uCi08TlNVUkxSZXF1ZXN0IFVSTCBub3RpZnktZG9uZS5odG1sLCBtYWluIGRvY3Vt
ZW50IFVSTCBub3RpZnktZG9uZS5odG1sLCBodHRwIG1ldGhvZCBHRVQ+IGlzIG1haW4gZnJhbWUg
LSB5ZXMgc2hvdWxkIG9wZW4gVVJMcyBleHRlcm5hbGx5IC0gbm8KKzxOU1VSTFJlcXVlc3QgVVJM
IG5vdGlmeS1kb25lLmh0bWwsIG1haW4gZG9jdW1lbnQgVVJMIG5vdGlmeS1kb25lLmh0bWwsIGh0
dHAgbWV0aG9kIEdFVD4gaXMgbWFpbiBmcmFtZSAtIHllcyBzaG91bGQgb3BlbiBVUkxzIGV4dGVy
bmFsbHkgLSB5ZXMKIApJbmRleDogTGF5b3V0VGVzdHMvbG9hZGVyL25hdmlnYXRpb24tcG9saWN5
L3Nob3VsZC1vcGVuLWV4dGVybmFsLXVybHMvbWFpbi1mcmFtZS1uYXZpZ2F0ZWQtcHJvZ3JhbWF0
aWNhbGx5LWJ5LXN1YmZyYW1lLXZpYS1tZXRob2QtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2xvYWRlci9uYXZpZ2F0aW9uLXBvbGljeS9zaG91bGQtb3Blbi1leHRlcm5h
bC11cmxzL21haW4tZnJhbWUtbmF2aWdhdGVkLXByb2dyYW1hdGljYWxseS1ieS1zdWJmcmFtZS12
aWEtbWV0aG9kLWV4cGVjdGVkLnR4dAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9sb2Fk
ZXIvbmF2aWdhdGlvbi1wb2xpY3kvc2hvdWxkLW9wZW4tZXh0ZXJuYWwtdXJscy9tYWluLWZyYW1l
LW5hdmlnYXRlZC1wcm9ncmFtYXRpY2FsbHktYnktc3ViZnJhbWUtdmlhLW1ldGhvZC1leHBlY3Rl
ZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3IEBACisgLSBkZWNpZGVQb2xpY3lGb3JO
YXZpZ2F0aW9uQWN0aW9uCis8TlNVUkxSZXF1ZXN0IFVSTCByZXNvdXJjZXMvbWFpbi1mcmFtZS13
aXRoLXN1YmZyYW1lLXByb2dyYW1hdGljYWxseS1uYXZpZ2F0ZXMtbWFpbi12aWEtbWV0aG9kLmh0
bWwsIG1haW4gZG9jdW1lbnQgVVJMIHJlc291cmNlcy9tYWluLWZyYW1lLXdpdGgtc3ViZnJhbWUt
cHJvZ3JhbWF0aWNhbGx5LW5hdmlnYXRlcy1tYWluLXZpYS1tZXRob2QuaHRtbCwgaHR0cCBtZXRo
b2QgR0VUPiBpcyBtYWluIGZyYW1lIC0geWVzIHNob3VsZCBvcGVuIFVSTHMgZXh0ZXJuYWxseSAt
IHllcworIC0gZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbgorPE5TVVJMUmVxdWVzdCBV
UkwgcHJvZ3JhbWF0aWNhbGx5LW5hdmlnYXRlLXRvLW5vdGlmeS1kb25lLXRhcmdldC10b3Atdmlh
LW1ldGhvZC5odG1sLCBtYWluIGRvY3VtZW50IFVSTCBtYWluLWZyYW1lLXdpdGgtc3ViZnJhbWUt
cHJvZ3JhbWF0aWNhbGx5LW5hdmlnYXRlcy1tYWluLXZpYS1tZXRob2QuaHRtbCwgaHR0cCBtZXRo
b2QgR0VUPiBpcyBtYWluIGZyYW1lIC0gbm8gc2hvdWxkIG9wZW4gVVJMcyBleHRlcm5hbGx5IC0g
bm8KKyAtIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24KKzxOU1VSTFJlcXVlc3QgVVJM
IG5vdGlmeS1kb25lLmh0bWwsIG1haW4gZG9jdW1lbnQgVVJMIG5vdGlmeS1kb25lLmh0bWwsIGh0
dHAgbWV0aG9kIEdFVD4gaXMgbWFpbiBmcmFtZSAtIHllcyBzaG91bGQgb3BlbiBVUkxzIGV4dGVy
bmFsbHkgLSB5ZXMKKwpJbmRleDogTGF5b3V0VGVzdHMvbG9hZGVyL25hdmlnYXRpb24tcG9saWN5
L3Nob3VsZC1vcGVuLWV4dGVybmFsLXVybHMvbWFpbi1mcmFtZS1uYXZpZ2F0ZWQtcHJvZ3JhbWF0
aWNhbGx5LWJ5LXN1YmZyYW1lLXZpYS1tZXRob2QuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9sb2FkZXIvbmF2aWdhdGlvbi1wb2xpY3kvc2hvdWxkLW9wZW4tZXh0ZXJuYWwtdXJscy9t
YWluLWZyYW1lLW5hdmlnYXRlZC1wcm9ncmFtYXRpY2FsbHktYnktc3ViZnJhbWUtdmlhLW1ldGhv
ZC5odG1sCShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2xvYWRlci9uYXZpZ2F0aW9uLXBv
bGljeS9zaG91bGQtb3Blbi1leHRlcm5hbC11cmxzL21haW4tZnJhbWUtbmF2aWdhdGVkLXByb2dy
YW1hdGljYWxseS1ieS1zdWJmcmFtZS12aWEtbWV0aG9kLmh0bWwJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSwxMyBAQAorPHNjcmlwdD4KKworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAg
dGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci5kdW1wUG9saWN5RGVsZWdh
dGVDYWxsYmFja3MoKTsKKyAgICB0ZXN0UnVubmVyLnF1ZXVlTG9hZCgicmVzb3VyY2VzL21haW4t
ZnJhbWUtd2l0aC1zdWJmcmFtZS1wcm9ncmFtYXRpY2FsbHktbmF2aWdhdGVzLW1haW4tdmlhLW1l
dGhvZC5odG1sIiwgIiIsIHRydWUpOworfQorCis8L3NjcmlwdD4KK1RoaXMgcGFnZSBoYXMgZG9l
cyBub3QgaGF2ZSB0aGUgInNob3VsZCBvcGVuIGV4dGVybmFsIFVSTHMiIGZsYWcgc2V0Ljxicj4K
K0l0IG5hdmlnYXRlcyB0byBhIDJuZCBwYWdlIHRoYXQgZG9lcyBoYXZlIHRoZSBmbGFnIHNldC48
YnI+CitUaGF0IDJuZCBwYWdlIGNvbnRhaW5zIGFuIGlmcmFtZSB3aGljaCBwcm9ncmFtYXRpY2Fs
bHkgbmF2aWdhdGVzIHRoZSBtYWluIGZyYW1lIHRvIGEgM3JkIHBhZ2UuPGJyPgorVGhlICJzaG91
bGQgb3BlbiBleHRlcm5hbCBVUkxzIiBmbGFnIHNob3VsZCBiZSB1bnNldCBiZWNhdXNlIHRoZSBz
dWJmcmFtZS0+bWFpbiBmcmFtZSBuYXZpZ2F0aW9uIHdhcyBwcm9ncmFtYXRpYy48YnI+CkluZGV4
OiBMYXlvdXRUZXN0cy9sb2FkZXIvbmF2aWdhdGlvbi1wb2xpY3kvc2hvdWxkLW9wZW4tZXh0ZXJu
YWwtdXJscy9tYWluLWZyYW1lLW5hdmlnYXRlZC1wcm9ncmFtYXRpY2FsbHktYnktc3ViZnJhbWUt
d2l0aG91dC1mbGFnLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9sb2Fk
ZXIvbmF2aWdhdGlvbi1wb2xpY3kvc2hvdWxkLW9wZW4tZXh0ZXJuYWwtdXJscy9tYWluLWZyYW1l
LW5hdmlnYXRlZC1wcm9ncmFtYXRpY2FsbHktYnktc3ViZnJhbWUtd2l0aG91dC1mbGFnLWV4cGVj
dGVkLnR4dAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9sb2FkZXIvbmF2aWdhdGlvbi1w
b2xpY3kvc2hvdWxkLW9wZW4tZXh0ZXJuYWwtdXJscy9tYWluLWZyYW1lLW5hdmlnYXRlZC1wcm9n
cmFtYXRpY2FsbHktYnktc3ViZnJhbWUtd2l0aG91dC1mbGFnLWV4cGVjdGVkLnR4dAkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDcgQEAKKyAtIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rp
b24KKzxOU1VSTFJlcXVlc3QgVVJMIHJlc291cmNlcy9tYWluLWZyYW1lLXdpdGgtc3ViZnJhbWUt
cHJvZ3JhbWF0aWNhbGx5LW5hdmlnYXRlcy1tYWluLmh0bWwsIG1haW4gZG9jdW1lbnQgVVJMIHJl
c291cmNlcy9tYWluLWZyYW1lLXdpdGgtc3ViZnJhbWUtcHJvZ3JhbWF0aWNhbGx5LW5hdmlnYXRl
cy1tYWluLmh0bWwsIGh0dHAgbWV0aG9kIEdFVD4gaXMgbWFpbiBmcmFtZSAtIHllcyBzaG91bGQg
b3BlbiBVUkxzIGV4dGVybmFsbHkgLSBubworIC0gZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFj
dGlvbgorPE5TVVJMUmVxdWVzdCBVUkwgcHJvZ3JhbWF0aWNhbGx5LW5hdmlnYXRlLXRvLW5vdGlm
eS1kb25lLXRhcmdldC10b3AuaHRtbCwgbWFpbiBkb2N1bWVudCBVUkwgbWFpbi1mcmFtZS13aXRo
LXN1YmZyYW1lLXByb2dyYW1hdGljYWxseS1uYXZpZ2F0ZXMtbWFpbi5odG1sLCBodHRwIG1ldGhv
ZCBHRVQ+IGlzIG1haW4gZnJhbWUgLSBubyBzaG91bGQgb3BlbiBVUkxzIGV4dGVybmFsbHkgLSBu
bworIC0gZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbgorPE5TVVJMUmVxdWVzdCBVUkwg
bm90aWZ5LWRvbmUuaHRtbCwgbWFpbiBkb2N1bWVudCBVUkwgbm90aWZ5LWRvbmUuaHRtbCwgaHR0
cCBtZXRob2QgR0VUPiBpcyBtYWluIGZyYW1lIC0geWVzIHNob3VsZCBvcGVuIFVSTHMgZXh0ZXJu
YWxseSAtIG5vCisKSW5kZXg6IExheW91dFRlc3RzL2xvYWRlci9uYXZpZ2F0aW9uLXBvbGljeS9z
aG91bGQtb3Blbi1leHRlcm5hbC11cmxzL21haW4tZnJhbWUtbmF2aWdhdGVkLXByb2dyYW1hdGlj
YWxseS1ieS1zdWJmcmFtZS13aXRob3V0LWZsYWcuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9sb2FkZXIvbmF2aWdhdGlvbi1wb2xpY3kvc2hvdWxkLW9wZW4tZXh0ZXJuYWwtdXJscy9t
YWluLWZyYW1lLW5hdmlnYXRlZC1wcm9ncmFtYXRpY2FsbHktYnktc3ViZnJhbWUtd2l0aG91dC1m
bGFnLmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvbG9hZGVyL25hdmlnYXRpb24t
cG9saWN5L3Nob3VsZC1vcGVuLWV4dGVybmFsLXVybHMvbWFpbi1mcmFtZS1uYXZpZ2F0ZWQtcHJv
Z3JhbWF0aWNhbGx5LWJ5LXN1YmZyYW1lLXdpdGhvdXQtZmxhZy5odG1sCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsMTMgQEAKKzxzY3JpcHQ+CisKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgewor
ICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIuZHVtcFBvbGljeURl
bGVnYXRlQ2FsbGJhY2tzKCk7CisgICAgdGVzdFJ1bm5lci5xdWV1ZUxvYWQoInJlc291cmNlcy9t
YWluLWZyYW1lLXdpdGgtc3ViZnJhbWUtcHJvZ3JhbWF0aWNhbGx5LW5hdmlnYXRlcy1tYWluLmh0
bWwiKTsKK30KKworPC9zY3JpcHQ+CitUaGlzIHBhZ2UgaGFzIGRvZXMgbm90IGhhdmUgdGhlICJz
aG91bGQgb3BlbiBleHRlcm5hbCBVUkxzIiBmbGFnIHNldC48YnI+CitJdCBuYXZpZ2F0ZXMgdG8g
YSAybmQgcGFnZSB0aGF0IGRvZXMgaGF2ZSB0aGUgZmxhZyBzZXQuPGJyPgorVGhhdCAybmQgcGFn
ZSBjb250YWlucyBhbiBpZnJhbWUgd2hpY2ggcHJvZ3JhbWF0aWNhbGx5IG5hdmlnYXRlcyB0aGUg
bWFpbiBmcmFtZSB0byBhIDNyZCBwYWdlLjxicj4KK1RoZSAic2hvdWxkIG9wZW4gZXh0ZXJuYWwg
VVJMcyIgZmxhZyBzaG91bGQgYmUgdW5zZXQgYmVjYXVzZSB0aGUgc3ViZnJhbWUtPm1haW4gZnJh
bWUgbmF2aWdhdGlvbiB3YXMgcHJvZ3JhbWF0aWMuPGJyPgpJbmRleDogTGF5b3V0VGVzdHMvbG9h
ZGVyL25hdmlnYXRpb24tcG9saWN5L3Nob3VsZC1vcGVuLWV4dGVybmFsLXVybHMvc3ViZnJhbWUt
bmF2aWdhdGVkLXByb2dyYW1hdGljYWxseS1ieS1tYWluLWZyYW1lLW5vLXRvcENhbGxGcmFtZS1l
eHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvbG9hZGVyL25hdmlnYXRpb24t
cG9saWN5L3Nob3VsZC1vcGVuLWV4dGVybmFsLXVybHMvc3ViZnJhbWUtbmF2aWdhdGVkLXByb2dy
YW1hdGljYWxseS1ieS1tYWluLWZyYW1lLW5vLXRvcENhbGxGcmFtZS1leHBlY3RlZC50eHQJKG5v
bmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvbG9hZGVyL25hdmlnYXRpb24tcG9saWN5L3Nob3Vs
ZC1vcGVuLWV4dGVybmFsLXVybHMvc3ViZnJhbWUtbmF2aWdhdGVkLXByb2dyYW1hdGljYWxseS1i
eS1tYWluLWZyYW1lLW5vLXRvcENhbGxGcmFtZS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSw3IEBACisgLSBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uCis8TlNV
UkxSZXF1ZXN0IFVSTCByZXNvdXJjZXMvbWFpbi1mcmFtZS13aXRoLXN1YmZyYW1lLW1haW4tcHJv
Z3JhbWF0aWNhbGx5LW5hdmlnYXRlcy1zdWJmcmFtZS1uby10b3BDYWxsRnJhbWUuaHRtbCwgbWFp
biBkb2N1bWVudCBVUkwgcmVzb3VyY2VzL21haW4tZnJhbWUtd2l0aC1zdWJmcmFtZS1tYWluLXBy
b2dyYW1hdGljYWxseS1uYXZpZ2F0ZXMtc3ViZnJhbWUtbm8tdG9wQ2FsbEZyYW1lLmh0bWwsIGh0
dHAgbWV0aG9kIEdFVD4gaXMgbWFpbiBmcmFtZSAtIHllcyBzaG91bGQgb3BlbiBVUkxzIGV4dGVy
bmFsbHkgLSB5ZXMKKyAtIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24KKzxOU1VSTFJl
cXVlc3QgVVJMIGFib3V0OnNyY2RvYywgbWFpbiBkb2N1bWVudCBVUkwgbWFpbi1mcmFtZS13aXRo
LXN1YmZyYW1lLW1haW4tcHJvZ3JhbWF0aWNhbGx5LW5hdmlnYXRlcy1zdWJmcmFtZS1uby10b3BD
YWxsRnJhbWUuaHRtbCwgaHR0cCBtZXRob2QgR0VUPiBpcyBtYWluIGZyYW1lIC0gbm8gc2hvdWxk
IG9wZW4gVVJMcyBleHRlcm5hbGx5IC0gbm8KKyAtIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25B
Y3Rpb24KKzxOU1VSTFJlcXVlc3QgVVJMIG5vdGlmeS1kb25lLmh0bWwsIG1haW4gZG9jdW1lbnQg
VVJMIG1haW4tZnJhbWUtd2l0aC1zdWJmcmFtZS1tYWluLXByb2dyYW1hdGljYWxseS1uYXZpZ2F0
ZXMtc3ViZnJhbWUtbm8tdG9wQ2FsbEZyYW1lLmh0bWwsIGh0dHAgbWV0aG9kIEdFVD4gaXMgbWFp
biBmcmFtZSAtIG5vIHNob3VsZCBvcGVuIFVSTHMgZXh0ZXJuYWxseSAtIHllcworCkluZGV4OiBM
YXlvdXRUZXN0cy9sb2FkZXIvbmF2aWdhdGlvbi1wb2xpY3kvc2hvdWxkLW9wZW4tZXh0ZXJuYWwt
dXJscy9zdWJmcmFtZS1uYXZpZ2F0ZWQtcHJvZ3JhbWF0aWNhbGx5LWJ5LW1haW4tZnJhbWUtbm8t
dG9wQ2FsbEZyYW1lLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvbG9hZGVyL25hdmln
YXRpb24tcG9saWN5L3Nob3VsZC1vcGVuLWV4dGVybmFsLXVybHMvc3ViZnJhbWUtbmF2aWdhdGVk
LXByb2dyYW1hdGljYWxseS1ieS1tYWluLWZyYW1lLW5vLXRvcENhbGxGcmFtZS5odG1sCShub25l
eGlzdGVudCkKKysrIExheW91dFRlc3RzL2xvYWRlci9uYXZpZ2F0aW9uLXBvbGljeS9zaG91bGQt
b3Blbi1leHRlcm5hbC11cmxzL3N1YmZyYW1lLW5hdmlnYXRlZC1wcm9ncmFtYXRpY2FsbHktYnkt
bWFpbi1mcmFtZS1uby10b3BDYWxsRnJhbWUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDE0IEBACis8c2NyaXB0PgorCitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVu
bmVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLmR1bXBQb2xpY3lEZWxlZ2F0ZUNhbGxi
YWNrcygpOworICAgIHRlc3RSdW5uZXIucXVldWVMb2FkKCJyZXNvdXJjZXMvbWFpbi1mcmFtZS13
aXRoLXN1YmZyYW1lLW1haW4tcHJvZ3JhbWF0aWNhbGx5LW5hdmlnYXRlcy1zdWJmcmFtZS1uby10
b3BDYWxsRnJhbWUuaHRtbCIsICIiLCB0cnVlKTsKK30KKworPC9zY3JpcHQ+CitUaGlzIHBhZ2Ug
aGFzIGRvZXMgbm90IGhhdmUgdGhlICJzaG91bGQgb3BlbiBleHRlcm5hbCBVUkxzIiBmbGFnIHNl
dC48YnI+CitJdCBuYXZpZ2F0ZXMgdG8gYSAybmQgcGFnZSB0aGF0IGRvZXMgaGF2ZSB0aGUgZmxh
ZyBzZXQuPGJyPgorVGhhdCAybmQgcGFnZSBjb250YWlucyBhbiBpZnJhbWUsIGFuZCB0aGUgbWFp
biBmcmFtZSBwcm9ncmFtYXRpY2FsbHkgbmF2aWdhdGVzIHRoZSBpZnJhbWUgdG8gYSAzcmQgZG9j
dW1lbnQuPGJyPgorVGhlICJzaG91bGQgb3BlbiBleHRlcm5hbCBVUkxzIiBmbGFnIHNob3VsZCBi
ZSBzZXQgYmVjYXVzZSB0aGUgcHJvZ3JhbWF0aWMgbmF2aWdhdGlvbiBpbml0aWF0ZWQgZnJvbSB0
aGUgbWFpbiBmcmFtZSBhbmQgdGhlIGZsYWcgc2hvdWxkIHByb3BhZ2F0ZS48YnI+Cis8c2NyaXB0
PgpJbmRleDogTGF5b3V0VGVzdHMvbG9hZGVyL25hdmlnYXRpb24tcG9saWN5L3Nob3VsZC1vcGVu
LWV4dGVybmFsLXVybHMvc3ViZnJhbWUtbmF2aWdhdGVkLXByb2dyYW1hdGljYWxseS1ieS1tYWlu
LWZyYW1lLXZpYS1tZXRob2QtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2xvYWRlci9uYXZpZ2F0aW9uLXBvbGljeS9zaG91bGQtb3Blbi1leHRlcm5hbC11cmxzL3N1YmZy
YW1lLW5hdmlnYXRlZC1wcm9ncmFtYXRpY2FsbHktYnktbWFpbi1mcmFtZS12aWEtbWV0aG9kLWV4
cGVjdGVkLnR4dAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9sb2FkZXIvbmF2aWdhdGlv
bi1wb2xpY3kvc2hvdWxkLW9wZW4tZXh0ZXJuYWwtdXJscy9zdWJmcmFtZS1uYXZpZ2F0ZWQtcHJv
Z3JhbWF0aWNhbGx5LWJ5LW1haW4tZnJhbWUtdmlhLW1ldGhvZC1leHBlY3RlZC50eHQJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSw3IEBACisgLSBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0
aW9uCis8TlNVUkxSZXF1ZXN0IFVSTCByZXNvdXJjZXMvbWFpbi1mcmFtZS13aXRoLXN1YmZyYW1l
LW1haW4tcHJvZ3JhbWF0aWNhbGx5LW5hdmlnYXRlcy1zdWJmcmFtZS12aWEtbWV0aG9kLmh0bWws
IG1haW4gZG9jdW1lbnQgVVJMIHJlc291cmNlcy9tYWluLWZyYW1lLXdpdGgtc3ViZnJhbWUtbWFp
bi1wcm9ncmFtYXRpY2FsbHktbmF2aWdhdGVzLXN1YmZyYW1lLXZpYS1tZXRob2QuaHRtbCwgaHR0
cCBtZXRob2QgR0VUPiBpcyBtYWluIGZyYW1lIC0geWVzIHNob3VsZCBvcGVuIFVSTHMgZXh0ZXJu
YWxseSAtIHllcworIC0gZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbgorPE5TVVJMUmVx
dWVzdCBVUkwgZG8tbm90aGluZy5odG1sLCBtYWluIGRvY3VtZW50IFVSTCBtYWluLWZyYW1lLXdp
dGgtc3ViZnJhbWUtbWFpbi1wcm9ncmFtYXRpY2FsbHktbmF2aWdhdGVzLXN1YmZyYW1lLXZpYS1t
ZXRob2QuaHRtbCwgaHR0cCBtZXRob2QgR0VUPiBpcyBtYWluIGZyYW1lIC0gbm8gc2hvdWxkIG9w
ZW4gVVJMcyBleHRlcm5hbGx5IC0gbm8KKyAtIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rp
b24KKzxOU1VSTFJlcXVlc3QgVVJMIG5vdGlmeS1kb25lLmh0bWwsIG1haW4gZG9jdW1lbnQgVVJM
IG1haW4tZnJhbWUtd2l0aC1zdWJmcmFtZS1tYWluLXByb2dyYW1hdGljYWxseS1uYXZpZ2F0ZXMt
c3ViZnJhbWUtdmlhLW1ldGhvZC5odG1sLCBodHRwIG1ldGhvZCBHRVQ+IGlzIG1haW4gZnJhbWUg
LSBubyBzaG91bGQgb3BlbiBVUkxzIGV4dGVybmFsbHkgLSB5ZXMKKwpJbmRleDogTGF5b3V0VGVz
dHMvbG9hZGVyL25hdmlnYXRpb24tcG9saWN5L3Nob3VsZC1vcGVuLWV4dGVybmFsLXVybHMvc3Vi
ZnJhbWUtbmF2aWdhdGVkLXByb2dyYW1hdGljYWxseS1ieS1tYWluLWZyYW1lLXZpYS1tZXRob2Qu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9sb2FkZXIvbmF2aWdhdGlvbi1wb2xpY3kv
c2hvdWxkLW9wZW4tZXh0ZXJuYWwtdXJscy9zdWJmcmFtZS1uYXZpZ2F0ZWQtcHJvZ3JhbWF0aWNh
bGx5LWJ5LW1haW4tZnJhbWUtdmlhLW1ldGhvZC5odG1sCShub25leGlzdGVudCkKKysrIExheW91
dFRlc3RzL2xvYWRlci9uYXZpZ2F0aW9uLXBvbGljeS9zaG91bGQtb3Blbi1leHRlcm5hbC11cmxz
L3N1YmZyYW1lLW5hdmlnYXRlZC1wcm9ncmFtYXRpY2FsbHktYnktbWFpbi1mcmFtZS12aWEtbWV0
aG9kLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNCBAQAorPHNjcmlwdD4KKworaWYg
KHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAg
dGVzdFJ1bm5lci5kdW1wUG9saWN5RGVsZWdhdGVDYWxsYmFja3MoKTsKKyAgICB0ZXN0UnVubmVy
LnF1ZXVlTG9hZCgicmVzb3VyY2VzL21haW4tZnJhbWUtd2l0aC1zdWJmcmFtZS1tYWluLXByb2dy
YW1hdGljYWxseS1uYXZpZ2F0ZXMtc3ViZnJhbWUtdmlhLW1ldGhvZC5odG1sIiwgIiIsIHRydWUp
OworfQorCis8L3NjcmlwdD4KK1RoaXMgcGFnZSBoYXMgZG9lcyBub3QgaGF2ZSB0aGUgInNob3Vs
ZCBvcGVuIGV4dGVybmFsIFVSTHMiIGZsYWcgc2V0Ljxicj4KK0l0IG5hdmlnYXRlcyB0byBhIDJu
ZCBwYWdlIHRoYXQgZG9lcyBoYXZlIHRoZSBmbGFnIHNldC48YnI+CitUaGF0IDJuZCBwYWdlIGNv
bnRhaW5zIGFuIGlmcmFtZSwgYW5kIHRoZSBtYWluIGZyYW1lIHByb2dyYW1hdGljYWxseSBuYXZp
Z2F0ZXMgdGhlIGlmcmFtZSB0byBhIDNyZCBkb2N1bWVudC48YnI+CitUaGUgInNob3VsZCBvcGVu
IGV4dGVybmFsIFVSTHMiIGZsYWcgc2hvdWxkIGJlIHNldCBiZWNhdXNlIHRoZSBwcm9ncmFtYXRp
YyBuYXZpZ2F0aW9uIGluaXRpYXRlZCBmcm9tIHRoZSBtYWluIGZyYW1lIGFuZCB0aGUgZmxhZyBz
aG91bGQgcHJvcGFnYXRlLjxicj4KKzxzY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9sb2FkZXIv
bmF2aWdhdGlvbi1wb2xpY3kvc2hvdWxkLW9wZW4tZXh0ZXJuYWwtdXJscy9yZXNvdXJjZXMvbWFp
bi1mcmFtZS13aXRoLXN1YmZyYW1lLW1haW4tcHJvZ3JhbWF0aWNhbGx5LW5hdmlnYXRlcy1zdWJm
cmFtZS1uby10b3BDYWxsRnJhbWUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9sb2Fk
ZXIvbmF2aWdhdGlvbi1wb2xpY3kvc2hvdWxkLW9wZW4tZXh0ZXJuYWwtdXJscy9yZXNvdXJjZXMv
bWFpbi1mcmFtZS13aXRoLXN1YmZyYW1lLW1haW4tcHJvZ3JhbWF0aWNhbGx5LW5hdmlnYXRlcy1z
dWJmcmFtZS1uby10b3BDYWxsRnJhbWUuaHRtbAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0
cy9sb2FkZXIvbmF2aWdhdGlvbi1wb2xpY3kvc2hvdWxkLW9wZW4tZXh0ZXJuYWwtdXJscy9yZXNv
dXJjZXMvbWFpbi1mcmFtZS13aXRoLXN1YmZyYW1lLW1haW4tcHJvZ3JhbWF0aWNhbGx5LW5hdmln
YXRlcy1zdWJmcmFtZS1uby10b3BDYWxsRnJhbWUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDkgQEAKKzxpZnJhbWUgc3JjZG9jPSJUaGlzIHBhZ2UgZG9lcyBub3RoaW5nLiI+PC9pZnJh
bWU+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIud2Fp
dFVudGlsRG9uZSgpOworPC9zY3JpcHQ+Cis8IS0tIEl0J3MgZXNzZW50aWFsIHRoYXQgdGhlIGZv
bGxvd2luZyA8c2NyaXB0PiBjb250YWlucyBvbmx5IG9uZSBleHByZXNzaW9uLiAtLT4KKzxzY3Jp
cHQ+CisgICAgd2luZG93LmZyYW1lc1swXS5sb2NhdGlvbiA9ICJub3RpZnktZG9uZS5odG1sIjsK
Kzwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvbG9hZGVyL25hdmlnYXRpb24tcG9saWN5L3No
b3VsZC1vcGVuLWV4dGVybmFsLXVybHMvcmVzb3VyY2VzL21haW4tZnJhbWUtd2l0aC1zdWJmcmFt
ZS1tYWluLXByb2dyYW1hdGljYWxseS1uYXZpZ2F0ZXMtc3ViZnJhbWUtdmlhLW1ldGhvZC5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2xvYWRlci9uYXZpZ2F0aW9uLXBvbGljeS9zaG91
bGQtb3Blbi1leHRlcm5hbC11cmxzL3Jlc291cmNlcy9tYWluLWZyYW1lLXdpdGgtc3ViZnJhbWUt
bWFpbi1wcm9ncmFtYXRpY2FsbHktbmF2aWdhdGVzLXN1YmZyYW1lLXZpYS1tZXRob2QuaHRtbAko
bm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9sb2FkZXIvbmF2aWdhdGlvbi1wb2xpY3kvc2hv
dWxkLW9wZW4tZXh0ZXJuYWwtdXJscy9yZXNvdXJjZXMvbWFpbi1mcmFtZS13aXRoLXN1YmZyYW1l
LW1haW4tcHJvZ3JhbWF0aWNhbGx5LW5hdmlnYXRlcy1zdWJmcmFtZS12aWEtbWV0aG9kLmh0bWwJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMCBAQAorPHNjcmlwdD4KK2lmICh3aW5kb3cudGVz
dFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKworZnVuY3Rpb24gaWZy
YW1lTG9hZGVkKCkgeworICAgIHdpbmRvdy5mcmFtZXNbMF0ubG9jYXRpb24uYXNzaWduKCJub3Rp
ZnktZG9uZS5odG1sIik7Cit9Cis8L3NjcmlwdD4KKworPGlmcmFtZSBvbmxvYWQ9ImlmcmFtZUxv
YWRlZCgpOyIgc3JjPSJkby1ub3RoaW5nLmh0bWwiPjwvaWZyYW1lPgpJbmRleDogTGF5b3V0VGVz
dHMvbG9hZGVyL25hdmlnYXRpb24tcG9saWN5L3Nob3VsZC1vcGVuLWV4dGVybmFsLXVybHMvcmVz
b3VyY2VzL21haW4tZnJhbWUtd2l0aC1zdWJmcmFtZS1wcm9ncmFtYXRpY2FsbHktbmF2aWdhdGVz
LW1haW4tdmlhLW1ldGhvZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2xvYWRlci9u
YXZpZ2F0aW9uLXBvbGljeS9zaG91bGQtb3Blbi1leHRlcm5hbC11cmxzL3Jlc291cmNlcy9tYWlu
LWZyYW1lLXdpdGgtc3ViZnJhbWUtcHJvZ3JhbWF0aWNhbGx5LW5hdmlnYXRlcy1tYWluLXZpYS1t
ZXRob2QuaHRtbAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9sb2FkZXIvbmF2aWdhdGlv
bi1wb2xpY3kvc2hvdWxkLW9wZW4tZXh0ZXJuYWwtdXJscy9yZXNvdXJjZXMvbWFpbi1mcmFtZS13
aXRoLXN1YmZyYW1lLXByb2dyYW1hdGljYWxseS1uYXZpZ2F0ZXMtbWFpbi12aWEtbWV0aG9kLmh0
bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2IEBACis8c2NyaXB0PgoraWYgKHdpbmRvdy50
ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworPC9zY3JpcHQ+CisK
KzxpZnJhbWUgc3JjPSJwcm9ncmFtYXRpY2FsbHktbmF2aWdhdGUtdG8tbm90aWZ5LWRvbmUtdGFy
Z2V0LXRvcC12aWEtbWV0aG9kLmh0bWwiPjwvaWZyYW1lPgpJbmRleDogTGF5b3V0VGVzdHMvbG9h
ZGVyL25hdmlnYXRpb24tcG9saWN5L3Nob3VsZC1vcGVuLWV4dGVybmFsLXVybHMvcmVzb3VyY2Vz
L3Byb2dyYW1hdGljYWxseS1uYXZpZ2F0ZS10by1ub3RpZnktZG9uZS10YXJnZXQtdG9wLXZpYS1t
ZXRob2QuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9sb2FkZXIvbmF2aWdhdGlvbi1w
b2xpY3kvc2hvdWxkLW9wZW4tZXh0ZXJuYWwtdXJscy9yZXNvdXJjZXMvcHJvZ3JhbWF0aWNhbGx5
LW5hdmlnYXRlLXRvLW5vdGlmeS1kb25lLXRhcmdldC10b3AtdmlhLW1ldGhvZC5odG1sCShub25l
eGlzdGVudCkKKysrIExheW91dFRlc3RzL2xvYWRlci9uYXZpZ2F0aW9uLXBvbGljeS9zaG91bGQt
b3Blbi1leHRlcm5hbC11cmxzL3Jlc291cmNlcy9wcm9ncmFtYXRpY2FsbHktbmF2aWdhdGUtdG8t
bm90aWZ5LWRvbmUtdGFyZ2V0LXRvcC12aWEtbWV0aG9kLmh0bWwJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSwxNCBAQAorPHNjcmlwdD4KKworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRl
c3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworICAgIAorZnVuY3Rpb24gbG9hZGVkKCkKK3sKKyAg
ICB3aW5kb3cudG9wLmxvY2F0aW9uLnJlcGxhY2UoIm5vdGlmeS1kb25lLmh0bWwiKTsKK30KKwor
PC9zY3JpcHQ+Cis8Ym9keSBvbmxvYWQ9ImxvYWRlZCgpOyI+CitUaGlzIHBhZ2UgZG9lcyBhIGph
dmFzY3JpcHQgY2xpZW50IHJlZGlyZWN0IHRvIG5vdGlmeS1kb25lLmh0bWwgaW4gdGhlIG1haW4g
ZnJhbWUuCis8L2JvZHk+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>441796</attachid>
            <date>2021-10-19 14:11:42 -0700</date>
            <delta_ts>2022-01-12 11:11:29 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-229120-20211019221140.patch</filename>
            <type>text/plain</type>
            <size>94520</size>
            <attacher name="Alexey Shvayka">ashvayka</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI4NDQ2NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwMyBAQAorMjAyMS0xMC0xOSAgQWxleGV5
IFNodmF5a2EgIDxzaHZhaWthbGVzaEBnbWFpbC5jb20+CisKKyAgICAgICAgQWxsb3cgYSBzYW1l
LW9yaWdpbiA8aWZyYW1lPiB0byBwcm9ncmFtbWF0aWNhbGx5IG5hdmlnYXRlIGl0cyB0b3AgZnJh
bWUgdG8gYW4gZXh0ZXJuYWwgVVJMCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMjkxMjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBTaW5jZSB0aGUgaW50cm9kdWN0aW9uIG9mIFNob3VsZE9wZW5FeHRlcm5h
bFVSTHNQb2xpY3kgaW4gcjE4NTExMSwgaWZyYW1lcyB3ZXJlIGJhbm5lZCBmcm9tCisgICAgICAg
IHByb2dyYW1tYXRpY2FsbHkgKHdpdGhvdXQgYSB1c2VyIGdlc3R1cmUpIG5hdmlnYXRpbmcgdGhl
aXIgdG9wIGZyYW1lcyB0byBleHRlcm5hbCBVUkxzLgorCisgICAgICAgIEhvd2V2ZXIsIG9ubHkg
bmF2aWdhdGlvbiB2aWEgYGxvY2F0aW9uLmhyZWZgIHdhcyBkaXNhbGxvd2VkLiBMb2NhdGlvbiBt
ZXRob2RzIGxpa2UgcmVwbGFjZSgpCisgICAgICAgIGRpZCB3b3JrIGJlY2F1c2UgdGhleSBpbmNv
cnJlY3RseSBpbmZlcnJlZCB0aGUgaW5pdGlhdGluZyBkb2N1bWVudCwgd2hpY2ggd2FzIGZpeGVk
IGluIHIyODAyNTYKKyAgICAgICAgYnkgcGFzc2luZyBgSW5jdW1iZW50V2luZG93YCB0byBMb2Nh
dGlvbiBtZXRob2RzLgorCisgICAgICAgIFRoYXQgZml4IGJyb2tlIEZhY2VUaW1lIHdlYiBhcHAs
IHdoaWNoIGRlcGVuZGVkIG9uIGJlaGF2aW9yIHRoYXQgd2FzIGRlZW1lZCB1bmRlc2lyYWJsZS4K
KyAgICAgICAgVGhlcmUgaXMgbm8gcmVsaWFibGUgd2F5IHRvIGRldGVjdCBpZiBuYXZpZ2F0aW9u
IGlzIHRyaWdnZXJlZCBieSB0aGUgdG9wIGZyYW1lIG9yIGEgc2FtZS1vcmlnaW4KKyAgICAgICAg
PGlmcmFtZT47IGV2ZW4gd2l0aCBmaXhlZCBMb2NhdGlvbiBtZXRob2RzLCBmb3JjaW5nIHRoZSB0
b3AgZnJhbWUgdG8gbmF2aWdhdGUgdG8gYW4gZXh0ZXJuYWwgVVJMCisgICAgICAgIGlzIGFzIHNp
bXBsZSBhcyBgdG9wLmV2YWwoImxvY2F0aW9uLmhyZWYgPSAuLi4iKWAuCisKKyAgICAgICAgVGhp
cyBwYXRjaCByZXZlcnRzIHIyODA4MjYgYW5kIG1ha2VzIGl0IGxlZ2FsIGZvciBzYW1lLW9yaWdp
biBpZnJhbWVzIHRvIG9wZW4gZXh0ZXJuYWwgVVJMcy4KKyAgICAgICAgTm8gYmVoYXZpb3IgY2hh
bmdlIGZvciBjcm9zcy1vcmlnaW4gaWZyYW1lcyBhcyBwcm92ZWQgYnkgdGhlICotY3Jvc3Mtb3Jp
Z2luLmh0bWwgdGVzdC4KKworICAgICAgICBJbml0aWF0ZWRCeU1haW5GcmFtZSwgaW50cm9kdWNl
ZCBpbiByMjE5MTcwLCBiZWNhbWUgdW5uZWNlc3NhcnkgYWZ0ZXIgdGhpcyBjaGFuZ2UgYW5kCisg
ICAgICAgIHdhcyByZW1vdmVkLiBJbnN0ZWFkIG9mIHVzaW5nIGxleGljYWxGcmFtZUZyb21Db21t
b25WTSgpLCB3aGljaCBkaWRuJ3QgaGFuZGxlIG5hdmlnYXRpb24KKyAgICAgICAgdmlhIExvY2F0
aW9uIG1ldGhvZHMgY29ycmVjdGx5IChzZWUgKi12aWEtbWV0aG9kLmh0bWwgdGVzdHMpLCB3ZSBu
b3cgcmVseSBvbiBpbml0aWF0aW5nCisgICAgICAgIGRvY3VtZW50LCBlbmFibGluZyBmdXJ0aGVy
IHNpbXBsaWZpY2F0aW9ucyB0byBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5VG9Qcm9wYWdh
dGUoKQorICAgICAgICBhbmQgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeVRvQXBwbHkoKS4K
KworICAgICAgICBBbHNvLCByZXBsYWNlcyAiYWN0aXZlIiB3aXRoICJpbmN1bWJlbnQiIGluIHZh
cmlhYmxlIG5hbWVzLgorCisgICAgICAgIFRlc3RzOiBodHRwL3Rlc3RzL25hdmlnYXRpb24tcG9s
aWN5L21haW4tZnJhbWUtbmF2aWdhdGVkLXByb2dyYW1hdGljYWxseS1ieS1zdWJmcmFtZS1jcm9z
cy1vcmlnaW4uaHRtbAorICAgICAgICAgICAgICAgbG9hZGVyL25hdmlnYXRpb24tcG9saWN5L3No
b3VsZC1vcGVuLWV4dGVybmFsLXVybHMvbWFpbi1mcmFtZS1uYXZpZ2F0ZWQtcHJvZ3JhbWF0aWNh
bGx5LWJ5LXN1YmZyYW1lLXZpYS1tZXRob2QuaHRtbAorICAgICAgICAgICAgICAgbG9hZGVyL25h
dmlnYXRpb24tcG9saWN5L3Nob3VsZC1vcGVuLWV4dGVybmFsLXVybHMvbWFpbi1mcmFtZS1uYXZp
Z2F0ZWQtcHJvZ3JhbWF0aWNhbGx5LWJ5LXN1YmZyYW1lLXdpdGhvdXQtZmxhZy5odG1sCisgICAg
ICAgICAgICAgICBsb2FkZXIvbmF2aWdhdGlvbi1wb2xpY3kvc2hvdWxkLW9wZW4tZXh0ZXJuYWwt
dXJscy9tYWluLWZyYW1lLW5hdmlnYXRlZC1wcm9ncmFtYXRpY2FsbHktYnktc3ViZnJhbWUuaHRt
bAorICAgICAgICAgICAgICAgbG9hZGVyL25hdmlnYXRpb24tcG9saWN5L3Nob3VsZC1vcGVuLWV4
dGVybmFsLXVybHMvc3ViZnJhbWUtbmF2aWdhdGVkLXByb2dyYW1hdGljYWxseS1ieS1tYWluLWZy
YW1lLW5vLXRvcENhbGxGcmFtZS5odG1sCisgICAgICAgICAgICAgICBsb2FkZXIvbmF2aWdhdGlv
bi1wb2xpY3kvc2hvdWxkLW9wZW4tZXh0ZXJuYWwtdXJscy9zdWJmcmFtZS1uYXZpZ2F0ZWQtcHJv
Z3JhbWF0aWNhbGx5LWJ5LW1haW4tZnJhbWUtdmlhLW1ldGhvZC5odG1sCisKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9Db21tb25WTS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpsZXhpY2FsRnJhbWVG
cm9tQ29tbW9uVk0pOiBEZWxldGVkLgorICAgICAgICAqIGJpbmRpbmdzL2pzL0NvbW1vblZNLmg6
CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6b3BlblVSTEV4
dGVybmFsbHkpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6bmF2aWdhdGUpOgor
ICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpE
b2N1bWVudExvYWRlcjo6c2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeVRvUHJvcGFnYXRlIGNv
bnN0KToKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkUmVxdWVzdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZUxvYWRSZXF1ZXN0OjpGcmFtZUxvYWRSZXF1ZXN0KToKKyAgICAgICAgKiBs
b2FkZXIvRnJhbWVMb2FkUmVxdWVzdC5oOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkUmVx
dWVzdDo6RnJhbWVMb2FkUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRSZXF1
ZXN0Ojppbml0aWF0ZWRCeU1haW5GcmFtZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogbG9h
ZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpjaGFu
Z2VMb2NhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9hZFVSTEludG9D
aGlsZEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xp
Y3lUb0FwcGx5KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkVVJMKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lTG9hZGVyOjpsb2FkV2l0aE5hdmlnYXRpb25BY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6
RnJhbWVMb2FkZXI6OmxvYWRXaXRoRG9jdW1lbnRMb2FkZXIpOgorICAgICAgICAoV2ViQ29yZTo6
RnJhbWVMb2FkZXI6OnJlbG9hZFdpdGhPdmVycmlkZUVuY29kaW5nKToKKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lTG9hZGVyOjpyZWxvYWQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6
OmxvYWRQb3N0UmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6Y29udGlu
dWVMb2FkQWZ0ZXJOZXdXaW5kb3dQb2xpY3kpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2Fk
ZXI6OmxvYWREaWZmZXJlbnREb2N1bWVudEl0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRl
V2luZG93KToKKyAgICAgICAgKFdlYkNvcmU6OmFwcGx5U2hvdWxkT3BlbkV4dGVybmFsVVJMc1Bv
bGljeVRvTmV3RG9jdW1lbnRMb2FkZXIpOiBEZWxldGVkLgorICAgICAgICAqIGxvYWRlci9GcmFt
ZUxvYWRlclR5cGVzLmg6CisgICAgICAgICogbG9hZGVyL05hdmlnYXRpb25BY3Rpb24uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdGlvbkFjdGlvbjo6TmF2aWdhdGlvbkFjdGlvbik6Cisg
ICAgICAgICogbG9hZGVyL05hdmlnYXRpb25BY3Rpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6Ok5h
dmlnYXRpb25BY3Rpb246OmluaXRpYXRlZEJ5TWFpbkZyYW1lIGNvbnN0KToKKyAgICAgICAgKiBs
b2FkZXIvTmF2aWdhdGlvblNjaGVkdWxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY2hlZHVs
ZWROYXZpZ2F0aW9uOjpTY2hlZHVsZWROYXZpZ2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNj
aGVkdWxlZE5hdmlnYXRpb246OmNsZWFyVXNlckdlc3R1cmUpOgorICAgICAgICAoV2ViQ29yZTo6
Y2hvb3NlVGhlTW9zdFBlcm1pc3NpdmVFeHRlcm5hbFVSTHNQb2xpY3kpOgorICAgICAgICAoV2Vi
Q29yZTo6Y29tcHV0ZUV4dGVybmFsVVJMc1BvbGljeUZvclNhbWVPcmlnaW5OYXZpZ2F0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OlNjaGVkdWxlZFVSTE5hdmlnYXRpb246OlNjaGVkdWxlZFVSTE5h
dmlnYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2NoZWR1bGVkVVJMTmF2aWdhdGlvbjo6c2hv
dWxkT3BlbkV4dGVybmFsVVJMcyk6CisgICAgICAgIChXZWJDb3JlOjpTY2hlZHVsZWRGb3JtU3Vi
bWlzc2lvbjo6U2NoZWR1bGVkRm9ybVN1Ym1pc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6TmF2
aWdhdGlvblNjaGVkdWxlcjo6c2NoZWR1bGVMb2NhdGlvbkNoYW5nZSk6CisgICAgICAgIChXZWJD
b3JlOjpTY2hlZHVsZWROYXZpZ2F0aW9uOjpzaG91bGRPcGVuRXh0ZXJuYWxVUkxzIGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNjaGVkdWxlZE5hdmlnYXRpb246OmluaXRpYXRl
ZEJ5TWFpbkZyYW1lIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBsb2FkZXIvUG9saWN5Q2hl
Y2tlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6UG9saWN5Q2hlY2tlcjo6
Y2hlY2tOYXZpZ2F0aW9uUG9saWN5KToKKyAgICAgICAgKiBwYWdlL0NvbnRleHRNZW51Q29udHJv
bGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpvcGVuTmV3V2luZG93KToKKyAgICAgICAgKFdl
YkNvcmU6OkNvbnRleHRNZW51Q29udHJvbGxlcjo6Y29udGV4dE1lbnVJdGVtU2VsZWN0ZWQpOgor
ICAgICAgICAqIHBhZ2UvRE9NV2luZG93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRv
dzo6c2V0TG9jYXRpb24pOgorICAgICAgICBSZW1vdmUgRklYTUUgYXMgY2FuTmF2aWdhdGUoKSBy
ZXR1cm5pbmcgYHRydWVgIGd1YXJhbnRlZXMgaXRzIGNvbnRleHQgaGFzIG5vbi1udWxsIGZyYW1l
KCkuCisKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6Y3JlYXRlV2luZG93KToKKyAgICAg
ICAgKiBwYWdlL0RPTVdpbmRvdy5oOgorICAgICAgICAqIHBhZ2UvTG9jYXRpb24uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TG9jYXRpb246OmFzc2lnbik6CisgICAgICAgIChXZWJDb3JlOjpMb2Nh
dGlvbjo6cmVwbGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpMb2NhdGlvbjo6cmVsb2FkKToKKyAg
ICAgICAgKiBwYWdlL0xvY2F0aW9uLmg6CisgICAgICAgICogcGFnZS9Mb2NhdGlvbi5pZGw6CisK
IDIwMjEtMTAtMTkgIEFudG9pbmUgUXVpbnQgIDxncmFvdXRzQHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgUkVHUkVTU0lPTihyMjg0MzEzKTogOjptYXJrZXIgYWNjZWxlcmF0ZWQgYW5pbWF0aW9ucyBh
cmUgYnJva2VuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Db21tb25WTS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQ29tbW9uVk0uY3BwCShy
ZXZpc2lvbiAyODQ0NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Db21tb25WTS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTc4LDIwICs3OCw2IEBAIEpTQzo6Vk0mIGNvbW1vblZNU2xv
dygpCiAgICAgcmV0dXJuIHZtOwogfQogCi1GcmFtZSogbGV4aWNhbEZyYW1lRnJvbUNvbW1vblZN
KCkKLXsKLSAgICBKU0M6OlZNJiB2bSA9IGNvbW1vblZNKCk7Ci0gICAgaWYgKGF1dG8qIHRvcENh
bGxGcmFtZSA9IHZtLnRvcENhbGxGcmFtZSkgewotICAgICAgICBpZiAoYXV0byogZ2xvYmFsT2Jq
ZWN0ID0gSlNDOjpqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPih0b3BDYWxsRnJhbWUtPmxleGlj
YWxHbG9iYWxPYmplY3Qodm0pKSkgewotICAgICAgICAgICAgaWYgKGF1dG8qIHdpbmRvdyA9IEpT
Qzo6anNEeW5hbWljQ2FzdDxKU0RPTVdpbmRvdyo+KHZtLCBnbG9iYWxPYmplY3QpKSB7Ci0gICAg
ICAgICAgICAgICAgaWYgKGF1dG8qIGZyYW1lID0gd2luZG93LT53cmFwcGVkKCkuZnJhbWUoKSkK
LSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZyYW1lOwotICAgICAgICAgICAgfQotICAgICAg
ICB9Ci0gICAgfQotICAgIHJldHVybiBudWxscHRyOwotfQotCiB2b2lkIGFkZEltcHVyZVByb3Bl
cnR5KGNvbnN0IEF0b21TdHJpbmcmIHByb3BlcnR5TmFtZSkKIHsKICAgICBjb21tb25WTSgpLmFk
ZEltcHVyZVByb3BlcnR5KHByb3BlcnR5TmFtZS5pbXBsKCkpOwpJbmRleDogU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvQ29tbW9uVk0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9Db21tb25WTS5oCShyZXZpc2lvbiAyODQ0NjcpCisrKyBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9Db21tb25WTS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw5ICszMyw2IEBA
IGNsYXNzIFZNOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEZyYW1lOwotRnJhbWUq
IGxleGljYWxGcmFtZUZyb21Db21tb25WTSgpOwotCiBXRUJDT1JFX0VYUE9SVCBleHRlcm4gSlND
OjpWTSogZ19jb21tb25WTU9yTnVsbDsKIAogV0VCQ09SRV9FWFBPUlQgSlNDOjpWTSYgY29tbW9u
Vk1TbG93KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRl
bmRDbGllbnRMb2NhbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuY3BwCShyZXZpc2lvbiAyODQ0NjcpCisrKyBT
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTI2Nyw3ICsyNjcsNyBAQCB2b2lkIEluc3BlY3RvckZyb250ZW5k
Q2xpZW50TG9jYWw6Om9wZW5VCiB7CiAgICAgVXNlckdlc3R1cmVJbmRpY2F0b3IgaW5kaWNhdG9y
IHsgUHJvY2Vzc2luZ1VzZXJHZXN0dXJlIH07CiAgICAgRnJhbWUmIG1haW5GcmFtZSA9IG1faW5z
cGVjdGVkUGFnZUNvbnRyb2xsZXItPmluc3BlY3RlZFBhZ2UoKS5tYWluRnJhbWUoKTsKLSAgICBG
cmFtZUxvYWRSZXF1ZXN0IGZyYW1lTG9hZFJlcXVlc3QgeyAqbWFpbkZyYW1lLmRvY3VtZW50KCks
IG1haW5GcmFtZS5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLCB7IH0sICJfYmxhbmsiX3Ms
IEluaXRpYXRlZEJ5TWFpbkZyYW1lOjpVbmtub3duIH07CisgICAgRnJhbWVMb2FkUmVxdWVzdCBm
cmFtZUxvYWRSZXF1ZXN0IHsgKm1haW5GcmFtZS5kb2N1bWVudCgpLCBtYWluRnJhbWUuZG9jdW1l
bnQoKS0+c2VjdXJpdHlPcmlnaW4oKSwgeyB9LCAiX2JsYW5rIl9zIH07CiAKICAgICBib29sIGNy
ZWF0ZWQ7CiAgICAgV2luZG93RmVhdHVyZXMgZmVhdHVyZXM7CkBAIC0yODAsNyArMjgwLDcgQEAg
dm9pZCBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjpvcGVuVQogCiAgICAgLy8gRklYTUU6
IFdoeSBkbyB3ZSBjb21wdXRlIHRoZSBhYnNvbHV0ZSBVUkwgd2l0aCByZXNwZWN0IHRvIHxmcmFt
ZXwgaW5zdGVhZCBvZiB8bWFpbkZyYW1lfD8KICAgICBSZXNvdXJjZVJlcXVlc3QgcmVzb3VyY2VS
ZXF1ZXN0IHsgZnJhbWUtPmRvY3VtZW50KCktPmNvbXBsZXRlVVJMKHVybCkgfTsKLSAgICBGcmFt
ZUxvYWRSZXF1ZXN0IGZyYW1lTG9hZFJlcXVlc3QyIHsgKm1haW5GcmFtZS5kb2N1bWVudCgpLCBt
YWluRnJhbWUuZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSwgV1RGTW92ZShyZXNvdXJjZVJl
cXVlc3QpLCAiX3NlbGYiX3MsIEluaXRpYXRlZEJ5TWFpbkZyYW1lOjpVbmtub3duIH07CisgICAg
RnJhbWVMb2FkUmVxdWVzdCBmcmFtZUxvYWRSZXF1ZXN0MiB7ICptYWluRnJhbWUuZG9jdW1lbnQo
KSwgbWFpbkZyYW1lLmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCksIFdURk1vdmUocmVzb3Vy
Y2VSZXF1ZXN0KSwgIl9zZWxmIl9zIH07CiAgICAgZnJhbWUtPmxvYWRlcigpLmNoYW5nZUxvY2F0
aW9uKFdURk1vdmUoZnJhbWVMb2FkUmVxdWVzdDIpKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcAko
cmV2aXNpb24gMjg0NDY3KQorKysgU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JQYWdlQWdlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MTMsNyArNDEzLDcgQEAgUHJv
dG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gSW5zcGVjdG9yUAogICAgIEZyYW1lJiBmcmFtZSA9
IG1faW5zcGVjdGVkUGFnZS5tYWluRnJhbWUoKTsKIAogICAgIFJlc291cmNlUmVxdWVzdCByZXNv
dXJjZVJlcXVlc3QgeyBmcmFtZS5kb2N1bWVudCgpLT5jb21wbGV0ZVVSTCh1cmwpIH07Ci0gICAg
RnJhbWVMb2FkUmVxdWVzdCBmcmFtZUxvYWRSZXF1ZXN0IHsgKmZyYW1lLmRvY3VtZW50KCksIGZy
YW1lLmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCksIFdURk1vdmUocmVzb3VyY2VSZXF1ZXN0
KSwgIl9zZWxmIl9zLCBJbml0aWF0ZWRCeU1haW5GcmFtZTo6VW5rbm93biB9OworICAgIEZyYW1l
TG9hZFJlcXVlc3QgZnJhbWVMb2FkUmVxdWVzdCB7ICpmcmFtZS5kb2N1bWVudCgpLCBmcmFtZS5k
b2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLCBXVEZNb3ZlKHJlc291cmNlUmVxdWVzdCksICJf
c2VsZiJfcyB9OwogICAgIGZyYW1lTG9hZFJlcXVlc3QuZGlzYWJsZU5hdmlnYXRpb25Ub0ludmFs
aWRVUkwoKTsKICAgICBmcmFtZS5sb2FkZXIoKS5jaGFuZ2VMb2NhdGlvbihXVEZNb3ZlKGZyYW1l
TG9hZFJlcXVlc3QpKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9h
ZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2Fk
ZXIuY3BwCShyZXZpc2lvbiAyODQ0NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1l
bnRMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzMyLDE2ICsyMzMyLDcgQEAgdm9pZCBE
b2N1bWVudExvYWRlcjo6c2V0VHJpZ2dlcmluZ0FjdGlvbgogCiBTaG91bGRPcGVuRXh0ZXJuYWxV
UkxzUG9saWN5IERvY3VtZW50TG9hZGVyOjpzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5VG9Q
cm9wYWdhdGUoKSBjb25zdAogewotICAgIGlmICghbV9mcmFtZSkKLSAgICAgICAgcmV0dXJuIFNo
b3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNob3VsZE5vdEFsbG93OwotCi0gICAgaWYgKG1f
ZnJhbWUtPmlzTWFpbkZyYW1lKCkpCi0gICAgICAgIHJldHVybiBtX3Nob3VsZE9wZW5FeHRlcm5h
bFVSTHNQb2xpY3k7Ci0KLSAgICBpZiAoZG9jdW1lbnQoKSAmJiBkb2N1bWVudCgpLT5pc1NhbWVP
cmlnaW5Bc1RvcERvY3VtZW50KCkpCi0gICAgICAgIHJldHVybiBtX3Nob3VsZE9wZW5FeHRlcm5h
bFVSTHNQb2xpY3k7Ci0KLSAgICByZXR1cm4gU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTo6
U2hvdWxkTm90QWxsb3c7CisgICAgcmV0dXJuIG1fc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGlj
eTsKIH0KIAogdm9pZCBEb2N1bWVudExvYWRlcjo6YmVjb21lTWFpblJlc291cmNlQ2xpZW50KCkK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRSZXF1ZXN0LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkUmVxdWVzdC5jcHAJKHJldmlz
aW9uIDI4NDQ2NykKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRSZXF1ZXN0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzcsMTMgKzM3LDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotRnJhbWVMb2FkUmVxdWVzdDo6RnJhbWVMb2FkUmVxdWVzdChEb2N1bWVudCYgcmVxdWVz
dGVyLCBTZWN1cml0eU9yaWdpbiYgcmVxdWVzdGVyU2VjdXJpdHlPcmlnaW4sIFJlc291cmNlUmVx
dWVzdCYmIHJlc291cmNlUmVxdWVzdCwgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIEluaXRpYXRl
ZEJ5TWFpbkZyYW1lIGluaXRpYXRlZEJ5TWFpbkZyYW1lLCBjb25zdCBBdG9tU3RyaW5nJiBkb3du
bG9hZEF0dHJpYnV0ZSwgY29uc3QgU3lzdGVtUHJldmlld0luZm8mIHN5c3RlbVByZXZpZXdJbmZv
KQorRnJhbWVMb2FkUmVxdWVzdDo6RnJhbWVMb2FkUmVxdWVzdChEb2N1bWVudCYgcmVxdWVzdGVy
LCBTZWN1cml0eU9yaWdpbiYgcmVxdWVzdGVyU2VjdXJpdHlPcmlnaW4sIFJlc291cmNlUmVxdWVz
dCYmIHJlc291cmNlUmVxdWVzdCwgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIGNvbnN0IEF0b21T
dHJpbmcmIGRvd25sb2FkQXR0cmlidXRlLCBjb25zdCBTeXN0ZW1QcmV2aWV3SW5mbyYgc3lzdGVt
UHJldmlld0luZm8pCiAgICAgOiBtX3JlcXVlc3RlciB7IHJlcXVlc3RlciB9CiAgICAgLCBtX3Jl
cXVlc3RlclNlY3VyaXR5T3JpZ2luIHsgcmVxdWVzdGVyU2VjdXJpdHlPcmlnaW4gfQogICAgICwg
bV9yZXNvdXJjZVJlcXVlc3QgeyBXVEZNb3ZlKHJlc291cmNlUmVxdWVzdCkgfQogICAgICwgbV9m
cmFtZU5hbWUgeyBmcmFtZU5hbWUgfQogICAgICwgbV9kb3dubG9hZEF0dHJpYnV0ZSB7IGRvd25s
b2FkQXR0cmlidXRlIH0KLSAgICAsIG1faW5pdGlhdGVkQnlNYWluRnJhbWUgeyBpbml0aWF0ZWRC
eU1haW5GcmFtZSB9CiAgICAgLCBtX3N5c3RlbVByZXZpZXdJbmZvIHsgc3lzdGVtUHJldmlld0lu
Zm8gfQogewogfQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZFJlcXVlc3Qu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkUmVxdWVzdC5o
CShyZXZpc2lvbiAyODQ0NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkUmVx
dWVzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0MCw3IEBAIGNsYXNzIFNlY3VyaXR5T3Jp
Z2luOwogCiBjbGFzcyBGcmFtZUxvYWRSZXF1ZXN0IHsKIHB1YmxpYzoKLSAgICBXRUJDT1JFX0VY
UE9SVCBGcmFtZUxvYWRSZXF1ZXN0KERvY3VtZW50JiwgU2VjdXJpdHlPcmlnaW4mLCBSZXNvdXJj
ZVJlcXVlc3QmJiwgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIEluaXRpYXRlZEJ5TWFpbkZyYW1l
LCBjb25zdCBBdG9tU3RyaW5nJiBkb3dubG9hZEF0dHJpYnV0ZSA9IHsgfSwgY29uc3QgU3lzdGVt
UHJldmlld0luZm8mID0geyB9KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBGcmFtZUxvYWRSZXF1ZXN0
KERvY3VtZW50JiwgU2VjdXJpdHlPcmlnaW4mLCBSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgU3Ry
aW5nJiBmcmFtZU5hbWUsIGNvbnN0IEF0b21TdHJpbmcmIGRvd25sb2FkQXR0cmlidXRlID0geyB9
LCBjb25zdCBTeXN0ZW1QcmV2aWV3SW5mbyYgPSB7IH0pOwogICAgIFdFQkNPUkVfRVhQT1JUIEZy
YW1lTG9hZFJlcXVlc3QoRnJhbWUmLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBTdWJz
dGl0dXRlRGF0YSYgPSBTdWJzdGl0dXRlRGF0YSgpKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIH5G
cmFtZUxvYWRSZXF1ZXN0KCk7CkBAIC05Nyw4ICs5Nyw2IEBAIHB1YmxpYzoKIAogICAgIGNvbnN0
IEF0b21TdHJpbmcmIGRvd25sb2FkQXR0cmlidXRlKCkgY29uc3QgeyByZXR1cm4gbV9kb3dubG9h
ZEF0dHJpYnV0ZTsgfQogCi0gICAgSW5pdGlhdGVkQnlNYWluRnJhbWUgaW5pdGlhdGVkQnlNYWlu
RnJhbWUoKSBjb25zdCB7IHJldHVybiBtX2luaXRpYXRlZEJ5TWFpbkZyYW1lOyB9Ci0KICAgICBi
b29sIGlzU3lzdGVtUHJldmlldygpIGNvbnN0IHsgcmV0dXJuIG1fc3lzdGVtUHJldmlld0luZm8u
aXNQcmV2aWV3OyB9CiAgICAgY29uc3QgU3lzdGVtUHJldmlld0luZm8mIHN5c3RlbVByZXZpZXdJ
bmZvKCkgY29uc3QgeyByZXR1cm4gbV9zeXN0ZW1QcmV2aWV3SW5mbzsgfQogCkBAIC0xMjMsNyAr
MTIxLDYgQEAgcHJpdmF0ZToKICAgICBTaG91bGRSZXBsYWNlRG9jdW1lbnRJZkphdmFTY3JpcHRV
UkwgbV9zaG91bGRSZXBsYWNlRG9jdW1lbnRJZkphdmFTY3JpcHRVUkwgeyBSZXBsYWNlRG9jdW1l
bnRJZkphdmFTY3JpcHRVUkwgfTsKICAgICBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IG1f
c2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSB7IFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xp
Y3k6OlNob3VsZE5vdEFsbG93IH07CiAgICAgQXRvbVN0cmluZyBtX2Rvd25sb2FkQXR0cmlidXRl
OwotICAgIEluaXRpYXRlZEJ5TWFpbkZyYW1lIG1faW5pdGlhdGVkQnlNYWluRnJhbWUgeyBJbml0
aWF0ZWRCeU1haW5GcmFtZTo6VW5rbm93biB9OwogICAgIFN5c3RlbVByZXZpZXdJbmZvIG1fc3lz
dGVtUHJldmlld0luZm87CiAgICAgYm9vbCBtX2lzUmVxdWVzdEZyb21DbGllbnRPclVzZXJJbnB1
dCB7IGZhbHNlIH07CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3Bw
CShyZXZpc2lvbiAyODQ0NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MjcsMTEgKzQyNyw4IEBAIHZvaWQgRnJhbWVMb2FkZXI6
OmNoZWNrQ29udGVudFBvbGljeShjb24KIAogdm9pZCBGcmFtZUxvYWRlcjo6Y2hhbmdlTG9jYXRp
b24oY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcGFzc2VkVGFyZ2V0LCBFdmVudCogdHJp
Z2dlcmluZ0V2ZW50LCBjb25zdCBSZWZlcnJlclBvbGljeSYgcmVmZXJyZXJQb2xpY3ksIFNob3Vs
ZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSwgc3Rk
OjpvcHRpb25hbDxOZXdGcmFtZU9wZW5lclBvbGljeT4gb3BlbmVyUG9saWN5LCBjb25zdCBBdG9t
U3RyaW5nJiBkb3dubG9hZEF0dHJpYnV0ZSwgY29uc3QgU3lzdGVtUHJldmlld0luZm8mIHN5c3Rl
bVByZXZpZXdJbmZvLCBzdGQ6Om9wdGlvbmFsPFByaXZhdGVDbGlja01lYXN1cmVtZW50PiYmIHBy
aXZhdGVDbGlja01lYXN1cmVtZW50KQogewotICAgIGF1dG8qIGZyYW1lID0gbGV4aWNhbEZyYW1l
RnJvbUNvbW1vblZNKCk7Ci0gICAgYXV0byBpbml0aWF0ZWRCeU1haW5GcmFtZSA9IGZyYW1lICYm
IGZyYW1lLT5pc01haW5GcmFtZSgpID8gSW5pdGlhdGVkQnlNYWluRnJhbWU6OlllcyA6IEluaXRp
YXRlZEJ5TWFpbkZyYW1lOjpVbmtub3duOwotCiAgICAgTmV3RnJhbWVPcGVuZXJQb2xpY3kgbmV3
RnJhbWVPcGVuZXJQb2xpY3kgPSBvcGVuZXJQb2xpY3kudmFsdWVfb3IocmVmZXJyZXJQb2xpY3kg
PT0gUmVmZXJyZXJQb2xpY3k6Ok5vUmVmZXJyZXIgPyBOZXdGcmFtZU9wZW5lclBvbGljeTo6U3Vw
cHJlc3MgOiBOZXdGcmFtZU9wZW5lclBvbGljeTo6QWxsb3cpOwotICAgIEZyYW1lTG9hZFJlcXVl
c3QgZnJhbWVMb2FkUmVxdWVzdCgqbV9mcmFtZS5kb2N1bWVudCgpLCBtX2ZyYW1lLmRvY3VtZW50
KCktPnNlY3VyaXR5T3JpZ2luKCksIHsgdXJsIH0sIHBhc3NlZFRhcmdldCwgaW5pdGlhdGVkQnlN
YWluRnJhbWUsIGRvd25sb2FkQXR0cmlidXRlLCBzeXN0ZW1QcmV2aWV3SW5mbyk7CisgICAgRnJh
bWVMb2FkUmVxdWVzdCBmcmFtZUxvYWRSZXF1ZXN0KCptX2ZyYW1lLmRvY3VtZW50KCksIG1fZnJh
bWUuZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSwgeyB1cmwgfSwgcGFzc2VkVGFyZ2V0LCBk
b3dubG9hZEF0dHJpYnV0ZSwgc3lzdGVtUHJldmlld0luZm8pOwogICAgIGZyYW1lTG9hZFJlcXVl
c3Quc2V0TmV3RnJhbWVPcGVuZXJQb2xpY3kobmV3RnJhbWVPcGVuZXJQb2xpY3kpOwogICAgIGZy
YW1lTG9hZFJlcXVlc3Quc2V0UmVmZXJyZXJQb2xpY3kocmVmZXJyZXJQb2xpY3kpOwogICAgIGZy
YW1lTG9hZFJlcXVlc3Quc2V0U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeShzaG91bGRPcGVu
RXh0ZXJuYWxVUkxzUG9saWN5KTsKQEAgLTk4MiwxMCArOTc5LDcgQEAgdm9pZCBGcmFtZUxvYWRl
cjo6bG9hZFVSTEludG9DaGlsZEZyYW1lKAogICAgICAgICB9CiAgICAgfQogCi0gICAgYXV0byog
bGV4aWNhbEZyYW1lID0gbGV4aWNhbEZyYW1lRnJvbUNvbW1vblZNKCk7Ci0gICAgYXV0byBpbml0
aWF0ZWRCeU1haW5GcmFtZSA9IGxleGljYWxGcmFtZSAmJiBsZXhpY2FsRnJhbWUtPmlzTWFpbkZy
YW1lKCkgPyBJbml0aWF0ZWRCeU1haW5GcmFtZTo6WWVzIDogSW5pdGlhdGVkQnlNYWluRnJhbWU6
OlVua25vd247Ci0KLSAgICBGcmFtZUxvYWRSZXF1ZXN0IGZyYW1lTG9hZFJlcXVlc3QgeyAqbV9m
cmFtZS5kb2N1bWVudCgpLCBtX2ZyYW1lLmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCksIHsg
dXJsIH0sICJfc2VsZiJfcywgaW5pdGlhdGVkQnlNYWluRnJhbWUgfTsKKyAgICBGcmFtZUxvYWRS
ZXF1ZXN0IGZyYW1lTG9hZFJlcXVlc3QgeyAqbV9mcmFtZS5kb2N1bWVudCgpLCBtX2ZyYW1lLmRv
Y3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCksIHsgdXJsIH0sICJfc2VsZiJfcyB9OwogICAgIGZy
YW1lTG9hZFJlcXVlc3Quc2V0TmV3RnJhbWVPcGVuZXJQb2xpY3koTmV3RnJhbWVPcGVuZXJQb2xp
Y3k6OlN1cHByZXNzKTsKICAgICBmcmFtZUxvYWRSZXF1ZXN0LnNldExvY2tCYWNrRm9yd2FyZExp
c3QoTG9ja0JhY2tGb3J3YXJkTGlzdDo6WWVzKTsKICAgICBjaGlsZEZyYW1lLT5sb2FkZXIoKS5s
b2FkVVJMKFdURk1vdmUoZnJhbWVMb2FkUmVxdWVzdCksIHJlZmVyZXIsIEZyYW1lTG9hZFR5cGU6
OlJlZGlyZWN0V2l0aExvY2tlZEJhY2tGb3J3YXJkTGlzdCwgbnVsbHB0ciwgeyB9LCBzdGQ6Om51
bGxvcHQsIFtdIHsgfSk7CkBAIC0xMjg5LDM1ICsxMjgzLDE0IEBAIHZvaWQgRnJhbWVMb2FkZXI6
OmxvYWRGcmFtZVJlcXVlc3QoRnJhbWUKICAgICAgICAgbG9hZFVSTChXVEZNb3ZlKHJlcXVlc3Qp
LCByZWZlcnJlciwgbG9hZFR5cGUsIGV2ZW50LCBXVEZNb3ZlKGZvcm1TdGF0ZSksIFdURk1vdmUo
cHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9
CiAKLXN0YXRpYyBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IHNob3VsZE9wZW5FeHRlcm5h
bFVSTHNQb2xpY3lUb0FwcGx5KEZyYW1lJiBjdXJyZW50RnJhbWUsIEluaXRpYXRlZEJ5TWFpbkZy
YW1lIGluaXRpYXRlZEJ5TWFpbkZyYW1lLCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IHBy
b3BhZ2F0ZWRQb2xpY3kpCitzdGF0aWMgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSBzaG91
bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5VG9BcHBseShTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9s
aWN5IHByb3BhZ2F0ZWRQb2xpY3kpCiB7CiAgICAgaWYgKFVzZXJHZXN0dXJlSW5kaWNhdG9yOjpw
cm9jZXNzaW5nVXNlckdlc3R1cmUoKSkKICAgICAgICAgcmV0dXJuIFNob3VsZE9wZW5FeHRlcm5h
bFVSTHNQb2xpY3k6OlNob3VsZEFsbG93OwogCi0gICAgaWYgKGluaXRpYXRlZEJ5TWFpbkZyYW1l
ID09IEluaXRpYXRlZEJ5TWFpbkZyYW1lOjpZZXMpCi0gICAgICAgIHJldHVybiBwcm9wYWdhdGVk
UG9saWN5OwotCi0gICAgaWYgKCFjdXJyZW50RnJhbWUuaXNNYWluRnJhbWUoKSkKLSAgICAgICAg
cmV0dXJuIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNob3VsZE5vdEFsbG93OwotCiAg
ICAgcmV0dXJuIHByb3BhZ2F0ZWRQb2xpY3k7CiB9CiAKLXN0YXRpYyBTaG91bGRPcGVuRXh0ZXJu
YWxVUkxzUG9saWN5IHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3lUb0FwcGx5KEZyYW1lJiBj
dXJyZW50RnJhbWUsIGNvbnN0IEZyYW1lTG9hZFJlcXVlc3QmIGZyYW1lTG9hZFJlcXVlc3QpCi17
Ci0gICAgcmV0dXJuIHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3lUb0FwcGx5KGN1cnJlbnRG
cmFtZSwgZnJhbWVMb2FkUmVxdWVzdC5pbml0aWF0ZWRCeU1haW5GcmFtZSgpLCBmcmFtZUxvYWRS
ZXF1ZXN0LnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3koKSk7Ci19Ci0KLXN0YXRpYyB2b2lk
IGFwcGx5U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeVRvTmV3RG9jdW1lbnRMb2FkZXIoRnJh
bWUmIGZyYW1lLCBEb2N1bWVudExvYWRlciYgZG9jdW1lbnRMb2FkZXIsIEluaXRpYXRlZEJ5TWFp
bkZyYW1lIGluaXRpYXRlZEJ5TWFpbkZyYW1lLCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5
IHByb3BhZ2F0ZWRQb2xpY3kpCi17Ci0gICAgZG9jdW1lbnRMb2FkZXIuc2V0U2hvdWxkT3BlbkV4
dGVybmFsVVJMc1BvbGljeShzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5VG9BcHBseShmcmFt
ZSwgaW5pdGlhdGVkQnlNYWluRnJhbWUsIHByb3BhZ2F0ZWRQb2xpY3kpKTsKLX0KLQotc3RhdGlj
IHZvaWQgYXBwbHlTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5VG9OZXdEb2N1bWVudExvYWRl
cihGcmFtZSYgZnJhbWUsIERvY3VtZW50TG9hZGVyJiBkb2N1bWVudExvYWRlciwgY29uc3QgRnJh
bWVMb2FkUmVxdWVzdCYgZnJhbWVMb2FkUmVxdWVzdCkKLXsKLSAgICBkb2N1bWVudExvYWRlci5z
ZXRTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xp
Y3lUb0FwcGx5KGZyYW1lLCBmcmFtZUxvYWRSZXF1ZXN0KSk7Ci19Ci0KIGJvb2wgRnJhbWVMb2Fk
ZXI6OmlzTmF2aWdhdGlvbkFsbG93ZWQoKSBjb25zdAogewogICAgIHJldHVybiBtX3BhZ2VEaXNt
aXNzYWxFdmVudEJlaW5nRGlzcGF0Y2hlZCA9PSBQYWdlRGlzbWlzc2FsVHlwZTo6Tm9uZSAmJiAh
bV9mcmFtZS5zY3JpcHQoKS53aWxsUmVwbGFjZVdpdGhSZXN1bHRPZkV4ZWN1dGluZ0phdmFzY3Jp
cHRVUkwoKSAmJiBOYXZpZ2F0aW9uRGlzYWJsZXI6OmlzTmF2aWdhdGlvbkFsbG93ZWQobV9mcmFt
ZSk7CkBAIC0xMzYzLDcgKzEzMzYsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkVVJMKEZyYW1l
TG9hZFJlcXVlCiAgICAgaWYgKCFpc05hdmlnYXRpb25BbGxvd2VkKCkpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIE5hdmlnYXRpb25BY3Rpb24gYWN0aW9uIHsgZnJhbWVMb2FkUmVxdWVzdC5yZXF1
ZXN0ZXIoKSwgcmVxdWVzdCwgZnJhbWVMb2FkUmVxdWVzdC5pbml0aWF0ZWRCeU1haW5GcmFtZSgp
LCBuZXdMb2FkVHlwZSwgaXNGb3JtU3VibWlzc2lvbiwgZXZlbnQsIGZyYW1lTG9hZFJlcXVlc3Qu
c2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSgpLCBmcmFtZUxvYWRSZXF1ZXN0LmRvd25sb2Fk
QXR0cmlidXRlKCkgfTsKKyAgICBOYXZpZ2F0aW9uQWN0aW9uIGFjdGlvbiB7IGZyYW1lTG9hZFJl
cXVlc3QucmVxdWVzdGVyKCksIHJlcXVlc3QsIG5ld0xvYWRUeXBlLCBpc0Zvcm1TdWJtaXNzaW9u
LCBldmVudCwgZnJhbWVMb2FkUmVxdWVzdC5zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KCks
IGZyYW1lTG9hZFJlcXVlc3QuZG93bmxvYWRBdHRyaWJ1dGUoKSB9OwogICAgIGFjdGlvbi5zZXRM
b2NrSGlzdG9yeShmcmFtZUxvYWRSZXF1ZXN0LmxvY2tIaXN0b3J5KCkpOwogICAgIGFjdGlvbi5z
ZXRMb2NrQmFja0ZvcndhcmRMaXN0KGZyYW1lTG9hZFJlcXVlc3QubG9ja0JhY2tGb3J3YXJkTGlz
dCgpKTsKICAgICBpZiAocHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgJiYgbV9mcmFtZS5pc01haW5G
cmFtZSgpKQpAQCAtMTM3Miw3ICsxMzQ1LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZFVSTChG
cmFtZUxvYWRSZXF1ZQogICAgIE5ld0ZyYW1lT3BlbmVyUG9saWN5IG9wZW5lclBvbGljeSA9IGZy
YW1lTG9hZFJlcXVlc3QubmV3RnJhbWVPcGVuZXJQb2xpY3koKTsKICAgICBBbGxvd05hdmlnYXRp
b25Ub0ludmFsaWRVUkwgYWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMID0gZnJhbWVMb2FkUmVx
dWVzdC5hbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkwoKTsKICAgICBpZiAoIXRhcmdldEZyYW1l
ICYmICFlZmZlY3RpdmVGcmFtZU5hbWUuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGFjdGlvbiA9IGFj
dGlvbi5jb3B5V2l0aFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3koc2hvdWxkT3BlbkV4dGVy
bmFsVVJMc1BvbGljeVRvQXBwbHkobV9mcmFtZSwgZnJhbWVMb2FkUmVxdWVzdCkpOworICAgICAg
ICBhY3Rpb24gPSBhY3Rpb24uY29weVdpdGhTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KHNo
b3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3lUb0FwcGx5KGZyYW1lTG9hZFJlcXVlc3Quc2hvdWxk
T3BlbkV4dGVybmFsVVJMc1BvbGljeSgpKSk7CiAKICAgICAgICAgLy8gaHR0cHM6Ly9odG1sLnNw
ZWMud2hhdHdnLm9yZy8jdGhlLXJ1bGVzLWZvci1jaG9vc2luZy1hLWJyb3dzaW5nLWNvbnRleHQt
Z2l2ZW4tYS1icm93c2luZy1jb250ZXh0LW5hbWUgKFN0ZXAgOC4yKQogICAgICAgICBpZiAoZnJh
bWVMb2FkUmVxdWVzdC5yZXF1ZXN0ZXIoKS5zaG91bGRGb3JjZU5vT3BlbmVyQmFzZWRPbkNPT1Ao
KSkgewpAQCAtMTQ2Miw3ICsxNDM1LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZChGcmFtZUxv
YWRSZXF1ZXN0JgogICAgIH0KIAogICAgIGlmIChyZXF1ZXN0LnNob3VsZENoZWNrTmV3V2luZG93
UG9saWN5KCkpIHsKLSAgICAgICAgTmF2aWdhdGlvbkFjdGlvbiBhY3Rpb24geyByZXF1ZXN0LnJl
cXVlc3RlcigpLCByZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpLCBJbml0aWF0ZWRCeU1haW5GcmFt
ZTo6VW5rbm93biwgTmF2aWdhdGlvblR5cGU6Ok90aGVyLCByZXF1ZXN0LnNob3VsZE9wZW5FeHRl
cm5hbFVSTHNQb2xpY3koKSB9OworICAgICAgICBOYXZpZ2F0aW9uQWN0aW9uIGFjdGlvbiB7IHJl
cXVlc3QucmVxdWVzdGVyKCksIHJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCksIE5hdmlnYXRpb25U
eXBlOjpPdGhlciwgcmVxdWVzdC5zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KCkgfTsKICAg
ICAgICAgcG9saWN5Q2hlY2tlcigpLmNoZWNrTmV3V2luZG93UG9saWN5KFdURk1vdmUoYWN0aW9u
KSwgV1RGTW92ZShyZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpKSwgeyB9LCByZXF1ZXN0LmZyYW1l
TmFtZSgpLCBbdGhpc10gKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgV2Vha1B0cjxG
b3JtU3RhdGU+JiYgZm9ybVN0YXRlLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgY29uc3QgTmF2
aWdhdGlvbkFjdGlvbiYgYWN0aW9uLCBTaG91bGRDb250aW51ZVBvbGljeUNoZWNrIHNob3VsZENv
bnRpbnVlKSB7CiAgICAgICAgICAgICBjb250aW51ZUxvYWRBZnRlck5ld1dpbmRvd1BvbGljeShy
ZXF1ZXN0LCBmb3JtU3RhdGUuZ2V0KCksIGZyYW1lTmFtZSwgYWN0aW9uLCBzaG91bGRDb250aW51
ZSwgQWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMOjpZZXMsIE5ld0ZyYW1lT3BlbmVyUG9saWN5
OjpTdXBwcmVzcyk7CiAgICAgICAgIH0pOwpAQCAtMTQ3OCw3ICsxNDUxLDcgQEAgdm9pZCBGcmFt
ZUxvYWRlcjo6bG9hZChGcmFtZUxvYWRSZXF1ZXN0JgogICAgIGxvYWRlci0+c2V0QWxsb3dzRGF0
YVVSTHNGb3JNYWluRnJhbWUocmVxdWVzdC5pc1JlcXVlc3RGcm9tQ2xpZW50T3JVc2VySW5wdXQo
KSk7CiAgICAgbG9hZGVyLT5zZXRJc0NvbnRpbnVpbmdMb2FkQWZ0ZXJQcm92aXNpb25hbExvYWRT
dGFydGVkKHJlcXVlc3Quc2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkKCkgPT0gU2hvdWxkVHJl
YXRBc0NvbnRpbnVpbmdMb2FkOjpZZXNBZnRlclByb3Zpc2lvbmFsTG9hZFN0YXJ0ZWQpOwogICAg
IGFkZFNhbWVTaXRlSW5mb1RvUmVxdWVzdElmTmVlZGVkKGxvYWRlci0+cmVxdWVzdCgpKTsKLSAg
ICBhcHBseVNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3lUb05ld0RvY3VtZW50TG9hZGVyKG1f
ZnJhbWUsIGxvYWRlciwgcmVxdWVzdCk7CisgICAgbG9hZGVyLT5zZXRTaG91bGRPcGVuRXh0ZXJu
YWxVUkxzUG9saWN5KHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3lUb0FwcGx5KHJlcXVlc3Qu
c2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSgpKSk7CiAKICAgICBpZiAocmVxdWVzdC5zaG91
bGRUcmVhdEFzQ29udGludWluZ0xvYWQoKSAhPSBTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQ6
Ok5vKSB7CiAgICAgICAgIGxvYWRlci0+c2V0Q2xpZW50UmVkaXJlY3RTb3VyY2VGb3JIaXN0b3J5
KHJlcXVlc3QuY2xpZW50UmVkaXJlY3RTb3VyY2VGb3JIaXN0b3J5KCkpOwpAQCAtMTQ5Nyw3ICsx
NDcwLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZFdpdGhOYXZpZ2F0aW9uQWN0aQogICAgIEZS
QU1FTE9BREVSX1JFTEVBU0VfTE9HKFJlc291cmNlTG9hZGluZywgImxvYWRXaXRoTmF2aWdhdGlv
bkFjdGlvbjogZnJhbWUgbG9hZCBzdGFydGVkIik7CiAKICAgICBSZWY8RG9jdW1lbnRMb2FkZXI+
IGxvYWRlciA9IG1fY2xpZW50LT5jcmVhdGVEb2N1bWVudExvYWRlcihyZXF1ZXN0LCBkZWZhdWx0
U3Vic3RpdHV0ZURhdGFGb3JVUkwocmVxdWVzdC51cmwoKSkpOwotICAgIGFwcGx5U2hvdWxkT3Bl
bkV4dGVybmFsVVJMc1BvbGljeVRvTmV3RG9jdW1lbnRMb2FkZXIobV9mcmFtZSwgbG9hZGVyLCBh
Y3Rpb24uaW5pdGlhdGVkQnlNYWluRnJhbWUoKSwgYWN0aW9uLnNob3VsZE9wZW5FeHRlcm5hbFVS
THNQb2xpY3koKSk7CisgICAgbG9hZGVyLT5zZXRTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5
KHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3lUb0FwcGx5KGFjdGlvbi5zaG91bGRPcGVuRXh0
ZXJuYWxVUkxzUG9saWN5KCkpKTsKIAogICAgIGlmIChhY3Rpb24ubG9ja0hpc3RvcnkoKSA9PSBM
b2NrSGlzdG9yeTo6WWVzICYmIG1fZG9jdW1lbnRMb2FkZXIpCiAgICAgICAgIGxvYWRlci0+c2V0
Q2xpZW50UmVkaXJlY3RTb3VyY2VGb3JIaXN0b3J5KG1fZG9jdW1lbnRMb2FkZXItPmRpZENyZWF0
ZUdsb2JhbEhpc3RvcnlFbnRyeSgpID8gbV9kb2N1bWVudExvYWRlci0+dXJsRm9ySGlzdG9yeSgp
LnN0cmluZygpIDogbV9kb2N1bWVudExvYWRlci0+Y2xpZW50UmVkaXJlY3RTb3VyY2VGb3JIaXN0
b3J5KCkpOwpAQCAtMTU5OCw3ICsxNTcxLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZFdpdGhE
b2N1bWVudExvYWRlcgogCiAgICAgaWYgKHNob3VsZFBlcmZvcm1GcmFnbWVudE5hdmlnYXRpb24o
aXNGb3JtU3VibWlzc2lvbiwgaHR0cE1ldGhvZCwgcG9saWN5Q2hlY2tlcigpLmxvYWRUeXBlKCks
IG5ld1VSTCkpIHsKICAgICAgICAgUmVmUHRyPERvY3VtZW50TG9hZGVyPiBvbGREb2N1bWVudExv
YWRlciA9IG1fZG9jdW1lbnRMb2FkZXI7Ci0gICAgICAgIE5hdmlnYXRpb25BY3Rpb24gYWN0aW9u
IHsgKm1fZnJhbWUuZG9jdW1lbnQoKSwgbG9hZGVyLT5yZXF1ZXN0KCksIEluaXRpYXRlZEJ5TWFp
bkZyYW1lOjpVbmtub3duLCBwb2xpY3lDaGVja2VyKCkubG9hZFR5cGUoKSwgaXNGb3JtU3VibWlz
c2lvbiB9OworICAgICAgICBOYXZpZ2F0aW9uQWN0aW9uIGFjdGlvbiB7ICptX2ZyYW1lLmRvY3Vt
ZW50KCksIGxvYWRlci0+cmVxdWVzdCgpLCBwb2xpY3lDaGVja2VyKCkubG9hZFR5cGUoKSwgaXNG
b3JtU3VibWlzc2lvbiB9OwogCiAgICAgICAgIG9sZERvY3VtZW50TG9hZGVyLT5zZXRUcmlnZ2Vy
aW5nQWN0aW9uKFdURk1vdmUoYWN0aW9uKSk7CiAgICAgICAgIG9sZERvY3VtZW50TG9hZGVyLT5z
ZXRMYXN0Q2hlY2tlZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0KCkpOwpAQCAtMTYxNiw3ICsxNTg5
LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZFdpdGhEb2N1bWVudExvYWRlcgogICAgIHBvbGlj
eUNoZWNrZXIoKS5zdG9wQ2hlY2soKTsKICAgICBzZXRQb2xpY3lEb2N1bWVudExvYWRlcihsb2Fk
ZXIpOwogICAgIGlmIChsb2FkZXItPnRyaWdnZXJpbmdBY3Rpb24oKS5pc0VtcHR5KCkpCi0gICAg
ICAgIGxvYWRlci0+c2V0VHJpZ2dlcmluZ0FjdGlvbih7ICptX2ZyYW1lLmRvY3VtZW50KCksIGxv
YWRlci0+cmVxdWVzdCgpLCBJbml0aWF0ZWRCeU1haW5GcmFtZTo6VW5rbm93biwgcG9saWN5Q2hl
Y2tlcigpLmxvYWRUeXBlKCksIGlzRm9ybVN1Ym1pc3Npb24gfSk7CisgICAgICAgIGxvYWRlci0+
c2V0VHJpZ2dlcmluZ0FjdGlvbih7ICptX2ZyYW1lLmRvY3VtZW50KCksIGxvYWRlci0+cmVxdWVz
dCgpLCBwb2xpY3lDaGVja2VyKCkubG9hZFR5cGUoKSwgaXNGb3JtU3VibWlzc2lvbiB9KTsKIAog
ICAgIGlmIChFbGVtZW50KiBvd25lckVsZW1lbnQgPSBtX2ZyYW1lLm93bmVyRWxlbWVudCgpKSB7
CiAgICAgICAgIC8vIFdlIHNraXAgZGlzcGF0Y2hpbmcgdGhlIGJlZm9yZWxvYWQgZXZlbnQgaWYg
d2UndmUgYWxyZWFkeQpAQCAtMTczNyw3ICsxNzEwLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6cmVs
b2FkV2l0aE92ZXJyaWRlRW5jbwogICAgIHJlcXVlc3Quc2V0Q2FjaGVQb2xpY3koUmVzb3VyY2VS
ZXF1ZXN0Q2FjaGVQb2xpY3k6OlJldHVybkNhY2hlRGF0YUVsc2VMb2FkKTsKIAogICAgIFJlZjxE
b2N1bWVudExvYWRlcj4gbG9hZGVyID0gbV9jbGllbnQtPmNyZWF0ZURvY3VtZW50TG9hZGVyKHJl
cXVlc3QsIGRlZmF1bHRTdWJzdGl0dXRlRGF0YUZvclVSTChyZXF1ZXN0LnVybCgpKSk7Ci0gICAg
YXBwbHlTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5VG9OZXdEb2N1bWVudExvYWRlcihtX2Zy
YW1lLCBsb2FkZXIsIEluaXRpYXRlZEJ5TWFpbkZyYW1lOjpVbmtub3duLCBtX2RvY3VtZW50TG9h
ZGVyLT5zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5VG9Qcm9wYWdhdGUoKSk7CisgICAgbG9h
ZGVyLT5zZXRTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KHNob3VsZE9wZW5FeHRlcm5hbFVS
THNQb2xpY3lUb0FwcGx5KG1fZG9jdW1lbnRMb2FkZXItPnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQ
b2xpY3lUb1Byb3BhZ2F0ZSgpKSk7CiAKICAgICBzZXRQb2xpY3lEb2N1bWVudExvYWRlcihsb2Fk
ZXIucHRyKCkpOwogCkBAIC0xNzY5LDggKzE3NDIsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpyZWxv
YWQoT3B0aW9uU2V0PFJlbG9hCiAgICAgUmVmPERvY3VtZW50TG9hZGVyPiBsb2FkZXIgPSBtX2Ns
aWVudC0+Y3JlYXRlRG9jdW1lbnRMb2FkZXIoaW5pdGlhbFJlcXVlc3QsIGRlZmF1bHRTdWJzdGl0
dXRlRGF0YUZvclVSTChpbml0aWFsUmVxdWVzdC51cmwoKSkpOwogICAgIGxvYWRlci0+c2V0QWxs
b3dzV2ViQXJjaGl2ZUZvck1haW5GcmFtZShtX2RvY3VtZW50TG9hZGVyLT5hbGxvd3NXZWJBcmNo
aXZlRm9yTWFpbkZyYW1lKCkpOwogICAgIGxvYWRlci0+c2V0QWxsb3dzRGF0YVVSTHNGb3JNYWlu
RnJhbWUobV9kb2N1bWVudExvYWRlci0+YWxsb3dzRGF0YVVSTHNGb3JNYWluRnJhbWUoKSk7Ci0g
ICAgYXBwbHlTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5VG9OZXdEb2N1bWVudExvYWRlciht
X2ZyYW1lLCBsb2FkZXIsIEluaXRpYXRlZEJ5TWFpbkZyYW1lOjpVbmtub3duLCBtX2RvY3VtZW50
TG9hZGVyLT5zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5VG9Qcm9wYWdhdGUoKSk7Ci0KKyAg
ICBsb2FkZXItPnNldFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3koc2hvdWxkT3BlbkV4dGVy
bmFsVVJMc1BvbGljeVRvQXBwbHkobV9kb2N1bWVudExvYWRlci0+c2hvdWxkT3BlbkV4dGVybmFs
VVJMc1BvbGljeVRvUHJvcGFnYXRlKCkpKTsKICAgICBsb2FkZXItPnNldFVzZXJDb250ZW50RXh0
ZW5zaW9uc0VuYWJsZWQoIW9wdGlvbnMuY29udGFpbnMoUmVsb2FkT3B0aW9uOjpEaXNhYmxlQ29u
dGVudEJsb2NrZXJzKSk7CiAgICAgCiAgICAgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0ID0gbG9h
ZGVyLT5yZXF1ZXN0KCk7CkBAIC0xNzgyLDcgKzE3NTQsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpy
ZWxvYWQoT3B0aW9uU2V0PFJlbG9hCiAKICAgICAvLyBJZiB3ZSdyZSBhYm91dCB0byByZS1wb3N0
LCBzZXQgdXAgYWN0aW9uIHNvIHRoZSBhcHBsaWNhdGlvbiBjYW4gd2FybiB0aGUgdXNlci4KICAg
ICBpZiAocmVxdWVzdC5odHRwTWV0aG9kKCkgPT0gIlBPU1QiKQotICAgICAgICBsb2FkZXItPnNl
dFRyaWdnZXJpbmdBY3Rpb24oeyAqbV9mcmFtZS5kb2N1bWVudCgpLCByZXF1ZXN0LCBJbml0aWF0
ZWRCeU1haW5GcmFtZTo6VW5rbm93biwgTmF2aWdhdGlvblR5cGU6OkZvcm1SZXN1Ym1pdHRlZCB9
KTsKKyAgICAgICAgbG9hZGVyLT5zZXRUcmlnZ2VyaW5nQWN0aW9uKHsgKm1fZnJhbWUuZG9jdW1l
bnQoKSwgcmVxdWVzdCwgTmF2aWdhdGlvblR5cGU6OkZvcm1SZXN1Ym1pdHRlZCB9KTsKIAogICAg
IGxvYWRlci0+c2V0T3ZlcnJpZGVFbmNvZGluZyhtX2RvY3VtZW50TG9hZGVyLT5vdmVycmlkZUVu
Y29kaW5nKCkpOwogCkBAIC0zMDcwLDcgKzMwNDIsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2Fk
UG9zdFJlcXVlc3QoRnJhbWVMCiAgICAgaWYgKERvY3VtZW50KiBkb2N1bWVudCA9IG1fZnJhbWUu
ZG9jdW1lbnQoKSkKICAgICAgICAgZG9jdW1lbnQtPmNvbnRlbnRTZWN1cml0eVBvbGljeSgpLT51
cGdyYWRlSW5zZWN1cmVSZXF1ZXN0SWZOZWVkZWQod29ya2luZ1Jlc291cmNlUmVxdWVzdCwgQ29u
dGVudFNlY3VyaXR5UG9saWN5OjpJbnNlY3VyZVJlcXVlc3RUeXBlOjpMb2FkKTsKIAotICAgIE5h
dmlnYXRpb25BY3Rpb24gYWN0aW9uIHsgcmVxdWVzdC5yZXF1ZXN0ZXIoKSwgd29ya2luZ1Jlc291
cmNlUmVxdWVzdCwgcmVxdWVzdC5pbml0aWF0ZWRCeU1haW5GcmFtZSgpLCBsb2FkVHlwZSwgdHJ1
ZSwgZXZlbnQsIHJlcXVlc3Quc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSgpLCB7IH0gfTsK
KyAgICBOYXZpZ2F0aW9uQWN0aW9uIGFjdGlvbiB7IHJlcXVlc3QucmVxdWVzdGVyKCksIHdvcmtp
bmdSZXNvdXJjZVJlcXVlc3QsIGxvYWRUeXBlLCB0cnVlLCBldmVudCwgcmVxdWVzdC5zaG91bGRP
cGVuRXh0ZXJuYWxVUkxzUG9saWN5KCksIHsgfSB9OwogICAgIGFjdGlvbi5zZXRMb2NrSGlzdG9y
eShsb2NrSGlzdG9yeSk7CiAKICAgICBpZiAoIWZyYW1lTmFtZS5pc0VtcHR5KCkpIHsKQEAgLTM1
ODQsNyArMzU1Niw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmNvbnRpbnVlTG9hZEFmdGVyTmV3V2kK
ICAgICAgICAgbWFpbkZyYW1lLT5kb2N1bWVudCgpLT5zZXRSZWZlcnJlclBvbGljeShmcmFtZS0+
ZG9jdW1lbnQoKS0+cmVmZXJyZXJQb2xpY3koKSk7CiAgICAgfQogCi0gICAgTmF2aWdhdGlvbkFj
dGlvbiBuZXdBY3Rpb24geyAqZnJhbWUtPmRvY3VtZW50KCksIHJlcXVlc3QsIEluaXRpYXRlZEJ5
TWFpbkZyYW1lOjpVbmtub3duLCBOYXZpZ2F0aW9uVHlwZTo6T3RoZXIsIGFjdGlvbi5zaG91bGRP
cGVuRXh0ZXJuYWxVUkxzUG9saWN5KCksIG51bGxwdHIsIGFjdGlvbi5kb3dubG9hZEF0dHJpYnV0
ZSgpIH07CisgICAgTmF2aWdhdGlvbkFjdGlvbiBuZXdBY3Rpb24geyAqZnJhbWUtPmRvY3VtZW50
KCksIHJlcXVlc3QsIE5hdmlnYXRpb25UeXBlOjpPdGhlciwgYWN0aW9uLnNob3VsZE9wZW5FeHRl
cm5hbFVSTHNQb2xpY3koKSwgbnVsbHB0ciwgYWN0aW9uLmRvd25sb2FkQXR0cmlidXRlKCkgfTsK
ICAgICBtYWluRnJhbWUtPmxvYWRlcigpLmxvYWRXaXRoTmF2aWdhdGlvbkFjdGlvbihyZXF1ZXN0
LCBXVEZNb3ZlKG5ld0FjdGlvbiksIEZyYW1lTG9hZFR5cGU6OlN0YW5kYXJkLCBmb3JtU3RhdGUs
IGFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTCk7CiB9CiAKQEAgLTM3NzIsMTUgKzM3NDQsMTMg
QEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZERpZmZlcmVudERvY3VtZW50SQogICAgIC8vIFJlbWVt
YmVyIHRoaXMgaXRlbSBzbyB3ZSBjYW4gdHJhdmVyc2UgYW55IGNoaWxkIGl0ZW1zIGFzIGNoaWxk
IGZyYW1lcyBsb2FkCiAgICAgaGlzdG9yeSgpLnNldFByb3Zpc2lvbmFsSXRlbSgmaXRlbSk7CiAK
LSAgICBhdXRvIGluaXRpYXRlZEJ5TWFpbkZyYW1lID0gSW5pdGlhdGVkQnlNYWluRnJhbWU6OlVu
a25vd247Ci0KICAgICBTZXRGb3JTY29wZTxMb2FkQ29udGludWluZ1N0YXRlPiBjb250aW51aW5n
TG9hZEd1YXJkKG1fY3VycmVudExvYWRDb250aW51aW5nU3RhdGUsIHNob3VsZFRyZWF0QXNDb250
aW51aW5nTG9hZCAhPSBTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQ6Ok5vID8gTG9hZENvbnRp
bnVpbmdTdGF0ZTo6Q29udGludWluZ1dpdGhIaXN0b3J5SXRlbSA6IExvYWRDb250aW51aW5nU3Rh
dGU6Ok5vdENvbnRpbnVpbmcpOwogCiAgICAgaWYgKENhY2hlZFBhZ2UqIGNhY2hlZFBhZ2UgPSBC
YWNrRm9yd2FyZENhY2hlOjpzaW5nbGV0b24oKS5nZXQoaXRlbSwgbV9mcmFtZS5wYWdlKCkpKSB7
CiAgICAgICAgIGF1dG8gZG9jdW1lbnRMb2FkZXIgPSBjYWNoZWRQYWdlLT5kb2N1bWVudExvYWRl
cigpOwogICAgICAgICBtX2NsaWVudC0+dXBkYXRlQ2FjaGVkRG9jdW1lbnRMb2FkZXIoKmRvY3Vt
ZW50TG9hZGVyKTsKIAotICAgICAgICBhdXRvIGFjdGlvbiA9IE5hdmlnYXRpb25BY3Rpb24geyAq
bV9mcmFtZS5kb2N1bWVudCgpLCBkb2N1bWVudExvYWRlci0+cmVxdWVzdCgpLCBpbml0aWF0ZWRC
eU1haW5GcmFtZSwgbG9hZFR5cGUsIGZhbHNlIH07CisgICAgICAgIGF1dG8gYWN0aW9uID0gTmF2
aWdhdGlvbkFjdGlvbiB7ICptX2ZyYW1lLmRvY3VtZW50KCksIGRvY3VtZW50TG9hZGVyLT5yZXF1
ZXN0KCksIGxvYWRUeXBlLCBmYWxzZSB9OwogICAgICAgICBhY3Rpb24uc2V0VGFyZ2V0QmFja0Zv
cndhcmRJdGVtKGl0ZW0pOwogICAgICAgICBhY3Rpb24uc2V0U291cmNlQmFja0ZvcndhcmRJdGVt
KGZyb21JdGVtKTsKICAgICAgICAgZG9jdW1lbnRMb2FkZXItPnNldFRyaWdnZXJpbmdBY3Rpb24o
V1RGTW92ZShhY3Rpb24pKTsKQEAgLTM4MDIsNyArMzc3Miw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6
OmxvYWREaWZmZXJlbnREb2N1bWVudEkKICAgICBpZiAoIWl0ZW0ucmVmZXJyZXIoKS5pc051bGwo
KSkKICAgICAgICAgcmVxdWVzdC5zZXRIVFRQUmVmZXJyZXIoaXRlbS5yZWZlcnJlcigpKTsKIAot
ICAgIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1Bv
bGljeSA9IHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3lUb0FwcGx5KG1fZnJhbWUsIGluaXRp
YXRlZEJ5TWFpbkZyYW1lLCBpdGVtLnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3koKSk7Cisg
ICAgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9s
aWN5ID0gc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeVRvQXBwbHkoaXRlbS5zaG91bGRPcGVu
RXh0ZXJuYWxVUkxzUG9saWN5KCkpOwogICAgIGJvb2wgaXNGb3JtU3VibWlzc2lvbiA9IGZhbHNl
OwogICAgIEV2ZW50KiBldmVudCA9IG51bGxwdHI7CiAKQEAgLTM4MzAsMTAgKzM4MDAsMTAgQEAg
dm9pZCBGcmFtZUxvYWRlcjo6bG9hZERpZmZlcmVudERvY3VtZW50SQogICAgICAgICAKICAgICAg
ICAgaWYgKGNhY2hlTG9hZFBvbGljeSA9PSBNYXlBdHRlbXB0Q2FjaGVPbmx5TG9hZEZvckZvcm1T
dWJtaXNzaW9uSXRlbSkgewogICAgICAgICAgICAgcmVxdWVzdC5zZXRDYWNoZVBvbGljeShSZXNv
dXJjZVJlcXVlc3RDYWNoZVBvbGljeTo6UmV0dXJuQ2FjaGVEYXRhRG9udExvYWQpOwotICAgICAg
ICAgICAgYWN0aW9uID0geyAqbV9mcmFtZS5kb2N1bWVudCgpLCByZXF1ZXN0LCBpbml0aWF0ZWRC
eU1haW5GcmFtZSwgbG9hZFR5cGUsIGlzRm9ybVN1Ym1pc3Npb24sIGV2ZW50LCBzaG91bGRPcGVu
RXh0ZXJuYWxVUkxzUG9saWN5IH07CisgICAgICAgICAgICBhY3Rpb24gPSB7ICptX2ZyYW1lLmRv
Y3VtZW50KCksIHJlcXVlc3QsIGxvYWRUeXBlLCBpc0Zvcm1TdWJtaXNzaW9uLCBldmVudCwgc2hv
dWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSB9OwogICAgICAgICB9IGVsc2UgewogICAgICAgICAg
ICAgcmVxdWVzdC5zZXRDYWNoZVBvbGljeShSZXNvdXJjZVJlcXVlc3RDYWNoZVBvbGljeTo6UmV0
dXJuQ2FjaGVEYXRhRWxzZUxvYWQpOwotICAgICAgICAgICAgYWN0aW9uID0geyAqbV9mcmFtZS5k
b2N1bWVudCgpLCByZXF1ZXN0LCBpbml0aWF0ZWRCeU1haW5GcmFtZSwgTmF2aWdhdGlvblR5cGU6
OkZvcm1SZXN1Ym1pdHRlZCwgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSwgZXZlbnQgfTsK
KyAgICAgICAgICAgIGFjdGlvbiA9IHsgKm1fZnJhbWUuZG9jdW1lbnQoKSwgcmVxdWVzdCwgTmF2
aWdhdGlvblR5cGU6OkZvcm1SZXN1Ym1pdHRlZCwgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGlj
eSwgZXZlbnQgfTsKICAgICAgICAgfQogICAgIH0gZWxzZSB7CiAgICAgICAgIHN3aXRjaCAobG9h
ZFR5cGUpIHsKQEAgLTM4NjcsNyArMzgzNyw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWREaWZm
ZXJlbnREb2N1bWVudEkKIAogICAgICAgICBSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdEZvck9yaWdp
bmFsVVJMKHJlcXVlc3QpOwogICAgICAgICByZXF1ZXN0Rm9yT3JpZ2luYWxVUkwuc2V0VVJMKGl0
ZW1PcmlnaW5hbFVSTCk7Ci0gICAgICAgIGFjdGlvbiA9IHsgKm1fZnJhbWUuZG9jdW1lbnQoKSwg
cmVxdWVzdEZvck9yaWdpbmFsVVJMLCBpbml0aWF0ZWRCeU1haW5GcmFtZSwgbG9hZFR5cGUsIGlz
Rm9ybVN1Ym1pc3Npb24sIGV2ZW50LCBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IH07Cisg
ICAgICAgIGFjdGlvbiA9IHsgKm1fZnJhbWUuZG9jdW1lbnQoKSwgcmVxdWVzdEZvck9yaWdpbmFs
VVJMLCBsb2FkVHlwZSwgaXNGb3JtU3VibWlzc2lvbiwgZXZlbnQsIHNob3VsZE9wZW5FeHRlcm5h
bFVSTHNQb2xpY3kgfTsKICAgICB9CiAKICAgICBhY3Rpb24uc2V0VGFyZ2V0QmFja0ZvcndhcmRJ
dGVtKGl0ZW0pOwpAQCAtNDEzOCw4ICs0MTA4LDggQEAgUmVmUHRyPEZyYW1lPiBjcmVhdGVXaW5k
b3coRnJhbWUmIG9wZW5lcgogICAgIGlmICghb2xkUGFnZSkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAKLSAgICBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IHNob3VsZE9wZW5FeHRlcm5h
bFVSTHNQb2xpY3kgPSBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5VG9BcHBseShvcGVuZXJG
cmFtZSwgcmVxdWVzdCk7Ci0gICAgTmF2aWdhdGlvbkFjdGlvbiBhY3Rpb24geyByZXF1ZXN0LnJl
cXVlc3RlcigpLCByZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpLCByZXF1ZXN0LmluaXRpYXRlZEJ5
TWFpbkZyYW1lKCksIE5hdmlnYXRpb25UeXBlOjpPdGhlciwgc2hvdWxkT3BlbkV4dGVybmFsVVJM
c1BvbGljeSB9OworICAgIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgc2hvdWxkT3BlbkV4
dGVybmFsVVJMc1BvbGljeSA9IHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3lUb0FwcGx5KHJl
cXVlc3Quc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSgpKTsKKyAgICBOYXZpZ2F0aW9uQWN0
aW9uIGFjdGlvbiB7IHJlcXVlc3QucmVxdWVzdGVyKCksIHJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0
KCksIE5hdmlnYXRpb25UeXBlOjpPdGhlciwgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSB9
OwogICAgIFBhZ2UqIHBhZ2UgPSBvbGRQYWdlLT5jaHJvbWUoKS5jcmVhdGVXaW5kb3cob3BlbmVy
RnJhbWUsIGZlYXR1cmVzLCBhY3Rpb24pOwogICAgIGlmICghcGFnZSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJUeXBlcy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlclR5cGVzLmgJ
KHJldmlzaW9uIDI4NDQ2NykKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlclR5
cGVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEzOSwxMSArMTM5LDYgQEAgZW51bSBjbGFzcyBTaG91
bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IAogICAgIFNob3VsZEFsbG93LAogfTsKIAotZW51bSBj
bGFzcyBJbml0aWF0ZWRCeU1haW5GcmFtZSA6IHVpbnQ4X3QgewotICAgIFllcywKLSAgICBVbmtu
b3duLAotfTsKLQogZW51bSBjbGFzcyBDbGVhclByb3Zpc2lvbmFsSXRlbSA6IGJvb2wgewogICAg
IFllcywKICAgICBObwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25BY3Rp
b24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uQWN0
aW9uLmNwcAkocmV2aXNpb24gMjg0NDY3KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmln
YXRpb25BY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NiwxNiArODYsMTYgQEAgc3RhdGlj
IHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGlvbkFjdGlvbjo6TQogICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiB9CiAKLU5hdmlnYXRpb25BY3Rpb246Ok5hdmlnYXRpb25BY3Rpb24oRG9jdW1lbnQmIHJl
cXVlc3RlciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QsIEluaXRpYXRl
ZEJ5TWFpbkZyYW1lIGluaXRpYXRlZEJ5TWFpbkZyYW1lLCBOYXZpZ2F0aW9uVHlwZSB0eXBlLCBT
aG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3ks
IEV2ZW50KiBldmVudCwgY29uc3QgQXRvbVN0cmluZyYgZG93bmxvYWRBdHRyaWJ1dGUpCitOYXZp
Z2F0aW9uQWN0aW9uOjpOYXZpZ2F0aW9uQWN0aW9uKERvY3VtZW50JiByZXF1ZXN0ZXIsIGNvbnN0
IFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0LCBOYXZpZ2F0aW9uVHlwZSB0eXBlLCBT
aG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3ks
IEV2ZW50KiBldmVudCwgY29uc3QgQXRvbVN0cmluZyYgZG93bmxvYWRBdHRyaWJ1dGUpCiAgICAg
OiBtX3JlcXVlc3RlciB7IE5hdmlnYXRpb25SZXF1ZXN0ZXI6OmZyb20ocmVxdWVzdGVyKSB9CiAg
ICAgLCBtX3Jlc291cmNlUmVxdWVzdCB7IHJlc291cmNlUmVxdWVzdCB9CiAgICAgLCBtX3R5cGUg
eyB0eXBlIH0KICAgICAsIG1fc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSB7IHNob3VsZE9w
ZW5FeHRlcm5hbFVSTHNQb2xpY3kgfQotICAgICwgbV9pbml0aWF0ZWRCeU1haW5GcmFtZSB7IGlu
aXRpYXRlZEJ5TWFpbkZyYW1lIH0KICAgICAsIG1fa2V5U3RhdGVFdmVudERhdGEgeyBrZXlTdGF0
ZURhdGFGb3JGaXJzdEV2ZW50V2l0aEtleVN0YXRlKGV2ZW50KSB9CiAgICAgLCBtX21vdXNlRXZl
bnREYXRhIHsgbW91c2VFdmVudERhdGFGb3JGaXJzdE1vdXNlRXZlbnQoZXZlbnQpIH0KICAgICAs
IG1fZG93bmxvYWRBdHRyaWJ1dGUgeyBkb3dubG9hZEF0dHJpYnV0ZSB9CiAgICAgLCBtX3RyZWF0
QXNTYW1lT3JpZ2luTmF2aWdhdGlvbiB7IHNob3VsZFRyZWF0QXNTYW1lT3JpZ2luTmF2aWdhdGlv
bihyZXF1ZXN0ZXIsIHJlc291cmNlUmVxdWVzdC51cmwoKSkgfQorICAgICwgbV9pbml0aWF0ZWRC
eU1haW5GcmFtZSB7IHJlcXVlc3Rlci5mcmFtZSgpICYmIHJlcXVlc3Rlci5mcmFtZSgpLT5pc01h
aW5GcmFtZSgpIH0KIHsKIH0KIApAQCAtMTEyLDE2ICsxMTIsMTYgQEAgc3RhdGljIE5hdmlnYXRp
b25UeXBlIG5hdmlnYXRpb25UeXBlKEZyYQogICAgIHJldHVybiBOYXZpZ2F0aW9uVHlwZTo6T3Ro
ZXI7CiB9CiAKLU5hdmlnYXRpb25BY3Rpb246Ok5hdmlnYXRpb25BY3Rpb24oRG9jdW1lbnQmIHJl
cXVlc3RlciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QsIEluaXRpYXRl
ZEJ5TWFpbkZyYW1lIGluaXRpYXRlZEJ5TWFpbkZyYW1lLCBGcmFtZUxvYWRUeXBlIGZyYW1lTG9h
ZFR5cGUsIGJvb2wgaXNGb3JtU3VibWlzc2lvbiwgRXZlbnQqIGV2ZW50LCBTaG91bGRPcGVuRXh0
ZXJuYWxVUkxzUG9saWN5IHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3ksIGNvbnN0IEF0b21T
dHJpbmcmIGRvd25sb2FkQXR0cmlidXRlKQorTmF2aWdhdGlvbkFjdGlvbjo6TmF2aWdhdGlvbkFj
dGlvbihEb2N1bWVudCYgcmVxdWVzdGVyLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNl
UmVxdWVzdCwgRnJhbWVMb2FkVHlwZSBmcmFtZUxvYWRUeXBlLCBib29sIGlzRm9ybVN1Ym1pc3Np
b24sIEV2ZW50KiBldmVudCwgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSBzaG91bGRPcGVu
RXh0ZXJuYWxVUkxzUG9saWN5LCBjb25zdCBBdG9tU3RyaW5nJiBkb3dubG9hZEF0dHJpYnV0ZSkK
ICAgICA6IG1fcmVxdWVzdGVyIHsgTmF2aWdhdGlvblJlcXVlc3Rlcjo6ZnJvbShyZXF1ZXN0ZXIp
IH0KICAgICAsIG1fcmVzb3VyY2VSZXF1ZXN0IHsgcmVzb3VyY2VSZXF1ZXN0IH0KICAgICAsIG1f
dHlwZSB7IG5hdmlnYXRpb25UeXBlKGZyYW1lTG9hZFR5cGUsIGlzRm9ybVN1Ym1pc3Npb24sICEh
ZXZlbnQpIH0KICAgICAsIG1fc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSB7IHNob3VsZE9w
ZW5FeHRlcm5hbFVSTHNQb2xpY3kgfQotICAgICwgbV9pbml0aWF0ZWRCeU1haW5GcmFtZSB7IGlu
aXRpYXRlZEJ5TWFpbkZyYW1lIH0KICAgICAsIG1fa2V5U3RhdGVFdmVudERhdGEgeyBrZXlTdGF0
ZURhdGFGb3JGaXJzdEV2ZW50V2l0aEtleVN0YXRlKGV2ZW50KSB9CiAgICAgLCBtX21vdXNlRXZl
bnREYXRhIHsgbW91c2VFdmVudERhdGFGb3JGaXJzdE1vdXNlRXZlbnQoZXZlbnQpIH0KICAgICAs
IG1fZG93bmxvYWRBdHRyaWJ1dGUgeyBkb3dubG9hZEF0dHJpYnV0ZSB9CiAgICAgLCBtX3RyZWF0
QXNTYW1lT3JpZ2luTmF2aWdhdGlvbiB7IHNob3VsZFRyZWF0QXNTYW1lT3JpZ2luTmF2aWdhdGlv
bihyZXF1ZXN0ZXIsIHJlc291cmNlUmVxdWVzdC51cmwoKSkgfQorICAgICwgbV9pbml0aWF0ZWRC
eU1haW5GcmFtZSB7IHJlcXVlc3Rlci5mcmFtZSgpICYmIHJlcXVlc3Rlci5mcmFtZSgpLT5pc01h
aW5GcmFtZSgpIH0KIHsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRp
b25BY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlv
bkFjdGlvbi5oCShyZXZpc2lvbiAyODQ0NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2
aWdhdGlvbkFjdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC01NCw4ICs1NCw4IEBAIGNsYXNzIFVJ
RXZlbnRXaXRoS2V5U3RhdGU7CiBjbGFzcyBOYXZpZ2F0aW9uQWN0aW9uIHsKIHB1YmxpYzoKICAg
ICBOYXZpZ2F0aW9uQWN0aW9uKCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgTmF2aWdhdGlvbkFjdGlv
bihEb2N1bWVudCYsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIEluaXRpYXRlZEJ5TWFpbkZyYW1l
LCBOYXZpZ2F0aW9uVHlwZSA9IE5hdmlnYXRpb25UeXBlOjpPdGhlciwgU2hvdWxkT3BlbkV4dGVy
bmFsVVJMc1BvbGljeSA9IFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNob3VsZE5vdEFs
bG93LCBFdmVudCogPSBudWxscHRyLCBjb25zdCBBdG9tU3RyaW5nJiBkb3dubG9hZEF0dHJpYnV0
ZSA9IG51bGxBdG9tKCkpOwotICAgIE5hdmlnYXRpb25BY3Rpb24oRG9jdW1lbnQmLCBjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmLCBJbml0aWF0ZWRCeU1haW5GcmFtZSwgRnJhbWVMb2FkVHlwZSwgYm9v
bCBpc0Zvcm1TdWJtaXNzaW9uLCBFdmVudCogPSBudWxscHRyLCBTaG91bGRPcGVuRXh0ZXJuYWxV
UkxzUG9saWN5ID0gU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTo6U2hvdWxkTm90QWxsb3cs
IGNvbnN0IEF0b21TdHJpbmcmIGRvd25sb2FkQXR0cmlidXRlID0gbnVsbEF0b20oKSk7CisgICAg
V0VCQ09SRV9FWFBPUlQgTmF2aWdhdGlvbkFjdGlvbihEb2N1bWVudCYsIGNvbnN0IFJlc291cmNl
UmVxdWVzdCYsIE5hdmlnYXRpb25UeXBlID0gTmF2aWdhdGlvblR5cGU6Ok90aGVyLCBTaG91bGRP
cGVuRXh0ZXJuYWxVUkxzUG9saWN5ID0gU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTo6U2hv
dWxkTm90QWxsb3csIEV2ZW50KiA9IG51bGxwdHIsIGNvbnN0IEF0b21TdHJpbmcmIGRvd25sb2Fk
QXR0cmlidXRlID0gbnVsbEF0b20oKSk7CisgICAgTmF2aWdhdGlvbkFjdGlvbihEb2N1bWVudCYs
IGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIEZyYW1lTG9hZFR5cGUsIGJvb2wgaXNGb3JtU3VibWlz
c2lvbiwgRXZlbnQqID0gbnVsbHB0ciwgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSA9IFNo
b3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNob3VsZE5vdEFsbG93LCBjb25zdCBBdG9tU3Ry
aW5nJiBkb3dubG9hZEF0dHJpYnV0ZSA9IG51bGxBdG9tKCkpOwogCiAgICAgV0VCQ09SRV9FWFBP
UlQgfk5hdmlnYXRpb25BY3Rpb24oKTsKIApAQCAtMTAyLDcgKzEwMiw3IEBAIHB1YmxpYzoKIAog
ICAgIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1Bv
bGljeSgpIGNvbnN0IHsgcmV0dXJuIG1fc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTsgfQog
ICAgIHZvaWQgc2V0U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeShTaG91bGRPcGVuRXh0ZXJu
YWxVUkxzUG9saWN5IHBvbGljeSkgeyAgbV9zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5ID0g
cG9saWN5OyB9Ci0gICAgSW5pdGlhdGVkQnlNYWluRnJhbWUgaW5pdGlhdGVkQnlNYWluRnJhbWUo
KSBjb25zdCB7IHJldHVybiBtX2luaXRpYXRlZEJ5TWFpbkZyYW1lOyB9CisgICAgYm9vbCBpbml0
aWF0ZWRCeU1haW5GcmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1faW5pdGlhdGVkQnlNYWluRnJhbWU7
IH0KIAogICAgIGNvbnN0IEF0b21TdHJpbmcmIGRvd25sb2FkQXR0cmlidXRlKCkgY29uc3QgeyBy
ZXR1cm4gbV9kb3dubG9hZEF0dHJpYnV0ZTsgfQogCkBAIC0xMzYsMTIgKzEzNiwxMiBAQCBwcml2
YXRlOgogICAgIFJlc291cmNlUmVxdWVzdCBtX3Jlc291cmNlUmVxdWVzdDsKICAgICBOYXZpZ2F0
aW9uVHlwZSBtX3R5cGU7CiAgICAgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSBtX3Nob3Vs
ZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k7Ci0gICAgSW5pdGlhdGVkQnlNYWluRnJhbWUgbV9pbml0
aWF0ZWRCeU1haW5GcmFtZTsKICAgICBzdGQ6Om9wdGlvbmFsPFVJRXZlbnRXaXRoS2V5U3RhdGVE
YXRhPiBtX2tleVN0YXRlRXZlbnREYXRhOwogICAgIHN0ZDo6b3B0aW9uYWw8TW91c2VFdmVudERh
dGE+IG1fbW91c2VFdmVudERhdGE7CiAgICAgUmVmUHRyPFVzZXJHZXN0dXJlVG9rZW4+IG1fdXNl
ckdlc3R1cmVUb2tlbiB7IFVzZXJHZXN0dXJlSW5kaWNhdG9yOjpjdXJyZW50VXNlckdlc3R1cmUo
KSB9OwogICAgIEF0b21TdHJpbmcgbV9kb3dubG9hZEF0dHJpYnV0ZTsKICAgICBib29sIG1fdHJl
YXRBc1NhbWVPcmlnaW5OYXZpZ2F0aW9uOworICAgIGJvb2wgbV9pbml0aWF0ZWRCeU1haW5GcmFt
ZTsKICAgICBib29sIG1faGFzT3BlbmVkRnJhbWVzIHsgZmFsc2UgfTsKICAgICBib29sIG1fb3Bl
bmVkQnlET01XaXRoT3BlbmVyIHsgZmFsc2UgfTsKICAgICBzdGQ6Om9wdGlvbmFsPEJhY2tGb3J3
YXJkSXRlbUlkZW50aWZpZXI+IG1fdGFyZ2V0QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllcjsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uU2NoZWR1bGVyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvblNjaGVkdWxlci5jcHAJKHJl
dmlzaW9uIDI4NDQ2NykKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uU2NoZWR1
bGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzEsMjAgKzcxLDYgQEAgcHVibGljOgogICAgICAg
ICAsIG1fdXNlckdlc3R1cmVUb0ZvcndhcmQoVXNlckdlc3R1cmVJbmRpY2F0b3I6OmN1cnJlbnRV
c2VyR2VzdHVyZSgpKQogICAgIHsKICAgICB9Ci0gICAgU2NoZWR1bGVkTmF2aWdhdGlvbihkb3Vi
bGUgZGVsYXksIExvY2tIaXN0b3J5IGxvY2tIaXN0b3J5LCBMb2NrQmFja0ZvcndhcmRMaXN0IGxv
Y2tCYWNrRm9yd2FyZExpc3QsIGJvb2wgd2FzRHVyaW5nTG9hZCwgYm9vbCBpc0xvY2F0aW9uQ2hh
bmdlLCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IGV4dGVybmFsVVJMUG9saWN5KQotICAg
ICAgICA6IG1fZGVsYXkoZGVsYXkpCi0gICAgICAgICwgbV9sb2NrSGlzdG9yeShsb2NrSGlzdG9y
eSkKLSAgICAgICAgLCBtX2xvY2tCYWNrRm9yd2FyZExpc3QobG9ja0JhY2tGb3J3YXJkTGlzdCkK
LSAgICAgICAgLCBtX3dhc0R1cmluZ0xvYWQod2FzRHVyaW5nTG9hZCkKLSAgICAgICAgLCBtX2lz
TG9jYXRpb25DaGFuZ2UoaXNMb2NhdGlvbkNoYW5nZSkKLSAgICAgICAgLCBtX3VzZXJHZXN0dXJl
VG9Gb3J3YXJkKFVzZXJHZXN0dXJlSW5kaWNhdG9yOjpjdXJyZW50VXNlckdlc3R1cmUoKSkKLSAg
ICAgICAgLCBtX3Nob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3koZXh0ZXJuYWxVUkxQb2xpY3kp
Ci0gICAgewotICAgICAgICBpZiAoYXV0byogZnJhbWUgPSBsZXhpY2FsRnJhbWVGcm9tQ29tbW9u
Vk0oKSkgewotICAgICAgICAgICAgaWYgKGZyYW1lLT5pc01haW5GcmFtZSgpKQotICAgICAgICAg
ICAgICAgIG1faW5pdGlhdGVkQnlNYWluRnJhbWUgPSBJbml0aWF0ZWRCeU1haW5GcmFtZTo6WWVz
OwotICAgICAgICB9Ci0gICAgfQogICAgIHZpcnR1YWwgflNjaGVkdWxlZE5hdmlnYXRpb24oKSA9
IGRlZmF1bHQ7CiAKICAgICB2aXJ0dWFsIHZvaWQgZmlyZShGcmFtZSYpID0gMDsKQEAgLTEwMiw4
ICs4OCw2IEBAIHB1YmxpYzoKIAogcHJvdGVjdGVkOgogICAgIHZvaWQgY2xlYXJVc2VyR2VzdHVy
ZSgpIHsgbV91c2VyR2VzdHVyZVRvRm9yd2FyZCA9IG51bGxwdHI7IH0KLSAgICBTaG91bGRPcGVu
RXh0ZXJuYWxVUkxzUG9saWN5IHNob3VsZE9wZW5FeHRlcm5hbFVSTHMoKSBjb25zdCB7IHJldHVy
biBtX3Nob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k7IH0KLSAgICBJbml0aWF0ZWRCeU1haW5G
cmFtZSBpbml0aWF0ZWRCeU1haW5GcmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1faW5pdGlhdGVkQnlN
YWluRnJhbWU7IH07CiAKIHByaXZhdGU6CiAgICAgZG91YmxlIG1fZGVsYXk7CkBAIC0xMTIsMTQg
Kzk2LDI2IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3dhc0R1cmluZ0xvYWQ7CiAgICAgYm9vbCBt
X2lzTG9jYXRpb25DaGFuZ2U7CiAgICAgUmVmUHRyPFVzZXJHZXN0dXJlVG9rZW4+IG1fdXNlckdl
c3R1cmVUb0ZvcndhcmQ7Ci0gICAgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSBtX3Nob3Vs
ZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgeyBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpT
aG91bGROb3RBbGxvdyB9OwotICAgIEluaXRpYXRlZEJ5TWFpbkZyYW1lIG1faW5pdGlhdGVkQnlN
YWluRnJhbWUgeyBJbml0aWF0ZWRCeU1haW5GcmFtZTo6VW5rbm93biB9OwogfTsKIAorc3RhdGlj
IFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgY2hvb3NlVGhlTW9zdFBlcm1pc3NpdmVFeHRl
cm5hbFVSTHNQb2xpY3koU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSBwb2xpY3lBLCBTaG91
bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IHBvbGljeUIpCit7CisgICAgcmV0dXJuIHN0YXRpY19j
YXN0PFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k+KHN0ZDo6bWF4KHN0YXRpY19jYXN0PHVp
bnQ4X3Q+KHBvbGljeUEpLCBzdGF0aWNfY2FzdDx1aW50OF90Pihwb2xpY3lCKSkpOworfQorCitz
dGF0aWMgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSBjb21wdXRlRXh0ZXJuYWxVUkxzUG9s
aWN5Rm9yU2FtZU9yaWdpbk5hdmlnYXRpb24oRG9jdW1lbnQmIGluaXRpYXRpbmdEb2N1bWVudCwg
RnJhbWUmIHRhcmdldEZyYW1lKQoreworICAgIGlmIChhdXRvKiB0YXJnZXREb2N1bWVudCA9IHRh
cmdldEZyYW1lLmRvY3VtZW50KCkpIHsKKyAgICAgICAgaWYgKHRhcmdldERvY3VtZW50LT5zZWN1
cml0eU9yaWdpbigpLmlzU2FtZU9yaWdpbkFzKGluaXRpYXRpbmdEb2N1bWVudC5zZWN1cml0eU9y
aWdpbigpKSkKKyAgICAgICAgICAgIHJldHVybiBjaG9vc2VUaGVNb3N0UGVybWlzc2l2ZUV4dGVy
bmFsVVJMc1BvbGljeSh0YXJnZXREb2N1bWVudC0+c2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGlj
eVRvUHJvcGFnYXRlKCksIGluaXRpYXRpbmdEb2N1bWVudC5zaG91bGRPcGVuRXh0ZXJuYWxVUkxz
UG9saWN5VG9Qcm9wYWdhdGUoKSk7CisgICAgfQorICAgIHJldHVybiBpbml0aWF0aW5nRG9jdW1l
bnQuc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeVRvUHJvcGFnYXRlKCk7Cit9CisKIGNsYXNz
IFNjaGVkdWxlZFVSTE5hdmlnYXRpb24gOiBwdWJsaWMgU2NoZWR1bGVkTmF2aWdhdGlvbiB7CiBw
cm90ZWN0ZWQ6CiAgICAgU2NoZWR1bGVkVVJMTmF2aWdhdGlvbihEb2N1bWVudCYgaW5pdGlhdGlu
Z0RvY3VtZW50LCBkb3VibGUgZGVsYXksIFNlY3VyaXR5T3JpZ2luKiBzZWN1cml0eU9yaWdpbiwg
Y29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIExvY2tIaXN0b3J5IGxvY2tI
aXN0b3J5LCBMb2NrQmFja0ZvcndhcmRMaXN0IGxvY2tCYWNrRm9yd2FyZExpc3QsIGJvb2wgZHVy
aW5nTG9hZCwgYm9vbCBpc0xvY2F0aW9uQ2hhbmdlKQotICAgICAgICA6IFNjaGVkdWxlZE5hdmln
YXRpb24oZGVsYXksIGxvY2tIaXN0b3J5LCBsb2NrQmFja0ZvcndhcmRMaXN0LCBkdXJpbmdMb2Fk
LCBpc0xvY2F0aW9uQ2hhbmdlLCBpbml0aWF0aW5nRG9jdW1lbnQuc2hvdWxkT3BlbkV4dGVybmFs
VVJMc1BvbGljeVRvUHJvcGFnYXRlKCkpCisgICAgICAgIDogU2NoZWR1bGVkTmF2aWdhdGlvbihk
ZWxheSwgbG9ja0hpc3RvcnksIGxvY2tCYWNrRm9yd2FyZExpc3QsIGR1cmluZ0xvYWQsIGlzTG9j
YXRpb25DaGFuZ2UpCiAgICAgICAgICwgbV9pbml0aWF0aW5nRG9jdW1lbnQgeyBpbml0aWF0aW5n
RG9jdW1lbnQgfQogICAgICAgICAsIG1fc2VjdXJpdHlPcmlnaW4geyBzZWN1cml0eU9yaWdpbiB9
CiAgICAgICAgICwgbV91cmwgeyB1cmwgfQpAQCAtMTU2LDYgKzE1Miw3IEBAIHByb3RlY3RlZDoK
ICAgICBTZWN1cml0eU9yaWdpbiogc2VjdXJpdHlPcmlnaW4oKSBjb25zdCB7IHJldHVybiBtX3Nl
Y3VyaXR5T3JpZ2luLmdldCgpOyB9CiAgICAgY29uc3QgVVJMJiB1cmwoKSBjb25zdCB7IHJldHVy
biBtX3VybDsgfQogICAgIFN0cmluZyByZWZlcnJlcigpIGNvbnN0IHsgcmV0dXJuIG1fcmVmZXJy
ZXI7IH0KKyAgICBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IHNob3VsZE9wZW5FeHRlcm5h
bFVSTHMoRnJhbWUmIHRhcmdldEZyYW1lKSB7IHJldHVybiBjb21wdXRlRXh0ZXJuYWxVUkxzUG9s
aWN5Rm9yU2FtZU9yaWdpbk5hdmlnYXRpb24oaW5pdGlhdGluZ0RvY3VtZW50KCksIHRhcmdldEZy
YW1lKTsgfQogCiBwcml2YXRlOgogICAgIFJlZjxEb2N1bWVudD4gbV9pbml0aWF0aW5nRG9jdW1l
bnQ7CkBAIC0xOTIsMTMgKzE4OSwxMyBAQCBwdWJsaWM6CiAKICAgICAgICAgYm9vbCByZWZyZXNo
ID0gZXF1YWxJZ25vcmluZ0ZyYWdtZW50SWRlbnRpZmllcihmcmFtZS5kb2N1bWVudCgpLT51cmwo
KSwgdXJsKCkpOwogICAgICAgICBSZXNvdXJjZVJlcXVlc3QgcmVzb3VyY2VSZXF1ZXN0IHsgdXJs
KCksIHJlZmVycmVyKCksIHJlZnJlc2ggPyBSZXNvdXJjZVJlcXVlc3RDYWNoZVBvbGljeTo6UmVs
b2FkSWdub3JpbmdDYWNoZURhdGEgOiBSZXNvdXJjZVJlcXVlc3RDYWNoZVBvbGljeTo6VXNlUHJv
dG9jb2xDYWNoZVBvbGljeSB9OwotICAgICAgICBpZiAoaW5pdGlhdGVkQnlNYWluRnJhbWUoKSA9
PSBJbml0aWF0ZWRCeU1haW5GcmFtZTo6WWVzKQorICAgICAgICBpZiAoaW5pdGlhdGluZ0RvY3Vt
ZW50KCkuZnJhbWUoKSAmJiBpbml0aWF0aW5nRG9jdW1lbnQoKS5mcmFtZSgpLT5pc01haW5GcmFt
ZSgpKQogICAgICAgICAgICAgcmVzb3VyY2VSZXF1ZXN0LnNldFJlcXVlc3RlcihSZXNvdXJjZVJl
cXVlc3Q6OlJlcXVlc3Rlcjo6TWFpbik7Ci0gICAgICAgIEZyYW1lTG9hZFJlcXVlc3QgZnJhbWVM
b2FkUmVxdWVzdCB7IGluaXRpYXRpbmdEb2N1bWVudCgpLCAqc2VjdXJpdHlPcmlnaW4oKSwgV1RG
TW92ZShyZXNvdXJjZVJlcXVlc3QpLCAiX3NlbGYiLCBpbml0aWF0ZWRCeU1haW5GcmFtZSgpIH07
CisgICAgICAgIEZyYW1lTG9hZFJlcXVlc3QgZnJhbWVMb2FkUmVxdWVzdCB7IGluaXRpYXRpbmdE
b2N1bWVudCgpLCAqc2VjdXJpdHlPcmlnaW4oKSwgV1RGTW92ZShyZXNvdXJjZVJlcXVlc3QpLCAi
X3NlbGYiX3MgfTsKICAgICAgICAgZnJhbWVMb2FkUmVxdWVzdC5zZXRMb2NrSGlzdG9yeShsb2Nr
SGlzdG9yeSgpKTsKICAgICAgICAgZnJhbWVMb2FkUmVxdWVzdC5zZXRMb2NrQmFja0ZvcndhcmRM
aXN0KGxvY2tCYWNrRm9yd2FyZExpc3QoKSk7CiAgICAgICAgIGZyYW1lTG9hZFJlcXVlc3QuZGlz
YWJsZU5hdmlnYXRpb25Ub0ludmFsaWRVUkwoKTsKLSAgICAgICAgZnJhbWVMb2FkUmVxdWVzdC5z
ZXRTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KHNob3VsZE9wZW5FeHRlcm5hbFVSTHMoKSk7
CisgICAgICAgIGZyYW1lTG9hZFJlcXVlc3Quc2V0U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGlj
eShzaG91bGRPcGVuRXh0ZXJuYWxVUkxzKGZyYW1lKSk7CiAKICAgICAgICAgZnJhbWUubG9hZGVy
KCkuY2hhbmdlTG9jYXRpb24oV1RGTW92ZShmcmFtZUxvYWRSZXF1ZXN0KSk7CiAgICAgfQpAQCAt
MjI2LDExICsyMjMsMTEgQEAgcHVibGljOgogICAgICAgICBVc2VyR2VzdHVyZUluZGljYXRvciBn
ZXN0dXJlSW5kaWNhdG9yIHsgdXNlckdlc3R1cmVUb0ZvcndhcmQoKSB9OwogCiAgICAgICAgIFJl
c291cmNlUmVxdWVzdCByZXNvdXJjZVJlcXVlc3QgeyB1cmwoKSwgcmVmZXJyZXIoKSwgUmVzb3Vy
Y2VSZXF1ZXN0Q2FjaGVQb2xpY3k6OlVzZVByb3RvY29sQ2FjaGVQb2xpY3kgfTsKLSAgICAgICAg
RnJhbWVMb2FkUmVxdWVzdCBmcmFtZUxvYWRSZXF1ZXN0IHsgaW5pdGlhdGluZ0RvY3VtZW50KCks
ICpzZWN1cml0eU9yaWdpbigpLCBXVEZNb3ZlKHJlc291cmNlUmVxdWVzdCksICJfc2VsZiIsIGlu
aXRpYXRlZEJ5TWFpbkZyYW1lKCkgfTsKKyAgICAgICAgRnJhbWVMb2FkUmVxdWVzdCBmcmFtZUxv
YWRSZXF1ZXN0IHsgaW5pdGlhdGluZ0RvY3VtZW50KCksICpzZWN1cml0eU9yaWdpbigpLCBXVEZN
b3ZlKHJlc291cmNlUmVxdWVzdCksICJfc2VsZiJfcyB9OwogICAgICAgICBmcmFtZUxvYWRSZXF1
ZXN0LnNldExvY2tIaXN0b3J5KGxvY2tIaXN0b3J5KCkpOwogICAgICAgICBmcmFtZUxvYWRSZXF1
ZXN0LnNldExvY2tCYWNrRm9yd2FyZExpc3QobG9ja0JhY2tGb3J3YXJkTGlzdCgpKTsKICAgICAg
ICAgZnJhbWVMb2FkUmVxdWVzdC5kaXNhYmxlTmF2aWdhdGlvblRvSW52YWxpZFVSTCgpOwotICAg
ICAgICBmcmFtZUxvYWRSZXF1ZXN0LnNldFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3koc2hv
dWxkT3BlbkV4dGVybmFsVVJMcygpKTsKKyAgICAgICAgZnJhbWVMb2FkUmVxdWVzdC5zZXRTaG91
bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KHNob3VsZE9wZW5FeHRlcm5hbFVSTHMoZnJhbWUpKTsK
IAogICAgICAgICBhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gc3RkOjpleGNoYW5nZShtX2NvbXBs
ZXRpb25IYW5kbGVyLCBudWxscHRyKTsKICAgICAgICAgZnJhbWUubG9hZGVyKCkuY2hhbmdlTG9j
YXRpb24oV1RGTW92ZShmcmFtZUxvYWRSZXF1ZXN0KSk7CkBAIC0yNTMsMTAgKzI1MCwxMCBAQCBw
dWJsaWM6CiAgICAgICAgIFVzZXJHZXN0dXJlSW5kaWNhdG9yIGdlc3R1cmVJbmRpY2F0b3IgeyB1
c2VyR2VzdHVyZVRvRm9yd2FyZCgpIH07CiAKICAgICAgICAgUmVzb3VyY2VSZXF1ZXN0IHJlc291
cmNlUmVxdWVzdCB7IHVybCgpLCByZWZlcnJlcigpLCBSZXNvdXJjZVJlcXVlc3RDYWNoZVBvbGlj
eTo6UmVsb2FkSWdub3JpbmdDYWNoZURhdGEgfTsKLSAgICAgICAgRnJhbWVMb2FkUmVxdWVzdCBm
cmFtZUxvYWRSZXF1ZXN0IHsgaW5pdGlhdGluZ0RvY3VtZW50KCksICpzZWN1cml0eU9yaWdpbigp
LCBXVEZNb3ZlKHJlc291cmNlUmVxdWVzdCksICJfc2VsZiIsIGluaXRpYXRlZEJ5TWFpbkZyYW1l
KCkgfTsKKyAgICAgICAgRnJhbWVMb2FkUmVxdWVzdCBmcmFtZUxvYWRSZXF1ZXN0IHsgaW5pdGlh
dGluZ0RvY3VtZW50KCksICpzZWN1cml0eU9yaWdpbigpLCBXVEZNb3ZlKHJlc291cmNlUmVxdWVz
dCksICJfc2VsZiJfcyB9OwogICAgICAgICBmcmFtZUxvYWRSZXF1ZXN0LnNldExvY2tIaXN0b3J5
KGxvY2tIaXN0b3J5KCkpOwogICAgICAgICBmcmFtZUxvYWRSZXF1ZXN0LnNldExvY2tCYWNrRm9y
d2FyZExpc3QobG9ja0JhY2tGb3J3YXJkTGlzdCgpKTsKLSAgICAgICAgZnJhbWVMb2FkUmVxdWVz
dC5zZXRTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KHNob3VsZE9wZW5FeHRlcm5hbFVSTHMo
KSk7CisgICAgICAgIGZyYW1lTG9hZFJlcXVlc3Quc2V0U2hvdWxkT3BlbkV4dGVybmFsVVJMc1Bv
bGljeShzaG91bGRPcGVuRXh0ZXJuYWxVUkxzKGZyYW1lKSk7CiAKICAgICAgICAgZnJhbWUubG9h
ZGVyKCkuY2hhbmdlTG9jYXRpb24oV1RGTW92ZShmcmFtZUxvYWRSZXF1ZXN0KSk7CiAgICAgfQpA
QCAtMjc3LDcgKzI3NCw3IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKCFtX2hpc3RvcnlTdGVwcykg
ewogICAgICAgICAgICAgLy8gU3BlY2lhbCBjYXNlIGZvciBnbygwKSBmcm9tIGEgZnJhbWUgLT4g
cmVsb2FkIG9ubHkgdGhlIGZyYW1lCiAgICAgICAgICAgICAvLyBUbyBmb2xsb3cgRmlyZWZveCBh
bmQgSUUncyBiZWhhdmlvciwgaGlzdG9yeSByZWxvYWQgY2FuIG9ubHkgbmF2aWdhdGUgdGhlIHNl
bGYgZnJhbWUuCi0gICAgICAgICAgICBmcmFtZS5sb2FkZXIoKS5jaGFuZ2VMb2NhdGlvbihmcmFt
ZS5kb2N1bWVudCgpLT51cmwoKSwgIl9zZWxmIiwgMCwgUmVmZXJyZXJQb2xpY3k6OkVtcHR5U3Ry
aW5nLCBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzKCkpOworICAgICAgICAgICAgZnJhbWUubG9hZGVy
KCkuY2hhbmdlTG9jYXRpb24oZnJhbWUuZG9jdW1lbnQoKS0+dXJsKCksICJfc2VsZiJfcywgMCwg
UmVmZXJyZXJQb2xpY3k6OkVtcHR5U3RyaW5nLCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5
OjpTaG91bGROb3RBbGxvdyk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAg
ICAgCkBAIC0yOTMsNyArMjkwLDcgQEAgcHJpdmF0ZToKIGNsYXNzIFNjaGVkdWxlZEZvcm1TdWJt
aXNzaW9uIDogcHVibGljIFNjaGVkdWxlZE5hdmlnYXRpb24gewogcHVibGljOgogICAgIFNjaGVk
dWxlZEZvcm1TdWJtaXNzaW9uKFJlZjxGb3JtU3VibWlzc2lvbj4mJiBzdWJtaXNzaW9uLCBMb2Nr
QmFja0ZvcndhcmRMaXN0IGxvY2tCYWNrRm9yd2FyZExpc3QsIGJvb2wgZHVyaW5nTG9hZCkKLSAg
ICAgICAgOiBTY2hlZHVsZWROYXZpZ2F0aW9uKDAsIHN1Ym1pc3Npb24tPmxvY2tIaXN0b3J5KCks
IGxvY2tCYWNrRm9yd2FyZExpc3QsIGR1cmluZ0xvYWQsIHRydWUsIHN1Ym1pc3Npb24tPnN0YXRl
KCkuc291cmNlRG9jdW1lbnQoKS5zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5VG9Qcm9wYWdh
dGUoKSkKKyAgICAgICAgOiBTY2hlZHVsZWROYXZpZ2F0aW9uKDAsIHN1Ym1pc3Npb24tPmxvY2tI
aXN0b3J5KCksIGxvY2tCYWNrRm9yd2FyZExpc3QsIGR1cmluZ0xvYWQsIHRydWUpCiAgICAgICAg
ICwgbV9zdWJtaXNzaW9uKFdURk1vdmUoc3VibWlzc2lvbikpCiAgICAgewogICAgIH0KQEAgLTMx
MiwxMSArMzA5LDExIEBAIHB1YmxpYzoKICAgICAgICAgYXV0byYgcmVxdWVzdGluZ0RvY3VtZW50
ID0gbV9zdWJtaXNzaW9uLT5zdGF0ZSgpLnNvdXJjZURvY3VtZW50KCk7CiAgICAgICAgIGlmICgh
cmVxdWVzdGluZ0RvY3VtZW50LmNhbk5hdmlnYXRlKCZmcmFtZSkpCiAgICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgIEZyYW1lTG9hZFJlcXVlc3QgZnJhbWVMb2FkUmVxdWVzdCB7IHJlcXVlc3Rp
bmdEb2N1bWVudCwgcmVxdWVzdGluZ0RvY3VtZW50LnNlY3VyaXR5T3JpZ2luKCksIHsgfSwgeyB9
LCBpbml0aWF0ZWRCeU1haW5GcmFtZSgpIH07CisgICAgICAgIEZyYW1lTG9hZFJlcXVlc3QgZnJh
bWVMb2FkUmVxdWVzdCB7IHJlcXVlc3RpbmdEb2N1bWVudCwgcmVxdWVzdGluZ0RvY3VtZW50LnNl
Y3VyaXR5T3JpZ2luKCksIHsgfSwgeyB9IH07CiAgICAgICAgIGZyYW1lTG9hZFJlcXVlc3Quc2V0
TG9ja0hpc3RvcnkobG9ja0hpc3RvcnkoKSk7CiAgICAgICAgIGZyYW1lTG9hZFJlcXVlc3Quc2V0
TG9ja0JhY2tGb3J3YXJkTGlzdChsb2NrQmFja0ZvcndhcmRMaXN0KCkpOwogICAgICAgICBmcmFt
ZUxvYWRSZXF1ZXN0LnNldFJlZmVycmVyUG9saWN5KFJlZmVycmVyUG9saWN5OjpFbXB0eVN0cmlu
Zyk7Ci0gICAgICAgIGZyYW1lTG9hZFJlcXVlc3Quc2V0U2hvdWxkT3BlbkV4dGVybmFsVVJMc1Bv
bGljeShzaG91bGRPcGVuRXh0ZXJuYWxVUkxzKCkpOworICAgICAgICBmcmFtZUxvYWRSZXF1ZXN0
LnNldFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3koY29tcHV0ZUV4dGVybmFsVVJMc1BvbGlj
eUZvclNhbWVPcmlnaW5OYXZpZ2F0aW9uKHJlcXVlc3RpbmdEb2N1bWVudCwgZnJhbWUpKTsKICAg
ICAgICAgbV9zdWJtaXNzaW9uLT5wb3B1bGF0ZUZyYW1lTG9hZFJlcXVlc3QoZnJhbWVMb2FkUmVx
dWVzdCk7CiAgICAgICAgIGZyYW1lLmxvYWRlcigpLmxvYWRGcmFtZVJlcXVlc3QoV1RGTW92ZShm
cmFtZUxvYWRSZXF1ZXN0KSwgbV9zdWJtaXNzaW9uLT5ldmVudCgpLCBtX3N1Ym1pc3Npb24tPnRh
a2VTdGF0ZSgpKTsKICAgICB9CkBAIC0zNjYsMTEgKzM2MywxMSBAQCBwdWJsaWM6CiAgICAgICAg
IFN1YnN0aXR1dGVEYXRhIHJlcGxhY2VtZW50RGF0YSB7IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCks
IG1fb3JpZ2luRG9jdW1lbnQudXJsKCksIHJlcGxhY2VtZW50UmVzcG9uc2UsIFN1YnN0aXR1dGVE
YXRhOjpTZXNzaW9uSGlzdG9yeVZpc2liaWxpdHk6OkhpZGRlbiB9OwogCiAgICAgICAgIFJlc291
cmNlUmVxdWVzdCByZXNvdXJjZVJlcXVlc3QgeyBtX29yaWdpbkRvY3VtZW50LnVybCgpLCBlbXB0
eVN0cmluZygpLCBSZXNvdXJjZVJlcXVlc3RDYWNoZVBvbGljeTo6UmVsb2FkSWdub3JpbmdDYWNo
ZURhdGEgfTsKLSAgICAgICAgRnJhbWVMb2FkUmVxdWVzdCBmcmFtZUxvYWRSZXF1ZXN0IHsgbV9v
cmlnaW5Eb2N1bWVudCwgbV9vcmlnaW5Eb2N1bWVudC5zZWN1cml0eU9yaWdpbigpLCBXVEZNb3Zl
KHJlc291cmNlUmVxdWVzdCksIHsgfSwgaW5pdGlhdGVkQnlNYWluRnJhbWUoKSB9OworICAgICAg
ICBGcmFtZUxvYWRSZXF1ZXN0IGZyYW1lTG9hZFJlcXVlc3QgeyBtX29yaWdpbkRvY3VtZW50LCBt
X29yaWdpbkRvY3VtZW50LnNlY3VyaXR5T3JpZ2luKCksIFdURk1vdmUocmVzb3VyY2VSZXF1ZXN0
KSwgeyB9IH07CiAgICAgICAgIGZyYW1lTG9hZFJlcXVlc3Quc2V0TG9ja0hpc3RvcnkobG9ja0hp
c3RvcnkoKSk7CiAgICAgICAgIGZyYW1lTG9hZFJlcXVlc3Quc2V0TG9ja0JhY2tGb3J3YXJkTGlz
dChsb2NrQmFja0ZvcndhcmRMaXN0KCkpOwogICAgICAgICBmcmFtZUxvYWRSZXF1ZXN0LnNldFN1
YnN0aXR1dGVEYXRhKHJlcGxhY2VtZW50RGF0YSk7Ci0gICAgICAgIGZyYW1lTG9hZFJlcXVlc3Qu
c2V0U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeShzaG91bGRPcGVuRXh0ZXJuYWxVUkxzKCkp
OworICAgICAgICBmcmFtZUxvYWRSZXF1ZXN0LnNldFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xp
Y3koU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTo6U2hvdWxkTm90QWxsb3cpOwogICAgICAg
ICBmcmFtZS5sb2FkZXIoKS5sb2FkKFdURk1vdmUoZnJhbWVMb2FkUmVxdWVzdCkpOwogICAgIH0K
IApAQCAtNDY2LDE0ICs0NjMsMTIgQEAgdm9pZCBOYXZpZ2F0aW9uU2NoZWR1bGVyOjpzY2hlZHVs
ZUxvY2F0aQogICAgIC8vIGZyYWdtZW50IHBhcnQsIHdlIGRvbid0IG5lZWQgdG8gc2NoZWR1bGUg
dGhlIGxvY2F0aW9uIGNoYW5nZS4KICAgICBpZiAodXJsLmhhc0ZyYWdtZW50SWRlbnRpZmllcigp
ICYmIGVxdWFsSWdub3JpbmdGcmFnbWVudElkZW50aWZpZXIobV9mcmFtZS5kb2N1bWVudCgpLT51
cmwoKSwgdXJsKSkgewogICAgICAgICBSZXNvdXJjZVJlcXVlc3QgcmVzb3VyY2VSZXF1ZXN0IHsg
bV9mcmFtZS5kb2N1bWVudCgpLT5jb21wbGV0ZVVSTCh1cmwuc3RyaW5nKCkpLCByZWZlcnJlciwg
UmVzb3VyY2VSZXF1ZXN0Q2FjaGVQb2xpY3k6OlVzZVByb3RvY29sQ2FjaGVQb2xpY3kgfTsKLSAg
ICAgICAgYXV0byogZnJhbWUgPSBsZXhpY2FsRnJhbWVGcm9tQ29tbW9uVk0oKTsKLSAgICAgICAg
YXV0byBpbml0aWF0ZWRCeU1haW5GcmFtZSA9IGZyYW1lICYmIGZyYW1lLT5pc01haW5GcmFtZSgp
ID8gSW5pdGlhdGVkQnlNYWluRnJhbWU6OlllcyA6IEluaXRpYXRlZEJ5TWFpbkZyYW1lOjpVbmtu
b3duOwotICAgICAgICAKLSAgICAgICAgRnJhbWVMb2FkUmVxdWVzdCBmcmFtZUxvYWRSZXF1ZXN0
IHsgaW5pdGlhdGluZ0RvY3VtZW50LCBzZWN1cml0eU9yaWdpbiwgV1RGTW92ZShyZXNvdXJjZVJl
cXVlc3QpLCAiX3NlbGYiX3MsIGluaXRpYXRlZEJ5TWFpbkZyYW1lIH07CisKKyAgICAgICAgRnJh
bWVMb2FkUmVxdWVzdCBmcmFtZUxvYWRSZXF1ZXN0IHsgaW5pdGlhdGluZ0RvY3VtZW50LCBzZWN1
cml0eU9yaWdpbiwgV1RGTW92ZShyZXNvdXJjZVJlcXVlc3QpLCAiX3NlbGYiX3MgfTsKICAgICAg
ICAgZnJhbWVMb2FkUmVxdWVzdC5zZXRMb2NrSGlzdG9yeShsb2NrSGlzdG9yeSk7CiAgICAgICAg
IGZyYW1lTG9hZFJlcXVlc3Quc2V0TG9ja0JhY2tGb3J3YXJkTGlzdChsb2NrQmFja0ZvcndhcmRM
aXN0KTsKICAgICAgICAgZnJhbWVMb2FkUmVxdWVzdC5kaXNhYmxlTmF2aWdhdGlvblRvSW52YWxp
ZFVSTCgpOwotICAgICAgICBmcmFtZUxvYWRSZXF1ZXN0LnNldFNob3VsZE9wZW5FeHRlcm5hbFVS
THNQb2xpY3koaW5pdGlhdGluZ0RvY3VtZW50LnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3lU
b1Byb3BhZ2F0ZSgpKTsKKyAgICAgICAgZnJhbWVMb2FkUmVxdWVzdC5zZXRTaG91bGRPcGVuRXh0
ZXJuYWxVUkxzUG9saWN5KGNvbXB1dGVFeHRlcm5hbFVSTHNQb2xpY3lGb3JTYW1lT3JpZ2luTmF2
aWdhdGlvbihpbml0aWF0aW5nRG9jdW1lbnQsIG1fZnJhbWUpKTsKICAgICAgICAgbG9hZGVyLmNo
YW5nZUxvY2F0aW9uKFdURk1vdmUoZnJhbWVMb2FkUmVxdWVzdCkpOwogICAgICAgICByZXR1cm4g
Y29tcGxldGlvbkhhbmRsZXIoKTsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
UG9saWN5Q2hlY2tlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL1Bv
bGljeUNoZWNrZXIuY3BwCShyZXZpc2lvbiAyODQ0NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvUG9saWN5Q2hlY2tlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExNiw3ICsxMTYsNyBAQCB2
b2lkIEZyYW1lTG9hZGVyOjpQb2xpY3lDaGVja2VyOjpjaGVja05hCiB7CiAgICAgTmF2aWdhdGlv
bkFjdGlvbiBhY3Rpb24gPSBsb2FkZXItPnRyaWdnZXJpbmdBY3Rpb24oKTsKICAgICBpZiAoYWN0
aW9uLmlzRW1wdHkoKSkgewotICAgICAgICBhY3Rpb24gPSBOYXZpZ2F0aW9uQWN0aW9uIHsgKm1f
ZnJhbWUuZG9jdW1lbnQoKSwgcmVxdWVzdCwgSW5pdGlhdGVkQnlNYWluRnJhbWU6OlVua25vd24s
IE5hdmlnYXRpb25UeXBlOjpPdGhlciwgbG9hZGVyLT5zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9s
aWN5VG9Qcm9wYWdhdGUoKSB9OworICAgICAgICBhY3Rpb24gPSBOYXZpZ2F0aW9uQWN0aW9uIHsg
Km1fZnJhbWUuZG9jdW1lbnQoKSwgcmVxdWVzdCwgTmF2aWdhdGlvblR5cGU6Ok90aGVyLCBsb2Fk
ZXItPnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3lUb1Byb3BhZ2F0ZSgpIH07CiAgICAgICAg
IGxvYWRlci0+c2V0VHJpZ2dlcmluZ0FjdGlvbihOYXZpZ2F0aW9uQWN0aW9uIHsgYWN0aW9uIH0p
OwogICAgIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xs
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250
cm9sbGVyLmNwcAkocmV2aXNpb24gMjg0NDY3KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9Db250
ZXh0TWVudUNvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODQsMTEgKzE4NCwxMSBA
QCBzdGF0aWMgdm9pZCBvcGVuTmV3V2luZG93KGNvbnN0IFVSTCYgdXJsCiAgICAgaWYgKCFvbGRQ
YWdlKQogICAgICAgICByZXR1cm47CiAKLSAgICBGcmFtZUxvYWRSZXF1ZXN0IGZyYW1lTG9hZFJl
cXVlc3QgeyAqZnJhbWUuZG9jdW1lbnQoKSwgZnJhbWUuZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmln
aW4oKSwgUmVzb3VyY2VSZXF1ZXN0KHVybFRvTG9hZCwgZnJhbWUubG9hZGVyKCkub3V0Z29pbmdS
ZWZlcnJlcigpKSwgeyB9LCBJbml0aWF0ZWRCeU1haW5GcmFtZTo6VW5rbm93biB9OworICAgIEZy
YW1lTG9hZFJlcXVlc3QgZnJhbWVMb2FkUmVxdWVzdCB7ICpmcmFtZS5kb2N1bWVudCgpLCBmcmFt
ZS5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLCBSZXNvdXJjZVJlcXVlc3QodXJsVG9Mb2Fk
LCBmcmFtZS5sb2FkZXIoKS5vdXRnb2luZ1JlZmVycmVyKCkpLCB7IH0gfTsKICAgICBmcmFtZUxv
YWRSZXF1ZXN0LnNldFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3koc2hvdWxkT3BlbkV4dGVy
bmFsVVJMc1BvbGljeSk7CiAgICAgZnJhbWVMb2FkUmVxdWVzdC5zZXROZXdGcmFtZU9wZW5lclBv
bGljeShOZXdGcmFtZU9wZW5lclBvbGljeTo6U3VwcHJlc3MpOwogCi0gICAgUGFnZSogbmV3UGFn
ZSA9IG9sZFBhZ2UtPmNocm9tZSgpLmNyZWF0ZVdpbmRvdyhmcmFtZSwgeyB9LCB7ICpmcmFtZS5k
b2N1bWVudCgpLCBmcmFtZUxvYWRSZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpLCBmcmFtZUxvYWRS
ZXF1ZXN0LmluaXRpYXRlZEJ5TWFpbkZyYW1lKCkgfSk7CisgICAgUGFnZSogbmV3UGFnZSA9IG9s
ZFBhZ2UtPmNocm9tZSgpLmNyZWF0ZVdpbmRvdyhmcmFtZSwgeyB9LCB7ICpmcmFtZS5kb2N1bWVu
dCgpLCBmcmFtZUxvYWRSZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpIH0pOwogICAgIGlmICghbmV3
UGFnZSkKICAgICAgICAgcmV0dXJuOwogICAgIG5ld1BhZ2UtPmNocm9tZSgpLnNob3coKTsKQEAg
LTM5OCw3ICszOTgsNyBAQCB2b2lkIENvbnRleHRNZW51Q29udHJvbGxlcjo6Y29udGV4dE1lbnVJ
CiAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdPcGVuTGluazoKICAgICAgICAgaWYgKEZyYW1l
KiB0YXJnZXRGcmFtZSA9IG1fY29udGV4dC5oaXRUZXN0UmVzdWx0KCkudGFyZ2V0RnJhbWUoKSkg
ewogICAgICAgICAgICAgUmVzb3VyY2VSZXF1ZXN0IHJlc291cmNlUmVxdWVzdCB7IG1fY29udGV4
dC5oaXRUZXN0UmVzdWx0KCkuYWJzb2x1dGVMaW5rVVJMKCksIGZyYW1lLT5sb2FkZXIoKS5vdXRn
b2luZ1JlZmVycmVyKCkgfTsKLSAgICAgICAgICAgIEZyYW1lTG9hZFJlcXVlc3QgZnJhbWVMb2Fk
UmVxdWVzdCB7ICpmcmFtZS0+ZG9jdW1lbnQoKSwgZnJhbWUtPmRvY3VtZW50KCktPnNlY3VyaXR5
T3JpZ2luKCksIFdURk1vdmUocmVzb3VyY2VSZXF1ZXN0KSwgeyB9LCBJbml0aWF0ZWRCeU1haW5G
cmFtZTo6VW5rbm93biB9OworICAgICAgICAgICAgRnJhbWVMb2FkUmVxdWVzdCBmcmFtZUxvYWRS
ZXF1ZXN0IHsgKmZyYW1lLT5kb2N1bWVudCgpLCBmcmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlP
cmlnaW4oKSwgV1RGTW92ZShyZXNvdXJjZVJlcXVlc3QpLCB7IH0gfTsKICAgICAgICAgICAgIGZy
YW1lTG9hZFJlcXVlc3Quc2V0TmV3RnJhbWVPcGVuZXJQb2xpY3koTmV3RnJhbWVPcGVuZXJQb2xp
Y3k6OlN1cHByZXNzKTsKICAgICAgICAgICAgIGlmICh0YXJnZXRGcmFtZS0+aXNNYWluRnJhbWUo
KSkKICAgICAgICAgICAgICAgICBmcmFtZUxvYWRSZXF1ZXN0LnNldFNob3VsZE9wZW5FeHRlcm5h
bFVSTHNQb2xpY3koU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTo6U2hvdWxkQWxsb3cpOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAkocmV2aXNpb24gMjg0NDY3KQorKysgU291
cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzgzLDI4
ICsyMzgzLDI4IEBAIHZvaWQgRE9NV2luZG93OjpmaW5pc2hlZExvYWRpbmcoKQogICAgIH0KIH0K
IAotdm9pZCBET01XaW5kb3c6OnNldExvY2F0aW9uKERPTVdpbmRvdyYgYWN0aXZlV2luZG93LCBj
b25zdCBVUkwmIGNvbXBsZXRlZFVSTCwgU2V0TG9jYXRpb25Mb2NraW5nIGxvY2tpbmcpCit2b2lk
IERPTVdpbmRvdzo6c2V0TG9jYXRpb24oRE9NV2luZG93JiBpbmN1bWJlbnRXaW5kb3csIGNvbnN0
IFVSTCYgY29tcGxldGVkVVJMLCBTZXRMb2NhdGlvbkxvY2tpbmcgbG9ja2luZykKIHsKICAgICBp
ZiAoIWlzQ3VycmVudGx5RGlzcGxheWVkSW5GcmFtZSgpKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBSZWZQdHIgYWN0aXZlRG9jdW1lbnQgPSBhY3RpdmVXaW5kb3cuZG9jdW1lbnQoKTsKLSAgICBp
ZiAoIWFjdGl2ZURvY3VtZW50KQorICAgIFJlZlB0ciBpbmN1bWJlbnREb2N1bWVudCA9IGluY3Vt
YmVudFdpbmRvdy5kb2N1bWVudCgpOworICAgIGlmICghaW5jdW1iZW50RG9jdW1lbnQpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIFJlZlB0ciBmcmFtZSA9IHRoaXMtPmZyYW1lKCk7Ci0gICAgaWYg
KCFhY3RpdmVEb2N1bWVudC0+Y2FuTmF2aWdhdGUoZnJhbWUuZ2V0KCksIGNvbXBsZXRlZFVSTCkp
CisgICAgaWYgKCFpbmN1bWJlbnREb2N1bWVudC0+Y2FuTmF2aWdhdGUoZnJhbWUuZ2V0KCksIGNv
bXBsZXRlZFVSTCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChpc0luc2VjdXJlU2NyaXB0
QWNjZXNzKGFjdGl2ZVdpbmRvdywgY29tcGxldGVkVVJMLnN0cmluZygpKSkKKyAgICBBU1NFUlQo
aW5jdW1iZW50RG9jdW1lbnQtPmZyYW1lKCkpOworICAgIGlmIChpc0luc2VjdXJlU2NyaXB0QWNj
ZXNzKGluY3VtYmVudFdpbmRvdywgY29tcGxldGVkVVJMLnN0cmluZygpKSkKICAgICAgICAgcmV0
dXJuOwogCiAgICAgLy8gV2Ugd2FudCBhIG5ldyBoaXN0b3J5IGl0ZW0gaWYgd2UgYXJlIHByb2Nl
c3NpbmcgYSB1c2VyIGdlc3R1cmUuCiAgICAgTG9ja0hpc3RvcnkgbG9ja0hpc3RvcnkgPSAobG9j
a2luZyAhPSBMb2NrSGlzdG9yeUJhc2VkT25HZXN0dXJlU3RhdGUgfHwgIVVzZXJHZXN0dXJlSW5k
aWNhdG9yOjpwcm9jZXNzaW5nVXNlckdlc3R1cmUoKSkgPyBMb2NrSGlzdG9yeTo6WWVzIDogTG9j
a0hpc3Rvcnk6Ok5vOwogICAgIExvY2tCYWNrRm9yd2FyZExpc3QgbG9ja0JhY2tGb3J3YXJkTGlz
dCA9IChsb2NraW5nICE9IExvY2tIaXN0b3J5QmFzZWRPbkdlc3R1cmVTdGF0ZSkgPyBMb2NrQmFj
a0ZvcndhcmRMaXN0OjpZZXMgOiBMb2NrQmFja0ZvcndhcmRMaXN0OjpObzsKLSAgICBmcmFtZS0+
bmF2aWdhdGlvblNjaGVkdWxlcigpLnNjaGVkdWxlTG9jYXRpb25DaGFuZ2UoKmFjdGl2ZURvY3Vt
ZW50LCBhY3RpdmVEb2N1bWVudC0+c2VjdXJpdHlPcmlnaW4oKSwKLSAgICAgICAgLy8gRklYTUU6
IFdoYXQgaWYgYWN0aXZlRG9jdW1lbnQoKS0+ZnJhbWUoKSBpcyAwPwotICAgICAgICBjb21wbGV0
ZWRVUkwsIGFjdGl2ZURvY3VtZW50LT5mcmFtZSgpLT5sb2FkZXIoKS5vdXRnb2luZ1JlZmVycmVy
KCksCisgICAgZnJhbWUtPm5hdmlnYXRpb25TY2hlZHVsZXIoKS5zY2hlZHVsZUxvY2F0aW9uQ2hh
bmdlKCppbmN1bWJlbnREb2N1bWVudCwgaW5jdW1iZW50RG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2lu
KCksCisgICAgICAgIGNvbXBsZXRlZFVSTCwgaW5jdW1iZW50RG9jdW1lbnQtPmZyYW1lKCktPmxv
YWRlcigpLm91dGdvaW5nUmVmZXJyZXIoKSwKICAgICAgICAgbG9ja0hpc3RvcnksIGxvY2tCYWNr
Rm9yd2FyZExpc3QpOwogfQogCkBAIC0yNTEwLDEwICsyNTEwLDkgQEAgRXhjZXB0aW9uT3I8UmVm
UHRyPEZyYW1lPj4gRE9NV2luZG93OjpjcgogCiAgICAgLy8gRm9yIHdoYXRldmVyIHJlYXNvbiwg
RmlyZWZveCB1c2VzIHRoZSBmaXJzdCBmcmFtZSB0byBkZXRlcm1pbmUgdGhlIG91dGdvaW5nUmVm
ZXJyZXIuIFdlIHJlcGxpY2F0ZSB0aGF0IGJlaGF2aW9yIGhlcmUuCiAgICAgU3RyaW5nIHJlZmVy
cmVyID0gd2luZG93RmVhdHVyZXMubm9yZWZlcnJlciA/IFN0cmluZygpIDogU2VjdXJpdHlQb2xp
Y3k6OmdlbmVyYXRlUmVmZXJyZXJIZWFkZXIoZmlyc3RGcmFtZS5kb2N1bWVudCgpLT5yZWZlcnJl
clBvbGljeSgpLCBjb21wbGV0ZWRVUkwsIGZpcnN0RnJhbWUubG9hZGVyKCkub3V0Z29pbmdSZWZl
cnJlcigpKTsKLSAgICBhdXRvIGluaXRpYXRlZEJ5TWFpbkZyYW1lID0gYWN0aXZlRnJhbWUtPmlz
TWFpbkZyYW1lKCkgPyBJbml0aWF0ZWRCeU1haW5GcmFtZTo6WWVzIDogSW5pdGlhdGVkQnlNYWlu
RnJhbWU6OlVua25vd247CiAKICAgICBSZXNvdXJjZVJlcXVlc3QgcmVzb3VyY2VSZXF1ZXN0IHsg
Y29tcGxldGVkVVJMLCByZWZlcnJlciB9OwotICAgIEZyYW1lTG9hZFJlcXVlc3QgZnJhbWVMb2Fk
UmVxdWVzdCB7ICphY3RpdmVEb2N1bWVudCwgYWN0aXZlRG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2lu
KCksIFdURk1vdmUocmVzb3VyY2VSZXF1ZXN0KSwgZnJhbWVOYW1lLCBpbml0aWF0ZWRCeU1haW5G
cmFtZSB9OworICAgIEZyYW1lTG9hZFJlcXVlc3QgZnJhbWVMb2FkUmVxdWVzdCB7ICphY3RpdmVE
b2N1bWVudCwgYWN0aXZlRG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCksIFdURk1vdmUocmVzb3Vy
Y2VSZXF1ZXN0KSwgZnJhbWVOYW1lIH07CiAgICAgZnJhbWVMb2FkUmVxdWVzdC5zZXRTaG91bGRP
cGVuRXh0ZXJuYWxVUkxzUG9saWN5KGFjdGl2ZURvY3VtZW50LT5zaG91bGRPcGVuRXh0ZXJuYWxV
UkxzUG9saWN5VG9Qcm9wYWdhdGUoKSk7CiAKICAgICAvLyBXZSBwYXNzIHRoZSBvcGVuZXIgZnJh
bWUgZm9yIHRoZSBsb29rdXBGcmFtZSBpbiBjYXNlIHRoZSBhY3RpdmUgZnJhbWUgaXMgZGlmZmVy
ZW50IGZyb20KQEAgLTI1MzksNyArMjUzOCw3IEBAIEV4Y2VwdGlvbk9yPFJlZlB0cjxGcmFtZT4+
IERPTVdpbmRvdzo6Y3IKICAgICBpZiAoY3JlYXRlZCkgewogICAgICAgICBSZXNvdXJjZVJlcXVl
c3QgcmVzb3VyY2VSZXF1ZXN0IHsgY29tcGxldGVkVVJMLCByZWZlcnJlciwgUmVzb3VyY2VSZXF1
ZXN0Q2FjaGVQb2xpY3k6OlVzZVByb3RvY29sQ2FjaGVQb2xpY3kgfTsKICAgICAgICAgRnJhbWVM
b2FkZXI6OmFkZFNhbWVTaXRlSW5mb1RvUmVxdWVzdElmTmVlZGVkKHJlc291cmNlUmVxdWVzdCwg
b3BlbmVyRnJhbWUuZG9jdW1lbnQoKSk7Ci0gICAgICAgIEZyYW1lTG9hZFJlcXVlc3QgZnJhbWVM
b2FkUmVxdWVzdCB7ICphY3RpdmVXaW5kb3cuZG9jdW1lbnQoKSwgYWN0aXZlV2luZG93LmRvY3Vt
ZW50KCktPnNlY3VyaXR5T3JpZ2luKCksIFdURk1vdmUocmVzb3VyY2VSZXF1ZXN0KSwgIl9zZWxm
Il9zLCBpbml0aWF0ZWRCeU1haW5GcmFtZSB9OworICAgICAgICBGcmFtZUxvYWRSZXF1ZXN0IGZy
YW1lTG9hZFJlcXVlc3QgeyAqYWN0aXZlV2luZG93LmRvY3VtZW50KCksIGFjdGl2ZVdpbmRvdy5k
b2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLCBXVEZNb3ZlKHJlc291cmNlUmVxdWVzdCksICJf
c2VsZiJfcyB9OwogICAgICAgICBmcmFtZUxvYWRSZXF1ZXN0LnNldFNob3VsZE9wZW5FeHRlcm5h
bFVSTHNQb2xpY3koYWN0aXZlRG9jdW1lbnQtPnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3lU
b1Byb3BhZ2F0ZSgpKTsKICAgICAgICAgbmV3RnJhbWUtPmxvYWRlcigpLmNoYW5nZUxvY2F0aW9u
KFdURk1vdmUoZnJhbWVMb2FkUmVxdWVzdCkpOwogICAgIH0gZWxzZSBpZiAoIXVybFN0cmluZy5p
c0VtcHR5KCkpIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaAkocmV2aXNpb24gMjg0NDY3
KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaAkod29ya2luZyBjb3B5KQpAQCAt
MTg2LDcgKzE4Niw3IEBAIHB1YmxpYzoKICAgICBib29sIGNvbnN1bWVUcmFuc2llbnRBY3RpdmF0
aW9uKCk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBMb2NhdGlvbiYgbG9jYXRpb24oKTsKLSAgICB2
b2lkIHNldExvY2F0aW9uKERPTVdpbmRvdyYgYWN0aXZlV2luZG93LCBjb25zdCBVUkwmIGNvbXBs
ZXRlZFVSTCwgU2V0TG9jYXRpb25Mb2NraW5nID0gTG9ja0hpc3RvcnlCYXNlZE9uR2VzdHVyZVN0
YXRlKTsKKyAgICB2b2lkIHNldExvY2F0aW9uKERPTVdpbmRvdyYgaW5jdW1iZW50V2luZG93LCBj
b25zdCBVUkwmIGNvbXBsZXRlZFVSTCwgU2V0TG9jYXRpb25Mb2NraW5nID0gTG9ja0hpc3RvcnlC
YXNlZE9uR2VzdHVyZVN0YXRlKTsKIAogICAgIERPTVNlbGVjdGlvbiogZ2V0U2VsZWN0aW9uKCk7
CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvTG9jYXRpb24uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvTG9jYXRpb24uY3BwCShyZXZpc2lvbiAyODQ0NjcpCisrKyBT
b3VyY2UvV2ViQ29yZS9wYWdlL0xvY2F0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjEwLDE0
ICsyMTAsMTQgQEAgRXhjZXB0aW9uT3I8dm9pZD4gTG9jYXRpb246OnNldEhhc2goRE9NVwogICAg
IHJldHVybiBzZXRMb2NhdGlvbihpbmN1bWJlbnRXaW5kb3csIGZpcnN0V2luZG93LCB1cmwuc3Ry
aW5nKCkpOwogfQogCi1FeGNlcHRpb25Pcjx2b2lkPiBMb2NhdGlvbjo6YXNzaWduKERPTVdpbmRv
dyYgYWN0aXZlV2luZG93LCBET01XaW5kb3cmIGZpcnN0V2luZG93LCBjb25zdCBTdHJpbmcmIHVy
bCkKK0V4Y2VwdGlvbk9yPHZvaWQ+IExvY2F0aW9uOjphc3NpZ24oRE9NV2luZG93JiBpbmN1bWJl
bnRXaW5kb3csIERPTVdpbmRvdyYgZmlyc3RXaW5kb3csIGNvbnN0IFN0cmluZyYgdXJsKQogewog
ICAgIGlmICghZnJhbWUoKSkKICAgICAgICAgcmV0dXJuIHsgfTsKLSAgICByZXR1cm4gc2V0TG9j
YXRpb24oYWN0aXZlV2luZG93LCBmaXJzdFdpbmRvdywgdXJsKTsKKyAgICByZXR1cm4gc2V0TG9j
YXRpb24oaW5jdW1iZW50V2luZG93LCBmaXJzdFdpbmRvdywgdXJsKTsKIH0KIAotRXhjZXB0aW9u
T3I8dm9pZD4gTG9jYXRpb246OnJlcGxhY2UoRE9NV2luZG93JiBhY3RpdmVXaW5kb3csIERPTVdp
bmRvdyYgZmlyc3RXaW5kb3csIGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nKQorRXhjZXB0aW9uT3I8
dm9pZD4gTG9jYXRpb246OnJlcGxhY2UoRE9NV2luZG93JiBpbmN1bWJlbnRXaW5kb3csIERPTVdp
bmRvdyYgZmlyc3RXaW5kb3csIGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nKQogewogICAgIGF1dG8q
IGZyYW1lID0gdGhpcy0+ZnJhbWUoKTsKICAgICBpZiAoIWZyYW1lKQpAQCAtMjM0LDM2ICsyMzQs
MzYgQEAgRXhjZXB0aW9uT3I8dm9pZD4gTG9jYXRpb246OnJlcGxhY2UoRE9NVwogICAgICAgICBy
ZXR1cm4gRXhjZXB0aW9uIHsgU3ludGF4RXJyb3IgfTsKIAogICAgIC8vIFdlIGNhbGwgRE9NV2lu
ZG93OjpzZXRMb2NhdGlvbiBkaXJlY3RseSBoZXJlIGJlY2F1c2UgcmVwbGFjZSgpIGFsd2F5cyBv
cGVyYXRlcyBvbiB0aGUgY3VycmVudCBmcmFtZS4KLSAgICBmcmFtZS0+ZG9jdW1lbnQoKS0+ZG9t
V2luZG93KCktPnNldExvY2F0aW9uKGFjdGl2ZVdpbmRvdywgY29tcGxldGVkVVJMLCBMb2NrSGlz
dG9yeUFuZEJhY2tGb3J3YXJkTGlzdCk7CisgICAgZnJhbWUtPmRvY3VtZW50KCktPmRvbVdpbmRv
dygpLT5zZXRMb2NhdGlvbihpbmN1bWJlbnRXaW5kb3csIGNvbXBsZXRlZFVSTCwgTG9ja0hpc3Rv
cnlBbmRCYWNrRm9yd2FyZExpc3QpOwogICAgIHJldHVybiB7IH07CiB9CiAKLXZvaWQgTG9jYXRp
b246OnJlbG9hZChET01XaW5kb3cmIGFjdGl2ZVdpbmRvdykKK3ZvaWQgTG9jYXRpb246OnJlbG9h
ZChET01XaW5kb3cmIGluY3VtYmVudFdpbmRvdykKIHsKICAgICBhdXRvKiBmcmFtZSA9IHRoaXMt
PmZyYW1lKCk7CiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQVNTRVJU
KGFjdGl2ZVdpbmRvdy5kb2N1bWVudCgpKTsKKyAgICBBU1NFUlQoaW5jdW1iZW50V2luZG93LmRv
Y3VtZW50KCkpOwogICAgIEFTU0VSVChmcmFtZS0+ZG9jdW1lbnQoKSk7CiAgICAgQVNTRVJUKGZy
YW1lLT5kb2N1bWVudCgpLT5kb21XaW5kb3coKSk7CiAKLSAgICBhdXRvJiBhY3RpdmVEb2N1bWVu
dCA9ICphY3RpdmVXaW5kb3cuZG9jdW1lbnQoKTsKKyAgICBhdXRvJiBpbmN1bWJlbnREb2N1bWVu
dCA9ICppbmN1bWJlbnRXaW5kb3cuZG9jdW1lbnQoKTsKICAgICBhdXRvJiB0YXJnZXREb2N1bWVu
dCA9ICpmcmFtZS0+ZG9jdW1lbnQoKTsKIAogICAgIC8vIEZJWE1FOiBJdCdzIG5vdCBjbGVhciB0
aGlzIGNyb3NzLW9yaWdpbiBzZWN1cml0eSBjaGVjayBpcyB2YWx1YWJsZS4KICAgICAvLyBXZSBh
bGxvdyBvbmUgcGFnZSB0byBjaGFuZ2UgdGhlIGxvY2F0aW9uIG9mIGFub3RoZXIuIFdoeSBibG9j
ayBhdHRlbXB0cyB0byByZWxvYWQ/CiAgICAgLy8gT3RoZXIgbG9jYXRpb24gb3BlcmF0aW9ucyBz
aW1wbHkgYmxvY2sgdXNlIG9mIEphdmFTY3JpcHQgVVJMcyBjcm9zcyBvcmlnaW4uCi0gICAgaWYg
KCFhY3RpdmVEb2N1bWVudC5zZWN1cml0eU9yaWdpbigpLmlzU2FtZU9yaWdpbkRvbWFpbih0YXJn
ZXREb2N1bWVudC5zZWN1cml0eU9yaWdpbigpKSkgeworICAgIGlmICghaW5jdW1iZW50RG9jdW1l
bnQuc2VjdXJpdHlPcmlnaW4oKS5pc1NhbWVPcmlnaW5Eb21haW4odGFyZ2V0RG9jdW1lbnQuc2Vj
dXJpdHlPcmlnaW4oKSkpIHsKICAgICAgICAgYXV0byYgdGFyZ2V0V2luZG93ID0gKnRhcmdldERv
Y3VtZW50LmRvbVdpbmRvdygpOwotICAgICAgICB0YXJnZXRXaW5kb3cucHJpbnRFcnJvck1lc3Nh
Z2UodGFyZ2V0V2luZG93LmNyb3NzRG9tYWluQWNjZXNzRXJyb3JNZXNzYWdlKGFjdGl2ZVdpbmRv
dywgSW5jbHVkZVRhcmdldE9yaWdpbjo6WWVzKSk7CisgICAgICAgIHRhcmdldFdpbmRvdy5wcmlu
dEVycm9yTWVzc2FnZSh0YXJnZXRXaW5kb3cuY3Jvc3NEb21haW5BY2Nlc3NFcnJvck1lc3NhZ2Uo
aW5jdW1iZW50V2luZG93LCBJbmNsdWRlVGFyZ2V0T3JpZ2luOjpZZXMpKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAogICAgIGlmICh0YXJnZXREb2N1bWVudC51cmwoKS5wcm90b2NvbElzSmF2
YVNjcmlwdCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBmcmFtZS0+bmF2aWdhdGlvblNjaGVk
dWxlcigpLnNjaGVkdWxlUmVmcmVzaChhY3RpdmVEb2N1bWVudCk7CisgICAgZnJhbWUtPm5hdmln
YXRpb25TY2hlZHVsZXIoKS5zY2hlZHVsZVJlZnJlc2goaW5jdW1iZW50RG9jdW1lbnQpOwogfQog
CiBFeGNlcHRpb25Pcjx2b2lkPiBMb2NhdGlvbjo6c2V0TG9jYXRpb24oRE9NV2luZG93JiBpbmN1
bWJlbnRXaW5kb3csIERPTVdpbmRvdyYgZmlyc3RXaW5kb3csIGNvbnN0IFN0cmluZyYgdXJsU3Ry
aW5nKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9Mb2NhdGlvbi5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvTG9jYXRpb24uaAkocmV2aXNpb24gMjg0NDY3KQorKysgU291
cmNlL1dlYkNvcmUvcGFnZS9Mb2NhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC00NSw5ICs0NSw5
IEBAIHB1YmxpYzoKICAgICBFeGNlcHRpb25Pcjx2b2lkPiBzZXRIcmVmKERPTVdpbmRvdyYgaW5j
dW1iZW50V2luZG93LCBET01XaW5kb3cmIGZpcnN0V2luZG93LCBjb25zdCBTdHJpbmcmKTsKICAg
ICBTdHJpbmcgaHJlZigpIGNvbnN0OwogCi0gICAgRXhjZXB0aW9uT3I8dm9pZD4gYXNzaWduKERP
TVdpbmRvdyYgYWN0aXZlV2luZG93LCBET01XaW5kb3cmIGZpcnN0V2luZG93LCBjb25zdCBTdHJp
bmcmKTsKLSAgICBFeGNlcHRpb25Pcjx2b2lkPiByZXBsYWNlKERPTVdpbmRvdyYgYWN0aXZlV2lu
ZG93LCBET01XaW5kb3cmIGZpcnN0V2luZG93LCBjb25zdCBTdHJpbmcmKTsKLSAgICB2b2lkIHJl
bG9hZChET01XaW5kb3cmIGFjdGl2ZVdpbmRvdyk7CisgICAgRXhjZXB0aW9uT3I8dm9pZD4gYXNz
aWduKERPTVdpbmRvdyYgaW5jdW1iZW50V2luZG93LCBET01XaW5kb3cmIGZpcnN0V2luZG93LCBj
b25zdCBTdHJpbmcmKTsKKyAgICBFeGNlcHRpb25Pcjx2b2lkPiByZXBsYWNlKERPTVdpbmRvdyYg
aW5jdW1iZW50V2luZG93LCBET01XaW5kb3cmIGZpcnN0V2luZG93LCBjb25zdCBTdHJpbmcmKTsK
KyAgICB2b2lkIHJlbG9hZChET01XaW5kb3cmIGluY3VtYmVudFdpbmRvdyk7CiAKICAgICBFeGNl
cHRpb25Pcjx2b2lkPiBzZXRQcm90b2NvbChET01XaW5kb3cmIGluY3VtYmVudFdpbmRvdywgRE9N
V2luZG93JiBmaXJzdFdpbmRvdywgY29uc3QgU3RyaW5nJik7CiAgICAgU3RyaW5nIHByb3RvY29s
KCkgY29uc3Q7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2F0aW9uLmlkbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2F0aW9uLmlkbAkocmV2aXNpb24gMjg0NDY3
KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9Mb2NhdGlvbi5pZGwJKHdvcmtpbmcgY29weSkKQEAg
LTQ1LDEwICs0NSw5IEBACiBdIGludGVyZmFjZSBMb2NhdGlvbiB7CiAgICAgW1NldHRlckNhbGxX
aXRoPUxlZ2FjeUFjdGl2ZVdpbmRvd0ZvckFjY2Vzc29yJkZpcnN0V2luZG93LCBEb05vdENoZWNr
U2VjdXJpdHlPblNldHRlcl0gc3RyaW5naWZpZXIgYXR0cmlidXRlIFVTVlN0cmluZyBocmVmOwog
Ci0gICAgLy8gRklYTUU6IFdlIHNob3VsZCB1c2UgSW5jdW1iZW50V2luZG93IG9uY2Ugd2UgZm91
bmQgd2h5IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjg5NDMgaXNz
dWUgb2NjdXJlZC4KLSAgICBbQ2FsbFdpdGg9QWN0aXZlV2luZG93JkZpcnN0V2luZG93XSB1bmRl
ZmluZWQgYXNzaWduKFVTVlN0cmluZyB1cmwpOwotICAgIFtDYWxsV2l0aD1BY3RpdmVXaW5kb3cm
Rmlyc3RXaW5kb3csIERvTm90Q2hlY2tTZWN1cml0eV0gdW5kZWZpbmVkIHJlcGxhY2UoVVNWU3Ry
aW5nIHVybCk7Ci0gICAgW0NhbGxXaXRoPUFjdGl2ZVdpbmRvd10gdW5kZWZpbmVkIHJlbG9hZCgp
OworICAgIFtDYWxsV2l0aD1JbmN1bWJlbnRXaW5kb3cmRmlyc3RXaW5kb3ddIHVuZGVmaW5lZCBh
c3NpZ24oVVNWU3RyaW5nIHVybCk7CisgICAgW0NhbGxXaXRoPUluY3VtYmVudFdpbmRvdyZGaXJz
dFdpbmRvdywgRG9Ob3RDaGVja1NlY3VyaXR5XSB1bmRlZmluZWQgcmVwbGFjZShVU1ZTdHJpbmcg
dXJsKTsKKyAgICBbQ2FsbFdpdGg9SW5jdW1iZW50V2luZG93XSB1bmRlZmluZWQgcmVsb2FkKCk7
CiAKICAgICAvLyBVUkkgZGVjb21wb3NpdGlvbiBhdHRyaWJ1dGVzCiAgICAgW1NldHRlckNhbGxX
aXRoPUxlZ2FjeUFjdGl2ZVdpbmRvd0ZvckFjY2Vzc29yJkZpcnN0V2luZG93XSBhdHRyaWJ1dGUg
VVNWU3RyaW5nIHByb3RvY29sOwpJbmRleDogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDI4NDQ5MykKKysrIFNv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIw
MjEtMTAtMTkgIEFsZXhleSBTaHZheWthICA8c2h2YWlrYWxlc2hAZ21haWwuY29tPgorCisgICAg
ICAgIEFsbG93IGEgc2FtZS1vcmlnaW4gPGlmcmFtZT4gdG8gcHJvZ3JhbW1hdGljYWxseSBuYXZp
Z2F0ZSBpdHMgdG9wIGZyYW1lIHRvIGFuIGV4dGVybmFsIFVSTAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI5MTIwCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
Vmlldy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OmxvYWRVUkwpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xp
Y3lGb3JOYXZpZ2F0aW9uQWN0aW9uKToKKwogMjAyMS0xMC0xOSAgR2FycmV0dCBEYXZpZHNvbiAg
PGdhcnJldHRfZGF2aWRzb25AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYkF1dGhuIFBsYXRmb3Jt
IFVJIGNhbGxiYWNrcyBhcmUgbm90IGd1YXJhbnRlZWQgdG8gaGFwcGVuIG9uIHRoZSBtYWluIHRo
cmVhZApJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
Vmlldy5jcHAJKHJldmlzaW9uIDI4NDQ2NykKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpblZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzQ0LDcgKzEzNDQsNyBA
QCBTdHJpbmcgUGx1Z2luVmlldzo6dXNlckFnZW50KCkKIAogdm9pZCBQbHVnaW5WaWV3Ojpsb2Fk
VVJMKHVpbnQ2NF90IHJlcXVlc3RJRCwgY29uc3QgU3RyaW5nJiBtZXRob2QsIGNvbnN0IFN0cmlu
ZyYgdXJsU3RyaW5nLCBjb25zdCBTdHJpbmcmIHRhcmdldCwgY29uc3QgSFRUUEhlYWRlck1hcCYg
aGVhZGVyRmllbGRzLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGh0dHBCb2R5LCBib29sIGFsbG93
UG9wdXBzKQogewotICAgIEZyYW1lTG9hZFJlcXVlc3QgZnJhbWVMb2FkUmVxdWVzdCB7IG1fcGx1
Z2luRWxlbWVudC0+ZG9jdW1lbnQoKSwgbV9wbHVnaW5FbGVtZW50LT5kb2N1bWVudCgpLnNlY3Vy
aXR5T3JpZ2luKCksIHsgfSwgdGFyZ2V0LCBJbml0aWF0ZWRCeU1haW5GcmFtZTo6VW5rbm93biB9
OworICAgIEZyYW1lTG9hZFJlcXVlc3QgZnJhbWVMb2FkUmVxdWVzdCB7IG1fcGx1Z2luRWxlbWVu
dC0+ZG9jdW1lbnQoKSwgbV9wbHVnaW5FbGVtZW50LT5kb2N1bWVudCgpLnNlY3VyaXR5T3JpZ2lu
KCksIHsgfSwgdGFyZ2V0IH07CiAgICAgZnJhbWVMb2FkUmVxdWVzdC5yZXNvdXJjZVJlcXVlc3Qo
KS5zZXRIVFRQTWV0aG9kKG1ldGhvZCk7CiAgICAgZnJhbWVMb2FkUmVxdWVzdC5yZXNvdXJjZVJl
cXVlc3QoKS5zZXRVUkwobV9wbHVnaW5FbGVtZW50LT5kb2N1bWVudCgpLmNvbXBsZXRlVVJMKHVy
bFN0cmluZykpOwogICAgIGZyYW1lTG9hZFJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkuc2V0SFRU
UEhlYWRlckZpZWxkcyhoZWFkZXJGaWVsZHMpOwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQuY3BwCShyZXZpc2lvbiAyODQ0NjcpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC05NjUsNyArOTY1LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNp
ZAogICAgIH0KIAogICAgIEZyYW1lSW5mb0RhdGEgb3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhIHsK
LSAgICAgICAgbmF2aWdhdGlvbkFjdGlvbi5pbml0aWF0ZWRCeU1haW5GcmFtZSgpID09IEluaXRp
YXRlZEJ5TWFpbkZyYW1lOjpZZXMsCisgICAgICAgIG5hdmlnYXRpb25BY3Rpb24uaW5pdGlhdGVk
QnlNYWluRnJhbWUoKSwKICAgICAgICAgUmVzb3VyY2VSZXF1ZXN0IHsgcmVxdWVzdGVyLnVybCB9
LAogICAgICAgICByZXF1ZXN0ZXIuc2VjdXJpdHlPcmlnaW4tPmRhdGEoKSwKICAgICAgICAgV1RG
TW92ZShvcmlnaW5hdGluZ0ZyYW1lSUQpLApJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9pb3Mv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL0NoYW5nZUxv
ZwkocmV2aXNpb24gMjg0NDY3KQorKysgU291cmNlL1dlYktpdExlZ2FjeS9pb3MvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjEtMTAtMTkgIEFsZXhleSBTaHZh
eWthICA8c2h2YWlrYWxlc2hAZ21haWwuY29tPgorCisgICAgICAgIEFsbG93IGEgc2FtZS1vcmln
aW4gPGlmcmFtZT4gdG8gcHJvZ3JhbW1hdGljYWxseSBuYXZpZ2F0ZSBpdHMgdG9wIGZyYW1lIHRv
IGFuIGV4dGVybmFsIFVSTAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjI5MTIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBXZWJWaWV3L1dlYlBERlZpZXdQbGFjZWhvbGRlci5tbToKKyAgICAgICAgKC1b
V2ViUERGVmlld1BsYWNlaG9sZGVyIHNpbXVsYXRlQ2xpY2tPbkxpbmtUb1VSTDpdKToKKwogMjAy
MS0xMC0xMyAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAg
ICAgICAgIFJlbW92ZSBXVEY6OlZhcmlhbnQgYW5kIFdURjo6Z2V0CkluZGV4OiBTb3VyY2UvV2Vi
S2l0TGVnYWN5L2lvcy9XZWJWaWV3L1dlYlBERlZpZXdQbGFjZWhvbGRlci5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJWaWV3L1dlYlBERlZpZXdQbGFjZWhvbGRl
ci5tbQkocmV2aXNpb24gMjg0NDY3KQorKysgU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViVmll
dy9XZWJQREZWaWV3UGxhY2Vob2xkZXIubW0JKHdvcmtpbmcgY29weSkKQEAgLTQ2Nyw3ICs0Njcs
NyBAQCAtICh2b2lkKXNpbXVsYXRlQ2xpY2tPbkxpbmtUb1VSTDooTlNVUkwgCiAKICAgICAvLyBD
YWxsIHRvIHRoZSBmcmFtZSBsb2FkZXIgYmVjYXVzZSB0aGlzIGlzIHdoZXJlIG91ciBzZWN1cml0
eSBjaGVja3MgYXJlIG1hZGUuCiAgICAgRnJhbWUqIGZyYW1lID0gY29yZShbX2RhdGFTb3VyY2Ug
d2ViRnJhbWVdKTsKLSAgICBGcmFtZUxvYWRSZXF1ZXN0IGZyYW1lTG9hZFJlcXVlc3QgeyAqZnJh
bWUtPmRvY3VtZW50KCksIGZyYW1lLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLCB7IFVS
TCB9LCB7IH0sIEluaXRpYXRlZEJ5TWFpbkZyYW1lOjpVbmtub3duIH07CisgICAgRnJhbWVMb2Fk
UmVxdWVzdCBmcmFtZUxvYWRSZXF1ZXN0IHsgKmZyYW1lLT5kb2N1bWVudCgpLCBmcmFtZS0+ZG9j
dW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSwgeyBVUkwgfSwgeyB9IH07CiBmcmFtZUxvYWRSZXF1
ZXN0LnNldFJlZmVycmVyUG9saWN5KFJlZmVycmVyUG9saWN5OjpOb1JlZmVycmVyKTsKICAgICBm
cmFtZS0+bG9hZGVyKCkubG9hZEZyYW1lUmVxdWVzdChXVEZNb3ZlKGZyYW1lTG9hZFJlcXVlc3Qp
LCBldmVudC5wdHIoKSwgbnVsbHB0cik7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdl
TG9nCShyZXZpc2lvbiAyODQ0NjcpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAyMS0xMC0xOSAgQWxleGV5IFNo
dmF5a2EgIDxzaHZhaWthbGVzaEBnbWFpbC5jb20+CisKKyAgICAgICAgQWxsb3cgYSBzYW1lLW9y
aWdpbiA8aWZyYW1lPiB0byBwcm9ncmFtbWF0aWNhbGx5IG5hdmlnYXRlIGl0cyB0b3AgZnJhbWUg
dG8gYW4gZXh0ZXJuYWwgVVJMCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMjkxMjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIFdlYlZpZXcvV2ViUERGVmlldy5tbToKKyAgICAgICAgKC1bV2ViUERGVmll
dyBQREZWaWV3V2lsbENsaWNrT25MaW5rOndpdGhVUkw6XSk6CisKIDIwMjEtMTAtMTkgIENocmlz
IER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBjYWNoZWRDR0NvbG9yKCkgYW5k
IG5zQ29sb3IoKSBzaG91bGQgcmV0dXJuIHNtYXJ0IHBvaW50ZXJzCkluZGV4OiBTb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlBERlZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQREZWaWV3Lm1tCShyZXZpc2lvbiAyODQ0Njcp
CisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlBERlZpZXcubW0JKHdvcmtp
bmcgY29weSkKQEAgLTk2Niw3ICs5NjYsNyBAQCAtICh2b2lkKVBERlZpZXdXaWxsQ2xpY2tPbkxp
bms6KFBERlZpZXcgCiAKICAgICAvLyBDYWxsIHRvIHRoZSBmcmFtZSBsb2FkZXIgYmVjYXVzZSB0
aGlzIGlzIHdoZXJlIG91ciBzZWN1cml0eSBjaGVja3MgYXJlIG1hZGUuCiAgICAgYXV0byogZnJh
bWUgPSBjb3JlKFtkYXRhU291cmNlIHdlYkZyYW1lXSk7Ci0gICAgV2ViQ29yZTo6RnJhbWVMb2Fk
UmVxdWVzdCBmcmFtZUxvYWRSZXF1ZXN0IHsgKmZyYW1lLT5kb2N1bWVudCgpLCBmcmFtZS0+ZG9j
dW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSwgeyBVUkwgfSwgeyB9LCBXZWJDb3JlOjpJbml0aWF0
ZWRCeU1haW5GcmFtZTo6VW5rbm93biB9OworICAgIFdlYkNvcmU6OkZyYW1lTG9hZFJlcXVlc3Qg
ZnJhbWVMb2FkUmVxdWVzdCB7ICpmcmFtZS0+ZG9jdW1lbnQoKSwgZnJhbWUtPmRvY3VtZW50KCkt
PnNlY3VyaXR5T3JpZ2luKCksIHsgVVJMIH0sIHsgfSB9OwogICAgIGZyYW1lTG9hZFJlcXVlc3Qu
c2V0UmVmZXJyZXJQb2xpY3koV2ViQ29yZTo6UmVmZXJyZXJQb2xpY3k6Ok5vUmVmZXJyZXIpOwog
ICAgIGZyYW1lLT5sb2FkZXIoKS5sb2FkRnJhbWVSZXF1ZXN0KFdURk1vdmUoZnJhbWVMb2FkUmVx
dWVzdCksIGV2ZW50LmdldCgpLCBudWxscHRyKTsKIH0KSW5kZXg6IExheW91dFRlc3RzL0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI4NDQ2
NykKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM4
IEBACisyMDIxLTEwLTE5ICBBbGV4ZXkgU2h2YXlrYSAgPHNodmFpa2FsZXNoQGdtYWlsLmNvbT4K
KworICAgICAgICBBbGxvdyBhIHNhbWUtb3JpZ2luIDxpZnJhbWU+IHRvIHByb2dyYW1tYXRpY2Fs
bHkgbmF2aWdhdGUgaXRzIHRvcCBmcmFtZSB0byBhbiBleHRlcm5hbCBVUkwKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyOTEyMAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9mcmFtZXMvc2FuZGJv
eGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXBhcmVudC1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFz
dC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXBhcmVudC5odG1sOgorICAgICAg
ICAqIGh0dHAvdGVzdHMvbmF2aWdhdGlvbi1wb2xpY3k6IEFkZGVkLgorICAgICAgICAqIGh0dHAv
dGVzdHMvbmF2aWdhdGlvbi1wb2xpY3kvbWFpbi1mcmFtZS1uYXZpZ2F0ZWQtcHJvZ3JhbWF0aWNh
bGx5LWJ5LXN1YmZyYW1lLWNyb3NzLW9yaWdpbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIGh0dHAvdGVzdHMvbmF2aWdhdGlvbi1wb2xpY3kvbWFpbi1mcmFtZS1uYXZpZ2F0ZWQtcHJv
Z3JhbWF0aWNhbGx5LWJ5LXN1YmZyYW1lLWNyb3NzLW9yaWdpbi5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBodHRwL3Rlc3RzL25hdmlnYXRpb24tcG9saWN5L3Jlc291cmNlczogQWRkZWQuCisgICAg
ICAgICogaHR0cC90ZXN0cy9uYXZpZ2F0aW9uLXBvbGljeS9yZXNvdXJjZXMvbWFpbi1mcmFtZS13
aXRoLXN1YmZyYW1lLXByb2dyYW1hdGljYWxseS1uYXZpZ2F0ZXMtbWFpbi1jcm9zcy1vcmlnaW4u
aHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9uYXZpZ2F0aW9uLXBvbGljeS9yZXNv
dXJjZXMvbm90aWZ5LWRvbmUuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9uYXZp
Z2F0aW9uLXBvbGljeS9yZXNvdXJjZXMvcHJvZ3JhbWF0aWNhbGx5LW5hdmlnYXRlLXRvLW5vdGlm
eS1kb25lLXRhcmdldC10b3AtY3Jvc3Mtb3JpZ2luLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0
dHAvdGVzdHMvc2VjdXJpdHkvZnJhbWVOYXZpZ2F0aW9uL2NvbnRleHQtZm9yLWxvY2F0aW9uLWFz
c2lnbi1leHBlY3RlZC50eHQ6CisgICAgICAgICogbG9hZGVyL25hdmlnYXRpb24tcG9saWN5L3No
b3VsZC1vcGVuLWV4dGVybmFsLXVybHMvbWFpbi1mcmFtZS1uYXZpZ2F0ZWQtcHJvZ3JhbWF0aWNh
bGx5LWJ5LXN1YmZyYW1lLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBsb2FkZXIvbmF2aWdhdGlv
bi1wb2xpY3kvc2hvdWxkLW9wZW4tZXh0ZXJuYWwtdXJscy9tYWluLWZyYW1lLW5hdmlnYXRlZC1w
cm9ncmFtYXRpY2FsbHktYnktc3ViZnJhbWUtdmlhLW1ldGhvZC1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIGxvYWRlci9uYXZpZ2F0aW9uLXBvbGljeS9zaG91bGQtb3Blbi1leHRlcm5h
bC11cmxzL21haW4tZnJhbWUtbmF2aWdhdGVkLXByb2dyYW1hdGljYWxseS1ieS1zdWJmcmFtZS12
aWEtbWV0aG9kLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGxvYWRlci9uYXZpZ2F0aW9uLXBvbGlj
eS9zaG91bGQtb3Blbi1leHRlcm5hbC11cmxzL21haW4tZnJhbWUtbmF2aWdhdGVkLXByb2dyYW1h
dGljYWxseS1ieS1zdWJmcmFtZS13aXRob3V0LWZsYWctZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBsb2FkZXIvbmF2aWdhdGlvbi1wb2xpY3kvc2hvdWxkLW9wZW4tZXh0ZXJuYWwtdXJs
cy9tYWluLWZyYW1lLW5hdmlnYXRlZC1wcm9ncmFtYXRpY2FsbHktYnktc3ViZnJhbWUtd2l0aG91
dC1mbGFnLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGxvYWRlci9uYXZpZ2F0aW9uLXBvbGljeS9z
aG91bGQtb3Blbi1leHRlcm5hbC11cmxzL3Jlc291cmNlcy9tYWluLWZyYW1lLXdpdGgtc3ViZnJh
bWUtbWFpbi1wcm9ncmFtYXRpY2FsbHktbmF2aWdhdGVzLXN1YmZyYW1lLW5vLXRvcENhbGxGcmFt
ZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBsb2FkZXIvbmF2aWdhdGlvbi1wb2xpY3kvc2hvdWxk
LW9wZW4tZXh0ZXJuYWwtdXJscy9yZXNvdXJjZXMvbWFpbi1mcmFtZS13aXRoLXN1YmZyYW1lLW1h
aW4tcHJvZ3JhbWF0aWNhbGx5LW5hdmlnYXRlcy1zdWJmcmFtZS12aWEtbWV0aG9kLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIGxvYWRlci9uYXZpZ2F0aW9uLXBvbGljeS9zaG91bGQtb3Blbi1leHRl
cm5hbC11cmxzL3Jlc291cmNlcy9tYWluLWZyYW1lLXdpdGgtc3ViZnJhbWUtcHJvZ3JhbWF0aWNh
bGx5LW5hdmlnYXRlcy1tYWluLXZpYS1tZXRob2QuaHRtbDogQWRkZWQuCisgICAgICAgICogbG9h
ZGVyL25hdmlnYXRpb24tcG9saWN5L3Nob3VsZC1vcGVuLWV4dGVybmFsLXVybHMvcmVzb3VyY2Vz
L3Byb2dyYW1hdGljYWxseS1uYXZpZ2F0ZS10by1ub3RpZnktZG9uZS10YXJnZXQtdG9wLXZpYS1t
ZXRob2QuaHRtbDogQWRkZWQuCisgICAgICAgICogbG9hZGVyL25hdmlnYXRpb24tcG9saWN5L3No
b3VsZC1vcGVuLWV4dGVybmFsLXVybHMvc3ViZnJhbWUtbmF2aWdhdGVkLXByb2dyYW1hdGljYWxs
eS1ieS1tYWluLWZyYW1lLW5vLXRvcENhbGxGcmFtZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIGxvYWRlci9uYXZpZ2F0aW9uLXBvbGljeS9zaG91bGQtb3Blbi1leHRlcm5hbC11cmxz
L3N1YmZyYW1lLW5hdmlnYXRlZC1wcm9ncmFtYXRpY2FsbHktYnktbWFpbi1mcmFtZS1uby10b3BD
YWxsRnJhbWUuaHRtbDogQWRkZWQuCisgICAgICAgICogbG9hZGVyL25hdmlnYXRpb24tcG9saWN5
L3Nob3VsZC1vcGVuLWV4dGVybmFsLXVybHMvc3ViZnJhbWUtbmF2aWdhdGVkLXByb2dyYW1hdGlj
YWxseS1ieS1tYWluLWZyYW1lLXZpYS1tZXRob2QtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBsb2FkZXIvbmF2aWdhdGlvbi1wb2xpY3kvc2hvdWxkLW9wZW4tZXh0ZXJuYWwtdXJscy9z
dWJmcmFtZS1uYXZpZ2F0ZWQtcHJvZ3JhbWF0aWNhbGx5LWJ5LW1haW4tZnJhbWUtdmlhLW1ldGhv
ZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9pb3Mtd2sxL1Rlc3RFeHBlY3RhdGlv
bnM6CisgICAgICAgICogcGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRpb25zOgorICAgICAg
ICAqIHBsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRpb25zOgorICAgICAgICAqIHBsYXRmb3JtL3dp
bmNhaXJvL1Rlc3RFeHBlY3RhdGlvbnM6CisKIDIwMjEtMTAtMTkgIEFudG9pbmUgUXVpbnQgIDxn
cmFvdXRzQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUkVHUkVTU0lPTihyMjg0MzEzKTogOjptYXJr
ZXIgYWNjZWxlcmF0ZWQgYW5pbWF0aW9ucyBhcmUgYnJva2VuCkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24tcGFyZW50LWV4cGVjdGVkLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1l
LW5hdmlnYXRpb24tcGFyZW50LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMjg0NDY3KQorKysgTGF5
b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXBhcmVudC1l
eHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsNCArMSw5IEBACi1UaGlzIHRlc3QgdmVy
aWZpZXMgdGhhdCBhIHNhbmRib3hlZCBJRnJhbWUgd2l0aCB0aGUga2V5d29yZHMgYWxsb3ctc2Ny
aXB0cyBhbmQgYWxsb3ctc2FtZS1vcmlnaW4gaXMgYWxsb3dlZCB0byBuYXZpZ2F0ZSBhbiBhbmNl
c3RvciBpbiB0aGUgZnJhbWUgdHJlZSBieSBhc3NpZ25pbmcgdGhlIGxvY2F0aW9uIGF0dHJpYnV0
ZS4KK0NPTlNPTEUgTUVTU0FHRTogVW5zYWZlIEphdmFTY3JpcHQgYXR0ZW1wdCB0byBpbml0aWF0
ZSBuYXZpZ2F0aW9uIGZvciBmcmFtZSB3aXRoIFVSTCAnc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0
aW9uLXNvdXJjZS5odG1sJy4gVGhlIGZyYW1lIGF0dGVtcHRpbmcgbmF2aWdhdGlvbiBpcyBzYW5k
Ym94ZWQsIGFuZCBpcyB0aGVyZWZvcmUgZGlzYWxsb3dlZCBmcm9tIG5hdmlnYXRpbmcgaXRzIGFu
Y2VzdG9ycy4KKworQ09OU09MRSBNRVNTQUdFOiBTZWN1cml0eUVycm9yOiBUaGUgb3BlcmF0aW9u
IGlzIGluc2VjdXJlLgorVGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQgYSBzYW5kYm94ZWQgSUZyYW1l
IGNhbm5vdCBuYXZpZ2F0ZSBhbiBhbmNlc3RvciBpbiB0aGUgZnJhbWUgdHJlZSBieSBhc3NpZ25p
bmcgdGhlIGxvY2F0aW9uIGF0dHJpYnV0ZS4KKworVGhpcyBpcyBkb25lIGJ5IGxvYWRpbmcgdGVu
IG5vbi1zYW5kYm94ZWQgSUZyYW1lcywgYW5kIGEgc2luZ2xlIHNhbmRib3hlZCBvbmUuIEV4cGVj
dCB0ZW4gZnJhbWVzIHRvIGJlIG5hdmlnYXRlZCwgYnV0IHRoZSBzYW5kYm94ZWQgb25lIHRvIG5v
dCBiZSBvbmUgb2YgdGhlbS4KIAogVGhpcyB0ZXN0IHdpbGwgcHJpbnQgIlBBU1MiIG9uIHN1Y2Nl
c3MuCiAKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtbmF2
aWdhdGlvbi1wYXJlbnQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1l
cy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24tcGFyZW50Lmh0bWwJKHJldmlzaW9uIDI4NDQ2
NykKKysrIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlv
bi1wYXJlbnQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTMsOSArMTMsOSBAQCBmdW5jdGlvbiBj
aGVja1Jlc3VsdHMoKQogewogICAgIHZhciB0ZXN0U3RhdHVzID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ3Rlc3RTdGF0dXMnKTsKIAotICAgIGlmIChzZWxmLm5hdmlnYXRlZC5sb2NhdGlvbi5o
cmVmLmluZGV4T2YoJ3BhcmVudC5odG1sJykgIT0gLTEpCi0gICAgICAgIHRlc3RTdGF0dXMuaW5u
ZXJIVE1MID0gJ0ZBSUw6IHNhbmRib3hlZCBmcmFtZSBjb3VsZG5cJ3QgbmF2aWdhdGUnOwotICAg
IGVsc2UgaWYgKG5hdmlnYXRlZEZyYW1lcyA9PSAxMSkKKyAgICBpZiAoc2VsZi5uYXZpZ2F0ZWQu
bG9jYXRpb24uaHJlZi5pbmRleE9mKCdwYXJlbnQuaHRtbCcpID09IC0xKQorICAgICAgICB0ZXN0
U3RhdHVzLmlubmVySFRNTCA9ICdGQUlMOiBkaXNhbGxvd2VkIGZyYW1lIG5hdmlnYXRlZCc7Cisg
ICAgZWxzZSBpZiAobmF2aWdhdGVkRnJhbWVzID09IDEwKQogICAgICAgICB0ZXN0U3RhdHVzLmlu
bmVySFRNTCA9ICdQQVNTJzsKICAgICBlbHNlCiAgICAgICAgIHRlc3RTdGF0dXMuaW5uZXJIVE1M
ID0gJ0ZBSUw6IGZyYW1lcyBub3QgbmF2aWdhdGVkIHByb3Blcmx5JzsKQEAgLTI4LDcgKzI4LDcg
QEAgZnVuY3Rpb24gY291bnRGcmFtZSgpCiB7CiAgICAgKytuYXZpZ2F0ZWRGcmFtZXM7CiAKLSAg
ICBpZiAobmF2aWdhdGVkRnJhbWVzID09IDExKQorICAgIGlmIChuYXZpZ2F0ZWRGcmFtZXMgPT0g
MTApCiAgICAgICAgIGNoZWNrUmVzdWx0cygpOwogfQogCkBAIC0zNywxMCArMzcsMTMgQEAgZnVu
Y3Rpb24gY291bnRGcmFtZSgpCiAKIDxib2R5PgogCi0gICAgPHA+VGhpcyB0ZXN0IHZlcmlmaWVz
IHRoYXQgYSBzYW5kYm94ZWQgSUZyYW1lIHdpdGggdGhlIGtleXdvcmRzCi0gICAgYWxsb3ctc2Ny
aXB0cyBhbmQgYWxsb3ctc2FtZS1vcmlnaW4gaXMgYWxsb3dlZCB0byBuYXZpZ2F0ZSBhbiBhbmNl
c3RvcgorICAgIDxwPlRoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IGEgc2FuZGJveGVkIElGcmFtZSBj
YW5ub3QgbmF2aWdhdGUgYW4gYW5jZXN0b3IKICAgICBpbiB0aGUgZnJhbWUgdHJlZSBieSBhc3Np
Z25pbmcgdGhlIGxvY2F0aW9uIGF0dHJpYnV0ZS48L3A+CiAKKyAgICA8cD5UaGlzIGlzIGRvbmUg
YnkgbG9hZGluZyB0ZW4gbm9uLXNhbmRib3hlZCBJRnJhbWVzLCBhbmQgYSBzaW5nbGUKKyAgICBz
YW5kYm94ZWQgb25lLiBFeHBlY3QgdGVuIGZyYW1lcyB0byBiZSBuYXZpZ2F0ZWQsIGJ1dCB0aGUg
c2FuZGJveGVkCisgICAgb25lIHRvIDxiPm5vdDwvYj4gYmUgb25lIG9mIHRoZW0uPC9wPgorICAg
IAogICAgIDxwPlRoaXMgdGVzdCB3aWxsIHByaW50ICZxdW90O1BBU1MmcXVvdDsgb24gc3VjY2Vz
cy48L3A+CiAKICAgICA8aWZyYW1lIHNyYz0icmVzb3VyY2VzL25vbi1zYW5kYm94ZWQtaWZyYW1l
LW5hdmlnYXRpb24uaHRtbCI+PC9pZnJhbWU+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L25hdmlnYXRpb24tcG9saWN5L21haW4tZnJhbWUtbmF2aWdhdGVkLXByb2dyYW1hdGljYWxseS1i
eS1zdWJmcmFtZS1jcm9zcy1vcmlnaW4tZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2h0dHAvdGVzdHMvbmF2aWdhdGlvbi1wb2xpY3kvbWFpbi1mcmFtZS1uYXZpZ2F0ZWQt
cHJvZ3JhbWF0aWNhbGx5LWJ5LXN1YmZyYW1lLWNyb3NzLW9yaWdpbi1leHBlY3RlZC50eHQJKG5v
bmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9uYXZpZ2F0aW9uLXBvbGljeS9t
YWluLWZyYW1lLW5hdmlnYXRlZC1wcm9ncmFtYXRpY2FsbHktYnktc3ViZnJhbWUtY3Jvc3Mtb3Jp
Z2luLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDcgQEAKKyAtIGRlY2lk
ZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24KKzxOU1VSTFJlcXVlc3QgVVJMIGh0dHA6Ly8xMjcu
MC4wLjE6ODAwMC9uYXZpZ2F0aW9uLXBvbGljeS9yZXNvdXJjZXMvbWFpbi1mcmFtZS13aXRoLXN1
YmZyYW1lLXByb2dyYW1hdGljYWxseS1uYXZpZ2F0ZXMtbWFpbi1jcm9zcy1vcmlnaW4uaHRtbCwg
bWFpbiBkb2N1bWVudCBVUkwgaHR0cDovLzEyNy4wLjAuMTo4MDAwL25hdmlnYXRpb24tcG9saWN5
L3Jlc291cmNlcy9tYWluLWZyYW1lLXdpdGgtc3ViZnJhbWUtcHJvZ3JhbWF0aWNhbGx5LW5hdmln
YXRlcy1tYWluLWNyb3NzLW9yaWdpbi5odG1sLCBodHRwIG1ldGhvZCBHRVQ+IGlzIG1haW4gZnJh
bWUgLSB5ZXMgc2hvdWxkIG9wZW4gVVJMcyBleHRlcm5hbGx5IC0geWVzCisgLSBkZWNpZGVQb2xp
Y3lGb3JOYXZpZ2F0aW9uQWN0aW9uCis8TlNVUkxSZXF1ZXN0IFVSTCBodHRwOi8vbG9jYWxob3N0
OjgwODAvbmF2aWdhdGlvbi1wb2xpY3kvcmVzb3VyY2VzL3Byb2dyYW1hdGljYWxseS1uYXZpZ2F0
ZS10by1ub3RpZnktZG9uZS10YXJnZXQtdG9wLWNyb3NzLW9yaWdpbi5odG1sLCBtYWluIGRvY3Vt
ZW50IFVSTCBodHRwOi8vMTI3LjAuMC4xOjgwMDAvbmF2aWdhdGlvbi1wb2xpY3kvcmVzb3VyY2Vz
L21haW4tZnJhbWUtd2l0aC1zdWJmcmFtZS1wcm9ncmFtYXRpY2FsbHktbmF2aWdhdGVzLW1haW4t
Y3Jvc3Mtb3JpZ2luLmh0bWwsIGh0dHAgbWV0aG9kIEdFVD4gaXMgbWFpbiBmcmFtZSAtIG5vIHNo
b3VsZCBvcGVuIFVSTHMgZXh0ZXJuYWxseSAtIG5vCisgLSBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0
aW9uQWN0aW9uCis8TlNVUkxSZXF1ZXN0IFVSTCBodHRwOi8vMTI3LjAuMC4xOjgwMDAvbmF2aWdh
dGlvbi1wb2xpY3kvcmVzb3VyY2VzL25vdGlmeS1kb25lLmh0bWwsIG1haW4gZG9jdW1lbnQgVVJM
IGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9uYXZpZ2F0aW9uLXBvbGljeS9yZXNvdXJjZXMvbm90aWZ5
LWRvbmUuaHRtbCwgaHR0cCBtZXRob2QgR0VUPiBpcyBtYWluIGZyYW1lIC0geWVzIHNob3VsZCBv
cGVuIFVSTHMgZXh0ZXJuYWxseSAtIG5vCisKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMv
bmF2aWdhdGlvbi1wb2xpY3kvbWFpbi1mcmFtZS1uYXZpZ2F0ZWQtcHJvZ3JhbWF0aWNhbGx5LWJ5
LXN1YmZyYW1lLWNyb3NzLW9yaWdpbi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0
dHAvdGVzdHMvbmF2aWdhdGlvbi1wb2xpY3kvbWFpbi1mcmFtZS1uYXZpZ2F0ZWQtcHJvZ3JhbWF0
aWNhbGx5LWJ5LXN1YmZyYW1lLWNyb3NzLW9yaWdpbi5odG1sCShub25leGlzdGVudCkKKysrIExh
eW91dFRlc3RzL2h0dHAvdGVzdHMvbmF2aWdhdGlvbi1wb2xpY3kvbWFpbi1mcmFtZS1uYXZpZ2F0
ZWQtcHJvZ3JhbWF0aWNhbGx5LWJ5LXN1YmZyYW1lLWNyb3NzLW9yaWdpbi5odG1sCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsMTMgQEAKKzxzY3JpcHQ+CisKK2lmICh3aW5kb3cudGVzdFJ1bm5l
cikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIuZHVtcFBv
bGljeURlbGVnYXRlQ2FsbGJhY2tzKCk7CisgICAgdGVzdFJ1bm5lci5xdWV1ZUxvYWQoInJlc291
cmNlcy9tYWluLWZyYW1lLXdpdGgtc3ViZnJhbWUtcHJvZ3JhbWF0aWNhbGx5LW5hdmlnYXRlcy1t
YWluLWNyb3NzLW9yaWdpbi5odG1sIiwgIiIsIHRydWUpOworfQorCis8L3NjcmlwdD4KK1RoaXMg
cGFnZSBoYXMgZG9lcyBub3QgaGF2ZSB0aGUgInNob3VsZCBvcGVuIGV4dGVybmFsIFVSTHMiIGZs
YWcgc2V0Ljxicj4KK0l0IG5hdmlnYXRlcyB0byBhIDJuZCBwYWdlIHRoYXQgZG9lcyBoYXZlIHRo
ZSBmbGFnIHNldC48YnI+CitUaGF0IDJuZCBwYWdlIGNvbnRhaW5zIGFuIGlmcmFtZSB3aGljaCBw
cm9ncmFtYXRpY2FsbHkgbmF2aWdhdGVzIHRoZSBtYWluIGZyYW1lIHRvIGEgM3JkIHBhZ2UuPGJy
PgorVGhlICJzaG91bGQgb3BlbiBleHRlcm5hbCBVUkxzIiBmbGFnIHNob3VsZCBiZSB1bnNldCBi
ZWNhdXNlIHRoZSBzdWJmcmFtZS0+bWFpbiBmcmFtZSBuYXZpZ2F0aW9uIHdhcyBwcm9ncmFtYXRp
Yy48YnI+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL25hdmlnYXRpb24tcG9saWN5L3Jl
c291cmNlcy9tYWluLWZyYW1lLXdpdGgtc3ViZnJhbWUtcHJvZ3JhbWF0aWNhbGx5LW5hdmlnYXRl
cy1tYWluLWNyb3NzLW9yaWdpbi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAv
dGVzdHMvbmF2aWdhdGlvbi1wb2xpY3kvcmVzb3VyY2VzL21haW4tZnJhbWUtd2l0aC1zdWJmcmFt
ZS1wcm9ncmFtYXRpY2FsbHktbmF2aWdhdGVzLW1haW4tY3Jvc3Mtb3JpZ2luLmh0bWwJKG5vbmV4
aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9uYXZpZ2F0aW9uLXBvbGljeS9yZXNv
dXJjZXMvbWFpbi1mcmFtZS13aXRoLXN1YmZyYW1lLXByb2dyYW1hdGljYWxseS1uYXZpZ2F0ZXMt
bWFpbi1jcm9zcy1vcmlnaW4uaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDYgQEAKKzxz
Y3JpcHQ+CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxE
b25lKCk7Cis8L3NjcmlwdD4KKworPGlmcmFtZSBzcmM9Imh0dHA6Ly9sb2NhbGhvc3Q6ODA4MC9u
YXZpZ2F0aW9uLXBvbGljeS9yZXNvdXJjZXMvcHJvZ3JhbWF0aWNhbGx5LW5hdmlnYXRlLXRvLW5v
dGlmeS1kb25lLXRhcmdldC10b3AtY3Jvc3Mtb3JpZ2luLmh0bWwiPjwvaWZyYW1lPgpJbmRleDog
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9uYXZpZ2F0aW9uLXBvbGljeS9yZXNvdXJjZXMvbm90aWZ5
LWRvbmUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL25hdmlnYXRp
b24tcG9saWN5L3Jlc291cmNlcy9ub3RpZnktZG9uZS5odG1sCShub25leGlzdGVudCkKKysrIExh
eW91dFRlc3RzL2h0dHAvdGVzdHMvbmF2aWdhdGlvbi1wb2xpY3kvcmVzb3VyY2VzL25vdGlmeS1k
b25lLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0IEBACis8c2NyaXB0PgoraWYgKHdp
bmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworPC9zY3JpcHQ+
CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL25hdmlnYXRpb24tcG9saWN5L3Jlc291cmNl
cy9wcm9ncmFtYXRpY2FsbHktbmF2aWdhdGUtdG8tbm90aWZ5LWRvbmUtdGFyZ2V0LXRvcC1jcm9z
cy1vcmlnaW4uaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL25hdmln
YXRpb24tcG9saWN5L3Jlc291cmNlcy9wcm9ncmFtYXRpY2FsbHktbmF2aWdhdGUtdG8tbm90aWZ5
LWRvbmUtdGFyZ2V0LXRvcC1jcm9zcy1vcmlnaW4uaHRtbAkobm9uZXhpc3RlbnQpCisrKyBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL25hdmlnYXRpb24tcG9saWN5L3Jlc291cmNlcy9wcm9ncmFtYXRp
Y2FsbHktbmF2aWdhdGUtdG8tbm90aWZ5LWRvbmUtdGFyZ2V0LXRvcC1jcm9zcy1vcmlnaW4uaHRt
bAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE0IEBACis8c2NyaXB0PgorCitpZiAod2luZG93
LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgCitmdW5j
dGlvbiBsb2FkZWQoKQoreworICAgIHdpbmRvdy50b3AubG9jYXRpb24gPSAiaHR0cDovLzEyNy4w
LjAuMTo4MDAwL25hdmlnYXRpb24tcG9saWN5L3Jlc291cmNlcy9ub3RpZnktZG9uZS5odG1sIjsK
K30KKworPC9zY3JpcHQ+Cis8Ym9keSBvbmxvYWQ9ImxvYWRlZCgpOyI+CitUaGlzIHBhZ2UgZG9l
cyBhIGphdmFzY3JpcHQgY2xpZW50IHJlZGlyZWN0IHRvIG5vdGlmeS1kb25lLmh0bWwgaW4gdGhl
IG1haW4gZnJhbWUuCis8L2JvZHk+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3Vy
aXR5L2ZyYW1lTmF2aWdhdGlvbi9jb250ZXh0LWZvci1sb2NhdGlvbi1hc3NpZ24tZXhwZWN0ZWQu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvZnJhbWVO
YXZpZ2F0aW9uL2NvbnRleHQtZm9yLWxvY2F0aW9uLWFzc2lnbi1leHBlY3RlZC50eHQJKHJldmlz
aW9uIDI4NDQ2NykKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvZnJhbWVOYXZp
Z2F0aW9uL2NvbnRleHQtZm9yLWxvY2F0aW9uLWFzc2lnbi1leHBlY3RlZC50eHQJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMiArMSwyIEBACi1kb2N1bWVudC5yZWZlcnJlciA9Citkb2N1bWVudC5yZWZl
cnJlciA9IGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS9mcmFtZU5hdmlnYXRpb24vY29u
dGV4dC1mb3ItbG9jYXRpb24tYXNzaWduLmh0bWwKIApJbmRleDogTGF5b3V0VGVzdHMvbG9hZGVy
L25hdmlnYXRpb24tcG9saWN5L3Nob3VsZC1vcGVuLWV4dGVybmFsLXVybHMvbWFpbi1mcmFtZS1u
YXZpZ2F0ZWQtcHJvZ3JhbWF0aWNhbGx5LWJ5LXN1YmZyYW1lLWV4cGVjdGVkLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9sb2FkZXIvbmF2aWdhdGlvbi1wb2xpY3kvc2hvdWxkLW9wZW4t
ZXh0ZXJuYWwtdXJscy9tYWluLWZyYW1lLW5hdmlnYXRlZC1wcm9ncmFtYXRpY2FsbHktYnktc3Vi
ZnJhbWUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyODQ0NjcpCisrKyBMYXlvdXRUZXN0cy9sb2Fk
ZXIvbmF2aWdhdGlvbi1wb2xpY3kvc2hvdWxkLW9wZW4tZXh0ZXJuYWwtdXJscy9tYWluLWZyYW1l
LW5hdmlnYXRlZC1wcm9ncmFtYXRpY2FsbHktYnktc3ViZnJhbWUtZXhwZWN0ZWQudHh0CSh3b3Jr
aW5nIGNvcHkpCkBAIC0zLDUgKzMsNSBAQAogIC0gZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFj
dGlvbgogPE5TVVJMUmVxdWVzdCBVUkwgcHJvZ3JhbWF0aWNhbGx5LW5hdmlnYXRlLXRvLW5vdGlm
eS1kb25lLXRhcmdldC10b3AuaHRtbCwgbWFpbiBkb2N1bWVudCBVUkwgbWFpbi1mcmFtZS13aXRo
LXN1YmZyYW1lLXByb2dyYW1hdGljYWxseS1uYXZpZ2F0ZXMtbWFpbi5odG1sLCBodHRwIG1ldGhv
ZCBHRVQ+IGlzIG1haW4gZnJhbWUgLSBubyBzaG91bGQgb3BlbiBVUkxzIGV4dGVybmFsbHkgLSBu
bwogIC0gZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbgotPE5TVVJMUmVxdWVzdCBVUkwg
bm90aWZ5LWRvbmUuaHRtbCwgbWFpbiBkb2N1bWVudCBVUkwgbm90aWZ5LWRvbmUuaHRtbCwgaHR0
cCBtZXRob2QgR0VUPiBpcyBtYWluIGZyYW1lIC0geWVzIHNob3VsZCBvcGVuIFVSTHMgZXh0ZXJu
YWxseSAtIG5vCis8TlNVUkxSZXF1ZXN0IFVSTCBub3RpZnktZG9uZS5odG1sLCBtYWluIGRvY3Vt
ZW50IFVSTCBub3RpZnktZG9uZS5odG1sLCBodHRwIG1ldGhvZCBHRVQ+IGlzIG1haW4gZnJhbWUg
LSB5ZXMgc2hvdWxkIG9wZW4gVVJMcyBleHRlcm5hbGx5IC0geWVzCiAKSW5kZXg6IExheW91dFRl
c3RzL2xvYWRlci9uYXZpZ2F0aW9uLXBvbGljeS9zaG91bGQtb3Blbi1leHRlcm5hbC11cmxzL21h
aW4tZnJhbWUtbmF2aWdhdGVkLXByb2dyYW1hdGljYWxseS1ieS1zdWJmcmFtZS12aWEtbWV0aG9k
LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9sb2FkZXIvbmF2aWdhdGlv
bi1wb2xpY3kvc2hvdWxkLW9wZW4tZXh0ZXJuYWwtdXJscy9tYWluLWZyYW1lLW5hdmlnYXRlZC1w
cm9ncmFtYXRpY2FsbHktYnktc3ViZnJhbWUtdmlhLW1ldGhvZC1leHBlY3RlZC50eHQJKG5vbmV4
aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvbG9hZGVyL25hdmlnYXRpb24tcG9saWN5L3Nob3VsZC1v
cGVuLWV4dGVybmFsLXVybHMvbWFpbi1mcmFtZS1uYXZpZ2F0ZWQtcHJvZ3JhbWF0aWNhbGx5LWJ5
LXN1YmZyYW1lLXZpYS1tZXRob2QtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsNyBAQAorIC0gZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbgorPE5TVVJMUmVxdWVz
dCBVUkwgcmVzb3VyY2VzL21haW4tZnJhbWUtd2l0aC1zdWJmcmFtZS1wcm9ncmFtYXRpY2FsbHkt
bmF2aWdhdGVzLW1haW4tdmlhLW1ldGhvZC5odG1sLCBtYWluIGRvY3VtZW50IFVSTCByZXNvdXJj
ZXMvbWFpbi1mcmFtZS13aXRoLXN1YmZyYW1lLXByb2dyYW1hdGljYWxseS1uYXZpZ2F0ZXMtbWFp
bi12aWEtbWV0aG9kLmh0bWwsIGh0dHAgbWV0aG9kIEdFVD4gaXMgbWFpbiBmcmFtZSAtIHllcyBz
aG91bGQgb3BlbiBVUkxzIGV4dGVybmFsbHkgLSB5ZXMKKyAtIGRlY2lkZVBvbGljeUZvck5hdmln
YXRpb25BY3Rpb24KKzxOU1VSTFJlcXVlc3QgVVJMIHByb2dyYW1hdGljYWxseS1uYXZpZ2F0ZS10
by1ub3RpZnktZG9uZS10YXJnZXQtdG9wLXZpYS1tZXRob2QuaHRtbCwgbWFpbiBkb2N1bWVudCBV
UkwgbWFpbi1mcmFtZS13aXRoLXN1YmZyYW1lLXByb2dyYW1hdGljYWxseS1uYXZpZ2F0ZXMtbWFp
bi12aWEtbWV0aG9kLmh0bWwsIGh0dHAgbWV0aG9kIEdFVD4gaXMgbWFpbiBmcmFtZSAtIG5vIHNo
b3VsZCBvcGVuIFVSTHMgZXh0ZXJuYWxseSAtIG5vCisgLSBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0
aW9uQWN0aW9uCis8TlNVUkxSZXF1ZXN0IFVSTCBub3RpZnktZG9uZS5odG1sLCBtYWluIGRvY3Vt
ZW50IFVSTCBub3RpZnktZG9uZS5odG1sLCBodHRwIG1ldGhvZCBHRVQ+IGlzIG1haW4gZnJhbWUg
LSB5ZXMgc2hvdWxkIG9wZW4gVVJMcyBleHRlcm5hbGx5IC0geWVzCisKSW5kZXg6IExheW91dFRl
c3RzL2xvYWRlci9uYXZpZ2F0aW9uLXBvbGljeS9zaG91bGQtb3Blbi1leHRlcm5hbC11cmxzL21h
aW4tZnJhbWUtbmF2aWdhdGVkLXByb2dyYW1hdGljYWxseS1ieS1zdWJmcmFtZS12aWEtbWV0aG9k
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvbG9hZGVyL25hdmlnYXRpb24tcG9saWN5
L3Nob3VsZC1vcGVuLWV4dGVybmFsLXVybHMvbWFpbi1mcmFtZS1uYXZpZ2F0ZWQtcHJvZ3JhbWF0
aWNhbGx5LWJ5LXN1YmZyYW1lLXZpYS1tZXRob2QuaHRtbAkobm9uZXhpc3RlbnQpCisrKyBMYXlv
dXRUZXN0cy9sb2FkZXIvbmF2aWdhdGlvbi1wb2xpY3kvc2hvdWxkLW9wZW4tZXh0ZXJuYWwtdXJs
cy9tYWluLWZyYW1lLW5hdmlnYXRlZC1wcm9ncmFtYXRpY2FsbHktYnktc3ViZnJhbWUtdmlhLW1l
dGhvZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTMgQEAKKzxzY3JpcHQ+CisKK2lm
ICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAg
IHRlc3RSdW5uZXIuZHVtcFBvbGljeURlbGVnYXRlQ2FsbGJhY2tzKCk7CisgICAgdGVzdFJ1bm5l
ci5xdWV1ZUxvYWQoInJlc291cmNlcy9tYWluLWZyYW1lLXdpdGgtc3ViZnJhbWUtcHJvZ3JhbWF0
aWNhbGx5LW5hdmlnYXRlcy1tYWluLXZpYS1tZXRob2QuaHRtbCIsICIiLCB0cnVlKTsKK30KKwor
PC9zY3JpcHQ+CitUaGlzIHBhZ2UgaGFzIGRvZXMgbm90IGhhdmUgdGhlICJzaG91bGQgb3BlbiBl
eHRlcm5hbCBVUkxzIiBmbGFnIHNldC48YnI+CitJdCBuYXZpZ2F0ZXMgdG8gYSAybmQgcGFnZSB0
aGF0IGRvZXMgaGF2ZSB0aGUgZmxhZyBzZXQuPGJyPgorVGhhdCAybmQgcGFnZSBjb250YWlucyBh
biBpZnJhbWUgd2hpY2ggcHJvZ3JhbWF0aWNhbGx5IG5hdmlnYXRlcyB0aGUgbWFpbiBmcmFtZSB0
byBhIDNyZCBwYWdlLjxicj4KK1RoZSAic2hvdWxkIG9wZW4gZXh0ZXJuYWwgVVJMcyIgZmxhZyBz
aG91bGQgYmUgdW5zZXQgYmVjYXVzZSB0aGUgc3ViZnJhbWUtPm1haW4gZnJhbWUgbmF2aWdhdGlv
biB3YXMgcHJvZ3JhbWF0aWMuPGJyPgpJbmRleDogTGF5b3V0VGVzdHMvbG9hZGVyL25hdmlnYXRp
b24tcG9saWN5L3Nob3VsZC1vcGVuLWV4dGVybmFsLXVybHMvbWFpbi1mcmFtZS1uYXZpZ2F0ZWQt
cHJvZ3JhbWF0aWNhbGx5LWJ5LXN1YmZyYW1lLXdpdGhvdXQtZmxhZy1leHBlY3RlZC50eHQKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvbG9hZGVyL25hdmlnYXRpb24tcG9saWN5L3Nob3VsZC1v
cGVuLWV4dGVybmFsLXVybHMvbWFpbi1mcmFtZS1uYXZpZ2F0ZWQtcHJvZ3JhbWF0aWNhbGx5LWJ5
LXN1YmZyYW1lLXdpdGhvdXQtZmxhZy1leHBlY3RlZC50eHQJKG5vbmV4aXN0ZW50KQorKysgTGF5
b3V0VGVzdHMvbG9hZGVyL25hdmlnYXRpb24tcG9saWN5L3Nob3VsZC1vcGVuLWV4dGVybmFsLXVy
bHMvbWFpbi1mcmFtZS1uYXZpZ2F0ZWQtcHJvZ3JhbWF0aWNhbGx5LWJ5LXN1YmZyYW1lLXdpdGhv
dXQtZmxhZy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3IEBACisgLSBk
ZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uCis8TlNVUkxSZXF1ZXN0IFVSTCByZXNvdXJj
ZXMvbWFpbi1mcmFtZS13aXRoLXN1YmZyYW1lLXByb2dyYW1hdGljYWxseS1uYXZpZ2F0ZXMtbWFp
bi5odG1sLCBtYWluIGRvY3VtZW50IFVSTCByZXNvdXJjZXMvbWFpbi1mcmFtZS13aXRoLXN1YmZy
YW1lLXByb2dyYW1hdGljYWxseS1uYXZpZ2F0ZXMtbWFpbi5odG1sLCBodHRwIG1ldGhvZCBHRVQ+
IGlzIG1haW4gZnJhbWUgLSB5ZXMgc2hvdWxkIG9wZW4gVVJMcyBleHRlcm5hbGx5IC0gbm8KKyAt
IGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24KKzxOU1VSTFJlcXVlc3QgVVJMIHByb2dy
YW1hdGljYWxseS1uYXZpZ2F0ZS10by1ub3RpZnktZG9uZS10YXJnZXQtdG9wLmh0bWwsIG1haW4g
ZG9jdW1lbnQgVVJMIG1haW4tZnJhbWUtd2l0aC1zdWJmcmFtZS1wcm9ncmFtYXRpY2FsbHktbmF2
aWdhdGVzLW1haW4uaHRtbCwgaHR0cCBtZXRob2QgR0VUPiBpcyBtYWluIGZyYW1lIC0gbm8gc2hv
dWxkIG9wZW4gVVJMcyBleHRlcm5hbGx5IC0gbm8KKyAtIGRlY2lkZVBvbGljeUZvck5hdmlnYXRp
b25BY3Rpb24KKzxOU1VSTFJlcXVlc3QgVVJMIG5vdGlmeS1kb25lLmh0bWwsIG1haW4gZG9jdW1l
bnQgVVJMIG5vdGlmeS1kb25lLmh0bWwsIGh0dHAgbWV0aG9kIEdFVD4gaXMgbWFpbiBmcmFtZSAt
IHllcyBzaG91bGQgb3BlbiBVUkxzIGV4dGVybmFsbHkgLSBubworCkluZGV4OiBMYXlvdXRUZXN0
cy9sb2FkZXIvbmF2aWdhdGlvbi1wb2xpY3kvc2hvdWxkLW9wZW4tZXh0ZXJuYWwtdXJscy9tYWlu
LWZyYW1lLW5hdmlnYXRlZC1wcm9ncmFtYXRpY2FsbHktYnktc3ViZnJhbWUtd2l0aG91dC1mbGFn
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvbG9hZGVyL25hdmlnYXRpb24tcG9saWN5
L3Nob3VsZC1vcGVuLWV4dGVybmFsLXVybHMvbWFpbi1mcmFtZS1uYXZpZ2F0ZWQtcHJvZ3JhbWF0
aWNhbGx5LWJ5LXN1YmZyYW1lLXdpdGhvdXQtZmxhZy5odG1sCShub25leGlzdGVudCkKKysrIExh
eW91dFRlc3RzL2xvYWRlci9uYXZpZ2F0aW9uLXBvbGljeS9zaG91bGQtb3Blbi1leHRlcm5hbC11
cmxzL21haW4tZnJhbWUtbmF2aWdhdGVkLXByb2dyYW1hdGljYWxseS1ieS1zdWJmcmFtZS13aXRo
b3V0LWZsYWcuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEzIEBACis8c2NyaXB0Pgor
CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsK
KyAgICB0ZXN0UnVubmVyLmR1bXBQb2xpY3lEZWxlZ2F0ZUNhbGxiYWNrcygpOworICAgIHRlc3RS
dW5uZXIucXVldWVMb2FkKCJyZXNvdXJjZXMvbWFpbi1mcmFtZS13aXRoLXN1YmZyYW1lLXByb2dy
YW1hdGljYWxseS1uYXZpZ2F0ZXMtbWFpbi5odG1sIik7Cit9CisKKzwvc2NyaXB0PgorVGhpcyBw
YWdlIGhhcyBkb2VzIG5vdCBoYXZlIHRoZSAic2hvdWxkIG9wZW4gZXh0ZXJuYWwgVVJMcyIgZmxh
ZyBzZXQuPGJyPgorSXQgbmF2aWdhdGVzIHRvIGEgMm5kIHBhZ2UgdGhhdCBkb2VzIGhhdmUgdGhl
IGZsYWcgc2V0Ljxicj4KK1RoYXQgMm5kIHBhZ2UgY29udGFpbnMgYW4gaWZyYW1lIHdoaWNoIHBy
b2dyYW1hdGljYWxseSBuYXZpZ2F0ZXMgdGhlIG1haW4gZnJhbWUgdG8gYSAzcmQgcGFnZS48YnI+
CitUaGUgInNob3VsZCBvcGVuIGV4dGVybmFsIFVSTHMiIGZsYWcgc2hvdWxkIGJlIHVuc2V0IGJl
Y2F1c2UgdGhlIHN1YmZyYW1lLT5tYWluIGZyYW1lIG5hdmlnYXRpb24gd2FzIHByb2dyYW1hdGlj
Ljxicj4KSW5kZXg6IExheW91dFRlc3RzL2xvYWRlci9uYXZpZ2F0aW9uLXBvbGljeS9zaG91bGQt
b3Blbi1leHRlcm5hbC11cmxzL3N1YmZyYW1lLW5hdmlnYXRlZC1wcm9ncmFtYXRpY2FsbHktYnkt
bWFpbi1mcmFtZS1uby10b3BDYWxsRnJhbWUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2xvYWRlci9uYXZpZ2F0aW9uLXBvbGljeS9zaG91bGQtb3Blbi1leHRlcm5hbC11
cmxzL3N1YmZyYW1lLW5hdmlnYXRlZC1wcm9ncmFtYXRpY2FsbHktYnktbWFpbi1mcmFtZS1uby10
b3BDYWxsRnJhbWUtZXhwZWN0ZWQudHh0CShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2xv
YWRlci9uYXZpZ2F0aW9uLXBvbGljeS9zaG91bGQtb3Blbi1leHRlcm5hbC11cmxzL3N1YmZyYW1l
LW5hdmlnYXRlZC1wcm9ncmFtYXRpY2FsbHktYnktbWFpbi1mcmFtZS1uby10b3BDYWxsRnJhbWUt
ZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNyBAQAorIC0gZGVjaWRlUG9s
aWN5Rm9yTmF2aWdhdGlvbkFjdGlvbgorPE5TVVJMUmVxdWVzdCBVUkwgcmVzb3VyY2VzL21haW4t
ZnJhbWUtd2l0aC1zdWJmcmFtZS1tYWluLXByb2dyYW1hdGljYWxseS1uYXZpZ2F0ZXMtc3ViZnJh
bWUtbm8tdG9wQ2FsbEZyYW1lLmh0bWwsIG1haW4gZG9jdW1lbnQgVVJMIHJlc291cmNlcy9tYWlu
LWZyYW1lLXdpdGgtc3ViZnJhbWUtbWFpbi1wcm9ncmFtYXRpY2FsbHktbmF2aWdhdGVzLXN1YmZy
YW1lLW5vLXRvcENhbGxGcmFtZS5odG1sLCBodHRwIG1ldGhvZCBHRVQ+IGlzIG1haW4gZnJhbWUg
LSB5ZXMgc2hvdWxkIG9wZW4gVVJMcyBleHRlcm5hbGx5IC0geWVzCisgLSBkZWNpZGVQb2xpY3lG
b3JOYXZpZ2F0aW9uQWN0aW9uCis8TlNVUkxSZXF1ZXN0IFVSTCBhYm91dDpzcmNkb2MsIG1haW4g
ZG9jdW1lbnQgVVJMIG1haW4tZnJhbWUtd2l0aC1zdWJmcmFtZS1tYWluLXByb2dyYW1hdGljYWxs
eS1uYXZpZ2F0ZXMtc3ViZnJhbWUtbm8tdG9wQ2FsbEZyYW1lLmh0bWwsIGh0dHAgbWV0aG9kIEdF
VD4gaXMgbWFpbiBmcmFtZSAtIG5vIHNob3VsZCBvcGVuIFVSTHMgZXh0ZXJuYWxseSAtIG5vCisg
LSBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uCis8TlNVUkxSZXF1ZXN0IFVSTCBub3Rp
ZnktZG9uZS5odG1sLCBtYWluIGRvY3VtZW50IFVSTCBtYWluLWZyYW1lLXdpdGgtc3ViZnJhbWUt
bWFpbi1wcm9ncmFtYXRpY2FsbHktbmF2aWdhdGVzLXN1YmZyYW1lLW5vLXRvcENhbGxGcmFtZS5o
dG1sLCBodHRwIG1ldGhvZCBHRVQ+IGlzIG1haW4gZnJhbWUgLSBubyBzaG91bGQgb3BlbiBVUkxz
IGV4dGVybmFsbHkgLSB5ZXMKKwpJbmRleDogTGF5b3V0VGVzdHMvbG9hZGVyL25hdmlnYXRpb24t
cG9saWN5L3Nob3VsZC1vcGVuLWV4dGVybmFsLXVybHMvc3ViZnJhbWUtbmF2aWdhdGVkLXByb2dy
YW1hdGljYWxseS1ieS1tYWluLWZyYW1lLW5vLXRvcENhbGxGcmFtZS5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2xvYWRlci9uYXZpZ2F0aW9uLXBvbGljeS9zaG91bGQtb3Blbi1leHRl
cm5hbC11cmxzL3N1YmZyYW1lLW5hdmlnYXRlZC1wcm9ncmFtYXRpY2FsbHktYnktbWFpbi1mcmFt
ZS1uby10b3BDYWxsRnJhbWUuaHRtbAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9sb2Fk
ZXIvbmF2aWdhdGlvbi1wb2xpY3kvc2hvdWxkLW9wZW4tZXh0ZXJuYWwtdXJscy9zdWJmcmFtZS1u
YXZpZ2F0ZWQtcHJvZ3JhbWF0aWNhbGx5LWJ5LW1haW4tZnJhbWUtbm8tdG9wQ2FsbEZyYW1lLmh0
bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNCBAQAorPHNjcmlwdD4KKworaWYgKHdpbmRv
dy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1
bm5lci5kdW1wUG9saWN5RGVsZWdhdGVDYWxsYmFja3MoKTsKKyAgICB0ZXN0UnVubmVyLnF1ZXVl
TG9hZCgicmVzb3VyY2VzL21haW4tZnJhbWUtd2l0aC1zdWJmcmFtZS1tYWluLXByb2dyYW1hdGlj
YWxseS1uYXZpZ2F0ZXMtc3ViZnJhbWUtbm8tdG9wQ2FsbEZyYW1lLmh0bWwiLCAiIiwgdHJ1ZSk7
Cit9CisKKzwvc2NyaXB0PgorVGhpcyBwYWdlIGhhcyBkb2VzIG5vdCBoYXZlIHRoZSAic2hvdWxk
IG9wZW4gZXh0ZXJuYWwgVVJMcyIgZmxhZyBzZXQuPGJyPgorSXQgbmF2aWdhdGVzIHRvIGEgMm5k
IHBhZ2UgdGhhdCBkb2VzIGhhdmUgdGhlIGZsYWcgc2V0Ljxicj4KK1RoYXQgMm5kIHBhZ2UgY29u
dGFpbnMgYW4gaWZyYW1lLCBhbmQgdGhlIG1haW4gZnJhbWUgcHJvZ3JhbWF0aWNhbGx5IG5hdmln
YXRlcyB0aGUgaWZyYW1lIHRvIGEgM3JkIGRvY3VtZW50Ljxicj4KK1RoZSAic2hvdWxkIG9wZW4g
ZXh0ZXJuYWwgVVJMcyIgZmxhZyBzaG91bGQgYmUgc2V0IGJlY2F1c2UgdGhlIHByb2dyYW1hdGlj
IG5hdmlnYXRpb24gaW5pdGlhdGVkIGZyb20gdGhlIG1haW4gZnJhbWUgYW5kIHRoZSBmbGFnIHNo
b3VsZCBwcm9wYWdhdGUuPGJyPgorPHNjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL2xvYWRlci9u
YXZpZ2F0aW9uLXBvbGljeS9zaG91bGQtb3Blbi1leHRlcm5hbC11cmxzL3N1YmZyYW1lLW5hdmln
YXRlZC1wcm9ncmFtYXRpY2FsbHktYnktbWFpbi1mcmFtZS12aWEtbWV0aG9kLWV4cGVjdGVkLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9sb2FkZXIvbmF2aWdhdGlvbi1wb2xpY3kvc2hv
dWxkLW9wZW4tZXh0ZXJuYWwtdXJscy9zdWJmcmFtZS1uYXZpZ2F0ZWQtcHJvZ3JhbWF0aWNhbGx5
LWJ5LW1haW4tZnJhbWUtdmlhLW1ldGhvZC1leHBlY3RlZC50eHQJKG5vbmV4aXN0ZW50KQorKysg
TGF5b3V0VGVzdHMvbG9hZGVyL25hdmlnYXRpb24tcG9saWN5L3Nob3VsZC1vcGVuLWV4dGVybmFs
LXVybHMvc3ViZnJhbWUtbmF2aWdhdGVkLXByb2dyYW1hdGljYWxseS1ieS1tYWluLWZyYW1lLXZp
YS1tZXRob2QtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNyBAQAorIC0g
ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbgorPE5TVVJMUmVxdWVzdCBVUkwgcmVzb3Vy
Y2VzL21haW4tZnJhbWUtd2l0aC1zdWJmcmFtZS1tYWluLXByb2dyYW1hdGljYWxseS1uYXZpZ2F0
ZXMtc3ViZnJhbWUtdmlhLW1ldGhvZC5odG1sLCBtYWluIGRvY3VtZW50IFVSTCByZXNvdXJjZXMv
bWFpbi1mcmFtZS13aXRoLXN1YmZyYW1lLW1haW4tcHJvZ3JhbWF0aWNhbGx5LW5hdmlnYXRlcy1z
dWJmcmFtZS12aWEtbWV0aG9kLmh0bWwsIGh0dHAgbWV0aG9kIEdFVD4gaXMgbWFpbiBmcmFtZSAt
IHllcyBzaG91bGQgb3BlbiBVUkxzIGV4dGVybmFsbHkgLSB5ZXMKKyAtIGRlY2lkZVBvbGljeUZv
ck5hdmlnYXRpb25BY3Rpb24KKzxOU1VSTFJlcXVlc3QgVVJMIGRvLW5vdGhpbmcuaHRtbCwgbWFp
biBkb2N1bWVudCBVUkwgbWFpbi1mcmFtZS13aXRoLXN1YmZyYW1lLW1haW4tcHJvZ3JhbWF0aWNh
bGx5LW5hdmlnYXRlcy1zdWJmcmFtZS12aWEtbWV0aG9kLmh0bWwsIGh0dHAgbWV0aG9kIEdFVD4g
aXMgbWFpbiBmcmFtZSAtIG5vIHNob3VsZCBvcGVuIFVSTHMgZXh0ZXJuYWxseSAtIG5vCisgLSBk
ZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uCis8TlNVUkxSZXF1ZXN0IFVSTCBub3RpZnkt
ZG9uZS5odG1sLCBtYWluIGRvY3VtZW50IFVSTCBtYWluLWZyYW1lLXdpdGgtc3ViZnJhbWUtbWFp
bi1wcm9ncmFtYXRpY2FsbHktbmF2aWdhdGVzLXN1YmZyYW1lLXZpYS1tZXRob2QuaHRtbCwgaHR0
cCBtZXRob2QgR0VUPiBpcyBtYWluIGZyYW1lIC0gbm8gc2hvdWxkIG9wZW4gVVJMcyBleHRlcm5h
bGx5IC0geWVzCisKSW5kZXg6IExheW91dFRlc3RzL2xvYWRlci9uYXZpZ2F0aW9uLXBvbGljeS9z
aG91bGQtb3Blbi1leHRlcm5hbC11cmxzL3N1YmZyYW1lLW5hdmlnYXRlZC1wcm9ncmFtYXRpY2Fs
bHktYnktbWFpbi1mcmFtZS12aWEtbWV0aG9kLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvbG9hZGVyL25hdmlnYXRpb24tcG9saWN5L3Nob3VsZC1vcGVuLWV4dGVybmFsLXVybHMvc3Vi
ZnJhbWUtbmF2aWdhdGVkLXByb2dyYW1hdGljYWxseS1ieS1tYWluLWZyYW1lLXZpYS1tZXRob2Qu
aHRtbAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9sb2FkZXIvbmF2aWdhdGlvbi1wb2xp
Y3kvc2hvdWxkLW9wZW4tZXh0ZXJuYWwtdXJscy9zdWJmcmFtZS1uYXZpZ2F0ZWQtcHJvZ3JhbWF0
aWNhbGx5LWJ5LW1haW4tZnJhbWUtdmlhLW1ldGhvZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsMTQgQEAKKzxzY3JpcHQ+CisKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRl
c3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIuZHVtcFBvbGljeURlbGVnYXRl
Q2FsbGJhY2tzKCk7CisgICAgdGVzdFJ1bm5lci5xdWV1ZUxvYWQoInJlc291cmNlcy9tYWluLWZy
YW1lLXdpdGgtc3ViZnJhbWUtbWFpbi1wcm9ncmFtYXRpY2FsbHktbmF2aWdhdGVzLXN1YmZyYW1l
LXZpYS1tZXRob2QuaHRtbCIsICIiLCB0cnVlKTsKK30KKworPC9zY3JpcHQ+CitUaGlzIHBhZ2Ug
aGFzIGRvZXMgbm90IGhhdmUgdGhlICJzaG91bGQgb3BlbiBleHRlcm5hbCBVUkxzIiBmbGFnIHNl
dC48YnI+CitJdCBuYXZpZ2F0ZXMgdG8gYSAybmQgcGFnZSB0aGF0IGRvZXMgaGF2ZSB0aGUgZmxh
ZyBzZXQuPGJyPgorVGhhdCAybmQgcGFnZSBjb250YWlucyBhbiBpZnJhbWUsIGFuZCB0aGUgbWFp
biBmcmFtZSBwcm9ncmFtYXRpY2FsbHkgbmF2aWdhdGVzIHRoZSBpZnJhbWUgdG8gYSAzcmQgZG9j
dW1lbnQuPGJyPgorVGhlICJzaG91bGQgb3BlbiBleHRlcm5hbCBVUkxzIiBmbGFnIHNob3VsZCBi
ZSBzZXQgYmVjYXVzZSB0aGUgcHJvZ3JhbWF0aWMgbmF2aWdhdGlvbiBpbml0aWF0ZWQgZnJvbSB0
aGUgbWFpbiBmcmFtZSBhbmQgdGhlIGZsYWcgc2hvdWxkIHByb3BhZ2F0ZS48YnI+Cis8c2NyaXB0
PgpJbmRleDogTGF5b3V0VGVzdHMvbG9hZGVyL25hdmlnYXRpb24tcG9saWN5L3Nob3VsZC1vcGVu
LWV4dGVybmFsLXVybHMvcmVzb3VyY2VzL21haW4tZnJhbWUtd2l0aC1zdWJmcmFtZS1tYWluLXBy
b2dyYW1hdGljYWxseS1uYXZpZ2F0ZXMtc3ViZnJhbWUtbm8tdG9wQ2FsbEZyYW1lLmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvbG9hZGVyL25hdmlnYXRpb24tcG9saWN5L3Nob3VsZC1v
cGVuLWV4dGVybmFsLXVybHMvcmVzb3VyY2VzL21haW4tZnJhbWUtd2l0aC1zdWJmcmFtZS1tYWlu
LXByb2dyYW1hdGljYWxseS1uYXZpZ2F0ZXMtc3ViZnJhbWUtbm8tdG9wQ2FsbEZyYW1lLmh0bWwJ
KG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvbG9hZGVyL25hdmlnYXRpb24tcG9saWN5L3No
b3VsZC1vcGVuLWV4dGVybmFsLXVybHMvcmVzb3VyY2VzL21haW4tZnJhbWUtd2l0aC1zdWJmcmFt
ZS1tYWluLXByb2dyYW1hdGljYWxseS1uYXZpZ2F0ZXMtc3ViZnJhbWUtbm8tdG9wQ2FsbEZyYW1l
Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw5IEBACis8aWZyYW1lIHNyY2RvYz0iVGhp
cyBwYWdlIGRvZXMgbm90aGluZy4iPjwvaWZyYW1lPgorPHNjcmlwdD4KK2lmICh3aW5kb3cudGVz
dFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKzwvc2NyaXB0PgorPCEt
LSBJdCdzIGVzc2VudGlhbCB0aGF0IHRoZSBmb2xsb3dpbmcgPHNjcmlwdD4gY29udGFpbnMgb25s
eSBvbmUgZXhwcmVzc2lvbi4gLS0+Cis8c2NyaXB0PgorICAgIHdpbmRvdy5mcmFtZXNbMF0ubG9j
YXRpb24gPSAibm90aWZ5LWRvbmUuaHRtbCI7Cis8L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3Rz
L2xvYWRlci9uYXZpZ2F0aW9uLXBvbGljeS9zaG91bGQtb3Blbi1leHRlcm5hbC11cmxzL3Jlc291
cmNlcy9tYWluLWZyYW1lLXdpdGgtc3ViZnJhbWUtbWFpbi1wcm9ncmFtYXRpY2FsbHktbmF2aWdh
dGVzLXN1YmZyYW1lLXZpYS1tZXRob2QuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9s
b2FkZXIvbmF2aWdhdGlvbi1wb2xpY3kvc2hvdWxkLW9wZW4tZXh0ZXJuYWwtdXJscy9yZXNvdXJj
ZXMvbWFpbi1mcmFtZS13aXRoLXN1YmZyYW1lLW1haW4tcHJvZ3JhbWF0aWNhbGx5LW5hdmlnYXRl
cy1zdWJmcmFtZS12aWEtbWV0aG9kLmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMv
bG9hZGVyL25hdmlnYXRpb24tcG9saWN5L3Nob3VsZC1vcGVuLWV4dGVybmFsLXVybHMvcmVzb3Vy
Y2VzL21haW4tZnJhbWUtd2l0aC1zdWJmcmFtZS1tYWluLXByb2dyYW1hdGljYWxseS1uYXZpZ2F0
ZXMtc3ViZnJhbWUtdmlhLW1ldGhvZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTAg
QEAKKzxzY3JpcHQ+CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci53YWl0
VW50aWxEb25lKCk7CisKK2Z1bmN0aW9uIGlmcmFtZUxvYWRlZCgpIHsKKyAgICB3aW5kb3cuZnJh
bWVzWzBdLmxvY2F0aW9uLmFzc2lnbigibm90aWZ5LWRvbmUuaHRtbCIpOworfQorPC9zY3JpcHQ+
CisKKzxpZnJhbWUgb25sb2FkPSJpZnJhbWVMb2FkZWQoKTsiIHNyYz0iZG8tbm90aGluZy5odG1s
Ij48L2lmcmFtZT4KSW5kZXg6IExheW91dFRlc3RzL2xvYWRlci9uYXZpZ2F0aW9uLXBvbGljeS9z
aG91bGQtb3Blbi1leHRlcm5hbC11cmxzL3Jlc291cmNlcy9tYWluLWZyYW1lLXdpdGgtc3ViZnJh
bWUtcHJvZ3JhbWF0aWNhbGx5LW5hdmlnYXRlcy1tYWluLXZpYS1tZXRob2QuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9sb2FkZXIvbmF2aWdhdGlvbi1wb2xpY3kvc2hvdWxkLW9wZW4t
ZXh0ZXJuYWwtdXJscy9yZXNvdXJjZXMvbWFpbi1mcmFtZS13aXRoLXN1YmZyYW1lLXByb2dyYW1h
dGljYWxseS1uYXZpZ2F0ZXMtbWFpbi12aWEtbWV0aG9kLmh0bWwJKG5vbmV4aXN0ZW50KQorKysg
TGF5b3V0VGVzdHMvbG9hZGVyL25hdmlnYXRpb24tcG9saWN5L3Nob3VsZC1vcGVuLWV4dGVybmFs
LXVybHMvcmVzb3VyY2VzL21haW4tZnJhbWUtd2l0aC1zdWJmcmFtZS1wcm9ncmFtYXRpY2FsbHkt
bmF2aWdhdGVzLW1haW4tdmlhLW1ldGhvZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
NiBAQAorPHNjcmlwdD4KK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLndh
aXRVbnRpbERvbmUoKTsKKzwvc2NyaXB0PgorCis8aWZyYW1lIHNyYz0icHJvZ3JhbWF0aWNhbGx5
LW5hdmlnYXRlLXRvLW5vdGlmeS1kb25lLXRhcmdldC10b3AtdmlhLW1ldGhvZC5odG1sIj48L2lm
cmFtZT4KSW5kZXg6IExheW91dFRlc3RzL2xvYWRlci9uYXZpZ2F0aW9uLXBvbGljeS9zaG91bGQt
b3Blbi1leHRlcm5hbC11cmxzL3Jlc291cmNlcy9wcm9ncmFtYXRpY2FsbHktbmF2aWdhdGUtdG8t
bm90aWZ5LWRvbmUtdGFyZ2V0LXRvcC12aWEtbWV0aG9kLmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvbG9hZGVyL25hdmlnYXRpb24tcG9saWN5L3Nob3VsZC1vcGVuLWV4dGVybmFsLXVy
bHMvcmVzb3VyY2VzL3Byb2dyYW1hdGljYWxseS1uYXZpZ2F0ZS10by1ub3RpZnktZG9uZS10YXJn
ZXQtdG9wLXZpYS1tZXRob2QuaHRtbAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9sb2Fk
ZXIvbmF2aWdhdGlvbi1wb2xpY3kvc2hvdWxkLW9wZW4tZXh0ZXJuYWwtdXJscy9yZXNvdXJjZXMv
cHJvZ3JhbWF0aWNhbGx5LW5hdmlnYXRlLXRvLW5vdGlmeS1kb25lLXRhcmdldC10b3AtdmlhLW1l
dGhvZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTQgQEAKKzxzY3JpcHQ+CisKK2lm
ICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAg
ICAKK2Z1bmN0aW9uIGxvYWRlZCgpCit7CisgICAgd2luZG93LnRvcC5sb2NhdGlvbi5yZXBsYWNl
KCJub3RpZnktZG9uZS5odG1sIik7Cit9CisKKzwvc2NyaXB0PgorPGJvZHkgb25sb2FkPSJsb2Fk
ZWQoKTsiPgorVGhpcyBwYWdlIGRvZXMgYSBqYXZhc2NyaXB0IGNsaWVudCByZWRpcmVjdCB0byBu
b3RpZnktZG9uZS5odG1sIGluIHRoZSBtYWluIGZyYW1lLgorPC9ib2R5PgpJbmRleDogTGF5b3V0
VGVzdHMvcGxhdGZvcm0vaW9zLXdrMS9UZXN0RXhwZWN0YXRpb25zCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL3BsYXRmb3JtL2lvcy13azEvVGVzdEV4cGVjdGF0aW9ucwkocmV2aXNpb24gMjg0
NDY3KQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zLXdrMS9UZXN0RXhwZWN0YXRpb25zCSh3
b3JraW5nIGNvcHkpCkBAIC0xMDI0LDYgKzEwMjQsNyBAQCBjcnlwdG8vc3VidGxlL3JzYS1pbmRl
eGVkZGIuaHRtbAogCiAjIFNob3VsZE9wZW5FeHRlcm5hbFVSTHMgbm90IHlldCBzdXBwb3J0ZWQg
aW4gV0sxCiBsb2FkZXIvbmF2aWdhdGlvbi1wb2xpY3kgWyBTa2lwIF0KK2h0dHAvdGVzdHMvbmF2
aWdhdGlvbi1wb2xpY3kgWyBTa2lwIF0KIAogIyBIVFRQIHRlc3RzIHRoYXQgdGltZSBvdXQ6CiBo
dHRwL3Rlc3RzL2Nvb2tpZXMvZG91YmxlLXF1b3RlZC12YWx1ZS13aXRoLXNlbWktY29sb24uaHRt
bApJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRpb25zCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9u
cwkocmV2aXNpb24gMjg0NDY3KQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9UZXN0
RXhwZWN0YXRpb25zCSh3b3JraW5nIGNvcHkpCkBAIC05OSw2ICs5OSw3IEBAIGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvd2Vic29ja2UKIAogIyBTaG91bGRPcGVuRXh0ZXJuYWxVUkxz
IG5vdCB5ZXQgc3VwcG9ydGVkIGluIFdLMQogbG9hZGVyL25hdmlnYXRpb24tcG9saWN5IFsgU2tp
cCBdCitodHRwL3Rlc3RzL25hdmlnYXRpb24tcG9saWN5IFsgU2tpcCBdCiAKICMgPGEgZG93bmxv
YWQ+IGlzIG5vdCBzdXBwb3J0ZWQgaW4gV0sxIHlldC4KIHdlYmtpdC5vcmcvYi8xNTYwNjkgZmFz
dC9kb20vSFRNTEFuY2hvckVsZW1lbnQvYW5jaG9yLW5vZG93bmxvYWQtc2V0Lmh0bWwgWyBGYWls
dXJlIF0KSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRpb25zCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRpb25zCShy
ZXZpc2lvbiAyODQ0NjcpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vVGVzdEV4cGVjdGF0
aW9ucwkod29ya2luZyBjb3B5KQpAQCAtMjg5NSw2ICsyODk1LDcgQEAgZmFzdC90ZXh0L3NpbXBs
ZS1saW5lLWxheW91dC10ZXh0LXN0cm9rZQogCiAjIFNob3VsZE9wZW5FeHRlcm5hbFVSTHMgbm90
IHlldCBzdXBwb3J0ZWQgaW4gV0sxCiBsb2FkZXIvbmF2aWdhdGlvbi1wb2xpY3kgWyBTa2lwIF0K
K2h0dHAvdGVzdHMvbmF2aWdhdGlvbi1wb2xpY3kgWyBTa2lwIF0KIAogI1N1YnBpeGVsIGRpZmZl
cmVuY2UKIGZhc3QvdGV4dC9kZWNvcmF0aW9ucy12ZXJ0aWNhbC11bmRlcmxpbmUuaHRtbCBbIFNr
aXAgXQpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luY2Fpcm8vVGVzdEV4cGVjdGF0aW9u
cwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW5jYWlyby9UZXN0RXhwZWN0
YXRpb25zCShyZXZpc2lvbiAyODQ0NjcpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW5jYWly
by9UZXN0RXhwZWN0YXRpb25zCSh3b3JraW5nIGNvcHkpCkBAIC00NDcsNiArNDQ3LDcgQEAgZmFz
dC90ZXh0L3VzZXItaW5zdGFsbGVkLWZvbnRzL3NoYWRvdy5odAogCiAjIHRlc3RSdW5uZXIuZHVt
cFBvbGljeURlbGVnYXRlQ2FsbGJhY2tzIGlzIG5vdCBhIGZ1bmN0aW9uCiBsb2FkZXIvbmF2aWdh
dGlvbi1wb2xpY3kvc2hvdWxkLW9wZW4tZXh0ZXJuYWwtdXJscyBbIFNraXAgXQoraHR0cC90ZXN0
cy9uYXZpZ2F0aW9uLXBvbGljeSBbIFNraXAgXQogCiAjIHRlc3RSdW5uZXIuc2V0UGx1Z2luU3Vw
cG9ydGVkTW9kZSBpcyBub3QgYSBmdW5jdGlvbgogcGx1Z2lucy91bnN1cHBvcnRlZC1wbHVnaW4u
aHRtbCBbIFNraXAgXQo=
</data>
<flag name="review"
          id="466156"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>