<?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>178256</bug_id>
          
          <creation_ts>2017-10-13 03:09:06 -0700</creation_ts>
          <short_desc>[JSC] Perform module specifier validation at parsing time</short_desc>
          <delta_ts>2017-10-15 18:56:18 -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>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>buildbot</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1359963</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-10-13 03:09:06 -0700</bug_when>
    <thetext>https://html.spec.whatwg.org/#creating-a-module-script</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1359964</commentid>
    <comment_count>1</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-10-13 03:10:01 -0700</bug_when>
    <thetext>We would like to change our resolve operation non-async.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1359972</commentid>
    <comment_count>2</comment_count>
      <attachid>323656</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-10-13 04:37:18 -0700</bug_when>
    <thetext>Created attachment 323656
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1359975</commentid>
    <comment_count>3</comment_count>
      <attachid>323658</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-10-13 04:51:23 -0700</bug_when>
    <thetext>Created attachment 323658
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1359979</commentid>
    <comment_count>4</comment_count>
      <attachid>323660</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-10-13 05:09:31 -0700</bug_when>
    <thetext>Created attachment 323660
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1360613</commentid>
    <comment_count>5</comment_count>
      <attachid>323660</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-10-15 18:28:14 -0700</bug_when>
    <thetext>Comment on attachment 323660
Patch

Thank you!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1360617</commentid>
    <comment_count>6</comment_count>
      <attachid>323660</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-10-15 18:55:20 -0700</bug_when>
    <thetext>Comment on attachment 323660
Patch

Clearing flags on attachment: 323660

Committed r223331: &lt;https://trac.webkit.org/changeset/223331&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1360618</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-10-15 18:55:21 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1360619</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-10-15 18:56:18 -0700</bug_when>
    <thetext>&lt;rdar://problem/35000134&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>323656</attachid>
            <date>2017-10-13 04:37:18 -0700</date>
            <delta_ts>2017-10-13 04:51:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-178256-20171013203717.patch</filename>
            <type>text/plain</type>
            <size>34262</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIzMjc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
N2JlZTlhODUyMWQ0ODgwZWYxNzVmYWEzNjZhY2U4NWY3YTdkMWIwLi4yY2U1MDY2M2RlZGQ3MzU2
NDJmZjRjZDI1NTVlMGZjZTlmNDY3YzIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0NiBAQAorMjAxNy0xMC0xMyAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbSlNDXSBQZXJmb3JtIG1vZHVsZSBzcGVjaWZpZXIgdmFsaWRhdGlv
biBhdCBwYXJzaW5nIHRpbWUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE3ODI1NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFRoaXMgcGF0Y2ggbWFrZSBtb2R1bGUgbG9hZGVyJ3MgYHJlc29sdmVgIG9wZXJh
dGlvbiBzeW5jaHJvbm91cy4gQW5kIHdlIHZhbGlkYXRlCisgICAgICAgIG1vZHVsZSdzIHJlcXVl
c3RlZCBtb2R1bGUgbmFtZXMgd2hlbiBpbnN0YW50aWF0aW5nIHRoZSBtb2R1bGUgaW5zdGVhZCBv
ZiBzYXRpc2Z5aW5nCisgICAgICAgIG1vZHVsZSdzIGRlcGVuZGVuY2llcy4gVGhpcyBjaGFuZ2Ug
aXMgbm90IG9ic2VydmFibGUgdG8gdXNlcnMuIEJ1dCB0aGlzIGlzIHByZWNpc2UKKyAgICAgICAg
dG8gdGhlIHNwZWMgYW5kIHRoaXMgb3B0aW1pemVzICYgc2ltcGxpZmllcyB0aGUgY3VycmVudCBt
b2R1bGUgbG9hZGVyIGEgYml0IGJ5CisgICAgICAgIHJlZHVjaW5nIG9iamVjdCBhbGxvY2F0aW9u
cy4KKworICAgICAgICBQcmV2aW91c2x5LCB3ZSBoYXZlIGFuIG9iamVjdCBjYWxsZWQgcGFpciBp
biB0aGUgbW9kdWxlIGxvYWRlci4gVGhpcyBpcyBwYWlyIG9mCisgICAgICAgIG1vZHVsZSdzIG5h
bWUgYW5kIG1vZHVsZSdzIHJlY29yZC4gQW5kIHdlIHVzZSBpdCB0byBsaW5rIG9uZSBtb2R1bGUg
dG8gZGVwZW5kZW50CisgICAgICAgIG1vZHVsZXMuIE5vdywgaXQgaXMgcmVwbGFjZWQgd2l0aCBt
b2R1bGUncyByZWdpc3RyeSBlbnRyeS4KKworICAgICAgICBXZSBhbHNvIGNoYW5nZSBvdXIgbG9h
ZGVyIGZ1bmN0aW9ucyB0byB0YWtlIGEgcmVnaXN0cnkgZW50cnkgaW5zdGVhZCBvZiBhIG1vZHVs
ZSBrZXkuCisgICAgICAgIFByZXZpb3VzIGRlc2lnbiBpcyBkdWUgdG8gdGhlIGNvbnNpZGVyYXRp
b24gdGhhdCB0aGVzZSBBUElzIG1heSBiZSBleHBvc2VkIHRvIHVzZXJzCisgICAgICAgIGluIHdo
YXR3Zy9sb2FkZXIgc3BlYy4gSG93ZXZlciwgdGhpcyB3b24ndCBoYXBwZW4uIFRoaXMgY2hhbmdl
IHJlbW92ZXMgdW5uZWNlc3NhcnkKKyAgICAgICAgcmVwZWF0ZWRseSBoYXNoIG1hcCBsb29rdXBz
LgorCisgICAgICAgICogYnVpbHRpbnMvTW9kdWxlTG9hZGVyUHJvdG90eXBlLmpzOgorICAgICAg
ICAoZ2xvYmFsUHJpdmF0ZS5uZXdSZWdpc3RyeUVudHJ5KToKKyAgICAgICAgKHJlcXVlc3RGZXRj
aCk6CisgICAgICAgIChyZXF1ZXN0SW5zdGFudGlhdGUpOgorICAgICAgICAocmVxdWVzdFNhdGlz
ZnkpOgorICAgICAgICAobGluayk6CisgICAgICAgIChtb2R1bGVFdmFsdWF0aW9uKToKKyAgICAg
ICAgKGxvYWRNb2R1bGUpOgorICAgICAgICAqIGpzYy5jcHA6CisgICAgICAgIChHbG9iYWxPYmpl
Y3Q6Om1vZHVsZUxvYWRlclJlc29sdmUpOgorICAgICAgICAqIHJ1bnRpbWUvQWJzdHJhY3RNb2R1
bGVSZWNvcmQuY3BwOgorICAgICAgICAoSlNDOjpBYnN0cmFjdE1vZHVsZVJlY29yZDo6ZmluaXNo
Q3JlYXRpb24pOgorICAgICAgICAoSlNDOjpBYnN0cmFjdE1vZHVsZVJlY29yZDo6aG9zdFJlc29s
dmVJbXBvcnRlZE1vZHVsZSk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNNb2R1bGVMb2FkZXIuY3BwOgorICAgICAgICAoSlNDOjpKU01v
ZHVsZUxvYWRlcjo6cmVzb2x2ZVN5bmMpOgorICAgICAgICAoSlNDOjpKU01vZHVsZUxvYWRlcjo6
cmVzb2x2ZSk6CisgICAgICAgICogcnVudGltZS9KU01vZHVsZUxvYWRlci5oOgorICAgICAgICAq
IHJ1bnRpbWUvTW9kdWxlTG9hZGVyUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6bW9kdWxl
TG9hZGVyUHJvdG90eXBlUmVzb2x2ZVN5bmMpOgorCiAyMDE3LTEwLTEyICBZdXN1a2UgU3V6dWtp
ICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgogCiAgICAgICAgIFdlYkFzc2VtYmx5OiBXYXNtIGZ1
bmN0aW9ucyBzaG91bGQgaGF2ZSBlaXRoZXIgSlNGdW5jdGlvblR5cGUgb3IgVHlwZU9mU2hvdWxk
Q2FsbEdldENhbGxEYXRhCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjA0YjY1YzQyMWI5ZTBkYWFlODRiMjI4M2I3
OWM2ZTUxNDRmNmEwMi4uMzRiYzAzZTUzYWUzYjM3NWQ1Y2NmNmZjMTEzMDA0YWJhZDg3Mjk0MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDE3LTEwLTEzICBZdXN1a2UgU3V6dWtpICA8
dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIFtKU0NdIFBlcmZvcm0gbW9kdWxlIHNw
ZWNpZmllciB2YWxpZGF0aW9uIGF0IHBhcnNpbmcgdGltZQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc4MjU2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gYmVoYXZpb3IgY2hhbmdlIGluIHRoZSBjdXJy
ZW50IGltcGxlbWVudGF0aW9uLgorCisgICAgICAgICogYmluZGluZ3MvanMvSlNET01XaW5kb3dC
YXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93QmFzZTo6bW9kdWxlTG9hZGVy
UmVzb2x2ZSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmg6CisgICAg
ICAgICogYmluZGluZ3MvanMvU2NyaXB0TW9kdWxlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNjcmlwdE1vZHVsZUxvYWRlcjo6cmVzb2x2ZSk6CisgICAgICAgICogYmluZGluZ3MvanMv
U2NyaXB0TW9kdWxlTG9hZGVyLmg6CisKIDIwMTctMTAtMTMgIFJvbWFpbiBCZWxsZXNzb3J0ICA8
cm9tYWluLmJlbGxlc3NvcnRAY3JmLmNhbm9uLmZyPgogCiAgICAgICAgIFtSZWFkYWJsZSBTdHJl
YW1zIEFQSV0gQWxpZ24gcXVldWUgd2l0aCBzcGVjIGZvciBSZWFkYWJsZVN0cmVhbURlZmF1bHRD
b250cm9sbGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvTW9k
dWxlTG9hZGVyUHJvdG90eXBlLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL01v
ZHVsZUxvYWRlclByb3RvdHlwZS5qcwppbmRleCBlZDBhZTYwMzRhNWYwOTg4NzY4Y2YyOTA1MjYy
Y2ViNzFjNjkxZWNiLi5lNmFjNTViMDkzOTlmYWI4ZDY0ZmY3M2NiYmQwYjllMjA0ZWYxZmVhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvTW9kdWxlTG9hZGVyUHJv
dG90eXBlLmpzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9Nb2R1bGVMb2Fk
ZXJQcm90b3R5cGUuanMKQEAgLTk5LDYgKzk5LDcgQEAgZnVuY3Rpb24gbmV3UmVnaXN0cnlFbnRy
eShrZXkpCiAgICAgICAgIG1vZHVsZTogQHVuZGVmaW5lZCwgLy8gSlNNb2R1bGVSZWNvcmQKICAg
ICAgICAgbGlua0Vycm9yOiBAdW5kZWZpbmVkLAogICAgICAgICBsaW5rU3VjY2VlZGVkOiB0cnVl
LAorICAgICAgICBldmFsdWF0ZWQ6IGZhbHNlLAogICAgIH07CiB9CiAKQEAgLTE0MCwxMyArMTQx
LDEyIEBAIGZ1bmN0aW9uIGZ1bGZpbGxGZXRjaChlbnRyeSwgc291cmNlKQogCiAvLyBMb2FkZXIu
CiAKLWZ1bmN0aW9uIHJlcXVlc3RGZXRjaChrZXksIHBhcmFtZXRlcnMsIGZldGNoZXIpCitmdW5j
dGlvbiByZXF1ZXN0RmV0Y2goZW50cnksIHBhcmFtZXRlcnMsIGZldGNoZXIpCiB7CiAgICAgLy8g
aHR0cHM6Ly93aGF0d2cuZ2l0aHViLmlvL2xvYWRlci8jcmVxdWVzdC1mZXRjaAogCiAgICAgInVz
ZSBzdHJpY3QiOwogCi0gICAgdmFyIGVudHJ5ID0gdGhpcy5lbnN1cmVSZWdpc3RlcmVkKGtleSk7
CiAgICAgaWYgKGVudHJ5LmZldGNoKQogICAgICAgICByZXR1cm4gZW50cnkuZmV0Y2g7CiAKQEAg
LTE1Niw3ICsxNTYsNyBAQCBmdW5jdGlvbiByZXF1ZXN0RmV0Y2goa2V5LCBwYXJhbWV0ZXJzLCBm
ZXRjaGVyKQogICAgIC8vICAgICBUYWtlIHRoZSBrZXkgYW5kIGZldGNoIHRoZSByZXNvdXJjZSBh
Y3R1YWxseS4KICAgICAvLyAgICAgRm9yIGV4YW1wbGUsIEphdmFTY3JpcHRDb3JlIHNoZWxsIGNh
biBwcm92aWRlIHRoZSBob29rIGZldGNoaW5nIHRoZSByZXNvdXJjZQogICAgIC8vICAgICBmcm9t
IHRoZSBsb2NhbCBmaWxlIHN5c3RlbS4KLSAgICB2YXIgZmV0Y2hQcm9taXNlID0gdGhpcy5mZXRj
aChrZXksIHBhcmFtZXRlcnMsIGZldGNoZXIpLnRoZW4oKHNvdXJjZSkgPT4geworICAgIHZhciBm
ZXRjaFByb21pc2UgPSB0aGlzLmZldGNoKGVudHJ5LmtleSwgcGFyYW1ldGVycywgZmV0Y2hlciku
dGhlbigoc291cmNlKSA9PiB7CiAgICAgICAgIEBzZXRTdGF0ZVRvTWF4KGVudHJ5LCBATW9kdWxl
SW5zdGFudGlhdGUpOwogICAgICAgICByZXR1cm4gc291cmNlOwogICAgIH0pOwpAQCAtMTY0LDE4
ICsxNjQsMTggQEAgZnVuY3Rpb24gcmVxdWVzdEZldGNoKGtleSwgcGFyYW1ldGVycywgZmV0Y2hl
cikKICAgICByZXR1cm4gZmV0Y2hQcm9taXNlOwogfQogCi1mdW5jdGlvbiByZXF1ZXN0SW5zdGFu
dGlhdGUoa2V5LCBwYXJhbWV0ZXJzLCBmZXRjaGVyKQorZnVuY3Rpb24gcmVxdWVzdEluc3RhbnRp
YXRlKGVudHJ5LCBwYXJhbWV0ZXJzLCBmZXRjaGVyKQogewogICAgIC8vIGh0dHBzOi8vd2hhdHdn
LmdpdGh1Yi5pby9sb2FkZXIvI3JlcXVlc3QtaW5zdGFudGlhdGUKIAogICAgICJ1c2Ugc3RyaWN0
IjsKIAotICAgIHZhciBlbnRyeSA9IHRoaXMuZW5zdXJlUmVnaXN0ZXJlZChrZXkpOwogICAgIGlm
IChlbnRyeS5pbnN0YW50aWF0ZSkKICAgICAgICAgcmV0dXJuIGVudHJ5Lmluc3RhbnRpYXRlOwog
Ci0gICAgdmFyIGluc3RhbnRpYXRlUHJvbWlzZSA9IHRoaXMucmVxdWVzdEZldGNoKGtleSwgcGFy
YW1ldGVycywgZmV0Y2hlcikudGhlbigoc291cmNlKSA9PiB7Ci0gICAgICAgIHZhciBtb2R1bGVS
ZWNvcmQgPSB0aGlzLnBhcnNlTW9kdWxlKGVudHJ5LmtleSwgc291cmNlKTsKKyAgICB2YXIgaW5z
dGFudGlhdGVQcm9taXNlID0gdGhpcy5yZXF1ZXN0RmV0Y2goZW50cnksIHBhcmFtZXRlcnMsIGZl
dGNoZXIpLnRoZW4oKHNvdXJjZSkgPT4geworICAgICAgICB2YXIga2V5ID0gZW50cnkua2V5Owor
ICAgICAgICB2YXIgbW9kdWxlUmVjb3JkID0gdGhpcy5wYXJzZU1vZHVsZShrZXksIHNvdXJjZSk7
CiAKICAgICAgICAgLy8gRklYTUU6IERlc2NyaWJlZCBpbiB0aGUgZHJhZnQsCiAgICAgICAgIC8v
ICAgNC4gRnVsZmlsbCBlbnRyeS5bW0luc3RhbnRpYXRlXV0gd2l0aCBpbnN0YW5jZS4KQEAgLTE4
NCwxOCArMTg0LDE1IEBAIGZ1bmN0aW9uIHJlcXVlc3RJbnN0YW50aWF0ZShrZXksIHBhcmFtZXRl
cnMsIGZldGNoZXIpCiAgICAgICAgIC8vIGZ1bGZpbGxlZCB3aXRob3V0IHRoaXMgImZvcmNlIGZ1
bGZpbGwiIG9wZXJhdGlvbi4KICAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3doYXR3Zy9s
b2FkZXIvcHVsbC82NwogCi0gICAgICAgIHZhciBkZXBlbmRlbmNpZXMgPSBbXTsKICAgICAgICAg
dmFyIGRlcGVuZGVuY2llc01hcCA9IG1vZHVsZVJlY29yZC5kZXBlbmRlbmNpZXNNYXA7Ci0gICAg
ICAgIG1vZHVsZVJlY29yZC5yZWdpc3RyeUVudHJ5ID0gZW50cnk7CiAgICAgICAgIHZhciByZXF1
ZXN0ZWRNb2R1bGVzID0gdGhpcy5yZXF1ZXN0ZWRNb2R1bGVzKG1vZHVsZVJlY29yZCk7CisgICAg
ICAgIHZhciBkZXBlbmRlbmNpZXMgPSBAbmV3QXJyYXlXaXRoU2l6ZShyZXF1ZXN0ZWRNb2R1bGVz
Lmxlbmd0aCk7CiAgICAgICAgIGZvciAodmFyIGkgPSAwLCBsZW5ndGggPSByZXF1ZXN0ZWRNb2R1
bGVzLmxlbmd0aDsgaSA8IGxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICB2YXIgZGVwS2V5ID0g
cmVxdWVzdGVkTW9kdWxlc1tpXTsKLSAgICAgICAgICAgIHZhciBwYWlyID0gewotICAgICAgICAg
ICAgICAgIGtleTogZGVwS2V5LAotICAgICAgICAgICAgICAgIHZhbHVlOiBAdW5kZWZpbmVkCi0g
ICAgICAgICAgICB9OwotICAgICAgICAgICAgQHB1dEJ5VmFsRGlyZWN0KGRlcGVuZGVuY2llcywg
ZGVwZW5kZW5jaWVzLmxlbmd0aCwgcGFpcik7Ci0gICAgICAgICAgICBkZXBlbmRlbmNpZXNNYXAu
QHNldChkZXBLZXksIHBhaXIpOworICAgICAgICAgICAgdmFyIGRlcE5hbWUgPSByZXF1ZXN0ZWRN
b2R1bGVzW2ldOworICAgICAgICAgICAgdmFyIGRlcEtleSA9IHRoaXMucmVzb2x2ZVN5bmMoZGVw
TmFtZSwga2V5LCBmZXRjaGVyKTsKKyAgICAgICAgICAgIHZhciBkZXBFbnRyeSA9IHRoaXMuZW5z
dXJlUmVnaXN0ZXJlZChkZXBLZXkpOworICAgICAgICAgICAgQHB1dEJ5VmFsRGlyZWN0KGRlcGVu
ZGVuY2llcywgaSwgZGVwRW50cnkpOworICAgICAgICAgICAgZGVwZW5kZW5jaWVzTWFwLkBzZXQo
ZGVwTmFtZSwgZGVwRW50cnkpOwogICAgICAgICB9CiAgICAgICAgIGVudHJ5LmRlcGVuZGVuY2ll
cyA9IGRlcGVuZGVuY2llczsKICAgICAgICAgZW50cnkuZGVwZW5kZW5jaWVzTWFwID0gZGVwZW5k
ZW5jaWVzTWFwOwpAQCAtMjA3LDUyICsyMDQsMzcgQEAgZnVuY3Rpb24gcmVxdWVzdEluc3RhbnRp
YXRlKGtleSwgcGFyYW1ldGVycywgZmV0Y2hlcikKICAgICByZXR1cm4gaW5zdGFudGlhdGVQcm9t
aXNlOwogfQogCi1mdW5jdGlvbiByZXF1ZXN0U2F0aXNmeShrZXksIHBhcmFtZXRlcnMsIGZldGNo
ZXIpCitmdW5jdGlvbiByZXF1ZXN0U2F0aXNmeShlbnRyeSwgcGFyYW1ldGVycywgZmV0Y2hlcikK
IHsKICAgICAvLyBodHRwczovL3doYXR3Zy5naXRodWIuaW8vbG9hZGVyLyNzYXRpc2Z5LWluc3Rh
bmNlCiAKICAgICAidXNlIHN0cmljdCI7CiAKLSAgICB2YXIgZW50cnkgPSB0aGlzLmVuc3VyZVJl
Z2lzdGVyZWQoa2V5KTsKICAgICBpZiAoZW50cnkuc2F0aXNmeSkKICAgICAgICAgcmV0dXJuIGVu
dHJ5LnNhdGlzZnk7CiAKLSAgICB2YXIgc2F0aXNmeVByb21pc2UgPSB0aGlzLnJlcXVlc3RJbnN0
YW50aWF0ZShrZXksIHBhcmFtZXRlcnMsIGZldGNoZXIpLnRoZW4oKGVudHJ5KSA9PiB7Ci0gICAg
ICAgIHZhciBkZXBMb2FkcyA9IFtdOworICAgIHZhciBzYXRpc2Z5UHJvbWlzZSA9IHRoaXMucmVx
dWVzdEluc3RhbnRpYXRlKGVudHJ5LCBwYXJhbWV0ZXJzLCBmZXRjaGVyKS50aGVuKChlbnRyeSkg
PT4geworICAgICAgICB2YXIgZGVwTG9hZHMgPSBAbmV3QXJyYXlXaXRoU2l6ZShlbnRyeS5kZXBl
bmRlbmNpZXMubGVuZ3RoKTsKICAgICAgICAgZm9yICh2YXIgaSA9IDAsIGxlbmd0aCA9IGVudHJ5
LmRlcGVuZGVuY2llcy5sZW5ndGg7IGkgPCBsZW5ndGg7ICsraSkgewotICAgICAgICAgICAgbGV0
IHBhaXIgPSBlbnRyeS5kZXBlbmRlbmNpZXNbaV07Ci0KLSAgICAgICAgICAgIC8vIEhvb2sgcG9p
bnQuCi0gICAgICAgICAgICAvLyAxLiBMb2FkZXIucmVzb2x2ZS4KLSAgICAgICAgICAgIC8vICAg
ICBodHRwczovL3doYXR3Zy5naXRodWIuaW8vbG9hZGVyLyNicm93c2VyLXJlc29sdmUKLSAgICAg
ICAgICAgIC8vICAgICBUYWtlIHRoZSBuYW1lIGFuZCByZXNvbHZlIGl0IHRvIHRoZSB1bmlxdWUg
aWRlbnRpZmllciBmb3IgdGhlIHJlc291cmNlIGxvY2F0aW9uLgotICAgICAgICAgICAgLy8gICAg
IEZvciBleGFtcGxlLCB0YWtlIHRoZSAianF1ZXJ5IiBhbmQgcmV0dXJuIHRoZSBVUkwgZm9yIHRo
ZSByZXNvdXJjZS4KLSAgICAgICAgICAgIHZhciBwcm9taXNlID0gdGhpcy5yZXNvbHZlKHBhaXIu
a2V5LCBrZXksIGZldGNoZXIpLnRoZW4oKGRlcEtleSkgPT4gewotICAgICAgICAgICAgICAgIHZh
ciBkZXBFbnRyeSA9IHRoaXMuZW5zdXJlUmVnaXN0ZXJlZChkZXBLZXkpOwotCi0gICAgICAgICAg
ICAgICAgLy8gUmVjdXJzaXZlIHJlc29sdmluZy4gVGhlIGRlcGVuZGVuY2llcyBvZiB0aGlzIGVu
dHJ5IGlzIGJlaW5nIHJlc29sdmVkIG9yIGFscmVhZHkgcmVzb2x2ZWQuCi0gICAgICAgICAgICAg
ICAgLy8gU3RvcCB0cmFjaW5nIHRoZSBjaXJjdWxhciBkZXBlbmRlbmNpZXMuCi0gICAgICAgICAg
ICAgICAgLy8gQnV0IHRvIHJldHJpZXZlIHRoZSBpbnN0YW50aWF0ZWQgbW9kdWxlIHJlY29yZCBj
b3JyZWN0bHksCi0gICAgICAgICAgICAgICAgLy8gd2UgbmVlZCB0byB3YWl0IGZvciB0aGUgaW5z
dGFudGlhdGlvbiBmb3IgdGhlIGRlcGVuZGVudCBtb2R1bGUuCi0gICAgICAgICAgICAgICAgLy8g
Rm9yIGV4YW1wbGUsIHJlYWNoaW5nIGhlcmUsIHRoZSBtb2R1bGUgaXMgc3RhcnRpbmcgcmVzb2x2
aW5nIHRoZSBkZXBlbmRlbmNpZXMuCi0gICAgICAgICAgICAgICAgLy8gQnV0IHRoZSBtb2R1bGUg
bWF5IG9yIG1heSBub3QgcmVhY2ggdGhlIGluc3RhbnRpYXRpb24gcGhhc2UgaW4gdGhlIGxvYWRl
cidzIHBpcGVsaW5lLgotICAgICAgICAgICAgICAgIC8vIElmIHdlIHdhaXQgZm9yIHRoZSBTYXRp
c2Z5IGZvciB0aGlzIG1vZHVsZSwgaXQgY29uc3RydWN0IHRoZSBjaXJjdWxhciBwcm9taXNlIGNo
YWluIGFuZAotICAgICAgICAgICAgICAgIC8vIHJlamVjdGVkIGJ5IHRoZSBQcm9taXNlcyBydW50
aW1lLiBTaW5jZSBvbmx5IHdlIG5lZWQgaXMgdGhlIGluc3RhbnRpYXRlZCBtb2R1bGUsIGluc3Rl
YWQgb2Ygd2FpdGluZwotICAgICAgICAgICAgICAgIC8vIHRoZSBTYXRpc2Z5IGZvciB0aGlzIG1v
ZHVsZSwgd2UganVzdCB3YWl0IEluc3RhbnRpYXRlIGZvciB0aGlzLgotICAgICAgICAgICAgICAg
IGlmIChkZXBFbnRyeS5zYXRpc2Z5KSB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBkZXBF
bnRyeS5pbnN0YW50aWF0ZS50aGVuKChlbnRyeSkgPT4gewotICAgICAgICAgICAgICAgICAgICAg
ICAgcGFpci52YWx1ZSA9IGVudHJ5Lm1vZHVsZTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBlbnRyeTsKLSAgICAgICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICAgICAgfQot
CisgICAgICAgICAgICB2YXIgZGVwRW50cnkgPSBlbnRyeS5kZXBlbmRlbmNpZXNbaV07CisgICAg
ICAgICAgICB2YXIgcHJvbWlzZSA9IEB1bmRlZmluZWQ7CisKKyAgICAgICAgICAgIC8vIFJlY3Vy
c2l2ZSByZXNvbHZpbmcuIFRoZSBkZXBlbmRlbmNpZXMgb2YgdGhpcyBlbnRyeSBpcyBiZWluZyBy
ZXNvbHZlZCBvciBhbHJlYWR5IHJlc29sdmVkLgorICAgICAgICAgICAgLy8gU3RvcCB0cmFjaW5n
IHRoZSBjaXJjdWxhciBkZXBlbmRlbmNpZXMuCisgICAgICAgICAgICAvLyBCdXQgdG8gcmV0cmll
dmUgdGhlIGluc3RhbnRpYXRlZCBtb2R1bGUgcmVjb3JkIGNvcnJlY3RseSwKKyAgICAgICAgICAg
IC8vIHdlIG5lZWQgdG8gd2FpdCBmb3IgdGhlIGluc3RhbnRpYXRpb24gZm9yIHRoZSBkZXBlbmRl
bnQgbW9kdWxlLgorICAgICAgICAgICAgLy8gRm9yIGV4YW1wbGUsIHJlYWNoaW5nIGhlcmUsIHRo
ZSBtb2R1bGUgaXMgc3RhcnRpbmcgcmVzb2x2aW5nIHRoZSBkZXBlbmRlbmNpZXMuCisgICAgICAg
ICAgICAvLyBCdXQgdGhlIG1vZHVsZSBtYXkgb3IgbWF5IG5vdCByZWFjaCB0aGUgaW5zdGFudGlh
dGlvbiBwaGFzZSBpbiB0aGUgbG9hZGVyJ3MgcGlwZWxpbmUuCisgICAgICAgICAgICAvLyBJZiB3
ZSB3YWl0IGZvciB0aGUgU2F0aXNmeSBmb3IgdGhpcyBtb2R1bGUsIGl0IGNvbnN0cnVjdCB0aGUg
Y2lyY3VsYXIgcHJvbWlzZSBjaGFpbiBhbmQKKyAgICAgICAgICAgIC8vIHJlamVjdGVkIGJ5IHRo
ZSBQcm9taXNlcyBydW50aW1lLiBTaW5jZSBvbmx5IHdlIG5lZWQgaXMgdGhlIGluc3RhbnRpYXRl
ZCBtb2R1bGUsIGluc3RlYWQgb2Ygd2FpdGluZworICAgICAgICAgICAgLy8gdGhlIFNhdGlzZnkg
Zm9yIHRoaXMgbW9kdWxlLCB3ZSBqdXN0IHdhaXQgSW5zdGFudGlhdGUgZm9yIHRoaXMuCisgICAg
ICAgICAgICBpZiAoZGVwRW50cnkuc2F0aXNmeSkKKyAgICAgICAgICAgICAgICBwcm9taXNlID0g
ZGVwRW50cnkuaW5zdGFudGlhdGU7CisgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAg
ICAvLyBDdXJyZW50bHksIG1vZHVsZSBsb2FkZXIgZG8gbm90IHBhc3MgYW55IGluZm9ybWF0aW9u
IGZvciBub24tdG9wLWxldmVsIG1vZHVsZSBmZXRjaGluZy4KLSAgICAgICAgICAgICAgICByZXR1
cm4gdGhpcy5yZXF1ZXN0U2F0aXNmeShkZXBLZXksIEB1bmRlZmluZWQsIGZldGNoZXIpLnRoZW4o
KGVudHJ5KSA9PiB7Ci0gICAgICAgICAgICAgICAgICAgIHBhaXIudmFsdWUgPSBlbnRyeS5tb2R1
bGU7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBlbnRyeTsKLSAgICAgICAgICAgICAgICB9
KTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgQHB1dEJ5VmFsRGlyZWN0KGRlcExvYWRz
LCBkZXBMb2Fkcy5sZW5ndGgsIHByb21pc2UpOworICAgICAgICAgICAgICAgIHByb21pc2UgPSB0
aGlzLnJlcXVlc3RTYXRpc2Z5KGRlcEVudHJ5LCBAdW5kZWZpbmVkLCBmZXRjaGVyKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIEBwdXRCeVZhbERpcmVjdChkZXBMb2FkcywgaSwgcHJvbWlz
ZSk7CiAgICAgICAgIH0KIAogICAgICAgICByZXR1cm4gQEludGVybmFsUHJvbWlzZS5pbnRlcm5h
bEFsbChkZXBMb2FkcykudGhlbigobW9kdWxlcykgPT4gewpAQCAtMjg0LDEwICsyNjYsOCBAQCBm
dW5jdGlvbiBsaW5rKGVudHJ5LCBmZXRjaGVyKQogICAgICAgICAvLyB3ZSBjYW4gY2FsbCBtb2R1
bGVEZWNsYXJhdGlvbkluc3RhbnRpYXRpb24gd2l0aCB0aGUgY29ycmVjdCBvcmRlcgogICAgICAg
ICAvLyB3aXRob3V0IGNvbnN0cnVjdGluZyB0aGUgZGVwZW5kZW5jeSBncmFwaCBieSBjYWxsaW5n
IGRlcGVuZGVuY3lHcmFwaC4KICAgICAgICAgdmFyIGRlcGVuZGVuY2llcyA9IGVudHJ5LmRlcGVu
ZGVuY2llczsKLSAgICAgICAgZm9yICh2YXIgaSA9IDAsIGxlbmd0aCA9IGRlcGVuZGVuY2llcy5s
ZW5ndGg7IGkgPCBsZW5ndGg7ICsraSkgewotICAgICAgICAgICAgdmFyIHBhaXIgPSBkZXBlbmRl
bmNpZXNbaV07Ci0gICAgICAgICAgICB0aGlzLmxpbmsocGFpci52YWx1ZS5yZWdpc3RyeUVudHJ5
LCBmZXRjaGVyKTsKLSAgICAgICAgfQorICAgICAgICBmb3IgKHZhciBpID0gMCwgbGVuZ3RoID0g
ZGVwZW5kZW5jaWVzLmxlbmd0aDsgaSA8IGxlbmd0aDsgKytpKQorICAgICAgICAgICAgdGhpcy5s
aW5rKGRlcGVuZGVuY2llc1tpXSwgZmV0Y2hlcik7CiAKICAgICAgICAgdGhpcy5tb2R1bGVEZWNs
YXJhdGlvbkluc3RhbnRpYXRpb24oZW50cnkubW9kdWxlLCBlbnRyeS5rZXksIGZldGNoZXIpOwog
ICAgIH0gY2F0Y2ggKGVycm9yKSB7CkBAIC0yOTksMjYgKzI3OSwyMiBAQCBmdW5jdGlvbiBsaW5r
KGVudHJ5LCBmZXRjaGVyKQogCiAvLyBNb2R1bGUgc2VtYW50aWNzLgogCi1mdW5jdGlvbiBtb2R1
bGVFdmFsdWF0aW9uKG1vZHVsZVJlY29yZCwgZmV0Y2hlcikKK2Z1bmN0aW9uIG1vZHVsZUV2YWx1
YXRpb24oZW50cnksIGZldGNoZXIpCiB7CiAgICAgLy8gaHR0cDovL3d3dy5lY21hLWludGVybmF0
aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLW1vZHVsZWV2YWx1YXRpb24KIAogICAgICJ1c2Ug
c3RyaWN0IjsKIAotICAgIGlmIChtb2R1bGVSZWNvcmQuZXZhbHVhdGVkKQorICAgIGlmIChlbnRy
eS5ldmFsdWF0ZWQpCiAgICAgICAgIHJldHVybjsKLSAgICBtb2R1bGVSZWNvcmQuZXZhbHVhdGVk
ID0gdHJ1ZTsKLQotICAgIHZhciBlbnRyeSA9IG1vZHVsZVJlY29yZC5yZWdpc3RyeUVudHJ5Owor
ICAgIGVudHJ5LmV2YWx1YXRlZCA9IHRydWU7CiAKICAgICAvLyBUaGUgY29udGVudHMgb2YgdGhl
IFtbUmVxdWVzdGVkTW9kdWxlc11dIGlzIGNsb25lZCBpbnRvIGVudHJ5LmRlcGVuZGVuY2llcy4K
ICAgICB2YXIgZGVwZW5kZW5jaWVzID0gZW50cnkuZGVwZW5kZW5jaWVzOwotICAgIGZvciAodmFy
IGkgPSAwLCBsZW5ndGggPSBkZXBlbmRlbmNpZXMubGVuZ3RoOyBpIDwgbGVuZ3RoOyArK2kpIHsK
LSAgICAgICAgdmFyIHBhaXIgPSBkZXBlbmRlbmNpZXNbaV07Ci0gICAgICAgIHZhciByZXF1aXJl
ZE1vZHVsZVJlY29yZCA9IHBhaXIudmFsdWU7Ci0gICAgICAgIHRoaXMubW9kdWxlRXZhbHVhdGlv
bihyZXF1aXJlZE1vZHVsZVJlY29yZCwgZmV0Y2hlcik7Ci0gICAgfQotICAgIHRoaXMuZXZhbHVh
dGUoZW50cnkua2V5LCBtb2R1bGVSZWNvcmQsIGZldGNoZXIpOworICAgIGZvciAodmFyIGkgPSAw
LCBsZW5ndGggPSBkZXBlbmRlbmNpZXMubGVuZ3RoOyBpIDwgbGVuZ3RoOyArK2kpCisgICAgICAg
IHRoaXMubW9kdWxlRXZhbHVhdGlvbihkZXBlbmRlbmNpZXNbaV0sIGZldGNoZXIpOworCisgICAg
dGhpcy5ldmFsdWF0ZShlbnRyeS5rZXksIGVudHJ5Lm1vZHVsZSwgZmV0Y2hlcik7CiB9CiAKIC8v
IEFQSXMgdG8gY29udHJvbCB0aGUgbW9kdWxlIGxvYWRlci4KQEAgLTM0Myw3ICszMTksNyBAQCBm
dW5jdGlvbiBsb2FkTW9kdWxlKG1vZHVsZU5hbWUsIHBhcmFtZXRlcnMsIGZldGNoZXIpCiAgICAg
Ly8gVGFrZSB0aGUgbmFtZSBhbmQgcmVzb2x2ZSBpdCB0byB0aGUgdW5pcXVlIGlkZW50aWZpZXIg
Zm9yIHRoZSByZXNvdXJjZSBsb2NhdGlvbi4KICAgICAvLyBGb3IgZXhhbXBsZSwgdGFrZSB0aGUg
ImpxdWVyeSIgYW5kIHJldHVybiB0aGUgVVJMIGZvciB0aGUgcmVzb3VyY2UuCiAgICAgcmV0dXJu
IHRoaXMucmVzb2x2ZShtb2R1bGVOYW1lLCBAdW5kZWZpbmVkLCBmZXRjaGVyKS50aGVuKChrZXkp
ID0+IHsKLSAgICAgICAgcmV0dXJuIHRoaXMucmVxdWVzdFNhdGlzZnkoa2V5LCBwYXJhbWV0ZXJz
LCBmZXRjaGVyKTsKKyAgICAgICAgcmV0dXJuIHRoaXMucmVxdWVzdFNhdGlzZnkodGhpcy5lbnN1
cmVSZWdpc3RlcmVkKGtleSksIHBhcmFtZXRlcnMsIGZldGNoZXIpOwogICAgIH0pLnRoZW4oKGVu
dHJ5KSA9PiB7CiAgICAgICAgIHJldHVybiBlbnRyeS5rZXk7CiAgICAgfSk7CkBAIC0zNTgsNyAr
MzM0LDcgQEAgZnVuY3Rpb24gbGlua0FuZEV2YWx1YXRlTW9kdWxlKGtleSwgZmV0Y2hlcikKICAg
ICAgICAgQHRocm93VHlwZUVycm9yKCJSZXF1ZXN0ZWQgbW9kdWxlIGlzIG5vdCBpbnN0YW50aWF0
ZWQgeWV0LiIpOwogCiAgICAgdGhpcy5saW5rKGVudHJ5LCBmZXRjaGVyKTsKLSAgICByZXR1cm4g
dGhpcy5tb2R1bGVFdmFsdWF0aW9uKGVudHJ5Lm1vZHVsZSwgZmV0Y2hlcik7CisgICAgcmV0dXJu
IHRoaXMubW9kdWxlRXZhbHVhdGlvbihlbnRyeSwgZmV0Y2hlcik7CiB9CiAKIGZ1bmN0aW9uIGxv
YWRBbmRFdmFsdWF0ZU1vZHVsZShtb2R1bGVOYW1lLCBwYXJhbWV0ZXJzLCBmZXRjaGVyKQpAQCAt
Mzc0LDcgKzM1MCw3IEBAIGZ1bmN0aW9uIHJlcXVlc3RJbXBvcnRNb2R1bGUoa2V5LCBwYXJhbWV0
ZXJzLCBmZXRjaGVyKQogewogICAgICJ1c2Ugc3RyaWN0IjsKIAotICAgIHJldHVybiB0aGlzLnJl
cXVlc3RTYXRpc2Z5KGtleSwgcGFyYW1ldGVycywgZmV0Y2hlcikudGhlbigoZW50cnkpID0+IHsK
KyAgICByZXR1cm4gdGhpcy5yZXF1ZXN0U2F0aXNmeSh0aGlzLmVuc3VyZVJlZ2lzdGVyZWQoa2V5
KSwgcGFyYW1ldGVycywgZmV0Y2hlcikudGhlbigoZW50cnkpID0+IHsKICAgICAgICAgdGhpcy5s
aW5rQW5kRXZhbHVhdGVNb2R1bGUoZW50cnkua2V5LCBmZXRjaGVyKTsKICAgICAgICAgcmV0dXJu
IHRoaXMuZ2V0TW9kdWxlTmFtZXNwYWNlT2JqZWN0KGVudHJ5Lm1vZHVsZSk7CiAgICAgfSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qc2MuY3BwCmluZGV4IGI1NmU3NzZmZGZhZmE4Y2Q4YjAzMTIxNmZiNDQ2MDcwMjU1
OTU2ZTguLmQzZWUyOGRiY2QxYTlmYzQ2NjFkMzc3YjUyODllZTk4ODljYzQxMWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qc2MuY3BwCkBAIC0xNjU4LDcgKzE2NTgsNyBAQCBjbGFzcyBHbG9iYWxPYmplY3QgOiBw
dWJsaWMgSlNHbG9iYWxPYmplY3QgewogICAgIH0KIAogICAgIHN0YXRpYyBKU0ludGVybmFsUHJv
bWlzZSogbW9kdWxlTG9hZGVySW1wb3J0TW9kdWxlKEpTR2xvYmFsT2JqZWN0KiwgRXhlY1N0YXRl
KiwgSlNNb2R1bGVMb2FkZXIqLCBKU1N0cmluZyosIEpTVmFsdWUsIGNvbnN0IFNvdXJjZU9yaWdp
biYpOwotICAgIHN0YXRpYyBKU0ludGVybmFsUHJvbWlzZSogbW9kdWxlTG9hZGVyUmVzb2x2ZShK
U0dsb2JhbE9iamVjdCosIEV4ZWNTdGF0ZSosIEpTTW9kdWxlTG9hZGVyKiwgSlNWYWx1ZSwgSlNW
YWx1ZSwgSlNWYWx1ZSk7CisgICAgc3RhdGljIElkZW50aWZpZXIgbW9kdWxlTG9hZGVyUmVzb2x2
ZShKU0dsb2JhbE9iamVjdCosIEV4ZWNTdGF0ZSosIEpTTW9kdWxlTG9hZGVyKiwgSlNWYWx1ZSwg
SlNWYWx1ZSwgSlNWYWx1ZSk7CiAgICAgc3RhdGljIEpTSW50ZXJuYWxQcm9taXNlKiBtb2R1bGVM
b2FkZXJGZXRjaChKU0dsb2JhbE9iamVjdCosIEV4ZWNTdGF0ZSosIEpTTW9kdWxlTG9hZGVyKiwg
SlNWYWx1ZSwgSlNWYWx1ZSwgSlNWYWx1ZSk7CiAgICAgc3RhdGljIEpTT2JqZWN0KiBtb2R1bGVM
b2FkZXJDcmVhdGVJbXBvcnRNZXRhUHJvcGVydGllcyhKU0dsb2JhbE9iamVjdCosIEV4ZWNTdGF0
ZSosIEpTTW9kdWxlTG9hZGVyKiwgSlNWYWx1ZSwgSlNNb2R1bGVSZWNvcmQqLCBKU1ZhbHVlKTsK
IH07CkBAIC0xODQwLDU3ICsxODQwLDQ2IEBAIEpTSW50ZXJuYWxQcm9taXNlKiBHbG9iYWxPYmpl
Y3Q6Om1vZHVsZUxvYWRlckltcG9ydE1vZHVsZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsCiAgICAg
cmV0dXJuIHJlc3VsdDsKIH0KIAotSlNJbnRlcm5hbFByb21pc2UqIEdsb2JhbE9iamVjdDo6bW9k
dWxlTG9hZGVyUmVzb2x2ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFeGVjU3RhdGUq
IGV4ZWMsIEpTTW9kdWxlTG9hZGVyKiwgSlNWYWx1ZSBrZXlWYWx1ZSwgSlNWYWx1ZSByZWZlcnJl
clZhbHVlLCBKU1ZhbHVlKQorSWRlbnRpZmllciBHbG9iYWxPYmplY3Q6Om1vZHVsZUxvYWRlclJl
c29sdmUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBKU01v
ZHVsZUxvYWRlciosIEpTVmFsdWUga2V5VmFsdWUsIEpTVmFsdWUgcmVmZXJyZXJWYWx1ZSwgSlNW
YWx1ZSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7Ci0gICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfQ0FUQ0hfU0NPUEUodm0pOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKIAotICAgIEpTSW50ZXJuYWxQcm9taXNlRGVmZXJyZWQqIGRlZmVycmVk
ID0gSlNJbnRlcm5hbFByb21pc2VEZWZlcnJlZDo6Y3JlYXRlKGV4ZWMsIGdsb2JhbE9iamVjdCk7
CiAgICAgc2NvcGUucmVsZWFzZUFzc2VydE5vRXhjZXB0aW9uKCk7CiAgICAgY29uc3QgSWRlbnRp
ZmllciBrZXkgPSBrZXlWYWx1ZS50b1Byb3BlcnR5S2V5KGV4ZWMpOwotICAgIGlmIChVTkxJS0VM
WShzY29wZS5leGNlcHRpb24oKSkpIHsKLSAgICAgICAgSlNWYWx1ZSBleGNlcHRpb24gPSBzY29w
ZS5leGNlcHRpb24oKTsKLSAgICAgICAgc2NvcGUuY2xlYXJFeGNlcHRpb24oKTsKLSAgICAgICAg
cmV0dXJuIGRlZmVycmVkLT5yZWplY3QoZXhlYywgZXhjZXB0aW9uKTsKLSAgICB9CisgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIGlmIChrZXkuaXNTeW1ib2woKSkK
KyAgICAgICAgcmV0dXJuIGtleTsKIAotICAgIGlmIChrZXkuaXNTeW1ib2woKSkgewotICAgICAg
ICBhdXRvIHJlc3VsdCA9IGRlZmVycmVkLT5yZXNvbHZlKGV4ZWMsIGtleVZhbHVlKTsKLSAgICAg
ICAgc2NvcGUucmVsZWFzZUFzc2VydE5vRXhjZXB0aW9uKCk7Ci0gICAgICAgIHJldHVybiByZXN1
bHQ7Ci0gICAgfQogICAgIGlmIChyZWZlcnJlclZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKICAgICAg
ICAgYXV0byBkaXJlY3RvcnlOYW1lID0gY3VycmVudFdvcmtpbmdEaXJlY3RvcnkoKTsKLSAgICAg
ICAgaWYgKCFkaXJlY3RvcnlOYW1lKQotICAgICAgICAgICAgcmV0dXJuIGRlZmVycmVkLT5yZWpl
Y3QoZXhlYywgY3JlYXRlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJDb3VsZCBub3QgcmVzb2x2
ZSB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeS4iKSkpOwotICAgICAgICBhdXRvIHJlc3Vs
dCA9IGRlZmVycmVkLT5yZXNvbHZlKGV4ZWMsIGpzU3RyaW5nKGV4ZWMsIHJlc29sdmVQYXRoKGRp
cmVjdG9yeU5hbWUudmFsdWUoKSwgTW9kdWxlTmFtZShrZXkuaW1wbCgpKSkpKTsKLSAgICAgICAg
c2NvcGUucmVsZWFzZUFzc2VydE5vRXhjZXB0aW9uKCk7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7
CisgICAgICAgIGlmICghZGlyZWN0b3J5TmFtZSkgeworICAgICAgICAgICAgdGhyb3dFeGNlcHRp
b24oZXhlYywgc2NvcGUsIGNyZWF0ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQ291bGQgbm90
IHJlc29sdmUgdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkuIikpKTsKKyAgICAgICAgICAg
IHJldHVybiB7IH07CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIElkZW50aWZpZXI6OmZyb21T
dHJpbmcoJnZtLCByZXNvbHZlUGF0aChkaXJlY3RvcnlOYW1lLnZhbHVlKCksIE1vZHVsZU5hbWUo
a2V5LmltcGwoKSkpKTsKICAgICB9CiAKICAgICBjb25zdCBJZGVudGlmaWVyIHJlZmVycmVyID0g
cmVmZXJyZXJWYWx1ZS50b1Byb3BlcnR5S2V5KGV4ZWMpOwotICAgIGlmIChVTkxJS0VMWShzY29w
ZS5leGNlcHRpb24oKSkpIHsKLSAgICAgICAgSlNWYWx1ZSBleGNlcHRpb24gPSBzY29wZS5leGNl
cHRpb24oKTsKLSAgICAgICAgc2NvcGUuY2xlYXJFeGNlcHRpb24oKTsKLSAgICAgICAgcmV0dXJu
IGRlZmVycmVkLT5yZWplY3QoZXhlYywgZXhjZXB0aW9uKTsKLSAgICB9CisgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgeyB9KTsKIAogICAgIGlmIChyZWZlcnJlci5pc1N5bWJvbCgpKSB7
CiAgICAgICAgIGF1dG8gZGlyZWN0b3J5TmFtZSA9IGN1cnJlbnRXb3JraW5nRGlyZWN0b3J5KCk7
Ci0gICAgICAgIGlmICghZGlyZWN0b3J5TmFtZSkKLSAgICAgICAgICAgIHJldHVybiBkZWZlcnJl
ZC0+cmVqZWN0KGV4ZWMsIGNyZWF0ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQ291bGQgbm90
IHJlc29sdmUgdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkuIikpKTsKLSAgICAgICAgYXV0
byByZXN1bHQgPSBkZWZlcnJlZC0+cmVzb2x2ZShleGVjLCBqc1N0cmluZyhleGVjLCByZXNvbHZl
UGF0aChkaXJlY3RvcnlOYW1lLnZhbHVlKCksIE1vZHVsZU5hbWUoa2V5LmltcGwoKSkpKSk7Ci0g
ICAgICAgIHNjb3BlLnJlbGVhc2VBc3NlcnROb0V4Y2VwdGlvbigpOwotICAgICAgICByZXR1cm4g
cmVzdWx0OworICAgICAgICBpZiAoIWRpcmVjdG9yeU5hbWUpIHsKKyAgICAgICAgICAgIHRocm93
RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkNv
dWxkIG5vdCByZXNvbHZlIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5LiIpKSk7CisgICAg
ICAgICAgICByZXR1cm4geyB9OworICAgICAgICB9CisgICAgICAgIHJldHVybiBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKCZ2bSwgcmVzb2x2ZVBhdGgoZGlyZWN0b3J5TmFtZS52YWx1ZSgpLCBNb2R1
bGVOYW1lKGtleS5pbXBsKCkpKSk7CiAgICAgfQogCiAgICAgLy8gSWYgdGhlIHJlZmVycmVyIGV4
aXN0cywgd2UgYXNzdW1lIHRoYXQgdGhlIHJlZmVycmVyIGlzIHRoZSBjb3JyZWN0IGFic29sdXRl
IHBhdGguCiAgICAgYXV0byBkaXJlY3RvcnlOYW1lID0gZXh0cmFjdERpcmVjdG9yeU5hbWUocmVm
ZXJyZXIuaW1wbCgpKTsKLSAgICBpZiAoIWRpcmVjdG9yeU5hbWUpCi0gICAgICAgIHJldHVybiBk
ZWZlcnJlZC0+cmVqZWN0KGV4ZWMsIGNyZWF0ZUVycm9yKGV4ZWMsIG1ha2VTdHJpbmcoIkNvdWxk
IG5vdCByZXNvbHZlIHRoZSByZWZlcnJlciBuYW1lICciLCBTdHJpbmcocmVmZXJyZXIuaW1wbCgp
KSwgIicuIikpKTsKLSAgICBhdXRvIHJlc3VsdCA9IGRlZmVycmVkLT5yZXNvbHZlKGV4ZWMsIGpz
U3RyaW5nKGV4ZWMsIHJlc29sdmVQYXRoKGRpcmVjdG9yeU5hbWUudmFsdWUoKSwgTW9kdWxlTmFt
ZShrZXkuaW1wbCgpKSkpKTsKLSAgICBzY29wZS5yZWxlYXNlQXNzZXJ0Tm9FeGNlcHRpb24oKTsK
LSAgICByZXR1cm4gcmVzdWx0OworICAgIGlmICghZGlyZWN0b3J5TmFtZSkgeworICAgICAgICB0
aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRlRXJyb3IoZXhlYywgbWFrZVN0cmluZygi
Q291bGQgbm90IHJlc29sdmUgdGhlIHJlZmVycmVyIG5hbWUgJyIsIFN0cmluZyhyZWZlcnJlci5p
bXBsKCkpLCAiJy4iKSkpOworICAgICAgICByZXR1cm4geyB9OworICAgIH0KKyAgICByZXR1cm4g
SWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sIHJlc29sdmVQYXRoKGRpcmVjdG9yeU5hbWUudmFs
dWUoKSwgTW9kdWxlTmFtZShrZXkuaW1wbCgpKSkpOwogfQogCiBzdGF0aWMgdm9pZCBjb252ZXJ0
U2hlYmFuZ1RvSlNDb21tZW50KFZlY3RvcjxjaGFyPiYgYnVmZmVyKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQWJzdHJhY3RNb2R1bGVSZWNvcmQuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQWJzdHJhY3RNb2R1bGVSZWNvcmQuY3BwCmluZGV4
IGIwM2FjZTJhNzM3NzI0ZmQ4YzYwYzhhYjQ5NzU0MTAxMzliZTRjZDcuLmM1ZTMzZGM4NTM2Mjli
OThiZjFkNGM2MDhhMTc4ZjI0NGQ4ZGE5OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0Fic3RyYWN0TW9kdWxlUmVjb3JkLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9BYnN0cmFjdE1vZHVsZVJlY29yZC5jcHAKQEAgLTU0LDggKzU0LDYg
QEAgdm9pZCBBYnN0cmFjdE1vZHVsZVJlY29yZDo6ZmluaXNoQ3JlYXRpb24oRXhlY1N0YXRlKiBl
eGVjLCBWTSYgdm0pCiB7CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwogICAgIEFTU0VS
VChpbmhlcml0cyh2bSwgaW5mbygpKSk7Ci0gICAgcHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKCZ2bSwgQVNDSUlMaXRlcmFsKCJyZWdpc3RyeUVudHJ5IikpLCBqc1VuZGVmaW5l
ZCgpKTsKLSAgICBwdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCBBU0NJ
SUxpdGVyYWwoImV2YWx1YXRlZCIpKSwganNCb29sZWFuKGZhbHNlKSk7CiAKICAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgSlNNYXAqIG1hcCA9IEpTTWFwOjpj
cmVhdGUoZXhlYywgdm0sIGdsb2JhbE9iamVjdCgpLT5tYXBTdHJ1Y3R1cmUoKSk7CkBAIC0xNDks
MTAgKzE0NywxMCBAQCBBYnN0cmFjdE1vZHVsZVJlY29yZCogQWJzdHJhY3RNb2R1bGVSZWNvcmQ6
Omhvc3RSZXNvbHZlSW1wb3J0ZWRNb2R1bGUoRXhlY1N0YXRlKgogICAgIFZNJiB2bSA9IGV4ZWMt
PnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIEpT
VmFsdWUgbW9kdWxlTmFtZVZhbHVlID0gaWRlbnRpZmllclRvSlNWYWx1ZShleGVjLCBtb2R1bGVO
YW1lKTsKLSAgICBKU1ZhbHVlIHBhaXIgPSBtX2RlcGVuZGVuY2llc01hcC0+SlNNYXA6OmdldChl
eGVjLCBtb2R1bGVOYW1lVmFsdWUpOworICAgIEpTVmFsdWUgZW50cnkgPSBtX2RlcGVuZGVuY2ll
c01hcC0+SlNNYXA6OmdldChleGVjLCBtb2R1bGVOYW1lVmFsdWUpOwogICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIG51bGxwdHIpOwogICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICByZXR1
cm4ganNDYXN0PEFic3RyYWN0TW9kdWxlUmVjb3JkKj4ocGFpci5nZXQoZXhlYywgSWRlbnRpZmll
cjo6ZnJvbVN0cmluZyhleGVjLCAidmFsdWUiKSkpOworICAgIHJldHVybiBqc0Nhc3Q8QWJzdHJh
Y3RNb2R1bGVSZWNvcmQqPihlbnRyeS5nZXQoZXhlYywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhl
eGVjLCAibW9kdWxlIikpKTsKIH0KIAogYXV0byBBYnN0cmFjdE1vZHVsZVJlY29yZDo6cmVzb2x2
ZUltcG9ydChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIGxvY2FsTmFtZSkgLT4g
UmVzb2x1dGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0LmgKaW5kZXggNGEyNTBiOTZjMTdkNTZlOTUwZWRmMTY1YjI0OTBkMDMzN2JlZTEwOC4uNzhk
NjExMjUzMmM2YTFiZWIwOTI1ZGQ5OTBhNzI1M2Y4ZGVkYjhjMiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCkBAIC0xODksNyArMTg5LDcgQEAg
c3RydWN0IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlIHsKICAgICB0eXBlZGVmIEpTSW50ZXJuYWxQ
cm9taXNlKiAoKk1vZHVsZUxvYWRlckltcG9ydE1vZHVsZVB0cikoSlNHbG9iYWxPYmplY3QqLCBF
eGVjU3RhdGUqLCBKU01vZHVsZUxvYWRlciosIEpTU3RyaW5nKiwgSlNWYWx1ZSwgY29uc3QgU291
cmNlT3JpZ2luJik7CiAgICAgTW9kdWxlTG9hZGVySW1wb3J0TW9kdWxlUHRyIG1vZHVsZUxvYWRl
ckltcG9ydE1vZHVsZTsKIAotICAgIHR5cGVkZWYgSlNJbnRlcm5hbFByb21pc2UqICgqTW9kdWxl
TG9hZGVyUmVzb2x2ZVB0cikoSlNHbG9iYWxPYmplY3QqLCBFeGVjU3RhdGUqLCBKU01vZHVsZUxv
YWRlciosIEpTVmFsdWUsIEpTVmFsdWUsIEpTVmFsdWUpOworICAgIHR5cGVkZWYgSWRlbnRpZmll
ciAoKk1vZHVsZUxvYWRlclJlc29sdmVQdHIpKEpTR2xvYmFsT2JqZWN0KiwgRXhlY1N0YXRlKiwg
SlNNb2R1bGVMb2FkZXIqLCBKU1ZhbHVlLCBKU1ZhbHVlLCBKU1ZhbHVlKTsKICAgICBNb2R1bGVM
b2FkZXJSZXNvbHZlUHRyIG1vZHVsZUxvYWRlclJlc29sdmU7CiAKICAgICB0eXBlZGVmIEpTSW50
ZXJuYWxQcm9taXNlKiAoKk1vZHVsZUxvYWRlckZldGNoUHRyKShKU0dsb2JhbE9iamVjdCosIEV4
ZWNTdGF0ZSosIEpTTW9kdWxlTG9hZGVyKiwgSlNWYWx1ZSwgSlNWYWx1ZSwgSlNWYWx1ZSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUxvYWRlci5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUxvYWRlci5jcHAKaW5k
ZXggNTBmNTE0ODBlODI4NjMzOTRlMDEzZGZmNzA4MWQ0NWY3Y2M5OGE4Ny4uOTg0MTYyYTZmYjE5
ZGRlZWU0OTJjODNjYjYyZDBmMzAzOWY1OTVjNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTTW9kdWxlTG9hZGVyLmNwcApAQCAtMjAyLDcgKzIwMiw3IEBAIEpTSW50
ZXJuYWxQcm9taXNlKiBKU01vZHVsZUxvYWRlcjo6aW1wb3J0TW9kdWxlKEV4ZWNTdGF0ZSogZXhl
YywgSlNTdHJpbmcqIG1vZHVsCiAgICAgcmV0dXJuIGRlZmVycmVkLT5wcm9taXNlKCk7CiB9CiAK
LUpTSW50ZXJuYWxQcm9taXNlKiBKU01vZHVsZUxvYWRlcjo6cmVzb2x2ZShFeGVjU3RhdGUqIGV4
ZWMsIEpTVmFsdWUgbmFtZSwgSlNWYWx1ZSByZWZlcnJlciwgSlNWYWx1ZSBzY3JpcHRGZXRjaGVy
KQorSWRlbnRpZmllciBKU01vZHVsZUxvYWRlcjo6cmVzb2x2ZVN5bmMoRXhlY1N0YXRlKiBleGVj
LCBKU1ZhbHVlIG5hbWUsIEpTVmFsdWUgcmVmZXJyZXIsIEpTVmFsdWUgc2NyaXB0RmV0Y2hlcikK
IHsKICAgICBpZiAoT3B0aW9uczo6ZHVtcE1vZHVsZUxvYWRpbmdTdGF0ZSgpKQogICAgICAgICBk
YXRhTG9nKCJMb2FkZXIgW3Jlc29sdmVdICIsIHByaW50YWJsZU1vZHVsZUtleShleGVjLCBuYW1l
KSwgIlxuIik7CkBAIC0yMTAsOSArMjEwLDI1IEBAIEpTSW50ZXJuYWxQcm9taXNlKiBKU01vZHVs
ZUxvYWRlcjo6cmVzb2x2ZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgbmFtZSwgSlNWYWx1CiAg
ICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmpl
Y3QoKTsKICAgICBpZiAoZ2xvYmFsT2JqZWN0LT5nbG9iYWxPYmplY3RNZXRob2RUYWJsZSgpLT5t
b2R1bGVMb2FkZXJSZXNvbHZlKQogICAgICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LT5nbG9iYWxP
YmplY3RNZXRob2RUYWJsZSgpLT5tb2R1bGVMb2FkZXJSZXNvbHZlKGdsb2JhbE9iamVjdCwgZXhl
YywgdGhpcywgbmFtZSwgcmVmZXJyZXIsIHNjcmlwdEZldGNoZXIpOwotICAgIEpTSW50ZXJuYWxQ
cm9taXNlRGVmZXJyZWQqIGRlZmVycmVkID0gSlNJbnRlcm5hbFByb21pc2VEZWZlcnJlZDo6Y3Jl
YXRlKGV4ZWMsIGdsb2JhbE9iamVjdCk7Ci0gICAgZGVmZXJyZWQtPnJlc29sdmUoZXhlYywgbmFt
ZSk7Ci0gICAgcmV0dXJuIGRlZmVycmVkLT5wcm9taXNlKCk7CisgICAgcmV0dXJuIG5hbWUudG9Q
cm9wZXJ0eUtleShleGVjKTsKK30KKworSlNJbnRlcm5hbFByb21pc2UqIEpTTW9kdWxlTG9hZGVy
OjpyZXNvbHZlKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBuYW1lLCBKU1ZhbHVlIHJlZmVycmVy
LCBKU1ZhbHVlIHNjcmlwdEZldGNoZXIpCit7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7CisKKyAgICBKU0ludGVybmFs
UHJvbWlzZURlZmVycmVkKiBkZWZlcnJlZCA9IEpTSW50ZXJuYWxQcm9taXNlRGVmZXJyZWQ6OmNy
ZWF0ZShleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpOworICAgIHNjb3BlLnJlbGVh
c2VBc3NlcnROb0V4Y2VwdGlvbigpOworICAgIGNvbnN0IElkZW50aWZpZXIgbW9kdWxlS2V5ID0g
cmVzb2x2ZVN5bmMoZXhlYywgbmFtZSwgcmVmZXJyZXIsIHNjcmlwdEZldGNoZXIpOworICAgIGlm
IChVTkxJS0VMWShzY29wZS5leGNlcHRpb24oKSkpIHsKKyAgICAgICAgSlNWYWx1ZSBleGNlcHRp
b24gPSBzY29wZS5leGNlcHRpb24oKTsKKyAgICAgICAgc2NvcGUuY2xlYXJFeGNlcHRpb24oKTsK
KyAgICAgICAgcmV0dXJuIGRlZmVycmVkLT5yZWplY3QoZXhlYywgZXhjZXB0aW9uKTsKKyAgICB9
CisgICAgYXV0byByZXN1bHQgPSBkZWZlcnJlZC0+cmVzb2x2ZShleGVjLCBpZGVudGlmaWVyVG9K
U1ZhbHVlKHZtLCBtb2R1bGVLZXkpKTsKKyAgICBzY29wZS5yZWxlYXNlQXNzZXJ0Tm9FeGNlcHRp
b24oKTsKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiBKU0ludGVybmFsUHJvbWlzZSogSlNNb2R1
bGVMb2FkZXI6OmZldGNoKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBrZXksIEpTVmFsdWUgcGFy
YW1ldGVycywgSlNWYWx1ZSBzY3JpcHRGZXRjaGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVMb2FkZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTTW9kdWxlTG9hZGVyLmgKaW5kZXggODlhNDczNjNmMjFlNDE4NTcyMTlkNWI3
MWRjZThhMThiNjllYWE5My4uNTQwNDE5OWVhM2FmMWI0MWVlZjY5MTM5M2Y0NDU0NmZhY2Y3MmIx
YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVMb2Fk
ZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUxvYWRlci5o
CkBAIC03Miw2ICs3Miw3IEBAIGNsYXNzIEpTTW9kdWxlTG9hZGVyIDogcHVibGljIEpTTm9uRmlu
YWxPYmplY3QgewogICAgIC8vIFBsYXRmb3JtIGRlcGVuZGVudCBob29rZWQgQVBJcy4KICAgICBK
U0ludGVybmFsUHJvbWlzZSogaW1wb3J0TW9kdWxlKEV4ZWNTdGF0ZSosIEpTU3RyaW5nKiBtb2R1
bGVOYW1lLCBKU1ZhbHVlIHBhcmFtZXRlcnMsIGNvbnN0IFNvdXJjZU9yaWdpbiYgcmVmZXJyZXIp
OwogICAgIEpTSW50ZXJuYWxQcm9taXNlKiByZXNvbHZlKEV4ZWNTdGF0ZSosIEpTVmFsdWUgbmFt
ZSwgSlNWYWx1ZSByZWZlcnJlciwgSlNWYWx1ZSBzY3JpcHRGZXRjaGVyKTsKKyAgICBJZGVudGlm
aWVyIHJlc29sdmVTeW5jKEV4ZWNTdGF0ZSosIEpTVmFsdWUgbmFtZSwgSlNWYWx1ZSByZWZlcnJl
ciwgSlNWYWx1ZSBzY3JpcHRGZXRjaGVyKTsKICAgICBKU0ludGVybmFsUHJvbWlzZSogZmV0Y2go
RXhlY1N0YXRlKiwgSlNWYWx1ZSBrZXksIEpTVmFsdWUgcGFyYW1ldGVycywgSlNWYWx1ZSBzY3Jp
cHRGZXRjaGVyKTsKICAgICBKU09iamVjdCogY3JlYXRlSW1wb3J0TWV0YVByb3BlcnRpZXMoRXhl
Y1N0YXRlKiwgSlNWYWx1ZSBrZXksIEpTTW9kdWxlUmVjb3JkKiwgSlNWYWx1ZSBzY3JpcHRGZXRj
aGVyKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTW9kdWxl
TG9hZGVyUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01vZHVs
ZUxvYWRlclByb3RvdHlwZS5jcHAKaW5kZXggZTgzNjM4MDIyODQyYzE3MGQ1NGQzNmUwY2FlOTI0
NmFhOTcyYmQ0OS4uM2Q0ZjQ0YTE0NTk3ZWMxY2MwNWJjZjJjNzI2NGFhMmViNTQ3ZmFlNCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTW9kdWxlTG9hZGVyUHJvdG90
eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Nb2R1bGVMb2FkZXJQ
cm90b3R5cGUuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiTW9kdWxlTG9hZGVyUHJv
dG90eXBlLmgiCiAKICNpbmNsdWRlICJCdWlsdGluTmFtZXMuaCIKKyNpbmNsdWRlICJDYXRjaFNj
b3BlLmgiCiAjaW5jbHVkZSAiQ29kZVByb2ZpbGluZy5oIgogI2luY2x1ZGUgIkVycm9yLmgiCiAj
aW5jbHVkZSAiRXhjZXB0aW9uLmgiCkBAIC01Miw2ICs1Myw3IEBAIHN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIG1vZHVsZUxvYWRlclByb3RvdHlwZVJlcXVlc3RlZE1vZHVsZXMo
RXhlY1N0CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtb2R1bGVMb2FkZXJQ
cm90b3R5cGVFdmFsdWF0ZShFeGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIG1vZHVsZUxvYWRlclByb3RvdHlwZU1vZHVsZURlY2xhcmF0aW9uSW5zdGFudGlh
dGlvbihFeGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1v
ZHVsZUxvYWRlclByb3RvdHlwZVJlc29sdmUoRXhlY1N0YXRlKik7CitzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBtb2R1bGVMb2FkZXJQcm90b3R5cGVSZXNvbHZlU3luYyhFeGVj
U3RhdGUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1vZHVsZUxvYWRl
clByb3RvdHlwZUZldGNoKEV4ZWNTdGF0ZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgbW9kdWxlTG9hZGVyUHJvdG90eXBlR2V0TW9kdWxlTmFtZXNwYWNlT2JqZWN0KEV4
ZWNTdGF0ZSopOwogCkBAIC04Niw2ICs4OCw3IEBAIGNvbnN0IENsYXNzSW5mbyBNb2R1bGVMb2Fk
ZXJQcm90b3R5cGU6OnNfaW5mbyA9IHsgIk1vZHVsZUxvYWRlciIsICZCYXNlOjpzX2luZm8sCiAg
ICAgcGFyc2VNb2R1bGUgICAgICAgICAgICAgICAgICAgIG1vZHVsZUxvYWRlclByb3RvdHlwZVBh
cnNlTW9kdWxlICAgICAgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAyCiAgICAgcmVx
dWVzdGVkTW9kdWxlcyAgICAgICAgICAgICAgIG1vZHVsZUxvYWRlclByb3RvdHlwZVJlcXVlc3Rl
ZE1vZHVsZXMgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCiAgICAgcmVzb2x2ZSAg
ICAgICAgICAgICAgICAgICAgICAgIG1vZHVsZUxvYWRlclByb3RvdHlwZVJlc29sdmUgICAgICAg
ICAgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAyCisgICAgcmVzb2x2ZVN5bmMgICAg
ICAgICAgICAgICAgICAgIG1vZHVsZUxvYWRlclByb3RvdHlwZVJlc29sdmVTeW5jICAgICAgICAg
ICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAyCiAgICAgZmV0Y2ggICAgICAgICAgICAgICAg
ICAgICAgICAgIG1vZHVsZUxvYWRlclByb3RvdHlwZUZldGNoICAgICAgICAgICAgICAgICAgICAg
ICAgICBEb250RW51bXxGdW5jdGlvbiAzCiBAZW5kCiAqLwpAQCAtMTgyLDYgKzE4NSwxOSBAQCBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1vZHVsZUxvYWRlclByb3RvdHlwZVJlc29sdmUo
RXhlY1N0YXRlKiBleGVjKQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUobG9hZGVyLT5yZXNv
bHZlKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApLCBleGVjLT5hcmd1bWVudCgxKSwgZXhlYy0+YXJn
dW1lbnQoMikpKTsKIH0KIAorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtb2R1bGVMb2Fk
ZXJQcm90b3R5cGVSZXNvbHZlU3luYyhFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgVk0mIHZtID0g
ZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7CisK
KyAgICBKU01vZHVsZUxvYWRlciogbG9hZGVyID0ganNEeW5hbWljQ2FzdDxKU01vZHVsZUxvYWRl
cio+KHZtLCBleGVjLT50aGlzVmFsdWUoKSk7CisgICAgaWYgKCFsb2FkZXIpCisgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgYXV0byByZXN1bHQgPSBs
b2FkZXItPnJlc29sdmVTeW5jKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApLCBleGVjLT5hcmd1bWVu
dCgxKSwgZXhlYy0+YXJndW1lbnQoMikpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IGVuY29kZWRKU1ZhbHVlKCkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoaWRlbnRpZmll
clRvSlNWYWx1ZSh2bSwgcmVzdWx0KSk7Cit9CisKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgbW9kdWxlTG9hZGVyUHJvdG90eXBlRmV0Y2goRXhlY1N0YXRlKiBleGVjKQogewogICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTVdpbmRvd0Jhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01X
aW5kb3dCYXNlLmNwcAppbmRleCBhZDI4ZThkODRmNjM3YTljZjI5NTQ4YzBlODU2OGM2ZjRkZDc2
YTliLi5mOGRhODdiZDI2MWQ0OWVjODhhZjMwNmEyOGY2YjRjZGI3YTIzMzUzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAKQEAgLTM2NCwxMyAr
MzY0LDEyIEBAIHZvaWQgSlNET01XaW5kb3dCYXNlOjpmaXJlRnJhbWVDbGVhcmVkV2F0Y2hwb2lu
dHNGb3JXaW5kb3coRE9NV2luZG93KiB3aW5kb3cpCiAgICAgfQogfQogCi1KU0M6OkpTSW50ZXJu
YWxQcm9taXNlKiBKU0RPTVdpbmRvd0Jhc2U6Om1vZHVsZUxvYWRlclJlc29sdmUoSlNDOjpKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNDOjpKU01v
ZHVsZUxvYWRlciogbW9kdWxlTG9hZGVyLCBKU0M6OkpTVmFsdWUgbW9kdWxlTmFtZSwgSlNDOjpK
U1ZhbHVlIGltcG9ydGVyTW9kdWxlS2V5LCBKU0M6OkpTVmFsdWUgc2NyaXB0RmV0Y2hlcikKK0pT
Qzo6SWRlbnRpZmllciBKU0RPTVdpbmRvd0Jhc2U6Om1vZHVsZUxvYWRlclJlc29sdmUoSlNDOjpK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNDOjpK
U01vZHVsZUxvYWRlciogbW9kdWxlTG9hZGVyLCBKU0M6OkpTVmFsdWUgbW9kdWxlTmFtZSwgSlND
OjpKU1ZhbHVlIGltcG9ydGVyTW9kdWxlS2V5LCBKU0M6OkpTVmFsdWUgc2NyaXB0RmV0Y2hlcikK
IHsKICAgICBKU0RPTVdpbmRvd0Jhc2UqIHRoaXNPYmplY3QgPSBKU0M6OmpzQ2FzdDxKU0RPTVdp
bmRvd0Jhc2UqPihnbG9iYWxPYmplY3QpOwogICAgIGlmIChSZWZQdHI8RG9jdW1lbnQ+IGRvY3Vt
ZW50ID0gdGhpc09iamVjdC0+d3JhcHBlZCgpLmRvY3VtZW50KCkpCiAgICAgICAgIHJldHVybiBk
b2N1bWVudC0+bW9kdWxlTG9hZGVyKCktPnJlc29sdmUoZ2xvYmFsT2JqZWN0LCBleGVjLCBtb2R1
bGVMb2FkZXIsIG1vZHVsZU5hbWUsIGltcG9ydGVyTW9kdWxlS2V5LCBzY3JpcHRGZXRjaGVyKTsK
LSAgICBKU0M6OkpTSW50ZXJuYWxQcm9taXNlRGVmZXJyZWQqIGRlZmVycmVkID0gSlNDOjpKU0lu
dGVybmFsUHJvbWlzZURlZmVycmVkOjpjcmVhdGUoZXhlYywgZ2xvYmFsT2JqZWN0KTsKLSAgICBy
ZXR1cm4gZGVmZXJyZWQtPnJlamVjdChleGVjLCBqc1VuZGVmaW5lZCgpKTsKKyAgICByZXR1cm4g
eyB9OwogfQogCiBKU0M6OkpTSW50ZXJuYWxQcm9taXNlKiBKU0RPTVdpbmRvd0Jhc2U6Om1vZHVs
ZUxvYWRlckZldGNoKEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpFeGVj
U3RhdGUqIGV4ZWMsIEpTQzo6SlNNb2R1bGVMb2FkZXIqIG1vZHVsZUxvYWRlciwgSlNDOjpKU1Zh
bHVlIG1vZHVsZUtleSwgSlNDOjpKU1ZhbHVlIHBhcmFtZXRlcnMsIEpTQzo6SlNWYWx1ZSBzY3Jp
cHRGZXRjaGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01X
aW5kb3dCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2Uu
aAppbmRleCAyMTUwYzZhMGRhYjQ4OTYyZWNlYTUwMWM0M2RjYzBkZDE0NzliZjRlLi4yOTg1ZTRh
OGVjYmM2YTdjNTVhNTkwNmI4Yzc5OWYxMTRmYzVmMzlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuaApAQCAtNzUsNyArNzUsNyBAQCBjbGFzcyBXRUJD
T1JFX0VYUE9SVCBKU0RPTVdpbmRvd0Jhc2UgOiBwdWJsaWMgSlNET01HbG9iYWxPYmplY3Qgewog
ICAgIEpTQzo6V2F0Y2hwb2ludFNldCBtX3dpbmRvd0Nsb3NlV2F0Y2hwb2ludHM7CiAKIHByaXZh
dGU6Ci0gICAgc3RhdGljIEpTQzo6SlNJbnRlcm5hbFByb21pc2UqIG1vZHVsZUxvYWRlclJlc29s
dmUoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU01vZHVsZUxv
YWRlciosIEpTQzo6SlNWYWx1ZSwgSlNDOjpKU1ZhbHVlLCBKU0M6OkpTVmFsdWUpOworICAgIHN0
YXRpYyBKU0M6OklkZW50aWZpZXIgbW9kdWxlTG9hZGVyUmVzb2x2ZShKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTTW9kdWxlTG9hZGVyKiwgSlNDOjpKU1ZhbHVl
LCBKU0M6OkpTVmFsdWUsIEpTQzo6SlNWYWx1ZSk7CiAgICAgc3RhdGljIEpTQzo6SlNJbnRlcm5h
bFByb21pc2UqIG1vZHVsZUxvYWRlckZldGNoKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkV4
ZWNTdGF0ZSosIEpTQzo6SlNNb2R1bGVMb2FkZXIqLCBKU0M6OkpTVmFsdWUsIEpTQzo6SlNWYWx1
ZSwgSlNDOjpKU1ZhbHVlKTsKICAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIG1vZHVsZUxvYWRlckV2
YWx1YXRlKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNNb2R1
bGVMb2FkZXIqLCBKU0M6OkpTVmFsdWUsIEpTQzo6SlNWYWx1ZSwgSlNDOjpKU1ZhbHVlKTsKICAg
ICBzdGF0aWMgSlNDOjpKU0ludGVybmFsUHJvbWlzZSogbW9kdWxlTG9hZGVySW1wb3J0TW9kdWxl
KEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNNb2R1bGVMb2Fk
ZXIqLCBKU0M6OkpTU3RyaW5nKiwgSlNDOjpKU1ZhbHVlLCBjb25zdCBKU0M6OlNvdXJjZU9yaWdp
biYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0TW9kdWxl
TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdE1vZHVsZUxvYWRl
ci5jcHAKaW5kZXggMWM2MmY0MmNhNzEyODY5MjAwYTBmOWE0MDFlMzg4ZDkyMjVlNTUyMy4uNjIz
YzZmNWRhNjFiZjcyYzJkNThlOTZjNjMwY2FmZDg2NjYzM2Q3MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0TW9kdWxlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRNb2R1bGVMb2FkZXIuY3BwCkBAIC04NSwyNiArODUs
MjUgQEAgc3RhdGljIEV4cGVjdGVkPFVSTCwgQVNDSUlMaXRlcmFsPiByZXNvbHZlTW9kdWxlU3Bl
Y2lmaWVyKERvY3VtZW50JiBkb2N1bWVudCwgY28KICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1K
U0M6OkpTSW50ZXJuYWxQcm9taXNlKiBTY3JpcHRNb2R1bGVMb2FkZXI6OnJlc29sdmUoSlNDOjpK
U0dsb2JhbE9iamVjdCoganNHbG9iYWxPYmplY3QsIEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0M6
OkpTTW9kdWxlTG9hZGVyKiwgSlNDOjpKU1ZhbHVlIG1vZHVsZU5hbWVWYWx1ZSwgSlNDOjpKU1Zh
bHVlIGltcG9ydGVyTW9kdWxlS2V5LCBKU0M6OkpTVmFsdWUpCitKU0M6OklkZW50aWZpZXIgU2Ny
aXB0TW9kdWxlTG9hZGVyOjpyZXNvbHZlKEpTQzo6SlNHbG9iYWxPYmplY3QqIGpzR2xvYmFsT2Jq
ZWN0LCBKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNDOjpKU01vZHVsZUxvYWRlciosIEpTQzo6SlNW
YWx1ZSBtb2R1bGVOYW1lVmFsdWUsIEpTQzo6SlNWYWx1ZSBpbXBvcnRlck1vZHVsZUtleSwgSlND
OjpKU1ZhbHVlKQogewotICAgIGF1dG8mIGdsb2JhbE9iamVjdCA9ICpKU0M6OmpzQ2FzdDxKU0RP
TUdsb2JhbE9iamVjdCo+KGpzR2xvYmFsT2JqZWN0KTsKLSAgICBhdXRvJiBqc1Byb21pc2UgPSAq
SlNDOjpKU0ludGVybmFsUHJvbWlzZURlZmVycmVkOjpjcmVhdGUoZXhlYywgJmdsb2JhbE9iamVj
dCk7Ci0gICAgYXV0byBwcm9taXNlID0gRGVmZXJyZWRQcm9taXNlOjpjcmVhdGUoZ2xvYmFsT2Jq
ZWN0LCBqc1Byb21pc2UpOworICAgIEpTQzo6Vk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICAvLyBXZSB1c2UgYSBTeW1i
b2wgYXMgYSBzcGVjaWFsIHB1cnBvc2U7IEl0IG1lYW5zIHRoaXMgbW9kdWxlIGlzIGFuIGlubGlu
ZSBtb2R1bGUuCiAgICAgLy8gU28gdGhlcmUgaXMgbm8gY29ycmVjdCBVUkwgdG8gcmV0cmlldmUg
dGhlIG1vZHVsZSBzb3VyY2UgY29kZS4gSWYgdGhlIG1vZHVsZSBuYW1lCiAgICAgLy8gdmFsdWUg
aXMgYSBTeW1ib2wsIGl0IGlzIHVzZWQgZGlyZWN0bHkgYXMgYSBtb2R1bGUga2V5LgotICAgIGlm
IChtb2R1bGVOYW1lVmFsdWUuaXNTeW1ib2woKSkgewotICAgICAgICBwcm9taXNlLT5yZXNvbHZl
PElETEFueT4oSlNDOjpTeW1ib2w6OmNyZWF0ZShleGVjLT52bSgpLCBhc1N5bWJvbChtb2R1bGVO
YW1lVmFsdWUpLT5wcml2YXRlTmFtZSgpLnVpZCgpKSk7Ci0gICAgICAgIHJldHVybiBqc1Byb21p
c2UucHJvbWlzZSgpOwotICAgIH0KKyAgICBpZiAobW9kdWxlTmFtZVZhbHVlLmlzU3ltYm9sKCkp
CisgICAgICAgIHJldHVybiBKU0M6OklkZW50aWZpZXI6OmZyb21VaWQoJnZtLCBhc1N5bWJvbCht
b2R1bGVOYW1lVmFsdWUpLT5wcml2YXRlTmFtZSgpKTsKIAogICAgIGlmICghbW9kdWxlTmFtZVZh
bHVlLmlzU3RyaW5nKCkpIHsKLSAgICAgICAgcHJvbWlzZS0+cmVqZWN0KFR5cGVFcnJvciwgQVND
SUlMaXRlcmFsKCJJbXBvcnRlciBtb2R1bGUga2V5IGlzIG5vdCBhIFN5bWJvbCBvciBhIFN0cmlu
Zy4iKSk7Ci0gICAgICAgIHJldHVybiBqc1Byb21pc2UucHJvbWlzZSgpOworICAgICAgICByZXR1
cm4gSlNDOjp0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJJbXBvcnRl
ciBtb2R1bGUga2V5IGlzIG5vdCBhIFN5bWJvbCBvciBhIFN0cmluZy4iKSk7CisgICAgICAgIHJl
dHVybiB7IH07CiAgICAgfQogCiAgICAgU3RyaW5nIHNwZWNpZmllciA9IGFzU3RyaW5nKG1vZHVs
ZU5hbWVWYWx1ZSktPnZhbHVlKGV4ZWMpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IHsgfSk7CisKICAgICBVUkwgYmFzZVVSTDsKICAgICBpZiAoaXNSb290TW9kdWxlKGltcG9ydGVy
TW9kdWxlS2V5KSkKICAgICAgICAgYmFzZVVSTCA9IG1fZG9jdW1lbnQuYmFzZVVSTCgpOwpAQCAt
MTIwLDEyICsxMTksMTEgQEAgSlNDOjpKU0ludGVybmFsUHJvbWlzZSogU2NyaXB0TW9kdWxlTG9h
ZGVyOjpyZXNvbHZlKEpTQzo6SlNHbG9iYWxPYmplY3QqIGpzR2xvYmEKIAogICAgIGF1dG8gcmVz
dWx0ID0gcmVzb2x2ZU1vZHVsZVNwZWNpZmllcihtX2RvY3VtZW50LCBzcGVjaWZpZXIsIGJhc2VV
UkwpOwogICAgIGlmICghcmVzdWx0KSB7Ci0gICAgICAgIHByb21pc2UtPnJlamVjdChUeXBlRXJy
b3IsIHJlc3VsdC5lcnJvcigpKTsKLSAgICAgICAgcmV0dXJuIGpzUHJvbWlzZS5wcm9taXNlKCk7
CisgICAgICAgIHJldHVybiBKU0M6OnRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCByZXN1bHQu
ZXJyb3IoKSk7CisgICAgICAgIHJldHVybiB7IH07CiAgICAgfQogCi0gICAgcHJvbWlzZS0+cmVz
b2x2ZTxJRExET01TdHJpbmc+KHJlc3VsdC0+c3RyaW5nKCkpOwotICAgIHJldHVybiBqc1Byb21p
c2UucHJvbWlzZSgpOworICAgIHJldHVybiBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZt
LCByZXN1bHQtPnN0cmluZygpKTsKIH0KIAogc3RhdGljIHZvaWQgcmVqZWN0VG9Qcm9wYWdhdGVO
ZXR3b3JrRXJyb3IoRGVmZXJyZWRQcm9taXNlJiBkZWZlcnJlZCwgTW9kdWxlRmV0Y2hGYWlsdXJl
S2luZCBmYWlsdXJlS2luZCwgQVNDSUlMaXRlcmFsIG1lc3NhZ2UpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRNb2R1bGVMb2FkZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NjcmlwdE1vZHVsZUxvYWRlci5oCmluZGV4IDc5ZmRmNDc3YjhkZmY1
NGEyZGE4NzFkNDk0N2M0YzExOTgzZWU4NGMuLmNkYjY1NmVlNjc3OGFlMmFhMWQwMjVjZjg5Y2Ri
MjBhMGY5MzE2NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Njcmlw
dE1vZHVsZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdE1v
ZHVsZUxvYWRlci5oCkBAIC01NSw3ICs1NSw3IEBAIGNsYXNzIFNjcmlwdE1vZHVsZUxvYWRlciBm
aW5hbCA6IHByaXZhdGUgQ2FjaGVkTW9kdWxlU2NyaXB0TG9hZGVyQ2xpZW50IHsKIAogICAgIERv
Y3VtZW50JiBkb2N1bWVudCgpIHsgcmV0dXJuIG1fZG9jdW1lbnQ7IH0KIAotICAgIEpTQzo6SlNJ
bnRlcm5hbFByb21pc2UqIHJlc29sdmUoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RXhlY1N0
YXRlKiwgSlNDOjpKU01vZHVsZUxvYWRlciosIEpTQzo6SlNWYWx1ZSBtb2R1bGVOYW1lLCBKU0M6
OkpTVmFsdWUgaW1wb3J0ZXJNb2R1bGVLZXksIEpTQzo6SlNWYWx1ZSBzY3JpcHRGZXRjaGVyKTsK
KyAgICBKU0M6OklkZW50aWZpZXIgcmVzb2x2ZShKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpF
eGVjU3RhdGUqLCBKU0M6OkpTTW9kdWxlTG9hZGVyKiwgSlNDOjpKU1ZhbHVlIG1vZHVsZU5hbWUs
IEpTQzo6SlNWYWx1ZSBpbXBvcnRlck1vZHVsZUtleSwgSlNDOjpKU1ZhbHVlIHNjcmlwdEZldGNo
ZXIpOwogICAgIEpTQzo6SlNJbnRlcm5hbFByb21pc2UqIGZldGNoKEpTQzo6SlNHbG9iYWxPYmpl
Y3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNNb2R1bGVMb2FkZXIqLCBKU0M6OkpTVmFsdWUg
bW9kdWxlS2V5LCBKU0M6OkpTVmFsdWUgcGFyYW1ldGVycywgSlNDOjpKU1ZhbHVlIHNjcmlwdEZl
dGNoZXIpOwogICAgIEpTQzo6SlNWYWx1ZSBldmFsdWF0ZShKU0M6OkpTR2xvYmFsT2JqZWN0Kiwg
SlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTTW9kdWxlTG9hZGVyKiwgSlNDOjpKU1ZhbHVlIG1vZHVs
ZUtleSwgSlNDOjpKU1ZhbHVlIG1vZHVsZVJlY29yZCwgSlNDOjpKU1ZhbHVlIHNjcmlwdEZldGNo
ZXIpOwogICAgIEpTQzo6SlNJbnRlcm5hbFByb21pc2UqIGltcG9ydE1vZHVsZShKU0M6OkpTR2xv
YmFsT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTTW9kdWxlTG9hZGVyKiwgSlNDOjpK
U1N0cmluZyosIEpTQzo6SlNWYWx1ZSBwYXJhbWV0ZXJzLCBjb25zdCBKU0M6OlNvdXJjZU9yaWdp
biYpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>323658</attachid>
            <date>2017-10-13 04:51:23 -0700</date>
            <delta_ts>2017-10-13 05:09:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-178256-20171013205122.patch</filename>
            <type>text/plain</type>
            <size>34243</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIzMjc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
N2JlZTlhODUyMWQ0ODgwZWYxNzVmYWEzNjZhY2U4NWY3YTdkMWIwLi4yY2U1MDY2M2RlZGQ3MzU2
NDJmZjRjZDI1NTVlMGZjZTlmNDY3YzIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0NiBAQAorMjAxNy0xMC0xMyAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbSlNDXSBQZXJmb3JtIG1vZHVsZSBzcGVjaWZpZXIgdmFsaWRhdGlv
biBhdCBwYXJzaW5nIHRpbWUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE3ODI1NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFRoaXMgcGF0Y2ggbWFrZSBtb2R1bGUgbG9hZGVyJ3MgYHJlc29sdmVgIG9wZXJh
dGlvbiBzeW5jaHJvbm91cy4gQW5kIHdlIHZhbGlkYXRlCisgICAgICAgIG1vZHVsZSdzIHJlcXVl
c3RlZCBtb2R1bGUgbmFtZXMgd2hlbiBpbnN0YW50aWF0aW5nIHRoZSBtb2R1bGUgaW5zdGVhZCBv
ZiBzYXRpc2Z5aW5nCisgICAgICAgIG1vZHVsZSdzIGRlcGVuZGVuY2llcy4gVGhpcyBjaGFuZ2Ug
aXMgbm90IG9ic2VydmFibGUgdG8gdXNlcnMuIEJ1dCB0aGlzIGlzIHByZWNpc2UKKyAgICAgICAg
dG8gdGhlIHNwZWMgYW5kIHRoaXMgb3B0aW1pemVzICYgc2ltcGxpZmllcyB0aGUgY3VycmVudCBt
b2R1bGUgbG9hZGVyIGEgYml0IGJ5CisgICAgICAgIHJlZHVjaW5nIG9iamVjdCBhbGxvY2F0aW9u
cy4KKworICAgICAgICBQcmV2aW91c2x5LCB3ZSBoYXZlIGFuIG9iamVjdCBjYWxsZWQgcGFpciBp
biB0aGUgbW9kdWxlIGxvYWRlci4gVGhpcyBpcyBwYWlyIG9mCisgICAgICAgIG1vZHVsZSdzIG5h
bWUgYW5kIG1vZHVsZSdzIHJlY29yZC4gQW5kIHdlIHVzZSBpdCB0byBsaW5rIG9uZSBtb2R1bGUg
dG8gZGVwZW5kZW50CisgICAgICAgIG1vZHVsZXMuIE5vdywgaXQgaXMgcmVwbGFjZWQgd2l0aCBt
b2R1bGUncyByZWdpc3RyeSBlbnRyeS4KKworICAgICAgICBXZSBhbHNvIGNoYW5nZSBvdXIgbG9h
ZGVyIGZ1bmN0aW9ucyB0byB0YWtlIGEgcmVnaXN0cnkgZW50cnkgaW5zdGVhZCBvZiBhIG1vZHVs
ZSBrZXkuCisgICAgICAgIFByZXZpb3VzIGRlc2lnbiBpcyBkdWUgdG8gdGhlIGNvbnNpZGVyYXRp
b24gdGhhdCB0aGVzZSBBUElzIG1heSBiZSBleHBvc2VkIHRvIHVzZXJzCisgICAgICAgIGluIHdo
YXR3Zy9sb2FkZXIgc3BlYy4gSG93ZXZlciwgdGhpcyB3b24ndCBoYXBwZW4uIFRoaXMgY2hhbmdl
IHJlbW92ZXMgdW5uZWNlc3NhcnkKKyAgICAgICAgcmVwZWF0ZWRseSBoYXNoIG1hcCBsb29rdXBz
LgorCisgICAgICAgICogYnVpbHRpbnMvTW9kdWxlTG9hZGVyUHJvdG90eXBlLmpzOgorICAgICAg
ICAoZ2xvYmFsUHJpdmF0ZS5uZXdSZWdpc3RyeUVudHJ5KToKKyAgICAgICAgKHJlcXVlc3RGZXRj
aCk6CisgICAgICAgIChyZXF1ZXN0SW5zdGFudGlhdGUpOgorICAgICAgICAocmVxdWVzdFNhdGlz
ZnkpOgorICAgICAgICAobGluayk6CisgICAgICAgIChtb2R1bGVFdmFsdWF0aW9uKToKKyAgICAg
ICAgKGxvYWRNb2R1bGUpOgorICAgICAgICAqIGpzYy5jcHA6CisgICAgICAgIChHbG9iYWxPYmpl
Y3Q6Om1vZHVsZUxvYWRlclJlc29sdmUpOgorICAgICAgICAqIHJ1bnRpbWUvQWJzdHJhY3RNb2R1
bGVSZWNvcmQuY3BwOgorICAgICAgICAoSlNDOjpBYnN0cmFjdE1vZHVsZVJlY29yZDo6ZmluaXNo
Q3JlYXRpb24pOgorICAgICAgICAoSlNDOjpBYnN0cmFjdE1vZHVsZVJlY29yZDo6aG9zdFJlc29s
dmVJbXBvcnRlZE1vZHVsZSk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNNb2R1bGVMb2FkZXIuY3BwOgorICAgICAgICAoSlNDOjpKU01v
ZHVsZUxvYWRlcjo6cmVzb2x2ZVN5bmMpOgorICAgICAgICAoSlNDOjpKU01vZHVsZUxvYWRlcjo6
cmVzb2x2ZSk6CisgICAgICAgICogcnVudGltZS9KU01vZHVsZUxvYWRlci5oOgorICAgICAgICAq
IHJ1bnRpbWUvTW9kdWxlTG9hZGVyUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6bW9kdWxl
TG9hZGVyUHJvdG90eXBlUmVzb2x2ZVN5bmMpOgorCiAyMDE3LTEwLTEyICBZdXN1a2UgU3V6dWtp
ICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgogCiAgICAgICAgIFdlYkFzc2VtYmx5OiBXYXNtIGZ1
bmN0aW9ucyBzaG91bGQgaGF2ZSBlaXRoZXIgSlNGdW5jdGlvblR5cGUgb3IgVHlwZU9mU2hvdWxk
Q2FsbEdldENhbGxEYXRhCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjA0YjY1YzQyMWI5ZTBkYWFlODRiMjI4M2I3
OWM2ZTUxNDRmNmEwMi4uMzRiYzAzZTUzYWUzYjM3NWQ1Y2NmNmZjMTEzMDA0YWJhZDg3Mjk0MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDE3LTEwLTEzICBZdXN1a2UgU3V6dWtpICA8
dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIFtKU0NdIFBlcmZvcm0gbW9kdWxlIHNw
ZWNpZmllciB2YWxpZGF0aW9uIGF0IHBhcnNpbmcgdGltZQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc4MjU2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gYmVoYXZpb3IgY2hhbmdlIGluIHRoZSBjdXJy
ZW50IGltcGxlbWVudGF0aW9uLgorCisgICAgICAgICogYmluZGluZ3MvanMvSlNET01XaW5kb3dC
YXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93QmFzZTo6bW9kdWxlTG9hZGVy
UmVzb2x2ZSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmg6CisgICAg
ICAgICogYmluZGluZ3MvanMvU2NyaXB0TW9kdWxlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNjcmlwdE1vZHVsZUxvYWRlcjo6cmVzb2x2ZSk6CisgICAgICAgICogYmluZGluZ3MvanMv
U2NyaXB0TW9kdWxlTG9hZGVyLmg6CisKIDIwMTctMTAtMTMgIFJvbWFpbiBCZWxsZXNzb3J0ICA8
cm9tYWluLmJlbGxlc3NvcnRAY3JmLmNhbm9uLmZyPgogCiAgICAgICAgIFtSZWFkYWJsZSBTdHJl
YW1zIEFQSV0gQWxpZ24gcXVldWUgd2l0aCBzcGVjIGZvciBSZWFkYWJsZVN0cmVhbURlZmF1bHRD
b250cm9sbGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvTW9k
dWxlTG9hZGVyUHJvdG90eXBlLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL01v
ZHVsZUxvYWRlclByb3RvdHlwZS5qcwppbmRleCBlZDBhZTYwMzRhNWYwOTg4NzY4Y2YyOTA1MjYy
Y2ViNzFjNjkxZWNiLi5lNmFjNTViMDkzOTlmYWI4ZDY0ZmY3M2NiYmQwYjllMjA0ZWYxZmVhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvTW9kdWxlTG9hZGVyUHJv
dG90eXBlLmpzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9Nb2R1bGVMb2Fk
ZXJQcm90b3R5cGUuanMKQEAgLTk5LDYgKzk5LDcgQEAgZnVuY3Rpb24gbmV3UmVnaXN0cnlFbnRy
eShrZXkpCiAgICAgICAgIG1vZHVsZTogQHVuZGVmaW5lZCwgLy8gSlNNb2R1bGVSZWNvcmQKICAg
ICAgICAgbGlua0Vycm9yOiBAdW5kZWZpbmVkLAogICAgICAgICBsaW5rU3VjY2VlZGVkOiB0cnVl
LAorICAgICAgICBldmFsdWF0ZWQ6IGZhbHNlLAogICAgIH07CiB9CiAKQEAgLTE0MCwxMyArMTQx
LDEyIEBAIGZ1bmN0aW9uIGZ1bGZpbGxGZXRjaChlbnRyeSwgc291cmNlKQogCiAvLyBMb2FkZXIu
CiAKLWZ1bmN0aW9uIHJlcXVlc3RGZXRjaChrZXksIHBhcmFtZXRlcnMsIGZldGNoZXIpCitmdW5j
dGlvbiByZXF1ZXN0RmV0Y2goZW50cnksIHBhcmFtZXRlcnMsIGZldGNoZXIpCiB7CiAgICAgLy8g
aHR0cHM6Ly93aGF0d2cuZ2l0aHViLmlvL2xvYWRlci8jcmVxdWVzdC1mZXRjaAogCiAgICAgInVz
ZSBzdHJpY3QiOwogCi0gICAgdmFyIGVudHJ5ID0gdGhpcy5lbnN1cmVSZWdpc3RlcmVkKGtleSk7
CiAgICAgaWYgKGVudHJ5LmZldGNoKQogICAgICAgICByZXR1cm4gZW50cnkuZmV0Y2g7CiAKQEAg
LTE1Niw3ICsxNTYsNyBAQCBmdW5jdGlvbiByZXF1ZXN0RmV0Y2goa2V5LCBwYXJhbWV0ZXJzLCBm
ZXRjaGVyKQogICAgIC8vICAgICBUYWtlIHRoZSBrZXkgYW5kIGZldGNoIHRoZSByZXNvdXJjZSBh
Y3R1YWxseS4KICAgICAvLyAgICAgRm9yIGV4YW1wbGUsIEphdmFTY3JpcHRDb3JlIHNoZWxsIGNh
biBwcm92aWRlIHRoZSBob29rIGZldGNoaW5nIHRoZSByZXNvdXJjZQogICAgIC8vICAgICBmcm9t
IHRoZSBsb2NhbCBmaWxlIHN5c3RlbS4KLSAgICB2YXIgZmV0Y2hQcm9taXNlID0gdGhpcy5mZXRj
aChrZXksIHBhcmFtZXRlcnMsIGZldGNoZXIpLnRoZW4oKHNvdXJjZSkgPT4geworICAgIHZhciBm
ZXRjaFByb21pc2UgPSB0aGlzLmZldGNoKGVudHJ5LmtleSwgcGFyYW1ldGVycywgZmV0Y2hlciku
dGhlbigoc291cmNlKSA9PiB7CiAgICAgICAgIEBzZXRTdGF0ZVRvTWF4KGVudHJ5LCBATW9kdWxl
SW5zdGFudGlhdGUpOwogICAgICAgICByZXR1cm4gc291cmNlOwogICAgIH0pOwpAQCAtMTY0LDE4
ICsxNjQsMTggQEAgZnVuY3Rpb24gcmVxdWVzdEZldGNoKGtleSwgcGFyYW1ldGVycywgZmV0Y2hl
cikKICAgICByZXR1cm4gZmV0Y2hQcm9taXNlOwogfQogCi1mdW5jdGlvbiByZXF1ZXN0SW5zdGFu
dGlhdGUoa2V5LCBwYXJhbWV0ZXJzLCBmZXRjaGVyKQorZnVuY3Rpb24gcmVxdWVzdEluc3RhbnRp
YXRlKGVudHJ5LCBwYXJhbWV0ZXJzLCBmZXRjaGVyKQogewogICAgIC8vIGh0dHBzOi8vd2hhdHdn
LmdpdGh1Yi5pby9sb2FkZXIvI3JlcXVlc3QtaW5zdGFudGlhdGUKIAogICAgICJ1c2Ugc3RyaWN0
IjsKIAotICAgIHZhciBlbnRyeSA9IHRoaXMuZW5zdXJlUmVnaXN0ZXJlZChrZXkpOwogICAgIGlm
IChlbnRyeS5pbnN0YW50aWF0ZSkKICAgICAgICAgcmV0dXJuIGVudHJ5Lmluc3RhbnRpYXRlOwog
Ci0gICAgdmFyIGluc3RhbnRpYXRlUHJvbWlzZSA9IHRoaXMucmVxdWVzdEZldGNoKGtleSwgcGFy
YW1ldGVycywgZmV0Y2hlcikudGhlbigoc291cmNlKSA9PiB7Ci0gICAgICAgIHZhciBtb2R1bGVS
ZWNvcmQgPSB0aGlzLnBhcnNlTW9kdWxlKGVudHJ5LmtleSwgc291cmNlKTsKKyAgICB2YXIgaW5z
dGFudGlhdGVQcm9taXNlID0gdGhpcy5yZXF1ZXN0RmV0Y2goZW50cnksIHBhcmFtZXRlcnMsIGZl
dGNoZXIpLnRoZW4oKHNvdXJjZSkgPT4geworICAgICAgICB2YXIga2V5ID0gZW50cnkua2V5Owor
ICAgICAgICB2YXIgbW9kdWxlUmVjb3JkID0gdGhpcy5wYXJzZU1vZHVsZShrZXksIHNvdXJjZSk7
CiAKICAgICAgICAgLy8gRklYTUU6IERlc2NyaWJlZCBpbiB0aGUgZHJhZnQsCiAgICAgICAgIC8v
ICAgNC4gRnVsZmlsbCBlbnRyeS5bW0luc3RhbnRpYXRlXV0gd2l0aCBpbnN0YW5jZS4KQEAgLTE4
NCwxOCArMTg0LDE1IEBAIGZ1bmN0aW9uIHJlcXVlc3RJbnN0YW50aWF0ZShrZXksIHBhcmFtZXRl
cnMsIGZldGNoZXIpCiAgICAgICAgIC8vIGZ1bGZpbGxlZCB3aXRob3V0IHRoaXMgImZvcmNlIGZ1
bGZpbGwiIG9wZXJhdGlvbi4KICAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3doYXR3Zy9s
b2FkZXIvcHVsbC82NwogCi0gICAgICAgIHZhciBkZXBlbmRlbmNpZXMgPSBbXTsKICAgICAgICAg
dmFyIGRlcGVuZGVuY2llc01hcCA9IG1vZHVsZVJlY29yZC5kZXBlbmRlbmNpZXNNYXA7Ci0gICAg
ICAgIG1vZHVsZVJlY29yZC5yZWdpc3RyeUVudHJ5ID0gZW50cnk7CiAgICAgICAgIHZhciByZXF1
ZXN0ZWRNb2R1bGVzID0gdGhpcy5yZXF1ZXN0ZWRNb2R1bGVzKG1vZHVsZVJlY29yZCk7CisgICAg
ICAgIHZhciBkZXBlbmRlbmNpZXMgPSBAbmV3QXJyYXlXaXRoU2l6ZShyZXF1ZXN0ZWRNb2R1bGVz
Lmxlbmd0aCk7CiAgICAgICAgIGZvciAodmFyIGkgPSAwLCBsZW5ndGggPSByZXF1ZXN0ZWRNb2R1
bGVzLmxlbmd0aDsgaSA8IGxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICB2YXIgZGVwS2V5ID0g
cmVxdWVzdGVkTW9kdWxlc1tpXTsKLSAgICAgICAgICAgIHZhciBwYWlyID0gewotICAgICAgICAg
ICAgICAgIGtleTogZGVwS2V5LAotICAgICAgICAgICAgICAgIHZhbHVlOiBAdW5kZWZpbmVkCi0g
ICAgICAgICAgICB9OwotICAgICAgICAgICAgQHB1dEJ5VmFsRGlyZWN0KGRlcGVuZGVuY2llcywg
ZGVwZW5kZW5jaWVzLmxlbmd0aCwgcGFpcik7Ci0gICAgICAgICAgICBkZXBlbmRlbmNpZXNNYXAu
QHNldChkZXBLZXksIHBhaXIpOworICAgICAgICAgICAgdmFyIGRlcE5hbWUgPSByZXF1ZXN0ZWRN
b2R1bGVzW2ldOworICAgICAgICAgICAgdmFyIGRlcEtleSA9IHRoaXMucmVzb2x2ZVN5bmMoZGVw
TmFtZSwga2V5LCBmZXRjaGVyKTsKKyAgICAgICAgICAgIHZhciBkZXBFbnRyeSA9IHRoaXMuZW5z
dXJlUmVnaXN0ZXJlZChkZXBLZXkpOworICAgICAgICAgICAgQHB1dEJ5VmFsRGlyZWN0KGRlcGVu
ZGVuY2llcywgaSwgZGVwRW50cnkpOworICAgICAgICAgICAgZGVwZW5kZW5jaWVzTWFwLkBzZXQo
ZGVwTmFtZSwgZGVwRW50cnkpOwogICAgICAgICB9CiAgICAgICAgIGVudHJ5LmRlcGVuZGVuY2ll
cyA9IGRlcGVuZGVuY2llczsKICAgICAgICAgZW50cnkuZGVwZW5kZW5jaWVzTWFwID0gZGVwZW5k
ZW5jaWVzTWFwOwpAQCAtMjA3LDUyICsyMDQsMzcgQEAgZnVuY3Rpb24gcmVxdWVzdEluc3RhbnRp
YXRlKGtleSwgcGFyYW1ldGVycywgZmV0Y2hlcikKICAgICByZXR1cm4gaW5zdGFudGlhdGVQcm9t
aXNlOwogfQogCi1mdW5jdGlvbiByZXF1ZXN0U2F0aXNmeShrZXksIHBhcmFtZXRlcnMsIGZldGNo
ZXIpCitmdW5jdGlvbiByZXF1ZXN0U2F0aXNmeShlbnRyeSwgcGFyYW1ldGVycywgZmV0Y2hlcikK
IHsKICAgICAvLyBodHRwczovL3doYXR3Zy5naXRodWIuaW8vbG9hZGVyLyNzYXRpc2Z5LWluc3Rh
bmNlCiAKICAgICAidXNlIHN0cmljdCI7CiAKLSAgICB2YXIgZW50cnkgPSB0aGlzLmVuc3VyZVJl
Z2lzdGVyZWQoa2V5KTsKICAgICBpZiAoZW50cnkuc2F0aXNmeSkKICAgICAgICAgcmV0dXJuIGVu
dHJ5LnNhdGlzZnk7CiAKLSAgICB2YXIgc2F0aXNmeVByb21pc2UgPSB0aGlzLnJlcXVlc3RJbnN0
YW50aWF0ZShrZXksIHBhcmFtZXRlcnMsIGZldGNoZXIpLnRoZW4oKGVudHJ5KSA9PiB7Ci0gICAg
ICAgIHZhciBkZXBMb2FkcyA9IFtdOworICAgIHZhciBzYXRpc2Z5UHJvbWlzZSA9IHRoaXMucmVx
dWVzdEluc3RhbnRpYXRlKGVudHJ5LCBwYXJhbWV0ZXJzLCBmZXRjaGVyKS50aGVuKChlbnRyeSkg
PT4geworICAgICAgICB2YXIgZGVwTG9hZHMgPSBAbmV3QXJyYXlXaXRoU2l6ZShlbnRyeS5kZXBl
bmRlbmNpZXMubGVuZ3RoKTsKICAgICAgICAgZm9yICh2YXIgaSA9IDAsIGxlbmd0aCA9IGVudHJ5
LmRlcGVuZGVuY2llcy5sZW5ndGg7IGkgPCBsZW5ndGg7ICsraSkgewotICAgICAgICAgICAgbGV0
IHBhaXIgPSBlbnRyeS5kZXBlbmRlbmNpZXNbaV07Ci0KLSAgICAgICAgICAgIC8vIEhvb2sgcG9p
bnQuCi0gICAgICAgICAgICAvLyAxLiBMb2FkZXIucmVzb2x2ZS4KLSAgICAgICAgICAgIC8vICAg
ICBodHRwczovL3doYXR3Zy5naXRodWIuaW8vbG9hZGVyLyNicm93c2VyLXJlc29sdmUKLSAgICAg
ICAgICAgIC8vICAgICBUYWtlIHRoZSBuYW1lIGFuZCByZXNvbHZlIGl0IHRvIHRoZSB1bmlxdWUg
aWRlbnRpZmllciBmb3IgdGhlIHJlc291cmNlIGxvY2F0aW9uLgotICAgICAgICAgICAgLy8gICAg
IEZvciBleGFtcGxlLCB0YWtlIHRoZSAianF1ZXJ5IiBhbmQgcmV0dXJuIHRoZSBVUkwgZm9yIHRo
ZSByZXNvdXJjZS4KLSAgICAgICAgICAgIHZhciBwcm9taXNlID0gdGhpcy5yZXNvbHZlKHBhaXIu
a2V5LCBrZXksIGZldGNoZXIpLnRoZW4oKGRlcEtleSkgPT4gewotICAgICAgICAgICAgICAgIHZh
ciBkZXBFbnRyeSA9IHRoaXMuZW5zdXJlUmVnaXN0ZXJlZChkZXBLZXkpOwotCi0gICAgICAgICAg
ICAgICAgLy8gUmVjdXJzaXZlIHJlc29sdmluZy4gVGhlIGRlcGVuZGVuY2llcyBvZiB0aGlzIGVu
dHJ5IGlzIGJlaW5nIHJlc29sdmVkIG9yIGFscmVhZHkgcmVzb2x2ZWQuCi0gICAgICAgICAgICAg
ICAgLy8gU3RvcCB0cmFjaW5nIHRoZSBjaXJjdWxhciBkZXBlbmRlbmNpZXMuCi0gICAgICAgICAg
ICAgICAgLy8gQnV0IHRvIHJldHJpZXZlIHRoZSBpbnN0YW50aWF0ZWQgbW9kdWxlIHJlY29yZCBj
b3JyZWN0bHksCi0gICAgICAgICAgICAgICAgLy8gd2UgbmVlZCB0byB3YWl0IGZvciB0aGUgaW5z
dGFudGlhdGlvbiBmb3IgdGhlIGRlcGVuZGVudCBtb2R1bGUuCi0gICAgICAgICAgICAgICAgLy8g
Rm9yIGV4YW1wbGUsIHJlYWNoaW5nIGhlcmUsIHRoZSBtb2R1bGUgaXMgc3RhcnRpbmcgcmVzb2x2
aW5nIHRoZSBkZXBlbmRlbmNpZXMuCi0gICAgICAgICAgICAgICAgLy8gQnV0IHRoZSBtb2R1bGUg
bWF5IG9yIG1heSBub3QgcmVhY2ggdGhlIGluc3RhbnRpYXRpb24gcGhhc2UgaW4gdGhlIGxvYWRl
cidzIHBpcGVsaW5lLgotICAgICAgICAgICAgICAgIC8vIElmIHdlIHdhaXQgZm9yIHRoZSBTYXRp
c2Z5IGZvciB0aGlzIG1vZHVsZSwgaXQgY29uc3RydWN0IHRoZSBjaXJjdWxhciBwcm9taXNlIGNo
YWluIGFuZAotICAgICAgICAgICAgICAgIC8vIHJlamVjdGVkIGJ5IHRoZSBQcm9taXNlcyBydW50
aW1lLiBTaW5jZSBvbmx5IHdlIG5lZWQgaXMgdGhlIGluc3RhbnRpYXRlZCBtb2R1bGUsIGluc3Rl
YWQgb2Ygd2FpdGluZwotICAgICAgICAgICAgICAgIC8vIHRoZSBTYXRpc2Z5IGZvciB0aGlzIG1v
ZHVsZSwgd2UganVzdCB3YWl0IEluc3RhbnRpYXRlIGZvciB0aGlzLgotICAgICAgICAgICAgICAg
IGlmIChkZXBFbnRyeS5zYXRpc2Z5KSB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBkZXBF
bnRyeS5pbnN0YW50aWF0ZS50aGVuKChlbnRyeSkgPT4gewotICAgICAgICAgICAgICAgICAgICAg
ICAgcGFpci52YWx1ZSA9IGVudHJ5Lm1vZHVsZTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBlbnRyeTsKLSAgICAgICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICAgICAgfQot
CisgICAgICAgICAgICB2YXIgZGVwRW50cnkgPSBlbnRyeS5kZXBlbmRlbmNpZXNbaV07CisgICAg
ICAgICAgICB2YXIgcHJvbWlzZSA9IEB1bmRlZmluZWQ7CisKKyAgICAgICAgICAgIC8vIFJlY3Vy
c2l2ZSByZXNvbHZpbmcuIFRoZSBkZXBlbmRlbmNpZXMgb2YgdGhpcyBlbnRyeSBpcyBiZWluZyBy
ZXNvbHZlZCBvciBhbHJlYWR5IHJlc29sdmVkLgorICAgICAgICAgICAgLy8gU3RvcCB0cmFjaW5n
IHRoZSBjaXJjdWxhciBkZXBlbmRlbmNpZXMuCisgICAgICAgICAgICAvLyBCdXQgdG8gcmV0cmll
dmUgdGhlIGluc3RhbnRpYXRlZCBtb2R1bGUgcmVjb3JkIGNvcnJlY3RseSwKKyAgICAgICAgICAg
IC8vIHdlIG5lZWQgdG8gd2FpdCBmb3IgdGhlIGluc3RhbnRpYXRpb24gZm9yIHRoZSBkZXBlbmRl
bnQgbW9kdWxlLgorICAgICAgICAgICAgLy8gRm9yIGV4YW1wbGUsIHJlYWNoaW5nIGhlcmUsIHRo
ZSBtb2R1bGUgaXMgc3RhcnRpbmcgcmVzb2x2aW5nIHRoZSBkZXBlbmRlbmNpZXMuCisgICAgICAg
ICAgICAvLyBCdXQgdGhlIG1vZHVsZSBtYXkgb3IgbWF5IG5vdCByZWFjaCB0aGUgaW5zdGFudGlh
dGlvbiBwaGFzZSBpbiB0aGUgbG9hZGVyJ3MgcGlwZWxpbmUuCisgICAgICAgICAgICAvLyBJZiB3
ZSB3YWl0IGZvciB0aGUgU2F0aXNmeSBmb3IgdGhpcyBtb2R1bGUsIGl0IGNvbnN0cnVjdCB0aGUg
Y2lyY3VsYXIgcHJvbWlzZSBjaGFpbiBhbmQKKyAgICAgICAgICAgIC8vIHJlamVjdGVkIGJ5IHRo
ZSBQcm9taXNlcyBydW50aW1lLiBTaW5jZSBvbmx5IHdlIG5lZWQgaXMgdGhlIGluc3RhbnRpYXRl
ZCBtb2R1bGUsIGluc3RlYWQgb2Ygd2FpdGluZworICAgICAgICAgICAgLy8gdGhlIFNhdGlzZnkg
Zm9yIHRoaXMgbW9kdWxlLCB3ZSBqdXN0IHdhaXQgSW5zdGFudGlhdGUgZm9yIHRoaXMuCisgICAg
ICAgICAgICBpZiAoZGVwRW50cnkuc2F0aXNmeSkKKyAgICAgICAgICAgICAgICBwcm9taXNlID0g
ZGVwRW50cnkuaW5zdGFudGlhdGU7CisgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAg
ICAvLyBDdXJyZW50bHksIG1vZHVsZSBsb2FkZXIgZG8gbm90IHBhc3MgYW55IGluZm9ybWF0aW9u
IGZvciBub24tdG9wLWxldmVsIG1vZHVsZSBmZXRjaGluZy4KLSAgICAgICAgICAgICAgICByZXR1
cm4gdGhpcy5yZXF1ZXN0U2F0aXNmeShkZXBLZXksIEB1bmRlZmluZWQsIGZldGNoZXIpLnRoZW4o
KGVudHJ5KSA9PiB7Ci0gICAgICAgICAgICAgICAgICAgIHBhaXIudmFsdWUgPSBlbnRyeS5tb2R1
bGU7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBlbnRyeTsKLSAgICAgICAgICAgICAgICB9
KTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgQHB1dEJ5VmFsRGlyZWN0KGRlcExvYWRz
LCBkZXBMb2Fkcy5sZW5ndGgsIHByb21pc2UpOworICAgICAgICAgICAgICAgIHByb21pc2UgPSB0
aGlzLnJlcXVlc3RTYXRpc2Z5KGRlcEVudHJ5LCBAdW5kZWZpbmVkLCBmZXRjaGVyKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIEBwdXRCeVZhbERpcmVjdChkZXBMb2FkcywgaSwgcHJvbWlz
ZSk7CiAgICAgICAgIH0KIAogICAgICAgICByZXR1cm4gQEludGVybmFsUHJvbWlzZS5pbnRlcm5h
bEFsbChkZXBMb2FkcykudGhlbigobW9kdWxlcykgPT4gewpAQCAtMjg0LDEwICsyNjYsOCBAQCBm
dW5jdGlvbiBsaW5rKGVudHJ5LCBmZXRjaGVyKQogICAgICAgICAvLyB3ZSBjYW4gY2FsbCBtb2R1
bGVEZWNsYXJhdGlvbkluc3RhbnRpYXRpb24gd2l0aCB0aGUgY29ycmVjdCBvcmRlcgogICAgICAg
ICAvLyB3aXRob3V0IGNvbnN0cnVjdGluZyB0aGUgZGVwZW5kZW5jeSBncmFwaCBieSBjYWxsaW5n
IGRlcGVuZGVuY3lHcmFwaC4KICAgICAgICAgdmFyIGRlcGVuZGVuY2llcyA9IGVudHJ5LmRlcGVu
ZGVuY2llczsKLSAgICAgICAgZm9yICh2YXIgaSA9IDAsIGxlbmd0aCA9IGRlcGVuZGVuY2llcy5s
ZW5ndGg7IGkgPCBsZW5ndGg7ICsraSkgewotICAgICAgICAgICAgdmFyIHBhaXIgPSBkZXBlbmRl
bmNpZXNbaV07Ci0gICAgICAgICAgICB0aGlzLmxpbmsocGFpci52YWx1ZS5yZWdpc3RyeUVudHJ5
LCBmZXRjaGVyKTsKLSAgICAgICAgfQorICAgICAgICBmb3IgKHZhciBpID0gMCwgbGVuZ3RoID0g
ZGVwZW5kZW5jaWVzLmxlbmd0aDsgaSA8IGxlbmd0aDsgKytpKQorICAgICAgICAgICAgdGhpcy5s
aW5rKGRlcGVuZGVuY2llc1tpXSwgZmV0Y2hlcik7CiAKICAgICAgICAgdGhpcy5tb2R1bGVEZWNs
YXJhdGlvbkluc3RhbnRpYXRpb24oZW50cnkubW9kdWxlLCBlbnRyeS5rZXksIGZldGNoZXIpOwog
ICAgIH0gY2F0Y2ggKGVycm9yKSB7CkBAIC0yOTksMjYgKzI3OSwyMiBAQCBmdW5jdGlvbiBsaW5r
KGVudHJ5LCBmZXRjaGVyKQogCiAvLyBNb2R1bGUgc2VtYW50aWNzLgogCi1mdW5jdGlvbiBtb2R1
bGVFdmFsdWF0aW9uKG1vZHVsZVJlY29yZCwgZmV0Y2hlcikKK2Z1bmN0aW9uIG1vZHVsZUV2YWx1
YXRpb24oZW50cnksIGZldGNoZXIpCiB7CiAgICAgLy8gaHR0cDovL3d3dy5lY21hLWludGVybmF0
aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLW1vZHVsZWV2YWx1YXRpb24KIAogICAgICJ1c2Ug
c3RyaWN0IjsKIAotICAgIGlmIChtb2R1bGVSZWNvcmQuZXZhbHVhdGVkKQorICAgIGlmIChlbnRy
eS5ldmFsdWF0ZWQpCiAgICAgICAgIHJldHVybjsKLSAgICBtb2R1bGVSZWNvcmQuZXZhbHVhdGVk
ID0gdHJ1ZTsKLQotICAgIHZhciBlbnRyeSA9IG1vZHVsZVJlY29yZC5yZWdpc3RyeUVudHJ5Owor
ICAgIGVudHJ5LmV2YWx1YXRlZCA9IHRydWU7CiAKICAgICAvLyBUaGUgY29udGVudHMgb2YgdGhl
IFtbUmVxdWVzdGVkTW9kdWxlc11dIGlzIGNsb25lZCBpbnRvIGVudHJ5LmRlcGVuZGVuY2llcy4K
ICAgICB2YXIgZGVwZW5kZW5jaWVzID0gZW50cnkuZGVwZW5kZW5jaWVzOwotICAgIGZvciAodmFy
IGkgPSAwLCBsZW5ndGggPSBkZXBlbmRlbmNpZXMubGVuZ3RoOyBpIDwgbGVuZ3RoOyArK2kpIHsK
LSAgICAgICAgdmFyIHBhaXIgPSBkZXBlbmRlbmNpZXNbaV07Ci0gICAgICAgIHZhciByZXF1aXJl
ZE1vZHVsZVJlY29yZCA9IHBhaXIudmFsdWU7Ci0gICAgICAgIHRoaXMubW9kdWxlRXZhbHVhdGlv
bihyZXF1aXJlZE1vZHVsZVJlY29yZCwgZmV0Y2hlcik7Ci0gICAgfQotICAgIHRoaXMuZXZhbHVh
dGUoZW50cnkua2V5LCBtb2R1bGVSZWNvcmQsIGZldGNoZXIpOworICAgIGZvciAodmFyIGkgPSAw
LCBsZW5ndGggPSBkZXBlbmRlbmNpZXMubGVuZ3RoOyBpIDwgbGVuZ3RoOyArK2kpCisgICAgICAg
IHRoaXMubW9kdWxlRXZhbHVhdGlvbihkZXBlbmRlbmNpZXNbaV0sIGZldGNoZXIpOworCisgICAg
dGhpcy5ldmFsdWF0ZShlbnRyeS5rZXksIGVudHJ5Lm1vZHVsZSwgZmV0Y2hlcik7CiB9CiAKIC8v
IEFQSXMgdG8gY29udHJvbCB0aGUgbW9kdWxlIGxvYWRlci4KQEAgLTM0Myw3ICszMTksNyBAQCBm
dW5jdGlvbiBsb2FkTW9kdWxlKG1vZHVsZU5hbWUsIHBhcmFtZXRlcnMsIGZldGNoZXIpCiAgICAg
Ly8gVGFrZSB0aGUgbmFtZSBhbmQgcmVzb2x2ZSBpdCB0byB0aGUgdW5pcXVlIGlkZW50aWZpZXIg
Zm9yIHRoZSByZXNvdXJjZSBsb2NhdGlvbi4KICAgICAvLyBGb3IgZXhhbXBsZSwgdGFrZSB0aGUg
ImpxdWVyeSIgYW5kIHJldHVybiB0aGUgVVJMIGZvciB0aGUgcmVzb3VyY2UuCiAgICAgcmV0dXJu
IHRoaXMucmVzb2x2ZShtb2R1bGVOYW1lLCBAdW5kZWZpbmVkLCBmZXRjaGVyKS50aGVuKChrZXkp
ID0+IHsKLSAgICAgICAgcmV0dXJuIHRoaXMucmVxdWVzdFNhdGlzZnkoa2V5LCBwYXJhbWV0ZXJz
LCBmZXRjaGVyKTsKKyAgICAgICAgcmV0dXJuIHRoaXMucmVxdWVzdFNhdGlzZnkodGhpcy5lbnN1
cmVSZWdpc3RlcmVkKGtleSksIHBhcmFtZXRlcnMsIGZldGNoZXIpOwogICAgIH0pLnRoZW4oKGVu
dHJ5KSA9PiB7CiAgICAgICAgIHJldHVybiBlbnRyeS5rZXk7CiAgICAgfSk7CkBAIC0zNTgsNyAr
MzM0LDcgQEAgZnVuY3Rpb24gbGlua0FuZEV2YWx1YXRlTW9kdWxlKGtleSwgZmV0Y2hlcikKICAg
ICAgICAgQHRocm93VHlwZUVycm9yKCJSZXF1ZXN0ZWQgbW9kdWxlIGlzIG5vdCBpbnN0YW50aWF0
ZWQgeWV0LiIpOwogCiAgICAgdGhpcy5saW5rKGVudHJ5LCBmZXRjaGVyKTsKLSAgICByZXR1cm4g
dGhpcy5tb2R1bGVFdmFsdWF0aW9uKGVudHJ5Lm1vZHVsZSwgZmV0Y2hlcik7CisgICAgcmV0dXJu
IHRoaXMubW9kdWxlRXZhbHVhdGlvbihlbnRyeSwgZmV0Y2hlcik7CiB9CiAKIGZ1bmN0aW9uIGxv
YWRBbmRFdmFsdWF0ZU1vZHVsZShtb2R1bGVOYW1lLCBwYXJhbWV0ZXJzLCBmZXRjaGVyKQpAQCAt
Mzc0LDcgKzM1MCw3IEBAIGZ1bmN0aW9uIHJlcXVlc3RJbXBvcnRNb2R1bGUoa2V5LCBwYXJhbWV0
ZXJzLCBmZXRjaGVyKQogewogICAgICJ1c2Ugc3RyaWN0IjsKIAotICAgIHJldHVybiB0aGlzLnJl
cXVlc3RTYXRpc2Z5KGtleSwgcGFyYW1ldGVycywgZmV0Y2hlcikudGhlbigoZW50cnkpID0+IHsK
KyAgICByZXR1cm4gdGhpcy5yZXF1ZXN0U2F0aXNmeSh0aGlzLmVuc3VyZVJlZ2lzdGVyZWQoa2V5
KSwgcGFyYW1ldGVycywgZmV0Y2hlcikudGhlbigoZW50cnkpID0+IHsKICAgICAgICAgdGhpcy5s
aW5rQW5kRXZhbHVhdGVNb2R1bGUoZW50cnkua2V5LCBmZXRjaGVyKTsKICAgICAgICAgcmV0dXJu
IHRoaXMuZ2V0TW9kdWxlTmFtZXNwYWNlT2JqZWN0KGVudHJ5Lm1vZHVsZSk7CiAgICAgfSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qc2MuY3BwCmluZGV4IGI1NmU3NzZmZGZhZmE4Y2Q4YjAzMTIxNmZiNDQ2MDcwMjU1
OTU2ZTguLmQzZWUyOGRiY2QxYTlmYzQ2NjFkMzc3YjUyODllZTk4ODljYzQxMWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qc2MuY3BwCkBAIC0xNjU4LDcgKzE2NTgsNyBAQCBjbGFzcyBHbG9iYWxPYmplY3QgOiBw
dWJsaWMgSlNHbG9iYWxPYmplY3QgewogICAgIH0KIAogICAgIHN0YXRpYyBKU0ludGVybmFsUHJv
bWlzZSogbW9kdWxlTG9hZGVySW1wb3J0TW9kdWxlKEpTR2xvYmFsT2JqZWN0KiwgRXhlY1N0YXRl
KiwgSlNNb2R1bGVMb2FkZXIqLCBKU1N0cmluZyosIEpTVmFsdWUsIGNvbnN0IFNvdXJjZU9yaWdp
biYpOwotICAgIHN0YXRpYyBKU0ludGVybmFsUHJvbWlzZSogbW9kdWxlTG9hZGVyUmVzb2x2ZShK
U0dsb2JhbE9iamVjdCosIEV4ZWNTdGF0ZSosIEpTTW9kdWxlTG9hZGVyKiwgSlNWYWx1ZSwgSlNW
YWx1ZSwgSlNWYWx1ZSk7CisgICAgc3RhdGljIElkZW50aWZpZXIgbW9kdWxlTG9hZGVyUmVzb2x2
ZShKU0dsb2JhbE9iamVjdCosIEV4ZWNTdGF0ZSosIEpTTW9kdWxlTG9hZGVyKiwgSlNWYWx1ZSwg
SlNWYWx1ZSwgSlNWYWx1ZSk7CiAgICAgc3RhdGljIEpTSW50ZXJuYWxQcm9taXNlKiBtb2R1bGVM
b2FkZXJGZXRjaChKU0dsb2JhbE9iamVjdCosIEV4ZWNTdGF0ZSosIEpTTW9kdWxlTG9hZGVyKiwg
SlNWYWx1ZSwgSlNWYWx1ZSwgSlNWYWx1ZSk7CiAgICAgc3RhdGljIEpTT2JqZWN0KiBtb2R1bGVM
b2FkZXJDcmVhdGVJbXBvcnRNZXRhUHJvcGVydGllcyhKU0dsb2JhbE9iamVjdCosIEV4ZWNTdGF0
ZSosIEpTTW9kdWxlTG9hZGVyKiwgSlNWYWx1ZSwgSlNNb2R1bGVSZWNvcmQqLCBKU1ZhbHVlKTsK
IH07CkBAIC0xODQwLDU3ICsxODQwLDQ2IEBAIEpTSW50ZXJuYWxQcm9taXNlKiBHbG9iYWxPYmpl
Y3Q6Om1vZHVsZUxvYWRlckltcG9ydE1vZHVsZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsCiAgICAg
cmV0dXJuIHJlc3VsdDsKIH0KIAotSlNJbnRlcm5hbFByb21pc2UqIEdsb2JhbE9iamVjdDo6bW9k
dWxlTG9hZGVyUmVzb2x2ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFeGVjU3RhdGUq
IGV4ZWMsIEpTTW9kdWxlTG9hZGVyKiwgSlNWYWx1ZSBrZXlWYWx1ZSwgSlNWYWx1ZSByZWZlcnJl
clZhbHVlLCBKU1ZhbHVlKQorSWRlbnRpZmllciBHbG9iYWxPYmplY3Q6Om1vZHVsZUxvYWRlclJl
c29sdmUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBKU01v
ZHVsZUxvYWRlciosIEpTVmFsdWUga2V5VmFsdWUsIEpTVmFsdWUgcmVmZXJyZXJWYWx1ZSwgSlNW
YWx1ZSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7Ci0gICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfQ0FUQ0hfU0NPUEUodm0pOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKIAotICAgIEpTSW50ZXJuYWxQcm9taXNlRGVmZXJyZWQqIGRlZmVycmVk
ID0gSlNJbnRlcm5hbFByb21pc2VEZWZlcnJlZDo6Y3JlYXRlKGV4ZWMsIGdsb2JhbE9iamVjdCk7
CiAgICAgc2NvcGUucmVsZWFzZUFzc2VydE5vRXhjZXB0aW9uKCk7CiAgICAgY29uc3QgSWRlbnRp
ZmllciBrZXkgPSBrZXlWYWx1ZS50b1Byb3BlcnR5S2V5KGV4ZWMpOwotICAgIGlmIChVTkxJS0VM
WShzY29wZS5leGNlcHRpb24oKSkpIHsKLSAgICAgICAgSlNWYWx1ZSBleGNlcHRpb24gPSBzY29w
ZS5leGNlcHRpb24oKTsKLSAgICAgICAgc2NvcGUuY2xlYXJFeGNlcHRpb24oKTsKLSAgICAgICAg
cmV0dXJuIGRlZmVycmVkLT5yZWplY3QoZXhlYywgZXhjZXB0aW9uKTsKLSAgICB9CisgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIGlmIChrZXkuaXNTeW1ib2woKSkK
KyAgICAgICAgcmV0dXJuIGtleTsKIAotICAgIGlmIChrZXkuaXNTeW1ib2woKSkgewotICAgICAg
ICBhdXRvIHJlc3VsdCA9IGRlZmVycmVkLT5yZXNvbHZlKGV4ZWMsIGtleVZhbHVlKTsKLSAgICAg
ICAgc2NvcGUucmVsZWFzZUFzc2VydE5vRXhjZXB0aW9uKCk7Ci0gICAgICAgIHJldHVybiByZXN1
bHQ7Ci0gICAgfQogICAgIGlmIChyZWZlcnJlclZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKICAgICAg
ICAgYXV0byBkaXJlY3RvcnlOYW1lID0gY3VycmVudFdvcmtpbmdEaXJlY3RvcnkoKTsKLSAgICAg
ICAgaWYgKCFkaXJlY3RvcnlOYW1lKQotICAgICAgICAgICAgcmV0dXJuIGRlZmVycmVkLT5yZWpl
Y3QoZXhlYywgY3JlYXRlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJDb3VsZCBub3QgcmVzb2x2
ZSB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeS4iKSkpOwotICAgICAgICBhdXRvIHJlc3Vs
dCA9IGRlZmVycmVkLT5yZXNvbHZlKGV4ZWMsIGpzU3RyaW5nKGV4ZWMsIHJlc29sdmVQYXRoKGRp
cmVjdG9yeU5hbWUudmFsdWUoKSwgTW9kdWxlTmFtZShrZXkuaW1wbCgpKSkpKTsKLSAgICAgICAg
c2NvcGUucmVsZWFzZUFzc2VydE5vRXhjZXB0aW9uKCk7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7
CisgICAgICAgIGlmICghZGlyZWN0b3J5TmFtZSkgeworICAgICAgICAgICAgdGhyb3dFeGNlcHRp
b24oZXhlYywgc2NvcGUsIGNyZWF0ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQ291bGQgbm90
IHJlc29sdmUgdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkuIikpKTsKKyAgICAgICAgICAg
IHJldHVybiB7IH07CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIElkZW50aWZpZXI6OmZyb21T
dHJpbmcoJnZtLCByZXNvbHZlUGF0aChkaXJlY3RvcnlOYW1lLnZhbHVlKCksIE1vZHVsZU5hbWUo
a2V5LmltcGwoKSkpKTsKICAgICB9CiAKICAgICBjb25zdCBJZGVudGlmaWVyIHJlZmVycmVyID0g
cmVmZXJyZXJWYWx1ZS50b1Byb3BlcnR5S2V5KGV4ZWMpOwotICAgIGlmIChVTkxJS0VMWShzY29w
ZS5leGNlcHRpb24oKSkpIHsKLSAgICAgICAgSlNWYWx1ZSBleGNlcHRpb24gPSBzY29wZS5leGNl
cHRpb24oKTsKLSAgICAgICAgc2NvcGUuY2xlYXJFeGNlcHRpb24oKTsKLSAgICAgICAgcmV0dXJu
IGRlZmVycmVkLT5yZWplY3QoZXhlYywgZXhjZXB0aW9uKTsKLSAgICB9CisgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgeyB9KTsKIAogICAgIGlmIChyZWZlcnJlci5pc1N5bWJvbCgpKSB7
CiAgICAgICAgIGF1dG8gZGlyZWN0b3J5TmFtZSA9IGN1cnJlbnRXb3JraW5nRGlyZWN0b3J5KCk7
Ci0gICAgICAgIGlmICghZGlyZWN0b3J5TmFtZSkKLSAgICAgICAgICAgIHJldHVybiBkZWZlcnJl
ZC0+cmVqZWN0KGV4ZWMsIGNyZWF0ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQ291bGQgbm90
IHJlc29sdmUgdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkuIikpKTsKLSAgICAgICAgYXV0
byByZXN1bHQgPSBkZWZlcnJlZC0+cmVzb2x2ZShleGVjLCBqc1N0cmluZyhleGVjLCByZXNvbHZl
UGF0aChkaXJlY3RvcnlOYW1lLnZhbHVlKCksIE1vZHVsZU5hbWUoa2V5LmltcGwoKSkpKSk7Ci0g
ICAgICAgIHNjb3BlLnJlbGVhc2VBc3NlcnROb0V4Y2VwdGlvbigpOwotICAgICAgICByZXR1cm4g
cmVzdWx0OworICAgICAgICBpZiAoIWRpcmVjdG9yeU5hbWUpIHsKKyAgICAgICAgICAgIHRocm93
RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkNv
dWxkIG5vdCByZXNvbHZlIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5LiIpKSk7CisgICAg
ICAgICAgICByZXR1cm4geyB9OworICAgICAgICB9CisgICAgICAgIHJldHVybiBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKCZ2bSwgcmVzb2x2ZVBhdGgoZGlyZWN0b3J5TmFtZS52YWx1ZSgpLCBNb2R1
bGVOYW1lKGtleS5pbXBsKCkpKSk7CiAgICAgfQogCiAgICAgLy8gSWYgdGhlIHJlZmVycmVyIGV4
aXN0cywgd2UgYXNzdW1lIHRoYXQgdGhlIHJlZmVycmVyIGlzIHRoZSBjb3JyZWN0IGFic29sdXRl
IHBhdGguCiAgICAgYXV0byBkaXJlY3RvcnlOYW1lID0gZXh0cmFjdERpcmVjdG9yeU5hbWUocmVm
ZXJyZXIuaW1wbCgpKTsKLSAgICBpZiAoIWRpcmVjdG9yeU5hbWUpCi0gICAgICAgIHJldHVybiBk
ZWZlcnJlZC0+cmVqZWN0KGV4ZWMsIGNyZWF0ZUVycm9yKGV4ZWMsIG1ha2VTdHJpbmcoIkNvdWxk
IG5vdCByZXNvbHZlIHRoZSByZWZlcnJlciBuYW1lICciLCBTdHJpbmcocmVmZXJyZXIuaW1wbCgp
KSwgIicuIikpKTsKLSAgICBhdXRvIHJlc3VsdCA9IGRlZmVycmVkLT5yZXNvbHZlKGV4ZWMsIGpz
U3RyaW5nKGV4ZWMsIHJlc29sdmVQYXRoKGRpcmVjdG9yeU5hbWUudmFsdWUoKSwgTW9kdWxlTmFt
ZShrZXkuaW1wbCgpKSkpKTsKLSAgICBzY29wZS5yZWxlYXNlQXNzZXJ0Tm9FeGNlcHRpb24oKTsK
LSAgICByZXR1cm4gcmVzdWx0OworICAgIGlmICghZGlyZWN0b3J5TmFtZSkgeworICAgICAgICB0
aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRlRXJyb3IoZXhlYywgbWFrZVN0cmluZygi
Q291bGQgbm90IHJlc29sdmUgdGhlIHJlZmVycmVyIG5hbWUgJyIsIFN0cmluZyhyZWZlcnJlci5p
bXBsKCkpLCAiJy4iKSkpOworICAgICAgICByZXR1cm4geyB9OworICAgIH0KKyAgICByZXR1cm4g
SWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sIHJlc29sdmVQYXRoKGRpcmVjdG9yeU5hbWUudmFs
dWUoKSwgTW9kdWxlTmFtZShrZXkuaW1wbCgpKSkpOwogfQogCiBzdGF0aWMgdm9pZCBjb252ZXJ0
U2hlYmFuZ1RvSlNDb21tZW50KFZlY3RvcjxjaGFyPiYgYnVmZmVyKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQWJzdHJhY3RNb2R1bGVSZWNvcmQuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQWJzdHJhY3RNb2R1bGVSZWNvcmQuY3BwCmluZGV4
IGIwM2FjZTJhNzM3NzI0ZmQ4YzYwYzhhYjQ5NzU0MTAxMzliZTRjZDcuLmM1ZTMzZGM4NTM2Mjli
OThiZjFkNGM2MDhhMTc4ZjI0NGQ4ZGE5OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0Fic3RyYWN0TW9kdWxlUmVjb3JkLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9BYnN0cmFjdE1vZHVsZVJlY29yZC5jcHAKQEAgLTU0LDggKzU0LDYg
QEAgdm9pZCBBYnN0cmFjdE1vZHVsZVJlY29yZDo6ZmluaXNoQ3JlYXRpb24oRXhlY1N0YXRlKiBl
eGVjLCBWTSYgdm0pCiB7CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwogICAgIEFTU0VS
VChpbmhlcml0cyh2bSwgaW5mbygpKSk7Ci0gICAgcHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKCZ2bSwgQVNDSUlMaXRlcmFsKCJyZWdpc3RyeUVudHJ5IikpLCBqc1VuZGVmaW5l
ZCgpKTsKLSAgICBwdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCBBU0NJ
SUxpdGVyYWwoImV2YWx1YXRlZCIpKSwganNCb29sZWFuKGZhbHNlKSk7CiAKICAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgSlNNYXAqIG1hcCA9IEpTTWFwOjpj
cmVhdGUoZXhlYywgdm0sIGdsb2JhbE9iamVjdCgpLT5tYXBTdHJ1Y3R1cmUoKSk7CkBAIC0xNDks
MTAgKzE0NywxMCBAQCBBYnN0cmFjdE1vZHVsZVJlY29yZCogQWJzdHJhY3RNb2R1bGVSZWNvcmQ6
Omhvc3RSZXNvbHZlSW1wb3J0ZWRNb2R1bGUoRXhlY1N0YXRlKgogICAgIFZNJiB2bSA9IGV4ZWMt
PnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIEpT
VmFsdWUgbW9kdWxlTmFtZVZhbHVlID0gaWRlbnRpZmllclRvSlNWYWx1ZShleGVjLCBtb2R1bGVO
YW1lKTsKLSAgICBKU1ZhbHVlIHBhaXIgPSBtX2RlcGVuZGVuY2llc01hcC0+SlNNYXA6OmdldChl
eGVjLCBtb2R1bGVOYW1lVmFsdWUpOworICAgIEpTVmFsdWUgZW50cnkgPSBtX2RlcGVuZGVuY2ll
c01hcC0+SlNNYXA6OmdldChleGVjLCBtb2R1bGVOYW1lVmFsdWUpOwogICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIG51bGxwdHIpOwogICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICByZXR1
cm4ganNDYXN0PEFic3RyYWN0TW9kdWxlUmVjb3JkKj4ocGFpci5nZXQoZXhlYywgSWRlbnRpZmll
cjo6ZnJvbVN0cmluZyhleGVjLCAidmFsdWUiKSkpOworICAgIHJldHVybiBqc0Nhc3Q8QWJzdHJh
Y3RNb2R1bGVSZWNvcmQqPihlbnRyeS5nZXQoZXhlYywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhl
eGVjLCAibW9kdWxlIikpKTsKIH0KIAogYXV0byBBYnN0cmFjdE1vZHVsZVJlY29yZDo6cmVzb2x2
ZUltcG9ydChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIGxvY2FsTmFtZSkgLT4g
UmVzb2x1dGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0LmgKaW5kZXggNGEyNTBiOTZjMTdkNTZlOTUwZWRmMTY1YjI0OTBkMDMzN2JlZTEwOC4uNzhk
NjExMjUzMmM2YTFiZWIwOTI1ZGQ5OTBhNzI1M2Y4ZGVkYjhjMiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCkBAIC0xODksNyArMTg5LDcgQEAg
c3RydWN0IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlIHsKICAgICB0eXBlZGVmIEpTSW50ZXJuYWxQ
cm9taXNlKiAoKk1vZHVsZUxvYWRlckltcG9ydE1vZHVsZVB0cikoSlNHbG9iYWxPYmplY3QqLCBF
eGVjU3RhdGUqLCBKU01vZHVsZUxvYWRlciosIEpTU3RyaW5nKiwgSlNWYWx1ZSwgY29uc3QgU291
cmNlT3JpZ2luJik7CiAgICAgTW9kdWxlTG9hZGVySW1wb3J0TW9kdWxlUHRyIG1vZHVsZUxvYWRl
ckltcG9ydE1vZHVsZTsKIAotICAgIHR5cGVkZWYgSlNJbnRlcm5hbFByb21pc2UqICgqTW9kdWxl
TG9hZGVyUmVzb2x2ZVB0cikoSlNHbG9iYWxPYmplY3QqLCBFeGVjU3RhdGUqLCBKU01vZHVsZUxv
YWRlciosIEpTVmFsdWUsIEpTVmFsdWUsIEpTVmFsdWUpOworICAgIHR5cGVkZWYgSWRlbnRpZmll
ciAoKk1vZHVsZUxvYWRlclJlc29sdmVQdHIpKEpTR2xvYmFsT2JqZWN0KiwgRXhlY1N0YXRlKiwg
SlNNb2R1bGVMb2FkZXIqLCBKU1ZhbHVlLCBKU1ZhbHVlLCBKU1ZhbHVlKTsKICAgICBNb2R1bGVM
b2FkZXJSZXNvbHZlUHRyIG1vZHVsZUxvYWRlclJlc29sdmU7CiAKICAgICB0eXBlZGVmIEpTSW50
ZXJuYWxQcm9taXNlKiAoKk1vZHVsZUxvYWRlckZldGNoUHRyKShKU0dsb2JhbE9iamVjdCosIEV4
ZWNTdGF0ZSosIEpTTW9kdWxlTG9hZGVyKiwgSlNWYWx1ZSwgSlNWYWx1ZSwgSlNWYWx1ZSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUxvYWRlci5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUxvYWRlci5jcHAKaW5k
ZXggNTBmNTE0ODBlODI4NjMzOTRlMDEzZGZmNzA4MWQ0NWY3Y2M5OGE4Ny4uOTg0MTYyYTZmYjE5
ZGRlZWU0OTJjODNjYjYyZDBmMzAzOWY1OTVjNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTTW9kdWxlTG9hZGVyLmNwcApAQCAtMjAyLDcgKzIwMiw3IEBAIEpTSW50
ZXJuYWxQcm9taXNlKiBKU01vZHVsZUxvYWRlcjo6aW1wb3J0TW9kdWxlKEV4ZWNTdGF0ZSogZXhl
YywgSlNTdHJpbmcqIG1vZHVsCiAgICAgcmV0dXJuIGRlZmVycmVkLT5wcm9taXNlKCk7CiB9CiAK
LUpTSW50ZXJuYWxQcm9taXNlKiBKU01vZHVsZUxvYWRlcjo6cmVzb2x2ZShFeGVjU3RhdGUqIGV4
ZWMsIEpTVmFsdWUgbmFtZSwgSlNWYWx1ZSByZWZlcnJlciwgSlNWYWx1ZSBzY3JpcHRGZXRjaGVy
KQorSWRlbnRpZmllciBKU01vZHVsZUxvYWRlcjo6cmVzb2x2ZVN5bmMoRXhlY1N0YXRlKiBleGVj
LCBKU1ZhbHVlIG5hbWUsIEpTVmFsdWUgcmVmZXJyZXIsIEpTVmFsdWUgc2NyaXB0RmV0Y2hlcikK
IHsKICAgICBpZiAoT3B0aW9uczo6ZHVtcE1vZHVsZUxvYWRpbmdTdGF0ZSgpKQogICAgICAgICBk
YXRhTG9nKCJMb2FkZXIgW3Jlc29sdmVdICIsIHByaW50YWJsZU1vZHVsZUtleShleGVjLCBuYW1l
KSwgIlxuIik7CkBAIC0yMTAsOSArMjEwLDI1IEBAIEpTSW50ZXJuYWxQcm9taXNlKiBKU01vZHVs
ZUxvYWRlcjo6cmVzb2x2ZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgbmFtZSwgSlNWYWx1CiAg
ICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmpl
Y3QoKTsKICAgICBpZiAoZ2xvYmFsT2JqZWN0LT5nbG9iYWxPYmplY3RNZXRob2RUYWJsZSgpLT5t
b2R1bGVMb2FkZXJSZXNvbHZlKQogICAgICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LT5nbG9iYWxP
YmplY3RNZXRob2RUYWJsZSgpLT5tb2R1bGVMb2FkZXJSZXNvbHZlKGdsb2JhbE9iamVjdCwgZXhl
YywgdGhpcywgbmFtZSwgcmVmZXJyZXIsIHNjcmlwdEZldGNoZXIpOwotICAgIEpTSW50ZXJuYWxQ
cm9taXNlRGVmZXJyZWQqIGRlZmVycmVkID0gSlNJbnRlcm5hbFByb21pc2VEZWZlcnJlZDo6Y3Jl
YXRlKGV4ZWMsIGdsb2JhbE9iamVjdCk7Ci0gICAgZGVmZXJyZWQtPnJlc29sdmUoZXhlYywgbmFt
ZSk7Ci0gICAgcmV0dXJuIGRlZmVycmVkLT5wcm9taXNlKCk7CisgICAgcmV0dXJuIG5hbWUudG9Q
cm9wZXJ0eUtleShleGVjKTsKK30KKworSlNJbnRlcm5hbFByb21pc2UqIEpTTW9kdWxlTG9hZGVy
OjpyZXNvbHZlKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBuYW1lLCBKU1ZhbHVlIHJlZmVycmVy
LCBKU1ZhbHVlIHNjcmlwdEZldGNoZXIpCit7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7CisKKyAgICBKU0ludGVybmFs
UHJvbWlzZURlZmVycmVkKiBkZWZlcnJlZCA9IEpTSW50ZXJuYWxQcm9taXNlRGVmZXJyZWQ6OmNy
ZWF0ZShleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpOworICAgIHNjb3BlLnJlbGVh
c2VBc3NlcnROb0V4Y2VwdGlvbigpOworICAgIGNvbnN0IElkZW50aWZpZXIgbW9kdWxlS2V5ID0g
cmVzb2x2ZVN5bmMoZXhlYywgbmFtZSwgcmVmZXJyZXIsIHNjcmlwdEZldGNoZXIpOworICAgIGlm
IChVTkxJS0VMWShzY29wZS5leGNlcHRpb24oKSkpIHsKKyAgICAgICAgSlNWYWx1ZSBleGNlcHRp
b24gPSBzY29wZS5leGNlcHRpb24oKTsKKyAgICAgICAgc2NvcGUuY2xlYXJFeGNlcHRpb24oKTsK
KyAgICAgICAgcmV0dXJuIGRlZmVycmVkLT5yZWplY3QoZXhlYywgZXhjZXB0aW9uKTsKKyAgICB9
CisgICAgYXV0byByZXN1bHQgPSBkZWZlcnJlZC0+cmVzb2x2ZShleGVjLCBpZGVudGlmaWVyVG9K
U1ZhbHVlKHZtLCBtb2R1bGVLZXkpKTsKKyAgICBzY29wZS5yZWxlYXNlQXNzZXJ0Tm9FeGNlcHRp
b24oKTsKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiBKU0ludGVybmFsUHJvbWlzZSogSlNNb2R1
bGVMb2FkZXI6OmZldGNoKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBrZXksIEpTVmFsdWUgcGFy
YW1ldGVycywgSlNWYWx1ZSBzY3JpcHRGZXRjaGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVMb2FkZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTTW9kdWxlTG9hZGVyLmgKaW5kZXggODlhNDczNjNmMjFlNDE4NTcyMTlkNWI3
MWRjZThhMThiNjllYWE5My4uNTQwNDE5OWVhM2FmMWI0MWVlZjY5MTM5M2Y0NDU0NmZhY2Y3MmIx
YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVMb2Fk
ZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUxvYWRlci5o
CkBAIC03Miw2ICs3Miw3IEBAIGNsYXNzIEpTTW9kdWxlTG9hZGVyIDogcHVibGljIEpTTm9uRmlu
YWxPYmplY3QgewogICAgIC8vIFBsYXRmb3JtIGRlcGVuZGVudCBob29rZWQgQVBJcy4KICAgICBK
U0ludGVybmFsUHJvbWlzZSogaW1wb3J0TW9kdWxlKEV4ZWNTdGF0ZSosIEpTU3RyaW5nKiBtb2R1
bGVOYW1lLCBKU1ZhbHVlIHBhcmFtZXRlcnMsIGNvbnN0IFNvdXJjZU9yaWdpbiYgcmVmZXJyZXIp
OwogICAgIEpTSW50ZXJuYWxQcm9taXNlKiByZXNvbHZlKEV4ZWNTdGF0ZSosIEpTVmFsdWUgbmFt
ZSwgSlNWYWx1ZSByZWZlcnJlciwgSlNWYWx1ZSBzY3JpcHRGZXRjaGVyKTsKKyAgICBJZGVudGlm
aWVyIHJlc29sdmVTeW5jKEV4ZWNTdGF0ZSosIEpTVmFsdWUgbmFtZSwgSlNWYWx1ZSByZWZlcnJl
ciwgSlNWYWx1ZSBzY3JpcHRGZXRjaGVyKTsKICAgICBKU0ludGVybmFsUHJvbWlzZSogZmV0Y2go
RXhlY1N0YXRlKiwgSlNWYWx1ZSBrZXksIEpTVmFsdWUgcGFyYW1ldGVycywgSlNWYWx1ZSBzY3Jp
cHRGZXRjaGVyKTsKICAgICBKU09iamVjdCogY3JlYXRlSW1wb3J0TWV0YVByb3BlcnRpZXMoRXhl
Y1N0YXRlKiwgSlNWYWx1ZSBrZXksIEpTTW9kdWxlUmVjb3JkKiwgSlNWYWx1ZSBzY3JpcHRGZXRj
aGVyKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTW9kdWxl
TG9hZGVyUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01vZHVs
ZUxvYWRlclByb3RvdHlwZS5jcHAKaW5kZXggZTgzNjM4MDIyODQyYzE3MGQ1NGQzNmUwY2FlOTI0
NmFhOTcyYmQ0OS4uM2Q0ZjQ0YTE0NTk3ZWMxY2MwNWJjZjJjNzI2NGFhMmViNTQ3ZmFlNCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTW9kdWxlTG9hZGVyUHJvdG90
eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Nb2R1bGVMb2FkZXJQ
cm90b3R5cGUuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiTW9kdWxlTG9hZGVyUHJv
dG90eXBlLmgiCiAKICNpbmNsdWRlICJCdWlsdGluTmFtZXMuaCIKKyNpbmNsdWRlICJDYXRjaFNj
b3BlLmgiCiAjaW5jbHVkZSAiQ29kZVByb2ZpbGluZy5oIgogI2luY2x1ZGUgIkVycm9yLmgiCiAj
aW5jbHVkZSAiRXhjZXB0aW9uLmgiCkBAIC01Miw2ICs1Myw3IEBAIHN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIG1vZHVsZUxvYWRlclByb3RvdHlwZVJlcXVlc3RlZE1vZHVsZXMo
RXhlY1N0CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtb2R1bGVMb2FkZXJQ
cm90b3R5cGVFdmFsdWF0ZShFeGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIG1vZHVsZUxvYWRlclByb3RvdHlwZU1vZHVsZURlY2xhcmF0aW9uSW5zdGFudGlh
dGlvbihFeGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1v
ZHVsZUxvYWRlclByb3RvdHlwZVJlc29sdmUoRXhlY1N0YXRlKik7CitzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBtb2R1bGVMb2FkZXJQcm90b3R5cGVSZXNvbHZlU3luYyhFeGVj
U3RhdGUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1vZHVsZUxvYWRl
clByb3RvdHlwZUZldGNoKEV4ZWNTdGF0ZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgbW9kdWxlTG9hZGVyUHJvdG90eXBlR2V0TW9kdWxlTmFtZXNwYWNlT2JqZWN0KEV4
ZWNTdGF0ZSopOwogCkBAIC04Niw2ICs4OCw3IEBAIGNvbnN0IENsYXNzSW5mbyBNb2R1bGVMb2Fk
ZXJQcm90b3R5cGU6OnNfaW5mbyA9IHsgIk1vZHVsZUxvYWRlciIsICZCYXNlOjpzX2luZm8sCiAg
ICAgcGFyc2VNb2R1bGUgICAgICAgICAgICAgICAgICAgIG1vZHVsZUxvYWRlclByb3RvdHlwZVBh
cnNlTW9kdWxlICAgICAgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAyCiAgICAgcmVx
dWVzdGVkTW9kdWxlcyAgICAgICAgICAgICAgIG1vZHVsZUxvYWRlclByb3RvdHlwZVJlcXVlc3Rl
ZE1vZHVsZXMgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCiAgICAgcmVzb2x2ZSAg
ICAgICAgICAgICAgICAgICAgICAgIG1vZHVsZUxvYWRlclByb3RvdHlwZVJlc29sdmUgICAgICAg
ICAgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAyCisgICAgcmVzb2x2ZVN5bmMgICAg
ICAgICAgICAgICAgICAgIG1vZHVsZUxvYWRlclByb3RvdHlwZVJlc29sdmVTeW5jICAgICAgICAg
ICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAyCiAgICAgZmV0Y2ggICAgICAgICAgICAgICAg
ICAgICAgICAgIG1vZHVsZUxvYWRlclByb3RvdHlwZUZldGNoICAgICAgICAgICAgICAgICAgICAg
ICAgICBEb250RW51bXxGdW5jdGlvbiAzCiBAZW5kCiAqLwpAQCAtMTgyLDYgKzE4NSwxOSBAQCBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1vZHVsZUxvYWRlclByb3RvdHlwZVJlc29sdmUo
RXhlY1N0YXRlKiBleGVjKQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUobG9hZGVyLT5yZXNv
bHZlKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApLCBleGVjLT5hcmd1bWVudCgxKSwgZXhlYy0+YXJn
dW1lbnQoMikpKTsKIH0KIAorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtb2R1bGVMb2Fk
ZXJQcm90b3R5cGVSZXNvbHZlU3luYyhFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgVk0mIHZtID0g
ZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7CisK
KyAgICBKU01vZHVsZUxvYWRlciogbG9hZGVyID0ganNEeW5hbWljQ2FzdDxKU01vZHVsZUxvYWRl
cio+KHZtLCBleGVjLT50aGlzVmFsdWUoKSk7CisgICAgaWYgKCFsb2FkZXIpCisgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgYXV0byByZXN1bHQgPSBs
b2FkZXItPnJlc29sdmVTeW5jKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApLCBleGVjLT5hcmd1bWVu
dCgxKSwgZXhlYy0+YXJndW1lbnQoMikpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IGVuY29kZWRKU1ZhbHVlKCkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoaWRlbnRpZmll
clRvSlNWYWx1ZSh2bSwgcmVzdWx0KSk7Cit9CisKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgbW9kdWxlTG9hZGVyUHJvdG90eXBlRmV0Y2goRXhlY1N0YXRlKiBleGVjKQogewogICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTVdpbmRvd0Jhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01X
aW5kb3dCYXNlLmNwcAppbmRleCBhZDI4ZThkODRmNjM3YTljZjI5NTQ4YzBlODU2OGM2ZjRkZDc2
YTliLi5mOGRhODdiZDI2MWQ0OWVjODhhZjMwNmEyOGY2YjRjZGI3YTIzMzUzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAKQEAgLTM2NCwxMyAr
MzY0LDEyIEBAIHZvaWQgSlNET01XaW5kb3dCYXNlOjpmaXJlRnJhbWVDbGVhcmVkV2F0Y2hwb2lu
dHNGb3JXaW5kb3coRE9NV2luZG93KiB3aW5kb3cpCiAgICAgfQogfQogCi1KU0M6OkpTSW50ZXJu
YWxQcm9taXNlKiBKU0RPTVdpbmRvd0Jhc2U6Om1vZHVsZUxvYWRlclJlc29sdmUoSlNDOjpKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNDOjpKU01v
ZHVsZUxvYWRlciogbW9kdWxlTG9hZGVyLCBKU0M6OkpTVmFsdWUgbW9kdWxlTmFtZSwgSlNDOjpK
U1ZhbHVlIGltcG9ydGVyTW9kdWxlS2V5LCBKU0M6OkpTVmFsdWUgc2NyaXB0RmV0Y2hlcikKK0pT
Qzo6SWRlbnRpZmllciBKU0RPTVdpbmRvd0Jhc2U6Om1vZHVsZUxvYWRlclJlc29sdmUoSlNDOjpK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNDOjpK
U01vZHVsZUxvYWRlciogbW9kdWxlTG9hZGVyLCBKU0M6OkpTVmFsdWUgbW9kdWxlTmFtZSwgSlND
OjpKU1ZhbHVlIGltcG9ydGVyTW9kdWxlS2V5LCBKU0M6OkpTVmFsdWUgc2NyaXB0RmV0Y2hlcikK
IHsKICAgICBKU0RPTVdpbmRvd0Jhc2UqIHRoaXNPYmplY3QgPSBKU0M6OmpzQ2FzdDxKU0RPTVdp
bmRvd0Jhc2UqPihnbG9iYWxPYmplY3QpOwogICAgIGlmIChSZWZQdHI8RG9jdW1lbnQ+IGRvY3Vt
ZW50ID0gdGhpc09iamVjdC0+d3JhcHBlZCgpLmRvY3VtZW50KCkpCiAgICAgICAgIHJldHVybiBk
b2N1bWVudC0+bW9kdWxlTG9hZGVyKCktPnJlc29sdmUoZ2xvYmFsT2JqZWN0LCBleGVjLCBtb2R1
bGVMb2FkZXIsIG1vZHVsZU5hbWUsIGltcG9ydGVyTW9kdWxlS2V5LCBzY3JpcHRGZXRjaGVyKTsK
LSAgICBKU0M6OkpTSW50ZXJuYWxQcm9taXNlRGVmZXJyZWQqIGRlZmVycmVkID0gSlNDOjpKU0lu
dGVybmFsUHJvbWlzZURlZmVycmVkOjpjcmVhdGUoZXhlYywgZ2xvYmFsT2JqZWN0KTsKLSAgICBy
ZXR1cm4gZGVmZXJyZWQtPnJlamVjdChleGVjLCBqc1VuZGVmaW5lZCgpKTsKKyAgICByZXR1cm4g
eyB9OwogfQogCiBKU0M6OkpTSW50ZXJuYWxQcm9taXNlKiBKU0RPTVdpbmRvd0Jhc2U6Om1vZHVs
ZUxvYWRlckZldGNoKEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpFeGVj
U3RhdGUqIGV4ZWMsIEpTQzo6SlNNb2R1bGVMb2FkZXIqIG1vZHVsZUxvYWRlciwgSlNDOjpKU1Zh
bHVlIG1vZHVsZUtleSwgSlNDOjpKU1ZhbHVlIHBhcmFtZXRlcnMsIEpTQzo6SlNWYWx1ZSBzY3Jp
cHRGZXRjaGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01X
aW5kb3dCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2Uu
aAppbmRleCAyMTUwYzZhMGRhYjQ4OTYyZWNlYTUwMWM0M2RjYzBkZDE0NzliZjRlLi4yOTg1ZTRh
OGVjYmM2YTdjNTVhNTkwNmI4Yzc5OWYxMTRmYzVmMzlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuaApAQCAtNzUsNyArNzUsNyBAQCBjbGFzcyBXRUJD
T1JFX0VYUE9SVCBKU0RPTVdpbmRvd0Jhc2UgOiBwdWJsaWMgSlNET01HbG9iYWxPYmplY3Qgewog
ICAgIEpTQzo6V2F0Y2hwb2ludFNldCBtX3dpbmRvd0Nsb3NlV2F0Y2hwb2ludHM7CiAKIHByaXZh
dGU6Ci0gICAgc3RhdGljIEpTQzo6SlNJbnRlcm5hbFByb21pc2UqIG1vZHVsZUxvYWRlclJlc29s
dmUoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU01vZHVsZUxv
YWRlciosIEpTQzo6SlNWYWx1ZSwgSlNDOjpKU1ZhbHVlLCBKU0M6OkpTVmFsdWUpOworICAgIHN0
YXRpYyBKU0M6OklkZW50aWZpZXIgbW9kdWxlTG9hZGVyUmVzb2x2ZShKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTTW9kdWxlTG9hZGVyKiwgSlNDOjpKU1ZhbHVl
LCBKU0M6OkpTVmFsdWUsIEpTQzo6SlNWYWx1ZSk7CiAgICAgc3RhdGljIEpTQzo6SlNJbnRlcm5h
bFByb21pc2UqIG1vZHVsZUxvYWRlckZldGNoKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkV4
ZWNTdGF0ZSosIEpTQzo6SlNNb2R1bGVMb2FkZXIqLCBKU0M6OkpTVmFsdWUsIEpTQzo6SlNWYWx1
ZSwgSlNDOjpKU1ZhbHVlKTsKICAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIG1vZHVsZUxvYWRlckV2
YWx1YXRlKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNNb2R1
bGVMb2FkZXIqLCBKU0M6OkpTVmFsdWUsIEpTQzo6SlNWYWx1ZSwgSlNDOjpKU1ZhbHVlKTsKICAg
ICBzdGF0aWMgSlNDOjpKU0ludGVybmFsUHJvbWlzZSogbW9kdWxlTG9hZGVySW1wb3J0TW9kdWxl
KEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNNb2R1bGVMb2Fk
ZXIqLCBKU0M6OkpTU3RyaW5nKiwgSlNDOjpKU1ZhbHVlLCBjb25zdCBKU0M6OlNvdXJjZU9yaWdp
biYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0TW9kdWxl
TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdE1vZHVsZUxvYWRl
ci5jcHAKaW5kZXggMWM2MmY0MmNhNzEyODY5MjAwYTBmOWE0MDFlMzg4ZDkyMjVlNTUyMy4uZTVj
OTVhNTQzYjU4NDU4ZTE3ODI4ZjM1ZGVlMjliYzlkZDM2MGQwYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0TW9kdWxlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRNb2R1bGVMb2FkZXIuY3BwCkBAIC04NSwyNiArODUs
MjUgQEAgc3RhdGljIEV4cGVjdGVkPFVSTCwgQVNDSUlMaXRlcmFsPiByZXNvbHZlTW9kdWxlU3Bl
Y2lmaWVyKERvY3VtZW50JiBkb2N1bWVudCwgY28KICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1K
U0M6OkpTSW50ZXJuYWxQcm9taXNlKiBTY3JpcHRNb2R1bGVMb2FkZXI6OnJlc29sdmUoSlNDOjpK
U0dsb2JhbE9iamVjdCoganNHbG9iYWxPYmplY3QsIEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0M6
OkpTTW9kdWxlTG9hZGVyKiwgSlNDOjpKU1ZhbHVlIG1vZHVsZU5hbWVWYWx1ZSwgSlNDOjpKU1Zh
bHVlIGltcG9ydGVyTW9kdWxlS2V5LCBKU0M6OkpTVmFsdWUpCitKU0M6OklkZW50aWZpZXIgU2Ny
aXB0TW9kdWxlTG9hZGVyOjpyZXNvbHZlKEpTQzo6SlNHbG9iYWxPYmplY3QqIGpzR2xvYmFsT2Jq
ZWN0LCBKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNDOjpKU01vZHVsZUxvYWRlciosIEpTQzo6SlNW
YWx1ZSBtb2R1bGVOYW1lVmFsdWUsIEpTQzo6SlNWYWx1ZSBpbXBvcnRlck1vZHVsZUtleSwgSlND
OjpKU1ZhbHVlKQogewotICAgIGF1dG8mIGdsb2JhbE9iamVjdCA9ICpKU0M6OmpzQ2FzdDxKU0RP
TUdsb2JhbE9iamVjdCo+KGpzR2xvYmFsT2JqZWN0KTsKLSAgICBhdXRvJiBqc1Byb21pc2UgPSAq
SlNDOjpKU0ludGVybmFsUHJvbWlzZURlZmVycmVkOjpjcmVhdGUoZXhlYywgJmdsb2JhbE9iamVj
dCk7Ci0gICAgYXV0byBwcm9taXNlID0gRGVmZXJyZWRQcm9taXNlOjpjcmVhdGUoZ2xvYmFsT2Jq
ZWN0LCBqc1Byb21pc2UpOworICAgIEpTQzo6Vk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICAvLyBXZSB1c2UgYSBTeW1i
b2wgYXMgYSBzcGVjaWFsIHB1cnBvc2U7IEl0IG1lYW5zIHRoaXMgbW9kdWxlIGlzIGFuIGlubGlu
ZSBtb2R1bGUuCiAgICAgLy8gU28gdGhlcmUgaXMgbm8gY29ycmVjdCBVUkwgdG8gcmV0cmlldmUg
dGhlIG1vZHVsZSBzb3VyY2UgY29kZS4gSWYgdGhlIG1vZHVsZSBuYW1lCiAgICAgLy8gdmFsdWUg
aXMgYSBTeW1ib2wsIGl0IGlzIHVzZWQgZGlyZWN0bHkgYXMgYSBtb2R1bGUga2V5LgotICAgIGlm
IChtb2R1bGVOYW1lVmFsdWUuaXNTeW1ib2woKSkgewotICAgICAgICBwcm9taXNlLT5yZXNvbHZl
PElETEFueT4oSlNDOjpTeW1ib2w6OmNyZWF0ZShleGVjLT52bSgpLCBhc1N5bWJvbChtb2R1bGVO
YW1lVmFsdWUpLT5wcml2YXRlTmFtZSgpLnVpZCgpKSk7Ci0gICAgICAgIHJldHVybiBqc1Byb21p
c2UucHJvbWlzZSgpOwotICAgIH0KKyAgICBpZiAobW9kdWxlTmFtZVZhbHVlLmlzU3ltYm9sKCkp
CisgICAgICAgIHJldHVybiBKU0M6OklkZW50aWZpZXI6OmZyb21VaWQoYXNTeW1ib2wobW9kdWxl
TmFtZVZhbHVlKS0+cHJpdmF0ZU5hbWUoKSk7CiAKICAgICBpZiAoIW1vZHVsZU5hbWVWYWx1ZS5p
c1N0cmluZygpKSB7Ci0gICAgICAgIHByb21pc2UtPnJlamVjdChUeXBlRXJyb3IsIEFTQ0lJTGl0
ZXJhbCgiSW1wb3J0ZXIgbW9kdWxlIGtleSBpcyBub3QgYSBTeW1ib2wgb3IgYSBTdHJpbmcuIikp
OwotICAgICAgICByZXR1cm4ganNQcm9taXNlLnByb21pc2UoKTsKKyAgICAgICAgSlNDOjp0aHJv
d1R5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJJbXBvcnRlciBtb2R1bGUga2V5
IGlzIG5vdCBhIFN5bWJvbCBvciBhIFN0cmluZy4iKSk7CisgICAgICAgIHJldHVybiB7IH07CiAg
ICAgfQogCiAgICAgU3RyaW5nIHNwZWNpZmllciA9IGFzU3RyaW5nKG1vZHVsZU5hbWVWYWx1ZSkt
PnZhbHVlKGV4ZWMpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKICAg
ICBVUkwgYmFzZVVSTDsKICAgICBpZiAoaXNSb290TW9kdWxlKGltcG9ydGVyTW9kdWxlS2V5KSkK
ICAgICAgICAgYmFzZVVSTCA9IG1fZG9jdW1lbnQuYmFzZVVSTCgpOwpAQCAtMTIwLDEyICsxMTks
MTEgQEAgSlNDOjpKU0ludGVybmFsUHJvbWlzZSogU2NyaXB0TW9kdWxlTG9hZGVyOjpyZXNvbHZl
KEpTQzo6SlNHbG9iYWxPYmplY3QqIGpzR2xvYmEKIAogICAgIGF1dG8gcmVzdWx0ID0gcmVzb2x2
ZU1vZHVsZVNwZWNpZmllcihtX2RvY3VtZW50LCBzcGVjaWZpZXIsIGJhc2VVUkwpOwogICAgIGlm
ICghcmVzdWx0KSB7Ci0gICAgICAgIHByb21pc2UtPnJlamVjdChUeXBlRXJyb3IsIHJlc3VsdC5l
cnJvcigpKTsKLSAgICAgICAgcmV0dXJuIGpzUHJvbWlzZS5wcm9taXNlKCk7CisgICAgICAgIEpT
Qzo6dGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIHJlc3VsdC5lcnJvcigpKTsKKyAgICAgICAg
cmV0dXJuIHsgfTsKICAgICB9CiAKLSAgICBwcm9taXNlLT5yZXNvbHZlPElETERPTVN0cmluZz4o
cmVzdWx0LT5zdHJpbmcoKSk7Ci0gICAgcmV0dXJuIGpzUHJvbWlzZS5wcm9taXNlKCk7CisgICAg
cmV0dXJuIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sIHJlc3VsdC0+c3RyaW5nKCkp
OwogfQogCiBzdGF0aWMgdm9pZCByZWplY3RUb1Byb3BhZ2F0ZU5ldHdvcmtFcnJvcihEZWZlcnJl
ZFByb21pc2UmIGRlZmVycmVkLCBNb2R1bGVGZXRjaEZhaWx1cmVLaW5kIGZhaWx1cmVLaW5kLCBB
U0NJSUxpdGVyYWwgbWVzc2FnZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1NjcmlwdE1vZHVsZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2Ny
aXB0TW9kdWxlTG9hZGVyLmgKaW5kZXggNzlmZGY0NzdiOGRmZjU0YTJkYTg3MWQ0OTQ3YzRjMTE5
ODNlZTg0Yy4uY2RiNjU2ZWU2Nzc4YWUyYWExZDAyNWNmODljZGIyMGEwZjkzMTY1ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0TW9kdWxlTG9hZGVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0TW9kdWxlTG9hZGVyLmgKQEAgLTU1
LDcgKzU1LDcgQEAgY2xhc3MgU2NyaXB0TW9kdWxlTG9hZGVyIGZpbmFsIDogcHJpdmF0ZSBDYWNo
ZWRNb2R1bGVTY3JpcHRMb2FkZXJDbGllbnQgewogCiAgICAgRG9jdW1lbnQmIGRvY3VtZW50KCkg
eyByZXR1cm4gbV9kb2N1bWVudDsgfQogCi0gICAgSlNDOjpKU0ludGVybmFsUHJvbWlzZSogcmVz
b2x2ZShKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTTW9kdWxl
TG9hZGVyKiwgSlNDOjpKU1ZhbHVlIG1vZHVsZU5hbWUsIEpTQzo6SlNWYWx1ZSBpbXBvcnRlck1v
ZHVsZUtleSwgSlNDOjpKU1ZhbHVlIHNjcmlwdEZldGNoZXIpOworICAgIEpTQzo6SWRlbnRpZmll
ciByZXNvbHZlKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNN
b2R1bGVMb2FkZXIqLCBKU0M6OkpTVmFsdWUgbW9kdWxlTmFtZSwgSlNDOjpKU1ZhbHVlIGltcG9y
dGVyTW9kdWxlS2V5LCBKU0M6OkpTVmFsdWUgc2NyaXB0RmV0Y2hlcik7CiAgICAgSlNDOjpKU0lu
dGVybmFsUHJvbWlzZSogZmV0Y2goSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RXhlY1N0YXRl
KiwgSlNDOjpKU01vZHVsZUxvYWRlciosIEpTQzo6SlNWYWx1ZSBtb2R1bGVLZXksIEpTQzo6SlNW
YWx1ZSBwYXJhbWV0ZXJzLCBKU0M6OkpTVmFsdWUgc2NyaXB0RmV0Y2hlcik7CiAgICAgSlNDOjpK
U1ZhbHVlIGV2YWx1YXRlKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpT
Qzo6SlNNb2R1bGVMb2FkZXIqLCBKU0M6OkpTVmFsdWUgbW9kdWxlS2V5LCBKU0M6OkpTVmFsdWUg
bW9kdWxlUmVjb3JkLCBKU0M6OkpTVmFsdWUgc2NyaXB0RmV0Y2hlcik7CiAgICAgSlNDOjpKU0lu
dGVybmFsUHJvbWlzZSogaW1wb3J0TW9kdWxlKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkV4
ZWNTdGF0ZSosIEpTQzo6SlNNb2R1bGVMb2FkZXIqLCBKU0M6OkpTU3RyaW5nKiwgSlNDOjpKU1Zh
bHVlIHBhcmFtZXRlcnMsIGNvbnN0IEpTQzo6U291cmNlT3JpZ2luJik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>323660</attachid>
            <date>2017-10-13 05:09:31 -0700</date>
            <delta_ts>2017-10-15 18:55:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-178256-20171013210930.patch</filename>
            <type>text/plain</type>
            <size>34228</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIzMjc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
N2JlZTlhODUyMWQ0ODgwZWYxNzVmYWEzNjZhY2U4NWY3YTdkMWIwLi4yY2U1MDY2M2RlZGQ3MzU2
NDJmZjRjZDI1NTVlMGZjZTlmNDY3YzIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0NiBAQAorMjAxNy0xMC0xMyAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbSlNDXSBQZXJmb3JtIG1vZHVsZSBzcGVjaWZpZXIgdmFsaWRhdGlv
biBhdCBwYXJzaW5nIHRpbWUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE3ODI1NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFRoaXMgcGF0Y2ggbWFrZSBtb2R1bGUgbG9hZGVyJ3MgYHJlc29sdmVgIG9wZXJh
dGlvbiBzeW5jaHJvbm91cy4gQW5kIHdlIHZhbGlkYXRlCisgICAgICAgIG1vZHVsZSdzIHJlcXVl
c3RlZCBtb2R1bGUgbmFtZXMgd2hlbiBpbnN0YW50aWF0aW5nIHRoZSBtb2R1bGUgaW5zdGVhZCBv
ZiBzYXRpc2Z5aW5nCisgICAgICAgIG1vZHVsZSdzIGRlcGVuZGVuY2llcy4gVGhpcyBjaGFuZ2Ug
aXMgbm90IG9ic2VydmFibGUgdG8gdXNlcnMuIEJ1dCB0aGlzIGlzIHByZWNpc2UKKyAgICAgICAg
dG8gdGhlIHNwZWMgYW5kIHRoaXMgb3B0aW1pemVzICYgc2ltcGxpZmllcyB0aGUgY3VycmVudCBt
b2R1bGUgbG9hZGVyIGEgYml0IGJ5CisgICAgICAgIHJlZHVjaW5nIG9iamVjdCBhbGxvY2F0aW9u
cy4KKworICAgICAgICBQcmV2aW91c2x5LCB3ZSBoYXZlIGFuIG9iamVjdCBjYWxsZWQgcGFpciBp
biB0aGUgbW9kdWxlIGxvYWRlci4gVGhpcyBpcyBwYWlyIG9mCisgICAgICAgIG1vZHVsZSdzIG5h
bWUgYW5kIG1vZHVsZSdzIHJlY29yZC4gQW5kIHdlIHVzZSBpdCB0byBsaW5rIG9uZSBtb2R1bGUg
dG8gZGVwZW5kZW50CisgICAgICAgIG1vZHVsZXMuIE5vdywgaXQgaXMgcmVwbGFjZWQgd2l0aCBt
b2R1bGUncyByZWdpc3RyeSBlbnRyeS4KKworICAgICAgICBXZSBhbHNvIGNoYW5nZSBvdXIgbG9h
ZGVyIGZ1bmN0aW9ucyB0byB0YWtlIGEgcmVnaXN0cnkgZW50cnkgaW5zdGVhZCBvZiBhIG1vZHVs
ZSBrZXkuCisgICAgICAgIFByZXZpb3VzIGRlc2lnbiBpcyBkdWUgdG8gdGhlIGNvbnNpZGVyYXRp
b24gdGhhdCB0aGVzZSBBUElzIG1heSBiZSBleHBvc2VkIHRvIHVzZXJzCisgICAgICAgIGluIHdo
YXR3Zy9sb2FkZXIgc3BlYy4gSG93ZXZlciwgdGhpcyB3b24ndCBoYXBwZW4uIFRoaXMgY2hhbmdl
IHJlbW92ZXMgdW5uZWNlc3NhcnkKKyAgICAgICAgcmVwZWF0ZWRseSBoYXNoIG1hcCBsb29rdXBz
LgorCisgICAgICAgICogYnVpbHRpbnMvTW9kdWxlTG9hZGVyUHJvdG90eXBlLmpzOgorICAgICAg
ICAoZ2xvYmFsUHJpdmF0ZS5uZXdSZWdpc3RyeUVudHJ5KToKKyAgICAgICAgKHJlcXVlc3RGZXRj
aCk6CisgICAgICAgIChyZXF1ZXN0SW5zdGFudGlhdGUpOgorICAgICAgICAocmVxdWVzdFNhdGlz
ZnkpOgorICAgICAgICAobGluayk6CisgICAgICAgIChtb2R1bGVFdmFsdWF0aW9uKToKKyAgICAg
ICAgKGxvYWRNb2R1bGUpOgorICAgICAgICAqIGpzYy5jcHA6CisgICAgICAgIChHbG9iYWxPYmpl
Y3Q6Om1vZHVsZUxvYWRlclJlc29sdmUpOgorICAgICAgICAqIHJ1bnRpbWUvQWJzdHJhY3RNb2R1
bGVSZWNvcmQuY3BwOgorICAgICAgICAoSlNDOjpBYnN0cmFjdE1vZHVsZVJlY29yZDo6ZmluaXNo
Q3JlYXRpb24pOgorICAgICAgICAoSlNDOjpBYnN0cmFjdE1vZHVsZVJlY29yZDo6aG9zdFJlc29s
dmVJbXBvcnRlZE1vZHVsZSk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNNb2R1bGVMb2FkZXIuY3BwOgorICAgICAgICAoSlNDOjpKU01v
ZHVsZUxvYWRlcjo6cmVzb2x2ZVN5bmMpOgorICAgICAgICAoSlNDOjpKU01vZHVsZUxvYWRlcjo6
cmVzb2x2ZSk6CisgICAgICAgICogcnVudGltZS9KU01vZHVsZUxvYWRlci5oOgorICAgICAgICAq
IHJ1bnRpbWUvTW9kdWxlTG9hZGVyUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6bW9kdWxl
TG9hZGVyUHJvdG90eXBlUmVzb2x2ZVN5bmMpOgorCiAyMDE3LTEwLTEyICBZdXN1a2UgU3V6dWtp
ICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgogCiAgICAgICAgIFdlYkFzc2VtYmx5OiBXYXNtIGZ1
bmN0aW9ucyBzaG91bGQgaGF2ZSBlaXRoZXIgSlNGdW5jdGlvblR5cGUgb3IgVHlwZU9mU2hvdWxk
Q2FsbEdldENhbGxEYXRhCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjA0YjY1YzQyMWI5ZTBkYWFlODRiMjI4M2I3
OWM2ZTUxNDRmNmEwMi4uMzRiYzAzZTUzYWUzYjM3NWQ1Y2NmNmZjMTEzMDA0YWJhZDg3Mjk0MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDE3LTEwLTEzICBZdXN1a2UgU3V6dWtpICA8
dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIFtKU0NdIFBlcmZvcm0gbW9kdWxlIHNw
ZWNpZmllciB2YWxpZGF0aW9uIGF0IHBhcnNpbmcgdGltZQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc4MjU2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gYmVoYXZpb3IgY2hhbmdlIGluIHRoZSBjdXJy
ZW50IGltcGxlbWVudGF0aW9uLgorCisgICAgICAgICogYmluZGluZ3MvanMvSlNET01XaW5kb3dC
YXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93QmFzZTo6bW9kdWxlTG9hZGVy
UmVzb2x2ZSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmg6CisgICAg
ICAgICogYmluZGluZ3MvanMvU2NyaXB0TW9kdWxlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNjcmlwdE1vZHVsZUxvYWRlcjo6cmVzb2x2ZSk6CisgICAgICAgICogYmluZGluZ3MvanMv
U2NyaXB0TW9kdWxlTG9hZGVyLmg6CisKIDIwMTctMTAtMTMgIFJvbWFpbiBCZWxsZXNzb3J0ICA8
cm9tYWluLmJlbGxlc3NvcnRAY3JmLmNhbm9uLmZyPgogCiAgICAgICAgIFtSZWFkYWJsZSBTdHJl
YW1zIEFQSV0gQWxpZ24gcXVldWUgd2l0aCBzcGVjIGZvciBSZWFkYWJsZVN0cmVhbURlZmF1bHRD
b250cm9sbGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvTW9k
dWxlTG9hZGVyUHJvdG90eXBlLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL01v
ZHVsZUxvYWRlclByb3RvdHlwZS5qcwppbmRleCBlZDBhZTYwMzRhNWYwOTg4NzY4Y2YyOTA1MjYy
Y2ViNzFjNjkxZWNiLi5lNmFjNTViMDkzOTlmYWI4ZDY0ZmY3M2NiYmQwYjllMjA0ZWYxZmVhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvTW9kdWxlTG9hZGVyUHJv
dG90eXBlLmpzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9Nb2R1bGVMb2Fk
ZXJQcm90b3R5cGUuanMKQEAgLTk5LDYgKzk5LDcgQEAgZnVuY3Rpb24gbmV3UmVnaXN0cnlFbnRy
eShrZXkpCiAgICAgICAgIG1vZHVsZTogQHVuZGVmaW5lZCwgLy8gSlNNb2R1bGVSZWNvcmQKICAg
ICAgICAgbGlua0Vycm9yOiBAdW5kZWZpbmVkLAogICAgICAgICBsaW5rU3VjY2VlZGVkOiB0cnVl
LAorICAgICAgICBldmFsdWF0ZWQ6IGZhbHNlLAogICAgIH07CiB9CiAKQEAgLTE0MCwxMyArMTQx
LDEyIEBAIGZ1bmN0aW9uIGZ1bGZpbGxGZXRjaChlbnRyeSwgc291cmNlKQogCiAvLyBMb2FkZXIu
CiAKLWZ1bmN0aW9uIHJlcXVlc3RGZXRjaChrZXksIHBhcmFtZXRlcnMsIGZldGNoZXIpCitmdW5j
dGlvbiByZXF1ZXN0RmV0Y2goZW50cnksIHBhcmFtZXRlcnMsIGZldGNoZXIpCiB7CiAgICAgLy8g
aHR0cHM6Ly93aGF0d2cuZ2l0aHViLmlvL2xvYWRlci8jcmVxdWVzdC1mZXRjaAogCiAgICAgInVz
ZSBzdHJpY3QiOwogCi0gICAgdmFyIGVudHJ5ID0gdGhpcy5lbnN1cmVSZWdpc3RlcmVkKGtleSk7
CiAgICAgaWYgKGVudHJ5LmZldGNoKQogICAgICAgICByZXR1cm4gZW50cnkuZmV0Y2g7CiAKQEAg
LTE1Niw3ICsxNTYsNyBAQCBmdW5jdGlvbiByZXF1ZXN0RmV0Y2goa2V5LCBwYXJhbWV0ZXJzLCBm
ZXRjaGVyKQogICAgIC8vICAgICBUYWtlIHRoZSBrZXkgYW5kIGZldGNoIHRoZSByZXNvdXJjZSBh
Y3R1YWxseS4KICAgICAvLyAgICAgRm9yIGV4YW1wbGUsIEphdmFTY3JpcHRDb3JlIHNoZWxsIGNh
biBwcm92aWRlIHRoZSBob29rIGZldGNoaW5nIHRoZSByZXNvdXJjZQogICAgIC8vICAgICBmcm9t
IHRoZSBsb2NhbCBmaWxlIHN5c3RlbS4KLSAgICB2YXIgZmV0Y2hQcm9taXNlID0gdGhpcy5mZXRj
aChrZXksIHBhcmFtZXRlcnMsIGZldGNoZXIpLnRoZW4oKHNvdXJjZSkgPT4geworICAgIHZhciBm
ZXRjaFByb21pc2UgPSB0aGlzLmZldGNoKGVudHJ5LmtleSwgcGFyYW1ldGVycywgZmV0Y2hlciku
dGhlbigoc291cmNlKSA9PiB7CiAgICAgICAgIEBzZXRTdGF0ZVRvTWF4KGVudHJ5LCBATW9kdWxl
SW5zdGFudGlhdGUpOwogICAgICAgICByZXR1cm4gc291cmNlOwogICAgIH0pOwpAQCAtMTY0LDE4
ICsxNjQsMTggQEAgZnVuY3Rpb24gcmVxdWVzdEZldGNoKGtleSwgcGFyYW1ldGVycywgZmV0Y2hl
cikKICAgICByZXR1cm4gZmV0Y2hQcm9taXNlOwogfQogCi1mdW5jdGlvbiByZXF1ZXN0SW5zdGFu
dGlhdGUoa2V5LCBwYXJhbWV0ZXJzLCBmZXRjaGVyKQorZnVuY3Rpb24gcmVxdWVzdEluc3RhbnRp
YXRlKGVudHJ5LCBwYXJhbWV0ZXJzLCBmZXRjaGVyKQogewogICAgIC8vIGh0dHBzOi8vd2hhdHdn
LmdpdGh1Yi5pby9sb2FkZXIvI3JlcXVlc3QtaW5zdGFudGlhdGUKIAogICAgICJ1c2Ugc3RyaWN0
IjsKIAotICAgIHZhciBlbnRyeSA9IHRoaXMuZW5zdXJlUmVnaXN0ZXJlZChrZXkpOwogICAgIGlm
IChlbnRyeS5pbnN0YW50aWF0ZSkKICAgICAgICAgcmV0dXJuIGVudHJ5Lmluc3RhbnRpYXRlOwog
Ci0gICAgdmFyIGluc3RhbnRpYXRlUHJvbWlzZSA9IHRoaXMucmVxdWVzdEZldGNoKGtleSwgcGFy
YW1ldGVycywgZmV0Y2hlcikudGhlbigoc291cmNlKSA9PiB7Ci0gICAgICAgIHZhciBtb2R1bGVS
ZWNvcmQgPSB0aGlzLnBhcnNlTW9kdWxlKGVudHJ5LmtleSwgc291cmNlKTsKKyAgICB2YXIgaW5z
dGFudGlhdGVQcm9taXNlID0gdGhpcy5yZXF1ZXN0RmV0Y2goZW50cnksIHBhcmFtZXRlcnMsIGZl
dGNoZXIpLnRoZW4oKHNvdXJjZSkgPT4geworICAgICAgICB2YXIga2V5ID0gZW50cnkua2V5Owor
ICAgICAgICB2YXIgbW9kdWxlUmVjb3JkID0gdGhpcy5wYXJzZU1vZHVsZShrZXksIHNvdXJjZSk7
CiAKICAgICAgICAgLy8gRklYTUU6IERlc2NyaWJlZCBpbiB0aGUgZHJhZnQsCiAgICAgICAgIC8v
ICAgNC4gRnVsZmlsbCBlbnRyeS5bW0luc3RhbnRpYXRlXV0gd2l0aCBpbnN0YW5jZS4KQEAgLTE4
NCwxOCArMTg0LDE1IEBAIGZ1bmN0aW9uIHJlcXVlc3RJbnN0YW50aWF0ZShrZXksIHBhcmFtZXRl
cnMsIGZldGNoZXIpCiAgICAgICAgIC8vIGZ1bGZpbGxlZCB3aXRob3V0IHRoaXMgImZvcmNlIGZ1
bGZpbGwiIG9wZXJhdGlvbi4KICAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3doYXR3Zy9s
b2FkZXIvcHVsbC82NwogCi0gICAgICAgIHZhciBkZXBlbmRlbmNpZXMgPSBbXTsKICAgICAgICAg
dmFyIGRlcGVuZGVuY2llc01hcCA9IG1vZHVsZVJlY29yZC5kZXBlbmRlbmNpZXNNYXA7Ci0gICAg
ICAgIG1vZHVsZVJlY29yZC5yZWdpc3RyeUVudHJ5ID0gZW50cnk7CiAgICAgICAgIHZhciByZXF1
ZXN0ZWRNb2R1bGVzID0gdGhpcy5yZXF1ZXN0ZWRNb2R1bGVzKG1vZHVsZVJlY29yZCk7CisgICAg
ICAgIHZhciBkZXBlbmRlbmNpZXMgPSBAbmV3QXJyYXlXaXRoU2l6ZShyZXF1ZXN0ZWRNb2R1bGVz
Lmxlbmd0aCk7CiAgICAgICAgIGZvciAodmFyIGkgPSAwLCBsZW5ndGggPSByZXF1ZXN0ZWRNb2R1
bGVzLmxlbmd0aDsgaSA8IGxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICB2YXIgZGVwS2V5ID0g
cmVxdWVzdGVkTW9kdWxlc1tpXTsKLSAgICAgICAgICAgIHZhciBwYWlyID0gewotICAgICAgICAg
ICAgICAgIGtleTogZGVwS2V5LAotICAgICAgICAgICAgICAgIHZhbHVlOiBAdW5kZWZpbmVkCi0g
ICAgICAgICAgICB9OwotICAgICAgICAgICAgQHB1dEJ5VmFsRGlyZWN0KGRlcGVuZGVuY2llcywg
ZGVwZW5kZW5jaWVzLmxlbmd0aCwgcGFpcik7Ci0gICAgICAgICAgICBkZXBlbmRlbmNpZXNNYXAu
QHNldChkZXBLZXksIHBhaXIpOworICAgICAgICAgICAgdmFyIGRlcE5hbWUgPSByZXF1ZXN0ZWRN
b2R1bGVzW2ldOworICAgICAgICAgICAgdmFyIGRlcEtleSA9IHRoaXMucmVzb2x2ZVN5bmMoZGVw
TmFtZSwga2V5LCBmZXRjaGVyKTsKKyAgICAgICAgICAgIHZhciBkZXBFbnRyeSA9IHRoaXMuZW5z
dXJlUmVnaXN0ZXJlZChkZXBLZXkpOworICAgICAgICAgICAgQHB1dEJ5VmFsRGlyZWN0KGRlcGVu
ZGVuY2llcywgaSwgZGVwRW50cnkpOworICAgICAgICAgICAgZGVwZW5kZW5jaWVzTWFwLkBzZXQo
ZGVwTmFtZSwgZGVwRW50cnkpOwogICAgICAgICB9CiAgICAgICAgIGVudHJ5LmRlcGVuZGVuY2ll
cyA9IGRlcGVuZGVuY2llczsKICAgICAgICAgZW50cnkuZGVwZW5kZW5jaWVzTWFwID0gZGVwZW5k
ZW5jaWVzTWFwOwpAQCAtMjA3LDUyICsyMDQsMzcgQEAgZnVuY3Rpb24gcmVxdWVzdEluc3RhbnRp
YXRlKGtleSwgcGFyYW1ldGVycywgZmV0Y2hlcikKICAgICByZXR1cm4gaW5zdGFudGlhdGVQcm9t
aXNlOwogfQogCi1mdW5jdGlvbiByZXF1ZXN0U2F0aXNmeShrZXksIHBhcmFtZXRlcnMsIGZldGNo
ZXIpCitmdW5jdGlvbiByZXF1ZXN0U2F0aXNmeShlbnRyeSwgcGFyYW1ldGVycywgZmV0Y2hlcikK
IHsKICAgICAvLyBodHRwczovL3doYXR3Zy5naXRodWIuaW8vbG9hZGVyLyNzYXRpc2Z5LWluc3Rh
bmNlCiAKICAgICAidXNlIHN0cmljdCI7CiAKLSAgICB2YXIgZW50cnkgPSB0aGlzLmVuc3VyZVJl
Z2lzdGVyZWQoa2V5KTsKICAgICBpZiAoZW50cnkuc2F0aXNmeSkKICAgICAgICAgcmV0dXJuIGVu
dHJ5LnNhdGlzZnk7CiAKLSAgICB2YXIgc2F0aXNmeVByb21pc2UgPSB0aGlzLnJlcXVlc3RJbnN0
YW50aWF0ZShrZXksIHBhcmFtZXRlcnMsIGZldGNoZXIpLnRoZW4oKGVudHJ5KSA9PiB7Ci0gICAg
ICAgIHZhciBkZXBMb2FkcyA9IFtdOworICAgIHZhciBzYXRpc2Z5UHJvbWlzZSA9IHRoaXMucmVx
dWVzdEluc3RhbnRpYXRlKGVudHJ5LCBwYXJhbWV0ZXJzLCBmZXRjaGVyKS50aGVuKChlbnRyeSkg
PT4geworICAgICAgICB2YXIgZGVwTG9hZHMgPSBAbmV3QXJyYXlXaXRoU2l6ZShlbnRyeS5kZXBl
bmRlbmNpZXMubGVuZ3RoKTsKICAgICAgICAgZm9yICh2YXIgaSA9IDAsIGxlbmd0aCA9IGVudHJ5
LmRlcGVuZGVuY2llcy5sZW5ndGg7IGkgPCBsZW5ndGg7ICsraSkgewotICAgICAgICAgICAgbGV0
IHBhaXIgPSBlbnRyeS5kZXBlbmRlbmNpZXNbaV07Ci0KLSAgICAgICAgICAgIC8vIEhvb2sgcG9p
bnQuCi0gICAgICAgICAgICAvLyAxLiBMb2FkZXIucmVzb2x2ZS4KLSAgICAgICAgICAgIC8vICAg
ICBodHRwczovL3doYXR3Zy5naXRodWIuaW8vbG9hZGVyLyNicm93c2VyLXJlc29sdmUKLSAgICAg
ICAgICAgIC8vICAgICBUYWtlIHRoZSBuYW1lIGFuZCByZXNvbHZlIGl0IHRvIHRoZSB1bmlxdWUg
aWRlbnRpZmllciBmb3IgdGhlIHJlc291cmNlIGxvY2F0aW9uLgotICAgICAgICAgICAgLy8gICAg
IEZvciBleGFtcGxlLCB0YWtlIHRoZSAianF1ZXJ5IiBhbmQgcmV0dXJuIHRoZSBVUkwgZm9yIHRo
ZSByZXNvdXJjZS4KLSAgICAgICAgICAgIHZhciBwcm9taXNlID0gdGhpcy5yZXNvbHZlKHBhaXIu
a2V5LCBrZXksIGZldGNoZXIpLnRoZW4oKGRlcEtleSkgPT4gewotICAgICAgICAgICAgICAgIHZh
ciBkZXBFbnRyeSA9IHRoaXMuZW5zdXJlUmVnaXN0ZXJlZChkZXBLZXkpOwotCi0gICAgICAgICAg
ICAgICAgLy8gUmVjdXJzaXZlIHJlc29sdmluZy4gVGhlIGRlcGVuZGVuY2llcyBvZiB0aGlzIGVu
dHJ5IGlzIGJlaW5nIHJlc29sdmVkIG9yIGFscmVhZHkgcmVzb2x2ZWQuCi0gICAgICAgICAgICAg
ICAgLy8gU3RvcCB0cmFjaW5nIHRoZSBjaXJjdWxhciBkZXBlbmRlbmNpZXMuCi0gICAgICAgICAg
ICAgICAgLy8gQnV0IHRvIHJldHJpZXZlIHRoZSBpbnN0YW50aWF0ZWQgbW9kdWxlIHJlY29yZCBj
b3JyZWN0bHksCi0gICAgICAgICAgICAgICAgLy8gd2UgbmVlZCB0byB3YWl0IGZvciB0aGUgaW5z
dGFudGlhdGlvbiBmb3IgdGhlIGRlcGVuZGVudCBtb2R1bGUuCi0gICAgICAgICAgICAgICAgLy8g
Rm9yIGV4YW1wbGUsIHJlYWNoaW5nIGhlcmUsIHRoZSBtb2R1bGUgaXMgc3RhcnRpbmcgcmVzb2x2
aW5nIHRoZSBkZXBlbmRlbmNpZXMuCi0gICAgICAgICAgICAgICAgLy8gQnV0IHRoZSBtb2R1bGUg
bWF5IG9yIG1heSBub3QgcmVhY2ggdGhlIGluc3RhbnRpYXRpb24gcGhhc2UgaW4gdGhlIGxvYWRl
cidzIHBpcGVsaW5lLgotICAgICAgICAgICAgICAgIC8vIElmIHdlIHdhaXQgZm9yIHRoZSBTYXRp
c2Z5IGZvciB0aGlzIG1vZHVsZSwgaXQgY29uc3RydWN0IHRoZSBjaXJjdWxhciBwcm9taXNlIGNo
YWluIGFuZAotICAgICAgICAgICAgICAgIC8vIHJlamVjdGVkIGJ5IHRoZSBQcm9taXNlcyBydW50
aW1lLiBTaW5jZSBvbmx5IHdlIG5lZWQgaXMgdGhlIGluc3RhbnRpYXRlZCBtb2R1bGUsIGluc3Rl
YWQgb2Ygd2FpdGluZwotICAgICAgICAgICAgICAgIC8vIHRoZSBTYXRpc2Z5IGZvciB0aGlzIG1v
ZHVsZSwgd2UganVzdCB3YWl0IEluc3RhbnRpYXRlIGZvciB0aGlzLgotICAgICAgICAgICAgICAg
IGlmIChkZXBFbnRyeS5zYXRpc2Z5KSB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBkZXBF
bnRyeS5pbnN0YW50aWF0ZS50aGVuKChlbnRyeSkgPT4gewotICAgICAgICAgICAgICAgICAgICAg
ICAgcGFpci52YWx1ZSA9IGVudHJ5Lm1vZHVsZTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBlbnRyeTsKLSAgICAgICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICAgICAgfQot
CisgICAgICAgICAgICB2YXIgZGVwRW50cnkgPSBlbnRyeS5kZXBlbmRlbmNpZXNbaV07CisgICAg
ICAgICAgICB2YXIgcHJvbWlzZSA9IEB1bmRlZmluZWQ7CisKKyAgICAgICAgICAgIC8vIFJlY3Vy
c2l2ZSByZXNvbHZpbmcuIFRoZSBkZXBlbmRlbmNpZXMgb2YgdGhpcyBlbnRyeSBpcyBiZWluZyBy
ZXNvbHZlZCBvciBhbHJlYWR5IHJlc29sdmVkLgorICAgICAgICAgICAgLy8gU3RvcCB0cmFjaW5n
IHRoZSBjaXJjdWxhciBkZXBlbmRlbmNpZXMuCisgICAgICAgICAgICAvLyBCdXQgdG8gcmV0cmll
dmUgdGhlIGluc3RhbnRpYXRlZCBtb2R1bGUgcmVjb3JkIGNvcnJlY3RseSwKKyAgICAgICAgICAg
IC8vIHdlIG5lZWQgdG8gd2FpdCBmb3IgdGhlIGluc3RhbnRpYXRpb24gZm9yIHRoZSBkZXBlbmRl
bnQgbW9kdWxlLgorICAgICAgICAgICAgLy8gRm9yIGV4YW1wbGUsIHJlYWNoaW5nIGhlcmUsIHRo
ZSBtb2R1bGUgaXMgc3RhcnRpbmcgcmVzb2x2aW5nIHRoZSBkZXBlbmRlbmNpZXMuCisgICAgICAg
ICAgICAvLyBCdXQgdGhlIG1vZHVsZSBtYXkgb3IgbWF5IG5vdCByZWFjaCB0aGUgaW5zdGFudGlh
dGlvbiBwaGFzZSBpbiB0aGUgbG9hZGVyJ3MgcGlwZWxpbmUuCisgICAgICAgICAgICAvLyBJZiB3
ZSB3YWl0IGZvciB0aGUgU2F0aXNmeSBmb3IgdGhpcyBtb2R1bGUsIGl0IGNvbnN0cnVjdCB0aGUg
Y2lyY3VsYXIgcHJvbWlzZSBjaGFpbiBhbmQKKyAgICAgICAgICAgIC8vIHJlamVjdGVkIGJ5IHRo
ZSBQcm9taXNlcyBydW50aW1lLiBTaW5jZSBvbmx5IHdlIG5lZWQgaXMgdGhlIGluc3RhbnRpYXRl
ZCBtb2R1bGUsIGluc3RlYWQgb2Ygd2FpdGluZworICAgICAgICAgICAgLy8gdGhlIFNhdGlzZnkg
Zm9yIHRoaXMgbW9kdWxlLCB3ZSBqdXN0IHdhaXQgSW5zdGFudGlhdGUgZm9yIHRoaXMuCisgICAg
ICAgICAgICBpZiAoZGVwRW50cnkuc2F0aXNmeSkKKyAgICAgICAgICAgICAgICBwcm9taXNlID0g
ZGVwRW50cnkuaW5zdGFudGlhdGU7CisgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAg
ICAvLyBDdXJyZW50bHksIG1vZHVsZSBsb2FkZXIgZG8gbm90IHBhc3MgYW55IGluZm9ybWF0aW9u
IGZvciBub24tdG9wLWxldmVsIG1vZHVsZSBmZXRjaGluZy4KLSAgICAgICAgICAgICAgICByZXR1
cm4gdGhpcy5yZXF1ZXN0U2F0aXNmeShkZXBLZXksIEB1bmRlZmluZWQsIGZldGNoZXIpLnRoZW4o
KGVudHJ5KSA9PiB7Ci0gICAgICAgICAgICAgICAgICAgIHBhaXIudmFsdWUgPSBlbnRyeS5tb2R1
bGU7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBlbnRyeTsKLSAgICAgICAgICAgICAgICB9
KTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgQHB1dEJ5VmFsRGlyZWN0KGRlcExvYWRz
LCBkZXBMb2Fkcy5sZW5ndGgsIHByb21pc2UpOworICAgICAgICAgICAgICAgIHByb21pc2UgPSB0
aGlzLnJlcXVlc3RTYXRpc2Z5KGRlcEVudHJ5LCBAdW5kZWZpbmVkLCBmZXRjaGVyKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIEBwdXRCeVZhbERpcmVjdChkZXBMb2FkcywgaSwgcHJvbWlz
ZSk7CiAgICAgICAgIH0KIAogICAgICAgICByZXR1cm4gQEludGVybmFsUHJvbWlzZS5pbnRlcm5h
bEFsbChkZXBMb2FkcykudGhlbigobW9kdWxlcykgPT4gewpAQCAtMjg0LDEwICsyNjYsOCBAQCBm
dW5jdGlvbiBsaW5rKGVudHJ5LCBmZXRjaGVyKQogICAgICAgICAvLyB3ZSBjYW4gY2FsbCBtb2R1
bGVEZWNsYXJhdGlvbkluc3RhbnRpYXRpb24gd2l0aCB0aGUgY29ycmVjdCBvcmRlcgogICAgICAg
ICAvLyB3aXRob3V0IGNvbnN0cnVjdGluZyB0aGUgZGVwZW5kZW5jeSBncmFwaCBieSBjYWxsaW5n
IGRlcGVuZGVuY3lHcmFwaC4KICAgICAgICAgdmFyIGRlcGVuZGVuY2llcyA9IGVudHJ5LmRlcGVu
ZGVuY2llczsKLSAgICAgICAgZm9yICh2YXIgaSA9IDAsIGxlbmd0aCA9IGRlcGVuZGVuY2llcy5s
ZW5ndGg7IGkgPCBsZW5ndGg7ICsraSkgewotICAgICAgICAgICAgdmFyIHBhaXIgPSBkZXBlbmRl
bmNpZXNbaV07Ci0gICAgICAgICAgICB0aGlzLmxpbmsocGFpci52YWx1ZS5yZWdpc3RyeUVudHJ5
LCBmZXRjaGVyKTsKLSAgICAgICAgfQorICAgICAgICBmb3IgKHZhciBpID0gMCwgbGVuZ3RoID0g
ZGVwZW5kZW5jaWVzLmxlbmd0aDsgaSA8IGxlbmd0aDsgKytpKQorICAgICAgICAgICAgdGhpcy5s
aW5rKGRlcGVuZGVuY2llc1tpXSwgZmV0Y2hlcik7CiAKICAgICAgICAgdGhpcy5tb2R1bGVEZWNs
YXJhdGlvbkluc3RhbnRpYXRpb24oZW50cnkubW9kdWxlLCBlbnRyeS5rZXksIGZldGNoZXIpOwog
ICAgIH0gY2F0Y2ggKGVycm9yKSB7CkBAIC0yOTksMjYgKzI3OSwyMiBAQCBmdW5jdGlvbiBsaW5r
KGVudHJ5LCBmZXRjaGVyKQogCiAvLyBNb2R1bGUgc2VtYW50aWNzLgogCi1mdW5jdGlvbiBtb2R1
bGVFdmFsdWF0aW9uKG1vZHVsZVJlY29yZCwgZmV0Y2hlcikKK2Z1bmN0aW9uIG1vZHVsZUV2YWx1
YXRpb24oZW50cnksIGZldGNoZXIpCiB7CiAgICAgLy8gaHR0cDovL3d3dy5lY21hLWludGVybmF0
aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLW1vZHVsZWV2YWx1YXRpb24KIAogICAgICJ1c2Ug
c3RyaWN0IjsKIAotICAgIGlmIChtb2R1bGVSZWNvcmQuZXZhbHVhdGVkKQorICAgIGlmIChlbnRy
eS5ldmFsdWF0ZWQpCiAgICAgICAgIHJldHVybjsKLSAgICBtb2R1bGVSZWNvcmQuZXZhbHVhdGVk
ID0gdHJ1ZTsKLQotICAgIHZhciBlbnRyeSA9IG1vZHVsZVJlY29yZC5yZWdpc3RyeUVudHJ5Owor
ICAgIGVudHJ5LmV2YWx1YXRlZCA9IHRydWU7CiAKICAgICAvLyBUaGUgY29udGVudHMgb2YgdGhl
IFtbUmVxdWVzdGVkTW9kdWxlc11dIGlzIGNsb25lZCBpbnRvIGVudHJ5LmRlcGVuZGVuY2llcy4K
ICAgICB2YXIgZGVwZW5kZW5jaWVzID0gZW50cnkuZGVwZW5kZW5jaWVzOwotICAgIGZvciAodmFy
IGkgPSAwLCBsZW5ndGggPSBkZXBlbmRlbmNpZXMubGVuZ3RoOyBpIDwgbGVuZ3RoOyArK2kpIHsK
LSAgICAgICAgdmFyIHBhaXIgPSBkZXBlbmRlbmNpZXNbaV07Ci0gICAgICAgIHZhciByZXF1aXJl
ZE1vZHVsZVJlY29yZCA9IHBhaXIudmFsdWU7Ci0gICAgICAgIHRoaXMubW9kdWxlRXZhbHVhdGlv
bihyZXF1aXJlZE1vZHVsZVJlY29yZCwgZmV0Y2hlcik7Ci0gICAgfQotICAgIHRoaXMuZXZhbHVh
dGUoZW50cnkua2V5LCBtb2R1bGVSZWNvcmQsIGZldGNoZXIpOworICAgIGZvciAodmFyIGkgPSAw
LCBsZW5ndGggPSBkZXBlbmRlbmNpZXMubGVuZ3RoOyBpIDwgbGVuZ3RoOyArK2kpCisgICAgICAg
IHRoaXMubW9kdWxlRXZhbHVhdGlvbihkZXBlbmRlbmNpZXNbaV0sIGZldGNoZXIpOworCisgICAg
dGhpcy5ldmFsdWF0ZShlbnRyeS5rZXksIGVudHJ5Lm1vZHVsZSwgZmV0Y2hlcik7CiB9CiAKIC8v
IEFQSXMgdG8gY29udHJvbCB0aGUgbW9kdWxlIGxvYWRlci4KQEAgLTM0Myw3ICszMTksNyBAQCBm
dW5jdGlvbiBsb2FkTW9kdWxlKG1vZHVsZU5hbWUsIHBhcmFtZXRlcnMsIGZldGNoZXIpCiAgICAg
Ly8gVGFrZSB0aGUgbmFtZSBhbmQgcmVzb2x2ZSBpdCB0byB0aGUgdW5pcXVlIGlkZW50aWZpZXIg
Zm9yIHRoZSByZXNvdXJjZSBsb2NhdGlvbi4KICAgICAvLyBGb3IgZXhhbXBsZSwgdGFrZSB0aGUg
ImpxdWVyeSIgYW5kIHJldHVybiB0aGUgVVJMIGZvciB0aGUgcmVzb3VyY2UuCiAgICAgcmV0dXJu
IHRoaXMucmVzb2x2ZShtb2R1bGVOYW1lLCBAdW5kZWZpbmVkLCBmZXRjaGVyKS50aGVuKChrZXkp
ID0+IHsKLSAgICAgICAgcmV0dXJuIHRoaXMucmVxdWVzdFNhdGlzZnkoa2V5LCBwYXJhbWV0ZXJz
LCBmZXRjaGVyKTsKKyAgICAgICAgcmV0dXJuIHRoaXMucmVxdWVzdFNhdGlzZnkodGhpcy5lbnN1
cmVSZWdpc3RlcmVkKGtleSksIHBhcmFtZXRlcnMsIGZldGNoZXIpOwogICAgIH0pLnRoZW4oKGVu
dHJ5KSA9PiB7CiAgICAgICAgIHJldHVybiBlbnRyeS5rZXk7CiAgICAgfSk7CkBAIC0zNTgsNyAr
MzM0LDcgQEAgZnVuY3Rpb24gbGlua0FuZEV2YWx1YXRlTW9kdWxlKGtleSwgZmV0Y2hlcikKICAg
ICAgICAgQHRocm93VHlwZUVycm9yKCJSZXF1ZXN0ZWQgbW9kdWxlIGlzIG5vdCBpbnN0YW50aWF0
ZWQgeWV0LiIpOwogCiAgICAgdGhpcy5saW5rKGVudHJ5LCBmZXRjaGVyKTsKLSAgICByZXR1cm4g
dGhpcy5tb2R1bGVFdmFsdWF0aW9uKGVudHJ5Lm1vZHVsZSwgZmV0Y2hlcik7CisgICAgcmV0dXJu
IHRoaXMubW9kdWxlRXZhbHVhdGlvbihlbnRyeSwgZmV0Y2hlcik7CiB9CiAKIGZ1bmN0aW9uIGxv
YWRBbmRFdmFsdWF0ZU1vZHVsZShtb2R1bGVOYW1lLCBwYXJhbWV0ZXJzLCBmZXRjaGVyKQpAQCAt
Mzc0LDcgKzM1MCw3IEBAIGZ1bmN0aW9uIHJlcXVlc3RJbXBvcnRNb2R1bGUoa2V5LCBwYXJhbWV0
ZXJzLCBmZXRjaGVyKQogewogICAgICJ1c2Ugc3RyaWN0IjsKIAotICAgIHJldHVybiB0aGlzLnJl
cXVlc3RTYXRpc2Z5KGtleSwgcGFyYW1ldGVycywgZmV0Y2hlcikudGhlbigoZW50cnkpID0+IHsK
KyAgICByZXR1cm4gdGhpcy5yZXF1ZXN0U2F0aXNmeSh0aGlzLmVuc3VyZVJlZ2lzdGVyZWQoa2V5
KSwgcGFyYW1ldGVycywgZmV0Y2hlcikudGhlbigoZW50cnkpID0+IHsKICAgICAgICAgdGhpcy5s
aW5rQW5kRXZhbHVhdGVNb2R1bGUoZW50cnkua2V5LCBmZXRjaGVyKTsKICAgICAgICAgcmV0dXJu
IHRoaXMuZ2V0TW9kdWxlTmFtZXNwYWNlT2JqZWN0KGVudHJ5Lm1vZHVsZSk7CiAgICAgfSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qc2MuY3BwCmluZGV4IGI1NmU3NzZmZGZhZmE4Y2Q4YjAzMTIxNmZiNDQ2MDcwMjU1
OTU2ZTguLmQzZWUyOGRiY2QxYTlmYzQ2NjFkMzc3YjUyODllZTk4ODljYzQxMWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qc2MuY3BwCkBAIC0xNjU4LDcgKzE2NTgsNyBAQCBjbGFzcyBHbG9iYWxPYmplY3QgOiBw
dWJsaWMgSlNHbG9iYWxPYmplY3QgewogICAgIH0KIAogICAgIHN0YXRpYyBKU0ludGVybmFsUHJv
bWlzZSogbW9kdWxlTG9hZGVySW1wb3J0TW9kdWxlKEpTR2xvYmFsT2JqZWN0KiwgRXhlY1N0YXRl
KiwgSlNNb2R1bGVMb2FkZXIqLCBKU1N0cmluZyosIEpTVmFsdWUsIGNvbnN0IFNvdXJjZU9yaWdp
biYpOwotICAgIHN0YXRpYyBKU0ludGVybmFsUHJvbWlzZSogbW9kdWxlTG9hZGVyUmVzb2x2ZShK
U0dsb2JhbE9iamVjdCosIEV4ZWNTdGF0ZSosIEpTTW9kdWxlTG9hZGVyKiwgSlNWYWx1ZSwgSlNW
YWx1ZSwgSlNWYWx1ZSk7CisgICAgc3RhdGljIElkZW50aWZpZXIgbW9kdWxlTG9hZGVyUmVzb2x2
ZShKU0dsb2JhbE9iamVjdCosIEV4ZWNTdGF0ZSosIEpTTW9kdWxlTG9hZGVyKiwgSlNWYWx1ZSwg
SlNWYWx1ZSwgSlNWYWx1ZSk7CiAgICAgc3RhdGljIEpTSW50ZXJuYWxQcm9taXNlKiBtb2R1bGVM
b2FkZXJGZXRjaChKU0dsb2JhbE9iamVjdCosIEV4ZWNTdGF0ZSosIEpTTW9kdWxlTG9hZGVyKiwg
SlNWYWx1ZSwgSlNWYWx1ZSwgSlNWYWx1ZSk7CiAgICAgc3RhdGljIEpTT2JqZWN0KiBtb2R1bGVM
b2FkZXJDcmVhdGVJbXBvcnRNZXRhUHJvcGVydGllcyhKU0dsb2JhbE9iamVjdCosIEV4ZWNTdGF0
ZSosIEpTTW9kdWxlTG9hZGVyKiwgSlNWYWx1ZSwgSlNNb2R1bGVSZWNvcmQqLCBKU1ZhbHVlKTsK
IH07CkBAIC0xODQwLDU3ICsxODQwLDQ2IEBAIEpTSW50ZXJuYWxQcm9taXNlKiBHbG9iYWxPYmpl
Y3Q6Om1vZHVsZUxvYWRlckltcG9ydE1vZHVsZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsCiAgICAg
cmV0dXJuIHJlc3VsdDsKIH0KIAotSlNJbnRlcm5hbFByb21pc2UqIEdsb2JhbE9iamVjdDo6bW9k
dWxlTG9hZGVyUmVzb2x2ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFeGVjU3RhdGUq
IGV4ZWMsIEpTTW9kdWxlTG9hZGVyKiwgSlNWYWx1ZSBrZXlWYWx1ZSwgSlNWYWx1ZSByZWZlcnJl
clZhbHVlLCBKU1ZhbHVlKQorSWRlbnRpZmllciBHbG9iYWxPYmplY3Q6Om1vZHVsZUxvYWRlclJl
c29sdmUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBKU01v
ZHVsZUxvYWRlciosIEpTVmFsdWUga2V5VmFsdWUsIEpTVmFsdWUgcmVmZXJyZXJWYWx1ZSwgSlNW
YWx1ZSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7Ci0gICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfQ0FUQ0hfU0NPUEUodm0pOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKIAotICAgIEpTSW50ZXJuYWxQcm9taXNlRGVmZXJyZWQqIGRlZmVycmVk
ID0gSlNJbnRlcm5hbFByb21pc2VEZWZlcnJlZDo6Y3JlYXRlKGV4ZWMsIGdsb2JhbE9iamVjdCk7
CiAgICAgc2NvcGUucmVsZWFzZUFzc2VydE5vRXhjZXB0aW9uKCk7CiAgICAgY29uc3QgSWRlbnRp
ZmllciBrZXkgPSBrZXlWYWx1ZS50b1Byb3BlcnR5S2V5KGV4ZWMpOwotICAgIGlmIChVTkxJS0VM
WShzY29wZS5leGNlcHRpb24oKSkpIHsKLSAgICAgICAgSlNWYWx1ZSBleGNlcHRpb24gPSBzY29w
ZS5leGNlcHRpb24oKTsKLSAgICAgICAgc2NvcGUuY2xlYXJFeGNlcHRpb24oKTsKLSAgICAgICAg
cmV0dXJuIGRlZmVycmVkLT5yZWplY3QoZXhlYywgZXhjZXB0aW9uKTsKLSAgICB9CisgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIGlmIChrZXkuaXNTeW1ib2woKSkK
KyAgICAgICAgcmV0dXJuIGtleTsKIAotICAgIGlmIChrZXkuaXNTeW1ib2woKSkgewotICAgICAg
ICBhdXRvIHJlc3VsdCA9IGRlZmVycmVkLT5yZXNvbHZlKGV4ZWMsIGtleVZhbHVlKTsKLSAgICAg
ICAgc2NvcGUucmVsZWFzZUFzc2VydE5vRXhjZXB0aW9uKCk7Ci0gICAgICAgIHJldHVybiByZXN1
bHQ7Ci0gICAgfQogICAgIGlmIChyZWZlcnJlclZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKICAgICAg
ICAgYXV0byBkaXJlY3RvcnlOYW1lID0gY3VycmVudFdvcmtpbmdEaXJlY3RvcnkoKTsKLSAgICAg
ICAgaWYgKCFkaXJlY3RvcnlOYW1lKQotICAgICAgICAgICAgcmV0dXJuIGRlZmVycmVkLT5yZWpl
Y3QoZXhlYywgY3JlYXRlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJDb3VsZCBub3QgcmVzb2x2
ZSB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeS4iKSkpOwotICAgICAgICBhdXRvIHJlc3Vs
dCA9IGRlZmVycmVkLT5yZXNvbHZlKGV4ZWMsIGpzU3RyaW5nKGV4ZWMsIHJlc29sdmVQYXRoKGRp
cmVjdG9yeU5hbWUudmFsdWUoKSwgTW9kdWxlTmFtZShrZXkuaW1wbCgpKSkpKTsKLSAgICAgICAg
c2NvcGUucmVsZWFzZUFzc2VydE5vRXhjZXB0aW9uKCk7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7
CisgICAgICAgIGlmICghZGlyZWN0b3J5TmFtZSkgeworICAgICAgICAgICAgdGhyb3dFeGNlcHRp
b24oZXhlYywgc2NvcGUsIGNyZWF0ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQ291bGQgbm90
IHJlc29sdmUgdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkuIikpKTsKKyAgICAgICAgICAg
IHJldHVybiB7IH07CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIElkZW50aWZpZXI6OmZyb21T
dHJpbmcoJnZtLCByZXNvbHZlUGF0aChkaXJlY3RvcnlOYW1lLnZhbHVlKCksIE1vZHVsZU5hbWUo
a2V5LmltcGwoKSkpKTsKICAgICB9CiAKICAgICBjb25zdCBJZGVudGlmaWVyIHJlZmVycmVyID0g
cmVmZXJyZXJWYWx1ZS50b1Byb3BlcnR5S2V5KGV4ZWMpOwotICAgIGlmIChVTkxJS0VMWShzY29w
ZS5leGNlcHRpb24oKSkpIHsKLSAgICAgICAgSlNWYWx1ZSBleGNlcHRpb24gPSBzY29wZS5leGNl
cHRpb24oKTsKLSAgICAgICAgc2NvcGUuY2xlYXJFeGNlcHRpb24oKTsKLSAgICAgICAgcmV0dXJu
IGRlZmVycmVkLT5yZWplY3QoZXhlYywgZXhjZXB0aW9uKTsKLSAgICB9CisgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgeyB9KTsKIAogICAgIGlmIChyZWZlcnJlci5pc1N5bWJvbCgpKSB7
CiAgICAgICAgIGF1dG8gZGlyZWN0b3J5TmFtZSA9IGN1cnJlbnRXb3JraW5nRGlyZWN0b3J5KCk7
Ci0gICAgICAgIGlmICghZGlyZWN0b3J5TmFtZSkKLSAgICAgICAgICAgIHJldHVybiBkZWZlcnJl
ZC0+cmVqZWN0KGV4ZWMsIGNyZWF0ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQ291bGQgbm90
IHJlc29sdmUgdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkuIikpKTsKLSAgICAgICAgYXV0
byByZXN1bHQgPSBkZWZlcnJlZC0+cmVzb2x2ZShleGVjLCBqc1N0cmluZyhleGVjLCByZXNvbHZl
UGF0aChkaXJlY3RvcnlOYW1lLnZhbHVlKCksIE1vZHVsZU5hbWUoa2V5LmltcGwoKSkpKSk7Ci0g
ICAgICAgIHNjb3BlLnJlbGVhc2VBc3NlcnROb0V4Y2VwdGlvbigpOwotICAgICAgICByZXR1cm4g
cmVzdWx0OworICAgICAgICBpZiAoIWRpcmVjdG9yeU5hbWUpIHsKKyAgICAgICAgICAgIHRocm93
RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkNv
dWxkIG5vdCByZXNvbHZlIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5LiIpKSk7CisgICAg
ICAgICAgICByZXR1cm4geyB9OworICAgICAgICB9CisgICAgICAgIHJldHVybiBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKCZ2bSwgcmVzb2x2ZVBhdGgoZGlyZWN0b3J5TmFtZS52YWx1ZSgpLCBNb2R1
bGVOYW1lKGtleS5pbXBsKCkpKSk7CiAgICAgfQogCiAgICAgLy8gSWYgdGhlIHJlZmVycmVyIGV4
aXN0cywgd2UgYXNzdW1lIHRoYXQgdGhlIHJlZmVycmVyIGlzIHRoZSBjb3JyZWN0IGFic29sdXRl
IHBhdGguCiAgICAgYXV0byBkaXJlY3RvcnlOYW1lID0gZXh0cmFjdERpcmVjdG9yeU5hbWUocmVm
ZXJyZXIuaW1wbCgpKTsKLSAgICBpZiAoIWRpcmVjdG9yeU5hbWUpCi0gICAgICAgIHJldHVybiBk
ZWZlcnJlZC0+cmVqZWN0KGV4ZWMsIGNyZWF0ZUVycm9yKGV4ZWMsIG1ha2VTdHJpbmcoIkNvdWxk
IG5vdCByZXNvbHZlIHRoZSByZWZlcnJlciBuYW1lICciLCBTdHJpbmcocmVmZXJyZXIuaW1wbCgp
KSwgIicuIikpKTsKLSAgICBhdXRvIHJlc3VsdCA9IGRlZmVycmVkLT5yZXNvbHZlKGV4ZWMsIGpz
U3RyaW5nKGV4ZWMsIHJlc29sdmVQYXRoKGRpcmVjdG9yeU5hbWUudmFsdWUoKSwgTW9kdWxlTmFt
ZShrZXkuaW1wbCgpKSkpKTsKLSAgICBzY29wZS5yZWxlYXNlQXNzZXJ0Tm9FeGNlcHRpb24oKTsK
LSAgICByZXR1cm4gcmVzdWx0OworICAgIGlmICghZGlyZWN0b3J5TmFtZSkgeworICAgICAgICB0
aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRlRXJyb3IoZXhlYywgbWFrZVN0cmluZygi
Q291bGQgbm90IHJlc29sdmUgdGhlIHJlZmVycmVyIG5hbWUgJyIsIFN0cmluZyhyZWZlcnJlci5p
bXBsKCkpLCAiJy4iKSkpOworICAgICAgICByZXR1cm4geyB9OworICAgIH0KKyAgICByZXR1cm4g
SWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sIHJlc29sdmVQYXRoKGRpcmVjdG9yeU5hbWUudmFs
dWUoKSwgTW9kdWxlTmFtZShrZXkuaW1wbCgpKSkpOwogfQogCiBzdGF0aWMgdm9pZCBjb252ZXJ0
U2hlYmFuZ1RvSlNDb21tZW50KFZlY3RvcjxjaGFyPiYgYnVmZmVyKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQWJzdHJhY3RNb2R1bGVSZWNvcmQuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQWJzdHJhY3RNb2R1bGVSZWNvcmQuY3BwCmluZGV4
IGIwM2FjZTJhNzM3NzI0ZmQ4YzYwYzhhYjQ5NzU0MTAxMzliZTRjZDcuLmM1ZTMzZGM4NTM2Mjli
OThiZjFkNGM2MDhhMTc4ZjI0NGQ4ZGE5OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0Fic3RyYWN0TW9kdWxlUmVjb3JkLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9BYnN0cmFjdE1vZHVsZVJlY29yZC5jcHAKQEAgLTU0LDggKzU0LDYg
QEAgdm9pZCBBYnN0cmFjdE1vZHVsZVJlY29yZDo6ZmluaXNoQ3JlYXRpb24oRXhlY1N0YXRlKiBl
eGVjLCBWTSYgdm0pCiB7CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwogICAgIEFTU0VS
VChpbmhlcml0cyh2bSwgaW5mbygpKSk7Ci0gICAgcHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKCZ2bSwgQVNDSUlMaXRlcmFsKCJyZWdpc3RyeUVudHJ5IikpLCBqc1VuZGVmaW5l
ZCgpKTsKLSAgICBwdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCBBU0NJ
SUxpdGVyYWwoImV2YWx1YXRlZCIpKSwganNCb29sZWFuKGZhbHNlKSk7CiAKICAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgSlNNYXAqIG1hcCA9IEpTTWFwOjpj
cmVhdGUoZXhlYywgdm0sIGdsb2JhbE9iamVjdCgpLT5tYXBTdHJ1Y3R1cmUoKSk7CkBAIC0xNDks
MTAgKzE0NywxMCBAQCBBYnN0cmFjdE1vZHVsZVJlY29yZCogQWJzdHJhY3RNb2R1bGVSZWNvcmQ6
Omhvc3RSZXNvbHZlSW1wb3J0ZWRNb2R1bGUoRXhlY1N0YXRlKgogICAgIFZNJiB2bSA9IGV4ZWMt
PnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIEpT
VmFsdWUgbW9kdWxlTmFtZVZhbHVlID0gaWRlbnRpZmllclRvSlNWYWx1ZShleGVjLCBtb2R1bGVO
YW1lKTsKLSAgICBKU1ZhbHVlIHBhaXIgPSBtX2RlcGVuZGVuY2llc01hcC0+SlNNYXA6OmdldChl
eGVjLCBtb2R1bGVOYW1lVmFsdWUpOworICAgIEpTVmFsdWUgZW50cnkgPSBtX2RlcGVuZGVuY2ll
c01hcC0+SlNNYXA6OmdldChleGVjLCBtb2R1bGVOYW1lVmFsdWUpOwogICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIG51bGxwdHIpOwogICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICByZXR1
cm4ganNDYXN0PEFic3RyYWN0TW9kdWxlUmVjb3JkKj4ocGFpci5nZXQoZXhlYywgSWRlbnRpZmll
cjo6ZnJvbVN0cmluZyhleGVjLCAidmFsdWUiKSkpOworICAgIHJldHVybiBqc0Nhc3Q8QWJzdHJh
Y3RNb2R1bGVSZWNvcmQqPihlbnRyeS5nZXQoZXhlYywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhl
eGVjLCAibW9kdWxlIikpKTsKIH0KIAogYXV0byBBYnN0cmFjdE1vZHVsZVJlY29yZDo6cmVzb2x2
ZUltcG9ydChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIGxvY2FsTmFtZSkgLT4g
UmVzb2x1dGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0LmgKaW5kZXggNGEyNTBiOTZjMTdkNTZlOTUwZWRmMTY1YjI0OTBkMDMzN2JlZTEwOC4uNzhk
NjExMjUzMmM2YTFiZWIwOTI1ZGQ5OTBhNzI1M2Y4ZGVkYjhjMiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCkBAIC0xODksNyArMTg5LDcgQEAg
c3RydWN0IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlIHsKICAgICB0eXBlZGVmIEpTSW50ZXJuYWxQ
cm9taXNlKiAoKk1vZHVsZUxvYWRlckltcG9ydE1vZHVsZVB0cikoSlNHbG9iYWxPYmplY3QqLCBF
eGVjU3RhdGUqLCBKU01vZHVsZUxvYWRlciosIEpTU3RyaW5nKiwgSlNWYWx1ZSwgY29uc3QgU291
cmNlT3JpZ2luJik7CiAgICAgTW9kdWxlTG9hZGVySW1wb3J0TW9kdWxlUHRyIG1vZHVsZUxvYWRl
ckltcG9ydE1vZHVsZTsKIAotICAgIHR5cGVkZWYgSlNJbnRlcm5hbFByb21pc2UqICgqTW9kdWxl
TG9hZGVyUmVzb2x2ZVB0cikoSlNHbG9iYWxPYmplY3QqLCBFeGVjU3RhdGUqLCBKU01vZHVsZUxv
YWRlciosIEpTVmFsdWUsIEpTVmFsdWUsIEpTVmFsdWUpOworICAgIHR5cGVkZWYgSWRlbnRpZmll
ciAoKk1vZHVsZUxvYWRlclJlc29sdmVQdHIpKEpTR2xvYmFsT2JqZWN0KiwgRXhlY1N0YXRlKiwg
SlNNb2R1bGVMb2FkZXIqLCBKU1ZhbHVlLCBKU1ZhbHVlLCBKU1ZhbHVlKTsKICAgICBNb2R1bGVM
b2FkZXJSZXNvbHZlUHRyIG1vZHVsZUxvYWRlclJlc29sdmU7CiAKICAgICB0eXBlZGVmIEpTSW50
ZXJuYWxQcm9taXNlKiAoKk1vZHVsZUxvYWRlckZldGNoUHRyKShKU0dsb2JhbE9iamVjdCosIEV4
ZWNTdGF0ZSosIEpTTW9kdWxlTG9hZGVyKiwgSlNWYWx1ZSwgSlNWYWx1ZSwgSlNWYWx1ZSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUxvYWRlci5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUxvYWRlci5jcHAKaW5k
ZXggNTBmNTE0ODBlODI4NjMzOTRlMDEzZGZmNzA4MWQ0NWY3Y2M5OGE4Ny4uOTg0MTYyYTZmYjE5
ZGRlZWU0OTJjODNjYjYyZDBmMzAzOWY1OTVjNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTTW9kdWxlTG9hZGVyLmNwcApAQCAtMjAyLDcgKzIwMiw3IEBAIEpTSW50
ZXJuYWxQcm9taXNlKiBKU01vZHVsZUxvYWRlcjo6aW1wb3J0TW9kdWxlKEV4ZWNTdGF0ZSogZXhl
YywgSlNTdHJpbmcqIG1vZHVsCiAgICAgcmV0dXJuIGRlZmVycmVkLT5wcm9taXNlKCk7CiB9CiAK
LUpTSW50ZXJuYWxQcm9taXNlKiBKU01vZHVsZUxvYWRlcjo6cmVzb2x2ZShFeGVjU3RhdGUqIGV4
ZWMsIEpTVmFsdWUgbmFtZSwgSlNWYWx1ZSByZWZlcnJlciwgSlNWYWx1ZSBzY3JpcHRGZXRjaGVy
KQorSWRlbnRpZmllciBKU01vZHVsZUxvYWRlcjo6cmVzb2x2ZVN5bmMoRXhlY1N0YXRlKiBleGVj
LCBKU1ZhbHVlIG5hbWUsIEpTVmFsdWUgcmVmZXJyZXIsIEpTVmFsdWUgc2NyaXB0RmV0Y2hlcikK
IHsKICAgICBpZiAoT3B0aW9uczo6ZHVtcE1vZHVsZUxvYWRpbmdTdGF0ZSgpKQogICAgICAgICBk
YXRhTG9nKCJMb2FkZXIgW3Jlc29sdmVdICIsIHByaW50YWJsZU1vZHVsZUtleShleGVjLCBuYW1l
KSwgIlxuIik7CkBAIC0yMTAsOSArMjEwLDI1IEBAIEpTSW50ZXJuYWxQcm9taXNlKiBKU01vZHVs
ZUxvYWRlcjo6cmVzb2x2ZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgbmFtZSwgSlNWYWx1CiAg
ICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmpl
Y3QoKTsKICAgICBpZiAoZ2xvYmFsT2JqZWN0LT5nbG9iYWxPYmplY3RNZXRob2RUYWJsZSgpLT5t
b2R1bGVMb2FkZXJSZXNvbHZlKQogICAgICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LT5nbG9iYWxP
YmplY3RNZXRob2RUYWJsZSgpLT5tb2R1bGVMb2FkZXJSZXNvbHZlKGdsb2JhbE9iamVjdCwgZXhl
YywgdGhpcywgbmFtZSwgcmVmZXJyZXIsIHNjcmlwdEZldGNoZXIpOwotICAgIEpTSW50ZXJuYWxQ
cm9taXNlRGVmZXJyZWQqIGRlZmVycmVkID0gSlNJbnRlcm5hbFByb21pc2VEZWZlcnJlZDo6Y3Jl
YXRlKGV4ZWMsIGdsb2JhbE9iamVjdCk7Ci0gICAgZGVmZXJyZWQtPnJlc29sdmUoZXhlYywgbmFt
ZSk7Ci0gICAgcmV0dXJuIGRlZmVycmVkLT5wcm9taXNlKCk7CisgICAgcmV0dXJuIG5hbWUudG9Q
cm9wZXJ0eUtleShleGVjKTsKK30KKworSlNJbnRlcm5hbFByb21pc2UqIEpTTW9kdWxlTG9hZGVy
OjpyZXNvbHZlKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBuYW1lLCBKU1ZhbHVlIHJlZmVycmVy
LCBKU1ZhbHVlIHNjcmlwdEZldGNoZXIpCit7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7CisKKyAgICBKU0ludGVybmFs
UHJvbWlzZURlZmVycmVkKiBkZWZlcnJlZCA9IEpTSW50ZXJuYWxQcm9taXNlRGVmZXJyZWQ6OmNy
ZWF0ZShleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpOworICAgIHNjb3BlLnJlbGVh
c2VBc3NlcnROb0V4Y2VwdGlvbigpOworICAgIGNvbnN0IElkZW50aWZpZXIgbW9kdWxlS2V5ID0g
cmVzb2x2ZVN5bmMoZXhlYywgbmFtZSwgcmVmZXJyZXIsIHNjcmlwdEZldGNoZXIpOworICAgIGlm
IChVTkxJS0VMWShzY29wZS5leGNlcHRpb24oKSkpIHsKKyAgICAgICAgSlNWYWx1ZSBleGNlcHRp
b24gPSBzY29wZS5leGNlcHRpb24oKTsKKyAgICAgICAgc2NvcGUuY2xlYXJFeGNlcHRpb24oKTsK
KyAgICAgICAgcmV0dXJuIGRlZmVycmVkLT5yZWplY3QoZXhlYywgZXhjZXB0aW9uKTsKKyAgICB9
CisgICAgYXV0byByZXN1bHQgPSBkZWZlcnJlZC0+cmVzb2x2ZShleGVjLCBpZGVudGlmaWVyVG9K
U1ZhbHVlKHZtLCBtb2R1bGVLZXkpKTsKKyAgICBzY29wZS5yZWxlYXNlQXNzZXJ0Tm9FeGNlcHRp
b24oKTsKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiBKU0ludGVybmFsUHJvbWlzZSogSlNNb2R1
bGVMb2FkZXI6OmZldGNoKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBrZXksIEpTVmFsdWUgcGFy
YW1ldGVycywgSlNWYWx1ZSBzY3JpcHRGZXRjaGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVMb2FkZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTTW9kdWxlTG9hZGVyLmgKaW5kZXggODlhNDczNjNmMjFlNDE4NTcyMTlkNWI3
MWRjZThhMThiNjllYWE5My4uNTQwNDE5OWVhM2FmMWI0MWVlZjY5MTM5M2Y0NDU0NmZhY2Y3MmIx
YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVMb2Fk
ZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUxvYWRlci5o
CkBAIC03Miw2ICs3Miw3IEBAIGNsYXNzIEpTTW9kdWxlTG9hZGVyIDogcHVibGljIEpTTm9uRmlu
YWxPYmplY3QgewogICAgIC8vIFBsYXRmb3JtIGRlcGVuZGVudCBob29rZWQgQVBJcy4KICAgICBK
U0ludGVybmFsUHJvbWlzZSogaW1wb3J0TW9kdWxlKEV4ZWNTdGF0ZSosIEpTU3RyaW5nKiBtb2R1
bGVOYW1lLCBKU1ZhbHVlIHBhcmFtZXRlcnMsIGNvbnN0IFNvdXJjZU9yaWdpbiYgcmVmZXJyZXIp
OwogICAgIEpTSW50ZXJuYWxQcm9taXNlKiByZXNvbHZlKEV4ZWNTdGF0ZSosIEpTVmFsdWUgbmFt
ZSwgSlNWYWx1ZSByZWZlcnJlciwgSlNWYWx1ZSBzY3JpcHRGZXRjaGVyKTsKKyAgICBJZGVudGlm
aWVyIHJlc29sdmVTeW5jKEV4ZWNTdGF0ZSosIEpTVmFsdWUgbmFtZSwgSlNWYWx1ZSByZWZlcnJl
ciwgSlNWYWx1ZSBzY3JpcHRGZXRjaGVyKTsKICAgICBKU0ludGVybmFsUHJvbWlzZSogZmV0Y2go
RXhlY1N0YXRlKiwgSlNWYWx1ZSBrZXksIEpTVmFsdWUgcGFyYW1ldGVycywgSlNWYWx1ZSBzY3Jp
cHRGZXRjaGVyKTsKICAgICBKU09iamVjdCogY3JlYXRlSW1wb3J0TWV0YVByb3BlcnRpZXMoRXhl
Y1N0YXRlKiwgSlNWYWx1ZSBrZXksIEpTTW9kdWxlUmVjb3JkKiwgSlNWYWx1ZSBzY3JpcHRGZXRj
aGVyKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTW9kdWxl
TG9hZGVyUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01vZHVs
ZUxvYWRlclByb3RvdHlwZS5jcHAKaW5kZXggZTgzNjM4MDIyODQyYzE3MGQ1NGQzNmUwY2FlOTI0
NmFhOTcyYmQ0OS4uM2Q0ZjQ0YTE0NTk3ZWMxY2MwNWJjZjJjNzI2NGFhMmViNTQ3ZmFlNCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTW9kdWxlTG9hZGVyUHJvdG90
eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Nb2R1bGVMb2FkZXJQ
cm90b3R5cGUuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiTW9kdWxlTG9hZGVyUHJv
dG90eXBlLmgiCiAKICNpbmNsdWRlICJCdWlsdGluTmFtZXMuaCIKKyNpbmNsdWRlICJDYXRjaFNj
b3BlLmgiCiAjaW5jbHVkZSAiQ29kZVByb2ZpbGluZy5oIgogI2luY2x1ZGUgIkVycm9yLmgiCiAj
aW5jbHVkZSAiRXhjZXB0aW9uLmgiCkBAIC01Miw2ICs1Myw3IEBAIHN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIG1vZHVsZUxvYWRlclByb3RvdHlwZVJlcXVlc3RlZE1vZHVsZXMo
RXhlY1N0CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtb2R1bGVMb2FkZXJQ
cm90b3R5cGVFdmFsdWF0ZShFeGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIG1vZHVsZUxvYWRlclByb3RvdHlwZU1vZHVsZURlY2xhcmF0aW9uSW5zdGFudGlh
dGlvbihFeGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1v
ZHVsZUxvYWRlclByb3RvdHlwZVJlc29sdmUoRXhlY1N0YXRlKik7CitzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBtb2R1bGVMb2FkZXJQcm90b3R5cGVSZXNvbHZlU3luYyhFeGVj
U3RhdGUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1vZHVsZUxvYWRl
clByb3RvdHlwZUZldGNoKEV4ZWNTdGF0ZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgbW9kdWxlTG9hZGVyUHJvdG90eXBlR2V0TW9kdWxlTmFtZXNwYWNlT2JqZWN0KEV4
ZWNTdGF0ZSopOwogCkBAIC04Niw2ICs4OCw3IEBAIGNvbnN0IENsYXNzSW5mbyBNb2R1bGVMb2Fk
ZXJQcm90b3R5cGU6OnNfaW5mbyA9IHsgIk1vZHVsZUxvYWRlciIsICZCYXNlOjpzX2luZm8sCiAg
ICAgcGFyc2VNb2R1bGUgICAgICAgICAgICAgICAgICAgIG1vZHVsZUxvYWRlclByb3RvdHlwZVBh
cnNlTW9kdWxlICAgICAgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAyCiAgICAgcmVx
dWVzdGVkTW9kdWxlcyAgICAgICAgICAgICAgIG1vZHVsZUxvYWRlclByb3RvdHlwZVJlcXVlc3Rl
ZE1vZHVsZXMgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCiAgICAgcmVzb2x2ZSAg
ICAgICAgICAgICAgICAgICAgICAgIG1vZHVsZUxvYWRlclByb3RvdHlwZVJlc29sdmUgICAgICAg
ICAgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAyCisgICAgcmVzb2x2ZVN5bmMgICAg
ICAgICAgICAgICAgICAgIG1vZHVsZUxvYWRlclByb3RvdHlwZVJlc29sdmVTeW5jICAgICAgICAg
ICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAyCiAgICAgZmV0Y2ggICAgICAgICAgICAgICAg
ICAgICAgICAgIG1vZHVsZUxvYWRlclByb3RvdHlwZUZldGNoICAgICAgICAgICAgICAgICAgICAg
ICAgICBEb250RW51bXxGdW5jdGlvbiAzCiBAZW5kCiAqLwpAQCAtMTgyLDYgKzE4NSwxOSBAQCBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1vZHVsZUxvYWRlclByb3RvdHlwZVJlc29sdmUo
RXhlY1N0YXRlKiBleGVjKQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUobG9hZGVyLT5yZXNv
bHZlKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApLCBleGVjLT5hcmd1bWVudCgxKSwgZXhlYy0+YXJn
dW1lbnQoMikpKTsKIH0KIAorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtb2R1bGVMb2Fk
ZXJQcm90b3R5cGVSZXNvbHZlU3luYyhFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgVk0mIHZtID0g
ZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7CisK
KyAgICBKU01vZHVsZUxvYWRlciogbG9hZGVyID0ganNEeW5hbWljQ2FzdDxKU01vZHVsZUxvYWRl
cio+KHZtLCBleGVjLT50aGlzVmFsdWUoKSk7CisgICAgaWYgKCFsb2FkZXIpCisgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgYXV0byByZXN1bHQgPSBs
b2FkZXItPnJlc29sdmVTeW5jKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApLCBleGVjLT5hcmd1bWVu
dCgxKSwgZXhlYy0+YXJndW1lbnQoMikpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IGVuY29kZWRKU1ZhbHVlKCkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoaWRlbnRpZmll
clRvSlNWYWx1ZSh2bSwgcmVzdWx0KSk7Cit9CisKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgbW9kdWxlTG9hZGVyUHJvdG90eXBlRmV0Y2goRXhlY1N0YXRlKiBleGVjKQogewogICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTVdpbmRvd0Jhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01X
aW5kb3dCYXNlLmNwcAppbmRleCBhZDI4ZThkODRmNjM3YTljZjI5NTQ4YzBlODU2OGM2ZjRkZDc2
YTliLi5mOGRhODdiZDI2MWQ0OWVjODhhZjMwNmEyOGY2YjRjZGI3YTIzMzUzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAKQEAgLTM2NCwxMyAr
MzY0LDEyIEBAIHZvaWQgSlNET01XaW5kb3dCYXNlOjpmaXJlRnJhbWVDbGVhcmVkV2F0Y2hwb2lu
dHNGb3JXaW5kb3coRE9NV2luZG93KiB3aW5kb3cpCiAgICAgfQogfQogCi1KU0M6OkpTSW50ZXJu
YWxQcm9taXNlKiBKU0RPTVdpbmRvd0Jhc2U6Om1vZHVsZUxvYWRlclJlc29sdmUoSlNDOjpKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNDOjpKU01v
ZHVsZUxvYWRlciogbW9kdWxlTG9hZGVyLCBKU0M6OkpTVmFsdWUgbW9kdWxlTmFtZSwgSlNDOjpK
U1ZhbHVlIGltcG9ydGVyTW9kdWxlS2V5LCBKU0M6OkpTVmFsdWUgc2NyaXB0RmV0Y2hlcikKK0pT
Qzo6SWRlbnRpZmllciBKU0RPTVdpbmRvd0Jhc2U6Om1vZHVsZUxvYWRlclJlc29sdmUoSlNDOjpK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNDOjpK
U01vZHVsZUxvYWRlciogbW9kdWxlTG9hZGVyLCBKU0M6OkpTVmFsdWUgbW9kdWxlTmFtZSwgSlND
OjpKU1ZhbHVlIGltcG9ydGVyTW9kdWxlS2V5LCBKU0M6OkpTVmFsdWUgc2NyaXB0RmV0Y2hlcikK
IHsKICAgICBKU0RPTVdpbmRvd0Jhc2UqIHRoaXNPYmplY3QgPSBKU0M6OmpzQ2FzdDxKU0RPTVdp
bmRvd0Jhc2UqPihnbG9iYWxPYmplY3QpOwogICAgIGlmIChSZWZQdHI8RG9jdW1lbnQ+IGRvY3Vt
ZW50ID0gdGhpc09iamVjdC0+d3JhcHBlZCgpLmRvY3VtZW50KCkpCiAgICAgICAgIHJldHVybiBk
b2N1bWVudC0+bW9kdWxlTG9hZGVyKCktPnJlc29sdmUoZ2xvYmFsT2JqZWN0LCBleGVjLCBtb2R1
bGVMb2FkZXIsIG1vZHVsZU5hbWUsIGltcG9ydGVyTW9kdWxlS2V5LCBzY3JpcHRGZXRjaGVyKTsK
LSAgICBKU0M6OkpTSW50ZXJuYWxQcm9taXNlRGVmZXJyZWQqIGRlZmVycmVkID0gSlNDOjpKU0lu
dGVybmFsUHJvbWlzZURlZmVycmVkOjpjcmVhdGUoZXhlYywgZ2xvYmFsT2JqZWN0KTsKLSAgICBy
ZXR1cm4gZGVmZXJyZWQtPnJlamVjdChleGVjLCBqc1VuZGVmaW5lZCgpKTsKKyAgICByZXR1cm4g
eyB9OwogfQogCiBKU0M6OkpTSW50ZXJuYWxQcm9taXNlKiBKU0RPTVdpbmRvd0Jhc2U6Om1vZHVs
ZUxvYWRlckZldGNoKEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpFeGVj
U3RhdGUqIGV4ZWMsIEpTQzo6SlNNb2R1bGVMb2FkZXIqIG1vZHVsZUxvYWRlciwgSlNDOjpKU1Zh
bHVlIG1vZHVsZUtleSwgSlNDOjpKU1ZhbHVlIHBhcmFtZXRlcnMsIEpTQzo6SlNWYWx1ZSBzY3Jp
cHRGZXRjaGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01X
aW5kb3dCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2Uu
aAppbmRleCAyMTUwYzZhMGRhYjQ4OTYyZWNlYTUwMWM0M2RjYzBkZDE0NzliZjRlLi4yOTg1ZTRh
OGVjYmM2YTdjNTVhNTkwNmI4Yzc5OWYxMTRmYzVmMzlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuaApAQCAtNzUsNyArNzUsNyBAQCBjbGFzcyBXRUJD
T1JFX0VYUE9SVCBKU0RPTVdpbmRvd0Jhc2UgOiBwdWJsaWMgSlNET01HbG9iYWxPYmplY3Qgewog
ICAgIEpTQzo6V2F0Y2hwb2ludFNldCBtX3dpbmRvd0Nsb3NlV2F0Y2hwb2ludHM7CiAKIHByaXZh
dGU6Ci0gICAgc3RhdGljIEpTQzo6SlNJbnRlcm5hbFByb21pc2UqIG1vZHVsZUxvYWRlclJlc29s
dmUoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU01vZHVsZUxv
YWRlciosIEpTQzo6SlNWYWx1ZSwgSlNDOjpKU1ZhbHVlLCBKU0M6OkpTVmFsdWUpOworICAgIHN0
YXRpYyBKU0M6OklkZW50aWZpZXIgbW9kdWxlTG9hZGVyUmVzb2x2ZShKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTTW9kdWxlTG9hZGVyKiwgSlNDOjpKU1ZhbHVl
LCBKU0M6OkpTVmFsdWUsIEpTQzo6SlNWYWx1ZSk7CiAgICAgc3RhdGljIEpTQzo6SlNJbnRlcm5h
bFByb21pc2UqIG1vZHVsZUxvYWRlckZldGNoKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkV4
ZWNTdGF0ZSosIEpTQzo6SlNNb2R1bGVMb2FkZXIqLCBKU0M6OkpTVmFsdWUsIEpTQzo6SlNWYWx1
ZSwgSlNDOjpKU1ZhbHVlKTsKICAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIG1vZHVsZUxvYWRlckV2
YWx1YXRlKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNNb2R1
bGVMb2FkZXIqLCBKU0M6OkpTVmFsdWUsIEpTQzo6SlNWYWx1ZSwgSlNDOjpKU1ZhbHVlKTsKICAg
ICBzdGF0aWMgSlNDOjpKU0ludGVybmFsUHJvbWlzZSogbW9kdWxlTG9hZGVySW1wb3J0TW9kdWxl
KEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNNb2R1bGVMb2Fk
ZXIqLCBKU0M6OkpTU3RyaW5nKiwgSlNDOjpKU1ZhbHVlLCBjb25zdCBKU0M6OlNvdXJjZU9yaWdp
biYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0TW9kdWxl
TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdE1vZHVsZUxvYWRl
ci5jcHAKaW5kZXggMWM2MmY0MmNhNzEyODY5MjAwYTBmOWE0MDFlMzg4ZDkyMjVlNTUyMy4uOTVl
YWIzMDMxMTYwMDNlYjUxYTgwMDc0YWY4ZTZkMmYwMjcwMGI5OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0TW9kdWxlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRNb2R1bGVMb2FkZXIuY3BwCkBAIC04NSwyNiArODUs
MjUgQEAgc3RhdGljIEV4cGVjdGVkPFVSTCwgQVNDSUlMaXRlcmFsPiByZXNvbHZlTW9kdWxlU3Bl
Y2lmaWVyKERvY3VtZW50JiBkb2N1bWVudCwgY28KICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1K
U0M6OkpTSW50ZXJuYWxQcm9taXNlKiBTY3JpcHRNb2R1bGVMb2FkZXI6OnJlc29sdmUoSlNDOjpK
U0dsb2JhbE9iamVjdCoganNHbG9iYWxPYmplY3QsIEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0M6
OkpTTW9kdWxlTG9hZGVyKiwgSlNDOjpKU1ZhbHVlIG1vZHVsZU5hbWVWYWx1ZSwgSlNDOjpKU1Zh
bHVlIGltcG9ydGVyTW9kdWxlS2V5LCBKU0M6OkpTVmFsdWUpCitKU0M6OklkZW50aWZpZXIgU2Ny
aXB0TW9kdWxlTG9hZGVyOjpyZXNvbHZlKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkV4ZWNT
dGF0ZSogZXhlYywgSlNDOjpKU01vZHVsZUxvYWRlciosIEpTQzo6SlNWYWx1ZSBtb2R1bGVOYW1l
VmFsdWUsIEpTQzo6SlNWYWx1ZSBpbXBvcnRlck1vZHVsZUtleSwgSlNDOjpKU1ZhbHVlKQogewot
ICAgIGF1dG8mIGdsb2JhbE9iamVjdCA9ICpKU0M6OmpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+
KGpzR2xvYmFsT2JqZWN0KTsKLSAgICBhdXRvJiBqc1Byb21pc2UgPSAqSlNDOjpKU0ludGVybmFs
UHJvbWlzZURlZmVycmVkOjpjcmVhdGUoZXhlYywgJmdsb2JhbE9iamVjdCk7Ci0gICAgYXV0byBw
cm9taXNlID0gRGVmZXJyZWRQcm9taXNlOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LCBqc1Byb21pc2Up
OworICAgIEpTQzo6Vk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAKICAgICAvLyBXZSB1c2UgYSBTeW1ib2wgYXMgYSBzcGVjaWFs
IHB1cnBvc2U7IEl0IG1lYW5zIHRoaXMgbW9kdWxlIGlzIGFuIGlubGluZSBtb2R1bGUuCiAgICAg
Ly8gU28gdGhlcmUgaXMgbm8gY29ycmVjdCBVUkwgdG8gcmV0cmlldmUgdGhlIG1vZHVsZSBzb3Vy
Y2UgY29kZS4gSWYgdGhlIG1vZHVsZSBuYW1lCiAgICAgLy8gdmFsdWUgaXMgYSBTeW1ib2wsIGl0
IGlzIHVzZWQgZGlyZWN0bHkgYXMgYSBtb2R1bGUga2V5LgotICAgIGlmIChtb2R1bGVOYW1lVmFs
dWUuaXNTeW1ib2woKSkgewotICAgICAgICBwcm9taXNlLT5yZXNvbHZlPElETEFueT4oSlNDOjpT
eW1ib2w6OmNyZWF0ZShleGVjLT52bSgpLCBhc1N5bWJvbChtb2R1bGVOYW1lVmFsdWUpLT5wcml2
YXRlTmFtZSgpLnVpZCgpKSk7Ci0gICAgICAgIHJldHVybiBqc1Byb21pc2UucHJvbWlzZSgpOwot
ICAgIH0KKyAgICBpZiAobW9kdWxlTmFtZVZhbHVlLmlzU3ltYm9sKCkpCisgICAgICAgIHJldHVy
biBKU0M6OklkZW50aWZpZXI6OmZyb21VaWQoYXNTeW1ib2wobW9kdWxlTmFtZVZhbHVlKS0+cHJp
dmF0ZU5hbWUoKSk7CiAKICAgICBpZiAoIW1vZHVsZU5hbWVWYWx1ZS5pc1N0cmluZygpKSB7Ci0g
ICAgICAgIHByb21pc2UtPnJlamVjdChUeXBlRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiSW1wb3J0ZXIg
bW9kdWxlIGtleSBpcyBub3QgYSBTeW1ib2wgb3IgYSBTdHJpbmcuIikpOwotICAgICAgICByZXR1
cm4ganNQcm9taXNlLnByb21pc2UoKTsKKyAgICAgICAgSlNDOjp0aHJvd1R5cGVFcnJvcihleGVj
LCBzY29wZSwgQVNDSUlMaXRlcmFsKCJJbXBvcnRlciBtb2R1bGUga2V5IGlzIG5vdCBhIFN5bWJv
bCBvciBhIFN0cmluZy4iKSk7CisgICAgICAgIHJldHVybiB7IH07CiAgICAgfQogCiAgICAgU3Ry
aW5nIHNwZWNpZmllciA9IGFzU3RyaW5nKG1vZHVsZU5hbWVWYWx1ZSktPnZhbHVlKGV4ZWMpOwor
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKICAgICBVUkwgYmFzZVVSTDsK
ICAgICBpZiAoaXNSb290TW9kdWxlKGltcG9ydGVyTW9kdWxlS2V5KSkKICAgICAgICAgYmFzZVVS
TCA9IG1fZG9jdW1lbnQuYmFzZVVSTCgpOwpAQCAtMTIwLDEyICsxMTksMTEgQEAgSlNDOjpKU0lu
dGVybmFsUHJvbWlzZSogU2NyaXB0TW9kdWxlTG9hZGVyOjpyZXNvbHZlKEpTQzo6SlNHbG9iYWxP
YmplY3QqIGpzR2xvYmEKIAogICAgIGF1dG8gcmVzdWx0ID0gcmVzb2x2ZU1vZHVsZVNwZWNpZmll
cihtX2RvY3VtZW50LCBzcGVjaWZpZXIsIGJhc2VVUkwpOwogICAgIGlmICghcmVzdWx0KSB7Ci0g
ICAgICAgIHByb21pc2UtPnJlamVjdChUeXBlRXJyb3IsIHJlc3VsdC5lcnJvcigpKTsKLSAgICAg
ICAgcmV0dXJuIGpzUHJvbWlzZS5wcm9taXNlKCk7CisgICAgICAgIEpTQzo6dGhyb3dUeXBlRXJy
b3IoZXhlYywgc2NvcGUsIHJlc3VsdC5lcnJvcigpKTsKKyAgICAgICAgcmV0dXJuIHsgfTsKICAg
ICB9CiAKLSAgICBwcm9taXNlLT5yZXNvbHZlPElETERPTVN0cmluZz4ocmVzdWx0LT5zdHJpbmco
KSk7Ci0gICAgcmV0dXJuIGpzUHJvbWlzZS5wcm9taXNlKCk7CisgICAgcmV0dXJuIEpTQzo6SWRl
bnRpZmllcjo6ZnJvbVN0cmluZygmdm0sIHJlc3VsdC0+c3RyaW5nKCkpOwogfQogCiBzdGF0aWMg
dm9pZCByZWplY3RUb1Byb3BhZ2F0ZU5ldHdvcmtFcnJvcihEZWZlcnJlZFByb21pc2UmIGRlZmVy
cmVkLCBNb2R1bGVGZXRjaEZhaWx1cmVLaW5kIGZhaWx1cmVLaW5kLCBBU0NJSUxpdGVyYWwgbWVz
c2FnZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdE1vZHVs
ZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0TW9kdWxlTG9hZGVy
LmgKaW5kZXggNzlmZGY0NzdiOGRmZjU0YTJkYTg3MWQ0OTQ3YzRjMTE5ODNlZTg0Yy4uY2RiNjU2
ZWU2Nzc4YWUyYWExZDAyNWNmODljZGIyMGEwZjkzMTY1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2NyaXB0TW9kdWxlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvU2NyaXB0TW9kdWxlTG9hZGVyLmgKQEAgLTU1LDcgKzU1LDcgQEAgY2xh
c3MgU2NyaXB0TW9kdWxlTG9hZGVyIGZpbmFsIDogcHJpdmF0ZSBDYWNoZWRNb2R1bGVTY3JpcHRM
b2FkZXJDbGllbnQgewogCiAgICAgRG9jdW1lbnQmIGRvY3VtZW50KCkgeyByZXR1cm4gbV9kb2N1
bWVudDsgfQogCi0gICAgSlNDOjpKU0ludGVybmFsUHJvbWlzZSogcmVzb2x2ZShKU0M6OkpTR2xv
YmFsT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTTW9kdWxlTG9hZGVyKiwgSlNDOjpK
U1ZhbHVlIG1vZHVsZU5hbWUsIEpTQzo6SlNWYWx1ZSBpbXBvcnRlck1vZHVsZUtleSwgSlNDOjpK
U1ZhbHVlIHNjcmlwdEZldGNoZXIpOworICAgIEpTQzo6SWRlbnRpZmllciByZXNvbHZlKEpTQzo6
SlNHbG9iYWxPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNNb2R1bGVMb2FkZXIqLCBK
U0M6OkpTVmFsdWUgbW9kdWxlTmFtZSwgSlNDOjpKU1ZhbHVlIGltcG9ydGVyTW9kdWxlS2V5LCBK
U0M6OkpTVmFsdWUgc2NyaXB0RmV0Y2hlcik7CiAgICAgSlNDOjpKU0ludGVybmFsUHJvbWlzZSog
ZmV0Y2goSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU01vZHVs
ZUxvYWRlciosIEpTQzo6SlNWYWx1ZSBtb2R1bGVLZXksIEpTQzo6SlNWYWx1ZSBwYXJhbWV0ZXJz
LCBKU0M6OkpTVmFsdWUgc2NyaXB0RmV0Y2hlcik7CiAgICAgSlNDOjpKU1ZhbHVlIGV2YWx1YXRl
KEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNNb2R1bGVMb2Fk
ZXIqLCBKU0M6OkpTVmFsdWUgbW9kdWxlS2V5LCBKU0M6OkpTVmFsdWUgbW9kdWxlUmVjb3JkLCBK
U0M6OkpTVmFsdWUgc2NyaXB0RmV0Y2hlcik7CiAgICAgSlNDOjpKU0ludGVybmFsUHJvbWlzZSog
aW1wb3J0TW9kdWxlKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6
SlNNb2R1bGVMb2FkZXIqLCBKU0M6OkpTU3RyaW5nKiwgSlNDOjpKU1ZhbHVlIHBhcmFtZXRlcnMs
IGNvbnN0IEpTQzo6U291cmNlT3JpZ2luJik7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>