<?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>233444</bug_id>
          
          <creation_ts>2021-11-23 03:40:54 -0800</creation_ts>
          <short_desc>[WASM-Function-References] Simplify representation of Wasm Type</short_desc>
          <delta_ts>2022-11-02 17:08:56 -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>WebAssembly</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>247393</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dmitry">dbezhetskov</reporter>
          <assigned_to name="Dmitry">dbezhetskov</assigned_to>
          <cc>bashorov</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1817433</commentid>
    <comment_count>0</comment_count>
    <who name="Dmitry">dbezhetskov</who>
    <bug_when>2021-11-23 03:40:54 -0800</bug_when>
    <thetext>Wasm Type has weird ballast called signature index, actually there is no such field in the wasm spec - https://github.com/WebAssembly/function-references/blob/master/proposals/function-references/Overview.md.
Signature index was introduced to implement `call_ref` instruction because there wasn&apos;t an ability to get Signature from the obtained type.
In this bug this ability is introduced and we can simplify Type to the form &lt;kind, nullability, typeIndex&gt;, where typeIndex is an index in Wasm Type section.
This will simplify subsequent work for new Wasm types like struct or arrays.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817435</commentid>
    <comment_count>1</comment_count>
      <attachid>445023</attachid>
    <who name="Dmitry">dbezhetskov</who>
    <bug_when>2021-11-23 03:43:36 -0800</bug_when>
    <thetext>Created attachment 445023
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817572</commentid>
    <comment_count>2</comment_count>
      <attachid>445066</attachid>
    <who name="Dmitry">dbezhetskov</who>
    <bug_when>2021-11-23 22:33:55 -0800</bug_when>
    <thetext>Created attachment 445066
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817818</commentid>
    <comment_count>3</comment_count>
      <attachid>445066</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-11-25 09:37:39 -0800</bug_when>
    <thetext>Comment on attachment 445066
Patch

Acn you relove SignatureIndex completely? Currently, it is globally registered, but it should use per module type index onstead. And if we start using that in one place, then we should use it in all the place.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817819</commentid>
    <comment_count>4</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-11-25 09:39:21 -0800</bug_when>
    <thetext>(In reply to Yusuke Suzuki from comment #3)
&gt; Comment on attachment 445066 [details]
&gt; Patch
&gt; 
&gt; Acn you relove SignatureIndex completely? Currently, it is globally
&gt; registered, but it should use per module type index onstead. And if we start
&gt; using that in one place, then we should use it in all the place.

Oops, typos. “Can you remove SignatureIndex completely?”</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1818675</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-11-30 03:41:20 -0800</bug_when>
    <thetext>&lt;rdar://problem/85859071&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1837771</commentid>
    <comment_count>6</comment_count>
      <attachid>445066</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2022-02-05 11:17:01 -0800</bug_when>
    <thetext>Comment on attachment 445066
Patch

OK, I think it is fine for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1837772</commentid>
    <comment_count>7</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-02-05 11:18:14 -0800</bug_when>
    <thetext>Tools/Scripts/svn-apply failed to apply attachment 445066 to trunk.
Please resolve the conflicts and upload a new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1841142</commentid>
    <comment_count>8</comment_count>
      <attachid>451864</attachid>
    <who name="Dmitry">dbezhetskov</who>
    <bug_when>2022-02-13 23:26:33 -0800</bug_when>
    <thetext>Created attachment 451864
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1842211</commentid>
    <comment_count>9</comment_count>
      <attachid>451864</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2022-02-16 03:00:23 -0800</bug_when>
    <thetext>Comment on attachment 451864
Patch

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

&gt; Source/JavaScriptCore/ChangeLog:10
&gt; +        Replace Signature index with index into Wasm Type section.
&gt; +        Add corresponding mapping to be able to get itroduced type index
&gt; +        via given function index.

Can you describe the motivation of this change in the ChangeLog? Why do we need to use this instead of current SignatureIndex?

&gt; Source/JavaScriptCore/wasm/WasmFormat.h:260
&gt; +    uint32_t typeIndex;

We should use more explicit name since it is not well-typed.
Let&apos;s name it like, typeIndexInModule etc.

&gt; Source/JavaScriptCore/wasm/generateWasmOpsHeader.py:224
&gt; +    unsigned index;

Ditto. Change this to typeIndexInModule.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1842222</commentid>
    <comment_count>10</comment_count>
      <attachid>452175</attachid>
    <who name="Dmitry">dbezhetskov</who>
    <bug_when>2022-02-16 04:04:38 -0800</bug_when>
    <thetext>Created attachment 452175
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1842223</commentid>
    <comment_count>11</comment_count>
    <who name="Dmitry">dbezhetskov</who>
    <bug_when>2022-02-16 04:05:30 -0800</bug_when>
    <thetext>Hi, I&apos;ve updated the changelog to describe more motivation of this change and fixed naming issues</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1842414</commentid>
    <comment_count>12</comment_count>
      <attachid>452175</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2022-02-16 11:40:16 -0800</bug_when>
    <thetext>Comment on attachment 452175
Patch

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

&gt; Source/JavaScriptCore/wasm/WasmGlobal.cpp:107
&gt; +                Wasm::SignatureIndex paramIndex = m_type.typeIndexInModule;

This looks incorrect since typeIndexInModule is not SignatureIndex.

&gt; Source/JavaScriptCore/wasm/js/JSWebAssemblyHelpers.h:194
&gt; +                Wasm::SignatureIndex paramIndex = type.typeIndexInModule;

This looks incorrect since typeIndexInModule is not SignatureIndex.

&gt; Source/JavaScriptCore/wasm/js/WebAssemblyFunction.cpp:282
&gt; +                    slowPath.append(jit.branchPtr(CCallHelpers::NotEqual, scratchGPR, CCallHelpers::TrustedImmPtr(type.typeIndexInModule)));

This looks incorrect since typeIndexInModule is not SignatureIndex.

&gt; Source/JavaScriptCore/wasm/js/WebAssemblyModuleRecord.cpp:273
&gt; +                                Wasm::SignatureIndex paramIndex = global.type.typeIndexInModule;

This looks incorrect since typeIndexInModule is not SignatureIndex.

&gt; Source/JavaScriptCore/wasm/js/WebAssemblyModuleRecord.cpp:327
&gt; +                                Wasm::SignatureIndex paramIndex = global.type.typeIndexInModule;

This looks incorrect since typeIndexInModule is not SignatureIndex.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1844032</commentid>
    <comment_count>13</comment_count>
      <attachid>452682</attachid>
    <who name="Dmitry">dbezhetskov</who>
    <bug_when>2022-02-20 00:03:32 -0800</bug_when>
    <thetext>Created attachment 452682
Patch</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445023</attachid>
            <date>2021-11-23 03:43:36 -0800</date>
            <delta_ts>2021-11-23 22:33:50 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233444-20211123184335.patch</filename>
            <type>text/plain</type>
            <size>27736</size>
            <attacher name="Dmitry">dbezhetskov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MTI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
ZjJhM2Q1MWYxMGQ1YzZlYmM0MWNkN2RmNzUwOTQzZDNlNzMzNjAzLi4xMTdkYzk4NDk5NGMwMjA4
Zjk5NDIyZTU4YWI4M2E4YzFjNjFkZDQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1MiBAQAorMjAyMS0xMS0yMyAgRG1pdHJ5IEJlemhldHNrb3YgIDxkYmV6aGV0c2tvdkBp
Z2FsaWEuY29tPgorCisgICAgICAgIFtXQVNNLUZ1bmN0aW9uLVJlZmVyZW5jZXNdIFNpbXBsaWZ5
IHJlcHJlc2VudGF0aW9uIG9mIFdhc20gVHlwZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNDQ0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisgICAgICAgIAorICAgICAgICBSZXBsYWNlIFNpZ25hdHVyZSBpbmRleCB3aXRo
IGluZGV4IGludG8gV2FzbSBUeXBlIHNlY3Rpb24uCisgICAgICAgIEFkZCBjb3JyZXNwb25kaW5n
IG1hcHBpbmcgdG8gYmUgYWJsZSB0byBnZXQgaXRyb2R1Y2VkIHR5cGUgaW5kZXgKKyAgICAgICAg
dmlhIGdpdmVuIGZ1bmN0aW9uIGluZGV4LgorCisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVE
dW1wZXIuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpCeXRlY29kZUR1bXBlcjo6ZHVtcEJsb2Nr
KToKKyAgICAgICAgKiB3YXNtL1dhc21BaXJJUkdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6
Oldhc206OkFpcklSR2VuZXJhdG9yOjphZGRSZWZGdW5jKToKKyAgICAgICAgKiB3YXNtL1dhc21C
QlFQbGFuLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6QkJRUGxhbjo6d29yayk6CisgICAgICAg
IChKU0M6Oldhc206OkJCUVBsYW46OmNvbXBpbGVGdW5jdGlvbik6CisgICAgICAgIChKU0M6Oldh
c206OkJCUVBsYW46OmRpZENvbXBsZXRlQ29tcGlsYXRpb24pOgorICAgICAgICAqIHdhc20vV2Fz
bUZvcm1hdC5oOgorICAgICAgICAoSlNDOjpXYXNtOjppc0V4dGVybnJlZik6CisgICAgICAgIChK
U0M6Oldhc206OmlzRnVuY3JlZik6CisgICAgICAgIChKU0M6Oldhc206OmZ1bmNyZWZUeXBlKToK
KyAgICAgICAgKEpTQzo6V2FzbTo6ZXh0ZXJucmVmVHlwZSk6CisgICAgICAgIChKU0M6Oldhc206
OmlzVHlwZUluZGV4SGVhcFR5cGUpOiBEZWxldGVkLgorICAgICAgICAqIHdhc20vV2FzbUZ1bmN0
aW9uUGFyc2VyLmg6CisgICAgICAgIChKU0M6Oldhc206OkZ1bmN0aW9uUGFyc2VyPENvbnRleHQ+
OjpwYXJzZUV4cHJlc3Npb24pOgorICAgICAgICAqIHdhc20vV2FzbUxMSW50UGxhbi5jcHA6Cisg
ICAgICAgIChKU0M6Oldhc206OkxMSW50UGxhbjo6Y29tcGlsZUZ1bmN0aW9uKToKKyAgICAgICAg
KEpTQzo6V2FzbTo6TExJbnRQbGFuOjpkaWRDb21wbGV0ZUNvbXBpbGF0aW9uKToKKyAgICAgICAg
KiB3YXNtL1dhc21Nb2R1bGVJbmZvcm1hdGlvbi5oOgorICAgICAgICAoSlNDOjpXYXNtOjpNb2R1
bGVJbmZvcm1hdGlvbjo6c2lnbmF0dXJlSW5kZXhGcm9tRnVuY3Rpb25JbmRleFNwYWNlIGNvbnN0
KToKKyAgICAgICAgKEpTQzo6V2FzbTo6TW9kdWxlSW5mb3JtYXRpb246OmdldFR5cGVJbmRleEZv
ckZ1bmN0aW9uIGNvbnN0KToKKyAgICAgICAgKiB3YXNtL1dhc21PTUdGb3JPU1JFbnRyeVBsYW4u
Y3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpPTUdGb3JPU1JFbnRyeVBsYW46OndvcmspOgorICAg
ICAgICAqIHdhc20vV2FzbU9NR1BsYW4uY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpPTUdQbGFu
Ojp3b3JrKToKKyAgICAgICAgKiB3YXNtL1dhc21QYXJzZXIuaDoKKyAgICAgICAgKEpTQzo6V2Fz
bTo6UGFyc2VyPFN1Y2Nlc3NUeXBlPjo6cGFyc2VWYWx1ZVR5cGUpOgorICAgICAgICAqIHdhc20v
V2FzbVNlY3Rpb25QYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpTZWN0aW9uUGFyc2Vy
OjpwYXJzZUltcG9ydCk6CisgICAgICAgIChKU0M6Oldhc206OlNlY3Rpb25QYXJzZXI6OnBhcnNl
RnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpXYXNtOjpTZWN0aW9uUGFyc2VyOjpwYXJzZUluaXRF
eHByKToKKyAgICAgICAgKiB3YXNtL2dlbmVyYXRlV2FzbU9wc0hlYWRlci5weToKKyAgICAgICAg
KiB3YXNtL2pzL0pTV2ViQXNzZW1ibHlDb2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpKU1dl
YkFzc2VtYmx5Q29kZUJsb2NrOjpKU1dlYkFzc2VtYmx5Q29kZUJsb2NrKToKKyAgICAgICAgKiB3
YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmNwcDoKKyAgICAgICAgKEpTQzo6V2ViQXNz
ZW1ibHlNb2R1bGVSZWNvcmQ6OmluaXRpYWxpemVJbXBvcnRzQW5kRXhwb3J0cyk6CisKIDIwMjEt
MTEtMjIgIEdlemEgTG9yZSAgPGdsb3JlQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0pTQ10gTWFr
ZSBzaGFyaW5nIG9mIHVubGlua2VkIGJhc2VsaW5lIGNvZGUgcG9zc2libGUgb24gSlNWQUxVRTMy
XzY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVE
dW1wZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVtcGVy
LmNwcAppbmRleCAzOThmNTViM2U3NTY1ZGIzNjI0NmY3ZTFlMjEzMTkzOWUwMTFhOTc2Li44NjE0
ZTk1M2E5OGQyMDhiMDZiMDBmOTk0ZjZhZDNkMWRiZjAyOWExIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVEdW1wZXIuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUR1bXBlci5jcHAKQEAgLTM0Myw3ICszNDMs
NyBAQCB2b2lkIEJ5dGVjb2RlRHVtcGVyOjpkdW1wQmxvY2soRnVuY3Rpb25Db2RlQmxvY2sqIGJs
b2NrLCBjb25zdCBNb2R1bGVJbmZvcm1hdGlvbgogICAgIG91dC5wcmludChtYWtlU3RyaW5nKElu
ZGV4T3JOYW1lKGZ1bmN0aW9uSW5kZXhTcGFjZSwgbW9kdWxlSW5mb3JtYXRpb24ubmFtZVNlY3Rp
b24tPmdldChmdW5jdGlvbkluZGV4U3BhY2UpKSkpOwogCiAgICAgY29uc3QgYXV0byYgZnVuY3Rp
b24gPSBtb2R1bGVJbmZvcm1hdGlvbi5mdW5jdGlvbnNbYmxvY2stPmZ1bmN0aW9uSW5kZXgoKV07
Ci0gICAgU2lnbmF0dXJlSW5kZXggc2lnbmF0dXJlSW5kZXggPSBtb2R1bGVJbmZvcm1hdGlvbi5p
bnRlcm5hbEZ1bmN0aW9uU2lnbmF0dXJlSW5kaWNlc1tibG9jay0+ZnVuY3Rpb25JbmRleCgpXTsK
KyAgICBTaWduYXR1cmVJbmRleCBzaWduYXR1cmVJbmRleCA9IG1vZHVsZUluZm9ybWF0aW9uLmlu
dGVybmFsRnVuY3Rpb25TaWduYXR1cmVJbmRpY2VzW2Jsb2NrLT5mdW5jdGlvbkluZGV4KCldLnNp
Z25hdHVyZUluZGV4OwogICAgIGNvbnN0IFNpZ25hdHVyZSYgc2lnbmF0dXJlID0gU2lnbmF0dXJl
SW5mb3JtYXRpb246OmdldChzaWduYXR1cmVJbmRleCk7CiAgICAgb3V0LnByaW50KCIgOiAiLCBz
aWduYXR1cmUsICJcbiIpOwogICAgIG91dC5wcmludCgid2FzbSBzaXplOiAiLCBmdW5jdGlvbi5k
YXRhLnNpemUoKSwgIiBieXRlc1xuIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtQWlySVJHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbUFpcklSR2VuZXJhdG9yLmNwcAppbmRleCBlNDI4YjBkNWYzMmJlZjA4NDk5MzQxMDVk
OTFlZmMwMWMxMjI3YTk3Li5mNDRkMjlhMzRlZmFjMDQyNTZmYjRjMWM0NzkyZjM3NDZjZmEzNjhj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQWlySVJHZW5lcmF0
b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21BaXJJUkdlbmVyYXRv
ci5jcHAKQEAgLTExMjQsOCArMTEyNCw3IEBAIGF1dG8gQWlySVJHZW5lcmF0b3I6OmFkZFJlZkZ1
bmModWludDMyX3QgaW5kZXgsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpIC0+IFBhcnRpCiB7CiAg
ICAgLy8gRklYTUU6IEVtaXQgdGhpcyBpbmxpbmUgPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xOTg1MDY+LgogICAgIGlmIChPcHRpb25zOjp1c2VXZWJBc3NlbWJseVR5
cGVkRnVuY3Rpb25SZWZlcmVuY2VzKCkpIHsKLSAgICAgICAgU2lnbmF0dXJlSW5kZXggc2lnbmF0
dXJlSW5kZXggPSBtX2luZm8uc2lnbmF0dXJlSW5kZXhGcm9tRnVuY3Rpb25JbmRleFNwYWNlKGlu
ZGV4KTsKLSAgICAgICAgcmVzdWx0ID0gdG1wRm9yVHlwZShUeXBlIHsgVHlwZUtpbmQ6OlJlZiwg
TnVsbGFibGU6Ok5vLCBzaWduYXR1cmVJbmRleCB9KTsKKyAgICAgICAgcmVzdWx0ID0gdG1wRm9y
VHlwZShUeXBlIHsgVHlwZUtpbmQ6OlJlZiwgTnVsbGFibGU6Ok5vLCBtX2luZm8uZ2V0VHlwZUlu
ZGV4Rm9yRnVuY3Rpb24oaW5kZXgpIH0pOwogICAgIH0gZWxzZQogICAgICAgICByZXN1bHQgPSB0
bXBGb3JUeXBlKFR5cGVzOjpGdW5jcmVmKTsKICAgICBlbWl0Q0NhbGwoJm9wZXJhdGlvbldhc21S
ZWZGdW5jLCByZXN1bHQsIGluc3RhbmNlVmFsdWUoKSwgYWRkQ29uc3RhbnQoVHlwZXM6OkkzMiwg
aW5kZXgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CQlFQ
bGFuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CQlFQbGFuLmNwcAppbmRl
eCAyNDMwMjllNjJiMzNjMWQzOTcwOTdhYjQ5ZGE4YzkzODM5YWFkYmMxLi5jMjdlYzg2ZTFiNmJl
ZTI4NmFkZDFhMWFkZTgyZjkzODlmNzU1ZThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtQkJRUGxhbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbUJCUVBsYW4uY3BwCkBAIC0xMTQsNyArMTE0LDcgQEAgdm9pZCBCQlFQbGFuOjp3b3Jr
KENvbXBpbGF0aW9uRWZmb3J0IGVmZm9ydCkKICAgICBjb21wdXRlRXhjZXB0aW9uSGFuZGxlckxv
Y2F0aW9ucyhleGNlcHRpb25IYW5kbGVyTG9jYXRpb25zLCBmdW5jdGlvbi5nZXQoKSwgY29udGV4
dCwgbGlua0J1ZmZlcik7CiAKICAgICBzaXplX3QgZnVuY3Rpb25JbmRleFNwYWNlID0gbV9mdW5j
dGlvbkluZGV4ICsgbV9tb2R1bGVJbmZvcm1hdGlvbi0+aW1wb3J0RnVuY3Rpb25Db3VudCgpOwot
ICAgIFNpZ25hdHVyZUluZGV4IHNpZ25hdHVyZUluZGV4ID0gbV9tb2R1bGVJbmZvcm1hdGlvbi0+
aW50ZXJuYWxGdW5jdGlvblNpZ25hdHVyZUluZGljZXNbbV9mdW5jdGlvbkluZGV4XTsKKyAgICBT
aWduYXR1cmVJbmRleCBzaWduYXR1cmVJbmRleCA9IG1fbW9kdWxlSW5mb3JtYXRpb24tPmludGVy
bmFsRnVuY3Rpb25TaWduYXR1cmVJbmRpY2VzW21fZnVuY3Rpb25JbmRleF0uc2lnbmF0dXJlSW5k
ZXg7CiAgICAgY29uc3QgU2lnbmF0dXJlJiBzaWduYXR1cmUgPSBTaWduYXR1cmVJbmZvcm1hdGlv
bjo6Z2V0KHNpZ25hdHVyZUluZGV4KTsKICAgICBmdW5jdGlvbi0+ZW50cnlwb2ludC5jb21waWxh
dGlvbiA9IG1ha2VVbmlxdWU8Q29tcGlsYXRpb24+KAogICAgICAgICBGSU5BTElaRV9XQVNNX0NP
REVfRk9SX01PREUoQ29tcGlsYXRpb25Nb2RlOjpCQlFNb2RlLCBsaW5rQnVmZmVyLCBKSVRDb21w
aWxhdGlvblB0clRhZywgIldlYkFzc2VtYmx5IEJCUSBmdW5jdGlvblslaV0gJXMgbmFtZSAlcyIs
IG1fZnVuY3Rpb25JbmRleCwgc2lnbmF0dXJlLnRvU3RyaW5nKCkuYXNjaWkoKS5kYXRhKCksIG1h
a2VTdHJpbmcoSW5kZXhPck5hbWUoZnVuY3Rpb25JbmRleFNwYWNlLCBtX21vZHVsZUluZm9ybWF0
aW9uLT5uYW1lU2VjdGlvbi0+Z2V0KGZ1bmN0aW9uSW5kZXhTcGFjZSkpKS5hc2NpaSgpLmRhdGEo
KSksCkBAIC0xNzUsNyArMTc1LDcgQEAgdm9pZCBCQlFQbGFuOjpjb21waWxlRnVuY3Rpb24odWlu
dDMyX3QgZnVuY3Rpb25JbmRleCkKIAogICAgIGlmIChtX2V4cG9ydGVkRnVuY3Rpb25JbmRpY2Vz
LmNvbnRhaW5zKGZ1bmN0aW9uSW5kZXgpIHx8IG1fbW9kdWxlSW5mb3JtYXRpb24tPnJlZmVyZW5j
ZWRGdW5jdGlvbnMoKS5jb250YWlucyhmdW5jdGlvbkluZGV4KSkgewogICAgICAgICBMb2NrZXIg
bG9ja2VyIHsgbV9sb2NrIH07Ci0gICAgICAgIFNpZ25hdHVyZUluZGV4IHNpZ25hdHVyZUluZGV4
ID0gbV9tb2R1bGVJbmZvcm1hdGlvbi0+aW50ZXJuYWxGdW5jdGlvblNpZ25hdHVyZUluZGljZXNb
ZnVuY3Rpb25JbmRleF07CisgICAgICAgIFNpZ25hdHVyZUluZGV4IHNpZ25hdHVyZUluZGV4ID0g
bV9tb2R1bGVJbmZvcm1hdGlvbi0+aW50ZXJuYWxGdW5jdGlvblNpZ25hdHVyZUluZGljZXNbZnVu
Y3Rpb25JbmRleF0uc2lnbmF0dXJlSW5kZXg7CiAgICAgICAgIGNvbnN0IFNpZ25hdHVyZSYgc2ln
bmF0dXJlID0gU2lnbmF0dXJlSW5mb3JtYXRpb246OmdldChzaWduYXR1cmVJbmRleCk7CiAgICAg
ICAgIGF1dG8gcmVzdWx0ID0gbV9lbWJlZGRlclRvV2FzbUludGVybmFsRnVuY3Rpb25zLmFkZChm
dW5jdGlvbkluZGV4LCBjcmVhdGVKU1RvV2FzbVdyYXBwZXIoKm1fY29tcGlsYXRpb25Db250ZXh0
c1tmdW5jdGlvbkluZGV4XS5lbWJlZGRlckVudHJ5cG9pbnRKSVQsIHNpZ25hdHVyZSwgJm1fdW5s
aW5rZWRXYXNtVG9XYXNtQ2FsbHNbZnVuY3Rpb25JbmRleF0sIG1fbW9kdWxlSW5mb3JtYXRpb24u
Z2V0KCksIG1fbW9kZSwgZnVuY3Rpb25JbmRleCkpOwogICAgICAgICBBU1NFUlRfVU5VU0VEKHJl
c3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOwpAQCAtMTg1LDcgKzE4NSw3IEBAIHZvaWQgQkJRUGxh
bjo6Y29tcGlsZUZ1bmN0aW9uKHVpbnQzMl90IGZ1bmN0aW9uSW5kZXgpCiBzdGQ6OnVuaXF1ZV9w
dHI8SW50ZXJuYWxGdW5jdGlvbj4gQkJRUGxhbjo6Y29tcGlsZUZ1bmN0aW9uKHVpbnQzMl90IGZ1
bmN0aW9uSW5kZXgsIENvbXBpbGF0aW9uQ29udGV4dCYgY29udGV4dCwgVmVjdG9yPFVubGlua2Vk
V2FzbVRvV2FzbUNhbGw+JiB1bmxpbmtlZFdhc21Ub1dhc21DYWxscywgVGllclVwQ291bnQqIHRp
ZXJVcCkKIHsKICAgICBjb25zdCBhdXRvJiBmdW5jdGlvbiA9IG1fbW9kdWxlSW5mb3JtYXRpb24t
PmZ1bmN0aW9uc1tmdW5jdGlvbkluZGV4XTsKLSAgICBTaWduYXR1cmVJbmRleCBzaWduYXR1cmVJ
bmRleCA9IG1fbW9kdWxlSW5mb3JtYXRpb24tPmludGVybmFsRnVuY3Rpb25TaWduYXR1cmVJbmRp
Y2VzW2Z1bmN0aW9uSW5kZXhdOworICAgIFNpZ25hdHVyZUluZGV4IHNpZ25hdHVyZUluZGV4ID0g
bV9tb2R1bGVJbmZvcm1hdGlvbi0+aW50ZXJuYWxGdW5jdGlvblNpZ25hdHVyZUluZGljZXNbZnVu
Y3Rpb25JbmRleF0uc2lnbmF0dXJlSW5kZXg7CiAgICAgY29uc3QgU2lnbmF0dXJlJiBzaWduYXR1
cmUgPSBTaWduYXR1cmVJbmZvcm1hdGlvbjo6Z2V0KHNpZ25hdHVyZUluZGV4KTsKICAgICB1bnNp
Z25lZCBmdW5jdGlvbkluZGV4U3BhY2UgPSBtX21vZHVsZUluZm9ybWF0aW9uLT5pbXBvcnRGdW5j
dGlvbkNvdW50KCkgKyBmdW5jdGlvbkluZGV4OwogICAgIEFTU0VSVF9VTlVTRUQoZnVuY3Rpb25J
bmRleFNwYWNlLCBtX21vZHVsZUluZm9ybWF0aW9uLT5zaWduYXR1cmVJbmRleEZyb21GdW5jdGlv
bkluZGV4U3BhY2UoZnVuY3Rpb25JbmRleFNwYWNlKSA9PSBzaWduYXR1cmVJbmRleCk7CkBAIC0y
MjUsNyArMjI1LDcgQEAgdm9pZCBCQlFQbGFuOjpkaWRDb21wbGV0ZUNvbXBpbGF0aW9uKCkKIHsK
ICAgICBmb3IgKHVpbnQzMl90IGZ1bmN0aW9uSW5kZXggPSAwOyBmdW5jdGlvbkluZGV4IDwgbV9t
b2R1bGVJbmZvcm1hdGlvbi0+ZnVuY3Rpb25zLnNpemUoKTsgZnVuY3Rpb25JbmRleCsrKSB7CiAg
ICAgICAgIENvbXBpbGF0aW9uQ29udGV4dCYgY29udGV4dCA9IG1fY29tcGlsYXRpb25Db250ZXh0
c1tmdW5jdGlvbkluZGV4XTsKLSAgICAgICAgU2lnbmF0dXJlSW5kZXggc2lnbmF0dXJlSW5kZXgg
PSBtX21vZHVsZUluZm9ybWF0aW9uLT5pbnRlcm5hbEZ1bmN0aW9uU2lnbmF0dXJlSW5kaWNlc1tm
dW5jdGlvbkluZGV4XTsKKyAgICAgICAgU2lnbmF0dXJlSW5kZXggc2lnbmF0dXJlSW5kZXggPSBt
X21vZHVsZUluZm9ybWF0aW9uLT5pbnRlcm5hbEZ1bmN0aW9uU2lnbmF0dXJlSW5kaWNlc1tmdW5j
dGlvbkluZGV4XS5zaWduYXR1cmVJbmRleDsKICAgICAgICAgY29uc3QgU2lnbmF0dXJlJiBzaWdu
YXR1cmUgPSBTaWduYXR1cmVJbmZvcm1hdGlvbjo6Z2V0KHNpZ25hdHVyZUluZGV4KTsKICAgICAg
ICAgY29uc3QgdWludDMyX3QgZnVuY3Rpb25JbmRleFNwYWNlID0gZnVuY3Rpb25JbmRleCArIG1f
bW9kdWxlSW5mb3JtYXRpb24tPmltcG9ydEZ1bmN0aW9uQ291bnQoKTsKICAgICAgICAgQVNTRVJU
KGZ1bmN0aW9uSW5kZXhTcGFjZSA8IG1fbW9kdWxlSW5mb3JtYXRpb24tPmZ1bmN0aW9uSW5kZXhT
cGFjZVNpemUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNt
Rm9ybWF0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRm9ybWF0LmgKaW5kZXgg
ODI0ZmE4YjczNDdjNWY0ODZjN2UwOWMxZDVhOWQxZTA3NGViMmMzNy4uOWY2NjlhNjUxYmZlYmQ5
ODc0NWNiYmYzZjkxNWNhNmNkOTdhNWIyYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbUZvcm1hdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21Gb3JtYXQuaApAQCAtMTA1LDI4ICsxMDUsMjggQEAgaW5saW5lIGJvb2wgaXNSZWZUeXBlKFR5
cGUgdHlwZSkKIGlubGluZSBib29sIGlzRXh0ZXJucmVmKFR5cGUgdHlwZSkKIHsKICAgICBpZiAo
T3B0aW9uczo6dXNlV2ViQXNzZW1ibHlUeXBlZEZ1bmN0aW9uUmVmZXJlbmNlcygpKQotICAgICAg
ICByZXR1cm4gaXNSZWZUeXBlKHR5cGUpICYmIHR5cGUuaW5kZXggPT0gc3RhdGljX2Nhc3Q8U2ln
bmF0dXJlSW5kZXg+KFR5cGVLaW5kOjpFeHRlcm5yZWYpOworICAgICAgICByZXR1cm4gaXNSZWZU
eXBlKHR5cGUpICYmIHR5cGUuaW5kZXggPT0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KFR5cGVLaW5k
OjpFeHRlcm5yZWYpOwogICAgIHJldHVybiB0eXBlLmtpbmQgPT0gVHlwZUtpbmQ6OkV4dGVybnJl
ZjsKIH0KIAogaW5saW5lIGJvb2wgaXNGdW5jcmVmKFR5cGUgdHlwZSkKIHsKICAgICBpZiAoT3B0
aW9uczo6dXNlV2ViQXNzZW1ibHlUeXBlZEZ1bmN0aW9uUmVmZXJlbmNlcygpKQotICAgICAgICBy
ZXR1cm4gaXNSZWZUeXBlKHR5cGUpICYmIHR5cGUuaW5kZXggPT0gc3RhdGljX2Nhc3Q8U2lnbmF0
dXJlSW5kZXg+KFR5cGVLaW5kOjpGdW5jcmVmKTsKKyAgICAgICAgcmV0dXJuIGlzUmVmVHlwZSh0
eXBlKSAmJiB0eXBlLmluZGV4ID09IHN0YXRpY19jYXN0PHVpbnQzMl90PihUeXBlS2luZDo6RnVu
Y3JlZik7CiAgICAgcmV0dXJuIHR5cGUua2luZCA9PSBUeXBlS2luZDo6RnVuY3JlZjsKIH0KIAog
aW5saW5lIFR5cGUgZnVuY3JlZlR5cGUoKQogewogICAgIGlmIChPcHRpb25zOjp1c2VXZWJBc3Nl
bWJseVR5cGVkRnVuY3Rpb25SZWZlcmVuY2VzKCkpCi0gICAgICAgIHJldHVybiBXYXNtOjpUeXBl
IHsgV2FzbTo6VHlwZUtpbmQ6OlJlZk51bGwsIFdhc206Ok51bGxhYmxlOjpZZXMsIHN0YXRpY19j
YXN0PFdhc206OlNpZ25hdHVyZUluZGV4PihXYXNtOjpUeXBlS2luZDo6RnVuY3JlZikgfTsKKyAg
ICAgICAgcmV0dXJuIFdhc206OlR5cGUgeyBXYXNtOjpUeXBlS2luZDo6UmVmTnVsbCwgV2FzbTo6
TnVsbGFibGU6Olllcywgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KFdhc206OlR5cGVLaW5kOjpGdW5j
cmVmKSB9OwogICAgIHJldHVybiBUeXBlczo6RnVuY3JlZjsKIH0KIAogaW5saW5lIFR5cGUgZXh0
ZXJucmVmVHlwZSgpCiB7CiAgICAgaWYgKE9wdGlvbnM6OnVzZVdlYkFzc2VtYmx5VHlwZWRGdW5j
dGlvblJlZmVyZW5jZXMoKSkKLSAgICAgICAgcmV0dXJuIFdhc206OlR5cGUgeyBXYXNtOjpUeXBl
S2luZDo6UmVmTnVsbCwgV2FzbTo6TnVsbGFibGU6Olllcywgc3RhdGljX2Nhc3Q8V2FzbTo6U2ln
bmF0dXJlSW5kZXg+KFdhc206OlR5cGVLaW5kOjpFeHRlcm5yZWYpIH07CisgICAgICAgIHJldHVy
biBXYXNtOjpUeXBlIHsgV2FzbTo6VHlwZUtpbmQ6OlJlZk51bGwsIFdhc206Ok51bGxhYmxlOjpZ
ZXMsIHN0YXRpY19jYXN0PHVpbnQzMl90PihXYXNtOjpUeXBlS2luZDo6RXh0ZXJucmVmKSB9Owog
ICAgIHJldHVybiBUeXBlczo6RXh0ZXJucmVmOwogfQogCkBAIC0xMzgsMTQgKzEzOCw2IEBAIGlu
bGluZSBib29sIGlzUmVmV2l0aFR5cGVJbmRleChUeXBlIHR5cGUpCiAgICAgcmV0dXJuIGlzUmVm
VHlwZSh0eXBlKSAmJiAhaXNFeHRlcm5yZWYodHlwZSkgJiYgIWlzRnVuY3JlZih0eXBlKTsKIH0K
IAotaW5saW5lIGJvb2wgaXNUeXBlSW5kZXhIZWFwVHlwZShpbnQzMl90IGhlYXBUeXBlKQotewot
ICAgIGlmICghT3B0aW9uczo6dXNlV2ViQXNzZW1ibHlUeXBlZEZ1bmN0aW9uUmVmZXJlbmNlcygp
KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gaGVhcFR5cGUgPj0gMDsKLX0K
LQogaW5saW5lIGJvb2wgaXNTdWJ0eXBlKFR5cGUgc3ViLCBUeXBlIHBhcmVudCkKIHsKICAgICBp
ZiAoc3ViLmlzTnVsbGFibGUoKSAmJiAhcGFyZW50LmlzTnVsbGFibGUoKSkKQEAgLTI2Myw2ICsy
NTUsMTEgQEAgc3RydWN0IEdsb2JhbEluZm9ybWF0aW9uIHsKICAgICB1aW50NjRfdCBpbml0aWFs
Qml0c09ySW1wb3J0TnVtYmVyIHsgMCB9OwogfTsKIAorc3RydWN0IEZ1bmN0aW9uRGVzY3JpcHRp
b24geworICAgIFNpZ25hdHVyZUluZGV4IHNpZ25hdHVyZUluZGV4OworICAgIHVpbnQzMl90IHR5
cGVJbmRleDsKK307CisKIHN0cnVjdCBGdW5jdGlvbkRhdGEgewogICAgIFdURl9NQUtFX1NUUlVD
VF9GQVNUX0FMTE9DQVRFRDsKICAgICBzaXplX3Qgc3RhcnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRnVuY3Rpb25QYXJzZXIuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dhc21GdW5jdGlvblBhcnNlci5oCmluZGV4IGQ5N2U3ZTc1OWE0ZjI0NzVh
Mzc3NzczODcxNzgzMWJjNDllMDkzZDIuLjViNzFkMDhlZjZiODUyMjgyNjMxOTRmMjRmMTBjZjNm
ZTQ4YjJmZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21GdW5j
dGlvblBhcnNlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21GdW5jdGlv
blBhcnNlci5oCkBAIC0xMDgxLDExICsxMDgxLDcgQEAgRk9SX0VBQ0hfV0FTTV9NRU1PUllfU1RP
UkVfT1AoQ1JFQVRFX0NBU0UpCiAgICAgICAgIGlmIChPcHRpb25zOjp1c2VXZWJBc3NlbWJseVR5
cGVkRnVuY3Rpb25SZWZlcmVuY2VzKCkpIHsKICAgICAgICAgICAgIGludDMyX3QgaGVhcFR5cGU7
CiAgICAgICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJzZUhlYXBUeXBlKG1faW5mbywg
aGVhcFR5cGUpLCAicmVmLm51bGwgaGVhcHR5cGUgbXVzdCBiZSBmdW5jcmVmLCBleHRlcm5yZWYg
b3IgdHlwZV9pZHgiKTsKLSAgICAgICAgICAgIGlmIChpc1R5cGVJbmRleEhlYXBUeXBlKGhlYXBU
eXBlKSkgewotICAgICAgICAgICAgICAgIFNpZ25hdHVyZUluZGV4IHNpZ25hdHVyZUluZGV4ID0g
U2lnbmF0dXJlSW5mb3JtYXRpb246OmdldChtX2luZm8udXNlZFNpZ25hdHVyZXNbaGVhcFR5cGVd
LmdldCgpKTsKLSAgICAgICAgICAgICAgICB0eXBlT2ZOdWxsID0gVHlwZSB7IFR5cGVLaW5kOjpS
ZWZOdWxsLCBOdWxsYWJsZTo6WWVzLCBzaWduYXR1cmVJbmRleCB9OwotICAgICAgICAgICAgfSBl
bHNlCi0gICAgICAgICAgICAgICAgdHlwZU9mTnVsbCA9IFR5cGUgeyBUeXBlS2luZDo6UmVmTnVs
bCwgTnVsbGFibGU6Olllcywgc3RhdGljX2Nhc3Q8U2lnbmF0dXJlSW5kZXg+KGhlYXBUeXBlKSB9
OworICAgICAgICAgICAgdHlwZU9mTnVsbCA9IFR5cGUgeyBUeXBlS2luZDo6UmVmTnVsbCwgTnVs
bGFibGU6Olllcywgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGhlYXBUeXBlKSB9OwogICAgICAgICB9
IGVsc2UKICAgICAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIXBhcnNlUmVmVHlwZShtX2lu
Zm8sIHR5cGVPZk51bGwpLCAicmVmLm51bGwgdHlwZSBtdXN0IGJlIGEgcmVmZXJlbmNlIHR5cGUi
KTsKICAgICAgICAgbV9leHByZXNzaW9uU3RhY2suY29uc3RydWN0QW5kQXBwZW5kKHR5cGVPZk51
bGwsIG1fY29udGV4dC5hZGRDb25zdGFudCh0eXBlT2ZOdWxsLCBKU1ZhbHVlOjplbmNvZGUoanNO
dWxsKCkpKSk7CkBAIC0xMTEzLDggKzExMDksNyBAQCBGT1JfRUFDSF9XQVNNX01FTU9SWV9TVE9S
RV9PUChDUkVBVEVfQ0FTRSkKICAgICAgICAgV0FTTV9UUllfQUREX1RPX0NPTlRFWFQoYWRkUmVm
RnVuYyhpbmRleCwgcmVzdWx0KSk7CiAKICAgICAgICAgaWYgKE9wdGlvbnM6OnVzZVdlYkFzc2Vt
Ymx5VHlwZWRGdW5jdGlvblJlZmVyZW5jZXMoKSkgewotICAgICAgICAgICAgU2lnbmF0dXJlSW5k
ZXggc2lnbmF0dXJlSW5kZXggPSBtX2luZm8uc2lnbmF0dXJlSW5kZXhGcm9tRnVuY3Rpb25JbmRl
eFNwYWNlKGluZGV4KTsKLSAgICAgICAgICAgIG1fZXhwcmVzc2lvblN0YWNrLmNvbnN0cnVjdEFu
ZEFwcGVuZChUeXBlIHsgVHlwZUtpbmQ6OlJlZiwgTnVsbGFibGU6Ok5vLCBzaWduYXR1cmVJbmRl
eCB9LCByZXN1bHQpOworICAgICAgICAgICAgbV9leHByZXNzaW9uU3RhY2suY29uc3RydWN0QW5k
QXBwZW5kKFR5cGUgeyBUeXBlS2luZDo6UmVmLCBOdWxsYWJsZTo6Tm8sIG1faW5mby5nZXRUeXBl
SW5kZXhGb3JGdW5jdGlvbihpbmRleCkgfSwgcmVzdWx0KTsKICAgICAgICAgICAgIHJldHVybiB7
IH07CiAgICAgICAgIH0KIApAQCAtMTI1OCw4ICsxMjUzLDggQEAgRk9SX0VBQ0hfV0FTTV9NRU1P
UllfU1RPUkVfT1AoQ1JFQVRFX0NBU0UpCiAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIU9w
dGlvbnM6OnVzZVdlYkFzc2VtYmx5VHlwZWRGdW5jdGlvblJlZmVyZW5jZXMoKSwgImZ1bmN0aW9u
IHJlZmVyZW5jZXMgYXJlIG5vdCBlbmFibGVkIik7CiAgICAgICAgIFdBU01fVkFMSURBVE9SX0ZB
SUxfSUYoIWlzUmVmV2l0aFR5cGVJbmRleChtX2V4cHJlc3Npb25TdGFjay5sYXN0KCkudHlwZSgp
KSwgIm5vbi1mdW5jcmVmIGNhbGxfcmVmIHZhbHVlICIsIG1fZXhwcmVzc2lvblN0YWNrLmxhc3Qo
KS50eXBlKCkua2luZCk7CiAKLSAgICAgICAgY29uc3QgU2lnbmF0dXJlSW5kZXggY2FsbGVlU2ln
bmF0dXJlSW5kZXggPSBtX2V4cHJlc3Npb25TdGFjay5sYXN0KCkudHlwZSgpLmluZGV4OwotICAg
ICAgICBjb25zdCBTaWduYXR1cmUmIGNhbGxlZVNpZ25hdHVyZSA9IFNpZ25hdHVyZUluZm9ybWF0
aW9uOjpnZXQoY2FsbGVlU2lnbmF0dXJlSW5kZXgpOworICAgICAgICBjb25zdCBhdXRvIGNhbGxl
ZVNpZ25hdHVyZUluZGV4ID0gbV9leHByZXNzaW9uU3RhY2subGFzdCgpLnR5cGUoKS5pbmRleDsK
KyAgICAgICAgY29uc3QgU2lnbmF0dXJlJiBjYWxsZWVTaWduYXR1cmUgPSBtX2luZm8udXNlZFNp
Z25hdHVyZXNbY2FsbGVlU2lnbmF0dXJlSW5kZXhdLmdldCgpOwogICAgICAgICBzaXplX3QgYXJn
dW1lbnRDb3VudCA9IGNhbGxlZVNpZ25hdHVyZS5hcmd1bWVudENvdW50KCkgKyAxOyAvLyBBZGQg
dGhlIGNhbGxlZSdzIHZhbHVlLgogICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKGFyZ3VtZW50
Q291bnQgPiBtX2V4cHJlc3Npb25TdGFjay5zaXplKCksICJjYWxsX3JlZiBleHBlY3RzICIsIGFy
Z3VtZW50Q291bnQsICIgYXJndW1lbnRzLCBidXQgdGhlIGV4cHJlc3Npb24gc3RhY2sgY3VycmVu
dGx5IGhvbGRzICIsIG1fZXhwcmVzc2lvblN0YWNrLnNpemUoKSwgIiB2YWx1ZXMiKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUxMSW50UGxhbi5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTExJbnRQbGFuLmNwcAppbmRleCA3YzBiYmM1
ZjcxZjU5Y2JkNjZiMmU4ZTMyOWUzYzIzNTc3ZGNlODBhLi5iMTY2NThhNzNmY2Q3OTdjMDRiMWVh
M2VjODY4YTg4YTdkOWU1ODEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XYXNtTExJbnRQbGFuLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNt
TExJbnRQbGFuLmNwcApAQCAtNzksNyArNzksNyBAQCBib29sIExMSW50UGxhbjo6cHJlcGFyZUlt
cGwoKQogdm9pZCBMTEludFBsYW46OmNvbXBpbGVGdW5jdGlvbih1aW50MzJfdCBmdW5jdGlvbklu
ZGV4KQogewogICAgIGNvbnN0IGF1dG8mIGZ1bmN0aW9uID0gbV9tb2R1bGVJbmZvcm1hdGlvbi0+
ZnVuY3Rpb25zW2Z1bmN0aW9uSW5kZXhdOwotICAgIFNpZ25hdHVyZUluZGV4IHNpZ25hdHVyZUlu
ZGV4ID0gbV9tb2R1bGVJbmZvcm1hdGlvbi0+aW50ZXJuYWxGdW5jdGlvblNpZ25hdHVyZUluZGlj
ZXNbZnVuY3Rpb25JbmRleF07CisgICAgU2lnbmF0dXJlSW5kZXggc2lnbmF0dXJlSW5kZXggPSBt
X21vZHVsZUluZm9ybWF0aW9uLT5pbnRlcm5hbEZ1bmN0aW9uU2lnbmF0dXJlSW5kaWNlc1tmdW5j
dGlvbkluZGV4XS5zaWduYXR1cmVJbmRleDsKICAgICBjb25zdCBTaWduYXR1cmUmIHNpZ25hdHVy
ZSA9IFNpZ25hdHVyZUluZm9ybWF0aW9uOjpnZXQoc2lnbmF0dXJlSW5kZXgpOwogICAgIHVuc2ln
bmVkIGZ1bmN0aW9uSW5kZXhTcGFjZSA9IG1fd2FzbVRvV2FzbUV4aXRTdHVicy5zaXplKCkgKyBm
dW5jdGlvbkluZGV4OwogICAgIEFTU0VSVF9VTlVTRUQoZnVuY3Rpb25JbmRleFNwYWNlLCBtX21v
ZHVsZUluZm9ybWF0aW9uLT5zaWduYXR1cmVJbmRleEZyb21GdW5jdGlvbkluZGV4U3BhY2UoZnVu
Y3Rpb25JbmRleFNwYWNlKSA9PSBzaWduYXR1cmVJbmRleCk7CkBAIC0xNDgsNyArMTQ4LDcgQEAg
dm9pZCBMTEludFBsYW46OmRpZENvbXBsZXRlQ29tcGlsYXRpb24oKQogCiAgICAgZm9yICh1aW50
MzJfdCBmdW5jdGlvbkluZGV4ID0gMDsgZnVuY3Rpb25JbmRleCA8IG1fbW9kdWxlSW5mb3JtYXRp
b24tPmZ1bmN0aW9ucy5zaXplKCk7IGZ1bmN0aW9uSW5kZXgrKykgewogICAgICAgICBpZiAobV9l
eHBvcnRlZEZ1bmN0aW9uSW5kaWNlcy5jb250YWlucyhmdW5jdGlvbkluZGV4KSB8fCBtX21vZHVs
ZUluZm9ybWF0aW9uLT5yZWZlcmVuY2VkRnVuY3Rpb25zKCkuY29udGFpbnMoZnVuY3Rpb25JbmRl
eCkpIHsKLSAgICAgICAgICAgIFNpZ25hdHVyZUluZGV4IHNpZ25hdHVyZUluZGV4ID0gbV9tb2R1
bGVJbmZvcm1hdGlvbi0+aW50ZXJuYWxGdW5jdGlvblNpZ25hdHVyZUluZGljZXNbZnVuY3Rpb25J
bmRleF07CisgICAgICAgICAgICBTaWduYXR1cmVJbmRleCBzaWduYXR1cmVJbmRleCA9IG1fbW9k
dWxlSW5mb3JtYXRpb24tPmludGVybmFsRnVuY3Rpb25TaWduYXR1cmVJbmRpY2VzW2Z1bmN0aW9u
SW5kZXhdLnNpZ25hdHVyZUluZGV4OwogICAgICAgICAgICAgY29uc3QgU2lnbmF0dXJlJiBzaWdu
YXR1cmUgPSBTaWduYXR1cmVJbmZvcm1hdGlvbjo6Z2V0KHNpZ25hdHVyZUluZGV4KTsKICAgICAg
ICAgICAgIENDYWxsSGVscGVycyBqaXQ7CiAgICAgICAgICAgICAvLyBUaGUgTExJbnQgYWx3YXlz
IGJvdW5kcyBjaGVja3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21Nb2R1bGVJbmZvcm1hdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1v
ZHVsZUluZm9ybWF0aW9uLmgKaW5kZXggMzI4YzZiY2E2YmZhNjYyYjUzZTljOGM4ZGE5YWNiMThm
NTA0NGFjNS4uODdkMmZiMGJmNGUzYmIyMjU1YzBlNjdmMmU4YzA4MWZjYjdhNjIyYSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1vZHVsZUluZm9ybWF0aW9uLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1vZHVsZUluZm9ybWF0aW9uLmgK
QEAgLTU0LDggKzU0LDggQEAgc3RydWN0IE1vZHVsZUluZm9ybWF0aW9uIDogcHVibGljIFRocmVh
ZFNhZmVSZWZDb3VudGVkPE1vZHVsZUluZm9ybWF0aW9uPiB7CiAgICAgU2lnbmF0dXJlSW5kZXgg
c2lnbmF0dXJlSW5kZXhGcm9tRnVuY3Rpb25JbmRleFNwYWNlKHNpemVfdCBmdW5jdGlvbkluZGV4
KSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIGlzSW1wb3J0ZWRGdW5jdGlvbkZyb21GdW5j
dGlvbkluZGV4U3BhY2UoZnVuY3Rpb25JbmRleCkKLSAgICAgICAgICAgID8gaW1wb3J0RnVuY3Rp
b25TaWduYXR1cmVJbmRpY2VzW2Z1bmN0aW9uSW5kZXhdCi0gICAgICAgICAgICA6IGludGVybmFs
RnVuY3Rpb25TaWduYXR1cmVJbmRpY2VzW2Z1bmN0aW9uSW5kZXggLSBpbXBvcnRGdW5jdGlvblNp
Z25hdHVyZUluZGljZXMuc2l6ZSgpXTsKKyAgICAgICAgICAgID8gaW1wb3J0RnVuY3Rpb25TaWdu
YXR1cmVJbmRpY2VzW2Z1bmN0aW9uSW5kZXhdLnNpZ25hdHVyZUluZGV4CisgICAgICAgICAgICA6
IGludGVybmFsRnVuY3Rpb25TaWduYXR1cmVJbmRpY2VzW2Z1bmN0aW9uSW5kZXggLSBpbXBvcnRG
dW5jdGlvblNpZ25hdHVyZUluZGljZXMuc2l6ZSgpXS5zaWduYXR1cmVJbmRleDsKICAgICB9CiAK
ICAgICBzaXplX3QgZXhjZXB0aW9uSW5kZXhTcGFjZVNpemUoKSBjb25zdCB7IHJldHVybiBpbXBv
cnRFeGNlcHRpb25TaWduYXR1cmVJbmRpY2VzLnNpemUoKSArIGludGVybmFsRXhjZXB0aW9uU2ln
bmF0dXJlSW5kaWNlcy5zaXplKCk7IH0KQEAgLTkzLDkgKzkzLDE2IEBAIHN0cnVjdCBNb2R1bGVJ
bmZvcm1hdGlvbiA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxNb2R1bGVJbmZvcm1hdGlv
bj4gewogICAgIGJvb2wgaXNEZWNsYXJlZEV4Y2VwdGlvbih1aW50MzJfdCBpbmRleCkgY29uc3Qg
eyByZXR1cm4gbV9kZWNsYXJlZEV4Y2VwdGlvbnMuY29udGFpbnMoaW5kZXgpOyB9CiAgICAgdm9p
ZCBhZGREZWNsYXJlZEV4Y2VwdGlvbih1aW50MzJfdCBpbmRleCkgeyBtX2RlY2xhcmVkRXhjZXB0
aW9ucy5zZXQoaW5kZXgpOyB9CiAKKyAgICB1aW50MzJfdCBnZXRUeXBlSW5kZXhGb3JGdW5jdGlv
bih1aW50MzJfdCBmdW5jdGlvbkluZGV4KSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKGlzSW1w
b3J0ZWRGdW5jdGlvbkZyb21GdW5jdGlvbkluZGV4U3BhY2UoZnVuY3Rpb25JbmRleCkpCisgICAg
ICAgICAgICByZXR1cm4gaW1wb3J0RnVuY3Rpb25TaWduYXR1cmVJbmRpY2VzW2Z1bmN0aW9uSW5k
ZXhdLnR5cGVJbmRleDsKKyAgICAgICAgcmV0dXJuIGludGVybmFsRnVuY3Rpb25TaWduYXR1cmVJ
bmRpY2VzW2Z1bmN0aW9uSW5kZXggLSBpbXBvcnRGdW5jdGlvblNpZ25hdHVyZUluZGljZXMuc2l6
ZSgpXS50eXBlSW5kZXg7CisgICAgfQorCiAgICAgVmVjdG9yPEltcG9ydD4gaW1wb3J0czsKLSAg
ICBWZWN0b3I8U2lnbmF0dXJlSW5kZXg+IGltcG9ydEZ1bmN0aW9uU2lnbmF0dXJlSW5kaWNlczsK
LSAgICBWZWN0b3I8U2lnbmF0dXJlSW5kZXg+IGludGVybmFsRnVuY3Rpb25TaWduYXR1cmVJbmRp
Y2VzOworICAgIFZlY3RvcjxGdW5jdGlvbkRlc2NyaXB0aW9uPiBpbXBvcnRGdW5jdGlvblNpZ25h
dHVyZUluZGljZXM7CisgICAgVmVjdG9yPEZ1bmN0aW9uRGVzY3JpcHRpb24+IGludGVybmFsRnVu
Y3Rpb25TaWduYXR1cmVJbmRpY2VzOwogICAgIFZlY3RvcjxTaWduYXR1cmVJbmRleD4gaW1wb3J0
RXhjZXB0aW9uU2lnbmF0dXJlSW5kaWNlczsKICAgICBWZWN0b3I8U2lnbmF0dXJlSW5kZXg+IGlu
dGVybmFsRXhjZXB0aW9uU2lnbmF0dXJlSW5kaWNlczsKICAgICBWZWN0b3I8UmVmPFNpZ25hdHVy
ZT4+IHVzZWRTaWduYXR1cmVzOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbU9NR0Zvck9TUkVudHJ5UGxhbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XYXNtT01HRm9yT1NSRW50cnlQbGFuLmNwcAppbmRleCA0OGZiNDUwYzRjMDg5MDljMTZkMThj
MTI2MTdjOThlNjljYWFkMzM0Li4wNzMxMzlmNWRkNWI0MDBiNGIyOTQ4M2VmN2M1Yjg3NDVlMWM1
ZWYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtT01HRm9yT1NS
RW50cnlQbGFuLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtT01HRm9y
T1NSRW50cnlQbGFuLmNwcApAQCAtNjksNyArNjksNyBAQCB2b2lkIE9NR0Zvck9TUkVudHJ5UGxh
bjo6d29yayhDb21waWxhdGlvbkVmZm9ydCkKICAgICBjb25zdCB1aW50MzJfdCBmdW5jdGlvbklu
ZGV4U3BhY2UgPSBtX2Z1bmN0aW9uSW5kZXggKyBtX21vZHVsZS0+bW9kdWxlSW5mb3JtYXRpb24o
KS5pbXBvcnRGdW5jdGlvbkNvdW50KCk7CiAgICAgQVNTRVJUKGZ1bmN0aW9uSW5kZXhTcGFjZSA8
IG1fbW9kdWxlLT5tb2R1bGVJbmZvcm1hdGlvbigpLmZ1bmN0aW9uSW5kZXhTcGFjZVNpemUoKSk7
CiAKLSAgICBTaWduYXR1cmVJbmRleCBzaWduYXR1cmVJbmRleCA9IG1fbW9kdWxlSW5mb3JtYXRp
b24tPmludGVybmFsRnVuY3Rpb25TaWduYXR1cmVJbmRpY2VzW21fZnVuY3Rpb25JbmRleF07Cisg
ICAgU2lnbmF0dXJlSW5kZXggc2lnbmF0dXJlSW5kZXggPSBtX21vZHVsZUluZm9ybWF0aW9uLT5p
bnRlcm5hbEZ1bmN0aW9uU2lnbmF0dXJlSW5kaWNlc1ttX2Z1bmN0aW9uSW5kZXhdLnNpZ25hdHVy
ZUluZGV4OwogICAgIGNvbnN0IFNpZ25hdHVyZSYgc2lnbmF0dXJlID0gU2lnbmF0dXJlSW5mb3Jt
YXRpb246OmdldChzaWduYXR1cmVJbmRleCk7CiAKICAgICBWZWN0b3I8VW5saW5rZWRXYXNtVG9X
YXNtQ2FsbD4gdW5saW5rZWRDYWxsczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dhc21PTUdQbGFuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21P
TUdQbGFuLmNwcAppbmRleCA2YTRmNzg3MjY5NTQ4NTQ2MzBlZThlODM1M2U2OGZmNDQzZjBlNjFm
Li41OGQ1ZWY0ZWQ5NGMyMTMwMTkwN2RhZTI1OTAzYzU3NDEzNjc4OWViIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtT01HUGxhbi5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2FzbU9NR1BsYW4uY3BwCkBAIC02Niw3ICs2Niw3IEBAIHZvaWQg
T01HUGxhbjo6d29yayhDb21waWxhdGlvbkVmZm9ydCkKICAgICBjb25zdCB1aW50MzJfdCBmdW5j
dGlvbkluZGV4U3BhY2UgPSBtX2Z1bmN0aW9uSW5kZXggKyBtX21vZHVsZS0+bW9kdWxlSW5mb3Jt
YXRpb24oKS5pbXBvcnRGdW5jdGlvbkNvdW50KCk7CiAgICAgQVNTRVJUKGZ1bmN0aW9uSW5kZXhT
cGFjZSA8IG1fbW9kdWxlLT5tb2R1bGVJbmZvcm1hdGlvbigpLmZ1bmN0aW9uSW5kZXhTcGFjZVNp
emUoKSk7CiAKLSAgICBTaWduYXR1cmVJbmRleCBzaWduYXR1cmVJbmRleCA9IG1fbW9kdWxlSW5m
b3JtYXRpb24tPmludGVybmFsRnVuY3Rpb25TaWduYXR1cmVJbmRpY2VzW21fZnVuY3Rpb25JbmRl
eF07CisgICAgU2lnbmF0dXJlSW5kZXggc2lnbmF0dXJlSW5kZXggPSBtX21vZHVsZUluZm9ybWF0
aW9uLT5pbnRlcm5hbEZ1bmN0aW9uU2lnbmF0dXJlSW5kaWNlc1ttX2Z1bmN0aW9uSW5kZXhdLnNp
Z25hdHVyZUluZGV4OwogICAgIGNvbnN0IFNpZ25hdHVyZSYgc2lnbmF0dXJlID0gU2lnbmF0dXJl
SW5mb3JtYXRpb246OmdldChzaWduYXR1cmVJbmRleCk7CiAKICAgICBWZWN0b3I8VW5saW5rZWRX
YXNtVG9XYXNtQ2FsbD4gdW5saW5rZWRDYWxsczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dhc21QYXJzZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21QYXJzZXIuaAppbmRleCBlZDAwZDlhMGE0MmI3OWFkYzFmM2M4YWIwZjM0NmZjNGY2ZGE4OWFl
Li40NmQ3NGVhYmNlNDlhZTFlODQ2NjE3MzI0YWMxZTYzN2NkMTVhZmZlIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtUGFyc2VyLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbVBhcnNlci5oCkBAIC0zMzAsMjAgKzMzMCwyMCBAQCBBTFdBWVNf
SU5MSU5FIGJvb2wgUGFyc2VyPFN1Y2Nlc3NUeXBlPjo6cGFyc2VWYWx1ZVR5cGUoY29uc3QgTW9k
dWxlSW5mb3JtYXRpb24mCiAKICAgICBUeXBlS2luZCB0eXBlS2luZCA9IHN0YXRpY19jYXN0PFR5
cGVLaW5kPihraW5kKTsKICAgICBib29sIGlzTnVsbGFibGUgPSB0cnVlOwotICAgIFNpZ25hdHVy
ZUluZGV4IHNpZ0luZGV4ID0gMDsKKyAgICB1bnNpZ25lZCB0eXBlSW5kZXggPSAwOwogCiAgICAg
aWYgKE9wdGlvbnM6OnVzZVdlYkFzc2VtYmx5VHlwZWRGdW5jdGlvblJlZmVyZW5jZXMoKSAmJiAo
dHlwZUtpbmQgPT0gVHlwZUtpbmQ6OkZ1bmNyZWYgfHwgdHlwZUtpbmQgPT0gVHlwZUtpbmQ6OkV4
dGVybnJlZikpIHsKLSAgICAgICAgc2lnSW5kZXggPSBzdGF0aWNfY2FzdDxTaWduYXR1cmVJbmRl
eD4odHlwZUtpbmQpOworICAgICAgICB0eXBlSW5kZXggPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
dHlwZUtpbmQpOwogICAgICAgICB0eXBlS2luZCA9IFR5cGVLaW5kOjpSZWZOdWxsOwogICAgIH0g
ZWxzZSBpZiAodHlwZUtpbmQgPT0gVHlwZUtpbmQ6OlJlZiB8fCB0eXBlS2luZCA9PSBUeXBlS2lu
ZDo6UmVmTnVsbCkgewogICAgICAgICBpc051bGxhYmxlID0gdHlwZUtpbmQgPT0gVHlwZUtpbmQ6
OlJlZk51bGw7CiAgICAgICAgIGludDMyX3QgaGVhcFR5cGU7CiAgICAgICAgIGlmICghcGFyc2VI
ZWFwVHlwZShpbmZvLCBoZWFwVHlwZSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
ICAgIHNpZ0luZGV4ID0gaGVhcFR5cGUgPCAwID8gc3RhdGljX2Nhc3Q8U2lnbmF0dXJlSW5kZXg+
KGhlYXBUeXBlKSA6IFNpZ25hdHVyZUluZm9ybWF0aW9uOjpnZXQoaW5mby51c2VkU2lnbmF0dXJl
c1toZWFwVHlwZV0uZ2V0KCkpOworICAgICAgICB0eXBlSW5kZXggPSBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oaGVhcFR5cGUpOwogICAgIH0KIAotICAgIFR5cGUgdHlwZSA9IHsgdHlwZUtpbmQsIHN0
YXRpY19jYXN0PE51bGxhYmxlPihpc051bGxhYmxlKSwgc2lnSW5kZXggfTsKKyAgICBUeXBlIHR5
cGUgPSB7IHR5cGVLaW5kLCBzdGF0aWNfY2FzdDxOdWxsYWJsZT4oaXNOdWxsYWJsZSksIHR5cGVJ
bmRleCB9OwogICAgIGlmICghaXNWYWx1ZVR5cGUodHlwZSkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICByZXN1bHQgPSB0eXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbVNlY3Rpb25QYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V2FzbVNlY3Rpb25QYXJzZXIuY3BwCmluZGV4IGE4ODk1Yzk1MTI5ZDMzYzdjMGNkYmY4NjY0ZTg5
MGQ0YWYzNTEzYmEuLmQ1ZDdiOTNmNDVlNGVlODg2ZGM5NjY5YTQ4MzMyMjk2ZTI2ZGMwZmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TZWN0aW9uUGFyc2VyLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2VjdGlvblBhcnNlci5jcHAK
QEAgLTExNiw3ICsxMTYsNyBAQCBhdXRvIFNlY3Rpb25QYXJzZXI6OnBhcnNlSW1wb3J0KCkgLT4g
UGFydGlhbFJlc3VsdAogICAgICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRihmdW5jdGlvblNp
Z25hdHVyZUluZGV4ID49IG1faW5mby0+dXNlZFNpZ25hdHVyZXMuc2l6ZSgpLCAiaW52YWxpZCBm
dW5jdGlvbiBzaWduYXR1cmUgZm9yICIsIGltcG9ydE51bWJlciwgInRoIEltcG9ydCwgIiwgZnVu
Y3Rpb25TaWduYXR1cmVJbmRleCwgIiBpcyBvdXQgb2YgcmFuZ2Ugb2YgIiwgbV9pbmZvLT51c2Vk
U2lnbmF0dXJlcy5zaXplKCksICIgaW4gbW9kdWxlICciLCBtb2R1bGVTdHJpbmcsICInIGZpZWxk
ICciLCBmaWVsZFN0cmluZywgIiciKTsKICAgICAgICAgICAgIGtpbmRJbmRleCA9IG1faW5mby0+
aW1wb3J0RnVuY3Rpb25TaWduYXR1cmVJbmRpY2VzLnNpemUoKTsKICAgICAgICAgICAgIFNpZ25h
dHVyZUluZGV4IHNpZ25hdHVyZUluZGV4ID0gU2lnbmF0dXJlSW5mb3JtYXRpb246OmdldChtX2lu
Zm8tPnVzZWRTaWduYXR1cmVzW2Z1bmN0aW9uU2lnbmF0dXJlSW5kZXhdKTsKLSAgICAgICAgICAg
IG1faW5mby0+aW1wb3J0RnVuY3Rpb25TaWduYXR1cmVJbmRpY2VzLnVuY2hlY2tlZEFwcGVuZChz
aWduYXR1cmVJbmRleCk7CisgICAgICAgICAgICBtX2luZm8tPmltcG9ydEZ1bmN0aW9uU2lnbmF0
dXJlSW5kaWNlcy51bmNoZWNrZWRBcHBlbmQoRnVuY3Rpb25EZXNjcmlwdGlvbiB7IHNpZ25hdHVy
ZUluZGV4LCBmdW5jdGlvblNpZ25hdHVyZUluZGV4IH0pOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KICAgICAgICAgY2FzZSBFeHRlcm5hbEtpbmQ6OlRhYmxlOiB7CkBAIC0xODUsNyAr
MTg1LDcgQEAgYXV0byBTZWN0aW9uUGFyc2VyOjpwYXJzZUZ1bmN0aW9uKCkgLT4gUGFydGlhbFJl
c3VsdAogICAgICAgICAvLyBUaGUgQ29kZSBzZWN0aW9uIGZpeGVzIHVwIHN0YXJ0IGFuZCBlbmQu
CiAgICAgICAgIHNpemVfdCBzdGFydCA9IDA7CiAgICAgICAgIHNpemVfdCBlbmQgPSAwOwotICAg
ICAgICBtX2luZm8tPmludGVybmFsRnVuY3Rpb25TaWduYXR1cmVJbmRpY2VzLnVuY2hlY2tlZEFw
cGVuZChzaWduYXR1cmVJbmRleCk7CisgICAgICAgIG1faW5mby0+aW50ZXJuYWxGdW5jdGlvblNp
Z25hdHVyZUluZGljZXMudW5jaGVja2VkQXBwZW5kKEZ1bmN0aW9uRGVzY3JpcHRpb24geyBzaWdu
YXR1cmVJbmRleCwgdHlwZU51bWJlciB9KTsKICAgICAgICAgbV9pbmZvLT5mdW5jdGlvbnMudW5j
aGVja2VkQXBwZW5kKHsgc3RhcnQsIGVuZCwgVmVjdG9yPHVpbnQ4X3Q+KCkgfSk7CiAgICAgfQog
CkBAIC02MjEsMTEgKzYyMSw3IEBAIGF1dG8gU2VjdGlvblBhcnNlcjo6cGFyc2VJbml0RXhwcih1
aW50OF90JiBvcGNvZGUsIHVpbnQ2NF90JiBiaXRzT3JJbXBvcnROdW1iZXIsCiAgICAgICAgIGlm
IChPcHRpb25zOjp1c2VXZWJBc3NlbWJseVR5cGVkRnVuY3Rpb25SZWZlcmVuY2VzKCkpIHsKICAg
ICAgICAgICAgIGludDMyX3QgaGVhcFR5cGU7CiAgICAgICAgICAgICBXQVNNX1BBUlNFUl9GQUlM
X0lGKCFwYXJzZUhlYXBUeXBlKG1faW5mbywgaGVhcFR5cGUpLCAicmVmLm51bGwgaGVhcHR5cGUg
bXVzdCBiZSBmdW5jcmVmLCBleHRlcm5yZWYgb3IgdHlwZV9pZHgiKTsKLSAgICAgICAgICAgIGlm
IChpc1R5cGVJbmRleEhlYXBUeXBlKGhlYXBUeXBlKSkgewotICAgICAgICAgICAgICAgIFNpZ25h
dHVyZUluZGV4IHNpZ25hdHVyZUluZGV4ID0gU2lnbmF0dXJlSW5mb3JtYXRpb246OmdldChtX2lu
Zm8tPnVzZWRTaWduYXR1cmVzW2hlYXBUeXBlXS5nZXQoKSk7Ci0gICAgICAgICAgICAgICAgdHlw
ZU9mTnVsbCA9IFR5cGUgeyBUeXBlS2luZDo6UmVmTnVsbCwgTnVsbGFibGU6Olllcywgc2lnbmF0
dXJlSW5kZXggfTsKLSAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIHR5cGVPZk51
bGwgPSBUeXBlIHsgVHlwZUtpbmQ6OlJlZk51bGwsIE51bGxhYmxlOjpZZXMsIHN0YXRpY19jYXN0
PFNpZ25hdHVyZUluZGV4PihoZWFwVHlwZSkgfTsKKyAgICAgICAgICAgIHR5cGVPZk51bGwgPSBU
eXBlIHsgVHlwZUtpbmQ6OlJlZk51bGwsIE51bGxhYmxlOjpZZXMsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihoZWFwVHlwZSkgfTsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBXQVNNX1BBUlNF
Ul9GQUlMX0lGKCFwYXJzZVJlZlR5cGUobV9pbmZvLCB0eXBlT2ZOdWxsKSwgInJlZi5udWxsIHR5
cGUgbXVzdCBiZSBhIHJlZmVyZW5jZSB0eXBlIik7CiAKQEAgLTYzNSwxNyArNjMxLDE2IEBAIGF1
dG8gU2VjdGlvblBhcnNlcjo6cGFyc2VJbml0RXhwcih1aW50OF90JiBvcGNvZGUsIHVpbnQ2NF90
JiBiaXRzT3JJbXBvcnROdW1iZXIsCiAgICAgfQogCiAgICAgY2FzZSBSZWZGdW5jOiB7Ci0gICAg
ICAgIHVpbnQzMl90IGluZGV4OwotICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJzZVZh
clVJbnQzMihpbmRleCksICJjYW4ndCBnZXQgcmVmLmZ1bmMgaW5kZXgiKTsKLSAgICAgICAgV0FT
TV9QQVJTRVJfRkFJTF9JRihpbmRleCA+PSBtX2luZm8tPmZ1bmN0aW9ucy5zaXplKCksICJyZWYu
ZnVuYyBpbmRleCIsIGluZGV4LCAiIGV4Y2VlZHMgdGhlIG51bWJlciBvZiBmdW5jdGlvbnMgIiwg
bV9pbmZvLT5mdW5jdGlvbnMuc2l6ZSgpKTsKKyAgICAgICAgdWludDMyX3QgZnVuY3Rpb25JbmRl
eDsKKyAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighcGFyc2VWYXJVSW50MzIoZnVuY3Rpb25J
bmRleCksICJjYW4ndCBnZXQgcmVmLmZ1bmMgaW5kZXgiKTsKKyAgICAgICAgV0FTTV9QQVJTRVJf
RkFJTF9JRihmdW5jdGlvbkluZGV4ID49IG1faW5mby0+ZnVuY3Rpb25zLnNpemUoKSwgInJlZi5m
dW5jIGluZGV4IiwgZnVuY3Rpb25JbmRleCwgIiBleGNlZWRzIHRoZSBudW1iZXIgb2YgZnVuY3Rp
b25zICIsIG1faW5mby0+ZnVuY3Rpb25zLnNpemUoKSk7CiAKICAgICAgICAgaWYgKE9wdGlvbnM6
OnVzZVdlYkFzc2VtYmx5VHlwZWRGdW5jdGlvblJlZmVyZW5jZXMoKSkgewotICAgICAgICAgICAg
U2lnbmF0dXJlSW5kZXggc2lnbmF0dXJlSW5kZXggPSBtX2luZm8tPnNpZ25hdHVyZUluZGV4RnJv
bUZ1bmN0aW9uSW5kZXhTcGFjZShpbmRleCk7Ci0gICAgICAgICAgICByZXN1bHRUeXBlID0geyBU
eXBlS2luZDo6UmVmLCBOdWxsYWJsZTo6Tm8sIHNpZ25hdHVyZUluZGV4IH07CisgICAgICAgICAg
ICByZXN1bHRUeXBlID0geyBUeXBlS2luZDo6UmVmLCBOdWxsYWJsZTo6Tm8sIG1faW5mby0+Z2V0
VHlwZUluZGV4Rm9yRnVuY3Rpb24oZnVuY3Rpb25JbmRleCkgfTsKICAgICAgICAgfSBlbHNlCiAg
ICAgICAgICAgICByZXN1bHRUeXBlID0gVHlwZXM6OkZ1bmNyZWY7CiAKLSAgICAgICAgYml0c09y
SW1wb3J0TnVtYmVyID0gaW5kZXg7CisgICAgICAgIGJpdHNPckltcG9ydE51bWJlciA9IGZ1bmN0
aW9uSW5kZXg7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vZ2VuZXJhdGVXYXNtT3BzSGVhZGVyLnB5IGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vZ2VuZXJhdGVXYXNtT3BzSGVhZGVyLnB5CmluZGV4IDY1NzZhNjljNTY4
MzUzYWI2NzdiOGUxYjRjODQxNDZhNzRjMDM1ZmYuLjQ3MTljNTEyMTExOTA0ZDI4N2I5M2EwMTFl
YzQ3NmFiYWVhMmVhNWMgMTAwNzU1Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2dl
bmVyYXRlV2FzbU9wc0hlYWRlci5weQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9n
ZW5lcmF0ZVdhc21PcHNIZWFkZXIucHkKQEAgLTIxOCwxMiArMjE4LDEzIEBAIGVudW0gY2xhc3Mg
TnVsbGFibGUgOiBib29sIHsKICAgWWVzID0gdHJ1ZSwKIH07CiAKKy8vIFRPRE8oZGJlemhldHNr
b3YpOiBtb3ZlIHRoaXMgZnJvbSBoZXJlLgogdXNpbmcgU2lnbmF0dXJlSW5kZXggPSB1aW50cHRy
X3Q7CiAKIHN0cnVjdCBUeXBlIHsKICAgICBUeXBlS2luZCBraW5kOwogICAgIE51bGxhYmxlIG51
bGxhYmxlOwotICAgIFNpZ25hdHVyZUluZGV4IGluZGV4OworICAgIHVuc2lnbmVkIGluZGV4Owog
CiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFR5cGUmIG90aGVyKSBjb25zdAogICAgIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlDb2Rl
QmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUNv
ZGVCbG9jay5jcHAKaW5kZXggNTRlOTc0MTRiNjYyNjAzNGYxMzBlMTVkNDkzZDdjOTUwZTM4MTU3
NS4uNzE1ZjBhN2VkNzFjOTkzNTMyZTk5ZTM5YzhkZWZmNTFjOGJmMDI5OCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUNvZGVCbG9jay5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUNvZGVCbG9j
ay5jcHAKQEAgLTUyLDcgKzUyLDcgQEAgSlNXZWJBc3NlbWJseUNvZGVCbG9jazo6SlNXZWJBc3Nl
bWJseUNvZGVCbG9jayhWTSYgdm0sIFJlZjxXYXNtOjpDb2RlQmxvY2s+JiYgY28KICAgICAvLyBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcwNTY3CiAgICAgbV93YXNt
VG9KU0V4aXRTdHVicy5yZXNlcnZlQ2FwYWNpdHkobV9jb2RlQmxvY2stPmZ1bmN0aW9uSW1wb3J0
Q291bnQoKSk7CiAgICAgZm9yICh1bnNpZ25lZCBpbXBvcnRJbmRleCA9IDA7IGltcG9ydEluZGV4
IDwgbV9jb2RlQmxvY2stPmZ1bmN0aW9uSW1wb3J0Q291bnQoKTsgKytpbXBvcnRJbmRleCkgewot
ICAgICAgICBXYXNtOjpTaWduYXR1cmVJbmRleCBzaWduYXR1cmVJbmRleCA9IG1vZHVsZUluZm9y
bWF0aW9uLmltcG9ydEZ1bmN0aW9uU2lnbmF0dXJlSW5kaWNlcy5hdChpbXBvcnRJbmRleCk7Cisg
ICAgICAgIFdhc206OlNpZ25hdHVyZUluZGV4IHNpZ25hdHVyZUluZGV4ID0gbW9kdWxlSW5mb3Jt
YXRpb24uaW1wb3J0RnVuY3Rpb25TaWduYXR1cmVJbmRpY2VzLmF0KGltcG9ydEluZGV4KS5zaWdu
YXR1cmVJbmRleDsKICAgICAgICAgYXV0byBiaW5kaW5nID0gV2FzbTo6d2FzbVRvSlModm0sIG1f
Y2FsbExpbmtJbmZvcywgc2lnbmF0dXJlSW5kZXgsIGltcG9ydEluZGV4KTsKICAgICAgICAgaWYg
KFVOTElLRUxZKCFiaW5kaW5nKSkgewogICAgICAgICAgICAgc3dpdGNoIChiaW5kaW5nLmVycm9y
KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2Vt
Ymx5TW9kdWxlUmVjb3JkLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFz
c2VtYmx5TW9kdWxlUmVjb3JkLmNwcAppbmRleCAwNjRhYzY5OTEzYzhkNmExYjE4OGFkZGJjZTQ0
Y2Q4Y2NkNDhmNmU5Li5jMGUyNjBkMWRmYzRjZmEwMGJmZjc0ZGE4Mzk5NmY5ZTI3Y2FmYjQ1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVs
ZVJlY29yZC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1i
bHlNb2R1bGVSZWNvcmQuY3BwCkBAIC0yMzAsNyArMjMwLDcgQEAgdm9pZCBXZWJBc3NlbWJseU1v
ZHVsZVJlY29yZDo6aW5pdGlhbGl6ZUltcG9ydHNBbmRFeHBvcnRzKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWwKICAgICAgICAgICAgICAgICAgICAgLy8gYi4gTGV0IGNsb3N1cmUgYmUgdi5bW0Nsb3N1
cmVdXS4KICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gPSB3YXNtV3JhcHBlckZ1bmN0aW9u
LT5mdW5jdGlvbigpOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBXYXNtOjpT
aWduYXR1cmVJbmRleCBleHBlY3RlZFNpZ25hdHVyZUluZGV4ID0gbW9kdWxlSW5mb3JtYXRpb24u
aW1wb3J0RnVuY3Rpb25TaWduYXR1cmVJbmRpY2VzW2ltcG9ydC5raW5kSW5kZXhdOworICAgICAg
ICAgICAgICAgIFdhc206OlNpZ25hdHVyZUluZGV4IGV4cGVjdGVkU2lnbmF0dXJlSW5kZXggPSBt
b2R1bGVJbmZvcm1hdGlvbi5pbXBvcnRGdW5jdGlvblNpZ25hdHVyZUluZGljZXNbaW1wb3J0Lmtp
bmRJbmRleF0uc2lnbmF0dXJlSW5kZXg7CiAgICAgICAgICAgICAgICAgaWYgKGltcG9ydGVkU2ln
bmF0dXJlSW5kZXggIT0gZXhwZWN0ZWRTaWduYXR1cmVJbmRleCkKICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGV4Y2VwdGlvbihjcmVhdGVKU1dlYkFzc2VtYmx5TGlua0Vycm9yKGdsb2JhbE9i
amVjdCwgdm0sIGltcG9ydEZhaWxNZXNzYWdlKGltcG9ydCwgImltcG9ydGVkIGZ1bmN0aW9uIiwg
InNpZ25hdHVyZSBkb2Vzbid0IG1hdGNoIHRoZSBwcm92aWRlZCBXZWJBc3NlbWJseSBmdW5jdGlv
bidzIHNpZ25hdHVyZSIpKSk7CiAgICAgICAgICAgICB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445066</attachid>
            <date>2021-11-23 22:33:55 -0800</date>
            <delta_ts>2022-02-13 23:26:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233444-20211124133353.patch</filename>
            <type>text/plain</type>
            <size>29381</size>
            <attacher name="Dmitry">dbezhetskov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MTI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
ZjJhM2Q1MWYxMGQ1YzZlYmM0MWNkN2RmNzUwOTQzZDNlNzMzNjAzLi4xMTdkYzk4NDk5NGMwMjA4
Zjk5NDIyZTU4YWI4M2E4YzFjNjFkZDQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1MiBAQAorMjAyMS0xMS0yMyAgRG1pdHJ5IEJlemhldHNrb3YgIDxkYmV6aGV0c2tvdkBp
Z2FsaWEuY29tPgorCisgICAgICAgIFtXQVNNLUZ1bmN0aW9uLVJlZmVyZW5jZXNdIFNpbXBsaWZ5
IHJlcHJlc2VudGF0aW9uIG9mIFdhc20gVHlwZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNDQ0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisgICAgICAgIAorICAgICAgICBSZXBsYWNlIFNpZ25hdHVyZSBpbmRleCB3aXRo
IGluZGV4IGludG8gV2FzbSBUeXBlIHNlY3Rpb24uCisgICAgICAgIEFkZCBjb3JyZXNwb25kaW5n
IG1hcHBpbmcgdG8gYmUgYWJsZSB0byBnZXQgaXRyb2R1Y2VkIHR5cGUgaW5kZXgKKyAgICAgICAg
dmlhIGdpdmVuIGZ1bmN0aW9uIGluZGV4LgorCisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVE
dW1wZXIuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpCeXRlY29kZUR1bXBlcjo6ZHVtcEJsb2Nr
KToKKyAgICAgICAgKiB3YXNtL1dhc21BaXJJUkdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6
Oldhc206OkFpcklSR2VuZXJhdG9yOjphZGRSZWZGdW5jKToKKyAgICAgICAgKiB3YXNtL1dhc21C
QlFQbGFuLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6QkJRUGxhbjo6d29yayk6CisgICAgICAg
IChKU0M6Oldhc206OkJCUVBsYW46OmNvbXBpbGVGdW5jdGlvbik6CisgICAgICAgIChKU0M6Oldh
c206OkJCUVBsYW46OmRpZENvbXBsZXRlQ29tcGlsYXRpb24pOgorICAgICAgICAqIHdhc20vV2Fz
bUZvcm1hdC5oOgorICAgICAgICAoSlNDOjpXYXNtOjppc0V4dGVybnJlZik6CisgICAgICAgIChK
U0M6Oldhc206OmlzRnVuY3JlZik6CisgICAgICAgIChKU0M6Oldhc206OmZ1bmNyZWZUeXBlKToK
KyAgICAgICAgKEpTQzo6V2FzbTo6ZXh0ZXJucmVmVHlwZSk6CisgICAgICAgIChKU0M6Oldhc206
OmlzVHlwZUluZGV4SGVhcFR5cGUpOiBEZWxldGVkLgorICAgICAgICAqIHdhc20vV2FzbUZ1bmN0
aW9uUGFyc2VyLmg6CisgICAgICAgIChKU0M6Oldhc206OkZ1bmN0aW9uUGFyc2VyPENvbnRleHQ+
OjpwYXJzZUV4cHJlc3Npb24pOgorICAgICAgICAqIHdhc20vV2FzbUxMSW50UGxhbi5jcHA6Cisg
ICAgICAgIChKU0M6Oldhc206OkxMSW50UGxhbjo6Y29tcGlsZUZ1bmN0aW9uKToKKyAgICAgICAg
KEpTQzo6V2FzbTo6TExJbnRQbGFuOjpkaWRDb21wbGV0ZUNvbXBpbGF0aW9uKToKKyAgICAgICAg
KiB3YXNtL1dhc21Nb2R1bGVJbmZvcm1hdGlvbi5oOgorICAgICAgICAoSlNDOjpXYXNtOjpNb2R1
bGVJbmZvcm1hdGlvbjo6c2lnbmF0dXJlSW5kZXhGcm9tRnVuY3Rpb25JbmRleFNwYWNlIGNvbnN0
KToKKyAgICAgICAgKEpTQzo6V2FzbTo6TW9kdWxlSW5mb3JtYXRpb246OmdldFR5cGVJbmRleEZv
ckZ1bmN0aW9uIGNvbnN0KToKKyAgICAgICAgKiB3YXNtL1dhc21PTUdGb3JPU1JFbnRyeVBsYW4u
Y3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpPTUdGb3JPU1JFbnRyeVBsYW46OndvcmspOgorICAg
ICAgICAqIHdhc20vV2FzbU9NR1BsYW4uY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpPTUdQbGFu
Ojp3b3JrKToKKyAgICAgICAgKiB3YXNtL1dhc21QYXJzZXIuaDoKKyAgICAgICAgKEpTQzo6V2Fz
bTo6UGFyc2VyPFN1Y2Nlc3NUeXBlPjo6cGFyc2VWYWx1ZVR5cGUpOgorICAgICAgICAqIHdhc20v
V2FzbVNlY3Rpb25QYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpTZWN0aW9uUGFyc2Vy
OjpwYXJzZUltcG9ydCk6CisgICAgICAgIChKU0M6Oldhc206OlNlY3Rpb25QYXJzZXI6OnBhcnNl
RnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpXYXNtOjpTZWN0aW9uUGFyc2VyOjpwYXJzZUluaXRF
eHByKToKKyAgICAgICAgKiB3YXNtL2dlbmVyYXRlV2FzbU9wc0hlYWRlci5weToKKyAgICAgICAg
KiB3YXNtL2pzL0pTV2ViQXNzZW1ibHlDb2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpKU1dl
YkFzc2VtYmx5Q29kZUJsb2NrOjpKU1dlYkFzc2VtYmx5Q29kZUJsb2NrKToKKyAgICAgICAgKiB3
YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmNwcDoKKyAgICAgICAgKEpTQzo6V2ViQXNz
ZW1ibHlNb2R1bGVSZWNvcmQ6OmluaXRpYWxpemVJbXBvcnRzQW5kRXhwb3J0cyk6CisKIDIwMjEt
MTEtMjIgIEdlemEgTG9yZSAgPGdsb3JlQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0pTQ10gTWFr
ZSBzaGFyaW5nIG9mIHVubGlua2VkIGJhc2VsaW5lIGNvZGUgcG9zc2libGUgb24gSlNWQUxVRTMy
XzY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVE
dW1wZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVtcGVy
LmNwcAppbmRleCAzOThmNTViM2U3NTY1ZGIzNjI0NmY3ZTFlMjEzMTkzOWUwMTFhOTc2Li44NjE0
ZTk1M2E5OGQyMDhiMDZiMDBmOTk0ZjZhZDNkMWRiZjAyOWExIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVEdW1wZXIuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUR1bXBlci5jcHAKQEAgLTM0Myw3ICszNDMs
NyBAQCB2b2lkIEJ5dGVjb2RlRHVtcGVyOjpkdW1wQmxvY2soRnVuY3Rpb25Db2RlQmxvY2sqIGJs
b2NrLCBjb25zdCBNb2R1bGVJbmZvcm1hdGlvbgogICAgIG91dC5wcmludChtYWtlU3RyaW5nKElu
ZGV4T3JOYW1lKGZ1bmN0aW9uSW5kZXhTcGFjZSwgbW9kdWxlSW5mb3JtYXRpb24ubmFtZVNlY3Rp
b24tPmdldChmdW5jdGlvbkluZGV4U3BhY2UpKSkpOwogCiAgICAgY29uc3QgYXV0byYgZnVuY3Rp
b24gPSBtb2R1bGVJbmZvcm1hdGlvbi5mdW5jdGlvbnNbYmxvY2stPmZ1bmN0aW9uSW5kZXgoKV07
Ci0gICAgU2lnbmF0dXJlSW5kZXggc2lnbmF0dXJlSW5kZXggPSBtb2R1bGVJbmZvcm1hdGlvbi5p
bnRlcm5hbEZ1bmN0aW9uU2lnbmF0dXJlSW5kaWNlc1tibG9jay0+ZnVuY3Rpb25JbmRleCgpXTsK
KyAgICBTaWduYXR1cmVJbmRleCBzaWduYXR1cmVJbmRleCA9IG1vZHVsZUluZm9ybWF0aW9uLmlu
dGVybmFsRnVuY3Rpb25TaWduYXR1cmVJbmRpY2VzW2Jsb2NrLT5mdW5jdGlvbkluZGV4KCldLnNp
Z25hdHVyZUluZGV4OwogICAgIGNvbnN0IFNpZ25hdHVyZSYgc2lnbmF0dXJlID0gU2lnbmF0dXJl
SW5mb3JtYXRpb246OmdldChzaWduYXR1cmVJbmRleCk7CiAgICAgb3V0LnByaW50KCIgOiAiLCBz
aWduYXR1cmUsICJcbiIpOwogICAgIG91dC5wcmludCgid2FzbSBzaXplOiAiLCBmdW5jdGlvbi5k
YXRhLnNpemUoKSwgIiBieXRlc1xuIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtQWlySVJHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbUFpcklSR2VuZXJhdG9yLmNwcAppbmRleCBlNDI4YjBkNWYzMmJlZjA4NDk5MzQxMDVk
OTFlZmMwMWMxMjI3YTk3Li5mNDRkMjlhMzRlZmFjMDQyNTZmYjRjMWM0NzkyZjM3NDZjZmEzNjhj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQWlySVJHZW5lcmF0
b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21BaXJJUkdlbmVyYXRv
ci5jcHAKQEAgLTExMjQsOCArMTEyNCw3IEBAIGF1dG8gQWlySVJHZW5lcmF0b3I6OmFkZFJlZkZ1
bmModWludDMyX3QgaW5kZXgsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpIC0+IFBhcnRpCiB7CiAg
ICAgLy8gRklYTUU6IEVtaXQgdGhpcyBpbmxpbmUgPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xOTg1MDY+LgogICAgIGlmIChPcHRpb25zOjp1c2VXZWJBc3NlbWJseVR5
cGVkRnVuY3Rpb25SZWZlcmVuY2VzKCkpIHsKLSAgICAgICAgU2lnbmF0dXJlSW5kZXggc2lnbmF0
dXJlSW5kZXggPSBtX2luZm8uc2lnbmF0dXJlSW5kZXhGcm9tRnVuY3Rpb25JbmRleFNwYWNlKGlu
ZGV4KTsKLSAgICAgICAgcmVzdWx0ID0gdG1wRm9yVHlwZShUeXBlIHsgVHlwZUtpbmQ6OlJlZiwg
TnVsbGFibGU6Ok5vLCBzaWduYXR1cmVJbmRleCB9KTsKKyAgICAgICAgcmVzdWx0ID0gdG1wRm9y
VHlwZShUeXBlIHsgVHlwZUtpbmQ6OlJlZiwgTnVsbGFibGU6Ok5vLCBtX2luZm8uZ2V0VHlwZUlu
ZGV4Rm9yRnVuY3Rpb24oaW5kZXgpIH0pOwogICAgIH0gZWxzZQogICAgICAgICByZXN1bHQgPSB0
bXBGb3JUeXBlKFR5cGVzOjpGdW5jcmVmKTsKICAgICBlbWl0Q0NhbGwoJm9wZXJhdGlvbldhc21S
ZWZGdW5jLCByZXN1bHQsIGluc3RhbmNlVmFsdWUoKSwgYWRkQ29uc3RhbnQoVHlwZXM6OkkzMiwg
aW5kZXgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CQlFQ
bGFuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CQlFQbGFuLmNwcAppbmRl
eCAyNDMwMjllNjJiMzNjMWQzOTcwOTdhYjQ5ZGE4YzkzODM5YWFkYmMxLi5jMjdlYzg2ZTFiNmJl
ZTI4NmFkZDFhMWFkZTgyZjkzODlmNzU1ZThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtQkJRUGxhbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbUJCUVBsYW4uY3BwCkBAIC0xMTQsNyArMTE0LDcgQEAgdm9pZCBCQlFQbGFuOjp3b3Jr
KENvbXBpbGF0aW9uRWZmb3J0IGVmZm9ydCkKICAgICBjb21wdXRlRXhjZXB0aW9uSGFuZGxlckxv
Y2F0aW9ucyhleGNlcHRpb25IYW5kbGVyTG9jYXRpb25zLCBmdW5jdGlvbi5nZXQoKSwgY29udGV4
dCwgbGlua0J1ZmZlcik7CiAKICAgICBzaXplX3QgZnVuY3Rpb25JbmRleFNwYWNlID0gbV9mdW5j
dGlvbkluZGV4ICsgbV9tb2R1bGVJbmZvcm1hdGlvbi0+aW1wb3J0RnVuY3Rpb25Db3VudCgpOwot
ICAgIFNpZ25hdHVyZUluZGV4IHNpZ25hdHVyZUluZGV4ID0gbV9tb2R1bGVJbmZvcm1hdGlvbi0+
aW50ZXJuYWxGdW5jdGlvblNpZ25hdHVyZUluZGljZXNbbV9mdW5jdGlvbkluZGV4XTsKKyAgICBT
aWduYXR1cmVJbmRleCBzaWduYXR1cmVJbmRleCA9IG1fbW9kdWxlSW5mb3JtYXRpb24tPmludGVy
bmFsRnVuY3Rpb25TaWduYXR1cmVJbmRpY2VzW21fZnVuY3Rpb25JbmRleF0uc2lnbmF0dXJlSW5k
ZXg7CiAgICAgY29uc3QgU2lnbmF0dXJlJiBzaWduYXR1cmUgPSBTaWduYXR1cmVJbmZvcm1hdGlv
bjo6Z2V0KHNpZ25hdHVyZUluZGV4KTsKICAgICBmdW5jdGlvbi0+ZW50cnlwb2ludC5jb21waWxh
dGlvbiA9IG1ha2VVbmlxdWU8Q29tcGlsYXRpb24+KAogICAgICAgICBGSU5BTElaRV9XQVNNX0NP
REVfRk9SX01PREUoQ29tcGlsYXRpb25Nb2RlOjpCQlFNb2RlLCBsaW5rQnVmZmVyLCBKSVRDb21w
aWxhdGlvblB0clRhZywgIldlYkFzc2VtYmx5IEJCUSBmdW5jdGlvblslaV0gJXMgbmFtZSAlcyIs
IG1fZnVuY3Rpb25JbmRleCwgc2lnbmF0dXJlLnRvU3RyaW5nKCkuYXNjaWkoKS5kYXRhKCksIG1h
a2VTdHJpbmcoSW5kZXhPck5hbWUoZnVuY3Rpb25JbmRleFNwYWNlLCBtX21vZHVsZUluZm9ybWF0
aW9uLT5uYW1lU2VjdGlvbi0+Z2V0KGZ1bmN0aW9uSW5kZXhTcGFjZSkpKS5hc2NpaSgpLmRhdGEo
KSksCkBAIC0xNzUsNyArMTc1LDcgQEAgdm9pZCBCQlFQbGFuOjpjb21waWxlRnVuY3Rpb24odWlu
dDMyX3QgZnVuY3Rpb25JbmRleCkKIAogICAgIGlmIChtX2V4cG9ydGVkRnVuY3Rpb25JbmRpY2Vz
LmNvbnRhaW5zKGZ1bmN0aW9uSW5kZXgpIHx8IG1fbW9kdWxlSW5mb3JtYXRpb24tPnJlZmVyZW5j
ZWRGdW5jdGlvbnMoKS5jb250YWlucyhmdW5jdGlvbkluZGV4KSkgewogICAgICAgICBMb2NrZXIg
bG9ja2VyIHsgbV9sb2NrIH07Ci0gICAgICAgIFNpZ25hdHVyZUluZGV4IHNpZ25hdHVyZUluZGV4
ID0gbV9tb2R1bGVJbmZvcm1hdGlvbi0+aW50ZXJuYWxGdW5jdGlvblNpZ25hdHVyZUluZGljZXNb
ZnVuY3Rpb25JbmRleF07CisgICAgICAgIFNpZ25hdHVyZUluZGV4IHNpZ25hdHVyZUluZGV4ID0g
bV9tb2R1bGVJbmZvcm1hdGlvbi0+aW50ZXJuYWxGdW5jdGlvblNpZ25hdHVyZUluZGljZXNbZnVu
Y3Rpb25JbmRleF0uc2lnbmF0dXJlSW5kZXg7CiAgICAgICAgIGNvbnN0IFNpZ25hdHVyZSYgc2ln
bmF0dXJlID0gU2lnbmF0dXJlSW5mb3JtYXRpb246OmdldChzaWduYXR1cmVJbmRleCk7CiAgICAg
ICAgIGF1dG8gcmVzdWx0ID0gbV9lbWJlZGRlclRvV2FzbUludGVybmFsRnVuY3Rpb25zLmFkZChm
dW5jdGlvbkluZGV4LCBjcmVhdGVKU1RvV2FzbVdyYXBwZXIoKm1fY29tcGlsYXRpb25Db250ZXh0
c1tmdW5jdGlvbkluZGV4XS5lbWJlZGRlckVudHJ5cG9pbnRKSVQsIHNpZ25hdHVyZSwgJm1fdW5s
aW5rZWRXYXNtVG9XYXNtQ2FsbHNbZnVuY3Rpb25JbmRleF0sIG1fbW9kdWxlSW5mb3JtYXRpb24u
Z2V0KCksIG1fbW9kZSwgZnVuY3Rpb25JbmRleCkpOwogICAgICAgICBBU1NFUlRfVU5VU0VEKHJl
c3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOwpAQCAtMTg1LDcgKzE4NSw3IEBAIHZvaWQgQkJRUGxh
bjo6Y29tcGlsZUZ1bmN0aW9uKHVpbnQzMl90IGZ1bmN0aW9uSW5kZXgpCiBzdGQ6OnVuaXF1ZV9w
dHI8SW50ZXJuYWxGdW5jdGlvbj4gQkJRUGxhbjo6Y29tcGlsZUZ1bmN0aW9uKHVpbnQzMl90IGZ1
bmN0aW9uSW5kZXgsIENvbXBpbGF0aW9uQ29udGV4dCYgY29udGV4dCwgVmVjdG9yPFVubGlua2Vk
V2FzbVRvV2FzbUNhbGw+JiB1bmxpbmtlZFdhc21Ub1dhc21DYWxscywgVGllclVwQ291bnQqIHRp
ZXJVcCkKIHsKICAgICBjb25zdCBhdXRvJiBmdW5jdGlvbiA9IG1fbW9kdWxlSW5mb3JtYXRpb24t
PmZ1bmN0aW9uc1tmdW5jdGlvbkluZGV4XTsKLSAgICBTaWduYXR1cmVJbmRleCBzaWduYXR1cmVJ
bmRleCA9IG1fbW9kdWxlSW5mb3JtYXRpb24tPmludGVybmFsRnVuY3Rpb25TaWduYXR1cmVJbmRp
Y2VzW2Z1bmN0aW9uSW5kZXhdOworICAgIFNpZ25hdHVyZUluZGV4IHNpZ25hdHVyZUluZGV4ID0g
bV9tb2R1bGVJbmZvcm1hdGlvbi0+aW50ZXJuYWxGdW5jdGlvblNpZ25hdHVyZUluZGljZXNbZnVu
Y3Rpb25JbmRleF0uc2lnbmF0dXJlSW5kZXg7CiAgICAgY29uc3QgU2lnbmF0dXJlJiBzaWduYXR1
cmUgPSBTaWduYXR1cmVJbmZvcm1hdGlvbjo6Z2V0KHNpZ25hdHVyZUluZGV4KTsKICAgICB1bnNp
Z25lZCBmdW5jdGlvbkluZGV4U3BhY2UgPSBtX21vZHVsZUluZm9ybWF0aW9uLT5pbXBvcnRGdW5j
dGlvbkNvdW50KCkgKyBmdW5jdGlvbkluZGV4OwogICAgIEFTU0VSVF9VTlVTRUQoZnVuY3Rpb25J
bmRleFNwYWNlLCBtX21vZHVsZUluZm9ybWF0aW9uLT5zaWduYXR1cmVJbmRleEZyb21GdW5jdGlv
bkluZGV4U3BhY2UoZnVuY3Rpb25JbmRleFNwYWNlKSA9PSBzaWduYXR1cmVJbmRleCk7CkBAIC0y
MjUsNyArMjI1LDcgQEAgdm9pZCBCQlFQbGFuOjpkaWRDb21wbGV0ZUNvbXBpbGF0aW9uKCkKIHsK
ICAgICBmb3IgKHVpbnQzMl90IGZ1bmN0aW9uSW5kZXggPSAwOyBmdW5jdGlvbkluZGV4IDwgbV9t
b2R1bGVJbmZvcm1hdGlvbi0+ZnVuY3Rpb25zLnNpemUoKTsgZnVuY3Rpb25JbmRleCsrKSB7CiAg
ICAgICAgIENvbXBpbGF0aW9uQ29udGV4dCYgY29udGV4dCA9IG1fY29tcGlsYXRpb25Db250ZXh0
c1tmdW5jdGlvbkluZGV4XTsKLSAgICAgICAgU2lnbmF0dXJlSW5kZXggc2lnbmF0dXJlSW5kZXgg
PSBtX21vZHVsZUluZm9ybWF0aW9uLT5pbnRlcm5hbEZ1bmN0aW9uU2lnbmF0dXJlSW5kaWNlc1tm
dW5jdGlvbkluZGV4XTsKKyAgICAgICAgU2lnbmF0dXJlSW5kZXggc2lnbmF0dXJlSW5kZXggPSBt
X21vZHVsZUluZm9ybWF0aW9uLT5pbnRlcm5hbEZ1bmN0aW9uU2lnbmF0dXJlSW5kaWNlc1tmdW5j
dGlvbkluZGV4XS5zaWduYXR1cmVJbmRleDsKICAgICAgICAgY29uc3QgU2lnbmF0dXJlJiBzaWdu
YXR1cmUgPSBTaWduYXR1cmVJbmZvcm1hdGlvbjo6Z2V0KHNpZ25hdHVyZUluZGV4KTsKICAgICAg
ICAgY29uc3QgdWludDMyX3QgZnVuY3Rpb25JbmRleFNwYWNlID0gZnVuY3Rpb25JbmRleCArIG1f
bW9kdWxlSW5mb3JtYXRpb24tPmltcG9ydEZ1bmN0aW9uQ291bnQoKTsKICAgICAgICAgQVNTRVJU
KGZ1bmN0aW9uSW5kZXhTcGFjZSA8IG1fbW9kdWxlSW5mb3JtYXRpb24tPmZ1bmN0aW9uSW5kZXhT
cGFjZVNpemUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNt
Rm9ybWF0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRm9ybWF0LmgKaW5kZXgg
ODI0ZmE4YjczNDdjNWY0ODZjN2UwOWMxZDVhOWQxZTA3NGViMmMzNy4uOWY2NjlhNjUxYmZlYmQ5
ODc0NWNiYmYzZjkxNWNhNmNkOTdhNWIyYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbUZvcm1hdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21Gb3JtYXQuaApAQCAtMTA1LDI4ICsxMDUsMjggQEAgaW5saW5lIGJvb2wgaXNSZWZUeXBlKFR5
cGUgdHlwZSkKIGlubGluZSBib29sIGlzRXh0ZXJucmVmKFR5cGUgdHlwZSkKIHsKICAgICBpZiAo
T3B0aW9uczo6dXNlV2ViQXNzZW1ibHlUeXBlZEZ1bmN0aW9uUmVmZXJlbmNlcygpKQotICAgICAg
ICByZXR1cm4gaXNSZWZUeXBlKHR5cGUpICYmIHR5cGUuaW5kZXggPT0gc3RhdGljX2Nhc3Q8U2ln
bmF0dXJlSW5kZXg+KFR5cGVLaW5kOjpFeHRlcm5yZWYpOworICAgICAgICByZXR1cm4gaXNSZWZU
eXBlKHR5cGUpICYmIHR5cGUuaW5kZXggPT0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KFR5cGVLaW5k
OjpFeHRlcm5yZWYpOwogICAgIHJldHVybiB0eXBlLmtpbmQgPT0gVHlwZUtpbmQ6OkV4dGVybnJl
ZjsKIH0KIAogaW5saW5lIGJvb2wgaXNGdW5jcmVmKFR5cGUgdHlwZSkKIHsKICAgICBpZiAoT3B0
aW9uczo6dXNlV2ViQXNzZW1ibHlUeXBlZEZ1bmN0aW9uUmVmZXJlbmNlcygpKQotICAgICAgICBy
ZXR1cm4gaXNSZWZUeXBlKHR5cGUpICYmIHR5cGUuaW5kZXggPT0gc3RhdGljX2Nhc3Q8U2lnbmF0
dXJlSW5kZXg+KFR5cGVLaW5kOjpGdW5jcmVmKTsKKyAgICAgICAgcmV0dXJuIGlzUmVmVHlwZSh0
eXBlKSAmJiB0eXBlLmluZGV4ID09IHN0YXRpY19jYXN0PHVpbnQzMl90PihUeXBlS2luZDo6RnVu
Y3JlZik7CiAgICAgcmV0dXJuIHR5cGUua2luZCA9PSBUeXBlS2luZDo6RnVuY3JlZjsKIH0KIAog
aW5saW5lIFR5cGUgZnVuY3JlZlR5cGUoKQogewogICAgIGlmIChPcHRpb25zOjp1c2VXZWJBc3Nl
bWJseVR5cGVkRnVuY3Rpb25SZWZlcmVuY2VzKCkpCi0gICAgICAgIHJldHVybiBXYXNtOjpUeXBl
IHsgV2FzbTo6VHlwZUtpbmQ6OlJlZk51bGwsIFdhc206Ok51bGxhYmxlOjpZZXMsIHN0YXRpY19j
YXN0PFdhc206OlNpZ25hdHVyZUluZGV4PihXYXNtOjpUeXBlS2luZDo6RnVuY3JlZikgfTsKKyAg
ICAgICAgcmV0dXJuIFdhc206OlR5cGUgeyBXYXNtOjpUeXBlS2luZDo6UmVmTnVsbCwgV2FzbTo6
TnVsbGFibGU6Olllcywgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KFdhc206OlR5cGVLaW5kOjpGdW5j
cmVmKSB9OwogICAgIHJldHVybiBUeXBlczo6RnVuY3JlZjsKIH0KIAogaW5saW5lIFR5cGUgZXh0
ZXJucmVmVHlwZSgpCiB7CiAgICAgaWYgKE9wdGlvbnM6OnVzZVdlYkFzc2VtYmx5VHlwZWRGdW5j
dGlvblJlZmVyZW5jZXMoKSkKLSAgICAgICAgcmV0dXJuIFdhc206OlR5cGUgeyBXYXNtOjpUeXBl
S2luZDo6UmVmTnVsbCwgV2FzbTo6TnVsbGFibGU6Olllcywgc3RhdGljX2Nhc3Q8V2FzbTo6U2ln
bmF0dXJlSW5kZXg+KFdhc206OlR5cGVLaW5kOjpFeHRlcm5yZWYpIH07CisgICAgICAgIHJldHVy
biBXYXNtOjpUeXBlIHsgV2FzbTo6VHlwZUtpbmQ6OlJlZk51bGwsIFdhc206Ok51bGxhYmxlOjpZ
ZXMsIHN0YXRpY19jYXN0PHVpbnQzMl90PihXYXNtOjpUeXBlS2luZDo6RXh0ZXJucmVmKSB9Owog
ICAgIHJldHVybiBUeXBlczo6RXh0ZXJucmVmOwogfQogCkBAIC0xMzgsMTQgKzEzOCw2IEBAIGlu
bGluZSBib29sIGlzUmVmV2l0aFR5cGVJbmRleChUeXBlIHR5cGUpCiAgICAgcmV0dXJuIGlzUmVm
VHlwZSh0eXBlKSAmJiAhaXNFeHRlcm5yZWYodHlwZSkgJiYgIWlzRnVuY3JlZih0eXBlKTsKIH0K
IAotaW5saW5lIGJvb2wgaXNUeXBlSW5kZXhIZWFwVHlwZShpbnQzMl90IGhlYXBUeXBlKQotewot
ICAgIGlmICghT3B0aW9uczo6dXNlV2ViQXNzZW1ibHlUeXBlZEZ1bmN0aW9uUmVmZXJlbmNlcygp
KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gaGVhcFR5cGUgPj0gMDsKLX0K
LQogaW5saW5lIGJvb2wgaXNTdWJ0eXBlKFR5cGUgc3ViLCBUeXBlIHBhcmVudCkKIHsKICAgICBp
ZiAoc3ViLmlzTnVsbGFibGUoKSAmJiAhcGFyZW50LmlzTnVsbGFibGUoKSkKQEAgLTI2Myw2ICsy
NTUsMTEgQEAgc3RydWN0IEdsb2JhbEluZm9ybWF0aW9uIHsKICAgICB1aW50NjRfdCBpbml0aWFs
Qml0c09ySW1wb3J0TnVtYmVyIHsgMCB9OwogfTsKIAorc3RydWN0IEZ1bmN0aW9uRGVzY3JpcHRp
b24geworICAgIFNpZ25hdHVyZUluZGV4IHNpZ25hdHVyZUluZGV4OworICAgIHVpbnQzMl90IHR5
cGVJbmRleDsKK307CisKIHN0cnVjdCBGdW5jdGlvbkRhdGEgewogICAgIFdURl9NQUtFX1NUUlVD
VF9GQVNUX0FMTE9DQVRFRDsKICAgICBzaXplX3Qgc3RhcnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRnVuY3Rpb25QYXJzZXIuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dhc21GdW5jdGlvblBhcnNlci5oCmluZGV4IGQ5N2U3ZTc1OWE0ZjI0NzVh
Mzc3NzczODcxNzgzMWJjNDllMDkzZDIuLjViNzFkMDhlZjZiODUyMjgyNjMxOTRmMjRmMTBjZjNm
ZTQ4YjJmZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21GdW5j
dGlvblBhcnNlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21GdW5jdGlv
blBhcnNlci5oCkBAIC0xMDgxLDExICsxMDgxLDcgQEAgRk9SX0VBQ0hfV0FTTV9NRU1PUllfU1RP
UkVfT1AoQ1JFQVRFX0NBU0UpCiAgICAgICAgIGlmIChPcHRpb25zOjp1c2VXZWJBc3NlbWJseVR5
cGVkRnVuY3Rpb25SZWZlcmVuY2VzKCkpIHsKICAgICAgICAgICAgIGludDMyX3QgaGVhcFR5cGU7
CiAgICAgICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJzZUhlYXBUeXBlKG1faW5mbywg
aGVhcFR5cGUpLCAicmVmLm51bGwgaGVhcHR5cGUgbXVzdCBiZSBmdW5jcmVmLCBleHRlcm5yZWYg
b3IgdHlwZV9pZHgiKTsKLSAgICAgICAgICAgIGlmIChpc1R5cGVJbmRleEhlYXBUeXBlKGhlYXBU
eXBlKSkgewotICAgICAgICAgICAgICAgIFNpZ25hdHVyZUluZGV4IHNpZ25hdHVyZUluZGV4ID0g
U2lnbmF0dXJlSW5mb3JtYXRpb246OmdldChtX2luZm8udXNlZFNpZ25hdHVyZXNbaGVhcFR5cGVd
LmdldCgpKTsKLSAgICAgICAgICAgICAgICB0eXBlT2ZOdWxsID0gVHlwZSB7IFR5cGVLaW5kOjpS
ZWZOdWxsLCBOdWxsYWJsZTo6WWVzLCBzaWduYXR1cmVJbmRleCB9OwotICAgICAgICAgICAgfSBl
bHNlCi0gICAgICAgICAgICAgICAgdHlwZU9mTnVsbCA9IFR5cGUgeyBUeXBlS2luZDo6UmVmTnVs
bCwgTnVsbGFibGU6Olllcywgc3RhdGljX2Nhc3Q8U2lnbmF0dXJlSW5kZXg+KGhlYXBUeXBlKSB9
OworICAgICAgICAgICAgdHlwZU9mTnVsbCA9IFR5cGUgeyBUeXBlS2luZDo6UmVmTnVsbCwgTnVs
bGFibGU6Olllcywgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGhlYXBUeXBlKSB9OwogICAgICAgICB9
IGVsc2UKICAgICAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIXBhcnNlUmVmVHlwZShtX2lu
Zm8sIHR5cGVPZk51bGwpLCAicmVmLm51bGwgdHlwZSBtdXN0IGJlIGEgcmVmZXJlbmNlIHR5cGUi
KTsKICAgICAgICAgbV9leHByZXNzaW9uU3RhY2suY29uc3RydWN0QW5kQXBwZW5kKHR5cGVPZk51
bGwsIG1fY29udGV4dC5hZGRDb25zdGFudCh0eXBlT2ZOdWxsLCBKU1ZhbHVlOjplbmNvZGUoanNO
dWxsKCkpKSk7CkBAIC0xMTEzLDggKzExMDksNyBAQCBGT1JfRUFDSF9XQVNNX01FTU9SWV9TVE9S
RV9PUChDUkVBVEVfQ0FTRSkKICAgICAgICAgV0FTTV9UUllfQUREX1RPX0NPTlRFWFQoYWRkUmVm
RnVuYyhpbmRleCwgcmVzdWx0KSk7CiAKICAgICAgICAgaWYgKE9wdGlvbnM6OnVzZVdlYkFzc2Vt
Ymx5VHlwZWRGdW5jdGlvblJlZmVyZW5jZXMoKSkgewotICAgICAgICAgICAgU2lnbmF0dXJlSW5k
ZXggc2lnbmF0dXJlSW5kZXggPSBtX2luZm8uc2lnbmF0dXJlSW5kZXhGcm9tRnVuY3Rpb25JbmRl
eFNwYWNlKGluZGV4KTsKLSAgICAgICAgICAgIG1fZXhwcmVzc2lvblN0YWNrLmNvbnN0cnVjdEFu
ZEFwcGVuZChUeXBlIHsgVHlwZUtpbmQ6OlJlZiwgTnVsbGFibGU6Ok5vLCBzaWduYXR1cmVJbmRl
eCB9LCByZXN1bHQpOworICAgICAgICAgICAgbV9leHByZXNzaW9uU3RhY2suY29uc3RydWN0QW5k
QXBwZW5kKFR5cGUgeyBUeXBlS2luZDo6UmVmLCBOdWxsYWJsZTo6Tm8sIG1faW5mby5nZXRUeXBl
SW5kZXhGb3JGdW5jdGlvbihpbmRleCkgfSwgcmVzdWx0KTsKICAgICAgICAgICAgIHJldHVybiB7
IH07CiAgICAgICAgIH0KIApAQCAtMTI1OCw4ICsxMjUzLDggQEAgRk9SX0VBQ0hfV0FTTV9NRU1P
UllfU1RPUkVfT1AoQ1JFQVRFX0NBU0UpCiAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIU9w
dGlvbnM6OnVzZVdlYkFzc2VtYmx5VHlwZWRGdW5jdGlvblJlZmVyZW5jZXMoKSwgImZ1bmN0aW9u
IHJlZmVyZW5jZXMgYXJlIG5vdCBlbmFibGVkIik7CiAgICAgICAgIFdBU01fVkFMSURBVE9SX0ZB
SUxfSUYoIWlzUmVmV2l0aFR5cGVJbmRleChtX2V4cHJlc3Npb25TdGFjay5sYXN0KCkudHlwZSgp
KSwgIm5vbi1mdW5jcmVmIGNhbGxfcmVmIHZhbHVlICIsIG1fZXhwcmVzc2lvblN0YWNrLmxhc3Qo
KS50eXBlKCkua2luZCk7CiAKLSAgICAgICAgY29uc3QgU2lnbmF0dXJlSW5kZXggY2FsbGVlU2ln
bmF0dXJlSW5kZXggPSBtX2V4cHJlc3Npb25TdGFjay5sYXN0KCkudHlwZSgpLmluZGV4OwotICAg
ICAgICBjb25zdCBTaWduYXR1cmUmIGNhbGxlZVNpZ25hdHVyZSA9IFNpZ25hdHVyZUluZm9ybWF0
aW9uOjpnZXQoY2FsbGVlU2lnbmF0dXJlSW5kZXgpOworICAgICAgICBjb25zdCBhdXRvIGNhbGxl
ZVNpZ25hdHVyZUluZGV4ID0gbV9leHByZXNzaW9uU3RhY2subGFzdCgpLnR5cGUoKS5pbmRleDsK
KyAgICAgICAgY29uc3QgU2lnbmF0dXJlJiBjYWxsZWVTaWduYXR1cmUgPSBtX2luZm8udXNlZFNp
Z25hdHVyZXNbY2FsbGVlU2lnbmF0dXJlSW5kZXhdLmdldCgpOwogICAgICAgICBzaXplX3QgYXJn
dW1lbnRDb3VudCA9IGNhbGxlZVNpZ25hdHVyZS5hcmd1bWVudENvdW50KCkgKyAxOyAvLyBBZGQg
dGhlIGNhbGxlZSdzIHZhbHVlLgogICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKGFyZ3VtZW50
Q291bnQgPiBtX2V4cHJlc3Npb25TdGFjay5zaXplKCksICJjYWxsX3JlZiBleHBlY3RzICIsIGFy
Z3VtZW50Q291bnQsICIgYXJndW1lbnRzLCBidXQgdGhlIGV4cHJlc3Npb24gc3RhY2sgY3VycmVu
dGx5IGhvbGRzICIsIG1fZXhwcmVzc2lvblN0YWNrLnNpemUoKSwgIiB2YWx1ZXMiKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUxMSW50UGxhbi5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTExJbnRQbGFuLmNwcAppbmRleCA3YzBiYmM1
ZjcxZjU5Y2JkNjZiMmU4ZTMyOWUzYzIzNTc3ZGNlODBhLi5iMTY2NThhNzNmY2Q3OTdjMDRiMWVh
M2VjODY4YTg4YTdkOWU1ODEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XYXNtTExJbnRQbGFuLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNt
TExJbnRQbGFuLmNwcApAQCAtNzksNyArNzksNyBAQCBib29sIExMSW50UGxhbjo6cHJlcGFyZUlt
cGwoKQogdm9pZCBMTEludFBsYW46OmNvbXBpbGVGdW5jdGlvbih1aW50MzJfdCBmdW5jdGlvbklu
ZGV4KQogewogICAgIGNvbnN0IGF1dG8mIGZ1bmN0aW9uID0gbV9tb2R1bGVJbmZvcm1hdGlvbi0+
ZnVuY3Rpb25zW2Z1bmN0aW9uSW5kZXhdOwotICAgIFNpZ25hdHVyZUluZGV4IHNpZ25hdHVyZUlu
ZGV4ID0gbV9tb2R1bGVJbmZvcm1hdGlvbi0+aW50ZXJuYWxGdW5jdGlvblNpZ25hdHVyZUluZGlj
ZXNbZnVuY3Rpb25JbmRleF07CisgICAgU2lnbmF0dXJlSW5kZXggc2lnbmF0dXJlSW5kZXggPSBt
X21vZHVsZUluZm9ybWF0aW9uLT5pbnRlcm5hbEZ1bmN0aW9uU2lnbmF0dXJlSW5kaWNlc1tmdW5j
dGlvbkluZGV4XS5zaWduYXR1cmVJbmRleDsKICAgICBjb25zdCBTaWduYXR1cmUmIHNpZ25hdHVy
ZSA9IFNpZ25hdHVyZUluZm9ybWF0aW9uOjpnZXQoc2lnbmF0dXJlSW5kZXgpOwogICAgIHVuc2ln
bmVkIGZ1bmN0aW9uSW5kZXhTcGFjZSA9IG1fd2FzbVRvV2FzbUV4aXRTdHVicy5zaXplKCkgKyBm
dW5jdGlvbkluZGV4OwogICAgIEFTU0VSVF9VTlVTRUQoZnVuY3Rpb25JbmRleFNwYWNlLCBtX21v
ZHVsZUluZm9ybWF0aW9uLT5zaWduYXR1cmVJbmRleEZyb21GdW5jdGlvbkluZGV4U3BhY2UoZnVu
Y3Rpb25JbmRleFNwYWNlKSA9PSBzaWduYXR1cmVJbmRleCk7CkBAIC0xNDgsNyArMTQ4LDcgQEAg
dm9pZCBMTEludFBsYW46OmRpZENvbXBsZXRlQ29tcGlsYXRpb24oKQogCiAgICAgZm9yICh1aW50
MzJfdCBmdW5jdGlvbkluZGV4ID0gMDsgZnVuY3Rpb25JbmRleCA8IG1fbW9kdWxlSW5mb3JtYXRp
b24tPmZ1bmN0aW9ucy5zaXplKCk7IGZ1bmN0aW9uSW5kZXgrKykgewogICAgICAgICBpZiAobV9l
eHBvcnRlZEZ1bmN0aW9uSW5kaWNlcy5jb250YWlucyhmdW5jdGlvbkluZGV4KSB8fCBtX21vZHVs
ZUluZm9ybWF0aW9uLT5yZWZlcmVuY2VkRnVuY3Rpb25zKCkuY29udGFpbnMoZnVuY3Rpb25JbmRl
eCkpIHsKLSAgICAgICAgICAgIFNpZ25hdHVyZUluZGV4IHNpZ25hdHVyZUluZGV4ID0gbV9tb2R1
bGVJbmZvcm1hdGlvbi0+aW50ZXJuYWxGdW5jdGlvblNpZ25hdHVyZUluZGljZXNbZnVuY3Rpb25J
bmRleF07CisgICAgICAgICAgICBTaWduYXR1cmVJbmRleCBzaWduYXR1cmVJbmRleCA9IG1fbW9k
dWxlSW5mb3JtYXRpb24tPmludGVybmFsRnVuY3Rpb25TaWduYXR1cmVJbmRpY2VzW2Z1bmN0aW9u
SW5kZXhdLnNpZ25hdHVyZUluZGV4OwogICAgICAgICAgICAgY29uc3QgU2lnbmF0dXJlJiBzaWdu
YXR1cmUgPSBTaWduYXR1cmVJbmZvcm1hdGlvbjo6Z2V0KHNpZ25hdHVyZUluZGV4KTsKICAgICAg
ICAgICAgIENDYWxsSGVscGVycyBqaXQ7CiAgICAgICAgICAgICAvLyBUaGUgTExJbnQgYWx3YXlz
IGJvdW5kcyBjaGVja3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21Nb2R1bGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Nb2R1bGUuaAppbmRl
eCBkNTBmZGRmYjM3ODM3YTI5MTNhYzdkMDE1NjhmYTY5NGMyMmE3YjMxLi41ZjM1ODZlZDk0NDg1
OWE3YzMzNDMwNGZhOGViZDkxYzU5MDA3MjExIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtTW9kdWxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V2FzbU1vZHVsZS5oCkBAIC0zMCw3ICszMCw2IEBACiAjaW5jbHVkZSAiV2FzbUNvZGVCbG9jay5o
IgogI2luY2x1ZGUgIldhc21FbWJlZGRlci5oIgogI2luY2x1ZGUgIldhc21NZW1vcnkuaCIKLSNp
bmNsdWRlICJXYXNtT3BzLmgiCiAjaW5jbHVkZSA8d3RmL0V4cGVjdGVkLmg+CiAjaW5jbHVkZSA8
d3RmL0xvY2suaD4KICNpbmNsdWRlIDx3dGYvU2hhcmVkVGFzay5oPgpAQCAtNDEsNiArNDAsNyBA
QCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIFdhc20gewogY2xhc3MgTExJbnRQbGFuOwogc3Ry
dWN0IENvbnRleHQ7CiBzdHJ1Y3QgTW9kdWxlSW5mb3JtYXRpb247Cit1c2luZyBTaWduYXR1cmVJ
bmRleCA9IHVpbnRwdHJfdDsKIAogY2xhc3MgTW9kdWxlIDogcHVibGljIFRocmVhZFNhZmVSZWZD
b3VudGVkPE1vZHVsZT4gewogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbU1vZHVsZUluZm9ybWF0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XYXNtTW9kdWxlSW5mb3JtYXRpb24uaAppbmRleCAzMjhjNmJjYTZiZmE2NjJiNTNlOWM4
YzhkYTlhY2IxOGY1MDQ0YWM1Li44N2QyZmIwYmY0ZTNiYjIyNTVjMGU2N2YyZThjMDgxZmNiN2E2
MjJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTW9kdWxlSW5m
b3JtYXRpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTW9kdWxlSW5m
b3JtYXRpb24uaApAQCAtNTQsOCArNTQsOCBAQCBzdHJ1Y3QgTW9kdWxlSW5mb3JtYXRpb24gOiBw
dWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8TW9kdWxlSW5mb3JtYXRpb24+IHsKICAgICBTaWdu
YXR1cmVJbmRleCBzaWduYXR1cmVJbmRleEZyb21GdW5jdGlvbkluZGV4U3BhY2Uoc2l6ZV90IGZ1
bmN0aW9uSW5kZXgpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gaXNJbXBvcnRlZEZ1bmN0
aW9uRnJvbUZ1bmN0aW9uSW5kZXhTcGFjZShmdW5jdGlvbkluZGV4KQotICAgICAgICAgICAgPyBp
bXBvcnRGdW5jdGlvblNpZ25hdHVyZUluZGljZXNbZnVuY3Rpb25JbmRleF0KLSAgICAgICAgICAg
IDogaW50ZXJuYWxGdW5jdGlvblNpZ25hdHVyZUluZGljZXNbZnVuY3Rpb25JbmRleCAtIGltcG9y
dEZ1bmN0aW9uU2lnbmF0dXJlSW5kaWNlcy5zaXplKCldOworICAgICAgICAgICAgPyBpbXBvcnRG
dW5jdGlvblNpZ25hdHVyZUluZGljZXNbZnVuY3Rpb25JbmRleF0uc2lnbmF0dXJlSW5kZXgKKyAg
ICAgICAgICAgIDogaW50ZXJuYWxGdW5jdGlvblNpZ25hdHVyZUluZGljZXNbZnVuY3Rpb25JbmRl
eCAtIGltcG9ydEZ1bmN0aW9uU2lnbmF0dXJlSW5kaWNlcy5zaXplKCldLnNpZ25hdHVyZUluZGV4
OwogICAgIH0KIAogICAgIHNpemVfdCBleGNlcHRpb25JbmRleFNwYWNlU2l6ZSgpIGNvbnN0IHsg
cmV0dXJuIGltcG9ydEV4Y2VwdGlvblNpZ25hdHVyZUluZGljZXMuc2l6ZSgpICsgaW50ZXJuYWxF
eGNlcHRpb25TaWduYXR1cmVJbmRpY2VzLnNpemUoKTsgfQpAQCAtOTMsOSArOTMsMTYgQEAgc3Ry
dWN0IE1vZHVsZUluZm9ybWF0aW9uIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPE1vZHVs
ZUluZm9ybWF0aW9uPiB7CiAgICAgYm9vbCBpc0RlY2xhcmVkRXhjZXB0aW9uKHVpbnQzMl90IGlu
ZGV4KSBjb25zdCB7IHJldHVybiBtX2RlY2xhcmVkRXhjZXB0aW9ucy5jb250YWlucyhpbmRleCk7
IH0KICAgICB2b2lkIGFkZERlY2xhcmVkRXhjZXB0aW9uKHVpbnQzMl90IGluZGV4KSB7IG1fZGVj
bGFyZWRFeGNlcHRpb25zLnNldChpbmRleCk7IH0KIAorICAgIHVpbnQzMl90IGdldFR5cGVJbmRl
eEZvckZ1bmN0aW9uKHVpbnQzMl90IGZ1bmN0aW9uSW5kZXgpIGNvbnN0CisgICAgeworICAgICAg
ICBpZiAoaXNJbXBvcnRlZEZ1bmN0aW9uRnJvbUZ1bmN0aW9uSW5kZXhTcGFjZShmdW5jdGlvbklu
ZGV4KSkKKyAgICAgICAgICAgIHJldHVybiBpbXBvcnRGdW5jdGlvblNpZ25hdHVyZUluZGljZXNb
ZnVuY3Rpb25JbmRleF0udHlwZUluZGV4OworICAgICAgICByZXR1cm4gaW50ZXJuYWxGdW5jdGlv
blNpZ25hdHVyZUluZGljZXNbZnVuY3Rpb25JbmRleCAtIGltcG9ydEZ1bmN0aW9uU2lnbmF0dXJl
SW5kaWNlcy5zaXplKCldLnR5cGVJbmRleDsKKyAgICB9CisKICAgICBWZWN0b3I8SW1wb3J0PiBp
bXBvcnRzOwotICAgIFZlY3RvcjxTaWduYXR1cmVJbmRleD4gaW1wb3J0RnVuY3Rpb25TaWduYXR1
cmVJbmRpY2VzOwotICAgIFZlY3RvcjxTaWduYXR1cmVJbmRleD4gaW50ZXJuYWxGdW5jdGlvblNp
Z25hdHVyZUluZGljZXM7CisgICAgVmVjdG9yPEZ1bmN0aW9uRGVzY3JpcHRpb24+IGltcG9ydEZ1
bmN0aW9uU2lnbmF0dXJlSW5kaWNlczsKKyAgICBWZWN0b3I8RnVuY3Rpb25EZXNjcmlwdGlvbj4g
aW50ZXJuYWxGdW5jdGlvblNpZ25hdHVyZUluZGljZXM7CiAgICAgVmVjdG9yPFNpZ25hdHVyZUlu
ZGV4PiBpbXBvcnRFeGNlcHRpb25TaWduYXR1cmVJbmRpY2VzOwogICAgIFZlY3RvcjxTaWduYXR1
cmVJbmRleD4gaW50ZXJuYWxFeGNlcHRpb25TaWduYXR1cmVJbmRpY2VzOwogICAgIFZlY3RvcjxS
ZWY8U2lnbmF0dXJlPj4gdXNlZFNpZ25hdHVyZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XYXNtT01HRm9yT1NSRW50cnlQbGFuLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dhc21PTUdGb3JPU1JFbnRyeVBsYW4uY3BwCmluZGV4IDQ4ZmI0NTBjNGMw
ODkwOWMxNmQxOGMxMjYxN2M5OGU2OWNhYWQzMzQuLjA3MzEzOWY1ZGQ1YjQwMGI0YjI5NDgzZWY3
YzViODc0NWUxYzVlZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21PTUdGb3JPU1JFbnRyeVBsYW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21PTUdGb3JPU1JFbnRyeVBsYW4uY3BwCkBAIC02OSw3ICs2OSw3IEBAIHZvaWQgT01HRm9y
T1NSRW50cnlQbGFuOjp3b3JrKENvbXBpbGF0aW9uRWZmb3J0KQogICAgIGNvbnN0IHVpbnQzMl90
IGZ1bmN0aW9uSW5kZXhTcGFjZSA9IG1fZnVuY3Rpb25JbmRleCArIG1fbW9kdWxlLT5tb2R1bGVJ
bmZvcm1hdGlvbigpLmltcG9ydEZ1bmN0aW9uQ291bnQoKTsKICAgICBBU1NFUlQoZnVuY3Rpb25J
bmRleFNwYWNlIDwgbV9tb2R1bGUtPm1vZHVsZUluZm9ybWF0aW9uKCkuZnVuY3Rpb25JbmRleFNw
YWNlU2l6ZSgpKTsKIAotICAgIFNpZ25hdHVyZUluZGV4IHNpZ25hdHVyZUluZGV4ID0gbV9tb2R1
bGVJbmZvcm1hdGlvbi0+aW50ZXJuYWxGdW5jdGlvblNpZ25hdHVyZUluZGljZXNbbV9mdW5jdGlv
bkluZGV4XTsKKyAgICBTaWduYXR1cmVJbmRleCBzaWduYXR1cmVJbmRleCA9IG1fbW9kdWxlSW5m
b3JtYXRpb24tPmludGVybmFsRnVuY3Rpb25TaWduYXR1cmVJbmRpY2VzW21fZnVuY3Rpb25JbmRl
eF0uc2lnbmF0dXJlSW5kZXg7CiAgICAgY29uc3QgU2lnbmF0dXJlJiBzaWduYXR1cmUgPSBTaWdu
YXR1cmVJbmZvcm1hdGlvbjo6Z2V0KHNpZ25hdHVyZUluZGV4KTsKIAogICAgIFZlY3RvcjxVbmxp
bmtlZFdhc21Ub1dhc21DYWxsPiB1bmxpbmtlZENhbGxzOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2FzbU9NR1BsYW4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbU9NR1BsYW4uY3BwCmluZGV4IDZhNGY3ODcyNjk1NDg1NDYzMGVlOGU4MzUzZTY4
ZmY0NDNmMGU2MWYuLjU4ZDVlZjRlZDk0YzIxMzAxOTA3ZGFlMjU5MDNjNTc0MTM2Nzg5ZWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21PTUdQbGFuLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtT01HUGxhbi5jcHAKQEAgLTY2LDcgKzY2
LDcgQEAgdm9pZCBPTUdQbGFuOjp3b3JrKENvbXBpbGF0aW9uRWZmb3J0KQogICAgIGNvbnN0IHVp
bnQzMl90IGZ1bmN0aW9uSW5kZXhTcGFjZSA9IG1fZnVuY3Rpb25JbmRleCArIG1fbW9kdWxlLT5t
b2R1bGVJbmZvcm1hdGlvbigpLmltcG9ydEZ1bmN0aW9uQ291bnQoKTsKICAgICBBU1NFUlQoZnVu
Y3Rpb25JbmRleFNwYWNlIDwgbV9tb2R1bGUtPm1vZHVsZUluZm9ybWF0aW9uKCkuZnVuY3Rpb25J
bmRleFNwYWNlU2l6ZSgpKTsKIAotICAgIFNpZ25hdHVyZUluZGV4IHNpZ25hdHVyZUluZGV4ID0g
bV9tb2R1bGVJbmZvcm1hdGlvbi0+aW50ZXJuYWxGdW5jdGlvblNpZ25hdHVyZUluZGljZXNbbV9m
dW5jdGlvbkluZGV4XTsKKyAgICBTaWduYXR1cmVJbmRleCBzaWduYXR1cmVJbmRleCA9IG1fbW9k
dWxlSW5mb3JtYXRpb24tPmludGVybmFsRnVuY3Rpb25TaWduYXR1cmVJbmRpY2VzW21fZnVuY3Rp
b25JbmRleF0uc2lnbmF0dXJlSW5kZXg7CiAgICAgY29uc3QgU2lnbmF0dXJlJiBzaWduYXR1cmUg
PSBTaWduYXR1cmVJbmZvcm1hdGlvbjo6Z2V0KHNpZ25hdHVyZUluZGV4KTsKIAogICAgIFZlY3Rv
cjxVbmxpbmtlZFdhc21Ub1dhc21DYWxsPiB1bmxpbmtlZENhbGxzOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVBhcnNlci5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbVBhcnNlci5oCmluZGV4IGVkMDBkOWEwYTQyYjc5YWRjMWYzYzhhYjBmMzQ2
ZmM0ZjZkYTg5YWUuLjQ2ZDc0ZWFiY2U0OWFlMWU4NDY2MTczMjRhYzFlNjM3Y2QxNWFmZmUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21QYXJzZXIuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtUGFyc2VyLmgKQEAgLTMzMCwyMCArMzMwLDIw
IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBQYXJzZXI8U3VjY2Vzc1R5cGU+OjpwYXJzZVZhbHVlVHlw
ZShjb25zdCBNb2R1bGVJbmZvcm1hdGlvbiYKIAogICAgIFR5cGVLaW5kIHR5cGVLaW5kID0gc3Rh
dGljX2Nhc3Q8VHlwZUtpbmQ+KGtpbmQpOwogICAgIGJvb2wgaXNOdWxsYWJsZSA9IHRydWU7Ci0g
ICAgU2lnbmF0dXJlSW5kZXggc2lnSW5kZXggPSAwOworICAgIHVuc2lnbmVkIHR5cGVJbmRleCA9
IDA7CiAKICAgICBpZiAoT3B0aW9uczo6dXNlV2ViQXNzZW1ibHlUeXBlZEZ1bmN0aW9uUmVmZXJl
bmNlcygpICYmICh0eXBlS2luZCA9PSBUeXBlS2luZDo6RnVuY3JlZiB8fCB0eXBlS2luZCA9PSBU
eXBlS2luZDo6RXh0ZXJucmVmKSkgewotICAgICAgICBzaWdJbmRleCA9IHN0YXRpY19jYXN0PFNp
Z25hdHVyZUluZGV4Pih0eXBlS2luZCk7CisgICAgICAgIHR5cGVJbmRleCA9IHN0YXRpY19jYXN0
PHVuc2lnbmVkPih0eXBlS2luZCk7CiAgICAgICAgIHR5cGVLaW5kID0gVHlwZUtpbmQ6OlJlZk51
bGw7CiAgICAgfSBlbHNlIGlmICh0eXBlS2luZCA9PSBUeXBlS2luZDo6UmVmIHx8IHR5cGVLaW5k
ID09IFR5cGVLaW5kOjpSZWZOdWxsKSB7CiAgICAgICAgIGlzTnVsbGFibGUgPSB0eXBlS2luZCA9
PSBUeXBlS2luZDo6UmVmTnVsbDsKICAgICAgICAgaW50MzJfdCBoZWFwVHlwZTsKICAgICAgICAg
aWYgKCFwYXJzZUhlYXBUeXBlKGluZm8sIGhlYXBUeXBlKSkKICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICAgICAgc2lnSW5kZXggPSBoZWFwVHlwZSA8IDAgPyBzdGF0aWNfY2FzdDxTaWdu
YXR1cmVJbmRleD4oaGVhcFR5cGUpIDogU2lnbmF0dXJlSW5mb3JtYXRpb246OmdldChpbmZvLnVz
ZWRTaWduYXR1cmVzW2hlYXBUeXBlXS5nZXQoKSk7CisgICAgICAgIHR5cGVJbmRleCA9IHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihoZWFwVHlwZSk7CiAgICAgfQogCi0gICAgVHlwZSB0eXBlID0geyB0
eXBlS2luZCwgc3RhdGljX2Nhc3Q8TnVsbGFibGU+KGlzTnVsbGFibGUpLCBzaWdJbmRleCB9Owor
ICAgIFR5cGUgdHlwZSA9IHsgdHlwZUtpbmQsIHN0YXRpY19jYXN0PE51bGxhYmxlPihpc051bGxh
YmxlKSwgdHlwZUluZGV4IH07CiAgICAgaWYgKCFpc1ZhbHVlVHlwZSh0eXBlKSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIHJlc3VsdCA9IHR5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtU2VjdGlvblBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtU2VjdGlvblBhcnNlci5jcHAKaW5kZXggYTg4OTVjOTUxMjlkMzNjN2Mw
Y2RiZjg2NjRlODkwZDRhZjM1MTNiYS4uZDVkN2I5M2Y0NWU0ZWU4ODZkYzk2NjlhNDgzMzIyOTZl
MjZkYzBmZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNlY3Rp
b25QYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TZWN0aW9u
UGFyc2VyLmNwcApAQCAtMTE2LDcgKzExNiw3IEBAIGF1dG8gU2VjdGlvblBhcnNlcjo6cGFyc2VJ
bXBvcnQoKSAtPiBQYXJ0aWFsUmVzdWx0CiAgICAgICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lG
KGZ1bmN0aW9uU2lnbmF0dXJlSW5kZXggPj0gbV9pbmZvLT51c2VkU2lnbmF0dXJlcy5zaXplKCks
ICJpbnZhbGlkIGZ1bmN0aW9uIHNpZ25hdHVyZSBmb3IgIiwgaW1wb3J0TnVtYmVyLCAidGggSW1w
b3J0LCAiLCBmdW5jdGlvblNpZ25hdHVyZUluZGV4LCAiIGlzIG91dCBvZiByYW5nZSBvZiAiLCBt
X2luZm8tPnVzZWRTaWduYXR1cmVzLnNpemUoKSwgIiBpbiBtb2R1bGUgJyIsIG1vZHVsZVN0cmlu
ZywgIicgZmllbGQgJyIsIGZpZWxkU3RyaW5nLCAiJyIpOwogICAgICAgICAgICAga2luZEluZGV4
ID0gbV9pbmZvLT5pbXBvcnRGdW5jdGlvblNpZ25hdHVyZUluZGljZXMuc2l6ZSgpOwogICAgICAg
ICAgICAgU2lnbmF0dXJlSW5kZXggc2lnbmF0dXJlSW5kZXggPSBTaWduYXR1cmVJbmZvcm1hdGlv
bjo6Z2V0KG1faW5mby0+dXNlZFNpZ25hdHVyZXNbZnVuY3Rpb25TaWduYXR1cmVJbmRleF0pOwot
ICAgICAgICAgICAgbV9pbmZvLT5pbXBvcnRGdW5jdGlvblNpZ25hdHVyZUluZGljZXMudW5jaGVj
a2VkQXBwZW5kKHNpZ25hdHVyZUluZGV4KTsKKyAgICAgICAgICAgIG1faW5mby0+aW1wb3J0RnVu
Y3Rpb25TaWduYXR1cmVJbmRpY2VzLnVuY2hlY2tlZEFwcGVuZChGdW5jdGlvbkRlc2NyaXB0aW9u
IHsgc2lnbmF0dXJlSW5kZXgsIGZ1bmN0aW9uU2lnbmF0dXJlSW5kZXggfSk7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIEV4dGVybmFsS2luZDo6VGFibGU6IHsK
QEAgLTE4NSw3ICsxODUsNyBAQCBhdXRvIFNlY3Rpb25QYXJzZXI6OnBhcnNlRnVuY3Rpb24oKSAt
PiBQYXJ0aWFsUmVzdWx0CiAgICAgICAgIC8vIFRoZSBDb2RlIHNlY3Rpb24gZml4ZXMgdXAgc3Rh
cnQgYW5kIGVuZC4KICAgICAgICAgc2l6ZV90IHN0YXJ0ID0gMDsKICAgICAgICAgc2l6ZV90IGVu
ZCA9IDA7Ci0gICAgICAgIG1faW5mby0+aW50ZXJuYWxGdW5jdGlvblNpZ25hdHVyZUluZGljZXMu
dW5jaGVja2VkQXBwZW5kKHNpZ25hdHVyZUluZGV4KTsKKyAgICAgICAgbV9pbmZvLT5pbnRlcm5h
bEZ1bmN0aW9uU2lnbmF0dXJlSW5kaWNlcy51bmNoZWNrZWRBcHBlbmQoRnVuY3Rpb25EZXNjcmlw
dGlvbiB7IHNpZ25hdHVyZUluZGV4LCB0eXBlTnVtYmVyIH0pOwogICAgICAgICBtX2luZm8tPmZ1
bmN0aW9ucy51bmNoZWNrZWRBcHBlbmQoeyBzdGFydCwgZW5kLCBWZWN0b3I8dWludDhfdD4oKSB9
KTsKICAgICB9CiAKQEAgLTYyMSwxMSArNjIxLDcgQEAgYXV0byBTZWN0aW9uUGFyc2VyOjpwYXJz
ZUluaXRFeHByKHVpbnQ4X3QmIG9wY29kZSwgdWludDY0X3QmIGJpdHNPckltcG9ydE51bWJlciwK
ICAgICAgICAgaWYgKE9wdGlvbnM6OnVzZVdlYkFzc2VtYmx5VHlwZWRGdW5jdGlvblJlZmVyZW5j
ZXMoKSkgewogICAgICAgICAgICAgaW50MzJfdCBoZWFwVHlwZTsKICAgICAgICAgICAgIFdBU01f
UEFSU0VSX0ZBSUxfSUYoIXBhcnNlSGVhcFR5cGUobV9pbmZvLCBoZWFwVHlwZSksICJyZWYubnVs
bCBoZWFwdHlwZSBtdXN0IGJlIGZ1bmNyZWYsIGV4dGVybnJlZiBvciB0eXBlX2lkeCIpOwotICAg
ICAgICAgICAgaWYgKGlzVHlwZUluZGV4SGVhcFR5cGUoaGVhcFR5cGUpKSB7Ci0gICAgICAgICAg
ICAgICAgU2lnbmF0dXJlSW5kZXggc2lnbmF0dXJlSW5kZXggPSBTaWduYXR1cmVJbmZvcm1hdGlv
bjo6Z2V0KG1faW5mby0+dXNlZFNpZ25hdHVyZXNbaGVhcFR5cGVdLmdldCgpKTsKLSAgICAgICAg
ICAgICAgICB0eXBlT2ZOdWxsID0gVHlwZSB7IFR5cGVLaW5kOjpSZWZOdWxsLCBOdWxsYWJsZTo6
WWVzLCBzaWduYXR1cmVJbmRleCB9OwotICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAg
ICAgdHlwZU9mTnVsbCA9IFR5cGUgeyBUeXBlS2luZDo6UmVmTnVsbCwgTnVsbGFibGU6Olllcywg
c3RhdGljX2Nhc3Q8U2lnbmF0dXJlSW5kZXg+KGhlYXBUeXBlKSB9OworICAgICAgICAgICAgdHlw
ZU9mTnVsbCA9IFR5cGUgeyBUeXBlS2luZDo6UmVmTnVsbCwgTnVsbGFibGU6Olllcywgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KGhlYXBUeXBlKSB9OwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAg
IFdBU01fUEFSU0VSX0ZBSUxfSUYoIXBhcnNlUmVmVHlwZShtX2luZm8sIHR5cGVPZk51bGwpLCAi
cmVmLm51bGwgdHlwZSBtdXN0IGJlIGEgcmVmZXJlbmNlIHR5cGUiKTsKIApAQCAtNjM1LDE3ICs2
MzEsMTYgQEAgYXV0byBTZWN0aW9uUGFyc2VyOjpwYXJzZUluaXRFeHByKHVpbnQ4X3QmIG9wY29k
ZSwgdWludDY0X3QmIGJpdHNPckltcG9ydE51bWJlciwKICAgICB9CiAKICAgICBjYXNlIFJlZkZ1
bmM6IHsKLSAgICAgICAgdWludDMyX3QgaW5kZXg7Ci0gICAgICAgIFdBU01fUEFSU0VSX0ZBSUxf
SUYoIXBhcnNlVmFyVUludDMyKGluZGV4KSwgImNhbid0IGdldCByZWYuZnVuYyBpbmRleCIpOwot
ICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKGluZGV4ID49IG1faW5mby0+ZnVuY3Rpb25zLnNp
emUoKSwgInJlZi5mdW5jIGluZGV4IiwgaW5kZXgsICIgZXhjZWVkcyB0aGUgbnVtYmVyIG9mIGZ1
bmN0aW9ucyAiLCBtX2luZm8tPmZ1bmN0aW9ucy5zaXplKCkpOworICAgICAgICB1aW50MzJfdCBm
dW5jdGlvbkluZGV4OworICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJzZVZhclVJbnQz
MihmdW5jdGlvbkluZGV4KSwgImNhbid0IGdldCByZWYuZnVuYyBpbmRleCIpOworICAgICAgICBX
QVNNX1BBUlNFUl9GQUlMX0lGKGZ1bmN0aW9uSW5kZXggPj0gbV9pbmZvLT5mdW5jdGlvbnMuc2l6
ZSgpLCAicmVmLmZ1bmMgaW5kZXgiLCBmdW5jdGlvbkluZGV4LCAiIGV4Y2VlZHMgdGhlIG51bWJl
ciBvZiBmdW5jdGlvbnMgIiwgbV9pbmZvLT5mdW5jdGlvbnMuc2l6ZSgpKTsKIAogICAgICAgICBp
ZiAoT3B0aW9uczo6dXNlV2ViQXNzZW1ibHlUeXBlZEZ1bmN0aW9uUmVmZXJlbmNlcygpKSB7Ci0g
ICAgICAgICAgICBTaWduYXR1cmVJbmRleCBzaWduYXR1cmVJbmRleCA9IG1faW5mby0+c2lnbmF0
dXJlSW5kZXhGcm9tRnVuY3Rpb25JbmRleFNwYWNlKGluZGV4KTsKLSAgICAgICAgICAgIHJlc3Vs
dFR5cGUgPSB7IFR5cGVLaW5kOjpSZWYsIE51bGxhYmxlOjpObywgc2lnbmF0dXJlSW5kZXggfTsK
KyAgICAgICAgICAgIHJlc3VsdFR5cGUgPSB7IFR5cGVLaW5kOjpSZWYsIE51bGxhYmxlOjpObywg
bV9pbmZvLT5nZXRUeXBlSW5kZXhGb3JGdW5jdGlvbihmdW5jdGlvbkluZGV4KSB9OwogICAgICAg
ICB9IGVsc2UKICAgICAgICAgICAgIHJlc3VsdFR5cGUgPSBUeXBlczo6RnVuY3JlZjsKIAotICAg
ICAgICBiaXRzT3JJbXBvcnROdW1iZXIgPSBpbmRleDsKKyAgICAgICAgYml0c09ySW1wb3J0TnVt
YmVyID0gZnVuY3Rpb25JbmRleDsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2lnbmF0dXJlLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtU2lnbmF0dXJlLmgKaW5kZXggM2FjZTlhZmIxNzU3ODk2NjM4
MmE3MGI5NTBlY2IzOGI5ZjQ3MDZmNi4uM2Q0YThiMWQ4NDEwNTdhZWE4NGQ5NTFiZTkwYzBlNzRh
NWMyNDA3MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNpZ25h
dHVyZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TaWduYXR1cmUuaApA
QCAtNDEsNiArNDEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIG5hbWVzcGFjZSBXYXNtIHsKIAogdXNp
bmcgU2lnbmF0dXJlQXJnQ291bnQgPSB1aW50MzJfdDsKK3VzaW5nIFNpZ25hdHVyZUluZGV4ID0g
dWludHB0cl90OwogCiBjbGFzcyBTaWduYXR1cmUgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50
ZWQ8U2lnbmF0dXJlPiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9nZW5lcmF0ZVdhc21PcHNIZWFkZXIucHkgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9nZW5lcmF0ZVdhc21PcHNIZWFkZXIucHkKaW5kZXgg
NjU3NmE2OWM1NjgzNTNhYjY3N2I4ZTFiNGM4NDE0NmE3NGMwMzVmZi4uNjNlOTRkYmMyZThhZTQ1
NDJhNzlkOGFhYzkyMGIwNmQwZTAxYThlNCAxMDA3NTUKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vZ2VuZXJhdGVXYXNtT3BzSGVhZGVyLnB5CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL2dlbmVyYXRlV2FzbU9wc0hlYWRlci5weQpAQCAtMjE4LDEyICsyMTgsMTAgQEAg
ZW51bSBjbGFzcyBOdWxsYWJsZSA6IGJvb2wgewogICBZZXMgPSB0cnVlLAogfTsKIAotdXNpbmcg
U2lnbmF0dXJlSW5kZXggPSB1aW50cHRyX3Q7Ci0KIHN0cnVjdCBUeXBlIHsKICAgICBUeXBlS2lu
ZCBraW5kOwogICAgIE51bGxhYmxlIG51bGxhYmxlOwotICAgIFNpZ25hdHVyZUluZGV4IGluZGV4
OworICAgIHVuc2lnbmVkIGluZGV4OwogCiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFR5cGUm
IG90aGVyKSBjb25zdAogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL2pzL0pTV2ViQXNzZW1ibHlDb2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vanMvSlNXZWJBc3NlbWJseUNvZGVCbG9jay5jcHAKaW5kZXggNTRlOTc0MTRiNjYyNjAz
NGYxMzBlMTVkNDkzZDdjOTUwZTM4MTU3NS4uNzE1ZjBhN2VkNzFjOTkzNTMyZTk5ZTM5YzhkZWZm
NTFjOGJmMDI5OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNX
ZWJBc3NlbWJseUNvZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
anMvSlNXZWJBc3NlbWJseUNvZGVCbG9jay5jcHAKQEAgLTUyLDcgKzUyLDcgQEAgSlNXZWJBc3Nl
bWJseUNvZGVCbG9jazo6SlNXZWJBc3NlbWJseUNvZGVCbG9jayhWTSYgdm0sIFJlZjxXYXNtOjpD
b2RlQmxvY2s+JiYgY28KICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTcwNTY3CiAgICAgbV93YXNtVG9KU0V4aXRTdHVicy5yZXNlcnZlQ2FwYWNpdHkobV9j
b2RlQmxvY2stPmZ1bmN0aW9uSW1wb3J0Q291bnQoKSk7CiAgICAgZm9yICh1bnNpZ25lZCBpbXBv
cnRJbmRleCA9IDA7IGltcG9ydEluZGV4IDwgbV9jb2RlQmxvY2stPmZ1bmN0aW9uSW1wb3J0Q291
bnQoKTsgKytpbXBvcnRJbmRleCkgewotICAgICAgICBXYXNtOjpTaWduYXR1cmVJbmRleCBzaWdu
YXR1cmVJbmRleCA9IG1vZHVsZUluZm9ybWF0aW9uLmltcG9ydEZ1bmN0aW9uU2lnbmF0dXJlSW5k
aWNlcy5hdChpbXBvcnRJbmRleCk7CisgICAgICAgIFdhc206OlNpZ25hdHVyZUluZGV4IHNpZ25h
dHVyZUluZGV4ID0gbW9kdWxlSW5mb3JtYXRpb24uaW1wb3J0RnVuY3Rpb25TaWduYXR1cmVJbmRp
Y2VzLmF0KGltcG9ydEluZGV4KS5zaWduYXR1cmVJbmRleDsKICAgICAgICAgYXV0byBiaW5kaW5n
ID0gV2FzbTo6d2FzbVRvSlModm0sIG1fY2FsbExpbmtJbmZvcywgc2lnbmF0dXJlSW5kZXgsIGlt
cG9ydEluZGV4KTsKICAgICAgICAgaWYgKFVOTElLRUxZKCFiaW5kaW5nKSkgewogICAgICAgICAg
ICAgc3dpdGNoIChiaW5kaW5nLmVycm9yKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlNb2R1bGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlNb2R1bGUuaAppbmRleCBhNmQ2NGVlMzQ1ZmJjN2E0
M2NlMWM1ZTRjYTNkNzc3MjRhMDAzY2M5Li5hOTEzNWUzNGE5NjRjNWI2NDg2OGJhODhkMjNlNDRi
MTRiNzIwN2U3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dl
YkFzc2VtYmx5TW9kdWxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNX
ZWJBc3NlbWJseU1vZHVsZS5oCkBAIC00Myw2ICs0Myw3IEBAIG5hbWVzcGFjZSBXYXNtIHsKIGNs
YXNzIE1vZHVsZTsKIHN0cnVjdCBNb2R1bGVJbmZvcm1hdGlvbjsKIGNsYXNzIFBsYW47Cit1c2lu
ZyBTaWduYXR1cmVJbmRleCA9IHVpbnRwdHJfdDsKIH0KIAogY2xhc3MgU3ltYm9sVGFibGU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVs
ZVJlY29yZC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1v
ZHVsZVJlY29yZC5jcHAKaW5kZXggMDY0YWM2OTkxM2M4ZDZhMWIxODhhZGRiY2U0NGNkOGNjZDQ4
ZjZlOS4uYzBlMjYwZDFkZmM0Y2ZhMDBiZmY3NGRhODM5OTZmOWUyN2NhZmI0NSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxl
UmVjb3JkLmNwcApAQCAtMjMwLDcgKzIzMCw3IEBAIHZvaWQgV2ViQXNzZW1ibHlNb2R1bGVSZWNv
cmQ6OmluaXRpYWxpemVJbXBvcnRzQW5kRXhwb3J0cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsCiAg
ICAgICAgICAgICAgICAgICAgIC8vIGIuIExldCBjbG9zdXJlIGJlIHYuW1tDbG9zdXJlXV0uCiAg
ICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uID0gd2FzbVdyYXBwZXJGdW5jdGlvbi0+ZnVuY3Rp
b24oKTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgV2FzbTo6U2lnbmF0dXJl
SW5kZXggZXhwZWN0ZWRTaWduYXR1cmVJbmRleCA9IG1vZHVsZUluZm9ybWF0aW9uLmltcG9ydEZ1
bmN0aW9uU2lnbmF0dXJlSW5kaWNlc1tpbXBvcnQua2luZEluZGV4XTsKKyAgICAgICAgICAgICAg
ICBXYXNtOjpTaWduYXR1cmVJbmRleCBleHBlY3RlZFNpZ25hdHVyZUluZGV4ID0gbW9kdWxlSW5m
b3JtYXRpb24uaW1wb3J0RnVuY3Rpb25TaWduYXR1cmVJbmRpY2VzW2ltcG9ydC5raW5kSW5kZXhd
LnNpZ25hdHVyZUluZGV4OwogICAgICAgICAgICAgICAgIGlmIChpbXBvcnRlZFNpZ25hdHVyZUlu
ZGV4ICE9IGV4cGVjdGVkU2lnbmF0dXJlSW5kZXgpCiAgICAgICAgICAgICAgICAgICAgIHJldHVy
biBleGNlcHRpb24oY3JlYXRlSlNXZWJBc3NlbWJseUxpbmtFcnJvcihnbG9iYWxPYmplY3QsIHZt
LCBpbXBvcnRGYWlsTWVzc2FnZShpbXBvcnQsICJpbXBvcnRlZCBmdW5jdGlvbiIsICJzaWduYXR1
cmUgZG9lc24ndCBtYXRjaCB0aGUgcHJvdmlkZWQgV2ViQXNzZW1ibHkgZnVuY3Rpb24ncyBzaWdu
YXR1cmUiKSkpOwogICAgICAgICAgICAgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451864</attachid>
            <date>2022-02-13 23:26:33 -0800</date>
            <delta_ts>2022-02-16 04:04:31 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233444-20220214142631.patch</filename>
            <type>text/plain</type>
            <size>29598</size>
            <attacher name="Dmitry">dbezhetskov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5NzI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
YjhiNGQyZGJkYzZiOWZlOWJhZTE1NjY0ODUwMGRkNDYyZjg4NDMyLi5kODgyN2I4NzcxYzVkYWM1
OWU0MzZlNTUxMGI0OTRhMDNiMTE3MGQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1MiBAQAorMjAyMS0xMS0yMyAgRG1pdHJ5IEJlemhldHNrb3YgIDxkYmV6aGV0c2tvdkBp
Z2FsaWEuY29tPgorCisgICAgICAgIFtXQVNNLUZ1bmN0aW9uLVJlZmVyZW5jZXNdIFNpbXBsaWZ5
IHJlcHJlc2VudGF0aW9uIG9mIFdhc20gVHlwZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNDQ0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisgICAgICAgIAorICAgICAgICBSZXBsYWNlIFNpZ25hdHVyZSBpbmRleCB3aXRo
IGluZGV4IGludG8gV2FzbSBUeXBlIHNlY3Rpb24uCisgICAgICAgIEFkZCBjb3JyZXNwb25kaW5n
IG1hcHBpbmcgdG8gYmUgYWJsZSB0byBnZXQgaXRyb2R1Y2VkIHR5cGUgaW5kZXgKKyAgICAgICAg
dmlhIGdpdmVuIGZ1bmN0aW9uIGluZGV4LgorCisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVE
dW1wZXIuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpCeXRlY29kZUR1bXBlcjo6ZHVtcEJsb2Nr
KToKKyAgICAgICAgKiB3YXNtL1dhc21BaXJJUkdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6
Oldhc206OkFpcklSR2VuZXJhdG9yOjphZGRSZWZGdW5jKToKKyAgICAgICAgKiB3YXNtL1dhc21C
QlFQbGFuLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6QkJRUGxhbjo6d29yayk6CisgICAgICAg
IChKU0M6Oldhc206OkJCUVBsYW46OmNvbXBpbGVGdW5jdGlvbik6CisgICAgICAgIChKU0M6Oldh
c206OkJCUVBsYW46OmRpZENvbXBsZXRlQ29tcGlsYXRpb24pOgorICAgICAgICAqIHdhc20vV2Fz
bUZvcm1hdC5oOgorICAgICAgICAoSlNDOjpXYXNtOjppc0V4dGVybnJlZik6CisgICAgICAgIChK
U0M6Oldhc206OmlzRnVuY3JlZik6CisgICAgICAgIChKU0M6Oldhc206OmZ1bmNyZWZUeXBlKToK
KyAgICAgICAgKEpTQzo6V2FzbTo6ZXh0ZXJucmVmVHlwZSk6CisgICAgICAgIChKU0M6Oldhc206
OmlzVHlwZUluZGV4SGVhcFR5cGUpOiBEZWxldGVkLgorICAgICAgICAqIHdhc20vV2FzbUZ1bmN0
aW9uUGFyc2VyLmg6CisgICAgICAgIChKU0M6Oldhc206OkZ1bmN0aW9uUGFyc2VyPENvbnRleHQ+
OjpwYXJzZUV4cHJlc3Npb24pOgorICAgICAgICAqIHdhc20vV2FzbUxMSW50UGxhbi5jcHA6Cisg
ICAgICAgIChKU0M6Oldhc206OkxMSW50UGxhbjo6Y29tcGlsZUZ1bmN0aW9uKToKKyAgICAgICAg
KEpTQzo6V2FzbTo6TExJbnRQbGFuOjpkaWRDb21wbGV0ZUNvbXBpbGF0aW9uKToKKyAgICAgICAg
KiB3YXNtL1dhc21Nb2R1bGVJbmZvcm1hdGlvbi5oOgorICAgICAgICAoSlNDOjpXYXNtOjpNb2R1
bGVJbmZvcm1hdGlvbjo6c2lnbmF0dXJlSW5kZXhGcm9tRnVuY3Rpb25JbmRleFNwYWNlIGNvbnN0
KToKKyAgICAgICAgKEpTQzo6V2FzbTo6TW9kdWxlSW5mb3JtYXRpb246OmdldFR5cGVJbmRleEZv
ckZ1bmN0aW9uIGNvbnN0KToKKyAgICAgICAgKiB3YXNtL1dhc21PTUdGb3JPU1JFbnRyeVBsYW4u
Y3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpPTUdGb3JPU1JFbnRyeVBsYW46OndvcmspOgorICAg
ICAgICAqIHdhc20vV2FzbU9NR1BsYW4uY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpPTUdQbGFu
Ojp3b3JrKToKKyAgICAgICAgKiB3YXNtL1dhc21QYXJzZXIuaDoKKyAgICAgICAgKEpTQzo6V2Fz
bTo6UGFyc2VyPFN1Y2Nlc3NUeXBlPjo6cGFyc2VWYWx1ZVR5cGUpOgorICAgICAgICAqIHdhc20v
V2FzbVNlY3Rpb25QYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpTZWN0aW9uUGFyc2Vy
OjpwYXJzZUltcG9ydCk6CisgICAgICAgIChKU0M6Oldhc206OlNlY3Rpb25QYXJzZXI6OnBhcnNl
RnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpXYXNtOjpTZWN0aW9uUGFyc2VyOjpwYXJzZUluaXRF
eHByKToKKyAgICAgICAgKiB3YXNtL2dlbmVyYXRlV2FzbU9wc0hlYWRlci5weToKKyAgICAgICAg
KiB3YXNtL2pzL0pTV2ViQXNzZW1ibHlDb2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpKU1dl
YkFzc2VtYmx5Q29kZUJsb2NrOjpKU1dlYkFzc2VtYmx5Q29kZUJsb2NrKToKKyAgICAgICAgKiB3
YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmNwcDoKKyAgICAgICAgKEpTQzo6V2ViQXNz
ZW1ibHlNb2R1bGVSZWNvcmQ6OmluaXRpYWxpemVJbXBvcnRzQW5kRXhwb3J0cyk6CisgICAgICAg
IAogMjAyMi0wMi0xMyAgTGF1cm8gTW91cmEgIDxsbW91cmFAaWdhbGlhLmNvbT4KIAogICAgICAg
ICBVbnJldmlld2VkLCBub24tdW5pZmllZCBidWlsZCBmaXhlcwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUR1bXBlci5jcHAKaW5kZXggNWJmNjdiNjFiNjJi
YzEyZTA0YzJmYTdjYTkzNDNjMGM3YWRlNjcwMC4uM2I5OGQ4NDRlOWU2ZDZkYWQ2NmZiZDE0ZjFm
NjI0ODdhY2RmZTNhMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlRHVtcGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Qnl0ZWNvZGVEdW1wZXIuY3BwCkBAIC0zNDMsNyArMzQzLDcgQEAgdm9pZCBCeXRlY29kZUR1bXBl
cjo6ZHVtcEJsb2NrKEZ1bmN0aW9uQ29kZUJsb2NrR2VuZXJhdG9yKiBibG9jaywgY29uc3QgTW9k
dWxlSW4KICAgICBvdXQucHJpbnQobWFrZVN0cmluZyhJbmRleE9yTmFtZShmdW5jdGlvbkluZGV4
U3BhY2UsIG1vZHVsZUluZm9ybWF0aW9uLm5hbWVTZWN0aW9uLT5nZXQoZnVuY3Rpb25JbmRleFNw
YWNlKSkpKTsKIAogICAgIGNvbnN0IGF1dG8mIGZ1bmN0aW9uID0gbW9kdWxlSW5mb3JtYXRpb24u
ZnVuY3Rpb25zW2Jsb2NrLT5mdW5jdGlvbkluZGV4KCldOwotICAgIFNpZ25hdHVyZUluZGV4IHNp
Z25hdHVyZUluZGV4ID0gbW9kdWxlSW5mb3JtYXRpb24uaW50ZXJuYWxGdW5jdGlvblNpZ25hdHVy
ZUluZGljZXNbYmxvY2stPmZ1bmN0aW9uSW5kZXgoKV07CisgICAgU2lnbmF0dXJlSW5kZXggc2ln
bmF0dXJlSW5kZXggPSBtb2R1bGVJbmZvcm1hdGlvbi5pbnRlcm5hbEZ1bmN0aW9uU2lnbmF0dXJl
SW5kaWNlc1tibG9jay0+ZnVuY3Rpb25JbmRleCgpXS5zaWduYXR1cmVJbmRleDsKICAgICBjb25z
dCBTaWduYXR1cmUmIHNpZ25hdHVyZSA9IFNpZ25hdHVyZUluZm9ybWF0aW9uOjpnZXQoc2lnbmF0
dXJlSW5kZXgpOwogICAgIG91dC5wcmludCgiIDogIiwgc2lnbmF0dXJlLCAiXG4iKTsKICAgICBv
dXQucHJpbnQoIndhc20gc2l6ZTogIiwgZnVuY3Rpb24uZGF0YS5zaXplKCksICIgYnl0ZXNcbiIp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUFpcklSR2VuZXJh
dG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21BaXJJUkdlbmVyYXRvci5j
cHAKaW5kZXggOThlZGIxZWRiZWZiZTYxNzFkZGVlNzE4YzhmNzAyNDRjYmE0NzM4MC4uYTBkNzJm
ZDExMGIzMWRkYTFhNWM1NzQyOTg0YjgxMGM1MjM2Nzg0OCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2FzbUFpcklSR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtQWlySVJHZW5lcmF0b3IuY3BwCkBAIC0xMzEwLDggKzEzMTAs
NyBAQCBhdXRvIEFpcklSR2VuZXJhdG9yOjphZGRSZWZGdW5jKHVpbnQzMl90IGluZGV4LCBFeHBy
ZXNzaW9uVHlwZSYgcmVzdWx0KSAtPiBQYXJ0aQogewogICAgIC8vIEZJWE1FOiBFbWl0IHRoaXMg
aW5saW5lIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk4NTA2Pi4K
ICAgICBpZiAoT3B0aW9uczo6dXNlV2ViQXNzZW1ibHlUeXBlZEZ1bmN0aW9uUmVmZXJlbmNlcygp
KSB7Ci0gICAgICAgIFNpZ25hdHVyZUluZGV4IHNpZ25hdHVyZUluZGV4ID0gbV9pbmZvLnNpZ25h
dHVyZUluZGV4RnJvbUZ1bmN0aW9uSW5kZXhTcGFjZShpbmRleCk7Ci0gICAgICAgIHJlc3VsdCA9
IHRtcEZvclR5cGUoVHlwZSB7IFR5cGVLaW5kOjpSZWYsIE51bGxhYmxlOjpObywgc2lnbmF0dXJl
SW5kZXggfSk7CisgICAgICAgIHJlc3VsdCA9IHRtcEZvclR5cGUoVHlwZSB7IFR5cGVLaW5kOjpS
ZWYsIE51bGxhYmxlOjpObywgbV9pbmZvLmdldFR5cGVJbmRleEZvckZ1bmN0aW9uKGluZGV4KSB9
KTsKICAgICB9IGVsc2UKICAgICAgICAgcmVzdWx0ID0gdG1wRm9yVHlwZShUeXBlczo6RnVuY3Jl
Zik7CiAgICAgZW1pdENDYWxsKCZvcGVyYXRpb25XYXNtUmVmRnVuYywgcmVzdWx0LCBpbnN0YW5j
ZVZhbHVlKCksIGFkZENvbnN0YW50KFR5cGVzOjpJMzIsIGluZGV4KSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQkJRUGxhbi5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XYXNtQkJRUGxhbi5jcHAKaW5kZXggMzE3ODY2NTI3MDdjODRiZjI5MWVk
MDczODgwMjU1Zjc1ZDY3NWVjMC4uMjk1M2ZiMDJhNzA0MTMyZWRhOTJmZDUzODNkNzljOTgwYWZk
ODYyNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUJCUVBsYW4u
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CQlFQbGFuLmNwcApAQCAt
MTIzLDcgKzEyMyw3IEBAIHZvaWQgQkJRUGxhbjo6d29yayhDb21waWxhdGlvbkVmZm9ydCBlZmZv
cnQpCiAgICAgY29tcHV0ZVBDVG9Db2RlT3JpZ2luTWFwKGNvbnRleHQsIGxpbmtCdWZmZXIpOwog
CiAgICAgc2l6ZV90IGZ1bmN0aW9uSW5kZXhTcGFjZSA9IG1fZnVuY3Rpb25JbmRleCArIG1fbW9k
dWxlSW5mb3JtYXRpb24tPmltcG9ydEZ1bmN0aW9uQ291bnQoKTsKLSAgICBTaWduYXR1cmVJbmRl
eCBzaWduYXR1cmVJbmRleCA9IG1fbW9kdWxlSW5mb3JtYXRpb24tPmludGVybmFsRnVuY3Rpb25T
aWduYXR1cmVJbmRpY2VzW21fZnVuY3Rpb25JbmRleF07CisgICAgU2lnbmF0dXJlSW5kZXggc2ln
bmF0dXJlSW5kZXggPSBtX21vZHVsZUluZm9ybWF0aW9uLT5pbnRlcm5hbEZ1bmN0aW9uU2lnbmF0
dXJlSW5kaWNlc1ttX2Z1bmN0aW9uSW5kZXhdLnNpZ25hdHVyZUluZGV4OwogICAgIGNvbnN0IFNp
Z25hdHVyZSYgc2lnbmF0dXJlID0gU2lnbmF0dXJlSW5mb3JtYXRpb246OmdldChzaWduYXR1cmVJ
bmRleCk7CiAgICAgZnVuY3Rpb24tPmVudHJ5cG9pbnQuY29tcGlsYXRpb24gPSBtYWtlVW5pcXVl
PENvbXBpbGF0aW9uPigKICAgICAgICAgRklOQUxJWkVfV0FTTV9DT0RFX0ZPUl9NT0RFKENvbXBp
bGF0aW9uTW9kZTo6QkJRTW9kZSwgbGlua0J1ZmZlciwgSklUQ29tcGlsYXRpb25QdHJUYWcsICJX
ZWJBc3NlbWJseSBCQlEgZnVuY3Rpb25bJWldICVzIG5hbWUgJXMiLCBtX2Z1bmN0aW9uSW5kZXgs
IHNpZ25hdHVyZS50b1N0cmluZygpLmFzY2lpKCkuZGF0YSgpLCBtYWtlU3RyaW5nKEluZGV4T3JO
YW1lKGZ1bmN0aW9uSW5kZXhTcGFjZSwgbV9tb2R1bGVJbmZvcm1hdGlvbi0+bmFtZVNlY3Rpb24t
PmdldChmdW5jdGlvbkluZGV4U3BhY2UpKSkuYXNjaWkoKS5kYXRhKCkpLApAQCAtMTkyLDcgKzE5
Miw3IEBAIHZvaWQgQkJRUGxhbjo6Y29tcGlsZUZ1bmN0aW9uKHVpbnQzMl90IGZ1bmN0aW9uSW5k
ZXgpCiAKICAgICBpZiAobV9leHBvcnRlZEZ1bmN0aW9uSW5kaWNlcy5jb250YWlucyhmdW5jdGlv
bkluZGV4KSB8fCBtX21vZHVsZUluZm9ybWF0aW9uLT5yZWZlcmVuY2VkRnVuY3Rpb25zKCkuY29u
dGFpbnMoZnVuY3Rpb25JbmRleCkpIHsKICAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9
OwotICAgICAgICBTaWduYXR1cmVJbmRleCBzaWduYXR1cmVJbmRleCA9IG1fbW9kdWxlSW5mb3Jt
YXRpb24tPmludGVybmFsRnVuY3Rpb25TaWduYXR1cmVJbmRpY2VzW2Z1bmN0aW9uSW5kZXhdOwor
ICAgICAgICBTaWduYXR1cmVJbmRleCBzaWduYXR1cmVJbmRleCA9IG1fbW9kdWxlSW5mb3JtYXRp
b24tPmludGVybmFsRnVuY3Rpb25TaWduYXR1cmVJbmRpY2VzW2Z1bmN0aW9uSW5kZXhdLnNpZ25h
dHVyZUluZGV4OwogICAgICAgICBjb25zdCBTaWduYXR1cmUmIHNpZ25hdHVyZSA9IFNpZ25hdHVy
ZUluZm9ybWF0aW9uOjpnZXQoc2lnbmF0dXJlSW5kZXgpOwogCiAgICAgICAgIG1fY29tcGlsYXRp
b25Db250ZXh0c1tmdW5jdGlvbkluZGV4XS5lbWJlZGRlckVudHJ5cG9pbnRKSVQgPSBtYWtlVW5p
cXVlPENDYWxsSGVscGVycz4oKTsKQEAgLTIwNyw3ICsyMDcsNyBAQCB2b2lkIEJCUVBsYW46OmNv
bXBpbGVGdW5jdGlvbih1aW50MzJfdCBmdW5jdGlvbkluZGV4KQogc3RkOjp1bmlxdWVfcHRyPElu
dGVybmFsRnVuY3Rpb24+IEJCUVBsYW46OmNvbXBpbGVGdW5jdGlvbih1aW50MzJfdCBmdW5jdGlv
bkluZGV4LCBDb21waWxhdGlvbkNvbnRleHQmIGNvbnRleHQsIFZlY3RvcjxVbmxpbmtlZFdhc21U
b1dhc21DYWxsPiYgdW5saW5rZWRXYXNtVG9XYXNtQ2FsbHMsIFRpZXJVcENvdW50KiB0aWVyVXAp
CiB7CiAgICAgY29uc3QgYXV0byYgZnVuY3Rpb24gPSBtX21vZHVsZUluZm9ybWF0aW9uLT5mdW5j
dGlvbnNbZnVuY3Rpb25JbmRleF07Ci0gICAgU2lnbmF0dXJlSW5kZXggc2lnbmF0dXJlSW5kZXgg
PSBtX21vZHVsZUluZm9ybWF0aW9uLT5pbnRlcm5hbEZ1bmN0aW9uU2lnbmF0dXJlSW5kaWNlc1tm
dW5jdGlvbkluZGV4XTsKKyAgICBTaWduYXR1cmVJbmRleCBzaWduYXR1cmVJbmRleCA9IG1fbW9k
dWxlSW5mb3JtYXRpb24tPmludGVybmFsRnVuY3Rpb25TaWduYXR1cmVJbmRpY2VzW2Z1bmN0aW9u
SW5kZXhdLnNpZ25hdHVyZUluZGV4OwogICAgIGNvbnN0IFNpZ25hdHVyZSYgc2lnbmF0dXJlID0g
U2lnbmF0dXJlSW5mb3JtYXRpb246OmdldChzaWduYXR1cmVJbmRleCk7CiAgICAgdW5zaWduZWQg
ZnVuY3Rpb25JbmRleFNwYWNlID0gbV9tb2R1bGVJbmZvcm1hdGlvbi0+aW1wb3J0RnVuY3Rpb25D
b3VudCgpICsgZnVuY3Rpb25JbmRleDsKICAgICBBU1NFUlRfVU5VU0VEKGZ1bmN0aW9uSW5kZXhT
cGFjZSwgbV9tb2R1bGVJbmZvcm1hdGlvbi0+c2lnbmF0dXJlSW5kZXhGcm9tRnVuY3Rpb25JbmRl
eFNwYWNlKGZ1bmN0aW9uSW5kZXhTcGFjZSkgPT0gc2lnbmF0dXJlSW5kZXgpOwpAQCAtMjQ0LDcg
KzI0NCw3IEBAIHZvaWQgQkJRUGxhbjo6ZGlkQ29tcGxldGVDb21waWxhdGlvbigpCiB7CiAgICAg
Zm9yICh1aW50MzJfdCBmdW5jdGlvbkluZGV4ID0gMDsgZnVuY3Rpb25JbmRleCA8IG1fbW9kdWxl
SW5mb3JtYXRpb24tPmZ1bmN0aW9ucy5zaXplKCk7IGZ1bmN0aW9uSW5kZXgrKykgewogICAgICAg
ICBDb21waWxhdGlvbkNvbnRleHQmIGNvbnRleHQgPSBtX2NvbXBpbGF0aW9uQ29udGV4dHNbZnVu
Y3Rpb25JbmRleF07Ci0gICAgICAgIFNpZ25hdHVyZUluZGV4IHNpZ25hdHVyZUluZGV4ID0gbV9t
b2R1bGVJbmZvcm1hdGlvbi0+aW50ZXJuYWxGdW5jdGlvblNpZ25hdHVyZUluZGljZXNbZnVuY3Rp
b25JbmRleF07CisgICAgICAgIFNpZ25hdHVyZUluZGV4IHNpZ25hdHVyZUluZGV4ID0gbV9tb2R1
bGVJbmZvcm1hdGlvbi0+aW50ZXJuYWxGdW5jdGlvblNpZ25hdHVyZUluZGljZXNbZnVuY3Rpb25J
bmRleF0uc2lnbmF0dXJlSW5kZXg7CiAgICAgICAgIGNvbnN0IFNpZ25hdHVyZSYgc2lnbmF0dXJl
ID0gU2lnbmF0dXJlSW5mb3JtYXRpb246OmdldChzaWduYXR1cmVJbmRleCk7CiAgICAgICAgIGNv
bnN0IHVpbnQzMl90IGZ1bmN0aW9uSW5kZXhTcGFjZSA9IGZ1bmN0aW9uSW5kZXggKyBtX21vZHVs
ZUluZm9ybWF0aW9uLT5pbXBvcnRGdW5jdGlvbkNvdW50KCk7CiAgICAgICAgIEFTU0VSVChmdW5j
dGlvbkluZGV4U3BhY2UgPCBtX21vZHVsZUluZm9ybWF0aW9uLT5mdW5jdGlvbkluZGV4U3BhY2VT
aXplKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZvcm1h
dC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZvcm1hdC5oCmluZGV4IGM3OWUz
MzdjN2E3YWNkMTI4MjBjMmU2OTQwMzQ0ZmY0YmRkMTBhOWUuLjIxNTk2NjllZTEzYThiYzAzNDIy
YTlhYzNmMDdkMTVmYmNjMTM1ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dhc21Gb3JtYXQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRm9y
bWF0LmgKQEAgLTEwNSwyOCArMTA1LDI4IEBAIGlubGluZSBib29sIGlzUmVmVHlwZShUeXBlIHR5
cGUpCiBpbmxpbmUgYm9vbCBpc0V4dGVybnJlZihUeXBlIHR5cGUpCiB7CiAgICAgaWYgKE9wdGlv
bnM6OnVzZVdlYkFzc2VtYmx5VHlwZWRGdW5jdGlvblJlZmVyZW5jZXMoKSkKLSAgICAgICAgcmV0
dXJuIGlzUmVmVHlwZSh0eXBlKSAmJiB0eXBlLmluZGV4ID09IHN0YXRpY19jYXN0PFNpZ25hdHVy
ZUluZGV4PihUeXBlS2luZDo6RXh0ZXJucmVmKTsKKyAgICAgICAgcmV0dXJuIGlzUmVmVHlwZSh0
eXBlKSAmJiB0eXBlLmluZGV4ID09IHN0YXRpY19jYXN0PHVpbnQzMl90PihUeXBlS2luZDo6RXh0
ZXJucmVmKTsKICAgICByZXR1cm4gdHlwZS5raW5kID09IFR5cGVLaW5kOjpFeHRlcm5yZWY7CiB9
CiAKIGlubGluZSBib29sIGlzRnVuY3JlZihUeXBlIHR5cGUpCiB7CiAgICAgaWYgKE9wdGlvbnM6
OnVzZVdlYkFzc2VtYmx5VHlwZWRGdW5jdGlvblJlZmVyZW5jZXMoKSkKLSAgICAgICAgcmV0dXJu
IGlzUmVmVHlwZSh0eXBlKSAmJiB0eXBlLmluZGV4ID09IHN0YXRpY19jYXN0PFNpZ25hdHVyZUlu
ZGV4PihUeXBlS2luZDo6RnVuY3JlZik7CisgICAgICAgIHJldHVybiBpc1JlZlR5cGUodHlwZSkg
JiYgdHlwZS5pbmRleCA9PSBzdGF0aWNfY2FzdDx1aW50MzJfdD4oVHlwZUtpbmQ6OkZ1bmNyZWYp
OwogICAgIHJldHVybiB0eXBlLmtpbmQgPT0gVHlwZUtpbmQ6OkZ1bmNyZWY7CiB9CiAKIGlubGlu
ZSBUeXBlIGZ1bmNyZWZUeXBlKCkKIHsKICAgICBpZiAoT3B0aW9uczo6dXNlV2ViQXNzZW1ibHlU
eXBlZEZ1bmN0aW9uUmVmZXJlbmNlcygpKQotICAgICAgICByZXR1cm4gV2FzbTo6VHlwZSB7IFdh
c206OlR5cGVLaW5kOjpSZWZOdWxsLCBXYXNtOjpOdWxsYWJsZTo6WWVzLCBzdGF0aWNfY2FzdDxX
YXNtOjpTaWduYXR1cmVJbmRleD4oV2FzbTo6VHlwZUtpbmQ6OkZ1bmNyZWYpIH07CisgICAgICAg
IHJldHVybiBXYXNtOjpUeXBlIHsgV2FzbTo6VHlwZUtpbmQ6OlJlZk51bGwsIFdhc206Ok51bGxh
YmxlOjpZZXMsIHN0YXRpY19jYXN0PHVpbnQzMl90PihXYXNtOjpUeXBlS2luZDo6RnVuY3JlZikg
fTsKICAgICByZXR1cm4gVHlwZXM6OkZ1bmNyZWY7CiB9CiAKIGlubGluZSBUeXBlIGV4dGVybnJl
ZlR5cGUoKQogewogICAgIGlmIChPcHRpb25zOjp1c2VXZWJBc3NlbWJseVR5cGVkRnVuY3Rpb25S
ZWZlcmVuY2VzKCkpCi0gICAgICAgIHJldHVybiBXYXNtOjpUeXBlIHsgV2FzbTo6VHlwZUtpbmQ6
OlJlZk51bGwsIFdhc206Ok51bGxhYmxlOjpZZXMsIHN0YXRpY19jYXN0PFdhc206OlNpZ25hdHVy
ZUluZGV4PihXYXNtOjpUeXBlS2luZDo6RXh0ZXJucmVmKSB9OworICAgICAgICByZXR1cm4gV2Fz
bTo6VHlwZSB7IFdhc206OlR5cGVLaW5kOjpSZWZOdWxsLCBXYXNtOjpOdWxsYWJsZTo6WWVzLCBz
dGF0aWNfY2FzdDx1aW50MzJfdD4oV2FzbTo6VHlwZUtpbmQ6OkV4dGVybnJlZikgfTsKICAgICBy
ZXR1cm4gVHlwZXM6OkV4dGVybnJlZjsKIH0KIApAQCAtMTM4LDE0ICsxMzgsNiBAQCBpbmxpbmUg
Ym9vbCBpc1JlZldpdGhUeXBlSW5kZXgoVHlwZSB0eXBlKQogICAgIHJldHVybiBpc1JlZlR5cGUo
dHlwZSkgJiYgIWlzRXh0ZXJucmVmKHR5cGUpICYmICFpc0Z1bmNyZWYodHlwZSk7CiB9CiAKLWlu
bGluZSBib29sIGlzVHlwZUluZGV4SGVhcFR5cGUoaW50MzJfdCBoZWFwVHlwZSkKLXsKLSAgICBp
ZiAoIU9wdGlvbnM6OnVzZVdlYkFzc2VtYmx5VHlwZWRGdW5jdGlvblJlZmVyZW5jZXMoKSkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIGhlYXBUeXBlID49IDA7Ci19Ci0KIGlu
bGluZSBib29sIGlzU3VidHlwZShUeXBlIHN1YiwgVHlwZSBwYXJlbnQpCiB7CiAgICAgaWYgKHN1
Yi5pc051bGxhYmxlKCkgJiYgIXBhcmVudC5pc051bGxhYmxlKCkpCkBAIC0yNjMsNiArMjU1LDEx
IEBAIHN0cnVjdCBHbG9iYWxJbmZvcm1hdGlvbiB7CiAgICAgdWludDY0X3QgaW5pdGlhbEJpdHNP
ckltcG9ydE51bWJlciB7IDAgfTsKIH07CiAKK3N0cnVjdCBGdW5jdGlvbkRlc2NyaXB0aW9uIHsK
KyAgICBTaWduYXR1cmVJbmRleCBzaWduYXR1cmVJbmRleDsKKyAgICB1aW50MzJfdCB0eXBlSW5k
ZXg7Cit9OworCiBzdHJ1Y3QgRnVuY3Rpb25EYXRhIHsKICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFT
VF9BTExPQ0FURUQ7CiAgICAgc2l6ZV90IHN0YXJ0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbUZ1bmN0aW9uUGFyc2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtRnVuY3Rpb25QYXJzZXIuaAppbmRleCA5YmY5NjYzYzhhMzVmZTc5MGZjYzRi
ZTFiZWQxZjc0NWRhMDE1Mzc0Li5hZDJmZWNmZmM2NzczNzc4MDZmNjFmMDU3OGE0N2Q3MGFjZjA1
NmQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRnVuY3Rpb25Q
YXJzZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRnVuY3Rpb25QYXJz
ZXIuaApAQCAtMTA4MSwxMSArMTA4MSw3IEBAIEZPUl9FQUNIX1dBU01fTUVNT1JZX1NUT1JFX09Q
KENSRUFURV9DQVNFKQogICAgICAgICBpZiAoT3B0aW9uczo6dXNlV2ViQXNzZW1ibHlUeXBlZEZ1
bmN0aW9uUmVmZXJlbmNlcygpKSB7CiAgICAgICAgICAgICBpbnQzMl90IGhlYXBUeXBlOwogICAg
ICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighcGFyc2VIZWFwVHlwZShtX2luZm8sIGhlYXBU
eXBlKSwgInJlZi5udWxsIGhlYXB0eXBlIG11c3QgYmUgZnVuY3JlZiwgZXh0ZXJucmVmIG9yIHR5
cGVfaWR4Iik7Ci0gICAgICAgICAgICBpZiAoaXNUeXBlSW5kZXhIZWFwVHlwZShoZWFwVHlwZSkp
IHsKLSAgICAgICAgICAgICAgICBTaWduYXR1cmVJbmRleCBzaWduYXR1cmVJbmRleCA9IFNpZ25h
dHVyZUluZm9ybWF0aW9uOjpnZXQobV9pbmZvLnVzZWRTaWduYXR1cmVzW2hlYXBUeXBlXS5nZXQo
KSk7Ci0gICAgICAgICAgICAgICAgdHlwZU9mTnVsbCA9IFR5cGUgeyBUeXBlS2luZDo6UmVmTnVs
bCwgTnVsbGFibGU6Olllcywgc2lnbmF0dXJlSW5kZXggfTsKLSAgICAgICAgICAgIH0gZWxzZQot
ICAgICAgICAgICAgICAgIHR5cGVPZk51bGwgPSBUeXBlIHsgVHlwZUtpbmQ6OlJlZk51bGwsIE51
bGxhYmxlOjpZZXMsIHN0YXRpY19jYXN0PFNpZ25hdHVyZUluZGV4PihoZWFwVHlwZSkgfTsKKyAg
ICAgICAgICAgIHR5cGVPZk51bGwgPSBUeXBlIHsgVHlwZUtpbmQ6OlJlZk51bGwsIE51bGxhYmxl
OjpZZXMsIHN0YXRpY19jYXN0PHVpbnQzMl90PihoZWFwVHlwZSkgfTsKICAgICAgICAgfSBlbHNl
CiAgICAgICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJzZVJlZlR5cGUobV9pbmZvLCB0
eXBlT2ZOdWxsKSwgInJlZi5udWxsIHR5cGUgbXVzdCBiZSBhIHJlZmVyZW5jZSB0eXBlIik7CiAg
ICAgICAgIG1fZXhwcmVzc2lvblN0YWNrLmNvbnN0cnVjdEFuZEFwcGVuZCh0eXBlT2ZOdWxsLCBt
X2NvbnRleHQuYWRkQ29uc3RhbnQodHlwZU9mTnVsbCwgSlNWYWx1ZTo6ZW5jb2RlKGpzTnVsbCgp
KSkpOwpAQCAtMTExMyw4ICsxMTA5LDcgQEAgRk9SX0VBQ0hfV0FTTV9NRU1PUllfU1RPUkVfT1Ao
Q1JFQVRFX0NBU0UpCiAgICAgICAgIFdBU01fVFJZX0FERF9UT19DT05URVhUKGFkZFJlZkZ1bmMo
aW5kZXgsIHJlc3VsdCkpOwogCiAgICAgICAgIGlmIChPcHRpb25zOjp1c2VXZWJBc3NlbWJseVR5
cGVkRnVuY3Rpb25SZWZlcmVuY2VzKCkpIHsKLSAgICAgICAgICAgIFNpZ25hdHVyZUluZGV4IHNp
Z25hdHVyZUluZGV4ID0gbV9pbmZvLnNpZ25hdHVyZUluZGV4RnJvbUZ1bmN0aW9uSW5kZXhTcGFj
ZShpbmRleCk7Ci0gICAgICAgICAgICBtX2V4cHJlc3Npb25TdGFjay5jb25zdHJ1Y3RBbmRBcHBl
bmQoVHlwZSB7IFR5cGVLaW5kOjpSZWYsIE51bGxhYmxlOjpObywgc2lnbmF0dXJlSW5kZXggfSwg
cmVzdWx0KTsKKyAgICAgICAgICAgIG1fZXhwcmVzc2lvblN0YWNrLmNvbnN0cnVjdEFuZEFwcGVu
ZChUeXBlIHsgVHlwZUtpbmQ6OlJlZiwgTnVsbGFibGU6Ok5vLCBtX2luZm8uZ2V0VHlwZUluZGV4
Rm9yRnVuY3Rpb24oaW5kZXgpIH0sIHJlc3VsdCk7CiAgICAgICAgICAgICByZXR1cm4geyB9Owog
ICAgICAgICB9CiAKQEAgLTEyNTgsOCArMTI1Myw4IEBAIEZPUl9FQUNIX1dBU01fTUVNT1JZX1NU
T1JFX09QKENSRUFURV9DQVNFKQogICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFPcHRpb25z
Ojp1c2VXZWJBc3NlbWJseVR5cGVkRnVuY3Rpb25SZWZlcmVuY2VzKCksICJmdW5jdGlvbiByZWZl
cmVuY2VzIGFyZSBub3QgZW5hYmxlZCIpOwogICAgICAgICBXQVNNX1ZBTElEQVRPUl9GQUlMX0lG
KCFpc1JlZldpdGhUeXBlSW5kZXgobV9leHByZXNzaW9uU3RhY2subGFzdCgpLnR5cGUoKSksICJu
b24tZnVuY3JlZiBjYWxsX3JlZiB2YWx1ZSAiLCBtX2V4cHJlc3Npb25TdGFjay5sYXN0KCkudHlw
ZSgpLmtpbmQpOwogCi0gICAgICAgIGNvbnN0IFNpZ25hdHVyZUluZGV4IGNhbGxlZVNpZ25hdHVy
ZUluZGV4ID0gbV9leHByZXNzaW9uU3RhY2subGFzdCgpLnR5cGUoKS5pbmRleDsKLSAgICAgICAg
Y29uc3QgU2lnbmF0dXJlJiBjYWxsZWVTaWduYXR1cmUgPSBTaWduYXR1cmVJbmZvcm1hdGlvbjo6
Z2V0KGNhbGxlZVNpZ25hdHVyZUluZGV4KTsKKyAgICAgICAgY29uc3QgYXV0byBjYWxsZWVTaWdu
YXR1cmVJbmRleCA9IG1fZXhwcmVzc2lvblN0YWNrLmxhc3QoKS50eXBlKCkuaW5kZXg7CisgICAg
ICAgIGNvbnN0IFNpZ25hdHVyZSYgY2FsbGVlU2lnbmF0dXJlID0gbV9pbmZvLnVzZWRTaWduYXR1
cmVzW2NhbGxlZVNpZ25hdHVyZUluZGV4XS5nZXQoKTsKICAgICAgICAgc2l6ZV90IGFyZ3VtZW50
Q291bnQgPSBjYWxsZWVTaWduYXR1cmUuYXJndW1lbnRDb3VudCgpICsgMTsgLy8gQWRkIHRoZSBj
YWxsZWUncyB2YWx1ZS4KICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRihhcmd1bWVudENvdW50
ID4gbV9leHByZXNzaW9uU3RhY2suc2l6ZSgpLCAiY2FsbF9yZWYgZXhwZWN0cyAiLCBhcmd1bWVu
dENvdW50LCAiIGFyZ3VtZW50cywgYnV0IHRoZSBleHByZXNzaW9uIHN0YWNrIGN1cnJlbnRseSBo
b2xkcyAiLCBtX2V4cHJlc3Npb25TdGFjay5zaXplKCksICIgdmFsdWVzIik7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21MTEludFBsYW4uY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUxMSW50UGxhbi5jcHAKaW5kZXggYWUxNWY4ZGVkZmJl
MDE5OTAxNzljZWQzYzFkMmYwNzQwZGJjOGQ2Ni4uODFjMDAwNTJjZDg0ZGIxNTEyZTZkOTFmZDcw
YWQ2NjhiYjI3MTYyZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2Fz
bUxMSW50UGxhbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUxMSW50
UGxhbi5jcHAKQEAgLTc5LDcgKzc5LDcgQEAgYm9vbCBMTEludFBsYW46OnByZXBhcmVJbXBsKCkK
IHZvaWQgTExJbnRQbGFuOjpjb21waWxlRnVuY3Rpb24odWludDMyX3QgZnVuY3Rpb25JbmRleCkK
IHsKICAgICBjb25zdCBhdXRvJiBmdW5jdGlvbiA9IG1fbW9kdWxlSW5mb3JtYXRpb24tPmZ1bmN0
aW9uc1tmdW5jdGlvbkluZGV4XTsKLSAgICBTaWduYXR1cmVJbmRleCBzaWduYXR1cmVJbmRleCA9
IG1fbW9kdWxlSW5mb3JtYXRpb24tPmludGVybmFsRnVuY3Rpb25TaWduYXR1cmVJbmRpY2VzW2Z1
bmN0aW9uSW5kZXhdOworICAgIFNpZ25hdHVyZUluZGV4IHNpZ25hdHVyZUluZGV4ID0gbV9tb2R1
bGVJbmZvcm1hdGlvbi0+aW50ZXJuYWxGdW5jdGlvblNpZ25hdHVyZUluZGljZXNbZnVuY3Rpb25J
bmRleF0uc2lnbmF0dXJlSW5kZXg7CiAgICAgY29uc3QgU2lnbmF0dXJlJiBzaWduYXR1cmUgPSBT
aWduYXR1cmVJbmZvcm1hdGlvbjo6Z2V0KHNpZ25hdHVyZUluZGV4KTsKICAgICB1bnNpZ25lZCBm
dW5jdGlvbkluZGV4U3BhY2UgPSBtX3dhc21Ub1dhc21FeGl0U3R1YnMuc2l6ZSgpICsgZnVuY3Rp
b25JbmRleDsKICAgICBBU1NFUlRfVU5VU0VEKGZ1bmN0aW9uSW5kZXhTcGFjZSwgbV9tb2R1bGVJ
bmZvcm1hdGlvbi0+c2lnbmF0dXJlSW5kZXhGcm9tRnVuY3Rpb25JbmRleFNwYWNlKGZ1bmN0aW9u
SW5kZXhTcGFjZSkgPT0gc2lnbmF0dXJlSW5kZXgpOwpAQCAtMTQ4LDcgKzE0OCw3IEBAIHZvaWQg
TExJbnRQbGFuOjpkaWRDb21wbGV0ZUNvbXBpbGF0aW9uKCkKIAogICAgIGZvciAodWludDMyX3Qg
ZnVuY3Rpb25JbmRleCA9IDA7IGZ1bmN0aW9uSW5kZXggPCBtX21vZHVsZUluZm9ybWF0aW9uLT5m
dW5jdGlvbnMuc2l6ZSgpOyBmdW5jdGlvbkluZGV4KyspIHsKICAgICAgICAgaWYgKG1fZXhwb3J0
ZWRGdW5jdGlvbkluZGljZXMuY29udGFpbnMoZnVuY3Rpb25JbmRleCkgfHwgbV9tb2R1bGVJbmZv
cm1hdGlvbi0+cmVmZXJlbmNlZEZ1bmN0aW9ucygpLmNvbnRhaW5zKGZ1bmN0aW9uSW5kZXgpKSB7
Ci0gICAgICAgICAgICBTaWduYXR1cmVJbmRleCBzaWduYXR1cmVJbmRleCA9IG1fbW9kdWxlSW5m
b3JtYXRpb24tPmludGVybmFsRnVuY3Rpb25TaWduYXR1cmVJbmRpY2VzW2Z1bmN0aW9uSW5kZXhd
OworICAgICAgICAgICAgU2lnbmF0dXJlSW5kZXggc2lnbmF0dXJlSW5kZXggPSBtX21vZHVsZUlu
Zm9ybWF0aW9uLT5pbnRlcm5hbEZ1bmN0aW9uU2lnbmF0dXJlSW5kaWNlc1tmdW5jdGlvbkluZGV4
XS5zaWduYXR1cmVJbmRleDsKICAgICAgICAgICAgIGNvbnN0IFNpZ25hdHVyZSYgc2lnbmF0dXJl
ID0gU2lnbmF0dXJlSW5mb3JtYXRpb246OmdldChzaWduYXR1cmVJbmRleCk7CiAgICAgICAgICAg
ICBDQ2FsbEhlbHBlcnMgaml0OwogICAgICAgICAgICAgLy8gVGhlIExMSW50IGFsd2F5cyBib3Vu
ZHMgY2hlY2tzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTW9k
dWxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTW9kdWxlLmgKaW5kZXggNjJj
NjkyN2YyYzlhOTgxYjg0MGRjZDY5YzZiZGIwZDQzNGNkZDliZi4uZjU3OGUxZTNhN2U1OGRiN2Zl
OTk5YzA4MzRkOTY2ZWQ2YjFhMjg5MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbU1vZHVsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21N
b2R1bGUuaApAQCAtMzAsNyArMzAsNiBAQAogI2luY2x1ZGUgIldhc21DYWxsZWVHcm91cC5oIgog
I2luY2x1ZGUgIldhc21FbWJlZGRlci5oIgogI2luY2x1ZGUgIldhc21NZW1vcnkuaCIKLSNpbmNs
dWRlICJXYXNtT3BzLmgiCiAjaW5jbHVkZSA8d3RmL0V4cGVjdGVkLmg+CiAjaW5jbHVkZSA8d3Rm
L0xvY2suaD4KICNpbmNsdWRlIDx3dGYvU2hhcmVkVGFzay5oPgpAQCAtNDEsNiArNDAsNyBAQCBu
YW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIFdhc20gewogY2xhc3MgTExJbnRQbGFuOwogc3RydWN0
IENvbnRleHQ7CiBzdHJ1Y3QgTW9kdWxlSW5mb3JtYXRpb247Cit1c2luZyBTaWduYXR1cmVJbmRl
eCA9IHVpbnRwdHJfdDsKIAogY2xhc3MgTW9kdWxlIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3Vu
dGVkPE1vZHVsZT4gewogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbU1vZHVsZUluZm9ybWF0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XYXNtTW9kdWxlSW5mb3JtYXRpb24uaAppbmRleCBhZTZiYmVlZGYyMTg2MTk0M2I4OTBmNzIz
MTUzYzc4ODhjZmM0OTY3Li4xOTU3ZGFjMGMwN2E1NjQzODUzZDlmYTQ2YmQ1M2YxMjEzMDVkZGM4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTW9kdWxlSW5mb3Jt
YXRpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTW9kdWxlSW5mb3Jt
YXRpb24uaApAQCAtNTksOCArNTksOCBAQCBzdHJ1Y3QgTW9kdWxlSW5mb3JtYXRpb24gOiBwdWJs
aWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8TW9kdWxlSW5mb3JtYXRpb24+IHsKICAgICBTaWduYXR1
cmVJbmRleCBzaWduYXR1cmVJbmRleEZyb21GdW5jdGlvbkluZGV4U3BhY2Uoc2l6ZV90IGZ1bmN0
aW9uSW5kZXgpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gaXNJbXBvcnRlZEZ1bmN0aW9u
RnJvbUZ1bmN0aW9uSW5kZXhTcGFjZShmdW5jdGlvbkluZGV4KQotICAgICAgICAgICAgPyBpbXBv
cnRGdW5jdGlvblNpZ25hdHVyZUluZGljZXNbZnVuY3Rpb25JbmRleF0KLSAgICAgICAgICAgIDog
aW50ZXJuYWxGdW5jdGlvblNpZ25hdHVyZUluZGljZXNbZnVuY3Rpb25JbmRleCAtIGltcG9ydEZ1
bmN0aW9uU2lnbmF0dXJlSW5kaWNlcy5zaXplKCldOworICAgICAgICAgICAgPyBpbXBvcnRGdW5j
dGlvblNpZ25hdHVyZUluZGljZXNbZnVuY3Rpb25JbmRleF0uc2lnbmF0dXJlSW5kZXgKKyAgICAg
ICAgICAgIDogaW50ZXJuYWxGdW5jdGlvblNpZ25hdHVyZUluZGljZXNbZnVuY3Rpb25JbmRleCAt
IGltcG9ydEZ1bmN0aW9uU2lnbmF0dXJlSW5kaWNlcy5zaXplKCldLnNpZ25hdHVyZUluZGV4Owog
ICAgIH0KIAogICAgIHNpemVfdCBleGNlcHRpb25JbmRleFNwYWNlU2l6ZSgpIGNvbnN0IHsgcmV0
dXJuIGltcG9ydEV4Y2VwdGlvblNpZ25hdHVyZUluZGljZXMuc2l6ZSgpICsgaW50ZXJuYWxFeGNl
cHRpb25TaWduYXR1cmVJbmRpY2VzLnNpemUoKTsgfQpAQCAtOTksNiArOTksMTMgQEAgc3RydWN0
IE1vZHVsZUluZm9ybWF0aW9uIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPE1vZHVsZUlu
Zm9ybWF0aW9uPiB7CiAgICAgYm9vbCBpc0RlY2xhcmVkRXhjZXB0aW9uKHVpbnQzMl90IGluZGV4
KSBjb25zdCB7IHJldHVybiBtX2RlY2xhcmVkRXhjZXB0aW9ucy5jb250YWlucyhpbmRleCk7IH0K
ICAgICB2b2lkIGFkZERlY2xhcmVkRXhjZXB0aW9uKHVpbnQzMl90IGluZGV4KSB7IG1fZGVjbGFy
ZWRFeGNlcHRpb25zLnNldChpbmRleCk7IH0KIAorICAgIHVpbnQzMl90IGdldFR5cGVJbmRleEZv
ckZ1bmN0aW9uKHVpbnQzMl90IGZ1bmN0aW9uSW5kZXgpIGNvbnN0CisgICAgeworICAgICAgICBp
ZiAoaXNJbXBvcnRlZEZ1bmN0aW9uRnJvbUZ1bmN0aW9uSW5kZXhTcGFjZShmdW5jdGlvbkluZGV4
KSkKKyAgICAgICAgICAgIHJldHVybiBpbXBvcnRGdW5jdGlvblNpZ25hdHVyZUluZGljZXNbZnVu
Y3Rpb25JbmRleF0udHlwZUluZGV4OworICAgICAgICByZXR1cm4gaW50ZXJuYWxGdW5jdGlvblNp
Z25hdHVyZUluZGljZXNbZnVuY3Rpb25JbmRleCAtIGltcG9ydEZ1bmN0aW9uU2lnbmF0dXJlSW5k
aWNlcy5zaXplKCldLnR5cGVJbmRleDsKKyAgICB9CisKICAgICBib29sIGhhc01lbW9yeUltcG9y
dCgpIGNvbnN0IHsgcmV0dXJuIG1lbW9yeS5pc0ltcG9ydCgpOyB9CiAKICAgICBCcmFuY2hIaW50
IGdldEJyYW5jaEhpbnQodWludDMyX3QgZnVuY3Rpb25PZmZzZXQsIHVpbnQzMl90IGJyYW5jaE9m
ZnNldCkgY29uc3QKQEAgLTExMCw4ICsxMTcsOCBAQCBzdHJ1Y3QgTW9kdWxlSW5mb3JtYXRpb24g
OiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8TW9kdWxlSW5mb3JtYXRpb24+IHsKICAgICB9
CiAKICAgICBWZWN0b3I8SW1wb3J0PiBpbXBvcnRzOwotICAgIFZlY3RvcjxTaWduYXR1cmVJbmRl
eD4gaW1wb3J0RnVuY3Rpb25TaWduYXR1cmVJbmRpY2VzOwotICAgIFZlY3RvcjxTaWduYXR1cmVJ
bmRleD4gaW50ZXJuYWxGdW5jdGlvblNpZ25hdHVyZUluZGljZXM7CisgICAgVmVjdG9yPEZ1bmN0
aW9uRGVzY3JpcHRpb24+IGltcG9ydEZ1bmN0aW9uU2lnbmF0dXJlSW5kaWNlczsKKyAgICBWZWN0
b3I8RnVuY3Rpb25EZXNjcmlwdGlvbj4gaW50ZXJuYWxGdW5jdGlvblNpZ25hdHVyZUluZGljZXM7
CiAgICAgVmVjdG9yPFNpZ25hdHVyZUluZGV4PiBpbXBvcnRFeGNlcHRpb25TaWduYXR1cmVJbmRp
Y2VzOwogICAgIFZlY3RvcjxTaWduYXR1cmVJbmRleD4gaW50ZXJuYWxFeGNlcHRpb25TaWduYXR1
cmVJbmRpY2VzOwogICAgIFZlY3RvcjxSZWY8U2lnbmF0dXJlPj4gdXNlZFNpZ25hdHVyZXM7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtT01HUGxhbi5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtT01HUGxhbi5jcHAKaW5kZXggMjUxMjUxZjhh
YWUxOWFlMDcwNTIxNmMwOTE4ZDBlZTIyOWYxNWJjOS4uMGM0Yjg3NDFhOGE1ODE1ZDQwNGVhZTc3
ZGVlNWE2N2M0Y2EyN2NjYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V2FzbU9NR1BsYW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21PTUdQ
bGFuLmNwcApAQCAtNjgsNyArNjgsNyBAQCB2b2lkIE9NR1BsYW46OndvcmsoQ29tcGlsYXRpb25F
ZmZvcnQpCiAgICAgY29uc3QgdWludDMyX3QgZnVuY3Rpb25JbmRleFNwYWNlID0gbV9mdW5jdGlv
bkluZGV4ICsgbV9tb2R1bGUtPm1vZHVsZUluZm9ybWF0aW9uKCkuaW1wb3J0RnVuY3Rpb25Db3Vu
dCgpOwogICAgIEFTU0VSVChmdW5jdGlvbkluZGV4U3BhY2UgPCBtX21vZHVsZS0+bW9kdWxlSW5m
b3JtYXRpb24oKS5mdW5jdGlvbkluZGV4U3BhY2VTaXplKCkpOwogCi0gICAgU2lnbmF0dXJlSW5k
ZXggc2lnbmF0dXJlSW5kZXggPSBtX21vZHVsZUluZm9ybWF0aW9uLT5pbnRlcm5hbEZ1bmN0aW9u
U2lnbmF0dXJlSW5kaWNlc1ttX2Z1bmN0aW9uSW5kZXhdOworICAgIFNpZ25hdHVyZUluZGV4IHNp
Z25hdHVyZUluZGV4ID0gbV9tb2R1bGVJbmZvcm1hdGlvbi0+aW50ZXJuYWxGdW5jdGlvblNpZ25h
dHVyZUluZGljZXNbbV9mdW5jdGlvbkluZGV4XS5zaWduYXR1cmVJbmRleDsKICAgICBjb25zdCBT
aWduYXR1cmUmIHNpZ25hdHVyZSA9IFNpZ25hdHVyZUluZm9ybWF0aW9uOjpnZXQoc2lnbmF0dXJl
SW5kZXgpOwogCiAgICAgVmVjdG9yPFVubGlua2VkV2FzbVRvV2FzbUNhbGw+IHVubGlua2VkQ2Fs
bHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtT1NSRW50cnlQ
bGFuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21PU1JFbnRyeVBsYW4uY3Bw
CmluZGV4IGUyZTVjZTU3ZjUwZTAzNmM2ZWI2ODMzMWE4M2VlYzFhZTA2NGJhMjQuLjQwMDRiYjZl
ZTZjMmJiZGVjZjQxYWZkYjNiMDFjNTM5ODhkYmQ4YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dhc21PU1JFbnRyeVBsYW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dhc21PU1JFbnRyeVBsYW4uY3BwCkBAIC03MCw3ICs3MCw3IEBAIHZvaWQg
T1NSRW50cnlQbGFuOjp3b3JrKENvbXBpbGF0aW9uRWZmb3J0KQogICAgIGNvbnN0IHVpbnQzMl90
IGZ1bmN0aW9uSW5kZXhTcGFjZSA9IG1fZnVuY3Rpb25JbmRleCArIG1fbW9kdWxlLT5tb2R1bGVJ
bmZvcm1hdGlvbigpLmltcG9ydEZ1bmN0aW9uQ291bnQoKTsKICAgICBBU1NFUlQoZnVuY3Rpb25J
bmRleFNwYWNlIDwgbV9tb2R1bGUtPm1vZHVsZUluZm9ybWF0aW9uKCkuZnVuY3Rpb25JbmRleFNw
YWNlU2l6ZSgpKTsKIAotICAgIFNpZ25hdHVyZUluZGV4IHNpZ25hdHVyZUluZGV4ID0gbV9tb2R1
bGVJbmZvcm1hdGlvbi0+aW50ZXJuYWxGdW5jdGlvblNpZ25hdHVyZUluZGljZXNbbV9mdW5jdGlv
bkluZGV4XTsKKyAgICBTaWduYXR1cmVJbmRleCBzaWduYXR1cmVJbmRleCA9IG1fbW9kdWxlSW5m
b3JtYXRpb24tPmludGVybmFsRnVuY3Rpb25TaWduYXR1cmVJbmRpY2VzW21fZnVuY3Rpb25JbmRl
eF0uc2lnbmF0dXJlSW5kZXg7CiAgICAgY29uc3QgU2lnbmF0dXJlJiBzaWduYXR1cmUgPSBTaWdu
YXR1cmVJbmZvcm1hdGlvbjo6Z2V0KHNpZ25hdHVyZUluZGV4KTsKIAogICAgIENvbXBpbGF0aW9u
TW9kZSB0YXJnZXRDb21waWxhdGlvbk1vZGUgPSBtX2NhbGxlZS0+Y29tcGlsYXRpb25Nb2RlKCkg
PT0gQ29tcGlsYXRpb25Nb2RlOjpMTEludE1vZGUgPyBDb21waWxhdGlvbk1vZGU6OkJCUUZvck9T
UkVudHJ5TW9kZSA6IENvbXBpbGF0aW9uTW9kZTo6T01HRm9yT1NSRW50cnlNb2RlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVBhcnNlci5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2FzbVBhcnNlci5oCmluZGV4IGVkMDBkOWEwYTQyYjc5YWRjMWYz
YzhhYjBmMzQ2ZmM0ZjZkYTg5YWUuLjQ2ZDc0ZWFiY2U0OWFlMWU4NDY2MTczMjRhYzFlNjM3Y2Qx
NWFmZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21QYXJzZXIu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtUGFyc2VyLmgKQEAgLTMzMCwy
MCArMzMwLDIwIEBAIEFMV0FZU19JTkxJTkUgYm9vbCBQYXJzZXI8U3VjY2Vzc1R5cGU+OjpwYXJz
ZVZhbHVlVHlwZShjb25zdCBNb2R1bGVJbmZvcm1hdGlvbiYKIAogICAgIFR5cGVLaW5kIHR5cGVL
aW5kID0gc3RhdGljX2Nhc3Q8VHlwZUtpbmQ+KGtpbmQpOwogICAgIGJvb2wgaXNOdWxsYWJsZSA9
IHRydWU7Ci0gICAgU2lnbmF0dXJlSW5kZXggc2lnSW5kZXggPSAwOworICAgIHVuc2lnbmVkIHR5
cGVJbmRleCA9IDA7CiAKICAgICBpZiAoT3B0aW9uczo6dXNlV2ViQXNzZW1ibHlUeXBlZEZ1bmN0
aW9uUmVmZXJlbmNlcygpICYmICh0eXBlS2luZCA9PSBUeXBlS2luZDo6RnVuY3JlZiB8fCB0eXBl
S2luZCA9PSBUeXBlS2luZDo6RXh0ZXJucmVmKSkgewotICAgICAgICBzaWdJbmRleCA9IHN0YXRp
Y19jYXN0PFNpZ25hdHVyZUluZGV4Pih0eXBlS2luZCk7CisgICAgICAgIHR5cGVJbmRleCA9IHN0
YXRpY19jYXN0PHVuc2lnbmVkPih0eXBlS2luZCk7CiAgICAgICAgIHR5cGVLaW5kID0gVHlwZUtp
bmQ6OlJlZk51bGw7CiAgICAgfSBlbHNlIGlmICh0eXBlS2luZCA9PSBUeXBlS2luZDo6UmVmIHx8
IHR5cGVLaW5kID09IFR5cGVLaW5kOjpSZWZOdWxsKSB7CiAgICAgICAgIGlzTnVsbGFibGUgPSB0
eXBlS2luZCA9PSBUeXBlS2luZDo6UmVmTnVsbDsKICAgICAgICAgaW50MzJfdCBoZWFwVHlwZTsK
ICAgICAgICAgaWYgKCFwYXJzZUhlYXBUeXBlKGluZm8sIGhlYXBUeXBlKSkKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICAgICAgc2lnSW5kZXggPSBoZWFwVHlwZSA8IDAgPyBzdGF0aWNf
Y2FzdDxTaWduYXR1cmVJbmRleD4oaGVhcFR5cGUpIDogU2lnbmF0dXJlSW5mb3JtYXRpb246Omdl
dChpbmZvLnVzZWRTaWduYXR1cmVzW2hlYXBUeXBlXS5nZXQoKSk7CisgICAgICAgIHR5cGVJbmRl
eCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihoZWFwVHlwZSk7CiAgICAgfQogCi0gICAgVHlwZSB0
eXBlID0geyB0eXBlS2luZCwgc3RhdGljX2Nhc3Q8TnVsbGFibGU+KGlzTnVsbGFibGUpLCBzaWdJ
bmRleCB9OworICAgIFR5cGUgdHlwZSA9IHsgdHlwZUtpbmQsIHN0YXRpY19jYXN0PE51bGxhYmxl
Pihpc051bGxhYmxlKSwgdHlwZUluZGV4IH07CiAgICAgaWYgKCFpc1ZhbHVlVHlwZSh0eXBlKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJlc3VsdCA9IHR5cGU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2VjdGlvblBhcnNlci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2VjdGlvblBhcnNlci5jcHAKaW5kZXggNWI1MTE4MTEw
ZTUyZDJiZDA3OGNiMDJlOTg5OTk3MmQyZmE4YjRlMy4uZjU2MmFkZDQ0YTVmY2MwODc3NDNkOWI5
NWNhZmNlZTlhMjI0MTM2ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V2FzbVNlY3Rpb25QYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21TZWN0aW9uUGFyc2VyLmNwcApAQCAtMTE3LDcgKzExNyw3IEBAIGF1dG8gU2VjdGlvblBhcnNl
cjo6cGFyc2VJbXBvcnQoKSAtPiBQYXJ0aWFsUmVzdWx0CiAgICAgICAgICAgICBXQVNNX1BBUlNF
Ul9GQUlMX0lGKGZ1bmN0aW9uU2lnbmF0dXJlSW5kZXggPj0gbV9pbmZvLT51c2VkU2lnbmF0dXJl
cy5zaXplKCksICJpbnZhbGlkIGZ1bmN0aW9uIHNpZ25hdHVyZSBmb3IgIiwgaW1wb3J0TnVtYmVy
LCAidGggSW1wb3J0LCAiLCBmdW5jdGlvblNpZ25hdHVyZUluZGV4LCAiIGlzIG91dCBvZiByYW5n
ZSBvZiAiLCBtX2luZm8tPnVzZWRTaWduYXR1cmVzLnNpemUoKSwgIiBpbiBtb2R1bGUgJyIsIG1v
ZHVsZVN0cmluZywgIicgZmllbGQgJyIsIGZpZWxkU3RyaW5nLCAiJyIpOwogICAgICAgICAgICAg
a2luZEluZGV4ID0gbV9pbmZvLT5pbXBvcnRGdW5jdGlvblNpZ25hdHVyZUluZGljZXMuc2l6ZSgp
OwogICAgICAgICAgICAgU2lnbmF0dXJlSW5kZXggc2lnbmF0dXJlSW5kZXggPSBTaWduYXR1cmVJ
bmZvcm1hdGlvbjo6Z2V0KG1faW5mby0+dXNlZFNpZ25hdHVyZXNbZnVuY3Rpb25TaWduYXR1cmVJ
bmRleF0pOwotICAgICAgICAgICAgbV9pbmZvLT5pbXBvcnRGdW5jdGlvblNpZ25hdHVyZUluZGlj
ZXMudW5jaGVja2VkQXBwZW5kKHNpZ25hdHVyZUluZGV4KTsKKyAgICAgICAgICAgIG1faW5mby0+
aW1wb3J0RnVuY3Rpb25TaWduYXR1cmVJbmRpY2VzLnVuY2hlY2tlZEFwcGVuZChGdW5jdGlvbkRl
c2NyaXB0aW9uIHsgc2lnbmF0dXJlSW5kZXgsIGZ1bmN0aW9uU2lnbmF0dXJlSW5kZXggfSk7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIEV4dGVybmFsS2luZDo6
VGFibGU6IHsKQEAgLTE4Niw3ICsxODYsNyBAQCBhdXRvIFNlY3Rpb25QYXJzZXI6OnBhcnNlRnVu
Y3Rpb24oKSAtPiBQYXJ0aWFsUmVzdWx0CiAgICAgICAgIC8vIFRoZSBDb2RlIHNlY3Rpb24gZml4
ZXMgdXAgc3RhcnQgYW5kIGVuZC4KICAgICAgICAgc2l6ZV90IHN0YXJ0ID0gMDsKICAgICAgICAg
c2l6ZV90IGVuZCA9IDA7Ci0gICAgICAgIG1faW5mby0+aW50ZXJuYWxGdW5jdGlvblNpZ25hdHVy
ZUluZGljZXMudW5jaGVja2VkQXBwZW5kKHNpZ25hdHVyZUluZGV4KTsKKyAgICAgICAgbV9pbmZv
LT5pbnRlcm5hbEZ1bmN0aW9uU2lnbmF0dXJlSW5kaWNlcy51bmNoZWNrZWRBcHBlbmQoRnVuY3Rp
b25EZXNjcmlwdGlvbiB7IHNpZ25hdHVyZUluZGV4LCB0eXBlTnVtYmVyIH0pOwogICAgICAgICBt
X2luZm8tPmZ1bmN0aW9ucy51bmNoZWNrZWRBcHBlbmQoeyBzdGFydCwgZW5kLCBWZWN0b3I8dWlu
dDhfdD4oKSB9KTsKICAgICB9CiAKQEAgLTYyMiwxMSArNjIyLDcgQEAgYXV0byBTZWN0aW9uUGFy
c2VyOjpwYXJzZUluaXRFeHByKHVpbnQ4X3QmIG9wY29kZSwgdWludDY0X3QmIGJpdHNPckltcG9y
dE51bWJlciwKICAgICAgICAgaWYgKE9wdGlvbnM6OnVzZVdlYkFzc2VtYmx5VHlwZWRGdW5jdGlv
blJlZmVyZW5jZXMoKSkgewogICAgICAgICAgICAgaW50MzJfdCBoZWFwVHlwZTsKICAgICAgICAg
ICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIXBhcnNlSGVhcFR5cGUobV9pbmZvLCBoZWFwVHlwZSks
ICJyZWYubnVsbCBoZWFwdHlwZSBtdXN0IGJlIGZ1bmNyZWYsIGV4dGVybnJlZiBvciB0eXBlX2lk
eCIpOwotICAgICAgICAgICAgaWYgKGlzVHlwZUluZGV4SGVhcFR5cGUoaGVhcFR5cGUpKSB7Ci0g
ICAgICAgICAgICAgICAgU2lnbmF0dXJlSW5kZXggc2lnbmF0dXJlSW5kZXggPSBTaWduYXR1cmVJ
bmZvcm1hdGlvbjo6Z2V0KG1faW5mby0+dXNlZFNpZ25hdHVyZXNbaGVhcFR5cGVdLmdldCgpKTsK
LSAgICAgICAgICAgICAgICB0eXBlT2ZOdWxsID0gVHlwZSB7IFR5cGVLaW5kOjpSZWZOdWxsLCBO
dWxsYWJsZTo6WWVzLCBzaWduYXR1cmVJbmRleCB9OwotICAgICAgICAgICAgfSBlbHNlCi0gICAg
ICAgICAgICAgICAgdHlwZU9mTnVsbCA9IFR5cGUgeyBUeXBlS2luZDo6UmVmTnVsbCwgTnVsbGFi
bGU6Olllcywgc3RhdGljX2Nhc3Q8U2lnbmF0dXJlSW5kZXg+KGhlYXBUeXBlKSB9OworICAgICAg
ICAgICAgdHlwZU9mTnVsbCA9IFR5cGUgeyBUeXBlS2luZDo6UmVmTnVsbCwgTnVsbGFibGU6Olll
cywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGhlYXBUeXBlKSB9OwogICAgICAgICB9IGVsc2UKICAg
ICAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIXBhcnNlUmVmVHlwZShtX2luZm8sIHR5cGVP
Zk51bGwpLCAicmVmLm51bGwgdHlwZSBtdXN0IGJlIGEgcmVmZXJlbmNlIHR5cGUiKTsKIApAQCAt
NjM2LDE3ICs2MzIsMTYgQEAgYXV0byBTZWN0aW9uUGFyc2VyOjpwYXJzZUluaXRFeHByKHVpbnQ4
X3QmIG9wY29kZSwgdWludDY0X3QmIGJpdHNPckltcG9ydE51bWJlciwKICAgICB9CiAKICAgICBj
YXNlIFJlZkZ1bmM6IHsKLSAgICAgICAgdWludDMyX3QgaW5kZXg7Ci0gICAgICAgIFdBU01fUEFS
U0VSX0ZBSUxfSUYoIXBhcnNlVmFyVUludDMyKGluZGV4KSwgImNhbid0IGdldCByZWYuZnVuYyBp
bmRleCIpOwotICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKGluZGV4ID49IG1faW5mby0+ZnVu
Y3Rpb25zLnNpemUoKSwgInJlZi5mdW5jIGluZGV4IiwgaW5kZXgsICIgZXhjZWVkcyB0aGUgbnVt
YmVyIG9mIGZ1bmN0aW9ucyAiLCBtX2luZm8tPmZ1bmN0aW9ucy5zaXplKCkpOworICAgICAgICB1
aW50MzJfdCBmdW5jdGlvbkluZGV4OworICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJz
ZVZhclVJbnQzMihmdW5jdGlvbkluZGV4KSwgImNhbid0IGdldCByZWYuZnVuYyBpbmRleCIpOwor
ICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKGZ1bmN0aW9uSW5kZXggPj0gbV9pbmZvLT5mdW5j
dGlvbnMuc2l6ZSgpLCAicmVmLmZ1bmMgaW5kZXgiLCBmdW5jdGlvbkluZGV4LCAiIGV4Y2VlZHMg
dGhlIG51bWJlciBvZiBmdW5jdGlvbnMgIiwgbV9pbmZvLT5mdW5jdGlvbnMuc2l6ZSgpKTsKIAot
ICAgICAgICBpZiAoT3B0aW9uczo6dXNlV2ViQXNzZW1ibHlUeXBlZEZ1bmN0aW9uUmVmZXJlbmNl
cygpKSB7Ci0gICAgICAgICAgICBTaWduYXR1cmVJbmRleCBzaWduYXR1cmVJbmRleCA9IG1faW5m
by0+c2lnbmF0dXJlSW5kZXhGcm9tRnVuY3Rpb25JbmRleFNwYWNlKGluZGV4KTsKLSAgICAgICAg
ICAgIHJlc3VsdFR5cGUgPSB7IFR5cGVLaW5kOjpSZWYsIE51bGxhYmxlOjpObywgc2lnbmF0dXJl
SW5kZXggfTsKLSAgICAgICAgfSBlbHNlCisgICAgICAgIGlmIChPcHRpb25zOjp1c2VXZWJBc3Nl
bWJseVR5cGVkRnVuY3Rpb25SZWZlcmVuY2VzKCkpCisgICAgICAgICAgICByZXN1bHRUeXBlID0g
eyBUeXBlS2luZDo6UmVmLCBOdWxsYWJsZTo6Tm8sIG1faW5mby0+Z2V0VHlwZUluZGV4Rm9yRnVu
Y3Rpb24oZnVuY3Rpb25JbmRleCkgfTsKKyAgICAgICAgZWxzZQogICAgICAgICAgICAgcmVzdWx0
VHlwZSA9IFR5cGVzOjpGdW5jcmVmOwogCi0gICAgICAgIGJpdHNPckltcG9ydE51bWJlciA9IGlu
ZGV4OworICAgICAgICBiaXRzT3JJbXBvcnROdW1iZXIgPSBmdW5jdGlvbkluZGV4OwogICAgICAg
ICBicmVhazsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21TaWduYXR1cmUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TaWduYXR1
cmUuaAppbmRleCAzYWNlOWFmYjE3NTc4OTY2MzgyYTcwYjk1MGVjYjM4YjlmNDcwNmY2Li4zZDRh
OGIxZDg0MTA1N2FlYTg0ZDk1MWJlOTBjMGU3NGE1YzI0MDcyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2lnbmF0dXJlLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV2FzbVNpZ25hdHVyZS5oCkBAIC00MSw2ICs0MSw3IEBAIG5hbWVzcGFjZSBK
U0MgewogbmFtZXNwYWNlIFdhc20gewogCiB1c2luZyBTaWduYXR1cmVBcmdDb3VudCA9IHVpbnQz
Ml90OwordXNpbmcgU2lnbmF0dXJlSW5kZXggPSB1aW50cHRyX3Q7CiAKIGNsYXNzIFNpZ25hdHVy
ZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxTaWduYXR1cmU+IHsKICAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L2dlbmVyYXRlV2FzbU9wc0hlYWRlci5weSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2dl
bmVyYXRlV2FzbU9wc0hlYWRlci5weQppbmRleCA2NTc2YTY5YzU2ODM1M2FiNjc3YjhlMWI0Yzg0
MTQ2YTc0YzAzNWZmLi42M2U5NGRiYzJlOGFlNDU0MmE3OWQ4YWFjOTIwYjA2ZDBlMDFhOGU0IDEw
MDc1NQotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9nZW5lcmF0ZVdhc21PcHNIZWFk
ZXIucHkKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vZ2VuZXJhdGVXYXNtT3BzSGVh
ZGVyLnB5CkBAIC0yMTgsMTIgKzIxOCwxMCBAQCBlbnVtIGNsYXNzIE51bGxhYmxlIDogYm9vbCB7
CiAgIFllcyA9IHRydWUsCiB9OwogCi11c2luZyBTaWduYXR1cmVJbmRleCA9IHVpbnRwdHJfdDsK
LQogc3RydWN0IFR5cGUgewogICAgIFR5cGVLaW5kIGtpbmQ7CiAgICAgTnVsbGFibGUgbnVsbGFi
bGU7Ci0gICAgU2lnbmF0dXJlSW5kZXggaW5kZXg7CisgICAgdW5zaWduZWQgaW5kZXg7CiAKICAg
ICBib29sIG9wZXJhdG9yPT0oY29uc3QgVHlwZSYgb3RoZXIpIGNvbnN0CiAgICAgewpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseU1vZHVsZS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5TW9kdWxlLmNw
cAppbmRleCAwZjBiOWNjNWE1MmYwZWM0OGM2ZjdjZjM1MWE3NTY3ZjZhMWM0MjJmLi41NzI1Mzk3
NzZhYmRmNTc4NTMyMTgzNzA1NGYyMWViOWRkYWY4ZjU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5TW9kdWxlLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5TW9kdWxlLmNwcApAQCAtMTU0LDcg
KzE1NCw3IEBAIEV4cGVjdGVkPHZvaWQsIFdhc206OkJpbmRpbmdGYWlsdXJlPiBKU1dlYkFzc2Vt
Ymx5TW9kdWxlOjpnZW5lcmF0ZVdhc21Ub0pTU3R1YnMoCiAgICAgICAgIEJhZzxPcHRpbWl6aW5n
Q2FsbExpbmtJbmZvPiBjYWxsTGlua0luZm9zOwogICAgICAgICBGaXhlZFZlY3RvcjxNYWNyb0Fz
c2VtYmxlckNvZGVSZWY8V2FzbUVudHJ5UHRyVGFnPj4gc3R1YnMobW9kdWxlSW5mb3JtYXRpb24u
aW1wb3J0RnVuY3Rpb25Db3VudCgpKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpbXBvcnRJbmRl
eCA9IDA7IGltcG9ydEluZGV4IDwgbW9kdWxlSW5mb3JtYXRpb24uaW1wb3J0RnVuY3Rpb25Db3Vu
dCgpOyArK2ltcG9ydEluZGV4KSB7Ci0gICAgICAgICAgICBXYXNtOjpTaWduYXR1cmVJbmRleCBz
aWduYXR1cmVJbmRleCA9IG1vZHVsZUluZm9ybWF0aW9uLmltcG9ydEZ1bmN0aW9uU2lnbmF0dXJl
SW5kaWNlcy5hdChpbXBvcnRJbmRleCk7CisgICAgICAgICAgICBXYXNtOjpTaWduYXR1cmVJbmRl
eCBzaWduYXR1cmVJbmRleCA9IG1vZHVsZUluZm9ybWF0aW9uLmltcG9ydEZ1bmN0aW9uU2lnbmF0
dXJlSW5kaWNlcy5hdChpbXBvcnRJbmRleCkuc2lnbmF0dXJlSW5kZXg7CiAgICAgICAgICAgICBh
dXRvIGJpbmRpbmcgPSBXYXNtOjp3YXNtVG9KUyh2bSwgY2FsbExpbmtJbmZvcywgc2lnbmF0dXJl
SW5kZXgsIGltcG9ydEluZGV4KTsKICAgICAgICAgICAgIGlmIChVTkxJS0VMWSghYmluZGluZykp
CiAgICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKGJpbmRpbmcuZXJyb3IoKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5
TW9kdWxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5TW9k
dWxlLmgKaW5kZXggNzdlMTk4ODc5MGQzMjc5ZDI2YzQyYWVjOTI1M2I3ZDYyMTBlNzFmZi4uZGFk
YWE2ZmNmYmMxN2I4ZDZmYmI2NzBiODdmY2NmYjNlODZlYjEwZiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseU1vZHVsZS5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlNb2R1bGUuaApAQCAtNDUsNiAr
NDUsNyBAQCBjbGFzcyBNb2R1bGU7CiBzdHJ1Y3QgTW9kdWxlSW5mb3JtYXRpb247CiBjbGFzcyBQ
bGFuOwogZW51bSBjbGFzcyBCaW5kaW5nRmFpbHVyZTsKK3VzaW5nIFNpZ25hdHVyZUluZGV4ID0g
dWludHB0cl90OwogfQogCiBjbGFzcyBKU1dlYkFzc2VtYmx5TWVtb3J5OwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQu
Y3BwCmluZGV4IDdmYTgxZTc5NzMyYjIyNTU2MzJhNzQ4ZjY5MmViYWFiOTgzZDVmN2IuLjY3MWNm
MWUwOWQ4YTI3OWNhMmZlNzY4ZWY1MmY4OWQ0NDgyZDhjZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVJlY29yZC5jcHAK
QEAgLTIxNyw3ICsyMTcsNyBAQCB2b2lkIFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkOjppbml0aWFs
aXplSW1wb3J0cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKUwogICAgICAgICAgICAg
ICAgICAgICAvLyBiLiBMZXQgY2xvc3VyZSBiZSB2LltbQ2xvc3VyZV1dLgogICAgICAgICAgICAg
ICAgICAgICBmdW5jdGlvbiA9IHdhc21XcmFwcGVyRnVuY3Rpb24tPmZ1bmN0aW9uKCk7CiAgICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIFdhc206OlNpZ25hdHVyZUluZGV4IGV4cGVj
dGVkU2lnbmF0dXJlSW5kZXggPSBtb2R1bGVJbmZvcm1hdGlvbi5pbXBvcnRGdW5jdGlvblNpZ25h
dHVyZUluZGljZXNbaW1wb3J0LmtpbmRJbmRleF07CisgICAgICAgICAgICAgICAgV2FzbTo6U2ln
bmF0dXJlSW5kZXggZXhwZWN0ZWRTaWduYXR1cmVJbmRleCA9IG1vZHVsZUluZm9ybWF0aW9uLmlt
cG9ydEZ1bmN0aW9uU2lnbmF0dXJlSW5kaWNlc1tpbXBvcnQua2luZEluZGV4XS5zaWduYXR1cmVJ
bmRleDsKICAgICAgICAgICAgICAgICBpZiAoaW1wb3J0ZWRTaWduYXR1cmVJbmRleCAhPSBleHBl
Y3RlZFNpZ25hdHVyZUluZGV4KQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXhjZXB0aW9u
KGNyZWF0ZUpTV2ViQXNzZW1ibHlMaW5rRXJyb3IoZ2xvYmFsT2JqZWN0LCB2bSwgaW1wb3J0RmFp
bE1lc3NhZ2UoaW1wb3J0LCAiaW1wb3J0ZWQgZnVuY3Rpb24iLCAic2lnbmF0dXJlIGRvZXNuJ3Qg
bWF0Y2ggdGhlIHByb3ZpZGVkIFdlYkFzc2VtYmx5IGZ1bmN0aW9uJ3Mgc2lnbmF0dXJlIikpKTsK
ICAgICAgICAgICAgIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>452175</attachid>
            <date>2022-02-16 04:04:38 -0800</date>
            <delta_ts>2022-02-20 00:03:26 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233444-20220216190435.patch</filename>
            <type>text/plain</type>
            <size>37216</size>
            <attacher name="Dmitry">dbezhetskov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5NzI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
YjhiNGQyZGJkYzZiOWZlOWJhZTE1NjY0ODUwMGRkNDYyZjg4NDMyLi4yYjY1MTNkODQ0NDFhMDUx
M2U4ZDBlYTUzNTYyZTA5NjUyZjM3ODE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1NCBAQAorMjAyMS0xMS0yMyAgRG1pdHJ5IEJlemhldHNrb3YgIDxkYmV6aGV0c2tvdkBp
Z2FsaWEuY29tPgorCisgICAgICAgIFtXQVNNLUZ1bmN0aW9uLVJlZmVyZW5jZXNdIFNpbXBsaWZ5
IHJlcHJlc2VudGF0aW9uIG9mIFdhc20gVHlwZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNDQ0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisgICAgICAgIAorICAgICAgICBPdXIgY3VycmVudCBkZXNpZ24gb2YgV2FzbSB0
eXBlIGNhbiBvbmx5IHJlcHJlc2VudCByZWZlcmVuY2VzIHRvIGZ1bmN0aW9ucy4KKyAgICAgICAg
VGhlcmUgaXMgbm8gd2F5IHRvIHJlcHJlc2VudCBuZXcga2luZCBvZiByZWZlcmVuY2VzIHRvIGFy
Yml0cmFyeSB0eXBlLgorICAgICAgICBGb3IgZXhhbXBsZSwgd2UgY2FuJ3QgcmVwcmVzZW50IHJl
ZmVyZW5jZSB0byBzdHJ1Y3R1cmUgcmlnaHQgbm93LgorICAgICAgICBTbywgaW4gdGhpcyBwYXRj
aCB3ZSByZXBsYWNlIFNpZ25hdHVyZSBpbmRleCB3aXRoIGluZGV4IGludG8gV2FzbSBUeXBlIHNl
Y3Rpb24sIHNvCisgICAgICAgIHdlIGNhbiByZXByZXNlbnQgdGhlIHdob2xlIHNwZWN0cmUgb2Yg
cmVmZXJlbmNlIHR5cGVzIGluIEpTQy4KKworICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlRHVt
cGVyLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6Qnl0ZWNvZGVEdW1wZXI6OmR1bXBCbG9jayk6
CisgICAgICAgICogd2FzbS9XYXNtQWlySVJHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpX
YXNtOjpBaXJJUkdlbmVyYXRvcjo6YWRkUmVmRnVuYyk6CisgICAgICAgICogd2FzbS9XYXNtQkJR
UGxhbi5jcHA6CisgICAgICAgIChKU0M6Oldhc206OkJCUVBsYW46OndvcmspOgorICAgICAgICAo
SlNDOjpXYXNtOjpCQlFQbGFuOjpjb21waWxlRnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpXYXNt
OjpCQlFQbGFuOjpkaWRDb21wbGV0ZUNvbXBpbGF0aW9uKToKKyAgICAgICAgKiB3YXNtL1dhc21G
b3JtYXQuaDoKKyAgICAgICAgKEpTQzo6V2FzbTo6aXNFeHRlcm5yZWYpOgorICAgICAgICAoSlND
OjpXYXNtOjppc0Z1bmNyZWYpOgorICAgICAgICAoSlNDOjpXYXNtOjpmdW5jcmVmVHlwZSk6Cisg
ICAgICAgIChKU0M6Oldhc206OmV4dGVybnJlZlR5cGUpOgorICAgICAgICAoSlNDOjpXYXNtOjpp
c1R5cGVJbmRleEhlYXBUeXBlKTogRGVsZXRlZC4KKyAgICAgICAgKiB3YXNtL1dhc21GdW5jdGlv
blBhcnNlci5oOgorICAgICAgICAoSlNDOjpXYXNtOjpGdW5jdGlvblBhcnNlcjxDb250ZXh0Pjo6
cGFyc2VFeHByZXNzaW9uKToKKyAgICAgICAgKiB3YXNtL1dhc21MTEludFBsYW4uY3BwOgorICAg
ICAgICAoSlNDOjpXYXNtOjpMTEludFBsYW46OmNvbXBpbGVGdW5jdGlvbik6CisgICAgICAgIChK
U0M6Oldhc206OkxMSW50UGxhbjo6ZGlkQ29tcGxldGVDb21waWxhdGlvbik6CisgICAgICAgICog
d2FzbS9XYXNtTW9kdWxlSW5mb3JtYXRpb24uaDoKKyAgICAgICAgKEpTQzo6V2FzbTo6TW9kdWxl
SW5mb3JtYXRpb246OnNpZ25hdHVyZUluZGV4RnJvbUZ1bmN0aW9uSW5kZXhTcGFjZSBjb25zdCk6
CisgICAgICAgIChKU0M6Oldhc206Ok1vZHVsZUluZm9ybWF0aW9uOjpnZXRUeXBlSW5kZXhGb3JG
dW5jdGlvbiBjb25zdCk6CisgICAgICAgICogd2FzbS9XYXNtT01HRm9yT1NSRW50cnlQbGFuLmNw
cDoKKyAgICAgICAgKEpTQzo6V2FzbTo6T01HRm9yT1NSRW50cnlQbGFuOjp3b3JrKToKKyAgICAg
ICAgKiB3YXNtL1dhc21PTUdQbGFuLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6T01HUGxhbjo6
d29yayk6CisgICAgICAgICogd2FzbS9XYXNtUGFyc2VyLmg6CisgICAgICAgIChKU0M6Oldhc206
OlBhcnNlcjxTdWNjZXNzVHlwZT46OnBhcnNlVmFsdWVUeXBlKToKKyAgICAgICAgKiB3YXNtL1dh
c21TZWN0aW9uUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6U2VjdGlvblBhcnNlcjo6
cGFyc2VJbXBvcnQpOgorICAgICAgICAoSlNDOjpXYXNtOjpTZWN0aW9uUGFyc2VyOjpwYXJzZUZ1
bmN0aW9uKToKKyAgICAgICAgKEpTQzo6V2FzbTo6U2VjdGlvblBhcnNlcjo6cGFyc2VJbml0RXhw
cik6CisgICAgICAgICogd2FzbS9nZW5lcmF0ZVdhc21PcHNIZWFkZXIucHk6CisgICAgICAgICog
d2FzbS9qcy9KU1dlYkFzc2VtYmx5Q29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6SlNXZWJB
c3NlbWJseUNvZGVCbG9jazo6SlNXZWJBc3NlbWJseUNvZGVCbG9jayk6CisgICAgICAgICogd2Fz
bS9qcy9XZWJBc3NlbWJseU1vZHVsZVJlY29yZC5jcHA6CisgICAgICAgIChKU0M6OldlYkFzc2Vt
Ymx5TW9kdWxlUmVjb3JkOjppbml0aWFsaXplSW1wb3J0c0FuZEV4cG9ydHMpOgorICAgICAgICAK
IDIwMjItMDItMTMgIExhdXJvIE1vdXJhICA8bG1vdXJhQGlnYWxpYS5jb20+CiAKICAgICAgICAg
VW5yZXZpZXdlZCwgbm9uLXVuaWZpZWQgYnVpbGQgZml4ZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUR1bXBlci5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVEdW1wZXIuY3BwCmluZGV4IDViZjY3YjYxYjYyYmMx
MmUwNGMyZmE3Y2E5MzQzYzBjN2FkZTY3MDAuLjNiOThkODQ0ZTllNmQ2ZGFkNjZmYmQxNGYxZjYy
NDg3YWNkZmUzYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9C
eXRlY29kZUR1bXBlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5
dGVjb2RlRHVtcGVyLmNwcApAQCAtMzQzLDcgKzM0Myw3IEBAIHZvaWQgQnl0ZWNvZGVEdW1wZXI6
OmR1bXBCbG9jayhGdW5jdGlvbkNvZGVCbG9ja0dlbmVyYXRvciogYmxvY2ssIGNvbnN0IE1vZHVs
ZUluCiAgICAgb3V0LnByaW50KG1ha2VTdHJpbmcoSW5kZXhPck5hbWUoZnVuY3Rpb25JbmRleFNw
YWNlLCBtb2R1bGVJbmZvcm1hdGlvbi5uYW1lU2VjdGlvbi0+Z2V0KGZ1bmN0aW9uSW5kZXhTcGFj
ZSkpKSk7CiAKICAgICBjb25zdCBhdXRvJiBmdW5jdGlvbiA9IG1vZHVsZUluZm9ybWF0aW9uLmZ1
bmN0aW9uc1tibG9jay0+ZnVuY3Rpb25JbmRleCgpXTsKLSAgICBTaWduYXR1cmVJbmRleCBzaWdu
YXR1cmVJbmRleCA9IG1vZHVsZUluZm9ybWF0aW9uLmludGVybmFsRnVuY3Rpb25TaWduYXR1cmVJ
bmRpY2VzW2Jsb2NrLT5mdW5jdGlvbkluZGV4KCldOworICAgIFNpZ25hdHVyZUluZGV4IHNpZ25h
dHVyZUluZGV4ID0gbW9kdWxlSW5mb3JtYXRpb24uaW50ZXJuYWxGdW5jdGlvblNpZ25hdHVyZUlu
ZGljZXNbYmxvY2stPmZ1bmN0aW9uSW5kZXgoKV0uc2lnbmF0dXJlSW5kZXg7CiAgICAgY29uc3Qg
U2lnbmF0dXJlJiBzaWduYXR1cmUgPSBTaWduYXR1cmVJbmZvcm1hdGlvbjo6Z2V0KHNpZ25hdHVy
ZUluZGV4KTsKICAgICBvdXQucHJpbnQoIiA6ICIsIHNpZ25hdHVyZSwgIlxuIik7CiAgICAgb3V0
LnByaW50KCJ3YXNtIHNpemU6ICIsIGZ1bmN0aW9uLmRhdGEuc2l6ZSgpLCAiIGJ5dGVzXG4iKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21BaXJJUkdlbmVyYXRv
ci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQWlySVJHZW5lcmF0b3IuY3Bw
CmluZGV4IDk4ZWRiMWVkYmVmYmU2MTcxZGRlZTcxOGM4ZjcwMjQ0Y2JhNDczODAuLjMxYjE1NDg4
YTM5NzcyM2U2M2Y5OTgwZmQ1NzgzYTQ2MDM2OTdkZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dhc21BaXJJUkdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbUFpcklSR2VuZXJhdG9yLmNwcApAQCAtMTE5LDcgKzExOSw3IEBA
IHB1YmxpYzoKIAogICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAogICAgIHsK
LSAgICAgICAgb3V0LnByaW50KCIoIiwgbV90bXAsICIsICIsIG1fdHlwZS5raW5kLCAiLCAiLCBt
X3R5cGUuaW5kZXgsICIpIik7CisgICAgICAgIG91dC5wcmludCgiKCIsIG1fdG1wLCAiLCAiLCBt
X3R5cGUua2luZCwgIiwgIiwgbV90eXBlLnR5cGVJbmRleEluTW9kdWxlLCAiKSIpOwogICAgIH0K
IAogcHJpdmF0ZToKQEAgLTEzMTAsOCArMTMxMCw3IEBAIGF1dG8gQWlySVJHZW5lcmF0b3I6OmFk
ZFJlZkZ1bmModWludDMyX3QgaW5kZXgsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpIC0+IFBhcnRp
CiB7CiAgICAgLy8gRklYTUU6IEVtaXQgdGhpcyBpbmxpbmUgPGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xOTg1MDY+LgogICAgIGlmIChPcHRpb25zOjp1c2VXZWJBc3Nl
bWJseVR5cGVkRnVuY3Rpb25SZWZlcmVuY2VzKCkpIHsKLSAgICAgICAgU2lnbmF0dXJlSW5kZXgg
c2lnbmF0dXJlSW5kZXggPSBtX2luZm8uc2lnbmF0dXJlSW5kZXhGcm9tRnVuY3Rpb25JbmRleFNw
YWNlKGluZGV4KTsKLSAgICAgICAgcmVzdWx0ID0gdG1wRm9yVHlwZShUeXBlIHsgVHlwZUtpbmQ6
OlJlZiwgTnVsbGFibGU6Ok5vLCBzaWduYXR1cmVJbmRleCB9KTsKKyAgICAgICAgcmVzdWx0ID0g
dG1wRm9yVHlwZShUeXBlIHsgVHlwZUtpbmQ6OlJlZiwgTnVsbGFibGU6Ok5vLCBtX2luZm8uZ2V0
VHlwZUluZGV4Rm9yRnVuY3Rpb24oaW5kZXgpIH0pOwogICAgIH0gZWxzZQogICAgICAgICByZXN1
bHQgPSB0bXBGb3JUeXBlKFR5cGVzOjpGdW5jcmVmKTsKICAgICBlbWl0Q0NhbGwoJm9wZXJhdGlv
bldhc21SZWZGdW5jLCByZXN1bHQsIGluc3RhbmNlVmFsdWUoKSwgYWRkQ29uc3RhbnQoVHlwZXM6
OkkzMiwgaW5kZXgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21CQlFQbGFuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CQlFQbGFuLmNw
cAppbmRleCAzMTc4NjY1MjcwN2M4NGJmMjkxZWQwNzM4ODAyNTVmNzVkNjc1ZWMwLi4yOTUzZmIw
MmE3MDQxMzJlZGE5MmZkNTM4M2Q3OWM5ODBhZmQ4NjI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtQkJRUGxhbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbUJCUVBsYW4uY3BwCkBAIC0xMjMsNyArMTIzLDcgQEAgdm9pZCBCQlFQbGFu
Ojp3b3JrKENvbXBpbGF0aW9uRWZmb3J0IGVmZm9ydCkKICAgICBjb21wdXRlUENUb0NvZGVPcmln
aW5NYXAoY29udGV4dCwgbGlua0J1ZmZlcik7CiAKICAgICBzaXplX3QgZnVuY3Rpb25JbmRleFNw
YWNlID0gbV9mdW5jdGlvbkluZGV4ICsgbV9tb2R1bGVJbmZvcm1hdGlvbi0+aW1wb3J0RnVuY3Rp
b25Db3VudCgpOwotICAgIFNpZ25hdHVyZUluZGV4IHNpZ25hdHVyZUluZGV4ID0gbV9tb2R1bGVJ
bmZvcm1hdGlvbi0+aW50ZXJuYWxGdW5jdGlvblNpZ25hdHVyZUluZGljZXNbbV9mdW5jdGlvbklu
ZGV4XTsKKyAgICBTaWduYXR1cmVJbmRleCBzaWduYXR1cmVJbmRleCA9IG1fbW9kdWxlSW5mb3Jt
YXRpb24tPmludGVybmFsRnVuY3Rpb25TaWduYXR1cmVJbmRpY2VzW21fZnVuY3Rpb25JbmRleF0u
c2lnbmF0dXJlSW5kZXg7CiAgICAgY29uc3QgU2lnbmF0dXJlJiBzaWduYXR1cmUgPSBTaWduYXR1
cmVJbmZvcm1hdGlvbjo6Z2V0KHNpZ25hdHVyZUluZGV4KTsKICAgICBmdW5jdGlvbi0+ZW50cnlw
b2ludC5jb21waWxhdGlvbiA9IG1ha2VVbmlxdWU8Q29tcGlsYXRpb24+KAogICAgICAgICBGSU5B
TElaRV9XQVNNX0NPREVfRk9SX01PREUoQ29tcGlsYXRpb25Nb2RlOjpCQlFNb2RlLCBsaW5rQnVm
ZmVyLCBKSVRDb21waWxhdGlvblB0clRhZywgIldlYkFzc2VtYmx5IEJCUSBmdW5jdGlvblslaV0g
JXMgbmFtZSAlcyIsIG1fZnVuY3Rpb25JbmRleCwgc2lnbmF0dXJlLnRvU3RyaW5nKCkuYXNjaWko
KS5kYXRhKCksIG1ha2VTdHJpbmcoSW5kZXhPck5hbWUoZnVuY3Rpb25JbmRleFNwYWNlLCBtX21v
ZHVsZUluZm9ybWF0aW9uLT5uYW1lU2VjdGlvbi0+Z2V0KGZ1bmN0aW9uSW5kZXhTcGFjZSkpKS5h
c2NpaSgpLmRhdGEoKSksCkBAIC0xOTIsNyArMTkyLDcgQEAgdm9pZCBCQlFQbGFuOjpjb21waWxl
RnVuY3Rpb24odWludDMyX3QgZnVuY3Rpb25JbmRleCkKIAogICAgIGlmIChtX2V4cG9ydGVkRnVu
Y3Rpb25JbmRpY2VzLmNvbnRhaW5zKGZ1bmN0aW9uSW5kZXgpIHx8IG1fbW9kdWxlSW5mb3JtYXRp
b24tPnJlZmVyZW5jZWRGdW5jdGlvbnMoKS5jb250YWlucyhmdW5jdGlvbkluZGV4KSkgewogICAg
ICAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07Ci0gICAgICAgIFNpZ25hdHVyZUluZGV4IHNp
Z25hdHVyZUluZGV4ID0gbV9tb2R1bGVJbmZvcm1hdGlvbi0+aW50ZXJuYWxGdW5jdGlvblNpZ25h
dHVyZUluZGljZXNbZnVuY3Rpb25JbmRleF07CisgICAgICAgIFNpZ25hdHVyZUluZGV4IHNpZ25h
dHVyZUluZGV4ID0gbV9tb2R1bGVJbmZvcm1hdGlvbi0+aW50ZXJuYWxGdW5jdGlvblNpZ25hdHVy
ZUluZGljZXNbZnVuY3Rpb25JbmRleF0uc2lnbmF0dXJlSW5kZXg7CiAgICAgICAgIGNvbnN0IFNp
Z25hdHVyZSYgc2lnbmF0dXJlID0gU2lnbmF0dXJlSW5mb3JtYXRpb246OmdldChzaWduYXR1cmVJ
bmRleCk7CiAKICAgICAgICAgbV9jb21waWxhdGlvbkNvbnRleHRzW2Z1bmN0aW9uSW5kZXhdLmVt
YmVkZGVyRW50cnlwb2ludEpJVCA9IG1ha2VVbmlxdWU8Q0NhbGxIZWxwZXJzPigpOwpAQCAtMjA3
LDcgKzIwNyw3IEBAIHZvaWQgQkJRUGxhbjo6Y29tcGlsZUZ1bmN0aW9uKHVpbnQzMl90IGZ1bmN0
aW9uSW5kZXgpCiBzdGQ6OnVuaXF1ZV9wdHI8SW50ZXJuYWxGdW5jdGlvbj4gQkJRUGxhbjo6Y29t
cGlsZUZ1bmN0aW9uKHVpbnQzMl90IGZ1bmN0aW9uSW5kZXgsIENvbXBpbGF0aW9uQ29udGV4dCYg
Y29udGV4dCwgVmVjdG9yPFVubGlua2VkV2FzbVRvV2FzbUNhbGw+JiB1bmxpbmtlZFdhc21Ub1dh
c21DYWxscywgVGllclVwQ291bnQqIHRpZXJVcCkKIHsKICAgICBjb25zdCBhdXRvJiBmdW5jdGlv
biA9IG1fbW9kdWxlSW5mb3JtYXRpb24tPmZ1bmN0aW9uc1tmdW5jdGlvbkluZGV4XTsKLSAgICBT
aWduYXR1cmVJbmRleCBzaWduYXR1cmVJbmRleCA9IG1fbW9kdWxlSW5mb3JtYXRpb24tPmludGVy
bmFsRnVuY3Rpb25TaWduYXR1cmVJbmRpY2VzW2Z1bmN0aW9uSW5kZXhdOworICAgIFNpZ25hdHVy
ZUluZGV4IHNpZ25hdHVyZUluZGV4ID0gbV9tb2R1bGVJbmZvcm1hdGlvbi0+aW50ZXJuYWxGdW5j
dGlvblNpZ25hdHVyZUluZGljZXNbZnVuY3Rpb25JbmRleF0uc2lnbmF0dXJlSW5kZXg7CiAgICAg
Y29uc3QgU2lnbmF0dXJlJiBzaWduYXR1cmUgPSBTaWduYXR1cmVJbmZvcm1hdGlvbjo6Z2V0KHNp
Z25hdHVyZUluZGV4KTsKICAgICB1bnNpZ25lZCBmdW5jdGlvbkluZGV4U3BhY2UgPSBtX21vZHVs
ZUluZm9ybWF0aW9uLT5pbXBvcnRGdW5jdGlvbkNvdW50KCkgKyBmdW5jdGlvbkluZGV4OwogICAg
IEFTU0VSVF9VTlVTRUQoZnVuY3Rpb25JbmRleFNwYWNlLCBtX21vZHVsZUluZm9ybWF0aW9uLT5z
aWduYXR1cmVJbmRleEZyb21GdW5jdGlvbkluZGV4U3BhY2UoZnVuY3Rpb25JbmRleFNwYWNlKSA9
PSBzaWduYXR1cmVJbmRleCk7CkBAIC0yNDQsNyArMjQ0LDcgQEAgdm9pZCBCQlFQbGFuOjpkaWRD
b21wbGV0ZUNvbXBpbGF0aW9uKCkKIHsKICAgICBmb3IgKHVpbnQzMl90IGZ1bmN0aW9uSW5kZXgg
PSAwOyBmdW5jdGlvbkluZGV4IDwgbV9tb2R1bGVJbmZvcm1hdGlvbi0+ZnVuY3Rpb25zLnNpemUo
KTsgZnVuY3Rpb25JbmRleCsrKSB7CiAgICAgICAgIENvbXBpbGF0aW9uQ29udGV4dCYgY29udGV4
dCA9IG1fY29tcGlsYXRpb25Db250ZXh0c1tmdW5jdGlvbkluZGV4XTsKLSAgICAgICAgU2lnbmF0
dXJlSW5kZXggc2lnbmF0dXJlSW5kZXggPSBtX21vZHVsZUluZm9ybWF0aW9uLT5pbnRlcm5hbEZ1
bmN0aW9uU2lnbmF0dXJlSW5kaWNlc1tmdW5jdGlvbkluZGV4XTsKKyAgICAgICAgU2lnbmF0dXJl
SW5kZXggc2lnbmF0dXJlSW5kZXggPSBtX21vZHVsZUluZm9ybWF0aW9uLT5pbnRlcm5hbEZ1bmN0
aW9uU2lnbmF0dXJlSW5kaWNlc1tmdW5jdGlvbkluZGV4XS5zaWduYXR1cmVJbmRleDsKICAgICAg
ICAgY29uc3QgU2lnbmF0dXJlJiBzaWduYXR1cmUgPSBTaWduYXR1cmVJbmZvcm1hdGlvbjo6Z2V0
KHNpZ25hdHVyZUluZGV4KTsKICAgICAgICAgY29uc3QgdWludDMyX3QgZnVuY3Rpb25JbmRleFNw
YWNlID0gZnVuY3Rpb25JbmRleCArIG1fbW9kdWxlSW5mb3JtYXRpb24tPmltcG9ydEZ1bmN0aW9u
Q291bnQoKTsKICAgICAgICAgQVNTRVJUKGZ1bmN0aW9uSW5kZXhTcGFjZSA8IG1fbW9kdWxlSW5m
b3JtYXRpb24tPmZ1bmN0aW9uSW5kZXhTcGFjZVNpemUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRm9ybWF0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XYXNtRm9ybWF0LmgKaW5kZXggYzc5ZTMzN2M3YTdhY2QxMjgyMGMyZTY5NDAzNDRmZjRi
ZGQxMGE5ZS4uZGNhNTBkYjI1NjczNmNhMTA3YTM3Y2NiY2RhNWUwZmI5MmNmYWZiZSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZvcm1hdC5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Gb3JtYXQuaApAQCAtMTA1LDI4ICsxMDUsMjggQEAg
aW5saW5lIGJvb2wgaXNSZWZUeXBlKFR5cGUgdHlwZSkKIGlubGluZSBib29sIGlzRXh0ZXJucmVm
KFR5cGUgdHlwZSkKIHsKICAgICBpZiAoT3B0aW9uczo6dXNlV2ViQXNzZW1ibHlUeXBlZEZ1bmN0
aW9uUmVmZXJlbmNlcygpKQotICAgICAgICByZXR1cm4gaXNSZWZUeXBlKHR5cGUpICYmIHR5cGUu
aW5kZXggPT0gc3RhdGljX2Nhc3Q8U2lnbmF0dXJlSW5kZXg+KFR5cGVLaW5kOjpFeHRlcm5yZWYp
OworICAgICAgICByZXR1cm4gaXNSZWZUeXBlKHR5cGUpICYmIHR5cGUudHlwZUluZGV4SW5Nb2R1
bGUgPT0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KFR5cGVLaW5kOjpFeHRlcm5yZWYpOwogICAgIHJl
dHVybiB0eXBlLmtpbmQgPT0gVHlwZUtpbmQ6OkV4dGVybnJlZjsKIH0KIAogaW5saW5lIGJvb2wg
aXNGdW5jcmVmKFR5cGUgdHlwZSkKIHsKICAgICBpZiAoT3B0aW9uczo6dXNlV2ViQXNzZW1ibHlU
eXBlZEZ1bmN0aW9uUmVmZXJlbmNlcygpKQotICAgICAgICByZXR1cm4gaXNSZWZUeXBlKHR5cGUp
ICYmIHR5cGUuaW5kZXggPT0gc3RhdGljX2Nhc3Q8U2lnbmF0dXJlSW5kZXg+KFR5cGVLaW5kOjpG
dW5jcmVmKTsKKyAgICAgICAgcmV0dXJuIGlzUmVmVHlwZSh0eXBlKSAmJiB0eXBlLnR5cGVJbmRl
eEluTW9kdWxlID09IHN0YXRpY19jYXN0PHVpbnQzMl90PihUeXBlS2luZDo6RnVuY3JlZik7CiAg
ICAgcmV0dXJuIHR5cGUua2luZCA9PSBUeXBlS2luZDo6RnVuY3JlZjsKIH0KIAogaW5saW5lIFR5
cGUgZnVuY3JlZlR5cGUoKQogewogICAgIGlmIChPcHRpb25zOjp1c2VXZWJBc3NlbWJseVR5cGVk
RnVuY3Rpb25SZWZlcmVuY2VzKCkpCi0gICAgICAgIHJldHVybiBXYXNtOjpUeXBlIHsgV2FzbTo6
VHlwZUtpbmQ6OlJlZk51bGwsIFdhc206Ok51bGxhYmxlOjpZZXMsIHN0YXRpY19jYXN0PFdhc206
OlNpZ25hdHVyZUluZGV4PihXYXNtOjpUeXBlS2luZDo6RnVuY3JlZikgfTsKKyAgICAgICAgcmV0
dXJuIFdhc206OlR5cGUgeyBXYXNtOjpUeXBlS2luZDo6UmVmTnVsbCwgV2FzbTo6TnVsbGFibGU6
Olllcywgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KFdhc206OlR5cGVLaW5kOjpGdW5jcmVmKSB9Owog
ICAgIHJldHVybiBUeXBlczo6RnVuY3JlZjsKIH0KIAogaW5saW5lIFR5cGUgZXh0ZXJucmVmVHlw
ZSgpCiB7CiAgICAgaWYgKE9wdGlvbnM6OnVzZVdlYkFzc2VtYmx5VHlwZWRGdW5jdGlvblJlZmVy
ZW5jZXMoKSkKLSAgICAgICAgcmV0dXJuIFdhc206OlR5cGUgeyBXYXNtOjpUeXBlS2luZDo6UmVm
TnVsbCwgV2FzbTo6TnVsbGFibGU6Olllcywgc3RhdGljX2Nhc3Q8V2FzbTo6U2lnbmF0dXJlSW5k
ZXg+KFdhc206OlR5cGVLaW5kOjpFeHRlcm5yZWYpIH07CisgICAgICAgIHJldHVybiBXYXNtOjpU
eXBlIHsgV2FzbTo6VHlwZUtpbmQ6OlJlZk51bGwsIFdhc206Ok51bGxhYmxlOjpZZXMsIHN0YXRp
Y19jYXN0PHVpbnQzMl90PihXYXNtOjpUeXBlS2luZDo6RXh0ZXJucmVmKSB9OwogICAgIHJldHVy
biBUeXBlczo6RXh0ZXJucmVmOwogfQogCkBAIC0xMzgsMTQgKzEzOCw2IEBAIGlubGluZSBib29s
IGlzUmVmV2l0aFR5cGVJbmRleChUeXBlIHR5cGUpCiAgICAgcmV0dXJuIGlzUmVmVHlwZSh0eXBl
KSAmJiAhaXNFeHRlcm5yZWYodHlwZSkgJiYgIWlzRnVuY3JlZih0eXBlKTsKIH0KIAotaW5saW5l
IGJvb2wgaXNUeXBlSW5kZXhIZWFwVHlwZShpbnQzMl90IGhlYXBUeXBlKQotewotICAgIGlmICgh
T3B0aW9uczo6dXNlV2ViQXNzZW1ibHlUeXBlZEZ1bmN0aW9uUmVmZXJlbmNlcygpKQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gaGVhcFR5cGUgPj0gMDsKLX0KLQogaW5saW5l
IGJvb2wgaXNTdWJ0eXBlKFR5cGUgc3ViLCBUeXBlIHBhcmVudCkKIHsKICAgICBpZiAoc3ViLmlz
TnVsbGFibGUoKSAmJiAhcGFyZW50LmlzTnVsbGFibGUoKSkKQEAgLTE1NCw3ICsxNDYsNyBAQCBp
bmxpbmUgYm9vbCBpc1N1YnR5cGUoVHlwZSBzdWIsIFR5cGUgcGFyZW50KQogICAgIGlmICgoc3Vi
LmlzUmVmKCkgfHwgc3ViLmlzUmVmTnVsbCgpKSAmJiBpc0Z1bmNyZWYocGFyZW50KSkKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAKLSAgICBpZiAoc3ViLmlzUmVmKCkgJiYgcGFyZW50LmlzUmVmTnVs
bCgpICYmIHN1Yi5pbmRleCA9PSBwYXJlbnQuaW5kZXgpCisgICAgaWYgKHN1Yi5pc1JlZigpICYm
IHBhcmVudC5pc1JlZk51bGwoKSAmJiBzdWIudHlwZUluZGV4SW5Nb2R1bGUgPT0gcGFyZW50LnR5
cGVJbmRleEluTW9kdWxlKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIHJldHVybiBzdWIg
PT0gcGFyZW50OwpAQCAtMjYzLDYgKzI1NSwxMSBAQCBzdHJ1Y3QgR2xvYmFsSW5mb3JtYXRpb24g
ewogICAgIHVpbnQ2NF90IGluaXRpYWxCaXRzT3JJbXBvcnROdW1iZXIgeyAwIH07CiB9OwogCitz
dHJ1Y3QgRnVuY3Rpb25EZXNjcmlwdGlvbiB7CisgICAgU2lnbmF0dXJlSW5kZXggc2lnbmF0dXJl
SW5kZXg7CisgICAgdWludDMyX3QgdHlwZUluZGV4SW5Nb2R1bGU7Cit9OworCiBzdHJ1Y3QgRnVu
Y3Rpb25EYXRhIHsKICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgc2l6
ZV90IHN0YXJ0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZ1
bmN0aW9uUGFyc2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRnVuY3Rpb25Q
YXJzZXIuaAppbmRleCA5YmY5NjYzYzhhMzVmZTc5MGZjYzRiZTFiZWQxZjc0NWRhMDE1Mzc0Li4x
YThiYjBmOTJiOWJmYzM3NDk5ZTJhY2Q5MmMyOGM5OGUxNmY0OTk4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRnVuY3Rpb25QYXJzZXIuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRnVuY3Rpb25QYXJzZXIuaApAQCAtMTA4MSwxMSArMTA4
MSw3IEBAIEZPUl9FQUNIX1dBU01fTUVNT1JZX1NUT1JFX09QKENSRUFURV9DQVNFKQogICAgICAg
ICBpZiAoT3B0aW9uczo6dXNlV2ViQXNzZW1ibHlUeXBlZEZ1bmN0aW9uUmVmZXJlbmNlcygpKSB7
CiAgICAgICAgICAgICBpbnQzMl90IGhlYXBUeXBlOwogICAgICAgICAgICAgV0FTTV9QQVJTRVJf
RkFJTF9JRighcGFyc2VIZWFwVHlwZShtX2luZm8sIGhlYXBUeXBlKSwgInJlZi5udWxsIGhlYXB0
eXBlIG11c3QgYmUgZnVuY3JlZiwgZXh0ZXJucmVmIG9yIHR5cGVfaWR4Iik7Ci0gICAgICAgICAg
ICBpZiAoaXNUeXBlSW5kZXhIZWFwVHlwZShoZWFwVHlwZSkpIHsKLSAgICAgICAgICAgICAgICBT
aWduYXR1cmVJbmRleCBzaWduYXR1cmVJbmRleCA9IFNpZ25hdHVyZUluZm9ybWF0aW9uOjpnZXQo
bV9pbmZvLnVzZWRTaWduYXR1cmVzW2hlYXBUeXBlXS5nZXQoKSk7Ci0gICAgICAgICAgICAgICAg
dHlwZU9mTnVsbCA9IFR5cGUgeyBUeXBlS2luZDo6UmVmTnVsbCwgTnVsbGFibGU6Olllcywgc2ln
bmF0dXJlSW5kZXggfTsKLSAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIHR5cGVP
Zk51bGwgPSBUeXBlIHsgVHlwZUtpbmQ6OlJlZk51bGwsIE51bGxhYmxlOjpZZXMsIHN0YXRpY19j
YXN0PFNpZ25hdHVyZUluZGV4PihoZWFwVHlwZSkgfTsKKyAgICAgICAgICAgIHR5cGVPZk51bGwg
PSBUeXBlIHsgVHlwZUtpbmQ6OlJlZk51bGwsIE51bGxhYmxlOjpZZXMsIHN0YXRpY19jYXN0PHVp
bnQzMl90PihoZWFwVHlwZSkgfTsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBXQVNNX1BB
UlNFUl9GQUlMX0lGKCFwYXJzZVJlZlR5cGUobV9pbmZvLCB0eXBlT2ZOdWxsKSwgInJlZi5udWxs
IHR5cGUgbXVzdCBiZSBhIHJlZmVyZW5jZSB0eXBlIik7CiAgICAgICAgIG1fZXhwcmVzc2lvblN0
YWNrLmNvbnN0cnVjdEFuZEFwcGVuZCh0eXBlT2ZOdWxsLCBtX2NvbnRleHQuYWRkQ29uc3RhbnQo
dHlwZU9mTnVsbCwgSlNWYWx1ZTo6ZW5jb2RlKGpzTnVsbCgpKSkpOwpAQCAtMTExMyw4ICsxMTA5
LDcgQEAgRk9SX0VBQ0hfV0FTTV9NRU1PUllfU1RPUkVfT1AoQ1JFQVRFX0NBU0UpCiAgICAgICAg
IFdBU01fVFJZX0FERF9UT19DT05URVhUKGFkZFJlZkZ1bmMoaW5kZXgsIHJlc3VsdCkpOwogCiAg
ICAgICAgIGlmIChPcHRpb25zOjp1c2VXZWJBc3NlbWJseVR5cGVkRnVuY3Rpb25SZWZlcmVuY2Vz
KCkpIHsKLSAgICAgICAgICAgIFNpZ25hdHVyZUluZGV4IHNpZ25hdHVyZUluZGV4ID0gbV9pbmZv
LnNpZ25hdHVyZUluZGV4RnJvbUZ1bmN0aW9uSW5kZXhTcGFjZShpbmRleCk7Ci0gICAgICAgICAg
ICBtX2V4cHJlc3Npb25TdGFjay5jb25zdHJ1Y3RBbmRBcHBlbmQoVHlwZSB7IFR5cGVLaW5kOjpS
ZWYsIE51bGxhYmxlOjpObywgc2lnbmF0dXJlSW5kZXggfSwgcmVzdWx0KTsKKyAgICAgICAgICAg
IG1fZXhwcmVzc2lvblN0YWNrLmNvbnN0cnVjdEFuZEFwcGVuZChUeXBlIHsgVHlwZUtpbmQ6OlJl
ZiwgTnVsbGFibGU6Ok5vLCBtX2luZm8uZ2V0VHlwZUluZGV4Rm9yRnVuY3Rpb24oaW5kZXgpIH0s
IHJlc3VsdCk7CiAgICAgICAgICAgICByZXR1cm4geyB9OwogICAgICAgICB9CiAKQEAgLTEyNTgs
OCArMTI1Myw4IEBAIEZPUl9FQUNIX1dBU01fTUVNT1JZX1NUT1JFX09QKENSRUFURV9DQVNFKQog
ICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFPcHRpb25zOjp1c2VXZWJBc3NlbWJseVR5cGVk
RnVuY3Rpb25SZWZlcmVuY2VzKCksICJmdW5jdGlvbiByZWZlcmVuY2VzIGFyZSBub3QgZW5hYmxl
ZCIpOwogICAgICAgICBXQVNNX1ZBTElEQVRPUl9GQUlMX0lGKCFpc1JlZldpdGhUeXBlSW5kZXgo
bV9leHByZXNzaW9uU3RhY2subGFzdCgpLnR5cGUoKSksICJub24tZnVuY3JlZiBjYWxsX3JlZiB2
YWx1ZSAiLCBtX2V4cHJlc3Npb25TdGFjay5sYXN0KCkudHlwZSgpLmtpbmQpOwogCi0gICAgICAg
IGNvbnN0IFNpZ25hdHVyZUluZGV4IGNhbGxlZVNpZ25hdHVyZUluZGV4ID0gbV9leHByZXNzaW9u
U3RhY2subGFzdCgpLnR5cGUoKS5pbmRleDsKLSAgICAgICAgY29uc3QgU2lnbmF0dXJlJiBjYWxs
ZWVTaWduYXR1cmUgPSBTaWduYXR1cmVJbmZvcm1hdGlvbjo6Z2V0KGNhbGxlZVNpZ25hdHVyZUlu
ZGV4KTsKKyAgICAgICAgY29uc3QgYXV0byBjYWxsZWVTaWduYXR1cmVJbmRleCA9IG1fZXhwcmVz
c2lvblN0YWNrLmxhc3QoKS50eXBlKCkudHlwZUluZGV4SW5Nb2R1bGU7CisgICAgICAgIGNvbnN0
IFNpZ25hdHVyZSYgY2FsbGVlU2lnbmF0dXJlID0gbV9pbmZvLnVzZWRTaWduYXR1cmVzW2NhbGxl
ZVNpZ25hdHVyZUluZGV4XS5nZXQoKTsKICAgICAgICAgc2l6ZV90IGFyZ3VtZW50Q291bnQgPSBj
YWxsZWVTaWduYXR1cmUuYXJndW1lbnRDb3VudCgpICsgMTsgLy8gQWRkIHRoZSBjYWxsZWUncyB2
YWx1ZS4KICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRihhcmd1bWVudENvdW50ID4gbV9leHBy
ZXNzaW9uU3RhY2suc2l6ZSgpLCAiY2FsbF9yZWYgZXhwZWN0cyAiLCBhcmd1bWVudENvdW50LCAi
IGFyZ3VtZW50cywgYnV0IHRoZSBleHByZXNzaW9uIHN0YWNrIGN1cnJlbnRseSBob2xkcyAiLCBt
X2V4cHJlc3Npb25TdGFjay5zaXplKCksICIgdmFsdWVzIik7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21HbG9iYWwuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbUdsb2JhbC5jcHAKaW5kZXggY2IzZDE2M2JiZTA4YjZhNTc1OGNkOWRjMjhk
ZTA2OGExZGU1NmYxNy4uOTdkNGIxNzY1MDIyNGM1ZmEzNzM0YTFiMTcxZGNkMjJmOGUxMDA0YiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUdsb2JhbC5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUdsb2JhbC5jcHAKQEAgLTEwNCw3ICsx
MDQsNyBAQCB2b2lkIEdsb2JhbDo6c2V0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
VmFsdWUgYXJndW1lbnQpCiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmIChpc1JlZldp
dGhUeXBlSW5kZXgobV90eXBlKSAmJiAhYXJndW1lbnQuaXNOdWxsKCkpIHsKLSAgICAgICAgICAg
ICAgICBXYXNtOjpTaWduYXR1cmVJbmRleCBwYXJhbUluZGV4ID0gbV90eXBlLmluZGV4OworICAg
ICAgICAgICAgICAgIFdhc206OlNpZ25hdHVyZUluZGV4IHBhcmFtSW5kZXggPSBtX3R5cGUudHlw
ZUluZGV4SW5Nb2R1bGU7CiAgICAgICAgICAgICAgICAgV2FzbTo6U2lnbmF0dXJlSW5kZXggYXJn
SW5kZXggPSB3YXNtRnVuY3Rpb24gPyB3YXNtRnVuY3Rpb24tPnNpZ25hdHVyZUluZGV4KCkgOiB3
YXNtV3JhcHBlckZ1bmN0aW9uLT5zaWduYXR1cmVJbmRleCgpOwogICAgICAgICAgICAgICAgIGlm
IChwYXJhbUluZGV4ICE9IGFyZ0luZGV4KSB7CiAgICAgICAgICAgICAgICAgICAgIHRocm93RXhj
ZXB0aW9uKGdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgY3JlYXRlSlNXZWJBc3NlbWJseVJ1bnRp
bWVFcnJvcihnbG9iYWxPYmplY3QsIHZtLCAiQXJndW1lbnQgZnVuY3Rpb24gZGlkIG5vdCBtYXRj
aCB0aGUgcmVmZXJlbmNlIHR5cGUiKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtTExJbnRQbGFuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21MTEludFBsYW4uY3BwCmluZGV4IGFlMTVmOGRlZGZiZTAxOTkwMTc5Y2VkM2MxZDJmMDc0MGRi
YzhkNjYuLjgxYzAwMDUyY2Q4NGRiMTUxMmU2ZDkxZmQ3MGFkNjY4YmIyNzE2MmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21MTEludFBsYW4uY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21MTEludFBsYW4uY3BwCkBAIC03OSw3ICs3OSw3
IEBAIGJvb2wgTExJbnRQbGFuOjpwcmVwYXJlSW1wbCgpCiB2b2lkIExMSW50UGxhbjo6Y29tcGls
ZUZ1bmN0aW9uKHVpbnQzMl90IGZ1bmN0aW9uSW5kZXgpCiB7CiAgICAgY29uc3QgYXV0byYgZnVu
Y3Rpb24gPSBtX21vZHVsZUluZm9ybWF0aW9uLT5mdW5jdGlvbnNbZnVuY3Rpb25JbmRleF07Ci0g
ICAgU2lnbmF0dXJlSW5kZXggc2lnbmF0dXJlSW5kZXggPSBtX21vZHVsZUluZm9ybWF0aW9uLT5p
bnRlcm5hbEZ1bmN0aW9uU2lnbmF0dXJlSW5kaWNlc1tmdW5jdGlvbkluZGV4XTsKKyAgICBTaWdu
YXR1cmVJbmRleCBzaWduYXR1cmVJbmRleCA9IG1fbW9kdWxlSW5mb3JtYXRpb24tPmludGVybmFs
RnVuY3Rpb25TaWduYXR1cmVJbmRpY2VzW2Z1bmN0aW9uSW5kZXhdLnNpZ25hdHVyZUluZGV4Owog
ICAgIGNvbnN0IFNpZ25hdHVyZSYgc2lnbmF0dXJlID0gU2lnbmF0dXJlSW5mb3JtYXRpb246Omdl
dChzaWduYXR1cmVJbmRleCk7CiAgICAgdW5zaWduZWQgZnVuY3Rpb25JbmRleFNwYWNlID0gbV93
YXNtVG9XYXNtRXhpdFN0dWJzLnNpemUoKSArIGZ1bmN0aW9uSW5kZXg7CiAgICAgQVNTRVJUX1VO
VVNFRChmdW5jdGlvbkluZGV4U3BhY2UsIG1fbW9kdWxlSW5mb3JtYXRpb24tPnNpZ25hdHVyZUlu
ZGV4RnJvbUZ1bmN0aW9uSW5kZXhTcGFjZShmdW5jdGlvbkluZGV4U3BhY2UpID09IHNpZ25hdHVy
ZUluZGV4KTsKQEAgLTE0OCw3ICsxNDgsNyBAQCB2b2lkIExMSW50UGxhbjo6ZGlkQ29tcGxldGVD
b21waWxhdGlvbigpCiAKICAgICBmb3IgKHVpbnQzMl90IGZ1bmN0aW9uSW5kZXggPSAwOyBmdW5j
dGlvbkluZGV4IDwgbV9tb2R1bGVJbmZvcm1hdGlvbi0+ZnVuY3Rpb25zLnNpemUoKTsgZnVuY3Rp
b25JbmRleCsrKSB7CiAgICAgICAgIGlmIChtX2V4cG9ydGVkRnVuY3Rpb25JbmRpY2VzLmNvbnRh
aW5zKGZ1bmN0aW9uSW5kZXgpIHx8IG1fbW9kdWxlSW5mb3JtYXRpb24tPnJlZmVyZW5jZWRGdW5j
dGlvbnMoKS5jb250YWlucyhmdW5jdGlvbkluZGV4KSkgewotICAgICAgICAgICAgU2lnbmF0dXJl
SW5kZXggc2lnbmF0dXJlSW5kZXggPSBtX21vZHVsZUluZm9ybWF0aW9uLT5pbnRlcm5hbEZ1bmN0
aW9uU2lnbmF0dXJlSW5kaWNlc1tmdW5jdGlvbkluZGV4XTsKKyAgICAgICAgICAgIFNpZ25hdHVy
ZUluZGV4IHNpZ25hdHVyZUluZGV4ID0gbV9tb2R1bGVJbmZvcm1hdGlvbi0+aW50ZXJuYWxGdW5j
dGlvblNpZ25hdHVyZUluZGljZXNbZnVuY3Rpb25JbmRleF0uc2lnbmF0dXJlSW5kZXg7CiAgICAg
ICAgICAgICBjb25zdCBTaWduYXR1cmUmIHNpZ25hdHVyZSA9IFNpZ25hdHVyZUluZm9ybWF0aW9u
OjpnZXQoc2lnbmF0dXJlSW5kZXgpOwogICAgICAgICAgICAgQ0NhbGxIZWxwZXJzIGppdDsKICAg
ICAgICAgICAgIC8vIFRoZSBMTEludCBhbHdheXMgYm91bmRzIGNoZWNrcwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1vZHVsZS5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV2FzbU1vZHVsZS5oCmluZGV4IDYyYzY5MjdmMmM5YTk4MWI4NDBkY2Q2OWM2
YmRiMGQ0MzRjZGQ5YmYuLmY1NzhlMWUzYTdlNThkYjdmZTk5OWMwODM0ZDk2NmVkNmIxYTI4OTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Nb2R1bGUuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTW9kdWxlLmgKQEAgLTMwLDcgKzMwLDYg
QEAKICNpbmNsdWRlICJXYXNtQ2FsbGVlR3JvdXAuaCIKICNpbmNsdWRlICJXYXNtRW1iZWRkZXIu
aCIKICNpbmNsdWRlICJXYXNtTWVtb3J5LmgiCi0jaW5jbHVkZSAiV2FzbU9wcy5oIgogI2luY2x1
ZGUgPHd0Zi9FeHBlY3RlZC5oPgogI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CiAjaW5jbHVkZSA8d3Rm
L1NoYXJlZFRhc2suaD4KQEAgLTQxLDYgKzQwLDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFj
ZSBXYXNtIHsKIGNsYXNzIExMSW50UGxhbjsKIHN0cnVjdCBDb250ZXh0Owogc3RydWN0IE1vZHVs
ZUluZm9ybWF0aW9uOwordXNpbmcgU2lnbmF0dXJlSW5kZXggPSB1aW50cHRyX3Q7CiAKIGNsYXNz
IE1vZHVsZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxNb2R1bGU+IHsKIHB1YmxpYzoK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Nb2R1bGVJbmZvcm1h
dGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1vZHVsZUluZm9ybWF0aW9u
LmgKaW5kZXggYWU2YmJlZWRmMjE4NjE5NDNiODkwZjcyMzE1M2M3ODg4Y2ZjNDk2Ny4uNTVmNmY0
YzgxYjE4MzZiOGVlN2JkNWM4MDIwMGZjYzdjN2MwNjc5NyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2FzbU1vZHVsZUluZm9ybWF0aW9uLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2FzbU1vZHVsZUluZm9ybWF0aW9uLmgKQEAgLTU5LDggKzU5LDgg
QEAgc3RydWN0IE1vZHVsZUluZm9ybWF0aW9uIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVk
PE1vZHVsZUluZm9ybWF0aW9uPiB7CiAgICAgU2lnbmF0dXJlSW5kZXggc2lnbmF0dXJlSW5kZXhG
cm9tRnVuY3Rpb25JbmRleFNwYWNlKHNpemVfdCBmdW5jdGlvbkluZGV4KSBjb25zdAogICAgIHsK
ICAgICAgICAgcmV0dXJuIGlzSW1wb3J0ZWRGdW5jdGlvbkZyb21GdW5jdGlvbkluZGV4U3BhY2Uo
ZnVuY3Rpb25JbmRleCkKLSAgICAgICAgICAgID8gaW1wb3J0RnVuY3Rpb25TaWduYXR1cmVJbmRp
Y2VzW2Z1bmN0aW9uSW5kZXhdCi0gICAgICAgICAgICA6IGludGVybmFsRnVuY3Rpb25TaWduYXR1
cmVJbmRpY2VzW2Z1bmN0aW9uSW5kZXggLSBpbXBvcnRGdW5jdGlvblNpZ25hdHVyZUluZGljZXMu
c2l6ZSgpXTsKKyAgICAgICAgICAgID8gaW1wb3J0RnVuY3Rpb25TaWduYXR1cmVJbmRpY2VzW2Z1
bmN0aW9uSW5kZXhdLnNpZ25hdHVyZUluZGV4CisgICAgICAgICAgICA6IGludGVybmFsRnVuY3Rp
b25TaWduYXR1cmVJbmRpY2VzW2Z1bmN0aW9uSW5kZXggLSBpbXBvcnRGdW5jdGlvblNpZ25hdHVy
ZUluZGljZXMuc2l6ZSgpXS5zaWduYXR1cmVJbmRleDsKICAgICB9CiAKICAgICBzaXplX3QgZXhj
ZXB0aW9uSW5kZXhTcGFjZVNpemUoKSBjb25zdCB7IHJldHVybiBpbXBvcnRFeGNlcHRpb25TaWdu
YXR1cmVJbmRpY2VzLnNpemUoKSArIGludGVybmFsRXhjZXB0aW9uU2lnbmF0dXJlSW5kaWNlcy5z
aXplKCk7IH0KQEAgLTk5LDYgKzk5LDEzIEBAIHN0cnVjdCBNb2R1bGVJbmZvcm1hdGlvbiA6IHB1
YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxNb2R1bGVJbmZvcm1hdGlvbj4gewogICAgIGJvb2wg
aXNEZWNsYXJlZEV4Y2VwdGlvbih1aW50MzJfdCBpbmRleCkgY29uc3QgeyByZXR1cm4gbV9kZWNs
YXJlZEV4Y2VwdGlvbnMuY29udGFpbnMoaW5kZXgpOyB9CiAgICAgdm9pZCBhZGREZWNsYXJlZEV4
Y2VwdGlvbih1aW50MzJfdCBpbmRleCkgeyBtX2RlY2xhcmVkRXhjZXB0aW9ucy5zZXQoaW5kZXgp
OyB9CiAKKyAgICB1aW50MzJfdCBnZXRUeXBlSW5kZXhGb3JGdW5jdGlvbih1aW50MzJfdCBmdW5j
dGlvbkluZGV4KSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKGlzSW1wb3J0ZWRGdW5jdGlvbkZy
b21GdW5jdGlvbkluZGV4U3BhY2UoZnVuY3Rpb25JbmRleCkpCisgICAgICAgICAgICByZXR1cm4g
aW1wb3J0RnVuY3Rpb25TaWduYXR1cmVJbmRpY2VzW2Z1bmN0aW9uSW5kZXhdLnR5cGVJbmRleElu
TW9kdWxlOworICAgICAgICByZXR1cm4gaW50ZXJuYWxGdW5jdGlvblNpZ25hdHVyZUluZGljZXNb
ZnVuY3Rpb25JbmRleCAtIGltcG9ydEZ1bmN0aW9uU2lnbmF0dXJlSW5kaWNlcy5zaXplKCldLnR5
cGVJbmRleEluTW9kdWxlOworICAgIH0KKwogICAgIGJvb2wgaGFzTWVtb3J5SW1wb3J0KCkgY29u
c3QgeyByZXR1cm4gbWVtb3J5LmlzSW1wb3J0KCk7IH0KIAogICAgIEJyYW5jaEhpbnQgZ2V0QnJh
bmNoSGludCh1aW50MzJfdCBmdW5jdGlvbk9mZnNldCwgdWludDMyX3QgYnJhbmNoT2Zmc2V0KSBj
b25zdApAQCAtMTEwLDggKzExNyw4IEBAIHN0cnVjdCBNb2R1bGVJbmZvcm1hdGlvbiA6IHB1Ymxp
YyBUaHJlYWRTYWZlUmVmQ291bnRlZDxNb2R1bGVJbmZvcm1hdGlvbj4gewogICAgIH0KIAogICAg
IFZlY3RvcjxJbXBvcnQ+IGltcG9ydHM7Ci0gICAgVmVjdG9yPFNpZ25hdHVyZUluZGV4PiBpbXBv
cnRGdW5jdGlvblNpZ25hdHVyZUluZGljZXM7Ci0gICAgVmVjdG9yPFNpZ25hdHVyZUluZGV4PiBp
bnRlcm5hbEZ1bmN0aW9uU2lnbmF0dXJlSW5kaWNlczsKKyAgICBWZWN0b3I8RnVuY3Rpb25EZXNj
cmlwdGlvbj4gaW1wb3J0RnVuY3Rpb25TaWduYXR1cmVJbmRpY2VzOworICAgIFZlY3RvcjxGdW5j
dGlvbkRlc2NyaXB0aW9uPiBpbnRlcm5hbEZ1bmN0aW9uU2lnbmF0dXJlSW5kaWNlczsKICAgICBW
ZWN0b3I8U2lnbmF0dXJlSW5kZXg+IGltcG9ydEV4Y2VwdGlvblNpZ25hdHVyZUluZGljZXM7CiAg
ICAgVmVjdG9yPFNpZ25hdHVyZUluZGV4PiBpbnRlcm5hbEV4Y2VwdGlvblNpZ25hdHVyZUluZGlj
ZXM7CiAgICAgVmVjdG9yPFJlZjxTaWduYXR1cmU+PiB1c2VkU2lnbmF0dXJlczsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21PTUdQbGFuLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dhc21PTUdQbGFuLmNwcAppbmRleCAyNTEyNTFmOGFhZTE5YWUw
NzA1MjE2YzA5MThkMGVlMjI5ZjE1YmM5Li4wYzRiODc0MWE4YTU4MTVkNDA0ZWFlNzdkZWU1YTY3
YzRjYTI3Y2NhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtT01H
UGxhbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU9NR1BsYW4uY3Bw
CkBAIC02OCw3ICs2OCw3IEBAIHZvaWQgT01HUGxhbjo6d29yayhDb21waWxhdGlvbkVmZm9ydCkK
ICAgICBjb25zdCB1aW50MzJfdCBmdW5jdGlvbkluZGV4U3BhY2UgPSBtX2Z1bmN0aW9uSW5kZXgg
KyBtX21vZHVsZS0+bW9kdWxlSW5mb3JtYXRpb24oKS5pbXBvcnRGdW5jdGlvbkNvdW50KCk7CiAg
ICAgQVNTRVJUKGZ1bmN0aW9uSW5kZXhTcGFjZSA8IG1fbW9kdWxlLT5tb2R1bGVJbmZvcm1hdGlv
bigpLmZ1bmN0aW9uSW5kZXhTcGFjZVNpemUoKSk7CiAKLSAgICBTaWduYXR1cmVJbmRleCBzaWdu
YXR1cmVJbmRleCA9IG1fbW9kdWxlSW5mb3JtYXRpb24tPmludGVybmFsRnVuY3Rpb25TaWduYXR1
cmVJbmRpY2VzW21fZnVuY3Rpb25JbmRleF07CisgICAgU2lnbmF0dXJlSW5kZXggc2lnbmF0dXJl
SW5kZXggPSBtX21vZHVsZUluZm9ybWF0aW9uLT5pbnRlcm5hbEZ1bmN0aW9uU2lnbmF0dXJlSW5k
aWNlc1ttX2Z1bmN0aW9uSW5kZXhdLnNpZ25hdHVyZUluZGV4OwogICAgIGNvbnN0IFNpZ25hdHVy
ZSYgc2lnbmF0dXJlID0gU2lnbmF0dXJlSW5mb3JtYXRpb246OmdldChzaWduYXR1cmVJbmRleCk7
CiAKICAgICBWZWN0b3I8VW5saW5rZWRXYXNtVG9XYXNtQ2FsbD4gdW5saW5rZWRDYWxsczsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21PU1JFbnRyeVBsYW4uY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU9TUkVudHJ5UGxhbi5jcHAKaW5kZXgg
ZTJlNWNlNTdmNTBlMDM2YzZlYjY4MzMxYTgzZWVjMWFlMDY0YmEyNC4uNDAwNGJiNmVlNmMyYmJk
ZWNmNDFhZmRiM2IwMWM1Mzk4OGRiZDhhZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbU9TUkVudHJ5UGxhbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbU9TUkVudHJ5UGxhbi5jcHAKQEAgLTcwLDcgKzcwLDcgQEAgdm9pZCBPU1JFbnRy
eVBsYW46OndvcmsoQ29tcGlsYXRpb25FZmZvcnQpCiAgICAgY29uc3QgdWludDMyX3QgZnVuY3Rp
b25JbmRleFNwYWNlID0gbV9mdW5jdGlvbkluZGV4ICsgbV9tb2R1bGUtPm1vZHVsZUluZm9ybWF0
aW9uKCkuaW1wb3J0RnVuY3Rpb25Db3VudCgpOwogICAgIEFTU0VSVChmdW5jdGlvbkluZGV4U3Bh
Y2UgPCBtX21vZHVsZS0+bW9kdWxlSW5mb3JtYXRpb24oKS5mdW5jdGlvbkluZGV4U3BhY2VTaXpl
KCkpOwogCi0gICAgU2lnbmF0dXJlSW5kZXggc2lnbmF0dXJlSW5kZXggPSBtX21vZHVsZUluZm9y
bWF0aW9uLT5pbnRlcm5hbEZ1bmN0aW9uU2lnbmF0dXJlSW5kaWNlc1ttX2Z1bmN0aW9uSW5kZXhd
OworICAgIFNpZ25hdHVyZUluZGV4IHNpZ25hdHVyZUluZGV4ID0gbV9tb2R1bGVJbmZvcm1hdGlv
bi0+aW50ZXJuYWxGdW5jdGlvblNpZ25hdHVyZUluZGljZXNbbV9mdW5jdGlvbkluZGV4XS5zaWdu
YXR1cmVJbmRleDsKICAgICBjb25zdCBTaWduYXR1cmUmIHNpZ25hdHVyZSA9IFNpZ25hdHVyZUlu
Zm9ybWF0aW9uOjpnZXQoc2lnbmF0dXJlSW5kZXgpOwogCiAgICAgQ29tcGlsYXRpb25Nb2RlIHRh
cmdldENvbXBpbGF0aW9uTW9kZSA9IG1fY2FsbGVlLT5jb21waWxhdGlvbk1vZGUoKSA9PSBDb21w
aWxhdGlvbk1vZGU6OkxMSW50TW9kZSA/IENvbXBpbGF0aW9uTW9kZTo6QkJRRm9yT1NSRW50cnlN
b2RlIDogQ29tcGlsYXRpb25Nb2RlOjpPTUdGb3JPU1JFbnRyeU1vZGU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtUGFyc2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtUGFyc2VyLmgKaW5kZXggZWQwMGQ5YTBhNDJiNzlhZGMxZjNjOGFiMGYz
NDZmYzRmNmRhODlhZS4uNDZkNzRlYWJjZTQ5YWUxZTg0NjYxNzMyNGFjMWU2MzdjZDE1YWZmZSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVBhcnNlci5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21QYXJzZXIuaApAQCAtMzMwLDIwICszMzAs
MjAgQEAgQUxXQVlTX0lOTElORSBib29sIFBhcnNlcjxTdWNjZXNzVHlwZT46OnBhcnNlVmFsdWVU
eXBlKGNvbnN0IE1vZHVsZUluZm9ybWF0aW9uJgogCiAgICAgVHlwZUtpbmQgdHlwZUtpbmQgPSBz
dGF0aWNfY2FzdDxUeXBlS2luZD4oa2luZCk7CiAgICAgYm9vbCBpc051bGxhYmxlID0gdHJ1ZTsK
LSAgICBTaWduYXR1cmVJbmRleCBzaWdJbmRleCA9IDA7CisgICAgdW5zaWduZWQgdHlwZUluZGV4
ID0gMDsKIAogICAgIGlmIChPcHRpb25zOjp1c2VXZWJBc3NlbWJseVR5cGVkRnVuY3Rpb25SZWZl
cmVuY2VzKCkgJiYgKHR5cGVLaW5kID09IFR5cGVLaW5kOjpGdW5jcmVmIHx8IHR5cGVLaW5kID09
IFR5cGVLaW5kOjpFeHRlcm5yZWYpKSB7Ci0gICAgICAgIHNpZ0luZGV4ID0gc3RhdGljX2Nhc3Q8
U2lnbmF0dXJlSW5kZXg+KHR5cGVLaW5kKTsKKyAgICAgICAgdHlwZUluZGV4ID0gc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KHR5cGVLaW5kKTsKICAgICAgICAgdHlwZUtpbmQgPSBUeXBlS2luZDo6UmVm
TnVsbDsKICAgICB9IGVsc2UgaWYgKHR5cGVLaW5kID09IFR5cGVLaW5kOjpSZWYgfHwgdHlwZUtp
bmQgPT0gVHlwZUtpbmQ6OlJlZk51bGwpIHsKICAgICAgICAgaXNOdWxsYWJsZSA9IHR5cGVLaW5k
ID09IFR5cGVLaW5kOjpSZWZOdWxsOwogICAgICAgICBpbnQzMl90IGhlYXBUeXBlOwogICAgICAg
ICBpZiAoIXBhcnNlSGVhcFR5cGUoaW5mbywgaGVhcFR5cGUpKQogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgICAgICBzaWdJbmRleCA9IGhlYXBUeXBlIDwgMCA/IHN0YXRpY19jYXN0PFNp
Z25hdHVyZUluZGV4PihoZWFwVHlwZSkgOiBTaWduYXR1cmVJbmZvcm1hdGlvbjo6Z2V0KGluZm8u
dXNlZFNpZ25hdHVyZXNbaGVhcFR5cGVdLmdldCgpKTsKKyAgICAgICAgdHlwZUluZGV4ID0gc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KGhlYXBUeXBlKTsKICAgICB9CiAKLSAgICBUeXBlIHR5cGUgPSB7
IHR5cGVLaW5kLCBzdGF0aWNfY2FzdDxOdWxsYWJsZT4oaXNOdWxsYWJsZSksIHNpZ0luZGV4IH07
CisgICAgVHlwZSB0eXBlID0geyB0eXBlS2luZCwgc3RhdGljX2Nhc3Q8TnVsbGFibGU+KGlzTnVs
bGFibGUpLCB0eXBlSW5kZXggfTsKICAgICBpZiAoIWlzVmFsdWVUeXBlKHR5cGUpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgcmVzdWx0ID0gdHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dhc21TZWN0aW9uUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dhc21TZWN0aW9uUGFyc2VyLmNwcAppbmRleCA1YjUxMTgxMTBlNTJkMmJk
MDc4Y2IwMmU5ODk5OTcyZDJmYThiNGUzLi5mNTYyYWRkNDRhNWZjYzA4Nzc0M2Q5Yjk1Y2FmY2Vl
OWEyMjQxMzZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2Vj
dGlvblBhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNlY3Rp
b25QYXJzZXIuY3BwCkBAIC0xMTcsNyArMTE3LDcgQEAgYXV0byBTZWN0aW9uUGFyc2VyOjpwYXJz
ZUltcG9ydCgpIC0+IFBhcnRpYWxSZXN1bHQKICAgICAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxf
SUYoZnVuY3Rpb25TaWduYXR1cmVJbmRleCA+PSBtX2luZm8tPnVzZWRTaWduYXR1cmVzLnNpemUo
KSwgImludmFsaWQgZnVuY3Rpb24gc2lnbmF0dXJlIGZvciAiLCBpbXBvcnROdW1iZXIsICJ0aCBJ
bXBvcnQsICIsIGZ1bmN0aW9uU2lnbmF0dXJlSW5kZXgsICIgaXMgb3V0IG9mIHJhbmdlIG9mICIs
IG1faW5mby0+dXNlZFNpZ25hdHVyZXMuc2l6ZSgpLCAiIGluIG1vZHVsZSAnIiwgbW9kdWxlU3Ry
aW5nLCAiJyBmaWVsZCAnIiwgZmllbGRTdHJpbmcsICInIik7CiAgICAgICAgICAgICBraW5kSW5k
ZXggPSBtX2luZm8tPmltcG9ydEZ1bmN0aW9uU2lnbmF0dXJlSW5kaWNlcy5zaXplKCk7CiAgICAg
ICAgICAgICBTaWduYXR1cmVJbmRleCBzaWduYXR1cmVJbmRleCA9IFNpZ25hdHVyZUluZm9ybWF0
aW9uOjpnZXQobV9pbmZvLT51c2VkU2lnbmF0dXJlc1tmdW5jdGlvblNpZ25hdHVyZUluZGV4XSk7
Ci0gICAgICAgICAgICBtX2luZm8tPmltcG9ydEZ1bmN0aW9uU2lnbmF0dXJlSW5kaWNlcy51bmNo
ZWNrZWRBcHBlbmQoc2lnbmF0dXJlSW5kZXgpOworICAgICAgICAgICAgbV9pbmZvLT5pbXBvcnRG
dW5jdGlvblNpZ25hdHVyZUluZGljZXMudW5jaGVja2VkQXBwZW5kKEZ1bmN0aW9uRGVzY3JpcHRp
b24geyBzaWduYXR1cmVJbmRleCwgZnVuY3Rpb25TaWduYXR1cmVJbmRleCB9KTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRXh0ZXJuYWxLaW5kOjpUYWJsZTog
ewpAQCAtMTg2LDcgKzE4Niw3IEBAIGF1dG8gU2VjdGlvblBhcnNlcjo6cGFyc2VGdW5jdGlvbigp
IC0+IFBhcnRpYWxSZXN1bHQKICAgICAgICAgLy8gVGhlIENvZGUgc2VjdGlvbiBmaXhlcyB1cCBz
dGFydCBhbmQgZW5kLgogICAgICAgICBzaXplX3Qgc3RhcnQgPSAwOwogICAgICAgICBzaXplX3Qg
ZW5kID0gMDsKLSAgICAgICAgbV9pbmZvLT5pbnRlcm5hbEZ1bmN0aW9uU2lnbmF0dXJlSW5kaWNl
cy51bmNoZWNrZWRBcHBlbmQoc2lnbmF0dXJlSW5kZXgpOworICAgICAgICBtX2luZm8tPmludGVy
bmFsRnVuY3Rpb25TaWduYXR1cmVJbmRpY2VzLnVuY2hlY2tlZEFwcGVuZChGdW5jdGlvbkRlc2Ny
aXB0aW9uIHsgc2lnbmF0dXJlSW5kZXgsIHR5cGVOdW1iZXIgfSk7CiAgICAgICAgIG1faW5mby0+
ZnVuY3Rpb25zLnVuY2hlY2tlZEFwcGVuZCh7IHN0YXJ0LCBlbmQsIFZlY3Rvcjx1aW50OF90Pigp
IH0pOwogICAgIH0KIApAQCAtNjIyLDExICs2MjIsNyBAQCBhdXRvIFNlY3Rpb25QYXJzZXI6OnBh
cnNlSW5pdEV4cHIodWludDhfdCYgb3Bjb2RlLCB1aW50NjRfdCYgYml0c09ySW1wb3J0TnVtYmVy
LAogICAgICAgICBpZiAoT3B0aW9uczo6dXNlV2ViQXNzZW1ibHlUeXBlZEZ1bmN0aW9uUmVmZXJl
bmNlcygpKSB7CiAgICAgICAgICAgICBpbnQzMl90IGhlYXBUeXBlOwogICAgICAgICAgICAgV0FT
TV9QQVJTRVJfRkFJTF9JRighcGFyc2VIZWFwVHlwZShtX2luZm8sIGhlYXBUeXBlKSwgInJlZi5u
dWxsIGhlYXB0eXBlIG11c3QgYmUgZnVuY3JlZiwgZXh0ZXJucmVmIG9yIHR5cGVfaWR4Iik7Ci0g
ICAgICAgICAgICBpZiAoaXNUeXBlSW5kZXhIZWFwVHlwZShoZWFwVHlwZSkpIHsKLSAgICAgICAg
ICAgICAgICBTaWduYXR1cmVJbmRleCBzaWduYXR1cmVJbmRleCA9IFNpZ25hdHVyZUluZm9ybWF0
aW9uOjpnZXQobV9pbmZvLT51c2VkU2lnbmF0dXJlc1toZWFwVHlwZV0uZ2V0KCkpOwotICAgICAg
ICAgICAgICAgIHR5cGVPZk51bGwgPSBUeXBlIHsgVHlwZUtpbmQ6OlJlZk51bGwsIE51bGxhYmxl
OjpZZXMsIHNpZ25hdHVyZUluZGV4IH07Ci0gICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAg
ICAgICB0eXBlT2ZOdWxsID0gVHlwZSB7IFR5cGVLaW5kOjpSZWZOdWxsLCBOdWxsYWJsZTo6WWVz
LCBzdGF0aWNfY2FzdDxTaWduYXR1cmVJbmRleD4oaGVhcFR5cGUpIH07CisgICAgICAgICAgICB0
eXBlT2ZOdWxsID0gVHlwZSB7IFR5cGVLaW5kOjpSZWZOdWxsLCBOdWxsYWJsZTo6WWVzLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oaGVhcFR5cGUpIH07CiAgICAgICAgIH0gZWxzZQogICAgICAgICAg
ICAgV0FTTV9QQVJTRVJfRkFJTF9JRighcGFyc2VSZWZUeXBlKG1faW5mbywgdHlwZU9mTnVsbCks
ICJyZWYubnVsbCB0eXBlIG11c3QgYmUgYSByZWZlcmVuY2UgdHlwZSIpOwogCkBAIC02MzYsMTcg
KzYzMiwxNiBAQCBhdXRvIFNlY3Rpb25QYXJzZXI6OnBhcnNlSW5pdEV4cHIodWludDhfdCYgb3Bj
b2RlLCB1aW50NjRfdCYgYml0c09ySW1wb3J0TnVtYmVyLAogICAgIH0KIAogICAgIGNhc2UgUmVm
RnVuYzogewotICAgICAgICB1aW50MzJfdCBpbmRleDsKLSAgICAgICAgV0FTTV9QQVJTRVJfRkFJ
TF9JRighcGFyc2VWYXJVSW50MzIoaW5kZXgpLCAiY2FuJ3QgZ2V0IHJlZi5mdW5jIGluZGV4Iik7
Ci0gICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoaW5kZXggPj0gbV9pbmZvLT5mdW5jdGlvbnMu
c2l6ZSgpLCAicmVmLmZ1bmMgaW5kZXgiLCBpbmRleCwgIiBleGNlZWRzIHRoZSBudW1iZXIgb2Yg
ZnVuY3Rpb25zICIsIG1faW5mby0+ZnVuY3Rpb25zLnNpemUoKSk7CisgICAgICAgIHVpbnQzMl90
IGZ1bmN0aW9uSW5kZXg7CisgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIXBhcnNlVmFyVUlu
dDMyKGZ1bmN0aW9uSW5kZXgpLCAiY2FuJ3QgZ2V0IHJlZi5mdW5jIGluZGV4Iik7CisgICAgICAg
IFdBU01fUEFSU0VSX0ZBSUxfSUYoZnVuY3Rpb25JbmRleCA+PSBtX2luZm8tPmZ1bmN0aW9ucy5z
aXplKCksICJyZWYuZnVuYyBpbmRleCIsIGZ1bmN0aW9uSW5kZXgsICIgZXhjZWVkcyB0aGUgbnVt
YmVyIG9mIGZ1bmN0aW9ucyAiLCBtX2luZm8tPmZ1bmN0aW9ucy5zaXplKCkpOwogCi0gICAgICAg
IGlmIChPcHRpb25zOjp1c2VXZWJBc3NlbWJseVR5cGVkRnVuY3Rpb25SZWZlcmVuY2VzKCkpIHsK
LSAgICAgICAgICAgIFNpZ25hdHVyZUluZGV4IHNpZ25hdHVyZUluZGV4ID0gbV9pbmZvLT5zaWdu
YXR1cmVJbmRleEZyb21GdW5jdGlvbkluZGV4U3BhY2UoaW5kZXgpOwotICAgICAgICAgICAgcmVz
dWx0VHlwZSA9IHsgVHlwZUtpbmQ6OlJlZiwgTnVsbGFibGU6Ok5vLCBzaWduYXR1cmVJbmRleCB9
OwotICAgICAgICB9IGVsc2UKKyAgICAgICAgaWYgKE9wdGlvbnM6OnVzZVdlYkFzc2VtYmx5VHlw
ZWRGdW5jdGlvblJlZmVyZW5jZXMoKSkKKyAgICAgICAgICAgIHJlc3VsdFR5cGUgPSB7IFR5cGVL
aW5kOjpSZWYsIE51bGxhYmxlOjpObywgbV9pbmZvLT5nZXRUeXBlSW5kZXhGb3JGdW5jdGlvbihm
dW5jdGlvbkluZGV4KSB9OworICAgICAgICBlbHNlCiAgICAgICAgICAgICByZXN1bHRUeXBlID0g
VHlwZXM6OkZ1bmNyZWY7CiAKLSAgICAgICAgYml0c09ySW1wb3J0TnVtYmVyID0gaW5kZXg7Cisg
ICAgICAgIGJpdHNPckltcG9ydE51bWJlciA9IGZ1bmN0aW9uSW5kZXg7CiAgICAgICAgIGJyZWFr
OwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNp
Z25hdHVyZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2lnbmF0dXJlLmNw
cAppbmRleCBmOWE1NjFiODUwZmM1YzE5MzlkMGVmNTllOGE5ZmQyYjYwNTk3OGY5Li40YWIwYmRj
ZDYyZjA3YTI5ODcyYzJhOGZlZjhjOTE5M2M4NzNiNjJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtU2lnbmF0dXJlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtU2lnbmF0dXJlLmNwcApAQCAtNjgsMTIgKzY4LDEyIEBAIHN0YXRpYyB1
bnNpZ25lZCBjb21wdXRlSGFzaChzaXplX3QgcmV0dXJuQ291bnQsIGNvbnN0IFR5cGUqIHJldHVy
blR5cGVzLCBzaXplX3QKICAgICBmb3IgKHVpbnQzMl90IGkgPSAwOyBpIDwgYXJndW1lbnRDb3Vu
dDsgKytpKSB7CiAgICAgICAgIGFjY3VtdWxhdG9yID0gV1RGOjpwYWlySW50SGFzaChhY2N1bXVs
YXRvciwgV1RGOjpJbnRIYXNoPHVpbnQ4X3Q+OjpoYXNoKHN0YXRpY19jYXN0PHVpbnQ4X3Q+KGFy
Z3VtZW50VHlwZXNbaV0ua2luZCkpKTsKICAgICAgICAgYWNjdW11bGF0b3IgPSBXVEY6OnBhaXJJ
bnRIYXNoKGFjY3VtdWxhdG9yLCBXVEY6OkludEhhc2g8dWludDhfdD46Omhhc2goc3RhdGljX2Nh
c3Q8dWludDhfdD4oYXJndW1lbnRUeXBlc1tpXS5udWxsYWJsZSkpKTsKLSAgICAgICAgYWNjdW11
bGF0b3IgPSBXVEY6OnBhaXJJbnRIYXNoKGFjY3VtdWxhdG9yLCBXVEY6OkludEhhc2g8dW5zaWdu
ZWQ+OjpoYXNoKGFyZ3VtZW50VHlwZXNbaV0uaW5kZXgpKTsKKyAgICAgICAgYWNjdW11bGF0b3Ig
PSBXVEY6OnBhaXJJbnRIYXNoKGFjY3VtdWxhdG9yLCBXVEY6OkludEhhc2g8dW5zaWduZWQ+Ojpo
YXNoKGFyZ3VtZW50VHlwZXNbaV0udHlwZUluZGV4SW5Nb2R1bGUpKTsKICAgICB9CiAgICAgZm9y
ICh1aW50MzJfdCBpID0gMDsgaSA8IHJldHVybkNvdW50OyArK2kpIHsKICAgICAgICAgYWNjdW11
bGF0b3IgPSBXVEY6OnBhaXJJbnRIYXNoKGFjY3VtdWxhdG9yLCBXVEY6OkludEhhc2g8dWludDhf
dD46Omhhc2goc3RhdGljX2Nhc3Q8dWludDhfdD4ocmV0dXJuVHlwZXNbaV0ua2luZCkpKTsKICAg
ICAgICAgYWNjdW11bGF0b3IgPSBXVEY6OnBhaXJJbnRIYXNoKGFjY3VtdWxhdG9yLCBXVEY6Oklu
dEhhc2g8dWludDhfdD46Omhhc2goc3RhdGljX2Nhc3Q8dWludDhfdD4ocmV0dXJuVHlwZXNbaV0u
bnVsbGFibGUpKSk7Ci0gICAgICAgIGFjY3VtdWxhdG9yID0gV1RGOjpwYWlySW50SGFzaChhY2N1
bXVsYXRvciwgV1RGOjpJbnRIYXNoPHVuc2lnbmVkPjo6aGFzaChyZXR1cm5UeXBlc1tpXS5pbmRl
eCkpOworICAgICAgICBhY2N1bXVsYXRvciA9IFdURjo6cGFpckludEhhc2goYWNjdW11bGF0b3Is
IFdURjo6SW50SGFzaDx1bnNpZ25lZD46Omhhc2gocmV0dXJuVHlwZXNbaV0udHlwZUluZGV4SW5N
b2R1bGUpKTsKICAgICB9CiAgICAgcmV0dXJuIGFjY3VtdWxhdG9yOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNpZ25hdHVyZS5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbVNpZ25hdHVyZS5oCmluZGV4IDNhY2U5YWZiMTc1Nzg5NjYzODJh
NzBiOTUwZWNiMzhiOWY0NzA2ZjYuLjNkNGE4YjFkODQxMDU3YWVhODRkOTUxYmU5MGMwZTc0YTVj
MjQwNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TaWduYXR1
cmUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2lnbmF0dXJlLmgKQEAg
LTQxLDYgKzQxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiBuYW1lc3BhY2UgV2FzbSB7CiAKIHVzaW5n
IFNpZ25hdHVyZUFyZ0NvdW50ID0gdWludDMyX3Q7Cit1c2luZyBTaWduYXR1cmVJbmRleCA9IHVp
bnRwdHJfdDsKIAogY2xhc3MgU2lnbmF0dXJlIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVk
PFNpZ25hdHVyZT4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vZ2VuZXJhdGVXYXNtT3BzSGVhZGVyLnB5IGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vZ2VuZXJhdGVXYXNtT3BzSGVhZGVyLnB5CmluZGV4IDY1
NzZhNjljNTY4MzUzYWI2NzdiOGUxYjRjODQxNDZhNzRjMDM1ZmYuLjAxMzk1ZGZiMGU1YTMxYjEx
MzE2Mzc5Y2U0NjM4ZmI5MGZmYWQ3ODggMTAwNzU1Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL2dlbmVyYXRlV2FzbU9wc0hlYWRlci5weQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9nZW5lcmF0ZVdhc21PcHNIZWFkZXIucHkKQEAgLTIxOCwxNiArMjE4LDE0IEBAIGVu
dW0gY2xhc3MgTnVsbGFibGUgOiBib29sIHsKICAgWWVzID0gdHJ1ZSwKIH07CiAKLXVzaW5nIFNp
Z25hdHVyZUluZGV4ID0gdWludHB0cl90OwotCiBzdHJ1Y3QgVHlwZSB7CiAgICAgVHlwZUtpbmQg
a2luZDsKICAgICBOdWxsYWJsZSBudWxsYWJsZTsKLSAgICBTaWduYXR1cmVJbmRleCBpbmRleDsK
KyAgICB1bnNpZ25lZCB0eXBlSW5kZXhJbk1vZHVsZTsKIAogICAgIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBUeXBlJiBvdGhlcikgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBvdGhlci5raW5k
ID09IGtpbmQgJiYgb3RoZXIubnVsbGFibGUgPT0gbnVsbGFibGUgJiYgb3RoZXIuaW5kZXggPT0g
aW5kZXg7CisgICAgICAgIHJldHVybiBvdGhlci5raW5kID09IGtpbmQgJiYgb3RoZXIubnVsbGFi
bGUgPT0gbnVsbGFibGUgJiYgb3RoZXIudHlwZUluZGV4SW5Nb2R1bGUgPT0gdHlwZUluZGV4SW5N
b2R1bGU7CiAgICAgfQogCiAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFR5cGUmIG90aGVyKSBj
b25zdApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3Nl
bWJseUhlbHBlcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1i
bHlIZWxwZXJzLmgKaW5kZXggZjI3MTc3OWUwYjg4MWQxZGVjNjBhZmM4NjYwZmQ4OWIzNzkzMGU2
NC4uY2M5MjkyNTRiZDBmZjM0MmEwN2FhNjU1NDBiMjY4YTU2MzA1YTlmZCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUhlbHBlcnMuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5SGVscGVycy5oCkBA
IC0xOTEsNyArMTkxLDcgQEAgQUxXQVlTX0lOTElORSB1aW50NjRfdCBmcm9tSlNWYWx1ZShKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBXYXNtOjpUeXAKICAgICAgICAgICAgIGlm
ICghaXNXZWJBc3NlbWJseUhvc3RGdW5jdGlvbih2bSwgdmFsdWUsIHdhc21GdW5jdGlvbiwgd2Fz
bVdyYXBwZXJGdW5jdGlvbikgJiYgKCF0eXBlLmlzTnVsbGFibGUoKSB8fCAhdmFsdWUuaXNOdWxs
KCkpKQogICAgICAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNRXhjZXB0aW9uKGdsb2JhbE9iamVj
dCwgc2NvcGUsIGNyZWF0ZUpTV2ViQXNzZW1ibHlSdW50aW1lRXJyb3IoZ2xvYmFsT2JqZWN0LCB2
bSwgIkZ1bmNyZWYgbXVzdCBiZSBhbiBleHBvcnRlZCB3YXNtIGZ1bmN0aW9uIikpOwogICAgICAg
ICAgICAgaWYgKGlzUmVmV2l0aFR5cGVJbmRleCh0eXBlKSAmJiAhdmFsdWUuaXNOdWxsKCkpIHsK
LSAgICAgICAgICAgICAgICBXYXNtOjpTaWduYXR1cmVJbmRleCBwYXJhbUluZGV4ID0gdHlwZS5p
bmRleDsKKyAgICAgICAgICAgICAgICBXYXNtOjpTaWduYXR1cmVJbmRleCBwYXJhbUluZGV4ID0g
dHlwZS50eXBlSW5kZXhJbk1vZHVsZTsKICAgICAgICAgICAgICAgICBXYXNtOjpTaWduYXR1cmVJ
bmRleCBhcmdJbmRleCA9IHdhc21GdW5jdGlvbiA/IHdhc21GdW5jdGlvbi0+c2lnbmF0dXJlSW5k
ZXgoKSA6IHdhc21XcmFwcGVyRnVuY3Rpb24tPnNpZ25hdHVyZUluZGV4KCk7CiAgICAgICAgICAg
ICAgICAgaWYgKHBhcmFtSW5kZXggIT0gYXJnSW5kZXgpCiAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiB0aHJvd1ZNRXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZUpTV2ViQXNz
ZW1ibHlSdW50aW1lRXJyb3IoZ2xvYmFsT2JqZWN0LCB2bSwgIkFyZ3VtZW50IGZ1bmN0aW9uIGRp
ZCBub3QgbWF0Y2ggdGhlIHJlZmVyZW5jZSB0eXBlIikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseU1vZHVsZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5TW9kdWxlLmNwcAppbmRleCAwZjBiOWNj
NWE1MmYwZWM0OGM2ZjdjZjM1MWE3NTY3ZjZhMWM0MjJmLi41NzI1Mzk3NzZhYmRmNTc4NTMyMTgz
NzA1NGYyMWViOWRkYWY4ZjU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9qcy9KU1dlYkFzc2VtYmx5TW9kdWxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9qcy9KU1dlYkFzc2VtYmx5TW9kdWxlLmNwcApAQCAtMTU0LDcgKzE1NCw3IEBAIEV4cGVj
dGVkPHZvaWQsIFdhc206OkJpbmRpbmdGYWlsdXJlPiBKU1dlYkFzc2VtYmx5TW9kdWxlOjpnZW5l
cmF0ZVdhc21Ub0pTU3R1YnMoCiAgICAgICAgIEJhZzxPcHRpbWl6aW5nQ2FsbExpbmtJbmZvPiBj
YWxsTGlua0luZm9zOwogICAgICAgICBGaXhlZFZlY3RvcjxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8
V2FzbUVudHJ5UHRyVGFnPj4gc3R1YnMobW9kdWxlSW5mb3JtYXRpb24uaW1wb3J0RnVuY3Rpb25D
b3VudCgpKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpbXBvcnRJbmRleCA9IDA7IGltcG9ydElu
ZGV4IDwgbW9kdWxlSW5mb3JtYXRpb24uaW1wb3J0RnVuY3Rpb25Db3VudCgpOyArK2ltcG9ydElu
ZGV4KSB7Ci0gICAgICAgICAgICBXYXNtOjpTaWduYXR1cmVJbmRleCBzaWduYXR1cmVJbmRleCA9
IG1vZHVsZUluZm9ybWF0aW9uLmltcG9ydEZ1bmN0aW9uU2lnbmF0dXJlSW5kaWNlcy5hdChpbXBv
cnRJbmRleCk7CisgICAgICAgICAgICBXYXNtOjpTaWduYXR1cmVJbmRleCBzaWduYXR1cmVJbmRl
eCA9IG1vZHVsZUluZm9ybWF0aW9uLmltcG9ydEZ1bmN0aW9uU2lnbmF0dXJlSW5kaWNlcy5hdChp
bXBvcnRJbmRleCkuc2lnbmF0dXJlSW5kZXg7CiAgICAgICAgICAgICBhdXRvIGJpbmRpbmcgPSBX
YXNtOjp3YXNtVG9KUyh2bSwgY2FsbExpbmtJbmZvcywgc2lnbmF0dXJlSW5kZXgsIGltcG9ydElu
ZGV4KTsKICAgICAgICAgICAgIGlmIChVTkxJS0VMWSghYmluZGluZykpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKGJpbmRpbmcuZXJyb3IoKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5TW9kdWxlLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5TW9kdWxlLmgKaW5kZXggNzdl
MTk4ODc5MGQzMjc5ZDI2YzQyYWVjOTI1M2I3ZDYyMTBlNzFmZi4uZGFkYWE2ZmNmYmMxN2I4ZDZm
YmI2NzBiODdmY2NmYjNlODZlYjEwZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vanMvSlNXZWJBc3NlbWJseU1vZHVsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlNb2R1bGUuaApAQCAtNDUsNiArNDUsNyBAQCBjbGFzcyBN
b2R1bGU7CiBzdHJ1Y3QgTW9kdWxlSW5mb3JtYXRpb247CiBjbGFzcyBQbGFuOwogZW51bSBjbGFz
cyBCaW5kaW5nRmFpbHVyZTsKK3VzaW5nIFNpZ25hdHVyZUluZGV4ID0gdWludHB0cl90OwogfQog
CiBjbGFzcyBKU1dlYkFzc2VtYmx5TWVtb3J5OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlGdW5jdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9uLmNwcAppbmRleCBjNzg3MzczZjdjOTJk
YWJmNGQ0MTAzY2FiN2RjZTgzZjhhMzAyZDgzLi45Mjc5YjI0NThlOTk5YmYxNWRjYTlhMjRjMTQy
M2U1MDBiYWFiNzViIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9X
ZWJBc3NlbWJseUZ1bmN0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9q
cy9XZWJBc3NlbWJseUZ1bmN0aW9uLmNwcApAQCAtMjc5LDcgKzI3OSw3IEBAIE1hY3JvQXNzZW1i
bGVyQ29kZVB0cjxKU0VudHJ5UHRyVGFnPiBXZWJBc3NlbWJseUZ1bmN0aW9uOjpqc0NhbGxFbnRy
eXBvaW50U2xvdygpCiAgICAgICAgICAgICAgICAgaWYgKFdhc206OmlzUmVmV2l0aFR5cGVJbmRl
eCh0eXBlKSkgewogICAgICAgICAgICAgICAgICAgICBqaXQubG9hZDY0KGpzUGFyYW0sIHNjcmF0
Y2hHUFIpOwogICAgICAgICAgICAgICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFk
ZHJlc3Moc2NyYXRjaEdQUiwgV2ViQXNzZW1ibHlGdW5jdGlvbkJhc2U6Om9mZnNldE9mU2lnbmF0
dXJlSW5kZXgoKSksIHNjcmF0Y2hHUFIpOwotICAgICAgICAgICAgICAgICAgICBzbG93UGF0aC5h
cHBlbmQoaml0LmJyYW5jaFB0cihDQ2FsbEhlbHBlcnM6Ok5vdEVxdWFsLCBzY3JhdGNoR1BSLCBD
Q2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIodHlwZS5pbmRleCkpKTsKKyAgICAgICAgICAgICAg
ICAgICAgc2xvd1BhdGguYXBwZW5kKGppdC5icmFuY2hQdHIoQ0NhbGxIZWxwZXJzOjpOb3RFcXVh
bCwgc2NyYXRjaEdQUiwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHR5cGUudHlwZUluZGV4
SW5Nb2R1bGUpKSk7CiAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgaWYgKHR5
cGUuaXNOdWxsYWJsZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
anMvV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vanMvV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuY3BwCmluZGV4IDdmYTgxZTc5NzMyYjIyNTU2
MzJhNzQ4ZjY5MmViYWFiOTgzZDVmN2IuLmEzYmFmNjk4NDE1MDczN2M2N2QyNzVmMTgxNDFjNzZj
ZGVhMjdiOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFz
c2VtYmx5TW9kdWxlUmVjb3JkLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9q
cy9XZWJBc3NlbWJseU1vZHVsZVJlY29yZC5jcHAKQEAgLTIxNyw3ICsyMTcsNyBAQCB2b2lkIFdl
YkFzc2VtYmx5TW9kdWxlUmVjb3JkOjppbml0aWFsaXplSW1wb3J0cyhKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKUwogICAgICAgICAgICAgICAgICAgICAvLyBiLiBMZXQgY2xvc3VyZSBi
ZSB2LltbQ2xvc3VyZV1dLgogICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiA9IHdhc21XcmFw
cGVyRnVuY3Rpb24tPmZ1bmN0aW9uKCk7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
ICAgIFdhc206OlNpZ25hdHVyZUluZGV4IGV4cGVjdGVkU2lnbmF0dXJlSW5kZXggPSBtb2R1bGVJ
bmZvcm1hdGlvbi5pbXBvcnRGdW5jdGlvblNpZ25hdHVyZUluZGljZXNbaW1wb3J0LmtpbmRJbmRl
eF07CisgICAgICAgICAgICAgICAgV2FzbTo6U2lnbmF0dXJlSW5kZXggZXhwZWN0ZWRTaWduYXR1
cmVJbmRleCA9IG1vZHVsZUluZm9ybWF0aW9uLmltcG9ydEZ1bmN0aW9uU2lnbmF0dXJlSW5kaWNl
c1tpbXBvcnQua2luZEluZGV4XS5zaWduYXR1cmVJbmRleDsKICAgICAgICAgICAgICAgICBpZiAo
aW1wb3J0ZWRTaWduYXR1cmVJbmRleCAhPSBleHBlY3RlZFNpZ25hdHVyZUluZGV4KQogICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gZXhjZXB0aW9uKGNyZWF0ZUpTV2ViQXNzZW1ibHlMaW5rRXJy
b3IoZ2xvYmFsT2JqZWN0LCB2bSwgaW1wb3J0RmFpbE1lc3NhZ2UoaW1wb3J0LCAiaW1wb3J0ZWQg
ZnVuY3Rpb24iLCAic2lnbmF0dXJlIGRvZXNuJ3QgbWF0Y2ggdGhlIHByb3ZpZGVkIFdlYkFzc2Vt
Ymx5IGZ1bmN0aW9uJ3Mgc2lnbmF0dXJlIikpKTsKICAgICAgICAgICAgIH0KQEAgLTI3MCw3ICsy
NzAsNyBAQCB2b2lkIFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkOjppbml0aWFsaXplSW1wb3J0cyhK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKUwogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIH0KIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChXYXNtOjppc1JlZldpdGhU
eXBlSW5kZXgoZGVjbGFyZWRHbG9iYWxUeXBlKSAmJiAhdmFsdWUuaXNOdWxsKCkpIHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgV2FzbTo6U2lnbmF0dXJlSW5kZXggcGFyYW1JbmRl
eCA9IGdsb2JhbC50eXBlLmluZGV4OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBX
YXNtOjpTaWduYXR1cmVJbmRleCBwYXJhbUluZGV4ID0gZ2xvYmFsLnR5cGUudHlwZUluZGV4SW5N
b2R1bGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdhc206OlNpZ25hdHVyZUlu
ZGV4IGFyZ0luZGV4ID0gd2FzbUZ1bmN0aW9uID8gd2FzbUZ1bmN0aW9uLT5zaWduYXR1cmVJbmRl
eCgpIDogd2FzbVdyYXBwZXJGdW5jdGlvbi0+c2lnbmF0dXJlSW5kZXgoKTsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKHBhcmFtSW5kZXggIT0gYXJnSW5kZXgpCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXhjZXB0aW9uKGNyZWF0ZUpTV2Vi
QXNzZW1ibHlMaW5rRXJyb3IoZ2xvYmFsT2JqZWN0LCB2bSwgaW1wb3J0RmFpbE1lc3NhZ2UoaW1w
b3J0LCAiaW1wb3J0ZWQgZ2xvYmFsIiwgIkFyZ3VtZW50IGZ1bmN0aW9uIGRpZCBub3QgbWF0Y2gg
dGhlIHJlZmVyZW5jZSB0eXBlIikpKTsKQEAgLTMyNCw3ICszMjQsNyBAQCB2b2lkIFdlYkFzc2Vt
Ymx5TW9kdWxlUmVjb3JkOjppbml0aWFsaXplSW1wb3J0cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKUwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGlmIChXYXNtOjppc1JlZldpdGhUeXBlSW5kZXgoZ2xvYmFsVHlwZSkg
JiYgIXZhbHVlLmlzTnVsbCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdh
c206OlNpZ25hdHVyZUluZGV4IHBhcmFtSW5kZXggPSBnbG9iYWwudHlwZS5pbmRleDsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgV2FzbTo6U2lnbmF0dXJlSW5kZXggcGFyYW1JbmRl
eCA9IGdsb2JhbC50eXBlLnR5cGVJbmRleEluTW9kdWxlOwogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBXYXNtOjpTaWduYXR1cmVJbmRleCBhcmdJbmRleCA9IHdhc21GdW5jdGlvbiA/
IHdhc21GdW5jdGlvbi0+c2lnbmF0dXJlSW5kZXgoKSA6IHdhc21XcmFwcGVyRnVuY3Rpb24tPnNp
Z25hdHVyZUluZGV4KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwYXJh
bUluZGV4ICE9IGFyZ0luZGV4KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIGV4Y2VwdGlvbihjcmVhdGVKU1dlYkFzc2VtYmx5TGlua0Vycm9yKGdsb2JhbE9iamVj
dCwgdm0sIGltcG9ydEZhaWxNZXNzYWdlKGltcG9ydCwgImltcG9ydGVkIGdsb2JhbCIsICJBcmd1
bWVudCBmdW5jdGlvbiBkaWQgbm90IG1hdGNoIHRoZSByZWZlcmVuY2UgdHlwZSIpKSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>452682</attachid>
            <date>2022-02-20 00:03:32 -0800</date>
            <delta_ts>2022-02-20 00:03:32 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233444-20220220150330.patch</filename>
            <type>text/plain</type>
            <size>43557</size>
            <attacher name="Dmitry">dbezhetskov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5NzI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
YjhiNGQyZGJkYzZiOWZlOWJhZTE1NjY0ODUwMGRkNDYyZjg4NDMyLi4yYjY1MTNkODQ0NDFhMDUx
M2U4ZDBlYTUzNTYyZTA5NjUyZjM3ODE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1NCBAQAorMjAyMS0xMS0yMyAgRG1pdHJ5IEJlemhldHNrb3YgIDxkYmV6aGV0c2tvdkBp
Z2FsaWEuY29tPgorCisgICAgICAgIFtXQVNNLUZ1bmN0aW9uLVJlZmVyZW5jZXNdIFNpbXBsaWZ5
IHJlcHJlc2VudGF0aW9uIG9mIFdhc20gVHlwZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNDQ0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisgICAgICAgIAorICAgICAgICBPdXIgY3VycmVudCBkZXNpZ24gb2YgV2FzbSB0
eXBlIGNhbiBvbmx5IHJlcHJlc2VudCByZWZlcmVuY2VzIHRvIGZ1bmN0aW9ucy4KKyAgICAgICAg
VGhlcmUgaXMgbm8gd2F5IHRvIHJlcHJlc2VudCBuZXcga2luZCBvZiByZWZlcmVuY2VzIHRvIGFy
Yml0cmFyeSB0eXBlLgorICAgICAgICBGb3IgZXhhbXBsZSwgd2UgY2FuJ3QgcmVwcmVzZW50IHJl
ZmVyZW5jZSB0byBzdHJ1Y3R1cmUgcmlnaHQgbm93LgorICAgICAgICBTbywgaW4gdGhpcyBwYXRj
aCB3ZSByZXBsYWNlIFNpZ25hdHVyZSBpbmRleCB3aXRoIGluZGV4IGludG8gV2FzbSBUeXBlIHNl
Y3Rpb24sIHNvCisgICAgICAgIHdlIGNhbiByZXByZXNlbnQgdGhlIHdob2xlIHNwZWN0cmUgb2Yg
cmVmZXJlbmNlIHR5cGVzIGluIEpTQy4KKworICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlRHVt
cGVyLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6Qnl0ZWNvZGVEdW1wZXI6OmR1bXBCbG9jayk6
CisgICAgICAgICogd2FzbS9XYXNtQWlySVJHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpX
YXNtOjpBaXJJUkdlbmVyYXRvcjo6YWRkUmVmRnVuYyk6CisgICAgICAgICogd2FzbS9XYXNtQkJR
UGxhbi5jcHA6CisgICAgICAgIChKU0M6Oldhc206OkJCUVBsYW46OndvcmspOgorICAgICAgICAo
SlNDOjpXYXNtOjpCQlFQbGFuOjpjb21waWxlRnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpXYXNt
OjpCQlFQbGFuOjpkaWRDb21wbGV0ZUNvbXBpbGF0aW9uKToKKyAgICAgICAgKiB3YXNtL1dhc21G
b3JtYXQuaDoKKyAgICAgICAgKEpTQzo6V2FzbTo6aXNFeHRlcm5yZWYpOgorICAgICAgICAoSlND
OjpXYXNtOjppc0Z1bmNyZWYpOgorICAgICAgICAoSlNDOjpXYXNtOjpmdW5jcmVmVHlwZSk6Cisg
ICAgICAgIChKU0M6Oldhc206OmV4dGVybnJlZlR5cGUpOgorICAgICAgICAoSlNDOjpXYXNtOjpp
c1R5cGVJbmRleEhlYXBUeXBlKTogRGVsZXRlZC4KKyAgICAgICAgKiB3YXNtL1dhc21GdW5jdGlv
blBhcnNlci5oOgorICAgICAgICAoSlNDOjpXYXNtOjpGdW5jdGlvblBhcnNlcjxDb250ZXh0Pjo6
cGFyc2VFeHByZXNzaW9uKToKKyAgICAgICAgKiB3YXNtL1dhc21MTEludFBsYW4uY3BwOgorICAg
ICAgICAoSlNDOjpXYXNtOjpMTEludFBsYW46OmNvbXBpbGVGdW5jdGlvbik6CisgICAgICAgIChK
U0M6Oldhc206OkxMSW50UGxhbjo6ZGlkQ29tcGxldGVDb21waWxhdGlvbik6CisgICAgICAgICog
d2FzbS9XYXNtTW9kdWxlSW5mb3JtYXRpb24uaDoKKyAgICAgICAgKEpTQzo6V2FzbTo6TW9kdWxl
SW5mb3JtYXRpb246OnNpZ25hdHVyZUluZGV4RnJvbUZ1bmN0aW9uSW5kZXhTcGFjZSBjb25zdCk6
CisgICAgICAgIChKU0M6Oldhc206Ok1vZHVsZUluZm9ybWF0aW9uOjpnZXRUeXBlSW5kZXhGb3JG
dW5jdGlvbiBjb25zdCk6CisgICAgICAgICogd2FzbS9XYXNtT01HRm9yT1NSRW50cnlQbGFuLmNw
cDoKKyAgICAgICAgKEpTQzo6V2FzbTo6T01HRm9yT1NSRW50cnlQbGFuOjp3b3JrKToKKyAgICAg
ICAgKiB3YXNtL1dhc21PTUdQbGFuLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6T01HUGxhbjo6
d29yayk6CisgICAgICAgICogd2FzbS9XYXNtUGFyc2VyLmg6CisgICAgICAgIChKU0M6Oldhc206
OlBhcnNlcjxTdWNjZXNzVHlwZT46OnBhcnNlVmFsdWVUeXBlKToKKyAgICAgICAgKiB3YXNtL1dh
c21TZWN0aW9uUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6U2VjdGlvblBhcnNlcjo6
cGFyc2VJbXBvcnQpOgorICAgICAgICAoSlNDOjpXYXNtOjpTZWN0aW9uUGFyc2VyOjpwYXJzZUZ1
bmN0aW9uKToKKyAgICAgICAgKEpTQzo6V2FzbTo6U2VjdGlvblBhcnNlcjo6cGFyc2VJbml0RXhw
cik6CisgICAgICAgICogd2FzbS9nZW5lcmF0ZVdhc21PcHNIZWFkZXIucHk6CisgICAgICAgICog
d2FzbS9qcy9KU1dlYkFzc2VtYmx5Q29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6SlNXZWJB
c3NlbWJseUNvZGVCbG9jazo6SlNXZWJBc3NlbWJseUNvZGVCbG9jayk6CisgICAgICAgICogd2Fz
bS9qcy9XZWJBc3NlbWJseU1vZHVsZVJlY29yZC5jcHA6CisgICAgICAgIChKU0M6OldlYkFzc2Vt
Ymx5TW9kdWxlUmVjb3JkOjppbml0aWFsaXplSW1wb3J0c0FuZEV4cG9ydHMpOgorICAgICAgICAK
IDIwMjItMDItMTMgIExhdXJvIE1vdXJhICA8bG1vdXJhQGlnYWxpYS5jb20+CiAKICAgICAgICAg
VW5yZXZpZXdlZCwgbm9uLXVuaWZpZWQgYnVpbGQgZml4ZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUR1bXBlci5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVEdW1wZXIuY3BwCmluZGV4IDViZjY3YjYxYjYyYmMx
MmUwNGMyZmE3Y2E5MzQzYzBjN2FkZTY3MDAuLjNiOThkODQ0ZTllNmQ2ZGFkNjZmYmQxNGYxZjYy
NDg3YWNkZmUzYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9C
eXRlY29kZUR1bXBlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5
dGVjb2RlRHVtcGVyLmNwcApAQCAtMzQzLDcgKzM0Myw3IEBAIHZvaWQgQnl0ZWNvZGVEdW1wZXI6
OmR1bXBCbG9jayhGdW5jdGlvbkNvZGVCbG9ja0dlbmVyYXRvciogYmxvY2ssIGNvbnN0IE1vZHVs
ZUluCiAgICAgb3V0LnByaW50KG1ha2VTdHJpbmcoSW5kZXhPck5hbWUoZnVuY3Rpb25JbmRleFNw
YWNlLCBtb2R1bGVJbmZvcm1hdGlvbi5uYW1lU2VjdGlvbi0+Z2V0KGZ1bmN0aW9uSW5kZXhTcGFj
ZSkpKSk7CiAKICAgICBjb25zdCBhdXRvJiBmdW5jdGlvbiA9IG1vZHVsZUluZm9ybWF0aW9uLmZ1
bmN0aW9uc1tibG9jay0+ZnVuY3Rpb25JbmRleCgpXTsKLSAgICBTaWduYXR1cmVJbmRleCBzaWdu
YXR1cmVJbmRleCA9IG1vZHVsZUluZm9ybWF0aW9uLmludGVybmFsRnVuY3Rpb25TaWduYXR1cmVJ
bmRpY2VzW2Jsb2NrLT5mdW5jdGlvbkluZGV4KCldOworICAgIFNpZ25hdHVyZUluZGV4IHNpZ25h
dHVyZUluZGV4ID0gbW9kdWxlSW5mb3JtYXRpb24uaW50ZXJuYWxGdW5jdGlvblNpZ25hdHVyZUlu
ZGljZXNbYmxvY2stPmZ1bmN0aW9uSW5kZXgoKV0uc2lnbmF0dXJlSW5kZXg7CiAgICAgY29uc3Qg
U2lnbmF0dXJlJiBzaWduYXR1cmUgPSBTaWduYXR1cmVJbmZvcm1hdGlvbjo6Z2V0KHNpZ25hdHVy
ZUluZGV4KTsKICAgICBvdXQucHJpbnQoIiA6ICIsIHNpZ25hdHVyZSwgIlxuIik7CiAgICAgb3V0
LnByaW50KCJ3YXNtIHNpemU6ICIsIGZ1bmN0aW9uLmRhdGEuc2l6ZSgpLCAiIGJ5dGVzXG4iKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21BaXJJUkdlbmVyYXRv
ci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQWlySVJHZW5lcmF0b3IuY3Bw
CmluZGV4IDk4ZWRiMWVkYmVmYmU2MTcxZGRlZTcxOGM4ZjcwMjQ0Y2JhNDczODAuLjMxYjE1NDg4
YTM5NzcyM2U2M2Y5OTgwZmQ1NzgzYTQ2MDM2OTdkZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dhc21BaXJJUkdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbUFpcklSR2VuZXJhdG9yLmNwcApAQCAtMTE5LDcgKzExOSw3IEBA
IHB1YmxpYzoKIAogICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAogICAgIHsK
LSAgICAgICAgb3V0LnByaW50KCIoIiwgbV90bXAsICIsICIsIG1fdHlwZS5raW5kLCAiLCAiLCBt
X3R5cGUuaW5kZXgsICIpIik7CisgICAgICAgIG91dC5wcmludCgiKCIsIG1fdG1wLCAiLCAiLCBt
X3R5cGUua2luZCwgIiwgIiwgbV90eXBlLnR5cGVJbmRleEluTW9kdWxlLCAiKSIpOwogICAgIH0K
IAogcHJpdmF0ZToKQEAgLTEzMTAsOCArMTMxMCw3IEBAIGF1dG8gQWlySVJHZW5lcmF0b3I6OmFk
ZFJlZkZ1bmModWludDMyX3QgaW5kZXgsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpIC0+IFBhcnRp
CiB7CiAgICAgLy8gRklYTUU6IEVtaXQgdGhpcyBpbmxpbmUgPGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xOTg1MDY+LgogICAgIGlmIChPcHRpb25zOjp1c2VXZWJBc3Nl
bWJseVR5cGVkRnVuY3Rpb25SZWZlcmVuY2VzKCkpIHsKLSAgICAgICAgU2lnbmF0dXJlSW5kZXgg
c2lnbmF0dXJlSW5kZXggPSBtX2luZm8uc2lnbmF0dXJlSW5kZXhGcm9tRnVuY3Rpb25JbmRleFNw
YWNlKGluZGV4KTsKLSAgICAgICAgcmVzdWx0ID0gdG1wRm9yVHlwZShUeXBlIHsgVHlwZUtpbmQ6
OlJlZiwgTnVsbGFibGU6Ok5vLCBzaWduYXR1cmVJbmRleCB9KTsKKyAgICAgICAgcmVzdWx0ID0g
dG1wRm9yVHlwZShUeXBlIHsgVHlwZUtpbmQ6OlJlZiwgTnVsbGFibGU6Ok5vLCBtX2luZm8uZ2V0
VHlwZUluZGV4Rm9yRnVuY3Rpb24oaW5kZXgpIH0pOwogICAgIH0gZWxzZQogICAgICAgICByZXN1
bHQgPSB0bXBGb3JUeXBlKFR5cGVzOjpGdW5jcmVmKTsKICAgICBlbWl0Q0NhbGwoJm9wZXJhdGlv
bldhc21SZWZGdW5jLCByZXN1bHQsIGluc3RhbmNlVmFsdWUoKSwgYWRkQ29uc3RhbnQoVHlwZXM6
OkkzMiwgaW5kZXgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21CQlFQbGFuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CQlFQbGFuLmNw
cAppbmRleCAzMTc4NjY1MjcwN2M4NGJmMjkxZWQwNzM4ODAyNTVmNzVkNjc1ZWMwLi4yOTUzZmIw
MmE3MDQxMzJlZGE5MmZkNTM4M2Q3OWM5ODBhZmQ4NjI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtQkJRUGxhbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbUJCUVBsYW4uY3BwCkBAIC0xMjMsNyArMTIzLDcgQEAgdm9pZCBCQlFQbGFu
Ojp3b3JrKENvbXBpbGF0aW9uRWZmb3J0IGVmZm9ydCkKICAgICBjb21wdXRlUENUb0NvZGVPcmln
aW5NYXAoY29udGV4dCwgbGlua0J1ZmZlcik7CiAKICAgICBzaXplX3QgZnVuY3Rpb25JbmRleFNw
YWNlID0gbV9mdW5jdGlvbkluZGV4ICsgbV9tb2R1bGVJbmZvcm1hdGlvbi0+aW1wb3J0RnVuY3Rp
b25Db3VudCgpOwotICAgIFNpZ25hdHVyZUluZGV4IHNpZ25hdHVyZUluZGV4ID0gbV9tb2R1bGVJ
bmZvcm1hdGlvbi0+aW50ZXJuYWxGdW5jdGlvblNpZ25hdHVyZUluZGljZXNbbV9mdW5jdGlvbklu
ZGV4XTsKKyAgICBTaWduYXR1cmVJbmRleCBzaWduYXR1cmVJbmRleCA9IG1fbW9kdWxlSW5mb3Jt
YXRpb24tPmludGVybmFsRnVuY3Rpb25TaWduYXR1cmVJbmRpY2VzW21fZnVuY3Rpb25JbmRleF0u
c2lnbmF0dXJlSW5kZXg7CiAgICAgY29uc3QgU2lnbmF0dXJlJiBzaWduYXR1cmUgPSBTaWduYXR1
cmVJbmZvcm1hdGlvbjo6Z2V0KHNpZ25hdHVyZUluZGV4KTsKICAgICBmdW5jdGlvbi0+ZW50cnlw
b2ludC5jb21waWxhdGlvbiA9IG1ha2VVbmlxdWU8Q29tcGlsYXRpb24+KAogICAgICAgICBGSU5B
TElaRV9XQVNNX0NPREVfRk9SX01PREUoQ29tcGlsYXRpb25Nb2RlOjpCQlFNb2RlLCBsaW5rQnVm
ZmVyLCBKSVRDb21waWxhdGlvblB0clRhZywgIldlYkFzc2VtYmx5IEJCUSBmdW5jdGlvblslaV0g
JXMgbmFtZSAlcyIsIG1fZnVuY3Rpb25JbmRleCwgc2lnbmF0dXJlLnRvU3RyaW5nKCkuYXNjaWko
KS5kYXRhKCksIG1ha2VTdHJpbmcoSW5kZXhPck5hbWUoZnVuY3Rpb25JbmRleFNwYWNlLCBtX21v
ZHVsZUluZm9ybWF0aW9uLT5uYW1lU2VjdGlvbi0+Z2V0KGZ1bmN0aW9uSW5kZXhTcGFjZSkpKS5h
c2NpaSgpLmRhdGEoKSksCkBAIC0xOTIsNyArMTkyLDcgQEAgdm9pZCBCQlFQbGFuOjpjb21waWxl
RnVuY3Rpb24odWludDMyX3QgZnVuY3Rpb25JbmRleCkKIAogICAgIGlmIChtX2V4cG9ydGVkRnVu
Y3Rpb25JbmRpY2VzLmNvbnRhaW5zKGZ1bmN0aW9uSW5kZXgpIHx8IG1fbW9kdWxlSW5mb3JtYXRp
b24tPnJlZmVyZW5jZWRGdW5jdGlvbnMoKS5jb250YWlucyhmdW5jdGlvbkluZGV4KSkgewogICAg
ICAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07Ci0gICAgICAgIFNpZ25hdHVyZUluZGV4IHNp
Z25hdHVyZUluZGV4ID0gbV9tb2R1bGVJbmZvcm1hdGlvbi0+aW50ZXJuYWxGdW5jdGlvblNpZ25h
dHVyZUluZGljZXNbZnVuY3Rpb25JbmRleF07CisgICAgICAgIFNpZ25hdHVyZUluZGV4IHNpZ25h
dHVyZUluZGV4ID0gbV9tb2R1bGVJbmZvcm1hdGlvbi0+aW50ZXJuYWxGdW5jdGlvblNpZ25hdHVy
ZUluZGljZXNbZnVuY3Rpb25JbmRleF0uc2lnbmF0dXJlSW5kZXg7CiAgICAgICAgIGNvbnN0IFNp
Z25hdHVyZSYgc2lnbmF0dXJlID0gU2lnbmF0dXJlSW5mb3JtYXRpb246OmdldChzaWduYXR1cmVJ
bmRleCk7CiAKICAgICAgICAgbV9jb21waWxhdGlvbkNvbnRleHRzW2Z1bmN0aW9uSW5kZXhdLmVt
YmVkZGVyRW50cnlwb2ludEpJVCA9IG1ha2VVbmlxdWU8Q0NhbGxIZWxwZXJzPigpOwpAQCAtMjA3
LDcgKzIwNyw3IEBAIHZvaWQgQkJRUGxhbjo6Y29tcGlsZUZ1bmN0aW9uKHVpbnQzMl90IGZ1bmN0
aW9uSW5kZXgpCiBzdGQ6OnVuaXF1ZV9wdHI8SW50ZXJuYWxGdW5jdGlvbj4gQkJRUGxhbjo6Y29t
cGlsZUZ1bmN0aW9uKHVpbnQzMl90IGZ1bmN0aW9uSW5kZXgsIENvbXBpbGF0aW9uQ29udGV4dCYg
Y29udGV4dCwgVmVjdG9yPFVubGlua2VkV2FzbVRvV2FzbUNhbGw+JiB1bmxpbmtlZFdhc21Ub1dh
c21DYWxscywgVGllclVwQ291bnQqIHRpZXJVcCkKIHsKICAgICBjb25zdCBhdXRvJiBmdW5jdGlv
biA9IG1fbW9kdWxlSW5mb3JtYXRpb24tPmZ1bmN0aW9uc1tmdW5jdGlvbkluZGV4XTsKLSAgICBT
aWduYXR1cmVJbmRleCBzaWduYXR1cmVJbmRleCA9IG1fbW9kdWxlSW5mb3JtYXRpb24tPmludGVy
bmFsRnVuY3Rpb25TaWduYXR1cmVJbmRpY2VzW2Z1bmN0aW9uSW5kZXhdOworICAgIFNpZ25hdHVy
ZUluZGV4IHNpZ25hdHVyZUluZGV4ID0gbV9tb2R1bGVJbmZvcm1hdGlvbi0+aW50ZXJuYWxGdW5j
dGlvblNpZ25hdHVyZUluZGljZXNbZnVuY3Rpb25JbmRleF0uc2lnbmF0dXJlSW5kZXg7CiAgICAg
Y29uc3QgU2lnbmF0dXJlJiBzaWduYXR1cmUgPSBTaWduYXR1cmVJbmZvcm1hdGlvbjo6Z2V0KHNp
Z25hdHVyZUluZGV4KTsKICAgICB1bnNpZ25lZCBmdW5jdGlvbkluZGV4U3BhY2UgPSBtX21vZHVs
ZUluZm9ybWF0aW9uLT5pbXBvcnRGdW5jdGlvbkNvdW50KCkgKyBmdW5jdGlvbkluZGV4OwogICAg
IEFTU0VSVF9VTlVTRUQoZnVuY3Rpb25JbmRleFNwYWNlLCBtX21vZHVsZUluZm9ybWF0aW9uLT5z
aWduYXR1cmVJbmRleEZyb21GdW5jdGlvbkluZGV4U3BhY2UoZnVuY3Rpb25JbmRleFNwYWNlKSA9
PSBzaWduYXR1cmVJbmRleCk7CkBAIC0yNDQsNyArMjQ0LDcgQEAgdm9pZCBCQlFQbGFuOjpkaWRD
b21wbGV0ZUNvbXBpbGF0aW9uKCkKIHsKICAgICBmb3IgKHVpbnQzMl90IGZ1bmN0aW9uSW5kZXgg
PSAwOyBmdW5jdGlvbkluZGV4IDwgbV9tb2R1bGVJbmZvcm1hdGlvbi0+ZnVuY3Rpb25zLnNpemUo
KTsgZnVuY3Rpb25JbmRleCsrKSB7CiAgICAgICAgIENvbXBpbGF0aW9uQ29udGV4dCYgY29udGV4
dCA9IG1fY29tcGlsYXRpb25Db250ZXh0c1tmdW5jdGlvbkluZGV4XTsKLSAgICAgICAgU2lnbmF0
dXJlSW5kZXggc2lnbmF0dXJlSW5kZXggPSBtX21vZHVsZUluZm9ybWF0aW9uLT5pbnRlcm5hbEZ1
bmN0aW9uU2lnbmF0dXJlSW5kaWNlc1tmdW5jdGlvbkluZGV4XTsKKyAgICAgICAgU2lnbmF0dXJl
SW5kZXggc2lnbmF0dXJlSW5kZXggPSBtX21vZHVsZUluZm9ybWF0aW9uLT5pbnRlcm5hbEZ1bmN0
aW9uU2lnbmF0dXJlSW5kaWNlc1tmdW5jdGlvbkluZGV4XS5zaWduYXR1cmVJbmRleDsKICAgICAg
ICAgY29uc3QgU2lnbmF0dXJlJiBzaWduYXR1cmUgPSBTaWduYXR1cmVJbmZvcm1hdGlvbjo6Z2V0
KHNpZ25hdHVyZUluZGV4KTsKICAgICAgICAgY29uc3QgdWludDMyX3QgZnVuY3Rpb25JbmRleFNw
YWNlID0gZnVuY3Rpb25JbmRleCArIG1fbW9kdWxlSW5mb3JtYXRpb24tPmltcG9ydEZ1bmN0aW9u
Q291bnQoKTsKICAgICAgICAgQVNTRVJUKGZ1bmN0aW9uSW5kZXhTcGFjZSA8IG1fbW9kdWxlSW5m
b3JtYXRpb24tPmZ1bmN0aW9uSW5kZXhTcGFjZVNpemUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRm9ybWF0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XYXNtRm9ybWF0LmgKaW5kZXggYzc5ZTMzN2M3YTdhY2QxMjgyMGMyZTY5NDAzNDRmZjRi
ZGQxMGE5ZS4uZGNhNTBkYjI1NjczNmNhMTA3YTM3Y2NiY2RhNWUwZmI5MmNmYWZiZSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZvcm1hdC5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Gb3JtYXQuaApAQCAtMTA1LDI4ICsxMDUsMjggQEAg
aW5saW5lIGJvb2wgaXNSZWZUeXBlKFR5cGUgdHlwZSkKIGlubGluZSBib29sIGlzRXh0ZXJucmVm
KFR5cGUgdHlwZSkKIHsKICAgICBpZiAoT3B0aW9uczo6dXNlV2ViQXNzZW1ibHlUeXBlZEZ1bmN0
aW9uUmVmZXJlbmNlcygpKQotICAgICAgICByZXR1cm4gaXNSZWZUeXBlKHR5cGUpICYmIHR5cGUu
aW5kZXggPT0gc3RhdGljX2Nhc3Q8U2lnbmF0dXJlSW5kZXg+KFR5cGVLaW5kOjpFeHRlcm5yZWYp
OworICAgICAgICByZXR1cm4gaXNSZWZUeXBlKHR5cGUpICYmIHR5cGUudHlwZUluZGV4SW5Nb2R1
bGUgPT0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KFR5cGVLaW5kOjpFeHRlcm5yZWYpOwogICAgIHJl
dHVybiB0eXBlLmtpbmQgPT0gVHlwZUtpbmQ6OkV4dGVybnJlZjsKIH0KIAogaW5saW5lIGJvb2wg
aXNGdW5jcmVmKFR5cGUgdHlwZSkKIHsKICAgICBpZiAoT3B0aW9uczo6dXNlV2ViQXNzZW1ibHlU
eXBlZEZ1bmN0aW9uUmVmZXJlbmNlcygpKQotICAgICAgICByZXR1cm4gaXNSZWZUeXBlKHR5cGUp
ICYmIHR5cGUuaW5kZXggPT0gc3RhdGljX2Nhc3Q8U2lnbmF0dXJlSW5kZXg+KFR5cGVLaW5kOjpG
dW5jcmVmKTsKKyAgICAgICAgcmV0dXJuIGlzUmVmVHlwZSh0eXBlKSAmJiB0eXBlLnR5cGVJbmRl
eEluTW9kdWxlID09IHN0YXRpY19jYXN0PHVpbnQzMl90PihUeXBlS2luZDo6RnVuY3JlZik7CiAg
ICAgcmV0dXJuIHR5cGUua2luZCA9PSBUeXBlS2luZDo6RnVuY3JlZjsKIH0KIAogaW5saW5lIFR5
cGUgZnVuY3JlZlR5cGUoKQogewogICAgIGlmIChPcHRpb25zOjp1c2VXZWJBc3NlbWJseVR5cGVk
RnVuY3Rpb25SZWZlcmVuY2VzKCkpCi0gICAgICAgIHJldHVybiBXYXNtOjpUeXBlIHsgV2FzbTo6
VHlwZUtpbmQ6OlJlZk51bGwsIFdhc206Ok51bGxhYmxlOjpZZXMsIHN0YXRpY19jYXN0PFdhc206
OlNpZ25hdHVyZUluZGV4PihXYXNtOjpUeXBlS2luZDo6RnVuY3JlZikgfTsKKyAgICAgICAgcmV0
dXJuIFdhc206OlR5cGUgeyBXYXNtOjpUeXBlS2luZDo6UmVmTnVsbCwgV2FzbTo6TnVsbGFibGU6
Olllcywgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KFdhc206OlR5cGVLaW5kOjpGdW5jcmVmKSB9Owog
ICAgIHJldHVybiBUeXBlczo6RnVuY3JlZjsKIH0KIAogaW5saW5lIFR5cGUgZXh0ZXJucmVmVHlw
ZSgpCiB7CiAgICAgaWYgKE9wdGlvbnM6OnVzZVdlYkFzc2VtYmx5VHlwZWRGdW5jdGlvblJlZmVy
ZW5jZXMoKSkKLSAgICAgICAgcmV0dXJuIFdhc206OlR5cGUgeyBXYXNtOjpUeXBlS2luZDo6UmVm
TnVsbCwgV2FzbTo6TnVsbGFibGU6Olllcywgc3RhdGljX2Nhc3Q8V2FzbTo6U2lnbmF0dXJlSW5k
ZXg+KFdhc206OlR5cGVLaW5kOjpFeHRlcm5yZWYpIH07CisgICAgICAgIHJldHVybiBXYXNtOjpU
eXBlIHsgV2FzbTo6VHlwZUtpbmQ6OlJlZk51bGwsIFdhc206Ok51bGxhYmxlOjpZZXMsIHN0YXRp
Y19jYXN0PHVpbnQzMl90PihXYXNtOjpUeXBlS2luZDo6RXh0ZXJucmVmKSB9OwogICAgIHJldHVy
biBUeXBlczo6RXh0ZXJucmVmOwogfQogCkBAIC0xMzgsMTQgKzEzOCw2IEBAIGlubGluZSBib29s
IGlzUmVmV2l0aFR5cGVJbmRleChUeXBlIHR5cGUpCiAgICAgcmV0dXJuIGlzUmVmVHlwZSh0eXBl
KSAmJiAhaXNFeHRlcm5yZWYodHlwZSkgJiYgIWlzRnVuY3JlZih0eXBlKTsKIH0KIAotaW5saW5l
IGJvb2wgaXNUeXBlSW5kZXhIZWFwVHlwZShpbnQzMl90IGhlYXBUeXBlKQotewotICAgIGlmICgh
T3B0aW9uczo6dXNlV2ViQXNzZW1ibHlUeXBlZEZ1bmN0aW9uUmVmZXJlbmNlcygpKQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gaGVhcFR5cGUgPj0gMDsKLX0KLQogaW5saW5l
IGJvb2wgaXNTdWJ0eXBlKFR5cGUgc3ViLCBUeXBlIHBhcmVudCkKIHsKICAgICBpZiAoc3ViLmlz
TnVsbGFibGUoKSAmJiAhcGFyZW50LmlzTnVsbGFibGUoKSkKQEAgLTE1NCw3ICsxNDYsNyBAQCBp
bmxpbmUgYm9vbCBpc1N1YnR5cGUoVHlwZSBzdWIsIFR5cGUgcGFyZW50KQogICAgIGlmICgoc3Vi
LmlzUmVmKCkgfHwgc3ViLmlzUmVmTnVsbCgpKSAmJiBpc0Z1bmNyZWYocGFyZW50KSkKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAKLSAgICBpZiAoc3ViLmlzUmVmKCkgJiYgcGFyZW50LmlzUmVmTnVs
bCgpICYmIHN1Yi5pbmRleCA9PSBwYXJlbnQuaW5kZXgpCisgICAgaWYgKHN1Yi5pc1JlZigpICYm
IHBhcmVudC5pc1JlZk51bGwoKSAmJiBzdWIudHlwZUluZGV4SW5Nb2R1bGUgPT0gcGFyZW50LnR5
cGVJbmRleEluTW9kdWxlKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIHJldHVybiBzdWIg
PT0gcGFyZW50OwpAQCAtMjYzLDYgKzI1NSwxMSBAQCBzdHJ1Y3QgR2xvYmFsSW5mb3JtYXRpb24g
ewogICAgIHVpbnQ2NF90IGluaXRpYWxCaXRzT3JJbXBvcnROdW1iZXIgeyAwIH07CiB9OwogCitz
dHJ1Y3QgRnVuY3Rpb25EZXNjcmlwdGlvbiB7CisgICAgU2lnbmF0dXJlSW5kZXggc2lnbmF0dXJl
SW5kZXg7CisgICAgdWludDMyX3QgdHlwZUluZGV4SW5Nb2R1bGU7Cit9OworCiBzdHJ1Y3QgRnVu
Y3Rpb25EYXRhIHsKICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgc2l6
ZV90IHN0YXJ0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZ1
bmN0aW9uUGFyc2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRnVuY3Rpb25Q
YXJzZXIuaAppbmRleCA5YmY5NjYzYzhhMzVmZTc5MGZjYzRiZTFiZWQxZjc0NWRhMDE1Mzc0Li43
YWM5MGY3ZmY2MDFjZmRiNTkyNjA4ZjEyMjU3ZmE0NTMwMzI5MDc4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRnVuY3Rpb25QYXJzZXIuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRnVuY3Rpb25QYXJzZXIuaApAQCAtMTA4MSwxMSArMTA4
MSw3IEBAIEZPUl9FQUNIX1dBU01fTUVNT1JZX1NUT1JFX09QKENSRUFURV9DQVNFKQogICAgICAg
ICBpZiAoT3B0aW9uczo6dXNlV2ViQXNzZW1ibHlUeXBlZEZ1bmN0aW9uUmVmZXJlbmNlcygpKSB7
CiAgICAgICAgICAgICBpbnQzMl90IGhlYXBUeXBlOwogICAgICAgICAgICAgV0FTTV9QQVJTRVJf
RkFJTF9JRighcGFyc2VIZWFwVHlwZShtX2luZm8sIGhlYXBUeXBlKSwgInJlZi5udWxsIGhlYXB0
eXBlIG11c3QgYmUgZnVuY3JlZiwgZXh0ZXJucmVmIG9yIHR5cGVfaWR4Iik7Ci0gICAgICAgICAg
ICBpZiAoaXNUeXBlSW5kZXhIZWFwVHlwZShoZWFwVHlwZSkpIHsKLSAgICAgICAgICAgICAgICBT
aWduYXR1cmVJbmRleCBzaWduYXR1cmVJbmRleCA9IFNpZ25hdHVyZUluZm9ybWF0aW9uOjpnZXQo
bV9pbmZvLnVzZWRTaWduYXR1cmVzW2hlYXBUeXBlXS5nZXQoKSk7Ci0gICAgICAgICAgICAgICAg
dHlwZU9mTnVsbCA9IFR5cGUgeyBUeXBlS2luZDo6UmVmTnVsbCwgTnVsbGFibGU6Olllcywgc2ln
bmF0dXJlSW5kZXggfTsKLSAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIHR5cGVP
Zk51bGwgPSBUeXBlIHsgVHlwZUtpbmQ6OlJlZk51bGwsIE51bGxhYmxlOjpZZXMsIHN0YXRpY19j
YXN0PFNpZ25hdHVyZUluZGV4PihoZWFwVHlwZSkgfTsKKyAgICAgICAgICAgIHR5cGVPZk51bGwg
PSBUeXBlIHsgVHlwZUtpbmQ6OlJlZk51bGwsIE51bGxhYmxlOjpZZXMsIHN0YXRpY19jYXN0PHVp
bnQzMl90PihoZWFwVHlwZSkgfTsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBXQVNNX1BB
UlNFUl9GQUlMX0lGKCFwYXJzZVJlZlR5cGUobV9pbmZvLCB0eXBlT2ZOdWxsKSwgInJlZi5udWxs
IHR5cGUgbXVzdCBiZSBhIHJlZmVyZW5jZSB0eXBlIik7CiAgICAgICAgIG1fZXhwcmVzc2lvblN0
YWNrLmNvbnN0cnVjdEFuZEFwcGVuZCh0eXBlT2ZOdWxsLCBtX2NvbnRleHQuYWRkQ29uc3RhbnQo
dHlwZU9mTnVsbCwgSlNWYWx1ZTo6ZW5jb2RlKGpzTnVsbCgpKSkpOwpAQCAtMTExMyw4ICsxMTA5
LDcgQEAgRk9SX0VBQ0hfV0FTTV9NRU1PUllfU1RPUkVfT1AoQ1JFQVRFX0NBU0UpCiAgICAgICAg
IFdBU01fVFJZX0FERF9UT19DT05URVhUKGFkZFJlZkZ1bmMoaW5kZXgsIHJlc3VsdCkpOwogCiAg
ICAgICAgIGlmIChPcHRpb25zOjp1c2VXZWJBc3NlbWJseVR5cGVkRnVuY3Rpb25SZWZlcmVuY2Vz
KCkpIHsKLSAgICAgICAgICAgIFNpZ25hdHVyZUluZGV4IHNpZ25hdHVyZUluZGV4ID0gbV9pbmZv
LnNpZ25hdHVyZUluZGV4RnJvbUZ1bmN0aW9uSW5kZXhTcGFjZShpbmRleCk7Ci0gICAgICAgICAg
ICBtX2V4cHJlc3Npb25TdGFjay5jb25zdHJ1Y3RBbmRBcHBlbmQoVHlwZSB7IFR5cGVLaW5kOjpS
ZWYsIE51bGxhYmxlOjpObywgc2lnbmF0dXJlSW5kZXggfSwgcmVzdWx0KTsKKyAgICAgICAgICAg
IG1fZXhwcmVzc2lvblN0YWNrLmNvbnN0cnVjdEFuZEFwcGVuZChUeXBlIHsgVHlwZUtpbmQ6OlJl
ZiwgTnVsbGFibGU6Ok5vLCBtX2luZm8uZ2V0VHlwZUluZGV4Rm9yRnVuY3Rpb24oaW5kZXgpIH0s
IHJlc3VsdCk7CiAgICAgICAgICAgICByZXR1cm4geyB9OwogICAgICAgICB9CiAKQEAgLTEyNTgs
OCArMTI1Myw3IEBAIEZPUl9FQUNIX1dBU01fTUVNT1JZX1NUT1JFX09QKENSRUFURV9DQVNFKQog
ICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFPcHRpb25zOjp1c2VXZWJBc3NlbWJseVR5cGVk
RnVuY3Rpb25SZWZlcmVuY2VzKCksICJmdW5jdGlvbiByZWZlcmVuY2VzIGFyZSBub3QgZW5hYmxl
ZCIpOwogICAgICAgICBXQVNNX1ZBTElEQVRPUl9GQUlMX0lGKCFpc1JlZldpdGhUeXBlSW5kZXgo
bV9leHByZXNzaW9uU3RhY2subGFzdCgpLnR5cGUoKSksICJub24tZnVuY3JlZiBjYWxsX3JlZiB2
YWx1ZSAiLCBtX2V4cHJlc3Npb25TdGFjay5sYXN0KCkudHlwZSgpLmtpbmQpOwogCi0gICAgICAg
IGNvbnN0IFNpZ25hdHVyZUluZGV4IGNhbGxlZVNpZ25hdHVyZUluZGV4ID0gbV9leHByZXNzaW9u
U3RhY2subGFzdCgpLnR5cGUoKS5pbmRleDsKLSAgICAgICAgY29uc3QgU2lnbmF0dXJlJiBjYWxs
ZWVTaWduYXR1cmUgPSBTaWduYXR1cmVJbmZvcm1hdGlvbjo6Z2V0KGNhbGxlZVNpZ25hdHVyZUlu
ZGV4KTsKKyAgICAgICAgY29uc3QgU2lnbmF0dXJlJiBjYWxsZWVTaWduYXR1cmUgPSBtX2luZm8u
dXNlZFNpZ25hdHVyZXNbbV9leHByZXNzaW9uU3RhY2subGFzdCgpLnR5cGUoKS50eXBlSW5kZXhJ
bk1vZHVsZV07CiAgICAgICAgIHNpemVfdCBhcmd1bWVudENvdW50ID0gY2FsbGVlU2lnbmF0dXJl
LmFyZ3VtZW50Q291bnQoKSArIDE7IC8vIEFkZCB0aGUgY2FsbGVlJ3MgdmFsdWUuCiAgICAgICAg
IFdBU01fUEFSU0VSX0ZBSUxfSUYoYXJndW1lbnRDb3VudCA+IG1fZXhwcmVzc2lvblN0YWNrLnNp
emUoKSwgImNhbGxfcmVmIGV4cGVjdHMgIiwgYXJndW1lbnRDb3VudCwgIiBhcmd1bWVudHMsIGJ1
dCB0aGUgZXhwcmVzc2lvbiBzdGFjayBjdXJyZW50bHkgaG9sZHMgIiwgbV9leHByZXNzaW9uU3Rh
Y2suc2l6ZSgpLCAiIHZhbHVlcyIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtR2xvYmFsLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21H
bG9iYWwuY3BwCmluZGV4IGNiM2QxNjNiYmUwOGI2YTU3NThjZDlkYzI4ZGUwNjhhMWRlNTZmMTcu
LmRmMmRjODg2NWM2YmIzODg5M2NmZDk4NzMwMGQxOGQ4MmE5NjQxZjEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21HbG9iYWwuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dhc21HbG9iYWwuY3BwCkBAIC04NywxNSArODcsMTUgQEAgdm9pZCBH
bG9iYWw6OnNldChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGFyZ3VtZW50
KQogICAgICAgICBicmVhazsKICAgICB9CiAgICAgZGVmYXVsdDogeworICAgICAgICBSRUxFQVNF
X0FTU0VSVChtX293bmVyKTsKKwogICAgICAgICBpZiAoaXNFeHRlcm5yZWYobV90eXBlKSkgewot
ICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9vd25lcik7CiAgICAgICAgICAgICBpZiAoIW1f
dHlwZS5pc051bGxhYmxlKCkgJiYgYXJndW1lbnQuaXNOdWxsKCkpIHsKICAgICAgICAgICAgICAg
ICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGNyZWF0ZUpTV2ViQXNz
ZW1ibHlSdW50aW1lRXJyb3IoZ2xvYmFsT2JqZWN0LCB2bSwgIk5vbi1udWxsIEV4dGVybnJlZiBj
YW5ub3QgYmUgbnVsbCIpKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9
CiAgICAgICAgICAgICBtX3ZhbHVlLm1fZXh0ZXJucmVmLnNldChtX293bmVyLT52bSgpLCBtX293
bmVyLCBhcmd1bWVudCk7CiAgICAgICAgIH0gZWxzZSBpZiAoaXNGdW5jcmVmKG1fdHlwZSkgfHwg
aXNSZWZXaXRoVHlwZUluZGV4KG1fdHlwZSkpIHsKLSAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJU
KG1fb3duZXIpOwogICAgICAgICAgICAgV2ViQXNzZW1ibHlGdW5jdGlvbiogd2FzbUZ1bmN0aW9u
ID0gbnVsbHB0cjsKICAgICAgICAgICAgIFdlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uKiB3YXNt
V3JhcHBlckZ1bmN0aW9uID0gbnVsbHB0cjsKICAgICAgICAgICAgIGlmICghaXNXZWJBc3NlbWJs
eUhvc3RGdW5jdGlvbih2bSwgYXJndW1lbnQsIHdhc21GdW5jdGlvbiwgd2FzbVdyYXBwZXJGdW5j
dGlvbikgJiYgKCFtX3R5cGUuaXNOdWxsYWJsZSgpIHx8ICFhcmd1bWVudC5pc051bGwoKSkpIHsK
QEAgLTEwNCw3ICsxMDQsMTEgQEAgdm9pZCBHbG9iYWw6OnNldChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU1ZhbHVlIGFyZ3VtZW50KQogICAgICAgICAgICAgfQogCiAgICAgICAgICAg
ICBpZiAoaXNSZWZXaXRoVHlwZUluZGV4KG1fdHlwZSkgJiYgIWFyZ3VtZW50LmlzTnVsbCgpKSB7
Ci0gICAgICAgICAgICAgICAgV2FzbTo6U2lnbmF0dXJlSW5kZXggcGFyYW1JbmRleCA9IG1fdHlw
ZS5pbmRleDsKKyAgICAgICAgICAgICAgICAvLyBUbyBjb25zdHJ1Y3QgZ2xvYmFsIHdpdGggdHlw
ZSB3aGljaCBpcyB0aGUgcmVmZXJlbmNlIHRvIHNvbWUgb3RoZXIgdHlwZSB5b3UgbXVzdCBoYXZl
IGEgbW9kdWxlCisgICAgICAgICAgICAgICAgLy8gYW5kIHNvLCBtX2luZm8gbXVzdCBiZSBzZXQg
aW4gdGhpcyBjYXNlLgorICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1faW5mbyk7CisK
KyAgICAgICAgICAgICAgICBXYXNtOjpTaWduYXR1cmVJbmRleCBwYXJhbUluZGV4ID0gbV9pbmZv
LT51c2VkU2lnbmF0dXJlc1ttX3R5cGUudHlwZUluZGV4SW5Nb2R1bGVdLT5pbmRleCgpOwogICAg
ICAgICAgICAgICAgIFdhc206OlNpZ25hdHVyZUluZGV4IGFyZ0luZGV4ID0gd2FzbUZ1bmN0aW9u
ID8gd2FzbUZ1bmN0aW9uLT5zaWduYXR1cmVJbmRleCgpIDogd2FzbVdyYXBwZXJGdW5jdGlvbi0+
c2lnbmF0dXJlSW5kZXgoKTsKICAgICAgICAgICAgICAgICBpZiAocGFyYW1JbmRleCAhPSBhcmdJ
bmRleCkgewogICAgICAgICAgICAgICAgICAgICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUsIGNyZWF0ZUpTV2ViQXNzZW1ibHlSdW50aW1lRXJyb3IoZ2xvYmFsT2JqZWN0
LCB2bSwgIkFyZ3VtZW50IGZ1bmN0aW9uIGRpZCBub3QgbWF0Y2ggdGhlIHJlZmVyZW5jZSB0eXBl
IikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUdsb2JhbC5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUdsb2JhbC5oCmluZGV4IDE3Zjg4Njgx
ZTA2ZTQwMjI4MGQxOWFmYTJlZWJiY2FlOGQ5YmQxNWUuLjZkNjA5NmM2ZTJkZjFiNjRjZDk5NWY5
ZWE2MDJkN2FlODE4OTZlNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21HbG9iYWwuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtR2xvYmFs
LmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJTbG90VmlzaXRvck1hY3Jvcy5oIgogI2lu
Y2x1ZGUgIldhc21Gb3JtYXQuaCIKICNpbmNsdWRlICJXYXNtTGltaXRzLmgiCisjaW5jbHVkZSAi
V2FzbU1vZHVsZUluZm9ybWF0aW9uLmgiCiAjaW5jbHVkZSAiV3JpdGVCYXJyaWVyLmgiCiAjaW5j
bHVkZSA8d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgpA
QCAtNDgsOSArNDksOSBAQCBwdWJsaWM6CiAgICAgICAgIFZhbHVlKiBtX3BvaW50ZXI7CiAgICAg
fTsKIAotICAgIHN0YXRpYyBSZWY8R2xvYmFsPiBjcmVhdGUoV2FzbTo6VHlwZSB0eXBlLCBXYXNt
OjpHbG9iYWxJbmZvcm1hdGlvbjo6TXV0YWJpbGl0eSBtdXRhYmlsaXR5LCB1aW50NjRfdCBpbml0
aWFsVmFsdWUgPSAwKQorICAgIHN0YXRpYyBSZWY8R2xvYmFsPiBjcmVhdGUoV2FzbTo6VHlwZSB0
eXBlLCBXYXNtOjpHbG9iYWxJbmZvcm1hdGlvbjo6TXV0YWJpbGl0eSBtdXRhYmlsaXR5LCB1aW50
NjRfdCBpbml0aWFsVmFsdWUgPSAwLCBjb25zdCBNb2R1bGVJbmZvcm1hdGlvbiogbV9pbmZvID0g
bnVsbHB0cikKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEdsb2JhbCh0eXBl
LCBtdXRhYmlsaXR5LCBpbml0aWFsVmFsdWUpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgR2xvYmFsKHR5cGUsIG11dGFiaWxpdHksIGluaXRpYWxWYWx1ZSwgbV9pbmZvKSk7CiAgICAg
fQogCiAgICAgV2FzbTo6VHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CkBAIC03
OSwxMCArODAsMTEgQEAgcHVibGljOgogICAgIFZhbHVlKiB2YWx1ZVBvaW50ZXIoKSB7IHJldHVy
biAmbV92YWx1ZTsgfQogCiBwcml2YXRlOgotICAgIEdsb2JhbChXYXNtOjpUeXBlIHR5cGUsIFdh
c206Okdsb2JhbEluZm9ybWF0aW9uOjpNdXRhYmlsaXR5IG11dGFiaWxpdHksIHVpbnQ2NF90IGlu
aXRpYWxWYWx1ZSkKKyAgICBHbG9iYWwoV2FzbTo6VHlwZSB0eXBlLCBXYXNtOjpHbG9iYWxJbmZv
cm1hdGlvbjo6TXV0YWJpbGl0eSBtdXRhYmlsaXR5LCB1aW50NjRfdCBpbml0aWFsVmFsdWUsIGNv
bnN0IE1vZHVsZUluZm9ybWF0aW9uKiBtX2luZm8pCiAgICAgICAgIDogbV90eXBlKHR5cGUpCiAg
ICAgICAgICwgbV9tdXRhYmlsaXR5KG11dGFiaWxpdHkpCiAgICAgICAgICwgbV92YWx1ZSgpCisg
ICAgICAgICwgbV9pbmZvKG1faW5mbykKICAgICB7CiAgICAgICAgIG1fdmFsdWUubV9wcmltaXRp
dmUgPSBpbml0aWFsVmFsdWU7CiAgICAgfQpAQCAtOTEsNiArOTMsOSBAQCBwcml2YXRlOgogICAg
IFdhc206Okdsb2JhbEluZm9ybWF0aW9uOjpNdXRhYmlsaXR5IG1fbXV0YWJpbGl0eTsKICAgICBK
U09iamVjdCogbV9vd25lciB7IG51bGxwdHIgfTsKICAgICBWYWx1ZSBtX3ZhbHVlOworCisgICAg
Ly8gVmFsaWQgb25seSBmb3IgZ2xvYmFscyB0aGF0IGFyZSBjcmVhdGVkIGluc2lkZSBzb21lIG1v
ZHVsZS4KKyAgICBjb25zdCBNb2R1bGVJbmZvcm1hdGlvbiogbV9pbmZvIHsgbnVsbHB0ciB9Owog
fTsKIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6Oldhc20KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dhc21MTEludFBsYW4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbUxMSW50UGxhbi5jcHAKaW5kZXggYWUxNWY4ZGVkZmJlMDE5OTAxNzljZWQzYzFk
MmYwNzQwZGJjOGQ2Ni4uODFjMDAwNTJjZDg0ZGIxNTEyZTZkOTFmZDcwYWQ2NjhiYjI3MTYyZCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUxMSW50UGxhbi5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUxMSW50UGxhbi5jcHAKQEAgLTc5
LDcgKzc5LDcgQEAgYm9vbCBMTEludFBsYW46OnByZXBhcmVJbXBsKCkKIHZvaWQgTExJbnRQbGFu
Ojpjb21waWxlRnVuY3Rpb24odWludDMyX3QgZnVuY3Rpb25JbmRleCkKIHsKICAgICBjb25zdCBh
dXRvJiBmdW5jdGlvbiA9IG1fbW9kdWxlSW5mb3JtYXRpb24tPmZ1bmN0aW9uc1tmdW5jdGlvbklu
ZGV4XTsKLSAgICBTaWduYXR1cmVJbmRleCBzaWduYXR1cmVJbmRleCA9IG1fbW9kdWxlSW5mb3Jt
YXRpb24tPmludGVybmFsRnVuY3Rpb25TaWduYXR1cmVJbmRpY2VzW2Z1bmN0aW9uSW5kZXhdOwor
ICAgIFNpZ25hdHVyZUluZGV4IHNpZ25hdHVyZUluZGV4ID0gbV9tb2R1bGVJbmZvcm1hdGlvbi0+
aW50ZXJuYWxGdW5jdGlvblNpZ25hdHVyZUluZGljZXNbZnVuY3Rpb25JbmRleF0uc2lnbmF0dXJl
SW5kZXg7CiAgICAgY29uc3QgU2lnbmF0dXJlJiBzaWduYXR1cmUgPSBTaWduYXR1cmVJbmZvcm1h
dGlvbjo6Z2V0KHNpZ25hdHVyZUluZGV4KTsKICAgICB1bnNpZ25lZCBmdW5jdGlvbkluZGV4U3Bh
Y2UgPSBtX3dhc21Ub1dhc21FeGl0U3R1YnMuc2l6ZSgpICsgZnVuY3Rpb25JbmRleDsKICAgICBB
U1NFUlRfVU5VU0VEKGZ1bmN0aW9uSW5kZXhTcGFjZSwgbV9tb2R1bGVJbmZvcm1hdGlvbi0+c2ln
bmF0dXJlSW5kZXhGcm9tRnVuY3Rpb25JbmRleFNwYWNlKGZ1bmN0aW9uSW5kZXhTcGFjZSkgPT0g
c2lnbmF0dXJlSW5kZXgpOwpAQCAtMTQ4LDcgKzE0OCw3IEBAIHZvaWQgTExJbnRQbGFuOjpkaWRD
b21wbGV0ZUNvbXBpbGF0aW9uKCkKIAogICAgIGZvciAodWludDMyX3QgZnVuY3Rpb25JbmRleCA9
IDA7IGZ1bmN0aW9uSW5kZXggPCBtX21vZHVsZUluZm9ybWF0aW9uLT5mdW5jdGlvbnMuc2l6ZSgp
OyBmdW5jdGlvbkluZGV4KyspIHsKICAgICAgICAgaWYgKG1fZXhwb3J0ZWRGdW5jdGlvbkluZGlj
ZXMuY29udGFpbnMoZnVuY3Rpb25JbmRleCkgfHwgbV9tb2R1bGVJbmZvcm1hdGlvbi0+cmVmZXJl
bmNlZEZ1bmN0aW9ucygpLmNvbnRhaW5zKGZ1bmN0aW9uSW5kZXgpKSB7Ci0gICAgICAgICAgICBT
aWduYXR1cmVJbmRleCBzaWduYXR1cmVJbmRleCA9IG1fbW9kdWxlSW5mb3JtYXRpb24tPmludGVy
bmFsRnVuY3Rpb25TaWduYXR1cmVJbmRpY2VzW2Z1bmN0aW9uSW5kZXhdOworICAgICAgICAgICAg
U2lnbmF0dXJlSW5kZXggc2lnbmF0dXJlSW5kZXggPSBtX21vZHVsZUluZm9ybWF0aW9uLT5pbnRl
cm5hbEZ1bmN0aW9uU2lnbmF0dXJlSW5kaWNlc1tmdW5jdGlvbkluZGV4XS5zaWduYXR1cmVJbmRl
eDsKICAgICAgICAgICAgIGNvbnN0IFNpZ25hdHVyZSYgc2lnbmF0dXJlID0gU2lnbmF0dXJlSW5m
b3JtYXRpb246OmdldChzaWduYXR1cmVJbmRleCk7CiAgICAgICAgICAgICBDQ2FsbEhlbHBlcnMg
aml0OwogICAgICAgICAgICAgLy8gVGhlIExMSW50IGFsd2F5cyBib3VuZHMgY2hlY2tzCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTW9kdWxlLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTW9kdWxlLmgKaW5kZXggNjJjNjkyN2YyYzlhOTgxYjg0
MGRjZDY5YzZiZGIwZDQzNGNkZDliZi4uZjU3OGUxZTNhN2U1OGRiN2ZlOTk5YzA4MzRkOTY2ZWQ2
YjFhMjg5MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1vZHVs
ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Nb2R1bGUuaApAQCAtMzAs
NyArMzAsNiBAQAogI2luY2x1ZGUgIldhc21DYWxsZWVHcm91cC5oIgogI2luY2x1ZGUgIldhc21F
bWJlZGRlci5oIgogI2luY2x1ZGUgIldhc21NZW1vcnkuaCIKLSNpbmNsdWRlICJXYXNtT3BzLmgi
CiAjaW5jbHVkZSA8d3RmL0V4cGVjdGVkLmg+CiAjaW5jbHVkZSA8d3RmL0xvY2suaD4KICNpbmNs
dWRlIDx3dGYvU2hhcmVkVGFzay5oPgpAQCAtNDEsNiArNDAsNyBAQCBuYW1lc3BhY2UgSlNDIHsg
bmFtZXNwYWNlIFdhc20gewogY2xhc3MgTExJbnRQbGFuOwogc3RydWN0IENvbnRleHQ7CiBzdHJ1
Y3QgTW9kdWxlSW5mb3JtYXRpb247Cit1c2luZyBTaWduYXR1cmVJbmRleCA9IHVpbnRwdHJfdDsK
IAogY2xhc3MgTW9kdWxlIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPE1vZHVsZT4gewog
cHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1vZHVs
ZUluZm9ybWF0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTW9kdWxlSW5m
b3JtYXRpb24uaAppbmRleCBhZTZiYmVlZGYyMTg2MTk0M2I4OTBmNzIzMTUzYzc4ODhjZmM0OTY3
Li41NWY2ZjRjODFiMTgzNmI4ZWU3YmQ1YzgwMjAwZmNjN2M3YzA2Nzk3IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTW9kdWxlSW5mb3JtYXRpb24uaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTW9kdWxlSW5mb3JtYXRpb24uaApAQCAtNTks
OCArNTksOCBAQCBzdHJ1Y3QgTW9kdWxlSW5mb3JtYXRpb24gOiBwdWJsaWMgVGhyZWFkU2FmZVJl
ZkNvdW50ZWQ8TW9kdWxlSW5mb3JtYXRpb24+IHsKICAgICBTaWduYXR1cmVJbmRleCBzaWduYXR1
cmVJbmRleEZyb21GdW5jdGlvbkluZGV4U3BhY2Uoc2l6ZV90IGZ1bmN0aW9uSW5kZXgpIGNvbnN0
CiAgICAgewogICAgICAgICByZXR1cm4gaXNJbXBvcnRlZEZ1bmN0aW9uRnJvbUZ1bmN0aW9uSW5k
ZXhTcGFjZShmdW5jdGlvbkluZGV4KQotICAgICAgICAgICAgPyBpbXBvcnRGdW5jdGlvblNpZ25h
dHVyZUluZGljZXNbZnVuY3Rpb25JbmRleF0KLSAgICAgICAgICAgIDogaW50ZXJuYWxGdW5jdGlv
blNpZ25hdHVyZUluZGljZXNbZnVuY3Rpb25JbmRleCAtIGltcG9ydEZ1bmN0aW9uU2lnbmF0dXJl
SW5kaWNlcy5zaXplKCldOworICAgICAgICAgICAgPyBpbXBvcnRGdW5jdGlvblNpZ25hdHVyZUlu
ZGljZXNbZnVuY3Rpb25JbmRleF0uc2lnbmF0dXJlSW5kZXgKKyAgICAgICAgICAgIDogaW50ZXJu
YWxGdW5jdGlvblNpZ25hdHVyZUluZGljZXNbZnVuY3Rpb25JbmRleCAtIGltcG9ydEZ1bmN0aW9u
U2lnbmF0dXJlSW5kaWNlcy5zaXplKCldLnNpZ25hdHVyZUluZGV4OwogICAgIH0KIAogICAgIHNp
emVfdCBleGNlcHRpb25JbmRleFNwYWNlU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIGltcG9ydEV4Y2Vw
dGlvblNpZ25hdHVyZUluZGljZXMuc2l6ZSgpICsgaW50ZXJuYWxFeGNlcHRpb25TaWduYXR1cmVJ
bmRpY2VzLnNpemUoKTsgfQpAQCAtOTksNiArOTksMTMgQEAgc3RydWN0IE1vZHVsZUluZm9ybWF0
aW9uIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPE1vZHVsZUluZm9ybWF0aW9uPiB7CiAg
ICAgYm9vbCBpc0RlY2xhcmVkRXhjZXB0aW9uKHVpbnQzMl90IGluZGV4KSBjb25zdCB7IHJldHVy
biBtX2RlY2xhcmVkRXhjZXB0aW9ucy5jb250YWlucyhpbmRleCk7IH0KICAgICB2b2lkIGFkZERl
Y2xhcmVkRXhjZXB0aW9uKHVpbnQzMl90IGluZGV4KSB7IG1fZGVjbGFyZWRFeGNlcHRpb25zLnNl
dChpbmRleCk7IH0KIAorICAgIHVpbnQzMl90IGdldFR5cGVJbmRleEZvckZ1bmN0aW9uKHVpbnQz
Ml90IGZ1bmN0aW9uSW5kZXgpIGNvbnN0CisgICAgeworICAgICAgICBpZiAoaXNJbXBvcnRlZEZ1
bmN0aW9uRnJvbUZ1bmN0aW9uSW5kZXhTcGFjZShmdW5jdGlvbkluZGV4KSkKKyAgICAgICAgICAg
IHJldHVybiBpbXBvcnRGdW5jdGlvblNpZ25hdHVyZUluZGljZXNbZnVuY3Rpb25JbmRleF0udHlw
ZUluZGV4SW5Nb2R1bGU7CisgICAgICAgIHJldHVybiBpbnRlcm5hbEZ1bmN0aW9uU2lnbmF0dXJl
SW5kaWNlc1tmdW5jdGlvbkluZGV4IC0gaW1wb3J0RnVuY3Rpb25TaWduYXR1cmVJbmRpY2VzLnNp
emUoKV0udHlwZUluZGV4SW5Nb2R1bGU7CisgICAgfQorCiAgICAgYm9vbCBoYXNNZW1vcnlJbXBv
cnQoKSBjb25zdCB7IHJldHVybiBtZW1vcnkuaXNJbXBvcnQoKTsgfQogCiAgICAgQnJhbmNoSGlu
dCBnZXRCcmFuY2hIaW50KHVpbnQzMl90IGZ1bmN0aW9uT2Zmc2V0LCB1aW50MzJfdCBicmFuY2hP
ZmZzZXQpIGNvbnN0CkBAIC0xMTAsOCArMTE3LDggQEAgc3RydWN0IE1vZHVsZUluZm9ybWF0aW9u
IDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPE1vZHVsZUluZm9ybWF0aW9uPiB7CiAgICAg
fQogCiAgICAgVmVjdG9yPEltcG9ydD4gaW1wb3J0czsKLSAgICBWZWN0b3I8U2lnbmF0dXJlSW5k
ZXg+IGltcG9ydEZ1bmN0aW9uU2lnbmF0dXJlSW5kaWNlczsKLSAgICBWZWN0b3I8U2lnbmF0dXJl
SW5kZXg+IGludGVybmFsRnVuY3Rpb25TaWduYXR1cmVJbmRpY2VzOworICAgIFZlY3RvcjxGdW5j
dGlvbkRlc2NyaXB0aW9uPiBpbXBvcnRGdW5jdGlvblNpZ25hdHVyZUluZGljZXM7CisgICAgVmVj
dG9yPEZ1bmN0aW9uRGVzY3JpcHRpb24+IGludGVybmFsRnVuY3Rpb25TaWduYXR1cmVJbmRpY2Vz
OwogICAgIFZlY3RvcjxTaWduYXR1cmVJbmRleD4gaW1wb3J0RXhjZXB0aW9uU2lnbmF0dXJlSW5k
aWNlczsKICAgICBWZWN0b3I8U2lnbmF0dXJlSW5kZXg+IGludGVybmFsRXhjZXB0aW9uU2lnbmF0
dXJlSW5kaWNlczsKICAgICBWZWN0b3I8UmVmPFNpZ25hdHVyZT4+IHVzZWRTaWduYXR1cmVzOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU9NR1BsYW4uY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU9NR1BsYW4uY3BwCmluZGV4IDI1MTI1MWY4
YWFlMTlhZTA3MDUyMTZjMDkxOGQwZWUyMjlmMTViYzkuLjBjNGI4NzQxYThhNTgxNWQ0MDRlYWU3
N2RlZTVhNjdjNGNhMjdjY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21PTUdQbGFuLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtT01H
UGxhbi5jcHAKQEAgLTY4LDcgKzY4LDcgQEAgdm9pZCBPTUdQbGFuOjp3b3JrKENvbXBpbGF0aW9u
RWZmb3J0KQogICAgIGNvbnN0IHVpbnQzMl90IGZ1bmN0aW9uSW5kZXhTcGFjZSA9IG1fZnVuY3Rp
b25JbmRleCArIG1fbW9kdWxlLT5tb2R1bGVJbmZvcm1hdGlvbigpLmltcG9ydEZ1bmN0aW9uQ291
bnQoKTsKICAgICBBU1NFUlQoZnVuY3Rpb25JbmRleFNwYWNlIDwgbV9tb2R1bGUtPm1vZHVsZUlu
Zm9ybWF0aW9uKCkuZnVuY3Rpb25JbmRleFNwYWNlU2l6ZSgpKTsKIAotICAgIFNpZ25hdHVyZUlu
ZGV4IHNpZ25hdHVyZUluZGV4ID0gbV9tb2R1bGVJbmZvcm1hdGlvbi0+aW50ZXJuYWxGdW5jdGlv
blNpZ25hdHVyZUluZGljZXNbbV9mdW5jdGlvbkluZGV4XTsKKyAgICBTaWduYXR1cmVJbmRleCBz
aWduYXR1cmVJbmRleCA9IG1fbW9kdWxlSW5mb3JtYXRpb24tPmludGVybmFsRnVuY3Rpb25TaWdu
YXR1cmVJbmRpY2VzW21fZnVuY3Rpb25JbmRleF0uc2lnbmF0dXJlSW5kZXg7CiAgICAgY29uc3Qg
U2lnbmF0dXJlJiBzaWduYXR1cmUgPSBTaWduYXR1cmVJbmZvcm1hdGlvbjo6Z2V0KHNpZ25hdHVy
ZUluZGV4KTsKIAogICAgIFZlY3RvcjxVbmxpbmtlZFdhc21Ub1dhc21DYWxsPiB1bmxpbmtlZENh
bGxzOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU9TUkVudHJ5
UGxhbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtT1NSRW50cnlQbGFuLmNw
cAppbmRleCBlMmU1Y2U1N2Y1MGUwMzZjNmViNjgzMzFhODNlZWMxYWUwNjRiYTI0Li40MDA0YmI2
ZWU2YzJiYmRlY2Y0MWFmZGIzYjAxYzUzOTg4ZGJkOGFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtT1NSRW50cnlQbGFuLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XYXNtT1NSRW50cnlQbGFuLmNwcApAQCAtNzAsNyArNzAsNyBAQCB2b2lk
IE9TUkVudHJ5UGxhbjo6d29yayhDb21waWxhdGlvbkVmZm9ydCkKICAgICBjb25zdCB1aW50MzJf
dCBmdW5jdGlvbkluZGV4U3BhY2UgPSBtX2Z1bmN0aW9uSW5kZXggKyBtX21vZHVsZS0+bW9kdWxl
SW5mb3JtYXRpb24oKS5pbXBvcnRGdW5jdGlvbkNvdW50KCk7CiAgICAgQVNTRVJUKGZ1bmN0aW9u
SW5kZXhTcGFjZSA8IG1fbW9kdWxlLT5tb2R1bGVJbmZvcm1hdGlvbigpLmZ1bmN0aW9uSW5kZXhT
cGFjZVNpemUoKSk7CiAKLSAgICBTaWduYXR1cmVJbmRleCBzaWduYXR1cmVJbmRleCA9IG1fbW9k
dWxlSW5mb3JtYXRpb24tPmludGVybmFsRnVuY3Rpb25TaWduYXR1cmVJbmRpY2VzW21fZnVuY3Rp
b25JbmRleF07CisgICAgU2lnbmF0dXJlSW5kZXggc2lnbmF0dXJlSW5kZXggPSBtX21vZHVsZUlu
Zm9ybWF0aW9uLT5pbnRlcm5hbEZ1bmN0aW9uU2lnbmF0dXJlSW5kaWNlc1ttX2Z1bmN0aW9uSW5k
ZXhdLnNpZ25hdHVyZUluZGV4OwogICAgIGNvbnN0IFNpZ25hdHVyZSYgc2lnbmF0dXJlID0gU2ln
bmF0dXJlSW5mb3JtYXRpb246OmdldChzaWduYXR1cmVJbmRleCk7CiAKICAgICBDb21waWxhdGlv
bk1vZGUgdGFyZ2V0Q29tcGlsYXRpb25Nb2RlID0gbV9jYWxsZWUtPmNvbXBpbGF0aW9uTW9kZSgp
ID09IENvbXBpbGF0aW9uTW9kZTo6TExJbnRNb2RlID8gQ29tcGlsYXRpb25Nb2RlOjpCQlFGb3JP
U1JFbnRyeU1vZGUgOiBDb21waWxhdGlvbk1vZGU6Ok9NR0Zvck9TUkVudHJ5TW9kZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21QYXJzZXIuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dhc21QYXJzZXIuaAppbmRleCBlZDAwZDlhMGE0MmI3OWFkYzFm
M2M4YWIwZjM0NmZjNGY2ZGE4OWFlLi40NmQ3NGVhYmNlNDlhZTFlODQ2NjE3MzI0YWMxZTYzN2Nk
MTVhZmZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtUGFyc2Vy
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVBhcnNlci5oCkBAIC0zMzAs
MjAgKzMzMCwyMCBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgUGFyc2VyPFN1Y2Nlc3NUeXBlPjo6cGFy
c2VWYWx1ZVR5cGUoY29uc3QgTW9kdWxlSW5mb3JtYXRpb24mCiAKICAgICBUeXBlS2luZCB0eXBl
S2luZCA9IHN0YXRpY19jYXN0PFR5cGVLaW5kPihraW5kKTsKICAgICBib29sIGlzTnVsbGFibGUg
PSB0cnVlOwotICAgIFNpZ25hdHVyZUluZGV4IHNpZ0luZGV4ID0gMDsKKyAgICB1bnNpZ25lZCB0
eXBlSW5kZXggPSAwOwogCiAgICAgaWYgKE9wdGlvbnM6OnVzZVdlYkFzc2VtYmx5VHlwZWRGdW5j
dGlvblJlZmVyZW5jZXMoKSAmJiAodHlwZUtpbmQgPT0gVHlwZUtpbmQ6OkZ1bmNyZWYgfHwgdHlw
ZUtpbmQgPT0gVHlwZUtpbmQ6OkV4dGVybnJlZikpIHsKLSAgICAgICAgc2lnSW5kZXggPSBzdGF0
aWNfY2FzdDxTaWduYXR1cmVJbmRleD4odHlwZUtpbmQpOworICAgICAgICB0eXBlSW5kZXggPSBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4odHlwZUtpbmQpOwogICAgICAgICB0eXBlS2luZCA9IFR5cGVL
aW5kOjpSZWZOdWxsOwogICAgIH0gZWxzZSBpZiAodHlwZUtpbmQgPT0gVHlwZUtpbmQ6OlJlZiB8
fCB0eXBlS2luZCA9PSBUeXBlS2luZDo6UmVmTnVsbCkgewogICAgICAgICBpc051bGxhYmxlID0g
dHlwZUtpbmQgPT0gVHlwZUtpbmQ6OlJlZk51bGw7CiAgICAgICAgIGludDMyX3QgaGVhcFR5cGU7
CiAgICAgICAgIGlmICghcGFyc2VIZWFwVHlwZShpbmZvLCBoZWFwVHlwZSkpCiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIHNpZ0luZGV4ID0gaGVhcFR5cGUgPCAwID8gc3RhdGlj
X2Nhc3Q8U2lnbmF0dXJlSW5kZXg+KGhlYXBUeXBlKSA6IFNpZ25hdHVyZUluZm9ybWF0aW9uOjpn
ZXQoaW5mby51c2VkU2lnbmF0dXJlc1toZWFwVHlwZV0uZ2V0KCkpOworICAgICAgICB0eXBlSW5k
ZXggPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaGVhcFR5cGUpOwogICAgIH0KIAotICAgIFR5cGUg
dHlwZSA9IHsgdHlwZUtpbmQsIHN0YXRpY19jYXN0PE51bGxhYmxlPihpc051bGxhYmxlKSwgc2ln
SW5kZXggfTsKKyAgICBUeXBlIHR5cGUgPSB7IHR5cGVLaW5kLCBzdGF0aWNfY2FzdDxOdWxsYWJs
ZT4oaXNOdWxsYWJsZSksIHR5cGVJbmRleCB9OwogICAgIGlmICghaXNWYWx1ZVR5cGUodHlwZSkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICByZXN1bHQgPSB0eXBlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNlY3Rpb25QYXJzZXIuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNlY3Rpb25QYXJzZXIuY3BwCmluZGV4IDViNTExODEx
MGU1MmQyYmQwNzhjYjAyZTk4OTk5NzJkMmZhOGI0ZTMuLmY1NjJhZGQ0NGE1ZmNjMDg3NzQzZDli
OTVjYWZjZWU5YTIyNDEzNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21TZWN0aW9uUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtU2VjdGlvblBhcnNlci5jcHAKQEAgLTExNyw3ICsxMTcsNyBAQCBhdXRvIFNlY3Rpb25QYXJz
ZXI6OnBhcnNlSW1wb3J0KCkgLT4gUGFydGlhbFJlc3VsdAogICAgICAgICAgICAgV0FTTV9QQVJT
RVJfRkFJTF9JRihmdW5jdGlvblNpZ25hdHVyZUluZGV4ID49IG1faW5mby0+dXNlZFNpZ25hdHVy
ZXMuc2l6ZSgpLCAiaW52YWxpZCBmdW5jdGlvbiBzaWduYXR1cmUgZm9yICIsIGltcG9ydE51bWJl
ciwgInRoIEltcG9ydCwgIiwgZnVuY3Rpb25TaWduYXR1cmVJbmRleCwgIiBpcyBvdXQgb2YgcmFu
Z2Ugb2YgIiwgbV9pbmZvLT51c2VkU2lnbmF0dXJlcy5zaXplKCksICIgaW4gbW9kdWxlICciLCBt
b2R1bGVTdHJpbmcsICInIGZpZWxkICciLCBmaWVsZFN0cmluZywgIiciKTsKICAgICAgICAgICAg
IGtpbmRJbmRleCA9IG1faW5mby0+aW1wb3J0RnVuY3Rpb25TaWduYXR1cmVJbmRpY2VzLnNpemUo
KTsKICAgICAgICAgICAgIFNpZ25hdHVyZUluZGV4IHNpZ25hdHVyZUluZGV4ID0gU2lnbmF0dXJl
SW5mb3JtYXRpb246OmdldChtX2luZm8tPnVzZWRTaWduYXR1cmVzW2Z1bmN0aW9uU2lnbmF0dXJl
SW5kZXhdKTsKLSAgICAgICAgICAgIG1faW5mby0+aW1wb3J0RnVuY3Rpb25TaWduYXR1cmVJbmRp
Y2VzLnVuY2hlY2tlZEFwcGVuZChzaWduYXR1cmVJbmRleCk7CisgICAgICAgICAgICBtX2luZm8t
PmltcG9ydEZ1bmN0aW9uU2lnbmF0dXJlSW5kaWNlcy51bmNoZWNrZWRBcHBlbmQoRnVuY3Rpb25E
ZXNjcmlwdGlvbiB7IHNpZ25hdHVyZUluZGV4LCBmdW5jdGlvblNpZ25hdHVyZUluZGV4IH0pOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBFeHRlcm5hbEtpbmQ6
OlRhYmxlOiB7CkBAIC0xODYsNyArMTg2LDcgQEAgYXV0byBTZWN0aW9uUGFyc2VyOjpwYXJzZUZ1
bmN0aW9uKCkgLT4gUGFydGlhbFJlc3VsdAogICAgICAgICAvLyBUaGUgQ29kZSBzZWN0aW9uIGZp
eGVzIHVwIHN0YXJ0IGFuZCBlbmQuCiAgICAgICAgIHNpemVfdCBzdGFydCA9IDA7CiAgICAgICAg
IHNpemVfdCBlbmQgPSAwOwotICAgICAgICBtX2luZm8tPmludGVybmFsRnVuY3Rpb25TaWduYXR1
cmVJbmRpY2VzLnVuY2hlY2tlZEFwcGVuZChzaWduYXR1cmVJbmRleCk7CisgICAgICAgIG1faW5m
by0+aW50ZXJuYWxGdW5jdGlvblNpZ25hdHVyZUluZGljZXMudW5jaGVja2VkQXBwZW5kKEZ1bmN0
aW9uRGVzY3JpcHRpb24geyBzaWduYXR1cmVJbmRleCwgdHlwZU51bWJlciB9KTsKICAgICAgICAg
bV9pbmZvLT5mdW5jdGlvbnMudW5jaGVja2VkQXBwZW5kKHsgc3RhcnQsIGVuZCwgVmVjdG9yPHVp
bnQ4X3Q+KCkgfSk7CiAgICAgfQogCkBAIC02MjIsMTEgKzYyMiw3IEBAIGF1dG8gU2VjdGlvblBh
cnNlcjo6cGFyc2VJbml0RXhwcih1aW50OF90JiBvcGNvZGUsIHVpbnQ2NF90JiBiaXRzT3JJbXBv
cnROdW1iZXIsCiAgICAgICAgIGlmIChPcHRpb25zOjp1c2VXZWJBc3NlbWJseVR5cGVkRnVuY3Rp
b25SZWZlcmVuY2VzKCkpIHsKICAgICAgICAgICAgIGludDMyX3QgaGVhcFR5cGU7CiAgICAgICAg
ICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJzZUhlYXBUeXBlKG1faW5mbywgaGVhcFR5cGUp
LCAicmVmLm51bGwgaGVhcHR5cGUgbXVzdCBiZSBmdW5jcmVmLCBleHRlcm5yZWYgb3IgdHlwZV9p
ZHgiKTsKLSAgICAgICAgICAgIGlmIChpc1R5cGVJbmRleEhlYXBUeXBlKGhlYXBUeXBlKSkgewot
ICAgICAgICAgICAgICAgIFNpZ25hdHVyZUluZGV4IHNpZ25hdHVyZUluZGV4ID0gU2lnbmF0dXJl
SW5mb3JtYXRpb246OmdldChtX2luZm8tPnVzZWRTaWduYXR1cmVzW2hlYXBUeXBlXS5nZXQoKSk7
Ci0gICAgICAgICAgICAgICAgdHlwZU9mTnVsbCA9IFR5cGUgeyBUeXBlS2luZDo6UmVmTnVsbCwg
TnVsbGFibGU6Olllcywgc2lnbmF0dXJlSW5kZXggfTsKLSAgICAgICAgICAgIH0gZWxzZQotICAg
ICAgICAgICAgICAgIHR5cGVPZk51bGwgPSBUeXBlIHsgVHlwZUtpbmQ6OlJlZk51bGwsIE51bGxh
YmxlOjpZZXMsIHN0YXRpY19jYXN0PFNpZ25hdHVyZUluZGV4PihoZWFwVHlwZSkgfTsKKyAgICAg
ICAgICAgIHR5cGVPZk51bGwgPSBUeXBlIHsgVHlwZUtpbmQ6OlJlZk51bGwsIE51bGxhYmxlOjpZ
ZXMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihoZWFwVHlwZSkgfTsKICAgICAgICAgfSBlbHNlCiAg
ICAgICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJzZVJlZlR5cGUobV9pbmZvLCB0eXBl
T2ZOdWxsKSwgInJlZi5udWxsIHR5cGUgbXVzdCBiZSBhIHJlZmVyZW5jZSB0eXBlIik7CiAKQEAg
LTYzNiwxNyArNjMyLDE2IEBAIGF1dG8gU2VjdGlvblBhcnNlcjo6cGFyc2VJbml0RXhwcih1aW50
OF90JiBvcGNvZGUsIHVpbnQ2NF90JiBiaXRzT3JJbXBvcnROdW1iZXIsCiAgICAgfQogCiAgICAg
Y2FzZSBSZWZGdW5jOiB7Ci0gICAgICAgIHVpbnQzMl90IGluZGV4OwotICAgICAgICBXQVNNX1BB
UlNFUl9GQUlMX0lGKCFwYXJzZVZhclVJbnQzMihpbmRleCksICJjYW4ndCBnZXQgcmVmLmZ1bmMg
aW5kZXgiKTsKLSAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRihpbmRleCA+PSBtX2luZm8tPmZ1
bmN0aW9ucy5zaXplKCksICJyZWYuZnVuYyBpbmRleCIsIGluZGV4LCAiIGV4Y2VlZHMgdGhlIG51
bWJlciBvZiBmdW5jdGlvbnMgIiwgbV9pbmZvLT5mdW5jdGlvbnMuc2l6ZSgpKTsKKyAgICAgICAg
dWludDMyX3QgZnVuY3Rpb25JbmRleDsKKyAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighcGFy
c2VWYXJVSW50MzIoZnVuY3Rpb25JbmRleCksICJjYW4ndCBnZXQgcmVmLmZ1bmMgaW5kZXgiKTsK
KyAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRihmdW5jdGlvbkluZGV4ID49IG1faW5mby0+ZnVu
Y3Rpb25zLnNpemUoKSwgInJlZi5mdW5jIGluZGV4IiwgZnVuY3Rpb25JbmRleCwgIiBleGNlZWRz
IHRoZSBudW1iZXIgb2YgZnVuY3Rpb25zICIsIG1faW5mby0+ZnVuY3Rpb25zLnNpemUoKSk7CiAK
LSAgICAgICAgaWYgKE9wdGlvbnM6OnVzZVdlYkFzc2VtYmx5VHlwZWRGdW5jdGlvblJlZmVyZW5j
ZXMoKSkgewotICAgICAgICAgICAgU2lnbmF0dXJlSW5kZXggc2lnbmF0dXJlSW5kZXggPSBtX2lu
Zm8tPnNpZ25hdHVyZUluZGV4RnJvbUZ1bmN0aW9uSW5kZXhTcGFjZShpbmRleCk7Ci0gICAgICAg
ICAgICByZXN1bHRUeXBlID0geyBUeXBlS2luZDo6UmVmLCBOdWxsYWJsZTo6Tm8sIHNpZ25hdHVy
ZUluZGV4IH07Ci0gICAgICAgIH0gZWxzZQorICAgICAgICBpZiAoT3B0aW9uczo6dXNlV2ViQXNz
ZW1ibHlUeXBlZEZ1bmN0aW9uUmVmZXJlbmNlcygpKQorICAgICAgICAgICAgcmVzdWx0VHlwZSA9
IHsgVHlwZUtpbmQ6OlJlZiwgTnVsbGFibGU6Ok5vLCBtX2luZm8tPmdldFR5cGVJbmRleEZvckZ1
bmN0aW9uKGZ1bmN0aW9uSW5kZXgpIH07CisgICAgICAgIGVsc2UKICAgICAgICAgICAgIHJlc3Vs
dFR5cGUgPSBUeXBlczo6RnVuY3JlZjsKIAotICAgICAgICBiaXRzT3JJbXBvcnROdW1iZXIgPSBp
bmRleDsKKyAgICAgICAgYml0c09ySW1wb3J0TnVtYmVyID0gZnVuY3Rpb25JbmRleDsKICAgICAg
ICAgYnJlYWs7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XYXNtU2lnbmF0dXJlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TaWdu
YXR1cmUuY3BwCmluZGV4IGY5YTU2MWI4NTBmYzVjMTkzOWQwZWY1OWU4YTlmZDJiNjA1OTc4Zjku
LjRhYjBiZGNkNjJmMDdhMjk4NzJjMmE4ZmVmOGM5MTkzYzg3M2I2MmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TaWduYXR1cmUuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dhc21TaWduYXR1cmUuY3BwCkBAIC02OCwxMiArNjgsMTIgQEAg
c3RhdGljIHVuc2lnbmVkIGNvbXB1dGVIYXNoKHNpemVfdCByZXR1cm5Db3VudCwgY29uc3QgVHlw
ZSogcmV0dXJuVHlwZXMsIHNpemVfdAogICAgIGZvciAodWludDMyX3QgaSA9IDA7IGkgPCBhcmd1
bWVudENvdW50OyArK2kpIHsKICAgICAgICAgYWNjdW11bGF0b3IgPSBXVEY6OnBhaXJJbnRIYXNo
KGFjY3VtdWxhdG9yLCBXVEY6OkludEhhc2g8dWludDhfdD46Omhhc2goc3RhdGljX2Nhc3Q8dWlu
dDhfdD4oYXJndW1lbnRUeXBlc1tpXS5raW5kKSkpOwogICAgICAgICBhY2N1bXVsYXRvciA9IFdU
Rjo6cGFpckludEhhc2goYWNjdW11bGF0b3IsIFdURjo6SW50SGFzaDx1aW50OF90Pjo6aGFzaChz
dGF0aWNfY2FzdDx1aW50OF90Pihhcmd1bWVudFR5cGVzW2ldLm51bGxhYmxlKSkpOwotICAgICAg
ICBhY2N1bXVsYXRvciA9IFdURjo6cGFpckludEhhc2goYWNjdW11bGF0b3IsIFdURjo6SW50SGFz
aDx1bnNpZ25lZD46Omhhc2goYXJndW1lbnRUeXBlc1tpXS5pbmRleCkpOworICAgICAgICBhY2N1
bXVsYXRvciA9IFdURjo6cGFpckludEhhc2goYWNjdW11bGF0b3IsIFdURjo6SW50SGFzaDx1bnNp
Z25lZD46Omhhc2goYXJndW1lbnRUeXBlc1tpXS50eXBlSW5kZXhJbk1vZHVsZSkpOwogICAgIH0K
ICAgICBmb3IgKHVpbnQzMl90IGkgPSAwOyBpIDwgcmV0dXJuQ291bnQ7ICsraSkgewogICAgICAg
ICBhY2N1bXVsYXRvciA9IFdURjo6cGFpckludEhhc2goYWNjdW11bGF0b3IsIFdURjo6SW50SGFz
aDx1aW50OF90Pjo6aGFzaChzdGF0aWNfY2FzdDx1aW50OF90PihyZXR1cm5UeXBlc1tpXS5raW5k
KSkpOwogICAgICAgICBhY2N1bXVsYXRvciA9IFdURjo6cGFpckludEhhc2goYWNjdW11bGF0b3Is
IFdURjo6SW50SGFzaDx1aW50OF90Pjo6aGFzaChzdGF0aWNfY2FzdDx1aW50OF90PihyZXR1cm5U
eXBlc1tpXS5udWxsYWJsZSkpKTsKLSAgICAgICAgYWNjdW11bGF0b3IgPSBXVEY6OnBhaXJJbnRI
YXNoKGFjY3VtdWxhdG9yLCBXVEY6OkludEhhc2g8dW5zaWduZWQ+OjpoYXNoKHJldHVyblR5cGVz
W2ldLmluZGV4KSk7CisgICAgICAgIGFjY3VtdWxhdG9yID0gV1RGOjpwYWlySW50SGFzaChhY2N1
bXVsYXRvciwgV1RGOjpJbnRIYXNoPHVuc2lnbmVkPjo6aGFzaChyZXR1cm5UeXBlc1tpXS50eXBl
SW5kZXhJbk1vZHVsZSkpOwogICAgIH0KICAgICByZXR1cm4gYWNjdW11bGF0b3I7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2lnbmF0dXJlLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2lnbmF0dXJlLmgKaW5kZXggM2FjZTlhZmIxNzU3
ODk2NjM4MmE3MGI5NTBlY2IzOGI5ZjQ3MDZmNi4uM2Q0YThiMWQ4NDEwNTdhZWE4NGQ5NTFiZTkw
YzBlNzRhNWMyNDA3MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2Fz
bVNpZ25hdHVyZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TaWduYXR1
cmUuaApAQCAtNDEsNiArNDEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIG5hbWVzcGFjZSBXYXNtIHsK
IAogdXNpbmcgU2lnbmF0dXJlQXJnQ291bnQgPSB1aW50MzJfdDsKK3VzaW5nIFNpZ25hdHVyZUlu
ZGV4ID0gdWludHB0cl90OwogCiBjbGFzcyBTaWduYXR1cmUgOiBwdWJsaWMgVGhyZWFkU2FmZVJl
ZkNvdW50ZWQ8U2lnbmF0dXJlPiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9nZW5lcmF0ZVdhc21PcHNIZWFkZXIu
cHkgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9nZW5lcmF0ZVdhc21PcHNIZWFkZXIucHkK
aW5kZXggNjU3NmE2OWM1NjgzNTNhYjY3N2I4ZTFiNGM4NDE0NmE3NGMwMzVmZi4uMDEzOTVkZmIw
ZTVhMzFiMTEzMTYzNzljZTQ2MzhmYjkwZmZhZDc4OCAxMDA3NTUKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vZ2VuZXJhdGVXYXNtT3BzSGVhZGVyLnB5CisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL2dlbmVyYXRlV2FzbU9wc0hlYWRlci5weQpAQCAtMjE4LDE2ICsyMTgs
MTQgQEAgZW51bSBjbGFzcyBOdWxsYWJsZSA6IGJvb2wgewogICBZZXMgPSB0cnVlLAogfTsKIAot
dXNpbmcgU2lnbmF0dXJlSW5kZXggPSB1aW50cHRyX3Q7Ci0KIHN0cnVjdCBUeXBlIHsKICAgICBU
eXBlS2luZCBraW5kOwogICAgIE51bGxhYmxlIG51bGxhYmxlOwotICAgIFNpZ25hdHVyZUluZGV4
IGluZGV4OworICAgIHVuc2lnbmVkIHR5cGVJbmRleEluTW9kdWxlOwogCiAgICAgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IFR5cGUmIG90aGVyKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIG90
aGVyLmtpbmQgPT0ga2luZCAmJiBvdGhlci5udWxsYWJsZSA9PSBudWxsYWJsZSAmJiBvdGhlci5p
bmRleCA9PSBpbmRleDsKKyAgICAgICAgcmV0dXJuIG90aGVyLmtpbmQgPT0ga2luZCAmJiBvdGhl
ci5udWxsYWJsZSA9PSBudWxsYWJsZSAmJiBvdGhlci50eXBlSW5kZXhJbk1vZHVsZSA9PSB0eXBl
SW5kZXhJbk1vZHVsZTsKICAgICB9CiAKICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgVHlwZSYg
b3RoZXIpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9K
U1dlYkFzc2VtYmx5SGVscGVycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNX
ZWJBc3NlbWJseUhlbHBlcnMuaAppbmRleCBmMjcxNzc5ZTBiODgxZDFkZWM2MGFmYzg2NjBmZDg5
YjM3OTMwZTY0Li5hOGFiN2QxNTkxYmZmMjdhNDM3Nzk2MmRlMjVhYmQ1M2I4MGYwMTVlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5SGVscGVy
cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlIZWxw
ZXJzLmgKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJKU1NvdXJjZUNvZGUuaCIKICNpbmNs
dWRlICJKU1dlYkFzc2VtYmx5UnVudGltZUVycm9yLmgiCiAjaW5jbHVkZSAiV2FzbUZvcm1hdC5o
IgorI2luY2x1ZGUgIldhc21Nb2R1bGVJbmZvcm1hdGlvbi5oIgogI2luY2x1ZGUgIldlYkFzc2Vt
Ymx5RnVuY3Rpb24uaCIKICNpbmNsdWRlICJXZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbi5oIgog
CkBAIC0xNjgsNyArMTY5LDcgQEAgQUxXQVlTX0lOTElORSBKU1ZhbHVlIHRvSlNWYWx1ZShKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBXYXNtOjpUeXBlIHQKICAgICByZXR1cm4g
SlNWYWx1ZSgpOwogfQogCi1BTFdBWVNfSU5MSU5FIHVpbnQ2NF90IGZyb21KU1ZhbHVlKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFdhc206OlR5cGUgdHlwZSwgSlNWYWx1ZSB2
YWx1ZSkKK0FMV0FZU19JTkxJTkUgdWludDY0X3QgZnJvbUpTVmFsdWUoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgY29uc3QgV2FzbTo6VHlwZSB0eXBlLCBKU1ZhbHVlIHZhbHVlLCBjb25z
dCBXYXNtOjpNb2R1bGVJbmZvcm1hdGlvbiogaW5mbyA9IG51bGxwdHIpCiB7CiAgICAgVk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKQEAgLTE5MSw3ICsxOTIsOCBAQCBBTFdBWVNfSU5MSU5FIHVpbnQ2NF90IGZyb21K
U1ZhbHVlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFdhc206OlR5cAogICAg
ICAgICAgICAgaWYgKCFpc1dlYkFzc2VtYmx5SG9zdEZ1bmN0aW9uKHZtLCB2YWx1ZSwgd2FzbUZ1
bmN0aW9uLCB3YXNtV3JhcHBlckZ1bmN0aW9uKSAmJiAoIXR5cGUuaXNOdWxsYWJsZSgpIHx8ICF2
YWx1ZS5pc051bGwoKSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1FeGNlcHRpb24o
Z2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlSlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvcihnbG9i
YWxPYmplY3QsIHZtLCAiRnVuY3JlZiBtdXN0IGJlIGFuIGV4cG9ydGVkIHdhc20gZnVuY3Rpb24i
KSk7CiAgICAgICAgICAgICBpZiAoaXNSZWZXaXRoVHlwZUluZGV4KHR5cGUpICYmICF2YWx1ZS5p
c051bGwoKSkgewotICAgICAgICAgICAgICAgIFdhc206OlNpZ25hdHVyZUluZGV4IHBhcmFtSW5k
ZXggPSB0eXBlLmluZGV4OworICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGluZm8pOwor
ICAgICAgICAgICAgICAgIFdhc206OlNpZ25hdHVyZUluZGV4IHBhcmFtSW5kZXggPSBpbmZvLT51
c2VkU2lnbmF0dXJlc1t0eXBlLnR5cGVJbmRleEluTW9kdWxlXS0+aW5kZXgoKTsKICAgICAgICAg
ICAgICAgICBXYXNtOjpTaWduYXR1cmVJbmRleCBhcmdJbmRleCA9IHdhc21GdW5jdGlvbiA/IHdh
c21GdW5jdGlvbi0+c2lnbmF0dXJlSW5kZXgoKSA6IHdhc21XcmFwcGVyRnVuY3Rpb24tPnNpZ25h
dHVyZUluZGV4KCk7CiAgICAgICAgICAgICAgICAgaWYgKHBhcmFtSW5kZXggIT0gYXJnSW5kZXgp
CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNRXhjZXB0aW9uKGdsb2JhbE9iamVj
dCwgc2NvcGUsIGNyZWF0ZUpTV2ViQXNzZW1ibHlSdW50aW1lRXJyb3IoZ2xvYmFsT2JqZWN0LCB2
bSwgIkFyZ3VtZW50IGZ1bmN0aW9uIGRpZCBub3QgbWF0Y2ggdGhlIHJlZmVyZW5jZSB0eXBlIikp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJs
eU1vZHVsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5
TW9kdWxlLmNwcAppbmRleCAwZjBiOWNjNWE1MmYwZWM0OGM2ZjdjZjM1MWE3NTY3ZjZhMWM0MjJm
Li41NzI1Mzk3NzZhYmRmNTc4NTMyMTgzNzA1NGYyMWViOWRkYWY4ZjU3IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5TW9kdWxlLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5TW9kdWxlLmNwcApA
QCAtMTU0LDcgKzE1NCw3IEBAIEV4cGVjdGVkPHZvaWQsIFdhc206OkJpbmRpbmdGYWlsdXJlPiBK
U1dlYkFzc2VtYmx5TW9kdWxlOjpnZW5lcmF0ZVdhc21Ub0pTU3R1YnMoCiAgICAgICAgIEJhZzxP
cHRpbWl6aW5nQ2FsbExpbmtJbmZvPiBjYWxsTGlua0luZm9zOwogICAgICAgICBGaXhlZFZlY3Rv
cjxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8V2FzbUVudHJ5UHRyVGFnPj4gc3R1YnMobW9kdWxlSW5m
b3JtYXRpb24uaW1wb3J0RnVuY3Rpb25Db3VudCgpKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBp
bXBvcnRJbmRleCA9IDA7IGltcG9ydEluZGV4IDwgbW9kdWxlSW5mb3JtYXRpb24uaW1wb3J0RnVu
Y3Rpb25Db3VudCgpOyArK2ltcG9ydEluZGV4KSB7Ci0gICAgICAgICAgICBXYXNtOjpTaWduYXR1
cmVJbmRleCBzaWduYXR1cmVJbmRleCA9IG1vZHVsZUluZm9ybWF0aW9uLmltcG9ydEZ1bmN0aW9u
U2lnbmF0dXJlSW5kaWNlcy5hdChpbXBvcnRJbmRleCk7CisgICAgICAgICAgICBXYXNtOjpTaWdu
YXR1cmVJbmRleCBzaWduYXR1cmVJbmRleCA9IG1vZHVsZUluZm9ybWF0aW9uLmltcG9ydEZ1bmN0
aW9uU2lnbmF0dXJlSW5kaWNlcy5hdChpbXBvcnRJbmRleCkuc2lnbmF0dXJlSW5kZXg7CiAgICAg
ICAgICAgICBhdXRvIGJpbmRpbmcgPSBXYXNtOjp3YXNtVG9KUyh2bSwgY2FsbExpbmtJbmZvcywg
c2lnbmF0dXJlSW5kZXgsIGltcG9ydEluZGV4KTsKICAgICAgICAgICAgIGlmIChVTkxJS0VMWSgh
YmluZGluZykpCiAgICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKGJpbmRpbmcu
ZXJyb3IoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dl
YkFzc2VtYmx5TW9kdWxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFz
c2VtYmx5TW9kdWxlLmgKaW5kZXggNzdlMTk4ODc5MGQzMjc5ZDI2YzQyYWVjOTI1M2I3ZDYyMTBl
NzFmZi4uZGFkYWE2ZmNmYmMxN2I4ZDZmYmI2NzBiODdmY2NmYjNlODZlYjEwZiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseU1vZHVsZS5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlNb2R1bGUuaApA
QCAtNDUsNiArNDUsNyBAQCBjbGFzcyBNb2R1bGU7CiBzdHJ1Y3QgTW9kdWxlSW5mb3JtYXRpb247
CiBjbGFzcyBQbGFuOwogZW51bSBjbGFzcyBCaW5kaW5nRmFpbHVyZTsKK3VzaW5nIFNpZ25hdHVy
ZUluZGV4ID0gdWludHB0cl90OwogfQogCiBjbGFzcyBKU1dlYkFzc2VtYmx5TWVtb3J5OwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlGdW5jdGlv
bi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9u
LmNwcAppbmRleCBjNzg3MzczZjdjOTJkYWJmNGQ0MTAzY2FiN2RjZTgzZjhhMzAyZDgzLi41MDEw
MTAwNzdjYWZjMjk1NDcwZjg1MjBiMDA4YjZjYmU4MDNlMmIwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9uLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9uLmNwcApAQCAtNzgs
NyArNzgsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oY2FsbFdlYkFzc2VtYmx5RnVuY3Rp
b24sIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgIFdhc206Okluc3RhbmNlKiB3
YXNtSW5zdGFuY2UgPSAmaW5zdGFuY2UtPmluc3RhbmNlKCk7CiAKICAgICBmb3IgKHVuc2lnbmVk
IGFyZ0luZGV4ID0gMDsgYXJnSW5kZXggPCBzaWduYXR1cmUuYXJndW1lbnRDb3VudCgpOyArK2Fy
Z0luZGV4KSB7Ci0gICAgICAgIHVpbnQ2NF90IHZhbHVlID0gZnJvbUpTVmFsdWUoZ2xvYmFsT2Jq
ZWN0LCBzaWduYXR1cmUuYXJndW1lbnQoYXJnSW5kZXgpLCBjYWxsRnJhbWUtPmFyZ3VtZW50KGFy
Z0luZGV4KSk7CisgICAgICAgIHVpbnQ2NF90IHZhbHVlID0gZnJvbUpTVmFsdWUoZ2xvYmFsT2Jq
ZWN0LCBzaWduYXR1cmUuYXJndW1lbnQoYXJnSW5kZXgpLCBjYWxsRnJhbWUtPmFyZ3VtZW50KGFy
Z0luZGV4KSwgJndhc21JbnN0YW5jZS0+bW9kdWxlKCkubW9kdWxlSW5mb3JtYXRpb24oKSk7CiAg
ICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAg
ICAgICBib3hlZEFyZ3MuYXBwZW5kKEpTVmFsdWU6OmRlY29kZSh2YWx1ZSkpOwogICAgIH0KQEAg
LTI3OSw3ICsyNzksOCBAQCBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8SlNFbnRyeVB0clRhZz4gV2Vi
QXNzZW1ibHlGdW5jdGlvbjo6anNDYWxsRW50cnlwb2ludFNsb3coKQogICAgICAgICAgICAgICAg
IGlmIChXYXNtOjppc1JlZldpdGhUeXBlSW5kZXgodHlwZSkpIHsKICAgICAgICAgICAgICAgICAg
ICAgaml0LmxvYWQ2NChqc1BhcmFtLCBzY3JhdGNoR1BSKTsKICAgICAgICAgICAgICAgICAgICAg
aml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHNjcmF0Y2hHUFIsIFdlYkFzc2VtYmx5
RnVuY3Rpb25CYXNlOjpvZmZzZXRPZlNpZ25hdHVyZUluZGV4KCkpLCBzY3JhdGNoR1BSKTsKLSAg
ICAgICAgICAgICAgICAgICAgc2xvd1BhdGguYXBwZW5kKGppdC5icmFuY2hQdHIoQ0NhbGxIZWxw
ZXJzOjpOb3RFcXVhbCwgc2NyYXRjaEdQUiwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHR5
cGUuaW5kZXgpKSk7CisgICAgICAgICAgICAgICAgICAgIGNvbnN0IGF1dG8gc2lnbmF0dXJlSW5k
ZXggPSBtb2R1bGVJbmZvcm1hdGlvbi51c2VkU2lnbmF0dXJlc1t0eXBlLnR5cGVJbmRleEluTW9k
dWxlXS0+aW5kZXgoKTsKKyAgICAgICAgICAgICAgICAgICAgc2xvd1BhdGguYXBwZW5kKGppdC5i
cmFuY2hQdHIoQ0NhbGxIZWxwZXJzOjpOb3RFcXVhbCwgc2NyYXRjaEdQUiwgQ0NhbGxIZWxwZXJz
OjpUcnVzdGVkSW1tUHRyKHNpZ25hdHVyZUluZGV4KSkpOwogICAgICAgICAgICAgICAgIH0KIAog
ICAgICAgICAgICAgICAgIGlmICh0eXBlLmlzTnVsbGFibGUoKSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmNwcApp
bmRleCA3ZmE4MWU3OTczMmIyMjU1NjMyYTc0OGY2OTJlYmFhYjk4M2Q1ZjdiLi45N2VlODk0OTc2
Y2E4NTBhMWM0NGUzYTU3YjUwZmQzYmJmYzFhMzgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVJlY29yZC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuY3BwCkBAIC0y
MTcsNyArMjE3LDcgQEAgdm9pZCBXZWJBc3NlbWJseU1vZHVsZVJlY29yZDo6aW5pdGlhbGl6ZUlt
cG9ydHMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlMKICAgICAgICAgICAgICAgICAg
ICAgLy8gYi4gTGV0IGNsb3N1cmUgYmUgdi5bW0Nsb3N1cmVdXS4KICAgICAgICAgICAgICAgICAg
ICAgZnVuY3Rpb24gPSB3YXNtV3JhcHBlckZ1bmN0aW9uLT5mdW5jdGlvbigpOwogICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICBXYXNtOjpTaWduYXR1cmVJbmRleCBleHBlY3RlZFNp
Z25hdHVyZUluZGV4ID0gbW9kdWxlSW5mb3JtYXRpb24uaW1wb3J0RnVuY3Rpb25TaWduYXR1cmVJ
bmRpY2VzW2ltcG9ydC5raW5kSW5kZXhdOworICAgICAgICAgICAgICAgIFdhc206OlNpZ25hdHVy
ZUluZGV4IGV4cGVjdGVkU2lnbmF0dXJlSW5kZXggPSBtb2R1bGVJbmZvcm1hdGlvbi5pbXBvcnRG
dW5jdGlvblNpZ25hdHVyZUluZGljZXNbaW1wb3J0LmtpbmRJbmRleF0uc2lnbmF0dXJlSW5kZXg7
CiAgICAgICAgICAgICAgICAgaWYgKGltcG9ydGVkU2lnbmF0dXJlSW5kZXggIT0gZXhwZWN0ZWRT
aWduYXR1cmVJbmRleCkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGV4Y2VwdGlvbihjcmVh
dGVKU1dlYkFzc2VtYmx5TGlua0Vycm9yKGdsb2JhbE9iamVjdCwgdm0sIGltcG9ydEZhaWxNZXNz
YWdlKGltcG9ydCwgImltcG9ydGVkIGZ1bmN0aW9uIiwgInNpZ25hdHVyZSBkb2Vzbid0IG1hdGNo
IHRoZSBwcm92aWRlZCBXZWJBc3NlbWJseSBmdW5jdGlvbidzIHNpZ25hdHVyZSIpKSk7CiAgICAg
ICAgICAgICB9CkBAIC0yNzAsNyArMjcwLDcgQEAgdm9pZCBXZWJBc3NlbWJseU1vZHVsZVJlY29y
ZDo6aW5pdGlhbGl6ZUltcG9ydHMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlMKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoV2FzbTo6aXNSZWZXaXRoVHlwZUluZGV4KGRlY2xhcmVkR2xvYmFsVHlwZSkgJiYgIXZh
bHVlLmlzTnVsbCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdhc206OlNp
Z25hdHVyZUluZGV4IHBhcmFtSW5kZXggPSBnbG9iYWwudHlwZS5pbmRleDsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgV2FzbTo6U2lnbmF0dXJlSW5kZXggcGFyYW1JbmRleCA9IG1v
ZHVsZUluZm9ybWF0aW9uLnVzZWRTaWduYXR1cmVzW2dsb2JhbC50eXBlLnR5cGVJbmRleEluTW9k
dWxlXS0+aW5kZXgoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2FzbTo6U2ln
bmF0dXJlSW5kZXggYXJnSW5kZXggPSB3YXNtRnVuY3Rpb24gPyB3YXNtRnVuY3Rpb24tPnNpZ25h
dHVyZUluZGV4KCkgOiB3YXNtV3JhcHBlckZ1bmN0aW9uLT5zaWduYXR1cmVJbmRleCgpOwogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGFyYW1JbmRleCAhPSBhcmdJbmRleCkK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBleGNlcHRpb24oY3Jl
YXRlSlNXZWJBc3NlbWJseUxpbmtFcnJvcihnbG9iYWxPYmplY3QsIHZtLCBpbXBvcnRGYWlsTWVz
c2FnZShpbXBvcnQsICJpbXBvcnRlZCBnbG9iYWwiLCAiQXJndW1lbnQgZnVuY3Rpb24gZGlkIG5v
dCBtYXRjaCB0aGUgcmVmZXJlbmNlIHR5cGUiKSkpOwpAQCAtMzI0LDcgKzMyNCw3IEBAIHZvaWQg
V2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQ6OmluaXRpYWxpemVJbXBvcnRzKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFdhc206OmlzUmVmV2l0aFR5cGVJbmRleChnbG9i
YWxUeXBlKSAmJiAhdmFsdWUuaXNOdWxsKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgV2FzbTo6U2lnbmF0dXJlSW5kZXggcGFyYW1JbmRleCA9IGdsb2JhbC50eXBlLmluZGV4
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXYXNtOjpTaWduYXR1cmVJbmRleCBw
YXJhbUluZGV4ID0gbW9kdWxlSW5mb3JtYXRpb24udXNlZFNpZ25hdHVyZXNbZ2xvYmFsLnR5cGUu
dHlwZUluZGV4SW5Nb2R1bGVdLT5pbmRleCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBXYXNtOjpTaWduYXR1cmVJbmRleCBhcmdJbmRleCA9IHdhc21GdW5jdGlvbiA/IHdhc21G
dW5jdGlvbi0+c2lnbmF0dXJlSW5kZXgoKSA6IHdhc21XcmFwcGVyRnVuY3Rpb24tPnNpZ25hdHVy
ZUluZGV4KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwYXJhbUluZGV4
ICE9IGFyZ0luZGV4KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IGV4Y2VwdGlvbihjcmVhdGVKU1dlYkFzc2VtYmx5TGlua0Vycm9yKGdsb2JhbE9iamVjdCwgdm0s
IGltcG9ydEZhaWxNZXNzYWdlKGltcG9ydCwgImltcG9ydGVkIGdsb2JhbCIsICJBcmd1bWVudCBm
dW5jdGlvbiBkaWQgbm90IG1hdGNoIHRoZSByZWZlcmVuY2UgdHlwZSIpKSk7CkBAIC01NTAsNyAr
NTUwLDcgQEAgdm9pZCBXZWJBc3NlbWJseU1vZHVsZVJlY29yZDo6aW5pdGlhbGl6ZUV4cG9ydHMo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IGNhc2UgV2FzbTo6R2xvYmFsSW5mb3JtYXRpb246OkJpbmRpbmdNb2RlOjpQb3J0YWJsZTogewog
ICAgICAgICAgICAgICAgIEFTU0VSVChnbG9iYWwubXV0YWJpbGl0eSA9PSBXYXNtOjpHbG9iYWxJ
bmZvcm1hdGlvbjo6TXV0YWJpbGl0eTo6TXV0YWJsZSk7Ci0gICAgICAgICAgICAgICAgUmVmPFdh
c206Okdsb2JhbD4gZ2xvYmFsUmVmID0gV2FzbTo6R2xvYmFsOjpjcmVhdGUoZ2xvYmFsLnR5cGUs
IFdhc206Okdsb2JhbEluZm9ybWF0aW9uOjpNdXRhYmlsaXR5OjpNdXRhYmxlLCBpbml0aWFsQml0
cyk7CisgICAgICAgICAgICAgICAgUmVmPFdhc206Okdsb2JhbD4gZ2xvYmFsUmVmID0gV2FzbTo6
R2xvYmFsOjpjcmVhdGUoZ2xvYmFsLnR5cGUsIFdhc206Okdsb2JhbEluZm9ybWF0aW9uOjpNdXRh
YmlsaXR5OjpNdXRhYmxlLCBpbml0aWFsQml0cywgJm1vZHVsZUluZm9ybWF0aW9uKTsKICAgICAg
ICAgICAgICAgICBKU1dlYkFzc2VtYmx5R2xvYmFsKiBnbG9iYWxWYWx1ZSA9IEpTV2ViQXNzZW1i
bHlHbG9iYWw6OnRyeUNyZWF0ZShnbG9iYWxPYmplY3QsIHZtLCBnbG9iYWxPYmplY3QtPndlYkFz
c2VtYmx5R2xvYmFsU3RydWN0dXJlKCksIFdURk1vdmUoZ2xvYmFsUmVmKSk7CiAgICAgICAgICAg
ICAgICAgc2NvcGUuYXNzZXJ0Tm9FeGNlcHRpb24oKTsKICAgICAgICAgICAgICAgICBtX2luc3Rh
bmNlLT5saW5rR2xvYmFsKHZtLCBnbG9iYWxJbmRleCwgZ2xvYmFsVmFsdWUpOwpAQCAtNjAxLDcg
KzYwMSw3IEBAIHZvaWQgV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQ6OmluaXRpYWxpemVFeHBvcnRz
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgICAgICAgICAgICAgLy8gQnV0IHdl
IG5lZWQgdG8gY3JlYXRlIGEgYmluZGluZyBqdXN0IHRvIGV4cG9ydCBpdC4gVGhpcyBiaW5kaW5n
IGlzIG5vdCBhY3R1YWxseSBjb25uZWN0ZWQuIEJ1dCB0aGlzIGlzIE9LIHNpbmNlIGl0IGlzIGlt
bXV0YWJsZS4KICAgICAgICAgICAgICAgICBpZiAoZ2xvYmFsLmJpbmRpbmdNb2RlID09IFdhc206
Okdsb2JhbEluZm9ybWF0aW9uOjpCaW5kaW5nTW9kZTo6RW1iZWRkZWRJbkluc3RhbmNlKSB7CiAg
ICAgICAgICAgICAgICAgICAgIHVpbnQ2NF90IGluaXRpYWxWYWx1ZSA9IG1faW5zdGFuY2UtPmlu
c3RhbmNlKCkubG9hZEk2NEdsb2JhbChleHAua2luZEluZGV4KTsKLSAgICAgICAgICAgICAgICAg
ICAgUmVmPFdhc206Okdsb2JhbD4gZ2xvYmFsUmVmID0gV2FzbTo6R2xvYmFsOjpjcmVhdGUoZ2xv
YmFsLnR5cGUsIGdsb2JhbC5tdXRhYmlsaXR5LCBpbml0aWFsVmFsdWUpOworICAgICAgICAgICAg
ICAgICAgICBSZWY8V2FzbTo6R2xvYmFsPiBnbG9iYWxSZWYgPSBXYXNtOjpHbG9iYWw6OmNyZWF0
ZShnbG9iYWwudHlwZSwgZ2xvYmFsLm11dGFiaWxpdHksIGluaXRpYWxWYWx1ZSwgJm1vZHVsZUlu
Zm9ybWF0aW9uKTsKICAgICAgICAgICAgICAgICAgICAgZXhwb3J0ZWRWYWx1ZSA9IEpTV2ViQXNz
ZW1ibHlHbG9iYWw6OnRyeUNyZWF0ZShnbG9iYWxPYmplY3QsIHZtLCBnbG9iYWxPYmplY3QtPndl
YkFzc2VtYmx5R2xvYmFsU3RydWN0dXJlKCksIFdURk1vdmUoZ2xvYmFsUmVmKSk7CiAgICAgICAg
ICAgICAgICAgICAgIHNjb3BlLmFzc2VydE5vRXhjZXB0aW9uKCk7CiAgICAgICAgICAgICAgICAg
fSBlbHNlIHsK
</data>

          </attachment>
      

    </bug>

</bugzilla>