<?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>192826</bug_id>
          
          <creation_ts>2018-12-18 13:20:03 -0800</creation_ts>
          <short_desc>[WHLSL] Add a Visitor class</short_desc>
          <delta_ts>2019-01-11 18:47:38 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebGPU</component>
          <version>Other</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>192991</dependson>
          <blocked>193007</blocked>
    
    <blocked>193360</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Myles C. Maxfield">mmaxfield</reporter>
          <assigned_to name="Myles C. Maxfield">mmaxfield</assigned_to>
          <cc>cdumez</cc>
    
    <cc>dino</cc>
    
    <cc>fpizlo</cc>
    
    <cc>graouts</cc>
    
    <cc>jonlee</cc>
    
    <cc>justin_fan</cc>
    
    <cc>keith_miller</cc>
    
    <cc>rmorisset</cc>
    
    <cc>rniwa</cc>
    
    <cc>saam</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1489029</commentid>
    <comment_count>0</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2018-12-18 13:20:03 -0800</bug_when>
    <thetext>Add a Visitor class</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1489031</commentid>
    <comment_count>1</comment_count>
      <attachid>357603</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2018-12-18 13:21:46 -0800</bug_when>
    <thetext>Created attachment 357603
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1490291</commentid>
    <comment_count>2</comment_count>
      <attachid>357930</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2018-12-20 23:13:16 -0800</bug_when>
    <thetext>Created attachment 357930
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1490592</commentid>
    <comment_count>3</comment_count>
      <attachid>358011</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2018-12-21 18:56:41 -0800</bug_when>
    <thetext>Created attachment 358011
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1493636</commentid>
    <comment_count>4</comment_count>
      <attachid>358882</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2019-01-11 00:12:00 -0800</bug_when>
    <thetext>Created attachment 358882
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1493706</commentid>
    <comment_count>5</comment_count>
      <attachid>358911</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2019-01-11 10:50:20 -0800</bug_when>
    <thetext>Created attachment 358911
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1493854</commentid>
    <comment_count>6</comment_count>
      <attachid>358911</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2019-01-11 15:16:10 -0800</bug_when>
    <thetext>Comment on attachment 358911
Patch

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

&gt; Source/WebCore/Modules/webgpu/WHLSL/WHLSLVisitor.cpp:621
&gt; +void Visitor::checkErrorAndVisit(Program&amp; program)

These look very repetitive. Would the following fail for some reason?
```
template&lt;typename T&gt; void Visitor::checkErrorAndVisist(T&amp; x)
{
  if (!error)
    visit(x);
}
```</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1493882</commentid>
    <comment_count>7</comment_count>
      <attachid>358911</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2019-01-11 16:34:36 -0800</bug_when>
    <thetext>Comment on attachment 358911
Patch

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

&gt; Source/WebCore/Modules/webgpu/WHLSL/WHLSLVisitor.cpp:2
&gt; + * Copyright (C) 2018 Apple Inc. All rights reserved.

2019

&gt; Source/WebCore/Modules/webgpu/WHLSL/WHLSLVisitor.cpp:105
&gt; +    // These visiting functions might add new global statements, so don&apos;t use foreach syntax.

:(

&gt; Source/WebCore/Modules/webgpu/WHLSL/WHLSLVisitor.cpp:357
&gt; +    WTF::visit(WTF::makeVisitor([&amp;](AST::NumThreadsFunctionAttribute&amp; numThreadsFunctionAttribute) {
&gt; +        checkErrorAndVisit(numThreadsFunctionAttribute);
&gt; +    }), functionAttribute);

Why not call it directly since there is only one object to visit?

&gt; Source/WebCore/Modules/webgpu/WHLSL/WHLSLVisitor.h:2
&gt; + * Copyright (C) 2018 Apple Inc. All rights reserved.

2019

&gt; Source/WebCore/Modules/webgpu/WHLSL/WHLSLVisitor.h:179
&gt; +    void checkErrorAndVisit(Program&amp;);

Could these be private/protected?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1493911</commentid>
    <comment_count>8</comment_count>
      <attachid>358911</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2019-01-11 17:35:21 -0800</bug_when>
    <thetext>Comment on attachment 358911
Patch

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

&gt;&gt; Source/WebCore/Modules/webgpu/WHLSL/WHLSLVisitor.cpp:621
&gt;&gt; +void Visitor::checkErrorAndVisit(Program&amp; program)
&gt; 
&gt; These look very repetitive. Would the following fail for some reason?
&gt; ```
&gt; template&lt;typename T&gt; void Visitor::checkErrorAndVisist(T&amp; x)
&gt; {
&gt;   if (!error)
&gt;     visit(x);
&gt; }
&gt; ```

Yes! Good idea.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1493925</commentid>
    <comment_count>9</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2019-01-11 18:46:23 -0800</bug_when>
    <thetext>Committed r239893: &lt;https://trac.webkit.org/changeset/239893&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1493926</commentid>
    <comment_count>10</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-01-11 18:47:38 -0800</bug_when>
    <thetext>&lt;rdar://problem/47227226&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>357603</attachid>
            <date>2018-12-18 13:21:46 -0800</date>
            <delta_ts>2018-12-20 23:13:16 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>file2.txt</filename>
            <type>text/plain</type>
            <size>81429</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">Y29tbWl0IGVhZTQyY2NhNzExYmUyYjc3OTU3NzdlMzY4N2JiZTY2ODUxMDhmOTAKQXV0aG9yOiBN
eWxlcyBDLiBNYXhmaWVsZCA8bW1heGZpZWxkQGFwcGxlLmNvbT4KRGF0ZTogICBUdWUgRGVjIDE4
IDEyOjE0OjAxIDIwMTggLTA4MDAKCiAgICBWaXNpdG9yCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQVNUQXJyYXlSZWZlcmVuY2VUeXBl
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xBU1RBcnJh
eVJlZmVyZW5jZVR5cGUuaAppbmRleCAyMzk3ODY4MzUzZi4uN2M3ZTljZGY5OWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFTVEFycmF5
UmVmZXJlbmNlVHlwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L0FTVC9XSExTTEFTVEFycmF5UmVmZXJlbmNlVHlwZS5oCkBAIC00OSw5ICs0OSwxMSBAQCBwdWJs
aWM6CiAgICAgQXJyYXlSZWZlcmVuY2VUeXBlKGNvbnN0IEFycmF5UmVmZXJlbmNlVHlwZSYpID0g
ZGVsZXRlOwogICAgIEFycmF5UmVmZXJlbmNlVHlwZShBcnJheVJlZmVyZW5jZVR5cGUmJikgPSBk
ZWZhdWx0OwogCisgICAgYm9vbCBpc0FycmF5UmVmZXJlbmNlVHlwZSgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIGZhbHNlOyB9CisKICAgICBzdGQ6OnVuaXF1ZV9wdHI8VHlwZT4gY2xvbmUoKSBj
b25zdCBvdmVycmlkZQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8QXJy
YXlSZWZlcmVuY2VUeXBlPihMZXhlcjo6VG9rZW4ob3JpZ2luKCkpLCBTdHJpbmcoYWRkcmVzc1Nw
YWNlKCkpLCBlbGVtZW50VHlwZSgpLT5jbG9uZSgpKTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8QXJyYXlSZWZlcmVuY2VUeXBlPihMZXhlcjo6VG9rZW4ob3JpZ2luKCkpLCBTdHJp
bmcoYWRkcmVzc1NwYWNlKCkpLCBlbGVtZW50VHlwZSgpLmNsb25lKCkpOwogICAgIH0KIAogcHJp
dmF0ZToKQEAgLTYzLDQgKzY1LDYgQEAgcHJpdmF0ZToKIAogfQogCitTUEVDSUFMSVpFX1RZUEVf
VFJBSVRTX1dITFNMX1RZUEUoQXJyYXlSZWZlcmVuY2VUeXBlLCBpc0FycmF5UmVmZXJlbmNlVHlw
ZSgpKQorCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML0FTVC9XSExTTEFTVEFycmF5VHlwZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvQVNUL1dITFNMQVNUQXJyYXlUeXBlLmgKaW5kZXggYmYzODhmYjhmNmIuLjgw
Nzk1MmVjYzZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xBU1RBcnJheVR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9BU1QvV0hMU0xBU1RBcnJheVR5cGUuaApAQCAtNTQsNiArNTQsMTAgQEAgcHVi
bGljOgogCiAgICAgdW5zaWduZWQgbnVtRWxlbWVudHMoKSBjb25zdCB7IHJldHVybiBtX251bUVs
ZW1lbnRzOyB9CiAKKyAgICBib29sIGlzQXJyYXlUeXBlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gZmFsc2U7IH0KKworICAgIFR5cGUmIHR5cGUoKSB7IHJldHVybiAqbV9lbGVtZW50VHlwZTsg
fQorCiAgICAgc3RkOjp1bmlxdWVfcHRyPFR5cGU+IGNsb25lKCkgY29uc3Qgb3ZlcnJpZGUKICAg
ICB7CiAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEFycmF5VHlwZT4oTGV4ZXI6OlRv
a2VuKG1fb3JpZ2luKSwgbV9lbGVtZW50VHlwZS0+Y2xvbmUoKSwgbV9udW1FbGVtZW50cyk7CkBA
IC03MSw0ICs3NSw2IEBAIHByaXZhdGU6CiAKIH0KIAorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19X
SExTTF9UWVBFKEFycmF5VHlwZSwgaXNBcnJheVR5cGUoKSkKKwogI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xBU1RBc3NpZ25t
ZW50RXhwcmVzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMQVNUQXNzaWdubWVudEV4cHJlc3Npb24uaAppbmRleCBjNjZjNmRjMzVlYy4uMzc3OTdj
MjcxMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTEFTVEFzc2lnbm1lbnRFeHByZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQVNUQXNzaWdubWVudEV4cHJlc3Npb24uaApAQCAt
NTAsNiArNTAsMTEgQEAgcHVibGljOgogICAgIEFzc2lnbm1lbnRFeHByZXNzaW9uKGNvbnN0IEFz
c2lnbm1lbnRFeHByZXNzaW9uJikgPSBkZWxldGU7CiAgICAgQXNzaWdubWVudEV4cHJlc3Npb24o
QXNzaWdubWVudEV4cHJlc3Npb24mJikgPSBkZWZhdWx0OwogCisgICAgYm9vbCBpc0Fzc2lnbm1l
bnRFeHByZXNzaW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorCisgICAgRXhw
cmVzc2lvbiYgbGVmdCgpIHsgcmV0dXJuICptX2xlZnQ7IH0KKyAgICBFeHByZXNzaW9uJiByaWdo
dCgpIHsgcmV0dXJuICptX3JpZ2h0OyB9CisKIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRy
PEV4cHJlc3Npb24+IG1fbGVmdDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RXhwcmVzc2lvbj4gbV9y
aWdodDsKQEAgLTYxLDQgKzY2LDYgQEAgcHJpdmF0ZToKIAogfQogCitTUEVDSUFMSVpFX1RZUEVf
VFJBSVRTX1dITFNMX0VYUFJFU1NJT04oQXNzaWdubWVudEV4cHJlc3Npb24sIGlzQXNzaWdubWVu
dEV4cHJlc3Npb24oKSkKKwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xBU1RCbG9jay5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQVNUQmxvY2suaAppbmRleCA4YjczZjdmMDRjNC4u
MTFjOTE4YzJhZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML0FTVC9XSExTTEFTVEJsb2NrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvQVNUL1dITFNMQVNUQmxvY2suaApAQCAtMzksNyArMzksNyBAQCBuYW1lc3BhY2Ug
QVNUIHsKIAogY2xhc3MgQmxvY2sgOiBwdWJsaWMgU3RhdGVtZW50IHsKIHB1YmxpYzoKLSAgICBC
bG9jayhMZXhlcjo6VG9rZW4mJiBvcmlnaW4sIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8U3RhdGVt
ZW50Pj4mJiBzdGF0ZW1lbnRzKQorICAgIEJsb2NrKExleGVyOjpUb2tlbiYmIG9yaWdpbiwgU3Rh
dGVtZW50cyYmIHN0YXRlbWVudHMpCiAgICAgICAgIDogU3RhdGVtZW50KFdURk1vdmUob3JpZ2lu
KSkKICAgICAgICAgLCBtX3N0YXRlbWVudHMoV1RGTW92ZShzdGF0ZW1lbnRzKSkKICAgICB7CkBA
IC01MCw4ICs1MCwxMiBAQCBwdWJsaWM6CiAgICAgQmxvY2soY29uc3QgQmxvY2smKSA9IGRlbGV0
ZTsKICAgICBCbG9jayhCbG9jayYmKSA9IGRlZmF1bHQ7CiAKKyAgICBTdGF0ZW1lbnRzJiBzdGF0
ZW1lbnRzKCkgeyByZXR1cm4gbV9zdGF0ZW1lbnRzOyB9CisgICAgCisgICAgYm9vbCBpc0Jsb2Nr
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorCiBwcml2YXRlOgotICAgIFZlY3Rv
cjxzdGQ6OnVuaXF1ZV9wdHI8U3RhdGVtZW50Pj4gbV9zdGF0ZW1lbnRzOworICAgIFN0YXRlbWVu
dHMgbV9zdGF0ZW1lbnRzOwogfTsKIAogfQpAQCAtNjAsNCArNjQsNiBAQCBwcml2YXRlOgogCiB9
CiAKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfU1RBVEVNRU5UKEJsb2NrLCBpc0Jsb2Nr
KCkpCisKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvQVNUL1dITFNMQVNUQm9vbGVhbkxpdGVyYWwuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFTVEJvb2xlYW5MaXRlcmFsLmgKaW5kZXggMGMzYmE3
ODY1MmUuLjJjNDI0YWRhY2UxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9BU1QvV0hMU0xBU1RCb29sZWFuTGl0ZXJhbC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFTVEJvb2xlYW5MaXRlcmFsLmgKQEAg
LTUxLDYgKzUxLDggQEAgcHVibGljOgogCiAgICAgYm9vbCB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJu
IG1fdmFsdWU7IH0KIAorICAgIGJvb2wgaXNCb29sZWFuTGl0ZXJhbCgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIHRydWU7IH0KKwogcHJpdmF0ZToKICAgICBib29sIG1fdmFsdWU7CiB9OwpAQCAt
NjEsNCArNjMsNiBAQCBwcml2YXRlOgogCiB9CiAKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hM
U0xfRVhQUkVTU0lPTihCb29sZWFuTGl0ZXJhbCwgaXNCb29sZWFuTGl0ZXJhbCgpKQorCiAjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9X
SExTTEFTVEJyZWFrLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1Qv
V0hMU0xBU1RCcmVhay5oCmluZGV4IDdjMmIxMGFjNzI3Li5kM2Q0NTlkNjZiMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQVNUQnJlYWsu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xBU1RC
cmVhay5oCkBAIC00Nyw2ICs0Nyw4IEBAIHB1YmxpYzoKIAogICAgIEJyZWFrKGNvbnN0IEJyZWFr
JikgPSBkZWxldGU7CiAgICAgQnJlYWsoQnJlYWsmJikgPSBkZWZhdWx0OworICAgIAorICAgIGJv
b2wgaXNCcmVhaygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIAogcHJpdmF0ZToK
IH07CkBAIC01Nyw0ICs1OSw2IEBAIHByaXZhdGU6CiAKIH0KIAorU1BFQ0lBTElaRV9UWVBFX1RS
QUlUU19XSExTTF9TVEFURU1FTlQoQnJlYWssIGlzQnJlYWsoKSkKKwogI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xBU1RDYWxs
RXhwcmVzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dI
TFNMQVNUQ2FsbEV4cHJlc3Npb24uaAppbmRleCA2OGFmODllYWQ4NS4uYzY4MWViNzBmYTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFT
VENhbGxFeHByZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvQVNUL1dITFNMQVNUQ2FsbEV4cHJlc3Npb24uaApAQCAtNTAsNiArNTAsMTAgQEAgcHVibGlj
OgogICAgIENhbGxFeHByZXNzaW9uKGNvbnN0IENhbGxFeHByZXNzaW9uJikgPSBkZWxldGU7CiAg
ICAgQ2FsbEV4cHJlc3Npb24oQ2FsbEV4cHJlc3Npb24mJikgPSBkZWZhdWx0OwogCisgICAgYm9v
bCBpc0NhbGxFeHByZXNzaW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorCisg
ICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxFeHByZXNzaW9uPj4mIGFyZ3VtZW50cygpIHsgcmV0
dXJuIG1fYXJndW1lbnRzOyB9CisKIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fbmFtZTsKICAgICBW
ZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEV4cHJlc3Npb24+PiBtX2FyZ3VtZW50czsKQEAgLTYxLDQg
KzY1LDYgQEAgcHJpdmF0ZToKIAogfQogCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX0VY
UFJFU1NJT04oQ2FsbEV4cHJlc3Npb24sIGlzQ2FsbEV4cHJlc3Npb24oKSkKKwogI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xB
U1RDb21tYUV4cHJlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L0FTVC9XSExTTEFTVENvbW1hRXhwcmVzc2lvbi5oCmluZGV4IDc3YmYzZGNmNTBiLi41NDEzYzk1
ZjlmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMQVNUQ29tbWFFeHByZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvQVNUL1dITFNMQVNUQ29tbWFFeHByZXNzaW9uLmgKQEAgLTUwLDYgKzUwLDEw
IEBAIHB1YmxpYzoKICAgICBDb21tYUV4cHJlc3Npb24oY29uc3QgQ29tbWFFeHByZXNzaW9uJikg
PSBkZWxldGU7CiAgICAgQ29tbWFFeHByZXNzaW9uKENvbW1hRXhwcmVzc2lvbiYmKSA9IGRlZmF1
bHQ7CiAKKyAgICBib29sIGlzQ29tbWFFeHByZXNzaW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gdHJ1ZTsgfQorCisgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxFeHByZXNzaW9uPj4mIGxp
c3QoKSB7IHJldHVybiBtX2xpc3Q7IH0KKwogcHJpdmF0ZToKICAgICBWZWN0b3I8c3RkOjp1bmlx
dWVfcHRyPEV4cHJlc3Npb24+PiBtX2xpc3Q7CiB9OwpAQCAtNjAsNCArNjQsNiBAQCBwcml2YXRl
OgogCiB9CiAKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfRVhQUkVTU0lPTihDb21tYUV4
cHJlc3Npb24sIGlzQ29tbWFFeHByZXNzaW9uKCkpCisKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQVNUQ29udGludWUuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFTVENvbnRpbnVl
LmgKaW5kZXggMTY4MTAyNGU4MTMuLjA5NzQxZTg0OTFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xBU1RDb250aW51ZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFTVENvbnRpbnVlLmgK
QEAgLTQ3LDYgKzQ3LDggQEAgcHVibGljOgogCiAgICAgQ29udGludWUoY29uc3QgQ29udGludWUm
KSA9IGRlbGV0ZTsKICAgICBDb250aW51ZShDb250aW51ZSYmKSA9IGRlZmF1bHQ7CisgICAgCisg
ICAgYm9vbCBpc0NvbnRpbnVlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCiBw
cml2YXRlOgogfTsKQEAgLTU3LDQgKzU5LDYgQEAgcHJpdmF0ZToKIAogfQogCitTUEVDSUFMSVpF
X1RZUEVfVFJBSVRTX1dITFNMX1NUQVRFTUVOVChDb250aW51ZSwgaXNDb250aW51ZSgpKQorCiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTEFTVERlcmVmZXJlbmNlRXhwcmVzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQVNURGVyZWZlcmVuY2VFeHByZXNzaW9uLmgKaW5kZXgg
MmQyZjE3MTc4MDUuLmNhZTQwNTEwNTRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xBU1REZXJlZmVyZW5jZUV4cHJlc3Npb24uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xBU1REZXJlZmVy
ZW5jZUV4cHJlc3Npb24uaApAQCAtNDksNiArNDksMTAgQEAgcHVibGljOgogICAgIERlcmVmZXJl
bmNlRXhwcmVzc2lvbihjb25zdCBEZXJlZmVyZW5jZUV4cHJlc3Npb24mKSA9IGRlbGV0ZTsKICAg
ICBEZXJlZmVyZW5jZUV4cHJlc3Npb24oRGVyZWZlcmVuY2VFeHByZXNzaW9uJiYpID0gZGVmYXVs
dDsKIAorICAgIGJvb2wgaXNEZXJlZmVyZW5jZUV4cHJlc3Npb24oKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiB0cnVlOyB9CisKKyAgICBFeHByZXNzaW9uJiBwb2ludGVyKCkgeyByZXR1cm4gKm1f
cG9pbnRlcjsgfQorCiBwcml2YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxFeHByZXNzaW9uPiBt
X3BvaW50ZXI7CiB9OwpAQCAtNTksNCArNjMsNiBAQCBwcml2YXRlOgogCiB9CiAKK1NQRUNJQUxJ
WkVfVFlQRV9UUkFJVFNfV0hMU0xfRVhQUkVTU0lPTihEZXJlZmVyZW5jZUV4cHJlc3Npb24sIGlz
RGVyZWZlcmVuY2VFeHByZXNzaW9uKCkpCisKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQVNURG9XaGlsZUxvb3AuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFTVERvV2hpbGVMb29w
LmgKaW5kZXggNmNjNjljMjdmZWEuLjlmODgwYzRlYTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xBU1REb1doaWxlTG9vcC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFTVERvV2hpbGVM
b29wLmgKQEAgLTUwLDYgKzUwLDExIEBAIHB1YmxpYzoKIAogICAgIERvV2hpbGVMb29wKGNvbnN0
IERvV2hpbGVMb29wJikgPSBkZWxldGU7CiAgICAgRG9XaGlsZUxvb3AoRG9XaGlsZUxvb3AmJikg
PSBkZWZhdWx0OworICAgIAorICAgIGJvb2wgaXNEb1doaWxlTG9vcCgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIHRydWU7IH0KKworICAgIFN0YXRlbWVudCYgYm9keSgpIHsgcmV0dXJuICptX2Jv
ZHk7IH0KKyAgICBFeHByZXNzaW9uJiBjb25kaXRpb25hbCgpIHsgcmV0dXJuICptX2NvbmRpdGlv
bmFsOyB9CiAKIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPFN0YXRlbWVudD4gbV9ib2R5
OwpAQCAtNjIsNCArNjcsNiBAQCBwcml2YXRlOgogCiB9CiAKK1NQRUNJQUxJWkVfVFlQRV9UUkFJ
VFNfV0hMU0xfU1RBVEVNRU5UKERvV2hpbGVMb29wLCBpc0RvV2hpbGVMb29wKCkpCisKICNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dI
TFNMQVNURWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQVNURWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVu
dC5oCmluZGV4IGZkOWFhNzMwODA0Li4wODMyMWI2ODI3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQVNURWZmZWN0ZnVsRXhwcmVzc2lv
blN0YXRlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTEFTVEVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQuaApAQCAtNTAsNiArNTAsMTAg
QEAgcHVibGljOgogICAgIEVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQoY29uc3QgRWZmZWN0
ZnVsRXhwcmVzc2lvblN0YXRlbWVudCYpID0gZGVsZXRlOwogICAgIEVmZmVjdGZ1bEV4cHJlc3Np
b25TdGF0ZW1lbnQoRWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVudCYmKSA9IGRlZmF1bHQ7CiAK
KyAgICBib29sIGlzRWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVudCgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIHRydWU7IH0KKworICAgIEV4cHJlc3Npb24mIGVmZmVjdGZ1bEV4cHJlc3Npb24o
KSB7IHJldHVybiAqbV9lZmZlY3RmdWxFeHByZXNzaW9uOyB9CisKIHByaXZhdGU6CiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPEV4cHJlc3Npb24+IG1fZWZmZWN0ZnVsRXhwcmVzc2lvbjsKIH07CkBAIC02
MCw0ICs2NCw2IEBAIHByaXZhdGU6CiAKIH0KIAorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExT
TF9TVEFURU1FTlQoRWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVudCwgaXNFZmZlY3RmdWxFeHBy
ZXNzaW9uU3RhdGVtZW50KCkpCisKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQVNURW51bWVyYXRpb25EZWZpbml0aW9uLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xBU1RFbnVtZXJh
dGlvbkRlZmluaXRpb24uaAppbmRleCBkNjA3ZjY2MjA3Ni4uMGIwODhhMzQyOGEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFTVEVudW1l
cmF0aW9uRGVmaW5pdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML0FTVC9XSExTTEFTVEVudW1lcmF0aW9uRGVmaW5pdGlvbi5oCkBAIC0zOSw5ICszOSw5IEBA
IG5hbWVzcGFjZSBXSExTTCB7CiAKIG5hbWVzcGFjZSBBU1QgewogCi1jbGFzcyBFbnVtZXJhdGlv
bkRlZmluaXRpb24gOiBwdWJsaWMgVHlwZSB7CitjbGFzcyBFbnVtZXJhdGlvbkRlZmluaXRpb24g
OiBwdWJsaWMgTm9kZSB7CiBwdWJsaWM6Ci0gICAgRW51bWVyYXRpb25EZWZpbml0aW9uKExleGVy
OjpUb2tlbiYmIG9yaWdpbiwgU3RyaW5nJiYgbmFtZSwgc3RkOjp1bmlxdWVfcHRyPFR5cGU+JiYg
dHlwZSwgVmVjdG9yPEVudW1lcmF0aW9uTWVtYmVyPiBtZW1iZXJzKQorICAgIEVudW1lcmF0aW9u
RGVmaW5pdGlvbihMZXhlcjo6VG9rZW4mJiBvcmlnaW4sIFN0cmluZyYmIG5hbWUsIHN0ZDo6dW5p
cXVlX3B0cjxUeXBlPiYmIHR5cGUsIEVudW1lcmF0aW9uTWVtYmVycyYmIG1lbWJlcnMpCiAgICAg
ICAgIDogbV9vcmlnaW4oV1RGTW92ZShvcmlnaW4pKQogICAgICAgICAsIG1fbmFtZShXVEZNb3Zl
KG5hbWUpKQogICAgICAgICAsIG1fdHlwZShXVEZNb3ZlKHR5cGUpKQpAQCAtNTQsMTcgKzU0LDE0
IEBAIHB1YmxpYzoKICAgICBFbnVtZXJhdGlvbkRlZmluaXRpb24oY29uc3QgRW51bWVyYXRpb25E
ZWZpbml0aW9uJikgPSBkZWxldGU7CiAgICAgRW51bWVyYXRpb25EZWZpbml0aW9uKEVudW1lcmF0
aW9uRGVmaW5pdGlvbiYmKSA9IGRlZmF1bHQ7CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8VHlwZT4g
Y2xvbmUoKSBjb25zdCBvdmVycmlkZQotICAgIHsKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KKyAgICBUeXBlJiB0eXBlKCkgeyBy
ZXR1cm4gKm1fdHlwZTsgfQorICAgIEVudW1lcmF0aW9uTWVtYmVycyYgZW51bWVyYXRpb25NZW1i
ZXJzKCkgeyByZXR1cm4gbV9tZW1iZXJzOyB9CiAKIHByaXZhdGU6CiAgICAgTGV4ZXI6OlRva2Vu
IG1fb3JpZ2luOwogICAgIFN0cmluZyBtX25hbWU7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFR5cGU+
IG1fdHlwZTsKLSAgICBWZWN0b3I8RW51bWVyYXRpb25NZW1iZXI+IG1fbWVtYmVyczsKKyAgICBF
bnVtZXJhdGlvbk1lbWJlcnMgbV9tZW1iZXJzOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQVNURW51bWVyYXRpb25NZW1i
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFTVEVu
dW1lcmF0aW9uTWVtYmVyLmgKaW5kZXggMWVjOTFlYWJlOWYuLmJhMGQ4NGU1MDYxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xBU1RFbnVt
ZXJhdGlvbk1lbWJlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L0FTVC9XSExTTEFTVEVudW1lcmF0aW9uTWVtYmVyLmgKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNs
dWRlICJXSExTTEFTVE5vZGUuaCIKICNpbmNsdWRlICJXSExTTExleGVyLmgiCiAjaW5jbHVkZSA8
d3RmL09wdGlvbmFsLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01MywxMiArNTQsMTYg
QEAgcHVibGljOgogICAgIEVudW1lcmF0aW9uTWVtYmVyKGNvbnN0IEVudW1lcmF0aW9uTWVtYmVy
JikgPSBkZWxldGU7CiAgICAgRW51bWVyYXRpb25NZW1iZXIoRW51bWVyYXRpb25NZW1iZXImJikg
PSBkZWZhdWx0OwogCisgICAgc3RkOjpvcHRpb25hbDxDb25zdGFudEV4cHJlc3Npb24+JiB2YWx1
ZSgpIHsgcmV0dXJuIG1fdmFsdWU7IH0KKwogcHJpdmF0ZToKICAgICBMZXhlcjo6VG9rZW4gbV9v
cmlnaW47CiAgICAgU3RyaW5nIG1fbmFtZTsKICAgICBzdGQ6Om9wdGlvbmFsPENvbnN0YW50RXhw
cmVzc2lvbj4gbV92YWx1ZTsKIH07CiAKK3R5cGVkZWYgVmVjdG9yPEVudW1lcmF0aW9uTWVtYmVy
PiBFbnVtZXJhdGlvbk1lbWJlcnM7CisKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQVNURXhwcmVzc2lvbi5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQVNURXhwcmVzc2lvbi5oCmlu
ZGV4IDgyNjgwMzIxYTMxLi4wZTFkNmRkMWM2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQVNURXhwcmVzc2lvbi5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFTVEV4cHJlc3Npb24uaApA
QCAtNTAsNiArNTAsMjQgQEAgcHVibGljOgogCiAgICAgTGV4ZXI6OlRva2VuIG9yaWdpbigpIGNv
bnN0IHsgcmV0dXJuIG1fb3JpZ2luOyB9CiAKKyAgICB2aXJ0dWFsIGJvb2wgaXNBc3NpZ25tZW50
RXhwcmVzc2lvbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGlz
Qm9vbGVhbkxpdGVyYWwoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9v
bCBpc0NhbGxFeHByZXNzaW9uKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFs
IGJvb2wgaXNDb21tYUV4cHJlc3Npb24oKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZp
cnR1YWwgYm9vbCBpc0RlcmVmZXJlbmNlRXhwcmVzc2lvbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNl
OyB9CisgICAgdmlydHVhbCBib29sIGlzRmxvYXRMaXRlcmFsKCkgY29uc3QgeyByZXR1cm4gZmFs
c2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNJbnRlZ2VyTGl0ZXJhbCgpIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGlzTG9naWNhbEV4cHJlc3Npb24oKSBjb25zdCB7
IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc0xvZ2ljYWxOb3RFeHByZXNzaW9u
KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNNYWtlQXJyYXlS
ZWZlcmVuY2VFeHByZXNzaW9uKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFs
IGJvb2wgaXNNYWtlUG9pbnRlckV4cHJlc3Npb24oKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQor
ICAgIHZpcnR1YWwgYm9vbCBpc051bGxMaXRlcmFsKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0K
KyAgICB2aXJ0dWFsIGJvb2wgaXNQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24oKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc1JlYWRNb2RpZnlXcml0ZUV4cHJlc3Np
b24oKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc1Rlcm5hcnlF
eHByZXNzaW9uKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNV
bnNpZ25lZEludGVnZXJMaXRlcmFsKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0
dWFsIGJvb2wgaXNWYXJpYWJsZVJlZmVyZW5jZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisK
IHByaXZhdGU6CiAgICAgTGV4ZXI6OlRva2VuIG1fb3JpZ2luOwogfTsKQEAgLTYwLDQgKzc4LDkg
QEAgcHJpdmF0ZToKIAogfQogCisjZGVmaW5lIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xf
RVhQUkVTU0lPTihUb1ZhbHVlVHlwZU5hbWUsIHByZWRpY2F0ZSkgXAorU1BFQ0lBTElaRV9UWVBF
X1RSQUlUU19CRUdJTihXZWJDb3JlOjpXSExTTDo6QVNUOjpUb1ZhbHVlVHlwZU5hbWUpIFwKKyAg
ICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6V0hMU0w6OkFTVDo6RXhwcmVzc2lv
biYgZXhwcmVzc2lvbikgeyByZXR1cm4gZXhwcmVzc2lvbi5wcmVkaWNhdGU7IH0gXAorU1BFQ0lB
TElaRV9UWVBFX1RSQUlUU19FTkQoKQorCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFTVEZhbGx0aHJvdWdoLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xBU1RGYWxsdGhyb3VnaC5o
CmluZGV4IGY3ZTNiYjUwMTg2Li41NzNiNTY5MjM2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQVNURmFsbHRocm91Z2guaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xBU1RGYWxsdGhyb3Vn
aC5oCkBAIC00Nyw2ICs0Nyw4IEBAIHB1YmxpYzoKIAogICAgIEZhbGx0aHJvdWdoKGNvbnN0IEZh
bGx0aHJvdWdoJikgPSBkZWxldGU7CiAgICAgRmFsbHRocm91Z2goRmFsbHRocm91Z2gmJikgPSBk
ZWZhdWx0OworICAgIAorICAgIGJvb2wgaXNGYWxsdGhyb3VnaCgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIHRydWU7IH0KIAogcHJpdmF0ZToKIH07CkBAIC01Nyw0ICs1OSw2IEBAIHByaXZhdGU6
CiAKIH0KIAorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9TVEFURU1FTlQoRmFsbHRocm91
Z2gsIGlzRmFsbHRocm91Z2goKSkKKwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xBU1RGbG9hdExpdGVyYWwuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFTVEZsb2F0TGl0ZXJhbC5o
CmluZGV4IGU0NTBiZDI3Mjg5Li45ZTgzOTQzNWMxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQVNURmxvYXRMaXRlcmFsLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQVNURmxvYXRMaXRl
cmFsLmgKQEAgLTUxLDYgKzUxLDggQEAgcHVibGljOgogCiAgICAgZmxvYXQgdmFsdWUoKSBjb25z
dCB7IHJldHVybiBtX3ZhbHVlOyB9CiAKKyAgICBib29sIGlzRmxvYXRMaXRlcmFsKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorCiBwcml2YXRlOgogICAgIGZsb2F0IG1fdmFsdWU7
CiB9OwpAQCAtNjEsNCArNjMsNiBAQCBwcml2YXRlOgogCiB9CiAKK1NQRUNJQUxJWkVfVFlQRV9U
UkFJVFNfV0hMU0xfRVhQUkVTU0lPTihGbG9hdExpdGVyYWwsIGlzRmxvYXRMaXRlcmFsKCkpCisK
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
QVNUL1dITFNMQVNURm9yTG9vcC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvQVNUL1dITFNMQVNURm9yTG9vcC5oCmluZGV4IDIyNjA2Mzg0NzY0Li4zNmYyYzMyOWJjMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNM
QVNURm9yTG9vcC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTEFTVEZvckxvb3AuaApAQCAtNTcsNiArNTcsMTMgQEAgcHVibGljOgogCiAgICAgRm9y
TG9vcChjb25zdCBGb3JMb29wJikgPSBkZWxldGU7CiAgICAgRm9yTG9vcChGb3JMb29wJiYpID0g
ZGVmYXVsdDsKKyAgICAKKyAgICBib29sIGlzRm9yTG9vcCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIHRydWU7IH0KKworICAgIFZhcmlhbnQ8VmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQs
IHN0ZDo6dW5pcXVlX3B0cjxFeHByZXNzaW9uPj4mIGluaXRpYWxpemF0aW9uKCkgeyByZXR1cm4g
bV9pbml0aWFsaXphdGlvbjsgfQorICAgIEV4cHJlc3Npb24qIGNvbmRpdGlvbigpIHsgcmV0dXJu
IG1fY29uZGl0aW9uLmdldCgpOyB9CisgICAgRXhwcmVzc2lvbiogaW5jcmVtZW50KCkgeyByZXR1
cm4gbV9pbmNyZW1lbnQuZ2V0KCk7IH0KKyAgICBTdGF0ZW1lbnQmIGJvZHkoKSB7IHJldHVybiAq
bV9ib2R5OyB9CiAKIHByaXZhdGU6CiAgICAgVmFyaWFudDxWYXJpYWJsZURlY2xhcmF0aW9uc1N0
YXRlbWVudCwgc3RkOjp1bmlxdWVfcHRyPEV4cHJlc3Npb24+PiBtX2luaXRpYWxpemF0aW9uOwpA
QCAtNzEsNCArNzgsNiBAQCBwcml2YXRlOgogCiB9CiAKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNf
V0hMU0xfU1RBVEVNRU5UKEZvckxvb3AsIGlzRm9yTG9vcCgpKQorCiAjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFTVEZ1bmN0
aW9uRGVjbGFyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTEFTVEZ1bmN0aW9uRGVjbGFyYXRpb24uaAppbmRleCBmZjc4YzRkOGI5YS4uMjRmYmRj
ODE1MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTEFTVEZ1bmN0aW9uRGVjbGFyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xBU1RGdW5jdGlvbkRlY2xhcmF0aW9uLmgKQEAgLTY1
LDYgKzY1LDExIEBAIHB1YmxpYzoKICAgICBGdW5jdGlvbkRlY2xhcmF0aW9uKGNvbnN0IEZ1bmN0
aW9uRGVjbGFyYXRpb24mKSA9IGRlbGV0ZTsKICAgICBGdW5jdGlvbkRlY2xhcmF0aW9uKEZ1bmN0
aW9uRGVjbGFyYXRpb24mJikgPSBkZWZhdWx0OwogCisgICAgQXR0cmlidXRlQmxvY2smIGF0dHJp
YnV0ZUJsb2NrKCkgeyByZXR1cm4gbV9hdHRyaWJ1dGVCbG9jazsgfQorICAgIEFTVDo6VHlwZSYg
dHlwZSgpIHsgcmV0dXJuICptX3R5cGU7IH0KKyAgICBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKCkg
eyByZXR1cm4gbV9wYXJhbWV0ZXJzOyB9CisgICAgc3RkOjpvcHRpb25hbDxBU1Q6OlNlbWFudGlj
PiYgc2VtYW50aWMoKSB7IHJldHVybiBtX3NlbWFudGljOyB9CisKICAgICBMZXhlcjo6VG9rZW4m
JiB0YWtlT3JpZ2luKCkgeyByZXR1cm4gV1RGTW92ZShtX29yaWdpbik7IH0KICAgICBBdHRyaWJ1
dGVCbG9jayYmIHRha2VBdHRyaWJ1dGVCbG9jaygpIHsgcmV0dXJuIFdURk1vdmUobV9hdHRyaWJ1
dGVCbG9jayk7IH0KICAgICBzdGQ6Om9wdGlvbmFsPEVudHJ5UG9pbnRUeXBlPiYmIHRha2VFbnRy
eVBvaW50VHlwZSgpIHsgcmV0dXJuIFdURk1vdmUobV9lbnRyeVBvaW50VHlwZSk7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFTVEZ1
bmN0aW9uRGVmaW5pdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
QVNUL1dITFNMQVNURnVuY3Rpb25EZWZpbml0aW9uLmgKaW5kZXggOGQ3MjA5YTZjN2YuLjVlMDdk
ZjZjY2I1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9B
U1QvV0hMU0xBU1RGdW5jdGlvbkRlZmluaXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xBU1RGdW5jdGlvbkRlZmluaXRpb24uaApAQCAtNTAs
NiArNTAsNyBAQCBwdWJsaWM6CiAgICAgRnVuY3Rpb25EZWZpbml0aW9uKGNvbnN0IEZ1bmN0aW9u
RGVmaW5pdGlvbiYpID0gZGVsZXRlOwogICAgIEZ1bmN0aW9uRGVmaW5pdGlvbihGdW5jdGlvbkRl
ZmluaXRpb24mJikgPSBkZWZhdWx0OwogCisgICAgQmxvY2smIGJsb2NrKCkgeyByZXR1cm4gbV9i
bG9jazsgfQogICAgIGJvb2wgcmVzdHJpY3RlZCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzdHJpY3Rl
ZDsgfQogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvQVNUL1dITFNMQVNUSWZTdGF0ZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFTVElmU3RhdGVtZW50LmgKaW5kZXggMTgxMzFlNDQz
YjMuLmYzODQ4Yzk1ZDY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9BU1QvV0hMU0xBU1RJZlN0YXRlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFTVElmU3RhdGVtZW50LmgKQEAgLTUxLDExICs1
MSwxNyBAQCBwdWJsaWM6CiAKICAgICBJZlN0YXRlbWVudChjb25zdCBJZlN0YXRlbWVudCYpID0g
ZGVsZXRlOwogICAgIElmU3RhdGVtZW50KElmU3RhdGVtZW50JiYpID0gZGVmYXVsdDsKKyAgICAK
KyAgICBib29sIGlzSWZTdGF0ZW1lbnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9
CisKKyAgICBFeHByZXNzaW9uJiBjb25kaXRpb25hbCgpIHsgcmV0dXJuICptX2NvbmRpdGlvbmFs
OyB9CisgICAgU3RhdGVtZW50JiBib2R5KCkgeyByZXR1cm4gKm1fYm9keTsgfQorICAgIFN0YXRl
bWVudCogZWxzZUJvZHkoKSB7IHJldHVybiBtX2Vsc2VCb2R5LmdldCgpOyB9CiAKIHByaXZhdGU6
CiAgICAgc3RkOjp1bmlxdWVfcHRyPEV4cHJlc3Npb24+IG1fY29uZGl0aW9uYWw7CiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPFN0YXRlbWVudD4gbV9ib2R5OwotICAgIHN0ZDo6dW5pcXVlX3B0cjxTdGF0
ZW1lbnQ+IG1fZWxzZUJvZHk7CisgICAgc3RkOjp1bmlxdWVfcHRyPFN0YXRlbWVudD4gbV9lbHNl
Qm9keTsgLy8gbnVsbGFibGUKIH07CiAKIH0KQEAgLTY0LDQgKzcwLDYgQEAgcHJpdmF0ZToKIAog
fQogCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX1NUQVRFTUVOVChJZlN0YXRlbWVudCwg
aXNJZlN0YXRlbWVudCgpKQorCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFTVEludGVnZXJMaXRlcmFsLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xBU1RJbnRlZ2VyTGl0ZXJhbC5o
CmluZGV4IGQ2YjUxZDE4ZmNlLi5jMGVlYmY0NTJhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQVNUSW50ZWdlckxpdGVyYWwuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xBU1RJbnRlZ2Vy
TGl0ZXJhbC5oCkBAIC01MSw2ICs1MSw4IEBAIHB1YmxpYzoKIAogICAgIGludCB2YWx1ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fdmFsdWU7IH0KIAorICAgIGJvb2wgaXNJbnRlZ2VyTGl0ZXJhbCgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKwogcHJpdmF0ZToKICAgICBpbnQgbV92YWx1
ZTsKIH07CkBAIC02MSw0ICs2Myw2IEBAIHByaXZhdGU6CiAKIH0KIAorU1BFQ0lBTElaRV9UWVBF
X1RSQUlUU19XSExTTF9FWFBSRVNTSU9OKEludGVnZXJMaXRlcmFsLCBpc0ludGVnZXJMaXRlcmFs
KCkpCisKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvQVNUL1dITFNMQVNUTG9naWNhbEV4cHJlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFTVExvZ2ljYWxFeHByZXNzaW9uLmgKaW5kZXgg
NzdiZWIxZTNiOTEuLmI2NjU4NDRjMzUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xBU1RMb2dpY2FsRXhwcmVzc2lvbi5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFTVExvZ2ljYWxFeHBy
ZXNzaW9uLmgKQEAgLTU4LDYgKzU4LDExIEBAIHB1YmxpYzoKIAogICAgIFR5cGUgdHlwZSgpIGNv
bnN0IHsgcmV0dXJuIG1fdHlwZTsgfQogCisgICAgYm9vbCBpc0xvZ2ljYWxFeHByZXNzaW9uKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorCisgICAgRXhwcmVzc2lvbiYgbGVmdCgp
IHsgcmV0dXJuICptX2xlZnQ7IH0KKyAgICBFeHByZXNzaW9uJiByaWdodCgpIHsgcmV0dXJuICpt
X3JpZ2h0OyB9CisKIHByaXZhdGU6CiAgICAgVHlwZSBtX3R5cGU7CiAgICAgc3RkOjp1bmlxdWVf
cHRyPEV4cHJlc3Npb24+IG1fbGVmdDsKQEAgLTcwLDQgKzc1LDYgQEAgcHJpdmF0ZToKIAogfQog
CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX0VYUFJFU1NJT04oTG9naWNhbEV4cHJlc3Np
b24sIGlzTG9naWNhbEV4cHJlc3Npb24oKSkKKwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xBU1RMb2dpY2FsTm90RXhwcmVz
c2lvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQVNU
TG9naWNhbE5vdEV4cHJlc3Npb24uaAppbmRleCA4YzkzZDg4NTc2MS4uMDA3Njc2YWZhNmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFT
VExvZ2ljYWxOb3RFeHByZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvQVNUL1dITFNMQVNUTG9naWNhbE5vdEV4cHJlc3Npb24uaApAQCAtNDksNiArNDks
MTAgQEAgcHVibGljOgogICAgIExvZ2ljYWxOb3RFeHByZXNzaW9uKGNvbnN0IExvZ2ljYWxOb3RF
eHByZXNzaW9uJikgPSBkZWxldGU7CiAgICAgTG9naWNhbE5vdEV4cHJlc3Npb24oTG9naWNhbE5v
dEV4cHJlc3Npb24mJikgPSBkZWZhdWx0OwogCisgICAgYm9vbCBpc0xvZ2ljYWxOb3RFeHByZXNz
aW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorCisgICAgRXhwcmVzc2lvbiYg
b3BlcmFuZCgpIHsgcmV0dXJuICptX29wZXJhbmQ7IH0KKwogcHJpdmF0ZToKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8RXhwcmVzc2lvbj4gbV9vcGVyYW5kOwogfTsKQEAgLTU5LDQgKzYzLDYgQEAgcHJp
dmF0ZToKIAogfQogCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX0VYUFJFU1NJT04oTG9n
aWNhbE5vdEV4cHJlc3Npb24sIGlzTG9naWNhbE5vdEV4cHJlc3Npb24oKSkKKwogI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xB
U1RNYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xBU1RNYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uLmgK
aW5kZXggMTBmODIwNmU4OGEuLmUzMDgzMTc1ZmM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xBU1RNYWtlQXJyYXlSZWZlcmVuY2VFeHBy
ZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dI
TFNMQVNUTWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbi5oCkBAIC00OSw2ICs0OSwxMCBAQCBw
dWJsaWM6CiAgICAgTWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbihjb25zdCBNYWtlQXJyYXlS
ZWZlcmVuY2VFeHByZXNzaW9uJikgPSBkZWxldGU7CiAgICAgTWFrZUFycmF5UmVmZXJlbmNlRXhw
cmVzc2lvbihNYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uJiYpID0gZGVmYXVsdDsKIAorICAg
IGJvb2wgaXNNYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gdHJ1ZTsgfQorCisgICAgRXhwcmVzc2lvbiYgbFZhbHVlKCkgeyByZXR1cm4gKm1fbFZh
bHVlOyB9CisKIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPEV4cHJlc3Npb24+IG1fbFZh
bHVlOwogfTsKQEAgLTU5LDQgKzYzLDYgQEAgcHJpdmF0ZToKIAogfQogCitTUEVDSUFMSVpFX1RZ
UEVfVFJBSVRTX1dITFNMX0VYUFJFU1NJT04oTWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbiwg
aXNNYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uKCkpCisKICNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQVNUTWFrZVBvaW50
ZXJFeHByZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1Qv
V0hMU0xBU1RNYWtlUG9pbnRlckV4cHJlc3Npb24uaAppbmRleCA2OWZhOTI0MGUxMC4uNjBlYmM1
OTU5NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTEFTVE1ha2VQb2ludGVyRXhwcmVzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFTVE1ha2VQb2ludGVyRXhwcmVzc2lvbi5oCkBA
IC00OSw2ICs0OSwxMCBAQCBwdWJsaWM6CiAgICAgTWFrZVBvaW50ZXJFeHByZXNzaW9uKGNvbnN0
IE1ha2VQb2ludGVyRXhwcmVzc2lvbiYpID0gZGVsZXRlOwogICAgIE1ha2VQb2ludGVyRXhwcmVz
c2lvbihNYWtlUG9pbnRlckV4cHJlc3Npb24mJikgPSBkZWZhdWx0OwogCisgICAgYm9vbCBpc01h
a2VQb2ludGVyRXhwcmVzc2lvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKwor
ICAgIEV4cHJlc3Npb24mIGxWYWx1ZSgpIHsgcmV0dXJuICptX2xWYWx1ZTsgfQorCiBwcml2YXRl
OgogICAgIHN0ZDo6dW5pcXVlX3B0cjxFeHByZXNzaW9uPiBtX2xWYWx1ZTsKIH07CkBAIC01OSw0
ICs2Myw2IEBAIHByaXZhdGU6CiAKIH0KIAorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9F
WFBSRVNTSU9OKE1ha2VQb2ludGVyRXhwcmVzc2lvbiwgaXNNYWtlUG9pbnRlckV4cHJlc3Npb24o
KSkKKwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9BU1QvV0hMU0xBU1ROYXRpdmVUeXBlRGVjbGFyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFTVE5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5o
CmluZGV4IDgzZjk1NDM5M2M1Li44MjhmMDQzN2FlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQVNUTmF0aXZlVHlwZURlY2xhcmF0aW9u
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQVNU
TmF0aXZlVHlwZURlY2xhcmF0aW9uLmgKQEAgLTUyLDYgKzUyLDggQEAgcHVibGljOgogICAgIE5h
dGl2ZVR5cGVEZWNsYXJhdGlvbihjb25zdCBOYXRpdmVUeXBlRGVjbGFyYXRpb24mKSA9IGRlbGV0
ZTsKICAgICBOYXRpdmVUeXBlRGVjbGFyYXRpb24oTmF0aXZlVHlwZURlY2xhcmF0aW9uJiYpID0g
ZGVmYXVsdDsKIAorICAgIFR5cGVBcmd1bWVudHMmIHR5cGVBcmd1bWVudHMoKSB7IHJldHVybiBt
X3R5cGVBcmd1bWVudHM7IH0KKwogICAgIHN0ZDo6dW5pcXVlX3B0cjxUeXBlPiBjbG9uZSgpIGNv
bnN0IG92ZXJyaWRlCiAgICAgewogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFTVE51
bGxMaXRlcmFsLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xBU1ROdWxsTGl0ZXJhbC5oCmluZGV4IDViYTdmNjg3ZTgzLi40YmRmNDAxMWQ4NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQVNUTnVs
bExpdGVyYWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1Qv
V0hMU0xBU1ROdWxsTGl0ZXJhbC5oCkBAIC00OCw2ICs0OCw4IEBAIHB1YmxpYzoKICAgICBleHBs
aWNpdCBOdWxsTGl0ZXJhbChjb25zdCBOdWxsTGl0ZXJhbCYpID0gZGVmYXVsdDsKICAgICBOdWxs
TGl0ZXJhbChOdWxsTGl0ZXJhbCYmKSA9IGRlZmF1bHQ7CiAKKyAgICBib29sIGlzTnVsbExpdGVy
YWwoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisKIHByaXZhdGU6CiB9OwogCkBA
IC01Nyw0ICs1OSw2IEBAIHByaXZhdGU6CiAKIH0KIAorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19X
SExTTF9FWFBSRVNTSU9OKE51bGxMaXRlcmFsLCBpc051bGxMaXRlcmFsKCkpCisKICNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNM
QVNUUGFyYW1ldGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1Qv
V0hMU0xBU1RQYXJhbWV0ZXIuaAppbmRleCA2YjkxOWZhNTc1My4uODA5MWI3ZmViYmYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFTVFBh
cmFtZXRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9X
SExTTEFTVFBhcmFtZXRlci5oCkBAIC01Nyw2ICs1Nyw5IEBAIHB1YmxpYzoKICAgICBQYXJhbWV0
ZXIoY29uc3QgUGFyYW1ldGVyJikgPSBkZWxldGU7CiAgICAgUGFyYW1ldGVyKFBhcmFtZXRlciYm
KSA9IGRlZmF1bHQ7CiAKKyAgICBUeXBlJiB0eXBlKCkgeyByZXR1cm4gKm1fdHlwZTsgfQorICAg
IHN0ZDo6b3B0aW9uYWw8QVNUOjpTZW1hbnRpYz4mIHNlbWFudGljKCkgeyByZXR1cm4gbV9zZW1h
bnRpYzsgfQorCiBwcml2YXRlOgogICAgIExleGVyOjpUb2tlbiBtX29yaWdpbjsKICAgICBRdWFs
aWZpZXJzIG1fcXVhbGlmaWVyczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTEFTVFBvaW50ZXJUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xBU1RQb2ludGVyVHlwZS5oCmluZGV4IDRkNGJm
NWNhY2Y1Li4wZTU2NDkzMGM1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvQVNUL1dITFNMQVNUUG9pbnRlclR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xBU1RQb2ludGVyVHlwZS5oCkBAIC00OSw5
ICs0OSwxMSBAQCBwdWJsaWM6CiAgICAgUG9pbnRlclR5cGUoY29uc3QgUG9pbnRlclR5cGUmKSA9
IGRlbGV0ZTsKICAgICBQb2ludGVyVHlwZShQb2ludGVyVHlwZSYmKSA9IGRlZmF1bHQ7CiAKKyAg
ICBib29sIGlzUG9pbnRlclR5cGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQor
CiAgICAgc3RkOjp1bmlxdWVfcHRyPFR5cGU+IGNsb25lKCkgY29uc3Qgb3ZlcnJpZGUKICAgICB7
Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBvaW50ZXJUeXBlPihMZXhlcjo6VG9r
ZW4ob3JpZ2luKCkpLCBTdHJpbmcoYWRkcmVzc1NwYWNlKCkpLCBlbGVtZW50VHlwZSgpLT5jbG9u
ZSgpKTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UG9pbnRlclR5cGU+KExleGVy
OjpUb2tlbihvcmlnaW4oKSksIFN0cmluZyhhZGRyZXNzU3BhY2UoKSksIGVsZW1lbnRUeXBlKCku
Y2xvbmUoKSk7CiAgICAgfQogCiBwcml2YXRlOgpAQCAtNjMsNCArNjUsNiBAQCBwcml2YXRlOgog
CiB9CiAKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfVFlQRShQb2ludGVyVHlwZSwgaXNQ
b2ludGVyVHlwZSgpKQorCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFTVFByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbi5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQVNUUHJvcGVydHlB
Y2Nlc3NFeHByZXNzaW9uLmgKaW5kZXggZjEyYjNiMjhhMjEuLjhlZjdlODRmMTg2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xBU1RQcm9w
ZXJ0eUFjY2Vzc0V4cHJlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9BU1QvV0hMU0xBU1RQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24uaApAQCAtNDksNiAr
NDksMTAgQEAgcHVibGljOgogICAgIFByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbihjb25zdCBQcm9w
ZXJ0eUFjY2Vzc0V4cHJlc3Npb24mKSA9IGRlbGV0ZTsKICAgICBQcm9wZXJ0eUFjY2Vzc0V4cHJl
c3Npb24oUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uJiYpID0gZGVmYXVsdDsKIAorICAgIGJvb2wg
aXNQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVl
OyB9CisKKyAgICBFeHByZXNzaW9uJiBiYXNlKCkgeyByZXR1cm4gKm1fYmFzZTsgfQorCiBwcml2
YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxFeHByZXNzaW9uPiBtX2Jhc2U7CiB9OwpAQCAtNTks
NCArNjMsNiBAQCBwcml2YXRlOgogCiB9CiAKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xf
RVhQUkVTU0lPTihQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24sIGlzUHJvcGVydHlBY2Nlc3NFeHBy
ZXNzaW9uKCkpCisKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvQVNUL1dITFNMQVNUUmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbi5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQVNUUmVhZE1vZGlmeVdy
aXRlRXhwcmVzc2lvbi5oCmluZGV4IDNmMjdlNmEzYzJjLi4yOTg3YzhhN2RjYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQVNUUmVhZE1v
ZGlmeVdyaXRlRXhwcmVzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML0FTVC9XSExTTEFTVFJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24uaApAQCAtODQsNiAr
ODQsMTQgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxWYXJpYWJs
ZVJlZmVyZW5jZT4oVmFyaWFibGVSZWZlcmVuY2U6OndyYXAobV9uZXdWYWx1ZSkpOwogICAgIH0K
IAorICAgIGJvb2wgaXNSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gdHJ1ZTsgfQorCisgICAgRXhwcmVzc2lvbiYgbFZhbHVlKCkgeyByZXR1cm4gKm1f
bFZhbHVlOyB9CisgICAgQW5vbnltb3VzVmFyaWFibGVEZWNsYXJhdGlvbiYgb2xkVmFsdWUoKSB7
IHJldHVybiBtX29sZFZhbHVlOyB9CisgICAgQW5vbnltb3VzVmFyaWFibGVEZWNsYXJhdGlvbiYg
bmV3VmFsdWUoKSB7IHJldHVybiBtX25ld1ZhbHVlOyB9CisgICAgRXhwcmVzc2lvbiYgbmV3VmFs
dWVFeHByZXNzaW9uKCkgeyByZXR1cm4gKm1fbmV3VmFsdWVFeHByZXNzaW9uOyB9CisgICAgRXhw
cmVzc2lvbiYgcmVzdWx0RXhwcmVzc2lvbigpIHsgcmV0dXJuICptX3Jlc3VsdEV4cHJlc3Npb247
IH0KKwogcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RXhwcmVzc2lvbj4gbV9sVmFsdWU7
CiAgICAgQW5vbnltb3VzVmFyaWFibGVEZWNsYXJhdGlvbiBtX29sZFZhbHVlOwpAQCAtOTgsNCAr
MTA2LDYgQEAgcHJpdmF0ZToKIAogfQogCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX0VY
UFJFU1NJT04oUmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbiwgaXNSZWFkTW9kaWZ5V3JpdGVFeHBy
ZXNzaW9uKCkpCisKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvQVNUL1dITFNMQVNUUmVmZXJlbmNlVHlwZS5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQVNUUmVmZXJlbmNlVHlwZS5oCmluZGV4IDcw
MWJiYjFiYTU3Li45YzZmYWU5MzY1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQVNUUmVmZXJlbmNlVHlwZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFTVFJlZmVyZW5jZVR5cGUuaApA
QCAtNTAsMTEgKzUwLDEzIEBAIHB1YmxpYzoKIAogICAgIFJlZmVyZW5jZVR5cGUoY29uc3QgUmVm
ZXJlbmNlVHlwZSYpID0gZGVsZXRlOwogICAgIFJlZmVyZW5jZVR5cGUoUmVmZXJlbmNlVHlwZSYm
KSA9IGRlZmF1bHQ7CisgICAgCisgICAgVHlwZSYgZWxlbWVudFR5cGUoKSB7IHJldHVybiAqbV9l
bGVtZW50VHlwZTsgfQogCiBwcm90ZWN0ZWQ6CiAgICAgY29uc3QgTGV4ZXI6OlRva2VuJiBvcmln
aW4oKSBjb25zdCB7IHJldHVybiBtX29yaWdpbjsgfQogICAgIGNvbnN0IFN0cmluZyYgYWRkcmVz
c1NwYWNlKCkgY29uc3QgeyByZXR1cm4gbV9hZGRyZXNzU3BhY2U7IH0KLSAgICBjb25zdCBzdGQ6
OnVuaXF1ZV9wdHI8VHlwZT4mIGVsZW1lbnRUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9lbGVtZW50
VHlwZTsgfQorICAgIGNvbnN0IFR5cGUmIGVsZW1lbnRUeXBlKCkgY29uc3QgeyByZXR1cm4gKm1f
ZWxlbWVudFR5cGU7IH0KIAogcHJpdmF0ZToKICAgICBMZXhlcjo6VG9rZW4gbV9vcmlnaW47CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xB
U1RSZXR1cm4uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExT
TEFTVFJldHVybi5oCmluZGV4IDEwZDc4NmZjZWM2Li43MmY2ZjU3NGJlMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQVNUUmV0dXJuLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQVNUUmV0
dXJuLmgKQEAgLTQ5LDkgKzQ5LDEzIEBAIHB1YmxpYzoKIAogICAgIFJldHVybihjb25zdCBSZXR1
cm4mKSA9IGRlbGV0ZTsKICAgICBSZXR1cm4oUmV0dXJuJiYpID0gZGVmYXVsdDsKKyAgICAKKyAg
ICBib29sIGlzUmV0dXJuKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorCisgICAg
RXhwcmVzc2lvbiogdmFsdWUoKSB7IHJldHVybiBtX3ZhbHVlLmdldCgpOyB9CiAKIHByaXZhdGU6
Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEV4cHJlc3Npb24+IG1fdmFsdWU7CisgICAgc3RkOjp1bmlx
dWVfcHRyPEV4cHJlc3Npb24+IG1fdmFsdWU7IC8vIG51bGxhYmxlCiB9OwogCiB9CkBAIC02MCw0
ICs2NCw2IEBAIHByaXZhdGU6CiAKIH0KIAorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9T
VEFURU1FTlQoUmV0dXJuLCBpc1JldHVybigpKQorCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFTVFN0YXRlbWVudC5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQVNUU3RhdGVtZW50
LmgKaW5kZXggMjY4NmVkZmY0ZDYuLjQwM2JhYTAyYzEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xBU1RTdGF0ZW1lbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xBU1RTdGF0ZW1lbnQu
aApAQCAtNDgsMTQgKzQ4LDM2IEBAIHB1YmxpYzoKICAgICBTdGF0ZW1lbnQoY29uc3QgU3RhdGVt
ZW50JikgPSBkZWxldGU7CiAgICAgU3RhdGVtZW50KFN0YXRlbWVudCYmKSA9IGRlZmF1bHQ7CiAK
KyAgICB2aXJ0dWFsIGJvb2wgaXNCbG9jaygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAg
dmlydHVhbCBib29sIGlzQnJlYWsoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1
YWwgYm9vbCBpc0NvbnRpbnVlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFs
IGJvb2wgaXNEb1doaWxlTG9vcCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVh
bCBib29sIGlzRWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVudCgpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9CisgICAgdmlydHVhbCBib29sIGlzRmFsbHRocm91Z2goKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc0Zvckxvb3AoKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc0lmU3RhdGVtZW50KCkgY29uc3QgeyByZXR1cm4gZmFs
c2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNSZXR1cm4oKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQorICAgIHZpcnR1YWwgYm9vbCBpc1N3aXRjaENhc2UoKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQorICAgIHZpcnR1YWwgYm9vbCBpc1N3aXRjaFN0YXRlbWVudCgpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9CisgICAgdmlydHVhbCBib29sIGlzVHJhcCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
CisgICAgdmlydHVhbCBib29sIGlzVmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQoKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc1doaWxlTG9vcCgpIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9CisKIHByaXZhdGU6CiAgICAgTGV4ZXI6OlRva2VuIG1fb3JpZ2lu
OwogfTsKIAordHlwZWRlZiBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPFN0YXRlbWVudD4+IFN0YXRl
bWVudHM7CisKIH0KIAogfQogCiB9CiAKKyNkZWZpbmUgU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19X
SExTTF9TVEFURU1FTlQoVG9WYWx1ZVR5cGVOYW1lLCBwcmVkaWNhdGUpIFwKK1NQRUNJQUxJWkVf
VFlQRV9UUkFJVFNfQkVHSU4oV2ViQ29yZTo6V0hMU0w6OkFTVDo6VG9WYWx1ZVR5cGVOYW1lKSBc
CisgICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6OldITFNMOjpBU1Q6OlN0YXRl
bWVudCYgc3RhdGVtZW50KSB7IHJldHVybiBzdGF0ZW1lbnQucHJlZGljYXRlOyB9IFwKK1NQRUNJ
QUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKKwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xBU1RTdHJ1Y3R1cmVEZWZpbml0aW9u
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xBU1RTdHJ1
Y3R1cmVEZWZpbml0aW9uLmgKaW5kZXggMGE4ZjRhNGNjM2IuLjA5MmQ5MTQ2NzZiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xBU1RTdHJ1
Y3R1cmVEZWZpbml0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvQVNUL1dITFNMQVNUU3RydWN0dXJlRGVmaW5pdGlvbi5oCkBAIC01Myw2ICs1Myw4IEBAIHB1
YmxpYzoKICAgICBTdHJ1Y3R1cmVEZWZpbml0aW9uKGNvbnN0IFN0cnVjdHVyZURlZmluaXRpb24m
KSA9IGRlbGV0ZTsKICAgICBTdHJ1Y3R1cmVEZWZpbml0aW9uKFN0cnVjdHVyZURlZmluaXRpb24m
JikgPSBkZWZhdWx0OwogCisgICAgU3RydWN0dXJlRWxlbWVudHMmIHN0cnVjdHVyZUVsZW1lbnRz
KCkgeyByZXR1cm4gbV9zdHJ1Y3R1cmVFbGVtZW50czsgfQorCiAgICAgc3RkOjp1bmlxdWVfcHRy
PFR5cGU+IGNsb25lKCkgY29uc3Qgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvQVNUL1dITFNMQVNUU3RydWN0dXJlRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQVNUU3RydWN0dXJlRWxlbWVudC5oCmluZGV4IGZjNTk5
OTBmMTIwLi41ZTZkYmQ3NTRkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvQVNUL1dITFNMQVNUU3RydWN0dXJlRWxlbWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFTVFN0cnVjdHVyZUVsZW1lbnQu
aApAQCAtNTUsNiArNTUsOSBAQCBwdWJsaWM6CiAgICAgU3RydWN0dXJlRWxlbWVudChjb25zdCBT
dHJ1Y3R1cmVFbGVtZW50JikgPSBkZWxldGU7CiAgICAgU3RydWN0dXJlRWxlbWVudChTdHJ1Y3R1
cmVFbGVtZW50JiYpID0gZGVmYXVsdDsKIAorICAgIFR5cGUmIHR5cGUoKSB7IHJldHVybiAqbV90
eXBlOyB9CisgICAgc3RkOjpvcHRpb25hbDxTZW1hbnRpYz4mIHNlbWFudGljKCkgeyByZXR1cm4g
bV9zZW1hbnRpYzsgfQorCiBwcml2YXRlOgogICAgIExleGVyOjpUb2tlbiBtX29yaWdpbjsKICAg
ICBRdWFsaWZpZXJzIG1fcXVhbGlmaWVyczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFTVFN3aXRjaENhc2UuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFTVFN3aXRjaENhc2UuaAppbmRleCBi
NDRkMGVjZjc0ZS4uYmY1YjYxNGFiOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFTVFN3aXRjaENhc2UuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xBU1RTd2l0Y2hDYXNlLmgKQEAgLTUy
LDYgKzUyLDExIEBAIHB1YmxpYzoKIAogICAgIFN3aXRjaENhc2UoY29uc3QgU3dpdGNoQ2FzZSYp
ID0gZGVsZXRlOwogICAgIFN3aXRjaENhc2UoU3dpdGNoQ2FzZSYmKSA9IGRlZmF1bHQ7CisgICAg
CisgICAgYm9vbCBpc1N3aXRjaENhc2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9
CisKKyAgICBzdGQ6Om9wdGlvbmFsPENvbnN0YW50RXhwcmVzc2lvbj4mIHZhbHVlKCkgeyByZXR1
cm4gbV92YWx1ZTsgfQorICAgIEJsb2NrJiBibG9jaygpIHsgcmV0dXJuIG1fYmxvY2s7IH0KIAog
cHJpdmF0ZToKICAgICBzdGQ6Om9wdGlvbmFsPENvbnN0YW50RXhwcmVzc2lvbj4gbV92YWx1ZTsK
QEAgLTY0LDQgKzY5LDYgQEAgcHJpdmF0ZToKIAogfQogCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRT
X1dITFNMX1NUQVRFTUVOVChTd2l0Y2hDYXNlLCBpc1N3aXRjaENhc2UoKSkKKwogI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xB
U1RTd2l0Y2hTdGF0ZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L0FTVC9XSExTTEFTVFN3aXRjaFN0YXRlbWVudC5oCmluZGV4IDczNmVmMTE2ODQ4Li43ZjlhNjlk
OWQxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMQVNUU3dpdGNoU3RhdGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvQVNUL1dITFNMQVNUU3dpdGNoU3RhdGVtZW50LmgKQEAgLTUxLDYgKzUxLDEx
IEBAIHB1YmxpYzoKIAogICAgIFN3aXRjaFN0YXRlbWVudChjb25zdCBTd2l0Y2hTdGF0ZW1lbnQm
KSA9IGRlbGV0ZTsKICAgICBTd2l0Y2hTdGF0ZW1lbnQoU3dpdGNoU3RhdGVtZW50JiYpID0gZGVm
YXVsdDsKKyAgICAKKyAgICBib29sIGlzU3dpdGNoU3RhdGVtZW50KCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gdHJ1ZTsgfQorCisgICAgRXhwcmVzc2lvbiYgdmFsdWUoKSB7IHJldHVybiAqbV92
YWx1ZTsgfQorICAgIFZlY3RvcjxTd2l0Y2hDYXNlPiYgc3dpdGNoQ2FzZXMoKSB7IHJldHVybiBt
X3N3aXRjaENhc2VzOyB9CiAKIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPEV4cHJlc3Np
b24+IG1fdmFsdWU7CkBAIC02Myw0ICs2OCw2IEBAIHByaXZhdGU6CiAKIH0KIAorU1BFQ0lBTEla
RV9UWVBFX1RSQUlUU19XSExTTF9TVEFURU1FTlQoU3dpdGNoU3RhdGVtZW50LCBpc1N3aXRjaFN0
YXRlbWVudCgpKQorCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTEFTVFRlcm5hcnlFeHByZXNzaW9uLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xBU1RUZXJuYXJ5RXhwcmVzc2lvbi5o
CmluZGV4IGNiZmI1OTY4YTZkLi5hZjk3ZTY4ODBhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQVNUVGVybmFyeUV4cHJlc3Npb24uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xBU1RUZXJu
YXJ5RXhwcmVzc2lvbi5oCkBAIC01MSw2ICs1MSwxMiBAQCBwdWJsaWM6CiAgICAgVGVybmFyeUV4
cHJlc3Npb24oY29uc3QgVGVybmFyeUV4cHJlc3Npb24mKSA9IGRlbGV0ZTsKICAgICBUZXJuYXJ5
RXhwcmVzc2lvbihUZXJuYXJ5RXhwcmVzc2lvbiYmKSA9IGRlZmF1bHQ7CiAKKyAgICBib29sIGlz
VGVybmFyeUV4cHJlc3Npb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisKKyAg
ICBFeHByZXNzaW9uJiBwcmVkaWNhdGUoKSB7IHJldHVybiAqbV9wcmVkaWNhdGU7IH0KKyAgICBF
eHByZXNzaW9uJiBib2R5RXhwcmVzc2lvbigpIHsgcmV0dXJuICptX2JvZHlFeHByZXNzaW9uOyB9
CisgICAgRXhwcmVzc2lvbiYgZWxzZUV4cHJlc3Npb24oKSB7IHJldHVybiAqbV9lbHNlRXhwcmVz
c2lvbjsgfQorCiBwcml2YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxFeHByZXNzaW9uPiBtX3By
ZWRpY2F0ZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RXhwcmVzc2lvbj4gbV9ib2R5RXhwcmVzc2lv
bjsKQEAgLTYzLDQgKzY5LDYgQEAgcHJpdmF0ZToKIAogfQogCitTUEVDSUFMSVpFX1RZUEVfVFJB
SVRTX1dITFNMX0VYUFJFU1NJT04oVGVybmFyeUV4cHJlc3Npb24sIGlzVGVybmFyeUV4cHJlc3Np
b24oKSkKKwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9BU1QvV0hMU0xBU1RUcmFwLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9BU1QvV0hMU0xBU1RUcmFwLmgKaW5kZXggNTc3NzE0YjI1OTYuLjNlYWE1YTQ2NTQy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xBU1RUcmFwLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMQVNUVHJhcC5oCkBAIC00Nyw2ICs0Nyw4IEBAIHB1YmxpYzoKIAogICAgIFRyYXAoY29u
c3QgVHJhcCYpID0gZGVsZXRlOwogICAgIFRyYXAoVHJhcCYmKSA9IGRlZmF1bHQ7CisgICAgCisg
ICAgYm9vbCBpc1RyYXAoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAKIHByaXZh
dGU6CiB9OwpAQCAtNTcsNCArNTksNiBAQCBwcml2YXRlOgogCiB9CiAKK1NQRUNJQUxJWkVfVFlQ
RV9UUkFJVFNfV0hMU0xfU1RBVEVNRU5UKFRyYXAsIGlzVHJhcCgpKQorCiAjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFTVFR5
cGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFTVFR5
cGUuaAppbmRleCBkZjZlY2VjNjY5Yi4uMGQ4ZmY2Mzk4YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFTVFR5cGUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xBU1RUeXBlLmgKQEAgLTI4
LDYgKzI4LDcgQEAKICNpZiBFTkFCTEUoV0VCR1BVKQogCiAjaW5jbHVkZSAiV0hMU0xBU1ROb2Rl
LmgiCisjaW5jbHVkZSA8d3RmL1R5cGVDYXN0cy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
QEAgLTQ0LDYgKzQ1LDExIEBAIHB1YmxpYzoKICAgICBUeXBlKGNvbnN0IFR5cGUmKSA9IGRlbGV0
ZTsKICAgICBUeXBlKFR5cGUmJikgPSBkZWZhdWx0OwogCisgICAgdmlydHVhbCBib29sIGlzVHlw
ZVJlZmVyZW5jZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGlz
UG9pbnRlclR5cGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBp
c0FycmF5UmVmZXJlbmNlVHlwZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVh
bCBib29sIGlzQXJyYXlUeXBlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKwogICAgIHZpcnR1
YWwgc3RkOjp1bmlxdWVfcHRyPFR5cGU+IGNsb25lKCkgY29uc3QgPSAwOwogCiBwcml2YXRlOgpA
QCAtNTUsNCArNjEsOSBAQCBwcml2YXRlOgogCiB9CiAKKyNkZWZpbmUgU1BFQ0lBTElaRV9UWVBF
X1RSQUlUU19XSExTTF9UWVBFKFRvVmFsdWVUeXBlTmFtZSwgcHJlZGljYXRlKSBcCitTUEVDSUFM
SVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6OldITFNMOjpBU1Q6OlRvVmFsdWVUeXBlTmFt
ZSkgXAorICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpXSExTTDo6QVNUOjpU
eXBlJiB0eXBlKSB7IHJldHVybiB0eXBlLnByZWRpY2F0ZTsgfSBcCitTUEVDSUFMSVpFX1RZUEVf
VFJBSVRTX0VORCgpCisKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQVNUVHlwZUFyZ3VtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFTVFR5cGVBcmd1bWVudC5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjdlNTgwMWUzYjU2Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNM
QVNUVHlwZUFyZ3VtZW50LmNwcApAQCAtMCwwICsxLDY0IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiV0hMU0xMZXhlci5oIgorCisjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworbmFtZXNwYWNlIFdITFNMIHsKKworbmFtZXNwYWNlIEFTVCB7CisK
K1R5cGVBcmd1bWVudHMgY2xvbmUoY29uc3QgVHlwZUFyZ3VtZW50cyYgdHlwZUFyZ3VtZW50cykK
K3sKKyAgICBUeXBlQXJndW1lbnRzIHJlc3VsdDsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIHR5cGVB
cmd1bWVudCA6IHR5cGVBcmd1bWVudHMpCisgICAgICAgIHJlc3VsdC5hcHBlbmQoY2xvbmUodHlw
ZUFyZ3VtZW50KSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworVHlwZUFyZ3VtZW50IGNsb25l
KGNvbnN0IFR5cGVBcmd1bWVudCYgdHlwZUFyZ3VtZW50KQoreworICAgIHJldHVybiBXVEY6OnZp
c2l0KFdURjo6bWFrZVZpc2l0b3IoW10oY29uc3QgQ29uc3RhbnRFeHByZXNzaW9uJiBjb25zdGFu
dEV4cHJlc3Npb24pIC0+IFR5cGVBcmd1bWVudCB7CisgICAgICAgIHJldHVybiBjb25zdGFudEV4
cHJlc3Npb247CisgICAgfSwgW10oY29uc3Qgc3RkOjp1bmlxdWVfcHRyPFR5cGVSZWZlcmVuY2U+
JiB0eXBlUmVmZXJlbmNlKSAtPiBUeXBlQXJndW1lbnQgeworICAgICAgICByZXR1cm4gdHlwZVJl
ZmVyZW5jZS0+Y2xvbmVUeXBlUmVmZXJlbmNlKCk7CisgICAgfSksIHR5cGVBcmd1bWVudCk7Cit9
CisKK30KKworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQVNUVHlwZUFyZ3VtZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xBU1RUeXBlQXJndW1lbnQuaAppbmRl
eCBhNDE2ODk2YWQ0YS4uM2Q3MjhiZjVlYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFTVFR5cGVBcmd1bWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFTVFR5cGVBcmd1bWVudC5o
CkBAIC0zMSw3ICszMSw2IEBACiAjaW5jbHVkZSAiV0hMU0xMZXhlci5oIgogI2luY2x1ZGUgPHd0
Zi9WYXJpYW50Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0
L1N0cmluZ1ZpZXcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0zOSw5ICszOCwxNCBA
QCBuYW1lc3BhY2UgV0hMU0wgewogCiBuYW1lc3BhY2UgQVNUIHsKIAotdHlwZWRlZiBWYXJpYW50
PENvbnN0YW50RXhwcmVzc2lvbiwgU3RyaW5nPiBUeXBlQXJndW1lbnQ7CitjbGFzcyBUeXBlUmVm
ZXJlbmNlOworCit0eXBlZGVmIFZhcmlhbnQ8Q29uc3RhbnRFeHByZXNzaW9uLCBzdGQ6OnVuaXF1
ZV9wdHI8VHlwZVJlZmVyZW5jZT4+IFR5cGVBcmd1bWVudDsKIHR5cGVkZWYgVmVjdG9yPFR5cGVB
cmd1bWVudD4gVHlwZUFyZ3VtZW50czsKIAorVHlwZUFyZ3VtZW50IGNsb25lKGNvbnN0IFR5cGVB
cmd1bWVudCYpOworVHlwZUFyZ3VtZW50cyBjbG9uZShjb25zdCBUeXBlQXJndW1lbnRzJik7CisK
IH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
QVNUL1dITFNMQVNUVHlwZURlZmluaXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML0FTVC9XSExTTEFTVFR5cGVEZWZpbml0aW9uLmgKaW5kZXggZjcyYzZiNmEwM2Qu
LjZmYjA1Y2FmYmU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9BU1QvV0hMU0xBU1RUeXBlRGVmaW5pdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFTVFR5cGVEZWZpbml0aW9uLmgKQEAgLTUyLDYg
KzUyLDggQEAgcHVibGljOgogICAgIFR5cGVEZWZpbml0aW9uKGNvbnN0IFR5cGVEZWZpbml0aW9u
JikgPSBkZWxldGU7CiAgICAgVHlwZURlZmluaXRpb24oVHlwZURlZmluaXRpb24mJikgPSBkZWZh
dWx0OwogCisgICAgQVNUOjpUeXBlJiB0eXBlKCkgeyByZXR1cm4gKm1fdHlwZTsgfQorCiAgICAg
c3RkOjp1bmlxdWVfcHRyPFR5cGU+IGNsb25lKCkgY29uc3Qgb3ZlcnJpZGUKICAgICB7CiAgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQVNUVHlwZVJlZmVyZW5jZS5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQVNUVHlwZVJlZmVyZW5jZS5oCmlu
ZGV4IDZiYmFiMzg5OTUwLi4wMDExMWFkYjA3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQVNUVHlwZVJlZmVyZW5jZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFTVFR5cGVSZWZlcmVu
Y2UuaApAQCAtNTIsOSArNTIsMTggQEAgcHVibGljOgogICAgIFR5cGVSZWZlcmVuY2UoY29uc3Qg
VHlwZVJlZmVyZW5jZSYpID0gZGVsZXRlOwogICAgIFR5cGVSZWZlcmVuY2UoVHlwZVJlZmVyZW5j
ZSYmKSA9IGRlZmF1bHQ7CiAKKyAgICBib29sIGlzVHlwZVJlZmVyZW5jZSgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIHRydWU7IH0KKworICAgIFR5cGVBcmd1bWVudHMmIHR5cGVBcmd1bWVudHMo
KSB7IHJldHVybiBtX3R5cGVBcmd1bWVudHM7IH0KKworICAgIHN0ZDo6dW5pcXVlX3B0cjxUeXBl
UmVmZXJlbmNlPiBjbG9uZVR5cGVSZWZlcmVuY2UoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bWFrZV91bmlxdWU8VHlwZVJlZmVyZW5jZT4oTGV4ZXI6OlRva2VuKG1fb3JpZ2lu
KSwgU3RyaW5nKG1fbmFtZSksIEFTVDo6Y2xvbmUobV90eXBlQXJndW1lbnRzKSk7CisgICAgfQor
CiAgICAgc3RkOjp1bmlxdWVfcHRyPFR5cGU+IGNsb25lKCkgY29uc3Qgb3ZlcnJpZGUKICAgICB7
Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFR5cGVSZWZlcmVuY2U+KExleGVyOjpU
b2tlbihtX29yaWdpbiksIFN0cmluZyhtX25hbWUpLCBUeXBlQXJndW1lbnRzKG1fdHlwZUFyZ3Vt
ZW50cykpOworICAgICAgICByZXR1cm4gY2xvbmVUeXBlUmVmZXJlbmNlKCk7CiAgICAgfQogCiBw
cml2YXRlOgpAQCAtNjksNCArNzgsNiBAQCBwcml2YXRlOgogCiB9CiAKK1NQRUNJQUxJWkVfVFlQ
RV9UUkFJVFNfV0hMU0xfVFlQRShUeXBlUmVmZXJlbmNlLCBpc1R5cGVSZWZlcmVuY2UoKSkKKwog
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9B
U1QvV0hMU0xBU1RVbnNpZ25lZEludGVnZXJMaXRlcmFsLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xBU1RVbnNpZ25lZEludGVnZXJMaXRlcmFsLmgKaW5k
ZXggNjdiOWMyMjc5M2EuLmE1YzJlY2Q1YWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xBU1RVbnNpZ25lZEludGVnZXJMaXRlcmFsLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQVNUVW5z
aWduZWRJbnRlZ2VyTGl0ZXJhbC5oCkBAIC01MSw2ICs1MSw4IEBAIHB1YmxpYzoKIAogICAgIHVu
c2lnbmVkIHZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZTsgfQogCisgICAgYm9vbCBpc1Vu
c2lnbmVkSW50ZWdlckxpdGVyYWwoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisK
IHByaXZhdGU6CiAgICAgdW5zaWduZWQgbV92YWx1ZTsKIH07CkBAIC02MSw0ICs2Myw2IEBAIHBy
aXZhdGU6CiAKIH0KIAorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9FWFBSRVNTSU9OKFVu
c2lnbmVkSW50ZWdlckxpdGVyYWwsIGlzVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCgpKQorCiAjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9X
SExTTEFTVFZhcmlhYmxlRGVjbGFyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML0FTVC9XSExTTEFTVFZhcmlhYmxlRGVjbGFyYXRpb24uaAppbmRleCAxYTljODFh
Y2UzNC4uOGIxOTA5NWViMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML0FTVC9XSExTTEFTVFZhcmlhYmxlRGVjbGFyYXRpb24uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xBU1RWYXJpYWJsZURlY2xhcmF0
aW9uLmgKQEAgLTYxLDYgKzYxLDEwIEBAIHB1YmxpYzoKIAogICAgIExleGVyOjpUb2tlbiBvcmln
aW4oKSBjb25zdCB7IHJldHVybiBtX29yaWdpbjsgfQogCisgICAgVHlwZSYgdHlwZSgpIHsgcmV0
dXJuICptX3R5cGU7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPFNlbWFudGljPiYgc2VtYW50aWMoKSB7
IHJldHVybiBtX3NlbWFudGljOyB9CisgICAgRXhwcmVzc2lvbiogaW5pdGlhbGl6ZXIoKSB7IHJl
dHVybiBtX2luaXRpYWxpemVyLmdldCgpOyB9CisKIHByaXZhdGU6CiAgICAgTGV4ZXI6OlRva2Vu
IG1fb3JpZ2luOwogICAgIFF1YWxpZmllcnMgbV9xdWFsaWZpZXJzOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQVNUVmFyaWFibGVEZWNs
YXJhdGlvbnNTdGF0ZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L0FTVC9XSExTTEFTVFZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50LmgKaW5kZXggMzBiZTNm
NDViOTguLjIwZmM5ZDBiYTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9BU1QvV0hMU0xBU1RWYXJpYWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFTVFZhcmlh
YmxlRGVjbGFyYXRpb25zU3RhdGVtZW50LmgKQEAgLTUwLDkgKzUwLDEzIEBAIHB1YmxpYzoKIAog
ICAgIFZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50KGNvbnN0IFZhcmlhYmxlRGVjbGFyYXRp
b25zU3RhdGVtZW50JikgPSBkZWxldGU7CiAgICAgVmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1l
bnQoVmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQmJikgPSBkZWZhdWx0OworICAgIAorICAg
IGJvb2wgaXNWYXJpYWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudCgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIHRydWU7IH0KKworICAgIFZlY3RvcjxWYXJpYWJsZURlY2xhcmF0aW9uPiYgdmFyaWFi
bGVEZWNsYXJhdGlvbnMoKSB7IHJldHVybiBtX3ZhcmlhYmxlRGVjbGFyYXRpb25zOyB9CiAKIHBy
aXZhdGU6Ci0gICAgVmVjdG9yPFZhcmlhYmxlRGVjbGFyYXRpb24+JiYgbV92YXJpYWJsZURlY2xh
cmF0aW9uczsKKyAgICBWZWN0b3I8VmFyaWFibGVEZWNsYXJhdGlvbj4gbV92YXJpYWJsZURlY2xh
cmF0aW9uczsKIH07CiAKIH0KQEAgLTYxLDQgKzY1LDYgQEAgcHJpdmF0ZToKIAogfQogCitTUEVD
SUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX1NUQVRFTUVOVChWYXJpYWJsZURlY2xhcmF0aW9uc1N0
YXRlbWVudCwgaXNWYXJpYWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudCgpKQorCiAjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFT
VFZhcmlhYmxlUmVmZXJlbmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xBU1RWYXJpYWJsZVJlZmVyZW5jZS5oCmluZGV4IDMzYjZmYzYxZDVmLi43NGQ2
ZmE2ZDhlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
QVNUL1dITFNMQVNUVmFyaWFibGVSZWZlcmVuY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xBU1RWYXJpYWJsZVJlZmVyZW5jZS5oCkBAIC02Niw2
ICs2Niw4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKKyAgICBi
b29sIGlzVmFyaWFibGVSZWZlcmVuY2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9
CisKIHByaXZhdGU6CiAgICAgVmFyaWFibGVSZWZlcmVuY2UoTGV4ZXI6OlRva2VuJiYgb3JpZ2lu
KQogICAgICAgICA6IEV4cHJlc3Npb24oV1RGTW92ZShvcmlnaW4pKQpAQCAtODIsNCArODQsNiBA
QCBwcml2YXRlOgogCiB9CiAKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfRVhQUkVTU0lP
TihWYXJpYWJsZVJlZmVyZW5jZSwgaXNWYXJpYWJsZVJlZmVyZW5jZSgpKQorCiAjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFT
VFdoaWxlTG9vcC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dI
TFNMQVNUV2hpbGVMb29wLmgKaW5kZXggOGFlYTJjMWIyZDkuLmYzNDA1M2UyOTI5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xBU1RXaGls
ZUxvb3AuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xBU1RXaGlsZUxvb3AuaApAQCAtNTAsNiArNTAsMTEgQEAgcHVibGljOgogCiAgICAgV2hpbGVM
b29wKGNvbnN0IFdoaWxlTG9vcCYpID0gZGVsZXRlOwogICAgIFdoaWxlTG9vcChXaGlsZUxvb3Am
JikgPSBkZWZhdWx0OworICAgIAorICAgIGJvb2wgaXNXaGlsZUxvb3AoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiB0cnVlOyB9CisKKyAgICBFeHByZXNzaW9uJiBjb25kaXRpb25hbCgpIHsgcmV0
dXJuICptX2NvbmRpdGlvbmFsOyB9CisgICAgU3RhdGVtZW50JiBib2R5KCkgeyByZXR1cm4gKm1f
Ym9keTsgfQogCiBwcml2YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxFeHByZXNzaW9uPiBtX2Nv
bmRpdGlvbmFsOwpAQCAtNjIsNCArNjcsNiBAQCBwcml2YXRlOgogCiB9CiAKK1NQRUNJQUxJWkVf
VFlQRV9UUkFJVFNfV0hMU0xfU1RBVEVNRU5UKFdoaWxlTG9vcCwgaXNXaGlsZUxvb3AoKSkKKwog
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9X
SExTTE5hbWVSZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9XSExTTE5hbWVSZXNvbHZlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAuLjc4MGQ1YzU0MjVhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvV0hMU0xOYW1lUmVzb2x2ZXIuY3BwCkBAIC0wLDAgKzEsNTAgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIldITFNMTmFtZVJlc29sdmVyLmgiCisKKyNpbmNsdWRlICJXSExTTFZpc2l0b3Iu
aCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3BhY2UgV0hMU0wgeworCitjbGFzcyBO
YW1lUmVzb2x2ZXIgOiBwdWJsaWMgVmlzaXRvciB7CisgICAgfk5hbWVSZXNvbHZlcigpID0gZGVm
YXVsdDsKK307CisKK3ZvaWQgcmVzb2x2ZU5hbWVzSW5UeXBlcyhQcm9ncmFtJikKK3sKKworfQor
Cit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9XSExTTE5hbWVSZXNvbHZlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvV0hMU0xOYW1lUmVzb2x2ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMC4uNDdkNGQ2YTU3OTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTE5hbWVSZXNvbHZlci5oCkBAIC0wLDAgKzEs
NDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJHUFUpCisK
KyNpbmNsdWRlICJXSExTTFByb2dyYW0uaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1l
c3BhY2UgV0hMU0wgeworCit2b2lkIHJlc29sdmVOYW1lc0luVHlwZXMoUHJvZ3JhbSYgcHJvZ3Jh
bSk7CisKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML1dITFNMUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML1dITFNMUGFyc2VyLmNwcAppbmRleCBiMjBmMzc0YTUyNC4uNmNmNDEzOWIx
NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNM
UGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExT
TFBhcnNlci5jcHAKQEAgLTIzLDggKzIzLDYgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KICAqLwogCi0jcHJhZ21hIG9uY2UKLQogI2lmIEVOQUJMRShXRUJHUFUpCiAKICNp
bmNsdWRlICJjb25maWcuaCIKQEAgLTQxNCw3ICs0MTIsNyBAQCBhdXRvIFBhcnNlcjo6cGFyc2VU
eXBlQXJndW1lbnQoKSAtPiBFeHBlY3RlZDxBU1Q6OlR5cGVBcmd1bWVudCwgRXJyb3I+IHsKICAg
ICBhdXRvIHJlc3VsdCA9IGNvbnN1bWVUeXBlKExleGVyOjpUb2tlbjo6VHlwZTo6SWRlbnRpZmll
cik7CiAgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgIHJldHVybiBVbmV4cGVjdGVkPEVycm9yPihy
ZXN1bHQuZXJyb3IoKSk7Ci0gICAgcmV0dXJuIHsgcmVzdWx0LT5zdHJpbmdWaWV3LnRvU3RyaW5n
KCkgfTsKKyAgICByZXR1cm4geyBzdGQ6Om1ha2VfdW5pcXVlPEFTVDo6VHlwZVJlZmVyZW5jZT4o
TGV4ZXI6OlRva2VuKCpyZXN1bHQpLCByZXN1bHQtPnN0cmluZ1ZpZXcudG9TdHJpbmcoKSwgQVNU
OjpUeXBlQXJndW1lbnRzKCkpIH07CiB9CiAKIGF1dG8gUGFyc2VyOjpwYXJzZVR5cGVBcmd1bWVu
dHMoKSAtPiBFeHBlY3RlZDxBU1Q6OlR5cGVBcmd1bWVudHMsIEVycm9yPiB7CkBAIC04OTUsNyAr
ODkzLDcgQEAgYXV0byBQYXJzZXI6OnBhcnNlRW51bWVyYXRpb25EZWZpbml0aW9uKCkgLT4gRXhw
ZWN0ZWQ8QVNUOjpFbnVtZXJhdGlvbkRlZmluaXRpb24KICAgICBpZiAoIWZpcnN0RW51bWVyYXRp
b25NZW1iZXIpCiAgICAgICAgIHJldHVybiBVbmV4cGVjdGVkPEVycm9yPihmaXJzdEVudW1lcmF0
aW9uTWVtYmVyLmVycm9yKCkpOwogCi0gICAgVmVjdG9yPEFTVDo6RW51bWVyYXRpb25NZW1iZXI+
IG1lbWJlcnM7CisgICAgQVNUOjpFbnVtZXJhdGlvbk1lbWJlcnMgbWVtYmVyczsKICAgICBtZW1i
ZXJzLmFwcGVuZChXVEZNb3ZlKCpmaXJzdEVudW1lcmF0aW9uTWVtYmVyKSk7CiAKICAgICB3aGls
ZSAodHJ5VHlwZShMZXhlcjo6VG9rZW46OlR5cGU6OkNvbW1hKSkgewpAQCAtMTI1MSw3ICsxMjQ5
LDcgQEAgYXV0byBQYXJzZXI6OnBhcnNlQmxvY2soKSAtPiBFeHBlY3RlZDxBU1Q6OkJsb2NrLCBF
cnJvcj4gewogCiBBU1Q6OkJsb2NrIFBhcnNlcjo6cGFyc2VCbG9ja0JvZHkoTGV4ZXI6OlRva2Vu
JiYgb3JpZ2luKQogewotICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8QVNUOjpTdGF0ZW1lbnQ+
PiBzdGF0ZW1lbnRzOworICAgIEFTVDo6U3RhdGVtZW50cyBzdGF0ZW1lbnRzOwogICAgIHdoaWxl
ICh0cnVlKSB7CiAgICAgICAgIGF1dG8gc3RhdGVtZW50ID0gYmFja3RyYWNraW5nU2NvcGU8RXhw
ZWN0ZWQ8c3RkOjp1bmlxdWVfcHRyPEFTVDo6U3RhdGVtZW50PiwgRXJyb3I+PihbJl0oKSB7CiAg
ICAgICAgICAgICByZXR1cm4gcGFyc2VTdGF0ZW1lbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUHJlcGFyZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFByZXBhcmUuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5hYjhkNzQ2YzI2ZgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUHJlcGFyZS5jcHAKQEAg
LTAsMCArMSw2MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV0hMU0xQcmVwYXJlLmgiCisKKyNpbmNsdWRlICJXSExT
TE5hbWVSZXNvbHZlci5oIgorI2luY2x1ZGUgIldITFNMUGFyc2VyLmgiCisjaW5jbHVkZSAiV0hM
U0xQcm9ncmFtLmgiCisjaW5jbHVkZSAiV0hMU0xTdGFuZGFyZExpYnJhcnkuaCIKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCituYW1lc3BhY2UgV0hMU0wgeworCitzdGQ6Om9wdGlvbmFsPFByZXBh
cmF0aW9uUmVzdWx0PiBwcmVwYXJlKFN0cmluZ1ZpZXcgc291cmNlKQoreworICAgIFByb2dyYW0g
cHJvZ3JhbTsKKworICAgIFBhcnNlciBwYXJzZXI7CisgICAgYXV0byBzdGFuZGFyZExpYnJhcnkg
PSBTdHJpbmc6OmZyb21VVEY4KFdITFNMU3RhbmRhcmRMaWJyYXJ5LCBzaXplb2YoV0hMU0xTdGFu
ZGFyZExpYnJhcnkpKTsKKyAgICBib29sIHN1Y2Nlc3MgPSBzdGF0aWNfY2FzdDxib29sPihwYXJz
ZXIucGFyc2UocHJvZ3JhbSwgc3RhbmRhcmRMaWJyYXJ5LCBXSExTTDo6UGFyc2VyOjpNb2RlOjpT
dGFuZGFyZExpYnJhcnkpKTsKKyAgICBpZiAoIXN1Y2Nlc3MpCisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CisgICAgc3VjY2VzcyA9IHN0YXRpY19jYXN0PGJvb2w+KHBhcnNlci5wYXJzZShw
cm9ncmFtLCBzb3VyY2UsIFdITFNMOjpQYXJzZXI6Ok1vZGU6OlVzZXIpKTsKKyAgICBpZiAoIXN1
Y2Nlc3MpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICByZXNvbHZlTmFtZXNJ
blR5cGVzKHByb2dyYW0pOworCisgICAgcmV0dXJuIFByZXBhcmF0aW9uUmVzdWx0KCk7Cit9CisK
K30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML1dITFNMUHJlcGFyZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvV0hMU0xQcmVwYXJlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAuLjU0Y2NkNjQ3Yzc1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvV0hMU0xQcmVwYXJlLmgKQEAgLTAsMCArMSw1MCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2luY2x1ZGUgPHd0Zi9P
cHRpb25hbC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ1ZpZXcuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCituYW1lc3BhY2UgV0hMU0wgeworCitzdHJ1Y3QgUHJlcGFyYXRpb25SZXN1
bHQKK3sKKyAgICAvLyBNZXRhbCBzaGFkaW5nIGxhbmd1YWdlIGNvZGUKKyAgICAvLyBNYXBwaW5n
IG9mIGF0dHJpYnV0ZSBJRHMKKyAgICAvLyBldGMuCit9OworCitzdGQ6Om9wdGlvbmFsPFByZXBh
cmF0aW9uUmVzdWx0PiBwcmVwYXJlKFN0cmluZ1ZpZXcgc291cmNlKTsKKworfQorCit9CisKKyNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hM
U0xQcm9ncmFtLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFBy
b2dyYW0uaAppbmRleCA2NWU2MTNhOWZiMy4uZWE2N2RkOTI0YjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUHJvZ3JhbS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUHJvZ3JhbS5oCkBAIC02OSw2ICs2
OSwxMyBAQCBwdWJsaWM6CiAgICAgICAgIG1fbmF0aXZlVHlwZURlY2xhcmF0aW9ucy5hcHBlbmQo
V1RGTW92ZShuYXRpdmVUeXBlRGVjbGFyYXRpb24pKTsKICAgICB9CiAKKyAgICBWZWN0b3I8QVNU
OjpUeXBlRGVmaW5pdGlvbj4mIHR5cGVEZWZpbml0aW9ucygpIHsgcmV0dXJuIG1fdHlwZURlZmlu
aXRpb25zOyB9CisgICAgVmVjdG9yPEFTVDo6U3RydWN0dXJlRGVmaW5pdGlvbj4mIHN0cnVjdHVy
ZURlZmluaXRpb25zKCkgeyByZXR1cm4gbV9zdHJ1Y3R1cmVEZWZpbml0aW9uczsgfQorICAgIFZl
Y3RvcjxBU1Q6OkVudW1lcmF0aW9uRGVmaW5pdGlvbj4mIGVudW1lcmF0aW9uRGVmaW5pdGlvbnMo
KSB7IHJldHVybiBtX2VudW1lcmF0aW9uRGVmaW5pdGlvbnM7IH0KKyAgICBWZWN0b3I8QVNUOjpG
dW5jdGlvbkRlZmluaXRpb24+JiBmdW5jdGlvbkRlZmluaXRpb25zKCkgeyByZXR1cm4gbV9mdW5j
dGlvbkRlZmluaXRpb25zOyB9CisgICAgVmVjdG9yPEFTVDo6TmF0aXZlRnVuY3Rpb25EZWNsYXJh
dGlvbj4mIG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb25zKCkgeyByZXR1cm4gbV9uYXRpdmVGdW5j
dGlvbkRlY2xhcmF0aW9uczsgfQorICAgIFZlY3RvcjxBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlv
bj4mIG5hdGl2ZVR5cGVEZWNsYXJhdGlvbnMoKSB7IHJldHVybiBtX25hdGl2ZVR5cGVEZWNsYXJh
dGlvbnM7IH0KKwogcHJpdmF0ZToKICAgICBWZWN0b3I8QVNUOjpUeXBlRGVmaW5pdGlvbj4gbV90
eXBlRGVmaW5pdGlvbnM7CiAgICAgVmVjdG9yPEFTVDo6U3RydWN0dXJlRGVmaW5pdGlvbj4gbV9z
dHJ1Y3R1cmVEZWZpbml0aW9uczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML1dITFNMVmlzaXRvci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvV0hMU0xWaXNpdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAuLmM3MzNiYjkxMmU2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvV0hMU0xWaXNpdG9yLmgKQEAgLTAsMCArMSw1NzMgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlICJX
SExTTFByb2dyYW0uaCIKKyNpbmNsdWRlICJXSExTTEFTVEFub255bW91c1ZhcmlhYmxlRGVjbGFy
YXRpb24uaCIKKyNpbmNsdWRlICJXSExTTEFTVEFycmF5UmVmZXJlbmNlVHlwZS5oIgorI2luY2x1
ZGUgIldITFNMQVNUQXJyYXlUeXBlLmgiCisjaW5jbHVkZSAiV0hMU0xBU1RBc3NpZ25tZW50RXhw
cmVzc2lvbi5oIgorI2luY2x1ZGUgIldITFNMQVNUQmFzZUZ1bmN0aW9uQXR0cmlidXRlLmgiCisj
aW5jbHVkZSAiV0hMU0xBU1RCYXNlU2VtYW50aWMuaCIKKyNpbmNsdWRlICJXSExTTEFTVEJsb2Nr
LmgiCisjaW5jbHVkZSAiV0hMU0xBU1RCb29sZWFuTGl0ZXJhbC5oIgorI2luY2x1ZGUgIldITFNM
QVNUQnJlYWsuaCIKKyNpbmNsdWRlICJXSExTTEFTVEJ1aWx0SW5TZW1hbnRpYy5oIgorI2luY2x1
ZGUgIldITFNMQVNUQ2FsbEV4cHJlc3Npb24uaCIKKyNpbmNsdWRlICJXSExTTEFTVENvbW1hRXhw
cmVzc2lvbi5oIgorI2luY2x1ZGUgIldITFNMQVNUQ29uc3RhbnRFeHByZXNzaW9uLmgiCisjaW5j
bHVkZSAiV0hMU0xBU1RDb25zdGFudEV4cHJlc3Npb25FbnVtZXJhdGlvbk1lbWJlclJlZmVyZW5j
ZS5oIgorI2luY2x1ZGUgIldITFNMQVNUQ29udGludWUuaCIKKyNpbmNsdWRlICJXSExTTEFTVERl
cmVmZXJlbmNlRXhwcmVzc2lvbi5oIgorI2luY2x1ZGUgIldITFNMQVNURG9XaGlsZUxvb3AuaCIK
KyNpbmNsdWRlICJXSExTTEFTVERvdEV4cHJlc3Npb24uaCIKKyNpbmNsdWRlICJXSExTTEFTVEVm
ZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQuaCIKKyNpbmNsdWRlICJXSExTTEFTVEVudW1lcmF0
aW9uRGVmaW5pdGlvbi5oIgorI2luY2x1ZGUgIldITFNMQVNURW51bWVyYXRpb25NZW1iZXIuaCIK
KyNpbmNsdWRlICJXSExTTEFTVEV4cHJlc3Npb24uaCIKKyNpbmNsdWRlICJXSExTTEFTVEZhbGx0
aHJvdWdoLmgiCisjaW5jbHVkZSAiV0hMU0xBU1RGbG9hdExpdGVyYWwuaCIKKyNpbmNsdWRlICJX
SExTTEFTVEZvckxvb3AuaCIKKyNpbmNsdWRlICJXSExTTEFTVEZ1bmN0aW9uQXR0cmlidXRlLmgi
CisjaW5jbHVkZSAiV0hMU0xBU1RGdW5jdGlvbkRlY2xhcmF0aW9uLmgiCisjaW5jbHVkZSAiV0hM
U0xBU1RGdW5jdGlvbkRlZmluaXRpb24uaCIKKyNpbmNsdWRlICJXSExTTEFTVElmU3RhdGVtZW50
LmgiCisjaW5jbHVkZSAiV0hMU0xBU1RJbmRleEV4cHJlc3Npb24uaCIKKyNpbmNsdWRlICJXSExT
TEFTVEludGVnZXJMaXRlcmFsLmgiCisjaW5jbHVkZSAiV0hMU0xBU1RMb2dpY2FsRXhwcmVzc2lv
bi5oIgorI2luY2x1ZGUgIldITFNMQVNUTG9naWNhbE5vdEV4cHJlc3Npb24uaCIKKyNpbmNsdWRl
ICJXSExTTEFTVE1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24uaCIKKyNpbmNsdWRlICJXSExT
TEFTVE1ha2VQb2ludGVyRXhwcmVzc2lvbi5oIgorI2luY2x1ZGUgIldITFNMQVNUTmF0aXZlRnVu
Y3Rpb25EZWNsYXJhdGlvbi5oIgorI2luY2x1ZGUgIldITFNMQVNUTmF0aXZlVHlwZURlY2xhcmF0
aW9uLmgiCisjaW5jbHVkZSAiV0hMU0xBU1ROb2RlLmgiCisjaW5jbHVkZSAiV0hMU0xBU1ROdWxs
TGl0ZXJhbC5oIgorI2luY2x1ZGUgIldITFNMQVNUTnVtVGhyZWFkc0Z1bmN0aW9uQXR0cmlidXRl
LmgiCisjaW5jbHVkZSAiV0hMU0xBU1RQYXJhbWV0ZXIuaCIKKyNpbmNsdWRlICJXSExTTEFTVFBv
aW50ZXJUeXBlLmgiCisjaW5jbHVkZSAiV0hMU0xBU1RQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24u
aCIKKyNpbmNsdWRlICJXSExTTEFTVFF1YWxpZmllci5oIgorI2luY2x1ZGUgIldITFNMQVNUUmVh
ZE1vZGlmeVdyaXRlRXhwcmVzc2lvbi5oIgorI2luY2x1ZGUgIldITFNMQVNUUmVmZXJlbmNlVHlw
ZS5oIgorI2luY2x1ZGUgIldITFNMQVNUUmVzb3VyY2VTZW1hbnRpYy5oIgorI2luY2x1ZGUgIldI
TFNMQVNUUmV0dXJuLmgiCisjaW5jbHVkZSAiV0hMU0xBU1RTZW1hbnRpYy5oIgorI2luY2x1ZGUg
IldITFNMQVNUU3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFudGljLmgiCisjaW5jbHVkZSAiV0hM
U0xBU1RTdGFnZUluT3V0U2VtYW50aWMuaCIKKyNpbmNsdWRlICJXSExTTEFTVFN0YXRlbWVudC5o
IgorI2luY2x1ZGUgIldITFNMQVNUU3RydWN0dXJlRGVmaW5pdGlvbi5oIgorI2luY2x1ZGUgIldI
TFNMQVNUU3RydWN0dXJlRWxlbWVudC5oIgorI2luY2x1ZGUgIldITFNMQVNUU3dpdGNoQ2FzZS5o
IgorI2luY2x1ZGUgIldITFNMQVNUU3dpdGNoU3RhdGVtZW50LmgiCisjaW5jbHVkZSAiV0hMU0xB
U1RUZXJuYXJ5RXhwcmVzc2lvbi5oIgorI2luY2x1ZGUgIldITFNMQVNUVHJhcC5oIgorI2luY2x1
ZGUgIldITFNMQVNUVHlwZS5oIgorI2luY2x1ZGUgIldITFNMQVNUVHlwZUFyZ3VtZW50LmgiCisj
aW5jbHVkZSAiV0hMU0xBU1RUeXBlRGVmaW5pdGlvbi5oIgorI2luY2x1ZGUgIldITFNMQVNUVHlw
ZVJlZmVyZW5jZS5oIgorI2luY2x1ZGUgIldITFNMQVNUVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbC5o
IgorI2luY2x1ZGUgIldITFNMQVNUVmFsdWUuaCIKKyNpbmNsdWRlICJXSExTTEFTVFZhcmlhYmxl
RGVjbGFyYXRpb24uaCIKKyNpbmNsdWRlICJXSExTTEFTVFZhcmlhYmxlRGVjbGFyYXRpb25zU3Rh
dGVtZW50LmgiCisjaW5jbHVkZSAiV0hMU0xBU1RWYXJpYWJsZVJlZmVyZW5jZS5oIgorI2luY2x1
ZGUgIldITFNMQVNUV2hpbGVMb29wLmgiCisKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1l
c3BhY2UgV0hMU0wgeworCitjbGFzcyBWaXNpdG9yIHsKKyAgICB+VmlzaXRvcigpID0gZGVmYXVs
dDsKKworICAgIHZpcnR1YWwgdm9pZCB2aXNpdChQcm9ncmFtJiBwcm9ncmFtKQorICAgIHsKKyAg
ICAgICAgZm9yIChhdXRvJiB0eXBlRGVmaW5pdGlvbiA6IHByb2dyYW0udHlwZURlZmluaXRpb25z
KCkpCisgICAgICAgICAgICB2aXNpdCh0eXBlRGVmaW5pdGlvbik7CisgICAgICAgIGZvciAoYXV0
byYgc3RydWN0dXJlRGVmaW5pdGlvbiA6IHByb2dyYW0uc3RydWN0dXJlRGVmaW5pdGlvbnMoKSkK
KyAgICAgICAgICAgIHZpc2l0KHN0cnVjdHVyZURlZmluaXRpb24pOworICAgICAgICBmb3IgKGF1
dG8mIGVudW1lcmF0aW9uRGVmaW5pdGlvbiA6IHByb2dyYW0uZW51bWVyYXRpb25EZWZpbml0aW9u
cygpKQorICAgICAgICAgICAgdmlzaXQoZW51bWVyYXRpb25EZWZpbml0aW9uKTsKKyAgICAgICAg
Zm9yIChhdXRvJiBmdW5jdGlvbkRlZmluaXRpb24gOiBwcm9ncmFtLmZ1bmN0aW9uRGVmaW5pdGlv
bnMoKSkKKyAgICAgICAgICAgIHZpc2l0KGZ1bmN0aW9uRGVmaW5pdGlvbik7CisgICAgICAgIGZv
ciAoYXV0byYgbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbiA6IHByb2dyYW0ubmF0aXZlRnVuY3Rp
b25EZWNsYXJhdGlvbnMoKSkKKyAgICAgICAgICAgIHZpc2l0KG5hdGl2ZUZ1bmN0aW9uRGVjbGFy
YXRpb24pOworICAgICAgICBmb3IgKGF1dG8mIG5hdGl2ZVR5cGVEZWNsYXJhdGlvbiA6IHByb2dy
YW0ubmF0aXZlVHlwZURlY2xhcmF0aW9ucygpKQorICAgICAgICAgICAgdmlzaXQobmF0aXZlVHlw
ZURlY2xhcmF0aW9uKTsKKyAgICB9CisKKyAgICB2b2lkIHZpc2l0VHlwZShBU1Q6OlR5cGUmIHR5
cGUpCisgICAgeworICAgICAgICBpZiAoaXM8QVNUOjpUeXBlUmVmZXJlbmNlPih0eXBlKSkKKyAg
ICAgICAgICAgIHZpc2l0KGRvd25jYXN0PEFTVDo6VHlwZVJlZmVyZW5jZT4odHlwZSkpOworICAg
ICAgICBlbHNlIGlmIChpczxBU1Q6OlBvaW50ZXJUeXBlPih0eXBlKSkKKyAgICAgICAgICAgIHZp
c2l0KGRvd25jYXN0PEFTVDo6UG9pbnRlclR5cGU+KHR5cGUpKTsKKyAgICAgICAgZWxzZSBpZiAo
aXM8QVNUOjpBcnJheVJlZmVyZW5jZVR5cGU+KHR5cGUpKQorICAgICAgICAgICAgdmlzaXQoZG93
bmNhc3Q8QVNUOjpBcnJheVJlZmVyZW5jZVR5cGU+KHR5cGUpKTsKKyAgICAgICAgZWxzZSB7Cisg
ICAgICAgICAgICBBU1NFUlQoaXM8QVNUOjpBcnJheVR5cGU+KHR5cGUpKTsKKyAgICAgICAgICAg
IHZpc2l0KGRvd25jYXN0PEFTVDo6QXJyYXlUeXBlPih0eXBlKSk7CisgICAgICAgIH0KKyAgICB9
CisKKyAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpUeXBlRGVmaW5pdGlvbiYgdHlwZURlZmlu
aXRpb24pCisgICAgeworICAgICAgICB2aXNpdFR5cGUodHlwZURlZmluaXRpb24udHlwZSgpKTsK
KyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpTdHJ1Y3R1cmVEZWZpbml0aW9u
JiBzdHJ1Y3R1cmVEZWZpbml0aW9uKQorICAgIHsKKyAgICAgICAgZm9yIChhdXRvJiBzdHJ1Y3R1
cmVFbGVtZW50IDogc3RydWN0dXJlRGVmaW5pdGlvbi5zdHJ1Y3R1cmVFbGVtZW50cygpKQorICAg
ICAgICAgICAgdmlzaXQoc3RydWN0dXJlRWxlbWVudCk7CisgICAgfQorCisgICAgdmlydHVhbCB2
b2lkIHZpc2l0KEFTVDo6RW51bWVyYXRpb25EZWZpbml0aW9uJiBlbnVtZXJhdGlvbkRlZmluaXRp
b24pCisgICAgeworICAgICAgICB2aXNpdFR5cGUoZW51bWVyYXRpb25EZWZpbml0aW9uLnR5cGUo
KSk7CisgICAgICAgIGZvciAoYXV0byYgZW51bWVyYXRpb25NZW1iZXIgOiBlbnVtZXJhdGlvbkRl
ZmluaXRpb24uZW51bWVyYXRpb25NZW1iZXJzKCkpCisgICAgICAgICAgICB2aXNpdChlbnVtZXJh
dGlvbk1lbWJlcik7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6RnVuY3Rp
b25EZWZpbml0aW9uJiBmdW5jdGlvbkRlZmluaXRpb24pCisgICAgeworICAgICAgICB2aXNpdChz
dGF0aWNfY2FzdDxBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24mPihmdW5jdGlvbkRlZmluaXRpb24p
KTsKKyAgICAgICAgdmlzaXQoZnVuY3Rpb25EZWZpbml0aW9uLmJsb2NrKCkpOworICAgIH0KKwor
ICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24mIG5h
dGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24pCisgICAgeworICAgICAgICB2aXNpdChzdGF0aWNfY2Fz
dDxBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24mPihuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uKSk7
CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0
aW9uJiBuYXRpdmVUeXBlRGVjbGFyYXRpb24pCisgICAgeworICAgICAgICBmb3IgKGF1dG8mIHR5
cGVBcmd1bWVudCA6IG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi50eXBlQXJndW1lbnRzKCkpCisgICAg
ICAgICAgICB2aXNpdCh0eXBlQXJndW1lbnQpOworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCB2
aXNpdChBU1Q6OlR5cGVSZWZlcmVuY2UmIHR5cGVSZWZlcmVuY2UpCisgICAgeworICAgICAgICBm
b3IgKGF1dG8mIHR5cGVBcmd1bWVudCA6IHR5cGVSZWZlcmVuY2UudHlwZUFyZ3VtZW50cygpKQor
ICAgICAgICAgICAgdmlzaXQodHlwZUFyZ3VtZW50KTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZv
aWQgdmlzaXQoQVNUOjpQb2ludGVyVHlwZSYgcG9pbnRlclR5cGUpCisgICAgeworICAgICAgICB2
aXNpdChzdGF0aWNfY2FzdDxBU1Q6OlJlZmVyZW5jZVR5cGUmPihwb2ludGVyVHlwZSkpOworICAg
IH0KKworICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6OkFycmF5UmVmZXJlbmNlVHlwZSYgYXJy
YXlSZWZlcmVuY2VUeXBlKQorICAgIHsKKyAgICAgICAgdmlzaXQoc3RhdGljX2Nhc3Q8QVNUOjpS
ZWZlcmVuY2VUeXBlJj4oYXJyYXlSZWZlcmVuY2VUeXBlKSk7CisgICAgfQorCisgICAgdmlydHVh
bCB2b2lkIHZpc2l0KEFTVDo6QXJyYXlUeXBlJiBhcnJheVR5cGUpCisgICAgeworICAgICAgICB2
aXNpdFR5cGUoYXJyYXlUeXBlLnR5cGUoKSk7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIHZp
c2l0KEFTVDo6U3RydWN0dXJlRWxlbWVudCYgc3RydWN0dXJlRWxlbWVudCkKKyAgICB7CisgICAg
ICAgIHZpc2l0VHlwZShzdHJ1Y3R1cmVFbGVtZW50LnR5cGUoKSk7CisgICAgICAgIGlmIChzdHJ1
Y3R1cmVFbGVtZW50LnNlbWFudGljKCkpCisgICAgICAgICAgICB2aXNpdCgqc3RydWN0dXJlRWxl
bWVudC5zZW1hbnRpYygpKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpF
bnVtZXJhdGlvbk1lbWJlciYgZW51bWVyYXRpb25NZW1iZXIpCisgICAgeworICAgICAgICBpZiAo
ZW51bWVyYXRpb25NZW1iZXIudmFsdWUoKSkKKyAgICAgICAgICAgIHZpc2l0KCplbnVtZXJhdGlv
bk1lbWJlci52YWx1ZSgpKTsKKyAgICB9CisgICAgCisgICAgdmlydHVhbCB2b2lkIHZpc2l0KEFT
VDo6RnVuY3Rpb25EZWNsYXJhdGlvbiYgZnVuY3Rpb25EZWNsYXJhdGlvbikKKyAgICB7CisgICAg
ICAgIHZpc2l0KGZ1bmN0aW9uRGVjbGFyYXRpb24uYXR0cmlidXRlQmxvY2soKSk7CisgICAgICAg
IHZpc2l0VHlwZShmdW5jdGlvbkRlY2xhcmF0aW9uLnR5cGUoKSk7CisgICAgICAgIGZvciAoYXV0
byYgcGFyYW1ldGVyIDogZnVuY3Rpb25EZWNsYXJhdGlvbi5wYXJhbWV0ZXJzKCkpCisgICAgICAg
ICAgICB2aXNpdChwYXJhbWV0ZXIpOworICAgICAgICBpZiAoZnVuY3Rpb25EZWNsYXJhdGlvbi5z
ZW1hbnRpYygpKQorICAgICAgICAgICAgdmlzaXQoKmZ1bmN0aW9uRGVjbGFyYXRpb24uc2VtYW50
aWMoKSk7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6VHlwZUFyZ3VtZW50
JiB0eXBlQXJndW1lbnQpCisgICAgeworICAgICAgICBXVEY6OnZpc2l0KFdURjo6bWFrZVZpc2l0
b3IoWyZdKEFTVDo6Q29uc3RhbnRFeHByZXNzaW9uJiBjb25zdGFudEV4cHJlc3Npb24pIHsKKyAg
ICAgICAgICAgIHZpc2l0KGNvbnN0YW50RXhwcmVzc2lvbik7CisgICAgICAgIH0sIFsmXShzdGQ6
OnVuaXF1ZV9wdHI8QVNUOjpUeXBlUmVmZXJlbmNlPiYgdHlwZVJlZmVyZW5jZSkgeworICAgICAg
ICAgICAgdmlzaXQoKnR5cGVSZWZlcmVuY2UpOworICAgICAgICB9KSwgdHlwZUFyZ3VtZW50KTsK
KyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpSZWZlcmVuY2VUeXBlJiByZWZl
cmVuY2VUeXBlKQorICAgIHsKKyAgICAgICAgdmlzaXRUeXBlKHJlZmVyZW5jZVR5cGUuZWxlbWVu
dFR5cGUoKSk7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6U2VtYW50aWMm
IHNlbWFudGljKQorICAgIHsKKyAgICAgICAgV1RGOjp2aXNpdChXVEY6Om1ha2VWaXNpdG9yKFsm
XShBU1Q6OkJ1aWx0SW5TZW1hbnRpYyYgYnVpbHRJblNlbWFudGljKSB7CisgICAgICAgICAgICB2
aXNpdChidWlsdEluU2VtYW50aWMpOworICAgICAgICB9LCBbJl0oQVNUOjpSZXNvdXJjZVNlbWFu
dGljJiByZXNvdXJjZVNlbWFudGljKSB7CisgICAgICAgICAgICB2aXNpdChyZXNvdXJjZVNlbWFu
dGljKTsKKyAgICAgICAgfSwgWyZdKEFTVDo6U3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFudGlj
JiBzcGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWMpIHsKKyAgICAgICAgICAgIHZpc2l0KHNw
ZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYyk7CisgICAgICAgIH0sIFsmXShBU1Q6OlN0YWdl
SW5PdXRTZW1hbnRpYyYgc3RhZ2VJbk91dFNlbWFudGljKSB7CisgICAgICAgICAgICB2aXNpdChz
dGFnZUluT3V0U2VtYW50aWMpOworICAgICAgICB9KSwgc2VtYW50aWMpOworICAgIH0KKworICAg
IHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6OkNvbnN0YW50RXhwcmVzc2lvbiYgY29uc3RhbnRFeHBy
ZXNzaW9uKQorICAgIHsKKyAgICAgICAgV1RGOjp2aXNpdChXVEY6Om1ha2VWaXNpdG9yKFsmXShB
U1Q6OkludGVnZXJMaXRlcmFsJiBpbnRlZ2VyTGl0ZXJhbCkgeworICAgICAgICAgICAgdmlzaXQo
aW50ZWdlckxpdGVyYWwpOworICAgICAgICB9LCBbJl0oQVNUOjpVbnNpZ25lZEludGVnZXJMaXRl
cmFsJiB1bnNpZ25lZEludGVnZXJMaXRlcmFsKSB7CisgICAgICAgICAgICB2aXNpdCh1bnNpZ25l
ZEludGVnZXJMaXRlcmFsKTsKKyAgICAgICAgfSwgWyZdKEFTVDo6RmxvYXRMaXRlcmFsJiBmbG9h
dExpdGVyYWwpIHsKKyAgICAgICAgICAgIHZpc2l0KGZsb2F0TGl0ZXJhbCk7CisgICAgICAgIH0s
IFsmXShBU1Q6Ok51bGxMaXRlcmFsJiBudWxsTGl0ZXJhbCkgeworICAgICAgICAgICAgdmlzaXQo
bnVsbExpdGVyYWwpOworICAgICAgICB9LCBbJl0oQVNUOjpCb29sZWFuTGl0ZXJhbCYgYm9vbGVh
bkxpdGVyYWwpIHsKKyAgICAgICAgICAgIHZpc2l0KGJvb2xlYW5MaXRlcmFsKTsKKyAgICAgICAg
fSwgWyZdKEFTVDo6Q29uc3RhbnRFeHByZXNzaW9uRW51bWVyYXRpb25NZW1iZXJSZWZlcmVuY2Um
IGNvbnN0YW50RXhwcmVzc2lvbkVudW1lcmF0aW9uTWVtYmVyUmVmZXJlbmNlKSB7CisgICAgICAg
ICAgICB2aXNpdChjb25zdGFudEV4cHJlc3Npb25FbnVtZXJhdGlvbk1lbWJlclJlZmVyZW5jZSk7
CisgICAgICAgIH0pLCBjb25zdGFudEV4cHJlc3Npb24pOworICAgIH0KKworICAgIHZpcnR1YWwg
dm9pZCB2aXNpdChBU1Q6OkF0dHJpYnV0ZUJsb2NrJiBhdHRyaWJ1dGVCbG9jaykKKyAgICB7Cisg
ICAgICAgIGZvciAoYXV0byYgZnVuY3Rpb25BdHRyaWJ1dGUgOiBhdHRyaWJ1dGVCbG9jaykKKyAg
ICAgICAgICAgIHZpc2l0KGZ1bmN0aW9uQXR0cmlidXRlKTsKKyAgICB9CisKKyAgICB2aXJ0dWFs
IHZvaWQgdmlzaXQoQVNUOjpQYXJhbWV0ZXImIHBhcmFtZXRlcikKKyAgICB7CisgICAgICAgIHZp
c2l0VHlwZShwYXJhbWV0ZXIudHlwZSgpKTsKKyAgICAgICAgaWYgKHBhcmFtZXRlci5zZW1hbnRp
YygpKQorICAgICAgICAgICAgdmlzaXQoKnBhcmFtZXRlci5zZW1hbnRpYygpKTsKKyAgICB9CisK
KyAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpCdWlsdEluU2VtYW50aWMmKQorICAgIHsKKyAg
ICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpSZXNvdXJjZVNlbWFudGljJikKKyAg
ICB7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6U3BlY2lhbGl6YXRpb25D
b25zdGFudFNlbWFudGljJikKKyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIHZpc2l0
KEFTVDo6U3RhZ2VJbk91dFNlbWFudGljJikKKyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCB2
b2lkIHZpc2l0KEFTVDo6SW50ZWdlckxpdGVyYWwmKQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0
dWFsIHZvaWQgdmlzaXQoQVNUOjpVbnNpZ25lZEludGVnZXJMaXRlcmFsJikKKyAgICB7CisgICAg
fQorCisgICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6RmxvYXRMaXRlcmFsJikKKyAgICB7Cisg
ICAgfQorCisgICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6TnVsbExpdGVyYWwmKQorICAgIHsK
KyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpCb29sZWFuTGl0ZXJhbCYpCisg
ICAgeworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6OkNvbnN0YW50RXhwcmVz
c2lvbkVudW1lcmF0aW9uTWVtYmVyUmVmZXJlbmNlJikKKyAgICB7CisgICAgfQorCisgICAgdmly
dHVhbCB2b2lkIHZpc2l0KEFTVDo6RnVuY3Rpb25BdHRyaWJ1dGUmIGZ1bmN0aW9uQXR0cmlidXRl
KQorICAgIHsKKyAgICAgICAgV1RGOjp2aXNpdChXVEY6Om1ha2VWaXNpdG9yKFsmXShBU1Q6Ok51
bVRocmVhZHNGdW5jdGlvbkF0dHJpYnV0ZSYgbnVtVGhyZWFkc0Z1bmN0aW9uQXR0cmlidXRlKSB7
CisgICAgICAgICAgICB2aXNpdChudW1UaHJlYWRzRnVuY3Rpb25BdHRyaWJ1dGUpOworICAgICAg
ICB9KSwgZnVuY3Rpb25BdHRyaWJ1dGUpOworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCB2aXNp
dChBU1Q6Ok51bVRocmVhZHNGdW5jdGlvbkF0dHJpYnV0ZSYpCisgICAgeworICAgIH0KKworICAg
IHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6OkJsb2NrJiBibG9jaykKKyAgICB7CisgICAgICAgIGZv
ciAoYXV0byYgc3RhdGVtZW50IDogYmxvY2suc3RhdGVtZW50cygpKQorICAgICAgICAgICAgdmlz
aXQoKnN0YXRlbWVudCk7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6U3Rh
dGVtZW50JiBzdGF0ZW1lbnQpCisgICAgeworICAgICAgICBpZiAoaXM8QVNUOjpCbG9jaz4oc3Rh
dGVtZW50KSkKKyAgICAgICAgICAgIHZpc2l0KGRvd25jYXN0PEFTVDo6QmxvY2s+KHN0YXRlbWVu
dCkpOworICAgICAgICBlbHNlIGlmIChpczxBU1Q6OkJyZWFrPihzdGF0ZW1lbnQpKQorICAgICAg
ICAgICAgdmlzaXQoZG93bmNhc3Q8QVNUOjpCcmVhaz4oc3RhdGVtZW50KSk7CisgICAgICAgIGVs
c2UgaWYgKGlzPEFTVDo6Q29udGludWU+KHN0YXRlbWVudCkpCisgICAgICAgICAgICB2aXNpdChk
b3duY2FzdDxBU1Q6OkNvbnRpbnVlPihzdGF0ZW1lbnQpKTsKKyAgICAgICAgZWxzZSBpZiAoaXM8
QVNUOjpEb1doaWxlTG9vcD4oc3RhdGVtZW50KSkKKyAgICAgICAgICAgIHZpc2l0KGRvd25jYXN0
PEFTVDo6RG9XaGlsZUxvb3A+KHN0YXRlbWVudCkpOworICAgICAgICBlbHNlIGlmIChpczxBU1Q6
OkVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQ+KHN0YXRlbWVudCkpCisgICAgICAgICAgICB2
aXNpdChkb3duY2FzdDxBU1Q6OkVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQ+KHN0YXRlbWVu
dCkpOworICAgICAgICBlbHNlIGlmIChpczxBU1Q6OkZhbGx0aHJvdWdoPihzdGF0ZW1lbnQpKQor
ICAgICAgICAgICAgdmlzaXQoZG93bmNhc3Q8QVNUOjpGYWxsdGhyb3VnaD4oc3RhdGVtZW50KSk7
CisgICAgICAgIGVsc2UgaWYgKGlzPEFTVDo6Rm9yTG9vcD4oc3RhdGVtZW50KSkKKyAgICAgICAg
ICAgIHZpc2l0KGRvd25jYXN0PEFTVDo6Rm9yTG9vcD4oc3RhdGVtZW50KSk7CisgICAgICAgIGVs
c2UgaWYgKGlzPEFTVDo6SWZTdGF0ZW1lbnQ+KHN0YXRlbWVudCkpCisgICAgICAgICAgICB2aXNp
dChkb3duY2FzdDxBU1Q6OklmU3RhdGVtZW50PihzdGF0ZW1lbnQpKTsKKyAgICAgICAgZWxzZSBp
ZiAoaXM8QVNUOjpSZXR1cm4+KHN0YXRlbWVudCkpCisgICAgICAgICAgICB2aXNpdChkb3duY2Fz
dDxBU1Q6OlJldHVybj4oc3RhdGVtZW50KSk7CisgICAgICAgIGVsc2UgaWYgKGlzPEFTVDo6U3dp
dGNoQ2FzZT4oc3RhdGVtZW50KSkKKyAgICAgICAgICAgIHZpc2l0KGRvd25jYXN0PEFTVDo6U3dp
dGNoQ2FzZT4oc3RhdGVtZW50KSk7CisgICAgICAgIGVsc2UgaWYgKGlzPEFTVDo6U3dpdGNoU3Rh
dGVtZW50PihzdGF0ZW1lbnQpKQorICAgICAgICAgICAgdmlzaXQoZG93bmNhc3Q8QVNUOjpTd2l0
Y2hTdGF0ZW1lbnQ+KHN0YXRlbWVudCkpOworICAgICAgICBlbHNlIGlmIChpczxBU1Q6OlRyYXA+
KHN0YXRlbWVudCkpCisgICAgICAgICAgICB2aXNpdChkb3duY2FzdDxBU1Q6OlRyYXA+KHN0YXRl
bWVudCkpOworICAgICAgICBlbHNlIGlmIChpczxBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb25zU3Rh
dGVtZW50PihzdGF0ZW1lbnQpKQorICAgICAgICAgICAgdmlzaXQoZG93bmNhc3Q8QVNUOjpWYXJp
YWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudD4oc3RhdGVtZW50KSk7CisgICAgICAgIGVsc2Ugewor
ICAgICAgICAgICAgQVNTRVJUKGlzPEFTVDo6V2hpbGVMb29wPihzdGF0ZW1lbnQpKTsKKyAgICAg
ICAgICAgIHZpc2l0KGRvd25jYXN0PEFTVDo6V2hpbGVMb29wPihzdGF0ZW1lbnQpKTsKKyAgICAg
ICAgfQorICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6OkJyZWFrJikKKyAgICB7
CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6Q29udGludWUmKQorICAgIHsK
KyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpEb1doaWxlTG9vcCYgZG9XaGls
ZUxvb3ApCisgICAgeworICAgICAgICB2aXNpdChkb1doaWxlTG9vcC5ib2R5KCkpOworICAgICAg
ICB2aXNpdChkb1doaWxlTG9vcC5jb25kaXRpb25hbCgpKTsKKyAgICB9CisKKyAgICB2aXJ0dWFs
IHZvaWQgdmlzaXQoQVNUOjpFeHByZXNzaW9uJiBleHByZXNzaW9uKQorICAgIHsKKyAgICAgICAg
aWYgKGlzPEFTVDo6QXNzaWdubWVudEV4cHJlc3Npb24+KGV4cHJlc3Npb24pKQorICAgICAgICAg
ICAgdmlzaXQoZG93bmNhc3Q8QVNUOjpBc3NpZ25tZW50RXhwcmVzc2lvbj4oZXhwcmVzc2lvbikp
OworICAgICAgICBlbHNlIGlmIChpczxBU1Q6OkJvb2xlYW5MaXRlcmFsPihleHByZXNzaW9uKSkK
KyAgICAgICAgICAgIHZpc2l0KGRvd25jYXN0PEFTVDo6Qm9vbGVhbkxpdGVyYWw+KGV4cHJlc3Np
b24pKTsKKyAgICAgICAgZWxzZSBpZiAoaXM8QVNUOjpDYWxsRXhwcmVzc2lvbj4oZXhwcmVzc2lv
bikpCisgICAgICAgICAgICB2aXNpdChkb3duY2FzdDxBU1Q6OkNhbGxFeHByZXNzaW9uPihleHBy
ZXNzaW9uKSk7CisgICAgICAgIGVsc2UgaWYgKGlzPEFTVDo6Q29tbWFFeHByZXNzaW9uPihleHBy
ZXNzaW9uKSkKKyAgICAgICAgICAgIHZpc2l0KGRvd25jYXN0PEFTVDo6Q29tbWFFeHByZXNzaW9u
PihleHByZXNzaW9uKSk7CisgICAgICAgIGVsc2UgaWYgKGlzPEFTVDo6RGVyZWZlcmVuY2VFeHBy
ZXNzaW9uPihleHByZXNzaW9uKSkKKyAgICAgICAgICAgIHZpc2l0KGRvd25jYXN0PEFTVDo6RGVy
ZWZlcmVuY2VFeHByZXNzaW9uPihleHByZXNzaW9uKSk7CisgICAgICAgIGVsc2UgaWYgKGlzPEFT
VDo6RmxvYXRMaXRlcmFsPihleHByZXNzaW9uKSkKKyAgICAgICAgICAgIHZpc2l0KGRvd25jYXN0
PEFTVDo6RmxvYXRMaXRlcmFsPihleHByZXNzaW9uKSk7CisgICAgICAgIGVsc2UgaWYgKGlzPEFT
VDo6SW50ZWdlckxpdGVyYWw+KGV4cHJlc3Npb24pKQorICAgICAgICAgICAgdmlzaXQoZG93bmNh
c3Q8QVNUOjpJbnRlZ2VyTGl0ZXJhbD4oZXhwcmVzc2lvbikpOworICAgICAgICBlbHNlIGlmIChp
czxBU1Q6OkxvZ2ljYWxFeHByZXNzaW9uPihleHByZXNzaW9uKSkKKyAgICAgICAgICAgIHZpc2l0
KGRvd25jYXN0PEFTVDo6TG9naWNhbEV4cHJlc3Npb24+KGV4cHJlc3Npb24pKTsKKyAgICAgICAg
ZWxzZSBpZiAoaXM8QVNUOjpMb2dpY2FsTm90RXhwcmVzc2lvbj4oZXhwcmVzc2lvbikpCisgICAg
ICAgICAgICB2aXNpdChkb3duY2FzdDxBU1Q6OkxvZ2ljYWxOb3RFeHByZXNzaW9uPihleHByZXNz
aW9uKSk7CisgICAgICAgIGVsc2UgaWYgKGlzPEFTVDo6TWFrZUFycmF5UmVmZXJlbmNlRXhwcmVz
c2lvbj4oZXhwcmVzc2lvbikpCisgICAgICAgICAgICB2aXNpdChkb3duY2FzdDxBU1Q6Ok1ha2VB
cnJheVJlZmVyZW5jZUV4cHJlc3Npb24+KGV4cHJlc3Npb24pKTsKKyAgICAgICAgZWxzZSBpZiAo
aXM8QVNUOjpNYWtlUG9pbnRlckV4cHJlc3Npb24+KGV4cHJlc3Npb24pKQorICAgICAgICAgICAg
dmlzaXQoZG93bmNhc3Q8QVNUOjpNYWtlUG9pbnRlckV4cHJlc3Npb24+KGV4cHJlc3Npb24pKTsK
KyAgICAgICAgZWxzZSBpZiAoaXM8QVNUOjpOdWxsTGl0ZXJhbD4oZXhwcmVzc2lvbikpCisgICAg
ICAgICAgICB2aXNpdChkb3duY2FzdDxBU1Q6Ok51bGxMaXRlcmFsPihleHByZXNzaW9uKSk7Cisg
ICAgICAgIGVsc2UgaWYgKGlzPEFTVDo6UHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uPihleHByZXNz
aW9uKSkKKyAgICAgICAgICAgIHZpc2l0KGRvd25jYXN0PEFTVDo6UHJvcGVydHlBY2Nlc3NFeHBy
ZXNzaW9uPihleHByZXNzaW9uKSk7CisgICAgICAgIGVsc2UgaWYgKGlzPEFTVDo6UmVhZE1vZGlm
eVdyaXRlRXhwcmVzc2lvbj4oZXhwcmVzc2lvbikpCisgICAgICAgICAgICB2aXNpdChkb3duY2Fz
dDxBU1Q6OlJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24+KGV4cHJlc3Npb24pKTsKKyAgICAgICAg
ZWxzZSBpZiAoaXM8QVNUOjpUZXJuYXJ5RXhwcmVzc2lvbj4oZXhwcmVzc2lvbikpCisgICAgICAg
ICAgICB2aXNpdChkb3duY2FzdDxBU1Q6OlRlcm5hcnlFeHByZXNzaW9uPihleHByZXNzaW9uKSk7
CisgICAgICAgIGVsc2UgaWYgKGlzPEFTVDo6VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbD4oZXhwcmVz
c2lvbikpCisgICAgICAgICAgICB2aXNpdChkb3duY2FzdDxBU1Q6OlVuc2lnbmVkSW50ZWdlckxp
dGVyYWw+KGV4cHJlc3Npb24pKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBBU1NFUlQo
aXM8QVNUOjpWYXJpYWJsZVJlZmVyZW5jZT4oZXhwcmVzc2lvbikpOworICAgICAgICAgICAgdmlz
aXQoZG93bmNhc3Q8QVNUOjpWYXJpYWJsZVJlZmVyZW5jZT4oZXhwcmVzc2lvbikpOworICAgICAg
ICB9CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6RWZmZWN0ZnVsRXhwcmVz
c2lvblN0YXRlbWVudCYgZWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVudCkKKyAgICB7CisgICAg
ICAgIHZpc2l0KGVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQuZWZmZWN0ZnVsRXhwcmVzc2lv
bigpKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpGYWxsdGhyb3VnaCYp
CisgICAgeworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6OkZvckxvb3AmIGZv
ckxvb3ApCisgICAgeworICAgICAgICBXVEY6OnZpc2l0KFdURjo6bWFrZVZpc2l0b3IoWyZdKEFT
VDo6VmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQmIHZhcmlhYmxlRGVjbGFyYXRpb25zU3Rh
dGVtZW50KSB7CisgICAgICAgICAgICB2aXNpdCh2YXJpYWJsZURlY2xhcmF0aW9uc1N0YXRlbWVu
dCk7CisgICAgICAgIH0sIFsmXShzdGQ6OnVuaXF1ZV9wdHI8QVNUOjpFeHByZXNzaW9uPiYgZXhw
cmVzc2lvbikgeworICAgICAgICAgICAgdmlzaXQoKmV4cHJlc3Npb24pOworICAgICAgICB9KSwg
Zm9yTG9vcC5pbml0aWFsaXphdGlvbigpKTsKKyAgICAgICAgaWYgKGZvckxvb3AuY29uZGl0aW9u
KCkpCisgICAgICAgICAgICB2aXNpdCgqZm9yTG9vcC5jb25kaXRpb24oKSk7CisgICAgICAgIGlm
IChmb3JMb29wLmluY3JlbWVudCgpKQorICAgICAgICAgICAgdmlzaXQoKmZvckxvb3AuaW5jcmVt
ZW50KCkpOworICAgICAgICB2aXNpdChmb3JMb29wLmJvZHkoKSk7CisgICAgfQorCisgICAgdmly
dHVhbCB2b2lkIHZpc2l0KEFTVDo6SWZTdGF0ZW1lbnQmIGlmU3RhdGVtZW50KQorICAgIHsKKyAg
ICAgICAgdmlzaXQoaWZTdGF0ZW1lbnQuY29uZGl0aW9uYWwoKSk7CisgICAgICAgIHZpc2l0KGlm
U3RhdGVtZW50LmJvZHkoKSk7CisgICAgICAgIGlmIChpZlN0YXRlbWVudC5lbHNlQm9keSgpKQor
ICAgICAgICAgICAgdmlzaXQoKmlmU3RhdGVtZW50LmVsc2VCb2R5KCkpOworICAgIH0KKworICAg
IHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6OlJldHVybiYgcmV0dXJuU3RhdGVtZW50KQorICAgIHsK
KyAgICAgICAgaWYgKHJldHVyblN0YXRlbWVudC52YWx1ZSgpKQorICAgICAgICAgICAgdmlzaXQo
KnJldHVyblN0YXRlbWVudC52YWx1ZSgpKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgdmlz
aXQoQVNUOjpTd2l0Y2hDYXNlJiBzd2l0Y2hDYXNlKQorICAgIHsKKyAgICAgICAgaWYgKHN3aXRj
aENhc2UudmFsdWUoKSkKKyAgICAgICAgICAgIHZpc2l0KCpzd2l0Y2hDYXNlLnZhbHVlKCkpOwor
ICAgICAgICB2aXNpdChzd2l0Y2hDYXNlLmJsb2NrKCkpOworICAgIH0KKworICAgIHZpcnR1YWwg
dm9pZCB2aXNpdChBU1Q6OlN3aXRjaFN0YXRlbWVudCYgc3dpdGNoU3RhdGVtZW50KQorICAgIHsK
KyAgICAgICAgdmlzaXQoc3dpdGNoU3RhdGVtZW50LnZhbHVlKCkpOworICAgICAgICBmb3IgKGF1
dG8mIHN3aXRjaENhc2UgOiBzd2l0Y2hTdGF0ZW1lbnQuc3dpdGNoQ2FzZXMoKSkKKyAgICAgICAg
ICAgIHZpc2l0KHN3aXRjaENhc2UpOworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCB2aXNpdChB
U1Q6OlRyYXAmKQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpW
YXJpYWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudCYgdmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1l
bnQpCisgICAgeworICAgICAgICBmb3IgKGF1dG8mIHZhcmlhYmxlRGVjbGFyYXRpb24gOiB2YXJp
YWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudC52YXJpYWJsZURlY2xhcmF0aW9ucygpKQorICAgICAg
ICAgICAgdmlzaXQodmFyaWFibGVEZWNsYXJhdGlvbik7CisgICAgfQorCisgICAgdmlydHVhbCB2
b2lkIHZpc2l0KEFTVDo6V2hpbGVMb29wJiB3aGlsZUxvb3ApCisgICAgeworICAgICAgICB2aXNp
dCh3aGlsZUxvb3AuY29uZGl0aW9uYWwoKSk7CisgICAgICAgIHZpc2l0KHdoaWxlTG9vcC5ib2R5
KCkpOworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6OlZhcmlhYmxlRGVjbGFy
YXRpb24mIHZhcmlhYmxlRGVjbGFyYXRpb24pCisgICAgeworICAgICAgICB2aXNpdFR5cGUodmFy
aWFibGVEZWNsYXJhdGlvbi50eXBlKCkpOworICAgICAgICBpZiAodmFyaWFibGVEZWNsYXJhdGlv
bi5zZW1hbnRpYygpKQorICAgICAgICAgICAgdmlzaXQoKnZhcmlhYmxlRGVjbGFyYXRpb24uc2Vt
YW50aWMoKSk7CisgICAgICAgIGlmICh2YXJpYWJsZURlY2xhcmF0aW9uLmluaXRpYWxpemVyKCkp
CisgICAgICAgICAgICB2aXNpdCgqdmFyaWFibGVEZWNsYXJhdGlvbi5pbml0aWFsaXplcigpKTsK
KyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpBc3NpZ25tZW50RXhwcmVzc2lv
biYgYXNzaWdubWVudEV4cHJlc3Npb24pCisgICAgeworICAgICAgICB2aXNpdChhc3NpZ25tZW50
RXhwcmVzc2lvbi5sZWZ0KCkpOworICAgICAgICB2aXNpdChhc3NpZ25tZW50RXhwcmVzc2lvbi5y
aWdodCgpKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpDYWxsRXhwcmVz
c2lvbiYgY2FsbEV4cHJlc3Npb24pCisgICAgeworICAgICAgICBmb3IgKGF1dG8mIGFyZ3VtZW50
IDogY2FsbEV4cHJlc3Npb24uYXJndW1lbnRzKCkpCisgICAgICAgICAgICB2aXNpdCgqYXJndW1l
bnQpOworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6OkNvbW1hRXhwcmVzc2lv
biYgY29tbWFFeHByZXNzaW9uKQorICAgIHsKKyAgICAgICAgZm9yIChhdXRvJiBleHByZXNzaW9u
IDogY29tbWFFeHByZXNzaW9uLmxpc3QoKSkKKyAgICAgICAgICAgIHZpc2l0KCpleHByZXNzaW9u
KTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpEZXJlZmVyZW5jZUV4cHJl
c3Npb24mIGRlcmVmZXJlbmNlRXhwcmVzc2lvbikKKyAgICB7CisgICAgICAgIHZpc2l0KGRlcmVm
ZXJlbmNlRXhwcmVzc2lvbi5wb2ludGVyKCkpOworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCB2
aXNpdChBU1Q6OkxvZ2ljYWxFeHByZXNzaW9uJiBsb2dpY2FsRXhwcmVzc2lvbikKKyAgICB7Cisg
ICAgICAgIHZpc2l0KGxvZ2ljYWxFeHByZXNzaW9uLmxlZnQoKSk7CisgICAgICAgIHZpc2l0KGxv
Z2ljYWxFeHByZXNzaW9uLnJpZ2h0KCkpOworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCB2aXNp
dChBU1Q6OkxvZ2ljYWxOb3RFeHByZXNzaW9uJiBsb2dpY2FsTm90RXhwcmVzc2lvbikKKyAgICB7
CisgICAgICAgIHZpc2l0KGxvZ2ljYWxOb3RFeHByZXNzaW9uLm9wZXJhbmQoKSk7CisgICAgfQor
CisgICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6TWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lv
biYgbWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbikKKyAgICB7CisgICAgICAgIHZpc2l0KG1h
a2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24ubFZhbHVlKCkpOworICAgIH0KKworICAgIHZpcnR1
YWwgdm9pZCB2aXNpdChBU1Q6Ok1ha2VQb2ludGVyRXhwcmVzc2lvbiYgbWFrZVBvaW50ZXJFeHBy
ZXNzaW9uKQorICAgIHsKKyAgICAgICAgdmlzaXQobWFrZVBvaW50ZXJFeHByZXNzaW9uLmxWYWx1
ZSgpKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpQcm9wZXJ0eUFjY2Vz
c0V4cHJlc3Npb24mIHByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbikKKyAgICB7CisgICAgICAgIHZp
c2l0KHByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbi5iYXNlKCkpOworICAgIH0KKworICAgIHZpcnR1
YWwgdm9pZCB2aXNpdChBU1Q6OlJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24mIHJlYWRNb2RpZnlX
cml0ZUV4cHJlc3Npb24pCisgICAgeworICAgICAgICB2aXNpdChyZWFkTW9kaWZ5V3JpdGVFeHBy
ZXNzaW9uLmxWYWx1ZSgpKTsKKyAgICAgICAgdmlzaXQocmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lv
bi5vbGRWYWx1ZSgpKTsKKyAgICAgICAgdmlzaXQocmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbi5u
ZXdWYWx1ZSgpKTsKKyAgICAgICAgdmlzaXQocmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbi5uZXdW
YWx1ZUV4cHJlc3Npb24oKSk7CisgICAgICAgIHZpc2l0KHJlYWRNb2RpZnlXcml0ZUV4cHJlc3Np
b24ucmVzdWx0RXhwcmVzc2lvbigpKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgdmlzaXQo
QVNUOjpUZXJuYXJ5RXhwcmVzc2lvbiYgdGVybmFyeUV4cHJlc3Npb24pCisgICAgeworICAgICAg
ICB2aXNpdCh0ZXJuYXJ5RXhwcmVzc2lvbi5wcmVkaWNhdGUoKSk7CisgICAgICAgIHZpc2l0KHRl
cm5hcnlFeHByZXNzaW9uLmJvZHlFeHByZXNzaW9uKCkpOworICAgICAgICB2aXNpdCh0ZXJuYXJ5
RXhwcmVzc2lvbi5lbHNlRXhwcmVzc2lvbigpKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQg
dmlzaXQoQVNUOjpWYXJpYWJsZVJlZmVyZW5jZSYpCisgICAgeworICAgIH0KKworICAgIHZpcnR1
YWwgdm9pZCB2aXNpdChBU1Q6OkFub255bW91c1ZhcmlhYmxlRGVjbGFyYXRpb24mKQorICAgIHsK
KyAgICB9Cit9OworCit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDJlMjMwZjFj
OTMxLi42ZGYxOTZkMjQxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQK
KysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTMwMyw2ICszMDMsOSBAQCBNb2R1
bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3BwCiBNb2R1
bGVzL3dlYmdwdS9ET01XaW5kb3dXZWJHUFUuY3BwCiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExT
TExleGVyLmNwcAogTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQYXJzZXIuY3BwCitNb2R1bGVz
L3dlYmdwdS9XSExTTC9XSExTTFByZXBhcmUuY3BwCitNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExT
TE5hbWVSZXNvbHZlci5jcHAKK01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFTVFR5cGVB
cmd1bWVudC5jcHAKIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVS5jcHAKIE1vZHVsZXMvd2ViZ3B1L1dl
YkdQVUFkYXB0ZXIuY3BwCiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVCdWZmZXIuY3BwCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZWEz
MzVhZDYzZjQuLjU4Y2M1NWM2YmI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMzI3OCw2ICsxMzI3OCwxMiBAQAogCQlDMjgw
ODMzRDFDNkRDMjJDMDAxNDUxQjYgLyogSlNGb250RmFjZS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IG5hbWUgPSBKU0ZvbnRGYWNlLmNwcDsgcGF0aCA9IERlcml2ZWRTb3VyY2Vz
L1dlYkNvcmUvSlNGb250RmFjZS5jcHA7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7
IH07CiAJCUMyODA4MzNFMUM2REMyMkMwMDE0NTFCNiAvKiBKU0ZvbnRGYWNlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEpTRm9udEZhY2UuaDsgcGF0aCA9IERlcml2ZWRTb3Vy
Y2VzL1dlYkNvcmUvSlNGb250RmFjZS5oOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElS
OyB9OwogCQlDMjgwQjNGRDFFRjQ2MDg5MDBEMzUxMzUgLyogRm9udEZhbWlseVNwZWNpZmljYXRp
b25OdWxsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZvbnRGYW1p
bHlTcGVjaWZpY2F0aW9uTnVsbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMy
ODhDNzI3MjFDOEM2RUYwMDJERjVDQSAvKiBXSExTTFZpc2l0b3IuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V0hMU0xWaXNpdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMyODhDNzI5MjFD
OENBNTAwMDJERjVDQSAvKiBXSExTTFByZXBhcmUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0hM
U0xQcmVwYXJlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzI4OEM3MkEyMUM4
Q0E1MDAwMkRGNUNBIC8qIFdITFNMUHJlcGFyZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTFByZXBh
cmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzI4OEM3MkIyMUM4Q0NDMjAwMkRG
NUNBIC8qIFdITFNMTmFtZVJlc29sdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdITFNMTmFt
ZVJlc29sdmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzI4OEM3MkMyMUM4
Q0NDMjAwMkRGNUNBIC8qIFdITFNMTmFtZVJlc29sdmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNM
TmFtZVJlc29sdmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMyODhDNzJEMjFD
OTkxREEwMDJERjVDQSAvKiBXSExTTEFTVFR5cGVBcmd1bWVudC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBXSExTTEFTVFR5cGVBcmd1bWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUMyQUIwQUY0MUU2QjNDNkMwMDEzNDhDNSAvKiBGb250U2VsZWN0aW9uQWxnb3JpdGhtLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZvbnRTZWxlY3Rpb25BbGdv
cml0aG0uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMkFCMEFGNTFFNkIzQzZD
MDAxMzQ4QzUgLyogRm9udFNlbGVjdGlvbkFsZ29yaXRobS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBGb250U2VsZWN0aW9uQWxnb3JpdGhtLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUMyQUIwQjAzMUU2REU5MkMwMDEzNDhDNSAvKiBGb250U2VsZWN0aW9uVmFs
dWVJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZvbnRTZWxlY3Rpb25WYWx1ZUlubGluZXMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI1Mjg5LDYgKzI1Mjk1LDExIEBACiAJCQkJ
QzJFQ0VCNEQyMUI2M0NCQjAwOEY4REU5IC8qIFdITFNMUGFyc2VyLmggKi8sCiAJCQkJQzJFQ0VC
NUUyMUI2NEQ2RjAwOEY4REU5IC8qIFdITFNMUHJvZ3JhbS5oICovLAogCQkJCUMyNzRGMTQzMjFD
MzM1RkYwMDM0MTBCRCAvKiBXSExTTFN0YW5kYXJkTGlicmFyeS50eHQgKi8sCisJCQkJQzI4OEM3
MjcyMUM4QzZFRjAwMkRGNUNBIC8qIFdITFNMVmlzaXRvci5oICovLAorCQkJCUMyODhDNzI5MjFD
OENBNTAwMDJERjVDQSAvKiBXSExTTFByZXBhcmUuY3BwICovLAorCQkJCUMyODhDNzJBMjFDOENB
NTAwMDJERjVDQSAvKiBXSExTTFByZXBhcmUuaCAqLywKKwkJCQlDMjg4QzcyQjIxQzhDQ0MyMDAy
REY1Q0EgLyogV0hMU0xOYW1lUmVzb2x2ZXIuY3BwICovLAorCQkJCUMyODhDNzJDMjFDOENDQzIw
MDJERjVDQSAvKiBXSExTTE5hbWVSZXNvbHZlci5oICovLAogCQkJKTsKIAkJCXBhdGggPSBXSExT
TDsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0yNTM2NCw2ICsyNTM3NSw3IEBACiAJ
CQkJQzIyRjc2REYyMUMyNkY0NzAwQzU0MzRFIC8qIFdITFNMQVNUVmFyaWFibGVEZWNsYXJhdGlv
bnNTdGF0ZW1lbnQuaCAqLywKIAkJCQlDMjJGNzZDQzIxQzBBOUE3MDBDNTQzNEUgLyogV0hMU0xB
U1RWYXJpYWJsZVJlZmVyZW5jZS5oICovLAogCQkJCTFDODA1OTkyMjFDMUZEREEwMDZCMDkwNiAv
KiBXSExTTEFTVFdoaWxlTG9vcC5oICovLAorCQkJCUMyODhDNzJEMjFDOTkxREEwMDJERjVDQSAv
KiBXSExTTEFTVFR5cGVBcmd1bWVudC5jcHAgKi8sCiAJCQkpOwogCQkJcGF0aCA9IEFTVDsKIAkJ
CXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVU2hhZGVyTW9kdWxlTWV0YWwubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVU2hhZGVyTW9kdWxlTWV0YWwu
bW0KaW5kZXggYmE5NGZjZjI5MzMuLjUxM2Y1YTk2ZTY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVU2hhZGVyTW9kdWxlTWV0YWwubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2NvY29hL0dQVVNoYWRl
ck1vZHVsZU1ldGFsLm1tCkBAIC0zMSw5ICszMSw3IEBACiAjaW1wb3J0ICJHUFVEZXZpY2UuaCIK
ICNpbXBvcnQgIkdQVVNoYWRlck1vZHVsZURlc2NyaXB0b3IuaCIKICNpbXBvcnQgIkxvZ2dpbmcu
aCIKLSNpbXBvcnQgIldITFNMUGFyc2VyLmgiCi0jaW1wb3J0ICJXSExTTFByb2dyYW0uaCIKLSNp
bXBvcnQgIldITFNMU3RhbmRhcmRMaWJyYXJ5LmgiCisjaW1wb3J0ICJXSExTTFByZXBhcmUuaCIK
IAogI2ltcG9ydCA8TWV0YWwvTWV0YWwuaD4KICNpbXBvcnQgPHd0Zi9CbG9ja09iakNFeGNlcHRp
b25zLmg+CkBAIC01MCwxMSArNDgsNyBAQCBSZWZQdHI8R1BVU2hhZGVyTW9kdWxlPiBHUFVTaGFk
ZXJNb2R1bGU6OmNyZWF0ZShjb25zdCBHUFVEZXZpY2UmIGRldmljZSwgR1BVU2hhZAogICAgIFN0
cmluZyBjb2RlID0gZGVzY3JpcHRvci5jb2RlOwogCiAgICAgaWYgKGRlc2NyaXB0b3IuaXNXSExT
TCkgewotICAgICAgICBXSExTTDo6UHJvZ3JhbSBwcm9ncmFtOwotICAgICAgICBXSExTTDo6UGFy
c2VyIHBhcnNlcjsKLSAgICAgICAgYXV0byBzdGFuZGFyZExpYnJhcnkgPSBTdHJpbmc6OmZyb21V
VEY4KFdITFNMU3RhbmRhcmRMaWJyYXJ5LCBzaXplb2YoV0hMU0xTdGFuZGFyZExpYnJhcnkpKTsK
LSAgICAgICAgaWYgKHBhcnNlci5wYXJzZShwcm9ncmFtLCBzdGFuZGFyZExpYnJhcnksIFdITFNM
OjpQYXJzZXI6Ok1vZGU6OlN0YW5kYXJkTGlicmFyeSkgPT0gc3RkOjpudWxsb3B0Ci0gICAgICAg
ICAgICAmJiBwYXJzZXIucGFyc2UocHJvZ3JhbSwgZGVzY3JpcHRvci5jb2RlLCBXSExTTDo6UGFy
c2VyOjpNb2RlOjpVc2VyKSA9PSBzdGQ6Om51bGxvcHQpCisgICAgICAgIGlmIChXSExTTDo6cHJl
cGFyZShkZXNjcmlwdG9yLmNvZGUpKQogICAgICAgICAgICAgY29kZSA9ICIiOwogICAgICAgICBl
bHNlCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>357930</attachid>
            <date>2018-12-20 23:13:16 -0800</date>
            <delta_ts>2018-12-21 18:56:41 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>file.txt</filename>
            <type>text/plain</type>
            <size>81333</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">Y29tbWl0IGE5NDQ1NTU0ZmIyZWYwZmFiNDY0OGYzOGI2NTJjMjIwNDYyNWZkYzYKQXV0aG9yOiBN
eWxlcyBDLiBNYXhmaWVsZCA8bW1heGZpZWxkQGFwcGxlLmNvbT4KRGF0ZTogICBUdWUgRGVjIDE4
IDEyOjE0OjAxIDIwMTggLTA4MDAKCiAgICBWaXNpdG9yCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQVNUQXJyYXlSZWZlcmVuY2VUeXBl
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xBU1RBcnJh
eVJlZmVyZW5jZVR5cGUuaAppbmRleCAyMzk3ODY4MzUzZi4uN2M3ZTljZGY5OWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFTVEFycmF5
UmVmZXJlbmNlVHlwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L0FTVC9XSExTTEFTVEFycmF5UmVmZXJlbmNlVHlwZS5oCkBAIC00OSw5ICs0OSwxMSBAQCBwdWJs
aWM6CiAgICAgQXJyYXlSZWZlcmVuY2VUeXBlKGNvbnN0IEFycmF5UmVmZXJlbmNlVHlwZSYpID0g
ZGVsZXRlOwogICAgIEFycmF5UmVmZXJlbmNlVHlwZShBcnJheVJlZmVyZW5jZVR5cGUmJikgPSBk
ZWZhdWx0OwogCisgICAgYm9vbCBpc0FycmF5UmVmZXJlbmNlVHlwZSgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIGZhbHNlOyB9CisKICAgICBzdGQ6OnVuaXF1ZV9wdHI8VHlwZT4gY2xvbmUoKSBj
b25zdCBvdmVycmlkZQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8QXJy
YXlSZWZlcmVuY2VUeXBlPihMZXhlcjo6VG9rZW4ob3JpZ2luKCkpLCBTdHJpbmcoYWRkcmVzc1Nw
YWNlKCkpLCBlbGVtZW50VHlwZSgpLT5jbG9uZSgpKTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8QXJyYXlSZWZlcmVuY2VUeXBlPihMZXhlcjo6VG9rZW4ob3JpZ2luKCkpLCBTdHJp
bmcoYWRkcmVzc1NwYWNlKCkpLCBlbGVtZW50VHlwZSgpLmNsb25lKCkpOwogICAgIH0KIAogcHJp
dmF0ZToKQEAgLTYzLDQgKzY1LDYgQEAgcHJpdmF0ZToKIAogfQogCitTUEVDSUFMSVpFX1RZUEVf
VFJBSVRTX1dITFNMX1RZUEUoQXJyYXlSZWZlcmVuY2VUeXBlLCBpc0FycmF5UmVmZXJlbmNlVHlw
ZSgpKQorCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML0FTVC9XSExTTEFTVEFycmF5VHlwZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvQVNUL1dITFNMQVNUQXJyYXlUeXBlLmgKaW5kZXggYmYzODhmYjhmNmIuLjgw
Nzk1MmVjYzZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xBU1RBcnJheVR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9BU1QvV0hMU0xBU1RBcnJheVR5cGUuaApAQCAtNTQsNiArNTQsMTAgQEAgcHVi
bGljOgogCiAgICAgdW5zaWduZWQgbnVtRWxlbWVudHMoKSBjb25zdCB7IHJldHVybiBtX251bUVs
ZW1lbnRzOyB9CiAKKyAgICBib29sIGlzQXJyYXlUeXBlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gZmFsc2U7IH0KKworICAgIFR5cGUmIHR5cGUoKSB7IHJldHVybiAqbV9lbGVtZW50VHlwZTsg
fQorCiAgICAgc3RkOjp1bmlxdWVfcHRyPFR5cGU+IGNsb25lKCkgY29uc3Qgb3ZlcnJpZGUKICAg
ICB7CiAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEFycmF5VHlwZT4oTGV4ZXI6OlRv
a2VuKG1fb3JpZ2luKSwgbV9lbGVtZW50VHlwZS0+Y2xvbmUoKSwgbV9udW1FbGVtZW50cyk7CkBA
IC03MSw0ICs3NSw2IEBAIHByaXZhdGU6CiAKIH0KIAorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19X
SExTTF9UWVBFKEFycmF5VHlwZSwgaXNBcnJheVR5cGUoKSkKKwogI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xBU1RBc3NpZ25t
ZW50RXhwcmVzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMQVNUQXNzaWdubWVudEV4cHJlc3Npb24uaAppbmRleCBjNjZjNmRjMzVlYy4uMzc3OTdj
MjcxMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTEFTVEFzc2lnbm1lbnRFeHByZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQVNUQXNzaWdubWVudEV4cHJlc3Npb24uaApAQCAt
NTAsNiArNTAsMTEgQEAgcHVibGljOgogICAgIEFzc2lnbm1lbnRFeHByZXNzaW9uKGNvbnN0IEFz
c2lnbm1lbnRFeHByZXNzaW9uJikgPSBkZWxldGU7CiAgICAgQXNzaWdubWVudEV4cHJlc3Npb24o
QXNzaWdubWVudEV4cHJlc3Npb24mJikgPSBkZWZhdWx0OwogCisgICAgYm9vbCBpc0Fzc2lnbm1l
bnRFeHByZXNzaW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorCisgICAgRXhw
cmVzc2lvbiYgbGVmdCgpIHsgcmV0dXJuICptX2xlZnQ7IH0KKyAgICBFeHByZXNzaW9uJiByaWdo
dCgpIHsgcmV0dXJuICptX3JpZ2h0OyB9CisKIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRy
PEV4cHJlc3Npb24+IG1fbGVmdDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RXhwcmVzc2lvbj4gbV9y
aWdodDsKQEAgLTYxLDQgKzY2LDYgQEAgcHJpdmF0ZToKIAogfQogCitTUEVDSUFMSVpFX1RZUEVf
VFJBSVRTX1dITFNMX0VYUFJFU1NJT04oQXNzaWdubWVudEV4cHJlc3Npb24sIGlzQXNzaWdubWVu
dEV4cHJlc3Npb24oKSkKKwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xBU1RCbG9jay5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQVNUQmxvY2suaAppbmRleCA4YjczZjdmMDRjNC4u
MTFjOTE4YzJhZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML0FTVC9XSExTTEFTVEJsb2NrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvQVNUL1dITFNMQVNUQmxvY2suaApAQCAtMzksNyArMzksNyBAQCBuYW1lc3BhY2Ug
QVNUIHsKIAogY2xhc3MgQmxvY2sgOiBwdWJsaWMgU3RhdGVtZW50IHsKIHB1YmxpYzoKLSAgICBC
bG9jayhMZXhlcjo6VG9rZW4mJiBvcmlnaW4sIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8U3RhdGVt
ZW50Pj4mJiBzdGF0ZW1lbnRzKQorICAgIEJsb2NrKExleGVyOjpUb2tlbiYmIG9yaWdpbiwgU3Rh
dGVtZW50cyYmIHN0YXRlbWVudHMpCiAgICAgICAgIDogU3RhdGVtZW50KFdURk1vdmUob3JpZ2lu
KSkKICAgICAgICAgLCBtX3N0YXRlbWVudHMoV1RGTW92ZShzdGF0ZW1lbnRzKSkKICAgICB7CkBA
IC01MCw4ICs1MCwxMiBAQCBwdWJsaWM6CiAgICAgQmxvY2soY29uc3QgQmxvY2smKSA9IGRlbGV0
ZTsKICAgICBCbG9jayhCbG9jayYmKSA9IGRlZmF1bHQ7CiAKKyAgICBTdGF0ZW1lbnRzJiBzdGF0
ZW1lbnRzKCkgeyByZXR1cm4gbV9zdGF0ZW1lbnRzOyB9CisgICAgCisgICAgYm9vbCBpc0Jsb2Nr
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorCiBwcml2YXRlOgotICAgIFZlY3Rv
cjxzdGQ6OnVuaXF1ZV9wdHI8U3RhdGVtZW50Pj4gbV9zdGF0ZW1lbnRzOworICAgIFN0YXRlbWVu
dHMgbV9zdGF0ZW1lbnRzOwogfTsKIAogfQpAQCAtNjAsNCArNjQsNiBAQCBwcml2YXRlOgogCiB9
CiAKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfU1RBVEVNRU5UKEJsb2NrLCBpc0Jsb2Nr
KCkpCisKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvQVNUL1dITFNMQVNUQm9vbGVhbkxpdGVyYWwuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFTVEJvb2xlYW5MaXRlcmFsLmgKaW5kZXggMGMzYmE3
ODY1MmUuLjJjNDI0YWRhY2UxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9BU1QvV0hMU0xBU1RCb29sZWFuTGl0ZXJhbC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFTVEJvb2xlYW5MaXRlcmFsLmgKQEAg
LTUxLDYgKzUxLDggQEAgcHVibGljOgogCiAgICAgYm9vbCB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJu
IG1fdmFsdWU7IH0KIAorICAgIGJvb2wgaXNCb29sZWFuTGl0ZXJhbCgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIHRydWU7IH0KKwogcHJpdmF0ZToKICAgICBib29sIG1fdmFsdWU7CiB9OwpAQCAt
NjEsNCArNjMsNiBAQCBwcml2YXRlOgogCiB9CiAKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hM
U0xfRVhQUkVTU0lPTihCb29sZWFuTGl0ZXJhbCwgaXNCb29sZWFuTGl0ZXJhbCgpKQorCiAjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9X
SExTTEFTVEJyZWFrLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1Qv
V0hMU0xBU1RCcmVhay5oCmluZGV4IDdjMmIxMGFjNzI3Li5kM2Q0NTlkNjZiMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQVNUQnJlYWsu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xBU1RC
cmVhay5oCkBAIC00Nyw2ICs0Nyw4IEBAIHB1YmxpYzoKIAogICAgIEJyZWFrKGNvbnN0IEJyZWFr
JikgPSBkZWxldGU7CiAgICAgQnJlYWsoQnJlYWsmJikgPSBkZWZhdWx0OworICAgIAorICAgIGJv
b2wgaXNCcmVhaygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIAogcHJpdmF0ZToK
IH07CkBAIC01Nyw0ICs1OSw2IEBAIHByaXZhdGU6CiAKIH0KIAorU1BFQ0lBTElaRV9UWVBFX1RS
QUlUU19XSExTTF9TVEFURU1FTlQoQnJlYWssIGlzQnJlYWsoKSkKKwogI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xBU1RDYWxs
RXhwcmVzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dI
TFNMQVNUQ2FsbEV4cHJlc3Npb24uaAppbmRleCA2OGFmODllYWQ4NS4uYzY4MWViNzBmYTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFT
VENhbGxFeHByZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvQVNUL1dITFNMQVNUQ2FsbEV4cHJlc3Npb24uaApAQCAtNTAsNiArNTAsMTAgQEAgcHVibGlj
OgogICAgIENhbGxFeHByZXNzaW9uKGNvbnN0IENhbGxFeHByZXNzaW9uJikgPSBkZWxldGU7CiAg
ICAgQ2FsbEV4cHJlc3Npb24oQ2FsbEV4cHJlc3Npb24mJikgPSBkZWZhdWx0OwogCisgICAgYm9v
bCBpc0NhbGxFeHByZXNzaW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorCisg
ICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxFeHByZXNzaW9uPj4mIGFyZ3VtZW50cygpIHsgcmV0
dXJuIG1fYXJndW1lbnRzOyB9CisKIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fbmFtZTsKICAgICBW
ZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEV4cHJlc3Npb24+PiBtX2FyZ3VtZW50czsKQEAgLTYxLDQg
KzY1LDYgQEAgcHJpdmF0ZToKIAogfQogCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX0VY
UFJFU1NJT04oQ2FsbEV4cHJlc3Npb24sIGlzQ2FsbEV4cHJlc3Npb24oKSkKKwogI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xB
U1RDb21tYUV4cHJlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L0FTVC9XSExTTEFTVENvbW1hRXhwcmVzc2lvbi5oCmluZGV4IDc3YmYzZGNmNTBiLi41NDEzYzk1
ZjlmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMQVNUQ29tbWFFeHByZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvQVNUL1dITFNMQVNUQ29tbWFFeHByZXNzaW9uLmgKQEAgLTUwLDYgKzUwLDEw
IEBAIHB1YmxpYzoKICAgICBDb21tYUV4cHJlc3Npb24oY29uc3QgQ29tbWFFeHByZXNzaW9uJikg
PSBkZWxldGU7CiAgICAgQ29tbWFFeHByZXNzaW9uKENvbW1hRXhwcmVzc2lvbiYmKSA9IGRlZmF1
bHQ7CiAKKyAgICBib29sIGlzQ29tbWFFeHByZXNzaW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gdHJ1ZTsgfQorCisgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxFeHByZXNzaW9uPj4mIGxp
c3QoKSB7IHJldHVybiBtX2xpc3Q7IH0KKwogcHJpdmF0ZToKICAgICBWZWN0b3I8c3RkOjp1bmlx
dWVfcHRyPEV4cHJlc3Npb24+PiBtX2xpc3Q7CiB9OwpAQCAtNjAsNCArNjQsNiBAQCBwcml2YXRl
OgogCiB9CiAKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfRVhQUkVTU0lPTihDb21tYUV4
cHJlc3Npb24sIGlzQ29tbWFFeHByZXNzaW9uKCkpCisKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQVNUQ29udGludWUuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFTVENvbnRpbnVl
LmgKaW5kZXggMTY4MTAyNGU4MTMuLjA5NzQxZTg0OTFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xBU1RDb250aW51ZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFTVENvbnRpbnVlLmgK
QEAgLTQ3LDYgKzQ3LDggQEAgcHVibGljOgogCiAgICAgQ29udGludWUoY29uc3QgQ29udGludWUm
KSA9IGRlbGV0ZTsKICAgICBDb250aW51ZShDb250aW51ZSYmKSA9IGRlZmF1bHQ7CisgICAgCisg
ICAgYm9vbCBpc0NvbnRpbnVlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCiBw
cml2YXRlOgogfTsKQEAgLTU3LDQgKzU5LDYgQEAgcHJpdmF0ZToKIAogfQogCitTUEVDSUFMSVpF
X1RZUEVfVFJBSVRTX1dITFNMX1NUQVRFTUVOVChDb250aW51ZSwgaXNDb250aW51ZSgpKQorCiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTEFTVERlcmVmZXJlbmNlRXhwcmVzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQVNURGVyZWZlcmVuY2VFeHByZXNzaW9uLmgKaW5kZXgg
MmQyZjE3MTc4MDUuLmNhZTQwNTEwNTRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xBU1REZXJlZmVyZW5jZUV4cHJlc3Npb24uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xBU1REZXJlZmVy
ZW5jZUV4cHJlc3Npb24uaApAQCAtNDksNiArNDksMTAgQEAgcHVibGljOgogICAgIERlcmVmZXJl
bmNlRXhwcmVzc2lvbihjb25zdCBEZXJlZmVyZW5jZUV4cHJlc3Npb24mKSA9IGRlbGV0ZTsKICAg
ICBEZXJlZmVyZW5jZUV4cHJlc3Npb24oRGVyZWZlcmVuY2VFeHByZXNzaW9uJiYpID0gZGVmYXVs
dDsKIAorICAgIGJvb2wgaXNEZXJlZmVyZW5jZUV4cHJlc3Npb24oKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiB0cnVlOyB9CisKKyAgICBFeHByZXNzaW9uJiBwb2ludGVyKCkgeyByZXR1cm4gKm1f
cG9pbnRlcjsgfQorCiBwcml2YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxFeHByZXNzaW9uPiBt
X3BvaW50ZXI7CiB9OwpAQCAtNTksNCArNjMsNiBAQCBwcml2YXRlOgogCiB9CiAKK1NQRUNJQUxJ
WkVfVFlQRV9UUkFJVFNfV0hMU0xfRVhQUkVTU0lPTihEZXJlZmVyZW5jZUV4cHJlc3Npb24sIGlz
RGVyZWZlcmVuY2VFeHByZXNzaW9uKCkpCisKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQVNURG9XaGlsZUxvb3AuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFTVERvV2hpbGVMb29w
LmgKaW5kZXggNmNjNjljMjdmZWEuLjlmODgwYzRlYTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xBU1REb1doaWxlTG9vcC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFTVERvV2hpbGVM
b29wLmgKQEAgLTUwLDYgKzUwLDExIEBAIHB1YmxpYzoKIAogICAgIERvV2hpbGVMb29wKGNvbnN0
IERvV2hpbGVMb29wJikgPSBkZWxldGU7CiAgICAgRG9XaGlsZUxvb3AoRG9XaGlsZUxvb3AmJikg
PSBkZWZhdWx0OworICAgIAorICAgIGJvb2wgaXNEb1doaWxlTG9vcCgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIHRydWU7IH0KKworICAgIFN0YXRlbWVudCYgYm9keSgpIHsgcmV0dXJuICptX2Jv
ZHk7IH0KKyAgICBFeHByZXNzaW9uJiBjb25kaXRpb25hbCgpIHsgcmV0dXJuICptX2NvbmRpdGlv
bmFsOyB9CiAKIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPFN0YXRlbWVudD4gbV9ib2R5
OwpAQCAtNjIsNCArNjcsNiBAQCBwcml2YXRlOgogCiB9CiAKK1NQRUNJQUxJWkVfVFlQRV9UUkFJ
VFNfV0hMU0xfU1RBVEVNRU5UKERvV2hpbGVMb29wLCBpc0RvV2hpbGVMb29wKCkpCisKICNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dI
TFNMQVNURWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQVNURWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVu
dC5oCmluZGV4IGZkOWFhNzMwODA0Li4wODMyMWI2ODI3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQVNURWZmZWN0ZnVsRXhwcmVzc2lv
blN0YXRlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTEFTVEVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQuaApAQCAtNTAsNiArNTAsMTAg
QEAgcHVibGljOgogICAgIEVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQoY29uc3QgRWZmZWN0
ZnVsRXhwcmVzc2lvblN0YXRlbWVudCYpID0gZGVsZXRlOwogICAgIEVmZmVjdGZ1bEV4cHJlc3Np
b25TdGF0ZW1lbnQoRWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVudCYmKSA9IGRlZmF1bHQ7CiAK
KyAgICBib29sIGlzRWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVudCgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIHRydWU7IH0KKworICAgIEV4cHJlc3Npb24mIGVmZmVjdGZ1bEV4cHJlc3Npb24o
KSB7IHJldHVybiAqbV9lZmZlY3RmdWxFeHByZXNzaW9uOyB9CisKIHByaXZhdGU6CiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPEV4cHJlc3Npb24+IG1fZWZmZWN0ZnVsRXhwcmVzc2lvbjsKIH07CkBAIC02
MCw0ICs2NCw2IEBAIHByaXZhdGU6CiAKIH0KIAorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExT
TF9TVEFURU1FTlQoRWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVudCwgaXNFZmZlY3RmdWxFeHBy
ZXNzaW9uU3RhdGVtZW50KCkpCisKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQVNURW51bWVyYXRpb25EZWZpbml0aW9uLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xBU1RFbnVtZXJh
dGlvbkRlZmluaXRpb24uaAppbmRleCBkNjA3ZjY2MjA3Ni4uMGIwODhhMzQyOGEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFTVEVudW1l
cmF0aW9uRGVmaW5pdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML0FTVC9XSExTTEFTVEVudW1lcmF0aW9uRGVmaW5pdGlvbi5oCkBAIC0zOSw5ICszOSw5IEBA
IG5hbWVzcGFjZSBXSExTTCB7CiAKIG5hbWVzcGFjZSBBU1QgewogCi1jbGFzcyBFbnVtZXJhdGlv
bkRlZmluaXRpb24gOiBwdWJsaWMgVHlwZSB7CitjbGFzcyBFbnVtZXJhdGlvbkRlZmluaXRpb24g
OiBwdWJsaWMgTm9kZSB7CiBwdWJsaWM6Ci0gICAgRW51bWVyYXRpb25EZWZpbml0aW9uKExleGVy
OjpUb2tlbiYmIG9yaWdpbiwgU3RyaW5nJiYgbmFtZSwgc3RkOjp1bmlxdWVfcHRyPFR5cGU+JiYg
dHlwZSwgVmVjdG9yPEVudW1lcmF0aW9uTWVtYmVyPiBtZW1iZXJzKQorICAgIEVudW1lcmF0aW9u
RGVmaW5pdGlvbihMZXhlcjo6VG9rZW4mJiBvcmlnaW4sIFN0cmluZyYmIG5hbWUsIHN0ZDo6dW5p
cXVlX3B0cjxUeXBlPiYmIHR5cGUsIEVudW1lcmF0aW9uTWVtYmVycyYmIG1lbWJlcnMpCiAgICAg
ICAgIDogbV9vcmlnaW4oV1RGTW92ZShvcmlnaW4pKQogICAgICAgICAsIG1fbmFtZShXVEZNb3Zl
KG5hbWUpKQogICAgICAgICAsIG1fdHlwZShXVEZNb3ZlKHR5cGUpKQpAQCAtNTQsMTcgKzU0LDE0
IEBAIHB1YmxpYzoKICAgICBFbnVtZXJhdGlvbkRlZmluaXRpb24oY29uc3QgRW51bWVyYXRpb25E
ZWZpbml0aW9uJikgPSBkZWxldGU7CiAgICAgRW51bWVyYXRpb25EZWZpbml0aW9uKEVudW1lcmF0
aW9uRGVmaW5pdGlvbiYmKSA9IGRlZmF1bHQ7CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8VHlwZT4g
Y2xvbmUoKSBjb25zdCBvdmVycmlkZQotICAgIHsKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KKyAgICBUeXBlJiB0eXBlKCkgeyBy
ZXR1cm4gKm1fdHlwZTsgfQorICAgIEVudW1lcmF0aW9uTWVtYmVycyYgZW51bWVyYXRpb25NZW1i
ZXJzKCkgeyByZXR1cm4gbV9tZW1iZXJzOyB9CiAKIHByaXZhdGU6CiAgICAgTGV4ZXI6OlRva2Vu
IG1fb3JpZ2luOwogICAgIFN0cmluZyBtX25hbWU7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFR5cGU+
IG1fdHlwZTsKLSAgICBWZWN0b3I8RW51bWVyYXRpb25NZW1iZXI+IG1fbWVtYmVyczsKKyAgICBF
bnVtZXJhdGlvbk1lbWJlcnMgbV9tZW1iZXJzOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQVNURW51bWVyYXRpb25NZW1i
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFTVEVu
dW1lcmF0aW9uTWVtYmVyLmgKaW5kZXggNWJhYmY0NmY4OTYuLjA4MjYwZmFiNzRjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xBU1RFbnVt
ZXJhdGlvbk1lbWJlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L0FTVC9XSExTTEFTVEVudW1lcmF0aW9uTWVtYmVyLmgKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNs
dWRlICJXSExTTEFTVE5vZGUuaCIKICNpbmNsdWRlICJXSExTTExleGVyLmgiCiAjaW5jbHVkZSA8
d3RmL09wdGlvbmFsLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01MywxMiArNTQsMTYg
QEAgcHVibGljOgogICAgIEVudW1lcmF0aW9uTWVtYmVyKGNvbnN0IEVudW1lcmF0aW9uTWVtYmVy
JikgPSBkZWxldGU7CiAgICAgRW51bWVyYXRpb25NZW1iZXIoRW51bWVyYXRpb25NZW1iZXImJikg
PSBkZWZhdWx0OwogCisgICAgc3RkOjpvcHRpb25hbDxDb25zdGFudEV4cHJlc3Npb24+JiB2YWx1
ZSgpIHsgcmV0dXJuIG1fdmFsdWU7IH0KKwogcHJpdmF0ZToKICAgICBMZXhlcjo6VG9rZW4gbV9v
cmlnaW47CiAgICAgU3RyaW5nIG1fbmFtZTsKICAgICBPcHRpb25hbDxDb25zdGFudEV4cHJlc3Np
b24+IG1fdmFsdWU7CiB9OwogCit0eXBlZGVmIFZlY3RvcjxFbnVtZXJhdGlvbk1lbWJlcj4gRW51
bWVyYXRpb25NZW1iZXJzOworCiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFTVEV4cHJlc3Npb24uaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFTVEV4cHJlc3Npb24uaAppbmRleCA4
MjY4MDMyMWEzMS4uMGUxZDZkZDFjNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFTVEV4cHJlc3Npb24uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xBU1RFeHByZXNzaW9uLmgKQEAgLTUw
LDYgKzUwLDI0IEBAIHB1YmxpYzoKIAogICAgIExleGVyOjpUb2tlbiBvcmlnaW4oKSBjb25zdCB7
IHJldHVybiBtX29yaWdpbjsgfQogCisgICAgdmlydHVhbCBib29sIGlzQXNzaWdubWVudEV4cHJl
c3Npb24oKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc0Jvb2xl
YW5MaXRlcmFsKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXND
YWxsRXhwcmVzc2lvbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29s
IGlzQ29tbWFFeHByZXNzaW9uKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFs
IGJvb2wgaXNEZXJlZmVyZW5jZUV4cHJlc3Npb24oKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQor
ICAgIHZpcnR1YWwgYm9vbCBpc0Zsb2F0TGl0ZXJhbCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
CisgICAgdmlydHVhbCBib29sIGlzSW50ZWdlckxpdGVyYWwoKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc0xvZ2ljYWxFeHByZXNzaW9uKCkgY29uc3QgeyByZXR1
cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNMb2dpY2FsTm90RXhwcmVzc2lvbigpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGlzTWFrZUFycmF5UmVmZXJl
bmNlRXhwcmVzc2lvbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29s
IGlzTWFrZVBvaW50ZXJFeHByZXNzaW9uKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2
aXJ0dWFsIGJvb2wgaXNOdWxsTGl0ZXJhbCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAg
dmlydHVhbCBib29sIGlzUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKCkgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uKCkg
Y29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNUZXJuYXJ5RXhwcmVz
c2lvbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGlzVW5zaWdu
ZWRJbnRlZ2VyTGl0ZXJhbCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBi
b29sIGlzVmFyaWFibGVSZWZlcmVuY2UoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorCiBwcml2
YXRlOgogICAgIExleGVyOjpUb2tlbiBtX29yaWdpbjsKIH07CkBAIC02MCw0ICs3OCw5IEBAIHBy
aXZhdGU6CiAKIH0KIAorI2RlZmluZSBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX0VYUFJF
U1NJT04oVG9WYWx1ZVR5cGVOYW1lLCBwcmVkaWNhdGUpIFwKK1NQRUNJQUxJWkVfVFlQRV9UUkFJ
VFNfQkVHSU4oV2ViQ29yZTo6V0hMU0w6OkFTVDo6VG9WYWx1ZVR5cGVOYW1lKSBcCisgICAgc3Rh
dGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6OldITFNMOjpBU1Q6OkV4cHJlc3Npb24mIGV4
cHJlc3Npb24pIHsgcmV0dXJuIGV4cHJlc3Npb24ucHJlZGljYXRlOyB9IFwKK1NQRUNJQUxJWkVf
VFlQRV9UUkFJVFNfRU5EKCkKKwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xBU1RGYWxsdGhyb3VnaC5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQVNURmFsbHRocm91Z2guaAppbmRl
eCBmN2UzYmI1MDE4Ni4uNTczYjU2OTIzNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFTVEZhbGx0aHJvdWdoLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQVNURmFsbHRocm91Z2guaApA
QCAtNDcsNiArNDcsOCBAQCBwdWJsaWM6CiAKICAgICBGYWxsdGhyb3VnaChjb25zdCBGYWxsdGhy
b3VnaCYpID0gZGVsZXRlOwogICAgIEZhbGx0aHJvdWdoKEZhbGx0aHJvdWdoJiYpID0gZGVmYXVs
dDsKKyAgICAKKyAgICBib29sIGlzRmFsbHRocm91Z2goKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biB0cnVlOyB9CiAKIHByaXZhdGU6CiB9OwpAQCAtNTcsNCArNTksNiBAQCBwcml2YXRlOgogCiB9
CiAKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfU1RBVEVNRU5UKEZhbGx0aHJvdWdoLCBp
c0ZhbGx0aHJvdWdoKCkpCisKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQVNURmxvYXRMaXRlcmFsLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xBU1RGbG9hdExpdGVyYWwuaAppbmRl
eCBlNDUwYmQyNzI4OS4uOWU4Mzk0MzVjMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFTVEZsb2F0TGl0ZXJhbC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFTVEZsb2F0TGl0ZXJhbC5o
CkBAIC01MSw2ICs1MSw4IEBAIHB1YmxpYzoKIAogICAgIGZsb2F0IHZhbHVlKCkgY29uc3QgeyBy
ZXR1cm4gbV92YWx1ZTsgfQogCisgICAgYm9vbCBpc0Zsb2F0TGl0ZXJhbCgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIHRydWU7IH0KKwogcHJpdmF0ZToKICAgICBmbG9hdCBtX3ZhbHVlOwogfTsK
QEAgLTYxLDQgKzYzLDYgQEAgcHJpdmF0ZToKIAogfQogCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRT
X1dITFNMX0VYUFJFU1NJT04oRmxvYXRMaXRlcmFsLCBpc0Zsb2F0TGl0ZXJhbCgpKQorCiAjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9X
SExTTEFTVEZvckxvb3AuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTEFTVEZvckxvb3AuaAppbmRleCAyMjYwNjM4NDc2NC4uMzZmMmMzMjliYzMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFTVEZv
ckxvb3AuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xBU1RGb3JMb29wLmgKQEAgLTU3LDYgKzU3LDEzIEBAIHB1YmxpYzoKIAogICAgIEZvckxvb3Ao
Y29uc3QgRm9yTG9vcCYpID0gZGVsZXRlOwogICAgIEZvckxvb3AoRm9yTG9vcCYmKSA9IGRlZmF1
bHQ7CisgICAgCisgICAgYm9vbCBpc0Zvckxvb3AoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0
cnVlOyB9CisKKyAgICBWYXJpYW50PFZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50LCBzdGQ6
OnVuaXF1ZV9wdHI8RXhwcmVzc2lvbj4+JiBpbml0aWFsaXphdGlvbigpIHsgcmV0dXJuIG1faW5p
dGlhbGl6YXRpb247IH0KKyAgICBFeHByZXNzaW9uKiBjb25kaXRpb24oKSB7IHJldHVybiBtX2Nv
bmRpdGlvbi5nZXQoKTsgfQorICAgIEV4cHJlc3Npb24qIGluY3JlbWVudCgpIHsgcmV0dXJuIG1f
aW5jcmVtZW50LmdldCgpOyB9CisgICAgU3RhdGVtZW50JiBib2R5KCkgeyByZXR1cm4gKm1fYm9k
eTsgfQogCiBwcml2YXRlOgogICAgIFZhcmlhbnQ8VmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1l
bnQsIHN0ZDo6dW5pcXVlX3B0cjxFeHByZXNzaW9uPj4gbV9pbml0aWFsaXphdGlvbjsKQEAgLTcx
LDQgKzc4LDYgQEAgcHJpdmF0ZToKIAogfQogCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNM
X1NUQVRFTUVOVChGb3JMb29wLCBpc0Zvckxvb3AoKSkKKwogI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xBU1RGdW5jdGlvbkRl
Y2xhcmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xBU1RGdW5jdGlvbkRlY2xhcmF0aW9uLmgKaW5kZXggZWZjN2E5ZTA5YjIuLjNiNDNjOTJiNjM4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xBU1RGdW5jdGlvbkRlY2xhcmF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvQVNUL1dITFNMQVNURnVuY3Rpb25EZWNsYXJhdGlvbi5oCkBAIC02NSw2ICs2
NSwxMSBAQCBwdWJsaWM6CiAgICAgRnVuY3Rpb25EZWNsYXJhdGlvbihjb25zdCBGdW5jdGlvbkRl
Y2xhcmF0aW9uJikgPSBkZWxldGU7CiAgICAgRnVuY3Rpb25EZWNsYXJhdGlvbihGdW5jdGlvbkRl
Y2xhcmF0aW9uJiYpID0gZGVmYXVsdDsKIAorICAgIEF0dHJpYnV0ZUJsb2NrJiBhdHRyaWJ1dGVC
bG9jaygpIHsgcmV0dXJuIG1fYXR0cmlidXRlQmxvY2s7IH0KKyAgICBBU1Q6OlR5cGUmIHR5cGUo
KSB7IHJldHVybiAqbV90eXBlOyB9CisgICAgUGFyYW1ldGVycyYgcGFyYW1ldGVycygpIHsgcmV0
dXJuIG1fcGFyYW1ldGVyczsgfQorICAgIHN0ZDo6b3B0aW9uYWw8QVNUOjpTZW1hbnRpYz4mIHNl
bWFudGljKCkgeyByZXR1cm4gbV9zZW1hbnRpYzsgfQorCiAgICAgTGV4ZXI6OlRva2VuJiYgdGFr
ZU9yaWdpbigpIHsgcmV0dXJuIFdURk1vdmUobV9vcmlnaW4pOyB9CiAgICAgQXR0cmlidXRlQmxv
Y2smJiB0YWtlQXR0cmlidXRlQmxvY2soKSB7IHJldHVybiBXVEZNb3ZlKG1fYXR0cmlidXRlQmxv
Y2spOyB9CiAgICAgT3B0aW9uYWw8RW50cnlQb2ludFR5cGU+JiYgdGFrZUVudHJ5UG9pbnRUeXBl
KCkgeyByZXR1cm4gV1RGTW92ZShtX2VudHJ5UG9pbnRUeXBlKTsgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQVNURnVuY3Rpb25EZWZp
bml0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xB
U1RGdW5jdGlvbkRlZmluaXRpb24uaAppbmRleCA4ZDcyMDlhNmM3Zi4uNWUwN2RmNmNjYjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFT
VEZ1bmN0aW9uRGVmaW5pdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML0FTVC9XSExTTEFTVEZ1bmN0aW9uRGVmaW5pdGlvbi5oCkBAIC01MCw2ICs1MCw3IEBA
IHB1YmxpYzoKICAgICBGdW5jdGlvbkRlZmluaXRpb24oY29uc3QgRnVuY3Rpb25EZWZpbml0aW9u
JikgPSBkZWxldGU7CiAgICAgRnVuY3Rpb25EZWZpbml0aW9uKEZ1bmN0aW9uRGVmaW5pdGlvbiYm
KSA9IGRlZmF1bHQ7CiAKKyAgICBCbG9jayYgYmxvY2soKSB7IHJldHVybiBtX2Jsb2NrOyB9CiAg
ICAgYm9vbCByZXN0cmljdGVkKCkgY29uc3QgeyByZXR1cm4gbV9yZXN0cmljdGVkOyB9CiAKIHBy
aXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9B
U1QvV0hMU0xBU1RJZlN0YXRlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvQVNUL1dITFNMQVNUSWZTdGF0ZW1lbnQuaAppbmRleCAxODEzMWU0NDNiMy4uZjM4NDhj
OTVkNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTEFTVElmU3RhdGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvQVNUL1dITFNMQVNUSWZTdGF0ZW1lbnQuaApAQCAtNTEsMTEgKzUxLDE3IEBAIHB1
YmxpYzoKIAogICAgIElmU3RhdGVtZW50KGNvbnN0IElmU3RhdGVtZW50JikgPSBkZWxldGU7CiAg
ICAgSWZTdGF0ZW1lbnQoSWZTdGF0ZW1lbnQmJikgPSBkZWZhdWx0OworICAgIAorICAgIGJvb2wg
aXNJZlN0YXRlbWVudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKworICAgIEV4
cHJlc3Npb24mIGNvbmRpdGlvbmFsKCkgeyByZXR1cm4gKm1fY29uZGl0aW9uYWw7IH0KKyAgICBT
dGF0ZW1lbnQmIGJvZHkoKSB7IHJldHVybiAqbV9ib2R5OyB9CisgICAgU3RhdGVtZW50KiBlbHNl
Qm9keSgpIHsgcmV0dXJuIG1fZWxzZUJvZHkuZ2V0KCk7IH0KIAogcHJpdmF0ZToKICAgICBzdGQ6
OnVuaXF1ZV9wdHI8RXhwcmVzc2lvbj4gbV9jb25kaXRpb25hbDsKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8U3RhdGVtZW50PiBtX2JvZHk7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFN0YXRlbWVudD4gbV9l
bHNlQm9keTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U3RhdGVtZW50PiBtX2Vsc2VCb2R5OyAvLyBu
dWxsYWJsZQogfTsKIAogfQpAQCAtNjQsNCArNzAsNiBAQCBwcml2YXRlOgogCiB9CiAKK1NQRUNJ
QUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfU1RBVEVNRU5UKElmU3RhdGVtZW50LCBpc0lmU3RhdGVt
ZW50KCkpCisKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvQVNUL1dITFNMQVNUSW50ZWdlckxpdGVyYWwuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFTVEludGVnZXJMaXRlcmFsLmgKaW5kZXggZDZi
NTFkMThmY2UuLmMwZWViZjQ1MmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xBU1RJbnRlZ2VyTGl0ZXJhbC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFTVEludGVnZXJMaXRlcmFsLmgK
QEAgLTUxLDYgKzUxLDggQEAgcHVibGljOgogCiAgICAgaW50IHZhbHVlKCkgY29uc3QgeyByZXR1
cm4gbV92YWx1ZTsgfQogCisgICAgYm9vbCBpc0ludGVnZXJMaXRlcmFsKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gdHJ1ZTsgfQorCiBwcml2YXRlOgogICAgIGludCBtX3ZhbHVlOwogfTsKQEAg
LTYxLDQgKzYzLDYgQEAgcHJpdmF0ZToKIAogfQogCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dI
TFNMX0VYUFJFU1NJT04oSW50ZWdlckxpdGVyYWwsIGlzSW50ZWdlckxpdGVyYWwoKSkKKwogI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1Qv
V0hMU0xBU1RMb2dpY2FsRXhwcmVzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvQVNUL1dITFNMQVNUTG9naWNhbEV4cHJlc3Npb24uaAppbmRleCA3N2JlYjFlM2I5
MS4uYjY2NTg0NGMzNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML0FTVC9XSExTTEFTVExvZ2ljYWxFeHByZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQVNUTG9naWNhbEV4cHJlc3Npb24uaApA
QCAtNTgsNiArNTgsMTEgQEAgcHVibGljOgogCiAgICAgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1
cm4gbV90eXBlOyB9CiAKKyAgICBib29sIGlzTG9naWNhbEV4cHJlc3Npb24oKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiB0cnVlOyB9CisKKyAgICBFeHByZXNzaW9uJiBsZWZ0KCkgeyByZXR1cm4g
Km1fbGVmdDsgfQorICAgIEV4cHJlc3Npb24mIHJpZ2h0KCkgeyByZXR1cm4gKm1fcmlnaHQ7IH0K
KwogcHJpdmF0ZToKICAgICBUeXBlIG1fdHlwZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RXhwcmVz
c2lvbj4gbV9sZWZ0OwpAQCAtNzAsNCArNzUsNiBAQCBwcml2YXRlOgogCiB9CiAKK1NQRUNJQUxJ
WkVfVFlQRV9UUkFJVFNfV0hMU0xfRVhQUkVTU0lPTihMb2dpY2FsRXhwcmVzc2lvbiwgaXNMb2dp
Y2FsRXhwcmVzc2lvbigpKQorCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFTVExvZ2ljYWxOb3RFeHByZXNzaW9uLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xBU1RMb2dpY2FsTm90
RXhwcmVzc2lvbi5oCmluZGV4IDhjOTNkODg1NzYxLi4wMDc2NzZhZmE2ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQVNUTG9naWNhbE5v
dEV4cHJlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9B
U1QvV0hMU0xBU1RMb2dpY2FsTm90RXhwcmVzc2lvbi5oCkBAIC00OSw2ICs0OSwxMCBAQCBwdWJs
aWM6CiAgICAgTG9naWNhbE5vdEV4cHJlc3Npb24oY29uc3QgTG9naWNhbE5vdEV4cHJlc3Npb24m
KSA9IGRlbGV0ZTsKICAgICBMb2dpY2FsTm90RXhwcmVzc2lvbihMb2dpY2FsTm90RXhwcmVzc2lv
biYmKSA9IGRlZmF1bHQ7CiAKKyAgICBib29sIGlzTG9naWNhbE5vdEV4cHJlc3Npb24oKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisKKyAgICBFeHByZXNzaW9uJiBvcGVyYW5kKCkg
eyByZXR1cm4gKm1fb3BlcmFuZDsgfQorCiBwcml2YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxF
eHByZXNzaW9uPiBtX29wZXJhbmQ7CiB9OwpAQCAtNTksNCArNjMsNiBAQCBwcml2YXRlOgogCiB9
CiAKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfRVhQUkVTU0lPTihMb2dpY2FsTm90RXhw
cmVzc2lvbiwgaXNMb2dpY2FsTm90RXhwcmVzc2lvbigpKQorCiAjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFTVE1ha2VBcnJh
eVJlZmVyZW5jZUV4cHJlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML0FTVC9XSExTTEFTVE1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24uaAppbmRleCAxMGY4
MjA2ZTg4YS4uZTMwODMxNzVmYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTEFTVE1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xBU1RNYWtl
QXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uLmgKQEAgLTQ5LDYgKzQ5LDEwIEBAIHB1YmxpYzoKICAg
ICBNYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uKGNvbnN0IE1ha2VBcnJheVJlZmVyZW5jZUV4
cHJlc3Npb24mKSA9IGRlbGV0ZTsKICAgICBNYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uKE1h
a2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24mJikgPSBkZWZhdWx0OwogCisgICAgYm9vbCBpc01h
a2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVl
OyB9CisKKyAgICBFeHByZXNzaW9uJiBsVmFsdWUoKSB7IHJldHVybiAqbV9sVmFsdWU7IH0KKwog
cHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RXhwcmVzc2lvbj4gbV9sVmFsdWU7CiB9OwpA
QCAtNTksNCArNjMsNiBAQCBwcml2YXRlOgogCiB9CiAKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNf
V0hMU0xfRVhQUkVTU0lPTihNYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uLCBpc01ha2VBcnJh
eVJlZmVyZW5jZUV4cHJlc3Npb24oKSkKKwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xBU1RNYWtlUG9pbnRlckV4cHJlc3Np
b24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFTVE1h
a2VQb2ludGVyRXhwcmVzc2lvbi5oCmluZGV4IDY5ZmE5MjQwZTEwLi42MGViYzU5NTk1YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQVNU
TWFrZVBvaW50ZXJFeHByZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvQVNUL1dITFNMQVNUTWFrZVBvaW50ZXJFeHByZXNzaW9uLmgKQEAgLTQ5LDYgKzQ5
LDEwIEBAIHB1YmxpYzoKICAgICBNYWtlUG9pbnRlckV4cHJlc3Npb24oY29uc3QgTWFrZVBvaW50
ZXJFeHByZXNzaW9uJikgPSBkZWxldGU7CiAgICAgTWFrZVBvaW50ZXJFeHByZXNzaW9uKE1ha2VQ
b2ludGVyRXhwcmVzc2lvbiYmKSA9IGRlZmF1bHQ7CiAKKyAgICBib29sIGlzTWFrZVBvaW50ZXJF
eHByZXNzaW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorCisgICAgRXhwcmVz
c2lvbiYgbFZhbHVlKCkgeyByZXR1cm4gKm1fbFZhbHVlOyB9CisKIHByaXZhdGU6CiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPEV4cHJlc3Npb24+IG1fbFZhbHVlOwogfTsKQEAgLTU5LDQgKzYzLDYgQEAg
cHJpdmF0ZToKIAogfQogCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX0VYUFJFU1NJT04o
TWFrZVBvaW50ZXJFeHByZXNzaW9uLCBpc01ha2VQb2ludGVyRXhwcmVzc2lvbigpKQorCiAjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9X
SExTTEFTVE5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvQVNUL1dITFNMQVNUTmF0aXZlVHlwZURlY2xhcmF0aW9uLmgKaW5kZXggODNm
OTU0MzkzYzUuLjgyOGYwNDM3YWVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xBU1ROYXRpdmVUeXBlRGVjbGFyYXRpb24uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xBU1ROYXRpdmVUeXBl
RGVjbGFyYXRpb24uaApAQCAtNTIsNiArNTIsOCBAQCBwdWJsaWM6CiAgICAgTmF0aXZlVHlwZURl
Y2xhcmF0aW9uKGNvbnN0IE5hdGl2ZVR5cGVEZWNsYXJhdGlvbiYpID0gZGVsZXRlOwogICAgIE5h
dGl2ZVR5cGVEZWNsYXJhdGlvbihOYXRpdmVUeXBlRGVjbGFyYXRpb24mJikgPSBkZWZhdWx0Owog
CisgICAgVHlwZUFyZ3VtZW50cyYgdHlwZUFyZ3VtZW50cygpIHsgcmV0dXJuIG1fdHlwZUFyZ3Vt
ZW50czsgfQorCiAgICAgc3RkOjp1bmlxdWVfcHRyPFR5cGU+IGNsb25lKCkgY29uc3Qgb3ZlcnJp
ZGUKICAgICB7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQVNUTnVsbExpdGVyYWwu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFTVE51bGxM
aXRlcmFsLmgKaW5kZXggNWJhN2Y2ODdlODMuLjRiZGY0MDExZDg3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xBU1ROdWxsTGl0ZXJhbC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFTVE51
bGxMaXRlcmFsLmgKQEAgLTQ4LDYgKzQ4LDggQEAgcHVibGljOgogICAgIGV4cGxpY2l0IE51bGxM
aXRlcmFsKGNvbnN0IE51bGxMaXRlcmFsJikgPSBkZWZhdWx0OwogICAgIE51bGxMaXRlcmFsKE51
bGxMaXRlcmFsJiYpID0gZGVmYXVsdDsKIAorICAgIGJvb2wgaXNOdWxsTGl0ZXJhbCgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKwogcHJpdmF0ZToKIH07CiAKQEAgLTU3LDQgKzU5
LDYgQEAgcHJpdmF0ZToKIAogfQogCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX0VYUFJF
U1NJT04oTnVsbExpdGVyYWwsIGlzTnVsbExpdGVyYWwoKSkKKwogI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xBU1RQYXJhbWV0
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFTVFBh
cmFtZXRlci5oCmluZGV4IGEyYjgwMWZlYWQ5Li43MjRjYTc0YTY5YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQVNUUGFyYW1ldGVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQVNUUGFy
YW1ldGVyLmgKQEAgLTU3LDYgKzU3LDkgQEAgcHVibGljOgogICAgIFBhcmFtZXRlcihjb25zdCBQ
YXJhbWV0ZXImKSA9IGRlbGV0ZTsKICAgICBQYXJhbWV0ZXIoUGFyYW1ldGVyJiYpID0gZGVmYXVs
dDsKIAorICAgIFR5cGUmIHR5cGUoKSB7IHJldHVybiAqbV90eXBlOyB9CisgICAgc3RkOjpvcHRp
b25hbDxBU1Q6OlNlbWFudGljPiYgc2VtYW50aWMoKSB7IHJldHVybiBtX3NlbWFudGljOyB9CisK
IHByaXZhdGU6CiAgICAgTGV4ZXI6OlRva2VuIG1fb3JpZ2luOwogICAgIFF1YWxpZmllcnMgbV9x
dWFsaWZpZXJzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvQVNUL1dITFNMQVNUUG9pbnRlclR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML0FTVC9XSExTTEFTVFBvaW50ZXJUeXBlLmgKaW5kZXggNGQ0YmY1Y2FjZjUuLjBl
NTY0OTMwYzViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xBU1RQb2ludGVyVHlwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTEFTVFBvaW50ZXJUeXBlLmgKQEAgLTQ5LDkgKzQ5LDExIEBA
IHB1YmxpYzoKICAgICBQb2ludGVyVHlwZShjb25zdCBQb2ludGVyVHlwZSYpID0gZGVsZXRlOwog
ICAgIFBvaW50ZXJUeXBlKFBvaW50ZXJUeXBlJiYpID0gZGVmYXVsdDsKIAorICAgIGJvb2wgaXNQ
b2ludGVyVHlwZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisKICAgICBzdGQ6
OnVuaXF1ZV9wdHI8VHlwZT4gY2xvbmUoKSBjb25zdCBvdmVycmlkZQogICAgIHsKLSAgICAgICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UG9pbnRlclR5cGU+KExleGVyOjpUb2tlbihvcmlnaW4o
KSksIFN0cmluZyhhZGRyZXNzU3BhY2UoKSksIGVsZW1lbnRUeXBlKCktPmNsb25lKCkpOworICAg
ICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQb2ludGVyVHlwZT4oTGV4ZXI6OlRva2VuKG9y
aWdpbigpKSwgU3RyaW5nKGFkZHJlc3NTcGFjZSgpKSwgZWxlbWVudFR5cGUoKS5jbG9uZSgpKTsK
ICAgICB9CiAKIHByaXZhdGU6CkBAIC02Myw0ICs2NSw2IEBAIHByaXZhdGU6CiAKIH0KIAorU1BF
Q0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9UWVBFKFBvaW50ZXJUeXBlLCBpc1BvaW50ZXJUeXBl
KCkpCisKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvQVNUL1dITFNMQVNUUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xBU1RQcm9wZXJ0eUFjY2Vzc0V4cHJl
c3Npb24uaAppbmRleCBmMTJiM2IyOGEyMS4uOGVmN2U4NGYxODYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFTVFByb3BlcnR5QWNjZXNz
RXhwcmVzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTEFTVFByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbi5oCkBAIC00OSw2ICs0OSwxMCBAQCBw
dWJsaWM6CiAgICAgUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKGNvbnN0IFByb3BlcnR5QWNjZXNz
RXhwcmVzc2lvbiYpID0gZGVsZXRlOwogICAgIFByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbihQcm9w
ZXJ0eUFjY2Vzc0V4cHJlc3Npb24mJikgPSBkZWZhdWx0OwogCisgICAgYm9vbCBpc1Byb3BlcnR5
QWNjZXNzRXhwcmVzc2lvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKworICAg
IEV4cHJlc3Npb24mIGJhc2UoKSB7IHJldHVybiAqbV9iYXNlOyB9CisKIHByaXZhdGU6CiAgICAg
c3RkOjp1bmlxdWVfcHRyPEV4cHJlc3Npb24+IG1fYmFzZTsKIH07CkBAIC01OSw0ICs2Myw2IEBA
IHByaXZhdGU6CiAKIH0KIAorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9FWFBSRVNTSU9O
KFByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbiwgaXNQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24oKSkK
KwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xBU1RSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xBU1RSZWFkTW9kaWZ5V3JpdGVFeHByZXNz
aW9uLmgKaW5kZXggM2YyN2U2YTNjMmMuLjI5ODdjOGE3ZGNhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xBU1RSZWFkTW9kaWZ5V3JpdGVF
eHByZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMQVNUUmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbi5oCkBAIC04NCw2ICs4NCwxNCBAQCBw
dWJsaWM6CiAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFZhcmlhYmxlUmVmZXJlbmNl
PihWYXJpYWJsZVJlZmVyZW5jZTo6d3JhcChtX25ld1ZhbHVlKSk7CiAgICAgfQogCisgICAgYm9v
bCBpc1JlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0
cnVlOyB9CisKKyAgICBFeHByZXNzaW9uJiBsVmFsdWUoKSB7IHJldHVybiAqbV9sVmFsdWU7IH0K
KyAgICBBbm9ueW1vdXNWYXJpYWJsZURlY2xhcmF0aW9uJiBvbGRWYWx1ZSgpIHsgcmV0dXJuIG1f
b2xkVmFsdWU7IH0KKyAgICBBbm9ueW1vdXNWYXJpYWJsZURlY2xhcmF0aW9uJiBuZXdWYWx1ZSgp
IHsgcmV0dXJuIG1fbmV3VmFsdWU7IH0KKyAgICBFeHByZXNzaW9uJiBuZXdWYWx1ZUV4cHJlc3Np
b24oKSB7IHJldHVybiAqbV9uZXdWYWx1ZUV4cHJlc3Npb247IH0KKyAgICBFeHByZXNzaW9uJiBy
ZXN1bHRFeHByZXNzaW9uKCkgeyByZXR1cm4gKm1fcmVzdWx0RXhwcmVzc2lvbjsgfQorCiBwcml2
YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxFeHByZXNzaW9uPiBtX2xWYWx1ZTsKICAgICBBbm9u
eW1vdXNWYXJpYWJsZURlY2xhcmF0aW9uIG1fb2xkVmFsdWU7CkBAIC05OCw0ICsxMDYsNiBAQCBw
cml2YXRlOgogCiB9CiAKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfRVhQUkVTU0lPTihS
ZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uLCBpc1JlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24oKSkK
KwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xBU1RSZWZlcmVuY2VUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9BU1QvV0hMU0xBU1RSZWZlcmVuY2VUeXBlLmgKaW5kZXggNzAxYmJiMWJhNTcu
LjljNmZhZTkzNjU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9BU1QvV0hMU0xBU1RSZWZlcmVuY2VUeXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQVNUUmVmZXJlbmNlVHlwZS5oCkBAIC01MCwxMSAr
NTAsMTMgQEAgcHVibGljOgogCiAgICAgUmVmZXJlbmNlVHlwZShjb25zdCBSZWZlcmVuY2VUeXBl
JikgPSBkZWxldGU7CiAgICAgUmVmZXJlbmNlVHlwZShSZWZlcmVuY2VUeXBlJiYpID0gZGVmYXVs
dDsKKyAgICAKKyAgICBUeXBlJiBlbGVtZW50VHlwZSgpIHsgcmV0dXJuICptX2VsZW1lbnRUeXBl
OyB9CiAKIHByb3RlY3RlZDoKICAgICBjb25zdCBMZXhlcjo6VG9rZW4mIG9yaWdpbigpIGNvbnN0
IHsgcmV0dXJuIG1fb3JpZ2luOyB9CiAgICAgY29uc3QgU3RyaW5nJiBhZGRyZXNzU3BhY2UoKSBj
b25zdCB7IHJldHVybiBtX2FkZHJlc3NTcGFjZTsgfQotICAgIGNvbnN0IHN0ZDo6dW5pcXVlX3B0
cjxUeXBlPiYgZWxlbWVudFR5cGUoKSBjb25zdCB7IHJldHVybiBtX2VsZW1lbnRUeXBlOyB9Cisg
ICAgY29uc3QgVHlwZSYgZWxlbWVudFR5cGUoKSBjb25zdCB7IHJldHVybiAqbV9lbGVtZW50VHlw
ZTsgfQogCiBwcml2YXRlOgogICAgIExleGVyOjpUb2tlbiBtX29yaWdpbjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFTVFJldHVybi5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQVNUUmV0dXJu
LmgKaW5kZXggMTBkNzg2ZmNlYzYuLjcyZjZmNTc0YmUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xBU1RSZXR1cm4uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xBU1RSZXR1cm4uaApAQCAt
NDksOSArNDksMTMgQEAgcHVibGljOgogCiAgICAgUmV0dXJuKGNvbnN0IFJldHVybiYpID0gZGVs
ZXRlOwogICAgIFJldHVybihSZXR1cm4mJikgPSBkZWZhdWx0OworICAgIAorICAgIGJvb2wgaXNS
ZXR1cm4oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisKKyAgICBFeHByZXNzaW9u
KiB2YWx1ZSgpIHsgcmV0dXJuIG1fdmFsdWUuZ2V0KCk7IH0KIAogcHJpdmF0ZToKLSAgICBzdGQ6
OnVuaXF1ZV9wdHI8RXhwcmVzc2lvbj4gbV92YWx1ZTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8RXhw
cmVzc2lvbj4gbV92YWx1ZTsgLy8gbnVsbGFibGUKIH07CiAKIH0KQEAgLTYwLDQgKzY0LDYgQEAg
cHJpdmF0ZToKIAogfQogCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX1NUQVRFTUVOVChS
ZXR1cm4sIGlzUmV0dXJuKCkpCisKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQVNUU3RhdGVtZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xBU1RTdGF0ZW1lbnQuaAppbmRleCAy
Njg2ZWRmZjRkNi4uNDAzYmFhMDJjMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFTVFN0YXRlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFTVFN0YXRlbWVudC5oCkBAIC00OCwx
NCArNDgsMzYgQEAgcHVibGljOgogICAgIFN0YXRlbWVudChjb25zdCBTdGF0ZW1lbnQmKSA9IGRl
bGV0ZTsKICAgICBTdGF0ZW1lbnQoU3RhdGVtZW50JiYpID0gZGVmYXVsdDsKIAorICAgIHZpcnR1
YWwgYm9vbCBpc0Jsb2NrKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJv
b2wgaXNCcmVhaygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGlz
Q29udGludWUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc0Rv
V2hpbGVMb29wKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNF
ZmZlY3RmdWxFeHByZXNzaW9uU3RhdGVtZW50KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAg
ICB2aXJ0dWFsIGJvb2wgaXNGYWxsdGhyb3VnaCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Cisg
ICAgdmlydHVhbCBib29sIGlzRm9yTG9vcCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAg
dmlydHVhbCBib29sIGlzSWZTdGF0ZW1lbnQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAg
IHZpcnR1YWwgYm9vbCBpc1JldHVybigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmly
dHVhbCBib29sIGlzU3dpdGNoQ2FzZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmly
dHVhbCBib29sIGlzU3dpdGNoU3RhdGVtZW50KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAg
ICB2aXJ0dWFsIGJvb2wgaXNUcmFwKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0
dWFsIGJvb2wgaXNWYXJpYWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudCgpIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGlzV2hpbGVMb29wKCkgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH0KKwogcHJpdmF0ZToKICAgICBMZXhlcjo6VG9rZW4gbV9vcmlnaW47CiB9OwogCit0
eXBlZGVmIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8U3RhdGVtZW50Pj4gU3RhdGVtZW50czsKKwog
fQogCiB9CiAKIH0KIAorI2RlZmluZSBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX1NUQVRF
TUVOVChUb1ZhbHVlVHlwZU5hbWUsIHByZWRpY2F0ZSkgXAorU1BFQ0lBTElaRV9UWVBFX1RSQUlU
U19CRUdJTihXZWJDb3JlOjpXSExTTDo6QVNUOjpUb1ZhbHVlVHlwZU5hbWUpIFwKKyAgICBzdGF0
aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6V0hMU0w6OkFTVDo6U3RhdGVtZW50JiBzdGF0
ZW1lbnQpIHsgcmV0dXJuIHN0YXRlbWVudC5wcmVkaWNhdGU7IH0gXAorU1BFQ0lBTElaRV9UWVBF
X1RSQUlUU19FTkQoKQorCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFTVFN0cnVjdHVyZURlZmluaXRpb24uaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFTVFN0cnVjdHVyZURlZmlu
aXRpb24uaAppbmRleCAwYThmNGE0Y2MzYi4uMDkyZDkxNDY3NmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFTVFN0cnVjdHVyZURlZmlu
aXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xBU1RTdHJ1Y3R1cmVEZWZpbml0aW9uLmgKQEAgLTUzLDYgKzUzLDggQEAgcHVibGljOgogICAg
IFN0cnVjdHVyZURlZmluaXRpb24oY29uc3QgU3RydWN0dXJlRGVmaW5pdGlvbiYpID0gZGVsZXRl
OwogICAgIFN0cnVjdHVyZURlZmluaXRpb24oU3RydWN0dXJlRGVmaW5pdGlvbiYmKSA9IGRlZmF1
bHQ7CiAKKyAgICBTdHJ1Y3R1cmVFbGVtZW50cyYgc3RydWN0dXJlRWxlbWVudHMoKSB7IHJldHVy
biBtX3N0cnVjdHVyZUVsZW1lbnRzOyB9CisKICAgICBzdGQ6OnVuaXF1ZV9wdHI8VHlwZT4gY2xv
bmUoKSBjb25zdCBvdmVycmlkZQogICAgIHsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xBU1RTdHJ1Y3R1cmVFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9BU1QvV0hMU0xBU1RTdHJ1Y3R1cmVFbGVtZW50LmgKaW5kZXggMmIyNWEzYWIxNWEuLmE5
YWJhYWY1ZjRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xBU1RTdHJ1Y3R1cmVFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQVNUU3RydWN0dXJlRWxlbWVudC5oCkBAIC01NSw2
ICs1NSw5IEBAIHB1YmxpYzoKICAgICBTdHJ1Y3R1cmVFbGVtZW50KGNvbnN0IFN0cnVjdHVyZUVs
ZW1lbnQmKSA9IGRlbGV0ZTsKICAgICBTdHJ1Y3R1cmVFbGVtZW50KFN0cnVjdHVyZUVsZW1lbnQm
JikgPSBkZWZhdWx0OwogCisgICAgVHlwZSYgdHlwZSgpIHsgcmV0dXJuICptX3R5cGU7IH0KKyAg
ICBzdGQ6Om9wdGlvbmFsPFNlbWFudGljPiYgc2VtYW50aWMoKSB7IHJldHVybiBtX3NlbWFudGlj
OyB9CisKIHByaXZhdGU6CiAgICAgTGV4ZXI6OlRva2VuIG1fb3JpZ2luOwogICAgIFF1YWxpZmll
cnMgbV9xdWFsaWZpZXJzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvQVNUL1dITFNMQVNUU3dpdGNoQ2FzZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQVNUU3dpdGNoQ2FzZS5oCmluZGV4IGNlMjk4NzYzN2Zh
Li45Y2I2ZTlkYjg5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvQVNUL1dITFNMQVNUU3dpdGNoQ2FzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFTVFN3aXRjaENhc2UuaApAQCAtNTIsNiArNTIsMTEg
QEAgcHVibGljOgogCiAgICAgU3dpdGNoQ2FzZShjb25zdCBTd2l0Y2hDYXNlJikgPSBkZWxldGU7
CiAgICAgU3dpdGNoQ2FzZShTd2l0Y2hDYXNlJiYpID0gZGVmYXVsdDsKKyAgICAKKyAgICBib29s
IGlzU3dpdGNoQ2FzZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKworICAgIHN0
ZDo6b3B0aW9uYWw8Q29uc3RhbnRFeHByZXNzaW9uPiYgdmFsdWUoKSB7IHJldHVybiBtX3ZhbHVl
OyB9CisgICAgQmxvY2smIGJsb2NrKCkgeyByZXR1cm4gbV9ibG9jazsgfQogCiBwcml2YXRlOgog
ICAgIE9wdGlvbmFsPENvbnN0YW50RXhwcmVzc2lvbj4gbV92YWx1ZTsKQEAgLTY0LDQgKzY5LDYg
QEAgcHJpdmF0ZToKIAogfQogCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX1NUQVRFTUVO
VChTd2l0Y2hDYXNlLCBpc1N3aXRjaENhc2UoKSkKKwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xBU1RTd2l0Y2hTdGF0ZW1l
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFTVFN3
aXRjaFN0YXRlbWVudC5oCmluZGV4IDczNmVmMTE2ODQ4Li43ZjlhNjlkOWQxMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQVNUU3dpdGNo
U3RhdGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMQVNUU3dpdGNoU3RhdGVtZW50LmgKQEAgLTUxLDYgKzUxLDExIEBAIHB1YmxpYzoKIAog
ICAgIFN3aXRjaFN0YXRlbWVudChjb25zdCBTd2l0Y2hTdGF0ZW1lbnQmKSA9IGRlbGV0ZTsKICAg
ICBTd2l0Y2hTdGF0ZW1lbnQoU3dpdGNoU3RhdGVtZW50JiYpID0gZGVmYXVsdDsKKyAgICAKKyAg
ICBib29sIGlzU3dpdGNoU3RhdGVtZW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsg
fQorCisgICAgRXhwcmVzc2lvbiYgdmFsdWUoKSB7IHJldHVybiAqbV92YWx1ZTsgfQorICAgIFZl
Y3RvcjxTd2l0Y2hDYXNlPiYgc3dpdGNoQ2FzZXMoKSB7IHJldHVybiBtX3N3aXRjaENhc2VzOyB9
CiAKIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPEV4cHJlc3Npb24+IG1fdmFsdWU7CkBA
IC02Myw0ICs2OCw2IEBAIHByaXZhdGU6CiAKIH0KIAorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19X
SExTTF9TVEFURU1FTlQoU3dpdGNoU3RhdGVtZW50LCBpc1N3aXRjaFN0YXRlbWVudCgpKQorCiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTEFTVFRlcm5hcnlFeHByZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9BU1QvV0hMU0xBU1RUZXJuYXJ5RXhwcmVzc2lvbi5oCmluZGV4IGNiZmI1OTY4
YTZkLi5hZjk3ZTY4ODBhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvQVNUL1dITFNMQVNUVGVybmFyeUV4cHJlc3Npb24uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xBU1RUZXJuYXJ5RXhwcmVzc2lvbi5o
CkBAIC01MSw2ICs1MSwxMiBAQCBwdWJsaWM6CiAgICAgVGVybmFyeUV4cHJlc3Npb24oY29uc3Qg
VGVybmFyeUV4cHJlc3Npb24mKSA9IGRlbGV0ZTsKICAgICBUZXJuYXJ5RXhwcmVzc2lvbihUZXJu
YXJ5RXhwcmVzc2lvbiYmKSA9IGRlZmF1bHQ7CiAKKyAgICBib29sIGlzVGVybmFyeUV4cHJlc3Np
b24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisKKyAgICBFeHByZXNzaW9uJiBw
cmVkaWNhdGUoKSB7IHJldHVybiAqbV9wcmVkaWNhdGU7IH0KKyAgICBFeHByZXNzaW9uJiBib2R5
RXhwcmVzc2lvbigpIHsgcmV0dXJuICptX2JvZHlFeHByZXNzaW9uOyB9CisgICAgRXhwcmVzc2lv
biYgZWxzZUV4cHJlc3Npb24oKSB7IHJldHVybiAqbV9lbHNlRXhwcmVzc2lvbjsgfQorCiBwcml2
YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxFeHByZXNzaW9uPiBtX3ByZWRpY2F0ZTsKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8RXhwcmVzc2lvbj4gbV9ib2R5RXhwcmVzc2lvbjsKQEAgLTYzLDQgKzY5
LDYgQEAgcHJpdmF0ZToKIAogfQogCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX0VYUFJF
U1NJT04oVGVybmFyeUV4cHJlc3Npb24sIGlzVGVybmFyeUV4cHJlc3Npb24oKSkKKwogI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xBU1RUcmFwLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xBU1RUcmFwLmgKaW5kZXggNTc3NzE0YjI1OTYuLjNlYWE1YTQ2NTQyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xBU1RUcmFwLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQVNUVHJhcC5o
CkBAIC00Nyw2ICs0Nyw4IEBAIHB1YmxpYzoKIAogICAgIFRyYXAoY29uc3QgVHJhcCYpID0gZGVs
ZXRlOwogICAgIFRyYXAoVHJhcCYmKSA9IGRlZmF1bHQ7CisgICAgCisgICAgYm9vbCBpc1RyYXAo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAKIHByaXZhdGU6CiB9OwpAQCAtNTcs
NCArNTksNiBAQCBwcml2YXRlOgogCiB9CiAKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xf
U1RBVEVNRU5UKFRyYXAsIGlzVHJhcCgpKQorCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFTVFR5cGUuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFTVFR5cGUuaAppbmRleCBkZjZl
Y2VjNjY5Yi4uMGQ4ZmY2Mzk4YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTEFTVFR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xBU1RUeXBlLmgKQEAgLTI4LDYgKzI4LDcgQEAKICNp
ZiBFTkFCTEUoV0VCR1BVKQogCiAjaW5jbHVkZSAiV0hMU0xBU1ROb2RlLmgiCisjaW5jbHVkZSA8
d3RmL1R5cGVDYXN0cy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQ0LDYgKzQ1LDEx
IEBAIHB1YmxpYzoKICAgICBUeXBlKGNvbnN0IFR5cGUmKSA9IGRlbGV0ZTsKICAgICBUeXBlKFR5
cGUmJikgPSBkZWZhdWx0OwogCisgICAgdmlydHVhbCBib29sIGlzVHlwZVJlZmVyZW5jZSgpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGlzUG9pbnRlclR5cGUoKSBj
b25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc0FycmF5UmVmZXJlbmNl
VHlwZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGlzQXJyYXlU
eXBlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKwogICAgIHZpcnR1YWwgc3RkOjp1bmlxdWVf
cHRyPFR5cGU+IGNsb25lKCkgY29uc3QgPSAwOwogCiBwcml2YXRlOgpAQCAtNTUsNCArNjEsOSBA
QCBwcml2YXRlOgogCiB9CiAKKyNkZWZpbmUgU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9U
WVBFKFRvVmFsdWVUeXBlTmFtZSwgcHJlZGljYXRlKSBcCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRT
X0JFR0lOKFdlYkNvcmU6OldITFNMOjpBU1Q6OlRvVmFsdWVUeXBlTmFtZSkgXAorICAgIHN0YXRp
YyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpXSExTTDo6QVNUOjpUeXBlJiB0eXBlKSB7IHJl
dHVybiB0eXBlLnByZWRpY2F0ZTsgfSBcCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCisK
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
QVNUL1dITFNMQVNUVHlwZUFyZ3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML0FTVC9XSExTTEFTVFR5cGVBcmd1bWVudC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAuLjdlNTgwMWUzYjU2Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQVNUVHlwZUFyZ3VtZW50
LmNwcApAQCAtMCwwICsxLDY0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBF
TkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV0hMU0xMZXhl
ci5oIgorCisjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworbmFtZXNwYWNlIFdITFNMIHsKKworbmFtZXNwYWNlIEFTVCB7CisKK1R5cGVBcmd1bWVudHMg
Y2xvbmUoY29uc3QgVHlwZUFyZ3VtZW50cyYgdHlwZUFyZ3VtZW50cykKK3sKKyAgICBUeXBlQXJn
dW1lbnRzIHJlc3VsdDsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIHR5cGVBcmd1bWVudCA6IHR5cGVB
cmd1bWVudHMpCisgICAgICAgIHJlc3VsdC5hcHBlbmQoY2xvbmUodHlwZUFyZ3VtZW50KSk7Cisg
ICAgcmV0dXJuIHJlc3VsdDsKK30KKworVHlwZUFyZ3VtZW50IGNsb25lKGNvbnN0IFR5cGVBcmd1
bWVudCYgdHlwZUFyZ3VtZW50KQoreworICAgIHJldHVybiBXVEY6OnZpc2l0KFdURjo6bWFrZVZp
c2l0b3IoW10oY29uc3QgQ29uc3RhbnRFeHByZXNzaW9uJiBjb25zdGFudEV4cHJlc3Npb24pIC0+
IFR5cGVBcmd1bWVudCB7CisgICAgICAgIHJldHVybiBjb25zdGFudEV4cHJlc3Npb247CisgICAg
fSwgW10oY29uc3Qgc3RkOjp1bmlxdWVfcHRyPFR5cGVSZWZlcmVuY2U+JiB0eXBlUmVmZXJlbmNl
KSAtPiBUeXBlQXJndW1lbnQgeworICAgICAgICByZXR1cm4gdHlwZVJlZmVyZW5jZS0+Y2xvbmVU
eXBlUmVmZXJlbmNlKCk7CisgICAgfSksIHR5cGVBcmd1bWVudCk7Cit9CisKK30KKworfQorCit9
CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvQVNUL1dITFNMQVNUVHlwZUFyZ3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9BU1QvV0hMU0xBU1RUeXBlQXJndW1lbnQuaAppbmRleCBhNDE2ODk2YWQ0YS4u
M2Q3MjhiZjVlYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML0FTVC9XSExTTEFTVFR5cGVBcmd1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFTVFR5cGVBcmd1bWVudC5oCkBAIC0zMSw3ICszMSw2
IEBACiAjaW5jbHVkZSAiV0hMU0xMZXhlci5oIgogI2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+CiAj
aW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ1ZpZXcuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0zOSw5ICszOCwxNCBAQCBuYW1lc3BhY2UgV0hM
U0wgewogCiBuYW1lc3BhY2UgQVNUIHsKIAotdHlwZWRlZiBWYXJpYW50PENvbnN0YW50RXhwcmVz
c2lvbiwgU3RyaW5nPiBUeXBlQXJndW1lbnQ7CitjbGFzcyBUeXBlUmVmZXJlbmNlOworCit0eXBl
ZGVmIFZhcmlhbnQ8Q29uc3RhbnRFeHByZXNzaW9uLCBzdGQ6OnVuaXF1ZV9wdHI8VHlwZVJlZmVy
ZW5jZT4+IFR5cGVBcmd1bWVudDsKIHR5cGVkZWYgVmVjdG9yPFR5cGVBcmd1bWVudD4gVHlwZUFy
Z3VtZW50czsKIAorVHlwZUFyZ3VtZW50IGNsb25lKGNvbnN0IFR5cGVBcmd1bWVudCYpOworVHlw
ZUFyZ3VtZW50cyBjbG9uZShjb25zdCBUeXBlQXJndW1lbnRzJik7CisKIH0KIAogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQVNUVHlw
ZURlZmluaXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9X
SExTTEFTVFR5cGVEZWZpbml0aW9uLmgKaW5kZXggZjcyYzZiNmEwM2QuLjZmYjA1Y2FmYmU2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xB
U1RUeXBlRGVmaW5pdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML0FTVC9XSExTTEFTVFR5cGVEZWZpbml0aW9uLmgKQEAgLTUyLDYgKzUyLDggQEAgcHVibGlj
OgogICAgIFR5cGVEZWZpbml0aW9uKGNvbnN0IFR5cGVEZWZpbml0aW9uJikgPSBkZWxldGU7CiAg
ICAgVHlwZURlZmluaXRpb24oVHlwZURlZmluaXRpb24mJikgPSBkZWZhdWx0OwogCisgICAgQVNU
OjpUeXBlJiB0eXBlKCkgeyByZXR1cm4gKm1fdHlwZTsgfQorCiAgICAgc3RkOjp1bmlxdWVfcHRy
PFR5cGU+IGNsb25lKCkgY29uc3Qgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvQVNUL1dITFNMQVNUVHlwZVJlZmVyZW5jZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvQVNUL1dITFNMQVNUVHlwZVJlZmVyZW5jZS5oCmluZGV4IDZiYmFiMzg5OTUw
Li4wMDExMWFkYjA3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvQVNUL1dITFNMQVNUVHlwZVJlZmVyZW5jZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFTVFR5cGVSZWZlcmVuY2UuaApAQCAtNTIsOSAr
NTIsMTggQEAgcHVibGljOgogICAgIFR5cGVSZWZlcmVuY2UoY29uc3QgVHlwZVJlZmVyZW5jZSYp
ID0gZGVsZXRlOwogICAgIFR5cGVSZWZlcmVuY2UoVHlwZVJlZmVyZW5jZSYmKSA9IGRlZmF1bHQ7
CiAKKyAgICBib29sIGlzVHlwZVJlZmVyZW5jZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRy
dWU7IH0KKworICAgIFR5cGVBcmd1bWVudHMmIHR5cGVBcmd1bWVudHMoKSB7IHJldHVybiBtX3R5
cGVBcmd1bWVudHM7IH0KKworICAgIHN0ZDo6dW5pcXVlX3B0cjxUeXBlUmVmZXJlbmNlPiBjbG9u
ZVR5cGVSZWZlcmVuY2UoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8VHlwZVJlZmVyZW5jZT4oTGV4ZXI6OlRva2VuKG1fb3JpZ2luKSwgU3RyaW5nKG1fbmFt
ZSksIEFTVDo6Y2xvbmUobV90eXBlQXJndW1lbnRzKSk7CisgICAgfQorCiAgICAgc3RkOjp1bmlx
dWVfcHRyPFR5cGU+IGNsb25lKCkgY29uc3Qgb3ZlcnJpZGUKICAgICB7Ci0gICAgICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPFR5cGVSZWZlcmVuY2U+KExleGVyOjpUb2tlbihtX29yaWdpbiks
IFN0cmluZyhtX25hbWUpLCBUeXBlQXJndW1lbnRzKG1fdHlwZUFyZ3VtZW50cykpOworICAgICAg
ICByZXR1cm4gY2xvbmVUeXBlUmVmZXJlbmNlKCk7CiAgICAgfQogCiBwcml2YXRlOgpAQCAtNjks
NCArNzgsNiBAQCBwcml2YXRlOgogCiB9CiAKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xf
VFlQRShUeXBlUmVmZXJlbmNlLCBpc1R5cGVSZWZlcmVuY2UoKSkKKwogI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xBU1RVbnNp
Z25lZEludGVnZXJMaXRlcmFsLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xBU1RVbnNpZ25lZEludGVnZXJMaXRlcmFsLmgKaW5kZXggNjdiOWMyMjc5M2Eu
LmE1YzJlY2Q1YWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9BU1QvV0hMU0xBU1RVbnNpZ25lZEludGVnZXJMaXRlcmFsLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQVNUVW5zaWduZWRJbnRlZ2VyTGl0
ZXJhbC5oCkBAIC01MSw2ICs1MSw4IEBAIHB1YmxpYzoKIAogICAgIHVuc2lnbmVkIHZhbHVlKCkg
Y29uc3QgeyByZXR1cm4gbV92YWx1ZTsgfQogCisgICAgYm9vbCBpc1Vuc2lnbmVkSW50ZWdlckxp
dGVyYWwoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisKIHByaXZhdGU6CiAgICAg
dW5zaWduZWQgbV92YWx1ZTsKIH07CkBAIC02MSw0ICs2Myw2IEBAIHByaXZhdGU6CiAKIH0KIAor
U1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9FWFBSRVNTSU9OKFVuc2lnbmVkSW50ZWdlckxp
dGVyYWwsIGlzVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCgpKQorCiAjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFTVFZhcmlhYmxl
RGVjbGFyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9X
SExTTEFTVFZhcmlhYmxlRGVjbGFyYXRpb24uaAppbmRleCBlZTFiM2I2ZTZjOS4uODQ1ODFhZmE3
NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9X
SExTTEFTVFZhcmlhYmxlRGVjbGFyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xBU1RWYXJpYWJsZURlY2xhcmF0aW9uLmgKQEAgLTYxLDYg
KzYxLDEwIEBAIHB1YmxpYzoKIAogICAgIExleGVyOjpUb2tlbiBvcmlnaW4oKSBjb25zdCB7IHJl
dHVybiBtX29yaWdpbjsgfQogCisgICAgVHlwZSYgdHlwZSgpIHsgcmV0dXJuICptX3R5cGU7IH0K
KyAgICBzdGQ6Om9wdGlvbmFsPFNlbWFudGljPiYgc2VtYW50aWMoKSB7IHJldHVybiBtX3NlbWFu
dGljOyB9CisgICAgRXhwcmVzc2lvbiogaW5pdGlhbGl6ZXIoKSB7IHJldHVybiBtX2luaXRpYWxp
emVyLmdldCgpOyB9CisKIHByaXZhdGU6CiAgICAgTGV4ZXI6OlRva2VuIG1fb3JpZ2luOwogICAg
IFF1YWxpZmllcnMgbV9xdWFsaWZpZXJzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQVNUVmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1l
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFTVFZh
cmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50LmgKaW5kZXggMzBiZTNmNDViOTguLjIwZmM5ZDBi
YTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1Qv
V0hMU0xBU1RWYXJpYWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFTVFZhcmlhYmxlRGVjbGFyYXRpb25z
U3RhdGVtZW50LmgKQEAgLTUwLDkgKzUwLDEzIEBAIHB1YmxpYzoKIAogICAgIFZhcmlhYmxlRGVj
bGFyYXRpb25zU3RhdGVtZW50KGNvbnN0IFZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50Jikg
PSBkZWxldGU7CiAgICAgVmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQoVmFyaWFibGVEZWNs
YXJhdGlvbnNTdGF0ZW1lbnQmJikgPSBkZWZhdWx0OworICAgIAorICAgIGJvb2wgaXNWYXJpYWJs
ZURlY2xhcmF0aW9uc1N0YXRlbWVudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0K
KworICAgIFZlY3RvcjxWYXJpYWJsZURlY2xhcmF0aW9uPiYgdmFyaWFibGVEZWNsYXJhdGlvbnMo
KSB7IHJldHVybiBtX3ZhcmlhYmxlRGVjbGFyYXRpb25zOyB9CiAKIHByaXZhdGU6Ci0gICAgVmVj
dG9yPFZhcmlhYmxlRGVjbGFyYXRpb24+JiYgbV92YXJpYWJsZURlY2xhcmF0aW9uczsKKyAgICBW
ZWN0b3I8VmFyaWFibGVEZWNsYXJhdGlvbj4gbV92YXJpYWJsZURlY2xhcmF0aW9uczsKIH07CiAK
IH0KQEAgLTYxLDQgKzY1LDYgQEAgcHJpdmF0ZToKIAogfQogCitTUEVDSUFMSVpFX1RZUEVfVFJB
SVRTX1dITFNMX1NUQVRFTUVOVChWYXJpYWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudCwgaXNWYXJp
YWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudCgpKQorCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFTVFZhcmlhYmxlUmVmZXJl
bmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xBU1RW
YXJpYWJsZVJlZmVyZW5jZS5oCmluZGV4IDc0N2NmNDIwZTQ3Li5mYmY2MWJhMzU0ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQVNUVmFy
aWFibGVSZWZlcmVuY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xBU1RWYXJpYWJsZVJlZmVyZW5jZS5oCkBAIC02Niw2ICs2Niw4IEBAIHB1Ymxp
YzoKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKKyAgICBib29sIGlzVmFyaWFibGVS
ZWZlcmVuY2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisKIHByaXZhdGU6CiAg
ICAgVmFyaWFibGVSZWZlcmVuY2UoTGV4ZXI6OlRva2VuJiYgb3JpZ2luKQogICAgICAgICA6IEV4
cHJlc3Npb24oV1RGTW92ZShvcmlnaW4pKQpAQCAtODIsNCArODQsNiBAQCBwcml2YXRlOgogCiB9
CiAKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfRVhQUkVTU0lPTihWYXJpYWJsZVJlZmVy
ZW5jZSwgaXNWYXJpYWJsZVJlZmVyZW5jZSgpKQorCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFTVFdoaWxlTG9vcC5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQVNUV2hpbGVMb29w
LmgKaW5kZXggOGFlYTJjMWIyZDkuLmYzNDA1M2UyOTI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xBU1RXaGlsZUxvb3AuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xBU1RXaGlsZUxvb3Au
aApAQCAtNTAsNiArNTAsMTEgQEAgcHVibGljOgogCiAgICAgV2hpbGVMb29wKGNvbnN0IFdoaWxl
TG9vcCYpID0gZGVsZXRlOwogICAgIFdoaWxlTG9vcChXaGlsZUxvb3AmJikgPSBkZWZhdWx0Owor
ICAgIAorICAgIGJvb2wgaXNXaGlsZUxvb3AoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVl
OyB9CisKKyAgICBFeHByZXNzaW9uJiBjb25kaXRpb25hbCgpIHsgcmV0dXJuICptX2NvbmRpdGlv
bmFsOyB9CisgICAgU3RhdGVtZW50JiBib2R5KCkgeyByZXR1cm4gKm1fYm9keTsgfQogCiBwcml2
YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxFeHByZXNzaW9uPiBtX2NvbmRpdGlvbmFsOwpAQCAt
NjIsNCArNjcsNiBAQCBwcml2YXRlOgogCiB9CiAKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hM
U0xfU1RBVEVNRU5UKFdoaWxlTG9vcCwgaXNXaGlsZUxvb3AoKSkKKwogI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTE5hbWVSZXNvbHZl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTE5hbWVSZXNv
bHZlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjc4MGQ1YzU0
MjVhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvV0hMU0xOYW1lUmVzb2x2ZXIuY3BwCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aWYgRU5BQkxFKFdFQkdQVSkKKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldITFNM
TmFtZVJlc29sdmVyLmgiCisKKyNpbmNsdWRlICJXSExTTFZpc2l0b3IuaCIKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCituYW1lc3BhY2UgV0hMU0wgeworCitjbGFzcyBOYW1lUmVzb2x2ZXIgOiBw
dWJsaWMgVmlzaXRvciB7CisgICAgfk5hbWVSZXNvbHZlcigpID0gZGVmYXVsdDsKK307CisKK3Zv
aWQgcmVzb2x2ZU5hbWVzSW5UeXBlcyhQcm9ncmFtJikKK3sKKworfQorCit9CisKK30KKworI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExT
TE5hbWVSZXNvbHZlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hM
U0xOYW1lUmVzb2x2ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4u
NDdkNGQ2YTU3OTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9XSExTTE5hbWVSZXNvbHZlci5oCkBAIC0wLDAgKzEsNDIgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlICJXSExT
TFByb2dyYW0uaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3BhY2UgV0hMU0wgewor
Cit2b2lkIHJlc29sdmVOYW1lc0luVHlwZXMoUHJvZ3JhbSYgcHJvZ3JhbSk7CisKK30KKworfQor
CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L1dITFNMUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dI
TFNMUGFyc2VyLmNwcAppbmRleCA2NWJlZDM3NDdkYS4uMGY3MjhhZTlkNmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUGFyc2VyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFBhcnNlci5jcHAKQEAg
LTQxMiw3ICs0MTIsNyBAQCBhdXRvIFBhcnNlcjo6cGFyc2VUeXBlQXJndW1lbnQoKSAtPiBFeHBl
Y3RlZDxBU1Q6OlR5cGVBcmd1bWVudCwgRXJyb3I+IHsKICAgICBhdXRvIHJlc3VsdCA9IGNvbnN1
bWVUeXBlKExleGVyOjpUb2tlbjo6VHlwZTo6SWRlbnRpZmllcik7CiAgICAgaWYgKCFyZXN1bHQp
CiAgICAgICAgIHJldHVybiBVbmV4cGVjdGVkPEVycm9yPihyZXN1bHQuZXJyb3IoKSk7Ci0gICAg
cmV0dXJuIEFTVDo6VHlwZUFyZ3VtZW50KHJlc3VsdC0+c3RyaW5nVmlldy50b1N0cmluZygpKTsK
KyAgICByZXR1cm4gQVNUOjpUeXBlQXJndW1lbnQoc3RkOjptYWtlX3VuaXF1ZTxBU1Q6OlR5cGVS
ZWZlcmVuY2U+KExleGVyOjpUb2tlbigqcmVzdWx0KSwgcmVzdWx0LT5zdHJpbmdWaWV3LnRvU3Ry
aW5nKCksIEFTVDo6VHlwZUFyZ3VtZW50cygpKSk7CiB9CiAKIGF1dG8gUGFyc2VyOjpwYXJzZVR5
cGVBcmd1bWVudHMoKSAtPiBFeHBlY3RlZDxBU1Q6OlR5cGVBcmd1bWVudHMsIEVycm9yPiB7CkBA
IC04OTIsNyArODkyLDcgQEAgYXV0byBQYXJzZXI6OnBhcnNlRW51bWVyYXRpb25EZWZpbml0aW9u
KCkgLT4gRXhwZWN0ZWQ8QVNUOjpFbnVtZXJhdGlvbkRlZmluaXRpb24KICAgICBpZiAoIWZpcnN0
RW51bWVyYXRpb25NZW1iZXIpCiAgICAgICAgIHJldHVybiBVbmV4cGVjdGVkPEVycm9yPihmaXJz
dEVudW1lcmF0aW9uTWVtYmVyLmVycm9yKCkpOwogCi0gICAgVmVjdG9yPEFTVDo6RW51bWVyYXRp
b25NZW1iZXI+IG1lbWJlcnM7CisgICAgQVNUOjpFbnVtZXJhdGlvbk1lbWJlcnMgbWVtYmVyczsK
ICAgICBtZW1iZXJzLmFwcGVuZChXVEZNb3ZlKCpmaXJzdEVudW1lcmF0aW9uTWVtYmVyKSk7CiAK
ICAgICB3aGlsZSAodHJ5VHlwZShMZXhlcjo6VG9rZW46OlR5cGU6OkNvbW1hKSkgewpAQCAtMTI0
OCw3ICsxMjQ4LDcgQEAgYXV0byBQYXJzZXI6OnBhcnNlQmxvY2soKSAtPiBFeHBlY3RlZDxBU1Q6
OkJsb2NrLCBFcnJvcj4gewogCiBBU1Q6OkJsb2NrIFBhcnNlcjo6cGFyc2VCbG9ja0JvZHkoTGV4
ZXI6OlRva2VuJiYgb3JpZ2luKQogewotICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8QVNUOjpT
dGF0ZW1lbnQ+PiBzdGF0ZW1lbnRzOworICAgIEFTVDo6U3RhdGVtZW50cyBzdGF0ZW1lbnRzOwog
ICAgIHdoaWxlICh0cnVlKSB7CiAgICAgICAgIGF1dG8gc3RhdGVtZW50ID0gYmFja3RyYWNraW5n
U2NvcGU8RXhwZWN0ZWQ8c3RkOjp1bmlxdWVfcHRyPEFTVDo6U3RhdGVtZW50PiwgRXJyb3I+Pihb
Jl0oKSB7CiAgICAgICAgICAgICByZXR1cm4gcGFyc2VTdGF0ZW1lbnQoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUHJlcGFyZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFByZXBhcmUuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5hYjhkNzQ2YzI2ZgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUHJlcGFy
ZS5jcHAKQEAgLTAsMCArMSw2MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZiBFTkFCTEUoV0VCR1BVKQor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV0hMU0xQcmVwYXJlLmgiCisKKyNpbmNs
dWRlICJXSExTTE5hbWVSZXNvbHZlci5oIgorI2luY2x1ZGUgIldITFNMUGFyc2VyLmgiCisjaW5j
bHVkZSAiV0hMU0xQcm9ncmFtLmgiCisjaW5jbHVkZSAiV0hMU0xTdGFuZGFyZExpYnJhcnkuaCIK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3BhY2UgV0hMU0wgeworCitzdGQ6Om9wdGlv
bmFsPFByZXBhcmF0aW9uUmVzdWx0PiBwcmVwYXJlKFN0cmluZ1ZpZXcgc291cmNlKQoreworICAg
IFByb2dyYW0gcHJvZ3JhbTsKKworICAgIFBhcnNlciBwYXJzZXI7CisgICAgYXV0byBzdGFuZGFy
ZExpYnJhcnkgPSBTdHJpbmc6OmZyb21VVEY4KFdITFNMU3RhbmRhcmRMaWJyYXJ5LCBzaXplb2Yo
V0hMU0xTdGFuZGFyZExpYnJhcnkpKTsKKyAgICBib29sIHN1Y2Nlc3MgPSBzdGF0aWNfY2FzdDxi
b29sPihwYXJzZXIucGFyc2UocHJvZ3JhbSwgc3RhbmRhcmRMaWJyYXJ5LCBXSExTTDo6UGFyc2Vy
OjpNb2RlOjpTdGFuZGFyZExpYnJhcnkpKTsKKyAgICBpZiAoIXN1Y2Nlc3MpCisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CisgICAgc3VjY2VzcyA9IHN0YXRpY19jYXN0PGJvb2w+KHBhcnNl
ci5wYXJzZShwcm9ncmFtLCBzb3VyY2UsIFdITFNMOjpQYXJzZXI6Ok1vZGU6OlVzZXIpKTsKKyAg
ICBpZiAoIXN1Y2Nlc3MpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICByZXNv
bHZlTmFtZXNJblR5cGVzKHByb2dyYW0pOworCisgICAgcmV0dXJuIFByZXBhcmF0aW9uUmVzdWx0
KCk7Cit9CisKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUHJlcGFyZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvV0hMU0xQcmVwYXJlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAuLjU0Y2NkNjQ3Yzc1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQcmVwYXJlLmgKQEAgLTAsMCArMSw1MCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2luY2x1
ZGUgPHd0Zi9PcHRpb25hbC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ1ZpZXcuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3BhY2UgV0hMU0wgeworCitzdHJ1Y3QgUHJlcGFy
YXRpb25SZXN1bHQKK3sKKyAgICAvLyBNZXRhbCBzaGFkaW5nIGxhbmd1YWdlIGNvZGUKKyAgICAv
LyBNYXBwaW5nIG9mIGF0dHJpYnV0ZSBJRHMKKyAgICAvLyBldGMuCit9OworCitzdGQ6Om9wdGlv
bmFsPFByZXBhcmF0aW9uUmVzdWx0PiBwcmVwYXJlKFN0cmluZ1ZpZXcgc291cmNlKTsKKworfQor
Cit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvV0hMU0xQcm9ncmFtLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9XSExTTFByb2dyYW0uaAppbmRleCA2NWU2MTNhOWZiMy4uZWE2N2RkOTI0YjQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUHJvZ3JhbS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUHJvZ3JhbS5oCkBA
IC02OSw2ICs2OSwxMyBAQCBwdWJsaWM6CiAgICAgICAgIG1fbmF0aXZlVHlwZURlY2xhcmF0aW9u
cy5hcHBlbmQoV1RGTW92ZShuYXRpdmVUeXBlRGVjbGFyYXRpb24pKTsKICAgICB9CiAKKyAgICBW
ZWN0b3I8QVNUOjpUeXBlRGVmaW5pdGlvbj4mIHR5cGVEZWZpbml0aW9ucygpIHsgcmV0dXJuIG1f
dHlwZURlZmluaXRpb25zOyB9CisgICAgVmVjdG9yPEFTVDo6U3RydWN0dXJlRGVmaW5pdGlvbj4m
IHN0cnVjdHVyZURlZmluaXRpb25zKCkgeyByZXR1cm4gbV9zdHJ1Y3R1cmVEZWZpbml0aW9uczsg
fQorICAgIFZlY3RvcjxBU1Q6OkVudW1lcmF0aW9uRGVmaW5pdGlvbj4mIGVudW1lcmF0aW9uRGVm
aW5pdGlvbnMoKSB7IHJldHVybiBtX2VudW1lcmF0aW9uRGVmaW5pdGlvbnM7IH0KKyAgICBWZWN0
b3I8QVNUOjpGdW5jdGlvbkRlZmluaXRpb24+JiBmdW5jdGlvbkRlZmluaXRpb25zKCkgeyByZXR1
cm4gbV9mdW5jdGlvbkRlZmluaXRpb25zOyB9CisgICAgVmVjdG9yPEFTVDo6TmF0aXZlRnVuY3Rp
b25EZWNsYXJhdGlvbj4mIG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb25zKCkgeyByZXR1cm4gbV9u
YXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uczsgfQorICAgIFZlY3RvcjxBU1Q6Ok5hdGl2ZVR5cGVE
ZWNsYXJhdGlvbj4mIG5hdGl2ZVR5cGVEZWNsYXJhdGlvbnMoKSB7IHJldHVybiBtX25hdGl2ZVR5
cGVEZWNsYXJhdGlvbnM7IH0KKwogcHJpdmF0ZToKICAgICBWZWN0b3I8QVNUOjpUeXBlRGVmaW5p
dGlvbj4gbV90eXBlRGVmaW5pdGlvbnM7CiAgICAgVmVjdG9yPEFTVDo6U3RydWN0dXJlRGVmaW5p
dGlvbj4gbV9zdHJ1Y3R1cmVEZWZpbml0aW9uczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMVmlzaXRvci5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvV0hMU0xWaXNpdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAuLmM3MzNiYjkxMmU2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xWaXNpdG9yLmgKQEAgLTAsMCArMSw1NzMg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNp
bmNsdWRlICJXSExTTFByb2dyYW0uaCIKKyNpbmNsdWRlICJXSExTTEFTVEFub255bW91c1Zhcmlh
YmxlRGVjbGFyYXRpb24uaCIKKyNpbmNsdWRlICJXSExTTEFTVEFycmF5UmVmZXJlbmNlVHlwZS5o
IgorI2luY2x1ZGUgIldITFNMQVNUQXJyYXlUeXBlLmgiCisjaW5jbHVkZSAiV0hMU0xBU1RBc3Np
Z25tZW50RXhwcmVzc2lvbi5oIgorI2luY2x1ZGUgIldITFNMQVNUQmFzZUZ1bmN0aW9uQXR0cmli
dXRlLmgiCisjaW5jbHVkZSAiV0hMU0xBU1RCYXNlU2VtYW50aWMuaCIKKyNpbmNsdWRlICJXSExT
TEFTVEJsb2NrLmgiCisjaW5jbHVkZSAiV0hMU0xBU1RCb29sZWFuTGl0ZXJhbC5oIgorI2luY2x1
ZGUgIldITFNMQVNUQnJlYWsuaCIKKyNpbmNsdWRlICJXSExTTEFTVEJ1aWx0SW5TZW1hbnRpYy5o
IgorI2luY2x1ZGUgIldITFNMQVNUQ2FsbEV4cHJlc3Npb24uaCIKKyNpbmNsdWRlICJXSExTTEFT
VENvbW1hRXhwcmVzc2lvbi5oIgorI2luY2x1ZGUgIldITFNMQVNUQ29uc3RhbnRFeHByZXNzaW9u
LmgiCisjaW5jbHVkZSAiV0hMU0xBU1RDb25zdGFudEV4cHJlc3Npb25FbnVtZXJhdGlvbk1lbWJl
clJlZmVyZW5jZS5oIgorI2luY2x1ZGUgIldITFNMQVNUQ29udGludWUuaCIKKyNpbmNsdWRlICJX
SExTTEFTVERlcmVmZXJlbmNlRXhwcmVzc2lvbi5oIgorI2luY2x1ZGUgIldITFNMQVNURG9XaGls
ZUxvb3AuaCIKKyNpbmNsdWRlICJXSExTTEFTVERvdEV4cHJlc3Npb24uaCIKKyNpbmNsdWRlICJX
SExTTEFTVEVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQuaCIKKyNpbmNsdWRlICJXSExTTEFT
VEVudW1lcmF0aW9uRGVmaW5pdGlvbi5oIgorI2luY2x1ZGUgIldITFNMQVNURW51bWVyYXRpb25N
ZW1iZXIuaCIKKyNpbmNsdWRlICJXSExTTEFTVEV4cHJlc3Npb24uaCIKKyNpbmNsdWRlICJXSExT
TEFTVEZhbGx0aHJvdWdoLmgiCisjaW5jbHVkZSAiV0hMU0xBU1RGbG9hdExpdGVyYWwuaCIKKyNp
bmNsdWRlICJXSExTTEFTVEZvckxvb3AuaCIKKyNpbmNsdWRlICJXSExTTEFTVEZ1bmN0aW9uQXR0
cmlidXRlLmgiCisjaW5jbHVkZSAiV0hMU0xBU1RGdW5jdGlvbkRlY2xhcmF0aW9uLmgiCisjaW5j
bHVkZSAiV0hMU0xBU1RGdW5jdGlvbkRlZmluaXRpb24uaCIKKyNpbmNsdWRlICJXSExTTEFTVElm
U3RhdGVtZW50LmgiCisjaW5jbHVkZSAiV0hMU0xBU1RJbmRleEV4cHJlc3Npb24uaCIKKyNpbmNs
dWRlICJXSExTTEFTVEludGVnZXJMaXRlcmFsLmgiCisjaW5jbHVkZSAiV0hMU0xBU1RMb2dpY2Fs
RXhwcmVzc2lvbi5oIgorI2luY2x1ZGUgIldITFNMQVNUTG9naWNhbE5vdEV4cHJlc3Npb24uaCIK
KyNpbmNsdWRlICJXSExTTEFTVE1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24uaCIKKyNpbmNs
dWRlICJXSExTTEFTVE1ha2VQb2ludGVyRXhwcmVzc2lvbi5oIgorI2luY2x1ZGUgIldITFNMQVNU
TmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5oIgorI2luY2x1ZGUgIldITFNMQVNUTmF0aXZlVHlw
ZURlY2xhcmF0aW9uLmgiCisjaW5jbHVkZSAiV0hMU0xBU1ROb2RlLmgiCisjaW5jbHVkZSAiV0hM
U0xBU1ROdWxsTGl0ZXJhbC5oIgorI2luY2x1ZGUgIldITFNMQVNUTnVtVGhyZWFkc0Z1bmN0aW9u
QXR0cmlidXRlLmgiCisjaW5jbHVkZSAiV0hMU0xBU1RQYXJhbWV0ZXIuaCIKKyNpbmNsdWRlICJX
SExTTEFTVFBvaW50ZXJUeXBlLmgiCisjaW5jbHVkZSAiV0hMU0xBU1RQcm9wZXJ0eUFjY2Vzc0V4
cHJlc3Npb24uaCIKKyNpbmNsdWRlICJXSExTTEFTVFF1YWxpZmllci5oIgorI2luY2x1ZGUgIldI
TFNMQVNUUmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbi5oIgorI2luY2x1ZGUgIldITFNMQVNUUmVm
ZXJlbmNlVHlwZS5oIgorI2luY2x1ZGUgIldITFNMQVNUUmVzb3VyY2VTZW1hbnRpYy5oIgorI2lu
Y2x1ZGUgIldITFNMQVNUUmV0dXJuLmgiCisjaW5jbHVkZSAiV0hMU0xBU1RTZW1hbnRpYy5oIgor
I2luY2x1ZGUgIldITFNMQVNUU3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFudGljLmgiCisjaW5j
bHVkZSAiV0hMU0xBU1RTdGFnZUluT3V0U2VtYW50aWMuaCIKKyNpbmNsdWRlICJXSExTTEFTVFN0
YXRlbWVudC5oIgorI2luY2x1ZGUgIldITFNMQVNUU3RydWN0dXJlRGVmaW5pdGlvbi5oIgorI2lu
Y2x1ZGUgIldITFNMQVNUU3RydWN0dXJlRWxlbWVudC5oIgorI2luY2x1ZGUgIldITFNMQVNUU3dp
dGNoQ2FzZS5oIgorI2luY2x1ZGUgIldITFNMQVNUU3dpdGNoU3RhdGVtZW50LmgiCisjaW5jbHVk
ZSAiV0hMU0xBU1RUZXJuYXJ5RXhwcmVzc2lvbi5oIgorI2luY2x1ZGUgIldITFNMQVNUVHJhcC5o
IgorI2luY2x1ZGUgIldITFNMQVNUVHlwZS5oIgorI2luY2x1ZGUgIldITFNMQVNUVHlwZUFyZ3Vt
ZW50LmgiCisjaW5jbHVkZSAiV0hMU0xBU1RUeXBlRGVmaW5pdGlvbi5oIgorI2luY2x1ZGUgIldI
TFNMQVNUVHlwZVJlZmVyZW5jZS5oIgorI2luY2x1ZGUgIldITFNMQVNUVW5zaWduZWRJbnRlZ2Vy
TGl0ZXJhbC5oIgorI2luY2x1ZGUgIldITFNMQVNUVmFsdWUuaCIKKyNpbmNsdWRlICJXSExTTEFT
VFZhcmlhYmxlRGVjbGFyYXRpb24uaCIKKyNpbmNsdWRlICJXSExTTEFTVFZhcmlhYmxlRGVjbGFy
YXRpb25zU3RhdGVtZW50LmgiCisjaW5jbHVkZSAiV0hMU0xBU1RWYXJpYWJsZVJlZmVyZW5jZS5o
IgorI2luY2x1ZGUgIldITFNMQVNUV2hpbGVMb29wLmgiCisKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCituYW1lc3BhY2UgV0hMU0wgeworCitjbGFzcyBWaXNpdG9yIHsKKyAgICB+VmlzaXRvcigp
ID0gZGVmYXVsdDsKKworICAgIHZpcnR1YWwgdm9pZCB2aXNpdChQcm9ncmFtJiBwcm9ncmFtKQor
ICAgIHsKKyAgICAgICAgZm9yIChhdXRvJiB0eXBlRGVmaW5pdGlvbiA6IHByb2dyYW0udHlwZURl
ZmluaXRpb25zKCkpCisgICAgICAgICAgICB2aXNpdCh0eXBlRGVmaW5pdGlvbik7CisgICAgICAg
IGZvciAoYXV0byYgc3RydWN0dXJlRGVmaW5pdGlvbiA6IHByb2dyYW0uc3RydWN0dXJlRGVmaW5p
dGlvbnMoKSkKKyAgICAgICAgICAgIHZpc2l0KHN0cnVjdHVyZURlZmluaXRpb24pOworICAgICAg
ICBmb3IgKGF1dG8mIGVudW1lcmF0aW9uRGVmaW5pdGlvbiA6IHByb2dyYW0uZW51bWVyYXRpb25E
ZWZpbml0aW9ucygpKQorICAgICAgICAgICAgdmlzaXQoZW51bWVyYXRpb25EZWZpbml0aW9uKTsK
KyAgICAgICAgZm9yIChhdXRvJiBmdW5jdGlvbkRlZmluaXRpb24gOiBwcm9ncmFtLmZ1bmN0aW9u
RGVmaW5pdGlvbnMoKSkKKyAgICAgICAgICAgIHZpc2l0KGZ1bmN0aW9uRGVmaW5pdGlvbik7Cisg
ICAgICAgIGZvciAoYXV0byYgbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbiA6IHByb2dyYW0ubmF0
aXZlRnVuY3Rpb25EZWNsYXJhdGlvbnMoKSkKKyAgICAgICAgICAgIHZpc2l0KG5hdGl2ZUZ1bmN0
aW9uRGVjbGFyYXRpb24pOworICAgICAgICBmb3IgKGF1dG8mIG5hdGl2ZVR5cGVEZWNsYXJhdGlv
biA6IHByb2dyYW0ubmF0aXZlVHlwZURlY2xhcmF0aW9ucygpKQorICAgICAgICAgICAgdmlzaXQo
bmF0aXZlVHlwZURlY2xhcmF0aW9uKTsKKyAgICB9CisKKyAgICB2b2lkIHZpc2l0VHlwZShBU1Q6
OlR5cGUmIHR5cGUpCisgICAgeworICAgICAgICBpZiAoaXM8QVNUOjpUeXBlUmVmZXJlbmNlPih0
eXBlKSkKKyAgICAgICAgICAgIHZpc2l0KGRvd25jYXN0PEFTVDo6VHlwZVJlZmVyZW5jZT4odHlw
ZSkpOworICAgICAgICBlbHNlIGlmIChpczxBU1Q6OlBvaW50ZXJUeXBlPih0eXBlKSkKKyAgICAg
ICAgICAgIHZpc2l0KGRvd25jYXN0PEFTVDo6UG9pbnRlclR5cGU+KHR5cGUpKTsKKyAgICAgICAg
ZWxzZSBpZiAoaXM8QVNUOjpBcnJheVJlZmVyZW5jZVR5cGU+KHR5cGUpKQorICAgICAgICAgICAg
dmlzaXQoZG93bmNhc3Q8QVNUOjpBcnJheVJlZmVyZW5jZVR5cGU+KHR5cGUpKTsKKyAgICAgICAg
ZWxzZSB7CisgICAgICAgICAgICBBU1NFUlQoaXM8QVNUOjpBcnJheVR5cGU+KHR5cGUpKTsKKyAg
ICAgICAgICAgIHZpc2l0KGRvd25jYXN0PEFTVDo6QXJyYXlUeXBlPih0eXBlKSk7CisgICAgICAg
IH0KKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpUeXBlRGVmaW5pdGlvbiYg
dHlwZURlZmluaXRpb24pCisgICAgeworICAgICAgICB2aXNpdFR5cGUodHlwZURlZmluaXRpb24u
dHlwZSgpKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpTdHJ1Y3R1cmVE
ZWZpbml0aW9uJiBzdHJ1Y3R1cmVEZWZpbml0aW9uKQorICAgIHsKKyAgICAgICAgZm9yIChhdXRv
JiBzdHJ1Y3R1cmVFbGVtZW50IDogc3RydWN0dXJlRGVmaW5pdGlvbi5zdHJ1Y3R1cmVFbGVtZW50
cygpKQorICAgICAgICAgICAgdmlzaXQoc3RydWN0dXJlRWxlbWVudCk7CisgICAgfQorCisgICAg
dmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6RW51bWVyYXRpb25EZWZpbml0aW9uJiBlbnVtZXJhdGlv
bkRlZmluaXRpb24pCisgICAgeworICAgICAgICB2aXNpdFR5cGUoZW51bWVyYXRpb25EZWZpbml0
aW9uLnR5cGUoKSk7CisgICAgICAgIGZvciAoYXV0byYgZW51bWVyYXRpb25NZW1iZXIgOiBlbnVt
ZXJhdGlvbkRlZmluaXRpb24uZW51bWVyYXRpb25NZW1iZXJzKCkpCisgICAgICAgICAgICB2aXNp
dChlbnVtZXJhdGlvbk1lbWJlcik7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIHZpc2l0KEFT
VDo6RnVuY3Rpb25EZWZpbml0aW9uJiBmdW5jdGlvbkRlZmluaXRpb24pCisgICAgeworICAgICAg
ICB2aXNpdChzdGF0aWNfY2FzdDxBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24mPihmdW5jdGlvbkRl
ZmluaXRpb24pKTsKKyAgICAgICAgdmlzaXQoZnVuY3Rpb25EZWZpbml0aW9uLmJsb2NrKCkpOwor
ICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFy
YXRpb24mIG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24pCisgICAgeworICAgICAgICB2aXNpdChz
dGF0aWNfY2FzdDxBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24mPihuYXRpdmVGdW5jdGlvbkRlY2xh
cmF0aW9uKSk7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6TmF0aXZlVHlw
ZURlY2xhcmF0aW9uJiBuYXRpdmVUeXBlRGVjbGFyYXRpb24pCisgICAgeworICAgICAgICBmb3Ig
KGF1dG8mIHR5cGVBcmd1bWVudCA6IG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi50eXBlQXJndW1lbnRz
KCkpCisgICAgICAgICAgICB2aXNpdCh0eXBlQXJndW1lbnQpOworICAgIH0KKworICAgIHZpcnR1
YWwgdm9pZCB2aXNpdChBU1Q6OlR5cGVSZWZlcmVuY2UmIHR5cGVSZWZlcmVuY2UpCisgICAgewor
ICAgICAgICBmb3IgKGF1dG8mIHR5cGVBcmd1bWVudCA6IHR5cGVSZWZlcmVuY2UudHlwZUFyZ3Vt
ZW50cygpKQorICAgICAgICAgICAgdmlzaXQodHlwZUFyZ3VtZW50KTsKKyAgICB9CisKKyAgICB2
aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpQb2ludGVyVHlwZSYgcG9pbnRlclR5cGUpCisgICAgewor
ICAgICAgICB2aXNpdChzdGF0aWNfY2FzdDxBU1Q6OlJlZmVyZW5jZVR5cGUmPihwb2ludGVyVHlw
ZSkpOworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6OkFycmF5UmVmZXJlbmNl
VHlwZSYgYXJyYXlSZWZlcmVuY2VUeXBlKQorICAgIHsKKyAgICAgICAgdmlzaXQoc3RhdGljX2Nh
c3Q8QVNUOjpSZWZlcmVuY2VUeXBlJj4oYXJyYXlSZWZlcmVuY2VUeXBlKSk7CisgICAgfQorCisg
ICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6QXJyYXlUeXBlJiBhcnJheVR5cGUpCisgICAgewor
ICAgICAgICB2aXNpdFR5cGUoYXJyYXlUeXBlLnR5cGUoKSk7CisgICAgfQorCisgICAgdmlydHVh
bCB2b2lkIHZpc2l0KEFTVDo6U3RydWN0dXJlRWxlbWVudCYgc3RydWN0dXJlRWxlbWVudCkKKyAg
ICB7CisgICAgICAgIHZpc2l0VHlwZShzdHJ1Y3R1cmVFbGVtZW50LnR5cGUoKSk7CisgICAgICAg
IGlmIChzdHJ1Y3R1cmVFbGVtZW50LnNlbWFudGljKCkpCisgICAgICAgICAgICB2aXNpdCgqc3Ry
dWN0dXJlRWxlbWVudC5zZW1hbnRpYygpKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgdmlz
aXQoQVNUOjpFbnVtZXJhdGlvbk1lbWJlciYgZW51bWVyYXRpb25NZW1iZXIpCisgICAgeworICAg
ICAgICBpZiAoZW51bWVyYXRpb25NZW1iZXIudmFsdWUoKSkKKyAgICAgICAgICAgIHZpc2l0KCpl
bnVtZXJhdGlvbk1lbWJlci52YWx1ZSgpKTsKKyAgICB9CisgICAgCisgICAgdmlydHVhbCB2b2lk
IHZpc2l0KEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbiYgZnVuY3Rpb25EZWNsYXJhdGlvbikKKyAg
ICB7CisgICAgICAgIHZpc2l0KGZ1bmN0aW9uRGVjbGFyYXRpb24uYXR0cmlidXRlQmxvY2soKSk7
CisgICAgICAgIHZpc2l0VHlwZShmdW5jdGlvbkRlY2xhcmF0aW9uLnR5cGUoKSk7CisgICAgICAg
IGZvciAoYXV0byYgcGFyYW1ldGVyIDogZnVuY3Rpb25EZWNsYXJhdGlvbi5wYXJhbWV0ZXJzKCkp
CisgICAgICAgICAgICB2aXNpdChwYXJhbWV0ZXIpOworICAgICAgICBpZiAoZnVuY3Rpb25EZWNs
YXJhdGlvbi5zZW1hbnRpYygpKQorICAgICAgICAgICAgdmlzaXQoKmZ1bmN0aW9uRGVjbGFyYXRp
b24uc2VtYW50aWMoKSk7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6VHlw
ZUFyZ3VtZW50JiB0eXBlQXJndW1lbnQpCisgICAgeworICAgICAgICBXVEY6OnZpc2l0KFdURjo6
bWFrZVZpc2l0b3IoWyZdKEFTVDo6Q29uc3RhbnRFeHByZXNzaW9uJiBjb25zdGFudEV4cHJlc3Np
b24pIHsKKyAgICAgICAgICAgIHZpc2l0KGNvbnN0YW50RXhwcmVzc2lvbik7CisgICAgICAgIH0s
IFsmXShzdGQ6OnVuaXF1ZV9wdHI8QVNUOjpUeXBlUmVmZXJlbmNlPiYgdHlwZVJlZmVyZW5jZSkg
eworICAgICAgICAgICAgdmlzaXQoKnR5cGVSZWZlcmVuY2UpOworICAgICAgICB9KSwgdHlwZUFy
Z3VtZW50KTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpSZWZlcmVuY2VU
eXBlJiByZWZlcmVuY2VUeXBlKQorICAgIHsKKyAgICAgICAgdmlzaXRUeXBlKHJlZmVyZW5jZVR5
cGUuZWxlbWVudFR5cGUoKSk7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6
U2VtYW50aWMmIHNlbWFudGljKQorICAgIHsKKyAgICAgICAgV1RGOjp2aXNpdChXVEY6Om1ha2VW
aXNpdG9yKFsmXShBU1Q6OkJ1aWx0SW5TZW1hbnRpYyYgYnVpbHRJblNlbWFudGljKSB7CisgICAg
ICAgICAgICB2aXNpdChidWlsdEluU2VtYW50aWMpOworICAgICAgICB9LCBbJl0oQVNUOjpSZXNv
dXJjZVNlbWFudGljJiByZXNvdXJjZVNlbWFudGljKSB7CisgICAgICAgICAgICB2aXNpdChyZXNv
dXJjZVNlbWFudGljKTsKKyAgICAgICAgfSwgWyZdKEFTVDo6U3BlY2lhbGl6YXRpb25Db25zdGFu
dFNlbWFudGljJiBzcGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWMpIHsKKyAgICAgICAgICAg
IHZpc2l0KHNwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYyk7CisgICAgICAgIH0sIFsmXShB
U1Q6OlN0YWdlSW5PdXRTZW1hbnRpYyYgc3RhZ2VJbk91dFNlbWFudGljKSB7CisgICAgICAgICAg
ICB2aXNpdChzdGFnZUluT3V0U2VtYW50aWMpOworICAgICAgICB9KSwgc2VtYW50aWMpOworICAg
IH0KKworICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6OkNvbnN0YW50RXhwcmVzc2lvbiYgY29u
c3RhbnRFeHByZXNzaW9uKQorICAgIHsKKyAgICAgICAgV1RGOjp2aXNpdChXVEY6Om1ha2VWaXNp
dG9yKFsmXShBU1Q6OkludGVnZXJMaXRlcmFsJiBpbnRlZ2VyTGl0ZXJhbCkgeworICAgICAgICAg
ICAgdmlzaXQoaW50ZWdlckxpdGVyYWwpOworICAgICAgICB9LCBbJl0oQVNUOjpVbnNpZ25lZElu
dGVnZXJMaXRlcmFsJiB1bnNpZ25lZEludGVnZXJMaXRlcmFsKSB7CisgICAgICAgICAgICB2aXNp
dCh1bnNpZ25lZEludGVnZXJMaXRlcmFsKTsKKyAgICAgICAgfSwgWyZdKEFTVDo6RmxvYXRMaXRl
cmFsJiBmbG9hdExpdGVyYWwpIHsKKyAgICAgICAgICAgIHZpc2l0KGZsb2F0TGl0ZXJhbCk7Cisg
ICAgICAgIH0sIFsmXShBU1Q6Ok51bGxMaXRlcmFsJiBudWxsTGl0ZXJhbCkgeworICAgICAgICAg
ICAgdmlzaXQobnVsbExpdGVyYWwpOworICAgICAgICB9LCBbJl0oQVNUOjpCb29sZWFuTGl0ZXJh
bCYgYm9vbGVhbkxpdGVyYWwpIHsKKyAgICAgICAgICAgIHZpc2l0KGJvb2xlYW5MaXRlcmFsKTsK
KyAgICAgICAgfSwgWyZdKEFTVDo6Q29uc3RhbnRFeHByZXNzaW9uRW51bWVyYXRpb25NZW1iZXJS
ZWZlcmVuY2UmIGNvbnN0YW50RXhwcmVzc2lvbkVudW1lcmF0aW9uTWVtYmVyUmVmZXJlbmNlKSB7
CisgICAgICAgICAgICB2aXNpdChjb25zdGFudEV4cHJlc3Npb25FbnVtZXJhdGlvbk1lbWJlclJl
ZmVyZW5jZSk7CisgICAgICAgIH0pLCBjb25zdGFudEV4cHJlc3Npb24pOworICAgIH0KKworICAg
IHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6OkF0dHJpYnV0ZUJsb2NrJiBhdHRyaWJ1dGVCbG9jaykK
KyAgICB7CisgICAgICAgIGZvciAoYXV0byYgZnVuY3Rpb25BdHRyaWJ1dGUgOiBhdHRyaWJ1dGVC
bG9jaykKKyAgICAgICAgICAgIHZpc2l0KGZ1bmN0aW9uQXR0cmlidXRlKTsKKyAgICB9CisKKyAg
ICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpQYXJhbWV0ZXImIHBhcmFtZXRlcikKKyAgICB7Cisg
ICAgICAgIHZpc2l0VHlwZShwYXJhbWV0ZXIudHlwZSgpKTsKKyAgICAgICAgaWYgKHBhcmFtZXRl
ci5zZW1hbnRpYygpKQorICAgICAgICAgICAgdmlzaXQoKnBhcmFtZXRlci5zZW1hbnRpYygpKTsK
KyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpCdWlsdEluU2VtYW50aWMmKQor
ICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpSZXNvdXJjZVNlbWFu
dGljJikKKyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6U3BlY2lh
bGl6YXRpb25Db25zdGFudFNlbWFudGljJikKKyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCB2
b2lkIHZpc2l0KEFTVDo6U3RhZ2VJbk91dFNlbWFudGljJikKKyAgICB7CisgICAgfQorCisgICAg
dmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6SW50ZWdlckxpdGVyYWwmKQorICAgIHsKKyAgICB9CisK
KyAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpVbnNpZ25lZEludGVnZXJMaXRlcmFsJikKKyAg
ICB7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6RmxvYXRMaXRlcmFsJikK
KyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6TnVsbExpdGVyYWwm
KQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpCb29sZWFuTGl0
ZXJhbCYpCisgICAgeworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6OkNvbnN0
YW50RXhwcmVzc2lvbkVudW1lcmF0aW9uTWVtYmVyUmVmZXJlbmNlJikKKyAgICB7CisgICAgfQor
CisgICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6RnVuY3Rpb25BdHRyaWJ1dGUmIGZ1bmN0aW9u
QXR0cmlidXRlKQorICAgIHsKKyAgICAgICAgV1RGOjp2aXNpdChXVEY6Om1ha2VWaXNpdG9yKFsm
XShBU1Q6Ok51bVRocmVhZHNGdW5jdGlvbkF0dHJpYnV0ZSYgbnVtVGhyZWFkc0Z1bmN0aW9uQXR0
cmlidXRlKSB7CisgICAgICAgICAgICB2aXNpdChudW1UaHJlYWRzRnVuY3Rpb25BdHRyaWJ1dGUp
OworICAgICAgICB9KSwgZnVuY3Rpb25BdHRyaWJ1dGUpOworICAgIH0KKworICAgIHZpcnR1YWwg
dm9pZCB2aXNpdChBU1Q6Ok51bVRocmVhZHNGdW5jdGlvbkF0dHJpYnV0ZSYpCisgICAgeworICAg
IH0KKworICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6OkJsb2NrJiBibG9jaykKKyAgICB7Cisg
ICAgICAgIGZvciAoYXV0byYgc3RhdGVtZW50IDogYmxvY2suc3RhdGVtZW50cygpKQorICAgICAg
ICAgICAgdmlzaXQoKnN0YXRlbWVudCk7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIHZpc2l0
KEFTVDo6U3RhdGVtZW50JiBzdGF0ZW1lbnQpCisgICAgeworICAgICAgICBpZiAoaXM8QVNUOjpC
bG9jaz4oc3RhdGVtZW50KSkKKyAgICAgICAgICAgIHZpc2l0KGRvd25jYXN0PEFTVDo6QmxvY2s+
KHN0YXRlbWVudCkpOworICAgICAgICBlbHNlIGlmIChpczxBU1Q6OkJyZWFrPihzdGF0ZW1lbnQp
KQorICAgICAgICAgICAgdmlzaXQoZG93bmNhc3Q8QVNUOjpCcmVhaz4oc3RhdGVtZW50KSk7Cisg
ICAgICAgIGVsc2UgaWYgKGlzPEFTVDo6Q29udGludWU+KHN0YXRlbWVudCkpCisgICAgICAgICAg
ICB2aXNpdChkb3duY2FzdDxBU1Q6OkNvbnRpbnVlPihzdGF0ZW1lbnQpKTsKKyAgICAgICAgZWxz
ZSBpZiAoaXM8QVNUOjpEb1doaWxlTG9vcD4oc3RhdGVtZW50KSkKKyAgICAgICAgICAgIHZpc2l0
KGRvd25jYXN0PEFTVDo6RG9XaGlsZUxvb3A+KHN0YXRlbWVudCkpOworICAgICAgICBlbHNlIGlm
IChpczxBU1Q6OkVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQ+KHN0YXRlbWVudCkpCisgICAg
ICAgICAgICB2aXNpdChkb3duY2FzdDxBU1Q6OkVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQ+
KHN0YXRlbWVudCkpOworICAgICAgICBlbHNlIGlmIChpczxBU1Q6OkZhbGx0aHJvdWdoPihzdGF0
ZW1lbnQpKQorICAgICAgICAgICAgdmlzaXQoZG93bmNhc3Q8QVNUOjpGYWxsdGhyb3VnaD4oc3Rh
dGVtZW50KSk7CisgICAgICAgIGVsc2UgaWYgKGlzPEFTVDo6Rm9yTG9vcD4oc3RhdGVtZW50KSkK
KyAgICAgICAgICAgIHZpc2l0KGRvd25jYXN0PEFTVDo6Rm9yTG9vcD4oc3RhdGVtZW50KSk7Cisg
ICAgICAgIGVsc2UgaWYgKGlzPEFTVDo6SWZTdGF0ZW1lbnQ+KHN0YXRlbWVudCkpCisgICAgICAg
ICAgICB2aXNpdChkb3duY2FzdDxBU1Q6OklmU3RhdGVtZW50PihzdGF0ZW1lbnQpKTsKKyAgICAg
ICAgZWxzZSBpZiAoaXM8QVNUOjpSZXR1cm4+KHN0YXRlbWVudCkpCisgICAgICAgICAgICB2aXNp
dChkb3duY2FzdDxBU1Q6OlJldHVybj4oc3RhdGVtZW50KSk7CisgICAgICAgIGVsc2UgaWYgKGlz
PEFTVDo6U3dpdGNoQ2FzZT4oc3RhdGVtZW50KSkKKyAgICAgICAgICAgIHZpc2l0KGRvd25jYXN0
PEFTVDo6U3dpdGNoQ2FzZT4oc3RhdGVtZW50KSk7CisgICAgICAgIGVsc2UgaWYgKGlzPEFTVDo6
U3dpdGNoU3RhdGVtZW50PihzdGF0ZW1lbnQpKQorICAgICAgICAgICAgdmlzaXQoZG93bmNhc3Q8
QVNUOjpTd2l0Y2hTdGF0ZW1lbnQ+KHN0YXRlbWVudCkpOworICAgICAgICBlbHNlIGlmIChpczxB
U1Q6OlRyYXA+KHN0YXRlbWVudCkpCisgICAgICAgICAgICB2aXNpdChkb3duY2FzdDxBU1Q6OlRy
YXA+KHN0YXRlbWVudCkpOworICAgICAgICBlbHNlIGlmIChpczxBU1Q6OlZhcmlhYmxlRGVjbGFy
YXRpb25zU3RhdGVtZW50PihzdGF0ZW1lbnQpKQorICAgICAgICAgICAgdmlzaXQoZG93bmNhc3Q8
QVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudD4oc3RhdGVtZW50KSk7CisgICAgICAg
IGVsc2UgeworICAgICAgICAgICAgQVNTRVJUKGlzPEFTVDo6V2hpbGVMb29wPihzdGF0ZW1lbnQp
KTsKKyAgICAgICAgICAgIHZpc2l0KGRvd25jYXN0PEFTVDo6V2hpbGVMb29wPihzdGF0ZW1lbnQp
KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6OkJyZWFr
JikKKyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6Q29udGludWUm
KQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpEb1doaWxlTG9v
cCYgZG9XaGlsZUxvb3ApCisgICAgeworICAgICAgICB2aXNpdChkb1doaWxlTG9vcC5ib2R5KCkp
OworICAgICAgICB2aXNpdChkb1doaWxlTG9vcC5jb25kaXRpb25hbCgpKTsKKyAgICB9CisKKyAg
ICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpFeHByZXNzaW9uJiBleHByZXNzaW9uKQorICAgIHsK
KyAgICAgICAgaWYgKGlzPEFTVDo6QXNzaWdubWVudEV4cHJlc3Npb24+KGV4cHJlc3Npb24pKQor
ICAgICAgICAgICAgdmlzaXQoZG93bmNhc3Q8QVNUOjpBc3NpZ25tZW50RXhwcmVzc2lvbj4oZXhw
cmVzc2lvbikpOworICAgICAgICBlbHNlIGlmIChpczxBU1Q6OkJvb2xlYW5MaXRlcmFsPihleHBy
ZXNzaW9uKSkKKyAgICAgICAgICAgIHZpc2l0KGRvd25jYXN0PEFTVDo6Qm9vbGVhbkxpdGVyYWw+
KGV4cHJlc3Npb24pKTsKKyAgICAgICAgZWxzZSBpZiAoaXM8QVNUOjpDYWxsRXhwcmVzc2lvbj4o
ZXhwcmVzc2lvbikpCisgICAgICAgICAgICB2aXNpdChkb3duY2FzdDxBU1Q6OkNhbGxFeHByZXNz
aW9uPihleHByZXNzaW9uKSk7CisgICAgICAgIGVsc2UgaWYgKGlzPEFTVDo6Q29tbWFFeHByZXNz
aW9uPihleHByZXNzaW9uKSkKKyAgICAgICAgICAgIHZpc2l0KGRvd25jYXN0PEFTVDo6Q29tbWFF
eHByZXNzaW9uPihleHByZXNzaW9uKSk7CisgICAgICAgIGVsc2UgaWYgKGlzPEFTVDo6RGVyZWZl
cmVuY2VFeHByZXNzaW9uPihleHByZXNzaW9uKSkKKyAgICAgICAgICAgIHZpc2l0KGRvd25jYXN0
PEFTVDo6RGVyZWZlcmVuY2VFeHByZXNzaW9uPihleHByZXNzaW9uKSk7CisgICAgICAgIGVsc2Ug
aWYgKGlzPEFTVDo6RmxvYXRMaXRlcmFsPihleHByZXNzaW9uKSkKKyAgICAgICAgICAgIHZpc2l0
KGRvd25jYXN0PEFTVDo6RmxvYXRMaXRlcmFsPihleHByZXNzaW9uKSk7CisgICAgICAgIGVsc2Ug
aWYgKGlzPEFTVDo6SW50ZWdlckxpdGVyYWw+KGV4cHJlc3Npb24pKQorICAgICAgICAgICAgdmlz
aXQoZG93bmNhc3Q8QVNUOjpJbnRlZ2VyTGl0ZXJhbD4oZXhwcmVzc2lvbikpOworICAgICAgICBl
bHNlIGlmIChpczxBU1Q6OkxvZ2ljYWxFeHByZXNzaW9uPihleHByZXNzaW9uKSkKKyAgICAgICAg
ICAgIHZpc2l0KGRvd25jYXN0PEFTVDo6TG9naWNhbEV4cHJlc3Npb24+KGV4cHJlc3Npb24pKTsK
KyAgICAgICAgZWxzZSBpZiAoaXM8QVNUOjpMb2dpY2FsTm90RXhwcmVzc2lvbj4oZXhwcmVzc2lv
bikpCisgICAgICAgICAgICB2aXNpdChkb3duY2FzdDxBU1Q6OkxvZ2ljYWxOb3RFeHByZXNzaW9u
PihleHByZXNzaW9uKSk7CisgICAgICAgIGVsc2UgaWYgKGlzPEFTVDo6TWFrZUFycmF5UmVmZXJl
bmNlRXhwcmVzc2lvbj4oZXhwcmVzc2lvbikpCisgICAgICAgICAgICB2aXNpdChkb3duY2FzdDxB
U1Q6Ok1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24+KGV4cHJlc3Npb24pKTsKKyAgICAgICAg
ZWxzZSBpZiAoaXM8QVNUOjpNYWtlUG9pbnRlckV4cHJlc3Npb24+KGV4cHJlc3Npb24pKQorICAg
ICAgICAgICAgdmlzaXQoZG93bmNhc3Q8QVNUOjpNYWtlUG9pbnRlckV4cHJlc3Npb24+KGV4cHJl
c3Npb24pKTsKKyAgICAgICAgZWxzZSBpZiAoaXM8QVNUOjpOdWxsTGl0ZXJhbD4oZXhwcmVzc2lv
bikpCisgICAgICAgICAgICB2aXNpdChkb3duY2FzdDxBU1Q6Ok51bGxMaXRlcmFsPihleHByZXNz
aW9uKSk7CisgICAgICAgIGVsc2UgaWYgKGlzPEFTVDo6UHJvcGVydHlBY2Nlc3NFeHByZXNzaW9u
PihleHByZXNzaW9uKSkKKyAgICAgICAgICAgIHZpc2l0KGRvd25jYXN0PEFTVDo6UHJvcGVydHlB
Y2Nlc3NFeHByZXNzaW9uPihleHByZXNzaW9uKSk7CisgICAgICAgIGVsc2UgaWYgKGlzPEFTVDo6
UmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbj4oZXhwcmVzc2lvbikpCisgICAgICAgICAgICB2aXNp
dChkb3duY2FzdDxBU1Q6OlJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24+KGV4cHJlc3Npb24pKTsK
KyAgICAgICAgZWxzZSBpZiAoaXM8QVNUOjpUZXJuYXJ5RXhwcmVzc2lvbj4oZXhwcmVzc2lvbikp
CisgICAgICAgICAgICB2aXNpdChkb3duY2FzdDxBU1Q6OlRlcm5hcnlFeHByZXNzaW9uPihleHBy
ZXNzaW9uKSk7CisgICAgICAgIGVsc2UgaWYgKGlzPEFTVDo6VW5zaWduZWRJbnRlZ2VyTGl0ZXJh
bD4oZXhwcmVzc2lvbikpCisgICAgICAgICAgICB2aXNpdChkb3duY2FzdDxBU1Q6OlVuc2lnbmVk
SW50ZWdlckxpdGVyYWw+KGV4cHJlc3Npb24pKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAg
ICBBU1NFUlQoaXM8QVNUOjpWYXJpYWJsZVJlZmVyZW5jZT4oZXhwcmVzc2lvbikpOworICAgICAg
ICAgICAgdmlzaXQoZG93bmNhc3Q8QVNUOjpWYXJpYWJsZVJlZmVyZW5jZT4oZXhwcmVzc2lvbikp
OworICAgICAgICB9CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6RWZmZWN0
ZnVsRXhwcmVzc2lvblN0YXRlbWVudCYgZWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVudCkKKyAg
ICB7CisgICAgICAgIHZpc2l0KGVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQuZWZmZWN0ZnVs
RXhwcmVzc2lvbigpKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpGYWxs
dGhyb3VnaCYpCisgICAgeworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6OkZv
ckxvb3AmIGZvckxvb3ApCisgICAgeworICAgICAgICBXVEY6OnZpc2l0KFdURjo6bWFrZVZpc2l0
b3IoWyZdKEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQmIHZhcmlhYmxlRGVjbGFy
YXRpb25zU3RhdGVtZW50KSB7CisgICAgICAgICAgICB2aXNpdCh2YXJpYWJsZURlY2xhcmF0aW9u
c1N0YXRlbWVudCk7CisgICAgICAgIH0sIFsmXShzdGQ6OnVuaXF1ZV9wdHI8QVNUOjpFeHByZXNz
aW9uPiYgZXhwcmVzc2lvbikgeworICAgICAgICAgICAgdmlzaXQoKmV4cHJlc3Npb24pOworICAg
ICAgICB9KSwgZm9yTG9vcC5pbml0aWFsaXphdGlvbigpKTsKKyAgICAgICAgaWYgKGZvckxvb3Au
Y29uZGl0aW9uKCkpCisgICAgICAgICAgICB2aXNpdCgqZm9yTG9vcC5jb25kaXRpb24oKSk7Cisg
ICAgICAgIGlmIChmb3JMb29wLmluY3JlbWVudCgpKQorICAgICAgICAgICAgdmlzaXQoKmZvckxv
b3AuaW5jcmVtZW50KCkpOworICAgICAgICB2aXNpdChmb3JMb29wLmJvZHkoKSk7CisgICAgfQor
CisgICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6SWZTdGF0ZW1lbnQmIGlmU3RhdGVtZW50KQor
ICAgIHsKKyAgICAgICAgdmlzaXQoaWZTdGF0ZW1lbnQuY29uZGl0aW9uYWwoKSk7CisgICAgICAg
IHZpc2l0KGlmU3RhdGVtZW50LmJvZHkoKSk7CisgICAgICAgIGlmIChpZlN0YXRlbWVudC5lbHNl
Qm9keSgpKQorICAgICAgICAgICAgdmlzaXQoKmlmU3RhdGVtZW50LmVsc2VCb2R5KCkpOworICAg
IH0KKworICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6OlJldHVybiYgcmV0dXJuU3RhdGVtZW50
KQorICAgIHsKKyAgICAgICAgaWYgKHJldHVyblN0YXRlbWVudC52YWx1ZSgpKQorICAgICAgICAg
ICAgdmlzaXQoKnJldHVyblN0YXRlbWVudC52YWx1ZSgpKTsKKyAgICB9CisKKyAgICB2aXJ0dWFs
IHZvaWQgdmlzaXQoQVNUOjpTd2l0Y2hDYXNlJiBzd2l0Y2hDYXNlKQorICAgIHsKKyAgICAgICAg
aWYgKHN3aXRjaENhc2UudmFsdWUoKSkKKyAgICAgICAgICAgIHZpc2l0KCpzd2l0Y2hDYXNlLnZh
bHVlKCkpOworICAgICAgICB2aXNpdChzd2l0Y2hDYXNlLmJsb2NrKCkpOworICAgIH0KKworICAg
IHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6OlN3aXRjaFN0YXRlbWVudCYgc3dpdGNoU3RhdGVtZW50
KQorICAgIHsKKyAgICAgICAgdmlzaXQoc3dpdGNoU3RhdGVtZW50LnZhbHVlKCkpOworICAgICAg
ICBmb3IgKGF1dG8mIHN3aXRjaENhc2UgOiBzd2l0Y2hTdGF0ZW1lbnQuc3dpdGNoQ2FzZXMoKSkK
KyAgICAgICAgICAgIHZpc2l0KHN3aXRjaENhc2UpOworICAgIH0KKworICAgIHZpcnR1YWwgdm9p
ZCB2aXNpdChBU1Q6OlRyYXAmKQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgdmlz
aXQoQVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudCYgdmFyaWFibGVEZWNsYXJhdGlv
bnNTdGF0ZW1lbnQpCisgICAgeworICAgICAgICBmb3IgKGF1dG8mIHZhcmlhYmxlRGVjbGFyYXRp
b24gOiB2YXJpYWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudC52YXJpYWJsZURlY2xhcmF0aW9ucygp
KQorICAgICAgICAgICAgdmlzaXQodmFyaWFibGVEZWNsYXJhdGlvbik7CisgICAgfQorCisgICAg
dmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6V2hpbGVMb29wJiB3aGlsZUxvb3ApCisgICAgeworICAg
ICAgICB2aXNpdCh3aGlsZUxvb3AuY29uZGl0aW9uYWwoKSk7CisgICAgICAgIHZpc2l0KHdoaWxl
TG9vcC5ib2R5KCkpOworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6OlZhcmlh
YmxlRGVjbGFyYXRpb24mIHZhcmlhYmxlRGVjbGFyYXRpb24pCisgICAgeworICAgICAgICB2aXNp
dFR5cGUodmFyaWFibGVEZWNsYXJhdGlvbi50eXBlKCkpOworICAgICAgICBpZiAodmFyaWFibGVE
ZWNsYXJhdGlvbi5zZW1hbnRpYygpKQorICAgICAgICAgICAgdmlzaXQoKnZhcmlhYmxlRGVjbGFy
YXRpb24uc2VtYW50aWMoKSk7CisgICAgICAgIGlmICh2YXJpYWJsZURlY2xhcmF0aW9uLmluaXRp
YWxpemVyKCkpCisgICAgICAgICAgICB2aXNpdCgqdmFyaWFibGVEZWNsYXJhdGlvbi5pbml0aWFs
aXplcigpKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpBc3NpZ25tZW50
RXhwcmVzc2lvbiYgYXNzaWdubWVudEV4cHJlc3Npb24pCisgICAgeworICAgICAgICB2aXNpdChh
c3NpZ25tZW50RXhwcmVzc2lvbi5sZWZ0KCkpOworICAgICAgICB2aXNpdChhc3NpZ25tZW50RXhw
cmVzc2lvbi5yaWdodCgpKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpD
YWxsRXhwcmVzc2lvbiYgY2FsbEV4cHJlc3Npb24pCisgICAgeworICAgICAgICBmb3IgKGF1dG8m
IGFyZ3VtZW50IDogY2FsbEV4cHJlc3Npb24uYXJndW1lbnRzKCkpCisgICAgICAgICAgICB2aXNp
dCgqYXJndW1lbnQpOworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6OkNvbW1h
RXhwcmVzc2lvbiYgY29tbWFFeHByZXNzaW9uKQorICAgIHsKKyAgICAgICAgZm9yIChhdXRvJiBl
eHByZXNzaW9uIDogY29tbWFFeHByZXNzaW9uLmxpc3QoKSkKKyAgICAgICAgICAgIHZpc2l0KCpl
eHByZXNzaW9uKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpEZXJlZmVy
ZW5jZUV4cHJlc3Npb24mIGRlcmVmZXJlbmNlRXhwcmVzc2lvbikKKyAgICB7CisgICAgICAgIHZp
c2l0KGRlcmVmZXJlbmNlRXhwcmVzc2lvbi5wb2ludGVyKCkpOworICAgIH0KKworICAgIHZpcnR1
YWwgdm9pZCB2aXNpdChBU1Q6OkxvZ2ljYWxFeHByZXNzaW9uJiBsb2dpY2FsRXhwcmVzc2lvbikK
KyAgICB7CisgICAgICAgIHZpc2l0KGxvZ2ljYWxFeHByZXNzaW9uLmxlZnQoKSk7CisgICAgICAg
IHZpc2l0KGxvZ2ljYWxFeHByZXNzaW9uLnJpZ2h0KCkpOworICAgIH0KKworICAgIHZpcnR1YWwg
dm9pZCB2aXNpdChBU1Q6OkxvZ2ljYWxOb3RFeHByZXNzaW9uJiBsb2dpY2FsTm90RXhwcmVzc2lv
bikKKyAgICB7CisgICAgICAgIHZpc2l0KGxvZ2ljYWxOb3RFeHByZXNzaW9uLm9wZXJhbmQoKSk7
CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6TWFrZUFycmF5UmVmZXJlbmNl
RXhwcmVzc2lvbiYgbWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbikKKyAgICB7CisgICAgICAg
IHZpc2l0KG1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24ubFZhbHVlKCkpOworICAgIH0KKwor
ICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6Ok1ha2VQb2ludGVyRXhwcmVzc2lvbiYgbWFrZVBv
aW50ZXJFeHByZXNzaW9uKQorICAgIHsKKyAgICAgICAgdmlzaXQobWFrZVBvaW50ZXJFeHByZXNz
aW9uLmxWYWx1ZSgpKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpQcm9w
ZXJ0eUFjY2Vzc0V4cHJlc3Npb24mIHByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbikKKyAgICB7Cisg
ICAgICAgIHZpc2l0KHByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbi5iYXNlKCkpOworICAgIH0KKwor
ICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6OlJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24mIHJl
YWRNb2RpZnlXcml0ZUV4cHJlc3Npb24pCisgICAgeworICAgICAgICB2aXNpdChyZWFkTW9kaWZ5
V3JpdGVFeHByZXNzaW9uLmxWYWx1ZSgpKTsKKyAgICAgICAgdmlzaXQocmVhZE1vZGlmeVdyaXRl
RXhwcmVzc2lvbi5vbGRWYWx1ZSgpKTsKKyAgICAgICAgdmlzaXQocmVhZE1vZGlmeVdyaXRlRXhw
cmVzc2lvbi5uZXdWYWx1ZSgpKTsKKyAgICAgICAgdmlzaXQocmVhZE1vZGlmeVdyaXRlRXhwcmVz
c2lvbi5uZXdWYWx1ZUV4cHJlc3Npb24oKSk7CisgICAgICAgIHZpc2l0KHJlYWRNb2RpZnlXcml0
ZUV4cHJlc3Npb24ucmVzdWx0RXhwcmVzc2lvbigpKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZv
aWQgdmlzaXQoQVNUOjpUZXJuYXJ5RXhwcmVzc2lvbiYgdGVybmFyeUV4cHJlc3Npb24pCisgICAg
eworICAgICAgICB2aXNpdCh0ZXJuYXJ5RXhwcmVzc2lvbi5wcmVkaWNhdGUoKSk7CisgICAgICAg
IHZpc2l0KHRlcm5hcnlFeHByZXNzaW9uLmJvZHlFeHByZXNzaW9uKCkpOworICAgICAgICB2aXNp
dCh0ZXJuYXJ5RXhwcmVzc2lvbi5lbHNlRXhwcmVzc2lvbigpKTsKKyAgICB9CisKKyAgICB2aXJ0
dWFsIHZvaWQgdmlzaXQoQVNUOjpWYXJpYWJsZVJlZmVyZW5jZSYpCisgICAgeworICAgIH0KKwor
ICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6OkFub255bW91c1ZhcmlhYmxlRGVjbGFyYXRpb24m
KQorICAgIHsKKyAgICB9Cit9OworCit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4
IDU0MzhmNGRlYWIzLi4yZWYyYmQyOTE5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291
cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTMwMyw2ICszMDMs
OSBAQCBNb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwu
Y3BwCiBNb2R1bGVzL3dlYmdwdS9ET01XaW5kb3dXZWJHUFUuY3BwCiBNb2R1bGVzL3dlYmdwdS9X
SExTTC9XSExTTExleGVyLmNwcAogTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQYXJzZXIuY3Bw
CitNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFByZXBhcmUuY3BwCitNb2R1bGVzL3dlYmdwdS9X
SExTTC9XSExTTE5hbWVSZXNvbHZlci5jcHAKK01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExT
TEFTVFR5cGVBcmd1bWVudC5jcHAKIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVS5jcHAKIE1vZHVsZXMv
d2ViZ3B1L1dlYkdQVUFkYXB0ZXIuY3BwCiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVCaW5kR3JvdXBM
YXlvdXQuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKaW5kZXggYjVhZWE4M2I5MDAuLmQzZTIxOTBlZmU3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMzI3OSw2ICsx
MzI3OSwxMiBAQAogCQlDMjgwODMzRDFDNkRDMjJDMDAxNDUxQjYgLyogSlNGb250RmFjZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBKU0ZvbnRGYWNlLmNwcDsgcGF0
aCA9IERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNGb250RmFjZS5jcHA7IHNvdXJjZVRyZWUgPSBC
VUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCUMyODA4MzNFMUM2REMyMkMwMDE0NTFCNiAvKiBKU0Zv
bnRGYWNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEpTRm9udEZhY2UuaDsg
cGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNGb250RmFjZS5oOyBzb3VyY2VUcmVlID0g
QlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQlDMjgwQjNGRDFFRjQ2MDg5MDBEMzUxMzUgLyogRm9u
dEZhbWlseVNwZWNpZmljYXRpb25OdWxsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEZvbnRGYW1pbHlTcGVjaWZpY2F0aW9uTnVsbC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUMyODhDNzI3MjFDOEM2RUYwMDJERjVDQSAvKiBXSExTTFZpc2l0b3Iu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xWaXNpdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUMyODhDNzI5MjFDOENBNTAwMDJERjVDQSAvKiBXSExTTFByZXBhcmUuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gV0hMU0xQcmVwYXJlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQzI4OEM3MkEyMUM4Q0E1MDAwMkRGNUNBIC8qIFdITFNMUHJlcGFyZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXSExTTFByZXBhcmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzI4
OEM3MkIyMUM4Q0NDMjAwMkRGNUNBIC8qIFdITFNMTmFtZVJlc29sdmVyLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFdITFNMTmFtZVJlc29sdmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQzI4OEM3MkMyMUM4Q0NDMjAwMkRGNUNBIC8qIFdITFNMTmFtZVJlc29sdmVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdITFNMTmFtZVJlc29sdmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUMyODhDNzJEMjFDOTkxREEwMDJERjVDQSAvKiBXSExTTEFTVFR5cGVBcmd1bWVudC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXSExTTEFTVFR5cGVBcmd1bWVudC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMyQUIwQUY0MUU2QjNDNkMwMDEzNDhDNSAvKiBGb250U2Vs
ZWN0aW9uQWxnb3JpdGhtLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEZvbnRTZWxlY3Rpb25BbGdvcml0aG0uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlDMkFCMEFGNTFFNkIzQzZDMDAxMzQ4QzUgLyogRm9udFNlbGVjdGlvbkFsZ29yaXRobS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGb250U2VsZWN0aW9uQWxnb3JpdGhtLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMyQUIwQjAzMUU2REU5MkMwMDEzNDhDNSAv
KiBGb250U2VsZWN0aW9uVmFsdWVJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZvbnRTZWxlY3Rp
b25WYWx1ZUlubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI1MzE5LDYg
KzI1MzI1LDExIEBACiAJCQkJQzJFQ0VCNEQyMUI2M0NCQjAwOEY4REU5IC8qIFdITFNMUGFyc2Vy
LmggKi8sCiAJCQkJQzJFQ0VCNUUyMUI2NEQ2RjAwOEY4REU5IC8qIFdITFNMUHJvZ3JhbS5oICov
LAogCQkJCUMyNzRGMTQzMjFDMzM1RkYwMDM0MTBCRCAvKiBXSExTTFN0YW5kYXJkTGlicmFyeS50
eHQgKi8sCisJCQkJQzI4OEM3MjcyMUM4QzZFRjAwMkRGNUNBIC8qIFdITFNMVmlzaXRvci5oICov
LAorCQkJCUMyODhDNzI5MjFDOENBNTAwMDJERjVDQSAvKiBXSExTTFByZXBhcmUuY3BwICovLAor
CQkJCUMyODhDNzJBMjFDOENBNTAwMDJERjVDQSAvKiBXSExTTFByZXBhcmUuaCAqLywKKwkJCQlD
Mjg4QzcyQjIxQzhDQ0MyMDAyREY1Q0EgLyogV0hMU0xOYW1lUmVzb2x2ZXIuY3BwICovLAorCQkJ
CUMyODhDNzJDMjFDOENDQzIwMDJERjVDQSAvKiBXSExTTE5hbWVSZXNvbHZlci5oICovLAogCQkJ
KTsKIAkJCXBhdGggPSBXSExTTDsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0yNTM5
NCw2ICsyNTQwNSw3IEBACiAJCQkJQzIyRjc2REYyMUMyNkY0NzAwQzU0MzRFIC8qIFdITFNMQVNU
VmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQuaCAqLywKIAkJCQlDMjJGNzZDQzIxQzBBOUE3
MDBDNTQzNEUgLyogV0hMU0xBU1RWYXJpYWJsZVJlZmVyZW5jZS5oICovLAogCQkJCTFDODA1OTky
MjFDMUZEREEwMDZCMDkwNiAvKiBXSExTTEFTVFdoaWxlTG9vcC5oICovLAorCQkJCUMyODhDNzJE
MjFDOTkxREEwMDJERjVDQSAvKiBXSExTTEFTVFR5cGVBcmd1bWVudC5jcHAgKi8sCiAJCQkpOwog
CQkJcGF0aCA9IEFTVDsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVU2hhZGVyTW9kdWxl
TWV0YWwubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BV
U2hhZGVyTW9kdWxlTWV0YWwubW0KaW5kZXggMTUzZmU2YWI2OTcuLjUxM2Y1YTk2ZTY0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVU2hh
ZGVyTW9kdWxlTWV0YWwubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3B1L2NvY29hL0dQVVNoYWRlck1vZHVsZU1ldGFsLm1tCkBAIC0zMSw5ICszMSw3IEBACiAjaW1w
b3J0ICJHUFVEZXZpY2UuaCIKICNpbXBvcnQgIkdQVVNoYWRlck1vZHVsZURlc2NyaXB0b3IuaCIK
ICNpbXBvcnQgIkxvZ2dpbmcuaCIKLSNpbXBvcnQgIldITFNMUGFyc2VyLmgiCi0jaW1wb3J0ICJX
SExTTFByb2dyYW0uaCIKLSNpbXBvcnQgIldITFNMU3RhbmRhcmRMaWJyYXJ5LmgiCisjaW1wb3J0
ICJXSExTTFByZXBhcmUuaCIKIAogI2ltcG9ydCA8TWV0YWwvTWV0YWwuaD4KICNpbXBvcnQgPHd0
Zi9CbG9ja09iakNFeGNlcHRpb25zLmg+CkBAIC01MCwxMSArNDgsNyBAQCBSZWZQdHI8R1BVU2hh
ZGVyTW9kdWxlPiBHUFVTaGFkZXJNb2R1bGU6OmNyZWF0ZShjb25zdCBHUFVEZXZpY2UmIGRldmlj
ZSwgR1BVU2hhZAogICAgIFN0cmluZyBjb2RlID0gZGVzY3JpcHRvci5jb2RlOwogCiAgICAgaWYg
KGRlc2NyaXB0b3IuaXNXSExTTCkgewotICAgICAgICBXSExTTDo6UHJvZ3JhbSBwcm9ncmFtOwot
ICAgICAgICBXSExTTDo6UGFyc2VyIHBhcnNlcjsKLSAgICAgICAgYXV0byBzdGFuZGFyZExpYnJh
cnkgPSBTdHJpbmc6OmZyb21VVEY4KFdITFNMU3RhbmRhcmRMaWJyYXJ5LCBzaXplb2YoV0hMU0xT
dGFuZGFyZExpYnJhcnkpKTsKLSAgICAgICAgaWYgKHBhcnNlci5wYXJzZShwcm9ncmFtLCBzdGFu
ZGFyZExpYnJhcnksIFdITFNMOjpQYXJzZXI6Ok1vZGU6OlN0YW5kYXJkTGlicmFyeSkgPT0gV1RG
OjpudWxsb3B0Ci0gICAgICAgICAgICAmJiBwYXJzZXIucGFyc2UocHJvZ3JhbSwgZGVzY3JpcHRv
ci5jb2RlLCBXSExTTDo6UGFyc2VyOjpNb2RlOjpVc2VyKSA9PSBXVEY6Om51bGxvcHQpCisgICAg
ICAgIGlmIChXSExTTDo6cHJlcGFyZShkZXNjcmlwdG9yLmNvZGUpKQogICAgICAgICAgICAgY29k
ZSA9ICIiOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>358011</attachid>
            <date>2018-12-21 18:56:41 -0800</date>
            <delta_ts>2019-01-11 00:11:59 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>94345</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">Y29tbWl0IDBkMDQ4MWM3MGQ5NmI3ZDJjYTI2MTZmYmMwMDJhZjUzZjE1NzNmODcKQXV0aG9yOiBN
eWxlcyBDLiBNYXhmaWVsZCA8bW1heGZpZWxkQGFwcGxlLmNvbT4KRGF0ZTogICBGcmkgRGVjIDIx
IDE4OjU2OjA3IDIwMTggLTA4MDAKCiAgICBWaXNpdG9yCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGE5NzMxMThm
NmU4Li4zOGQ4MWVmYmE3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5NCBAQAorMjAxOC0xMi0y
MSAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgorCisgICAgICAgIFtX
SExTTF0gQWRkIGEgVmlzaXRvciBjbGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTkyODI2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBleHBvc2VzIGEgYnVuY2ggb2YgdGhlIHByaXZh
dGUgbWVtYmVycyBvZiBXSExTTCdzIEFTVCBub2RlcyBzbyB0aGF0IFZpc2l0b3IgY2FuIHJlY3Vy
c2Ugb24gY29uc3RpdHVlbnQgbm9kZXMuCisgICAgICAgIEl0IGFsc28gd3JpdGVzIHRoZSByZWN1
cnNpb24gaW4gVmlzaXRvci5oLiBUaGlzIGlzIGEgdmlydHVhbCBiYXNlIGNsYXNzIHRoYXQgZ2V0
cyBzdWJjbGFzc2VkIGZvciBjb21waWxlciBwYXNzZXMuCisKKyAgICAgICAgSSd2ZSBzcGxpdCB0
aGlzIHBhcnQgaW50byBpdHMgb3duIHBhdGNoIHRvIGFpZCByZXZpZXdpbmcgb2YgdGhlIGNvbXBp
bGVyLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIGl0J3Mgbm90IGhvb2tlZCB1cCB5
ZXQuCisKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xBcnJheVJlZmVy
ZW5jZVR5cGUuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xBcnJh
eVR5cGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkFycmF5VHlwZTo6dHlwZSk6
CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQXNzaWdubWVudEV4cHJl
c3Npb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkFzc2lnbm1lbnRFeHByZXNz
aW9uOjpsZWZ0KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkFzc2lnbm1lbnRFeHBy
ZXNzaW9uOjpyaWdodCk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNM
QmxvY2suaDoKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkJsb2NrOjpCbG9jayk6Cisg
ICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpCbG9jazo6c3RhdGVtZW50cyk6CisgICAgICAg
ICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQm9vbGVhbkxpdGVyYWwuaDoKKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xCcmVhay5oOgorICAgICAgICAqIE1v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTENhbGxFeHByZXNzaW9uLmg6CisgICAgICAgIChX
ZWJDb3JlOjpXSExTTDo6QVNUOjpDYWxsRXhwcmVzc2lvbjo6YXJndW1lbnRzKToKKyAgICAgICAg
KiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xDb21tYUV4cHJlc3Npb24uaDoKKyAgICAg
ICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkNvbW1hRXhwcmVzc2lvbjo6bGlzdCk6CisgICAgICAg
ICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQ29uc3RhbnRFeHByZXNzaW9uLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpDb25zdGFudEV4cHJlc3Npb246OkNvbnN0YW50
RXhwcmVzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpDb25zdGFudEV4cHJl
c3Npb246OnZpc2l0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xD
b250aW51ZS5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTERlcmVm
ZXJlbmNlRXhwcmVzc2lvbi5oOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6RGVyZWZl
cmVuY2VFeHByZXNzaW9uOjpwb2ludGVyKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xEb1doaWxlTG9vcC5oOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6
RG9XaGlsZUxvb3A6OmJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6RG9XaGls
ZUxvb3A6OmNvbmRpdGlvbmFsKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1Qv
V0hMU0xFZmZlY3RmdWxFeHByZXNzaW9uU3RhdGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpX
SExTTDo6QVNUOjpFZmZlY3RmdWxFeHByZXNzaW9uU3RhdGVtZW50OjplZmZlY3RmdWxFeHByZXNz
aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xFbnVtZXJhdGlv
bkRlZmluaXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkVudW1lcmF0aW9u
RGVmaW5pdGlvbjo6RW51bWVyYXRpb25EZWZpbml0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OldI
TFNMOjpBU1Q6OkVudW1lcmF0aW9uRGVmaW5pdGlvbjo6dHlwZSk6CisgICAgICAgIChXZWJDb3Jl
OjpXSExTTDo6QVNUOjpFbnVtZXJhdGlvbkRlZmluaXRpb246OmVudW1lcmF0aW9uTWVtYmVycyk6
CisgICAgICAgICgpOiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTEVudW1lcmF0aW9uTWVtYmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNU
OjpFbnVtZXJhdGlvbk1lbWJlcjo6dmFsdWUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dI
TFNML0FTVC9XSExTTEV4cHJlc3Npb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6
OkV4cHJlc3Npb246OmlzQXNzaWdubWVudEV4cHJlc3Npb24gY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6V0hMU0w6OkFTVDo6RXhwcmVzc2lvbjo6aXNCb29sZWFuTGl0ZXJhbCBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpFeHByZXNzaW9uOjppc0NhbGxFeHByZXNzaW9u
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkV4cHJlc3Npb246OmlzQ29t
bWFFeHByZXNzaW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkV4cHJl
c3Npb246OmlzRGVyZWZlcmVuY2VFeHByZXNzaW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OldITFNMOjpBU1Q6OkV4cHJlc3Npb246OmlzRmxvYXRMaXRlcmFsIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OldITFNMOjpBU1Q6OkV4cHJlc3Npb246OmlzSW50ZWdlckxpdGVyYWwgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6RXhwcmVzc2lvbjo6aXNMb2dpY2FsRXhw
cmVzc2lvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpFeHByZXNzaW9u
Ojppc0xvZ2ljYWxOb3RFeHByZXNzaW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNM
OjpBU1Q6OkV4cHJlc3Npb246OmlzTWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbiBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpFeHByZXNzaW9uOjppc01ha2VQb2ludGVy
RXhwcmVzc2lvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpFeHByZXNz
aW9uOjppc051bGxMaXRlcmFsIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6
OkV4cHJlc3Npb246OmlzUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OldITFNMOjpBU1Q6OkV4cHJlc3Npb246OmlzUmVhZE1vZGlmeVdyaXRlRXhwcmVz
c2lvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpFeHByZXNzaW9uOjpp
c1Rlcm5hcnlFeHByZXNzaW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6
OkV4cHJlc3Npb246OmlzVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpXSExTTDo6QVNUOjpFeHByZXNzaW9uOjppc1ZhcmlhYmxlUmVmZXJlbmNlIGNvbnN0
KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xGYWxsdGhyb3VnaC5o
OgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEZsb2F0TGl0ZXJhbC5o
OgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEZvckxvb3AuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkZvckxvb3A6OmluaXRpYWxpemF0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkZvckxvb3A6OmNvbmRpdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpXSExTTDo6QVNUOjpGb3JMb29wOjppbmNyZW1lbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6V0hMU0w6OkFTVDo6Rm9yTG9vcDo6Ym9keSk6CisgICAgICAgICogTW9kdWxlcy93ZWJn
cHUvV0hMU0wvQVNUL1dITFNMRnVuY3Rpb25EZWNsYXJhdGlvbi5oOgorICAgICAgICAoV2ViQ29y
ZTo6V0hMU0w6OkFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbjo6YXR0cmlidXRlQmxvY2spOgorICAg
ICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbjo6dHlwZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uOjpwYXJhbWV0
ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb246
OnNlbWFudGljKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xGdW5j
dGlvbkRlZmluaXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OkZ1bmN0aW9u
RGVmaW5pdGlvbjo6YmxvY2spOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9X
SExTTElmU3RhdGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpJZlN0YXRl
bWVudDo6Y29uZGl0aW9uYWwpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6SWZTdGF0
ZW1lbnQ6OmJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6SWZTdGF0ZW1lbnQ6
OmVsc2VCb2R5KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xJbnRl
Z2VyTGl0ZXJhbC5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTExv
Z2ljYWxFeHByZXNzaW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpMb2dpY2Fs
RXhwcmVzc2lvbjo6bGVmdCk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpMb2dpY2Fs
RXhwcmVzc2lvbjo6cmlnaHQpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9X
SExTTExvZ2ljYWxOb3RFeHByZXNzaW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNU
OjpMb2dpY2FsTm90RXhwcmVzc2lvbjo6b3BlcmFuZCk6CisgICAgICAgICogTW9kdWxlcy93ZWJn
cHUvV0hMU0wvQVNUL1dITFNMTWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbi5oOgorICAgICAg
ICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6TWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbjo6bFZh
bHVlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xNYWtlUG9pbnRl
ckV4cHJlc3Npb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6Ok1ha2VQb2ludGVy
RXhwcmVzc2lvbjo6bFZhbHVlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1Qv
V0hMU0xOYXRpdmVUeXBlRGVjbGFyYXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpB
U1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbjo6dHlwZUFyZ3VtZW50cyk6CisgICAgICAgICogTW9k
dWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTnVsbExpdGVyYWwuaDoKKyAgICAgICAgKiBNb2R1
bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xQYXJhbWV0ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6
OldITFNMOjpBU1Q6OlBhcmFtZXRlcjo6dHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6
QVNUOjpQYXJhbWV0ZXI6OnNlbWFudGljKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xQb2ludGVyVHlwZS5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNM
L0FTVC9XSExTTFByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbi5oOgorICAgICAgICAoV2ViQ29yZTo6
V0hMU0w6OkFTVDo6UHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uOjpiYXNlKToKKyAgICAgICAgKiBN
b2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uLmg6
CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9u
OjpsVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6UmVhZE1vZGlmeVdyaXRl
RXhwcmVzc2lvbjo6b2xkVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6UmVh
ZE1vZGlmeVdyaXRlRXhwcmVzc2lvbjo6bmV3VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6V0hM
U0w6OkFTVDo6UmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbjo6bmV3VmFsdWVFeHByZXNzaW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb246
OnJlc3VsdEV4cHJlc3Npb24pOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9X
SExTTFJlZmVyZW5jZVR5cGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlJlZmVy
ZW5jZVR5cGU6OmVsZW1lbnRUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlJl
ZmVyZW5jZVR5cGU6OmVsZW1lbnRUeXBlIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdw
dS9XSExTTC9BU1QvV0hMU0xSZXR1cm4uaDoKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6
OlJldHVybjo6dmFsdWUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExT
TFN0YXRlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6U3RhdGVtZW50Ojpp
c0Jsb2NrIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlN0YXRlbWVudDo6
aXNCcmVhayBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpTdGF0ZW1lbnQ6
OmlzQ29udGludWUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6U3RhdGVt
ZW50Ojppc0RvV2hpbGVMb29wIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6
OlN0YXRlbWVudDo6aXNFZmZlY3RmdWxFeHByZXNzaW9uU3RhdGVtZW50IGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlN0YXRlbWVudDo6aXNGYWxsdGhyb3VnaCBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpTdGF0ZW1lbnQ6OmlzRm9yTG9vcCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpTdGF0ZW1lbnQ6OmlzSWZTdGF0ZW1l
bnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6U3RhdGVtZW50Ojppc1Jl
dHVybiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpTdGF0ZW1lbnQ6Omlz
U3dpdGNoQ2FzZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpTdGF0ZW1l
bnQ6OmlzU3dpdGNoU3RhdGVtZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpB
U1Q6OlN0YXRlbWVudDo6aXNUcmFwIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpB
U1Q6OlN0YXRlbWVudDo6aXNWYXJpYWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudCBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpTdGF0ZW1lbnQ6OmlzV2hpbGVMb29wIGNvbnN0
KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTdHJ1Y3R1cmVEZWZp
bml0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpTdHJ1Y3R1cmVEZWZpbml0
aW9uOjpzdHJ1Y3R1cmVFbGVtZW50cyk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wv
QVNUL1dITFNMU3RydWN0dXJlRWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFT
VDo6U3RydWN0dXJlRWxlbWVudDo6dHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNU
OjpTdHJ1Y3R1cmVFbGVtZW50OjpzZW1hbnRpYyk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUv
V0hMU0wvQVNUL1dITFNMU3dpdGNoQ2FzZS5oOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFT
VDo6U3dpdGNoQ2FzZTo6dmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6U3dp
dGNoQ2FzZTo6YmxvY2spOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExT
TFN3aXRjaFN0YXRlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6U3dpdGNo
U3RhdGVtZW50Ojp2YWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpTd2l0Y2hT
dGF0ZW1lbnQ6OnN3aXRjaENhc2VzKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9B
U1QvV0hMU0xUZXJuYXJ5RXhwcmVzc2lvbi5oOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFT
VDo6VGVybmFyeUV4cHJlc3Npb246OnByZWRpY2F0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXSExT
TDo6QVNUOjpUZXJuYXJ5RXhwcmVzc2lvbjo6Ym9keUV4cHJlc3Npb24pOgorICAgICAgICAoV2Vi
Q29yZTo6V0hMU0w6OkFTVDo6VGVybmFyeUV4cHJlc3Npb246OmVsc2VFeHByZXNzaW9uKToKKyAg
ICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xUcmFwLmg6CisgICAgICAgICog
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVHlwZS5oOgorICAgICAgICAoV2ViQ29yZTo6
V0hMU0w6OkFTVDo6VHlwZTo6aXNUeXBlUmVmZXJlbmNlIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OldITFNMOjpBU1Q6OlR5cGU6OmlzUG9pbnRlclR5cGUgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6V0hMU0w6OkFTVDo6VHlwZTo6aXNBcnJheVJlZmVyZW5jZVR5cGUgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6VHlwZTo6aXNBcnJheVR5cGUgY29uc3QpOgorICAg
ICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFR5cGVBcmd1bWVudC5jcHA6IENv
cGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFN3
aXRjaENhc2UuaC4KKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OmNsb25lKToKKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xUeXBlQXJndW1lbnQuaDoKKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xUeXBlRGVmaW5pdGlvbi5oOgorICAg
ICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6VHlwZURlZmluaXRpb246OnR5cGUpOgorICAgICAg
ICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFR5cGVSZWZlcmVuY2UuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlR5cGVSZWZlcmVuY2U6OnR5cGVBcmd1bWVudHMpOgor
ICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkFTVDo6VHlwZVJlZmVyZW5jZTo6Y2xvbmVUeXBlUmVm
ZXJlbmNlIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xV
bnNpZ25lZEludGVnZXJMaXRlcmFsLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wv
QVNUL1dITFNMVmFyaWFibGVEZWNsYXJhdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6
OkFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbjo6dHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpXSExT
TDo6QVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uOjpzZW1hbnRpYyk6CisgICAgICAgIChXZWJDb3Jl
OjpXSExTTDo6QVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uOjppbml0aWFsaXplcik6CisgICAgICAg
ICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0
ZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpBU1Q6OlZhcmlhYmxlRGVjbGFyYXRp
b25zU3RhdGVtZW50Ojp2YXJpYWJsZURlY2xhcmF0aW9ucyk6CisgICAgICAgICogTW9kdWxlcy93
ZWJncHUvV0hMU0wvQVNUL1dITFNMVmFyaWFibGVSZWZlcmVuY2UuaDoKKyAgICAgICAgKiBNb2R1
bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xXaGlsZUxvb3AuaDoKKyAgICAgICAgKFdlYkNvcmU6
OldITFNMOjpBU1Q6OldoaWxlTG9vcDo6Y29uZGl0aW9uYWwpOgorICAgICAgICAoV2ViQ29yZTo6
V0hMU0w6OkFTVDo6V2hpbGVMb29wOjpib2R5KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9X
SExTTC9XSExTTE5hbWVSZXNvbHZlci5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFR5cGUuaC4KKyAgICAgICAgKFdlYkNvcmU6OldI
TFNMOjpyZXNvbHZlTmFtZXNJblR5cGVzKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExT
TC9XSExTTE5hbWVSZXNvbHZlci5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9BU1QvV0hMU0xUeXBlLmguCisgICAgICAgICogTW9kdWxlcy93ZWJncHUv
V0hMU0wvV0hMU0xQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OlBhcnNlcjo6
cGFyc2VUeXBlQXJndW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OlBhcnNlcjo6cGFy
c2VFbnVtZXJhdGlvbkRlZmluaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OlBhcnNl
cjo6cGFyc2VCbG9ja0JvZHkpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNM
UHJlcGFyZS5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML0FTVC9XSExTTEJyZWFrLmguCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6cHJlcGFyZSk6
CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQcmVwYXJlLmg6IENvcGllZCBm
cm9tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFR5cGVBcmd1
bWVudC5oLgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUHJvZ3JhbS5oOgor
ICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OlByb2dyYW06OnR5cGVEZWZpbml0aW9ucyk6CisgICAg
ICAgIChXZWJDb3JlOjpXSExTTDo6UHJvZ3JhbTo6c3RydWN0dXJlRGVmaW5pdGlvbnMpOgorICAg
ICAgICAoV2ViQ29yZTo6V0hMU0w6OlByb2dyYW06OmVudW1lcmF0aW9uRGVmaW5pdGlvbnMpOgor
ICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OlByb2dyYW06OmZ1bmN0aW9uRGVmaW5pdGlvbnMpOgor
ICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OlByb2dyYW06Om5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRp
b25zKToKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpQcm9ncmFtOjpuYXRpdmVUeXBlRGVjbGFy
YXRpb25zKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFZpc2l0b3IuaDog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6VmlzaXRvcjo6dmlzaXQpOgorICAgICAg
ICAoV2ViQ29yZTo6V0hMU0w6OlZpc2l0b3I6OnZpc2l0VHlwZSk6CisgICAgICAgICogU291cmNl
cy50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAy
MDE4LTEyLTIxICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CiAKICAg
ICAgICAgW1dITFNMXSBJbmNsdWRlIHRoZSBzdGFuZGFyZCBsaWJyYXJ5CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xBcnJheVJlZmVyZW5j
ZVR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFy
cmF5UmVmZXJlbmNlVHlwZS5oCmluZGV4IDBiZDFiMzY1ZjE4Li4yZDU2N2YwMGU3MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQXJyYXlS
ZWZlcmVuY2VUeXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
QVNUL1dITFNMQXJyYXlSZWZlcmVuY2VUeXBlLmgKQEAgLTQ5LDkgKzQ5LDExIEBAIHB1YmxpYzoK
ICAgICBBcnJheVJlZmVyZW5jZVR5cGUoY29uc3QgQXJyYXlSZWZlcmVuY2VUeXBlJikgPSBkZWxl
dGU7CiAgICAgQXJyYXlSZWZlcmVuY2VUeXBlKEFycmF5UmVmZXJlbmNlVHlwZSYmKSA9IGRlZmF1
bHQ7CiAKKyAgICBib29sIGlzQXJyYXlSZWZlcmVuY2VUeXBlKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gZmFsc2U7IH0KKwogICAgIHN0ZDo6dW5pcXVlX3B0cjxUeXBlPiBjbG9uZSgpIGNvbnN0
IG92ZXJyaWRlCiAgICAgewotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxBcnJheVJl
ZmVyZW5jZVR5cGU+KExleGVyOjpUb2tlbihvcmlnaW4oKSksIFN0cmluZyhhZGRyZXNzU3BhY2Uo
KSksIGVsZW1lbnRUeXBlKCktPmNsb25lKCkpOworICAgICAgICByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxBcnJheVJlZmVyZW5jZVR5cGU+KExleGVyOjpUb2tlbihvcmlnaW4oKSksIFN0cmluZyhh
ZGRyZXNzU3BhY2UoKSksIGVsZW1lbnRUeXBlKCkuY2xvbmUoKSk7CiAgICAgfQogCiBwcml2YXRl
OgpAQCAtNjMsNCArNjUsNiBAQCBwcml2YXRlOgogCiB9CiAKK1NQRUNJQUxJWkVfVFlQRV9UUkFJ
VFNfV0hMU0xfVFlQRShBcnJheVJlZmVyZW5jZVR5cGUsIGlzQXJyYXlSZWZlcmVuY2VUeXBlKCkp
CisKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvQVNUL1dITFNMQXJyYXlUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9BU1QvV0hMU0xBcnJheVR5cGUuaAppbmRleCAwZGRhMjg0OGFmNC4uNDBiNWY4ZGY2ZmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExT
TEFycmF5VHlwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTEFycmF5VHlwZS5oCkBAIC01NCw2ICs1NCwxMCBAQCBwdWJsaWM6CiAKICAgICB1bnNp
Z25lZCBudW1FbGVtZW50cygpIGNvbnN0IHsgcmV0dXJuIG1fbnVtRWxlbWVudHM7IH0KIAorICAg
IGJvb2wgaXNBcnJheVR5cGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorCisg
ICAgVHlwZSYgdHlwZSgpIHsgcmV0dXJuICptX2VsZW1lbnRUeXBlOyB9CisKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8VHlwZT4gY2xvbmUoKSBjb25zdCBvdmVycmlkZQogICAgIHsKICAgICAgICAgcmV0
dXJuIHN0ZDo6bWFrZV91bmlxdWU8QXJyYXlUeXBlPihMZXhlcjo6VG9rZW4obV9vcmlnaW4pLCBt
X2VsZW1lbnRUeXBlLT5jbG9uZSgpLCBtX251bUVsZW1lbnRzKTsKQEAgLTcxLDQgKzc1LDYgQEAg
cHJpdmF0ZToKIAogfQogCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX1RZUEUoQXJyYXlU
eXBlLCBpc0FycmF5VHlwZSgpKQorCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFzc2lnbm1lbnRFeHByZXNzaW9uLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xBc3NpZ25tZW50RXhw
cmVzc2lvbi5oCmluZGV4IDFlNjM0Y2NhN2JmLi5lYWE2OTRmNTk4NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQXNzaWdubWVudEV4cHJl
c3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hM
U0xBc3NpZ25tZW50RXhwcmVzc2lvbi5oCkBAIC01MCw2ICs1MCwxMSBAQCBwdWJsaWM6CiAgICAg
QXNzaWdubWVudEV4cHJlc3Npb24oY29uc3QgQXNzaWdubWVudEV4cHJlc3Npb24mKSA9IGRlbGV0
ZTsKICAgICBBc3NpZ25tZW50RXhwcmVzc2lvbihBc3NpZ25tZW50RXhwcmVzc2lvbiYmKSA9IGRl
ZmF1bHQ7CiAKKyAgICBib29sIGlzQXNzaWdubWVudEV4cHJlc3Npb24oKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiB0cnVlOyB9CisKKyAgICBFeHByZXNzaW9uJiBsZWZ0KCkgeyByZXR1cm4gKm1f
bGVmdDsgfQorICAgIEV4cHJlc3Npb24mIHJpZ2h0KCkgeyByZXR1cm4gKm1fcmlnaHQ7IH0KKwog
cHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RXhwcmVzc2lvbj4gbV9sZWZ0OwogICAgIHN0
ZDo6dW5pcXVlX3B0cjxFeHByZXNzaW9uPiBtX3JpZ2h0OwpAQCAtNjEsNCArNjYsNiBAQCBwcml2
YXRlOgogCiB9CiAKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfRVhQUkVTU0lPTihBc3Np
Z25tZW50RXhwcmVzc2lvbiwgaXNBc3NpZ25tZW50RXhwcmVzc2lvbigpKQorCiAjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEJs
b2NrLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xCbG9j
ay5oCmluZGV4IGNjMTcyNmEzMWEwLi5jNGQxMjlmZWRlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQmxvY2suaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xCbG9jay5oCkBAIC0zOSw3ICsz
OSw3IEBAIG5hbWVzcGFjZSBBU1QgewogCiBjbGFzcyBCbG9jayA6IHB1YmxpYyBTdGF0ZW1lbnQg
ewogcHVibGljOgotICAgIEJsb2NrKExleGVyOjpUb2tlbiYmIG9yaWdpbiwgVmVjdG9yPHN0ZDo6
dW5pcXVlX3B0cjxTdGF0ZW1lbnQ+PiYmIHN0YXRlbWVudHMpCisgICAgQmxvY2soTGV4ZXI6OlRv
a2VuJiYgb3JpZ2luLCBTdGF0ZW1lbnRzJiYgc3RhdGVtZW50cykKICAgICAgICAgOiBTdGF0ZW1l
bnQoV1RGTW92ZShvcmlnaW4pKQogICAgICAgICAsIG1fc3RhdGVtZW50cyhXVEZNb3ZlKHN0YXRl
bWVudHMpKQogICAgIHsKQEAgLTUwLDggKzUwLDEyIEBAIHB1YmxpYzoKICAgICBCbG9jayhjb25z
dCBCbG9jayYpID0gZGVsZXRlOwogICAgIEJsb2NrKEJsb2NrJiYpID0gZGVmYXVsdDsKIAorICAg
IFN0YXRlbWVudHMmIHN0YXRlbWVudHMoKSB7IHJldHVybiBtX3N0YXRlbWVudHM7IH0KKyAgICAK
KyAgICBib29sIGlzQmxvY2soKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisKIHBy
aXZhdGU6Ci0gICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxTdGF0ZW1lbnQ+PiBtX3N0YXRlbWVu
dHM7CisgICAgU3RhdGVtZW50cyBtX3N0YXRlbWVudHM7CiB9OwogCiB9CkBAIC02MCw0ICs2NCw2
IEBAIHByaXZhdGU6CiAKIH0KIAorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9TVEFURU1F
TlQoQmxvY2ssIGlzQmxvY2soKSkKKwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xCb29sZWFuTGl0ZXJhbC5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQm9vbGVhbkxpdGVyYWwuaApp
bmRleCBhZTkwODgxYmQ3Ny4uMjAwZjM2NDkzMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEJvb2xlYW5MaXRlcmFsLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQm9vbGVhbkxpdGVyYWwu
aApAQCAtNTEsNiArNTEsOCBAQCBwdWJsaWM6CiAKICAgICBib29sIHZhbHVlKCkgY29uc3QgeyBy
ZXR1cm4gbV92YWx1ZTsgfQogCisgICAgYm9vbCBpc0Jvb2xlYW5MaXRlcmFsKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorCiBwcml2YXRlOgogICAgIGJvb2wgbV92YWx1ZTsKIH07
CkBAIC02MSw0ICs2Myw2IEBAIHByaXZhdGU6CiAKIH0KIAorU1BFQ0lBTElaRV9UWVBFX1RSQUlU
U19XSExTTF9FWFBSRVNTSU9OKEJvb2xlYW5MaXRlcmFsLCBpc0Jvb2xlYW5MaXRlcmFsKCkpCisK
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
QVNUL1dITFNMQnJlYWsuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTEJyZWFrLmgKaW5kZXggZGM5MjUyMWFlNTguLjc0NzVjYzNmNmZiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xCcmVhay5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEJyZWFrLmgK
QEAgLTQ3LDYgKzQ3LDggQEAgcHVibGljOgogCiAgICAgQnJlYWsoY29uc3QgQnJlYWsmKSA9IGRl
bGV0ZTsKICAgICBCcmVhayhCcmVhayYmKSA9IGRlZmF1bHQ7CisgICAgCisgICAgYm9vbCBpc0Jy
ZWFrKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCiBwcml2YXRlOgogfTsKQEAg
LTU3LDQgKzU5LDYgQEAgcHJpdmF0ZToKIAogfQogCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dI
TFNMX1NUQVRFTUVOVChCcmVhaywgaXNCcmVhaygpKQorCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTENhbGxFeHByZXNzaW9u
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xDYWxsRXhw
cmVzc2lvbi5oCmluZGV4IGUxYmE4NTYzYjQxLi42NGFmNzEzMjk5YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQ2FsbEV4cHJlc3Npb24u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xDYWxs
RXhwcmVzc2lvbi5oCkBAIC01MCw2ICs1MCwxMCBAQCBwdWJsaWM6CiAgICAgQ2FsbEV4cHJlc3Np
b24oY29uc3QgQ2FsbEV4cHJlc3Npb24mKSA9IGRlbGV0ZTsKICAgICBDYWxsRXhwcmVzc2lvbihD
YWxsRXhwcmVzc2lvbiYmKSA9IGRlZmF1bHQ7CiAKKyAgICBib29sIGlzQ2FsbEV4cHJlc3Npb24o
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisKKyAgICBWZWN0b3I8c3RkOjp1bmlx
dWVfcHRyPEV4cHJlc3Npb24+PiYgYXJndW1lbnRzKCkgeyByZXR1cm4gbV9hcmd1bWVudHM7IH0K
KwogcHJpdmF0ZToKICAgICBTdHJpbmcgbV9uYW1lOwogICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9w
dHI8RXhwcmVzc2lvbj4+IG1fYXJndW1lbnRzOwpAQCAtNjEsNCArNjUsNiBAQCBwcml2YXRlOgog
CiB9CiAKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfRVhQUkVTU0lPTihDYWxsRXhwcmVz
c2lvbiwgaXNDYWxsRXhwcmVzc2lvbigpKQorCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTENvbW1hRXhwcmVzc2lvbi5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQ29tbWFFeHByZXNz
aW9uLmgKaW5kZXggNmM3ZGM3MGJhMjAuLmI4ZDJiYTM4ZGJjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xDb21tYUV4cHJlc3Npb24uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xDb21tYUV4
cHJlc3Npb24uaApAQCAtNTAsNiArNTAsMTAgQEAgcHVibGljOgogICAgIENvbW1hRXhwcmVzc2lv
bihjb25zdCBDb21tYUV4cHJlc3Npb24mKSA9IGRlbGV0ZTsKICAgICBDb21tYUV4cHJlc3Npb24o
Q29tbWFFeHByZXNzaW9uJiYpID0gZGVmYXVsdDsKIAorICAgIGJvb2wgaXNDb21tYUV4cHJlc3Np
b24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisKKyAgICBWZWN0b3I8c3RkOjp1
bmlxdWVfcHRyPEV4cHJlc3Npb24+PiYgbGlzdCgpIHsgcmV0dXJuIG1fbGlzdDsgfQorCiBwcml2
YXRlOgogICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8RXhwcmVzc2lvbj4+IG1fbGlzdDsKIH07
CkBAIC02MCw0ICs2NCw2IEBAIHByaXZhdGU6CiAKIH0KIAorU1BFQ0lBTElaRV9UWVBFX1RSQUlU
U19XSExTTF9FWFBSRVNTSU9OKENvbW1hRXhwcmVzc2lvbiwgaXNDb21tYUV4cHJlc3Npb24oKSkK
KwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xDb25zdGFudEV4cHJlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTENvbnN0YW50RXhwcmVzc2lvbi5oCmluZGV4IDhjYThiMzY5
ZDZhLi5hMzhiMGQ1YjNhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvQVNUL1dITFNMQ29uc3RhbnRFeHByZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQ29uc3RhbnRFeHByZXNzaW9uLmgKQEAg
LTQ0LDg3ICs0NCw1MiBAQCBuYW1lc3BhY2UgQVNUIHsKIC8vIEZJWE1FOiBtYWNPUyBTaWVycmEg
ZG9lc24ndCBzZWVtIHRvIHN1cHBvcnQgcHV0dGluZyBWYXJpYW50cyBpbnNpZGUgVmFyaWFudHMs
CiAvLyBzbyB0aGlzIGlzIGEgd3JhcHBlciBjbGFzcyB0byBtYWtlIHN1cmUgdGhhdCBkb2Vzbid0
IGhhcHBlbi4gQXMgc29vbiBhcyB3ZSBkb24ndAogLy8gaGF2ZSB0byBzdXBwb3J0IFNpZXJyYSwg
dGhpcyBjYW4gYmUgbWlncmF0ZWQgdG8gYSBWYXJpYW50IHByb3Blci4KLWNsYXNzIENvbnN0YW50
RXhwcmVzc2lvbiA6IHB1YmxpYyBWYXJpYW50PAotICAgIEludGVnZXJMaXRlcmFsLAotICAgIFVu
c2lnbmVkSW50ZWdlckxpdGVyYWwsCi0gICAgRmxvYXRMaXRlcmFsLAotICAgIE51bGxMaXRlcmFs
LAotICAgIEJvb2xlYW5MaXRlcmFsLAotICAgIENvbnN0YW50RXhwcmVzc2lvbkVudW1lcmF0aW9u
TWVtYmVyUmVmZXJlbmNlCi0gICAgPiB7CitjbGFzcyBDb25zdGFudEV4cHJlc3Npb24gewogcHVi
bGljOgogICAgIENvbnN0YW50RXhwcmVzc2lvbihJbnRlZ2VyTGl0ZXJhbCYmIGludGVnZXJMaXRl
cmFsKQotICAgICAgICA6IFZhcmlhbnQ8Ci0gICAgICAgIEludGVnZXJMaXRlcmFsLAotICAgICAg
ICBVbnNpZ25lZEludGVnZXJMaXRlcmFsLAotICAgICAgICBGbG9hdExpdGVyYWwsCi0gICAgICAg
IE51bGxMaXRlcmFsLAotICAgICAgICBCb29sZWFuTGl0ZXJhbCwKLSAgICAgICAgQ29uc3RhbnRF
eHByZXNzaW9uRW51bWVyYXRpb25NZW1iZXJSZWZlcmVuY2UKLSAgICAgICAgPihXVEZNb3ZlKGlu
dGVnZXJMaXRlcmFsKSkKKyAgICAgICAgOiBtX3ZhcmlhbnQoV1RGTW92ZShpbnRlZ2VyTGl0ZXJh
bCkpCiAgICAgewogICAgIH0KIAogICAgIENvbnN0YW50RXhwcmVzc2lvbihVbnNpZ25lZEludGVn
ZXJMaXRlcmFsJiYgdW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCkKLSAgICAgICAgOiBWYXJpYW50PAot
ICAgICAgICBJbnRlZ2VyTGl0ZXJhbCwKLSAgICAgICAgVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCwK
LSAgICAgICAgRmxvYXRMaXRlcmFsLAotICAgICAgICBOdWxsTGl0ZXJhbCwKLSAgICAgICAgQm9v
bGVhbkxpdGVyYWwsCi0gICAgICAgIENvbnN0YW50RXhwcmVzc2lvbkVudW1lcmF0aW9uTWVtYmVy
UmVmZXJlbmNlCi0gICAgICAgID4oV1RGTW92ZSh1bnNpZ25lZEludGVnZXJMaXRlcmFsKSkKKyAg
ICAgICAgOiBtX3ZhcmlhbnQoV1RGTW92ZSh1bnNpZ25lZEludGVnZXJMaXRlcmFsKSkKICAgICB7
CiAgICAgfQogCiAgICAgQ29uc3RhbnRFeHByZXNzaW9uKEZsb2F0TGl0ZXJhbCYmIGZsb2F0TGl0
ZXJhbCkKLSAgICAgICAgOiBWYXJpYW50PAotICAgICAgICBJbnRlZ2VyTGl0ZXJhbCwKLSAgICAg
ICAgVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCwKLSAgICAgICAgRmxvYXRMaXRlcmFsLAotICAgICAg
ICBOdWxsTGl0ZXJhbCwKLSAgICAgICAgQm9vbGVhbkxpdGVyYWwsCi0gICAgICAgIENvbnN0YW50
RXhwcmVzc2lvbkVudW1lcmF0aW9uTWVtYmVyUmVmZXJlbmNlCi0gICAgICAgID4oV1RGTW92ZShm
bG9hdExpdGVyYWwpKQorICAgICAgICA6IG1fdmFyaWFudChXVEZNb3ZlKGZsb2F0TGl0ZXJhbCkp
CiAgICAgewogICAgIH0KIAogICAgIENvbnN0YW50RXhwcmVzc2lvbihOdWxsTGl0ZXJhbCYmIG51
bGxMaXRlcmFsKQotICAgICAgICA6IFZhcmlhbnQ8Ci0gICAgICAgIEludGVnZXJMaXRlcmFsLAot
ICAgICAgICBVbnNpZ25lZEludGVnZXJMaXRlcmFsLAotICAgICAgICBGbG9hdExpdGVyYWwsCi0g
ICAgICAgIE51bGxMaXRlcmFsLAotICAgICAgICBCb29sZWFuTGl0ZXJhbCwKLSAgICAgICAgQ29u
c3RhbnRFeHByZXNzaW9uRW51bWVyYXRpb25NZW1iZXJSZWZlcmVuY2UKLSAgICAgICAgPihXVEZN
b3ZlKG51bGxMaXRlcmFsKSkKKyAgICAgICAgOiBtX3ZhcmlhbnQoV1RGTW92ZShudWxsTGl0ZXJh
bCkpCiAgICAgewogICAgIH0KIAogICAgIENvbnN0YW50RXhwcmVzc2lvbihCb29sZWFuTGl0ZXJh
bCYmIGJvb2xlYW5MaXRlcmFsKQotICAgICAgICA6IFZhcmlhbnQ8Ci0gICAgICAgIEludGVnZXJM
aXRlcmFsLAotICAgICAgICBVbnNpZ25lZEludGVnZXJMaXRlcmFsLAotICAgICAgICBGbG9hdExp
dGVyYWwsCi0gICAgICAgIE51bGxMaXRlcmFsLAotICAgICAgICBCb29sZWFuTGl0ZXJhbCwKLSAg
ICAgICAgQ29uc3RhbnRFeHByZXNzaW9uRW51bWVyYXRpb25NZW1iZXJSZWZlcmVuY2UKLSAgICAg
ICAgPihXVEZNb3ZlKGJvb2xlYW5MaXRlcmFsKSkKKyAgICAgICAgOiBtX3ZhcmlhbnQoV1RGTW92
ZShib29sZWFuTGl0ZXJhbCkpCiAgICAgewogICAgIH0KIAogICAgIENvbnN0YW50RXhwcmVzc2lv
bihDb25zdGFudEV4cHJlc3Npb25FbnVtZXJhdGlvbk1lbWJlclJlZmVyZW5jZSYmIGNvbnN0YW50
RXhwcmVzc2lvbkVudW1lcmF0aW9uTWVtYmVyUmVmZXJlbmNlKQotICAgICAgICA6IFZhcmlhbnQ8
CisgICAgICAgIDogbV92YXJpYW50KFdURk1vdmUoY29uc3RhbnRFeHByZXNzaW9uRW51bWVyYXRp
b25NZW1iZXJSZWZlcmVuY2UpKQorICAgIHsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPiB2b2lkIHZpc2l0KFQmJiB0KQorICAgIHsKKyAgICAgICAgV1RGOjp2aXNpdChXVEZNb3Zl
KHQpLCBtX3ZhcmlhbnQpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBWYXJpYW50PAogICAgICAg
ICBJbnRlZ2VyTGl0ZXJhbCwKICAgICAgICAgVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCwKICAgICAg
ICAgRmxvYXRMaXRlcmFsLAogICAgICAgICBOdWxsTGl0ZXJhbCwKICAgICAgICAgQm9vbGVhbkxp
dGVyYWwsCiAgICAgICAgIENvbnN0YW50RXhwcmVzc2lvbkVudW1lcmF0aW9uTWVtYmVyUmVmZXJl
bmNlCi0gICAgICAgID4oV1RGTW92ZShjb25zdGFudEV4cHJlc3Npb25FbnVtZXJhdGlvbk1lbWJl
clJlZmVyZW5jZSkpCi0gICAgewotICAgIH0KLQorICAgICAgICA+IG1fdmFyaWFudDsKIH07CiAK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9X
SExTTENvbnRpbnVlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1Qv
V0hMU0xDb250aW51ZS5oCmluZGV4IGUyOTVhNWE3Nzg3Li4zYjA2ZWM1OWQyMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQ29udGludWUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xDb250
aW51ZS5oCkBAIC00Nyw2ICs0Nyw4IEBAIHB1YmxpYzoKIAogICAgIENvbnRpbnVlKGNvbnN0IENv
bnRpbnVlJikgPSBkZWxldGU7CiAgICAgQ29udGludWUoQ29udGludWUmJikgPSBkZWZhdWx0Owor
ICAgIAorICAgIGJvb2wgaXNDb250aW51ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7
IH0KIAogcHJpdmF0ZToKIH07CkBAIC01Nyw0ICs1OSw2IEBAIHByaXZhdGU6CiAKIH0KIAorU1BF
Q0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9TVEFURU1FTlQoQ29udGludWUsIGlzQ29udGludWUo
KSkKKwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9BU1QvV0hMU0xEZXJlZmVyZW5jZUV4cHJlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTERlcmVmZXJlbmNlRXhwcmVzc2lvbi5oCmluZGV4
IDk4MjQzM2JhMjU5Li42YzU1ZGUzNGE3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRGVyZWZlcmVuY2VFeHByZXNzaW9uLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRGVyZWZlcmVuY2VF
eHByZXNzaW9uLmgKQEAgLTQ5LDYgKzQ5LDEwIEBAIHB1YmxpYzoKICAgICBEZXJlZmVyZW5jZUV4
cHJlc3Npb24oY29uc3QgRGVyZWZlcmVuY2VFeHByZXNzaW9uJikgPSBkZWxldGU7CiAgICAgRGVy
ZWZlcmVuY2VFeHByZXNzaW9uKERlcmVmZXJlbmNlRXhwcmVzc2lvbiYmKSA9IGRlZmF1bHQ7CiAK
KyAgICBib29sIGlzRGVyZWZlcmVuY2VFeHByZXNzaW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gdHJ1ZTsgfQorCisgICAgRXhwcmVzc2lvbiYgcG9pbnRlcigpIHsgcmV0dXJuICptX3BvaW50
ZXI7IH0KKwogcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RXhwcmVzc2lvbj4gbV9wb2lu
dGVyOwogfTsKQEAgLTU5LDQgKzYzLDYgQEAgcHJpdmF0ZToKIAogfQogCitTUEVDSUFMSVpFX1RZ
UEVfVFJBSVRTX1dITFNMX0VYUFJFU1NJT04oRGVyZWZlcmVuY2VFeHByZXNzaW9uLCBpc0RlcmVm
ZXJlbmNlRXhwcmVzc2lvbigpKQorCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTERvV2hpbGVMb29wLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xEb1doaWxlTG9vcC5oCmluZGV4IDYw
MjNkOGRjN2FmLi5kMjZlZGY5MjJjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRG9XaGlsZUxvb3AuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xEb1doaWxlTG9vcC5oCkBAIC01MCw2ICs1
MCwxMSBAQCBwdWJsaWM6CiAKICAgICBEb1doaWxlTG9vcChjb25zdCBEb1doaWxlTG9vcCYpID0g
ZGVsZXRlOwogICAgIERvV2hpbGVMb29wKERvV2hpbGVMb29wJiYpID0gZGVmYXVsdDsKKyAgICAK
KyAgICBib29sIGlzRG9XaGlsZUxvb3AoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9
CisKKyAgICBTdGF0ZW1lbnQmIGJvZHkoKSB7IHJldHVybiAqbV9ib2R5OyB9CisgICAgRXhwcmVz
c2lvbiYgY29uZGl0aW9uYWwoKSB7IHJldHVybiAqbV9jb25kaXRpb25hbDsgfQogCiBwcml2YXRl
OgogICAgIHN0ZDo6dW5pcXVlX3B0cjxTdGF0ZW1lbnQ+IG1fYm9keTsKQEAgLTYyLDQgKzY3LDYg
QEAgcHJpdmF0ZToKIAogfQogCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX1NUQVRFTUVO
VChEb1doaWxlTG9vcCwgaXNEb1doaWxlTG9vcCgpKQorCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEVmZmVjdGZ1bEV4cHJl
c3Npb25TdGF0ZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTEVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQuaAppbmRleCAyNGQwNzUxMmMzOC4u
ZDljYTk5YWQ4ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML0FTVC9XSExTTEVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xFZmZlY3RmdWxFeHByZXNzaW9u
U3RhdGVtZW50LmgKQEAgLTUwLDYgKzUwLDEwIEBAIHB1YmxpYzoKICAgICBFZmZlY3RmdWxFeHBy
ZXNzaW9uU3RhdGVtZW50KGNvbnN0IEVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQmKSA9IGRl
bGV0ZTsKICAgICBFZmZlY3RmdWxFeHByZXNzaW9uU3RhdGVtZW50KEVmZmVjdGZ1bEV4cHJlc3Np
b25TdGF0ZW1lbnQmJikgPSBkZWZhdWx0OwogCisgICAgYm9vbCBpc0VmZmVjdGZ1bEV4cHJlc3Np
b25TdGF0ZW1lbnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisKKyAgICBFeHBy
ZXNzaW9uJiBlZmZlY3RmdWxFeHByZXNzaW9uKCkgeyByZXR1cm4gKm1fZWZmZWN0ZnVsRXhwcmVz
c2lvbjsgfQorCiBwcml2YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxFeHByZXNzaW9uPiBtX2Vm
ZmVjdGZ1bEV4cHJlc3Npb247CiB9OwpAQCAtNjAsNCArNjQsNiBAQCBwcml2YXRlOgogCiB9CiAK
K1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfU1RBVEVNRU5UKEVmZmVjdGZ1bEV4cHJlc3Np
b25TdGF0ZW1lbnQsIGlzRWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVudCgpKQorCiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExT
TEVudW1lcmF0aW9uRGVmaW5pdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvQVNUL1dITFNMRW51bWVyYXRpb25EZWZpbml0aW9uLmgKaW5kZXggOWE2NzBjZWJlYTAu
Ljc5NzBiNTllNTRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9BU1QvV0hMU0xFbnVtZXJhdGlvbkRlZmluaXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xFbnVtZXJhdGlvbkRlZmluaXRpb24uaApA
QCAtMzksOSArMzksOSBAQCBuYW1lc3BhY2UgV0hMU0wgewogCiBuYW1lc3BhY2UgQVNUIHsKIAot
Y2xhc3MgRW51bWVyYXRpb25EZWZpbml0aW9uIDogcHVibGljIFR5cGUgeworY2xhc3MgRW51bWVy
YXRpb25EZWZpbml0aW9uIDogcHVibGljIE5vZGUgewogcHVibGljOgotICAgIEVudW1lcmF0aW9u
RGVmaW5pdGlvbihMZXhlcjo6VG9rZW4mJiBvcmlnaW4sIFN0cmluZyYmIG5hbWUsIHN0ZDo6dW5p
cXVlX3B0cjxUeXBlPiYmIHR5cGUsIFZlY3RvcjxFbnVtZXJhdGlvbk1lbWJlcj4gbWVtYmVycykK
KyAgICBFbnVtZXJhdGlvbkRlZmluaXRpb24oTGV4ZXI6OlRva2VuJiYgb3JpZ2luLCBTdHJpbmcm
JiBuYW1lLCBzdGQ6OnVuaXF1ZV9wdHI8VHlwZT4mJiB0eXBlLCBFbnVtZXJhdGlvbk1lbWJlcnMm
JiBtZW1iZXJzKQogICAgICAgICA6IG1fb3JpZ2luKFdURk1vdmUob3JpZ2luKSkKICAgICAgICAg
LCBtX25hbWUoV1RGTW92ZShuYW1lKSkKICAgICAgICAgLCBtX3R5cGUoV1RGTW92ZSh0eXBlKSkK
QEAgLTU0LDE3ICs1NCwxNCBAQCBwdWJsaWM6CiAgICAgRW51bWVyYXRpb25EZWZpbml0aW9uKGNv
bnN0IEVudW1lcmF0aW9uRGVmaW5pdGlvbiYpID0gZGVsZXRlOwogICAgIEVudW1lcmF0aW9uRGVm
aW5pdGlvbihFbnVtZXJhdGlvbkRlZmluaXRpb24mJikgPSBkZWZhdWx0OwogCi0gICAgc3RkOjp1
bmlxdWVfcHRyPFR5cGU+IGNsb25lKCkgY29uc3Qgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9CisgICAg
VHlwZSYgdHlwZSgpIHsgcmV0dXJuICptX3R5cGU7IH0KKyAgICBFbnVtZXJhdGlvbk1lbWJlcnMm
IGVudW1lcmF0aW9uTWVtYmVycygpIHsgcmV0dXJuIG1fbWVtYmVyczsgfQogCiBwcml2YXRlOgog
ICAgIExleGVyOjpUb2tlbiBtX29yaWdpbjsKICAgICBTdHJpbmcgbV9uYW1lOwogICAgIHN0ZDo6
dW5pcXVlX3B0cjxUeXBlPiBtX3R5cGU7Ci0gICAgVmVjdG9yPEVudW1lcmF0aW9uTWVtYmVyPiBt
X21lbWJlcnM7CisgICAgRW51bWVyYXRpb25NZW1iZXJzIG1fbWVtYmVyczsKIH07CiAKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEVu
dW1lcmF0aW9uTWVtYmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9B
U1QvV0hMU0xFbnVtZXJhdGlvbk1lbWJlci5oCmluZGV4IGM4MzQzYWI0YWRiLi45ZDlkODU0ODgz
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dI
TFNMRW51bWVyYXRpb25NZW1iZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9BU1QvV0hMU0xFbnVtZXJhdGlvbk1lbWJlci5oCkBAIC0zMSw2ICszMSw3IEBACiAj
aW5jbHVkZSAiV0hMU0xMZXhlci5oIgogI2luY2x1ZGUgIldITFNMTm9kZS5oIgogI2luY2x1ZGUg
PHd0Zi9PcHRpb25hbC5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNTMsMTIgKzU0LDE2
IEBAIHB1YmxpYzoKICAgICBFbnVtZXJhdGlvbk1lbWJlcihjb25zdCBFbnVtZXJhdGlvbk1lbWJl
ciYpID0gZGVsZXRlOwogICAgIEVudW1lcmF0aW9uTWVtYmVyKEVudW1lcmF0aW9uTWVtYmVyJiYp
ID0gZGVmYXVsdDsKIAorICAgIE9wdGlvbmFsPENvbnN0YW50RXhwcmVzc2lvbj4mIHZhbHVlKCkg
eyByZXR1cm4gbV92YWx1ZTsgfQorCiBwcml2YXRlOgogICAgIExleGVyOjpUb2tlbiBtX29yaWdp
bjsKICAgICBTdHJpbmcgbV9uYW1lOwogICAgIE9wdGlvbmFsPENvbnN0YW50RXhwcmVzc2lvbj4g
bV92YWx1ZTsKIH07CiAKK3R5cGVkZWYgVmVjdG9yPEVudW1lcmF0aW9uTWVtYmVyPiBFbnVtZXJh
dGlvbk1lbWJlcnM7CisKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRXhwcmVzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRXhwcmVzc2lvbi5oCmluZGV4IDhlMzE0Y2YyMDgy
Li5lMzY4MzgzNjQ2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvQVNUL1dITFNMRXhwcmVzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTEV4cHJlc3Npb24uaApAQCAtNTAsNiArNTAsMjQgQEAgcHVi
bGljOgogCiAgICAgTGV4ZXI6OlRva2VuIG9yaWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fb3JpZ2lu
OyB9CiAKKyAgICB2aXJ0dWFsIGJvb2wgaXNBc3NpZ25tZW50RXhwcmVzc2lvbigpIGNvbnN0IHsg
cmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGlzQm9vbGVhbkxpdGVyYWwoKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc0NhbGxFeHByZXNzaW9uKCkg
Y29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNDb21tYUV4cHJlc3Np
b24oKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc0RlcmVmZXJl
bmNlRXhwcmVzc2lvbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29s
IGlzRmxvYXRMaXRlcmFsKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJv
b2wgaXNJbnRlZ2VyTGl0ZXJhbCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVh
bCBib29sIGlzTG9naWNhbEV4cHJlc3Npb24oKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAg
IHZpcnR1YWwgYm9vbCBpc0xvZ2ljYWxOb3RFeHByZXNzaW9uKCkgY29uc3QgeyByZXR1cm4gZmFs
c2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNNYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uKCkg
Y29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNNYWtlUG9pbnRlckV4
cHJlc3Npb24oKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc051
bGxMaXRlcmFsKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNQ
cm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24oKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZp
cnR1YWwgYm9vbCBpc1JlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24oKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc1Rlcm5hcnlFeHByZXNzaW9uKCkgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNVbnNpZ25lZEludGVnZXJMaXRlcmFs
KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNWYXJpYWJsZVJl
ZmVyZW5jZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisKIHByaXZhdGU6CiAgICAgTGV4ZXI6
OlRva2VuIG1fb3JpZ2luOwogfTsKQEAgLTYwLDQgKzc4LDkgQEAgcHJpdmF0ZToKIAogfQogCisj
ZGVmaW5lIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfRVhQUkVTU0lPTihUb1ZhbHVlVHlw
ZU5hbWUsIHByZWRpY2F0ZSkgXAorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3Jl
OjpXSExTTDo6QVNUOjpUb1ZhbHVlVHlwZU5hbWUpIFwKKyAgICBzdGF0aWMgYm9vbCBpc1R5cGUo
Y29uc3QgV2ViQ29yZTo6V0hMU0w6OkFTVDo6RXhwcmVzc2lvbiYgZXhwcmVzc2lvbikgeyByZXR1
cm4gZXhwcmVzc2lvbi5wcmVkaWNhdGU7IH0gXAorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQo
KQorCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML0FTVC9XSExTTEZhbGx0aHJvdWdoLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9BU1QvV0hMU0xGYWxsdGhyb3VnaC5oCmluZGV4IDFmYzc0ZDhmOGQ5Li4wOTkxNTdk
NGU2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMRmFsbHRocm91Z2guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9BU1QvV0hMU0xGYWxsdGhyb3VnaC5oCkBAIC00Nyw2ICs0Nyw4IEBAIHB1YmxpYzoKIAog
ICAgIEZhbGx0aHJvdWdoKGNvbnN0IEZhbGx0aHJvdWdoJikgPSBkZWxldGU7CiAgICAgRmFsbHRo
cm91Z2goRmFsbHRocm91Z2gmJikgPSBkZWZhdWx0OworICAgIAorICAgIGJvb2wgaXNGYWxsdGhy
b3VnaCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIAogcHJpdmF0ZToKIH07CkBA
IC01Nyw0ICs1OSw2IEBAIHByaXZhdGU6CiAKIH0KIAorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19X
SExTTF9TVEFURU1FTlQoRmFsbHRocm91Z2gsIGlzRmFsbHRocm91Z2goKSkKKwogI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xG
bG9hdExpdGVyYWwuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9X
SExTTEZsb2F0TGl0ZXJhbC5oCmluZGV4IGFiZjFkZmIwNzZjLi5jYmY1NDY5ZGJmYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRmxvYXRM
aXRlcmFsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dI
TFNMRmxvYXRMaXRlcmFsLmgKQEAgLTUxLDYgKzUxLDggQEAgcHVibGljOgogCiAgICAgZmxvYXQg
dmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlOyB9CiAKKyAgICBib29sIGlzRmxvYXRMaXRl
cmFsKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorCiBwcml2YXRlOgogICAgIGZs
b2F0IG1fdmFsdWU7CiB9OwpAQCAtNjEsNCArNjMsNiBAQCBwcml2YXRlOgogCiB9CiAKK1NQRUNJ
QUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfRVhQUkVTU0lPTihGbG9hdExpdGVyYWwsIGlzRmxvYXRM
aXRlcmFsKCkpCisKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvQVNUL1dITFNMRm9yTG9vcC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvQVNUL1dITFNMRm9yTG9vcC5oCmluZGV4IDFhYmRlOWM1OGUwLi4yOGZjMTM3
NmRhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMRm9yTG9vcC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L0FTVC9XSExTTEZvckxvb3AuaApAQCAtNTcsNiArNTcsMTMgQEAgcHVibGljOgogCiAgICAgRm9y
TG9vcChjb25zdCBGb3JMb29wJikgPSBkZWxldGU7CiAgICAgRm9yTG9vcChGb3JMb29wJiYpID0g
ZGVmYXVsdDsKKyAgICAKKyAgICBib29sIGlzRm9yTG9vcCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIHRydWU7IH0KKworICAgIFZhcmlhbnQ8VmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQs
IHN0ZDo6dW5pcXVlX3B0cjxFeHByZXNzaW9uPj4mIGluaXRpYWxpemF0aW9uKCkgeyByZXR1cm4g
bV9pbml0aWFsaXphdGlvbjsgfQorICAgIEV4cHJlc3Npb24qIGNvbmRpdGlvbigpIHsgcmV0dXJu
IG1fY29uZGl0aW9uLmdldCgpOyB9CisgICAgRXhwcmVzc2lvbiogaW5jcmVtZW50KCkgeyByZXR1
cm4gbV9pbmNyZW1lbnQuZ2V0KCk7IH0KKyAgICBTdGF0ZW1lbnQmIGJvZHkoKSB7IHJldHVybiAq
bV9ib2R5OyB9CiAKIHByaXZhdGU6CiAgICAgVmFyaWFudDxWYXJpYWJsZURlY2xhcmF0aW9uc1N0
YXRlbWVudCwgc3RkOjp1bmlxdWVfcHRyPEV4cHJlc3Npb24+PiBtX2luaXRpYWxpemF0aW9uOwpA
QCAtNzEsNCArNzgsNiBAQCBwcml2YXRlOgogCiB9CiAKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNf
V0hMU0xfU1RBVEVNRU5UKEZvckxvb3AsIGlzRm9yTG9vcCgpKQorCiAjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEZ1bmN0aW9u
RGVjbGFyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9X
SExTTEZ1bmN0aW9uRGVjbGFyYXRpb24uaAppbmRleCBlNjA2MGFhYTg0MC4uN2E3ZTBhMDY1NmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExT
TEZ1bmN0aW9uRGVjbGFyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9BU1QvV0hMU0xGdW5jdGlvbkRlY2xhcmF0aW9uLmgKQEAgLTY1LDYgKzY1LDExIEBA
IHB1YmxpYzoKICAgICBGdW5jdGlvbkRlY2xhcmF0aW9uKGNvbnN0IEZ1bmN0aW9uRGVjbGFyYXRp
b24mKSA9IGRlbGV0ZTsKICAgICBGdW5jdGlvbkRlY2xhcmF0aW9uKEZ1bmN0aW9uRGVjbGFyYXRp
b24mJikgPSBkZWZhdWx0OwogCisgICAgQXR0cmlidXRlQmxvY2smIGF0dHJpYnV0ZUJsb2NrKCkg
eyByZXR1cm4gbV9hdHRyaWJ1dGVCbG9jazsgfQorICAgIEFTVDo6VHlwZSYgdHlwZSgpIHsgcmV0
dXJuICptX3R5cGU7IH0KKyAgICBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKCkgeyByZXR1cm4gbV9w
YXJhbWV0ZXJzOyB9CisgICAgT3B0aW9uYWw8QVNUOjpTZW1hbnRpYz4mIHNlbWFudGljKCkgeyBy
ZXR1cm4gbV9zZW1hbnRpYzsgfQorCiAgICAgTGV4ZXI6OlRva2VuJiYgdGFrZU9yaWdpbigpIHsg
cmV0dXJuIFdURk1vdmUobV9vcmlnaW4pOyB9CiAgICAgQXR0cmlidXRlQmxvY2smJiB0YWtlQXR0
cmlidXRlQmxvY2soKSB7IHJldHVybiBXVEZNb3ZlKG1fYXR0cmlidXRlQmxvY2spOyB9CiAgICAg
T3B0aW9uYWw8RW50cnlQb2ludFR5cGU+JiYgdGFrZUVudHJ5UG9pbnRUeXBlKCkgeyByZXR1cm4g
V1RGTW92ZShtX2VudHJ5UG9pbnRUeXBlKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMRnVuY3Rpb25EZWZpbml0aW9uLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xGdW5jdGlvbkRlZmluaXRp
b24uaAppbmRleCAwNWYwYjFmMDgxYS4uYTQ5MDdiMGQyOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEZ1bmN0aW9uRGVmaW5pdGlvbi5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEZ1bmN0
aW9uRGVmaW5pdGlvbi5oCkBAIC01MCw2ICs1MCw3IEBAIHB1YmxpYzoKICAgICBGdW5jdGlvbkRl
ZmluaXRpb24oY29uc3QgRnVuY3Rpb25EZWZpbml0aW9uJikgPSBkZWxldGU7CiAgICAgRnVuY3Rp
b25EZWZpbml0aW9uKEZ1bmN0aW9uRGVmaW5pdGlvbiYmKSA9IGRlZmF1bHQ7CiAKKyAgICBCbG9j
ayYgYmxvY2soKSB7IHJldHVybiBtX2Jsb2NrOyB9CiAgICAgYm9vbCByZXN0cmljdGVkKCkgY29u
c3QgeyByZXR1cm4gbV9yZXN0cmljdGVkOyB9CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xJZlN0YXRlbWVudC5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMSWZTdGF0ZW1lbnQu
aAppbmRleCA5NGIwOGIxYTJhZi4uMWVmMTBlMmU3MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTElmU3RhdGVtZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMSWZTdGF0ZW1lbnQuaApA
QCAtNTEsMTEgKzUxLDE3IEBAIHB1YmxpYzoKIAogICAgIElmU3RhdGVtZW50KGNvbnN0IElmU3Rh
dGVtZW50JikgPSBkZWxldGU7CiAgICAgSWZTdGF0ZW1lbnQoSWZTdGF0ZW1lbnQmJikgPSBkZWZh
dWx0OworICAgIAorICAgIGJvb2wgaXNJZlN0YXRlbWVudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIHRydWU7IH0KKworICAgIEV4cHJlc3Npb24mIGNvbmRpdGlvbmFsKCkgeyByZXR1cm4gKm1f
Y29uZGl0aW9uYWw7IH0KKyAgICBTdGF0ZW1lbnQmIGJvZHkoKSB7IHJldHVybiAqbV9ib2R5OyB9
CisgICAgU3RhdGVtZW50KiBlbHNlQm9keSgpIHsgcmV0dXJuIG1fZWxzZUJvZHkuZ2V0KCk7IH0K
IAogcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RXhwcmVzc2lvbj4gbV9jb25kaXRpb25h
bDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U3RhdGVtZW50PiBtX2JvZHk7Ci0gICAgc3RkOjp1bmlx
dWVfcHRyPFN0YXRlbWVudD4gbV9lbHNlQm9keTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U3RhdGVt
ZW50PiBtX2Vsc2VCb2R5OyAvLyBudWxsYWJsZQogfTsKIAogfQpAQCAtNjQsNCArNzAsNiBAQCBw
cml2YXRlOgogCiB9CiAKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfU1RBVEVNRU5UKElm
U3RhdGVtZW50LCBpc0lmU3RhdGVtZW50KCkpCisKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMSW50ZWdlckxpdGVyYWwuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEludGVnZXJMaXRl
cmFsLmgKaW5kZXggYWNkMjUzNDZjNDMuLjY4NTRkZDI3ZjBjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xJbnRlZ2VyTGl0ZXJhbC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEludGVnZXJM
aXRlcmFsLmgKQEAgLTUxLDYgKzUxLDggQEAgcHVibGljOgogCiAgICAgaW50IHZhbHVlKCkgY29u
c3QgeyByZXR1cm4gbV92YWx1ZTsgfQogCisgICAgYm9vbCBpc0ludGVnZXJMaXRlcmFsKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorCiBwcml2YXRlOgogICAgIGludCBtX3ZhbHVl
OwogfTsKQEAgLTYxLDQgKzYzLDYgQEAgcHJpdmF0ZToKIAogfQogCitTUEVDSUFMSVpFX1RZUEVf
VFJBSVRTX1dITFNMX0VYUFJFU1NJT04oSW50ZWdlckxpdGVyYWwsIGlzSW50ZWdlckxpdGVyYWwo
KSkKKwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9BU1QvV0hMU0xMb2dpY2FsRXhwcmVzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTG9naWNhbEV4cHJlc3Npb24uaAppbmRleCBiZmIwNDc1
ZDdiMi4uZDk5NmZhNWY1ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML0FTVC9XSExTTExvZ2ljYWxFeHByZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTG9naWNhbEV4cHJlc3Npb24uaApAQCAt
NTgsNiArNTgsMTEgQEAgcHVibGljOgogCiAgICAgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4g
bV90eXBlOyB9CiAKKyAgICBib29sIGlzTG9naWNhbEV4cHJlc3Npb24oKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiB0cnVlOyB9CisKKyAgICBFeHByZXNzaW9uJiBsZWZ0KCkgeyByZXR1cm4gKm1f
bGVmdDsgfQorICAgIEV4cHJlc3Npb24mIHJpZ2h0KCkgeyByZXR1cm4gKm1fcmlnaHQ7IH0KKwog
cHJpdmF0ZToKICAgICBUeXBlIG1fdHlwZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RXhwcmVzc2lv
bj4gbV9sZWZ0OwpAQCAtNzAsNCArNzUsNiBAQCBwcml2YXRlOgogCiB9CiAKK1NQRUNJQUxJWkVf
VFlQRV9UUkFJVFNfV0hMU0xfRVhQUkVTU0lPTihMb2dpY2FsRXhwcmVzc2lvbiwgaXNMb2dpY2Fs
RXhwcmVzc2lvbigpKQorCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTExvZ2ljYWxOb3RFeHByZXNzaW9uLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xMb2dpY2FsTm90RXhwcmVzc2lv
bi5oCmluZGV4IDk5MzM0NGYzYjBkLi4yZDRmMGNiODYxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTG9naWNhbE5vdEV4cHJlc3Npb24u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xMb2dp
Y2FsTm90RXhwcmVzc2lvbi5oCkBAIC00OSw2ICs0OSwxMCBAQCBwdWJsaWM6CiAgICAgTG9naWNh
bE5vdEV4cHJlc3Npb24oY29uc3QgTG9naWNhbE5vdEV4cHJlc3Npb24mKSA9IGRlbGV0ZTsKICAg
ICBMb2dpY2FsTm90RXhwcmVzc2lvbihMb2dpY2FsTm90RXhwcmVzc2lvbiYmKSA9IGRlZmF1bHQ7
CiAKKyAgICBib29sIGlzTG9naWNhbE5vdEV4cHJlc3Npb24oKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiB0cnVlOyB9CisKKyAgICBFeHByZXNzaW9uJiBvcGVyYW5kKCkgeyByZXR1cm4gKm1fb3Bl
cmFuZDsgfQorCiBwcml2YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxFeHByZXNzaW9uPiBtX29w
ZXJhbmQ7CiB9OwpAQCAtNTksNCArNjMsNiBAQCBwcml2YXRlOgogCiB9CiAKK1NQRUNJQUxJWkVf
VFlQRV9UUkFJVFNfV0hMU0xfRVhQUkVTU0lPTihMb2dpY2FsTm90RXhwcmVzc2lvbiwgaXNMb2dp
Y2FsTm90RXhwcmVzc2lvbigpKQorCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTE1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Np
b24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTE1ha2VB
cnJheVJlZmVyZW5jZUV4cHJlc3Npb24uaAppbmRleCAwYjlhYzI0ZDI0OS4uOWFiNzk5ODNlZmYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExT
TE1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xNYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uLmgK
QEAgLTQ5LDYgKzQ5LDEwIEBAIHB1YmxpYzoKICAgICBNYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNz
aW9uKGNvbnN0IE1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24mKSA9IGRlbGV0ZTsKICAgICBN
YWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uKE1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24m
JikgPSBkZWZhdWx0OwogCisgICAgYm9vbCBpc01ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24o
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisKKyAgICBFeHByZXNzaW9uJiBsVmFs
dWUoKSB7IHJldHVybiAqbV9sVmFsdWU7IH0KKwogcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8RXhwcmVzc2lvbj4gbV9sVmFsdWU7CiB9OwpAQCAtNTksNCArNjMsNiBAQCBwcml2YXRlOgog
CiB9CiAKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfRVhQUkVTU0lPTihNYWtlQXJyYXlS
ZWZlcmVuY2VFeHByZXNzaW9uLCBpc01ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24oKSkKKwog
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9B
U1QvV0hMU0xNYWtlUG9pbnRlckV4cHJlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTE1ha2VQb2ludGVyRXhwcmVzc2lvbi5oCmluZGV4IDE0NmZl
MjAzYmJiLi4yYTZiODUxMGUzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvQVNUL1dITFNMTWFrZVBvaW50ZXJFeHByZXNzaW9uLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTWFrZVBvaW50ZXJFeHByZXNz
aW9uLmgKQEAgLTQ5LDYgKzQ5LDEwIEBAIHB1YmxpYzoKICAgICBNYWtlUG9pbnRlckV4cHJlc3Np
b24oY29uc3QgTWFrZVBvaW50ZXJFeHByZXNzaW9uJikgPSBkZWxldGU7CiAgICAgTWFrZVBvaW50
ZXJFeHByZXNzaW9uKE1ha2VQb2ludGVyRXhwcmVzc2lvbiYmKSA9IGRlZmF1bHQ7CiAKKyAgICBi
b29sIGlzTWFrZVBvaW50ZXJFeHByZXNzaW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1
ZTsgfQorCisgICAgRXhwcmVzc2lvbiYgbFZhbHVlKCkgeyByZXR1cm4gKm1fbFZhbHVlOyB9CisK
IHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPEV4cHJlc3Npb24+IG1fbFZhbHVlOwogfTsK
QEAgLTU5LDQgKzYzLDYgQEAgcHJpdmF0ZToKIAogfQogCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRT
X1dITFNMX0VYUFJFU1NJT04oTWFrZVBvaW50ZXJFeHByZXNzaW9uLCBpc01ha2VQb2ludGVyRXhw
cmVzc2lvbigpKQorCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTE5hdGl2ZVR5cGVEZWNsYXJhdGlvbi5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTmF0aXZlVHlwZURlY2xhcmF0aW9u
LmgKaW5kZXggN2FkZmUyZmZiYjcuLjMyMGFiYzNjNDc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xOYXRpdmVUeXBlRGVjbGFyYXRpb24u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xOYXRp
dmVUeXBlRGVjbGFyYXRpb24uaApAQCAtNTIsNiArNTIsOCBAQCBwdWJsaWM6CiAgICAgTmF0aXZl
VHlwZURlY2xhcmF0aW9uKGNvbnN0IE5hdGl2ZVR5cGVEZWNsYXJhdGlvbiYpID0gZGVsZXRlOwog
ICAgIE5hdGl2ZVR5cGVEZWNsYXJhdGlvbihOYXRpdmVUeXBlRGVjbGFyYXRpb24mJikgPSBkZWZh
dWx0OwogCisgICAgVHlwZUFyZ3VtZW50cyYgdHlwZUFyZ3VtZW50cygpIHsgcmV0dXJuIG1fdHlw
ZUFyZ3VtZW50czsgfQorCiAgICAgc3RkOjp1bmlxdWVfcHRyPFR5cGU+IGNsb25lKCkgY29uc3Qg
b3ZlcnJpZGUKICAgICB7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMTnVsbExpdGVy
YWwuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTE51bGxM
aXRlcmFsLmgKaW5kZXggOTA1ZjJiM2ZiN2MuLmVlNjQ3Y2Y5ZDM5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xOdWxsTGl0ZXJhbC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTE51bGxMaXRl
cmFsLmgKQEAgLTQ4LDYgKzQ4LDggQEAgcHVibGljOgogICAgIGV4cGxpY2l0IE51bGxMaXRlcmFs
KGNvbnN0IE51bGxMaXRlcmFsJikgPSBkZWZhdWx0OwogICAgIE51bGxMaXRlcmFsKE51bGxMaXRl
cmFsJiYpID0gZGVmYXVsdDsKIAorICAgIGJvb2wgaXNOdWxsTGl0ZXJhbCgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIHRydWU7IH0KKwogcHJpdmF0ZToKIH07CiAKQEAgLTU3LDQgKzU5LDYgQEAg
cHJpdmF0ZToKIAogfQogCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX0VYUFJFU1NJT04o
TnVsbExpdGVyYWwsIGlzTnVsbExpdGVyYWwoKSkKKwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xQYXJhbWV0ZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFBhcmFtZXRlci5oCmlu
ZGV4IGFhZDcxNjdiMWNiLi45MjU4NmY4NjkxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUGFyYW1ldGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUGFyYW1ldGVyLmgKQEAgLTU3LDYg
KzU3LDkgQEAgcHVibGljOgogICAgIFBhcmFtZXRlcihjb25zdCBQYXJhbWV0ZXImKSA9IGRlbGV0
ZTsKICAgICBQYXJhbWV0ZXIoUGFyYW1ldGVyJiYpID0gZGVmYXVsdDsKIAorICAgIFR5cGUmIHR5
cGUoKSB7IHJldHVybiAqbV90eXBlOyB9CisgICAgT3B0aW9uYWw8QVNUOjpTZW1hbnRpYz4mIHNl
bWFudGljKCkgeyByZXR1cm4gbV9zZW1hbnRpYzsgfQorCiBwcml2YXRlOgogICAgIExleGVyOjpU
b2tlbiBtX29yaWdpbjsKICAgICBRdWFsaWZpZXJzIG1fcXVhbGlmaWVyczsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFBvaW50ZXJUeXBl
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xQb2ludGVy
VHlwZS5oCmluZGV4IGJmNWZjYmFiODNiLi4xNTI5NDI2YTJlZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUG9pbnRlclR5cGUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xQb2ludGVyVHlw
ZS5oCkBAIC00OSw5ICs0OSwxMSBAQCBwdWJsaWM6CiAgICAgUG9pbnRlclR5cGUoY29uc3QgUG9p
bnRlclR5cGUmKSA9IGRlbGV0ZTsKICAgICBQb2ludGVyVHlwZShQb2ludGVyVHlwZSYmKSA9IGRl
ZmF1bHQ7CiAKKyAgICBib29sIGlzUG9pbnRlclR5cGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBmYWxzZTsgfQorCiAgICAgc3RkOjp1bmlxdWVfcHRyPFR5cGU+IGNsb25lKCkgY29uc3Qgb3Zl
cnJpZGUKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBvaW50ZXJUeXBl
PihMZXhlcjo6VG9rZW4ob3JpZ2luKCkpLCBTdHJpbmcoYWRkcmVzc1NwYWNlKCkpLCBlbGVtZW50
VHlwZSgpLT5jbG9uZSgpKTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UG9pbnRl
clR5cGU+KExleGVyOjpUb2tlbihvcmlnaW4oKSksIFN0cmluZyhhZGRyZXNzU3BhY2UoKSksIGVs
ZW1lbnRUeXBlKCkuY2xvbmUoKSk7CiAgICAgfQogCiBwcml2YXRlOgpAQCAtNjMsNCArNjUsNiBA
QCBwcml2YXRlOgogCiB9CiAKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfVFlQRShQb2lu
dGVyVHlwZSwgaXNQb2ludGVyVHlwZSgpKQorCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFByb3BlcnR5QWNjZXNzRXhwcmVz
c2lvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUHJv
cGVydHlBY2Nlc3NFeHByZXNzaW9uLmgKaW5kZXggMDhkMjU3ZTQxZWMuLmJhMzhhNWMwMWVhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xQ
cm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmdwdS9XSExTTC9BU1QvV0hMU0xQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24uaApAQCAtNDksNiAr
NDksMTAgQEAgcHVibGljOgogICAgIFByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbihjb25zdCBQcm9w
ZXJ0eUFjY2Vzc0V4cHJlc3Npb24mKSA9IGRlbGV0ZTsKICAgICBQcm9wZXJ0eUFjY2Vzc0V4cHJl
c3Npb24oUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uJiYpID0gZGVmYXVsdDsKIAorICAgIGJvb2wg
aXNQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVl
OyB9CisKKyAgICBFeHByZXNzaW9uJiBiYXNlKCkgeyByZXR1cm4gKm1fYmFzZTsgfQorCiBwcml2
YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxFeHByZXNzaW9uPiBtX2Jhc2U7CiB9OwpAQCAtNTks
NCArNjMsNiBAQCBwcml2YXRlOgogCiB9CiAKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xf
RVhQUkVTU0lPTihQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24sIGlzUHJvcGVydHlBY2Nlc3NFeHBy
ZXNzaW9uKCkpCisKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvQVNUL1dITFNMUmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbi5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUmVhZE1vZGlmeVdyaXRlRXhw
cmVzc2lvbi5oCmluZGV4IDliMjdlZTE1Njg2Li5hNGMxNGNlMWNmMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUmVhZE1vZGlmeVdyaXRl
RXhwcmVzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTFJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24uaApAQCAtODQsNiArODQsMTQgQEAgcHVi
bGljOgogICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxWYXJpYWJsZVJlZmVyZW5jZT4o
VmFyaWFibGVSZWZlcmVuY2U6OndyYXAobV9uZXdWYWx1ZSkpOwogICAgIH0KIAorICAgIGJvb2wg
aXNSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1
ZTsgfQorCisgICAgRXhwcmVzc2lvbiYgbFZhbHVlKCkgeyByZXR1cm4gKm1fbFZhbHVlOyB9Cisg
ICAgQW5vbnltb3VzVmFyaWFibGVEZWNsYXJhdGlvbiYgb2xkVmFsdWUoKSB7IHJldHVybiBtX29s
ZFZhbHVlOyB9CisgICAgQW5vbnltb3VzVmFyaWFibGVEZWNsYXJhdGlvbiYgbmV3VmFsdWUoKSB7
IHJldHVybiBtX25ld1ZhbHVlOyB9CisgICAgRXhwcmVzc2lvbiYgbmV3VmFsdWVFeHByZXNzaW9u
KCkgeyByZXR1cm4gKm1fbmV3VmFsdWVFeHByZXNzaW9uOyB9CisgICAgRXhwcmVzc2lvbiYgcmVz
dWx0RXhwcmVzc2lvbigpIHsgcmV0dXJuICptX3Jlc3VsdEV4cHJlc3Npb247IH0KKwogcHJpdmF0
ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RXhwcmVzc2lvbj4gbV9sVmFsdWU7CiAgICAgQW5vbnlt
b3VzVmFyaWFibGVEZWNsYXJhdGlvbiBtX29sZFZhbHVlOwpAQCAtOTgsNCArMTA2LDYgQEAgcHJp
dmF0ZToKIAogfQogCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX0VYUFJFU1NJT04oUmVh
ZE1vZGlmeVdyaXRlRXhwcmVzc2lvbiwgaXNSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uKCkpCisK
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
QVNUL1dITFNMUmVmZXJlbmNlVHlwZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvQVNUL1dITFNMUmVmZXJlbmNlVHlwZS5oCmluZGV4IGY3Yjg4NTdhZGY5Li4yMjU3Zjli
ZTI0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMUmVmZXJlbmNlVHlwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML0FTVC9XSExTTFJlZmVyZW5jZVR5cGUuaApAQCAtNTAsMTEgKzUwLDEzIEBAIHB1Ymxp
YzoKIAogICAgIFJlZmVyZW5jZVR5cGUoY29uc3QgUmVmZXJlbmNlVHlwZSYpID0gZGVsZXRlOwog
ICAgIFJlZmVyZW5jZVR5cGUoUmVmZXJlbmNlVHlwZSYmKSA9IGRlZmF1bHQ7CisgICAgCisgICAg
VHlwZSYgZWxlbWVudFR5cGUoKSB7IHJldHVybiAqbV9lbGVtZW50VHlwZTsgfQogCiBwcm90ZWN0
ZWQ6CiAgICAgY29uc3QgTGV4ZXI6OlRva2VuJiBvcmlnaW4oKSBjb25zdCB7IHJldHVybiBtX29y
aWdpbjsgfQogICAgIGNvbnN0IFN0cmluZyYgYWRkcmVzc1NwYWNlKCkgY29uc3QgeyByZXR1cm4g
bV9hZGRyZXNzU3BhY2U7IH0KLSAgICBjb25zdCBzdGQ6OnVuaXF1ZV9wdHI8VHlwZT4mIGVsZW1l
bnRUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9lbGVtZW50VHlwZTsgfQorICAgIGNvbnN0IFR5cGUm
IGVsZW1lbnRUeXBlKCkgY29uc3QgeyByZXR1cm4gKm1fZWxlbWVudFR5cGU7IH0KIAogcHJpdmF0
ZToKICAgICBMZXhlcjo6VG9rZW4gbV9vcmlnaW47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xSZXR1cm4uaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFJldHVybi5oCmluZGV4IGY0NTQ4ZWRiNjBm
Li5jNWJmYzllNDI4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvQVNUL1dITFNMUmV0dXJuLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvQVNUL1dITFNMUmV0dXJuLmgKQEAgLTQ5LDkgKzQ5LDEzIEBAIHB1YmxpYzoKIAog
ICAgIFJldHVybihjb25zdCBSZXR1cm4mKSA9IGRlbGV0ZTsKICAgICBSZXR1cm4oUmV0dXJuJiYp
ID0gZGVmYXVsdDsKKyAgICAKKyAgICBib29sIGlzUmV0dXJuKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gdHJ1ZTsgfQorCisgICAgRXhwcmVzc2lvbiogdmFsdWUoKSB7IHJldHVybiBtX3ZhbHVl
LmdldCgpOyB9CiAKIHByaXZhdGU6Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEV4cHJlc3Npb24+IG1f
dmFsdWU7CisgICAgc3RkOjp1bmlxdWVfcHRyPEV4cHJlc3Npb24+IG1fdmFsdWU7IC8vIG51bGxh
YmxlCiB9OwogCiB9CkBAIC02MCw0ICs2NCw2IEBAIHByaXZhdGU6CiAKIH0KIAorU1BFQ0lBTEla
RV9UWVBFX1RSQUlUU19XSExTTF9TVEFURU1FTlQoUmV0dXJuLCBpc1JldHVybigpKQorCiAjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9X
SExTTFN0YXRlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMU3RhdGVtZW50LmgKaW5kZXggMmI5Nzg2ZTUxYTQuLjQzNGQyMWEwNDMyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTdGF0ZW1l
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xT
dGF0ZW1lbnQuaApAQCAtNDgsMTQgKzQ4LDM2IEBAIHB1YmxpYzoKICAgICBTdGF0ZW1lbnQoY29u
c3QgU3RhdGVtZW50JikgPSBkZWxldGU7CiAgICAgU3RhdGVtZW50KFN0YXRlbWVudCYmKSA9IGRl
ZmF1bHQ7CiAKKyAgICB2aXJ0dWFsIGJvb2wgaXNCbG9jaygpIGNvbnN0IHsgcmV0dXJuIGZhbHNl
OyB9CisgICAgdmlydHVhbCBib29sIGlzQnJlYWsoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQor
ICAgIHZpcnR1YWwgYm9vbCBpc0NvbnRpbnVlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAg
ICB2aXJ0dWFsIGJvb2wgaXNEb1doaWxlTG9vcCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Cisg
ICAgdmlydHVhbCBib29sIGlzRWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVudCgpIGNvbnN0IHsg
cmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGlzRmFsbHRocm91Z2goKSBjb25zdCB7
IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc0Zvckxvb3AoKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc0lmU3RhdGVtZW50KCkgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNSZXR1cm4oKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc1N3aXRjaENhc2UoKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc1N3aXRjaFN0YXRlbWVudCgpIGNvbnN0IHsg
cmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGlzVHJhcCgpIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGlzVmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1l
bnQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc1doaWxlTG9v
cCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisKIHByaXZhdGU6CiAgICAgTGV4ZXI6OlRva2Vu
IG1fb3JpZ2luOwogfTsKIAordHlwZWRlZiBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPFN0YXRlbWVu
dD4+IFN0YXRlbWVudHM7CisKIH0KIAogfQogCiB9CiAKKyNkZWZpbmUgU1BFQ0lBTElaRV9UWVBF
X1RSQUlUU19XSExTTF9TVEFURU1FTlQoVG9WYWx1ZVR5cGVOYW1lLCBwcmVkaWNhdGUpIFwKK1NQ
RUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oV2ViQ29yZTo6V0hMU0w6OkFTVDo6VG9WYWx1ZVR5
cGVOYW1lKSBcCisgICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6OldITFNMOjpB
U1Q6OlN0YXRlbWVudCYgc3RhdGVtZW50KSB7IHJldHVybiBzdGF0ZW1lbnQucHJlZGljYXRlOyB9
IFwKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKKwogI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTdHJ1Y3R1cmVEZWZp
bml0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xT
dHJ1Y3R1cmVEZWZpbml0aW9uLmgKaW5kZXggNWY2NTdkNWIwOTIuLjg3Y2M2MmYyMzU2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTdHJ1
Y3R1cmVEZWZpbml0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvQVNUL1dITFNMU3RydWN0dXJlRGVmaW5pdGlvbi5oCkBAIC01Myw2ICs1Myw4IEBAIHB1Ymxp
YzoKICAgICBTdHJ1Y3R1cmVEZWZpbml0aW9uKGNvbnN0IFN0cnVjdHVyZURlZmluaXRpb24mKSA9
IGRlbGV0ZTsKICAgICBTdHJ1Y3R1cmVEZWZpbml0aW9uKFN0cnVjdHVyZURlZmluaXRpb24mJikg
PSBkZWZhdWx0OwogCisgICAgU3RydWN0dXJlRWxlbWVudHMmIHN0cnVjdHVyZUVsZW1lbnRzKCkg
eyByZXR1cm4gbV9zdHJ1Y3R1cmVFbGVtZW50czsgfQorCiAgICAgc3RkOjp1bmlxdWVfcHRyPFR5
cGU+IGNsb25lKCkgY29uc3Qgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
QVNUL1dITFNMU3RydWN0dXJlRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvQVNUL1dITFNMU3RydWN0dXJlRWxlbWVudC5oCmluZGV4IDc4OTNkNTliYzE3Li4x
NGJlNDFjNzI5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvQVNUL1dITFNMU3RydWN0dXJlRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFN0cnVjdHVyZUVsZW1lbnQuaApAQCAtNTUsNiArNTUs
OSBAQCBwdWJsaWM6CiAgICAgU3RydWN0dXJlRWxlbWVudChjb25zdCBTdHJ1Y3R1cmVFbGVtZW50
JikgPSBkZWxldGU7CiAgICAgU3RydWN0dXJlRWxlbWVudChTdHJ1Y3R1cmVFbGVtZW50JiYpID0g
ZGVmYXVsdDsKIAorICAgIFR5cGUmIHR5cGUoKSB7IHJldHVybiAqbV90eXBlOyB9CisgICAgT3B0
aW9uYWw8U2VtYW50aWM+JiBzZW1hbnRpYygpIHsgcmV0dXJuIG1fc2VtYW50aWM7IH0KKwogcHJp
dmF0ZToKICAgICBMZXhlcjo6VG9rZW4gbV9vcmlnaW47CiAgICAgUXVhbGlmaWVycyBtX3F1YWxp
ZmllcnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9B
U1QvV0hMU0xTd2l0Y2hDYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xTd2l0Y2hDYXNlLmgKaW5kZXggOTNjZWZjNzJlMDAuLjE5OTA1YmQxNzg5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xT
d2l0Y2hDYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNU
L1dITFNMU3dpdGNoQ2FzZS5oCkBAIC01Miw2ICs1MiwxMSBAQCBwdWJsaWM6CiAKICAgICBTd2l0
Y2hDYXNlKGNvbnN0IFN3aXRjaENhc2UmKSA9IGRlbGV0ZTsKICAgICBTd2l0Y2hDYXNlKFN3aXRj
aENhc2UmJikgPSBkZWZhdWx0OworICAgIAorICAgIGJvb2wgaXNTd2l0Y2hDYXNlKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorCisgICAgT3B0aW9uYWw8Q29uc3RhbnRFeHByZXNz
aW9uPiYgdmFsdWUoKSB7IHJldHVybiBtX3ZhbHVlOyB9CisgICAgQmxvY2smIGJsb2NrKCkgeyBy
ZXR1cm4gbV9ibG9jazsgfQogCiBwcml2YXRlOgogICAgIE9wdGlvbmFsPENvbnN0YW50RXhwcmVz
c2lvbj4gbV92YWx1ZTsKQEAgLTY0LDQgKzY5LDYgQEAgcHJpdmF0ZToKIAogfQogCitTUEVDSUFM
SVpFX1RZUEVfVFJBSVRTX1dITFNMX1NUQVRFTUVOVChTd2l0Y2hDYXNlLCBpc1N3aXRjaENhc2Uo
KSkKKwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9BU1QvV0hMU0xTd2l0Y2hTdGF0ZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTFN3aXRjaFN0YXRlbWVudC5oCmluZGV4IGUyMTRkNzhjNWQ2
Li40NmU2NzY1NTBkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvQVNUL1dITFNMU3dpdGNoU3RhdGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU3dpdGNoU3RhdGVtZW50LmgKQEAgLTUxLDYgKzUx
LDExIEBAIHB1YmxpYzoKIAogICAgIFN3aXRjaFN0YXRlbWVudChjb25zdCBTd2l0Y2hTdGF0ZW1l
bnQmKSA9IGRlbGV0ZTsKICAgICBTd2l0Y2hTdGF0ZW1lbnQoU3dpdGNoU3RhdGVtZW50JiYpID0g
ZGVmYXVsdDsKKyAgICAKKyAgICBib29sIGlzU3dpdGNoU3RhdGVtZW50KCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gdHJ1ZTsgfQorCisgICAgRXhwcmVzc2lvbiYgdmFsdWUoKSB7IHJldHVybiAq
bV92YWx1ZTsgfQorICAgIFZlY3RvcjxTd2l0Y2hDYXNlPiYgc3dpdGNoQ2FzZXMoKSB7IHJldHVy
biBtX3N3aXRjaENhc2VzOyB9CiAKIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPEV4cHJl
c3Npb24+IG1fdmFsdWU7CkBAIC02Myw0ICs2OCw2IEBAIHByaXZhdGU6CiAKIH0KIAorU1BFQ0lB
TElaRV9UWVBFX1RSQUlUU19XSExTTF9TVEFURU1FTlQoU3dpdGNoU3RhdGVtZW50LCBpc1N3aXRj
aFN0YXRlbWVudCgpKQorCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFRlcm5hcnlFeHByZXNzaW9uLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xUZXJuYXJ5RXhwcmVzc2lvbi5oCmlu
ZGV4IGRlZmNmNjIyZThlLi45MDRjYzRjNDg5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVGVybmFyeUV4cHJlc3Npb24uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xUZXJuYXJ5RXhwcmVz
c2lvbi5oCkBAIC01MSw2ICs1MSwxMiBAQCBwdWJsaWM6CiAgICAgVGVybmFyeUV4cHJlc3Npb24o
Y29uc3QgVGVybmFyeUV4cHJlc3Npb24mKSA9IGRlbGV0ZTsKICAgICBUZXJuYXJ5RXhwcmVzc2lv
bihUZXJuYXJ5RXhwcmVzc2lvbiYmKSA9IGRlZmF1bHQ7CiAKKyAgICBib29sIGlzVGVybmFyeUV4
cHJlc3Npb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisKKyAgICBFeHByZXNz
aW9uJiBwcmVkaWNhdGUoKSB7IHJldHVybiAqbV9wcmVkaWNhdGU7IH0KKyAgICBFeHByZXNzaW9u
JiBib2R5RXhwcmVzc2lvbigpIHsgcmV0dXJuICptX2JvZHlFeHByZXNzaW9uOyB9CisgICAgRXhw
cmVzc2lvbiYgZWxzZUV4cHJlc3Npb24oKSB7IHJldHVybiAqbV9lbHNlRXhwcmVzc2lvbjsgfQor
CiBwcml2YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxFeHByZXNzaW9uPiBtX3ByZWRpY2F0ZTsK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8RXhwcmVzc2lvbj4gbV9ib2R5RXhwcmVzc2lvbjsKQEAgLTYz
LDQgKzY5LDYgQEAgcHJpdmF0ZToKIAogfQogCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNM
X0VYUFJFU1NJT04oVGVybmFyeUV4cHJlc3Npb24sIGlzVGVybmFyeUV4cHJlc3Npb24oKSkKKwog
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9B
U1QvV0hMU0xUcmFwLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1Qv
V0hMU0xUcmFwLmgKaW5kZXggNmFkMDA5YjkzNjIuLmRiYTJmMTJmODE3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xUcmFwLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVHJhcC5oCkBAIC00
Nyw2ICs0Nyw4IEBAIHB1YmxpYzoKIAogICAgIFRyYXAoY29uc3QgVHJhcCYpID0gZGVsZXRlOwog
ICAgIFRyYXAoVHJhcCYmKSA9IGRlZmF1bHQ7CisgICAgCisgICAgYm9vbCBpc1RyYXAoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAKIHByaXZhdGU6CiB9OwpAQCAtNTcsNCArNTks
NiBAQCBwcml2YXRlOgogCiB9CiAKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfU1RBVEVN
RU5UKFRyYXAsIGlzVHJhcCgpKQorCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFR5cGUuaAppbmRleCAxMjEzNWU2YTczNC4uY2Y0
Y2JjODg3OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L0FTVC9XSExTTFR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xUeXBlLmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpZiBFTkFCTEUoV0VCR1BVKQog
CiAjaW5jbHVkZSAiV0hMU0xOb2RlLmgiCisjaW5jbHVkZSA8d3RmL1R5cGVDYXN0cy5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQ0LDYgKzQ1LDExIEBAIHB1YmxpYzoKICAgICBUeXBl
KGNvbnN0IFR5cGUmKSA9IGRlbGV0ZTsKICAgICBUeXBlKFR5cGUmJikgPSBkZWZhdWx0OwogCisg
ICAgdmlydHVhbCBib29sIGlzVHlwZVJlZmVyZW5jZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
CisgICAgdmlydHVhbCBib29sIGlzUG9pbnRlclR5cGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQorICAgIHZpcnR1YWwgYm9vbCBpc0FycmF5UmVmZXJlbmNlVHlwZSgpIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGlzQXJyYXlUeXBlKCkgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH0KKwogICAgIHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRyPFR5cGU+IGNsb25lKCkgY29u
c3QgPSAwOwogCiBwcml2YXRlOgpAQCAtNTUsNCArNjEsOSBAQCBwcml2YXRlOgogCiB9CiAKKyNk
ZWZpbmUgU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19XSExTTF9UWVBFKFRvVmFsdWVUeXBlTmFtZSwg
cHJlZGljYXRlKSBcCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6OldITFNM
OjpBU1Q6OlRvVmFsdWVUeXBlTmFtZSkgXAorICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBX
ZWJDb3JlOjpXSExTTDo6QVNUOjpUeXBlJiB0eXBlKSB7IHJldHVybiB0eXBlLnByZWRpY2F0ZTsg
fSBcCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCisKICNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVHlwZUFyZ3VtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFR5cGVB
cmd1bWVudC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjdlNTgw
MWUzYjU2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvQVNUL1dITFNMVHlwZUFyZ3VtZW50LmNwcApAQCAtMCwwICsxLDY0IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiV0hMU0xMZXhlci5oIgorCisjaW5jbHVkZSA8d3RmL09wdGlvbmFs
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworbmFtZXNwYWNlIFdITFNMIHsKKworbmFtZXNw
YWNlIEFTVCB7CisKK1R5cGVBcmd1bWVudHMgY2xvbmUoY29uc3QgVHlwZUFyZ3VtZW50cyYgdHlw
ZUFyZ3VtZW50cykKK3sKKyAgICBUeXBlQXJndW1lbnRzIHJlc3VsdDsKKyAgICBmb3IgKGNvbnN0
IGF1dG8mIHR5cGVBcmd1bWVudCA6IHR5cGVBcmd1bWVudHMpCisgICAgICAgIHJlc3VsdC5hcHBl
bmQoY2xvbmUodHlwZUFyZ3VtZW50KSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworVHlwZUFy
Z3VtZW50IGNsb25lKGNvbnN0IFR5cGVBcmd1bWVudCYgdHlwZUFyZ3VtZW50KQoreworICAgIHJl
dHVybiBXVEY6OnZpc2l0KFdURjo6bWFrZVZpc2l0b3IoW10oY29uc3QgQ29uc3RhbnRFeHByZXNz
aW9uJiBjb25zdGFudEV4cHJlc3Npb24pIC0+IFR5cGVBcmd1bWVudCB7CisgICAgICAgIHJldHVy
biBjb25zdGFudEV4cHJlc3Npb247CisgICAgfSwgW10oY29uc3Qgc3RkOjp1bmlxdWVfcHRyPFR5
cGVSZWZlcmVuY2U+JiB0eXBlUmVmZXJlbmNlKSAtPiBUeXBlQXJndW1lbnQgeworICAgICAgICBy
ZXR1cm4gdHlwZVJlZmVyZW5jZS0+Y2xvbmVUeXBlUmVmZXJlbmNlKCk7CisgICAgfSksIHR5cGVB
cmd1bWVudCk7Cit9CisKK30KKworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVHlwZUFyZ3VtZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xUeXBlQXJndW1lbnQu
aAppbmRleCAxNTkxYWU5NzcyZi4uZTM4NWQ1MGQ1ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFR5cGVBcmd1bWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFR5cGVBcmd1bWVudC5o
CkBAIC0zMSw3ICszMSw2IEBACiAjaW5jbHVkZSAiV0hMU0xMZXhlci5oIgogI2luY2x1ZGUgPHd0
Zi9WYXJpYW50Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0
L1N0cmluZ1ZpZXcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0zOSw5ICszOCwxNCBA
QCBuYW1lc3BhY2UgV0hMU0wgewogCiBuYW1lc3BhY2UgQVNUIHsKIAotdHlwZWRlZiBWYXJpYW50
PENvbnN0YW50RXhwcmVzc2lvbiwgU3RyaW5nPiBUeXBlQXJndW1lbnQ7CitjbGFzcyBUeXBlUmVm
ZXJlbmNlOworCit0eXBlZGVmIFZhcmlhbnQ8Q29uc3RhbnRFeHByZXNzaW9uLCBzdGQ6OnVuaXF1
ZV9wdHI8VHlwZVJlZmVyZW5jZT4+IFR5cGVBcmd1bWVudDsKIHR5cGVkZWYgVmVjdG9yPFR5cGVB
cmd1bWVudD4gVHlwZUFyZ3VtZW50czsKIAorVHlwZUFyZ3VtZW50IGNsb25lKGNvbnN0IFR5cGVB
cmd1bWVudCYpOworVHlwZUFyZ3VtZW50cyBjbG9uZShjb25zdCBUeXBlQXJndW1lbnRzJik7CisK
IH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
QVNUL1dITFNMVHlwZURlZmluaXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML0FTVC9XSExTTFR5cGVEZWZpbml0aW9uLmgKaW5kZXggYWE0OGIwMjk0NjIuLmY3MzYy
OWUyOWIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9B
U1QvV0hMU0xUeXBlRGVmaW5pdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML0FTVC9XSExTTFR5cGVEZWZpbml0aW9uLmgKQEAgLTUyLDYgKzUyLDggQEAgcHVi
bGljOgogICAgIFR5cGVEZWZpbml0aW9uKGNvbnN0IFR5cGVEZWZpbml0aW9uJikgPSBkZWxldGU7
CiAgICAgVHlwZURlZmluaXRpb24oVHlwZURlZmluaXRpb24mJikgPSBkZWZhdWx0OwogCisgICAg
QVNUOjpUeXBlJiB0eXBlKCkgeyByZXR1cm4gKm1fdHlwZTsgfQorCiAgICAgc3RkOjp1bmlxdWVf
cHRyPFR5cGU+IGNsb25lKCkgY29uc3Qgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvQVNUL1dITFNMVHlwZVJlZmVyZW5jZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvQVNUL1dITFNMVHlwZVJlZmVyZW5jZS5oCmluZGV4IDdmNDg0ZGY3Y2E4Li40
OTQ0MWQ4YjVjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvQVNUL1dITFNMVHlwZVJlZmVyZW5jZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML0FTVC9XSExTTFR5cGVSZWZlcmVuY2UuaApAQCAtNTIsOSArNTIsMTggQEAg
cHVibGljOgogICAgIFR5cGVSZWZlcmVuY2UoY29uc3QgVHlwZVJlZmVyZW5jZSYpID0gZGVsZXRl
OwogICAgIFR5cGVSZWZlcmVuY2UoVHlwZVJlZmVyZW5jZSYmKSA9IGRlZmF1bHQ7CiAKKyAgICBi
b29sIGlzVHlwZVJlZmVyZW5jZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKwor
ICAgIFR5cGVBcmd1bWVudHMmIHR5cGVBcmd1bWVudHMoKSB7IHJldHVybiBtX3R5cGVBcmd1bWVu
dHM7IH0KKworICAgIHN0ZDo6dW5pcXVlX3B0cjxUeXBlUmVmZXJlbmNlPiBjbG9uZVR5cGVSZWZl
cmVuY2UoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VHlw
ZVJlZmVyZW5jZT4oTGV4ZXI6OlRva2VuKG1fb3JpZ2luKSwgU3RyaW5nKG1fbmFtZSksIEFTVDo6
Y2xvbmUobV90eXBlQXJndW1lbnRzKSk7CisgICAgfQorCiAgICAgc3RkOjp1bmlxdWVfcHRyPFR5
cGU+IGNsb25lKCkgY29uc3Qgb3ZlcnJpZGUKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPFR5cGVSZWZlcmVuY2U+KExleGVyOjpUb2tlbihtX29yaWdpbiksIFN0cmluZyht
X25hbWUpLCBUeXBlQXJndW1lbnRzKG1fdHlwZUFyZ3VtZW50cykpOworICAgICAgICByZXR1cm4g
Y2xvbmVUeXBlUmVmZXJlbmNlKCk7CiAgICAgfQogCiBwcml2YXRlOgpAQCAtNjksNCArNzgsNiBA
QCBwcml2YXRlOgogCiB9CiAKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfV0hMU0xfVFlQRShUeXBl
UmVmZXJlbmNlLCBpc1R5cGVSZWZlcmVuY2UoKSkKKwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xVbnNpZ25lZEludGVnZXJM
aXRlcmFsLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xV
bnNpZ25lZEludGVnZXJMaXRlcmFsLmgKaW5kZXggODliMzAwM2U4YzYuLjU4ZDZlMjMwNzVlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xV
bnNpZ25lZEludGVnZXJMaXRlcmFsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvQVNUL1dITFNMVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbC5oCkBAIC01MSw2ICs1MSw4
IEBAIHB1YmxpYzoKIAogICAgIHVuc2lnbmVkIHZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1
ZTsgfQogCisgICAgYm9vbCBpc1Vuc2lnbmVkSW50ZWdlckxpdGVyYWwoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiB0cnVlOyB9CisKIHByaXZhdGU6CiAgICAgdW5zaWduZWQgbV92YWx1ZTsKIH07
CkBAIC02MSw0ICs2Myw2IEBAIHByaXZhdGU6CiAKIH0KIAorU1BFQ0lBTElaRV9UWVBFX1RSQUlU
U19XSExTTF9FWFBSRVNTSU9OKFVuc2lnbmVkSW50ZWdlckxpdGVyYWwsIGlzVW5zaWduZWRJbnRl
Z2VyTGl0ZXJhbCgpKQorCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFZhcmlhYmxlRGVjbGFyYXRpb24uaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFZhcmlhYmxlRGVjbGFyYXRpb24u
aAppbmRleCA2OWY4OGM3MmM5NS4uZmYwMzY4MTkzYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFZhcmlhYmxlRGVjbGFyYXRpb24uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xWYXJpYWJs
ZURlY2xhcmF0aW9uLmgKQEAgLTYxLDYgKzYxLDEwIEBAIHB1YmxpYzoKIAogICAgIExleGVyOjpU
b2tlbiBvcmlnaW4oKSBjb25zdCB7IHJldHVybiBtX29yaWdpbjsgfQogCisgICAgVHlwZSYgdHlw
ZSgpIHsgcmV0dXJuICptX3R5cGU7IH0KKyAgICBPcHRpb25hbDxTZW1hbnRpYz4mIHNlbWFudGlj
KCkgeyByZXR1cm4gbV9zZW1hbnRpYzsgfQorICAgIEV4cHJlc3Npb24qIGluaXRpYWxpemVyKCkg
eyByZXR1cm4gbV9pbml0aWFsaXplci5nZXQoKTsgfQorCiBwcml2YXRlOgogICAgIExleGVyOjpU
b2tlbiBtX29yaWdpbjsKICAgICBRdWFsaWZpZXJzIG1fcXVhbGlmaWVyczsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFZhcmlhYmxlRGVj
bGFyYXRpb25zU3RhdGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9BU1QvV0hMU0xWYXJpYWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudC5oCmluZGV4IDAxOGJmYzk5
Y2NiLi5mOGRhZmMyNTFmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvQVNUL1dITFNMVmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xWYXJpYWJsZURlY2xh
cmF0aW9uc1N0YXRlbWVudC5oCkBAIC01MCw5ICs1MCwxMyBAQCBwdWJsaWM6CiAKICAgICBWYXJp
YWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudChjb25zdCBWYXJpYWJsZURlY2xhcmF0aW9uc1N0YXRl
bWVudCYpID0gZGVsZXRlOwogICAgIFZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50KFZhcmlh
YmxlRGVjbGFyYXRpb25zU3RhdGVtZW50JiYpID0gZGVmYXVsdDsKKyAgICAKKyAgICBib29sIGlz
VmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0
cnVlOyB9CisKKyAgICBWZWN0b3I8VmFyaWFibGVEZWNsYXJhdGlvbj4mIHZhcmlhYmxlRGVjbGFy
YXRpb25zKCkgeyByZXR1cm4gbV92YXJpYWJsZURlY2xhcmF0aW9uczsgfQogCiBwcml2YXRlOgot
ICAgIFZlY3RvcjxWYXJpYWJsZURlY2xhcmF0aW9uPiYmIG1fdmFyaWFibGVEZWNsYXJhdGlvbnM7
CisgICAgVmVjdG9yPFZhcmlhYmxlRGVjbGFyYXRpb24+IG1fdmFyaWFibGVEZWNsYXJhdGlvbnM7
CiB9OwogCiB9CkBAIC02MSw0ICs2NSw2IEBAIHByaXZhdGU6CiAKIH0KIAorU1BFQ0lBTElaRV9U
WVBFX1RSQUlUU19XSExTTF9TVEFURU1FTlQoVmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQs
IGlzVmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQoKSkKKwogI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xWYXJpYWJsZVJl
ZmVyZW5jZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNM
VmFyaWFibGVSZWZlcmVuY2UuaAppbmRleCA4MjMxYTQwM2FmMC4uMmFlODI4ZDUyOTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFZhcmlh
YmxlUmVmZXJlbmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
QVNUL1dITFNMVmFyaWFibGVSZWZlcmVuY2UuaApAQCAtNjYsNiArNjYsOCBAQCBwdWJsaWM6CiAg
ICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCisgICAgYm9vbCBpc1ZhcmlhYmxlUmVmZXJl
bmNlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorCiBwcml2YXRlOgogICAgIFZh
cmlhYmxlUmVmZXJlbmNlKExleGVyOjpUb2tlbiYmIG9yaWdpbikKICAgICAgICAgOiBFeHByZXNz
aW9uKFdURk1vdmUob3JpZ2luKSkKQEAgLTgyLDQgKzg0LDYgQEAgcHJpdmF0ZToKIAogfQogCitT
UEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX0VYUFJFU1NJT04oVmFyaWFibGVSZWZlcmVuY2Us
IGlzVmFyaWFibGVSZWZlcmVuY2UoKSkKKwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xXaGlsZUxvb3AuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFdoaWxlTG9vcC5oCmluZGV4IDc5
NWRmZGQ2YjdmLi4xZDRhZTc1OTc3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvQVNUL1dITFNMV2hpbGVMb29wLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMV2hpbGVMb29wLmgKQEAgLTUwLDYgKzUwLDEx
IEBAIHB1YmxpYzoKIAogICAgIFdoaWxlTG9vcChjb25zdCBXaGlsZUxvb3AmKSA9IGRlbGV0ZTsK
ICAgICBXaGlsZUxvb3AoV2hpbGVMb29wJiYpID0gZGVmYXVsdDsKKyAgICAKKyAgICBib29sIGlz
V2hpbGVMb29wKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorCisgICAgRXhwcmVz
c2lvbiYgY29uZGl0aW9uYWwoKSB7IHJldHVybiAqbV9jb25kaXRpb25hbDsgfQorICAgIFN0YXRl
bWVudCYgYm9keSgpIHsgcmV0dXJuICptX2JvZHk7IH0KIAogcHJpdmF0ZToKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8RXhwcmVzc2lvbj4gbV9jb25kaXRpb25hbDsKQEAgLTYyLDQgKzY3LDYgQEAgcHJp
dmF0ZToKIAogfQogCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1dITFNMX1NUQVRFTUVOVChXaGls
ZUxvb3AsIGlzV2hpbGVMb29wKCkpCisKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xOYW1lUmVzb2x2ZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xOYW1lUmVzb2x2ZXIuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi43ODBkNWM1NDI1YQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMTmFtZVJlc29s
dmVyLmNwcApAQCAtMCwwICsxLDUwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmIEVOQUJMRShXRUJHUFUp
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXSExTTE5hbWVSZXNvbHZlci5oIgor
CisjaW5jbHVkZSAiV0hMU0xWaXNpdG9yLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworbmFt
ZXNwYWNlIFdITFNMIHsKKworY2xhc3MgTmFtZVJlc29sdmVyIDogcHVibGljIFZpc2l0b3Igewor
ICAgIH5OYW1lUmVzb2x2ZXIoKSA9IGRlZmF1bHQ7Cit9OworCit2b2lkIHJlc29sdmVOYW1lc0lu
VHlwZXMoUHJvZ3JhbSYpCit7CisKK30KKworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xOYW1lUmVzb2x2ZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMTmFtZVJlc29sdmVyLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjQ3ZDRkNmE1NzkzCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xO
YW1lUmVzb2x2ZXIuaApAQCAtMCwwICsxLDQyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSAiV0hMU0xQcm9ncmFtLmgiCisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworbmFtZXNwYWNlIFdITFNMIHsKKwordm9pZCByZXNvbHZlTmFt
ZXNJblR5cGVzKFByb2dyYW0mIHByb2dyYW0pOworCit9CisKK30KKworI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFBhcnNlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFBhcnNlci5jcHAKaW5k
ZXggYmJjOWUxNjBlNDguLmJjNmU3M2U2YTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQYXJzZXIuY3BwCkBAIC0zODMsNyArMzgzLDcgQEAg
YXV0byBQYXJzZXI6OnBhcnNlVHlwZUFyZ3VtZW50KCkgLT4gRXhwZWN0ZWQ8QVNUOjpUeXBlQXJn
dW1lbnQsIEVycm9yPiB7CiAgICAgYXV0byByZXN1bHQgPSBjb25zdW1lVHlwZShMZXhlcjo6VG9r
ZW46OlR5cGU6OklkZW50aWZpZXIpOwogICAgIGlmICghcmVzdWx0KQogICAgICAgICByZXR1cm4g
VW5leHBlY3RlZDxFcnJvcj4ocmVzdWx0LmVycm9yKCkpOwotICAgIHJldHVybiBBU1Q6OlR5cGVB
cmd1bWVudChyZXN1bHQtPnN0cmluZ1ZpZXcudG9TdHJpbmcoKSk7CisgICAgcmV0dXJuIEFTVDo6
VHlwZUFyZ3VtZW50KHN0ZDo6bWFrZV91bmlxdWU8QVNUOjpUeXBlUmVmZXJlbmNlPihMZXhlcjo6
VG9rZW4oKnJlc3VsdCksIHJlc3VsdC0+c3RyaW5nVmlldy50b1N0cmluZygpLCBBU1Q6OlR5cGVB
cmd1bWVudHMoKSkpOwogfQogCiBhdXRvIFBhcnNlcjo6cGFyc2VUeXBlQXJndW1lbnRzKCkgLT4g
RXhwZWN0ZWQ8QVNUOjpUeXBlQXJndW1lbnRzLCBFcnJvcj4gewpAQCAtODYzLDcgKzg2Myw3IEBA
IGF1dG8gUGFyc2VyOjpwYXJzZUVudW1lcmF0aW9uRGVmaW5pdGlvbigpIC0+IEV4cGVjdGVkPEFT
VDo6RW51bWVyYXRpb25EZWZpbml0aW9uCiAgICAgaWYgKCFmaXJzdEVudW1lcmF0aW9uTWVtYmVy
KQogICAgICAgICByZXR1cm4gVW5leHBlY3RlZDxFcnJvcj4oZmlyc3RFbnVtZXJhdGlvbk1lbWJl
ci5lcnJvcigpKTsKIAotICAgIFZlY3RvcjxBU1Q6OkVudW1lcmF0aW9uTWVtYmVyPiBtZW1iZXJz
OworICAgIEFTVDo6RW51bWVyYXRpb25NZW1iZXJzIG1lbWJlcnM7CiAgICAgbWVtYmVycy5hcHBl
bmQoV1RGTW92ZSgqZmlyc3RFbnVtZXJhdGlvbk1lbWJlcikpOwogCiAgICAgd2hpbGUgKHRyeVR5
cGUoTGV4ZXI6OlRva2VuOjpUeXBlOjpDb21tYSkpIHsKQEAgLTEyMTksNyArMTIxOSw3IEBAIGF1
dG8gUGFyc2VyOjpwYXJzZUJsb2NrKCkgLT4gRXhwZWN0ZWQ8QVNUOjpCbG9jaywgRXJyb3I+IHsK
IAogQVNUOjpCbG9jayBQYXJzZXI6OnBhcnNlQmxvY2tCb2R5KExleGVyOjpUb2tlbiYmIG9yaWdp
bikKIHsKLSAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEFTVDo6U3RhdGVtZW50Pj4gc3RhdGVt
ZW50czsKKyAgICBBU1Q6OlN0YXRlbWVudHMgc3RhdGVtZW50czsKICAgICB3aGlsZSAodHJ1ZSkg
ewogICAgICAgICBhdXRvIHN0YXRlbWVudCA9IGJhY2t0cmFja2luZ1Njb3BlPEV4cGVjdGVkPHN0
ZDo6dW5pcXVlX3B0cjxBU1Q6OlN0YXRlbWVudD4sIEVycm9yPj4oWyZdKCkgewogICAgICAgICAg
ICAgcmV0dXJuIHBhcnNlU3RhdGVtZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFByZXBhcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQcmVwYXJlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMC4uMGViNjRkZWNkNGQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFByZXBhcmUuY3BwCkBAIC0wLDAgKzEs
NjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaWYgRU5BQkxFKFdFQkdQVSkKKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIldITFNMUHJlcGFyZS5oIgorCisjaW5jbHVkZSAiV0hMU0xOYW1lUmVz
b2x2ZXIuaCIKKyNpbmNsdWRlICJXSExTTFBhcnNlci5oIgorI2luY2x1ZGUgIldITFNMUHJvZ3Jh
bS5oIgorI2luY2x1ZGUgIldITFNMU3RhbmRhcmRMaWJyYXJ5LmgiCisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworbmFtZXNwYWNlIFdITFNMIHsKKworT3B0aW9uYWw8UHJlcGFyYXRpb25SZXN1bHQ+
IHByZXBhcmUoU3RyaW5nVmlldyBzb3VyY2UpCit7CisgICAgUHJvZ3JhbSBwcm9ncmFtOworCisg
ICAgUGFyc2VyIHBhcnNlcjsKKyAgICBhdXRvIHN0YW5kYXJkTGlicmFyeSA9IFN0cmluZzo6ZnJv
bVVURjgoV0hMU0xTdGFuZGFyZExpYnJhcnksIHNpemVvZihXSExTTFN0YW5kYXJkTGlicmFyeSkp
OworICAgIGJvb2wgc3VjY2VzcyA9IHN0YXRpY19jYXN0PGJvb2w+KHBhcnNlci5wYXJzZShwcm9n
cmFtLCBzdGFuZGFyZExpYnJhcnksIFdITFNMOjpQYXJzZXI6Ok1vZGU6OlN0YW5kYXJkTGlicmFy
eSkpOworICAgIGlmICghc3VjY2VzcykKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICBzdWNjZXNzID0gc3RhdGljX2Nhc3Q8Ym9vbD4ocGFyc2VyLnBhcnNlKHByb2dyYW0sIHNvdXJj
ZSwgV0hMU0w6OlBhcnNlcjo6TW9kZTo6VXNlcikpOworICAgIGlmICghc3VjY2VzcykKKyAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIHJlc29sdmVOYW1lc0luVHlwZXMocHJvZ3Jh
bSk7CisKKyAgICByZXR1cm4gUHJlcGFyYXRpb25SZXN1bHQoKTsKK30KKworfQorCit9CisKKyNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hM
U0xQcmVwYXJlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFBy
ZXBhcmUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMDk0OTI2NzI0
ZjYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9XSExTTFByZXBhcmUuaApAQCAtMCwwICsxLDUwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+Cisj
aW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVmlldy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K25hbWVzcGFjZSBXSExTTCB7CisKK3N0cnVjdCBQcmVwYXJhdGlvblJlc3VsdAoreworICAgIC8v
IE1ldGFsIHNoYWRpbmcgbGFuZ3VhZ2UgY29kZQorICAgIC8vIE1hcHBpbmcgb2YgYXR0cmlidXRl
IElEcworICAgIC8vIGV0Yy4KK307CisKK09wdGlvbmFsPFByZXBhcmF0aW9uUmVzdWx0PiBwcmVw
YXJlKFN0cmluZ1ZpZXcgc291cmNlKTsKKworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQcm9ncmFtLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFByb2dyYW0uaAppbmRleCA5ZTYw
YjI3Njc0OC4uNTYzMGZlNjllZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML1dITFNMUHJvZ3JhbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML1dITFNMUHJvZ3JhbS5oCkBAIC02OSw2ICs2OSwxMyBAQCBwdWJsaWM6CiAg
ICAgICAgIG1fbmF0aXZlVHlwZURlY2xhcmF0aW9ucy5hcHBlbmQoV1RGTW92ZShuYXRpdmVUeXBl
RGVjbGFyYXRpb24pKTsKICAgICB9CiAKKyAgICBWZWN0b3I8QVNUOjpUeXBlRGVmaW5pdGlvbj4m
IHR5cGVEZWZpbml0aW9ucygpIHsgcmV0dXJuIG1fdHlwZURlZmluaXRpb25zOyB9CisgICAgVmVj
dG9yPEFTVDo6U3RydWN0dXJlRGVmaW5pdGlvbj4mIHN0cnVjdHVyZURlZmluaXRpb25zKCkgeyBy
ZXR1cm4gbV9zdHJ1Y3R1cmVEZWZpbml0aW9uczsgfQorICAgIFZlY3RvcjxBU1Q6OkVudW1lcmF0
aW9uRGVmaW5pdGlvbj4mIGVudW1lcmF0aW9uRGVmaW5pdGlvbnMoKSB7IHJldHVybiBtX2VudW1l
cmF0aW9uRGVmaW5pdGlvbnM7IH0KKyAgICBWZWN0b3I8QVNUOjpGdW5jdGlvbkRlZmluaXRpb24+
JiBmdW5jdGlvbkRlZmluaXRpb25zKCkgeyByZXR1cm4gbV9mdW5jdGlvbkRlZmluaXRpb25zOyB9
CisgICAgVmVjdG9yPEFTVDo6TmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbj4mIG5hdGl2ZUZ1bmN0
aW9uRGVjbGFyYXRpb25zKCkgeyByZXR1cm4gbV9uYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uczsg
fQorICAgIFZlY3RvcjxBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbj4mIG5hdGl2ZVR5cGVEZWNs
YXJhdGlvbnMoKSB7IHJldHVybiBtX25hdGl2ZVR5cGVEZWNsYXJhdGlvbnM7IH0KKwogcHJpdmF0
ZToKICAgICBWZWN0b3I8QVNUOjpUeXBlRGVmaW5pdGlvbj4gbV90eXBlRGVmaW5pdGlvbnM7CiAg
ICAgVmVjdG9yPEFTVDo6U3RydWN0dXJlRGVmaW5pdGlvbj4gbV9zdHJ1Y3R1cmVEZWZpbml0aW9u
czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNM
VmlzaXRvci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xWaXNp
dG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjUxNjg1NmU0MWQw
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
V0hMU0xWaXNpdG9yLmgKQEAgLTAsMCArMSw1NzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlICJXSExTTFByb2dyYW0uaCIKKyNp
bmNsdWRlICJXSExTTEFub255bW91c1ZhcmlhYmxlRGVjbGFyYXRpb24uaCIKKyNpbmNsdWRlICJX
SExTTEFycmF5UmVmZXJlbmNlVHlwZS5oIgorI2luY2x1ZGUgIldITFNMQXJyYXlUeXBlLmgiCisj
aW5jbHVkZSAiV0hMU0xBc3NpZ25tZW50RXhwcmVzc2lvbi5oIgorI2luY2x1ZGUgIldITFNMQmFz
ZUZ1bmN0aW9uQXR0cmlidXRlLmgiCisjaW5jbHVkZSAiV0hMU0xCYXNlU2VtYW50aWMuaCIKKyNp
bmNsdWRlICJXSExTTEJsb2NrLmgiCisjaW5jbHVkZSAiV0hMU0xCb29sZWFuTGl0ZXJhbC5oIgor
I2luY2x1ZGUgIldITFNMQnJlYWsuaCIKKyNpbmNsdWRlICJXSExTTEJ1aWx0SW5TZW1hbnRpYy5o
IgorI2luY2x1ZGUgIldITFNMQ2FsbEV4cHJlc3Npb24uaCIKKyNpbmNsdWRlICJXSExTTENvbW1h
RXhwcmVzc2lvbi5oIgorI2luY2x1ZGUgIldITFNMQ29uc3RhbnRFeHByZXNzaW9uLmgiCisjaW5j
bHVkZSAiV0hMU0xDb25zdGFudEV4cHJlc3Npb25FbnVtZXJhdGlvbk1lbWJlclJlZmVyZW5jZS5o
IgorI2luY2x1ZGUgIldITFNMQ29udGludWUuaCIKKyNpbmNsdWRlICJXSExTTERlcmVmZXJlbmNl
RXhwcmVzc2lvbi5oIgorI2luY2x1ZGUgIldITFNMRG9XaGlsZUxvb3AuaCIKKyNpbmNsdWRlICJX
SExTTERvdEV4cHJlc3Npb24uaCIKKyNpbmNsdWRlICJXSExTTEVmZmVjdGZ1bEV4cHJlc3Npb25T
dGF0ZW1lbnQuaCIKKyNpbmNsdWRlICJXSExTTEVudW1lcmF0aW9uRGVmaW5pdGlvbi5oIgorI2lu
Y2x1ZGUgIldITFNMRW51bWVyYXRpb25NZW1iZXIuaCIKKyNpbmNsdWRlICJXSExTTEV4cHJlc3Np
b24uaCIKKyNpbmNsdWRlICJXSExTTEZhbGx0aHJvdWdoLmgiCisjaW5jbHVkZSAiV0hMU0xGbG9h
dExpdGVyYWwuaCIKKyNpbmNsdWRlICJXSExTTEZvckxvb3AuaCIKKyNpbmNsdWRlICJXSExTTEZ1
bmN0aW9uQXR0cmlidXRlLmgiCisjaW5jbHVkZSAiV0hMU0xGdW5jdGlvbkRlY2xhcmF0aW9uLmgi
CisjaW5jbHVkZSAiV0hMU0xGdW5jdGlvbkRlZmluaXRpb24uaCIKKyNpbmNsdWRlICJXSExTTElm
U3RhdGVtZW50LmgiCisjaW5jbHVkZSAiV0hMU0xJbmRleEV4cHJlc3Npb24uaCIKKyNpbmNsdWRl
ICJXSExTTEludGVnZXJMaXRlcmFsLmgiCisjaW5jbHVkZSAiV0hMU0xMb2dpY2FsRXhwcmVzc2lv
bi5oIgorI2luY2x1ZGUgIldITFNMTG9naWNhbE5vdEV4cHJlc3Npb24uaCIKKyNpbmNsdWRlICJX
SExTTE1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24uaCIKKyNpbmNsdWRlICJXSExTTE1ha2VQ
b2ludGVyRXhwcmVzc2lvbi5oIgorI2luY2x1ZGUgIldITFNMTmF0aXZlRnVuY3Rpb25EZWNsYXJh
dGlvbi5oIgorI2luY2x1ZGUgIldITFNMTmF0aXZlVHlwZURlY2xhcmF0aW9uLmgiCisjaW5jbHVk
ZSAiV0hMU0xOb2RlLmgiCisjaW5jbHVkZSAiV0hMU0xOdWxsTGl0ZXJhbC5oIgorI2luY2x1ZGUg
IldITFNMTnVtVGhyZWFkc0Z1bmN0aW9uQXR0cmlidXRlLmgiCisjaW5jbHVkZSAiV0hMU0xQYXJh
bWV0ZXIuaCIKKyNpbmNsdWRlICJXSExTTFBvaW50ZXJUeXBlLmgiCisjaW5jbHVkZSAiV0hMU0xQ
cm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24uaCIKKyNpbmNsdWRlICJXSExTTFF1YWxpZmllci5oIgor
I2luY2x1ZGUgIldITFNMUmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbi5oIgorI2luY2x1ZGUgIldI
TFNMUmVmZXJlbmNlVHlwZS5oIgorI2luY2x1ZGUgIldITFNMUmVzb3VyY2VTZW1hbnRpYy5oIgor
I2luY2x1ZGUgIldITFNMUmV0dXJuLmgiCisjaW5jbHVkZSAiV0hMU0xTZW1hbnRpYy5oIgorI2lu
Y2x1ZGUgIldITFNMU3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFudGljLmgiCisjaW5jbHVkZSAi
V0hMU0xTdGFnZUluT3V0U2VtYW50aWMuaCIKKyNpbmNsdWRlICJXSExTTFN0YXRlbWVudC5oIgor
I2luY2x1ZGUgIldITFNMU3RydWN0dXJlRGVmaW5pdGlvbi5oIgorI2luY2x1ZGUgIldITFNMU3Ry
dWN0dXJlRWxlbWVudC5oIgorI2luY2x1ZGUgIldITFNMU3dpdGNoQ2FzZS5oIgorI2luY2x1ZGUg
IldITFNMU3dpdGNoU3RhdGVtZW50LmgiCisjaW5jbHVkZSAiV0hMU0xUZXJuYXJ5RXhwcmVzc2lv
bi5oIgorI2luY2x1ZGUgIldITFNMVHJhcC5oIgorI2luY2x1ZGUgIldITFNMVHlwZS5oIgorI2lu
Y2x1ZGUgIldITFNMVHlwZUFyZ3VtZW50LmgiCisjaW5jbHVkZSAiV0hMU0xUeXBlRGVmaW5pdGlv
bi5oIgorI2luY2x1ZGUgIldITFNMVHlwZVJlZmVyZW5jZS5oIgorI2luY2x1ZGUgIldITFNMVW5z
aWduZWRJbnRlZ2VyTGl0ZXJhbC5oIgorI2luY2x1ZGUgIldITFNMVmFsdWUuaCIKKyNpbmNsdWRl
ICJXSExTTFZhcmlhYmxlRGVjbGFyYXRpb24uaCIKKyNpbmNsdWRlICJXSExTTFZhcmlhYmxlRGVj
bGFyYXRpb25zU3RhdGVtZW50LmgiCisjaW5jbHVkZSAiV0hMU0xWYXJpYWJsZVJlZmVyZW5jZS5o
IgorI2luY2x1ZGUgIldITFNMV2hpbGVMb29wLmgiCisKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CituYW1lc3BhY2UgV0hMU0wgeworCitjbGFzcyBWaXNpdG9yIHsKKyAgICB+VmlzaXRvcigpID0g
ZGVmYXVsdDsKKworICAgIHZpcnR1YWwgdm9pZCB2aXNpdChQcm9ncmFtJiBwcm9ncmFtKQorICAg
IHsKKyAgICAgICAgZm9yIChhdXRvJiB0eXBlRGVmaW5pdGlvbiA6IHByb2dyYW0udHlwZURlZmlu
aXRpb25zKCkpCisgICAgICAgICAgICB2aXNpdCh0eXBlRGVmaW5pdGlvbik7CisgICAgICAgIGZv
ciAoYXV0byYgc3RydWN0dXJlRGVmaW5pdGlvbiA6IHByb2dyYW0uc3RydWN0dXJlRGVmaW5pdGlv
bnMoKSkKKyAgICAgICAgICAgIHZpc2l0KHN0cnVjdHVyZURlZmluaXRpb24pOworICAgICAgICBm
b3IgKGF1dG8mIGVudW1lcmF0aW9uRGVmaW5pdGlvbiA6IHByb2dyYW0uZW51bWVyYXRpb25EZWZp
bml0aW9ucygpKQorICAgICAgICAgICAgdmlzaXQoZW51bWVyYXRpb25EZWZpbml0aW9uKTsKKyAg
ICAgICAgZm9yIChhdXRvJiBmdW5jdGlvbkRlZmluaXRpb24gOiBwcm9ncmFtLmZ1bmN0aW9uRGVm
aW5pdGlvbnMoKSkKKyAgICAgICAgICAgIHZpc2l0KGZ1bmN0aW9uRGVmaW5pdGlvbik7CisgICAg
ICAgIGZvciAoYXV0byYgbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbiA6IHByb2dyYW0ubmF0aXZl
RnVuY3Rpb25EZWNsYXJhdGlvbnMoKSkKKyAgICAgICAgICAgIHZpc2l0KG5hdGl2ZUZ1bmN0aW9u
RGVjbGFyYXRpb24pOworICAgICAgICBmb3IgKGF1dG8mIG5hdGl2ZVR5cGVEZWNsYXJhdGlvbiA6
IHByb2dyYW0ubmF0aXZlVHlwZURlY2xhcmF0aW9ucygpKQorICAgICAgICAgICAgdmlzaXQobmF0
aXZlVHlwZURlY2xhcmF0aW9uKTsKKyAgICB9CisKKyAgICB2b2lkIHZpc2l0VHlwZShBU1Q6OlR5
cGUmIHR5cGUpCisgICAgeworICAgICAgICBpZiAoaXM8QVNUOjpUeXBlUmVmZXJlbmNlPih0eXBl
KSkKKyAgICAgICAgICAgIHZpc2l0KGRvd25jYXN0PEFTVDo6VHlwZVJlZmVyZW5jZT4odHlwZSkp
OworICAgICAgICBlbHNlIGlmIChpczxBU1Q6OlBvaW50ZXJUeXBlPih0eXBlKSkKKyAgICAgICAg
ICAgIHZpc2l0KGRvd25jYXN0PEFTVDo6UG9pbnRlclR5cGU+KHR5cGUpKTsKKyAgICAgICAgZWxz
ZSBpZiAoaXM8QVNUOjpBcnJheVJlZmVyZW5jZVR5cGU+KHR5cGUpKQorICAgICAgICAgICAgdmlz
aXQoZG93bmNhc3Q8QVNUOjpBcnJheVJlZmVyZW5jZVR5cGU+KHR5cGUpKTsKKyAgICAgICAgZWxz
ZSB7CisgICAgICAgICAgICBBU1NFUlQoaXM8QVNUOjpBcnJheVR5cGU+KHR5cGUpKTsKKyAgICAg
ICAgICAgIHZpc2l0KGRvd25jYXN0PEFTVDo6QXJyYXlUeXBlPih0eXBlKSk7CisgICAgICAgIH0K
KyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpUeXBlRGVmaW5pdGlvbiYgdHlw
ZURlZmluaXRpb24pCisgICAgeworICAgICAgICB2aXNpdFR5cGUodHlwZURlZmluaXRpb24udHlw
ZSgpKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpTdHJ1Y3R1cmVEZWZp
bml0aW9uJiBzdHJ1Y3R1cmVEZWZpbml0aW9uKQorICAgIHsKKyAgICAgICAgZm9yIChhdXRvJiBz
dHJ1Y3R1cmVFbGVtZW50IDogc3RydWN0dXJlRGVmaW5pdGlvbi5zdHJ1Y3R1cmVFbGVtZW50cygp
KQorICAgICAgICAgICAgdmlzaXQoc3RydWN0dXJlRWxlbWVudCk7CisgICAgfQorCisgICAgdmly
dHVhbCB2b2lkIHZpc2l0KEFTVDo6RW51bWVyYXRpb25EZWZpbml0aW9uJiBlbnVtZXJhdGlvbkRl
ZmluaXRpb24pCisgICAgeworICAgICAgICB2aXNpdFR5cGUoZW51bWVyYXRpb25EZWZpbml0aW9u
LnR5cGUoKSk7CisgICAgICAgIGZvciAoYXV0byYgZW51bWVyYXRpb25NZW1iZXIgOiBlbnVtZXJh
dGlvbkRlZmluaXRpb24uZW51bWVyYXRpb25NZW1iZXJzKCkpCisgICAgICAgICAgICB2aXNpdChl
bnVtZXJhdGlvbk1lbWJlcik7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6
RnVuY3Rpb25EZWZpbml0aW9uJiBmdW5jdGlvbkRlZmluaXRpb24pCisgICAgeworICAgICAgICB2
aXNpdChzdGF0aWNfY2FzdDxBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24mPihmdW5jdGlvbkRlZmlu
aXRpb24pKTsKKyAgICAgICAgdmlzaXQoZnVuY3Rpb25EZWZpbml0aW9uLmJsb2NrKCkpOworICAg
IH0KKworICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRp
b24mIG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24pCisgICAgeworICAgICAgICB2aXNpdChzdGF0
aWNfY2FzdDxBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24mPihuYXRpdmVGdW5jdGlvbkRlY2xhcmF0
aW9uKSk7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6TmF0aXZlVHlwZURl
Y2xhcmF0aW9uJiBuYXRpdmVUeXBlRGVjbGFyYXRpb24pCisgICAgeworICAgICAgICBmb3IgKGF1
dG8mIHR5cGVBcmd1bWVudCA6IG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi50eXBlQXJndW1lbnRzKCkp
CisgICAgICAgICAgICB2aXNpdCh0eXBlQXJndW1lbnQpOworICAgIH0KKworICAgIHZpcnR1YWwg
dm9pZCB2aXNpdChBU1Q6OlR5cGVSZWZlcmVuY2UmIHR5cGVSZWZlcmVuY2UpCisgICAgeworICAg
ICAgICBmb3IgKGF1dG8mIHR5cGVBcmd1bWVudCA6IHR5cGVSZWZlcmVuY2UudHlwZUFyZ3VtZW50
cygpKQorICAgICAgICAgICAgdmlzaXQodHlwZUFyZ3VtZW50KTsKKyAgICB9CisKKyAgICB2aXJ0
dWFsIHZvaWQgdmlzaXQoQVNUOjpQb2ludGVyVHlwZSYgcG9pbnRlclR5cGUpCisgICAgeworICAg
ICAgICB2aXNpdChzdGF0aWNfY2FzdDxBU1Q6OlJlZmVyZW5jZVR5cGUmPihwb2ludGVyVHlwZSkp
OworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6OkFycmF5UmVmZXJlbmNlVHlw
ZSYgYXJyYXlSZWZlcmVuY2VUeXBlKQorICAgIHsKKyAgICAgICAgdmlzaXQoc3RhdGljX2Nhc3Q8
QVNUOjpSZWZlcmVuY2VUeXBlJj4oYXJyYXlSZWZlcmVuY2VUeXBlKSk7CisgICAgfQorCisgICAg
dmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6QXJyYXlUeXBlJiBhcnJheVR5cGUpCisgICAgeworICAg
ICAgICB2aXNpdFR5cGUoYXJyYXlUeXBlLnR5cGUoKSk7CisgICAgfQorCisgICAgdmlydHVhbCB2
b2lkIHZpc2l0KEFTVDo6U3RydWN0dXJlRWxlbWVudCYgc3RydWN0dXJlRWxlbWVudCkKKyAgICB7
CisgICAgICAgIHZpc2l0VHlwZShzdHJ1Y3R1cmVFbGVtZW50LnR5cGUoKSk7CisgICAgICAgIGlm
IChzdHJ1Y3R1cmVFbGVtZW50LnNlbWFudGljKCkpCisgICAgICAgICAgICB2aXNpdCgqc3RydWN0
dXJlRWxlbWVudC5zZW1hbnRpYygpKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgdmlzaXQo
QVNUOjpFbnVtZXJhdGlvbk1lbWJlciYgZW51bWVyYXRpb25NZW1iZXIpCisgICAgeworICAgICAg
ICBpZiAoZW51bWVyYXRpb25NZW1iZXIudmFsdWUoKSkKKyAgICAgICAgICAgIHZpc2l0KCplbnVt
ZXJhdGlvbk1lbWJlci52YWx1ZSgpKTsKKyAgICB9CisgICAgCisgICAgdmlydHVhbCB2b2lkIHZp
c2l0KEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbiYgZnVuY3Rpb25EZWNsYXJhdGlvbikKKyAgICB7
CisgICAgICAgIHZpc2l0KGZ1bmN0aW9uRGVjbGFyYXRpb24uYXR0cmlidXRlQmxvY2soKSk7Cisg
ICAgICAgIHZpc2l0VHlwZShmdW5jdGlvbkRlY2xhcmF0aW9uLnR5cGUoKSk7CisgICAgICAgIGZv
ciAoYXV0byYgcGFyYW1ldGVyIDogZnVuY3Rpb25EZWNsYXJhdGlvbi5wYXJhbWV0ZXJzKCkpCisg
ICAgICAgICAgICB2aXNpdChwYXJhbWV0ZXIpOworICAgICAgICBpZiAoZnVuY3Rpb25EZWNsYXJh
dGlvbi5zZW1hbnRpYygpKQorICAgICAgICAgICAgdmlzaXQoKmZ1bmN0aW9uRGVjbGFyYXRpb24u
c2VtYW50aWMoKSk7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6VHlwZUFy
Z3VtZW50JiB0eXBlQXJndW1lbnQpCisgICAgeworICAgICAgICBXVEY6OnZpc2l0KFdURjo6bWFr
ZVZpc2l0b3IoWyZdKEFTVDo6Q29uc3RhbnRFeHByZXNzaW9uJiBjb25zdGFudEV4cHJlc3Npb24p
IHsKKyAgICAgICAgICAgIHZpc2l0KGNvbnN0YW50RXhwcmVzc2lvbik7CisgICAgICAgIH0sIFsm
XShzdGQ6OnVuaXF1ZV9wdHI8QVNUOjpUeXBlUmVmZXJlbmNlPiYgdHlwZVJlZmVyZW5jZSkgewor
ICAgICAgICAgICAgdmlzaXQoKnR5cGVSZWZlcmVuY2UpOworICAgICAgICB9KSwgdHlwZUFyZ3Vt
ZW50KTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpSZWZlcmVuY2VUeXBl
JiByZWZlcmVuY2VUeXBlKQorICAgIHsKKyAgICAgICAgdmlzaXRUeXBlKHJlZmVyZW5jZVR5cGUu
ZWxlbWVudFR5cGUoKSk7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6U2Vt
YW50aWMmIHNlbWFudGljKQorICAgIHsKKyAgICAgICAgV1RGOjp2aXNpdChXVEY6Om1ha2VWaXNp
dG9yKFsmXShBU1Q6OkJ1aWx0SW5TZW1hbnRpYyYgYnVpbHRJblNlbWFudGljKSB7CisgICAgICAg
ICAgICB2aXNpdChidWlsdEluU2VtYW50aWMpOworICAgICAgICB9LCBbJl0oQVNUOjpSZXNvdXJj
ZVNlbWFudGljJiByZXNvdXJjZVNlbWFudGljKSB7CisgICAgICAgICAgICB2aXNpdChyZXNvdXJj
ZVNlbWFudGljKTsKKyAgICAgICAgfSwgWyZdKEFTVDo6U3BlY2lhbGl6YXRpb25Db25zdGFudFNl
bWFudGljJiBzcGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWMpIHsKKyAgICAgICAgICAgIHZp
c2l0KHNwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYyk7CisgICAgICAgIH0sIFsmXShBU1Q6
OlN0YWdlSW5PdXRTZW1hbnRpYyYgc3RhZ2VJbk91dFNlbWFudGljKSB7CisgICAgICAgICAgICB2
aXNpdChzdGFnZUluT3V0U2VtYW50aWMpOworICAgICAgICB9KSwgc2VtYW50aWMpOworICAgIH0K
KworICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6OkNvbnN0YW50RXhwcmVzc2lvbiYgY29uc3Rh
bnRFeHByZXNzaW9uKQorICAgIHsKKyAgICAgICAgY29uc3RhbnRFeHByZXNzaW9uLnZpc2l0KFdU
Rjo6bWFrZVZpc2l0b3IoWyZdKEFTVDo6SW50ZWdlckxpdGVyYWwmIGludGVnZXJMaXRlcmFsKSB7
CisgICAgICAgICAgICB2aXNpdChpbnRlZ2VyTGl0ZXJhbCk7CisgICAgICAgIH0sIFsmXShBU1Q6
OlVuc2lnbmVkSW50ZWdlckxpdGVyYWwmIHVuc2lnbmVkSW50ZWdlckxpdGVyYWwpIHsKKyAgICAg
ICAgICAgIHZpc2l0KHVuc2lnbmVkSW50ZWdlckxpdGVyYWwpOworICAgICAgICB9LCBbJl0oQVNU
OjpGbG9hdExpdGVyYWwmIGZsb2F0TGl0ZXJhbCkgeworICAgICAgICAgICAgdmlzaXQoZmxvYXRM
aXRlcmFsKTsKKyAgICAgICAgfSwgWyZdKEFTVDo6TnVsbExpdGVyYWwmIG51bGxMaXRlcmFsKSB7
CisgICAgICAgICAgICB2aXNpdChudWxsTGl0ZXJhbCk7CisgICAgICAgIH0sIFsmXShBU1Q6OkJv
b2xlYW5MaXRlcmFsJiBib29sZWFuTGl0ZXJhbCkgeworICAgICAgICAgICAgdmlzaXQoYm9vbGVh
bkxpdGVyYWwpOworICAgICAgICB9LCBbJl0oQVNUOjpDb25zdGFudEV4cHJlc3Npb25FbnVtZXJh
dGlvbk1lbWJlclJlZmVyZW5jZSYgY29uc3RhbnRFeHByZXNzaW9uRW51bWVyYXRpb25NZW1iZXJS
ZWZlcmVuY2UpIHsKKyAgICAgICAgICAgIHZpc2l0KGNvbnN0YW50RXhwcmVzc2lvbkVudW1lcmF0
aW9uTWVtYmVyUmVmZXJlbmNlKTsKKyAgICAgICAgfSkpOworICAgIH0KKworICAgIHZpcnR1YWwg
dm9pZCB2aXNpdChBU1Q6OkF0dHJpYnV0ZUJsb2NrJiBhdHRyaWJ1dGVCbG9jaykKKyAgICB7Cisg
ICAgICAgIGZvciAoYXV0byYgZnVuY3Rpb25BdHRyaWJ1dGUgOiBhdHRyaWJ1dGVCbG9jaykKKyAg
ICAgICAgICAgIHZpc2l0KGZ1bmN0aW9uQXR0cmlidXRlKTsKKyAgICB9CisKKyAgICB2aXJ0dWFs
IHZvaWQgdmlzaXQoQVNUOjpQYXJhbWV0ZXImIHBhcmFtZXRlcikKKyAgICB7CisgICAgICAgIHZp
c2l0VHlwZShwYXJhbWV0ZXIudHlwZSgpKTsKKyAgICAgICAgaWYgKHBhcmFtZXRlci5zZW1hbnRp
YygpKQorICAgICAgICAgICAgdmlzaXQoKnBhcmFtZXRlci5zZW1hbnRpYygpKTsKKyAgICB9CisK
KyAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpCdWlsdEluU2VtYW50aWMmKQorICAgIHsKKyAg
ICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpSZXNvdXJjZVNlbWFudGljJikKKyAg
ICB7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6U3BlY2lhbGl6YXRpb25D
b25zdGFudFNlbWFudGljJikKKyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIHZpc2l0
KEFTVDo6U3RhZ2VJbk91dFNlbWFudGljJikKKyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCB2
b2lkIHZpc2l0KEFTVDo6SW50ZWdlckxpdGVyYWwmKQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0
dWFsIHZvaWQgdmlzaXQoQVNUOjpVbnNpZ25lZEludGVnZXJMaXRlcmFsJikKKyAgICB7CisgICAg
fQorCisgICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6RmxvYXRMaXRlcmFsJikKKyAgICB7Cisg
ICAgfQorCisgICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6TnVsbExpdGVyYWwmKQorICAgIHsK
KyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpCb29sZWFuTGl0ZXJhbCYpCisg
ICAgeworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6OkNvbnN0YW50RXhwcmVz
c2lvbkVudW1lcmF0aW9uTWVtYmVyUmVmZXJlbmNlJikKKyAgICB7CisgICAgfQorCisgICAgdmly
dHVhbCB2b2lkIHZpc2l0KEFTVDo6RnVuY3Rpb25BdHRyaWJ1dGUmIGZ1bmN0aW9uQXR0cmlidXRl
KQorICAgIHsKKyAgICAgICAgV1RGOjp2aXNpdChXVEY6Om1ha2VWaXNpdG9yKFsmXShBU1Q6Ok51
bVRocmVhZHNGdW5jdGlvbkF0dHJpYnV0ZSYgbnVtVGhyZWFkc0Z1bmN0aW9uQXR0cmlidXRlKSB7
CisgICAgICAgICAgICB2aXNpdChudW1UaHJlYWRzRnVuY3Rpb25BdHRyaWJ1dGUpOworICAgICAg
ICB9KSwgZnVuY3Rpb25BdHRyaWJ1dGUpOworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCB2aXNp
dChBU1Q6Ok51bVRocmVhZHNGdW5jdGlvbkF0dHJpYnV0ZSYpCisgICAgeworICAgIH0KKworICAg
IHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6OkJsb2NrJiBibG9jaykKKyAgICB7CisgICAgICAgIGZv
ciAoYXV0byYgc3RhdGVtZW50IDogYmxvY2suc3RhdGVtZW50cygpKQorICAgICAgICAgICAgdmlz
aXQoKnN0YXRlbWVudCk7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6U3Rh
dGVtZW50JiBzdGF0ZW1lbnQpCisgICAgeworICAgICAgICBpZiAoaXM8QVNUOjpCbG9jaz4oc3Rh
dGVtZW50KSkKKyAgICAgICAgICAgIHZpc2l0KGRvd25jYXN0PEFTVDo6QmxvY2s+KHN0YXRlbWVu
dCkpOworICAgICAgICBlbHNlIGlmIChpczxBU1Q6OkJyZWFrPihzdGF0ZW1lbnQpKQorICAgICAg
ICAgICAgdmlzaXQoZG93bmNhc3Q8QVNUOjpCcmVhaz4oc3RhdGVtZW50KSk7CisgICAgICAgIGVs
c2UgaWYgKGlzPEFTVDo6Q29udGludWU+KHN0YXRlbWVudCkpCisgICAgICAgICAgICB2aXNpdChk
b3duY2FzdDxBU1Q6OkNvbnRpbnVlPihzdGF0ZW1lbnQpKTsKKyAgICAgICAgZWxzZSBpZiAoaXM8
QVNUOjpEb1doaWxlTG9vcD4oc3RhdGVtZW50KSkKKyAgICAgICAgICAgIHZpc2l0KGRvd25jYXN0
PEFTVDo6RG9XaGlsZUxvb3A+KHN0YXRlbWVudCkpOworICAgICAgICBlbHNlIGlmIChpczxBU1Q6
OkVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQ+KHN0YXRlbWVudCkpCisgICAgICAgICAgICB2
aXNpdChkb3duY2FzdDxBU1Q6OkVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQ+KHN0YXRlbWVu
dCkpOworICAgICAgICBlbHNlIGlmIChpczxBU1Q6OkZhbGx0aHJvdWdoPihzdGF0ZW1lbnQpKQor
ICAgICAgICAgICAgdmlzaXQoZG93bmNhc3Q8QVNUOjpGYWxsdGhyb3VnaD4oc3RhdGVtZW50KSk7
CisgICAgICAgIGVsc2UgaWYgKGlzPEFTVDo6Rm9yTG9vcD4oc3RhdGVtZW50KSkKKyAgICAgICAg
ICAgIHZpc2l0KGRvd25jYXN0PEFTVDo6Rm9yTG9vcD4oc3RhdGVtZW50KSk7CisgICAgICAgIGVs
c2UgaWYgKGlzPEFTVDo6SWZTdGF0ZW1lbnQ+KHN0YXRlbWVudCkpCisgICAgICAgICAgICB2aXNp
dChkb3duY2FzdDxBU1Q6OklmU3RhdGVtZW50PihzdGF0ZW1lbnQpKTsKKyAgICAgICAgZWxzZSBp
ZiAoaXM8QVNUOjpSZXR1cm4+KHN0YXRlbWVudCkpCisgICAgICAgICAgICB2aXNpdChkb3duY2Fz
dDxBU1Q6OlJldHVybj4oc3RhdGVtZW50KSk7CisgICAgICAgIGVsc2UgaWYgKGlzPEFTVDo6U3dp
dGNoQ2FzZT4oc3RhdGVtZW50KSkKKyAgICAgICAgICAgIHZpc2l0KGRvd25jYXN0PEFTVDo6U3dp
dGNoQ2FzZT4oc3RhdGVtZW50KSk7CisgICAgICAgIGVsc2UgaWYgKGlzPEFTVDo6U3dpdGNoU3Rh
dGVtZW50PihzdGF0ZW1lbnQpKQorICAgICAgICAgICAgdmlzaXQoZG93bmNhc3Q8QVNUOjpTd2l0
Y2hTdGF0ZW1lbnQ+KHN0YXRlbWVudCkpOworICAgICAgICBlbHNlIGlmIChpczxBU1Q6OlRyYXA+
KHN0YXRlbWVudCkpCisgICAgICAgICAgICB2aXNpdChkb3duY2FzdDxBU1Q6OlRyYXA+KHN0YXRl
bWVudCkpOworICAgICAgICBlbHNlIGlmIChpczxBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb25zU3Rh
dGVtZW50PihzdGF0ZW1lbnQpKQorICAgICAgICAgICAgdmlzaXQoZG93bmNhc3Q8QVNUOjpWYXJp
YWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudD4oc3RhdGVtZW50KSk7CisgICAgICAgIGVsc2Ugewor
ICAgICAgICAgICAgQVNTRVJUKGlzPEFTVDo6V2hpbGVMb29wPihzdGF0ZW1lbnQpKTsKKyAgICAg
ICAgICAgIHZpc2l0KGRvd25jYXN0PEFTVDo6V2hpbGVMb29wPihzdGF0ZW1lbnQpKTsKKyAgICAg
ICAgfQorICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6OkJyZWFrJikKKyAgICB7
CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6Q29udGludWUmKQorICAgIHsK
KyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpEb1doaWxlTG9vcCYgZG9XaGls
ZUxvb3ApCisgICAgeworICAgICAgICB2aXNpdChkb1doaWxlTG9vcC5ib2R5KCkpOworICAgICAg
ICB2aXNpdChkb1doaWxlTG9vcC5jb25kaXRpb25hbCgpKTsKKyAgICB9CisKKyAgICB2aXJ0dWFs
IHZvaWQgdmlzaXQoQVNUOjpFeHByZXNzaW9uJiBleHByZXNzaW9uKQorICAgIHsKKyAgICAgICAg
aWYgKGlzPEFTVDo6QXNzaWdubWVudEV4cHJlc3Npb24+KGV4cHJlc3Npb24pKQorICAgICAgICAg
ICAgdmlzaXQoZG93bmNhc3Q8QVNUOjpBc3NpZ25tZW50RXhwcmVzc2lvbj4oZXhwcmVzc2lvbikp
OworICAgICAgICBlbHNlIGlmIChpczxBU1Q6OkJvb2xlYW5MaXRlcmFsPihleHByZXNzaW9uKSkK
KyAgICAgICAgICAgIHZpc2l0KGRvd25jYXN0PEFTVDo6Qm9vbGVhbkxpdGVyYWw+KGV4cHJlc3Np
b24pKTsKKyAgICAgICAgZWxzZSBpZiAoaXM8QVNUOjpDYWxsRXhwcmVzc2lvbj4oZXhwcmVzc2lv
bikpCisgICAgICAgICAgICB2aXNpdChkb3duY2FzdDxBU1Q6OkNhbGxFeHByZXNzaW9uPihleHBy
ZXNzaW9uKSk7CisgICAgICAgIGVsc2UgaWYgKGlzPEFTVDo6Q29tbWFFeHByZXNzaW9uPihleHBy
ZXNzaW9uKSkKKyAgICAgICAgICAgIHZpc2l0KGRvd25jYXN0PEFTVDo6Q29tbWFFeHByZXNzaW9u
PihleHByZXNzaW9uKSk7CisgICAgICAgIGVsc2UgaWYgKGlzPEFTVDo6RGVyZWZlcmVuY2VFeHBy
ZXNzaW9uPihleHByZXNzaW9uKSkKKyAgICAgICAgICAgIHZpc2l0KGRvd25jYXN0PEFTVDo6RGVy
ZWZlcmVuY2VFeHByZXNzaW9uPihleHByZXNzaW9uKSk7CisgICAgICAgIGVsc2UgaWYgKGlzPEFT
VDo6RmxvYXRMaXRlcmFsPihleHByZXNzaW9uKSkKKyAgICAgICAgICAgIHZpc2l0KGRvd25jYXN0
PEFTVDo6RmxvYXRMaXRlcmFsPihleHByZXNzaW9uKSk7CisgICAgICAgIGVsc2UgaWYgKGlzPEFT
VDo6SW50ZWdlckxpdGVyYWw+KGV4cHJlc3Npb24pKQorICAgICAgICAgICAgdmlzaXQoZG93bmNh
c3Q8QVNUOjpJbnRlZ2VyTGl0ZXJhbD4oZXhwcmVzc2lvbikpOworICAgICAgICBlbHNlIGlmIChp
czxBU1Q6OkxvZ2ljYWxFeHByZXNzaW9uPihleHByZXNzaW9uKSkKKyAgICAgICAgICAgIHZpc2l0
KGRvd25jYXN0PEFTVDo6TG9naWNhbEV4cHJlc3Npb24+KGV4cHJlc3Npb24pKTsKKyAgICAgICAg
ZWxzZSBpZiAoaXM8QVNUOjpMb2dpY2FsTm90RXhwcmVzc2lvbj4oZXhwcmVzc2lvbikpCisgICAg
ICAgICAgICB2aXNpdChkb3duY2FzdDxBU1Q6OkxvZ2ljYWxOb3RFeHByZXNzaW9uPihleHByZXNz
aW9uKSk7CisgICAgICAgIGVsc2UgaWYgKGlzPEFTVDo6TWFrZUFycmF5UmVmZXJlbmNlRXhwcmVz
c2lvbj4oZXhwcmVzc2lvbikpCisgICAgICAgICAgICB2aXNpdChkb3duY2FzdDxBU1Q6Ok1ha2VB
cnJheVJlZmVyZW5jZUV4cHJlc3Npb24+KGV4cHJlc3Npb24pKTsKKyAgICAgICAgZWxzZSBpZiAo
aXM8QVNUOjpNYWtlUG9pbnRlckV4cHJlc3Npb24+KGV4cHJlc3Npb24pKQorICAgICAgICAgICAg
dmlzaXQoZG93bmNhc3Q8QVNUOjpNYWtlUG9pbnRlckV4cHJlc3Npb24+KGV4cHJlc3Npb24pKTsK
KyAgICAgICAgZWxzZSBpZiAoaXM8QVNUOjpOdWxsTGl0ZXJhbD4oZXhwcmVzc2lvbikpCisgICAg
ICAgICAgICB2aXNpdChkb3duY2FzdDxBU1Q6Ok51bGxMaXRlcmFsPihleHByZXNzaW9uKSk7Cisg
ICAgICAgIGVsc2UgaWYgKGlzPEFTVDo6UHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uPihleHByZXNz
aW9uKSkKKyAgICAgICAgICAgIHZpc2l0KGRvd25jYXN0PEFTVDo6UHJvcGVydHlBY2Nlc3NFeHBy
ZXNzaW9uPihleHByZXNzaW9uKSk7CisgICAgICAgIGVsc2UgaWYgKGlzPEFTVDo6UmVhZE1vZGlm
eVdyaXRlRXhwcmVzc2lvbj4oZXhwcmVzc2lvbikpCisgICAgICAgICAgICB2aXNpdChkb3duY2Fz
dDxBU1Q6OlJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24+KGV4cHJlc3Npb24pKTsKKyAgICAgICAg
ZWxzZSBpZiAoaXM8QVNUOjpUZXJuYXJ5RXhwcmVzc2lvbj4oZXhwcmVzc2lvbikpCisgICAgICAg
ICAgICB2aXNpdChkb3duY2FzdDxBU1Q6OlRlcm5hcnlFeHByZXNzaW9uPihleHByZXNzaW9uKSk7
CisgICAgICAgIGVsc2UgaWYgKGlzPEFTVDo6VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbD4oZXhwcmVz
c2lvbikpCisgICAgICAgICAgICB2aXNpdChkb3duY2FzdDxBU1Q6OlVuc2lnbmVkSW50ZWdlckxp
dGVyYWw+KGV4cHJlc3Npb24pKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBBU1NFUlQo
aXM8QVNUOjpWYXJpYWJsZVJlZmVyZW5jZT4oZXhwcmVzc2lvbikpOworICAgICAgICAgICAgdmlz
aXQoZG93bmNhc3Q8QVNUOjpWYXJpYWJsZVJlZmVyZW5jZT4oZXhwcmVzc2lvbikpOworICAgICAg
ICB9CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6RWZmZWN0ZnVsRXhwcmVz
c2lvblN0YXRlbWVudCYgZWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVudCkKKyAgICB7CisgICAg
ICAgIHZpc2l0KGVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQuZWZmZWN0ZnVsRXhwcmVzc2lv
bigpKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpGYWxsdGhyb3VnaCYp
CisgICAgeworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6OkZvckxvb3AmIGZv
ckxvb3ApCisgICAgeworICAgICAgICBXVEY6OnZpc2l0KFdURjo6bWFrZVZpc2l0b3IoWyZdKEFT
VDo6VmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQmIHZhcmlhYmxlRGVjbGFyYXRpb25zU3Rh
dGVtZW50KSB7CisgICAgICAgICAgICB2aXNpdCh2YXJpYWJsZURlY2xhcmF0aW9uc1N0YXRlbWVu
dCk7CisgICAgICAgIH0sIFsmXShzdGQ6OnVuaXF1ZV9wdHI8QVNUOjpFeHByZXNzaW9uPiYgZXhw
cmVzc2lvbikgeworICAgICAgICAgICAgdmlzaXQoKmV4cHJlc3Npb24pOworICAgICAgICB9KSwg
Zm9yTG9vcC5pbml0aWFsaXphdGlvbigpKTsKKyAgICAgICAgaWYgKGZvckxvb3AuY29uZGl0aW9u
KCkpCisgICAgICAgICAgICB2aXNpdCgqZm9yTG9vcC5jb25kaXRpb24oKSk7CisgICAgICAgIGlm
IChmb3JMb29wLmluY3JlbWVudCgpKQorICAgICAgICAgICAgdmlzaXQoKmZvckxvb3AuaW5jcmVt
ZW50KCkpOworICAgICAgICB2aXNpdChmb3JMb29wLmJvZHkoKSk7CisgICAgfQorCisgICAgdmly
dHVhbCB2b2lkIHZpc2l0KEFTVDo6SWZTdGF0ZW1lbnQmIGlmU3RhdGVtZW50KQorICAgIHsKKyAg
ICAgICAgdmlzaXQoaWZTdGF0ZW1lbnQuY29uZGl0aW9uYWwoKSk7CisgICAgICAgIHZpc2l0KGlm
U3RhdGVtZW50LmJvZHkoKSk7CisgICAgICAgIGlmIChpZlN0YXRlbWVudC5lbHNlQm9keSgpKQor
ICAgICAgICAgICAgdmlzaXQoKmlmU3RhdGVtZW50LmVsc2VCb2R5KCkpOworICAgIH0KKworICAg
IHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6OlJldHVybiYgcmV0dXJuU3RhdGVtZW50KQorICAgIHsK
KyAgICAgICAgaWYgKHJldHVyblN0YXRlbWVudC52YWx1ZSgpKQorICAgICAgICAgICAgdmlzaXQo
KnJldHVyblN0YXRlbWVudC52YWx1ZSgpKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgdmlz
aXQoQVNUOjpTd2l0Y2hDYXNlJiBzd2l0Y2hDYXNlKQorICAgIHsKKyAgICAgICAgaWYgKHN3aXRj
aENhc2UudmFsdWUoKSkKKyAgICAgICAgICAgIHZpc2l0KCpzd2l0Y2hDYXNlLnZhbHVlKCkpOwor
ICAgICAgICB2aXNpdChzd2l0Y2hDYXNlLmJsb2NrKCkpOworICAgIH0KKworICAgIHZpcnR1YWwg
dm9pZCB2aXNpdChBU1Q6OlN3aXRjaFN0YXRlbWVudCYgc3dpdGNoU3RhdGVtZW50KQorICAgIHsK
KyAgICAgICAgdmlzaXQoc3dpdGNoU3RhdGVtZW50LnZhbHVlKCkpOworICAgICAgICBmb3IgKGF1
dG8mIHN3aXRjaENhc2UgOiBzd2l0Y2hTdGF0ZW1lbnQuc3dpdGNoQ2FzZXMoKSkKKyAgICAgICAg
ICAgIHZpc2l0KHN3aXRjaENhc2UpOworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCB2aXNpdChB
U1Q6OlRyYXAmKQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpW
YXJpYWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudCYgdmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1l
bnQpCisgICAgeworICAgICAgICBmb3IgKGF1dG8mIHZhcmlhYmxlRGVjbGFyYXRpb24gOiB2YXJp
YWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudC52YXJpYWJsZURlY2xhcmF0aW9ucygpKQorICAgICAg
ICAgICAgdmlzaXQodmFyaWFibGVEZWNsYXJhdGlvbik7CisgICAgfQorCisgICAgdmlydHVhbCB2
b2lkIHZpc2l0KEFTVDo6V2hpbGVMb29wJiB3aGlsZUxvb3ApCisgICAgeworICAgICAgICB2aXNp
dCh3aGlsZUxvb3AuY29uZGl0aW9uYWwoKSk7CisgICAgICAgIHZpc2l0KHdoaWxlTG9vcC5ib2R5
KCkpOworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6OlZhcmlhYmxlRGVjbGFy
YXRpb24mIHZhcmlhYmxlRGVjbGFyYXRpb24pCisgICAgeworICAgICAgICB2aXNpdFR5cGUodmFy
aWFibGVEZWNsYXJhdGlvbi50eXBlKCkpOworICAgICAgICBpZiAodmFyaWFibGVEZWNsYXJhdGlv
bi5zZW1hbnRpYygpKQorICAgICAgICAgICAgdmlzaXQoKnZhcmlhYmxlRGVjbGFyYXRpb24uc2Vt
YW50aWMoKSk7CisgICAgICAgIGlmICh2YXJpYWJsZURlY2xhcmF0aW9uLmluaXRpYWxpemVyKCkp
CisgICAgICAgICAgICB2aXNpdCgqdmFyaWFibGVEZWNsYXJhdGlvbi5pbml0aWFsaXplcigpKTsK
KyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpBc3NpZ25tZW50RXhwcmVzc2lv
biYgYXNzaWdubWVudEV4cHJlc3Npb24pCisgICAgeworICAgICAgICB2aXNpdChhc3NpZ25tZW50
RXhwcmVzc2lvbi5sZWZ0KCkpOworICAgICAgICB2aXNpdChhc3NpZ25tZW50RXhwcmVzc2lvbi5y
aWdodCgpKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpDYWxsRXhwcmVz
c2lvbiYgY2FsbEV4cHJlc3Npb24pCisgICAgeworICAgICAgICBmb3IgKGF1dG8mIGFyZ3VtZW50
IDogY2FsbEV4cHJlc3Npb24uYXJndW1lbnRzKCkpCisgICAgICAgICAgICB2aXNpdCgqYXJndW1l
bnQpOworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6OkNvbW1hRXhwcmVzc2lv
biYgY29tbWFFeHByZXNzaW9uKQorICAgIHsKKyAgICAgICAgZm9yIChhdXRvJiBleHByZXNzaW9u
IDogY29tbWFFeHByZXNzaW9uLmxpc3QoKSkKKyAgICAgICAgICAgIHZpc2l0KCpleHByZXNzaW9u
KTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpEZXJlZmVyZW5jZUV4cHJl
c3Npb24mIGRlcmVmZXJlbmNlRXhwcmVzc2lvbikKKyAgICB7CisgICAgICAgIHZpc2l0KGRlcmVm
ZXJlbmNlRXhwcmVzc2lvbi5wb2ludGVyKCkpOworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCB2
aXNpdChBU1Q6OkxvZ2ljYWxFeHByZXNzaW9uJiBsb2dpY2FsRXhwcmVzc2lvbikKKyAgICB7Cisg
ICAgICAgIHZpc2l0KGxvZ2ljYWxFeHByZXNzaW9uLmxlZnQoKSk7CisgICAgICAgIHZpc2l0KGxv
Z2ljYWxFeHByZXNzaW9uLnJpZ2h0KCkpOworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCB2aXNp
dChBU1Q6OkxvZ2ljYWxOb3RFeHByZXNzaW9uJiBsb2dpY2FsTm90RXhwcmVzc2lvbikKKyAgICB7
CisgICAgICAgIHZpc2l0KGxvZ2ljYWxOb3RFeHByZXNzaW9uLm9wZXJhbmQoKSk7CisgICAgfQor
CisgICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6TWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lv
biYgbWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbikKKyAgICB7CisgICAgICAgIHZpc2l0KG1h
a2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24ubFZhbHVlKCkpOworICAgIH0KKworICAgIHZpcnR1
YWwgdm9pZCB2aXNpdChBU1Q6Ok1ha2VQb2ludGVyRXhwcmVzc2lvbiYgbWFrZVBvaW50ZXJFeHBy
ZXNzaW9uKQorICAgIHsKKyAgICAgICAgdmlzaXQobWFrZVBvaW50ZXJFeHByZXNzaW9uLmxWYWx1
ZSgpKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpQcm9wZXJ0eUFjY2Vz
c0V4cHJlc3Npb24mIHByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbikKKyAgICB7CisgICAgICAgIHZp
c2l0KHByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbi5iYXNlKCkpOworICAgIH0KKworICAgIHZpcnR1
YWwgdm9pZCB2aXNpdChBU1Q6OlJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24mIHJlYWRNb2RpZnlX
cml0ZUV4cHJlc3Npb24pCisgICAgeworICAgICAgICB2aXNpdChyZWFkTW9kaWZ5V3JpdGVFeHBy
ZXNzaW9uLmxWYWx1ZSgpKTsKKyAgICAgICAgdmlzaXQocmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lv
bi5vbGRWYWx1ZSgpKTsKKyAgICAgICAgdmlzaXQocmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbi5u
ZXdWYWx1ZSgpKTsKKyAgICAgICAgdmlzaXQocmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbi5uZXdW
YWx1ZUV4cHJlc3Npb24oKSk7CisgICAgICAgIHZpc2l0KHJlYWRNb2RpZnlXcml0ZUV4cHJlc3Np
b24ucmVzdWx0RXhwcmVzc2lvbigpKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgdmlzaXQo
QVNUOjpUZXJuYXJ5RXhwcmVzc2lvbiYgdGVybmFyeUV4cHJlc3Npb24pCisgICAgeworICAgICAg
ICB2aXNpdCh0ZXJuYXJ5RXhwcmVzc2lvbi5wcmVkaWNhdGUoKSk7CisgICAgICAgIHZpc2l0KHRl
cm5hcnlFeHByZXNzaW9uLmJvZHlFeHByZXNzaW9uKCkpOworICAgICAgICB2aXNpdCh0ZXJuYXJ5
RXhwcmVzc2lvbi5lbHNlRXhwcmVzc2lvbigpKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQg
dmlzaXQoQVNUOjpWYXJpYWJsZVJlZmVyZW5jZSYpCisgICAgeworICAgIH0KKworICAgIHZpcnR1
YWwgdm9pZCB2aXNpdChBU1Q6OkFub255bW91c1ZhcmlhYmxlRGVjbGFyYXRpb24mKQorICAgIHsK
KyAgICB9Cit9OworCit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDUzMTg2N2E1
ZGIyLi4zYzBlMzY0NzA1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQK
KysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTMwNSw2ICszMDUsOSBAQCBNb2R1
bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3BwCiBNb2R1
bGVzL3dlYmdwdS9ET01XaW5kb3dXZWJHUFUuY3BwCiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExT
TExleGVyLmNwcAogTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQYXJzZXIuY3BwCitNb2R1bGVz
L3dlYmdwdS9XSExTTC9XSExTTFByZXBhcmUuY3BwCitNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExT
TE5hbWVSZXNvbHZlci5jcHAKK01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFR5cGVBcmd1
bWVudC5jcHAKIE1vZHVsZXMvd2ViZ3B1L1dlYkdQVS5jcHAKIE1vZHVsZXMvd2ViZ3B1L1dlYkdQ
VUFkYXB0ZXIuY3BwCiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVCaW5kR3JvdXBMYXlvdXQuY3BwCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5k
ZXggNGUxMTMyOGIxYTAuLjA3YzE2ZWYxNzc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMzI5OSw2ICsxMzI5OSwxMiBAQAog
CQlDMjgwODMzRDFDNkRDMjJDMDAxNDUxQjYgLyogSlNGb250RmFjZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBKU0ZvbnRGYWNlLmNwcDsgcGF0aCA9IERlcml2ZWRT
b3VyY2VzL1dlYkNvcmUvSlNGb250RmFjZS5jcHA7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNU
U19ESVI7IH07CiAJCUMyODA4MzNFMUM2REMyMkMwMDE0NTFCNiAvKiBKU0ZvbnRGYWNlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEpTRm9udEZhY2UuaDsgcGF0aCA9IERlcml2
ZWRTb3VyY2VzL1dlYkNvcmUvSlNGb250RmFjZS5oOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVD
VFNfRElSOyB9OwogCQlDMjgwQjNGRDFFRjQ2MDg5MDBEMzUxMzUgLyogRm9udEZhbWlseVNwZWNp
ZmljYXRpb25OdWxsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZv
bnRGYW1pbHlTcGVjaWZpY2F0aW9uTnVsbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUMyODhDNzI3MjFDOEM2RUYwMDJERjVDQSAvKiBXSExTTFZpc2l0b3IuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV0hMU0xWaXNpdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMyODhD
NzI5MjFDOENBNTAwMDJERjVDQSAvKiBXSExTTFByZXBhcmUuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gV0hMU0xQcmVwYXJlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzI4OEM3
MkEyMUM4Q0E1MDAwMkRGNUNBIC8qIFdITFNMUHJlcGFyZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExT
TFByZXBhcmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzI4OEM3MkIyMUM4Q0ND
MjAwMkRGNUNBIC8qIFdITFNMTmFtZVJlc29sdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdI
TFNMTmFtZVJlc29sdmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzI4OEM3
MkMyMUM4Q0NDMjAwMkRGNUNBIC8qIFdITFNMTmFtZVJlc29sdmVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdITFNMTmFtZVJlc29sdmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMyODhD
NzJEMjFDOTkxREEwMDJERjVDQSAvKiBXSExTTFR5cGVBcmd1bWVudC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBXSExTTFR5cGVBcmd1bWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUMyQUIwQUY0MUU2QjNDNkMwMDEzNDhDNSAvKiBGb250U2VsZWN0aW9uQWxnb3JpdGhtLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZvbnRTZWxlY3Rpb25BbGdv
cml0aG0uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMkFCMEFGNTFFNkIzQzZD
MDAxMzQ4QzUgLyogRm9udFNlbGVjdGlvbkFsZ29yaXRobS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBGb250U2VsZWN0aW9uQWxnb3JpdGhtLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUMyQUIwQjAzMUU2REU5MkMwMDEzNDhDNSAvKiBGb250U2VsZWN0aW9uVmFs
dWVJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZvbnRTZWxlY3Rpb25WYWx1ZUlubGluZXMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI1MzI2LDYgKzI1MzMyLDExIEBACiAJCQkJ
QzIxQkY3MzcyMUNEOEEwMjAwMjI3OTc5IC8qIFdITFNMUGFyc2VyLmNwcCAqLywKIAkJCQlDMjFC
RjczODIxQ0Q4QTAzMDAyMjc5NzkgLyogV0hMU0xQYXJzZXIuaCAqLywKIAkJCQlDMjFCRjczQTIx
Q0Q4RDcwMDAyMjc5NzkgLyogV0hMU0xQcm9ncmFtLmggKi8sCisgCQkJCUMyODhDNzI3MjFDOEM2
RUYwMDJERjVDQSAvKiBXSExTTFZpc2l0b3IuaCAqLywKKyAJCQkJQzI4OEM3MjkyMUM4Q0E1MDAw
MkRGNUNBIC8qIFdITFNMUHJlcGFyZS5jcHAgKi8sCisgCQkJCUMyODhDNzJBMjFDOENBNTAwMDJE
RjVDQSAvKiBXSExTTFByZXBhcmUuaCAqLywKKyAJCQkJQzI4OEM3MkIyMUM4Q0NDMjAwMkRGNUNB
IC8qIFdITFNMTmFtZVJlc29sdmVyLmNwcCAqLywKKyAJCQkJQzI4OEM3MkMyMUM4Q0NDMjAwMkRG
NUNBIC8qIFdITFNMTmFtZVJlc29sdmVyLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IFdITFNMOwog
CQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTI1NDAxLDYgKzI1NDEyLDcgQEAKIAkJCQlD
MjFCRjcxNDIxQ0Q4OUQzMDAyMjc5NzkgLyogV0hMU0xWYXJpYWJsZURlY2xhcmF0aW9uc1N0YXRl
bWVudC5oICovLAogCQkJCUMyMUJGNzEzMjFDRDg5RDIwMDIyNzk3OSAvKiBXSExTTFZhcmlhYmxl
UmVmZXJlbmNlLmggKi8sCiAJCQkJQzIxQkY3MDQyMUNEODlDNjAwMjI3OTc5IC8qIFdITFNMV2hp
bGVMb29wLmggKi8sCisgCQkJCUMyODhDNzJEMjFDOTkxREEwMDJERjVDQSAvKiBXSExTTFR5cGVB
cmd1bWVudC5jcHAgKi8sCiAJCQkpOwogCQkJcGF0aCA9IEFTVDsKIAkJCXNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>358882</attachid>
            <date>2019-01-11 00:12:00 -0800</date>
            <delta_ts>2019-01-11 10:50:18 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-192826-20190111001200.patch</filename>
            <type>text/plain</type>
            <size>49214</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM5ODYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzZiNjI3NjkwMzNkMTIx
NTNhNTc2NTI5YWIyMzMyMTQxOGE0OWI0NC4uNGEzNDgyYzE2MGJhYmRhODc2ZWQ0NzY5M2M4YTc1
NGI3NTMxM2Q5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDE5LTAxLTExICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgW1dITFNMXSBB
ZGQgYSBWaXNpdG9yIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xOTI4MjYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBUaGlzIHBhdGNoIGV4cG9zZXMgYSBidW5jaCBvZiB0aGUgcHJpdmF0ZSBtZW1i
ZXJzIG9mIFdITFNMJ3MgQVNUIG5vZGVzIHNvIHRoYXQgVmlzaXRvciBjYW4gcmVjdXJzZSBvbiBj
b25zdGl0dWVudCBub2Rlcy4KKyAgICAgICAgSXQgYWxzbyB3cml0ZXMgdGhlIHJlY3Vyc2lvbiBp
biBWaXNpdG9yLmguIFRoaXMgaXMgYSB2aXJ0dWFsIGJhc2UgY2xhc3MgdGhhdCBnZXRzIHN1YmNs
YXNzZWQgZm9yIGNvbXBpbGVyIHBhc3Nlcy4KKworICAgICAgICBJJ3ZlIHNwbGl0IHRoaXMgcGFy
dCBpbnRvIGl0cyBvd24gcGF0Y2ggdG8gYWlkIHJldmlld2luZyBvZiB0aGUgY29tcGlsZXIuCisK
KyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTdGFnZUluT3V0U2VtYW50
aWMuY3BwOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMVmlzaXRvci5jcHA6
IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OlZpc2l0b3I6OnZpc2l0KToKKyAgICAg
ICAgKFdlYkNvcmU6OldITFNMOjpWaXNpdG9yOjpjaGVja0Vycm9yQW5kVmlzaXQpOgorICAgICAg
ICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMVmlzaXRvci5oOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OldITFNMOjpWaXNpdG9yOjpzZXRFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpX
SExTTDo6VmlzaXRvcjo6ZXJyb3IgY29uc3QpOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAg
ICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAxOS0wMS0xMCAg
TXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIFtXSExT
TF0gSW5jbHVkZSB0aGUgc3RhbmRhcmQgbGlicmFyeQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU3RhZ2VJbk91dFNlbWFudGljLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFN0YWdlSW5PdXRT
ZW1hbnRpYy5jcHAKaW5kZXggMzg5ZDM1ZWQ5NjkxN2M2ZjVjNDM0ZDQ3M2FlNzI1YTk3NmNjZmY2
YS4uMjI1NzJjODEyYzgzOWE5YWEzYzVlZTYyZmIzMmY3MTA0ZDkxZmVjNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU3RhZ2VJbk91dFNl
bWFudGljLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9BU1Qv
V0hMU0xTdGFnZUluT3V0U2VtYW50aWMuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAi
V0hMU0xBcnJheVR5cGUuaCIKICNpbmNsdWRlICJXSExTTEVudW1lcmF0aW9uRGVmaW5pdGlvbi5o
IgogI2luY2x1ZGUgIldITFNMRnVuY3Rpb25EZWZpbml0aW9uLmgiCisjaW5jbHVkZSAiV0hMU0xO
YXRpdmVUeXBlRGVjbGFyYXRpb24uaCIKICNpbmNsdWRlICJXSExTTFR5cGVSZWZlcmVuY2UuaCIK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvV0hMU0xWaXNpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML1dITFNMVmlzaXRvci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGQ1MWJmZjc3M2U1Nzk5
MDY1NzZlNWM3ZDU4Yzk1NWY5ZDhkNDViYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMVmlzaXRvci5jcHAKQEAgLTAsMCArMSwxMDMz
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJXSExTTFZpc2l0b3IuaCIKKworI2luY2x1ZGUgIldITFNMQXJyYXlSZWZl
cmVuY2VUeXBlLmgiCisjaW5jbHVkZSAiV0hMU0xBcnJheVR5cGUuaCIKKyNpbmNsdWRlICJXSExT
TEFzc2lnbm1lbnRFeHByZXNzaW9uLmgiCisjaW5jbHVkZSAiV0hMU0xCYXNlRnVuY3Rpb25BdHRy
aWJ1dGUuaCIKKyNpbmNsdWRlICJXSExTTEJhc2VTZW1hbnRpYy5oIgorI2luY2x1ZGUgIldITFNM
QmxvY2suaCIKKyNpbmNsdWRlICJXSExTTEJvb2xlYW5MaXRlcmFsLmgiCisjaW5jbHVkZSAiV0hM
U0xCcmVhay5oIgorI2luY2x1ZGUgIldITFNMQnVpbHRJblNlbWFudGljLmgiCisjaW5jbHVkZSAi
V0hMU0xDYWxsRXhwcmVzc2lvbi5oIgorI2luY2x1ZGUgIldITFNMQ29tbWFFeHByZXNzaW9uLmgi
CisjaW5jbHVkZSAiV0hMU0xDb25zdGFudEV4cHJlc3Npb24uaCIKKyNpbmNsdWRlICJXSExTTENv
bnN0YW50RXhwcmVzc2lvbkVudW1lcmF0aW9uTWVtYmVyUmVmZXJlbmNlLmgiCisjaW5jbHVkZSAi
V0hMU0xDb250aW51ZS5oIgorI2luY2x1ZGUgIldITFNMRGVyZWZlcmVuY2VFeHByZXNzaW9uLmgi
CisjaW5jbHVkZSAiV0hMU0xEb1doaWxlTG9vcC5oIgorI2luY2x1ZGUgIldITFNMRG90RXhwcmVz
c2lvbi5oIgorI2luY2x1ZGUgIldITFNMRWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVudC5oIgor
I2luY2x1ZGUgIldITFNMRW51bWVyYXRpb25EZWZpbml0aW9uLmgiCisjaW5jbHVkZSAiV0hMU0xF
bnVtZXJhdGlvbk1lbWJlci5oIgorI2luY2x1ZGUgIldITFNMRXhwcmVzc2lvbi5oIgorI2luY2x1
ZGUgIldITFNMRmFsbHRocm91Z2guaCIKKyNpbmNsdWRlICJXSExTTEZsb2F0TGl0ZXJhbC5oIgor
I2luY2x1ZGUgIldITFNMRm9yTG9vcC5oIgorI2luY2x1ZGUgIldITFNMRnVuY3Rpb25BdHRyaWJ1
dGUuaCIKKyNpbmNsdWRlICJXSExTTEZ1bmN0aW9uRGVjbGFyYXRpb24uaCIKKyNpbmNsdWRlICJX
SExTTEZ1bmN0aW9uRGVmaW5pdGlvbi5oIgorI2luY2x1ZGUgIldITFNMSWZTdGF0ZW1lbnQuaCIK
KyNpbmNsdWRlICJXSExTTEluZGV4RXhwcmVzc2lvbi5oIgorI2luY2x1ZGUgIldITFNMSW50ZWdl
ckxpdGVyYWwuaCIKKyNpbmNsdWRlICJXSExTTExvZ2ljYWxFeHByZXNzaW9uLmgiCisjaW5jbHVk
ZSAiV0hMU0xMb2dpY2FsTm90RXhwcmVzc2lvbi5oIgorI2luY2x1ZGUgIldITFNMTWFrZUFycmF5
UmVmZXJlbmNlRXhwcmVzc2lvbi5oIgorI2luY2x1ZGUgIldITFNMTWFrZVBvaW50ZXJFeHByZXNz
aW9uLmgiCisjaW5jbHVkZSAiV0hMU0xOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLmgiCisjaW5j
bHVkZSAiV0hMU0xOYXRpdmVUeXBlRGVjbGFyYXRpb24uaCIKKyNpbmNsdWRlICJXSExTTE5vZGUu
aCIKKyNpbmNsdWRlICJXSExTTE51bGxMaXRlcmFsLmgiCisjaW5jbHVkZSAiV0hMU0xOdW1UaHJl
YWRzRnVuY3Rpb25BdHRyaWJ1dGUuaCIKKyNpbmNsdWRlICJXSExTTFBvaW50ZXJUeXBlLmgiCisj
aW5jbHVkZSAiV0hMU0xQcm9ncmFtLmgiCisjaW5jbHVkZSAiV0hMU0xQcm9wZXJ0eUFjY2Vzc0V4
cHJlc3Npb24uaCIKKyNpbmNsdWRlICJXSExTTFF1YWxpZmllci5oIgorI2luY2x1ZGUgIldITFNM
UmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbi5oIgorI2luY2x1ZGUgIldITFNMUmVmZXJlbmNlVHlw
ZS5oIgorI2luY2x1ZGUgIldITFNMUmVzb3VyY2VTZW1hbnRpYy5oIgorI2luY2x1ZGUgIldITFNM
UmV0dXJuLmgiCisjaW5jbHVkZSAiV0hMU0xTZW1hbnRpYy5oIgorI2luY2x1ZGUgIldITFNMU3Bl
Y2lhbGl6YXRpb25Db25zdGFudFNlbWFudGljLmgiCisjaW5jbHVkZSAiV0hMU0xTdGFnZUluT3V0
U2VtYW50aWMuaCIKKyNpbmNsdWRlICJXSExTTFN0YXRlbWVudC5oIgorI2luY2x1ZGUgIldITFNM
U3RydWN0dXJlRGVmaW5pdGlvbi5oIgorI2luY2x1ZGUgIldITFNMU3RydWN0dXJlRWxlbWVudC5o
IgorI2luY2x1ZGUgIldITFNMU3dpdGNoQ2FzZS5oIgorI2luY2x1ZGUgIldITFNMU3dpdGNoU3Rh
dGVtZW50LmgiCisjaW5jbHVkZSAiV0hMU0xUZXJuYXJ5RXhwcmVzc2lvbi5oIgorI2luY2x1ZGUg
IldITFNMVHJhcC5oIgorI2luY2x1ZGUgIldITFNMVHlwZS5oIgorI2luY2x1ZGUgIldITFNMVHlw
ZUFyZ3VtZW50LmgiCisjaW5jbHVkZSAiV0hMU0xUeXBlRGVmaW5pdGlvbi5oIgorI2luY2x1ZGUg
IldITFNMVHlwZVJlZmVyZW5jZS5oIgorI2luY2x1ZGUgIldITFNMVW5zaWduZWRJbnRlZ2VyTGl0
ZXJhbC5oIgorI2luY2x1ZGUgIldITFNMVmFsdWUuaCIKKyNpbmNsdWRlICJXSExTTFZhcmlhYmxl
RGVjbGFyYXRpb24uaCIKKyNpbmNsdWRlICJXSExTTFZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVt
ZW50LmgiCisjaW5jbHVkZSAiV0hMU0xWYXJpYWJsZVJlZmVyZW5jZS5oIgorI2luY2x1ZGUgIldI
TFNMV2hpbGVMb29wLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworbmFtZXNwYWNlIFdITFNM
IHsKKwordm9pZCBWaXNpdG9yOjp2aXNpdChQcm9ncmFtJiBwcm9ncmFtKQoreworICAgIC8vIFRo
ZXNlIHZpc2l0aW5nIGZ1bmN0aW9ucyBtaWdodCBhZGQgbmV3IGdsb2JhbCBzdGF0ZW1lbnRzLCBz
byBkb24ndCB1c2UgZm9yZWFjaCBzeW50YXguCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBw
cm9ncmFtLnR5cGVEZWZpbml0aW9ucygpLnNpemUoKTsgKytpKQorICAgICAgICBjaGVja0Vycm9y
QW5kVmlzaXQoc3RhdGljX2Nhc3Q8QVNUOjpUeXBlRGVmaW5pdGlvbiY+KHByb2dyYW0udHlwZURl
ZmluaXRpb25zKClbaV0pKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHByb2dyYW0uc3Ry
dWN0dXJlRGVmaW5pdGlvbnMoKS5zaXplKCk7ICsraSkKKyAgICAgICAgY2hlY2tFcnJvckFuZFZp
c2l0KHN0YXRpY19jYXN0PEFTVDo6U3RydWN0dXJlRGVmaW5pdGlvbiY+KHByb2dyYW0uc3RydWN0
dXJlRGVmaW5pdGlvbnMoKVtpXSkpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcHJvZ3Jh
bS5lbnVtZXJhdGlvbkRlZmluaXRpb25zKCkuc2l6ZSgpOyArK2kpCisgICAgICAgIGNoZWNrRXJy
b3JBbmRWaXNpdChzdGF0aWNfY2FzdDxBU1Q6OkVudW1lcmF0aW9uRGVmaW5pdGlvbiY+KHByb2dy
YW0uZW51bWVyYXRpb25EZWZpbml0aW9ucygpW2ldKSk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBwcm9ncmFtLmZ1bmN0aW9uRGVmaW5pdGlvbnMoKS5zaXplKCk7ICsraSkKKyAgICAgICAg
Y2hlY2tFcnJvckFuZFZpc2l0KHN0YXRpY19jYXN0PEFTVDo6RnVuY3Rpb25EZWZpbml0aW9uJj4o
cHJvZ3JhbS5mdW5jdGlvbkRlZmluaXRpb25zKClbaV0pKTsKKyAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IHByb2dyYW0ubmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbnMoKS5zaXplKCk7ICsraSkK
KyAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KHN0YXRpY19jYXN0PEFTVDo6TmF0aXZlRnVuY3Rp
b25EZWNsYXJhdGlvbiY+KHByb2dyYW0ubmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbnMoKVtpXSkp
OworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcHJvZ3JhbS5uYXRpdmVUeXBlRGVjbGFyYXRp
b25zKCkuc2l6ZSgpOyArK2kpCisgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChzdGF0aWNfY2Fz
dDxBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbiY+KHByb2dyYW0ubmF0aXZlVHlwZURlY2xhcmF0
aW9ucygpW2ldKSk7Cit9CisKK3ZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpVbm5hbWVkVHlwZSYg
dW5uYW1lZFR5cGUpCit7CisgICAgaWYgKGlzPEFTVDo6VHlwZVJlZmVyZW5jZT4odW5uYW1lZFR5
cGUpKQorICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZG93bmNhc3Q8QVNUOjpUeXBlUmVmZXJl
bmNlPih1bm5hbWVkVHlwZSkpOworICAgIGVsc2UgaWYgKGlzPEFTVDo6UG9pbnRlclR5cGU+KHVu
bmFtZWRUeXBlKSkKKyAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6UG9p
bnRlclR5cGU+KHVubmFtZWRUeXBlKSk7CisgICAgZWxzZSBpZiAoaXM8QVNUOjpBcnJheVJlZmVy
ZW5jZVR5cGU+KHVubmFtZWRUeXBlKSkKKyAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvd25j
YXN0PEFTVDo6QXJyYXlSZWZlcmVuY2VUeXBlPih1bm5hbWVkVHlwZSkpOworICAgIGVsc2Ugewor
ICAgICAgICBBU1NFUlQoaXM8QVNUOjpBcnJheVR5cGU+KHVubmFtZWRUeXBlKSk7CisgICAgICAg
IGNoZWNrRXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6OkFycmF5VHlwZT4odW5uYW1lZFR5cGUp
KTsKKyAgICB9Cit9CisKK3ZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpOYW1lZFR5cGUmIG5hbWVk
VHlwZSkKK3sKKyAgICBpZiAoaXM8QVNUOjpUeXBlRGVmaW5pdGlvbj4obmFtZWRUeXBlKSkKKyAg
ICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6VHlwZURlZmluaXRpb24+KG5h
bWVkVHlwZSkpOworICAgIGVsc2UgaWYgKGlzPEFTVDo6U3RydWN0dXJlRGVmaW5pdGlvbj4obmFt
ZWRUeXBlKSkKKyAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6U3RydWN0
dXJlRGVmaW5pdGlvbj4obmFtZWRUeXBlKSk7CisgICAgZWxzZSBpZiAoaXM8QVNUOjpFbnVtZXJh
dGlvbkRlZmluaXRpb24+KG5hbWVkVHlwZSkpCisgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChk
b3duY2FzdDxBU1Q6OkVudW1lcmF0aW9uRGVmaW5pdGlvbj4obmFtZWRUeXBlKSk7CisgICAgZWxz
ZSB7CisgICAgICAgIEFTU0VSVChpczxBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbj4obmFtZWRU
eXBlKSk7CisgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6Ok5hdGl2ZVR5
cGVEZWNsYXJhdGlvbj4obmFtZWRUeXBlKSk7CisgICAgfQorfQorCit2b2lkIFZpc2l0b3I6OnZp
c2l0KEFTVDo6VHlwZURlZmluaXRpb24mIHR5cGVEZWZpbml0aW9uKQoreworICAgIGNoZWNrRXJy
b3JBbmRWaXNpdCh0eXBlRGVmaW5pdGlvbi50eXBlKCkpOworfQorCit2b2lkIFZpc2l0b3I6OnZp
c2l0KEFTVDo6U3RydWN0dXJlRGVmaW5pdGlvbiYgc3RydWN0dXJlRGVmaW5pdGlvbikKK3sKKyAg
ICBmb3IgKGF1dG8mIHN0cnVjdHVyZUVsZW1lbnQgOiBzdHJ1Y3R1cmVEZWZpbml0aW9uLnN0cnVj
dHVyZUVsZW1lbnRzKCkpCisgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChzdHJ1Y3R1cmVFbGVt
ZW50KTsKK30KKwordm9pZCBWaXNpdG9yOjp2aXNpdChBU1Q6OkVudW1lcmF0aW9uRGVmaW5pdGlv
biYgZW51bWVyYXRpb25EZWZpbml0aW9uKQoreworICAgIGlmIChlbnVtZXJhdGlvbkRlZmluaXRp
b24udHlwZSgpKQorICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoc3RhdGljX2Nhc3Q8QVNUOjpV
bm5hbWVkVHlwZSY+KCplbnVtZXJhdGlvbkRlZmluaXRpb24udHlwZSgpKSk7CisgICAgZm9yIChh
dXRvJiBlbnVtZXJhdGlvbk1lbWJlciA6IGVudW1lcmF0aW9uRGVmaW5pdGlvbi5lbnVtZXJhdGlv
bk1lbWJlcnMoKSkKKyAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGVudW1lcmF0aW9uTWVtYmVy
KTsKK30KKwordm9pZCBWaXNpdG9yOjp2aXNpdChBU1Q6OkZ1bmN0aW9uRGVmaW5pdGlvbiYgZnVu
Y3Rpb25EZWZpbml0aW9uKQoreworICAgIGNoZWNrRXJyb3JBbmRWaXNpdChzdGF0aWNfY2FzdDxB
U1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24mPihmdW5jdGlvbkRlZmluaXRpb24pKTsKKyAgICBjaGVj
a0Vycm9yQW5kVmlzaXQoZnVuY3Rpb25EZWZpbml0aW9uLmJsb2NrKCkpOworfQorCit2b2lkIFZp
c2l0b3I6OnZpc2l0KEFTVDo6TmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbiYgbmF0aXZlRnVuY3Rp
b25EZWNsYXJhdGlvbikKK3sKKyAgICBjaGVja0Vycm9yQW5kVmlzaXQoc3RhdGljX2Nhc3Q8QVNU
OjpGdW5jdGlvbkRlY2xhcmF0aW9uJj4obmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbikpOworfQor
Cit2b2lkIFZpc2l0b3I6OnZpc2l0KEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uJiBuYXRpdmVU
eXBlRGVjbGFyYXRpb24pCit7CisgICAgZm9yIChhdXRvJiB0eXBlQXJndW1lbnQgOiBuYXRpdmVU
eXBlRGVjbGFyYXRpb24udHlwZUFyZ3VtZW50cygpKQorICAgICAgICBjaGVja0Vycm9yQW5kVmlz
aXQodHlwZUFyZ3VtZW50KTsKK30KKwordm9pZCBWaXNpdG9yOjp2aXNpdChBU1Q6OlR5cGVSZWZl
cmVuY2UmIHR5cGVSZWZlcmVuY2UpCit7CisgICAgZm9yIChhdXRvJiB0eXBlQXJndW1lbnQgOiB0
eXBlUmVmZXJlbmNlLnR5cGVBcmd1bWVudHMoKSkKKyAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0
KHR5cGVBcmd1bWVudCk7CisgICAgaWYgKHR5cGVSZWZlcmVuY2UucmVzb2x2ZWRUeXBlKCkgJiYg
aXM8QVNUOjpUeXBlRGVmaW5pdGlvbj4oKnR5cGVSZWZlcmVuY2UucmVzb2x2ZWRUeXBlKCkpKSB7
CisgICAgICAgIGF1dG8mIHR5cGVEZWZpbml0aW9uID0gZG93bmNhc3Q8QVNUOjpUeXBlRGVmaW5p
dGlvbj4oKnR5cGVSZWZlcmVuY2UucmVzb2x2ZWRUeXBlKCkpOworICAgICAgICBjaGVja0Vycm9y
QW5kVmlzaXQodHlwZURlZmluaXRpb24udHlwZSgpKTsKKyAgICB9Cit9CisKK3ZvaWQgVmlzaXRv
cjo6dmlzaXQoQVNUOjpQb2ludGVyVHlwZSYgcG9pbnRlclR5cGUpCit7CisgICAgY2hlY2tFcnJv
ckFuZFZpc2l0KHN0YXRpY19jYXN0PEFTVDo6UmVmZXJlbmNlVHlwZSY+KHBvaW50ZXJUeXBlKSk7
Cit9CisKK3ZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpBcnJheVJlZmVyZW5jZVR5cGUmIGFycmF5
UmVmZXJlbmNlVHlwZSkKK3sKKyAgICBjaGVja0Vycm9yQW5kVmlzaXQoc3RhdGljX2Nhc3Q8QVNU
OjpSZWZlcmVuY2VUeXBlJj4oYXJyYXlSZWZlcmVuY2VUeXBlKSk7Cit9CisKK3ZvaWQgVmlzaXRv
cjo6dmlzaXQoQVNUOjpBcnJheVR5cGUmIGFycmF5VHlwZSkKK3sKKyAgICBjaGVja0Vycm9yQW5k
VmlzaXQoYXJyYXlUeXBlLnR5cGUoKSk7Cit9CisKK3ZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpT
dHJ1Y3R1cmVFbGVtZW50JiBzdHJ1Y3R1cmVFbGVtZW50KQoreworICAgIGNoZWNrRXJyb3JBbmRW
aXNpdChzdHJ1Y3R1cmVFbGVtZW50LnR5cGUoKSk7CisgICAgaWYgKHN0cnVjdHVyZUVsZW1lbnQu
c2VtYW50aWMoKSkKKyAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KCpzdHJ1Y3R1cmVFbGVtZW50
LnNlbWFudGljKCkpOworfQorCit2b2lkIFZpc2l0b3I6OnZpc2l0KEFTVDo6RW51bWVyYXRpb25N
ZW1iZXImIGVudW1lcmF0aW9uTWVtYmVyKQoreworICAgIGlmIChlbnVtZXJhdGlvbk1lbWJlci52
YWx1ZSgpKQorICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoKmVudW1lcmF0aW9uTWVtYmVyLnZh
bHVlKCkpOworfQorCit2b2lkIFZpc2l0b3I6OnZpc2l0KEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlv
biYgZnVuY3Rpb25EZWNsYXJhdGlvbikKK3sKKyAgICBjaGVja0Vycm9yQW5kVmlzaXQoZnVuY3Rp
b25EZWNsYXJhdGlvbi5hdHRyaWJ1dGVCbG9jaygpKTsKKyAgICBjaGVja0Vycm9yQW5kVmlzaXQo
ZnVuY3Rpb25EZWNsYXJhdGlvbi50eXBlKCkpOworICAgIGZvciAoYXV0byYgcGFyYW1ldGVyIDog
ZnVuY3Rpb25EZWNsYXJhdGlvbi5wYXJhbWV0ZXJzKCkpCisgICAgICAgIGNoZWNrRXJyb3JBbmRW
aXNpdChwYXJhbWV0ZXIpOworICAgIGlmIChmdW5jdGlvbkRlY2xhcmF0aW9uLnNlbWFudGljKCkp
CisgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdCgqZnVuY3Rpb25EZWNsYXJhdGlvbi5zZW1hbnRp
YygpKTsKK30KKwordm9pZCBWaXNpdG9yOjp2aXNpdChBU1Q6OlR5cGVBcmd1bWVudCYgdHlwZUFy
Z3VtZW50KQoreworICAgIFdURjo6dmlzaXQoV1RGOjptYWtlVmlzaXRvcihbJl0oQVNUOjpDb25z
dGFudEV4cHJlc3Npb24mIGNvbnN0YW50RXhwcmVzc2lvbikgeworICAgICAgICBjaGVja0Vycm9y
QW5kVmlzaXQoY29uc3RhbnRFeHByZXNzaW9uKTsKKyAgICB9LCBbJl0oVW5pcXVlUmVmPEFTVDo6
VHlwZVJlZmVyZW5jZT4mIHR5cGVSZWZlcmVuY2UpIHsKKyAgICAgICAgY2hlY2tFcnJvckFuZFZp
c2l0KHN0YXRpY19jYXN0PEFTVDo6VHlwZVJlZmVyZW5jZSY+KHR5cGVSZWZlcmVuY2UpKTsKKyAg
ICB9KSwgdHlwZUFyZ3VtZW50KTsKK30KKwordm9pZCBWaXNpdG9yOjp2aXNpdChBU1Q6OlJlZmVy
ZW5jZVR5cGUmIHJlZmVyZW5jZVR5cGUpCit7CisgICAgY2hlY2tFcnJvckFuZFZpc2l0KHJlZmVy
ZW5jZVR5cGUuZWxlbWVudFR5cGUoKSk7Cit9CisKK3ZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpT
ZW1hbnRpYyYgc2VtYW50aWMpCit7CisgICAgV1RGOjp2aXNpdChXVEY6Om1ha2VWaXNpdG9yKFsm
XShBU1Q6OkJ1aWx0SW5TZW1hbnRpYyYgYnVpbHRJblNlbWFudGljKSB7CisgICAgICAgIGNoZWNr
RXJyb3JBbmRWaXNpdChidWlsdEluU2VtYW50aWMpOworICAgIH0sIFsmXShBU1Q6OlJlc291cmNl
U2VtYW50aWMmIHJlc291cmNlU2VtYW50aWMpIHsKKyAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0
KHJlc291cmNlU2VtYW50aWMpOworICAgIH0sIFsmXShBU1Q6OlNwZWNpYWxpemF0aW9uQ29uc3Rh
bnRTZW1hbnRpYyYgc3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFudGljKSB7CisgICAgICAgIGNo
ZWNrRXJyb3JBbmRWaXNpdChzcGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWMpOworICAgIH0s
IFsmXShBU1Q6OlN0YWdlSW5PdXRTZW1hbnRpYyYgc3RhZ2VJbk91dFNlbWFudGljKSB7CisgICAg
ICAgIGNoZWNrRXJyb3JBbmRWaXNpdChzdGFnZUluT3V0U2VtYW50aWMpOworICAgIH0pLCBzZW1h
bnRpYyk7Cit9CisKK3ZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpDb25zdGFudEV4cHJlc3Npb24m
IGNvbnN0YW50RXhwcmVzc2lvbikKK3sKKyAgICBjb25zdGFudEV4cHJlc3Npb24udmlzaXQoV1RG
OjptYWtlVmlzaXRvcihbJl0oQVNUOjpJbnRlZ2VyTGl0ZXJhbCYgaW50ZWdlckxpdGVyYWwpIHsK
KyAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGludGVnZXJMaXRlcmFsKTsKKyAgICB9LCBbJl0o
QVNUOjpVbnNpZ25lZEludGVnZXJMaXRlcmFsJiB1bnNpZ25lZEludGVnZXJMaXRlcmFsKSB7Cisg
ICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdCh1bnNpZ25lZEludGVnZXJMaXRlcmFsKTsKKyAgICB9
LCBbJl0oQVNUOjpGbG9hdExpdGVyYWwmIGZsb2F0TGl0ZXJhbCkgeworICAgICAgICBjaGVja0Vy
cm9yQW5kVmlzaXQoZmxvYXRMaXRlcmFsKTsKKyAgICB9LCBbJl0oQVNUOjpOdWxsTGl0ZXJhbCYg
bnVsbExpdGVyYWwpIHsKKyAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KG51bGxMaXRlcmFsKTsK
KyAgICB9LCBbJl0oQVNUOjpCb29sZWFuTGl0ZXJhbCYgYm9vbGVhbkxpdGVyYWwpIHsKKyAgICAg
ICAgY2hlY2tFcnJvckFuZFZpc2l0KGJvb2xlYW5MaXRlcmFsKTsKKyAgICB9LCBbJl0oQVNUOjpD
b25zdGFudEV4cHJlc3Npb25FbnVtZXJhdGlvbk1lbWJlclJlZmVyZW5jZSYgY29uc3RhbnRFeHBy
ZXNzaW9uRW51bWVyYXRpb25NZW1iZXJSZWZlcmVuY2UpIHsKKyAgICAgICAgY2hlY2tFcnJvckFu
ZFZpc2l0KGNvbnN0YW50RXhwcmVzc2lvbkVudW1lcmF0aW9uTWVtYmVyUmVmZXJlbmNlKTsKKyAg
ICB9KSk7Cit9CisKK3ZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpBdHRyaWJ1dGVCbG9jayYgYXR0
cmlidXRlQmxvY2spCit7CisgICAgZm9yIChhdXRvJiBmdW5jdGlvbkF0dHJpYnV0ZSA6IGF0dHJp
YnV0ZUJsb2NrKQorICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZnVuY3Rpb25BdHRyaWJ1dGUp
OworfQorCit2b2lkIFZpc2l0b3I6OnZpc2l0KEFTVDo6QnVpbHRJblNlbWFudGljJikKK3sKK30K
Kwordm9pZCBWaXNpdG9yOjp2aXNpdChBU1Q6OlJlc291cmNlU2VtYW50aWMmKQoreworfQorCit2
b2lkIFZpc2l0b3I6OnZpc2l0KEFTVDo6U3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFudGljJikK
K3sKK30KKwordm9pZCBWaXNpdG9yOjp2aXNpdChBU1Q6OlN0YWdlSW5PdXRTZW1hbnRpYyYpCit7
Cit9CisKK3ZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpJbnRlZ2VyTGl0ZXJhbCYgaW50ZWdlckxp
dGVyYWwpCit7CisgICAgY2hlY2tFcnJvckFuZFZpc2l0KGludGVnZXJMaXRlcmFsLnR5cGUoKSk7
Cit9CisKK3ZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpVbnNpZ25lZEludGVnZXJMaXRlcmFsJiB1
bnNpZ25lZEludGVnZXJMaXRlcmFsKQoreworICAgIGNoZWNrRXJyb3JBbmRWaXNpdCh1bnNpZ25l
ZEludGVnZXJMaXRlcmFsLnR5cGUoKSk7Cit9CisKK3ZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpG
bG9hdExpdGVyYWwmIGZsb2F0TGl0ZXJhbCkKK3sKKyAgICBjaGVja0Vycm9yQW5kVmlzaXQoZmxv
YXRMaXRlcmFsLnR5cGUoKSk7Cit9CisKK3ZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpOdWxsTGl0
ZXJhbCYgbnVsbExpdGVyYWwpCit7CisgICAgY2hlY2tFcnJvckFuZFZpc2l0KG51bGxMaXRlcmFs
LnR5cGUoKSk7Cit9CisKK3ZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpCb29sZWFuTGl0ZXJhbCYp
Cit7Cit9CisKK3ZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpJbnRlZ2VyTGl0ZXJhbFR5cGUmIGlu
dGVnZXJMaXRlcmFsVHlwZSkKK3sKKyAgICBpZiAoaW50ZWdlckxpdGVyYWxUeXBlLnJlc29sdmVk
VHlwZSgpKQorICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoKmludGVnZXJMaXRlcmFsVHlwZS5y
ZXNvbHZlZFR5cGUoKSk7CisgICAgY2hlY2tFcnJvckFuZFZpc2l0KGludGVnZXJMaXRlcmFsVHlw
ZS5wcmVmZXJyZWRUeXBlKCkpOworfQorCit2b2lkIFZpc2l0b3I6OnZpc2l0KEFTVDo6VW5zaWdu
ZWRJbnRlZ2VyTGl0ZXJhbFR5cGUmIHVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlKQoreworICAg
IGlmICh1bnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZS5yZXNvbHZlZFR5cGUoKSkKKyAgICAgICAg
Y2hlY2tFcnJvckFuZFZpc2l0KCp1bnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZS5yZXNvbHZlZFR5
cGUoKSk7CisgICAgY2hlY2tFcnJvckFuZFZpc2l0KHVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBl
LnByZWZlcnJlZFR5cGUoKSk7Cit9CisKK3ZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpGbG9hdExp
dGVyYWxUeXBlJiBmbG9hdExpdGVyYWxUeXBlKQoreworICAgIGlmIChmbG9hdExpdGVyYWxUeXBl
LnJlc29sdmVkVHlwZSgpKQorICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoKmZsb2F0TGl0ZXJh
bFR5cGUucmVzb2x2ZWRUeXBlKCkpOworICAgIGNoZWNrRXJyb3JBbmRWaXNpdChmbG9hdExpdGVy
YWxUeXBlLnByZWZlcnJlZFR5cGUoKSk7Cit9CisKK3ZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpO
dWxsTGl0ZXJhbFR5cGUmIG51bGxMaXRlcmFsVHlwZSkKK3sKKyAgICBpZiAobnVsbExpdGVyYWxU
eXBlLnJlc29sdmVkVHlwZSgpKQorICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoKm51bGxMaXRl
cmFsVHlwZS5yZXNvbHZlZFR5cGUoKSk7Cit9CisKK3ZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpD
b25zdGFudEV4cHJlc3Npb25FbnVtZXJhdGlvbk1lbWJlclJlZmVyZW5jZSYpCit7Cit9CisKK3Zv
aWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpGdW5jdGlvbkF0dHJpYnV0ZSYgZnVuY3Rpb25BdHRyaWJ1
dGUpCit7CisgICAgV1RGOjp2aXNpdChXVEY6Om1ha2VWaXNpdG9yKFsmXShBU1Q6Ok51bVRocmVh
ZHNGdW5jdGlvbkF0dHJpYnV0ZSYgbnVtVGhyZWFkc0Z1bmN0aW9uQXR0cmlidXRlKSB7CisgICAg
ICAgIGNoZWNrRXJyb3JBbmRWaXNpdChudW1UaHJlYWRzRnVuY3Rpb25BdHRyaWJ1dGUpOworICAg
IH0pLCBmdW5jdGlvbkF0dHJpYnV0ZSk7Cit9CisKK3ZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpO
dW1UaHJlYWRzRnVuY3Rpb25BdHRyaWJ1dGUmKQoreworfQorCit2b2lkIFZpc2l0b3I6OnZpc2l0
KEFTVDo6QmxvY2smIGJsb2NrKQoreworICAgIGZvciAoYXV0byYgc3RhdGVtZW50IDogYmxvY2su
c3RhdGVtZW50cygpKQorICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoc3RhdGljX2Nhc3Q8QVNU
OjpTdGF0ZW1lbnQmPihzdGF0ZW1lbnQpKTsKK30KKwordm9pZCBWaXNpdG9yOjp2aXNpdChBU1Q6
OlN0YXRlbWVudCYgc3RhdGVtZW50KQoreworICAgIGlmIChpczxBU1Q6OkJsb2NrPihzdGF0ZW1l
bnQpKQorICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZG93bmNhc3Q8QVNUOjpCbG9jaz4oc3Rh
dGVtZW50KSk7CisgICAgZWxzZSBpZiAoaXM8QVNUOjpCcmVhaz4oc3RhdGVtZW50KSkKKyAgICAg
ICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6QnJlYWs+KHN0YXRlbWVudCkpOwor
ICAgIGVsc2UgaWYgKGlzPEFTVDo6Q29udGludWU+KHN0YXRlbWVudCkpCisgICAgICAgIGNoZWNr
RXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6OkNvbnRpbnVlPihzdGF0ZW1lbnQpKTsKKyAgICBl
bHNlIGlmIChpczxBU1Q6OkRvV2hpbGVMb29wPihzdGF0ZW1lbnQpKQorICAgICAgICBjaGVja0Vy
cm9yQW5kVmlzaXQoZG93bmNhc3Q8QVNUOjpEb1doaWxlTG9vcD4oc3RhdGVtZW50KSk7CisgICAg
ZWxzZSBpZiAoaXM8QVNUOjpFZmZlY3RmdWxFeHByZXNzaW9uU3RhdGVtZW50PihzdGF0ZW1lbnQp
KQorICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZG93bmNhc3Q8QVNUOjpFZmZlY3RmdWxFeHBy
ZXNzaW9uU3RhdGVtZW50PihzdGF0ZW1lbnQpKTsKKyAgICBlbHNlIGlmIChpczxBU1Q6OkZhbGx0
aHJvdWdoPihzdGF0ZW1lbnQpKQorICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZG93bmNhc3Q8
QVNUOjpGYWxsdGhyb3VnaD4oc3RhdGVtZW50KSk7CisgICAgZWxzZSBpZiAoaXM8QVNUOjpGb3JM
b29wPihzdGF0ZW1lbnQpKQorICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZG93bmNhc3Q8QVNU
OjpGb3JMb29wPihzdGF0ZW1lbnQpKTsKKyAgICBlbHNlIGlmIChpczxBU1Q6OklmU3RhdGVtZW50
PihzdGF0ZW1lbnQpKQorICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZG93bmNhc3Q8QVNUOjpJ
ZlN0YXRlbWVudD4oc3RhdGVtZW50KSk7CisgICAgZWxzZSBpZiAoaXM8QVNUOjpSZXR1cm4+KHN0
YXRlbWVudCkpCisgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6OlJldHVy
bj4oc3RhdGVtZW50KSk7CisgICAgZWxzZSBpZiAoaXM8QVNUOjpTd2l0Y2hDYXNlPihzdGF0ZW1l
bnQpKQorICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZG93bmNhc3Q8QVNUOjpTd2l0Y2hDYXNl
PihzdGF0ZW1lbnQpKTsKKyAgICBlbHNlIGlmIChpczxBU1Q6OlN3aXRjaFN0YXRlbWVudD4oc3Rh
dGVtZW50KSkKKyAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6U3dpdGNo
U3RhdGVtZW50PihzdGF0ZW1lbnQpKTsKKyAgICBlbHNlIGlmIChpczxBU1Q6OlRyYXA+KHN0YXRl
bWVudCkpCisgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6OlRyYXA+KHN0
YXRlbWVudCkpOworICAgIGVsc2UgaWYgKGlzPEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0
ZW1lbnQ+KHN0YXRlbWVudCkpCisgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3duY2FzdDxB
U1Q6OlZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50PihzdGF0ZW1lbnQpKTsKKyAgICBlbHNl
IHsKKyAgICAgICAgQVNTRVJUKGlzPEFTVDo6V2hpbGVMb29wPihzdGF0ZW1lbnQpKTsKKyAgICAg
ICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6V2hpbGVMb29wPihzdGF0ZW1lbnQp
KTsKKyAgICB9Cit9CisKK3ZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpCcmVhayYpCit7Cit9CisK
K3ZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpDb250aW51ZSYpCit7Cit9CisKK3ZvaWQgVmlzaXRv
cjo6dmlzaXQoQVNUOjpEb1doaWxlTG9vcCYgZG9XaGlsZUxvb3ApCit7CisgICAgY2hlY2tFcnJv
ckFuZFZpc2l0KGRvV2hpbGVMb29wLmJvZHkoKSk7CisgICAgY2hlY2tFcnJvckFuZFZpc2l0KGRv
V2hpbGVMb29wLmNvbmRpdGlvbmFsKCkpOworfQorCit2b2lkIFZpc2l0b3I6OnZpc2l0KEFTVDo6
RXhwcmVzc2lvbiYgZXhwcmVzc2lvbikKK3sKKyAgICBpZiAoaXM8QVNUOjpBc3NpZ25tZW50RXhw
cmVzc2lvbj4oZXhwcmVzc2lvbikpCisgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3duY2Fz
dDxBU1Q6OkFzc2lnbm1lbnRFeHByZXNzaW9uPihleHByZXNzaW9uKSk7CisgICAgZWxzZSBpZiAo
aXM8QVNUOjpCb29sZWFuTGl0ZXJhbD4oZXhwcmVzc2lvbikpCisgICAgICAgIGNoZWNrRXJyb3JB
bmRWaXNpdChkb3duY2FzdDxBU1Q6OkJvb2xlYW5MaXRlcmFsPihleHByZXNzaW9uKSk7CisgICAg
ZWxzZSBpZiAoaXM8QVNUOjpDYWxsRXhwcmVzc2lvbj4oZXhwcmVzc2lvbikpCisgICAgICAgIGNo
ZWNrRXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6OkNhbGxFeHByZXNzaW9uPihleHByZXNzaW9u
KSk7CisgICAgZWxzZSBpZiAoaXM8QVNUOjpDb21tYUV4cHJlc3Npb24+KGV4cHJlc3Npb24pKQor
ICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZG93bmNhc3Q8QVNUOjpDb21tYUV4cHJlc3Npb24+
KGV4cHJlc3Npb24pKTsKKyAgICBlbHNlIGlmIChpczxBU1Q6OkRlcmVmZXJlbmNlRXhwcmVzc2lv
bj4oZXhwcmVzc2lvbikpCisgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6
OkRlcmVmZXJlbmNlRXhwcmVzc2lvbj4oZXhwcmVzc2lvbikpOworICAgIGVsc2UgaWYgKGlzPEFT
VDo6RmxvYXRMaXRlcmFsPihleHByZXNzaW9uKSkKKyAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0
KGRvd25jYXN0PEFTVDo6RmxvYXRMaXRlcmFsPihleHByZXNzaW9uKSk7CisgICAgZWxzZSBpZiAo
aXM8QVNUOjpJbnRlZ2VyTGl0ZXJhbD4oZXhwcmVzc2lvbikpCisgICAgICAgIGNoZWNrRXJyb3JB
bmRWaXNpdChkb3duY2FzdDxBU1Q6OkludGVnZXJMaXRlcmFsPihleHByZXNzaW9uKSk7CisgICAg
ZWxzZSBpZiAoaXM8QVNUOjpMb2dpY2FsRXhwcmVzc2lvbj4oZXhwcmVzc2lvbikpCisgICAgICAg
IGNoZWNrRXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6OkxvZ2ljYWxFeHByZXNzaW9uPihleHBy
ZXNzaW9uKSk7CisgICAgZWxzZSBpZiAoaXM8QVNUOjpMb2dpY2FsTm90RXhwcmVzc2lvbj4oZXhw
cmVzc2lvbikpCisgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6OkxvZ2lj
YWxOb3RFeHByZXNzaW9uPihleHByZXNzaW9uKSk7CisgICAgZWxzZSBpZiAoaXM8QVNUOjpNYWtl
QXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uPihleHByZXNzaW9uKSkKKyAgICAgICAgY2hlY2tFcnJv
ckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6TWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbj4oZXhw
cmVzc2lvbikpOworICAgIGVsc2UgaWYgKGlzPEFTVDo6TWFrZVBvaW50ZXJFeHByZXNzaW9uPihl
eHByZXNzaW9uKSkKKyAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6TWFr
ZVBvaW50ZXJFeHByZXNzaW9uPihleHByZXNzaW9uKSk7CisgICAgZWxzZSBpZiAoaXM8QVNUOjpO
dWxsTGl0ZXJhbD4oZXhwcmVzc2lvbikpCisgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3du
Y2FzdDxBU1Q6Ok51bGxMaXRlcmFsPihleHByZXNzaW9uKSk7CisgICAgZWxzZSBpZiAoaXM8QVNU
OjpEb3RFeHByZXNzaW9uPihleHByZXNzaW9uKSkKKyAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0
KGRvd25jYXN0PEFTVDo6RG90RXhwcmVzc2lvbj4oZXhwcmVzc2lvbikpOworICAgIGVsc2UgaWYg
KGlzPEFTVDo6SW5kZXhFeHByZXNzaW9uPihleHByZXNzaW9uKSkKKyAgICAgICAgY2hlY2tFcnJv
ckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6SW5kZXhFeHByZXNzaW9uPihleHByZXNzaW9uKSk7Cisg
ICAgZWxzZSBpZiAoaXM8QVNUOjpSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uPihleHByZXNzaW9u
KSkKKyAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6UmVhZE1vZGlmeVdy
aXRlRXhwcmVzc2lvbj4oZXhwcmVzc2lvbikpOworICAgIGVsc2UgaWYgKGlzPEFTVDo6VGVybmFy
eUV4cHJlc3Npb24+KGV4cHJlc3Npb24pKQorICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZG93
bmNhc3Q8QVNUOjpUZXJuYXJ5RXhwcmVzc2lvbj4oZXhwcmVzc2lvbikpOworICAgIGVsc2UgaWYg
KGlzPEFTVDo6VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbD4oZXhwcmVzc2lvbikpCisgICAgICAgIGNo
ZWNrRXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6OlVuc2lnbmVkSW50ZWdlckxpdGVyYWw+KGV4
cHJlc3Npb24pKTsKKyAgICBlbHNlIHsKKyAgICAgICAgQVNTRVJUKGlzPEFTVDo6VmFyaWFibGVS
ZWZlcmVuY2U+KGV4cHJlc3Npb24pKTsKKyAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvd25j
YXN0PEFTVDo6VmFyaWFibGVSZWZlcmVuY2U+KGV4cHJlc3Npb24pKTsKKyAgICB9Cit9CisKK3Zv
aWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpEb3RFeHByZXNzaW9uJiBkb3RFeHByZXNzaW9uKQorewor
ICAgIGNoZWNrRXJyb3JBbmRWaXNpdChzdGF0aWNfY2FzdDxBU1Q6OlByb3BlcnR5QWNjZXNzRXhw
cmVzc2lvbiY+KGRvdEV4cHJlc3Npb24pKTsKK30KKwordm9pZCBWaXNpdG9yOjp2aXNpdChBU1Q6
OkluZGV4RXhwcmVzc2lvbiYgaW5kZXhFeHByZXNzaW9uKQoreworICAgIGNoZWNrRXJyb3JBbmRW
aXNpdChpbmRleEV4cHJlc3Npb24uaW5kZXhFeHByZXNzaW9uKCkpOworICAgIGNoZWNrRXJyb3JB
bmRWaXNpdChzdGF0aWNfY2FzdDxBU1Q6OlByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbiY+KGluZGV4
RXhwcmVzc2lvbikpOworfQorCit2b2lkIFZpc2l0b3I6OnZpc2l0KEFTVDo6UHJvcGVydHlBY2Nl
c3NFeHByZXNzaW9uJiBleHByZXNzaW9uKQoreworICAgIGNoZWNrRXJyb3JBbmRWaXNpdChleHBy
ZXNzaW9uLmJhc2UoKSk7Cit9CisKK3ZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpFZmZlY3RmdWxF
eHByZXNzaW9uU3RhdGVtZW50JiBlZmZlY3RmdWxFeHByZXNzaW9uU3RhdGVtZW50KQoreworICAg
IGNoZWNrRXJyb3JBbmRWaXNpdChlZmZlY3RmdWxFeHByZXNzaW9uU3RhdGVtZW50LmVmZmVjdGZ1
bEV4cHJlc3Npb24oKSk7Cit9CisKK3ZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpGYWxsdGhyb3Vn
aCYpCit7Cit9CisKK3ZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpGb3JMb29wJiBmb3JMb29wKQor
eworICAgIFdURjo6dmlzaXQoV1RGOjptYWtlVmlzaXRvcihbJl0oQVNUOjpWYXJpYWJsZURlY2xh
cmF0aW9uc1N0YXRlbWVudCYgdmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQpIHsKKyAgICAg
ICAgY2hlY2tFcnJvckFuZFZpc2l0KHZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50KTsKKyAg
ICB9LCBbJl0oVW5pcXVlUmVmPEFTVDo6RXhwcmVzc2lvbj4mIGV4cHJlc3Npb24pIHsKKyAgICAg
ICAgY2hlY2tFcnJvckFuZFZpc2l0KHN0YXRpY19jYXN0PEFTVDo6RXhwcmVzc2lvbiY+KGV4cHJl
c3Npb24pKTsKKyAgICB9KSwgZm9yTG9vcC5pbml0aWFsaXphdGlvbigpKTsKKyAgICBpZiAoZm9y
TG9vcC5jb25kaXRpb24oKSkKKyAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KCpmb3JMb29wLmNv
bmRpdGlvbigpKTsKKyAgICBpZiAoZm9yTG9vcC5pbmNyZW1lbnQoKSkKKyAgICAgICAgY2hlY2tF
cnJvckFuZFZpc2l0KCpmb3JMb29wLmluY3JlbWVudCgpKTsKKyAgICBjaGVja0Vycm9yQW5kVmlz
aXQoZm9yTG9vcC5ib2R5KCkpOworfQorCit2b2lkIFZpc2l0b3I6OnZpc2l0KEFTVDo6SWZTdGF0
ZW1lbnQmIGlmU3RhdGVtZW50KQoreworICAgIGNoZWNrRXJyb3JBbmRWaXNpdChpZlN0YXRlbWVu
dC5jb25kaXRpb25hbCgpKTsKKyAgICBjaGVja0Vycm9yQW5kVmlzaXQoaWZTdGF0ZW1lbnQuYm9k
eSgpKTsKKyAgICBpZiAoaWZTdGF0ZW1lbnQuZWxzZUJvZHkoKSkKKyAgICAgICAgY2hlY2tFcnJv
ckFuZFZpc2l0KHN0YXRpY19jYXN0PEFTVDo6U3RhdGVtZW50Jj4oKmlmU3RhdGVtZW50LmVsc2VC
b2R5KCkpKTsKK30KKwordm9pZCBWaXNpdG9yOjp2aXNpdChBU1Q6OlJldHVybiYgcmV0dXJuU3Rh
dGVtZW50KQoreworICAgIGlmIChyZXR1cm5TdGF0ZW1lbnQudmFsdWUoKSkKKyAgICAgICAgY2hl
Y2tFcnJvckFuZFZpc2l0KCpyZXR1cm5TdGF0ZW1lbnQudmFsdWUoKSk7Cit9CisKK3ZvaWQgVmlz
aXRvcjo6dmlzaXQoQVNUOjpTd2l0Y2hDYXNlJiBzd2l0Y2hDYXNlKQoreworICAgIGlmIChzd2l0
Y2hDYXNlLnZhbHVlKCkpCisgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdCgqc3dpdGNoQ2FzZS52
YWx1ZSgpKTsKKyAgICBjaGVja0Vycm9yQW5kVmlzaXQoc3dpdGNoQ2FzZS5ibG9jaygpKTsKK30K
Kwordm9pZCBWaXNpdG9yOjp2aXNpdChBU1Q6OlN3aXRjaFN0YXRlbWVudCYgc3dpdGNoU3RhdGVt
ZW50KQoreworICAgIGNoZWNrRXJyb3JBbmRWaXNpdChzd2l0Y2hTdGF0ZW1lbnQudmFsdWUoKSk7
CisgICAgZm9yIChhdXRvJiBzd2l0Y2hDYXNlIDogc3dpdGNoU3RhdGVtZW50LnN3aXRjaENhc2Vz
KCkpCisgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChzd2l0Y2hDYXNlKTsKK30KKwordm9pZCBW
aXNpdG9yOjp2aXNpdChBU1Q6OlRyYXAmKQoreworfQorCit2b2lkIFZpc2l0b3I6OnZpc2l0KEFT
VDo6VmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQmIHZhcmlhYmxlRGVjbGFyYXRpb25zU3Rh
dGVtZW50KQoreworICAgIGZvciAoYXV0byYgdmFyaWFibGVEZWNsYXJhdGlvbiA6IHZhcmlhYmxl
RGVjbGFyYXRpb25zU3RhdGVtZW50LnZhcmlhYmxlRGVjbGFyYXRpb25zKCkpCisgICAgICAgIGNo
ZWNrRXJyb3JBbmRWaXNpdCh2YXJpYWJsZURlY2xhcmF0aW9uKTsKK30KKwordm9pZCBWaXNpdG9y
Ojp2aXNpdChBU1Q6OldoaWxlTG9vcCYgd2hpbGVMb29wKQoreworICAgIGNoZWNrRXJyb3JBbmRW
aXNpdCh3aGlsZUxvb3AuY29uZGl0aW9uYWwoKSk7CisgICAgY2hlY2tFcnJvckFuZFZpc2l0KHdo
aWxlTG9vcC5ib2R5KCkpOworfQorCit2b2lkIFZpc2l0b3I6OnZpc2l0KEFTVDo6VmFyaWFibGVE
ZWNsYXJhdGlvbiYgdmFyaWFibGVEZWNsYXJhdGlvbikKK3sKKyAgICBpZiAodmFyaWFibGVEZWNs
YXJhdGlvbi50eXBlKCkpCisgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdCgqdmFyaWFibGVEZWNs
YXJhdGlvbi50eXBlKCkpOworICAgIGlmICh2YXJpYWJsZURlY2xhcmF0aW9uLnNlbWFudGljKCkp
CisgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdCgqdmFyaWFibGVEZWNsYXJhdGlvbi5zZW1hbnRp
YygpKTsKKyAgICBpZiAodmFyaWFibGVEZWNsYXJhdGlvbi5pbml0aWFsaXplcigpKQorICAgICAg
ICBjaGVja0Vycm9yQW5kVmlzaXQoKnZhcmlhYmxlRGVjbGFyYXRpb24uaW5pdGlhbGl6ZXIoKSk7
Cit9CisKK3ZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpBc3NpZ25tZW50RXhwcmVzc2lvbiYgYXNz
aWdubWVudEV4cHJlc3Npb24pCit7CisgICAgY2hlY2tFcnJvckFuZFZpc2l0KGFzc2lnbm1lbnRF
eHByZXNzaW9uLmxlZnQoKSk7CisgICAgY2hlY2tFcnJvckFuZFZpc2l0KGFzc2lnbm1lbnRFeHBy
ZXNzaW9uLnJpZ2h0KCkpOworfQorCit2b2lkIFZpc2l0b3I6OnZpc2l0KEFTVDo6Q2FsbEV4cHJl
c3Npb24mIGNhbGxFeHByZXNzaW9uKQoreworICAgIGZvciAoYXV0byYgYXJndW1lbnQgOiBjYWxs
RXhwcmVzc2lvbi5hcmd1bWVudHMoKSkKKyAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KHN0YXRp
Y19jYXN0PEFTVDo6RXhwcmVzc2lvbiY+KGFyZ3VtZW50KSk7CisgICAgaWYgKGNhbGxFeHByZXNz
aW9uLmNhc3RSZXR1cm5UeXBlKCkpCisgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChjYWxsRXhw
cmVzc2lvbi5jYXN0UmV0dXJuVHlwZSgpLT5nZXQoKSk7Cit9CisKK3ZvaWQgVmlzaXRvcjo6dmlz
aXQoQVNUOjpDb21tYUV4cHJlc3Npb24mIGNvbW1hRXhwcmVzc2lvbikKK3sKKyAgICBmb3IgKGF1
dG8mIGV4cHJlc3Npb24gOiBjb21tYUV4cHJlc3Npb24ubGlzdCgpKQorICAgICAgICBjaGVja0Vy
cm9yQW5kVmlzaXQoc3RhdGljX2Nhc3Q8QVNUOjpFeHByZXNzaW9uJj4oZXhwcmVzc2lvbikpOwor
fQorCit2b2lkIFZpc2l0b3I6OnZpc2l0KEFTVDo6RGVyZWZlcmVuY2VFeHByZXNzaW9uJiBkZXJl
ZmVyZW5jZUV4cHJlc3Npb24pCit7CisgICAgY2hlY2tFcnJvckFuZFZpc2l0KGRlcmVmZXJlbmNl
RXhwcmVzc2lvbi5wb2ludGVyKCkpOworfQorCit2b2lkIFZpc2l0b3I6OnZpc2l0KEFTVDo6TG9n
aWNhbEV4cHJlc3Npb24mIGxvZ2ljYWxFeHByZXNzaW9uKQoreworICAgIGNoZWNrRXJyb3JBbmRW
aXNpdChsb2dpY2FsRXhwcmVzc2lvbi5sZWZ0KCkpOworICAgIGNoZWNrRXJyb3JBbmRWaXNpdChs
b2dpY2FsRXhwcmVzc2lvbi5yaWdodCgpKTsKK30KKwordm9pZCBWaXNpdG9yOjp2aXNpdChBU1Q6
OkxvZ2ljYWxOb3RFeHByZXNzaW9uJiBsb2dpY2FsTm90RXhwcmVzc2lvbikKK3sKKyAgICBjaGVj
a0Vycm9yQW5kVmlzaXQobG9naWNhbE5vdEV4cHJlc3Npb24ub3BlcmFuZCgpKTsKK30KKwordm9p
ZCBWaXNpdG9yOjp2aXNpdChBU1Q6Ok1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24mIG1ha2VB
cnJheVJlZmVyZW5jZUV4cHJlc3Npb24pCit7CisgICAgY2hlY2tFcnJvckFuZFZpc2l0KG1ha2VB
cnJheVJlZmVyZW5jZUV4cHJlc3Npb24ubFZhbHVlKCkpOworfQorCit2b2lkIFZpc2l0b3I6OnZp
c2l0KEFTVDo6TWFrZVBvaW50ZXJFeHByZXNzaW9uJiBtYWtlUG9pbnRlckV4cHJlc3Npb24pCit7
CisgICAgY2hlY2tFcnJvckFuZFZpc2l0KG1ha2VQb2ludGVyRXhwcmVzc2lvbi5sVmFsdWUoKSk7
Cit9CisKK3ZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9u
JiByZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uKQoreworICAgIGNoZWNrRXJyb3JBbmRWaXNpdChy
ZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uLmxWYWx1ZSgpKTsKKyAgICBjaGVja0Vycm9yQW5kVmlz
aXQocmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbi5vbGRWYWx1ZSgpKTsKKyAgICBjaGVja0Vycm9y
QW5kVmlzaXQocmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbi5uZXdWYWx1ZSgpKTsKKyAgICBpZiAo
cmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbi5uZXdWYWx1ZUV4cHJlc3Npb24oKSkKKyAgICAgICAg
Y2hlY2tFcnJvckFuZFZpc2l0KCpyZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uLm5ld1ZhbHVlRXhw
cmVzc2lvbigpKTsKKyAgICBpZiAocmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbi5yZXN1bHRFeHBy
ZXNzaW9uKCkpCisgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdCgqcmVhZE1vZGlmeVdyaXRlRXhw
cmVzc2lvbi5yZXN1bHRFeHByZXNzaW9uKCkpOworfQorCit2b2lkIFZpc2l0b3I6OnZpc2l0KEFT
VDo6VGVybmFyeUV4cHJlc3Npb24mIHRlcm5hcnlFeHByZXNzaW9uKQoreworICAgIGNoZWNrRXJy
b3JBbmRWaXNpdCh0ZXJuYXJ5RXhwcmVzc2lvbi5wcmVkaWNhdGUoKSk7CisgICAgY2hlY2tFcnJv
ckFuZFZpc2l0KHRlcm5hcnlFeHByZXNzaW9uLmJvZHlFeHByZXNzaW9uKCkpOworICAgIGNoZWNr
RXJyb3JBbmRWaXNpdCh0ZXJuYXJ5RXhwcmVzc2lvbi5lbHNlRXhwcmVzc2lvbigpKTsKK30KKwor
dm9pZCBWaXNpdG9yOjp2aXNpdChBU1Q6OlZhcmlhYmxlUmVmZXJlbmNlJikKK3sKK30KKwordm9p
ZCBWaXNpdG9yOjpjaGVja0Vycm9yQW5kVmlzaXQoUHJvZ3JhbSYgcHJvZ3JhbSkKK3sKKyAgICBp
ZiAoIWVycm9yKCkpCisgICAgICAgIHZpc2l0KHByb2dyYW0pOworfQorCit2b2lkIFZpc2l0b3I6
OmNoZWNrRXJyb3JBbmRWaXNpdChBU1Q6OlVubmFtZWRUeXBlJiB1bm5hbWVkVHlwZSkKK3sKKyAg
ICBpZiAoIWVycm9yKCkpCisgICAgICAgIHZpc2l0KHVubmFtZWRUeXBlKTsKK30KKwordm9pZCBW
aXNpdG9yOjpjaGVja0Vycm9yQW5kVmlzaXQoQVNUOjpOYW1lZFR5cGUmIG5hbWVkVHlwZSkKK3sK
KyAgICBpZiAoIWVycm9yKCkpCisgICAgICAgIHZpc2l0KG5hbWVkVHlwZSk7Cit9CisKK3ZvaWQg
VmlzaXRvcjo6Y2hlY2tFcnJvckFuZFZpc2l0KEFTVDo6VHlwZURlZmluaXRpb24mIHR5cGVEZWZp
bml0aW9uKQoreworICAgIGlmICghZXJyb3IoKSkKKyAgICAgICAgdmlzaXQodHlwZURlZmluaXRp
b24pOworfQorCit2b2lkIFZpc2l0b3I6OmNoZWNrRXJyb3JBbmRWaXNpdChBU1Q6OlN0cnVjdHVy
ZURlZmluaXRpb24mIHN0cnVjdHVyZURlZmluaXRpb24pCit7CisgICAgaWYgKCFlcnJvcigpKQor
ICAgICAgICB2aXNpdChzdHJ1Y3R1cmVEZWZpbml0aW9uKTsKK30KKwordm9pZCBWaXNpdG9yOjpj
aGVja0Vycm9yQW5kVmlzaXQoQVNUOjpFbnVtZXJhdGlvbkRlZmluaXRpb24mIGVudW1lcmF0aW9u
RGVmaW5pdGlvbikKK3sKKyAgICBpZiAoIWVycm9yKCkpCisgICAgICAgIHZpc2l0KGVudW1lcmF0
aW9uRGVmaW5pdGlvbik7Cit9CisKK3ZvaWQgVmlzaXRvcjo6Y2hlY2tFcnJvckFuZFZpc2l0KEFT
VDo6RnVuY3Rpb25EZWZpbml0aW9uJiBmdW5jdGlvbkRlZmluaXRpb24pCit7CisgICAgaWYgKCFl
cnJvcigpKQorICAgICAgICB2aXNpdChmdW5jdGlvbkRlZmluaXRpb24pOworfQorCit2b2lkIFZp
c2l0b3I6OmNoZWNrRXJyb3JBbmRWaXNpdChBU1Q6Ok5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24m
IG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24pCit7CisgICAgaWYgKCFlcnJvcigpKQorICAgICAg
ICB2aXNpdChuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uKTsKK30KKwordm9pZCBWaXNpdG9yOjpj
aGVja0Vycm9yQW5kVmlzaXQoQVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24mIG5hdGl2ZVR5cGVE
ZWNsYXJhdGlvbikKK3sKKyAgICBpZiAoIWVycm9yKCkpCisgICAgICAgIHZpc2l0KG5hdGl2ZVR5
cGVEZWNsYXJhdGlvbik7Cit9CisKK3ZvaWQgVmlzaXRvcjo6Y2hlY2tFcnJvckFuZFZpc2l0KEFT
VDo6VHlwZVJlZmVyZW5jZSYgdHlwZVJlZmVyZW5jZSkKK3sKKyAgICBpZiAoIWVycm9yKCkpCisg
ICAgICAgIHZpc2l0KHR5cGVSZWZlcmVuY2UpOworfQorCit2b2lkIFZpc2l0b3I6OmNoZWNrRXJy
b3JBbmRWaXNpdChBU1Q6OlBvaW50ZXJUeXBlJiBwb2ludGVyVHlwZSkKK3sKKyAgICBpZiAoIWVy
cm9yKCkpCisgICAgICAgIHZpc2l0KHBvaW50ZXJUeXBlKTsKK30KKwordm9pZCBWaXNpdG9yOjpj
aGVja0Vycm9yQW5kVmlzaXQoQVNUOjpBcnJheVJlZmVyZW5jZVR5cGUmIGFycmF5UmVmZXJlbmNl
VHlwZSkKK3sKKyAgICBpZiAoIWVycm9yKCkpCisgICAgICAgIHZpc2l0KGFycmF5UmVmZXJlbmNl
VHlwZSk7Cit9CisKK3ZvaWQgVmlzaXRvcjo6Y2hlY2tFcnJvckFuZFZpc2l0KEFTVDo6QXJyYXlU
eXBlJiBhcnJheVR5cGUpCit7CisgICAgaWYgKCFlcnJvcigpKQorICAgICAgICB2aXNpdChhcnJh
eVR5cGUpOworfQorCit2b2lkIFZpc2l0b3I6OmNoZWNrRXJyb3JBbmRWaXNpdChBU1Q6OlN0cnVj
dHVyZUVsZW1lbnQmIHN0cnVjdHVyZUVsZW1lbnQpCit7CisgICAgaWYgKCFlcnJvcigpKQorICAg
ICAgICB2aXNpdChzdHJ1Y3R1cmVFbGVtZW50KTsKK30KKwordm9pZCBWaXNpdG9yOjpjaGVja0Vy
cm9yQW5kVmlzaXQoQVNUOjpFbnVtZXJhdGlvbk1lbWJlciYgZW51bWVyYXRpb25NZW1iZXIpCit7
CisgICAgaWYgKCFlcnJvcigpKQorICAgICAgICB2aXNpdChlbnVtZXJhdGlvbk1lbWJlcik7Cit9
CisKK3ZvaWQgVmlzaXRvcjo6Y2hlY2tFcnJvckFuZFZpc2l0KEFTVDo6RnVuY3Rpb25EZWNsYXJh
dGlvbiYgZnVuY3Rpb25EZWNsYXJhdGlvbikKK3sKKyAgICBpZiAoIWVycm9yKCkpCisgICAgICAg
IHZpc2l0KGZ1bmN0aW9uRGVjbGFyYXRpb24pOworfQorCit2b2lkIFZpc2l0b3I6OmNoZWNrRXJy
b3JBbmRWaXNpdChBU1Q6OlR5cGVBcmd1bWVudCYgdHlwZUFyZ3VtZW50KQoreworICAgIGlmICgh
ZXJyb3IoKSkKKyAgICAgICAgdmlzaXQodHlwZUFyZ3VtZW50KTsKK30KKwordm9pZCBWaXNpdG9y
OjpjaGVja0Vycm9yQW5kVmlzaXQoQVNUOjpSZWZlcmVuY2VUeXBlJiByZWZlcmVuY2VUeXBlKQor
eworICAgIGlmICghZXJyb3IoKSkKKyAgICAgICAgdmlzaXQocmVmZXJlbmNlVHlwZSk7Cit9CisK
K3ZvaWQgVmlzaXRvcjo6Y2hlY2tFcnJvckFuZFZpc2l0KEFTVDo6U2VtYW50aWMmIHNlbWFudGlj
KQoreworICAgIGlmICghZXJyb3IoKSkKKyAgICAgICAgdmlzaXQoc2VtYW50aWMpOworfQorCit2
b2lkIFZpc2l0b3I6OmNoZWNrRXJyb3JBbmRWaXNpdChBU1Q6OkNvbnN0YW50RXhwcmVzc2lvbiYg
Y29uc3RhbnRFeHByZXNzaW9uKQoreworICAgIGlmICghZXJyb3IoKSkKKyAgICAgICAgdmlzaXQo
Y29uc3RhbnRFeHByZXNzaW9uKTsKK30KKwordm9pZCBWaXNpdG9yOjpjaGVja0Vycm9yQW5kVmlz
aXQoQVNUOjpBdHRyaWJ1dGVCbG9jayYgYXR0cmlidXRlQmxvY2spCit7CisgICAgaWYgKCFlcnJv
cigpKQorICAgICAgICB2aXNpdChhdHRyaWJ1dGVCbG9jayk7Cit9CisKK3ZvaWQgVmlzaXRvcjo6
Y2hlY2tFcnJvckFuZFZpc2l0KEFTVDo6QnVpbHRJblNlbWFudGljJiBidWlsdEluU2VtYW50aWMp
Cit7CisgICAgaWYgKCFlcnJvcigpKQorICAgICAgICB2aXNpdChidWlsdEluU2VtYW50aWMpOwor
fQorCit2b2lkIFZpc2l0b3I6OmNoZWNrRXJyb3JBbmRWaXNpdChBU1Q6OlJlc291cmNlU2VtYW50
aWMmIHJlc291cmNlU2VtYW50aWMpCit7CisgICAgaWYgKCFlcnJvcigpKQorICAgICAgICB2aXNp
dChyZXNvdXJjZVNlbWFudGljKTsKK30KKwordm9pZCBWaXNpdG9yOjpjaGVja0Vycm9yQW5kVmlz
aXQoQVNUOjpTcGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWMmIHNwZWNpYWxpemF0aW9uQ29u
c3RhbnRTZW1hbnRpYykKK3sKKyAgICBpZiAoIWVycm9yKCkpCisgICAgICAgIHZpc2l0KHNwZWNp
YWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYyk7Cit9CisKK3ZvaWQgVmlzaXRvcjo6Y2hlY2tFcnJv
ckFuZFZpc2l0KEFTVDo6U3RhZ2VJbk91dFNlbWFudGljJiBzdGFnZUluT3V0U2VtYW50aWMpCit7
CisgICAgaWYgKCFlcnJvcigpKQorICAgICAgICB2aXNpdChzdGFnZUluT3V0U2VtYW50aWMpOwor
fQorCit2b2lkIFZpc2l0b3I6OmNoZWNrRXJyb3JBbmRWaXNpdChBU1Q6OkludGVnZXJMaXRlcmFs
JiBpbnRlZ2VyTGl0ZXJhbCkKK3sKKyAgICBpZiAoIWVycm9yKCkpCisgICAgICAgIHZpc2l0KGlu
dGVnZXJMaXRlcmFsKTsKK30KKwordm9pZCBWaXNpdG9yOjpjaGVja0Vycm9yQW5kVmlzaXQoQVNU
OjpVbnNpZ25lZEludGVnZXJMaXRlcmFsJiB1bnNpZ25lZEludGVnZXJMaXRlcmFsKQoreworICAg
IGlmICghZXJyb3IoKSkKKyAgICAgICAgdmlzaXQodW5zaWduZWRJbnRlZ2VyTGl0ZXJhbCk7Cit9
CisKK3ZvaWQgVmlzaXRvcjo6Y2hlY2tFcnJvckFuZFZpc2l0KEFTVDo6RmxvYXRMaXRlcmFsJiBm
bG9hdExpdGVyYWwpCit7CisgICAgaWYgKCFlcnJvcigpKQorICAgICAgICB2aXNpdChmbG9hdExp
dGVyYWwpOworfQorCit2b2lkIFZpc2l0b3I6OmNoZWNrRXJyb3JBbmRWaXNpdChBU1Q6Ok51bGxM
aXRlcmFsJiBudWxsTGl0ZXJhbCkKK3sKKyAgICBpZiAoIWVycm9yKCkpCisgICAgICAgIHZpc2l0
KG51bGxMaXRlcmFsKTsKK30KKwordm9pZCBWaXNpdG9yOjpjaGVja0Vycm9yQW5kVmlzaXQoQVNU
OjpCb29sZWFuTGl0ZXJhbCYgYm9vbGVhbkxpdGVyYWwpCit7CisgICAgaWYgKCFlcnJvcigpKQor
ICAgICAgICB2aXNpdChib29sZWFuTGl0ZXJhbCk7Cit9CisKK3ZvaWQgVmlzaXRvcjo6Y2hlY2tF
cnJvckFuZFZpc2l0KEFTVDo6SW50ZWdlckxpdGVyYWxUeXBlJiBpbnRlZ2VyTGl0ZXJhbFR5cGUp
Cit7CisgICAgaWYgKCFlcnJvcigpKQorICAgICAgICB2aXNpdChpbnRlZ2VyTGl0ZXJhbFR5cGUp
OworfQorCit2b2lkIFZpc2l0b3I6OmNoZWNrRXJyb3JBbmRWaXNpdChBU1Q6OlVuc2lnbmVkSW50
ZWdlckxpdGVyYWxUeXBlJiB1bnNpZ25lZEludGVnZXJMaXRlcmFsVHlwZSkKK3sKKyAgICBpZiAo
IWVycm9yKCkpCisgICAgICAgIHZpc2l0KHVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlKTsKK30K
Kwordm9pZCBWaXNpdG9yOjpjaGVja0Vycm9yQW5kVmlzaXQoQVNUOjpGbG9hdExpdGVyYWxUeXBl
JiBmbG9hdExpdGVyYWxUeXBlKQoreworICAgIGlmICghZXJyb3IoKSkKKyAgICAgICAgdmlzaXQo
ZmxvYXRMaXRlcmFsVHlwZSk7Cit9CisKK3ZvaWQgVmlzaXRvcjo6Y2hlY2tFcnJvckFuZFZpc2l0
KEFTVDo6TnVsbExpdGVyYWxUeXBlJiBudWxsTGl0ZXJhbFR5cGUpCit7CisgICAgaWYgKCFlcnJv
cigpKQorICAgICAgICB2aXNpdChudWxsTGl0ZXJhbFR5cGUpOworfQorCit2b2lkIFZpc2l0b3I6
OmNoZWNrRXJyb3JBbmRWaXNpdChBU1Q6OkNvbnN0YW50RXhwcmVzc2lvbkVudW1lcmF0aW9uTWVt
YmVyUmVmZXJlbmNlJiBjb25zdGFudEV4cHJlc3Npb25FbnVtZXJhdGlvbk1lbWJlclJlZmVyZW5j
ZSkKK3sKKyAgICBpZiAoIWVycm9yKCkpCisgICAgICAgIHZpc2l0KGNvbnN0YW50RXhwcmVzc2lv
bkVudW1lcmF0aW9uTWVtYmVyUmVmZXJlbmNlKTsKK30KKwordm9pZCBWaXNpdG9yOjpjaGVja0Vy
cm9yQW5kVmlzaXQoQVNUOjpGdW5jdGlvbkF0dHJpYnV0ZSYgZnVuY3Rpb25BdHRyaWJ1dGUpCit7
CisgICAgaWYgKCFlcnJvcigpKQorICAgICAgICB2aXNpdChmdW5jdGlvbkF0dHJpYnV0ZSk7Cit9
CisKK3ZvaWQgVmlzaXRvcjo6Y2hlY2tFcnJvckFuZFZpc2l0KEFTVDo6TnVtVGhyZWFkc0Z1bmN0
aW9uQXR0cmlidXRlJiBudW1UaHJlYWRzRnVuY3Rpb25BdHRyaWJ1dGUpCit7CisgICAgaWYgKCFl
cnJvcigpKQorICAgICAgICB2aXNpdChudW1UaHJlYWRzRnVuY3Rpb25BdHRyaWJ1dGUpOworfQor
Cit2b2lkIFZpc2l0b3I6OmNoZWNrRXJyb3JBbmRWaXNpdChBU1Q6OkJsb2NrJiBibG9jaykKK3sK
KyAgICBpZiAoIWVycm9yKCkpCisgICAgICAgIHZpc2l0KGJsb2NrKTsKK30KKwordm9pZCBWaXNp
dG9yOjpjaGVja0Vycm9yQW5kVmlzaXQoQVNUOjpTdGF0ZW1lbnQmIHN0YXRlbWVudCkKK3sKKyAg
ICBpZiAoIWVycm9yKCkpCisgICAgICAgIHZpc2l0KHN0YXRlbWVudCk7Cit9CisKK3ZvaWQgVmlz
aXRvcjo6Y2hlY2tFcnJvckFuZFZpc2l0KEFTVDo6QnJlYWsmIGJyZWFrU3RhdGVtZW50KQorewor
ICAgIGlmICghZXJyb3IoKSkKKyAgICAgICAgdmlzaXQoYnJlYWtTdGF0ZW1lbnQpOworfQorCit2
b2lkIFZpc2l0b3I6OmNoZWNrRXJyb3JBbmRWaXNpdChBU1Q6OkNvbnRpbnVlJiBjb250aW51ZVN0
YXRlbWVudCkKK3sKKyAgICBpZiAoIWVycm9yKCkpCisgICAgICAgIHZpc2l0KGNvbnRpbnVlU3Rh
dGVtZW50KTsKK30KKwordm9pZCBWaXNpdG9yOjpjaGVja0Vycm9yQW5kVmlzaXQoQVNUOjpEb1do
aWxlTG9vcCYgZG9XaGlsZUxvb3ApCit7CisgICAgaWYgKCFlcnJvcigpKQorICAgICAgICB2aXNp
dChkb1doaWxlTG9vcCk7Cit9CisKK3ZvaWQgVmlzaXRvcjo6Y2hlY2tFcnJvckFuZFZpc2l0KEFT
VDo6RXhwcmVzc2lvbiYgZXhwcmVzc2lvbikKK3sKKyAgICBpZiAoIWVycm9yKCkpCisgICAgICAg
IHZpc2l0KGV4cHJlc3Npb24pOworfQorCit2b2lkIFZpc2l0b3I6OmNoZWNrRXJyb3JBbmRWaXNp
dChBU1Q6OkRvdEV4cHJlc3Npb24mIGRvdEV4cHJlc3Npb24pCit7CisgICAgaWYgKCFlcnJvcigp
KQorICAgICAgICB2aXNpdChkb3RFeHByZXNzaW9uKTsKK30KKwordm9pZCBWaXNpdG9yOjpjaGVj
a0Vycm9yQW5kVmlzaXQoQVNUOjpJbmRleEV4cHJlc3Npb24mIGluZGV4RXhwcmVzc2lvbikKK3sK
KyAgICBpZiAoIWVycm9yKCkpCisgICAgICAgIHZpc2l0KGluZGV4RXhwcmVzc2lvbik7Cit9CisK
K3ZvaWQgVmlzaXRvcjo6Y2hlY2tFcnJvckFuZFZpc2l0KEFTVDo6UHJvcGVydHlBY2Nlc3NFeHBy
ZXNzaW9uJiBwcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24pCit7CisgICAgaWYgKCFlcnJvcigpKQor
ICAgICAgICB2aXNpdChwcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24pOworfQorCit2b2lkIFZpc2l0
b3I6OmNoZWNrRXJyb3JBbmRWaXNpdChBU1Q6OkVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQm
IGVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQpCit7CisgICAgaWYgKCFlcnJvcigpKQorICAg
ICAgICB2aXNpdChlZmZlY3RmdWxFeHByZXNzaW9uU3RhdGVtZW50KTsKK30KKwordm9pZCBWaXNp
dG9yOjpjaGVja0Vycm9yQW5kVmlzaXQoQVNUOjpGYWxsdGhyb3VnaCYgZmFsbHRocm91Z2hTdGF0
ZW1lbnQpCit7CisgICAgaWYgKCFlcnJvcigpKQorICAgICAgICB2aXNpdChmYWxsdGhyb3VnaFN0
YXRlbWVudCk7Cit9CisKK3ZvaWQgVmlzaXRvcjo6Y2hlY2tFcnJvckFuZFZpc2l0KEFTVDo6Rm9y
TG9vcCYgZm9yTG9vcCkKK3sKKyAgICBpZiAoIWVycm9yKCkpCisgICAgICAgIHZpc2l0KGZvckxv
b3ApOworfQorCit2b2lkIFZpc2l0b3I6OmNoZWNrRXJyb3JBbmRWaXNpdChBU1Q6OklmU3RhdGVt
ZW50JiBpZlN0YXRlbWVudCkKK3sKKyAgICBpZiAoIWVycm9yKCkpCisgICAgICAgIHZpc2l0KGlm
U3RhdGVtZW50KTsKK30KKwordm9pZCBWaXNpdG9yOjpjaGVja0Vycm9yQW5kVmlzaXQoQVNUOjpS
ZXR1cm4mIHJldHVyblN0YXRlbWVudCkKK3sKKyAgICBpZiAoIWVycm9yKCkpCisgICAgICAgIHZp
c2l0KHJldHVyblN0YXRlbWVudCk7Cit9CisKK3ZvaWQgVmlzaXRvcjo6Y2hlY2tFcnJvckFuZFZp
c2l0KEFTVDo6U3dpdGNoQ2FzZSYgc3dpdGNoQ2FzZSkKK3sKKyAgICBpZiAoIWVycm9yKCkpCisg
ICAgICAgIHZpc2l0KHN3aXRjaENhc2UpOworfQorCit2b2lkIFZpc2l0b3I6OmNoZWNrRXJyb3JB
bmRWaXNpdChBU1Q6OlN3aXRjaFN0YXRlbWVudCYgc3dpdGNoU3RhdGVtZW50KQoreworICAgIGlm
ICghZXJyb3IoKSkKKyAgICAgICAgdmlzaXQoc3dpdGNoU3RhdGVtZW50KTsKK30KKwordm9pZCBW
aXNpdG9yOjpjaGVja0Vycm9yQW5kVmlzaXQoQVNUOjpUcmFwJiB0cmFwKQoreworICAgIGlmICgh
ZXJyb3IoKSkKKyAgICAgICAgdmlzaXQodHJhcCk7Cit9CisKK3ZvaWQgVmlzaXRvcjo6Y2hlY2tF
cnJvckFuZFZpc2l0KEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQmIHZhcmlhYmxl
RGVjbGFyYXRpb25zU3RhdGVtZW50KQoreworICAgIGlmICghZXJyb3IoKSkKKyAgICAgICAgdmlz
aXQodmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQpOworfQorCit2b2lkIFZpc2l0b3I6OmNo
ZWNrRXJyb3JBbmRWaXNpdChBU1Q6OldoaWxlTG9vcCYgd2hpbGVMb29wKQoreworICAgIGlmICgh
ZXJyb3IoKSkKKyAgICAgICAgdmlzaXQod2hpbGVMb29wKTsKK30KKwordm9pZCBWaXNpdG9yOjpj
aGVja0Vycm9yQW5kVmlzaXQoQVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uJiB2YXJpYWJsZURlY2xh
cmF0aW9uKQoreworICAgIGlmICghZXJyb3IoKSkKKyAgICAgICAgdmlzaXQodmFyaWFibGVEZWNs
YXJhdGlvbik7Cit9CisKK3ZvaWQgVmlzaXRvcjo6Y2hlY2tFcnJvckFuZFZpc2l0KEFTVDo6QXNz
aWdubWVudEV4cHJlc3Npb24mIGFzc2lnbm1lbnRFeHByZXNzaW9uKQoreworICAgIGlmICghZXJy
b3IoKSkKKyAgICAgICAgdmlzaXQoYXNzaWdubWVudEV4cHJlc3Npb24pOworfQorCit2b2lkIFZp
c2l0b3I6OmNoZWNrRXJyb3JBbmRWaXNpdChBU1Q6OkNhbGxFeHByZXNzaW9uJiBjYWxsRXhwcmVz
c2lvbikKK3sKKyAgICBpZiAoIWVycm9yKCkpCisgICAgICAgIHZpc2l0KGNhbGxFeHByZXNzaW9u
KTsKK30KKwordm9pZCBWaXNpdG9yOjpjaGVja0Vycm9yQW5kVmlzaXQoQVNUOjpDb21tYUV4cHJl
c3Npb24mIGNvbW1hRXhwcmVzc2lvbikKK3sKKyAgICBpZiAoIWVycm9yKCkpCisgICAgICAgIHZp
c2l0KGNvbW1hRXhwcmVzc2lvbik7Cit9CisKK3ZvaWQgVmlzaXRvcjo6Y2hlY2tFcnJvckFuZFZp
c2l0KEFTVDo6RGVyZWZlcmVuY2VFeHByZXNzaW9uJiBkZXJlZmVyZW5jZUV4cHJlc3Npb24pCit7
CisgICAgaWYgKCFlcnJvcigpKQorICAgICAgICB2aXNpdChkZXJlZmVyZW5jZUV4cHJlc3Npb24p
OworfQorCit2b2lkIFZpc2l0b3I6OmNoZWNrRXJyb3JBbmRWaXNpdChBU1Q6OkxvZ2ljYWxFeHBy
ZXNzaW9uJiBsb2dpY2FsRXhwcmVzc2lvbikKK3sKKyAgICBpZiAoIWVycm9yKCkpCisgICAgICAg
IHZpc2l0KGxvZ2ljYWxFeHByZXNzaW9uKTsKK30KKwordm9pZCBWaXNpdG9yOjpjaGVja0Vycm9y
QW5kVmlzaXQoQVNUOjpMb2dpY2FsTm90RXhwcmVzc2lvbiYgbG9naWNhbE5vdEV4cHJlc3Npb24p
Cit7CisgICAgaWYgKCFlcnJvcigpKQorICAgICAgICB2aXNpdChsb2dpY2FsTm90RXhwcmVzc2lv
bik7Cit9CisKK3ZvaWQgVmlzaXRvcjo6Y2hlY2tFcnJvckFuZFZpc2l0KEFTVDo6TWFrZUFycmF5
UmVmZXJlbmNlRXhwcmVzc2lvbiYgbWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbikKK3sKKyAg
ICBpZiAoIWVycm9yKCkpCisgICAgICAgIHZpc2l0KG1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Np
b24pOworfQorCit2b2lkIFZpc2l0b3I6OmNoZWNrRXJyb3JBbmRWaXNpdChBU1Q6Ok1ha2VQb2lu
dGVyRXhwcmVzc2lvbiYgbWFrZVBvaW50ZXJFeHByZXNzaW9uKQoreworICAgIGlmICghZXJyb3Io
KSkKKyAgICAgICAgdmlzaXQobWFrZVBvaW50ZXJFeHByZXNzaW9uKTsKK30KKwordm9pZCBWaXNp
dG9yOjpjaGVja0Vycm9yQW5kVmlzaXQoQVNUOjpSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uJiBy
ZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uKQoreworICAgIGlmICghZXJyb3IoKSkKKyAgICAgICAg
dmlzaXQocmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbik7Cit9CisKK3ZvaWQgVmlzaXRvcjo6Y2hl
Y2tFcnJvckFuZFZpc2l0KEFTVDo6VGVybmFyeUV4cHJlc3Npb24mIHRlcm5hcnlFeHByZXNzaW9u
KQoreworICAgIGlmICghZXJyb3IoKSkKKyAgICAgICAgdmlzaXQodGVybmFyeUV4cHJlc3Npb24p
OworfQorCit2b2lkIFZpc2l0b3I6OmNoZWNrRXJyb3JBbmRWaXNpdChBU1Q6OlZhcmlhYmxlUmVm
ZXJlbmNlJiB2YXJpYWJsZVJlZmVyZW5jZSkKK3sKKyAgICBpZiAoIWVycm9yKCkpCisgICAgICAg
IHZpc2l0KHZhcmlhYmxlUmVmZXJlbmNlKTsKK30KKworfQorCit9CisKKyNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xWaXNpdG9yLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFZpc2l0b3IuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi45YTNmNjI2MWMzNTcyN2QwYjY0MWMyYjg5YTBiYjQ5NWYxNWQyY2EzCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xWaXNp
dG9yLmgKQEAgLTAsMCArMSwyNjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lm
IEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlICJXSExTTEZ1bmN0aW9uQXR0cmlidXRlLmgiCisj
aW5jbHVkZSAiV0hMU0xTZW1hbnRpYy5oIgorI2luY2x1ZGUgIldITFNMVHlwZUFyZ3VtZW50Lmgi
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworbmFtZXNwYWNlIFdITFNMIHsKKworY2xhc3MgUHJv
Z3JhbTsKKworbmFtZXNwYWNlIEFTVCB7CisKK2NsYXNzIFR5cGVEZWZpbml0aW9uOworY2xhc3Mg
U3RydWN0dXJlRGVmaW5pdGlvbjsKK2NsYXNzIEVudW1lcmF0aW9uRGVmaW5pdGlvbjsKK2NsYXNz
IEZ1bmN0aW9uRGVmaW5pdGlvbjsKK2NsYXNzIE5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb247Citj
bGFzcyBOYXRpdmVUeXBlRGVjbGFyYXRpb247CitjbGFzcyBUeXBlUmVmZXJlbmNlOworY2xhc3Mg
UG9pbnRlclR5cGU7CitjbGFzcyBBcnJheVJlZmVyZW5jZVR5cGU7CitjbGFzcyBBcnJheVR5cGU7
CitjbGFzcyBTdHJ1Y3R1cmVFbGVtZW50OworY2xhc3MgRW51bWVyYXRpb25NZW1iZXI7CitjbGFz
cyBGdW5jdGlvbkRlY2xhcmF0aW9uOworY2xhc3MgUmVmZXJlbmNlVHlwZTsKK2NsYXNzIENvbnN0
YW50RXhwcmVzc2lvbjsKK2NsYXNzIEJ1aWx0SW5TZW1hbnRpYzsKK2NsYXNzIFJlc291cmNlU2Vt
YW50aWM7CitjbGFzcyBTcGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWM7CitjbGFzcyBTdGFn
ZUluT3V0U2VtYW50aWM7CitjbGFzcyBJbnRlZ2VyTGl0ZXJhbDsKK2NsYXNzIFVuc2lnbmVkSW50
ZWdlckxpdGVyYWw7CitjbGFzcyBGbG9hdExpdGVyYWw7CitjbGFzcyBOdWxsTGl0ZXJhbDsKK2Ns
YXNzIEJvb2xlYW5MaXRlcmFsOworY2xhc3MgQ29uc3RhbnRFeHByZXNzaW9uRW51bWVyYXRpb25N
ZW1iZXJSZWZlcmVuY2U7CitjbGFzcyBOdW1UaHJlYWRzRnVuY3Rpb25BdHRyaWJ1dGU7CitjbGFz
cyBCbG9jazsKK2NsYXNzIFN0YXRlbWVudDsKK2NsYXNzIEJyZWFrOworY2xhc3MgQ29udGludWU7
CitjbGFzcyBEb1doaWxlTG9vcDsKK2NsYXNzIEV4cHJlc3Npb247CitjbGFzcyBEb3RFeHByZXNz
aW9uOworY2xhc3MgSW5kZXhFeHByZXNzaW9uOworY2xhc3MgUHJvcGVydHlBY2Nlc3NFeHByZXNz
aW9uOworY2xhc3MgRWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVudDsKK2NsYXNzIEZhbGx0aHJv
dWdoOworY2xhc3MgRm9yTG9vcDsKK2NsYXNzIElmU3RhdGVtZW50OworY2xhc3MgUmV0dXJuOwor
Y2xhc3MgU3dpdGNoQ2FzZTsKK2NsYXNzIFN3aXRjaFN0YXRlbWVudDsKK2NsYXNzIFRyYXA7Citj
bGFzcyBWYXJpYWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudDsKK2NsYXNzIFdoaWxlTG9vcDsKK2Ns
YXNzIFZhcmlhYmxlRGVjbGFyYXRpb247CitjbGFzcyBBc3NpZ25tZW50RXhwcmVzc2lvbjsKK2Ns
YXNzIENhbGxFeHByZXNzaW9uOworY2xhc3MgQ29tbWFFeHByZXNzaW9uOworY2xhc3MgRGVyZWZl
cmVuY2VFeHByZXNzaW9uOworY2xhc3MgTG9naWNhbEV4cHJlc3Npb247CitjbGFzcyBMb2dpY2Fs
Tm90RXhwcmVzc2lvbjsKK2NsYXNzIE1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb247CitjbGFz
cyBNYWtlUG9pbnRlckV4cHJlc3Npb247CitjbGFzcyBSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9u
OworY2xhc3MgVGVybmFyeUV4cHJlc3Npb247CitjbGFzcyBWYXJpYWJsZVJlZmVyZW5jZTsKK2Ns
YXNzIFVubmFtZWRUeXBlOworY2xhc3MgTmFtZWRUeXBlOworCit9CisKK2NsYXNzIFZpc2l0b3Ig
eworcHVibGljOgorICAgIHZpcnR1YWwgflZpc2l0b3IoKSA9IGRlZmF1bHQ7CisKKyAgICAvLyBG
SVhNRTogQWRkIGEgd2F5IHRvIHZpc2l0IGEgY29uc3QgUHJvZ3JhbQorCisgICAgdmlydHVhbCB2
b2lkIHZpc2l0KFByb2dyYW0mKTsKKyAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpVbm5hbWVk
VHlwZSYpOworICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6Ok5hbWVkVHlwZSYpOworICAgIHZp
cnR1YWwgdm9pZCB2aXNpdChBU1Q6OlR5cGVEZWZpbml0aW9uJik7CisgICAgdmlydHVhbCB2b2lk
IHZpc2l0KEFTVDo6U3RydWN0dXJlRGVmaW5pdGlvbiYpOworICAgIHZpcnR1YWwgdm9pZCB2aXNp
dChBU1Q6OkVudW1lcmF0aW9uRGVmaW5pdGlvbiYpOworICAgIHZpcnR1YWwgdm9pZCB2aXNpdChB
U1Q6OkZ1bmN0aW9uRGVmaW5pdGlvbiYpOworICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6Ok5h
dGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24mKTsKKyAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpO
YXRpdmVUeXBlRGVjbGFyYXRpb24mKTsKKyAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpUeXBl
UmVmZXJlbmNlJik7CisgICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6UG9pbnRlclR5cGUmKTsK
KyAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpBcnJheVJlZmVyZW5jZVR5cGUmKTsKKyAgICB2
aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpBcnJheVR5cGUmKTsKKyAgICB2aXJ0dWFsIHZvaWQgdmlz
aXQoQVNUOjpTdHJ1Y3R1cmVFbGVtZW50Jik7CisgICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6
RW51bWVyYXRpb25NZW1iZXImKTsKKyAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpGdW5jdGlv
bkRlY2xhcmF0aW9uJik7CisgICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6VHlwZUFyZ3VtZW50
Jik7CisgICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6UmVmZXJlbmNlVHlwZSYpOworICAgIHZp
cnR1YWwgdm9pZCB2aXNpdChBU1Q6OlNlbWFudGljJik7CisgICAgdmlydHVhbCB2b2lkIHZpc2l0
KEFTVDo6Q29uc3RhbnRFeHByZXNzaW9uJik7CisgICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6
QXR0cmlidXRlQmxvY2smKTsKKyAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpCdWlsdEluU2Vt
YW50aWMmKTsKKyAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpSZXNvdXJjZVNlbWFudGljJik7
CisgICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6U3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFu
dGljJik7CisgICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6U3RhZ2VJbk91dFNlbWFudGljJik7
CisgICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6SW50ZWdlckxpdGVyYWwmKTsKKyAgICB2aXJ0
dWFsIHZvaWQgdmlzaXQoQVNUOjpVbnNpZ25lZEludGVnZXJMaXRlcmFsJik7CisgICAgdmlydHVh
bCB2b2lkIHZpc2l0KEFTVDo6RmxvYXRMaXRlcmFsJik7CisgICAgdmlydHVhbCB2b2lkIHZpc2l0
KEFTVDo6TnVsbExpdGVyYWwmKTsKKyAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpCb29sZWFu
TGl0ZXJhbCYpOworICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6OkludGVnZXJMaXRlcmFsVHlw
ZSYpOworICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6OlVuc2lnbmVkSW50ZWdlckxpdGVyYWxU
eXBlJik7CisgICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6RmxvYXRMaXRlcmFsVHlwZSYpOwor
ICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6Ok51bGxMaXRlcmFsVHlwZSYpOworICAgIHZpcnR1
YWwgdm9pZCB2aXNpdChBU1Q6OkNvbnN0YW50RXhwcmVzc2lvbkVudW1lcmF0aW9uTWVtYmVyUmVm
ZXJlbmNlJik7CisgICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6RnVuY3Rpb25BdHRyaWJ1dGUm
KTsKKyAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpOdW1UaHJlYWRzRnVuY3Rpb25BdHRyaWJ1
dGUmKTsKKyAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpCbG9jayYpOworICAgIHZpcnR1YWwg
dm9pZCB2aXNpdChBU1Q6OlN0YXRlbWVudCYpOworICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6
OkJyZWFrJik7CisgICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6Q29udGludWUmKTsKKyAgICB2
aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpEb1doaWxlTG9vcCYpOworICAgIHZpcnR1YWwgdm9pZCB2
aXNpdChBU1Q6OkV4cHJlc3Npb24mKTsKKyAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpEb3RF
eHByZXNzaW9uJik7CisgICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6SW5kZXhFeHByZXNzaW9u
Jik7CisgICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6UHJvcGVydHlBY2Nlc3NFeHByZXNzaW9u
Jik7CisgICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6RWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRl
bWVudCYpOworICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6OkZhbGx0aHJvdWdoJik7CisgICAg
dmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6Rm9yTG9vcCYpOworICAgIHZpcnR1YWwgdm9pZCB2aXNp
dChBU1Q6OklmU3RhdGVtZW50Jik7CisgICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6UmV0dXJu
Jik7CisgICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6U3dpdGNoQ2FzZSYpOworICAgIHZpcnR1
YWwgdm9pZCB2aXNpdChBU1Q6OlN3aXRjaFN0YXRlbWVudCYpOworICAgIHZpcnR1YWwgdm9pZCB2
aXNpdChBU1Q6OlRyYXAmKTsKKyAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpWYXJpYWJsZURl
Y2xhcmF0aW9uc1N0YXRlbWVudCYpOworICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6OldoaWxl
TG9vcCYpOworICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb24m
KTsKKyAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpBc3NpZ25tZW50RXhwcmVzc2lvbiYpOwor
ICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6OkNhbGxFeHByZXNzaW9uJik7CisgICAgdmlydHVh
bCB2b2lkIHZpc2l0KEFTVDo6Q29tbWFFeHByZXNzaW9uJik7CisgICAgdmlydHVhbCB2b2lkIHZp
c2l0KEFTVDo6RGVyZWZlcmVuY2VFeHByZXNzaW9uJik7CisgICAgdmlydHVhbCB2b2lkIHZpc2l0
KEFTVDo6TG9naWNhbEV4cHJlc3Npb24mKTsKKyAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpM
b2dpY2FsTm90RXhwcmVzc2lvbiYpOworICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6Ok1ha2VB
cnJheVJlZmVyZW5jZUV4cHJlc3Npb24mKTsKKyAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpN
YWtlUG9pbnRlckV4cHJlc3Npb24mKTsKKyAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpSZWFk
TW9kaWZ5V3JpdGVFeHByZXNzaW9uJik7CisgICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6VGVy
bmFyeUV4cHJlc3Npb24mKTsKKyAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpWYXJpYWJsZVJl
ZmVyZW5jZSYpOworCisgICAgdm9pZCBjaGVja0Vycm9yQW5kVmlzaXQoUHJvZ3JhbSYpOworICAg
IHZvaWQgY2hlY2tFcnJvckFuZFZpc2l0KEFTVDo6VW5uYW1lZFR5cGUmKTsKKyAgICB2b2lkIGNo
ZWNrRXJyb3JBbmRWaXNpdChBU1Q6Ok5hbWVkVHlwZSYpOworICAgIHZvaWQgY2hlY2tFcnJvckFu
ZFZpc2l0KEFTVDo6VHlwZURlZmluaXRpb24mKTsKKyAgICB2b2lkIGNoZWNrRXJyb3JBbmRWaXNp
dChBU1Q6OlN0cnVjdHVyZURlZmluaXRpb24mKTsKKyAgICB2b2lkIGNoZWNrRXJyb3JBbmRWaXNp
dChBU1Q6OkVudW1lcmF0aW9uRGVmaW5pdGlvbiYpOworICAgIHZvaWQgY2hlY2tFcnJvckFuZFZp
c2l0KEFTVDo6RnVuY3Rpb25EZWZpbml0aW9uJik7CisgICAgdm9pZCBjaGVja0Vycm9yQW5kVmlz
aXQoQVNUOjpOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uJik7CisgICAgdm9pZCBjaGVja0Vycm9y
QW5kVmlzaXQoQVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24mKTsKKyAgICB2b2lkIGNoZWNrRXJy
b3JBbmRWaXNpdChBU1Q6OlR5cGVSZWZlcmVuY2UmKTsKKyAgICB2b2lkIGNoZWNrRXJyb3JBbmRW
aXNpdChBU1Q6OlBvaW50ZXJUeXBlJik7CisgICAgdm9pZCBjaGVja0Vycm9yQW5kVmlzaXQoQVNU
OjpBcnJheVJlZmVyZW5jZVR5cGUmKTsKKyAgICB2b2lkIGNoZWNrRXJyb3JBbmRWaXNpdChBU1Q6
OkFycmF5VHlwZSYpOworICAgIHZvaWQgY2hlY2tFcnJvckFuZFZpc2l0KEFTVDo6U3RydWN0dXJl
RWxlbWVudCYpOworICAgIHZvaWQgY2hlY2tFcnJvckFuZFZpc2l0KEFTVDo6RW51bWVyYXRpb25N
ZW1iZXImKTsKKyAgICB2b2lkIGNoZWNrRXJyb3JBbmRWaXNpdChBU1Q6OkZ1bmN0aW9uRGVjbGFy
YXRpb24mKTsKKyAgICB2b2lkIGNoZWNrRXJyb3JBbmRWaXNpdChBU1Q6OlR5cGVBcmd1bWVudCYp
OworICAgIHZvaWQgY2hlY2tFcnJvckFuZFZpc2l0KEFTVDo6UmVmZXJlbmNlVHlwZSYpOworICAg
IHZvaWQgY2hlY2tFcnJvckFuZFZpc2l0KEFTVDo6U2VtYW50aWMmKTsKKyAgICB2b2lkIGNoZWNr
RXJyb3JBbmRWaXNpdChBU1Q6OkNvbnN0YW50RXhwcmVzc2lvbiYpOworICAgIHZvaWQgY2hlY2tF
cnJvckFuZFZpc2l0KEFTVDo6QXR0cmlidXRlQmxvY2smKTsKKyAgICB2b2lkIGNoZWNrRXJyb3JB
bmRWaXNpdChBU1Q6OkJ1aWx0SW5TZW1hbnRpYyYpOworICAgIHZvaWQgY2hlY2tFcnJvckFuZFZp
c2l0KEFTVDo6UmVzb3VyY2VTZW1hbnRpYyYpOworICAgIHZvaWQgY2hlY2tFcnJvckFuZFZpc2l0
KEFTVDo6U3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFudGljJik7CisgICAgdm9pZCBjaGVja0Vy
cm9yQW5kVmlzaXQoQVNUOjpTdGFnZUluT3V0U2VtYW50aWMmKTsKKyAgICB2b2lkIGNoZWNrRXJy
b3JBbmRWaXNpdChBU1Q6OkludGVnZXJMaXRlcmFsJik7CisgICAgdm9pZCBjaGVja0Vycm9yQW5k
VmlzaXQoQVNUOjpVbnNpZ25lZEludGVnZXJMaXRlcmFsJik7CisgICAgdm9pZCBjaGVja0Vycm9y
QW5kVmlzaXQoQVNUOjpGbG9hdExpdGVyYWwmKTsKKyAgICB2b2lkIGNoZWNrRXJyb3JBbmRWaXNp
dChBU1Q6Ok51bGxMaXRlcmFsJik7CisgICAgdm9pZCBjaGVja0Vycm9yQW5kVmlzaXQoQVNUOjpC
b29sZWFuTGl0ZXJhbCYpOworICAgIHZvaWQgY2hlY2tFcnJvckFuZFZpc2l0KEFTVDo6SW50ZWdl
ckxpdGVyYWxUeXBlJik7CisgICAgdm9pZCBjaGVja0Vycm9yQW5kVmlzaXQoQVNUOjpVbnNpZ25l
ZEludGVnZXJMaXRlcmFsVHlwZSYpOworICAgIHZvaWQgY2hlY2tFcnJvckFuZFZpc2l0KEFTVDo6
RmxvYXRMaXRlcmFsVHlwZSYpOworICAgIHZvaWQgY2hlY2tFcnJvckFuZFZpc2l0KEFTVDo6TnVs
bExpdGVyYWxUeXBlJik7CisgICAgdm9pZCBjaGVja0Vycm9yQW5kVmlzaXQoQVNUOjpDb25zdGFu
dEV4cHJlc3Npb25FbnVtZXJhdGlvbk1lbWJlclJlZmVyZW5jZSYpOworICAgIHZvaWQgY2hlY2tF
cnJvckFuZFZpc2l0KEFTVDo6RnVuY3Rpb25BdHRyaWJ1dGUmKTsKKyAgICB2b2lkIGNoZWNrRXJy
b3JBbmRWaXNpdChBU1Q6Ok51bVRocmVhZHNGdW5jdGlvbkF0dHJpYnV0ZSYpOworICAgIHZvaWQg
Y2hlY2tFcnJvckFuZFZpc2l0KEFTVDo6QmxvY2smKTsKKyAgICB2b2lkIGNoZWNrRXJyb3JBbmRW
aXNpdChBU1Q6OlN0YXRlbWVudCYpOworICAgIHZvaWQgY2hlY2tFcnJvckFuZFZpc2l0KEFTVDo6
QnJlYWsmKTsKKyAgICB2b2lkIGNoZWNrRXJyb3JBbmRWaXNpdChBU1Q6OkNvbnRpbnVlJik7Cisg
ICAgdm9pZCBjaGVja0Vycm9yQW5kVmlzaXQoQVNUOjpEb1doaWxlTG9vcCYpOworICAgIHZvaWQg
Y2hlY2tFcnJvckFuZFZpc2l0KEFTVDo6RXhwcmVzc2lvbiYpOworICAgIHZvaWQgY2hlY2tFcnJv
ckFuZFZpc2l0KEFTVDo6RG90RXhwcmVzc2lvbiYpOworICAgIHZvaWQgY2hlY2tFcnJvckFuZFZp
c2l0KEFTVDo6SW5kZXhFeHByZXNzaW9uJik7CisgICAgdm9pZCBjaGVja0Vycm9yQW5kVmlzaXQo
QVNUOjpQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24mKTsKKyAgICB2b2lkIGNoZWNrRXJyb3JBbmRW
aXNpdChBU1Q6OkVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQmKTsKKyAgICB2b2lkIGNoZWNr
RXJyb3JBbmRWaXNpdChBU1Q6OkZhbGx0aHJvdWdoJik7CisgICAgdm9pZCBjaGVja0Vycm9yQW5k
VmlzaXQoQVNUOjpGb3JMb29wJik7CisgICAgdm9pZCBjaGVja0Vycm9yQW5kVmlzaXQoQVNUOjpJ
ZlN0YXRlbWVudCYpOworICAgIHZvaWQgY2hlY2tFcnJvckFuZFZpc2l0KEFTVDo6UmV0dXJuJik7
CisgICAgdm9pZCBjaGVja0Vycm9yQW5kVmlzaXQoQVNUOjpTd2l0Y2hDYXNlJik7CisgICAgdm9p
ZCBjaGVja0Vycm9yQW5kVmlzaXQoQVNUOjpTd2l0Y2hTdGF0ZW1lbnQmKTsKKyAgICB2b2lkIGNo
ZWNrRXJyb3JBbmRWaXNpdChBU1Q6OlRyYXAmKTsKKyAgICB2b2lkIGNoZWNrRXJyb3JBbmRWaXNp
dChBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50Jik7CisgICAgdm9pZCBjaGVja0Vy
cm9yQW5kVmlzaXQoQVNUOjpXaGlsZUxvb3AmKTsKKyAgICB2b2lkIGNoZWNrRXJyb3JBbmRWaXNp
dChBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb24mKTsKKyAgICB2b2lkIGNoZWNrRXJyb3JBbmRWaXNp
dChBU1Q6OkFzc2lnbm1lbnRFeHByZXNzaW9uJik7CisgICAgdm9pZCBjaGVja0Vycm9yQW5kVmlz
aXQoQVNUOjpDYWxsRXhwcmVzc2lvbiYpOworICAgIHZvaWQgY2hlY2tFcnJvckFuZFZpc2l0KEFT
VDo6Q29tbWFFeHByZXNzaW9uJik7CisgICAgdm9pZCBjaGVja0Vycm9yQW5kVmlzaXQoQVNUOjpE
ZXJlZmVyZW5jZUV4cHJlc3Npb24mKTsKKyAgICB2b2lkIGNoZWNrRXJyb3JBbmRWaXNpdChBU1Q6
OkxvZ2ljYWxFeHByZXNzaW9uJik7CisgICAgdm9pZCBjaGVja0Vycm9yQW5kVmlzaXQoQVNUOjpM
b2dpY2FsTm90RXhwcmVzc2lvbiYpOworICAgIHZvaWQgY2hlY2tFcnJvckFuZFZpc2l0KEFTVDo6
TWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbiYpOworICAgIHZvaWQgY2hlY2tFcnJvckFuZFZp
c2l0KEFTVDo6TWFrZVBvaW50ZXJFeHByZXNzaW9uJik7CisgICAgdm9pZCBjaGVja0Vycm9yQW5k
VmlzaXQoQVNUOjpSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uJik7CisgICAgdm9pZCBjaGVja0Vy
cm9yQW5kVmlzaXQoQVNUOjpUZXJuYXJ5RXhwcmVzc2lvbiYpOworICAgIHZvaWQgY2hlY2tFcnJv
ckFuZFZpc2l0KEFTVDo6VmFyaWFibGVSZWZlcmVuY2UmKTsKKworICAgIHZvaWQgc2V0RXJyb3Io
KQorICAgIHsKKyAgICAgICAgQVNTRVJUKCFtX2Vycm9yKTsKKyAgICAgICAgbV9lcnJvciA9IHRy
dWU7CisgICAgfQorCisgICAgYm9vbCBlcnJvcigpIGNvbnN0IHsgcmV0dXJuIG1fZXJyb3I7IH0K
KworcHJpdmF0ZToKKyAgICBib29sIG1fZXJyb3IgeyBmYWxzZSB9OyAvLyBGSVhNRTogTWlncmF0
ZSB0aGlzIHRvIGJlIHNvbWUgc29ydCBvZiBkZXNjcmlwdGl2ZSBzdHJpbmcuCit9OworCit9CisK
K30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1Nv
dXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDEyYTkyNDRjNzhmNWE1NTc1ZTIxYjAzNGU1
ZDIxMzc3NDQwYWNmODAuLmUzODAzMDJjMDM5MDVhYmMwMzlmMTI3NmUwZDJkMmMwMTJlZDNlZGMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJD
b3JlL1NvdXJjZXMudHh0CkBAIC0zMDgsNiArMzA4LDcgQEAgTW9kdWxlcy93ZWJzb2NrZXRzL1dv
cmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcAogTW9kdWxlcy93ZWJncHUvRE9NV2lu
ZG93V2ViR1BVLmNwcAogTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xMZXhlci5jcHAKIE1vZHVs
ZXMvd2ViZ3B1L1dITFNML1dITFNMUGFyc2VyLmNwcAorTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hM
U0xWaXNpdG9yLmNwcAogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVHlwZUFyZ3VtZW50
LmNwcAogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQnVpbHRJblNlbWFudGljLmNwcAog
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMUmVzb3VyY2VTZW1hbnRpYy5jcHAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA5
MTVkNTQ0MWE1MGI0N2YwYjBlM2JhOGQxMzk5OThlYzk0YmY1ZTIzLi5hMTMyNTVjMGE5Yjk3OTEw
MWU1NTY1YWRkMzc5OTFlMzEzMzdjOTNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMzMxOCw2ICsxMzMxOCw4IEBACiAJCUMy
MUJGNzQ1MjFDRDk2OTgwMDIyNzk3OSAvKiBXSExTTFN0YW5kYXJkTGlicmFyeS50eHQgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0g
V0hMU0xTdGFuZGFyZExpYnJhcnkudHh0OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlD
MjFERjJFNzFEOUU0RTk5MDBGNUIyNEMgLyogQ1NTRm9udFZhcmlhdGlvblZhbHVlLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENTU0ZvbnRWYXJpYXRpb25WYWx1ZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMyMURGMkU4MUQ5RTRFOTkwMEY1QjI0
QyAvKiBDU1NGb250VmFyaWF0aW9uVmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gQ1NTRm9udFZhcmlhdGlvblZhbHVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUMyMzRBOTg1MjFFODg2QTkwMDNDOTg0RCAvKiBXSExTTFZpc2l0b3IuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gV0hMU0xWaXNpdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQzIzNEE5ODcyMUU4ODZBRDAwM0M5ODREIC8qIFdITFNMVmlzaXRvci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXSExTTFZpc2l0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzI0NThF
NjExRkU4OTc5RTAwNTk0NzU5IC8qIEZvbnRDYWNoZUNvcmVUZXh0LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEZvbnRDYWNoZUNvcmVUZXh0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMyNjAx
N0ExMUM3MkRDOTkwMEY3NEExNiAvKiBDU1NGb250RmFjZVNldC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDU1NGb250RmFjZVNldC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUMyNjAxN0EyMUM3MkRDOTkwMEY3NEExNiAvKiBDU1NGb250RmFjZVNl
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDU1NGb250RmFjZVNldC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTk2NjksNyArMTk2NzEsNiBAQAogCQk2NTY1
ODBFQzA5RDEyQjIwMDAwRTYxRDcgLyogRGVyaXZlZCBTb3VyY2VzICovID0gewogCQkJaXNhID0g
UEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKLQkJCQlDMjFCRjc0MjIxQ0Q5NjNCMDAyMjc5Nzkg
LyogV0hMU0xTdGFuZGFyZExpYnJhcnkuaCAqLywKIAkJCQk1MzhFQzdFQTFGOTZBOTVCMDA0RDIy
QTggLyogdW5pZmllZC1zb3VyY2VzICovLAogCQkJCTk5MDhCMEYzMUJDQUNGRkUwMEVEMEY2NSAv
KiBCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5QnVpbHRpbnMuY3BwICovLAogCQkJCTk5MDhCMEY1
MUJDQUQwN0QwMEVEMEY2NSAvKiBCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5QnVpbHRpbnMuaCAq
LywKQEAgLTE5NzU5LDYgKzE5NzYwLDcgQEAKIAkJCQk2NTY1ODFBRjA5RDE0RUU2MDAwRTYxRDcg
LyogVXNlckFnZW50U3R5bGVTaGVldHNEYXRhLmNwcCAqLywKIAkJCQkxQTE0MTRCMzEzQTBGMDUw
MDAxOTk5NkMgLyogV2ViS2l0Rm9udEZhbWlseU5hbWVzLmNwcCAqLywKIAkJCQkxQTE0MTRCNDEz
QTBGMDUwMDAxOTk5NkMgLyogV2ViS2l0Rm9udEZhbWlseU5hbWVzLmggKi8sCisJCQkJQzIxQkY3
NDIyMUNEOTYzQjAwMjI3OTc5IC8qIFdITFNMU3RhbmRhcmRMaWJyYXJ5LmggKi8sCiAJCQkJNTE3
NDhGQTIxQ0M2RUVFQjAwNzI4RDg0IC8qIFdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzLmlk
bCAqLywKIAkJCQk5OTA4QjBGOTFCQ0FEMDdEMDBFRDBGNzUgLyogV3JpdGFibGVTdHJlYW1CdWls
dGlucy5jcHAgKi8sCiAJCQkJOUIwM0Q4MDYxQkIzMTEwRDAwQjc2NEU4IC8qIFdyaXRhYmxlU3Ry
ZWFtQnVpbHRpbnMuaCAqLywKQEAgLTI1Mzc1LDEzICsyNTM3NywxNSBAQAogCQlDMjEwRTkwRDIx
QjRCQ0E0MDBCN0Y4M0QgLyogV0hMU0wgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNo
aWxkcmVuID0gKAotCQkJCUMyMUJGNzQ1MjFDRDk2OTgwMDIyNzk3OSAvKiBXSExTTFN0YW5kYXJk
TGlicmFyeS50eHQgKi8sCiAJCQkJQzIxQkY2RjEyMUNEODk4RDAwMjI3OTc5IC8qIEFTVCAqLywK
IAkJCQlDMjEwRTkxMTIxQjRCRDEwMDBCN0Y4M0QgLyogV0hMU0xMZXhlci5jcHAgKi8sCiAJCQkJ
QzIxMEU5MTIyMUI0QkQxMDAwQjdGODNEIC8qIFdITFNMTGV4ZXIuaCAqLywKIAkJCQlDMjFCRjcz
NzIxQ0Q4QTAyMDAyMjc5NzkgLyogV0hMU0xQYXJzZXIuY3BwICovLAogCQkJCUMyMUJGNzM4MjFD
RDhBMDMwMDIyNzk3OSAvKiBXSExTTFBhcnNlci5oICovLAogCQkJCUMyMUJGNzNBMjFDRDhENzAw
MDIyNzk3OSAvKiBXSExTTFByb2dyYW0uaCAqLywKKwkJCQlDMjFCRjc0NTIxQ0Q5Njk4MDAyMjc5
NzkgLyogV0hMU0xTdGFuZGFyZExpYnJhcnkudHh0ICovLAorCQkJCUMyMzRBOTg1MjFFODg2QTkw
MDNDOTg0RCAvKiBXSExTTFZpc2l0b3IuY3BwICovLAorCQkJCUMyMzRBOTg3MjFFODg2QUQwMDND
OTg0RCAvKiBXSExTTFZpc2l0b3IuaCAqLywKIAkJCSk7CiAJCQlwYXRoID0gV0hMU0w7CiAJCQlz
b3VyY2VUcmVlID0gIjxncm91cD4iOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>358911</attachid>
            <date>2019-01-11 10:50:20 -0800</date>
            <delta_ts>2019-01-11 16:34:36 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-192826-20190111105019.patch</filename>
            <type>text/plain</type>
            <size>48067</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM5ODY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGUyYzg5ZWVmNDBlZGE4
NmJhNTg0Mjg5ZWMzMTU3NGE0NDFmMjY2NC4uMjBmZGU1ZmIyOTRkYjU0OTA2ODUyMmEzYjc2NGVm
ZDc2NjYyMDJjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDE5LTAxLTExICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgW1dITFNMXSBB
ZGQgYSBWaXNpdG9yIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xOTI4MjYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBUaGlzIHBhdGNoIGV4cG9zZXMgYSBidW5jaCBvZiB0aGUgcHJpdmF0ZSBtZW1i
ZXJzIG9mIFdITFNMJ3MgQVNUIG5vZGVzIHNvIHRoYXQgVmlzaXRvciBjYW4gcmVjdXJzZSBvbiBj
b25zdGl0dWVudCBub2Rlcy4KKyAgICAgICAgSXQgYWxzbyB3cml0ZXMgdGhlIHJlY3Vyc2lvbiBp
biBWaXNpdG9yLmguIFRoaXMgaXMgYSB2aXJ0dWFsIGJhc2UgY2xhc3MgdGhhdCBnZXRzIHN1YmNs
YXNzZWQgZm9yIGNvbXBpbGVyIHBhc3Nlcy4KKworICAgICAgICBJJ3ZlIHNwbGl0IHRoaXMgcGFy
dCBpbnRvIGl0cyBvd24gcGF0Y2ggdG8gYWlkIHJldmlld2luZyBvZiB0aGUgY29tcGlsZXIuCisK
KyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTdGFnZUluT3V0U2VtYW50
aWMuY3BwOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMVmlzaXRvci5jcHA6
IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OlZpc2l0b3I6OnZpc2l0KToKKyAgICAg
ICAgKFdlYkNvcmU6OldITFNMOjpWaXNpdG9yOjpjaGVja0Vycm9yQW5kVmlzaXQpOgorICAgICAg
ICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMVmlzaXRvci5oOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OldITFNMOjpWaXNpdG9yOjpzZXRFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpX
SExTTDo6VmlzaXRvcjo6ZXJyb3IgY29uc3QpOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAg
ICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAxOS0wMS0xMSAg
V2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBJbnRyb2R1
Y2UgSURMIGZpbGVzIGZvciBydW50aW1lLWVuYWJsZWQgVW5kb01hbmFnZXIgYW5kIFVuZG9JdGVt
IEphdmFTY3JpcHQgQVBJCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9BU1QvV0hMU0xTdGFnZUluT3V0U2VtYW50aWMuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMU3RhZ2VJbk91dFNlbWFudGljLmNwcAppbmRl
eCAzODlkMzVlZDk2OTE3YzZmNWM0MzRkNDczYWU3MjVhOTc2Y2NmZjZhLi4yMjU3MmM4MTJjODM5
YTlhYTNjNWVlNjJmYjMyZjcxMDRkOTFmZWM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xTdGFnZUluT3V0U2VtYW50aWMuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTFN0YWdlSW5PdXRT
ZW1hbnRpYy5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJXSExTTEFycmF5VHlwZS5o
IgogI2luY2x1ZGUgIldITFNMRW51bWVyYXRpb25EZWZpbml0aW9uLmgiCiAjaW5jbHVkZSAiV0hM
U0xGdW5jdGlvbkRlZmluaXRpb24uaCIKKyNpbmNsdWRlICJXSExTTE5hdGl2ZVR5cGVEZWNsYXJh
dGlvbi5oIgogI2luY2x1ZGUgIldITFNMVHlwZVJlZmVyZW5jZS5oIgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9X
SExTTFZpc2l0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hM
U0xWaXNpdG9yLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wODJhMDNmY2M3MDkyYjkzOWU4ZGJkMTdkZjMzNmFj
NDMxNjhlMDUyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvV0hMU0xWaXNpdG9yLmNwcApAQCAtMCwwICsxLDEwMzMgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV0hMU0xWaXNpdG9yLmgiCisKKyNpZiBF
TkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSAiV0hMU0xBcnJheVJlZmVyZW5jZVR5cGUuaCIKKyNp
bmNsdWRlICJXSExTTEFycmF5VHlwZS5oIgorI2luY2x1ZGUgIldITFNMQXNzaWdubWVudEV4cHJl
c3Npb24uaCIKKyNpbmNsdWRlICJXSExTTEJhc2VGdW5jdGlvbkF0dHJpYnV0ZS5oIgorI2luY2x1
ZGUgIldITFNMQmFzZVNlbWFudGljLmgiCisjaW5jbHVkZSAiV0hMU0xCbG9jay5oIgorI2luY2x1
ZGUgIldITFNMQm9vbGVhbkxpdGVyYWwuaCIKKyNpbmNsdWRlICJXSExTTEJyZWFrLmgiCisjaW5j
bHVkZSAiV0hMU0xCdWlsdEluU2VtYW50aWMuaCIKKyNpbmNsdWRlICJXSExTTENhbGxFeHByZXNz
aW9uLmgiCisjaW5jbHVkZSAiV0hMU0xDb21tYUV4cHJlc3Npb24uaCIKKyNpbmNsdWRlICJXSExT
TENvbnN0YW50RXhwcmVzc2lvbi5oIgorI2luY2x1ZGUgIldITFNMQ29uc3RhbnRFeHByZXNzaW9u
RW51bWVyYXRpb25NZW1iZXJSZWZlcmVuY2UuaCIKKyNpbmNsdWRlICJXSExTTENvbnRpbnVlLmgi
CisjaW5jbHVkZSAiV0hMU0xEZXJlZmVyZW5jZUV4cHJlc3Npb24uaCIKKyNpbmNsdWRlICJXSExT
TERvV2hpbGVMb29wLmgiCisjaW5jbHVkZSAiV0hMU0xEb3RFeHByZXNzaW9uLmgiCisjaW5jbHVk
ZSAiV0hMU0xFZmZlY3RmdWxFeHByZXNzaW9uU3RhdGVtZW50LmgiCisjaW5jbHVkZSAiV0hMU0xF
bnVtZXJhdGlvbkRlZmluaXRpb24uaCIKKyNpbmNsdWRlICJXSExTTEVudW1lcmF0aW9uTWVtYmVy
LmgiCisjaW5jbHVkZSAiV0hMU0xFeHByZXNzaW9uLmgiCisjaW5jbHVkZSAiV0hMU0xGYWxsdGhy
b3VnaC5oIgorI2luY2x1ZGUgIldITFNMRmxvYXRMaXRlcmFsLmgiCisjaW5jbHVkZSAiV0hMU0xG
b3JMb29wLmgiCisjaW5jbHVkZSAiV0hMU0xGdW5jdGlvbkF0dHJpYnV0ZS5oIgorI2luY2x1ZGUg
IldITFNMRnVuY3Rpb25EZWNsYXJhdGlvbi5oIgorI2luY2x1ZGUgIldITFNMRnVuY3Rpb25EZWZp
bml0aW9uLmgiCisjaW5jbHVkZSAiV0hMU0xJZlN0YXRlbWVudC5oIgorI2luY2x1ZGUgIldITFNM
SW5kZXhFeHByZXNzaW9uLmgiCisjaW5jbHVkZSAiV0hMU0xJbnRlZ2VyTGl0ZXJhbC5oIgorI2lu
Y2x1ZGUgIldITFNMTG9naWNhbEV4cHJlc3Npb24uaCIKKyNpbmNsdWRlICJXSExTTExvZ2ljYWxO
b3RFeHByZXNzaW9uLmgiCisjaW5jbHVkZSAiV0hMU0xNYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNz
aW9uLmgiCisjaW5jbHVkZSAiV0hMU0xNYWtlUG9pbnRlckV4cHJlc3Npb24uaCIKKyNpbmNsdWRl
ICJXSExTTE5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24uaCIKKyNpbmNsdWRlICJXSExTTE5hdGl2
ZVR5cGVEZWNsYXJhdGlvbi5oIgorI2luY2x1ZGUgIldITFNMTm9kZS5oIgorI2luY2x1ZGUgIldI
TFNMTnVsbExpdGVyYWwuaCIKKyNpbmNsdWRlICJXSExTTE51bVRocmVhZHNGdW5jdGlvbkF0dHJp
YnV0ZS5oIgorI2luY2x1ZGUgIldITFNMUG9pbnRlclR5cGUuaCIKKyNpbmNsdWRlICJXSExTTFBy
b2dyYW0uaCIKKyNpbmNsdWRlICJXSExTTFByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbi5oIgorI2lu
Y2x1ZGUgIldITFNMUXVhbGlmaWVyLmgiCisjaW5jbHVkZSAiV0hMU0xSZWFkTW9kaWZ5V3JpdGVF
eHByZXNzaW9uLmgiCisjaW5jbHVkZSAiV0hMU0xSZWZlcmVuY2VUeXBlLmgiCisjaW5jbHVkZSAi
V0hMU0xSZXNvdXJjZVNlbWFudGljLmgiCisjaW5jbHVkZSAiV0hMU0xSZXR1cm4uaCIKKyNpbmNs
dWRlICJXSExTTFNlbWFudGljLmgiCisjaW5jbHVkZSAiV0hMU0xTcGVjaWFsaXphdGlvbkNvbnN0
YW50U2VtYW50aWMuaCIKKyNpbmNsdWRlICJXSExTTFN0YWdlSW5PdXRTZW1hbnRpYy5oIgorI2lu
Y2x1ZGUgIldITFNMU3RhdGVtZW50LmgiCisjaW5jbHVkZSAiV0hMU0xTdHJ1Y3R1cmVEZWZpbml0
aW9uLmgiCisjaW5jbHVkZSAiV0hMU0xTdHJ1Y3R1cmVFbGVtZW50LmgiCisjaW5jbHVkZSAiV0hM
U0xTd2l0Y2hDYXNlLmgiCisjaW5jbHVkZSAiV0hMU0xTd2l0Y2hTdGF0ZW1lbnQuaCIKKyNpbmNs
dWRlICJXSExTTFRlcm5hcnlFeHByZXNzaW9uLmgiCisjaW5jbHVkZSAiV0hMU0xUcmFwLmgiCisj
aW5jbHVkZSAiV0hMU0xUeXBlLmgiCisjaW5jbHVkZSAiV0hMU0xUeXBlQXJndW1lbnQuaCIKKyNp
bmNsdWRlICJXSExTTFR5cGVEZWZpbml0aW9uLmgiCisjaW5jbHVkZSAiV0hMU0xUeXBlUmVmZXJl
bmNlLmgiCisjaW5jbHVkZSAiV0hMU0xVbnNpZ25lZEludGVnZXJMaXRlcmFsLmgiCisjaW5jbHVk
ZSAiV0hMU0xWYWx1ZS5oIgorI2luY2x1ZGUgIldITFNMVmFyaWFibGVEZWNsYXJhdGlvbi5oIgor
I2luY2x1ZGUgIldITFNMVmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQuaCIKKyNpbmNsdWRl
ICJXSExTTFZhcmlhYmxlUmVmZXJlbmNlLmgiCisjaW5jbHVkZSAiV0hMU0xXaGlsZUxvb3AuaCIK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3BhY2UgV0hMU0wgeworCit2b2lkIFZpc2l0
b3I6OnZpc2l0KFByb2dyYW0mIHByb2dyYW0pCit7CisgICAgLy8gVGhlc2UgdmlzaXRpbmcgZnVu
Y3Rpb25zIG1pZ2h0IGFkZCBuZXcgZ2xvYmFsIHN0YXRlbWVudHMsIHNvIGRvbid0IHVzZSBmb3Jl
YWNoIHN5bnRheC4KKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHByb2dyYW0udHlwZURlZmlu
aXRpb25zKCkuc2l6ZSgpOyArK2kpCisgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChzdGF0aWNf
Y2FzdDxBU1Q6OlR5cGVEZWZpbml0aW9uJj4ocHJvZ3JhbS50eXBlRGVmaW5pdGlvbnMoKVtpXSkp
OworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcHJvZ3JhbS5zdHJ1Y3R1cmVEZWZpbml0aW9u
cygpLnNpemUoKTsgKytpKQorICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoc3RhdGljX2Nhc3Q8
QVNUOjpTdHJ1Y3R1cmVEZWZpbml0aW9uJj4ocHJvZ3JhbS5zdHJ1Y3R1cmVEZWZpbml0aW9ucygp
W2ldKSk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwcm9ncmFtLmVudW1lcmF0aW9uRGVm
aW5pdGlvbnMoKS5zaXplKCk7ICsraSkKKyAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KHN0YXRp
Y19jYXN0PEFTVDo6RW51bWVyYXRpb25EZWZpbml0aW9uJj4ocHJvZ3JhbS5lbnVtZXJhdGlvbkRl
ZmluaXRpb25zKClbaV0pKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHByb2dyYW0uZnVu
Y3Rpb25EZWZpbml0aW9ucygpLnNpemUoKTsgKytpKQorICAgICAgICBjaGVja0Vycm9yQW5kVmlz
aXQoc3RhdGljX2Nhc3Q8QVNUOjpGdW5jdGlvbkRlZmluaXRpb24mPihwcm9ncmFtLmZ1bmN0aW9u
RGVmaW5pdGlvbnMoKVtpXSkpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcHJvZ3JhbS5u
YXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9ucygpLnNpemUoKTsgKytpKQorICAgICAgICBjaGVja0Vy
cm9yQW5kVmlzaXQoc3RhdGljX2Nhc3Q8QVNUOjpOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uJj4o
cHJvZ3JhbS5uYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9ucygpW2ldKSk7CisgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBwcm9ncmFtLm5hdGl2ZVR5cGVEZWNsYXJhdGlvbnMoKS5zaXplKCk7ICsr
aSkKKyAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KHN0YXRpY19jYXN0PEFTVDo6TmF0aXZlVHlw
ZURlY2xhcmF0aW9uJj4ocHJvZ3JhbS5uYXRpdmVUeXBlRGVjbGFyYXRpb25zKClbaV0pKTsKK30K
Kwordm9pZCBWaXNpdG9yOjp2aXNpdChBU1Q6OlVubmFtZWRUeXBlJiB1bm5hbWVkVHlwZSkKK3sK
KyAgICBpZiAoaXM8QVNUOjpUeXBlUmVmZXJlbmNlPih1bm5hbWVkVHlwZSkpCisgICAgICAgIGNo
ZWNrRXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6OlR5cGVSZWZlcmVuY2U+KHVubmFtZWRUeXBl
KSk7CisgICAgZWxzZSBpZiAoaXM8QVNUOjpQb2ludGVyVHlwZT4odW5uYW1lZFR5cGUpKQorICAg
ICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZG93bmNhc3Q8QVNUOjpQb2ludGVyVHlwZT4odW5uYW1l
ZFR5cGUpKTsKKyAgICBlbHNlIGlmIChpczxBU1Q6OkFycmF5UmVmZXJlbmNlVHlwZT4odW5uYW1l
ZFR5cGUpKQorICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZG93bmNhc3Q8QVNUOjpBcnJheVJl
ZmVyZW5jZVR5cGU+KHVubmFtZWRUeXBlKSk7CisgICAgZWxzZSB7CisgICAgICAgIEFTU0VSVChp
czxBU1Q6OkFycmF5VHlwZT4odW5uYW1lZFR5cGUpKTsKKyAgICAgICAgY2hlY2tFcnJvckFuZFZp
c2l0KGRvd25jYXN0PEFTVDo6QXJyYXlUeXBlPih1bm5hbWVkVHlwZSkpOworICAgIH0KK30KKwor
dm9pZCBWaXNpdG9yOjp2aXNpdChBU1Q6Ok5hbWVkVHlwZSYgbmFtZWRUeXBlKQoreworICAgIGlm
IChpczxBU1Q6OlR5cGVEZWZpbml0aW9uPihuYW1lZFR5cGUpKQorICAgICAgICBjaGVja0Vycm9y
QW5kVmlzaXQoZG93bmNhc3Q8QVNUOjpUeXBlRGVmaW5pdGlvbj4obmFtZWRUeXBlKSk7CisgICAg
ZWxzZSBpZiAoaXM8QVNUOjpTdHJ1Y3R1cmVEZWZpbml0aW9uPihuYW1lZFR5cGUpKQorICAgICAg
ICBjaGVja0Vycm9yQW5kVmlzaXQoZG93bmNhc3Q8QVNUOjpTdHJ1Y3R1cmVEZWZpbml0aW9uPihu
YW1lZFR5cGUpKTsKKyAgICBlbHNlIGlmIChpczxBU1Q6OkVudW1lcmF0aW9uRGVmaW5pdGlvbj4o
bmFtZWRUeXBlKSkKKyAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6RW51
bWVyYXRpb25EZWZpbml0aW9uPihuYW1lZFR5cGUpKTsKKyAgICBlbHNlIHsKKyAgICAgICAgQVNT
RVJUKGlzPEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uPihuYW1lZFR5cGUpKTsKKyAgICAgICAg
Y2hlY2tFcnJvckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uPihu
YW1lZFR5cGUpKTsKKyAgICB9Cit9CisKK3ZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpUeXBlRGVm
aW5pdGlvbiYgdHlwZURlZmluaXRpb24pCit7CisgICAgY2hlY2tFcnJvckFuZFZpc2l0KHR5cGVE
ZWZpbml0aW9uLnR5cGUoKSk7Cit9CisKK3ZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpTdHJ1Y3R1
cmVEZWZpbml0aW9uJiBzdHJ1Y3R1cmVEZWZpbml0aW9uKQoreworICAgIGZvciAoYXV0byYgc3Ry
dWN0dXJlRWxlbWVudCA6IHN0cnVjdHVyZURlZmluaXRpb24uc3RydWN0dXJlRWxlbWVudHMoKSkK
KyAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KHN0cnVjdHVyZUVsZW1lbnQpOworfQorCit2b2lk
IFZpc2l0b3I6OnZpc2l0KEFTVDo6RW51bWVyYXRpb25EZWZpbml0aW9uJiBlbnVtZXJhdGlvbkRl
ZmluaXRpb24pCit7CisgICAgaWYgKGVudW1lcmF0aW9uRGVmaW5pdGlvbi50eXBlKCkpCisgICAg
ICAgIGNoZWNrRXJyb3JBbmRWaXNpdChzdGF0aWNfY2FzdDxBU1Q6OlVubmFtZWRUeXBlJj4oKmVu
dW1lcmF0aW9uRGVmaW5pdGlvbi50eXBlKCkpKTsKKyAgICBmb3IgKGF1dG8mIGVudW1lcmF0aW9u
TWVtYmVyIDogZW51bWVyYXRpb25EZWZpbml0aW9uLmVudW1lcmF0aW9uTWVtYmVycygpKQorICAg
ICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZW51bWVyYXRpb25NZW1iZXIpOworfQorCit2b2lkIFZp
c2l0b3I6OnZpc2l0KEFTVDo6RnVuY3Rpb25EZWZpbml0aW9uJiBmdW5jdGlvbkRlZmluaXRpb24p
Cit7CisgICAgY2hlY2tFcnJvckFuZFZpc2l0KHN0YXRpY19jYXN0PEFTVDo6RnVuY3Rpb25EZWNs
YXJhdGlvbiY+KGZ1bmN0aW9uRGVmaW5pdGlvbikpOworICAgIGNoZWNrRXJyb3JBbmRWaXNpdChm
dW5jdGlvbkRlZmluaXRpb24uYmxvY2soKSk7Cit9CisKK3ZvaWQgVmlzaXRvcjo6dmlzaXQoQVNU
OjpOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uJiBuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uKQor
eworICAgIGNoZWNrRXJyb3JBbmRWaXNpdChzdGF0aWNfY2FzdDxBU1Q6OkZ1bmN0aW9uRGVjbGFy
YXRpb24mPihuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uKSk7Cit9CisKK3ZvaWQgVmlzaXRvcjo6
dmlzaXQoQVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24mIG5hdGl2ZVR5cGVEZWNsYXJhdGlvbikK
K3sKKyAgICBmb3IgKGF1dG8mIHR5cGVBcmd1bWVudCA6IG5hdGl2ZVR5cGVEZWNsYXJhdGlvbi50
eXBlQXJndW1lbnRzKCkpCisgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdCh0eXBlQXJndW1lbnQp
OworfQorCit2b2lkIFZpc2l0b3I6OnZpc2l0KEFTVDo6VHlwZVJlZmVyZW5jZSYgdHlwZVJlZmVy
ZW5jZSkKK3sKKyAgICBmb3IgKGF1dG8mIHR5cGVBcmd1bWVudCA6IHR5cGVSZWZlcmVuY2UudHlw
ZUFyZ3VtZW50cygpKQorICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQodHlwZUFyZ3VtZW50KTsK
KyAgICBpZiAodHlwZVJlZmVyZW5jZS5yZXNvbHZlZFR5cGUoKSAmJiBpczxBU1Q6OlR5cGVEZWZp
bml0aW9uPigqdHlwZVJlZmVyZW5jZS5yZXNvbHZlZFR5cGUoKSkpIHsKKyAgICAgICAgYXV0byYg
dHlwZURlZmluaXRpb24gPSBkb3duY2FzdDxBU1Q6OlR5cGVEZWZpbml0aW9uPigqdHlwZVJlZmVy
ZW5jZS5yZXNvbHZlZFR5cGUoKSk7CisgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdCh0eXBlRGVm
aW5pdGlvbi50eXBlKCkpOworICAgIH0KK30KKwordm9pZCBWaXNpdG9yOjp2aXNpdChBU1Q6OlBv
aW50ZXJUeXBlJiBwb2ludGVyVHlwZSkKK3sKKyAgICBjaGVja0Vycm9yQW5kVmlzaXQoc3RhdGlj
X2Nhc3Q8QVNUOjpSZWZlcmVuY2VUeXBlJj4ocG9pbnRlclR5cGUpKTsKK30KKwordm9pZCBWaXNp
dG9yOjp2aXNpdChBU1Q6OkFycmF5UmVmZXJlbmNlVHlwZSYgYXJyYXlSZWZlcmVuY2VUeXBlKQor
eworICAgIGNoZWNrRXJyb3JBbmRWaXNpdChzdGF0aWNfY2FzdDxBU1Q6OlJlZmVyZW5jZVR5cGUm
PihhcnJheVJlZmVyZW5jZVR5cGUpKTsKK30KKwordm9pZCBWaXNpdG9yOjp2aXNpdChBU1Q6OkFy
cmF5VHlwZSYgYXJyYXlUeXBlKQoreworICAgIGNoZWNrRXJyb3JBbmRWaXNpdChhcnJheVR5cGUu
dHlwZSgpKTsKK30KKwordm9pZCBWaXNpdG9yOjp2aXNpdChBU1Q6OlN0cnVjdHVyZUVsZW1lbnQm
IHN0cnVjdHVyZUVsZW1lbnQpCit7CisgICAgY2hlY2tFcnJvckFuZFZpc2l0KHN0cnVjdHVyZUVs
ZW1lbnQudHlwZSgpKTsKKyAgICBpZiAoc3RydWN0dXJlRWxlbWVudC5zZW1hbnRpYygpKQorICAg
ICAgICBjaGVja0Vycm9yQW5kVmlzaXQoKnN0cnVjdHVyZUVsZW1lbnQuc2VtYW50aWMoKSk7Cit9
CisKK3ZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpFbnVtZXJhdGlvbk1lbWJlciYgZW51bWVyYXRp
b25NZW1iZXIpCit7CisgICAgaWYgKGVudW1lcmF0aW9uTWVtYmVyLnZhbHVlKCkpCisgICAgICAg
IGNoZWNrRXJyb3JBbmRWaXNpdCgqZW51bWVyYXRpb25NZW1iZXIudmFsdWUoKSk7Cit9CisKK3Zv
aWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uJiBmdW5jdGlvbkRlY2xh
cmF0aW9uKQoreworICAgIGNoZWNrRXJyb3JBbmRWaXNpdChmdW5jdGlvbkRlY2xhcmF0aW9uLmF0
dHJpYnV0ZUJsb2NrKCkpOworICAgIGNoZWNrRXJyb3JBbmRWaXNpdChmdW5jdGlvbkRlY2xhcmF0
aW9uLnR5cGUoKSk7CisgICAgZm9yIChhdXRvJiBwYXJhbWV0ZXIgOiBmdW5jdGlvbkRlY2xhcmF0
aW9uLnBhcmFtZXRlcnMoKSkKKyAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KHBhcmFtZXRlcik7
CisgICAgaWYgKGZ1bmN0aW9uRGVjbGFyYXRpb24uc2VtYW50aWMoKSkKKyAgICAgICAgY2hlY2tF
cnJvckFuZFZpc2l0KCpmdW5jdGlvbkRlY2xhcmF0aW9uLnNlbWFudGljKCkpOworfQorCit2b2lk
IFZpc2l0b3I6OnZpc2l0KEFTVDo6VHlwZUFyZ3VtZW50JiB0eXBlQXJndW1lbnQpCit7CisgICAg
V1RGOjp2aXNpdChXVEY6Om1ha2VWaXNpdG9yKFsmXShBU1Q6OkNvbnN0YW50RXhwcmVzc2lvbiYg
Y29uc3RhbnRFeHByZXNzaW9uKSB7CisgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChjb25zdGFu
dEV4cHJlc3Npb24pOworICAgIH0sIFsmXShVbmlxdWVSZWY8QVNUOjpUeXBlUmVmZXJlbmNlPiYg
dHlwZVJlZmVyZW5jZSkgeworICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoc3RhdGljX2Nhc3Q8
QVNUOjpUeXBlUmVmZXJlbmNlJj4odHlwZVJlZmVyZW5jZSkpOworICAgIH0pLCB0eXBlQXJndW1l
bnQpOworfQorCit2b2lkIFZpc2l0b3I6OnZpc2l0KEFTVDo6UmVmZXJlbmNlVHlwZSYgcmVmZXJl
bmNlVHlwZSkKK3sKKyAgICBjaGVja0Vycm9yQW5kVmlzaXQocmVmZXJlbmNlVHlwZS5lbGVtZW50
VHlwZSgpKTsKK30KKwordm9pZCBWaXNpdG9yOjp2aXNpdChBU1Q6OlNlbWFudGljJiBzZW1hbnRp
YykKK3sKKyAgICBXVEY6OnZpc2l0KFdURjo6bWFrZVZpc2l0b3IoWyZdKEFTVDo6QnVpbHRJblNl
bWFudGljJiBidWlsdEluU2VtYW50aWMpIHsKKyAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGJ1
aWx0SW5TZW1hbnRpYyk7CisgICAgfSwgWyZdKEFTVDo6UmVzb3VyY2VTZW1hbnRpYyYgcmVzb3Vy
Y2VTZW1hbnRpYykgeworICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQocmVzb3VyY2VTZW1hbnRp
Yyk7CisgICAgfSwgWyZdKEFTVDo6U3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFudGljJiBzcGVj
aWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWMpIHsKKyAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0
KHNwZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYyk7CisgICAgfSwgWyZdKEFTVDo6U3RhZ2VJ
bk91dFNlbWFudGljJiBzdGFnZUluT3V0U2VtYW50aWMpIHsKKyAgICAgICAgY2hlY2tFcnJvckFu
ZFZpc2l0KHN0YWdlSW5PdXRTZW1hbnRpYyk7CisgICAgfSksIHNlbWFudGljKTsKK30KKwordm9p
ZCBWaXNpdG9yOjp2aXNpdChBU1Q6OkNvbnN0YW50RXhwcmVzc2lvbiYgY29uc3RhbnRFeHByZXNz
aW9uKQoreworICAgIGNvbnN0YW50RXhwcmVzc2lvbi52aXNpdChXVEY6Om1ha2VWaXNpdG9yKFsm
XShBU1Q6OkludGVnZXJMaXRlcmFsJiBpbnRlZ2VyTGl0ZXJhbCkgeworICAgICAgICBjaGVja0Vy
cm9yQW5kVmlzaXQoaW50ZWdlckxpdGVyYWwpOworICAgIH0sIFsmXShBU1Q6OlVuc2lnbmVkSW50
ZWdlckxpdGVyYWwmIHVuc2lnbmVkSW50ZWdlckxpdGVyYWwpIHsKKyAgICAgICAgY2hlY2tFcnJv
ckFuZFZpc2l0KHVuc2lnbmVkSW50ZWdlckxpdGVyYWwpOworICAgIH0sIFsmXShBU1Q6OkZsb2F0
TGl0ZXJhbCYgZmxvYXRMaXRlcmFsKSB7CisgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChmbG9h
dExpdGVyYWwpOworICAgIH0sIFsmXShBU1Q6Ok51bGxMaXRlcmFsJiBudWxsTGl0ZXJhbCkgewor
ICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQobnVsbExpdGVyYWwpOworICAgIH0sIFsmXShBU1Q6
OkJvb2xlYW5MaXRlcmFsJiBib29sZWFuTGl0ZXJhbCkgeworICAgICAgICBjaGVja0Vycm9yQW5k
VmlzaXQoYm9vbGVhbkxpdGVyYWwpOworICAgIH0sIFsmXShBU1Q6OkNvbnN0YW50RXhwcmVzc2lv
bkVudW1lcmF0aW9uTWVtYmVyUmVmZXJlbmNlJiBjb25zdGFudEV4cHJlc3Npb25FbnVtZXJhdGlv
bk1lbWJlclJlZmVyZW5jZSkgeworICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoY29uc3RhbnRF
eHByZXNzaW9uRW51bWVyYXRpb25NZW1iZXJSZWZlcmVuY2UpOworICAgIH0pKTsKK30KKwordm9p
ZCBWaXNpdG9yOjp2aXNpdChBU1Q6OkF0dHJpYnV0ZUJsb2NrJiBhdHRyaWJ1dGVCbG9jaykKK3sK
KyAgICBmb3IgKGF1dG8mIGZ1bmN0aW9uQXR0cmlidXRlIDogYXR0cmlidXRlQmxvY2spCisgICAg
ICAgIGNoZWNrRXJyb3JBbmRWaXNpdChmdW5jdGlvbkF0dHJpYnV0ZSk7Cit9CisKK3ZvaWQgVmlz
aXRvcjo6dmlzaXQoQVNUOjpCdWlsdEluU2VtYW50aWMmKQoreworfQorCit2b2lkIFZpc2l0b3I6
OnZpc2l0KEFTVDo6UmVzb3VyY2VTZW1hbnRpYyYpCit7Cit9CisKK3ZvaWQgVmlzaXRvcjo6dmlz
aXQoQVNUOjpTcGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWMmKQoreworfQorCit2b2lkIFZp
c2l0b3I6OnZpc2l0KEFTVDo6U3RhZ2VJbk91dFNlbWFudGljJikKK3sKK30KKwordm9pZCBWaXNp
dG9yOjp2aXNpdChBU1Q6OkludGVnZXJMaXRlcmFsJiBpbnRlZ2VyTGl0ZXJhbCkKK3sKKyAgICBj
aGVja0Vycm9yQW5kVmlzaXQoaW50ZWdlckxpdGVyYWwudHlwZSgpKTsKK30KKwordm9pZCBWaXNp
dG9yOjp2aXNpdChBU1Q6OlVuc2lnbmVkSW50ZWdlckxpdGVyYWwmIHVuc2lnbmVkSW50ZWdlckxp
dGVyYWwpCit7CisgICAgY2hlY2tFcnJvckFuZFZpc2l0KHVuc2lnbmVkSW50ZWdlckxpdGVyYWwu
dHlwZSgpKTsKK30KKwordm9pZCBWaXNpdG9yOjp2aXNpdChBU1Q6OkZsb2F0TGl0ZXJhbCYgZmxv
YXRMaXRlcmFsKQoreworICAgIGNoZWNrRXJyb3JBbmRWaXNpdChmbG9hdExpdGVyYWwudHlwZSgp
KTsKK30KKwordm9pZCBWaXNpdG9yOjp2aXNpdChBU1Q6Ok51bGxMaXRlcmFsJiBudWxsTGl0ZXJh
bCkKK3sKKyAgICBjaGVja0Vycm9yQW5kVmlzaXQobnVsbExpdGVyYWwudHlwZSgpKTsKK30KKwor
dm9pZCBWaXNpdG9yOjp2aXNpdChBU1Q6OkJvb2xlYW5MaXRlcmFsJikKK3sKK30KKwordm9pZCBW
aXNpdG9yOjp2aXNpdChBU1Q6OkludGVnZXJMaXRlcmFsVHlwZSYgaW50ZWdlckxpdGVyYWxUeXBl
KQoreworICAgIGlmIChpbnRlZ2VyTGl0ZXJhbFR5cGUucmVzb2x2ZWRUeXBlKCkpCisgICAgICAg
IGNoZWNrRXJyb3JBbmRWaXNpdCgqaW50ZWdlckxpdGVyYWxUeXBlLnJlc29sdmVkVHlwZSgpKTsK
KyAgICBjaGVja0Vycm9yQW5kVmlzaXQoaW50ZWdlckxpdGVyYWxUeXBlLnByZWZlcnJlZFR5cGUo
KSk7Cit9CisKK3ZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpVbnNpZ25lZEludGVnZXJMaXRlcmFs
VHlwZSYgdW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUpCit7CisgICAgaWYgKHVuc2lnbmVkSW50
ZWdlckxpdGVyYWxUeXBlLnJlc29sdmVkVHlwZSgpKQorICAgICAgICBjaGVja0Vycm9yQW5kVmlz
aXQoKnVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlLnJlc29sdmVkVHlwZSgpKTsKKyAgICBjaGVj
a0Vycm9yQW5kVmlzaXQodW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUucHJlZmVycmVkVHlwZSgp
KTsKK30KKwordm9pZCBWaXNpdG9yOjp2aXNpdChBU1Q6OkZsb2F0TGl0ZXJhbFR5cGUmIGZsb2F0
TGl0ZXJhbFR5cGUpCit7CisgICAgaWYgKGZsb2F0TGl0ZXJhbFR5cGUucmVzb2x2ZWRUeXBlKCkp
CisgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdCgqZmxvYXRMaXRlcmFsVHlwZS5yZXNvbHZlZFR5
cGUoKSk7CisgICAgY2hlY2tFcnJvckFuZFZpc2l0KGZsb2F0TGl0ZXJhbFR5cGUucHJlZmVycmVk
VHlwZSgpKTsKK30KKwordm9pZCBWaXNpdG9yOjp2aXNpdChBU1Q6Ok51bGxMaXRlcmFsVHlwZSYg
bnVsbExpdGVyYWxUeXBlKQoreworICAgIGlmIChudWxsTGl0ZXJhbFR5cGUucmVzb2x2ZWRUeXBl
KCkpCisgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdCgqbnVsbExpdGVyYWxUeXBlLnJlc29sdmVk
VHlwZSgpKTsKK30KKwordm9pZCBWaXNpdG9yOjp2aXNpdChBU1Q6OkNvbnN0YW50RXhwcmVzc2lv
bkVudW1lcmF0aW9uTWVtYmVyUmVmZXJlbmNlJikKK3sKK30KKwordm9pZCBWaXNpdG9yOjp2aXNp
dChBU1Q6OkZ1bmN0aW9uQXR0cmlidXRlJiBmdW5jdGlvbkF0dHJpYnV0ZSkKK3sKKyAgICBXVEY6
OnZpc2l0KFdURjo6bWFrZVZpc2l0b3IoWyZdKEFTVDo6TnVtVGhyZWFkc0Z1bmN0aW9uQXR0cmli
dXRlJiBudW1UaHJlYWRzRnVuY3Rpb25BdHRyaWJ1dGUpIHsKKyAgICAgICAgY2hlY2tFcnJvckFu
ZFZpc2l0KG51bVRocmVhZHNGdW5jdGlvbkF0dHJpYnV0ZSk7CisgICAgfSksIGZ1bmN0aW9uQXR0
cmlidXRlKTsKK30KKwordm9pZCBWaXNpdG9yOjp2aXNpdChBU1Q6Ok51bVRocmVhZHNGdW5jdGlv
bkF0dHJpYnV0ZSYpCit7Cit9CisKK3ZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpCbG9jayYgYmxv
Y2spCit7CisgICAgZm9yIChhdXRvJiBzdGF0ZW1lbnQgOiBibG9jay5zdGF0ZW1lbnRzKCkpCisg
ICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChzdGF0aWNfY2FzdDxBU1Q6OlN0YXRlbWVudCY+KHN0
YXRlbWVudCkpOworfQorCit2b2lkIFZpc2l0b3I6OnZpc2l0KEFTVDo6U3RhdGVtZW50JiBzdGF0
ZW1lbnQpCit7CisgICAgaWYgKGlzPEFTVDo6QmxvY2s+KHN0YXRlbWVudCkpCisgICAgICAgIGNo
ZWNrRXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6OkJsb2NrPihzdGF0ZW1lbnQpKTsKKyAgICBl
bHNlIGlmIChpczxBU1Q6OkJyZWFrPihzdGF0ZW1lbnQpKQorICAgICAgICBjaGVja0Vycm9yQW5k
VmlzaXQoZG93bmNhc3Q8QVNUOjpCcmVhaz4oc3RhdGVtZW50KSk7CisgICAgZWxzZSBpZiAoaXM8
QVNUOjpDb250aW51ZT4oc3RhdGVtZW50KSkKKyAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGRv
d25jYXN0PEFTVDo6Q29udGludWU+KHN0YXRlbWVudCkpOworICAgIGVsc2UgaWYgKGlzPEFTVDo6
RG9XaGlsZUxvb3A+KHN0YXRlbWVudCkpCisgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3du
Y2FzdDxBU1Q6OkRvV2hpbGVMb29wPihzdGF0ZW1lbnQpKTsKKyAgICBlbHNlIGlmIChpczxBU1Q6
OkVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQ+KHN0YXRlbWVudCkpCisgICAgICAgIGNoZWNr
RXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6OkVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQ+
KHN0YXRlbWVudCkpOworICAgIGVsc2UgaWYgKGlzPEFTVDo6RmFsbHRocm91Z2g+KHN0YXRlbWVu
dCkpCisgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6OkZhbGx0aHJvdWdo
PihzdGF0ZW1lbnQpKTsKKyAgICBlbHNlIGlmIChpczxBU1Q6OkZvckxvb3A+KHN0YXRlbWVudCkp
CisgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6OkZvckxvb3A+KHN0YXRl
bWVudCkpOworICAgIGVsc2UgaWYgKGlzPEFTVDo6SWZTdGF0ZW1lbnQ+KHN0YXRlbWVudCkpCisg
ICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6OklmU3RhdGVtZW50PihzdGF0
ZW1lbnQpKTsKKyAgICBlbHNlIGlmIChpczxBU1Q6OlJldHVybj4oc3RhdGVtZW50KSkKKyAgICAg
ICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6UmV0dXJuPihzdGF0ZW1lbnQpKTsK
KyAgICBlbHNlIGlmIChpczxBU1Q6OlN3aXRjaENhc2U+KHN0YXRlbWVudCkpCisgICAgICAgIGNo
ZWNrRXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6OlN3aXRjaENhc2U+KHN0YXRlbWVudCkpOwor
ICAgIGVsc2UgaWYgKGlzPEFTVDo6U3dpdGNoU3RhdGVtZW50PihzdGF0ZW1lbnQpKQorICAgICAg
ICBjaGVja0Vycm9yQW5kVmlzaXQoZG93bmNhc3Q8QVNUOjpTd2l0Y2hTdGF0ZW1lbnQ+KHN0YXRl
bWVudCkpOworICAgIGVsc2UgaWYgKGlzPEFTVDo6VHJhcD4oc3RhdGVtZW50KSkKKyAgICAgICAg
Y2hlY2tFcnJvckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6VHJhcD4oc3RhdGVtZW50KSk7CisgICAg
ZWxzZSBpZiAoaXM8QVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudD4oc3RhdGVtZW50
KSkKKyAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6VmFyaWFibGVEZWNs
YXJhdGlvbnNTdGF0ZW1lbnQ+KHN0YXRlbWVudCkpOworICAgIGVsc2UgeworICAgICAgICBBU1NF
UlQoaXM8QVNUOjpXaGlsZUxvb3A+KHN0YXRlbWVudCkpOworICAgICAgICBjaGVja0Vycm9yQW5k
VmlzaXQoZG93bmNhc3Q8QVNUOjpXaGlsZUxvb3A+KHN0YXRlbWVudCkpOworICAgIH0KK30KKwor
dm9pZCBWaXNpdG9yOjp2aXNpdChBU1Q6OkJyZWFrJikKK3sKK30KKwordm9pZCBWaXNpdG9yOjp2
aXNpdChBU1Q6OkNvbnRpbnVlJikKK3sKK30KKwordm9pZCBWaXNpdG9yOjp2aXNpdChBU1Q6OkRv
V2hpbGVMb29wJiBkb1doaWxlTG9vcCkKK3sKKyAgICBjaGVja0Vycm9yQW5kVmlzaXQoZG9XaGls
ZUxvb3AuYm9keSgpKTsKKyAgICBjaGVja0Vycm9yQW5kVmlzaXQoZG9XaGlsZUxvb3AuY29uZGl0
aW9uYWwoKSk7Cit9CisKK3ZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpFeHByZXNzaW9uJiBleHBy
ZXNzaW9uKQoreworICAgIGlmIChpczxBU1Q6OkFzc2lnbm1lbnRFeHByZXNzaW9uPihleHByZXNz
aW9uKSkKKyAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6QXNzaWdubWVu
dEV4cHJlc3Npb24+KGV4cHJlc3Npb24pKTsKKyAgICBlbHNlIGlmIChpczxBU1Q6OkJvb2xlYW5M
aXRlcmFsPihleHByZXNzaW9uKSkKKyAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvd25jYXN0
PEFTVDo6Qm9vbGVhbkxpdGVyYWw+KGV4cHJlc3Npb24pKTsKKyAgICBlbHNlIGlmIChpczxBU1Q6
OkNhbGxFeHByZXNzaW9uPihleHByZXNzaW9uKSkKKyAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0
KGRvd25jYXN0PEFTVDo6Q2FsbEV4cHJlc3Npb24+KGV4cHJlc3Npb24pKTsKKyAgICBlbHNlIGlm
IChpczxBU1Q6OkNvbW1hRXhwcmVzc2lvbj4oZXhwcmVzc2lvbikpCisgICAgICAgIGNoZWNrRXJy
b3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6OkNvbW1hRXhwcmVzc2lvbj4oZXhwcmVzc2lvbikpOwor
ICAgIGVsc2UgaWYgKGlzPEFTVDo6RGVyZWZlcmVuY2VFeHByZXNzaW9uPihleHByZXNzaW9uKSkK
KyAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6RGVyZWZlcmVuY2VFeHBy
ZXNzaW9uPihleHByZXNzaW9uKSk7CisgICAgZWxzZSBpZiAoaXM8QVNUOjpGbG9hdExpdGVyYWw+
KGV4cHJlc3Npb24pKQorICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZG93bmNhc3Q8QVNUOjpG
bG9hdExpdGVyYWw+KGV4cHJlc3Npb24pKTsKKyAgICBlbHNlIGlmIChpczxBU1Q6OkludGVnZXJM
aXRlcmFsPihleHByZXNzaW9uKSkKKyAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvd25jYXN0
PEFTVDo6SW50ZWdlckxpdGVyYWw+KGV4cHJlc3Npb24pKTsKKyAgICBlbHNlIGlmIChpczxBU1Q6
OkxvZ2ljYWxFeHByZXNzaW9uPihleHByZXNzaW9uKSkKKyAgICAgICAgY2hlY2tFcnJvckFuZFZp
c2l0KGRvd25jYXN0PEFTVDo6TG9naWNhbEV4cHJlc3Npb24+KGV4cHJlc3Npb24pKTsKKyAgICBl
bHNlIGlmIChpczxBU1Q6OkxvZ2ljYWxOb3RFeHByZXNzaW9uPihleHByZXNzaW9uKSkKKyAgICAg
ICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6TG9naWNhbE5vdEV4cHJlc3Npb24+
KGV4cHJlc3Npb24pKTsKKyAgICBlbHNlIGlmIChpczxBU1Q6Ok1ha2VBcnJheVJlZmVyZW5jZUV4
cHJlc3Npb24+KGV4cHJlc3Npb24pKQorICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZG93bmNh
c3Q8QVNUOjpNYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uPihleHByZXNzaW9uKSk7CisgICAg
ZWxzZSBpZiAoaXM8QVNUOjpNYWtlUG9pbnRlckV4cHJlc3Npb24+KGV4cHJlc3Npb24pKQorICAg
ICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZG93bmNhc3Q8QVNUOjpNYWtlUG9pbnRlckV4cHJlc3Np
b24+KGV4cHJlc3Npb24pKTsKKyAgICBlbHNlIGlmIChpczxBU1Q6Ok51bGxMaXRlcmFsPihleHBy
ZXNzaW9uKSkKKyAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvd25jYXN0PEFTVDo6TnVsbExp
dGVyYWw+KGV4cHJlc3Npb24pKTsKKyAgICBlbHNlIGlmIChpczxBU1Q6OkRvdEV4cHJlc3Npb24+
KGV4cHJlc3Npb24pKQorICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZG93bmNhc3Q8QVNUOjpE
b3RFeHByZXNzaW9uPihleHByZXNzaW9uKSk7CisgICAgZWxzZSBpZiAoaXM8QVNUOjpJbmRleEV4
cHJlc3Npb24+KGV4cHJlc3Npb24pKQorICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZG93bmNh
c3Q8QVNUOjpJbmRleEV4cHJlc3Npb24+KGV4cHJlc3Npb24pKTsKKyAgICBlbHNlIGlmIChpczxB
U1Q6OlJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24+KGV4cHJlc3Npb24pKQorICAgICAgICBjaGVj
a0Vycm9yQW5kVmlzaXQoZG93bmNhc3Q8QVNUOjpSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uPihl
eHByZXNzaW9uKSk7CisgICAgZWxzZSBpZiAoaXM8QVNUOjpUZXJuYXJ5RXhwcmVzc2lvbj4oZXhw
cmVzc2lvbikpCisgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb3duY2FzdDxBU1Q6OlRlcm5h
cnlFeHByZXNzaW9uPihleHByZXNzaW9uKSk7CisgICAgZWxzZSBpZiAoaXM8QVNUOjpVbnNpZ25l
ZEludGVnZXJMaXRlcmFsPihleHByZXNzaW9uKSkKKyAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0
KGRvd25jYXN0PEFTVDo6VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbD4oZXhwcmVzc2lvbikpOworICAg
IGVsc2UgeworICAgICAgICBBU1NFUlQoaXM8QVNUOjpWYXJpYWJsZVJlZmVyZW5jZT4oZXhwcmVz
c2lvbikpOworICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZG93bmNhc3Q8QVNUOjpWYXJpYWJs
ZVJlZmVyZW5jZT4oZXhwcmVzc2lvbikpOworICAgIH0KK30KKwordm9pZCBWaXNpdG9yOjp2aXNp
dChBU1Q6OkRvdEV4cHJlc3Npb24mIGRvdEV4cHJlc3Npb24pCit7CisgICAgY2hlY2tFcnJvckFu
ZFZpc2l0KHN0YXRpY19jYXN0PEFTVDo6UHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uJj4oZG90RXhw
cmVzc2lvbikpOworfQorCit2b2lkIFZpc2l0b3I6OnZpc2l0KEFTVDo6SW5kZXhFeHByZXNzaW9u
JiBpbmRleEV4cHJlc3Npb24pCit7CisgICAgY2hlY2tFcnJvckFuZFZpc2l0KGluZGV4RXhwcmVz
c2lvbi5pbmRleEV4cHJlc3Npb24oKSk7CisgICAgY2hlY2tFcnJvckFuZFZpc2l0KHN0YXRpY19j
YXN0PEFTVDo6UHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uJj4oaW5kZXhFeHByZXNzaW9uKSk7Cit9
CisKK3ZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24mIGV4
cHJlc3Npb24pCit7CisgICAgY2hlY2tFcnJvckFuZFZpc2l0KGV4cHJlc3Npb24uYmFzZSgpKTsK
K30KKwordm9pZCBWaXNpdG9yOjp2aXNpdChBU1Q6OkVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1l
bnQmIGVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQpCit7CisgICAgY2hlY2tFcnJvckFuZFZp
c2l0KGVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQuZWZmZWN0ZnVsRXhwcmVzc2lvbigpKTsK
K30KKwordm9pZCBWaXNpdG9yOjp2aXNpdChBU1Q6OkZhbGx0aHJvdWdoJikKK3sKK30KKwordm9p
ZCBWaXNpdG9yOjp2aXNpdChBU1Q6OkZvckxvb3AmIGZvckxvb3ApCit7CisgICAgV1RGOjp2aXNp
dChXVEY6Om1ha2VWaXNpdG9yKFsmXShBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50
JiB2YXJpYWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudCkgeworICAgICAgICBjaGVja0Vycm9yQW5k
VmlzaXQodmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQpOworICAgIH0sIFsmXShVbmlxdWVS
ZWY8QVNUOjpFeHByZXNzaW9uPiYgZXhwcmVzc2lvbikgeworICAgICAgICBjaGVja0Vycm9yQW5k
VmlzaXQoc3RhdGljX2Nhc3Q8QVNUOjpFeHByZXNzaW9uJj4oZXhwcmVzc2lvbikpOworICAgIH0p
LCBmb3JMb29wLmluaXRpYWxpemF0aW9uKCkpOworICAgIGlmIChmb3JMb29wLmNvbmRpdGlvbigp
KQorICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoKmZvckxvb3AuY29uZGl0aW9uKCkpOworICAg
IGlmIChmb3JMb29wLmluY3JlbWVudCgpKQorICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoKmZv
ckxvb3AuaW5jcmVtZW50KCkpOworICAgIGNoZWNrRXJyb3JBbmRWaXNpdChmb3JMb29wLmJvZHko
KSk7Cit9CisKK3ZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpJZlN0YXRlbWVudCYgaWZTdGF0ZW1l
bnQpCit7CisgICAgY2hlY2tFcnJvckFuZFZpc2l0KGlmU3RhdGVtZW50LmNvbmRpdGlvbmFsKCkp
OworICAgIGNoZWNrRXJyb3JBbmRWaXNpdChpZlN0YXRlbWVudC5ib2R5KCkpOworICAgIGlmIChp
ZlN0YXRlbWVudC5lbHNlQm9keSgpKQorICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoc3RhdGlj
X2Nhc3Q8QVNUOjpTdGF0ZW1lbnQmPigqaWZTdGF0ZW1lbnQuZWxzZUJvZHkoKSkpOworfQorCit2
b2lkIFZpc2l0b3I6OnZpc2l0KEFTVDo6UmV0dXJuJiByZXR1cm5TdGF0ZW1lbnQpCit7CisgICAg
aWYgKHJldHVyblN0YXRlbWVudC52YWx1ZSgpKQorICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQo
KnJldHVyblN0YXRlbWVudC52YWx1ZSgpKTsKK30KKwordm9pZCBWaXNpdG9yOjp2aXNpdChBU1Q6
OlN3aXRjaENhc2UmIHN3aXRjaENhc2UpCit7CisgICAgaWYgKHN3aXRjaENhc2UudmFsdWUoKSkK
KyAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KCpzd2l0Y2hDYXNlLnZhbHVlKCkpOworICAgIGNo
ZWNrRXJyb3JBbmRWaXNpdChzd2l0Y2hDYXNlLmJsb2NrKCkpOworfQorCit2b2lkIFZpc2l0b3I6
OnZpc2l0KEFTVDo6U3dpdGNoU3RhdGVtZW50JiBzd2l0Y2hTdGF0ZW1lbnQpCit7CisgICAgY2hl
Y2tFcnJvckFuZFZpc2l0KHN3aXRjaFN0YXRlbWVudC52YWx1ZSgpKTsKKyAgICBmb3IgKGF1dG8m
IHN3aXRjaENhc2UgOiBzd2l0Y2hTdGF0ZW1lbnQuc3dpdGNoQ2FzZXMoKSkKKyAgICAgICAgY2hl
Y2tFcnJvckFuZFZpc2l0KHN3aXRjaENhc2UpOworfQorCit2b2lkIFZpc2l0b3I6OnZpc2l0KEFT
VDo6VHJhcCYpCit7Cit9CisKK3ZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpWYXJpYWJsZURlY2xh
cmF0aW9uc1N0YXRlbWVudCYgdmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQpCit7CisgICAg
Zm9yIChhdXRvJiB2YXJpYWJsZURlY2xhcmF0aW9uIDogdmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0
ZW1lbnQudmFyaWFibGVEZWNsYXJhdGlvbnMoKSkKKyAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0
KHZhcmlhYmxlRGVjbGFyYXRpb24pOworfQorCit2b2lkIFZpc2l0b3I6OnZpc2l0KEFTVDo6V2hp
bGVMb29wJiB3aGlsZUxvb3ApCit7CisgICAgY2hlY2tFcnJvckFuZFZpc2l0KHdoaWxlTG9vcC5j
b25kaXRpb25hbCgpKTsKKyAgICBjaGVja0Vycm9yQW5kVmlzaXQod2hpbGVMb29wLmJvZHkoKSk7
Cit9CisKK3ZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uJiB2YXJp
YWJsZURlY2xhcmF0aW9uKQoreworICAgIGlmICh2YXJpYWJsZURlY2xhcmF0aW9uLnR5cGUoKSkK
KyAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KCp2YXJpYWJsZURlY2xhcmF0aW9uLnR5cGUoKSk7
CisgICAgaWYgKHZhcmlhYmxlRGVjbGFyYXRpb24uc2VtYW50aWMoKSkKKyAgICAgICAgY2hlY2tF
cnJvckFuZFZpc2l0KCp2YXJpYWJsZURlY2xhcmF0aW9uLnNlbWFudGljKCkpOworICAgIGlmICh2
YXJpYWJsZURlY2xhcmF0aW9uLmluaXRpYWxpemVyKCkpCisgICAgICAgIGNoZWNrRXJyb3JBbmRW
aXNpdCgqdmFyaWFibGVEZWNsYXJhdGlvbi5pbml0aWFsaXplcigpKTsKK30KKwordm9pZCBWaXNp
dG9yOjp2aXNpdChBU1Q6OkFzc2lnbm1lbnRFeHByZXNzaW9uJiBhc3NpZ25tZW50RXhwcmVzc2lv
bikKK3sKKyAgICBjaGVja0Vycm9yQW5kVmlzaXQoYXNzaWdubWVudEV4cHJlc3Npb24ubGVmdCgp
KTsKKyAgICBjaGVja0Vycm9yQW5kVmlzaXQoYXNzaWdubWVudEV4cHJlc3Npb24ucmlnaHQoKSk7
Cit9CisKK3ZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpDYWxsRXhwcmVzc2lvbiYgY2FsbEV4cHJl
c3Npb24pCit7CisgICAgZm9yIChhdXRvJiBhcmd1bWVudCA6IGNhbGxFeHByZXNzaW9uLmFyZ3Vt
ZW50cygpKQorICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoc3RhdGljX2Nhc3Q8QVNUOjpFeHBy
ZXNzaW9uJj4oYXJndW1lbnQpKTsKKyAgICBpZiAoY2FsbEV4cHJlc3Npb24uY2FzdFJldHVyblR5
cGUoKSkKKyAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGNhbGxFeHByZXNzaW9uLmNhc3RSZXR1
cm5UeXBlKCktPmdldCgpKTsKK30KKwordm9pZCBWaXNpdG9yOjp2aXNpdChBU1Q6OkNvbW1hRXhw
cmVzc2lvbiYgY29tbWFFeHByZXNzaW9uKQoreworICAgIGZvciAoYXV0byYgZXhwcmVzc2lvbiA6
IGNvbW1hRXhwcmVzc2lvbi5saXN0KCkpCisgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChzdGF0
aWNfY2FzdDxBU1Q6OkV4cHJlc3Npb24mPihleHByZXNzaW9uKSk7Cit9CisKK3ZvaWQgVmlzaXRv
cjo6dmlzaXQoQVNUOjpEZXJlZmVyZW5jZUV4cHJlc3Npb24mIGRlcmVmZXJlbmNlRXhwcmVzc2lv
bikKK3sKKyAgICBjaGVja0Vycm9yQW5kVmlzaXQoZGVyZWZlcmVuY2VFeHByZXNzaW9uLnBvaW50
ZXIoKSk7Cit9CisKK3ZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpMb2dpY2FsRXhwcmVzc2lvbiYg
bG9naWNhbEV4cHJlc3Npb24pCit7CisgICAgY2hlY2tFcnJvckFuZFZpc2l0KGxvZ2ljYWxFeHBy
ZXNzaW9uLmxlZnQoKSk7CisgICAgY2hlY2tFcnJvckFuZFZpc2l0KGxvZ2ljYWxFeHByZXNzaW9u
LnJpZ2h0KCkpOworfQorCit2b2lkIFZpc2l0b3I6OnZpc2l0KEFTVDo6TG9naWNhbE5vdEV4cHJl
c3Npb24mIGxvZ2ljYWxOb3RFeHByZXNzaW9uKQoreworICAgIGNoZWNrRXJyb3JBbmRWaXNpdChs
b2dpY2FsTm90RXhwcmVzc2lvbi5vcGVyYW5kKCkpOworfQorCit2b2lkIFZpc2l0b3I6OnZpc2l0
KEFTVDo6TWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbiYgbWFrZUFycmF5UmVmZXJlbmNlRXhw
cmVzc2lvbikKK3sKKyAgICBjaGVja0Vycm9yQW5kVmlzaXQobWFrZUFycmF5UmVmZXJlbmNlRXhw
cmVzc2lvbi5sVmFsdWUoKSk7Cit9CisKK3ZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpNYWtlUG9p
bnRlckV4cHJlc3Npb24mIG1ha2VQb2ludGVyRXhwcmVzc2lvbikKK3sKKyAgICBjaGVja0Vycm9y
QW5kVmlzaXQobWFrZVBvaW50ZXJFeHByZXNzaW9uLmxWYWx1ZSgpKTsKK30KKwordm9pZCBWaXNp
dG9yOjp2aXNpdChBU1Q6OlJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24mIHJlYWRNb2RpZnlXcml0
ZUV4cHJlc3Npb24pCit7CisgICAgY2hlY2tFcnJvckFuZFZpc2l0KHJlYWRNb2RpZnlXcml0ZUV4
cHJlc3Npb24ubFZhbHVlKCkpOworICAgIGNoZWNrRXJyb3JBbmRWaXNpdChyZWFkTW9kaWZ5V3Jp
dGVFeHByZXNzaW9uLm9sZFZhbHVlKCkpOworICAgIGNoZWNrRXJyb3JBbmRWaXNpdChyZWFkTW9k
aWZ5V3JpdGVFeHByZXNzaW9uLm5ld1ZhbHVlKCkpOworICAgIGlmIChyZWFkTW9kaWZ5V3JpdGVF
eHByZXNzaW9uLm5ld1ZhbHVlRXhwcmVzc2lvbigpKQorICAgICAgICBjaGVja0Vycm9yQW5kVmlz
aXQoKnJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24ubmV3VmFsdWVFeHByZXNzaW9uKCkpOworICAg
IGlmIChyZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uLnJlc3VsdEV4cHJlc3Npb24oKSkKKyAgICAg
ICAgY2hlY2tFcnJvckFuZFZpc2l0KCpyZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uLnJlc3VsdEV4
cHJlc3Npb24oKSk7Cit9CisKK3ZvaWQgVmlzaXRvcjo6dmlzaXQoQVNUOjpUZXJuYXJ5RXhwcmVz
c2lvbiYgdGVybmFyeUV4cHJlc3Npb24pCit7CisgICAgY2hlY2tFcnJvckFuZFZpc2l0KHRlcm5h
cnlFeHByZXNzaW9uLnByZWRpY2F0ZSgpKTsKKyAgICBjaGVja0Vycm9yQW5kVmlzaXQodGVybmFy
eUV4cHJlc3Npb24uYm9keUV4cHJlc3Npb24oKSk7CisgICAgY2hlY2tFcnJvckFuZFZpc2l0KHRl
cm5hcnlFeHByZXNzaW9uLmVsc2VFeHByZXNzaW9uKCkpOworfQorCit2b2lkIFZpc2l0b3I6OnZp
c2l0KEFTVDo6VmFyaWFibGVSZWZlcmVuY2UmKQoreworfQorCit2b2lkIFZpc2l0b3I6OmNoZWNr
RXJyb3JBbmRWaXNpdChQcm9ncmFtJiBwcm9ncmFtKQoreworICAgIGlmICghZXJyb3IoKSkKKyAg
ICAgICAgdmlzaXQocHJvZ3JhbSk7Cit9CisKK3ZvaWQgVmlzaXRvcjo6Y2hlY2tFcnJvckFuZFZp
c2l0KEFTVDo6VW5uYW1lZFR5cGUmIHVubmFtZWRUeXBlKQoreworICAgIGlmICghZXJyb3IoKSkK
KyAgICAgICAgdmlzaXQodW5uYW1lZFR5cGUpOworfQorCit2b2lkIFZpc2l0b3I6OmNoZWNrRXJy
b3JBbmRWaXNpdChBU1Q6Ok5hbWVkVHlwZSYgbmFtZWRUeXBlKQoreworICAgIGlmICghZXJyb3Io
KSkKKyAgICAgICAgdmlzaXQobmFtZWRUeXBlKTsKK30KKwordm9pZCBWaXNpdG9yOjpjaGVja0Vy
cm9yQW5kVmlzaXQoQVNUOjpUeXBlRGVmaW5pdGlvbiYgdHlwZURlZmluaXRpb24pCit7CisgICAg
aWYgKCFlcnJvcigpKQorICAgICAgICB2aXNpdCh0eXBlRGVmaW5pdGlvbik7Cit9CisKK3ZvaWQg
VmlzaXRvcjo6Y2hlY2tFcnJvckFuZFZpc2l0KEFTVDo6U3RydWN0dXJlRGVmaW5pdGlvbiYgc3Ry
dWN0dXJlRGVmaW5pdGlvbikKK3sKKyAgICBpZiAoIWVycm9yKCkpCisgICAgICAgIHZpc2l0KHN0
cnVjdHVyZURlZmluaXRpb24pOworfQorCit2b2lkIFZpc2l0b3I6OmNoZWNrRXJyb3JBbmRWaXNp
dChBU1Q6OkVudW1lcmF0aW9uRGVmaW5pdGlvbiYgZW51bWVyYXRpb25EZWZpbml0aW9uKQorewor
ICAgIGlmICghZXJyb3IoKSkKKyAgICAgICAgdmlzaXQoZW51bWVyYXRpb25EZWZpbml0aW9uKTsK
K30KKwordm9pZCBWaXNpdG9yOjpjaGVja0Vycm9yQW5kVmlzaXQoQVNUOjpGdW5jdGlvbkRlZmlu
aXRpb24mIGZ1bmN0aW9uRGVmaW5pdGlvbikKK3sKKyAgICBpZiAoIWVycm9yKCkpCisgICAgICAg
IHZpc2l0KGZ1bmN0aW9uRGVmaW5pdGlvbik7Cit9CisKK3ZvaWQgVmlzaXRvcjo6Y2hlY2tFcnJv
ckFuZFZpc2l0KEFTVDo6TmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbiYgbmF0aXZlRnVuY3Rpb25E
ZWNsYXJhdGlvbikKK3sKKyAgICBpZiAoIWVycm9yKCkpCisgICAgICAgIHZpc2l0KG5hdGl2ZUZ1
bmN0aW9uRGVjbGFyYXRpb24pOworfQorCit2b2lkIFZpc2l0b3I6OmNoZWNrRXJyb3JBbmRWaXNp
dChBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbiYgbmF0aXZlVHlwZURlY2xhcmF0aW9uKQorewor
ICAgIGlmICghZXJyb3IoKSkKKyAgICAgICAgdmlzaXQobmF0aXZlVHlwZURlY2xhcmF0aW9uKTsK
K30KKwordm9pZCBWaXNpdG9yOjpjaGVja0Vycm9yQW5kVmlzaXQoQVNUOjpUeXBlUmVmZXJlbmNl
JiB0eXBlUmVmZXJlbmNlKQoreworICAgIGlmICghZXJyb3IoKSkKKyAgICAgICAgdmlzaXQodHlw
ZVJlZmVyZW5jZSk7Cit9CisKK3ZvaWQgVmlzaXRvcjo6Y2hlY2tFcnJvckFuZFZpc2l0KEFTVDo6
UG9pbnRlclR5cGUmIHBvaW50ZXJUeXBlKQoreworICAgIGlmICghZXJyb3IoKSkKKyAgICAgICAg
dmlzaXQocG9pbnRlclR5cGUpOworfQorCit2b2lkIFZpc2l0b3I6OmNoZWNrRXJyb3JBbmRWaXNp
dChBU1Q6OkFycmF5UmVmZXJlbmNlVHlwZSYgYXJyYXlSZWZlcmVuY2VUeXBlKQoreworICAgIGlm
ICghZXJyb3IoKSkKKyAgICAgICAgdmlzaXQoYXJyYXlSZWZlcmVuY2VUeXBlKTsKK30KKwordm9p
ZCBWaXNpdG9yOjpjaGVja0Vycm9yQW5kVmlzaXQoQVNUOjpBcnJheVR5cGUmIGFycmF5VHlwZSkK
K3sKKyAgICBpZiAoIWVycm9yKCkpCisgICAgICAgIHZpc2l0KGFycmF5VHlwZSk7Cit9CisKK3Zv
aWQgVmlzaXRvcjo6Y2hlY2tFcnJvckFuZFZpc2l0KEFTVDo6U3RydWN0dXJlRWxlbWVudCYgc3Ry
dWN0dXJlRWxlbWVudCkKK3sKKyAgICBpZiAoIWVycm9yKCkpCisgICAgICAgIHZpc2l0KHN0cnVj
dHVyZUVsZW1lbnQpOworfQorCit2b2lkIFZpc2l0b3I6OmNoZWNrRXJyb3JBbmRWaXNpdChBU1Q6
OkVudW1lcmF0aW9uTWVtYmVyJiBlbnVtZXJhdGlvbk1lbWJlcikKK3sKKyAgICBpZiAoIWVycm9y
KCkpCisgICAgICAgIHZpc2l0KGVudW1lcmF0aW9uTWVtYmVyKTsKK30KKwordm9pZCBWaXNpdG9y
OjpjaGVja0Vycm9yQW5kVmlzaXQoQVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uJiBmdW5jdGlvbkRl
Y2xhcmF0aW9uKQoreworICAgIGlmICghZXJyb3IoKSkKKyAgICAgICAgdmlzaXQoZnVuY3Rpb25E
ZWNsYXJhdGlvbik7Cit9CisKK3ZvaWQgVmlzaXRvcjo6Y2hlY2tFcnJvckFuZFZpc2l0KEFTVDo6
VHlwZUFyZ3VtZW50JiB0eXBlQXJndW1lbnQpCit7CisgICAgaWYgKCFlcnJvcigpKQorICAgICAg
ICB2aXNpdCh0eXBlQXJndW1lbnQpOworfQorCit2b2lkIFZpc2l0b3I6OmNoZWNrRXJyb3JBbmRW
aXNpdChBU1Q6OlJlZmVyZW5jZVR5cGUmIHJlZmVyZW5jZVR5cGUpCit7CisgICAgaWYgKCFlcnJv
cigpKQorICAgICAgICB2aXNpdChyZWZlcmVuY2VUeXBlKTsKK30KKwordm9pZCBWaXNpdG9yOjpj
aGVja0Vycm9yQW5kVmlzaXQoQVNUOjpTZW1hbnRpYyYgc2VtYW50aWMpCit7CisgICAgaWYgKCFl
cnJvcigpKQorICAgICAgICB2aXNpdChzZW1hbnRpYyk7Cit9CisKK3ZvaWQgVmlzaXRvcjo6Y2hl
Y2tFcnJvckFuZFZpc2l0KEFTVDo6Q29uc3RhbnRFeHByZXNzaW9uJiBjb25zdGFudEV4cHJlc3Np
b24pCit7CisgICAgaWYgKCFlcnJvcigpKQorICAgICAgICB2aXNpdChjb25zdGFudEV4cHJlc3Np
b24pOworfQorCit2b2lkIFZpc2l0b3I6OmNoZWNrRXJyb3JBbmRWaXNpdChBU1Q6OkF0dHJpYnV0
ZUJsb2NrJiBhdHRyaWJ1dGVCbG9jaykKK3sKKyAgICBpZiAoIWVycm9yKCkpCisgICAgICAgIHZp
c2l0KGF0dHJpYnV0ZUJsb2NrKTsKK30KKwordm9pZCBWaXNpdG9yOjpjaGVja0Vycm9yQW5kVmlz
aXQoQVNUOjpCdWlsdEluU2VtYW50aWMmIGJ1aWx0SW5TZW1hbnRpYykKK3sKKyAgICBpZiAoIWVy
cm9yKCkpCisgICAgICAgIHZpc2l0KGJ1aWx0SW5TZW1hbnRpYyk7Cit9CisKK3ZvaWQgVmlzaXRv
cjo6Y2hlY2tFcnJvckFuZFZpc2l0KEFTVDo6UmVzb3VyY2VTZW1hbnRpYyYgcmVzb3VyY2VTZW1h
bnRpYykKK3sKKyAgICBpZiAoIWVycm9yKCkpCisgICAgICAgIHZpc2l0KHJlc291cmNlU2VtYW50
aWMpOworfQorCit2b2lkIFZpc2l0b3I6OmNoZWNrRXJyb3JBbmRWaXNpdChBU1Q6OlNwZWNpYWxp
emF0aW9uQ29uc3RhbnRTZW1hbnRpYyYgc3BlY2lhbGl6YXRpb25Db25zdGFudFNlbWFudGljKQor
eworICAgIGlmICghZXJyb3IoKSkKKyAgICAgICAgdmlzaXQoc3BlY2lhbGl6YXRpb25Db25zdGFu
dFNlbWFudGljKTsKK30KKwordm9pZCBWaXNpdG9yOjpjaGVja0Vycm9yQW5kVmlzaXQoQVNUOjpT
dGFnZUluT3V0U2VtYW50aWMmIHN0YWdlSW5PdXRTZW1hbnRpYykKK3sKKyAgICBpZiAoIWVycm9y
KCkpCisgICAgICAgIHZpc2l0KHN0YWdlSW5PdXRTZW1hbnRpYyk7Cit9CisKK3ZvaWQgVmlzaXRv
cjo6Y2hlY2tFcnJvckFuZFZpc2l0KEFTVDo6SW50ZWdlckxpdGVyYWwmIGludGVnZXJMaXRlcmFs
KQoreworICAgIGlmICghZXJyb3IoKSkKKyAgICAgICAgdmlzaXQoaW50ZWdlckxpdGVyYWwpOwor
fQorCit2b2lkIFZpc2l0b3I6OmNoZWNrRXJyb3JBbmRWaXNpdChBU1Q6OlVuc2lnbmVkSW50ZWdl
ckxpdGVyYWwmIHVuc2lnbmVkSW50ZWdlckxpdGVyYWwpCit7CisgICAgaWYgKCFlcnJvcigpKQor
ICAgICAgICB2aXNpdCh1bnNpZ25lZEludGVnZXJMaXRlcmFsKTsKK30KKwordm9pZCBWaXNpdG9y
OjpjaGVja0Vycm9yQW5kVmlzaXQoQVNUOjpGbG9hdExpdGVyYWwmIGZsb2F0TGl0ZXJhbCkKK3sK
KyAgICBpZiAoIWVycm9yKCkpCisgICAgICAgIHZpc2l0KGZsb2F0TGl0ZXJhbCk7Cit9CisKK3Zv
aWQgVmlzaXRvcjo6Y2hlY2tFcnJvckFuZFZpc2l0KEFTVDo6TnVsbExpdGVyYWwmIG51bGxMaXRl
cmFsKQoreworICAgIGlmICghZXJyb3IoKSkKKyAgICAgICAgdmlzaXQobnVsbExpdGVyYWwpOwor
fQorCit2b2lkIFZpc2l0b3I6OmNoZWNrRXJyb3JBbmRWaXNpdChBU1Q6OkJvb2xlYW5MaXRlcmFs
JiBib29sZWFuTGl0ZXJhbCkKK3sKKyAgICBpZiAoIWVycm9yKCkpCisgICAgICAgIHZpc2l0KGJv
b2xlYW5MaXRlcmFsKTsKK30KKwordm9pZCBWaXNpdG9yOjpjaGVja0Vycm9yQW5kVmlzaXQoQVNU
OjpJbnRlZ2VyTGl0ZXJhbFR5cGUmIGludGVnZXJMaXRlcmFsVHlwZSkKK3sKKyAgICBpZiAoIWVy
cm9yKCkpCisgICAgICAgIHZpc2l0KGludGVnZXJMaXRlcmFsVHlwZSk7Cit9CisKK3ZvaWQgVmlz
aXRvcjo6Y2hlY2tFcnJvckFuZFZpc2l0KEFTVDo6VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUm
IHVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlKQoreworICAgIGlmICghZXJyb3IoKSkKKyAgICAg
ICAgdmlzaXQodW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUpOworfQorCit2b2lkIFZpc2l0b3I6
OmNoZWNrRXJyb3JBbmRWaXNpdChBU1Q6OkZsb2F0TGl0ZXJhbFR5cGUmIGZsb2F0TGl0ZXJhbFR5
cGUpCit7CisgICAgaWYgKCFlcnJvcigpKQorICAgICAgICB2aXNpdChmbG9hdExpdGVyYWxUeXBl
KTsKK30KKwordm9pZCBWaXNpdG9yOjpjaGVja0Vycm9yQW5kVmlzaXQoQVNUOjpOdWxsTGl0ZXJh
bFR5cGUmIG51bGxMaXRlcmFsVHlwZSkKK3sKKyAgICBpZiAoIWVycm9yKCkpCisgICAgICAgIHZp
c2l0KG51bGxMaXRlcmFsVHlwZSk7Cit9CisKK3ZvaWQgVmlzaXRvcjo6Y2hlY2tFcnJvckFuZFZp
c2l0KEFTVDo6Q29uc3RhbnRFeHByZXNzaW9uRW51bWVyYXRpb25NZW1iZXJSZWZlcmVuY2UmIGNv
bnN0YW50RXhwcmVzc2lvbkVudW1lcmF0aW9uTWVtYmVyUmVmZXJlbmNlKQoreworICAgIGlmICgh
ZXJyb3IoKSkKKyAgICAgICAgdmlzaXQoY29uc3RhbnRFeHByZXNzaW9uRW51bWVyYXRpb25NZW1i
ZXJSZWZlcmVuY2UpOworfQorCit2b2lkIFZpc2l0b3I6OmNoZWNrRXJyb3JBbmRWaXNpdChBU1Q6
OkZ1bmN0aW9uQXR0cmlidXRlJiBmdW5jdGlvbkF0dHJpYnV0ZSkKK3sKKyAgICBpZiAoIWVycm9y
KCkpCisgICAgICAgIHZpc2l0KGZ1bmN0aW9uQXR0cmlidXRlKTsKK30KKwordm9pZCBWaXNpdG9y
OjpjaGVja0Vycm9yQW5kVmlzaXQoQVNUOjpOdW1UaHJlYWRzRnVuY3Rpb25BdHRyaWJ1dGUmIG51
bVRocmVhZHNGdW5jdGlvbkF0dHJpYnV0ZSkKK3sKKyAgICBpZiAoIWVycm9yKCkpCisgICAgICAg
IHZpc2l0KG51bVRocmVhZHNGdW5jdGlvbkF0dHJpYnV0ZSk7Cit9CisKK3ZvaWQgVmlzaXRvcjo6
Y2hlY2tFcnJvckFuZFZpc2l0KEFTVDo6QmxvY2smIGJsb2NrKQoreworICAgIGlmICghZXJyb3Io
KSkKKyAgICAgICAgdmlzaXQoYmxvY2spOworfQorCit2b2lkIFZpc2l0b3I6OmNoZWNrRXJyb3JB
bmRWaXNpdChBU1Q6OlN0YXRlbWVudCYgc3RhdGVtZW50KQoreworICAgIGlmICghZXJyb3IoKSkK
KyAgICAgICAgdmlzaXQoc3RhdGVtZW50KTsKK30KKwordm9pZCBWaXNpdG9yOjpjaGVja0Vycm9y
QW5kVmlzaXQoQVNUOjpCcmVhayYgYnJlYWtTdGF0ZW1lbnQpCit7CisgICAgaWYgKCFlcnJvcigp
KQorICAgICAgICB2aXNpdChicmVha1N0YXRlbWVudCk7Cit9CisKK3ZvaWQgVmlzaXRvcjo6Y2hl
Y2tFcnJvckFuZFZpc2l0KEFTVDo6Q29udGludWUmIGNvbnRpbnVlU3RhdGVtZW50KQoreworICAg
IGlmICghZXJyb3IoKSkKKyAgICAgICAgdmlzaXQoY29udGludWVTdGF0ZW1lbnQpOworfQorCit2
b2lkIFZpc2l0b3I6OmNoZWNrRXJyb3JBbmRWaXNpdChBU1Q6OkRvV2hpbGVMb29wJiBkb1doaWxl
TG9vcCkKK3sKKyAgICBpZiAoIWVycm9yKCkpCisgICAgICAgIHZpc2l0KGRvV2hpbGVMb29wKTsK
K30KKwordm9pZCBWaXNpdG9yOjpjaGVja0Vycm9yQW5kVmlzaXQoQVNUOjpFeHByZXNzaW9uJiBl
eHByZXNzaW9uKQoreworICAgIGlmICghZXJyb3IoKSkKKyAgICAgICAgdmlzaXQoZXhwcmVzc2lv
bik7Cit9CisKK3ZvaWQgVmlzaXRvcjo6Y2hlY2tFcnJvckFuZFZpc2l0KEFTVDo6RG90RXhwcmVz
c2lvbiYgZG90RXhwcmVzc2lvbikKK3sKKyAgICBpZiAoIWVycm9yKCkpCisgICAgICAgIHZpc2l0
KGRvdEV4cHJlc3Npb24pOworfQorCit2b2lkIFZpc2l0b3I6OmNoZWNrRXJyb3JBbmRWaXNpdChB
U1Q6OkluZGV4RXhwcmVzc2lvbiYgaW5kZXhFeHByZXNzaW9uKQoreworICAgIGlmICghZXJyb3Io
KSkKKyAgICAgICAgdmlzaXQoaW5kZXhFeHByZXNzaW9uKTsKK30KKwordm9pZCBWaXNpdG9yOjpj
aGVja0Vycm9yQW5kVmlzaXQoQVNUOjpQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24mIHByb3BlcnR5
QWNjZXNzRXhwcmVzc2lvbikKK3sKKyAgICBpZiAoIWVycm9yKCkpCisgICAgICAgIHZpc2l0KHBy
b3BlcnR5QWNjZXNzRXhwcmVzc2lvbik7Cit9CisKK3ZvaWQgVmlzaXRvcjo6Y2hlY2tFcnJvckFu
ZFZpc2l0KEFTVDo6RWZmZWN0ZnVsRXhwcmVzc2lvblN0YXRlbWVudCYgZWZmZWN0ZnVsRXhwcmVz
c2lvblN0YXRlbWVudCkKK3sKKyAgICBpZiAoIWVycm9yKCkpCisgICAgICAgIHZpc2l0KGVmZmVj
dGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQpOworfQorCit2b2lkIFZpc2l0b3I6OmNoZWNrRXJyb3JB
bmRWaXNpdChBU1Q6OkZhbGx0aHJvdWdoJiBmYWxsdGhyb3VnaFN0YXRlbWVudCkKK3sKKyAgICBp
ZiAoIWVycm9yKCkpCisgICAgICAgIHZpc2l0KGZhbGx0aHJvdWdoU3RhdGVtZW50KTsKK30KKwor
dm9pZCBWaXNpdG9yOjpjaGVja0Vycm9yQW5kVmlzaXQoQVNUOjpGb3JMb29wJiBmb3JMb29wKQor
eworICAgIGlmICghZXJyb3IoKSkKKyAgICAgICAgdmlzaXQoZm9yTG9vcCk7Cit9CisKK3ZvaWQg
VmlzaXRvcjo6Y2hlY2tFcnJvckFuZFZpc2l0KEFTVDo6SWZTdGF0ZW1lbnQmIGlmU3RhdGVtZW50
KQoreworICAgIGlmICghZXJyb3IoKSkKKyAgICAgICAgdmlzaXQoaWZTdGF0ZW1lbnQpOworfQor
Cit2b2lkIFZpc2l0b3I6OmNoZWNrRXJyb3JBbmRWaXNpdChBU1Q6OlJldHVybiYgcmV0dXJuU3Rh
dGVtZW50KQoreworICAgIGlmICghZXJyb3IoKSkKKyAgICAgICAgdmlzaXQocmV0dXJuU3RhdGVt
ZW50KTsKK30KKwordm9pZCBWaXNpdG9yOjpjaGVja0Vycm9yQW5kVmlzaXQoQVNUOjpTd2l0Y2hD
YXNlJiBzd2l0Y2hDYXNlKQoreworICAgIGlmICghZXJyb3IoKSkKKyAgICAgICAgdmlzaXQoc3dp
dGNoQ2FzZSk7Cit9CisKK3ZvaWQgVmlzaXRvcjo6Y2hlY2tFcnJvckFuZFZpc2l0KEFTVDo6U3dp
dGNoU3RhdGVtZW50JiBzd2l0Y2hTdGF0ZW1lbnQpCit7CisgICAgaWYgKCFlcnJvcigpKQorICAg
ICAgICB2aXNpdChzd2l0Y2hTdGF0ZW1lbnQpOworfQorCit2b2lkIFZpc2l0b3I6OmNoZWNrRXJy
b3JBbmRWaXNpdChBU1Q6OlRyYXAmIHRyYXApCit7CisgICAgaWYgKCFlcnJvcigpKQorICAgICAg
ICB2aXNpdCh0cmFwKTsKK30KKwordm9pZCBWaXNpdG9yOjpjaGVja0Vycm9yQW5kVmlzaXQoQVNU
OjpWYXJpYWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudCYgdmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0
ZW1lbnQpCit7CisgICAgaWYgKCFlcnJvcigpKQorICAgICAgICB2aXNpdCh2YXJpYWJsZURlY2xh
cmF0aW9uc1N0YXRlbWVudCk7Cit9CisKK3ZvaWQgVmlzaXRvcjo6Y2hlY2tFcnJvckFuZFZpc2l0
KEFTVDo6V2hpbGVMb29wJiB3aGlsZUxvb3ApCit7CisgICAgaWYgKCFlcnJvcigpKQorICAgICAg
ICB2aXNpdCh3aGlsZUxvb3ApOworfQorCit2b2lkIFZpc2l0b3I6OmNoZWNrRXJyb3JBbmRWaXNp
dChBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb24mIHZhcmlhYmxlRGVjbGFyYXRpb24pCit7CisgICAg
aWYgKCFlcnJvcigpKQorICAgICAgICB2aXNpdCh2YXJpYWJsZURlY2xhcmF0aW9uKTsKK30KKwor
dm9pZCBWaXNpdG9yOjpjaGVja0Vycm9yQW5kVmlzaXQoQVNUOjpBc3NpZ25tZW50RXhwcmVzc2lv
biYgYXNzaWdubWVudEV4cHJlc3Npb24pCit7CisgICAgaWYgKCFlcnJvcigpKQorICAgICAgICB2
aXNpdChhc3NpZ25tZW50RXhwcmVzc2lvbik7Cit9CisKK3ZvaWQgVmlzaXRvcjo6Y2hlY2tFcnJv
ckFuZFZpc2l0KEFTVDo6Q2FsbEV4cHJlc3Npb24mIGNhbGxFeHByZXNzaW9uKQoreworICAgIGlm
ICghZXJyb3IoKSkKKyAgICAgICAgdmlzaXQoY2FsbEV4cHJlc3Npb24pOworfQorCit2b2lkIFZp
c2l0b3I6OmNoZWNrRXJyb3JBbmRWaXNpdChBU1Q6OkNvbW1hRXhwcmVzc2lvbiYgY29tbWFFeHBy
ZXNzaW9uKQoreworICAgIGlmICghZXJyb3IoKSkKKyAgICAgICAgdmlzaXQoY29tbWFFeHByZXNz
aW9uKTsKK30KKwordm9pZCBWaXNpdG9yOjpjaGVja0Vycm9yQW5kVmlzaXQoQVNUOjpEZXJlZmVy
ZW5jZUV4cHJlc3Npb24mIGRlcmVmZXJlbmNlRXhwcmVzc2lvbikKK3sKKyAgICBpZiAoIWVycm9y
KCkpCisgICAgICAgIHZpc2l0KGRlcmVmZXJlbmNlRXhwcmVzc2lvbik7Cit9CisKK3ZvaWQgVmlz
aXRvcjo6Y2hlY2tFcnJvckFuZFZpc2l0KEFTVDo6TG9naWNhbEV4cHJlc3Npb24mIGxvZ2ljYWxF
eHByZXNzaW9uKQoreworICAgIGlmICghZXJyb3IoKSkKKyAgICAgICAgdmlzaXQobG9naWNhbEV4
cHJlc3Npb24pOworfQorCit2b2lkIFZpc2l0b3I6OmNoZWNrRXJyb3JBbmRWaXNpdChBU1Q6Okxv
Z2ljYWxOb3RFeHByZXNzaW9uJiBsb2dpY2FsTm90RXhwcmVzc2lvbikKK3sKKyAgICBpZiAoIWVy
cm9yKCkpCisgICAgICAgIHZpc2l0KGxvZ2ljYWxOb3RFeHByZXNzaW9uKTsKK30KKwordm9pZCBW
aXNpdG9yOjpjaGVja0Vycm9yQW5kVmlzaXQoQVNUOjpNYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNz
aW9uJiBtYWtlQXJyYXlSZWZlcmVuY2VFeHByZXNzaW9uKQoreworICAgIGlmICghZXJyb3IoKSkK
KyAgICAgICAgdmlzaXQobWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbik7Cit9CisKK3ZvaWQg
VmlzaXRvcjo6Y2hlY2tFcnJvckFuZFZpc2l0KEFTVDo6TWFrZVBvaW50ZXJFeHByZXNzaW9uJiBt
YWtlUG9pbnRlckV4cHJlc3Npb24pCit7CisgICAgaWYgKCFlcnJvcigpKQorICAgICAgICB2aXNp
dChtYWtlUG9pbnRlckV4cHJlc3Npb24pOworfQorCit2b2lkIFZpc2l0b3I6OmNoZWNrRXJyb3JB
bmRWaXNpdChBU1Q6OlJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24mIHJlYWRNb2RpZnlXcml0ZUV4
cHJlc3Npb24pCit7CisgICAgaWYgKCFlcnJvcigpKQorICAgICAgICB2aXNpdChyZWFkTW9kaWZ5
V3JpdGVFeHByZXNzaW9uKTsKK30KKwordm9pZCBWaXNpdG9yOjpjaGVja0Vycm9yQW5kVmlzaXQo
QVNUOjpUZXJuYXJ5RXhwcmVzc2lvbiYgdGVybmFyeUV4cHJlc3Npb24pCit7CisgICAgaWYgKCFl
cnJvcigpKQorICAgICAgICB2aXNpdCh0ZXJuYXJ5RXhwcmVzc2lvbik7Cit9CisKK3ZvaWQgVmlz
aXRvcjo6Y2hlY2tFcnJvckFuZFZpc2l0KEFTVDo6VmFyaWFibGVSZWZlcmVuY2UmIHZhcmlhYmxl
UmVmZXJlbmNlKQoreworICAgIGlmICghZXJyb3IoKSkKKyAgICAgICAgdmlzaXQodmFyaWFibGVS
ZWZlcmVuY2UpOworfQorCit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFZpc2l0b3IuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMVmlzaXRvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlhM2Y2MjYx
YzM1NzI3ZDBiNjQxYzJiODlhMGJiNDk1ZjE1ZDJjYTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFZpc2l0b3IuaApAQCAtMCwwICsx
LDI2NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQkdQVSkK
KworI2luY2x1ZGUgIldITFNMRnVuY3Rpb25BdHRyaWJ1dGUuaCIKKyNpbmNsdWRlICJXSExTTFNl
bWFudGljLmgiCisjaW5jbHVkZSAiV0hMU0xUeXBlQXJndW1lbnQuaCIKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCituYW1lc3BhY2UgV0hMU0wgeworCitjbGFzcyBQcm9ncmFtOworCituYW1lc3Bh
Y2UgQVNUIHsKKworY2xhc3MgVHlwZURlZmluaXRpb247CitjbGFzcyBTdHJ1Y3R1cmVEZWZpbml0
aW9uOworY2xhc3MgRW51bWVyYXRpb25EZWZpbml0aW9uOworY2xhc3MgRnVuY3Rpb25EZWZpbml0
aW9uOworY2xhc3MgTmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbjsKK2NsYXNzIE5hdGl2ZVR5cGVE
ZWNsYXJhdGlvbjsKK2NsYXNzIFR5cGVSZWZlcmVuY2U7CitjbGFzcyBQb2ludGVyVHlwZTsKK2Ns
YXNzIEFycmF5UmVmZXJlbmNlVHlwZTsKK2NsYXNzIEFycmF5VHlwZTsKK2NsYXNzIFN0cnVjdHVy
ZUVsZW1lbnQ7CitjbGFzcyBFbnVtZXJhdGlvbk1lbWJlcjsKK2NsYXNzIEZ1bmN0aW9uRGVjbGFy
YXRpb247CitjbGFzcyBSZWZlcmVuY2VUeXBlOworY2xhc3MgQ29uc3RhbnRFeHByZXNzaW9uOwor
Y2xhc3MgQnVpbHRJblNlbWFudGljOworY2xhc3MgUmVzb3VyY2VTZW1hbnRpYzsKK2NsYXNzIFNw
ZWNpYWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYzsKK2NsYXNzIFN0YWdlSW5PdXRTZW1hbnRpYzsK
K2NsYXNzIEludGVnZXJMaXRlcmFsOworY2xhc3MgVW5zaWduZWRJbnRlZ2VyTGl0ZXJhbDsKK2Ns
YXNzIEZsb2F0TGl0ZXJhbDsKK2NsYXNzIE51bGxMaXRlcmFsOworY2xhc3MgQm9vbGVhbkxpdGVy
YWw7CitjbGFzcyBDb25zdGFudEV4cHJlc3Npb25FbnVtZXJhdGlvbk1lbWJlclJlZmVyZW5jZTsK
K2NsYXNzIE51bVRocmVhZHNGdW5jdGlvbkF0dHJpYnV0ZTsKK2NsYXNzIEJsb2NrOworY2xhc3Mg
U3RhdGVtZW50OworY2xhc3MgQnJlYWs7CitjbGFzcyBDb250aW51ZTsKK2NsYXNzIERvV2hpbGVM
b29wOworY2xhc3MgRXhwcmVzc2lvbjsKK2NsYXNzIERvdEV4cHJlc3Npb247CitjbGFzcyBJbmRl
eEV4cHJlc3Npb247CitjbGFzcyBQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb247CitjbGFzcyBFZmZl
Y3RmdWxFeHByZXNzaW9uU3RhdGVtZW50OworY2xhc3MgRmFsbHRocm91Z2g7CitjbGFzcyBGb3JM
b29wOworY2xhc3MgSWZTdGF0ZW1lbnQ7CitjbGFzcyBSZXR1cm47CitjbGFzcyBTd2l0Y2hDYXNl
OworY2xhc3MgU3dpdGNoU3RhdGVtZW50OworY2xhc3MgVHJhcDsKK2NsYXNzIFZhcmlhYmxlRGVj
bGFyYXRpb25zU3RhdGVtZW50OworY2xhc3MgV2hpbGVMb29wOworY2xhc3MgVmFyaWFibGVEZWNs
YXJhdGlvbjsKK2NsYXNzIEFzc2lnbm1lbnRFeHByZXNzaW9uOworY2xhc3MgQ2FsbEV4cHJlc3Np
b247CitjbGFzcyBDb21tYUV4cHJlc3Npb247CitjbGFzcyBEZXJlZmVyZW5jZUV4cHJlc3Npb247
CitjbGFzcyBMb2dpY2FsRXhwcmVzc2lvbjsKK2NsYXNzIExvZ2ljYWxOb3RFeHByZXNzaW9uOwor
Y2xhc3MgTWFrZUFycmF5UmVmZXJlbmNlRXhwcmVzc2lvbjsKK2NsYXNzIE1ha2VQb2ludGVyRXhw
cmVzc2lvbjsKK2NsYXNzIFJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb247CitjbGFzcyBUZXJuYXJ5
RXhwcmVzc2lvbjsKK2NsYXNzIFZhcmlhYmxlUmVmZXJlbmNlOworY2xhc3MgVW5uYW1lZFR5cGU7
CitjbGFzcyBOYW1lZFR5cGU7CisKK30KKworY2xhc3MgVmlzaXRvciB7CitwdWJsaWM6CisgICAg
dmlydHVhbCB+VmlzaXRvcigpID0gZGVmYXVsdDsKKworICAgIC8vIEZJWE1FOiBBZGQgYSB3YXkg
dG8gdmlzaXQgYSBjb25zdCBQcm9ncmFtCisKKyAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoUHJvZ3Jh
bSYpOworICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6OlVubmFtZWRUeXBlJik7CisgICAgdmly
dHVhbCB2b2lkIHZpc2l0KEFTVDo6TmFtZWRUeXBlJik7CisgICAgdmlydHVhbCB2b2lkIHZpc2l0
KEFTVDo6VHlwZURlZmluaXRpb24mKTsKKyAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpTdHJ1
Y3R1cmVEZWZpbml0aW9uJik7CisgICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6RW51bWVyYXRp
b25EZWZpbml0aW9uJik7CisgICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6RnVuY3Rpb25EZWZp
bml0aW9uJik7CisgICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6TmF0aXZlRnVuY3Rpb25EZWNs
YXJhdGlvbiYpOworICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJh
dGlvbiYpOworICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6OlR5cGVSZWZlcmVuY2UmKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpQb2ludGVyVHlwZSYpOworICAgIHZpcnR1YWwgdm9p
ZCB2aXNpdChBU1Q6OkFycmF5UmVmZXJlbmNlVHlwZSYpOworICAgIHZpcnR1YWwgdm9pZCB2aXNp
dChBU1Q6OkFycmF5VHlwZSYpOworICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6OlN0cnVjdHVy
ZUVsZW1lbnQmKTsKKyAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpFbnVtZXJhdGlvbk1lbWJl
ciYpOworICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6OkZ1bmN0aW9uRGVjbGFyYXRpb24mKTsK
KyAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpUeXBlQXJndW1lbnQmKTsKKyAgICB2aXJ0dWFs
IHZvaWQgdmlzaXQoQVNUOjpSZWZlcmVuY2VUeXBlJik7CisgICAgdmlydHVhbCB2b2lkIHZpc2l0
KEFTVDo6U2VtYW50aWMmKTsKKyAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpDb25zdGFudEV4
cHJlc3Npb24mKTsKKyAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpBdHRyaWJ1dGVCbG9jayYp
OworICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6OkJ1aWx0SW5TZW1hbnRpYyYpOworICAgIHZp
cnR1YWwgdm9pZCB2aXNpdChBU1Q6OlJlc291cmNlU2VtYW50aWMmKTsKKyAgICB2aXJ0dWFsIHZv
aWQgdmlzaXQoQVNUOjpTcGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWMmKTsKKyAgICB2aXJ0
dWFsIHZvaWQgdmlzaXQoQVNUOjpTdGFnZUluT3V0U2VtYW50aWMmKTsKKyAgICB2aXJ0dWFsIHZv
aWQgdmlzaXQoQVNUOjpJbnRlZ2VyTGl0ZXJhbCYpOworICAgIHZpcnR1YWwgdm9pZCB2aXNpdChB
U1Q6OlVuc2lnbmVkSW50ZWdlckxpdGVyYWwmKTsKKyAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNU
OjpGbG9hdExpdGVyYWwmKTsKKyAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpOdWxsTGl0ZXJh
bCYpOworICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6OkJvb2xlYW5MaXRlcmFsJik7CisgICAg
dmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6SW50ZWdlckxpdGVyYWxUeXBlJik7CisgICAgdmlydHVh
bCB2b2lkIHZpc2l0KEFTVDo6VW5zaWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUmKTsKKyAgICB2aXJ0
dWFsIHZvaWQgdmlzaXQoQVNUOjpGbG9hdExpdGVyYWxUeXBlJik7CisgICAgdmlydHVhbCB2b2lk
IHZpc2l0KEFTVDo6TnVsbExpdGVyYWxUeXBlJik7CisgICAgdmlydHVhbCB2b2lkIHZpc2l0KEFT
VDo6Q29uc3RhbnRFeHByZXNzaW9uRW51bWVyYXRpb25NZW1iZXJSZWZlcmVuY2UmKTsKKyAgICB2
aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpGdW5jdGlvbkF0dHJpYnV0ZSYpOworICAgIHZpcnR1YWwg
dm9pZCB2aXNpdChBU1Q6Ok51bVRocmVhZHNGdW5jdGlvbkF0dHJpYnV0ZSYpOworICAgIHZpcnR1
YWwgdm9pZCB2aXNpdChBU1Q6OkJsb2NrJik7CisgICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6
U3RhdGVtZW50Jik7CisgICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6QnJlYWsmKTsKKyAgICB2
aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpDb250aW51ZSYpOworICAgIHZpcnR1YWwgdm9pZCB2aXNp
dChBU1Q6OkRvV2hpbGVMb29wJik7CisgICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6RXhwcmVz
c2lvbiYpOworICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6OkRvdEV4cHJlc3Npb24mKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpJbmRleEV4cHJlc3Npb24mKTsKKyAgICB2aXJ0dWFs
IHZvaWQgdmlzaXQoQVNUOjpQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24mKTsKKyAgICB2aXJ0dWFs
IHZvaWQgdmlzaXQoQVNUOjpFZmZlY3RmdWxFeHByZXNzaW9uU3RhdGVtZW50Jik7CisgICAgdmly
dHVhbCB2b2lkIHZpc2l0KEFTVDo6RmFsbHRocm91Z2gmKTsKKyAgICB2aXJ0dWFsIHZvaWQgdmlz
aXQoQVNUOjpGb3JMb29wJik7CisgICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6SWZTdGF0ZW1l
bnQmKTsKKyAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpSZXR1cm4mKTsKKyAgICB2aXJ0dWFs
IHZvaWQgdmlzaXQoQVNUOjpTd2l0Y2hDYXNlJik7CisgICAgdmlydHVhbCB2b2lkIHZpc2l0KEFT
VDo6U3dpdGNoU3RhdGVtZW50Jik7CisgICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6VHJhcCYp
OworICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVt
ZW50Jik7CisgICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6V2hpbGVMb29wJik7CisgICAgdmly
dHVhbCB2b2lkIHZpc2l0KEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbiYpOworICAgIHZpcnR1YWwg
dm9pZCB2aXNpdChBU1Q6OkFzc2lnbm1lbnRFeHByZXNzaW9uJik7CisgICAgdmlydHVhbCB2b2lk
IHZpc2l0KEFTVDo6Q2FsbEV4cHJlc3Npb24mKTsKKyAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNU
OjpDb21tYUV4cHJlc3Npb24mKTsKKyAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpEZXJlZmVy
ZW5jZUV4cHJlc3Npb24mKTsKKyAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpMb2dpY2FsRXhw
cmVzc2lvbiYpOworICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6OkxvZ2ljYWxOb3RFeHByZXNz
aW9uJik7CisgICAgdmlydHVhbCB2b2lkIHZpc2l0KEFTVDo6TWFrZUFycmF5UmVmZXJlbmNlRXhw
cmVzc2lvbiYpOworICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6Ok1ha2VQb2ludGVyRXhwcmVz
c2lvbiYpOworICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6OlJlYWRNb2RpZnlXcml0ZUV4cHJl
c3Npb24mKTsKKyAgICB2aXJ0dWFsIHZvaWQgdmlzaXQoQVNUOjpUZXJuYXJ5RXhwcmVzc2lvbiYp
OworICAgIHZpcnR1YWwgdm9pZCB2aXNpdChBU1Q6OlZhcmlhYmxlUmVmZXJlbmNlJik7CisKKyAg
ICB2b2lkIGNoZWNrRXJyb3JBbmRWaXNpdChQcm9ncmFtJik7CisgICAgdm9pZCBjaGVja0Vycm9y
QW5kVmlzaXQoQVNUOjpVbm5hbWVkVHlwZSYpOworICAgIHZvaWQgY2hlY2tFcnJvckFuZFZpc2l0
KEFTVDo6TmFtZWRUeXBlJik7CisgICAgdm9pZCBjaGVja0Vycm9yQW5kVmlzaXQoQVNUOjpUeXBl
RGVmaW5pdGlvbiYpOworICAgIHZvaWQgY2hlY2tFcnJvckFuZFZpc2l0KEFTVDo6U3RydWN0dXJl
RGVmaW5pdGlvbiYpOworICAgIHZvaWQgY2hlY2tFcnJvckFuZFZpc2l0KEFTVDo6RW51bWVyYXRp
b25EZWZpbml0aW9uJik7CisgICAgdm9pZCBjaGVja0Vycm9yQW5kVmlzaXQoQVNUOjpGdW5jdGlv
bkRlZmluaXRpb24mKTsKKyAgICB2b2lkIGNoZWNrRXJyb3JBbmRWaXNpdChBU1Q6Ok5hdGl2ZUZ1
bmN0aW9uRGVjbGFyYXRpb24mKTsKKyAgICB2b2lkIGNoZWNrRXJyb3JBbmRWaXNpdChBU1Q6Ok5h
dGl2ZVR5cGVEZWNsYXJhdGlvbiYpOworICAgIHZvaWQgY2hlY2tFcnJvckFuZFZpc2l0KEFTVDo6
VHlwZVJlZmVyZW5jZSYpOworICAgIHZvaWQgY2hlY2tFcnJvckFuZFZpc2l0KEFTVDo6UG9pbnRl
clR5cGUmKTsKKyAgICB2b2lkIGNoZWNrRXJyb3JBbmRWaXNpdChBU1Q6OkFycmF5UmVmZXJlbmNl
VHlwZSYpOworICAgIHZvaWQgY2hlY2tFcnJvckFuZFZpc2l0KEFTVDo6QXJyYXlUeXBlJik7Cisg
ICAgdm9pZCBjaGVja0Vycm9yQW5kVmlzaXQoQVNUOjpTdHJ1Y3R1cmVFbGVtZW50Jik7CisgICAg
dm9pZCBjaGVja0Vycm9yQW5kVmlzaXQoQVNUOjpFbnVtZXJhdGlvbk1lbWJlciYpOworICAgIHZv
aWQgY2hlY2tFcnJvckFuZFZpc2l0KEFTVDo6RnVuY3Rpb25EZWNsYXJhdGlvbiYpOworICAgIHZv
aWQgY2hlY2tFcnJvckFuZFZpc2l0KEFTVDo6VHlwZUFyZ3VtZW50Jik7CisgICAgdm9pZCBjaGVj
a0Vycm9yQW5kVmlzaXQoQVNUOjpSZWZlcmVuY2VUeXBlJik7CisgICAgdm9pZCBjaGVja0Vycm9y
QW5kVmlzaXQoQVNUOjpTZW1hbnRpYyYpOworICAgIHZvaWQgY2hlY2tFcnJvckFuZFZpc2l0KEFT
VDo6Q29uc3RhbnRFeHByZXNzaW9uJik7CisgICAgdm9pZCBjaGVja0Vycm9yQW5kVmlzaXQoQVNU
OjpBdHRyaWJ1dGVCbG9jayYpOworICAgIHZvaWQgY2hlY2tFcnJvckFuZFZpc2l0KEFTVDo6QnVp
bHRJblNlbWFudGljJik7CisgICAgdm9pZCBjaGVja0Vycm9yQW5kVmlzaXQoQVNUOjpSZXNvdXJj
ZVNlbWFudGljJik7CisgICAgdm9pZCBjaGVja0Vycm9yQW5kVmlzaXQoQVNUOjpTcGVjaWFsaXph
dGlvbkNvbnN0YW50U2VtYW50aWMmKTsKKyAgICB2b2lkIGNoZWNrRXJyb3JBbmRWaXNpdChBU1Q6
OlN0YWdlSW5PdXRTZW1hbnRpYyYpOworICAgIHZvaWQgY2hlY2tFcnJvckFuZFZpc2l0KEFTVDo6
SW50ZWdlckxpdGVyYWwmKTsKKyAgICB2b2lkIGNoZWNrRXJyb3JBbmRWaXNpdChBU1Q6OlVuc2ln
bmVkSW50ZWdlckxpdGVyYWwmKTsKKyAgICB2b2lkIGNoZWNrRXJyb3JBbmRWaXNpdChBU1Q6OkZs
b2F0TGl0ZXJhbCYpOworICAgIHZvaWQgY2hlY2tFcnJvckFuZFZpc2l0KEFTVDo6TnVsbExpdGVy
YWwmKTsKKyAgICB2b2lkIGNoZWNrRXJyb3JBbmRWaXNpdChBU1Q6OkJvb2xlYW5MaXRlcmFsJik7
CisgICAgdm9pZCBjaGVja0Vycm9yQW5kVmlzaXQoQVNUOjpJbnRlZ2VyTGl0ZXJhbFR5cGUmKTsK
KyAgICB2b2lkIGNoZWNrRXJyb3JBbmRWaXNpdChBU1Q6OlVuc2lnbmVkSW50ZWdlckxpdGVyYWxU
eXBlJik7CisgICAgdm9pZCBjaGVja0Vycm9yQW5kVmlzaXQoQVNUOjpGbG9hdExpdGVyYWxUeXBl
Jik7CisgICAgdm9pZCBjaGVja0Vycm9yQW5kVmlzaXQoQVNUOjpOdWxsTGl0ZXJhbFR5cGUmKTsK
KyAgICB2b2lkIGNoZWNrRXJyb3JBbmRWaXNpdChBU1Q6OkNvbnN0YW50RXhwcmVzc2lvbkVudW1l
cmF0aW9uTWVtYmVyUmVmZXJlbmNlJik7CisgICAgdm9pZCBjaGVja0Vycm9yQW5kVmlzaXQoQVNU
OjpGdW5jdGlvbkF0dHJpYnV0ZSYpOworICAgIHZvaWQgY2hlY2tFcnJvckFuZFZpc2l0KEFTVDo6
TnVtVGhyZWFkc0Z1bmN0aW9uQXR0cmlidXRlJik7CisgICAgdm9pZCBjaGVja0Vycm9yQW5kVmlz
aXQoQVNUOjpCbG9jayYpOworICAgIHZvaWQgY2hlY2tFcnJvckFuZFZpc2l0KEFTVDo6U3RhdGVt
ZW50Jik7CisgICAgdm9pZCBjaGVja0Vycm9yQW5kVmlzaXQoQVNUOjpCcmVhayYpOworICAgIHZv
aWQgY2hlY2tFcnJvckFuZFZpc2l0KEFTVDo6Q29udGludWUmKTsKKyAgICB2b2lkIGNoZWNrRXJy
b3JBbmRWaXNpdChBU1Q6OkRvV2hpbGVMb29wJik7CisgICAgdm9pZCBjaGVja0Vycm9yQW5kVmlz
aXQoQVNUOjpFeHByZXNzaW9uJik7CisgICAgdm9pZCBjaGVja0Vycm9yQW5kVmlzaXQoQVNUOjpE
b3RFeHByZXNzaW9uJik7CisgICAgdm9pZCBjaGVja0Vycm9yQW5kVmlzaXQoQVNUOjpJbmRleEV4
cHJlc3Npb24mKTsKKyAgICB2b2lkIGNoZWNrRXJyb3JBbmRWaXNpdChBU1Q6OlByb3BlcnR5QWNj
ZXNzRXhwcmVzc2lvbiYpOworICAgIHZvaWQgY2hlY2tFcnJvckFuZFZpc2l0KEFTVDo6RWZmZWN0
ZnVsRXhwcmVzc2lvblN0YXRlbWVudCYpOworICAgIHZvaWQgY2hlY2tFcnJvckFuZFZpc2l0KEFT
VDo6RmFsbHRocm91Z2gmKTsKKyAgICB2b2lkIGNoZWNrRXJyb3JBbmRWaXNpdChBU1Q6OkZvckxv
b3AmKTsKKyAgICB2b2lkIGNoZWNrRXJyb3JBbmRWaXNpdChBU1Q6OklmU3RhdGVtZW50Jik7Cisg
ICAgdm9pZCBjaGVja0Vycm9yQW5kVmlzaXQoQVNUOjpSZXR1cm4mKTsKKyAgICB2b2lkIGNoZWNr
RXJyb3JBbmRWaXNpdChBU1Q6OlN3aXRjaENhc2UmKTsKKyAgICB2b2lkIGNoZWNrRXJyb3JBbmRW
aXNpdChBU1Q6OlN3aXRjaFN0YXRlbWVudCYpOworICAgIHZvaWQgY2hlY2tFcnJvckFuZFZpc2l0
KEFTVDo6VHJhcCYpOworICAgIHZvaWQgY2hlY2tFcnJvckFuZFZpc2l0KEFTVDo6VmFyaWFibGVE
ZWNsYXJhdGlvbnNTdGF0ZW1lbnQmKTsKKyAgICB2b2lkIGNoZWNrRXJyb3JBbmRWaXNpdChBU1Q6
OldoaWxlTG9vcCYpOworICAgIHZvaWQgY2hlY2tFcnJvckFuZFZpc2l0KEFTVDo6VmFyaWFibGVE
ZWNsYXJhdGlvbiYpOworICAgIHZvaWQgY2hlY2tFcnJvckFuZFZpc2l0KEFTVDo6QXNzaWdubWVu
dEV4cHJlc3Npb24mKTsKKyAgICB2b2lkIGNoZWNrRXJyb3JBbmRWaXNpdChBU1Q6OkNhbGxFeHBy
ZXNzaW9uJik7CisgICAgdm9pZCBjaGVja0Vycm9yQW5kVmlzaXQoQVNUOjpDb21tYUV4cHJlc3Np
b24mKTsKKyAgICB2b2lkIGNoZWNrRXJyb3JBbmRWaXNpdChBU1Q6OkRlcmVmZXJlbmNlRXhwcmVz
c2lvbiYpOworICAgIHZvaWQgY2hlY2tFcnJvckFuZFZpc2l0KEFTVDo6TG9naWNhbEV4cHJlc3Np
b24mKTsKKyAgICB2b2lkIGNoZWNrRXJyb3JBbmRWaXNpdChBU1Q6OkxvZ2ljYWxOb3RFeHByZXNz
aW9uJik7CisgICAgdm9pZCBjaGVja0Vycm9yQW5kVmlzaXQoQVNUOjpNYWtlQXJyYXlSZWZlcmVu
Y2VFeHByZXNzaW9uJik7CisgICAgdm9pZCBjaGVja0Vycm9yQW5kVmlzaXQoQVNUOjpNYWtlUG9p
bnRlckV4cHJlc3Npb24mKTsKKyAgICB2b2lkIGNoZWNrRXJyb3JBbmRWaXNpdChBU1Q6OlJlYWRN
b2RpZnlXcml0ZUV4cHJlc3Npb24mKTsKKyAgICB2b2lkIGNoZWNrRXJyb3JBbmRWaXNpdChBU1Q6
OlRlcm5hcnlFeHByZXNzaW9uJik7CisgICAgdm9pZCBjaGVja0Vycm9yQW5kVmlzaXQoQVNUOjpW
YXJpYWJsZVJlZmVyZW5jZSYpOworCisgICAgdm9pZCBzZXRFcnJvcigpCisgICAgeworICAgICAg
ICBBU1NFUlQoIW1fZXJyb3IpOworICAgICAgICBtX2Vycm9yID0gdHJ1ZTsKKyAgICB9CisKKyAg
ICBib29sIGVycm9yKCkgY29uc3QgeyByZXR1cm4gbV9lcnJvcjsgfQorCitwcml2YXRlOgorICAg
IGJvb2wgbV9lcnJvciB7IGZhbHNlIH07IC8vIEZJWE1FOiBNaWdyYXRlIHRoaXMgdG8gYmUgc29t
ZSBzb3J0IG9mIGRlc2NyaXB0aXZlIHN0cmluZy4KK307CisKK30KKworfQorCisjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291
cmNlcy50eHQKaW5kZXggNDkxNDgyYWFjNWFhNWE5M2U4ZTcyOGRmZjFhNjVmZWNiOWRlMzA2Ni4u
MjlmNGQxZDZmNjYyMWVmYWJkZGFlMjg4NTM3MGRkY2UxMDgwZGE4OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQK
QEAgLTMwOCw2ICszMDgsNyBAQCBNb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdl
YlNvY2tldENoYW5uZWwuY3BwCiBNb2R1bGVzL3dlYmdwdS9ET01XaW5kb3dXZWJHUFUuY3BwCiBN
b2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTExleGVyLmNwcAogTW9kdWxlcy93ZWJncHUvV0hMU0wv
V0hMU0xQYXJzZXIuY3BwCitNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFZpc2l0b3IuY3BwCiBN
b2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xUeXBlQXJndW1lbnQuY3BwCiBNb2R1bGVzL3dl
YmdwdS9XSExTTC9BU1QvV0hMU0xCdWlsdEluU2VtYW50aWMuY3BwCiBNb2R1bGVzL3dlYmdwdS9X
SExTTC9BU1QvV0hMU0xSZXNvdXJjZVNlbWFudGljLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGZmMzVhODg2ZTE1M2JmNGYx
ZTE3YzVjYzZkNjNmYTc2ZDUzZDEzNjYuLmYzOGEzZGMzMmU0N2ZjM2ZmYjNmZTcwNmU2Mzk3NzBh
YTJlMTkzNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKQEAgLTEzMzI1LDYgKzEzMzI1LDggQEAKIAkJQzIxQkY3NDUyMUNEOTY5ODAw
MjI3OTc5IC8qIFdITFNMU3RhbmRhcmRMaWJyYXJ5LnR4dCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXSExTTFN0YW5kYXJkTGli
cmFyeS50eHQ7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMyMURGMkU3MUQ5RTRFOTkw
MEY1QjI0QyAvKiBDU1NGb250VmFyaWF0aW9uVmFsdWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gQ1NTRm9udFZhcmlhdGlvblZhbHVlLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQzIxREYyRTgxRDlFNEU5OTAwRjVCMjRDIC8qIENTU0ZvbnRWYXJp
YXRpb25WYWx1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDU1NGb250VmFy
aWF0aW9uVmFsdWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzIzNEE5ODUyMUU4
ODZBOTAwM0M5ODREIC8qIFdITFNMVmlzaXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXSExT
TFZpc2l0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMjM0QTk4NzIxRTg4
NkFEMDAzQzk4NEQgLyogV0hMU0xWaXNpdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMVmlzaXRv
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMjQ1OEU2MTFGRTg5NzlFMDA1OTQ3
NTkgLyogRm9udENhY2hlQ29yZVRleHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRm9udENhY2hlQ29yZVRl
eHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzI2MDE3QTExQzcyREM5OTAwRjc0
QTE2IC8qIENTU0ZvbnRGYWNlU2V0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IENTU0ZvbnRGYWNlU2V0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QzI2MDE3QTIxQzcyREM5OTAwRjc0QTE2IC8qIENTU0ZvbnRGYWNlU2V0LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENTU0ZvbnRGYWNlU2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0yNTM5NCw2ICsyNTM5Niw4IEBACiAJCQkJQzIxQkY3MzgyMUNEOEEwMzAw
MjI3OTc5IC8qIFdITFNMUGFyc2VyLmggKi8sCiAJCQkJQzIxQkY3M0EyMUNEOEQ3MDAwMjI3OTc5
IC8qIFdITFNMUHJvZ3JhbS5oICovLAogCQkJCUMyMUJGNzQ1MjFDRDk2OTgwMDIyNzk3OSAvKiBX
SExTTFN0YW5kYXJkTGlicmFyeS50eHQgKi8sCisJCQkJQzIzNEE5ODUyMUU4ODZBOTAwM0M5ODRE
IC8qIFdITFNMVmlzaXRvci5jcHAgKi8sCisJCQkJQzIzNEE5ODcyMUU4ODZBRDAwM0M5ODREIC8q
IFdITFNMVmlzaXRvci5oICovLAogCQkJKTsKIAkJCXBhdGggPSBXSExTTDsKIAkJCXNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7Cg==
</data>
<flag name="review"
          id="375731"
          type_id="1"
          status="+"
          setter="dino"
    />
          </attachment>
      

    </bug>

</bugzilla>