<?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>148955</bug_id>
          
          <creation_ts>2015-09-08 08:10:17 -0700</creation_ts>
          <short_desc>[JSC] Weak should only accept cell pointees.</short_desc>
          <delta_ts>2015-09-22 05:17:14 -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>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>REOPENED</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>149456</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Andreas Kling">kling</reporter>
          <assigned_to name="Andreas Kling">kling</assigned_to>
          <cc>commit-queue</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1124228</commentid>
    <comment_count>0</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2015-09-08 08:10:17 -0700</bug_when>
    <thetext>JSC::WeakImpl already asserts that the weak pointee is a non-null JSCell*. We should enforce this at compile time with narrower types.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1124229</commentid>
    <comment_count>1</comment_count>
      <attachid>260760</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2015-09-08 08:20:51 -0700</bug_when>
    <thetext>Created attachment 260760
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1125097</commentid>
    <comment_count>2</comment_count>
      <attachid>260760</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-09-10 17:52:10 -0700</bug_when>
    <thetext>Comment on attachment 260760
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1125156</commentid>
    <comment_count>3</comment_count>
      <attachid>260760</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-09-11 02:16:49 -0700</bug_when>
    <thetext>Comment on attachment 260760
Patch

Clearing flags on attachment: 260760

Committed r189616: &lt;http://trac.webkit.org/changeset/189616&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1125157</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-09-11 02:16:58 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1127983</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-09-22 05:17:14 -0700</bug_when>
    <thetext>Re-opened since this is blocked by bug 149456</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>260760</attachid>
            <date>2015-09-08 08:20:51 -0700</date>
            <delta_ts>2015-09-11 02:16:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-148955.diff</filename>
            <type>text/plain</type>
            <size>99279</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNBUElXcmFwcGVyT2JqZWN0
Lm1tIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0FQSVdyYXBwZXJPYmplY3QubW0KaW5k
ZXggZWY1NDYwMi4uNmM2ZDM5OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS9KU0FQSVdyYXBwZXJPYmplY3QubW0KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9K
U0FQSVdyYXBwZXJPYmplY3QubW0KQEAgLTMzLDEwICszMywxMCBAQAogCiAjaWYgSlNDX09CSkNf
QVBJX0VOQUJMRUQKIAotY2xhc3MgSlNBUElXcmFwcGVyT2JqZWN0SGFuZGxlT3duZXIgOiBwdWJs
aWMgSlNDOjpXZWFrSGFuZGxlT3duZXIgeworY2xhc3MgSlNBUElXcmFwcGVyT2JqZWN0SGFuZGxl
T3duZXIgZmluYWwgOiBwdWJsaWMgSlNDOjpXZWFrSGFuZGxlT3duZXIgewogcHVibGljOgotICAg
IHZpcnR1YWwgdm9pZCBmaW5hbGl6ZShKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+LCB2b2lkKikg
b3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIGlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpT
Qzo6SGFuZGxlPEpTQzo6VW5rbm93bj4sIHZvaWQqIGNvbnRleHQsIEpTQzo6U2xvdFZpc2l0b3Im
KSBvdmVycmlkZTsKKyAgICB2b2lkIGZpbmFsaXplKEpTQzo6SlNDZWxsKiYsIHZvaWQqKSBvdmVy
cmlkZTsKKyAgICBib29sIGlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SlNDZWxsJiwg
dm9pZCogY29udGV4dCwgSlNDOjpTbG90VmlzaXRvciYpIG92ZXJyaWRlOwogfTsKIAogc3RhdGlj
IEpTQVBJV3JhcHBlck9iamVjdEhhbmRsZU93bmVyKiBqc0FQSVdyYXBwZXJPYmplY3RIYW5kbGVP
d25lcigpCkBAIC00NSwyNCArNDUsMjQgQEAgc3RhdGljIEpTQVBJV3JhcHBlck9iamVjdEhhbmRs
ZU93bmVyKiBqc0FQSVdyYXBwZXJPYmplY3RIYW5kbGVPd25lcigpCiAgICAgcmV0dXJuICZqc1dy
YXBwZXJPYmplY3RIYW5kbGVPd25lcjsKIH0KIAotdm9pZCBKU0FQSVdyYXBwZXJPYmplY3RIYW5k
bGVPd25lcjo6ZmluYWxpemUoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQq
KQordm9pZCBKU0FQSVdyYXBwZXJPYmplY3RIYW5kbGVPd25lcjo6ZmluYWxpemUoSlNDOjpKU0Nl
bGwqJiBjZWxsLCB2b2lkKikKIHsKLSAgICBKU0M6OkpTQVBJV3JhcHBlck9iamVjdCogd3JhcHBl
ck9iamVjdCA9IEpTQzo6anNDYXN0PEpTQzo6SlNBUElXcmFwcGVyT2JqZWN0Kj4oaGFuZGxlLmdl
dCgpLmFzQ2VsbCgpKTsKLSAgICBpZiAoIXdyYXBwZXJPYmplY3QtPndyYXBwZWRPYmplY3QoKSkK
KyAgICBhdXRvJiB3cmFwcGVyT2JqZWN0ID0gSlNDOjpqc0Nhc3Q8SlNDOjpKU0FQSVdyYXBwZXJP
YmplY3QmPigqY2VsbCk7CisgICAgaWYgKCF3cmFwcGVyT2JqZWN0LndyYXBwZWRPYmplY3QoKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgSlNDOjpIZWFwOjpoZWFwKHdyYXBwZXJPYmplY3QpLT5y
ZWxlYXNlU29vbihhZG9wdE5TKHN0YXRpY19jYXN0PGlkPih3cmFwcGVyT2JqZWN0LT53cmFwcGVk
T2JqZWN0KCkpKSk7Ci0gICAgSlNDOjpXZWFrU2V0OjpkZWFsbG9jYXRlKEpTQzo6V2Vha0ltcGw6
OmFzV2Vha0ltcGwoaGFuZGxlLnNsb3QoKSkpOworICAgIEpTQzo6SGVhcDo6aGVhcCgmd3JhcHBl
ck9iamVjdCktPnJlbGVhc2VTb29uKGFkb3B0TlMoc3RhdGljX2Nhc3Q8aWQ+KHdyYXBwZXJPYmpl
Y3Qud3JhcHBlZE9iamVjdCgpKSkpOworICAgIEpTQzo6V2Vha1NldDo6ZGVhbGxvY2F0ZShKU0M6
OldlYWtJbXBsOjphc1dlYWtJbXBsKCZjZWxsKSk7CiB9CiAKLWJvb2wgSlNBUElXcmFwcGVyT2Jq
ZWN0SGFuZGxlT3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpT
Qzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkKiwgSlNDOjpTbG90VmlzaXRvciYgdmlzaXRvcikKK2Jv
b2wgSlNBUElXcmFwcGVyT2JqZWN0SGFuZGxlT3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJv
b3RzKEpTQzo6SlNDZWxsJiBjZWxsLCB2b2lkKiwgSlNDOjpTbG90VmlzaXRvciYgdmlzaXRvcikK
IHsKLSAgICBKU0M6OkpTQVBJV3JhcHBlck9iamVjdCogd3JhcHBlck9iamVjdCA9IEpTQzo6anND
YXN0PEpTQzo6SlNBUElXcmFwcGVyT2JqZWN0Kj4oaGFuZGxlLmdldCgpLmFzQ2VsbCgpKTsKKyAg
ICBKU0M6OkpTQVBJV3JhcHBlck9iamVjdCYgd3JhcHBlck9iamVjdCA9IEpTQzo6anNDYXN0PEpT
Qzo6SlNBUElXcmFwcGVyT2JqZWN0Jj4oY2VsbCk7CiAgICAgLy8gV2UgdXNlIHRoZSBKU0dsb2Jh
bE9iamVjdCB3aGVuIHByb2Nlc3Npbmcgd2VhayBoYW5kbGVzIHRvIHByZXZlbnQgdGhlIHNpdHVh
dGlvbiB3aGVyZSB1c2luZwogICAgIC8vIHRoZSBzYW1lIE9iamVjdGl2ZS1DIG9iamVjdCBpbiBt
dWx0aXBsZSBnbG9iYWwgb2JqZWN0cyBrZWVwcyBhbGwgb2YgdGhlIGdsb2JhbCBvYmplY3RzIGFs
aXZlLgotICAgIGlmICghd3JhcHBlck9iamVjdC0+d3JhcHBlZE9iamVjdCgpKQorICAgIGlmICgh
d3JhcHBlck9iamVjdC53cmFwcGVkT2JqZWN0KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICByZXR1cm4gSlNDOjpIZWFwOjppc01hcmtlZCh3cmFwcGVyT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+
Z2xvYmFsT2JqZWN0KCkpICYmIHZpc2l0b3IuY29udGFpbnNPcGFxdWVSb290KHdyYXBwZXJPYmpl
Y3QtPndyYXBwZWRPYmplY3QoKSk7CisgICAgcmV0dXJuIEpTQzo6SGVhcDo6aXNNYXJrZWQod3Jh
cHBlck9iamVjdC5nbG9iYWxPYmplY3QoKSkgJiYgdmlzaXRvci5jb250YWluc09wYXF1ZVJvb3Qo
d3JhcHBlck9iamVjdC53cmFwcGVkT2JqZWN0KCkpOwogfQogCiBuYW1lc3BhY2UgSlNDIHsKQEAg
LTg2LDcgKzg2LDcgQEAgSlNBUElXcmFwcGVyT2JqZWN0OjpKU0FQSVdyYXBwZXJPYmplY3QoVk0m
IHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIHZvaWQgSlNBUElXcmFwcGVyT2JqZWN0OjpmaW5p
c2hDcmVhdGlvbihWTSYgdm0pCiB7CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwotICAg
IFdlYWtTZXQ6OmFsbG9jYXRlKHRoaXMsIGpzQVBJV3JhcHBlck9iamVjdEhhbmRsZU93bmVyKCks
IDApOyAvLyBCYWxhbmNlZCBpbiBKU0FQSVdyYXBwZXJPYmplY3RIYW5kbGVPd25lcjo6ZmluYWxp
emUuCisgICAgV2Vha1NldDo6YWxsb2NhdGUoKnRoaXMsIGpzQVBJV3JhcHBlck9iamVjdEhhbmRs
ZU93bmVyKCksIDApOyAvLyBCYWxhbmNlZCBpbiBKU0FQSVdyYXBwZXJPYmplY3RIYW5kbGVPd25l
cjo6ZmluYWxpemUuCiB9CiAgICAgCiB2b2lkIEpTQVBJV3JhcHBlck9iamVjdDo6c2V0V3JhcHBl
ZE9iamVjdCh2b2lkKiB3cmFwcGVkT2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS9KU01hbmFnZWRWYWx1ZS5tbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
SlNNYW5hZ2VkVmFsdWUubW0KaW5kZXggYTcyZDE5Yi4uN2Q4OTY0MyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU01hbmFnZWRWYWx1ZS5tbQorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0pTTWFuYWdlZFZhbHVlLm1tCkBAIC0zOSwxMCArMzksMTAgQEAKICNp
bXBvcnQgIkpTQ0lubGluZXMuaCIKICNpbXBvcnQgPHd0Zi9zcGkvY29jb2EvTlNNYXBUYWJsZVNQ
SS5oPgogCi1jbGFzcyBKU01hbmFnZWRWYWx1ZUhhbmRsZU93bmVyIDogcHVibGljIEpTQzo6V2Vh
a0hhbmRsZU93bmVyIHsKK2NsYXNzIEpTTWFuYWdlZFZhbHVlSGFuZGxlT3duZXIgZmluYWwgOiBw
dWJsaWMgSlNDOjpXZWFrSGFuZGxlT3duZXIgewogcHVibGljOgotICAgIHZpcnR1YWwgdm9pZCBm
aW5hbGl6ZShKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+LCB2b2lkKiBjb250ZXh0KSBvdmVycmlk
ZTsKLSAgICB2aXJ0dWFsIGJvb2wgaXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5k
bGU8SlNDOjpVbmtub3duPiwgdm9pZCogY29udGV4dCwgSlNDOjpTbG90VmlzaXRvciYpIG92ZXJy
aWRlOworICAgIHZvaWQgZmluYWxpemUoSlNDOjpKU0NlbGwqJiwgdm9pZCogY29udGV4dCkgb3Zl
cnJpZGU7CisgICAgYm9vbCBpc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6OkpTQ2VsbCYs
IHZvaWQqIGNvbnRleHQsIEpTQzo6U2xvdFZpc2l0b3ImKSBvdmVycmlkZTsKIH07CiAKIHN0YXRp
YyBKU01hbmFnZWRWYWx1ZUhhbmRsZU93bmVyKiBtYW5hZ2VkVmFsdWVIYW5kbGVPd25lcigpCkBA
IC0yOTUsMTMgKzI5NSwxMyBAQCBwcml2YXRlOgogLSAodm9pZClkaXNjb25uZWN0VmFsdWU7CiBA
ZW5kCiAKLWJvb2wgSlNNYW5hZ2VkVmFsdWVIYW5kbGVPd25lcjo6aXNSZWFjaGFibGVGcm9tT3Bh
cXVlUm9vdHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiwgdm9pZCogY29udGV4dCwgSlNDOjpT
bG90VmlzaXRvciYgdmlzaXRvcikKK2Jvb2wgSlNNYW5hZ2VkVmFsdWVIYW5kbGVPd25lcjo6aXNS
ZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpKU0NlbGwmLCB2b2lkKiBjb250ZXh0LCBKU0M6
OlNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewogICAgIEpTTWFuYWdlZFZhbHVlICptYW5hZ2VkVmFs
dWUgPSBzdGF0aWNfY2FzdDxKU01hbmFnZWRWYWx1ZSAqPihjb250ZXh0KTsKICAgICByZXR1cm4g
dmlzaXRvci5jb250YWluc09wYXF1ZVJvb3QobWFuYWdlZFZhbHVlKTsKIH0KIAotdm9pZCBKU01h
bmFnZWRWYWx1ZUhhbmRsZU93bmVyOjpmaW5hbGl6ZShKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+
LCB2b2lkKiBjb250ZXh0KQordm9pZCBKU01hbmFnZWRWYWx1ZUhhbmRsZU93bmVyOjpmaW5hbGl6
ZShKU0M6OkpTQ2VsbComLCB2b2lkKiBjb250ZXh0KQogewogICAgIEpTTWFuYWdlZFZhbHVlICpt
YW5hZ2VkVmFsdWUgPSBzdGF0aWNfY2FzdDxKU01hbmFnZWRWYWx1ZSAqPihjb250ZXh0KTsKICAg
ICBbbWFuYWdlZFZhbHVlIGRpc2Nvbm5lY3RWYWx1ZV07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpp
bmRleCBmY2U1ZWUxLi5kMTgyNzEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSw3MCBAQAorMjAxNS0wOS0wOCAgQW5kcmVhcyBLbGluZyAgPGFrbGluZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgW0pTQ10gV2VhayBzaG91bGQgb25seSBhY2NlcHQgY2VsbCBwb2ludGVlcy4KKyAg
ICAgICAgPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzE0ODk1NT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTaW5jZSBXZWFrSW1wbHMgb25seSBzdXBwb3J0
IHBvaW50aW5nIHRvIEpTQ2VsbCBkZXJpdmVkIG9iamVjdHMsCisgICAgICAgIGVuZm9yY2UgdGhh
dCBhdCBjb21waWxlIHRpbWUgYnkgaGF2aW5nIHRoZSBBUEkgdXNlIEpTQ2VsbCogaW5zdGVhZCBv
ZiBKU1ZhbHVlLgorCisgICAgICAgIFdlYWtIYW5kbGVPd25lciBjYWxsYmFja3Mgbm93IGdldCBK
U0NlbGwmIGFuZCBKU0NlbGwqJiByZXNwZWN0aXZlbHkgaW5zdGVhZAorICAgICAgICBvZiB3cmFw
cGluZyB0aGUgY2VsbCBwb2ludGVyIGluIGEgSGFuZGxlPFVua25vd24+LgorCisgICAgICAgIEFs
c28gYWRkZWQgYSBzdGF0aWNfYXNzZXJ0IHNvIFdlYWs8VD4gY2FuJ3QgYmUgaW5zdGFudGlhdGVk
IHdpdGggYSBUIHRoYXQncworICAgICAgICBub3QgY29udmVydGlibGUgdG8gSlNDZWxsLgorCisg
ICAgICAgICogQVBJL0pTQVBJV3JhcHBlck9iamVjdC5tbToKKyAgICAgICAgKEpTQVBJV3JhcHBl
ck9iamVjdEhhbmRsZU93bmVyOjpmaW5hbGl6ZSk6CisgICAgICAgIChKU0FQSVdyYXBwZXJPYmpl
Y3RIYW5kbGVPd25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMpOgorICAgICAgICAoSlND
OjpKU0FQSVdyYXBwZXJPYmplY3Q6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBBUEkvSlNN
YW5hZ2VkVmFsdWUubW06CisgICAgICAgIChKU01hbmFnZWRWYWx1ZUhhbmRsZU93bmVyOjppc1Jl
YWNoYWJsZUZyb21PcGFxdWVSb290cyk6CisgICAgICAgIChKU01hbmFnZWRWYWx1ZUhhbmRsZU93
bmVyOjpmaW5hbGl6ZSk6CisgICAgICAgICogYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNw
cDoKKyAgICAgICAgKEpTQzo6QnVpbHRpbkV4ZWN1dGFibGVzOjpmaW5hbGl6ZSk6CisgICAgICAg
ICogYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmg6CisgICAgICAgICogaGVhcC9IZWFwLmNw
cDoKKyAgICAgICAgKEpTQzo6SGVhcDo6YWRkRmluYWxpemVyKToKKyAgICAgICAgKEpTQzo6SGVh
cDo6RmluYWxpemVyT3duZXI6OmZpbmFsaXplKToKKyAgICAgICAgKiBoZWFwL0hlYXAuaDoKKyAg
ICAgICAgKiBoZWFwL1dlYWtCbG9jay5jcHA6CisgICAgICAgIChKU0M6OldlYWtCbG9jazo6dmlz
aXQpOgorICAgICAgICAoSlNDOjpXZWFrQmxvY2s6OnJlYXApOgorICAgICAgICAqIGhlYXAvV2Vh
a0hhbmRsZU93bmVyLmNwcDoKKyAgICAgICAgKEpTQzo6V2Vha0hhbmRsZU93bmVyOjppc1JlYWNo
YWJsZUZyb21PcGFxdWVSb290cyk6CisgICAgICAgIChKU0M6OldlYWtIYW5kbGVPd25lcjo6Zmlu
YWxpemUpOgorICAgICAgICAqIGhlYXAvV2Vha0hhbmRsZU93bmVyLmg6CisgICAgICAgICogaGVh
cC9XZWFrSW1wbC5oOgorICAgICAgICAoSlNDOjpXZWFrSW1wbDo6V2Vha0ltcGwpOgorICAgICAg
ICAoSlNDOjpXZWFrSW1wbDo6c3RhdGUpOgorICAgICAgICAoSlNDOjpXZWFrSW1wbDo6Y2VsbCk6
CisgICAgICAgIChKU0M6OldlYWtJbXBsOjphc1dlYWtJbXBsKToKKyAgICAgICAgKEpTQzo6V2Vh
a0ltcGw6OmpzVmFsdWUpOiBEZWxldGVkLgorICAgICAgICAqIGhlYXAvV2Vha0lubGluZXMuaDoK
KyAgICAgICAgKEpTQzo6V2VhazxUPjo6V2Vhayk6CisgICAgICAgIChKU0M6Oj4pOgorICAgICAg
ICAoSlNDOjpXZWFrPFQ+OjpvcGVyYXRvcik6CisgICAgICAgIChKU0M6OldlYWs8VD46OmdldCk6
CisgICAgICAgIChKU0M6OldlYWs8VD46Ondhcyk6CisgICAgICAgICogaGVhcC9XZWFrU2V0Lmg6
CisgICAgICAgICogaGVhcC9XZWFrU2V0SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpXZWFrU2V0
OjphbGxvY2F0ZSk6CisgICAgICAgIChKU0M6OldlYWtCbG9jazo6ZmluYWxpemUpOgorICAgICAg
ICAqIGppdC9KSVRUaHVua3MuY3BwOgorICAgICAgICAoSlNDOjpKSVRUaHVua3M6OmZpbmFsaXpl
KToKKyAgICAgICAgKiBqaXQvSklUVGh1bmtzLmg6CisgICAgICAgICoganNjLmNwcDoKKyAgICAg
ICAgKFdURjo6RWxlbWVudEhhbmRsZU93bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyk6
IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9KU0NlbGwuaDoKKyAgICAgICAgKEpTQzo6anND
YXN0KToKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cENhY2hlLmNwcDoKKyAgICAgICAgKEpTQzo6
UmVnRXhwQ2FjaGU6OmZpbmFsaXplKToKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cENhY2hlLmg6
CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmUuY3BwOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1
cmVUcmFuc2l0aW9uVGFibGU6OnNpbmdsZVRyYW5zaXRpb24pOgorICAgICAgICAoSlNDOjpTdHJ1
Y3R1cmVUcmFuc2l0aW9uVGFibGU6OnNldFNpbmdsZVRyYW5zaXRpb24pOgorCiAyMDE1LTA5LTA2
ICBTdWtvbHNhayBTYWtzaHV3b25nICA8c3Vrb2xzYWtAZ21haWwuY29tPgogCiAgICAgICAgIFNp
bXBsaWZ5IEpJVDo6ZW1pdF9vcF9tb2QoKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcAppbmRleCA5MzcwZTdlLi43ZWYxZGEz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1
dGFibGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4
ZWN1dGFibGVzLmNwcApAQCAtMTA4LDcgKzEwOCw3IEBAIFVubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlKiBCdWlsdGluRXhlY3V0YWJsZXM6OmNyZWF0ZUV4ZWN1dGFibGVJbnRlcm5hbChjb25zdCBT
CiAgICAgcmV0dXJuIGZ1bmN0aW9uRXhlY3V0YWJsZTsKIH0KIAotdm9pZCBCdWlsdGluRXhlY3V0
YWJsZXM6OmZpbmFsaXplKEhhbmRsZTxVbmtub3duPiwgdm9pZCogY29udGV4dCkKK3ZvaWQgQnVp
bHRpbkV4ZWN1dGFibGVzOjpmaW5hbGl6ZShKU0NlbGwqJiwgdm9pZCogY29udGV4dCkKIHsKICAg
ICBzdGF0aWNfY2FzdDxXZWFrPFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlPio+KGNvbnRleHQp
LT5jbGVhcigpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5z
L0J1aWx0aW5FeGVjdXRhYmxlcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1
aWx0aW5FeGVjdXRhYmxlcy5oCmluZGV4IDRlNDMyMjIuLjIzNDFjODggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmgKQEAgLTUz
LDcgKzUzLDcgQEAgY29uc3QgU291cmNlQ29kZSYgbmFtZSMjU291cmNlKCkgeyByZXR1cm4gbV8j
I25hbWUjI1NvdXJjZTsgfQogICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBjcmVhdGVE
ZWZhdWx0Q29uc3RydWN0b3IoQ29uc3RydWN0b3JLaW5kLCBjb25zdCBJZGVudGlmaWVyJiBuYW1l
KTsKIAogcHJpdmF0ZToKLSAgICB2b2lkIGZpbmFsaXplKEhhbmRsZTxVbmtub3duPiwgdm9pZCog
Y29udGV4dCkgb3ZlcnJpZGU7CisgICAgdm9pZCBmaW5hbGl6ZShKU0NlbGwqJiwgdm9pZCogY29u
dGV4dCkgb3ZlcnJpZGU7CiAKICAgICBWTSYgbV92bTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9I
ZWFwLmNwcAppbmRleCBkMTQ3YWZkLi42YmVlNjgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9IZWFwLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9I
ZWFwLmNwcApAQCAtMTM5OCwxNSArMTM5OCwxNCBAQCBib29sIEhlYXA6OmlzVmFsaWRBbGxvY2F0
aW9uKHNpemVfdCkKIAogdm9pZCBIZWFwOjphZGRGaW5hbGl6ZXIoSlNDZWxsKiBjZWxsLCBGaW5h
bGl6ZXIgZmluYWxpemVyKQogewotICAgIFdlYWtTZXQ6OmFsbG9jYXRlKGNlbGwsICZtX2ZpbmFs
aXplck93bmVyLCByZWludGVycHJldF9jYXN0PHZvaWQqPihmaW5hbGl6ZXIpKTsgLy8gQmFsYW5j
ZWQgYnkgRmluYWxpemVyT3duZXI6OmZpbmFsaXplKCkuCisgICAgV2Vha1NldDo6YWxsb2NhdGUo
KmNlbGwsICZtX2ZpbmFsaXplck93bmVyLCByZWludGVycHJldF9jYXN0PHZvaWQqPihmaW5hbGl6
ZXIpKTsgLy8gQmFsYW5jZWQgYnkgRmluYWxpemVyT3duZXI6OmZpbmFsaXplKCkuCiB9CiAKLXZv
aWQgSGVhcDo6RmluYWxpemVyT3duZXI6OmZpbmFsaXplKEhhbmRsZTxVbmtub3duPiBoYW5kbGUs
IHZvaWQqIGNvbnRleHQpCit2b2lkIEhlYXA6OkZpbmFsaXplck93bmVyOjpmaW5hbGl6ZShKU0Nl
bGwqJiBjZWxsLCB2b2lkKiBjb250ZXh0KQogewotICAgIEhhbmRsZVNsb3Qgc2xvdCA9IGhhbmRs
ZS5zbG90KCk7CiAgICAgRmluYWxpemVyIGZpbmFsaXplciA9IHJlaW50ZXJwcmV0X2Nhc3Q8Rmlu
YWxpemVyPihjb250ZXh0KTsKLSAgICBmaW5hbGl6ZXIoc2xvdC0+YXNDZWxsKCkpOwotICAgIFdl
YWtTZXQ6OmRlYWxsb2NhdGUoV2Vha0ltcGw6OmFzV2Vha0ltcGwoc2xvdCkpOworICAgIGZpbmFs
aXplcihjZWxsKTsKKyAgICBXZWFrU2V0OjpkZWFsbG9jYXRlKFdlYWtJbXBsOjphc1dlYWtJbXBs
KCZjZWxsKSk7CiB9CiAKIHZvaWQgSGVhcDo6YWRkRXhlY3V0YWJsZShFeGVjdXRhYmxlQmFzZSog
ZXhlY3V0YWJsZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAppbmRleCA0MGQxNTYwLi44NDA0
OTA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCkBAIC0yNjksOCArMjY5LDggQEAgcHJp
dmF0ZToKIAogICAgIHN0YXRpYyBjb25zdCBzaXplX3QgbWluRXh0cmFNZW1vcnkgPSAyNTY7CiAg
ICAgCi0gICAgY2xhc3MgRmluYWxpemVyT3duZXIgOiBwdWJsaWMgV2Vha0hhbmRsZU93bmVyIHsK
LSAgICAgICAgdmlydHVhbCB2b2lkIGZpbmFsaXplKEhhbmRsZTxVbmtub3duPiwgdm9pZCogY29u
dGV4dCkgb3ZlcnJpZGU7CisgICAgY2xhc3MgRmluYWxpemVyT3duZXIgZmluYWwgOiBwdWJsaWMg
V2Vha0hhbmRsZU93bmVyIHsKKyAgICAgICAgdm9pZCBmaW5hbGl6ZShKU0NlbGwqJiwgdm9pZCog
Y29udGV4dCkgb3ZlcnJpZGU7CiAgICAgfTsKIAogICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wg
aXNWYWxpZEFsbG9jYXRpb24oc2l6ZV90KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL1dlYWtCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9XZWFr
QmxvY2suY3BwCmluZGV4IDdjN2Q4NmMuLjEzZGRiYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL1dlYWtCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvV2Vha0Jsb2NrLmNwcApAQCAtMTEyLDE4ICsxMTIsMTcgQEAgdm9pZCBXZWFrQmxvY2s6
OnZpc2l0KEhlYXBSb290VmlzaXRvciYgaGVhcFJvb3RWaXNpdG9yKQogICAgICAgICBpZiAod2Vh
a0ltcGwtPnN0YXRlKCkgIT0gV2Vha0ltcGw6OkxpdmUpCiAgICAgICAgICAgICBjb250aW51ZTsK
IAotICAgICAgICBjb25zdCBKU1ZhbHVlJiBqc1ZhbHVlID0gd2Vha0ltcGwtPmpzVmFsdWUoKTsK
LSAgICAgICAgaWYgKG1fbWFya2VkQmxvY2stPmlzTWFya2VkT3JOZXdseUFsbG9jYXRlZChqc1Zh
bHVlLmFzQ2VsbCgpKSkKKyAgICAgICAgaWYgKG1fbWFya2VkQmxvY2stPmlzTWFya2VkT3JOZXds
eUFsbG9jYXRlZCh3ZWFrSW1wbC0+bV9jZWxsKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAg
ICAgICAgIFdlYWtIYW5kbGVPd25lciogd2Vha0hhbmRsZU93bmVyID0gd2Vha0ltcGwtPndlYWtI
YW5kbGVPd25lcigpOwogICAgICAgICBpZiAoIXdlYWtIYW5kbGVPd25lcikKICAgICAgICAgICAg
IGNvbnRpbnVlOwogCi0gICAgICAgIGlmICghd2Vha0hhbmRsZU93bmVyLT5pc1JlYWNoYWJsZUZy
b21PcGFxdWVSb290cyhIYW5kbGU8VW5rbm93bj46OndyYXBTbG90KCZjb25zdF9jYXN0PEpTVmFs
dWUmPihqc1ZhbHVlKSksIHdlYWtJbXBsLT5jb250ZXh0KCksIHZpc2l0b3IpKQorICAgICAgICBp
ZiAoIXdlYWtIYW5kbGVPd25lci0+aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoKndlYWtJbXBs
LT5tX2NlbGwsIHdlYWtJbXBsLT5jb250ZXh0KCksIHZpc2l0b3IpKQogICAgICAgICAgICAgY29u
dGludWU7CiAKLSAgICAgICAgaGVhcFJvb3RWaXNpdG9yLnZpc2l0KCZjb25zdF9jYXN0PEpTVmFs
dWUmPihqc1ZhbHVlKSk7CisgICAgICAgIGhlYXBSb290VmlzaXRvci52aXNpdCgmd2Vha0ltcGwt
Pm1fY2VsbCk7CiAgICAgfQogfQogCkBAIC0xNDQsNyArMTQzLDcgQEAgdm9pZCBXZWFrQmxvY2s6
OnJlYXAoKQogICAgICAgICBpZiAod2Vha0ltcGwtPnN0YXRlKCkgPiBXZWFrSW1wbDo6RGVhZCkK
ICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIGlmIChtX21hcmtlZEJsb2NrLT5pc01h
cmtlZE9yTmV3bHlBbGxvY2F0ZWQod2Vha0ltcGwtPmpzVmFsdWUoKS5hc0NlbGwoKSkpIHsKKyAg
ICAgICAgaWYgKG1fbWFya2VkQmxvY2stPmlzTWFya2VkT3JOZXdseUFsbG9jYXRlZCh3ZWFrSW1w
bC0+Y2VsbCgpKSkgewogICAgICAgICAgICAgQVNTRVJUKHdlYWtJbXBsLT5zdGF0ZSgpID09IFdl
YWtJbXBsOjpMaXZlKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9XZWFrSGFuZGxlT3duZXIuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvV2Vha0hhbmRsZU93bmVyLmNwcAppbmRleCAwNDQ1MThm
Li5kZmY5MWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9XZWFrSGFu
ZGxlT3duZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1dlYWtIYW5kbGVP
d25lci5jcHAKQEAgLTM3LDEyICszNywxMiBAQCBXZWFrSGFuZGxlT3duZXI6On5XZWFrSGFuZGxl
T3duZXIoKQogewogfQogCi1ib29sIFdlYWtIYW5kbGVPd25lcjo6aXNSZWFjaGFibGVGcm9tT3Bh
cXVlUm9vdHMoSGFuZGxlPFVua25vd24+LCB2b2lkKiwgU2xvdFZpc2l0b3ImKQorYm9vbCBXZWFr
SGFuZGxlT3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQ2VsbCYsIHZvaWQqLCBT
bG90VmlzaXRvciYpCiB7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIFdlYWtIYW5kbGVP
d25lcjo6ZmluYWxpemUoSGFuZGxlPFVua25vd24+LCB2b2lkKikKK3ZvaWQgV2Vha0hhbmRsZU93
bmVyOjpmaW5hbGl6ZShKU0NlbGwqJiwgdm9pZCopCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1dlYWtIYW5kbGVPd25lci5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvV2Vha0hhbmRsZU93bmVyLmgKaW5kZXggNjMwNGRkMi4uMzFhMTc2ZiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvV2Vha0hhbmRsZU93bmVyLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvV2Vha0hhbmRsZU93bmVyLmgKQEAgLTM1LDgg
KzM1LDggQEAgY2xhc3MgU2xvdFZpc2l0b3I7CiBjbGFzcyBKU19FWFBPUlRfUFJJVkFURSBXZWFr
SGFuZGxlT3duZXIgewogcHVibGljOgogICAgIHZpcnR1YWwgfldlYWtIYW5kbGVPd25lcigpOwot
ICAgIHZpcnR1YWwgYm9vbCBpc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhIYW5kbGU8VW5rbm93
bj4sIHZvaWQqIGNvbnRleHQsIFNsb3RWaXNpdG9yJik7Ci0gICAgdmlydHVhbCB2b2lkIGZpbmFs
aXplKEhhbmRsZTxVbmtub3duPiwgdm9pZCogY29udGV4dCk7CisgICAgdmlydHVhbCBib29sIGlz
UmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQ2VsbCYsIHZvaWQqIGNvbnRleHQsIFNsb3RWaXNp
dG9yJik7CisgICAgdmlydHVhbCB2b2lkIGZpbmFsaXplKEpTQ2VsbComLCB2b2lkKiBjb250ZXh0
KTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvV2Vha0ltcGwuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1dlYWtJ
bXBsLmgKaW5kZXggY2E5M2ZiMi4uOTNlMmQ0ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvV2Vha0ltcGwuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9X
ZWFrSW1wbC5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAxNSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTQ2LDQwICs0NiwzOSBAQCBwdWJsaWM6CiAgICAgfTsKIAogICAgIFdlYWtJbXBs
KCk7Ci0gICAgV2Vha0ltcGwoSlNWYWx1ZSwgV2Vha0hhbmRsZU93bmVyKiwgdm9pZCogY29udGV4
dCk7CisgICAgV2Vha0ltcGwoSlNDZWxsJiwgV2Vha0hhbmRsZU93bmVyKiwgdm9pZCogY29udGV4
dCk7CiAKLSAgICBTdGF0ZSBzdGF0ZSgpOworICAgIFN0YXRlIHN0YXRlKCkgY29uc3Q7CiAgICAg
dm9pZCBzZXRTdGF0ZShTdGF0ZSk7CiAKLSAgICBjb25zdCBKU1ZhbHVlJiBqc1ZhbHVlKCk7Cisg
ICAgSlNDZWxsKiBjZWxsKCk7CiAgICAgV2Vha0hhbmRsZU93bmVyKiB3ZWFrSGFuZGxlT3duZXIo
KTsKICAgICB2b2lkKiBjb250ZXh0KCk7CiAKLSAgICBzdGF0aWMgV2Vha0ltcGwqIGFzV2Vha0lt
cGwoSlNWYWx1ZSopOworICAgIHN0YXRpYyBXZWFrSW1wbCogYXNXZWFrSW1wbChKU0NlbGwqKik7
CiAKIHByaXZhdGU6Ci0gICAgY29uc3QgSlNWYWx1ZSBtX2pzVmFsdWU7Ci0gICAgV2Vha0hhbmRs
ZU93bmVyKiBtX3dlYWtIYW5kbGVPd25lcjsKLSAgICB2b2lkKiBtX2NvbnRleHQ7CisgICAgZnJp
ZW5kIGNsYXNzIFdlYWtCbG9jazsKKworICAgIEpTQ2VsbCogbV9jZWxsIHsgbnVsbHB0ciB9Owor
ICAgIFdlYWtIYW5kbGVPd25lciogbV93ZWFrSGFuZGxlT3duZXIgeyBudWxscHRyIH07CisgICAg
dm9pZCogbV9jb250ZXh0IHsgbnVsbHB0ciB9OwogfTsKIAogaW5saW5lIFdlYWtJbXBsOjpXZWFr
SW1wbCgpCi0gICAgOiBtX3dlYWtIYW5kbGVPd25lcigwKQotICAgICwgbV9jb250ZXh0KDApCiB7
CiAgICAgc2V0U3RhdGUoRGVhbGxvY2F0ZWQpOwogfQogCi1pbmxpbmUgV2Vha0ltcGw6OldlYWtJ
bXBsKEpTVmFsdWUganNWYWx1ZSwgV2Vha0hhbmRsZU93bmVyKiB3ZWFrSGFuZGxlT3duZXIsIHZv
aWQqIGNvbnRleHQpCi0gICAgOiBtX2pzVmFsdWUoanNWYWx1ZSkKK2lubGluZSBXZWFrSW1wbDo6
V2Vha0ltcGwoSlNDZWxsJiBjZWxsLCBXZWFrSGFuZGxlT3duZXIqIHdlYWtIYW5kbGVPd25lciwg
dm9pZCogY29udGV4dCkKKyAgICA6IG1fY2VsbCgmY2VsbCkKICAgICAsIG1fd2Vha0hhbmRsZU93
bmVyKHdlYWtIYW5kbGVPd25lcikKICAgICAsIG1fY29udGV4dChjb250ZXh0KQogewogICAgIEFT
U0VSVChzdGF0ZSgpID09IExpdmUpOwotICAgIEFTU0VSVChtX2pzVmFsdWUgJiYgbV9qc1ZhbHVl
LmlzQ2VsbCgpKTsKIH0KIAotaW5saW5lIFdlYWtJbXBsOjpTdGF0ZSBXZWFrSW1wbDo6c3RhdGUo
KQoraW5saW5lIFdlYWtJbXBsOjpTdGF0ZSBXZWFrSW1wbDo6c3RhdGUoKSBjb25zdAogewogICAg
IHJldHVybiBzdGF0aWNfY2FzdDxTdGF0ZT4ocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KG1f
d2Vha0hhbmRsZU93bmVyKSAmIFN0YXRlTWFzayk7CiB9CkBAIC05MCw5ICs4OSw5IEBAIGlubGlu
ZSB2b2lkIFdlYWtJbXBsOjpzZXRTdGF0ZShXZWFrSW1wbDo6U3RhdGUgc3RhdGUpCiAgICAgbV93
ZWFrSGFuZGxlT3duZXIgPSByZWludGVycHJldF9jYXN0PFdlYWtIYW5kbGVPd25lcio+KChyZWlu
dGVycHJldF9jYXN0PHVpbnRwdHJfdD4obV93ZWFrSGFuZGxlT3duZXIpICYgflN0YXRlTWFzaykg
fCBzdGF0ZSk7CiB9CiAKLWlubGluZSBjb25zdCBKU1ZhbHVlJiBXZWFrSW1wbDo6anNWYWx1ZSgp
CitpbmxpbmUgSlNDZWxsKiBXZWFrSW1wbDo6Y2VsbCgpCiB7Ci0gICAgcmV0dXJuIG1fanNWYWx1
ZTsKKyAgICByZXR1cm4gbV9jZWxsOwogfQogCiBpbmxpbmUgV2Vha0hhbmRsZU93bmVyKiBXZWFr
SW1wbDo6d2Vha0hhbmRsZU93bmVyKCkKQEAgLTEwNSw5ICsxMDQsOSBAQCBpbmxpbmUgdm9pZCog
V2Vha0ltcGw6OmNvbnRleHQoKQogICAgIHJldHVybiBtX2NvbnRleHQ7CiB9CiAKLWlubGluZSBX
ZWFrSW1wbCogV2Vha0ltcGw6OmFzV2Vha0ltcGwoSlNWYWx1ZSogc2xvdCkKK2lubGluZSBXZWFr
SW1wbCogV2Vha0ltcGw6OmFzV2Vha0ltcGwoSlNDZWxsKiogc2xvdCkKIHsKLSAgICByZXR1cm4g
cmVpbnRlcnByZXRfY2FzdF9wdHI8V2Vha0ltcGwqPihyZWludGVycHJldF9jYXN0X3B0cjxjaGFy
Kj4oc2xvdCkgKyBPQkpFQ1RfT0ZGU0VUT0YoV2Vha0ltcGwsIG1fanNWYWx1ZSkpOworICAgIHJl
dHVybiByZWludGVycHJldF9jYXN0X3B0cjxXZWFrSW1wbCo+KHJlaW50ZXJwcmV0X2Nhc3RfcHRy
PGNoYXIqPihzbG90KSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvV2Vha0lubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL1dlYWtJbmxpbmVzLmgKaW5kZXggZmJkMzUyMC4uMGZkMzBkYyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvV2Vha0lubGluZXMuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9XZWFrSW5saW5lcy5oCkBAIC0zNCw4ICszNCw5IEBACiBuYW1l
c3BhY2UgSlNDIHsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIFdlYWs8VD46OldlYWso
VCogY2VsbCwgV2Vha0hhbmRsZU93bmVyKiB3ZWFrT3duZXIsIHZvaWQqIGNvbnRleHQpCi0gICAg
OiBtX2ltcGwoY2VsbCA/IFdlYWtTZXQ6OmFsbG9jYXRlKGNlbGwsIHdlYWtPd25lciwgY29udGV4
dCkgOiAwKQorICAgIDogbV9pbXBsKGNlbGwgPyBXZWFrU2V0OjphbGxvY2F0ZSgqY2VsbCwgd2Vh
a093bmVyLCBjb250ZXh0KSA6IDApCiB7CisgICAgc3RhdGljX2Fzc2VydCgoc3RkOjppc19jb252
ZXJ0aWJsZTxULCBKU0NlbGw+Ojp2YWx1ZSksICJKU0M6OldlYWsgY2FuIG9ubHkgYmUgdXNlZCB3
aXRoIGNlbGwgdHlwZXMuIik7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBib29s
IFdlYWs8VD46OmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkgY29uc3QKQEAgLTczLDMwICs3NCwz
MCBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgYXV0byBXZWFrPFQ+OjpvcGVyYXRvcj0o
V2VhayYmIG90aGVyKSAtPiBXZWFrJgogdGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIFQqIFdl
YWs8VD46Om9wZXJhdG9yLT4oKSBjb25zdAogewogICAgIEFTU0VSVChtX2ltcGwgJiYgbV9pbXBs
LT5zdGF0ZSgpID09IFdlYWtJbXBsOjpMaXZlKTsKLSAgICByZXR1cm4ganNDYXN0PFQqPihtX2lt
cGwtPmpzVmFsdWUoKS5hc0NlbGwoKSk7CisgICAgcmV0dXJuIGpzQ2FzdDxUKj4obV9pbXBsLT5j
ZWxsKCkpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgVCYgV2VhazxUPjo6b3Bl
cmF0b3IqKCkgY29uc3QKIHsKICAgICBBU1NFUlQobV9pbXBsICYmIG1faW1wbC0+c3RhdGUoKSA9
PSBXZWFrSW1wbDo6TGl2ZSk7Ci0gICAgcmV0dXJuICpqc0Nhc3Q8VCo+KG1faW1wbC0+anNWYWx1
ZSgpLmFzQ2VsbCgpKTsKKyAgICByZXR1cm4gKmpzQ2FzdDxUKj4obV9pbXBsLT5jZWxsKCkpOwog
fQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgVCogV2VhazxUPjo6Z2V0KCkgY29uc3QK
IHsKICAgICBpZiAoIW1faW1wbCB8fCBtX2ltcGwtPnN0YXRlKCkgIT0gV2Vha0ltcGw6OkxpdmUp
CiAgICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiBqc0Nhc3Q8VCo+KG1faW1wbC0+anNWYWx1
ZSgpLmFzQ2VsbCgpKTsKKyAgICByZXR1cm4ganNDYXN0PFQqPihtX2ltcGwtPmNlbGwoKSk7CiB9
CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBib29sIFdlYWs8VD46OndhcyhUKiBvdGhl
cikgY29uc3QKIHsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VCo+KG1faW1wbC0+anNWYWx1ZSgp
LmFzQ2VsbCgpKSA9PSBvdGhlcjsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VCo+KG1faW1wbC0+
Y2VsbCgpKSA9PSBvdGhlcjsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIGJvb2wg
V2VhazxUPjo6b3BlcmF0b3IhKCkgY29uc3QKIHsKLSAgICByZXR1cm4gIW1faW1wbCB8fCAhbV9p
bXBsLT5qc1ZhbHVlKCkgfHwgbV9pbXBsLT5zdGF0ZSgpICE9IFdlYWtJbXBsOjpMaXZlOworICAg
IHJldHVybiAhbV9pbXBsIHx8ICFtX2ltcGwtPmNlbGwoKSB8fCBtX2ltcGwtPnN0YXRlKCkgIT0g
V2Vha0ltcGw6OkxpdmU7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBXZWFrPFQ+
OjpvcGVyYXRvciBib29sKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL1dlYWtTZXQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1dlYWtTZXQuaApp
bmRleCBkYmRlNTEwLi4zOTUwY2ZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9XZWFrU2V0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvV2Vha1NldC5o
CkBAIC0zOCw3ICszOCw3IEBAIGNsYXNzIFdlYWtTZXQgewogICAgIGZyaWVuZCBjbGFzcyBMTElu
dE9mZnNldHNFeHRyYWN0b3I7CiAKIHB1YmxpYzoKLSAgICBzdGF0aWMgV2Vha0ltcGwqIGFsbG9j
YXRlKEpTVmFsdWUsIFdlYWtIYW5kbGVPd25lciogPSAwLCB2b2lkKiBjb250ZXh0ID0gMCk7Cisg
ICAgc3RhdGljIFdlYWtJbXBsKiBhbGxvY2F0ZShKU0NlbGwmLCBXZWFrSGFuZGxlT3duZXIqID0g
MCwgdm9pZCogY29udGV4dCA9IDApOwogICAgIHN0YXRpYyB2b2lkIGRlYWxsb2NhdGUoV2Vha0lt
cGwqKTsKIAogICAgIFdlYWtTZXQoVk0qLCBNYXJrZWRCbG9jayYpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvV2Vha1NldElubGluZXMuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL1dlYWtTZXRJbmxpbmVzLmgKaW5kZXggZjIzOTIyNC4uOTRjYjAxMiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvV2Vha1NldElubGluZXMuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9XZWFrU2V0SW5saW5lcy5oCkBAIC0zMCwxNiAr
MzAsMTYgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLWlubGluZSBXZWFrSW1wbCogV2Vha1NldDo6
YWxsb2NhdGUoSlNWYWx1ZSBqc1ZhbHVlLCBXZWFrSGFuZGxlT3duZXIqIHdlYWtIYW5kbGVPd25l
ciwgdm9pZCogY29udGV4dCkKK2lubGluZSBXZWFrSW1wbCogV2Vha1NldDo6YWxsb2NhdGUoSlND
ZWxsJiBjZWxsLCBXZWFrSGFuZGxlT3duZXIqIHdlYWtIYW5kbGVPd25lciwgdm9pZCogY29udGV4
dCkKIHsKLSAgICBXZWFrU2V0JiB3ZWFrU2V0ID0gTWFya2VkQmxvY2s6OmJsb2NrRm9yKGpzVmFs
dWUuYXNDZWxsKCkpLT53ZWFrU2V0KCk7CisgICAgV2Vha1NldCYgd2Vha1NldCA9IE1hcmtlZEJs
b2NrOjpibG9ja0ZvcigmY2VsbCktPndlYWtTZXQoKTsKICAgICBXZWFrQmxvY2s6OkZyZWVDZWxs
KiBhbGxvY2F0b3IgPSB3ZWFrU2V0Lm1fYWxsb2NhdG9yOwogICAgIGlmIChVTkxJS0VMWSghYWxs
b2NhdG9yKSkKICAgICAgICAgYWxsb2NhdG9yID0gd2Vha1NldC5maW5kQWxsb2NhdG9yKCk7CiAg
ICAgd2Vha1NldC5tX2FsbG9jYXRvciA9IGFsbG9jYXRvci0+bmV4dDsKIAogICAgIFdlYWtJbXBs
KiB3ZWFrSW1wbCA9IFdlYWtCbG9jazo6YXNXZWFrSW1wbChhbGxvY2F0b3IpOwotICAgIHJldHVy
biBuZXcgKE5vdE51bGwsIHdlYWtJbXBsKSBXZWFrSW1wbChqc1ZhbHVlLCB3ZWFrSGFuZGxlT3du
ZXIsIGNvbnRleHQpOworICAgIHJldHVybiBuZXcgKE5vdE51bGwsIHdlYWtJbXBsKSBXZWFrSW1w
bChjZWxsLCB3ZWFrSGFuZGxlT3duZXIsIGNvbnRleHQpOwogfQogCiBpbmxpbmUgdm9pZCBXZWFr
QmxvY2s6OmZpbmFsaXplKFdlYWtJbXBsKiB3ZWFrSW1wbCkKQEAgLTQ5LDcgKzQ5LDcgQEAgaW5s
aW5lIHZvaWQgV2Vha0Jsb2NrOjpmaW5hbGl6ZShXZWFrSW1wbCogd2Vha0ltcGwpCiAgICAgV2Vh
a0hhbmRsZU93bmVyKiB3ZWFrSGFuZGxlT3duZXIgPSB3ZWFrSW1wbC0+d2Vha0hhbmRsZU93bmVy
KCk7CiAgICAgaWYgKCF3ZWFrSGFuZGxlT3duZXIpCiAgICAgICAgIHJldHVybjsKLSAgICB3ZWFr
SGFuZGxlT3duZXItPmZpbmFsaXplKEhhbmRsZTxVbmtub3duPjo6d3JhcFNsb3QoJmNvbnN0X2Nh
c3Q8SlNWYWx1ZSY+KHdlYWtJbXBsLT5qc1ZhbHVlKCkpKSwgd2Vha0ltcGwtPmNvbnRleHQoKSk7
CisgICAgd2Vha0hhbmRsZU93bmVyLT5maW5hbGl6ZSh3ZWFrSW1wbC0+bV9jZWxsLCB3ZWFrSW1w
bC0+Y29udGV4dCgpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFRodW5rcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVFRodW5rcy5jcHAKaW5kZXggZmE2MTA0NC4uZmYwZmJmMCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRUaHVua3MuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUVGh1bmtzLmNwcApAQCAtNzYsOSArNzYsOSBAQCBNYWNyb0Fzc2Vt
YmxlckNvZGVSZWYgSklUVGh1bmtzOjpjdGlTdHViKFZNKiB2bSwgVGh1bmtHZW5lcmF0b3IgZ2Vu
ZXJhdG9yKQogICAgIHJldHVybiBlbnRyeS5pdGVyYXRvci0+dmFsdWU7CiB9CiAKLXZvaWQgSklU
VGh1bmtzOjpmaW5hbGl6ZShIYW5kbGU8VW5rbm93bj4gaGFuZGxlLCB2b2lkKikKK3ZvaWQgSklU
VGh1bmtzOjpmaW5hbGl6ZShKU0NlbGwqJiBjZWxsLCB2b2lkKikKIHsKLSAgICBhdXRvKiBuYXRp
dmVFeGVjdXRhYmxlID0ganNDYXN0PE5hdGl2ZUV4ZWN1dGFibGUqPihoYW5kbGUuZ2V0KCkuYXND
ZWxsKCkpOworICAgIGF1dG8qIG5hdGl2ZUV4ZWN1dGFibGUgPSBqc0Nhc3Q8TmF0aXZlRXhlY3V0
YWJsZSo+KGNlbGwpOwogICAgIHdlYWtSZW1vdmUoKm1faG9zdEZ1bmN0aW9uU3R1Yk1hcCwgc3Rk
OjptYWtlX3BhaXIobmF0aXZlRXhlY3V0YWJsZS0+ZnVuY3Rpb24oKSwgbmF0aXZlRXhlY3V0YWJs
ZS0+Y29uc3RydWN0b3IoKSksIG5hdGl2ZUV4ZWN1dGFibGUpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFRodW5rcy5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRUaHVua3MuaAppbmRleCAyZTAyODgzLi4wNWFmOTg4IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFRodW5rcy5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUVGh1bmtzLmgKQEAgLTYzLDcgKzYzLDcgQEAgcHVibGljOgogICAgIHZv
aWQgY2xlYXJIb3N0RnVuY3Rpb25TdHVicygpOwogCiBwcml2YXRlOgotICAgIHZvaWQgZmluYWxp
emUoSGFuZGxlPFVua25vd24+LCB2b2lkKiBjb250ZXh0KSBvdmVycmlkZTsKKyAgICB2b2lkIGZp
bmFsaXplKEpTQ2VsbComLCB2b2lkKiBjb250ZXh0KSBvdmVycmlkZTsKICAgICAKICAgICB0eXBl
ZGVmIEhhc2hNYXA8VGh1bmtHZW5lcmF0b3IsIE1hY3JvQXNzZW1ibGVyQ29kZVJlZj4gQ1RJU3R1
Yk1hcDsKICAgICBDVElTdHViTWFwIG1fY3RpU3R1Yk1hcDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qc2MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKaW5k
ZXggOGZhNDRiMS4uMDdjNzA4ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pz
Yy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKQEAgLTE3NiwxMiArMTc2
LDEyIEBAIHByaXZhdGU6CiAgICAgV3JpdGVCYXJyaWVyPFJvb3Q+IG1fcm9vdDsKIH07CiAKLWNs
YXNzIEVsZW1lbnRIYW5kbGVPd25lciA6IHB1YmxpYyBXZWFrSGFuZGxlT3duZXIgeworY2xhc3Mg
RWxlbWVudEhhbmRsZU93bmVyIGZpbmFsIDogcHVibGljIFdlYWtIYW5kbGVPd25lciB7CiBwdWJs
aWM6Ci0gICAgdmlydHVhbCBib29sIGlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEhhbmRsZTxK
U0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCosIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQorICAgIHZp
cnR1YWwgYm9vbCBpc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0NlbGwmIGNlbGwsIHZvaWQq
LCBTbG90VmlzaXRvciYgdmlzaXRvcikKICAgICB7Ci0gICAgICAgIEVsZW1lbnQqIGVsZW1lbnQg
PSBqc0Nhc3Q8RWxlbWVudCo+KGhhbmRsZS5zbG90KCktPmFzQ2VsbCgpKTsKLSAgICAgICAgcmV0
dXJuIHZpc2l0b3IuY29udGFpbnNPcGFxdWVSb290KGVsZW1lbnQtPnJvb3QoKSk7CisgICAgICAg
IGF1dG8mIGVsZW1lbnQgPSBqc0Nhc3Q8RWxlbWVudCY+KGNlbGwpOworICAgICAgICByZXR1cm4g
dmlzaXRvci5jb250YWluc09wYXF1ZVJvb3QoZWxlbWVudC5yb290KCkpOwogICAgIH0KIH07CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgKaW5kZXggNmQ2NDhhZC4uMzgxNTVj
ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgKQEAgLTI0NSw2ICsyNDUs
MTMgQEAgcHJpdmF0ZToKIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFRvLCB0eXBlbmFtZSBGcm9t
PgoraW5saW5lIFRvJiBqc0Nhc3QoRnJvbSYgZnJvbSkKK3sKKyAgICBBU1NFUlRfV0lUSF9TRUNV
UklUWV9JTVBMSUNBVElPTihmcm9tLkpTQ2VsbDo6aW5oZXJpdHMoc3RkOjpyZW1vdmVfcmVmZXJl
bmNlPFRvPjo6dHlwZTo6aW5mbygpKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFRvJj4oZnJv
bSk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFRvLCB0eXBlbmFtZSBGcm9tPgogaW5saW5lIFRv
IGpzQ2FzdChGcm9tKiBmcm9tKQogewogICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FU
SU9OKCFmcm9tIHx8IGZyb20tPkpTQ2VsbDo6aW5oZXJpdHMoc3RkOjpyZW1vdmVfcG9pbnRlcjxU
bz46OnR5cGU6OmluZm8oKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUmVnRXhwQ2FjaGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVn
RXhwQ2FjaGUuY3BwCmluZGV4IDhmNDY2MGEuLjI3YTNmZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENhY2hlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9SZWdFeHBDYWNoZS5jcHAKQEAgLTU2LDkgKzU2LDkgQEAgUmVnRXhw
Q2FjaGU6OlJlZ0V4cENhY2hlKFZNKiB2bSkKIHsKIH0KIAotdm9pZCBSZWdFeHBDYWNoZTo6Zmlu
YWxpemUoSGFuZGxlPFVua25vd24+IGhhbmRsZSwgdm9pZCopCit2b2lkIFJlZ0V4cENhY2hlOjpm
aW5hbGl6ZShKU0NlbGwqJiBjZWxsLCB2b2lkKikKIHsKLSAgICBSZWdFeHAqIHJlZ0V4cCA9IHN0
YXRpY19jYXN0PFJlZ0V4cCo+KGhhbmRsZS5nZXQoKS5hc0NlbGwoKSk7CisgICAgUmVnRXhwKiBy
ZWdFeHAgPSBqc0Nhc3Q8UmVnRXhwKj4oY2VsbCk7CiAgICAgd2Vha1JlbW92ZShtX3dlYWtDYWNo
ZSwgcmVnRXhwLT5rZXkoKSwgcmVnRXhwKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ2FjaGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1JlZ0V4cENhY2hlLmgKaW5kZXggOTQyZjNkYy4uZmUwNGQ1NCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ2FjaGUuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDYWNoZS5oCkBAIC01NCw3ICs1NCw3IEBAIHBy
aXZhdGU6CiAKICAgICBzdGF0aWMgY29uc3QgaW50IG1heFN0cm9uZ0NhY2hlYWJsZUVudHJpZXMg
PSAzMjsKIAotICAgIHZpcnR1YWwgdm9pZCBmaW5hbGl6ZShIYW5kbGU8VW5rbm93bj4sIHZvaWQq
IGNvbnRleHQpIG92ZXJyaWRlOworICAgIHZvaWQgZmluYWxpemUoSlNDZWxsKiYsIHZvaWQqIGNv
bnRleHQpIG92ZXJyaWRlOwogCiAgICAgUmVnRXhwKiBsb29rdXBPckNyZWF0ZShjb25zdCBXVEY6
OlN0cmluZyYgcGF0dGVyblN0cmluZywgUmVnRXhwRmxhZ3MpOwogICAgIHZvaWQgYWRkVG9TdHJv
bmdDYWNoZShSZWdFeHAqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N0cnVjdHVyZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1
cmUuY3BwCmluZGV4IDI4ZjhkNDgwLi5lM2RjNzZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKQEAgLTYyLDcgKzYyLDcgQEAgc3RhdGljIEhhc2hTZXQ8
U3RydWN0dXJlKj4mIGxpdmVTdHJ1Y3R1cmVTZXQgPSAqKG5ldyBIYXNoU2V0PFN0cnVjdHVyZSo+
KTsKICNlbmRpZgogCiBjbGFzcyBTaW5nbGVTbG90VHJhbnNpdGlvbldlYWtPd25lciBmaW5hbCA6
IHB1YmxpYyBXZWFrSGFuZGxlT3duZXIgewotICAgIHZvaWQgZmluYWxpemUoSGFuZGxlPFVua25v
d24+LCB2b2lkKiBjb250ZXh0KSBvdmVycmlkZQorICAgIHZvaWQgZmluYWxpemUoSlNDZWxsKiYs
IHZvaWQqIGNvbnRleHQpIG92ZXJyaWRlCiAgICAgewogICAgICAgICBTdHJ1Y3R1cmVUcmFuc2l0
aW9uVGFibGUqIHRhYmxlID0gcmVpbnRlcnByZXRfY2FzdDxTdHJ1Y3R1cmVUcmFuc2l0aW9uVGFi
bGUqPihjb250ZXh0KTsKICAgICAgICAgQVNTRVJUKHRhYmxlLT5pc1VzaW5nU2luZ2xlU2xvdCgp
KTsKQEAgLTgyLDcgKzgyLDcgQEAgaW5saW5lIFN0cnVjdHVyZSogU3RydWN0dXJlVHJhbnNpdGlv
blRhYmxlOjpzaW5nbGVUcmFuc2l0aW9uKCkgY29uc3QKICAgICBBU1NFUlQoaXNVc2luZ1Npbmds
ZVNsb3QoKSk7CiAgICAgaWYgKFdlYWtJbXBsKiBpbXBsID0gdGhpcy0+d2Vha0ltcGwoKSkgewog
ICAgICAgICBpZiAoaW1wbC0+c3RhdGUoKSA9PSBXZWFrSW1wbDo6TGl2ZSkKLSAgICAgICAgICAg
IHJldHVybiBqc0Nhc3Q8U3RydWN0dXJlKj4oaW1wbC0+anNWYWx1ZSgpLmFzQ2VsbCgpKTsKKyAg
ICAgICAgICAgIHJldHVybiBqc0Nhc3Q8U3RydWN0dXJlKj4oaW1wbC0+Y2VsbCgpKTsKICAgICB9
CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CkBAIC05Miw3ICs5Miw3IEBAIGlubGluZSB2b2lkIFN0
cnVjdHVyZVRyYW5zaXRpb25UYWJsZTo6c2V0U2luZ2xlVHJhbnNpdGlvbihTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSkKICAgICBBU1NFUlQoaXNVc2luZ1NpbmdsZVNsb3QoKSk7CiAgICAgaWYgKFdlYWtJ
bXBsKiBpbXBsID0gdGhpcy0+d2Vha0ltcGwoKSkKICAgICAgICAgV2Vha1NldDo6ZGVhbGxvY2F0
ZShpbXBsKTsKLSAgICBXZWFrSW1wbCogaW1wbCA9IFdlYWtTZXQ6OmFsbG9jYXRlKHN0cnVjdHVy
ZSwgJnNpbmdsZVNsb3RUcmFuc2l0aW9uV2Vha093bmVyKCksIHRoaXMpOworICAgIFdlYWtJbXBs
KiBpbXBsID0gV2Vha1NldDo6YWxsb2NhdGUoKnN0cnVjdHVyZSwgJnNpbmdsZVNsb3RUcmFuc2l0
aW9uV2Vha093bmVyKCksIHRoaXMpOwogICAgIG1fZGF0YSA9IHJlaW50ZXJwcmV0X2Nhc3Q8aW50
cHRyX3Q+KGltcGwpIHwgVXNpbmdTaW5nbGVTbG90RmxhZzsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDMw
MGQzNTAuLmYxZGQ4NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMTIgQEAKKzIwMTUtMDktMDgg
IEFuZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgorCisgICAgICAgIFtKU0NdIFdlYWsg
c2hvdWxkIG9ubHkgYWNjZXB0IGNlbGwgcG9pbnRlZXMuCisgICAgICAgIDxodHRwczovL3dlYmtp
dC5vcmcvYi8xNDg5NTU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVXBkYXRlIFdlYkNvcmUgYmluZGluZ3MgZm9yIHRoZSBuZXcgV2VhayBhbmQgV2Vh
ay1yZWxhdGVkIHNpZ25hdHVyZXMuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0NTU1J1bGVM
aXN0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTQ1NTUnVsZUxpc3RPd25lcjo6aXNS
ZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ1NTVmFs
dWVDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNDU1NWYWx1ZU93bmVyOjppc1JlYWNo
YWJsZUZyb21PcGFxdWVSb290cyk6CisgICAgICAgIChXZWJDb3JlOjpKU0NTU1ZhbHVlT3duZXI6
OmZpbmFsaXplKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0NhbGxiYWNrRGF0YS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpKU0NhbGxiYWNrRGF0YVdlYWs6OldlYWtPd25lcjo6aXNSZWFjaGFi
bGVGcm9tT3BhcXVlUm9vdHMpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ2FsbGJhY2tEYXRh
Lmg6CisgICAgICAgICogYmluZGluZ3MvanMvSlNNdXRhdGlvbk9ic2VydmVyQ3VzdG9tLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkpTTXV0YXRpb25PYnNlcnZlck93bmVyOjppc1JlYWNoYWJsZUZy
b21PcGFxdWVSb290cyk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNOb2RlQ3VzdG9tLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmlzUmVhY2hhYmxlRnJvbURPTSk6CisgICAgICAgIChXZWJDb3Jl
OjpKU05vZGVPd25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMpOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTTm9kZUxpc3RDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNOb2Rl
TGlzdE93bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyk6CisgICAgICAgICogYmluZGlu
Z3MvanMvSlNUZXh0VHJhY2tDdWVDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXh0
VHJhY2tDdWVPd25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMpOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL1dlYkNvcmVUeXBlZEFycmF5Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpXZWJDb3JlVHlwZWRBcnJheUNvbnRyb2xsZXI6OkpTQXJyYXlCdWZmZXJPd25lcjo6aXNS
ZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29yZVR5cGVk
QXJyYXlDb250cm9sbGVyOjpKU0FycmF5QnVmZmVyT3duZXI6OmZpbmFsaXplKToKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9XZWJDb3JlVHlwZWRBcnJheUNvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKEdlbmVyYXRlSGVh
ZGVyKToKKyAgICAgICAgKEdlbmVyYXRlSW1wbGVtZW50YXRpb24pOgorICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RBY3RpdmVET01PYmplY3QuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SlNUZXN0QWN0aXZlRE9NT2JqZWN0T3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1
ZVJvb3RzKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEFjdGl2ZURPTU9iamVjdE93bmVyOjpm
aW5hbGl6ZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEFjdGl2
ZURPTU9iamVjdC5oOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RD
dXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpKU1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdE93bmVyOjpp
c1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RDdXN0
b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdE93bmVyOjpmaW5hbGl6ZSk6CisgICAg
ICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0
aE5vSW50ZXJmYWNlT2JqZWN0Lmg6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdEN1c3RvbU5hbWVkR2V0dGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEN1
c3RvbU5hbWVkR2V0dGVyT3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkpTVGVzdEN1c3RvbU5hbWVkR2V0dGVyT3duZXI6OmZpbmFsaXplKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIu
aDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1
Y3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RFdmVudENvbnN0cnVjdG9yT3duZXI6
OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEV2
ZW50Q29uc3RydWN0b3JPd25lcjo6ZmluYWxpemUpOgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RFdmVudENvbnN0cnVjdG9yLmg6CisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkpTVGVzdEV2ZW50VGFyZ2V0T3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKToKKyAg
ICAgICAgKFdlYkNvcmU6OkpTVGVzdEV2ZW50VGFyZ2V0T3duZXI6OmZpbmFsaXplKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQuaDoKKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXhjZXB0aW9uLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkpTVGVzdEV4Y2VwdGlvbk93bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVS
b290cyk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RFeGNlcHRpb25Pd25lcjo6ZmluYWxpemUp
OgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFeGNlcHRpb24uaDoK
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2VuZXJhdGVJc1JlYWNo
YWJsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlT3du
ZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVz
dEdlbmVyYXRlSXNSZWFjaGFibGVPd25lcjo6ZmluYWxpemUpOgorICAgICAgICAqIGJpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlLmg6CisgICAgICAgICog
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpKU1Rlc3RJbnRlcmZhY2VPd25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMp
OgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0SW50ZXJmYWNlT3duZXI6OmZpbmFsaXplKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmg6CisgICAg
ICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVu
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lck93
bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rl
c3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyT3duZXI6OmZpbmFsaXplKToKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5oOgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZENvbnN0cnVjdG9yLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkQ29uc3RydWN0b3JPd25lcjo6aXNSZWFj
aGFibGVGcm9tT3BhcXVlUm9vdHMpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRDb25z
dHJ1Y3Rvck93bmVyOjpmaW5hbGl6ZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE5hbWVkQ29uc3RydWN0b3IuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0Tm9uZGV0ZXJtaW5pc3RpYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpK
U1Rlc3ROb25kZXRlcm1pbmlzdGljT3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKToK
KyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5vbmRldGVybWluaXN0aWNPd25lcjo6ZmluYWxpemUp
OgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb25kZXRlcm1pbmlz
dGljLmg6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RPYmpPd25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVl
Um9vdHMpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0T2JqT3duZXI6OmZpbmFsaXplKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmg6CisgICAgICAgICog
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc093bmVyOjpp
c1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzT3duZXI6OmZpbmFsaXplKToKKyAgICAgICAgKiBiaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5oOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVycmlkZUJ1aWx0aW5zLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkpTVGVzdE92ZXJyaWRlQnVpbHRpbnNPd25lcjo6aXNSZWFjaGFibGVG
cm9tT3BhcXVlUm9vdHMpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0T3ZlcnJpZGVCdWlsdGlu
c093bmVyOjpmaW5hbGl6ZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE92ZXJyaWRlQnVpbHRpbnMuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZU93bmVyOjppc1JlYWNo
YWJsZUZyb21PcGFxdWVSb290cyk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RTZXJpYWxpemVk
U2NyaXB0VmFsdWVJbnRlcmZhY2VPd25lcjo6ZmluYWxpemUpOgorICAgICAgICAqIGJpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuaDoK
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SlNUZXN0VHlwZWRlZnNPd25lcjo6aXNSZWFjaGFibGVGcm9tT3Bh
cXVlUm9vdHMpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0VHlwZWRlZnNPd25lcjo6ZmluYWxp
emUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5o
OgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU2F0dHJpYnV0ZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpKU2F0dHJpYnV0ZU93bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVS
b290cyk6CisgICAgICAgIChXZWJDb3JlOjpKU2F0dHJpYnV0ZU93bmVyOjpmaW5hbGl6ZSk6Cisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTYXR0cmlidXRlLmg6CisgICAgICAg
ICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTcmVhZG9ubHkuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SlNyZWFkb25seU93bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyk6CisgICAg
ICAgIChXZWJDb3JlOjpKU3JlYWRvbmx5T3duZXI6OmZpbmFsaXplKToKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNyZWFkb25seS5oOgorICAgICAgICAqIGJyaWRnZS9ydW50
aW1lX3Jvb3QuY3BwOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6Um9vdE9iamVjdDo6ZmluYWxp
emUpOgorICAgICAgICAqIGJyaWRnZS9ydW50aW1lX3Jvb3QuaDoKKwogMjAxNS0wOS0wNSAgSmFl
aHVuIExpbSAgPGxqYWVodW4ubGltQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFJlbW92ZSB1bnVz
ZWQgbWFjcm9zIGZyb20gU3R5bGVSZXNvbHZlci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTQ1NTUnVsZUxpc3RDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNDU1NSdWxlTGlzdEN1c3RvbS5jcHAKaW5kZXggODllOTkyMS4uNmRiZTRj
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDU1NSdWxlTGlzdEN1
c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDU1NSdWxlTGlzdEN1
c3RvbS5jcHAKQEAgLTM2LDE0ICszNiwxNCBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLWJvb2wgSlNDU1NSdWxlTGlzdE93bmVyOjppc1JlYWNoYWJsZUZy
b21PcGFxdWVSb290cyhKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCosIFNs
b3RWaXNpdG9yJiB2aXNpdG9yKQorYm9vbCBKU0NTU1J1bGVMaXN0T3duZXI6OmlzUmVhY2hhYmxl
RnJvbU9wYXF1ZVJvb3RzKEpTQzo6SlNDZWxsJiBjZWxsLCB2b2lkKiwgU2xvdFZpc2l0b3ImIHZp
c2l0b3IpCiB7Ci0gICAgSlNDU1NSdWxlTGlzdCoganNDU1NSdWxlTGlzdCA9IGpzQ2FzdDxKU0NT
U1J1bGVMaXN0Kj4oaGFuZGxlLnNsb3QoKS0+YXNDZWxsKCkpOwotICAgIGlmICghanNDU1NSdWxl
TGlzdC0+aGFzQ3VzdG9tUHJvcGVydGllcygpKQorICAgIGF1dG8mIGpzQ1NTUnVsZUxpc3QgPSBq
c0Nhc3Q8SlNDU1NSdWxlTGlzdCY+KGNlbGwpOworICAgIGlmICghanNDU1NSdWxlTGlzdC5oYXND
dXN0b21Qcm9wZXJ0aWVzKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoQ1NTU3R5
bGVTaGVldCogc3R5bGVTaGVldCA9IGpzQ1NTUnVsZUxpc3QtPmltcGwoKS5zdHlsZVNoZWV0KCkp
CisgICAgaWYgKENTU1N0eWxlU2hlZXQqIHN0eWxlU2hlZXQgPSBqc0NTU1J1bGVMaXN0LmltcGwo
KS5zdHlsZVNoZWV0KCkpCiAgICAgICAgIHJldHVybiB2aXNpdG9yLmNvbnRhaW5zT3BhcXVlUm9v
dChyb290KHN0eWxlU2hlZXQpKTsKLSAgICBpZiAoQ1NTUnVsZSogY3NzUnVsZSA9IGpzQ1NTUnVs
ZUxpc3QtPmltcGwoKS5pdGVtKDApKQorICAgIGlmIChDU1NSdWxlKiBjc3NSdWxlID0ganNDU1NS
dWxlTGlzdC5pbXBsKCkuaXRlbSgwKSkKICAgICAgICAgcmV0dXJuIHZpc2l0b3IuY29udGFpbnNP
cGFxdWVSb290KHJvb3QoY3NzUnVsZSkpOwogICAgIHJldHVybiBmYWxzZTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NTVmFsdWVDdXN0b20uY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDU1NWYWx1ZUN1c3RvbS5jcHAKaW5kZXggZWQ1MTI1
My4uYzVlYjg0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDU1NW
YWx1ZUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDU1NWYWx1
ZUN1c3RvbS5jcHAKQEAgLTQ0LDI0ICs0NCwyNCBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLWJvb2wgSlNDU1NWYWx1ZU93bmVyOjppc1JlYWNoYWJsZUZy
b21PcGFxdWVSb290cyhKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCogY29u
dGV4dCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCitib29sIEpTQ1NTVmFsdWVPd25lcjo6aXNSZWFj
aGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpKU0NlbGwmIGNlbGwsIHZvaWQqIGNvbnRleHQsIFNs
b3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAgIEpTQ1NTVmFsdWUqIGpzQ1NTVmFsdWUgPSBqc0Nh
c3Q8SlNDU1NWYWx1ZSo+KGhhbmRsZS5zbG90KCktPmFzQ2VsbCgpKTsKLSAgICBpZiAoIWpzQ1NT
VmFsdWUtPmhhc0N1c3RvbVByb3BlcnRpZXMoKSkKKyAgICBhdXRvJiBqc0NTU1ZhbHVlID0ganND
YXN0PEpTQ1NTVmFsdWUmPihjZWxsKTsKKyAgICBpZiAoIWpzQ1NTVmFsdWUuaGFzQ3VzdG9tUHJv
cGVydGllcygpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgRE9NV3JhcHBlcldvcmxkKiB3
b3JsZCA9IHN0YXRpY19jYXN0PERPTVdyYXBwZXJXb3JsZCo+KGNvbnRleHQpOwotICAgIHZvaWQq
IHJvb3QgPSB3b3JsZC0+bV9jc3NWYWx1ZVJvb3RzLmdldCgmanNDU1NWYWx1ZS0+aW1wbCgpKTsK
KyAgICBET01XcmFwcGVyV29ybGQmIHdvcmxkID0gKnN0YXRpY19jYXN0PERPTVdyYXBwZXJXb3Js
ZCo+KGNvbnRleHQpOworICAgIHZvaWQqIHJvb3QgPSB3b3JsZC5tX2Nzc1ZhbHVlUm9vdHMuZ2V0
KCZqc0NTU1ZhbHVlLmltcGwoKSk7CiAgICAgaWYgKCFyb290KQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgcmV0dXJuIHZpc2l0b3IuY29udGFpbnNPcGFxdWVSb290KHJvb3QpOwogfQogCi12
b2lkIEpTQ1NTVmFsdWVPd25lcjo6ZmluYWxpemUoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBo
YW5kbGUsIHZvaWQqIGNvbnRleHQpCit2b2lkIEpTQ1NTVmFsdWVPd25lcjo6ZmluYWxpemUoSlND
OjpKU0NlbGwqJiBjZWxsLCB2b2lkKiBjb250ZXh0KQogewotICAgIEpTQ1NTVmFsdWUqIGpzQ1NT
VmFsdWUgPSBqc0Nhc3Q8SlNDU1NWYWx1ZSo+KGhhbmRsZS5zbG90KCktPmFzQ2VsbCgpKTsKKyAg
ICBhdXRvJiBqc0NTU1ZhbHVlID0ganNDYXN0PEpTQ1NTVmFsdWUmPigqY2VsbCk7CiAgICAgRE9N
V3JhcHBlcldvcmxkJiB3b3JsZCA9ICpzdGF0aWNfY2FzdDxET01XcmFwcGVyV29ybGQqPihjb250
ZXh0KTsKLSAgICB3b3JsZC5tX2Nzc1ZhbHVlUm9vdHMucmVtb3ZlKCZqc0NTU1ZhbHVlLT5pbXBs
KCkpOwotICAgIHVuY2FjaGVXcmFwcGVyKHdvcmxkLCAmanNDU1NWYWx1ZS0+aW1wbCgpLCBqc0NT
U1ZhbHVlKTsKKyAgICB3b3JsZC5tX2Nzc1ZhbHVlUm9vdHMucmVtb3ZlKCZqc0NTU1ZhbHVlLmlt
cGwoKSk7CisgICAgdW5jYWNoZVdyYXBwZXIod29ybGQsICZqc0NTU1ZhbHVlLmltcGwoKSwgJmpz
Q1NTVmFsdWUpOwogfQogCiBKU1ZhbHVlIHRvSlMoRXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ1NTVmFsdWUqIHZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNDYWxsYmFja0RhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNDYWxsYmFja0RhdGEuY3BwCmluZGV4IDZkNDBhNDcuLmVhM2RmOTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2FsbGJhY2tEYXRhLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NhbGxiYWNrRGF0YS5jcHAKQEAgLTkwLDcg
KzkwLDcgQEAgSlNWYWx1ZSBKU0NhbGxiYWNrRGF0YTo6aW52b2tlQ2FsbGJhY2soSlNPYmplY3Qq
IGNhbGxiYWNrLCBNYXJrZWRBcmd1bWVudEJ1ZmZlciYKICAgICByZXR1cm4gcmVzdWx0OwogfQog
Ci1ib29sIEpTQ2FsbGJhY2tEYXRhV2Vhazo6V2Vha093bmVyOjppc1JlYWNoYWJsZUZyb21PcGFx
dWVSb290cyhKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+LCB2b2lkKiBjb250ZXh0LCBTbG90Vmlz
aXRvciYgdmlzaXRvcikKK2Jvb2wgSlNDYWxsYmFja0RhdGFXZWFrOjpXZWFrT3duZXI6OmlzUmVh
Y2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SlNDZWxsJiwgdm9pZCogY29udGV4dCwgU2xvdFZp
c2l0b3ImIHZpc2l0b3IpCiB7CiAgICAgcmV0dXJuIHZpc2l0b3IuY29udGFpbnNPcGFxdWVSb290
KGNvbnRleHQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlND
YWxsYmFja0RhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2FsbGJhY2tEYXRh
LmgKaW5kZXggN2FjZjkyMWYuLjAyMDcxNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTQ2FsbGJhY2tEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNDYWxsYmFja0RhdGEuaApAQCAtMTA1LDggKzEwNSw4IEBAIHB1YmxpYzoKICAgICB9CiAK
IHByaXZhdGU6Ci0gICAgY2xhc3MgV2Vha093bmVyIDogcHVibGljIEpTQzo6V2Vha0hhbmRsZU93
bmVyIHsKLSAgICAgICAgdmlydHVhbCBib29sIGlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpT
Qzo6SGFuZGxlPEpTQzo6VW5rbm93bj4sIHZvaWQqIGNvbnRleHQsIEpTQzo6U2xvdFZpc2l0b3Im
KTsKKyAgICBjbGFzcyBXZWFrT3duZXIgZmluYWwgOiBwdWJsaWMgSlNDOjpXZWFrSGFuZGxlT3du
ZXIgeworICAgICAgICBib29sIGlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SlNDZWxs
Jiwgdm9pZCogY29udGV4dCwgSlNDOjpTbG90VmlzaXRvciYpIG92ZXJyaWRlOwogICAgIH07CiAg
ICAgV2Vha093bmVyIG1fd2Vha093bmVyOwogICAgIEpTQzo6V2VhazxKU0M6OkpTT2JqZWN0PiBt
X2NhbGxiYWNrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNdXRh
dGlvbk9ic2VydmVyQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTXV0
YXRpb25PYnNlcnZlckN1c3RvbS5jcHAKaW5kZXggMzgwNTU3Mi4uY2E2YjFlMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNdXRhdGlvbk9ic2VydmVyQ3VzdG9tLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU011dGF0aW9uT2JzZXJ2ZXJDdXN0
b20uY3BwCkBAIC02MSw5ICs2MSw5IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29u
c3RydWN0SlNNdXRhdGlvbk9ic2VydmVyKEV4ZWNTdGF0ZSogZXhlYykKICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzT2JzZXJ2ZXIpOwogfQogCi1ib29sIEpTTXV0YXRpb25PYnNlcnZlck93
bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+
IGhhbmRsZSwgdm9pZCosIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQorYm9vbCBKU011dGF0aW9uT2Jz
ZXJ2ZXJPd25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpKU0NlbGwmIGNlbGws
IHZvaWQqLCBTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBNdXRhdGlvbk9ic2VydmVyJiBv
YnNlcnZlciA9IGpzQ2FzdDxKU011dGF0aW9uT2JzZXJ2ZXIqPihoYW5kbGUuc2xvdCgpLT5hc0Nl
bGwoKSktPmltcGwoKTsKKyAgICBNdXRhdGlvbk9ic2VydmVyJiBvYnNlcnZlciA9IGpzQ2FzdDxK
U011dGF0aW9uT2JzZXJ2ZXImPihjZWxsKS5pbXBsKCk7CiAgICAgYXV0byBvYnNlcnZlZE5vZGVz
ID0gb2JzZXJ2ZXIuZ2V0T2JzZXJ2ZWROb2RlcygpOwogICAgIGZvciAoYXV0byBpdCA9IG9ic2Vy
dmVkTm9kZXMuYmVnaW4oKSwgZW5kID0gb2JzZXJ2ZWROb2Rlcy5lbmQoKTsgaXQgIT0gZW5kOyAr
K2l0KSB7CiAgICAgICAgIGlmICh2aXNpdG9yLmNvbnRhaW5zT3BhcXVlUm9vdChyb290KCppdCkp
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlQ3VzdG9tLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUN1c3RvbS5jcHAKaW5kZXggNmQ0
YzgxZC4uZjkyMmUxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNO
b2RlQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVDdXN0
b20uY3BwCkBAIC03NSwxMSArNzUsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBu
YW1lc3BhY2UgSFRNTE5hbWVzOwogCi1zdGF0aWMgaW5saW5lIGJvb2wgaXNSZWFjaGFibGVGcm9t
RE9NKE5vZGUqIG5vZGUsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQorc3RhdGljIGlubGluZSBib29s
IGlzUmVhY2hhYmxlRnJvbURPTShOb2RlJiBub2RlLCBTbG90VmlzaXRvciYgdmlzaXRvcikKIHsK
LSAgICBpZiAoIW5vZGUtPmluRG9jdW1lbnQoKSkgewotICAgICAgICBpZiAoaXM8RWxlbWVudD4o
Km5vZGUpKSB7Ci0gICAgICAgICAgICBhdXRvJiBlbGVtZW50ID0gZG93bmNhc3Q8RWxlbWVudD4o
Km5vZGUpOworICAgIGlmICghbm9kZS5pbkRvY3VtZW50KCkpIHsKKyAgICAgICAgaWYgKGlzPEVs
ZW1lbnQ+KG5vZGUpKSB7CisgICAgICAgICAgICBhdXRvJiBlbGVtZW50ID0gZG93bmNhc3Q8RWxl
bWVudD4obm9kZSk7CiAKICAgICAgICAgICAgIC8vIElmIGEgd3JhcHBlciBpcyB0aGUgbGFzdCBy
ZWZlcmVuY2UgdG8gYW4gaW1hZ2UgZWxlbWVudAogICAgICAgICAgICAgLy8gdGhhdCBpcyBsb2Fk
aW5nIGJ1dCBub3QgaW4gdGhlIGRvY3VtZW50LCB0aGUgd3JhcHBlciBpcyBvYnNlcnZhYmxlCkBA
IC0xMDAsMTcgKzEwMCwxNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNSZWFjaGFibGVGcm9tRE9N
KE5vZGUqIG5vZGUsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogCiAgICAgICAgIC8vIElmIGEgbm9k
ZSBpcyBmaXJpbmcgZXZlbnQgbGlzdGVuZXJzLCBpdHMgd3JhcHBlciBpcyBvYnNlcnZhYmxlIGJl
Y2F1c2UKICAgICAgICAgLy8gaXRzIHdyYXBwZXIgaXMgcmVzcG9uc2libGUgZm9yIG1hcmtpbmcg
dGhvc2UgZXZlbnQgbGlzdGVuZXJzLgotICAgICAgICBpZiAobm9kZS0+aXNGaXJpbmdFdmVudExp
c3RlbmVycygpKQorICAgICAgICBpZiAobm9kZS5pc0ZpcmluZ0V2ZW50TGlzdGVuZXJzKCkpCiAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICByZXR1cm4gdmlzaXRvci5jb250
YWluc09wYXF1ZVJvb3Qocm9vdChub2RlKSk7CisgICAgcmV0dXJuIHZpc2l0b3IuY29udGFpbnNP
cGFxdWVSb290KHJvb3QoJm5vZGUpKTsKIH0KIAotYm9vbCBKU05vZGVPd25lcjo6aXNSZWFjaGFi
bGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQq
LCBTbG90VmlzaXRvciYgdmlzaXRvcikKK2Jvb2wgSlNOb2RlT3duZXI6OmlzUmVhY2hhYmxlRnJv
bU9wYXF1ZVJvb3RzKEpTQzo6SlNDZWxsJiBjZWxsLCB2b2lkKiwgU2xvdFZpc2l0b3ImIHZpc2l0
b3IpCiB7Ci0gICAgSlNOb2RlKiBqc05vZGUgPSBqc0Nhc3Q8SlNOb2RlKj4oaGFuZGxlLnNsb3Qo
KS0+YXNDZWxsKCkpOwotICAgIHJldHVybiBpc1JlYWNoYWJsZUZyb21ET00oJmpzTm9kZS0+aW1w
bCgpLCB2aXNpdG9yKTsKKyAgICBhdXRvJiBqc05vZGUgPSBqc0Nhc3Q8SlNOb2RlJj4oY2VsbCk7
CisgICAgcmV0dXJuIGlzUmVhY2hhYmxlRnJvbURPTShqc05vZGUuaW1wbCgpLCB2aXNpdG9yKTsK
IH0KIAogSlNWYWx1ZSBKU05vZGU6Omluc2VydEJlZm9yZShFeGVjU3RhdGUqIGV4ZWMpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVMaXN0Q3VzdG9tLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUxpc3RDdXN0b20uY3BwCmluZGV4IDdm
MDJlMjQuLjkwZDcxZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
Tm9kZUxpc3RDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9k
ZUxpc3RDdXN0b20uY3BwCkBAIC0zNywxNyArMzcsMTcgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1ib29sIEpTTm9kZUxpc3RPd25lcjo6aXNSZWFjaGFi
bGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQq
LCBTbG90VmlzaXRvciYgdmlzaXRvcikKK2Jvb2wgSlNOb2RlTGlzdE93bmVyOjppc1JlYWNoYWJs
ZUZyb21PcGFxdWVSb290cyhKU0M6OkpTQ2VsbCYgY2VsbCwgdm9pZCosIFNsb3RWaXNpdG9yJiB2
aXNpdG9yKQogewotICAgIEpTTm9kZUxpc3QqIGpzTm9kZUxpc3QgPSBqc0Nhc3Q8SlNOb2RlTGlz
dCo+KGhhbmRsZS5zbG90KCktPmFzQ2VsbCgpKTsKLSAgICBpZiAoIWpzTm9kZUxpc3QtPmhhc0N1
c3RvbVByb3BlcnRpZXMoKSkKKyAgICBhdXRvJiBqc05vZGVMaXN0ID0ganNDYXN0PEpTTm9kZUxp
c3QmPihjZWxsKTsKKyAgICBpZiAoIWpzTm9kZUxpc3QuaGFzQ3VzdG9tUHJvcGVydGllcygpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKGpzTm9kZUxpc3QtPmltcGwoKS5pc0xpdmVO
b2RlTGlzdCgpKQotICAgICAgICByZXR1cm4gdmlzaXRvci5jb250YWluc09wYXF1ZVJvb3Qocm9v
dChzdGF0aWNfY2FzdDxMaXZlTm9kZUxpc3QmPihqc05vZGVMaXN0LT5pbXBsKCkpLm93bmVyTm9k
ZSgpKSk7Ci0gICAgaWYgKGpzTm9kZUxpc3QtPmltcGwoKS5pc0NoaWxkTm9kZUxpc3QoKSkKLSAg
ICAgICAgcmV0dXJuIHZpc2l0b3IuY29udGFpbnNPcGFxdWVSb290KHJvb3Qoc3RhdGljX2Nhc3Q8
Q2hpbGROb2RlTGlzdCY+KGpzTm9kZUxpc3QtPmltcGwoKSkub3duZXJOb2RlKCkpKTsKLSAgICBp
ZiAoanNOb2RlTGlzdC0+aW1wbCgpLmlzRW1wdHlOb2RlTGlzdCgpKQotICAgICAgICByZXR1cm4g
dmlzaXRvci5jb250YWluc09wYXF1ZVJvb3Qocm9vdChzdGF0aWNfY2FzdDxFbXB0eU5vZGVMaXN0
Jj4oanNOb2RlTGlzdC0+aW1wbCgpKS5vd25lck5vZGUoKSkpOworICAgIGlmIChqc05vZGVMaXN0
LmltcGwoKS5pc0xpdmVOb2RlTGlzdCgpKQorICAgICAgICByZXR1cm4gdmlzaXRvci5jb250YWlu
c09wYXF1ZVJvb3Qocm9vdChzdGF0aWNfY2FzdDxMaXZlTm9kZUxpc3QmPihqc05vZGVMaXN0Lmlt
cGwoKSkub3duZXJOb2RlKCkpKTsKKyAgICBpZiAoanNOb2RlTGlzdC5pbXBsKCkuaXNDaGlsZE5v
ZGVMaXN0KCkpCisgICAgICAgIHJldHVybiB2aXNpdG9yLmNvbnRhaW5zT3BhcXVlUm9vdChyb290
KHN0YXRpY19jYXN0PENoaWxkTm9kZUxpc3QmPihqc05vZGVMaXN0LmltcGwoKSkub3duZXJOb2Rl
KCkpKTsKKyAgICBpZiAoanNOb2RlTGlzdC5pbXBsKCkuaXNFbXB0eU5vZGVMaXN0KCkpCisgICAg
ICAgIHJldHVybiB2aXNpdG9yLmNvbnRhaW5zT3BhcXVlUm9vdChyb290KHN0YXRpY19jYXN0PEVt
cHR5Tm9kZUxpc3QmPihqc05vZGVMaXN0LmltcGwoKSkub3duZXJOb2RlKCkpKTsKICAgICByZXR1
cm4gZmFsc2U7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
VGV4dFRyYWNrQ3VlQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVGV4
dFRyYWNrQ3VlQ3VzdG9tLmNwcAppbmRleCA1N2Y4OGI5Li5kNWMxN2RjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1RleHRUcmFja0N1ZUN1c3RvbS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNUZXh0VHJhY2tDdWVDdXN0b20uY3BwCkBAIC0z
OCwxMCArMzgsMTAgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1ib29sIEpTVGV4dFRyYWNrQ3VlT3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3Rz
KEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkKiwgU2xvdFZpc2l0b3ImIHZp
c2l0b3IpCitib29sIEpTVGV4dFRyYWNrQ3VlT3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJv
b3RzKEpTQzo6SlNDZWxsJiBjZWxsLCB2b2lkKiwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0g
ICAgSlNUZXh0VHJhY2tDdWUqIGpzVGV4dFRyYWNrQ3VlID0ganNDYXN0PEpTVGV4dFRyYWNrQ3Vl
Kj4oaGFuZGxlLnNsb3QoKS0+YXNDZWxsKCkpOwotICAgIFRleHRUcmFja0N1ZSYgdGV4dFRyYWNr
Q3VlID0ganNUZXh0VHJhY2tDdWUtPmltcGwoKTsKKyAgICBhdXRvJiBqc1RleHRUcmFja0N1ZSA9
IGpzQ2FzdDxKU1RleHRUcmFja0N1ZSY+KGNlbGwpOworICAgIFRleHRUcmFja0N1ZSYgdGV4dFRy
YWNrQ3VlID0ganNUZXh0VHJhY2tDdWUuaW1wbCgpOwogCiAgICAgLy8gSWYgdGhlIGN1ZSBpcyBm
aXJpbmcgZXZlbnQgbGlzdGVuZXJzLCBpdHMgd3JhcHBlciBpcyByZWFjaGFibGUgYmVjYXVzZQog
ICAgIC8vIHRoZSB3cmFwcGVyIGlzIHJlc3BvbnNpYmxlIGZvciBtYXJraW5nIHRob3NlIGV2ZW50
IGxpc3RlbmVycy4KQEAgLTQ5LDcgKzQ5LDcgQEAgYm9vbCBKU1RleHRUcmFja0N1ZU93bmVyOjpp
c1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGgKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAKICAgICAvLyBJZiB0aGUgY3VlIGhhcyBubyBldmVudCBsaXN0
ZW5lcnMgYW5kIGhhcyBubyBjdXN0b20gcHJvcGVydGllcywgaXQgaXMgbm90IHJlYWNoYWJsZS4K
LSAgICBpZiAoIXRleHRUcmFja0N1ZS5oYXNFdmVudExpc3RlbmVycygpICYmICFqc1RleHRUcmFj
a0N1ZS0+aGFzQ3VzdG9tUHJvcGVydGllcygpKQorICAgIGlmICghdGV4dFRyYWNrQ3VlLmhhc0V2
ZW50TGlzdGVuZXJzKCkgJiYgIWpzVGV4dFRyYWNrQ3VlLmhhc0N1c3RvbVByb3BlcnRpZXMoKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgLy8gSWYgdGhlIGN1ZSBpcyBub3QgYXNzb2Np
YXRlZCB3aXRoIGEgdHJhY2ssIGl0IGlzIG5vdCByZWFjaGFibGUuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlVHlwZWRBcnJheUNvbnRyb2xsZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZVR5cGVkQXJyYXlDb250cm9sbGVyLmNw
cAppbmRleCAxMTA2OTI5Li5mYWI3MzU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9XZWJDb3JlVHlwZWRBcnJheUNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVUeXBlZEFycmF5Q29udHJvbGxlci5jcHAKQEAgLTQ3LDE3
ICs0NywxNyBAQCBKU0M6OkpTQXJyYXlCdWZmZXIqIFdlYkNvcmVUeXBlZEFycmF5Q29udHJvbGxl
cjo6dG9KUyhKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIEpTQwogICAgIHJldHVybiBKU0M6OmpzQ2Fz
dDxKU0M6OkpTQXJyYXlCdWZmZXIqPihXZWJDb3JlOjp0b0pTKHN0YXRlLCBKU0M6OmpzQ2FzdDxK
U0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCksIGJ1ZmZlcikpOwogfQogCi1ib29sIFdl
YkNvcmVUeXBlZEFycmF5Q29udHJvbGxlcjo6SlNBcnJheUJ1ZmZlck93bmVyOjppc1JlYWNoYWJs
ZUZyb21PcGFxdWVSb290cyhKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCos
IEpTQzo6U2xvdFZpc2l0b3ImIHZpc2l0b3IpCitib29sIFdlYkNvcmVUeXBlZEFycmF5Q29udHJv
bGxlcjo6SlNBcnJheUJ1ZmZlck93bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6
OkpTQ2VsbCYgY2VsbCwgdm9pZCosIEpTQzo6U2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAg
YXV0byYgd3JhcHBlciA9ICpKU0M6OmpzQ2FzdDxKU0M6OkpTQXJyYXlCdWZmZXIqPihoYW5kbGUu
c2xvdCgpLT5hc0NlbGwoKSk7CisgICAgYXV0byYgd3JhcHBlciA9IEpTQzo6anNDYXN0PEpTQzo6
SlNBcnJheUJ1ZmZlciY+KGNlbGwpOwogICAgIGlmICghd3JhcHBlci5oYXNDdXN0b21Qcm9wZXJ0
aWVzKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICByZXR1cm4gdmlzaXRvci5jb250YWlu
c09wYXF1ZVJvb3Qod3JhcHBlci5pbXBsKCkpOwogfQogCi12b2lkIFdlYkNvcmVUeXBlZEFycmF5
Q29udHJvbGxlcjo6SlNBcnJheUJ1ZmZlck93bmVyOjpmaW5hbGl6ZShKU0M6OkhhbmRsZTxKU0M6
OlVua25vd24+IGhhbmRsZSwgdm9pZCogY29udGV4dCkKK3ZvaWQgV2ViQ29yZVR5cGVkQXJyYXlD
b250cm9sbGVyOjpKU0FycmF5QnVmZmVyT3duZXI6OmZpbmFsaXplKEpTQzo6SlNDZWxsKiYgY2Vs
bCwgdm9pZCogY29udGV4dCkKIHsKLSAgICBhdXRvJiB3cmFwcGVyID0gKnN0YXRpY19jYXN0PEpT
Qzo6SlNBcnJheUJ1ZmZlcio+KGhhbmRsZS5zbG90KCktPmFzQ2VsbCgpKTsKKyAgICBhdXRvJiB3
cmFwcGVyID0gc3RhdGljX2Nhc3Q8SlNDOjpKU0FycmF5QnVmZmVyJj4oKmNlbGwpOwogICAgIGF1
dG8mIGJ1ZmZlciA9ICp3cmFwcGVyLmltcGwoKTsKICAgICB1bmNhY2hlV3JhcHBlcigqc3RhdGlj
X2Nhc3Q8RE9NV3JhcHBlcldvcmxkKj4oY29udGV4dCksICZidWZmZXIsICZ3cmFwcGVyKTsKICAg
ICBidWZmZXIuZGVyZWYoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1dlYkNvcmVUeXBlZEFycmF5Q29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvV2ViQ29yZVR5cGVkQXJyYXlDb250cm9sbGVyLmgKaW5kZXggN2UwNDRjNC4uYzkwOTljZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZVR5cGVkQXJyYXlD
b250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZVR5cGVk
QXJyYXlDb250cm9sbGVyLmgKQEAgLTM1LDcgKzM1LDcgQEAgY2xhc3MgV2Vha0hhbmRsZU93bmVy
OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFdlYkNvcmVUeXBlZEFycmF5Q29udHJv
bGxlciA6IHB1YmxpYyBKU0M6OlR5cGVkQXJyYXlDb250cm9sbGVyIHsKK2NsYXNzIFdlYkNvcmVU
eXBlZEFycmF5Q29udHJvbGxlciBmaW5hbCA6IHB1YmxpYyBKU0M6OlR5cGVkQXJyYXlDb250cm9s
bGVyIHsKIHB1YmxpYzoKICAgICBXZWJDb3JlVHlwZWRBcnJheUNvbnRyb2xsZXIoKTsKICAgICB2
aXJ0dWFsIH5XZWJDb3JlVHlwZWRBcnJheUNvbnRyb2xsZXIoKTsKQEAgLTQ1LDEwICs0NSwxMCBA
QCBwdWJsaWM6CiAgICAgSlNDOjpXZWFrSGFuZGxlT3duZXIqIHdyYXBwZXJPd25lcigpIHsgcmV0
dXJuICZtX293bmVyOyB9CiAKIHByaXZhdGU6Ci0gICAgY2xhc3MgSlNBcnJheUJ1ZmZlck93bmVy
IDogcHVibGljIEpTQzo6V2Vha0hhbmRsZU93bmVyIHsKKyAgICBjbGFzcyBKU0FycmF5QnVmZmVy
T3duZXIgZmluYWwgOiBwdWJsaWMgSlNDOjpXZWFrSGFuZGxlT3duZXIgewogICAgIHB1YmxpYzoK
LSAgICAgICAgdmlydHVhbCBib29sIGlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFu
ZGxlPEpTQzo6VW5rbm93bj4sIHZvaWQqIGNvbnRleHQsIEpTQzo6U2xvdFZpc2l0b3ImKSBvdmVy
cmlkZTsKLSAgICAgICAgdmlydHVhbCB2b2lkIGZpbmFsaXplKEpTQzo6SGFuZGxlPEpTQzo6VW5r
bm93bj4sIHZvaWQqIGNvbnRleHQpIG92ZXJyaWRlOworICAgICAgICBib29sIGlzUmVhY2hhYmxl
RnJvbU9wYXF1ZVJvb3RzKEpTQzo6SlNDZWxsJiwgdm9pZCogY29udGV4dCwgSlNDOjpTbG90Vmlz
aXRvciYpIG92ZXJyaWRlOworICAgICAgICB2b2lkIGZpbmFsaXplKEpTQzo6SlNDZWxsKiYsIHZv
aWQqIGNvbnRleHQpIG92ZXJyaWRlOwogICAgIH07CiAKICAgICBKU0FycmF5QnVmZmVyT3duZXIg
bV9vd25lcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29k
ZUdlbmVyYXRvckpTLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2Vu
ZXJhdG9ySlMucG0KaW5kZXggZDA4ZGFhNy4uMDNjZWRmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAgLTExOTEsOCArMTE5
MSw4IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogICAgICAgICB9CiAgICAgICAgICRoZWFkZXJJbmNs
dWRlc3siPHd0Zi9OZXZlckRlc3Ryb3llZC5oPiJ9ID0gMTsKICAgICAgICAgcHVzaChAaGVhZGVy
Q29udGVudCwgInB1YmxpYzpcbiIpOwotICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAg
IHZpcnR1YWwgYm9vbCBpc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6OkhhbmRsZTxKU0M6
OlVua25vd24+LCB2b2lkKiBjb250ZXh0LCBKU0M6OlNsb3RWaXNpdG9yJik7XG4iKTsKLSAgICAg
ICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICB2aXJ0dWFsIHZvaWQgZmluYWxpemUoSlNDOjpI
YW5kbGU8SlNDOjpVbmtub3duPiwgdm9pZCogY29udGV4dCk7XG4iKTsKKyAgICAgICAgcHVzaChA
aGVhZGVyQ29udGVudCwgIiAgICBib29sIGlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6
SlNDZWxsJiwgdm9pZCogY29udGV4dCwgSlNDOjpTbG90VmlzaXRvciYpIG92ZXJyaWRlO1xuIik7
CisgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgdm9pZCBmaW5hbGl6ZShKU0M6OkpT
Q2VsbComLCB2b2lkKiBjb250ZXh0KSBvdmVycmlkZTtcbiIpOwogICAgICAgICBwdXNoKEBoZWFk
ZXJDb250ZW50LCAifTtcbiIpOwogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiXG4iKTsK
ICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgImlubGluZSBKU0M6OldlYWtIYW5kbGVPd25l
ciogd3JhcHBlck93bmVyKERPTVdyYXBwZXJXb3JsZCYsICRpbXBsVHlwZSopXG4iKTsKQEAgLTI5
NDUsNyArMjk0NSw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAKICAgICBpZiAoKCEk
aGFzUGFyZW50ICYmICFHZXRDdXN0b21Jc1JlYWNoYWJsZSgkaW50ZXJmYWNlKSkgfHwgR2V0R2Vu
ZXJhdGVJc1JlYWNoYWJsZSgkaW50ZXJmYWNlKSB8fCAkY29kZUdlbmVyYXRvci0+SW5oZXJpdHNF
eHRlbmRlZEF0dHJpYnV0ZSgkaW50ZXJmYWNlLCAiQWN0aXZlRE9NT2JqZWN0IikpIHsKIAotICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgImJvb2wgSlMke2ludGVyZmFjZU5hbWV9T3duZXI6Omlz
UmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxl
LCB2b2lkKiwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpXG4iKTsKKyAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICJib29sIEpTJHtpbnRlcmZhY2VOYW1lfU93bmVyOjppc1JlYWNoYWJsZUZyb21PcGFx
dWVSb290cyhKU0M6OkpTQ2VsbCYgY2VsbCwgdm9pZCosIFNsb3RWaXNpdG9yJiB2aXNpdG9yKVxu
Iik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAie1xuIik7CiAgICAgICAgICMgQWxsIEFj
dGl2ZURPTU9iamVjdHMgaW1wbGVtZW50IGhhc1BlbmRpbmdBY3Rpdml0eSgpLCBidXQgbm90IGFs
bCBvZiB0aGVtCiAgICAgICAgICMgaW5jcmVtZW50IHRoZWlyIEMrKyByZWZlcmVuY2UgY291bnRz
IHdoZW4gaGFzUGVuZGluZ0FjdGl2aXR5KCkgYmVjb21lcwpAQCAtMjk1Niw3MCArMjk1Niw3MCBA
QCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAjIGNoZWNrIGp1c3QgYWJvdmUg
dGhlIChHZXRHZW5lcmF0ZUlzUmVhY2hhYmxlKCRpbnRlcmZhY2UpIGVxICJJbXBsIikgY2hlY2sg
YmVsb3cuCiAgICAgICAgIG15ICRlbWl0dGVkSlNDYXN0ID0gMDsKICAgICAgICAgaWYgKCRjb2Rl
R2VuZXJhdG9yLT5Jbmhlcml0c0V4dGVuZGVkQXR0cmlidXRlKCRpbnRlcmZhY2UsICJBY3RpdmVE
T01PYmplY3QiKSkgewotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgYXV0byog
anMke2ludGVyZmFjZU5hbWV9ID0ganNDYXN0PEpTJHtpbnRlcmZhY2VOYW1lfSo+KGhhbmRsZS5z
bG90KCktPmFzQ2VsbCgpKTtcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgYXV0byYganMke2ludGVyZmFjZU5hbWV9ID0ganNDYXN0PEpTJHtpbnRlcmZhY2VOYW1lfSY+
KGNlbGwpO1xuIik7CiAgICAgICAgICAgICAkZW1pdHRlZEpTQ2FzdCA9IDE7Ci0gICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoanMke2ludGVyZmFjZU5hbWV9LT5pbXBsKCku
aGFzUGVuZGluZ0FjdGl2aXR5KCkpXG4iKTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgIGlmIChqcyR7aW50ZXJmYWNlTmFtZX0uaW1wbCgpLmhhc1BlbmRpbmdBY3Rpdml0eSgp
KVxuIik7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuIHRy
dWU7XG4iKTsKICAgICAgICAgfQogICAgICAgICBpZiAoJGNvZGVHZW5lcmF0b3ItPkluaGVyaXRz
RXh0ZW5kZWRBdHRyaWJ1dGUoJGludGVyZmFjZSwgIkV2ZW50VGFyZ2V0IikpIHsKICAgICAgICAg
ICAgIGlmICghJGVtaXR0ZWRKU0Nhc3QpIHsKLSAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICBhdXRvKiBqcyR7aW50ZXJmYWNlTmFtZX0gPSBqc0Nhc3Q8SlMke2ludGVyZmFj
ZU5hbWV9Kj4oaGFuZGxlLnNsb3QoKS0+YXNDZWxsKCkpO1xuIik7CisgICAgICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgYXV0byYganMke2ludGVyZmFjZU5hbWV9ID0ganNDYXN0
PEpTJHtpbnRlcmZhY2VOYW1lfSY+KGNlbGwpO1xuIik7CiAgICAgICAgICAgICAgICAgJGVtaXR0
ZWRKU0Nhc3QgPSAxOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgaWYgKGpzJHtpbnRlcmZhY2VOYW1lfS0+aW1wbCgpLmlzRmlyaW5nRXZlbnRMaXN0
ZW5lcnMoKSlcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKGpz
JHtpbnRlcmZhY2VOYW1lfS5pbXBsKCkuaXNGaXJpbmdFdmVudExpc3RlbmVycygpKVxuIik7CiAg
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuIHRydWU7XG4iKTsK
ICAgICAgICAgfQogICAgICAgICBpZiAoJGNvZGVHZW5lcmF0b3ItPkluaGVyaXRzSW50ZXJmYWNl
KCRpbnRlcmZhY2UsICJOb2RlIikpIHsKICAgICAgICAgICAgIGlmICghJGVtaXR0ZWRKU0Nhc3Qp
IHsKLSAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBhdXRvKiBqcyR7aW50
ZXJmYWNlTmFtZX0gPSBqc0Nhc3Q8SlMke2ludGVyZmFjZU5hbWV9Kj4oaGFuZGxlLnNsb3QoKS0+
YXNDZWxsKCkpO1xuIik7CisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
YXV0byYganMke2ludGVyZmFjZU5hbWV9ID0ganNDYXN0PEpTJHtpbnRlcmZhY2VOYW1lfSY+KGNl
bGwpO1xuIik7CiAgICAgICAgICAgICAgICAgJGVtaXR0ZWRKU0Nhc3QgPSAxOwogICAgICAgICAg
ICAgfQotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKEpTTm9kZU93bmVy
Ojppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhoYW5kbGUsIDAsIHZpc2l0b3IpKVxuIik7Cisg
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoSlNOb2RlT3duZXI6OmlzUmVh
Y2hhYmxlRnJvbU9wYXF1ZVJvb3RzKGNlbGwsIDAsIHZpc2l0b3IpKVxuIik7CiAgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuIHRydWU7XG4iKTsKICAgICAgICAg
fQogICAgICAgICBpZiAoR2V0R2VuZXJhdGVJc1JlYWNoYWJsZSgkaW50ZXJmYWNlKSkgewogICAg
ICAgICAgICAgaWYgKCEkZW1pdHRlZEpTQ2FzdCkgewotICAgICAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgIGF1dG8qIGpzJHtpbnRlcmZhY2VOYW1lfSA9IGpzQ2FzdDxKUyR7aW50
ZXJmYWNlTmFtZX0qPihoYW5kbGUuc2xvdCgpLT5hc0NlbGwoKSk7XG4iKTsKKyAgICAgICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBhdXRvJiBqcyR7aW50ZXJmYWNlTmFtZX0gPSBq
c0Nhc3Q8SlMke2ludGVyZmFjZU5hbWV9Jj4oY2VsbCk7XG4iKTsKICAgICAgICAgICAgICAgICAk
ZW1pdHRlZEpTQ2FzdCA9IDE7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIG15ICRyb290
U3RyaW5nOwogICAgICAgICAgICAgaWYgKEdldEdlbmVyYXRlSXNSZWFjaGFibGUoJGludGVyZmFj
ZSkgZXEgIkltcGwiKSB7Ci0gICAgICAgICAgICAgICAgJHJvb3RTdHJpbmcgID0gIiAgICAke2lt
cGxUeXBlfSogcm9vdCA9ICZqcyR7aW50ZXJmYWNlTmFtZX0tPmltcGwoKTtcbiI7CisgICAgICAg
ICAgICAgICAgJHJvb3RTdHJpbmcgID0gIiAgICAke2ltcGxUeXBlfSogcm9vdCA9ICZqcyR7aW50
ZXJmYWNlTmFtZX0uaW1wbCgpO1xuIjsKICAgICAgICAgICAgIH0gZWxzaWYgKEdldEdlbmVyYXRl
SXNSZWFjaGFibGUoJGludGVyZmFjZSkgZXEgIkltcGxXZWJHTFJlbmRlcmluZ0NvbnRleHQiKSB7
Ci0gICAgICAgICAgICAgICAgJHJvb3RTdHJpbmcgID0gIiAgICBXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlKiByb290ID0gV1RGOjpnZXRQdHIoanMke2ludGVyZmFjZU5hbWV9LT5pbXBsKCkuY29u
dGV4dCgpKTtcbiI7CisgICAgICAgICAgICAgICAgJHJvb3RTdHJpbmcgID0gIiAgICBXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlKiByb290ID0gV1RGOjpnZXRQdHIoanMke2ludGVyZmFjZU5hbWV9
LmltcGwoKS5jb250ZXh0KCkpO1xuIjsKICAgICAgICAgICAgIH0gZWxzaWYgKEdldEdlbmVyYXRl
SXNSZWFjaGFibGUoJGludGVyZmFjZSkgZXEgIkltcGxGcmFtZSIpIHsKLSAgICAgICAgICAgICAg
ICAkcm9vdFN0cmluZyAgPSAiICAgIEZyYW1lKiByb290ID0gV1RGOjpnZXRQdHIoanMke2ludGVy
ZmFjZU5hbWV9LT5pbXBsKCkuZnJhbWUoKSk7XG4iOworICAgICAgICAgICAgICAgICRyb290U3Ry
aW5nICA9ICIgICAgRnJhbWUqIHJvb3QgPSBXVEY6OmdldFB0cihqcyR7aW50ZXJmYWNlTmFtZX0u
aW1wbCgpLmZyYW1lKCkpO1xuIjsKICAgICAgICAgICAgICAgICAkcm9vdFN0cmluZyAuPSAiICAg
IGlmICghcm9vdClcbiI7CiAgICAgICAgICAgICAgICAgJHJvb3RTdHJpbmcgLj0gIiAgICAgICAg
cmV0dXJuIGZhbHNlO1xuIjsKICAgICAgICAgICAgIH0gZWxzaWYgKEdldEdlbmVyYXRlSXNSZWFj
aGFibGUoJGludGVyZmFjZSkgZXEgIkltcGxEb2N1bWVudCIpIHsKLSAgICAgICAgICAgICAgICAk
cm9vdFN0cmluZyAgPSAiICAgIERvY3VtZW50KiByb290ID0gV1RGOjpnZXRQdHIoanMke2ludGVy
ZmFjZU5hbWV9LT5pbXBsKCkuZG9jdW1lbnQoKSk7XG4iOworICAgICAgICAgICAgICAgICRyb290
U3RyaW5nICA9ICIgICAgRG9jdW1lbnQqIHJvb3QgPSBXVEY6OmdldFB0cihqcyR7aW50ZXJmYWNl
TmFtZX0uaW1wbCgpLmRvY3VtZW50KCkpO1xuIjsKICAgICAgICAgICAgICAgICAkcm9vdFN0cmlu
ZyAuPSAiICAgIGlmICghcm9vdClcbiI7CiAgICAgICAgICAgICAgICAgJHJvb3RTdHJpbmcgLj0g
IiAgICAgICAgcmV0dXJuIGZhbHNlO1xuIjsKICAgICAgICAgICAgIH0gZWxzaWYgKEdldEdlbmVy
YXRlSXNSZWFjaGFibGUoJGludGVyZmFjZSkgZXEgIkltcGxFbGVtZW50Um9vdCIpIHsKICAgICAg
ICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyJFbGVtZW50LmgifSA9IDE7CiAgICAgICAgICAgICAg
ICAgJGltcGxJbmNsdWRlc3siSlNOb2RlQ3VzdG9tLmgifSA9IDE7Ci0gICAgICAgICAgICAgICAg
JHJvb3RTdHJpbmcgID0gIiAgICBFbGVtZW50KiBlbGVtZW50ID0gV1RGOjpnZXRQdHIoanMke2lu
dGVyZmFjZU5hbWV9LT5pbXBsKCkuZWxlbWVudCgpKTtcbiI7CisgICAgICAgICAgICAgICAgJHJv
b3RTdHJpbmcgID0gIiAgICBFbGVtZW50KiBlbGVtZW50ID0gV1RGOjpnZXRQdHIoanMke2ludGVy
ZmFjZU5hbWV9LmltcGwoKS5lbGVtZW50KCkpO1xuIjsKICAgICAgICAgICAgICAgICAkcm9vdFN0
cmluZyAuPSAiICAgIGlmICghZWxlbWVudClcbiI7CiAgICAgICAgICAgICAgICAgJHJvb3RTdHJp
bmcgLj0gIiAgICAgICAgcmV0dXJuIGZhbHNlO1xuIjsKICAgICAgICAgICAgICAgICAkcm9vdFN0
cmluZyAuPSAiICAgIHZvaWQqIHJvb3QgPSBXZWJDb3JlOjpyb290KGVsZW1lbnQpO1xuIjsKICAg
ICAgICAgICAgIH0gZWxzaWYgKCRpbnRlcmZhY2VOYW1lIGVxICJDYW52YXNSZW5kZXJpbmdDb250
ZXh0IikgewogICAgICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7IkVsZW1lbnQuaCJ9ID0gMTsK
ICAgICAgICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyJKU05vZGVDdXN0b20uaCJ9ID0gMTsKLSAg
ICAgICAgICAgICAgICAkcm9vdFN0cmluZyAgPSAiICAgIHZvaWQqIHJvb3QgPSBXZWJDb3JlOjpy
b290KGpzJHtpbnRlcmZhY2VOYW1lfS0+aW1wbCgpLmNhbnZhcygpKTtcbiI7CisgICAgICAgICAg
ICAgICAgJHJvb3RTdHJpbmcgID0gIiAgICB2b2lkKiByb290ID0gV2ViQ29yZTo6cm9vdChqcyR7
aW50ZXJmYWNlTmFtZX0uaW1wbCgpLmNhbnZhcygpKTtcbiI7CiAgICAgICAgICAgICB9IGVsc2lm
IChHZXRHZW5lcmF0ZUlzUmVhY2hhYmxlKCRpbnRlcmZhY2UpIGVxICJJbXBsT3duZXJOb2RlUm9v
dCIpIHsKICAgICAgICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyJFbGVtZW50LmgifSA9IDE7CiAg
ICAgICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siSlNOb2RlQ3VzdG9tLmgifSA9IDE7Ci0gICAg
ICAgICAgICAgICAgJHJvb3RTdHJpbmcgID0gIiAgICB2b2lkKiByb290ID0gV2ViQ29yZTo6cm9v
dChqcyR7aW50ZXJmYWNlTmFtZX0tPmltcGwoKS5vd25lck5vZGUoKSk7XG4iOworICAgICAgICAg
ICAgICAgICRyb290U3RyaW5nICA9ICIgICAgdm9pZCogcm9vdCA9IFdlYkNvcmU6OnJvb3QoanMk
e2ludGVyZmFjZU5hbWV9LmltcGwoKS5vd25lck5vZGUoKSk7XG4iOwogICAgICAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICAgICAgICAkcm9vdFN0cmluZyAgPSAiICAgIHZvaWQqIHJvb3QgPSBX
ZWJDb3JlOjpyb290KCZqcyR7aW50ZXJmYWNlTmFtZX0tPmltcGwoKSk7XG4iOworICAgICAgICAg
ICAgICAgICRyb290U3RyaW5nICA9ICIgICAgdm9pZCogcm9vdCA9IFdlYkNvcmU6OnJvb3QoJmpz
JHtpbnRlcmZhY2VOYW1lfS5pbXBsKCkpO1xuIjsKICAgICAgICAgICAgIH0KIAogICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICRyb290U3RyaW5nKTsKICAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgIHJldHVybiB2aXNpdG9yLmNvbnRhaW5zT3BhcXVlUm9vdChyb290KTtc
biIpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgaWYgKCEkZW1pdHRlZEpTQ2FzdCkg
ewotICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIFVOVVNFRF9QQVJBTSho
YW5kbGUpO1xuIik7CisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgVU5V
U0VEX1BBUkFNKGNlbGwpO1xuIik7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiAgICBVTlVTRURfUEFSQU0odmlzaXRvcik7XG4iKTsKICAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiBmYWxzZTtcbiIpOwpAQCAtMzAzMiwxMSAr
MzAzMiwxMSBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgR2V0R2VuZXJh
dGVJc1JlYWNoYWJsZSgkaW50ZXJmYWNlKSB8fAogICAgICAgICAgR2V0Q3VzdG9tSXNSZWFjaGFi
bGUoJGludGVyZmFjZSkgfHwKICAgICAgICAgICRjb2RlR2VuZXJhdG9yLT5Jbmhlcml0c0V4dGVu
ZGVkQXR0cmlidXRlKCRpbnRlcmZhY2UsICJBY3RpdmVET01PYmplY3QiKSkpIHsKLSAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICJ2b2lkIEpTJHtpbnRlcmZhY2VOYW1lfU93bmVyOjpmaW5hbGl6
ZShKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCogY29udGV4dClcbiIpOwor
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgInZvaWQgSlMke2ludGVyZmFjZU5hbWV9T3duZXI6
OmZpbmFsaXplKEpTQzo6SlNDZWxsKiYgY2VsbCwgdm9pZCogY29udGV4dClcbiIpOwogICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIpOwotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiAgICBhdXRvKiBqcyR7aW50ZXJmYWNlTmFtZX0gPSBqc0Nhc3Q8SlMke2ludGVyZmFjZU5hbWV9
Kj4oaGFuZGxlLnNsb3QoKS0+YXNDZWxsKCkpO1xuIik7CisgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiICAgIGF1dG8mIHdyYXBwZXIgPSBqc0Nhc3Q8SlMke2ludGVyZmFjZU5hbWV9Jj4oKmNl
bGwpO1xuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGF1dG8mIHdvcmxkID0g
KnN0YXRpY19jYXN0PERPTVdyYXBwZXJXb3JsZCo+KGNvbnRleHQpO1xuIik7Ci0gICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgIHVuY2FjaGVXcmFwcGVyKHdvcmxkLCAmanMke2ludGVyZmFj
ZU5hbWV9LT5pbXBsKCksIGpzJHtpbnRlcmZhY2VOYW1lfSk7XG4iKTsKKyAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICIgICAgdW5jYWNoZVdyYXBwZXIod29ybGQsICZ3cmFwcGVyLmltcGwoKSwg
JndyYXBwZXIpO1xuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAifVxuXG4iKTsKICAg
ICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RBY3RpdmVET01PYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdEFjdGl2ZURPTU9iamVjdC5jcHAKaW5kZXggZGQ4Mjg1NS4uMWEx
MDkzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdEFjdGl2ZURPTU9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdEFjdGl2ZURPTU9iamVjdC5jcHAKQEAgLTI0MCwxOCArMjQw
LDE4IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0QWN0aXZlRE9NT2JqZWN0
UHJvdG90eXBlRnVuY3Rpb25Qb3N0TWVzc2FnZShFCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotYm9vbCBKU1Rlc3RBY3RpdmVET01PYmplY3RPd25lcjo6
aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5k
bGUsIHZvaWQqLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK2Jvb2wgSlNUZXN0QWN0aXZlRE9NT2Jq
ZWN0T3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SlNDZWxsJiBjZWxsLCB2
b2lkKiwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGhhbmRsZSk7
CisgICAgVU5VU0VEX1BBUkFNKGNlbGwpOwogICAgIFVOVVNFRF9QQVJBTSh2aXNpdG9yKTsKICAg
ICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgSlNUZXN0QWN0aXZlRE9NT2JqZWN0T3duZXI6OmZp
bmFsaXplKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkKiBjb250ZXh0KQor
dm9pZCBKU1Rlc3RBY3RpdmVET01PYmplY3RPd25lcjo6ZmluYWxpemUoSlNDOjpKU0NlbGwqJiBj
ZWxsLCB2b2lkKiBjb250ZXh0KQogewotICAgIGF1dG8qIGpzVGVzdEFjdGl2ZURPTU9iamVjdCA9
IGpzQ2FzdDxKU1Rlc3RBY3RpdmVET01PYmplY3QqPihoYW5kbGUuc2xvdCgpLT5hc0NlbGwoKSk7
CisgICAgYXV0byYgd3JhcHBlciA9IGpzQ2FzdDxKU1Rlc3RBY3RpdmVET01PYmplY3QmPigqY2Vs
bCk7CiAgICAgYXV0byYgd29ybGQgPSAqc3RhdGljX2Nhc3Q8RE9NV3JhcHBlcldvcmxkKj4oY29u
dGV4dCk7Ci0gICAgdW5jYWNoZVdyYXBwZXIod29ybGQsICZqc1Rlc3RBY3RpdmVET01PYmplY3Qt
PmltcGwoKSwganNUZXN0QWN0aXZlRE9NT2JqZWN0KTsKKyAgICB1bmNhY2hlV3JhcHBlcih3b3Js
ZCwgJndyYXBwZXIuaW1wbCgpLCAmd3JhcHBlcik7CiB9CiAKICNpZiBFTkFCTEUoQklORElOR19J
TlRFR1JJVFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0QWN0aXZlRE9NT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0QWN0aXZlRE9NT2JqZWN0LmgKaW5kZXggM2EwZGQ5Ny4uOTY3
ODdkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdEFjdGl2ZURPTU9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RBY3RpdmVET01PYmplY3QuaApAQCAtNzIsOCArNzIsOCBAQCBw
cm90ZWN0ZWQ6CiAKIGNsYXNzIEpTVGVzdEFjdGl2ZURPTU9iamVjdE93bmVyIDogcHVibGljIEpT
Qzo6V2Vha0hhbmRsZU93bmVyIHsKIHB1YmxpYzoKLSAgICB2aXJ0dWFsIGJvb2wgaXNSZWFjaGFi
bGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiwgdm9pZCogY29udGV4
dCwgSlNDOjpTbG90VmlzaXRvciYpOwotICAgIHZpcnR1YWwgdm9pZCBmaW5hbGl6ZShKU0M6Okhh
bmRsZTxKU0M6OlVua25vd24+LCB2b2lkKiBjb250ZXh0KTsKKyAgICBib29sIGlzUmVhY2hhYmxl
RnJvbU9wYXF1ZVJvb3RzKEpTQzo6SlNDZWxsJiwgdm9pZCogY29udGV4dCwgSlNDOjpTbG90Vmlz
aXRvciYpIG92ZXJyaWRlOworICAgIHZvaWQgZmluYWxpemUoSlNDOjpKU0NlbGwqJiwgdm9pZCog
Y29udGV4dCkgb3ZlcnJpZGU7CiB9OwogCiBpbmxpbmUgSlNDOjpXZWFrSGFuZGxlT3duZXIqIHdy
YXBwZXJPd25lcihET01XcmFwcGVyV29ybGQmLCBUZXN0QWN0aXZlRE9NT2JqZWN0KikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDdXN0
b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRl
cmZhY2VPYmplY3QuY3BwCmluZGV4IGM3YmE3NDcuLjQyYzdkOTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDdXN0b21Db25zdHJ1Y3Rv
cldpdGhOb0ludGVyZmFjZU9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2Jq
ZWN0LmNwcApAQCAtMTU3LDE4ICsxNTcsMTggQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0Q3VzdG9t
Q29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3RDb25zdHJ1Y3RvcihFeGVjU3RhdGUKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNvbnN0cnVjdG9yKTsKIH0KIAotYm9vbCBKU1Rlc3RD
dXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdE93bmVyOjppc1JlYWNoYWJsZUZy
b21PcGFxdWVSb290cyhKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCosIFNs
b3RWaXNpdG9yJiB2aXNpdG9yKQorYm9vbCBKU1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0lu
dGVyZmFjZU9iamVjdE93bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6OkpTQ2Vs
bCYgY2VsbCwgdm9pZCosIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAgIFVOVVNFRF9QQVJB
TShoYW5kbGUpOworICAgIFVOVVNFRF9QQVJBTShjZWxsKTsKICAgICBVTlVTRURfUEFSQU0odmlz
aXRvcik7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIEpTVGVzdEN1c3RvbUNvbnN0cnVj
dG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0T3duZXI6OmZpbmFsaXplKEpTQzo6SGFuZGxlPEpTQzo6
VW5rbm93bj4gaGFuZGxlLCB2b2lkKiBjb250ZXh0KQordm9pZCBKU1Rlc3RDdXN0b21Db25zdHJ1
Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdE93bmVyOjpmaW5hbGl6ZShKU0M6OkpTQ2VsbComIGNl
bGwsIHZvaWQqIGNvbnRleHQpCiB7Ci0gICAgYXV0byoganNUZXN0Q3VzdG9tQ29uc3RydWN0b3JX
aXRoTm9JbnRlcmZhY2VPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRo
Tm9JbnRlcmZhY2VPYmplY3QqPihoYW5kbGUuc2xvdCgpLT5hc0NlbGwoKSk7CisgICAgYXV0byYg
d3JhcHBlciA9IGpzQ2FzdDxKU1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9i
amVjdCY+KCpjZWxsKTsKICAgICBhdXRvJiB3b3JsZCA9ICpzdGF0aWNfY2FzdDxET01XcmFwcGVy
V29ybGQqPihjb250ZXh0KTsKLSAgICB1bmNhY2hlV3JhcHBlcih3b3JsZCwgJmpzVGVzdEN1c3Rv
bUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0LT5pbXBsKCksIGpzVGVzdEN1c3RvbUNv
bnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0KTsKKyAgICB1bmNhY2hlV3JhcHBlcih3b3Js
ZCwgJndyYXBwZXIuaW1wbCgpLCAmd3JhcHBlcik7CiB9CiAKICNpZiBFTkFCTEUoQklORElOR19J
TlRFR1JJVFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3QuaCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDdXN0b21Db25zdHJ1
Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdC5oCmluZGV4IDczOGMzOTIuLmRjZTlkMDUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDdXN0
b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0lu
dGVyZmFjZU9iamVjdC5oCkBAIC02OCw4ICs2OCw4IEBAIHByb3RlY3RlZDoKIAogY2xhc3MgSlNU
ZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3RPd25lciA6IHB1YmxpYyBK
U0M6OldlYWtIYW5kbGVPd25lciB7CiBwdWJsaWM6Ci0gICAgdmlydHVhbCBib29sIGlzUmVhY2hh
YmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4sIHZvaWQqIGNvbnRl
eHQsIEpTQzo6U2xvdFZpc2l0b3ImKTsKLSAgICB2aXJ0dWFsIHZvaWQgZmluYWxpemUoSlNDOjpI
YW5kbGU8SlNDOjpVbmtub3duPiwgdm9pZCogY29udGV4dCk7CisgICAgYm9vbCBpc1JlYWNoYWJs
ZUZyb21PcGFxdWVSb290cyhKU0M6OkpTQ2VsbCYsIHZvaWQqIGNvbnRleHQsIEpTQzo6U2xvdFZp
c2l0b3ImKSBvdmVycmlkZTsKKyAgICB2b2lkIGZpbmFsaXplKEpTQzo6SlNDZWxsKiYsIHZvaWQq
IGNvbnRleHQpIG92ZXJyaWRlOwogfTsKIAogaW5saW5lIEpTQzo6V2Vha0hhbmRsZU93bmVyKiB3
cmFwcGVyT3duZXIoRE9NV3JhcHBlcldvcmxkJiwgVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5v
SW50ZXJmYWNlT2JqZWN0KikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RDdXN0b21OYW1lZEdldHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIuY3BwCmlu
ZGV4IDg0NDU2YmQuLmJiYTIzZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDdXN0b21OYW1lZEdldHRlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEN1c3RvbU5hbWVkR2V0dGVy
LmNwcApAQCAtMjI1LDE4ICsyMjUsMTggQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RDdXN0b21OYW1lZEdldHRlclByb3RvdHlwZUZ1bmN0aW9uQW5vdGhlckZ1bmMKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1ib29sIEpTVGVzdEN1
c3RvbU5hbWVkR2V0dGVyT3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFu
ZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkKiwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiti
b29sIEpTVGVzdEN1c3RvbU5hbWVkR2V0dGVyT3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJv
b3RzKEpTQzo6SlNDZWxsJiBjZWxsLCB2b2lkKiwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0g
ICAgVU5VU0VEX1BBUkFNKGhhbmRsZSk7CisgICAgVU5VU0VEX1BBUkFNKGNlbGwpOwogICAgIFVO
VVNFRF9QQVJBTSh2aXNpdG9yKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgSlNUZXN0
Q3VzdG9tTmFtZWRHZXR0ZXJPd25lcjo6ZmluYWxpemUoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3du
PiBoYW5kbGUsIHZvaWQqIGNvbnRleHQpCit2b2lkIEpTVGVzdEN1c3RvbU5hbWVkR2V0dGVyT3du
ZXI6OmZpbmFsaXplKEpTQzo6SlNDZWxsKiYgY2VsbCwgdm9pZCogY29udGV4dCkKIHsKLSAgICBh
dXRvKiBqc1Rlc3RDdXN0b21OYW1lZEdldHRlciA9IGpzQ2FzdDxKU1Rlc3RDdXN0b21OYW1lZEdl
dHRlcio+KGhhbmRsZS5zbG90KCktPmFzQ2VsbCgpKTsKKyAgICBhdXRvJiB3cmFwcGVyID0ganND
YXN0PEpTVGVzdEN1c3RvbU5hbWVkR2V0dGVyJj4oKmNlbGwpOwogICAgIGF1dG8mIHdvcmxkID0g
KnN0YXRpY19jYXN0PERPTVdyYXBwZXJXb3JsZCo+KGNvbnRleHQpOwotICAgIHVuY2FjaGVXcmFw
cGVyKHdvcmxkLCAmanNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXItPmltcGwoKSwganNUZXN0Q3VzdG9t
TmFtZWRHZXR0ZXIpOworICAgIHVuY2FjaGVXcmFwcGVyKHdvcmxkLCAmd3JhcHBlci5pbXBsKCks
ICZ3cmFwcGVyKTsKIH0KIAogI2lmIEVOQUJMRShCSU5ESU5HX0lOVEVHUklUWSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDdXN0b21O
YW1lZEdldHRlci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdEN1c3RvbU5hbWVkR2V0dGVyLmgKaW5kZXggNGY5OTI5MS4uODQ1ZDdjMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEN1c3RvbU5h
bWVkR2V0dGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdEN1c3RvbU5hbWVkR2V0dGVyLmgKQEAgLTc1LDggKzc1LDggQEAgcHJpdmF0ZToKIAog
Y2xhc3MgSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXJPd25lciA6IHB1YmxpYyBKU0M6OldlYWtIYW5k
bGVPd25lciB7CiBwdWJsaWM6Ci0gICAgdmlydHVhbCBib29sIGlzUmVhY2hhYmxlRnJvbU9wYXF1
ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4sIHZvaWQqIGNvbnRleHQsIEpTQzo6U2xv
dFZpc2l0b3ImKTsKLSAgICB2aXJ0dWFsIHZvaWQgZmluYWxpemUoSlNDOjpIYW5kbGU8SlNDOjpV
bmtub3duPiwgdm9pZCogY29udGV4dCk7CisgICAgYm9vbCBpc1JlYWNoYWJsZUZyb21PcGFxdWVS
b290cyhKU0M6OkpTQ2VsbCYsIHZvaWQqIGNvbnRleHQsIEpTQzo6U2xvdFZpc2l0b3ImKSBvdmVy
cmlkZTsKKyAgICB2b2lkIGZpbmFsaXplKEpTQzo6SlNDZWxsKiYsIHZvaWQqIGNvbnRleHQpIG92
ZXJyaWRlOwogfTsKIAogaW5saW5lIEpTQzo6V2Vha0hhbmRsZU93bmVyKiB3cmFwcGVyT3duZXIo
RE9NV3JhcHBlcldvcmxkJiwgVGVzdEN1c3RvbU5hbWVkR2V0dGVyKikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudENvbnN0cnVj
dG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RF
dmVudENvbnN0cnVjdG9yLmNwcAppbmRleCA5ZWFmOGYxLi43MWExNTkyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1
Y3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwCkBAIC0yNDEsMTggKzI0MSwxOCBAQCBKU1ZhbHVlIEpT
VGVzdEV2ZW50Q29uc3RydWN0b3I6OmdldENvbnN0cnVjdG9yKFZNJiB2bSwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iagogICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3RFdmVudENv
bnN0cnVjdG9yQ29uc3RydWN0b3I+KHZtLCBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9i
YWxPYmplY3QpKTsKIH0KIAotYm9vbCBKU1Rlc3RFdmVudENvbnN0cnVjdG9yT3duZXI6OmlzUmVh
Y2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2
b2lkKiwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCitib29sIEpTVGVzdEV2ZW50Q29uc3RydWN0b3JP
d25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpKU0NlbGwmIGNlbGwsIHZvaWQq
LCBTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBVTlVTRURfUEFSQU0oaGFuZGxlKTsKKyAg
ICBVTlVTRURfUEFSQU0oY2VsbCk7CiAgICAgVU5VU0VEX1BBUkFNKHZpc2l0b3IpOwogICAgIHJl
dHVybiBmYWxzZTsKIH0KIAotdm9pZCBKU1Rlc3RFdmVudENvbnN0cnVjdG9yT3duZXI6OmZpbmFs
aXplKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkKiBjb250ZXh0KQordm9p
ZCBKU1Rlc3RFdmVudENvbnN0cnVjdG9yT3duZXI6OmZpbmFsaXplKEpTQzo6SlNDZWxsKiYgY2Vs
bCwgdm9pZCogY29udGV4dCkKIHsKLSAgICBhdXRvKiBqc1Rlc3RFdmVudENvbnN0cnVjdG9yID0g
anNDYXN0PEpTVGVzdEV2ZW50Q29uc3RydWN0b3IqPihoYW5kbGUuc2xvdCgpLT5hc0NlbGwoKSk7
CisgICAgYXV0byYgd3JhcHBlciA9IGpzQ2FzdDxKU1Rlc3RFdmVudENvbnN0cnVjdG9yJj4oKmNl
bGwpOwogICAgIGF1dG8mIHdvcmxkID0gKnN0YXRpY19jYXN0PERPTVdyYXBwZXJXb3JsZCo+KGNv
bnRleHQpOwotICAgIHVuY2FjaGVXcmFwcGVyKHdvcmxkLCAmanNUZXN0RXZlbnRDb25zdHJ1Y3Rv
ci0+aW1wbCgpLCBqc1Rlc3RFdmVudENvbnN0cnVjdG9yKTsKKyAgICB1bmNhY2hlV3JhcHBlcih3
b3JsZCwgJndyYXBwZXIuaW1wbCgpLCAmd3JhcHBlcik7CiB9CiAKICNpZiBFTkFCTEUoQklORElO
R19JTlRFR1JJVFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50Q29uc3RydWN0b3IuaAppbmRleCBlZWViZTA0
Li4wMjIxNjJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudENvbnN0cnVjdG9yLmgKQEAgLTcxLDggKzcx
LDggQEAgcHJvdGVjdGVkOgogCiBjbGFzcyBKU1Rlc3RFdmVudENvbnN0cnVjdG9yT3duZXIgOiBw
dWJsaWMgSlNDOjpXZWFrSGFuZGxlT3duZXIgewogcHVibGljOgotICAgIHZpcnR1YWwgYm9vbCBp
c1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+LCB2b2lk
KiBjb250ZXh0LCBKU0M6OlNsb3RWaXNpdG9yJik7Ci0gICAgdmlydHVhbCB2b2lkIGZpbmFsaXpl
KEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4sIHZvaWQqIGNvbnRleHQpOworICAgIGJvb2wgaXNS
ZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpKU0NlbGwmLCB2b2lkKiBjb250ZXh0LCBKU0M6
OlNsb3RWaXNpdG9yJikgb3ZlcnJpZGU7CisgICAgdm9pZCBmaW5hbGl6ZShKU0M6OkpTQ2VsbCom
LCB2b2lkKiBjb250ZXh0KSBvdmVycmlkZTsKIH07CiAKIGlubGluZSBKU0M6OldlYWtIYW5kbGVP
d25lciogd3JhcHBlck93bmVyKERPTVdyYXBwZXJXb3JsZCYsIFRlc3RFdmVudENvbnN0cnVjdG9y
KikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RFdmVudFRhcmdldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQuY3BwCmluZGV4IGYyMDVmZTMuLjY0Yzc0ODIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVu
dFRhcmdldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdEV2ZW50VGFyZ2V0LmNwcApAQCAtMzIwLDIwICszMjAsMjAgQEAgdm9pZCBKU1Rlc3RF
dmVudFRhcmdldDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNp
dG9yKQogICAgIHRoaXNPYmplY3QtPmltcGwoKS52aXNpdEpTRXZlbnRMaXN0ZW5lcnModmlzaXRv
cik7CiB9CiAKLWJvb2wgSlNUZXN0RXZlbnRUYXJnZXRPd25lcjo6aXNSZWFjaGFibGVGcm9tT3Bh
cXVlUm9vdHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQqLCBTbG90Vmlz
aXRvciYgdmlzaXRvcikKK2Jvb2wgSlNUZXN0RXZlbnRUYXJnZXRPd25lcjo6aXNSZWFjaGFibGVG
cm9tT3BhcXVlUm9vdHMoSlNDOjpKU0NlbGwmIGNlbGwsIHZvaWQqLCBTbG90VmlzaXRvciYgdmlz
aXRvcikKIHsKLSAgICBhdXRvKiBqc1Rlc3RFdmVudFRhcmdldCA9IGpzQ2FzdDxKU1Rlc3RFdmVu
dFRhcmdldCo+KGhhbmRsZS5zbG90KCktPmFzQ2VsbCgpKTsKLSAgICBpZiAoanNUZXN0RXZlbnRU
YXJnZXQtPmltcGwoKS5pc0ZpcmluZ0V2ZW50TGlzdGVuZXJzKCkpCisgICAgYXV0byYganNUZXN0
RXZlbnRUYXJnZXQgPSBqc0Nhc3Q8SlNUZXN0RXZlbnRUYXJnZXQmPihjZWxsKTsKKyAgICBpZiAo
anNUZXN0RXZlbnRUYXJnZXQuaW1wbCgpLmlzRmlyaW5nRXZlbnRMaXN0ZW5lcnMoKSkKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgVU5VU0VEX1BBUkFNKHZpc2l0b3IpOwogICAgIHJldHVybiBm
YWxzZTsKIH0KIAotdm9pZCBKU1Rlc3RFdmVudFRhcmdldE93bmVyOjpmaW5hbGl6ZShKU0M6Okhh
bmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCogY29udGV4dCkKK3ZvaWQgSlNUZXN0RXZl
bnRUYXJnZXRPd25lcjo6ZmluYWxpemUoSlNDOjpKU0NlbGwqJiBjZWxsLCB2b2lkKiBjb250ZXh0
KQogewotICAgIGF1dG8qIGpzVGVzdEV2ZW50VGFyZ2V0ID0ganNDYXN0PEpTVGVzdEV2ZW50VGFy
Z2V0Kj4oaGFuZGxlLnNsb3QoKS0+YXNDZWxsKCkpOworICAgIGF1dG8mIHdyYXBwZXIgPSBqc0Nh
c3Q8SlNUZXN0RXZlbnRUYXJnZXQmPigqY2VsbCk7CiAgICAgYXV0byYgd29ybGQgPSAqc3RhdGlj
X2Nhc3Q8RE9NV3JhcHBlcldvcmxkKj4oY29udGV4dCk7Ci0gICAgdW5jYWNoZVdyYXBwZXIod29y
bGQsICZqc1Rlc3RFdmVudFRhcmdldC0+aW1wbCgpLCBqc1Rlc3RFdmVudFRhcmdldCk7CisgICAg
dW5jYWNoZVdyYXBwZXIod29ybGQsICZ3cmFwcGVyLmltcGwoKSwgJndyYXBwZXIpOwogfQogCiAj
aWYgRU5BQkxFKEJJTkRJTkdfSU5URUdSSVRZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmggYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQuaAppbmRleCA4
MzFkYWY5Li41MTk1MzE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQuaApAQCAtNzksOCArNzksOCBA
QCBwcml2YXRlOgogCiBjbGFzcyBKU1Rlc3RFdmVudFRhcmdldE93bmVyIDogcHVibGljIEpTQzo6
V2Vha0hhbmRsZU93bmVyIHsKIHB1YmxpYzoKLSAgICB2aXJ0dWFsIGJvb2wgaXNSZWFjaGFibGVG
cm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiwgdm9pZCogY29udGV4dCwg
SlNDOjpTbG90VmlzaXRvciYpOwotICAgIHZpcnR1YWwgdm9pZCBmaW5hbGl6ZShKU0M6OkhhbmRs
ZTxKU0M6OlVua25vd24+LCB2b2lkKiBjb250ZXh0KTsKKyAgICBib29sIGlzUmVhY2hhYmxlRnJv
bU9wYXF1ZVJvb3RzKEpTQzo6SlNDZWxsJiwgdm9pZCogY29udGV4dCwgSlNDOjpTbG90VmlzaXRv
ciYpIG92ZXJyaWRlOworICAgIHZvaWQgZmluYWxpemUoSlNDOjpKU0NlbGwqJiwgdm9pZCogY29u
dGV4dCkgb3ZlcnJpZGU7CiB9OwogCiBpbmxpbmUgSlNDOjpXZWFrSGFuZGxlT3duZXIqIHdyYXBw
ZXJPd25lcihET01XcmFwcGVyV29ybGQmLCBUZXN0RXZlbnRUYXJnZXQqKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV4Y2VwdGlvbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXhjZXB0
aW9uLmNwcAppbmRleCBlNDhkNmJlLi4zODdjMmY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXhjZXB0aW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXhjZXB0aW9uLmNwcApA
QCAtMTkwLDE4ICsxOTAsMTggQEAgSlNWYWx1ZSBKU1Rlc3RFeGNlcHRpb246OmdldENvbnN0cnVj
dG9yKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICByZXR1cm4gZ2V0
RE9NQ29uc3RydWN0b3I8SlNUZXN0RXhjZXB0aW9uQ29uc3RydWN0b3I+KHZtLCBqc0Nhc3Q8SlNE
T01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKIH0KIAotYm9vbCBKU1Rlc3RFeGNlcHRp
b25Pd25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtu
b3duPiBoYW5kbGUsIHZvaWQqLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK2Jvb2wgSlNUZXN0RXhj
ZXB0aW9uT3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SlNDZWxsJiBjZWxs
LCB2b2lkKiwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGhhbmRs
ZSk7CisgICAgVU5VU0VEX1BBUkFNKGNlbGwpOwogICAgIFVOVVNFRF9QQVJBTSh2aXNpdG9yKTsK
ICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgSlNUZXN0RXhjZXB0aW9uT3duZXI6OmZpbmFs
aXplKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkKiBjb250ZXh0KQordm9p
ZCBKU1Rlc3RFeGNlcHRpb25Pd25lcjo6ZmluYWxpemUoSlNDOjpKU0NlbGwqJiBjZWxsLCB2b2lk
KiBjb250ZXh0KQogewotICAgIGF1dG8qIGpzVGVzdEV4Y2VwdGlvbiA9IGpzQ2FzdDxKU1Rlc3RF
eGNlcHRpb24qPihoYW5kbGUuc2xvdCgpLT5hc0NlbGwoKSk7CisgICAgYXV0byYgd3JhcHBlciA9
IGpzQ2FzdDxKU1Rlc3RFeGNlcHRpb24mPigqY2VsbCk7CiAgICAgYXV0byYgd29ybGQgPSAqc3Rh
dGljX2Nhc3Q8RE9NV3JhcHBlcldvcmxkKj4oY29udGV4dCk7Ci0gICAgdW5jYWNoZVdyYXBwZXIo
d29ybGQsICZqc1Rlc3RFeGNlcHRpb24tPmltcGwoKSwganNUZXN0RXhjZXB0aW9uKTsKKyAgICB1
bmNhY2hlV3JhcHBlcih3b3JsZCwgJndyYXBwZXIuaW1wbCgpLCAmd3JhcHBlcik7CiB9CiAKICNp
ZiBFTkFCTEUoQklORElOR19JTlRFR1JJVFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXhjZXB0aW9uLmggYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXhjZXB0aW9uLmgKaW5kZXggNTQzMmY0
My4uYzcxMDE0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEV4Y2VwdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RFeGNlcHRpb24uaApAQCAtNzMsOCArNzMsOCBAQCBwcm90ZWN0
ZWQ6CiAKIGNsYXNzIEpTVGVzdEV4Y2VwdGlvbk93bmVyIDogcHVibGljIEpTQzo6V2Vha0hhbmRs
ZU93bmVyIHsKIHB1YmxpYzoKLSAgICB2aXJ0dWFsIGJvb2wgaXNSZWFjaGFibGVGcm9tT3BhcXVl
Um9vdHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiwgdm9pZCogY29udGV4dCwgSlNDOjpTbG90
VmlzaXRvciYpOwotICAgIHZpcnR1YWwgdm9pZCBmaW5hbGl6ZShKU0M6OkhhbmRsZTxKU0M6OlVu
a25vd24+LCB2b2lkKiBjb250ZXh0KTsKKyAgICBib29sIGlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJv
b3RzKEpTQzo6SlNDZWxsJiwgdm9pZCogY29udGV4dCwgSlNDOjpTbG90VmlzaXRvciYpIG92ZXJy
aWRlOworICAgIHZvaWQgZmluYWxpemUoSlNDOjpKU0NlbGwqJiwgdm9pZCogY29udGV4dCkgb3Zl
cnJpZGU7CiB9OwogCiBpbmxpbmUgSlNDOjpXZWFrSGFuZGxlT3duZXIqIHdyYXBwZXJPd25lcihE
T01XcmFwcGVyV29ybGQmLCBUZXN0RXhjZXB0aW9uKikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHZW5lcmF0
ZUlzUmVhY2hhYmxlLmNwcAppbmRleCA2OTdiMWJkLi5jZmM3OGE4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2VuZXJhdGVJc1JlYWNo
YWJsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdEdlbmVyYXRlSXNSZWFjaGFibGUuY3BwCkBAIC0xNTIsMTggKzE1MiwxOCBAQCBKU1ZhbHVl
IEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGU6OmdldENvbnN0cnVjdG9yKFZNJiB2bSwgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbAogICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3RHZW5l
cmF0ZUlzUmVhY2hhYmxlQ29uc3RydWN0b3I+KHZtLCBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3Qq
PihnbG9iYWxPYmplY3QpKTsKIH0KIAotYm9vbCBKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlT3du
ZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4g
aGFuZGxlLCB2b2lkKiwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCitib29sIEpTVGVzdEdlbmVyYXRl
SXNSZWFjaGFibGVPd25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpKU0NlbGwm
IGNlbGwsIHZvaWQqLCBTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBhdXRvKiBqc1Rlc3RH
ZW5lcmF0ZUlzUmVhY2hhYmxlID0ganNDYXN0PEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUqPiho
YW5kbGUuc2xvdCgpLT5hc0NlbGwoKSk7Ci0gICAgVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUqIHJv
b3QgPSAmanNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZS0+aW1wbCgpOworICAgIGF1dG8mIGpzVGVz
dEdlbmVyYXRlSXNSZWFjaGFibGUgPSBqc0Nhc3Q8SlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZSY+
KGNlbGwpOworICAgIFRlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlKiByb290ID0gJmpzVGVzdEdlbmVy
YXRlSXNSZWFjaGFibGUuaW1wbCgpOwogICAgIHJldHVybiB2aXNpdG9yLmNvbnRhaW5zT3BhcXVl
Um9vdChyb290KTsKIH0KIAotdm9pZCBKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlT3duZXI6OmZp
bmFsaXplKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkKiBjb250ZXh0KQor
dm9pZCBKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlT3duZXI6OmZpbmFsaXplKEpTQzo6SlNDZWxs
KiYgY2VsbCwgdm9pZCogY29udGV4dCkKIHsKLSAgICBhdXRvKiBqc1Rlc3RHZW5lcmF0ZUlzUmVh
Y2hhYmxlID0ganNDYXN0PEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUqPihoYW5kbGUuc2xvdCgp
LT5hc0NlbGwoKSk7CisgICAgYXV0byYgd3JhcHBlciA9IGpzQ2FzdDxKU1Rlc3RHZW5lcmF0ZUlz
UmVhY2hhYmxlJj4oKmNlbGwpOwogICAgIGF1dG8mIHdvcmxkID0gKnN0YXRpY19jYXN0PERPTVdy
YXBwZXJXb3JsZCo+KGNvbnRleHQpOwotICAgIHVuY2FjaGVXcmFwcGVyKHdvcmxkLCAmanNUZXN0
R2VuZXJhdGVJc1JlYWNoYWJsZS0+aW1wbCgpLCBqc1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlKTsK
KyAgICB1bmNhY2hlV3JhcHBlcih3b3JsZCwgJndyYXBwZXIuaW1wbCgpLCAmd3JhcHBlcik7CiB9
CiAKICNpZiBFTkFCTEUoQklORElOR19JTlRFR1JJVFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZS5o
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdlbmVyYXRl
SXNSZWFjaGFibGUuaAppbmRleCA0MDhkYzU5Li45YTc1YTdjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJs
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RH
ZW5lcmF0ZUlzUmVhY2hhYmxlLmgKQEAgLTY5LDggKzY5LDggQEAgcHJvdGVjdGVkOgogCiBjbGFz
cyBKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlT3duZXIgOiBwdWJsaWMgSlNDOjpXZWFrSGFuZGxl
T3duZXIgewogcHVibGljOgotICAgIHZpcnR1YWwgYm9vbCBpc1JlYWNoYWJsZUZyb21PcGFxdWVS
b290cyhKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+LCB2b2lkKiBjb250ZXh0LCBKU0M6OlNsb3RW
aXNpdG9yJik7Ci0gICAgdmlydHVhbCB2b2lkIGZpbmFsaXplKEpTQzo6SGFuZGxlPEpTQzo6VW5r
bm93bj4sIHZvaWQqIGNvbnRleHQpOworICAgIGJvb2wgaXNSZWFjaGFibGVGcm9tT3BhcXVlUm9v
dHMoSlNDOjpKU0NlbGwmLCB2b2lkKiBjb250ZXh0LCBKU0M6OlNsb3RWaXNpdG9yJikgb3ZlcnJp
ZGU7CisgICAgdm9pZCBmaW5hbGl6ZShKU0M6OkpTQ2VsbComLCB2b2lkKiBjb250ZXh0KSBvdmVy
cmlkZTsKIH07CiAKIGlubGluZSBKU0M6OldlYWtIYW5kbGVPd25lciogd3JhcHBlck93bmVyKERP
TVdyYXBwZXJXb3JsZCYsIFRlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlKikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFj
ZS5jcHAKaW5kZXggNjU0YzU1Mi4uMTAzNTY4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5jcHAKQEAg
LTkzOSwyMCArOTM5LDIwIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0SW50
ZXJmYWNlQ29uc3RydWN0b3JGdW5jdGlvblN1cHBsZW1lbnRhbE1ldGhvCiAKICNlbmRpZgogCi1i
b29sIEpTVGVzdEludGVyZmFjZU93bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6
OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCosIFNsb3RWaXNpdG9yJiB2aXNpdG9y
KQorYm9vbCBKU1Rlc3RJbnRlcmZhY2VPd25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMo
SlNDOjpKU0NlbGwmIGNlbGwsIHZvaWQqLCBTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBh
dXRvKiBqc1Rlc3RJbnRlcmZhY2UgPSBqc0Nhc3Q8SlNUZXN0SW50ZXJmYWNlKj4oaGFuZGxlLnNs
b3QoKS0+YXNDZWxsKCkpOwotICAgIGlmIChqc1Rlc3RJbnRlcmZhY2UtPmltcGwoKS5oYXNQZW5k
aW5nQWN0aXZpdHkoKSkKKyAgICBhdXRvJiBqc1Rlc3RJbnRlcmZhY2UgPSBqc0Nhc3Q8SlNUZXN0
SW50ZXJmYWNlJj4oY2VsbCk7CisgICAgaWYgKGpzVGVzdEludGVyZmFjZS5pbXBsKCkuaGFzUGVu
ZGluZ0FjdGl2aXR5KCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIFVOVVNFRF9QQVJBTSh2
aXNpdG9yKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgSlNUZXN0SW50ZXJmYWNlT3du
ZXI6OmZpbmFsaXplKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkKiBjb250
ZXh0KQordm9pZCBKU1Rlc3RJbnRlcmZhY2VPd25lcjo6ZmluYWxpemUoSlNDOjpKU0NlbGwqJiBj
ZWxsLCB2b2lkKiBjb250ZXh0KQogewotICAgIGF1dG8qIGpzVGVzdEludGVyZmFjZSA9IGpzQ2Fz
dDxKU1Rlc3RJbnRlcmZhY2UqPihoYW5kbGUuc2xvdCgpLT5hc0NlbGwoKSk7CisgICAgYXV0byYg
d3JhcHBlciA9IGpzQ2FzdDxKU1Rlc3RJbnRlcmZhY2UmPigqY2VsbCk7CiAgICAgYXV0byYgd29y
bGQgPSAqc3RhdGljX2Nhc3Q8RE9NV3JhcHBlcldvcmxkKj4oY29udGV4dCk7Ci0gICAgdW5jYWNo
ZVdyYXBwZXIod29ybGQsICZqc1Rlc3RJbnRlcmZhY2UtPmltcGwoKSwganNUZXN0SW50ZXJmYWNl
KTsKKyAgICB1bmNhY2hlV3JhcHBlcih3b3JsZCwgJndyYXBwZXIuaW1wbCgpLCAmd3JhcHBlcik7
CiB9CiAKIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgVGVzdEludGVyZmFjZSogaW1wbCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuaApp
bmRleCBlMjYwM2RjLi4wYmM3N2VmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5oCkBAIC05OSw4ICs5OSw4
IEBAIHByb3RlY3RlZDoKIAogY2xhc3MgSlNUZXN0SW50ZXJmYWNlT3duZXIgOiBwdWJsaWMgSlND
OjpXZWFrSGFuZGxlT3duZXIgewogcHVibGljOgotICAgIHZpcnR1YWwgYm9vbCBpc1JlYWNoYWJs
ZUZyb21PcGFxdWVSb290cyhKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+LCB2b2lkKiBjb250ZXh0
LCBKU0M6OlNsb3RWaXNpdG9yJik7Ci0gICAgdmlydHVhbCB2b2lkIGZpbmFsaXplKEpTQzo6SGFu
ZGxlPEpTQzo6VW5rbm93bj4sIHZvaWQqIGNvbnRleHQpOworICAgIGJvb2wgaXNSZWFjaGFibGVG
cm9tT3BhcXVlUm9vdHMoSlNDOjpKU0NlbGwmLCB2b2lkKiBjb250ZXh0LCBKU0M6OlNsb3RWaXNp
dG9yJikgb3ZlcnJpZGU7CisgICAgdm9pZCBmaW5hbGl6ZShKU0M6OkpTQ2VsbComLCB2b2lkKiBj
b250ZXh0KSBvdmVycmlkZTsKIH07CiAKIGlubGluZSBKU0M6OldlYWtIYW5kbGVPd25lciogd3Jh
cHBlck93bmVyKERPTVdyYXBwZXJXb3JsZCYsIFRlc3RJbnRlcmZhY2UqKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1lZGlhUXVlcnlM
aXN0TGlzdGVuZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3BwCmluZGV4IDY3MzAyZDQuLmY0N2UyZGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAKQEAgLTE3
NywxOCArMTc3LDE4IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0TWVkaWFR
dWVyeUxpc3RMaXN0ZW5lclByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kCiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotYm9vbCBKU1Rlc3RNZWRpYVF1ZXJ5TGlz
dExpc3RlbmVyT3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpT
Qzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkKiwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCitib29sIEpT
VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJPd25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9v
dHMoSlNDOjpKU0NlbGwmIGNlbGwsIHZvaWQqLCBTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAg
ICBVTlVTRURfUEFSQU0oaGFuZGxlKTsKKyAgICBVTlVTRURfUEFSQU0oY2VsbCk7CiAgICAgVU5V
U0VEX1BBUkFNKHZpc2l0b3IpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBKU1Rlc3RN
ZWRpYVF1ZXJ5TGlzdExpc3RlbmVyT3duZXI6OmZpbmFsaXplKEpTQzo6SGFuZGxlPEpTQzo6VW5r
bm93bj4gaGFuZGxlLCB2b2lkKiBjb250ZXh0KQordm9pZCBKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExp
c3RlbmVyT3duZXI6OmZpbmFsaXplKEpTQzo6SlNDZWxsKiYgY2VsbCwgdm9pZCogY29udGV4dCkK
IHsKLSAgICBhdXRvKiBqc1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyID0ganNDYXN0PEpTVGVz
dE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIqPihoYW5kbGUuc2xvdCgpLT5hc0NlbGwoKSk7CisgICAg
YXV0byYgd3JhcHBlciA9IGpzQ2FzdDxKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyJj4oKmNl
bGwpOwogICAgIGF1dG8mIHdvcmxkID0gKnN0YXRpY19jYXN0PERPTVdyYXBwZXJXb3JsZCo+KGNv
bnRleHQpOwotICAgIHVuY2FjaGVXcmFwcGVyKHdvcmxkLCAmanNUZXN0TWVkaWFRdWVyeUxpc3RM
aXN0ZW5lci0+aW1wbCgpLCBqc1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyKTsKKyAgICB1bmNh
Y2hlV3JhcHBlcih3b3JsZCwgJndyYXBwZXIuaW1wbCgpLCAmd3JhcHBlcik7CiB9CiAKICNpZiBF
TkFCTEUoQklORElOR19JTlRFR1JJVFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5oIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1lZGlhUXVlcnlMaXN0
TGlzdGVuZXIuaAppbmRleCA5NzU0ZWUwLi4xOGI0M2Q4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5l
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RN
ZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmgKQEAgLTY5LDggKzY5LDggQEAgcHJvdGVjdGVkOgogCiBj
bGFzcyBKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyT3duZXIgOiBwdWJsaWMgSlNDOjpXZWFr
SGFuZGxlT3duZXIgewogcHVibGljOgotICAgIHZpcnR1YWwgYm9vbCBpc1JlYWNoYWJsZUZyb21P
cGFxdWVSb290cyhKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+LCB2b2lkKiBjb250ZXh0LCBKU0M6
OlNsb3RWaXNpdG9yJik7Ci0gICAgdmlydHVhbCB2b2lkIGZpbmFsaXplKEpTQzo6SGFuZGxlPEpT
Qzo6VW5rbm93bj4sIHZvaWQqIGNvbnRleHQpOworICAgIGJvb2wgaXNSZWFjaGFibGVGcm9tT3Bh
cXVlUm9vdHMoSlNDOjpKU0NlbGwmLCB2b2lkKiBjb250ZXh0LCBKU0M6OlNsb3RWaXNpdG9yJikg
b3ZlcnJpZGU7CisgICAgdm9pZCBmaW5hbGl6ZShKU0M6OkpTQ2VsbComLCB2b2lkKiBjb250ZXh0
KSBvdmVycmlkZTsKIH07CiAKIGlubGluZSBKU0M6OldlYWtIYW5kbGVPd25lciogd3JhcHBlck93
bmVyKERPTVdyYXBwZXJXb3JsZCYsIFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyKikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1l
ZENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3ROYW1lZENvbnN0cnVjdG9yLmNwcAppbmRleCA3YmQ1ODM0Li5hZTU4ZWFiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFt
ZWRDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE5hbWVkQ29uc3RydWN0b3IuY3BwCkBAIC0yMzAsMjAgKzIzMCwyMCBAQCBK
U1ZhbHVlIEpTVGVzdE5hbWVkQ29uc3RydWN0b3I6OmdldE5hbWVkQ29uc3RydWN0b3IoVk0mIHZt
LCBKU0dsb2JhbE9iamVjdCogZ2xvYgogICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1Rl
c3ROYW1lZENvbnN0cnVjdG9yTmFtZWRDb25zdHJ1Y3Rvcj4odm0sIGpzQ2FzdDxKU0RPTUdsb2Jh
bE9iamVjdCo+KGdsb2JhbE9iamVjdCkpOwogfQogCi1ib29sIEpTVGVzdE5hbWVkQ29uc3RydWN0
b3JPd25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtu
b3duPiBoYW5kbGUsIHZvaWQqLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK2Jvb2wgSlNUZXN0TmFt
ZWRDb25zdHJ1Y3Rvck93bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6OkpTQ2Vs
bCYgY2VsbCwgdm9pZCosIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAgIGF1dG8qIGpzVGVz
dE5hbWVkQ29uc3RydWN0b3IgPSBqc0Nhc3Q8SlNUZXN0TmFtZWRDb25zdHJ1Y3Rvcio+KGhhbmRs
ZS5zbG90KCktPmFzQ2VsbCgpKTsKLSAgICBpZiAoanNUZXN0TmFtZWRDb25zdHJ1Y3Rvci0+aW1w
bCgpLmhhc1BlbmRpbmdBY3Rpdml0eSgpKQorICAgIGF1dG8mIGpzVGVzdE5hbWVkQ29uc3RydWN0
b3IgPSBqc0Nhc3Q8SlNUZXN0TmFtZWRDb25zdHJ1Y3RvciY+KGNlbGwpOworICAgIGlmIChqc1Rl
c3ROYW1lZENvbnN0cnVjdG9yLmltcGwoKS5oYXNQZW5kaW5nQWN0aXZpdHkoKSkKICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgVU5VU0VEX1BBUkFNKHZpc2l0b3IpOwogICAgIHJldHVybiBmYWxz
ZTsKIH0KIAotdm9pZCBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yT3duZXI6OmZpbmFsaXplKEpTQzo6
SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkKiBjb250ZXh0KQordm9pZCBKU1Rlc3RO
YW1lZENvbnN0cnVjdG9yT3duZXI6OmZpbmFsaXplKEpTQzo6SlNDZWxsKiYgY2VsbCwgdm9pZCog
Y29udGV4dCkKIHsKLSAgICBhdXRvKiBqc1Rlc3ROYW1lZENvbnN0cnVjdG9yID0ganNDYXN0PEpT
VGVzdE5hbWVkQ29uc3RydWN0b3IqPihoYW5kbGUuc2xvdCgpLT5hc0NlbGwoKSk7CisgICAgYXV0
byYgd3JhcHBlciA9IGpzQ2FzdDxKU1Rlc3ROYW1lZENvbnN0cnVjdG9yJj4oKmNlbGwpOwogICAg
IGF1dG8mIHdvcmxkID0gKnN0YXRpY19jYXN0PERPTVdyYXBwZXJXb3JsZCo+KGNvbnRleHQpOwot
ICAgIHVuY2FjaGVXcmFwcGVyKHdvcmxkLCAmanNUZXN0TmFtZWRDb25zdHJ1Y3Rvci0+aW1wbCgp
LCBqc1Rlc3ROYW1lZENvbnN0cnVjdG9yKTsKKyAgICB1bmNhY2hlV3JhcHBlcih3b3JsZCwgJndy
YXBwZXIuaW1wbCgpLCAmd3JhcHBlcik7CiB9CiAKICNpZiBFTkFCTEUoQklORElOR19JTlRFR1JJ
VFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0TmFtZWRDb25zdHJ1Y3Rvci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkQ29uc3RydWN0b3IuaAppbmRleCBkNjA4ZTE2Li42NmYyZWM3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0TmFtZWRDb25zdHJ1Y3Rvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3ROYW1lZENvbnN0cnVjdG9yLmgKQEAgLTcwLDggKzcwLDggQEAgcHJv
dGVjdGVkOgogCiBjbGFzcyBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yT3duZXIgOiBwdWJsaWMgSlND
OjpXZWFrSGFuZGxlT3duZXIgewogcHVibGljOgotICAgIHZpcnR1YWwgYm9vbCBpc1JlYWNoYWJs
ZUZyb21PcGFxdWVSb290cyhKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+LCB2b2lkKiBjb250ZXh0
LCBKU0M6OlNsb3RWaXNpdG9yJik7Ci0gICAgdmlydHVhbCB2b2lkIGZpbmFsaXplKEpTQzo6SGFu
ZGxlPEpTQzo6VW5rbm93bj4sIHZvaWQqIGNvbnRleHQpOworICAgIGJvb2wgaXNSZWFjaGFibGVG
cm9tT3BhcXVlUm9vdHMoSlNDOjpKU0NlbGwmLCB2b2lkKiBjb250ZXh0LCBKU0M6OlNsb3RWaXNp
dG9yJikgb3ZlcnJpZGU7CisgICAgdm9pZCBmaW5hbGl6ZShKU0M6OkpTQ2VsbComLCB2b2lkKiBj
b250ZXh0KSBvdmVycmlkZTsKIH07CiAKIGlubGluZSBKU0M6OldlYWtIYW5kbGVPd25lciogd3Jh
cHBlck93bmVyKERPTVdyYXBwZXJXb3JsZCYsIFRlc3ROYW1lZENvbnN0cnVjdG9yKikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb25k
ZXRlcm1pbmlzdGljLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3ROb25kZXRlcm1pbmlzdGljLmNwcAppbmRleCAxOGQyY2Q0Li41ZThhYTZlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9u
ZGV0ZXJtaW5pc3RpYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE5vbmRldGVybWluaXN0aWMuY3BwCkBAIC00ODMsMTggKzQ4MywxOCBAQCBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE5vbmRldGVybWluaXN0aWNQcm90b3R5
cGVGdW5jdGlvbk5vbmRldGVybWluaQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0
KTsKIH0KIAotYm9vbCBKU1Rlc3ROb25kZXRlcm1pbmlzdGljT3duZXI6OmlzUmVhY2hhYmxlRnJv
bU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkKiwgU2xv
dFZpc2l0b3ImIHZpc2l0b3IpCitib29sIEpTVGVzdE5vbmRldGVybWluaXN0aWNPd25lcjo6aXNS
ZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpKU0NlbGwmIGNlbGwsIHZvaWQqLCBTbG90Vmlz
aXRvciYgdmlzaXRvcikKIHsKLSAgICBVTlVTRURfUEFSQU0oaGFuZGxlKTsKKyAgICBVTlVTRURf
UEFSQU0oY2VsbCk7CiAgICAgVU5VU0VEX1BBUkFNKHZpc2l0b3IpOwogICAgIHJldHVybiBmYWxz
ZTsKIH0KIAotdm9pZCBKU1Rlc3ROb25kZXRlcm1pbmlzdGljT3duZXI6OmZpbmFsaXplKEpTQzo6
SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkKiBjb250ZXh0KQordm9pZCBKU1Rlc3RO
b25kZXRlcm1pbmlzdGljT3duZXI6OmZpbmFsaXplKEpTQzo6SlNDZWxsKiYgY2VsbCwgdm9pZCog
Y29udGV4dCkKIHsKLSAgICBhdXRvKiBqc1Rlc3ROb25kZXRlcm1pbmlzdGljID0ganNDYXN0PEpT
VGVzdE5vbmRldGVybWluaXN0aWMqPihoYW5kbGUuc2xvdCgpLT5hc0NlbGwoKSk7CisgICAgYXV0
byYgd3JhcHBlciA9IGpzQ2FzdDxKU1Rlc3ROb25kZXRlcm1pbmlzdGljJj4oKmNlbGwpOwogICAg
IGF1dG8mIHdvcmxkID0gKnN0YXRpY19jYXN0PERPTVdyYXBwZXJXb3JsZCo+KGNvbnRleHQpOwot
ICAgIHVuY2FjaGVXcmFwcGVyKHdvcmxkLCAmanNUZXN0Tm9uZGV0ZXJtaW5pc3RpYy0+aW1wbCgp
LCBqc1Rlc3ROb25kZXRlcm1pbmlzdGljKTsKKyAgICB1bmNhY2hlV3JhcHBlcih3b3JsZCwgJndy
YXBwZXIuaW1wbCgpLCAmd3JhcHBlcik7CiB9CiAKICNpZiBFTkFCTEUoQklORElOR19JTlRFR1JJ
VFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0Tm9uZGV0ZXJtaW5pc3RpYy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5vbmRldGVybWluaXN0aWMuaAppbmRleCAwNzVlZjdhLi5lYjUxNzAz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0Tm9uZGV0ZXJtaW5pc3RpYy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3ROb25kZXRlcm1pbmlzdGljLmgKQEAgLTY5LDggKzY5LDggQEAgcHJv
dGVjdGVkOgogCiBjbGFzcyBKU1Rlc3ROb25kZXRlcm1pbmlzdGljT3duZXIgOiBwdWJsaWMgSlND
OjpXZWFrSGFuZGxlT3duZXIgewogcHVibGljOgotICAgIHZpcnR1YWwgYm9vbCBpc1JlYWNoYWJs
ZUZyb21PcGFxdWVSb290cyhKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+LCB2b2lkKiBjb250ZXh0
LCBKU0M6OlNsb3RWaXNpdG9yJik7Ci0gICAgdmlydHVhbCB2b2lkIGZpbmFsaXplKEpTQzo6SGFu
ZGxlPEpTQzo6VW5rbm93bj4sIHZvaWQqIGNvbnRleHQpOworICAgIGJvb2wgaXNSZWFjaGFibGVG
cm9tT3BhcXVlUm9vdHMoSlNDOjpKU0NlbGwmLCB2b2lkKiBjb250ZXh0LCBKU0M6OlNsb3RWaXNp
dG9yJikgb3ZlcnJpZGU7CisgICAgdm9pZCBmaW5hbGl6ZShKU0M6OkpTQ2VsbComLCB2b2lkKiBj
b250ZXh0KSBvdmVycmlkZTsKIH07CiAKIGlubGluZSBKU0M6OldlYWtIYW5kbGVPd25lciogd3Jh
cHBlck93bmVyKERPTVdyYXBwZXJXb3JsZCYsIFRlc3ROb25kZXRlcm1pbmlzdGljKikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmou
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5j
cHAKaW5kZXggZDBmOWFkZC4uNzU5YjAzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKQEAgLTQ2ODIsMTggKzQ2ODIs
MTggQEAgdm9pZCBKU1Rlc3RPYmo6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90Vmlz
aXRvciYgdmlzaXRvcikKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9jYWNoZWRB
dHRyaWJ1dGUyKTsKIH0KIAotYm9vbCBKU1Rlc3RPYmpPd25lcjo6aXNSZWFjaGFibGVGcm9tT3Bh
cXVlUm9vdHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQqLCBTbG90Vmlz
aXRvciYgdmlzaXRvcikKK2Jvb2wgSlNUZXN0T2JqT3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1
ZVJvb3RzKEpTQzo6SlNDZWxsJiBjZWxsLCB2b2lkKiwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7
Ci0gICAgVU5VU0VEX1BBUkFNKGhhbmRsZSk7CisgICAgVU5VU0VEX1BBUkFNKGNlbGwpOwogICAg
IFVOVVNFRF9QQVJBTSh2aXNpdG9yKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgSlNU
ZXN0T2JqT3duZXI6OmZpbmFsaXplKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2
b2lkKiBjb250ZXh0KQordm9pZCBKU1Rlc3RPYmpPd25lcjo6ZmluYWxpemUoSlNDOjpKU0NlbGwq
JiBjZWxsLCB2b2lkKiBjb250ZXh0KQogewotICAgIGF1dG8qIGpzVGVzdE9iaiA9IGpzQ2FzdDxK
U1Rlc3RPYmoqPihoYW5kbGUuc2xvdCgpLT5hc0NlbGwoKSk7CisgICAgYXV0byYgd3JhcHBlciA9
IGpzQ2FzdDxKU1Rlc3RPYmomPigqY2VsbCk7CiAgICAgYXV0byYgd29ybGQgPSAqc3RhdGljX2Nh
c3Q8RE9NV3JhcHBlcldvcmxkKj4oY29udGV4dCk7Ci0gICAgdW5jYWNoZVdyYXBwZXIod29ybGQs
ICZqc1Rlc3RPYmotPmltcGwoKSwganNUZXN0T2JqKTsKKyAgICB1bmNhY2hlV3JhcHBlcih3b3Js
ZCwgJndyYXBwZXIuaW1wbCgpLCAmd3JhcHBlcik7CiB9CiAKICNpZiBFTkFCTEUoQklORElOR19J
TlRFR1JJVFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0T2JqLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0T2JqLmgKaW5kZXggMjM1NDVlZS4uNzc0YzcxNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouaApAQCAtODUsOCAr
ODUsOCBAQCBwcm90ZWN0ZWQ6CiAKIGNsYXNzIEpTVGVzdE9iak93bmVyIDogcHVibGljIEpTQzo6
V2Vha0hhbmRsZU93bmVyIHsKIHB1YmxpYzoKLSAgICB2aXJ0dWFsIGJvb2wgaXNSZWFjaGFibGVG
cm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiwgdm9pZCogY29udGV4dCwg
SlNDOjpTbG90VmlzaXRvciYpOwotICAgIHZpcnR1YWwgdm9pZCBmaW5hbGl6ZShKU0M6OkhhbmRs
ZTxKU0M6OlVua25vd24+LCB2b2lkKiBjb250ZXh0KTsKKyAgICBib29sIGlzUmVhY2hhYmxlRnJv
bU9wYXF1ZVJvb3RzKEpTQzo6SlNDZWxsJiwgdm9pZCogY29udGV4dCwgSlNDOjpTbG90VmlzaXRv
ciYpIG92ZXJyaWRlOworICAgIHZvaWQgZmluYWxpemUoSlNDOjpKU0NlbGwqJiwgdm9pZCogY29u
dGV4dCkgb3ZlcnJpZGU7CiB9OwogCiBpbmxpbmUgSlNDOjpXZWFrSGFuZGxlT3duZXIqIHdyYXBw
ZXJPd25lcihET01XcmFwcGVyV29ybGQmLCBUZXN0T2JqKikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcAppbmRleCBiYmM0Nzg5Li40NDY5NDI0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3Zlcmxv
YWRlZENvbnN0cnVjdG9ycy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwCkBAIC0yNDYsMTggKzI0
NiwxOCBAQCBKU1ZhbHVlIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OmdldENvbnN0cnVj
dG9yKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsbwogICAgIHJldHVybiBnZXRET01Db25zdHJ1
Y3RvcjxKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3I+KHZtLCBqc0Nhc3Q8
SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKIH0KIAotYm9vbCBKU1Rlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzT3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6
SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkKiwgU2xvdFZpc2l0b3ImIHZpc2l0b3Ip
Citib29sIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNPd25lcjo6aXNSZWFjaGFibGVGcm9t
T3BhcXVlUm9vdHMoSlNDOjpKU0NlbGwmIGNlbGwsIHZvaWQqLCBTbG90VmlzaXRvciYgdmlzaXRv
cikKIHsKLSAgICBVTlVTRURfUEFSQU0oaGFuZGxlKTsKKyAgICBVTlVTRURfUEFSQU0oY2VsbCk7
CiAgICAgVU5VU0VEX1BBUkFNKHZpc2l0b3IpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9p
ZCBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzT3duZXI6OmZpbmFsaXplKEpTQzo6SGFuZGxl
PEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkKiBjb250ZXh0KQordm9pZCBKU1Rlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzT3duZXI6OmZpbmFsaXplKEpTQzo6SlNDZWxsKiYgY2VsbCwgdm9pZCog
Y29udGV4dCkKIHsKLSAgICBhdXRvKiBqc1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzID0ganND
YXN0PEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMqPihoYW5kbGUuc2xvdCgpLT5hc0NlbGwo
KSk7CisgICAgYXV0byYgd3JhcHBlciA9IGpzQ2FzdDxKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzJj4oKmNlbGwpOwogICAgIGF1dG8mIHdvcmxkID0gKnN0YXRpY19jYXN0PERPTVdyYXBwZXJX
b3JsZCo+KGNvbnRleHQpOwotICAgIHVuY2FjaGVXcmFwcGVyKHdvcmxkLCAmanNUZXN0T3Zlcmxv
YWRlZENvbnN0cnVjdG9ycy0+aW1wbCgpLCBqc1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKTsK
KyAgICB1bmNhY2hlV3JhcHBlcih3b3JsZCwgJndyYXBwZXIuaW1wbCgpLCAmd3JhcHBlcik7CiB9
CiAKICNpZiBFTkFCTEUoQklORElOR19JTlRFR1JJVFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
cy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJs
b2FkZWRDb25zdHJ1Y3RvcnMuaAppbmRleCA4NmE0YWMzLi5lNTIzZmMxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENv
bnN0cnVjdG9ycy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmgKQEAgLTY5LDggKzY5LDggQEAgcHJvdGVj
dGVkOgogCiBjbGFzcyBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzT3duZXIgOiBwdWJsaWMg
SlNDOjpXZWFrSGFuZGxlT3duZXIgewogcHVibGljOgotICAgIHZpcnR1YWwgYm9vbCBpc1JlYWNo
YWJsZUZyb21PcGFxdWVSb290cyhKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+LCB2b2lkKiBjb250
ZXh0LCBKU0M6OlNsb3RWaXNpdG9yJik7Ci0gICAgdmlydHVhbCB2b2lkIGZpbmFsaXplKEpTQzo6
SGFuZGxlPEpTQzo6VW5rbm93bj4sIHZvaWQqIGNvbnRleHQpOworICAgIGJvb2wgaXNSZWFjaGFi
bGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpKU0NlbGwmLCB2b2lkKiBjb250ZXh0LCBKU0M6OlNsb3RW
aXNpdG9yJikgb3ZlcnJpZGU7CisgICAgdm9pZCBmaW5hbGl6ZShKU0M6OkpTQ2VsbComLCB2b2lk
KiBjb250ZXh0KSBvdmVycmlkZTsKIH07CiAKIGlubGluZSBKU0M6OldlYWtIYW5kbGVPd25lciog
d3JhcHBlck93bmVyKERPTVdyYXBwZXJXb3JsZCYsIFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3Jz
KikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RPdmVycmlkZUJ1aWx0aW5zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RPdmVycmlkZUJ1aWx0aW5zLmNwcAppbmRleCAzNDZlMGNkLi41Zjdj
YTY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0T3ZlcnJpZGVCdWlsdGlucy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJyaWRlQnVpbHRpbnMuY3BwCkBAIC0yMjEsMTggKzIy
MSwxOCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE92ZXJyaWRlQnVpbHRp
bnNQcm90b3R5cGVGdW5jdGlvbk5hbWVkSXRlbShFeAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUocmVzdWx0KTsKIH0KIAotYm9vbCBKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zT3duZXI6OmlzUmVh
Y2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2
b2lkKiwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCitib29sIEpTVGVzdE92ZXJyaWRlQnVpbHRpbnNP
d25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpKU0NlbGwmIGNlbGwsIHZvaWQq
LCBTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBVTlVTRURfUEFSQU0oaGFuZGxlKTsKKyAg
ICBVTlVTRURfUEFSQU0oY2VsbCk7CiAgICAgVU5VU0VEX1BBUkFNKHZpc2l0b3IpOwogICAgIHJl
dHVybiBmYWxzZTsKIH0KIAotdm9pZCBKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zT3duZXI6OmZpbmFs
aXplKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkKiBjb250ZXh0KQordm9p
ZCBKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zT3duZXI6OmZpbmFsaXplKEpTQzo6SlNDZWxsKiYgY2Vs
bCwgdm9pZCogY29udGV4dCkKIHsKLSAgICBhdXRvKiBqc1Rlc3RPdmVycmlkZUJ1aWx0aW5zID0g
anNDYXN0PEpTVGVzdE92ZXJyaWRlQnVpbHRpbnMqPihoYW5kbGUuc2xvdCgpLT5hc0NlbGwoKSk7
CisgICAgYXV0byYgd3JhcHBlciA9IGpzQ2FzdDxKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zJj4oKmNl
bGwpOwogICAgIGF1dG8mIHdvcmxkID0gKnN0YXRpY19jYXN0PERPTVdyYXBwZXJXb3JsZCo+KGNv
bnRleHQpOwotICAgIHVuY2FjaGVXcmFwcGVyKHdvcmxkLCAmanNUZXN0T3ZlcnJpZGVCdWlsdGlu
cy0+aW1wbCgpLCBqc1Rlc3RPdmVycmlkZUJ1aWx0aW5zKTsKKyAgICB1bmNhY2hlV3JhcHBlcih3
b3JsZCwgJndyYXBwZXIuaW1wbCgpLCAmd3JhcHBlcik7CiB9CiAKICNpZiBFTkFCTEUoQklORElO
R19JTlRFR1JJVFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0T3ZlcnJpZGVCdWlsdGlucy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJyaWRlQnVpbHRpbnMuaAppbmRleCBmNWFkNTU1
Li4wNDQ5MmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0T3ZlcnJpZGVCdWlsdGlucy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVycmlkZUJ1aWx0aW5zLmgKQEAgLTc1LDggKzc1
LDggQEAgcHJpdmF0ZToKIAogY2xhc3MgSlNUZXN0T3ZlcnJpZGVCdWlsdGluc093bmVyIDogcHVi
bGljIEpTQzo6V2Vha0hhbmRsZU93bmVyIHsKIHB1YmxpYzoKLSAgICB2aXJ0dWFsIGJvb2wgaXNS
ZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiwgdm9pZCog
Y29udGV4dCwgSlNDOjpTbG90VmlzaXRvciYpOwotICAgIHZpcnR1YWwgdm9pZCBmaW5hbGl6ZShK
U0M6OkhhbmRsZTxKU0M6OlVua25vd24+LCB2b2lkKiBjb250ZXh0KTsKKyAgICBib29sIGlzUmVh
Y2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SlNDZWxsJiwgdm9pZCogY29udGV4dCwgSlNDOjpT
bG90VmlzaXRvciYpIG92ZXJyaWRlOworICAgIHZvaWQgZmluYWxpemUoSlNDOjpKU0NlbGwqJiwg
dm9pZCogY29udGV4dCkgb3ZlcnJpZGU7CiB9OwogCiBpbmxpbmUgSlNDOjpXZWFrSGFuZGxlT3du
ZXIqIHdyYXBwZXJPd25lcihET01XcmFwcGVyV29ybGQmLCBUZXN0T3ZlcnJpZGVCdWlsdGlucyop
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZh
Y2UuY3BwCmluZGV4IGNhNDM1NGEuLmYxYjY0ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRl
cmZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwCkBAIC0zMTEsMTggKzMxMSwx
OCBAQCB2b2lkIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZTo6dmlzaXRDaGls
ZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdAogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2Jq
ZWN0LT5tX2NhY2hlZFJlYWRvbmx5VmFsdWUpOwogfQogCi1ib29sIEpTVGVzdFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZUludGVyZmFjZU93bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6
OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCosIFNsb3RWaXNpdG9yJiB2aXNpdG9y
KQorYm9vbCBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VPd25lcjo6aXNSZWFj
aGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpKU0NlbGwmIGNlbGwsIHZvaWQqLCBTbG90VmlzaXRv
ciYgdmlzaXRvcikKIHsKLSAgICBVTlVTRURfUEFSQU0oaGFuZGxlKTsKKyAgICBVTlVTRURfUEFS
QU0oY2VsbCk7CiAgICAgVU5VU0VEX1BBUkFNKHZpc2l0b3IpOwogICAgIHJldHVybiBmYWxzZTsK
IH0KIAotdm9pZCBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VPd25lcjo6Zmlu
YWxpemUoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQqIGNvbnRleHQpCit2
b2lkIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZU93bmVyOjpmaW5hbGl6ZShK
U0M6OkpTQ2VsbComIGNlbGwsIHZvaWQqIGNvbnRleHQpCiB7Ci0gICAgYXV0byoganNUZXN0U2Vy
aWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlID0ganNDYXN0PEpTVGVzdFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZUludGVyZmFjZSo+KGhhbmRsZS5zbG90KCktPmFzQ2VsbCgpKTsKKyAgICBhdXRvJiB3
cmFwcGVyID0ganNDYXN0PEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSY+KCpj
ZWxsKTsKICAgICBhdXRvJiB3b3JsZCA9ICpzdGF0aWNfY2FzdDxET01XcmFwcGVyV29ybGQqPihj
b250ZXh0KTsKLSAgICB1bmNhY2hlV3JhcHBlcih3b3JsZCwgJmpzVGVzdFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZUludGVyZmFjZS0+aW1wbCgpLCBqc1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRl
cmZhY2UpOworICAgIHVuY2FjaGVXcmFwcGVyKHdvcmxkLCAmd3JhcHBlci5pbXBsKCksICZ3cmFw
cGVyKTsKIH0KIAogI2lmIEVOQUJMRShCSU5ESU5HX0lOVEVHUklUWSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemVkU2Ny
aXB0VmFsdWVJbnRlcmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuaAppbmRleCBlZTcxMTIw
Li42NDIxZDIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZUludGVyZmFjZS5oCkBAIC03NSw4ICs3NSw4IEBAIHByb3RlY3RlZDoKIAogY2xhc3MgSlNU
ZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlT3duZXIgOiBwdWJsaWMgSlNDOjpXZWFr
SGFuZGxlT3duZXIgewogcHVibGljOgotICAgIHZpcnR1YWwgYm9vbCBpc1JlYWNoYWJsZUZyb21P
cGFxdWVSb290cyhKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+LCB2b2lkKiBjb250ZXh0LCBKU0M6
OlNsb3RWaXNpdG9yJik7Ci0gICAgdmlydHVhbCB2b2lkIGZpbmFsaXplKEpTQzo6SGFuZGxlPEpT
Qzo6VW5rbm93bj4sIHZvaWQqIGNvbnRleHQpOworICAgIGJvb2wgaXNSZWFjaGFibGVGcm9tT3Bh
cXVlUm9vdHMoSlNDOjpKU0NlbGwmLCB2b2lkKiBjb250ZXh0LCBKU0M6OlNsb3RWaXNpdG9yJikg
b3ZlcnJpZGU7CisgICAgdm9pZCBmaW5hbGl6ZShKU0M6OkpTQ2VsbComLCB2b2lkKiBjb250ZXh0
KSBvdmVycmlkZTsKIH07CiAKIGlubGluZSBKU0M6OldlYWtIYW5kbGVPd25lciogd3JhcHBlck93
bmVyKERPTVdyYXBwZXJXb3JsZCYsIFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2Uq
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdFR5cGVkZWZzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RUeXBlZGVmcy5jcHAKaW5kZXggOGVlZmVlMi4uZjBlYTI4MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlw
ZWRlZnMuY3BwCkBAIC03MjAsMTggKzcyMCwxOCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoRXhjZXB0aW9uKAog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLWJvb2wgSlNU
ZXN0VHlwZWRlZnNPd25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8
SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQqLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK2Jvb2wg
SlNUZXN0VHlwZWRlZnNPd25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpKU0Nl
bGwmIGNlbGwsIHZvaWQqLCBTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBVTlVTRURfUEFS
QU0oaGFuZGxlKTsKKyAgICBVTlVTRURfUEFSQU0oY2VsbCk7CiAgICAgVU5VU0VEX1BBUkFNKHZp
c2l0b3IpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBKU1Rlc3RUeXBlZGVmc093bmVy
OjpmaW5hbGl6ZShKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCogY29udGV4
dCkKK3ZvaWQgSlNUZXN0VHlwZWRlZnNPd25lcjo6ZmluYWxpemUoSlNDOjpKU0NlbGwqJiBjZWxs
LCB2b2lkKiBjb250ZXh0KQogewotICAgIGF1dG8qIGpzVGVzdFR5cGVkZWZzID0ganNDYXN0PEpT
VGVzdFR5cGVkZWZzKj4oaGFuZGxlLnNsb3QoKS0+YXNDZWxsKCkpOworICAgIGF1dG8mIHdyYXBw
ZXIgPSBqc0Nhc3Q8SlNUZXN0VHlwZWRlZnMmPigqY2VsbCk7CiAgICAgYXV0byYgd29ybGQgPSAq
c3RhdGljX2Nhc3Q8RE9NV3JhcHBlcldvcmxkKj4oY29udGV4dCk7Ci0gICAgdW5jYWNoZVdyYXBw
ZXIod29ybGQsICZqc1Rlc3RUeXBlZGVmcy0+aW1wbCgpLCBqc1Rlc3RUeXBlZGVmcyk7CisgICAg
dW5jYWNoZVdyYXBwZXIod29ybGQsICZ3cmFwcGVyLmltcGwoKSwgJndyYXBwZXIpOwogfQogCiAj
aWYgRU5BQkxFKEJJTkRJTkdfSU5URUdSSVRZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmggYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMuaAppbmRleCA3YjI2ZTM0
Li42YjE4M2E5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0VHlwZWRlZnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMuaApAQCAtNzIsOCArNzIsOCBAQCBwcm90ZWN0ZWQ6
CiAKIGNsYXNzIEpTVGVzdFR5cGVkZWZzT3duZXIgOiBwdWJsaWMgSlNDOjpXZWFrSGFuZGxlT3du
ZXIgewogcHVibGljOgotICAgIHZpcnR1YWwgYm9vbCBpc1JlYWNoYWJsZUZyb21PcGFxdWVSb290
cyhKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+LCB2b2lkKiBjb250ZXh0LCBKU0M6OlNsb3RWaXNp
dG9yJik7Ci0gICAgdmlydHVhbCB2b2lkIGZpbmFsaXplKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93
bj4sIHZvaWQqIGNvbnRleHQpOworICAgIGJvb2wgaXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMo
SlNDOjpKU0NlbGwmLCB2b2lkKiBjb250ZXh0LCBKU0M6OlNsb3RWaXNpdG9yJikgb3ZlcnJpZGU7
CisgICAgdm9pZCBmaW5hbGl6ZShKU0M6OkpTQ2VsbComLCB2b2lkKiBjb250ZXh0KSBvdmVycmlk
ZTsKIH07CiAKIGlubGluZSBKU0M6OldlYWtIYW5kbGVPd25lciogd3JhcHBlck93bmVyKERPTVdy
YXBwZXJXb3JsZCYsIFRlc3RUeXBlZGVmcyopCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNhdHRyaWJ1dGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTYXR0cmlidXRlLmNwcAppbmRleCBmNmM5MTk3Li45
ODMxNTNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNhdHRyaWJ1dGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU2F0dHJpYnV0ZS5jcHAKQEAgLTE3MywxOCArMTczLDE4IEBAIEpTVmFsdWUgSlNh
dHRyaWJ1dGU6OmdldENvbnN0cnVjdG9yKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCkKICAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNhdHRyaWJ1dGVDb25zdHJ1Y3Rv
cj4odm0sIGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkpOwogfQogCi1i
b29sIEpTYXR0cmlidXRlT3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFu
ZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkKiwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiti
b29sIEpTYXR0cmlidXRlT3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SlND
ZWxsJiBjZWxsLCB2b2lkKiwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgVU5VU0VEX1BB
UkFNKGhhbmRsZSk7CisgICAgVU5VU0VEX1BBUkFNKGNlbGwpOwogICAgIFVOVVNFRF9QQVJBTSh2
aXNpdG9yKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgSlNhdHRyaWJ1dGVPd25lcjo6
ZmluYWxpemUoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQqIGNvbnRleHQp
Cit2b2lkIEpTYXR0cmlidXRlT3duZXI6OmZpbmFsaXplKEpTQzo6SlNDZWxsKiYgY2VsbCwgdm9p
ZCogY29udGV4dCkKIHsKLSAgICBhdXRvKiBqc2F0dHJpYnV0ZSA9IGpzQ2FzdDxKU2F0dHJpYnV0
ZSo+KGhhbmRsZS5zbG90KCktPmFzQ2VsbCgpKTsKKyAgICBhdXRvJiB3cmFwcGVyID0ganNDYXN0
PEpTYXR0cmlidXRlJj4oKmNlbGwpOwogICAgIGF1dG8mIHdvcmxkID0gKnN0YXRpY19jYXN0PERP
TVdyYXBwZXJXb3JsZCo+KGNvbnRleHQpOwotICAgIHVuY2FjaGVXcmFwcGVyKHdvcmxkLCAmanNh
dHRyaWJ1dGUtPmltcGwoKSwganNhdHRyaWJ1dGUpOworICAgIHVuY2FjaGVXcmFwcGVyKHdvcmxk
LCAmd3JhcHBlci5pbXBsKCksICZ3cmFwcGVyKTsKIH0KIAogI2lmIEVOQUJMRShCSU5ESU5HX0lO
VEVHUklUWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU2F0dHJpYnV0ZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTYXR0cmlidXRlLmgKaW5kZXggYzY1N2I4NS4uYjc2OWU5ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTYXR0cmlidXRlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTYXR0cmlidXRlLmgKQEAg
LTcwLDggKzcwLDggQEAgcHJvdGVjdGVkOgogCiBjbGFzcyBKU2F0dHJpYnV0ZU93bmVyIDogcHVi
bGljIEpTQzo6V2Vha0hhbmRsZU93bmVyIHsKIHB1YmxpYzoKLSAgICB2aXJ0dWFsIGJvb2wgaXNS
ZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiwgdm9pZCog
Y29udGV4dCwgSlNDOjpTbG90VmlzaXRvciYpOwotICAgIHZpcnR1YWwgdm9pZCBmaW5hbGl6ZShK
U0M6OkhhbmRsZTxKU0M6OlVua25vd24+LCB2b2lkKiBjb250ZXh0KTsKKyAgICBib29sIGlzUmVh
Y2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SlNDZWxsJiwgdm9pZCogY29udGV4dCwgSlNDOjpT
bG90VmlzaXRvciYpIG92ZXJyaWRlOworICAgIHZvaWQgZmluYWxpemUoSlNDOjpKU0NlbGwqJiwg
dm9pZCogY29udGV4dCkgb3ZlcnJpZGU7CiB9OwogCiBpbmxpbmUgSlNDOjpXZWFrSGFuZGxlT3du
ZXIqIHdyYXBwZXJPd25lcihET01XcmFwcGVyV29ybGQmLCBhdHRyaWJ1dGUqKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTcmVhZG9ubHkuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTcmVhZG9ubHkuY3Bw
CmluZGV4IDdiMDU2ODAuLjIwN2MwYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU3JlYWRvbmx5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNyZWFkb25seS5jcHAKQEAgLTE1MiwxOCArMTUyLDE4
IEBAIEpTVmFsdWUgSlNyZWFkb25seTo6Z2V0Q29uc3RydWN0b3IoVk0mIHZtLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0KQogICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU3JlYWRv
bmx5Q29uc3RydWN0b3I+KHZtLCBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmpl
Y3QpKTsKIH0KIAotYm9vbCBKU3JlYWRvbmx5T3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJv
b3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkKiwgU2xvdFZpc2l0b3Im
IHZpc2l0b3IpCitib29sIEpTcmVhZG9ubHlPd25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9v
dHMoSlNDOjpKU0NlbGwmIGNlbGwsIHZvaWQqLCBTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAg
ICBVTlVTRURfUEFSQU0oaGFuZGxlKTsKKyAgICBVTlVTRURfUEFSQU0oY2VsbCk7CiAgICAgVU5V
U0VEX1BBUkFNKHZpc2l0b3IpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBKU3JlYWRv
bmx5T3duZXI6OmZpbmFsaXplKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lk
KiBjb250ZXh0KQordm9pZCBKU3JlYWRvbmx5T3duZXI6OmZpbmFsaXplKEpTQzo6SlNDZWxsKiYg
Y2VsbCwgdm9pZCogY29udGV4dCkKIHsKLSAgICBhdXRvKiBqc3JlYWRvbmx5ID0ganNDYXN0PEpT
cmVhZG9ubHkqPihoYW5kbGUuc2xvdCgpLT5hc0NlbGwoKSk7CisgICAgYXV0byYgd3JhcHBlciA9
IGpzQ2FzdDxKU3JlYWRvbmx5Jj4oKmNlbGwpOwogICAgIGF1dG8mIHdvcmxkID0gKnN0YXRpY19j
YXN0PERPTVdyYXBwZXJXb3JsZCo+KGNvbnRleHQpOwotICAgIHVuY2FjaGVXcmFwcGVyKHdvcmxk
LCAmanNyZWFkb25seS0+aW1wbCgpLCBqc3JlYWRvbmx5KTsKKyAgICB1bmNhY2hlV3JhcHBlcih3
b3JsZCwgJndyYXBwZXIuaW1wbCgpLCAmd3JhcHBlcik7CiB9CiAKIEpTQzo6SlNWYWx1ZSB0b0pT
KEpTQzo6RXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgcmVhZG9u
bHkqIGltcGwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNyZWFkb25seS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTcmVhZG9ubHkuaAppbmRleCBiMWY2MmU4Li5kMGUxODg4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNyZWFkb25seS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU3JlYWRvbmx5LmgKQEAgLTY5
LDggKzY5LDggQEAgcHJvdGVjdGVkOgogCiBjbGFzcyBKU3JlYWRvbmx5T3duZXIgOiBwdWJsaWMg
SlNDOjpXZWFrSGFuZGxlT3duZXIgewogcHVibGljOgotICAgIHZpcnR1YWwgYm9vbCBpc1JlYWNo
YWJsZUZyb21PcGFxdWVSb290cyhKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+LCB2b2lkKiBjb250
ZXh0LCBKU0M6OlNsb3RWaXNpdG9yJik7Ci0gICAgdmlydHVhbCB2b2lkIGZpbmFsaXplKEpTQzo6
SGFuZGxlPEpTQzo6VW5rbm93bj4sIHZvaWQqIGNvbnRleHQpOworICAgIGJvb2wgaXNSZWFjaGFi
bGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpKU0NlbGwmLCB2b2lkKiBjb250ZXh0LCBKU0M6OlNsb3RW
aXNpdG9yJikgb3ZlcnJpZGU7CisgICAgdm9pZCBmaW5hbGl6ZShKU0M6OkpTQ2VsbComLCB2b2lk
KiBjb250ZXh0KSBvdmVycmlkZTsKIH07CiAKIGlubGluZSBKU0M6OldlYWtIYW5kbGVPd25lciog
d3JhcHBlck93bmVyKERPTVdyYXBwZXJXb3JsZCYsIHJlYWRvbmx5KikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX3Jvb3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYnJp
ZGdlL3J1bnRpbWVfcm9vdC5jcHAKaW5kZXggZjg2NWM4YS4uN2NkZTM5OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfcm9vdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYnJpZGdlL3J1bnRpbWVfcm9vdC5jcHAKQEAgLTE5Niw5ICsxOTYsOSBAQCB2b2lkIFJvb3RP
YmplY3Q6OnJlbW92ZVJ1bnRpbWVPYmplY3QoUnVudGltZU9iamVjdCogb2JqZWN0KQogICAgIHdl
YWtSZW1vdmUobV9ydW50aW1lT2JqZWN0cywgb2JqZWN0LCBvYmplY3QpOwogfQogCi12b2lkIFJv
b3RPYmplY3Q6OmZpbmFsaXplKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lk
KikKK3ZvaWQgUm9vdE9iamVjdDo6ZmluYWxpemUoSlNDOjpKU0NlbGwqJiBjZWxsLCB2b2lkKikK
IHsKLSAgICBSdW50aW1lT2JqZWN0KiBvYmplY3QgPSBzdGF0aWNfY2FzdDxSdW50aW1lT2JqZWN0
Kj4oaGFuZGxlLnNsb3QoKS0+YXNDZWxsKCkpOworICAgIFJ1bnRpbWVPYmplY3QqIG9iamVjdCA9
IGpzQ2FzdDxSdW50aW1lT2JqZWN0Kj4oY2VsbCk7CiAKICAgICBSZWY8Um9vdE9iamVjdD4gcHJv
dGVjdCgqdGhpcyk7CiAgICAgb2JqZWN0LT5pbnZhbGlkYXRlKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9yb290LmggYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uv
cnVudGltZV9yb290LmgKaW5kZXggODQxYTY0ZS4uZWZiYmUwZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfcm9vdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRn
ZS9ydW50aW1lX3Jvb3QuaApAQCAtODMsNyArODMsNyBAQCBwcml2YXRlOgogICAgIFJvb3RPYmpl
Y3QoY29uc3Qgdm9pZCogbmF0aXZlSGFuZGxlLCBKU0dsb2JhbE9iamVjdCopOwogCiAgICAgLy8g
V2Vha0hhbmRsZU93bmVyCi0gICAgdmlydHVhbCB2b2lkIGZpbmFsaXplKEpTQzo6SGFuZGxlPEpT
Qzo6VW5rbm93bj4sIHZvaWQqIGNvbnRleHQpIG92ZXJyaWRlOworICAgIHZvaWQgZmluYWxpemUo
SlNDOjpKU0NlbGwqJiwgdm9pZCogY29udGV4dCkgb3ZlcnJpZGU7CiAKICAgICBib29sIG1faXNW
YWxpZDsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCAwZWMxODRiLi43MDMyODJjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTQgQEAKKzIwMTUtMDktMDggIEFuZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBwbGUu
Y29tPgorCisgICAgICAgIFtKU0NdIFdlYWsgc2hvdWxkIG9ubHkgYWNjZXB0IGNlbGwgcG9pbnRl
ZXMuCisgICAgICAgIDxodHRwczovL3dlYmtpdC5vcmcvYi8xNDg5NTU+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMv
TmV0c2NhcGUvTlBSdW50aW1lT2JqZWN0TWFwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TlBSdW50
aW1lT2JqZWN0TWFwOjpmaW5hbGl6ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05l
dHNjYXBlL05QUnVudGltZU9iamVjdE1hcC5oOgorCiAyMDE1LTA5LTA1ICBNaWNoYWVsIENhdGFu
emFybyAgPG1jYXRhbnphcm9AaWdhbGlhLmNvbT4KIAogICAgICAgICBMZWFrIGluIFdlYkNvbnRl
eHRJbmplY3RlZEJ1bmRsZUNsaWVudDo6Z2V0SW5qZWN0ZWRCdW5kbGVJbml0aWFsaXphdGlvblVz
ZXJEYXRhCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0
c2NhcGUvTlBSdW50aW1lT2JqZWN0TWFwLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
UGx1Z2lucy9OZXRzY2FwZS9OUFJ1bnRpbWVPYmplY3RNYXAuY3BwCmluZGV4IDQ5YzFkM2IuLjg5
ZWMzNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRz
Y2FwZS9OUFJ1bnRpbWVPYmplY3RNYXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvUGx1Z2lucy9OZXRzY2FwZS9OUFJ1bnRpbWVPYmplY3RNYXAuY3BwCkBAIC0zMDUsMTEgKzMw
NSwxMSBAQCB2b2lkIE5QUnVudGltZU9iamVjdE1hcDo6YWRkVG9JbnZhbGlkYXRpb25RdWV1ZShO
UE9iamVjdCogbnBPYmplY3QpCiAgICAgbV9ucE9iamVjdHNUb0ZpbmFsaXplLmFwcGVuZChucE9i
amVjdCk7CiB9CiAKLXZvaWQgTlBSdW50aW1lT2JqZWN0TWFwOjpmaW5hbGl6ZShKU0M6OkhhbmRs
ZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCogY29udGV4dCkKK3ZvaWQgTlBSdW50aW1lT2Jq
ZWN0TWFwOjpmaW5hbGl6ZShKU0M6OkpTQ2VsbComIGNlbGwsIHZvaWQqIGNvbnRleHQpCiB7Ci0g
ICAgSlNOUE9iamVjdCogb2JqZWN0ID0ganNDYXN0PEpTTlBPYmplY3QqPihoYW5kbGUuZ2V0KCku
YXNDZWxsKCkpOwotICAgIHdlYWtSZW1vdmUobV9qc05QT2JqZWN0cywgc3RhdGljX2Nhc3Q8TlBP
YmplY3QqPihjb250ZXh0KSwgb2JqZWN0KTsKLSAgICBhZGRUb0ludmFsaWRhdGlvblF1ZXVlKG9i
amVjdC0+bGVha05QT2JqZWN0KCkpOworICAgIEpTTlBPYmplY3QmIG9iamVjdCA9IGpzQ2FzdDxK
U05QT2JqZWN0Jj4oKmNlbGwpOworICAgIHdlYWtSZW1vdmUobV9qc05QT2JqZWN0cywgc3RhdGlj
X2Nhc3Q8TlBPYmplY3QqPihjb250ZXh0KSwgJm9iamVjdCk7CisgICAgYWRkVG9JbnZhbGlkYXRp
b25RdWV1ZShvYmplY3QubGVha05QT2JqZWN0KCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2Fw
ZS9OUFJ1bnRpbWVPYmplY3RNYXAuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lu
cy9OZXRzY2FwZS9OUFJ1bnRpbWVPYmplY3RNYXAuaAppbmRleCBmYWRlNDFkLi40OGFhNGYxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTlBS
dW50aW1lT2JqZWN0TWFwLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5z
L05ldHNjYXBlL05QUnVudGltZU9iamVjdE1hcC5oCkBAIC01Miw3ICs1Miw3IEBAIGNsYXNzIE5Q
SlNPYmplY3Q7CiBjbGFzcyBQbHVnaW5WaWV3OwogCiAvLyBBIHBlciBwbHVnLWluIG1hcCBvZiBO
UE9iamVjdHMgdGhhdCB3cmFwIEphdmFTY3JpcHQgb2JqZWN0cy4KLWNsYXNzIE5QUnVudGltZU9i
amVjdE1hcCA6IHByaXZhdGUgSlNDOjpXZWFrSGFuZGxlT3duZXIgeworY2xhc3MgTlBSdW50aW1l
T2JqZWN0TWFwIGZpbmFsIDogcHJpdmF0ZSBKU0M6OldlYWtIYW5kbGVPd25lciB7CiBwdWJsaWM6
CiAgICAgZXhwbGljaXQgTlBSdW50aW1lT2JqZWN0TWFwKFBsdWdpblZpZXcqKTsKIApAQCAtOTAs
NyArOTAsOCBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgLy8gV2Vha0hhbmRsZU93bmVyCi0g
ICAgdmlydHVhbCB2b2lkIGZpbmFsaXplKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4sIHZvaWQq
IGNvbnRleHQpOworICAgIHZvaWQgZmluYWxpemUoSlNDOjpKU0NlbGwqJiwgdm9pZCogY29udGV4
dCkgb3ZlcnJpZGU7CisKICAgICB2b2lkIGFkZFRvSW52YWxpZGF0aW9uUXVldWUoTlBPYmplY3Qq
KTsKICAgICB2b2lkIGludmFsaWRhdGVRdWV1ZWRPYmplY3RzKCk7CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>