<?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>195721</bug_id>
          
          <creation_ts>2019-03-13 18:12:54 -0700</creation_ts>
          <short_desc>DFG::AbstractValue::validateOSREntry is wrong when isHeapTop and the incoming value is Empty</short_desc>
          <delta_ts>2019-03-20 22:44:49 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Saam Barati">saam</reporter>
          <assigned_to name="Saam Barati">saam</assigned_to>
          <cc>benjamin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>gskachkov</cc>
    
    <cc>guijemont</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>rmorisset</cc>
    
    <cc>ticaiolima</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1516309</commentid>
    <comment_count>0</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-03-13 18:12:54 -0700</bug_when>
    <thetext>```
    bool validate(JSValue value) const
    {
        if (isHeapTop())
            return true;
```

However, JSValue() is not part of heap top, but would return true if asked to validate on an AbstractValue that isHeapTop().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1516312</commentid>
    <comment_count>1</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2019-03-13 18:24:39 -0700</bug_when>
    <thetext>(In reply to Saam Barati from comment #0)
&gt; ```
&gt;     bool validate(JSValue value) const
&gt;     {
&gt;         if (isHeapTop())
&gt;             return true;
&gt; ```
&gt; 
&gt; However, JSValue() is not part of heap top, but would return true if asked
&gt; to validate on an AbstractValue that isHeapTop().

JSValue() in AbstractValue means that the value is “any JSValue”. There is no way to reflect folding to JSValue() in abstract value.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1516327</commentid>
    <comment_count>2</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-03-13 18:48:58 -0700</bug_when>
    <thetext>(In reply to Filip Pizlo from comment #1)
&gt; (In reply to Saam Barati from comment #0)
&gt; &gt; ```
&gt; &gt;     bool validate(JSValue value) const
&gt; &gt;     {
&gt; &gt;         if (isHeapTop())
&gt; &gt;             return true;
&gt; &gt; ```
&gt; &gt; 
&gt; &gt; However, JSValue() is not part of heap top, but would return true if asked
&gt; &gt; to validate on an AbstractValue that isHeapTop().
&gt; 
&gt; JSValue() in AbstractValue means that the value is “any JSValue”. There is
&gt; no way to reflect folding to JSValue() in abstract value.

The scenario I&apos;m worried about is OSR entry.

Let&apos;s say that this AbstractValue has type SpecHeapTop (and top for all the other things too). Let&apos;s say we deleted a CheckTDZ because we saw the type is SpecHeapTop. Let&apos;s also say that we&apos;re now OSR entering with the TDZ value (JSValue()). I think that would lead to a bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1519219</commentid>
    <comment_count>3</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2019-03-20 15:00:48 -0700</bug_when>
    <thetext>(In reply to Saam Barati from comment #2)
&gt; (In reply to Filip Pizlo from comment #1)
&gt; &gt; (In reply to Saam Barati from comment #0)
&gt; &gt; &gt; ```
&gt; &gt; &gt;     bool validate(JSValue value) const
&gt; &gt; &gt;     {
&gt; &gt; &gt;         if (isHeapTop())
&gt; &gt; &gt;             return true;
&gt; &gt; &gt; ```
&gt; &gt; &gt; 
&gt; &gt; &gt; However, JSValue() is not part of heap top, but would return true if asked
&gt; &gt; &gt; to validate on an AbstractValue that isHeapTop().
&gt; &gt; 
&gt; &gt; JSValue() in AbstractValue means that the value is “any JSValue”. There is
&gt; &gt; no way to reflect folding to JSValue() in abstract value.
&gt; 
&gt; The scenario I&apos;m worried about is OSR entry.
&gt; 
&gt; Let&apos;s say that this AbstractValue has type SpecHeapTop (and top for all the
&gt; other things too). Let&apos;s say we deleted a CheckTDZ because we saw the type
&gt; is SpecHeapTop. Let&apos;s also say that we&apos;re now OSR entering with the TDZ
&gt; value (JSValue()). I think that would lead to a bug.

I&apos;m not saying that it wouldn&apos;t.  I&apos;m just saying that AbstractValue::m_value being JSValue() means &quot;top JSValue&quot;.

So if AbstractValue::m_value is empty, it doesn&apos;t mean JSValue().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1519275</commentid>
    <comment_count>4</comment_count>
      <attachid>365426</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-03-20 16:10:47 -0700</bug_when>
    <thetext>Created attachment 365426
WIP

Currently crashing in a lot of tests. I need to figure out why.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1519317</commentid>
    <comment_count>5</comment_count>
      <attachid>365437</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-03-20 16:48:52 -0700</bug_when>
    <thetext>Created attachment 365437
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1519320</commentid>
    <comment_count>6</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-03-20 16:51:33 -0700</bug_when>
    <thetext>Attachment 365437 did not pass style-queue:


ERROR: Source/JavaScriptCore/dfg/DFGStructureAbstractValue.h:235:  The parameter name &quot;structure&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/dfg/testdfg.cpp:30:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 2 in 11 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1519321</commentid>
    <comment_count>7</comment_count>
      <attachid>365439</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-03-20 16:51:35 -0700</bug_when>
    <thetext>Created attachment 365439
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1519329</commentid>
    <comment_count>8</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-03-20 16:55:16 -0700</bug_when>
    <thetext>Attachment 365439 did not pass style-queue:


ERROR: Source/JavaScriptCore/dfg/DFGStructureAbstractValue.h:235:  The parameter name &quot;structure&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/dfg/testdfg.cpp:30:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 2 in 11 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1519331</commentid>
    <comment_count>9</comment_count>
      <attachid>365439</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-03-20 16:58:39 -0700</bug_when>
    <thetext>Comment on attachment 365439
patch

r=me too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1519480</commentid>
    <comment_count>10</comment_count>
      <attachid>365439</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-03-20 22:43:14 -0700</bug_when>
    <thetext>Comment on attachment 365439
patch

Clearing flags on attachment: 365439

Committed r243278: &lt;https://trac.webkit.org/changeset/243278&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1519481</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-03-20 22:43:15 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1519483</commentid>
    <comment_count>12</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-03-20 22:44:49 -0700</bug_when>
    <thetext>&lt;rdar://problem/49095372&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>365426</attachid>
            <date>2019-03-20 16:10:47 -0700</date>
            <delta_ts>2019-03-20 16:48:52 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>c-backup.diff</filename>
            <type>text/plain</type>
            <size>22806</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjQzMjQxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMwIEBA
CisyMDE5LTAzLTIwICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAg
IERGRzo6QWJzdHJhY3RWYWx1ZTo6dmFsaWRhdGVPU1JFbnRyeSBpcyB3cm9uZyB3aGVuIGlzSGVh
cFRvcCBhbmQgdGhlIGluY29taW5nIHZhbHVlIGlzIEVtcHR5CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTU3MjEKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGVyZSB3YXMgYSBjaGVjayBpbiBBYnN0cmFj
dFZhbHVlOjp2YWxpZGF0ZU9TUkVudHJ5IHdoZXJlIGl0IGNoZWNrZWQKKyAgICAgICAgaWYgaXNI
ZWFwVG9wKCksIGFuZCBpZiBzbywganVzdCByZXR1cm5lZCB0cnVlLiBIb3dldmVyLCB0aGlzIGlz
IHdyb25nCisgICAgICAgIGlmIHRoZSB2YWx1ZSB3ZSdyZSBjaGVja2luZyBhZ2FpbnN0IGlzIHRo
ZSBlbXB0eSB2YWx1ZSwgc2luY2UgSGVhcFRvcAorICAgICAgICBkb2VzIG5vdCBpbmNsdWRlIHRo
ZSBFbXB0eSB2YWx1ZS4gSW5zdGVhZCwgdGhpcyBjaGVjayBzaG91bGQgYmUKKyAgICAgICAgaXNC
eXRlY29kZVRvcCgpLCB3aGljaCBkb2VzIGFjY291bnQgZm9yIHRoZSBlbXB0eSB2YWx1ZS4KKwor
ICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAg
ICAgICogYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaDoKKyAgICAgICAgKiBkZmcvREZHQWJzdHJh
Y3RWYWx1ZS5oOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0VmFsdWU6OmlzQnl0ZWNvZGVU
b3AgY29uc3QpOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0VmFsdWU6OnZhbGlkYXRlT1NS
RW50cnlWYWx1ZSBjb25zdCk6CisgICAgICAgICogZGZnL3Rlc3RkZmcuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKGhpZGRlblRydXRoQmVjYXVzZU5vUmV0dXJuSXNTdHVwaWQpOgorICAgICAgICAodXNh
Z2UpOgorICAgICAgICAoSlNDOjpERkc6OnRlc3RFbXB0eVZhbHVlRG9lc05vdFZhbGlkYXRlV2l0
aEhlYXBUb3ApOgorICAgICAgICAoSlNDOjpERkc6OnJ1bik6CisgICAgICAgIChydW4pOgorICAg
ICAgICAobWFpbik6CisgICAgICAgICogc2hlbGwvQ01ha2VMaXN0cy50eHQ6CisKIDIwMTktMDMt
MjAgIE1pY2hhZWwgU2Fib2ZmICA8bXNhYm9mZkBhcHBsZS5jb20+CiAKICAgICAgICAgSlNDIHRl
c3QgY3Jhc2g6IHN0cmVzcy9kb250LXN0cmVuZ3RoLXJlZHVjZS1yZWdleHAtd2l0aC1jb21waWxl
LWVycm9yLmpzLmRlZmF1bHQKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZp
c2lvbiAyNDMyMzgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNTksNiArNTksNyBAQAog
CQkJYnVpbGRQaGFzZXMgPSAoCiAJCQkpOwogCQkJZGVwZW5kZW5jaWVzID0gKAorCQkJCTUyQ0Qw
RjY2MjI0MkY1QTMwMDRBMThBNSAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICovLAogCQkJCTc5NTRC
RTBEMjBCNjMzNDgwMDlCQzgzQSAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICovLAogCQkJCUZFNTMz
Q0FGMUYyMTdFQzYwMDE2QTFGRSAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICovLAogCQkJCTBGNjE4
MzQ3MUM0NUY2N0EwMDcyNDUwQiAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICovLApAQCAtODg0LDYg
Kzg4NSw5IEBACiAJCTUyQjMxMTAxMTk3NUI0NjcwMDgwODU3QyAvKiBUeXBlTG9jYXRpb25DYWNo
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTJCMzEx
MDAxOTc1QjQ2NzAwODA4NTdDIC8qIFR5cGVMb2NhdGlvbkNhY2hlLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTJDMDYxMUYxQUE1MUUxQzAwQjRB
REJBIC8qIFJ1bnRpbWVUeXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MkMwNjExRDFBQTUxRTFCMDBCNEFEQkEgLyogUnVudGltZVR5cGUuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MkM5NTJCNzE5
QTI4OTg1MDA2OUIzODYgLyogVHlwZVByb2ZpbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MkM5NTJCNjE5QTI4OTg1MDA2OUIzODYgLyogVHlwZVBy
b2ZpbGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
KwkJNTJDRDBGNUQyMjQyRjU2OTAwNEExOEE1IC8qIEZvdW5kYXRpb24uZnJhbWV3b3JrIGluIEZy
YW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFGMEVCNjEwNUM4
NkM2QjAwRTZERjFCIC8qIEZvdW5kYXRpb24uZnJhbWV3b3JrICovOyB9OworCQk1MkNEMEY1RTIy
NDJGNTY5MDA0QTE4QTUgLyogSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrIGluIEZyYW1ld29ya3Mg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTMyRjVCRDkwODIyQTFDNzAwNzM2
OTc1IC8qIEphdmFTY3JpcHRDb3JlLmZyYW1ld29yayAqLzsgfTsKKwkJNTJDRDBGNjgyMjQyRjcx
QzAwNEExOEE1IC8qIHRlc3RkZmcuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTJDRDBGNjcyMjQyRjcxQzAwNEExOEE1IC8qIHRlc3RkZmcuY3BwICov
OyB9OwogCQk1MkQxMzA5MTIyMUNFMTc2MDA5QzgzNkMgLyogZm9vLmpzIGluIENvcHkgU3VwcG9y
dCBTY3JpcHQgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTJEMTMwOEYyMjFD
RTAzQTAwOUM4MzZDIC8qIGZvby5qcyAqLzsgfTsKIAkJNTJGNkMzNUUxRTcxRUIwODAwODFGNEND
IC8qIFdlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MkY2QzM1QzFFNzFFQjA4MDA4MUY0Q0MgLyogV2ViQXNz
ZW1ibHlXcmFwcGVyRnVuY3Rpb24uaCAqLzsgfTsKIAkJNTMwQTY2QjkxRkEzRTc4QjAwMjZBNTQ1
IC8qIFVuaWZpZWRTb3VyY2UzLW1tLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTMwQTY2QjExRkEzRTc3QTAwMjZBNTQ1IC8qIFVuaWZpZWRTb3VyY2Uz
LW1tLm1tICovOyB9OwpAQCAtMTkyMyw2ICsxOTI3LDEzIEBACiAJCQlyZW1vdGVHbG9iYWxJRFN0
cmluZyA9IDY1RkIzRjY2MDlEMTFFOTEwMEY0OURFQjsKIAkJCXJlbW90ZUluZm8gPSAiRGVyaXZl
ZCBTb3VyY2VzIjsKIAkJfTsKKwkJNTJDRDBGNjUyMjQyRjVBMzAwNEExOEE1IC8qIFBCWENvbnRh
aW5lckl0ZW1Qcm94eSAqLyA9IHsKKwkJCWlzYSA9IFBCWENvbnRhaW5lckl0ZW1Qcm94eTsKKwkJ
CWNvbnRhaW5lclBvcnRhbCA9IDA4NjdENjkwRkU4NDAyOEZDMDJBQUMwNyAvKiBQcm9qZWN0IG9i
amVjdCAqLzsKKwkJCXByb3h5VHlwZSA9IDE7CisJCQlyZW1vdGVHbG9iYWxJRFN0cmluZyA9IDUy
Q0QwRjU5MjI0MkY1NjkwMDRBMThBNTsKKwkJCXJlbW90ZUluZm8gPSB0ZXN0ZGZnOworCQl9Owog
CQk1M0I0QkQxMzFGNjhDMkFBMDBEMkJFQTMgLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovID0g
ewogCQkJaXNhID0gUEJYQ29udGFpbmVySXRlbVByb3h5OwogCQkJY29udGFpbmVyUG9ydGFsID0g
MDg2N0Q2OTBGRTg0MDI4RkMwMkFBQzA3IC8qIFByb2plY3Qgb2JqZWN0ICovOwpAQCAtMzM3OSw2
ICszMzkwLDggQEAKIAkJNTJDMDYxMUQxQUE1MUUxQjAwQjRBREJBIC8qIFJ1bnRpbWVUeXBlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJ1bnRpbWVUeXBlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUyQzk1MkI2MTlBMjg5ODUwMDY5QjM4NiAvKiBUeXBlUHJv
ZmlsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVHlwZVByb2ZpbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTUyQzk1MkI4MTlBMjhBMUMwMDY5QjM4NiAvKiBUeXBlUHJvZmlsZXIuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gVHlwZVByb2ZpbGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNTJDRDBGNjQyMjQyRjU2OTAwNEExOEE1IC8qIHRlc3RkZmcgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9ICJjb21waWxlZC5tYWNoLW8u
ZXhlY3V0YWJsZSI7IGluY2x1ZGVJbkluZGV4ID0gMDsgcGF0aCA9IHRlc3RkZmc7IHNvdXJjZVRy
ZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CisJCTUyQ0QwRjY3MjI0MkY3MUMwMDRBMThBNSAv
KiB0ZXN0ZGZnLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IHRlc3Rk
ZmcuY3BwOyBwYXRoID0gZGZnL3Rlc3RkZmcuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1MkQxMzA4RjIyMUNFMDNBMDA5QzgzNkMgLyogZm9vLmpzICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5qYXZhc2NyaXB0OyBwYXRoID0gZm9vLmpzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1MkY2QzM1QjFFNzFFQjA4MDA4MUY0Q0MgLyogV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rp
b24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gV2ViQXNzZW1ibHlX
cmFwcGVyRnVuY3Rpb24uY3BwOyBwYXRoID0ganMvV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24u
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MkY2QzM1QzFFNzFFQjA4MDA4MUY0
Q0MgLyogV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24uaDsgcGF0aCA9IGpzL1dlYkFz
c2VtYmx5V3JhcHBlckZ1bmN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00
OTk1LDYgKzUwMDgsMTUgQEAKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9j
ZXNzaW5nID0gMDsKIAkJfTsKKwkJNTJDRDBGNUMyMjQyRjU2OTAwNEExOEE1IC8qIEZyYW1ld29y
a3MgKi8gPSB7CisJCQlpc2EgPSBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0
aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJCQk1MkNEMEY1RDIyNDJGNTY5
MDA0QTE4QTUgLyogRm91bmRhdGlvbi5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLywKKwkJCQk1
MkNEMEY1RTIyNDJGNTY5MDA0QTE4QTUgLyogSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrIGluIEZy
YW1ld29ya3MgKi8sCisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2lu
ZyA9IDA7CisJCX07CiAJCTY1MTEyMkZDMTQwNDZBNEMwMDJCMTAxRCAvKiBGcmFtZXdvcmtzICov
ID0gewogCQkJaXNhID0gUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2U7CiAJCQlidWlsZEFjdGlvbk1h
c2sgPSAyMTQ3NDgzNjQ3OwpAQCAtNTA2Myw2ICs1MDg1LDcgQEAKIAkJCQk3OTI4MUJEQzIwQjYy
QjNFMDAyRTJBNjAgLyogdGVzdG1lbSAqLywKIAkJCQk2NTExMjMwNTE0MDQ2QTRDMDAyQjEwMUQg
LyogdGVzdFJlZ0V4cCAqLywKIAkJCQk5MzJGNUJEOTA4MjJBMUM3MDA3MzY5NzUgLyogSmF2YVNj
cmlwdENvcmUuZnJhbWV3b3JrICovLAorCQkJCTUyQ0QwRjY0MjI0MkY1NjkwMDRBMThBNSAvKiB0
ZXN0ZGZnICovLAogCQkJKTsKIAkJCW5hbWUgPSBQcm9kdWN0czsKIAkJCXNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7CkBAIC03NjQwLDYgKzc2NjMsNyBAQAogCQkJCTBGREIyQ0U1MTc0ODMwQTIwMDdC
M0MxQiAvKiBERkdXb3JrbGlzdC5jcHAgKi8sCiAJCQkJMEZEQjJDRTYxNzQ4MzBBMjAwN0IzQzFC
IC8qIERGR1dvcmtsaXN0LmggKi8sCiAJCQkJMEYxRkIzOTUxRTFBRjdERjAwQTlCRTUwIC8qIERG
R1dvcmtsaXN0SW5saW5lcy5oICovLAorCQkJCTUyQ0QwRjY3MjI0MkY3MUMwMDRBMThBNSAvKiB0
ZXN0ZGZnLmNwcCAqLywKIAkJCSk7CiAJCQluYW1lID0gZGZnOwogCQkJc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsKQEAgLTEwMDI4LDYgKzEwMDUyLDIyIEBACiAJCQlwcm9kdWN0UmVmZXJlbmNlID0g
MTRCRDY4OEUyMTUxOTEzMTAwNTBEQUZGIC8qIEpTQ0xMSW50U2V0dGluZ3NFeHRyYWN0b3IgKi87
CiAJCQlwcm9kdWN0VHlwZSA9ICJjb20uYXBwbGUucHJvZHVjdC10eXBlLnRvb2wiOwogCQl9Owor
CQk1MkNEMEY1OTIyNDJGNTY5MDA0QTE4QTUgLyogdGVzdGRmZyAqLyA9IHsKKwkJCWlzYSA9IFBC
WE5hdGl2ZVRhcmdldDsKKwkJCWJ1aWxkQ29uZmlndXJhdGlvbkxpc3QgPSA1MkNEMEY1RjIyNDJG
NTY5MDA0QTE4QTUgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVUYXJn
ZXQgInRlc3RkZmciICovOworCQkJYnVpbGRQaGFzZXMgPSAoCisJCQkJNTJDRDBGNUEyMjQyRjU2
OTAwNEExOEE1IC8qIFNvdXJjZXMgKi8sCisJCQkJNTJDRDBGNUMyMjQyRjU2OTAwNEExOEE1IC8q
IEZyYW1ld29ya3MgKi8sCisJCQkpOworCQkJYnVpbGRSdWxlcyA9ICgKKwkJCSk7CisJCQlkZXBl
bmRlbmNpZXMgPSAoCisJCQkpOworCQkJbmFtZSA9IHRlc3RkZmc7CisJCQlwcm9kdWN0TmFtZSA9
IHRlc3RhcGk7CisJCQlwcm9kdWN0UmVmZXJlbmNlID0gNTJDRDBGNjQyMjQyRjU2OTAwNEExOEE1
IC8qIHRlc3RkZmcgKi87CisJCQlwcm9kdWN0VHlwZSA9ICJjb20uYXBwbGUucHJvZHVjdC10eXBl
LnRvb2wiOworCQl9OwogCQk2NTExMjJGNzE0MDQ2QTRDMDAyQjEwMUQgLyogdGVzdFJlZ0V4cCAq
LyA9IHsKIAkJCWlzYSA9IFBCWE5hdGl2ZVRhcmdldDsKIAkJCWJ1aWxkQ29uZmlndXJhdGlvbkxp
c3QgPSA2NTExMjMwMDE0MDQ2QTRDMDAyQjEwMUQgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0
IGZvciBQQlhOYXRpdmVUYXJnZXQgInRlc3RSZWdFeHAiICovOwpAQCAtMTAxNzQsNiArMTAyMTQs
NyBAQAogCQkJCUZFNTMzQ0ExMUYyMTdEQjMwMDE2QTFGRSAvKiB0ZXN0bWFzbSAqLywKIAkJCQk3
OTI4MUJCRDIwQjYyQjNFMDAyRTJBNjAgLyogdGVzdG1lbSAqLywKIAkJCQk1MzI1QkRCRjIxREZG
MkIxMDBBMERFRTEgLyogQXBwbHkgQ29uZmlndXJhdGlvbiB0byBYQ0ZpbGVMaXN0cyAqLywKKwkJ
CQk1MkNEMEY1OTIyNDJGNTY5MDA0QTE4QTUgLyogdGVzdGRmZyAqLywKIAkJCSk7CiAJCX07CiAv
KiBFbmQgUEJYUHJvamVjdCBzZWN0aW9uICovCkBAIC0xMDU0Miw2ICsxMDU4MywxNCBAQAogCQkJ
KTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OworCQk1
MkNEMEY1QTIyNDJGNTY5MDA0QTE4QTUgLyogU291cmNlcyAqLyA9IHsKKwkJCWlzYSA9IFBCWFNv
dXJjZXNCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZp
bGVzID0gKAorCQkJCTUyQ0QwRjY4MjI0MkY3MUMwMDRBMThBNSAvKiB0ZXN0ZGZnLmNwcCBpbiBT
b3VyY2VzICovLAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Npbmcg
PSAwOworCQl9OwogCQk2NTExMjJGQTE0MDQ2QTRDMDAyQjEwMUQgLyogU291cmNlcyAqLyA9IHsK
IAkJCWlzYSA9IFBCWFNvdXJjZXNCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0
NzQ4MzY0NzsKQEAgLTEwNzkyLDYgKzEwODQxLDExIEBACiAJCQl0YXJnZXQgPSA2NUZCM0Y2NjA5
RDExRTkxMDBGNDlERUIgLyogRGVyaXZlZCBTb3VyY2VzICovOwogCQkJdGFyZ2V0UHJveHkgPSAx
NEQ5RDlEOTIxODQ2MkI1MDA5MTI2QzIgLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovOwogCQl9
OworCQk1MkNEMEY2NjIyNDJGNUEzMDA0QTE4QTUgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLyA9
IHsKKwkJCWlzYSA9IFBCWFRhcmdldERlcGVuZGVuY3k7CisJCQl0YXJnZXQgPSA1MkNEMEY1OTIy
NDJGNTY5MDA0QTE4QTUgLyogdGVzdGRmZyAqLzsKKwkJCXRhcmdldFByb3h5ID0gNTJDRDBGNjUy
MjQyRjVBMzAwNEExOEE1IC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAqLzsKKwkJfTsKIAkJNTNC
NEJEMTQxRjY4QzJBQTAwRDJCRUEzIC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8gPSB7CiAJCQlp
c2EgPSBQQlhUYXJnZXREZXBlbmRlbmN5OwogCQkJdGFyZ2V0ID0gNTNCNEJEMDQxRjY4QUY4OTAw
RDJCRUEzIC8qIEdlbmVyYXRlIFVuaWZpZWQgU291cmNlcyAqLzsKQEAgLTExMTk3LDYgKzExMjUx
LDM4IEBACiAJCQl9OwogCQkJbmFtZSA9IFByb2R1Y3Rpb247CiAJCX07CisJCTUyQ0QwRjYwMjI0
MkY1NjkwMDRBMThBNSAvKiBEZWJ1ZyAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0
aW9uOworCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2UgPSBCQzAyMUJGMjEzNjkwMEMzMDBG
QzU0NjcgLyogVG9vbEV4ZWN1dGFibGUueGNjb25maWcgKi87CisJCQlidWlsZFNldHRpbmdzID0g
eworCQkJCVBST0RVQ1RfTkFNRSA9ICIkKFRBUkdFVF9OQU1FKSI7CisJCQl9OworCQkJbmFtZSA9
IERlYnVnOworCQl9OworCQk1MkNEMEY2MTIyNDJGNTY5MDA0QTE4QTUgLyogUmVsZWFzZSAqLyA9
IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYmFzZUNvbmZpZ3VyYXRpb25S
ZWZlcmVuY2UgPSBCQzAyMUJGMjEzNjkwMEMzMDBGQzU0NjcgLyogVG9vbEV4ZWN1dGFibGUueGNj
b25maWcgKi87CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCVBST0RVQ1RfTkFNRSA9ICIkKFRB
UkdFVF9OQU1FKSI7CisJCQl9OworCQkJbmFtZSA9IFJlbGVhc2U7CisJCX07CisJCTUyQ0QwRjYy
MjI0MkY1NjkwMDRBMThBNSAvKiBQcm9maWxpbmcgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29u
ZmlndXJhdGlvbjsKKwkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gQkMwMjFCRjIxMzY5
MDBDMzAwRkM1NDY3IC8qIFRvb2xFeGVjdXRhYmxlLnhjY29uZmlnICovOworCQkJYnVpbGRTZXR0
aW5ncyA9IHsKKwkJCQlQUk9EVUNUX05BTUUgPSAiJChUQVJHRVRfTkFNRSkiOworCQkJfTsKKwkJ
CW5hbWUgPSBQcm9maWxpbmc7CisJCX07CisJCTUyQ0QwRjYzMjI0MkY1NjkwMDRBMThBNSAvKiBQ
cm9kdWN0aW9uICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQliYXNl
Q29uZmlndXJhdGlvblJlZmVyZW5jZSA9IEJDMDIxQkYyMTM2OTAwQzMwMEZDNTQ2NyAvKiBUb29s
RXhlY3V0YWJsZS54Y2NvbmZpZyAqLzsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJUFJPRFVD
VF9OQU1FID0gIiQoVEFSR0VUX05BTUUpIjsKKwkJCX07CisJCQluYW1lID0gUHJvZHVjdGlvbjsK
KwkJfTsKIAkJNTMyNUJEQzAyMURGRjJCMjAwQTBERUUxIC8qIERlYnVnICovID0gewogCQkJaXNh
ID0gWENCdWlsZENvbmZpZ3VyYXRpb247CiAJCQliYXNlQ29uZmlndXJhdGlvblJlZmVyZW5jZSA9
IDFDOTA1MTQzMEJBOUU4QTcwMDgxRTlEMCAvKiBKYXZhU2NyaXB0Q29yZS54Y2NvbmZpZyAqLzsK
QEAgLTExNjM4LDYgKzExNzI0LDE3IEBACiAJCQlkZWZhdWx0Q29uZmlndXJhdGlvbklzVmlzaWJs
ZSA9IDA7CiAJCQlkZWZhdWx0Q29uZmlndXJhdGlvbk5hbWUgPSBQcm9kdWN0aW9uOwogCQl9Owor
CQk1MkNEMEY1RjIyNDJGNTY5MDA0QTE4QTUgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZv
ciBQQlhOYXRpdmVUYXJnZXQgInRlc3RkZmciICovID0geworCQkJaXNhID0gWENDb25maWd1cmF0
aW9uTGlzdDsKKwkJCWJ1aWxkQ29uZmlndXJhdGlvbnMgPSAoCisJCQkJNTJDRDBGNjAyMjQyRjU2
OTAwNEExOEE1IC8qIERlYnVnICovLAorCQkJCTUyQ0QwRjYxMjI0MkY1NjkwMDRBMThBNSAvKiBS
ZWxlYXNlICovLAorCQkJCTUyQ0QwRjYyMjI0MkY1NjkwMDRBMThBNSAvKiBQcm9maWxpbmcgKi8s
CisJCQkJNTJDRDBGNjMyMjQyRjU2OTAwNEExOEE1IC8qIFByb2R1Y3Rpb24gKi8sCisJCQkpOwor
CQkJZGVmYXVsdENvbmZpZ3VyYXRpb25Jc1Zpc2libGUgPSAwOworCQkJZGVmYXVsdENvbmZpZ3Vy
YXRpb25OYW1lID0gUHJvZHVjdGlvbjsKKwkJfTsKIAkJNTMyNUJEQzQyMURGRjJCMjAwQTBERUUx
IC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYQWdncmVnYXRlVGFyZ2V0ICJBcHBs
eSBDb25maWd1cmF0aW9uIHRvIFhDRmlsZUxpc3RzIiAqLyA9IHsKIAkJCWlzYSA9IFhDQ29uZmln
dXJhdGlvbkxpc3Q7CiAJCQlidWlsZENvbmZpZ3VyYXRpb25zID0gKApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmgJKHJldmlzaW9uIDI0
MzIzOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC00ODIsNyArNDgyLDcgQEAgaW5saW5lIGJvb2wgc3BlY3VsYXRp
b25DaGVja2VkKFNwZWN1bGF0ZQogU3BlY3VsYXRlZFR5cGUgc3BlY3VsYXRpb25Gcm9tQ2xhc3NJ
bmZvKGNvbnN0IENsYXNzSW5mbyopOwogU3BlY3VsYXRlZFR5cGUgc3BlY3VsYXRpb25Gcm9tU3Ry
dWN0dXJlKFN0cnVjdHVyZSopOwogU3BlY3VsYXRlZFR5cGUgc3BlY3VsYXRpb25Gcm9tQ2VsbChK
U0NlbGwqKTsKLVNwZWN1bGF0ZWRUeXBlIHNwZWN1bGF0aW9uRnJvbVZhbHVlKEpTVmFsdWUpOwor
SlNfRVhQT1JUX1BSSVZBVEUgU3BlY3VsYXRlZFR5cGUgc3BlY3VsYXRpb25Gcm9tVmFsdWUoSlNW
YWx1ZSk7CiBTcGVjdWxhdGVkVHlwZSBzcGVjdWxhdGlvbkZyb21KU1R5cGUoSlNUeXBlKTsKIAog
U3BlY3VsYXRlZFR5cGUgc3BlY3VsYXRpb25Gcm9tVHlwZWRBcnJheVR5cGUoVHlwZWRBcnJheVR5
cGUpOyAvLyBvbmx5IHZhbGlkIGZvciB0eXBlZCB2aWV3cy4KSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQWJzdHJhY3RWYWx1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RWYWx1ZS5oCShyZXZpc2lvbiAyNDMyMzgpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0VmFsdWUuaAkod29ya2luZyBjb3B5
KQpAQCAtMTg4LDYgKzE4OCwxNCBAQCBzdHJ1Y3QgQWJzdHJhY3RWYWx1ZSB7CiAgICAgICAgICAg
ICAmJiBtX2FycmF5TW9kZXMgPT0gQUxMX0FSUkFZX01PREVTCiAgICAgICAgICAgICAmJiAhbV92
YWx1ZTsKICAgICB9CisKKyAgICBib29sIGlzQnl0ZWNvZGVUb3AoKSBjb25zdAorICAgIHsKKyAg
ICAgICAgcmV0dXJuIChtX3R5cGUgfCBTcGVjQnl0ZWNvZGVUb3ApID09IG1fdHlwZQorICAgICAg
ICAgICAgJiYgbV9zdHJ1Y3R1cmUuaXNUb3AoKQorICAgICAgICAgICAgJiYgbV9hcnJheU1vZGVz
ID09IEFMTF9BUlJBWV9NT0RFUworICAgICAgICAgICAgJiYgIW1fdmFsdWU7CisgICAgfQogICAg
IAogICAgIGJvb2wgdmFsdWVJc1RvcCgpIGNvbnN0CiAgICAgewpAQCAtMzcyLDcgKzM4MCw3IEBA
IHN0cnVjdCBBYnN0cmFjdFZhbHVlIHsKIAogICAgIGJvb2wgdmFsaWRhdGVPU1JFbnRyeVZhbHVl
KEpTVmFsdWUgdmFsdWUsIEZsdXNoRm9ybWF0IGZvcm1hdCkgY29uc3QKICAgICB7Ci0gICAgICAg
IGlmIChpc0hlYXBUb3AoKSkKKyAgICAgICAgaWYgKGlzQnl0ZWNvZGVUb3AoKSkKICAgICAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgICAgICAKICAgICAgICAgaWYgKCEhbV92YWx1ZSAmJiBtX3Zh
bHVlICE9IHZhbHVlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy90ZXN0ZGZnLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL3Rlc3RkZmcuY3BwCShu
b25leGlzdGVudCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvdGVzdGRmZy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSwxMTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiSlND
SlNWYWx1ZUlubGluZXMuaCIKKyNpbmNsdWRlICJERkdBYnN0cmFjdFZhbHVlLmgiCisjaW5jbHVk
ZSAiSW5pdGlhbGl6ZVRocmVhZGluZy5oIgorI2luY2x1ZGUgPHd0Zi9EYXRhTG9nLmg+CisKKy8v
IFdlIGRvbid0IGhhdmUgYSBOT19SRVRVUk5fRFVFX1RPX0VYSVQsIG5vciBzaG91bGQgd2UuIFRo
YXQncyByaWRpY3Vsb3VzLgorc3RhdGljIGJvb2wgaGlkZGVuVHJ1dGhCZWNhdXNlTm9SZXR1cm5J
c1N0dXBpZCgpIHsgcmV0dXJuIHRydWU7IH0KKworc3RhdGljIHZvaWQgdXNhZ2UoKQoreworICAg
IGRhdGFMb2coIlVzYWdlOiB0ZXN0ZGZnIFs8ZmlsdGVyPl1cbiIpOworICAgIGlmIChoaWRkZW5U
cnV0aEJlY2F1c2VOb1JldHVybklzU3R1cGlkKCkpCisgICAgICAgIGV4aXQoMSk7Cit9CisKKyNp
ZiBFTkFCTEUoREZHX0pJVCkKKwordXNpbmcgbmFtZXNwYWNlIEpTQzsKK3VzaW5nIG5hbWVzcGFj
ZSBKU0M6OkRGRzsKKworbmFtZXNwYWNlIHsKKworLy8gTm90aGluZyBmYW5jeSBmb3Igbm93OyB3
ZSBqdXN0IHVzZSB0aGUgZXhpc3RpbmcgV1RGIGFzc2VydGlvbiBtYWNoaW5lcnkuCisjZGVmaW5l
IENIRUNLKHgpIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaWYgKCEhKHgpKSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAg
YnJlYWs7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCisgICAgICAgIFdURlJlcG9ydEFzc2VydGlvbkZhaWx1cmUoX19GSUxFX18s
IF9fTElORV9fLCBXVEZfUFJFVFRZX0ZVTkNUSU9OLCAjeCk7IFwKKyAgICAgICAgQ1JBU0goKTsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAorICAgIH0gd2hpbGUgKGZhbHNlKQorCisKKyNkZWZpbmUgUlVOX05PVyh0ZXN0KSBk
byB7ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaWYgKCFzaG91bGRSdW4oI3Rlc3Qp
KSAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIGJyZWFrOyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKKyAgICAgICAgZGF0YUxvZygjdGVzdCAiLi4uXG4iKTsgICAgICAgICAg
XAorICAgICAgICB0ZXN0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAg
ICAgICBkYXRhTG9nKCN0ZXN0ICI6IE9LIVxuIik7ICAgICAgICBcCisgICAgfSB3aGlsZSAoZmFs
c2UpCisKK3N0YXRpYyB2b2lkIHRlc3RFbXB0eVZhbHVlRG9lc05vdFZhbGlkYXRlV2l0aEhlYXBU
b3AoKQoreworICAgIEFic3RyYWN0VmFsdWUgdmFsdWU7CisKKyAgICB2YWx1ZS5tYWtlSGVhcFRv
cCgpOworICAgIENIRUNLKCF2YWx1ZS52YWxpZGF0ZU9TUkVudHJ5VmFsdWUoSlNWYWx1ZSgpLCBG
bHVzaGVkSlNWYWx1ZSkpOworCisgICAgdmFsdWUubWFrZUJ5dGVjb2RlVG9wKCk7CisgICAgQ0hF
Q0sodmFsdWUudmFsaWRhdGVPU1JFbnRyeVZhbHVlKEpTVmFsdWUoKSwgRmx1c2hlZEpTVmFsdWUp
KTsKK30KKwordm9pZCBydW4oY29uc3QgY2hhciogZmlsdGVyKQoreworICAgIGF1dG8gc2hvdWxk
UnVuID0gWyZdIChjb25zdCBjaGFyKiB0ZXN0TmFtZSkgLT4gYm9vbCB7CisgICAgICAgIHJldHVy
biAhZmlsdGVyIHx8ICEhc3RyY2FzZXN0cih0ZXN0TmFtZSwgZmlsdGVyKTsKKyAgICB9OworCisg
ICAgUlVOX05PVyh0ZXN0RW1wdHlWYWx1ZURvZXNOb3RWYWxpZGF0ZVdpdGhIZWFwVG9wKCkpOwor
fQorCit9IC8vIGFub255bW91cyBuYW1lc3BhY2UKKworI2Vsc2UgLy8gRU5BQkxFKERGR19KSVQp
CisKK3N0YXRpYyB2b2lkIHJ1bihjb25zdCBjaGFyKikKK3sKKyAgICBkYXRhTG9nKCJERkcgSklU
IGlzIG5vdCBlbmFibGVkLlxuIik7Cit9CisKKyNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKKwor
aW50IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KQoreworICAgIGNvbnN0IGNoYXIqIGZpbHRl
ciA9IG51bGxwdHI7CisgICAgc3dpdGNoIChhcmdjKSB7CisgICAgY2FzZSAxOgorICAgICAgICBi
cmVhazsKKyAgICBjYXNlIDI6CisgICAgICAgIGZpbHRlciA9IGFyZ3ZbMV07CisgICAgICAgIGJy
ZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIHVzYWdlKCk7CisgICAgICAgIGJyZWFrOworICAg
IH0KKworICAgIEpTQzo6aW5pdGlhbGl6ZVRocmVhZGluZygpOworICAgIAorICAgIHJ1bihmaWx0
ZXIpOworCisgICAgcmV0dXJuIDA7Cit9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvc2hl
bGwvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3No
ZWxsL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAyNDMyMzgpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvc2hlbGwvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTY4LDYgKzY4LDEw
IEBAIHNldChURVNUQUlSX1NPVVJDRVMKICAgICAuLi9iMy9haXIvdGVzdGFpci5jcHAKICkKIAor
c2V0KFRFU1RERkdfU09VUkNFUworICAgIC4uL2RmZy90ZXN0ZGZnLmNwcAorKQorCiBpZiAoREVW
RUxPUEVSX01PREUgQU5EIE5PVCBXSU4zMikKICAgICBhZGRfZXhlY3V0YWJsZSh0ZXN0bWFzbSAk
e1RFU1RNQVNNX1NPVVJDRVN9KQogICAgIHRhcmdldF9saW5rX2xpYnJhcmllcyh0ZXN0bWFzbSAk
e0pTQ19MSUJSQVJJRVN9KQpAQCAtNzgsNiArODIsOSBAQCBpZiAoREVWRUxPUEVSX01PREUgQU5E
IE5PVCBXSU4zMikKICAgICBhZGRfZXhlY3V0YWJsZSh0ZXN0YWlyICR7VEVTVEFJUl9TT1VSQ0VT
fSkKICAgICB0YXJnZXRfbGlua19saWJyYXJpZXModGVzdGFpciAke0pTQ19MSUJSQVJJRVN9KQog
CisgICAgYWRkX2V4ZWN1dGFibGUodGVzdGRmZyAke1RFU1RERkdfU09VUkNFU30pCisgICAgdGFy
Z2V0X2xpbmtfbGlicmFyaWVzKHRlc3RkZmcgJHtKU0NfTElCUkFSSUVTfSkKKwogICAgIGFkZF9l
eGVjdXRhYmxlKHRlc3RhcGkgJHtURVNUQVBJX1NPVVJDRVN9KQogICAgIHRhcmdldF9saW5rX2xp
YnJhcmllcyh0ZXN0YXBpICR7SlNDX0xJQlJBUklFU30pCiBlbmRpZiAoKQpJbmRleDogVG9vbHMv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMjQzMjUw
KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTIgQEAKKzIw
MTktMDMtMjAgIFNhYW0gQmFyYXRpICA8c2JhcmF0aUBhcHBsZS5jb20+CisKKyAgICAgICAgREZH
OjpBYnN0cmFjdFZhbHVlOjp2YWxpZGF0ZU9TUkVudHJ5IGlzIHdyb25nIHdoZW4gaXNIZWFwVG9w
IGFuZCB0aGUgaW5jb21pbmcgdmFsdWUgaXMgRW1wdHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NTcyMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2NyaXB0cy9ydW4tamF2YXNjcmlwdGNvcmUtdGVz
dHM6CisKIDIwMTktMDMtMjAgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgogCiAg
ICAgICAgIFJFR1JFU1NJT04gKHIyNDMxNTMpOiBbaU9TXSBUZXN0V2ViS2l0QVBJLkZvY3VzUHJl
c2VydmF0aW9uVGVzdHMuQ2hhbmdpbmdGb2N1c2VkTm9kZVJlc2V0c0ZvY3VzUHJlc2VydmF0aW9u
U3RhdGUgaXMgZmFpbGluZwpJbmRleDogVG9vbHMvU2NyaXB0cy9ydW4tamF2YXNjcmlwdGNvcmUt
dGVzdHMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9ydW4tamF2YXNjcmlwdGNvcmUtdGVz
dHMJKHJldmlzaW9uIDI0MzIzOCkKKysrIFRvb2xzL1NjcmlwdHMvcnVuLWphdmFzY3JpcHRjb3Jl
LXRlc3RzCSh3b3JraW5nIGNvcHkpCkBAIC03MSw2ICs3MSw3IEBAIHVzZSBjb25zdGFudCB7CiBt
eSAkcnVuVGVzdE1hc20gPSBSVU5fSUZfTk9fVEVTVFNfU1BFQ0lGSUVEOwogbXkgJHJ1blRlc3RB
aXIgPSBSVU5fSUZfTk9fVEVTVFNfU1BFQ0lGSUVEOwogbXkgJHJ1blRlc3RCMyA9IFJVTl9JRl9O
T19URVNUU19TUEVDSUZJRUQ7CitteSAkcnVuVGVzdERGRyA9IFJVTl9JRl9OT19URVNUU19TUEVD
SUZJRUQ7CiBteSAkcnVuVGVzdEFQSSA9IFJVTl9JRl9OT19URVNUU19TUEVDSUZJRUQ7CiBteSAk
cnVuSlNDU3RyZXNzID0gUlVOX0lGX05PX1RFU1RTX1NQRUNJRklFRDsKIG15ICRydW5Nb3ppbGxh
VGVzdHMgPSBSVU5fSUZfTk9fVEVTVFNfU1BFQ0lGSUVEOwpAQCAtMTI4LDYgKzEyOSwxNyBAQCBp
ZiAoJEVOVntSVU5fSkFWQVNDUklQVENPUkVfVEVTVFNfVEVTVEIzCiAgICAgfQogfQogCitpZiAo
JEVOVntSVU5fSkFWQVNDUklQVENPUkVfVEVTVFNfVEVTVERGR30pIHsKKyAgICBpZiAoJEVOVntS
VU5fSkFWQVNDUklQVENPUkVfVEVTVFNfVEVTVERGR30gZXEgInRydWUiKSB7CisgICAgICAgICRy
dW5UZXN0REZHID0gRU5WX1ZBUl9TQVlTX0RPX1JVTjsKKyAgICB9IGVsc2lmICgkRU5We1JVTl9K
QVZBU0NSSVBUQ09SRV9URVNUU19URVNUREZHfSBlcSAiZmFsc2UiKSB7CisgICAgICAgICRydW5U
ZXN0REZHID0gRU5WX1ZBUl9TQVlTX0RPTlRfUlVOOworICAgIH0gZWxzZSB7CisgICAgICAgIHBy
aW50ICJEb24ndCByZWNvZ25pemUgdmFsdWUgZm9yIFJVTl9KQVZBU0NSSVBUQ09SRV9URVNUU19U
RVNUREZHIGVudmlyb25tZW50IHZhcmlhYmxlOiAnIgorICAgICAgICAgICAgLiAkRU5We1JVTl9K
QVZBU0NSSVBUQ09SRV9URVNUU19URVNUREZHfSAuICInLiBTaG91bGQgYmUgc2V0IHRvICd0cnVl
JyBvciAnZmFsc2UnLlxuIjsKKyAgICB9Cit9CisKIGlmICgkRU5We1JVTl9KQVZBU0NSSVBUQ09S
RV9URVNUU19URVNUQVBJfSkgewogICAgIGlmICgkRU5We1JVTl9KQVZBU0NSSVBUQ09SRV9URVNU
U19URVNUQVBJfSBlcSAidHJ1ZSIpIHsKICAgICAgICAgJHJ1blRlc3RBUEkgPSBFTlZfVkFSX1NB
WVNfRE9fUlVOOwpAQCAtMTgxLDYgKzE5Myw3IEBAIG15ICRidWlsZEpTQ0RlZmF1bHQgPSAkYnVp
bGRKU0MgPyAid2lsbCAKIG15ICR0ZXN0bWFzbURlZmF1bHQgPSBkZWZhdWx0U3RyaW5nRm9yVGVz
dFN0YXRlKCRydW5UZXN0TWFzbSk7CiBteSAkdGVzdGFpckRlZmF1bHQgPSBkZWZhdWx0U3RyaW5n
Rm9yVGVzdFN0YXRlKCRydW5UZXN0QWlyKTsKIG15ICR0ZXN0YjNEZWZhdWx0ID0gZGVmYXVsdFN0
cmluZ0ZvclRlc3RTdGF0ZSgkcnVuVGVzdEIzKTsKK215ICR0ZXN0REZHRGVmYXVsdCA9IGRlZmF1
bHRTdHJpbmdGb3JUZXN0U3RhdGUoJHJ1blRlc3RERkcpOwogbXkgJHRlc3RhcGlEZWZhdWx0ID0g
ZGVmYXVsdFN0cmluZ0ZvclRlc3RTdGF0ZSgkcnVuVGVzdEFQSSk7CiBteSAkanNjU3RyZXNzRGVm
YXVsdCA9IGRlZmF1bHRTdHJpbmdGb3JUZXN0U3RhdGUoJHJ1bkpTQ1N0cmVzcyk7CiBteSAkbW96
aWxsYVRlc3RzRGVmYXVsdCA9IGRlZmF1bHRTdHJpbmdGb3JUZXN0U3RhdGUoJHJ1bk1vemlsbGFU
ZXN0cyk7CkBAIC0xOTgsNiArMjExLDcgQEAgVXNhZ2U6ICRwcm9ncmFtTmFtZSBbb3B0aW9uc10g
W29wdGlvbnMgdAogICAtLVtuby1ddGVzdG1hc20gICAgICAgICAgICAgICBPbmx5IHJ1biAob3Ig
ZG9uJ3QgcnVuKSB0ZXN0bWFzbSAoZGVmYXVsdDogJHRlc3RtYXNtRGVmYXVsdCkKICAgLS1bbm8t
XXRlc3RhaXIgICAgICAgICAgICAgICAgT25seSBydW4gKG9yIGRvbid0IHJ1bikgdGVzdGFpciAo
ZGVmYXVsdDogJHRlc3RhaXJEZWZhdWx0KQogICAtLVtuby1ddGVzdGIzICAgICAgICAgICAgICAg
ICBPbmx5IHJ1biAob3IgZG9uJ3QgcnVuKSB0ZXN0YjMgKGRlZmF1bHQ6ICR0ZXN0YjNEZWZhdWx0
KQorICAtLVtuby1ddGVzdGRmZyAgICAgICAgICAgICAgICBPbmx5IHJ1biAob3IgZG9uJ3QgcnVu
KSB0ZXN0ZGZnIChkZWZhdWx0OiAkdGVzdERGR0RlZmF1bHQpCiAgIC0tW25vLV10ZXN0YXBpICAg
ICAgICAgICAgICAgIE9ubHkgcnVuIChvciBkb24ndCBydW4pIHRlc3RhcGkgKGRlZmF1bHQ6ICR0
ZXN0YXBpRGVmYXVsdCkKICAgLS1bbm8tXWpzYy1zdHJlc3MgICAgICAgICAgICAgT25seSBydW4g
KG9yIGRvbid0IHJ1bikgdGhlIEpTQyBzdHJlc3MgdGVzdHMgKGRlZmF1bHQ6ICRqc2NTdHJlc3NE
ZWZhdWx0KQogICAtLVtuby1dbW96aWxsYS10ZXN0cyAgICAgICAgICBPbmx5IHJ1biAob3IgZG9u
J3QgcnVuKSB0aGUgTW96aWxsYSB0ZXN0cyAoZGVmYXVsdDogJG1vemlsbGFUZXN0c0RlZmF1bHQp
CkBAIC0yMzgsNiArMjUyLDcgQEAgRW52aXJvbm1lbnQgVmFyaWFibGVzOgogICAtIHNldCBSVU5f
SkFWQVNDUklQVENPUkVfVEVTVFNfVEVTVE1BU00gdG8gInRydWUiIG9yICJmYWxzZSIgKG5vIHF1
b3RlcykgdG8gZGV0ZXJtaW5lIGlmIHdlIHJ1biB0ZXN0bWFzbSBieSBkZWZhdWx0LgogICAtIHNl
dCBSVU5fSkFWQVNDUklQVENPUkVfVEVTVFNfVEVTVEFJUiB0byAidHJ1ZSIgb3IgImZhbHNlIiAo
bm8gcXVvdGVzKSB0byBkZXRlcm1pbmUgaWYgd2UgcnVuIHRlc3RhaXIgYnkgZGVmYXVsdC4KICAg
LSBzZXQgUlVOX0pBVkFTQ1JJUFRDT1JFX1RFU1RTX1RFU1RCMyB0byAidHJ1ZSIgb3IgImZhbHNl
IiAobm8gcXVvdGVzKSB0byBkZXRlcm1pbmUgaWYgd2UgcnVuIHRlc3RiMyBieSBkZWZhdWx0Lgor
ICAtIHNldCBSVU5fSkFWQVNDUklQVENPUkVfVEVTVFNfVEVTVERGRyB0byAidHJ1ZSIgb3IgImZh
bHNlIiAobm8gcXVvdGVzKSB0byBkZXRlcm1pbmUgaWYgd2UgcnVuIHRlc3RkZmcgYnkgZGVmYXVs
dC4KICAgLSBzZXQgUlVOX0pBVkFTQ1JJUFRDT1JFX1RFU1RTX1RFU1RBUEkgdG8gInRydWUiIG9y
ICJmYWxzZSIgKG5vIHF1b3RlcykgdG8gZGV0ZXJtaW5lIGlmIHdlIHJ1biB0ZXN0YXBpIGJ5IGRl
ZmF1bHQuCiAgIC0gc2V0IFJVTl9KQVZBU0NSSVBUQ09SRV9URVNUU19CVUlMRCB0byAidHJ1ZSIg
b3IgImZhbHNlIiAobm8gcXVvdGVzKSB0byBzZXQgdGhlIHNob3VsZC13ZS1idWlsZC1iZWZvcmUt
cnVubmluZy10ZXN0cyBzZXR0aW5nLgogICAtIHNldCBSVU5fSkFWQVNDUklQVENPUkVfVEVTVFNf
RVhUUkFfVEVTVFMgdG8gdGhlIHBhdGggb2YgYSB5YW1sIGZpbGUgb3IgYSBkaXJlY3Rvcnkgb2Yg
SlMgZmlsZXMgdG8gYmUgcnVuIGFzIHBhcnQgb2YgcnVuLWphdmFzY3JpcHRjb3JlLXRlc3RzLgpA
QCAtMjU3LDYgKzI3Miw3IEBAIEdldE9wdGlvbnMoCiAgICAgJ3Rlc3RtYXNtIScgPT4gXCRydW5U
ZXN0TWFzbSwKICAgICAndGVzdGFpciEnID0+IFwkcnVuVGVzdEFpciwKICAgICAndGVzdGIzIScg
PT4gXCRydW5UZXN0QjMsCisgICAgJ3Rlc3RkZmchJyA9PiBcJHJ1blRlc3RERkcsCiAgICAgJ3Rl
c3RhcGkhJyA9PiBcJHJ1blRlc3RBUEksCiAgICAgJ2pzYy1zdHJlc3MhJyA9PiBcJHJ1bkpTQ1N0
cmVzcywKICAgICAnbW96aWxsYS10ZXN0cyEnID0+IFwkcnVuTW96aWxsYVRlc3RzLApAQCAtMjg3
LDYgKzMwMyw3IEBAIG15ICRzcGVjaWZpY1Rlc3RzU3BlY2lmaWVkID0gMDsKIGlmICgkcnVuVGVz
dE1hc20gPT0gRE9fUlVOCiAgICB8fCAkcnVuVGVzdEFpciA9PSBET19SVU4KICAgIHx8ICRydW5U
ZXN0QjMgPT0gRE9fUlVOCisgICB8fCAkcnVuVGVzdERGRyA9PSBET19SVU4KICAgIHx8ICRydW5U
ZXN0QVBJID09IERPX1JVTgogICAgfHwgJHJ1bkpTQ1N0cmVzcyA9PSBET19SVU4KICAgIHx8ICRy
dW5Nb3ppbGxhVGVzdHMgPT0gRE9fUlVOKSB7CkBAIC0zMDYsNiArMzIzLDcgQEAgc3ViIGVuYWJs
ZVRlc3RPck5vdCB7CiAkcnVuVGVzdE1hc20gPSBlbmFibGVUZXN0T3JOb3QoJHJ1blRlc3RNYXNt
KTsKICRydW5UZXN0QWlyID0gZW5hYmxlVGVzdE9yTm90KCRydW5UZXN0QWlyKTsKICRydW5UZXN0
QjMgPSBlbmFibGVUZXN0T3JOb3QoJHJ1blRlc3RCMyk7CiskcnVuVGVzdERGRyA9IGVuYWJsZVRl
c3RPck5vdCgkcnVuVGVzdERGRyk7CiAkcnVuVGVzdEFQSSA9IGVuYWJsZVRlc3RPck5vdCgkcnVu
VGVzdEFQSSk7CiAkcnVuSlNDU3RyZXNzID0gZW5hYmxlVGVzdE9yTm90KCRydW5KU0NTdHJlc3Mp
OwogJHJ1bk1vemlsbGFUZXN0cyA9IGVuYWJsZVRlc3RPck5vdCgkcnVuTW96aWxsYVRlc3RzKTsK
QEAgLTM5NCw2ICs0MTIsNyBAQCBzdWIgcnVuVGVzdCB7CiBpZiAoJHJ1blRlc3RNYXNtKSB7IHJ1
blRlc3QoInRlc3RtYXNtIiwgImFsbE1hc21UZXN0c1Bhc3NlZCIpIH0KIGlmICgkcnVuVGVzdEFp
cikgeyBydW5UZXN0KCJ0ZXN0YWlyIiwgImFsbEFpclRlc3RzUGFzc2VkIikgfQogaWYgKCRydW5U
ZXN0QjMpIHsgcnVuVGVzdCgidGVzdGIzIiwgImFsbEIzVGVzdHNQYXNzZWQiKSB9CitpZiAoJHJ1
blRlc3RERkcpIHsgcnVuVGVzdCgidGVzdGRmZyIsICJhbGxERkdUZXN0c1Bhc3NlZCIpIH0KIGlm
ICgkcnVuVGVzdEFQSSkgeyBydW5UZXN0KCJ0ZXN0YXBpIiwgImFsbEFwaVRlc3RzUGFzc2VkIikg
fQogCiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>365437</attachid>
            <date>2019-03-20 16:48:52 -0700</date>
            <delta_ts>2019-03-20 16:51:35 -0700</delta_ts>
            <desc>patch</desc>
            <filename>c-backup.diff</filename>
            <type>text/plain</type>
            <size>26612</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjQzMjQxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQwIEBA
CisyMDE5LTAzLTIwICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAg
IERGRzo6QWJzdHJhY3RWYWx1ZTo6dmFsaWRhdGVPU1JFbnRyeSBpcyB3cm9uZyB3aGVuIGlzSGVh
cFRvcCBhbmQgdGhlIGluY29taW5nIHZhbHVlIGlzIEVtcHR5CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTU3MjEKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGVyZSB3YXMgYSBjaGVjayBpbiBBYnN0cmFj
dFZhbHVlOjp2YWxpZGF0ZU9TUkVudHJ5IHdoZXJlIGl0IGNoZWNrZWQKKyAgICAgICAgaWYgaXNI
ZWFwVG9wKCksIGFuZCBpZiBzbywganVzdCByZXR1cm5lZCB0cnVlLiBIb3dldmVyLCB0aGlzIGlz
IHdyb25nCisgICAgICAgIGlmIHRoZSB2YWx1ZSB3ZSdyZSBjaGVja2luZyBhZ2FpbnN0IGlzIHRo
ZSBlbXB0eSB2YWx1ZSwgc2luY2UgSGVhcFRvcAorICAgICAgICBkb2VzIG5vdCBpbmNsdWRlIHRo
ZSBFbXB0eSB2YWx1ZS4gSW5zdGVhZCwgdGhpcyBjaGVjayBzaG91bGQgYmUKKyAgICAgICAgaXNC
eXRlY29kZVRvcCgpLCB3aGljaCBkb2VzIGFjY291bnQgZm9yIHRoZSBlbXB0eSB2YWx1ZS4KKyAg
ICAgICAgCisgICAgICAgIFRoaXMgcGF0Y2ggYWxzbyBkb2VzIGEgY291cGxlIG9mIG90aGVyIHRo
aW5nczoKKyAgICAgICAgLSBGb3Igb3VyIE9TUiBlbnRyeSBBYnN0cmFjdFZhbHVlcywgd2Ugd2Vy
ZSB1c2luZyBIZWFwVG9wIHRvIG1hcmsKKyAgICAgICAgIGEgZGVhZCB2YWx1ZS4gVGhhdCBpcyBu
b3cgY2hhbmdlZCB0byBCeXRlY29kZVRvcC4gKFRoZSBpZGVhIGhlcmUKKyAgICAgICAgIGlzIGp1
c3QgdG8gaGF2ZSB2YWxpZGF0ZU9TUkVudHJ5IHJldHVybiBlYXJseS4pCisgICAgICAgIC0gSXQg
d2Fzbid0IG9idmlvdXMgdG8gbWUgaG93IEkgY291bGQgbWFrZSB0aGlzIGZhaWwgaW4gSlMgY29k
ZS4KKyAgICAgICAgIFRoZSBzeW1wdG9tIHdlJ2QgZW5kIHVwIHNlZWluZyBpcyBzb21ldGhpbmcg
bGlrZSBhIG51bGxwdHIgZGVyZWZlcm5lY2UKKyAgICAgICAgIGZyb20gZm9yZ2V0dGluZyB0byBk
byBhIFREWiBjaGVjay4gSW5zdGVhZCwgSSd2ZSBhZGRlZCBhIHVuaXQgdGVzdC4KKyAgICAgICAg
IFRoaXMgdW5pdCB0ZXN0IGxpdmVzIGluIGEgbmV3IHRlc3QgZmlsZTogdGVzdGRmZy4gdGVzdGRm
ZyBpcyBzaW1pbGFyCisgICAgICAgICB0byB0ZXN0YjMvdGVzdGFpci90ZXN0YXBpLgorCisgICAg
ICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
KiBieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5oOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdFZh
bHVlLmg6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RWYWx1ZTo6aXNCeXRlY29kZVRvcCBj
b25zdCk6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RWYWx1ZTo6dmFsaWRhdGVPU1JFbnRy
eVZhbHVlIGNvbnN0KToKKyAgICAgICAgKiBkZmcvdGVzdGRmZy5jcHA6IEFkZGVkLgorICAgICAg
ICAoaGlkZGVuVHJ1dGhCZWNhdXNlTm9SZXR1cm5Jc1N0dXBpZCk6CisgICAgICAgICh1c2FnZSk6
CisgICAgICAgIChKU0M6OkRGRzo6dGVzdEVtcHR5VmFsdWVEb2VzTm90VmFsaWRhdGVXaXRoSGVh
cFRvcCk6CisgICAgICAgIChKU0M6OkRGRzo6cnVuKToKKyAgICAgICAgKHJ1bik6CisgICAgICAg
IChtYWluKToKKyAgICAgICAgKiBzaGVsbC9DTWFrZUxpc3RzLnR4dDoKKwogMjAxOS0wMy0yMCAg
TWljaGFlbCBTYWJvZmYgIDxtc2Fib2ZmQGFwcGxlLmNvbT4KIAogICAgICAgICBKU0MgdGVzdCBj
cmFzaDogc3RyZXNzL2RvbnQtc3RyZW5ndGgtcmVkdWNlLXJlZ2V4cC13aXRoLWNvbXBpbGUtZXJy
b3IuanMuZGVmYXVsdApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9u
IDI0MzIzOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC01OSw2ICs1OSw3IEBACiAJCQli
dWlsZFBoYXNlcyA9ICgKIAkJCSk7CiAJCQlkZXBlbmRlbmNpZXMgPSAoCisJCQkJNTJDRDBGNjYy
MjQyRjVBMzAwNEExOEE1IC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8sCiAJCQkJNzk1NEJFMEQy
MEI2MzM0ODAwOUJDODNBIC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8sCiAJCQkJRkU1MzNDQUYx
RjIxN0VDNjAwMTZBMUZFIC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8sCiAJCQkJMEY2MTgzNDcx
QzQ1RjY3QTAwNzI0NTBCIC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8sCkBAIC04ODQsNiArODg1
LDkgQEAKIAkJNTJCMzExMDExOTc1QjQ2NzAwODA4NTdDIC8qIFR5cGVMb2NhdGlvbkNhY2hlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MkIzMTEwMDE5
NzVCNDY3MDA4MDg1N0MgLyogVHlwZUxvY2F0aW9uQ2FjaGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MkMwNjExRjFBQTUxRTFDMDBCNEFEQkEg
LyogUnVudGltZVR5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUyQzA2MTFEMUFBNTFFMUIwMEI0QURCQSAvKiBSdW50aW1lVHlwZS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUyQzk1MkI3MTlBMjg5
ODUwMDY5QjM4NiAvKiBUeXBlUHJvZmlsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUyQzk1MkI2MTlBMjg5ODUwMDY5QjM4NiAvKiBUeXBlUHJvZmls
ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk1
MkNEMEY1RDIyNDJGNTY5MDA0QTE4QTUgLyogRm91bmRhdGlvbi5mcmFtZXdvcmsgaW4gRnJhbWV3
b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUYwRUI2MTA1Qzg2QzZC
MDBFNkRGMUIgLyogRm91bmRhdGlvbi5mcmFtZXdvcmsgKi87IH07CisJCTUyQ0QwRjVFMjI0MkY1
NjkwMDRBMThBNSAvKiBKYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzJGNUJEOTA4MjJBMUM3MDA3MzY5NzUg
LyogSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrICovOyB9OworCQk1MkNEMEY2ODIyNDJGNzFDMDA0
QTE4QTUgLyogdGVzdGRmZy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MkNEMEY2NzIyNDJGNzFDMDA0QTE4QTUgLyogdGVzdGRmZy5jcHAgKi87IH07
CiAJCTUyRDEzMDkxMjIxQ0UxNzYwMDlDODM2QyAvKiBmb28uanMgaW4gQ29weSBTdXBwb3J0IFNj
cmlwdCAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MkQxMzA4RjIyMUNFMDNB
MDA5QzgzNkMgLyogZm9vLmpzICovOyB9OwogCQk1MkY2QzM1RTFFNzFFQjA4MDA4MUY0Q0MgLyog
V2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUyRjZDMzVDMUU3MUVCMDgwMDgxRjRDQyAvKiBXZWJBc3NlbWJs
eVdyYXBwZXJGdW5jdGlvbi5oICovOyB9OwogCQk1MzBBNjZCOTFGQTNFNzhCMDAyNkE1NDUgLyog
VW5pZmllZFNvdXJjZTMtbW0ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MzBBNjZCMTFGQTNFNzdBMDAyNkE1NDUgLyogVW5pZmllZFNvdXJjZTMtbW0u
bW0gKi87IH07CkBAIC0xOTIzLDYgKzE5MjcsMTMgQEAKIAkJCXJlbW90ZUdsb2JhbElEU3RyaW5n
ID0gNjVGQjNGNjYwOUQxMUU5MTAwRjQ5REVCOwogCQkJcmVtb3RlSW5mbyA9ICJEZXJpdmVkIFNv
dXJjZXMiOwogCQl9OworCQk1MkNEMEY2NTIyNDJGNUEzMDA0QTE4QTUgLyogUEJYQ29udGFpbmVy
SXRlbVByb3h5ICovID0geworCQkJaXNhID0gUEJYQ29udGFpbmVySXRlbVByb3h5OworCQkJY29u
dGFpbmVyUG9ydGFsID0gMDg2N0Q2OTBGRTg0MDI4RkMwMkFBQzA3IC8qIFByb2plY3Qgb2JqZWN0
ICovOworCQkJcHJveHlUeXBlID0gMTsKKwkJCXJlbW90ZUdsb2JhbElEU3RyaW5nID0gNTJDRDBG
NTkyMjQyRjU2OTAwNEExOEE1OworCQkJcmVtb3RlSW5mbyA9IHRlc3RkZmc7CisJCX07CiAJCTUz
QjRCRDEzMUY2OEMyQUEwMEQyQkVBMyAvKiBQQlhDb250YWluZXJJdGVtUHJveHkgKi8gPSB7CiAJ
CQlpc2EgPSBQQlhDb250YWluZXJJdGVtUHJveHk7CiAJCQljb250YWluZXJQb3J0YWwgPSAwODY3
RDY5MEZFODQwMjhGQzAyQUFDMDcgLyogUHJvamVjdCBvYmplY3QgKi87CkBAIC0zMzc5LDYgKzMz
OTAsOCBAQAogCQk1MkMwNjExRDFBQTUxRTFCMDBCNEFEQkEgLyogUnVudGltZVR5cGUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUnVudGltZVR5cGUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNTJDOTUyQjYxOUEyODk4NTAwNjlCMzg2IC8qIFR5cGVQcm9maWxl
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBUeXBlUHJvZmlsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNTJDOTUyQjgxOUEyOEExQzAwNjlCMzg2IC8qIFR5cGVQcm9maWxlci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBUeXBlUHJvZmlsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk1MkNEMEY2NDIyNDJGNTY5MDA0QTE4QTUgLyogdGVzdGRmZyAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gImNvbXBpbGVkLm1hY2gtby5leGVj
dXRhYmxlIjsgaW5jbHVkZUluSW5kZXggPSAwOyBwYXRoID0gdGVzdGRmZzsgc291cmNlVHJlZSA9
IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKKwkJNTJDRDBGNjcyMjQyRjcxQzAwNEExOEE1IC8qIHRl
c3RkZmcuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gdGVzdGRmZy5j
cHA7IHBhdGggPSBkZmcvdGVzdGRmZy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTUyRDEzMDhGMjIxQ0UwM0EwMDlDODM2QyAvKiBmb28uanMgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmphdmFzY3JpcHQ7IHBhdGggPSBmb28uanM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTUyRjZDMzVCMUU3MUVCMDgwMDgxRjRDQyAvKiBXZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbi5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBXZWJBc3NlbWJseVdyYXBw
ZXJGdW5jdGlvbi5jcHA7IHBhdGggPSBqcy9XZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbi5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUyRjZDMzVDMUU3MUVCMDgwMDgxRjRDQyAv
KiBXZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBXZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbi5oOyBwYXRoID0ganMvV2ViQXNzZW1i
bHlXcmFwcGVyRnVuY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ5OTUs
NiArNTAwOCwxNSBAQAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Np
bmcgPSAwOwogCQl9OworCQk1MkNEMEY1QzIyNDJGNTY5MDA0QTE4QTUgLyogRnJhbWV3b3JrcyAq
LyA9IHsKKwkJCWlzYSA9IFBCWEZyYW1ld29ya3NCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25N
YXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJCTUyQ0QwRjVEMjI0MkY1NjkwMDRB
MThBNSAvKiBGb3VuZGF0aW9uLmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovLAorCQkJCTUyQ0Qw
RjVFMjI0MkY1NjkwMDRBMThBNSAvKiBKYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsgaW4gRnJhbWV3
b3JrcyAqLywKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0g
MDsKKwkJfTsKIAkJNjUxMTIyRkMxNDA0NkE0QzAwMkIxMDFEIC8qIEZyYW1ld29ya3MgKi8gPSB7
CiAJCQlpc2EgPSBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9
IDIxNDc0ODM2NDc7CkBAIC01MDYzLDYgKzUwODUsNyBAQAogCQkJCTc5MjgxQkRDMjBCNjJCM0Uw
MDJFMkE2MCAvKiB0ZXN0bWVtICovLAogCQkJCTY1MTEyMzA1MTQwNDZBNEMwMDJCMTAxRCAvKiB0
ZXN0UmVnRXhwICovLAogCQkJCTkzMkY1QkQ5MDgyMkExQzcwMDczNjk3NSAvKiBKYXZhU2NyaXB0
Q29yZS5mcmFtZXdvcmsgKi8sCisJCQkJNTJDRDBGNjQyMjQyRjU2OTAwNEExOEE1IC8qIHRlc3Rk
ZmcgKi8sCiAJCQkpOwogCQkJbmFtZSA9IFByb2R1Y3RzOwogCQkJc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsKQEAgLTc2NDAsNiArNzY2Myw3IEBACiAJCQkJMEZEQjJDRTUxNzQ4MzBBMjAwN0IzQzFC
IC8qIERGR1dvcmtsaXN0LmNwcCAqLywKIAkJCQkwRkRCMkNFNjE3NDgzMEEyMDA3QjNDMUIgLyog
REZHV29ya2xpc3QuaCAqLywKIAkJCQkwRjFGQjM5NTFFMUFGN0RGMDBBOUJFNTAgLyogREZHV29y
a2xpc3RJbmxpbmVzLmggKi8sCisJCQkJNTJDRDBGNjcyMjQyRjcxQzAwNEExOEE1IC8qIHRlc3Rk
ZmcuY3BwICovLAogCQkJKTsKIAkJCW5hbWUgPSBkZmc7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91
cD4iOwpAQCAtMTAwMjgsNiArMTAwNTIsMjIgQEAKIAkJCXByb2R1Y3RSZWZlcmVuY2UgPSAxNEJE
Njg4RTIxNTE5MTMxMDA1MERBRkYgLyogSlNDTExJbnRTZXR0aW5nc0V4dHJhY3RvciAqLzsKIAkJ
CXByb2R1Y3RUeXBlID0gImNvbS5hcHBsZS5wcm9kdWN0LXR5cGUudG9vbCI7CiAJCX07CisJCTUy
Q0QwRjU5MjI0MkY1NjkwMDRBMThBNSAvKiB0ZXN0ZGZnICovID0geworCQkJaXNhID0gUEJYTmF0
aXZlVGFyZ2V0OworCQkJYnVpbGRDb25maWd1cmF0aW9uTGlzdCA9IDUyQ0QwRjVGMjI0MkY1Njkw
MDRBMThBNSAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAi
dGVzdGRmZyIgKi87CisJCQlidWlsZFBoYXNlcyA9ICgKKwkJCQk1MkNEMEY1QTIyNDJGNTY5MDA0
QTE4QTUgLyogU291cmNlcyAqLywKKwkJCQk1MkNEMEY1QzIyNDJGNTY5MDA0QTE4QTUgLyogRnJh
bWV3b3JrcyAqLywKKwkJCSk7CisJCQlidWlsZFJ1bGVzID0gKAorCQkJKTsKKwkJCWRlcGVuZGVu
Y2llcyA9ICgKKwkJCSk7CisJCQluYW1lID0gdGVzdGRmZzsKKwkJCXByb2R1Y3ROYW1lID0gdGVz
dGFwaTsKKwkJCXByb2R1Y3RSZWZlcmVuY2UgPSA1MkNEMEY2NDIyNDJGNTY5MDA0QTE4QTUgLyog
dGVzdGRmZyAqLzsKKwkJCXByb2R1Y3RUeXBlID0gImNvbS5hcHBsZS5wcm9kdWN0LXR5cGUudG9v
bCI7CisJCX07CiAJCTY1MTEyMkY3MTQwNDZBNEMwMDJCMTAxRCAvKiB0ZXN0UmVnRXhwICovID0g
ewogCQkJaXNhID0gUEJYTmF0aXZlVGFyZ2V0OwogCQkJYnVpbGRDb25maWd1cmF0aW9uTGlzdCA9
IDY1MTEyMzAwMTQwNDZBNEMwMDJCMTAxRCAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9y
IFBCWE5hdGl2ZVRhcmdldCAidGVzdFJlZ0V4cCIgKi87CkBAIC0xMDE3NCw2ICsxMDIxNCw3IEBA
CiAJCQkJRkU1MzNDQTExRjIxN0RCMzAwMTZBMUZFIC8qIHRlc3RtYXNtICovLAogCQkJCTc5Mjgx
QkJEMjBCNjJCM0UwMDJFMkE2MCAvKiB0ZXN0bWVtICovLAogCQkJCTUzMjVCREJGMjFERkYyQjEw
MEEwREVFMSAvKiBBcHBseSBDb25maWd1cmF0aW9uIHRvIFhDRmlsZUxpc3RzICovLAorCQkJCTUy
Q0QwRjU5MjI0MkY1NjkwMDRBMThBNSAvKiB0ZXN0ZGZnICovLAogCQkJKTsKIAkJfTsKIC8qIEVu
ZCBQQlhQcm9qZWN0IHNlY3Rpb24gKi8KQEAgLTEwNTQyLDYgKzEwNTgzLDE0IEBACiAJCQkpOwog
CQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CisJCTUyQ0Qw
RjVBMjI0MkY1NjkwMDRBMThBNSAvKiBTb3VyY2VzICovID0geworCQkJaXNhID0gUEJYU291cmNl
c0J1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZmlsZXMg
PSAoCisJCQkJNTJDRDBGNjgyMjQyRjcxQzAwNEExOEE1IC8qIHRlc3RkZmcuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7
CisJCX07CiAJCTY1MTEyMkZBMTQwNDZBNEMwMDJCMTAxRCAvKiBTb3VyY2VzICovID0gewogCQkJ
aXNhID0gUEJYU291cmNlc0J1aWxkUGhhc2U7CiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgz
NjQ3OwpAQCAtMTA3OTIsNiArMTA4NDEsMTEgQEAKIAkJCXRhcmdldCA9IDY1RkIzRjY2MDlEMTFF
OTEwMEY0OURFQiAvKiBEZXJpdmVkIFNvdXJjZXMgKi87CiAJCQl0YXJnZXRQcm94eSA9IDE0RDlE
OUQ5MjE4NDYyQjUwMDkxMjZDMiAvKiBQQlhDb250YWluZXJJdGVtUHJveHkgKi87CiAJCX07CisJ
CTUyQ0QwRjY2MjI0MkY1QTMwMDRBMThBNSAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICovID0gewor
CQkJaXNhID0gUEJYVGFyZ2V0RGVwZW5kZW5jeTsKKwkJCXRhcmdldCA9IDUyQ0QwRjU5MjI0MkY1
NjkwMDRBMThBNSAvKiB0ZXN0ZGZnICovOworCQkJdGFyZ2V0UHJveHkgPSA1MkNEMEY2NTIyNDJG
NUEzMDA0QTE4QTUgLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovOworCQl9OwogCQk1M0I0QkQx
NDFGNjhDMkFBMDBEMkJFQTMgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLyA9IHsKIAkJCWlzYSA9
IFBCWFRhcmdldERlcGVuZGVuY3k7CiAJCQl0YXJnZXQgPSA1M0I0QkQwNDFGNjhBRjg5MDBEMkJF
QTMgLyogR2VuZXJhdGUgVW5pZmllZCBTb3VyY2VzICovOwpAQCAtMTExOTcsNiArMTEyNTEsMzgg
QEAKIAkJCX07CiAJCQluYW1lID0gUHJvZHVjdGlvbjsKIAkJfTsKKwkJNTJDRDBGNjAyMjQyRjU2
OTAwNEExOEE1IC8qIERlYnVnICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247
CisJCQliYXNlQ29uZmlndXJhdGlvblJlZmVyZW5jZSA9IEJDMDIxQkYyMTM2OTAwQzMwMEZDNTQ2
NyAvKiBUb29sRXhlY3V0YWJsZS54Y2NvbmZpZyAqLzsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJ
CQkJUFJPRFVDVF9OQU1FID0gIiQoVEFSR0VUX05BTUUpIjsKKwkJCX07CisJCQluYW1lID0gRGVi
dWc7CisJCX07CisJCTUyQ0QwRjYxMjI0MkY1NjkwMDRBMThBNSAvKiBSZWxlYXNlICovID0gewor
CQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQliYXNlQ29uZmlndXJhdGlvblJlZmVy
ZW5jZSA9IEJDMDIxQkYyMTM2OTAwQzMwMEZDNTQ2NyAvKiBUb29sRXhlY3V0YWJsZS54Y2NvbmZp
ZyAqLzsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJUFJPRFVDVF9OQU1FID0gIiQoVEFSR0VU
X05BTUUpIjsKKwkJCX07CisJCQluYW1lID0gUmVsZWFzZTsKKwkJfTsKKwkJNTJDRDBGNjIyMjQy
RjU2OTAwNEExOEE1IC8qIFByb2ZpbGluZyAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1
cmF0aW9uOworCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2UgPSBCQzAyMUJGMjEzNjkwMEMz
MDBGQzU0NjcgLyogVG9vbEV4ZWN1dGFibGUueGNjb25maWcgKi87CisJCQlidWlsZFNldHRpbmdz
ID0geworCQkJCVBST0RVQ1RfTkFNRSA9ICIkKFRBUkdFVF9OQU1FKSI7CisJCQl9OworCQkJbmFt
ZSA9IFByb2ZpbGluZzsKKwkJfTsKKwkJNTJDRDBGNjMyMjQyRjU2OTAwNEExOEE1IC8qIFByb2R1
Y3Rpb24gKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJhc2VDb25m
aWd1cmF0aW9uUmVmZXJlbmNlID0gQkMwMjFCRjIxMzY5MDBDMzAwRkM1NDY3IC8qIFRvb2xFeGVj
dXRhYmxlLnhjY29uZmlnICovOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlQUk9EVUNUX05B
TUUgPSAiJChUQVJHRVRfTkFNRSkiOworCQkJfTsKKwkJCW5hbWUgPSBQcm9kdWN0aW9uOworCQl9
OwogCQk1MzI1QkRDMDIxREZGMkIyMDBBMERFRTEgLyogRGVidWcgKi8gPSB7CiAJCQlpc2EgPSBY
Q0J1aWxkQ29uZmlndXJhdGlvbjsKIAkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gMUM5
MDUxNDMwQkE5RThBNzAwODFFOUQwIC8qIEphdmFTY3JpcHRDb3JlLnhjY29uZmlnICovOwpAQCAt
MTE2MzgsNiArMTE3MjQsMTcgQEAKIAkJCWRlZmF1bHRDb25maWd1cmF0aW9uSXNWaXNpYmxlID0g
MDsKIAkJCWRlZmF1bHRDb25maWd1cmF0aW9uTmFtZSA9IFByb2R1Y3Rpb247CiAJCX07CisJCTUy
Q0QwRjVGMjI0MkY1NjkwMDRBMThBNSAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBC
WE5hdGl2ZVRhcmdldCAidGVzdGRmZyIgKi8gPSB7CisJCQlpc2EgPSBYQ0NvbmZpZ3VyYXRpb25M
aXN0OworCQkJYnVpbGRDb25maWd1cmF0aW9ucyA9ICgKKwkJCQk1MkNEMEY2MDIyNDJGNTY5MDA0
QTE4QTUgLyogRGVidWcgKi8sCisJCQkJNTJDRDBGNjEyMjQyRjU2OTAwNEExOEE1IC8qIFJlbGVh
c2UgKi8sCisJCQkJNTJDRDBGNjIyMjQyRjU2OTAwNEExOEE1IC8qIFByb2ZpbGluZyAqLywKKwkJ
CQk1MkNEMEY2MzIyNDJGNTY5MDA0QTE4QTUgLyogUHJvZHVjdGlvbiAqLywKKwkJCSk7CisJCQlk
ZWZhdWx0Q29uZmlndXJhdGlvbklzVmlzaWJsZSA9IDA7CisJCQlkZWZhdWx0Q29uZmlndXJhdGlv
bk5hbWUgPSBQcm9kdWN0aW9uOworCQl9OwogCQk1MzI1QkRDNDIxREZGMkIyMDBBMERFRTEgLyog
QnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhBZ2dyZWdhdGVUYXJnZXQgIkFwcGx5IENv
bmZpZ3VyYXRpb24gdG8gWENGaWxlTGlzdHMiICovID0gewogCQkJaXNhID0gWENDb25maWd1cmF0
aW9uTGlzdDsKIAkJCWJ1aWxkQ29uZmlndXJhdGlvbnMgPSAoCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5UHJvZmlsZS5oCShyZXZpc2lvbiAyNDMyMzgpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTU4LDcgKzU4LDcgQEAgY29uc3QgQXJyYXlNb2RlcyBVaW50MzJBcnJheU1vZGUg
PSAxIDw8IAogY29uc3QgQXJyYXlNb2RlcyBGbG9hdDMyQXJyYXlNb2RlID0gMSA8PCAyODsKIGNv
bnN0IEFycmF5TW9kZXMgRmxvYXQ2NEFycmF5TW9kZSA9IDEgPDwgMjk7CiAKLWV4dGVybiBjb25z
dCBBcnJheU1vZGVzIHR5cGVkQXJyYXlNb2Rlc1tOdW1iZXJPZlR5cGVkQXJyYXlUeXBlc0V4Y2x1
ZGluZ0RhdGFWaWV3XTsKK0pTX0VYUE9SVF9QUklWQVRFIGV4dGVybiBjb25zdCBBcnJheU1vZGVz
IHR5cGVkQXJyYXlNb2Rlc1tOdW1iZXJPZlR5cGVkQXJyYXlUeXBlc0V4Y2x1ZGluZ0RhdGFWaWV3
XTsKIAogY29uc3RleHByIEFycmF5TW9kZXMgYXNBcnJheU1vZGVzSWdub3JpbmdUeXBlZEFycmF5
cyhJbmRleGluZ1R5cGUgaW5kZXhpbmdNb2RlKQogewpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmgJKHJldmlzaW9uIDI0MzIzOCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC00ODIsNyArNDgyLDcgQEAgaW5saW5lIGJvb2wgc3BlY3VsYXRpb25DaGVja2Vk
KFNwZWN1bGF0ZQogU3BlY3VsYXRlZFR5cGUgc3BlY3VsYXRpb25Gcm9tQ2xhc3NJbmZvKGNvbnN0
IENsYXNzSW5mbyopOwogU3BlY3VsYXRlZFR5cGUgc3BlY3VsYXRpb25Gcm9tU3RydWN0dXJlKFN0
cnVjdHVyZSopOwogU3BlY3VsYXRlZFR5cGUgc3BlY3VsYXRpb25Gcm9tQ2VsbChKU0NlbGwqKTsK
LVNwZWN1bGF0ZWRUeXBlIHNwZWN1bGF0aW9uRnJvbVZhbHVlKEpTVmFsdWUpOworSlNfRVhQT1JU
X1BSSVZBVEUgU3BlY3VsYXRlZFR5cGUgc3BlY3VsYXRpb25Gcm9tVmFsdWUoSlNWYWx1ZSk7CiBT
cGVjdWxhdGVkVHlwZSBzcGVjdWxhdGlvbkZyb21KU1R5cGUoSlNUeXBlKTsKIAogU3BlY3VsYXRl
ZFR5cGUgc3BlY3VsYXRpb25Gcm9tVHlwZWRBcnJheVR5cGUoVHlwZWRBcnJheVR5cGUpOyAvLyBv
bmx5IHZhbGlkIGZvciB0eXBlZCB2aWV3cy4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQWJzdHJhY3RWYWx1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQWJzdHJhY3RWYWx1ZS5oCShyZXZpc2lvbiAyNDMyMzgpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0VmFsdWUuaAkod29ya2luZyBjb3B5KQpAQCAtMTg4
LDYgKzE4OCwxNCBAQCBzdHJ1Y3QgQWJzdHJhY3RWYWx1ZSB7CiAgICAgICAgICAgICAmJiBtX2Fy
cmF5TW9kZXMgPT0gQUxMX0FSUkFZX01PREVTCiAgICAgICAgICAgICAmJiAhbV92YWx1ZTsKICAg
ICB9CisKKyAgICBib29sIGlzQnl0ZWNvZGVUb3AoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0
dXJuIChtX3R5cGUgfCBTcGVjQnl0ZWNvZGVUb3ApID09IG1fdHlwZQorICAgICAgICAgICAgJiYg
bV9zdHJ1Y3R1cmUuaXNUb3AoKQorICAgICAgICAgICAgJiYgbV9hcnJheU1vZGVzID09IEFMTF9B
UlJBWV9NT0RFUworICAgICAgICAgICAgJiYgIW1fdmFsdWU7CisgICAgfQogICAgIAogICAgIGJv
b2wgdmFsdWVJc1RvcCgpIGNvbnN0CiAgICAgewpAQCAtMzcyLDcgKzM4MCw3IEBAIHN0cnVjdCBB
YnN0cmFjdFZhbHVlIHsKIAogICAgIGJvb2wgdmFsaWRhdGVPU1JFbnRyeVZhbHVlKEpTVmFsdWUg
dmFsdWUsIEZsdXNoRm9ybWF0IGZvcm1hdCkgY29uc3QKICAgICB7Ci0gICAgICAgIGlmIChpc0hl
YXBUb3AoKSkKKyAgICAgICAgaWYgKGlzQnl0ZWNvZGVUb3AoKSkKICAgICAgICAgICAgIHJldHVy
biB0cnVlOwogICAgICAgICAKICAgICAgICAgaWYgKCEhbV92YWx1ZSAmJiBtX3ZhbHVlICE9IHZh
bHVlKQpAQCAtNDExLDcgKzQxOSw3IEBAIHN0cnVjdCBBYnN0cmFjdFZhbHVlIHsKICAgICB2b2lk
IGNoZWNrQ29uc2lzdGVuY3koKSBjb25zdCB7IH0KICAgICB2b2lkIGFzc2VydElzUmVnaXN0ZXJl
ZChHcmFwaCYpIGNvbnN0IHsgfQogI2Vsc2UKLSAgICB2b2lkIGNoZWNrQ29uc2lzdGVuY3koKSBj
b25zdDsKKyAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGNoZWNrQ29uc2lzdGVuY3koKSBjb25z
dDsKICAgICB2b2lkIGFzc2VydElzUmVnaXN0ZXJlZChHcmFwaCYpIGNvbnN0OwogI2VuZGlmCiAK
QEAgLTUzNiw3ICs1NDQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZmlsdGVyQXJyYXlNb2Rlc0J5
VHlwZSgpOwogCiAjaWYgVVNFKEpTVkFMVUU2NCkgJiYgIWRlZmluZWQoTkRFQlVHKQotICAgIHZv
aWQgZW5zdXJlQ2FuSW5pdGlhbGl6ZVdpdGhaZXJvcygpOworICAgIEpTX0VYUE9SVF9QUklWQVRF
IHZvaWQgZW5zdXJlQ2FuSW5pdGlhbGl6ZVdpdGhaZXJvcygpOwogI2VuZGlmCiAgICAgCiAgICAg
Ym9vbCBzaG91bGRCZUNsZWFyKCkgY29uc3Q7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0pJVENvbXBpbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAkocmV2aXNpb24gMjQzMjM4KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU4
NCwxMiArNTg0LDEyIEBAIHZvaWQgSklUQ29tcGlsZXI6Om5vdGljZU9TUkVudHJ5KEJhc2ljQmwK
ICAgICBmb3IgKHNpemVfdCBhcmd1bWVudCA9IDA7IGFyZ3VtZW50IDwgYmFzaWNCbG9jay52YXJp
YWJsZXNBdEhlYWQubnVtYmVyT2ZBcmd1bWVudHMoKTsgKythcmd1bWVudCkgewogICAgICAgICBO
b2RlKiBub2RlID0gYmFzaWNCbG9jay52YXJpYWJsZXNBdEhlYWQuYXJndW1lbnQoYXJndW1lbnQp
OwogICAgICAgICBpZiAoIW5vZGUgfHwgIW5vZGUtPnNob3VsZEdlbmVyYXRlKCkpCi0gICAgICAg
ICAgICBlbnRyeS0+bV9leHBlY3RlZFZhbHVlcy5hcmd1bWVudChhcmd1bWVudCkubWFrZUhlYXBU
b3AoKTsKKyAgICAgICAgICAgIGVudHJ5LT5tX2V4cGVjdGVkVmFsdWVzLmFyZ3VtZW50KGFyZ3Vt
ZW50KS5tYWtlQnl0ZWNvZGVUb3AoKTsKICAgICB9CiAgICAgZm9yIChzaXplX3QgbG9jYWwgPSAw
OyBsb2NhbCA8IGJhc2ljQmxvY2sudmFyaWFibGVzQXRIZWFkLm51bWJlck9mTG9jYWxzKCk7ICsr
bG9jYWwpIHsKICAgICAgICAgTm9kZSogbm9kZSA9IGJhc2ljQmxvY2sudmFyaWFibGVzQXRIZWFk
LmxvY2FsKGxvY2FsKTsKICAgICAgICAgaWYgKCFub2RlIHx8ICFub2RlLT5zaG91bGRHZW5lcmF0
ZSgpKQotICAgICAgICAgICAgZW50cnktPm1fZXhwZWN0ZWRWYWx1ZXMubG9jYWwobG9jYWwpLm1h
a2VIZWFwVG9wKCk7CisgICAgICAgICAgICBlbnRyeS0+bV9leHBlY3RlZFZhbHVlcy5sb2NhbChs
b2NhbCkubWFrZUJ5dGVjb2RlVG9wKCk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgVmFy
aWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJsZSA9IG5vZGUtPnZhcmlhYmxlQWNjZXNzRGF0YSgpOwog
ICAgICAgICAgICAgZW50cnktPm1fbWFjaGluZVN0YWNrVXNlZC5zZXQodmFyaWFibGUtPm1hY2hp
bmVMb2NhbCgpLnRvTG9jYWwoKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1N0cnVjdHVyZUFic3RyYWN0VmFsdWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1N0cnVjdHVyZUFic3RyYWN0VmFsdWUuaAkocmV2aXNpb24gMjQzMjM4KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTIzMiw3ICsyMzIsNyBAQCBwdWJsaWM6CiAgICAgLy8gY29udGFp
bnMoKSwgdHJ1ZSBmb3IgaXNTdWJzZXRPZigpLCBmYWxzZSBmb3IgaXNTdXBlcnNldE9mKCksIGFu
ZCBmYWxzZSBmb3Igb3ZlcmxhcHMoKS4KIAogICAgIGJvb2wgY29udGFpbnMoUmVnaXN0ZXJlZFN0
cnVjdHVyZSkgY29uc3Q7Ci0gICAgYm9vbCBjb250YWlucyhTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkg
Y29uc3Q7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBjb250YWlucyhTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSkgY29uc3Q7CiAgICAgCiAgICAgYm9vbCBpc1N1YnNldE9mKGNvbnN0IFJlZ2lzdGVy
ZWRTdHJ1Y3R1cmVTZXQmIG90aGVyKSBjb25zdDsKICAgICBib29sIGlzU3Vic2V0T2YoY29uc3Qg
U3RydWN0dXJlQWJzdHJhY3RWYWx1ZSYgb3RoZXIpIGNvbnN0OwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy90ZXN0ZGZnLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL3Rlc3RkZmcuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvdGVzdGRmZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMTkgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorCisjaW5jbHVkZSAiSGVhcENlbGxJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNDSlNW
YWx1ZUlubGluZXMuaCIKKy8vIFRoZXNlIGFyZSBuZWVkZWQgYmVmb3JlIERGR0Fic3RyYWN0VmFs
dWUuaAorI2luY2x1ZGUgIkRGR0Fic3RyYWN0VmFsdWUuaCIKKyNpbmNsdWRlICJJbml0aWFsaXpl
VGhyZWFkaW5nLmgiCisjaW5jbHVkZSA8d3RmL0RhdGFMb2cuaD4KKworLy8gV2UgZG9uJ3QgaGF2
ZSBhIE5PX1JFVFVSTl9EVUVfVE9fRVhJVCwgbm9yIHNob3VsZCB3ZS4gVGhhdCdzIHJpZGljdWxv
dXMuCitzdGF0aWMgYm9vbCBoaWRkZW5UcnV0aEJlY2F1c2VOb1JldHVybklzU3R1cGlkKCkgeyBy
ZXR1cm4gdHJ1ZTsgfQorCitzdGF0aWMgdm9pZCB1c2FnZSgpCit7CisgICAgZGF0YUxvZygiVXNh
Z2U6IHRlc3RkZmcgWzxmaWx0ZXI+XVxuIik7CisgICAgaWYgKGhpZGRlblRydXRoQmVjYXVzZU5v
UmV0dXJuSXNTdHVwaWQoKSkKKyAgICAgICAgZXhpdCgxKTsKK30KKworI2lmIEVOQUJMRShERkdf
SklUKQorCit1c2luZyBuYW1lc3BhY2UgSlNDOwordXNpbmcgbmFtZXNwYWNlIEpTQzo6REZHOwor
CituYW1lc3BhY2UgeworCisvLyBOb3RoaW5nIGZhbmN5IGZvciBub3c7IHdlIGp1c3QgdXNlIHRo
ZSBleGlzdGluZyBXVEYgYXNzZXJ0aW9uIG1hY2hpbmVyeS4KKyNkZWZpbmUgQ0hFQ0soeCkgZG8g
eyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAorICAgICAgICBpZiAoISEoeCkpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBicmVhazsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
KyAgICAgICAgV1RGUmVwb3J0QXNzZXJ0aW9uRmFpbHVyZShfX0ZJTEVfXywgX19MSU5FX18sIFdU
Rl9QUkVUVFlfRlVOQ1RJT04sICN4KTsgXAorICAgICAgICBDUkFTSCgpOyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAg
fSB3aGlsZSAoZmFsc2UpCisKKworI2RlZmluZSBSVU5fTk9XKHRlc3QpIGRvIHsgICAgICAgICAg
ICAgICAgICAgICAgXAorICAgICAgICBpZiAoIXNob3VsZFJ1bigjdGVzdCkpICAgICAgICAgICAg
ICAgICAgXAorICAgICAgICAgICAgYnJlYWs7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAorICAgICAgICBkYXRhTG9nKCN0ZXN0ICIuLi5cbiIpOyAgICAgICAgICBcCisgICAgICAgIHRl
c3Q7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGRhdGFMb2co
I3Rlc3QgIjogT0shXG4iKTsgICAgICAgIFwKKyAgICB9IHdoaWxlIChmYWxzZSkKKworc3RhdGlj
IHZvaWQgdGVzdEVtcHR5VmFsdWVEb2VzTm90VmFsaWRhdGVXaXRoSGVhcFRvcCgpCit7CisgICAg
QWJzdHJhY3RWYWx1ZSB2YWx1ZTsKKworICAgIHZhbHVlLm1ha2VIZWFwVG9wKCk7CisgICAgQ0hF
Q0soIXZhbHVlLnZhbGlkYXRlT1NSRW50cnlWYWx1ZShKU1ZhbHVlKCksIEZsdXNoZWRKU1ZhbHVl
KSk7CisKKyAgICB2YWx1ZS5tYWtlQnl0ZWNvZGVUb3AoKTsKKyAgICBDSEVDSyh2YWx1ZS52YWxp
ZGF0ZU9TUkVudHJ5VmFsdWUoSlNWYWx1ZSgpLCBGbHVzaGVkSlNWYWx1ZSkpOworfQorCit2b2lk
IHJ1bihjb25zdCBjaGFyKiBmaWx0ZXIpCit7CisgICAgYXV0byBzaG91bGRSdW4gPSBbJl0gKGNv
bnN0IGNoYXIqIHRlc3ROYW1lKSAtPiBib29sIHsKKyAgICAgICAgcmV0dXJuICFmaWx0ZXIgfHwg
ISFzdHJjYXNlc3RyKHRlc3ROYW1lLCBmaWx0ZXIpOworICAgIH07CisKKyAgICBSVU5fTk9XKHRl
c3RFbXB0eVZhbHVlRG9lc05vdFZhbGlkYXRlV2l0aEhlYXBUb3AoKSk7Cit9CisKK30gLy8gYW5v
bnltb3VzIG5hbWVzcGFjZQorCisjZWxzZSAvLyBFTkFCTEUoREZHX0pJVCkKKworc3RhdGljIHZv
aWQgcnVuKGNvbnN0IGNoYXIqKQoreworICAgIGRhdGFMb2coIkRGRyBKSVQgaXMgbm90IGVuYWJs
ZWQuXG4iKTsKK30KKworI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQorCitpbnQgbWFpbihpbnQg
YXJnYywgY2hhcioqIGFyZ3YpCit7CisgICAgY29uc3QgY2hhciogZmlsdGVyID0gbnVsbHB0cjsK
KyAgICBzd2l0Y2ggKGFyZ2MpIHsKKyAgICBjYXNlIDE6CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgMjoKKyAgICAgICAgZmlsdGVyID0gYXJndlsxXTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVm
YXVsdDoKKyAgICAgICAgdXNhZ2UoKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgSlND
Ojppbml0aWFsaXplVGhyZWFkaW5nKCk7CisgICAgCisgICAgcnVuKGZpbHRlcik7CisKKyAgICBy
ZXR1cm4gMDsKK30KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9zaGVsbC9DTWFrZUxpc3Rz
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvc2hlbGwvQ01ha2VMaXN0
cy50eHQJKHJldmlzaW9uIDI0MzIzOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9zaGVsbC9D
TWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNjgsNiArNjgsMTAgQEAgc2V0KFRFU1RB
SVJfU09VUkNFUwogICAgIC4uL2IzL2Fpci90ZXN0YWlyLmNwcAogKQogCitzZXQoVEVTVERGR19T
T1VSQ0VTCisgICAgLi4vZGZnL3Rlc3RkZmcuY3BwCispCisKIGlmIChERVZFTE9QRVJfTU9ERSBB
TkQgTk9UIFdJTjMyKQogICAgIGFkZF9leGVjdXRhYmxlKHRlc3RtYXNtICR7VEVTVE1BU01fU09V
UkNFU30pCiAgICAgdGFyZ2V0X2xpbmtfbGlicmFyaWVzKHRlc3RtYXNtICR7SlNDX0xJQlJBUklF
U30pCkBAIC03OCw2ICs4Miw5IEBAIGlmIChERVZFTE9QRVJfTU9ERSBBTkQgTk9UIFdJTjMyKQog
ICAgIGFkZF9leGVjdXRhYmxlKHRlc3RhaXIgJHtURVNUQUlSX1NPVVJDRVN9KQogICAgIHRhcmdl
dF9saW5rX2xpYnJhcmllcyh0ZXN0YWlyICR7SlNDX0xJQlJBUklFU30pCiAKKyAgICBhZGRfZXhl
Y3V0YWJsZSh0ZXN0ZGZnICR7VEVTVERGR19TT1VSQ0VTfSkKKyAgICB0YXJnZXRfbGlua19saWJy
YXJpZXModGVzdGRmZyAke0pTQ19MSUJSQVJJRVN9KQorCiAgICAgYWRkX2V4ZWN1dGFibGUodGVz
dGFwaSAke1RFU1RBUElfU09VUkNFU30pCiAgICAgdGFyZ2V0X2xpbmtfbGlicmFyaWVzKHRlc3Rh
cGkgJHtKU0NfTElCUkFSSUVTfSkKIGVuZGlmICgpCkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNDMyNTApCisrKyBUb29scy9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMiBAQAorMjAxOS0wMy0yMCAgU2Fh
bSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KKworICAgICAgICBERkc6OkFic3RyYWN0VmFs
dWU6OnZhbGlkYXRlT1NSRW50cnkgaXMgd3Jvbmcgd2hlbiBpc0hlYXBUb3AgYW5kIHRoZSBpbmNv
bWluZyB2YWx1ZSBpcyBFbXB0eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTk1NzIxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBTY3JpcHRzL3J1bi1qYXZhc2NyaXB0Y29yZS10ZXN0czoKKwogMjAxOS0w
My0yMCAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVT
U0lPTiAocjI0MzE1Myk6IFtpT1NdIFRlc3RXZWJLaXRBUEkuRm9jdXNQcmVzZXJ2YXRpb25UZXN0
cy5DaGFuZ2luZ0ZvY3VzZWROb2RlUmVzZXRzRm9jdXNQcmVzZXJ2YXRpb25TdGF0ZSBpcyBmYWls
aW5nCkluZGV4OiBUb29scy9TY3JpcHRzL3J1bi1qYXZhc2NyaXB0Y29yZS10ZXN0cwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9TY3JpcHRzL3J1bi1qYXZhc2NyaXB0Y29yZS10ZXN0cwkocmV2aXNpb24g
MjQzMjM4KQorKysgVG9vbHMvU2NyaXB0cy9ydW4tamF2YXNjcmlwdGNvcmUtdGVzdHMJKHdvcmtp
bmcgY29weSkKQEAgLTcxLDYgKzcxLDcgQEAgdXNlIGNvbnN0YW50IHsKIG15ICRydW5UZXN0TWFz
bSA9IFJVTl9JRl9OT19URVNUU19TUEVDSUZJRUQ7CiBteSAkcnVuVGVzdEFpciA9IFJVTl9JRl9O
T19URVNUU19TUEVDSUZJRUQ7CiBteSAkcnVuVGVzdEIzID0gUlVOX0lGX05PX1RFU1RTX1NQRUNJ
RklFRDsKK215ICRydW5UZXN0REZHID0gUlVOX0lGX05PX1RFU1RTX1NQRUNJRklFRDsKIG15ICRy
dW5UZXN0QVBJID0gUlVOX0lGX05PX1RFU1RTX1NQRUNJRklFRDsKIG15ICRydW5KU0NTdHJlc3Mg
PSBSVU5fSUZfTk9fVEVTVFNfU1BFQ0lGSUVEOwogbXkgJHJ1bk1vemlsbGFUZXN0cyA9IFJVTl9J
Rl9OT19URVNUU19TUEVDSUZJRUQ7CkBAIC0xMjgsNiArMTI5LDE3IEBAIGlmICgkRU5We1JVTl9K
QVZBU0NSSVBUQ09SRV9URVNUU19URVNUQjMKICAgICB9CiB9CiAKK2lmICgkRU5We1JVTl9KQVZB
U0NSSVBUQ09SRV9URVNUU19URVNUREZHfSkgeworICAgIGlmICgkRU5We1JVTl9KQVZBU0NSSVBU
Q09SRV9URVNUU19URVNUREZHfSBlcSAidHJ1ZSIpIHsKKyAgICAgICAgJHJ1blRlc3RERkcgPSBF
TlZfVkFSX1NBWVNfRE9fUlVOOworICAgIH0gZWxzaWYgKCRFTlZ7UlVOX0pBVkFTQ1JJUFRDT1JF
X1RFU1RTX1RFU1RERkd9IGVxICJmYWxzZSIpIHsKKyAgICAgICAgJHJ1blRlc3RERkcgPSBFTlZf
VkFSX1NBWVNfRE9OVF9SVU47CisgICAgfSBlbHNlIHsKKyAgICAgICAgcHJpbnQgIkRvbid0IHJl
Y29nbml6ZSB2YWx1ZSBmb3IgUlVOX0pBVkFTQ1JJUFRDT1JFX1RFU1RTX1RFU1RERkcgZW52aXJv
bm1lbnQgdmFyaWFibGU6ICciCisgICAgICAgICAgICAuICRFTlZ7UlVOX0pBVkFTQ1JJUFRDT1JF
X1RFU1RTX1RFU1RERkd9IC4gIicuIFNob3VsZCBiZSBzZXQgdG8gJ3RydWUnIG9yICdmYWxzZScu
XG4iOworICAgIH0KK30KKwogaWYgKCRFTlZ7UlVOX0pBVkFTQ1JJUFRDT1JFX1RFU1RTX1RFU1RB
UEl9KSB7CiAgICAgaWYgKCRFTlZ7UlVOX0pBVkFTQ1JJUFRDT1JFX1RFU1RTX1RFU1RBUEl9IGVx
ICJ0cnVlIikgewogICAgICAgICAkcnVuVGVzdEFQSSA9IEVOVl9WQVJfU0FZU19ET19SVU47CkBA
IC0xODEsNiArMTkzLDcgQEAgbXkgJGJ1aWxkSlNDRGVmYXVsdCA9ICRidWlsZEpTQyA/ICJ3aWxs
IAogbXkgJHRlc3RtYXNtRGVmYXVsdCA9IGRlZmF1bHRTdHJpbmdGb3JUZXN0U3RhdGUoJHJ1blRl
c3RNYXNtKTsKIG15ICR0ZXN0YWlyRGVmYXVsdCA9IGRlZmF1bHRTdHJpbmdGb3JUZXN0U3RhdGUo
JHJ1blRlc3RBaXIpOwogbXkgJHRlc3RiM0RlZmF1bHQgPSBkZWZhdWx0U3RyaW5nRm9yVGVzdFN0
YXRlKCRydW5UZXN0QjMpOworbXkgJHRlc3RERkdEZWZhdWx0ID0gZGVmYXVsdFN0cmluZ0ZvclRl
c3RTdGF0ZSgkcnVuVGVzdERGRyk7CiBteSAkdGVzdGFwaURlZmF1bHQgPSBkZWZhdWx0U3RyaW5n
Rm9yVGVzdFN0YXRlKCRydW5UZXN0QVBJKTsKIG15ICRqc2NTdHJlc3NEZWZhdWx0ID0gZGVmYXVs
dFN0cmluZ0ZvclRlc3RTdGF0ZSgkcnVuSlNDU3RyZXNzKTsKIG15ICRtb3ppbGxhVGVzdHNEZWZh
dWx0ID0gZGVmYXVsdFN0cmluZ0ZvclRlc3RTdGF0ZSgkcnVuTW96aWxsYVRlc3RzKTsKQEAgLTE5
OCw2ICsyMTEsNyBAQCBVc2FnZTogJHByb2dyYW1OYW1lIFtvcHRpb25zXSBbb3B0aW9ucyB0CiAg
IC0tW25vLV10ZXN0bWFzbSAgICAgICAgICAgICAgIE9ubHkgcnVuIChvciBkb24ndCBydW4pIHRl
c3RtYXNtIChkZWZhdWx0OiAkdGVzdG1hc21EZWZhdWx0KQogICAtLVtuby1ddGVzdGFpciAgICAg
ICAgICAgICAgICBPbmx5IHJ1biAob3IgZG9uJ3QgcnVuKSB0ZXN0YWlyIChkZWZhdWx0OiAkdGVz
dGFpckRlZmF1bHQpCiAgIC0tW25vLV10ZXN0YjMgICAgICAgICAgICAgICAgIE9ubHkgcnVuIChv
ciBkb24ndCBydW4pIHRlc3RiMyAoZGVmYXVsdDogJHRlc3RiM0RlZmF1bHQpCisgIC0tW25vLV10
ZXN0ZGZnICAgICAgICAgICAgICAgIE9ubHkgcnVuIChvciBkb24ndCBydW4pIHRlc3RkZmcgKGRl
ZmF1bHQ6ICR0ZXN0REZHRGVmYXVsdCkKICAgLS1bbm8tXXRlc3RhcGkgICAgICAgICAgICAgICAg
T25seSBydW4gKG9yIGRvbid0IHJ1bikgdGVzdGFwaSAoZGVmYXVsdDogJHRlc3RhcGlEZWZhdWx0
KQogICAtLVtuby1danNjLXN0cmVzcyAgICAgICAgICAgICBPbmx5IHJ1biAob3IgZG9uJ3QgcnVu
KSB0aGUgSlNDIHN0cmVzcyB0ZXN0cyAoZGVmYXVsdDogJGpzY1N0cmVzc0RlZmF1bHQpCiAgIC0t
W25vLV1tb3ppbGxhLXRlc3RzICAgICAgICAgIE9ubHkgcnVuIChvciBkb24ndCBydW4pIHRoZSBN
b3ppbGxhIHRlc3RzIChkZWZhdWx0OiAkbW96aWxsYVRlc3RzRGVmYXVsdCkKQEAgLTIzOCw2ICsy
NTIsNyBAQCBFbnZpcm9ubWVudCBWYXJpYWJsZXM6CiAgIC0gc2V0IFJVTl9KQVZBU0NSSVBUQ09S
RV9URVNUU19URVNUTUFTTSB0byAidHJ1ZSIgb3IgImZhbHNlIiAobm8gcXVvdGVzKSB0byBkZXRl
cm1pbmUgaWYgd2UgcnVuIHRlc3RtYXNtIGJ5IGRlZmF1bHQuCiAgIC0gc2V0IFJVTl9KQVZBU0NS
SVBUQ09SRV9URVNUU19URVNUQUlSIHRvICJ0cnVlIiBvciAiZmFsc2UiIChubyBxdW90ZXMpIHRv
IGRldGVybWluZSBpZiB3ZSBydW4gdGVzdGFpciBieSBkZWZhdWx0LgogICAtIHNldCBSVU5fSkFW
QVNDUklQVENPUkVfVEVTVFNfVEVTVEIzIHRvICJ0cnVlIiBvciAiZmFsc2UiIChubyBxdW90ZXMp
IHRvIGRldGVybWluZSBpZiB3ZSBydW4gdGVzdGIzIGJ5IGRlZmF1bHQuCisgIC0gc2V0IFJVTl9K
QVZBU0NSSVBUQ09SRV9URVNUU19URVNUREZHIHRvICJ0cnVlIiBvciAiZmFsc2UiIChubyBxdW90
ZXMpIHRvIGRldGVybWluZSBpZiB3ZSBydW4gdGVzdGRmZyBieSBkZWZhdWx0LgogICAtIHNldCBS
VU5fSkFWQVNDUklQVENPUkVfVEVTVFNfVEVTVEFQSSB0byAidHJ1ZSIgb3IgImZhbHNlIiAobm8g
cXVvdGVzKSB0byBkZXRlcm1pbmUgaWYgd2UgcnVuIHRlc3RhcGkgYnkgZGVmYXVsdC4KICAgLSBz
ZXQgUlVOX0pBVkFTQ1JJUFRDT1JFX1RFU1RTX0JVSUxEIHRvICJ0cnVlIiBvciAiZmFsc2UiIChu
byBxdW90ZXMpIHRvIHNldCB0aGUgc2hvdWxkLXdlLWJ1aWxkLWJlZm9yZS1ydW5uaW5nLXRlc3Rz
IHNldHRpbmcuCiAgIC0gc2V0IFJVTl9KQVZBU0NSSVBUQ09SRV9URVNUU19FWFRSQV9URVNUUyB0
byB0aGUgcGF0aCBvZiBhIHlhbWwgZmlsZSBvciBhIGRpcmVjdG9yeSBvZiBKUyBmaWxlcyB0byBi
ZSBydW4gYXMgcGFydCBvZiBydW4tamF2YXNjcmlwdGNvcmUtdGVzdHMuCkBAIC0yNTcsNiArMjcy
LDcgQEAgR2V0T3B0aW9ucygKICAgICAndGVzdG1hc20hJyA9PiBcJHJ1blRlc3RNYXNtLAogICAg
ICd0ZXN0YWlyIScgPT4gXCRydW5UZXN0QWlyLAogICAgICd0ZXN0YjMhJyA9PiBcJHJ1blRlc3RC
MywKKyAgICAndGVzdGRmZyEnID0+IFwkcnVuVGVzdERGRywKICAgICAndGVzdGFwaSEnID0+IFwk
cnVuVGVzdEFQSSwKICAgICAnanNjLXN0cmVzcyEnID0+IFwkcnVuSlNDU3RyZXNzLAogICAgICdt
b3ppbGxhLXRlc3RzIScgPT4gXCRydW5Nb3ppbGxhVGVzdHMsCkBAIC0yODcsNiArMzAzLDcgQEAg
bXkgJHNwZWNpZmljVGVzdHNTcGVjaWZpZWQgPSAwOwogaWYgKCRydW5UZXN0TWFzbSA9PSBET19S
VU4KICAgIHx8ICRydW5UZXN0QWlyID09IERPX1JVTgogICAgfHwgJHJ1blRlc3RCMyA9PSBET19S
VU4KKyAgIHx8ICRydW5UZXN0REZHID09IERPX1JVTgogICAgfHwgJHJ1blRlc3RBUEkgPT0gRE9f
UlVOCiAgICB8fCAkcnVuSlNDU3RyZXNzID09IERPX1JVTgogICAgfHwgJHJ1bk1vemlsbGFUZXN0
cyA9PSBET19SVU4pIHsKQEAgLTMwNiw2ICszMjMsNyBAQCBzdWIgZW5hYmxlVGVzdE9yTm90IHsK
ICRydW5UZXN0TWFzbSA9IGVuYWJsZVRlc3RPck5vdCgkcnVuVGVzdE1hc20pOwogJHJ1blRlc3RB
aXIgPSBlbmFibGVUZXN0T3JOb3QoJHJ1blRlc3RBaXIpOwogJHJ1blRlc3RCMyA9IGVuYWJsZVRl
c3RPck5vdCgkcnVuVGVzdEIzKTsKKyRydW5UZXN0REZHID0gZW5hYmxlVGVzdE9yTm90KCRydW5U
ZXN0REZHKTsKICRydW5UZXN0QVBJID0gZW5hYmxlVGVzdE9yTm90KCRydW5UZXN0QVBJKTsKICRy
dW5KU0NTdHJlc3MgPSBlbmFibGVUZXN0T3JOb3QoJHJ1bkpTQ1N0cmVzcyk7CiAkcnVuTW96aWxs
YVRlc3RzID0gZW5hYmxlVGVzdE9yTm90KCRydW5Nb3ppbGxhVGVzdHMpOwpAQCAtMzk0LDYgKzQx
Miw3IEBAIHN1YiBydW5UZXN0IHsKIGlmICgkcnVuVGVzdE1hc20pIHsgcnVuVGVzdCgidGVzdG1h
c20iLCAiYWxsTWFzbVRlc3RzUGFzc2VkIikgfQogaWYgKCRydW5UZXN0QWlyKSB7IHJ1blRlc3Qo
InRlc3RhaXIiLCAiYWxsQWlyVGVzdHNQYXNzZWQiKSB9CiBpZiAoJHJ1blRlc3RCMykgeyBydW5U
ZXN0KCJ0ZXN0YjMiLCAiYWxsQjNUZXN0c1Bhc3NlZCIpIH0KK2lmICgkcnVuVGVzdERGRykgeyBy
dW5UZXN0KCJ0ZXN0ZGZnIiwgImFsbERGR1Rlc3RzUGFzc2VkIikgfQogaWYgKCRydW5UZXN0QVBJ
KSB7IHJ1blRlc3QoInRlc3RhcGkiLCAiYWxsQXBpVGVzdHNQYXNzZWQiKSB9CiAKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>365439</attachid>
            <date>2019-03-20 16:51:35 -0700</date>
            <delta_ts>2019-03-20 22:43:14 -0700</delta_ts>
            <desc>patch</desc>
            <filename>c-backup.diff</filename>
            <type>text/plain</type>
            <size>26616</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjQzMjQxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQwIEBA
CisyMDE5LTAzLTIwICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAg
IERGRzo6QWJzdHJhY3RWYWx1ZTo6dmFsaWRhdGVPU1JFbnRyeSBpcyB3cm9uZyB3aGVuIGlzSGVh
cFRvcCBhbmQgdGhlIGluY29taW5nIHZhbHVlIGlzIEVtcHR5CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTU3MjEKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGVyZSB3YXMgYSBjaGVjayBpbiBBYnN0cmFj
dFZhbHVlOjp2YWxpZGF0ZU9TUkVudHJ5IHdoZXJlIGl0IGNoZWNrZWQKKyAgICAgICAgaWYgaXNI
ZWFwVG9wKCksIGFuZCBpZiBzbywganVzdCByZXR1cm5lZCB0cnVlLiBIb3dldmVyLCB0aGlzIGlz
IHdyb25nCisgICAgICAgIGlmIHRoZSB2YWx1ZSB3ZSdyZSBjaGVja2luZyBhZ2FpbnN0IGlzIHRo
ZSBlbXB0eSB2YWx1ZSwgc2luY2UgSGVhcFRvcAorICAgICAgICBkb2VzIG5vdCBpbmNsdWRlIHRo
ZSBFbXB0eSB2YWx1ZS4gSW5zdGVhZCwgdGhpcyBjaGVjayBzaG91bGQgYmUKKyAgICAgICAgaXNC
eXRlY29kZVRvcCgpLCB3aGljaCBkb2VzIGFjY291bnQgZm9yIHRoZSBlbXB0eSB2YWx1ZS4KKyAg
ICAgICAgCisgICAgICAgIFRoaXMgcGF0Y2ggYWxzbyBkb2VzIGEgY291cGxlIG9mIG90aGVyIHRo
aW5nczoKKyAgICAgICAgLSBGb3Igb3VyIE9TUiBlbnRyeSBBYnN0cmFjdFZhbHVlcywgd2Ugd2Vy
ZSB1c2luZyBIZWFwVG9wIHRvIG1hcmsKKyAgICAgICAgIGEgZGVhZCB2YWx1ZS4gVGhhdCBpcyBu
b3cgY2hhbmdlZCB0byBCeXRlY29kZVRvcC4gKFRoZSBpZGVhIGhlcmUKKyAgICAgICAgIGlzIGp1
c3QgdG8gaGF2ZSB2YWxpZGF0ZU9TUkVudHJ5IHJldHVybiBlYXJseS4pCisgICAgICAgIC0gSXQg
d2Fzbid0IG9idmlvdXMgdG8gbWUgaG93IEkgY291bGQgbWFrZSB0aGlzIGZhaWwgaW4gSlMgY29k
ZS4KKyAgICAgICAgIFRoZSBzeW1wdG9tIHdlJ2QgZW5kIHVwIHNlZWluZyBpcyBzb21ldGhpbmcg
bGlrZSBhIG51bGxwdHIgZGVyZWZlcm5lY2UKKyAgICAgICAgIGZyb20gZm9yZ2V0dGluZyB0byBk
byBhIFREWiBjaGVjay4gSW5zdGVhZCwgSSd2ZSBhZGRlZCBhIHVuaXQgdGVzdC4KKyAgICAgICAg
IFRoaXMgdW5pdCB0ZXN0IGxpdmVzIGluIGEgbmV3IHRlc3QgZmlsZTogdGVzdGRmZy4gdGVzdGRm
ZyBpcyBzaW1pbGFyCisgICAgICAgICB0byB0ZXN0YjMvdGVzdGFpci90ZXN0YXBpLgorCisgICAg
ICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
KiBieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5oOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdFZh
bHVlLmg6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RWYWx1ZTo6aXNCeXRlY29kZVRvcCBj
b25zdCk6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RWYWx1ZTo6dmFsaWRhdGVPU1JFbnRy
eVZhbHVlIGNvbnN0KToKKyAgICAgICAgKiBkZmcvdGVzdGRmZy5jcHA6IEFkZGVkLgorICAgICAg
ICAoaGlkZGVuVHJ1dGhCZWNhdXNlTm9SZXR1cm5Jc1N0dXBpZCk6CisgICAgICAgICh1c2FnZSk6
CisgICAgICAgIChKU0M6OkRGRzo6dGVzdEVtcHR5VmFsdWVEb2VzTm90VmFsaWRhdGVXaXRoSGVh
cFRvcCk6CisgICAgICAgIChKU0M6OkRGRzo6cnVuKToKKyAgICAgICAgKHJ1bik6CisgICAgICAg
IChtYWluKToKKyAgICAgICAgKiBzaGVsbC9DTWFrZUxpc3RzLnR4dDoKKwogMjAxOS0wMy0yMCAg
TWljaGFlbCBTYWJvZmYgIDxtc2Fib2ZmQGFwcGxlLmNvbT4KIAogICAgICAgICBKU0MgdGVzdCBj
cmFzaDogc3RyZXNzL2RvbnQtc3RyZW5ndGgtcmVkdWNlLXJlZ2V4cC13aXRoLWNvbXBpbGUtZXJy
b3IuanMuZGVmYXVsdApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9u
IDI0MzIzOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC01OSw2ICs1OSw3IEBACiAJCQli
dWlsZFBoYXNlcyA9ICgKIAkJCSk7CiAJCQlkZXBlbmRlbmNpZXMgPSAoCisJCQkJNTJDRDBGNjYy
MjQyRjVBMzAwNEExOEE1IC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8sCiAJCQkJNzk1NEJFMEQy
MEI2MzM0ODAwOUJDODNBIC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8sCiAJCQkJRkU1MzNDQUYx
RjIxN0VDNjAwMTZBMUZFIC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8sCiAJCQkJMEY2MTgzNDcx
QzQ1RjY3QTAwNzI0NTBCIC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8sCkBAIC04ODQsNiArODg1
LDkgQEAKIAkJNTJCMzExMDExOTc1QjQ2NzAwODA4NTdDIC8qIFR5cGVMb2NhdGlvbkNhY2hlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MkIzMTEwMDE5
NzVCNDY3MDA4MDg1N0MgLyogVHlwZUxvY2F0aW9uQ2FjaGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MkMwNjExRjFBQTUxRTFDMDBCNEFEQkEg
LyogUnVudGltZVR5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUyQzA2MTFEMUFBNTFFMUIwMEI0QURCQSAvKiBSdW50aW1lVHlwZS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUyQzk1MkI3MTlBMjg5
ODUwMDY5QjM4NiAvKiBUeXBlUHJvZmlsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUyQzk1MkI2MTlBMjg5ODUwMDY5QjM4NiAvKiBUeXBlUHJvZmls
ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk1
MkNEMEY1RDIyNDJGNTY5MDA0QTE4QTUgLyogRm91bmRhdGlvbi5mcmFtZXdvcmsgaW4gRnJhbWV3
b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUYwRUI2MTA1Qzg2QzZC
MDBFNkRGMUIgLyogRm91bmRhdGlvbi5mcmFtZXdvcmsgKi87IH07CisJCTUyQ0QwRjVFMjI0MkY1
NjkwMDRBMThBNSAvKiBKYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzJGNUJEOTA4MjJBMUM3MDA3MzY5NzUg
LyogSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrICovOyB9OworCQk1MkNEMEY2ODIyNDJGNzFDMDA0
QTE4QTUgLyogdGVzdGRmZy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MkNEMEY2NzIyNDJGNzFDMDA0QTE4QTUgLyogdGVzdGRmZy5jcHAgKi87IH07
CiAJCTUyRDEzMDkxMjIxQ0UxNzYwMDlDODM2QyAvKiBmb28uanMgaW4gQ29weSBTdXBwb3J0IFNj
cmlwdCAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MkQxMzA4RjIyMUNFMDNB
MDA5QzgzNkMgLyogZm9vLmpzICovOyB9OwogCQk1MkY2QzM1RTFFNzFFQjA4MDA4MUY0Q0MgLyog
V2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUyRjZDMzVDMUU3MUVCMDgwMDgxRjRDQyAvKiBXZWJBc3NlbWJs
eVdyYXBwZXJGdW5jdGlvbi5oICovOyB9OwogCQk1MzBBNjZCOTFGQTNFNzhCMDAyNkE1NDUgLyog
VW5pZmllZFNvdXJjZTMtbW0ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MzBBNjZCMTFGQTNFNzdBMDAyNkE1NDUgLyogVW5pZmllZFNvdXJjZTMtbW0u
bW0gKi87IH07CkBAIC0xOTIzLDYgKzE5MjcsMTMgQEAKIAkJCXJlbW90ZUdsb2JhbElEU3RyaW5n
ID0gNjVGQjNGNjYwOUQxMUU5MTAwRjQ5REVCOwogCQkJcmVtb3RlSW5mbyA9ICJEZXJpdmVkIFNv
dXJjZXMiOwogCQl9OworCQk1MkNEMEY2NTIyNDJGNUEzMDA0QTE4QTUgLyogUEJYQ29udGFpbmVy
SXRlbVByb3h5ICovID0geworCQkJaXNhID0gUEJYQ29udGFpbmVySXRlbVByb3h5OworCQkJY29u
dGFpbmVyUG9ydGFsID0gMDg2N0Q2OTBGRTg0MDI4RkMwMkFBQzA3IC8qIFByb2plY3Qgb2JqZWN0
ICovOworCQkJcHJveHlUeXBlID0gMTsKKwkJCXJlbW90ZUdsb2JhbElEU3RyaW5nID0gNTJDRDBG
NTkyMjQyRjU2OTAwNEExOEE1OworCQkJcmVtb3RlSW5mbyA9IHRlc3RkZmc7CisJCX07CiAJCTUz
QjRCRDEzMUY2OEMyQUEwMEQyQkVBMyAvKiBQQlhDb250YWluZXJJdGVtUHJveHkgKi8gPSB7CiAJ
CQlpc2EgPSBQQlhDb250YWluZXJJdGVtUHJveHk7CiAJCQljb250YWluZXJQb3J0YWwgPSAwODY3
RDY5MEZFODQwMjhGQzAyQUFDMDcgLyogUHJvamVjdCBvYmplY3QgKi87CkBAIC0zMzc5LDYgKzMz
OTAsOCBAQAogCQk1MkMwNjExRDFBQTUxRTFCMDBCNEFEQkEgLyogUnVudGltZVR5cGUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUnVudGltZVR5cGUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNTJDOTUyQjYxOUEyODk4NTAwNjlCMzg2IC8qIFR5cGVQcm9maWxl
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBUeXBlUHJvZmlsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNTJDOTUyQjgxOUEyOEExQzAwNjlCMzg2IC8qIFR5cGVQcm9maWxlci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBUeXBlUHJvZmlsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk1MkNEMEY2NDIyNDJGNTY5MDA0QTE4QTUgLyogdGVzdGRmZyAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gImNvbXBpbGVkLm1hY2gtby5leGVj
dXRhYmxlIjsgaW5jbHVkZUluSW5kZXggPSAwOyBwYXRoID0gdGVzdGRmZzsgc291cmNlVHJlZSA9
IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKKwkJNTJDRDBGNjcyMjQyRjcxQzAwNEExOEE1IC8qIHRl
c3RkZmcuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gdGVzdGRmZy5j
cHA7IHBhdGggPSBkZmcvdGVzdGRmZy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTUyRDEzMDhGMjIxQ0UwM0EwMDlDODM2QyAvKiBmb28uanMgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmphdmFzY3JpcHQ7IHBhdGggPSBmb28uanM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTUyRjZDMzVCMUU3MUVCMDgwMDgxRjRDQyAvKiBXZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbi5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBXZWJBc3NlbWJseVdyYXBw
ZXJGdW5jdGlvbi5jcHA7IHBhdGggPSBqcy9XZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbi5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUyRjZDMzVDMUU3MUVCMDgwMDgxRjRDQyAv
KiBXZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBXZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbi5oOyBwYXRoID0ganMvV2ViQXNzZW1i
bHlXcmFwcGVyRnVuY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ5OTUs
NiArNTAwOCwxNSBAQAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Np
bmcgPSAwOwogCQl9OworCQk1MkNEMEY1QzIyNDJGNTY5MDA0QTE4QTUgLyogRnJhbWV3b3JrcyAq
LyA9IHsKKwkJCWlzYSA9IFBCWEZyYW1ld29ya3NCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25N
YXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJCTUyQ0QwRjVEMjI0MkY1NjkwMDRB
MThBNSAvKiBGb3VuZGF0aW9uLmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovLAorCQkJCTUyQ0Qw
RjVFMjI0MkY1NjkwMDRBMThBNSAvKiBKYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsgaW4gRnJhbWV3
b3JrcyAqLywKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0g
MDsKKwkJfTsKIAkJNjUxMTIyRkMxNDA0NkE0QzAwMkIxMDFEIC8qIEZyYW1ld29ya3MgKi8gPSB7
CiAJCQlpc2EgPSBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9
IDIxNDc0ODM2NDc7CkBAIC01MDYzLDYgKzUwODUsNyBAQAogCQkJCTc5MjgxQkRDMjBCNjJCM0Uw
MDJFMkE2MCAvKiB0ZXN0bWVtICovLAogCQkJCTY1MTEyMzA1MTQwNDZBNEMwMDJCMTAxRCAvKiB0
ZXN0UmVnRXhwICovLAogCQkJCTkzMkY1QkQ5MDgyMkExQzcwMDczNjk3NSAvKiBKYXZhU2NyaXB0
Q29yZS5mcmFtZXdvcmsgKi8sCisJCQkJNTJDRDBGNjQyMjQyRjU2OTAwNEExOEE1IC8qIHRlc3Rk
ZmcgKi8sCiAJCQkpOwogCQkJbmFtZSA9IFByb2R1Y3RzOwogCQkJc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsKQEAgLTc2NDAsNiArNzY2Myw3IEBACiAJCQkJMEZEQjJDRTUxNzQ4MzBBMjAwN0IzQzFC
IC8qIERGR1dvcmtsaXN0LmNwcCAqLywKIAkJCQkwRkRCMkNFNjE3NDgzMEEyMDA3QjNDMUIgLyog
REZHV29ya2xpc3QuaCAqLywKIAkJCQkwRjFGQjM5NTFFMUFGN0RGMDBBOUJFNTAgLyogREZHV29y
a2xpc3RJbmxpbmVzLmggKi8sCisJCQkJNTJDRDBGNjcyMjQyRjcxQzAwNEExOEE1IC8qIHRlc3Rk
ZmcuY3BwICovLAogCQkJKTsKIAkJCW5hbWUgPSBkZmc7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91
cD4iOwpAQCAtMTAwMjgsNiArMTAwNTIsMjIgQEAKIAkJCXByb2R1Y3RSZWZlcmVuY2UgPSAxNEJE
Njg4RTIxNTE5MTMxMDA1MERBRkYgLyogSlNDTExJbnRTZXR0aW5nc0V4dHJhY3RvciAqLzsKIAkJ
CXByb2R1Y3RUeXBlID0gImNvbS5hcHBsZS5wcm9kdWN0LXR5cGUudG9vbCI7CiAJCX07CisJCTUy
Q0QwRjU5MjI0MkY1NjkwMDRBMThBNSAvKiB0ZXN0ZGZnICovID0geworCQkJaXNhID0gUEJYTmF0
aXZlVGFyZ2V0OworCQkJYnVpbGRDb25maWd1cmF0aW9uTGlzdCA9IDUyQ0QwRjVGMjI0MkY1Njkw
MDRBMThBNSAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAi
dGVzdGRmZyIgKi87CisJCQlidWlsZFBoYXNlcyA9ICgKKwkJCQk1MkNEMEY1QTIyNDJGNTY5MDA0
QTE4QTUgLyogU291cmNlcyAqLywKKwkJCQk1MkNEMEY1QzIyNDJGNTY5MDA0QTE4QTUgLyogRnJh
bWV3b3JrcyAqLywKKwkJCSk7CisJCQlidWlsZFJ1bGVzID0gKAorCQkJKTsKKwkJCWRlcGVuZGVu
Y2llcyA9ICgKKwkJCSk7CisJCQluYW1lID0gdGVzdGRmZzsKKwkJCXByb2R1Y3ROYW1lID0gdGVz
dGFwaTsKKwkJCXByb2R1Y3RSZWZlcmVuY2UgPSA1MkNEMEY2NDIyNDJGNTY5MDA0QTE4QTUgLyog
dGVzdGRmZyAqLzsKKwkJCXByb2R1Y3RUeXBlID0gImNvbS5hcHBsZS5wcm9kdWN0LXR5cGUudG9v
bCI7CisJCX07CiAJCTY1MTEyMkY3MTQwNDZBNEMwMDJCMTAxRCAvKiB0ZXN0UmVnRXhwICovID0g
ewogCQkJaXNhID0gUEJYTmF0aXZlVGFyZ2V0OwogCQkJYnVpbGRDb25maWd1cmF0aW9uTGlzdCA9
IDY1MTEyMzAwMTQwNDZBNEMwMDJCMTAxRCAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9y
IFBCWE5hdGl2ZVRhcmdldCAidGVzdFJlZ0V4cCIgKi87CkBAIC0xMDE3NCw2ICsxMDIxNCw3IEBA
CiAJCQkJRkU1MzNDQTExRjIxN0RCMzAwMTZBMUZFIC8qIHRlc3RtYXNtICovLAogCQkJCTc5Mjgx
QkJEMjBCNjJCM0UwMDJFMkE2MCAvKiB0ZXN0bWVtICovLAogCQkJCTUzMjVCREJGMjFERkYyQjEw
MEEwREVFMSAvKiBBcHBseSBDb25maWd1cmF0aW9uIHRvIFhDRmlsZUxpc3RzICovLAorCQkJCTUy
Q0QwRjU5MjI0MkY1NjkwMDRBMThBNSAvKiB0ZXN0ZGZnICovLAogCQkJKTsKIAkJfTsKIC8qIEVu
ZCBQQlhQcm9qZWN0IHNlY3Rpb24gKi8KQEAgLTEwNTQyLDYgKzEwNTgzLDE0IEBACiAJCQkpOwog
CQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CisJCTUyQ0Qw
RjVBMjI0MkY1NjkwMDRBMThBNSAvKiBTb3VyY2VzICovID0geworCQkJaXNhID0gUEJYU291cmNl
c0J1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZmlsZXMg
PSAoCisJCQkJNTJDRDBGNjgyMjQyRjcxQzAwNEExOEE1IC8qIHRlc3RkZmcuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7
CisJCX07CiAJCTY1MTEyMkZBMTQwNDZBNEMwMDJCMTAxRCAvKiBTb3VyY2VzICovID0gewogCQkJ
aXNhID0gUEJYU291cmNlc0J1aWxkUGhhc2U7CiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgz
NjQ3OwpAQCAtMTA3OTIsNiArMTA4NDEsMTEgQEAKIAkJCXRhcmdldCA9IDY1RkIzRjY2MDlEMTFF
OTEwMEY0OURFQiAvKiBEZXJpdmVkIFNvdXJjZXMgKi87CiAJCQl0YXJnZXRQcm94eSA9IDE0RDlE
OUQ5MjE4NDYyQjUwMDkxMjZDMiAvKiBQQlhDb250YWluZXJJdGVtUHJveHkgKi87CiAJCX07CisJ
CTUyQ0QwRjY2MjI0MkY1QTMwMDRBMThBNSAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICovID0gewor
CQkJaXNhID0gUEJYVGFyZ2V0RGVwZW5kZW5jeTsKKwkJCXRhcmdldCA9IDUyQ0QwRjU5MjI0MkY1
NjkwMDRBMThBNSAvKiB0ZXN0ZGZnICovOworCQkJdGFyZ2V0UHJveHkgPSA1MkNEMEY2NTIyNDJG
NUEzMDA0QTE4QTUgLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovOworCQl9OwogCQk1M0I0QkQx
NDFGNjhDMkFBMDBEMkJFQTMgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLyA9IHsKIAkJCWlzYSA9
IFBCWFRhcmdldERlcGVuZGVuY3k7CiAJCQl0YXJnZXQgPSA1M0I0QkQwNDFGNjhBRjg5MDBEMkJF
QTMgLyogR2VuZXJhdGUgVW5pZmllZCBTb3VyY2VzICovOwpAQCAtMTExOTcsNiArMTEyNTEsMzgg
QEAKIAkJCX07CiAJCQluYW1lID0gUHJvZHVjdGlvbjsKIAkJfTsKKwkJNTJDRDBGNjAyMjQyRjU2
OTAwNEExOEE1IC8qIERlYnVnICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247
CisJCQliYXNlQ29uZmlndXJhdGlvblJlZmVyZW5jZSA9IEJDMDIxQkYyMTM2OTAwQzMwMEZDNTQ2
NyAvKiBUb29sRXhlY3V0YWJsZS54Y2NvbmZpZyAqLzsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJ
CQkJUFJPRFVDVF9OQU1FID0gIiQoVEFSR0VUX05BTUUpIjsKKwkJCX07CisJCQluYW1lID0gRGVi
dWc7CisJCX07CisJCTUyQ0QwRjYxMjI0MkY1NjkwMDRBMThBNSAvKiBSZWxlYXNlICovID0gewor
CQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQliYXNlQ29uZmlndXJhdGlvblJlZmVy
ZW5jZSA9IEJDMDIxQkYyMTM2OTAwQzMwMEZDNTQ2NyAvKiBUb29sRXhlY3V0YWJsZS54Y2NvbmZp
ZyAqLzsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJUFJPRFVDVF9OQU1FID0gIiQoVEFSR0VU
X05BTUUpIjsKKwkJCX07CisJCQluYW1lID0gUmVsZWFzZTsKKwkJfTsKKwkJNTJDRDBGNjIyMjQy
RjU2OTAwNEExOEE1IC8qIFByb2ZpbGluZyAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1
cmF0aW9uOworCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2UgPSBCQzAyMUJGMjEzNjkwMEMz
MDBGQzU0NjcgLyogVG9vbEV4ZWN1dGFibGUueGNjb25maWcgKi87CisJCQlidWlsZFNldHRpbmdz
ID0geworCQkJCVBST0RVQ1RfTkFNRSA9ICIkKFRBUkdFVF9OQU1FKSI7CisJCQl9OworCQkJbmFt
ZSA9IFByb2ZpbGluZzsKKwkJfTsKKwkJNTJDRDBGNjMyMjQyRjU2OTAwNEExOEE1IC8qIFByb2R1
Y3Rpb24gKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJhc2VDb25m
aWd1cmF0aW9uUmVmZXJlbmNlID0gQkMwMjFCRjIxMzY5MDBDMzAwRkM1NDY3IC8qIFRvb2xFeGVj
dXRhYmxlLnhjY29uZmlnICovOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlQUk9EVUNUX05B
TUUgPSAiJChUQVJHRVRfTkFNRSkiOworCQkJfTsKKwkJCW5hbWUgPSBQcm9kdWN0aW9uOworCQl9
OwogCQk1MzI1QkRDMDIxREZGMkIyMDBBMERFRTEgLyogRGVidWcgKi8gPSB7CiAJCQlpc2EgPSBY
Q0J1aWxkQ29uZmlndXJhdGlvbjsKIAkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gMUM5
MDUxNDMwQkE5RThBNzAwODFFOUQwIC8qIEphdmFTY3JpcHRDb3JlLnhjY29uZmlnICovOwpAQCAt
MTE2MzgsNiArMTE3MjQsMTcgQEAKIAkJCWRlZmF1bHRDb25maWd1cmF0aW9uSXNWaXNpYmxlID0g
MDsKIAkJCWRlZmF1bHRDb25maWd1cmF0aW9uTmFtZSA9IFByb2R1Y3Rpb247CiAJCX07CisJCTUy
Q0QwRjVGMjI0MkY1NjkwMDRBMThBNSAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBC
WE5hdGl2ZVRhcmdldCAidGVzdGRmZyIgKi8gPSB7CisJCQlpc2EgPSBYQ0NvbmZpZ3VyYXRpb25M
aXN0OworCQkJYnVpbGRDb25maWd1cmF0aW9ucyA9ICgKKwkJCQk1MkNEMEY2MDIyNDJGNTY5MDA0
QTE4QTUgLyogRGVidWcgKi8sCisJCQkJNTJDRDBGNjEyMjQyRjU2OTAwNEExOEE1IC8qIFJlbGVh
c2UgKi8sCisJCQkJNTJDRDBGNjIyMjQyRjU2OTAwNEExOEE1IC8qIFByb2ZpbGluZyAqLywKKwkJ
CQk1MkNEMEY2MzIyNDJGNTY5MDA0QTE4QTUgLyogUHJvZHVjdGlvbiAqLywKKwkJCSk7CisJCQlk
ZWZhdWx0Q29uZmlndXJhdGlvbklzVmlzaWJsZSA9IDA7CisJCQlkZWZhdWx0Q29uZmlndXJhdGlv
bk5hbWUgPSBQcm9kdWN0aW9uOworCQl9OwogCQk1MzI1QkRDNDIxREZGMkIyMDBBMERFRTEgLyog
QnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhBZ2dyZWdhdGVUYXJnZXQgIkFwcGx5IENv
bmZpZ3VyYXRpb24gdG8gWENGaWxlTGlzdHMiICovID0gewogCQkJaXNhID0gWENDb25maWd1cmF0
aW9uTGlzdDsKIAkJCWJ1aWxkQ29uZmlndXJhdGlvbnMgPSAoCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5UHJvZmlsZS5oCShyZXZpc2lvbiAyNDMyMzgpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTU4LDcgKzU4LDcgQEAgY29uc3QgQXJyYXlNb2RlcyBVaW50MzJBcnJheU1vZGUg
PSAxIDw8IAogY29uc3QgQXJyYXlNb2RlcyBGbG9hdDMyQXJyYXlNb2RlID0gMSA8PCAyODsKIGNv
bnN0IEFycmF5TW9kZXMgRmxvYXQ2NEFycmF5TW9kZSA9IDEgPDwgMjk7CiAKLWV4dGVybiBjb25z
dCBBcnJheU1vZGVzIHR5cGVkQXJyYXlNb2Rlc1tOdW1iZXJPZlR5cGVkQXJyYXlUeXBlc0V4Y2x1
ZGluZ0RhdGFWaWV3XTsKK0pTX0VYUE9SVF9QUklWQVRFIGV4dGVybiBjb25zdCBBcnJheU1vZGVz
IHR5cGVkQXJyYXlNb2Rlc1tOdW1iZXJPZlR5cGVkQXJyYXlUeXBlc0V4Y2x1ZGluZ0RhdGFWaWV3
XTsKIAogY29uc3RleHByIEFycmF5TW9kZXMgYXNBcnJheU1vZGVzSWdub3JpbmdUeXBlZEFycmF5
cyhJbmRleGluZ1R5cGUgaW5kZXhpbmdNb2RlKQogewpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmgJKHJldmlzaW9uIDI0MzIzOCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC00ODIsNyArNDgyLDcgQEAgaW5saW5lIGJvb2wgc3BlY3VsYXRpb25DaGVja2Vk
KFNwZWN1bGF0ZQogU3BlY3VsYXRlZFR5cGUgc3BlY3VsYXRpb25Gcm9tQ2xhc3NJbmZvKGNvbnN0
IENsYXNzSW5mbyopOwogU3BlY3VsYXRlZFR5cGUgc3BlY3VsYXRpb25Gcm9tU3RydWN0dXJlKFN0
cnVjdHVyZSopOwogU3BlY3VsYXRlZFR5cGUgc3BlY3VsYXRpb25Gcm9tQ2VsbChKU0NlbGwqKTsK
LVNwZWN1bGF0ZWRUeXBlIHNwZWN1bGF0aW9uRnJvbVZhbHVlKEpTVmFsdWUpOworSlNfRVhQT1JU
X1BSSVZBVEUgU3BlY3VsYXRlZFR5cGUgc3BlY3VsYXRpb25Gcm9tVmFsdWUoSlNWYWx1ZSk7CiBT
cGVjdWxhdGVkVHlwZSBzcGVjdWxhdGlvbkZyb21KU1R5cGUoSlNUeXBlKTsKIAogU3BlY3VsYXRl
ZFR5cGUgc3BlY3VsYXRpb25Gcm9tVHlwZWRBcnJheVR5cGUoVHlwZWRBcnJheVR5cGUpOyAvLyBv
bmx5IHZhbGlkIGZvciB0eXBlZCB2aWV3cy4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQWJzdHJhY3RWYWx1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQWJzdHJhY3RWYWx1ZS5oCShyZXZpc2lvbiAyNDMyMzgpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0VmFsdWUuaAkod29ya2luZyBjb3B5KQpAQCAtMTg4
LDYgKzE4OCwxNCBAQCBzdHJ1Y3QgQWJzdHJhY3RWYWx1ZSB7CiAgICAgICAgICAgICAmJiBtX2Fy
cmF5TW9kZXMgPT0gQUxMX0FSUkFZX01PREVTCiAgICAgICAgICAgICAmJiAhbV92YWx1ZTsKICAg
ICB9CisKKyAgICBib29sIGlzQnl0ZWNvZGVUb3AoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0
dXJuIChtX3R5cGUgfCBTcGVjQnl0ZWNvZGVUb3ApID09IG1fdHlwZQorICAgICAgICAgICAgJiYg
bV9zdHJ1Y3R1cmUuaXNUb3AoKQorICAgICAgICAgICAgJiYgbV9hcnJheU1vZGVzID09IEFMTF9B
UlJBWV9NT0RFUworICAgICAgICAgICAgJiYgIW1fdmFsdWU7CisgICAgfQogICAgIAogICAgIGJv
b2wgdmFsdWVJc1RvcCgpIGNvbnN0CiAgICAgewpAQCAtMzcyLDcgKzM4MCw3IEBAIHN0cnVjdCBB
YnN0cmFjdFZhbHVlIHsKIAogICAgIGJvb2wgdmFsaWRhdGVPU1JFbnRyeVZhbHVlKEpTVmFsdWUg
dmFsdWUsIEZsdXNoRm9ybWF0IGZvcm1hdCkgY29uc3QKICAgICB7Ci0gICAgICAgIGlmIChpc0hl
YXBUb3AoKSkKKyAgICAgICAgaWYgKGlzQnl0ZWNvZGVUb3AoKSkKICAgICAgICAgICAgIHJldHVy
biB0cnVlOwogICAgICAgICAKICAgICAgICAgaWYgKCEhbV92YWx1ZSAmJiBtX3ZhbHVlICE9IHZh
bHVlKQpAQCAtNDExLDcgKzQxOSw3IEBAIHN0cnVjdCBBYnN0cmFjdFZhbHVlIHsKICAgICB2b2lk
IGNoZWNrQ29uc2lzdGVuY3koKSBjb25zdCB7IH0KICAgICB2b2lkIGFzc2VydElzUmVnaXN0ZXJl
ZChHcmFwaCYpIGNvbnN0IHsgfQogI2Vsc2UKLSAgICB2b2lkIGNoZWNrQ29uc2lzdGVuY3koKSBj
b25zdDsKKyAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGNoZWNrQ29uc2lzdGVuY3koKSBjb25z
dDsKICAgICB2b2lkIGFzc2VydElzUmVnaXN0ZXJlZChHcmFwaCYpIGNvbnN0OwogI2VuZGlmCiAK
QEAgLTUzNiw3ICs1NDQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZmlsdGVyQXJyYXlNb2Rlc0J5
VHlwZSgpOwogCiAjaWYgVVNFKEpTVkFMVUU2NCkgJiYgIWRlZmluZWQoTkRFQlVHKQotICAgIHZv
aWQgZW5zdXJlQ2FuSW5pdGlhbGl6ZVdpdGhaZXJvcygpOworICAgIEpTX0VYUE9SVF9QUklWQVRF
IHZvaWQgZW5zdXJlQ2FuSW5pdGlhbGl6ZVdpdGhaZXJvcygpOwogI2VuZGlmCiAgICAgCiAgICAg
Ym9vbCBzaG91bGRCZUNsZWFyKCkgY29uc3Q7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0pJVENvbXBpbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAkocmV2aXNpb24gMjQzMjM4KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU4
NCwxMiArNTg0LDEyIEBAIHZvaWQgSklUQ29tcGlsZXI6Om5vdGljZU9TUkVudHJ5KEJhc2ljQmwK
ICAgICBmb3IgKHNpemVfdCBhcmd1bWVudCA9IDA7IGFyZ3VtZW50IDwgYmFzaWNCbG9jay52YXJp
YWJsZXNBdEhlYWQubnVtYmVyT2ZBcmd1bWVudHMoKTsgKythcmd1bWVudCkgewogICAgICAgICBO
b2RlKiBub2RlID0gYmFzaWNCbG9jay52YXJpYWJsZXNBdEhlYWQuYXJndW1lbnQoYXJndW1lbnQp
OwogICAgICAgICBpZiAoIW5vZGUgfHwgIW5vZGUtPnNob3VsZEdlbmVyYXRlKCkpCi0gICAgICAg
ICAgICBlbnRyeS0+bV9leHBlY3RlZFZhbHVlcy5hcmd1bWVudChhcmd1bWVudCkubWFrZUhlYXBU
b3AoKTsKKyAgICAgICAgICAgIGVudHJ5LT5tX2V4cGVjdGVkVmFsdWVzLmFyZ3VtZW50KGFyZ3Vt
ZW50KS5tYWtlQnl0ZWNvZGVUb3AoKTsKICAgICB9CiAgICAgZm9yIChzaXplX3QgbG9jYWwgPSAw
OyBsb2NhbCA8IGJhc2ljQmxvY2sudmFyaWFibGVzQXRIZWFkLm51bWJlck9mTG9jYWxzKCk7ICsr
bG9jYWwpIHsKICAgICAgICAgTm9kZSogbm9kZSA9IGJhc2ljQmxvY2sudmFyaWFibGVzQXRIZWFk
LmxvY2FsKGxvY2FsKTsKICAgICAgICAgaWYgKCFub2RlIHx8ICFub2RlLT5zaG91bGRHZW5lcmF0
ZSgpKQotICAgICAgICAgICAgZW50cnktPm1fZXhwZWN0ZWRWYWx1ZXMubG9jYWwobG9jYWwpLm1h
a2VIZWFwVG9wKCk7CisgICAgICAgICAgICBlbnRyeS0+bV9leHBlY3RlZFZhbHVlcy5sb2NhbChs
b2NhbCkubWFrZUJ5dGVjb2RlVG9wKCk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgVmFy
aWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJsZSA9IG5vZGUtPnZhcmlhYmxlQWNjZXNzRGF0YSgpOwog
ICAgICAgICAgICAgZW50cnktPm1fbWFjaGluZVN0YWNrVXNlZC5zZXQodmFyaWFibGUtPm1hY2hp
bmVMb2NhbCgpLnRvTG9jYWwoKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1N0cnVjdHVyZUFic3RyYWN0VmFsdWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1N0cnVjdHVyZUFic3RyYWN0VmFsdWUuaAkocmV2aXNpb24gMjQzMjM4KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTIzMiw3ICsyMzIsNyBAQCBwdWJsaWM6CiAgICAgLy8gY29udGFp
bnMoKSwgdHJ1ZSBmb3IgaXNTdWJzZXRPZigpLCBmYWxzZSBmb3IgaXNTdXBlcnNldE9mKCksIGFu
ZCBmYWxzZSBmb3Igb3ZlcmxhcHMoKS4KIAogICAgIGJvb2wgY29udGFpbnMoUmVnaXN0ZXJlZFN0
cnVjdHVyZSkgY29uc3Q7Ci0gICAgYm9vbCBjb250YWlucyhTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkg
Y29uc3Q7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBjb250YWlucyhTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSkgY29uc3Q7CiAgICAgCiAgICAgYm9vbCBpc1N1YnNldE9mKGNvbnN0IFJlZ2lzdGVy
ZWRTdHJ1Y3R1cmVTZXQmIG90aGVyKSBjb25zdDsKICAgICBib29sIGlzU3Vic2V0T2YoY29uc3Qg
U3RydWN0dXJlQWJzdHJhY3RWYWx1ZSYgb3RoZXIpIGNvbnN0OwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy90ZXN0ZGZnLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL3Rlc3RkZmcuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvdGVzdGRmZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMTkgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorCisjaW5jbHVkZSAiSGVhcENlbGxJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNDSlNW
YWx1ZUlubGluZXMuaCIKKy8vIFRoZSBhYm92ZSBhcmUgbmVlZGVkIGJlZm9yZSBERkdBYnN0cmFj
dFZhbHVlLmgKKyNpbmNsdWRlICJERkdBYnN0cmFjdFZhbHVlLmgiCisjaW5jbHVkZSAiSW5pdGlh
bGl6ZVRocmVhZGluZy5oIgorI2luY2x1ZGUgPHd0Zi9EYXRhTG9nLmg+CisKKy8vIFdlIGRvbid0
IGhhdmUgYSBOT19SRVRVUk5fRFVFX1RPX0VYSVQsIG5vciBzaG91bGQgd2UuIFRoYXQncyByaWRp
Y3Vsb3VzLgorc3RhdGljIGJvb2wgaGlkZGVuVHJ1dGhCZWNhdXNlTm9SZXR1cm5Jc1N0dXBpZCgp
IHsgcmV0dXJuIHRydWU7IH0KKworc3RhdGljIHZvaWQgdXNhZ2UoKQoreworICAgIGRhdGFMb2co
IlVzYWdlOiB0ZXN0ZGZnIFs8ZmlsdGVyPl1cbiIpOworICAgIGlmIChoaWRkZW5UcnV0aEJlY2F1
c2VOb1JldHVybklzU3R1cGlkKCkpCisgICAgICAgIGV4aXQoMSk7Cit9CisKKyNpZiBFTkFCTEUo
REZHX0pJVCkKKwordXNpbmcgbmFtZXNwYWNlIEpTQzsKK3VzaW5nIG5hbWVzcGFjZSBKU0M6OkRG
RzsKKworbmFtZXNwYWNlIHsKKworLy8gTm90aGluZyBmYW5jeSBmb3Igbm93OyB3ZSBqdXN0IHVz
ZSB0aGUgZXhpc3RpbmcgV1RGIGFzc2VydGlvbiBtYWNoaW5lcnkuCisjZGVmaW5lIENIRUNLKHgp
IGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKKyAgICAgICAgaWYgKCEhKHgpKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgYnJlYWs7ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCisgICAgICAgIFdURlJlcG9ydEFzc2VydGlvbkZhaWx1cmUoX19GSUxFX18sIF9fTElORV9f
LCBXVEZfUFJFVFRZX0ZVTkNUSU9OLCAjeCk7IFwKKyAgICAgICAgQ1JBU0goKTsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor
ICAgIH0gd2hpbGUgKGZhbHNlKQorCisKKyNkZWZpbmUgUlVOX05PVyh0ZXN0KSBkbyB7ICAgICAg
ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaWYgKCFzaG91bGRSdW4oI3Rlc3QpKSAgICAgICAg
ICAgICAgICAgIFwKKyAgICAgICAgICAgIGJyZWFrOyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKKyAgICAgICAgZGF0YUxvZygjdGVzdCAiLi4uXG4iKTsgICAgICAgICAgXAorICAgICAg
ICB0ZXN0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBkYXRh
TG9nKCN0ZXN0ICI6IE9LIVxuIik7ICAgICAgICBcCisgICAgfSB3aGlsZSAoZmFsc2UpCisKK3N0
YXRpYyB2b2lkIHRlc3RFbXB0eVZhbHVlRG9lc05vdFZhbGlkYXRlV2l0aEhlYXBUb3AoKQorewor
ICAgIEFic3RyYWN0VmFsdWUgdmFsdWU7CisKKyAgICB2YWx1ZS5tYWtlSGVhcFRvcCgpOworICAg
IENIRUNLKCF2YWx1ZS52YWxpZGF0ZU9TUkVudHJ5VmFsdWUoSlNWYWx1ZSgpLCBGbHVzaGVkSlNW
YWx1ZSkpOworCisgICAgdmFsdWUubWFrZUJ5dGVjb2RlVG9wKCk7CisgICAgQ0hFQ0sodmFsdWUu
dmFsaWRhdGVPU1JFbnRyeVZhbHVlKEpTVmFsdWUoKSwgRmx1c2hlZEpTVmFsdWUpKTsKK30KKwor
dm9pZCBydW4oY29uc3QgY2hhciogZmlsdGVyKQoreworICAgIGF1dG8gc2hvdWxkUnVuID0gWyZd
IChjb25zdCBjaGFyKiB0ZXN0TmFtZSkgLT4gYm9vbCB7CisgICAgICAgIHJldHVybiAhZmlsdGVy
IHx8ICEhc3RyY2FzZXN0cih0ZXN0TmFtZSwgZmlsdGVyKTsKKyAgICB9OworCisgICAgUlVOX05P
Vyh0ZXN0RW1wdHlWYWx1ZURvZXNOb3RWYWxpZGF0ZVdpdGhIZWFwVG9wKCkpOworfQorCit9IC8v
IGFub255bW91cyBuYW1lc3BhY2UKKworI2Vsc2UgLy8gRU5BQkxFKERGR19KSVQpCisKK3N0YXRp
YyB2b2lkIHJ1bihjb25zdCBjaGFyKikKK3sKKyAgICBkYXRhTG9nKCJERkcgSklUIGlzIG5vdCBl
bmFibGVkLlxuIik7Cit9CisKKyNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKKworaW50IG1haW4o
aW50IGFyZ2MsIGNoYXIqKiBhcmd2KQoreworICAgIGNvbnN0IGNoYXIqIGZpbHRlciA9IG51bGxw
dHI7CisgICAgc3dpdGNoIChhcmdjKSB7CisgICAgY2FzZSAxOgorICAgICAgICBicmVhazsKKyAg
ICBjYXNlIDI6CisgICAgICAgIGZpbHRlciA9IGFyZ3ZbMV07CisgICAgICAgIGJyZWFrOworICAg
IGRlZmF1bHQ6CisgICAgICAgIHVzYWdlKCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAg
IEpTQzo6aW5pdGlhbGl6ZVRocmVhZGluZygpOworICAgIAorICAgIHJ1bihmaWx0ZXIpOworCisg
ICAgcmV0dXJuIDA7Cit9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvc2hlbGwvQ01ha2VM
aXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3NoZWxsL0NNYWtl
TGlzdHMudHh0CShyZXZpc2lvbiAyNDMyMzgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvc2hl
bGwvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTY4LDYgKzY4LDEwIEBAIHNldChU
RVNUQUlSX1NPVVJDRVMKICAgICAuLi9iMy9haXIvdGVzdGFpci5jcHAKICkKIAorc2V0KFRFU1RE
RkdfU09VUkNFUworICAgIC4uL2RmZy90ZXN0ZGZnLmNwcAorKQorCiBpZiAoREVWRUxPUEVSX01P
REUgQU5EIE5PVCBXSU4zMikKICAgICBhZGRfZXhlY3V0YWJsZSh0ZXN0bWFzbSAke1RFU1RNQVNN
X1NPVVJDRVN9KQogICAgIHRhcmdldF9saW5rX2xpYnJhcmllcyh0ZXN0bWFzbSAke0pTQ19MSUJS
QVJJRVN9KQpAQCAtNzgsNiArODIsOSBAQCBpZiAoREVWRUxPUEVSX01PREUgQU5EIE5PVCBXSU4z
MikKICAgICBhZGRfZXhlY3V0YWJsZSh0ZXN0YWlyICR7VEVTVEFJUl9TT1VSQ0VTfSkKICAgICB0
YXJnZXRfbGlua19saWJyYXJpZXModGVzdGFpciAke0pTQ19MSUJSQVJJRVN9KQogCisgICAgYWRk
X2V4ZWN1dGFibGUodGVzdGRmZyAke1RFU1RERkdfU09VUkNFU30pCisgICAgdGFyZ2V0X2xpbmtf
bGlicmFyaWVzKHRlc3RkZmcgJHtKU0NfTElCUkFSSUVTfSkKKwogICAgIGFkZF9leGVjdXRhYmxl
KHRlc3RhcGkgJHtURVNUQVBJX1NPVVJDRVN9KQogICAgIHRhcmdldF9saW5rX2xpYnJhcmllcyh0
ZXN0YXBpICR7SlNDX0xJQlJBUklFU30pCiBlbmRpZiAoKQpJbmRleDogVG9vbHMvQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMjQzMjUwKQorKysgVG9v
bHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTktMDMtMjAg
IFNhYW0gQmFyYXRpICA8c2JhcmF0aUBhcHBsZS5jb20+CisKKyAgICAgICAgREZHOjpBYnN0cmFj
dFZhbHVlOjp2YWxpZGF0ZU9TUkVudHJ5IGlzIHdyb25nIHdoZW4gaXNIZWFwVG9wIGFuZCB0aGUg
aW5jb21pbmcgdmFsdWUgaXMgRW1wdHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE5NTcyMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogU2NyaXB0cy9ydW4tamF2YXNjcmlwdGNvcmUtdGVzdHM6CisKIDIw
MTktMDMtMjAgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIFJF
R1JFU1NJT04gKHIyNDMxNTMpOiBbaU9TXSBUZXN0V2ViS2l0QVBJLkZvY3VzUHJlc2VydmF0aW9u
VGVzdHMuQ2hhbmdpbmdGb2N1c2VkTm9kZVJlc2V0c0ZvY3VzUHJlc2VydmF0aW9uU3RhdGUgaXMg
ZmFpbGluZwpJbmRleDogVG9vbHMvU2NyaXB0cy9ydW4tamF2YXNjcmlwdGNvcmUtdGVzdHMKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9ydW4tamF2YXNjcmlwdGNvcmUtdGVzdHMJKHJldmlz
aW9uIDI0MzIzOCkKKysrIFRvb2xzL1NjcmlwdHMvcnVuLWphdmFzY3JpcHRjb3JlLXRlc3RzCSh3
b3JraW5nIGNvcHkpCkBAIC03MSw2ICs3MSw3IEBAIHVzZSBjb25zdGFudCB7CiBteSAkcnVuVGVz
dE1hc20gPSBSVU5fSUZfTk9fVEVTVFNfU1BFQ0lGSUVEOwogbXkgJHJ1blRlc3RBaXIgPSBSVU5f
SUZfTk9fVEVTVFNfU1BFQ0lGSUVEOwogbXkgJHJ1blRlc3RCMyA9IFJVTl9JRl9OT19URVNUU19T
UEVDSUZJRUQ7CitteSAkcnVuVGVzdERGRyA9IFJVTl9JRl9OT19URVNUU19TUEVDSUZJRUQ7CiBt
eSAkcnVuVGVzdEFQSSA9IFJVTl9JRl9OT19URVNUU19TUEVDSUZJRUQ7CiBteSAkcnVuSlNDU3Ry
ZXNzID0gUlVOX0lGX05PX1RFU1RTX1NQRUNJRklFRDsKIG15ICRydW5Nb3ppbGxhVGVzdHMgPSBS
VU5fSUZfTk9fVEVTVFNfU1BFQ0lGSUVEOwpAQCAtMTI4LDYgKzEyOSwxNyBAQCBpZiAoJEVOVntS
VU5fSkFWQVNDUklQVENPUkVfVEVTVFNfVEVTVEIzCiAgICAgfQogfQogCitpZiAoJEVOVntSVU5f
SkFWQVNDUklQVENPUkVfVEVTVFNfVEVTVERGR30pIHsKKyAgICBpZiAoJEVOVntSVU5fSkFWQVND
UklQVENPUkVfVEVTVFNfVEVTVERGR30gZXEgInRydWUiKSB7CisgICAgICAgICRydW5UZXN0REZH
ID0gRU5WX1ZBUl9TQVlTX0RPX1JVTjsKKyAgICB9IGVsc2lmICgkRU5We1JVTl9KQVZBU0NSSVBU
Q09SRV9URVNUU19URVNUREZHfSBlcSAiZmFsc2UiKSB7CisgICAgICAgICRydW5UZXN0REZHID0g
RU5WX1ZBUl9TQVlTX0RPTlRfUlVOOworICAgIH0gZWxzZSB7CisgICAgICAgIHByaW50ICJEb24n
dCByZWNvZ25pemUgdmFsdWUgZm9yIFJVTl9KQVZBU0NSSVBUQ09SRV9URVNUU19URVNUREZHIGVu
dmlyb25tZW50IHZhcmlhYmxlOiAnIgorICAgICAgICAgICAgLiAkRU5We1JVTl9KQVZBU0NSSVBU
Q09SRV9URVNUU19URVNUREZHfSAuICInLiBTaG91bGQgYmUgc2V0IHRvICd0cnVlJyBvciAnZmFs
c2UnLlxuIjsKKyAgICB9Cit9CisKIGlmICgkRU5We1JVTl9KQVZBU0NSSVBUQ09SRV9URVNUU19U
RVNUQVBJfSkgewogICAgIGlmICgkRU5We1JVTl9KQVZBU0NSSVBUQ09SRV9URVNUU19URVNUQVBJ
fSBlcSAidHJ1ZSIpIHsKICAgICAgICAgJHJ1blRlc3RBUEkgPSBFTlZfVkFSX1NBWVNfRE9fUlVO
OwpAQCAtMTgxLDYgKzE5Myw3IEBAIG15ICRidWlsZEpTQ0RlZmF1bHQgPSAkYnVpbGRKU0MgPyAi
d2lsbCAKIG15ICR0ZXN0bWFzbURlZmF1bHQgPSBkZWZhdWx0U3RyaW5nRm9yVGVzdFN0YXRlKCRy
dW5UZXN0TWFzbSk7CiBteSAkdGVzdGFpckRlZmF1bHQgPSBkZWZhdWx0U3RyaW5nRm9yVGVzdFN0
YXRlKCRydW5UZXN0QWlyKTsKIG15ICR0ZXN0YjNEZWZhdWx0ID0gZGVmYXVsdFN0cmluZ0ZvclRl
c3RTdGF0ZSgkcnVuVGVzdEIzKTsKK215ICR0ZXN0REZHRGVmYXVsdCA9IGRlZmF1bHRTdHJpbmdG
b3JUZXN0U3RhdGUoJHJ1blRlc3RERkcpOwogbXkgJHRlc3RhcGlEZWZhdWx0ID0gZGVmYXVsdFN0
cmluZ0ZvclRlc3RTdGF0ZSgkcnVuVGVzdEFQSSk7CiBteSAkanNjU3RyZXNzRGVmYXVsdCA9IGRl
ZmF1bHRTdHJpbmdGb3JUZXN0U3RhdGUoJHJ1bkpTQ1N0cmVzcyk7CiBteSAkbW96aWxsYVRlc3Rz
RGVmYXVsdCA9IGRlZmF1bHRTdHJpbmdGb3JUZXN0U3RhdGUoJHJ1bk1vemlsbGFUZXN0cyk7CkBA
IC0xOTgsNiArMjExLDcgQEAgVXNhZ2U6ICRwcm9ncmFtTmFtZSBbb3B0aW9uc10gW29wdGlvbnMg
dAogICAtLVtuby1ddGVzdG1hc20gICAgICAgICAgICAgICBPbmx5IHJ1biAob3IgZG9uJ3QgcnVu
KSB0ZXN0bWFzbSAoZGVmYXVsdDogJHRlc3RtYXNtRGVmYXVsdCkKICAgLS1bbm8tXXRlc3RhaXIg
ICAgICAgICAgICAgICAgT25seSBydW4gKG9yIGRvbid0IHJ1bikgdGVzdGFpciAoZGVmYXVsdDog
JHRlc3RhaXJEZWZhdWx0KQogICAtLVtuby1ddGVzdGIzICAgICAgICAgICAgICAgICBPbmx5IHJ1
biAob3IgZG9uJ3QgcnVuKSB0ZXN0YjMgKGRlZmF1bHQ6ICR0ZXN0YjNEZWZhdWx0KQorICAtLVtu
by1ddGVzdGRmZyAgICAgICAgICAgICAgICBPbmx5IHJ1biAob3IgZG9uJ3QgcnVuKSB0ZXN0ZGZn
IChkZWZhdWx0OiAkdGVzdERGR0RlZmF1bHQpCiAgIC0tW25vLV10ZXN0YXBpICAgICAgICAgICAg
ICAgIE9ubHkgcnVuIChvciBkb24ndCBydW4pIHRlc3RhcGkgKGRlZmF1bHQ6ICR0ZXN0YXBpRGVm
YXVsdCkKICAgLS1bbm8tXWpzYy1zdHJlc3MgICAgICAgICAgICAgT25seSBydW4gKG9yIGRvbid0
IHJ1bikgdGhlIEpTQyBzdHJlc3MgdGVzdHMgKGRlZmF1bHQ6ICRqc2NTdHJlc3NEZWZhdWx0KQog
ICAtLVtuby1dbW96aWxsYS10ZXN0cyAgICAgICAgICBPbmx5IHJ1biAob3IgZG9uJ3QgcnVuKSB0
aGUgTW96aWxsYSB0ZXN0cyAoZGVmYXVsdDogJG1vemlsbGFUZXN0c0RlZmF1bHQpCkBAIC0yMzgs
NiArMjUyLDcgQEAgRW52aXJvbm1lbnQgVmFyaWFibGVzOgogICAtIHNldCBSVU5fSkFWQVNDUklQ
VENPUkVfVEVTVFNfVEVTVE1BU00gdG8gInRydWUiIG9yICJmYWxzZSIgKG5vIHF1b3RlcykgdG8g
ZGV0ZXJtaW5lIGlmIHdlIHJ1biB0ZXN0bWFzbSBieSBkZWZhdWx0LgogICAtIHNldCBSVU5fSkFW
QVNDUklQVENPUkVfVEVTVFNfVEVTVEFJUiB0byAidHJ1ZSIgb3IgImZhbHNlIiAobm8gcXVvdGVz
KSB0byBkZXRlcm1pbmUgaWYgd2UgcnVuIHRlc3RhaXIgYnkgZGVmYXVsdC4KICAgLSBzZXQgUlVO
X0pBVkFTQ1JJUFRDT1JFX1RFU1RTX1RFU1RCMyB0byAidHJ1ZSIgb3IgImZhbHNlIiAobm8gcXVv
dGVzKSB0byBkZXRlcm1pbmUgaWYgd2UgcnVuIHRlc3RiMyBieSBkZWZhdWx0LgorICAtIHNldCBS
VU5fSkFWQVNDUklQVENPUkVfVEVTVFNfVEVTVERGRyB0byAidHJ1ZSIgb3IgImZhbHNlIiAobm8g
cXVvdGVzKSB0byBkZXRlcm1pbmUgaWYgd2UgcnVuIHRlc3RkZmcgYnkgZGVmYXVsdC4KICAgLSBz
ZXQgUlVOX0pBVkFTQ1JJUFRDT1JFX1RFU1RTX1RFU1RBUEkgdG8gInRydWUiIG9yICJmYWxzZSIg
KG5vIHF1b3RlcykgdG8gZGV0ZXJtaW5lIGlmIHdlIHJ1biB0ZXN0YXBpIGJ5IGRlZmF1bHQuCiAg
IC0gc2V0IFJVTl9KQVZBU0NSSVBUQ09SRV9URVNUU19CVUlMRCB0byAidHJ1ZSIgb3IgImZhbHNl
IiAobm8gcXVvdGVzKSB0byBzZXQgdGhlIHNob3VsZC13ZS1idWlsZC1iZWZvcmUtcnVubmluZy10
ZXN0cyBzZXR0aW5nLgogICAtIHNldCBSVU5fSkFWQVNDUklQVENPUkVfVEVTVFNfRVhUUkFfVEVT
VFMgdG8gdGhlIHBhdGggb2YgYSB5YW1sIGZpbGUgb3IgYSBkaXJlY3Rvcnkgb2YgSlMgZmlsZXMg
dG8gYmUgcnVuIGFzIHBhcnQgb2YgcnVuLWphdmFzY3JpcHRjb3JlLXRlc3RzLgpAQCAtMjU3LDYg
KzI3Miw3IEBAIEdldE9wdGlvbnMoCiAgICAgJ3Rlc3RtYXNtIScgPT4gXCRydW5UZXN0TWFzbSwK
ICAgICAndGVzdGFpciEnID0+IFwkcnVuVGVzdEFpciwKICAgICAndGVzdGIzIScgPT4gXCRydW5U
ZXN0QjMsCisgICAgJ3Rlc3RkZmchJyA9PiBcJHJ1blRlc3RERkcsCiAgICAgJ3Rlc3RhcGkhJyA9
PiBcJHJ1blRlc3RBUEksCiAgICAgJ2pzYy1zdHJlc3MhJyA9PiBcJHJ1bkpTQ1N0cmVzcywKICAg
ICAnbW96aWxsYS10ZXN0cyEnID0+IFwkcnVuTW96aWxsYVRlc3RzLApAQCAtMjg3LDYgKzMwMyw3
IEBAIG15ICRzcGVjaWZpY1Rlc3RzU3BlY2lmaWVkID0gMDsKIGlmICgkcnVuVGVzdE1hc20gPT0g
RE9fUlVOCiAgICB8fCAkcnVuVGVzdEFpciA9PSBET19SVU4KICAgIHx8ICRydW5UZXN0QjMgPT0g
RE9fUlVOCisgICB8fCAkcnVuVGVzdERGRyA9PSBET19SVU4KICAgIHx8ICRydW5UZXN0QVBJID09
IERPX1JVTgogICAgfHwgJHJ1bkpTQ1N0cmVzcyA9PSBET19SVU4KICAgIHx8ICRydW5Nb3ppbGxh
VGVzdHMgPT0gRE9fUlVOKSB7CkBAIC0zMDYsNiArMzIzLDcgQEAgc3ViIGVuYWJsZVRlc3RPck5v
dCB7CiAkcnVuVGVzdE1hc20gPSBlbmFibGVUZXN0T3JOb3QoJHJ1blRlc3RNYXNtKTsKICRydW5U
ZXN0QWlyID0gZW5hYmxlVGVzdE9yTm90KCRydW5UZXN0QWlyKTsKICRydW5UZXN0QjMgPSBlbmFi
bGVUZXN0T3JOb3QoJHJ1blRlc3RCMyk7CiskcnVuVGVzdERGRyA9IGVuYWJsZVRlc3RPck5vdCgk
cnVuVGVzdERGRyk7CiAkcnVuVGVzdEFQSSA9IGVuYWJsZVRlc3RPck5vdCgkcnVuVGVzdEFQSSk7
CiAkcnVuSlNDU3RyZXNzID0gZW5hYmxlVGVzdE9yTm90KCRydW5KU0NTdHJlc3MpOwogJHJ1bk1v
emlsbGFUZXN0cyA9IGVuYWJsZVRlc3RPck5vdCgkcnVuTW96aWxsYVRlc3RzKTsKQEAgLTM5NCw2
ICs0MTIsNyBAQCBzdWIgcnVuVGVzdCB7CiBpZiAoJHJ1blRlc3RNYXNtKSB7IHJ1blRlc3QoInRl
c3RtYXNtIiwgImFsbE1hc21UZXN0c1Bhc3NlZCIpIH0KIGlmICgkcnVuVGVzdEFpcikgeyBydW5U
ZXN0KCJ0ZXN0YWlyIiwgImFsbEFpclRlc3RzUGFzc2VkIikgfQogaWYgKCRydW5UZXN0QjMpIHsg
cnVuVGVzdCgidGVzdGIzIiwgImFsbEIzVGVzdHNQYXNzZWQiKSB9CitpZiAoJHJ1blRlc3RERkcp
IHsgcnVuVGVzdCgidGVzdGRmZyIsICJhbGxERkdUZXN0c1Bhc3NlZCIpIH0KIGlmICgkcnVuVGVz
dEFQSSkgeyBydW5UZXN0KCJ0ZXN0YXBpIiwgImFsbEFwaVRlc3RzUGFzc2VkIikgfQogCiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>