<?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>140601</bug_id>
          
          <creation_ts>2015-01-18 16:55:28 -0800</creation_ts>
          <short_desc>Merge API::ProcessPoolConfiguration and _WKProcessPoolConfiguration</short_desc>
          <delta_ts>2015-01-20 09:51:32 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          <cc>andersca</cc>
    
    <cc>ossy</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1062236</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2015-01-18 16:55:28 -0800</bug_when>
    <thetext>Merge API::ProcessPoolConfiguration and _WKProcessPoolConfiguration</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1062248</commentid>
    <comment_count>1</comment_count>
      <attachid>244871</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2015-01-18 18:33:07 -0800</bug_when>
    <thetext>Created attachment 244871
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1062249</commentid>
    <comment_count>2</comment_count>
      <attachid>244872</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2015-01-18 18:39:10 -0800</bug_when>
    <thetext>Created attachment 244872
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1062555</commentid>
    <comment_count>3</comment_count>
      <attachid>244872</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2015-01-19 16:57:01 -0800</bug_when>
    <thetext>Comment on attachment 244872
Patch

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

&gt; Source/WebKit2/UIProcess/WebInspectorProxy.cpp:376
&gt;      static WebProcessPool* processPool;
&gt;      if (!processPool) {
&gt; -        WebProcessPoolConfiguration configuration;
&gt; -        WebProcessPool::applyPlatformSpecificConfigurationDefaults(configuration);
&gt; -        
&gt; -        processPool = (WebProcessPool::create(WTF::move(configuration))).leakRef();
&gt; -        processPool-&gt;setProcessModel(ProcessModelMultipleSecondaryProcesses);
&gt; +        auto configuration = API::ProcessPoolConfiguration::createWithLegacyOptions();
&gt; +        configuration-&gt;setProcessModel(ProcessModelMultipleSecondaryProcesses);
&gt; +
&gt; +        processPool = &amp;(WebProcessPool::create(configuration.get())).leakRef();
&gt;      }

I think you should initialize this with a lambda:

static WebProcessPool&amp; processPool = []{
    ...
    return WebProcessPool::create(configuration.get())).leakRef();
}();</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1062570</commentid>
    <comment_count>4</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2015-01-19 17:35:47 -0800</bug_when>
    <thetext>Committed r178685: &lt;http://trac.webkit.org/changeset/178685&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1062659</commentid>
    <comment_count>5</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2015-01-19 23:55:03 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; Committed r178685: &lt;http://trac.webkit.org/changeset/178685&gt;

It broke the Apple Mountain Lion and EFL bots:
EFL bot - before: https://build.webkit.org/builders/EFL%20Linux%2064-bit%20Release%20WK2/builds/19081
EFL bot - after: https://build.webkit.org/builders/EFL%20Linux%2064-bit%20Release%20WK2/builds/19082
Apple Mountain Lion bot - before: https://build.webkit.org/builders/Apple%20MountainLion%20Release%20WK2%20%28Tests%29/builds/23657
Apple Mountain Lion bot - after: https://build.webkit.org/builders/Apple%20MountainLion%20Release%20WK2%20%28Tests%29/builds/23658

Could you possibly fix this regression?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1062782</commentid>
    <comment_count>6</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2015-01-20 09:51:32 -0800</bug_when>
    <thetext>Attempt to fix tests in r178720.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>244871</attachid>
            <date>2015-01-18 18:33:07 -0800</date>
            <delta_ts>2015-01-18 18:39:07 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-140601-20150118183313.patch</filename>
            <type>text/plain</type>
            <size>60565</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE3ODYzNikKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1MiBAQAorMjAxNS0wMS0xOCAgU2FtIFdl
aW5pZyAgPHNhbUB3ZWJraXQub3JnPgorCisgICAgICAgIE1lcmdlIEFQSTo6UHJvY2Vzc1Bvb2xD
b25maWd1cmF0aW9uIGFuZCBfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MDYwMQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIC0gQ29udmVydHMgX1dLUHJvY2Vz
c1Bvb2xDb25maWd1cmF0aW9uIHRvIGJlIGJhY2tlZCB2aWEgQVBJOjpQcm9jZXNzUG9vbENvbmZp
Z3VyYXRpb24uCisgICAgICAgIC0gRXhwYW5kcyBBUEk6OlByb2Nlc3NQb29sQ29uZmlndXJhdGlv
biB0byBhZGQgYWxsIHRoZSBwYXJhbWV0ZXJzIG5lY2Vzc2FyeSB0byBmdWxseQorICAgICAgICAg
IGluaXRpYWxpemUgYSBXZWJQcm9jZXNzUG9vbC4gVGhpcyBhbGxvd3MgLVtXS1Byb2Nlc3NQb29s
IF9pbml0V2l0aENvbmZpZ3VyYXRpb246XSB0bworICAgICAgICAgIGJlIGEgc2ltcGxlIHBhc3Mg
dGhyb3VnaCBpbml0aWFsaXplciwgd2hpY2ggaW4gdHVybiBhbGxvd3MgdXMgdG8gY29uc2lkZXIg
V2ViUHJvY2Vzc1Bvb2xzCisgICAgICAgICAgY3JlYXRlZCBvbiB0aGUgQysrIGFuZCBPYmplY3Rp
dmUtQyBzaWRlcyBhcyBlcXVpdmFsZW50LgorICAgICAgICAtIE1ha2VzIFdlYlByb2Nlc3NQb29s
IG93biB0aGUgcmVmZXJlbmNlIHRvIHRoZSBBUEk6OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiAo
cmF0aGVyIHRoYW4KKyAgICAgICAgICB0aGUgV0tQcm9jZXNzUG9vbCB3cmFwcGVyKS4KKworICAg
ICAgICAqIFNoYXJlZC9Db2NvYS9BUElPYmplY3QubW06CisgICAgICAgIChBUEk6Ok9iamVjdDo6
bmV3T2JqZWN0KToKKyAgICAgICAgQ3JlYXRlIHRoZSBBUEk6OlByb2Nlc3NQb29sQ29uZmlndXJh
dGlvbnMgdXNpbmcgW19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBhbGxvY10gYXMgaXRzIAor
ICAgICAgICBzdG9yYWdlLi4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bv
b2xDb25maWd1cmF0aW9uLmNwcDoKKyAgICAgICAgKEFQSTo6UHJvY2Vzc1Bvb2xDb25maWd1cmF0
aW9uOjpjcmVhdGUpOgorICAgICAgICAoQVBJOjpQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb246OmNy
ZWF0ZVdpdGhMZWdhY3lPcHRpb25zKToKKyAgICAgICAgKEFQSTo6UHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uOjpQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24pOgorICAgICAgICAoQVBJOjpQcm9jZXNz
UG9vbENvbmZpZ3VyYXRpb246On5Qcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24pOgorICAgICAgICAo
QVBJOjpQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb246OmNvcHkpOgorICAgICAgICAoQVBJOjpQcm9j
ZXNzUG9vbENvbmZpZ3VyYXRpb246OndlYlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbik6IERlbGV0
ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24u
aDoKKyAgICAgICAgQWRkIHRoZSByZW1haW5pbmcgaW5pdGlhbGl6YXRpb24gcGFyYW1ldGVycyBh
bmQgYWRkIGEgY29udmVuaWVuY2UgY3JlYXRlIGZ1bmN0aW9uCisgICAgICAgIGZvciBjb25maWd1
cmluZyBsZWdhY3kgV2ViUHJvY2Vzc1Bvb2xzIChmb3IgdXNlIGJ5IHRoZSBDLVNQSSkuCisKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVEYXRhU3RvcmUuY3BwOgorICAgICAgICAo
QVBJOjpXZWJzaXRlRGF0YVN0b3JlOjp3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXBy
ZXNlbnRhdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlRGF0YVN0b3Jl
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElXZWJzaXRlRGF0YVN0b3JlQ29j
b2EubW06CisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OndlYnNpdGVEYXRhRGlyZWN0
b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFT
dG9yZTo6ZGVmYXVsdERhdGFTdG9yZUNvbmZpZ3VyYXRpb24pOgorICAgICAgICBFeHBvc2UgaGVs
cGVyIGZvciBnZXR0aW5nIHRoZSB3ZWJzaXRlIGRhdGEgZGlyZWN0b3JpZXMgZm9yIHVzZSBpbiB0
aGUgUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9D
L1dLQ29udGV4dC5jcHA6CisgICAgICAgIChXS0NvbnRleHRDcmVhdGUpOgorICAgICAgICAoV0tD
b250ZXh0Q3JlYXRlV2l0aEluamVjdGVkQnVuZGxlUGF0aCk6CisgICAgICAgIChXS0NvbnRleHRD
cmVhdGVXaXRoQ29uZmlndXJhdGlvbik6CisgICAgICAgIFVzZSBQcm9jZXNzUG9vbENvbmZpZ3Vy
YXRpb246OmNyZWF0ZVdpdGhMZWdhY3lPcHRpb25zKCkgdG8ga2VlcCBiYWNrd2FyZHMgY29tcGF0
aWJpbGl0eS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHRDb25maWd1cmF0
aW9uUmVmLmNwcDoKKyAgICAgICAgKFdLQ29udGV4dENvbmZpZ3VyYXRpb25DcmVhdGUpOgorICAg
ICAgICBVcGRhdGUgZm9yIFByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjo6Y3JlYXRlKCkgcmV0dXJu
aW5nIGEgUmVmLiBOb3RlLCB0aGlzIGZ1bmN0aW9uCisgICAgICAgIHdhcyBub3QgY2hhbmdlZCB0
byBjYWxsIFByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjo6Y3JlYXRlV2l0aExlZ2FjeU9wdGlvbnMo
KSBzaW5jZQorICAgICAgICBpdCBoYXMgbm90IGJlZW4gYXJvdW5kIGxvbmcgZW5vdWdoIHRvIHdh
cnJhbnQgaXQuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc0dyb3Vw
Lm1tOgorICAgICAgICAoLVtXS1Byb2Nlc3NHcm91cCBpbml0V2l0aEluamVjdGVkQnVuZGxlVVJM
Ol0pOgorICAgICAgICBVc2UgUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOjpjcmVhdGVXaXRoTGVn
YWN5T3B0aW9ucygpIHRvIGtlZXAgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkuCisKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW06CisgICAgICAgICgtW1dLUHJv
Y2Vzc1Bvb2wgZGVzY3JpcHRpb25dKToKKyAgICAgICAgQ2hhbmdlIHRvIHB1bGwgdGhlIGNvbmZp
Z3VyYXRpb24gZnJvbSB0aGUgdW5kZXJseWluZyBBUEk6Ok9iamVjdC4KKworICAgICAgICAoLVtX
S1Byb2Nlc3NQb29sIF9jb25maWd1cmF0aW9uXSk6CisgICAgICAgIENoYW5nZSB0byBwdWxsIHRo
ZSBjb25maWd1cmF0aW9uIGZyb20gdGhlIHVuZGVybHlpbmcgQVBJOjpPYmplY3QgYW5kIGNhbGwg
dGhlIG5ldworICAgICAgICBjb3B5KCkgaGVscGVyIG9uIGl0LgorICAgICAgICAKKyAgICAgICAg
KC1bV0tQcm9jZXNzUG9vbCBfaW5pdFdpdGhDb25maWd1cmF0aW9uOl0pOgorICAgICAgICBDb252
ZXJ0IHRvIGJlIGEgc2ltcGxlIHBhc3MgdGhyb3VnaCB0byBBUEk6Ok9iamVjdDo6Y29uc3RydWN0
SW5XcmFwcGVyLgorCisgICAgICAgICh3ZWJzaXRlRGF0YURpcmVjdG9yeVVSTCk6IERlbGV0ZWQu
CisgICAgICAgIE1vdmVkIHRvIEFQSVdlYnNpdGVEYXRhU3RvcmUuaAorCisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sSW50ZXJuYWwuaDoKKyAgICAgICAgUmVtb3Zl
cyB0aGUgX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIG1lbWJlciwgbm93IHRoYXQgaXQgaXMg
c3RvcmVkIG9uIHRoZSBXZWJQcm9jZXNzUG9vbC4KKyAgICAgICAgCisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9Db2NvYS9fV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24ubW06CisgICAgICAgICgt
W19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBpbml0XSk6CisgICAgICAgICgtW19XS1Byb2Nl
c3NQb29sQ29uZmlndXJhdGlvbiBkZWFsbG9jXSk6CisgICAgICAgIEFkZGVkIHRvIHN1cHBvcnQg
QVBJOjpPYmplY3QgYnJpZGdpbmcuCisKKyAgICAgICAgKC1bX1dLUHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uIGluamVjdGVkQnVuZGxlVVJMXSk6CisgICAgICAgICgtW19XS1Byb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbiBzZXRJbmplY3RlZEJ1bmRsZVVSTDpdKToKKyAgICAgICAgQ29udmVydCB0byBn
ZXR0aW5nIHRoZSBVUkwgZnJvbSB0aGUgdW5kZXJseWluZyBvYmplY3QuIE1vdmVkIHRoZSBleGNl
cHRpb24KKyAgICAgICAgdGhhdCB1c2VkIHRvIGJlIG9uIGNyZWF0aW9uIG9mIHRoZSBXS1Byb2Nl
c3NQb29sLgorCisgICAgICAgICgtW19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBtYXhpbXVt
UHJvY2Vzc0NvdW50XSk6CisgICAgICAgICgtW19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBz
ZXRNYXhpbXVtUHJvY2Vzc0NvdW50Ol0pOgorICAgICAgICBDb252ZXJ0IHRvIGdldHRpbmcgdGhl
IGNvdW50IGZyb20gdGhlIHVuZGVybHlpbmcgb2JqZWN0LgorCisgICAgICAgICgtW19XS1Byb2Nl
c3NQb29sQ29uZmlndXJhdGlvbiBjYWNoZVBhcnRpdGlvbmVkVVJMU2NoZW1lc10pOgorICAgICAg
ICBDb252ZXJ0IHRvIGNvbnN0cnVjdGluZyB0aGUgTlNBcnJheSBvbiBkZW1hbmQgZnJvbSB0aGUg
dW5kZXJseWluZyBWZWN0b3IuCisKKyAgICAgICAgKC1bX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0
aW9uIHNldENhY2hlUGFydGl0aW9uZWRVUkxTY2hlbWVzOl0pOgorICAgICAgICBDb252ZXJ0cyB0
aGUgTlNBcnJheSB0byBhIFZlY3RvciByYXRoZXIgdGhhbiBzdG9yaW5nIHRoZSBhcnJheS4KKwor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9u
SW50ZXJuYWwuaDogQWRkZWQuCisgICAgICAgIChBUEk6OndyYXBwZXIpOgorICAgICAgICBBZGQg
Ym9pbGVycGxhdGUgZm9yIEFQSTo6T2JqZWN0IGJyaWRnaW5nLgorCisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5jcHA6CisgICAgICAgICh3ZWJraXRXZWJDb250
ZXh0Q29uc3RydWN0ZWQpOgorICAgICAgICBVcGRhdGUgdG8gdXNlIEFQSTo6UHJvY2Vzc1Bvb2xD
b25maWd1cmF0aW9uOjpjcmVhdGVXaXRoTGVnYWN5T3B0aW9ucygpIHRvIGtlZXAgYmFja3dhcmRz
IGNvbXBhdGliaWxpdHkuCisKKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94
eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5OjppbnNwZWN0b3JQcm9j
ZXNzUG9vbCk6CisgICAgICAgIFVwZGF0ZSB0byBjYWxsIEFQSTo6UHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uOjpjcmVhdGVXaXRoTGVnYWN5T3B0aW9ucygpLgorCisgICAgICAgICogVUlQcm9jZXNz
L1dlYlByb2Nlc3NQb29sLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OndlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OldlYlByb2Nlc3NQb29sKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmFwcGx5UGxhdGZvcm1TcGVjaWZpY0NvbmZpZ3Vy
YXRpb25EZWZhdWx0cyk6IERlbGV0ZWQuCisgICAgICAgIFRoaXMgZnVuY3Rpb25hbGl0eSB3YXMg
bW92ZWQgdG8gdGhlIGNvbnN0cnVjdG9yIG9mIHRoZSBBUEk6OlByb2Nlc3NQb29sQ29uZmlndXJh
dGlvbi4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaDoKKyAgICAgICAgQ2hh
bmdlZCB0byB0YWtlIChhbmQgc3RvcmUpIGEgQVBJOjpQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24g
cmF0aGVyIHRoYW4gdGhlIFdlYlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi4KKworICAgICAgICAq
IFVJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tOgorICAgICAgICAoV2ViS2l0
OjpXZWJQcm9jZXNzUG9vbDo6bGVnYWN5UGxhdGZvcm1EZWZhdWx0V2ViU1FMRGF0YWJhc2VEaXJl
Y3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6bGVnYWN5UGxhdGZvcm1E
ZWZhdWx0SW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
cm9jZXNzUG9vbDo6bGVnYWN5UGxhdGZvcm1EZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KToK
KyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmxlZ2FjeVBsYXRmb3JtRGVmYXVsdE1l
ZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9v
bDo6cGxhdGZvcm1EZWZhdWx0SWNvbkRhdGFiYXNlUGF0aCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3NQb29sOjpwbGF0Zm9ybURlZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybURlZmF1bHRJ
bmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3NQb29sOjpwbGF0Zm9ybURlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1EZWZhdWx0TWVk
aWFLZXlzU3RvcmFnZURpcmVjdG9yeSk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL2Vm
bC9XZWJDb250ZXh0RWZsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6Omxl
Z2FjeVBsYXRmb3JtRGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KToKKyAgICAgICAgKFdl
YktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmxlZ2FjeVBsYXRmb3JtRGVmYXVsdEluZGV4ZWREQkRhdGFi
YXNlRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmxlZ2FjeVBs
YXRmb3JtRGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3NQb29sOjpsZWdhY3lQbGF0Zm9ybURlZmF1bHRNZWRpYUtleXNTdG9yYWdlRGlyZWN0
b3J5KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmxlZ2FjeVBsYXRmb3JtRGVm
YXVsdERpc2tDYWNoZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29s
OjpwbGF0Zm9ybURlZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeSk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybURlZmF1bHRJbmRleGVkREJEYXRh
YmFzZURpcmVjdG9yeSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29s
OjpwbGF0Zm9ybURlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1EZWZhdWx0TWVkaWFLZXlzU3RvcmFn
ZURpcmVjdG9yeSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpw
bGF0Zm9ybURlZmF1bHREaXNrQ2FjaGVEaXJlY3RvcnkpOiBEZWxldGVkLgorICAgICAgICAqIFVJ
UHJvY2Vzcy9ndGsvV2ViUHJvY2Vzc1Bvb2xHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
cm9jZXNzUG9vbDo6bGVnYWN5UGxhdGZvcm1EZWZhdWx0V2ViU1FMRGF0YWJhc2VEaXJlY3Rvcnkp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6bGVnYWN5UGxhdGZvcm1EZWZhdWx0
SW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNz
UG9vbDo6bGVnYWN5UGxhdGZvcm1EZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmxlZ2FjeVBsYXRmb3JtRGVmYXVsdE1lZGlhS2V5
c1N0b3JhZ2VEaXJlY3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6cGxh
dGZvcm1EZWZhdWx0V2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkpOiBEZWxldGVkLgorICAgICAgICAo
V2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1EZWZhdWx0SW5kZXhlZERCRGF0YWJhc2VE
aXJlY3RvcnkpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6cGxh
dGZvcm1EZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtRGVmYXVsdE1lZGlhS2V5c1N0b3JhZ2VEaXJl
Y3RvcnkpOiBEZWxldGVkLgorICAgICAgICBSZW5hbWVkIHRvIG1ha2UgaXQgY2xlYXIgdGhlc2Ug
d2VyZSB0aGUgbGVnYWN5IGxvY2F0aW9ucyBmb3IgdGhlc2UgZGlyZWN0b3JpZXMuCisKKyAgICAg
ICAgKiBXZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgIEFkZGVkIG5l
dyBmaWxlcy4KKwogMjAxNS0wMS0xOCAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+
CiAKICAgICAgICAgQXR0ZW1wdCB0byBmaXggdGhlIGlPUyBidWlsZCBhZnRlciA8aHR0cDovL3Ry
YWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMTc4NjMxPgpJbmRleDogU291cmNlL1dlYktpdDIvU2hh
cmVkL0NvY29hL0FQSU9iamVjdC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvQ29jb2EvQVBJT2JqZWN0Lm1tCShyZXZpc2lvbiAxNzg2MzMpCisrKyBTb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvQ29jb2EvQVBJT2JqZWN0Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC01NSw2ICs1NSw3
IEBACiAjaW1wb3J0ICJXS1dlYlByb2Nlc3NQbHVnSW5TY3JpcHRXb3JsZEludGVybmFsLmgiCiAj
aW1wb3J0ICJfV0tEb3dubG9hZEludGVybmFsLmgiCiAjaW1wb3J0ICJfV0tGcmFtZUhhbmRsZUlu
dGVybmFsLmgiCisjaW1wb3J0ICJfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb25JbnRlcm5hbC5o
IgogI2ltcG9ydCAiX1dLV2Vic2l0ZURhdGFTdG9yZUludGVybmFsLmgiCiAjaW1wb3J0IDxvYmpj
L29iamMtYXV0by5oPgogCkBAIC0xMTEsNiArMTEyLDEwIEBAIHZvaWQqIE9iamVjdDo6bmV3T2Jq
ZWN0KHNpemVfdCBzaXplLCBUeXAKICAgICAgICAgd3JhcHBlciA9IFtXS1Byb2Nlc3NQb29sIGFs
bG9jXTsKICAgICAgICAgYnJlYWs7CiAKKyAgICBjYXNlIFR5cGU6OlByb2Nlc3NQb29sQ29uZmln
dXJhdGlvbjoKKyAgICAgICAgd3JhcHBlciA9IFtfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24g
YWxsb2NdOworICAgICAgICBicmVhazsKKwogICAgIGNhc2UgVHlwZTo6RGF0YToKICAgICAgICAg
d3JhcHBlciA9IFtXS05TRGF0YSBhbGxvY107CiAgICAgICAgIGJyZWFrOwpJbmRleDogU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkuY3BwCShyZXZpc2lvbiAx
Nzg2MzMpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiAKICNpZiBFTkFCTEUoSU5TUEVDVE9S
KQogCisjaW5jbHVkZSAiQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmgiCiAjaW5jbHVkZSAi
QVBJVVJMUmVxdWVzdC5oIgogI2luY2x1ZGUgIldlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eS5o
IgogI2luY2x1ZGUgIldlYkZyYW1lUHJveHkuaCIKQEAgLTM2OCwxMSArMzY5LDEwIEBAIFdlYlBy
b2Nlc3NQb29sJiBXZWJJbnNwZWN0b3JQcm94eTo6aW5zcGUKIAogICAgIHN0YXRpYyBXZWJQcm9j
ZXNzUG9vbCogcHJvY2Vzc1Bvb2w7CiAgICAgaWYgKCFwcm9jZXNzUG9vbCkgewotICAgICAgICBX
ZWJQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbjsKLSAgICAgICAgV2ViUHJv
Y2Vzc1Bvb2w6OmFwcGx5UGxhdGZvcm1TcGVjaWZpY0NvbmZpZ3VyYXRpb25EZWZhdWx0cyhjb25m
aWd1cmF0aW9uKTsKLSAgICAgICAgCi0gICAgICAgIHByb2Nlc3NQb29sID0gKFdlYlByb2Nlc3NQ
b29sOjpjcmVhdGUoV1RGOjptb3ZlKGNvbmZpZ3VyYXRpb24pKSkubGVha1JlZigpOwotICAgICAg
ICBwcm9jZXNzUG9vbC0+c2V0UHJvY2Vzc01vZGVsKFByb2Nlc3NNb2RlbE11bHRpcGxlU2Vjb25k
YXJ5UHJvY2Vzc2VzKTsKKyAgICAgICAgYXV0byBjb25maWd1cmF0aW9uID0gQVBJOjpQcm9jZXNz
UG9vbENvbmZpZ3VyYXRpb246OmNyZWF0ZVdpdGhMZWdhY3lPcHRpb25zKCk7CisgICAgICAgIGNv
bmZpZ3VyYXRpb24tPnNldFByb2Nlc3NNb2RlbChQcm9jZXNzTW9kZWxNdWx0aXBsZVNlY29uZGFy
eVByb2Nlc3Nlcyk7CisKKyAgICAgICAgcHJvY2Vzc1Bvb2wgPSAmKFdlYlByb2Nlc3NQb29sOjpj
cmVhdGUoY29uZmlndXJhdGlvbi5nZXQoKSkpLmxlYWtSZWYoKTsKICAgICB9CiAKICAgICByZXR1
cm4gKnByb2Nlc3NQb29sOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQb29sLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Bvb2wuY3BwCShyZXZpc2lvbiAxNzg2MzQpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiAj
aW5jbHVkZSAiQVBJQXJyYXkuaCIKICNpbmNsdWRlICJBUElEb3dubG9hZENsaWVudC5oIgogI2lu
Y2x1ZGUgIkFQSUxlZ2FjeUNvbnRleHRIaXN0b3J5Q2xpZW50LmgiCisjaW5jbHVkZSAiQVBJUHJv
Y2Vzc1Bvb2xDb25maWd1cmF0aW9uLmgiCiAjaW5jbHVkZSAiQ3VzdG9tUHJvdG9jb2xNYW5hZ2Vy
TWVzc2FnZXMuaCIKICNpbmNsdWRlICJEb3dubG9hZFByb3h5LmgiCiAjaW5jbHVkZSAiRG93bmxv
YWRQcm94eU1lc3NhZ2VzLmgiCkBAIC0xMTIsMzEgKzExMywxMCBAQCBzdGF0aWMgY29uc3QgZG91
YmxlIHNoYXJlZFNlY29uZGFyeVByb2NlCiAKIERFRklORV9ERUJVR19PTkxZX0dMT0JBTChXVEY6
OlJlZkNvdW50ZWRMZWFrQ291bnRlciwgcHJvY2Vzc1Bvb2xDb3VudGVyLCAoIldlYlByb2Nlc3NQ
b29sIikpOwogCi12b2lkIFdlYlByb2Nlc3NQb29sOjphcHBseVBsYXRmb3JtU3BlY2lmaWNDb25m
aWd1cmF0aW9uRGVmYXVsdHMoV2ViUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uJiBjb25maWd1cmF0
aW9uKQotewotICAgIC8vIEZJWE1FOiBUaGlzIGZ1bmN0aW9uIHNob3VsZCBub3QgYmUgbmVlZGVk
OyBhbGwgcG9ydHMgc2hvdWxkIG1ha2Ugc3VyZSB0aGF0IHRoZSBjb25maWd1cmF0aW9uIGhhcyB0
aGUgcmlnaHQKLSAgICAvLyB2YWx1ZXMsIGFuZCB0aGVuIHdlIHNob3VsZCBnZXQgcmlkIG9mIHRo
ZSBwbGF0Zm9ybSBzcGVjaWZpYyBkZWZhdWx0cyBpbnNpZGUgV2ViUHJvY2Vzc1Bvb2wuCi0KLSAg
ICBpZiAoIWNvbmZpZ3VyYXRpb24ubG9jYWxTdG9yYWdlRGlyZWN0b3J5KQotICAgICAgICBjb25m
aWd1cmF0aW9uLmxvY2FsU3RvcmFnZURpcmVjdG9yeSA9IHBsYXRmb3JtRGVmYXVsdExvY2FsU3Rv
cmFnZURpcmVjdG9yeSgpOwotCi0gICAgaWYgKCFjb25maWd1cmF0aW9uLndlYlNRTERhdGFiYXNl
RGlyZWN0b3J5KQotICAgICAgICBjb25maWd1cmF0aW9uLndlYlNRTERhdGFiYXNlRGlyZWN0b3J5
ID0gcGxhdGZvcm1EZWZhdWx0V2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoKTsKLQotICAgIC8vICoq
KioqKioqKgotICAgIC8vIElNUE9SVEFOVDogRG8gbm90IGNoYW5nZSB0aGUgZGlyZWN0b3J5IHN0
cnVjdHVyZSBmb3IgaW5kZXhlZCBkYXRhYmFzZXMgb24gZGlzayB3aXRob3V0IGZpcnN0IGNvbnN1
bHRpbmcgYSByZXZpZXdlciBmcm9tIEFwcGxlICg8cmRhcjovL3Byb2JsZW0vMTc0NTQ3MTI+KQot
ICAgIC8vICoqKioqKioqKgotICAgIGlmICghY29uZmlndXJhdGlvbi5pbmRleGVkREJEYXRhYmFz
ZURpcmVjdG9yeSkKLSAgICAgICAgY29uZmlndXJhdGlvbi5pbmRleGVkREJEYXRhYmFzZURpcmVj
dG9yeSA9IHBsYXRmb3JtRGVmYXVsdEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCk7Ci0KLSAg
ICBpZiAoIWNvbmZpZ3VyYXRpb24ubWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSkKLSAgICAgICAg
Y29uZmlndXJhdGlvbi5tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5ID0gcGxhdGZvcm1EZWZhdWx0
TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpOwotfQotCi1QYXNzUmVmUHRyPFdlYlByb2Nlc3NQ
b29sPiBXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlKFdlYlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBj
b25maWd1cmF0aW9uKQorUmVmPFdlYlByb2Nlc3NQb29sPiBXZWJQcm9jZXNzUG9vbDo6Y3JlYXRl
KEFQSTo6UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uKQogewogICAgIElu
aXRpYWxpemVXZWJLaXQyKCk7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJQcm9jZXNzUG9v
bChXVEY6Om1vdmUoY29uZmlndXJhdGlvbikpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBX
ZWJQcm9jZXNzUG9vbChjb25maWd1cmF0aW9uKSk7CiB9CiAKIHN0YXRpYyBWZWN0b3I8V2ViUHJv
Y2Vzc1Bvb2wqPiYgcHJvY2Vzc1Bvb2xzKCkKQEAgLTE1MCwyMiArMTMwLDIzIEBAIGNvbnN0IFZl
Y3RvcjxXZWJQcm9jZXNzUG9vbCo+JiBXZWJQcm9jZXMKICAgICByZXR1cm4gcHJvY2Vzc1Bvb2xz
KCk7CiB9CiAKLXN0YXRpYyBXZWJzaXRlRGF0YVN0b3JlOjpDb25maWd1cmF0aW9uIHdlYnNpdGVE
YXRhU3RvcmVDb25maWd1cmF0aW9uKGNvbnN0IFdlYlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiYg
cHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uKQorc3RhdGljIFdlYnNpdGVEYXRhU3RvcmU6OkNvbmZp
Z3VyYXRpb24gd2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24oQVBJOjpQcm9jZXNzUG9vbENv
bmZpZ3VyYXRpb24mIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbikKIHsKICAgICBXZWJzaXRlRGF0
YVN0b3JlOjpDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb247CiAKLSAgICBjb25maWd1cmF0aW9u
LmxvY2FsU3RvcmFnZURpcmVjdG9yeSA9IHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5sb2NhbFN0
b3JhZ2VEaXJlY3Rvcnk7CisgICAgY29uZmlndXJhdGlvbi5sb2NhbFN0b3JhZ2VEaXJlY3Rvcnkg
PSBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24ubG9jYWxTdG9yYWdlRGlyZWN0b3J5KCk7CiAKICAg
ICByZXR1cm4gY29uZmlndXJhdGlvbjsKIH0KIAotV2ViUHJvY2Vzc1Bvb2w6OldlYlByb2Nlc3NQ
b29sKFdlYlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uKQotICAgIDogbV9w
cm9jZXNzTW9kZWwoUHJvY2Vzc01vZGVsU2hhcmVkU2Vjb25kYXJ5UHJvY2VzcykKLSAgICAsIG1f
d2ViUHJvY2Vzc0NvdW50TGltaXQoVUlOVF9NQVgpCitXZWJQcm9jZXNzUG9vbDo6V2ViUHJvY2Vz
c1Bvb2woQVBJOjpQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24pCisgICAg
OiBtX2NvbmZpZ3VyYXRpb24oY29uZmlndXJhdGlvbi5jb3B5KCkpCisgICAgLCBtX3Byb2Nlc3NN
b2RlbChtX2NvbmZpZ3VyYXRpb24tPnByb2Nlc3NNb2RlbCgpKQorICAgICwgbV93ZWJQcm9jZXNz
Q291bnRMaW1pdCghbV9jb25maWd1cmF0aW9uLT5tYXhpbXVtUHJvY2Vzc0NvdW50KCkgPyBVSU5U
X01BWCA6IG1fY29uZmlndXJhdGlvbi0+bWF4aW11bVByb2Nlc3NDb3VudCgpKQogICAgICwgbV9o
YXZlSW5pdGlhbEVtcHR5UHJvY2VzcyhmYWxzZSkKICAgICAsIG1fcHJvY2Vzc1dpdGhQYWdlQ2Fj
aGUoMCkKICAgICAsIG1fZGVmYXVsdFBhZ2VHcm91cChXZWJQYWdlR3JvdXA6OmNyZWF0ZU5vbk51
bGwoKSkKLSAgICAsIG1faW5qZWN0ZWRCdW5kbGVQYXRoKGNvbmZpZ3VyYXRpb24uaW5qZWN0ZWRC
dW5kbGVQYXRoKQorICAgICwgbV9pbmplY3RlZEJ1bmRsZVBhdGgobV9jb25maWd1cmF0aW9uLT5p
bmplY3RlZEJ1bmRsZVBhdGgoKSkKICAgICAsIG1fZG93bmxvYWRDbGllbnQoc3RkOjptYWtlX3Vu
aXF1ZTxBUEk6OkRvd25sb2FkQ2xpZW50PigpKQogICAgICwgbV9oaXN0b3J5Q2xpZW50KHN0ZDo6
bWFrZV91bmlxdWU8QVBJOjpMZWdhY3lDb250ZXh0SGlzdG9yeUNsaWVudD4oKSkKICAgICAsIG1f
dmlzaXRlZExpbmtQcm92aWRlcihWaXNpdGVkTGlua1Byb3ZpZGVyOjpjcmVhdGUoKSkKQEAgLTE3
MywyMiArMTU0LDIyIEBAIFdlYlByb2Nlc3NQb29sOjpXZWJQcm9jZXNzUG9vbChXZWJQcm9jZXMK
ICAgICAsIG1fcGx1Z0luQXV0b1N0YXJ0UHJvdmlkZXIodGhpcykKICAgICAsIG1fYWx3YXlzVXNl
c0NvbXBsZXhUZXh0Q29kZVBhdGgoZmFsc2UpCiAgICAgLCBtX3Nob3VsZFVzZUZvbnRTbW9vdGhp
bmcodHJ1ZSkKLSAgICAsIG1fY2FjaGVNb2RlbChDYWNoZU1vZGVsRG9jdW1lbnRWaWV3ZXIpCisg
ICAgLCBtX2NhY2hlTW9kZWwobV9jb25maWd1cmF0aW9uLT5jYWNoZU1vZGVsKCkpCiAgICAgLCBt
X21lbW9yeVNhbXBsZXJFbmFibGVkKGZhbHNlKQogICAgICwgbV9tZW1vcnlTYW1wbGVySW50ZXJ2
YWwoMTQwMC4wKQotICAgICwgbV93ZWJzaXRlRGF0YVN0b3JlKFdlYnNpdGVEYXRhU3RvcmU6OmNy
ZWF0ZSh3ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbihjb25maWd1cmF0aW9uKSkpCi0gICAg
LCBtX3N0b3JhZ2VNYW5hZ2VyKFN0b3JhZ2VNYW5hZ2VyOjpjcmVhdGUoY29uZmlndXJhdGlvbi5s
b2NhbFN0b3JhZ2VEaXJlY3RvcnkpKQorICAgICwgbV93ZWJzaXRlRGF0YVN0b3JlKFdlYnNpdGVE
YXRhU3RvcmU6OmNyZWF0ZSh3ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbihtX2NvbmZpZ3Vy
YXRpb24uZ2V0KCkpKSkKKyAgICAsIG1fc3RvcmFnZU1hbmFnZXIoU3RvcmFnZU1hbmFnZXI6OmNy
ZWF0ZShtX2NvbmZpZ3VyYXRpb24tPmxvY2FsU3RvcmFnZURpcmVjdG9yeSgpKSkKICNpZiBVU0Uo
U09VUCkKICAgICAsIG1faW5pdGlhbEhUVFBDb29raWVBY2NlcHRQb2xpY3koSFRUUENvb2tpZUFj
Y2VwdFBvbGljeU9ubHlGcm9tTWFpbkRvY3VtZW50RG9tYWluKQogI2VuZGlmCi0gICAgLCBtX3dl
YlNRTERhdGFiYXNlRGlyZWN0b3J5KFdURjo6bW92ZShjb25maWd1cmF0aW9uLndlYlNRTERhdGFi
YXNlRGlyZWN0b3J5KSkKLSAgICAsIG1faW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoV1RGOjpt
b3ZlKGNvbmZpZ3VyYXRpb24uaW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkpKQotICAgICwgbV9t
ZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KFdURjo6bW92ZShjb25maWd1cmF0aW9uLm1lZGlhS2V5
c1N0b3JhZ2VEaXJlY3RvcnkpKQorICAgICwgbV93ZWJTUUxEYXRhYmFzZURpcmVjdG9yeShjb25m
aWd1cmF0aW9uLndlYlNRTERhdGFiYXNlRGlyZWN0b3J5KCkpCisgICAgLCBtX2luZGV4ZWREQkRh
dGFiYXNlRGlyZWN0b3J5KGNvbmZpZ3VyYXRpb24uaW5kZXhlZERCRGF0YWJhc2VEaXJlY3Rvcnko
KSkKKyAgICAsIG1fbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeShjb25maWd1cmF0aW9uLm1lZGlh
S2V5c1N0b3JhZ2VEaXJlY3RvcnkoKSkKICAgICAsIG1fc2hvdWxkVXNlVGVzdGluZ05ldHdvcmtT
ZXNzaW9uKGZhbHNlKQogICAgICwgbV9wcm9jZXNzVGVybWluYXRpb25FbmFibGVkKHRydWUpCiAj
aWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKICAgICAsIG1fY2FuSGFuZGxlSFRUUFNTZXJ2ZXJU
cnVzdEV2YWx1YXRpb24odHJ1ZSkKLSAgICAsIG1fdXNlc05ldHdvcmtQcm9jZXNzKGZhbHNlKQor
ICAgICwgbV91c2VzTmV0d29ya1Byb2Nlc3MobV9jb25maWd1cmF0aW9uLT51c2VOZXR3b3JrUHJv
Y2VzcygpKQogI2VuZGlmCiAjaWYgVVNFKFNPVVApCiAgICAgLCBtX2lnbm9yZVRMU0Vycm9ycyh0
cnVlKQpAQCAtMTk3LDYgKzE3OCwxMSBAQCBXZWJQcm9jZXNzUG9vbDo6V2ViUHJvY2Vzc1Bvb2wo
V2ViUHJvY2VzCiAgICAgLCBtX3VzZXJPYnNlcnZhYmxlUGFnZUNvdW50ZXIoW3RoaXNdKGJvb2wp
IHsgdXBkYXRlUHJvY2Vzc1N1cHByZXNzaW9uU3RhdGUoKTsgfSkKICAgICAsIG1fcHJvY2Vzc1N1
cHByZXNzaW9uRGlzYWJsZWRGb3JQYWdlQ291bnRlcihbdGhpc10oYm9vbCkgeyB1cGRhdGVQcm9j
ZXNzU3VwcHJlc3Npb25TdGF0ZSgpOyB9KQogeworI2lmIEVOQUJMRShDQUNIRV9QQVJUSVRJT05J
TkcpCisgICAgZm9yIChjb25zdCBhdXRvJiB1cmxTY2hlbWUgOiBtX2NvbmZpZ3VyYXRpb24tPmNh
Y2hlUGFydGl0aW9uZWRVUkxTY2hlbWVzKCkpCisgICAgICAgIG1fc2NoZW1lc1RvUmVnaXN0ZXJB
c0NhY2hlUGFydGl0aW9uZWQuYWRkKHVybFNjaGVtZSk7CisjZW5kaWYKKwogICAgIHBsYXRmb3Jt
SW5pdGlhbGl6ZSgpOwogCiAgICAgYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJQcm9j
ZXNzUG9vbDo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCAqdGhpcyk7CkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAkocmV2aXNpb24gMTc4NjM0KQorKysgU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgJKHdvcmtpbmcgY29weSkKQEAg
LTcxLDYgKzcxLDcgQEAgT0JKQ19DTEFTUyBOU1N0cmluZzsKIG5hbWVzcGFjZSBBUEkgewogY2xh
c3MgRG93bmxvYWRDbGllbnQ7CiBjbGFzcyBMZWdhY3lDb250ZXh0SGlzdG9yeUNsaWVudDsKK2Ns
YXNzIFByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBA
IC05NywyNyArOTgsMTkgQEAgaW50IHdlYlByb2Nlc3NMYXRlbmN5UU9TKCk7CiBpbnQgd2ViUHJv
Y2Vzc1Rocm91Z2hwdXRRT1MoKTsKICNlbmRpZgogCi1zdHJ1Y3QgV2ViUHJvY2Vzc1Bvb2xDb25m
aWd1cmF0aW9uIHsKLSAgICBTdHJpbmcgaW5qZWN0ZWRCdW5kbGVQYXRoOwotICAgIFN0cmluZyBs
b2NhbFN0b3JhZ2VEaXJlY3Rvcnk7Ci0gICAgU3RyaW5nIHdlYlNRTERhdGFiYXNlRGlyZWN0b3J5
OwotICAgIFN0cmluZyBpbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeTsKLSAgICBTdHJpbmcgbWVk
aWFLZXlzU3RvcmFnZURpcmVjdG9yeTsKLX07Ci0KLWNsYXNzIFdlYlByb2Nlc3NQb29sIDogcHVi
bGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6UHJvY2Vzc1Bvb2w+LCBwcml2
YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyCitjbGFzcyBXZWJQcm9jZXNzUG9vbCBmaW5hbCA6IHB1
YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OlByb2Nlc3NQb29sPiwgcHJp
dmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJ
KQogICAgICwgcHJpdmF0ZSBQbHVnaW5JbmZvU3RvcmVDbGllbnQKICNlbmRpZgogICAgIHsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgdm9pZCBhcHBseVBsYXRmb3JtU3BlY2lmaWNDb25maWd1cmF0aW9u
RGVmYXVsdHMoV2ViUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uJik7CisgICAgc3RhdGljIFJlZjxX
ZWJQcm9jZXNzUG9vbD4gY3JlYXRlKEFQSTo6UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uJik7CiAK
LSAgICBXZWJQcm9jZXNzUG9vbChXZWJQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24pOwotICAgICAg
ICAKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJQcm9jZXNzUG9vbD4gY3JlYXRlKFdlYlByb2Nl
c3NQb29sQ29uZmlndXJhdGlvbik7CisgICAgZXhwbGljaXQgV2ViUHJvY2Vzc1Bvb2woQVBJOjpQ
cm9jZXNzUG9vbENvbmZpZ3VyYXRpb24mKTsgICAgICAgIAogICAgIHZpcnR1YWwgfldlYlByb2Nl
c3NQb29sKCk7CiAKKyAgICBBUEk6OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiYgY29uZmlndXJh
dGlvbigpIHsgcmV0dXJuIG1fY29uZmlndXJhdGlvbi5nZXQoKTsgfQorCiAgICAgc3RhdGljIGNv
bnN0IFZlY3RvcjxXZWJQcm9jZXNzUG9vbCo+JiBhbGxQcm9jZXNzUG9vbHMoKTsKIAogICAgIHRl
bXBsYXRlIDx0eXBlbmFtZSBUPgpAQCAtMzU1LDYgKzM0OCwxMiBAQCBwdWJsaWM6CiAgICAgICAg
IHJldHVybiBtX3Byb2Nlc3NTdXBwcmVzc2lvbkRpc2FibGVkRm9yUGFnZUNvdW50ZXIudG9rZW48
UHJvY2Vzc1N1cHByZXNzaW9uRGlzYWJsZWRUb2tlblR5cGU+KCk7CiAgICAgfQogCisgICAgLy8g
RklYTUU6IE1vdmUgdGhlc2UgdG8gQVBJOjpXZWJzaXRlRGF0YVN0b3JlLgorICAgIHN0YXRpYyBT
dHJpbmcgbGVnYWN5UGxhdGZvcm1EZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCk7CisgICAg
c3RhdGljIFN0cmluZyBsZWdhY3lQbGF0Zm9ybURlZmF1bHRJbmRleGVkREJEYXRhYmFzZURpcmVj
dG9yeSgpOworICAgIHN0YXRpYyBTdHJpbmcgbGVnYWN5UGxhdGZvcm1EZWZhdWx0V2ViU1FMRGF0
YWJhc2VEaXJlY3RvcnkoKTsKKyAgICBzdGF0aWMgU3RyaW5nIGxlZ2FjeVBsYXRmb3JtRGVmYXVs
dE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKTsKKwogcHJpdmF0ZToKICAgICB2b2lkIHBsYXRm
b3JtSW5pdGlhbGl6ZSgpOwogCkBAIC0zODgsMTEgKzM4Nyw2IEBAIHByaXZhdGU6CiAKICAgICBT
dHJpbmcgcGxhdGZvcm1EZWZhdWx0SWNvbkRhdGFiYXNlUGF0aCgpIGNvbnN0OwogCi0gICAgc3Rh
dGljIFN0cmluZyBwbGF0Zm9ybURlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKTsKLSAgICBz
dGF0aWMgU3RyaW5nIHBsYXRmb3JtRGVmYXVsdEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCk7
Ci0gICAgc3RhdGljIFN0cmluZyBwbGF0Zm9ybURlZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVjdG9y
eSgpOwotICAgIHN0YXRpYyBTdHJpbmcgcGxhdGZvcm1EZWZhdWx0TWVkaWFLZXlzU3RvcmFnZURp
cmVjdG9yeSgpOwotCiAgICAgU3RyaW5nIGRpc2tDYWNoZURpcmVjdG9yeSgpIGNvbnN0OwogICAg
IFN0cmluZyBwbGF0Zm9ybURlZmF1bHREaXNrQ2FjaGVEaXJlY3RvcnkoKSBjb25zdDsKIApAQCAt
NDIyLDYgKzQxNiw4IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHBsdWdpbkluZm9TdG9y
ZURpZExvYWRQbHVnaW5zKFBsdWdpbkluZm9TdG9yZSopIG92ZXJyaWRlOwogI2VuZGlmCiAKKyAg
ICBSZWY8QVBJOjpQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24+IG1fY29uZmlndXJhdGlvbjsKKwog
ICAgIElQQzo6TWVzc2FnZVJlY2VpdmVyTWFwIG1fbWVzc2FnZVJlY2VpdmVyTWFwOwogCiAgICAg
UHJvY2Vzc01vZGVsIG1fcHJvY2Vzc01vZGVsOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmNw
cAkocmV2aXNpb24gMTc4NjMzKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElQ
cm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiwzMSArMjYs
NTkgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJBUElQcm9jZXNzUG9vbENvbmZp
Z3VyYXRpb24uaCIKIAorI2luY2x1ZGUgIkFQSVdlYnNpdGVEYXRhU3RvcmUuaCIKICNpbmNsdWRl
ICJXZWJQcm9jZXNzUG9vbC5oIgogCiBuYW1lc3BhY2UgQVBJIHsKIAotUHJvY2Vzc1Bvb2xDb25m
aWd1cmF0aW9uOjpQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24oKQorUmVmPFByb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbj4gUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOjpjcmVhdGUoKQogeworICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFByb2Nlc3NQb29sQ29uZmlndXJhdGlvbik7CiB9CiAKLVByb2Nl
c3NQb29sQ29uZmlndXJhdGlvbjo6flByb2Nlc3NQb29sQ29uZmlndXJhdGlvbigpCitSZWY8UHJv
Y2Vzc1Bvb2xDb25maWd1cmF0aW9uPiBQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb246OmNyZWF0ZVdp
dGhMZWdhY3lPcHRpb25zKCkKIHsKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBQcm9jZXNzUG9v
bENvbmZpZ3VyYXRpb246OmNyZWF0ZSgpOworCisgICAgY29uZmlndXJhdGlvbi0+bV9wcm9jZXNz
TW9kZWwgPSBXZWJLaXQ6OlByb2Nlc3NNb2RlbFNoYXJlZFNlY29uZGFyeVByb2Nlc3M7CisgICAg
Y29uZmlndXJhdGlvbi0+bV91c2VOZXR3b3JrUHJvY2VzcyA9IGZhbHNlOworICAgIGNvbmZpZ3Vy
YXRpb24tPm1fY2FjaGVNb2RlbCA9IFdlYktpdDo6Q2FjaGVNb2RlbERvY3VtZW50Vmlld2VyOwor
ICAgIGNvbmZpZ3VyYXRpb24tPm1fbG9jYWxTdG9yYWdlRGlyZWN0b3J5ID0gV2ViS2l0OjpXZWJQ
cm9jZXNzUG9vbDo6bGVnYWN5UGxhdGZvcm1EZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCk7
CisgICAgY29uZmlndXJhdGlvbi0+bV93ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSA9IFdlYktpdDo6
V2ViUHJvY2Vzc1Bvb2w6OmxlZ2FjeVBsYXRmb3JtRGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0
b3J5KCk7CisgICAgY29uZmlndXJhdGlvbi0+bV9pbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSA9
IFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmxlZ2FjeVBsYXRmb3JtRGVmYXVsdEluZGV4ZWREQkRh
dGFiYXNlRGlyZWN0b3J5KCk7CisgICAgY29uZmlndXJhdGlvbi0+bV9tZWRpYUtleXNTdG9yYWdl
RGlyZWN0b3J5ID0gV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6bGVnYWN5UGxhdGZvcm1EZWZhdWx0
TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpOworCisgICAgcmV0dXJuIGNvbmZpZ3VyYXRpb247
CiB9CiAKLVdlYktpdDo6V2ViUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIFByb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbjo6d2ViUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uKCkgY29uc3QKK1Byb2Nlc3NQ
b29sQ29uZmlndXJhdGlvbjo6UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uKCkKKyAgICA6IG1faW5k
ZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoV2Vic2l0ZURhdGFTdG9yZTo6d2Vic2l0ZURhdGFEaXJl
Y3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIkluZGV4ZWREQiIpKQorICAgICwgbV9sb2Nh
bFN0b3JhZ2VEaXJlY3RvcnkoV2Vic2l0ZURhdGFTdG9yZTo6d2Vic2l0ZURhdGFEaXJlY3RvcnlG
aWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIkxvY2FsU3RvcmFnZSIpKQorICAgICwgbV93ZWJTUUxE
YXRhYmFzZURpcmVjdG9yeShXZWJzaXRlRGF0YVN0b3JlOjp3ZWJzaXRlRGF0YURpcmVjdG9yeUZp
bGVTeXN0ZW1SZXByZXNlbnRhdGlvbigiV2ViU1FMIikpCisgICAgLCBtX21lZGlhS2V5c1N0b3Jh
Z2VEaXJlY3RvcnkoV2Vic2l0ZURhdGFTdG9yZTo6d2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lz
dGVtUmVwcmVzZW50YXRpb24oIk1lZGlhS2V5cyIpKQogewotICAgIFdlYktpdDo6V2ViUHJvY2Vz
c1Bvb2xDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb247Cit9CiAKLSAgICBjb25maWd1cmF0aW9u
LmluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5ID0gbV9pbmRleGVkREJEYXRhYmFzZURpcmVjdG9y
eTsKLSAgICBjb25maWd1cmF0aW9uLmluamVjdGVkQnVuZGxlUGF0aCA9IG1faW5qZWN0ZWRCdW5k
bGVQYXRoOwotICAgIGNvbmZpZ3VyYXRpb24ubG9jYWxTdG9yYWdlRGlyZWN0b3J5ID0gbV9sb2Nh
bFN0b3JhZ2VEaXJlY3Rvcnk7Ci0gICAgY29uZmlndXJhdGlvbi53ZWJTUUxEYXRhYmFzZURpcmVj
dG9yeSA9IG1fd2ViU1FMRGF0YWJhc2VEaXJlY3Rvcnk7Ci0gICAgY29uZmlndXJhdGlvbi5tZWRp
YUtleXNTdG9yYWdlRGlyZWN0b3J5ID0gbV9tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5OworUHJv
Y2Vzc1Bvb2xDb25maWd1cmF0aW9uOjp+UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uKCkKK3sKK30K
IAotICAgIFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmFwcGx5UGxhdGZvcm1TcGVjaWZpY0NvbmZp
Z3VyYXRpb25EZWZhdWx0cyhjb25maWd1cmF0aW9uKTsKK1JlZjxQcm9jZXNzUG9vbENvbmZpZ3Vy
YXRpb24+IFByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjo6Y29weSgpCit7CisgICAgYXV0byBjb3B5
ID0gdGhpcy0+Y3JlYXRlKCk7CiAKLSAgICByZXR1cm4gY29uZmlndXJhdGlvbjsKKyAgICBjb3B5
LT5tX3Byb2Nlc3NNb2RlbCA9IHRoaXMtPm1fcHJvY2Vzc01vZGVsOworICAgIGNvcHktPm1fdXNl
TmV0d29ya1Byb2Nlc3MgPSB0aGlzLT5tX3VzZU5ldHdvcmtQcm9jZXNzOworICAgIGNvcHktPm1f
bWF4aW11bVByb2Nlc3NDb3VudCA9IHRoaXMtPm1fbWF4aW11bVByb2Nlc3NDb3VudDsKKyAgICBj
b3B5LT5tX2NhY2hlTW9kZWwgPSB0aGlzLT5tX2NhY2hlTW9kZWw7CisgICAgY29weS0+bV9pbmRl
eGVkREJEYXRhYmFzZURpcmVjdG9yeSA9IHRoaXMtPm1faW5kZXhlZERCRGF0YWJhc2VEaXJlY3Rv
cnk7CisgICAgY29weS0+bV9pbmplY3RlZEJ1bmRsZVBhdGggPSB0aGlzLT5tX2luamVjdGVkQnVu
ZGxlUGF0aDsKKyAgICBjb3B5LT5tX2xvY2FsU3RvcmFnZURpcmVjdG9yeSA9IHRoaXMtPm1fbG9j
YWxTdG9yYWdlRGlyZWN0b3J5OworICAgIGNvcHktPm1fd2ViU1FMRGF0YWJhc2VEaXJlY3Rvcnkg
PSB0aGlzLT5tX3dlYlNRTERhdGFiYXNlRGlyZWN0b3J5OworICAgIGNvcHktPm1fbWVkaWFLZXlz
U3RvcmFnZURpcmVjdG9yeSA9IHRoaXMtPm1fbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeTsKKyAg
ICBjb3B5LT5tX2NhY2hlUGFydGl0aW9uZWRVUkxTY2hlbWVzID0gdGhpcy0+bV9jYWNoZVBhcnRp
dGlvbmVkVVJMU2NoZW1lczsKKyAgICAKKyAgICByZXR1cm4gY29weTsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgQVBJCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQ
b29sQ29uZmlndXJhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmgJKHJldmlzaW9uIDE3ODYzMykKKysr
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9u
LmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDQ3ICsyNyw2NSBAQAogI2RlZmluZSBBUElDb250ZXh0
Q29uZmlndXJhdGlvbl9oCiAKICNpbmNsdWRlICJBUElPYmplY3QuaCIKKyNpbmNsdWRlICJDYWNo
ZU1vZGVsLmgiCisjaW5jbHVkZSAiUHJvY2Vzc01vZGVsLmgiCisjaW5jbHVkZSA8d3RmL1JlZi5o
PgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KIAotbmFtZXNwYWNlIFdlYktpdCB7Ci1zdHJ1Y3QgV2ViUHJvY2Vzc1Bvb2xDb25maWd1cmF0
aW9uOwotfQotCiBuYW1lc3BhY2UgQVBJIHsKIAotY2xhc3MgUHJvY2Vzc1Bvb2xDb25maWd1cmF0
aW9uIDogcHVibGljIE9iamVjdEltcGw8T2JqZWN0OjpUeXBlOjpQcm9jZXNzUG9vbENvbmZpZ3Vy
YXRpb24+IHsKK2NsYXNzIFByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBmaW5hbCA6IHB1YmxpYyBP
YmplY3RJbXBsPE9iamVjdDo6VHlwZTo6UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uPiB7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uPiBjcmVh
dGUoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBQcm9jZXNzUG9vbENvbmZp
Z3VyYXRpb24pOwotICAgIH0KKyAgICBzdGF0aWMgUmVmPFByb2Nlc3NQb29sQ29uZmlndXJhdGlv
bj4gY3JlYXRlKCk7CisgICAgc3RhdGljIFJlZjxQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24+IGNy
ZWF0ZVdpdGhMZWdhY3lPcHRpb25zKCk7CisgICAgCisgICAgZXhwbGljaXQgUHJvY2Vzc1Bvb2xD
b25maWd1cmF0aW9uKCk7CiAgICAgdmlydHVhbCB+UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uKCk7
CisgICAgCisgICAgUmVmPFByb2Nlc3NQb29sQ29uZmlndXJhdGlvbj4gY29weSgpOwogCi0gICAg
U3RyaW5nIGluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9pbmRl
eGVkREJEYXRhYmFzZURpcmVjdG9yeTsgfQotICAgIHZvaWQgc2V0SW5kZXhlZERCRGF0YWJhc2VE
aXJlY3RvcnkoY29uc3QgU3RyaW5nJiBpbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSkgeyBtX2lu
ZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5ID0gaW5kZXhlZERCRGF0YWJhc2VEaXJlY3Rvcnk7IH0K
KyAgICBXZWJLaXQ6OlByb2Nlc3NNb2RlbCBwcm9jZXNzTW9kZWwoKSBjb25zdCB7IHJldHVybiBt
X3Byb2Nlc3NNb2RlbDsgfQorICAgIHZvaWQgc2V0UHJvY2Vzc01vZGVsKFdlYktpdDo6UHJvY2Vz
c01vZGVsIHByb2Nlc3NNb2RlbCkgeyBtX3Byb2Nlc3NNb2RlbCA9IHByb2Nlc3NNb2RlbDsgfSAK
IAotICAgIFN0cmluZyBpbmplY3RlZEJ1bmRsZVBhdGgoKSBjb25zdCB7IHJldHVybiBtX2luamVj
dGVkQnVuZGxlUGF0aDsgfQotICAgIHZvaWQgc2V0SW5qZWN0ZWRCdW5kbGVQYXRoKGNvbnN0IFN0
cmluZyYgaW5qZWN0ZWRCdW5kbGVQYXRoKSB7IG1faW5qZWN0ZWRCdW5kbGVQYXRoID0gaW5qZWN0
ZWRCdW5kbGVQYXRoOyB9CisgICAgYm9vbCB1c2VOZXR3b3JrUHJvY2VzcygpIGNvbnN0IHsgcmV0
dXJuIG1fdXNlTmV0d29ya1Byb2Nlc3M7IH0KKyAgICB2b2lkIHNldFVzZU5ldHdvcmtQcm9jZXNz
KGJvb2wgdXNlTmV0d29ya1Byb2Nlc3MpIHsgbV91c2VOZXR3b3JrUHJvY2VzcyA9IHVzZU5ldHdv
cmtQcm9jZXNzOyB9IAogCi0gICAgU3RyaW5nIGxvY2FsU3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0
IHsgcmV0dXJuIG1fbG9jYWxTdG9yYWdlRGlyZWN0b3J5OyB9Ci0gICAgdm9pZCBzZXRMb2NhbFN0
b3JhZ2VEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBsb2NhbFN0b3JhZ2VEaXJlY3RvcnkpIHsgbV9s
b2NhbFN0b3JhZ2VEaXJlY3RvcnkgPSBsb2NhbFN0b3JhZ2VEaXJlY3Rvcnk7IH0KKyAgICB1bnNp
Z25lZCBtYXhpbXVtUHJvY2Vzc0NvdW50KCkgY29uc3QgeyByZXR1cm4gbV9tYXhpbXVtUHJvY2Vz
c0NvdW50OyB9CisgICAgdm9pZCBzZXRNYXhpbXVtUHJvY2Vzc0NvdW50KHVuc2lnbmVkIG1heGlt
dW1Qcm9jZXNzQ291bnQpIHsgbV9tYXhpbXVtUHJvY2Vzc0NvdW50ID0gbWF4aW11bVByb2Nlc3ND
b3VudDsgfSAKIAotICAgIFN0cmluZyB3ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpIGNvbnN0IHsg
cmV0dXJuIG1fd2ViU1FMRGF0YWJhc2VEaXJlY3Rvcnk7IH0KLSAgICB2b2lkIHNldFdlYlNRTERh
dGFiYXNlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgd2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkpIHsg
bV93ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSA9IHdlYlNRTERhdGFiYXNlRGlyZWN0b3J5OyB9Cisg
ICAgV2ViS2l0OjpDYWNoZU1vZGVsIGNhY2hlTW9kZWwoKSBjb25zdCB7IHJldHVybiBtX2NhY2hl
TW9kZWw7IH0KKyAgICB2b2lkIHNldENhY2hlTW9kZWwoV2ViS2l0OjpDYWNoZU1vZGVsIGNhY2hl
TW9kZWwpIHsgbV9jYWNoZU1vZGVsID0gY2FjaGVNb2RlbDsgfSAKIAotICAgIFN0cmluZyBtZWRp
YUtleXNTdG9yYWdlRGlyZWN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9tZWRpYUtleXNTdG9yYWdl
RGlyZWN0b3J5OyB9Ci0gICAgdm9pZCBzZXRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KGNvbnN0
IFN0cmluZyYgbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSkgeyBtX21lZGlhS2V5c1N0b3JhZ2VE
aXJlY3RvcnkgPSBtZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5OyB9CisgICAgV1RGOjpTdHJpbmcg
aW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX2luZGV4ZWREQkRh
dGFiYXNlRGlyZWN0b3J5OyB9CisgICAgdm9pZCBzZXRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9y
eShjb25zdCBXVEY6OlN0cmluZyYgaW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkpIHsgbV9pbmRl
eGVkREJEYXRhYmFzZURpcmVjdG9yeSA9IGluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5OyB9CiAK
LSAgICBXZWJLaXQ6OldlYlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiB3ZWJQcm9jZXNzUG9vbENv
bmZpZ3VyYXRpb24oKSBjb25zdDsKKyAgICBXVEY6OlN0cmluZyBpbmplY3RlZEJ1bmRsZVBhdGgo
KSBjb25zdCB7IHJldHVybiBtX2luamVjdGVkQnVuZGxlUGF0aDsgfQorICAgIHZvaWQgc2V0SW5q
ZWN0ZWRCdW5kbGVQYXRoKGNvbnN0IFdURjo6U3RyaW5nJiBpbmplY3RlZEJ1bmRsZVBhdGgpIHsg
bV9pbmplY3RlZEJ1bmRsZVBhdGggPSBpbmplY3RlZEJ1bmRsZVBhdGg7IH0KIAotcHJpdmF0ZToK
LSAgICBQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24oKTsKKyAgICBXVEY6OlN0cmluZyBsb2NhbFN0
b3JhZ2VEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX2xvY2FsU3RvcmFnZURpcmVjdG9yeTsg
fQorICAgIHZvaWQgc2V0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KGNvbnN0IFdURjo6U3RyaW5nJiBs
b2NhbFN0b3JhZ2VEaXJlY3RvcnkpIHsgbV9sb2NhbFN0b3JhZ2VEaXJlY3RvcnkgPSBsb2NhbFN0
b3JhZ2VEaXJlY3Rvcnk7IH0KKworICAgIFdURjo6U3RyaW5nIHdlYlNRTERhdGFiYXNlRGlyZWN0
b3J5KCkgY29uc3QgeyByZXR1cm4gbV93ZWJTUUxEYXRhYmFzZURpcmVjdG9yeTsgfQorICAgIHZv
aWQgc2V0V2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoY29uc3QgV1RGOjpTdHJpbmcmIHdlYlNRTERh
dGFiYXNlRGlyZWN0b3J5KSB7IG1fd2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkgPSB3ZWJTUUxEYXRh
YmFzZURpcmVjdG9yeTsgfQogCi0gICAgU3RyaW5nIG1faW5kZXhlZERCRGF0YWJhc2VEaXJlY3Rv
cnk7Ci0gICAgU3RyaW5nIG1faW5qZWN0ZWRCdW5kbGVQYXRoOwotICAgIFN0cmluZyBtX2xvY2Fs
U3RvcmFnZURpcmVjdG9yeTsKLSAgICBTdHJpbmcgbV93ZWJTUUxEYXRhYmFzZURpcmVjdG9yeTsK
LSAgICBTdHJpbmcgbV9tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5OworICAgIFdURjo6U3RyaW5n
IG1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX21lZGlhS2V5c1N0
b3JhZ2VEaXJlY3Rvcnk7IH0KKyAgICB2b2lkIHNldE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3Rvcnko
Y29uc3QgV1RGOjpTdHJpbmcmIG1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkpIHsgbV9tZWRpYUtl
eXNTdG9yYWdlRGlyZWN0b3J5ID0gbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeTsgfQorCisgICAg
Y29uc3QgVmVjdG9yPFdURjo6U3RyaW5nPiYgY2FjaGVQYXJ0aXRpb25lZFVSTFNjaGVtZXMoKSB7
IHJldHVybiBtX2NhY2hlUGFydGl0aW9uZWRVUkxTY2hlbWVzOyB9CisgICAgdm9pZCBzZXRDYWNo
ZVBhcnRpdGlvbmVkVVJMU2NoZW1lcyhWZWN0b3I8V1RGOjpTdHJpbmc+JiYgY2FjaGVQYXJ0aXRp
b25lZFVSTFNjaGVtZXMpIHsgbV9jYWNoZVBhcnRpdGlvbmVkVVJMU2NoZW1lcyA9IFdURjo6bW92
ZShjYWNoZVBhcnRpdGlvbmVkVVJMU2NoZW1lcyk7IH0KKworcHJpdmF0ZToKKyAgICBXZWJLaXQ6
OlByb2Nlc3NNb2RlbCBtX3Byb2Nlc3NNb2RlbCB7IFdlYktpdDo6UHJvY2Vzc01vZGVsTXVsdGlw
bGVTZWNvbmRhcnlQcm9jZXNzZXMgfTsKKyAgICBib29sIG1fdXNlTmV0d29ya1Byb2Nlc3MgeyB0
cnVlIH07CisgICAgdW5zaWduZWQgbV9tYXhpbXVtUHJvY2Vzc0NvdW50IHsgMCB9OworICAgIFdl
YktpdDo6Q2FjaGVNb2RlbCBtX2NhY2hlTW9kZWwgeyBXZWJLaXQ6OkNhY2hlTW9kZWxQcmltYXJ5
V2ViQnJvd3NlciB9OworICAgIFdURjo6U3RyaW5nIG1faW5qZWN0ZWRCdW5kbGVQYXRoOworICAg
IFdURjo6U3RyaW5nIG1faW5kZXhlZERCRGF0YWJhc2VEaXJlY3Rvcnk7CisgICAgV1RGOjpTdHJp
bmcgbV9sb2NhbFN0b3JhZ2VEaXJlY3Rvcnk7CisgICAgV1RGOjpTdHJpbmcgbV93ZWJTUUxEYXRh
YmFzZURpcmVjdG9yeTsKKyAgICBXVEY6OlN0cmluZyBtX21lZGlhS2V5c1N0b3JhZ2VEaXJlY3Rv
cnk7CisgICAgVmVjdG9yPFdURjo6U3RyaW5nPiBtX2NhY2hlUGFydGl0aW9uZWRVUkxTY2hlbWVz
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgQVBJCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0FQSVdlYnNpdGVEYXRhU3RvcmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZURhdGFTdG9yZS5jcHAJKHJldmlzaW9uIDE3ODYz
MykKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZURhdGFTdG9yZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTY5LDYgKzY5LDEyIEBAIFdlYktpdDo6V2Vic2l0ZURhdGFT
dG9yZTo6Q29uZmlndXJhdGlvbiAKIAogICAgIHJldHVybiBjb25maWd1cmF0aW9uOwogfQorCitT
dHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6d2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVw
cmVzZW50YXRpb24oY29uc3QgU3RyaW5nJiBkaXJlY3RvcnlOYW1lKQoreworICAgIC8vIEZJWE1F
OiBJbXBsZW1lbnQuCisgICAgcmV0dXJuIFN0cmluZygpOworfQogI2VuZGlmCiAKIH0KSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZURhdGFTdG9yZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZURhdGFTdG9y
ZS5oCShyZXZpc2lvbiAxNzg2MzMpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQ
SVdlYnNpdGVEYXRhU3RvcmUuaAkod29ya2luZyBjb3B5KQpAQCAtNDMsNiArNDMsOCBAQCBwdWJs
aWM6CiAKICAgICBXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmUmIHdlYnNpdGVEYXRhU3RvcmUoKSB7
IHJldHVybiAqbV93ZWJzaXRlRGF0YVN0b3JlOyB9CiAKKyAgICBzdGF0aWMgU3RyaW5nIHdlYnNp
dGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0cmluZyYgZGly
ZWN0b3J5TmFtZSk7CisKIHByaXZhdGU6CiAgICAgV2Vic2l0ZURhdGFTdG9yZShXZWJLaXQ6Oldl
YnNpdGVEYXRhU3RvcmU6OkNvbmZpZ3VyYXRpb24pOwogICAgIFdlYnNpdGVEYXRhU3RvcmUoKTsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwCShy
ZXZpc2lvbiAxNzg2MzMpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tDb250
ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzgsMjAgKzc4LDIxIEBAIFdLVHlwZUlEIFdLQ29u
dGV4dEdldFR5cGVJRCgpCiAKIFdLQ29udGV4dFJlZiBXS0NvbnRleHRDcmVhdGUoKQogewotICAg
IHJldHVybiBXS0NvbnRleHRDcmVhdGVXaXRoQ29uZmlndXJhdGlvbihhZG9wdFdLKFdLQ29udGV4
dENvbmZpZ3VyYXRpb25DcmVhdGUoKSkuZ2V0KCkpOworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9
IEFQSTo6UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOjpjcmVhdGVXaXRoTGVnYWN5T3B0aW9ucygp
OworICAgIHJldHVybiB0b0FQSSgmV2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZShjb25maWd1cmF0aW9u
KS5sZWFrUmVmKCkpOwogfQogCiBXS0NvbnRleHRSZWYgV0tDb250ZXh0Q3JlYXRlV2l0aEluamVj
dGVkQnVuZGxlUGF0aChXS1N0cmluZ1JlZiBwYXRoUmVmKQogewotICAgIGF1dG8gY29uZmlndXJh
dGlvbiA9IGFkb3B0V0soV0tDb250ZXh0Q29uZmlndXJhdGlvbkNyZWF0ZSgpKTsKLSAgICBXS0Nv
bnRleHRDb25maWd1cmF0aW9uU2V0SW5qZWN0ZWRCdW5kbGVQYXRoKGNvbmZpZ3VyYXRpb24uZ2V0
KCksIHBhdGhSZWYpOworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IEFQSTo6UHJvY2Vzc1Bvb2xD
b25maWd1cmF0aW9uOjpjcmVhdGVXaXRoTGVnYWN5T3B0aW9ucygpOworICAgIGNvbmZpZ3VyYXRp
b24tPnNldEluamVjdGVkQnVuZGxlUGF0aCh0b1dURlN0cmluZyhwYXRoUmVmKSk7CiAKLSAgICBy
ZXR1cm4gV0tDb250ZXh0Q3JlYXRlV2l0aENvbmZpZ3VyYXRpb24oY29uZmlndXJhdGlvbi5nZXQo
KSk7CisgICAgcmV0dXJuIHRvQVBJKCZXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlKGNvbmZpZ3VyYXRp
b24pLmxlYWtSZWYoKSk7CiB9CiAKIFdLQ29udGV4dFJlZiBXS0NvbnRleHRDcmVhdGVXaXRoQ29u
ZmlndXJhdGlvbihXS0NvbnRleHRDb25maWd1cmF0aW9uUmVmIGNvbmZpZ3VyYXRpb24pCiB7Ci0g
ICAgcmV0dXJuIHRvQVBJKFdlYlByb2Nlc3NQb29sOjpjcmVhdGUodG9JbXBsKGNvbmZpZ3VyYXRp
b24pLT53ZWJQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24oKSkubGVha1JlZigpKTsKKyAgICByZXR1
cm4gdG9BUEkoJldlYlByb2Nlc3NQb29sOjpjcmVhdGUoKnRvSW1wbChjb25maWd1cmF0aW9uKSku
bGVha1JlZigpKTsKIH0KIAogdm9pZCBXS0NvbnRleHRTZXRDbGllbnQoV0tDb250ZXh0UmVmIGNv
bnRleHRSZWYsIGNvbnN0IFdLQ29udGV4dENsaWVudEJhc2UqIHdrQ2xpZW50KQpJbmRleDogU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dENvbmZpZ3VyYXRpb25SZWYuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHRD
b25maWd1cmF0aW9uUmVmLmNwcAkocmV2aXNpb24gMTc4NjMzKQorKysgU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dENvbmZpZ3VyYXRpb25SZWYuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zMyw3ICszMyw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAKIFdLQ29udGV4
dENvbmZpZ3VyYXRpb25SZWYgV0tDb250ZXh0Q29uZmlndXJhdGlvbkNyZWF0ZSgpCiB7Ci0gICAg
cmV0dXJuIHRvQVBJKEFQSTo6UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOjpjcmVhdGUoKS5sZWFr
UmVmKCkpOworICAgIHJldHVybiB0b0FQSSgmQVBJOjpQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb246
OmNyZWF0ZSgpLmxlYWtSZWYoKSk7CiB9CiAKIFdLU3RyaW5nUmVmIFdLQ29udGV4dENvbmZpZ3Vy
YXRpb25Db3B5SW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoV0tDb250ZXh0Q29uZmlndXJhdGlv
blJlZiBjb25maWd1cmF0aW9uKQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
b2NvYS9BUElXZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElXZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0JKHJl
dmlzaW9uIDE3ODYzMykKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJ
V2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNiwxNyArMjYsNDUg
QEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJBUElXZWJzaXRlRGF0YVN0b3JlLmgi
CiAKLS8vIEZJWE1FOiBUaGlzIGZ1bmN0aW9uIGlzIGN1cnJlbnRseSBpbiBXS1Byb2Nlc3NQb29s
LiBJdCBzaG91bGQgYmUgbW92ZWQgdG8gdGhpcyBmaWxlIGluc3RlYWQuCi1OU1VSTCAqd2Vic2l0
ZURhdGFEaXJlY3RvcnlVUkwoTlNTdHJpbmcgKmRpcmVjdG9yeU5hbWUpOworI2luY2x1ZGUgIlNh
bmRib3hVdGlsaXRpZXMuaCIKIAogbmFtZXNwYWNlIEFQSSB7CiAKK1N0cmluZyBXZWJzaXRlRGF0
YVN0b3JlOjp3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25z
dCBTdHJpbmcmIGRpcmVjdG9yeU5hbWUpCit7CisgICAgc3RhdGljIGRpc3BhdGNoX29uY2VfdCBv
bmNlVG9rZW47CisgICAgc3RhdGljIE5TVVJMICp3ZWJzaXRlRGF0YVVSTDsKKworICAgIGRpc3Bh
dGNoX29uY2UoJm9uY2VUb2tlbiwgXnsKKyAgICAgICAgTlNVUkwgKnVybCA9IFtbTlNGaWxlTWFu
YWdlciBkZWZhdWx0TWFuYWdlcl0gVVJMRm9yRGlyZWN0b3J5Ok5TTGlicmFyeURpcmVjdG9yeSBp
bkRvbWFpbjpOU1VzZXJEb21haW5NYXNrIGFwcHJvcHJpYXRlRm9yVVJMOm51bGxwdHIgY3JlYXRl
Ok5PIGVycm9yOm51bGxwdHJdOworICAgICAgICBpZiAoIXVybCkKKyAgICAgICAgICAgIFJFTEVB
U0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisKKyAgICAgICAgdXJsID0gW3VybCBVUkxCeUFwcGVu
ZGluZ1BhdGhDb21wb25lbnQ6QCJXZWJLaXQiIGlzRGlyZWN0b3J5OllFU107CisKKyAgICAgICAg
aWYgKCFXZWJLaXQ6OnByb2Nlc3NIYXNDb250YWluZXIoKSkgeworICAgICAgICAgICAgTlNTdHJp
bmcgKmJ1bmRsZUlkZW50aWZpZXIgPSBbTlNCdW5kbGUgbWFpbkJ1bmRsZV0uYnVuZGxlSWRlbnRp
ZmllcjsKKyAgICAgICAgICAgIGlmICghYnVuZGxlSWRlbnRpZmllcikKKyAgICAgICAgICAgICAg
ICBidW5kbGVJZGVudGlmaWVyID0gW05TUHJvY2Vzc0luZm8gcHJvY2Vzc0luZm9dLnByb2Nlc3NO
YW1lOworICAgICAgICAgICAgdXJsID0gW3VybCBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6
YnVuZGxlSWRlbnRpZmllciBpc0RpcmVjdG9yeTpZRVNdOworICAgICAgICB9CisKKyAgICAgICAg
d2Vic2l0ZURhdGFVUkwgPSBbW3VybCBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJXZWJz
aXRlRGF0YSIgaXNEaXJlY3Rvcnk6WUVTXSByZXRhaW5dOworICAgIH0pOworCisgICAgTlNVUkwg
KnVybCA9IFt3ZWJzaXRlRGF0YVVSTCBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6ZGlyZWN0
b3J5TmFtZSBpc0RpcmVjdG9yeTpZRVNdOworICAgIGlmICghW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1
bHRNYW5hZ2VyXSBjcmVhdGVEaXJlY3RvcnlBdFVSTDp1cmwgd2l0aEludGVybWVkaWF0ZURpcmVj
dG9yaWVzOllFUyBhdHRyaWJ1dGVzOm5pbCBlcnJvcjpudWxscHRyXSkKKyAgICAgICAgTE9HX0VS
Uk9SKCJGYWlsZWQgdG8gY3JlYXRlIGRpcmVjdG9yeSAlQCIsIHVybCk7CisKKyAgICByZXR1cm4g
dXJsLmFic29sdXRlVVJMLnBhdGguZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uOworfQorCiBXZWJL
aXQ6OldlYnNpdGVEYXRhU3RvcmU6OkNvbmZpZ3VyYXRpb24gV2Vic2l0ZURhdGFTdG9yZTo6ZGVm
YXVsdERhdGFTdG9yZUNvbmZpZ3VyYXRpb24oKQogewogICAgIC8vIEZJWE1FOiBGaWxsIGV2ZXJ5
dGhpbmcgaW4uCiAgICAgV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpDb25maWd1cmF0aW9uIGNv
bmZpZ3VyYXRpb247CiAKLSAgICBjb25maWd1cmF0aW9uLmxvY2FsU3RvcmFnZURpcmVjdG9yeSA9
IHdlYnNpdGVEYXRhRGlyZWN0b3J5VVJMKEAiTG9jYWxTdG9yYWdlIikuYWJzb2x1dGVVUkwucGF0
aC5maWxlU3lzdGVtUmVwcmVzZW50YXRpb247CisgICAgY29uZmlndXJhdGlvbi5sb2NhbFN0b3Jh
Z2VEaXJlY3RvcnkgPSB3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlv
bigiTG9jYWxTdG9yYWdlIik7CiAKICAgICByZXR1cm4gY29uZmlndXJhdGlvbjsKIH0KSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzR3JvdXAubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NH
cm91cC5tbQkocmV2aXNpb24gMTc4NjMzKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1Byb2Nlc3NHcm91cC5tbQkod29ya2luZyBjb3B5KQpAQCAtMjksNiArMjksNyBA
QAogI2lmIFdLX0FQSV9FTkFCTEVECiAKICNpbXBvcnQgIkFQSU5hdmlnYXRpb25EYXRhLmgiCisj
aW1wb3J0ICJBUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaCIKICNpbXBvcnQgIk9iakNPYmpl
Y3RHcmFwaC5oIgogI2ltcG9ydCAiV0tBUElDYXN0LmgiCiAjaW1wb3J0ICJXS0Jyb3dzaW5nQ29u
dGV4dENvbnRyb2xsZXJJbnRlcm5hbC5oIgpAQCAtMTg5LDIwICsxOTAsMTggQEAgLSAoaWQpaW5p
dFdpdGhJbmplY3RlZEJ1bmRsZVVSTDooTlNVUkwgKgogICAgIEluaXRXZWJDb3JlVGhyZWFkU3lz
dGVtSW50ZXJmYWNlKCk7CiAjZW5kaWYKIAotICAgIFdlYlByb2Nlc3NQb29sQ29uZmlndXJhdGlv
biBjb25maWd1cmF0aW9uOwotICAgIGNvbmZpZ3VyYXRpb24uaW5qZWN0ZWRCdW5kbGVQYXRoID0g
YnVuZGxlVVJMID8gU3RyaW5nKGJ1bmRsZVVSTC5wYXRoKSA6IFN0cmluZygpOwotCi0gICAgV2Vi
UHJvY2Vzc1Bvb2w6OmFwcGx5UGxhdGZvcm1TcGVjaWZpY0NvbmZpZ3VyYXRpb25EZWZhdWx0cyhj
b25maWd1cmF0aW9uKTsKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBBUEk6OlByb2Nlc3NQb29s
Q29uZmlndXJhdGlvbjo6Y3JlYXRlV2l0aExlZ2FjeU9wdGlvbnMoKTsKKyAgICBjb25maWd1cmF0
aW9uLT5zZXRJbmplY3RlZEJ1bmRsZVBhdGgoYnVuZGxlVVJMID8gU3RyaW5nKGJ1bmRsZVVSTC5w
YXRoKSA6IFN0cmluZygpKTsKKyNpZiBQTEFURk9STShJT1MpCisgICAgY29uZmlndXJhdGlvbi0+
c2V0VXNlTmV0d29ya1Byb2Nlc3ModHJ1ZSk7CisgICAgY29uZmlndXJhdGlvbi0+c2V0UHJvY2Vz
c01vZGVsKFByb2Nlc3NNb2RlbE11bHRpcGxlU2Vjb25kYXJ5UHJvY2Vzc2VzKTsKKyNlbmRpZgog
Ci0gICAgX3Byb2Nlc3NQb29sID0gV2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZShXVEY6Om1vdmUoY29u
ZmlndXJhdGlvbikpOworICAgIF9wcm9jZXNzUG9vbCA9IFdlYlByb2Nlc3NQb29sOjpjcmVhdGUo
Y29uZmlndXJhdGlvbik7CiAKICAgICBzZXRVcENvbm5lY3Rpb25DbGllbnQoc2VsZiwgdG9BUEko
X3Byb2Nlc3NQb29sLmdldCgpKSk7CiAgICAgc2V0VXBJbmVjdGVkQnVuZGxlQ2xpZW50KHNlbGYs
IHRvQVBJKF9wcm9jZXNzUG9vbC5nZXQoKSkpOwogICAgIHNldFVwSGlzdG9yeUNsaWVudChzZWxm
LCB0b0FQSShfcHJvY2Vzc1Bvb2wuZ2V0KCkpKTsKLSNpZiBQTEFURk9STShJT1MpCi0gICAgX3By
b2Nlc3NQb29sLT5zZXRVc2VzTmV0d29ya1Byb2Nlc3ModHJ1ZSk7Ci0gICAgX3Byb2Nlc3NQb29s
LT5zZXRQcm9jZXNzTW9kZWwoUHJvY2Vzc01vZGVsTXVsdGlwbGVTZWNvbmRhcnlQcm9jZXNzZXMp
OwotI2VuZGlmCiAKICAgICByZXR1cm4gc2VsZjsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0JKHJldmlzaW9uIDE3
ODYzNCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9v
bC5tbQkod29ya2luZyBjb3B5KQpAQCAtMzksNyArMzksNyBAQAogI2ltcG9ydCAiV2ViUHJvY2Vz
c01lc3NhZ2VzLmgiCiAjaW1wb3J0ICJXZWJQcm9jZXNzUG9vbC5oIgogI2ltcG9ydCAiX1dLRG93
bmxvYWREZWxlZ2F0ZS5oIgotI2ltcG9ydCAiX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmgi
CisjaW1wb3J0ICJfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb25JbnRlcm5hbC5oIgogI2ltcG9y
dCA8V2ViQ29yZS9DRk5ldHdvcmtTUEkuaD4KICNpbXBvcnQgPFdlYkNvcmUvQ2VydGlmaWNhdGVJ
bmZvLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CkBAIC00OSw5ICs0OSw2IEBACiAjaW1w
b3J0ICJXS0dlb2xvY2F0aW9uUHJvdmlkZXJJT1MuaCIKICNlbmRpZgogCi0vLyBGSVhNRTogTW92
ZSB0aGlzIGZyb20gV0tQcm9jZXNzUG9vbCB0byBBUElXZWJzaXRlRGF0YVN0b3JlQ29jb2EuCi1O
U1VSTCAqd2Vic2l0ZURhdGFEaXJlY3RvcnlVUkwoTlNTdHJpbmcgKmRpcmVjdG9yeU5hbWUpOwot
CiBAaW1wbGVtZW50YXRpb24gV0tQcm9jZXNzUG9vbCB7CiAgICAgV2ViS2l0OjpXZWFrT2JqQ1B0
cjxpZCA8X1dLRG93bmxvYWREZWxlZ2F0ZT4+IF9kb3dubG9hZERlbGVnYXRlOwogCkBAIC03NCwx
MiArNzEsMTIgQEAgLSAodm9pZClkZWFsbG9jCiAKIC0gKE5TU3RyaW5nICopZGVzY3JpcHRpb24K
IHsKLSAgICByZXR1cm4gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCI8JUA6ICVwOyBjb25m
aWd1cmF0aW9uID0gJUA+IiwgTlNTdHJpbmdGcm9tQ2xhc3Moc2VsZi5jbGFzcyksIHNlbGYsIF9j
b25maWd1cmF0aW9uLmdldCgpXTsKKyAgICByZXR1cm4gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3Jt
YXQ6QCI8JUA6ICVwOyBjb25maWd1cmF0aW9uID0gJUA+IiwgTlNTdHJpbmdGcm9tQ2xhc3Moc2Vs
Zi5jbGFzcyksIHNlbGYsIHdyYXBwZXIoX3Byb2Nlc3NQb29sLT5jb25maWd1cmF0aW9uKCkpXTsK
IH0KIAogLSAoX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uICopX2NvbmZpZ3VyYXRpb24KIHsK
LSAgICByZXR1cm4gW1tfY29uZmlndXJhdGlvbiBjb3B5XSBhdXRvcmVsZWFzZV07CisgICAgcmV0
dXJuIHdyYXBwZXIoX3Byb2Nlc3NQb29sLT5jb25maWd1cmF0aW9uKCkuY29weSgpLmxlYWtSZWYo
KSk7CiB9CiAKIC0gKEFQSTo6T2JqZWN0JilfYXBpT2JqZWN0CkBAIC0xMTYsNzMgKzExMywxNyBA
QCArIChOU1VSTCAqKV93ZWJzaXRlRGF0YVVSTEZvckNvbnRhaW5lcldpCiAgICAgcmV0dXJuIFt1
cmwgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiV2Vic2l0ZURhdGEiIGlzRGlyZWN0b3J5
OllFU107CiB9CiAKLU5TVVJMICp3ZWJzaXRlRGF0YURpcmVjdG9yeVVSTChOU1N0cmluZyAqZGly
ZWN0b3J5TmFtZSkKLXsKLSAgICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90IG9uY2VUb2tlbjsKLSAg
ICBzdGF0aWMgTlNVUkwgKndlYnNpdGVEYXRhVVJMOwotCi0gICAgZGlzcGF0Y2hfb25jZSgmb25j
ZVRva2VuLCBeewotICAgICAgICBOU1VSTCAqdXJsID0gW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRN
YW5hZ2VyXSBVUkxGb3JEaXJlY3Rvcnk6TlNMaWJyYXJ5RGlyZWN0b3J5IGluRG9tYWluOk5TVXNl
ckRvbWFpbk1hc2sgYXBwcm9wcmlhdGVGb3JVUkw6bnVsbHB0ciBjcmVhdGU6Tk8gZXJyb3I6bnVs
bHB0cl07Ci0gICAgICAgIGlmICghdXJsKQotICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsKLQotICAgICAgICB1cmwgPSBbdXJsIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBv
bmVudDpAIldlYktpdCIgaXNEaXJlY3Rvcnk6WUVTXTsKLQotICAgICAgICBpZiAoIVdlYktpdDo6
cHJvY2Vzc0hhc0NvbnRhaW5lcigpKSB7Ci0gICAgICAgICAgICBOU1N0cmluZyAqYnVuZGxlSWRl
bnRpZmllciA9IFtOU0J1bmRsZSBtYWluQnVuZGxlXS5idW5kbGVJZGVudGlmaWVyOwotICAgICAg
ICAgICAgaWYgKCFidW5kbGVJZGVudGlmaWVyKQotICAgICAgICAgICAgICAgIGJ1bmRsZUlkZW50
aWZpZXIgPSBbTlNQcm9jZXNzSW5mbyBwcm9jZXNzSW5mb10ucHJvY2Vzc05hbWU7Ci0gICAgICAg
ICAgICB1cmwgPSBbdXJsIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpidW5kbGVJZGVudGlm
aWVyIGlzRGlyZWN0b3J5OllFU107Ci0gICAgICAgIH0KLQotICAgICAgICB3ZWJzaXRlRGF0YVVS
TCA9IFtbdXJsIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIldlYnNpdGVEYXRhIiBpc0Rp
cmVjdG9yeTpZRVNdIHJldGFpbl07Ci0gICAgfSk7Ci0KLSAgICBOU1VSTCAqdXJsID0gW3dlYnNp
dGVEYXRhVVJMIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpkaXJlY3RvcnlOYW1lIGlzRGly
ZWN0b3J5OllFU107Ci0gICAgaWYgKCFbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGNy
ZWF0ZURpcmVjdG9yeUF0VVJMOnVybCB3aXRoSW50ZXJtZWRpYXRlRGlyZWN0b3JpZXM6WUVTIGF0
dHJpYnV0ZXM6bmlsIGVycm9yOm51bGxwdHJdKQotICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0
byBjcmVhdGUgZGlyZWN0b3J5ICVAIiwgdXJsKTsKLQotICAgIHJldHVybiB1cmw7Ci19Ci0KIC0g
KGluc3RhbmNldHlwZSlfaW5pdFdpdGhDb25maWd1cmF0aW9uOihfV0tQcm9jZXNzUG9vbENvbmZp
Z3VyYXRpb24gKiljb25maWd1cmF0aW9uCiB7CiAgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0
XSkpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBfY29uZmlndXJhdGlvbiA9IGFkb3B0TlMo
W2NvbmZpZ3VyYXRpb24gY29weV0pOwotCiAjaWYgUExBVEZPUk0oSU9TKQogICAgIC8vIEZJWE1F
OiBSZW1vdmUgb25jZSA8cmRhcjovL3Byb2JsZW0vMTUyNTY1NzI+IGlzIGZpeGVkLgogICAgIElu
aXRXZWJDb3JlVGhyZWFkU3lzdGVtSW50ZXJmYWNlKCk7CiAjZW5kaWYKIAotICAgIFdlYktpdDo6
V2ViUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjsKLQot
ICAgIGlmIChOU1VSTCAqYnVuZGxlVVJMID0gW19jb25maWd1cmF0aW9uIGluamVjdGVkQnVuZGxl
VVJMXSkgewotICAgICAgICBpZiAoIWJ1bmRsZVVSTC5pc0ZpbGVVUkwpCi0gICAgICAgICAgICBb
TlNFeGNlcHRpb24gcmFpc2U6TlNJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gZm9ybWF0OkAiSW5q
ZWN0ZWQgQnVuZGxlIFVSTCBtdXN0IGJlIGEgZmlsZSBVUkwiXTsKLQotICAgICAgICBwcm9jZXNz
UG9vbENvbmZpZ3VyYXRpb24uaW5qZWN0ZWRCdW5kbGVQYXRoID0gYnVuZGxlVVJMLnBhdGg7Ci0g
ICAgfQotCi0gICAgcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmxvY2FsU3RvcmFnZURpcmVjdG9y
eSA9IHdlYnNpdGVEYXRhRGlyZWN0b3J5VVJMKEAiTG9jYWxTdG9yYWdlIikuYWJzb2x1dGVVUkwu
cGF0aC5maWxlU3lzdGVtUmVwcmVzZW50YXRpb247Ci0gICAgcHJvY2Vzc1Bvb2xDb25maWd1cmF0
aW9uLndlYlNRTERhdGFiYXNlRGlyZWN0b3J5ID0gd2Vic2l0ZURhdGFEaXJlY3RvcnlVUkwoQCJX
ZWJTUUwiKS5hYnNvbHV0ZVVSTC5wYXRoLmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbjsKLSAgICBw
cm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkgPSB3ZWJz
aXRlRGF0YURpcmVjdG9yeVVSTChAIkluZGV4ZWREQiIpLmFic29sdXRlVVJMLnBhdGguZmlsZVN5
c3RlbVJlcHJlc2VudGF0aW9uOwotICAgIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5tZWRpYUtl
eXNTdG9yYWdlRGlyZWN0b3J5ID0gd2Vic2l0ZURhdGFEaXJlY3RvcnlVUkwoQCJNZWRpYUtleXMi
KS5hYnNvbHV0ZVVSTC5wYXRoLmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbjsKLQotICAgIEFQSTo6
T2JqZWN0Ojpjb25zdHJ1Y3RJbldyYXBwZXI8V2ViS2l0OjpXZWJQcm9jZXNzUG9vbD4oc2VsZiwg
V1RGOjptb3ZlKHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbikpOwotICAgIF9wcm9jZXNzUG9vbC0+
c2V0VXNlc05ldHdvcmtQcm9jZXNzKHRydWUpOwotICAgIF9wcm9jZXNzUG9vbC0+c2V0UHJvY2Vz
c01vZGVsKFdlYktpdDo6UHJvY2Vzc01vZGVsTXVsdGlwbGVTZWNvbmRhcnlQcm9jZXNzZXMpOwot
ICAgIF9wcm9jZXNzUG9vbC0+c2V0TWF4aW11bU51bWJlck9mUHJvY2Vzc2VzKFtfY29uZmlndXJh
dGlvbiBtYXhpbXVtUHJvY2Vzc0NvdW50XSk7Ci0KLSNpZiBFTkFCTEUoQ0FDSEVfUEFSVElUSU9O
SU5HKQotICAgIGZvciAoTlNTdHJpbmcgKnVybFNjaGVtZSBpbiBbX2NvbmZpZ3VyYXRpb24gY2Fj
aGVQYXJ0aXRpb25lZFVSTFNjaGVtZXNdKQotICAgICAgICBfcHJvY2Vzc1Bvb2wtPnJlZ2lzdGVy
VVJMU2NoZW1lQXNDYWNoZVBhcnRpdGlvbmVkKHVybFNjaGVtZSk7Ci0jZW5kaWYKLQotICAgIC8v
IEZJWE1FOiBBZGQgYSB3YXkgdG8gY29uZmlndXJlIHRoZSBjYWNoZSBtb2RlbCwgc2VlIDxyZGFy
Oi8vcHJvYmxlbS8xNjIwNjg1Nz4uCi0gICAgX3Byb2Nlc3NQb29sLT5zZXRDYWNoZU1vZGVsKFdl
YktpdDo6Q2FjaGVNb2RlbFByaW1hcnlXZWJCcm93c2VyKTsKKyAgICBBUEk6Ok9iamVjdDo6Y29u
c3RydWN0SW5XcmFwcGVyPFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w+KHNlbGYsICpjb25maWd1cmF0
aW9uLT5fcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uKTsKIAogICAgIHJldHVybiBzZWxmOwogfQpJ
bmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sSW50
ZXJuYWwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLUHJvY2Vzc1Bvb2xJbnRlcm5hbC5oCShyZXZpc2lvbiAxNzg2MzMpCisrKyBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2xJbnRlcm5hbC5oCSh3b3JraW5n
IGNvcHkpCkBAIC00Niw4ICs0Niw2IEBAIGlubGluZSBXS1Byb2Nlc3NQb29sICp3cmFwcGVyKFdl
YlByb2Nlc3MKIAogQGludGVyZmFjZSBXS1Byb2Nlc3NQb29sICgpIDxXS09iamVjdD4gewogQHBh
Y2thZ2UKLSAgICBSZXRhaW5QdHI8X1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uPiBfY29uZmln
dXJhdGlvbjsKLQogICAgIEFQSTo6T2JqZWN0U3RvcmFnZTxXZWJLaXQ6OldlYlByb2Nlc3NQb29s
PiBfcHJvY2Vzc1Bvb2w7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Q29jb2EvX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9u
Lm1tCShyZXZpc2lvbiAxNzg2MzMpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Nv
Y29hL19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5tbQkod29ya2luZyBjb3B5KQpAQCAtMjQs
NTUgKzI0LDk4IEBACiAgKi8KIAogI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJfV0tQcm9j
ZXNzUG9vbENvbmZpZ3VyYXRpb24uaCIKKyNpbXBvcnQgIl9XS1Byb2Nlc3NQb29sQ29uZmlndXJh
dGlvbkludGVybmFsLmgiCiAKICNpZiBXS19BUElfRU5BQkxFRAogCiAjaW1wb3J0IDx3dGYvUmV0
YWluUHRyLmg+CiAKLUBpbXBsZW1lbnRhdGlvbiBfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24g
ewotICAgIFJldGFpblB0cjxOU1VSTD4gX2luamVjdGVkQnVuZGxlVVJMOwotICAgIFJldGFpblB0
cjxOU0FycmF5PiBfY2FjaGVQYXJ0aXRpb25lZFVSTFNjaGVtZXM7CitAaW1wbGVtZW50YXRpb24g
X1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uCisKKy0gKGluc3RhbmNldHlwZSlpbml0Cit7Cisg
ICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAg
ICBBUEk6Ok9iamVjdDo6Y29uc3RydWN0SW5XcmFwcGVyPEFQSTo6UHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uPihzZWxmKTsKKworICAgIHJldHVybiBzZWxmOworfQorCistICh2b2lkKWRlYWxsb2MK
K3sKKyAgICBfcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLT5+UHJvY2Vzc1Bvb2xDb25maWd1cmF0
aW9uKCk7CisKKyAgICBbc3VwZXIgZGVhbGxvY107CiB9CiAKIC0gKE5TVVJMICopaW5qZWN0ZWRC
dW5kbGVVUkwKIHsKLSAgICByZXR1cm4gX2luamVjdGVkQnVuZGxlVVJMLmdldCgpOworICAgIHJl
dHVybiBbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOl9wcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24tPmlu
amVjdGVkQnVuZGxlUGF0aCgpXTsKIH0KIAogLSAodm9pZClzZXRJbmplY3RlZEJ1bmRsZVVSTDoo
TlNVUkwgKilpbmplY3RlZEJ1bmRsZVVSTAogewotICAgIF9pbmplY3RlZEJ1bmRsZVVSTCA9IGFk
b3B0TlMoW2luamVjdGVkQnVuZGxlVVJMIGNvcHldKTsKKyAgICBpZiAoaW5qZWN0ZWRCdW5kbGVV
UkwgJiYgIWluamVjdGVkQnVuZGxlVVJMLmlzRmlsZVVSTCkKKyAgICAgICAgW05TRXhjZXB0aW9u
IHJhaXNlOk5TSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGZvcm1hdDpAIkluamVjdGVkIEJ1bmRs
ZSBVUkwgbXVzdCBiZSBhIGZpbGUgVVJMIl07CisKKyAgICBfcHJvY2Vzc1Bvb2xDb25maWd1cmF0
aW9uLT5zZXRJbmplY3RlZEJ1bmRsZVBhdGgoaW5qZWN0ZWRCdW5kbGVVUkwucGF0aCk7Cit9CisK
Ky0gKE5TVUludGVnZXIpbWF4aW11bVByb2Nlc3NDb3VudAoreworICAgIHJldHVybiBfcHJvY2Vz
c1Bvb2xDb25maWd1cmF0aW9uLT5tYXhpbXVtUHJvY2Vzc0NvdW50KCk7Cit9CisKKy0gKHZvaWQp
c2V0TWF4aW11bVByb2Nlc3NDb3VudDooTlNVSW50ZWdlciltYXhpbXVtUHJvY2Vzc0NvdW50Cit7
CisgICAgX3Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi0+c2V0TWF4aW11bVByb2Nlc3NDb3VudCht
YXhpbXVtUHJvY2Vzc0NvdW50KTsKIH0KIAogLSAoTlNBcnJheSAqKWNhY2hlUGFydGl0aW9uZWRV
UkxTY2hlbWVzCiB7Ci0gICAgcmV0dXJuIF9jYWNoZVBhcnRpdGlvbmVkVVJMU2NoZW1lcy5nZXQo
KTsKKyAgICBhdXRvIHNjaGVtZXMgPSBfcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLT5jYWNoZVBh
cnRpdGlvbmVkVVJMU2NoZW1lcygpOworICAgIGlmIChzY2hlbWVzLmlzRW1wdHkoKSkKKyAgICAg
ICAgcmV0dXJuIEBbXTsKKworICAgIE5TTXV0YWJsZUFycmF5ICphcnJheSA9IFtOU011dGFibGVB
cnJheSBhcnJheVdpdGhDYXBhY2l0eTpzY2hlbWVzLnNpemUoKV07CisgICAgZm9yIChjb25zdCBh
dXRvJiBzY2hlbWUgOiBzY2hlbWVzKQorICAgICAgICBbYXJyYXkgYWRkT2JqZWN0OihOU1N0cmlu
ZyAqKXNjaGVtZV07CisKKyAgICByZXR1cm4gYXJyYXk7CiB9CiAKIC0gKHZvaWQpc2V0Q2FjaGVQ
YXJ0aXRpb25lZFVSTFNjaGVtZXM6KE5TQXJyYXkgKiljYWNoZVBhcnRpdGlvbmVkVVJMU2NoZW1l
cwogewotICAgIF9jYWNoZVBhcnRpdGlvbmVkVVJMU2NoZW1lcyA9IGFkb3B0TlMoW1tOU0FycmF5
IGFsbG9jXSBpbml0V2l0aEFycmF5OmNhY2hlUGFydGl0aW9uZWRVUkxTY2hlbWVzIGNvcHlJdGVt
czpZRVNdKTsKKyAgICBWZWN0b3I8U3RyaW5nPiBzY2hlbWVzOworICAgIGZvciAoaWQgdXJsU2No
ZW1lIGluIGNhY2hlUGFydGl0aW9uZWRVUkxTY2hlbWVzKSB7CisgICAgICAgIGlmIChbdXJsU2No
ZW1lIGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pCisgICAgICAgICAgICBzY2hlbWVz
LmFwcGVuZChTdHJpbmcoKE5TU3RyaW5nICopdXJsU2NoZW1lKSk7CisgICAgfQorICAgIAorICAg
IF9wcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24tPnNldENhY2hlUGFydGl0aW9uZWRVUkxTY2hlbWVz
KFdURjo6bW92ZShzY2hlbWVzKSk7CiB9CiAKIC0gKE5TU3RyaW5nICopZGVzY3JpcHRpb24KIHsK
LSAgICBOU1N0cmluZyAqZGVzY3JpcHRpb24gPSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpA
IjwlQDogJXA7IG1heGltdW1Qcm9jZXNzQ291bnQgPSAlbHUiLCBOU1N0cmluZ0Zyb21DbGFzcyhz
ZWxmLmNsYXNzKSwgc2VsZiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZz4oX21heGltdW1Qcm9j
ZXNzQ291bnQpXTsKLSAgICBpZiAoX2luamVjdGVkQnVuZGxlVVJMKQotICAgICAgICByZXR1cm4g
W2Rlc2NyaXB0aW9uIHN0cmluZ0J5QXBwZW5kaW5nRm9ybWF0OkAiOyBpbmplY3RlZEJ1bmRsZVVS
TDogXCIlQFwiPiIsIF9pbmplY3RlZEJ1bmRsZVVSTC5nZXQoKV07CisgICAgTlNTdHJpbmcgKmRl
c2NyaXB0aW9uID0gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCI8JUA6ICVwOyBtYXhpbXVt
UHJvY2Vzc0NvdW50ID0gJWx1IiwgTlNTdHJpbmdGcm9tQ2xhc3Moc2VsZi5jbGFzcyksIHNlbGYs
IHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmc+KFtzZWxmIG1heGltdW1Qcm9jZXNzQ291bnRdKV07
CisKKyAgICBpZiAoIV9wcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24tPmluamVjdGVkQnVuZGxlUGF0
aCgpLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIFtkZXNjcmlwdGlvbiBzdHJpbmdCeUFwcGVu
ZGluZ0Zvcm1hdDpAIjsgaW5qZWN0ZWRCdW5kbGVVUkw6IFwiJUBcIj4iLCBbc2VsZiBpbmplY3Rl
ZEJ1bmRsZVVSTF1dOwogCiAgICAgcmV0dXJuIFtkZXNjcmlwdGlvbiBzdHJpbmdCeUFwcGVuZGlu
Z1N0cmluZzpAIj4iXTsKIH0KIAogLSAoaWQpY29weVdpdGhab25lOihOU1pvbmUgKil6b25lCiB7
Ci0gICAgX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uICpjb25maWd1cmF0aW9uID0gWyhfV0tQ
cm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gKilbW3NlbGYgY2xhc3NdIGFsbG9jV2l0aFpvbmU6em9u
ZV0gaW5pdF07CisgICAgcmV0dXJuIHdyYXBwZXIoX3Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi0+
Y29weSgpLmxlYWtSZWYoKSk7Cit9CiAKLSAgICBjb25maWd1cmF0aW9uLm1heGltdW1Qcm9jZXNz
Q291bnQgPSBzZWxmLm1heGltdW1Qcm9jZXNzQ291bnQ7Ci0gICAgY29uZmlndXJhdGlvbi5pbmpl
Y3RlZEJ1bmRsZVVSTCA9IHNlbGYuaW5qZWN0ZWRCdW5kbGVVUkw7Ci0gICAgY29uZmlndXJhdGlv
bi5jYWNoZVBhcnRpdGlvbmVkVVJMU2NoZW1lcyA9IHNlbGYuY2FjaGVQYXJ0aXRpb25lZFVSTFNj
aGVtZXM7CisjcHJhZ21hIG1hcmsgV0tPYmplY3QgcHJvdG9jb2wgaW1wbGVtZW50YXRpb24KIAot
ICAgIHJldHVybiBjb25maWd1cmF0aW9uOworLSAoQVBJOjpPYmplY3QmKV9hcGlPYmplY3QKK3sK
KyAgICByZXR1cm4gKl9wcm9jZXNzUG9vbENvbmZpZ3VyYXRpb247CiB9CiAKIEBlbmQKSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uSW50ZXJuYWwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0NvY29hL19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbkludGVybmFsLmgJKHJldmlzaW9u
IDApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1Byb2Nlc3NQb29s
Q29uZmlndXJhdGlvbkludGVybmFsLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0OSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbXBvcnQgIl9XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oIgorCisj
aWYgV0tfQVBJX0VOQUJMRUQKKworI2ltcG9ydCAiQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9u
LmgiCisjaW1wb3J0ICJXS09iamVjdC5oIgorCituYW1lc3BhY2UgQVBJIHsKKworaW5saW5lIF9X
S1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiAqd3JhcHBlcihBUEk6OlByb2Nlc3NQb29sQ29uZmln
dXJhdGlvbiYgcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uKQoreworICAgIEFTU0VSVChbcHJvY2Vz
c1Bvb2xDb25maWd1cmF0aW9uLndyYXBwZXIoKSBpc0tpbmRPZkNsYXNzOltfV0tQcm9jZXNzUG9v
bENvbmZpZ3VyYXRpb24gY2xhc3NdXSk7CisgICAgcmV0dXJuIChfV0tQcm9jZXNzUG9vbENvbmZp
Z3VyYXRpb24gKilwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24ud3JhcHBlcigpOworfQorCit9CisK
K0BpbnRlcmZhY2UgX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uICgpIDxXS09iamVjdD4gewor
QHBhY2thZ2UKKyAgICBBUEk6Ok9iamVjdFN0b3JhZ2U8QVBJOjpQcm9jZXNzUG9vbENvbmZpZ3Vy
YXRpb24+IF9wcm9jZXNzUG9vbENvbmZpZ3VyYXRpb247Cit9CitAZW5kCisKKyNlbmRpZiAvLyBX
S19BUElfRU5BQkxFRApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0V2ViQ29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5jcHAJKHJldmlzaW9uIDE3ODYzMykKKysrIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRleHQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yMSw2ICsyMSw3IEBACiAjaW5jbHVkZSAiV2ViS2l0V2ViQ29udGV4dC5oIgog
CiAjaW5jbHVkZSAiQVBJRG93bmxvYWRDbGllbnQuaCIKKyNpbmNsdWRlICJBUElQcm9jZXNzUG9v
bENvbmZpZ3VyYXRpb24uaCIKICNpbmNsdWRlICJBUElTdHJpbmcuaCIKICNpbmNsdWRlICJXZWJC
YXR0ZXJ5TWFuYWdlclByb3h5LmgiCiAjaW5jbHVkZSAiV2ViQ2VydGlmaWNhdGVJbmZvLmgiCkBA
IC0yNTcsMTUgKzI1OCwxNiBAQCBzdGF0aWMgdm9pZCB3ZWJraXRXZWJDb250ZXh0Q29uc3RydWN0
ZWQoCiAgICAgR19PQkpFQ1RfQ0xBU1Mod2Via2l0X3dlYl9jb250ZXh0X3BhcmVudF9jbGFzcykt
PmNvbnN0cnVjdGVkKG9iamVjdCk7CiAKICAgICBHVW5pcXVlUHRyPGNoYXI+IGJ1bmRsZUZpbGVu
YW1lKGdfYnVpbGRfZmlsZW5hbWUoaW5qZWN0ZWRCdW5kbGVEaXJlY3RvcnkoKSwgImxpYndlYmtp
dDJndGtpbmplY3RlZGJ1bmRsZS5zbyIsIG51bGxwdHIpKTsKLSAgICBXZWJQcm9jZXNzUG9vbENv
bmZpZ3VyYXRpb24gd2ViQ29udGV4dENvbmZpZ3VyYXRpb247Ci0gICAgd2ViQ29udGV4dENvbmZp
Z3VyYXRpb24uaW5qZWN0ZWRCdW5kbGVQYXRoID0gV2ViQ29yZTo6ZmlsZW5hbWVUb1N0cmluZyhi
dW5kbGVGaWxlbmFtZS5nZXQoKSk7Ci0gICAgV2ViUHJvY2Vzc1Bvb2w6OmFwcGx5UGxhdGZvcm1T
cGVjaWZpY0NvbmZpZ3VyYXRpb25EZWZhdWx0cyh3ZWJDb250ZXh0Q29uZmlndXJhdGlvbik7CisK
KyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBBUEk6OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjo6
Y3JlYXRlV2l0aExlZ2FjeU9wdGlvbnMoKTsKKyAgICBjb25maWd1cmF0aW9uLT5zZXRJbmplY3Rl
ZEJ1bmRsZVBhdGgoV2ViQ29yZTo6ZmlsZW5hbWVUb1N0cmluZyhidW5kbGVGaWxlbmFtZS5nZXQo
KSkpOworCiAgICAgV2ViS2l0V2ViQ29udGV4dCogd2ViQ29udGV4dCA9IFdFQktJVF9XRUJfQ09O
VEVYVChvYmplY3QpOwogICAgIFdlYktpdFdlYkNvbnRleHRQcml2YXRlKiBwcml2ID0gd2ViQ29u
dGV4dC0+cHJpdjsKICAgICBpZiAoIXByaXYtPmxvY2FsU3RvcmFnZURpcmVjdG9yeS5pc051bGwo
KSkKLSAgICAgICAgd2ViQ29udGV4dENvbmZpZ3VyYXRpb24ubG9jYWxTdG9yYWdlRGlyZWN0b3J5
ID0gV2ViQ29yZTo6ZmlsZW5hbWVUb1N0cmluZyhwcml2LT5sb2NhbFN0b3JhZ2VEaXJlY3Rvcnku
ZGF0YSgpKTsKKyAgICAgICAgY29uZmlndXJhdGlvbi0+c2V0TG9jYWxTdG9yYWdlRGlyZWN0b3J5
KFdlYkNvcmU6OmZpbGVuYW1lVG9TdHJpbmcocHJpdi0+bG9jYWxTdG9yYWdlRGlyZWN0b3J5LmRh
dGEoKSkpOwogCi0gICAgcHJpdi0+Y29udGV4dCA9IFdlYlByb2Nlc3NQb29sOjpjcmVhdGUoV1RG
Ojptb3ZlKHdlYkNvbnRleHRDb25maWd1cmF0aW9uKSk7CisgICAgcHJpdi0+Y29udGV4dCA9IFdl
YlByb2Nlc3NQb29sOjpjcmVhdGUod2ViQ29udGV4dENvbmZpZ3VyYXRpb24uZ2V0KCkpOwogCiAg
ICAgcHJpdi0+cmVxdWVzdE1hbmFnZXIgPSBwcml2LT5jb250ZXh0LT5zdXBwbGVtZW50PFdlYlNv
dXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyPigpOwogICAgIHByaXYtPmNvbnRleHQtPnNl
dENhY2hlTW9kZWwoQ2FjaGVNb2RlbFByaW1hcnlXZWJCcm93c2VyKTsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1t
CShyZXZpc2lvbiAxNzg2MzMpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2Vi
UHJvY2Vzc1Bvb2xDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtMzM0LDcgKzMzNCw3IEBAIFN0
cmluZyBXZWJQcm9jZXNzUG9vbDo6Y29udGFpbmVyVGVtcG9yYXIKIH0KICNlbmRpZgogCi1TdHJp
bmcgV2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtRGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5
KCkKK1N0cmluZyBXZWJQcm9jZXNzUG9vbDo6bGVnYWN5UGxhdGZvcm1EZWZhdWx0V2ViU1FMRGF0
YWJhc2VEaXJlY3RvcnkoKQogewogICAgIE5TU3RyaW5nICpkYXRhYmFzZXNEaXJlY3RvcnkgPSBb
W05TVXNlckRlZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRzXSBvYmplY3RGb3JLZXk6V2ViRGF0
YWJhc2VEaXJlY3RvcnlEZWZhdWx0c0tleV07CiAgICAgaWYgKCFkYXRhYmFzZXNEaXJlY3Rvcnkg
fHwgIVtkYXRhYmFzZXNEaXJlY3RvcnkgaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xhc3NdXSkK
QEAgLTM0MiwyNSArMzQyLDE2IEBAIFN0cmluZyBXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1EZWZh
dWx0V2UKICAgICByZXR1cm4gc3RyaW5nQnlSZXNvbHZpbmdTeW1saW5rc0luUGF0aChbZGF0YWJh
c2VzRGlyZWN0b3J5IHN0cmluZ0J5U3RhbmRhcmRpemluZ1BhdGhdKTsKIH0KIAotU3RyaW5nIFdl
YlByb2Nlc3NQb29sOjpwbGF0Zm9ybURlZmF1bHRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSgp
CitTdHJpbmcgV2ViUHJvY2Vzc1Bvb2w6OmxlZ2FjeVBsYXRmb3JtRGVmYXVsdEluZGV4ZWREQkRh
dGFiYXNlRGlyZWN0b3J5KCkKIHsKICAgICAvLyBJbmRleGVkIGRhdGFiYXNlcyBleGlzdCBpbiBh
IHN1YmRpcmVjdG9yeSBvZiB0aGUgImRhdGFiYXNlIGRpcmVjdG9yeSBwYXRoLiIKICAgICAvLyBD
dXJyZW50bHksIHRoZSB0b3AgbGV2ZWwgb2YgdGhhdCBkaXJlY3RvcnkgY29udGFpbnMgZW50aXRp
ZXMgcmVsYXRlZCB0byBXZWJTUUwgZGF0YWJhc2VzLgogICAgIC8vIFdlIHNob3VsZCBmaXggdGhp
cywgYW5kIG1vdmUgV2ViU1FMIGludG8gYSBzdWJkaXJlY3RvcnkgKGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjQ4MDcpCiAgICAgLy8gSW4gdGhlIG1lYW50aW1lLCBh
biBlbnRpdHkgbmFtZSBwcmVmaXhlZCB3aXRoIHRocmVlIHVuZGVyc2NvcmVzIHdpbGwgbm90IGNv
bmZsaWN0IHdpdGggYW55IFdlYlNRTCBlbnRpdGllcy4KLSAgICByZXR1cm4gcGF0aEJ5QXBwZW5k
aW5nQ29tcG9uZW50KHBsYXRmb3JtRGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KCksICJf
X19JbmRleGVkREIiKTsKKyAgICByZXR1cm4gcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGxlZ2Fj
eVBsYXRmb3JtRGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KCksICJfX19JbmRleGVkREIi
KTsKIH0KIAotU3RyaW5nIFdlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybURlZmF1bHRJY29uRGF0YWJh
c2VQYXRoKCkgY29uc3QKLXsKLSAgICAvLyBGSVhNRTogPHJkYXI6Ly9wcm9ibGVtLzkxMzg4MTc+
IC0gQWZ0ZXIgdGhpcyAiYmFja3dhcmRzIGNvbXBhdGliaWxpdHkiIHJhZGFyIGlzIHJlbW92ZWQs
IHRoaXMgY29kZSBzaG91bGQgYmUgcmVtb3ZlZCB0byBvbmx5IHJldHVybiBhbiBlbXB0eSBTdHJp
bmcuCi0gICAgTlNTdHJpbmcgKmRhdGFiYXNlc0RpcmVjdG9yeSA9IFtbTlNVc2VyRGVmYXVsdHMg
c3RhbmRhcmRVc2VyRGVmYXVsdHNdIG9iamVjdEZvcktleTpXZWJJY29uRGF0YWJhc2VEaXJlY3Rv
cnlEZWZhdWx0c0tleV07Ci0gICAgaWYgKCFkYXRhYmFzZXNEaXJlY3RvcnkgfHwgIVtkYXRhYmFz
ZXNEaXJlY3RvcnkgaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xhc3NdXSkKLSAgICAgICAgZGF0
YWJhc2VzRGlyZWN0b3J5ID0gQCJ+L0xpYnJhcnkvSWNvbnMvV2VicGFnZUljb25zLmRiIjsKLSAg
ICByZXR1cm4gc3RyaW5nQnlSZXNvbHZpbmdTeW1saW5rc0luUGF0aChbZGF0YWJhc2VzRGlyZWN0
b3J5IHN0cmluZ0J5U3RhbmRhcmRpemluZ1BhdGhdKTsKLX0KLQotU3RyaW5nIFdlYlByb2Nlc3NQ
b29sOjpwbGF0Zm9ybURlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKQorU3RyaW5nIFdlYlBy
b2Nlc3NQb29sOjpsZWdhY3lQbGF0Zm9ybURlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKQog
ewogICAgIE5TU3RyaW5nICpsb2NhbFN0b3JhZ2VEaXJlY3RvcnkgPSBbW05TVXNlckRlZmF1bHRz
IHN0YW5kYXJkVXNlckRlZmF1bHRzXSBvYmplY3RGb3JLZXk6V2ViU3RvcmFnZURpcmVjdG9yeURl
ZmF1bHRzS2V5XTsKICAgICBpZiAoIWxvY2FsU3RvcmFnZURpcmVjdG9yeSB8fCAhW2xvY2FsU3Rv
cmFnZURpcmVjdG9yeSBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFzc11dKQpAQCAtMzY4LDcg
KzM1OSw3IEBAIFN0cmluZyBXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1EZWZhdWx0TG8KICAgICBy
ZXR1cm4gc3RyaW5nQnlSZXNvbHZpbmdTeW1saW5rc0luUGF0aChbbG9jYWxTdG9yYWdlRGlyZWN0
b3J5IHN0cmluZ0J5U3RhbmRhcmRpemluZ1BhdGhdKTsKIH0KIAotU3RyaW5nIFdlYlByb2Nlc3NQ
b29sOjpwbGF0Zm9ybURlZmF1bHRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCkKK1N0cmluZyBX
ZWJQcm9jZXNzUG9vbDo6bGVnYWN5UGxhdGZvcm1EZWZhdWx0TWVkaWFLZXlzU3RvcmFnZURpcmVj
dG9yeSgpCiB7CiAgICAgTlNTdHJpbmcgKm1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkgPSBbW05T
VXNlckRlZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRzXSBvYmplY3RGb3JLZXk6V2ViS2l0TWVk
aWFLZXlzU3RvcmFnZURpcmVjdG9yeURlZmF1bHRzS2V5XTsKICAgICBpZiAoIW1lZGlhS2V5c1N0
b3JhZ2VEaXJlY3RvcnkgfHwgIVttZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5IGlzS2luZE9mQ2xh
c3M6W05TU3RyaW5nIGNsYXNzXV0pCkBAIC0zNzYsNiArMzY3LDE2IEBAIFN0cmluZyBXZWJQcm9j
ZXNzUG9vbDo6cGxhdGZvcm1EZWZhdWx0TWUKICAgICByZXR1cm4gc3RyaW5nQnlSZXNvbHZpbmdT
eW1saW5rc0luUGF0aChbbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSBzdHJpbmdCeVN0YW5kYXJk
aXppbmdQYXRoXSk7CiB9CiAKKworU3RyaW5nIFdlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybURlZmF1
bHRJY29uRGF0YWJhc2VQYXRoKCkgY29uc3QKK3sKKyAgICAvLyBGSVhNRTogPHJkYXI6Ly9wcm9i
bGVtLzkxMzg4MTc+IC0gQWZ0ZXIgdGhpcyAiYmFja3dhcmRzIGNvbXBhdGliaWxpdHkiIHJhZGFy
IGlzIHJlbW92ZWQsIHRoaXMgY29kZSBzaG91bGQgYmUgcmVtb3ZlZCB0byBvbmx5IHJldHVybiBh
biBlbXB0eSBTdHJpbmcuCisgICAgTlNTdHJpbmcgKmRhdGFiYXNlc0RpcmVjdG9yeSA9IFtbTlNV
c2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdIG9iamVjdEZvcktleTpXZWJJY29uRGF0
YWJhc2VEaXJlY3RvcnlEZWZhdWx0c0tleV07CisgICAgaWYgKCFkYXRhYmFzZXNEaXJlY3Rvcnkg
fHwgIVtkYXRhYmFzZXNEaXJlY3RvcnkgaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xhc3NdXSkK
KyAgICAgICAgZGF0YWJhc2VzRGlyZWN0b3J5ID0gQCJ+L0xpYnJhcnkvSWNvbnMvV2VicGFnZUlj
b25zLmRiIjsKKyAgICByZXR1cm4gc3RyaW5nQnlSZXNvbHZpbmdTeW1saW5rc0luUGF0aChbZGF0
YWJhc2VzRGlyZWN0b3J5IHN0cmluZ0J5U3RhbmRhcmRpemluZ1BhdGhdKTsKK30KKwogYm9vbCBX
ZWJQcm9jZXNzUG9vbDo6b21pdFBERlN1cHBvcnQoKQogewogICAgIC8vIFNpbmNlIHRoaXMgaXMg
YSAic2VjcmV0IGRlZmF1bHQiIHdlIGRvbid0IGJvdGhlciByZWdpc3RlcmluZyBpdC4KSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViQ29udGV4dEVmbC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJDb250ZXh0RWZsLmNwcAkocmV2
aXNpb24gMTc4NjMzKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJDb250ZXh0
RWZsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAwLDEyICsxMDAsMTIgQEAgdm9pZCBXZWJQcm9j
ZXNzUG9vbDo6cGxhdGZvcm1JbnZhbGlkYXRlQwogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAK
LVN0cmluZyBXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1EZWZhdWx0V2ViU1FMRGF0YWJhc2VEaXJl
Y3RvcnkoKQorU3RyaW5nIFdlYlByb2Nlc3NQb29sOjpsZWdhY3lQbGF0Zm9ybURlZmF1bHRXZWJT
UUxEYXRhYmFzZURpcmVjdG9yeSgpCiB7CiAgICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgoZWZy
ZWV0X2RhdGFfaG9tZV9nZXQoKSkgKyAiL1dlYktpdEVmbC9EYXRhYmFzZXMiOwogfQogCi1TdHJp
bmcgV2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtRGVmYXVsdEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0
b3J5KCkKK1N0cmluZyBXZWJQcm9jZXNzUG9vbDo6bGVnYWN5UGxhdGZvcm1EZWZhdWx0SW5kZXhl
ZERCRGF0YWJhc2VEaXJlY3RvcnkoKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiAgICAgcmV0
dXJuIFN0cmluZygpOwpAQCAtMTE2LDE3ICsxMTYsMTcgQEAgU3RyaW5nIFdlYlByb2Nlc3NQb29s
OjpwbGF0Zm9ybURlZmF1bHRJYwogICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KGVmcmVldF9k
YXRhX2hvbWVfZ2V0KCkpICsgIi9XZWJLaXRFZmwvSWNvbkRhdGFiYXNlLyIgKyBXZWJDb3JlOjpJ
Y29uRGF0YWJhc2U6OmRlZmF1bHREYXRhYmFzZUZpbGVuYW1lKCk7CiB9CiAKLVN0cmluZyBXZWJQ
cm9jZXNzUG9vbDo6cGxhdGZvcm1EZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkKK1N0cmlu
ZyBXZWJQcm9jZXNzUG9vbDo6bGVnYWN5UGxhdGZvcm1EZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0
b3J5KCkKIHsKICAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOChlZnJlZXRfZGF0YV9ob21lX2dl
dCgpKSArICIvV2ViS2l0RWZsL0xvY2FsU3RvcmFnZSI7CiB9CiAKLVN0cmluZyBXZWJQcm9jZXNz
UG9vbDo6cGxhdGZvcm1EZWZhdWx0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpCitTdHJpbmcg
V2ViUHJvY2Vzc1Bvb2w6OmxlZ2FjeVBsYXRmb3JtRGVmYXVsdE1lZGlhS2V5c1N0b3JhZ2VEaXJl
Y3RvcnkoKQogewogICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KGVmcmVldF9kYXRhX2hvbWVf
Z2V0KCkpICsgIi9XZWJLaXRFZmwvTWVkaWFLZXlzIjsKIH0KIAotU3RyaW5nIFdlYlByb2Nlc3NQ
b29sOjpwbGF0Zm9ybURlZmF1bHREaXNrQ2FjaGVEaXJlY3RvcnkoKSBjb25zdAorU3RyaW5nIFdl
YlByb2Nlc3NQb29sOjpsZWdhY3lQbGF0Zm9ybURlZmF1bHREaXNrQ2FjaGVEaXJlY3RvcnkoKSBj
b25zdAogewogICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KGVmcmVldF9jYWNoZV9ob21lX2dl
dCgpKSArICIvV2ViS2l0RWZsIjsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9n
dGsvV2ViUHJvY2Vzc1Bvb2xHdGsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9ndGsvV2ViUHJvY2Vzc1Bvb2xHdGsuY3BwCShyZXZpc2lvbiAxNzg2MzMpCisrKyBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYlByb2Nlc3NQb29sR3RrLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTEyLDEzICsxMTIsMTMgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6cGxhdGZv
cm1JbnZhbGlkYXRlQwogewogfQogCi1TdHJpbmcgV2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtRGVm
YXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KCkKK1N0cmluZyBXZWJQcm9jZXNzUG9vbDo6bGVn
YWN5UGxhdGZvcm1EZWZhdWx0V2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoKQogewogICAgIEdVbmlx
dWVQdHI8Z2NoYXI+IGRhdGFiYXNlRGlyZWN0b3J5KGdfYnVpbGRfZmlsZW5hbWUoZ19nZXRfdXNl
cl9kYXRhX2RpcigpLCAid2Via2l0Z3RrIiwgImRhdGFiYXNlcyIsIG51bGxwdHIpKTsKICAgICBy
ZXR1cm4gV2ViQ29yZTo6ZmlsZW5hbWVUb1N0cmluZyhkYXRhYmFzZURpcmVjdG9yeS5nZXQoKSk7
CiB9CiAKLVN0cmluZyBXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1EZWZhdWx0SW5kZXhlZERCRGF0
YWJhc2VEaXJlY3RvcnkoKQorU3RyaW5nIFdlYlByb2Nlc3NQb29sOjpsZWdhY3lQbGF0Zm9ybURl
ZmF1bHRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSgpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQo
KTsKICAgICByZXR1cm4gU3RyaW5nKCk7CkBAIC0xMzAsMTMgKzEzMCwxMyBAQCBTdHJpbmcgV2Vi
UHJvY2Vzc1Bvb2w6OnBsYXRmb3JtRGVmYXVsdEljCiAgICAgcmV0dXJuIFdlYkNvcmU6OmZpbGVu
YW1lVG9TdHJpbmcoZGF0YWJhc2VEaXJlY3RvcnkuZ2V0KCkpOwogfQogCi1TdHJpbmcgV2ViUHJv
Y2Vzc1Bvb2w6OnBsYXRmb3JtRGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSgpCitTdHJpbmcg
V2ViUHJvY2Vzc1Bvb2w6OmxlZ2FjeVBsYXRmb3JtRGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9y
eSgpCiB7CiAgICAgR1VuaXF1ZVB0cjxnY2hhcj4gc3RvcmFnZURpcmVjdG9yeShnX2J1aWxkX2Zp
bGVuYW1lKGdfZ2V0X3VzZXJfZGF0YV9kaXIoKSwgIndlYmtpdGd0ayIsICJsb2NhbHN0b3JhZ2Ui
LCBudWxscHRyKSk7CiAgICAgcmV0dXJuIFdlYkNvcmU6OmZpbGVuYW1lVG9TdHJpbmcoc3RvcmFn
ZURpcmVjdG9yeS5nZXQoKSk7CiB9CiAKLVN0cmluZyBXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1E
ZWZhdWx0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpCitTdHJpbmcgV2ViUHJvY2Vzc1Bvb2w6
OmxlZ2FjeVBsYXRmb3JtRGVmYXVsdE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKQogewogICAg
IEdVbmlxdWVQdHI8Z2NoYXI+IG1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoZ19idWlsZF9maWxl
bmFtZShnX2dldF91c2VyX2RhdGFfZGlyKCksICJ3ZWJraXRndGsiLCAibWVkaWFrZXlzIiwgbnVs
bHB0cikpOwogICAgIHJldHVybiBXZWJDb3JlOjpmaWxlbmFtZVRvU3RyaW5nKG1lZGlhS2V5c1N0
b3JhZ2VEaXJlY3RvcnkuZ2V0KCkpOwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYktp
dDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTc4NjM0KQorKysgU291cmNl
L1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkp
CkBAIC0xMDg3LDYgKzEwODcsNyBAQAogCQk3Qzg5RDJCQzFBNkIwRjVCMDAzQTVGREUgLyogX1dL
VXNlckNvbnRlbnRGaWx0ZXJJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gN0M4OUQyQkIxQTZCMEY1QjAwM0E1RkRFIC8qIF9XS1VzZXJDb250
ZW50RmlsdGVySW50ZXJuYWwuaCAqLzsgfTsKIAkJN0M4OUQyQkYxQTZCMTFFRjAwM0E1RkRFIC8q
IFdLVXNlckNvbnRlbnRGaWx0ZXJSZWYuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gN0M4OUQyQkQxQTZCMTFFRjAwM0E1RkRFIC8qIFdLVXNlckNvbnRl
bnRGaWx0ZXJSZWYuY3BwICovOyB9OwogCQk3Qzg5RDJDMDFBNkIxMUVGMDAzQTVGREUgLyogV0tV
c2VyQ29udGVudEZpbHRlclJlZi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gN0M4OUQyQkUxQTZCMTFFRjAwM0E1RkRFIC8qIFdLVXNlckNvbnRlbnRGaWx0
ZXJSZWYuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQk3Qzg5RDJENzFBNkM2QkU2MDAzQTVGREUgLyogX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9u
SW50ZXJuYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDdDODlEMkQ2MUE2QzZCRTYwMDNBNUZERSAvKiBfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb25J
bnRlcm5hbC5oICovOyB9OwogCQk3QzhFQjExNzE4REI2QTE5MDA3OTE3QzIgLyogV0tQcmVmZXJl
bmNlc1ByaXZhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDdDOEVCMTE2MThEQjZBMTkwMDc5MTdDMiAvKiBXS1ByZWZlcmVuY2VzUHJpdmF0ZS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdDOUQxNTM3
MTg0NTg0REEwMDlEMzkxOCAvKiBXS0Jyb3dzaW5nQ29udGV4dEdyb3VwSW50ZXJuYWwuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDOUQxNTM2MTg0NTg0
REEwMDlEMzkxOCAvKiBXS0Jyb3dzaW5nQ29udGV4dEdyb3VwSW50ZXJuYWwuaCAqLzsgfTsKIAkJ
N0NBMjU0RUIxODI5OTNDRTAwRkM4QTQxIC8qIFdLQnJvd3NpbmdDb250ZXh0UG9saWN5RGVsZWdh
dGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDQTI1
NEVBMTgyOTkzQ0UwMEZDOEE0MSAvKiBXS0Jyb3dzaW5nQ29udGV4dFBvbGljeURlbGVnYXRlLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTMyMjAs
NiArMzIyMSw3IEBACiAJCTdDODlEMkJCMUE2QjBGNUIwMDNBNUZERSAvKiBfV0tVc2VyQ29udGVu
dEZpbHRlckludGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9XS1Vz
ZXJDb250ZW50RmlsdGVySW50ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
N0M4OUQyQkQxQTZCMTFFRjAwM0E1RkRFIC8qIFdLVXNlckNvbnRlbnRGaWx0ZXJSZWYuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0tVc2VyQ29udGVudEZpbHRlclJl
Zi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDODlEMkJFMUE2QjExRUYwMDNB
NUZERSAvKiBXS1VzZXJDb250ZW50RmlsdGVyUmVmLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdLVXNlckNvbnRlbnRGaWx0ZXJSZWYuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJN0M4OUQyRDYxQTZDNkJFNjAwM0E1RkRFIC8qIF9XS1Byb2Nlc3NQb29sQ29uZmln
dXJhdGlvbkludGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9XS1By
b2Nlc3NQb29sQ29uZmlndXJhdGlvbkludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTdDOEVCMTE2MThEQjZBMTkwMDc5MTdDMiAvKiBXS1ByZWZlcmVuY2VzUHJpdmF0ZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS1ByZWZlcmVuY2VzUHJpdmF0ZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzlEMTUzNjE4NDU4NERBMDA5RDM5MTgg
LyogV0tCcm93c2luZ0NvbnRleHRHcm91cEludGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdLQnJvd3NpbmdDb250ZXh0R3JvdXBJbnRlcm5hbC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk3Q0EyNTRFQTE4Mjk5M0NFMDBGQzhBNDEgLyogV0tCcm93c2lu
Z0NvbnRleHRQb2xpY3lEZWxlZ2F0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXS0Jyb3dzaW5nQ29udGV4dFBvbGljeURlbGVnYXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC01MTcyLDYgKzUxNzQsNyBAQAogCQkJCTM3QTY0RTU2MThGMzhGNDYwMEVCMzBG
MSAvKiBfV0tGb3JtSW5wdXRTZXNzaW9uLmggKi8sCiAJCQkJMUE0M0U4MjgxODhGM0NEQzAwOUU0
RDMwIC8qIF9XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oICovLAogCQkJCTFBNDNFODI3MTg4
RjNDREMwMDlFNEQzMCAvKiBfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24ubW0gKi8sCisJCQkJ
N0M4OUQyRDYxQTZDNkJFNjAwM0E1RkRFIC8qIF9XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbklu
dGVybmFsLmggKi8sCiAJCQkJMzc2QzUxMTgxOTU3NDUyRTAwMDdCMEZBIC8qIF9XS1NlY3VyaXR5
T3JpZ2luLmggKi8sCiAJCQkJMzc2QzUxMTcxOTU3NDUyRTAwMDdCMEZBIC8qIF9XS1NlY3VyaXR5
T3JpZ2luLm1tICovLAogCQkJCTM3NkM1MTFCMTk1NzQ4QzIwMDA3QjBGQSAvKiBfV0tTZWN1cml0
eU9yaWdpbkludGVybmFsLmggKi8sCkBAIC03NDYyLDYgKzc0NjUsNyBAQAogCQkJCTFBQjdENjFB
MTI4OEI5RDkwMENGRDA4QyAvKiBEb3dubG9hZFByb3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJzICov
LAogCQkJCUM1MTczODgxMTJERjhGNEYwMEVFM0Y0NyAvKiBEcmFnQ29udHJvbGxlckFjdGlvbi5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQkM4NDUyQTgxMTYyQzgwOTAwQ0FCOUI1IC8qIERyYXdpbmdB
cmVhLmggaW4gSGVhZGVycyAqLywKKwkJCQk3Qzg5RDJENzFBNkM2QkU2MDAzQTVGREUgLyogX1dL
UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
QjY1OTIzMTIwOEI0REIwMDQ0ODE2QyAvKiBEcmF3aW5nQXJlYUluZm8uaCBpbiBIZWFkZXJzICov
LAogCQkJCTdDODlEMkMwMUE2QjExRUYwMDNBNUZERSAvKiBXS1VzZXJDb250ZW50RmlsdGVyUmVm
LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTY0MjI5QTEyREQwMjkyMDBDQUFFMkMgLyogRHJhd2lu
Z0FyZWFNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>244872</attachid>
            <date>2015-01-18 18:39:10 -0800</date>
            <delta_ts>2015-01-19 16:57:01 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-140601-20150118183916.patch</filename>
            <type>text/plain</type>
            <size>60116</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE3ODYzNikKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0OSBAQAorMjAxNS0wMS0xOCAgU2FtIFdl
aW5pZyAgPHNhbUB3ZWJraXQub3JnPgorCisgICAgICAgIE1lcmdlIEFQSTo6UHJvY2Vzc1Bvb2xD
b25maWd1cmF0aW9uIGFuZCBfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MDYwMQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIC0gQ29udmVydHMgX1dLUHJvY2Vz
c1Bvb2xDb25maWd1cmF0aW9uIHRvIGJlIGJhY2tlZCB2aWEgQVBJOjpQcm9jZXNzUG9vbENvbmZp
Z3VyYXRpb24uCisgICAgICAgIC0gRXhwYW5kcyBBUEk6OlByb2Nlc3NQb29sQ29uZmlndXJhdGlv
biB0byBhZGQgYWxsIHRoZSBwYXJhbWV0ZXJzIG5lY2Vzc2FyeSB0byBmdWxseQorICAgICAgICAg
IGluaXRpYWxpemUgYSBXZWJQcm9jZXNzUG9vbC4gVGhpcyBhbGxvd3MgLVtXS1Byb2Nlc3NQb29s
IF9pbml0V2l0aENvbmZpZ3VyYXRpb246XSB0bworICAgICAgICAgIGJlIGEgc2ltcGxlIHBhc3Mg
dGhyb3VnaCBpbml0aWFsaXplciwgd2hpY2ggaW4gdHVybiBhbGxvd3MgdXMgdG8gY29uc2lkZXIg
V2ViUHJvY2Vzc1Bvb2xzCisgICAgICAgICAgY3JlYXRlZCBvbiB0aGUgQysrIGFuZCBPYmplY3Rp
dmUtQyBzaWRlcyBhcyBlcXVpdmFsZW50LgorICAgICAgICAtIE1ha2VzIFdlYlByb2Nlc3NQb29s
IG93biB0aGUgcmVmZXJlbmNlIHRvIHRoZSBBUEk6OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiAo
cmF0aGVyIHRoYW4KKyAgICAgICAgICB0aGUgV0tQcm9jZXNzUG9vbCB3cmFwcGVyKS4KKworICAg
ICAgICAqIFNoYXJlZC9Db2NvYS9BUElPYmplY3QubW06CisgICAgICAgIChBUEk6Ok9iamVjdDo6
bmV3T2JqZWN0KToKKyAgICAgICAgQ3JlYXRlIHRoZSBBUEk6OlByb2Nlc3NQb29sQ29uZmlndXJh
dGlvbnMgdXNpbmcgW19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBhbGxvY10gYXMgaXRzIAor
ICAgICAgICBzdG9yYWdlLi4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bv
b2xDb25maWd1cmF0aW9uLmNwcDoKKyAgICAgICAgKEFQSTo6UHJvY2Vzc1Bvb2xDb25maWd1cmF0
aW9uOjpjcmVhdGUpOgorICAgICAgICAoQVBJOjpQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb246OmNy
ZWF0ZVdpdGhMZWdhY3lPcHRpb25zKToKKyAgICAgICAgKEFQSTo6UHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uOjpQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24pOgorICAgICAgICAoQVBJOjpQcm9jZXNz
UG9vbENvbmZpZ3VyYXRpb246On5Qcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24pOgorICAgICAgICAo
QVBJOjpQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb246OmNvcHkpOgorICAgICAgICAoQVBJOjpQcm9j
ZXNzUG9vbENvbmZpZ3VyYXRpb246OndlYlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbik6IERlbGV0
ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24u
aDoKKyAgICAgICAgQWRkIHRoZSByZW1haW5pbmcgaW5pdGlhbGl6YXRpb24gcGFyYW1ldGVycyBh
bmQgYWRkIGEgY29udmVuaWVuY2UgY3JlYXRlIGZ1bmN0aW9uCisgICAgICAgIGZvciBjb25maWd1
cmluZyBsZWdhY3kgV2ViUHJvY2Vzc1Bvb2xzIChmb3IgdXNlIGJ5IHRoZSBDLVNQSSkuCisKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVEYXRhU3RvcmUuY3BwOgorICAgICAgICAo
QVBJOjpXZWJzaXRlRGF0YVN0b3JlOjp3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXBy
ZXNlbnRhdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlRGF0YVN0b3Jl
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElXZWJzaXRlRGF0YVN0b3JlQ29j
b2EubW06CisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OndlYnNpdGVEYXRhRGlyZWN0
b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFT
dG9yZTo6ZGVmYXVsdERhdGFTdG9yZUNvbmZpZ3VyYXRpb24pOgorICAgICAgICBFeHBvc2UgaGVs
cGVyIGZvciBnZXR0aW5nIHRoZSB3ZWJzaXRlIGRhdGEgZGlyZWN0b3JpZXMgZm9yIHVzZSBpbiB0
aGUgUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9D
L1dLQ29udGV4dC5jcHA6CisgICAgICAgIChXS0NvbnRleHRDcmVhdGUpOgorICAgICAgICAoV0tD
b250ZXh0Q3JlYXRlV2l0aEluamVjdGVkQnVuZGxlUGF0aCk6CisgICAgICAgIChXS0NvbnRleHRD
cmVhdGVXaXRoQ29uZmlndXJhdGlvbik6CisgICAgICAgIFVzZSBQcm9jZXNzUG9vbENvbmZpZ3Vy
YXRpb246OmNyZWF0ZVdpdGhMZWdhY3lPcHRpb25zKCkgdG8ga2VlcCBiYWNrd2FyZHMgY29tcGF0
aWJpbGl0eS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHRDb25maWd1cmF0
aW9uUmVmLmNwcDoKKyAgICAgICAgKFdLQ29udGV4dENvbmZpZ3VyYXRpb25DcmVhdGUpOgorICAg
ICAgICBVcGRhdGUgZm9yIFByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjo6Y3JlYXRlKCkgcmV0dXJu
aW5nIGEgUmVmLiBOb3RlLCB0aGlzIGZ1bmN0aW9uCisgICAgICAgIHdhcyBub3QgY2hhbmdlZCB0
byBjYWxsIFByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjo6Y3JlYXRlV2l0aExlZ2FjeU9wdGlvbnMo
KSBzaW5jZQorICAgICAgICBpdCBoYXMgbm90IGJlZW4gYXJvdW5kIGxvbmcgZW5vdWdoIHRvIHdh
cnJhbnQgaXQuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc0dyb3Vw
Lm1tOgorICAgICAgICAoLVtXS1Byb2Nlc3NHcm91cCBpbml0V2l0aEluamVjdGVkQnVuZGxlVVJM
Ol0pOgorICAgICAgICBVc2UgUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOjpjcmVhdGVXaXRoTGVn
YWN5T3B0aW9ucygpIHRvIGtlZXAgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkuCisKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW06CisgICAgICAgICgtW1dLUHJv
Y2Vzc1Bvb2wgZGVzY3JpcHRpb25dKToKKyAgICAgICAgQ2hhbmdlIHRvIHB1bGwgdGhlIGNvbmZp
Z3VyYXRpb24gZnJvbSB0aGUgdW5kZXJseWluZyBBUEk6Ok9iamVjdC4KKworICAgICAgICAoLVtX
S1Byb2Nlc3NQb29sIF9jb25maWd1cmF0aW9uXSk6CisgICAgICAgIENoYW5nZSB0byBwdWxsIHRo
ZSBjb25maWd1cmF0aW9uIGZyb20gdGhlIHVuZGVybHlpbmcgQVBJOjpPYmplY3QgYW5kIGNhbGwg
dGhlIG5ldworICAgICAgICBjb3B5KCkgaGVscGVyIG9uIGl0LgorICAgICAgICAKKyAgICAgICAg
KC1bV0tQcm9jZXNzUG9vbCBfaW5pdFdpdGhDb25maWd1cmF0aW9uOl0pOgorICAgICAgICBDb252
ZXJ0IHRvIGJlIGEgc2ltcGxlIHBhc3MgdGhyb3VnaCB0byBBUEk6Ok9iamVjdDo6Y29uc3RydWN0
SW5XcmFwcGVyLgorCisgICAgICAgICh3ZWJzaXRlRGF0YURpcmVjdG9yeVVSTCk6IERlbGV0ZWQu
CisgICAgICAgIE1vdmVkIHRvIEFQSVdlYnNpdGVEYXRhU3RvcmUuaAorCisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sSW50ZXJuYWwuaDoKKyAgICAgICAgUmVtb3Zl
cyB0aGUgX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIG1lbWJlciwgbm93IHRoYXQgaXQgaXMg
c3RvcmVkIG9uIHRoZSBXZWJQcm9jZXNzUG9vbC4KKyAgICAgICAgCisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9Db2NvYS9fV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24ubW06CisgICAgICAgICgt
W19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBpbml0XSk6CisgICAgICAgICgtW19XS1Byb2Nl
c3NQb29sQ29uZmlndXJhdGlvbiBkZWFsbG9jXSk6CisgICAgICAgIEFkZGVkIHRvIHN1cHBvcnQg
QVBJOjpPYmplY3QgYnJpZGdpbmcuCisKKyAgICAgICAgKC1bX1dLUHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uIGluamVjdGVkQnVuZGxlVVJMXSk6CisgICAgICAgICgtW19XS1Byb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbiBzZXRJbmplY3RlZEJ1bmRsZVVSTDpdKToKKyAgICAgICAgQ29udmVydCB0byBn
ZXR0aW5nIHRoZSBVUkwgZnJvbSB0aGUgdW5kZXJseWluZyBvYmplY3QuIE1vdmVkIHRoZSBleGNl
cHRpb24KKyAgICAgICAgdGhhdCB1c2VkIHRvIGJlIG9uIGNyZWF0aW9uIG9mIHRoZSBXS1Byb2Nl
c3NQb29sLgorCisgICAgICAgICgtW19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBtYXhpbXVt
UHJvY2Vzc0NvdW50XSk6CisgICAgICAgICgtW19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBz
ZXRNYXhpbXVtUHJvY2Vzc0NvdW50Ol0pOgorICAgICAgICBDb252ZXJ0IHRvIGdldHRpbmcgdGhl
IGNvdW50IGZyb20gdGhlIHVuZGVybHlpbmcgb2JqZWN0LgorCisgICAgICAgICgtW19XS1Byb2Nl
c3NQb29sQ29uZmlndXJhdGlvbiBjYWNoZVBhcnRpdGlvbmVkVVJMU2NoZW1lc10pOgorICAgICAg
ICBDb252ZXJ0IHRvIGNvbnN0cnVjdGluZyB0aGUgTlNBcnJheSBvbiBkZW1hbmQgZnJvbSB0aGUg
dW5kZXJseWluZyBWZWN0b3IuCisKKyAgICAgICAgKC1bX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0
aW9uIHNldENhY2hlUGFydGl0aW9uZWRVUkxTY2hlbWVzOl0pOgorICAgICAgICBDb252ZXJ0cyB0
aGUgTlNBcnJheSB0byBhIFZlY3RvciByYXRoZXIgdGhhbiBzdG9yaW5nIHRoZSBhcnJheS4KKwor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9u
SW50ZXJuYWwuaDogQWRkZWQuCisgICAgICAgIChBUEk6OndyYXBwZXIpOgorICAgICAgICBBZGQg
Ym9pbGVycGxhdGUgZm9yIEFQSTo6T2JqZWN0IGJyaWRnaW5nLgorCisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5jcHA6CisgICAgICAgICh3ZWJraXRXZWJDb250
ZXh0Q29uc3RydWN0ZWQpOgorICAgICAgICBVcGRhdGUgdG8gdXNlIEFQSTo6UHJvY2Vzc1Bvb2xD
b25maWd1cmF0aW9uOjpjcmVhdGVXaXRoTGVnYWN5T3B0aW9ucygpIHRvIGtlZXAgYmFja3dhcmRz
IGNvbXBhdGliaWxpdHkuCisKKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94
eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5OjppbnNwZWN0b3JQcm9j
ZXNzUG9vbCk6CisgICAgICAgIFVwZGF0ZSB0byBjYWxsIEFQSTo6UHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uOjpjcmVhdGVXaXRoTGVnYWN5T3B0aW9ucygpLgorCisgICAgICAgICogVUlQcm9jZXNz
L1dlYlByb2Nlc3NQb29sLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OndlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OldlYlByb2Nlc3NQb29sKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmFwcGx5UGxhdGZvcm1TcGVjaWZpY0NvbmZpZ3Vy
YXRpb25EZWZhdWx0cyk6IERlbGV0ZWQuCisgICAgICAgIFRoaXMgZnVuY3Rpb25hbGl0eSB3YXMg
bW92ZWQgdG8gdGhlIGNvbnN0cnVjdG9yIG9mIHRoZSBBUEk6OlByb2Nlc3NQb29sQ29uZmlndXJh
dGlvbi4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaDoKKyAgICAgICAgQ2hh
bmdlZCB0byB0YWtlIChhbmQgc3RvcmUpIGEgQVBJOjpQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24g
cmF0aGVyIHRoYW4gdGhlIFdlYlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi4KKworICAgICAgICAq
IFVJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tOgorICAgICAgICAoV2ViS2l0
OjpXZWJQcm9jZXNzUG9vbDo6bGVnYWN5UGxhdGZvcm1EZWZhdWx0V2ViU1FMRGF0YWJhc2VEaXJl
Y3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6bGVnYWN5UGxhdGZvcm1E
ZWZhdWx0SW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
cm9jZXNzUG9vbDo6bGVnYWN5UGxhdGZvcm1EZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KToK
KyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmxlZ2FjeVBsYXRmb3JtRGVmYXVsdE1l
ZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9v
bDo6cGxhdGZvcm1EZWZhdWx0V2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1EZWZhdWx0SW5kZXhlZERCRGF0
YWJhc2VEaXJlY3RvcnkpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9v
bDo6cGxhdGZvcm1EZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtRGVmYXVsdE1lZGlhS2V5c1N0b3Jh
Z2VEaXJlY3RvcnkpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvV2ViQ29udGV4
dEVmbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpsZWdhY3lQbGF0Zm9y
bURlZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBy
b2Nlc3NQb29sOjpsZWdhY3lQbGF0Zm9ybURlZmF1bHRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9y
eSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpsZWdhY3lQbGF0Zm9ybURlZmF1
bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9v
bDo6bGVnYWN5UGxhdGZvcm1EZWZhdWx0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybURlZmF1bHRXZWJTUUxEYXRhYmFz
ZURpcmVjdG9yeSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpw
bGF0Zm9ybURlZmF1bHRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybURlZmF1bHRMb2NhbFN0b3JhZ2VE
aXJlY3RvcnkpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6cGxh
dGZvcm1EZWZhdWx0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSk6IERlbGV0ZWQuCisgICAgICAg
ICogVUlQcm9jZXNzL2d0ay9XZWJQcm9jZXNzUG9vbEd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlByb2Nlc3NQb29sOjpsZWdhY3lQbGF0Zm9ybURlZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVj
dG9yeSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpsZWdhY3lQbGF0Zm9ybURl
ZmF1bHRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBy
b2Nlc3NQb29sOjpsZWdhY3lQbGF0Zm9ybURlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6bGVnYWN5UGxhdGZvcm1EZWZhdWx0TWVk
aWFLZXlzU3RvcmFnZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29s
OjpwbGF0Zm9ybURlZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeSk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybURlZmF1bHRJbmRleGVkREJEYXRh
YmFzZURpcmVjdG9yeSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29s
OjpwbGF0Zm9ybURlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1EZWZhdWx0TWVkaWFLZXlzU3RvcmFn
ZURpcmVjdG9yeSk6IERlbGV0ZWQuCisgICAgICAgIFJlbmFtZWQgdG8gbWFrZSBpdCBjbGVhciB0
aGVzZSB3ZXJlIHRoZSBsZWdhY3kgbG9jYXRpb25zIGZvciB0aGVzZSBkaXJlY3Rvcmllcy4KKwor
ICAgICAgICAqIFdlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgQWRk
ZWQgbmV3IGZpbGVzLgorCiAyMDE1LTAxLTE4ICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxl
LmNvbT4KIAogICAgICAgICBBdHRlbXB0IHRvIGZpeCB0aGUgaU9TIGJ1aWxkIGFmdGVyIDxodHRw
Oi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8xNzg2MzE+CkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvQ29jb2EvQVBJT2JqZWN0Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L1NoYXJlZC9Db2NvYS9BUElPYmplY3QubW0JKHJldmlzaW9uIDE3ODYzMykKKysrIFNvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9Db2NvYS9BUElPYmplY3QubW0JKHdvcmtpbmcgY29weSkKQEAgLTU1LDYg
KzU1LDcgQEAKICNpbXBvcnQgIldLV2ViUHJvY2Vzc1BsdWdJblNjcmlwdFdvcmxkSW50ZXJuYWwu
aCIKICNpbXBvcnQgIl9XS0Rvd25sb2FkSW50ZXJuYWwuaCIKICNpbXBvcnQgIl9XS0ZyYW1lSGFu
ZGxlSW50ZXJuYWwuaCIKKyNpbXBvcnQgIl9XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbkludGVy
bmFsLmgiCiAjaW1wb3J0ICJfV0tXZWJzaXRlRGF0YVN0b3JlSW50ZXJuYWwuaCIKICNpbXBvcnQg
PG9iamMvb2JqYy1hdXRvLmg+CiAKQEAgLTExMSw2ICsxMTIsMTAgQEAgdm9pZCogT2JqZWN0Ojpu
ZXdPYmplY3Qoc2l6ZV90IHNpemUsIFR5cAogICAgICAgICB3cmFwcGVyID0gW1dLUHJvY2Vzc1Bv
b2wgYWxsb2NdOwogICAgICAgICBicmVhazsKIAorICAgIGNhc2UgVHlwZTo6UHJvY2Vzc1Bvb2xD
b25maWd1cmF0aW9uOgorICAgICAgICB3cmFwcGVyID0gW19XS1Byb2Nlc3NQb29sQ29uZmlndXJh
dGlvbiBhbGxvY107CisgICAgICAgIGJyZWFrOworCiAgICAgY2FzZSBUeXBlOjpEYXRhOgogICAg
ICAgICB3cmFwcGVyID0gW1dLTlNEYXRhIGFsbG9jXTsKICAgICAgICAgYnJlYWs7CkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5jcHAJKHJldmlz
aW9uIDE3ODYzMykKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94
eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAKIAogI2lmIEVOQUJMRShJTlNQ
RUNUT1IpCiAKKyNpbmNsdWRlICJBUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaCIKICNpbmNs
dWRlICJBUElVUkxSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiV2ViRnJhbWVQb2xpY3lMaXN0ZW5lclBy
b3h5LmgiCiAjaW5jbHVkZSAiV2ViRnJhbWVQcm94eS5oIgpAQCAtMzY4LDExICszNjksMTAgQEAg
V2ViUHJvY2Vzc1Bvb2wmIFdlYkluc3BlY3RvclByb3h5OjppbnNwZQogCiAgICAgc3RhdGljIFdl
YlByb2Nlc3NQb29sKiBwcm9jZXNzUG9vbDsKICAgICBpZiAoIXByb2Nlc3NQb29sKSB7Ci0gICAg
ICAgIFdlYlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uOwotICAgICAgICBX
ZWJQcm9jZXNzUG9vbDo6YXBwbHlQbGF0Zm9ybVNwZWNpZmljQ29uZmlndXJhdGlvbkRlZmF1bHRz
KGNvbmZpZ3VyYXRpb24pOwotICAgICAgICAKLSAgICAgICAgcHJvY2Vzc1Bvb2wgPSAoV2ViUHJv
Y2Vzc1Bvb2w6OmNyZWF0ZShXVEY6Om1vdmUoY29uZmlndXJhdGlvbikpKS5sZWFrUmVmKCk7Ci0g
ICAgICAgIHByb2Nlc3NQb29sLT5zZXRQcm9jZXNzTW9kZWwoUHJvY2Vzc01vZGVsTXVsdGlwbGVT
ZWNvbmRhcnlQcm9jZXNzZXMpOworICAgICAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBBUEk6OlBy
b2Nlc3NQb29sQ29uZmlndXJhdGlvbjo6Y3JlYXRlV2l0aExlZ2FjeU9wdGlvbnMoKTsKKyAgICAg
ICAgY29uZmlndXJhdGlvbi0+c2V0UHJvY2Vzc01vZGVsKFByb2Nlc3NNb2RlbE11bHRpcGxlU2Vj
b25kYXJ5UHJvY2Vzc2VzKTsKKworICAgICAgICBwcm9jZXNzUG9vbCA9ICYoV2ViUHJvY2Vzc1Bv
b2w6OmNyZWF0ZShjb25maWd1cmF0aW9uLmdldCgpKSkubGVha1JlZigpOwogICAgIH0KIAogICAg
IHJldHVybiAqcHJvY2Vzc1Bvb2w7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Bvb2wuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUG9vbC5jcHAJKHJldmlzaW9uIDE3ODYzNCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcg
QEAKICNpbmNsdWRlICJBUElBcnJheS5oIgogI2luY2x1ZGUgIkFQSURvd25sb2FkQ2xpZW50Lmgi
CiAjaW5jbHVkZSAiQVBJTGVnYWN5Q29udGV4dEhpc3RvcnlDbGllbnQuaCIKKyNpbmNsdWRlICJB
UElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaCIKICNpbmNsdWRlICJDdXN0b21Qcm90b2NvbE1h
bmFnZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgIkRvd25sb2FkUHJveHkuaCIKICNpbmNsdWRlICJE
b3dubG9hZFByb3h5TWVzc2FnZXMuaCIKQEAgLTExMiwzMSArMTEzLDEwIEBAIHN0YXRpYyBjb25z
dCBkb3VibGUgc2hhcmVkU2Vjb25kYXJ5UHJvY2UKIAogREVGSU5FX0RFQlVHX09OTFlfR0xPQkFM
KFdURjo6UmVmQ291bnRlZExlYWtDb3VudGVyLCBwcm9jZXNzUG9vbENvdW50ZXIsICgiV2ViUHJv
Y2Vzc1Bvb2wiKSk7CiAKLXZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmFwcGx5UGxhdGZvcm1TcGVjaWZp
Y0NvbmZpZ3VyYXRpb25EZWZhdWx0cyhXZWJQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24mIGNvbmZp
Z3VyYXRpb24pCi17Ci0gICAgLy8gRklYTUU6IFRoaXMgZnVuY3Rpb24gc2hvdWxkIG5vdCBiZSBu
ZWVkZWQ7IGFsbCBwb3J0cyBzaG91bGQgbWFrZSBzdXJlIHRoYXQgdGhlIGNvbmZpZ3VyYXRpb24g
aGFzIHRoZSByaWdodAotICAgIC8vIHZhbHVlcywgYW5kIHRoZW4gd2Ugc2hvdWxkIGdldCByaWQg
b2YgdGhlIHBsYXRmb3JtIHNwZWNpZmljIGRlZmF1bHRzIGluc2lkZSBXZWJQcm9jZXNzUG9vbC4K
LQotICAgIGlmICghY29uZmlndXJhdGlvbi5sb2NhbFN0b3JhZ2VEaXJlY3RvcnkpCi0gICAgICAg
IGNvbmZpZ3VyYXRpb24ubG9jYWxTdG9yYWdlRGlyZWN0b3J5ID0gcGxhdGZvcm1EZWZhdWx0TG9j
YWxTdG9yYWdlRGlyZWN0b3J5KCk7Ci0KLSAgICBpZiAoIWNvbmZpZ3VyYXRpb24ud2ViU1FMRGF0
YWJhc2VEaXJlY3RvcnkpCi0gICAgICAgIGNvbmZpZ3VyYXRpb24ud2ViU1FMRGF0YWJhc2VEaXJl
Y3RvcnkgPSBwbGF0Zm9ybURlZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpOwotCi0gICAg
Ly8gKioqKioqKioqCi0gICAgLy8gSU1QT1JUQU5UOiBEbyBub3QgY2hhbmdlIHRoZSBkaXJlY3Rv
cnkgc3RydWN0dXJlIGZvciBpbmRleGVkIGRhdGFiYXNlcyBvbiBkaXNrIHdpdGhvdXQgZmlyc3Qg
Y29uc3VsdGluZyBhIHJldmlld2VyIGZyb20gQXBwbGUgKDxyZGFyOi8vcHJvYmxlbS8xNzQ1NDcx
Mj4pCi0gICAgLy8gKioqKioqKioqCi0gICAgaWYgKCFjb25maWd1cmF0aW9uLmluZGV4ZWREQkRh
dGFiYXNlRGlyZWN0b3J5KQotICAgICAgICBjb25maWd1cmF0aW9uLmluZGV4ZWREQkRhdGFiYXNl
RGlyZWN0b3J5ID0gcGxhdGZvcm1EZWZhdWx0SW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoKTsK
LQotICAgIGlmICghY29uZmlndXJhdGlvbi5tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KQotICAg
ICAgICBjb25maWd1cmF0aW9uLm1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkgPSBwbGF0Zm9ybURl
ZmF1bHRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCk7Ci19Ci0KLVBhc3NSZWZQdHI8V2ViUHJv
Y2Vzc1Bvb2w+IFdlYlByb2Nlc3NQb29sOjpjcmVhdGUoV2ViUHJvY2Vzc1Bvb2xDb25maWd1cmF0
aW9uIGNvbmZpZ3VyYXRpb24pCitSZWY8V2ViUHJvY2Vzc1Bvb2w+IFdlYlByb2Nlc3NQb29sOjpj
cmVhdGUoQVBJOjpQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24pCiB7CiAg
ICAgSW5pdGlhbGl6ZVdlYktpdDIoKTsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYlByb2Nl
c3NQb29sKFdURjo6bW92ZShjb25maWd1cmF0aW9uKSkpOworICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFdlYlByb2Nlc3NQb29sKGNvbmZpZ3VyYXRpb24pKTsKIH0KIAogc3RhdGljIFZlY3RvcjxX
ZWJQcm9jZXNzUG9vbCo+JiBwcm9jZXNzUG9vbHMoKQpAQCAtMTUwLDIyICsxMzAsMjMgQEAgY29u
c3QgVmVjdG9yPFdlYlByb2Nlc3NQb29sKj4mIFdlYlByb2NlcwogICAgIHJldHVybiBwcm9jZXNz
UG9vbHMoKTsKIH0KIAotc3RhdGljIFdlYnNpdGVEYXRhU3RvcmU6OkNvbmZpZ3VyYXRpb24gd2Vi
c2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24oY29uc3QgV2ViUHJvY2Vzc1Bvb2xDb25maWd1cmF0
aW9uJiBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24pCitzdGF0aWMgV2Vic2l0ZURhdGFTdG9yZTo6
Q29uZmlndXJhdGlvbiB3ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbihBUEk6OlByb2Nlc3NQ
b29sQ29uZmlndXJhdGlvbiYgcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uKQogewogICAgIFdlYnNp
dGVEYXRhU3RvcmU6OkNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbjsKIAotICAgIGNvbmZpZ3Vy
YXRpb24ubG9jYWxTdG9yYWdlRGlyZWN0b3J5ID0gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmxv
Y2FsU3RvcmFnZURpcmVjdG9yeTsKKyAgICBjb25maWd1cmF0aW9uLmxvY2FsU3RvcmFnZURpcmVj
dG9yeSA9IHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5sb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKTsK
IAogICAgIHJldHVybiBjb25maWd1cmF0aW9uOwogfQogCi1XZWJQcm9jZXNzUG9vbDo6V2ViUHJv
Y2Vzc1Bvb2woV2ViUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24pCi0gICAg
OiBtX3Byb2Nlc3NNb2RlbChQcm9jZXNzTW9kZWxTaGFyZWRTZWNvbmRhcnlQcm9jZXNzKQotICAg
ICwgbV93ZWJQcm9jZXNzQ291bnRMaW1pdChVSU5UX01BWCkKK1dlYlByb2Nlc3NQb29sOjpXZWJQ
cm9jZXNzUG9vbChBUEk6OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbikK
KyAgICA6IG1fY29uZmlndXJhdGlvbihjb25maWd1cmF0aW9uLmNvcHkoKSkKKyAgICAsIG1fcHJv
Y2Vzc01vZGVsKG1fY29uZmlndXJhdGlvbi0+cHJvY2Vzc01vZGVsKCkpCisgICAgLCBtX3dlYlBy
b2Nlc3NDb3VudExpbWl0KCFtX2NvbmZpZ3VyYXRpb24tPm1heGltdW1Qcm9jZXNzQ291bnQoKSA/
IFVJTlRfTUFYIDogbV9jb25maWd1cmF0aW9uLT5tYXhpbXVtUHJvY2Vzc0NvdW50KCkpCiAgICAg
LCBtX2hhdmVJbml0aWFsRW1wdHlQcm9jZXNzKGZhbHNlKQogICAgICwgbV9wcm9jZXNzV2l0aFBh
Z2VDYWNoZSgwKQogICAgICwgbV9kZWZhdWx0UGFnZUdyb3VwKFdlYlBhZ2VHcm91cDo6Y3JlYXRl
Tm9uTnVsbCgpKQotICAgICwgbV9pbmplY3RlZEJ1bmRsZVBhdGgoY29uZmlndXJhdGlvbi5pbmpl
Y3RlZEJ1bmRsZVBhdGgpCisgICAgLCBtX2luamVjdGVkQnVuZGxlUGF0aChtX2NvbmZpZ3VyYXRp
b24tPmluamVjdGVkQnVuZGxlUGF0aCgpKQogICAgICwgbV9kb3dubG9hZENsaWVudChzdGQ6Om1h
a2VfdW5pcXVlPEFQSTo6RG93bmxvYWRDbGllbnQ+KCkpCiAgICAgLCBtX2hpc3RvcnlDbGllbnQo
c3RkOjptYWtlX3VuaXF1ZTxBUEk6OkxlZ2FjeUNvbnRleHRIaXN0b3J5Q2xpZW50PigpKQogICAg
ICwgbV92aXNpdGVkTGlua1Byb3ZpZGVyKFZpc2l0ZWRMaW5rUHJvdmlkZXI6OmNyZWF0ZSgpKQpA
QCAtMTczLDIyICsxNTQsMjIgQEAgV2ViUHJvY2Vzc1Bvb2w6OldlYlByb2Nlc3NQb29sKFdlYlBy
b2NlcwogICAgICwgbV9wbHVnSW5BdXRvU3RhcnRQcm92aWRlcih0aGlzKQogICAgICwgbV9hbHdh
eXNVc2VzQ29tcGxleFRleHRDb2RlUGF0aChmYWxzZSkKICAgICAsIG1fc2hvdWxkVXNlRm9udFNt
b290aGluZyh0cnVlKQotICAgICwgbV9jYWNoZU1vZGVsKENhY2hlTW9kZWxEb2N1bWVudFZpZXdl
cikKKyAgICAsIG1fY2FjaGVNb2RlbChtX2NvbmZpZ3VyYXRpb24tPmNhY2hlTW9kZWwoKSkKICAg
ICAsIG1fbWVtb3J5U2FtcGxlckVuYWJsZWQoZmFsc2UpCiAgICAgLCBtX21lbW9yeVNhbXBsZXJJ
bnRlcnZhbCgxNDAwLjApCi0gICAgLCBtX3dlYnNpdGVEYXRhU3RvcmUoV2Vic2l0ZURhdGFTdG9y
ZTo6Y3JlYXRlKHdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uKGNvbmZpZ3VyYXRpb24pKSkK
LSAgICAsIG1fc3RvcmFnZU1hbmFnZXIoU3RvcmFnZU1hbmFnZXI6OmNyZWF0ZShjb25maWd1cmF0
aW9uLmxvY2FsU3RvcmFnZURpcmVjdG9yeSkpCisgICAgLCBtX3dlYnNpdGVEYXRhU3RvcmUoV2Vi
c2l0ZURhdGFTdG9yZTo6Y3JlYXRlKHdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uKG1fY29u
ZmlndXJhdGlvbi5nZXQoKSkpKQorICAgICwgbV9zdG9yYWdlTWFuYWdlcihTdG9yYWdlTWFuYWdl
cjo6Y3JlYXRlKG1fY29uZmlndXJhdGlvbi0+bG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkpKQogI2lm
IFVTRShTT1VQKQogICAgICwgbV9pbml0aWFsSFRUUENvb2tpZUFjY2VwdFBvbGljeShIVFRQQ29v
a2llQWNjZXB0UG9saWN5T25seUZyb21NYWluRG9jdW1lbnREb21haW4pCiAjZW5kaWYKLSAgICAs
IG1fd2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoV1RGOjptb3ZlKGNvbmZpZ3VyYXRpb24ud2ViU1FM
RGF0YWJhc2VEaXJlY3RvcnkpKQotICAgICwgbV9pbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeShX
VEY6Om1vdmUoY29uZmlndXJhdGlvbi5pbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSkpCi0gICAg
LCBtX21lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoV1RGOjptb3ZlKGNvbmZpZ3VyYXRpb24ubWVk
aWFLZXlzU3RvcmFnZURpcmVjdG9yeSkpCisgICAgLCBtX3dlYlNRTERhdGFiYXNlRGlyZWN0b3J5
KGNvbmZpZ3VyYXRpb24ud2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoKSkKKyAgICAsIG1faW5kZXhl
ZERCRGF0YWJhc2VEaXJlY3RvcnkoY29uZmlndXJhdGlvbi5pbmRleGVkREJEYXRhYmFzZURpcmVj
dG9yeSgpKQorICAgICwgbV9tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KGNvbmZpZ3VyYXRpb24u
bWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpKQogICAgICwgbV9zaG91bGRVc2VUZXN0aW5nTmV0
d29ya1Nlc3Npb24oZmFsc2UpCiAgICAgLCBtX3Byb2Nlc3NUZXJtaW5hdGlvbkVuYWJsZWQodHJ1
ZSkKICNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogICAgICwgbV9jYW5IYW5kbGVIVFRQU1Nl
cnZlclRydXN0RXZhbHVhdGlvbih0cnVlKQotICAgICwgbV91c2VzTmV0d29ya1Byb2Nlc3MoZmFs
c2UpCisgICAgLCBtX3VzZXNOZXR3b3JrUHJvY2VzcyhtX2NvbmZpZ3VyYXRpb24tPnVzZU5ldHdv
cmtQcm9jZXNzKCkpCiAjZW5kaWYKICNpZiBVU0UoU09VUCkKICAgICAsIG1faWdub3JlVExTRXJy
b3JzKHRydWUpCkBAIC0xOTcsNiArMTc4LDExIEBAIFdlYlByb2Nlc3NQb29sOjpXZWJQcm9jZXNz
UG9vbChXZWJQcm9jZXMKICAgICAsIG1fdXNlck9ic2VydmFibGVQYWdlQ291bnRlcihbdGhpc10o
Ym9vbCkgeyB1cGRhdGVQcm9jZXNzU3VwcHJlc3Npb25TdGF0ZSgpOyB9KQogICAgICwgbV9wcm9j
ZXNzU3VwcHJlc3Npb25EaXNhYmxlZEZvclBhZ2VDb3VudGVyKFt0aGlzXShib29sKSB7IHVwZGF0
ZVByb2Nlc3NTdXBwcmVzc2lvblN0YXRlKCk7IH0pCiB7CisjaWYgRU5BQkxFKENBQ0hFX1BBUlRJ
VElPTklORykKKyAgICBmb3IgKGNvbnN0IGF1dG8mIHVybFNjaGVtZSA6IG1fY29uZmlndXJhdGlv
bi0+Y2FjaGVQYXJ0aXRpb25lZFVSTFNjaGVtZXMoKSkKKyAgICAgICAgbV9zY2hlbWVzVG9SZWdp
c3RlckFzQ2FjaGVQYXJ0aXRpb25lZC5hZGQodXJsU2NoZW1lKTsKKyNlbmRpZgorCiAgICAgcGxh
dGZvcm1Jbml0aWFsaXplKCk7CiAKICAgICBhZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6Oldl
YlByb2Nlc3NQb29sOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksICp0aGlzKTsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCShyZXZpc2lvbiAxNzg2MzQpCisr
KyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAkod29ya2luZyBjb3B5
KQpAQCAtNzEsNiArNzEsNyBAQCBPQkpDX0NMQVNTIE5TU3RyaW5nOwogbmFtZXNwYWNlIEFQSSB7
CiBjbGFzcyBEb3dubG9hZENsaWVudDsKIGNsYXNzIExlZ2FjeUNvbnRleHRIaXN0b3J5Q2xpZW50
OworY2xhc3MgUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0
IHsKQEAgLTk3LDI3ICs5OCwxOSBAQCBpbnQgd2ViUHJvY2Vzc0xhdGVuY3lRT1MoKTsKIGludCB3
ZWJQcm9jZXNzVGhyb3VnaHB1dFFPUygpOwogI2VuZGlmCiAKLXN0cnVjdCBXZWJQcm9jZXNzUG9v
bENvbmZpZ3VyYXRpb24gewotICAgIFN0cmluZyBpbmplY3RlZEJ1bmRsZVBhdGg7Ci0gICAgU3Ry
aW5nIGxvY2FsU3RvcmFnZURpcmVjdG9yeTsKLSAgICBTdHJpbmcgd2ViU1FMRGF0YWJhc2VEaXJl
Y3Rvcnk7Ci0gICAgU3RyaW5nIGluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5OwotICAgIFN0cmlu
ZyBtZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5OwotfTsKLQotY2xhc3MgV2ViUHJvY2Vzc1Bvb2wg
OiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpQcm9jZXNzUG9vbD4s
IHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIKK2NsYXNzIFdlYlByb2Nlc3NQb29sIGZpbmFs
IDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6UHJvY2Vzc1Bvb2w+
LCBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyCiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJ
Tl9BUEkpCiAgICAgLCBwcml2YXRlIFBsdWdpbkluZm9TdG9yZUNsaWVudAogI2VuZGlmCiAgICAg
ewogcHVibGljOgotICAgIHN0YXRpYyB2b2lkIGFwcGx5UGxhdGZvcm1TcGVjaWZpY0NvbmZpZ3Vy
YXRpb25EZWZhdWx0cyhXZWJQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24mKTsKKyAgICBzdGF0aWMg
UmVmPFdlYlByb2Nlc3NQb29sPiBjcmVhdGUoQVBJOjpQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24m
KTsKIAotICAgIFdlYlByb2Nlc3NQb29sKFdlYlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbik7Ci0g
ICAgICAgIAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYlByb2Nlc3NQb29sPiBjcmVhdGUoV2Vi
UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uKTsKKyAgICBleHBsaWNpdCBXZWJQcm9jZXNzUG9vbChB
UEk6OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiYpOyAgICAgICAgCiAgICAgdmlydHVhbCB+V2Vi
UHJvY2Vzc1Bvb2woKTsKIAorICAgIEFQSTo6UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uJiBjb25m
aWd1cmF0aW9uKCkgeyByZXR1cm4gbV9jb25maWd1cmF0aW9uLmdldCgpOyB9CisKICAgICBzdGF0
aWMgY29uc3QgVmVjdG9yPFdlYlByb2Nlc3NQb29sKj4mIGFsbFByb2Nlc3NQb29scygpOwogCiAg
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CkBAIC0zNTUsNiArMzQ4LDEyIEBAIHB1YmxpYzoKICAg
ICAgICAgcmV0dXJuIG1fcHJvY2Vzc1N1cHByZXNzaW9uRGlzYWJsZWRGb3JQYWdlQ291bnRlci50
b2tlbjxQcm9jZXNzU3VwcHJlc3Npb25EaXNhYmxlZFRva2VuVHlwZT4oKTsKICAgICB9CiAKKyAg
ICAvLyBGSVhNRTogTW92ZSB0aGVzZSB0byBBUEk6OldlYnNpdGVEYXRhU3RvcmUuCisgICAgc3Rh
dGljIFN0cmluZyBsZWdhY3lQbGF0Zm9ybURlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKTsK
KyAgICBzdGF0aWMgU3RyaW5nIGxlZ2FjeVBsYXRmb3JtRGVmYXVsdEluZGV4ZWREQkRhdGFiYXNl
RGlyZWN0b3J5KCk7CisgICAgc3RhdGljIFN0cmluZyBsZWdhY3lQbGF0Zm9ybURlZmF1bHRXZWJT
UUxEYXRhYmFzZURpcmVjdG9yeSgpOworICAgIHN0YXRpYyBTdHJpbmcgbGVnYWN5UGxhdGZvcm1E
ZWZhdWx0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpOworCiBwcml2YXRlOgogICAgIHZvaWQg
cGxhdGZvcm1Jbml0aWFsaXplKCk7CiAKQEAgLTM4OCwxMSArMzg3LDYgQEAgcHJpdmF0ZToKIAog
ICAgIFN0cmluZyBwbGF0Zm9ybURlZmF1bHRJY29uRGF0YWJhc2VQYXRoKCkgY29uc3Q7CiAKLSAg
ICBzdGF0aWMgU3RyaW5nIHBsYXRmb3JtRGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSgpOwot
ICAgIHN0YXRpYyBTdHJpbmcgcGxhdGZvcm1EZWZhdWx0SW5kZXhlZERCRGF0YWJhc2VEaXJlY3Rv
cnkoKTsKLSAgICBzdGF0aWMgU3RyaW5nIHBsYXRmb3JtRGVmYXVsdFdlYlNRTERhdGFiYXNlRGly
ZWN0b3J5KCk7Ci0gICAgc3RhdGljIFN0cmluZyBwbGF0Zm9ybURlZmF1bHRNZWRpYUtleXNTdG9y
YWdlRGlyZWN0b3J5KCk7Ci0KICAgICBTdHJpbmcgZGlza0NhY2hlRGlyZWN0b3J5KCkgY29uc3Q7
CiAgICAgU3RyaW5nIHBsYXRmb3JtRGVmYXVsdERpc2tDYWNoZURpcmVjdG9yeSgpIGNvbnN0Owog
CkBAIC00MjIsNiArNDE2LDggQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgcGx1Z2luSW5m
b1N0b3JlRGlkTG9hZFBsdWdpbnMoUGx1Z2luSW5mb1N0b3JlKikgb3ZlcnJpZGU7CiAjZW5kaWYK
IAorICAgIFJlZjxBUEk6OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbj4gbV9jb25maWd1cmF0aW9u
OworCiAgICAgSVBDOjpNZXNzYWdlUmVjZWl2ZXJNYXAgbV9tZXNzYWdlUmVjZWl2ZXJNYXA7CiAK
ICAgICBQcm9jZXNzTW9kZWwgbV9wcm9jZXNzTW9kZWw7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRp
b24uY3BwCShyZXZpc2lvbiAxNzg2MzMpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDMx
ICsyNiw1OSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkFQSVByb2Nlc3NQb29s
Q29uZmlndXJhdGlvbi5oIgogCisjaW5jbHVkZSAiQVBJV2Vic2l0ZURhdGFTdG9yZS5oIgogI2lu
Y2x1ZGUgIldlYlByb2Nlc3NQb29sLmgiCiAKIG5hbWVzcGFjZSBBUEkgewogCi1Qcm9jZXNzUG9v
bENvbmZpZ3VyYXRpb246OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbigpCitSZWY8UHJvY2Vzc1Bv
b2xDb25maWd1cmF0aW9uPiBQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb246OmNyZWF0ZSgpCiB7Cisg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uKTsKIH0KIAot
UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOjp+UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uKCkKK1Jl
ZjxQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24+IFByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjo6Y3Jl
YXRlV2l0aExlZ2FjeU9wdGlvbnMoKQogeworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IFByb2Nl
c3NQb29sQ29uZmlndXJhdGlvbjo6Y3JlYXRlKCk7CisKKyAgICBjb25maWd1cmF0aW9uLT5tX3By
b2Nlc3NNb2RlbCA9IFdlYktpdDo6UHJvY2Vzc01vZGVsU2hhcmVkU2Vjb25kYXJ5UHJvY2VzczsK
KyAgICBjb25maWd1cmF0aW9uLT5tX3VzZU5ldHdvcmtQcm9jZXNzID0gZmFsc2U7CisgICAgY29u
ZmlndXJhdGlvbi0+bV9jYWNoZU1vZGVsID0gV2ViS2l0OjpDYWNoZU1vZGVsRG9jdW1lbnRWaWV3
ZXI7CisgICAgY29uZmlndXJhdGlvbi0+bV9sb2NhbFN0b3JhZ2VEaXJlY3RvcnkgPSBXZWJLaXQ6
OldlYlByb2Nlc3NQb29sOjpsZWdhY3lQbGF0Zm9ybURlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3Rv
cnkoKTsKKyAgICBjb25maWd1cmF0aW9uLT5tX3dlYlNRTERhdGFiYXNlRGlyZWN0b3J5ID0gV2Vi
S2l0OjpXZWJQcm9jZXNzUG9vbDo6bGVnYWN5UGxhdGZvcm1EZWZhdWx0V2ViU1FMRGF0YWJhc2VE
aXJlY3RvcnkoKTsKKyAgICBjb25maWd1cmF0aW9uLT5tX2luZGV4ZWREQkRhdGFiYXNlRGlyZWN0
b3J5ID0gV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6bGVnYWN5UGxhdGZvcm1EZWZhdWx0SW5kZXhl
ZERCRGF0YWJhc2VEaXJlY3RvcnkoKTsKKyAgICBjb25maWd1cmF0aW9uLT5tX21lZGlhS2V5c1N0
b3JhZ2VEaXJlY3RvcnkgPSBXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpsZWdhY3lQbGF0Zm9ybURl
ZmF1bHRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCk7CisKKyAgICByZXR1cm4gY29uZmlndXJh
dGlvbjsKIH0KIAotV2ViS2l0OjpXZWJQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gUHJvY2Vzc1Bv
b2xDb25maWd1cmF0aW9uOjp3ZWJQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24oKSBjb25zdAorUHJv
Y2Vzc1Bvb2xDb25maWd1cmF0aW9uOjpQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24oKQorICAgIDog
bV9pbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeShXZWJzaXRlRGF0YVN0b3JlOjp3ZWJzaXRlRGF0
YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbigiSW5kZXhlZERCIikpCisgICAgLCBt
X2xvY2FsU3RvcmFnZURpcmVjdG9yeShXZWJzaXRlRGF0YVN0b3JlOjp3ZWJzaXRlRGF0YURpcmVj
dG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbigiTG9jYWxTdG9yYWdlIikpCisgICAgLCBtX3dl
YlNRTERhdGFiYXNlRGlyZWN0b3J5KFdlYnNpdGVEYXRhU3RvcmU6OndlYnNpdGVEYXRhRGlyZWN0
b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKCJXZWJTUUwiKSkKKyAgICAsIG1fbWVkaWFLZXlz
U3RvcmFnZURpcmVjdG9yeShXZWJzaXRlRGF0YVN0b3JlOjp3ZWJzaXRlRGF0YURpcmVjdG9yeUZp
bGVTeXN0ZW1SZXByZXNlbnRhdGlvbigiTWVkaWFLZXlzIikpCiB7Ci0gICAgV2ViS2l0OjpXZWJQ
cm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbjsKK30KIAotICAgIGNvbmZpZ3Vy
YXRpb24uaW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkgPSBtX2luZGV4ZWREQkRhdGFiYXNlRGly
ZWN0b3J5OwotICAgIGNvbmZpZ3VyYXRpb24uaW5qZWN0ZWRCdW5kbGVQYXRoID0gbV9pbmplY3Rl
ZEJ1bmRsZVBhdGg7Ci0gICAgY29uZmlndXJhdGlvbi5sb2NhbFN0b3JhZ2VEaXJlY3RvcnkgPSBt
X2xvY2FsU3RvcmFnZURpcmVjdG9yeTsKLSAgICBjb25maWd1cmF0aW9uLndlYlNRTERhdGFiYXNl
RGlyZWN0b3J5ID0gbV93ZWJTUUxEYXRhYmFzZURpcmVjdG9yeTsKLSAgICBjb25maWd1cmF0aW9u
Lm1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkgPSBtX21lZGlhS2V5c1N0b3JhZ2VEaXJlY3Rvcnk7
CitQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb246On5Qcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24oKQor
eworfQogCi0gICAgV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6YXBwbHlQbGF0Zm9ybVNwZWNpZmlj
Q29uZmlndXJhdGlvbkRlZmF1bHRzKGNvbmZpZ3VyYXRpb24pOworUmVmPFByb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbj4gUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOjpjb3B5KCkKK3sKKyAgICBhdXRv
IGNvcHkgPSB0aGlzLT5jcmVhdGUoKTsKIAotICAgIHJldHVybiBjb25maWd1cmF0aW9uOworICAg
IGNvcHktPm1fcHJvY2Vzc01vZGVsID0gdGhpcy0+bV9wcm9jZXNzTW9kZWw7CisgICAgY29weS0+
bV91c2VOZXR3b3JrUHJvY2VzcyA9IHRoaXMtPm1fdXNlTmV0d29ya1Byb2Nlc3M7CisgICAgY29w
eS0+bV9tYXhpbXVtUHJvY2Vzc0NvdW50ID0gdGhpcy0+bV9tYXhpbXVtUHJvY2Vzc0NvdW50Owor
ICAgIGNvcHktPm1fY2FjaGVNb2RlbCA9IHRoaXMtPm1fY2FjaGVNb2RlbDsKKyAgICBjb3B5LT5t
X2luZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5ID0gdGhpcy0+bV9pbmRleGVkREJEYXRhYmFzZURp
cmVjdG9yeTsKKyAgICBjb3B5LT5tX2luamVjdGVkQnVuZGxlUGF0aCA9IHRoaXMtPm1faW5qZWN0
ZWRCdW5kbGVQYXRoOworICAgIGNvcHktPm1fbG9jYWxTdG9yYWdlRGlyZWN0b3J5ID0gdGhpcy0+
bV9sb2NhbFN0b3JhZ2VEaXJlY3Rvcnk7CisgICAgY29weS0+bV93ZWJTUUxEYXRhYmFzZURpcmVj
dG9yeSA9IHRoaXMtPm1fd2ViU1FMRGF0YWJhc2VEaXJlY3Rvcnk7CisgICAgY29weS0+bV9tZWRp
YUtleXNTdG9yYWdlRGlyZWN0b3J5ID0gdGhpcy0+bV9tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5
OworICAgIGNvcHktPm1fY2FjaGVQYXJ0aXRpb25lZFVSTFNjaGVtZXMgPSB0aGlzLT5tX2NhY2hl
UGFydGl0aW9uZWRVUkxTY2hlbWVzOworICAgIAorICAgIHJldHVybiBjb3B5OwogfQogCiB9IC8v
IG5hbWVzcGFjZSBBUEkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJUHJv
Y2Vzc1Bvb2xDb25maWd1cmF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaAkocmV2aXNpb24gMTc4NjMz
KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3Vy
YXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMjcsNDcgKzI3LDY1IEBACiAjZGVmaW5lIEFQSUNv
bnRleHRDb25maWd1cmF0aW9uX2gKIAogI2luY2x1ZGUgIkFQSU9iamVjdC5oIgorI2luY2x1ZGUg
IkNhY2hlTW9kZWwuaCIKKyNpbmNsdWRlICJQcm9jZXNzTW9kZWwuaCIKKyNpbmNsdWRlIDx3dGYv
UmVmLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgogCi1uYW1lc3BhY2UgV2ViS2l0IHsKLXN0cnVjdCBXZWJQcm9jZXNzUG9vbENvbmZp
Z3VyYXRpb247Ci19Ci0KIG5hbWVzcGFjZSBBUEkgewogCi1jbGFzcyBQcm9jZXNzUG9vbENvbmZp
Z3VyYXRpb24gOiBwdWJsaWMgT2JqZWN0SW1wbDxPYmplY3Q6OlR5cGU6OlByb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbj4geworY2xhc3MgUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIGZpbmFsIDogcHVi
bGljIE9iamVjdEltcGw8T2JqZWN0OjpUeXBlOjpQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24+IHsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24+
IGNyZWF0ZSgpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFByb2Nlc3NQb29s
Q29uZmlndXJhdGlvbik7Ci0gICAgfQorICAgIHN0YXRpYyBSZWY8UHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uPiBjcmVhdGUoKTsKKyAgICBzdGF0aWMgUmVmPFByb2Nlc3NQb29sQ29uZmlndXJhdGlv
bj4gY3JlYXRlV2l0aExlZ2FjeU9wdGlvbnMoKTsKKyAgICAKKyAgICBleHBsaWNpdCBQcm9jZXNz
UG9vbENvbmZpZ3VyYXRpb24oKTsKICAgICB2aXJ0dWFsIH5Qcm9jZXNzUG9vbENvbmZpZ3VyYXRp
b24oKTsKKyAgICAKKyAgICBSZWY8UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uPiBjb3B5KCk7CiAK
LSAgICBTdHJpbmcgaW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBt
X2luZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5OyB9Ci0gICAgdm9pZCBzZXRJbmRleGVkREJEYXRh
YmFzZURpcmVjdG9yeShjb25zdCBTdHJpbmcmIGluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KSB7
IG1faW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkgPSBpbmRleGVkREJEYXRhYmFzZURpcmVjdG9y
eTsgfQorICAgIFdlYktpdDo6UHJvY2Vzc01vZGVsIHByb2Nlc3NNb2RlbCgpIGNvbnN0IHsgcmV0
dXJuIG1fcHJvY2Vzc01vZGVsOyB9CisgICAgdm9pZCBzZXRQcm9jZXNzTW9kZWwoV2ViS2l0OjpQ
cm9jZXNzTW9kZWwgcHJvY2Vzc01vZGVsKSB7IG1fcHJvY2Vzc01vZGVsID0gcHJvY2Vzc01vZGVs
OyB9IAogCi0gICAgU3RyaW5nIGluamVjdGVkQnVuZGxlUGF0aCgpIGNvbnN0IHsgcmV0dXJuIG1f
aW5qZWN0ZWRCdW5kbGVQYXRoOyB9Ci0gICAgdm9pZCBzZXRJbmplY3RlZEJ1bmRsZVBhdGgoY29u
c3QgU3RyaW5nJiBpbmplY3RlZEJ1bmRsZVBhdGgpIHsgbV9pbmplY3RlZEJ1bmRsZVBhdGggPSBp
bmplY3RlZEJ1bmRsZVBhdGg7IH0KKyAgICBib29sIHVzZU5ldHdvcmtQcm9jZXNzKCkgY29uc3Qg
eyByZXR1cm4gbV91c2VOZXR3b3JrUHJvY2VzczsgfQorICAgIHZvaWQgc2V0VXNlTmV0d29ya1By
b2Nlc3MoYm9vbCB1c2VOZXR3b3JrUHJvY2VzcykgeyBtX3VzZU5ldHdvcmtQcm9jZXNzID0gdXNl
TmV0d29ya1Byb2Nlc3M7IH0gCiAKLSAgICBTdHJpbmcgbG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkg
Y29uc3QgeyByZXR1cm4gbV9sb2NhbFN0b3JhZ2VEaXJlY3Rvcnk7IH0KLSAgICB2b2lkIHNldExv
Y2FsU3RvcmFnZURpcmVjdG9yeShjb25zdCBTdHJpbmcmIGxvY2FsU3RvcmFnZURpcmVjdG9yeSkg
eyBtX2xvY2FsU3RvcmFnZURpcmVjdG9yeSA9IGxvY2FsU3RvcmFnZURpcmVjdG9yeTsgfQorICAg
IHVuc2lnbmVkIG1heGltdW1Qcm9jZXNzQ291bnQoKSBjb25zdCB7IHJldHVybiBtX21heGltdW1Q
cm9jZXNzQ291bnQ7IH0KKyAgICB2b2lkIHNldE1heGltdW1Qcm9jZXNzQ291bnQodW5zaWduZWQg
bWF4aW11bVByb2Nlc3NDb3VudCkgeyBtX21heGltdW1Qcm9jZXNzQ291bnQgPSBtYXhpbXVtUHJv
Y2Vzc0NvdW50OyB9IAogCi0gICAgU3RyaW5nIHdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KCkgY29u
c3QgeyByZXR1cm4gbV93ZWJTUUxEYXRhYmFzZURpcmVjdG9yeTsgfQotICAgIHZvaWQgc2V0V2Vi
U1FMRGF0YWJhc2VEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiB3ZWJTUUxEYXRhYmFzZURpcmVjdG9y
eSkgeyBtX3dlYlNRTERhdGFiYXNlRGlyZWN0b3J5ID0gd2ViU1FMRGF0YWJhc2VEaXJlY3Rvcnk7
IH0KKyAgICBXZWJLaXQ6OkNhY2hlTW9kZWwgY2FjaGVNb2RlbCgpIGNvbnN0IHsgcmV0dXJuIG1f
Y2FjaGVNb2RlbDsgfQorICAgIHZvaWQgc2V0Q2FjaGVNb2RlbChXZWJLaXQ6OkNhY2hlTW9kZWwg
Y2FjaGVNb2RlbCkgeyBtX2NhY2hlTW9kZWwgPSBjYWNoZU1vZGVsOyB9IAogCi0gICAgU3RyaW5n
IG1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX21lZGlhS2V5c1N0
b3JhZ2VEaXJlY3Rvcnk7IH0KLSAgICB2b2lkIHNldE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3Rvcnko
Y29uc3QgU3RyaW5nJiBtZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KSB7IG1fbWVkaWFLZXlzU3Rv
cmFnZURpcmVjdG9yeSA9IG1lZGlhS2V5c1N0b3JhZ2VEaXJlY3Rvcnk7IH0KKyAgICBXVEY6OlN0
cmluZyBpbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1faW5kZXhl
ZERCRGF0YWJhc2VEaXJlY3Rvcnk7IH0KKyAgICB2b2lkIHNldEluZGV4ZWREQkRhdGFiYXNlRGly
ZWN0b3J5KGNvbnN0IFdURjo6U3RyaW5nJiBpbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSkgeyBt
X2luZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5ID0gaW5kZXhlZERCRGF0YWJhc2VEaXJlY3Rvcnk7
IH0KIAotICAgIFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIHdlYlByb2Nlc3NQ
b29sQ29uZmlndXJhdGlvbigpIGNvbnN0OworICAgIFdURjo6U3RyaW5nIGluamVjdGVkQnVuZGxl
UGF0aCgpIGNvbnN0IHsgcmV0dXJuIG1faW5qZWN0ZWRCdW5kbGVQYXRoOyB9CisgICAgdm9pZCBz
ZXRJbmplY3RlZEJ1bmRsZVBhdGgoY29uc3QgV1RGOjpTdHJpbmcmIGluamVjdGVkQnVuZGxlUGF0
aCkgeyBtX2luamVjdGVkQnVuZGxlUGF0aCA9IGluamVjdGVkQnVuZGxlUGF0aDsgfQogCi1wcml2
YXRlOgotICAgIFByb2Nlc3NQb29sQ29uZmlndXJhdGlvbigpOworICAgIFdURjo6U3RyaW5nIGxv
Y2FsU3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fbG9jYWxTdG9yYWdlRGlyZWN0
b3J5OyB9CisgICAgdm9pZCBzZXRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoY29uc3QgV1RGOjpTdHJp
bmcmIGxvY2FsU3RvcmFnZURpcmVjdG9yeSkgeyBtX2xvY2FsU3RvcmFnZURpcmVjdG9yeSA9IGxv
Y2FsU3RvcmFnZURpcmVjdG9yeTsgfQorCisgICAgV1RGOjpTdHJpbmcgd2ViU1FMRGF0YWJhc2VE
aXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX3dlYlNRTERhdGFiYXNlRGlyZWN0b3J5OyB9Cisg
ICAgdm9pZCBzZXRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeShjb25zdCBXVEY6OlN0cmluZyYgd2Vi
U1FMRGF0YWJhc2VEaXJlY3RvcnkpIHsgbV93ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSA9IHdlYlNR
TERhdGFiYXNlRGlyZWN0b3J5OyB9CiAKLSAgICBTdHJpbmcgbV9pbmRleGVkREJEYXRhYmFzZURp
cmVjdG9yeTsKLSAgICBTdHJpbmcgbV9pbmplY3RlZEJ1bmRsZVBhdGg7Ci0gICAgU3RyaW5nIG1f
bG9jYWxTdG9yYWdlRGlyZWN0b3J5OwotICAgIFN0cmluZyBtX3dlYlNRTERhdGFiYXNlRGlyZWN0
b3J5OwotICAgIFN0cmluZyBtX21lZGlhS2V5c1N0b3JhZ2VEaXJlY3Rvcnk7CisgICAgV1RGOjpT
dHJpbmcgbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fbWVkaWFL
ZXlzU3RvcmFnZURpcmVjdG9yeTsgfQorICAgIHZvaWQgc2V0TWVkaWFLZXlzU3RvcmFnZURpcmVj
dG9yeShjb25zdCBXVEY6OlN0cmluZyYgbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSkgeyBtX21l
ZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkgPSBtZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5OyB9CisK
KyAgICBjb25zdCBWZWN0b3I8V1RGOjpTdHJpbmc+JiBjYWNoZVBhcnRpdGlvbmVkVVJMU2NoZW1l
cygpIHsgcmV0dXJuIG1fY2FjaGVQYXJ0aXRpb25lZFVSTFNjaGVtZXM7IH0KKyAgICB2b2lkIHNl
dENhY2hlUGFydGl0aW9uZWRVUkxTY2hlbWVzKFZlY3RvcjxXVEY6OlN0cmluZz4mJiBjYWNoZVBh
cnRpdGlvbmVkVVJMU2NoZW1lcykgeyBtX2NhY2hlUGFydGl0aW9uZWRVUkxTY2hlbWVzID0gV1RG
Ojptb3ZlKGNhY2hlUGFydGl0aW9uZWRVUkxTY2hlbWVzKTsgfQorCitwcml2YXRlOgorICAgIFdl
YktpdDo6UHJvY2Vzc01vZGVsIG1fcHJvY2Vzc01vZGVsIHsgV2ViS2l0OjpQcm9jZXNzTW9kZWxN
dWx0aXBsZVNlY29uZGFyeVByb2Nlc3NlcyB9OworICAgIGJvb2wgbV91c2VOZXR3b3JrUHJvY2Vz
cyB7IHRydWUgfTsKKyAgICB1bnNpZ25lZCBtX21heGltdW1Qcm9jZXNzQ291bnQgeyAwIH07Cisg
ICAgV2ViS2l0OjpDYWNoZU1vZGVsIG1fY2FjaGVNb2RlbCB7IFdlYktpdDo6Q2FjaGVNb2RlbFBy
aW1hcnlXZWJCcm93c2VyIH07CisgICAgV1RGOjpTdHJpbmcgbV9pbmplY3RlZEJ1bmRsZVBhdGg7
CisgICAgV1RGOjpTdHJpbmcgbV9pbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeTsKKyAgICBXVEY6
OlN0cmluZyBtX2xvY2FsU3RvcmFnZURpcmVjdG9yeTsKKyAgICBXVEY6OlN0cmluZyBtX3dlYlNR
TERhdGFiYXNlRGlyZWN0b3J5OworICAgIFdURjo6U3RyaW5nIG1fbWVkaWFLZXlzU3RvcmFnZURp
cmVjdG9yeTsKKyAgICBWZWN0b3I8V1RGOjpTdHJpbmc+IG1fY2FjaGVQYXJ0aXRpb25lZFVSTFNj
aGVtZXM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBBUEkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZURhdGFTdG9yZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlRGF0YVN0b3JlLmNwcAkocmV2aXNpb24g
MTc4NjMzKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlRGF0YVN0
b3JlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjksNiArNjksMTIgQEAgV2ViS2l0OjpXZWJzaXRl
RGF0YVN0b3JlOjpDb25maWd1cmF0aW9uIAogCiAgICAgcmV0dXJuIGNvbmZpZ3VyYXRpb247CiB9
CisKK1N0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjp3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0
ZW1SZXByZXNlbnRhdGlvbihjb25zdCBTdHJpbmcmIGRpcmVjdG9yeU5hbWUpCit7CisgICAgLy8g
RklYTUU6IEltcGxlbWVudC4KKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CiAjZW5kaWYKIAogfQpJ
bmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlRGF0YVN0b3JlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlRGF0
YVN0b3JlLmgJKHJldmlzaW9uIDE3ODYzMykKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQVBJV2Vic2l0ZURhdGFTdG9yZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00Myw2ICs0Myw4IEBA
IHB1YmxpYzoKIAogICAgIFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZSYgd2Vic2l0ZURhdGFTdG9y
ZSgpIHsgcmV0dXJuICptX3dlYnNpdGVEYXRhU3RvcmU7IH0KIAorICAgIHN0YXRpYyBTdHJpbmcg
d2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgU3RyaW5n
JiBkaXJlY3RvcnlOYW1lKTsKKwogcHJpdmF0ZToKICAgICBXZWJzaXRlRGF0YVN0b3JlKFdlYktp
dDo6V2Vic2l0ZURhdGFTdG9yZTo6Q29uZmlndXJhdGlvbik7CiAgICAgV2Vic2l0ZURhdGFTdG9y
ZSgpOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5j
cHAJKHJldmlzaW9uIDE3ODYzMykKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9X
S0NvbnRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OCwyMCArNzgsMjEgQEAgV0tUeXBlSUQg
V0tDb250ZXh0R2V0VHlwZUlEKCkKIAogV0tDb250ZXh0UmVmIFdLQ29udGV4dENyZWF0ZSgpCiB7
Ci0gICAgcmV0dXJuIFdLQ29udGV4dENyZWF0ZVdpdGhDb25maWd1cmF0aW9uKGFkb3B0V0soV0tD
b250ZXh0Q29uZmlndXJhdGlvbkNyZWF0ZSgpKS5nZXQoKSk7CisgICAgYXV0byBjb25maWd1cmF0
aW9uID0gQVBJOjpQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb246OmNyZWF0ZVdpdGhMZWdhY3lPcHRp
b25zKCk7CisgICAgcmV0dXJuIHRvQVBJKCZXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlKGNvbmZpZ3Vy
YXRpb24pLmxlYWtSZWYoKSk7CiB9CiAKIFdLQ29udGV4dFJlZiBXS0NvbnRleHRDcmVhdGVXaXRo
SW5qZWN0ZWRCdW5kbGVQYXRoKFdLU3RyaW5nUmVmIHBhdGhSZWYpCiB7Ci0gICAgYXV0byBjb25m
aWd1cmF0aW9uID0gYWRvcHRXSyhXS0NvbnRleHRDb25maWd1cmF0aW9uQ3JlYXRlKCkpOwotICAg
IFdLQ29udGV4dENvbmZpZ3VyYXRpb25TZXRJbmplY3RlZEJ1bmRsZVBhdGgoY29uZmlndXJhdGlv
bi5nZXQoKSwgcGF0aFJlZik7CisgICAgYXV0byBjb25maWd1cmF0aW9uID0gQVBJOjpQcm9jZXNz
UG9vbENvbmZpZ3VyYXRpb246OmNyZWF0ZVdpdGhMZWdhY3lPcHRpb25zKCk7CisgICAgY29uZmln
dXJhdGlvbi0+c2V0SW5qZWN0ZWRCdW5kbGVQYXRoKHRvV1RGU3RyaW5nKHBhdGhSZWYpKTsKIAot
ICAgIHJldHVybiBXS0NvbnRleHRDcmVhdGVXaXRoQ29uZmlndXJhdGlvbihjb25maWd1cmF0aW9u
LmdldCgpKTsKKyAgICByZXR1cm4gdG9BUEkoJldlYlByb2Nlc3NQb29sOjpjcmVhdGUoY29uZmln
dXJhdGlvbikubGVha1JlZigpKTsKIH0KIAogV0tDb250ZXh0UmVmIFdLQ29udGV4dENyZWF0ZVdp
dGhDb25maWd1cmF0aW9uKFdLQ29udGV4dENvbmZpZ3VyYXRpb25SZWYgY29uZmlndXJhdGlvbikK
IHsKLSAgICByZXR1cm4gdG9BUEkoV2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZSh0b0ltcGwoY29uZmln
dXJhdGlvbiktPndlYlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbigpKS5sZWFrUmVmKCkpOworICAg
IHJldHVybiB0b0FQSSgmV2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZSgqdG9JbXBsKGNvbmZpZ3VyYXRp
b24pKS5sZWFrUmVmKCkpOwogfQogCiB2b2lkIFdLQ29udGV4dFNldENsaWVudChXS0NvbnRleHRS
ZWYgY29udGV4dFJlZiwgY29uc3QgV0tDb250ZXh0Q2xpZW50QmFzZSogd2tDbGllbnQpCkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0Q29uZmlndXJhdGlvblJl
Zi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQ29u
dGV4dENvbmZpZ3VyYXRpb25SZWYuY3BwCShyZXZpc2lvbiAxNzg2MzMpCisrKyBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0Q29uZmlndXJhdGlvblJlZi5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTMzLDcgKzMzLDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIAogV0tD
b250ZXh0Q29uZmlndXJhdGlvblJlZiBXS0NvbnRleHRDb25maWd1cmF0aW9uQ3JlYXRlKCkKIHsK
LSAgICByZXR1cm4gdG9BUEkoQVBJOjpQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb246OmNyZWF0ZSgp
LmxlYWtSZWYoKSk7CisgICAgcmV0dXJuIHRvQVBJKCZBUEk6OlByb2Nlc3NQb29sQ29uZmlndXJh
dGlvbjo6Y3JlYXRlKCkubGVha1JlZigpKTsKIH0KIAogV0tTdHJpbmdSZWYgV0tDb250ZXh0Q29u
ZmlndXJhdGlvbkNvcHlJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeShXS0NvbnRleHRDb25maWd1
cmF0aW9uUmVmIGNvbmZpZ3VyYXRpb24pCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0NvY29hL0FQSVdlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSVdlYnNpdGVEYXRhU3RvcmVDb2NvYS5t
bQkocmV2aXNpb24gMTc4NjMzKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9BUElXZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2LDE3ICsy
Niw0NSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkFQSVdlYnNpdGVEYXRhU3Rv
cmUuaCIKIAotLy8gRklYTUU6IFRoaXMgZnVuY3Rpb24gaXMgY3VycmVudGx5IGluIFdLUHJvY2Vz
c1Bvb2wuIEl0IHNob3VsZCBiZSBtb3ZlZCB0byB0aGlzIGZpbGUgaW5zdGVhZC4KLU5TVVJMICp3
ZWJzaXRlRGF0YURpcmVjdG9yeVVSTChOU1N0cmluZyAqZGlyZWN0b3J5TmFtZSk7CisjaW5jbHVk
ZSAiU2FuZGJveFV0aWxpdGllcy5oIgogCiBuYW1lc3BhY2UgQVBJIHsKIAorU3RyaW5nIFdlYnNp
dGVEYXRhU3RvcmU6OndlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9u
KGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5TmFtZSkKK3sKKyAgICBzdGF0aWMgZGlzcGF0Y2hfb25j
ZV90IG9uY2VUb2tlbjsKKyAgICBzdGF0aWMgTlNVUkwgKndlYnNpdGVEYXRhVVJMOworCisgICAg
ZGlzcGF0Y2hfb25jZSgmb25jZVRva2VuLCBeeworICAgICAgICBOU1VSTCAqdXJsID0gW1tOU0Zp
bGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBVUkxGb3JEaXJlY3Rvcnk6TlNMaWJyYXJ5RGlyZWN0
b3J5IGluRG9tYWluOk5TVXNlckRvbWFpbk1hc2sgYXBwcm9wcmlhdGVGb3JVUkw6bnVsbHB0ciBj
cmVhdGU6Tk8gZXJyb3I6bnVsbHB0cl07CisgICAgICAgIGlmICghdXJsKQorICAgICAgICAgICAg
UkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKworICAgICAgICB1cmwgPSBbdXJsIFVSTEJ5
QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIldlYktpdCIgaXNEaXJlY3Rvcnk6WUVTXTsKKworICAg
ICAgICBpZiAoIVdlYktpdDo6cHJvY2Vzc0hhc0NvbnRhaW5lcigpKSB7CisgICAgICAgICAgICBO
U1N0cmluZyAqYnVuZGxlSWRlbnRpZmllciA9IFtOU0J1bmRsZSBtYWluQnVuZGxlXS5idW5kbGVJ
ZGVudGlmaWVyOworICAgICAgICAgICAgaWYgKCFidW5kbGVJZGVudGlmaWVyKQorICAgICAgICAg
ICAgICAgIGJ1bmRsZUlkZW50aWZpZXIgPSBbTlNQcm9jZXNzSW5mbyBwcm9jZXNzSW5mb10ucHJv
Y2Vzc05hbWU7CisgICAgICAgICAgICB1cmwgPSBbdXJsIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBv
bmVudDpidW5kbGVJZGVudGlmaWVyIGlzRGlyZWN0b3J5OllFU107CisgICAgICAgIH0KKworICAg
ICAgICB3ZWJzaXRlRGF0YVVSTCA9IFtbdXJsIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpA
IldlYnNpdGVEYXRhIiBpc0RpcmVjdG9yeTpZRVNdIHJldGFpbl07CisgICAgfSk7CisKKyAgICBO
U1VSTCAqdXJsID0gW3dlYnNpdGVEYXRhVVJMIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpk
aXJlY3RvcnlOYW1lIGlzRGlyZWN0b3J5OllFU107CisgICAgaWYgKCFbW05TRmlsZU1hbmFnZXIg
ZGVmYXVsdE1hbmFnZXJdIGNyZWF0ZURpcmVjdG9yeUF0VVJMOnVybCB3aXRoSW50ZXJtZWRpYXRl
RGlyZWN0b3JpZXM6WUVTIGF0dHJpYnV0ZXM6bmlsIGVycm9yOm51bGxwdHJdKQorICAgICAgICBM
T0dfRVJST1IoIkZhaWxlZCB0byBjcmVhdGUgZGlyZWN0b3J5ICVAIiwgdXJsKTsKKworICAgIHJl
dHVybiB1cmwuYWJzb2x1dGVVUkwucGF0aC5maWxlU3lzdGVtUmVwcmVzZW50YXRpb247Cit9CisK
IFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6Q29uZmlndXJhdGlvbiBXZWJzaXRlRGF0YVN0b3Jl
OjpkZWZhdWx0RGF0YVN0b3JlQ29uZmlndXJhdGlvbigpCiB7CiAgICAgLy8gRklYTUU6IEZpbGwg
ZXZlcnl0aGluZyBpbi4KICAgICBXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OkNvbmZpZ3VyYXRp
b24gY29uZmlndXJhdGlvbjsKIAotICAgIGNvbmZpZ3VyYXRpb24ubG9jYWxTdG9yYWdlRGlyZWN0
b3J5ID0gd2Vic2l0ZURhdGFEaXJlY3RvcnlVUkwoQCJMb2NhbFN0b3JhZ2UiKS5hYnNvbHV0ZVVS
TC5wYXRoLmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbjsKKyAgICBjb25maWd1cmF0aW9uLmxvY2Fs
U3RvcmFnZURpcmVjdG9yeSA9IHdlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2Vu
dGF0aW9uKCJMb2NhbFN0b3JhZ2UiKTsKIAogICAgIHJldHVybiBjb25maWd1cmF0aW9uOwogfQpJ
bmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NHcm91cC5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJv
Y2Vzc0dyb3VwLm1tCShyZXZpc2lvbiAxNzg2MzMpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLUHJvY2Vzc0dyb3VwLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsy
OSw3IEBACiAjaWYgV0tfQVBJX0VOQUJMRUQKIAogI2ltcG9ydCAiQVBJTmF2aWdhdGlvbkRhdGEu
aCIKKyNpbXBvcnQgIkFQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oIgogI2ltcG9ydCAiT2Jq
Q09iamVjdEdyYXBoLmgiCiAjaW1wb3J0ICJXS0FQSUNhc3QuaCIKICNpbXBvcnQgIldLQnJvd3Np
bmdDb250ZXh0Q29udHJvbGxlckludGVybmFsLmgiCkBAIC0xODksMjAgKzE5MCwxOCBAQCAtIChp
ZClpbml0V2l0aEluamVjdGVkQnVuZGxlVVJMOihOU1VSTCAqCiAgICAgSW5pdFdlYkNvcmVUaHJl
YWRTeXN0ZW1JbnRlcmZhY2UoKTsKICNlbmRpZgogCi0gICAgV2ViUHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uIGNvbmZpZ3VyYXRpb247Ci0gICAgY29uZmlndXJhdGlvbi5pbmplY3RlZEJ1bmRsZVBh
dGggPSBidW5kbGVVUkwgPyBTdHJpbmcoYnVuZGxlVVJMLnBhdGgpIDogU3RyaW5nKCk7Ci0KLSAg
ICBXZWJQcm9jZXNzUG9vbDo6YXBwbHlQbGF0Zm9ybVNwZWNpZmljQ29uZmlndXJhdGlvbkRlZmF1
bHRzKGNvbmZpZ3VyYXRpb24pOworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IEFQSTo6UHJvY2Vz
c1Bvb2xDb25maWd1cmF0aW9uOjpjcmVhdGVXaXRoTGVnYWN5T3B0aW9ucygpOworICAgIGNvbmZp
Z3VyYXRpb24tPnNldEluamVjdGVkQnVuZGxlUGF0aChidW5kbGVVUkwgPyBTdHJpbmcoYnVuZGxl
VVJMLnBhdGgpIDogU3RyaW5nKCkpOworI2lmIFBMQVRGT1JNKElPUykKKyAgICBjb25maWd1cmF0
aW9uLT5zZXRVc2VOZXR3b3JrUHJvY2Vzcyh0cnVlKTsKKyAgICBjb25maWd1cmF0aW9uLT5zZXRQ
cm9jZXNzTW9kZWwoUHJvY2Vzc01vZGVsTXVsdGlwbGVTZWNvbmRhcnlQcm9jZXNzZXMpOworI2Vu
ZGlmCiAKLSAgICBfcHJvY2Vzc1Bvb2wgPSBXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlKFdURjo6bW92
ZShjb25maWd1cmF0aW9uKSk7CisgICAgX3Byb2Nlc3NQb29sID0gV2ViUHJvY2Vzc1Bvb2w6OmNy
ZWF0ZShjb25maWd1cmF0aW9uKTsKIAogICAgIHNldFVwQ29ubmVjdGlvbkNsaWVudChzZWxmLCB0
b0FQSShfcHJvY2Vzc1Bvb2wuZ2V0KCkpKTsKICAgICBzZXRVcEluZWN0ZWRCdW5kbGVDbGllbnQo
c2VsZiwgdG9BUEkoX3Byb2Nlc3NQb29sLmdldCgpKSk7CiAgICAgc2V0VXBIaXN0b3J5Q2xpZW50
KHNlbGYsIHRvQVBJKF9wcm9jZXNzUG9vbC5nZXQoKSkpOwotI2lmIFBMQVRGT1JNKElPUykKLSAg
ICBfcHJvY2Vzc1Bvb2wtPnNldFVzZXNOZXR3b3JrUHJvY2Vzcyh0cnVlKTsKLSAgICBfcHJvY2Vz
c1Bvb2wtPnNldFByb2Nlc3NNb2RlbChQcm9jZXNzTW9kZWxNdWx0aXBsZVNlY29uZGFyeVByb2Nl
c3Nlcyk7Ci0jZW5kaWYKIAogICAgIHJldHVybiBzZWxmOwogfQpJbmRleDogU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbQkocmV2aXNp
b24gMTc4NjM0KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nl
c3NQb29sLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw3ICszOSw3IEBACiAjaW1wb3J0ICJXZWJQ
cm9jZXNzTWVzc2FnZXMuaCIKICNpbXBvcnQgIldlYlByb2Nlc3NQb29sLmgiCiAjaW1wb3J0ICJf
V0tEb3dubG9hZERlbGVnYXRlLmgiCi0jaW1wb3J0ICJfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRp
b24uaCIKKyNpbXBvcnQgIl9XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbkludGVybmFsLmgiCiAj
aW1wb3J0IDxXZWJDb3JlL0NGTmV0d29ya1NQSS5oPgogI2ltcG9ydCA8V2ViQ29yZS9DZXJ0aWZp
Y2F0ZUluZm8uaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KQEAgLTQ5LDkgKzQ5LDYgQEAK
ICNpbXBvcnQgIldLR2VvbG9jYXRpb25Qcm92aWRlcklPUy5oIgogI2VuZGlmCiAKLS8vIEZJWE1F
OiBNb3ZlIHRoaXMgZnJvbSBXS1Byb2Nlc3NQb29sIHRvIEFQSVdlYnNpdGVEYXRhU3RvcmVDb2Nv
YS4KLU5TVVJMICp3ZWJzaXRlRGF0YURpcmVjdG9yeVVSTChOU1N0cmluZyAqZGlyZWN0b3J5TmFt
ZSk7Ci0KIEBpbXBsZW1lbnRhdGlvbiBXS1Byb2Nlc3NQb29sIHsKICAgICBXZWJLaXQ6OldlYWtP
YmpDUHRyPGlkIDxfV0tEb3dubG9hZERlbGVnYXRlPj4gX2Rvd25sb2FkRGVsZWdhdGU7CiAKQEAg
LTc0LDEyICs3MSwxMiBAQCAtICh2b2lkKWRlYWxsb2MKIAogLSAoTlNTdHJpbmcgKilkZXNjcmlw
dGlvbgogewotICAgIHJldHVybiBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIjwlQDogJXA7
IGNvbmZpZ3VyYXRpb24gPSAlQD4iLCBOU1N0cmluZ0Zyb21DbGFzcyhzZWxmLmNsYXNzKSwgc2Vs
ZiwgX2NvbmZpZ3VyYXRpb24uZ2V0KCldOworICAgIHJldHVybiBbTlNTdHJpbmcgc3RyaW5nV2l0
aEZvcm1hdDpAIjwlQDogJXA7IGNvbmZpZ3VyYXRpb24gPSAlQD4iLCBOU1N0cmluZ0Zyb21DbGFz
cyhzZWxmLmNsYXNzKSwgc2VsZiwgd3JhcHBlcihfcHJvY2Vzc1Bvb2wtPmNvbmZpZ3VyYXRpb24o
KSldOwogfQogCiAtIChfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gKilfY29uZmlndXJhdGlv
bgogewotICAgIHJldHVybiBbW19jb25maWd1cmF0aW9uIGNvcHldIGF1dG9yZWxlYXNlXTsKKyAg
ICByZXR1cm4gd3JhcHBlcihfcHJvY2Vzc1Bvb2wtPmNvbmZpZ3VyYXRpb24oKS5jb3B5KCkubGVh
a1JlZigpKTsKIH0KIAogLSAoQVBJOjpPYmplY3QmKV9hcGlPYmplY3QKQEAgLTExNiw3MyArMTEz
LDE3IEBAICsgKE5TVVJMICopX3dlYnNpdGVEYXRhVVJMRm9yQ29udGFpbmVyV2kKICAgICByZXR1
cm4gW3VybCBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJXZWJzaXRlRGF0YSIgaXNEaXJl
Y3Rvcnk6WUVTXTsKIH0KIAotTlNVUkwgKndlYnNpdGVEYXRhRGlyZWN0b3J5VVJMKE5TU3RyaW5n
ICpkaXJlY3RvcnlOYW1lKQotewotICAgIHN0YXRpYyBkaXNwYXRjaF9vbmNlX3Qgb25jZVRva2Vu
OwotICAgIHN0YXRpYyBOU1VSTCAqd2Vic2l0ZURhdGFVUkw7Ci0KLSAgICBkaXNwYXRjaF9vbmNl
KCZvbmNlVG9rZW4sIF57Ci0gICAgICAgIE5TVVJMICp1cmwgPSBbW05TRmlsZU1hbmFnZXIgZGVm
YXVsdE1hbmFnZXJdIFVSTEZvckRpcmVjdG9yeTpOU0xpYnJhcnlEaXJlY3RvcnkgaW5Eb21haW46
TlNVc2VyRG9tYWluTWFzayBhcHByb3ByaWF0ZUZvclVSTDpudWxscHRyIGNyZWF0ZTpOTyBlcnJv
cjpudWxscHRyXTsKLSAgICAgICAgaWYgKCF1cmwpCi0gICAgICAgICAgICBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOwotCi0gICAgICAgIHVybCA9IFt1cmwgVVJMQnlBcHBlbmRpbmdQYXRo
Q29tcG9uZW50OkAiV2ViS2l0IiBpc0RpcmVjdG9yeTpZRVNdOwotCi0gICAgICAgIGlmICghV2Vi
S2l0Ojpwcm9jZXNzSGFzQ29udGFpbmVyKCkpIHsKLSAgICAgICAgICAgIE5TU3RyaW5nICpidW5k
bGVJZGVudGlmaWVyID0gW05TQnVuZGxlIG1haW5CdW5kbGVdLmJ1bmRsZUlkZW50aWZpZXI7Ci0g
ICAgICAgICAgICBpZiAoIWJ1bmRsZUlkZW50aWZpZXIpCi0gICAgICAgICAgICAgICAgYnVuZGxl
SWRlbnRpZmllciA9IFtOU1Byb2Nlc3NJbmZvIHByb2Nlc3NJbmZvXS5wcm9jZXNzTmFtZTsKLSAg
ICAgICAgICAgIHVybCA9IFt1cmwgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OmJ1bmRsZUlk
ZW50aWZpZXIgaXNEaXJlY3Rvcnk6WUVTXTsKLSAgICAgICAgfQotCi0gICAgICAgIHdlYnNpdGVE
YXRhVVJMID0gW1t1cmwgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiV2Vic2l0ZURhdGEi
IGlzRGlyZWN0b3J5OllFU10gcmV0YWluXTsKLSAgICB9KTsKLQotICAgIE5TVVJMICp1cmwgPSBb
d2Vic2l0ZURhdGFVUkwgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OmRpcmVjdG9yeU5hbWUg
aXNEaXJlY3Rvcnk6WUVTXTsKLSAgICBpZiAoIVtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdl
cl0gY3JlYXRlRGlyZWN0b3J5QXRVUkw6dXJsIHdpdGhJbnRlcm1lZGlhdGVEaXJlY3RvcmllczpZ
RVMgYXR0cmlidXRlczpuaWwgZXJyb3I6bnVsbHB0cl0pCi0gICAgICAgIExPR19FUlJPUigiRmFp
bGVkIHRvIGNyZWF0ZSBkaXJlY3RvcnkgJUAiLCB1cmwpOwotCi0gICAgcmV0dXJuIHVybDsKLX0K
LQogLSAoaW5zdGFuY2V0eXBlKV9pbml0V2l0aENvbmZpZ3VyYXRpb246KF9XS1Byb2Nlc3NQb29s
Q29uZmlndXJhdGlvbiAqKWNvbmZpZ3VyYXRpb24KIHsKICAgICBpZiAoIShzZWxmID0gW3N1cGVy
IGluaXRdKSkKICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAgIF9jb25maWd1cmF0aW9uID0gYWRv
cHROUyhbY29uZmlndXJhdGlvbiBjb3B5XSk7Ci0KICNpZiBQTEFURk9STShJT1MpCiAgICAgLy8g
RklYTUU6IFJlbW92ZSBvbmNlIDxyZGFyOi8vcHJvYmxlbS8xNTI1NjU3Mj4gaXMgZml4ZWQuCiAg
ICAgSW5pdFdlYkNvcmVUaHJlYWRTeXN0ZW1JbnRlcmZhY2UoKTsKICNlbmRpZgogCi0gICAgV2Vi
S2l0OjpXZWJQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9u
OwotCi0gICAgaWYgKE5TVVJMICpidW5kbGVVUkwgPSBbX2NvbmZpZ3VyYXRpb24gaW5qZWN0ZWRC
dW5kbGVVUkxdKSB7Ci0gICAgICAgIGlmICghYnVuZGxlVVJMLmlzRmlsZVVSTCkKLSAgICAgICAg
ICAgIFtOU0V4Y2VwdGlvbiByYWlzZTpOU0ludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBmb3JtYXQ6
QCJJbmplY3RlZCBCdW5kbGUgVVJMIG11c3QgYmUgYSBmaWxlIFVSTCJdOwotCi0gICAgICAgIHBy
b2Nlc3NQb29sQ29uZmlndXJhdGlvbi5pbmplY3RlZEJ1bmRsZVBhdGggPSBidW5kbGVVUkwucGF0
aDsKLSAgICB9Ci0KLSAgICBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24ubG9jYWxTdG9yYWdlRGly
ZWN0b3J5ID0gd2Vic2l0ZURhdGFEaXJlY3RvcnlVUkwoQCJMb2NhbFN0b3JhZ2UiKS5hYnNvbHV0
ZVVSTC5wYXRoLmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbjsKLSAgICBwcm9jZXNzUG9vbENvbmZp
Z3VyYXRpb24ud2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkgPSB3ZWJzaXRlRGF0YURpcmVjdG9yeVVS
TChAIldlYlNRTCIpLmFic29sdXRlVVJMLnBhdGguZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uOwot
ICAgIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5pbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSA9
IHdlYnNpdGVEYXRhRGlyZWN0b3J5VVJMKEAiSW5kZXhlZERCIikuYWJzb2x1dGVVUkwucGF0aC5m
aWxlU3lzdGVtUmVwcmVzZW50YXRpb247Ci0gICAgcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLm1l
ZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkgPSB3ZWJzaXRlRGF0YURpcmVjdG9yeVVSTChAIk1lZGlh
S2V5cyIpLmFic29sdXRlVVJMLnBhdGguZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uOwotCi0gICAg
QVBJOjpPYmplY3Q6OmNvbnN0cnVjdEluV3JhcHBlcjxXZWJLaXQ6OldlYlByb2Nlc3NQb29sPihz
ZWxmLCBXVEY6Om1vdmUocHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uKSk7Ci0gICAgX3Byb2Nlc3NQ
b29sLT5zZXRVc2VzTmV0d29ya1Byb2Nlc3ModHJ1ZSk7Ci0gICAgX3Byb2Nlc3NQb29sLT5zZXRQ
cm9jZXNzTW9kZWwoV2ViS2l0OjpQcm9jZXNzTW9kZWxNdWx0aXBsZVNlY29uZGFyeVByb2Nlc3Nl
cyk7Ci0gICAgX3Byb2Nlc3NQb29sLT5zZXRNYXhpbXVtTnVtYmVyT2ZQcm9jZXNzZXMoW19jb25m
aWd1cmF0aW9uIG1heGltdW1Qcm9jZXNzQ291bnRdKTsKLQotI2lmIEVOQUJMRShDQUNIRV9QQVJU
SVRJT05JTkcpCi0gICAgZm9yIChOU1N0cmluZyAqdXJsU2NoZW1lIGluIFtfY29uZmlndXJhdGlv
biBjYWNoZVBhcnRpdGlvbmVkVVJMU2NoZW1lc10pCi0gICAgICAgIF9wcm9jZXNzUG9vbC0+cmVn
aXN0ZXJVUkxTY2hlbWVBc0NhY2hlUGFydGl0aW9uZWQodXJsU2NoZW1lKTsKLSNlbmRpZgotCi0g
ICAgLy8gRklYTUU6IEFkZCBhIHdheSB0byBjb25maWd1cmUgdGhlIGNhY2hlIG1vZGVsLCBzZWUg
PHJkYXI6Ly9wcm9ibGVtLzE2MjA2ODU3Pi4KLSAgICBfcHJvY2Vzc1Bvb2wtPnNldENhY2hlTW9k
ZWwoV2ViS2l0OjpDYWNoZU1vZGVsUHJpbWFyeVdlYkJyb3dzZXIpOworICAgIEFQSTo6T2JqZWN0
Ojpjb25zdHJ1Y3RJbldyYXBwZXI8V2ViS2l0OjpXZWJQcm9jZXNzUG9vbD4oc2VsZiwgKmNvbmZp
Z3VyYXRpb24tPl9wcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24pOwogCiAgICAgcmV0dXJuIHNlbGY7
CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bv
b2xJbnRlcm5hbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tQcm9jZXNzUG9vbEludGVybmFsLmgJKHJldmlzaW9uIDE3ODYzMykKKysrIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbEludGVybmFsLmgJKHdv
cmtpbmcgY29weSkKQEAgLTQ2LDggKzQ2LDYgQEAgaW5saW5lIFdLUHJvY2Vzc1Bvb2wgKndyYXBw
ZXIoV2ViUHJvY2VzcwogCiBAaW50ZXJmYWNlIFdLUHJvY2Vzc1Bvb2wgKCkgPFdLT2JqZWN0PiB7
CiBAcGFja2FnZQotICAgIFJldGFpblB0cjxfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24+IF9j
b25maWd1cmF0aW9uOwotCiAgICAgQVBJOjpPYmplY3RTdG9yYWdlPFdlYktpdDo6V2ViUHJvY2Vz
c1Bvb2w+IF9wcm9jZXNzUG9vbDsKIH0KIApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24ubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tQcm9jZXNzUG9vbENvbmZpZ3Vy
YXRpb24ubW0JKHJldmlzaW9uIDE3ODYzMykKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQ29jb2EvX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC0yNCw1NSArMjQsOTggQEAKICAqLwogCiAjaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIl9X
S1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oIgorI2ltcG9ydCAiX1dLUHJvY2Vzc1Bvb2xDb25m
aWd1cmF0aW9uSW50ZXJuYWwuaCIKIAogI2lmIFdLX0FQSV9FTkFCTEVECiAKICNpbXBvcnQgPHd0
Zi9SZXRhaW5QdHIuaD4KIAotQGltcGxlbWVudGF0aW9uIF9XS1Byb2Nlc3NQb29sQ29uZmlndXJh
dGlvbiB7Ci0gICAgUmV0YWluUHRyPE5TVVJMPiBfaW5qZWN0ZWRCdW5kbGVVUkw7Ci0gICAgUmV0
YWluUHRyPE5TQXJyYXk+IF9jYWNoZVBhcnRpdGlvbmVkVVJMU2NoZW1lczsKK0BpbXBsZW1lbnRh
dGlvbiBfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24KKworLSAoaW5zdGFuY2V0eXBlKWluaXQK
K3sKKyAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkKKyAgICAgICAgcmV0dXJuIG5pbDsK
KworICAgIEFQSTo6T2JqZWN0Ojpjb25zdHJ1Y3RJbldyYXBwZXI8QVBJOjpQcm9jZXNzUG9vbENv
bmZpZ3VyYXRpb24+KHNlbGYpOworCisgICAgcmV0dXJuIHNlbGY7Cit9CisKKy0gKHZvaWQpZGVh
bGxvYworeworICAgIF9wcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24tPn5Qcm9jZXNzUG9vbENvbmZp
Z3VyYXRpb24oKTsKKworICAgIFtzdXBlciBkZWFsbG9jXTsKIH0KIAogLSAoTlNVUkwgKilpbmpl
Y3RlZEJ1bmRsZVVSTAogewotICAgIHJldHVybiBfaW5qZWN0ZWRCdW5kbGVVUkwuZ2V0KCk7Cisg
ICAgcmV0dXJuIFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6X3Byb2Nlc3NQb29sQ29uZmlndXJhdGlv
bi0+aW5qZWN0ZWRCdW5kbGVQYXRoKCldOwogfQogCiAtICh2b2lkKXNldEluamVjdGVkQnVuZGxl
VVJMOihOU1VSTCAqKWluamVjdGVkQnVuZGxlVVJMCiB7Ci0gICAgX2luamVjdGVkQnVuZGxlVVJM
ID0gYWRvcHROUyhbaW5qZWN0ZWRCdW5kbGVVUkwgY29weV0pOworICAgIGlmIChpbmplY3RlZEJ1
bmRsZVVSTCAmJiAhaW5qZWN0ZWRCdW5kbGVVUkwuaXNGaWxlVVJMKQorICAgICAgICBbTlNFeGNl
cHRpb24gcmFpc2U6TlNJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gZm9ybWF0OkAiSW5qZWN0ZWQg
QnVuZGxlIFVSTCBtdXN0IGJlIGEgZmlsZSBVUkwiXTsKKworICAgIF9wcm9jZXNzUG9vbENvbmZp
Z3VyYXRpb24tPnNldEluamVjdGVkQnVuZGxlUGF0aChpbmplY3RlZEJ1bmRsZVVSTC5wYXRoKTsK
K30KKworLSAoTlNVSW50ZWdlciltYXhpbXVtUHJvY2Vzc0NvdW50Cit7CisgICAgcmV0dXJuIF9w
cm9jZXNzUG9vbENvbmZpZ3VyYXRpb24tPm1heGltdW1Qcm9jZXNzQ291bnQoKTsKK30KKworLSAo
dm9pZClzZXRNYXhpbXVtUHJvY2Vzc0NvdW50OihOU1VJbnRlZ2VyKW1heGltdW1Qcm9jZXNzQ291
bnQKK3sKKyAgICBfcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLT5zZXRNYXhpbXVtUHJvY2Vzc0Nv
dW50KG1heGltdW1Qcm9jZXNzQ291bnQpOwogfQogCiAtIChOU0FycmF5ICopY2FjaGVQYXJ0aXRp
b25lZFVSTFNjaGVtZXMKIHsKLSAgICByZXR1cm4gX2NhY2hlUGFydGl0aW9uZWRVUkxTY2hlbWVz
LmdldCgpOworICAgIGF1dG8gc2NoZW1lcyA9IF9wcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24tPmNh
Y2hlUGFydGl0aW9uZWRVUkxTY2hlbWVzKCk7CisgICAgaWYgKHNjaGVtZXMuaXNFbXB0eSgpKQor
ICAgICAgICByZXR1cm4gQFtdOworCisgICAgTlNNdXRhYmxlQXJyYXkgKmFycmF5ID0gW05TTXV0
YWJsZUFycmF5IGFycmF5V2l0aENhcGFjaXR5OnNjaGVtZXMuc2l6ZSgpXTsKKyAgICBmb3IgKGNv
bnN0IGF1dG8mIHNjaGVtZSA6IHNjaGVtZXMpCisgICAgICAgIFthcnJheSBhZGRPYmplY3Q6KE5T
U3RyaW5nICopc2NoZW1lXTsKKworICAgIHJldHVybiBhcnJheTsKIH0KIAogLSAodm9pZClzZXRD
YWNoZVBhcnRpdGlvbmVkVVJMU2NoZW1lczooTlNBcnJheSAqKWNhY2hlUGFydGl0aW9uZWRVUkxT
Y2hlbWVzCiB7Ci0gICAgX2NhY2hlUGFydGl0aW9uZWRVUkxTY2hlbWVzID0gYWRvcHROUyhbW05T
QXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6Y2FjaGVQYXJ0aXRpb25lZFVSTFNjaGVtZXMgY29w
eUl0ZW1zOllFU10pOworICAgIFZlY3RvcjxTdHJpbmc+IHNjaGVtZXM7CisgICAgZm9yIChpZCB1
cmxTY2hlbWUgaW4gY2FjaGVQYXJ0aXRpb25lZFVSTFNjaGVtZXMpIHsKKyAgICAgICAgaWYgKFt1
cmxTY2hlbWUgaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xhc3NdXSkKKyAgICAgICAgICAgIHNj
aGVtZXMuYXBwZW5kKFN0cmluZygoTlNTdHJpbmcgKil1cmxTY2hlbWUpKTsKKyAgICB9CisgICAg
CisgICAgX3Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi0+c2V0Q2FjaGVQYXJ0aXRpb25lZFVSTFNj
aGVtZXMoV1RGOjptb3ZlKHNjaGVtZXMpKTsKIH0KIAogLSAoTlNTdHJpbmcgKilkZXNjcmlwdGlv
bgogewotICAgIE5TU3RyaW5nICpkZXNjcmlwdGlvbiA9IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9y
bWF0OkAiPCVAOiAlcDsgbWF4aW11bVByb2Nlc3NDb3VudCA9ICVsdSIsIE5TU3RyaW5nRnJvbUNs
YXNzKHNlbGYuY2xhc3MpLCBzZWxmLCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nPihfbWF4aW11
bVByb2Nlc3NDb3VudCldOwotICAgIGlmIChfaW5qZWN0ZWRCdW5kbGVVUkwpCi0gICAgICAgIHJl
dHVybiBbZGVzY3JpcHRpb24gc3RyaW5nQnlBcHBlbmRpbmdGb3JtYXQ6QCI7IGluamVjdGVkQnVu
ZGxlVVJMOiBcIiVAXCI+IiwgX2luamVjdGVkQnVuZGxlVVJMLmdldCgpXTsKKyAgICBOU1N0cmlu
ZyAqZGVzY3JpcHRpb24gPSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIjwlQDogJXA7IG1h
eGltdW1Qcm9jZXNzQ291bnQgPSAlbHUiLCBOU1N0cmluZ0Zyb21DbGFzcyhzZWxmLmNsYXNzKSwg
c2VsZiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZz4oW3NlbGYgbWF4aW11bVByb2Nlc3NDb3Vu
dF0pXTsKKworICAgIGlmICghX3Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi0+aW5qZWN0ZWRCdW5k
bGVQYXRoKCkuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gW2Rlc2NyaXB0aW9uIHN0cmluZ0J5
QXBwZW5kaW5nRm9ybWF0OkAiOyBpbmplY3RlZEJ1bmRsZVVSTDogXCIlQFwiPiIsIFtzZWxmIGlu
amVjdGVkQnVuZGxlVVJMXV07CiAKICAgICByZXR1cm4gW2Rlc2NyaXB0aW9uIHN0cmluZ0J5QXBw
ZW5kaW5nU3RyaW5nOkAiPiJdOwogfQogCiAtIChpZCljb3B5V2l0aFpvbmU6KE5TWm9uZSAqKXpv
bmUKIHsKLSAgICBfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gKmNvbmZpZ3VyYXRpb24gPSBb
KF9XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiAqKVtbc2VsZiBjbGFzc10gYWxsb2NXaXRoWm9u
ZTp6b25lXSBpbml0XTsKKyAgICByZXR1cm4gd3JhcHBlcihfcHJvY2Vzc1Bvb2xDb25maWd1cmF0
aW9uLT5jb3B5KCkubGVha1JlZigpKTsKK30KIAotICAgIGNvbmZpZ3VyYXRpb24ubWF4aW11bVBy
b2Nlc3NDb3VudCA9IHNlbGYubWF4aW11bVByb2Nlc3NDb3VudDsKLSAgICBjb25maWd1cmF0aW9u
LmluamVjdGVkQnVuZGxlVVJMID0gc2VsZi5pbmplY3RlZEJ1bmRsZVVSTDsKLSAgICBjb25maWd1
cmF0aW9uLmNhY2hlUGFydGl0aW9uZWRVUkxTY2hlbWVzID0gc2VsZi5jYWNoZVBhcnRpdGlvbmVk
VVJMU2NoZW1lczsKKyNwcmFnbWEgbWFyayBXS09iamVjdCBwcm90b2NvbCBpbXBsZW1lbnRhdGlv
bgogCi0gICAgcmV0dXJuIGNvbmZpZ3VyYXRpb247CistIChBUEk6Ok9iamVjdCYpX2FwaU9iamVj
dAoreworICAgIHJldHVybiAqX3Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbjsKIH0KIAogQGVuZApJ
bmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tQcm9jZXNzUG9vbENv
bmZpZ3VyYXRpb25JbnRlcm5hbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uSW50ZXJuYWwuaAkocmV2
aXNpb24gMCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUHJvY2Vz
c1Bvb2xDb25maWd1cmF0aW9uSW50ZXJuYWwuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ5
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmgi
CisKKyNpZiBXS19BUElfRU5BQkxFRAorCisjaW1wb3J0ICJBUElQcm9jZXNzUG9vbENvbmZpZ3Vy
YXRpb24uaCIKKyNpbXBvcnQgIldLT2JqZWN0LmgiCisKK25hbWVzcGFjZSBBUEkgeworCitpbmxp
bmUgX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uICp3cmFwcGVyKEFQSTo6UHJvY2Vzc1Bvb2xD
b25maWd1cmF0aW9uJiBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24pCit7CisgICAgQVNTRVJUKFtw
cm9jZXNzUG9vbENvbmZpZ3VyYXRpb24ud3JhcHBlcigpIGlzS2luZE9mQ2xhc3M6W19XS1Byb2Nl
c3NQb29sQ29uZmlndXJhdGlvbiBjbGFzc11dKTsKKyAgICByZXR1cm4gKF9XS1Byb2Nlc3NQb29s
Q29uZmlndXJhdGlvbiAqKXByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi53cmFwcGVyKCk7Cit9CisK
K30KKworQGludGVyZmFjZSBfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gKCkgPFdLT2JqZWN0
PiB7CitAcGFja2FnZQorICAgIEFQSTo6T2JqZWN0U3RvcmFnZTxBUEk6OlByb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbj4gX3Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbjsKK30KK0BlbmQKKworI2VuZGlm
IC8vIFdLX0FQSV9FTkFCTEVECkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRXZWJDb250ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0LmNwcAkocmV2aXNpb24gMTc4NjMzKQorKysg
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTIxLDYgKzIxLDcgQEAKICNpbmNsdWRlICJXZWJLaXRXZWJDb250ZXh0
LmgiCiAKICNpbmNsdWRlICJBUElEb3dubG9hZENsaWVudC5oIgorI2luY2x1ZGUgIkFQSVByb2Nl
c3NQb29sQ29uZmlndXJhdGlvbi5oIgogI2luY2x1ZGUgIkFQSVN0cmluZy5oIgogI2luY2x1ZGUg
IldlYkJhdHRlcnlNYW5hZ2VyUHJveHkuaCIKICNpbmNsdWRlICJXZWJDZXJ0aWZpY2F0ZUluZm8u
aCIKQEAgLTI1NywxNSArMjU4LDE2IEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdlYkNvbnRleHRDb25z
dHJ1Y3RlZCgKICAgICBHX09CSkVDVF9DTEFTUyh3ZWJraXRfd2ViX2NvbnRleHRfcGFyZW50X2Ns
YXNzKS0+Y29uc3RydWN0ZWQob2JqZWN0KTsKIAogICAgIEdVbmlxdWVQdHI8Y2hhcj4gYnVuZGxl
RmlsZW5hbWUoZ19idWlsZF9maWxlbmFtZShpbmplY3RlZEJ1bmRsZURpcmVjdG9yeSgpLCAibGli
d2Via2l0Mmd0a2luamVjdGVkYnVuZGxlLnNvIiwgbnVsbHB0cikpOwotICAgIFdlYlByb2Nlc3NQ
b29sQ29uZmlndXJhdGlvbiB3ZWJDb250ZXh0Q29uZmlndXJhdGlvbjsKLSAgICB3ZWJDb250ZXh0
Q29uZmlndXJhdGlvbi5pbmplY3RlZEJ1bmRsZVBhdGggPSBXZWJDb3JlOjpmaWxlbmFtZVRvU3Ry
aW5nKGJ1bmRsZUZpbGVuYW1lLmdldCgpKTsKLSAgICBXZWJQcm9jZXNzUG9vbDo6YXBwbHlQbGF0
Zm9ybVNwZWNpZmljQ29uZmlndXJhdGlvbkRlZmF1bHRzKHdlYkNvbnRleHRDb25maWd1cmF0aW9u
KTsKKworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IEFQSTo6UHJvY2Vzc1Bvb2xDb25maWd1cmF0
aW9uOjpjcmVhdGVXaXRoTGVnYWN5T3B0aW9ucygpOworICAgIGNvbmZpZ3VyYXRpb24tPnNldElu
amVjdGVkQnVuZGxlUGF0aChXZWJDb3JlOjpmaWxlbmFtZVRvU3RyaW5nKGJ1bmRsZUZpbGVuYW1l
LmdldCgpKSk7CisKICAgICBXZWJLaXRXZWJDb250ZXh0KiB3ZWJDb250ZXh0ID0gV0VCS0lUX1dF
Ql9DT05URVhUKG9iamVjdCk7CiAgICAgV2ViS2l0V2ViQ29udGV4dFByaXZhdGUqIHByaXYgPSB3
ZWJDb250ZXh0LT5wcml2OwogICAgIGlmICghcHJpdi0+bG9jYWxTdG9yYWdlRGlyZWN0b3J5Lmlz
TnVsbCgpKQotICAgICAgICB3ZWJDb250ZXh0Q29uZmlndXJhdGlvbi5sb2NhbFN0b3JhZ2VEaXJl
Y3RvcnkgPSBXZWJDb3JlOjpmaWxlbmFtZVRvU3RyaW5nKHByaXYtPmxvY2FsU3RvcmFnZURpcmVj
dG9yeS5kYXRhKCkpOworICAgICAgICBjb25maWd1cmF0aW9uLT5zZXRMb2NhbFN0b3JhZ2VEaXJl
Y3RvcnkoV2ViQ29yZTo6ZmlsZW5hbWVUb1N0cmluZyhwcml2LT5sb2NhbFN0b3JhZ2VEaXJlY3Rv
cnkuZGF0YSgpKSk7CiAKLSAgICBwcml2LT5jb250ZXh0ID0gV2ViUHJvY2Vzc1Bvb2w6OmNyZWF0
ZShXVEY6Om1vdmUod2ViQ29udGV4dENvbmZpZ3VyYXRpb24pKTsKKyAgICBwcml2LT5jb250ZXh0
ID0gV2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZShjb25maWd1cmF0aW9uLmdldCgpKTsKIAogICAgIHBy
aXYtPnJlcXVlc3RNYW5hZ2VyID0gcHJpdi0+Y29udGV4dC0+c3VwcGxlbWVudDxXZWJTb3VwQ3Vz
dG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlcj4oKTsKICAgICBwcml2LT5jb250ZXh0LT5zZXRDYWNo
ZU1vZGVsKENhY2hlTW9kZWxQcmltYXJ5V2ViQnJvd3Nlcik7CkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQkocmV2
aXNpb24gMTc4NjMzKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nl
c3NQb29sQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTMzNCw3ICszMzQsNyBAQCBTdHJpbmcg
V2ViUHJvY2Vzc1Bvb2w6OmNvbnRhaW5lclRlbXBvcmFyCiB9CiAjZW5kaWYKIAotU3RyaW5nIFdl
YlByb2Nlc3NQb29sOjpwbGF0Zm9ybURlZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpCitT
dHJpbmcgV2ViUHJvY2Vzc1Bvb2w6OmxlZ2FjeVBsYXRmb3JtRGVmYXVsdFdlYlNRTERhdGFiYXNl
RGlyZWN0b3J5KCkKIHsKICAgICBOU1N0cmluZyAqZGF0YWJhc2VzRGlyZWN0b3J5ID0gW1tOU1Vz
ZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gb2JqZWN0Rm9yS2V5OldlYkRhdGFiYXNl
RGlyZWN0b3J5RGVmYXVsdHNLZXldOwogICAgIGlmICghZGF0YWJhc2VzRGlyZWN0b3J5IHx8ICFb
ZGF0YWJhc2VzRGlyZWN0b3J5IGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pCkBAIC0z
NDIsMjUgKzM0MiwxNiBAQCBTdHJpbmcgV2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtRGVmYXVsdFdl
CiAgICAgcmV0dXJuIHN0cmluZ0J5UmVzb2x2aW5nU3ltbGlua3NJblBhdGgoW2RhdGFiYXNlc0Rp
cmVjdG9yeSBzdHJpbmdCeVN0YW5kYXJkaXppbmdQYXRoXSk7CiB9CiAKLVN0cmluZyBXZWJQcm9j
ZXNzUG9vbDo6cGxhdGZvcm1EZWZhdWx0SW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoKQorU3Ry
aW5nIFdlYlByb2Nlc3NQb29sOjpsZWdhY3lQbGF0Zm9ybURlZmF1bHRJbmRleGVkREJEYXRhYmFz
ZURpcmVjdG9yeSgpCiB7CiAgICAgLy8gSW5kZXhlZCBkYXRhYmFzZXMgZXhpc3QgaW4gYSBzdWJk
aXJlY3Rvcnkgb2YgdGhlICJkYXRhYmFzZSBkaXJlY3RvcnkgcGF0aC4iCiAgICAgLy8gQ3VycmVu
dGx5LCB0aGUgdG9wIGxldmVsIG9mIHRoYXQgZGlyZWN0b3J5IGNvbnRhaW5zIGVudGl0aWVzIHJl
bGF0ZWQgdG8gV2ViU1FMIGRhdGFiYXNlcy4KICAgICAvLyBXZSBzaG91bGQgZml4IHRoaXMsIGFu
ZCBtb3ZlIFdlYlNRTCBpbnRvIGEgc3ViZGlyZWN0b3J5IChodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTI0ODA3KQogICAgIC8vIEluIHRoZSBtZWFudGltZSwgYW4gZW50
aXR5IG5hbWUgcHJlZml4ZWQgd2l0aCB0aHJlZSB1bmRlcnNjb3JlcyB3aWxsIG5vdCBjb25mbGlj
dCB3aXRoIGFueSBXZWJTUUwgZW50aXRpZXMuCi0gICAgcmV0dXJuIHBhdGhCeUFwcGVuZGluZ0Nv
bXBvbmVudChwbGF0Zm9ybURlZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpLCAiX19fSW5k
ZXhlZERCIik7CisgICAgcmV0dXJuIHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChsZWdhY3lQbGF0
Zm9ybURlZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpLCAiX19fSW5kZXhlZERCIik7CiB9
CiAKLVN0cmluZyBXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1EZWZhdWx0SWNvbkRhdGFiYXNlUGF0
aCgpIGNvbnN0Ci17Ci0gICAgLy8gRklYTUU6IDxyZGFyOi8vcHJvYmxlbS85MTM4ODE3PiAtIEFm
dGVyIHRoaXMgImJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IiByYWRhciBpcyByZW1vdmVkLCB0aGlz
IGNvZGUgc2hvdWxkIGJlIHJlbW92ZWQgdG8gb25seSByZXR1cm4gYW4gZW1wdHkgU3RyaW5nLgot
ICAgIE5TU3RyaW5nICpkYXRhYmFzZXNEaXJlY3RvcnkgPSBbW05TVXNlckRlZmF1bHRzIHN0YW5k
YXJkVXNlckRlZmF1bHRzXSBvYmplY3RGb3JLZXk6V2ViSWNvbkRhdGFiYXNlRGlyZWN0b3J5RGVm
YXVsdHNLZXldOwotICAgIGlmICghZGF0YWJhc2VzRGlyZWN0b3J5IHx8ICFbZGF0YWJhc2VzRGly
ZWN0b3J5IGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pCi0gICAgICAgIGRhdGFiYXNl
c0RpcmVjdG9yeSA9IEAifi9MaWJyYXJ5L0ljb25zL1dlYnBhZ2VJY29ucy5kYiI7Ci0gICAgcmV0
dXJuIHN0cmluZ0J5UmVzb2x2aW5nU3ltbGlua3NJblBhdGgoW2RhdGFiYXNlc0RpcmVjdG9yeSBz
dHJpbmdCeVN0YW5kYXJkaXppbmdQYXRoXSk7Ci19Ci0KLVN0cmluZyBXZWJQcm9jZXNzUG9vbDo6
cGxhdGZvcm1EZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkKK1N0cmluZyBXZWJQcm9jZXNz
UG9vbDo6bGVnYWN5UGxhdGZvcm1EZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkKIHsKICAg
ICBOU1N0cmluZyAqbG9jYWxTdG9yYWdlRGlyZWN0b3J5ID0gW1tOU1VzZXJEZWZhdWx0cyBzdGFu
ZGFyZFVzZXJEZWZhdWx0c10gb2JqZWN0Rm9yS2V5OldlYlN0b3JhZ2VEaXJlY3RvcnlEZWZhdWx0
c0tleV07CiAgICAgaWYgKCFsb2NhbFN0b3JhZ2VEaXJlY3RvcnkgfHwgIVtsb2NhbFN0b3JhZ2VE
aXJlY3RvcnkgaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xhc3NdXSkKQEAgLTM2OCw3ICszNTks
NyBAQCBTdHJpbmcgV2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtRGVmYXVsdExvCiAgICAgcmV0dXJu
IHN0cmluZ0J5UmVzb2x2aW5nU3ltbGlua3NJblBhdGgoW2xvY2FsU3RvcmFnZURpcmVjdG9yeSBz
dHJpbmdCeVN0YW5kYXJkaXppbmdQYXRoXSk7CiB9CiAKLVN0cmluZyBXZWJQcm9jZXNzUG9vbDo6
cGxhdGZvcm1EZWZhdWx0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpCitTdHJpbmcgV2ViUHJv
Y2Vzc1Bvb2w6OmxlZ2FjeVBsYXRmb3JtRGVmYXVsdE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3Rvcnko
KQogewogICAgIE5TU3RyaW5nICptZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5ID0gW1tOU1VzZXJE
ZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gb2JqZWN0Rm9yS2V5OldlYktpdE1lZGlhS2V5
c1N0b3JhZ2VEaXJlY3RvcnlEZWZhdWx0c0tleV07CiAgICAgaWYgKCFtZWRpYUtleXNTdG9yYWdl
RGlyZWN0b3J5IHx8ICFbbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSBpc0tpbmRPZkNsYXNzOltO
U1N0cmluZyBjbGFzc11dKQpAQCAtMzc2LDYgKzM2NywxNiBAQCBTdHJpbmcgV2ViUHJvY2Vzc1Bv
b2w6OnBsYXRmb3JtRGVmYXVsdE1lCiAgICAgcmV0dXJuIHN0cmluZ0J5UmVzb2x2aW5nU3ltbGlu
a3NJblBhdGgoW21lZGlhS2V5c1N0b3JhZ2VEaXJlY3Rvcnkgc3RyaW5nQnlTdGFuZGFyZGl6aW5n
UGF0aF0pOwogfQogCisKK1N0cmluZyBXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1EZWZhdWx0SWNv
bkRhdGFiYXNlUGF0aCgpIGNvbnN0Cit7CisgICAgLy8gRklYTUU6IDxyZGFyOi8vcHJvYmxlbS85
MTM4ODE3PiAtIEFmdGVyIHRoaXMgImJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IiByYWRhciBpcyBy
ZW1vdmVkLCB0aGlzIGNvZGUgc2hvdWxkIGJlIHJlbW92ZWQgdG8gb25seSByZXR1cm4gYW4gZW1w
dHkgU3RyaW5nLgorICAgIE5TU3RyaW5nICpkYXRhYmFzZXNEaXJlY3RvcnkgPSBbW05TVXNlckRl
ZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRzXSBvYmplY3RGb3JLZXk6V2ViSWNvbkRhdGFiYXNl
RGlyZWN0b3J5RGVmYXVsdHNLZXldOworICAgIGlmICghZGF0YWJhc2VzRGlyZWN0b3J5IHx8ICFb
ZGF0YWJhc2VzRGlyZWN0b3J5IGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pCisgICAg
ICAgIGRhdGFiYXNlc0RpcmVjdG9yeSA9IEAifi9MaWJyYXJ5L0ljb25zL1dlYnBhZ2VJY29ucy5k
YiI7CisgICAgcmV0dXJuIHN0cmluZ0J5UmVzb2x2aW5nU3ltbGlua3NJblBhdGgoW2RhdGFiYXNl
c0RpcmVjdG9yeSBzdHJpbmdCeVN0YW5kYXJkaXppbmdQYXRoXSk7Cit9CisKIGJvb2wgV2ViUHJv
Y2Vzc1Bvb2w6Om9taXRQREZTdXBwb3J0KCkKIHsKICAgICAvLyBTaW5jZSB0aGlzIGlzIGEgInNl
Y3JldCBkZWZhdWx0IiB3ZSBkb24ndCBib3RoZXIgcmVnaXN0ZXJpbmcgaXQuCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYkNvbnRleHRFZmwuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViQ29udGV4dEVmbC5jcHAJKHJldmlzaW9u
IDE3ODYzMykKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViQ29udGV4dEVmbC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMCwxMiArMTAwLDEyIEBAIHZvaWQgV2ViUHJvY2Vzc1Bv
b2w6OnBsYXRmb3JtSW52YWxpZGF0ZUMKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi1TdHJp
bmcgV2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtRGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5
KCkKK1N0cmluZyBXZWJQcm9jZXNzUG9vbDo6bGVnYWN5UGxhdGZvcm1EZWZhdWx0V2ViU1FMRGF0
YWJhc2VEaXJlY3RvcnkoKQogewogICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KGVmcmVldF9k
YXRhX2hvbWVfZ2V0KCkpICsgIi9XZWJLaXRFZmwvRGF0YWJhc2VzIjsKIH0KIAotU3RyaW5nIFdl
YlByb2Nlc3NQb29sOjpwbGF0Zm9ybURlZmF1bHRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSgp
CitTdHJpbmcgV2ViUHJvY2Vzc1Bvb2w6OmxlZ2FjeVBsYXRmb3JtRGVmYXVsdEluZGV4ZWREQkRh
dGFiYXNlRGlyZWN0b3J5KCkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogICAgIHJldHVybiBT
dHJpbmcoKTsKQEAgLTExNiwxMiArMTE2LDEyIEBAIFN0cmluZyBXZWJQcm9jZXNzUG9vbDo6cGxh
dGZvcm1EZWZhdWx0SWMKICAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOChlZnJlZXRfZGF0YV9o
b21lX2dldCgpKSArICIvV2ViS2l0RWZsL0ljb25EYXRhYmFzZS8iICsgV2ViQ29yZTo6SWNvbkRh
dGFiYXNlOjpkZWZhdWx0RGF0YWJhc2VGaWxlbmFtZSgpOwogfQogCi1TdHJpbmcgV2ViUHJvY2Vz
c1Bvb2w6OnBsYXRmb3JtRGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSgpCitTdHJpbmcgV2Vi
UHJvY2Vzc1Bvb2w6OmxlZ2FjeVBsYXRmb3JtRGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSgp
CiB7CiAgICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgoZWZyZWV0X2RhdGFfaG9tZV9nZXQoKSkg
KyAiL1dlYktpdEVmbC9Mb2NhbFN0b3JhZ2UiOwogfQogCi1TdHJpbmcgV2ViUHJvY2Vzc1Bvb2w6
OnBsYXRmb3JtRGVmYXVsdE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKQorU3RyaW5nIFdlYlBy
b2Nlc3NQb29sOjpsZWdhY3lQbGF0Zm9ybURlZmF1bHRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5
KCkKIHsKICAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOChlZnJlZXRfZGF0YV9ob21lX2dldCgp
KSArICIvV2ViS2l0RWZsL01lZGlhS2V5cyI7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvZ3RrL1dlYlByb2Nlc3NQb29sR3RrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYlByb2Nlc3NQb29sR3RrLmNwcAkocmV2aXNpb24gMTc4NjMz
KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJQcm9jZXNzUG9vbEd0ay5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTExMiwxMyArMTEyLDEzIEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6
OnBsYXRmb3JtSW52YWxpZGF0ZUMKIHsKIH0KIAotU3RyaW5nIFdlYlByb2Nlc3NQb29sOjpwbGF0
Zm9ybURlZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpCitTdHJpbmcgV2ViUHJvY2Vzc1Bv
b2w6OmxlZ2FjeVBsYXRmb3JtRGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KCkKIHsKICAg
ICBHVW5pcXVlUHRyPGdjaGFyPiBkYXRhYmFzZURpcmVjdG9yeShnX2J1aWxkX2ZpbGVuYW1lKGdf
Z2V0X3VzZXJfZGF0YV9kaXIoKSwgIndlYmtpdGd0ayIsICJkYXRhYmFzZXMiLCBudWxscHRyKSk7
CiAgICAgcmV0dXJuIFdlYkNvcmU6OmZpbGVuYW1lVG9TdHJpbmcoZGF0YWJhc2VEaXJlY3Rvcnku
Z2V0KCkpOwogfQogCi1TdHJpbmcgV2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtRGVmYXVsdEluZGV4
ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCkKK1N0cmluZyBXZWJQcm9jZXNzUG9vbDo6bGVnYWN5UGxh
dGZvcm1EZWZhdWx0SW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoKQogewogICAgIG5vdEltcGxl
bWVudGVkKCk7CiAgICAgcmV0dXJuIFN0cmluZygpOwpAQCAtMTMwLDEzICsxMzAsMTMgQEAgU3Ry
aW5nIFdlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybURlZmF1bHRJYwogICAgIHJldHVybiBXZWJDb3Jl
OjpmaWxlbmFtZVRvU3RyaW5nKGRhdGFiYXNlRGlyZWN0b3J5LmdldCgpKTsKIH0KIAotU3RyaW5n
IFdlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybURlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKQor
U3RyaW5nIFdlYlByb2Nlc3NQb29sOjpsZWdhY3lQbGF0Zm9ybURlZmF1bHRMb2NhbFN0b3JhZ2VE
aXJlY3RvcnkoKQogewogICAgIEdVbmlxdWVQdHI8Z2NoYXI+IHN0b3JhZ2VEaXJlY3RvcnkoZ19i
dWlsZF9maWxlbmFtZShnX2dldF91c2VyX2RhdGFfZGlyKCksICJ3ZWJraXRndGsiLCAibG9jYWxz
dG9yYWdlIiwgbnVsbHB0cikpOwogICAgIHJldHVybiBXZWJDb3JlOjpmaWxlbmFtZVRvU3RyaW5n
KHN0b3JhZ2VEaXJlY3RvcnkuZ2V0KCkpOwogfQogCi1TdHJpbmcgV2ViUHJvY2Vzc1Bvb2w6OnBs
YXRmb3JtRGVmYXVsdE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKQorU3RyaW5nIFdlYlByb2Nl
c3NQb29sOjpsZWdhY3lQbGF0Zm9ybURlZmF1bHRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCkK
IHsKICAgICBHVW5pcXVlUHRyPGdjaGFyPiBtZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KGdfYnVp
bGRfZmlsZW5hbWUoZ19nZXRfdXNlcl9kYXRhX2RpcigpLCAid2Via2l0Z3RrIiwgIm1lZGlha2V5
cyIsIG51bGxwdHIpKTsKICAgICByZXR1cm4gV2ViQ29yZTo6ZmlsZW5hbWVUb1N0cmluZyhtZWRp
YUtleXNTdG9yYWdlRGlyZWN0b3J5LmdldCgpKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYktp
dDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE3ODYzNCkKKysr
IFNvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2lu
ZyBjb3B5KQpAQCAtMTA4Nyw2ICsxMDg3LDcgQEAKIAkJN0M4OUQyQkMxQTZCMEY1QjAwM0E1RkRF
IC8qIF9XS1VzZXJDb250ZW50RmlsdGVySW50ZXJuYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDODlEMkJCMUE2QjBGNUIwMDNBNUZERSAvKiBfV0tV
c2VyQ29udGVudEZpbHRlckludGVybmFsLmggKi87IH07CiAJCTdDODlEMkJGMUE2QjExRUYwMDNB
NUZERSAvKiBXS1VzZXJDb250ZW50RmlsdGVyUmVmLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDODlEMkJEMUE2QjExRUYwMDNBNUZERSAvKiBXS1Vz
ZXJDb250ZW50RmlsdGVyUmVmLmNwcCAqLzsgfTsKIAkJN0M4OUQyQzAxQTZCMTFFRjAwM0E1RkRF
IC8qIFdLVXNlckNvbnRlbnRGaWx0ZXJSZWYuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDdDODlEMkJFMUE2QjExRUYwMDNBNUZERSAvKiBXS1VzZXJDb250
ZW50RmlsdGVyUmVmLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJN0M4OUQyRDcxQTZDNkJFNjAwM0E1RkRFIC8qIF9XS1Byb2Nlc3NQb29sQ29uZmln
dXJhdGlvbkludGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3Qzg5RDJENjFBNkM2QkU2MDAzQTVGREUgLyogX1dLUHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uSW50ZXJuYWwuaCAqLzsgfTsKIAkJN0M4RUIxMTcxOERCNkExOTAwNzkxN0MyIC8qIFdL
UHJlZmVyZW5jZXNQcml2YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3QzhFQjExNjE4REI2QTE5MDA3OTE3QzIgLyogV0tQcmVmZXJlbmNlc1ByaXZh
dGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3
QzlEMTUzNzE4NDU4NERBMDA5RDM5MTggLyogV0tCcm93c2luZ0NvbnRleHRHcm91cEludGVybmFs
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzlEMTUz
NjE4NDU4NERBMDA5RDM5MTggLyogV0tCcm93c2luZ0NvbnRleHRHcm91cEludGVybmFsLmggKi87
IH07CiAJCTdDQTI1NEVCMTgyOTkzQ0UwMEZDOEE0MSAvKiBXS0Jyb3dzaW5nQ29udGV4dFBvbGlj
eURlbGVnYXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3Q0EyNTRFQTE4Mjk5M0NFMDBGQzhBNDEgLyogV0tCcm93c2luZ0NvbnRleHRQb2xpY3lEZWxl
Z2F0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBA
IC0zMjIwLDYgKzMyMjEsNyBAQAogCQk3Qzg5RDJCQjFBNkIwRjVCMDAzQTVGREUgLyogX1dLVXNl
ckNvbnRlbnRGaWx0ZXJJbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBfV0tVc2VyQ29udGVudEZpbHRlckludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTdDODlEMkJEMUE2QjExRUYwMDNBNUZERSAvKiBXS1VzZXJDb250ZW50RmlsdGVyUmVm
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdLVXNlckNvbnRlbnRG
aWx0ZXJSZWYuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3Qzg5RDJCRTFBNkIx
MUVGMDAzQTVGREUgLyogV0tVc2VyQ29udGVudEZpbHRlclJlZi5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXS1VzZXJDb250ZW50RmlsdGVyUmVmLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTdDODlEMkQ2MUE2QzZCRTYwMDNBNUZERSAvKiBfV0tQcm9jZXNzUG9v
bENvbmZpZ3VyYXRpb25JbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb25JbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk3QzhFQjExNjE4REI2QTE5MDA3OTE3QzIgLyogV0tQcmVmZXJlbmNlc1By
aXZhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tQcmVmZXJlbmNlc1By
aXZhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0M5RDE1MzYxODQ1ODREQTAw
OUQzOTE4IC8qIFdLQnJvd3NpbmdDb250ZXh0R3JvdXBJbnRlcm5hbC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXS0Jyb3dzaW5nQ29udGV4dEdyb3VwSW50ZXJuYWwuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0NBMjU0RUExODI5OTNDRTAwRkM4QTQxIC8qIFdL
QnJvd3NpbmdDb250ZXh0UG9saWN5RGVsZWdhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV0tCcm93c2luZ0NvbnRleHRQb2xpY3lEZWxlZ2F0ZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtNTE3Miw2ICs1MTc0LDcgQEAKIAkJCQkzN0E2NEU1NjE4RjM4RjQ2
MDBFQjMwRjEgLyogX1dLRm9ybUlucHV0U2Vzc2lvbi5oICovLAogCQkJCTFBNDNFODI4MTg4RjND
REMwMDlFNEQzMCAvKiBfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaCAqLywKIAkJCQkxQTQz
RTgyNzE4OEYzQ0RDMDA5RTREMzAgLyogX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLm1tICov
LAorCQkJCTdDODlEMkQ2MUE2QzZCRTYwMDNBNUZERSAvKiBfV0tQcm9jZXNzUG9vbENvbmZpZ3Vy
YXRpb25JbnRlcm5hbC5oICovLAogCQkJCTM3NkM1MTE4MTk1NzQ1MkUwMDA3QjBGQSAvKiBfV0tT
ZWN1cml0eU9yaWdpbi5oICovLAogCQkJCTM3NkM1MTE3MTk1NzQ1MkUwMDA3QjBGQSAvKiBfV0tT
ZWN1cml0eU9yaWdpbi5tbSAqLywKIAkJCQkzNzZDNTExQjE5NTc0OEMyMDAwN0IwRkEgLyogX1dL
U2VjdXJpdHlPcmlnaW5JbnRlcm5hbC5oICovLApAQCAtNzQ2Miw2ICs3NDY1LDcgQEAKIAkJCQkx
QUI3RDYxQTEyODhCOUQ5MDBDRkQwOEMgLyogRG93bmxvYWRQcm94eU1lc3NhZ2VzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlDNTE3Mzg4MTEyREY4RjRGMDBFRTNGNDcgLyogRHJhZ0NvbnRyb2xsZXJB
Y3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUJDODQ1MkE4MTE2MkM4MDkwMENBQjlCNSAvKiBE
cmF3aW5nQXJlYS5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0M4OUQyRDcxQTZDNkJFNjAwM0E1RkRF
IC8qIF9XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbkludGVybmFsLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRkI2NTkyMzEyMDhCNERCMDA0NDgxNkMgLyogRHJhd2luZ0FyZWFJbmZvLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk3Qzg5RDJDMDFBNkIxMUVGMDAzQTVGREUgLyogV0tVc2VyQ29udGVudEZp
bHRlclJlZi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE2NDIyOUExMkREMDI5MjAwQ0FBRTJDIC8q
IERyYXdpbmdBcmVhTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAo=
</data>
<flag name="review"
          id="269793"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>