<?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>155842</bug_id>
          
          <creation_ts>2016-03-24 10:22:20 -0700</creation_ts>
          <short_desc>CSP: Move logic for reporting a violation from ContentSecurityPolicyDirectiveList to ContentSecurityPolicy</short_desc>
          <delta_ts>2016-03-24 19:14:18 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>WebKit Local Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Daniel Bates">dbates</reporter>
          <assigned_to name="Daniel Bates">dbates</assigned_to>
          <cc>aestes</cc>
    
    <cc>bfulgham</cc>
    
    <cc>darin</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1177700</commentid>
    <comment_count>0</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2016-03-24 10:22:20 -0700</bug_when>
    <thetext>As a step towards fixing bug #114317, move the responsibility of logging a console message and sending a violation report from class ContentSecurityPolicyDirectiveList to class ContentSecurityPolicy. ContentSecurityPolicyDirectiveList should be responsible for parsing a policy and providing functions that a caller can use to check a source against the policy. The caller of ContentSecurityPolicyDirectiveList, the ContentSecurityPolicy object, should be responsible for taking the appropriate action, which may include logging a console message and sending a violation report.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1177701</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2016-03-24 10:22:52 -0700</bug_when>
    <thetext>&lt;rdar://problem/25340377&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1177703</commentid>
    <comment_count>2</comment_count>
      <attachid>274841</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2016-03-24 10:49:33 -0700</bug_when>
    <thetext>Created attachment 274841
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1177710</commentid>
    <comment_count>3</comment_count>
      <attachid>274843</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2016-03-24 11:05:02 -0700</bug_when>
    <thetext>Created attachment 274843
Patch

Actually add file ContentSecurityPolicyDirective.cpp and rebase patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1177713</commentid>
    <comment_count>4</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2016-03-24 11:17:03 -0700</bug_when>
    <thetext>We likely can further clean up the code in ContentSecurityPolicy and remove duplication. I will look to do such clean up either as part of the fix for bug #114317 or in a subsequent bug/patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1177718</commentid>
    <comment_count>5</comment_count>
      <attachid>274845</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2016-03-24 11:21:37 -0700</bug_when>
    <thetext>Created attachment 274845
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1177720</commentid>
    <comment_count>6</comment_count>
      <attachid>274846</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2016-03-24 11:34:46 -0700</bug_when>
    <thetext>Created attachment 274846
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1177775</commentid>
    <comment_count>7</comment_count>
      <attachid>274846</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2016-03-24 15:15:44 -0700</bug_when>
    <thetext>Comment on attachment 274846
Patch

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

I got worried you might have a copy/paste error, but looking further I think it was written as intended. r=me.

&gt; Source/WebCore/page/csp/ContentSecurityPolicy.cpp:270
&gt; +    return isReportOnly;

This section seems identical to the code in &apos;allowJavaScriptURLs&quot;. Is this intentional? Why is the error name and all other feature of this &quot;inline event hander&quot; case the same as the &quot;allow JavaScript URLs&quot; case? And if they are identical, why keep both methods?

&gt; Source/WebCore/page/csp/ContentSecurityPolicy.cpp:-437
&gt; -    ASSERT(!m_frame || effectiveDirective == &quot;frame-ancestors&quot;);

Yay!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1177815</commentid>
    <comment_count>8</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2016-03-24 16:53:35 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; Comment on attachment 274846 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=274846&amp;action=review
&gt; 
&gt; I got worried you might have a copy/paste error, but looking further I think
&gt; it was written as intended. r=me.
&gt; 
&gt; &gt; Source/WebCore/page/csp/ContentSecurityPolicy.cpp:270
&gt; &gt; +    return isReportOnly;
&gt; 
&gt; This section seems identical to the code in &apos;allowJavaScriptURLs&quot;. Is this
&gt; intentional? 

Yes, this was intentional for the moment. I initially planned to change the error message text for an inline event handler violation in a subsequent patch because this patch was already large and I thought we might need to update the expected results for many tests. As it turns out, we have only three tests for inline event handlers (maybe we can add more?). So, its seems reasonable to simply change the error message for an inline event handler violation in this patch before landing and include updated results for those three affected tests. Before I land this patch I will change line 256 in the patch (attachment #274846) from:

String consoleMessage = consoleMessageForViolation(ContentSecurityPolicyDirectiveNames::scriptSrc, *violatedDirective, URL(), &quot;Refused to execute a script&quot;, &quot;its hash, its nonce, or &apos;unsafe-inline&apos;&quot;);

to

String consoleMessage = consoleMessageForViolation(ContentSecurityPolicyDirectiveNames::scriptSrc, *violatedDirective, URL(), &quot;Refused to execute a script for an inline event handler&quot;, &quot;&apos;unsafe-inline&apos;&quot;);

Then we will emit the following error message for an inline event handler violation when the policy defines directive script-src and does not define directive default-src:

Refused to execute a script for an inline event handler because &apos;unsafe-inline&apos; does not appear in the script-src directive of the Content Security Policy.

And we will emit the following error message for an inline event handler violation when the policy does not define directive script-src and does define directive default-src:

Refused to execute a script for an inline event handler because &apos;unsafe-inline&apos; appears in neither the script-src directive nor the default-src directive of the Content Security Policy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1177844</commentid>
    <comment_count>9</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2016-03-24 19:14:18 -0700</bug_when>
    <thetext>Committed r198657: &lt;http://trac.webkit.org/changeset/198657&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>274841</attachid>
            <date>2016-03-24 10:49:33 -0700</date>
            <delta_ts>2016-03-24 11:04:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-155842-20160324104936.patch</filename>
            <type>text/plain</type>
            <size>106064</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk4NTg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjQ0NzI1OWZiYzg3YTdm
ODMyMGUxMmRiNTM3YTUxODdjMTllNWRhNi4uYjJlODg0MmUwOTU5ODRlYTczYWE0YjcyMDM2MmU2
ODcxNTE4YmIwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1MCBAQAorMjAxNi0wMy0yNCAgRGFu
aWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CisKKyAgICAgICAgQ1NQOiBNb3ZlIGxvZ2lj
IGZvciByZXBvcnRpbmcgYSB2aW9sYXRpb24gZnJvbSBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJl
Y3RpdmVMaXN0IHRvIENvbnRlbnRTZWN1cml0eVBvbGljeQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU1ODQyCisgICAgICAgIDxyZGFyOi8vcHJvYmxl
bS8yNTM0MDM3Nz4KKyAgICAgICAgQW5kCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNTUxMzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBUb3dhcmRzIGFzc29jaWF0aW5nIHNvdXJjZSBmaWxlLCBsaW5lLSwg
YW5kIGNvbHVtbi0gbnVtYmVycyAoaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTExNDMxNykKKyAgICAgICAgd2l0aCBhIENTUCBjb25zb2xlIG1lc3NhZ2Ugd2Ugc2hvdWxk
IG1vdmUgdGhlIGxvZ2ljIGZvciBsb2dnaW5nIHRoZSBjb25zb2xlIG1lc3NhZ2UvcmVwb3J0aW5n
IHRoZSB2aW9sYXRpb24KKyAgICAgICAgZnJvbSBjbGFzcyBDb250ZW50U2VjdXJpdHlQb2xpY3lE
aXJlY3RpdmVMaXN0IHRvIGNsYXNzIENvbnRlbnRTZWN1cml0eVBvbGljeSBzbyB0aGF0IGl0IGlz
IGNsb3NlciB0byB0aGUKKyAgICAgICAgc2NyaXB0IGV4ZWN1dGlvbiBjb250ZXh0IHRoYXQgY2Fu
IGFjY2VzcyBzdWNoIGluZm9ybWF0aW9uLgorCisgICAgICAgIFRoZSByZXNwb25zaWJpbGl0aWVz
IG9mIHRoZSBjbGFzcyBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0IGhhdmUgYmVl
biByZWR1Y2VkLiBJdCBpcyByZXNwb25zaWJsZQorICAgICAgICBmb3IgcGFyc2luZyBhIHN0cmlu
ZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgQ29udGVudCBTZWN1cml0eSBQb2xpY3kgYW5kIHByb3Zp
ZGluZyBmdW5jdGlvbnMgdG8gZGV0ZXJtaW5lCisgICAgICAgIHRoZSB2aW9sYXRlZCBkaXJlY3Rp
dmUgKGlmIGFueSkgZm9yIGEgZ2l2ZW4gc291cmNlIChlLmcuIFVSTCkuIENvbnRlbnRTZWN1cml0
eVBvbGljeURpcmVjdGl2ZUxpc3Qgbm8gbG9uZ2VyCisgICAgICAgIHRha2VzIHJlc3BvbnNpYmls
aXR5IGxvZ2dpbmcgYSBjb25zb2xlIG1lc3NhZ2Ugb3Igc2VuZGluZyBhIHZpb2xhdGlvbiByZXBv
cnQgKGlmIGFwcGxpY2FibGUpLiBGYWxsaW5nIG91dAorICAgICAgICBmcm9tIHRoaXMgZGVjcmVh
c2UgaW4gcmVzcG9uc2liaWxpdHkgaXMgdGhlIHJlbW92YWwgb2YgZW51bSBDb250ZW50U2VjdXJp
dHlQb2xpY3lEaXJlY3RpdmVMaXN0OjpSZXBvcnRpbmdTdGF0dXMKKyAgICAgICAgYW5kIHRoZSBu
ZWVkIHRvIHBhc3MgYSBlbnVtZXJhdG9yIG9mIHRoaXMgZW51bSB0byBlYWNoIENvbnRlbnRTZWN1
cml0eVBvbGljeURpcmVjdGl2ZUxpc3QgdG8gc3VwcHJlc3MKKyAgICAgICAgdGhlIHNlbmRpbmcg
b2YgYSB2aW9sYXRpb24gcmVwb3J0LiBUaGUgY2FsbGVyIG9mIENvbnRlbnRTZWN1cml0eVBvbGlj
eURpcmVjdGl2ZUxpc3QgaXMgcmVzcG9uc2libGUgZm9yCisgICAgICAgIG1ha2luZyB0aGlzIGRl
dGVybWluYXRpb24uCisKKyAgICAgICAgTm8gZnVuY3Rpb25hbGl0eSB3YXMgY2hhbmdlZC4gU28s
IG5vIG5ldyB0ZXN0cy4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OiBBZGQgZmlsZXMgQ29u
dGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlLmNwcCBhbmQgQ29udGVudFNlY3VyaXR5UG9saWN5
RGlyZWN0aXZlTmFtZXMuY3BwLgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajogQWRkIGZpbGVzIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZS5jcHAgYW5k
IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzLntjcHAsIGh9LgorICAgICAgICAq
IHBhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpj
b25zb2xlTWVzc2FnZUZvclZpb2xhdGlvbik6IE1vdmVkIGZyb20gZmlsZSBDb250ZW50U2VjdXJp
dHlQb2xpY3lEaXJlY3RpdmVMaXN0LmNwcCBhbmQKKyAgICAgICAgaW5jb3Jwb3JhdGVzIHRoZSBm
dW5jdGlvbmFsaXR5IG9mIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OnJlcG9y
dFZpb2xhdGlvbigpLiBNb2RpZmllZAorICAgICAgICB0byB0YWtlIGEgcmVmZXJlbmNlIHRvIHRo
ZSB2aW9sYXRlZCBkaXJlY3RpdmUgKENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZSBvYmpl
Y3QpIGFuZCByZW1vdmVkCisgICAgICAgIHRoZSBib29sZWFuIHBhcmFtZXRlciB2aW9sYXRlc0Rl
ZmF1bHRTcmMgYXMgd2UgY2FuIGRlZHVjZSB0aGlzIGZyb20gdGhlIHZpb2xhdGVkIGRpcmVjdGl2
ZS4KKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeTo6ZGlkUmVjZWl2ZUhl
YWRlcik6IE1vZGlmaWVkIHRvIGNhbGwgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlz
dDo6dmlvbGF0ZWREaXJlY3RpdmVGb3JVbnNhZmVFdmFsKCkuCisgICAgICAgIChXZWJDb3JlOjpD
b250ZW50U2VjdXJpdHlQb2xpY3k6OmZvdW5kSGFzaE9mQ29udGVudEluQWxsUG9saWNpZXMpOiBS
ZW5hbWVkOyBGb3JtZXJseSBuYW1lZCBhbGxQb2xpY2llc0FsbG93SGFzaEZyb21Db250ZW50Lgor
ICAgICAgICBNb2RpZmllZCB0byBlYXJseSByZXR1cm4gaWYgZWl0aGVyIG5vIGFsZ29yaXRobXMg
YXJlIGdpdmVuIG9yIHRoZSBzcGVjaWZpZWQgY29udGVudCB0byBoYXNoIGlzCisgICAgICAgIHRo
ZSBlbXB0eSBzdHJpbmcuCisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3k6
OmFsbG93SmF2YVNjcmlwdFVSTHMpOiBNb3ZlZCBsb2dpYyBmb3IgcmVwb3J0aW5nIGEgdmlvbGF0
aW9uIGZyb20KKyAgICAgICAgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdCBtZW1i
ZXIgZnVuY3Rpb24gb2YgdGhlIHNhbWUgbmFtZSB0byBoZXJlLgorICAgICAgICAoV2ViQ29yZTo6
Q29udGVudFNlY3VyaXR5UG9saWN5OjphbGxvd0lubGluZUV2ZW50SGFuZGxlcnMpOiBEaXR0by4K
KyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeTo6YWxsb3dTY3JpcHRXaXRo
Tm9uY2UpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeTo6
YWxsb3dTdHlsZVdpdGhOb25jZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudFNl
Y3VyaXR5UG9saWN5OjphbGxvd0lubGluZVNjcmlwdCk6IERpdHRvLgorICAgICAgICAoV2ViQ29y
ZTo6Q29udGVudFNlY3VyaXR5UG9saWN5OjphbGxvd0lubGluZVN0eWxlKTogRGl0dG8uCisgICAg
ICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93RXZhbCk6IERpdHRvLgor
ICAgICAgICAoV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5OjphbGxvd0ZyYW1lQW5jZXN0
b3JzKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFs
bG93UGx1Z2luVHlwZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5
UG9saWN5OjphbGxvd1NjcmlwdEZyb21Tb3VyY2UpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6
OkNvbnRlbnRTZWN1cml0eVBvbGljeTo6YWxsb3dPYmplY3RGcm9tU291cmNlKTogRGl0dG8uCisg
ICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93Q2hpbGRGcmFtZUZy
b21Tb3VyY2UpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGlj
eTo6YWxsb3dDaGlsZENvbnRleHRGcm9tU291cmNlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3Jl
OjpDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93SW1hZ2VGcm9tU291cmNlKTogRGl0dG8uCisg
ICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93U3R5bGVGcm9tU291
cmNlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFs
bG93Rm9udEZyb21Tb3VyY2UpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1
cml0eVBvbGljeTo6YWxsb3dNZWRpYUZyb21Tb3VyY2UpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeTo6YWxsb3dDb25uZWN0VG9Tb3VyY2UpOiBEaXR0by4K
KyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeTo6YWxsb3dGb3JtQWN0aW9u
KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93
QmFzZVVSSSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5
OjpyZXBvcnRWaW9sYXRpb24pOiBTaW1wbGlmaWVkIHNpZ25hdHVyZSBieSBoYXZpbmcgaXQgdGFr
ZSBhIHJlZmVyZW5jZSB0bworICAgICAgICBhIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2
ZSBvYmplY3QuIEFsc28gc3BsaXQgZnVuY3Rpb25hbGl0eSBpbnRvIHR3byB2YXJpYW50czogb25l
IHZhcmlhbnQgdGFrZXMgYQorICAgICAgICBwb2ludGVyIHRvIGEgSlNDOjpFeGVjU3RhdGUsIG9u
ZSB2YXJpYW50IHRha2VzIGEgc291cmNlIGZpbGUsIGFuZCBsaW5lIGFuZCBjb2x1bW4gcG9zaXRp
b25zLgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5OjphbGxQb2xpY2ll
c0FsbG93SGFzaEZyb21Db250ZW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNvbnRl
bnRTZWN1cml0eVBvbGljeTo6Z2F0aGVyUmVwb3J0VVJJcyk6IERlbGV0ZWQuCisgICAgICAgICog
cGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5Lmg6CisgICAgICAgIChXZWJDb3JlOjpDb250
ZW50U2VjdXJpdHlQb2xpY3k6OnZpb2xhdGVkRGlyZWN0aXZlSW5BbnlQb2xpY3kpOiBGb3JtZXJs
eSBuYW1lZCBhbGxQb2xpY2llc0FsbG93LiBNb2RpZmllZAorICAgICAgICB0byByZXR1cm4gdGhl
IHZpb2xhdGVkIGRpcmVjdGl2ZS4KKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBv
bGljeTo6YWxsUG9saWNpZXNBbGxvdyk6IERlbGV0ZWQuCisgICAgICAgICogcGFnZS9jc3AvQ29u
dGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
Q29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJl
Y3RpdmUpOiBNb2RpZmllZCB0byB0YWtlIGEgcmVmZXJlbmNlIHRvIHRoZQorICAgICAgICBkaXJl
Y3RpdmUgbGlzdCB0aGF0IGNvbnRhaW5zIHRoaXMgZGlyZWN0aXZlIGluc3RlYWQgb2YgcG9pbnRl
ciB0byBhIENvbnRlbnRTZWN1cml0eVBvbGljeSBvYmplY3QuCisgICAgICAgIChXZWJDb3JlOjpD
b250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmU6Om5hbWUpOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZTo6ZGlyZWN0aXZlTGlzdCk6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlOjpp
c0RlZmF1bHRTcmMpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBv
bGljeURpcmVjdGl2ZTo6cG9saWN5KTogRGVsZXRlZC4KKyAgICAgICAgKiBwYWdlL2NzcC9Db250
ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0LmNwcDogUmVtb3ZlIHVudXNlZCBoZWFkZXIg
PHd0Zi9PcHRpb25hbC5oPi4gQWxzbyByZW1vdmUgaGVhZGVyIHd0Zi90ZXh0L1N0cmluZ0J1aWxk
ZXIuaAorICAgICAgICBhcyB0aGUgZnVuY3Rpb24gdGhhdCBtYWRlIHVzZSBvZiBpdCwgY29uc29s
ZU1lc3NhZ2VGb3JWaW9sYXRpb24sIHdhcyBtb3ZlZCB0byBmaWxlIENvbnRlbnRTZWN1cml0eVBv
bGljeS5jcHAuCisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3Rp
dmVMaXN0Ojp2aW9sYXRlZERpcmVjdGl2ZUZvclVuc2FmZUV2YWwpOiBGb3JtZXJseSBuYW1lZCBh
bGxvd0V2YWwuCisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3Rp
dmVMaXN0Ojp2aW9sYXRlZERpcmVjdGl2ZUZvclVuc2FmZUlubGluZVNjcmlwdCk6IEZvcm1lcmx5
IG5hbWVkIGFsbG93SW5saW5lU2NyaXB0LgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudFNlY3Vy
aXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6dmlvbGF0ZWREaXJlY3RpdmVGb3JVbnNhZmVJbmxpbmVT
dHlsZSk6IEZvcm1lcmx5IG5hbWVkIGFsbG93SW5saW5lU3R5bGUuCisgICAgICAgIChXZWJDb3Jl
OjpDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0Ojp2aW9sYXRlZERpcmVjdGl2ZUZv
clNjcmlwdEhhc2gpOiBGb3JtZXJseSBuYW1lZCBhbGxvd0lubGluZVNjcmlwdFdpdGhIYXNoLgor
ICAgICAgICAoV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6dmlv
bGF0ZWREaXJlY3RpdmVGb3JTdHlsZUhhc2gpOiBGb3JtZXJseSBuYW1lZCBhbGxvd0lubGluZVN0
eWxlV2l0aEhhc2guCisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJl
Y3RpdmVMaXN0Ojp2aW9sYXRlZERpcmVjdGl2ZUZvclNjcmlwdE5vbmNlKTogRm9ybWVybHkgbmFt
ZWQgYWxsb3dTY3JpcHRXaXRoTm9uY2UuCisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJp
dHlQb2xpY3lEaXJlY3RpdmVMaXN0Ojp2aW9sYXRlZERpcmVjdGl2ZUZvclN0eWxlTm9uY2UpOiBG
b3JtZXJseSBuYW1lZCBhbGxvd1N0eWxlV2l0aE5vbmNlLgorICAgICAgICAoV2ViQ29yZTo6Q29u
dGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6dmlvbGF0ZWREaXJlY3RpdmVGb3JCYXNl
VVJJKTogRm9ybWVybHkgbmFtZWQgYWxsb3dCYXNlVVJJLgorICAgICAgICAoV2ViQ29yZTo6Q29u
dGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6dmlvbGF0ZWREaXJlY3RpdmVGb3JDaGls
ZENvbnRleHQpOiBGb3JtZXJseSBuYW1lZCBhbGxvd0NoaWxkQ29udGV4dEZyb21Tb3VyY2UuCisg
ICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0Ojp2aW9s
YXRlZERpcmVjdGl2ZUZvckNvbm5lY3RTb3VyY2UpOiBGb3JtZXJseSBuYW1lZCBhbGxvd0Nvbm5l
Y3RUb1NvdXJjZS4KKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeURpcmVj
dGl2ZUxpc3Q6OnZpb2xhdGVkRGlyZWN0aXZlRm9yRm9udCk6IEZvcm1lcmx5IG5hbWVkIGFsbG93
Rm9udEZyb21Tb3VyY2UuCisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lE
aXJlY3RpdmVMaXN0Ojp2aW9sYXRlZERpcmVjdGl2ZUZvckZvcm1BY3Rpb24pOiBGb3JtZXJseSBu
YW1lZCBhbGxvd0Zvcm1BY3Rpb24uCisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQ
b2xpY3lEaXJlY3RpdmVMaXN0Ojp2aW9sYXRlZERpcmVjdGl2ZUZvckZyYW1lKTogRm9ybWVybHkg
bmFtZWQgYWxsb3dDaGlsZEZyYW1lRnJvbVNvdXJjZS4KKyAgICAgICAgKFdlYkNvcmU6OkNvbnRl
bnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OnZpb2xhdGVkRGlyZWN0aXZlRm9yRnJhbWVB
bmNlc3Rvcik6IEZvcm1lcmx5IG5hbWVkIGFsbG93RnJhbWVBbmNlc3RvcnMuCisgICAgICAgIChX
ZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0Ojp2aW9sYXRlZERpcmVj
dGl2ZUZvckltYWdlKTogRm9ybWVybHkgbmFtZWQgYWxsb3dJbWFnZUZyb21Tb3VyY2UuCisgICAg
ICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0Ojp2aW9sYXRl
ZERpcmVjdGl2ZUZvck1lZGlhKTogRm9ybWVybHkgbmFtZWQgYWxsb3dNZWRpYUZyb21Tb3VyY2Uu
CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0Ojp2
aW9sYXRlZERpcmVjdGl2ZUZvck9iamVjdFNvdXJjZSk6IEZvcm1lcmx5IG5hbWVkIGFsbG93T2Jq
ZWN0RnJvbVNvdXJjZS4KKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeURp
cmVjdGl2ZUxpc3Q6OnZpb2xhdGVkRGlyZWN0aXZlRm9yUGx1Z2luVHlwZSk6IEZvcm1lcmx5IG5h
bWVkIGFsbG93UGx1Z2luVHlwZS4KKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBv
bGljeURpcmVjdGl2ZUxpc3Q6OnZpb2xhdGVkRGlyZWN0aXZlRm9yU2NyaXB0KTogRm9ybWVybHkg
bmFtZWQgYWxsb3dTY3JpcHRGcm9tU291cmNlLgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudFNl
Y3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6dmlvbGF0ZWREaXJlY3RpdmVGb3JTdHlsZSk6IEZv
cm1lcmx5IG5hbWVkIGFsbG93U3R5bGVGcm9tU291cmNlLgorICAgICAgICAoV2ViQ29yZTo6Q29u
dGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6cGFyc2UpOiBVcGRhdGUgY29kZSB0byBt
YWtlIHVzZSBvZiBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lcyBjb25zdGFudHMu
CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0Ojpz
ZXRDU1BEaXJlY3RpdmUpOiBQYXNzIHx0aGlzfCBpbnN0ZWFkIG9mIHRoZSBDb250ZW50U2VjdXJp
dHlQb2xpY3kgb2JqZWN0LgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5
RGlyZWN0aXZlTGlzdDo6YWRkRGlyZWN0aXZlKTogVXBkYXRlIGNvZGUgdG8gbWFrZSB1c2Ugb2Yg
Q29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXMgY29uc3RhbnRzLgorICAgICAgICAo
V2ViQ29yZTo6aXNFeHBlcmltZW50YWxEaXJlY3RpdmVOYW1lKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OmlzQ1NQRGlyZWN0aXZlTmFtZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0OjpyZXBvcnRWaW9sYXRpb24pOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Y29uc29sZU1lc3NhZ2VGb3JWaW9sYXRpb24pOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZl
TGlzdDo6YWxsb3dKYXZhU2NyaXB0VVJMcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpD
b250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0OjphbGxvd0lubGluZUV2ZW50SGFuZGxl
cnMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5RGly
ZWN0aXZlTGlzdDo6YWxsb3dJbmxpbmVTY3JpcHQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6Q29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6YWxsb3dJbmxpbmVTY3JpcHRX
aXRoSGFzaCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xp
Y3lEaXJlY3RpdmVMaXN0OjphbGxvd1NjcmlwdFdpdGhOb25jZSk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0OjphbGxvd0lubGlu
ZVN0eWxlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGlj
eURpcmVjdGl2ZUxpc3Q6OmFsbG93SW5saW5lU3R5bGVXaXRoSGFzaCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0OjphbGxvd1N0
eWxlV2l0aE5vbmNlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0
eVBvbGljeURpcmVjdGl2ZUxpc3Q6OmFsbG93RXZhbCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0OjphbGxvd1BsdWdpblR5cGUp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0
aXZlTGlzdDo6YWxsb3dTY3JpcHRGcm9tU291cmNlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OmFsbG93T2JqZWN0RnJvbVNv
dXJjZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lE
aXJlY3RpdmVMaXN0OjphbGxvd0NoaWxkQ29udGV4dEZyb21Tb3VyY2UpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6YWxsb3dD
aGlsZEZyYW1lRnJvbVNvdXJjZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDb250ZW50
U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0OjphbGxvd0ltYWdlRnJvbVNvdXJjZSk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0
OjphbGxvd1N0eWxlRnJvbVNvdXJjZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDb250
ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0OjphbGxvd0ZvbnRGcm9tU291cmNlKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxp
c3Q6OmFsbG93TWVkaWFGcm9tU291cmNlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNv
bnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OmFsbG93Q29ubmVjdFRvU291cmNlKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2
ZUxpc3Q6OmFsbG93Rm9ybUFjdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDb250
ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0OjphbGxvd0Jhc2VVUkkpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6YWxs
b3dGcmFtZUFuY2VzdG9ycyk6IERlbGV0ZWQuCisgICAgICAgICogcGFnZS9jc3AvQ29udGVudFNl
Y3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdC5oOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudFNl
Y3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6ZGVmYXVsdFNyYyk6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6cG9saWN5KTogQWRk
ZWQuIEFsc28gYWRkZWQgRklYTUUgY29tbWVudCB0byByZW1vdmUgdGhpcyBmdW5jdGlvbi4gVGhp
cworICAgICAgICBmdW5jdGlvbiBpcyBvbmx5IHVzZWQgYnkgQ29udGVudFNlY3VyaXR5UG9saWN5
TWVkaWFMaXN0RGlyZWN0aXZlIHNvIHRoYXQgaXQgY2FuIGxvZyBhIGNvbnNvbGUgbWVzc2FnZSBv
biBhIHBhcnNpbmcgZXJyb3IuCisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xp
Y3lEaXJlY3RpdmVMaXN0OjpkZW55SWZFbmZvcmNpbmdQb2xpY3kpOiBEZWxldGVkLgorICAgICAg
ICAqIHBhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeU1lZGlhTGlzdERpcmVjdGl2ZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lNZWRpYUxpc3REaXJlY3Rp
dmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeU1lZGlhTGlzdERpcmVjdGl2ZSk6IE1vZGlmaWVkIHRv
IHRha2UgYSByZWZlcmVuY2UgdG8gdGhlCisgICAgICAgIGRpcmVjdGl2ZSBsaXN0IHRoYXQgY29u
dGFpbnMgdGhpcyBkaXJlY3RpdmUgaW5zdGVhZCBvZiBwb2ludGVyIHRvIGEgQ29udGVudFNlY3Vy
aXR5UG9saWN5IG9iamVjdC4KKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGlj
eU1lZGlhTGlzdERpcmVjdGl2ZTo6cGFyc2UpOiBVcGRhdGVkIGNvZGUgdG8gdXNlIENvbnRlbnRT
ZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OnBvbGljeSgpIGluc3RlYWQKKyAgICAgICAgb2Yg
Q29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlOjpwb2xpY3koKSBhcyB0aGUgbGF0dGVyIHdh
cyByZW1vdmVkLiBJZGVhbGx5IHRoaXMgY2xhc3Mgc2hvdWxkIG5vdCBuZWVkIHRvIHVzZSB0aGUg
Q29udGVudFNlY3VyaXR5UG9saWN5CisgICAgICAgIG9iamVjdCB0byBsb2cgYSBjb25zb2xlIG1l
c3NhZ2UuCisgICAgICAgICogcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5TWVkaWFMaXN0
RGlyZWN0aXZlLmg6CisgICAgICAgICogcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5U291
cmNlTGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc0V4cGVyaW1lbnRhbERpcmVjdGl2ZU5h
bWUpOiBNb3ZlZCBmcm9tIGZpbGUgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdC5j
cHAgYmVjYXVzZSB0aGlzIGZ1bmN0aW9uIGlzIG9ubHkgdXNlZAorICAgICAgICBpbiB0aGlzIGZp
bGUuCisgICAgICAgIChXZWJDb3JlOjppc0NTUERpcmVjdGl2ZU5hbWUpOiBEaXR0by4KKyAgICAg
ICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3Q6OmlzUHJvdG9jb2xB
bGxvd2VkQnlTdGFyKTogVXBkYXRlIGNvZGUgdG8gbWFrZSB1c2Ugb2YgQ29udGVudFNlY3VyaXR5
UG9saWN5RGlyZWN0aXZlTmFtZXMgY29uc3RhbnRzLgorICAgICAgICAqIHBhZ2UvY3NwL0NvbnRl
bnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3REaXJlY3RpdmUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdERpcmVjdGl2ZTo6Q29udGVudFNlY3Vy
aXR5UG9saWN5U291cmNlTGlzdERpcmVjdGl2ZSk6IE1vZGlmaWVkIHRvIHRha2UgYSByZWZlcmVu
Y2UgdG8KKyAgICAgICAgdGhlIGRpcmVjdGl2ZSBsaXN0IHRoYXQgY29udGFpbnMgdGhpcyBkaXJl
Y3RpdmUgaW5zdGVhZCBvZiBwb2ludGVyIHRvIGEgQ29udGVudFNlY3VyaXR5UG9saWN5IG9iamVj
dC4gCisgICAgICAgICogcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdERp
cmVjdGl2ZS5oOgorCiAyMDE2LTAzLTIzICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNv
bT4KIAogICAgICAgICBDU1A6IFNpbXBsaWZ5IGxvZ2ljIGZvciBjaGVja2luZyBwb2xpY2llcwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29y
ZS9DTWFrZUxpc3RzLnR4dAppbmRleCBiMzgyNmQyZTllOWQ4MDBjYWI4N2I3YTVmZjMyNDBmMjRm
ODI4MmFmLi4zMTM0NDhiMGExYzUwMGM5MTlmZDg4ZDgxZTg2MmUwZDNjOGQyNjA4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9D
TWFrZUxpc3RzLnR4dApAQCAtMjA3MSw3ICsyMDcxLDkgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwog
ICAgIHBhZ2UvYW5pbWF0aW9uL0tleWZyYW1lQW5pbWF0aW9uLmNwcAogCiAgICAgcGFnZS9jc3Av
Q29udGVudFNlY3VyaXR5UG9saWN5LmNwcAorICAgIHBhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBv
bGljeURpcmVjdGl2ZS5jcHAKICAgICBwYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lEaXJl
Y3RpdmVMaXN0LmNwcAorICAgIHBhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2
ZU5hbWVzLmNwcAogICAgIHBhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeU1lZGlhTGlzdERp
cmVjdGl2ZS5jcHAKICAgICBwYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhl
YWRlcnMuY3BwCiAgICAgcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlLmNwcApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IGExMmE5NzhkMGM3ZDc3OTk0MDIxZTk0NmVlNTdiOTM2Y2U3ZDk2MWYuLjU2MjUzOWRmMzhk
ZDZhM2Q2MjMyNjVjMTJjZGQwNmQwMmFjNTg4ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTYyMTMsNiArNjIxMyw4IEBACiAJ
CUNFMTI1MjUzMUExQkVDMDYwMDg2NDQ4MCAvKiBOU1N0cmluZ1NQSS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0UxMjUyNTIxQTFCRUMwNjAwODY0NDgw
IC8qIE5TU3RyaW5nU1BJLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJQ0UxMjUyNTUxQTFCRUMwRTAwODY0NDgwIC8qIE5TVVJMRG93bmxvYWRTUEku
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFMTI1MjU0
MUExQkVDMEUwMDg2NDQ4MCAvKiBOU1VSTERvd25sb2FkU1BJLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0UxMjUyNUIxQTFDMDE4MjAwODY0NDgw
IC8qIENGTmV0d29ya1NQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQ0UxMjUyNUExQTFDMDE4MjAwODY0NDgwIC8qIENGTmV0d29ya1NQSS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUNFMjg0OTg3MUNB
MzYwREYwMEI0QTU3RiAvKiBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lcy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0UyODQ5ODYxQ0Ez
NjBERjAwQjRBNTdGIC8qIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzLmggKi87
IH07CisJCUNFMjg0OTg5MUNBMzYxNDYwMEI0QTU3RiAvKiBDb250ZW50U2VjdXJpdHlQb2xpY3lE
aXJlY3RpdmVOYW1lcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDRTI4NDk4ODFDQTM2MTQ2MDBCNEE1N0YgLyogQ29udGVudFNlY3VyaXR5UG9saWN5
RGlyZWN0aXZlTmFtZXMuY3BwICovOyB9OwogCQlDRTZEQURGOTFDNTkxRTZBMDAzRjZBODggLyog
Q29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFNkRBREY3MUM1OTFFNkEwMDNGNkE4OCAv
KiBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMuY3BwICovOyB9OwogCQlDRTZE
QURGQTFDNTkxRTZBMDAzRjZBODggLyogQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFk
ZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTZE
QURGODFDNTkxRTZBMDAzRjZBODggLyogQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFk
ZXJzLmggKi87IH07CiAJCUNFNzk5Rjk3MUM2QTQ2QkMwMDk3QjUxOCAvKiBDb250ZW50U2VjdXJp
dHlQb2xpY3lTb3VyY2VMaXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IENFNzk5Rjk1MUM2QTQ2QkMwMDk3QjUxOCAvKiBDb250ZW50U2VjdXJpdHlQ
b2xpY3lTb3VyY2VMaXN0LmNwcCAqLzsgfTsKQEAgLTYyNTAsNiArNjI1Miw3IEBACiAJCUNFRUZD
RDdDMTlEQjMzREMwMDM4NzZENyAvKiBQbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFRUZDRDdCMTlEQjMz
REMwMDM4NzZENyAvKiBQbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXIuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDRUY0MThDRTExNzk2NzhDMDA5
RDExMkMgLyogVmlld3BvcnRBcmd1bWVudHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQ0VGNDE4Q0MxMTc5Njc4QzAwOUQxMTJDIC8qIFZpZXdwb3J0
QXJndW1lbnRzLmNwcCAqLzsgfTsKIAkJQ0VGNDE4Q0YxMTc5Njc4QzAwOUQxMTJDIC8qIFZpZXdw
b3J0QXJndW1lbnRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBDRUY0MThDRDExNzk2NzhDMDA5RDExMkMgLyogVmlld3BvcnRBcmd1bWVudHMuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlDRUY1OUIyNjFD
QTBFMTFEMDA1QzNFMTMgLyogQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFRjU5QjI1MUNBMEUx
MUQwMDVDM0UxMyAvKiBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmUuY3BwICovOyB9Owog
CQlEMDAwRUJBMjExQkRBRkQ0MDBDNDc3MjYgLyogRnJhbWVMb2FkZXJTdGF0ZU1hY2hpbmUuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRDAwMEVCQTAx
MUJEQUZENDAwQzQ3NzI2IC8qIEZyYW1lTG9hZGVyU3RhdGVNYWNoaW5lLmNwcCAqLzsgfTsKIAkJ
RDAwMEVCQTMxMUJEQUZENDAwQzQ3NzI2IC8qIEZyYW1lTG9hZGVyU3RhdGVNYWNoaW5lLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEMDAwRUJBMTExQkRB
RkQ0MDBDNDc3MjYgLyogRnJhbWVMb2FkZXJTdGF0ZU1hY2hpbmUuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlEMDAwRUQyNzExQzFCOUNEMDBDNDc3
MjYgLyogU3ViZnJhbWVMb2FkZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRDAwMEVEMjUxMUMxQjlDRDAwQzQ3NzI2IC8qIFN1YmZyYW1lTG9hZGVy
LmNwcCAqLzsgfTsKQEAgLTE0MjMyLDYgKzE0MjM1LDggQEAKIAkJQ0UxMjUyNTIxQTFCRUMwNjAw
ODY0NDgwIC8qIE5TU3RyaW5nU1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IE5TU3RyaW5nU1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFMTI1MjU0MUEx
QkVDMEUwMDg2NDQ4MCAvKiBOU1VSTERvd25sb2FkU1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IE5TVVJMRG93bmxvYWRTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQ0UxMjUyNUExQTFDMDE4MjAwODY0NDgwIC8qIENGTmV0d29ya1NQSS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDRk5ldHdvcmtTUEkuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQ0UyODQ5ODYxQ0EzNjBERjAwQjRBNTdGIC8qIENvbnRlbnRTZWN1cml0
eVBvbGljeURpcmVjdGl2ZU5hbWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9
IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzLmg7IHBhdGggPSBjc3AvQ29udGVu
dFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQ0UyODQ5ODgxQ0EzNjE0NjAwQjRBNTdGIC8qIENvbnRlbnRTZWN1cml0eVBvbGljeURp
cmVjdGl2ZU5hbWVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IENv
bnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzLmNwcDsgcGF0aCA9IGNzcC9Db250ZW50
U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUNFNUNCMUIzMTRFREFCNkYwMEJCMjc5NSAvKiBFdmVudFNlbmRlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFdmVudFNlbmRlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlDRTZEODkyOTRDN0FBQ0UwQUQ4OUIzREQgLyogTWF0aE1MTWVuY2xvc2VF
bGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hdGhNTE1lbmNsb3Nl
RWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRTZEQURGNzFDNTkxRTZB
MDAzRjZBODggLyogQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IENvbnRlbnRTZWN1cml0eVBvbGljeVJl
c3BvbnNlSGVhZGVycy5jcHA7IHBhdGggPSBjc3AvQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9u
c2VIZWFkZXJzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE0MjcxLDYgKzE0
Mjc2LDcgQEAKIAkJQ0VFRkNEN0IxOURCMzNEQzAwMzg3NkQ3IC8qIFBsYXRmb3JtTWVkaWFSZXNv
dXJjZUxvYWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQbGF0Zm9ybU1l
ZGlhUmVzb3VyY2VMb2FkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0VGNDE4
Q0MxMTc5Njc4QzAwOUQxMTJDIC8qIFZpZXdwb3J0QXJndW1lbnRzLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFZpZXdwb3J0QXJndW1lbnRzLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0VGNDE4Q0QxMTc5Njc4QzAwOUQxMTJDIC8qIFZpZXdwb3J0
QXJndW1lbnRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZpZXdwb3J0QXJn
dW1lbnRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNFRjU5QjI1MUNBMEUxMUQw
MDVDM0UxMyAvKiBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmUuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZl
LmNwcDsgcGF0aCA9IGNzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmUuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMDAwRUJBMDExQkRBRkQ0MDBDNDc3MjYgLyogRnJh
bWVMb2FkZXJTdGF0ZU1hY2hpbmUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gRnJhbWVMb2FkZXJTdGF0ZU1hY2hpbmUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlEMDAwRUJBMTExQkRBRkQ0MDBDNDc3MjYgLyogRnJhbWVMb2FkZXJTdGF0ZU1hY2hp
bmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRnJhbWVMb2FkZXJTdGF0ZU1h
Y2hpbmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDAwMEVEMjUxMUMxQjlDRDAw
QzQ3NzI2IC8qIFN1YmZyYW1lTG9hZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFN1YmZyYW1lTG9hZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTIzMTk1LDkgKzIzMjAxLDEyIEBACiAJCQljaGlsZHJlbiA9ICgKIAkJCQk5N0M0NzFEOTEy
RjkyNUJDMDA4NjM1NEIgLyogQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcCAqLywKIAkJCQk5N0M0
NzFEQTEyRjkyNUJEMDA4NjM1NEIgLyogQ29udGVudFNlY3VyaXR5UG9saWN5LmggKi8sCisJCQkJ
Q0VGNTlCMjUxQ0EwRTExRDAwNUMzRTEzIC8qIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2
ZS5jcHAgKi8sCiAJCQkJQ0U3OTlGQTIxQzZBNTAzQTAwOTdCNTE4IC8qIENvbnRlbnRTZWN1cml0
eVBvbGljeURpcmVjdGl2ZS5oICovLAogCQkJCUNFNzk5Rjk5MUM2QTRCQ0QwMDk3QjUxOCAvKiBD
b250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0LmNwcCAqLywKIAkJCQlDRTc5OUY5QTFD
NkE0QkNEMDA5N0I1MTggLyogQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdC5oICov
LAorCQkJCUNFMjg0OTg4MUNBMzYxNDYwMEI0QTU3RiAvKiBDb250ZW50U2VjdXJpdHlQb2xpY3lE
aXJlY3RpdmVOYW1lcy5jcHAgKi8sCisJCQkJQ0UyODQ5ODYxQ0EzNjBERjAwQjRBNTdGIC8qIENv
bnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzLmggKi8sCiAJCQkJQ0U3RTE3ODIxQzgz
QTQ5MTAwQUQwNkFGIC8qIENvbnRlbnRTZWN1cml0eVBvbGljeUhhc2guaCAqLywKIAkJCQlDRTc5
OUZBNTFDNkE1MDU3MDA5N0I1MTggLyogQ29udGVudFNlY3VyaXR5UG9saWN5TWVkaWFMaXN0RGly
ZWN0aXZlLmNwcCAqLywKIAkJCQlDRTc5OUZBNjFDNkE1MDU3MDA5N0I1MTggLyogQ29udGVudFNl
Y3VyaXR5UG9saWN5TWVkaWFMaXN0RGlyZWN0aXZlLmggKi8sCkBAIC0yNTI5OSw2ICsyNTMwOCw3
IEBACiAJCQkJOTdDNDcxREMxMkY5MjVCRDAwODYzNTRCIC8qIENvbnRlbnRTZWN1cml0eVBvbGlj
eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0U3OTlGQTQxQzZBNTAzQTAwOTdCNTE4IC8qIENvbnRl
bnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0U3OTlGOUMx
QzZBNEJDRDAwOTdCNTE4IC8qIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3QuaCBp
biBIZWFkZXJzICovLAorCQkJCUNFMjg0OTg3MUNBMzYwREYwMEI0QTU3RiAvKiBDb250ZW50U2Vj
dXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0U3RTE3ODMx
QzgzQTQ5MTAwQUQwNkFGIC8qIENvbnRlbnRTZWN1cml0eVBvbGljeUhhc2guaCBpbiBIZWFkZXJz
ICovLAogCQkJCUNFNzk5RkE4MUM2QTUwNTcwMDk3QjUxOCAvKiBDb250ZW50U2VjdXJpdHlQb2xp
Y3lNZWRpYUxpc3REaXJlY3RpdmUuaCBpbiBIZWFkZXJzICovLAogCQkJCUNFNkRBREZBMUM1OTFF
NkEwMDNGNkE4OCAvKiBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMuaCBpbiBI
ZWFkZXJzICovLApAQCAtMjkyMjYsNyArMjkyMzYsOSBAQAogCQkJCUExNDk3ODZFMUFCQUYzMzgw
MENFRjdFNCAvKiBDb250ZW50RmlsdGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUExNDA5MEZC
MUFBNTFFMUQwMDkxMTkxQSAvKiBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXJDb2NvYS5tbSBp
biBTb3VyY2VzICovLAogCQkJCTk3QzQ3MURCMTJGOTI1QkQwMDg2MzU0QiAvKiBDb250ZW50U2Vj
dXJpdHlQb2xpY3kuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQ0VGNTlCMjYxQ0EwRTExRDAwNUMz
RTEzIC8qIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlDRTc5OUY5QjFDNkE0QkNEMDA5N0I1MTggLyogQ29udGVudFNlY3VyaXR5UG9saWN5RGly
ZWN0aXZlTGlzdC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDRTI4NDk4OTFDQTM2MTQ2MDBCNEE1
N0YgLyogQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXMuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQ0U3OTlGQTcxQzZBNTA1NzAwOTdCNTE4IC8qIENvbnRlbnRTZWN1cml0eVBvbGlj
eU1lZGlhTGlzdERpcmVjdGl2ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDRTZEQURGOTFDNTkx
RTZBMDAzRjZBODggLyogQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUNFNzk5RjlGMUM2QTRDMTYwMDk3QjUxOCAvKiBDb250ZW50U2Vj
dXJpdHlQb2xpY3lTb3VyY2UuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcAppbmRleCAzNWFiMjgwMzFhYTI0
YTdmOTU2NWViMTk2YzQwMDQ2OTI1MGZjMDkwLi4zYmYxZmFmYzFlNDIzMjY3OGY5Yzk2YmU3ZWVl
OWE4OTgzYTU0MWMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50
U2VjdXJpdHlQb2xpY3kuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRT
ZWN1cml0eVBvbGljeS5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKIAogI2luY2x1ZGUgIkNvbnRlbnRT
ZWN1cml0eVBvbGljeURpcmVjdGl2ZS5oIgogI2luY2x1ZGUgIkNvbnRlbnRTZWN1cml0eVBvbGlj
eURpcmVjdGl2ZUxpc3QuaCIKKyNpbmNsdWRlICJDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3Rp
dmVOYW1lcy5oIgogI2luY2x1ZGUgIkNvbnRlbnRTZWN1cml0eVBvbGljeUhhc2guaCIKICNpbmNs
dWRlICJDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2UuaCIKICNpbmNsdWRlICJDb250ZW50U2Vj
dXJpdHlQb2xpY3lTb3VyY2VMaXN0LmgiCkBAIC01NCwxMiArNTUsMzcgQEAKICNpbmNsdWRlIDxp
bnNwZWN0b3IvU2NyaXB0Q2FsbFN0YWNrLmg+CiAjaW5jbHVkZSA8aW5zcGVjdG9yL1NjcmlwdENh
bGxTdGFja0ZhY3RvcnkuaD4KICNpbmNsdWRlIDx3dGYvVGVtcG9yYXJ5Q2hhbmdlLmg+CisjaW5j
bHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRQ
b3NpdGlvbi5oPgogCiB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKK3N0YXRpYyBTdHJpbmcgY29uc29sZU1lc3NhZ2VGb3JWaW9sYXRpb24oY29uc3Qg
Y2hhciogZWZmZWN0aXZlVmlvbGF0ZWREaXJlY3RpdmUsIGNvbnN0IENvbnRlbnRTZWN1cml0eVBv
bGljeURpcmVjdGl2ZSYgdmlvbGF0ZWREaXJlY3RpdmUsIGNvbnN0IFVSTCYgYmxvY2tlZFVSTCwg
Y29uc3QgY2hhciogcHJlZml4LCBjb25zdCBjaGFyKiBzdWJqZWN0ID0gIml0IikKK3sKKyAgICBT
dHJpbmdCdWlsZGVyIHJlc3VsdDsKKyAgICBpZiAodmlvbGF0ZWREaXJlY3RpdmUuZGlyZWN0aXZl
TGlzdCgpLmlzUmVwb3J0T25seSgpKQorICAgICAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgiW1Jl
cG9ydCBPbmx5XSAiKTsKKyAgICByZXN1bHQuYXBwZW5kKHByZWZpeCk7CisgICAgaWYgKCFibG9j
a2VkVVJMLmlzRW1wdHkoKSkgeworICAgICAgICByZXN1bHQuYXBwZW5kKCcgJyk7CisgICAgICAg
IHJlc3VsdC5hcHBlbmQoYmxvY2tlZFVSTC5zdHJpbmdDZW50ZXJFbGxpcHNpemVkVG9MZW5ndGgo
KSk7CisgICAgfQorICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFsKCIgYmVjYXVzZSAiKTsKKyAgICBy
ZXN1bHQuYXBwZW5kKHN1YmplY3QpOworICAgIGlmICh2aW9sYXRlZERpcmVjdGl2ZS5pc0RlZmF1
bHRTcmMoKSkgeworICAgICAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgiIGFwcGVhcnMgaW4gbmVp
dGhlciB0aGUgIik7CisgICAgICAgIHJlc3VsdC5hcHBlbmQoZWZmZWN0aXZlVmlvbGF0ZWREaXJl
Y3RpdmUpOworICAgICAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgiIGRpcmVjdGl2ZSBub3IgdGhl
IGRlZmF1bHQtc3JjIGRpcmVjdGl2ZSBvZiB0aGUgQ29udGVudCBTZWN1cml0eSBQb2xpY3kuIik7
CisgICAgfSBlbHNlIHsKKyAgICAgICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoIiBkb2VzIG5vdCBh
cHBlYXIgaW4gdGhlICIpOworICAgICAgICByZXN1bHQuYXBwZW5kKGVmZmVjdGl2ZVZpb2xhdGVk
RGlyZWN0aXZlKTsKKyAgICAgICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoIiBkaXJlY3RpdmUgb2Yg
dGhlIENvbnRlbnQgU2VjdXJpdHkgUG9saWN5LiIpOworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0
LnRvU3RyaW5nKCk7Cit9CisKIENvbnRlbnRTZWN1cml0eVBvbGljeTo6Q29udGVudFNlY3VyaXR5
UG9saWN5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCiAg
ICAgOiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQoJnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCiAg
ICAgLCBtX3NhbmRib3hGbGFncyhTYW5kYm94Tm9uZSkKQEAgLTEzMyw3ICsxNTksOCBAQCB2b2lk
IENvbnRlbnRTZWN1cml0eVBvbGljeTo6ZGlkUmVjZWl2ZUhlYWRlcihjb25zdCBTdHJpbmcmIGhl
YWRlciwgQ29udGVudFNlY3VyaQogICAgICAgICAvLyBoZWFkZXIxLGhlYWRlcjIgT1IgaGVhZGVy
MQogICAgICAgICAvLyAgICAgICAgXiAgICAgICAgICAgICAgICAgIF4KICAgICAgICAgc3RkOjp1
bmlxdWVfcHRyPENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q+IHBvbGljeSA9IENv
bnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OmNyZWF0ZSgqdGhpcywgU3RyaW5nKGJl
Z2luLCBwb3NpdGlvbiAtIGJlZ2luKSwgdHlwZSwgcG9saWN5RnJvbSk7Ci0gICAgICAgIGlmICgh
cG9saWN5LT5hbGxvd0V2YWwobnVsbHB0ciwgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZl
TGlzdDo6UmVwb3J0aW5nU3RhdHVzOjpTdXBwcmVzc1JlcG9ydCkpCisgICAgICAgIGNvbnN0IENv
bnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZSogdmlvbGF0ZWREaXJlY3RpdmUgPSBwb2xpY3kt
PnZpb2xhdGVkRGlyZWN0aXZlRm9yVW5zYWZlRXZhbCgpOworICAgICAgICBpZiAodmlvbGF0ZWRE
aXJlY3RpdmUgJiYgIXZpb2xhdGVkRGlyZWN0aXZlLT5kaXJlY3RpdmVMaXN0KCkuaXNSZXBvcnRP
bmx5KCkpCiAgICAgICAgICAgICBtX2xhc3RQb2xpY3lFdmFsRGlzYWJsZWRFcnJvck1lc3NhZ2Ug
PSBwb2xpY3ktPmV2YWxEaXNhYmxlZEVycm9yTWVzc2FnZSgpOwogCiAgICAgICAgIG1fcG9saWNp
ZXMuYXBwZW5kKHBvbGljeS5yZWxlYXNlKCkpOwpAQCAtMTg5LDggKzIxNiwxMSBAQCBzdGF0aWMg
Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG0gdG9DcnlwdG9EaWdlc3RBbGdvcml0aG0oQ29udGVudFNl
Y3VyaXR5UG9saWN5SGFzaAogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBQcmVkaWNhdGU+Ci1ib29s
IENvbnRlbnRTZWN1cml0eVBvbGljeTo6YWxsUG9saWNpZXNBbGxvd0hhc2hGcm9tQ29udGVudChQ
cmVkaWNhdGUmJiBwcmVkaWNhdGUsIGNvbnN0IFN0cmluZyYgY29udGVudCwgT3B0aW9uU2V0PENv
bnRlbnRTZWN1cml0eVBvbGljeUhhc2hBbGdvcml0aG0+IGFsZ29yaXRobXMpIGNvbnN0Citib29s
IENvbnRlbnRTZWN1cml0eVBvbGljeTo6Zm91bmRIYXNoT2ZDb250ZW50SW5BbGxQb2xpY2llcyhQ
cmVkaWNhdGUmJiBwcmVkaWNhdGUsIGNvbnN0IFN0cmluZyYgY29udGVudCwgT3B0aW9uU2V0PENv
bnRlbnRTZWN1cml0eVBvbGljeUhhc2hBbGdvcml0aG0+IGFsZ29yaXRobXMpIGNvbnN0CiB7Cisg
ICAgaWYgKGFsZ29yaXRobXMuaXNFbXB0eSgpIHx8IGNvbnRlbnQuaXNFbXB0eSgpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGNvbXB1dGUgdGhlIGRv
Y3VtZW50IGVuY29kaW5nIG9uY2UgYW5kIGNhY2hlIGl0IGluc3RlYWQgb2YgY29tcHV0aW5nIGl0
IG9uIGVhY2ggaW52b2NhdGlvbi4KICAgICBUZXh0RW5jb2RpbmcgZG9jdW1lbnRFbmNvZGluZzsK
ICAgICBpZiAoaXM8RG9jdW1lbnQ+KG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkpCkBAIC0yMDQs
NyArMjM0LDcgQEAgYm9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbFBvbGljaWVzQWxsb3dI
YXNoRnJvbUNvbnRlbnQoUHJlZGljYXRlJiYgcHJlZGljYXQKICAgICAgICAgYXV0byBjcnlwdG9E
aWdlc3QgPSBDcnlwdG9EaWdlc3Q6OmNyZWF0ZSh0b0NyeXB0b0RpZ2VzdEFsZ29yaXRobShhbGdv
cml0aG0pKTsKICAgICAgICAgY3J5cHRvRGlnZXN0LT5hZGRCeXRlcyhjb250ZW50Q1N0cmluZy5k
YXRhKCksIGNvbnRlbnRDU3RyaW5nLmxlbmd0aCgpKTsKICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+
IGRpZ2VzdCA9IGNyeXB0b0RpZ2VzdC0+Y29tcHV0ZUhhc2goKTsKLSAgICAgICAgaWYgKGFsbFBv
bGljaWVzQWxsb3coc3RkOjpmb3J3YXJkPFByZWRpY2F0ZT4ocHJlZGljYXRlKSwgc3RkOjptYWtl
X3BhaXIoYWxnb3JpdGhtLCBkaWdlc3QpKSkKKyAgICAgICAgaWYgKCF2aW9sYXRlZERpcmVjdGl2
ZUluQW55UG9saWN5KHN0ZDo6Zm9yd2FyZDxQcmVkaWNhdGU+KHByZWRpY2F0ZSksIHN0ZDo6bWFr
ZV9wYWlyKGFsZ29yaXRobSwgZGlnZXN0KSkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICB9CiAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjE0LDE0ICsyNDQsMzAgQEAgYm9vbCBDb250ZW50
U2VjdXJpdHlQb2xpY3k6OmFsbG93SmF2YVNjcmlwdFVSTHMoY29uc3QgU3RyaW5nJiBjb250ZXh0
VVJMLCBjb25zdAogewogICAgIGlmIChvdmVycmlkZUNvbnRlbnRTZWN1cml0eVBvbGljeSkKICAg
ICAgICAgcmV0dXJuIHRydWU7Ci0gICAgcmV0dXJuIGFsbFBvbGljaWVzQWxsb3coJkNvbnRlbnRT
ZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OmFsbG93SmF2YVNjcmlwdFVSTHMsIGNvbnRleHRV
UkwsIGNvbnRleHRMaW5lLCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0OjpSZXBv
cnRpbmdTdGF0dXM6OlNlbmRSZXBvcnQpOworICAgIGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGlj
eURpcmVjdGl2ZSogdmlvbGF0ZWREaXJlY3RpdmUgPSB2aW9sYXRlZERpcmVjdGl2ZUluQW55UG9s
aWN5KCZDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0Ojp2aW9sYXRlZERpcmVjdGl2
ZUZvclVuc2FmZUlubGluZVNjcmlwdCk7CisgICAgaWYgKCF2aW9sYXRlZERpcmVjdGl2ZSkKKyAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgU3RyaW5nIGNvbnNvbGVNZXNzYWdlID0gY29uc29sZU1l
c3NhZ2VGb3JWaW9sYXRpb24oQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXM6OnNj
cmlwdFNyYywgKnZpb2xhdGVkRGlyZWN0aXZlLCBVUkwoKSwgIlJlZnVzZWQgdG8gZXhlY3V0ZSBh
IHNjcmlwdCIsICJpdHMgaGFzaCwgaXRzIG5vbmNlLCBvciAndW5zYWZlLWlubGluZSciKTsKKyAg
ICByZXBvcnRWaW9sYXRpb24oQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXM6OnNj
cmlwdFNyYywgKnZpb2xhdGVkRGlyZWN0aXZlLCBVUkwoKSwgY29uc29sZU1lc3NhZ2UsIGNvbnRl
eHRVUkwsIFRleHRQb3NpdGlvbihjb250ZXh0TGluZSwgV1RGOjpPcmRpbmFsTnVtYmVyKCkpKTsK
KyAgICBib29sIGlzUmVwb3J0T25seSA9IHZpb2xhdGVkRGlyZWN0aXZlLT5kaXJlY3RpdmVMaXN0
KCkuaXNSZXBvcnRPbmx5KCk7CisgICAgaWYgKCFpc1JlcG9ydE9ubHkpCisgICAgICAgIHJlcG9y
dEJsb2NrZWRTY3JpcHRFeGVjdXRpb25Ub0luc3BlY3Rvcih2aW9sYXRlZERpcmVjdGl2ZS0+dGV4
dCgpKTsKKyAgICByZXR1cm4gaXNSZXBvcnRPbmx5OwogfQogCiBib29sIENvbnRlbnRTZWN1cml0
eVBvbGljeTo6YWxsb3dJbmxpbmVFdmVudEhhbmRsZXJzKGNvbnN0IFN0cmluZyYgY29udGV4dFVS
TCwgY29uc3QgV1RGOjpPcmRpbmFsTnVtYmVyJiBjb250ZXh0TGluZSwgYm9vbCBvdmVycmlkZUNv
bnRlbnRTZWN1cml0eVBvbGljeSkgY29uc3QKIHsKICAgICBpZiAob3ZlcnJpZGVDb250ZW50U2Vj
dXJpdHlQb2xpY3kpCiAgICAgICAgIHJldHVybiB0cnVlOwotICAgIHJldHVybiBhbGxQb2xpY2ll
c0FsbG93KCZDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0OjphbGxvd0lubGluZUV2
ZW50SGFuZGxlcnMsIGNvbnRleHRVUkwsIGNvbnRleHRMaW5lLCBDb250ZW50U2VjdXJpdHlQb2xp
Y3lEaXJlY3RpdmVMaXN0OjpSZXBvcnRpbmdTdGF0dXM6OlNlbmRSZXBvcnQpOworICAgIGNvbnN0
IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZSogdmlvbGF0ZWREaXJlY3RpdmUgPSB2aW9s
YXRlZERpcmVjdGl2ZUluQW55UG9saWN5KCZDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVM
aXN0Ojp2aW9sYXRlZERpcmVjdGl2ZUZvclVuc2FmZUlubGluZVNjcmlwdCk7CisgICAgaWYgKCF2
aW9sYXRlZERpcmVjdGl2ZSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgU3RyaW5nIGNvbnNv
bGVNZXNzYWdlID0gY29uc29sZU1lc3NhZ2VGb3JWaW9sYXRpb24oQ29udGVudFNlY3VyaXR5UG9s
aWN5RGlyZWN0aXZlTmFtZXM6OnNjcmlwdFNyYywgKnZpb2xhdGVkRGlyZWN0aXZlLCBVUkwoKSwg
IlJlZnVzZWQgdG8gZXhlY3V0ZSBhIHNjcmlwdCIsICJpdHMgaGFzaCwgaXRzIG5vbmNlLCBvciAn
dW5zYWZlLWlubGluZSciKTsKKyAgICByZXBvcnRWaW9sYXRpb24oQ29udGVudFNlY3VyaXR5UG9s
aWN5RGlyZWN0aXZlTmFtZXM6OnNjcmlwdFNyYywgKnZpb2xhdGVkRGlyZWN0aXZlLCBVUkwoKSwg
Y29uc29sZU1lc3NhZ2UsIGNvbnRleHRVUkwsIFRleHRQb3NpdGlvbihjb250ZXh0TGluZSwgV1RG
OjpPcmRpbmFsTnVtYmVyKCkpKTsKKyAgICBib29sIGlzUmVwb3J0T25seSA9IHZpb2xhdGVkRGly
ZWN0aXZlLT5kaXJlY3RpdmVMaXN0KCkuaXNSZXBvcnRPbmx5KCk7CisgICAgaWYgKCFpc1JlcG9y
dE9ubHkpCisgICAgICAgIHJlcG9ydEJsb2NrZWRTY3JpcHRFeGVjdXRpb25Ub0luc3BlY3Rvcih2
aW9sYXRlZERpcmVjdGl2ZS0+dGV4dCgpKTsKKyAgICByZXR1cm4gaXNSZXBvcnRPbmx5OwogfQog
CiBib29sIENvbnRlbnRTZWN1cml0eVBvbGljeTo6YWxsb3dTY3JpcHRXaXRoTm9uY2UoY29uc3Qg
U3RyaW5nJiBub25jZSwgYm9vbCBvdmVycmlkZUNvbnRlbnRTZWN1cml0eVBvbGljeSkgY29uc3QK
QEAgLTIzMSw5ICsyNzcsNyBAQCBib29sIENvbnRlbnRTZWN1cml0eVBvbGljeTo6YWxsb3dTY3Jp
cHRXaXRoTm9uY2UoY29uc3QgU3RyaW5nJiBub25jZSwgYm9vbCBvdmVycgogICAgIFN0cmluZyBz
dHJpcHBlZE5vbmNlID0gc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3BhY2VzKG5vbmNlKTsK
ICAgICBpZiAoc3RyaXBwZWROb25jZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICBpZiAoYWxsUG9saWNpZXNBbGxvdygmQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZl
TGlzdDo6YWxsb3dTY3JpcHRXaXRoTm9uY2UsIHN0cmlwcGVkTm9uY2UpKQotICAgICAgICByZXR1
cm4gdHJ1ZTsKLSAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuICF2aW9sYXRlZERpcmVjdGl2
ZUluQW55UG9saWN5KCZDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0Ojp2aW9sYXRl
ZERpcmVjdGl2ZUZvclNjcmlwdE5vbmNlLCBzdHJpcHBlZE5vbmNlKTsKIH0KIAogYm9vbCBDb250
ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93U3R5bGVXaXRoTm9uY2UoY29uc3QgU3RyaW5nJiBub25j
ZSwgYm9vbCBvdmVycmlkZUNvbnRlbnRTZWN1cml0eVBvbGljeSkgY29uc3QKQEAgLTI0MywxOSAr
Mjg3LDI0IEBAIGJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5OjphbGxvd1N0eWxlV2l0aE5vbmNl
KGNvbnN0IFN0cmluZyYgbm9uY2UsIGJvb2wgb3ZlcnJpCiAgICAgU3RyaW5nIHN0cmlwcGVkTm9u
Y2UgPSBzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hUTUxTcGFjZXMobm9uY2UpOwogICAgIGlmIChz
dHJpcHBlZE5vbmNlLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChh
bGxQb2xpY2llc0FsbG93KCZDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0OjphbGxv
d1N0eWxlV2l0aE5vbmNlLCBzdHJpcHBlZE5vbmNlKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0g
ICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiAhdmlvbGF0ZWREaXJlY3RpdmVJbkFueVBvbGlj
eSgmQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6dmlvbGF0ZWREaXJlY3RpdmVG
b3JTdHlsZU5vbmNlLCBzdHJpcHBlZE5vbmNlKTsKIH0KIAogYm9vbCBDb250ZW50U2VjdXJpdHlQ
b2xpY3k6OmFsbG93SW5saW5lU2NyaXB0KGNvbnN0IFN0cmluZyYgY29udGV4dFVSTCwgY29uc3Qg
V1RGOjpPcmRpbmFsTnVtYmVyJiBjb250ZXh0TGluZSwgY29uc3QgU3RyaW5nJiBzY3JpcHRDb250
ZW50LCBib29sIG92ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9saWN5KSBjb25zdAogewogICAgIGlm
IChvdmVycmlkZUNvbnRlbnRTZWN1cml0eVBvbGljeSkKICAgICAgICAgcmV0dXJuIHRydWU7Ci0g
ICAgaWYgKCFtX2hhc2hBbGdvcml0aG1zRm9ySW5saW5lU2NyaXB0cy5pc0VtcHR5KCkgJiYgIXNj
cmlwdENvbnRlbnQuaXNFbXB0eSgpCi0gICAgICAgICYmIGFsbFBvbGljaWVzQWxsb3dIYXNoRnJv
bUNvbnRlbnQoJkNvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OmFsbG93SW5saW5l
U2NyaXB0V2l0aEhhc2gsIHNjcmlwdENvbnRlbnQsIG1faGFzaEFsZ29yaXRobXNGb3JJbmxpbmVT
Y3JpcHRzKSkKKyAgICBpZiAoZm91bmRIYXNoT2ZDb250ZW50SW5BbGxQb2xpY2llcygmQ29udGVu
dFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6dmlvbGF0ZWREaXJlY3RpdmVGb3JTY3JpcHRI
YXNoLCBzY3JpcHRDb250ZW50LCBtX2hhc2hBbGdvcml0aG1zRm9ySW5saW5lU2NyaXB0cykpCisg
ICAgICAgIHJldHVybiB0cnVlOworICAgIGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVj
dGl2ZSogdmlvbGF0ZWREaXJlY3RpdmUgPSB2aW9sYXRlZERpcmVjdGl2ZUluQW55UG9saWN5KCZD
b250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0Ojp2aW9sYXRlZERpcmVjdGl2ZUZvclVu
c2FmZUlubGluZVNjcmlwdCk7CisgICAgaWYgKCF2aW9sYXRlZERpcmVjdGl2ZSkKICAgICAgICAg
cmV0dXJuIHRydWU7Ci0gICAgcmV0dXJuIGFsbFBvbGljaWVzQWxsb3coJkNvbnRlbnRTZWN1cml0
eVBvbGljeURpcmVjdGl2ZUxpc3Q6OmFsbG93SW5saW5lU2NyaXB0LCBjb250ZXh0VVJMLCBjb250
ZXh0TGluZSwgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6UmVwb3J0aW5nU3Rh
dHVzOjpTZW5kUmVwb3J0KTsKKyAgICBTdHJpbmcgY29uc29sZU1lc3NhZ2UgPSBjb25zb2xlTWVz
c2FnZUZvclZpb2xhdGlvbihDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lczo6c2Ny
aXB0U3JjLCAqdmlvbGF0ZWREaXJlY3RpdmUsIFVSTCgpLCAiUmVmdXNlZCB0byBleGVjdXRlIGEg
c2NyaXB0IiwgIml0cyBoYXNoLCBpdHMgbm9uY2UsIG9yICd1bnNhZmUtaW5saW5lJyIpOworICAg
IHJlcG9ydFZpb2xhdGlvbihDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lczo6c2Ny
aXB0U3JjLCAqdmlvbGF0ZWREaXJlY3RpdmUsIFVSTCgpLCBjb25zb2xlTWVzc2FnZSwgY29udGV4
dFVSTCwgVGV4dFBvc2l0aW9uKGNvbnRleHRMaW5lLCBXVEY6Ok9yZGluYWxOdW1iZXIoKSkpOwor
ICAgIGJvb2wgaXNSZXBvcnRPbmx5ID0gdmlvbGF0ZWREaXJlY3RpdmUtPmRpcmVjdGl2ZUxpc3Qo
KS5pc1JlcG9ydE9ubHkoKTsKKyAgICBpZiAoIWlzUmVwb3J0T25seSkKKyAgICAgICAgcmVwb3J0
QmxvY2tlZFNjcmlwdEV4ZWN1dGlvblRvSW5zcGVjdG9yKHZpb2xhdGVkRGlyZWN0aXZlLT50ZXh0
KCkpOworICAgIHJldHVybiBpc1JlcG9ydE9ubHk7CiB9CiAKIGJvb2wgQ29udGVudFNlY3VyaXR5
UG9saWN5OjphbGxvd0lubGluZVN0eWxlKGNvbnN0IFN0cmluZyYgY29udGV4dFVSTCwgY29uc3Qg
V1RGOjpPcmRpbmFsTnVtYmVyJiBjb250ZXh0TGluZSwgY29uc3QgU3RyaW5nJiBzdHlsZUNvbnRl
bnQsIGJvb2wgb3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3kpIGNvbnN0CkBAIC0yNjQsMTcg
KzMxMywyOSBAQCBib29sIENvbnRlbnRTZWN1cml0eVBvbGljeTo6YWxsb3dJbmxpbmVTdHlsZShj
b25zdCBTdHJpbmcmIGNvbnRleHRVUkwsIGNvbnN0IFdURgogICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICBpZiAobV9vdmVycmlkZUlubGluZVN0eWxlQWxsb3dlZCkKICAgICAgICAgcmV0dXJuIHRy
dWU7Ci0gICAgaWYgKCFtX2hhc2hBbGdvcml0aG1zRm9ySW5saW5lU3R5bGVzaGVldHMuaXNFbXB0
eSgpICYmICFzdHlsZUNvbnRlbnQuaXNFbXB0eSgpCi0gICAgICAgICYmIGFsbFBvbGljaWVzQWxs
b3dIYXNoRnJvbUNvbnRlbnQoJkNvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OmFs
bG93SW5saW5lU3R5bGVXaXRoSGFzaCwgc3R5bGVDb250ZW50LCBtX2hhc2hBbGdvcml0aG1zRm9y
SW5saW5lU3R5bGVzaGVldHMpKQorICAgIGlmIChmb3VuZEhhc2hPZkNvbnRlbnRJbkFsbFBvbGlj
aWVzKCZDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0Ojp2aW9sYXRlZERpcmVjdGl2
ZUZvclN0eWxlSGFzaCwgc3R5bGVDb250ZW50LCBtX2hhc2hBbGdvcml0aG1zRm9ySW5saW5lU3R5
bGVzaGVldHMpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICByZXR1cm4gYWxsUG9saWNpZXNB
bGxvdygmQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6YWxsb3dJbmxpbmVTdHls
ZSwgY29udGV4dFVSTCwgY29udGV4dExpbmUsIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2
ZUxpc3Q6OlJlcG9ydGluZ1N0YXR1czo6U2VuZFJlcG9ydCk7CisgICAgY29uc3QgQ29udGVudFNl
Y3VyaXR5UG9saWN5RGlyZWN0aXZlKiB2aW9sYXRlZERpcmVjdGl2ZSA9IHZpb2xhdGVkRGlyZWN0
aXZlSW5BbnlQb2xpY3koJkNvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OnZpb2xh
dGVkRGlyZWN0aXZlRm9yVW5zYWZlSW5saW5lU3R5bGUpOworICAgIGlmICghdmlvbGF0ZWREaXJl
Y3RpdmUpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIFN0cmluZyBjb25zb2xlTWVzc2FnZSA9
IGNvbnNvbGVNZXNzYWdlRm9yVmlvbGF0aW9uKENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2
ZU5hbWVzOjpzdHlsZVNyYywgKnZpb2xhdGVkRGlyZWN0aXZlLCBVUkwoKSwgIlJlZnVzZWQgdG8g
YXBwbHkgYSBzdHlsZXNoZWV0IiwgIml0cyBoYXNoLCBpdHMgbm9uY2UsIG9yICd1bnNhZmUtaW5s
aW5lJyIpOworICAgIHJlcG9ydFZpb2xhdGlvbihDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3Rp
dmVOYW1lczo6c3R5bGVTcmMsICp2aW9sYXRlZERpcmVjdGl2ZSwgVVJMKCksIGNvbnNvbGVNZXNz
YWdlLCBjb250ZXh0VVJMLCBUZXh0UG9zaXRpb24oY29udGV4dExpbmUsIFdURjo6T3JkaW5hbE51
bWJlcigpKSk7CisgICAgcmV0dXJuIHZpb2xhdGVkRGlyZWN0aXZlLT5kaXJlY3RpdmVMaXN0KCku
aXNSZXBvcnRPbmx5KCk7CiB9CiAKIGJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5OjphbGxvd0V2
YWwoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBib29sIG92ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9s
aWN5KSBjb25zdAogewogICAgIGlmIChvdmVycmlkZUNvbnRlbnRTZWN1cml0eVBvbGljeSkKICAg
ICAgICAgcmV0dXJuIHRydWU7Ci0gICAgcmV0dXJuIGFsbFBvbGljaWVzQWxsb3coJkNvbnRlbnRT
ZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OmFsbG93RXZhbCwgc3RhdGUsIENvbnRlbnRTZWN1
cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OlJlcG9ydGluZ1N0YXR1czo6U2VuZFJlcG9ydCk7Cisg
ICAgY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlKiB2aW9sYXRlZERpcmVjdGl2
ZSA9IHZpb2xhdGVkRGlyZWN0aXZlSW5BbnlQb2xpY3koJkNvbnRlbnRTZWN1cml0eVBvbGljeURp
cmVjdGl2ZUxpc3Q6OnZpb2xhdGVkRGlyZWN0aXZlRm9yVW5zYWZlRXZhbCk7CisgICAgaWYgKCF2
aW9sYXRlZERpcmVjdGl2ZSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgU3RyaW5nIGNvbnNv
bGVNZXNzYWdlID0gY29uc29sZU1lc3NhZ2VGb3JWaW9sYXRpb24oQ29udGVudFNlY3VyaXR5UG9s
aWN5RGlyZWN0aXZlTmFtZXM6OnNjcmlwdFNyYywgKnZpb2xhdGVkRGlyZWN0aXZlLCBVUkwoKSwg
IlJlZnVzZWQgdG8gZXhlY3V0ZSBhIHNjcmlwdCIsICIndW5zYWZlLWV2YWwnIik7CisgICAgcmVw
b3J0VmlvbGF0aW9uKENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzOjpzY3JpcHRT
cmMsICp2aW9sYXRlZERpcmVjdGl2ZSwgVVJMKCksIGNvbnNvbGVNZXNzYWdlLCBzdGF0ZSk7Cisg
ICAgYm9vbCBpc1JlcG9ydE9ubHkgPSB2aW9sYXRlZERpcmVjdGl2ZS0+ZGlyZWN0aXZlTGlzdCgp
LmlzUmVwb3J0T25seSgpOworICAgIGlmICghaXNSZXBvcnRPbmx5KQorICAgICAgICByZXBvcnRC
bG9ja2VkU2NyaXB0RXhlY3V0aW9uVG9JbnNwZWN0b3IodmlvbGF0ZWREaXJlY3RpdmUtPnRleHQo
KSk7CisgICAgcmV0dXJuIGlzUmVwb3J0T25seTsKIH0KIAogYm9vbCBDb250ZW50U2VjdXJpdHlQ
b2xpY3k6OmFsbG93RnJhbWVBbmNlc3RvcnMoY29uc3QgRnJhbWUmIGZyYW1lLCBjb25zdCBVUkwm
IHVybCwgYm9vbCBvdmVycmlkZUNvbnRlbnRTZWN1cml0eVBvbGljeSkgY29uc3QKQEAgLTI4NCwx
NCArMzQ1LDI0IEBAIGJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5OjphbGxvd0ZyYW1lQW5jZXN0
b3JzKGNvbnN0IEZyYW1lJiBmcmFtZSwgY29uc3QgVVJMJiB1CiAgICAgRnJhbWUmIHRvcEZyYW1l
ID0gZnJhbWUudHJlZSgpLnRvcCgpOwogICAgIGlmICgmZnJhbWUgPT0gJnRvcEZyYW1lKQogICAg
ICAgICByZXR1cm4gdHJ1ZTsKLSAgICByZXR1cm4gYWxsUG9saWNpZXNBbGxvdygmQ29udGVudFNl
Y3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6YWxsb3dGcmFtZUFuY2VzdG9ycywgZnJhbWUsIHVy
bCwgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6UmVwb3J0aW5nU3RhdHVzOjpT
ZW5kUmVwb3J0KTsKKyAgICBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmUqIHZp
b2xhdGVkRGlyZWN0aXZlID0gdmlvbGF0ZWREaXJlY3RpdmVJbkFueVBvbGljeSgmQ29udGVudFNl
Y3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6dmlvbGF0ZWREaXJlY3RpdmVGb3JGcmFtZUFuY2Vz
dG9yLCBmcmFtZSk7CisgICAgaWYgKCF2aW9sYXRlZERpcmVjdGl2ZSkKKyAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgU3RyaW5nIGNvbnNvbGVNZXNzYWdlID0gY29uc29sZU1lc3NhZ2VGb3JWaW9s
YXRpb24oQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXM6OmZyYW1lQW5jZXN0b3Jz
LCAqdmlvbGF0ZWREaXJlY3RpdmUsIHVybCwgIlJlZnVzZWQgdG8gbG9hZCIpOworICAgIHJlcG9y
dFZpb2xhdGlvbihDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lczo6ZnJhbWVBbmNl
c3RvcnMsICp2aW9sYXRlZERpcmVjdGl2ZSwgdXJsLCBjb25zb2xlTWVzc2FnZSwgU3RyaW5nKCks
IFRleHRQb3NpdGlvbihXVEY6Ok9yZGluYWxOdW1iZXI6OmJlZm9yZUZpcnN0KCksIFdURjo6T3Jk
aW5hbE51bWJlcigpKSk7CisgICAgcmV0dXJuIHZpb2xhdGVkRGlyZWN0aXZlLT5kaXJlY3RpdmVM
aXN0KCkuaXNSZXBvcnRPbmx5KCk7CiB9CiAKIGJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5Ojph
bGxvd1BsdWdpblR5cGUoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIHR5cGVBdHRy
aWJ1dGUsIGNvbnN0IFVSTCYgdXJsLCBib29sIG92ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9saWN5
KSBjb25zdAogewogICAgIGlmIChvdmVycmlkZUNvbnRlbnRTZWN1cml0eVBvbGljeSkKICAgICAg
ICAgcmV0dXJuIHRydWU7Ci0gICAgcmV0dXJuIGFsbFBvbGljaWVzQWxsb3coJkNvbnRlbnRTZWN1
cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OmFsbG93UGx1Z2luVHlwZSwgdHlwZSwgdHlwZUF0dHJp
YnV0ZSwgdXJsLCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0OjpSZXBvcnRpbmdT
dGF0dXM6OlNlbmRSZXBvcnQpOworICAgIGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVj
dGl2ZSogdmlvbGF0ZWREaXJlY3RpdmUgPSB2aW9sYXRlZERpcmVjdGl2ZUluQW55UG9saWN5KCZD
b250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0Ojp2aW9sYXRlZERpcmVjdGl2ZUZvclBs
dWdpblR5cGUsIHR5cGUsIHR5cGVBdHRyaWJ1dGUpOworICAgIGlmICghdmlvbGF0ZWREaXJlY3Rp
dmUpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIFN0cmluZyBjb25zb2xlTWVzc2FnZSA9IGNv
bnNvbGVNZXNzYWdlRm9yVmlvbGF0aW9uKENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5h
bWVzOjpwbHVnaW5UeXBlcywgKnZpb2xhdGVkRGlyZWN0aXZlLCB1cmwsICJSZWZ1c2VkIHRvIGxv
YWQiLCAiaXRzIE1JTUUgdHlwZSIpOworICAgIHJlcG9ydFZpb2xhdGlvbihDb250ZW50U2VjdXJp
dHlQb2xpY3lEaXJlY3RpdmVOYW1lczo6cGx1Z2luVHlwZXMsICp2aW9sYXRlZERpcmVjdGl2ZSwg
dXJsLCBjb25zb2xlTWVzc2FnZSwgU3RyaW5nKCksIFRleHRQb3NpdGlvbihXVEY6Ok9yZGluYWxO
dW1iZXI6OmJlZm9yZUZpcnN0KCksIFdURjo6T3JkaW5hbE51bWJlcigpKSk7CisgICAgcmV0dXJu
IHZpb2xhdGVkRGlyZWN0aXZlLT5kaXJlY3RpdmVMaXN0KCkuaXNSZXBvcnRPbmx5KCk7CiB9CiAK
IGJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5OjphbGxvd1NjcmlwdEZyb21Tb3VyY2UoY29uc3Qg
VVJMJiB1cmwsIGJvb2wgb3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3kpIGNvbnN0CkBAIC0z
MDAsNyArMzcxLDEyIEBAIGJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5OjphbGxvd1NjcmlwdEZy
b21Tb3VyY2UoY29uc3QgVVJMJiB1cmwsIGJvb2wgb3ZlcnJpZGVDCiAgICAgICAgIHJldHVybiB0
cnVlOwogICAgIGlmIChTY2hlbWVSZWdpc3RyeTo6c2NoZW1lU2hvdWxkQnlwYXNzQ29udGVudFNl
Y3VyaXR5UG9saWN5KHVybC5wcm90b2NvbCgpKSkKICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAg
cmV0dXJuIGFsbFBvbGljaWVzQWxsb3coJkNvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxp
c3Q6OmFsbG93U2NyaXB0RnJvbVNvdXJjZSwgdXJsLCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJl
Y3RpdmVMaXN0OjpSZXBvcnRpbmdTdGF0dXM6OlNlbmRSZXBvcnQpOworICAgIGNvbnN0IENvbnRl
bnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZSogdmlvbGF0ZWREaXJlY3RpdmUgPSB2aW9sYXRlZERp
cmVjdGl2ZUluQW55UG9saWN5KCZDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0Ojp2
aW9sYXRlZERpcmVjdGl2ZUZvclNjcmlwdCwgdXJsKTsKKyAgICBpZiAoIXZpb2xhdGVkRGlyZWN0
aXZlKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBTdHJpbmcgY29uc29sZU1lc3NhZ2UgPSBj
b25zb2xlTWVzc2FnZUZvclZpb2xhdGlvbihDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVO
YW1lczo6c2NyaXB0U3JjLCAqdmlvbGF0ZWREaXJlY3RpdmUsIHVybCwgIlJlZnVzZWQgdG8gbG9h
ZCIpOworICAgIHJlcG9ydFZpb2xhdGlvbihDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVO
YW1lczo6c2NyaXB0U3JjLCAqdmlvbGF0ZWREaXJlY3RpdmUsIHVybCwgY29uc29sZU1lc3NhZ2Us
IFN0cmluZygpLCBUZXh0UG9zaXRpb24oV1RGOjpPcmRpbmFsTnVtYmVyOjpiZWZvcmVGaXJzdCgp
LCBXVEY6Ok9yZGluYWxOdW1iZXIoKSkpOworICAgIHJldHVybiB2aW9sYXRlZERpcmVjdGl2ZS0+
ZGlyZWN0aXZlTGlzdCgpLmlzUmVwb3J0T25seSgpOwogfQogCiBib29sIENvbnRlbnRTZWN1cml0
eVBvbGljeTo6YWxsb3dPYmplY3RGcm9tU291cmNlKGNvbnN0IFVSTCYgdXJsLCBib29sIG92ZXJy
aWRlQ29udGVudFNlY3VyaXR5UG9saWN5KSBjb25zdApAQCAtMzA5LDcgKzM4NSwxMiBAQCBib29s
IENvbnRlbnRTZWN1cml0eVBvbGljeTo6YWxsb3dPYmplY3RGcm9tU291cmNlKGNvbnN0IFVSTCYg
dXJsLCBib29sIG92ZXJyaWRlQwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBpZiAoU2NoZW1l
UmVnaXN0cnk6OnNjaGVtZVNob3VsZEJ5cGFzc0NvbnRlbnRTZWN1cml0eVBvbGljeSh1cmwucHJv
dG9jb2woKSkpCiAgICAgICAgIHJldHVybiB0cnVlOwotICAgIHJldHVybiBhbGxQb2xpY2llc0Fs
bG93KCZDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0OjphbGxvd09iamVjdEZyb21T
b3VyY2UsIHVybCwgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6UmVwb3J0aW5n
U3RhdHVzOjpTZW5kUmVwb3J0KTsKKyAgICBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJl
Y3RpdmUqIHZpb2xhdGVkRGlyZWN0aXZlID0gdmlvbGF0ZWREaXJlY3RpdmVJbkFueVBvbGljeSgm
Q29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6dmlvbGF0ZWREaXJlY3RpdmVGb3JP
YmplY3RTb3VyY2UsIHVybCk7CisgICAgaWYgKCF2aW9sYXRlZERpcmVjdGl2ZSkKKyAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgU3RyaW5nIGNvbnNvbGVNZXNzYWdlID0gY29uc29sZU1lc3NhZ2VG
b3JWaW9sYXRpb24oQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXM6Om9iamVjdFNy
YywgKnZpb2xhdGVkRGlyZWN0aXZlLCB1cmwsICJSZWZ1c2VkIHRvIGxvYWQiKTsKKyAgICByZXBv
cnRWaW9sYXRpb24oQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXM6Om9iamVjdFNy
YywgKnZpb2xhdGVkRGlyZWN0aXZlLCB1cmwsIGNvbnNvbGVNZXNzYWdlLCBTdHJpbmcoKSwgVGV4
dFBvc2l0aW9uKFdURjo6T3JkaW5hbE51bWJlcjo6YmVmb3JlRmlyc3QoKSwgV1RGOjpPcmRpbmFs
TnVtYmVyKCkpKTsKKyAgICByZXR1cm4gdmlvbGF0ZWREaXJlY3RpdmUtPmRpcmVjdGl2ZUxpc3Qo
KS5pc1JlcG9ydE9ubHkoKTsKIH0KIAogYm9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93
Q2hpbGRGcmFtZUZyb21Tb3VyY2UoY29uc3QgVVJMJiB1cmwsIGJvb2wgb3ZlcnJpZGVDb250ZW50
U2VjdXJpdHlQb2xpY3kpIGNvbnN0CkBAIC0zMTgsNyArMzk5LDEyIEBAIGJvb2wgQ29udGVudFNl
Y3VyaXR5UG9saWN5OjphbGxvd0NoaWxkRnJhbWVGcm9tU291cmNlKGNvbnN0IFVSTCYgdXJsLCBi
b29sIG92ZXJyCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIGlmIChTY2hlbWVSZWdpc3RyeTo6
c2NoZW1lU2hvdWxkQnlwYXNzQ29udGVudFNlY3VyaXR5UG9saWN5KHVybC5wcm90b2NvbCgpKSkK
ICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgcmV0dXJuIGFsbFBvbGljaWVzQWxsb3coJkNvbnRl
bnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OmFsbG93Q2hpbGRGcmFtZUZyb21Tb3VyY2Us
IHVybCwgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6UmVwb3J0aW5nU3RhdHVz
OjpTZW5kUmVwb3J0KTsKKyAgICBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmUq
IHZpb2xhdGVkRGlyZWN0aXZlID0gdmlvbGF0ZWREaXJlY3RpdmVJbkFueVBvbGljeSgmQ29udGVu
dFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6dmlvbGF0ZWREaXJlY3RpdmVGb3JGcmFtZSwg
dXJsKTsKKyAgICBpZiAoIXZpb2xhdGVkRGlyZWN0aXZlKQorICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICBTdHJpbmcgY29uc29sZU1lc3NhZ2UgPSBjb25zb2xlTWVzc2FnZUZvclZpb2xhdGlvbihD
b250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lczo6ZnJhbWVTcmMsICp2aW9sYXRlZERp
cmVjdGl2ZSwgdXJsLCAiUmVmdXNlZCB0byBsb2FkIik7CisgICAgcmVwb3J0VmlvbGF0aW9uKENv
bnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzOjpmcmFtZVNyYywgKnZpb2xhdGVkRGly
ZWN0aXZlLCB1cmwsIGNvbnNvbGVNZXNzYWdlLCBTdHJpbmcoKSwgVGV4dFBvc2l0aW9uKFdURjo6
T3JkaW5hbE51bWJlcjo6YmVmb3JlRmlyc3QoKSwgV1RGOjpPcmRpbmFsTnVtYmVyKCkpKTsKKyAg
ICByZXR1cm4gdmlvbGF0ZWREaXJlY3RpdmUtPmRpcmVjdGl2ZUxpc3QoKS5pc1JlcG9ydE9ubHko
KTsKIH0KIAogYm9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93Q2hpbGRDb250ZXh0RnJv
bVNvdXJjZShjb25zdCBVUkwmIHVybCwgYm9vbCBvdmVycmlkZUNvbnRlbnRTZWN1cml0eVBvbGlj
eSkgY29uc3QKQEAgLTMyNyw3ICs0MTMsMTIgQEAgYm9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3k6
OmFsbG93Q2hpbGRDb250ZXh0RnJvbVNvdXJjZShjb25zdCBVUkwmIHVybCwgYm9vbCBvdmUKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgaWYgKFNjaGVtZVJlZ2lzdHJ5OjpzY2hlbWVTaG91bGRC
eXBhc3NDb250ZW50U2VjdXJpdHlQb2xpY3kodXJsLnByb3RvY29sKCkpKQogICAgICAgICByZXR1
cm4gdHJ1ZTsKLSAgICByZXR1cm4gYWxsUG9saWNpZXNBbGxvdygmQ29udGVudFNlY3VyaXR5UG9s
aWN5RGlyZWN0aXZlTGlzdDo6YWxsb3dDaGlsZENvbnRleHRGcm9tU291cmNlLCB1cmwsIENvbnRl
bnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OlJlcG9ydGluZ1N0YXR1czo6U2VuZFJlcG9y
dCk7CisgICAgY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlKiB2aW9sYXRlZERp
cmVjdGl2ZSA9IHZpb2xhdGVkRGlyZWN0aXZlSW5BbnlQb2xpY3koJkNvbnRlbnRTZWN1cml0eVBv
bGljeURpcmVjdGl2ZUxpc3Q6OnZpb2xhdGVkRGlyZWN0aXZlRm9yQ2hpbGRDb250ZXh0LCB1cmwp
OworICAgIGlmICghdmlvbGF0ZWREaXJlY3RpdmUpCisgICAgICAgIHJldHVybiB0cnVlOworICAg
IFN0cmluZyBjb25zb2xlTWVzc2FnZSA9IGNvbnNvbGVNZXNzYWdlRm9yVmlvbGF0aW9uKENvbnRl
bnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzOjpjaGlsZFNyYywgKnZpb2xhdGVkRGlyZWN0
aXZlLCB1cmwsICJSZWZ1c2VkIHRvIGxvYWQiKTsKKyAgICByZXBvcnRWaW9sYXRpb24oQ29udGVu
dFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXM6OmNoaWxkU3JjLCAqdmlvbGF0ZWREaXJlY3Rp
dmUsIHVybCwgY29uc29sZU1lc3NhZ2UsIFN0cmluZygpLCBUZXh0UG9zaXRpb24oV1RGOjpPcmRp
bmFsTnVtYmVyOjpiZWZvcmVGaXJzdCgpLCBXVEY6Ok9yZGluYWxOdW1iZXIoKSkpOworICAgIHJl
dHVybiB2aW9sYXRlZERpcmVjdGl2ZS0+ZGlyZWN0aXZlTGlzdCgpLmlzUmVwb3J0T25seSgpOwog
fQogCiBib29sIENvbnRlbnRTZWN1cml0eVBvbGljeTo6YWxsb3dJbWFnZUZyb21Tb3VyY2UoY29u
c3QgVVJMJiB1cmwsIGJvb2wgb3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3kpIGNvbnN0CkBA
IC0zMzYsNyArNDI3LDEyIEBAIGJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5OjphbGxvd0ltYWdl
RnJvbVNvdXJjZShjb25zdCBVUkwmIHVybCwgYm9vbCBvdmVycmlkZUNvCiAgICAgICAgIHJldHVy
biB0cnVlOwogICAgIGlmIChTY2hlbWVSZWdpc3RyeTo6c2NoZW1lU2hvdWxkQnlwYXNzQ29udGVu
dFNlY3VyaXR5UG9saWN5KHVybC5wcm90b2NvbCgpKSkKICAgICAgICAgcmV0dXJuIHRydWU7Ci0g
ICAgcmV0dXJuIGFsbFBvbGljaWVzQWxsb3coJkNvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2
ZUxpc3Q6OmFsbG93SW1hZ2VGcm9tU291cmNlLCB1cmwsIENvbnRlbnRTZWN1cml0eVBvbGljeURp
cmVjdGl2ZUxpc3Q6OlJlcG9ydGluZ1N0YXR1czo6U2VuZFJlcG9ydCk7CisgICAgY29uc3QgQ29u
dGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlKiB2aW9sYXRlZERpcmVjdGl2ZSA9IHZpb2xhdGVk
RGlyZWN0aXZlSW5BbnlQb2xpY3koJkNvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6
OnZpb2xhdGVkRGlyZWN0aXZlRm9ySW1hZ2UsIHVybCk7CisgICAgaWYgKCF2aW9sYXRlZERpcmVj
dGl2ZSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgU3RyaW5nIGNvbnNvbGVNZXNzYWdlID0g
Y29uc29sZU1lc3NhZ2VGb3JWaW9sYXRpb24oQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZl
TmFtZXM6OmltZ1NyYywgKnZpb2xhdGVkRGlyZWN0aXZlLCB1cmwsICJSZWZ1c2VkIHRvIGxvYWQi
KTsKKyAgICByZXBvcnRWaW9sYXRpb24oQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFt
ZXM6OmltZ1NyYywgKnZpb2xhdGVkRGlyZWN0aXZlLCB1cmwsIGNvbnNvbGVNZXNzYWdlLCBTdHJp
bmcoKSwgVGV4dFBvc2l0aW9uKFdURjo6T3JkaW5hbE51bWJlcjo6YmVmb3JlRmlyc3QoKSwgV1RG
OjpPcmRpbmFsTnVtYmVyKCkpKTsKKyAgICByZXR1cm4gdmlvbGF0ZWREaXJlY3RpdmUtPmRpcmVj
dGl2ZUxpc3QoKS5pc1JlcG9ydE9ubHkoKTsKIH0KIAogYm9vbCBDb250ZW50U2VjdXJpdHlQb2xp
Y3k6OmFsbG93U3R5bGVGcm9tU291cmNlKGNvbnN0IFVSTCYgdXJsLCBib29sIG92ZXJyaWRlQ29u
dGVudFNlY3VyaXR5UG9saWN5KSBjb25zdApAQCAtMzQ1LDcgKzQ0MSwxMiBAQCBib29sIENvbnRl
bnRTZWN1cml0eVBvbGljeTo6YWxsb3dTdHlsZUZyb21Tb3VyY2UoY29uc3QgVVJMJiB1cmwsIGJv
b2wgb3ZlcnJpZGVDbwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBpZiAoU2NoZW1lUmVnaXN0
cnk6OnNjaGVtZVNob3VsZEJ5cGFzc0NvbnRlbnRTZWN1cml0eVBvbGljeSh1cmwucHJvdG9jb2wo
KSkpCiAgICAgICAgIHJldHVybiB0cnVlOwotICAgIHJldHVybiBhbGxQb2xpY2llc0FsbG93KCZD
b250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0OjphbGxvd1N0eWxlRnJvbVNvdXJjZSwg
dXJsLCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0OjpSZXBvcnRpbmdTdGF0dXM6
OlNlbmRSZXBvcnQpOworICAgIGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZSog
dmlvbGF0ZWREaXJlY3RpdmUgPSB2aW9sYXRlZERpcmVjdGl2ZUluQW55UG9saWN5KCZDb250ZW50
U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0Ojp2aW9sYXRlZERpcmVjdGl2ZUZvclN0eWxlLCB1
cmwpOworICAgIGlmICghdmlvbGF0ZWREaXJlY3RpdmUpCisgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIFN0cmluZyBjb25zb2xlTWVzc2FnZSA9IGNvbnNvbGVNZXNzYWdlRm9yVmlvbGF0aW9uKENv
bnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzOjpzdHlsZVNyYywgKnZpb2xhdGVkRGly
ZWN0aXZlLCB1cmwsICJSZWZ1c2VkIHRvIGxvYWQiKTsKKyAgICByZXBvcnRWaW9sYXRpb24oQ29u
dGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXM6OnN0eWxlU3JjLCAqdmlvbGF0ZWREaXJl
Y3RpdmUsIHVybCwgY29uc29sZU1lc3NhZ2UsIFN0cmluZygpLCBUZXh0UG9zaXRpb24oV1RGOjpP
cmRpbmFsTnVtYmVyOjpiZWZvcmVGaXJzdCgpLCBXVEY6Ok9yZGluYWxOdW1iZXIoKSkpOworICAg
IHJldHVybiB2aW9sYXRlZERpcmVjdGl2ZS0+ZGlyZWN0aXZlTGlzdCgpLmlzUmVwb3J0T25seSgp
OwogfQogCiBib29sIENvbnRlbnRTZWN1cml0eVBvbGljeTo6YWxsb3dGb250RnJvbVNvdXJjZShj
b25zdCBVUkwmIHVybCwgYm9vbCBvdmVycmlkZUNvbnRlbnRTZWN1cml0eVBvbGljeSkgY29uc3QK
QEAgLTM1NCw3ICs0NTUsMTIgQEAgYm9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93Rm9u
dEZyb21Tb3VyY2UoY29uc3QgVVJMJiB1cmwsIGJvb2wgb3ZlcnJpZGVDb24KICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgaWYgKFNjaGVtZVJlZ2lzdHJ5OjpzY2hlbWVTaG91bGRCeXBhc3NDb250
ZW50U2VjdXJpdHlQb2xpY3kodXJsLnByb3RvY29sKCkpKQogICAgICAgICByZXR1cm4gdHJ1ZTsK
LSAgICByZXR1cm4gYWxsUG9saWNpZXNBbGxvdygmQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0
aXZlTGlzdDo6YWxsb3dGb250RnJvbVNvdXJjZSwgdXJsLCBDb250ZW50U2VjdXJpdHlQb2xpY3lE
aXJlY3RpdmVMaXN0OjpSZXBvcnRpbmdTdGF0dXM6OlNlbmRSZXBvcnQpOworICAgIGNvbnN0IENv
bnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZSogdmlvbGF0ZWREaXJlY3RpdmUgPSB2aW9sYXRl
ZERpcmVjdGl2ZUluQW55UG9saWN5KCZDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0
Ojp2aW9sYXRlZERpcmVjdGl2ZUZvckZvbnQsIHVybCk7CisgICAgaWYgKCF2aW9sYXRlZERpcmVj
dGl2ZSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgU3RyaW5nIGNvbnNvbGVNZXNzYWdlID0g
Y29uc29sZU1lc3NhZ2VGb3JWaW9sYXRpb24oQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZl
TmFtZXM6OmZvbnRTcmMsICp2aW9sYXRlZERpcmVjdGl2ZSwgdXJsLCAiUmVmdXNlZCB0byBsb2Fk
Iik7CisgICAgcmVwb3J0VmlvbGF0aW9uKENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5h
bWVzOjpmb250U3JjLCAqdmlvbGF0ZWREaXJlY3RpdmUsIHVybCwgY29uc29sZU1lc3NhZ2UsIFN0
cmluZygpLCBUZXh0UG9zaXRpb24oV1RGOjpPcmRpbmFsTnVtYmVyOjpiZWZvcmVGaXJzdCgpLCBX
VEY6Ok9yZGluYWxOdW1iZXIoKSkpOworICAgIHJldHVybiB2aW9sYXRlZERpcmVjdGl2ZS0+ZGly
ZWN0aXZlTGlzdCgpLmlzUmVwb3J0T25seSgpOwogfQogCiBib29sIENvbnRlbnRTZWN1cml0eVBv
bGljeTo6YWxsb3dNZWRpYUZyb21Tb3VyY2UoY29uc3QgVVJMJiB1cmwsIGJvb2wgb3ZlcnJpZGVD
b250ZW50U2VjdXJpdHlQb2xpY3kpIGNvbnN0CkBAIC0zNjMsNyArNDY5LDEyIEBAIGJvb2wgQ29u
dGVudFNlY3VyaXR5UG9saWN5OjphbGxvd01lZGlhRnJvbVNvdXJjZShjb25zdCBVUkwmIHVybCwg
Ym9vbCBvdmVycmlkZUNvCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIGlmIChTY2hlbWVSZWdp
c3RyeTo6c2NoZW1lU2hvdWxkQnlwYXNzQ29udGVudFNlY3VyaXR5UG9saWN5KHVybC5wcm90b2Nv
bCgpKSkKICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgcmV0dXJuIGFsbFBvbGljaWVzQWxsb3co
JkNvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OmFsbG93TWVkaWFGcm9tU291cmNl
LCB1cmwsIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OlJlcG9ydGluZ1N0YXR1
czo6U2VuZFJlcG9ydCk7CisgICAgY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZl
KiB2aW9sYXRlZERpcmVjdGl2ZSA9IHZpb2xhdGVkRGlyZWN0aXZlSW5BbnlQb2xpY3koJkNvbnRl
bnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OnZpb2xhdGVkRGlyZWN0aXZlRm9yTWVkaWEs
IHVybCk7CisgICAgaWYgKCF2aW9sYXRlZERpcmVjdGl2ZSkKKyAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgU3RyaW5nIGNvbnNvbGVNZXNzYWdlID0gY29uc29sZU1lc3NhZ2VGb3JWaW9sYXRpb24o
Q29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXM6Om1lZGlhU3JjLCAqdmlvbGF0ZWRE
aXJlY3RpdmUsIHVybCwgIlJlZnVzZWQgdG8gbG9hZCIpOworICAgIHJlcG9ydFZpb2xhdGlvbihD
b250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lczo6bWVkaWFTcmMsICp2aW9sYXRlZERp
cmVjdGl2ZSwgdXJsLCBjb25zb2xlTWVzc2FnZSwgU3RyaW5nKCksIFRleHRQb3NpdGlvbihXVEY6
Ok9yZGluYWxOdW1iZXI6OmJlZm9yZUZpcnN0KCksIFdURjo6T3JkaW5hbE51bWJlcigpKSk7Cisg
ICAgcmV0dXJuIHZpb2xhdGVkRGlyZWN0aXZlLT5kaXJlY3RpdmVMaXN0KCkuaXNSZXBvcnRPbmx5
KCk7CiB9CiAKIGJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5OjphbGxvd0Nvbm5lY3RUb1NvdXJj
ZShjb25zdCBVUkwmIHVybCwgYm9vbCBvdmVycmlkZUNvbnRlbnRTZWN1cml0eVBvbGljeSkgY29u
c3QKQEAgLTM3Miw3ICs0ODMsMTIgQEAgYm9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93
Q29ubmVjdFRvU291cmNlKGNvbnN0IFVSTCYgdXJsLCBib29sIG92ZXJyaWRlQ28KICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgaWYgKFNjaGVtZVJlZ2lzdHJ5OjpzY2hlbWVTaG91bGRCeXBhc3ND
b250ZW50U2VjdXJpdHlQb2xpY3kodXJsLnByb3RvY29sKCkpKQogICAgICAgICByZXR1cm4gdHJ1
ZTsKLSAgICByZXR1cm4gYWxsUG9saWNpZXNBbGxvdygmQ29udGVudFNlY3VyaXR5UG9saWN5RGly
ZWN0aXZlTGlzdDo6YWxsb3dDb25uZWN0VG9Tb3VyY2UsIHVybCwgQ29udGVudFNlY3VyaXR5UG9s
aWN5RGlyZWN0aXZlTGlzdDo6UmVwb3J0aW5nU3RhdHVzOjpTZW5kUmVwb3J0KTsKKyAgICBjb25z
dCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmUqIHZpb2xhdGVkRGlyZWN0aXZlID0gdmlv
bGF0ZWREaXJlY3RpdmVJbkFueVBvbGljeSgmQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZl
TGlzdDo6dmlvbGF0ZWREaXJlY3RpdmVGb3JDb25uZWN0U291cmNlLCB1cmwpOworICAgIGlmICgh
dmlvbGF0ZWREaXJlY3RpdmUpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIFN0cmluZyBjb25z
b2xlTWVzc2FnZSA9IGNvbnNvbGVNZXNzYWdlRm9yVmlvbGF0aW9uKENvbnRlbnRTZWN1cml0eVBv
bGljeURpcmVjdGl2ZU5hbWVzOjpjb25uZWN0U3JjLCAqdmlvbGF0ZWREaXJlY3RpdmUsIHVybCwg
IlJlZnVzZWQgdG8gY29ubmVjdCB0byIpOworICAgIHJlcG9ydFZpb2xhdGlvbihDb250ZW50U2Vj
dXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lczo6Y29ubmVjdFNyYywgKnZpb2xhdGVkRGlyZWN0aXZl
LCB1cmwsIGNvbnNvbGVNZXNzYWdlLCBTdHJpbmcoKSwgVGV4dFBvc2l0aW9uKFdURjo6T3JkaW5h
bE51bWJlcjo6YmVmb3JlRmlyc3QoKSwgV1RGOjpPcmRpbmFsTnVtYmVyKCkpKTsKKyAgICByZXR1
cm4gdmlvbGF0ZWREaXJlY3RpdmUtPmRpcmVjdGl2ZUxpc3QoKS5pc1JlcG9ydE9ubHkoKTsKIH0K
IAogYm9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93Rm9ybUFjdGlvbihjb25zdCBVUkwm
IHVybCwgYm9vbCBvdmVycmlkZUNvbnRlbnRTZWN1cml0eVBvbGljeSkgY29uc3QKQEAgLTM4MSw3
ICs0OTcsMTIgQEAgYm9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93Rm9ybUFjdGlvbihj
b25zdCBVUkwmIHVybCwgYm9vbCBvdmVycmlkZUNvbnRlbnQKICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgaWYgKFNjaGVtZVJlZ2lzdHJ5OjpzY2hlbWVTaG91bGRCeXBhc3NDb250ZW50U2VjdXJp
dHlQb2xpY3kodXJsLnByb3RvY29sKCkpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICByZXR1
cm4gYWxsUG9saWNpZXNBbGxvdygmQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6
YWxsb3dGb3JtQWN0aW9uLCB1cmwsIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6
OlJlcG9ydGluZ1N0YXR1czo6U2VuZFJlcG9ydCk7CisgICAgY29uc3QgQ29udGVudFNlY3VyaXR5
UG9saWN5RGlyZWN0aXZlKiB2aW9sYXRlZERpcmVjdGl2ZSA9IHZpb2xhdGVkRGlyZWN0aXZlSW5B
bnlQb2xpY3koJkNvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OnZpb2xhdGVkRGly
ZWN0aXZlRm9yRm9ybUFjdGlvbiwgdXJsKTsKKyAgICBpZiAoIXZpb2xhdGVkRGlyZWN0aXZlKQor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBTdHJpbmcgY29uc29sZU1lc3NhZ2UgPSBjb25zb2xl
TWVzc2FnZUZvclZpb2xhdGlvbihDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lczo6
Zm9ybUFjdGlvbiwgKnZpb2xhdGVkRGlyZWN0aXZlLCB1cmwsICJSZWZ1c2VkIHRvIGxvYWQiKTsK
KyAgICByZXBvcnRWaW9sYXRpb24oQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXM6
OmZvcm1BY3Rpb24sICp2aW9sYXRlZERpcmVjdGl2ZSwgdXJsLCBjb25zb2xlTWVzc2FnZSwgU3Ry
aW5nKCksIFRleHRQb3NpdGlvbihXVEY6Ok9yZGluYWxOdW1iZXI6OmJlZm9yZUZpcnN0KCksIFdU
Rjo6T3JkaW5hbE51bWJlcigpKSk7CisgICAgcmV0dXJuIHZpb2xhdGVkRGlyZWN0aXZlLT5kaXJl
Y3RpdmVMaXN0KCkuaXNSZXBvcnRPbmx5KCk7CiB9CiAKIGJvb2wgQ29udGVudFNlY3VyaXR5UG9s
aWN5OjphbGxvd0Jhc2VVUkkoY29uc3QgVVJMJiB1cmwsIGJvb2wgb3ZlcnJpZGVDb250ZW50U2Vj
dXJpdHlQb2xpY3kpIGNvbnN0CkBAIC0zOTAsNyArNTExLDEyIEBAIGJvb2wgQ29udGVudFNlY3Vy
aXR5UG9saWN5OjphbGxvd0Jhc2VVUkkoY29uc3QgVVJMJiB1cmwsIGJvb2wgb3ZlcnJpZGVDb250
ZW50U2VjCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIGlmIChTY2hlbWVSZWdpc3RyeTo6c2No
ZW1lU2hvdWxkQnlwYXNzQ29udGVudFNlY3VyaXR5UG9saWN5KHVybC5wcm90b2NvbCgpKSkKICAg
ICAgICAgcmV0dXJuIHRydWU7Ci0gICAgcmV0dXJuIGFsbFBvbGljaWVzQWxsb3coJkNvbnRlbnRT
ZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OmFsbG93QmFzZVVSSSwgdXJsLCBDb250ZW50U2Vj
dXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0OjpSZXBvcnRpbmdTdGF0dXM6OlNlbmRSZXBvcnQpOwor
ICAgIGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZSogdmlvbGF0ZWREaXJlY3Rp
dmUgPSB2aW9sYXRlZERpcmVjdGl2ZUluQW55UG9saWN5KCZDb250ZW50U2VjdXJpdHlQb2xpY3lE
aXJlY3RpdmVMaXN0Ojp2aW9sYXRlZERpcmVjdGl2ZUZvckJhc2VVUkksIHVybCk7CisgICAgaWYg
KCF2aW9sYXRlZERpcmVjdGl2ZSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgU3RyaW5nIGNv
bnNvbGVNZXNzYWdlID0gY29uc29sZU1lc3NhZ2VGb3JWaW9sYXRpb24oQ29udGVudFNlY3VyaXR5
UG9saWN5RGlyZWN0aXZlTmFtZXM6OmJhc2VVUkksICp2aW9sYXRlZERpcmVjdGl2ZSwgdXJsLCAi
UmVmdXNlZCB0byBjaGFuZ2UgdGhlIGRvY3VtZW50IGJhc2UgVVJMIHRvIik7CisgICAgcmVwb3J0
VmlvbGF0aW9uKENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzOjpiYXNlVVJJLCAq
dmlvbGF0ZWREaXJlY3RpdmUsIHVybCwgY29uc29sZU1lc3NhZ2UsIFN0cmluZygpLCBUZXh0UG9z
aXRpb24oV1RGOjpPcmRpbmFsTnVtYmVyOjpiZWZvcmVGaXJzdCgpLCBXVEY6Ok9yZGluYWxOdW1i
ZXIoKSkpOworICAgIHJldHVybiB2aW9sYXRlZERpcmVjdGl2ZS0+ZGlyZWN0aXZlTGlzdCgpLmlz
UmVwb3J0T25seSgpOwogfQogCiBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJlZmxlY3RlZFhTU0Rp
c3Bvc2l0aW9uIENvbnRlbnRTZWN1cml0eVBvbGljeTo6cmVmbGVjdGVkWFNTRGlzcG9zaXRpb24o
KSBjb25zdApAQCAtNDAzLDE1ICs1MjksNiBAQCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJlZmxl
Y3RlZFhTU0Rpc3Bvc2l0aW9uIENvbnRlbnRTZWN1cml0eVBvbGljeTo6cmVmbGVjdGVkWAogICAg
IHJldHVybiBkaXNwb3NpdGlvbjsKIH0KIAotdm9pZCBDb250ZW50U2VjdXJpdHlQb2xpY3k6Omdh
dGhlclJlcG9ydFVSSXMoRE9NU3RyaW5nTGlzdCYgbGlzdCkgY29uc3QKLXsKLSAgICBBU1NFUlQo
bV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKLSAgICBmb3IgKGF1dG8mIHBvbGljeSA6IG1fcG9s
aWNpZXMpIHsKLSAgICAgICAgZm9yIChhdXRvJiB1cmwgOiBwb2xpY3ktPnJlcG9ydFVSSXMoKSkK
LSAgICAgICAgICAgIGxpc3QuYXBwZW5kKG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+Y29tcGxl
dGVVUkwodXJsKS5zdHJpbmcoKSk7Ci0gICAgfQotfQotCiBzdGF0aWMgU3RyaW5nIHN0cmlwVVJM
Rm9yVXNlSW5SZXBvcnQoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBVUkwmIHVybCkKIHsKICAg
ICBpZiAoIXVybC5pc1ZhbGlkKCkpCkBAIC00MjEsOSArNTM4LDE1IEBAIHN0YXRpYyBTdHJpbmcg
c3RyaXBVUkxGb3JVc2VJblJlcG9ydChEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFVSTCYgdXJs
KQogICAgIHJldHVybiBkb2N1bWVudC5zZWN1cml0eU9yaWdpbigpLT5jYW5SZXF1ZXN0KHVybCkg
PyB1cmwuc3RyaXBwZWRGb3JVc2VBc1JlZmVycmVyKCkgOiBTZWN1cml0eU9yaWdpbjo6Y3JlYXRl
KHVybCkuZ2V0KCkudG9TdHJpbmcoKTsKIH0KIAotdm9pZCBDb250ZW50U2VjdXJpdHlQb2xpY3k6
OnJlcG9ydFZpb2xhdGlvbihjb25zdCBTdHJpbmcmIGRpcmVjdGl2ZVRleHQsIGNvbnN0IFN0cmlu
ZyYgZWZmZWN0aXZlRGlyZWN0aXZlLCBjb25zdCBTdHJpbmcmIGNvbnNvbGVNZXNzYWdlLCBjb25z
dCBVUkwmIGJsb2NrZWRVUkwsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiByZXBvcnRVUklzLCBjb25z
dCBTdHJpbmcmIGhlYWRlciwgY29uc3QgU3RyaW5nJiBjb250ZXh0VVJMLCBjb25zdCBXVEY6Ok9y
ZGluYWxOdW1iZXImIGNvbnRleHRMaW5lLCBKU0M6OkV4ZWNTdGF0ZSogc3RhdGUpIGNvbnN0Cit2
b2lkIENvbnRlbnRTZWN1cml0eVBvbGljeTo6cmVwb3J0VmlvbGF0aW9uKGNvbnN0IFN0cmluZyYg
dmlvbGF0ZWREaXJlY3RpdmUsIGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZSYg
ZWZmZWN0aXZlVmlvbGF0ZWREaXJlY3RpdmUsIGNvbnN0IFVSTCYgYmxvY2tlZFVSTCwgY29uc3Qg
U3RyaW5nJiBjb25zb2xlTWVzc2FnZSwgSlNDOjpFeGVjU3RhdGUqIHN0YXRlKSBjb25zdAorewor
ICAgIC8vIEZJWE1FOiBFeHRyYWN0IHNvdXJjZSBmaWxlIGFuZCBzb3VyY2UgcG9zaXRpb24gZnJv
bSBKU0M6OkV4ZWNTdGF0ZS4KKyAgICByZXR1cm4gcmVwb3J0VmlvbGF0aW9uKHZpb2xhdGVkRGly
ZWN0aXZlLCBlZmZlY3RpdmVWaW9sYXRlZERpcmVjdGl2ZSwgYmxvY2tlZFVSTCwgY29uc29sZU1l
c3NhZ2UsIFN0cmluZygpLCBUZXh0UG9zaXRpb24oV1RGOjpPcmRpbmFsTnVtYmVyOjpiZWZvcmVG
aXJzdCgpLCBXVEY6Ok9yZGluYWxOdW1iZXI6OmJlZm9yZUZpcnN0KCkpLCBzdGF0ZSk7Cit9CisK
K3ZvaWQgQ29udGVudFNlY3VyaXR5UG9saWN5OjpyZXBvcnRWaW9sYXRpb24oY29uc3QgU3RyaW5n
JiBlZmZlY3RpdmVWaW9sYXRlZERpcmVjdGl2ZSwgY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5
RGlyZWN0aXZlJiB2aW9sYXRlZERpcmVjdGl2ZSwgY29uc3QgVVJMJiBibG9ja2VkVVJMLCBjb25z
dCBTdHJpbmcmIGNvbnNvbGVNZXNzYWdlLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCwgY29uc3Qg
VGV4dFBvc2l0aW9uJiBzb3VyY2VQb3NpdGlvbiwgSlNDOjpFeGVjU3RhdGUqIHN0YXRlKSBjb25z
dAogewotICAgIGxvZ1RvQ29uc29sZShjb25zb2xlTWVzc2FnZSwgY29udGV4dFVSTCwgY29udGV4
dExpbmUsIHN0YXRlKTsKKyAgICBsb2dUb0NvbnNvbGUoY29uc29sZU1lc3NhZ2UsIHNvdXJjZVVS
TCwgc291cmNlUG9zaXRpb24ubV9saW5lLCBzdGF0ZSk7CiAKICAgICBpZiAoIW1faXNSZXBvcnRp
bmdFbmFibGVkKQogICAgICAgICByZXR1cm47CkBAIC00MzIsOSArNTU1LDcgQEAgdm9pZCBDb250
ZW50U2VjdXJpdHlQb2xpY3k6OnJlcG9ydFZpb2xhdGlvbihjb25zdCBTdHJpbmcmIGRpcmVjdGl2
ZVRleHQsIGNvbnN0IFMKICAgICBpZiAoIWlzPERvY3VtZW50PihtX3NjcmlwdEV4ZWN1dGlvbkNv
bnRleHQpICYmICFtX2ZyYW1lKQogICAgICAgICByZXR1cm47CiAKLSAgICAvLyBGSVhNRTogV2Ug
c2hvdWxkIG5vdCBoYXJkY29kZSB0aGUgZGlyZWN0aXZlIG5hbWVzLiBXZSBzaG91bGQgbWFrZSB1
c2Ugb2YgdGhlIGNvbnN0YW50cyBpbiBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0
LmNwcC4KLSAgICAvLyBTZWUgPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNTUxMzM+LgotICAgIEFTU0VSVCghbV9mcmFtZSB8fCBlZmZlY3RpdmVEaXJlY3RpdmUgPT0g
ImZyYW1lLWFuY2VzdG9ycyIpOworICAgIEFTU0VSVCghbV9mcmFtZSB8fCBlZmZlY3RpdmVWaW9s
YXRlZERpcmVjdGl2ZSA9PSBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lczo6ZnJh
bWVBbmNlc3RvcnMpOwogCiAgICAgRG9jdW1lbnQmIGRvY3VtZW50ID0gaXM8RG9jdW1lbnQ+KG1f
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCkgPyBkb3duY2FzdDxEb2N1bWVudD4oKm1fc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCkgOiAqbV9mcmFtZS0+ZG9jdW1lbnQoKTsKICAgICBGcmFtZSogZnJhbWUg
PSBkb2N1bWVudC5mcmFtZSgpOwpAQCAtNDUzLDggKzU3NCw4IEBAIHZvaWQgQ29udGVudFNlY3Vy
aXR5UG9saWN5OjpyZXBvcnRWaW9sYXRpb24oY29uc3QgU3RyaW5nJiBkaXJlY3RpdmVUZXh0LCBj
b25zdCBTCiAgICAgICAgIGRvY3VtZW50VVJJID0gYmxvY2tlZFVSTDsKICAgICAgICAgYmxvY2tl
ZFVSSSA9IGJsb2NrZWRVUkw7CiAgICAgfQotICAgIFN0cmluZyB2aW9sYXRlZERpcmVjdGl2ZSA9
IGRpcmVjdGl2ZVRleHQ7Ci0gICAgU3RyaW5nIG9yaWdpbmFsUG9saWN5ID0gaGVhZGVyOworICAg
IFN0cmluZyB2aW9sYXRlZERpcmVjdGl2ZVRleHQgPSB2aW9sYXRlZERpcmVjdGl2ZS50ZXh0KCk7
CisgICAgU3RyaW5nIG9yaWdpbmFsUG9saWN5ID0gdmlvbGF0ZWREaXJlY3RpdmUuZGlyZWN0aXZl
TGlzdCgpLmhlYWRlcigpOwogICAgIFN0cmluZyByZWZlcnJlciA9IGRvY3VtZW50LnJlZmVycmVy
KCk7CiAgICAgQVNTRVJUKGRvY3VtZW50LmxvYWRlcigpKTsKICAgICB1bnNpZ25lZCBzaG9ydCBz
dGF0dXNDb2RlID0gZG9jdW1lbnQudXJsKCkucHJvdG9jb2xJcygiaHR0cCIpICYmIGRvY3VtZW50
LmxvYWRlcigpID8gZG9jdW1lbnQubG9hZGVyKCktPnJlc3BvbnNlKCkuaHR0cFN0YXR1c0NvZGUo
KSA6IDA7CkBAIC00NzMsOSArNTk0LDEwIEBAIHZvaWQgQ29udGVudFNlY3VyaXR5UG9saWN5Ojpy
ZXBvcnRWaW9sYXRpb24oY29uc3QgU3RyaW5nJiBkaXJlY3RpdmVUZXh0LCBjb25zdCBTCiAgICAg
Ly8gMS4gRGlzcGF0Y2ggdmlvbGF0aW9uIGV2ZW50LgogICAgIGJvb2wgY2FuQnViYmxlID0gZmFs
c2U7CiAgICAgYm9vbCBjYW5jZWxhYmxlID0gZmFsc2U7Ci0gICAgZG9jdW1lbnQuZW5xdWV1ZURv
Y3VtZW50RXZlbnQoU2VjdXJpdHlQb2xpY3lWaW9sYXRpb25FdmVudDo6Y3JlYXRlKGV2ZW50TmFt
ZXMoKS5zZWN1cml0eXBvbGljeXZpb2xhdGlvbkV2ZW50LCBjYW5CdWJibGUsIGNhbmNlbGFibGUs
IGRvY3VtZW50VVJJLCByZWZlcnJlciwgYmxvY2tlZFVSSSwgdmlvbGF0ZWREaXJlY3RpdmUsIGVm
ZmVjdGl2ZURpcmVjdGl2ZSwgb3JpZ2luYWxQb2xpY3ksIHNvdXJjZUZpbGUsIHN0YXR1c0NvZGUs
IGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcikpOworICAgIGRvY3VtZW50LmVucXVldWVEb2N1bWVu
dEV2ZW50KFNlY3VyaXR5UG9saWN5VmlvbGF0aW9uRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCku
c2VjdXJpdHlwb2xpY3l2aW9sYXRpb25FdmVudCwgY2FuQnViYmxlLCBjYW5jZWxhYmxlLCBkb2N1
bWVudFVSSSwgcmVmZXJyZXIsIGJsb2NrZWRVUkksIHZpb2xhdGVkRGlyZWN0aXZlVGV4dCwgZWZm
ZWN0aXZlVmlvbGF0ZWREaXJlY3RpdmUsIG9yaWdpbmFsUG9saWN5LCBzb3VyY2VGaWxlLCBzdGF0
dXNDb2RlLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpKTsKIAogICAgIC8vIDIuIFNlbmQgdmlv
bGF0aW9uIHJlcG9ydCAoaWYgYXBwbGljYWJsZSkuCisgICAgY29uc3QgVmVjdG9yPFN0cmluZz4m
IHJlcG9ydFVSSXMgPSB2aW9sYXRlZERpcmVjdGl2ZS5kaXJlY3RpdmVMaXN0KCkucmVwb3J0VVJJ
cygpOwogICAgIGlmIChyZXBvcnRVUklzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCkBA
IC00OTIsOCArNjE0LDggQEAgdm9pZCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OnJlcG9ydFZpb2xh
dGlvbihjb25zdCBTdHJpbmcmIGRpcmVjdGl2ZVRleHQsIGNvbnN0IFMKICAgICBSZWZQdHI8SW5z
cGVjdG9yT2JqZWN0PiBjc3BSZXBvcnQgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwogICAg
IGNzcFJlcG9ydC0+c2V0U3RyaW5nKEFTQ0lJTGl0ZXJhbCgiZG9jdW1lbnQtdXJpIiksIGRvY3Vt
ZW50VVJJKTsKICAgICBjc3BSZXBvcnQtPnNldFN0cmluZyhBU0NJSUxpdGVyYWwoInJlZmVycmVy
IiksIHJlZmVycmVyKTsKLSAgICBjc3BSZXBvcnQtPnNldFN0cmluZyhBU0NJSUxpdGVyYWwoInZp
b2xhdGVkLWRpcmVjdGl2ZSIpLCBkaXJlY3RpdmVUZXh0KTsKLSAgICBjc3BSZXBvcnQtPnNldFN0
cmluZyhBU0NJSUxpdGVyYWwoImVmZmVjdGl2ZS1kaXJlY3RpdmUiKSwgZWZmZWN0aXZlRGlyZWN0
aXZlKTsKKyAgICBjc3BSZXBvcnQtPnNldFN0cmluZyhBU0NJSUxpdGVyYWwoInZpb2xhdGVkLWRp
cmVjdGl2ZSIpLCB2aW9sYXRlZERpcmVjdGl2ZVRleHQpOworICAgIGNzcFJlcG9ydC0+c2V0U3Ry
aW5nKEFTQ0lJTGl0ZXJhbCgiZWZmZWN0aXZlLWRpcmVjdGl2ZSIpLCBlZmZlY3RpdmVWaW9sYXRl
ZERpcmVjdGl2ZSk7CiAgICAgY3NwUmVwb3J0LT5zZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJvcmln
aW5hbC1wb2xpY3kiKSwgb3JpZ2luYWxQb2xpY3kpOwogICAgIGNzcFJlcG9ydC0+c2V0U3RyaW5n
KEFTQ0lJTGl0ZXJhbCgiYmxvY2tlZC11cmkiKSwgYmxvY2tlZFVSSSk7CiAgICAgY3NwUmVwb3J0
LT5zZXRJbnRlZ2VyKEFTQ0lJTGl0ZXJhbCgic3RhdHVzLWNvZGUiKSwgc3RhdHVzQ29kZSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3ku
aCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5oCmluZGV4
IGYzMmMzMGRlN2ZiYjYzYzVlOGNjZTVmYWU3YzAwYjFhY2RmZWI1NDIuLjBmZmVmOWM0MDAxM2U1
NGZiZWZjZDcwNGEyNjIwYjEyZmFhZDVkYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
Y3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5oCkBAIC0zOSw2ICszOSw3IEBAIGNsYXNzIE9yZGlu
YWxOdW1iZXI7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQ29udGVudFNlY3VyaXR5
UG9saWN5RGlyZWN0aXZlOwogY2xhc3MgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlz
dDsKIGNsYXNzIENvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZTsKIGNsYXNzIERPTVN0cmluZ0xp
c3Q7CkBAIC0xMzQsOCArMTM1LDYgQEAgcHVibGljOgogICAgIHZvaWQgcmVwb3J0SW52YWxpZERp
cmVjdGl2ZUluSFRUUEVxdWl2TWV0YShjb25zdCBTdHJpbmcmKSBjb25zdDsKICAgICB2b2lkIHJl
cG9ydE1pc3NpbmdSZXBvcnRVUkkoY29uc3QgU3RyaW5nJikgY29uc3Q7CiAgICAgdm9pZCByZXBv
cnRVbnN1cHBvcnRlZERpcmVjdGl2ZShjb25zdCBTdHJpbmcmKSBjb25zdDsKLSAgICB2b2lkIHJl
cG9ydFZpb2xhdGlvbihjb25zdCBTdHJpbmcmIGRpcmVjdGl2ZVRleHQsIGNvbnN0IFN0cmluZyYg
ZWZmZWN0aXZlRGlyZWN0aXZlLCBjb25zdCBTdHJpbmcmIGNvbnNvbGVNZXNzYWdlLCBjb25zdCBV
UkwmIGJsb2NrZWRVUkwsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiByZXBvcnRVUklzLCBjb25zdCBT
dHJpbmcmIGhlYWRlciwgY29uc3QgU3RyaW5nJiBjb250ZXh0VVJMID0gU3RyaW5nKCksIGNvbnN0
IFdURjo6T3JkaW5hbE51bWJlciYgY29udGV4dExpbmUgPSBXVEY6Ok9yZGluYWxOdW1iZXI6OmJl
Zm9yZUZpcnN0KCksIEpTQzo6RXhlY1N0YXRlKiA9IG51bGxwdHIpIGNvbnN0OwotICAgIHZvaWQg
cmVwb3J0QmxvY2tlZFNjcmlwdEV4ZWN1dGlvblRvSW5zcGVjdG9yKGNvbnN0IFN0cmluZyYgZGly
ZWN0aXZlVGV4dCkgY29uc3Q7CiAgICAgdm9pZCBlbmZvcmNlU2FuZGJveEZsYWdzKFNhbmRib3hG
bGFncyBzYW5kYm94RmxhZ3MpIHsgbV9zYW5kYm94RmxhZ3MgfD0gc2FuZGJveEZsYWdzOyB9CiAg
ICAgdm9pZCBhZGRIYXNoQWxnb3JpdGhtc0ZvcklubGluZVNjcmlwdHMoT3B0aW9uU2V0PENvbnRl
bnRTZWN1cml0eVBvbGljeUhhc2hBbGdvcml0aG0+IGhhc2hBbGdvcml0aG1zRm9ySW5saW5lU2Ny
aXB0cykKICAgICB7CkBAIC0xNTUsOCArMTU0LDE0IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGRp
ZFJlY2VpdmVIZWFkZXIoY29uc3QgU3RyaW5nJiwgQ29udGVudFNlY3VyaXR5UG9saWN5SGVhZGVy
VHlwZSwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpQb2xpY3lGcm9tKTsKIAotICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFByZWRpY2F0ZSwgdHlwZW5hbWUuLi4gQXJncz4gYm9vbCBhbGxQb2xpY2llc0Fs
bG93KFByZWRpY2F0ZSYmLCBBcmdzJiYuLi4pIGNvbnN0IFdBUk5fVU5VU0VEX1JFVFVSTjsKLSAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBQcmVkaWNhdGU+IGJvb2wgYWxsUG9saWNpZXNBbGxvd0hhc2hG
cm9tQ29udGVudChQcmVkaWNhdGUmJiwgY29uc3QgU3RyaW5nJiBjb250ZW50LCBPcHRpb25TZXQ8
Q29udGVudFNlY3VyaXR5UG9saWN5SGFzaEFsZ29yaXRobT4pIGNvbnN0IFdBUk5fVU5VU0VEX1JF
VFVSTjsKKyAgICBjb25zdCBUZXh0RW5jb2RpbmcmIGRvY3VtZW50RW5jb2RpbmcoKSBjb25zdDsK
KworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFByZWRpY2F0ZSwgdHlwZW5hbWUuLi4gQXJncz4gY29u
c3QgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlKiB2aW9sYXRlZERpcmVjdGl2ZUluQW55
UG9saWN5KFByZWRpY2F0ZSYmLCBBcmdzJiYuLi4pIGNvbnN0IFdBUk5fVU5VU0VEX1JFVFVSTjsK
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBQcmVkaWNhdGU+IGJvb2wgZm91bmRIYXNoT2ZDb250ZW50
SW5BbGxQb2xpY2llcyhQcmVkaWNhdGUmJiwgY29uc3QgU3RyaW5nJiBjb250ZW50LCBPcHRpb25T
ZXQ8Q29udGVudFNlY3VyaXR5UG9saWN5SGFzaEFsZ29yaXRobT4pIGNvbnN0IFdBUk5fVU5VU0VE
X1JFVFVSTjsKKworICAgIHZvaWQgcmVwb3J0VmlvbGF0aW9uKGNvbnN0IFN0cmluZyYgdmlvbGF0
ZWREaXJlY3RpdmUsIGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZSYgZWZmZWN0
aXZlVmlvbGF0ZWREaXJlY3RpdmUsIGNvbnN0IFVSTCYgYmxvY2tlZFVSTCwgY29uc3QgU3RyaW5n
JiBjb25zb2xlTWVzc2FnZSwgSlNDOjpFeGVjU3RhdGUqKSBjb25zdDsKKyAgICB2b2lkIHJlcG9y
dFZpb2xhdGlvbihjb25zdCBTdHJpbmcmIHZpb2xhdGVkRGlyZWN0aXZlLCBjb25zdCBDb250ZW50
U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmUmIGVmZmVjdGl2ZVZpb2xhdGVkRGlyZWN0aXZlLCBjb25z
dCBVUkwmIGJsb2NrZWRVUkwsIGNvbnN0IFN0cmluZyYgY29uc29sZU1lc3NhZ2UsIGNvbnN0IFN0
cmluZyYgc291cmNlVVJMLCBjb25zdCBUZXh0UG9zaXRpb24mIHNvdXJjZVBvc2l0aW9uLCBKU0M6
OkV4ZWNTdGF0ZSogPSBudWxscHRyKSBjb25zdDsKKyAgICB2b2lkIHJlcG9ydEJsb2NrZWRTY3Jp
cHRFeGVjdXRpb25Ub0luc3BlY3Rvcihjb25zdCBTdHJpbmcmIGRpcmVjdGl2ZVRleHQpIGNvbnN0
OwogCiAgICAgLy8gV2UgY2FuIG5ldmVyIGhhdmUgYm90aCBhIHNjcmlwdCBleGVjdXRpb24gY29u
dGV4dCBhbmQgYSBmcmFtZS4KICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBtX3NjcmlwdEV4
ZWN1dGlvbkNvbnRleHQgeyBudWxscHRyIH07CkBAIC0xNzMsMTMgKzE3OCwxMyBAQCBwcml2YXRl
OgogfTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgUHJlZGljYXRlLCB0eXBlbmFtZS4uLiBBcmdzPgot
aW5saW5lIGJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5OjphbGxQb2xpY2llc0FsbG93KFByZWRp
Y2F0ZSYmIHByZWRpY2F0ZSwgQXJncyYmLi4uIGFyZ3MpIGNvbnN0CitpbmxpbmUgY29uc3QgQ29u
dGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlKiBDb250ZW50U2VjdXJpdHlQb2xpY3k6OnZpb2xh
dGVkRGlyZWN0aXZlSW5BbnlQb2xpY3koUHJlZGljYXRlJiYgcHJlZGljYXRlLCBBcmdzJiYuLi4g
YXJncykgY29uc3QKIHsKICAgICBmb3IgKGF1dG8mIHBvbGljeSA6IG1fcG9saWNpZXMpIHsKLSAg
ICAgICAgaWYgKCEocG9saWN5LmdldCgpLT4qcHJlZGljYXRlKShzdGQ6OmZvcndhcmQ8QXJncz4o
YXJncykuLi4pKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAoY29uc3Qg
Q29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlKiB2aW9sYXRlZERpcmVjdGl2ZSA9IChwb2xp
Y3kuZ2V0KCktPipwcmVkaWNhdGUpKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLikpCisgICAg
ICAgICAgICByZXR1cm4gdmlvbGF0ZWREaXJlY3RpdmU7CiAgICAgfQotICAgIHJldHVybiB0cnVl
OworICAgIHJldHVybiBudWxscHRyOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmUuaCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZS5oCmluZGV4IDQ0YWEx
M2YwMWYwMzBiNzUxMGZlZGU4NmEyMmM2OGM2ZmIyNDA5MGYuLjVlODI0Zjg3YzAwYjk4ZTFjYWRm
NWRlZGMxYTA4N2YwMDM1MzA0MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3Nw
L0NvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZS5oCkBAIC0zMSwyNiArMzEsMjgg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBDb250ZW50U2VjdXJpdHlQb2xpY3k7
CitjbGFzcyBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0OwogCiBjbGFzcyBDb250
ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmUgewogcHVibGljOgotICAgIENvbnRlbnRTZWN1cml0
eVBvbGljeURpcmVjdGl2ZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUs
IGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeSYgcG9saWN5KQorICAgIENvbnRlbnRTZWN1cml0
eVBvbGljeURpcmVjdGl2ZShjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0
JiBkaXJlY3RpdmVMaXN0LCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUp
CiAgICAgICAgIDogbV9uYW1lKG5hbWUpCiAgICAgICAgICwgbV90ZXh0KG5hbWUgKyAnICcgKyB2
YWx1ZSkKLSAgICAgICAgLCBtX3BvbGljeShwb2xpY3kpCisgICAgICAgICwgbV9kaXJlY3RpdmVM
aXN0KGRpcmVjdGl2ZUxpc3QpCiAgICAgewogICAgIH0KIAorICAgIGNvbnN0IFN0cmluZyYgbmFt
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZTsgfQogICAgIGNvbnN0IFN0cmluZyYgdGV4dCgpIGNv
bnN0IHsgcmV0dXJuIG1fdGV4dDsgfQogCi1wcm90ZWN0ZWQ6Ci0gICAgY29uc3QgQ29udGVudFNl
Y3VyaXR5UG9saWN5JiBwb2xpY3koKSBjb25zdCB7IHJldHVybiBtX3BvbGljeTsgfQorICAgIGNv
bnN0IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3QmIGRpcmVjdGl2ZUxpc3QoKSBj
b25zdCB7IHJldHVybiBtX2RpcmVjdGl2ZUxpc3Q7IH0KKworICAgIGJvb2wgaXNEZWZhdWx0U3Jj
KCkgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fbmFtZTsKICAgICBTdHJpbmcgbV90
ZXh0OwotICAgIGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeSYgbV9wb2xpY3k7CisgICAgY29u
c3QgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdCYgbV9kaXJlY3RpdmVMaXN0Owog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0LmNwcApp
bmRleCA5NDU1M2UxZmZhNzhjNDFjZTg2MjI4OGJjNGRmOGVhNWRmMzJiYmVjLi4wMDQ0ZTg3OWQ4
MjRiYzBhZmQzZDFlMzBkNWI3NjdlYmExM2U4MjhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0
LmNwcApAQCAtMjcsNzQgKzI3LDE1IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAi
Q29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdC5oIgogCisjaW5jbHVkZSAiQ29udGVu
dFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXMuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgog
I2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiUGFyc2luZ1V0aWxpdGllcy5oIgogI2luY2x1
ZGUgIlNlY3VyaXR5Q29udGV4dC5oIgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgot
I2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxk
ZXIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0vLyBDU1AgMS4wIERpcmVjdGl2ZXMKLXN0
YXRpYyBjb25zdCBjaGFyIGNvbm5lY3RTcmNbXSA9ICJjb25uZWN0LXNyYyI7Ci1zdGF0aWMgY29u
c3QgY2hhciBkZWZhdWx0U3JjW10gPSAiZGVmYXVsdC1zcmMiOwotc3RhdGljIGNvbnN0IGNoYXIg
Zm9udFNyY1tdID0gImZvbnQtc3JjIjsKLXN0YXRpYyBjb25zdCBjaGFyIGZyYW1lU3JjW10gPSAi
ZnJhbWUtc3JjIjsKLXN0YXRpYyBjb25zdCBjaGFyIGltZ1NyY1tdID0gImltZy1zcmMiOwotc3Rh
dGljIGNvbnN0IGNoYXIgbWVkaWFTcmNbXSA9ICJtZWRpYS1zcmMiOwotc3RhdGljIGNvbnN0IGNo
YXIgb2JqZWN0U3JjW10gPSAib2JqZWN0LXNyYyI7Ci1zdGF0aWMgY29uc3QgY2hhciByZXBvcnRV
UklbXSA9ICJyZXBvcnQtdXJpIjsKLXN0YXRpYyBjb25zdCBjaGFyIHNhbmRib3hbXSA9ICJzYW5k
Ym94IjsKLXN0YXRpYyBjb25zdCBjaGFyIHNjcmlwdFNyY1tdID0gInNjcmlwdC1zcmMiOwotc3Rh
dGljIGNvbnN0IGNoYXIgc3R5bGVTcmNbXSA9ICJzdHlsZS1zcmMiOwotCi0vLyBDU1AgMS4xIERp
cmVjdGl2ZXMKLXN0YXRpYyBjb25zdCBjaGFyIGJhc2VVUklbXSA9ICJiYXNlLXVyaSI7Ci1zdGF0
aWMgY29uc3QgY2hhciBjaGlsZFNyY1tdID0gImNoaWxkLXNyYyI7Ci1zdGF0aWMgY29uc3QgY2hh
ciBmb3JtQWN0aW9uW10gPSAiZm9ybS1hY3Rpb24iOwotc3RhdGljIGNvbnN0IGNoYXIgcGx1Z2lu
VHlwZXNbXSA9ICJwbHVnaW4tdHlwZXMiOwotc3RhdGljIGNvbnN0IGNoYXIgZnJhbWVBbmNlc3Rv
cnNbXSA9ICJmcmFtZS1hbmNlc3RvcnMiOwotI2lmIEVOQUJMRShDU1BfTkVYVCkKLXN0YXRpYyBj
b25zdCBjaGFyIHJlZmxlY3RlZFhTU1tdID0gInJlZmxlY3RlZC14c3MiOwotI2VuZGlmCi0KLSNp
ZiBFTkFCTEUoQ1NQX05FWFQpCi0KLXN0YXRpYyBpbmxpbmUgYm9vbCBpc0V4cGVyaW1lbnRhbERp
cmVjdGl2ZU5hbWUoY29uc3QgU3RyaW5nJiBuYW1lKQotewotICAgIHJldHVybiBlcXVhbExldHRl
cnNJZ25vcmluZ0FTQ0lJQ2FzZShuYW1lLCByZWZsZWN0ZWRYU1MpOwotfQotCi0jZWxzZQotCi1z
dGF0aWMgaW5saW5lIGJvb2wgaXNFeHBlcmltZW50YWxEaXJlY3RpdmVOYW1lKGNvbnN0IFN0cmlu
ZyYpCi17Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi0jZW5kaWYKLQotYm9vbCBpc0NTUERpcmVj
dGl2ZU5hbWUoY29uc3QgU3RyaW5nJiBuYW1lKQotewotICAgIHJldHVybiBlcXVhbExldHRlcnNJ
Z25vcmluZ0FTQ0lJQ2FzZShuYW1lLCBiYXNlVVJJKQotICAgICAgICB8fCBlcXVhbExldHRlcnNJ
Z25vcmluZ0FTQ0lJQ2FzZShuYW1lLCBjb25uZWN0U3JjKQotICAgICAgICB8fCBlcXVhbExldHRl
cnNJZ25vcmluZ0FTQ0lJQ2FzZShuYW1lLCBkZWZhdWx0U3JjKQotICAgICAgICB8fCBlcXVhbExl
dHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShuYW1lLCBmb250U3JjKQotICAgICAgICB8fCBlcXVhbExl
dHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShuYW1lLCBmb3JtQWN0aW9uKQotICAgICAgICB8fCBlcXVh
bExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShuYW1lLCBmcmFtZVNyYykKLSAgICAgICAgfHwgZXF1
YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobmFtZSwgaW1nU3JjKQotICAgICAgICB8fCBlcXVh
bExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShuYW1lLCBtZWRpYVNyYykKLSAgICAgICAgfHwgZXF1
YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobmFtZSwgb2JqZWN0U3JjKQotICAgICAgICB8fCBl
cXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShuYW1lLCBwbHVnaW5UeXBlcykKLSAgICAgICAg
fHwgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobmFtZSwgcmVwb3J0VVJJKQotICAgICAg
ICB8fCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShuYW1lLCBzYW5kYm94KQotICAgICAg
ICB8fCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShuYW1lLCBzY3JpcHRTcmMpCi0gICAg
ICAgIHx8IGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG5hbWUsIHN0eWxlU3JjKQotICAg
ICAgICB8fCBpc0V4cGVyaW1lbnRhbERpcmVjdGl2ZU5hbWUobmFtZSk7Ci19Ci0KIHN0YXRpYyBi
b29sIGlzRGlyZWN0aXZlTmFtZUNoYXJhY3RlcihVQ2hhciBjKQogewogICAgIHJldHVybiBpc0FT
Q0lJQWxwaGFudW1lcmljKGMpIHx8IGMgPT0gJy0nOwpAQCAtMTgxLDI4OSArMTIyLDE3MiBAQCBz
dGQ6OnVuaXF1ZV9wdHI8Q29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdD4gQ29udGVu
dFNlY3VyaXR5UG9saWN5RGlyZWN0aQogICAgIHJldHVybiBkaXJlY3RpdmVzOwogfQogCi12b2lk
IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OnJlcG9ydFZpb2xhdGlvbihjb25z
dCBTdHJpbmcmIGRpcmVjdGl2ZVRleHQsIGNvbnN0IFN0cmluZyYgZWZmZWN0aXZlRGlyZWN0aXZl
LCBjb25zdCBTdHJpbmcmIGNvbnNvbGVNZXNzYWdlLCBjb25zdCBVUkwmIGJsb2NrZWRVUkwsIGNv
bnN0IFN0cmluZyYgY29udGV4dFVSTCwgY29uc3QgV1RGOjpPcmRpbmFsTnVtYmVyJiBjb250ZXh0
TGluZSwgSlNDOjpFeGVjU3RhdGUqIHN0YXRlKSBjb25zdAotewotICAgIFN0cmluZyBtZXNzYWdl
ID0gbV9yZXBvcnRPbmx5ID8gIltSZXBvcnQgT25seV0gIiArIGNvbnNvbGVNZXNzYWdlIDogY29u
c29sZU1lc3NhZ2U7Ci0gICAgbV9wb2xpY3kucmVwb3J0VmlvbGF0aW9uKGRpcmVjdGl2ZVRleHQs
IGVmZmVjdGl2ZURpcmVjdGl2ZSwgbWVzc2FnZSwgYmxvY2tlZFVSTCwgbV9yZXBvcnRVUklzLCBt
X2hlYWRlciwgY29udGV4dFVSTCwgY29udGV4dExpbmUsIHN0YXRlKTsKLX0KLQogQ29udGVudFNl
Y3VyaXR5UG9saWN5U291cmNlTGlzdERpcmVjdGl2ZSogQ29udGVudFNlY3VyaXR5UG9saWN5RGly
ZWN0aXZlTGlzdDo6b3BlcmF0aXZlRGlyZWN0aXZlKENvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJj
ZUxpc3REaXJlY3RpdmUqIGRpcmVjdGl2ZSkgY29uc3QKIHsKICAgICByZXR1cm4gZGlyZWN0aXZl
ID8gZGlyZWN0aXZlIDogbV9kZWZhdWx0U3JjLmdldCgpOwogfQogCi1zdGF0aWMgU3RyaW5nIGNv
bnNvbGVNZXNzYWdlRm9yVmlvbGF0aW9uKGNvbnN0IFN0cmluZyYgZWZmZWN0aXZlRGlyZWN0aXZl
LCBjb25zdCBVUkwmIGJsb2NrZWRVUkwsIGJvb2wgdmlvbGF0ZXNEZWZhdWx0U3JjLCBjb25zdCBj
aGFyKiBwcmVmaXgsIGNvbnN0IGNoYXIqIHN1YmplY3QgPSAiaXQiKQotewotICAgIFN0cmluZ0J1
aWxkZXIgcmVzdWx0OwotICAgIHJlc3VsdC5hcHBlbmQocHJlZml4KTsKLSAgICBpZiAoIWJsb2Nr
ZWRVUkwuaXNFbXB0eSgpKSB7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQoJyAnKTsKLSAgICAgICAg
cmVzdWx0LmFwcGVuZChibG9ja2VkVVJMLnN0cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0aCgp
KTsKLSAgICB9Ci0gICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoIiBiZWNhdXNlICIpOwotICAgIHJl
c3VsdC5hcHBlbmQoc3ViamVjdCk7Ci0gICAgaWYgKHZpb2xhdGVzRGVmYXVsdFNyYykgewotICAg
ICAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgiIGFwcGVhcnMgaW4gbmVpdGhlciB0aGUgIik7Ci0g
ICAgICAgIHJlc3VsdC5hcHBlbmQoZWZmZWN0aXZlRGlyZWN0aXZlKTsKLSAgICAgICAgcmVzdWx0
LmFwcGVuZExpdGVyYWwoIiBkaXJlY3RpdmUgbm9yIHRoZSBkZWZhdWx0LXNyYyBkaXJlY3RpdmUg
b2YgdGhlIENvbnRlbnQgU2VjdXJpdHkgUG9saWN5LiIpOwotICAgIH0gZWxzZSB7Ci0gICAgICAg
IHJlc3VsdC5hcHBlbmRMaXRlcmFsKCIgZG9lcyBub3QgYXBwZWFyIGluIHRoZSAiKTsKLSAgICAg
ICAgcmVzdWx0LmFwcGVuZChlZmZlY3RpdmVEaXJlY3RpdmUpOwotICAgICAgICByZXN1bHQuYXBw
ZW5kTGl0ZXJhbCgiIGRpcmVjdGl2ZSBvZiB0aGUgQ29udGVudCBTZWN1cml0eSBQb2xpY3kuIik7
Ci0gICAgfQotICAgIHJldHVybiByZXN1bHQudG9TdHJpbmcoKTsKLX0KLQotYm9vbCBDb250ZW50
U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0OjphbGxvd0phdmFTY3JpcHRVUkxzKGNvbnN0IFN0
cmluZyYgY29udGV4dFVSTCwgY29uc3QgV1RGOjpPcmRpbmFsTnVtYmVyJiBjb250ZXh0TGluZSwg
UmVwb3J0aW5nU3RhdHVzIHJlcG9ydGluZ1N0YXR1cykgY29uc3QKK2NvbnN0IENvbnRlbnRTZWN1
cml0eVBvbGljeURpcmVjdGl2ZSogQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6
dmlvbGF0ZWREaXJlY3RpdmVGb3JVbnNhZmVFdmFsKCkgY29uc3QKIHsKICAgICBDb250ZW50U2Vj
dXJpdHlQb2xpY3lTb3VyY2VMaXN0RGlyZWN0aXZlKiBvcGVyYXRpdmVEaXJlY3RpdmUgPSB0aGlz
LT5vcGVyYXRpdmVEaXJlY3RpdmUobV9zY3JpcHRTcmMuZ2V0KCkpOwotICAgIGlmIChjaGVja0lu
bGluZShvcGVyYXRpdmVEaXJlY3RpdmUpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBpZiAo
cmVwb3J0aW5nU3RhdHVzID09IFJlcG9ydGluZ1N0YXR1czo6U2VuZFJlcG9ydCkgewotICAgICAg
ICBTdHJpbmcgY29uc29sZU1lc3NhZ2UgPSBjb25zb2xlTWVzc2FnZUZvclZpb2xhdGlvbihzY3Jp
cHRTcmMsIFVSTCgpLCBvcGVyYXRpdmVEaXJlY3RpdmUgPT0gbV9kZWZhdWx0U3JjLmdldCgpLCAi
UmVmdXNlZCB0byBleGVjdXRlIGEgc2NyaXB0IiwgIml0cyBoYXNoLCBpdHMgbm9uY2UsIG9yICd1
bnNhZmUtaW5saW5lJyIpOwotICAgICAgICByZXBvcnRWaW9sYXRpb24ob3BlcmF0aXZlRGlyZWN0
aXZlLT50ZXh0KCksIHNjcmlwdFNyYywgY29uc29sZU1lc3NhZ2UsIFVSTCgpLCBjb250ZXh0VVJM
LCBjb250ZXh0TGluZSk7Ci0gICAgICAgIGlmICghbV9yZXBvcnRPbmx5KQotICAgICAgICAgICAg
bV9wb2xpY3kucmVwb3J0QmxvY2tlZFNjcmlwdEV4ZWN1dGlvblRvSW5zcGVjdG9yKG9wZXJhdGl2
ZURpcmVjdGl2ZS0+dGV4dCgpKTsKLSAgICB9Ci0gICAgcmV0dXJuIGRlbnlJZkVuZm9yY2luZ1Bv
bGljeSgpOworICAgIGlmIChjaGVja0V2YWwob3BlcmF0aXZlRGlyZWN0aXZlKSkKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIG9wZXJhdGl2ZURpcmVjdGl2ZTsKIH0KIAotYm9v
bCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0OjphbGxvd0lubGluZUV2ZW50SGFu
ZGxlcnMoY29uc3QgU3RyaW5nJiBjb250ZXh0VVJMLCBjb25zdCBXVEY6Ok9yZGluYWxOdW1iZXIm
IGNvbnRleHRMaW5lLCBSZXBvcnRpbmdTdGF0dXMgcmVwb3J0aW5nU3RhdHVzKSBjb25zdAorY29u
c3QgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlKiBDb250ZW50U2VjdXJpdHlQb2xpY3lE
aXJlY3RpdmVMaXN0Ojp2aW9sYXRlZERpcmVjdGl2ZUZvclVuc2FmZUlubGluZVNjcmlwdCgpIGNv
bnN0CiB7CiAgICAgQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdERpcmVjdGl2ZSogb3Bl
cmF0aXZlRGlyZWN0aXZlID0gdGhpcy0+b3BlcmF0aXZlRGlyZWN0aXZlKG1fc2NyaXB0U3JjLmdl
dCgpKTsKICAgICBpZiAoY2hlY2tJbmxpbmUob3BlcmF0aXZlRGlyZWN0aXZlKSkKLSAgICAgICAg
cmV0dXJuIHRydWU7Ci0gICAgaWYgKHJlcG9ydGluZ1N0YXR1cyA9PSBSZXBvcnRpbmdTdGF0dXM6
OlNlbmRSZXBvcnQpIHsKLSAgICAgICAgU3RyaW5nIGNvbnNvbGVNZXNzYWdlID0gY29uc29sZU1l
c3NhZ2VGb3JWaW9sYXRpb24oc2NyaXB0U3JjLCBVUkwoKSwgb3BlcmF0aXZlRGlyZWN0aXZlID09
IG1fZGVmYXVsdFNyYy5nZXQoKSwgIlJlZnVzZWQgdG8gZXhlY3V0ZSBhIHNjcmlwdCIsICJpdHMg
aGFzaCwgaXRzIG5vbmNlLCBvciAndW5zYWZlLWlubGluZSciKTsKLSAgICAgICAgcmVwb3J0Vmlv
bGF0aW9uKG9wZXJhdGl2ZURpcmVjdGl2ZS0+dGV4dCgpLCBzY3JpcHRTcmMsIGNvbnNvbGVNZXNz
YWdlLCBVUkwoKSwgY29udGV4dFVSTCwgY29udGV4dExpbmUpOwotICAgICAgICBpZiAoIW1fcmVw
b3J0T25seSkKLSAgICAgICAgICAgIG1fcG9saWN5LnJlcG9ydEJsb2NrZWRTY3JpcHRFeGVjdXRp
b25Ub0luc3BlY3RvcihvcGVyYXRpdmVEaXJlY3RpdmUtPnRleHQoKSk7Ci0gICAgfQotICAgIHJl
dHVybiBkZW55SWZFbmZvcmNpbmdQb2xpY3koKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7Cisg
ICAgcmV0dXJuIG9wZXJhdGl2ZURpcmVjdGl2ZTsKIH0KIAotYm9vbCBDb250ZW50U2VjdXJpdHlQ
b2xpY3lEaXJlY3RpdmVMaXN0OjphbGxvd0lubGluZVNjcmlwdChjb25zdCBTdHJpbmcmIGNvbnRl
eHRVUkwsIGNvbnN0IFdURjo6T3JkaW5hbE51bWJlciYgY29udGV4dExpbmUsIFJlcG9ydGluZ1N0
YXR1cyByZXBvcnRpbmdTdGF0dXMpIGNvbnN0Citjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lE
aXJlY3RpdmUqIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OnZpb2xhdGVkRGly
ZWN0aXZlRm9yVW5zYWZlSW5saW5lU3R5bGUoKSBjb25zdAogewotICAgIENvbnRlbnRTZWN1cml0
eVBvbGljeVNvdXJjZUxpc3REaXJlY3RpdmUqIG9wZXJhdGl2ZURpcmVjdGl2ZSA9IHRoaXMtPm9w
ZXJhdGl2ZURpcmVjdGl2ZShtX3NjcmlwdFNyYy5nZXQoKSk7CisgICAgQ29udGVudFNlY3VyaXR5
UG9saWN5U291cmNlTGlzdERpcmVjdGl2ZSogb3BlcmF0aXZlRGlyZWN0aXZlID0gdGhpcy0+b3Bl
cmF0aXZlRGlyZWN0aXZlKG1fc3R5bGVTcmMuZ2V0KCkpOwogICAgIGlmIChjaGVja0lubGluZShv
cGVyYXRpdmVEaXJlY3RpdmUpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBpZiAocmVwb3J0
aW5nU3RhdHVzID09IFJlcG9ydGluZ1N0YXR1czo6U2VuZFJlcG9ydCkgewotICAgICAgICBTdHJp
bmcgY29uc29sZU1lc3NhZ2UgPSBjb25zb2xlTWVzc2FnZUZvclZpb2xhdGlvbihzY3JpcHRTcmMs
IFVSTCgpLCBvcGVyYXRpdmVEaXJlY3RpdmUgPT0gbV9kZWZhdWx0U3JjLmdldCgpLCAiUmVmdXNl
ZCB0byBleGVjdXRlIGEgc2NyaXB0IiwgIml0cyBoYXNoLCBpdHMgbm9uY2UsIG9yICd1bnNhZmUt
aW5saW5lJyIpOwotICAgICAgICByZXBvcnRWaW9sYXRpb24ob3BlcmF0aXZlRGlyZWN0aXZlLT50
ZXh0KCksIHNjcmlwdFNyYywgY29uc29sZU1lc3NhZ2UsIFVSTCgpLCBjb250ZXh0VVJMLCBjb250
ZXh0TGluZSk7Ci0gICAgICAgIGlmICghbV9yZXBvcnRPbmx5KQotICAgICAgICAgICAgbV9wb2xp
Y3kucmVwb3J0QmxvY2tlZFNjcmlwdEV4ZWN1dGlvblRvSW5zcGVjdG9yKG9wZXJhdGl2ZURpcmVj
dGl2ZS0+dGV4dCgpKTsKLSAgICB9Ci0gICAgcmV0dXJuIGRlbnlJZkVuZm9yY2luZ1BvbGljeSgp
OworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gb3BlcmF0aXZlRGlyZWN0aXZl
OwogfQogCi1ib29sIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OmFsbG93SW5s
aW5lU2NyaXB0V2l0aEhhc2goY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5SGFzaCYgaGFzaCkg
Y29uc3QKK2NvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZSogQ29udGVudFNlY3Vy
aXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6dmlvbGF0ZWREaXJlY3RpdmVGb3JTY3JpcHRIYXNoKGNv
bnN0IENvbnRlbnRTZWN1cml0eVBvbGljeUhhc2gmIGhhc2gpIGNvbnN0CiB7Ci0gICAgcmV0dXJu
IGNoZWNrSGFzaChvcGVyYXRpdmVEaXJlY3RpdmUobV9zY3JpcHRTcmMuZ2V0KCkpLCBoYXNoKTsK
LX0KLQotYm9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0OjphbGxvd1Njcmlw
dFdpdGhOb25jZShjb25zdCBTdHJpbmcmIG5vbmNlKSBjb25zdAotewotICAgIHJldHVybiBjaGVj
a05vbmNlKG9wZXJhdGl2ZURpcmVjdGl2ZShtX3NjcmlwdFNyYy5nZXQoKSksIG5vbmNlKTsKKyAg
ICBDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0RGlyZWN0aXZlKiBvcGVyYXRpdmVEaXJl
Y3RpdmUgPSB0aGlzLT5vcGVyYXRpdmVEaXJlY3RpdmUobV9zY3JpcHRTcmMuZ2V0KCkpOworICAg
IGlmIChjaGVja0hhc2gob3BlcmF0aXZlRGlyZWN0aXZlLCBoYXNoKSkKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisgICAgcmV0dXJuIG9wZXJhdGl2ZURpcmVjdGl2ZTsKIH0KIAotYm9vbCBDb250
ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0OjphbGxvd0lubGluZVN0eWxlKGNvbnN0IFN0
cmluZyYgY29udGV4dFVSTCwgY29uc3QgV1RGOjpPcmRpbmFsTnVtYmVyJiBjb250ZXh0TGluZSwg
UmVwb3J0aW5nU3RhdHVzIHJlcG9ydGluZ1N0YXR1cykgY29uc3QKK2NvbnN0IENvbnRlbnRTZWN1
cml0eVBvbGljeURpcmVjdGl2ZSogQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6
dmlvbGF0ZWREaXJlY3RpdmVGb3JTdHlsZUhhc2goY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5
SGFzaCYgaGFzaCkgY29uc3QKIHsKICAgICBDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0
RGlyZWN0aXZlKiBvcGVyYXRpdmVEaXJlY3RpdmUgPSB0aGlzLT5vcGVyYXRpdmVEaXJlY3RpdmUo
bV9zdHlsZVNyYy5nZXQoKSk7Ci0gICAgaWYgKGNoZWNrSW5saW5lKG9wZXJhdGl2ZURpcmVjdGl2
ZSkpCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIGlmIChyZXBvcnRpbmdTdGF0dXMgPT0gUmVw
b3J0aW5nU3RhdHVzOjpTZW5kUmVwb3J0KSB7Ci0gICAgICAgIFN0cmluZyBjb25zb2xlTWVzc2Fn
ZSA9IGNvbnNvbGVNZXNzYWdlRm9yVmlvbGF0aW9uKHN0eWxlU3JjLCBVUkwoKSwgb3BlcmF0aXZl
RGlyZWN0aXZlID09IG1fZGVmYXVsdFNyYy5nZXQoKSwgIlJlZnVzZWQgdG8gYXBwbHkgYSBzdHls
ZXNoZWV0IiwgIml0cyBoYXNoLCBpdHMgbm9uY2UsIG9yICd1bnNhZmUtaW5saW5lJyIpOwotICAg
ICAgICByZXBvcnRWaW9sYXRpb24ob3BlcmF0aXZlRGlyZWN0aXZlLT50ZXh0KCksIHN0eWxlU3Jj
LCBjb25zb2xlTWVzc2FnZSwgVVJMKCksIGNvbnRleHRVUkwsIGNvbnRleHRMaW5lKTsKLSAgICB9
Ci0gICAgcmV0dXJuIGRlbnlJZkVuZm9yY2luZ1BvbGljeSgpOworICAgIGlmIChjaGVja0hhc2go
b3BlcmF0aXZlRGlyZWN0aXZlLCBoYXNoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
cmV0dXJuIG9wZXJhdGl2ZURpcmVjdGl2ZTsKIH0KIAotYm9vbCBDb250ZW50U2VjdXJpdHlQb2xp
Y3lEaXJlY3RpdmVMaXN0OjphbGxvd0lubGluZVN0eWxlV2l0aEhhc2goY29uc3QgQ29udGVudFNl
Y3VyaXR5UG9saWN5SGFzaCYgaGFzaCkgY29uc3QKK2NvbnN0IENvbnRlbnRTZWN1cml0eVBvbGlj
eURpcmVjdGl2ZSogQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6dmlvbGF0ZWRE
aXJlY3RpdmVGb3JTY3JpcHROb25jZShjb25zdCBTdHJpbmcmIG5vbmNlKSBjb25zdAogewotICAg
IHJldHVybiBjaGVja0hhc2gob3BlcmF0aXZlRGlyZWN0aXZlKG1fc3R5bGVTcmMuZ2V0KCkpLCBo
YXNoKTsKKyAgICBDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0RGlyZWN0aXZlKiBvcGVy
YXRpdmVEaXJlY3RpdmUgPSB0aGlzLT5vcGVyYXRpdmVEaXJlY3RpdmUobV9zY3JpcHRTcmMuZ2V0
KCkpOworICAgIGlmIChjaGVja05vbmNlKG9wZXJhdGl2ZURpcmVjdGl2ZSwgbm9uY2UpKQorICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gb3BlcmF0aXZlRGlyZWN0aXZlOwogfQog
Ci1ib29sIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OmFsbG93U3R5bGVXaXRo
Tm9uY2UoY29uc3QgU3RyaW5nJiBub25jZSkgY29uc3QKK2NvbnN0IENvbnRlbnRTZWN1cml0eVBv
bGljeURpcmVjdGl2ZSogQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6dmlvbGF0
ZWREaXJlY3RpdmVGb3JTdHlsZU5vbmNlKGNvbnN0IFN0cmluZyYgbm9uY2UpIGNvbnN0CiB7Ci0g
ICAgcmV0dXJuIGNoZWNrTm9uY2Uob3BlcmF0aXZlRGlyZWN0aXZlKG1fc3R5bGVTcmMuZ2V0KCkp
LCBub25jZSk7CisgICAgQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdERpcmVjdGl2ZSog
b3BlcmF0aXZlRGlyZWN0aXZlID0gdGhpcy0+b3BlcmF0aXZlRGlyZWN0aXZlKG1fc3R5bGVTcmMu
Z2V0KCkpOworICAgIGlmIChjaGVja05vbmNlKG9wZXJhdGl2ZURpcmVjdGl2ZSwgbm9uY2UpKQor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gb3BlcmF0aXZlRGlyZWN0aXZlOwog
fQogCi1ib29sIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OmFsbG93RXZhbChK
U0M6OkV4ZWNTdGF0ZSogc3RhdGUsIFJlcG9ydGluZ1N0YXR1cyByZXBvcnRpbmdTdGF0dXMpIGNv
bnN0Citjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmUqIENvbnRlbnRTZWN1cml0
eVBvbGljeURpcmVjdGl2ZUxpc3Q6OnZpb2xhdGVkRGlyZWN0aXZlRm9yQmFzZVVSSShjb25zdCBV
UkwmIHVybCkgY29uc3QKIHsKLSAgICBDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0RGly
ZWN0aXZlKiBvcGVyYXRpdmVEaXJlY3RpdmUgPSB0aGlzLT5vcGVyYXRpdmVEaXJlY3RpdmUobV9z
Y3JpcHRTcmMuZ2V0KCkpOwotICAgIGlmIChjaGVja0V2YWwob3BlcmF0aXZlRGlyZWN0aXZlKSkK
LSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgaWYgKHJlcG9ydGluZ1N0YXR1cyA9PSBSZXBvcnRp
bmdTdGF0dXM6OlNlbmRSZXBvcnQpIHsKLSAgICAgICAgU3RyaW5nIGNvbnNvbGVNZXNzYWdlID0g
Y29uc29sZU1lc3NhZ2VGb3JWaW9sYXRpb24oc2NyaXB0U3JjLCBVUkwoKSwgb3BlcmF0aXZlRGly
ZWN0aXZlID09IG1fZGVmYXVsdFNyYy5nZXQoKSwgIlJlZnVzZWQgdG8gZXhlY3V0ZSBhIHNjcmlw
dCIsICIndW5zYWZlLWV2YWwnIik7Ci0gICAgICAgIC8vIEZJWE1FOiBRdWVyeSBKU0M6OkV4ZWNT
dGF0ZSBmb3Igc291cmNlIGZpbGUsIGxpbmUgYW5kIGNvbHVtbiBpbmZvcm1hdGlvbi4KLSAgICAg
ICAgcmVwb3J0VmlvbGF0aW9uKG9wZXJhdGl2ZURpcmVjdGl2ZS0+dGV4dCgpLCBzY3JpcHRTcmMs
IGNvbnNvbGVNZXNzYWdlLCBVUkwoKSwgU3RyaW5nKCksIFdURjo6T3JkaW5hbE51bWJlcjo6YmVm
b3JlRmlyc3QoKSwgc3RhdGUpOwotICAgICAgICBpZiAoIW1fcmVwb3J0T25seSkKLSAgICAgICAg
ICAgIG1fcG9saWN5LnJlcG9ydEJsb2NrZWRTY3JpcHRFeGVjdXRpb25Ub0luc3BlY3RvcihvcGVy
YXRpdmVEaXJlY3RpdmUtPnRleHQoKSk7Ci0gICAgfQotICAgIHJldHVybiBkZW55SWZFbmZvcmNp
bmdQb2xpY3koKTsKKyAgICBpZiAoY2hlY2tTb3VyY2UobV9iYXNlVVJJLmdldCgpLCB1cmwpKQor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gbV9iYXNlVVJJLmdldCgpOwogfQog
Ci1ib29sIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OmFsbG93UGx1Z2luVHlw
ZShjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgdHlwZUF0dHJpYnV0ZSwgY29uc3Qg
VVJMJiB1cmwsIFJlcG9ydGluZ1N0YXR1cyByZXBvcnRpbmdTdGF0dXMpIGNvbnN0Citjb25zdCBD
b250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmUqIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVj
dGl2ZUxpc3Q6OnZpb2xhdGVkRGlyZWN0aXZlRm9yQ2hpbGRDb250ZXh0KGNvbnN0IFVSTCYgdXJs
KSBjb25zdAogewotICAgIGlmIChjaGVja01lZGlhVHlwZShtX3BsdWdpblR5cGVzLmdldCgpLCB0
eXBlLCB0eXBlQXR0cmlidXRlKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgaWYgKHJlcG9y
dGluZ1N0YXR1cyA9PSBSZXBvcnRpbmdTdGF0dXM6OlNlbmRSZXBvcnQpIHsKLSAgICAgICAgYm9v
bCB2aW9sYXRlc0RlZmF1bHRTcmMgPSBmYWxzZTsKLSAgICAgICAgU3RyaW5nIGNvbnNvbGVNZXNz
YWdlID0gY29uc29sZU1lc3NhZ2VGb3JWaW9sYXRpb24ocGx1Z2luVHlwZXMsIHVybCwgdmlvbGF0
ZXNEZWZhdWx0U3JjLCAiUmVmdXNlZCB0byBsb2FkIiwgIml0cyBNSU1FIHR5cGUiKTsKLSAgICAg
ICAgcmVwb3J0VmlvbGF0aW9uKG1fcGx1Z2luVHlwZXMtPnRleHQoKSwgcGx1Z2luVHlwZXMsIGNv
bnNvbGVNZXNzYWdlLCB1cmwpOwotICAgIH0KLSAgICByZXR1cm4gZGVueUlmRW5mb3JjaW5nUG9s
aWN5KCk7CisgICAgQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdERpcmVjdGl2ZSogb3Bl
cmF0aXZlRGlyZWN0aXZlID0gdGhpcy0+b3BlcmF0aXZlRGlyZWN0aXZlKG1fY2hpbGRTcmMuZ2V0
KCkpOworICAgIGlmIChjaGVja1NvdXJjZShvcGVyYXRpdmVEaXJlY3RpdmUsIHVybCkpCisgICAg
ICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBvcGVyYXRpdmVEaXJlY3RpdmU7CiB9CiAK
LWJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6YWxsb3dTY3JpcHRGcm9t
U291cmNlKGNvbnN0IFVSTCYgdXJsLCBSZXBvcnRpbmdTdGF0dXMgcmVwb3J0aW5nU3RhdHVzKSBj
b25zdAorY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlKiBDb250ZW50U2VjdXJp
dHlQb2xpY3lEaXJlY3RpdmVMaXN0Ojp2aW9sYXRlZERpcmVjdGl2ZUZvckNvbm5lY3RTb3VyY2Uo
Y29uc3QgVVJMJiB1cmwpIGNvbnN0CiB7Ci0gICAgQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNl
TGlzdERpcmVjdGl2ZSogb3BlcmF0aXZlRGlyZWN0aXZlID0gdGhpcy0+b3BlcmF0aXZlRGlyZWN0
aXZlKG1fc2NyaXB0U3JjLmdldCgpKTsKKyAgICBDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VM
aXN0RGlyZWN0aXZlKiBvcGVyYXRpdmVEaXJlY3RpdmUgPSB0aGlzLT5vcGVyYXRpdmVEaXJlY3Rp
dmUobV9jb25uZWN0U3JjLmdldCgpKTsKICAgICBpZiAoY2hlY2tTb3VyY2Uob3BlcmF0aXZlRGly
ZWN0aXZlLCB1cmwpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBpZiAocmVwb3J0aW5nU3Rh
dHVzID09IFJlcG9ydGluZ1N0YXR1czo6U2VuZFJlcG9ydCkgewotICAgICAgICBTdHJpbmcgY29u
c29sZU1lc3NhZ2UgPSBjb25zb2xlTWVzc2FnZUZvclZpb2xhdGlvbihzY3JpcHRTcmMsIHVybCwg
b3BlcmF0aXZlRGlyZWN0aXZlID09IG1fZGVmYXVsdFNyYy5nZXQoKSwgIlJlZnVzZWQgdG8gbG9h
ZCIpOwotICAgICAgICByZXBvcnRWaW9sYXRpb24ob3BlcmF0aXZlRGlyZWN0aXZlLT50ZXh0KCks
IHNjcmlwdFNyYywgY29uc29sZU1lc3NhZ2UsIHVybCk7Ci0gICAgfQotICAgIHJldHVybiBkZW55
SWZFbmZvcmNpbmdQb2xpY3koKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJu
IG9wZXJhdGl2ZURpcmVjdGl2ZTsKIH0KIAotYm9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJl
Y3RpdmVMaXN0OjphbGxvd09iamVjdEZyb21Tb3VyY2UoY29uc3QgVVJMJiB1cmwsIFJlcG9ydGlu
Z1N0YXR1cyByZXBvcnRpbmdTdGF0dXMpIGNvbnN0Citjb25zdCBDb250ZW50U2VjdXJpdHlQb2xp
Y3lEaXJlY3RpdmUqIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OnZpb2xhdGVk
RGlyZWN0aXZlRm9yRm9udChjb25zdCBVUkwmIHVybCkgY29uc3QKIHsKLSAgICBpZiAodXJsLmlz
QmxhbmtVUkwoKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgQ29udGVudFNlY3VyaXR5UG9s
aWN5U291cmNlTGlzdERpcmVjdGl2ZSogb3BlcmF0aXZlRGlyZWN0aXZlID0gdGhpcy0+b3BlcmF0
aXZlRGlyZWN0aXZlKG1fb2JqZWN0U3JjLmdldCgpKTsKKyAgICBDb250ZW50U2VjdXJpdHlQb2xp
Y3lTb3VyY2VMaXN0RGlyZWN0aXZlKiBvcGVyYXRpdmVEaXJlY3RpdmUgPSB0aGlzLT5vcGVyYXRp
dmVEaXJlY3RpdmUobV9mb250U3JjLmdldCgpKTsKICAgICBpZiAoY2hlY2tTb3VyY2Uob3BlcmF0
aXZlRGlyZWN0aXZlLCB1cmwpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBpZiAocmVwb3J0
aW5nU3RhdHVzID09IFJlcG9ydGluZ1N0YXR1czo6U2VuZFJlcG9ydCkgewotICAgICAgICBTdHJp
bmcgY29uc29sZU1lc3NhZ2UgPSBjb25zb2xlTWVzc2FnZUZvclZpb2xhdGlvbihvYmplY3RTcmMs
IHVybCwgb3BlcmF0aXZlRGlyZWN0aXZlID09IG1fZGVmYXVsdFNyYy5nZXQoKSwgIlJlZnVzZWQg
dG8gbG9hZCIpOwotICAgICAgICByZXBvcnRWaW9sYXRpb24ob3BlcmF0aXZlRGlyZWN0aXZlLT50
ZXh0KCksIG9iamVjdFNyYywgY29uc29sZU1lc3NhZ2UsIHVybCk7Ci0gICAgfQotICAgIHJldHVy
biBkZW55SWZFbmZvcmNpbmdQb2xpY3koKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
cmV0dXJuIG9wZXJhdGl2ZURpcmVjdGl2ZTsKIH0KIAotYm9vbCBDb250ZW50U2VjdXJpdHlQb2xp
Y3lEaXJlY3RpdmVMaXN0OjphbGxvd0NoaWxkQ29udGV4dEZyb21Tb3VyY2UoY29uc3QgVVJMJiB1
cmwsIFJlcG9ydGluZ1N0YXR1cyByZXBvcnRpbmdTdGF0dXMpIGNvbnN0Citjb25zdCBDb250ZW50
U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmUqIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxp
c3Q6OnZpb2xhdGVkRGlyZWN0aXZlRm9yRm9ybUFjdGlvbihjb25zdCBVUkwmIHVybCkgY29uc3QK
IHsKLSAgICBDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0RGlyZWN0aXZlKiBvcGVyYXRp
dmVEaXJlY3RpdmUgPSB0aGlzLT5vcGVyYXRpdmVEaXJlY3RpdmUobV9jaGlsZFNyYy5nZXQoKSk7
Ci0gICAgaWYgKGNoZWNrU291cmNlKG9wZXJhdGl2ZURpcmVjdGl2ZSwgdXJsKSkKLSAgICAgICAg
cmV0dXJuIHRydWU7Ci0gICAgaWYgKHJlcG9ydGluZ1N0YXR1cyA9PSBSZXBvcnRpbmdTdGF0dXM6
OlNlbmRSZXBvcnQpIHsKLSAgICAgICAgU3RyaW5nIGNvbnNvbGVNZXNzYWdlID0gY29uc29sZU1l
c3NhZ2VGb3JWaW9sYXRpb24oY2hpbGRTcmMsIHVybCwgb3BlcmF0aXZlRGlyZWN0aXZlID09IG1f
ZGVmYXVsdFNyYy5nZXQoKSwgIlJlZnVzZWQgdG8gbG9hZCIpOwotICAgICAgICByZXBvcnRWaW9s
YXRpb24ob3BlcmF0aXZlRGlyZWN0aXZlLT50ZXh0KCksIGNoaWxkU3JjLCBjb25zb2xlTWVzc2Fn
ZSwgdXJsKTsKLSAgICB9Ci0gICAgcmV0dXJuIGRlbnlJZkVuZm9yY2luZ1BvbGljeSgpOworICAg
IGlmIChjaGVja1NvdXJjZShtX2Zvcm1BY3Rpb24uZ2V0KCksIHVybCkpCisgICAgICAgIHJldHVy
biBudWxscHRyOworICAgIHJldHVybiBtX2Zvcm1BY3Rpb24uZ2V0KCk7CiB9CiAKLWJvb2wgQ29u
dGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6YWxsb3dDaGlsZEZyYW1lRnJvbVNvdXJj
ZShjb25zdCBVUkwmIHVybCwgUmVwb3J0aW5nU3RhdHVzIHJlcG9ydGluZ1N0YXR1cykgY29uc3QK
K2NvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZSogQ29udGVudFNlY3VyaXR5UG9s
aWN5RGlyZWN0aXZlTGlzdDo6dmlvbGF0ZWREaXJlY3RpdmVGb3JGcmFtZShjb25zdCBVUkwmIHVy
bCkgY29uc3QKIHsKICAgICBpZiAodXJsLmlzQmxhbmtVUkwoKSkKLSAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgLy8gV2UgbXVzdCBlbmZvcmNlIHRo
ZSBmcmFtZS1zcmMgZGlyZWN0aXZlIChpZiBzcGVjaWZpZWQpIGJlZm9yZSBlbmZvcmNpbmcgdGhl
IGNoaWxkLXNyYyBkaXJlY3RpdmUgZm9yIGEgbmVzdGVkIGJyb3dzaW5nCiAgICAgLy8gY29udGV4
dCBieSA8aHR0cHM6Ly93M2MuZ2l0aHViLmlvL3dlYmFwcHNlYy1jc3AvMi8jZGlyZWN0aXZlLWNo
aWxkLXNyYy1uZXN0ZWQ+ICgyOSBBdWd1c3QgMjAxNSkuCiAgICAgQ29udGVudFNlY3VyaXR5UG9s
aWN5U291cmNlTGlzdERpcmVjdGl2ZSogb3BlcmF0aXZlRGlyZWN0aXZlID0gdGhpcy0+b3BlcmF0
aXZlRGlyZWN0aXZlKG1fZnJhbWVTcmMgPyBtX2ZyYW1lU3JjLmdldCgpIDogbV9jaGlsZFNyYy5n
ZXQoKSk7CiAgICAgaWYgKGNoZWNrU291cmNlKG9wZXJhdGl2ZURpcmVjdGl2ZSwgdXJsKSkKLSAg
ICAgICAgcmV0dXJuIHRydWU7Ci0gICAgaWYgKHJlcG9ydGluZ1N0YXR1cyA9PSBSZXBvcnRpbmdT
dGF0dXM6OlNlbmRSZXBvcnQpIHsKLSAgICAgICAgU3RyaW5nIGNvbnNvbGVNZXNzYWdlID0gY29u
c29sZU1lc3NhZ2VGb3JWaW9sYXRpb24oZnJhbWVTcmMsIHVybCwgb3BlcmF0aXZlRGlyZWN0aXZl
ID09IG1fZGVmYXVsdFNyYy5nZXQoKSwgIlJlZnVzZWQgdG8gbG9hZCIpOwotICAgICAgICByZXBv
cnRWaW9sYXRpb24ob3BlcmF0aXZlRGlyZWN0aXZlLT50ZXh0KCksIGZyYW1lU3JjLCBjb25zb2xl
TWVzc2FnZSwgdXJsKTsKLSAgICB9Ci0gICAgcmV0dXJuIGRlbnlJZkVuZm9yY2luZ1BvbGljeSgp
OworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gb3BlcmF0aXZlRGlyZWN0aXZl
OwogfQogCi1ib29sIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OmFsbG93SW1h
Z2VGcm9tU291cmNlKGNvbnN0IFVSTCYgdXJsLCBSZXBvcnRpbmdTdGF0dXMgcmVwb3J0aW5nU3Rh
dHVzKSBjb25zdAorY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlKiBDb250ZW50
U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0Ojp2aW9sYXRlZERpcmVjdGl2ZUZvckZyYW1lQW5j
ZXN0b3IoY29uc3QgRnJhbWUmIGZyYW1lKSBjb25zdAogewotICAgIENvbnRlbnRTZWN1cml0eVBv
bGljeVNvdXJjZUxpc3REaXJlY3RpdmUqIG9wZXJhdGl2ZURpcmVjdGl2ZSA9IHRoaXMtPm9wZXJh
dGl2ZURpcmVjdGl2ZShtX2ltZ1NyYy5nZXQoKSk7Ci0gICAgaWYgKGNoZWNrU291cmNlKG9wZXJh
dGl2ZURpcmVjdGl2ZSwgdXJsKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgaWYgKHJlcG9y
dGluZ1N0YXR1cyA9PSBSZXBvcnRpbmdTdGF0dXM6OlNlbmRSZXBvcnQpIHsKLSAgICAgICAgU3Ry
aW5nIGNvbnNvbGVNZXNzYWdlID0gY29uc29sZU1lc3NhZ2VGb3JWaW9sYXRpb24oaW1nU3JjLCB1
cmwsIG9wZXJhdGl2ZURpcmVjdGl2ZSA9PSBtX2RlZmF1bHRTcmMuZ2V0KCksICJSZWZ1c2VkIHRv
IGxvYWQiKTsKLSAgICAgICAgcmVwb3J0VmlvbGF0aW9uKG9wZXJhdGl2ZURpcmVjdGl2ZS0+dGV4
dCgpLCBpbWdTcmMsIGNvbnNvbGVNZXNzYWdlLCB1cmwpOwotICAgIH0KLSAgICByZXR1cm4gZGVu
eUlmRW5mb3JjaW5nUG9saWN5KCk7Ci19Ci0KLWJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5RGly
ZWN0aXZlTGlzdDo6YWxsb3dTdHlsZUZyb21Tb3VyY2UoY29uc3QgVVJMJiB1cmwsIFJlcG9ydGlu
Z1N0YXR1cyByZXBvcnRpbmdTdGF0dXMpIGNvbnN0Ci17Ci0gICAgQ29udGVudFNlY3VyaXR5UG9s
aWN5U291cmNlTGlzdERpcmVjdGl2ZSogb3BlcmF0aXZlRGlyZWN0aXZlID0gdGhpcy0+b3BlcmF0
aXZlRGlyZWN0aXZlKG1fc3R5bGVTcmMuZ2V0KCkpOwotICAgIGlmIChjaGVja1NvdXJjZShvcGVy
YXRpdmVEaXJlY3RpdmUsIHVybCkpCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIGlmIChyZXBv
cnRpbmdTdGF0dXMgPT0gUmVwb3J0aW5nU3RhdHVzOjpTZW5kUmVwb3J0KSB7Ci0gICAgICAgIFN0
cmluZyBjb25zb2xlTWVzc2FnZSA9IGNvbnNvbGVNZXNzYWdlRm9yVmlvbGF0aW9uKHN0eWxlU3Jj
LCB1cmwsIG9wZXJhdGl2ZURpcmVjdGl2ZSA9PSBtX2RlZmF1bHRTcmMuZ2V0KCksICJSZWZ1c2Vk
IHRvIGxvYWQiKTsKLSAgICAgICAgcmVwb3J0VmlvbGF0aW9uKG9wZXJhdGl2ZURpcmVjdGl2ZS0+
dGV4dCgpLCBzdHlsZVNyYywgY29uc29sZU1lc3NhZ2UsIHVybCk7Ci0gICAgfQotICAgIHJldHVy
biBkZW55SWZFbmZvcmNpbmdQb2xpY3koKTsKKyAgICBpZiAoY2hlY2tGcmFtZUFuY2VzdG9ycyht
X2ZyYW1lQW5jZXN0b3JzLmdldCgpLCBmcmFtZSkpCisgICAgICAgIHJldHVybiBudWxscHRyOwor
ICAgIHJldHVybiBtX2ZyYW1lQW5jZXN0b3JzLmdldCgpOwogfQogCi1ib29sIENvbnRlbnRTZWN1
cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OmFsbG93Rm9udEZyb21Tb3VyY2UoY29uc3QgVVJMJiB1
cmwsIFJlcG9ydGluZ1N0YXR1cyByZXBvcnRpbmdTdGF0dXMpIGNvbnN0Citjb25zdCBDb250ZW50
U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmUqIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxp
c3Q6OnZpb2xhdGVkRGlyZWN0aXZlRm9ySW1hZ2UoY29uc3QgVVJMJiB1cmwpIGNvbnN0CiB7Ci0g
ICAgQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdERpcmVjdGl2ZSogb3BlcmF0aXZlRGly
ZWN0aXZlID0gdGhpcy0+b3BlcmF0aXZlRGlyZWN0aXZlKG1fZm9udFNyYy5nZXQoKSk7CisgICAg
Q29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdERpcmVjdGl2ZSogb3BlcmF0aXZlRGlyZWN0
aXZlID0gdGhpcy0+b3BlcmF0aXZlRGlyZWN0aXZlKG1faW1nU3JjLmdldCgpKTsKICAgICBpZiAo
Y2hlY2tTb3VyY2Uob3BlcmF0aXZlRGlyZWN0aXZlLCB1cmwpKQotICAgICAgICByZXR1cm4gdHJ1
ZTsKLSAgICBpZiAocmVwb3J0aW5nU3RhdHVzID09IFJlcG9ydGluZ1N0YXR1czo6U2VuZFJlcG9y
dCkgewotICAgICAgICBTdHJpbmcgY29uc29sZU1lc3NhZ2UgPSBjb25zb2xlTWVzc2FnZUZvclZp
b2xhdGlvbihmb250U3JjLCB1cmwsIG9wZXJhdGl2ZURpcmVjdGl2ZSA9PSBtX2RlZmF1bHRTcmMu
Z2V0KCksICJSZWZ1c2VkIHRvIGxvYWQiKTsKLSAgICAgICAgcmVwb3J0VmlvbGF0aW9uKG9wZXJh
dGl2ZURpcmVjdGl2ZS0+dGV4dCgpLCBmb250U3JjLCBjb25zb2xlTWVzc2FnZSwgdXJsKTsKLSAg
ICB9Ci0gICAgcmV0dXJuIGRlbnlJZkVuZm9yY2luZ1BvbGljeSgpOworICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICByZXR1cm4gb3BlcmF0aXZlRGlyZWN0aXZlOwogfQogCi1ib29sIENvbnRl
bnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OmFsbG93TWVkaWFGcm9tU291cmNlKGNvbnN0
IFVSTCYgdXJsLCBSZXBvcnRpbmdTdGF0dXMgcmVwb3J0aW5nU3RhdHVzKSBjb25zdAorY29uc3Qg
Q29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlKiBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJl
Y3RpdmVMaXN0Ojp2aW9sYXRlZERpcmVjdGl2ZUZvck1lZGlhKGNvbnN0IFVSTCYgdXJsKSBjb25z
dAogewogICAgIENvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3REaXJlY3RpdmUqIG9wZXJh
dGl2ZURpcmVjdGl2ZSA9IHRoaXMtPm9wZXJhdGl2ZURpcmVjdGl2ZShtX21lZGlhU3JjLmdldCgp
KTsKICAgICBpZiAoY2hlY2tTb3VyY2Uob3BlcmF0aXZlRGlyZWN0aXZlLCB1cmwpKQotICAgICAg
ICByZXR1cm4gdHJ1ZTsKLSAgICBpZiAocmVwb3J0aW5nU3RhdHVzID09IFJlcG9ydGluZ1N0YXR1
czo6U2VuZFJlcG9ydCkgewotICAgICAgICBTdHJpbmcgY29uc29sZU1lc3NhZ2UgPSBjb25zb2xl
TWVzc2FnZUZvclZpb2xhdGlvbihtZWRpYVNyYywgdXJsLCBvcGVyYXRpdmVEaXJlY3RpdmUgPT0g
bV9kZWZhdWx0U3JjLmdldCgpLCAiUmVmdXNlZCB0byBsb2FkIik7Ci0gICAgICAgIHJlcG9ydFZp
b2xhdGlvbihvcGVyYXRpdmVEaXJlY3RpdmUtPnRleHQoKSwgbWVkaWFTcmMsIGNvbnNvbGVNZXNz
YWdlLCB1cmwpOwotICAgIH0KLSAgICByZXR1cm4gZGVueUlmRW5mb3JjaW5nUG9saWN5KCk7Cisg
ICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBvcGVyYXRpdmVEaXJlY3RpdmU7CiB9
CiAKLWJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6YWxsb3dDb25uZWN0
VG9Tb3VyY2UoY29uc3QgVVJMJiB1cmwsIFJlcG9ydGluZ1N0YXR1cyByZXBvcnRpbmdTdGF0dXMp
IGNvbnN0Citjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmUqIENvbnRlbnRTZWN1
cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OnZpb2xhdGVkRGlyZWN0aXZlRm9yT2JqZWN0U291cmNl
KGNvbnN0IFVSTCYgdXJsKSBjb25zdAogewotICAgIENvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJj
ZUxpc3REaXJlY3RpdmUqIG9wZXJhdGl2ZURpcmVjdGl2ZSA9IHRoaXMtPm9wZXJhdGl2ZURpcmVj
dGl2ZShtX2Nvbm5lY3RTcmMuZ2V0KCkpOworICAgIGlmICh1cmwuaXNCbGFua1VSTCgpKQorICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0
RGlyZWN0aXZlKiBvcGVyYXRpdmVEaXJlY3RpdmUgPSB0aGlzLT5vcGVyYXRpdmVEaXJlY3RpdmUo
bV9vYmplY3RTcmMuZ2V0KCkpOwogICAgIGlmIChjaGVja1NvdXJjZShvcGVyYXRpdmVEaXJlY3Rp
dmUsIHVybCkpCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIGlmIChyZXBvcnRpbmdTdGF0dXMg
PT0gUmVwb3J0aW5nU3RhdHVzOjpTZW5kUmVwb3J0KSB7Ci0gICAgICAgIFN0cmluZyBjb25zb2xl
TWVzc2FnZSA9IGNvbnNvbGVNZXNzYWdlRm9yVmlvbGF0aW9uKGNvbm5lY3RTcmMsIHVybCwgb3Bl
cmF0aXZlRGlyZWN0aXZlID09IG1fZGVmYXVsdFNyYy5nZXQoKSwgIlJlZnVzZWQgdG8gY29ubmVj
dCB0byIpOwotICAgICAgICByZXBvcnRWaW9sYXRpb24ob3BlcmF0aXZlRGlyZWN0aXZlLT50ZXh0
KCksIGNvbm5lY3RTcmMsIGNvbnNvbGVNZXNzYWdlLCB1cmwpOwotICAgIH0KLSAgICByZXR1cm4g
ZGVueUlmRW5mb3JjaW5nUG9saWN5KCk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJl
dHVybiBvcGVyYXRpdmVEaXJlY3RpdmU7CiB9CiAKLWJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5
RGlyZWN0aXZlTGlzdDo6YWxsb3dGb3JtQWN0aW9uKGNvbnN0IFVSTCYgdXJsLCBSZXBvcnRpbmdT
dGF0dXMgcmVwb3J0aW5nU3RhdHVzKSBjb25zdAorY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5
RGlyZWN0aXZlKiBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0Ojp2aW9sYXRlZERp
cmVjdGl2ZUZvclBsdWdpblR5cGUoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIHR5
cGVBdHRyaWJ1dGUpIGNvbnN0CiB7Ci0gICAgaWYgKGNoZWNrU291cmNlKG1fZm9ybUFjdGlvbi5n
ZXQoKSwgdXJsKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgaWYgKHJlcG9ydGluZ1N0YXR1
cyA9PSBSZXBvcnRpbmdTdGF0dXM6OlNlbmRSZXBvcnQpIHsKLSAgICAgICAgYm9vbCB2aW9sYXRl
c0RlZmF1bHRTcmMgPSBmYWxzZTsKLSAgICAgICAgU3RyaW5nIGNvbnNvbGVNZXNzYWdlID0gY29u
c29sZU1lc3NhZ2VGb3JWaW9sYXRpb24oZm9ybUFjdGlvbiwgdXJsLCB2aW9sYXRlc0RlZmF1bHRT
cmMsICJSZWZ1c2VkIHRvIGxvYWQiKTsKLSAgICAgICAgcmVwb3J0VmlvbGF0aW9uKG1fZm9ybUFj
dGlvbi0+dGV4dCgpLCBmb3JtQWN0aW9uLCBjb25zb2xlTWVzc2FnZSwgdXJsKTsKLSAgICB9Ci0g
ICAgcmV0dXJuIGRlbnlJZkVuZm9yY2luZ1BvbGljeSgpOworICAgIGlmIChjaGVja01lZGlhVHlw
ZShtX3BsdWdpblR5cGVzLmdldCgpLCB0eXBlLCB0eXBlQXR0cmlidXRlKSkKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIG1fcGx1Z2luVHlwZXMuZ2V0KCk7CiB9CiAKLWJvb2wg
Q29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6YWxsb3dCYXNlVVJJKGNvbnN0IFVS
TCYgdXJsLCBSZXBvcnRpbmdTdGF0dXMgcmVwb3J0aW5nU3RhdHVzKSBjb25zdAorY29uc3QgQ29u
dGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlKiBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3Rp
dmVMaXN0Ojp2aW9sYXRlZERpcmVjdGl2ZUZvclNjcmlwdChjb25zdCBVUkwmIHVybCkgY29uc3QK
IHsKLSAgICBpZiAoY2hlY2tTb3VyY2UobV9iYXNlVVJJLmdldCgpLCB1cmwpKQotICAgICAgICBy
ZXR1cm4gdHJ1ZTsKLSAgICBpZiAocmVwb3J0aW5nU3RhdHVzID09IFJlcG9ydGluZ1N0YXR1czo6
U2VuZFJlcG9ydCkgewotICAgICAgICBib29sIHZpb2xhdGVzRGVmYXVsdFNyYyA9IGZhbHNlOwot
ICAgICAgICBTdHJpbmcgY29uc29sZU1lc3NhZ2UgPSBjb25zb2xlTWVzc2FnZUZvclZpb2xhdGlv
bihiYXNlVVJJLCB1cmwsIHZpb2xhdGVzRGVmYXVsdFNyYywgIlJlZnVzZWQgdG8gY2hhbmdlIHRo
ZSBkb2N1bWVudCBiYXNlIFVSTCB0byIpOwotICAgICAgICByZXBvcnRWaW9sYXRpb24obV9iYXNl
VVJJLT50ZXh0KCksIGJhc2VVUkksIGNvbnNvbGVNZXNzYWdlLCB1cmwpOwotICAgIH0KLSAgICBy
ZXR1cm4gZGVueUlmRW5mb3JjaW5nUG9saWN5KCk7CisgICAgQ29udGVudFNlY3VyaXR5UG9saWN5
U291cmNlTGlzdERpcmVjdGl2ZSogb3BlcmF0aXZlRGlyZWN0aXZlID0gdGhpcy0+b3BlcmF0aXZl
RGlyZWN0aXZlKG1fc2NyaXB0U3JjLmdldCgpKTsKKyAgICBpZiAoY2hlY2tTb3VyY2Uob3BlcmF0
aXZlRGlyZWN0aXZlLCB1cmwpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4g
b3BlcmF0aXZlRGlyZWN0aXZlOwogfQogCi1ib29sIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVj
dGl2ZUxpc3Q6OmFsbG93RnJhbWVBbmNlc3RvcnMoY29uc3QgRnJhbWUmIGZyYW1lLCBjb25zdCBV
UkwmIHVybCwgUmVwb3J0aW5nU3RhdHVzIHJlcG9ydGluZ1N0YXR1cykgY29uc3QKK2NvbnN0IENv
bnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZSogQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0
aXZlTGlzdDo6dmlvbGF0ZWREaXJlY3RpdmVGb3JTdHlsZShjb25zdCBVUkwmIHVybCkgY29uc3QK
IHsKLSAgICBpZiAoY2hlY2tGcmFtZUFuY2VzdG9ycyhtX2ZyYW1lQW5jZXN0b3JzLmdldCgpLCBm
cmFtZSkpCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIGlmIChyZXBvcnRpbmdTdGF0dXMgPT0g
UmVwb3J0aW5nU3RhdHVzOjpTZW5kUmVwb3J0KSB7Ci0gICAgICAgIGJvb2wgdmlvbGF0ZXNEZWZh
dWx0U3JjID0gZmFsc2U7Ci0gICAgICAgIFN0cmluZyBjb25zb2xlTWVzc2FnZSA9IGNvbnNvbGVN
ZXNzYWdlRm9yVmlvbGF0aW9uKGZyYW1lQW5jZXN0b3JzLCB1cmwsIHZpb2xhdGVzRGVmYXVsdFNy
YywgIlJlZnVzZWQgdG8gbG9hZCIpOwotICAgICAgICByZXBvcnRWaW9sYXRpb24obV9mcmFtZUFu
Y2VzdG9ycy0+dGV4dCgpLCBmcmFtZUFuY2VzdG9ycywgY29uc29sZU1lc3NhZ2UsIHVybCk7Ci0g
ICAgfQotICAgIHJldHVybiBkZW55SWZFbmZvcmNpbmdQb2xpY3koKTsKKyAgICBDb250ZW50U2Vj
dXJpdHlQb2xpY3lTb3VyY2VMaXN0RGlyZWN0aXZlKiBvcGVyYXRpdmVEaXJlY3RpdmUgPSB0aGlz
LT5vcGVyYXRpdmVEaXJlY3RpdmUobV9zdHlsZVNyYy5nZXQoKSk7CisgICAgaWYgKGNoZWNrU291
cmNlKG9wZXJhdGl2ZURpcmVjdGl2ZSwgdXJsKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7Cisg
ICAgcmV0dXJuIG9wZXJhdGl2ZURpcmVjdGl2ZTsKIH0KIAogLy8gcG9saWN5ICAgICAgICAgICAg
PSBkaXJlY3RpdmUtbGlzdApAQCAtNDg4LDggKzMxMiw5IEBAIHZvaWQgQ29udGVudFNlY3VyaXR5
UG9saWN5RGlyZWN0aXZlTGlzdDo6cGFyc2UoY29uc3QgU3RyaW5nJiBwb2xpY3ksIENvbnRlbnRT
ZWN1CiAgICAgICAgICAgICBBU1NFUlQoIW5hbWUuaXNFbXB0eSgpKTsKICAgICAgICAgICAgIHN3
aXRjaCAocG9saWN5RnJvbSkgewogICAgICAgICAgICAgY2FzZSBDb250ZW50U2VjdXJpdHlQb2xp
Y3k6OlBvbGljeUZyb206OkhUVFBFcXVpdk1ldGE6Ci0gICAgICAgICAgICAgICAgaWYgKGVxdWFs
TGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG5hbWUsIHNhbmRib3gpIHx8IGVxdWFsTGV0dGVyc0ln
bm9yaW5nQVNDSUlDYXNlKG5hbWUsIHJlcG9ydFVSSSkKLSAgICAgICAgICAgICAgICAgICAgfHwg
ZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobmFtZSwgZnJhbWVBbmNlc3RvcnMpKSB7Cisg
ICAgICAgICAgICAgICAgaWYgKGVxdWFsSWdub3JpbmdBU0NJSUNhc2UobmFtZSwgQ29udGVudFNl
Y3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXM6OnNhbmRib3gpCisgICAgICAgICAgICAgICAgICAg
IHx8IGVxdWFsSWdub3JpbmdBU0NJSUNhc2UobmFtZSwgQ29udGVudFNlY3VyaXR5UG9saWN5RGly
ZWN0aXZlTmFtZXM6OnJlcG9ydFVSSSkKKyAgICAgICAgICAgICAgICAgICAgfHwgZXF1YWxJZ25v
cmluZ0FTQ0lJQ2FzZShuYW1lLCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lczo6
ZnJhbWVBbmNlc3RvcnMpKSB7CiAgICAgICAgICAgICAgICAgICAgIG1fcG9saWN5LnJlcG9ydElu
dmFsaWREaXJlY3RpdmVJbkhUVFBFcXVpdk1ldGEobmFtZSk7CiAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgICAgIH0KQEAgLTU5MCw3ICs0MTUsNyBAQCB2b2lkIENvbnRl
bnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OnNldENTUERpcmVjdGl2ZShjb25zdCBTdHJp
bmcmIG5hbWUsIGNvbgogICAgICAgICBtX3BvbGljeS5yZXBvcnREdXBsaWNhdGVEaXJlY3RpdmUo
bmFtZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgZGlyZWN0aXZlID0gc3RkOjptYWtl
X3VuaXF1ZTxDU1BEaXJlY3RpdmVUeXBlPihuYW1lLCB2YWx1ZSwgbV9wb2xpY3kpOworICAgIGRp
cmVjdGl2ZSA9IHN0ZDo6bWFrZV91bmlxdWU8Q1NQRGlyZWN0aXZlVHlwZT4oKnRoaXMsIG5hbWUs
IHZhbHVlKTsKIH0KIAogdm9pZCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0Ojph
cHBseVNhbmRib3hQb2xpY3koY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHNhbmRi
b3hQb2xpY3kpCkBAIC02NjAsNTEgKzQ4NSw1MSBAQCB2b2lkIENvbnRlbnRTZWN1cml0eVBvbGlj
eURpcmVjdGl2ZUxpc3Q6OmFkZERpcmVjdGl2ZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0CiB7
CiAgICAgQVNTRVJUKCFuYW1lLmlzRW1wdHkoKSk7CiAKLSAgICBpZiAoZXF1YWxMZXR0ZXJzSWdu
b3JpbmdBU0NJSUNhc2UobmFtZSwgZGVmYXVsdFNyYykpIHsKKyAgICBpZiAoZXF1YWxJZ25vcmlu
Z0FTQ0lJQ2FzZShuYW1lLCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lczo6ZGVm
YXVsdFNyYykpIHsKICAgICAgICAgc2V0Q1NQRGlyZWN0aXZlPENvbnRlbnRTZWN1cml0eVBvbGlj
eVNvdXJjZUxpc3REaXJlY3RpdmU+KG5hbWUsIHZhbHVlLCBtX2RlZmF1bHRTcmMpOwogICAgICAg
ICBtX3BvbGljeS5hZGRIYXNoQWxnb3JpdGhtc0ZvcklubGluZVNjcmlwdHMobV9kZWZhdWx0U3Jj
LT5oYXNoQWxnb3JpdGhtc1VzZWQoKSk7CiAgICAgICAgIG1fcG9saWN5LmFkZEhhc2hBbGdvcml0
aG1zRm9ySW5saW5lU3R5bGVzaGVldHMobV9kZWZhdWx0U3JjLT5oYXNoQWxnb3JpdGhtc1VzZWQo
KSk7Ci0gICAgfSBlbHNlIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShuYW1lLCBz
Y3JpcHRTcmMpKSB7CisgICAgfSBlbHNlIGlmIChlcXVhbElnbm9yaW5nQVNDSUlDYXNlKG5hbWUs
IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzOjpzY3JpcHRTcmMpKSB7CiAgICAg
ICAgIHNldENTUERpcmVjdGl2ZTxDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0RGlyZWN0
aXZlPihuYW1lLCB2YWx1ZSwgbV9zY3JpcHRTcmMpOwogICAgICAgICBtX3BvbGljeS5hZGRIYXNo
QWxnb3JpdGhtc0ZvcklubGluZVNjcmlwdHMobV9zY3JpcHRTcmMtPmhhc2hBbGdvcml0aG1zVXNl
ZCgpKTsKLSAgICB9IGVsc2UgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG5hbWUs
IHN0eWxlU3JjKSkgeworICAgIH0gZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShuYW1l
LCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lczo6c3R5bGVTcmMpKSB7CiAgICAg
ICAgIHNldENTUERpcmVjdGl2ZTxDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0RGlyZWN0
aXZlPihuYW1lLCB2YWx1ZSwgbV9zdHlsZVNyYyk7CiAgICAgICAgIG1fcG9saWN5LmFkZEhhc2hB
bGdvcml0aG1zRm9ySW5saW5lU3R5bGVzaGVldHMobV9zdHlsZVNyYy0+aGFzaEFsZ29yaXRobXNV
c2VkKCkpOwotICAgIH0gZWxzZSBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobmFt
ZSwgb2JqZWN0U3JjKSkKKyAgICB9IGVsc2UgaWYgKGVxdWFsSWdub3JpbmdBU0NJSUNhc2UobmFt
ZSwgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXM6Om9iamVjdFNyYykpCiAgICAg
ICAgIHNldENTUERpcmVjdGl2ZTxDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0RGlyZWN0
aXZlPihuYW1lLCB2YWx1ZSwgbV9vYmplY3RTcmMpOwotICAgIGVsc2UgaWYgKGVxdWFsTGV0dGVy
c0lnbm9yaW5nQVNDSUlDYXNlKG5hbWUsIGZyYW1lU3JjKSkgeworICAgIGVsc2UgaWYgKGVxdWFs
SWdub3JpbmdBU0NJSUNhc2UobmFtZSwgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFt
ZXM6OmZyYW1lU3JjKSkgewogICAgICAgICAvLyBGSVhNRTogTG9nIHRvIGNvbnNvbGUgIlRoZSBm
cmFtZS1zcmMgZGlyZWN0aXZlIGlzIGRlcHJlY2F0ZWQuIFVzZSB0aGUgY2hpbGQtc3JjIGRpcmVj
dGl2ZSBpbnN0ZWFkLiIKICAgICAgICAgLy8gU2VlIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTU1NzczPi4KICAgICAgICAgc2V0Q1NQRGlyZWN0aXZlPENvbnRlbnRT
ZWN1cml0eVBvbGljeVNvdXJjZUxpc3REaXJlY3RpdmU+KG5hbWUsIHZhbHVlLCBtX2ZyYW1lU3Jj
KTsKLSAgICB9IGVsc2UgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG5hbWUsIGlt
Z1NyYykpCisgICAgfSBlbHNlIGlmIChlcXVhbElnbm9yaW5nQVNDSUlDYXNlKG5hbWUsIENvbnRl
bnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzOjppbWdTcmMpKQogICAgICAgICBzZXRDU1BE
aXJlY3RpdmU8Q29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdERpcmVjdGl2ZT4obmFtZSwg
dmFsdWUsIG1faW1nU3JjKTsKLSAgICBlbHNlIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJ
Q2FzZShuYW1lLCBmb250U3JjKSkKKyAgICBlbHNlIGlmIChlcXVhbElnbm9yaW5nQVNDSUlDYXNl
KG5hbWUsIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzOjpmb250U3JjKSkKICAg
ICAgICAgc2V0Q1NQRGlyZWN0aXZlPENvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3REaXJl
Y3RpdmU+KG5hbWUsIHZhbHVlLCBtX2ZvbnRTcmMpOwotICAgIGVsc2UgaWYgKGVxdWFsTGV0dGVy
c0lnbm9yaW5nQVNDSUlDYXNlKG5hbWUsIG1lZGlhU3JjKSkKKyAgICBlbHNlIGlmIChlcXVhbEln
bm9yaW5nQVNDSUlDYXNlKG5hbWUsIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVz
OjptZWRpYVNyYykpCiAgICAgICAgIHNldENTUERpcmVjdGl2ZTxDb250ZW50U2VjdXJpdHlQb2xp
Y3lTb3VyY2VMaXN0RGlyZWN0aXZlPihuYW1lLCB2YWx1ZSwgbV9tZWRpYVNyYyk7Ci0gICAgZWxz
ZSBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobmFtZSwgY29ubmVjdFNyYykpCisg
ICAgZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShuYW1lLCBDb250ZW50U2VjdXJpdHlQ
b2xpY3lEaXJlY3RpdmVOYW1lczo6Y29ubmVjdFNyYykpCiAgICAgICAgIHNldENTUERpcmVjdGl2
ZTxDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0RGlyZWN0aXZlPihuYW1lLCB2YWx1ZSwg
bV9jb25uZWN0U3JjKTsKLSAgICBlbHNlIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2Fz
ZShuYW1lLCBjaGlsZFNyYykpCisgICAgZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShu
YW1lLCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lczo6Y2hpbGRTcmMpKQogICAg
ICAgICBzZXRDU1BEaXJlY3RpdmU8Q29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdERpcmVj
dGl2ZT4obmFtZSwgdmFsdWUsIG1fY2hpbGRTcmMpOwotICAgIGVsc2UgaWYgKGVxdWFsTGV0dGVy
c0lnbm9yaW5nQVNDSUlDYXNlKG5hbWUsIGZvcm1BY3Rpb24pKQorICAgIGVsc2UgaWYgKGVxdWFs
SWdub3JpbmdBU0NJSUNhc2UobmFtZSwgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFt
ZXM6OmZvcm1BY3Rpb24pKQogICAgICAgICBzZXRDU1BEaXJlY3RpdmU8Q29udGVudFNlY3VyaXR5
UG9saWN5U291cmNlTGlzdERpcmVjdGl2ZT4obmFtZSwgdmFsdWUsIG1fZm9ybUFjdGlvbik7Ci0g
ICAgZWxzZSBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobmFtZSwgYmFzZVVSSSkp
CisgICAgZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShuYW1lLCBDb250ZW50U2VjdXJp
dHlQb2xpY3lEaXJlY3RpdmVOYW1lczo6YmFzZVVSSSkpCiAgICAgICAgIHNldENTUERpcmVjdGl2
ZTxDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0RGlyZWN0aXZlPihuYW1lLCB2YWx1ZSwg
bV9iYXNlVVJJKTsKLSAgICBlbHNlIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShu
YW1lLCBmcmFtZUFuY2VzdG9ycykpIHsKKyAgICBlbHNlIGlmIChlcXVhbElnbm9yaW5nQVNDSUlD
YXNlKG5hbWUsIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzOjpmcmFtZUFuY2Vz
dG9ycykpIHsKICAgICAgICAgaWYgKG1fcmVwb3J0T25seSkgewogICAgICAgICAgICAgbV9wb2xp
Y3kucmVwb3J0SW52YWxpZERpcmVjdGl2ZUluUmVwb3J0T25seU1vZGUobmFtZSk7CiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgc2V0Q1NQRGlyZWN0aXZlPENvbnRlbnRT
ZWN1cml0eVBvbGljeVNvdXJjZUxpc3REaXJlY3RpdmU+KG5hbWUsIHZhbHVlLCBtX2ZyYW1lQW5j
ZXN0b3JzKTsKLSAgICB9IGVsc2UgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG5h
bWUsIHBsdWdpblR5cGVzKSkKKyAgICB9IGVsc2UgaWYgKGVxdWFsSWdub3JpbmdBU0NJSUNhc2Uo
bmFtZSwgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXM6OnBsdWdpblR5cGVzKSkK
ICAgICAgICAgc2V0Q1NQRGlyZWN0aXZlPENvbnRlbnRTZWN1cml0eVBvbGljeU1lZGlhTGlzdERp
cmVjdGl2ZT4obmFtZSwgdmFsdWUsIG1fcGx1Z2luVHlwZXMpOwotICAgIGVsc2UgaWYgKGVxdWFs
TGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG5hbWUsIHNhbmRib3gpKQorICAgIGVsc2UgaWYgKGVx
dWFsSWdub3JpbmdBU0NJSUNhc2UobmFtZSwgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZl
TmFtZXM6OnNhbmRib3gpKQogICAgICAgICBhcHBseVNhbmRib3hQb2xpY3kobmFtZSwgdmFsdWUp
OwotICAgIGVsc2UgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG5hbWUsIHJlcG9y
dFVSSSkpCisgICAgZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShuYW1lLCBDb250ZW50
U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lczo6cmVwb3J0VVJJKSkKICAgICAgICAgcGFyc2VS
ZXBvcnRVUkkobmFtZSwgdmFsdWUpOwogI2lmIEVOQUJMRShDU1BfTkVYVCkKICAgICBlbHNlIGlm
IChtX3BvbGljeS5leHBlcmltZW50YWxGZWF0dXJlc0VuYWJsZWQoKSkgewotICAgICAgICBpZiAo
ZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobmFtZSwgcmVmbGVjdGVkWFNTKSkKKyAgICAg
ICAgaWYgKGVxdWFsSWdub3JpbmdBU0NJSUNhc2UobmFtZSwgQ29udGVudFNlY3VyaXR5UG9saWN5
RGlyZWN0aXZlTmFtZXM6OnJlZmxlY3RlZFhTUykpCiAgICAgICAgICAgICBwYXJzZVJlZmxlY3Rl
ZFhTUyhuYW1lLCB2YWx1ZSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIG1fcG9saWN5LnJl
cG9ydFVuc3VwcG9ydGVkRGlyZWN0aXZlKG5hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdC5oIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdC5oCmlu
ZGV4IDliMWUyMGJjMDQ1NDBmYTk3MzExYmQ1NmExMDgwYWM2ZWYwZDVlOGEuLjRkMDkwYjk1MzBi
YzlmYTM2MjhhZTliN2M5YTBkMmI3YjM3NjY4ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3QuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0LmgK
QEAgLTM2LDggKzM2LDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1ib29sIGlzQ1NQRGly
ZWN0aXZlTmFtZShjb25zdCBTdHJpbmcmKTsKLQogY2xhc3MgQ29udGVudFNlY3VyaXR5UG9saWN5
RGlyZWN0aXZlTGlzdCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01B
S0VfTk9OQ09QWUFCTEUoQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdCkKQEAgLTQ4
LDQwICs0Niw0MCBAQCBwdWJsaWM6CiAgICAgY29uc3QgU3RyaW5nJiBoZWFkZXIoKSBjb25zdCB7
IHJldHVybiBtX2hlYWRlcjsgfQogICAgIENvbnRlbnRTZWN1cml0eVBvbGljeUhlYWRlclR5cGUg
aGVhZGVyVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1faGVhZGVyVHlwZTsgfQogCi0gICAgZW51bSBj
bGFzcyBSZXBvcnRpbmdTdGF0dXMgewotICAgICAgICBTZW5kUmVwb3J0LAotICAgICAgICBTdXBw
cmVzc1JlcG9ydAotICAgIH07Ci0gICAgYm9vbCBhbGxvd0phdmFTY3JpcHRVUkxzKGNvbnN0IFN0
cmluZyYgY29udGV4dFVSTCwgY29uc3QgV1RGOjpPcmRpbmFsTnVtYmVyJiBjb250ZXh0TGluZSwg
UmVwb3J0aW5nU3RhdHVzKSBjb25zdDsKLSAgICBib29sIGFsbG93SW5saW5lRXZlbnRIYW5kbGVy
cyhjb25zdCBTdHJpbmcmIGNvbnRleHRVUkwsIGNvbnN0IFdURjo6T3JkaW5hbE51bWJlciYgY29u
dGV4dExpbmUsIFJlcG9ydGluZ1N0YXR1cykgY29uc3Q7Ci0gICAgYm9vbCBhbGxvd0lubGluZVNj
cmlwdChjb25zdCBTdHJpbmcmIGNvbnRleHRVUkwsIGNvbnN0IFdURjo6T3JkaW5hbE51bWJlciYg
Y29udGV4dExpbmUsIFJlcG9ydGluZ1N0YXR1cykgY29uc3Q7Ci0gICAgYm9vbCBhbGxvd0lubGlu
ZVNjcmlwdFdpdGhIYXNoKGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeUhhc2gmKSBjb25zdDsK
LSAgICBib29sIGFsbG93U2NyaXB0V2l0aE5vbmNlKGNvbnN0IFN0cmluZyYgbm9uY2UpIGNvbnN0
OwotICAgIGJvb2wgYWxsb3dJbmxpbmVTdHlsZShjb25zdCBTdHJpbmcmIGNvbnRleHRVUkwsIGNv
bnN0IFdURjo6T3JkaW5hbE51bWJlciYgY29udGV4dExpbmUsIFJlcG9ydGluZ1N0YXR1cykgY29u
c3Q7Ci0gICAgYm9vbCBhbGxvd0lubGluZVN0eWxlV2l0aEhhc2goY29uc3QgQ29udGVudFNlY3Vy
aXR5UG9saWN5SGFzaCYpIGNvbnN0OwotICAgIGJvb2wgYWxsb3dTdHlsZVdpdGhOb25jZShjb25z
dCBTdHJpbmcmIG5vbmNlKSBjb25zdDsKLSAgICBib29sIGFsbG93RXZhbChKU0M6OkV4ZWNTdGF0
ZSosIFJlcG9ydGluZ1N0YXR1cykgY29uc3Q7Ci0gICAgYm9vbCBhbGxvd1BsdWdpblR5cGUoY29u
c3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIHR5cGVBdHRyaWJ1dGUsIGNvbnN0IFVSTCYs
IFJlcG9ydGluZ1N0YXR1cykgY29uc3Q7Ci0KLSAgICBib29sIGFsbG93U2NyaXB0RnJvbVNvdXJj
ZShjb25zdCBVUkwmLCBSZXBvcnRpbmdTdGF0dXMpIGNvbnN0OwotICAgIGJvb2wgYWxsb3dPYmpl
Y3RGcm9tU291cmNlKGNvbnN0IFVSTCYsIFJlcG9ydGluZ1N0YXR1cykgY29uc3Q7Ci0gICAgYm9v
bCBhbGxvd0NoaWxkRnJhbWVGcm9tU291cmNlKGNvbnN0IFVSTCYsIFJlcG9ydGluZ1N0YXR1cykg
Y29uc3Q7Ci0gICAgYm9vbCBhbGxvd0NoaWxkQ29udGV4dEZyb21Tb3VyY2UoY29uc3QgVVJMJiwg
UmVwb3J0aW5nU3RhdHVzKSBjb25zdDsKLSAgICBib29sIGFsbG93SW1hZ2VGcm9tU291cmNlKGNv
bnN0IFVSTCYsIFJlcG9ydGluZ1N0YXR1cykgY29uc3Q7Ci0gICAgYm9vbCBhbGxvd1N0eWxlRnJv
bVNvdXJjZShjb25zdCBVUkwmLCBSZXBvcnRpbmdTdGF0dXMpIGNvbnN0OwotICAgIGJvb2wgYWxs
b3dGb250RnJvbVNvdXJjZShjb25zdCBVUkwmLCBSZXBvcnRpbmdTdGF0dXMpIGNvbnN0OwotICAg
IGJvb2wgYWxsb3dNZWRpYUZyb21Tb3VyY2UoY29uc3QgVVJMJiwgUmVwb3J0aW5nU3RhdHVzKSBj
b25zdDsKLSAgICBib29sIGFsbG93Q29ubmVjdFRvU291cmNlKGNvbnN0IFVSTCYsIFJlcG9ydGlu
Z1N0YXR1cykgY29uc3Q7Ci0gICAgYm9vbCBhbGxvd0Zvcm1BY3Rpb24oY29uc3QgVVJMJiwgUmVw
b3J0aW5nU3RhdHVzKSBjb25zdDsKLSAgICBib29sIGFsbG93QmFzZVVSSShjb25zdCBVUkwmLCBS
ZXBvcnRpbmdTdGF0dXMpIGNvbnN0OwotCi0gICAgYm9vbCBhbGxvd0ZyYW1lQW5jZXN0b3JzKGNv
bnN0IEZyYW1lJiwgY29uc3QgVVJMJiwgUmVwb3J0aW5nU3RhdHVzKSBjb25zdDsKKyAgICBjb25z
dCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmUqIHZpb2xhdGVkRGlyZWN0aXZlRm9yVW5z
YWZlRXZhbCgpIGNvbnN0OworICAgIGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2
ZSogdmlvbGF0ZWREaXJlY3RpdmVGb3JVbnNhZmVJbmxpbmVTY3JpcHQoKSBjb25zdDsKKyAgICBj
b25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmUqIHZpb2xhdGVkRGlyZWN0aXZlRm9y
VW5zYWZlSW5saW5lU3R5bGUoKSBjb25zdDsKKworICAgIGNvbnN0IENvbnRlbnRTZWN1cml0eVBv
bGljeURpcmVjdGl2ZSogdmlvbGF0ZWREaXJlY3RpdmVGb3JTY3JpcHRIYXNoKGNvbnN0IENvbnRl
bnRTZWN1cml0eVBvbGljeUhhc2gmKSBjb25zdDsKKyAgICBjb25zdCBDb250ZW50U2VjdXJpdHlQ
b2xpY3lEaXJlY3RpdmUqIHZpb2xhdGVkRGlyZWN0aXZlRm9yU3R5bGVIYXNoKGNvbnN0IENvbnRl
bnRTZWN1cml0eVBvbGljeUhhc2gmKSBjb25zdDsKKworICAgIGNvbnN0IENvbnRlbnRTZWN1cml0
eVBvbGljeURpcmVjdGl2ZSogdmlvbGF0ZWREaXJlY3RpdmVGb3JTY3JpcHROb25jZShjb25zdCBT
dHJpbmcmKSBjb25zdDsKKyAgICBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmUq
IHZpb2xhdGVkRGlyZWN0aXZlRm9yU3R5bGVOb25jZShjb25zdCBTdHJpbmcmKSBjb25zdDsKKwor
ICAgIGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZSogdmlvbGF0ZWREaXJlY3Rp
dmVGb3JCYXNlVVJJKGNvbnN0IFVSTCYpIGNvbnN0OworICAgIGNvbnN0IENvbnRlbnRTZWN1cml0
eVBvbGljeURpcmVjdGl2ZSogdmlvbGF0ZWREaXJlY3RpdmVGb3JDaGlsZENvbnRleHQoY29uc3Qg
VVJMJikgY29uc3Q7CisgICAgY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlKiB2
aW9sYXRlZERpcmVjdGl2ZUZvckNvbm5lY3RTb3VyY2UoY29uc3QgVVJMJikgY29uc3Q7CisgICAg
Y29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlKiB2aW9sYXRlZERpcmVjdGl2ZUZv
ckZvbnQoY29uc3QgVVJMJikgY29uc3Q7CisgICAgY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5
RGlyZWN0aXZlKiB2aW9sYXRlZERpcmVjdGl2ZUZvckZvcm1BY3Rpb24oY29uc3QgVVJMJikgY29u
c3Q7CisgICAgY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlKiB2aW9sYXRlZERp
cmVjdGl2ZUZvckZyYW1lKGNvbnN0IFVSTCYpIGNvbnN0OworICAgIGNvbnN0IENvbnRlbnRTZWN1
cml0eVBvbGljeURpcmVjdGl2ZSogdmlvbGF0ZWREaXJlY3RpdmVGb3JGcmFtZUFuY2VzdG9yKGNv
bnN0IEZyYW1lJikgY29uc3Q7CisgICAgY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0
aXZlKiB2aW9sYXRlZERpcmVjdGl2ZUZvckltYWdlKGNvbnN0IFVSTCYpIGNvbnN0OworICAgIGNv
bnN0IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZSogdmlvbGF0ZWREaXJlY3RpdmVGb3JN
ZWRpYShjb25zdCBVUkwmKSBjb25zdDsKKyAgICBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lE
aXJlY3RpdmUqIHZpb2xhdGVkRGlyZWN0aXZlRm9yT2JqZWN0U291cmNlKGNvbnN0IFVSTCYpIGNv
bnN0OworICAgIGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZSogdmlvbGF0ZWRE
aXJlY3RpdmVGb3JQbHVnaW5UeXBlKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiB0
eXBlQXR0cmlidXRlKSBjb25zdDsKKyAgICBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJl
Y3RpdmUqIHZpb2xhdGVkRGlyZWN0aXZlRm9yU2NyaXB0KGNvbnN0IFVSTCYpIGNvbnN0OworICAg
IGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZSogdmlvbGF0ZWREaXJlY3RpdmVG
b3JTdHlsZShjb25zdCBVUkwmKSBjb25zdDsKKworICAgIGNvbnN0IENvbnRlbnRTZWN1cml0eVBv
bGljeURpcmVjdGl2ZSogZGVmYXVsdFNyYygpIGNvbnN0IHsgcmV0dXJuIG1fZGVmYXVsdFNyYy5n
ZXQoKTsgfQogCiAgICAgY29uc3QgU3RyaW5nJiBldmFsRGlzYWJsZWRFcnJvck1lc3NhZ2UoKSBj
b25zdCB7IHJldHVybiBtX2V2YWxEaXNhYmxlZEVycm9yTWVzc2FnZTsgfQogICAgIENvbnRlbnRT
ZWN1cml0eVBvbGljeTo6UmVmbGVjdGVkWFNTRGlzcG9zaXRpb24gcmVmbGVjdGVkWFNTRGlzcG9z
aXRpb24oKSBjb25zdCB7IHJldHVybiBtX3JlZmxlY3RlZFhTU0Rpc3Bvc2l0aW9uOyB9CiAgICAg
Ym9vbCBpc1JlcG9ydE9ubHkoKSBjb25zdCB7IHJldHVybiBtX3JlcG9ydE9ubHk7IH0KICAgICBj
b25zdCBWZWN0b3I8U3RyaW5nPiYgcmVwb3J0VVJJcygpIGNvbnN0IHsgcmV0dXJuIG1fcmVwb3J0
VVJJczsgfQogCisgICAgLy8gRklYTUU6IFJlbW92ZSB0aGlzIG9uY2Ugd2UgdGVhY2ggQ29udGVu
dFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdCBob3cgdG8gbG9nIGFuIGFyYml0cmFyeSBjb25z
b2xlIG1lc3NhZ2UuCisgICAgY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5JiBwb2xpY3koKSBj
b25zdCB7IHJldHVybiBtX3BvbGljeTsgfQorCiBwcml2YXRlOgogICAgIHZvaWQgcGFyc2UoY29u
c3QgU3RyaW5nJiwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpQb2xpY3lGcm9tKTsKIApAQCAtOTYs
MTIgKzk0LDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldENTUERpcmVjdGl2ZShjb25zdCBTdHJp
bmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUsIHN0ZDo6dW5pcXVlX3B0cjxDU1BEaXJlY3Rp
dmVUeXBlPiYpOwogCiAgICAgQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdERpcmVjdGl2
ZSogb3BlcmF0aXZlRGlyZWN0aXZlKENvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3REaXJl
Y3RpdmUqKSBjb25zdDsKLSAgICB2b2lkIHJlcG9ydFZpb2xhdGlvbihjb25zdCBTdHJpbmcmIGRp
cmVjdGl2ZVRleHQsIGNvbnN0IFN0cmluZyYgZWZmZWN0aXZlRGlyZWN0aXZlLCBjb25zdCBTdHJp
bmcmIGNvbnNvbGVNZXNzYWdlLCBjb25zdCBVUkwmIGJsb2NrZWRVUkwgPSBVUkwoKSwgY29uc3Qg
U3RyaW5nJiBjb250ZXh0VVJMID0gU3RyaW5nKCksIGNvbnN0IFdURjo6T3JkaW5hbE51bWJlciYg
Y29udGV4dExpbmUgPSBXVEY6Ok9yZGluYWxOdW1iZXI6OmJlZm9yZUZpcnN0KCksIEpTQzo6RXhl
Y1N0YXRlKiA9IG51bGxwdHIpIGNvbnN0OwogCiAgICAgdm9pZCBzZXRFdmFsRGlzYWJsZWRFcnJv
ck1lc3NhZ2UoY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpIHsgbV9ldmFsRGlzYWJsZWRFcnJv
ck1lc3NhZ2UgPSBlcnJvck1lc3NhZ2U7IH0KIAotICAgIGJvb2wgZGVueUlmRW5mb3JjaW5nUG9s
aWN5KCkgY29uc3QgeyByZXR1cm4gbV9yZXBvcnRPbmx5OyB9Ci0KICAgICAvLyBGSVhNRTogTWFr
ZSB0aGlzIGEgY29uc3QgcmVmZXJlbmNlIG9uY2Ugd2UgdGVhY2ggYXBwbHlTYW5kYm94UG9saWN5
KCkgdG8gc3RvcmUgaXRzIHBvbGljeSBhcyBvcHBvc2VkIHRvIGFwcGx5aW5nIGl0IGRpcmVjdGx5
IG9udG8gQ29udGVudFNlY3VyaXR5UG9saWN5LgogICAgIENvbnRlbnRTZWN1cml0eVBvbGljeSYg
bV9wb2xpY3k7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRT
ZWN1cml0eVBvbGljeU1lZGlhTGlzdERpcmVjdGl2ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lNZWRpYUxpc3REaXJlY3RpdmUuY3BwCmluZGV4IDJh
ZjM5MzU5ODMyYTE2YzQ4YTlkZGMxMDVmY2M3ZWZkOTlkNjBmODguLjNkM2VkNGQwZGI0NTFiNDQy
ODc4ZDlhZDRmZDM5Y2ExZWY2ZGQ0YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
Y3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeU1lZGlhTGlzdERpcmVjdGl2ZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5TWVkaWFMaXN0RGlyZWN0
aXZlLmNwcApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIkNvbnRlbnRTZWN1cml0eVBvbGlj
eU1lZGlhTGlzdERpcmVjdGl2ZS5oIgogCiAjaW5jbHVkZSAiQ29udGVudFNlY3VyaXR5UG9saWN5
LmgiCisjaW5jbHVkZSAiQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdC5oIgogI2lu
Y2x1ZGUgIlBhcnNpbmdVdGlsaXRpZXMuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNo
Lmg+CiAKQEAgLTQzLDggKzQ0LDggQEAgc3RhdGljIGJvb2wgaXNOb3RBU0NJSVNwYWNlKFVDaGFy
IGMpCiAgICAgcmV0dXJuICFpc0FTQ0lJU3BhY2UoYyk7CiB9CiAKLUNvbnRlbnRTZWN1cml0eVBv
bGljeU1lZGlhTGlzdERpcmVjdGl2ZTo6Q29udGVudFNlY3VyaXR5UG9saWN5TWVkaWFMaXN0RGly
ZWN0aXZlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgY29uc3QgQ29u
dGVudFNlY3VyaXR5UG9saWN5JiBwb2xpY3kpCi0gICAgOiBDb250ZW50U2VjdXJpdHlQb2xpY3lE
aXJlY3RpdmUobmFtZSwgdmFsdWUsIHBvbGljeSkKK0NvbnRlbnRTZWN1cml0eVBvbGljeU1lZGlh
TGlzdERpcmVjdGl2ZTo6Q29udGVudFNlY3VyaXR5UG9saWN5TWVkaWFMaXN0RGlyZWN0aXZlKGNv
bnN0IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3QmIGRpcmVjdGl2ZUxpc3QsIGNv
bnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKKyAgICA6IENvbnRlbnRTZWN1
cml0eVBvbGljeURpcmVjdGl2ZShkaXJlY3RpdmVMaXN0LCBuYW1lLCB2YWx1ZSkKIHsKICAgICBw
YXJzZSh2YWx1ZSk7CiB9CkBAIC02Myw3ICs2NCw3IEBAIHZvaWQgQ29udGVudFNlY3VyaXR5UG9s
aWN5TWVkaWFMaXN0RGlyZWN0aXZlOjpwYXJzZShjb25zdCBTdHJpbmcmIHZhbHVlKQogCiAgICAg
Ly8gJ3BsdWdpbi10eXBlcyBfX19fOycgT1IgJ3BsdWdpbi10eXBlczsnCiAgICAgaWYgKHZhbHVl
LmlzRW1wdHkoKSkgewotICAgICAgICBwb2xpY3koKS5yZXBvcnRJbnZhbGlkUGx1Z2luVHlwZXMo
dmFsdWUpOworICAgICAgICBkaXJlY3RpdmVMaXN0KCkucG9saWN5KCkucmVwb3J0SW52YWxpZFBs
dWdpblR5cGVzKHZhbHVlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNzksNyArODAs
NyBAQCB2b2lkIENvbnRlbnRTZWN1cml0eVBvbGljeU1lZGlhTGlzdERpcmVjdGl2ZTo6cGFyc2Uo
Y29uc3QgU3RyaW5nJiB2YWx1ZSkKICAgICAgICAgYmVnaW4gPSBwb3NpdGlvbjsKICAgICAgICAg
aWYgKCFza2lwRXhhY3RseTxVQ2hhciwgaXNNZWRpYVR5cGVDaGFyYWN0ZXI+KHBvc2l0aW9uLCBl
bmQpKSB7CiAgICAgICAgICAgICBza2lwV2hpbGU8VUNoYXIsIGlzTm90QVNDSUlTcGFjZT4ocG9z
aXRpb24sIGVuZCk7Ci0gICAgICAgICAgICBwb2xpY3koKS5yZXBvcnRJbnZhbGlkUGx1Z2luVHlw
ZXMoU3RyaW5nKGJlZ2luLCBwb3NpdGlvbiAtIGJlZ2luKSk7CisgICAgICAgICAgICBkaXJlY3Rp
dmVMaXN0KCkucG9saWN5KCkucmVwb3J0SW52YWxpZFBsdWdpblR5cGVzKFN0cmluZyhiZWdpbiwg
cG9zaXRpb24gLSBiZWdpbikpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KICAg
ICAgICAgc2tpcFdoaWxlPFVDaGFyLCBpc01lZGlhVHlwZUNoYXJhY3Rlcj4ocG9zaXRpb24sIGVu
ZCk7CkBAIC04OCw3ICs4OSw3IEBAIHZvaWQgQ29udGVudFNlY3VyaXR5UG9saWN5TWVkaWFMaXN0
RGlyZWN0aXZlOjpwYXJzZShjb25zdCBTdHJpbmcmIHZhbHVlKQogICAgICAgICAvLyAgICAgIF4K
ICAgICAgICAgaWYgKCFza2lwRXhhY3RseTxVQ2hhcj4ocG9zaXRpb24sIGVuZCwgJy8nKSkgewog
ICAgICAgICAgICAgc2tpcFdoaWxlPFVDaGFyLCBpc05vdEFTQ0lJU3BhY2U+KHBvc2l0aW9uLCBl
bmQpOwotICAgICAgICAgICAgcG9saWN5KCkucmVwb3J0SW52YWxpZFBsdWdpblR5cGVzKFN0cmlu
ZyhiZWdpbiwgcG9zaXRpb24gLSBiZWdpbikpOworICAgICAgICAgICAgZGlyZWN0aXZlTGlzdCgp
LnBvbGljeSgpLnJlcG9ydEludmFsaWRQbHVnaW5UeXBlcyhTdHJpbmcoYmVnaW4sIHBvc2l0aW9u
IC0gYmVnaW4pKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAKQEAgLTk2LDcg
Kzk3LDcgQEAgdm9pZCBDb250ZW50U2VjdXJpdHlQb2xpY3lNZWRpYUxpc3REaXJlY3RpdmU6OnBh
cnNlKGNvbnN0IFN0cmluZyYgdmFsdWUpCiAgICAgICAgIC8vICAgICAgIF4KICAgICAgICAgaWYg
KCFza2lwRXhhY3RseTxVQ2hhciwgaXNNZWRpYVR5cGVDaGFyYWN0ZXI+KHBvc2l0aW9uLCBlbmQp
KSB7CiAgICAgICAgICAgICBza2lwV2hpbGU8VUNoYXIsIGlzTm90QVNDSUlTcGFjZT4ocG9zaXRp
b24sIGVuZCk7Ci0gICAgICAgICAgICBwb2xpY3koKS5yZXBvcnRJbnZhbGlkUGx1Z2luVHlwZXMo
U3RyaW5nKGJlZ2luLCBwb3NpdGlvbiAtIGJlZ2luKSk7CisgICAgICAgICAgICBkaXJlY3RpdmVM
aXN0KCkucG9saWN5KCkucmVwb3J0SW52YWxpZFBsdWdpblR5cGVzKFN0cmluZyhiZWdpbiwgcG9z
aXRpb24gLSBiZWdpbikpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KICAgICAg
ICAgc2tpcFdoaWxlPFVDaGFyLCBpc01lZGlhVHlwZUNoYXJhY3Rlcj4ocG9zaXRpb24sIGVuZCk7
CkBAIC0xMDUsNyArMTA2LDcgQEAgdm9pZCBDb250ZW50U2VjdXJpdHlQb2xpY3lNZWRpYUxpc3RE
aXJlY3RpdmU6OnBhcnNlKGNvbnN0IFN0cmluZyYgdmFsdWUpCiAgICAgICAgIC8vICAgICAgICAg
ICAgXiAgICAgICAgICAgICAgICAgICAgICAgICAgXiAgICAgICAgICAgICAgIF4KICAgICAgICAg
aWYgKHBvc2l0aW9uIDwgZW5kICYmIGlzTm90QVNDSUlTcGFjZSgqcG9zaXRpb24pKSB7CiAgICAg
ICAgICAgICBza2lwV2hpbGU8VUNoYXIsIGlzTm90QVNDSUlTcGFjZT4ocG9zaXRpb24sIGVuZCk7
Ci0gICAgICAgICAgICBwb2xpY3koKS5yZXBvcnRJbnZhbGlkUGx1Z2luVHlwZXMoU3RyaW5nKGJl
Z2luLCBwb3NpdGlvbiAtIGJlZ2luKSk7CisgICAgICAgICAgICBkaXJlY3RpdmVMaXN0KCkucG9s
aWN5KCkucmVwb3J0SW52YWxpZFBsdWdpblR5cGVzKFN0cmluZyhiZWdpbiwgcG9zaXRpb24gLSBi
ZWdpbikpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KICAgICAgICAgbV9wbHVn
aW5UeXBlcy5hZGQoU3RyaW5nKGJlZ2luLCBwb3NpdGlvbiAtIGJlZ2luKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lNZWRpYUxpc3RE
aXJlY3RpdmUuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGlj
eU1lZGlhTGlzdERpcmVjdGl2ZS5oCmluZGV4IGYxYTA1N2U3NzczZTg0MjhhNDk2ZWRkMDc2Mjc2
OGUwMTU4MDYzMzAuLmU4NTA2OGViYTBhYjhhOTdjMjRjMjEyYzMzYjIxOTBmZTQ3Yjk0ZTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeU1l
ZGlhTGlzdERpcmVjdGl2ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRT
ZWN1cml0eVBvbGljeU1lZGlhTGlzdERpcmVjdGl2ZS5oCkBAIC0zMywxMSArMzMsMTEgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBDb250ZW50U2VjdXJpdHlQb2xpY3k7CitjbGFz
cyBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0OwogCiBjbGFzcyBDb250ZW50U2Vj
dXJpdHlQb2xpY3lNZWRpYUxpc3REaXJlY3RpdmUgOiBwdWJsaWMgQ29udGVudFNlY3VyaXR5UG9s
aWN5RGlyZWN0aXZlIHsKIHB1YmxpYzoKLSAgICBDb250ZW50U2VjdXJpdHlQb2xpY3lNZWRpYUxp
c3REaXJlY3RpdmUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlLCBjb25z
dCBDb250ZW50U2VjdXJpdHlQb2xpY3kmKTsKKyAgICBDb250ZW50U2VjdXJpdHlQb2xpY3lNZWRp
YUxpc3REaXJlY3RpdmUoY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdCYs
IGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSk7CiAKICAgICBib29sIGFs
bG93cyhjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3QuY3BwCmlu
ZGV4IDgwNDRhZThiZmUzMTRlMWJmOWJkYWZhYWQwZTJiNDhkOTM3MzA0YzkuLjI1NGFmOGU1OWIw
ZDIwOGQzMGIwMWUwM2RlZjYyOGZhN2QzNzM3YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3QuY3BwCkBA
IC0yOCw3ICsyOCw3IEBACiAjaW5jbHVkZSAiQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlz
dC5oIgogCiAjaW5jbHVkZSAiQ29udGVudFNlY3VyaXR5UG9saWN5LmgiCi0jaW5jbHVkZSAiQ29u
dGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdC5oIgorI2luY2x1ZGUgIkNvbnRlbnRTZWN1
cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzLmgiCiAjaW5jbHVkZSAiUGFyc2luZ1V0aWxpdGllcy5o
IgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiVVJMLmgiCkBAIC0zOCw2
ICszOCwzNSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK3N0YXRpYyBpbmxpbmUgYm9vbCBp
c0V4cGVyaW1lbnRhbERpcmVjdGl2ZU5hbWUoY29uc3QgU3RyaW5nJiBuYW1lKQoreworI2lmIEVO
QUJMRShDU1BfTkVYVCkKKyAgICByZXR1cm4gZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShuYW1lLCBD
b250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lczo6cmVmbGVjdGVkWFNTKTsKKyNlbHNl
CisgICAgVU5VU0VEX1BBUkFNKG5hbWUpOworICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgorfQor
CitzdGF0aWMgYm9vbCBpc0NTUERpcmVjdGl2ZU5hbWUoY29uc3QgU3RyaW5nJiBuYW1lKQorewor
ICAgIHJldHVybiBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKG5hbWUsIENvbnRlbnRTZWN1cml0eVBv
bGljeURpcmVjdGl2ZU5hbWVzOjpiYXNlVVJJKQorICAgICAgICB8fCBlcXVhbElnbm9yaW5nQVND
SUlDYXNlKG5hbWUsIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzOjpjb25uZWN0
U3JjKQorICAgICAgICB8fCBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKG5hbWUsIENvbnRlbnRTZWN1
cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzOjpkZWZhdWx0U3JjKQorICAgICAgICB8fCBlcXVhbEln
bm9yaW5nQVNDSUlDYXNlKG5hbWUsIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVz
Ojpmb250U3JjKQorICAgICAgICB8fCBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKG5hbWUsIENvbnRl
bnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzOjpmb3JtQWN0aW9uKQorICAgICAgICB8fCBl
cXVhbElnbm9yaW5nQVNDSUlDYXNlKG5hbWUsIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2
ZU5hbWVzOjpmcmFtZVNyYykKKyAgICAgICAgfHwgZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShuYW1l
LCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lczo6aW1nU3JjKQorICAgICAgICB8
fCBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKG5hbWUsIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVj
dGl2ZU5hbWVzOjptZWRpYVNyYykKKyAgICAgICAgfHwgZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShu
YW1lLCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lczo6b2JqZWN0U3JjKQorICAg
ICAgICB8fCBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKG5hbWUsIENvbnRlbnRTZWN1cml0eVBvbGlj
eURpcmVjdGl2ZU5hbWVzOjpwbHVnaW5UeXBlcykKKyAgICAgICAgfHwgZXF1YWxJZ25vcmluZ0FT
Q0lJQ2FzZShuYW1lLCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lczo6cmVwb3J0
VVJJKQorICAgICAgICB8fCBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKG5hbWUsIENvbnRlbnRTZWN1
cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzOjpzYW5kYm94KQorICAgICAgICB8fCBlcXVhbElnbm9y
aW5nQVNDSUlDYXNlKG5hbWUsIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzOjpz
Y3JpcHRTcmMpCisgICAgICAgIHx8IGVxdWFsSWdub3JpbmdBU0NJSUNhc2UobmFtZSwgQ29udGVu
dFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXM6OnN0eWxlU3JjKQorICAgICAgICB8fCBpc0V4
cGVyaW1lbnRhbERpcmVjdGl2ZU5hbWUobmFtZSk7Cit9CisKIHN0YXRpYyBib29sIGlzU291cmNl
Q2hhcmFjdGVyKFVDaGFyIGMpCiB7CiAgICAgcmV0dXJuICFpc0FTQ0lJU3BhY2UoYyk7CkBAIC0x
MDEsMTIgKzEzMCwxMCBAQCBib29sIENvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3Q6Omlz
UHJvdG9jb2xBbGxvd2VkQnlTdGFyKGNvbnN0IFVSTCYgdXJsKSBjbwogewogICAgIC8vIEFsdGhv
dWdoIG5vdCBhbGxvd2VkIGJ5IHRoZSBDb250ZW50IFNlY3VyaXR5IFBvbGljeSBMZXZlbCAzIHNw
ZWMuLCB3ZSBhbGxvdyBhIGRhdGEgVVJMIHRvIG1hdGNoCiAgICAgLy8gImltZy1zcmMgKiIgYW5k
IGVpdGhlciBhIGRhdGEgVVJMIG9yIGJsb2IgVVJMIHRvIG1hdGNoICJtZWRpYS1zcmMgKiIgZm9y
IHdlYiBjb21wYXRpYmlsaXR5LgotICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgbm90IGhhcmRjb2Rl
IHRoZSBkaXJlY3RpdmUgbmFtZXMuIFdlIHNob3VsZCBtYWtlIHVzZSBvZiB0aGUgY29uc3RhbnRz
IGluIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3QuY3BwLgotICAgIC8vIFNlZSA8
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NTEzMz4uCiAgICAgYm9v
bCBpc0FsbG93ZWQgPSB1cmwucHJvdG9jb2xJc0luSFRUUEZhbWlseSgpOwotICAgIGlmIChlcXVh
bExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShtX2RpcmVjdGl2ZU5hbWUsICJpbWctc3JjIikpCisg
ICAgaWYgKGVxdWFsSWdub3JpbmdBU0NJSUNhc2UobV9kaXJlY3RpdmVOYW1lLCBDb250ZW50U2Vj
dXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lczo6aW1nU3JjKSkKICAgICAgICAgaXNBbGxvd2VkIHw9
IHVybC5wcm90b2NvbElzRGF0YSgpOwotICAgIGVsc2UgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5n
QVNDSUlDYXNlKG1fZGlyZWN0aXZlTmFtZSwgIm1lZGlhLXNyYyIpKQorICAgIGVsc2UgaWYgKGVx
dWFsSWdub3JpbmdBU0NJSUNhc2UobV9kaXJlY3RpdmVOYW1lLCBDb250ZW50U2VjdXJpdHlQb2xp
Y3lEaXJlY3RpdmVOYW1lczo6bWVkaWFTcmMpKQogICAgICAgICBpc0FsbG93ZWQgfD0gdXJsLnBy
b3RvY29sSXNEYXRhKCkgfHwgdXJsLnByb3RvY29sSXNCbG9iKCk7CiAgICAgcmV0dXJuIGlzQWxs
b3dlZDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1
cml0eVBvbGljeVNvdXJjZUxpc3REaXJlY3RpdmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9j
c3AvQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdERpcmVjdGl2ZS5jcHAKaW5kZXggNGM0
ZjExYzQyZTRiNTFmOTZhY2Y1ZDg2ZjRiNGY1NTY4M2FlMjhmNS4uNDYxZGExZGYwMGE1OTg1YzY3
MmIxYTljMmFkMWI0MDI0MjAzNzRjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9j
c3AvQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdERpcmVjdGl2ZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdERpcmVj
dGl2ZS5jcHAKQEAgLTI4LDEzICsyOCwxNCBAQAogI2luY2x1ZGUgIkNvbnRlbnRTZWN1cml0eVBv
bGljeVNvdXJjZUxpc3REaXJlY3RpdmUuaCIKIAogI2luY2x1ZGUgIkNvbnRlbnRTZWN1cml0eVBv
bGljeS5oIgorI2luY2x1ZGUgIkNvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3QuaCIK
ICNpbmNsdWRlICJVUkwuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1Db250ZW50U2VjdXJp
dHlQb2xpY3lTb3VyY2VMaXN0RGlyZWN0aXZlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VM
aXN0RGlyZWN0aXZlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgY29u
c3QgQ29udGVudFNlY3VyaXR5UG9saWN5JiBwb2xpY3kpCi0gICAgOiBDb250ZW50U2VjdXJpdHlQ
b2xpY3lEaXJlY3RpdmUobmFtZSwgdmFsdWUsIHBvbGljeSkKLSAgICAsIG1fc291cmNlTGlzdChw
b2xpY3ksIG5hbWUpCitDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0RGlyZWN0aXZlOjpD
b250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0RGlyZWN0aXZlKGNvbnN0IENvbnRlbnRTZWN1
cml0eVBvbGljeURpcmVjdGl2ZUxpc3QmIGRpcmVjdGl2ZUxpc3QsIGNvbnN0IFN0cmluZyYgbmFt
ZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKKyAgICA6IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVj
dGl2ZShkaXJlY3RpdmVMaXN0LCBuYW1lLCB2YWx1ZSkKKyAgICAsIG1fc291cmNlTGlzdChkaXJl
Y3RpdmVMaXN0LnBvbGljeSgpLCBuYW1lKQogewogICAgIG1fc291cmNlTGlzdC5wYXJzZSh2YWx1
ZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJp
dHlQb2xpY3lTb3VyY2VMaXN0RGlyZWN0aXZlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9D
b250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0RGlyZWN0aXZlLmgKaW5kZXggYWM2NTAwNTJk
YzFlNTkxMmZjMWQ1ZjQ2NjVkYjVkM2UzY2ZjNWU3My4uYjg1YThlOGZmOTBjZjA0NTBjOWYxNGU3
NzJjYTFjMDAxNGY4NTFhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29u
dGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdERpcmVjdGl2ZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3REaXJlY3RpdmUuaApA
QCAtMzIsMTEgKzMyLDExIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgQ29udGVu
dFNlY3VyaXR5UG9saWN5OworY2xhc3MgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlz
dDsKIAogY2xhc3MgQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdERpcmVjdGl2ZSA6IHB1
YmxpYyBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmUgewogcHVibGljOgotICAgIENvbnRl
bnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3REaXJlY3RpdmUoY29uc3QgU3RyaW5nJiBuYW1lLCBj
b25zdCBTdHJpbmcmIHZhbHVlLCBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3kmKTsKKyAgICBD
b250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0RGlyZWN0aXZlKGNvbnN0IENvbnRlbnRTZWN1
cml0eVBvbGljeURpcmVjdGl2ZUxpc3QmLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmlu
ZyYgdmFsdWUpOwogCiAgICAgYm9vbCBhbGxvd3MoY29uc3QgVVJMJik7CiAgICAgYm9vbCBhbGxv
d3MoY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5SGFzaCYpIGNvbnN0Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>274843</attachid>
            <date>2016-03-24 11:05:02 -0700</date>
            <delta_ts>2016-03-24 11:21:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-155842-20160324110504.patch</filename>
            <type>text/plain</type>
            <size>108141</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk4NjI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmY3Yzc4ZTcyYjEzZDlm
MjI1ZTQxZWM4MTI2OWJiNGJmMjVmYWM2Yy4uODJhNGQyMWMwM2IzZjE5NmExZGE1MTQxM2Q3YWYw
YWVjYmZkZTlhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1MSBAQAorMjAxNi0wMy0yNCAgRGFu
aWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CisKKyAgICAgICAgQ1NQOiBNb3ZlIGxvZ2lj
IGZvciByZXBvcnRpbmcgYSB2aW9sYXRpb24gZnJvbSBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJl
Y3RpdmVMaXN0IHRvIENvbnRlbnRTZWN1cml0eVBvbGljeQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU1ODQyCisgICAgICAgIDxyZGFyOi8vcHJvYmxl
bS8yNTM0MDM3Nz4KKyAgICAgICAgQW5kCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNTUxMzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBUb3dhcmRzIGFzc29jaWF0aW5nIHNvdXJjZSBmaWxlLCBsaW5lLSwg
YW5kIGNvbHVtbi0gbnVtYmVycyAoaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTExNDMxNykKKyAgICAgICAgd2l0aCBhIENTUCBjb25zb2xlIG1lc3NhZ2Ugd2Ugc2hvdWxk
IG1vdmUgdGhlIGxvZ2ljIGZvciBsb2dnaW5nIHRoZSBjb25zb2xlIG1lc3NhZ2UvcmVwb3J0aW5n
IHRoZSB2aW9sYXRpb24KKyAgICAgICAgZnJvbSBjbGFzcyBDb250ZW50U2VjdXJpdHlQb2xpY3lE
aXJlY3RpdmVMaXN0IHRvIGNsYXNzIENvbnRlbnRTZWN1cml0eVBvbGljeSBzbyB0aGF0IGl0IGlz
IGNsb3NlciB0byB0aGUKKyAgICAgICAgc2NyaXB0IGV4ZWN1dGlvbiBjb250ZXh0IHRoYXQgY2Fu
IGFjY2VzcyBzdWNoIGluZm9ybWF0aW9uLgorCisgICAgICAgIFRoZSByZXNwb25zaWJpbGl0aWVz
IG9mIHRoZSBjbGFzcyBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0IGhhdmUgYmVl
biByZWR1Y2VkLiBJdCBpcyByZXNwb25zaWJsZQorICAgICAgICBmb3IgcGFyc2luZyBhIHN0cmlu
ZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgQ29udGVudCBTZWN1cml0eSBQb2xpY3kgYW5kIHByb3Zp
ZGluZyBmdW5jdGlvbnMgdG8gZGV0ZXJtaW5lCisgICAgICAgIHRoZSB2aW9sYXRlZCBkaXJlY3Rp
dmUgKGlmIGFueSkgZm9yIGEgZ2l2ZW4gc291cmNlIChlLmcuIFVSTCkuIENvbnRlbnRTZWN1cml0
eVBvbGljeURpcmVjdGl2ZUxpc3Qgbm8gbG9uZ2VyCisgICAgICAgIHRha2VzIHJlc3BvbnNpYmls
aXR5IGxvZ2dpbmcgYSBjb25zb2xlIG1lc3NhZ2Ugb3Igc2VuZGluZyBhIHZpb2xhdGlvbiByZXBv
cnQgKGlmIGFwcGxpY2FibGUpLiBGYWxsaW5nIG91dAorICAgICAgICBmcm9tIHRoaXMgZGVjcmVh
c2UgaW4gcmVzcG9uc2liaWxpdHkgaXMgdGhlIHJlbW92YWwgb2YgZW51bSBDb250ZW50U2VjdXJp
dHlQb2xpY3lEaXJlY3RpdmVMaXN0OjpSZXBvcnRpbmdTdGF0dXMKKyAgICAgICAgYW5kIHRoZSBu
ZWVkIHRvIHBhc3MgYSBlbnVtZXJhdG9yIG9mIHRoaXMgZW51bSB0byBlYWNoIENvbnRlbnRTZWN1
cml0eVBvbGljeURpcmVjdGl2ZUxpc3QgdG8gc3VwcHJlc3MKKyAgICAgICAgdGhlIHNlbmRpbmcg
b2YgYSB2aW9sYXRpb24gcmVwb3J0LiBUaGUgY2FsbGVyIG9mIENvbnRlbnRTZWN1cml0eVBvbGlj
eURpcmVjdGl2ZUxpc3QgaXMgcmVzcG9uc2libGUgZm9yCisgICAgICAgIG1ha2luZyB0aGlzIGRl
dGVybWluYXRpb24uCisKKyAgICAgICAgTm8gZnVuY3Rpb25hbGl0eSB3YXMgY2hhbmdlZC4gU28s
IG5vIG5ldyB0ZXN0cy4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OiBBZGQgZmlsZXMgQ29u
dGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlLmNwcCBhbmQgQ29udGVudFNlY3VyaXR5UG9saWN5
RGlyZWN0aXZlTmFtZXMuY3BwLgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajogQWRkIGZpbGVzIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZS5jcHAgYW5k
IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzLntjcHAsIGh9LgorICAgICAgICAq
IHBhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpj
b25zb2xlTWVzc2FnZUZvclZpb2xhdGlvbik6IE1vdmVkIGZyb20gZmlsZSBDb250ZW50U2VjdXJp
dHlQb2xpY3lEaXJlY3RpdmVMaXN0LmNwcCBhbmQKKyAgICAgICAgaW5jb3Jwb3JhdGVzIHRoZSBm
dW5jdGlvbmFsaXR5IG9mIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OnJlcG9y
dFZpb2xhdGlvbigpLiBNb2RpZmllZAorICAgICAgICB0byB0YWtlIGEgcmVmZXJlbmNlIHRvIHRo
ZSB2aW9sYXRlZCBkaXJlY3RpdmUgKENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZSBvYmpl
Y3QpIGFuZCByZW1vdmVkCisgICAgICAgIHRoZSBib29sZWFuIHBhcmFtZXRlciB2aW9sYXRlc0Rl
ZmF1bHRTcmMgYXMgd2UgY2FuIGRlZHVjZSB0aGlzIGZyb20gdGhlIHZpb2xhdGVkIGRpcmVjdGl2
ZS4KKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeTo6ZGlkUmVjZWl2ZUhl
YWRlcik6IE1vZGlmaWVkIHRvIGNhbGwgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlz
dDo6dmlvbGF0ZWREaXJlY3RpdmVGb3JVbnNhZmVFdmFsKCkuCisgICAgICAgIChXZWJDb3JlOjpD
b250ZW50U2VjdXJpdHlQb2xpY3k6OmZvdW5kSGFzaE9mQ29udGVudEluQWxsUG9saWNpZXMpOiBS
ZW5hbWVkOyBGb3JtZXJseSBuYW1lZCBhbGxQb2xpY2llc0FsbG93SGFzaEZyb21Db250ZW50Lgor
ICAgICAgICBNb2RpZmllZCB0byBlYXJseSByZXR1cm4gaWYgZWl0aGVyIG5vIGFsZ29yaXRobXMg
YXJlIGdpdmVuIG9yIHRoZSBzcGVjaWZpZWQgY29udGVudCB0byBoYXNoIGlzCisgICAgICAgIHRo
ZSBlbXB0eSBzdHJpbmcuCisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3k6
OmFsbG93SmF2YVNjcmlwdFVSTHMpOiBNb3ZlZCBsb2dpYyBmb3IgcmVwb3J0aW5nIGEgdmlvbGF0
aW9uIGZyb20KKyAgICAgICAgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdCBtZW1i
ZXIgZnVuY3Rpb24gb2YgdGhlIHNhbWUgbmFtZSB0byBoZXJlLgorICAgICAgICAoV2ViQ29yZTo6
Q29udGVudFNlY3VyaXR5UG9saWN5OjphbGxvd0lubGluZUV2ZW50SGFuZGxlcnMpOiBEaXR0by4K
KyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeTo6YWxsb3dTY3JpcHRXaXRo
Tm9uY2UpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeTo6
YWxsb3dTdHlsZVdpdGhOb25jZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudFNl
Y3VyaXR5UG9saWN5OjphbGxvd0lubGluZVNjcmlwdCk6IERpdHRvLgorICAgICAgICAoV2ViQ29y
ZTo6Q29udGVudFNlY3VyaXR5UG9saWN5OjphbGxvd0lubGluZVN0eWxlKTogRGl0dG8uCisgICAg
ICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93RXZhbCk6IERpdHRvLgor
ICAgICAgICAoV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5OjphbGxvd0ZyYW1lQW5jZXN0
b3JzKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFs
bG93UGx1Z2luVHlwZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5
UG9saWN5OjphbGxvd1NjcmlwdEZyb21Tb3VyY2UpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6
OkNvbnRlbnRTZWN1cml0eVBvbGljeTo6YWxsb3dPYmplY3RGcm9tU291cmNlKTogRGl0dG8uCisg
ICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93Q2hpbGRGcmFtZUZy
b21Tb3VyY2UpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGlj
eTo6YWxsb3dDaGlsZENvbnRleHRGcm9tU291cmNlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3Jl
OjpDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93SW1hZ2VGcm9tU291cmNlKTogRGl0dG8uCisg
ICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93U3R5bGVGcm9tU291
cmNlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFs
bG93Rm9udEZyb21Tb3VyY2UpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1
cml0eVBvbGljeTo6YWxsb3dNZWRpYUZyb21Tb3VyY2UpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeTo6YWxsb3dDb25uZWN0VG9Tb3VyY2UpOiBEaXR0by4K
KyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeTo6YWxsb3dGb3JtQWN0aW9u
KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93
QmFzZVVSSSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5
OjpyZXBvcnRWaW9sYXRpb24pOiBTaW1wbGlmaWVkIHNpZ25hdHVyZSBieSBoYXZpbmcgaXQgdGFr
ZSBhIHJlZmVyZW5jZSB0bworICAgICAgICBhIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2
ZSBvYmplY3QuIEFsc28gc3BsaXQgZnVuY3Rpb25hbGl0eSBpbnRvIHR3byB2YXJpYW50czogb25l
IHZhcmlhbnQgdGFrZXMgYQorICAgICAgICBwb2ludGVyIHRvIGEgSlNDOjpFeGVjU3RhdGUsIG9u
ZSB2YXJpYW50IHRha2VzIGEgc291cmNlIGZpbGUsIGFuZCBsaW5lIGFuZCBjb2x1bW4gcG9zaXRp
b25zLgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5OjphbGxQb2xpY2ll
c0FsbG93SGFzaEZyb21Db250ZW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNvbnRl
bnRTZWN1cml0eVBvbGljeTo6Z2F0aGVyUmVwb3J0VVJJcyk6IERlbGV0ZWQuCisgICAgICAgICog
cGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5Lmg6CisgICAgICAgIChXZWJDb3JlOjpDb250
ZW50U2VjdXJpdHlQb2xpY3k6OnZpb2xhdGVkRGlyZWN0aXZlSW5BbnlQb2xpY3kpOiBGb3JtZXJs
eSBuYW1lZCBhbGxQb2xpY2llc0FsbG93LiBNb2RpZmllZAorICAgICAgICB0byByZXR1cm4gdGhl
IHZpb2xhdGVkIGRpcmVjdGl2ZS4KKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBv
bGljeTo6YWxsUG9saWNpZXNBbGxvdyk6IERlbGV0ZWQuCisgICAgICAgICogcGFnZS9jc3AvQ29u
dGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlLmNwcDogQWRkZWQuCisgICAgICAgICogcGFnZS9j
c3AvQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlLmg6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlOjpDb250ZW50U2VjdXJpdHlQb2xp
Y3lEaXJlY3RpdmUpOiBNb2RpZmllZCB0byB0YWtlIGEgcmVmZXJlbmNlIHRvIHRoZQorICAgICAg
ICBkaXJlY3RpdmUgbGlzdCB0aGF0IGNvbnRhaW5zIHRoaXMgZGlyZWN0aXZlIGluc3RlYWQgb2Yg
cG9pbnRlciB0byBhIENvbnRlbnRTZWN1cml0eVBvbGljeSBvYmplY3QuCisgICAgICAgIChXZWJD
b3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmU6Om5hbWUpOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZTo6ZGlyZWN0aXZlTGlz
dCk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0
aXZlOjppc0RlZmF1bHRTcmMpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1
cml0eVBvbGljeURpcmVjdGl2ZTo6cG9saWN5KTogRGVsZXRlZC4KKyAgICAgICAgKiBwYWdlL2Nz
cC9Db250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0LmNwcDogUmVtb3ZlIHVudXNlZCBo
ZWFkZXIgPHd0Zi9PcHRpb25hbC5oPi4gQWxzbyByZW1vdmUgaGVhZGVyIHd0Zi90ZXh0L1N0cmlu
Z0J1aWxkZXIuaAorICAgICAgICBhcyB0aGUgZnVuY3Rpb24gdGhhdCBtYWRlIHVzZSBvZiBpdCwg
Y29uc29sZU1lc3NhZ2VGb3JWaW9sYXRpb24sIHdhcyBtb3ZlZCB0byBmaWxlIENvbnRlbnRTZWN1
cml0eVBvbGljeS5jcHAuCisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lE
aXJlY3RpdmVMaXN0Ojp2aW9sYXRlZERpcmVjdGl2ZUZvclVuc2FmZUV2YWwpOiBGb3JtZXJseSBu
YW1lZCBhbGxvd0V2YWwuCisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lE
aXJlY3RpdmVMaXN0Ojp2aW9sYXRlZERpcmVjdGl2ZUZvclVuc2FmZUlubGluZVNjcmlwdCk6IEZv
cm1lcmx5IG5hbWVkIGFsbG93SW5saW5lU2NyaXB0LgorICAgICAgICAoV2ViQ29yZTo6Q29udGVu
dFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6dmlvbGF0ZWREaXJlY3RpdmVGb3JVbnNhZmVJ
bmxpbmVTdHlsZSk6IEZvcm1lcmx5IG5hbWVkIGFsbG93SW5saW5lU3R5bGUuCisgICAgICAgIChX
ZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0Ojp2aW9sYXRlZERpcmVj
dGl2ZUZvclNjcmlwdEhhc2gpOiBGb3JtZXJseSBuYW1lZCBhbGxvd0lubGluZVNjcmlwdFdpdGhI
YXNoLgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlz
dDo6dmlvbGF0ZWREaXJlY3RpdmVGb3JTdHlsZUhhc2gpOiBGb3JtZXJseSBuYW1lZCBhbGxvd0lu
bGluZVN0eWxlV2l0aEhhc2guCisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xp
Y3lEaXJlY3RpdmVMaXN0Ojp2aW9sYXRlZERpcmVjdGl2ZUZvclNjcmlwdE5vbmNlKTogRm9ybWVy
bHkgbmFtZWQgYWxsb3dTY3JpcHRXaXRoTm9uY2UuCisgICAgICAgIChXZWJDb3JlOjpDb250ZW50
U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0Ojp2aW9sYXRlZERpcmVjdGl2ZUZvclN0eWxlTm9u
Y2UpOiBGb3JtZXJseSBuYW1lZCBhbGxvd1N0eWxlV2l0aE5vbmNlLgorICAgICAgICAoV2ViQ29y
ZTo6Q29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6dmlvbGF0ZWREaXJlY3RpdmVG
b3JCYXNlVVJJKTogRm9ybWVybHkgbmFtZWQgYWxsb3dCYXNlVVJJLgorICAgICAgICAoV2ViQ29y
ZTo6Q29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6dmlvbGF0ZWREaXJlY3RpdmVG
b3JDaGlsZENvbnRleHQpOiBGb3JtZXJseSBuYW1lZCBhbGxvd0NoaWxkQ29udGV4dEZyb21Tb3Vy
Y2UuCisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0
Ojp2aW9sYXRlZERpcmVjdGl2ZUZvckNvbm5lY3RTb3VyY2UpOiBGb3JtZXJseSBuYW1lZCBhbGxv
d0Nvbm5lY3RUb1NvdXJjZS4KKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGlj
eURpcmVjdGl2ZUxpc3Q6OnZpb2xhdGVkRGlyZWN0aXZlRm9yRm9udCk6IEZvcm1lcmx5IG5hbWVk
IGFsbG93Rm9udEZyb21Tb3VyY2UuCisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQ
b2xpY3lEaXJlY3RpdmVMaXN0Ojp2aW9sYXRlZERpcmVjdGl2ZUZvckZvcm1BY3Rpb24pOiBGb3Jt
ZXJseSBuYW1lZCBhbGxvd0Zvcm1BY3Rpb24uCisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2Vj
dXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0Ojp2aW9sYXRlZERpcmVjdGl2ZUZvckZyYW1lKTogRm9y
bWVybHkgbmFtZWQgYWxsb3dDaGlsZEZyYW1lRnJvbVNvdXJjZS4KKyAgICAgICAgKFdlYkNvcmU6
OkNvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OnZpb2xhdGVkRGlyZWN0aXZlRm9y
RnJhbWVBbmNlc3Rvcik6IEZvcm1lcmx5IG5hbWVkIGFsbG93RnJhbWVBbmNlc3RvcnMuCisgICAg
ICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0Ojp2aW9sYXRl
ZERpcmVjdGl2ZUZvckltYWdlKTogRm9ybWVybHkgbmFtZWQgYWxsb3dJbWFnZUZyb21Tb3VyY2Uu
CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0Ojp2
aW9sYXRlZERpcmVjdGl2ZUZvck1lZGlhKTogRm9ybWVybHkgbmFtZWQgYWxsb3dNZWRpYUZyb21T
b3VyY2UuCisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVM
aXN0Ojp2aW9sYXRlZERpcmVjdGl2ZUZvck9iamVjdFNvdXJjZSk6IEZvcm1lcmx5IG5hbWVkIGFs
bG93T2JqZWN0RnJvbVNvdXJjZS4KKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBv
bGljeURpcmVjdGl2ZUxpc3Q6OnZpb2xhdGVkRGlyZWN0aXZlRm9yUGx1Z2luVHlwZSk6IEZvcm1l
cmx5IG5hbWVkIGFsbG93UGx1Z2luVHlwZS4KKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1
cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OnZpb2xhdGVkRGlyZWN0aXZlRm9yU2NyaXB0KTogRm9y
bWVybHkgbmFtZWQgYWxsb3dTY3JpcHRGcm9tU291cmNlLgorICAgICAgICAoV2ViQ29yZTo6Q29u
dGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6dmlvbGF0ZWREaXJlY3RpdmVGb3JTdHls
ZSk6IEZvcm1lcmx5IG5hbWVkIGFsbG93U3R5bGVGcm9tU291cmNlLgorICAgICAgICAoV2ViQ29y
ZTo6Q29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6cGFyc2UpOiBVcGRhdGUgY29k
ZSB0byBtYWtlIHVzZSBvZiBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lcyBjb25z
dGFudHMuCisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVM
aXN0OjpzZXRDU1BEaXJlY3RpdmUpOiBQYXNzIHx0aGlzfCBpbnN0ZWFkIG9mIHRoZSBDb250ZW50
U2VjdXJpdHlQb2xpY3kgb2JqZWN0LgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5
UG9saWN5RGlyZWN0aXZlTGlzdDo6YWRkRGlyZWN0aXZlKTogVXBkYXRlIGNvZGUgdG8gbWFrZSB1
c2Ugb2YgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXMgY29uc3RhbnRzLgorICAg
ICAgICAoV2ViQ29yZTo6aXNFeHBlcmltZW50YWxEaXJlY3RpdmVOYW1lKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OmlzQ1NQRGlyZWN0aXZlTmFtZSk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0OjpyZXBvcnRWaW9sYXRp
b24pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Y29uc29sZU1lc3NhZ2VGb3JWaW9sYXRp
b24pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5RGly
ZWN0aXZlTGlzdDo6YWxsb3dKYXZhU2NyaXB0VVJMcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0OjphbGxvd0lubGluZUV2ZW50
SGFuZGxlcnMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9s
aWN5RGlyZWN0aXZlTGlzdDo6YWxsb3dJbmxpbmVTY3JpcHQpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6YWxsb3dJbmxpbmVT
Y3JpcHRXaXRoSGFzaCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJp
dHlQb2xpY3lEaXJlY3RpdmVMaXN0OjphbGxvd1NjcmlwdFdpdGhOb25jZSk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0OjphbGxv
d0lubGluZVN0eWxlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0
eVBvbGljeURpcmVjdGl2ZUxpc3Q6OmFsbG93SW5saW5lU3R5bGVXaXRoSGFzaCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0Ojph
bGxvd1N0eWxlV2l0aE5vbmNlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRT
ZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OmFsbG93RXZhbCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0OjphbGxvd1BsdWdp
blR5cGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5
RGlyZWN0aXZlTGlzdDo6YWxsb3dTY3JpcHRGcm9tU291cmNlKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OmFsbG93T2JqZWN0
RnJvbVNvdXJjZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQ
b2xpY3lEaXJlY3RpdmVMaXN0OjphbGxvd0NoaWxkQ29udGV4dEZyb21Tb3VyY2UpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6
YWxsb3dDaGlsZEZyYW1lRnJvbVNvdXJjZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpD
b250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0OjphbGxvd0ltYWdlRnJvbVNvdXJjZSk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3Rp
dmVMaXN0OjphbGxvd1N0eWxlRnJvbVNvdXJjZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0OjphbGxvd0ZvbnRGcm9tU291cmNl
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeURpcmVj
dGl2ZUxpc3Q6OmFsbG93TWVkaWFGcm9tU291cmNlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OmFsbG93Q29ubmVjdFRvU291
cmNlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeURp
cmVjdGl2ZUxpc3Q6OmFsbG93Rm9ybUFjdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0OjphbGxvd0Jhc2VVUkkpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlz
dDo6YWxsb3dGcmFtZUFuY2VzdG9ycyk6IERlbGV0ZWQuCisgICAgICAgICogcGFnZS9jc3AvQ29u
dGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdC5oOgorICAgICAgICAoV2ViQ29yZTo6Q29u
dGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6ZGVmYXVsdFNyYyk6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6cG9saWN5
KTogQWRkZWQuIEFsc28gYWRkZWQgRklYTUUgY29tbWVudCB0byByZW1vdmUgdGhpcyBmdW5jdGlv
bi4gVGhpcworICAgICAgICBmdW5jdGlvbiBpcyBvbmx5IHVzZWQgYnkgQ29udGVudFNlY3VyaXR5
UG9saWN5TWVkaWFMaXN0RGlyZWN0aXZlIHNvIHRoYXQgaXQgY2FuIGxvZyBhIGNvbnNvbGUgbWVz
c2FnZSBvbiBhIHBhcnNpbmcgZXJyb3IuCisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJp
dHlQb2xpY3lEaXJlY3RpdmVMaXN0OjpkZW55SWZFbmZvcmNpbmdQb2xpY3kpOiBEZWxldGVkLgor
ICAgICAgICAqIHBhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeU1lZGlhTGlzdERpcmVjdGl2
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lNZWRpYUxpc3RE
aXJlY3RpdmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeU1lZGlhTGlzdERpcmVjdGl2ZSk6IE1vZGlm
aWVkIHRvIHRha2UgYSByZWZlcmVuY2UgdG8gdGhlCisgICAgICAgIGRpcmVjdGl2ZSBsaXN0IHRo
YXQgY29udGFpbnMgdGhpcyBkaXJlY3RpdmUgaW5zdGVhZCBvZiBwb2ludGVyIHRvIGEgQ29udGVu
dFNlY3VyaXR5UG9saWN5IG9iamVjdC4KKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0
eVBvbGljeU1lZGlhTGlzdERpcmVjdGl2ZTo6cGFyc2UpOiBVcGRhdGVkIGNvZGUgdG8gdXNlIENv
bnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OnBvbGljeSgpIGluc3RlYWQKKyAgICAg
ICAgb2YgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlOjpwb2xpY3koKSBhcyB0aGUgbGF0
dGVyIHdhcyByZW1vdmVkLiBJZGVhbGx5IHRoaXMgY2xhc3Mgc2hvdWxkIG5vdCBuZWVkIHRvIHVz
ZSB0aGUgQ29udGVudFNlY3VyaXR5UG9saWN5CisgICAgICAgIG9iamVjdCB0byBsb2cgYSBjb25z
b2xlIG1lc3NhZ2UuCisgICAgICAgICogcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5TWVk
aWFMaXN0RGlyZWN0aXZlLmg6CisgICAgICAgICogcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9s
aWN5U291cmNlTGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc0V4cGVyaW1lbnRhbERpcmVj
dGl2ZU5hbWUpOiBNb3ZlZCBmcm9tIGZpbGUgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZl
TGlzdC5jcHAgYmVjYXVzZSB0aGlzIGZ1bmN0aW9uIGlzIG9ubHkgdXNlZAorICAgICAgICBpbiB0
aGlzIGZpbGUuCisgICAgICAgIChXZWJDb3JlOjppc0NTUERpcmVjdGl2ZU5hbWUpOiBEaXR0by4K
KyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3Q6OmlzUHJv
dG9jb2xBbGxvd2VkQnlTdGFyKTogVXBkYXRlIGNvZGUgdG8gbWFrZSB1c2Ugb2YgQ29udGVudFNl
Y3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXMgY29uc3RhbnRzLgorICAgICAgICAqIHBhZ2UvY3Nw
L0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3REaXJlY3RpdmUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdERpcmVjdGl2ZTo6Q29udGVu
dFNlY3VyaXR5UG9saWN5U291cmNlTGlzdERpcmVjdGl2ZSk6IE1vZGlmaWVkIHRvIHRha2UgYSBy
ZWZlcmVuY2UgdG8KKyAgICAgICAgdGhlIGRpcmVjdGl2ZSBsaXN0IHRoYXQgY29udGFpbnMgdGhp
cyBkaXJlY3RpdmUgaW5zdGVhZCBvZiBwb2ludGVyIHRvIGEgQ29udGVudFNlY3VyaXR5UG9saWN5
IG9iamVjdC4gCisgICAgICAgICogcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNl
TGlzdERpcmVjdGl2ZS5oOgorCiAyMDE2LTAzLTI0ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uLmZh
YmxldEBjcmYuY2Fub24uZnI+CiAKICAgICAgICAgW0ZldGNoIEFQSV0gQWRkIGJhc2ljIGxvYWRp
bmcgb2YgcmVzb3VyY2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4
dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IGIzODI2ZDJlOWU5ZDgwMGNh
Yjg3YjdhNWZmMzI0MGYyNGY4MjgyYWYuLjMxMzQ0OGIwYTFjNTAwYzkxOWZkODhkODFlODYyZTBk
M2M4ZDI2MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBi
L1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0yMDcxLDcgKzIwNzEsOSBAQCBzZXQo
V2ViQ29yZV9TT1VSQ0VTCiAgICAgcGFnZS9hbmltYXRpb24vS2V5ZnJhbWVBbmltYXRpb24uY3Bw
CiAKICAgICBwYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3BwCisgICAgcGFnZS9jc3Av
Q29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlLmNwcAogICAgIHBhZ2UvY3NwL0NvbnRlbnRT
ZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3QuY3BwCisgICAgcGFnZS9jc3AvQ29udGVudFNlY3Vy
aXR5UG9saWN5RGlyZWN0aXZlTmFtZXMuY3BwCiAgICAgcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5
UG9saWN5TWVkaWFMaXN0RGlyZWN0aXZlLmNwcAogICAgIHBhZ2UvY3NwL0NvbnRlbnRTZWN1cml0
eVBvbGljeVJlc3BvbnNlSGVhZGVycy5jcHAKICAgICBwYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQ
b2xpY3lTb3VyY2UuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKaW5kZXggYTEyYTk3OGQwYzdkNzc5OTQwMjFlOTQ2ZWU1N2I5MzZjZTdk
OTYxZi4uNTYyNTM5ZGYzOGRkNmEzZDYyMzI2NWMxMmNkZDA2ZDAyYWM1ODhlMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNjIx
Myw2ICs2MjEzLDggQEAKIAkJQ0UxMjUyNTMxQTFCRUMwNjAwODY0NDgwIC8qIE5TU3RyaW5nU1BJ
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTEyNTI1
MjFBMUJFQzA2MDA4NjQ0ODAgLyogTlNTdHJpbmdTUEkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDRTEyNTI1NTFBMUJFQzBFMDA4NjQ0ODAgLyog
TlNVUkxEb3dubG9hZFNQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQ0UxMjUyNTQxQTFCRUMwRTAwODY0NDgwIC8qIE5TVVJMRG93bmxvYWRTUEkuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDRTEyNTI1
QjFBMUMwMTgyMDA4NjQ0ODAgLyogQ0ZOZXR3b3JrU1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTEyNTI1QTFBMUMwMTgyMDA4NjQ0ODAgLyogQ0ZO
ZXR3b3JrU1BJLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJQ0UyODQ5ODcxQ0EzNjBERjAwQjRBNTdGIC8qIENvbnRlbnRTZWN1cml0eVBvbGljeURp
cmVjdGl2ZU5hbWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBDRTI4NDk4NjFDQTM2MERGMDBCNEE1N0YgLyogQ29udGVudFNlY3VyaXR5UG9saWN5RGly
ZWN0aXZlTmFtZXMuaCAqLzsgfTsKKwkJQ0UyODQ5ODkxQ0EzNjE0NjAwQjRBNTdGIC8qIENvbnRl
bnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFMjg0OTg4MUNBMzYxNDYwMEI0QTU3RiAvKiBDb250
ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lcy5jcHAgKi87IH07CiAJCUNFNkRBREY5MUM1
OTFFNkEwMDNGNkE4OCAvKiBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0U2REFERjcx
QzU5MUU2QTAwM0Y2QTg4IC8qIENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycy5j
cHAgKi87IH07CiAJCUNFNkRBREZBMUM1OTFFNkEwMDNGNkE4OCAvKiBDb250ZW50U2VjdXJpdHlQ
b2xpY3lSZXNwb25zZUhlYWRlcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IENFNkRBREY4MUM1OTFFNkEwMDNGNkE4OCAvKiBDb250ZW50U2VjdXJpdHlQ
b2xpY3lSZXNwb25zZUhlYWRlcnMuaCAqLzsgfTsKIAkJQ0U3OTlGOTcxQzZBNDZCQzAwOTdCNTE4
IC8qIENvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0U3OTlGOTUxQzZBNDZCQzAwOTdCNTE4IC8q
IENvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3QuY3BwICovOyB9OwpAQCAtNjI1MCw2ICs2
MjUyLDcgQEAKIAkJQ0VFRkNEN0MxOURCMzNEQzAwMzg3NkQ3IC8qIFBsYXRmb3JtTWVkaWFSZXNv
dXJjZUxvYWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQ0VFRkNEN0IxOURCMzNEQzAwMzg3NkQ3IC8qIFBsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRl
ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUNF
RjQxOENFMTE3OTY3OEMwMDlEMTEyQyAvKiBWaWV3cG9ydEFyZ3VtZW50cy5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRUY0MThDQzExNzk2NzhDMDA5
RDExMkMgLyogVmlld3BvcnRBcmd1bWVudHMuY3BwICovOyB9OwogCQlDRUY0MThDRjExNzk2NzhD
MDA5RDExMkMgLyogVmlld3BvcnRBcmd1bWVudHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFRjQxOENEMTE3OTY3OEMwMDlEMTEyQyAvKiBWaWV3cG9y
dEFyZ3VtZW50cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCUNFRjU5QjI2MUNBMEUxMUQwMDVDM0UxMyAvKiBDb250ZW50U2VjdXJpdHlQb2xpY3lE
aXJlY3RpdmUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQ0VGNTlCMjUxQ0EwRTExRDAwNUMzRTEzIC8qIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVj
dGl2ZS5jcHAgKi87IH07CiAJCUQwMDBFQkEyMTFCREFGRDQwMEM0NzcyNiAvKiBGcmFtZUxvYWRl
clN0YXRlTWFjaGluZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBEMDAwRUJBMDExQkRBRkQ0MDBDNDc3MjYgLyogRnJhbWVMb2FkZXJTdGF0ZU1hY2hp
bmUuY3BwICovOyB9OwogCQlEMDAwRUJBMzExQkRBRkQ0MDBDNDc3MjYgLyogRnJhbWVMb2FkZXJT
dGF0ZU1hY2hpbmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEQwMDBFQkExMTFCREFGRDQwMEM0NzcyNiAvKiBGcmFtZUxvYWRlclN0YXRlTWFjaGluZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUQwMDBF
RDI3MTFDMUI5Q0QwMEM0NzcyNiAvKiBTdWJmcmFtZUxvYWRlci5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEMDAwRUQyNTExQzFCOUNEMDBDNDc3MjYg
LyogU3ViZnJhbWVMb2FkZXIuY3BwICovOyB9OwpAQCAtMTQyMzIsNiArMTQyMzUsOCBAQAogCQlD
RTEyNTI1MjFBMUJFQzA2MDA4NjQ0ODAgLyogTlNTdHJpbmdTUEkuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gTlNTdHJpbmdTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQ0UxMjUyNTQxQTFCRUMwRTAwODY0NDgwIC8qIE5TVVJMRG93bmxvYWRTUEkuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTlNVUkxEb3dubG9hZFNQSS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlDRTEyNTI1QTFBMUMwMTgyMDA4NjQ0ODAgLyogQ0ZOZXR3
b3JrU1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENGTmV0d29ya1NQSS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRTI4NDk4NjFDQTM2MERGMDBCNEE1N0Yg
LyogQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBuYW1lID0gQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXMuaDsg
cGF0aCA9IGNzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lcy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlDRTI4NDk4ODFDQTM2MTQ2MDBCNEE1N0YgLyogQ29udGVu
dFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBuYW1lID0gQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXMuY3BwOyBw
YXRoID0gY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0U1Q0IxQjMxNEVEQUI2RjAwQkIyNzk1IC8qIEV2ZW50
U2VuZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV2ZW50U2VuZGVyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFNkQ4OTI5NEM3QUFDRTBBRDg5QjNERCAv
KiBNYXRoTUxNZW5jbG9zZUVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gTWF0aE1MTWVuY2xvc2VFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUNFNkRBREY3MUM1OTFFNkEwMDNGNkE4OCAvKiBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25z
ZUhlYWRlcnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQ29udGVu
dFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzLmNwcDsgcGF0aCA9IGNzcC9Db250ZW50U2Vj
dXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMTQyNzEsNiArMTQyNzYsNyBAQAogCQlDRUVGQ0Q3QjE5REIzM0RDMDAzODc2RDcgLyog
UGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFBsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlDRUY0MThDQzExNzk2NzhDMDA5RDExMkMgLyogVmlld3BvcnRBcmd1bWVudHMu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVmlld3BvcnRBcmd1bWVu
dHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRUY0MThDRDExNzk2NzhDMDA5
RDExMkMgLyogVmlld3BvcnRBcmd1bWVudHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gVmlld3BvcnRBcmd1bWVudHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
Q0VGNTlCMjUxQ0EwRTExRDAwNUMzRTEzIC8qIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2
ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBDb250ZW50U2VjdXJp
dHlQb2xpY3lEaXJlY3RpdmUuY3BwOyBwYXRoID0gY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeURp
cmVjdGl2ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwMDBFQkEwMTFCREFG
RDQwMEM0NzcyNiAvKiBGcmFtZUxvYWRlclN0YXRlTWFjaGluZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGcmFtZUxvYWRlclN0YXRlTWFjaGluZS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQwMDBFQkExMTFCREFGRDQwMEM0NzcyNiAvKiBGcmFt
ZUxvYWRlclN0YXRlTWFjaGluZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBG
cmFtZUxvYWRlclN0YXRlTWFjaGluZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlE
MDAwRUQyNTExQzFCOUNEMDBDNDc3MjYgLyogU3ViZnJhbWVMb2FkZXIuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3ViZnJhbWVMb2FkZXIuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMjMxOTUsOSArMjMyMDEsMTIgQEAKIAkJCWNoaWxkcmVuID0g
KAogCQkJCTk3QzQ3MUQ5MTJGOTI1QkMwMDg2MzU0QiAvKiBDb250ZW50U2VjdXJpdHlQb2xpY3ku
Y3BwICovLAogCQkJCTk3QzQ3MURBMTJGOTI1QkQwMDg2MzU0QiAvKiBDb250ZW50U2VjdXJpdHlQ
b2xpY3kuaCAqLywKKwkJCQlDRUY1OUIyNTFDQTBFMTFEMDA1QzNFMTMgLyogQ29udGVudFNlY3Vy
aXR5UG9saWN5RGlyZWN0aXZlLmNwcCAqLywKIAkJCQlDRTc5OUZBMjFDNkE1MDNBMDA5N0I1MTgg
LyogQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlLmggKi8sCiAJCQkJQ0U3OTlGOTkxQzZB
NEJDRDAwOTdCNTE4IC8qIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3QuY3BwICov
LAogCQkJCUNFNzk5RjlBMUM2QTRCQ0QwMDk3QjUxOCAvKiBDb250ZW50U2VjdXJpdHlQb2xpY3lE
aXJlY3RpdmVMaXN0LmggKi8sCisJCQkJQ0UyODQ5ODgxQ0EzNjE0NjAwQjRBNTdGIC8qIENvbnRl
bnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzLmNwcCAqLywKKwkJCQlDRTI4NDk4NjFDQTM2
MERGMDBCNEE1N0YgLyogQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXMuaCAqLywK
IAkJCQlDRTdFMTc4MjFDODNBNDkxMDBBRDA2QUYgLyogQ29udGVudFNlY3VyaXR5UG9saWN5SGFz
aC5oICovLAogCQkJCUNFNzk5RkE1MUM2QTUwNTcwMDk3QjUxOCAvKiBDb250ZW50U2VjdXJpdHlQ
b2xpY3lNZWRpYUxpc3REaXJlY3RpdmUuY3BwICovLAogCQkJCUNFNzk5RkE2MUM2QTUwNTcwMDk3
QjUxOCAvKiBDb250ZW50U2VjdXJpdHlQb2xpY3lNZWRpYUxpc3REaXJlY3RpdmUuaCAqLywKQEAg
LTI1Mjk5LDYgKzI1MzA4LDcgQEAKIAkJCQk5N0M0NzFEQzEyRjkyNUJEMDA4NjM1NEIgLyogQ29u
dGVudFNlY3VyaXR5UG9saWN5LmggaW4gSGVhZGVycyAqLywKIAkJCQlDRTc5OUZBNDFDNkE1MDNB
MDA5N0I1MTggLyogQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlLmggaW4gSGVhZGVycyAq
LywKIAkJCQlDRTc5OUY5QzFDNkE0QkNEMDA5N0I1MTggLyogQ29udGVudFNlY3VyaXR5UG9saWN5
RGlyZWN0aXZlTGlzdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0UyODQ5ODcxQ0EzNjBERjAwQjRB
NTdGIC8qIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzLmggaW4gSGVhZGVycyAq
LywKIAkJCQlDRTdFMTc4MzFDODNBNDkxMDBBRDA2QUYgLyogQ29udGVudFNlY3VyaXR5UG9saWN5
SGFzaC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0U3OTlGQTgxQzZBNTA1NzAwOTdCNTE4IC8qIENv
bnRlbnRTZWN1cml0eVBvbGljeU1lZGlhTGlzdERpcmVjdGl2ZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQ0U2REFERkExQzU5MUU2QTAwM0Y2QTg4IC8qIENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3Bv
bnNlSGVhZGVycy5oIGluIEhlYWRlcnMgKi8sCkBAIC0yOTIyNiw3ICsyOTIzNiw5IEBACiAJCQkJ
QTE0OTc4NkUxQUJBRjMzODAwQ0VGN0U0IC8qIENvbnRlbnRGaWx0ZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQTE0MDkwRkIxQUE1MUUxRDAwOTExOTFBIC8qIENvbnRlbnRGaWx0ZXJVbmJsb2Nr
SGFuZGxlckNvY29hLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJOTdDNDcxREIxMkY5MjVCRDAwODYz
NTRCIC8qIENvbnRlbnRTZWN1cml0eVBvbGljeS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDRUY1
OUIyNjFDQTBFMTFEMDA1QzNFMTMgLyogQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUNFNzk5RjlCMUM2QTRCQ0QwMDk3QjUxOCAvKiBDb250ZW50
U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUNFMjg0
OTg5MUNBMzYxNDYwMEI0QTU3RiAvKiBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1l
cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDRTc5OUZBNzFDNkE1MDU3MDA5N0I1MTggLyogQ29u
dGVudFNlY3VyaXR5UG9saWN5TWVkaWFMaXN0RGlyZWN0aXZlLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUNFNkRBREY5MUM1OTFFNkEwMDNGNkE4OCAvKiBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNw
b25zZUhlYWRlcnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0U3OTlGOUYxQzZBNEMxNjAwOTdC
NTE4IC8qIENvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZS5jcHAgaW4gU291cmNlcyAqLywKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3BwCmlu
ZGV4IDM1YWIyODAzMWFhMjRhN2Y5NTY1ZWIxOTZjNDAwNDY5MjUwZmMwOTAuLjNiZjFmYWZjMWU0
MjMyNjc4ZjljOTZiZTdlZWU5YTg5ODNhNTQxYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcApAQCAtMjksNiArMjksNyBAQAogCiAj
aW5jbHVkZSAiQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlLmgiCiAjaW5jbHVkZSAiQ29u
dGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdC5oIgorI2luY2x1ZGUgIkNvbnRlbnRTZWN1
cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzLmgiCiAjaW5jbHVkZSAiQ29udGVudFNlY3VyaXR5UG9s
aWN5SGFzaC5oIgogI2luY2x1ZGUgIkNvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZS5oIgogI2lu
Y2x1ZGUgIkNvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3QuaCIKQEAgLTU0LDEyICs1NSwz
NyBAQAogI2luY2x1ZGUgPGluc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2suaD4KICNpbmNsdWRlIDxp
bnNwZWN0b3IvU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5oPgogI2luY2x1ZGUgPHd0Zi9UZW1wb3Jh
cnlDaGFuZ2UuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvVGV4dFBvc2l0aW9uLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorc3RhdGljIFN0cmluZyBjb25zb2xlTWVzc2FnZUZv
clZpb2xhdGlvbihjb25zdCBjaGFyKiBlZmZlY3RpdmVWaW9sYXRlZERpcmVjdGl2ZSwgY29uc3Qg
Q29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlJiB2aW9sYXRlZERpcmVjdGl2ZSwgY29uc3Qg
VVJMJiBibG9ja2VkVVJMLCBjb25zdCBjaGFyKiBwcmVmaXgsIGNvbnN0IGNoYXIqIHN1YmplY3Qg
PSAiaXQiKQoreworICAgIFN0cmluZ0J1aWxkZXIgcmVzdWx0OworICAgIGlmICh2aW9sYXRlZERp
cmVjdGl2ZS5kaXJlY3RpdmVMaXN0KCkuaXNSZXBvcnRPbmx5KCkpCisgICAgICAgIHJlc3VsdC5h
cHBlbmRMaXRlcmFsKCJbUmVwb3J0IE9ubHldICIpOworICAgIHJlc3VsdC5hcHBlbmQocHJlZml4
KTsKKyAgICBpZiAoIWJsb2NrZWRVUkwuaXNFbXB0eSgpKSB7CisgICAgICAgIHJlc3VsdC5hcHBl
bmQoJyAnKTsKKyAgICAgICAgcmVzdWx0LmFwcGVuZChibG9ja2VkVVJMLnN0cmluZ0NlbnRlckVs
bGlwc2l6ZWRUb0xlbmd0aCgpKTsKKyAgICB9CisgICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoIiBi
ZWNhdXNlICIpOworICAgIHJlc3VsdC5hcHBlbmQoc3ViamVjdCk7CisgICAgaWYgKHZpb2xhdGVk
RGlyZWN0aXZlLmlzRGVmYXVsdFNyYygpKSB7CisgICAgICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFs
KCIgYXBwZWFycyBpbiBuZWl0aGVyIHRoZSAiKTsKKyAgICAgICAgcmVzdWx0LmFwcGVuZChlZmZl
Y3RpdmVWaW9sYXRlZERpcmVjdGl2ZSk7CisgICAgICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFsKCIg
ZGlyZWN0aXZlIG5vciB0aGUgZGVmYXVsdC1zcmMgZGlyZWN0aXZlIG9mIHRoZSBDb250ZW50IFNl
Y3VyaXR5IFBvbGljeS4iKTsKKyAgICB9IGVsc2UgeworICAgICAgICByZXN1bHQuYXBwZW5kTGl0
ZXJhbCgiIGRvZXMgbm90IGFwcGVhciBpbiB0aGUgIik7CisgICAgICAgIHJlc3VsdC5hcHBlbmQo
ZWZmZWN0aXZlVmlvbGF0ZWREaXJlY3RpdmUpOworICAgICAgICByZXN1bHQuYXBwZW5kTGl0ZXJh
bCgiIGRpcmVjdGl2ZSBvZiB0aGUgQ29udGVudCBTZWN1cml0eSBQb2xpY3kuIik7CisgICAgfQor
ICAgIHJldHVybiByZXN1bHQudG9TdHJpbmcoKTsKK30KKwogQ29udGVudFNlY3VyaXR5UG9saWN5
OjpDb250ZW50U2VjdXJpdHlQb2xpY3koU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCkKICAgICA6IG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgmc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCkKICAgICAsIG1fc2FuZGJveEZsYWdzKFNhbmRib3hOb25lKQpAQCAtMTMz
LDcgKzE1OSw4IEBAIHZvaWQgQ29udGVudFNlY3VyaXR5UG9saWN5OjpkaWRSZWNlaXZlSGVhZGVy
KGNvbnN0IFN0cmluZyYgaGVhZGVyLCBDb250ZW50U2VjdXJpCiAgICAgICAgIC8vIGhlYWRlcjEs
aGVhZGVyMiBPUiBoZWFkZXIxCiAgICAgICAgIC8vICAgICAgICBeICAgICAgICAgICAgICAgICAg
XgogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZl
TGlzdD4gcG9saWN5ID0gQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6Y3JlYXRl
KCp0aGlzLCBTdHJpbmcoYmVnaW4sIHBvc2l0aW9uIC0gYmVnaW4pLCB0eXBlLCBwb2xpY3lGcm9t
KTsKLSAgICAgICAgaWYgKCFwb2xpY3ktPmFsbG93RXZhbChudWxscHRyLCBDb250ZW50U2VjdXJp
dHlQb2xpY3lEaXJlY3RpdmVMaXN0OjpSZXBvcnRpbmdTdGF0dXM6OlN1cHByZXNzUmVwb3J0KSkK
KyAgICAgICAgY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlKiB2aW9sYXRlZERp
cmVjdGl2ZSA9IHBvbGljeS0+dmlvbGF0ZWREaXJlY3RpdmVGb3JVbnNhZmVFdmFsKCk7CisgICAg
ICAgIGlmICh2aW9sYXRlZERpcmVjdGl2ZSAmJiAhdmlvbGF0ZWREaXJlY3RpdmUtPmRpcmVjdGl2
ZUxpc3QoKS5pc1JlcG9ydE9ubHkoKSkKICAgICAgICAgICAgIG1fbGFzdFBvbGljeUV2YWxEaXNh
YmxlZEVycm9yTWVzc2FnZSA9IHBvbGljeS0+ZXZhbERpc2FibGVkRXJyb3JNZXNzYWdlKCk7CiAK
ICAgICAgICAgbV9wb2xpY2llcy5hcHBlbmQocG9saWN5LnJlbGVhc2UoKSk7CkBAIC0xODksOCAr
MjE2LDExIEBAIHN0YXRpYyBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobSB0b0NyeXB0b0RpZ2VzdEFs
Z29yaXRobShDb250ZW50U2VjdXJpdHlQb2xpY3lIYXNoCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1l
IFByZWRpY2F0ZT4KLWJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5OjphbGxQb2xpY2llc0FsbG93
SGFzaEZyb21Db250ZW50KFByZWRpY2F0ZSYmIHByZWRpY2F0ZSwgY29uc3QgU3RyaW5nJiBjb250
ZW50LCBPcHRpb25TZXQ8Q29udGVudFNlY3VyaXR5UG9saWN5SGFzaEFsZ29yaXRobT4gYWxnb3Jp
dGhtcykgY29uc3QKK2Jvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5Ojpmb3VuZEhhc2hPZkNvbnRl
bnRJbkFsbFBvbGljaWVzKFByZWRpY2F0ZSYmIHByZWRpY2F0ZSwgY29uc3QgU3RyaW5nJiBjb250
ZW50LCBPcHRpb25TZXQ8Q29udGVudFNlY3VyaXR5UG9saWN5SGFzaEFsZ29yaXRobT4gYWxnb3Jp
dGhtcykgY29uc3QKIHsKKyAgICBpZiAoYWxnb3JpdGhtcy5pc0VtcHR5KCkgfHwgY29udGVudC5p
c0VtcHR5KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwogICAgIC8vIEZJWE1FOiBXZSBzaG91
bGQgY29tcHV0ZSB0aGUgZG9jdW1lbnQgZW5jb2Rpbmcgb25jZSBhbmQgY2FjaGUgaXQgaW5zdGVh
ZCBvZiBjb21wdXRpbmcgaXQgb24gZWFjaCBpbnZvY2F0aW9uLgogICAgIFRleHRFbmNvZGluZyBk
b2N1bWVudEVuY29kaW5nOwogICAgIGlmIChpczxEb2N1bWVudD4obV9zY3JpcHRFeGVjdXRpb25D
b250ZXh0KSkKQEAgLTIwNCw3ICsyMzQsNyBAQCBib29sIENvbnRlbnRTZWN1cml0eVBvbGljeTo6
YWxsUG9saWNpZXNBbGxvd0hhc2hGcm9tQ29udGVudChQcmVkaWNhdGUmJiBwcmVkaWNhdAogICAg
ICAgICBhdXRvIGNyeXB0b0RpZ2VzdCA9IENyeXB0b0RpZ2VzdDo6Y3JlYXRlKHRvQ3J5cHRvRGln
ZXN0QWxnb3JpdGhtKGFsZ29yaXRobSkpOwogICAgICAgICBjcnlwdG9EaWdlc3QtPmFkZEJ5dGVz
KGNvbnRlbnRDU3RyaW5nLmRhdGEoKSwgY29udGVudENTdHJpbmcubGVuZ3RoKCkpOwogICAgICAg
ICBWZWN0b3I8dWludDhfdD4gZGlnZXN0ID0gY3J5cHRvRGlnZXN0LT5jb21wdXRlSGFzaCgpOwot
ICAgICAgICBpZiAoYWxsUG9saWNpZXNBbGxvdyhzdGQ6OmZvcndhcmQ8UHJlZGljYXRlPihwcmVk
aWNhdGUpLCBzdGQ6Om1ha2VfcGFpcihhbGdvcml0aG0sIGRpZ2VzdCkpKQorICAgICAgICBpZiAo
IXZpb2xhdGVkRGlyZWN0aXZlSW5BbnlQb2xpY3koc3RkOjpmb3J3YXJkPFByZWRpY2F0ZT4ocHJl
ZGljYXRlKSwgc3RkOjptYWtlX3BhaXIoYWxnb3JpdGhtLCBkaWdlc3QpKSkKICAgICAgICAgICAg
IHJldHVybiB0cnVlOwogICAgIH0KICAgICByZXR1cm4gZmFsc2U7CkBAIC0yMTQsMTQgKzI0NCwz
MCBAQCBib29sIENvbnRlbnRTZWN1cml0eVBvbGljeTo6YWxsb3dKYXZhU2NyaXB0VVJMcyhjb25z
dCBTdHJpbmcmIGNvbnRleHRVUkwsIGNvbnN0CiB7CiAgICAgaWYgKG92ZXJyaWRlQ29udGVudFNl
Y3VyaXR5UG9saWN5KQogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICByZXR1cm4gYWxsUG9saWNp
ZXNBbGxvdygmQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6YWxsb3dKYXZhU2Ny
aXB0VVJMcywgY29udGV4dFVSTCwgY29udGV4dExpbmUsIENvbnRlbnRTZWN1cml0eVBvbGljeURp
cmVjdGl2ZUxpc3Q6OlJlcG9ydGluZ1N0YXR1czo6U2VuZFJlcG9ydCk7CisgICAgY29uc3QgQ29u
dGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlKiB2aW9sYXRlZERpcmVjdGl2ZSA9IHZpb2xhdGVk
RGlyZWN0aXZlSW5BbnlQb2xpY3koJkNvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6
OnZpb2xhdGVkRGlyZWN0aXZlRm9yVW5zYWZlSW5saW5lU2NyaXB0KTsKKyAgICBpZiAoIXZpb2xh
dGVkRGlyZWN0aXZlKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBTdHJpbmcgY29uc29sZU1l
c3NhZ2UgPSBjb25zb2xlTWVzc2FnZUZvclZpb2xhdGlvbihDb250ZW50U2VjdXJpdHlQb2xpY3lE
aXJlY3RpdmVOYW1lczo6c2NyaXB0U3JjLCAqdmlvbGF0ZWREaXJlY3RpdmUsIFVSTCgpLCAiUmVm
dXNlZCB0byBleGVjdXRlIGEgc2NyaXB0IiwgIml0cyBoYXNoLCBpdHMgbm9uY2UsIG9yICd1bnNh
ZmUtaW5saW5lJyIpOworICAgIHJlcG9ydFZpb2xhdGlvbihDb250ZW50U2VjdXJpdHlQb2xpY3lE
aXJlY3RpdmVOYW1lczo6c2NyaXB0U3JjLCAqdmlvbGF0ZWREaXJlY3RpdmUsIFVSTCgpLCBjb25z
b2xlTWVzc2FnZSwgY29udGV4dFVSTCwgVGV4dFBvc2l0aW9uKGNvbnRleHRMaW5lLCBXVEY6Ok9y
ZGluYWxOdW1iZXIoKSkpOworICAgIGJvb2wgaXNSZXBvcnRPbmx5ID0gdmlvbGF0ZWREaXJlY3Rp
dmUtPmRpcmVjdGl2ZUxpc3QoKS5pc1JlcG9ydE9ubHkoKTsKKyAgICBpZiAoIWlzUmVwb3J0T25s
eSkKKyAgICAgICAgcmVwb3J0QmxvY2tlZFNjcmlwdEV4ZWN1dGlvblRvSW5zcGVjdG9yKHZpb2xh
dGVkRGlyZWN0aXZlLT50ZXh0KCkpOworICAgIHJldHVybiBpc1JlcG9ydE9ubHk7CiB9CiAKIGJv
b2wgQ29udGVudFNlY3VyaXR5UG9saWN5OjphbGxvd0lubGluZUV2ZW50SGFuZGxlcnMoY29uc3Qg
U3RyaW5nJiBjb250ZXh0VVJMLCBjb25zdCBXVEY6Ok9yZGluYWxOdW1iZXImIGNvbnRleHRMaW5l
LCBib29sIG92ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9saWN5KSBjb25zdAogewogICAgIGlmIChv
dmVycmlkZUNvbnRlbnRTZWN1cml0eVBvbGljeSkKICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAg
cmV0dXJuIGFsbFBvbGljaWVzQWxsb3coJkNvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxp
c3Q6OmFsbG93SW5saW5lRXZlbnRIYW5kbGVycywgY29udGV4dFVSTCwgY29udGV4dExpbmUsIENv
bnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OlJlcG9ydGluZ1N0YXR1czo6U2VuZFJl
cG9ydCk7CisgICAgY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlKiB2aW9sYXRl
ZERpcmVjdGl2ZSA9IHZpb2xhdGVkRGlyZWN0aXZlSW5BbnlQb2xpY3koJkNvbnRlbnRTZWN1cml0
eVBvbGljeURpcmVjdGl2ZUxpc3Q6OnZpb2xhdGVkRGlyZWN0aXZlRm9yVW5zYWZlSW5saW5lU2Ny
aXB0KTsKKyAgICBpZiAoIXZpb2xhdGVkRGlyZWN0aXZlKQorICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICBTdHJpbmcgY29uc29sZU1lc3NhZ2UgPSBjb25zb2xlTWVzc2FnZUZvclZpb2xhdGlvbihD
b250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lczo6c2NyaXB0U3JjLCAqdmlvbGF0ZWRE
aXJlY3RpdmUsIFVSTCgpLCAiUmVmdXNlZCB0byBleGVjdXRlIGEgc2NyaXB0IiwgIml0cyBoYXNo
LCBpdHMgbm9uY2UsIG9yICd1bnNhZmUtaW5saW5lJyIpOworICAgIHJlcG9ydFZpb2xhdGlvbihD
b250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lczo6c2NyaXB0U3JjLCAqdmlvbGF0ZWRE
aXJlY3RpdmUsIFVSTCgpLCBjb25zb2xlTWVzc2FnZSwgY29udGV4dFVSTCwgVGV4dFBvc2l0aW9u
KGNvbnRleHRMaW5lLCBXVEY6Ok9yZGluYWxOdW1iZXIoKSkpOworICAgIGJvb2wgaXNSZXBvcnRP
bmx5ID0gdmlvbGF0ZWREaXJlY3RpdmUtPmRpcmVjdGl2ZUxpc3QoKS5pc1JlcG9ydE9ubHkoKTsK
KyAgICBpZiAoIWlzUmVwb3J0T25seSkKKyAgICAgICAgcmVwb3J0QmxvY2tlZFNjcmlwdEV4ZWN1
dGlvblRvSW5zcGVjdG9yKHZpb2xhdGVkRGlyZWN0aXZlLT50ZXh0KCkpOworICAgIHJldHVybiBp
c1JlcG9ydE9ubHk7CiB9CiAKIGJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5OjphbGxvd1Njcmlw
dFdpdGhOb25jZShjb25zdCBTdHJpbmcmIG5vbmNlLCBib29sIG92ZXJyaWRlQ29udGVudFNlY3Vy
aXR5UG9saWN5KSBjb25zdApAQCAtMjMxLDkgKzI3Nyw3IEBAIGJvb2wgQ29udGVudFNlY3VyaXR5
UG9saWN5OjphbGxvd1NjcmlwdFdpdGhOb25jZShjb25zdCBTdHJpbmcmIG5vbmNlLCBib29sIG92
ZXJyCiAgICAgU3RyaW5nIHN0cmlwcGVkTm9uY2UgPSBzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hU
TUxTcGFjZXMobm9uY2UpOwogICAgIGlmIChzdHJpcHBlZE5vbmNlLmlzRW1wdHkoKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChhbGxQb2xpY2llc0FsbG93KCZDb250ZW50U2VjdXJp
dHlQb2xpY3lEaXJlY3RpdmVMaXN0OjphbGxvd1NjcmlwdFdpdGhOb25jZSwgc3RyaXBwZWROb25j
ZSkpCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4g
IXZpb2xhdGVkRGlyZWN0aXZlSW5BbnlQb2xpY3koJkNvbnRlbnRTZWN1cml0eVBvbGljeURpcmVj
dGl2ZUxpc3Q6OnZpb2xhdGVkRGlyZWN0aXZlRm9yU2NyaXB0Tm9uY2UsIHN0cmlwcGVkTm9uY2Up
OwogfQogCiBib29sIENvbnRlbnRTZWN1cml0eVBvbGljeTo6YWxsb3dTdHlsZVdpdGhOb25jZShj
b25zdCBTdHJpbmcmIG5vbmNlLCBib29sIG92ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9saWN5KSBj
b25zdApAQCAtMjQzLDE5ICsyODcsMjQgQEAgYm9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFs
bG93U3R5bGVXaXRoTm9uY2UoY29uc3QgU3RyaW5nJiBub25jZSwgYm9vbCBvdmVycmkKICAgICBT
dHJpbmcgc3RyaXBwZWROb25jZSA9IHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRNTFNwYWNlcyhu
b25jZSk7CiAgICAgaWYgKHN0cmlwcGVkTm9uY2UuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgaWYgKGFsbFBvbGljaWVzQWxsb3coJkNvbnRlbnRTZWN1cml0eVBvbGljeURp
cmVjdGl2ZUxpc3Q6OmFsbG93U3R5bGVXaXRoTm9uY2UsIHN0cmlwcGVkTm9uY2UpKQotICAgICAg
ICByZXR1cm4gdHJ1ZTsKLSAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuICF2aW9sYXRlZERp
cmVjdGl2ZUluQW55UG9saWN5KCZDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0Ojp2
aW9sYXRlZERpcmVjdGl2ZUZvclN0eWxlTm9uY2UsIHN0cmlwcGVkTm9uY2UpOwogfQogCiBib29s
IENvbnRlbnRTZWN1cml0eVBvbGljeTo6YWxsb3dJbmxpbmVTY3JpcHQoY29uc3QgU3RyaW5nJiBj
b250ZXh0VVJMLCBjb25zdCBXVEY6Ok9yZGluYWxOdW1iZXImIGNvbnRleHRMaW5lLCBjb25zdCBT
dHJpbmcmIHNjcmlwdENvbnRlbnQsIGJvb2wgb3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3kp
IGNvbnN0CiB7CiAgICAgaWYgKG92ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9saWN5KQogICAgICAg
ICByZXR1cm4gdHJ1ZTsKLSAgICBpZiAoIW1faGFzaEFsZ29yaXRobXNGb3JJbmxpbmVTY3JpcHRz
LmlzRW1wdHkoKSAmJiAhc2NyaXB0Q29udGVudC5pc0VtcHR5KCkKLSAgICAgICAgJiYgYWxsUG9s
aWNpZXNBbGxvd0hhc2hGcm9tQ29udGVudCgmQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZl
TGlzdDo6YWxsb3dJbmxpbmVTY3JpcHRXaXRoSGFzaCwgc2NyaXB0Q29udGVudCwgbV9oYXNoQWxn
b3JpdGhtc0ZvcklubGluZVNjcmlwdHMpKQorICAgIGlmIChmb3VuZEhhc2hPZkNvbnRlbnRJbkFs
bFBvbGljaWVzKCZDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0Ojp2aW9sYXRlZERp
cmVjdGl2ZUZvclNjcmlwdEhhc2gsIHNjcmlwdENvbnRlbnQsIG1faGFzaEFsZ29yaXRobXNGb3JJ
bmxpbmVTY3JpcHRzKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgY29uc3QgQ29udGVudFNl
Y3VyaXR5UG9saWN5RGlyZWN0aXZlKiB2aW9sYXRlZERpcmVjdGl2ZSA9IHZpb2xhdGVkRGlyZWN0
aXZlSW5BbnlQb2xpY3koJkNvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OnZpb2xh
dGVkRGlyZWN0aXZlRm9yVW5zYWZlSW5saW5lU2NyaXB0KTsKKyAgICBpZiAoIXZpb2xhdGVkRGly
ZWN0aXZlKQogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICByZXR1cm4gYWxsUG9saWNpZXNBbGxv
dygmQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6YWxsb3dJbmxpbmVTY3JpcHQs
IGNvbnRleHRVUkwsIGNvbnRleHRMaW5lLCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVM
aXN0OjpSZXBvcnRpbmdTdGF0dXM6OlNlbmRSZXBvcnQpOworICAgIFN0cmluZyBjb25zb2xlTWVz
c2FnZSA9IGNvbnNvbGVNZXNzYWdlRm9yVmlvbGF0aW9uKENvbnRlbnRTZWN1cml0eVBvbGljeURp
cmVjdGl2ZU5hbWVzOjpzY3JpcHRTcmMsICp2aW9sYXRlZERpcmVjdGl2ZSwgVVJMKCksICJSZWZ1
c2VkIHRvIGV4ZWN1dGUgYSBzY3JpcHQiLCAiaXRzIGhhc2gsIGl0cyBub25jZSwgb3IgJ3Vuc2Fm
ZS1pbmxpbmUnIik7CisgICAgcmVwb3J0VmlvbGF0aW9uKENvbnRlbnRTZWN1cml0eVBvbGljeURp
cmVjdGl2ZU5hbWVzOjpzY3JpcHRTcmMsICp2aW9sYXRlZERpcmVjdGl2ZSwgVVJMKCksIGNvbnNv
bGVNZXNzYWdlLCBjb250ZXh0VVJMLCBUZXh0UG9zaXRpb24oY29udGV4dExpbmUsIFdURjo6T3Jk
aW5hbE51bWJlcigpKSk7CisgICAgYm9vbCBpc1JlcG9ydE9ubHkgPSB2aW9sYXRlZERpcmVjdGl2
ZS0+ZGlyZWN0aXZlTGlzdCgpLmlzUmVwb3J0T25seSgpOworICAgIGlmICghaXNSZXBvcnRPbmx5
KQorICAgICAgICByZXBvcnRCbG9ja2VkU2NyaXB0RXhlY3V0aW9uVG9JbnNwZWN0b3IodmlvbGF0
ZWREaXJlY3RpdmUtPnRleHQoKSk7CisgICAgcmV0dXJuIGlzUmVwb3J0T25seTsKIH0KIAogYm9v
bCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93SW5saW5lU3R5bGUoY29uc3QgU3RyaW5nJiBj
b250ZXh0VVJMLCBjb25zdCBXVEY6Ok9yZGluYWxOdW1iZXImIGNvbnRleHRMaW5lLCBjb25zdCBT
dHJpbmcmIHN0eWxlQ29udGVudCwgYm9vbCBvdmVycmlkZUNvbnRlbnRTZWN1cml0eVBvbGljeSkg
Y29uc3QKQEAgLTI2NCwxNyArMzEzLDI5IEBAIGJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5Ojph
bGxvd0lubGluZVN0eWxlKGNvbnN0IFN0cmluZyYgY29udGV4dFVSTCwgY29uc3QgV1RGCiAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgIGlmIChtX292ZXJyaWRlSW5saW5lU3R5bGVBbGxvd2VkKQog
ICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBpZiAoIW1faGFzaEFsZ29yaXRobXNGb3JJbmxpbmVT
dHlsZXNoZWV0cy5pc0VtcHR5KCkgJiYgIXN0eWxlQ29udGVudC5pc0VtcHR5KCkKLSAgICAgICAg
JiYgYWxsUG9saWNpZXNBbGxvd0hhc2hGcm9tQ29udGVudCgmQ29udGVudFNlY3VyaXR5UG9saWN5
RGlyZWN0aXZlTGlzdDo6YWxsb3dJbmxpbmVTdHlsZVdpdGhIYXNoLCBzdHlsZUNvbnRlbnQsIG1f
aGFzaEFsZ29yaXRobXNGb3JJbmxpbmVTdHlsZXNoZWV0cykpCisgICAgaWYgKGZvdW5kSGFzaE9m
Q29udGVudEluQWxsUG9saWNpZXMoJkNvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6
OnZpb2xhdGVkRGlyZWN0aXZlRm9yU3R5bGVIYXNoLCBzdHlsZUNvbnRlbnQsIG1faGFzaEFsZ29y
aXRobXNGb3JJbmxpbmVTdHlsZXNoZWV0cykpCiAgICAgICAgIHJldHVybiB0cnVlOwotICAgIHJl
dHVybiBhbGxQb2xpY2llc0FsbG93KCZDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0
OjphbGxvd0lubGluZVN0eWxlLCBjb250ZXh0VVJMLCBjb250ZXh0TGluZSwgQ29udGVudFNlY3Vy
aXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6UmVwb3J0aW5nU3RhdHVzOjpTZW5kUmVwb3J0KTsKKyAg
ICBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmUqIHZpb2xhdGVkRGlyZWN0aXZl
ID0gdmlvbGF0ZWREaXJlY3RpdmVJbkFueVBvbGljeSgmQ29udGVudFNlY3VyaXR5UG9saWN5RGly
ZWN0aXZlTGlzdDo6dmlvbGF0ZWREaXJlY3RpdmVGb3JVbnNhZmVJbmxpbmVTdHlsZSk7CisgICAg
aWYgKCF2aW9sYXRlZERpcmVjdGl2ZSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgU3RyaW5n
IGNvbnNvbGVNZXNzYWdlID0gY29uc29sZU1lc3NhZ2VGb3JWaW9sYXRpb24oQ29udGVudFNlY3Vy
aXR5UG9saWN5RGlyZWN0aXZlTmFtZXM6OnN0eWxlU3JjLCAqdmlvbGF0ZWREaXJlY3RpdmUsIFVS
TCgpLCAiUmVmdXNlZCB0byBhcHBseSBhIHN0eWxlc2hlZXQiLCAiaXRzIGhhc2gsIGl0cyBub25j
ZSwgb3IgJ3Vuc2FmZS1pbmxpbmUnIik7CisgICAgcmVwb3J0VmlvbGF0aW9uKENvbnRlbnRTZWN1
cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzOjpzdHlsZVNyYywgKnZpb2xhdGVkRGlyZWN0aXZlLCBV
UkwoKSwgY29uc29sZU1lc3NhZ2UsIGNvbnRleHRVUkwsIFRleHRQb3NpdGlvbihjb250ZXh0TGlu
ZSwgV1RGOjpPcmRpbmFsTnVtYmVyKCkpKTsKKyAgICByZXR1cm4gdmlvbGF0ZWREaXJlY3RpdmUt
PmRpcmVjdGl2ZUxpc3QoKS5pc1JlcG9ydE9ubHkoKTsKIH0KIAogYm9vbCBDb250ZW50U2VjdXJp
dHlQb2xpY3k6OmFsbG93RXZhbChKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIGJvb2wgb3ZlcnJpZGVD
b250ZW50U2VjdXJpdHlQb2xpY3kpIGNvbnN0CiB7CiAgICAgaWYgKG92ZXJyaWRlQ29udGVudFNl
Y3VyaXR5UG9saWN5KQogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICByZXR1cm4gYWxsUG9saWNp
ZXNBbGxvdygmQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6YWxsb3dFdmFsLCBz
dGF0ZSwgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6UmVwb3J0aW5nU3RhdHVz
OjpTZW5kUmVwb3J0KTsKKyAgICBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmUq
IHZpb2xhdGVkRGlyZWN0aXZlID0gdmlvbGF0ZWREaXJlY3RpdmVJbkFueVBvbGljeSgmQ29udGVu
dFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6dmlvbGF0ZWREaXJlY3RpdmVGb3JVbnNhZmVF
dmFsKTsKKyAgICBpZiAoIXZpb2xhdGVkRGlyZWN0aXZlKQorICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICBTdHJpbmcgY29uc29sZU1lc3NhZ2UgPSBjb25zb2xlTWVzc2FnZUZvclZpb2xhdGlvbihD
b250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lczo6c2NyaXB0U3JjLCAqdmlvbGF0ZWRE
aXJlY3RpdmUsIFVSTCgpLCAiUmVmdXNlZCB0byBleGVjdXRlIGEgc2NyaXB0IiwgIid1bnNhZmUt
ZXZhbCciKTsKKyAgICByZXBvcnRWaW9sYXRpb24oQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0
aXZlTmFtZXM6OnNjcmlwdFNyYywgKnZpb2xhdGVkRGlyZWN0aXZlLCBVUkwoKSwgY29uc29sZU1l
c3NhZ2UsIHN0YXRlKTsKKyAgICBib29sIGlzUmVwb3J0T25seSA9IHZpb2xhdGVkRGlyZWN0aXZl
LT5kaXJlY3RpdmVMaXN0KCkuaXNSZXBvcnRPbmx5KCk7CisgICAgaWYgKCFpc1JlcG9ydE9ubHkp
CisgICAgICAgIHJlcG9ydEJsb2NrZWRTY3JpcHRFeGVjdXRpb25Ub0luc3BlY3Rvcih2aW9sYXRl
ZERpcmVjdGl2ZS0+dGV4dCgpKTsKKyAgICByZXR1cm4gaXNSZXBvcnRPbmx5OwogfQogCiBib29s
IENvbnRlbnRTZWN1cml0eVBvbGljeTo6YWxsb3dGcmFtZUFuY2VzdG9ycyhjb25zdCBGcmFtZSYg
ZnJhbWUsIGNvbnN0IFVSTCYgdXJsLCBib29sIG92ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9saWN5
KSBjb25zdApAQCAtMjg0LDE0ICszNDUsMjQgQEAgYm9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3k6
OmFsbG93RnJhbWVBbmNlc3RvcnMoY29uc3QgRnJhbWUmIGZyYW1lLCBjb25zdCBVUkwmIHUKICAg
ICBGcmFtZSYgdG9wRnJhbWUgPSBmcmFtZS50cmVlKCkudG9wKCk7CiAgICAgaWYgKCZmcmFtZSA9
PSAmdG9wRnJhbWUpCiAgICAgICAgIHJldHVybiB0cnVlOwotICAgIHJldHVybiBhbGxQb2xpY2ll
c0FsbG93KCZDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0OjphbGxvd0ZyYW1lQW5j
ZXN0b3JzLCBmcmFtZSwgdXJsLCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0OjpS
ZXBvcnRpbmdTdGF0dXM6OlNlbmRSZXBvcnQpOworICAgIGNvbnN0IENvbnRlbnRTZWN1cml0eVBv
bGljeURpcmVjdGl2ZSogdmlvbGF0ZWREaXJlY3RpdmUgPSB2aW9sYXRlZERpcmVjdGl2ZUluQW55
UG9saWN5KCZDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0Ojp2aW9sYXRlZERpcmVj
dGl2ZUZvckZyYW1lQW5jZXN0b3IsIGZyYW1lKTsKKyAgICBpZiAoIXZpb2xhdGVkRGlyZWN0aXZl
KQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBTdHJpbmcgY29uc29sZU1lc3NhZ2UgPSBjb25z
b2xlTWVzc2FnZUZvclZpb2xhdGlvbihDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1l
czo6ZnJhbWVBbmNlc3RvcnMsICp2aW9sYXRlZERpcmVjdGl2ZSwgdXJsLCAiUmVmdXNlZCB0byBs
b2FkIik7CisgICAgcmVwb3J0VmlvbGF0aW9uKENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2
ZU5hbWVzOjpmcmFtZUFuY2VzdG9ycywgKnZpb2xhdGVkRGlyZWN0aXZlLCB1cmwsIGNvbnNvbGVN
ZXNzYWdlLCBTdHJpbmcoKSwgVGV4dFBvc2l0aW9uKFdURjo6T3JkaW5hbE51bWJlcjo6YmVmb3Jl
Rmlyc3QoKSwgV1RGOjpPcmRpbmFsTnVtYmVyKCkpKTsKKyAgICByZXR1cm4gdmlvbGF0ZWREaXJl
Y3RpdmUtPmRpcmVjdGl2ZUxpc3QoKS5pc1JlcG9ydE9ubHkoKTsKIH0KIAogYm9vbCBDb250ZW50
U2VjdXJpdHlQb2xpY3k6OmFsbG93UGx1Z2luVHlwZShjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0
IFN0cmluZyYgdHlwZUF0dHJpYnV0ZSwgY29uc3QgVVJMJiB1cmwsIGJvb2wgb3ZlcnJpZGVDb250
ZW50U2VjdXJpdHlQb2xpY3kpIGNvbnN0CiB7CiAgICAgaWYgKG92ZXJyaWRlQ29udGVudFNlY3Vy
aXR5UG9saWN5KQogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICByZXR1cm4gYWxsUG9saWNpZXNB
bGxvdygmQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6YWxsb3dQbHVnaW5UeXBl
LCB0eXBlLCB0eXBlQXR0cmlidXRlLCB1cmwsIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2
ZUxpc3Q6OlJlcG9ydGluZ1N0YXR1czo6U2VuZFJlcG9ydCk7CisgICAgY29uc3QgQ29udGVudFNl
Y3VyaXR5UG9saWN5RGlyZWN0aXZlKiB2aW9sYXRlZERpcmVjdGl2ZSA9IHZpb2xhdGVkRGlyZWN0
aXZlSW5BbnlQb2xpY3koJkNvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OnZpb2xh
dGVkRGlyZWN0aXZlRm9yUGx1Z2luVHlwZSwgdHlwZSwgdHlwZUF0dHJpYnV0ZSk7CisgICAgaWYg
KCF2aW9sYXRlZERpcmVjdGl2ZSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgU3RyaW5nIGNv
bnNvbGVNZXNzYWdlID0gY29uc29sZU1lc3NhZ2VGb3JWaW9sYXRpb24oQ29udGVudFNlY3VyaXR5
UG9saWN5RGlyZWN0aXZlTmFtZXM6OnBsdWdpblR5cGVzLCAqdmlvbGF0ZWREaXJlY3RpdmUsIHVy
bCwgIlJlZnVzZWQgdG8gbG9hZCIsICJpdHMgTUlNRSB0eXBlIik7CisgICAgcmVwb3J0VmlvbGF0
aW9uKENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzOjpwbHVnaW5UeXBlcywgKnZp
b2xhdGVkRGlyZWN0aXZlLCB1cmwsIGNvbnNvbGVNZXNzYWdlLCBTdHJpbmcoKSwgVGV4dFBvc2l0
aW9uKFdURjo6T3JkaW5hbE51bWJlcjo6YmVmb3JlRmlyc3QoKSwgV1RGOjpPcmRpbmFsTnVtYmVy
KCkpKTsKKyAgICByZXR1cm4gdmlvbGF0ZWREaXJlY3RpdmUtPmRpcmVjdGl2ZUxpc3QoKS5pc1Jl
cG9ydE9ubHkoKTsKIH0KIAogYm9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93U2NyaXB0
RnJvbVNvdXJjZShjb25zdCBVUkwmIHVybCwgYm9vbCBvdmVycmlkZUNvbnRlbnRTZWN1cml0eVBv
bGljeSkgY29uc3QKQEAgLTMwMCw3ICszNzEsMTIgQEAgYm9vbCBDb250ZW50U2VjdXJpdHlQb2xp
Y3k6OmFsbG93U2NyaXB0RnJvbVNvdXJjZShjb25zdCBVUkwmIHVybCwgYm9vbCBvdmVycmlkZUMK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgaWYgKFNjaGVtZVJlZ2lzdHJ5OjpzY2hlbWVTaG91
bGRCeXBhc3NDb250ZW50U2VjdXJpdHlQb2xpY3kodXJsLnByb3RvY29sKCkpKQogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKLSAgICByZXR1cm4gYWxsUG9saWNpZXNBbGxvdygmQ29udGVudFNlY3VyaXR5
UG9saWN5RGlyZWN0aXZlTGlzdDo6YWxsb3dTY3JpcHRGcm9tU291cmNlLCB1cmwsIENvbnRlbnRT
ZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OlJlcG9ydGluZ1N0YXR1czo6U2VuZFJlcG9ydCk7
CisgICAgY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlKiB2aW9sYXRlZERpcmVj
dGl2ZSA9IHZpb2xhdGVkRGlyZWN0aXZlSW5BbnlQb2xpY3koJkNvbnRlbnRTZWN1cml0eVBvbGlj
eURpcmVjdGl2ZUxpc3Q6OnZpb2xhdGVkRGlyZWN0aXZlRm9yU2NyaXB0LCB1cmwpOworICAgIGlm
ICghdmlvbGF0ZWREaXJlY3RpdmUpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIFN0cmluZyBj
b25zb2xlTWVzc2FnZSA9IGNvbnNvbGVNZXNzYWdlRm9yVmlvbGF0aW9uKENvbnRlbnRTZWN1cml0
eVBvbGljeURpcmVjdGl2ZU5hbWVzOjpzY3JpcHRTcmMsICp2aW9sYXRlZERpcmVjdGl2ZSwgdXJs
LCAiUmVmdXNlZCB0byBsb2FkIik7CisgICAgcmVwb3J0VmlvbGF0aW9uKENvbnRlbnRTZWN1cml0
eVBvbGljeURpcmVjdGl2ZU5hbWVzOjpzY3JpcHRTcmMsICp2aW9sYXRlZERpcmVjdGl2ZSwgdXJs
LCBjb25zb2xlTWVzc2FnZSwgU3RyaW5nKCksIFRleHRQb3NpdGlvbihXVEY6Ok9yZGluYWxOdW1i
ZXI6OmJlZm9yZUZpcnN0KCksIFdURjo6T3JkaW5hbE51bWJlcigpKSk7CisgICAgcmV0dXJuIHZp
b2xhdGVkRGlyZWN0aXZlLT5kaXJlY3RpdmVMaXN0KCkuaXNSZXBvcnRPbmx5KCk7CiB9CiAKIGJv
b2wgQ29udGVudFNlY3VyaXR5UG9saWN5OjphbGxvd09iamVjdEZyb21Tb3VyY2UoY29uc3QgVVJM
JiB1cmwsIGJvb2wgb3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3kpIGNvbnN0CkBAIC0zMDks
NyArMzg1LDEyIEBAIGJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5OjphbGxvd09iamVjdEZyb21T
b3VyY2UoY29uc3QgVVJMJiB1cmwsIGJvb2wgb3ZlcnJpZGVDCiAgICAgICAgIHJldHVybiB0cnVl
OwogICAgIGlmIChTY2hlbWVSZWdpc3RyeTo6c2NoZW1lU2hvdWxkQnlwYXNzQ29udGVudFNlY3Vy
aXR5UG9saWN5KHVybC5wcm90b2NvbCgpKSkKICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgcmV0
dXJuIGFsbFBvbGljaWVzQWxsb3coJkNvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6
OmFsbG93T2JqZWN0RnJvbVNvdXJjZSwgdXJsLCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3Rp
dmVMaXN0OjpSZXBvcnRpbmdTdGF0dXM6OlNlbmRSZXBvcnQpOworICAgIGNvbnN0IENvbnRlbnRT
ZWN1cml0eVBvbGljeURpcmVjdGl2ZSogdmlvbGF0ZWREaXJlY3RpdmUgPSB2aW9sYXRlZERpcmVj
dGl2ZUluQW55UG9saWN5KCZDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0Ojp2aW9s
YXRlZERpcmVjdGl2ZUZvck9iamVjdFNvdXJjZSwgdXJsKTsKKyAgICBpZiAoIXZpb2xhdGVkRGly
ZWN0aXZlKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBTdHJpbmcgY29uc29sZU1lc3NhZ2Ug
PSBjb25zb2xlTWVzc2FnZUZvclZpb2xhdGlvbihDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3Rp
dmVOYW1lczo6b2JqZWN0U3JjLCAqdmlvbGF0ZWREaXJlY3RpdmUsIHVybCwgIlJlZnVzZWQgdG8g
bG9hZCIpOworICAgIHJlcG9ydFZpb2xhdGlvbihDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3Rp
dmVOYW1lczo6b2JqZWN0U3JjLCAqdmlvbGF0ZWREaXJlY3RpdmUsIHVybCwgY29uc29sZU1lc3Nh
Z2UsIFN0cmluZygpLCBUZXh0UG9zaXRpb24oV1RGOjpPcmRpbmFsTnVtYmVyOjpiZWZvcmVGaXJz
dCgpLCBXVEY6Ok9yZGluYWxOdW1iZXIoKSkpOworICAgIHJldHVybiB2aW9sYXRlZERpcmVjdGl2
ZS0+ZGlyZWN0aXZlTGlzdCgpLmlzUmVwb3J0T25seSgpOwogfQogCiBib29sIENvbnRlbnRTZWN1
cml0eVBvbGljeTo6YWxsb3dDaGlsZEZyYW1lRnJvbVNvdXJjZShjb25zdCBVUkwmIHVybCwgYm9v
bCBvdmVycmlkZUNvbnRlbnRTZWN1cml0eVBvbGljeSkgY29uc3QKQEAgLTMxOCw3ICszOTksMTIg
QEAgYm9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93Q2hpbGRGcmFtZUZyb21Tb3VyY2Uo
Y29uc3QgVVJMJiB1cmwsIGJvb2wgb3ZlcnIKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgaWYg
KFNjaGVtZVJlZ2lzdHJ5OjpzY2hlbWVTaG91bGRCeXBhc3NDb250ZW50U2VjdXJpdHlQb2xpY3ko
dXJsLnByb3RvY29sKCkpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICByZXR1cm4gYWxsUG9s
aWNpZXNBbGxvdygmQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6YWxsb3dDaGls
ZEZyYW1lRnJvbVNvdXJjZSwgdXJsLCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0
OjpSZXBvcnRpbmdTdGF0dXM6OlNlbmRSZXBvcnQpOworICAgIGNvbnN0IENvbnRlbnRTZWN1cml0
eVBvbGljeURpcmVjdGl2ZSogdmlvbGF0ZWREaXJlY3RpdmUgPSB2aW9sYXRlZERpcmVjdGl2ZUlu
QW55UG9saWN5KCZDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0Ojp2aW9sYXRlZERp
cmVjdGl2ZUZvckZyYW1lLCB1cmwpOworICAgIGlmICghdmlvbGF0ZWREaXJlY3RpdmUpCisgICAg
ICAgIHJldHVybiB0cnVlOworICAgIFN0cmluZyBjb25zb2xlTWVzc2FnZSA9IGNvbnNvbGVNZXNz
YWdlRm9yVmlvbGF0aW9uKENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzOjpmcmFt
ZVNyYywgKnZpb2xhdGVkRGlyZWN0aXZlLCB1cmwsICJSZWZ1c2VkIHRvIGxvYWQiKTsKKyAgICBy
ZXBvcnRWaW9sYXRpb24oQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXM6OmZyYW1l
U3JjLCAqdmlvbGF0ZWREaXJlY3RpdmUsIHVybCwgY29uc29sZU1lc3NhZ2UsIFN0cmluZygpLCBU
ZXh0UG9zaXRpb24oV1RGOjpPcmRpbmFsTnVtYmVyOjpiZWZvcmVGaXJzdCgpLCBXVEY6Ok9yZGlu
YWxOdW1iZXIoKSkpOworICAgIHJldHVybiB2aW9sYXRlZERpcmVjdGl2ZS0+ZGlyZWN0aXZlTGlz
dCgpLmlzUmVwb3J0T25seSgpOwogfQogCiBib29sIENvbnRlbnRTZWN1cml0eVBvbGljeTo6YWxs
b3dDaGlsZENvbnRleHRGcm9tU291cmNlKGNvbnN0IFVSTCYgdXJsLCBib29sIG92ZXJyaWRlQ29u
dGVudFNlY3VyaXR5UG9saWN5KSBjb25zdApAQCAtMzI3LDcgKzQxMywxMiBAQCBib29sIENvbnRl
bnRTZWN1cml0eVBvbGljeTo6YWxsb3dDaGlsZENvbnRleHRGcm9tU291cmNlKGNvbnN0IFVSTCYg
dXJsLCBib29sIG92ZQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBpZiAoU2NoZW1lUmVnaXN0
cnk6OnNjaGVtZVNob3VsZEJ5cGFzc0NvbnRlbnRTZWN1cml0eVBvbGljeSh1cmwucHJvdG9jb2wo
KSkpCiAgICAgICAgIHJldHVybiB0cnVlOwotICAgIHJldHVybiBhbGxQb2xpY2llc0FsbG93KCZD
b250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0OjphbGxvd0NoaWxkQ29udGV4dEZyb21T
b3VyY2UsIHVybCwgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6UmVwb3J0aW5n
U3RhdHVzOjpTZW5kUmVwb3J0KTsKKyAgICBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJl
Y3RpdmUqIHZpb2xhdGVkRGlyZWN0aXZlID0gdmlvbGF0ZWREaXJlY3RpdmVJbkFueVBvbGljeSgm
Q29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6dmlvbGF0ZWREaXJlY3RpdmVGb3JD
aGlsZENvbnRleHQsIHVybCk7CisgICAgaWYgKCF2aW9sYXRlZERpcmVjdGl2ZSkKKyAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgU3RyaW5nIGNvbnNvbGVNZXNzYWdlID0gY29uc29sZU1lc3NhZ2VG
b3JWaW9sYXRpb24oQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXM6OmNoaWxkU3Jj
LCAqdmlvbGF0ZWREaXJlY3RpdmUsIHVybCwgIlJlZnVzZWQgdG8gbG9hZCIpOworICAgIHJlcG9y
dFZpb2xhdGlvbihDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lczo6Y2hpbGRTcmMs
ICp2aW9sYXRlZERpcmVjdGl2ZSwgdXJsLCBjb25zb2xlTWVzc2FnZSwgU3RyaW5nKCksIFRleHRQ
b3NpdGlvbihXVEY6Ok9yZGluYWxOdW1iZXI6OmJlZm9yZUZpcnN0KCksIFdURjo6T3JkaW5hbE51
bWJlcigpKSk7CisgICAgcmV0dXJuIHZpb2xhdGVkRGlyZWN0aXZlLT5kaXJlY3RpdmVMaXN0KCku
aXNSZXBvcnRPbmx5KCk7CiB9CiAKIGJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5OjphbGxvd0lt
YWdlRnJvbVNvdXJjZShjb25zdCBVUkwmIHVybCwgYm9vbCBvdmVycmlkZUNvbnRlbnRTZWN1cml0
eVBvbGljeSkgY29uc3QKQEAgLTMzNiw3ICs0MjcsMTIgQEAgYm9vbCBDb250ZW50U2VjdXJpdHlQ
b2xpY3k6OmFsbG93SW1hZ2VGcm9tU291cmNlKGNvbnN0IFVSTCYgdXJsLCBib29sIG92ZXJyaWRl
Q28KICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgaWYgKFNjaGVtZVJlZ2lzdHJ5OjpzY2hlbWVT
aG91bGRCeXBhc3NDb250ZW50U2VjdXJpdHlQb2xpY3kodXJsLnByb3RvY29sKCkpKQogICAgICAg
ICByZXR1cm4gdHJ1ZTsKLSAgICByZXR1cm4gYWxsUG9saWNpZXNBbGxvdygmQ29udGVudFNlY3Vy
aXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6YWxsb3dJbWFnZUZyb21Tb3VyY2UsIHVybCwgQ29udGVu
dFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6UmVwb3J0aW5nU3RhdHVzOjpTZW5kUmVwb3J0
KTsKKyAgICBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmUqIHZpb2xhdGVkRGly
ZWN0aXZlID0gdmlvbGF0ZWREaXJlY3RpdmVJbkFueVBvbGljeSgmQ29udGVudFNlY3VyaXR5UG9s
aWN5RGlyZWN0aXZlTGlzdDo6dmlvbGF0ZWREaXJlY3RpdmVGb3JJbWFnZSwgdXJsKTsKKyAgICBp
ZiAoIXZpb2xhdGVkRGlyZWN0aXZlKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBTdHJpbmcg
Y29uc29sZU1lc3NhZ2UgPSBjb25zb2xlTWVzc2FnZUZvclZpb2xhdGlvbihDb250ZW50U2VjdXJp
dHlQb2xpY3lEaXJlY3RpdmVOYW1lczo6aW1nU3JjLCAqdmlvbGF0ZWREaXJlY3RpdmUsIHVybCwg
IlJlZnVzZWQgdG8gbG9hZCIpOworICAgIHJlcG9ydFZpb2xhdGlvbihDb250ZW50U2VjdXJpdHlQ
b2xpY3lEaXJlY3RpdmVOYW1lczo6aW1nU3JjLCAqdmlvbGF0ZWREaXJlY3RpdmUsIHVybCwgY29u
c29sZU1lc3NhZ2UsIFN0cmluZygpLCBUZXh0UG9zaXRpb24oV1RGOjpPcmRpbmFsTnVtYmVyOjpi
ZWZvcmVGaXJzdCgpLCBXVEY6Ok9yZGluYWxOdW1iZXIoKSkpOworICAgIHJldHVybiB2aW9sYXRl
ZERpcmVjdGl2ZS0+ZGlyZWN0aXZlTGlzdCgpLmlzUmVwb3J0T25seSgpOwogfQogCiBib29sIENv
bnRlbnRTZWN1cml0eVBvbGljeTo6YWxsb3dTdHlsZUZyb21Tb3VyY2UoY29uc3QgVVJMJiB1cmws
IGJvb2wgb3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3kpIGNvbnN0CkBAIC0zNDUsNyArNDQx
LDEyIEBAIGJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5OjphbGxvd1N0eWxlRnJvbVNvdXJjZShj
b25zdCBVUkwmIHVybCwgYm9vbCBvdmVycmlkZUNvCiAgICAgICAgIHJldHVybiB0cnVlOwogICAg
IGlmIChTY2hlbWVSZWdpc3RyeTo6c2NoZW1lU2hvdWxkQnlwYXNzQ29udGVudFNlY3VyaXR5UG9s
aWN5KHVybC5wcm90b2NvbCgpKSkKICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgcmV0dXJuIGFs
bFBvbGljaWVzQWxsb3coJkNvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OmFsbG93
U3R5bGVGcm9tU291cmNlLCB1cmwsIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6
OlJlcG9ydGluZ1N0YXR1czo6U2VuZFJlcG9ydCk7CisgICAgY29uc3QgQ29udGVudFNlY3VyaXR5
UG9saWN5RGlyZWN0aXZlKiB2aW9sYXRlZERpcmVjdGl2ZSA9IHZpb2xhdGVkRGlyZWN0aXZlSW5B
bnlQb2xpY3koJkNvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OnZpb2xhdGVkRGly
ZWN0aXZlRm9yU3R5bGUsIHVybCk7CisgICAgaWYgKCF2aW9sYXRlZERpcmVjdGl2ZSkKKyAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgU3RyaW5nIGNvbnNvbGVNZXNzYWdlID0gY29uc29sZU1lc3Nh
Z2VGb3JWaW9sYXRpb24oQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXM6OnN0eWxl
U3JjLCAqdmlvbGF0ZWREaXJlY3RpdmUsIHVybCwgIlJlZnVzZWQgdG8gbG9hZCIpOworICAgIHJl
cG9ydFZpb2xhdGlvbihDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lczo6c3R5bGVT
cmMsICp2aW9sYXRlZERpcmVjdGl2ZSwgdXJsLCBjb25zb2xlTWVzc2FnZSwgU3RyaW5nKCksIFRl
eHRQb3NpdGlvbihXVEY6Ok9yZGluYWxOdW1iZXI6OmJlZm9yZUZpcnN0KCksIFdURjo6T3JkaW5h
bE51bWJlcigpKSk7CisgICAgcmV0dXJuIHZpb2xhdGVkRGlyZWN0aXZlLT5kaXJlY3RpdmVMaXN0
KCkuaXNSZXBvcnRPbmx5KCk7CiB9CiAKIGJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5OjphbGxv
d0ZvbnRGcm9tU291cmNlKGNvbnN0IFVSTCYgdXJsLCBib29sIG92ZXJyaWRlQ29udGVudFNlY3Vy
aXR5UG9saWN5KSBjb25zdApAQCAtMzU0LDcgKzQ1NSwxMiBAQCBib29sIENvbnRlbnRTZWN1cml0
eVBvbGljeTo6YWxsb3dGb250RnJvbVNvdXJjZShjb25zdCBVUkwmIHVybCwgYm9vbCBvdmVycmlk
ZUNvbgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBpZiAoU2NoZW1lUmVnaXN0cnk6OnNjaGVt
ZVNob3VsZEJ5cGFzc0NvbnRlbnRTZWN1cml0eVBvbGljeSh1cmwucHJvdG9jb2woKSkpCiAgICAg
ICAgIHJldHVybiB0cnVlOwotICAgIHJldHVybiBhbGxQb2xpY2llc0FsbG93KCZDb250ZW50U2Vj
dXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0OjphbGxvd0ZvbnRGcm9tU291cmNlLCB1cmwsIENvbnRl
bnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OlJlcG9ydGluZ1N0YXR1czo6U2VuZFJlcG9y
dCk7CisgICAgY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlKiB2aW9sYXRlZERp
cmVjdGl2ZSA9IHZpb2xhdGVkRGlyZWN0aXZlSW5BbnlQb2xpY3koJkNvbnRlbnRTZWN1cml0eVBv
bGljeURpcmVjdGl2ZUxpc3Q6OnZpb2xhdGVkRGlyZWN0aXZlRm9yRm9udCwgdXJsKTsKKyAgICBp
ZiAoIXZpb2xhdGVkRGlyZWN0aXZlKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBTdHJpbmcg
Y29uc29sZU1lc3NhZ2UgPSBjb25zb2xlTWVzc2FnZUZvclZpb2xhdGlvbihDb250ZW50U2VjdXJp
dHlQb2xpY3lEaXJlY3RpdmVOYW1lczo6Zm9udFNyYywgKnZpb2xhdGVkRGlyZWN0aXZlLCB1cmws
ICJSZWZ1c2VkIHRvIGxvYWQiKTsKKyAgICByZXBvcnRWaW9sYXRpb24oQ29udGVudFNlY3VyaXR5
UG9saWN5RGlyZWN0aXZlTmFtZXM6OmZvbnRTcmMsICp2aW9sYXRlZERpcmVjdGl2ZSwgdXJsLCBj
b25zb2xlTWVzc2FnZSwgU3RyaW5nKCksIFRleHRQb3NpdGlvbihXVEY6Ok9yZGluYWxOdW1iZXI6
OmJlZm9yZUZpcnN0KCksIFdURjo6T3JkaW5hbE51bWJlcigpKSk7CisgICAgcmV0dXJuIHZpb2xh
dGVkRGlyZWN0aXZlLT5kaXJlY3RpdmVMaXN0KCkuaXNSZXBvcnRPbmx5KCk7CiB9CiAKIGJvb2wg
Q29udGVudFNlY3VyaXR5UG9saWN5OjphbGxvd01lZGlhRnJvbVNvdXJjZShjb25zdCBVUkwmIHVy
bCwgYm9vbCBvdmVycmlkZUNvbnRlbnRTZWN1cml0eVBvbGljeSkgY29uc3QKQEAgLTM2Myw3ICs0
NjksMTIgQEAgYm9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93TWVkaWFGcm9tU291cmNl
KGNvbnN0IFVSTCYgdXJsLCBib29sIG92ZXJyaWRlQ28KICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgaWYgKFNjaGVtZVJlZ2lzdHJ5OjpzY2hlbWVTaG91bGRCeXBhc3NDb250ZW50U2VjdXJpdHlQ
b2xpY3kodXJsLnByb3RvY29sKCkpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICByZXR1cm4g
YWxsUG9saWNpZXNBbGxvdygmQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6YWxs
b3dNZWRpYUZyb21Tb3VyY2UsIHVybCwgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlz
dDo6UmVwb3J0aW5nU3RhdHVzOjpTZW5kUmVwb3J0KTsKKyAgICBjb25zdCBDb250ZW50U2VjdXJp
dHlQb2xpY3lEaXJlY3RpdmUqIHZpb2xhdGVkRGlyZWN0aXZlID0gdmlvbGF0ZWREaXJlY3RpdmVJ
bkFueVBvbGljeSgmQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6dmlvbGF0ZWRE
aXJlY3RpdmVGb3JNZWRpYSwgdXJsKTsKKyAgICBpZiAoIXZpb2xhdGVkRGlyZWN0aXZlKQorICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICBTdHJpbmcgY29uc29sZU1lc3NhZ2UgPSBjb25zb2xlTWVz
c2FnZUZvclZpb2xhdGlvbihDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lczo6bWVk
aWFTcmMsICp2aW9sYXRlZERpcmVjdGl2ZSwgdXJsLCAiUmVmdXNlZCB0byBsb2FkIik7CisgICAg
cmVwb3J0VmlvbGF0aW9uKENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzOjptZWRp
YVNyYywgKnZpb2xhdGVkRGlyZWN0aXZlLCB1cmwsIGNvbnNvbGVNZXNzYWdlLCBTdHJpbmcoKSwg
VGV4dFBvc2l0aW9uKFdURjo6T3JkaW5hbE51bWJlcjo6YmVmb3JlRmlyc3QoKSwgV1RGOjpPcmRp
bmFsTnVtYmVyKCkpKTsKKyAgICByZXR1cm4gdmlvbGF0ZWREaXJlY3RpdmUtPmRpcmVjdGl2ZUxp
c3QoKS5pc1JlcG9ydE9ubHkoKTsKIH0KIAogYm9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFs
bG93Q29ubmVjdFRvU291cmNlKGNvbnN0IFVSTCYgdXJsLCBib29sIG92ZXJyaWRlQ29udGVudFNl
Y3VyaXR5UG9saWN5KSBjb25zdApAQCAtMzcyLDcgKzQ4MywxMiBAQCBib29sIENvbnRlbnRTZWN1
cml0eVBvbGljeTo6YWxsb3dDb25uZWN0VG9Tb3VyY2UoY29uc3QgVVJMJiB1cmwsIGJvb2wgb3Zl
cnJpZGVDbwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBpZiAoU2NoZW1lUmVnaXN0cnk6OnNj
aGVtZVNob3VsZEJ5cGFzc0NvbnRlbnRTZWN1cml0eVBvbGljeSh1cmwucHJvdG9jb2woKSkpCiAg
ICAgICAgIHJldHVybiB0cnVlOwotICAgIHJldHVybiBhbGxQb2xpY2llc0FsbG93KCZDb250ZW50
U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0OjphbGxvd0Nvbm5lY3RUb1NvdXJjZSwgdXJsLCBD
b250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0OjpSZXBvcnRpbmdTdGF0dXM6OlNlbmRS
ZXBvcnQpOworICAgIGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZSogdmlvbGF0
ZWREaXJlY3RpdmUgPSB2aW9sYXRlZERpcmVjdGl2ZUluQW55UG9saWN5KCZDb250ZW50U2VjdXJp
dHlQb2xpY3lEaXJlY3RpdmVMaXN0Ojp2aW9sYXRlZERpcmVjdGl2ZUZvckNvbm5lY3RTb3VyY2Us
IHVybCk7CisgICAgaWYgKCF2aW9sYXRlZERpcmVjdGl2ZSkKKyAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgU3RyaW5nIGNvbnNvbGVNZXNzYWdlID0gY29uc29sZU1lc3NhZ2VGb3JWaW9sYXRpb24o
Q29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXM6OmNvbm5lY3RTcmMsICp2aW9sYXRl
ZERpcmVjdGl2ZSwgdXJsLCAiUmVmdXNlZCB0byBjb25uZWN0IHRvIik7CisgICAgcmVwb3J0Vmlv
bGF0aW9uKENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzOjpjb25uZWN0U3JjLCAq
dmlvbGF0ZWREaXJlY3RpdmUsIHVybCwgY29uc29sZU1lc3NhZ2UsIFN0cmluZygpLCBUZXh0UG9z
aXRpb24oV1RGOjpPcmRpbmFsTnVtYmVyOjpiZWZvcmVGaXJzdCgpLCBXVEY6Ok9yZGluYWxOdW1i
ZXIoKSkpOworICAgIHJldHVybiB2aW9sYXRlZERpcmVjdGl2ZS0+ZGlyZWN0aXZlTGlzdCgpLmlz
UmVwb3J0T25seSgpOwogfQogCiBib29sIENvbnRlbnRTZWN1cml0eVBvbGljeTo6YWxsb3dGb3Jt
QWN0aW9uKGNvbnN0IFVSTCYgdXJsLCBib29sIG92ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9saWN5
KSBjb25zdApAQCAtMzgxLDcgKzQ5NywxMiBAQCBib29sIENvbnRlbnRTZWN1cml0eVBvbGljeTo6
YWxsb3dGb3JtQWN0aW9uKGNvbnN0IFVSTCYgdXJsLCBib29sIG92ZXJyaWRlQ29udGVudAogICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICBpZiAoU2NoZW1lUmVnaXN0cnk6OnNjaGVtZVNob3VsZEJ5
cGFzc0NvbnRlbnRTZWN1cml0eVBvbGljeSh1cmwucHJvdG9jb2woKSkpCiAgICAgICAgIHJldHVy
biB0cnVlOwotICAgIHJldHVybiBhbGxQb2xpY2llc0FsbG93KCZDb250ZW50U2VjdXJpdHlQb2xp
Y3lEaXJlY3RpdmVMaXN0OjphbGxvd0Zvcm1BY3Rpb24sIHVybCwgQ29udGVudFNlY3VyaXR5UG9s
aWN5RGlyZWN0aXZlTGlzdDo6UmVwb3J0aW5nU3RhdHVzOjpTZW5kUmVwb3J0KTsKKyAgICBjb25z
dCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmUqIHZpb2xhdGVkRGlyZWN0aXZlID0gdmlv
bGF0ZWREaXJlY3RpdmVJbkFueVBvbGljeSgmQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZl
TGlzdDo6dmlvbGF0ZWREaXJlY3RpdmVGb3JGb3JtQWN0aW9uLCB1cmwpOworICAgIGlmICghdmlv
bGF0ZWREaXJlY3RpdmUpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIFN0cmluZyBjb25zb2xl
TWVzc2FnZSA9IGNvbnNvbGVNZXNzYWdlRm9yVmlvbGF0aW9uKENvbnRlbnRTZWN1cml0eVBvbGlj
eURpcmVjdGl2ZU5hbWVzOjpmb3JtQWN0aW9uLCAqdmlvbGF0ZWREaXJlY3RpdmUsIHVybCwgIlJl
ZnVzZWQgdG8gbG9hZCIpOworICAgIHJlcG9ydFZpb2xhdGlvbihDb250ZW50U2VjdXJpdHlQb2xp
Y3lEaXJlY3RpdmVOYW1lczo6Zm9ybUFjdGlvbiwgKnZpb2xhdGVkRGlyZWN0aXZlLCB1cmwsIGNv
bnNvbGVNZXNzYWdlLCBTdHJpbmcoKSwgVGV4dFBvc2l0aW9uKFdURjo6T3JkaW5hbE51bWJlcjo6
YmVmb3JlRmlyc3QoKSwgV1RGOjpPcmRpbmFsTnVtYmVyKCkpKTsKKyAgICByZXR1cm4gdmlvbGF0
ZWREaXJlY3RpdmUtPmRpcmVjdGl2ZUxpc3QoKS5pc1JlcG9ydE9ubHkoKTsKIH0KIAogYm9vbCBD
b250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93QmFzZVVSSShjb25zdCBVUkwmIHVybCwgYm9vbCBv
dmVycmlkZUNvbnRlbnRTZWN1cml0eVBvbGljeSkgY29uc3QKQEAgLTM5MCw3ICs1MTEsMTIgQEAg
Ym9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93QmFzZVVSSShjb25zdCBVUkwmIHVybCwg
Ym9vbCBvdmVycmlkZUNvbnRlbnRTZWMKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgaWYgKFNj
aGVtZVJlZ2lzdHJ5OjpzY2hlbWVTaG91bGRCeXBhc3NDb250ZW50U2VjdXJpdHlQb2xpY3kodXJs
LnByb3RvY29sKCkpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICByZXR1cm4gYWxsUG9saWNp
ZXNBbGxvdygmQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6YWxsb3dCYXNlVVJJ
LCB1cmwsIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OlJlcG9ydGluZ1N0YXR1
czo6U2VuZFJlcG9ydCk7CisgICAgY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZl
KiB2aW9sYXRlZERpcmVjdGl2ZSA9IHZpb2xhdGVkRGlyZWN0aXZlSW5BbnlQb2xpY3koJkNvbnRl
bnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OnZpb2xhdGVkRGlyZWN0aXZlRm9yQmFzZVVS
SSwgdXJsKTsKKyAgICBpZiAoIXZpb2xhdGVkRGlyZWN0aXZlKQorICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICBTdHJpbmcgY29uc29sZU1lc3NhZ2UgPSBjb25zb2xlTWVzc2FnZUZvclZpb2xhdGlv
bihDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lczo6YmFzZVVSSSwgKnZpb2xhdGVk
RGlyZWN0aXZlLCB1cmwsICJSZWZ1c2VkIHRvIGNoYW5nZSB0aGUgZG9jdW1lbnQgYmFzZSBVUkwg
dG8iKTsKKyAgICByZXBvcnRWaW9sYXRpb24oQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZl
TmFtZXM6OmJhc2VVUkksICp2aW9sYXRlZERpcmVjdGl2ZSwgdXJsLCBjb25zb2xlTWVzc2FnZSwg
U3RyaW5nKCksIFRleHRQb3NpdGlvbihXVEY6Ok9yZGluYWxOdW1iZXI6OmJlZm9yZUZpcnN0KCks
IFdURjo6T3JkaW5hbE51bWJlcigpKSk7CisgICAgcmV0dXJuIHZpb2xhdGVkRGlyZWN0aXZlLT5k
aXJlY3RpdmVMaXN0KCkuaXNSZXBvcnRPbmx5KCk7CiB9CiAKIENvbnRlbnRTZWN1cml0eVBvbGlj
eTo6UmVmbGVjdGVkWFNTRGlzcG9zaXRpb24gQ29udGVudFNlY3VyaXR5UG9saWN5OjpyZWZsZWN0
ZWRYU1NEaXNwb3NpdGlvbigpIGNvbnN0CkBAIC00MDMsMTUgKzUyOSw2IEBAIENvbnRlbnRTZWN1
cml0eVBvbGljeTo6UmVmbGVjdGVkWFNTRGlzcG9zaXRpb24gQ29udGVudFNlY3VyaXR5UG9saWN5
OjpyZWZsZWN0ZWRYCiAgICAgcmV0dXJuIGRpc3Bvc2l0aW9uOwogfQogCi12b2lkIENvbnRlbnRT
ZWN1cml0eVBvbGljeTo6Z2F0aGVyUmVwb3J0VVJJcyhET01TdHJpbmdMaXN0JiBsaXN0KSBjb25z
dAotewotICAgIEFTU0VSVChtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOwotICAgIGZvciAoYXV0
byYgcG9saWN5IDogbV9wb2xpY2llcykgewotICAgICAgICBmb3IgKGF1dG8mIHVybCA6IHBvbGlj
eS0+cmVwb3J0VVJJcygpKQotICAgICAgICAgICAgbGlzdC5hcHBlbmQobV9zY3JpcHRFeGVjdXRp
b25Db250ZXh0LT5jb21wbGV0ZVVSTCh1cmwpLnN0cmluZygpKTsKLSAgICB9Ci19Ci0KIHN0YXRp
YyBTdHJpbmcgc3RyaXBVUkxGb3JVc2VJblJlcG9ydChEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0
IFVSTCYgdXJsKQogewogICAgIGlmICghdXJsLmlzVmFsaWQoKSkKQEAgLTQyMSw5ICs1MzgsMTUg
QEAgc3RhdGljIFN0cmluZyBzdHJpcFVSTEZvclVzZUluUmVwb3J0KERvY3VtZW50JiBkb2N1bWVu
dCwgY29uc3QgVVJMJiB1cmwpCiAgICAgcmV0dXJuIGRvY3VtZW50LnNlY3VyaXR5T3JpZ2luKCkt
PmNhblJlcXVlc3QodXJsKSA/IHVybC5zdHJpcHBlZEZvclVzZUFzUmVmZXJyZXIoKSA6IFNlY3Vy
aXR5T3JpZ2luOjpjcmVhdGUodXJsKS5nZXQoKS50b1N0cmluZygpOwogfQogCi12b2lkIENvbnRl
bnRTZWN1cml0eVBvbGljeTo6cmVwb3J0VmlvbGF0aW9uKGNvbnN0IFN0cmluZyYgZGlyZWN0aXZl
VGV4dCwgY29uc3QgU3RyaW5nJiBlZmZlY3RpdmVEaXJlY3RpdmUsIGNvbnN0IFN0cmluZyYgY29u
c29sZU1lc3NhZ2UsIGNvbnN0IFVSTCYgYmxvY2tlZFVSTCwgY29uc3QgVmVjdG9yPFN0cmluZz4m
IHJlcG9ydFVSSXMsIGNvbnN0IFN0cmluZyYgaGVhZGVyLCBjb25zdCBTdHJpbmcmIGNvbnRleHRV
UkwsIGNvbnN0IFdURjo6T3JkaW5hbE51bWJlciYgY29udGV4dExpbmUsIEpTQzo6RXhlY1N0YXRl
KiBzdGF0ZSkgY29uc3QKK3ZvaWQgQ29udGVudFNlY3VyaXR5UG9saWN5OjpyZXBvcnRWaW9sYXRp
b24oY29uc3QgU3RyaW5nJiB2aW9sYXRlZERpcmVjdGl2ZSwgY29uc3QgQ29udGVudFNlY3VyaXR5
UG9saWN5RGlyZWN0aXZlJiBlZmZlY3RpdmVWaW9sYXRlZERpcmVjdGl2ZSwgY29uc3QgVVJMJiBi
bG9ja2VkVVJMLCBjb25zdCBTdHJpbmcmIGNvbnNvbGVNZXNzYWdlLCBKU0M6OkV4ZWNTdGF0ZSog
c3RhdGUpIGNvbnN0Cit7CisgICAgLy8gRklYTUU6IEV4dHJhY3Qgc291cmNlIGZpbGUgYW5kIHNv
dXJjZSBwb3NpdGlvbiBmcm9tIEpTQzo6RXhlY1N0YXRlLgorICAgIHJldHVybiByZXBvcnRWaW9s
YXRpb24odmlvbGF0ZWREaXJlY3RpdmUsIGVmZmVjdGl2ZVZpb2xhdGVkRGlyZWN0aXZlLCBibG9j
a2VkVVJMLCBjb25zb2xlTWVzc2FnZSwgU3RyaW5nKCksIFRleHRQb3NpdGlvbihXVEY6Ok9yZGlu
YWxOdW1iZXI6OmJlZm9yZUZpcnN0KCksIFdURjo6T3JkaW5hbE51bWJlcjo6YmVmb3JlRmlyc3Qo
KSksIHN0YXRlKTsKK30KKwordm9pZCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OnJlcG9ydFZpb2xh
dGlvbihjb25zdCBTdHJpbmcmIGVmZmVjdGl2ZVZpb2xhdGVkRGlyZWN0aXZlLCBjb25zdCBDb250
ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmUmIHZpb2xhdGVkRGlyZWN0aXZlLCBjb25zdCBVUkwm
IGJsb2NrZWRVUkwsIGNvbnN0IFN0cmluZyYgY29uc29sZU1lc3NhZ2UsIGNvbnN0IFN0cmluZyYg
c291cmNlVVJMLCBjb25zdCBUZXh0UG9zaXRpb24mIHNvdXJjZVBvc2l0aW9uLCBKU0M6OkV4ZWNT
dGF0ZSogc3RhdGUpIGNvbnN0CiB7Ci0gICAgbG9nVG9Db25zb2xlKGNvbnNvbGVNZXNzYWdlLCBj
b250ZXh0VVJMLCBjb250ZXh0TGluZSwgc3RhdGUpOworICAgIGxvZ1RvQ29uc29sZShjb25zb2xl
TWVzc2FnZSwgc291cmNlVVJMLCBzb3VyY2VQb3NpdGlvbi5tX2xpbmUsIHN0YXRlKTsKIAogICAg
IGlmICghbV9pc1JlcG9ydGluZ0VuYWJsZWQpCiAgICAgICAgIHJldHVybjsKQEAgLTQzMiw5ICs1
NTUsNyBAQCB2b2lkIENvbnRlbnRTZWN1cml0eVBvbGljeTo6cmVwb3J0VmlvbGF0aW9uKGNvbnN0
IFN0cmluZyYgZGlyZWN0aXZlVGV4dCwgY29uc3QgUwogICAgIGlmICghaXM8RG9jdW1lbnQ+KG1f
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCkgJiYgIW1fZnJhbWUpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgbm90IGhhcmRjb2RlIHRoZSBkaXJlY3RpdmUgbmFtZXMu
IFdlIHNob3VsZCBtYWtlIHVzZSBvZiB0aGUgY29uc3RhbnRzIGluIENvbnRlbnRTZWN1cml0eVBv
bGljeURpcmVjdGl2ZUxpc3QuY3BwLgotICAgIC8vIFNlZSA8aHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE1NTEzMz4uCi0gICAgQVNTRVJUKCFtX2ZyYW1lIHx8IGVmZmVj
dGl2ZURpcmVjdGl2ZSA9PSAiZnJhbWUtYW5jZXN0b3JzIik7CisgICAgQVNTRVJUKCFtX2ZyYW1l
IHx8IGVmZmVjdGl2ZVZpb2xhdGVkRGlyZWN0aXZlID09IENvbnRlbnRTZWN1cml0eVBvbGljeURp
cmVjdGl2ZU5hbWVzOjpmcmFtZUFuY2VzdG9ycyk7CiAKICAgICBEb2N1bWVudCYgZG9jdW1lbnQg
PSBpczxEb2N1bWVudD4obV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KSA/IGRvd25jYXN0PERvY3Vt
ZW50PigqbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KSA6ICptX2ZyYW1lLT5kb2N1bWVudCgpOwog
ICAgIEZyYW1lKiBmcmFtZSA9IGRvY3VtZW50LmZyYW1lKCk7CkBAIC00NTMsOCArNTc0LDggQEAg
dm9pZCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OnJlcG9ydFZpb2xhdGlvbihjb25zdCBTdHJpbmcm
IGRpcmVjdGl2ZVRleHQsIGNvbnN0IFMKICAgICAgICAgZG9jdW1lbnRVUkkgPSBibG9ja2VkVVJM
OwogICAgICAgICBibG9ja2VkVVJJID0gYmxvY2tlZFVSTDsKICAgICB9Ci0gICAgU3RyaW5nIHZp
b2xhdGVkRGlyZWN0aXZlID0gZGlyZWN0aXZlVGV4dDsKLSAgICBTdHJpbmcgb3JpZ2luYWxQb2xp
Y3kgPSBoZWFkZXI7CisgICAgU3RyaW5nIHZpb2xhdGVkRGlyZWN0aXZlVGV4dCA9IHZpb2xhdGVk
RGlyZWN0aXZlLnRleHQoKTsKKyAgICBTdHJpbmcgb3JpZ2luYWxQb2xpY3kgPSB2aW9sYXRlZERp
cmVjdGl2ZS5kaXJlY3RpdmVMaXN0KCkuaGVhZGVyKCk7CiAgICAgU3RyaW5nIHJlZmVycmVyID0g
ZG9jdW1lbnQucmVmZXJyZXIoKTsKICAgICBBU1NFUlQoZG9jdW1lbnQubG9hZGVyKCkpOwogICAg
IHVuc2lnbmVkIHNob3J0IHN0YXR1c0NvZGUgPSBkb2N1bWVudC51cmwoKS5wcm90b2NvbElzKCJo
dHRwIikgJiYgZG9jdW1lbnQubG9hZGVyKCkgPyBkb2N1bWVudC5sb2FkZXIoKS0+cmVzcG9uc2Uo
KS5odHRwU3RhdHVzQ29kZSgpIDogMDsKQEAgLTQ3Myw5ICs1OTQsMTAgQEAgdm9pZCBDb250ZW50
U2VjdXJpdHlQb2xpY3k6OnJlcG9ydFZpb2xhdGlvbihjb25zdCBTdHJpbmcmIGRpcmVjdGl2ZVRl
eHQsIGNvbnN0IFMKICAgICAvLyAxLiBEaXNwYXRjaCB2aW9sYXRpb24gZXZlbnQuCiAgICAgYm9v
bCBjYW5CdWJibGUgPSBmYWxzZTsKICAgICBib29sIGNhbmNlbGFibGUgPSBmYWxzZTsKLSAgICBk
b2N1bWVudC5lbnF1ZXVlRG9jdW1lbnRFdmVudChTZWN1cml0eVBvbGljeVZpb2xhdGlvbkV2ZW50
OjpjcmVhdGUoZXZlbnROYW1lcygpLnNlY3VyaXR5cG9saWN5dmlvbGF0aW9uRXZlbnQsIGNhbkJ1
YmJsZSwgY2FuY2VsYWJsZSwgZG9jdW1lbnRVUkksIHJlZmVycmVyLCBibG9ja2VkVVJJLCB2aW9s
YXRlZERpcmVjdGl2ZSwgZWZmZWN0aXZlRGlyZWN0aXZlLCBvcmlnaW5hbFBvbGljeSwgc291cmNl
RmlsZSwgc3RhdHVzQ29kZSwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyKSk7CisgICAgZG9jdW1l
bnQuZW5xdWV1ZURvY3VtZW50RXZlbnQoU2VjdXJpdHlQb2xpY3lWaW9sYXRpb25FdmVudDo6Y3Jl
YXRlKGV2ZW50TmFtZXMoKS5zZWN1cml0eXBvbGljeXZpb2xhdGlvbkV2ZW50LCBjYW5CdWJibGUs
IGNhbmNlbGFibGUsIGRvY3VtZW50VVJJLCByZWZlcnJlciwgYmxvY2tlZFVSSSwgdmlvbGF0ZWRE
aXJlY3RpdmVUZXh0LCBlZmZlY3RpdmVWaW9sYXRlZERpcmVjdGl2ZSwgb3JpZ2luYWxQb2xpY3ks
IHNvdXJjZUZpbGUsIHN0YXR1c0NvZGUsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcikpOwogCiAg
ICAgLy8gMi4gU2VuZCB2aW9sYXRpb24gcmVwb3J0IChpZiBhcHBsaWNhYmxlKS4KKyAgICBjb25z
dCBWZWN0b3I8U3RyaW5nPiYgcmVwb3J0VVJJcyA9IHZpb2xhdGVkRGlyZWN0aXZlLmRpcmVjdGl2
ZUxpc3QoKS5yZXBvcnRVUklzKCk7CiAgICAgaWYgKHJlcG9ydFVSSXMuaXNFbXB0eSgpKQogICAg
ICAgICByZXR1cm47CiAKQEAgLTQ5Miw4ICs2MTQsOCBAQCB2b2lkIENvbnRlbnRTZWN1cml0eVBv
bGljeTo6cmVwb3J0VmlvbGF0aW9uKGNvbnN0IFN0cmluZyYgZGlyZWN0aXZlVGV4dCwgY29uc3Qg
UwogICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGNzcFJlcG9ydCA9IEluc3BlY3Rvck9iamVj
dDo6Y3JlYXRlKCk7CiAgICAgY3NwUmVwb3J0LT5zZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJkb2N1
bWVudC11cmkiKSwgZG9jdW1lbnRVUkkpOwogICAgIGNzcFJlcG9ydC0+c2V0U3RyaW5nKEFTQ0lJ
TGl0ZXJhbCgicmVmZXJyZXIiKSwgcmVmZXJyZXIpOwotICAgIGNzcFJlcG9ydC0+c2V0U3RyaW5n
KEFTQ0lJTGl0ZXJhbCgidmlvbGF0ZWQtZGlyZWN0aXZlIiksIGRpcmVjdGl2ZVRleHQpOwotICAg
IGNzcFJlcG9ydC0+c2V0U3RyaW5nKEFTQ0lJTGl0ZXJhbCgiZWZmZWN0aXZlLWRpcmVjdGl2ZSIp
LCBlZmZlY3RpdmVEaXJlY3RpdmUpOworICAgIGNzcFJlcG9ydC0+c2V0U3RyaW5nKEFTQ0lJTGl0
ZXJhbCgidmlvbGF0ZWQtZGlyZWN0aXZlIiksIHZpb2xhdGVkRGlyZWN0aXZlVGV4dCk7CisgICAg
Y3NwUmVwb3J0LT5zZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJlZmZlY3RpdmUtZGlyZWN0aXZlIiks
IGVmZmVjdGl2ZVZpb2xhdGVkRGlyZWN0aXZlKTsKICAgICBjc3BSZXBvcnQtPnNldFN0cmluZyhB
U0NJSUxpdGVyYWwoIm9yaWdpbmFsLXBvbGljeSIpLCBvcmlnaW5hbFBvbGljeSk7CiAgICAgY3Nw
UmVwb3J0LT5zZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJibG9ja2VkLXVyaSIpLCBibG9ja2VkVVJJ
KTsKICAgICBjc3BSZXBvcnQtPnNldEludGVnZXIoQVNDSUlMaXRlcmFsKCJzdGF0dXMtY29kZSIp
LCBzdGF0dXNDb2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRl
bnRTZWN1cml0eVBvbGljeS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3Vy
aXR5UG9saWN5LmgKaW5kZXggZjMyYzMwZGU3ZmJiNjNjNWU4Y2NlNWZhZTdjMDBiMWFjZGZlYjU0
Mi4uMGZmZWY5YzQwMDEzZTU0ZmJlZmNkNzA0YTI2MjBiMTJmYWFkNWRhNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5LmgKQEAgLTM5LDYgKzM5
LDcgQEAgY2xhc3MgT3JkaW5hbE51bWJlcjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFz
cyBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmU7CiBjbGFzcyBDb250ZW50U2VjdXJpdHlQ
b2xpY3lEaXJlY3RpdmVMaXN0OwogY2xhc3MgQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlOwog
Y2xhc3MgRE9NU3RyaW5nTGlzdDsKQEAgLTEzNCw4ICsxMzUsNiBAQCBwdWJsaWM6CiAgICAgdm9p
ZCByZXBvcnRJbnZhbGlkRGlyZWN0aXZlSW5IVFRQRXF1aXZNZXRhKGNvbnN0IFN0cmluZyYpIGNv
bnN0OwogICAgIHZvaWQgcmVwb3J0TWlzc2luZ1JlcG9ydFVSSShjb25zdCBTdHJpbmcmKSBjb25z
dDsKICAgICB2b2lkIHJlcG9ydFVuc3VwcG9ydGVkRGlyZWN0aXZlKGNvbnN0IFN0cmluZyYpIGNv
bnN0OwotICAgIHZvaWQgcmVwb3J0VmlvbGF0aW9uKGNvbnN0IFN0cmluZyYgZGlyZWN0aXZlVGV4
dCwgY29uc3QgU3RyaW5nJiBlZmZlY3RpdmVEaXJlY3RpdmUsIGNvbnN0IFN0cmluZyYgY29uc29s
ZU1lc3NhZ2UsIGNvbnN0IFVSTCYgYmxvY2tlZFVSTCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHJl
cG9ydFVSSXMsIGNvbnN0IFN0cmluZyYgaGVhZGVyLCBjb25zdCBTdHJpbmcmIGNvbnRleHRVUkwg
PSBTdHJpbmcoKSwgY29uc3QgV1RGOjpPcmRpbmFsTnVtYmVyJiBjb250ZXh0TGluZSA9IFdURjo6
T3JkaW5hbE51bWJlcjo6YmVmb3JlRmlyc3QoKSwgSlNDOjpFeGVjU3RhdGUqID0gbnVsbHB0cikg
Y29uc3Q7Ci0gICAgdm9pZCByZXBvcnRCbG9ja2VkU2NyaXB0RXhlY3V0aW9uVG9JbnNwZWN0b3Io
Y29uc3QgU3RyaW5nJiBkaXJlY3RpdmVUZXh0KSBjb25zdDsKICAgICB2b2lkIGVuZm9yY2VTYW5k
Ym94RmxhZ3MoU2FuZGJveEZsYWdzIHNhbmRib3hGbGFncykgeyBtX3NhbmRib3hGbGFncyB8PSBz
YW5kYm94RmxhZ3M7IH0KICAgICB2b2lkIGFkZEhhc2hBbGdvcml0aG1zRm9ySW5saW5lU2NyaXB0
cyhPcHRpb25TZXQ8Q29udGVudFNlY3VyaXR5UG9saWN5SGFzaEFsZ29yaXRobT4gaGFzaEFsZ29y
aXRobXNGb3JJbmxpbmVTY3JpcHRzKQogICAgIHsKQEAgLTE1NSw4ICsxNTQsMTQgQEAgcHJpdmF0
ZToKIAogICAgIHZvaWQgZGlkUmVjZWl2ZUhlYWRlcihjb25zdCBTdHJpbmcmLCBDb250ZW50U2Vj
dXJpdHlQb2xpY3lIZWFkZXJUeXBlLCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlBvbGljeUZyb20p
OwogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgUHJlZGljYXRlLCB0eXBlbmFtZS4uLiBBcmdzPiBi
b29sIGFsbFBvbGljaWVzQWxsb3coUHJlZGljYXRlJiYsIEFyZ3MmJi4uLikgY29uc3QgV0FSTl9V
TlVTRURfUkVUVVJOOwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFByZWRpY2F0ZT4gYm9vbCBhbGxQ
b2xpY2llc0FsbG93SGFzaEZyb21Db250ZW50KFByZWRpY2F0ZSYmLCBjb25zdCBTdHJpbmcmIGNv
bnRlbnQsIE9wdGlvblNldDxDb250ZW50U2VjdXJpdHlQb2xpY3lIYXNoQWxnb3JpdGhtPikgY29u
c3QgV0FSTl9VTlVTRURfUkVUVVJOOworICAgIGNvbnN0IFRleHRFbmNvZGluZyYgZG9jdW1lbnRF
bmNvZGluZygpIGNvbnN0OworCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgUHJlZGljYXRlLCB0eXBl
bmFtZS4uLiBBcmdzPiBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmUqIHZpb2xh
dGVkRGlyZWN0aXZlSW5BbnlQb2xpY3koUHJlZGljYXRlJiYsIEFyZ3MmJi4uLikgY29uc3QgV0FS
Tl9VTlVTRURfUkVUVVJOOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFByZWRpY2F0ZT4gYm9vbCBm
b3VuZEhhc2hPZkNvbnRlbnRJbkFsbFBvbGljaWVzKFByZWRpY2F0ZSYmLCBjb25zdCBTdHJpbmcm
IGNvbnRlbnQsIE9wdGlvblNldDxDb250ZW50U2VjdXJpdHlQb2xpY3lIYXNoQWxnb3JpdGhtPikg
Y29uc3QgV0FSTl9VTlVTRURfUkVUVVJOOworCisgICAgdm9pZCByZXBvcnRWaW9sYXRpb24oY29u
c3QgU3RyaW5nJiB2aW9sYXRlZERpcmVjdGl2ZSwgY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5
RGlyZWN0aXZlJiBlZmZlY3RpdmVWaW9sYXRlZERpcmVjdGl2ZSwgY29uc3QgVVJMJiBibG9ja2Vk
VVJMLCBjb25zdCBTdHJpbmcmIGNvbnNvbGVNZXNzYWdlLCBKU0M6OkV4ZWNTdGF0ZSopIGNvbnN0
OworICAgIHZvaWQgcmVwb3J0VmlvbGF0aW9uKGNvbnN0IFN0cmluZyYgdmlvbGF0ZWREaXJlY3Rp
dmUsIGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZSYgZWZmZWN0aXZlVmlvbGF0
ZWREaXJlY3RpdmUsIGNvbnN0IFVSTCYgYmxvY2tlZFVSTCwgY29uc3QgU3RyaW5nJiBjb25zb2xl
TWVzc2FnZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwsIGNvbnN0IFRleHRQb3NpdGlvbiYgc291
cmNlUG9zaXRpb24sIEpTQzo6RXhlY1N0YXRlKiA9IG51bGxwdHIpIGNvbnN0OworICAgIHZvaWQg
cmVwb3J0QmxvY2tlZFNjcmlwdEV4ZWN1dGlvblRvSW5zcGVjdG9yKGNvbnN0IFN0cmluZyYgZGly
ZWN0aXZlVGV4dCkgY29uc3Q7CiAKICAgICAvLyBXZSBjYW4gbmV2ZXIgaGF2ZSBib3RoIGEgc2Ny
aXB0IGV4ZWN1dGlvbiBjb250ZXh0IGFuZCBhIGZyYW1lLgogICAgIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCB7IG51bGxwdHIgfTsKQEAgLTE3MywxMyAr
MTc4LDEzIEBAIHByaXZhdGU6CiB9OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBQcmVkaWNhdGUsIHR5
cGVuYW1lLi4uIEFyZ3M+Ci1pbmxpbmUgYm9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbFBv
bGljaWVzQWxsb3coUHJlZGljYXRlJiYgcHJlZGljYXRlLCBBcmdzJiYuLi4gYXJncykgY29uc3QK
K2lubGluZSBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmUqIENvbnRlbnRTZWN1
cml0eVBvbGljeTo6dmlvbGF0ZWREaXJlY3RpdmVJbkFueVBvbGljeShQcmVkaWNhdGUmJiBwcmVk
aWNhdGUsIEFyZ3MmJi4uLiBhcmdzKSBjb25zdAogewogICAgIGZvciAoYXV0byYgcG9saWN5IDog
bV9wb2xpY2llcykgewotICAgICAgICBpZiAoIShwb2xpY3kuZ2V0KCktPipwcmVkaWNhdGUpKHN0
ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLikpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgIGlmIChjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmUqIHZpb2xhdGVk
RGlyZWN0aXZlID0gKHBvbGljeS5nZXQoKS0+KnByZWRpY2F0ZSkoc3RkOjpmb3J3YXJkPEFyZ3M+
KGFyZ3MpLi4uKSkKKyAgICAgICAgICAgIHJldHVybiB2aW9sYXRlZERpcmVjdGl2ZTsKICAgICB9
Ci0gICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lEaXJl
Y3RpdmUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk4MGM3MmZkNGNhYjljOWNjMmM1MThlN2UwZGQzYWUwZjgw
MTc4YjIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50
U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmUuY3BwCkBAIC0wLDAgKzEsMzggQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ29udGVudFNlY3VyaXR5UG9saWN5RGly
ZWN0aXZlLmgiCisKKyNpbmNsdWRlICJDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0
LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworYm9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3lE
aXJlY3RpdmU6OmlzRGVmYXVsdFNyYygpIGNvbnN0Cit7CisgICAgcmV0dXJuIHRoaXMgPT0gbV9k
aXJlY3RpdmVMaXN0LmRlZmF1bHRTcmMoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5
RGlyZWN0aXZlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xp
Y3lEaXJlY3RpdmUuaAppbmRleCA0NGFhMTNmMDFmMDMwYjc1MTBmZWRlODZhMjJjNjhjNmZiMjQw
OTBmLi41ZTgyNGY4N2MwMGI5OGUxY2FkZjVkZWRjMWEwODdmMDAzNTMwNDIxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lEaXJl
Y3RpdmUuaApAQCAtMzEsMjYgKzMxLDI4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xh
c3MgQ29udGVudFNlY3VyaXR5UG9saWN5OworY2xhc3MgQ29udGVudFNlY3VyaXR5UG9saWN5RGly
ZWN0aXZlTGlzdDsKIAogY2xhc3MgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlIHsKIHB1
YmxpYzoKLSAgICBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmUoY29uc3QgU3RyaW5nJiBu
YW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlLCBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3kmIHBv
bGljeSkKKyAgICBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmUoY29uc3QgQ29udGVudFNl
Y3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdCYgZGlyZWN0aXZlTGlzdCwgY29uc3QgU3RyaW5nJiBu
YW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlKQogICAgICAgICA6IG1fbmFtZShuYW1lKQogICAgICAg
ICAsIG1fdGV4dChuYW1lICsgJyAnICsgdmFsdWUpCi0gICAgICAgICwgbV9wb2xpY3kocG9saWN5
KQorICAgICAgICAsIG1fZGlyZWN0aXZlTGlzdChkaXJlY3RpdmVMaXN0KQogICAgIHsKICAgICB9
CiAKKyAgICBjb25zdCBTdHJpbmcmIG5hbWUoKSBjb25zdCB7IHJldHVybiBtX25hbWU7IH0KICAg
ICBjb25zdCBTdHJpbmcmIHRleHQoKSBjb25zdCB7IHJldHVybiBtX3RleHQ7IH0KIAotcHJvdGVj
dGVkOgotICAgIGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeSYgcG9saWN5KCkgY29uc3QgeyBy
ZXR1cm4gbV9wb2xpY3k7IH0KKyAgICBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3Rp
dmVMaXN0JiBkaXJlY3RpdmVMaXN0KCkgY29uc3QgeyByZXR1cm4gbV9kaXJlY3RpdmVMaXN0OyB9
CisKKyAgICBib29sIGlzRGVmYXVsdFNyYygpIGNvbnN0OwogCiBwcml2YXRlOgogICAgIFN0cmlu
ZyBtX25hbWU7CiAgICAgU3RyaW5nIG1fdGV4dDsKLSAgICBjb25zdCBDb250ZW50U2VjdXJpdHlQ
b2xpY3kmIG1fcG9saWN5OworICAgIGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2
ZUxpc3QmIG1fZGlyZWN0aXZlTGlzdDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeURp
cmVjdGl2ZUxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5
UG9saWN5RGlyZWN0aXZlTGlzdC5jcHAKaW5kZXggOTQ1NTNlMWZmYTc4YzQxY2U4NjIyODhiYzRk
ZjhlYTVkZjMyYmJlYy4uMDA0NGU4NzlkODI0YmMwYWZkM2QxZTMwZDViNzY3ZWJhMTNlODI4YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5
RGlyZWN0aXZlTGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNl
Y3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdC5jcHAKQEAgLTI3LDc0ICsyNywxNSBAQAogI2luY2x1
ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxp
c3QuaCIKIAorI2luY2x1ZGUgIkNvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzLmgi
CiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIlBh
cnNpbmdVdGlsaXRpZXMuaCIKICNpbmNsdWRlICJTZWN1cml0eUNvbnRleHQuaCIKICNpbmNsdWRl
IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KLSNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KLSNpbmNs
dWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
Ly8gQ1NQIDEuMCBEaXJlY3RpdmVzCi1zdGF0aWMgY29uc3QgY2hhciBjb25uZWN0U3JjW10gPSAi
Y29ubmVjdC1zcmMiOwotc3RhdGljIGNvbnN0IGNoYXIgZGVmYXVsdFNyY1tdID0gImRlZmF1bHQt
c3JjIjsKLXN0YXRpYyBjb25zdCBjaGFyIGZvbnRTcmNbXSA9ICJmb250LXNyYyI7Ci1zdGF0aWMg
Y29uc3QgY2hhciBmcmFtZVNyY1tdID0gImZyYW1lLXNyYyI7Ci1zdGF0aWMgY29uc3QgY2hhciBp
bWdTcmNbXSA9ICJpbWctc3JjIjsKLXN0YXRpYyBjb25zdCBjaGFyIG1lZGlhU3JjW10gPSAibWVk
aWEtc3JjIjsKLXN0YXRpYyBjb25zdCBjaGFyIG9iamVjdFNyY1tdID0gIm9iamVjdC1zcmMiOwot
c3RhdGljIGNvbnN0IGNoYXIgcmVwb3J0VVJJW10gPSAicmVwb3J0LXVyaSI7Ci1zdGF0aWMgY29u
c3QgY2hhciBzYW5kYm94W10gPSAic2FuZGJveCI7Ci1zdGF0aWMgY29uc3QgY2hhciBzY3JpcHRT
cmNbXSA9ICJzY3JpcHQtc3JjIjsKLXN0YXRpYyBjb25zdCBjaGFyIHN0eWxlU3JjW10gPSAic3R5
bGUtc3JjIjsKLQotLy8gQ1NQIDEuMSBEaXJlY3RpdmVzCi1zdGF0aWMgY29uc3QgY2hhciBiYXNl
VVJJW10gPSAiYmFzZS11cmkiOwotc3RhdGljIGNvbnN0IGNoYXIgY2hpbGRTcmNbXSA9ICJjaGls
ZC1zcmMiOwotc3RhdGljIGNvbnN0IGNoYXIgZm9ybUFjdGlvbltdID0gImZvcm0tYWN0aW9uIjsK
LXN0YXRpYyBjb25zdCBjaGFyIHBsdWdpblR5cGVzW10gPSAicGx1Z2luLXR5cGVzIjsKLXN0YXRp
YyBjb25zdCBjaGFyIGZyYW1lQW5jZXN0b3JzW10gPSAiZnJhbWUtYW5jZXN0b3JzIjsKLSNpZiBF
TkFCTEUoQ1NQX05FWFQpCi1zdGF0aWMgY29uc3QgY2hhciByZWZsZWN0ZWRYU1NbXSA9ICJyZWZs
ZWN0ZWQteHNzIjsKLSNlbmRpZgotCi0jaWYgRU5BQkxFKENTUF9ORVhUKQotCi1zdGF0aWMgaW5s
aW5lIGJvb2wgaXNFeHBlcmltZW50YWxEaXJlY3RpdmVOYW1lKGNvbnN0IFN0cmluZyYgbmFtZSkK
LXsKLSAgICByZXR1cm4gZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobmFtZSwgcmVmbGVj
dGVkWFNTKTsKLX0KLQotI2Vsc2UKLQotc3RhdGljIGlubGluZSBib29sIGlzRXhwZXJpbWVudGFs
RGlyZWN0aXZlTmFtZShjb25zdCBTdHJpbmcmKQotewotICAgIHJldHVybiBmYWxzZTsKLX0KLQot
I2VuZGlmCi0KLWJvb2wgaXNDU1BEaXJlY3RpdmVOYW1lKGNvbnN0IFN0cmluZyYgbmFtZSkKLXsK
LSAgICByZXR1cm4gZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobmFtZSwgYmFzZVVSSSkK
LSAgICAgICAgfHwgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobmFtZSwgY29ubmVjdFNy
YykKLSAgICAgICAgfHwgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobmFtZSwgZGVmYXVs
dFNyYykKLSAgICAgICAgfHwgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobmFtZSwgZm9u
dFNyYykKLSAgICAgICAgfHwgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobmFtZSwgZm9y
bUFjdGlvbikKLSAgICAgICAgfHwgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobmFtZSwg
ZnJhbWVTcmMpCi0gICAgICAgIHx8IGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG5hbWUs
IGltZ1NyYykKLSAgICAgICAgfHwgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobmFtZSwg
bWVkaWFTcmMpCi0gICAgICAgIHx8IGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG5hbWUs
IG9iamVjdFNyYykKLSAgICAgICAgfHwgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobmFt
ZSwgcGx1Z2luVHlwZXMpCi0gICAgICAgIHx8IGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNl
KG5hbWUsIHJlcG9ydFVSSSkKLSAgICAgICAgfHwgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNh
c2UobmFtZSwgc2FuZGJveCkKLSAgICAgICAgfHwgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNh
c2UobmFtZSwgc2NyaXB0U3JjKQotICAgICAgICB8fCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJ
Q2FzZShuYW1lLCBzdHlsZVNyYykKLSAgICAgICAgfHwgaXNFeHBlcmltZW50YWxEaXJlY3RpdmVO
YW1lKG5hbWUpOwotfQotCiBzdGF0aWMgYm9vbCBpc0RpcmVjdGl2ZU5hbWVDaGFyYWN0ZXIoVUNo
YXIgYykKIHsKICAgICByZXR1cm4gaXNBU0NJSUFscGhhbnVtZXJpYyhjKSB8fCBjID09ICctJzsK
QEAgLTE4MSwyODkgKzEyMiwxNzIgQEAgc3RkOjp1bmlxdWVfcHRyPENvbnRlbnRTZWN1cml0eVBv
bGljeURpcmVjdGl2ZUxpc3Q+IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGkKICAgICByZXR1
cm4gZGlyZWN0aXZlczsKIH0KIAotdm9pZCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVM
aXN0OjpyZXBvcnRWaW9sYXRpb24oY29uc3QgU3RyaW5nJiBkaXJlY3RpdmVUZXh0LCBjb25zdCBT
dHJpbmcmIGVmZmVjdGl2ZURpcmVjdGl2ZSwgY29uc3QgU3RyaW5nJiBjb25zb2xlTWVzc2FnZSwg
Y29uc3QgVVJMJiBibG9ja2VkVVJMLCBjb25zdCBTdHJpbmcmIGNvbnRleHRVUkwsIGNvbnN0IFdU
Rjo6T3JkaW5hbE51bWJlciYgY29udGV4dExpbmUsIEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSkgY29u
c3QKLXsKLSAgICBTdHJpbmcgbWVzc2FnZSA9IG1fcmVwb3J0T25seSA/ICJbUmVwb3J0IE9ubHld
ICIgKyBjb25zb2xlTWVzc2FnZSA6IGNvbnNvbGVNZXNzYWdlOwotICAgIG1fcG9saWN5LnJlcG9y
dFZpb2xhdGlvbihkaXJlY3RpdmVUZXh0LCBlZmZlY3RpdmVEaXJlY3RpdmUsIG1lc3NhZ2UsIGJs
b2NrZWRVUkwsIG1fcmVwb3J0VVJJcywgbV9oZWFkZXIsIGNvbnRleHRVUkwsIGNvbnRleHRMaW5l
LCBzdGF0ZSk7Ci19Ci0KIENvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3REaXJlY3RpdmUq
IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6Om9wZXJhdGl2ZURpcmVjdGl2ZShD
b250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0RGlyZWN0aXZlKiBkaXJlY3RpdmUpIGNvbnN0
CiB7CiAgICAgcmV0dXJuIGRpcmVjdGl2ZSA/IGRpcmVjdGl2ZSA6IG1fZGVmYXVsdFNyYy5nZXQo
KTsKIH0KIAotc3RhdGljIFN0cmluZyBjb25zb2xlTWVzc2FnZUZvclZpb2xhdGlvbihjb25zdCBT
dHJpbmcmIGVmZmVjdGl2ZURpcmVjdGl2ZSwgY29uc3QgVVJMJiBibG9ja2VkVVJMLCBib29sIHZp
b2xhdGVzRGVmYXVsdFNyYywgY29uc3QgY2hhciogcHJlZml4LCBjb25zdCBjaGFyKiBzdWJqZWN0
ID0gIml0IikKLXsKLSAgICBTdHJpbmdCdWlsZGVyIHJlc3VsdDsKLSAgICByZXN1bHQuYXBwZW5k
KHByZWZpeCk7Ci0gICAgaWYgKCFibG9ja2VkVVJMLmlzRW1wdHkoKSkgewotICAgICAgICByZXN1
bHQuYXBwZW5kKCcgJyk7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQoYmxvY2tlZFVSTC5zdHJpbmdD
ZW50ZXJFbGxpcHNpemVkVG9MZW5ndGgoKSk7Ci0gICAgfQotICAgIHJlc3VsdC5hcHBlbmRMaXRl
cmFsKCIgYmVjYXVzZSAiKTsKLSAgICByZXN1bHQuYXBwZW5kKHN1YmplY3QpOwotICAgIGlmICh2
aW9sYXRlc0RlZmF1bHRTcmMpIHsKLSAgICAgICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoIiBhcHBl
YXJzIGluIG5laXRoZXIgdGhlICIpOwotICAgICAgICByZXN1bHQuYXBwZW5kKGVmZmVjdGl2ZURp
cmVjdGl2ZSk7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFsKCIgZGlyZWN0aXZlIG5vciB0
aGUgZGVmYXVsdC1zcmMgZGlyZWN0aXZlIG9mIHRoZSBDb250ZW50IFNlY3VyaXR5IFBvbGljeS4i
KTsKLSAgICB9IGVsc2UgewotICAgICAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgiIGRvZXMgbm90
IGFwcGVhciBpbiB0aGUgIik7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQoZWZmZWN0aXZlRGlyZWN0
aXZlKTsKLSAgICAgICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoIiBkaXJlY3RpdmUgb2YgdGhlIENv
bnRlbnQgU2VjdXJpdHkgUG9saWN5LiIpOwotICAgIH0KLSAgICByZXR1cm4gcmVzdWx0LnRvU3Ry
aW5nKCk7Ci19Ci0KLWJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6YWxs
b3dKYXZhU2NyaXB0VVJMcyhjb25zdCBTdHJpbmcmIGNvbnRleHRVUkwsIGNvbnN0IFdURjo6T3Jk
aW5hbE51bWJlciYgY29udGV4dExpbmUsIFJlcG9ydGluZ1N0YXR1cyByZXBvcnRpbmdTdGF0dXMp
IGNvbnN0Citjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmUqIENvbnRlbnRTZWN1
cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OnZpb2xhdGVkRGlyZWN0aXZlRm9yVW5zYWZlRXZhbCgp
IGNvbnN0CiB7CiAgICAgQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdERpcmVjdGl2ZSog
b3BlcmF0aXZlRGlyZWN0aXZlID0gdGhpcy0+b3BlcmF0aXZlRGlyZWN0aXZlKG1fc2NyaXB0U3Jj
LmdldCgpKTsKLSAgICBpZiAoY2hlY2tJbmxpbmUob3BlcmF0aXZlRGlyZWN0aXZlKSkKLSAgICAg
ICAgcmV0dXJuIHRydWU7Ci0gICAgaWYgKHJlcG9ydGluZ1N0YXR1cyA9PSBSZXBvcnRpbmdTdGF0
dXM6OlNlbmRSZXBvcnQpIHsKLSAgICAgICAgU3RyaW5nIGNvbnNvbGVNZXNzYWdlID0gY29uc29s
ZU1lc3NhZ2VGb3JWaW9sYXRpb24oc2NyaXB0U3JjLCBVUkwoKSwgb3BlcmF0aXZlRGlyZWN0aXZl
ID09IG1fZGVmYXVsdFNyYy5nZXQoKSwgIlJlZnVzZWQgdG8gZXhlY3V0ZSBhIHNjcmlwdCIsICJp
dHMgaGFzaCwgaXRzIG5vbmNlLCBvciAndW5zYWZlLWlubGluZSciKTsKLSAgICAgICAgcmVwb3J0
VmlvbGF0aW9uKG9wZXJhdGl2ZURpcmVjdGl2ZS0+dGV4dCgpLCBzY3JpcHRTcmMsIGNvbnNvbGVN
ZXNzYWdlLCBVUkwoKSwgY29udGV4dFVSTCwgY29udGV4dExpbmUpOwotICAgICAgICBpZiAoIW1f
cmVwb3J0T25seSkKLSAgICAgICAgICAgIG1fcG9saWN5LnJlcG9ydEJsb2NrZWRTY3JpcHRFeGVj
dXRpb25Ub0luc3BlY3RvcihvcGVyYXRpdmVEaXJlY3RpdmUtPnRleHQoKSk7Ci0gICAgfQotICAg
IHJldHVybiBkZW55SWZFbmZvcmNpbmdQb2xpY3koKTsKKyAgICBpZiAoY2hlY2tFdmFsKG9wZXJh
dGl2ZURpcmVjdGl2ZSkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBvcGVy
YXRpdmVEaXJlY3RpdmU7CiB9CiAKLWJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZl
TGlzdDo6YWxsb3dJbmxpbmVFdmVudEhhbmRsZXJzKGNvbnN0IFN0cmluZyYgY29udGV4dFVSTCwg
Y29uc3QgV1RGOjpPcmRpbmFsTnVtYmVyJiBjb250ZXh0TGluZSwgUmVwb3J0aW5nU3RhdHVzIHJl
cG9ydGluZ1N0YXR1cykgY29uc3QKK2NvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2
ZSogQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6dmlvbGF0ZWREaXJlY3RpdmVG
b3JVbnNhZmVJbmxpbmVTY3JpcHQoKSBjb25zdAogewogICAgIENvbnRlbnRTZWN1cml0eVBvbGlj
eVNvdXJjZUxpc3REaXJlY3RpdmUqIG9wZXJhdGl2ZURpcmVjdGl2ZSA9IHRoaXMtPm9wZXJhdGl2
ZURpcmVjdGl2ZShtX3NjcmlwdFNyYy5nZXQoKSk7CiAgICAgaWYgKGNoZWNrSW5saW5lKG9wZXJh
dGl2ZURpcmVjdGl2ZSkpCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIGlmIChyZXBvcnRpbmdT
dGF0dXMgPT0gUmVwb3J0aW5nU3RhdHVzOjpTZW5kUmVwb3J0KSB7Ci0gICAgICAgIFN0cmluZyBj
b25zb2xlTWVzc2FnZSA9IGNvbnNvbGVNZXNzYWdlRm9yVmlvbGF0aW9uKHNjcmlwdFNyYywgVVJM
KCksIG9wZXJhdGl2ZURpcmVjdGl2ZSA9PSBtX2RlZmF1bHRTcmMuZ2V0KCksICJSZWZ1c2VkIHRv
IGV4ZWN1dGUgYSBzY3JpcHQiLCAiaXRzIGhhc2gsIGl0cyBub25jZSwgb3IgJ3Vuc2FmZS1pbmxp
bmUnIik7Ci0gICAgICAgIHJlcG9ydFZpb2xhdGlvbihvcGVyYXRpdmVEaXJlY3RpdmUtPnRleHQo
KSwgc2NyaXB0U3JjLCBjb25zb2xlTWVzc2FnZSwgVVJMKCksIGNvbnRleHRVUkwsIGNvbnRleHRM
aW5lKTsKLSAgICAgICAgaWYgKCFtX3JlcG9ydE9ubHkpCi0gICAgICAgICAgICBtX3BvbGljeS5y
ZXBvcnRCbG9ja2VkU2NyaXB0RXhlY3V0aW9uVG9JbnNwZWN0b3Iob3BlcmF0aXZlRGlyZWN0aXZl
LT50ZXh0KCkpOwotICAgIH0KLSAgICByZXR1cm4gZGVueUlmRW5mb3JjaW5nUG9saWN5KCk7Cisg
ICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBvcGVyYXRpdmVEaXJlY3RpdmU7CiB9
CiAKLWJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6YWxsb3dJbmxpbmVT
Y3JpcHQoY29uc3QgU3RyaW5nJiBjb250ZXh0VVJMLCBjb25zdCBXVEY6Ok9yZGluYWxOdW1iZXIm
IGNvbnRleHRMaW5lLCBSZXBvcnRpbmdTdGF0dXMgcmVwb3J0aW5nU3RhdHVzKSBjb25zdAorY29u
c3QgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlKiBDb250ZW50U2VjdXJpdHlQb2xpY3lE
aXJlY3RpdmVMaXN0Ojp2aW9sYXRlZERpcmVjdGl2ZUZvclVuc2FmZUlubGluZVN0eWxlKCkgY29u
c3QKIHsKLSAgICBDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0RGlyZWN0aXZlKiBvcGVy
YXRpdmVEaXJlY3RpdmUgPSB0aGlzLT5vcGVyYXRpdmVEaXJlY3RpdmUobV9zY3JpcHRTcmMuZ2V0
KCkpOworICAgIENvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3REaXJlY3RpdmUqIG9wZXJh
dGl2ZURpcmVjdGl2ZSA9IHRoaXMtPm9wZXJhdGl2ZURpcmVjdGl2ZShtX3N0eWxlU3JjLmdldCgp
KTsKICAgICBpZiAoY2hlY2tJbmxpbmUob3BlcmF0aXZlRGlyZWN0aXZlKSkKLSAgICAgICAgcmV0
dXJuIHRydWU7Ci0gICAgaWYgKHJlcG9ydGluZ1N0YXR1cyA9PSBSZXBvcnRpbmdTdGF0dXM6OlNl
bmRSZXBvcnQpIHsKLSAgICAgICAgU3RyaW5nIGNvbnNvbGVNZXNzYWdlID0gY29uc29sZU1lc3Nh
Z2VGb3JWaW9sYXRpb24oc2NyaXB0U3JjLCBVUkwoKSwgb3BlcmF0aXZlRGlyZWN0aXZlID09IG1f
ZGVmYXVsdFNyYy5nZXQoKSwgIlJlZnVzZWQgdG8gZXhlY3V0ZSBhIHNjcmlwdCIsICJpdHMgaGFz
aCwgaXRzIG5vbmNlLCBvciAndW5zYWZlLWlubGluZSciKTsKLSAgICAgICAgcmVwb3J0VmlvbGF0
aW9uKG9wZXJhdGl2ZURpcmVjdGl2ZS0+dGV4dCgpLCBzY3JpcHRTcmMsIGNvbnNvbGVNZXNzYWdl
LCBVUkwoKSwgY29udGV4dFVSTCwgY29udGV4dExpbmUpOwotICAgICAgICBpZiAoIW1fcmVwb3J0
T25seSkKLSAgICAgICAgICAgIG1fcG9saWN5LnJlcG9ydEJsb2NrZWRTY3JpcHRFeGVjdXRpb25U
b0luc3BlY3RvcihvcGVyYXRpdmVEaXJlY3RpdmUtPnRleHQoKSk7Ci0gICAgfQotICAgIHJldHVy
biBkZW55SWZFbmZvcmNpbmdQb2xpY3koKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
cmV0dXJuIG9wZXJhdGl2ZURpcmVjdGl2ZTsKIH0KIAotYm9vbCBDb250ZW50U2VjdXJpdHlQb2xp
Y3lEaXJlY3RpdmVMaXN0OjphbGxvd0lubGluZVNjcmlwdFdpdGhIYXNoKGNvbnN0IENvbnRlbnRT
ZWN1cml0eVBvbGljeUhhc2gmIGhhc2gpIGNvbnN0Citjb25zdCBDb250ZW50U2VjdXJpdHlQb2xp
Y3lEaXJlY3RpdmUqIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OnZpb2xhdGVk
RGlyZWN0aXZlRm9yU2NyaXB0SGFzaChjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lIYXNoJiBo
YXNoKSBjb25zdAogewotICAgIHJldHVybiBjaGVja0hhc2gob3BlcmF0aXZlRGlyZWN0aXZlKG1f
c2NyaXB0U3JjLmdldCgpKSwgaGFzaCk7Ci19Ci0KLWJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5
RGlyZWN0aXZlTGlzdDo6YWxsb3dTY3JpcHRXaXRoTm9uY2UoY29uc3QgU3RyaW5nJiBub25jZSkg
Y29uc3QKLXsKLSAgICByZXR1cm4gY2hlY2tOb25jZShvcGVyYXRpdmVEaXJlY3RpdmUobV9zY3Jp
cHRTcmMuZ2V0KCkpLCBub25jZSk7CisgICAgQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlz
dERpcmVjdGl2ZSogb3BlcmF0aXZlRGlyZWN0aXZlID0gdGhpcy0+b3BlcmF0aXZlRGlyZWN0aXZl
KG1fc2NyaXB0U3JjLmdldCgpKTsKKyAgICBpZiAoY2hlY2tIYXNoKG9wZXJhdGl2ZURpcmVjdGl2
ZSwgaGFzaCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBvcGVyYXRpdmVE
aXJlY3RpdmU7CiB9CiAKLWJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6
YWxsb3dJbmxpbmVTdHlsZShjb25zdCBTdHJpbmcmIGNvbnRleHRVUkwsIGNvbnN0IFdURjo6T3Jk
aW5hbE51bWJlciYgY29udGV4dExpbmUsIFJlcG9ydGluZ1N0YXR1cyByZXBvcnRpbmdTdGF0dXMp
IGNvbnN0Citjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmUqIENvbnRlbnRTZWN1
cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OnZpb2xhdGVkRGlyZWN0aXZlRm9yU3R5bGVIYXNoKGNv
bnN0IENvbnRlbnRTZWN1cml0eVBvbGljeUhhc2gmIGhhc2gpIGNvbnN0CiB7CiAgICAgQ29udGVu
dFNlY3VyaXR5UG9saWN5U291cmNlTGlzdERpcmVjdGl2ZSogb3BlcmF0aXZlRGlyZWN0aXZlID0g
dGhpcy0+b3BlcmF0aXZlRGlyZWN0aXZlKG1fc3R5bGVTcmMuZ2V0KCkpOwotICAgIGlmIChjaGVj
a0lubGluZShvcGVyYXRpdmVEaXJlY3RpdmUpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBp
ZiAocmVwb3J0aW5nU3RhdHVzID09IFJlcG9ydGluZ1N0YXR1czo6U2VuZFJlcG9ydCkgewotICAg
ICAgICBTdHJpbmcgY29uc29sZU1lc3NhZ2UgPSBjb25zb2xlTWVzc2FnZUZvclZpb2xhdGlvbihz
dHlsZVNyYywgVVJMKCksIG9wZXJhdGl2ZURpcmVjdGl2ZSA9PSBtX2RlZmF1bHRTcmMuZ2V0KCks
ICJSZWZ1c2VkIHRvIGFwcGx5IGEgc3R5bGVzaGVldCIsICJpdHMgaGFzaCwgaXRzIG5vbmNlLCBv
ciAndW5zYWZlLWlubGluZSciKTsKLSAgICAgICAgcmVwb3J0VmlvbGF0aW9uKG9wZXJhdGl2ZURp
cmVjdGl2ZS0+dGV4dCgpLCBzdHlsZVNyYywgY29uc29sZU1lc3NhZ2UsIFVSTCgpLCBjb250ZXh0
VVJMLCBjb250ZXh0TGluZSk7Ci0gICAgfQotICAgIHJldHVybiBkZW55SWZFbmZvcmNpbmdQb2xp
Y3koKTsKKyAgICBpZiAoY2hlY2tIYXNoKG9wZXJhdGl2ZURpcmVjdGl2ZSwgaGFzaCkpCisgICAg
ICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBvcGVyYXRpdmVEaXJlY3RpdmU7CiB9CiAK
LWJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6YWxsb3dJbmxpbmVTdHls
ZVdpdGhIYXNoKGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeUhhc2gmIGhhc2gpIGNvbnN0Citj
b25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmUqIENvbnRlbnRTZWN1cml0eVBvbGlj
eURpcmVjdGl2ZUxpc3Q6OnZpb2xhdGVkRGlyZWN0aXZlRm9yU2NyaXB0Tm9uY2UoY29uc3QgU3Ry
aW5nJiBub25jZSkgY29uc3QKIHsKLSAgICByZXR1cm4gY2hlY2tIYXNoKG9wZXJhdGl2ZURpcmVj
dGl2ZShtX3N0eWxlU3JjLmdldCgpKSwgaGFzaCk7CisgICAgQ29udGVudFNlY3VyaXR5UG9saWN5
U291cmNlTGlzdERpcmVjdGl2ZSogb3BlcmF0aXZlRGlyZWN0aXZlID0gdGhpcy0+b3BlcmF0aXZl
RGlyZWN0aXZlKG1fc2NyaXB0U3JjLmdldCgpKTsKKyAgICBpZiAoY2hlY2tOb25jZShvcGVyYXRp
dmVEaXJlY3RpdmUsIG5vbmNlKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJu
IG9wZXJhdGl2ZURpcmVjdGl2ZTsKIH0KIAotYm9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJl
Y3RpdmVMaXN0OjphbGxvd1N0eWxlV2l0aE5vbmNlKGNvbnN0IFN0cmluZyYgbm9uY2UpIGNvbnN0
Citjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmUqIENvbnRlbnRTZWN1cml0eVBv
bGljeURpcmVjdGl2ZUxpc3Q6OnZpb2xhdGVkRGlyZWN0aXZlRm9yU3R5bGVOb25jZShjb25zdCBT
dHJpbmcmIG5vbmNlKSBjb25zdAogewotICAgIHJldHVybiBjaGVja05vbmNlKG9wZXJhdGl2ZURp
cmVjdGl2ZShtX3N0eWxlU3JjLmdldCgpKSwgbm9uY2UpOworICAgIENvbnRlbnRTZWN1cml0eVBv
bGljeVNvdXJjZUxpc3REaXJlY3RpdmUqIG9wZXJhdGl2ZURpcmVjdGl2ZSA9IHRoaXMtPm9wZXJh
dGl2ZURpcmVjdGl2ZShtX3N0eWxlU3JjLmdldCgpKTsKKyAgICBpZiAoY2hlY2tOb25jZShvcGVy
YXRpdmVEaXJlY3RpdmUsIG5vbmNlKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0
dXJuIG9wZXJhdGl2ZURpcmVjdGl2ZTsKIH0KIAotYm9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3lE
aXJlY3RpdmVMaXN0OjphbGxvd0V2YWwoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBSZXBvcnRpbmdT
dGF0dXMgcmVwb3J0aW5nU3RhdHVzKSBjb25zdAorY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5
RGlyZWN0aXZlKiBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0Ojp2aW9sYXRlZERp
cmVjdGl2ZUZvckJhc2VVUkkoY29uc3QgVVJMJiB1cmwpIGNvbnN0CiB7Ci0gICAgQ29udGVudFNl
Y3VyaXR5UG9saWN5U291cmNlTGlzdERpcmVjdGl2ZSogb3BlcmF0aXZlRGlyZWN0aXZlID0gdGhp
cy0+b3BlcmF0aXZlRGlyZWN0aXZlKG1fc2NyaXB0U3JjLmdldCgpKTsKLSAgICBpZiAoY2hlY2tF
dmFsKG9wZXJhdGl2ZURpcmVjdGl2ZSkpCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIGlmIChy
ZXBvcnRpbmdTdGF0dXMgPT0gUmVwb3J0aW5nU3RhdHVzOjpTZW5kUmVwb3J0KSB7Ci0gICAgICAg
IFN0cmluZyBjb25zb2xlTWVzc2FnZSA9IGNvbnNvbGVNZXNzYWdlRm9yVmlvbGF0aW9uKHNjcmlw
dFNyYywgVVJMKCksIG9wZXJhdGl2ZURpcmVjdGl2ZSA9PSBtX2RlZmF1bHRTcmMuZ2V0KCksICJS
ZWZ1c2VkIHRvIGV4ZWN1dGUgYSBzY3JpcHQiLCAiJ3Vuc2FmZS1ldmFsJyIpOwotICAgICAgICAv
LyBGSVhNRTogUXVlcnkgSlNDOjpFeGVjU3RhdGUgZm9yIHNvdXJjZSBmaWxlLCBsaW5lIGFuZCBj
b2x1bW4gaW5mb3JtYXRpb24uCi0gICAgICAgIHJlcG9ydFZpb2xhdGlvbihvcGVyYXRpdmVEaXJl
Y3RpdmUtPnRleHQoKSwgc2NyaXB0U3JjLCBjb25zb2xlTWVzc2FnZSwgVVJMKCksIFN0cmluZygp
LCBXVEY6Ok9yZGluYWxOdW1iZXI6OmJlZm9yZUZpcnN0KCksIHN0YXRlKTsKLSAgICAgICAgaWYg
KCFtX3JlcG9ydE9ubHkpCi0gICAgICAgICAgICBtX3BvbGljeS5yZXBvcnRCbG9ja2VkU2NyaXB0
RXhlY3V0aW9uVG9JbnNwZWN0b3Iob3BlcmF0aXZlRGlyZWN0aXZlLT50ZXh0KCkpOwotICAgIH0K
LSAgICByZXR1cm4gZGVueUlmRW5mb3JjaW5nUG9saWN5KCk7CisgICAgaWYgKGNoZWNrU291cmNl
KG1fYmFzZVVSSS5nZXQoKSwgdXJsKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0
dXJuIG1fYmFzZVVSSS5nZXQoKTsKIH0KIAotYm9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJl
Y3RpdmVMaXN0OjphbGxvd1BsdWdpblR5cGUoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJp
bmcmIHR5cGVBdHRyaWJ1dGUsIGNvbnN0IFVSTCYgdXJsLCBSZXBvcnRpbmdTdGF0dXMgcmVwb3J0
aW5nU3RhdHVzKSBjb25zdAorY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlKiBD
b250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0Ojp2aW9sYXRlZERpcmVjdGl2ZUZvckNo
aWxkQ29udGV4dChjb25zdCBVUkwmIHVybCkgY29uc3QKIHsKLSAgICBpZiAoY2hlY2tNZWRpYVR5
cGUobV9wbHVnaW5UeXBlcy5nZXQoKSwgdHlwZSwgdHlwZUF0dHJpYnV0ZSkpCi0gICAgICAgIHJl
dHVybiB0cnVlOwotICAgIGlmIChyZXBvcnRpbmdTdGF0dXMgPT0gUmVwb3J0aW5nU3RhdHVzOjpT
ZW5kUmVwb3J0KSB7Ci0gICAgICAgIGJvb2wgdmlvbGF0ZXNEZWZhdWx0U3JjID0gZmFsc2U7Ci0g
ICAgICAgIFN0cmluZyBjb25zb2xlTWVzc2FnZSA9IGNvbnNvbGVNZXNzYWdlRm9yVmlvbGF0aW9u
KHBsdWdpblR5cGVzLCB1cmwsIHZpb2xhdGVzRGVmYXVsdFNyYywgIlJlZnVzZWQgdG8gbG9hZCIs
ICJpdHMgTUlNRSB0eXBlIik7Ci0gICAgICAgIHJlcG9ydFZpb2xhdGlvbihtX3BsdWdpblR5cGVz
LT50ZXh0KCksIHBsdWdpblR5cGVzLCBjb25zb2xlTWVzc2FnZSwgdXJsKTsKLSAgICB9Ci0gICAg
cmV0dXJuIGRlbnlJZkVuZm9yY2luZ1BvbGljeSgpOworICAgIENvbnRlbnRTZWN1cml0eVBvbGlj
eVNvdXJjZUxpc3REaXJlY3RpdmUqIG9wZXJhdGl2ZURpcmVjdGl2ZSA9IHRoaXMtPm9wZXJhdGl2
ZURpcmVjdGl2ZShtX2NoaWxkU3JjLmdldCgpKTsKKyAgICBpZiAoY2hlY2tTb3VyY2Uob3BlcmF0
aXZlRGlyZWN0aXZlLCB1cmwpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4g
b3BlcmF0aXZlRGlyZWN0aXZlOwogfQogCi1ib29sIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVj
dGl2ZUxpc3Q6OmFsbG93U2NyaXB0RnJvbVNvdXJjZShjb25zdCBVUkwmIHVybCwgUmVwb3J0aW5n
U3RhdHVzIHJlcG9ydGluZ1N0YXR1cykgY29uc3QKK2NvbnN0IENvbnRlbnRTZWN1cml0eVBvbGlj
eURpcmVjdGl2ZSogQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6dmlvbGF0ZWRE
aXJlY3RpdmVGb3JDb25uZWN0U291cmNlKGNvbnN0IFVSTCYgdXJsKSBjb25zdAogewotICAgIENv
bnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3REaXJlY3RpdmUqIG9wZXJhdGl2ZURpcmVjdGl2
ZSA9IHRoaXMtPm9wZXJhdGl2ZURpcmVjdGl2ZShtX3NjcmlwdFNyYy5nZXQoKSk7CisgICAgQ29u
dGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdERpcmVjdGl2ZSogb3BlcmF0aXZlRGlyZWN0aXZl
ID0gdGhpcy0+b3BlcmF0aXZlRGlyZWN0aXZlKG1fY29ubmVjdFNyYy5nZXQoKSk7CiAgICAgaWYg
KGNoZWNrU291cmNlKG9wZXJhdGl2ZURpcmVjdGl2ZSwgdXJsKSkKLSAgICAgICAgcmV0dXJuIHRy
dWU7Ci0gICAgaWYgKHJlcG9ydGluZ1N0YXR1cyA9PSBSZXBvcnRpbmdTdGF0dXM6OlNlbmRSZXBv
cnQpIHsKLSAgICAgICAgU3RyaW5nIGNvbnNvbGVNZXNzYWdlID0gY29uc29sZU1lc3NhZ2VGb3JW
aW9sYXRpb24oc2NyaXB0U3JjLCB1cmwsIG9wZXJhdGl2ZURpcmVjdGl2ZSA9PSBtX2RlZmF1bHRT
cmMuZ2V0KCksICJSZWZ1c2VkIHRvIGxvYWQiKTsKLSAgICAgICAgcmVwb3J0VmlvbGF0aW9uKG9w
ZXJhdGl2ZURpcmVjdGl2ZS0+dGV4dCgpLCBzY3JpcHRTcmMsIGNvbnNvbGVNZXNzYWdlLCB1cmwp
OwotICAgIH0KLSAgICByZXR1cm4gZGVueUlmRW5mb3JjaW5nUG9saWN5KCk7CisgICAgICAgIHJl
dHVybiBudWxscHRyOworICAgIHJldHVybiBvcGVyYXRpdmVEaXJlY3RpdmU7CiB9CiAKLWJvb2wg
Q29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6YWxsb3dPYmplY3RGcm9tU291cmNl
KGNvbnN0IFVSTCYgdXJsLCBSZXBvcnRpbmdTdGF0dXMgcmVwb3J0aW5nU3RhdHVzKSBjb25zdAor
Y29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlKiBDb250ZW50U2VjdXJpdHlQb2xp
Y3lEaXJlY3RpdmVMaXN0Ojp2aW9sYXRlZERpcmVjdGl2ZUZvckZvbnQoY29uc3QgVVJMJiB1cmwp
IGNvbnN0CiB7Ci0gICAgaWYgKHVybC5pc0JsYW5rVVJMKCkpCi0gICAgICAgIHJldHVybiB0cnVl
OwotICAgIENvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3REaXJlY3RpdmUqIG9wZXJhdGl2
ZURpcmVjdGl2ZSA9IHRoaXMtPm9wZXJhdGl2ZURpcmVjdGl2ZShtX29iamVjdFNyYy5nZXQoKSk7
CisgICAgQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdERpcmVjdGl2ZSogb3BlcmF0aXZl
RGlyZWN0aXZlID0gdGhpcy0+b3BlcmF0aXZlRGlyZWN0aXZlKG1fZm9udFNyYy5nZXQoKSk7CiAg
ICAgaWYgKGNoZWNrU291cmNlKG9wZXJhdGl2ZURpcmVjdGl2ZSwgdXJsKSkKLSAgICAgICAgcmV0
dXJuIHRydWU7Ci0gICAgaWYgKHJlcG9ydGluZ1N0YXR1cyA9PSBSZXBvcnRpbmdTdGF0dXM6OlNl
bmRSZXBvcnQpIHsKLSAgICAgICAgU3RyaW5nIGNvbnNvbGVNZXNzYWdlID0gY29uc29sZU1lc3Nh
Z2VGb3JWaW9sYXRpb24ob2JqZWN0U3JjLCB1cmwsIG9wZXJhdGl2ZURpcmVjdGl2ZSA9PSBtX2Rl
ZmF1bHRTcmMuZ2V0KCksICJSZWZ1c2VkIHRvIGxvYWQiKTsKLSAgICAgICAgcmVwb3J0VmlvbGF0
aW9uKG9wZXJhdGl2ZURpcmVjdGl2ZS0+dGV4dCgpLCBvYmplY3RTcmMsIGNvbnNvbGVNZXNzYWdl
LCB1cmwpOwotICAgIH0KLSAgICByZXR1cm4gZGVueUlmRW5mb3JjaW5nUG9saWN5KCk7CisgICAg
ICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBvcGVyYXRpdmVEaXJlY3RpdmU7CiB9CiAK
LWJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6YWxsb3dDaGlsZENvbnRl
eHRGcm9tU291cmNlKGNvbnN0IFVSTCYgdXJsLCBSZXBvcnRpbmdTdGF0dXMgcmVwb3J0aW5nU3Rh
dHVzKSBjb25zdAorY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlKiBDb250ZW50
U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0Ojp2aW9sYXRlZERpcmVjdGl2ZUZvckZvcm1BY3Rp
b24oY29uc3QgVVJMJiB1cmwpIGNvbnN0CiB7Ci0gICAgQ29udGVudFNlY3VyaXR5UG9saWN5U291
cmNlTGlzdERpcmVjdGl2ZSogb3BlcmF0aXZlRGlyZWN0aXZlID0gdGhpcy0+b3BlcmF0aXZlRGly
ZWN0aXZlKG1fY2hpbGRTcmMuZ2V0KCkpOwotICAgIGlmIChjaGVja1NvdXJjZShvcGVyYXRpdmVE
aXJlY3RpdmUsIHVybCkpCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIGlmIChyZXBvcnRpbmdT
dGF0dXMgPT0gUmVwb3J0aW5nU3RhdHVzOjpTZW5kUmVwb3J0KSB7Ci0gICAgICAgIFN0cmluZyBj
b25zb2xlTWVzc2FnZSA9IGNvbnNvbGVNZXNzYWdlRm9yVmlvbGF0aW9uKGNoaWxkU3JjLCB1cmws
IG9wZXJhdGl2ZURpcmVjdGl2ZSA9PSBtX2RlZmF1bHRTcmMuZ2V0KCksICJSZWZ1c2VkIHRvIGxv
YWQiKTsKLSAgICAgICAgcmVwb3J0VmlvbGF0aW9uKG9wZXJhdGl2ZURpcmVjdGl2ZS0+dGV4dCgp
LCBjaGlsZFNyYywgY29uc29sZU1lc3NhZ2UsIHVybCk7Ci0gICAgfQotICAgIHJldHVybiBkZW55
SWZFbmZvcmNpbmdQb2xpY3koKTsKKyAgICBpZiAoY2hlY2tTb3VyY2UobV9mb3JtQWN0aW9uLmdl
dCgpLCB1cmwpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gbV9mb3JtQWN0
aW9uLmdldCgpOwogfQogCi1ib29sIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6
OmFsbG93Q2hpbGRGcmFtZUZyb21Tb3VyY2UoY29uc3QgVVJMJiB1cmwsIFJlcG9ydGluZ1N0YXR1
cyByZXBvcnRpbmdTdGF0dXMpIGNvbnN0Citjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJl
Y3RpdmUqIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OnZpb2xhdGVkRGlyZWN0
aXZlRm9yRnJhbWUoY29uc3QgVVJMJiB1cmwpIGNvbnN0CiB7CiAgICAgaWYgKHVybC5pc0JsYW5r
VVJMKCkpCi0gICAgICAgIHJldHVybiB0cnVlOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAog
ICAgIC8vIFdlIG11c3QgZW5mb3JjZSB0aGUgZnJhbWUtc3JjIGRpcmVjdGl2ZSAoaWYgc3BlY2lm
aWVkKSBiZWZvcmUgZW5mb3JjaW5nIHRoZSBjaGlsZC1zcmMgZGlyZWN0aXZlIGZvciBhIG5lc3Rl
ZCBicm93c2luZwogICAgIC8vIGNvbnRleHQgYnkgPGh0dHBzOi8vdzNjLmdpdGh1Yi5pby93ZWJh
cHBzZWMtY3NwLzIvI2RpcmVjdGl2ZS1jaGlsZC1zcmMtbmVzdGVkPiAoMjkgQXVndXN0IDIwMTUp
LgogICAgIENvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3REaXJlY3RpdmUqIG9wZXJhdGl2
ZURpcmVjdGl2ZSA9IHRoaXMtPm9wZXJhdGl2ZURpcmVjdGl2ZShtX2ZyYW1lU3JjID8gbV9mcmFt
ZVNyYy5nZXQoKSA6IG1fY2hpbGRTcmMuZ2V0KCkpOwogICAgIGlmIChjaGVja1NvdXJjZShvcGVy
YXRpdmVEaXJlY3RpdmUsIHVybCkpCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIGlmIChyZXBv
cnRpbmdTdGF0dXMgPT0gUmVwb3J0aW5nU3RhdHVzOjpTZW5kUmVwb3J0KSB7Ci0gICAgICAgIFN0
cmluZyBjb25zb2xlTWVzc2FnZSA9IGNvbnNvbGVNZXNzYWdlRm9yVmlvbGF0aW9uKGZyYW1lU3Jj
LCB1cmwsIG9wZXJhdGl2ZURpcmVjdGl2ZSA9PSBtX2RlZmF1bHRTcmMuZ2V0KCksICJSZWZ1c2Vk
IHRvIGxvYWQiKTsKLSAgICAgICAgcmVwb3J0VmlvbGF0aW9uKG9wZXJhdGl2ZURpcmVjdGl2ZS0+
dGV4dCgpLCBmcmFtZVNyYywgY29uc29sZU1lc3NhZ2UsIHVybCk7Ci0gICAgfQotICAgIHJldHVy
biBkZW55SWZFbmZvcmNpbmdQb2xpY3koKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
cmV0dXJuIG9wZXJhdGl2ZURpcmVjdGl2ZTsKIH0KIAotYm9vbCBDb250ZW50U2VjdXJpdHlQb2xp
Y3lEaXJlY3RpdmVMaXN0OjphbGxvd0ltYWdlRnJvbVNvdXJjZShjb25zdCBVUkwmIHVybCwgUmVw
b3J0aW5nU3RhdHVzIHJlcG9ydGluZ1N0YXR1cykgY29uc3QKK2NvbnN0IENvbnRlbnRTZWN1cml0
eVBvbGljeURpcmVjdGl2ZSogQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6dmlv
bGF0ZWREaXJlY3RpdmVGb3JGcmFtZUFuY2VzdG9yKGNvbnN0IEZyYW1lJiBmcmFtZSkgY29uc3QK
IHsKLSAgICBDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0RGlyZWN0aXZlKiBvcGVyYXRp
dmVEaXJlY3RpdmUgPSB0aGlzLT5vcGVyYXRpdmVEaXJlY3RpdmUobV9pbWdTcmMuZ2V0KCkpOwot
ICAgIGlmIChjaGVja1NvdXJjZShvcGVyYXRpdmVEaXJlY3RpdmUsIHVybCkpCi0gICAgICAgIHJl
dHVybiB0cnVlOwotICAgIGlmIChyZXBvcnRpbmdTdGF0dXMgPT0gUmVwb3J0aW5nU3RhdHVzOjpT
ZW5kUmVwb3J0KSB7Ci0gICAgICAgIFN0cmluZyBjb25zb2xlTWVzc2FnZSA9IGNvbnNvbGVNZXNz
YWdlRm9yVmlvbGF0aW9uKGltZ1NyYywgdXJsLCBvcGVyYXRpdmVEaXJlY3RpdmUgPT0gbV9kZWZh
dWx0U3JjLmdldCgpLCAiUmVmdXNlZCB0byBsb2FkIik7Ci0gICAgICAgIHJlcG9ydFZpb2xhdGlv
bihvcGVyYXRpdmVEaXJlY3RpdmUtPnRleHQoKSwgaW1nU3JjLCBjb25zb2xlTWVzc2FnZSwgdXJs
KTsKLSAgICB9Ci0gICAgcmV0dXJuIGRlbnlJZkVuZm9yY2luZ1BvbGljeSgpOwotfQotCi1ib29s
IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OmFsbG93U3R5bGVGcm9tU291cmNl
KGNvbnN0IFVSTCYgdXJsLCBSZXBvcnRpbmdTdGF0dXMgcmVwb3J0aW5nU3RhdHVzKSBjb25zdAot
ewotICAgIENvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3REaXJlY3RpdmUqIG9wZXJhdGl2
ZURpcmVjdGl2ZSA9IHRoaXMtPm9wZXJhdGl2ZURpcmVjdGl2ZShtX3N0eWxlU3JjLmdldCgpKTsK
LSAgICBpZiAoY2hlY2tTb3VyY2Uob3BlcmF0aXZlRGlyZWN0aXZlLCB1cmwpKQotICAgICAgICBy
ZXR1cm4gdHJ1ZTsKLSAgICBpZiAocmVwb3J0aW5nU3RhdHVzID09IFJlcG9ydGluZ1N0YXR1czo6
U2VuZFJlcG9ydCkgewotICAgICAgICBTdHJpbmcgY29uc29sZU1lc3NhZ2UgPSBjb25zb2xlTWVz
c2FnZUZvclZpb2xhdGlvbihzdHlsZVNyYywgdXJsLCBvcGVyYXRpdmVEaXJlY3RpdmUgPT0gbV9k
ZWZhdWx0U3JjLmdldCgpLCAiUmVmdXNlZCB0byBsb2FkIik7Ci0gICAgICAgIHJlcG9ydFZpb2xh
dGlvbihvcGVyYXRpdmVEaXJlY3RpdmUtPnRleHQoKSwgc3R5bGVTcmMsIGNvbnNvbGVNZXNzYWdl
LCB1cmwpOwotICAgIH0KLSAgICByZXR1cm4gZGVueUlmRW5mb3JjaW5nUG9saWN5KCk7CisgICAg
aWYgKGNoZWNrRnJhbWVBbmNlc3RvcnMobV9mcmFtZUFuY2VzdG9ycy5nZXQoKSwgZnJhbWUpKQor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gbV9mcmFtZUFuY2VzdG9ycy5nZXQo
KTsKIH0KIAotYm9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0OjphbGxvd0Zv
bnRGcm9tU291cmNlKGNvbnN0IFVSTCYgdXJsLCBSZXBvcnRpbmdTdGF0dXMgcmVwb3J0aW5nU3Rh
dHVzKSBjb25zdAorY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlKiBDb250ZW50
U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0Ojp2aW9sYXRlZERpcmVjdGl2ZUZvckltYWdlKGNv
bnN0IFVSTCYgdXJsKSBjb25zdAogewotICAgIENvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxp
c3REaXJlY3RpdmUqIG9wZXJhdGl2ZURpcmVjdGl2ZSA9IHRoaXMtPm9wZXJhdGl2ZURpcmVjdGl2
ZShtX2ZvbnRTcmMuZ2V0KCkpOworICAgIENvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3RE
aXJlY3RpdmUqIG9wZXJhdGl2ZURpcmVjdGl2ZSA9IHRoaXMtPm9wZXJhdGl2ZURpcmVjdGl2ZSht
X2ltZ1NyYy5nZXQoKSk7CiAgICAgaWYgKGNoZWNrU291cmNlKG9wZXJhdGl2ZURpcmVjdGl2ZSwg
dXJsKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgaWYgKHJlcG9ydGluZ1N0YXR1cyA9PSBS
ZXBvcnRpbmdTdGF0dXM6OlNlbmRSZXBvcnQpIHsKLSAgICAgICAgU3RyaW5nIGNvbnNvbGVNZXNz
YWdlID0gY29uc29sZU1lc3NhZ2VGb3JWaW9sYXRpb24oZm9udFNyYywgdXJsLCBvcGVyYXRpdmVE
aXJlY3RpdmUgPT0gbV9kZWZhdWx0U3JjLmdldCgpLCAiUmVmdXNlZCB0byBsb2FkIik7Ci0gICAg
ICAgIHJlcG9ydFZpb2xhdGlvbihvcGVyYXRpdmVEaXJlY3RpdmUtPnRleHQoKSwgZm9udFNyYywg
Y29uc29sZU1lc3NhZ2UsIHVybCk7Ci0gICAgfQotICAgIHJldHVybiBkZW55SWZFbmZvcmNpbmdQ
b2xpY3koKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIG9wZXJhdGl2ZURp
cmVjdGl2ZTsKIH0KIAotYm9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0Ojph
bGxvd01lZGlhRnJvbVNvdXJjZShjb25zdCBVUkwmIHVybCwgUmVwb3J0aW5nU3RhdHVzIHJlcG9y
dGluZ1N0YXR1cykgY29uc3QKK2NvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZSog
Q29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6dmlvbGF0ZWREaXJlY3RpdmVGb3JN
ZWRpYShjb25zdCBVUkwmIHVybCkgY29uc3QKIHsKICAgICBDb250ZW50U2VjdXJpdHlQb2xpY3lT
b3VyY2VMaXN0RGlyZWN0aXZlKiBvcGVyYXRpdmVEaXJlY3RpdmUgPSB0aGlzLT5vcGVyYXRpdmVE
aXJlY3RpdmUobV9tZWRpYVNyYy5nZXQoKSk7CiAgICAgaWYgKGNoZWNrU291cmNlKG9wZXJhdGl2
ZURpcmVjdGl2ZSwgdXJsKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgaWYgKHJlcG9ydGlu
Z1N0YXR1cyA9PSBSZXBvcnRpbmdTdGF0dXM6OlNlbmRSZXBvcnQpIHsKLSAgICAgICAgU3RyaW5n
IGNvbnNvbGVNZXNzYWdlID0gY29uc29sZU1lc3NhZ2VGb3JWaW9sYXRpb24obWVkaWFTcmMsIHVy
bCwgb3BlcmF0aXZlRGlyZWN0aXZlID09IG1fZGVmYXVsdFNyYy5nZXQoKSwgIlJlZnVzZWQgdG8g
bG9hZCIpOwotICAgICAgICByZXBvcnRWaW9sYXRpb24ob3BlcmF0aXZlRGlyZWN0aXZlLT50ZXh0
KCksIG1lZGlhU3JjLCBjb25zb2xlTWVzc2FnZSwgdXJsKTsKLSAgICB9Ci0gICAgcmV0dXJuIGRl
bnlJZkVuZm9yY2luZ1BvbGljeSgpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1
cm4gb3BlcmF0aXZlRGlyZWN0aXZlOwogfQogCi1ib29sIENvbnRlbnRTZWN1cml0eVBvbGljeURp
cmVjdGl2ZUxpc3Q6OmFsbG93Q29ubmVjdFRvU291cmNlKGNvbnN0IFVSTCYgdXJsLCBSZXBvcnRp
bmdTdGF0dXMgcmVwb3J0aW5nU3RhdHVzKSBjb25zdAorY29uc3QgQ29udGVudFNlY3VyaXR5UG9s
aWN5RGlyZWN0aXZlKiBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0Ojp2aW9sYXRl
ZERpcmVjdGl2ZUZvck9iamVjdFNvdXJjZShjb25zdCBVUkwmIHVybCkgY29uc3QKIHsKLSAgICBD
b250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0RGlyZWN0aXZlKiBvcGVyYXRpdmVEaXJlY3Rp
dmUgPSB0aGlzLT5vcGVyYXRpdmVEaXJlY3RpdmUobV9jb25uZWN0U3JjLmdldCgpKTsKKyAgICBp
ZiAodXJsLmlzQmxhbmtVUkwoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgQ29udGVu
dFNlY3VyaXR5UG9saWN5U291cmNlTGlzdERpcmVjdGl2ZSogb3BlcmF0aXZlRGlyZWN0aXZlID0g
dGhpcy0+b3BlcmF0aXZlRGlyZWN0aXZlKG1fb2JqZWN0U3JjLmdldCgpKTsKICAgICBpZiAoY2hl
Y2tTb3VyY2Uob3BlcmF0aXZlRGlyZWN0aXZlLCB1cmwpKQotICAgICAgICByZXR1cm4gdHJ1ZTsK
LSAgICBpZiAocmVwb3J0aW5nU3RhdHVzID09IFJlcG9ydGluZ1N0YXR1czo6U2VuZFJlcG9ydCkg
ewotICAgICAgICBTdHJpbmcgY29uc29sZU1lc3NhZ2UgPSBjb25zb2xlTWVzc2FnZUZvclZpb2xh
dGlvbihjb25uZWN0U3JjLCB1cmwsIG9wZXJhdGl2ZURpcmVjdGl2ZSA9PSBtX2RlZmF1bHRTcmMu
Z2V0KCksICJSZWZ1c2VkIHRvIGNvbm5lY3QgdG8iKTsKLSAgICAgICAgcmVwb3J0VmlvbGF0aW9u
KG9wZXJhdGl2ZURpcmVjdGl2ZS0+dGV4dCgpLCBjb25uZWN0U3JjLCBjb25zb2xlTWVzc2FnZSwg
dXJsKTsKLSAgICB9Ci0gICAgcmV0dXJuIGRlbnlJZkVuZm9yY2luZ1BvbGljeSgpOworICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gb3BlcmF0aXZlRGlyZWN0aXZlOwogfQogCi1i
b29sIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OmFsbG93Rm9ybUFjdGlvbihj
b25zdCBVUkwmIHVybCwgUmVwb3J0aW5nU3RhdHVzIHJlcG9ydGluZ1N0YXR1cykgY29uc3QKK2Nv
bnN0IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZSogQ29udGVudFNlY3VyaXR5UG9saWN5
RGlyZWN0aXZlTGlzdDo6dmlvbGF0ZWREaXJlY3RpdmVGb3JQbHVnaW5UeXBlKGNvbnN0IFN0cmlu
ZyYgdHlwZSwgY29uc3QgU3RyaW5nJiB0eXBlQXR0cmlidXRlKSBjb25zdAogewotICAgIGlmIChj
aGVja1NvdXJjZShtX2Zvcm1BY3Rpb24uZ2V0KCksIHVybCkpCi0gICAgICAgIHJldHVybiB0cnVl
OwotICAgIGlmIChyZXBvcnRpbmdTdGF0dXMgPT0gUmVwb3J0aW5nU3RhdHVzOjpTZW5kUmVwb3J0
KSB7Ci0gICAgICAgIGJvb2wgdmlvbGF0ZXNEZWZhdWx0U3JjID0gZmFsc2U7Ci0gICAgICAgIFN0
cmluZyBjb25zb2xlTWVzc2FnZSA9IGNvbnNvbGVNZXNzYWdlRm9yVmlvbGF0aW9uKGZvcm1BY3Rp
b24sIHVybCwgdmlvbGF0ZXNEZWZhdWx0U3JjLCAiUmVmdXNlZCB0byBsb2FkIik7Ci0gICAgICAg
IHJlcG9ydFZpb2xhdGlvbihtX2Zvcm1BY3Rpb24tPnRleHQoKSwgZm9ybUFjdGlvbiwgY29uc29s
ZU1lc3NhZ2UsIHVybCk7Ci0gICAgfQotICAgIHJldHVybiBkZW55SWZFbmZvcmNpbmdQb2xpY3ko
KTsKKyAgICBpZiAoY2hlY2tNZWRpYVR5cGUobV9wbHVnaW5UeXBlcy5nZXQoKSwgdHlwZSwgdHlw
ZUF0dHJpYnV0ZSkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBtX3BsdWdp
blR5cGVzLmdldCgpOwogfQogCi1ib29sIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxp
c3Q6OmFsbG93QmFzZVVSSShjb25zdCBVUkwmIHVybCwgUmVwb3J0aW5nU3RhdHVzIHJlcG9ydGlu
Z1N0YXR1cykgY29uc3QKK2NvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZSogQ29u
dGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6dmlvbGF0ZWREaXJlY3RpdmVGb3JTY3Jp
cHQoY29uc3QgVVJMJiB1cmwpIGNvbnN0CiB7Ci0gICAgaWYgKGNoZWNrU291cmNlKG1fYmFzZVVS
SS5nZXQoKSwgdXJsKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgaWYgKHJlcG9ydGluZ1N0
YXR1cyA9PSBSZXBvcnRpbmdTdGF0dXM6OlNlbmRSZXBvcnQpIHsKLSAgICAgICAgYm9vbCB2aW9s
YXRlc0RlZmF1bHRTcmMgPSBmYWxzZTsKLSAgICAgICAgU3RyaW5nIGNvbnNvbGVNZXNzYWdlID0g
Y29uc29sZU1lc3NhZ2VGb3JWaW9sYXRpb24oYmFzZVVSSSwgdXJsLCB2aW9sYXRlc0RlZmF1bHRT
cmMsICJSZWZ1c2VkIHRvIGNoYW5nZSB0aGUgZG9jdW1lbnQgYmFzZSBVUkwgdG8iKTsKLSAgICAg
ICAgcmVwb3J0VmlvbGF0aW9uKG1fYmFzZVVSSS0+dGV4dCgpLCBiYXNlVVJJLCBjb25zb2xlTWVz
c2FnZSwgdXJsKTsKLSAgICB9Ci0gICAgcmV0dXJuIGRlbnlJZkVuZm9yY2luZ1BvbGljeSgpOwor
ICAgIENvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3REaXJlY3RpdmUqIG9wZXJhdGl2ZURp
cmVjdGl2ZSA9IHRoaXMtPm9wZXJhdGl2ZURpcmVjdGl2ZShtX3NjcmlwdFNyYy5nZXQoKSk7Cisg
ICAgaWYgKGNoZWNrU291cmNlKG9wZXJhdGl2ZURpcmVjdGl2ZSwgdXJsKSkKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIG9wZXJhdGl2ZURpcmVjdGl2ZTsKIH0KIAotYm9vbCBD
b250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0OjphbGxvd0ZyYW1lQW5jZXN0b3JzKGNv
bnN0IEZyYW1lJiBmcmFtZSwgY29uc3QgVVJMJiB1cmwsIFJlcG9ydGluZ1N0YXR1cyByZXBvcnRp
bmdTdGF0dXMpIGNvbnN0Citjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmUqIENv
bnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OnZpb2xhdGVkRGlyZWN0aXZlRm9yU3R5
bGUoY29uc3QgVVJMJiB1cmwpIGNvbnN0CiB7Ci0gICAgaWYgKGNoZWNrRnJhbWVBbmNlc3RvcnMo
bV9mcmFtZUFuY2VzdG9ycy5nZXQoKSwgZnJhbWUpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAg
ICBpZiAocmVwb3J0aW5nU3RhdHVzID09IFJlcG9ydGluZ1N0YXR1czo6U2VuZFJlcG9ydCkgewot
ICAgICAgICBib29sIHZpb2xhdGVzRGVmYXVsdFNyYyA9IGZhbHNlOwotICAgICAgICBTdHJpbmcg
Y29uc29sZU1lc3NhZ2UgPSBjb25zb2xlTWVzc2FnZUZvclZpb2xhdGlvbihmcmFtZUFuY2VzdG9y
cywgdXJsLCB2aW9sYXRlc0RlZmF1bHRTcmMsICJSZWZ1c2VkIHRvIGxvYWQiKTsKLSAgICAgICAg
cmVwb3J0VmlvbGF0aW9uKG1fZnJhbWVBbmNlc3RvcnMtPnRleHQoKSwgZnJhbWVBbmNlc3RvcnMs
IGNvbnNvbGVNZXNzYWdlLCB1cmwpOwotICAgIH0KLSAgICByZXR1cm4gZGVueUlmRW5mb3JjaW5n
UG9saWN5KCk7CisgICAgQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdERpcmVjdGl2ZSog
b3BlcmF0aXZlRGlyZWN0aXZlID0gdGhpcy0+b3BlcmF0aXZlRGlyZWN0aXZlKG1fc3R5bGVTcmMu
Z2V0KCkpOworICAgIGlmIChjaGVja1NvdXJjZShvcGVyYXRpdmVEaXJlY3RpdmUsIHVybCkpCisg
ICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBvcGVyYXRpdmVEaXJlY3RpdmU7CiB9
CiAKIC8vIHBvbGljeSAgICAgICAgICAgID0gZGlyZWN0aXZlLWxpc3QKQEAgLTQ4OCw4ICszMTIs
OSBAQCB2b2lkIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OnBhcnNlKGNvbnN0
IFN0cmluZyYgcG9saWN5LCBDb250ZW50U2VjdQogICAgICAgICAgICAgQVNTRVJUKCFuYW1lLmlz
RW1wdHkoKSk7CiAgICAgICAgICAgICBzd2l0Y2ggKHBvbGljeUZyb20pIHsKICAgICAgICAgICAg
IGNhc2UgQ29udGVudFNlY3VyaXR5UG9saWN5OjpQb2xpY3lGcm9tOjpIVFRQRXF1aXZNZXRhOgot
ICAgICAgICAgICAgICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShuYW1lLCBz
YW5kYm94KSB8fCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShuYW1lLCByZXBvcnRVUkkp
Ci0gICAgICAgICAgICAgICAgICAgIHx8IGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG5h
bWUsIGZyYW1lQW5jZXN0b3JzKSkgeworICAgICAgICAgICAgICAgIGlmIChlcXVhbElnbm9yaW5n
QVNDSUlDYXNlKG5hbWUsIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzOjpzYW5k
Ym94KQorICAgICAgICAgICAgICAgICAgICB8fCBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKG5hbWUs
IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzOjpyZXBvcnRVUkkpCisgICAgICAg
ICAgICAgICAgICAgIHx8IGVxdWFsSWdub3JpbmdBU0NJSUNhc2UobmFtZSwgQ29udGVudFNlY3Vy
aXR5UG9saWN5RGlyZWN0aXZlTmFtZXM6OmZyYW1lQW5jZXN0b3JzKSkgewogICAgICAgICAgICAg
ICAgICAgICBtX3BvbGljeS5yZXBvcnRJbnZhbGlkRGlyZWN0aXZlSW5IVFRQRXF1aXZNZXRhKG5h
bWUpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CkBAIC01
OTAsNyArNDE1LDcgQEAgdm9pZCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0Ojpz
ZXRDU1BEaXJlY3RpdmUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb24KICAgICAgICAgbV9wb2xpY3ku
cmVwb3J0RHVwbGljYXRlRGlyZWN0aXZlKG5hbWUpOwogICAgICAgICByZXR1cm47CiAgICAgfQot
ICAgIGRpcmVjdGl2ZSA9IHN0ZDo6bWFrZV91bmlxdWU8Q1NQRGlyZWN0aXZlVHlwZT4obmFtZSwg
dmFsdWUsIG1fcG9saWN5KTsKKyAgICBkaXJlY3RpdmUgPSBzdGQ6Om1ha2VfdW5pcXVlPENTUERp
cmVjdGl2ZVR5cGU+KCp0aGlzLCBuYW1lLCB2YWx1ZSk7CiB9CiAKIHZvaWQgQ29udGVudFNlY3Vy
aXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6YXBwbHlTYW5kYm94UG9saWN5KGNvbnN0IFN0cmluZyYg
bmFtZSwgY29uc3QgU3RyaW5nJiBzYW5kYm94UG9saWN5KQpAQCAtNjYwLDUxICs0ODUsNTEgQEAg
dm9pZCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0OjphZGREaXJlY3RpdmUoY29u
c3QgU3RyaW5nJiBuYW1lLCBjb25zdAogewogICAgIEFTU0VSVCghbmFtZS5pc0VtcHR5KCkpOwog
Ci0gICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG5hbWUsIGRlZmF1bHRTcmMp
KSB7CisgICAgaWYgKGVxdWFsSWdub3JpbmdBU0NJSUNhc2UobmFtZSwgQ29udGVudFNlY3VyaXR5
UG9saWN5RGlyZWN0aXZlTmFtZXM6OmRlZmF1bHRTcmMpKSB7CiAgICAgICAgIHNldENTUERpcmVj
dGl2ZTxDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0RGlyZWN0aXZlPihuYW1lLCB2YWx1
ZSwgbV9kZWZhdWx0U3JjKTsKICAgICAgICAgbV9wb2xpY3kuYWRkSGFzaEFsZ29yaXRobXNGb3JJ
bmxpbmVTY3JpcHRzKG1fZGVmYXVsdFNyYy0+aGFzaEFsZ29yaXRobXNVc2VkKCkpOwogICAgICAg
ICBtX3BvbGljeS5hZGRIYXNoQWxnb3JpdGhtc0ZvcklubGluZVN0eWxlc2hlZXRzKG1fZGVmYXVs
dFNyYy0+aGFzaEFsZ29yaXRobXNVc2VkKCkpOwotICAgIH0gZWxzZSBpZiAoZXF1YWxMZXR0ZXJz
SWdub3JpbmdBU0NJSUNhc2UobmFtZSwgc2NyaXB0U3JjKSkgeworICAgIH0gZWxzZSBpZiAoZXF1
YWxJZ25vcmluZ0FTQ0lJQ2FzZShuYW1lLCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVO
YW1lczo6c2NyaXB0U3JjKSkgewogICAgICAgICBzZXRDU1BEaXJlY3RpdmU8Q29udGVudFNlY3Vy
aXR5UG9saWN5U291cmNlTGlzdERpcmVjdGl2ZT4obmFtZSwgdmFsdWUsIG1fc2NyaXB0U3JjKTsK
ICAgICAgICAgbV9wb2xpY3kuYWRkSGFzaEFsZ29yaXRobXNGb3JJbmxpbmVTY3JpcHRzKG1fc2Ny
aXB0U3JjLT5oYXNoQWxnb3JpdGhtc1VzZWQoKSk7Ci0gICAgfSBlbHNlIGlmIChlcXVhbExldHRl
cnNJZ25vcmluZ0FTQ0lJQ2FzZShuYW1lLCBzdHlsZVNyYykpIHsKKyAgICB9IGVsc2UgaWYgKGVx
dWFsSWdub3JpbmdBU0NJSUNhc2UobmFtZSwgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZl
TmFtZXM6OnN0eWxlU3JjKSkgewogICAgICAgICBzZXRDU1BEaXJlY3RpdmU8Q29udGVudFNlY3Vy
aXR5UG9saWN5U291cmNlTGlzdERpcmVjdGl2ZT4obmFtZSwgdmFsdWUsIG1fc3R5bGVTcmMpOwog
ICAgICAgICBtX3BvbGljeS5hZGRIYXNoQWxnb3JpdGhtc0ZvcklubGluZVN0eWxlc2hlZXRzKG1f
c3R5bGVTcmMtPmhhc2hBbGdvcml0aG1zVXNlZCgpKTsKLSAgICB9IGVsc2UgaWYgKGVxdWFsTGV0
dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG5hbWUsIG9iamVjdFNyYykpCisgICAgfSBlbHNlIGlmIChl
cXVhbElnbm9yaW5nQVNDSUlDYXNlKG5hbWUsIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2
ZU5hbWVzOjpvYmplY3RTcmMpKQogICAgICAgICBzZXRDU1BEaXJlY3RpdmU8Q29udGVudFNlY3Vy
aXR5UG9saWN5U291cmNlTGlzdERpcmVjdGl2ZT4obmFtZSwgdmFsdWUsIG1fb2JqZWN0U3JjKTsK
LSAgICBlbHNlIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShuYW1lLCBmcmFtZVNy
YykpIHsKKyAgICBlbHNlIGlmIChlcXVhbElnbm9yaW5nQVNDSUlDYXNlKG5hbWUsIENvbnRlbnRT
ZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzOjpmcmFtZVNyYykpIHsKICAgICAgICAgLy8gRklY
TUU6IExvZyB0byBjb25zb2xlICJUaGUgZnJhbWUtc3JjIGRpcmVjdGl2ZSBpcyBkZXByZWNhdGVk
LiBVc2UgdGhlIGNoaWxkLXNyYyBkaXJlY3RpdmUgaW5zdGVhZC4iCiAgICAgICAgIC8vIFNlZSA8
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NTc3Mz4uCiAgICAgICAg
IHNldENTUERpcmVjdGl2ZTxDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0RGlyZWN0aXZl
PihuYW1lLCB2YWx1ZSwgbV9mcmFtZVNyYyk7Ci0gICAgfSBlbHNlIGlmIChlcXVhbExldHRlcnNJ
Z25vcmluZ0FTQ0lJQ2FzZShuYW1lLCBpbWdTcmMpKQorICAgIH0gZWxzZSBpZiAoZXF1YWxJZ25v
cmluZ0FTQ0lJQ2FzZShuYW1lLCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lczo6
aW1nU3JjKSkKICAgICAgICAgc2V0Q1NQRGlyZWN0aXZlPENvbnRlbnRTZWN1cml0eVBvbGljeVNv
dXJjZUxpc3REaXJlY3RpdmU+KG5hbWUsIHZhbHVlLCBtX2ltZ1NyYyk7Ci0gICAgZWxzZSBpZiAo
ZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobmFtZSwgZm9udFNyYykpCisgICAgZWxzZSBp
ZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShuYW1lLCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJl
Y3RpdmVOYW1lczo6Zm9udFNyYykpCiAgICAgICAgIHNldENTUERpcmVjdGl2ZTxDb250ZW50U2Vj
dXJpdHlQb2xpY3lTb3VyY2VMaXN0RGlyZWN0aXZlPihuYW1lLCB2YWx1ZSwgbV9mb250U3JjKTsK
LSAgICBlbHNlIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShuYW1lLCBtZWRpYVNy
YykpCisgICAgZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShuYW1lLCBDb250ZW50U2Vj
dXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lczo6bWVkaWFTcmMpKQogICAgICAgICBzZXRDU1BEaXJl
Y3RpdmU8Q29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdERpcmVjdGl2ZT4obmFtZSwgdmFs
dWUsIG1fbWVkaWFTcmMpOwotICAgIGVsc2UgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlD
YXNlKG5hbWUsIGNvbm5lY3RTcmMpKQorICAgIGVsc2UgaWYgKGVxdWFsSWdub3JpbmdBU0NJSUNh
c2UobmFtZSwgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXM6OmNvbm5lY3RTcmMp
KQogICAgICAgICBzZXRDU1BEaXJlY3RpdmU8Q29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlz
dERpcmVjdGl2ZT4obmFtZSwgdmFsdWUsIG1fY29ubmVjdFNyYyk7Ci0gICAgZWxzZSBpZiAoZXF1
YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobmFtZSwgY2hpbGRTcmMpKQorICAgIGVsc2UgaWYg
KGVxdWFsSWdub3JpbmdBU0NJSUNhc2UobmFtZSwgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0
aXZlTmFtZXM6OmNoaWxkU3JjKSkKICAgICAgICAgc2V0Q1NQRGlyZWN0aXZlPENvbnRlbnRTZWN1
cml0eVBvbGljeVNvdXJjZUxpc3REaXJlY3RpdmU+KG5hbWUsIHZhbHVlLCBtX2NoaWxkU3JjKTsK
LSAgICBlbHNlIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShuYW1lLCBmb3JtQWN0
aW9uKSkKKyAgICBlbHNlIGlmIChlcXVhbElnbm9yaW5nQVNDSUlDYXNlKG5hbWUsIENvbnRlbnRT
ZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzOjpmb3JtQWN0aW9uKSkKICAgICAgICAgc2V0Q1NQ
RGlyZWN0aXZlPENvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3REaXJlY3RpdmU+KG5hbWUs
IHZhbHVlLCBtX2Zvcm1BY3Rpb24pOwotICAgIGVsc2UgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5n
QVNDSUlDYXNlKG5hbWUsIGJhc2VVUkkpKQorICAgIGVsc2UgaWYgKGVxdWFsSWdub3JpbmdBU0NJ
SUNhc2UobmFtZSwgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXM6OmJhc2VVUkkp
KQogICAgICAgICBzZXRDU1BEaXJlY3RpdmU8Q29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlz
dERpcmVjdGl2ZT4obmFtZSwgdmFsdWUsIG1fYmFzZVVSSSk7Ci0gICAgZWxzZSBpZiAoZXF1YWxM
ZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobmFtZSwgZnJhbWVBbmNlc3RvcnMpKSB7CisgICAgZWxz
ZSBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShuYW1lLCBDb250ZW50U2VjdXJpdHlQb2xpY3lE
aXJlY3RpdmVOYW1lczo6ZnJhbWVBbmNlc3RvcnMpKSB7CiAgICAgICAgIGlmIChtX3JlcG9ydE9u
bHkpIHsKICAgICAgICAgICAgIG1fcG9saWN5LnJlcG9ydEludmFsaWREaXJlY3RpdmVJblJlcG9y
dE9ubHlNb2RlKG5hbWUpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAg
IHNldENTUERpcmVjdGl2ZTxDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0RGlyZWN0aXZl
PihuYW1lLCB2YWx1ZSwgbV9mcmFtZUFuY2VzdG9ycyk7Ci0gICAgfSBlbHNlIGlmIChlcXVhbExl
dHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShuYW1lLCBwbHVnaW5UeXBlcykpCisgICAgfSBlbHNlIGlm
IChlcXVhbElnbm9yaW5nQVNDSUlDYXNlKG5hbWUsIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVj
dGl2ZU5hbWVzOjpwbHVnaW5UeXBlcykpCiAgICAgICAgIHNldENTUERpcmVjdGl2ZTxDb250ZW50
U2VjdXJpdHlQb2xpY3lNZWRpYUxpc3REaXJlY3RpdmU+KG5hbWUsIHZhbHVlLCBtX3BsdWdpblR5
cGVzKTsKLSAgICBlbHNlIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShuYW1lLCBz
YW5kYm94KSkKKyAgICBlbHNlIGlmIChlcXVhbElnbm9yaW5nQVNDSUlDYXNlKG5hbWUsIENvbnRl
bnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzOjpzYW5kYm94KSkKICAgICAgICAgYXBwbHlT
YW5kYm94UG9saWN5KG5hbWUsIHZhbHVlKTsKLSAgICBlbHNlIGlmIChlcXVhbExldHRlcnNJZ25v
cmluZ0FTQ0lJQ2FzZShuYW1lLCByZXBvcnRVUkkpKQorICAgIGVsc2UgaWYgKGVxdWFsSWdub3Jp
bmdBU0NJSUNhc2UobmFtZSwgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXM6OnJl
cG9ydFVSSSkpCiAgICAgICAgIHBhcnNlUmVwb3J0VVJJKG5hbWUsIHZhbHVlKTsKICNpZiBFTkFC
TEUoQ1NQX05FWFQpCiAgICAgZWxzZSBpZiAobV9wb2xpY3kuZXhwZXJpbWVudGFsRmVhdHVyZXNF
bmFibGVkKCkpIHsKLSAgICAgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG5h
bWUsIHJlZmxlY3RlZFhTUykpCisgICAgICAgIGlmIChlcXVhbElnbm9yaW5nQVNDSUlDYXNlKG5h
bWUsIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzOjpyZWZsZWN0ZWRYU1MpKQog
ICAgICAgICAgICAgcGFyc2VSZWZsZWN0ZWRYU1MobmFtZSwgdmFsdWUpOwogICAgICAgICBlbHNl
CiAgICAgICAgICAgICBtX3BvbGljeS5yZXBvcnRVbnN1cHBvcnRlZERpcmVjdGl2ZShuYW1lKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGlj
eURpcmVjdGl2ZUxpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0
eVBvbGljeURpcmVjdGl2ZUxpc3QuaAppbmRleCA5YjFlMjBiYzA0NTQwZmE5NzMxMWJkNTZhMTA4
MGFjNmVmMGQ1ZThhLi40ZDA5MGI5NTMwYmM5ZmEzNjI4YWU5YjdjOWEwZDJiN2IzNzY2OGQxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lE
aXJlY3RpdmVMaXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3Vy
aXR5UG9saWN5RGlyZWN0aXZlTGlzdC5oCkBAIC0zNiw4ICszNiw2IEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotYm9vbCBpc0NTUERpcmVjdGl2ZU5hbWUoY29uc3QgU3RyaW5nJik7Ci0KIGNs
YXNzIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3QgewogICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENvbnRlbnRTZWN1cml0eVBv
bGljeURpcmVjdGl2ZUxpc3QpCkBAIC00OCw0MCArNDYsNDAgQEAgcHVibGljOgogICAgIGNvbnN0
IFN0cmluZyYgaGVhZGVyKCkgY29uc3QgeyByZXR1cm4gbV9oZWFkZXI7IH0KICAgICBDb250ZW50
U2VjdXJpdHlQb2xpY3lIZWFkZXJUeXBlIGhlYWRlclR5cGUoKSBjb25zdCB7IHJldHVybiBtX2hl
YWRlclR5cGU7IH0KIAotICAgIGVudW0gY2xhc3MgUmVwb3J0aW5nU3RhdHVzIHsKLSAgICAgICAg
U2VuZFJlcG9ydCwKLSAgICAgICAgU3VwcHJlc3NSZXBvcnQKLSAgICB9OwotICAgIGJvb2wgYWxs
b3dKYXZhU2NyaXB0VVJMcyhjb25zdCBTdHJpbmcmIGNvbnRleHRVUkwsIGNvbnN0IFdURjo6T3Jk
aW5hbE51bWJlciYgY29udGV4dExpbmUsIFJlcG9ydGluZ1N0YXR1cykgY29uc3Q7Ci0gICAgYm9v
bCBhbGxvd0lubGluZUV2ZW50SGFuZGxlcnMoY29uc3QgU3RyaW5nJiBjb250ZXh0VVJMLCBjb25z
dCBXVEY6Ok9yZGluYWxOdW1iZXImIGNvbnRleHRMaW5lLCBSZXBvcnRpbmdTdGF0dXMpIGNvbnN0
OwotICAgIGJvb2wgYWxsb3dJbmxpbmVTY3JpcHQoY29uc3QgU3RyaW5nJiBjb250ZXh0VVJMLCBj
b25zdCBXVEY6Ok9yZGluYWxOdW1iZXImIGNvbnRleHRMaW5lLCBSZXBvcnRpbmdTdGF0dXMpIGNv
bnN0OwotICAgIGJvb2wgYWxsb3dJbmxpbmVTY3JpcHRXaXRoSGFzaChjb25zdCBDb250ZW50U2Vj
dXJpdHlQb2xpY3lIYXNoJikgY29uc3Q7Ci0gICAgYm9vbCBhbGxvd1NjcmlwdFdpdGhOb25jZShj
b25zdCBTdHJpbmcmIG5vbmNlKSBjb25zdDsKLSAgICBib29sIGFsbG93SW5saW5lU3R5bGUoY29u
c3QgU3RyaW5nJiBjb250ZXh0VVJMLCBjb25zdCBXVEY6Ok9yZGluYWxOdW1iZXImIGNvbnRleHRM
aW5lLCBSZXBvcnRpbmdTdGF0dXMpIGNvbnN0OwotICAgIGJvb2wgYWxsb3dJbmxpbmVTdHlsZVdp
dGhIYXNoKGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeUhhc2gmKSBjb25zdDsKLSAgICBib29s
IGFsbG93U3R5bGVXaXRoTm9uY2UoY29uc3QgU3RyaW5nJiBub25jZSkgY29uc3Q7Ci0gICAgYm9v
bCBhbGxvd0V2YWwoSlNDOjpFeGVjU3RhdGUqLCBSZXBvcnRpbmdTdGF0dXMpIGNvbnN0OwotICAg
IGJvb2wgYWxsb3dQbHVnaW5UeXBlKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiB0
eXBlQXR0cmlidXRlLCBjb25zdCBVUkwmLCBSZXBvcnRpbmdTdGF0dXMpIGNvbnN0OwotCi0gICAg
Ym9vbCBhbGxvd1NjcmlwdEZyb21Tb3VyY2UoY29uc3QgVVJMJiwgUmVwb3J0aW5nU3RhdHVzKSBj
b25zdDsKLSAgICBib29sIGFsbG93T2JqZWN0RnJvbVNvdXJjZShjb25zdCBVUkwmLCBSZXBvcnRp
bmdTdGF0dXMpIGNvbnN0OwotICAgIGJvb2wgYWxsb3dDaGlsZEZyYW1lRnJvbVNvdXJjZShjb25z
dCBVUkwmLCBSZXBvcnRpbmdTdGF0dXMpIGNvbnN0OwotICAgIGJvb2wgYWxsb3dDaGlsZENvbnRl
eHRGcm9tU291cmNlKGNvbnN0IFVSTCYsIFJlcG9ydGluZ1N0YXR1cykgY29uc3Q7Ci0gICAgYm9v
bCBhbGxvd0ltYWdlRnJvbVNvdXJjZShjb25zdCBVUkwmLCBSZXBvcnRpbmdTdGF0dXMpIGNvbnN0
OwotICAgIGJvb2wgYWxsb3dTdHlsZUZyb21Tb3VyY2UoY29uc3QgVVJMJiwgUmVwb3J0aW5nU3Rh
dHVzKSBjb25zdDsKLSAgICBib29sIGFsbG93Rm9udEZyb21Tb3VyY2UoY29uc3QgVVJMJiwgUmVw
b3J0aW5nU3RhdHVzKSBjb25zdDsKLSAgICBib29sIGFsbG93TWVkaWFGcm9tU291cmNlKGNvbnN0
IFVSTCYsIFJlcG9ydGluZ1N0YXR1cykgY29uc3Q7Ci0gICAgYm9vbCBhbGxvd0Nvbm5lY3RUb1Nv
dXJjZShjb25zdCBVUkwmLCBSZXBvcnRpbmdTdGF0dXMpIGNvbnN0OwotICAgIGJvb2wgYWxsb3dG
b3JtQWN0aW9uKGNvbnN0IFVSTCYsIFJlcG9ydGluZ1N0YXR1cykgY29uc3Q7Ci0gICAgYm9vbCBh
bGxvd0Jhc2VVUkkoY29uc3QgVVJMJiwgUmVwb3J0aW5nU3RhdHVzKSBjb25zdDsKLQotICAgIGJv
b2wgYWxsb3dGcmFtZUFuY2VzdG9ycyhjb25zdCBGcmFtZSYsIGNvbnN0IFVSTCYsIFJlcG9ydGlu
Z1N0YXR1cykgY29uc3Q7CisgICAgY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZl
KiB2aW9sYXRlZERpcmVjdGl2ZUZvclVuc2FmZUV2YWwoKSBjb25zdDsKKyAgICBjb25zdCBDb250
ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmUqIHZpb2xhdGVkRGlyZWN0aXZlRm9yVW5zYWZlSW5s
aW5lU2NyaXB0KCkgY29uc3Q7CisgICAgY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0
aXZlKiB2aW9sYXRlZERpcmVjdGl2ZUZvclVuc2FmZUlubGluZVN0eWxlKCkgY29uc3Q7CisKKyAg
ICBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmUqIHZpb2xhdGVkRGlyZWN0aXZl
Rm9yU2NyaXB0SGFzaChjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lIYXNoJikgY29uc3Q7Cisg
ICAgY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlKiB2aW9sYXRlZERpcmVjdGl2
ZUZvclN0eWxlSGFzaChjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lIYXNoJikgY29uc3Q7CisK
KyAgICBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmUqIHZpb2xhdGVkRGlyZWN0
aXZlRm9yU2NyaXB0Tm9uY2UoY29uc3QgU3RyaW5nJikgY29uc3Q7CisgICAgY29uc3QgQ29udGVu
dFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlKiB2aW9sYXRlZERpcmVjdGl2ZUZvclN0eWxlTm9uY2Uo
Y29uc3QgU3RyaW5nJikgY29uc3Q7CisKKyAgICBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lE
aXJlY3RpdmUqIHZpb2xhdGVkRGlyZWN0aXZlRm9yQmFzZVVSSShjb25zdCBVUkwmKSBjb25zdDsK
KyAgICBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmUqIHZpb2xhdGVkRGlyZWN0
aXZlRm9yQ2hpbGRDb250ZXh0KGNvbnN0IFVSTCYpIGNvbnN0OworICAgIGNvbnN0IENvbnRlbnRT
ZWN1cml0eVBvbGljeURpcmVjdGl2ZSogdmlvbGF0ZWREaXJlY3RpdmVGb3JDb25uZWN0U291cmNl
KGNvbnN0IFVSTCYpIGNvbnN0OworICAgIGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVj
dGl2ZSogdmlvbGF0ZWREaXJlY3RpdmVGb3JGb250KGNvbnN0IFVSTCYpIGNvbnN0OworICAgIGNv
bnN0IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZSogdmlvbGF0ZWREaXJlY3RpdmVGb3JG
b3JtQWN0aW9uKGNvbnN0IFVSTCYpIGNvbnN0OworICAgIGNvbnN0IENvbnRlbnRTZWN1cml0eVBv
bGljeURpcmVjdGl2ZSogdmlvbGF0ZWREaXJlY3RpdmVGb3JGcmFtZShjb25zdCBVUkwmKSBjb25z
dDsKKyAgICBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmUqIHZpb2xhdGVkRGly
ZWN0aXZlRm9yRnJhbWVBbmNlc3Rvcihjb25zdCBGcmFtZSYpIGNvbnN0OworICAgIGNvbnN0IENv
bnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZSogdmlvbGF0ZWREaXJlY3RpdmVGb3JJbWFnZShj
b25zdCBVUkwmKSBjb25zdDsKKyAgICBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3Rp
dmUqIHZpb2xhdGVkRGlyZWN0aXZlRm9yTWVkaWEoY29uc3QgVVJMJikgY29uc3Q7CisgICAgY29u
c3QgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlKiB2aW9sYXRlZERpcmVjdGl2ZUZvck9i
amVjdFNvdXJjZShjb25zdCBVUkwmKSBjb25zdDsKKyAgICBjb25zdCBDb250ZW50U2VjdXJpdHlQ
b2xpY3lEaXJlY3RpdmUqIHZpb2xhdGVkRGlyZWN0aXZlRm9yUGx1Z2luVHlwZShjb25zdCBTdHJp
bmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgdHlwZUF0dHJpYnV0ZSkgY29uc3Q7CisgICAgY29uc3Qg
Q29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlKiB2aW9sYXRlZERpcmVjdGl2ZUZvclNjcmlw
dChjb25zdCBVUkwmKSBjb25zdDsKKyAgICBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJl
Y3RpdmUqIHZpb2xhdGVkRGlyZWN0aXZlRm9yU3R5bGUoY29uc3QgVVJMJikgY29uc3Q7CisKKyAg
ICBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmUqIGRlZmF1bHRTcmMoKSBjb25z
dCB7IHJldHVybiBtX2RlZmF1bHRTcmMuZ2V0KCk7IH0KIAogICAgIGNvbnN0IFN0cmluZyYgZXZh
bERpc2FibGVkRXJyb3JNZXNzYWdlKCkgY29uc3QgeyByZXR1cm4gbV9ldmFsRGlzYWJsZWRFcnJv
ck1lc3NhZ2U7IH0KICAgICBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJlZmxlY3RlZFhTU0Rpc3Bv
c2l0aW9uIHJlZmxlY3RlZFhTU0Rpc3Bvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9yZWZsZWN0
ZWRYU1NEaXNwb3NpdGlvbjsgfQogICAgIGJvb2wgaXNSZXBvcnRPbmx5KCkgY29uc3QgeyByZXR1
cm4gbV9yZXBvcnRPbmx5OyB9CiAgICAgY29uc3QgVmVjdG9yPFN0cmluZz4mIHJlcG9ydFVSSXMo
KSBjb25zdCB7IHJldHVybiBtX3JlcG9ydFVSSXM7IH0KIAorICAgIC8vIEZJWE1FOiBSZW1vdmUg
dGhpcyBvbmNlIHdlIHRlYWNoIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3QgaG93
IHRvIGxvZyBhbiBhcmJpdHJhcnkgY29uc29sZSBtZXNzYWdlLgorICAgIGNvbnN0IENvbnRlbnRT
ZWN1cml0eVBvbGljeSYgcG9saWN5KCkgY29uc3QgeyByZXR1cm4gbV9wb2xpY3k7IH0KKwogcHJp
dmF0ZToKICAgICB2b2lkIHBhcnNlKGNvbnN0IFN0cmluZyYsIENvbnRlbnRTZWN1cml0eVBvbGlj
eTo6UG9saWN5RnJvbSk7CiAKQEAgLTk2LDEyICs5NCw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCBz
ZXRDU1BEaXJlY3RpdmUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlLCBz
dGQ6OnVuaXF1ZV9wdHI8Q1NQRGlyZWN0aXZlVHlwZT4mKTsKIAogICAgIENvbnRlbnRTZWN1cml0
eVBvbGljeVNvdXJjZUxpc3REaXJlY3RpdmUqIG9wZXJhdGl2ZURpcmVjdGl2ZShDb250ZW50U2Vj
dXJpdHlQb2xpY3lTb3VyY2VMaXN0RGlyZWN0aXZlKikgY29uc3Q7Ci0gICAgdm9pZCByZXBvcnRW
aW9sYXRpb24oY29uc3QgU3RyaW5nJiBkaXJlY3RpdmVUZXh0LCBjb25zdCBTdHJpbmcmIGVmZmVj
dGl2ZURpcmVjdGl2ZSwgY29uc3QgU3RyaW5nJiBjb25zb2xlTWVzc2FnZSwgY29uc3QgVVJMJiBi
bG9ja2VkVVJMID0gVVJMKCksIGNvbnN0IFN0cmluZyYgY29udGV4dFVSTCA9IFN0cmluZygpLCBj
b25zdCBXVEY6Ok9yZGluYWxOdW1iZXImIGNvbnRleHRMaW5lID0gV1RGOjpPcmRpbmFsTnVtYmVy
OjpiZWZvcmVGaXJzdCgpLCBKU0M6OkV4ZWNTdGF0ZSogPSBudWxscHRyKSBjb25zdDsKIAogICAg
IHZvaWQgc2V0RXZhbERpc2FibGVkRXJyb3JNZXNzYWdlKGNvbnN0IFN0cmluZyYgZXJyb3JNZXNz
YWdlKSB7IG1fZXZhbERpc2FibGVkRXJyb3JNZXNzYWdlID0gZXJyb3JNZXNzYWdlOyB9CiAKLSAg
ICBib29sIGRlbnlJZkVuZm9yY2luZ1BvbGljeSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVwb3J0T25s
eTsgfQotCiAgICAgLy8gRklYTUU6IE1ha2UgdGhpcyBhIGNvbnN0IHJlZmVyZW5jZSBvbmNlIHdl
IHRlYWNoIGFwcGx5U2FuZGJveFBvbGljeSgpIHRvIHN0b3JlIGl0cyBwb2xpY3kgYXMgb3Bwb3Nl
ZCB0byBhcHBseWluZyBpdCBkaXJlY3RseSBvbnRvIENvbnRlbnRTZWN1cml0eVBvbGljeS4KICAg
ICBDb250ZW50U2VjdXJpdHlQb2xpY3kmIG1fcG9saWN5OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lNZWRpYUxpc3REaXJlY3RpdmUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5TWVkaWFM
aXN0RGlyZWN0aXZlLmNwcAppbmRleCAyYWYzOTM1OTgzMmExNmM0OGE5ZGRjMTA1ZmNjN2VmZDk5
ZDYwZjg4Li4zZDNlZDRkMGRiNDUxYjQ0Mjg3OGQ5YWQ0ZmQzOWNhMWVmNmRkNGFjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lNZWRpYUxp
c3REaXJlY3RpdmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1
cml0eVBvbGljeU1lZGlhTGlzdERpcmVjdGl2ZS5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNs
dWRlICJDb250ZW50U2VjdXJpdHlQb2xpY3lNZWRpYUxpc3REaXJlY3RpdmUuaCIKIAogI2luY2x1
ZGUgIkNvbnRlbnRTZWN1cml0eVBvbGljeS5oIgorI2luY2x1ZGUgIkNvbnRlbnRTZWN1cml0eVBv
bGljeURpcmVjdGl2ZUxpc3QuaCIKICNpbmNsdWRlICJQYXJzaW5nVXRpbGl0aWVzLmgiCiAjaW5j
bHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogCkBAIC00Myw4ICs0NCw4IEBAIHN0YXRpYyBi
b29sIGlzTm90QVNDSUlTcGFjZShVQ2hhciBjKQogICAgIHJldHVybiAhaXNBU0NJSVNwYWNlKGMp
OwogfQogCi1Db250ZW50U2VjdXJpdHlQb2xpY3lNZWRpYUxpc3REaXJlY3RpdmU6OkNvbnRlbnRT
ZWN1cml0eVBvbGljeU1lZGlhTGlzdERpcmVjdGl2ZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0
IFN0cmluZyYgdmFsdWUsIGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeSYgcG9saWN5KQotICAg
IDogQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlKG5hbWUsIHZhbHVlLCBwb2xpY3kpCitD
b250ZW50U2VjdXJpdHlQb2xpY3lNZWRpYUxpc3REaXJlY3RpdmU6OkNvbnRlbnRTZWN1cml0eVBv
bGljeU1lZGlhTGlzdERpcmVjdGl2ZShjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3Rp
dmVMaXN0JiBkaXJlY3RpdmVMaXN0LCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYg
dmFsdWUpCisgICAgOiBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmUoZGlyZWN0aXZlTGlz
dCwgbmFtZSwgdmFsdWUpCiB7CiAgICAgcGFyc2UodmFsdWUpOwogfQpAQCAtNjMsNyArNjQsNyBA
QCB2b2lkIENvbnRlbnRTZWN1cml0eVBvbGljeU1lZGlhTGlzdERpcmVjdGl2ZTo6cGFyc2UoY29u
c3QgU3RyaW5nJiB2YWx1ZSkKIAogICAgIC8vICdwbHVnaW4tdHlwZXMgX19fXzsnIE9SICdwbHVn
aW4tdHlwZXM7JwogICAgIGlmICh2YWx1ZS5pc0VtcHR5KCkpIHsKLSAgICAgICAgcG9saWN5KCku
cmVwb3J0SW52YWxpZFBsdWdpblR5cGVzKHZhbHVlKTsKKyAgICAgICAgZGlyZWN0aXZlTGlzdCgp
LnBvbGljeSgpLnJlcG9ydEludmFsaWRQbHVnaW5UeXBlcyh2YWx1ZSk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKQEAgLTc5LDcgKzgwLDcgQEAgdm9pZCBDb250ZW50U2VjdXJpdHlQb2xpY3lN
ZWRpYUxpc3REaXJlY3RpdmU6OnBhcnNlKGNvbnN0IFN0cmluZyYgdmFsdWUpCiAgICAgICAgIGJl
Z2luID0gcG9zaXRpb247CiAgICAgICAgIGlmICghc2tpcEV4YWN0bHk8VUNoYXIsIGlzTWVkaWFU
eXBlQ2hhcmFjdGVyPihwb3NpdGlvbiwgZW5kKSkgewogICAgICAgICAgICAgc2tpcFdoaWxlPFVD
aGFyLCBpc05vdEFTQ0lJU3BhY2U+KHBvc2l0aW9uLCBlbmQpOwotICAgICAgICAgICAgcG9saWN5
KCkucmVwb3J0SW52YWxpZFBsdWdpblR5cGVzKFN0cmluZyhiZWdpbiwgcG9zaXRpb24gLSBiZWdp
bikpOworICAgICAgICAgICAgZGlyZWN0aXZlTGlzdCgpLnBvbGljeSgpLnJlcG9ydEludmFsaWRQ
bHVnaW5UeXBlcyhTdHJpbmcoYmVnaW4sIHBvc2l0aW9uIC0gYmVnaW4pKTsKICAgICAgICAgICAg
IGNvbnRpbnVlOwogICAgICAgICB9CiAgICAgICAgIHNraXBXaGlsZTxVQ2hhciwgaXNNZWRpYVR5
cGVDaGFyYWN0ZXI+KHBvc2l0aW9uLCBlbmQpOwpAQCAtODgsNyArODksNyBAQCB2b2lkIENvbnRl
bnRTZWN1cml0eVBvbGljeU1lZGlhTGlzdERpcmVjdGl2ZTo6cGFyc2UoY29uc3QgU3RyaW5nJiB2
YWx1ZSkKICAgICAgICAgLy8gICAgICBeCiAgICAgICAgIGlmICghc2tpcEV4YWN0bHk8VUNoYXI+
KHBvc2l0aW9uLCBlbmQsICcvJykpIHsKICAgICAgICAgICAgIHNraXBXaGlsZTxVQ2hhciwgaXNO
b3RBU0NJSVNwYWNlPihwb3NpdGlvbiwgZW5kKTsKLSAgICAgICAgICAgIHBvbGljeSgpLnJlcG9y
dEludmFsaWRQbHVnaW5UeXBlcyhTdHJpbmcoYmVnaW4sIHBvc2l0aW9uIC0gYmVnaW4pKTsKKyAg
ICAgICAgICAgIGRpcmVjdGl2ZUxpc3QoKS5wb2xpY3koKS5yZXBvcnRJbnZhbGlkUGx1Z2luVHlw
ZXMoU3RyaW5nKGJlZ2luLCBwb3NpdGlvbiAtIGJlZ2luKSk7CiAgICAgICAgICAgICBjb250aW51
ZTsKICAgICAgICAgfQogCkBAIC05Niw3ICs5Nyw3IEBAIHZvaWQgQ29udGVudFNlY3VyaXR5UG9s
aWN5TWVkaWFMaXN0RGlyZWN0aXZlOjpwYXJzZShjb25zdCBTdHJpbmcmIHZhbHVlKQogICAgICAg
ICAvLyAgICAgICBeCiAgICAgICAgIGlmICghc2tpcEV4YWN0bHk8VUNoYXIsIGlzTWVkaWFUeXBl
Q2hhcmFjdGVyPihwb3NpdGlvbiwgZW5kKSkgewogICAgICAgICAgICAgc2tpcFdoaWxlPFVDaGFy
LCBpc05vdEFTQ0lJU3BhY2U+KHBvc2l0aW9uLCBlbmQpOwotICAgICAgICAgICAgcG9saWN5KCku
cmVwb3J0SW52YWxpZFBsdWdpblR5cGVzKFN0cmluZyhiZWdpbiwgcG9zaXRpb24gLSBiZWdpbikp
OworICAgICAgICAgICAgZGlyZWN0aXZlTGlzdCgpLnBvbGljeSgpLnJlcG9ydEludmFsaWRQbHVn
aW5UeXBlcyhTdHJpbmcoYmVnaW4sIHBvc2l0aW9uIC0gYmVnaW4pKTsKICAgICAgICAgICAgIGNv
bnRpbnVlOwogICAgICAgICB9CiAgICAgICAgIHNraXBXaGlsZTxVQ2hhciwgaXNNZWRpYVR5cGVD
aGFyYWN0ZXI+KHBvc2l0aW9uLCBlbmQpOwpAQCAtMTA1LDcgKzEwNiw3IEBAIHZvaWQgQ29udGVu
dFNlY3VyaXR5UG9saWN5TWVkaWFMaXN0RGlyZWN0aXZlOjpwYXJzZShjb25zdCBTdHJpbmcmIHZh
bHVlKQogICAgICAgICAvLyAgICAgICAgICAgIF4gICAgICAgICAgICAgICAgICAgICAgICAgIF4g
ICAgICAgICAgICAgICBeCiAgICAgICAgIGlmIChwb3NpdGlvbiA8IGVuZCAmJiBpc05vdEFTQ0lJ
U3BhY2UoKnBvc2l0aW9uKSkgewogICAgICAgICAgICAgc2tpcFdoaWxlPFVDaGFyLCBpc05vdEFT
Q0lJU3BhY2U+KHBvc2l0aW9uLCBlbmQpOwotICAgICAgICAgICAgcG9saWN5KCkucmVwb3J0SW52
YWxpZFBsdWdpblR5cGVzKFN0cmluZyhiZWdpbiwgcG9zaXRpb24gLSBiZWdpbikpOworICAgICAg
ICAgICAgZGlyZWN0aXZlTGlzdCgpLnBvbGljeSgpLnJlcG9ydEludmFsaWRQbHVnaW5UeXBlcyhT
dHJpbmcoYmVnaW4sIHBvc2l0aW9uIC0gYmVnaW4pKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwog
ICAgICAgICB9CiAgICAgICAgIG1fcGx1Z2luVHlwZXMuYWRkKFN0cmluZyhiZWdpbiwgcG9zaXRp
b24gLSBiZWdpbikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVu
dFNlY3VyaXR5UG9saWN5TWVkaWFMaXN0RGlyZWN0aXZlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lNZWRpYUxpc3REaXJlY3RpdmUuaAppbmRleCBmMWEw
NTdlNzc3M2U4NDI4YTQ5NmVkZDA3NjI3NjhlMDE1ODA2MzMwLi5lODUwNjhlYmEwYWI4YTk3YzI0
YzIxMmMzM2IyMTkwZmU0N2I5NGUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2Nz
cC9Db250ZW50U2VjdXJpdHlQb2xpY3lNZWRpYUxpc3REaXJlY3RpdmUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lNZWRpYUxpc3REaXJlY3RpdmUu
aApAQCAtMzMsMTEgKzMzLDExIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgQ29u
dGVudFNlY3VyaXR5UG9saWN5OworY2xhc3MgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZl
TGlzdDsKIAogY2xhc3MgQ29udGVudFNlY3VyaXR5UG9saWN5TWVkaWFMaXN0RGlyZWN0aXZlIDog
cHVibGljIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZSB7CiBwdWJsaWM6Ci0gICAgQ29u
dGVudFNlY3VyaXR5UG9saWN5TWVkaWFMaXN0RGlyZWN0aXZlKGNvbnN0IFN0cmluZyYgbmFtZSwg
Y29uc3QgU3RyaW5nJiB2YWx1ZSwgY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5Jik7CisgICAg
Q29udGVudFNlY3VyaXR5UG9saWN5TWVkaWFMaXN0RGlyZWN0aXZlKGNvbnN0IENvbnRlbnRTZWN1
cml0eVBvbGljeURpcmVjdGl2ZUxpc3QmLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmlu
ZyYgdmFsdWUpOwogCiAgICAgYm9vbCBhbGxvd3MoY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdDsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9s
aWN5U291cmNlTGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJp
dHlQb2xpY3lTb3VyY2VMaXN0LmNwcAppbmRleCA4MDQ0YWU4YmZlMzE0ZTFiZjliZGFmYWFkMGUy
YjQ4ZDkzNzMwNGM5Li4yNTRhZjhlNTliMGQyMDhkMzBiMDFlMDNkZWY2MjhmYTdkMzczN2I5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lT
b3VyY2VMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJp
dHlQb2xpY3lTb3VyY2VMaXN0LmNwcApAQCAtMjgsNyArMjgsNyBAQAogI2luY2x1ZGUgIkNvbnRl
bnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3QuaCIKIAogI2luY2x1ZGUgIkNvbnRlbnRTZWN1cml0
eVBvbGljeS5oIgotI2luY2x1ZGUgIkNvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Qu
aCIKKyNpbmNsdWRlICJDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lcy5oIgogI2lu
Y2x1ZGUgIlBhcnNpbmdVdGlsaXRpZXMuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgog
I2luY2x1ZGUgIlVSTC5oIgpAQCAtMzgsNiArMzgsMzUgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCitzdGF0aWMgaW5saW5lIGJvb2wgaXNFeHBlcmltZW50YWxEaXJlY3RpdmVOYW1lKGNvbnN0
IFN0cmluZyYgbmFtZSkKK3sKKyNpZiBFTkFCTEUoQ1NQX05FWFQpCisgICAgcmV0dXJuIGVxdWFs
SWdub3JpbmdBU0NJSUNhc2UobmFtZSwgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFt
ZXM6OnJlZmxlY3RlZFhTUyk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShuYW1lKTsKKyAgICBy
ZXR1cm4gZmFsc2U7CisjZW5kaWYKK30KKworc3RhdGljIGJvb2wgaXNDU1BEaXJlY3RpdmVOYW1l
KGNvbnN0IFN0cmluZyYgbmFtZSkKK3sKKyAgICByZXR1cm4gZXF1YWxJZ25vcmluZ0FTQ0lJQ2Fz
ZShuYW1lLCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lczo6YmFzZVVSSSkKKyAg
ICAgICAgfHwgZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShuYW1lLCBDb250ZW50U2VjdXJpdHlQb2xp
Y3lEaXJlY3RpdmVOYW1lczo6Y29ubmVjdFNyYykKKyAgICAgICAgfHwgZXF1YWxJZ25vcmluZ0FT
Q0lJQ2FzZShuYW1lLCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lczo6ZGVmYXVs
dFNyYykKKyAgICAgICAgfHwgZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShuYW1lLCBDb250ZW50U2Vj
dXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lczo6Zm9udFNyYykKKyAgICAgICAgfHwgZXF1YWxJZ25v
cmluZ0FTQ0lJQ2FzZShuYW1lLCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lczo6
Zm9ybUFjdGlvbikKKyAgICAgICAgfHwgZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShuYW1lLCBDb250
ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lczo6ZnJhbWVTcmMpCisgICAgICAgIHx8IGVx
dWFsSWdub3JpbmdBU0NJSUNhc2UobmFtZSwgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZl
TmFtZXM6OmltZ1NyYykKKyAgICAgICAgfHwgZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShuYW1lLCBD
b250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lczo6bWVkaWFTcmMpCisgICAgICAgIHx8
IGVxdWFsSWdub3JpbmdBU0NJSUNhc2UobmFtZSwgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0
aXZlTmFtZXM6Om9iamVjdFNyYykKKyAgICAgICAgfHwgZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShu
YW1lLCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lczo6cGx1Z2luVHlwZXMpCisg
ICAgICAgIHx8IGVxdWFsSWdub3JpbmdBU0NJSUNhc2UobmFtZSwgQ29udGVudFNlY3VyaXR5UG9s
aWN5RGlyZWN0aXZlTmFtZXM6OnJlcG9ydFVSSSkKKyAgICAgICAgfHwgZXF1YWxJZ25vcmluZ0FT
Q0lJQ2FzZShuYW1lLCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lczo6c2FuZGJv
eCkKKyAgICAgICAgfHwgZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShuYW1lLCBDb250ZW50U2VjdXJp
dHlQb2xpY3lEaXJlY3RpdmVOYW1lczo6c2NyaXB0U3JjKQorICAgICAgICB8fCBlcXVhbElnbm9y
aW5nQVNDSUlDYXNlKG5hbWUsIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzOjpz
dHlsZVNyYykKKyAgICAgICAgfHwgaXNFeHBlcmltZW50YWxEaXJlY3RpdmVOYW1lKG5hbWUpOwor
fQorCiBzdGF0aWMgYm9vbCBpc1NvdXJjZUNoYXJhY3RlcihVQ2hhciBjKQogewogICAgIHJldHVy
biAhaXNBU0NJSVNwYWNlKGMpOwpAQCAtMTAxLDEyICsxMzAsMTAgQEAgYm9vbCBDb250ZW50U2Vj
dXJpdHlQb2xpY3lTb3VyY2VMaXN0Ojppc1Byb3RvY29sQWxsb3dlZEJ5U3Rhcihjb25zdCBVUkwm
IHVybCkgY28KIHsKICAgICAvLyBBbHRob3VnaCBub3QgYWxsb3dlZCBieSB0aGUgQ29udGVudCBT
ZWN1cml0eSBQb2xpY3kgTGV2ZWwgMyBzcGVjLiwgd2UgYWxsb3cgYSBkYXRhIFVSTCB0byBtYXRj
aAogICAgIC8vICJpbWctc3JjICoiIGFuZCBlaXRoZXIgYSBkYXRhIFVSTCBvciBibG9iIFVSTCB0
byBtYXRjaCAibWVkaWEtc3JjICoiIGZvciB3ZWIgY29tcGF0aWJpbGl0eS4KLSAgICAvLyBGSVhN
RTogV2Ugc2hvdWxkIG5vdCBoYXJkY29kZSB0aGUgZGlyZWN0aXZlIG5hbWVzLiBXZSBzaG91bGQg
bWFrZSB1c2Ugb2YgdGhlIGNvbnN0YW50cyBpbiBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3Rp
dmVMaXN0LmNwcC4KLSAgICAvLyBTZWUgPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNTUxMzM+LgogICAgIGJvb2wgaXNBbGxvd2VkID0gdXJsLnByb3RvY29sSXNJbkhU
VFBGYW1pbHkoKTsKLSAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobV9kaXJl
Y3RpdmVOYW1lLCAiaW1nLXNyYyIpKQorICAgIGlmIChlcXVhbElnbm9yaW5nQVNDSUlDYXNlKG1f
ZGlyZWN0aXZlTmFtZSwgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXM6OmltZ1Ny
YykpCiAgICAgICAgIGlzQWxsb3dlZCB8PSB1cmwucHJvdG9jb2xJc0RhdGEoKTsKLSAgICBlbHNl
IGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShtX2RpcmVjdGl2ZU5hbWUsICJtZWRp
YS1zcmMiKSkKKyAgICBlbHNlIGlmIChlcXVhbElnbm9yaW5nQVNDSUlDYXNlKG1fZGlyZWN0aXZl
TmFtZSwgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXM6Om1lZGlhU3JjKSkKICAg
ICAgICAgaXNBbGxvd2VkIHw9IHVybC5wcm90b2NvbElzRGF0YSgpIHx8IHVybC5wcm90b2NvbElz
QmxvYigpOwogICAgIHJldHVybiBpc0FsbG93ZWQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0RGlyZWN0aXZlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxp
c3REaXJlY3RpdmUuY3BwCmluZGV4IDRjNGYxMWM0MmU0YjUxZjk2YWNmNWQ4NmY0YjRmNTU2ODNh
ZTI4ZjUuLjQ2MWRhMWRmMDBhNTk4NWM2NzJiMWE5YzJhZDFiNDAyNDIwMzc0YzQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxp
c3REaXJlY3RpdmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1
cml0eVBvbGljeVNvdXJjZUxpc3REaXJlY3RpdmUuY3BwCkBAIC0yOCwxMyArMjgsMTQgQEAKICNp
bmNsdWRlICJDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0RGlyZWN0aXZlLmgiCiAKICNp
bmNsdWRlICJDb250ZW50U2VjdXJpdHlQb2xpY3kuaCIKKyNpbmNsdWRlICJDb250ZW50U2VjdXJp
dHlQb2xpY3lEaXJlY3RpdmVMaXN0LmgiCiAjaW5jbHVkZSAiVVJMLmgiCiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdERpcmVjdGl2ZTo6Q29u
dGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdERpcmVjdGl2ZShjb25zdCBTdHJpbmcmIG5hbWUs
IGNvbnN0IFN0cmluZyYgdmFsdWUsIGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeSYgcG9saWN5
KQotICAgIDogQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlKG5hbWUsIHZhbHVlLCBwb2xp
Y3kpCi0gICAgLCBtX3NvdXJjZUxpc3QocG9saWN5LCBuYW1lKQorQ29udGVudFNlY3VyaXR5UG9s
aWN5U291cmNlTGlzdERpcmVjdGl2ZTo6Q29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdERp
cmVjdGl2ZShjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0JiBkaXJlY3Rp
dmVMaXN0LCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpCisgICAgOiBD
b250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmUoZGlyZWN0aXZlTGlzdCwgbmFtZSwgdmFsdWUp
CisgICAgLCBtX3NvdXJjZUxpc3QoZGlyZWN0aXZlTGlzdC5wb2xpY3koKSwgbmFtZSkKIHsKICAg
ICBtX3NvdXJjZUxpc3QucGFyc2UodmFsdWUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdERpcmVjdGl2ZS5oIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdERp
cmVjdGl2ZS5oCmluZGV4IGFjNjUwMDUyZGMxZTU5MTJmYzFkNWY0NjY1ZGI1ZDNlM2NmYzVlNzMu
LmI4NWE4ZThmZjkwY2YwNDUwYzlmMTRlNzcyY2ExYzAwMTRmODUxYTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3REaXJl
Y3RpdmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xp
Y3lTb3VyY2VMaXN0RGlyZWN0aXZlLmgKQEAgLTMyLDExICszMiwxMSBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLWNsYXNzIENvbnRlbnRTZWN1cml0eVBvbGljeTsKK2NsYXNzIENvbnRlbnRT
ZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q7CiAKIGNsYXNzIENvbnRlbnRTZWN1cml0eVBvbGlj
eVNvdXJjZUxpc3REaXJlY3RpdmUgOiBwdWJsaWMgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0
aXZlIHsKIHB1YmxpYzoKLSAgICBDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0RGlyZWN0
aXZlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgY29uc3QgQ29udGVu
dFNlY3VyaXR5UG9saWN5Jik7CisgICAgQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdERp
cmVjdGl2ZShjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0JiwgY29uc3Qg
U3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlKTsKIAogICAgIGJvb2wgYWxsb3dzKGNv
bnN0IFVSTCYpOwogICAgIGJvb2wgYWxsb3dzKGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeUhh
c2gmKSBjb25zdDsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>274845</attachid>
            <date>2016-03-24 11:21:37 -0700</date>
            <delta_ts>2016-03-24 11:34:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-155842-20160324112139.patch</filename>
            <type>text/plain</type>
            <size>113594</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk4NjI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmY3Yzc4ZTcyYjEzZDlm
MjI1ZTQxZWM4MTI2OWJiNGJmMjVmYWM2Yy4uMzNlMzU1YzgwYjc2Yzc0MWU5ODE5NDQzZmMwNTk3
MjE3MmFiMzlmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1MyBAQAorMjAxNi0wMy0yNCAgRGFu
aWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CisKKyAgICAgICAgQ1NQOiBNb3ZlIGxvZ2lj
IGZvciByZXBvcnRpbmcgYSB2aW9sYXRpb24gZnJvbSBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJl
Y3RpdmVMaXN0IHRvIENvbnRlbnRTZWN1cml0eVBvbGljeQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU1ODQyCisgICAgICAgIDxyZGFyOi8vcHJvYmxl
bS8yNTM0MDM3Nz4KKyAgICAgICAgQW5kCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNTUxMzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBUb3dhcmRzIGFzc29jaWF0aW5nIHNvdXJjZSBmaWxlLCBsaW5lLSwg
YW5kIGNvbHVtbi0gbnVtYmVycyAoaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTExNDMxNykKKyAgICAgICAgd2l0aCBhIENTUCBjb25zb2xlIG1lc3NhZ2Ugd2Ugc2hvdWxk
IG1vdmUgdGhlIGxvZ2ljIGZvciBsb2dnaW5nIHRoZSBjb25zb2xlIG1lc3NhZ2UvcmVwb3J0aW5n
IHRoZSB2aW9sYXRpb24KKyAgICAgICAgZnJvbSBjbGFzcyBDb250ZW50U2VjdXJpdHlQb2xpY3lE
aXJlY3RpdmVMaXN0IHRvIGNsYXNzIENvbnRlbnRTZWN1cml0eVBvbGljeSBzbyB0aGF0IGl0IGlz
IGNsb3NlciB0byB0aGUKKyAgICAgICAgc2NyaXB0IGV4ZWN1dGlvbiBjb250ZXh0IHRoYXQgY2Fu
IGFjY2VzcyBzdWNoIGluZm9ybWF0aW9uLgorCisgICAgICAgIFRoZSByZXNwb25zaWJpbGl0aWVz
IG9mIHRoZSBjbGFzcyBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0IGhhdmUgYmVl
biByZWR1Y2VkLiBJdCBpcyByZXNwb25zaWJsZQorICAgICAgICBmb3IgcGFyc2luZyBhIHN0cmlu
ZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgQ29udGVudCBTZWN1cml0eSBQb2xpY3kgYW5kIHByb3Zp
ZGluZyBmdW5jdGlvbnMgdG8gZGV0ZXJtaW5lCisgICAgICAgIHRoZSB2aW9sYXRlZCBkaXJlY3Rp
dmUgKGlmIGFueSkgZm9yIGEgZ2l2ZW4gc291cmNlIChlLmcuIFVSTCkuIENvbnRlbnRTZWN1cml0
eVBvbGljeURpcmVjdGl2ZUxpc3Qgbm8gbG9uZ2VyCisgICAgICAgIHRha2VzIHJlc3BvbnNpYmls
aXR5IGxvZ2dpbmcgYSBjb25zb2xlIG1lc3NhZ2Ugb3Igc2VuZGluZyBhIHZpb2xhdGlvbiByZXBv
cnQgKGlmIGFwcGxpY2FibGUpLiBGYWxsaW5nIG91dAorICAgICAgICBmcm9tIHRoaXMgZGVjcmVh
c2UgaW4gcmVzcG9uc2liaWxpdHkgaXMgdGhlIHJlbW92YWwgb2YgZW51bSBDb250ZW50U2VjdXJp
dHlQb2xpY3lEaXJlY3RpdmVMaXN0OjpSZXBvcnRpbmdTdGF0dXMKKyAgICAgICAgYW5kIHRoZSBu
ZWVkIHRvIHBhc3MgYSBlbnVtZXJhdG9yIG9mIHRoaXMgZW51bSB0byBlYWNoIENvbnRlbnRTZWN1
cml0eVBvbGljeURpcmVjdGl2ZUxpc3QgdG8gc3VwcHJlc3MKKyAgICAgICAgdGhlIHNlbmRpbmcg
b2YgYSB2aW9sYXRpb24gcmVwb3J0LiBUaGUgY2FsbGVyIG9mIENvbnRlbnRTZWN1cml0eVBvbGlj
eURpcmVjdGl2ZUxpc3QgaXMgcmVzcG9uc2libGUgZm9yCisgICAgICAgIG1ha2luZyB0aGlzIGRl
dGVybWluYXRpb24uCisKKyAgICAgICAgTm8gZnVuY3Rpb25hbGl0eSB3YXMgY2hhbmdlZC4gU28s
IG5vIG5ldyB0ZXN0cy4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OiBBZGQgZmlsZXMgQ29u
dGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlLmNwcCBhbmQgQ29udGVudFNlY3VyaXR5UG9saWN5
RGlyZWN0aXZlTmFtZXMuY3BwLgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajogQWRkIGZpbGVzIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZS5jcHAgYW5k
IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzLntjcHAsIGh9LgorICAgICAgICAq
IHBhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpj
b25zb2xlTWVzc2FnZUZvclZpb2xhdGlvbik6IE1vdmVkIGZyb20gZmlsZSBDb250ZW50U2VjdXJp
dHlQb2xpY3lEaXJlY3RpdmVMaXN0LmNwcCBhbmQKKyAgICAgICAgaW5jb3Jwb3JhdGVzIHRoZSBm
dW5jdGlvbmFsaXR5IG9mIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OnJlcG9y
dFZpb2xhdGlvbigpLiBNb2RpZmllZAorICAgICAgICB0byB0YWtlIGEgcmVmZXJlbmNlIHRvIHRo
ZSB2aW9sYXRlZCBkaXJlY3RpdmUgKENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZSBvYmpl
Y3QpIGFuZCByZW1vdmVkCisgICAgICAgIHRoZSBib29sZWFuIHBhcmFtZXRlciB2aW9sYXRlc0Rl
ZmF1bHRTcmMgYXMgd2UgY2FuIGRlZHVjZSB0aGlzIGZyb20gdGhlIHZpb2xhdGVkIGRpcmVjdGl2
ZS4KKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeTo6ZGlkUmVjZWl2ZUhl
YWRlcik6IE1vZGlmaWVkIHRvIGNhbGwgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlz
dDo6dmlvbGF0ZWREaXJlY3RpdmVGb3JVbnNhZmVFdmFsKCkuCisgICAgICAgIChXZWJDb3JlOjpD
b250ZW50U2VjdXJpdHlQb2xpY3k6OmZvdW5kSGFzaE9mQ29udGVudEluQWxsUG9saWNpZXMpOiBS
ZW5hbWVkOyBGb3JtZXJseSBuYW1lZCBhbGxQb2xpY2llc0FsbG93SGFzaEZyb21Db250ZW50Lgor
ICAgICAgICBNb2RpZmllZCB0byBlYXJseSByZXR1cm4gaWYgZWl0aGVyIG5vIGFsZ29yaXRobXMg
YXJlIGdpdmVuIG9yIHRoZSBzcGVjaWZpZWQgY29udGVudCB0byBoYXNoIGlzCisgICAgICAgIHRo
ZSBlbXB0eSBzdHJpbmcuCisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3k6
OmFsbG93SmF2YVNjcmlwdFVSTHMpOiBNb3ZlZCBsb2dpYyBmb3IgcmVwb3J0aW5nIGEgdmlvbGF0
aW9uIGZyb20KKyAgICAgICAgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdCBtZW1i
ZXIgZnVuY3Rpb24gb2YgdGhlIHNhbWUgbmFtZSB0byBoZXJlLgorICAgICAgICAoV2ViQ29yZTo6
Q29udGVudFNlY3VyaXR5UG9saWN5OjphbGxvd0lubGluZUV2ZW50SGFuZGxlcnMpOiBEaXR0by4K
KyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeTo6YWxsb3dTY3JpcHRXaXRo
Tm9uY2UpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeTo6
YWxsb3dTdHlsZVdpdGhOb25jZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudFNl
Y3VyaXR5UG9saWN5OjphbGxvd0lubGluZVNjcmlwdCk6IERpdHRvLgorICAgICAgICAoV2ViQ29y
ZTo6Q29udGVudFNlY3VyaXR5UG9saWN5OjphbGxvd0lubGluZVN0eWxlKTogRGl0dG8uCisgICAg
ICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93RXZhbCk6IERpdHRvLgor
ICAgICAgICAoV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5OjphbGxvd0ZyYW1lQW5jZXN0
b3JzKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFs
bG93UGx1Z2luVHlwZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5
UG9saWN5OjphbGxvd1NjcmlwdEZyb21Tb3VyY2UpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6
OkNvbnRlbnRTZWN1cml0eVBvbGljeTo6YWxsb3dPYmplY3RGcm9tU291cmNlKTogRGl0dG8uCisg
ICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93Q2hpbGRGcmFtZUZy
b21Tb3VyY2UpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGlj
eTo6YWxsb3dDaGlsZENvbnRleHRGcm9tU291cmNlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3Jl
OjpDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93SW1hZ2VGcm9tU291cmNlKTogRGl0dG8uCisg
ICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93U3R5bGVGcm9tU291
cmNlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFs
bG93Rm9udEZyb21Tb3VyY2UpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1
cml0eVBvbGljeTo6YWxsb3dNZWRpYUZyb21Tb3VyY2UpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeTo6YWxsb3dDb25uZWN0VG9Tb3VyY2UpOiBEaXR0by4K
KyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeTo6YWxsb3dGb3JtQWN0aW9u
KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93
QmFzZVVSSSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5
OjpyZXBvcnRWaW9sYXRpb24pOiBTaW1wbGlmaWVkIHNpZ25hdHVyZSBieSBoYXZpbmcgaXQgdGFr
ZSBhIHJlZmVyZW5jZSB0bworICAgICAgICBhIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2
ZSBvYmplY3QuIEFsc28gc3BsaXQgZnVuY3Rpb25hbGl0eSBpbnRvIHR3byB2YXJpYW50czogb25l
IHZhcmlhbnQgdGFrZXMgYQorICAgICAgICBwb2ludGVyIHRvIGEgSlNDOjpFeGVjU3RhdGUsIG9u
ZSB2YXJpYW50IHRha2VzIGEgc291cmNlIGZpbGUsIGFuZCBsaW5lIGFuZCBjb2x1bW4gcG9zaXRp
b25zLgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5OjphbGxQb2xpY2ll
c0FsbG93SGFzaEZyb21Db250ZW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNvbnRl
bnRTZWN1cml0eVBvbGljeTo6Z2F0aGVyUmVwb3J0VVJJcyk6IERlbGV0ZWQuCisgICAgICAgICog
cGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5Lmg6CisgICAgICAgIChXZWJDb3JlOjpDb250
ZW50U2VjdXJpdHlQb2xpY3k6OnZpb2xhdGVkRGlyZWN0aXZlSW5BbnlQb2xpY3kpOiBGb3JtZXJs
eSBuYW1lZCBhbGxQb2xpY2llc0FsbG93LiBNb2RpZmllZAorICAgICAgICB0byByZXR1cm4gdGhl
IHZpb2xhdGVkIGRpcmVjdGl2ZS4KKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBv
bGljeTo6YWxsUG9saWNpZXNBbGxvdyk6IERlbGV0ZWQuCisgICAgICAgICogcGFnZS9jc3AvQ29u
dGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlLmNwcDogQWRkZWQuCisgICAgICAgICogcGFnZS9j
c3AvQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlLmg6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlOjpDb250ZW50U2VjdXJpdHlQb2xp
Y3lEaXJlY3RpdmUpOiBNb2RpZmllZCB0byB0YWtlIGEgcmVmZXJlbmNlIHRvIHRoZQorICAgICAg
ICBkaXJlY3RpdmUgbGlzdCB0aGF0IGNvbnRhaW5zIHRoaXMgZGlyZWN0aXZlIGluc3RlYWQgb2Yg
cG9pbnRlciB0byBhIENvbnRlbnRTZWN1cml0eVBvbGljeSBvYmplY3QuCisgICAgICAgIChXZWJD
b3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmU6Om5hbWUpOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZTo6ZGlyZWN0aXZlTGlz
dCk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0
aXZlOjppc0RlZmF1bHRTcmMpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1
cml0eVBvbGljeURpcmVjdGl2ZTo6cG9saWN5KTogRGVsZXRlZC4KKyAgICAgICAgKiBwYWdlL2Nz
cC9Db250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0LmNwcDogUmVtb3ZlIHVudXNlZCBo
ZWFkZXIgPHd0Zi9PcHRpb25hbC5oPi4gQWxzbyByZW1vdmUgaGVhZGVyIHd0Zi90ZXh0L1N0cmlu
Z0J1aWxkZXIuaAorICAgICAgICBhcyB0aGUgZnVuY3Rpb24gdGhhdCBtYWRlIHVzZSBvZiBpdCwg
Y29uc29sZU1lc3NhZ2VGb3JWaW9sYXRpb24sIHdhcyBtb3ZlZCB0byBmaWxlIENvbnRlbnRTZWN1
cml0eVBvbGljeS5jcHAuCisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lE
aXJlY3RpdmVMaXN0Ojp2aW9sYXRlZERpcmVjdGl2ZUZvclVuc2FmZUV2YWwpOiBGb3JtZXJseSBu
YW1lZCBhbGxvd0V2YWwuCisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lE
aXJlY3RpdmVMaXN0Ojp2aW9sYXRlZERpcmVjdGl2ZUZvclVuc2FmZUlubGluZVNjcmlwdCk6IEZv
cm1lcmx5IG5hbWVkIGFsbG93SW5saW5lU2NyaXB0LgorICAgICAgICAoV2ViQ29yZTo6Q29udGVu
dFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6dmlvbGF0ZWREaXJlY3RpdmVGb3JVbnNhZmVJ
bmxpbmVTdHlsZSk6IEZvcm1lcmx5IG5hbWVkIGFsbG93SW5saW5lU3R5bGUuCisgICAgICAgIChX
ZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0Ojp2aW9sYXRlZERpcmVj
dGl2ZUZvclNjcmlwdEhhc2gpOiBGb3JtZXJseSBuYW1lZCBhbGxvd0lubGluZVNjcmlwdFdpdGhI
YXNoLgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlz
dDo6dmlvbGF0ZWREaXJlY3RpdmVGb3JTdHlsZUhhc2gpOiBGb3JtZXJseSBuYW1lZCBhbGxvd0lu
bGluZVN0eWxlV2l0aEhhc2guCisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xp
Y3lEaXJlY3RpdmVMaXN0Ojp2aW9sYXRlZERpcmVjdGl2ZUZvclNjcmlwdE5vbmNlKTogRm9ybWVy
bHkgbmFtZWQgYWxsb3dTY3JpcHRXaXRoTm9uY2UuCisgICAgICAgIChXZWJDb3JlOjpDb250ZW50
U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0Ojp2aW9sYXRlZERpcmVjdGl2ZUZvclN0eWxlTm9u
Y2UpOiBGb3JtZXJseSBuYW1lZCBhbGxvd1N0eWxlV2l0aE5vbmNlLgorICAgICAgICAoV2ViQ29y
ZTo6Q29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6dmlvbGF0ZWREaXJlY3RpdmVG
b3JCYXNlVVJJKTogRm9ybWVybHkgbmFtZWQgYWxsb3dCYXNlVVJJLgorICAgICAgICAoV2ViQ29y
ZTo6Q29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6dmlvbGF0ZWREaXJlY3RpdmVG
b3JDaGlsZENvbnRleHQpOiBGb3JtZXJseSBuYW1lZCBhbGxvd0NoaWxkQ29udGV4dEZyb21Tb3Vy
Y2UuCisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0
Ojp2aW9sYXRlZERpcmVjdGl2ZUZvckNvbm5lY3RTb3VyY2UpOiBGb3JtZXJseSBuYW1lZCBhbGxv
d0Nvbm5lY3RUb1NvdXJjZS4KKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGlj
eURpcmVjdGl2ZUxpc3Q6OnZpb2xhdGVkRGlyZWN0aXZlRm9yRm9udCk6IEZvcm1lcmx5IG5hbWVk
IGFsbG93Rm9udEZyb21Tb3VyY2UuCisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQ
b2xpY3lEaXJlY3RpdmVMaXN0Ojp2aW9sYXRlZERpcmVjdGl2ZUZvckZvcm1BY3Rpb24pOiBGb3Jt
ZXJseSBuYW1lZCBhbGxvd0Zvcm1BY3Rpb24uCisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2Vj
dXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0Ojp2aW9sYXRlZERpcmVjdGl2ZUZvckZyYW1lKTogRm9y
bWVybHkgbmFtZWQgYWxsb3dDaGlsZEZyYW1lRnJvbVNvdXJjZS4KKyAgICAgICAgKFdlYkNvcmU6
OkNvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OnZpb2xhdGVkRGlyZWN0aXZlRm9y
RnJhbWVBbmNlc3Rvcik6IEZvcm1lcmx5IG5hbWVkIGFsbG93RnJhbWVBbmNlc3RvcnMuCisgICAg
ICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0Ojp2aW9sYXRl
ZERpcmVjdGl2ZUZvckltYWdlKTogRm9ybWVybHkgbmFtZWQgYWxsb3dJbWFnZUZyb21Tb3VyY2Uu
CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0Ojp2
aW9sYXRlZERpcmVjdGl2ZUZvck1lZGlhKTogRm9ybWVybHkgbmFtZWQgYWxsb3dNZWRpYUZyb21T
b3VyY2UuCisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVM
aXN0Ojp2aW9sYXRlZERpcmVjdGl2ZUZvck9iamVjdFNvdXJjZSk6IEZvcm1lcmx5IG5hbWVkIGFs
bG93T2JqZWN0RnJvbVNvdXJjZS4KKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBv
bGljeURpcmVjdGl2ZUxpc3Q6OnZpb2xhdGVkRGlyZWN0aXZlRm9yUGx1Z2luVHlwZSk6IEZvcm1l
cmx5IG5hbWVkIGFsbG93UGx1Z2luVHlwZS4KKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1
cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OnZpb2xhdGVkRGlyZWN0aXZlRm9yU2NyaXB0KTogRm9y
bWVybHkgbmFtZWQgYWxsb3dTY3JpcHRGcm9tU291cmNlLgorICAgICAgICAoV2ViQ29yZTo6Q29u
dGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6dmlvbGF0ZWREaXJlY3RpdmVGb3JTdHls
ZSk6IEZvcm1lcmx5IG5hbWVkIGFsbG93U3R5bGVGcm9tU291cmNlLgorICAgICAgICAoV2ViQ29y
ZTo6Q29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6cGFyc2UpOiBVcGRhdGUgY29k
ZSB0byBtYWtlIHVzZSBvZiBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lcyBjb25z
dGFudHMuCisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVM
aXN0OjpzZXRDU1BEaXJlY3RpdmUpOiBQYXNzIHx0aGlzfCBpbnN0ZWFkIG9mIHRoZSBDb250ZW50
U2VjdXJpdHlQb2xpY3kgb2JqZWN0LgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5
UG9saWN5RGlyZWN0aXZlTGlzdDo6YWRkRGlyZWN0aXZlKTogVXBkYXRlIGNvZGUgdG8gbWFrZSB1
c2Ugb2YgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXMgY29uc3RhbnRzLgorICAg
ICAgICAoV2ViQ29yZTo6aXNFeHBlcmltZW50YWxEaXJlY3RpdmVOYW1lKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OmlzQ1NQRGlyZWN0aXZlTmFtZSk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0OjpyZXBvcnRWaW9sYXRp
b24pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Y29uc29sZU1lc3NhZ2VGb3JWaW9sYXRp
b24pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5RGly
ZWN0aXZlTGlzdDo6YWxsb3dKYXZhU2NyaXB0VVJMcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0OjphbGxvd0lubGluZUV2ZW50
SGFuZGxlcnMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9s
aWN5RGlyZWN0aXZlTGlzdDo6YWxsb3dJbmxpbmVTY3JpcHQpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6YWxsb3dJbmxpbmVT
Y3JpcHRXaXRoSGFzaCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJp
dHlQb2xpY3lEaXJlY3RpdmVMaXN0OjphbGxvd1NjcmlwdFdpdGhOb25jZSk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0OjphbGxv
d0lubGluZVN0eWxlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0
eVBvbGljeURpcmVjdGl2ZUxpc3Q6OmFsbG93SW5saW5lU3R5bGVXaXRoSGFzaCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0Ojph
bGxvd1N0eWxlV2l0aE5vbmNlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRT
ZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OmFsbG93RXZhbCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0OjphbGxvd1BsdWdp
blR5cGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5
RGlyZWN0aXZlTGlzdDo6YWxsb3dTY3JpcHRGcm9tU291cmNlKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OmFsbG93T2JqZWN0
RnJvbVNvdXJjZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQ
b2xpY3lEaXJlY3RpdmVMaXN0OjphbGxvd0NoaWxkQ29udGV4dEZyb21Tb3VyY2UpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6
YWxsb3dDaGlsZEZyYW1lRnJvbVNvdXJjZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpD
b250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0OjphbGxvd0ltYWdlRnJvbVNvdXJjZSk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3Rp
dmVMaXN0OjphbGxvd1N0eWxlRnJvbVNvdXJjZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0OjphbGxvd0ZvbnRGcm9tU291cmNl
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeURpcmVj
dGl2ZUxpc3Q6OmFsbG93TWVkaWFGcm9tU291cmNlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OmFsbG93Q29ubmVjdFRvU291
cmNlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeURp
cmVjdGl2ZUxpc3Q6OmFsbG93Rm9ybUFjdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0OjphbGxvd0Jhc2VVUkkpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlz
dDo6YWxsb3dGcmFtZUFuY2VzdG9ycyk6IERlbGV0ZWQuCisgICAgICAgICogcGFnZS9jc3AvQ29u
dGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdC5oOgorICAgICAgICAoV2ViQ29yZTo6Q29u
dGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6ZGVmYXVsdFNyYyk6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6cG9saWN5
KTogQWRkZWQuIEFsc28gYWRkZWQgRklYTUUgY29tbWVudCB0byByZW1vdmUgdGhpcyBmdW5jdGlv
bi4gVGhpcworICAgICAgICBmdW5jdGlvbiBpcyBvbmx5IHVzZWQgYnkgQ29udGVudFNlY3VyaXR5
UG9saWN5TWVkaWFMaXN0RGlyZWN0aXZlIHNvIHRoYXQgaXQgY2FuIGxvZyBhIGNvbnNvbGUgbWVz
c2FnZSBvbiBhIHBhcnNpbmcgZXJyb3IuCisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJp
dHlQb2xpY3lEaXJlY3RpdmVMaXN0OjpkZW55SWZFbmZvcmNpbmdQb2xpY3kpOiBEZWxldGVkLgor
ICAgICAgICAqIHBhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzLmNw
cDogQWRkZWQuCisgICAgICAgICogcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0
aXZlTmFtZXMuaDogQWRkZWQuCisgICAgICAgICogcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9s
aWN5TWVkaWFMaXN0RGlyZWN0aXZlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1
cml0eVBvbGljeU1lZGlhTGlzdERpcmVjdGl2ZTo6Q29udGVudFNlY3VyaXR5UG9saWN5TWVkaWFM
aXN0RGlyZWN0aXZlKTogTW9kaWZpZWQgdG8gdGFrZSBhIHJlZmVyZW5jZSB0byB0aGUKKyAgICAg
ICAgZGlyZWN0aXZlIGxpc3QgdGhhdCBjb250YWlucyB0aGlzIGRpcmVjdGl2ZSBpbnN0ZWFkIG9m
IHBvaW50ZXIgdG8gYSBDb250ZW50U2VjdXJpdHlQb2xpY3kgb2JqZWN0LgorICAgICAgICAoV2Vi
Q29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5TWVkaWFMaXN0RGlyZWN0aXZlOjpwYXJzZSk6IFVw
ZGF0ZWQgY29kZSB0byB1c2UgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6cG9s
aWN5KCkgaW5zdGVhZAorICAgICAgICBvZiBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmU6
OnBvbGljeSgpIGFzIHRoZSBsYXR0ZXIgd2FzIHJlbW92ZWQuIElkZWFsbHkgdGhpcyBjbGFzcyBz
aG91bGQgbm90IG5lZWQgdG8gdXNlIHRoZSBDb250ZW50U2VjdXJpdHlQb2xpY3kKKyAgICAgICAg
b2JqZWN0IHRvIGxvZyBhIGNvbnNvbGUgbWVzc2FnZS4KKyAgICAgICAgKiBwYWdlL2NzcC9Db250
ZW50U2VjdXJpdHlQb2xpY3lNZWRpYUxpc3REaXJlY3RpdmUuaDoKKyAgICAgICAgKiBwYWdlL2Nz
cC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmlzRXhwZXJpbWVudGFsRGlyZWN0aXZlTmFtZSk6IE1vdmVkIGZyb20gZmlsZSBDb250ZW50U2Vj
dXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0LmNwcCBiZWNhdXNlIHRoaXMgZnVuY3Rpb24gaXMgb25s
eSB1c2VkCisgICAgICAgIGluIHRoaXMgZmlsZS4KKyAgICAgICAgKFdlYkNvcmU6OmlzQ1NQRGly
ZWN0aXZlTmFtZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9s
aWN5U291cmNlTGlzdDo6aXNQcm90b2NvbEFsbG93ZWRCeVN0YXIpOiBVcGRhdGUgY29kZSB0byBt
YWtlIHVzZSBvZiBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lcyBjb25zdGFudHMu
CisgICAgICAgICogcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdERpcmVj
dGl2ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VM
aXN0RGlyZWN0aXZlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0RGlyZWN0aXZlKTog
TW9kaWZpZWQgdG8gdGFrZSBhIHJlZmVyZW5jZSB0bworICAgICAgICB0aGUgZGlyZWN0aXZlIGxp
c3QgdGhhdCBjb250YWlucyB0aGlzIGRpcmVjdGl2ZSBpbnN0ZWFkIG9mIHBvaW50ZXIgdG8gYSBD
b250ZW50U2VjdXJpdHlQb2xpY3kgb2JqZWN0LiAKKyAgICAgICAgKiBwYWdlL2NzcC9Db250ZW50
U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0RGlyZWN0aXZlLmg6CisKIDIwMTYtMDMtMjQgIFlvdWVu
biBGYWJsZXQgIDx5b3Vlbm4uZmFibGV0QGNyZi5jYW5vbi5mcj4KIAogICAgICAgICBbRmV0Y2gg
QVBJXSBBZGQgYmFzaWMgbG9hZGluZyBvZiByZXNvdXJjZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5k
ZXggYjM4MjZkMmU5ZTlkODAwY2FiODdiN2E1ZmYzMjQwZjI0ZjgyODJhZi4uMzEzNDQ4YjBhMWM1
MDBjOTE5ZmQ4OGQ4MWU4NjJlMGQzYzhkMjYwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Q01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTIw
NzEsNyArMjA3MSw5IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBwYWdlL2FuaW1hdGlvbi9L
ZXlmcmFtZUFuaW1hdGlvbi5jcHAKIAogICAgIHBhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGlj
eS5jcHAKKyAgICBwYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmUuY3BwCiAg
ICAgcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdC5jcHAKKyAgICBw
YWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lcy5jcHAKICAgICBwYWdl
L2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lNZWRpYUxpc3REaXJlY3RpdmUuY3BwCiAgICAgcGFn
ZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzLmNwcAogICAgIHBhZ2Uv
Y3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBhMTJhOTc4ZDBjN2Q3Nzk5
NDAyMWU5NDZlZTU3YjkzNmNlN2Q5NjFmLi41NjI1MzlkZjM4ZGQ2YTNkNjIzMjY1YzEyY2RkMDZk
MDJhYzU4OGUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCkBAIC02MjEzLDYgKzYyMTMsOCBAQAogCQlDRTEyNTI1MzFBMUJFQzA2MDA4
NjQ0ODAgLyogTlNTdHJpbmdTUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IENFMTI1MjUyMUExQkVDMDYwMDg2NDQ4MCAvKiBOU1N0cmluZ1NQSS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUNFMTI1MjU1
MUExQkVDMEUwMDg2NDQ4MCAvKiBOU1VSTERvd25sb2FkU1BJLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTEyNTI1NDFBMUJFQzBFMDA4NjQ0ODAgLyog
TlNVUkxEb3dubG9hZFNQSS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCUNFMTI1MjVCMUExQzAxODIwMDg2NDQ4MCAvKiBDRk5ldHdvcmtTUEkuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFMTI1MjVBMUEx
QzAxODIwMDg2NDQ4MCAvKiBDRk5ldHdvcmtTUEkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQlDRTI4NDk4NzFDQTM2MERGMDBCNEE1N0YgLyogQ29u
dGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFMjg0OTg2MUNBMzYwREYwMEI0QTU3RiAvKiBDb250
ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lcy5oICovOyB9OworCQlDRTI4NDk4OTFDQTM2
MTQ2MDBCNEE1N0YgLyogQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXMuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0UyODQ5ODgxQ0Ez
NjE0NjAwQjRBNTdGIC8qIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzLmNwcCAq
LzsgfTsKIAkJQ0U2REFERjkxQzU5MUU2QTAwM0Y2QTg4IC8qIENvbnRlbnRTZWN1cml0eVBvbGlj
eVJlc3BvbnNlSGVhZGVycy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBDRTZEQURGNzFDNTkxRTZBMDAzRjZBODggLyogQ29udGVudFNlY3VyaXR5UG9s
aWN5UmVzcG9uc2VIZWFkZXJzLmNwcCAqLzsgfTsKIAkJQ0U2REFERkExQzU5MUU2QTAwM0Y2QTg4
IC8qIENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0U2REFERjgxQzU5MUU2QTAwM0Y2QTg4
IC8qIENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycy5oICovOyB9OwogCQlDRTc5
OUY5NzFDNkE0NkJDMDA5N0I1MTggLyogQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTc5OUY5
NTFDNkE0NkJDMDA5N0I1MTggLyogQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdC5jcHAg
Ki87IH07CkBAIC02MjUwLDYgKzYyNTIsNyBAQAogCQlDRUVGQ0Q3QzE5REIzM0RDMDAzODc2RDcg
LyogUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRUVGQ0Q3QjE5REIzM0RDMDAzODc2RDcgLyogUGxhdGZv
cm1NZWRpYVJlc291cmNlTG9hZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJQ0VGNDE4Q0UxMTc5Njc4QzAwOUQxMTJDIC8qIFZpZXdwb3J0QXJn
dW1lbnRzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IENFRjQxOENDMTE3OTY3OEMwMDlEMTEyQyAvKiBWaWV3cG9ydEFyZ3VtZW50cy5jcHAgKi87IH07
CiAJCUNFRjQxOENGMTE3OTY3OEMwMDlEMTEyQyAvKiBWaWV3cG9ydEFyZ3VtZW50cy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0VGNDE4Q0QxMTc5Njc4
QzAwOUQxMTJDIC8qIFZpZXdwb3J0QXJndW1lbnRzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQ0VGNTlCMjYxQ0EwRTExRDAwNUMzRTEzIC8qIENv
bnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRUY1OUIyNTFDQTBFMTFEMDA1QzNFMTMgLyogQ29udGVu
dFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlLmNwcCAqLzsgfTsKIAkJRDAwMEVCQTIxMUJEQUZENDAw
QzQ3NzI2IC8qIEZyYW1lTG9hZGVyU3RhdGVNYWNoaW5lLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEQwMDBFQkEwMTFCREFGRDQwMEM0NzcyNiAvKiBG
cmFtZUxvYWRlclN0YXRlTWFjaGluZS5jcHAgKi87IH07CiAJCUQwMDBFQkEzMTFCREFGRDQwMEM0
NzcyNiAvKiBGcmFtZUxvYWRlclN0YXRlTWFjaGluZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRDAwMEVCQTExMUJEQUZENDAwQzQ3NzI2IC8qIEZyYW1l
TG9hZGVyU3RhdGVNYWNoaW5lLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJRDAwMEVEMjcxMUMxQjlDRDAwQzQ3NzI2IC8qIFN1YmZyYW1lTG9hZGVy
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEQwMDBF
RDI1MTFDMUI5Q0QwMEM0NzcyNiAvKiBTdWJmcmFtZUxvYWRlci5jcHAgKi87IH07CkBAIC0xNDIz
Miw2ICsxNDIzNSw4IEBACiAJCUNFMTI1MjUyMUExQkVDMDYwMDg2NDQ4MCAvKiBOU1N0cmluZ1NQ
SS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOU1N0cmluZ1NQSS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRTEyNTI1NDFBMUJFQzBFMDA4NjQ0ODAgLyogTlNV
UkxEb3dubG9hZFNQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOU1VSTERv
d25sb2FkU1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFMTI1MjVBMUExQzAx
ODIwMDg2NDQ4MCAvKiBDRk5ldHdvcmtTUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gQ0ZOZXR3b3JrU1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNFMjg0
OTg2MUNBMzYwREYwMEI0QTU3RiAvKiBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1l
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBDb250ZW50U2VjdXJpdHlQb2xp
Y3lEaXJlY3RpdmVOYW1lcy5oOyBwYXRoID0gY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeURpcmVj
dGl2ZU5hbWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNFMjg0OTg4MUNBMzYx
NDYwMEI0QTU3RiAvKiBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lcy5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBDb250ZW50U2VjdXJpdHlQb2xpY3lE
aXJlY3RpdmVOYW1lcy5jcHA7IHBhdGggPSBjc3AvQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0
aXZlTmFtZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRTVDQjFCMzE0RURB
QjZGMDBCQjI3OTUgLyogRXZlbnRTZW5kZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gRXZlbnRTZW5kZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0U2RDg5
Mjk0QzdBQUNFMEFEODlCM0REIC8qIE1hdGhNTE1lbmNsb3NlRWxlbWVudC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBNYXRoTUxNZW5jbG9zZUVsZW1lbnQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0U2REFERjcxQzU5MUU2QTAwM0Y2QTg4IC8qIENvbnRlbnRT
ZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IG5hbWUgPSBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMuY3BwOyBw
YXRoID0gY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycy5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNDI3MSw2ICsxNDI3Niw3IEBACiAJCUNFRUZDRDdC
MTlEQjMzREMwMDM4NzZENyAvKiBQbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFRjQxOENDMTE3OTY3OEMwMDlEMTEyQyAv
KiBWaWV3cG9ydEFyZ3VtZW50cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBWaWV3cG9ydEFyZ3VtZW50cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUNFRjQxOENEMTE3OTY3OEMwMDlEMTEyQyAvKiBWaWV3cG9ydEFyZ3VtZW50cy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWaWV3cG9ydEFyZ3VtZW50cy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlDRUY1OUIyNTFDQTBFMTFEMDA1QzNFMTMgLyogQ29udGVudFNl
Y3VyaXR5UG9saWN5RGlyZWN0aXZlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
bmFtZSA9IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZS5jcHA7IHBhdGggPSBjc3AvQ29u
dGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRDAwMEVCQTAxMUJEQUZENDAwQzQ3NzI2IC8qIEZyYW1lTG9hZGVyU3RhdGVNYWNoaW5l
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZyYW1lTG9hZGVyU3Rh
dGVNYWNoaW5lLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDAwMEVCQTExMUJE
QUZENDAwQzQ3NzI2IC8qIEZyYW1lTG9hZGVyU3RhdGVNYWNoaW5lLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEZyYW1lTG9hZGVyU3RhdGVNYWNoaW5lLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUQwMDBFRDI1MTFDMUI5Q0QwMEM0NzcyNiAvKiBTdWJmcmFtZUxv
YWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdWJmcmFtZUxv
YWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMzE5NSw5ICsyMzIwMSwx
MiBAQAogCQkJY2hpbGRyZW4gPSAoCiAJCQkJOTdDNDcxRDkxMkY5MjVCQzAwODYzNTRCIC8qIENv
bnRlbnRTZWN1cml0eVBvbGljeS5jcHAgKi8sCiAJCQkJOTdDNDcxREExMkY5MjVCRDAwODYzNTRC
IC8qIENvbnRlbnRTZWN1cml0eVBvbGljeS5oICovLAorCQkJCUNFRjU5QjI1MUNBMEUxMUQwMDVD
M0UxMyAvKiBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmUuY3BwICovLAogCQkJCUNFNzk5
RkEyMUM2QTUwM0EwMDk3QjUxOCAvKiBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmUuaCAq
LywKIAkJCQlDRTc5OUY5OTFDNkE0QkNEMDA5N0I1MTggLyogQ29udGVudFNlY3VyaXR5UG9saWN5
RGlyZWN0aXZlTGlzdC5jcHAgKi8sCiAJCQkJQ0U3OTlGOUExQzZBNEJDRDAwOTdCNTE4IC8qIENv
bnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3QuaCAqLywKKwkJCQlDRTI4NDk4ODFDQTM2
MTQ2MDBCNEE1N0YgLyogQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXMuY3BwICov
LAorCQkJCUNFMjg0OTg2MUNBMzYwREYwMEI0QTU3RiAvKiBDb250ZW50U2VjdXJpdHlQb2xpY3lE
aXJlY3RpdmVOYW1lcy5oICovLAogCQkJCUNFN0UxNzgyMUM4M0E0OTEwMEFEMDZBRiAvKiBDb250
ZW50U2VjdXJpdHlQb2xpY3lIYXNoLmggKi8sCiAJCQkJQ0U3OTlGQTUxQzZBNTA1NzAwOTdCNTE4
IC8qIENvbnRlbnRTZWN1cml0eVBvbGljeU1lZGlhTGlzdERpcmVjdGl2ZS5jcHAgKi8sCiAJCQkJ
Q0U3OTlGQTYxQzZBNTA1NzAwOTdCNTE4IC8qIENvbnRlbnRTZWN1cml0eVBvbGljeU1lZGlhTGlz
dERpcmVjdGl2ZS5oICovLApAQCAtMjUyOTksNiArMjUzMDgsNyBAQAogCQkJCTk3QzQ3MURDMTJG
OTI1QkQwMDg2MzU0QiAvKiBDb250ZW50U2VjdXJpdHlQb2xpY3kuaCBpbiBIZWFkZXJzICovLAog
CQkJCUNFNzk5RkE0MUM2QTUwM0EwMDk3QjUxOCAvKiBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJl
Y3RpdmUuaCBpbiBIZWFkZXJzICovLAogCQkJCUNFNzk5RjlDMUM2QTRCQ0QwMDk3QjUxOCAvKiBD
b250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0LmggaW4gSGVhZGVycyAqLywKKwkJCQlD
RTI4NDk4NzFDQTM2MERGMDBCNEE1N0YgLyogQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZl
TmFtZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUNFN0UxNzgzMUM4M0E0OTEwMEFEMDZBRiAvKiBD
b250ZW50U2VjdXJpdHlQb2xpY3lIYXNoLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRTc5OUZBODFD
NkE1MDU3MDA5N0I1MTggLyogQ29udGVudFNlY3VyaXR5UG9saWN5TWVkaWFMaXN0RGlyZWN0aXZl
LmggaW4gSGVhZGVycyAqLywKIAkJCQlDRTZEQURGQTFDNTkxRTZBMDAzRjZBODggLyogQ29udGVu
dFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzLmggaW4gSGVhZGVycyAqLywKQEAgLTI5MjI2
LDcgKzI5MjM2LDkgQEAKIAkJCQlBMTQ5Nzg2RTFBQkFGMzM4MDBDRUY3RTQgLyogQ29udGVudEZp
bHRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBMTQwOTBGQjFBQTUxRTFEMDA5MTE5MUEgLyog
Q29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyQ29jb2EubW0gaW4gU291cmNlcyAqLywKIAkJCQk5
N0M0NzFEQjEyRjkyNUJEMDA4NjM1NEIgLyogQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCUNFRjU5QjI2MUNBMEUxMUQwMDVDM0UxMyAvKiBDb250ZW50U2VjdXJp
dHlQb2xpY3lEaXJlY3RpdmUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0U3OTlGOUIxQzZBNEJD
RDAwOTdCNTE4IC8qIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3QuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJQ0UyODQ5ODkxQ0EzNjE0NjAwQjRBNTdGIC8qIENvbnRlbnRTZWN1cml0
eVBvbGljeURpcmVjdGl2ZU5hbWVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNFNzk5RkE3MUM2
QTUwNTcwMDk3QjUxOCAvKiBDb250ZW50U2VjdXJpdHlQb2xpY3lNZWRpYUxpc3REaXJlY3RpdmUu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0U2REFERjkxQzU5MUU2QTAwM0Y2QTg4IC8qIENvbnRl
bnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlD
RTc5OUY5RjFDNkE0QzE2MDA5N0I1MTggLyogQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlLmNw
cCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29u
dGVudFNlY3VyaXR5UG9saWN5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRT
ZWN1cml0eVBvbGljeS5jcHAKaW5kZXggMzVhYjI4MDMxYWEyNGE3Zjk1NjVlYjE5NmM0MDA0Njky
NTBmYzA5MC4uM2JmMWZhZmMxZTQyMzI2NzhmOWM5NmJlN2VlZTlhODk4M2E1NDFjMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3BwCkBA
IC0yOSw2ICsyOSw3IEBACiAKICNpbmNsdWRlICJDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3Rp
dmUuaCIKICNpbmNsdWRlICJDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0LmgiCisj
aW5jbHVkZSAiQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXMuaCIKICNpbmNsdWRl
ICJDb250ZW50U2VjdXJpdHlQb2xpY3lIYXNoLmgiCiAjaW5jbHVkZSAiQ29udGVudFNlY3VyaXR5
UG9saWN5U291cmNlLmgiCiAjaW5jbHVkZSAiQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlz
dC5oIgpAQCAtNTQsMTIgKzU1LDM3IEBACiAjaW5jbHVkZSA8aW5zcGVjdG9yL1NjcmlwdENhbGxT
dGFjay5oPgogI2luY2x1ZGUgPGluc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2tGYWN0b3J5Lmg+CiAj
aW5jbHVkZSA8d3RmL1RlbXBvcmFyeUNoYW5nZS5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmlu
Z0J1aWxkZXIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0UG9zaXRpb24uaD4KIAogdXNpbmcg
bmFtZXNwYWNlIEluc3BlY3RvcjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitzdGF0aWMgU3Ry
aW5nIGNvbnNvbGVNZXNzYWdlRm9yVmlvbGF0aW9uKGNvbnN0IGNoYXIqIGVmZmVjdGl2ZVZpb2xh
dGVkRGlyZWN0aXZlLCBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmUmIHZpb2xh
dGVkRGlyZWN0aXZlLCBjb25zdCBVUkwmIGJsb2NrZWRVUkwsIGNvbnN0IGNoYXIqIHByZWZpeCwg
Y29uc3QgY2hhciogc3ViamVjdCA9ICJpdCIpCit7CisgICAgU3RyaW5nQnVpbGRlciByZXN1bHQ7
CisgICAgaWYgKHZpb2xhdGVkRGlyZWN0aXZlLmRpcmVjdGl2ZUxpc3QoKS5pc1JlcG9ydE9ubHko
KSkKKyAgICAgICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoIltSZXBvcnQgT25seV0gIik7CisgICAg
cmVzdWx0LmFwcGVuZChwcmVmaXgpOworICAgIGlmICghYmxvY2tlZFVSTC5pc0VtcHR5KCkpIHsK
KyAgICAgICAgcmVzdWx0LmFwcGVuZCgnICcpOworICAgICAgICByZXN1bHQuYXBwZW5kKGJsb2Nr
ZWRVUkwuc3RyaW5nQ2VudGVyRWxsaXBzaXplZFRvTGVuZ3RoKCkpOworICAgIH0KKyAgICByZXN1
bHQuYXBwZW5kTGl0ZXJhbCgiIGJlY2F1c2UgIik7CisgICAgcmVzdWx0LmFwcGVuZChzdWJqZWN0
KTsKKyAgICBpZiAodmlvbGF0ZWREaXJlY3RpdmUuaXNEZWZhdWx0U3JjKCkpIHsKKyAgICAgICAg
cmVzdWx0LmFwcGVuZExpdGVyYWwoIiBhcHBlYXJzIGluIG5laXRoZXIgdGhlICIpOworICAgICAg
ICByZXN1bHQuYXBwZW5kKGVmZmVjdGl2ZVZpb2xhdGVkRGlyZWN0aXZlKTsKKyAgICAgICAgcmVz
dWx0LmFwcGVuZExpdGVyYWwoIiBkaXJlY3RpdmUgbm9yIHRoZSBkZWZhdWx0LXNyYyBkaXJlY3Rp
dmUgb2YgdGhlIENvbnRlbnQgU2VjdXJpdHkgUG9saWN5LiIpOworICAgIH0gZWxzZSB7CisgICAg
ICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFsKCIgZG9lcyBub3QgYXBwZWFyIGluIHRoZSAiKTsKKyAg
ICAgICAgcmVzdWx0LmFwcGVuZChlZmZlY3RpdmVWaW9sYXRlZERpcmVjdGl2ZSk7CisgICAgICAg
IHJlc3VsdC5hcHBlbmRMaXRlcmFsKCIgZGlyZWN0aXZlIG9mIHRoZSBDb250ZW50IFNlY3VyaXR5
IFBvbGljeS4iKTsKKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdC50b1N0cmluZygpOworfQorCiBD
b250ZW50U2VjdXJpdHlQb2xpY3k6OkNvbnRlbnRTZWN1cml0eVBvbGljeShTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KQogICAgIDogbV9zY3JpcHRFeGVjdXRp
b25Db250ZXh0KCZzY3JpcHRFeGVjdXRpb25Db250ZXh0KQogICAgICwgbV9zYW5kYm94RmxhZ3Mo
U2FuZGJveE5vbmUpCkBAIC0xMzMsNyArMTU5LDggQEAgdm9pZCBDb250ZW50U2VjdXJpdHlQb2xp
Y3k6OmRpZFJlY2VpdmVIZWFkZXIoY29uc3QgU3RyaW5nJiBoZWFkZXIsIENvbnRlbnRTZWN1cmkK
ICAgICAgICAgLy8gaGVhZGVyMSxoZWFkZXIyIE9SIGhlYWRlcjEKICAgICAgICAgLy8gICAgICAg
IF4gICAgICAgICAgICAgICAgICBeCiAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxDb250ZW50U2Vj
dXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0PiBwb2xpY3kgPSBDb250ZW50U2VjdXJpdHlQb2xpY3lE
aXJlY3RpdmVMaXN0OjpjcmVhdGUoKnRoaXMsIFN0cmluZyhiZWdpbiwgcG9zaXRpb24gLSBiZWdp
biksIHR5cGUsIHBvbGljeUZyb20pOwotICAgICAgICBpZiAoIXBvbGljeS0+YWxsb3dFdmFsKG51
bGxwdHIsIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OlJlcG9ydGluZ1N0YXR1
czo6U3VwcHJlc3NSZXBvcnQpKQorICAgICAgICBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lE
aXJlY3RpdmUqIHZpb2xhdGVkRGlyZWN0aXZlID0gcG9saWN5LT52aW9sYXRlZERpcmVjdGl2ZUZv
clVuc2FmZUV2YWwoKTsKKyAgICAgICAgaWYgKHZpb2xhdGVkRGlyZWN0aXZlICYmICF2aW9sYXRl
ZERpcmVjdGl2ZS0+ZGlyZWN0aXZlTGlzdCgpLmlzUmVwb3J0T25seSgpKQogICAgICAgICAgICAg
bV9sYXN0UG9saWN5RXZhbERpc2FibGVkRXJyb3JNZXNzYWdlID0gcG9saWN5LT5ldmFsRGlzYWJs
ZWRFcnJvck1lc3NhZ2UoKTsKIAogICAgICAgICBtX3BvbGljaWVzLmFwcGVuZChwb2xpY3kucmVs
ZWFzZSgpKTsKQEAgLTE4OSw4ICsyMTYsMTEgQEAgc3RhdGljIENyeXB0b0RpZ2VzdDo6QWxnb3Jp
dGhtIHRvQ3J5cHRvRGlnZXN0QWxnb3JpdGhtKENvbnRlbnRTZWN1cml0eVBvbGljeUhhc2gKIH0K
IAogdGVtcGxhdGU8dHlwZW5hbWUgUHJlZGljYXRlPgotYm9vbCBDb250ZW50U2VjdXJpdHlQb2xp
Y3k6OmFsbFBvbGljaWVzQWxsb3dIYXNoRnJvbUNvbnRlbnQoUHJlZGljYXRlJiYgcHJlZGljYXRl
LCBjb25zdCBTdHJpbmcmIGNvbnRlbnQsIE9wdGlvblNldDxDb250ZW50U2VjdXJpdHlQb2xpY3lI
YXNoQWxnb3JpdGhtPiBhbGdvcml0aG1zKSBjb25zdAorYm9vbCBDb250ZW50U2VjdXJpdHlQb2xp
Y3k6OmZvdW5kSGFzaE9mQ29udGVudEluQWxsUG9saWNpZXMoUHJlZGljYXRlJiYgcHJlZGljYXRl
LCBjb25zdCBTdHJpbmcmIGNvbnRlbnQsIE9wdGlvblNldDxDb250ZW50U2VjdXJpdHlQb2xpY3lI
YXNoQWxnb3JpdGhtPiBhbGdvcml0aG1zKSBjb25zdAogeworICAgIGlmIChhbGdvcml0aG1zLmlz
RW1wdHkoKSB8fCBjb250ZW50LmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAg
ICAgLy8gRklYTUU6IFdlIHNob3VsZCBjb21wdXRlIHRoZSBkb2N1bWVudCBlbmNvZGluZyBvbmNl
IGFuZCBjYWNoZSBpdCBpbnN0ZWFkIG9mIGNvbXB1dGluZyBpdCBvbiBlYWNoIGludm9jYXRpb24u
CiAgICAgVGV4dEVuY29kaW5nIGRvY3VtZW50RW5jb2Rpbmc7CiAgICAgaWYgKGlzPERvY3VtZW50
PihtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpKQpAQCAtMjA0LDcgKzIzNCw3IEBAIGJvb2wgQ29u
dGVudFNlY3VyaXR5UG9saWN5OjphbGxQb2xpY2llc0FsbG93SGFzaEZyb21Db250ZW50KFByZWRp
Y2F0ZSYmIHByZWRpY2F0CiAgICAgICAgIGF1dG8gY3J5cHRvRGlnZXN0ID0gQ3J5cHRvRGlnZXN0
OjpjcmVhdGUodG9DcnlwdG9EaWdlc3RBbGdvcml0aG0oYWxnb3JpdGhtKSk7CiAgICAgICAgIGNy
eXB0b0RpZ2VzdC0+YWRkQnl0ZXMoY29udGVudENTdHJpbmcuZGF0YSgpLCBjb250ZW50Q1N0cmlu
Zy5sZW5ndGgoKSk7CiAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBkaWdlc3QgPSBjcnlwdG9EaWdl
c3QtPmNvbXB1dGVIYXNoKCk7Ci0gICAgICAgIGlmIChhbGxQb2xpY2llc0FsbG93KHN0ZDo6Zm9y
d2FyZDxQcmVkaWNhdGU+KHByZWRpY2F0ZSksIHN0ZDo6bWFrZV9wYWlyKGFsZ29yaXRobSwgZGln
ZXN0KSkpCisgICAgICAgIGlmICghdmlvbGF0ZWREaXJlY3RpdmVJbkFueVBvbGljeShzdGQ6OmZv
cndhcmQ8UHJlZGljYXRlPihwcmVkaWNhdGUpLCBzdGQ6Om1ha2VfcGFpcihhbGdvcml0aG0sIGRp
Z2VzdCkpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIHJldHVybiBmYWxz
ZTsKQEAgLTIxNCwxNCArMjQ0LDMwIEBAIGJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5OjphbGxv
d0phdmFTY3JpcHRVUkxzKGNvbnN0IFN0cmluZyYgY29udGV4dFVSTCwgY29uc3QKIHsKICAgICBp
ZiAob3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3kpCiAgICAgICAgIHJldHVybiB0cnVlOwot
ICAgIHJldHVybiBhbGxQb2xpY2llc0FsbG93KCZDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3Rp
dmVMaXN0OjphbGxvd0phdmFTY3JpcHRVUkxzLCBjb250ZXh0VVJMLCBjb250ZXh0TGluZSwgQ29u
dGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6UmVwb3J0aW5nU3RhdHVzOjpTZW5kUmVw
b3J0KTsKKyAgICBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmUqIHZpb2xhdGVk
RGlyZWN0aXZlID0gdmlvbGF0ZWREaXJlY3RpdmVJbkFueVBvbGljeSgmQ29udGVudFNlY3VyaXR5
UG9saWN5RGlyZWN0aXZlTGlzdDo6dmlvbGF0ZWREaXJlY3RpdmVGb3JVbnNhZmVJbmxpbmVTY3Jp
cHQpOworICAgIGlmICghdmlvbGF0ZWREaXJlY3RpdmUpCisgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIFN0cmluZyBjb25zb2xlTWVzc2FnZSA9IGNvbnNvbGVNZXNzYWdlRm9yVmlvbGF0aW9uKENv
bnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzOjpzY3JpcHRTcmMsICp2aW9sYXRlZERp
cmVjdGl2ZSwgVVJMKCksICJSZWZ1c2VkIHRvIGV4ZWN1dGUgYSBzY3JpcHQiLCAiaXRzIGhhc2gs
IGl0cyBub25jZSwgb3IgJ3Vuc2FmZS1pbmxpbmUnIik7CisgICAgcmVwb3J0VmlvbGF0aW9uKENv
bnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzOjpzY3JpcHRTcmMsICp2aW9sYXRlZERp
cmVjdGl2ZSwgVVJMKCksIGNvbnNvbGVNZXNzYWdlLCBjb250ZXh0VVJMLCBUZXh0UG9zaXRpb24o
Y29udGV4dExpbmUsIFdURjo6T3JkaW5hbE51bWJlcigpKSk7CisgICAgYm9vbCBpc1JlcG9ydE9u
bHkgPSB2aW9sYXRlZERpcmVjdGl2ZS0+ZGlyZWN0aXZlTGlzdCgpLmlzUmVwb3J0T25seSgpOwor
ICAgIGlmICghaXNSZXBvcnRPbmx5KQorICAgICAgICByZXBvcnRCbG9ja2VkU2NyaXB0RXhlY3V0
aW9uVG9JbnNwZWN0b3IodmlvbGF0ZWREaXJlY3RpdmUtPnRleHQoKSk7CisgICAgcmV0dXJuIGlz
UmVwb3J0T25seTsKIH0KIAogYm9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93SW5saW5l
RXZlbnRIYW5kbGVycyhjb25zdCBTdHJpbmcmIGNvbnRleHRVUkwsIGNvbnN0IFdURjo6T3JkaW5h
bE51bWJlciYgY29udGV4dExpbmUsIGJvb2wgb3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3kp
IGNvbnN0CiB7CiAgICAgaWYgKG92ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9saWN5KQogICAgICAg
ICByZXR1cm4gdHJ1ZTsKLSAgICByZXR1cm4gYWxsUG9saWNpZXNBbGxvdygmQ29udGVudFNlY3Vy
aXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6YWxsb3dJbmxpbmVFdmVudEhhbmRsZXJzLCBjb250ZXh0
VVJMLCBjb250ZXh0TGluZSwgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6UmVw
b3J0aW5nU3RhdHVzOjpTZW5kUmVwb3J0KTsKKyAgICBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xp
Y3lEaXJlY3RpdmUqIHZpb2xhdGVkRGlyZWN0aXZlID0gdmlvbGF0ZWREaXJlY3RpdmVJbkFueVBv
bGljeSgmQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6dmlvbGF0ZWREaXJlY3Rp
dmVGb3JVbnNhZmVJbmxpbmVTY3JpcHQpOworICAgIGlmICghdmlvbGF0ZWREaXJlY3RpdmUpCisg
ICAgICAgIHJldHVybiB0cnVlOworICAgIFN0cmluZyBjb25zb2xlTWVzc2FnZSA9IGNvbnNvbGVN
ZXNzYWdlRm9yVmlvbGF0aW9uKENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzOjpz
Y3JpcHRTcmMsICp2aW9sYXRlZERpcmVjdGl2ZSwgVVJMKCksICJSZWZ1c2VkIHRvIGV4ZWN1dGUg
YSBzY3JpcHQiLCAiaXRzIGhhc2gsIGl0cyBub25jZSwgb3IgJ3Vuc2FmZS1pbmxpbmUnIik7Cisg
ICAgcmVwb3J0VmlvbGF0aW9uKENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzOjpz
Y3JpcHRTcmMsICp2aW9sYXRlZERpcmVjdGl2ZSwgVVJMKCksIGNvbnNvbGVNZXNzYWdlLCBjb250
ZXh0VVJMLCBUZXh0UG9zaXRpb24oY29udGV4dExpbmUsIFdURjo6T3JkaW5hbE51bWJlcigpKSk7
CisgICAgYm9vbCBpc1JlcG9ydE9ubHkgPSB2aW9sYXRlZERpcmVjdGl2ZS0+ZGlyZWN0aXZlTGlz
dCgpLmlzUmVwb3J0T25seSgpOworICAgIGlmICghaXNSZXBvcnRPbmx5KQorICAgICAgICByZXBv
cnRCbG9ja2VkU2NyaXB0RXhlY3V0aW9uVG9JbnNwZWN0b3IodmlvbGF0ZWREaXJlY3RpdmUtPnRl
eHQoKSk7CisgICAgcmV0dXJuIGlzUmVwb3J0T25seTsKIH0KIAogYm9vbCBDb250ZW50U2VjdXJp
dHlQb2xpY3k6OmFsbG93U2NyaXB0V2l0aE5vbmNlKGNvbnN0IFN0cmluZyYgbm9uY2UsIGJvb2wg
b3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3kpIGNvbnN0CkBAIC0yMzEsOSArMjc3LDcgQEAg
Ym9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93U2NyaXB0V2l0aE5vbmNlKGNvbnN0IFN0
cmluZyYgbm9uY2UsIGJvb2wgb3ZlcnIKICAgICBTdHJpbmcgc3RyaXBwZWROb25jZSA9IHN0cmlw
TGVhZGluZ0FuZFRyYWlsaW5nSFRNTFNwYWNlcyhub25jZSk7CiAgICAgaWYgKHN0cmlwcGVkTm9u
Y2UuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKGFsbFBvbGljaWVz
QWxsb3coJkNvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OmFsbG93U2NyaXB0V2l0
aE5vbmNlLCBzdHJpcHBlZE5vbmNlKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgcmV0dXJu
IGZhbHNlOworICAgIHJldHVybiAhdmlvbGF0ZWREaXJlY3RpdmVJbkFueVBvbGljeSgmQ29udGVu
dFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6dmlvbGF0ZWREaXJlY3RpdmVGb3JTY3JpcHRO
b25jZSwgc3RyaXBwZWROb25jZSk7CiB9CiAKIGJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5Ojph
bGxvd1N0eWxlV2l0aE5vbmNlKGNvbnN0IFN0cmluZyYgbm9uY2UsIGJvb2wgb3ZlcnJpZGVDb250
ZW50U2VjdXJpdHlQb2xpY3kpIGNvbnN0CkBAIC0yNDMsMTkgKzI4NywyNCBAQCBib29sIENvbnRl
bnRTZWN1cml0eVBvbGljeTo6YWxsb3dTdHlsZVdpdGhOb25jZShjb25zdCBTdHJpbmcmIG5vbmNl
LCBib29sIG92ZXJyaQogICAgIFN0cmluZyBzdHJpcHBlZE5vbmNlID0gc3RyaXBMZWFkaW5nQW5k
VHJhaWxpbmdIVE1MU3BhY2VzKG5vbmNlKTsKICAgICBpZiAoc3RyaXBwZWROb25jZS5pc0VtcHR5
KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoYWxsUG9saWNpZXNBbGxvdygmQ29u
dGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6YWxsb3dTdHlsZVdpdGhOb25jZSwgc3Ry
aXBwZWROb25jZSkpCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIHJldHVybiBmYWxzZTsKKyAg
ICByZXR1cm4gIXZpb2xhdGVkRGlyZWN0aXZlSW5BbnlQb2xpY3koJkNvbnRlbnRTZWN1cml0eVBv
bGljeURpcmVjdGl2ZUxpc3Q6OnZpb2xhdGVkRGlyZWN0aXZlRm9yU3R5bGVOb25jZSwgc3RyaXBw
ZWROb25jZSk7CiB9CiAKIGJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5OjphbGxvd0lubGluZVNj
cmlwdChjb25zdCBTdHJpbmcmIGNvbnRleHRVUkwsIGNvbnN0IFdURjo6T3JkaW5hbE51bWJlciYg
Y29udGV4dExpbmUsIGNvbnN0IFN0cmluZyYgc2NyaXB0Q29udGVudCwgYm9vbCBvdmVycmlkZUNv
bnRlbnRTZWN1cml0eVBvbGljeSkgY29uc3QKIHsKICAgICBpZiAob3ZlcnJpZGVDb250ZW50U2Vj
dXJpdHlQb2xpY3kpCiAgICAgICAgIHJldHVybiB0cnVlOwotICAgIGlmICghbV9oYXNoQWxnb3Jp
dGhtc0ZvcklubGluZVNjcmlwdHMuaXNFbXB0eSgpICYmICFzY3JpcHRDb250ZW50LmlzRW1wdHko
KQotICAgICAgICAmJiBhbGxQb2xpY2llc0FsbG93SGFzaEZyb21Db250ZW50KCZDb250ZW50U2Vj
dXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0OjphbGxvd0lubGluZVNjcmlwdFdpdGhIYXNoLCBzY3Jp
cHRDb250ZW50LCBtX2hhc2hBbGdvcml0aG1zRm9ySW5saW5lU2NyaXB0cykpCisgICAgaWYgKGZv
dW5kSGFzaE9mQ29udGVudEluQWxsUG9saWNpZXMoJkNvbnRlbnRTZWN1cml0eVBvbGljeURpcmVj
dGl2ZUxpc3Q6OnZpb2xhdGVkRGlyZWN0aXZlRm9yU2NyaXB0SGFzaCwgc2NyaXB0Q29udGVudCwg
bV9oYXNoQWxnb3JpdGhtc0ZvcklubGluZVNjcmlwdHMpKQorICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmUqIHZpb2xhdGVkRGlyZWN0
aXZlID0gdmlvbGF0ZWREaXJlY3RpdmVJbkFueVBvbGljeSgmQ29udGVudFNlY3VyaXR5UG9saWN5
RGlyZWN0aXZlTGlzdDo6dmlvbGF0ZWREaXJlY3RpdmVGb3JVbnNhZmVJbmxpbmVTY3JpcHQpOwor
ICAgIGlmICghdmlvbGF0ZWREaXJlY3RpdmUpCiAgICAgICAgIHJldHVybiB0cnVlOwotICAgIHJl
dHVybiBhbGxQb2xpY2llc0FsbG93KCZDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0
OjphbGxvd0lubGluZVNjcmlwdCwgY29udGV4dFVSTCwgY29udGV4dExpbmUsIENvbnRlbnRTZWN1
cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OlJlcG9ydGluZ1N0YXR1czo6U2VuZFJlcG9ydCk7Cisg
ICAgU3RyaW5nIGNvbnNvbGVNZXNzYWdlID0gY29uc29sZU1lc3NhZ2VGb3JWaW9sYXRpb24oQ29u
dGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXM6OnNjcmlwdFNyYywgKnZpb2xhdGVkRGly
ZWN0aXZlLCBVUkwoKSwgIlJlZnVzZWQgdG8gZXhlY3V0ZSBhIHNjcmlwdCIsICJpdHMgaGFzaCwg
aXRzIG5vbmNlLCBvciAndW5zYWZlLWlubGluZSciKTsKKyAgICByZXBvcnRWaW9sYXRpb24oQ29u
dGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXM6OnNjcmlwdFNyYywgKnZpb2xhdGVkRGly
ZWN0aXZlLCBVUkwoKSwgY29uc29sZU1lc3NhZ2UsIGNvbnRleHRVUkwsIFRleHRQb3NpdGlvbihj
b250ZXh0TGluZSwgV1RGOjpPcmRpbmFsTnVtYmVyKCkpKTsKKyAgICBib29sIGlzUmVwb3J0T25s
eSA9IHZpb2xhdGVkRGlyZWN0aXZlLT5kaXJlY3RpdmVMaXN0KCkuaXNSZXBvcnRPbmx5KCk7Cisg
ICAgaWYgKCFpc1JlcG9ydE9ubHkpCisgICAgICAgIHJlcG9ydEJsb2NrZWRTY3JpcHRFeGVjdXRp
b25Ub0luc3BlY3Rvcih2aW9sYXRlZERpcmVjdGl2ZS0+dGV4dCgpKTsKKyAgICByZXR1cm4gaXNS
ZXBvcnRPbmx5OwogfQogCiBib29sIENvbnRlbnRTZWN1cml0eVBvbGljeTo6YWxsb3dJbmxpbmVT
dHlsZShjb25zdCBTdHJpbmcmIGNvbnRleHRVUkwsIGNvbnN0IFdURjo6T3JkaW5hbE51bWJlciYg
Y29udGV4dExpbmUsIGNvbnN0IFN0cmluZyYgc3R5bGVDb250ZW50LCBib29sIG92ZXJyaWRlQ29u
dGVudFNlY3VyaXR5UG9saWN5KSBjb25zdApAQCAtMjY0LDE3ICszMTMsMjkgQEAgYm9vbCBDb250
ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93SW5saW5lU3R5bGUoY29uc3QgU3RyaW5nJiBjb250ZXh0
VVJMLCBjb25zdCBXVEYKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgaWYgKG1fb3ZlcnJpZGVJ
bmxpbmVTdHlsZUFsbG93ZWQpCiAgICAgICAgIHJldHVybiB0cnVlOwotICAgIGlmICghbV9oYXNo
QWxnb3JpdGhtc0ZvcklubGluZVN0eWxlc2hlZXRzLmlzRW1wdHkoKSAmJiAhc3R5bGVDb250ZW50
LmlzRW1wdHkoKQotICAgICAgICAmJiBhbGxQb2xpY2llc0FsbG93SGFzaEZyb21Db250ZW50KCZD
b250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0OjphbGxvd0lubGluZVN0eWxlV2l0aEhh
c2gsIHN0eWxlQ29udGVudCwgbV9oYXNoQWxnb3JpdGhtc0ZvcklubGluZVN0eWxlc2hlZXRzKSkK
KyAgICBpZiAoZm91bmRIYXNoT2ZDb250ZW50SW5BbGxQb2xpY2llcygmQ29udGVudFNlY3VyaXR5
UG9saWN5RGlyZWN0aXZlTGlzdDo6dmlvbGF0ZWREaXJlY3RpdmVGb3JTdHlsZUhhc2gsIHN0eWxl
Q29udGVudCwgbV9oYXNoQWxnb3JpdGhtc0ZvcklubGluZVN0eWxlc2hlZXRzKSkKICAgICAgICAg
cmV0dXJuIHRydWU7Ci0gICAgcmV0dXJuIGFsbFBvbGljaWVzQWxsb3coJkNvbnRlbnRTZWN1cml0
eVBvbGljeURpcmVjdGl2ZUxpc3Q6OmFsbG93SW5saW5lU3R5bGUsIGNvbnRleHRVUkwsIGNvbnRl
eHRMaW5lLCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0OjpSZXBvcnRpbmdTdGF0
dXM6OlNlbmRSZXBvcnQpOworICAgIGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2
ZSogdmlvbGF0ZWREaXJlY3RpdmUgPSB2aW9sYXRlZERpcmVjdGl2ZUluQW55UG9saWN5KCZDb250
ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0Ojp2aW9sYXRlZERpcmVjdGl2ZUZvclVuc2Fm
ZUlubGluZVN0eWxlKTsKKyAgICBpZiAoIXZpb2xhdGVkRGlyZWN0aXZlKQorICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICBTdHJpbmcgY29uc29sZU1lc3NhZ2UgPSBjb25zb2xlTWVzc2FnZUZvclZp
b2xhdGlvbihDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lczo6c3R5bGVTcmMsICp2
aW9sYXRlZERpcmVjdGl2ZSwgVVJMKCksICJSZWZ1c2VkIHRvIGFwcGx5IGEgc3R5bGVzaGVldCIs
ICJpdHMgaGFzaCwgaXRzIG5vbmNlLCBvciAndW5zYWZlLWlubGluZSciKTsKKyAgICByZXBvcnRW
aW9sYXRpb24oQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXM6OnN0eWxlU3JjLCAq
dmlvbGF0ZWREaXJlY3RpdmUsIFVSTCgpLCBjb25zb2xlTWVzc2FnZSwgY29udGV4dFVSTCwgVGV4
dFBvc2l0aW9uKGNvbnRleHRMaW5lLCBXVEY6Ok9yZGluYWxOdW1iZXIoKSkpOworICAgIHJldHVy
biB2aW9sYXRlZERpcmVjdGl2ZS0+ZGlyZWN0aXZlTGlzdCgpLmlzUmVwb3J0T25seSgpOwogfQog
CiBib29sIENvbnRlbnRTZWN1cml0eVBvbGljeTo6YWxsb3dFdmFsKEpTQzo6RXhlY1N0YXRlKiBz
dGF0ZSwgYm9vbCBvdmVycmlkZUNvbnRlbnRTZWN1cml0eVBvbGljeSkgY29uc3QKIHsKICAgICBp
ZiAob3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3kpCiAgICAgICAgIHJldHVybiB0cnVlOwot
ICAgIHJldHVybiBhbGxQb2xpY2llc0FsbG93KCZDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3Rp
dmVMaXN0OjphbGxvd0V2YWwsIHN0YXRlLCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVM
aXN0OjpSZXBvcnRpbmdTdGF0dXM6OlNlbmRSZXBvcnQpOworICAgIGNvbnN0IENvbnRlbnRTZWN1
cml0eVBvbGljeURpcmVjdGl2ZSogdmlvbGF0ZWREaXJlY3RpdmUgPSB2aW9sYXRlZERpcmVjdGl2
ZUluQW55UG9saWN5KCZDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0Ojp2aW9sYXRl
ZERpcmVjdGl2ZUZvclVuc2FmZUV2YWwpOworICAgIGlmICghdmlvbGF0ZWREaXJlY3RpdmUpCisg
ICAgICAgIHJldHVybiB0cnVlOworICAgIFN0cmluZyBjb25zb2xlTWVzc2FnZSA9IGNvbnNvbGVN
ZXNzYWdlRm9yVmlvbGF0aW9uKENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzOjpz
Y3JpcHRTcmMsICp2aW9sYXRlZERpcmVjdGl2ZSwgVVJMKCksICJSZWZ1c2VkIHRvIGV4ZWN1dGUg
YSBzY3JpcHQiLCAiJ3Vuc2FmZS1ldmFsJyIpOworICAgIHJlcG9ydFZpb2xhdGlvbihDb250ZW50
U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lczo6c2NyaXB0U3JjLCAqdmlvbGF0ZWREaXJlY3Rp
dmUsIFVSTCgpLCBjb25zb2xlTWVzc2FnZSwgc3RhdGUpOworICAgIGJvb2wgaXNSZXBvcnRPbmx5
ID0gdmlvbGF0ZWREaXJlY3RpdmUtPmRpcmVjdGl2ZUxpc3QoKS5pc1JlcG9ydE9ubHkoKTsKKyAg
ICBpZiAoIWlzUmVwb3J0T25seSkKKyAgICAgICAgcmVwb3J0QmxvY2tlZFNjcmlwdEV4ZWN1dGlv
blRvSW5zcGVjdG9yKHZpb2xhdGVkRGlyZWN0aXZlLT50ZXh0KCkpOworICAgIHJldHVybiBpc1Jl
cG9ydE9ubHk7CiB9CiAKIGJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5OjphbGxvd0ZyYW1lQW5j
ZXN0b3JzKGNvbnN0IEZyYW1lJiBmcmFtZSwgY29uc3QgVVJMJiB1cmwsIGJvb2wgb3ZlcnJpZGVD
b250ZW50U2VjdXJpdHlQb2xpY3kpIGNvbnN0CkBAIC0yODQsMTQgKzM0NSwyNCBAQCBib29sIENv
bnRlbnRTZWN1cml0eVBvbGljeTo6YWxsb3dGcmFtZUFuY2VzdG9ycyhjb25zdCBGcmFtZSYgZnJh
bWUsIGNvbnN0IFVSTCYgdQogICAgIEZyYW1lJiB0b3BGcmFtZSA9IGZyYW1lLnRyZWUoKS50b3Ao
KTsKICAgICBpZiAoJmZyYW1lID09ICZ0b3BGcmFtZSkKICAgICAgICAgcmV0dXJuIHRydWU7Ci0g
ICAgcmV0dXJuIGFsbFBvbGljaWVzQWxsb3coJkNvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2
ZUxpc3Q6OmFsbG93RnJhbWVBbmNlc3RvcnMsIGZyYW1lLCB1cmwsIENvbnRlbnRTZWN1cml0eVBv
bGljeURpcmVjdGl2ZUxpc3Q6OlJlcG9ydGluZ1N0YXR1czo6U2VuZFJlcG9ydCk7CisgICAgY29u
c3QgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlKiB2aW9sYXRlZERpcmVjdGl2ZSA9IHZp
b2xhdGVkRGlyZWN0aXZlSW5BbnlQb2xpY3koJkNvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2
ZUxpc3Q6OnZpb2xhdGVkRGlyZWN0aXZlRm9yRnJhbWVBbmNlc3RvciwgZnJhbWUpOworICAgIGlm
ICghdmlvbGF0ZWREaXJlY3RpdmUpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIFN0cmluZyBj
b25zb2xlTWVzc2FnZSA9IGNvbnNvbGVNZXNzYWdlRm9yVmlvbGF0aW9uKENvbnRlbnRTZWN1cml0
eVBvbGljeURpcmVjdGl2ZU5hbWVzOjpmcmFtZUFuY2VzdG9ycywgKnZpb2xhdGVkRGlyZWN0aXZl
LCB1cmwsICJSZWZ1c2VkIHRvIGxvYWQiKTsKKyAgICByZXBvcnRWaW9sYXRpb24oQ29udGVudFNl
Y3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXM6OmZyYW1lQW5jZXN0b3JzLCAqdmlvbGF0ZWREaXJl
Y3RpdmUsIHVybCwgY29uc29sZU1lc3NhZ2UsIFN0cmluZygpLCBUZXh0UG9zaXRpb24oV1RGOjpP
cmRpbmFsTnVtYmVyOjpiZWZvcmVGaXJzdCgpLCBXVEY6Ok9yZGluYWxOdW1iZXIoKSkpOworICAg
IHJldHVybiB2aW9sYXRlZERpcmVjdGl2ZS0+ZGlyZWN0aXZlTGlzdCgpLmlzUmVwb3J0T25seSgp
OwogfQogCiBib29sIENvbnRlbnRTZWN1cml0eVBvbGljeTo6YWxsb3dQbHVnaW5UeXBlKGNvbnN0
IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiB0eXBlQXR0cmlidXRlLCBjb25zdCBVUkwmIHVy
bCwgYm9vbCBvdmVycmlkZUNvbnRlbnRTZWN1cml0eVBvbGljeSkgY29uc3QKIHsKICAgICBpZiAo
b3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3kpCiAgICAgICAgIHJldHVybiB0cnVlOwotICAg
IHJldHVybiBhbGxQb2xpY2llc0FsbG93KCZDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVM
aXN0OjphbGxvd1BsdWdpblR5cGUsIHR5cGUsIHR5cGVBdHRyaWJ1dGUsIHVybCwgQ29udGVudFNl
Y3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6UmVwb3J0aW5nU3RhdHVzOjpTZW5kUmVwb3J0KTsK
KyAgICBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmUqIHZpb2xhdGVkRGlyZWN0
aXZlID0gdmlvbGF0ZWREaXJlY3RpdmVJbkFueVBvbGljeSgmQ29udGVudFNlY3VyaXR5UG9saWN5
RGlyZWN0aXZlTGlzdDo6dmlvbGF0ZWREaXJlY3RpdmVGb3JQbHVnaW5UeXBlLCB0eXBlLCB0eXBl
QXR0cmlidXRlKTsKKyAgICBpZiAoIXZpb2xhdGVkRGlyZWN0aXZlKQorICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICBTdHJpbmcgY29uc29sZU1lc3NhZ2UgPSBjb25zb2xlTWVzc2FnZUZvclZpb2xh
dGlvbihDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lczo6cGx1Z2luVHlwZXMsICp2
aW9sYXRlZERpcmVjdGl2ZSwgdXJsLCAiUmVmdXNlZCB0byBsb2FkIiwgIml0cyBNSU1FIHR5cGUi
KTsKKyAgICByZXBvcnRWaW9sYXRpb24oQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFt
ZXM6OnBsdWdpblR5cGVzLCAqdmlvbGF0ZWREaXJlY3RpdmUsIHVybCwgY29uc29sZU1lc3NhZ2Us
IFN0cmluZygpLCBUZXh0UG9zaXRpb24oV1RGOjpPcmRpbmFsTnVtYmVyOjpiZWZvcmVGaXJzdCgp
LCBXVEY6Ok9yZGluYWxOdW1iZXIoKSkpOworICAgIHJldHVybiB2aW9sYXRlZERpcmVjdGl2ZS0+
ZGlyZWN0aXZlTGlzdCgpLmlzUmVwb3J0T25seSgpOwogfQogCiBib29sIENvbnRlbnRTZWN1cml0
eVBvbGljeTo6YWxsb3dTY3JpcHRGcm9tU291cmNlKGNvbnN0IFVSTCYgdXJsLCBib29sIG92ZXJy
aWRlQ29udGVudFNlY3VyaXR5UG9saWN5KSBjb25zdApAQCAtMzAwLDcgKzM3MSwxMiBAQCBib29s
IENvbnRlbnRTZWN1cml0eVBvbGljeTo6YWxsb3dTY3JpcHRGcm9tU291cmNlKGNvbnN0IFVSTCYg
dXJsLCBib29sIG92ZXJyaWRlQwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBpZiAoU2NoZW1l
UmVnaXN0cnk6OnNjaGVtZVNob3VsZEJ5cGFzc0NvbnRlbnRTZWN1cml0eVBvbGljeSh1cmwucHJv
dG9jb2woKSkpCiAgICAgICAgIHJldHVybiB0cnVlOwotICAgIHJldHVybiBhbGxQb2xpY2llc0Fs
bG93KCZDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0OjphbGxvd1NjcmlwdEZyb21T
b3VyY2UsIHVybCwgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6UmVwb3J0aW5n
U3RhdHVzOjpTZW5kUmVwb3J0KTsKKyAgICBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJl
Y3RpdmUqIHZpb2xhdGVkRGlyZWN0aXZlID0gdmlvbGF0ZWREaXJlY3RpdmVJbkFueVBvbGljeSgm
Q29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6dmlvbGF0ZWREaXJlY3RpdmVGb3JT
Y3JpcHQsIHVybCk7CisgICAgaWYgKCF2aW9sYXRlZERpcmVjdGl2ZSkKKyAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgU3RyaW5nIGNvbnNvbGVNZXNzYWdlID0gY29uc29sZU1lc3NhZ2VGb3JWaW9s
YXRpb24oQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXM6OnNjcmlwdFNyYywgKnZp
b2xhdGVkRGlyZWN0aXZlLCB1cmwsICJSZWZ1c2VkIHRvIGxvYWQiKTsKKyAgICByZXBvcnRWaW9s
YXRpb24oQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXM6OnNjcmlwdFNyYywgKnZp
b2xhdGVkRGlyZWN0aXZlLCB1cmwsIGNvbnNvbGVNZXNzYWdlLCBTdHJpbmcoKSwgVGV4dFBvc2l0
aW9uKFdURjo6T3JkaW5hbE51bWJlcjo6YmVmb3JlRmlyc3QoKSwgV1RGOjpPcmRpbmFsTnVtYmVy
KCkpKTsKKyAgICByZXR1cm4gdmlvbGF0ZWREaXJlY3RpdmUtPmRpcmVjdGl2ZUxpc3QoKS5pc1Jl
cG9ydE9ubHkoKTsKIH0KIAogYm9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93T2JqZWN0
RnJvbVNvdXJjZShjb25zdCBVUkwmIHVybCwgYm9vbCBvdmVycmlkZUNvbnRlbnRTZWN1cml0eVBv
bGljeSkgY29uc3QKQEAgLTMwOSw3ICszODUsMTIgQEAgYm9vbCBDb250ZW50U2VjdXJpdHlQb2xp
Y3k6OmFsbG93T2JqZWN0RnJvbVNvdXJjZShjb25zdCBVUkwmIHVybCwgYm9vbCBvdmVycmlkZUMK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgaWYgKFNjaGVtZVJlZ2lzdHJ5OjpzY2hlbWVTaG91
bGRCeXBhc3NDb250ZW50U2VjdXJpdHlQb2xpY3kodXJsLnByb3RvY29sKCkpKQogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKLSAgICByZXR1cm4gYWxsUG9saWNpZXNBbGxvdygmQ29udGVudFNlY3VyaXR5
UG9saWN5RGlyZWN0aXZlTGlzdDo6YWxsb3dPYmplY3RGcm9tU291cmNlLCB1cmwsIENvbnRlbnRT
ZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OlJlcG9ydGluZ1N0YXR1czo6U2VuZFJlcG9ydCk7
CisgICAgY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlKiB2aW9sYXRlZERpcmVj
dGl2ZSA9IHZpb2xhdGVkRGlyZWN0aXZlSW5BbnlQb2xpY3koJkNvbnRlbnRTZWN1cml0eVBvbGlj
eURpcmVjdGl2ZUxpc3Q6OnZpb2xhdGVkRGlyZWN0aXZlRm9yT2JqZWN0U291cmNlLCB1cmwpOwor
ICAgIGlmICghdmlvbGF0ZWREaXJlY3RpdmUpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIFN0
cmluZyBjb25zb2xlTWVzc2FnZSA9IGNvbnNvbGVNZXNzYWdlRm9yVmlvbGF0aW9uKENvbnRlbnRT
ZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzOjpvYmplY3RTcmMsICp2aW9sYXRlZERpcmVjdGl2
ZSwgdXJsLCAiUmVmdXNlZCB0byBsb2FkIik7CisgICAgcmVwb3J0VmlvbGF0aW9uKENvbnRlbnRT
ZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzOjpvYmplY3RTcmMsICp2aW9sYXRlZERpcmVjdGl2
ZSwgdXJsLCBjb25zb2xlTWVzc2FnZSwgU3RyaW5nKCksIFRleHRQb3NpdGlvbihXVEY6Ok9yZGlu
YWxOdW1iZXI6OmJlZm9yZUZpcnN0KCksIFdURjo6T3JkaW5hbE51bWJlcigpKSk7CisgICAgcmV0
dXJuIHZpb2xhdGVkRGlyZWN0aXZlLT5kaXJlY3RpdmVMaXN0KCkuaXNSZXBvcnRPbmx5KCk7CiB9
CiAKIGJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5OjphbGxvd0NoaWxkRnJhbWVGcm9tU291cmNl
KGNvbnN0IFVSTCYgdXJsLCBib29sIG92ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9saWN5KSBjb25z
dApAQCAtMzE4LDcgKzM5OSwxMiBAQCBib29sIENvbnRlbnRTZWN1cml0eVBvbGljeTo6YWxsb3dD
aGlsZEZyYW1lRnJvbVNvdXJjZShjb25zdCBVUkwmIHVybCwgYm9vbCBvdmVycgogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICBpZiAoU2NoZW1lUmVnaXN0cnk6OnNjaGVtZVNob3VsZEJ5cGFzc0Nv
bnRlbnRTZWN1cml0eVBvbGljeSh1cmwucHJvdG9jb2woKSkpCiAgICAgICAgIHJldHVybiB0cnVl
OwotICAgIHJldHVybiBhbGxQb2xpY2llc0FsbG93KCZDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJl
Y3RpdmVMaXN0OjphbGxvd0NoaWxkRnJhbWVGcm9tU291cmNlLCB1cmwsIENvbnRlbnRTZWN1cml0
eVBvbGljeURpcmVjdGl2ZUxpc3Q6OlJlcG9ydGluZ1N0YXR1czo6U2VuZFJlcG9ydCk7CisgICAg
Y29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlKiB2aW9sYXRlZERpcmVjdGl2ZSA9
IHZpb2xhdGVkRGlyZWN0aXZlSW5BbnlQb2xpY3koJkNvbnRlbnRTZWN1cml0eVBvbGljeURpcmVj
dGl2ZUxpc3Q6OnZpb2xhdGVkRGlyZWN0aXZlRm9yRnJhbWUsIHVybCk7CisgICAgaWYgKCF2aW9s
YXRlZERpcmVjdGl2ZSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgU3RyaW5nIGNvbnNvbGVN
ZXNzYWdlID0gY29uc29sZU1lc3NhZ2VGb3JWaW9sYXRpb24oQ29udGVudFNlY3VyaXR5UG9saWN5
RGlyZWN0aXZlTmFtZXM6OmZyYW1lU3JjLCAqdmlvbGF0ZWREaXJlY3RpdmUsIHVybCwgIlJlZnVz
ZWQgdG8gbG9hZCIpOworICAgIHJlcG9ydFZpb2xhdGlvbihDb250ZW50U2VjdXJpdHlQb2xpY3lE
aXJlY3RpdmVOYW1lczo6ZnJhbWVTcmMsICp2aW9sYXRlZERpcmVjdGl2ZSwgdXJsLCBjb25zb2xl
TWVzc2FnZSwgU3RyaW5nKCksIFRleHRQb3NpdGlvbihXVEY6Ok9yZGluYWxOdW1iZXI6OmJlZm9y
ZUZpcnN0KCksIFdURjo6T3JkaW5hbE51bWJlcigpKSk7CisgICAgcmV0dXJuIHZpb2xhdGVkRGly
ZWN0aXZlLT5kaXJlY3RpdmVMaXN0KCkuaXNSZXBvcnRPbmx5KCk7CiB9CiAKIGJvb2wgQ29udGVu
dFNlY3VyaXR5UG9saWN5OjphbGxvd0NoaWxkQ29udGV4dEZyb21Tb3VyY2UoY29uc3QgVVJMJiB1
cmwsIGJvb2wgb3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3kpIGNvbnN0CkBAIC0zMjcsNyAr
NDEzLDEyIEBAIGJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5OjphbGxvd0NoaWxkQ29udGV4dEZy
b21Tb3VyY2UoY29uc3QgVVJMJiB1cmwsIGJvb2wgb3ZlCiAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgIGlmIChTY2hlbWVSZWdpc3RyeTo6c2NoZW1lU2hvdWxkQnlwYXNzQ29udGVudFNlY3VyaXR5
UG9saWN5KHVybC5wcm90b2NvbCgpKSkKICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgcmV0dXJu
IGFsbFBvbGljaWVzQWxsb3coJkNvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OmFs
bG93Q2hpbGRDb250ZXh0RnJvbVNvdXJjZSwgdXJsLCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJl
Y3RpdmVMaXN0OjpSZXBvcnRpbmdTdGF0dXM6OlNlbmRSZXBvcnQpOworICAgIGNvbnN0IENvbnRl
bnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZSogdmlvbGF0ZWREaXJlY3RpdmUgPSB2aW9sYXRlZERp
cmVjdGl2ZUluQW55UG9saWN5KCZDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0Ojp2
aW9sYXRlZERpcmVjdGl2ZUZvckNoaWxkQ29udGV4dCwgdXJsKTsKKyAgICBpZiAoIXZpb2xhdGVk
RGlyZWN0aXZlKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBTdHJpbmcgY29uc29sZU1lc3Nh
Z2UgPSBjb25zb2xlTWVzc2FnZUZvclZpb2xhdGlvbihDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJl
Y3RpdmVOYW1lczo6Y2hpbGRTcmMsICp2aW9sYXRlZERpcmVjdGl2ZSwgdXJsLCAiUmVmdXNlZCB0
byBsb2FkIik7CisgICAgcmVwb3J0VmlvbGF0aW9uKENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVj
dGl2ZU5hbWVzOjpjaGlsZFNyYywgKnZpb2xhdGVkRGlyZWN0aXZlLCB1cmwsIGNvbnNvbGVNZXNz
YWdlLCBTdHJpbmcoKSwgVGV4dFBvc2l0aW9uKFdURjo6T3JkaW5hbE51bWJlcjo6YmVmb3JlRmly
c3QoKSwgV1RGOjpPcmRpbmFsTnVtYmVyKCkpKTsKKyAgICByZXR1cm4gdmlvbGF0ZWREaXJlY3Rp
dmUtPmRpcmVjdGl2ZUxpc3QoKS5pc1JlcG9ydE9ubHkoKTsKIH0KIAogYm9vbCBDb250ZW50U2Vj
dXJpdHlQb2xpY3k6OmFsbG93SW1hZ2VGcm9tU291cmNlKGNvbnN0IFVSTCYgdXJsLCBib29sIG92
ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9saWN5KSBjb25zdApAQCAtMzM2LDcgKzQyNywxMiBAQCBi
b29sIENvbnRlbnRTZWN1cml0eVBvbGljeTo6YWxsb3dJbWFnZUZyb21Tb3VyY2UoY29uc3QgVVJM
JiB1cmwsIGJvb2wgb3ZlcnJpZGVDbwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBpZiAoU2No
ZW1lUmVnaXN0cnk6OnNjaGVtZVNob3VsZEJ5cGFzc0NvbnRlbnRTZWN1cml0eVBvbGljeSh1cmwu
cHJvdG9jb2woKSkpCiAgICAgICAgIHJldHVybiB0cnVlOwotICAgIHJldHVybiBhbGxQb2xpY2ll
c0FsbG93KCZDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0OjphbGxvd0ltYWdlRnJv
bVNvdXJjZSwgdXJsLCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0OjpSZXBvcnRp
bmdTdGF0dXM6OlNlbmRSZXBvcnQpOworICAgIGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeURp
cmVjdGl2ZSogdmlvbGF0ZWREaXJlY3RpdmUgPSB2aW9sYXRlZERpcmVjdGl2ZUluQW55UG9saWN5
KCZDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0Ojp2aW9sYXRlZERpcmVjdGl2ZUZv
ckltYWdlLCB1cmwpOworICAgIGlmICghdmlvbGF0ZWREaXJlY3RpdmUpCisgICAgICAgIHJldHVy
biB0cnVlOworICAgIFN0cmluZyBjb25zb2xlTWVzc2FnZSA9IGNvbnNvbGVNZXNzYWdlRm9yVmlv
bGF0aW9uKENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzOjppbWdTcmMsICp2aW9s
YXRlZERpcmVjdGl2ZSwgdXJsLCAiUmVmdXNlZCB0byBsb2FkIik7CisgICAgcmVwb3J0VmlvbGF0
aW9uKENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzOjppbWdTcmMsICp2aW9sYXRl
ZERpcmVjdGl2ZSwgdXJsLCBjb25zb2xlTWVzc2FnZSwgU3RyaW5nKCksIFRleHRQb3NpdGlvbihX
VEY6Ok9yZGluYWxOdW1iZXI6OmJlZm9yZUZpcnN0KCksIFdURjo6T3JkaW5hbE51bWJlcigpKSk7
CisgICAgcmV0dXJuIHZpb2xhdGVkRGlyZWN0aXZlLT5kaXJlY3RpdmVMaXN0KCkuaXNSZXBvcnRP
bmx5KCk7CiB9CiAKIGJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5OjphbGxvd1N0eWxlRnJvbVNv
dXJjZShjb25zdCBVUkwmIHVybCwgYm9vbCBvdmVycmlkZUNvbnRlbnRTZWN1cml0eVBvbGljeSkg
Y29uc3QKQEAgLTM0NSw3ICs0NDEsMTIgQEAgYm9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFs
bG93U3R5bGVGcm9tU291cmNlKGNvbnN0IFVSTCYgdXJsLCBib29sIG92ZXJyaWRlQ28KICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgaWYgKFNjaGVtZVJlZ2lzdHJ5OjpzY2hlbWVTaG91bGRCeXBh
c3NDb250ZW50U2VjdXJpdHlQb2xpY3kodXJsLnByb3RvY29sKCkpKQogICAgICAgICByZXR1cm4g
dHJ1ZTsKLSAgICByZXR1cm4gYWxsUG9saWNpZXNBbGxvdygmQ29udGVudFNlY3VyaXR5UG9saWN5
RGlyZWN0aXZlTGlzdDo6YWxsb3dTdHlsZUZyb21Tb3VyY2UsIHVybCwgQ29udGVudFNlY3VyaXR5
UG9saWN5RGlyZWN0aXZlTGlzdDo6UmVwb3J0aW5nU3RhdHVzOjpTZW5kUmVwb3J0KTsKKyAgICBj
b25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmUqIHZpb2xhdGVkRGlyZWN0aXZlID0g
dmlvbGF0ZWREaXJlY3RpdmVJbkFueVBvbGljeSgmQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0
aXZlTGlzdDo6dmlvbGF0ZWREaXJlY3RpdmVGb3JTdHlsZSwgdXJsKTsKKyAgICBpZiAoIXZpb2xh
dGVkRGlyZWN0aXZlKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBTdHJpbmcgY29uc29sZU1l
c3NhZ2UgPSBjb25zb2xlTWVzc2FnZUZvclZpb2xhdGlvbihDb250ZW50U2VjdXJpdHlQb2xpY3lE
aXJlY3RpdmVOYW1lczo6c3R5bGVTcmMsICp2aW9sYXRlZERpcmVjdGl2ZSwgdXJsLCAiUmVmdXNl
ZCB0byBsb2FkIik7CisgICAgcmVwb3J0VmlvbGF0aW9uKENvbnRlbnRTZWN1cml0eVBvbGljeURp
cmVjdGl2ZU5hbWVzOjpzdHlsZVNyYywgKnZpb2xhdGVkRGlyZWN0aXZlLCB1cmwsIGNvbnNvbGVN
ZXNzYWdlLCBTdHJpbmcoKSwgVGV4dFBvc2l0aW9uKFdURjo6T3JkaW5hbE51bWJlcjo6YmVmb3Jl
Rmlyc3QoKSwgV1RGOjpPcmRpbmFsTnVtYmVyKCkpKTsKKyAgICByZXR1cm4gdmlvbGF0ZWREaXJl
Y3RpdmUtPmRpcmVjdGl2ZUxpc3QoKS5pc1JlcG9ydE9ubHkoKTsKIH0KIAogYm9vbCBDb250ZW50
U2VjdXJpdHlQb2xpY3k6OmFsbG93Rm9udEZyb21Tb3VyY2UoY29uc3QgVVJMJiB1cmwsIGJvb2wg
b3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3kpIGNvbnN0CkBAIC0zNTQsNyArNDU1LDEyIEBA
IGJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5OjphbGxvd0ZvbnRGcm9tU291cmNlKGNvbnN0IFVS
TCYgdXJsLCBib29sIG92ZXJyaWRlQ29uCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIGlmIChT
Y2hlbWVSZWdpc3RyeTo6c2NoZW1lU2hvdWxkQnlwYXNzQ29udGVudFNlY3VyaXR5UG9saWN5KHVy
bC5wcm90b2NvbCgpKSkKICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgcmV0dXJuIGFsbFBvbGlj
aWVzQWxsb3coJkNvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OmFsbG93Rm9udEZy
b21Tb3VyY2UsIHVybCwgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6UmVwb3J0
aW5nU3RhdHVzOjpTZW5kUmVwb3J0KTsKKyAgICBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lE
aXJlY3RpdmUqIHZpb2xhdGVkRGlyZWN0aXZlID0gdmlvbGF0ZWREaXJlY3RpdmVJbkFueVBvbGlj
eSgmQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6dmlvbGF0ZWREaXJlY3RpdmVG
b3JGb250LCB1cmwpOworICAgIGlmICghdmlvbGF0ZWREaXJlY3RpdmUpCisgICAgICAgIHJldHVy
biB0cnVlOworICAgIFN0cmluZyBjb25zb2xlTWVzc2FnZSA9IGNvbnNvbGVNZXNzYWdlRm9yVmlv
bGF0aW9uKENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzOjpmb250U3JjLCAqdmlv
bGF0ZWREaXJlY3RpdmUsIHVybCwgIlJlZnVzZWQgdG8gbG9hZCIpOworICAgIHJlcG9ydFZpb2xh
dGlvbihDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lczo6Zm9udFNyYywgKnZpb2xh
dGVkRGlyZWN0aXZlLCB1cmwsIGNvbnNvbGVNZXNzYWdlLCBTdHJpbmcoKSwgVGV4dFBvc2l0aW9u
KFdURjo6T3JkaW5hbE51bWJlcjo6YmVmb3JlRmlyc3QoKSwgV1RGOjpPcmRpbmFsTnVtYmVyKCkp
KTsKKyAgICByZXR1cm4gdmlvbGF0ZWREaXJlY3RpdmUtPmRpcmVjdGl2ZUxpc3QoKS5pc1JlcG9y
dE9ubHkoKTsKIH0KIAogYm9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93TWVkaWFGcm9t
U291cmNlKGNvbnN0IFVSTCYgdXJsLCBib29sIG92ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9saWN5
KSBjb25zdApAQCAtMzYzLDcgKzQ2OSwxMiBAQCBib29sIENvbnRlbnRTZWN1cml0eVBvbGljeTo6
YWxsb3dNZWRpYUZyb21Tb3VyY2UoY29uc3QgVVJMJiB1cmwsIGJvb2wgb3ZlcnJpZGVDbwogICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICBpZiAoU2NoZW1lUmVnaXN0cnk6OnNjaGVtZVNob3VsZEJ5
cGFzc0NvbnRlbnRTZWN1cml0eVBvbGljeSh1cmwucHJvdG9jb2woKSkpCiAgICAgICAgIHJldHVy
biB0cnVlOwotICAgIHJldHVybiBhbGxQb2xpY2llc0FsbG93KCZDb250ZW50U2VjdXJpdHlQb2xp
Y3lEaXJlY3RpdmVMaXN0OjphbGxvd01lZGlhRnJvbVNvdXJjZSwgdXJsLCBDb250ZW50U2VjdXJp
dHlQb2xpY3lEaXJlY3RpdmVMaXN0OjpSZXBvcnRpbmdTdGF0dXM6OlNlbmRSZXBvcnQpOworICAg
IGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZSogdmlvbGF0ZWREaXJlY3RpdmUg
PSB2aW9sYXRlZERpcmVjdGl2ZUluQW55UG9saWN5KCZDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJl
Y3RpdmVMaXN0Ojp2aW9sYXRlZERpcmVjdGl2ZUZvck1lZGlhLCB1cmwpOworICAgIGlmICghdmlv
bGF0ZWREaXJlY3RpdmUpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIFN0cmluZyBjb25zb2xl
TWVzc2FnZSA9IGNvbnNvbGVNZXNzYWdlRm9yVmlvbGF0aW9uKENvbnRlbnRTZWN1cml0eVBvbGlj
eURpcmVjdGl2ZU5hbWVzOjptZWRpYVNyYywgKnZpb2xhdGVkRGlyZWN0aXZlLCB1cmwsICJSZWZ1
c2VkIHRvIGxvYWQiKTsKKyAgICByZXBvcnRWaW9sYXRpb24oQ29udGVudFNlY3VyaXR5UG9saWN5
RGlyZWN0aXZlTmFtZXM6Om1lZGlhU3JjLCAqdmlvbGF0ZWREaXJlY3RpdmUsIHVybCwgY29uc29s
ZU1lc3NhZ2UsIFN0cmluZygpLCBUZXh0UG9zaXRpb24oV1RGOjpPcmRpbmFsTnVtYmVyOjpiZWZv
cmVGaXJzdCgpLCBXVEY6Ok9yZGluYWxOdW1iZXIoKSkpOworICAgIHJldHVybiB2aW9sYXRlZERp
cmVjdGl2ZS0+ZGlyZWN0aXZlTGlzdCgpLmlzUmVwb3J0T25seSgpOwogfQogCiBib29sIENvbnRl
bnRTZWN1cml0eVBvbGljeTo6YWxsb3dDb25uZWN0VG9Tb3VyY2UoY29uc3QgVVJMJiB1cmwsIGJv
b2wgb3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3kpIGNvbnN0CkBAIC0zNzIsNyArNDgzLDEy
IEBAIGJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5OjphbGxvd0Nvbm5lY3RUb1NvdXJjZShjb25z
dCBVUkwmIHVybCwgYm9vbCBvdmVycmlkZUNvCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIGlm
IChTY2hlbWVSZWdpc3RyeTo6c2NoZW1lU2hvdWxkQnlwYXNzQ29udGVudFNlY3VyaXR5UG9saWN5
KHVybC5wcm90b2NvbCgpKSkKICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgcmV0dXJuIGFsbFBv
bGljaWVzQWxsb3coJkNvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OmFsbG93Q29u
bmVjdFRvU291cmNlLCB1cmwsIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OlJl
cG9ydGluZ1N0YXR1czo6U2VuZFJlcG9ydCk7CisgICAgY29uc3QgQ29udGVudFNlY3VyaXR5UG9s
aWN5RGlyZWN0aXZlKiB2aW9sYXRlZERpcmVjdGl2ZSA9IHZpb2xhdGVkRGlyZWN0aXZlSW5BbnlQ
b2xpY3koJkNvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OnZpb2xhdGVkRGlyZWN0
aXZlRm9yQ29ubmVjdFNvdXJjZSwgdXJsKTsKKyAgICBpZiAoIXZpb2xhdGVkRGlyZWN0aXZlKQor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBTdHJpbmcgY29uc29sZU1lc3NhZ2UgPSBjb25zb2xl
TWVzc2FnZUZvclZpb2xhdGlvbihDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lczo6
Y29ubmVjdFNyYywgKnZpb2xhdGVkRGlyZWN0aXZlLCB1cmwsICJSZWZ1c2VkIHRvIGNvbm5lY3Qg
dG8iKTsKKyAgICByZXBvcnRWaW9sYXRpb24oQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZl
TmFtZXM6OmNvbm5lY3RTcmMsICp2aW9sYXRlZERpcmVjdGl2ZSwgdXJsLCBjb25zb2xlTWVzc2Fn
ZSwgU3RyaW5nKCksIFRleHRQb3NpdGlvbihXVEY6Ok9yZGluYWxOdW1iZXI6OmJlZm9yZUZpcnN0
KCksIFdURjo6T3JkaW5hbE51bWJlcigpKSk7CisgICAgcmV0dXJuIHZpb2xhdGVkRGlyZWN0aXZl
LT5kaXJlY3RpdmVMaXN0KCkuaXNSZXBvcnRPbmx5KCk7CiB9CiAKIGJvb2wgQ29udGVudFNlY3Vy
aXR5UG9saWN5OjphbGxvd0Zvcm1BY3Rpb24oY29uc3QgVVJMJiB1cmwsIGJvb2wgb3ZlcnJpZGVD
b250ZW50U2VjdXJpdHlQb2xpY3kpIGNvbnN0CkBAIC0zODEsNyArNDk3LDEyIEBAIGJvb2wgQ29u
dGVudFNlY3VyaXR5UG9saWN5OjphbGxvd0Zvcm1BY3Rpb24oY29uc3QgVVJMJiB1cmwsIGJvb2wg
b3ZlcnJpZGVDb250ZW50CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIGlmIChTY2hlbWVSZWdp
c3RyeTo6c2NoZW1lU2hvdWxkQnlwYXNzQ29udGVudFNlY3VyaXR5UG9saWN5KHVybC5wcm90b2Nv
bCgpKSkKICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgcmV0dXJuIGFsbFBvbGljaWVzQWxsb3co
JkNvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OmFsbG93Rm9ybUFjdGlvbiwgdXJs
LCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0OjpSZXBvcnRpbmdTdGF0dXM6OlNl
bmRSZXBvcnQpOworICAgIGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZSogdmlv
bGF0ZWREaXJlY3RpdmUgPSB2aW9sYXRlZERpcmVjdGl2ZUluQW55UG9saWN5KCZDb250ZW50U2Vj
dXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0Ojp2aW9sYXRlZERpcmVjdGl2ZUZvckZvcm1BY3Rpb24s
IHVybCk7CisgICAgaWYgKCF2aW9sYXRlZERpcmVjdGl2ZSkKKyAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgU3RyaW5nIGNvbnNvbGVNZXNzYWdlID0gY29uc29sZU1lc3NhZ2VGb3JWaW9sYXRpb24o
Q29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXM6OmZvcm1BY3Rpb24sICp2aW9sYXRl
ZERpcmVjdGl2ZSwgdXJsLCAiUmVmdXNlZCB0byBsb2FkIik7CisgICAgcmVwb3J0VmlvbGF0aW9u
KENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzOjpmb3JtQWN0aW9uLCAqdmlvbGF0
ZWREaXJlY3RpdmUsIHVybCwgY29uc29sZU1lc3NhZ2UsIFN0cmluZygpLCBUZXh0UG9zaXRpb24o
V1RGOjpPcmRpbmFsTnVtYmVyOjpiZWZvcmVGaXJzdCgpLCBXVEY6Ok9yZGluYWxOdW1iZXIoKSkp
OworICAgIHJldHVybiB2aW9sYXRlZERpcmVjdGl2ZS0+ZGlyZWN0aXZlTGlzdCgpLmlzUmVwb3J0
T25seSgpOwogfQogCiBib29sIENvbnRlbnRTZWN1cml0eVBvbGljeTo6YWxsb3dCYXNlVVJJKGNv
bnN0IFVSTCYgdXJsLCBib29sIG92ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9saWN5KSBjb25zdApA
QCAtMzkwLDcgKzUxMSwxMiBAQCBib29sIENvbnRlbnRTZWN1cml0eVBvbGljeTo6YWxsb3dCYXNl
VVJJKGNvbnN0IFVSTCYgdXJsLCBib29sIG92ZXJyaWRlQ29udGVudFNlYwogICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICBpZiAoU2NoZW1lUmVnaXN0cnk6OnNjaGVtZVNob3VsZEJ5cGFzc0NvbnRl
bnRTZWN1cml0eVBvbGljeSh1cmwucHJvdG9jb2woKSkpCiAgICAgICAgIHJldHVybiB0cnVlOwot
ICAgIHJldHVybiBhbGxQb2xpY2llc0FsbG93KCZDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3Rp
dmVMaXN0OjphbGxvd0Jhc2VVUkksIHVybCwgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZl
TGlzdDo6UmVwb3J0aW5nU3RhdHVzOjpTZW5kUmVwb3J0KTsKKyAgICBjb25zdCBDb250ZW50U2Vj
dXJpdHlQb2xpY3lEaXJlY3RpdmUqIHZpb2xhdGVkRGlyZWN0aXZlID0gdmlvbGF0ZWREaXJlY3Rp
dmVJbkFueVBvbGljeSgmQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6dmlvbGF0
ZWREaXJlY3RpdmVGb3JCYXNlVVJJLCB1cmwpOworICAgIGlmICghdmlvbGF0ZWREaXJlY3RpdmUp
CisgICAgICAgIHJldHVybiB0cnVlOworICAgIFN0cmluZyBjb25zb2xlTWVzc2FnZSA9IGNvbnNv
bGVNZXNzYWdlRm9yVmlvbGF0aW9uKENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVz
OjpiYXNlVVJJLCAqdmlvbGF0ZWREaXJlY3RpdmUsIHVybCwgIlJlZnVzZWQgdG8gY2hhbmdlIHRo
ZSBkb2N1bWVudCBiYXNlIFVSTCB0byIpOworICAgIHJlcG9ydFZpb2xhdGlvbihDb250ZW50U2Vj
dXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lczo6YmFzZVVSSSwgKnZpb2xhdGVkRGlyZWN0aXZlLCB1
cmwsIGNvbnNvbGVNZXNzYWdlLCBTdHJpbmcoKSwgVGV4dFBvc2l0aW9uKFdURjo6T3JkaW5hbE51
bWJlcjo6YmVmb3JlRmlyc3QoKSwgV1RGOjpPcmRpbmFsTnVtYmVyKCkpKTsKKyAgICByZXR1cm4g
dmlvbGF0ZWREaXJlY3RpdmUtPmRpcmVjdGl2ZUxpc3QoKS5pc1JlcG9ydE9ubHkoKTsKIH0KIAog
Q29udGVudFNlY3VyaXR5UG9saWN5OjpSZWZsZWN0ZWRYU1NEaXNwb3NpdGlvbiBDb250ZW50U2Vj
dXJpdHlQb2xpY3k6OnJlZmxlY3RlZFhTU0Rpc3Bvc2l0aW9uKCkgY29uc3QKQEAgLTQwMywxNSAr
NTI5LDYgQEAgQ29udGVudFNlY3VyaXR5UG9saWN5OjpSZWZsZWN0ZWRYU1NEaXNwb3NpdGlvbiBD
b250ZW50U2VjdXJpdHlQb2xpY3k6OnJlZmxlY3RlZFgKICAgICByZXR1cm4gZGlzcG9zaXRpb247
CiB9CiAKLXZvaWQgQ29udGVudFNlY3VyaXR5UG9saWN5OjpnYXRoZXJSZXBvcnRVUklzKERPTVN0
cmluZ0xpc3QmIGxpc3QpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKG1fc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCk7Ci0gICAgZm9yIChhdXRvJiBwb2xpY3kgOiBtX3BvbGljaWVzKSB7Ci0gICAgICAgIGZv
ciAoYXV0byYgdXJsIDogcG9saWN5LT5yZXBvcnRVUklzKCkpCi0gICAgICAgICAgICBsaXN0LmFw
cGVuZChtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmNvbXBsZXRlVVJMKHVybCkuc3RyaW5nKCkp
OwotICAgIH0KLX0KLQogc3RhdGljIFN0cmluZyBzdHJpcFVSTEZvclVzZUluUmVwb3J0KERvY3Vt
ZW50JiBkb2N1bWVudCwgY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgaWYgKCF1cmwuaXNWYWxpZCgp
KQpAQCAtNDIxLDkgKzUzOCwxNSBAQCBzdGF0aWMgU3RyaW5nIHN0cmlwVVJMRm9yVXNlSW5SZXBv
cnQoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBVUkwmIHVybCkKICAgICByZXR1cm4gZG9jdW1l
bnQuc2VjdXJpdHlPcmlnaW4oKS0+Y2FuUmVxdWVzdCh1cmwpID8gdXJsLnN0cmlwcGVkRm9yVXNl
QXNSZWZlcnJlcigpIDogU2VjdXJpdHlPcmlnaW46OmNyZWF0ZSh1cmwpLmdldCgpLnRvU3RyaW5n
KCk7CiB9CiAKLXZvaWQgQ29udGVudFNlY3VyaXR5UG9saWN5OjpyZXBvcnRWaW9sYXRpb24oY29u
c3QgU3RyaW5nJiBkaXJlY3RpdmVUZXh0LCBjb25zdCBTdHJpbmcmIGVmZmVjdGl2ZURpcmVjdGl2
ZSwgY29uc3QgU3RyaW5nJiBjb25zb2xlTWVzc2FnZSwgY29uc3QgVVJMJiBibG9ja2VkVVJMLCBj
b25zdCBWZWN0b3I8U3RyaW5nPiYgcmVwb3J0VVJJcywgY29uc3QgU3RyaW5nJiBoZWFkZXIsIGNv
bnN0IFN0cmluZyYgY29udGV4dFVSTCwgY29uc3QgV1RGOjpPcmRpbmFsTnVtYmVyJiBjb250ZXh0
TGluZSwgSlNDOjpFeGVjU3RhdGUqIHN0YXRlKSBjb25zdAordm9pZCBDb250ZW50U2VjdXJpdHlQ
b2xpY3k6OnJlcG9ydFZpb2xhdGlvbihjb25zdCBTdHJpbmcmIHZpb2xhdGVkRGlyZWN0aXZlLCBj
b25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmUmIGVmZmVjdGl2ZVZpb2xhdGVkRGly
ZWN0aXZlLCBjb25zdCBVUkwmIGJsb2NrZWRVUkwsIGNvbnN0IFN0cmluZyYgY29uc29sZU1lc3Nh
Z2UsIEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSkgY29uc3QKK3sKKyAgICAvLyBGSVhNRTogRXh0cmFj
dCBzb3VyY2UgZmlsZSBhbmQgc291cmNlIHBvc2l0aW9uIGZyb20gSlNDOjpFeGVjU3RhdGUuCisg
ICAgcmV0dXJuIHJlcG9ydFZpb2xhdGlvbih2aW9sYXRlZERpcmVjdGl2ZSwgZWZmZWN0aXZlVmlv
bGF0ZWREaXJlY3RpdmUsIGJsb2NrZWRVUkwsIGNvbnNvbGVNZXNzYWdlLCBTdHJpbmcoKSwgVGV4
dFBvc2l0aW9uKFdURjo6T3JkaW5hbE51bWJlcjo6YmVmb3JlRmlyc3QoKSwgV1RGOjpPcmRpbmFs
TnVtYmVyOjpiZWZvcmVGaXJzdCgpKSwgc3RhdGUpOworfQorCit2b2lkIENvbnRlbnRTZWN1cml0
eVBvbGljeTo6cmVwb3J0VmlvbGF0aW9uKGNvbnN0IFN0cmluZyYgZWZmZWN0aXZlVmlvbGF0ZWRE
aXJlY3RpdmUsIGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZSYgdmlvbGF0ZWRE
aXJlY3RpdmUsIGNvbnN0IFVSTCYgYmxvY2tlZFVSTCwgY29uc3QgU3RyaW5nJiBjb25zb2xlTWVz
c2FnZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwsIGNvbnN0IFRleHRQb3NpdGlvbiYgc291cmNl
UG9zaXRpb24sIEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSkgY29uc3QKIHsKLSAgICBsb2dUb0NvbnNv
bGUoY29uc29sZU1lc3NhZ2UsIGNvbnRleHRVUkwsIGNvbnRleHRMaW5lLCBzdGF0ZSk7CisgICAg
bG9nVG9Db25zb2xlKGNvbnNvbGVNZXNzYWdlLCBzb3VyY2VVUkwsIHNvdXJjZVBvc2l0aW9uLm1f
bGluZSwgc3RhdGUpOwogCiAgICAgaWYgKCFtX2lzUmVwb3J0aW5nRW5hYmxlZCkKICAgICAgICAg
cmV0dXJuOwpAQCAtNDMyLDkgKzU1NSw3IEBAIHZvaWQgQ29udGVudFNlY3VyaXR5UG9saWN5Ojpy
ZXBvcnRWaW9sYXRpb24oY29uc3QgU3RyaW5nJiBkaXJlY3RpdmVUZXh0LCBjb25zdCBTCiAgICAg
aWYgKCFpczxEb2N1bWVudD4obV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KSAmJiAhbV9mcmFtZSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgLy8gRklYTUU6IFdlIHNob3VsZCBub3QgaGFyZGNvZGUg
dGhlIGRpcmVjdGl2ZSBuYW1lcy4gV2Ugc2hvdWxkIG1ha2UgdXNlIG9mIHRoZSBjb25zdGFudHMg
aW4gQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdC5jcHAuCi0gICAgLy8gU2VlIDxo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU1MTMzPi4KLSAgICBBU1NF
UlQoIW1fZnJhbWUgfHwgZWZmZWN0aXZlRGlyZWN0aXZlID09ICJmcmFtZS1hbmNlc3RvcnMiKTsK
KyAgICBBU1NFUlQoIW1fZnJhbWUgfHwgZWZmZWN0aXZlVmlvbGF0ZWREaXJlY3RpdmUgPT0gQ29u
dGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXM6OmZyYW1lQW5jZXN0b3JzKTsKIAogICAg
IERvY3VtZW50JiBkb2N1bWVudCA9IGlzPERvY3VtZW50PihtX3NjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQpID8gZG93bmNhc3Q8RG9jdW1lbnQ+KCptX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpIDogKm1f
ZnJhbWUtPmRvY3VtZW50KCk7CiAgICAgRnJhbWUqIGZyYW1lID0gZG9jdW1lbnQuZnJhbWUoKTsK
QEAgLTQ1Myw4ICs1NzQsOCBAQCB2b2lkIENvbnRlbnRTZWN1cml0eVBvbGljeTo6cmVwb3J0Vmlv
bGF0aW9uKGNvbnN0IFN0cmluZyYgZGlyZWN0aXZlVGV4dCwgY29uc3QgUwogICAgICAgICBkb2N1
bWVudFVSSSA9IGJsb2NrZWRVUkw7CiAgICAgICAgIGJsb2NrZWRVUkkgPSBibG9ja2VkVVJMOwog
ICAgIH0KLSAgICBTdHJpbmcgdmlvbGF0ZWREaXJlY3RpdmUgPSBkaXJlY3RpdmVUZXh0OwotICAg
IFN0cmluZyBvcmlnaW5hbFBvbGljeSA9IGhlYWRlcjsKKyAgICBTdHJpbmcgdmlvbGF0ZWREaXJl
Y3RpdmVUZXh0ID0gdmlvbGF0ZWREaXJlY3RpdmUudGV4dCgpOworICAgIFN0cmluZyBvcmlnaW5h
bFBvbGljeSA9IHZpb2xhdGVkRGlyZWN0aXZlLmRpcmVjdGl2ZUxpc3QoKS5oZWFkZXIoKTsKICAg
ICBTdHJpbmcgcmVmZXJyZXIgPSBkb2N1bWVudC5yZWZlcnJlcigpOwogICAgIEFTU0VSVChkb2N1
bWVudC5sb2FkZXIoKSk7CiAgICAgdW5zaWduZWQgc2hvcnQgc3RhdHVzQ29kZSA9IGRvY3VtZW50
LnVybCgpLnByb3RvY29sSXMoImh0dHAiKSAmJiBkb2N1bWVudC5sb2FkZXIoKSA/IGRvY3VtZW50
LmxvYWRlcigpLT5yZXNwb25zZSgpLmh0dHBTdGF0dXNDb2RlKCkgOiAwOwpAQCAtNDczLDkgKzU5
NCwxMCBAQCB2b2lkIENvbnRlbnRTZWN1cml0eVBvbGljeTo6cmVwb3J0VmlvbGF0aW9uKGNvbnN0
IFN0cmluZyYgZGlyZWN0aXZlVGV4dCwgY29uc3QgUwogICAgIC8vIDEuIERpc3BhdGNoIHZpb2xh
dGlvbiBldmVudC4KICAgICBib29sIGNhbkJ1YmJsZSA9IGZhbHNlOwogICAgIGJvb2wgY2FuY2Vs
YWJsZSA9IGZhbHNlOwotICAgIGRvY3VtZW50LmVucXVldWVEb2N1bWVudEV2ZW50KFNlY3VyaXR5
UG9saWN5VmlvbGF0aW9uRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuc2VjdXJpdHlwb2xpY3l2
aW9sYXRpb25FdmVudCwgY2FuQnViYmxlLCBjYW5jZWxhYmxlLCBkb2N1bWVudFVSSSwgcmVmZXJy
ZXIsIGJsb2NrZWRVUkksIHZpb2xhdGVkRGlyZWN0aXZlLCBlZmZlY3RpdmVEaXJlY3RpdmUsIG9y
aWdpbmFsUG9saWN5LCBzb3VyY2VGaWxlLCBzdGF0dXNDb2RlLCBsaW5lTnVtYmVyLCBjb2x1bW5O
dW1iZXIpKTsKKyAgICBkb2N1bWVudC5lbnF1ZXVlRG9jdW1lbnRFdmVudChTZWN1cml0eVBvbGlj
eVZpb2xhdGlvbkV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLnNlY3VyaXR5cG9saWN5dmlvbGF0
aW9uRXZlbnQsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgZG9jdW1lbnRVUkksIHJlZmVycmVyLCBi
bG9ja2VkVVJJLCB2aW9sYXRlZERpcmVjdGl2ZVRleHQsIGVmZmVjdGl2ZVZpb2xhdGVkRGlyZWN0
aXZlLCBvcmlnaW5hbFBvbGljeSwgc291cmNlRmlsZSwgc3RhdHVzQ29kZSwgbGluZU51bWJlciwg
Y29sdW1uTnVtYmVyKSk7CiAKICAgICAvLyAyLiBTZW5kIHZpb2xhdGlvbiByZXBvcnQgKGlmIGFw
cGxpY2FibGUpLgorICAgIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiByZXBvcnRVUklzID0gdmlvbGF0
ZWREaXJlY3RpdmUuZGlyZWN0aXZlTGlzdCgpLnJlcG9ydFVSSXMoKTsKICAgICBpZiAocmVwb3J0
VVJJcy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIApAQCAtNDkyLDggKzYxNCw4IEBAIHZv
aWQgQ29udGVudFNlY3VyaXR5UG9saWN5OjpyZXBvcnRWaW9sYXRpb24oY29uc3QgU3RyaW5nJiBk
aXJlY3RpdmVUZXh0LCBjb25zdCBTCiAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gY3NwUmVw
b3J0ID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKICAgICBjc3BSZXBvcnQtPnNldFN0cmlu
ZyhBU0NJSUxpdGVyYWwoImRvY3VtZW50LXVyaSIpLCBkb2N1bWVudFVSSSk7CiAgICAgY3NwUmVw
b3J0LT5zZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJyZWZlcnJlciIpLCByZWZlcnJlcik7Ci0gICAg
Y3NwUmVwb3J0LT5zZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJ2aW9sYXRlZC1kaXJlY3RpdmUiKSwg
ZGlyZWN0aXZlVGV4dCk7Ci0gICAgY3NwUmVwb3J0LT5zZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJl
ZmZlY3RpdmUtZGlyZWN0aXZlIiksIGVmZmVjdGl2ZURpcmVjdGl2ZSk7CisgICAgY3NwUmVwb3J0
LT5zZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJ2aW9sYXRlZC1kaXJlY3RpdmUiKSwgdmlvbGF0ZWRE
aXJlY3RpdmVUZXh0KTsKKyAgICBjc3BSZXBvcnQtPnNldFN0cmluZyhBU0NJSUxpdGVyYWwoImVm
ZmVjdGl2ZS1kaXJlY3RpdmUiKSwgZWZmZWN0aXZlVmlvbGF0ZWREaXJlY3RpdmUpOwogICAgIGNz
cFJlcG9ydC0+c2V0U3RyaW5nKEFTQ0lJTGl0ZXJhbCgib3JpZ2luYWwtcG9saWN5IiksIG9yaWdp
bmFsUG9saWN5KTsKICAgICBjc3BSZXBvcnQtPnNldFN0cmluZyhBU0NJSUxpdGVyYWwoImJsb2Nr
ZWQtdXJpIiksIGJsb2NrZWRVUkkpOwogICAgIGNzcFJlcG9ydC0+c2V0SW50ZWdlcihBU0NJSUxp
dGVyYWwoInN0YXR1cy1jb2RlIiksIHN0YXR1c0NvZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5LmggYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3kuaAppbmRleCBmMzJjMzBkZTdmYmI2M2M1ZThj
Y2U1ZmFlN2MwMGIxYWNkZmViNTQyLi4wZmZlZjljNDAwMTNlNTRmYmVmY2Q3MDRhMjYyMGIxMmZh
YWQ1ZGE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJp
dHlQb2xpY3kuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQ
b2xpY3kuaApAQCAtMzksNiArMzksNyBAQCBjbGFzcyBPcmRpbmFsTnVtYmVyOwogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKK2NsYXNzIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZTsKIGNs
YXNzIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q7CiBjbGFzcyBDb250ZW50U2Vj
dXJpdHlQb2xpY3lTb3VyY2U7CiBjbGFzcyBET01TdHJpbmdMaXN0OwpAQCAtMTM0LDggKzEzNSw2
IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlcG9ydEludmFsaWREaXJlY3RpdmVJbkhUVFBFcXVpdk1l
dGEoY29uc3QgU3RyaW5nJikgY29uc3Q7CiAgICAgdm9pZCByZXBvcnRNaXNzaW5nUmVwb3J0VVJJ
KGNvbnN0IFN0cmluZyYpIGNvbnN0OwogICAgIHZvaWQgcmVwb3J0VW5zdXBwb3J0ZWREaXJlY3Rp
dmUoY29uc3QgU3RyaW5nJikgY29uc3Q7Ci0gICAgdm9pZCByZXBvcnRWaW9sYXRpb24oY29uc3Qg
U3RyaW5nJiBkaXJlY3RpdmVUZXh0LCBjb25zdCBTdHJpbmcmIGVmZmVjdGl2ZURpcmVjdGl2ZSwg
Y29uc3QgU3RyaW5nJiBjb25zb2xlTWVzc2FnZSwgY29uc3QgVVJMJiBibG9ja2VkVVJMLCBjb25z
dCBWZWN0b3I8U3RyaW5nPiYgcmVwb3J0VVJJcywgY29uc3QgU3RyaW5nJiBoZWFkZXIsIGNvbnN0
IFN0cmluZyYgY29udGV4dFVSTCA9IFN0cmluZygpLCBjb25zdCBXVEY6Ok9yZGluYWxOdW1iZXIm
IGNvbnRleHRMaW5lID0gV1RGOjpPcmRpbmFsTnVtYmVyOjpiZWZvcmVGaXJzdCgpLCBKU0M6OkV4
ZWNTdGF0ZSogPSBudWxscHRyKSBjb25zdDsKLSAgICB2b2lkIHJlcG9ydEJsb2NrZWRTY3JpcHRF
eGVjdXRpb25Ub0luc3BlY3Rvcihjb25zdCBTdHJpbmcmIGRpcmVjdGl2ZVRleHQpIGNvbnN0Owog
ICAgIHZvaWQgZW5mb3JjZVNhbmRib3hGbGFncyhTYW5kYm94RmxhZ3Mgc2FuZGJveEZsYWdzKSB7
IG1fc2FuZGJveEZsYWdzIHw9IHNhbmRib3hGbGFnczsgfQogICAgIHZvaWQgYWRkSGFzaEFsZ29y
aXRobXNGb3JJbmxpbmVTY3JpcHRzKE9wdGlvblNldDxDb250ZW50U2VjdXJpdHlQb2xpY3lIYXNo
QWxnb3JpdGhtPiBoYXNoQWxnb3JpdGhtc0ZvcklubGluZVNjcmlwdHMpCiAgICAgewpAQCAtMTU1
LDggKzE1NCwxNCBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBkaWRSZWNlaXZlSGVhZGVyKGNvbnN0
IFN0cmluZyYsIENvbnRlbnRTZWN1cml0eVBvbGljeUhlYWRlclR5cGUsIENvbnRlbnRTZWN1cml0
eVBvbGljeTo6UG9saWN5RnJvbSk7CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBQcmVkaWNhdGUs
IHR5cGVuYW1lLi4uIEFyZ3M+IGJvb2wgYWxsUG9saWNpZXNBbGxvdyhQcmVkaWNhdGUmJiwgQXJn
cyYmLi4uKSBjb25zdCBXQVJOX1VOVVNFRF9SRVRVUk47Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUg
UHJlZGljYXRlPiBib29sIGFsbFBvbGljaWVzQWxsb3dIYXNoRnJvbUNvbnRlbnQoUHJlZGljYXRl
JiYsIGNvbnN0IFN0cmluZyYgY29udGVudCwgT3B0aW9uU2V0PENvbnRlbnRTZWN1cml0eVBvbGlj
eUhhc2hBbGdvcml0aG0+KSBjb25zdCBXQVJOX1VOVVNFRF9SRVRVUk47CisgICAgY29uc3QgVGV4
dEVuY29kaW5nJiBkb2N1bWVudEVuY29kaW5nKCkgY29uc3Q7CisKKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBQcmVkaWNhdGUsIHR5cGVuYW1lLi4uIEFyZ3M+IGNvbnN0IENvbnRlbnRTZWN1cml0eVBv
bGljeURpcmVjdGl2ZSogdmlvbGF0ZWREaXJlY3RpdmVJbkFueVBvbGljeShQcmVkaWNhdGUmJiwg
QXJncyYmLi4uKSBjb25zdCBXQVJOX1VOVVNFRF9SRVRVUk47CisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgUHJlZGljYXRlPiBib29sIGZvdW5kSGFzaE9mQ29udGVudEluQWxsUG9saWNpZXMoUHJlZGlj
YXRlJiYsIGNvbnN0IFN0cmluZyYgY29udGVudCwgT3B0aW9uU2V0PENvbnRlbnRTZWN1cml0eVBv
bGljeUhhc2hBbGdvcml0aG0+KSBjb25zdCBXQVJOX1VOVVNFRF9SRVRVUk47CisKKyAgICB2b2lk
IHJlcG9ydFZpb2xhdGlvbihjb25zdCBTdHJpbmcmIHZpb2xhdGVkRGlyZWN0aXZlLCBjb25zdCBD
b250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmUmIGVmZmVjdGl2ZVZpb2xhdGVkRGlyZWN0aXZl
LCBjb25zdCBVUkwmIGJsb2NrZWRVUkwsIGNvbnN0IFN0cmluZyYgY29uc29sZU1lc3NhZ2UsIEpT
Qzo6RXhlY1N0YXRlKikgY29uc3Q7CisgICAgdm9pZCByZXBvcnRWaW9sYXRpb24oY29uc3QgU3Ry
aW5nJiB2aW9sYXRlZERpcmVjdGl2ZSwgY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0
aXZlJiBlZmZlY3RpdmVWaW9sYXRlZERpcmVjdGl2ZSwgY29uc3QgVVJMJiBibG9ja2VkVVJMLCBj
b25zdCBTdHJpbmcmIGNvbnNvbGVNZXNzYWdlLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCwgY29u
c3QgVGV4dFBvc2l0aW9uJiBzb3VyY2VQb3NpdGlvbiwgSlNDOjpFeGVjU3RhdGUqID0gbnVsbHB0
cikgY29uc3Q7CisgICAgdm9pZCByZXBvcnRCbG9ja2VkU2NyaXB0RXhlY3V0aW9uVG9JbnNwZWN0
b3IoY29uc3QgU3RyaW5nJiBkaXJlY3RpdmVUZXh0KSBjb25zdDsKIAogICAgIC8vIFdlIGNhbiBu
ZXZlciBoYXZlIGJvdGggYSBzY3JpcHQgZXhlY3V0aW9uIGNvbnRleHQgYW5kIGEgZnJhbWUuCiAg
ICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0IHsgbnVs
bHB0ciB9OwpAQCAtMTczLDEzICsxNzgsMTMgQEAgcHJpdmF0ZToKIH07CiAKIHRlbXBsYXRlPHR5
cGVuYW1lIFByZWRpY2F0ZSwgdHlwZW5hbWUuLi4gQXJncz4KLWlubGluZSBib29sIENvbnRlbnRT
ZWN1cml0eVBvbGljeTo6YWxsUG9saWNpZXNBbGxvdyhQcmVkaWNhdGUmJiBwcmVkaWNhdGUsIEFy
Z3MmJi4uLiBhcmdzKSBjb25zdAoraW5saW5lIGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeURp
cmVjdGl2ZSogQ29udGVudFNlY3VyaXR5UG9saWN5Ojp2aW9sYXRlZERpcmVjdGl2ZUluQW55UG9s
aWN5KFByZWRpY2F0ZSYmIHByZWRpY2F0ZSwgQXJncyYmLi4uIGFyZ3MpIGNvbnN0CiB7CiAgICAg
Zm9yIChhdXRvJiBwb2xpY3kgOiBtX3BvbGljaWVzKSB7Ci0gICAgICAgIGlmICghKHBvbGljeS5n
ZXQoKS0+KnByZWRpY2F0ZSkoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKSkKLSAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGlj
eURpcmVjdGl2ZSogdmlvbGF0ZWREaXJlY3RpdmUgPSAocG9saWN5LmdldCgpLT4qcHJlZGljYXRl
KShzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pKQorICAgICAgICAgICAgcmV0dXJuIHZpb2xh
dGVkRGlyZWN0aXZlOwogICAgIH0KLSAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gbnVsbHB0
cjsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNl
Y3VyaXR5UG9saWN5RGlyZWN0aXZlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRl
bnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTgwYzcyZmQ0Y2FiOWM5
Y2MyYzUxOGU3ZTBkZDNhZTBmODAxNzhiMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZS5jcHAKQEAgLTAsMCAr
MSwzOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJDb250
ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmUuaCIKKworI2luY2x1ZGUgIkNvbnRlbnRTZWN1cml0
eVBvbGljeURpcmVjdGl2ZUxpc3QuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitib29sIENv
bnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZTo6aXNEZWZhdWx0U3JjKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gdGhpcyA9PSBtX2RpcmVjdGl2ZUxpc3QuZGVmYXVsdFNyYygpOworfQorCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9D
b250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmUuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3Nw
L0NvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZS5oCmluZGV4IDQ0YWExM2YwMWYwMzBiNzUx
MGZlZGU4NmEyMmM2OGM2ZmIyNDA5MGYuLjVlODI0Zjg3YzAwYjk4ZTFjYWRmNWRlZGMxYTA4N2Yw
MDM1MzA0MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1
cml0eVBvbGljeURpcmVjdGl2ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRl
bnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZS5oCkBAIC0zMSwyNiArMzEsMjggQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1jbGFzcyBDb250ZW50U2VjdXJpdHlQb2xpY3k7CitjbGFzcyBDb250
ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0OwogCiBjbGFzcyBDb250ZW50U2VjdXJpdHlQ
b2xpY3lEaXJlY3RpdmUgewogcHVibGljOgotICAgIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVj
dGl2ZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUsIGNvbnN0IENvbnRl
bnRTZWN1cml0eVBvbGljeSYgcG9saWN5KQorICAgIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVj
dGl2ZShjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0JiBkaXJlY3RpdmVM
aXN0LCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpCiAgICAgICAgIDog
bV9uYW1lKG5hbWUpCiAgICAgICAgICwgbV90ZXh0KG5hbWUgKyAnICcgKyB2YWx1ZSkKLSAgICAg
ICAgLCBtX3BvbGljeShwb2xpY3kpCisgICAgICAgICwgbV9kaXJlY3RpdmVMaXN0KGRpcmVjdGl2
ZUxpc3QpCiAgICAgewogICAgIH0KIAorICAgIGNvbnN0IFN0cmluZyYgbmFtZSgpIGNvbnN0IHsg
cmV0dXJuIG1fbmFtZTsgfQogICAgIGNvbnN0IFN0cmluZyYgdGV4dCgpIGNvbnN0IHsgcmV0dXJu
IG1fdGV4dDsgfQogCi1wcm90ZWN0ZWQ6Ci0gICAgY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5
JiBwb2xpY3koKSBjb25zdCB7IHJldHVybiBtX3BvbGljeTsgfQorICAgIGNvbnN0IENvbnRlbnRT
ZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3QmIGRpcmVjdGl2ZUxpc3QoKSBjb25zdCB7IHJldHVy
biBtX2RpcmVjdGl2ZUxpc3Q7IH0KKworICAgIGJvb2wgaXNEZWZhdWx0U3JjKCkgY29uc3Q7CiAK
IHByaXZhdGU6CiAgICAgU3RyaW5nIG1fbmFtZTsKICAgICBTdHJpbmcgbV90ZXh0OwotICAgIGNv
bnN0IENvbnRlbnRTZWN1cml0eVBvbGljeSYgbV9wb2xpY3k7CisgICAgY29uc3QgQ29udGVudFNl
Y3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdCYgbV9kaXJlY3RpdmVMaXN0OwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29u
dGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0LmNwcAppbmRleCA5NDU1M2Ux
ZmZhNzhjNDFjZTg2MjI4OGJjNGRmOGVhNWRmMzJiYmVjLi4wMDQ0ZTg3OWQ4MjRiYzBhZmQzZDFl
MzBkNWI3NjdlYmExM2U4MjhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9D
b250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0LmNwcApAQCAtMjcs
NzQgKzI3LDE1IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ29udGVudFNlY3Vy
aXR5UG9saWN5RGlyZWN0aXZlTGlzdC5oIgogCisjaW5jbHVkZSAiQ29udGVudFNlY3VyaXR5UG9s
aWN5RGlyZWN0aXZlTmFtZXMuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkZy
YW1lLmgiCiAjaW5jbHVkZSAiUGFyc2luZ1V0aWxpdGllcy5oIgogI2luY2x1ZGUgIlNlY3VyaXR5
Q29udGV4dC5oIgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgotI2luY2x1ZGUgPHd0
Zi9PcHRpb25hbC5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi0vLyBDU1AgMS4wIERpcmVjdGl2ZXMKLXN0YXRpYyBjb25zdCBj
aGFyIGNvbm5lY3RTcmNbXSA9ICJjb25uZWN0LXNyYyI7Ci1zdGF0aWMgY29uc3QgY2hhciBkZWZh
dWx0U3JjW10gPSAiZGVmYXVsdC1zcmMiOwotc3RhdGljIGNvbnN0IGNoYXIgZm9udFNyY1tdID0g
ImZvbnQtc3JjIjsKLXN0YXRpYyBjb25zdCBjaGFyIGZyYW1lU3JjW10gPSAiZnJhbWUtc3JjIjsK
LXN0YXRpYyBjb25zdCBjaGFyIGltZ1NyY1tdID0gImltZy1zcmMiOwotc3RhdGljIGNvbnN0IGNo
YXIgbWVkaWFTcmNbXSA9ICJtZWRpYS1zcmMiOwotc3RhdGljIGNvbnN0IGNoYXIgb2JqZWN0U3Jj
W10gPSAib2JqZWN0LXNyYyI7Ci1zdGF0aWMgY29uc3QgY2hhciByZXBvcnRVUklbXSA9ICJyZXBv
cnQtdXJpIjsKLXN0YXRpYyBjb25zdCBjaGFyIHNhbmRib3hbXSA9ICJzYW5kYm94IjsKLXN0YXRp
YyBjb25zdCBjaGFyIHNjcmlwdFNyY1tdID0gInNjcmlwdC1zcmMiOwotc3RhdGljIGNvbnN0IGNo
YXIgc3R5bGVTcmNbXSA9ICJzdHlsZS1zcmMiOwotCi0vLyBDU1AgMS4xIERpcmVjdGl2ZXMKLXN0
YXRpYyBjb25zdCBjaGFyIGJhc2VVUklbXSA9ICJiYXNlLXVyaSI7Ci1zdGF0aWMgY29uc3QgY2hh
ciBjaGlsZFNyY1tdID0gImNoaWxkLXNyYyI7Ci1zdGF0aWMgY29uc3QgY2hhciBmb3JtQWN0aW9u
W10gPSAiZm9ybS1hY3Rpb24iOwotc3RhdGljIGNvbnN0IGNoYXIgcGx1Z2luVHlwZXNbXSA9ICJw
bHVnaW4tdHlwZXMiOwotc3RhdGljIGNvbnN0IGNoYXIgZnJhbWVBbmNlc3RvcnNbXSA9ICJmcmFt
ZS1hbmNlc3RvcnMiOwotI2lmIEVOQUJMRShDU1BfTkVYVCkKLXN0YXRpYyBjb25zdCBjaGFyIHJl
ZmxlY3RlZFhTU1tdID0gInJlZmxlY3RlZC14c3MiOwotI2VuZGlmCi0KLSNpZiBFTkFCTEUoQ1NQ
X05FWFQpCi0KLXN0YXRpYyBpbmxpbmUgYm9vbCBpc0V4cGVyaW1lbnRhbERpcmVjdGl2ZU5hbWUo
Y29uc3QgU3RyaW5nJiBuYW1lKQotewotICAgIHJldHVybiBlcXVhbExldHRlcnNJZ25vcmluZ0FT
Q0lJQ2FzZShuYW1lLCByZWZsZWN0ZWRYU1MpOwotfQotCi0jZWxzZQotCi1zdGF0aWMgaW5saW5l
IGJvb2wgaXNFeHBlcmltZW50YWxEaXJlY3RpdmVOYW1lKGNvbnN0IFN0cmluZyYpCi17Ci0gICAg
cmV0dXJuIGZhbHNlOwotfQotCi0jZW5kaWYKLQotYm9vbCBpc0NTUERpcmVjdGl2ZU5hbWUoY29u
c3QgU3RyaW5nJiBuYW1lKQotewotICAgIHJldHVybiBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJ
Q2FzZShuYW1lLCBiYXNlVVJJKQotICAgICAgICB8fCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJ
Q2FzZShuYW1lLCBjb25uZWN0U3JjKQotICAgICAgICB8fCBlcXVhbExldHRlcnNJZ25vcmluZ0FT
Q0lJQ2FzZShuYW1lLCBkZWZhdWx0U3JjKQotICAgICAgICB8fCBlcXVhbExldHRlcnNJZ25vcmlu
Z0FTQ0lJQ2FzZShuYW1lLCBmb250U3JjKQotICAgICAgICB8fCBlcXVhbExldHRlcnNJZ25vcmlu
Z0FTQ0lJQ2FzZShuYW1lLCBmb3JtQWN0aW9uKQotICAgICAgICB8fCBlcXVhbExldHRlcnNJZ25v
cmluZ0FTQ0lJQ2FzZShuYW1lLCBmcmFtZVNyYykKLSAgICAgICAgfHwgZXF1YWxMZXR0ZXJzSWdu
b3JpbmdBU0NJSUNhc2UobmFtZSwgaW1nU3JjKQotICAgICAgICB8fCBlcXVhbExldHRlcnNJZ25v
cmluZ0FTQ0lJQ2FzZShuYW1lLCBtZWRpYVNyYykKLSAgICAgICAgfHwgZXF1YWxMZXR0ZXJzSWdu
b3JpbmdBU0NJSUNhc2UobmFtZSwgb2JqZWN0U3JjKQotICAgICAgICB8fCBlcXVhbExldHRlcnNJ
Z25vcmluZ0FTQ0lJQ2FzZShuYW1lLCBwbHVnaW5UeXBlcykKLSAgICAgICAgfHwgZXF1YWxMZXR0
ZXJzSWdub3JpbmdBU0NJSUNhc2UobmFtZSwgcmVwb3J0VVJJKQotICAgICAgICB8fCBlcXVhbExl
dHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShuYW1lLCBzYW5kYm94KQotICAgICAgICB8fCBlcXVhbExl
dHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShuYW1lLCBzY3JpcHRTcmMpCi0gICAgICAgIHx8IGVxdWFs
TGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG5hbWUsIHN0eWxlU3JjKQotICAgICAgICB8fCBpc0V4
cGVyaW1lbnRhbERpcmVjdGl2ZU5hbWUobmFtZSk7Ci19Ci0KIHN0YXRpYyBib29sIGlzRGlyZWN0
aXZlTmFtZUNoYXJhY3RlcihVQ2hhciBjKQogewogICAgIHJldHVybiBpc0FTQ0lJQWxwaGFudW1l
cmljKGMpIHx8IGMgPT0gJy0nOwpAQCAtMTgxLDI4OSArMTIyLDE3MiBAQCBzdGQ6OnVuaXF1ZV9w
dHI8Q29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdD4gQ29udGVudFNlY3VyaXR5UG9s
aWN5RGlyZWN0aQogICAgIHJldHVybiBkaXJlY3RpdmVzOwogfQogCi12b2lkIENvbnRlbnRTZWN1
cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OnJlcG9ydFZpb2xhdGlvbihjb25zdCBTdHJpbmcmIGRp
cmVjdGl2ZVRleHQsIGNvbnN0IFN0cmluZyYgZWZmZWN0aXZlRGlyZWN0aXZlLCBjb25zdCBTdHJp
bmcmIGNvbnNvbGVNZXNzYWdlLCBjb25zdCBVUkwmIGJsb2NrZWRVUkwsIGNvbnN0IFN0cmluZyYg
Y29udGV4dFVSTCwgY29uc3QgV1RGOjpPcmRpbmFsTnVtYmVyJiBjb250ZXh0TGluZSwgSlNDOjpF
eGVjU3RhdGUqIHN0YXRlKSBjb25zdAotewotICAgIFN0cmluZyBtZXNzYWdlID0gbV9yZXBvcnRP
bmx5ID8gIltSZXBvcnQgT25seV0gIiArIGNvbnNvbGVNZXNzYWdlIDogY29uc29sZU1lc3NhZ2U7
Ci0gICAgbV9wb2xpY3kucmVwb3J0VmlvbGF0aW9uKGRpcmVjdGl2ZVRleHQsIGVmZmVjdGl2ZURp
cmVjdGl2ZSwgbWVzc2FnZSwgYmxvY2tlZFVSTCwgbV9yZXBvcnRVUklzLCBtX2hlYWRlciwgY29u
dGV4dFVSTCwgY29udGV4dExpbmUsIHN0YXRlKTsKLX0KLQogQ29udGVudFNlY3VyaXR5UG9saWN5
U291cmNlTGlzdERpcmVjdGl2ZSogQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6
b3BlcmF0aXZlRGlyZWN0aXZlKENvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3REaXJlY3Rp
dmUqIGRpcmVjdGl2ZSkgY29uc3QKIHsKICAgICByZXR1cm4gZGlyZWN0aXZlID8gZGlyZWN0aXZl
IDogbV9kZWZhdWx0U3JjLmdldCgpOwogfQogCi1zdGF0aWMgU3RyaW5nIGNvbnNvbGVNZXNzYWdl
Rm9yVmlvbGF0aW9uKGNvbnN0IFN0cmluZyYgZWZmZWN0aXZlRGlyZWN0aXZlLCBjb25zdCBVUkwm
IGJsb2NrZWRVUkwsIGJvb2wgdmlvbGF0ZXNEZWZhdWx0U3JjLCBjb25zdCBjaGFyKiBwcmVmaXgs
IGNvbnN0IGNoYXIqIHN1YmplY3QgPSAiaXQiKQotewotICAgIFN0cmluZ0J1aWxkZXIgcmVzdWx0
OwotICAgIHJlc3VsdC5hcHBlbmQocHJlZml4KTsKLSAgICBpZiAoIWJsb2NrZWRVUkwuaXNFbXB0
eSgpKSB7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQoJyAnKTsKLSAgICAgICAgcmVzdWx0LmFwcGVu
ZChibG9ja2VkVVJMLnN0cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0aCgpKTsKLSAgICB9Ci0g
ICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoIiBiZWNhdXNlICIpOwotICAgIHJlc3VsdC5hcHBlbmQo
c3ViamVjdCk7Ci0gICAgaWYgKHZpb2xhdGVzRGVmYXVsdFNyYykgewotICAgICAgICByZXN1bHQu
YXBwZW5kTGl0ZXJhbCgiIGFwcGVhcnMgaW4gbmVpdGhlciB0aGUgIik7Ci0gICAgICAgIHJlc3Vs
dC5hcHBlbmQoZWZmZWN0aXZlRGlyZWN0aXZlKTsKLSAgICAgICAgcmVzdWx0LmFwcGVuZExpdGVy
YWwoIiBkaXJlY3RpdmUgbm9yIHRoZSBkZWZhdWx0LXNyYyBkaXJlY3RpdmUgb2YgdGhlIENvbnRl
bnQgU2VjdXJpdHkgUG9saWN5LiIpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIHJlc3VsdC5hcHBl
bmRMaXRlcmFsKCIgZG9lcyBub3QgYXBwZWFyIGluIHRoZSAiKTsKLSAgICAgICAgcmVzdWx0LmFw
cGVuZChlZmZlY3RpdmVEaXJlY3RpdmUpOwotICAgICAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgi
IGRpcmVjdGl2ZSBvZiB0aGUgQ29udGVudCBTZWN1cml0eSBQb2xpY3kuIik7Ci0gICAgfQotICAg
IHJldHVybiByZXN1bHQudG9TdHJpbmcoKTsKLX0KLQotYm9vbCBDb250ZW50U2VjdXJpdHlQb2xp
Y3lEaXJlY3RpdmVMaXN0OjphbGxvd0phdmFTY3JpcHRVUkxzKGNvbnN0IFN0cmluZyYgY29udGV4
dFVSTCwgY29uc3QgV1RGOjpPcmRpbmFsTnVtYmVyJiBjb250ZXh0TGluZSwgUmVwb3J0aW5nU3Rh
dHVzIHJlcG9ydGluZ1N0YXR1cykgY29uc3QKK2NvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeURp
cmVjdGl2ZSogQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6dmlvbGF0ZWREaXJl
Y3RpdmVGb3JVbnNhZmVFdmFsKCkgY29uc3QKIHsKICAgICBDb250ZW50U2VjdXJpdHlQb2xpY3lT
b3VyY2VMaXN0RGlyZWN0aXZlKiBvcGVyYXRpdmVEaXJlY3RpdmUgPSB0aGlzLT5vcGVyYXRpdmVE
aXJlY3RpdmUobV9zY3JpcHRTcmMuZ2V0KCkpOwotICAgIGlmIChjaGVja0lubGluZShvcGVyYXRp
dmVEaXJlY3RpdmUpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBpZiAocmVwb3J0aW5nU3Rh
dHVzID09IFJlcG9ydGluZ1N0YXR1czo6U2VuZFJlcG9ydCkgewotICAgICAgICBTdHJpbmcgY29u
c29sZU1lc3NhZ2UgPSBjb25zb2xlTWVzc2FnZUZvclZpb2xhdGlvbihzY3JpcHRTcmMsIFVSTCgp
LCBvcGVyYXRpdmVEaXJlY3RpdmUgPT0gbV9kZWZhdWx0U3JjLmdldCgpLCAiUmVmdXNlZCB0byBl
eGVjdXRlIGEgc2NyaXB0IiwgIml0cyBoYXNoLCBpdHMgbm9uY2UsIG9yICd1bnNhZmUtaW5saW5l
JyIpOwotICAgICAgICByZXBvcnRWaW9sYXRpb24ob3BlcmF0aXZlRGlyZWN0aXZlLT50ZXh0KCks
IHNjcmlwdFNyYywgY29uc29sZU1lc3NhZ2UsIFVSTCgpLCBjb250ZXh0VVJMLCBjb250ZXh0TGlu
ZSk7Ci0gICAgICAgIGlmICghbV9yZXBvcnRPbmx5KQotICAgICAgICAgICAgbV9wb2xpY3kucmVw
b3J0QmxvY2tlZFNjcmlwdEV4ZWN1dGlvblRvSW5zcGVjdG9yKG9wZXJhdGl2ZURpcmVjdGl2ZS0+
dGV4dCgpKTsKLSAgICB9Ci0gICAgcmV0dXJuIGRlbnlJZkVuZm9yY2luZ1BvbGljeSgpOworICAg
IGlmIChjaGVja0V2YWwob3BlcmF0aXZlRGlyZWN0aXZlKSkKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisgICAgcmV0dXJuIG9wZXJhdGl2ZURpcmVjdGl2ZTsKIH0KIAotYm9vbCBDb250ZW50U2Vj
dXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0OjphbGxvd0lubGluZUV2ZW50SGFuZGxlcnMoY29uc3Qg
U3RyaW5nJiBjb250ZXh0VVJMLCBjb25zdCBXVEY6Ok9yZGluYWxOdW1iZXImIGNvbnRleHRMaW5l
LCBSZXBvcnRpbmdTdGF0dXMgcmVwb3J0aW5nU3RhdHVzKSBjb25zdAorY29uc3QgQ29udGVudFNl
Y3VyaXR5UG9saWN5RGlyZWN0aXZlKiBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0
Ojp2aW9sYXRlZERpcmVjdGl2ZUZvclVuc2FmZUlubGluZVNjcmlwdCgpIGNvbnN0CiB7CiAgICAg
Q29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdERpcmVjdGl2ZSogb3BlcmF0aXZlRGlyZWN0
aXZlID0gdGhpcy0+b3BlcmF0aXZlRGlyZWN0aXZlKG1fc2NyaXB0U3JjLmdldCgpKTsKICAgICBp
ZiAoY2hlY2tJbmxpbmUob3BlcmF0aXZlRGlyZWN0aXZlKSkKLSAgICAgICAgcmV0dXJuIHRydWU7
Ci0gICAgaWYgKHJlcG9ydGluZ1N0YXR1cyA9PSBSZXBvcnRpbmdTdGF0dXM6OlNlbmRSZXBvcnQp
IHsKLSAgICAgICAgU3RyaW5nIGNvbnNvbGVNZXNzYWdlID0gY29uc29sZU1lc3NhZ2VGb3JWaW9s
YXRpb24oc2NyaXB0U3JjLCBVUkwoKSwgb3BlcmF0aXZlRGlyZWN0aXZlID09IG1fZGVmYXVsdFNy
Yy5nZXQoKSwgIlJlZnVzZWQgdG8gZXhlY3V0ZSBhIHNjcmlwdCIsICJpdHMgaGFzaCwgaXRzIG5v
bmNlLCBvciAndW5zYWZlLWlubGluZSciKTsKLSAgICAgICAgcmVwb3J0VmlvbGF0aW9uKG9wZXJh
dGl2ZURpcmVjdGl2ZS0+dGV4dCgpLCBzY3JpcHRTcmMsIGNvbnNvbGVNZXNzYWdlLCBVUkwoKSwg
Y29udGV4dFVSTCwgY29udGV4dExpbmUpOwotICAgICAgICBpZiAoIW1fcmVwb3J0T25seSkKLSAg
ICAgICAgICAgIG1fcG9saWN5LnJlcG9ydEJsb2NrZWRTY3JpcHRFeGVjdXRpb25Ub0luc3BlY3Rv
cihvcGVyYXRpdmVEaXJlY3RpdmUtPnRleHQoKSk7Ci0gICAgfQotICAgIHJldHVybiBkZW55SWZF
bmZvcmNpbmdQb2xpY3koKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIG9w
ZXJhdGl2ZURpcmVjdGl2ZTsKIH0KIAotYm9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3Rp
dmVMaXN0OjphbGxvd0lubGluZVNjcmlwdChjb25zdCBTdHJpbmcmIGNvbnRleHRVUkwsIGNvbnN0
IFdURjo6T3JkaW5hbE51bWJlciYgY29udGV4dExpbmUsIFJlcG9ydGluZ1N0YXR1cyByZXBvcnRp
bmdTdGF0dXMpIGNvbnN0Citjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmUqIENv
bnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OnZpb2xhdGVkRGlyZWN0aXZlRm9yVW5z
YWZlSW5saW5lU3R5bGUoKSBjb25zdAogewotICAgIENvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJj
ZUxpc3REaXJlY3RpdmUqIG9wZXJhdGl2ZURpcmVjdGl2ZSA9IHRoaXMtPm9wZXJhdGl2ZURpcmVj
dGl2ZShtX3NjcmlwdFNyYy5nZXQoKSk7CisgICAgQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNl
TGlzdERpcmVjdGl2ZSogb3BlcmF0aXZlRGlyZWN0aXZlID0gdGhpcy0+b3BlcmF0aXZlRGlyZWN0
aXZlKG1fc3R5bGVTcmMuZ2V0KCkpOwogICAgIGlmIChjaGVja0lubGluZShvcGVyYXRpdmVEaXJl
Y3RpdmUpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBpZiAocmVwb3J0aW5nU3RhdHVzID09
IFJlcG9ydGluZ1N0YXR1czo6U2VuZFJlcG9ydCkgewotICAgICAgICBTdHJpbmcgY29uc29sZU1l
c3NhZ2UgPSBjb25zb2xlTWVzc2FnZUZvclZpb2xhdGlvbihzY3JpcHRTcmMsIFVSTCgpLCBvcGVy
YXRpdmVEaXJlY3RpdmUgPT0gbV9kZWZhdWx0U3JjLmdldCgpLCAiUmVmdXNlZCB0byBleGVjdXRl
IGEgc2NyaXB0IiwgIml0cyBoYXNoLCBpdHMgbm9uY2UsIG9yICd1bnNhZmUtaW5saW5lJyIpOwot
ICAgICAgICByZXBvcnRWaW9sYXRpb24ob3BlcmF0aXZlRGlyZWN0aXZlLT50ZXh0KCksIHNjcmlw
dFNyYywgY29uc29sZU1lc3NhZ2UsIFVSTCgpLCBjb250ZXh0VVJMLCBjb250ZXh0TGluZSk7Ci0g
ICAgICAgIGlmICghbV9yZXBvcnRPbmx5KQotICAgICAgICAgICAgbV9wb2xpY3kucmVwb3J0Qmxv
Y2tlZFNjcmlwdEV4ZWN1dGlvblRvSW5zcGVjdG9yKG9wZXJhdGl2ZURpcmVjdGl2ZS0+dGV4dCgp
KTsKLSAgICB9Ci0gICAgcmV0dXJuIGRlbnlJZkVuZm9yY2luZ1BvbGljeSgpOworICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gb3BlcmF0aXZlRGlyZWN0aXZlOwogfQogCi1ib29s
IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OmFsbG93SW5saW5lU2NyaXB0V2l0
aEhhc2goY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5SGFzaCYgaGFzaCkgY29uc3QKK2NvbnN0
IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZSogQ29udGVudFNlY3VyaXR5UG9saWN5RGly
ZWN0aXZlTGlzdDo6dmlvbGF0ZWREaXJlY3RpdmVGb3JTY3JpcHRIYXNoKGNvbnN0IENvbnRlbnRT
ZWN1cml0eVBvbGljeUhhc2gmIGhhc2gpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGNoZWNrSGFzaChv
cGVyYXRpdmVEaXJlY3RpdmUobV9zY3JpcHRTcmMuZ2V0KCkpLCBoYXNoKTsKLX0KLQotYm9vbCBD
b250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0OjphbGxvd1NjcmlwdFdpdGhOb25jZShj
b25zdCBTdHJpbmcmIG5vbmNlKSBjb25zdAotewotICAgIHJldHVybiBjaGVja05vbmNlKG9wZXJh
dGl2ZURpcmVjdGl2ZShtX3NjcmlwdFNyYy5nZXQoKSksIG5vbmNlKTsKKyAgICBDb250ZW50U2Vj
dXJpdHlQb2xpY3lTb3VyY2VMaXN0RGlyZWN0aXZlKiBvcGVyYXRpdmVEaXJlY3RpdmUgPSB0aGlz
LT5vcGVyYXRpdmVEaXJlY3RpdmUobV9zY3JpcHRTcmMuZ2V0KCkpOworICAgIGlmIChjaGVja0hh
c2gob3BlcmF0aXZlRGlyZWN0aXZlLCBoYXNoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7Cisg
ICAgcmV0dXJuIG9wZXJhdGl2ZURpcmVjdGl2ZTsKIH0KIAotYm9vbCBDb250ZW50U2VjdXJpdHlQ
b2xpY3lEaXJlY3RpdmVMaXN0OjphbGxvd0lubGluZVN0eWxlKGNvbnN0IFN0cmluZyYgY29udGV4
dFVSTCwgY29uc3QgV1RGOjpPcmRpbmFsTnVtYmVyJiBjb250ZXh0TGluZSwgUmVwb3J0aW5nU3Rh
dHVzIHJlcG9ydGluZ1N0YXR1cykgY29uc3QKK2NvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeURp
cmVjdGl2ZSogQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6dmlvbGF0ZWREaXJl
Y3RpdmVGb3JTdHlsZUhhc2goY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5SGFzaCYgaGFzaCkg
Y29uc3QKIHsKICAgICBDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0RGlyZWN0aXZlKiBv
cGVyYXRpdmVEaXJlY3RpdmUgPSB0aGlzLT5vcGVyYXRpdmVEaXJlY3RpdmUobV9zdHlsZVNyYy5n
ZXQoKSk7Ci0gICAgaWYgKGNoZWNrSW5saW5lKG9wZXJhdGl2ZURpcmVjdGl2ZSkpCi0gICAgICAg
IHJldHVybiB0cnVlOwotICAgIGlmIChyZXBvcnRpbmdTdGF0dXMgPT0gUmVwb3J0aW5nU3RhdHVz
OjpTZW5kUmVwb3J0KSB7Ci0gICAgICAgIFN0cmluZyBjb25zb2xlTWVzc2FnZSA9IGNvbnNvbGVN
ZXNzYWdlRm9yVmlvbGF0aW9uKHN0eWxlU3JjLCBVUkwoKSwgb3BlcmF0aXZlRGlyZWN0aXZlID09
IG1fZGVmYXVsdFNyYy5nZXQoKSwgIlJlZnVzZWQgdG8gYXBwbHkgYSBzdHlsZXNoZWV0IiwgIml0
cyBoYXNoLCBpdHMgbm9uY2UsIG9yICd1bnNhZmUtaW5saW5lJyIpOwotICAgICAgICByZXBvcnRW
aW9sYXRpb24ob3BlcmF0aXZlRGlyZWN0aXZlLT50ZXh0KCksIHN0eWxlU3JjLCBjb25zb2xlTWVz
c2FnZSwgVVJMKCksIGNvbnRleHRVUkwsIGNvbnRleHRMaW5lKTsKLSAgICB9Ci0gICAgcmV0dXJu
IGRlbnlJZkVuZm9yY2luZ1BvbGljeSgpOworICAgIGlmIChjaGVja0hhc2gob3BlcmF0aXZlRGly
ZWN0aXZlLCBoYXNoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIG9wZXJh
dGl2ZURpcmVjdGl2ZTsKIH0KIAotYm9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVM
aXN0OjphbGxvd0lubGluZVN0eWxlV2l0aEhhc2goY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5
SGFzaCYgaGFzaCkgY29uc3QKK2NvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZSog
Q29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6dmlvbGF0ZWREaXJlY3RpdmVGb3JT
Y3JpcHROb25jZShjb25zdCBTdHJpbmcmIG5vbmNlKSBjb25zdAogewotICAgIHJldHVybiBjaGVj
a0hhc2gob3BlcmF0aXZlRGlyZWN0aXZlKG1fc3R5bGVTcmMuZ2V0KCkpLCBoYXNoKTsKKyAgICBD
b250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0RGlyZWN0aXZlKiBvcGVyYXRpdmVEaXJlY3Rp
dmUgPSB0aGlzLT5vcGVyYXRpdmVEaXJlY3RpdmUobV9zY3JpcHRTcmMuZ2V0KCkpOworICAgIGlm
IChjaGVja05vbmNlKG9wZXJhdGl2ZURpcmVjdGl2ZSwgbm9uY2UpKQorICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICByZXR1cm4gb3BlcmF0aXZlRGlyZWN0aXZlOwogfQogCi1ib29sIENvbnRl
bnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OmFsbG93U3R5bGVXaXRoTm9uY2UoY29uc3Qg
U3RyaW5nJiBub25jZSkgY29uc3QKK2NvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2
ZSogQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6dmlvbGF0ZWREaXJlY3RpdmVG
b3JTdHlsZU5vbmNlKGNvbnN0IFN0cmluZyYgbm9uY2UpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGNo
ZWNrTm9uY2Uob3BlcmF0aXZlRGlyZWN0aXZlKG1fc3R5bGVTcmMuZ2V0KCkpLCBub25jZSk7Cisg
ICAgQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdERpcmVjdGl2ZSogb3BlcmF0aXZlRGly
ZWN0aXZlID0gdGhpcy0+b3BlcmF0aXZlRGlyZWN0aXZlKG1fc3R5bGVTcmMuZ2V0KCkpOworICAg
IGlmIChjaGVja05vbmNlKG9wZXJhdGl2ZURpcmVjdGl2ZSwgbm9uY2UpKQorICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gb3BlcmF0aXZlRGlyZWN0aXZlOwogfQogCi1ib29sIENv
bnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OmFsbG93RXZhbChKU0M6OkV4ZWNTdGF0
ZSogc3RhdGUsIFJlcG9ydGluZ1N0YXR1cyByZXBvcnRpbmdTdGF0dXMpIGNvbnN0Citjb25zdCBD
b250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmUqIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVj
dGl2ZUxpc3Q6OnZpb2xhdGVkRGlyZWN0aXZlRm9yQmFzZVVSSShjb25zdCBVUkwmIHVybCkgY29u
c3QKIHsKLSAgICBDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0RGlyZWN0aXZlKiBvcGVy
YXRpdmVEaXJlY3RpdmUgPSB0aGlzLT5vcGVyYXRpdmVEaXJlY3RpdmUobV9zY3JpcHRTcmMuZ2V0
KCkpOwotICAgIGlmIChjaGVja0V2YWwob3BlcmF0aXZlRGlyZWN0aXZlKSkKLSAgICAgICAgcmV0
dXJuIHRydWU7Ci0gICAgaWYgKHJlcG9ydGluZ1N0YXR1cyA9PSBSZXBvcnRpbmdTdGF0dXM6OlNl
bmRSZXBvcnQpIHsKLSAgICAgICAgU3RyaW5nIGNvbnNvbGVNZXNzYWdlID0gY29uc29sZU1lc3Nh
Z2VGb3JWaW9sYXRpb24oc2NyaXB0U3JjLCBVUkwoKSwgb3BlcmF0aXZlRGlyZWN0aXZlID09IG1f
ZGVmYXVsdFNyYy5nZXQoKSwgIlJlZnVzZWQgdG8gZXhlY3V0ZSBhIHNjcmlwdCIsICIndW5zYWZl
LWV2YWwnIik7Ci0gICAgICAgIC8vIEZJWE1FOiBRdWVyeSBKU0M6OkV4ZWNTdGF0ZSBmb3Igc291
cmNlIGZpbGUsIGxpbmUgYW5kIGNvbHVtbiBpbmZvcm1hdGlvbi4KLSAgICAgICAgcmVwb3J0Vmlv
bGF0aW9uKG9wZXJhdGl2ZURpcmVjdGl2ZS0+dGV4dCgpLCBzY3JpcHRTcmMsIGNvbnNvbGVNZXNz
YWdlLCBVUkwoKSwgU3RyaW5nKCksIFdURjo6T3JkaW5hbE51bWJlcjo6YmVmb3JlRmlyc3QoKSwg
c3RhdGUpOwotICAgICAgICBpZiAoIW1fcmVwb3J0T25seSkKLSAgICAgICAgICAgIG1fcG9saWN5
LnJlcG9ydEJsb2NrZWRTY3JpcHRFeGVjdXRpb25Ub0luc3BlY3RvcihvcGVyYXRpdmVEaXJlY3Rp
dmUtPnRleHQoKSk7Ci0gICAgfQotICAgIHJldHVybiBkZW55SWZFbmZvcmNpbmdQb2xpY3koKTsK
KyAgICBpZiAoY2hlY2tTb3VyY2UobV9iYXNlVVJJLmdldCgpLCB1cmwpKQorICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gbV9iYXNlVVJJLmdldCgpOwogfQogCi1ib29sIENvbnRl
bnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OmFsbG93UGx1Z2luVHlwZShjb25zdCBTdHJp
bmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgdHlwZUF0dHJpYnV0ZSwgY29uc3QgVVJMJiB1cmwsIFJl
cG9ydGluZ1N0YXR1cyByZXBvcnRpbmdTdGF0dXMpIGNvbnN0Citjb25zdCBDb250ZW50U2VjdXJp
dHlQb2xpY3lEaXJlY3RpdmUqIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OnZp
b2xhdGVkRGlyZWN0aXZlRm9yQ2hpbGRDb250ZXh0KGNvbnN0IFVSTCYgdXJsKSBjb25zdAogewot
ICAgIGlmIChjaGVja01lZGlhVHlwZShtX3BsdWdpblR5cGVzLmdldCgpLCB0eXBlLCB0eXBlQXR0
cmlidXRlKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgaWYgKHJlcG9ydGluZ1N0YXR1cyA9
PSBSZXBvcnRpbmdTdGF0dXM6OlNlbmRSZXBvcnQpIHsKLSAgICAgICAgYm9vbCB2aW9sYXRlc0Rl
ZmF1bHRTcmMgPSBmYWxzZTsKLSAgICAgICAgU3RyaW5nIGNvbnNvbGVNZXNzYWdlID0gY29uc29s
ZU1lc3NhZ2VGb3JWaW9sYXRpb24ocGx1Z2luVHlwZXMsIHVybCwgdmlvbGF0ZXNEZWZhdWx0U3Jj
LCAiUmVmdXNlZCB0byBsb2FkIiwgIml0cyBNSU1FIHR5cGUiKTsKLSAgICAgICAgcmVwb3J0Vmlv
bGF0aW9uKG1fcGx1Z2luVHlwZXMtPnRleHQoKSwgcGx1Z2luVHlwZXMsIGNvbnNvbGVNZXNzYWdl
LCB1cmwpOwotICAgIH0KLSAgICByZXR1cm4gZGVueUlmRW5mb3JjaW5nUG9saWN5KCk7CisgICAg
Q29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdERpcmVjdGl2ZSogb3BlcmF0aXZlRGlyZWN0
aXZlID0gdGhpcy0+b3BlcmF0aXZlRGlyZWN0aXZlKG1fY2hpbGRTcmMuZ2V0KCkpOworICAgIGlm
IChjaGVja1NvdXJjZShvcGVyYXRpdmVEaXJlY3RpdmUsIHVybCkpCisgICAgICAgIHJldHVybiBu
dWxscHRyOworICAgIHJldHVybiBvcGVyYXRpdmVEaXJlY3RpdmU7CiB9CiAKLWJvb2wgQ29udGVu
dFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6YWxsb3dTY3JpcHRGcm9tU291cmNlKGNvbnN0
IFVSTCYgdXJsLCBSZXBvcnRpbmdTdGF0dXMgcmVwb3J0aW5nU3RhdHVzKSBjb25zdAorY29uc3Qg
Q29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlKiBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJl
Y3RpdmVMaXN0Ojp2aW9sYXRlZERpcmVjdGl2ZUZvckNvbm5lY3RTb3VyY2UoY29uc3QgVVJMJiB1
cmwpIGNvbnN0CiB7Ci0gICAgQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdERpcmVjdGl2
ZSogb3BlcmF0aXZlRGlyZWN0aXZlID0gdGhpcy0+b3BlcmF0aXZlRGlyZWN0aXZlKG1fc2NyaXB0
U3JjLmdldCgpKTsKKyAgICBDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0RGlyZWN0aXZl
KiBvcGVyYXRpdmVEaXJlY3RpdmUgPSB0aGlzLT5vcGVyYXRpdmVEaXJlY3RpdmUobV9jb25uZWN0
U3JjLmdldCgpKTsKICAgICBpZiAoY2hlY2tTb3VyY2Uob3BlcmF0aXZlRGlyZWN0aXZlLCB1cmwp
KQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBpZiAocmVwb3J0aW5nU3RhdHVzID09IFJlcG9y
dGluZ1N0YXR1czo6U2VuZFJlcG9ydCkgewotICAgICAgICBTdHJpbmcgY29uc29sZU1lc3NhZ2Ug
PSBjb25zb2xlTWVzc2FnZUZvclZpb2xhdGlvbihzY3JpcHRTcmMsIHVybCwgb3BlcmF0aXZlRGly
ZWN0aXZlID09IG1fZGVmYXVsdFNyYy5nZXQoKSwgIlJlZnVzZWQgdG8gbG9hZCIpOwotICAgICAg
ICByZXBvcnRWaW9sYXRpb24ob3BlcmF0aXZlRGlyZWN0aXZlLT50ZXh0KCksIHNjcmlwdFNyYywg
Y29uc29sZU1lc3NhZ2UsIHVybCk7Ci0gICAgfQotICAgIHJldHVybiBkZW55SWZFbmZvcmNpbmdQ
b2xpY3koKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIG9wZXJhdGl2ZURp
cmVjdGl2ZTsKIH0KIAotYm9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0Ojph
bGxvd09iamVjdEZyb21Tb3VyY2UoY29uc3QgVVJMJiB1cmwsIFJlcG9ydGluZ1N0YXR1cyByZXBv
cnRpbmdTdGF0dXMpIGNvbnN0Citjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmUq
IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OnZpb2xhdGVkRGlyZWN0aXZlRm9y
Rm9udChjb25zdCBVUkwmIHVybCkgY29uc3QKIHsKLSAgICBpZiAodXJsLmlzQmxhbmtVUkwoKSkK
LSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlz
dERpcmVjdGl2ZSogb3BlcmF0aXZlRGlyZWN0aXZlID0gdGhpcy0+b3BlcmF0aXZlRGlyZWN0aXZl
KG1fb2JqZWN0U3JjLmdldCgpKTsKKyAgICBDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0
RGlyZWN0aXZlKiBvcGVyYXRpdmVEaXJlY3RpdmUgPSB0aGlzLT5vcGVyYXRpdmVEaXJlY3RpdmUo
bV9mb250U3JjLmdldCgpKTsKICAgICBpZiAoY2hlY2tTb3VyY2Uob3BlcmF0aXZlRGlyZWN0aXZl
LCB1cmwpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBpZiAocmVwb3J0aW5nU3RhdHVzID09
IFJlcG9ydGluZ1N0YXR1czo6U2VuZFJlcG9ydCkgewotICAgICAgICBTdHJpbmcgY29uc29sZU1l
c3NhZ2UgPSBjb25zb2xlTWVzc2FnZUZvclZpb2xhdGlvbihvYmplY3RTcmMsIHVybCwgb3BlcmF0
aXZlRGlyZWN0aXZlID09IG1fZGVmYXVsdFNyYy5nZXQoKSwgIlJlZnVzZWQgdG8gbG9hZCIpOwot
ICAgICAgICByZXBvcnRWaW9sYXRpb24ob3BlcmF0aXZlRGlyZWN0aXZlLT50ZXh0KCksIG9iamVj
dFNyYywgY29uc29sZU1lc3NhZ2UsIHVybCk7Ci0gICAgfQotICAgIHJldHVybiBkZW55SWZFbmZv
cmNpbmdQb2xpY3koKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIG9wZXJh
dGl2ZURpcmVjdGl2ZTsKIH0KIAotYm9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVM
aXN0OjphbGxvd0NoaWxkQ29udGV4dEZyb21Tb3VyY2UoY29uc3QgVVJMJiB1cmwsIFJlcG9ydGlu
Z1N0YXR1cyByZXBvcnRpbmdTdGF0dXMpIGNvbnN0Citjb25zdCBDb250ZW50U2VjdXJpdHlQb2xp
Y3lEaXJlY3RpdmUqIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OnZpb2xhdGVk
RGlyZWN0aXZlRm9yRm9ybUFjdGlvbihjb25zdCBVUkwmIHVybCkgY29uc3QKIHsKLSAgICBDb250
ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0RGlyZWN0aXZlKiBvcGVyYXRpdmVEaXJlY3RpdmUg
PSB0aGlzLT5vcGVyYXRpdmVEaXJlY3RpdmUobV9jaGlsZFNyYy5nZXQoKSk7Ci0gICAgaWYgKGNo
ZWNrU291cmNlKG9wZXJhdGl2ZURpcmVjdGl2ZSwgdXJsKSkKLSAgICAgICAgcmV0dXJuIHRydWU7
Ci0gICAgaWYgKHJlcG9ydGluZ1N0YXR1cyA9PSBSZXBvcnRpbmdTdGF0dXM6OlNlbmRSZXBvcnQp
IHsKLSAgICAgICAgU3RyaW5nIGNvbnNvbGVNZXNzYWdlID0gY29uc29sZU1lc3NhZ2VGb3JWaW9s
YXRpb24oY2hpbGRTcmMsIHVybCwgb3BlcmF0aXZlRGlyZWN0aXZlID09IG1fZGVmYXVsdFNyYy5n
ZXQoKSwgIlJlZnVzZWQgdG8gbG9hZCIpOwotICAgICAgICByZXBvcnRWaW9sYXRpb24ob3BlcmF0
aXZlRGlyZWN0aXZlLT50ZXh0KCksIGNoaWxkU3JjLCBjb25zb2xlTWVzc2FnZSwgdXJsKTsKLSAg
ICB9Ci0gICAgcmV0dXJuIGRlbnlJZkVuZm9yY2luZ1BvbGljeSgpOworICAgIGlmIChjaGVja1Nv
dXJjZShtX2Zvcm1BY3Rpb24uZ2V0KCksIHVybCkpCisgICAgICAgIHJldHVybiBudWxscHRyOwor
ICAgIHJldHVybiBtX2Zvcm1BY3Rpb24uZ2V0KCk7CiB9CiAKLWJvb2wgQ29udGVudFNlY3VyaXR5
UG9saWN5RGlyZWN0aXZlTGlzdDo6YWxsb3dDaGlsZEZyYW1lRnJvbVNvdXJjZShjb25zdCBVUkwm
IHVybCwgUmVwb3J0aW5nU3RhdHVzIHJlcG9ydGluZ1N0YXR1cykgY29uc3QKK2NvbnN0IENvbnRl
bnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZSogQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZl
TGlzdDo6dmlvbGF0ZWREaXJlY3RpdmVGb3JGcmFtZShjb25zdCBVUkwmIHVybCkgY29uc3QKIHsK
ICAgICBpZiAodXJsLmlzQmxhbmtVUkwoKSkKLSAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAg
IHJldHVybiBudWxscHRyOwogCiAgICAgLy8gV2UgbXVzdCBlbmZvcmNlIHRoZSBmcmFtZS1zcmMg
ZGlyZWN0aXZlIChpZiBzcGVjaWZpZWQpIGJlZm9yZSBlbmZvcmNpbmcgdGhlIGNoaWxkLXNyYyBk
aXJlY3RpdmUgZm9yIGEgbmVzdGVkIGJyb3dzaW5nCiAgICAgLy8gY29udGV4dCBieSA8aHR0cHM6
Ly93M2MuZ2l0aHViLmlvL3dlYmFwcHNlYy1jc3AvMi8jZGlyZWN0aXZlLWNoaWxkLXNyYy1uZXN0
ZWQ+ICgyOSBBdWd1c3QgMjAxNSkuCiAgICAgQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlz
dERpcmVjdGl2ZSogb3BlcmF0aXZlRGlyZWN0aXZlID0gdGhpcy0+b3BlcmF0aXZlRGlyZWN0aXZl
KG1fZnJhbWVTcmMgPyBtX2ZyYW1lU3JjLmdldCgpIDogbV9jaGlsZFNyYy5nZXQoKSk7CiAgICAg
aWYgKGNoZWNrU291cmNlKG9wZXJhdGl2ZURpcmVjdGl2ZSwgdXJsKSkKLSAgICAgICAgcmV0dXJu
IHRydWU7Ci0gICAgaWYgKHJlcG9ydGluZ1N0YXR1cyA9PSBSZXBvcnRpbmdTdGF0dXM6OlNlbmRS
ZXBvcnQpIHsKLSAgICAgICAgU3RyaW5nIGNvbnNvbGVNZXNzYWdlID0gY29uc29sZU1lc3NhZ2VG
b3JWaW9sYXRpb24oZnJhbWVTcmMsIHVybCwgb3BlcmF0aXZlRGlyZWN0aXZlID09IG1fZGVmYXVs
dFNyYy5nZXQoKSwgIlJlZnVzZWQgdG8gbG9hZCIpOwotICAgICAgICByZXBvcnRWaW9sYXRpb24o
b3BlcmF0aXZlRGlyZWN0aXZlLT50ZXh0KCksIGZyYW1lU3JjLCBjb25zb2xlTWVzc2FnZSwgdXJs
KTsKLSAgICB9Ci0gICAgcmV0dXJuIGRlbnlJZkVuZm9yY2luZ1BvbGljeSgpOworICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gb3BlcmF0aXZlRGlyZWN0aXZlOwogfQogCi1ib29s
IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OmFsbG93SW1hZ2VGcm9tU291cmNl
KGNvbnN0IFVSTCYgdXJsLCBSZXBvcnRpbmdTdGF0dXMgcmVwb3J0aW5nU3RhdHVzKSBjb25zdAor
Y29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlKiBDb250ZW50U2VjdXJpdHlQb2xp
Y3lEaXJlY3RpdmVMaXN0Ojp2aW9sYXRlZERpcmVjdGl2ZUZvckZyYW1lQW5jZXN0b3IoY29uc3Qg
RnJhbWUmIGZyYW1lKSBjb25zdAogewotICAgIENvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxp
c3REaXJlY3RpdmUqIG9wZXJhdGl2ZURpcmVjdGl2ZSA9IHRoaXMtPm9wZXJhdGl2ZURpcmVjdGl2
ZShtX2ltZ1NyYy5nZXQoKSk7Ci0gICAgaWYgKGNoZWNrU291cmNlKG9wZXJhdGl2ZURpcmVjdGl2
ZSwgdXJsKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgaWYgKHJlcG9ydGluZ1N0YXR1cyA9
PSBSZXBvcnRpbmdTdGF0dXM6OlNlbmRSZXBvcnQpIHsKLSAgICAgICAgU3RyaW5nIGNvbnNvbGVN
ZXNzYWdlID0gY29uc29sZU1lc3NhZ2VGb3JWaW9sYXRpb24oaW1nU3JjLCB1cmwsIG9wZXJhdGl2
ZURpcmVjdGl2ZSA9PSBtX2RlZmF1bHRTcmMuZ2V0KCksICJSZWZ1c2VkIHRvIGxvYWQiKTsKLSAg
ICAgICAgcmVwb3J0VmlvbGF0aW9uKG9wZXJhdGl2ZURpcmVjdGl2ZS0+dGV4dCgpLCBpbWdTcmMs
IGNvbnNvbGVNZXNzYWdlLCB1cmwpOwotICAgIH0KLSAgICByZXR1cm4gZGVueUlmRW5mb3JjaW5n
UG9saWN5KCk7Ci19Ci0KLWJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6
YWxsb3dTdHlsZUZyb21Tb3VyY2UoY29uc3QgVVJMJiB1cmwsIFJlcG9ydGluZ1N0YXR1cyByZXBv
cnRpbmdTdGF0dXMpIGNvbnN0Ci17Ci0gICAgQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlz
dERpcmVjdGl2ZSogb3BlcmF0aXZlRGlyZWN0aXZlID0gdGhpcy0+b3BlcmF0aXZlRGlyZWN0aXZl
KG1fc3R5bGVTcmMuZ2V0KCkpOwotICAgIGlmIChjaGVja1NvdXJjZShvcGVyYXRpdmVEaXJlY3Rp
dmUsIHVybCkpCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIGlmIChyZXBvcnRpbmdTdGF0dXMg
PT0gUmVwb3J0aW5nU3RhdHVzOjpTZW5kUmVwb3J0KSB7Ci0gICAgICAgIFN0cmluZyBjb25zb2xl
TWVzc2FnZSA9IGNvbnNvbGVNZXNzYWdlRm9yVmlvbGF0aW9uKHN0eWxlU3JjLCB1cmwsIG9wZXJh
dGl2ZURpcmVjdGl2ZSA9PSBtX2RlZmF1bHRTcmMuZ2V0KCksICJSZWZ1c2VkIHRvIGxvYWQiKTsK
LSAgICAgICAgcmVwb3J0VmlvbGF0aW9uKG9wZXJhdGl2ZURpcmVjdGl2ZS0+dGV4dCgpLCBzdHls
ZVNyYywgY29uc29sZU1lc3NhZ2UsIHVybCk7Ci0gICAgfQotICAgIHJldHVybiBkZW55SWZFbmZv
cmNpbmdQb2xpY3koKTsKKyAgICBpZiAoY2hlY2tGcmFtZUFuY2VzdG9ycyhtX2ZyYW1lQW5jZXN0
b3JzLmdldCgpLCBmcmFtZSkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBt
X2ZyYW1lQW5jZXN0b3JzLmdldCgpOwogfQogCi1ib29sIENvbnRlbnRTZWN1cml0eVBvbGljeURp
cmVjdGl2ZUxpc3Q6OmFsbG93Rm9udEZyb21Tb3VyY2UoY29uc3QgVVJMJiB1cmwsIFJlcG9ydGlu
Z1N0YXR1cyByZXBvcnRpbmdTdGF0dXMpIGNvbnN0Citjb25zdCBDb250ZW50U2VjdXJpdHlQb2xp
Y3lEaXJlY3RpdmUqIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OnZpb2xhdGVk
RGlyZWN0aXZlRm9ySW1hZ2UoY29uc3QgVVJMJiB1cmwpIGNvbnN0CiB7Ci0gICAgQ29udGVudFNl
Y3VyaXR5UG9saWN5U291cmNlTGlzdERpcmVjdGl2ZSogb3BlcmF0aXZlRGlyZWN0aXZlID0gdGhp
cy0+b3BlcmF0aXZlRGlyZWN0aXZlKG1fZm9udFNyYy5nZXQoKSk7CisgICAgQ29udGVudFNlY3Vy
aXR5UG9saWN5U291cmNlTGlzdERpcmVjdGl2ZSogb3BlcmF0aXZlRGlyZWN0aXZlID0gdGhpcy0+
b3BlcmF0aXZlRGlyZWN0aXZlKG1faW1nU3JjLmdldCgpKTsKICAgICBpZiAoY2hlY2tTb3VyY2Uo
b3BlcmF0aXZlRGlyZWN0aXZlLCB1cmwpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBpZiAo
cmVwb3J0aW5nU3RhdHVzID09IFJlcG9ydGluZ1N0YXR1czo6U2VuZFJlcG9ydCkgewotICAgICAg
ICBTdHJpbmcgY29uc29sZU1lc3NhZ2UgPSBjb25zb2xlTWVzc2FnZUZvclZpb2xhdGlvbihmb250
U3JjLCB1cmwsIG9wZXJhdGl2ZURpcmVjdGl2ZSA9PSBtX2RlZmF1bHRTcmMuZ2V0KCksICJSZWZ1
c2VkIHRvIGxvYWQiKTsKLSAgICAgICAgcmVwb3J0VmlvbGF0aW9uKG9wZXJhdGl2ZURpcmVjdGl2
ZS0+dGV4dCgpLCBmb250U3JjLCBjb25zb2xlTWVzc2FnZSwgdXJsKTsKLSAgICB9Ci0gICAgcmV0
dXJuIGRlbnlJZkVuZm9yY2luZ1BvbGljeSgpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICByZXR1cm4gb3BlcmF0aXZlRGlyZWN0aXZlOwogfQogCi1ib29sIENvbnRlbnRTZWN1cml0eVBv
bGljeURpcmVjdGl2ZUxpc3Q6OmFsbG93TWVkaWFGcm9tU291cmNlKGNvbnN0IFVSTCYgdXJsLCBS
ZXBvcnRpbmdTdGF0dXMgcmVwb3J0aW5nU3RhdHVzKSBjb25zdAorY29uc3QgQ29udGVudFNlY3Vy
aXR5UG9saWN5RGlyZWN0aXZlKiBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0Ojp2
aW9sYXRlZERpcmVjdGl2ZUZvck1lZGlhKGNvbnN0IFVSTCYgdXJsKSBjb25zdAogewogICAgIENv
bnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3REaXJlY3RpdmUqIG9wZXJhdGl2ZURpcmVjdGl2
ZSA9IHRoaXMtPm9wZXJhdGl2ZURpcmVjdGl2ZShtX21lZGlhU3JjLmdldCgpKTsKICAgICBpZiAo
Y2hlY2tTb3VyY2Uob3BlcmF0aXZlRGlyZWN0aXZlLCB1cmwpKQotICAgICAgICByZXR1cm4gdHJ1
ZTsKLSAgICBpZiAocmVwb3J0aW5nU3RhdHVzID09IFJlcG9ydGluZ1N0YXR1czo6U2VuZFJlcG9y
dCkgewotICAgICAgICBTdHJpbmcgY29uc29sZU1lc3NhZ2UgPSBjb25zb2xlTWVzc2FnZUZvclZp
b2xhdGlvbihtZWRpYVNyYywgdXJsLCBvcGVyYXRpdmVEaXJlY3RpdmUgPT0gbV9kZWZhdWx0U3Jj
LmdldCgpLCAiUmVmdXNlZCB0byBsb2FkIik7Ci0gICAgICAgIHJlcG9ydFZpb2xhdGlvbihvcGVy
YXRpdmVEaXJlY3RpdmUtPnRleHQoKSwgbWVkaWFTcmMsIGNvbnNvbGVNZXNzYWdlLCB1cmwpOwot
ICAgIH0KLSAgICByZXR1cm4gZGVueUlmRW5mb3JjaW5nUG9saWN5KCk7CisgICAgICAgIHJldHVy
biBudWxscHRyOworICAgIHJldHVybiBvcGVyYXRpdmVEaXJlY3RpdmU7CiB9CiAKLWJvb2wgQ29u
dGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6YWxsb3dDb25uZWN0VG9Tb3VyY2UoY29u
c3QgVVJMJiB1cmwsIFJlcG9ydGluZ1N0YXR1cyByZXBvcnRpbmdTdGF0dXMpIGNvbnN0Citjb25z
dCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmUqIENvbnRlbnRTZWN1cml0eVBvbGljeURp
cmVjdGl2ZUxpc3Q6OnZpb2xhdGVkRGlyZWN0aXZlRm9yT2JqZWN0U291cmNlKGNvbnN0IFVSTCYg
dXJsKSBjb25zdAogewotICAgIENvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3REaXJlY3Rp
dmUqIG9wZXJhdGl2ZURpcmVjdGl2ZSA9IHRoaXMtPm9wZXJhdGl2ZURpcmVjdGl2ZShtX2Nvbm5l
Y3RTcmMuZ2V0KCkpOworICAgIGlmICh1cmwuaXNCbGFua1VSTCgpKQorICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICBDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0RGlyZWN0aXZlKiBv
cGVyYXRpdmVEaXJlY3RpdmUgPSB0aGlzLT5vcGVyYXRpdmVEaXJlY3RpdmUobV9vYmplY3RTcmMu
Z2V0KCkpOwogICAgIGlmIChjaGVja1NvdXJjZShvcGVyYXRpdmVEaXJlY3RpdmUsIHVybCkpCi0g
ICAgICAgIHJldHVybiB0cnVlOwotICAgIGlmIChyZXBvcnRpbmdTdGF0dXMgPT0gUmVwb3J0aW5n
U3RhdHVzOjpTZW5kUmVwb3J0KSB7Ci0gICAgICAgIFN0cmluZyBjb25zb2xlTWVzc2FnZSA9IGNv
bnNvbGVNZXNzYWdlRm9yVmlvbGF0aW9uKGNvbm5lY3RTcmMsIHVybCwgb3BlcmF0aXZlRGlyZWN0
aXZlID09IG1fZGVmYXVsdFNyYy5nZXQoKSwgIlJlZnVzZWQgdG8gY29ubmVjdCB0byIpOwotICAg
ICAgICByZXBvcnRWaW9sYXRpb24ob3BlcmF0aXZlRGlyZWN0aXZlLT50ZXh0KCksIGNvbm5lY3RT
cmMsIGNvbnNvbGVNZXNzYWdlLCB1cmwpOwotICAgIH0KLSAgICByZXR1cm4gZGVueUlmRW5mb3Jj
aW5nUG9saWN5KCk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBvcGVyYXRp
dmVEaXJlY3RpdmU7CiB9CiAKLWJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlz
dDo6YWxsb3dGb3JtQWN0aW9uKGNvbnN0IFVSTCYgdXJsLCBSZXBvcnRpbmdTdGF0dXMgcmVwb3J0
aW5nU3RhdHVzKSBjb25zdAorY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlKiBD
b250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0Ojp2aW9sYXRlZERpcmVjdGl2ZUZvclBs
dWdpblR5cGUoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIHR5cGVBdHRyaWJ1dGUp
IGNvbnN0CiB7Ci0gICAgaWYgKGNoZWNrU291cmNlKG1fZm9ybUFjdGlvbi5nZXQoKSwgdXJsKSkK
LSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgaWYgKHJlcG9ydGluZ1N0YXR1cyA9PSBSZXBvcnRp
bmdTdGF0dXM6OlNlbmRSZXBvcnQpIHsKLSAgICAgICAgYm9vbCB2aW9sYXRlc0RlZmF1bHRTcmMg
PSBmYWxzZTsKLSAgICAgICAgU3RyaW5nIGNvbnNvbGVNZXNzYWdlID0gY29uc29sZU1lc3NhZ2VG
b3JWaW9sYXRpb24oZm9ybUFjdGlvbiwgdXJsLCB2aW9sYXRlc0RlZmF1bHRTcmMsICJSZWZ1c2Vk
IHRvIGxvYWQiKTsKLSAgICAgICAgcmVwb3J0VmlvbGF0aW9uKG1fZm9ybUFjdGlvbi0+dGV4dCgp
LCBmb3JtQWN0aW9uLCBjb25zb2xlTWVzc2FnZSwgdXJsKTsKLSAgICB9Ci0gICAgcmV0dXJuIGRl
bnlJZkVuZm9yY2luZ1BvbGljeSgpOworICAgIGlmIChjaGVja01lZGlhVHlwZShtX3BsdWdpblR5
cGVzLmdldCgpLCB0eXBlLCB0eXBlQXR0cmlidXRlKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisgICAgcmV0dXJuIG1fcGx1Z2luVHlwZXMuZ2V0KCk7CiB9CiAKLWJvb2wgQ29udGVudFNlY3Vy
aXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6YWxsb3dCYXNlVVJJKGNvbnN0IFVSTCYgdXJsLCBSZXBv
cnRpbmdTdGF0dXMgcmVwb3J0aW5nU3RhdHVzKSBjb25zdAorY29uc3QgQ29udGVudFNlY3VyaXR5
UG9saWN5RGlyZWN0aXZlKiBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0Ojp2aW9s
YXRlZERpcmVjdGl2ZUZvclNjcmlwdChjb25zdCBVUkwmIHVybCkgY29uc3QKIHsKLSAgICBpZiAo
Y2hlY2tTb3VyY2UobV9iYXNlVVJJLmdldCgpLCB1cmwpKQotICAgICAgICByZXR1cm4gdHJ1ZTsK
LSAgICBpZiAocmVwb3J0aW5nU3RhdHVzID09IFJlcG9ydGluZ1N0YXR1czo6U2VuZFJlcG9ydCkg
ewotICAgICAgICBib29sIHZpb2xhdGVzRGVmYXVsdFNyYyA9IGZhbHNlOwotICAgICAgICBTdHJp
bmcgY29uc29sZU1lc3NhZ2UgPSBjb25zb2xlTWVzc2FnZUZvclZpb2xhdGlvbihiYXNlVVJJLCB1
cmwsIHZpb2xhdGVzRGVmYXVsdFNyYywgIlJlZnVzZWQgdG8gY2hhbmdlIHRoZSBkb2N1bWVudCBi
YXNlIFVSTCB0byIpOwotICAgICAgICByZXBvcnRWaW9sYXRpb24obV9iYXNlVVJJLT50ZXh0KCks
IGJhc2VVUkksIGNvbnNvbGVNZXNzYWdlLCB1cmwpOwotICAgIH0KLSAgICByZXR1cm4gZGVueUlm
RW5mb3JjaW5nUG9saWN5KCk7CisgICAgQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdERp
cmVjdGl2ZSogb3BlcmF0aXZlRGlyZWN0aXZlID0gdGhpcy0+b3BlcmF0aXZlRGlyZWN0aXZlKG1f
c2NyaXB0U3JjLmdldCgpKTsKKyAgICBpZiAoY2hlY2tTb3VyY2Uob3BlcmF0aXZlRGlyZWN0aXZl
LCB1cmwpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gb3BlcmF0aXZlRGly
ZWN0aXZlOwogfQogCi1ib29sIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OmFs
bG93RnJhbWVBbmNlc3RvcnMoY29uc3QgRnJhbWUmIGZyYW1lLCBjb25zdCBVUkwmIHVybCwgUmVw
b3J0aW5nU3RhdHVzIHJlcG9ydGluZ1N0YXR1cykgY29uc3QKK2NvbnN0IENvbnRlbnRTZWN1cml0
eVBvbGljeURpcmVjdGl2ZSogQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6dmlv
bGF0ZWREaXJlY3RpdmVGb3JTdHlsZShjb25zdCBVUkwmIHVybCkgY29uc3QKIHsKLSAgICBpZiAo
Y2hlY2tGcmFtZUFuY2VzdG9ycyhtX2ZyYW1lQW5jZXN0b3JzLmdldCgpLCBmcmFtZSkpCi0gICAg
ICAgIHJldHVybiB0cnVlOwotICAgIGlmIChyZXBvcnRpbmdTdGF0dXMgPT0gUmVwb3J0aW5nU3Rh
dHVzOjpTZW5kUmVwb3J0KSB7Ci0gICAgICAgIGJvb2wgdmlvbGF0ZXNEZWZhdWx0U3JjID0gZmFs
c2U7Ci0gICAgICAgIFN0cmluZyBjb25zb2xlTWVzc2FnZSA9IGNvbnNvbGVNZXNzYWdlRm9yVmlv
bGF0aW9uKGZyYW1lQW5jZXN0b3JzLCB1cmwsIHZpb2xhdGVzRGVmYXVsdFNyYywgIlJlZnVzZWQg
dG8gbG9hZCIpOwotICAgICAgICByZXBvcnRWaW9sYXRpb24obV9mcmFtZUFuY2VzdG9ycy0+dGV4
dCgpLCBmcmFtZUFuY2VzdG9ycywgY29uc29sZU1lc3NhZ2UsIHVybCk7Ci0gICAgfQotICAgIHJl
dHVybiBkZW55SWZFbmZvcmNpbmdQb2xpY3koKTsKKyAgICBDb250ZW50U2VjdXJpdHlQb2xpY3lT
b3VyY2VMaXN0RGlyZWN0aXZlKiBvcGVyYXRpdmVEaXJlY3RpdmUgPSB0aGlzLT5vcGVyYXRpdmVE
aXJlY3RpdmUobV9zdHlsZVNyYy5nZXQoKSk7CisgICAgaWYgKGNoZWNrU291cmNlKG9wZXJhdGl2
ZURpcmVjdGl2ZSwgdXJsKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIG9w
ZXJhdGl2ZURpcmVjdGl2ZTsKIH0KIAogLy8gcG9saWN5ICAgICAgICAgICAgPSBkaXJlY3RpdmUt
bGlzdApAQCAtNDg4LDggKzMxMiw5IEBAIHZvaWQgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0
aXZlTGlzdDo6cGFyc2UoY29uc3QgU3RyaW5nJiBwb2xpY3ksIENvbnRlbnRTZWN1CiAgICAgICAg
ICAgICBBU1NFUlQoIW5hbWUuaXNFbXB0eSgpKTsKICAgICAgICAgICAgIHN3aXRjaCAocG9saWN5
RnJvbSkgewogICAgICAgICAgICAgY2FzZSBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlBvbGljeUZy
b206OkhUVFBFcXVpdk1ldGE6Ci0gICAgICAgICAgICAgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9y
aW5nQVNDSUlDYXNlKG5hbWUsIHNhbmRib3gpIHx8IGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlD
YXNlKG5hbWUsIHJlcG9ydFVSSSkKLSAgICAgICAgICAgICAgICAgICAgfHwgZXF1YWxMZXR0ZXJz
SWdub3JpbmdBU0NJSUNhc2UobmFtZSwgZnJhbWVBbmNlc3RvcnMpKSB7CisgICAgICAgICAgICAg
ICAgaWYgKGVxdWFsSWdub3JpbmdBU0NJSUNhc2UobmFtZSwgQ29udGVudFNlY3VyaXR5UG9saWN5
RGlyZWN0aXZlTmFtZXM6OnNhbmRib3gpCisgICAgICAgICAgICAgICAgICAgIHx8IGVxdWFsSWdu
b3JpbmdBU0NJSUNhc2UobmFtZSwgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXM6
OnJlcG9ydFVSSSkKKyAgICAgICAgICAgICAgICAgICAgfHwgZXF1YWxJZ25vcmluZ0FTQ0lJQ2Fz
ZShuYW1lLCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lczo6ZnJhbWVBbmNlc3Rv
cnMpKSB7CiAgICAgICAgICAgICAgICAgICAgIG1fcG9saWN5LnJlcG9ydEludmFsaWREaXJlY3Rp
dmVJbkhUVFBFcXVpdk1ldGEobmFtZSk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgICAgIH0KQEAgLTU5MCw3ICs0MTUsNyBAQCB2b2lkIENvbnRlbnRTZWN1cml0eVBv
bGljeURpcmVjdGl2ZUxpc3Q6OnNldENTUERpcmVjdGl2ZShjb25zdCBTdHJpbmcmIG5hbWUsIGNv
bgogICAgICAgICBtX3BvbGljeS5yZXBvcnREdXBsaWNhdGVEaXJlY3RpdmUobmFtZSk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9Ci0gICAgZGlyZWN0aXZlID0gc3RkOjptYWtlX3VuaXF1ZTxDU1BE
aXJlY3RpdmVUeXBlPihuYW1lLCB2YWx1ZSwgbV9wb2xpY3kpOworICAgIGRpcmVjdGl2ZSA9IHN0
ZDo6bWFrZV91bmlxdWU8Q1NQRGlyZWN0aXZlVHlwZT4oKnRoaXMsIG5hbWUsIHZhbHVlKTsKIH0K
IAogdm9pZCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0OjphcHBseVNhbmRib3hQ
b2xpY3koY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHNhbmRib3hQb2xpY3kpCkBA
IC02NjAsNTEgKzQ4NSw1MSBAQCB2b2lkIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxp
c3Q6OmFkZERpcmVjdGl2ZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0CiB7CiAgICAgQVNTRVJU
KCFuYW1lLmlzRW1wdHkoKSk7CiAKLSAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNh
c2UobmFtZSwgZGVmYXVsdFNyYykpIHsKKyAgICBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShu
YW1lLCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lczo6ZGVmYXVsdFNyYykpIHsK
ICAgICAgICAgc2V0Q1NQRGlyZWN0aXZlPENvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3RE
aXJlY3RpdmU+KG5hbWUsIHZhbHVlLCBtX2RlZmF1bHRTcmMpOwogICAgICAgICBtX3BvbGljeS5h
ZGRIYXNoQWxnb3JpdGhtc0ZvcklubGluZVNjcmlwdHMobV9kZWZhdWx0U3JjLT5oYXNoQWxnb3Jp
dGhtc1VzZWQoKSk7CiAgICAgICAgIG1fcG9saWN5LmFkZEhhc2hBbGdvcml0aG1zRm9ySW5saW5l
U3R5bGVzaGVldHMobV9kZWZhdWx0U3JjLT5oYXNoQWxnb3JpdGhtc1VzZWQoKSk7Ci0gICAgfSBl
bHNlIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShuYW1lLCBzY3JpcHRTcmMpKSB7
CisgICAgfSBlbHNlIGlmIChlcXVhbElnbm9yaW5nQVNDSUlDYXNlKG5hbWUsIENvbnRlbnRTZWN1
cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzOjpzY3JpcHRTcmMpKSB7CiAgICAgICAgIHNldENTUERp
cmVjdGl2ZTxDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0RGlyZWN0aXZlPihuYW1lLCB2
YWx1ZSwgbV9zY3JpcHRTcmMpOwogICAgICAgICBtX3BvbGljeS5hZGRIYXNoQWxnb3JpdGhtc0Zv
cklubGluZVNjcmlwdHMobV9zY3JpcHRTcmMtPmhhc2hBbGdvcml0aG1zVXNlZCgpKTsKLSAgICB9
IGVsc2UgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG5hbWUsIHN0eWxlU3JjKSkg
eworICAgIH0gZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShuYW1lLCBDb250ZW50U2Vj
dXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lczo6c3R5bGVTcmMpKSB7CiAgICAgICAgIHNldENTUERp
cmVjdGl2ZTxDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0RGlyZWN0aXZlPihuYW1lLCB2
YWx1ZSwgbV9zdHlsZVNyYyk7CiAgICAgICAgIG1fcG9saWN5LmFkZEhhc2hBbGdvcml0aG1zRm9y
SW5saW5lU3R5bGVzaGVldHMobV9zdHlsZVNyYy0+aGFzaEFsZ29yaXRobXNVc2VkKCkpOwotICAg
IH0gZWxzZSBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobmFtZSwgb2JqZWN0U3Jj
KSkKKyAgICB9IGVsc2UgaWYgKGVxdWFsSWdub3JpbmdBU0NJSUNhc2UobmFtZSwgQ29udGVudFNl
Y3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXM6Om9iamVjdFNyYykpCiAgICAgICAgIHNldENTUERp
cmVjdGl2ZTxDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0RGlyZWN0aXZlPihuYW1lLCB2
YWx1ZSwgbV9vYmplY3RTcmMpOwotICAgIGVsc2UgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVND
SUlDYXNlKG5hbWUsIGZyYW1lU3JjKSkgeworICAgIGVsc2UgaWYgKGVxdWFsSWdub3JpbmdBU0NJ
SUNhc2UobmFtZSwgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXM6OmZyYW1lU3Jj
KSkgewogICAgICAgICAvLyBGSVhNRTogTG9nIHRvIGNvbnNvbGUgIlRoZSBmcmFtZS1zcmMgZGly
ZWN0aXZlIGlzIGRlcHJlY2F0ZWQuIFVzZSB0aGUgY2hpbGQtc3JjIGRpcmVjdGl2ZSBpbnN0ZWFk
LiIKICAgICAgICAgLy8gU2VlIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTU1NzczPi4KICAgICAgICAgc2V0Q1NQRGlyZWN0aXZlPENvbnRlbnRTZWN1cml0eVBvbGlj
eVNvdXJjZUxpc3REaXJlY3RpdmU+KG5hbWUsIHZhbHVlLCBtX2ZyYW1lU3JjKTsKLSAgICB9IGVs
c2UgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG5hbWUsIGltZ1NyYykpCisgICAg
fSBlbHNlIGlmIChlcXVhbElnbm9yaW5nQVNDSUlDYXNlKG5hbWUsIENvbnRlbnRTZWN1cml0eVBv
bGljeURpcmVjdGl2ZU5hbWVzOjppbWdTcmMpKQogICAgICAgICBzZXRDU1BEaXJlY3RpdmU8Q29u
dGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdERpcmVjdGl2ZT4obmFtZSwgdmFsdWUsIG1faW1n
U3JjKTsKLSAgICBlbHNlIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShuYW1lLCBm
b250U3JjKSkKKyAgICBlbHNlIGlmIChlcXVhbElnbm9yaW5nQVNDSUlDYXNlKG5hbWUsIENvbnRl
bnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzOjpmb250U3JjKSkKICAgICAgICAgc2V0Q1NQ
RGlyZWN0aXZlPENvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3REaXJlY3RpdmU+KG5hbWUs
IHZhbHVlLCBtX2ZvbnRTcmMpOwotICAgIGVsc2UgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVND
SUlDYXNlKG5hbWUsIG1lZGlhU3JjKSkKKyAgICBlbHNlIGlmIChlcXVhbElnbm9yaW5nQVNDSUlD
YXNlKG5hbWUsIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzOjptZWRpYVNyYykp
CiAgICAgICAgIHNldENTUERpcmVjdGl2ZTxDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0
RGlyZWN0aXZlPihuYW1lLCB2YWx1ZSwgbV9tZWRpYVNyYyk7Ci0gICAgZWxzZSBpZiAoZXF1YWxM
ZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobmFtZSwgY29ubmVjdFNyYykpCisgICAgZWxzZSBpZiAo
ZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShuYW1lLCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3Rp
dmVOYW1lczo6Y29ubmVjdFNyYykpCiAgICAgICAgIHNldENTUERpcmVjdGl2ZTxDb250ZW50U2Vj
dXJpdHlQb2xpY3lTb3VyY2VMaXN0RGlyZWN0aXZlPihuYW1lLCB2YWx1ZSwgbV9jb25uZWN0U3Jj
KTsKLSAgICBlbHNlIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShuYW1lLCBjaGls
ZFNyYykpCisgICAgZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShuYW1lLCBDb250ZW50
U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lczo6Y2hpbGRTcmMpKQogICAgICAgICBzZXRDU1BE
aXJlY3RpdmU8Q29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdERpcmVjdGl2ZT4obmFtZSwg
dmFsdWUsIG1fY2hpbGRTcmMpOwotICAgIGVsc2UgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVND
SUlDYXNlKG5hbWUsIGZvcm1BY3Rpb24pKQorICAgIGVsc2UgaWYgKGVxdWFsSWdub3JpbmdBU0NJ
SUNhc2UobmFtZSwgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXM6OmZvcm1BY3Rp
b24pKQogICAgICAgICBzZXRDU1BEaXJlY3RpdmU8Q29udGVudFNlY3VyaXR5UG9saWN5U291cmNl
TGlzdERpcmVjdGl2ZT4obmFtZSwgdmFsdWUsIG1fZm9ybUFjdGlvbik7Ci0gICAgZWxzZSBpZiAo
ZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobmFtZSwgYmFzZVVSSSkpCisgICAgZWxzZSBp
ZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShuYW1lLCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJl
Y3RpdmVOYW1lczo6YmFzZVVSSSkpCiAgICAgICAgIHNldENTUERpcmVjdGl2ZTxDb250ZW50U2Vj
dXJpdHlQb2xpY3lTb3VyY2VMaXN0RGlyZWN0aXZlPihuYW1lLCB2YWx1ZSwgbV9iYXNlVVJJKTsK
LSAgICBlbHNlIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShuYW1lLCBmcmFtZUFu
Y2VzdG9ycykpIHsKKyAgICBlbHNlIGlmIChlcXVhbElnbm9yaW5nQVNDSUlDYXNlKG5hbWUsIENv
bnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzOjpmcmFtZUFuY2VzdG9ycykpIHsKICAg
ICAgICAgaWYgKG1fcmVwb3J0T25seSkgewogICAgICAgICAgICAgbV9wb2xpY3kucmVwb3J0SW52
YWxpZERpcmVjdGl2ZUluUmVwb3J0T25seU1vZGUobmFtZSk7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KICAgICAgICAgc2V0Q1NQRGlyZWN0aXZlPENvbnRlbnRTZWN1cml0eVBvbGlj
eVNvdXJjZUxpc3REaXJlY3RpdmU+KG5hbWUsIHZhbHVlLCBtX2ZyYW1lQW5jZXN0b3JzKTsKLSAg
ICB9IGVsc2UgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG5hbWUsIHBsdWdpblR5
cGVzKSkKKyAgICB9IGVsc2UgaWYgKGVxdWFsSWdub3JpbmdBU0NJSUNhc2UobmFtZSwgQ29udGVu
dFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXM6OnBsdWdpblR5cGVzKSkKICAgICAgICAgc2V0
Q1NQRGlyZWN0aXZlPENvbnRlbnRTZWN1cml0eVBvbGljeU1lZGlhTGlzdERpcmVjdGl2ZT4obmFt
ZSwgdmFsdWUsIG1fcGx1Z2luVHlwZXMpOwotICAgIGVsc2UgaWYgKGVxdWFsTGV0dGVyc0lnbm9y
aW5nQVNDSUlDYXNlKG5hbWUsIHNhbmRib3gpKQorICAgIGVsc2UgaWYgKGVxdWFsSWdub3JpbmdB
U0NJSUNhc2UobmFtZSwgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXM6OnNhbmRi
b3gpKQogICAgICAgICBhcHBseVNhbmRib3hQb2xpY3kobmFtZSwgdmFsdWUpOwotICAgIGVsc2Ug
aWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG5hbWUsIHJlcG9ydFVSSSkpCisgICAg
ZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShuYW1lLCBDb250ZW50U2VjdXJpdHlQb2xp
Y3lEaXJlY3RpdmVOYW1lczo6cmVwb3J0VVJJKSkKICAgICAgICAgcGFyc2VSZXBvcnRVUkkobmFt
ZSwgdmFsdWUpOwogI2lmIEVOQUJMRShDU1BfTkVYVCkKICAgICBlbHNlIGlmIChtX3BvbGljeS5l
eHBlcmltZW50YWxGZWF0dXJlc0VuYWJsZWQoKSkgewotICAgICAgICBpZiAoZXF1YWxMZXR0ZXJz
SWdub3JpbmdBU0NJSUNhc2UobmFtZSwgcmVmbGVjdGVkWFNTKSkKKyAgICAgICAgaWYgKGVxdWFs
SWdub3JpbmdBU0NJSUNhc2UobmFtZSwgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFt
ZXM6OnJlZmxlY3RlZFhTUykpCiAgICAgICAgICAgICBwYXJzZVJlZmxlY3RlZFhTUyhuYW1lLCB2
YWx1ZSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIG1fcG9saWN5LnJlcG9ydFVuc3VwcG9y
dGVkRGlyZWN0aXZlKG5hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3Av
Q29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdC5oIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdC5oCmluZGV4IDliMWUyMGJj
MDQ1NDBmYTk3MzExYmQ1NmExMDgwYWM2ZWYwZDVlOGEuLjRkMDkwYjk1MzBiYzlmYTM2MjhhZTli
N2M5YTBkMmI3YjM3NjY4ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0Nv
bnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0LmgKQEAgLTM2LDggKzM2
LDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1ib29sIGlzQ1NQRGlyZWN0aXZlTmFtZShj
b25zdCBTdHJpbmcmKTsKLQogY2xhc3MgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlz
dCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFC
TEUoQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdCkKQEAgLTQ4LDQwICs0Niw0MCBA
QCBwdWJsaWM6CiAgICAgY29uc3QgU3RyaW5nJiBoZWFkZXIoKSBjb25zdCB7IHJldHVybiBtX2hl
YWRlcjsgfQogICAgIENvbnRlbnRTZWN1cml0eVBvbGljeUhlYWRlclR5cGUgaGVhZGVyVHlwZSgp
IGNvbnN0IHsgcmV0dXJuIG1faGVhZGVyVHlwZTsgfQogCi0gICAgZW51bSBjbGFzcyBSZXBvcnRp
bmdTdGF0dXMgewotICAgICAgICBTZW5kUmVwb3J0LAotICAgICAgICBTdXBwcmVzc1JlcG9ydAot
ICAgIH07Ci0gICAgYm9vbCBhbGxvd0phdmFTY3JpcHRVUkxzKGNvbnN0IFN0cmluZyYgY29udGV4
dFVSTCwgY29uc3QgV1RGOjpPcmRpbmFsTnVtYmVyJiBjb250ZXh0TGluZSwgUmVwb3J0aW5nU3Rh
dHVzKSBjb25zdDsKLSAgICBib29sIGFsbG93SW5saW5lRXZlbnRIYW5kbGVycyhjb25zdCBTdHJp
bmcmIGNvbnRleHRVUkwsIGNvbnN0IFdURjo6T3JkaW5hbE51bWJlciYgY29udGV4dExpbmUsIFJl
cG9ydGluZ1N0YXR1cykgY29uc3Q7Ci0gICAgYm9vbCBhbGxvd0lubGluZVNjcmlwdChjb25zdCBT
dHJpbmcmIGNvbnRleHRVUkwsIGNvbnN0IFdURjo6T3JkaW5hbE51bWJlciYgY29udGV4dExpbmUs
IFJlcG9ydGluZ1N0YXR1cykgY29uc3Q7Ci0gICAgYm9vbCBhbGxvd0lubGluZVNjcmlwdFdpdGhI
YXNoKGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeUhhc2gmKSBjb25zdDsKLSAgICBib29sIGFs
bG93U2NyaXB0V2l0aE5vbmNlKGNvbnN0IFN0cmluZyYgbm9uY2UpIGNvbnN0OwotICAgIGJvb2wg
YWxsb3dJbmxpbmVTdHlsZShjb25zdCBTdHJpbmcmIGNvbnRleHRVUkwsIGNvbnN0IFdURjo6T3Jk
aW5hbE51bWJlciYgY29udGV4dExpbmUsIFJlcG9ydGluZ1N0YXR1cykgY29uc3Q7Ci0gICAgYm9v
bCBhbGxvd0lubGluZVN0eWxlV2l0aEhhc2goY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5SGFz
aCYpIGNvbnN0OwotICAgIGJvb2wgYWxsb3dTdHlsZVdpdGhOb25jZShjb25zdCBTdHJpbmcmIG5v
bmNlKSBjb25zdDsKLSAgICBib29sIGFsbG93RXZhbChKU0M6OkV4ZWNTdGF0ZSosIFJlcG9ydGlu
Z1N0YXR1cykgY29uc3Q7Ci0gICAgYm9vbCBhbGxvd1BsdWdpblR5cGUoY29uc3QgU3RyaW5nJiB0
eXBlLCBjb25zdCBTdHJpbmcmIHR5cGVBdHRyaWJ1dGUsIGNvbnN0IFVSTCYsIFJlcG9ydGluZ1N0
YXR1cykgY29uc3Q7Ci0KLSAgICBib29sIGFsbG93U2NyaXB0RnJvbVNvdXJjZShjb25zdCBVUkwm
LCBSZXBvcnRpbmdTdGF0dXMpIGNvbnN0OwotICAgIGJvb2wgYWxsb3dPYmplY3RGcm9tU291cmNl
KGNvbnN0IFVSTCYsIFJlcG9ydGluZ1N0YXR1cykgY29uc3Q7Ci0gICAgYm9vbCBhbGxvd0NoaWxk
RnJhbWVGcm9tU291cmNlKGNvbnN0IFVSTCYsIFJlcG9ydGluZ1N0YXR1cykgY29uc3Q7Ci0gICAg
Ym9vbCBhbGxvd0NoaWxkQ29udGV4dEZyb21Tb3VyY2UoY29uc3QgVVJMJiwgUmVwb3J0aW5nU3Rh
dHVzKSBjb25zdDsKLSAgICBib29sIGFsbG93SW1hZ2VGcm9tU291cmNlKGNvbnN0IFVSTCYsIFJl
cG9ydGluZ1N0YXR1cykgY29uc3Q7Ci0gICAgYm9vbCBhbGxvd1N0eWxlRnJvbVNvdXJjZShjb25z
dCBVUkwmLCBSZXBvcnRpbmdTdGF0dXMpIGNvbnN0OwotICAgIGJvb2wgYWxsb3dGb250RnJvbVNv
dXJjZShjb25zdCBVUkwmLCBSZXBvcnRpbmdTdGF0dXMpIGNvbnN0OwotICAgIGJvb2wgYWxsb3dN
ZWRpYUZyb21Tb3VyY2UoY29uc3QgVVJMJiwgUmVwb3J0aW5nU3RhdHVzKSBjb25zdDsKLSAgICBi
b29sIGFsbG93Q29ubmVjdFRvU291cmNlKGNvbnN0IFVSTCYsIFJlcG9ydGluZ1N0YXR1cykgY29u
c3Q7Ci0gICAgYm9vbCBhbGxvd0Zvcm1BY3Rpb24oY29uc3QgVVJMJiwgUmVwb3J0aW5nU3RhdHVz
KSBjb25zdDsKLSAgICBib29sIGFsbG93QmFzZVVSSShjb25zdCBVUkwmLCBSZXBvcnRpbmdTdGF0
dXMpIGNvbnN0OwotCi0gICAgYm9vbCBhbGxvd0ZyYW1lQW5jZXN0b3JzKGNvbnN0IEZyYW1lJiwg
Y29uc3QgVVJMJiwgUmVwb3J0aW5nU3RhdHVzKSBjb25zdDsKKyAgICBjb25zdCBDb250ZW50U2Vj
dXJpdHlQb2xpY3lEaXJlY3RpdmUqIHZpb2xhdGVkRGlyZWN0aXZlRm9yVW5zYWZlRXZhbCgpIGNv
bnN0OworICAgIGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZSogdmlvbGF0ZWRE
aXJlY3RpdmVGb3JVbnNhZmVJbmxpbmVTY3JpcHQoKSBjb25zdDsKKyAgICBjb25zdCBDb250ZW50
U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmUqIHZpb2xhdGVkRGlyZWN0aXZlRm9yVW5zYWZlSW5saW5l
U3R5bGUoKSBjb25zdDsKKworICAgIGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2
ZSogdmlvbGF0ZWREaXJlY3RpdmVGb3JTY3JpcHRIYXNoKGNvbnN0IENvbnRlbnRTZWN1cml0eVBv
bGljeUhhc2gmKSBjb25zdDsKKyAgICBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3Rp
dmUqIHZpb2xhdGVkRGlyZWN0aXZlRm9yU3R5bGVIYXNoKGNvbnN0IENvbnRlbnRTZWN1cml0eVBv
bGljeUhhc2gmKSBjb25zdDsKKworICAgIGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVj
dGl2ZSogdmlvbGF0ZWREaXJlY3RpdmVGb3JTY3JpcHROb25jZShjb25zdCBTdHJpbmcmKSBjb25z
dDsKKyAgICBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmUqIHZpb2xhdGVkRGly
ZWN0aXZlRm9yU3R5bGVOb25jZShjb25zdCBTdHJpbmcmKSBjb25zdDsKKworICAgIGNvbnN0IENv
bnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZSogdmlvbGF0ZWREaXJlY3RpdmVGb3JCYXNlVVJJ
KGNvbnN0IFVSTCYpIGNvbnN0OworICAgIGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVj
dGl2ZSogdmlvbGF0ZWREaXJlY3RpdmVGb3JDaGlsZENvbnRleHQoY29uc3QgVVJMJikgY29uc3Q7
CisgICAgY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlKiB2aW9sYXRlZERpcmVj
dGl2ZUZvckNvbm5lY3RTb3VyY2UoY29uc3QgVVJMJikgY29uc3Q7CisgICAgY29uc3QgQ29udGVu
dFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlKiB2aW9sYXRlZERpcmVjdGl2ZUZvckZvbnQoY29uc3Qg
VVJMJikgY29uc3Q7CisgICAgY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlKiB2
aW9sYXRlZERpcmVjdGl2ZUZvckZvcm1BY3Rpb24oY29uc3QgVVJMJikgY29uc3Q7CisgICAgY29u
c3QgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlKiB2aW9sYXRlZERpcmVjdGl2ZUZvckZy
YW1lKGNvbnN0IFVSTCYpIGNvbnN0OworICAgIGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeURp
cmVjdGl2ZSogdmlvbGF0ZWREaXJlY3RpdmVGb3JGcmFtZUFuY2VzdG9yKGNvbnN0IEZyYW1lJikg
Y29uc3Q7CisgICAgY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlKiB2aW9sYXRl
ZERpcmVjdGl2ZUZvckltYWdlKGNvbnN0IFVSTCYpIGNvbnN0OworICAgIGNvbnN0IENvbnRlbnRT
ZWN1cml0eVBvbGljeURpcmVjdGl2ZSogdmlvbGF0ZWREaXJlY3RpdmVGb3JNZWRpYShjb25zdCBV
UkwmKSBjb25zdDsKKyAgICBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmUqIHZp
b2xhdGVkRGlyZWN0aXZlRm9yT2JqZWN0U291cmNlKGNvbnN0IFVSTCYpIGNvbnN0OworICAgIGNv
bnN0IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZSogdmlvbGF0ZWREaXJlY3RpdmVGb3JQ
bHVnaW5UeXBlKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiB0eXBlQXR0cmlidXRl
KSBjb25zdDsKKyAgICBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmUqIHZpb2xh
dGVkRGlyZWN0aXZlRm9yU2NyaXB0KGNvbnN0IFVSTCYpIGNvbnN0OworICAgIGNvbnN0IENvbnRl
bnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZSogdmlvbGF0ZWREaXJlY3RpdmVGb3JTdHlsZShjb25z
dCBVUkwmKSBjb25zdDsKKworICAgIGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2
ZSogZGVmYXVsdFNyYygpIGNvbnN0IHsgcmV0dXJuIG1fZGVmYXVsdFNyYy5nZXQoKTsgfQogCiAg
ICAgY29uc3QgU3RyaW5nJiBldmFsRGlzYWJsZWRFcnJvck1lc3NhZ2UoKSBjb25zdCB7IHJldHVy
biBtX2V2YWxEaXNhYmxlZEVycm9yTWVzc2FnZTsgfQogICAgIENvbnRlbnRTZWN1cml0eVBvbGlj
eTo6UmVmbGVjdGVkWFNTRGlzcG9zaXRpb24gcmVmbGVjdGVkWFNTRGlzcG9zaXRpb24oKSBjb25z
dCB7IHJldHVybiBtX3JlZmxlY3RlZFhTU0Rpc3Bvc2l0aW9uOyB9CiAgICAgYm9vbCBpc1JlcG9y
dE9ubHkoKSBjb25zdCB7IHJldHVybiBtX3JlcG9ydE9ubHk7IH0KICAgICBjb25zdCBWZWN0b3I8
U3RyaW5nPiYgcmVwb3J0VVJJcygpIGNvbnN0IHsgcmV0dXJuIG1fcmVwb3J0VVJJczsgfQogCisg
ICAgLy8gRklYTUU6IFJlbW92ZSB0aGlzIG9uY2Ugd2UgdGVhY2ggQ29udGVudFNlY3VyaXR5UG9s
aWN5RGlyZWN0aXZlTGlzdCBob3cgdG8gbG9nIGFuIGFyYml0cmFyeSBjb25zb2xlIG1lc3NhZ2Uu
CisgICAgY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5JiBwb2xpY3koKSBjb25zdCB7IHJldHVy
biBtX3BvbGljeTsgfQorCiBwcml2YXRlOgogICAgIHZvaWQgcGFyc2UoY29uc3QgU3RyaW5nJiwg
Q29udGVudFNlY3VyaXR5UG9saWN5OjpQb2xpY3lGcm9tKTsKIApAQCAtOTYsMTIgKzk0LDkgQEAg
cHJpdmF0ZToKICAgICB2b2lkIHNldENTUERpcmVjdGl2ZShjb25zdCBTdHJpbmcmIG5hbWUsIGNv
bnN0IFN0cmluZyYgdmFsdWUsIHN0ZDo6dW5pcXVlX3B0cjxDU1BEaXJlY3RpdmVUeXBlPiYpOwog
CiAgICAgQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdERpcmVjdGl2ZSogb3BlcmF0aXZl
RGlyZWN0aXZlKENvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3REaXJlY3RpdmUqKSBjb25z
dDsKLSAgICB2b2lkIHJlcG9ydFZpb2xhdGlvbihjb25zdCBTdHJpbmcmIGRpcmVjdGl2ZVRleHQs
IGNvbnN0IFN0cmluZyYgZWZmZWN0aXZlRGlyZWN0aXZlLCBjb25zdCBTdHJpbmcmIGNvbnNvbGVN
ZXNzYWdlLCBjb25zdCBVUkwmIGJsb2NrZWRVUkwgPSBVUkwoKSwgY29uc3QgU3RyaW5nJiBjb250
ZXh0VVJMID0gU3RyaW5nKCksIGNvbnN0IFdURjo6T3JkaW5hbE51bWJlciYgY29udGV4dExpbmUg
PSBXVEY6Ok9yZGluYWxOdW1iZXI6OmJlZm9yZUZpcnN0KCksIEpTQzo6RXhlY1N0YXRlKiA9IG51
bGxwdHIpIGNvbnN0OwogCiAgICAgdm9pZCBzZXRFdmFsRGlzYWJsZWRFcnJvck1lc3NhZ2UoY29u
c3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpIHsgbV9ldmFsRGlzYWJsZWRFcnJvck1lc3NhZ2UgPSBl
cnJvck1lc3NhZ2U7IH0KIAotICAgIGJvb2wgZGVueUlmRW5mb3JjaW5nUG9saWN5KCkgY29uc3Qg
eyByZXR1cm4gbV9yZXBvcnRPbmx5OyB9Ci0KICAgICAvLyBGSVhNRTogTWFrZSB0aGlzIGEgY29u
c3QgcmVmZXJlbmNlIG9uY2Ugd2UgdGVhY2ggYXBwbHlTYW5kYm94UG9saWN5KCkgdG8gc3RvcmUg
aXRzIHBvbGljeSBhcyBvcHBvc2VkIHRvIGFwcGx5aW5nIGl0IGRpcmVjdGx5IG9udG8gQ29udGVu
dFNlY3VyaXR5UG9saWN5LgogICAgIENvbnRlbnRTZWN1cml0eVBvbGljeSYgbV9wb2xpY3k7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGlj
eURpcmVjdGl2ZU5hbWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1
cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ZGM0NzM3MTdlZmNjOTkz
YmQ0ZWVjNGQ4NTgwYTg2Yzg4MGU1MzM2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXMuY3BwCkBAIC0w
LDAgKzEsNTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
Q29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXMuaCIKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCituYW1lc3BhY2UgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXMgewor
Citjb25zdCBjaGFyKiBjb25zdCBiYXNlVVJJID0gImJhc2UtdXJpIjsKK2NvbnN0IGNoYXIqIGNv
bnN0IGNoaWxkU3JjID0gImNoaWxkLXNyYyI7Citjb25zdCBjaGFyKiBjb25zdCBjb25uZWN0U3Jj
ID0gImNvbm5lY3Qtc3JjIjsKK2NvbnN0IGNoYXIqIGNvbnN0IGRlZmF1bHRTcmMgPSAiZGVmYXVs
dC1zcmMiOworY29uc3QgY2hhciogY29uc3QgZm9udFNyYyA9ICJmb250LXNyYyI7Citjb25zdCBj
aGFyKiBjb25zdCBmb3JtQWN0aW9uID0gImZvcm0tYWN0aW9uIjsKK2NvbnN0IGNoYXIqIGNvbnN0
IGZyYW1lQW5jZXN0b3JzID0gImZyYW1lLWFuY2VzdG9ycyI7Citjb25zdCBjaGFyKiBjb25zdCBm
cmFtZVNyYyA9ICJmcmFtZS1zcmMiOworY29uc3QgY2hhciogY29uc3QgaW1nU3JjID0gImltZy1z
cmMiOworY29uc3QgY2hhciogY29uc3QgbWVkaWFTcmMgPSAibWVkaWEtc3JjIjsKK2NvbnN0IGNo
YXIqIGNvbnN0IG9iamVjdFNyYyA9ICJvYmplY3Qtc3JjIjsKK2NvbnN0IGNoYXIqIGNvbnN0IHBs
dWdpblR5cGVzID0gInBsdWdpbi10eXBlcyI7Citjb25zdCBjaGFyKiBjb25zdCByZXBvcnRVUkkg
PSAicmVwb3J0LXVyaSI7Citjb25zdCBjaGFyKiBjb25zdCBzYW5kYm94ID0gInNhbmRib3giOwor
Y29uc3QgY2hhciogY29uc3Qgc2NyaXB0U3JjID0gInNjcmlwdC1zcmMiOworY29uc3QgY2hhciog
Y29uc3Qgc3R5bGVTcmMgPSAic3R5bGUtc3JjIjsKKworI2lmIEVOQUJMRShDU1BfTkVYVCkKK2Nv
bnN0IGNoYXIqIGNvbnN0IHJlZmxlY3RlZFhTUyA9ICJyZWZsZWN0ZWQteHNzIjsKKyNlbmRpZgor
ICAgIAorfSAvLyBuYW1lc3BhY2UgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXMK
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXMuaCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNTIxMjAxYWY1M2UwODk5Y2NmNjc5MzJmZGVjNGU2NDk4OTE1OTZiMQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeURp
cmVjdGl2ZU5hbWVzLmgKQEAgLTAsMCArMSw1NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBDb250ZW50U2VjdXJpdHlQb2xp
Y3lEaXJlY3RpdmVOYW1lcyB7CisKK2V4dGVybiBjb25zdCBjaGFyKiBjb25zdCBiYXNlVVJJOwor
ZXh0ZXJuIGNvbnN0IGNoYXIqIGNvbnN0IGNoaWxkU3JjOworZXh0ZXJuIGNvbnN0IGNoYXIqIGNv
bnN0IGNvbm5lY3RTcmM7CitleHRlcm4gY29uc3QgY2hhciogY29uc3QgZGVmYXVsdFNyYzsKK2V4
dGVybiBjb25zdCBjaGFyKiBjb25zdCBmb250U3JjOworZXh0ZXJuIGNvbnN0IGNoYXIqIGNvbnN0
IGZvcm1BY3Rpb247CitleHRlcm4gY29uc3QgY2hhciogY29uc3QgZnJhbWVBbmNlc3RvcnM7Citl
eHRlcm4gY29uc3QgY2hhciogY29uc3QgZnJhbWVTcmM7CitleHRlcm4gY29uc3QgY2hhciogY29u
c3QgaW1nU3JjOworZXh0ZXJuIGNvbnN0IGNoYXIqIGNvbnN0IG1lZGlhU3JjOworZXh0ZXJuIGNv
bnN0IGNoYXIqIGNvbnN0IG9iamVjdFNyYzsKK2V4dGVybiBjb25zdCBjaGFyKiBjb25zdCBwbHVn
aW5UeXBlczsKK2V4dGVybiBjb25zdCBjaGFyKiBjb25zdCByZXBvcnRVUkk7CitleHRlcm4gY29u
c3QgY2hhciogY29uc3Qgc2FuZGJveDsKK2V4dGVybiBjb25zdCBjaGFyKiBjb25zdCBzY3JpcHRT
cmM7CitleHRlcm4gY29uc3QgY2hhciogY29uc3Qgc3R5bGVTcmM7CisKKyNpZiBFTkFCTEUoQ1NQ
X05FWFQpCitleHRlcm4gY29uc3QgY2hhciByZWZsZWN0ZWRYU1NbXTsKKyNlbmRpZgorCit9IC8v
IG5hbWVzcGFjZSBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lcworCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0Nv
bnRlbnRTZWN1cml0eVBvbGljeU1lZGlhTGlzdERpcmVjdGl2ZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lNZWRpYUxpc3REaXJlY3RpdmUuY3BwCmlu
ZGV4IDJhZjM5MzU5ODMyYTE2YzQ4YTlkZGMxMDVmY2M3ZWZkOTlkNjBmODguLjNkM2VkNGQwZGI0
NTFiNDQyODc4ZDlhZDRmZDM5Y2ExZWY2ZGQ0YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeU1lZGlhTGlzdERpcmVjdGl2ZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5TWVkaWFMaXN0
RGlyZWN0aXZlLmNwcApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIkNvbnRlbnRTZWN1cml0
eVBvbGljeU1lZGlhTGlzdERpcmVjdGl2ZS5oIgogCiAjaW5jbHVkZSAiQ29udGVudFNlY3VyaXR5
UG9saWN5LmgiCisjaW5jbHVkZSAiQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdC5o
IgogI2luY2x1ZGUgIlBhcnNpbmdVdGlsaXRpZXMuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJp
bmdIYXNoLmg+CiAKQEAgLTQzLDggKzQ0LDggQEAgc3RhdGljIGJvb2wgaXNOb3RBU0NJSVNwYWNl
KFVDaGFyIGMpCiAgICAgcmV0dXJuICFpc0FTQ0lJU3BhY2UoYyk7CiB9CiAKLUNvbnRlbnRTZWN1
cml0eVBvbGljeU1lZGlhTGlzdERpcmVjdGl2ZTo6Q29udGVudFNlY3VyaXR5UG9saWN5TWVkaWFM
aXN0RGlyZWN0aXZlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgY29u
c3QgQ29udGVudFNlY3VyaXR5UG9saWN5JiBwb2xpY3kpCi0gICAgOiBDb250ZW50U2VjdXJpdHlQ
b2xpY3lEaXJlY3RpdmUobmFtZSwgdmFsdWUsIHBvbGljeSkKK0NvbnRlbnRTZWN1cml0eVBvbGlj
eU1lZGlhTGlzdERpcmVjdGl2ZTo6Q29udGVudFNlY3VyaXR5UG9saWN5TWVkaWFMaXN0RGlyZWN0
aXZlKGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3QmIGRpcmVjdGl2ZUxp
c3QsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKKyAgICA6IENvbnRl
bnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZShkaXJlY3RpdmVMaXN0LCBuYW1lLCB2YWx1ZSkKIHsK
ICAgICBwYXJzZSh2YWx1ZSk7CiB9CkBAIC02Myw3ICs2NCw3IEBAIHZvaWQgQ29udGVudFNlY3Vy
aXR5UG9saWN5TWVkaWFMaXN0RGlyZWN0aXZlOjpwYXJzZShjb25zdCBTdHJpbmcmIHZhbHVlKQog
CiAgICAgLy8gJ3BsdWdpbi10eXBlcyBfX19fOycgT1IgJ3BsdWdpbi10eXBlczsnCiAgICAgaWYg
KHZhbHVlLmlzRW1wdHkoKSkgewotICAgICAgICBwb2xpY3koKS5yZXBvcnRJbnZhbGlkUGx1Z2lu
VHlwZXModmFsdWUpOworICAgICAgICBkaXJlY3RpdmVMaXN0KCkucG9saWN5KCkucmVwb3J0SW52
YWxpZFBsdWdpblR5cGVzKHZhbHVlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNzks
NyArODAsNyBAQCB2b2lkIENvbnRlbnRTZWN1cml0eVBvbGljeU1lZGlhTGlzdERpcmVjdGl2ZTo6
cGFyc2UoY29uc3QgU3RyaW5nJiB2YWx1ZSkKICAgICAgICAgYmVnaW4gPSBwb3NpdGlvbjsKICAg
ICAgICAgaWYgKCFza2lwRXhhY3RseTxVQ2hhciwgaXNNZWRpYVR5cGVDaGFyYWN0ZXI+KHBvc2l0
aW9uLCBlbmQpKSB7CiAgICAgICAgICAgICBza2lwV2hpbGU8VUNoYXIsIGlzTm90QVNDSUlTcGFj
ZT4ocG9zaXRpb24sIGVuZCk7Ci0gICAgICAgICAgICBwb2xpY3koKS5yZXBvcnRJbnZhbGlkUGx1
Z2luVHlwZXMoU3RyaW5nKGJlZ2luLCBwb3NpdGlvbiAtIGJlZ2luKSk7CisgICAgICAgICAgICBk
aXJlY3RpdmVMaXN0KCkucG9saWN5KCkucmVwb3J0SW52YWxpZFBsdWdpblR5cGVzKFN0cmluZyhi
ZWdpbiwgcG9zaXRpb24gLSBiZWdpbikpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAg
IH0KICAgICAgICAgc2tpcFdoaWxlPFVDaGFyLCBpc01lZGlhVHlwZUNoYXJhY3Rlcj4ocG9zaXRp
b24sIGVuZCk7CkBAIC04OCw3ICs4OSw3IEBAIHZvaWQgQ29udGVudFNlY3VyaXR5UG9saWN5TWVk
aWFMaXN0RGlyZWN0aXZlOjpwYXJzZShjb25zdCBTdHJpbmcmIHZhbHVlKQogICAgICAgICAvLyAg
ICAgIF4KICAgICAgICAgaWYgKCFza2lwRXhhY3RseTxVQ2hhcj4ocG9zaXRpb24sIGVuZCwgJy8n
KSkgewogICAgICAgICAgICAgc2tpcFdoaWxlPFVDaGFyLCBpc05vdEFTQ0lJU3BhY2U+KHBvc2l0
aW9uLCBlbmQpOwotICAgICAgICAgICAgcG9saWN5KCkucmVwb3J0SW52YWxpZFBsdWdpblR5cGVz
KFN0cmluZyhiZWdpbiwgcG9zaXRpb24gLSBiZWdpbikpOworICAgICAgICAgICAgZGlyZWN0aXZl
TGlzdCgpLnBvbGljeSgpLnJlcG9ydEludmFsaWRQbHVnaW5UeXBlcyhTdHJpbmcoYmVnaW4sIHBv
c2l0aW9uIC0gYmVnaW4pKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAKQEAg
LTk2LDcgKzk3LDcgQEAgdm9pZCBDb250ZW50U2VjdXJpdHlQb2xpY3lNZWRpYUxpc3REaXJlY3Rp
dmU6OnBhcnNlKGNvbnN0IFN0cmluZyYgdmFsdWUpCiAgICAgICAgIC8vICAgICAgIF4KICAgICAg
ICAgaWYgKCFza2lwRXhhY3RseTxVQ2hhciwgaXNNZWRpYVR5cGVDaGFyYWN0ZXI+KHBvc2l0aW9u
LCBlbmQpKSB7CiAgICAgICAgICAgICBza2lwV2hpbGU8VUNoYXIsIGlzTm90QVNDSUlTcGFjZT4o
cG9zaXRpb24sIGVuZCk7Ci0gICAgICAgICAgICBwb2xpY3koKS5yZXBvcnRJbnZhbGlkUGx1Z2lu
VHlwZXMoU3RyaW5nKGJlZ2luLCBwb3NpdGlvbiAtIGJlZ2luKSk7CisgICAgICAgICAgICBkaXJl
Y3RpdmVMaXN0KCkucG9saWN5KCkucmVwb3J0SW52YWxpZFBsdWdpblR5cGVzKFN0cmluZyhiZWdp
biwgcG9zaXRpb24gLSBiZWdpbikpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0K
ICAgICAgICAgc2tpcFdoaWxlPFVDaGFyLCBpc01lZGlhVHlwZUNoYXJhY3Rlcj4ocG9zaXRpb24s
IGVuZCk7CkBAIC0xMDUsNyArMTA2LDcgQEAgdm9pZCBDb250ZW50U2VjdXJpdHlQb2xpY3lNZWRp
YUxpc3REaXJlY3RpdmU6OnBhcnNlKGNvbnN0IFN0cmluZyYgdmFsdWUpCiAgICAgICAgIC8vICAg
ICAgICAgICAgXiAgICAgICAgICAgICAgICAgICAgICAgICAgXiAgICAgICAgICAgICAgIF4KICAg
ICAgICAgaWYgKHBvc2l0aW9uIDwgZW5kICYmIGlzTm90QVNDSUlTcGFjZSgqcG9zaXRpb24pKSB7
CiAgICAgICAgICAgICBza2lwV2hpbGU8VUNoYXIsIGlzTm90QVNDSUlTcGFjZT4ocG9zaXRpb24s
IGVuZCk7Ci0gICAgICAgICAgICBwb2xpY3koKS5yZXBvcnRJbnZhbGlkUGx1Z2luVHlwZXMoU3Ry
aW5nKGJlZ2luLCBwb3NpdGlvbiAtIGJlZ2luKSk7CisgICAgICAgICAgICBkaXJlY3RpdmVMaXN0
KCkucG9saWN5KCkucmVwb3J0SW52YWxpZFBsdWdpblR5cGVzKFN0cmluZyhiZWdpbiwgcG9zaXRp
b24gLSBiZWdpbikpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KICAgICAgICAg
bV9wbHVnaW5UeXBlcy5hZGQoU3RyaW5nKGJlZ2luLCBwb3NpdGlvbiAtIGJlZ2luKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lNZWRp
YUxpc3REaXJlY3RpdmUuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0
eVBvbGljeU1lZGlhTGlzdERpcmVjdGl2ZS5oCmluZGV4IGYxYTA1N2U3NzczZTg0MjhhNDk2ZWRk
MDc2Mjc2OGUwMTU4MDYzMzAuLmU4NTA2OGViYTBhYjhhOTdjMjRjMjEyYzMzYjIxOTBmZTQ3Yjk0
ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBv
bGljeU1lZGlhTGlzdERpcmVjdGl2ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0Nv
bnRlbnRTZWN1cml0eVBvbGljeU1lZGlhTGlzdERpcmVjdGl2ZS5oCkBAIC0zMywxMSArMzMsMTEg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBDb250ZW50U2VjdXJpdHlQb2xpY3k7
CitjbGFzcyBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0OwogCiBjbGFzcyBDb250
ZW50U2VjdXJpdHlQb2xpY3lNZWRpYUxpc3REaXJlY3RpdmUgOiBwdWJsaWMgQ29udGVudFNlY3Vy
aXR5UG9saWN5RGlyZWN0aXZlIHsKIHB1YmxpYzoKLSAgICBDb250ZW50U2VjdXJpdHlQb2xpY3lN
ZWRpYUxpc3REaXJlY3RpdmUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVl
LCBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3kmKTsKKyAgICBDb250ZW50U2VjdXJpdHlQb2xp
Y3lNZWRpYUxpc3REaXJlY3RpdmUoY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZl
TGlzdCYsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSk7CiAKICAgICBi
b29sIGFsbG93cyhjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3Qu
Y3BwCmluZGV4IDgwNDRhZThiZmUzMTRlMWJmOWJkYWZhYWQwZTJiNDhkOTM3MzA0YzkuLjI1NGFm
OGU1OWIwZDIwOGQzMGIwMWUwM2RlZjYyOGZhN2QzNzM3YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3Qu
Y3BwCkBAIC0yOCw3ICsyOCw3IEBACiAjaW5jbHVkZSAiQ29udGVudFNlY3VyaXR5UG9saWN5U291
cmNlTGlzdC5oIgogCiAjaW5jbHVkZSAiQ29udGVudFNlY3VyaXR5UG9saWN5LmgiCi0jaW5jbHVk
ZSAiQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdC5oIgorI2luY2x1ZGUgIkNvbnRl
bnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzLmgiCiAjaW5jbHVkZSAiUGFyc2luZ1V0aWxp
dGllcy5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiVVJMLmgiCkBA
IC0zOCw2ICszOCwzNSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK3N0YXRpYyBpbmxpbmUg
Ym9vbCBpc0V4cGVyaW1lbnRhbERpcmVjdGl2ZU5hbWUoY29uc3QgU3RyaW5nJiBuYW1lKQorewor
I2lmIEVOQUJMRShDU1BfTkVYVCkKKyAgICByZXR1cm4gZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShu
YW1lLCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lczo6cmVmbGVjdGVkWFNTKTsK
KyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKG5hbWUpOworICAgIHJldHVybiBmYWxzZTsKKyNlbmRp
ZgorfQorCitzdGF0aWMgYm9vbCBpc0NTUERpcmVjdGl2ZU5hbWUoY29uc3QgU3RyaW5nJiBuYW1l
KQoreworICAgIHJldHVybiBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKG5hbWUsIENvbnRlbnRTZWN1
cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzOjpiYXNlVVJJKQorICAgICAgICB8fCBlcXVhbElnbm9y
aW5nQVNDSUlDYXNlKG5hbWUsIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzOjpj
b25uZWN0U3JjKQorICAgICAgICB8fCBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKG5hbWUsIENvbnRl
bnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzOjpkZWZhdWx0U3JjKQorICAgICAgICB8fCBl
cXVhbElnbm9yaW5nQVNDSUlDYXNlKG5hbWUsIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2
ZU5hbWVzOjpmb250U3JjKQorICAgICAgICB8fCBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKG5hbWUs
IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzOjpmb3JtQWN0aW9uKQorICAgICAg
ICB8fCBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKG5hbWUsIENvbnRlbnRTZWN1cml0eVBvbGljeURp
cmVjdGl2ZU5hbWVzOjpmcmFtZVNyYykKKyAgICAgICAgfHwgZXF1YWxJZ25vcmluZ0FTQ0lJQ2Fz
ZShuYW1lLCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lczo6aW1nU3JjKQorICAg
ICAgICB8fCBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKG5hbWUsIENvbnRlbnRTZWN1cml0eVBvbGlj
eURpcmVjdGl2ZU5hbWVzOjptZWRpYVNyYykKKyAgICAgICAgfHwgZXF1YWxJZ25vcmluZ0FTQ0lJ
Q2FzZShuYW1lLCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lczo6b2JqZWN0U3Jj
KQorICAgICAgICB8fCBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKG5hbWUsIENvbnRlbnRTZWN1cml0
eVBvbGljeURpcmVjdGl2ZU5hbWVzOjpwbHVnaW5UeXBlcykKKyAgICAgICAgfHwgZXF1YWxJZ25v
cmluZ0FTQ0lJQ2FzZShuYW1lLCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lczo6
cmVwb3J0VVJJKQorICAgICAgICB8fCBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKG5hbWUsIENvbnRl
bnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzOjpzYW5kYm94KQorICAgICAgICB8fCBlcXVh
bElnbm9yaW5nQVNDSUlDYXNlKG5hbWUsIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5h
bWVzOjpzY3JpcHRTcmMpCisgICAgICAgIHx8IGVxdWFsSWdub3JpbmdBU0NJSUNhc2UobmFtZSwg
Q29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXM6OnN0eWxlU3JjKQorICAgICAgICB8
fCBpc0V4cGVyaW1lbnRhbERpcmVjdGl2ZU5hbWUobmFtZSk7Cit9CisKIHN0YXRpYyBib29sIGlz
U291cmNlQ2hhcmFjdGVyKFVDaGFyIGMpCiB7CiAgICAgcmV0dXJuICFpc0FTQ0lJU3BhY2UoYyk7
CkBAIC0xMDEsMTIgKzEzMCwxMCBAQCBib29sIENvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxp
c3Q6OmlzUHJvdG9jb2xBbGxvd2VkQnlTdGFyKGNvbnN0IFVSTCYgdXJsKSBjbwogewogICAgIC8v
IEFsdGhvdWdoIG5vdCBhbGxvd2VkIGJ5IHRoZSBDb250ZW50IFNlY3VyaXR5IFBvbGljeSBMZXZl
bCAzIHNwZWMuLCB3ZSBhbGxvdyBhIGRhdGEgVVJMIHRvIG1hdGNoCiAgICAgLy8gImltZy1zcmMg
KiIgYW5kIGVpdGhlciBhIGRhdGEgVVJMIG9yIGJsb2IgVVJMIHRvIG1hdGNoICJtZWRpYS1zcmMg
KiIgZm9yIHdlYiBjb21wYXRpYmlsaXR5LgotICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgbm90IGhh
cmRjb2RlIHRoZSBkaXJlY3RpdmUgbmFtZXMuIFdlIHNob3VsZCBtYWtlIHVzZSBvZiB0aGUgY29u
c3RhbnRzIGluIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3QuY3BwLgotICAgIC8v
IFNlZSA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NTEzMz4uCiAg
ICAgYm9vbCBpc0FsbG93ZWQgPSB1cmwucHJvdG9jb2xJc0luSFRUUEZhbWlseSgpOwotICAgIGlm
IChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShtX2RpcmVjdGl2ZU5hbWUsICJpbWctc3Jj
IikpCisgICAgaWYgKGVxdWFsSWdub3JpbmdBU0NJSUNhc2UobV9kaXJlY3RpdmVOYW1lLCBDb250
ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lczo6aW1nU3JjKSkKICAgICAgICAgaXNBbGxv
d2VkIHw9IHVybC5wcm90b2NvbElzRGF0YSgpOwotICAgIGVsc2UgaWYgKGVxdWFsTGV0dGVyc0ln
bm9yaW5nQVNDSUlDYXNlKG1fZGlyZWN0aXZlTmFtZSwgIm1lZGlhLXNyYyIpKQorICAgIGVsc2Ug
aWYgKGVxdWFsSWdub3JpbmdBU0NJSUNhc2UobV9kaXJlY3RpdmVOYW1lLCBDb250ZW50U2VjdXJp
dHlQb2xpY3lEaXJlY3RpdmVOYW1lczo6bWVkaWFTcmMpKQogICAgICAgICBpc0FsbG93ZWQgfD0g
dXJsLnByb3RvY29sSXNEYXRhKCkgfHwgdXJsLnByb3RvY29sSXNCbG9iKCk7CiAgICAgcmV0dXJu
IGlzQWxsb3dlZDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRl
bnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3REaXJlY3RpdmUuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdERpcmVjdGl2ZS5jcHAKaW5k
ZXggNGM0ZjExYzQyZTRiNTFmOTZhY2Y1ZDg2ZjRiNGY1NTY4M2FlMjhmNS4uNDYxZGExZGYwMGE1
OTg1YzY3MmIxYTljMmFkMWI0MDI0MjAzNzRjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdERpcmVjdGl2ZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlz
dERpcmVjdGl2ZS5jcHAKQEAgLTI4LDEzICsyOCwxNCBAQAogI2luY2x1ZGUgIkNvbnRlbnRTZWN1
cml0eVBvbGljeVNvdXJjZUxpc3REaXJlY3RpdmUuaCIKIAogI2luY2x1ZGUgIkNvbnRlbnRTZWN1
cml0eVBvbGljeS5oIgorI2luY2x1ZGUgIkNvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxp
c3QuaCIKICNpbmNsdWRlICJVUkwuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1Db250ZW50
U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0RGlyZWN0aXZlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lT
b3VyY2VMaXN0RGlyZWN0aXZlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1
ZSwgY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5JiBwb2xpY3kpCi0gICAgOiBDb250ZW50U2Vj
dXJpdHlQb2xpY3lEaXJlY3RpdmUobmFtZSwgdmFsdWUsIHBvbGljeSkKLSAgICAsIG1fc291cmNl
TGlzdChwb2xpY3ksIG5hbWUpCitDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0RGlyZWN0
aXZlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0RGlyZWN0aXZlKGNvbnN0IENvbnRl
bnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3QmIGRpcmVjdGl2ZUxpc3QsIGNvbnN0IFN0cmlu
ZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKKyAgICA6IENvbnRlbnRTZWN1cml0eVBvbGlj
eURpcmVjdGl2ZShkaXJlY3RpdmVMaXN0LCBuYW1lLCB2YWx1ZSkKKyAgICAsIG1fc291cmNlTGlz
dChkaXJlY3RpdmVMaXN0LnBvbGljeSgpLCBuYW1lKQogewogICAgIG1fc291cmNlTGlzdC5wYXJz
ZSh2YWx1ZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50
U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0RGlyZWN0aXZlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0RGlyZWN0aXZlLmgKaW5kZXggYWM2
NTAwNTJkYzFlNTkxMmZjMWQ1ZjQ2NjVkYjVkM2UzY2ZjNWU3My4uYjg1YThlOGZmOTBjZjA0NTBj
OWYxNGU3NzJjYTFjMDAxNGY4NTFhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9j
c3AvQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdERpcmVjdGl2ZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3REaXJlY3Rp
dmUuaApAQCAtMzIsMTEgKzMyLDExIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3Mg
Q29udGVudFNlY3VyaXR5UG9saWN5OworY2xhc3MgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0
aXZlTGlzdDsKIAogY2xhc3MgQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdERpcmVjdGl2
ZSA6IHB1YmxpYyBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmUgewogcHVibGljOgotICAg
IENvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3REaXJlY3RpdmUoY29uc3QgU3RyaW5nJiBu
YW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlLCBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3kmKTsK
KyAgICBDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0RGlyZWN0aXZlKGNvbnN0IENvbnRl
bnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3QmLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0
IFN0cmluZyYgdmFsdWUpOwogCiAgICAgYm9vbCBhbGxvd3MoY29uc3QgVVJMJik7CiAgICAgYm9v
bCBhbGxvd3MoY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5SGFzaCYpIGNvbnN0Owo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>274846</attachid>
            <date>2016-03-24 11:34:46 -0700</date>
            <delta_ts>2016-03-24 15:15:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-155842-20160324113447.patch</filename>
            <type>text/plain</type>
            <size>113599</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk4NjI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmY3Yzc4ZTcyYjEzZDlm
MjI1ZTQxZWM4MTI2OWJiNGJmMjVmYWM2Yy4uMzNlMzU1YzgwYjc2Yzc0MWU5ODE5NDQzZmMwNTk3
MjE3MmFiMzlmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1MyBAQAorMjAxNi0wMy0yNCAgRGFu
aWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CisKKyAgICAgICAgQ1NQOiBNb3ZlIGxvZ2lj
IGZvciByZXBvcnRpbmcgYSB2aW9sYXRpb24gZnJvbSBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJl
Y3RpdmVMaXN0IHRvIENvbnRlbnRTZWN1cml0eVBvbGljeQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU1ODQyCisgICAgICAgIDxyZGFyOi8vcHJvYmxl
bS8yNTM0MDM3Nz4KKyAgICAgICAgQW5kCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNTUxMzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBUb3dhcmRzIGFzc29jaWF0aW5nIHNvdXJjZSBmaWxlLCBsaW5lLSwg
YW5kIGNvbHVtbi0gbnVtYmVycyAoaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTExNDMxNykKKyAgICAgICAgd2l0aCBhIENTUCBjb25zb2xlIG1lc3NhZ2Ugd2Ugc2hvdWxk
IG1vdmUgdGhlIGxvZ2ljIGZvciBsb2dnaW5nIHRoZSBjb25zb2xlIG1lc3NhZ2UvcmVwb3J0aW5n
IHRoZSB2aW9sYXRpb24KKyAgICAgICAgZnJvbSBjbGFzcyBDb250ZW50U2VjdXJpdHlQb2xpY3lE
aXJlY3RpdmVMaXN0IHRvIGNsYXNzIENvbnRlbnRTZWN1cml0eVBvbGljeSBzbyB0aGF0IGl0IGlz
IGNsb3NlciB0byB0aGUKKyAgICAgICAgc2NyaXB0IGV4ZWN1dGlvbiBjb250ZXh0IHRoYXQgY2Fu
IGFjY2VzcyBzdWNoIGluZm9ybWF0aW9uLgorCisgICAgICAgIFRoZSByZXNwb25zaWJpbGl0aWVz
IG9mIHRoZSBjbGFzcyBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0IGhhdmUgYmVl
biByZWR1Y2VkLiBJdCBpcyByZXNwb25zaWJsZQorICAgICAgICBmb3IgcGFyc2luZyBhIHN0cmlu
ZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgQ29udGVudCBTZWN1cml0eSBQb2xpY3kgYW5kIHByb3Zp
ZGluZyBmdW5jdGlvbnMgdG8gZGV0ZXJtaW5lCisgICAgICAgIHRoZSB2aW9sYXRlZCBkaXJlY3Rp
dmUgKGlmIGFueSkgZm9yIGEgZ2l2ZW4gc291cmNlIChlLmcuIFVSTCkuIENvbnRlbnRTZWN1cml0
eVBvbGljeURpcmVjdGl2ZUxpc3Qgbm8gbG9uZ2VyCisgICAgICAgIHRha2VzIHJlc3BvbnNpYmls
aXR5IGxvZ2dpbmcgYSBjb25zb2xlIG1lc3NhZ2Ugb3Igc2VuZGluZyBhIHZpb2xhdGlvbiByZXBv
cnQgKGlmIGFwcGxpY2FibGUpLiBGYWxsaW5nIG91dAorICAgICAgICBmcm9tIHRoaXMgZGVjcmVh
c2UgaW4gcmVzcG9uc2liaWxpdHkgaXMgdGhlIHJlbW92YWwgb2YgZW51bSBDb250ZW50U2VjdXJp
dHlQb2xpY3lEaXJlY3RpdmVMaXN0OjpSZXBvcnRpbmdTdGF0dXMKKyAgICAgICAgYW5kIHRoZSBu
ZWVkIHRvIHBhc3MgYSBlbnVtZXJhdG9yIG9mIHRoaXMgZW51bSB0byBlYWNoIENvbnRlbnRTZWN1
cml0eVBvbGljeURpcmVjdGl2ZUxpc3QgdG8gc3VwcHJlc3MKKyAgICAgICAgdGhlIHNlbmRpbmcg
b2YgYSB2aW9sYXRpb24gcmVwb3J0LiBUaGUgY2FsbGVyIG9mIENvbnRlbnRTZWN1cml0eVBvbGlj
eURpcmVjdGl2ZUxpc3QgaXMgcmVzcG9uc2libGUgZm9yCisgICAgICAgIG1ha2luZyB0aGlzIGRl
dGVybWluYXRpb24uCisKKyAgICAgICAgTm8gZnVuY3Rpb25hbGl0eSB3YXMgY2hhbmdlZC4gU28s
IG5vIG5ldyB0ZXN0cy4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OiBBZGQgZmlsZXMgQ29u
dGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlLmNwcCBhbmQgQ29udGVudFNlY3VyaXR5UG9saWN5
RGlyZWN0aXZlTmFtZXMuY3BwLgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajogQWRkIGZpbGVzIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZS5jcHAgYW5k
IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzLntjcHAsIGh9LgorICAgICAgICAq
IHBhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpj
b25zb2xlTWVzc2FnZUZvclZpb2xhdGlvbik6IE1vdmVkIGZyb20gZmlsZSBDb250ZW50U2VjdXJp
dHlQb2xpY3lEaXJlY3RpdmVMaXN0LmNwcCBhbmQKKyAgICAgICAgaW5jb3Jwb3JhdGVzIHRoZSBm
dW5jdGlvbmFsaXR5IG9mIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OnJlcG9y
dFZpb2xhdGlvbigpLiBNb2RpZmllZAorICAgICAgICB0byB0YWtlIGEgcmVmZXJlbmNlIHRvIHRo
ZSB2aW9sYXRlZCBkaXJlY3RpdmUgKENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZSBvYmpl
Y3QpIGFuZCByZW1vdmVkCisgICAgICAgIHRoZSBib29sZWFuIHBhcmFtZXRlciB2aW9sYXRlc0Rl
ZmF1bHRTcmMgYXMgd2UgY2FuIGRlZHVjZSB0aGlzIGZyb20gdGhlIHZpb2xhdGVkIGRpcmVjdGl2
ZS4KKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeTo6ZGlkUmVjZWl2ZUhl
YWRlcik6IE1vZGlmaWVkIHRvIGNhbGwgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlz
dDo6dmlvbGF0ZWREaXJlY3RpdmVGb3JVbnNhZmVFdmFsKCkuCisgICAgICAgIChXZWJDb3JlOjpD
b250ZW50U2VjdXJpdHlQb2xpY3k6OmZvdW5kSGFzaE9mQ29udGVudEluQWxsUG9saWNpZXMpOiBS
ZW5hbWVkOyBGb3JtZXJseSBuYW1lZCBhbGxQb2xpY2llc0FsbG93SGFzaEZyb21Db250ZW50Lgor
ICAgICAgICBNb2RpZmllZCB0byBlYXJseSByZXR1cm4gaWYgZWl0aGVyIG5vIGFsZ29yaXRobXMg
YXJlIGdpdmVuIG9yIHRoZSBzcGVjaWZpZWQgY29udGVudCB0byBoYXNoIGlzCisgICAgICAgIHRo
ZSBlbXB0eSBzdHJpbmcuCisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3k6
OmFsbG93SmF2YVNjcmlwdFVSTHMpOiBNb3ZlZCBsb2dpYyBmb3IgcmVwb3J0aW5nIGEgdmlvbGF0
aW9uIGZyb20KKyAgICAgICAgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdCBtZW1i
ZXIgZnVuY3Rpb24gb2YgdGhlIHNhbWUgbmFtZSB0byBoZXJlLgorICAgICAgICAoV2ViQ29yZTo6
Q29udGVudFNlY3VyaXR5UG9saWN5OjphbGxvd0lubGluZUV2ZW50SGFuZGxlcnMpOiBEaXR0by4K
KyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeTo6YWxsb3dTY3JpcHRXaXRo
Tm9uY2UpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeTo6
YWxsb3dTdHlsZVdpdGhOb25jZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudFNl
Y3VyaXR5UG9saWN5OjphbGxvd0lubGluZVNjcmlwdCk6IERpdHRvLgorICAgICAgICAoV2ViQ29y
ZTo6Q29udGVudFNlY3VyaXR5UG9saWN5OjphbGxvd0lubGluZVN0eWxlKTogRGl0dG8uCisgICAg
ICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93RXZhbCk6IERpdHRvLgor
ICAgICAgICAoV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5OjphbGxvd0ZyYW1lQW5jZXN0
b3JzKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFs
bG93UGx1Z2luVHlwZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5
UG9saWN5OjphbGxvd1NjcmlwdEZyb21Tb3VyY2UpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6
OkNvbnRlbnRTZWN1cml0eVBvbGljeTo6YWxsb3dPYmplY3RGcm9tU291cmNlKTogRGl0dG8uCisg
ICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93Q2hpbGRGcmFtZUZy
b21Tb3VyY2UpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGlj
eTo6YWxsb3dDaGlsZENvbnRleHRGcm9tU291cmNlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3Jl
OjpDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93SW1hZ2VGcm9tU291cmNlKTogRGl0dG8uCisg
ICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93U3R5bGVGcm9tU291
cmNlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFs
bG93Rm9udEZyb21Tb3VyY2UpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1
cml0eVBvbGljeTo6YWxsb3dNZWRpYUZyb21Tb3VyY2UpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeTo6YWxsb3dDb25uZWN0VG9Tb3VyY2UpOiBEaXR0by4K
KyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeTo6YWxsb3dGb3JtQWN0aW9u
KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93
QmFzZVVSSSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5
OjpyZXBvcnRWaW9sYXRpb24pOiBTaW1wbGlmaWVkIHNpZ25hdHVyZSBieSBoYXZpbmcgaXQgdGFr
ZSBhIHJlZmVyZW5jZSB0bworICAgICAgICBhIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2
ZSBvYmplY3QuIEFsc28gc3BsaXQgZnVuY3Rpb25hbGl0eSBpbnRvIHR3byB2YXJpYW50czogb25l
IHZhcmlhbnQgdGFrZXMgYQorICAgICAgICBwb2ludGVyIHRvIGEgSlNDOjpFeGVjU3RhdGUsIG9u
ZSB2YXJpYW50IHRha2VzIGEgc291cmNlIGZpbGUsIGFuZCBsaW5lIGFuZCBjb2x1bW4gcG9zaXRp
b25zLgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5OjphbGxQb2xpY2ll
c0FsbG93SGFzaEZyb21Db250ZW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNvbnRl
bnRTZWN1cml0eVBvbGljeTo6Z2F0aGVyUmVwb3J0VVJJcyk6IERlbGV0ZWQuCisgICAgICAgICog
cGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5Lmg6CisgICAgICAgIChXZWJDb3JlOjpDb250
ZW50U2VjdXJpdHlQb2xpY3k6OnZpb2xhdGVkRGlyZWN0aXZlSW5BbnlQb2xpY3kpOiBGb3JtZXJs
eSBuYW1lZCBhbGxQb2xpY2llc0FsbG93LiBNb2RpZmllZAorICAgICAgICB0byByZXR1cm4gdGhl
IHZpb2xhdGVkIGRpcmVjdGl2ZS4KKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBv
bGljeTo6YWxsUG9saWNpZXNBbGxvdyk6IERlbGV0ZWQuCisgICAgICAgICogcGFnZS9jc3AvQ29u
dGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlLmNwcDogQWRkZWQuCisgICAgICAgICogcGFnZS9j
c3AvQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlLmg6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlOjpDb250ZW50U2VjdXJpdHlQb2xp
Y3lEaXJlY3RpdmUpOiBNb2RpZmllZCB0byB0YWtlIGEgcmVmZXJlbmNlIHRvIHRoZQorICAgICAg
ICBkaXJlY3RpdmUgbGlzdCB0aGF0IGNvbnRhaW5zIHRoaXMgZGlyZWN0aXZlIGluc3RlYWQgb2Yg
cG9pbnRlciB0byBhIENvbnRlbnRTZWN1cml0eVBvbGljeSBvYmplY3QuCisgICAgICAgIChXZWJD
b3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmU6Om5hbWUpOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZTo6ZGlyZWN0aXZlTGlz
dCk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0
aXZlOjppc0RlZmF1bHRTcmMpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1
cml0eVBvbGljeURpcmVjdGl2ZTo6cG9saWN5KTogRGVsZXRlZC4KKyAgICAgICAgKiBwYWdlL2Nz
cC9Db250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0LmNwcDogUmVtb3ZlIHVudXNlZCBo
ZWFkZXIgPHd0Zi9PcHRpb25hbC5oPi4gQWxzbyByZW1vdmUgaGVhZGVyIHd0Zi90ZXh0L1N0cmlu
Z0J1aWxkZXIuaAorICAgICAgICBhcyB0aGUgZnVuY3Rpb24gdGhhdCBtYWRlIHVzZSBvZiBpdCwg
Y29uc29sZU1lc3NhZ2VGb3JWaW9sYXRpb24sIHdhcyBtb3ZlZCB0byBmaWxlIENvbnRlbnRTZWN1
cml0eVBvbGljeS5jcHAuCisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lE
aXJlY3RpdmVMaXN0Ojp2aW9sYXRlZERpcmVjdGl2ZUZvclVuc2FmZUV2YWwpOiBGb3JtZXJseSBu
YW1lZCBhbGxvd0V2YWwuCisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lE
aXJlY3RpdmVMaXN0Ojp2aW9sYXRlZERpcmVjdGl2ZUZvclVuc2FmZUlubGluZVNjcmlwdCk6IEZv
cm1lcmx5IG5hbWVkIGFsbG93SW5saW5lU2NyaXB0LgorICAgICAgICAoV2ViQ29yZTo6Q29udGVu
dFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6dmlvbGF0ZWREaXJlY3RpdmVGb3JVbnNhZmVJ
bmxpbmVTdHlsZSk6IEZvcm1lcmx5IG5hbWVkIGFsbG93SW5saW5lU3R5bGUuCisgICAgICAgIChX
ZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0Ojp2aW9sYXRlZERpcmVj
dGl2ZUZvclNjcmlwdEhhc2gpOiBGb3JtZXJseSBuYW1lZCBhbGxvd0lubGluZVNjcmlwdFdpdGhI
YXNoLgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlz
dDo6dmlvbGF0ZWREaXJlY3RpdmVGb3JTdHlsZUhhc2gpOiBGb3JtZXJseSBuYW1lZCBhbGxvd0lu
bGluZVN0eWxlV2l0aEhhc2guCisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xp
Y3lEaXJlY3RpdmVMaXN0Ojp2aW9sYXRlZERpcmVjdGl2ZUZvclNjcmlwdE5vbmNlKTogRm9ybWVy
bHkgbmFtZWQgYWxsb3dTY3JpcHRXaXRoTm9uY2UuCisgICAgICAgIChXZWJDb3JlOjpDb250ZW50
U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0Ojp2aW9sYXRlZERpcmVjdGl2ZUZvclN0eWxlTm9u
Y2UpOiBGb3JtZXJseSBuYW1lZCBhbGxvd1N0eWxlV2l0aE5vbmNlLgorICAgICAgICAoV2ViQ29y
ZTo6Q29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6dmlvbGF0ZWREaXJlY3RpdmVG
b3JCYXNlVVJJKTogRm9ybWVybHkgbmFtZWQgYWxsb3dCYXNlVVJJLgorICAgICAgICAoV2ViQ29y
ZTo6Q29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6dmlvbGF0ZWREaXJlY3RpdmVG
b3JDaGlsZENvbnRleHQpOiBGb3JtZXJseSBuYW1lZCBhbGxvd0NoaWxkQ29udGV4dEZyb21Tb3Vy
Y2UuCisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0
Ojp2aW9sYXRlZERpcmVjdGl2ZUZvckNvbm5lY3RTb3VyY2UpOiBGb3JtZXJseSBuYW1lZCBhbGxv
d0Nvbm5lY3RUb1NvdXJjZS4KKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGlj
eURpcmVjdGl2ZUxpc3Q6OnZpb2xhdGVkRGlyZWN0aXZlRm9yRm9udCk6IEZvcm1lcmx5IG5hbWVk
IGFsbG93Rm9udEZyb21Tb3VyY2UuCisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQ
b2xpY3lEaXJlY3RpdmVMaXN0Ojp2aW9sYXRlZERpcmVjdGl2ZUZvckZvcm1BY3Rpb24pOiBGb3Jt
ZXJseSBuYW1lZCBhbGxvd0Zvcm1BY3Rpb24uCisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2Vj
dXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0Ojp2aW9sYXRlZERpcmVjdGl2ZUZvckZyYW1lKTogRm9y
bWVybHkgbmFtZWQgYWxsb3dDaGlsZEZyYW1lRnJvbVNvdXJjZS4KKyAgICAgICAgKFdlYkNvcmU6
OkNvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OnZpb2xhdGVkRGlyZWN0aXZlRm9y
RnJhbWVBbmNlc3Rvcik6IEZvcm1lcmx5IG5hbWVkIGFsbG93RnJhbWVBbmNlc3RvcnMuCisgICAg
ICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0Ojp2aW9sYXRl
ZERpcmVjdGl2ZUZvckltYWdlKTogRm9ybWVybHkgbmFtZWQgYWxsb3dJbWFnZUZyb21Tb3VyY2Uu
CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0Ojp2
aW9sYXRlZERpcmVjdGl2ZUZvck1lZGlhKTogRm9ybWVybHkgbmFtZWQgYWxsb3dNZWRpYUZyb21T
b3VyY2UuCisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVM
aXN0Ojp2aW9sYXRlZERpcmVjdGl2ZUZvck9iamVjdFNvdXJjZSk6IEZvcm1lcmx5IG5hbWVkIGFs
bG93T2JqZWN0RnJvbVNvdXJjZS4KKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBv
bGljeURpcmVjdGl2ZUxpc3Q6OnZpb2xhdGVkRGlyZWN0aXZlRm9yUGx1Z2luVHlwZSk6IEZvcm1l
cmx5IG5hbWVkIGFsbG93UGx1Z2luVHlwZS4KKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1
cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OnZpb2xhdGVkRGlyZWN0aXZlRm9yU2NyaXB0KTogRm9y
bWVybHkgbmFtZWQgYWxsb3dTY3JpcHRGcm9tU291cmNlLgorICAgICAgICAoV2ViQ29yZTo6Q29u
dGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6dmlvbGF0ZWREaXJlY3RpdmVGb3JTdHls
ZSk6IEZvcm1lcmx5IG5hbWVkIGFsbG93U3R5bGVGcm9tU291cmNlLgorICAgICAgICAoV2ViQ29y
ZTo6Q29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6cGFyc2UpOiBVcGRhdGUgY29k
ZSB0byBtYWtlIHVzZSBvZiBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lcyBjb25z
dGFudHMuCisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVM
aXN0OjpzZXRDU1BEaXJlY3RpdmUpOiBQYXNzIHx0aGlzfCBpbnN0ZWFkIG9mIHRoZSBDb250ZW50
U2VjdXJpdHlQb2xpY3kgb2JqZWN0LgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5
UG9saWN5RGlyZWN0aXZlTGlzdDo6YWRkRGlyZWN0aXZlKTogVXBkYXRlIGNvZGUgdG8gbWFrZSB1
c2Ugb2YgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXMgY29uc3RhbnRzLgorICAg
ICAgICAoV2ViQ29yZTo6aXNFeHBlcmltZW50YWxEaXJlY3RpdmVOYW1lKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OmlzQ1NQRGlyZWN0aXZlTmFtZSk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0OjpyZXBvcnRWaW9sYXRp
b24pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Y29uc29sZU1lc3NhZ2VGb3JWaW9sYXRp
b24pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5RGly
ZWN0aXZlTGlzdDo6YWxsb3dKYXZhU2NyaXB0VVJMcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0OjphbGxvd0lubGluZUV2ZW50
SGFuZGxlcnMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9s
aWN5RGlyZWN0aXZlTGlzdDo6YWxsb3dJbmxpbmVTY3JpcHQpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6YWxsb3dJbmxpbmVT
Y3JpcHRXaXRoSGFzaCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJp
dHlQb2xpY3lEaXJlY3RpdmVMaXN0OjphbGxvd1NjcmlwdFdpdGhOb25jZSk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0OjphbGxv
d0lubGluZVN0eWxlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0
eVBvbGljeURpcmVjdGl2ZUxpc3Q6OmFsbG93SW5saW5lU3R5bGVXaXRoSGFzaCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0Ojph
bGxvd1N0eWxlV2l0aE5vbmNlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRT
ZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OmFsbG93RXZhbCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0OjphbGxvd1BsdWdp
blR5cGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5
RGlyZWN0aXZlTGlzdDo6YWxsb3dTY3JpcHRGcm9tU291cmNlKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OmFsbG93T2JqZWN0
RnJvbVNvdXJjZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQ
b2xpY3lEaXJlY3RpdmVMaXN0OjphbGxvd0NoaWxkQ29udGV4dEZyb21Tb3VyY2UpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6
YWxsb3dDaGlsZEZyYW1lRnJvbVNvdXJjZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpD
b250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0OjphbGxvd0ltYWdlRnJvbVNvdXJjZSk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3Rp
dmVMaXN0OjphbGxvd1N0eWxlRnJvbVNvdXJjZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0OjphbGxvd0ZvbnRGcm9tU291cmNl
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeURpcmVj
dGl2ZUxpc3Q6OmFsbG93TWVkaWFGcm9tU291cmNlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OmFsbG93Q29ubmVjdFRvU291
cmNlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeURp
cmVjdGl2ZUxpc3Q6OmFsbG93Rm9ybUFjdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0OjphbGxvd0Jhc2VVUkkpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlz
dDo6YWxsb3dGcmFtZUFuY2VzdG9ycyk6IERlbGV0ZWQuCisgICAgICAgICogcGFnZS9jc3AvQ29u
dGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdC5oOgorICAgICAgICAoV2ViQ29yZTo6Q29u
dGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6ZGVmYXVsdFNyYyk6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6cG9saWN5
KTogQWRkZWQuIEFsc28gYWRkZWQgRklYTUUgY29tbWVudCB0byByZW1vdmUgdGhpcyBmdW5jdGlv
bi4gVGhpcworICAgICAgICBmdW5jdGlvbiBpcyBvbmx5IHVzZWQgYnkgQ29udGVudFNlY3VyaXR5
UG9saWN5TWVkaWFMaXN0RGlyZWN0aXZlIHNvIHRoYXQgaXQgY2FuIGxvZyBhIGNvbnNvbGUgbWVz
c2FnZSBvbiBhIHBhcnNpbmcgZXJyb3IuCisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJp
dHlQb2xpY3lEaXJlY3RpdmVMaXN0OjpkZW55SWZFbmZvcmNpbmdQb2xpY3kpOiBEZWxldGVkLgor
ICAgICAgICAqIHBhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzLmNw
cDogQWRkZWQuCisgICAgICAgICogcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0
aXZlTmFtZXMuaDogQWRkZWQuCisgICAgICAgICogcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9s
aWN5TWVkaWFMaXN0RGlyZWN0aXZlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1
cml0eVBvbGljeU1lZGlhTGlzdERpcmVjdGl2ZTo6Q29udGVudFNlY3VyaXR5UG9saWN5TWVkaWFM
aXN0RGlyZWN0aXZlKTogTW9kaWZpZWQgdG8gdGFrZSBhIHJlZmVyZW5jZSB0byB0aGUKKyAgICAg
ICAgZGlyZWN0aXZlIGxpc3QgdGhhdCBjb250YWlucyB0aGlzIGRpcmVjdGl2ZSBpbnN0ZWFkIG9m
IHBvaW50ZXIgdG8gYSBDb250ZW50U2VjdXJpdHlQb2xpY3kgb2JqZWN0LgorICAgICAgICAoV2Vi
Q29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5TWVkaWFMaXN0RGlyZWN0aXZlOjpwYXJzZSk6IFVw
ZGF0ZWQgY29kZSB0byB1c2UgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6cG9s
aWN5KCkgaW5zdGVhZAorICAgICAgICBvZiBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmU6
OnBvbGljeSgpIGFzIHRoZSBsYXR0ZXIgd2FzIHJlbW92ZWQuIElkZWFsbHkgdGhpcyBjbGFzcyBz
aG91bGQgbm90IG5lZWQgdG8gdXNlIHRoZSBDb250ZW50U2VjdXJpdHlQb2xpY3kKKyAgICAgICAg
b2JqZWN0IHRvIGxvZyBhIGNvbnNvbGUgbWVzc2FnZS4KKyAgICAgICAgKiBwYWdlL2NzcC9Db250
ZW50U2VjdXJpdHlQb2xpY3lNZWRpYUxpc3REaXJlY3RpdmUuaDoKKyAgICAgICAgKiBwYWdlL2Nz
cC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmlzRXhwZXJpbWVudGFsRGlyZWN0aXZlTmFtZSk6IE1vdmVkIGZyb20gZmlsZSBDb250ZW50U2Vj
dXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0LmNwcCBiZWNhdXNlIHRoaXMgZnVuY3Rpb24gaXMgb25s
eSB1c2VkCisgICAgICAgIGluIHRoaXMgZmlsZS4KKyAgICAgICAgKFdlYkNvcmU6OmlzQ1NQRGly
ZWN0aXZlTmFtZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9s
aWN5U291cmNlTGlzdDo6aXNQcm90b2NvbEFsbG93ZWRCeVN0YXIpOiBVcGRhdGUgY29kZSB0byBt
YWtlIHVzZSBvZiBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lcyBjb25zdGFudHMu
CisgICAgICAgICogcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdERpcmVj
dGl2ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VM
aXN0RGlyZWN0aXZlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0RGlyZWN0aXZlKTog
TW9kaWZpZWQgdG8gdGFrZSBhIHJlZmVyZW5jZSB0bworICAgICAgICB0aGUgZGlyZWN0aXZlIGxp
c3QgdGhhdCBjb250YWlucyB0aGlzIGRpcmVjdGl2ZSBpbnN0ZWFkIG9mIHBvaW50ZXIgdG8gYSBD
b250ZW50U2VjdXJpdHlQb2xpY3kgb2JqZWN0LiAKKyAgICAgICAgKiBwYWdlL2NzcC9Db250ZW50
U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0RGlyZWN0aXZlLmg6CisKIDIwMTYtMDMtMjQgIFlvdWVu
biBGYWJsZXQgIDx5b3Vlbm4uZmFibGV0QGNyZi5jYW5vbi5mcj4KIAogICAgICAgICBbRmV0Y2gg
QVBJXSBBZGQgYmFzaWMgbG9hZGluZyBvZiByZXNvdXJjZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5k
ZXggYjM4MjZkMmU5ZTlkODAwY2FiODdiN2E1ZmYzMjQwZjI0ZjgyODJhZi4uMzEzNDQ4YjBhMWM1
MDBjOTE5ZmQ4OGQ4MWU4NjJlMGQzYzhkMjYwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Q01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTIw
NzEsNyArMjA3MSw5IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBwYWdlL2FuaW1hdGlvbi9L
ZXlmcmFtZUFuaW1hdGlvbi5jcHAKIAogICAgIHBhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGlj
eS5jcHAKKyAgICBwYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmUuY3BwCiAg
ICAgcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdC5jcHAKKyAgICBw
YWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lcy5jcHAKICAgICBwYWdl
L2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lNZWRpYUxpc3REaXJlY3RpdmUuY3BwCiAgICAgcGFn
ZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzLmNwcAogICAgIHBhZ2Uv
Y3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBhMTJhOTc4ZDBjN2Q3Nzk5
NDAyMWU5NDZlZTU3YjkzNmNlN2Q5NjFmLi41NjI1MzlkZjM4ZGQ2YTNkNjIzMjY1YzEyY2RkMDZk
MDJhYzU4OGUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCkBAIC02MjEzLDYgKzYyMTMsOCBAQAogCQlDRTEyNTI1MzFBMUJFQzA2MDA4
NjQ0ODAgLyogTlNTdHJpbmdTUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IENFMTI1MjUyMUExQkVDMDYwMDg2NDQ4MCAvKiBOU1N0cmluZ1NQSS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUNFMTI1MjU1
MUExQkVDMEUwMDg2NDQ4MCAvKiBOU1VSTERvd25sb2FkU1BJLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTEyNTI1NDFBMUJFQzBFMDA4NjQ0ODAgLyog
TlNVUkxEb3dubG9hZFNQSS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCUNFMTI1MjVCMUExQzAxODIwMDg2NDQ4MCAvKiBDRk5ldHdvcmtTUEkuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFMTI1MjVBMUEx
QzAxODIwMDg2NDQ4MCAvKiBDRk5ldHdvcmtTUEkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQlDRTI4NDk4NzFDQTM2MERGMDBCNEE1N0YgLyogQ29u
dGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFMjg0OTg2MUNBMzYwREYwMEI0QTU3RiAvKiBDb250
ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lcy5oICovOyB9OworCQlDRTI4NDk4OTFDQTM2
MTQ2MDBCNEE1N0YgLyogQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXMuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0UyODQ5ODgxQ0Ez
NjE0NjAwQjRBNTdGIC8qIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzLmNwcCAq
LzsgfTsKIAkJQ0U2REFERjkxQzU5MUU2QTAwM0Y2QTg4IC8qIENvbnRlbnRTZWN1cml0eVBvbGlj
eVJlc3BvbnNlSGVhZGVycy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBDRTZEQURGNzFDNTkxRTZBMDAzRjZBODggLyogQ29udGVudFNlY3VyaXR5UG9s
aWN5UmVzcG9uc2VIZWFkZXJzLmNwcCAqLzsgfTsKIAkJQ0U2REFERkExQzU5MUU2QTAwM0Y2QTg4
IC8qIENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0U2REFERjgxQzU5MUU2QTAwM0Y2QTg4
IC8qIENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycy5oICovOyB9OwogCQlDRTc5
OUY5NzFDNkE0NkJDMDA5N0I1MTggLyogQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTc5OUY5
NTFDNkE0NkJDMDA5N0I1MTggLyogQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdC5jcHAg
Ki87IH07CkBAIC02MjUwLDYgKzYyNTIsNyBAQAogCQlDRUVGQ0Q3QzE5REIzM0RDMDAzODc2RDcg
LyogUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRUVGQ0Q3QjE5REIzM0RDMDAzODc2RDcgLyogUGxhdGZv
cm1NZWRpYVJlc291cmNlTG9hZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJQ0VGNDE4Q0UxMTc5Njc4QzAwOUQxMTJDIC8qIFZpZXdwb3J0QXJn
dW1lbnRzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IENFRjQxOENDMTE3OTY3OEMwMDlEMTEyQyAvKiBWaWV3cG9ydEFyZ3VtZW50cy5jcHAgKi87IH07
CiAJCUNFRjQxOENGMTE3OTY3OEMwMDlEMTEyQyAvKiBWaWV3cG9ydEFyZ3VtZW50cy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0VGNDE4Q0QxMTc5Njc4
QzAwOUQxMTJDIC8qIFZpZXdwb3J0QXJndW1lbnRzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQ0VGNTlCMjYxQ0EwRTExRDAwNUMzRTEzIC8qIENv
bnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRUY1OUIyNTFDQTBFMTFEMDA1QzNFMTMgLyogQ29udGVu
dFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlLmNwcCAqLzsgfTsKIAkJRDAwMEVCQTIxMUJEQUZENDAw
QzQ3NzI2IC8qIEZyYW1lTG9hZGVyU3RhdGVNYWNoaW5lLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEQwMDBFQkEwMTFCREFGRDQwMEM0NzcyNiAvKiBG
cmFtZUxvYWRlclN0YXRlTWFjaGluZS5jcHAgKi87IH07CiAJCUQwMDBFQkEzMTFCREFGRDQwMEM0
NzcyNiAvKiBGcmFtZUxvYWRlclN0YXRlTWFjaGluZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRDAwMEVCQTExMUJEQUZENDAwQzQ3NzI2IC8qIEZyYW1l
TG9hZGVyU3RhdGVNYWNoaW5lLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJRDAwMEVEMjcxMUMxQjlDRDAwQzQ3NzI2IC8qIFN1YmZyYW1lTG9hZGVy
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEQwMDBF
RDI1MTFDMUI5Q0QwMEM0NzcyNiAvKiBTdWJmcmFtZUxvYWRlci5jcHAgKi87IH07CkBAIC0xNDIz
Miw2ICsxNDIzNSw4IEBACiAJCUNFMTI1MjUyMUExQkVDMDYwMDg2NDQ4MCAvKiBOU1N0cmluZ1NQ
SS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOU1N0cmluZ1NQSS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRTEyNTI1NDFBMUJFQzBFMDA4NjQ0ODAgLyogTlNV
UkxEb3dubG9hZFNQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOU1VSTERv
d25sb2FkU1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFMTI1MjVBMUExQzAx
ODIwMDg2NDQ4MCAvKiBDRk5ldHdvcmtTUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gQ0ZOZXR3b3JrU1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNFMjg0
OTg2MUNBMzYwREYwMEI0QTU3RiAvKiBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1l
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBDb250ZW50U2VjdXJpdHlQb2xp
Y3lEaXJlY3RpdmVOYW1lcy5oOyBwYXRoID0gY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeURpcmVj
dGl2ZU5hbWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNFMjg0OTg4MUNBMzYx
NDYwMEI0QTU3RiAvKiBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lcy5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBDb250ZW50U2VjdXJpdHlQb2xpY3lE
aXJlY3RpdmVOYW1lcy5jcHA7IHBhdGggPSBjc3AvQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0
aXZlTmFtZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRTVDQjFCMzE0RURB
QjZGMDBCQjI3OTUgLyogRXZlbnRTZW5kZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gRXZlbnRTZW5kZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0U2RDg5
Mjk0QzdBQUNFMEFEODlCM0REIC8qIE1hdGhNTE1lbmNsb3NlRWxlbWVudC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBNYXRoTUxNZW5jbG9zZUVsZW1lbnQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0U2REFERjcxQzU5MUU2QTAwM0Y2QTg4IC8qIENvbnRlbnRT
ZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IG5hbWUgPSBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMuY3BwOyBw
YXRoID0gY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycy5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNDI3MSw2ICsxNDI3Niw3IEBACiAJCUNFRUZDRDdC
MTlEQjMzREMwMDM4NzZENyAvKiBQbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFRjQxOENDMTE3OTY3OEMwMDlEMTEyQyAv
KiBWaWV3cG9ydEFyZ3VtZW50cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBWaWV3cG9ydEFyZ3VtZW50cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUNFRjQxOENEMTE3OTY3OEMwMDlEMTEyQyAvKiBWaWV3cG9ydEFyZ3VtZW50cy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWaWV3cG9ydEFyZ3VtZW50cy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlDRUY1OUIyNTFDQTBFMTFEMDA1QzNFMTMgLyogQ29udGVudFNl
Y3VyaXR5UG9saWN5RGlyZWN0aXZlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
bmFtZSA9IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZS5jcHA7IHBhdGggPSBjc3AvQ29u
dGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRDAwMEVCQTAxMUJEQUZENDAwQzQ3NzI2IC8qIEZyYW1lTG9hZGVyU3RhdGVNYWNoaW5l
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZyYW1lTG9hZGVyU3Rh
dGVNYWNoaW5lLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDAwMEVCQTExMUJE
QUZENDAwQzQ3NzI2IC8qIEZyYW1lTG9hZGVyU3RhdGVNYWNoaW5lLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEZyYW1lTG9hZGVyU3RhdGVNYWNoaW5lLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUQwMDBFRDI1MTFDMUI5Q0QwMEM0NzcyNiAvKiBTdWJmcmFtZUxv
YWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdWJmcmFtZUxv
YWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMzE5NSw5ICsyMzIwMSwx
MiBAQAogCQkJY2hpbGRyZW4gPSAoCiAJCQkJOTdDNDcxRDkxMkY5MjVCQzAwODYzNTRCIC8qIENv
bnRlbnRTZWN1cml0eVBvbGljeS5jcHAgKi8sCiAJCQkJOTdDNDcxREExMkY5MjVCRDAwODYzNTRC
IC8qIENvbnRlbnRTZWN1cml0eVBvbGljeS5oICovLAorCQkJCUNFRjU5QjI1MUNBMEUxMUQwMDVD
M0UxMyAvKiBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmUuY3BwICovLAogCQkJCUNFNzk5
RkEyMUM2QTUwM0EwMDk3QjUxOCAvKiBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmUuaCAq
LywKIAkJCQlDRTc5OUY5OTFDNkE0QkNEMDA5N0I1MTggLyogQ29udGVudFNlY3VyaXR5UG9saWN5
RGlyZWN0aXZlTGlzdC5jcHAgKi8sCiAJCQkJQ0U3OTlGOUExQzZBNEJDRDAwOTdCNTE4IC8qIENv
bnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3QuaCAqLywKKwkJCQlDRTI4NDk4ODFDQTM2
MTQ2MDBCNEE1N0YgLyogQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXMuY3BwICov
LAorCQkJCUNFMjg0OTg2MUNBMzYwREYwMEI0QTU3RiAvKiBDb250ZW50U2VjdXJpdHlQb2xpY3lE
aXJlY3RpdmVOYW1lcy5oICovLAogCQkJCUNFN0UxNzgyMUM4M0E0OTEwMEFEMDZBRiAvKiBDb250
ZW50U2VjdXJpdHlQb2xpY3lIYXNoLmggKi8sCiAJCQkJQ0U3OTlGQTUxQzZBNTA1NzAwOTdCNTE4
IC8qIENvbnRlbnRTZWN1cml0eVBvbGljeU1lZGlhTGlzdERpcmVjdGl2ZS5jcHAgKi8sCiAJCQkJ
Q0U3OTlGQTYxQzZBNTA1NzAwOTdCNTE4IC8qIENvbnRlbnRTZWN1cml0eVBvbGljeU1lZGlhTGlz
dERpcmVjdGl2ZS5oICovLApAQCAtMjUyOTksNiArMjUzMDgsNyBAQAogCQkJCTk3QzQ3MURDMTJG
OTI1QkQwMDg2MzU0QiAvKiBDb250ZW50U2VjdXJpdHlQb2xpY3kuaCBpbiBIZWFkZXJzICovLAog
CQkJCUNFNzk5RkE0MUM2QTUwM0EwMDk3QjUxOCAvKiBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJl
Y3RpdmUuaCBpbiBIZWFkZXJzICovLAogCQkJCUNFNzk5RjlDMUM2QTRCQ0QwMDk3QjUxOCAvKiBD
b250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0LmggaW4gSGVhZGVycyAqLywKKwkJCQlD
RTI4NDk4NzFDQTM2MERGMDBCNEE1N0YgLyogQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZl
TmFtZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUNFN0UxNzgzMUM4M0E0OTEwMEFEMDZBRiAvKiBD
b250ZW50U2VjdXJpdHlQb2xpY3lIYXNoLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRTc5OUZBODFD
NkE1MDU3MDA5N0I1MTggLyogQ29udGVudFNlY3VyaXR5UG9saWN5TWVkaWFMaXN0RGlyZWN0aXZl
LmggaW4gSGVhZGVycyAqLywKIAkJCQlDRTZEQURGQTFDNTkxRTZBMDAzRjZBODggLyogQ29udGVu
dFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzLmggaW4gSGVhZGVycyAqLywKQEAgLTI5MjI2
LDcgKzI5MjM2LDkgQEAKIAkJCQlBMTQ5Nzg2RTFBQkFGMzM4MDBDRUY3RTQgLyogQ29udGVudEZp
bHRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBMTQwOTBGQjFBQTUxRTFEMDA5MTE5MUEgLyog
Q29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyQ29jb2EubW0gaW4gU291cmNlcyAqLywKIAkJCQk5
N0M0NzFEQjEyRjkyNUJEMDA4NjM1NEIgLyogQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCUNFRjU5QjI2MUNBMEUxMUQwMDVDM0UxMyAvKiBDb250ZW50U2VjdXJp
dHlQb2xpY3lEaXJlY3RpdmUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0U3OTlGOUIxQzZBNEJD
RDAwOTdCNTE4IC8qIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3QuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJQ0UyODQ5ODkxQ0EzNjE0NjAwQjRBNTdGIC8qIENvbnRlbnRTZWN1cml0
eVBvbGljeURpcmVjdGl2ZU5hbWVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNFNzk5RkE3MUM2
QTUwNTcwMDk3QjUxOCAvKiBDb250ZW50U2VjdXJpdHlQb2xpY3lNZWRpYUxpc3REaXJlY3RpdmUu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0U2REFERjkxQzU5MUU2QTAwM0Y2QTg4IC8qIENvbnRl
bnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlD
RTc5OUY5RjFDNkE0QzE2MDA5N0I1MTggLyogQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlLmNw
cCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29u
dGVudFNlY3VyaXR5UG9saWN5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRT
ZWN1cml0eVBvbGljeS5jcHAKaW5kZXggMzVhYjI4MDMxYWEyNGE3Zjk1NjVlYjE5NmM0MDA0Njky
NTBmYzA5MC4uM2JmMWZhZmMxZTQyMzI2NzhmOWM5NmJlN2VlZTlhODk4M2E1NDFjMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3BwCkBA
IC0yOSw2ICsyOSw3IEBACiAKICNpbmNsdWRlICJDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3Rp
dmUuaCIKICNpbmNsdWRlICJDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0LmgiCisj
aW5jbHVkZSAiQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXMuaCIKICNpbmNsdWRl
ICJDb250ZW50U2VjdXJpdHlQb2xpY3lIYXNoLmgiCiAjaW5jbHVkZSAiQ29udGVudFNlY3VyaXR5
UG9saWN5U291cmNlLmgiCiAjaW5jbHVkZSAiQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlz
dC5oIgpAQCAtNTQsMTIgKzU1LDM3IEBACiAjaW5jbHVkZSA8aW5zcGVjdG9yL1NjcmlwdENhbGxT
dGFjay5oPgogI2luY2x1ZGUgPGluc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2tGYWN0b3J5Lmg+CiAj
aW5jbHVkZSA8d3RmL1RlbXBvcmFyeUNoYW5nZS5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmlu
Z0J1aWxkZXIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0UG9zaXRpb24uaD4KIAogdXNpbmcg
bmFtZXNwYWNlIEluc3BlY3RvcjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitzdGF0aWMgU3Ry
aW5nIGNvbnNvbGVNZXNzYWdlRm9yVmlvbGF0aW9uKGNvbnN0IGNoYXIqIGVmZmVjdGl2ZVZpb2xh
dGVkRGlyZWN0aXZlLCBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmUmIHZpb2xh
dGVkRGlyZWN0aXZlLCBjb25zdCBVUkwmIGJsb2NrZWRVUkwsIGNvbnN0IGNoYXIqIHByZWZpeCwg
Y29uc3QgY2hhciogc3ViamVjdCA9ICJpdCIpCit7CisgICAgU3RyaW5nQnVpbGRlciByZXN1bHQ7
CisgICAgaWYgKHZpb2xhdGVkRGlyZWN0aXZlLmRpcmVjdGl2ZUxpc3QoKS5pc1JlcG9ydE9ubHko
KSkKKyAgICAgICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoIltSZXBvcnQgT25seV0gIik7CisgICAg
cmVzdWx0LmFwcGVuZChwcmVmaXgpOworICAgIGlmICghYmxvY2tlZFVSTC5pc0VtcHR5KCkpIHsK
KyAgICAgICAgcmVzdWx0LmFwcGVuZCgnICcpOworICAgICAgICByZXN1bHQuYXBwZW5kKGJsb2Nr
ZWRVUkwuc3RyaW5nQ2VudGVyRWxsaXBzaXplZFRvTGVuZ3RoKCkpOworICAgIH0KKyAgICByZXN1
bHQuYXBwZW5kTGl0ZXJhbCgiIGJlY2F1c2UgIik7CisgICAgcmVzdWx0LmFwcGVuZChzdWJqZWN0
KTsKKyAgICBpZiAodmlvbGF0ZWREaXJlY3RpdmUuaXNEZWZhdWx0U3JjKCkpIHsKKyAgICAgICAg
cmVzdWx0LmFwcGVuZExpdGVyYWwoIiBhcHBlYXJzIGluIG5laXRoZXIgdGhlICIpOworICAgICAg
ICByZXN1bHQuYXBwZW5kKGVmZmVjdGl2ZVZpb2xhdGVkRGlyZWN0aXZlKTsKKyAgICAgICAgcmVz
dWx0LmFwcGVuZExpdGVyYWwoIiBkaXJlY3RpdmUgbm9yIHRoZSBkZWZhdWx0LXNyYyBkaXJlY3Rp
dmUgb2YgdGhlIENvbnRlbnQgU2VjdXJpdHkgUG9saWN5LiIpOworICAgIH0gZWxzZSB7CisgICAg
ICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFsKCIgZG9lcyBub3QgYXBwZWFyIGluIHRoZSAiKTsKKyAg
ICAgICAgcmVzdWx0LmFwcGVuZChlZmZlY3RpdmVWaW9sYXRlZERpcmVjdGl2ZSk7CisgICAgICAg
IHJlc3VsdC5hcHBlbmRMaXRlcmFsKCIgZGlyZWN0aXZlIG9mIHRoZSBDb250ZW50IFNlY3VyaXR5
IFBvbGljeS4iKTsKKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdC50b1N0cmluZygpOworfQorCiBD
b250ZW50U2VjdXJpdHlQb2xpY3k6OkNvbnRlbnRTZWN1cml0eVBvbGljeShTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KQogICAgIDogbV9zY3JpcHRFeGVjdXRp
b25Db250ZXh0KCZzY3JpcHRFeGVjdXRpb25Db250ZXh0KQogICAgICwgbV9zYW5kYm94RmxhZ3Mo
U2FuZGJveE5vbmUpCkBAIC0xMzMsNyArMTU5LDggQEAgdm9pZCBDb250ZW50U2VjdXJpdHlQb2xp
Y3k6OmRpZFJlY2VpdmVIZWFkZXIoY29uc3QgU3RyaW5nJiBoZWFkZXIsIENvbnRlbnRTZWN1cmkK
ICAgICAgICAgLy8gaGVhZGVyMSxoZWFkZXIyIE9SIGhlYWRlcjEKICAgICAgICAgLy8gICAgICAg
IF4gICAgICAgICAgICAgICAgICBeCiAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxDb250ZW50U2Vj
dXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0PiBwb2xpY3kgPSBDb250ZW50U2VjdXJpdHlQb2xpY3lE
aXJlY3RpdmVMaXN0OjpjcmVhdGUoKnRoaXMsIFN0cmluZyhiZWdpbiwgcG9zaXRpb24gLSBiZWdp
biksIHR5cGUsIHBvbGljeUZyb20pOwotICAgICAgICBpZiAoIXBvbGljeS0+YWxsb3dFdmFsKG51
bGxwdHIsIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OlJlcG9ydGluZ1N0YXR1
czo6U3VwcHJlc3NSZXBvcnQpKQorICAgICAgICBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lE
aXJlY3RpdmUqIHZpb2xhdGVkRGlyZWN0aXZlID0gcG9saWN5LT52aW9sYXRlZERpcmVjdGl2ZUZv
clVuc2FmZUV2YWwoKTsKKyAgICAgICAgaWYgKHZpb2xhdGVkRGlyZWN0aXZlICYmICF2aW9sYXRl
ZERpcmVjdGl2ZS0+ZGlyZWN0aXZlTGlzdCgpLmlzUmVwb3J0T25seSgpKQogICAgICAgICAgICAg
bV9sYXN0UG9saWN5RXZhbERpc2FibGVkRXJyb3JNZXNzYWdlID0gcG9saWN5LT5ldmFsRGlzYWJs
ZWRFcnJvck1lc3NhZ2UoKTsKIAogICAgICAgICBtX3BvbGljaWVzLmFwcGVuZChwb2xpY3kucmVs
ZWFzZSgpKTsKQEAgLTE4OSw4ICsyMTYsMTEgQEAgc3RhdGljIENyeXB0b0RpZ2VzdDo6QWxnb3Jp
dGhtIHRvQ3J5cHRvRGlnZXN0QWxnb3JpdGhtKENvbnRlbnRTZWN1cml0eVBvbGljeUhhc2gKIH0K
IAogdGVtcGxhdGU8dHlwZW5hbWUgUHJlZGljYXRlPgotYm9vbCBDb250ZW50U2VjdXJpdHlQb2xp
Y3k6OmFsbFBvbGljaWVzQWxsb3dIYXNoRnJvbUNvbnRlbnQoUHJlZGljYXRlJiYgcHJlZGljYXRl
LCBjb25zdCBTdHJpbmcmIGNvbnRlbnQsIE9wdGlvblNldDxDb250ZW50U2VjdXJpdHlQb2xpY3lI
YXNoQWxnb3JpdGhtPiBhbGdvcml0aG1zKSBjb25zdAorYm9vbCBDb250ZW50U2VjdXJpdHlQb2xp
Y3k6OmZvdW5kSGFzaE9mQ29udGVudEluQWxsUG9saWNpZXMoUHJlZGljYXRlJiYgcHJlZGljYXRl
LCBjb25zdCBTdHJpbmcmIGNvbnRlbnQsIE9wdGlvblNldDxDb250ZW50U2VjdXJpdHlQb2xpY3lI
YXNoQWxnb3JpdGhtPiBhbGdvcml0aG1zKSBjb25zdAogeworICAgIGlmIChhbGdvcml0aG1zLmlz
RW1wdHkoKSB8fCBjb250ZW50LmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAg
ICAgLy8gRklYTUU6IFdlIHNob3VsZCBjb21wdXRlIHRoZSBkb2N1bWVudCBlbmNvZGluZyBvbmNl
IGFuZCBjYWNoZSBpdCBpbnN0ZWFkIG9mIGNvbXB1dGluZyBpdCBvbiBlYWNoIGludm9jYXRpb24u
CiAgICAgVGV4dEVuY29kaW5nIGRvY3VtZW50RW5jb2Rpbmc7CiAgICAgaWYgKGlzPERvY3VtZW50
PihtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpKQpAQCAtMjA0LDcgKzIzNCw3IEBAIGJvb2wgQ29u
dGVudFNlY3VyaXR5UG9saWN5OjphbGxQb2xpY2llc0FsbG93SGFzaEZyb21Db250ZW50KFByZWRp
Y2F0ZSYmIHByZWRpY2F0CiAgICAgICAgIGF1dG8gY3J5cHRvRGlnZXN0ID0gQ3J5cHRvRGlnZXN0
OjpjcmVhdGUodG9DcnlwdG9EaWdlc3RBbGdvcml0aG0oYWxnb3JpdGhtKSk7CiAgICAgICAgIGNy
eXB0b0RpZ2VzdC0+YWRkQnl0ZXMoY29udGVudENTdHJpbmcuZGF0YSgpLCBjb250ZW50Q1N0cmlu
Zy5sZW5ndGgoKSk7CiAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBkaWdlc3QgPSBjcnlwdG9EaWdl
c3QtPmNvbXB1dGVIYXNoKCk7Ci0gICAgICAgIGlmIChhbGxQb2xpY2llc0FsbG93KHN0ZDo6Zm9y
d2FyZDxQcmVkaWNhdGU+KHByZWRpY2F0ZSksIHN0ZDo6bWFrZV9wYWlyKGFsZ29yaXRobSwgZGln
ZXN0KSkpCisgICAgICAgIGlmICghdmlvbGF0ZWREaXJlY3RpdmVJbkFueVBvbGljeShzdGQ6OmZv
cndhcmQ8UHJlZGljYXRlPihwcmVkaWNhdGUpLCBzdGQ6Om1ha2VfcGFpcihhbGdvcml0aG0sIGRp
Z2VzdCkpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIHJldHVybiBmYWxz
ZTsKQEAgLTIxNCwxNCArMjQ0LDMwIEBAIGJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5OjphbGxv
d0phdmFTY3JpcHRVUkxzKGNvbnN0IFN0cmluZyYgY29udGV4dFVSTCwgY29uc3QKIHsKICAgICBp
ZiAob3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3kpCiAgICAgICAgIHJldHVybiB0cnVlOwot
ICAgIHJldHVybiBhbGxQb2xpY2llc0FsbG93KCZDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3Rp
dmVMaXN0OjphbGxvd0phdmFTY3JpcHRVUkxzLCBjb250ZXh0VVJMLCBjb250ZXh0TGluZSwgQ29u
dGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6UmVwb3J0aW5nU3RhdHVzOjpTZW5kUmVw
b3J0KTsKKyAgICBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmUqIHZpb2xhdGVk
RGlyZWN0aXZlID0gdmlvbGF0ZWREaXJlY3RpdmVJbkFueVBvbGljeSgmQ29udGVudFNlY3VyaXR5
UG9saWN5RGlyZWN0aXZlTGlzdDo6dmlvbGF0ZWREaXJlY3RpdmVGb3JVbnNhZmVJbmxpbmVTY3Jp
cHQpOworICAgIGlmICghdmlvbGF0ZWREaXJlY3RpdmUpCisgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIFN0cmluZyBjb25zb2xlTWVzc2FnZSA9IGNvbnNvbGVNZXNzYWdlRm9yVmlvbGF0aW9uKENv
bnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzOjpzY3JpcHRTcmMsICp2aW9sYXRlZERp
cmVjdGl2ZSwgVVJMKCksICJSZWZ1c2VkIHRvIGV4ZWN1dGUgYSBzY3JpcHQiLCAiaXRzIGhhc2gs
IGl0cyBub25jZSwgb3IgJ3Vuc2FmZS1pbmxpbmUnIik7CisgICAgcmVwb3J0VmlvbGF0aW9uKENv
bnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzOjpzY3JpcHRTcmMsICp2aW9sYXRlZERp
cmVjdGl2ZSwgVVJMKCksIGNvbnNvbGVNZXNzYWdlLCBjb250ZXh0VVJMLCBUZXh0UG9zaXRpb24o
Y29udGV4dExpbmUsIFdURjo6T3JkaW5hbE51bWJlcigpKSk7CisgICAgYm9vbCBpc1JlcG9ydE9u
bHkgPSB2aW9sYXRlZERpcmVjdGl2ZS0+ZGlyZWN0aXZlTGlzdCgpLmlzUmVwb3J0T25seSgpOwor
ICAgIGlmICghaXNSZXBvcnRPbmx5KQorICAgICAgICByZXBvcnRCbG9ja2VkU2NyaXB0RXhlY3V0
aW9uVG9JbnNwZWN0b3IodmlvbGF0ZWREaXJlY3RpdmUtPnRleHQoKSk7CisgICAgcmV0dXJuIGlz
UmVwb3J0T25seTsKIH0KIAogYm9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93SW5saW5l
RXZlbnRIYW5kbGVycyhjb25zdCBTdHJpbmcmIGNvbnRleHRVUkwsIGNvbnN0IFdURjo6T3JkaW5h
bE51bWJlciYgY29udGV4dExpbmUsIGJvb2wgb3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3kp
IGNvbnN0CiB7CiAgICAgaWYgKG92ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9saWN5KQogICAgICAg
ICByZXR1cm4gdHJ1ZTsKLSAgICByZXR1cm4gYWxsUG9saWNpZXNBbGxvdygmQ29udGVudFNlY3Vy
aXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6YWxsb3dJbmxpbmVFdmVudEhhbmRsZXJzLCBjb250ZXh0
VVJMLCBjb250ZXh0TGluZSwgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6UmVw
b3J0aW5nU3RhdHVzOjpTZW5kUmVwb3J0KTsKKyAgICBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xp
Y3lEaXJlY3RpdmUqIHZpb2xhdGVkRGlyZWN0aXZlID0gdmlvbGF0ZWREaXJlY3RpdmVJbkFueVBv
bGljeSgmQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6dmlvbGF0ZWREaXJlY3Rp
dmVGb3JVbnNhZmVJbmxpbmVTY3JpcHQpOworICAgIGlmICghdmlvbGF0ZWREaXJlY3RpdmUpCisg
ICAgICAgIHJldHVybiB0cnVlOworICAgIFN0cmluZyBjb25zb2xlTWVzc2FnZSA9IGNvbnNvbGVN
ZXNzYWdlRm9yVmlvbGF0aW9uKENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzOjpz
Y3JpcHRTcmMsICp2aW9sYXRlZERpcmVjdGl2ZSwgVVJMKCksICJSZWZ1c2VkIHRvIGV4ZWN1dGUg
YSBzY3JpcHQiLCAiaXRzIGhhc2gsIGl0cyBub25jZSwgb3IgJ3Vuc2FmZS1pbmxpbmUnIik7Cisg
ICAgcmVwb3J0VmlvbGF0aW9uKENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzOjpz
Y3JpcHRTcmMsICp2aW9sYXRlZERpcmVjdGl2ZSwgVVJMKCksIGNvbnNvbGVNZXNzYWdlLCBjb250
ZXh0VVJMLCBUZXh0UG9zaXRpb24oY29udGV4dExpbmUsIFdURjo6T3JkaW5hbE51bWJlcigpKSk7
CisgICAgYm9vbCBpc1JlcG9ydE9ubHkgPSB2aW9sYXRlZERpcmVjdGl2ZS0+ZGlyZWN0aXZlTGlz
dCgpLmlzUmVwb3J0T25seSgpOworICAgIGlmICghaXNSZXBvcnRPbmx5KQorICAgICAgICByZXBv
cnRCbG9ja2VkU2NyaXB0RXhlY3V0aW9uVG9JbnNwZWN0b3IodmlvbGF0ZWREaXJlY3RpdmUtPnRl
eHQoKSk7CisgICAgcmV0dXJuIGlzUmVwb3J0T25seTsKIH0KIAogYm9vbCBDb250ZW50U2VjdXJp
dHlQb2xpY3k6OmFsbG93U2NyaXB0V2l0aE5vbmNlKGNvbnN0IFN0cmluZyYgbm9uY2UsIGJvb2wg
b3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3kpIGNvbnN0CkBAIC0yMzEsOSArMjc3LDcgQEAg
Ym9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93U2NyaXB0V2l0aE5vbmNlKGNvbnN0IFN0
cmluZyYgbm9uY2UsIGJvb2wgb3ZlcnIKICAgICBTdHJpbmcgc3RyaXBwZWROb25jZSA9IHN0cmlw
TGVhZGluZ0FuZFRyYWlsaW5nSFRNTFNwYWNlcyhub25jZSk7CiAgICAgaWYgKHN0cmlwcGVkTm9u
Y2UuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKGFsbFBvbGljaWVz
QWxsb3coJkNvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OmFsbG93U2NyaXB0V2l0
aE5vbmNlLCBzdHJpcHBlZE5vbmNlKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgcmV0dXJu
IGZhbHNlOworICAgIHJldHVybiAhdmlvbGF0ZWREaXJlY3RpdmVJbkFueVBvbGljeSgmQ29udGVu
dFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6dmlvbGF0ZWREaXJlY3RpdmVGb3JTY3JpcHRO
b25jZSwgc3RyaXBwZWROb25jZSk7CiB9CiAKIGJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5Ojph
bGxvd1N0eWxlV2l0aE5vbmNlKGNvbnN0IFN0cmluZyYgbm9uY2UsIGJvb2wgb3ZlcnJpZGVDb250
ZW50U2VjdXJpdHlQb2xpY3kpIGNvbnN0CkBAIC0yNDMsMTkgKzI4NywyNCBAQCBib29sIENvbnRl
bnRTZWN1cml0eVBvbGljeTo6YWxsb3dTdHlsZVdpdGhOb25jZShjb25zdCBTdHJpbmcmIG5vbmNl
LCBib29sIG92ZXJyaQogICAgIFN0cmluZyBzdHJpcHBlZE5vbmNlID0gc3RyaXBMZWFkaW5nQW5k
VHJhaWxpbmdIVE1MU3BhY2VzKG5vbmNlKTsKICAgICBpZiAoc3RyaXBwZWROb25jZS5pc0VtcHR5
KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoYWxsUG9saWNpZXNBbGxvdygmQ29u
dGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6YWxsb3dTdHlsZVdpdGhOb25jZSwgc3Ry
aXBwZWROb25jZSkpCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIHJldHVybiBmYWxzZTsKKyAg
ICByZXR1cm4gIXZpb2xhdGVkRGlyZWN0aXZlSW5BbnlQb2xpY3koJkNvbnRlbnRTZWN1cml0eVBv
bGljeURpcmVjdGl2ZUxpc3Q6OnZpb2xhdGVkRGlyZWN0aXZlRm9yU3R5bGVOb25jZSwgc3RyaXBw
ZWROb25jZSk7CiB9CiAKIGJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5OjphbGxvd0lubGluZVNj
cmlwdChjb25zdCBTdHJpbmcmIGNvbnRleHRVUkwsIGNvbnN0IFdURjo6T3JkaW5hbE51bWJlciYg
Y29udGV4dExpbmUsIGNvbnN0IFN0cmluZyYgc2NyaXB0Q29udGVudCwgYm9vbCBvdmVycmlkZUNv
bnRlbnRTZWN1cml0eVBvbGljeSkgY29uc3QKIHsKICAgICBpZiAob3ZlcnJpZGVDb250ZW50U2Vj
dXJpdHlQb2xpY3kpCiAgICAgICAgIHJldHVybiB0cnVlOwotICAgIGlmICghbV9oYXNoQWxnb3Jp
dGhtc0ZvcklubGluZVNjcmlwdHMuaXNFbXB0eSgpICYmICFzY3JpcHRDb250ZW50LmlzRW1wdHko
KQotICAgICAgICAmJiBhbGxQb2xpY2llc0FsbG93SGFzaEZyb21Db250ZW50KCZDb250ZW50U2Vj
dXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0OjphbGxvd0lubGluZVNjcmlwdFdpdGhIYXNoLCBzY3Jp
cHRDb250ZW50LCBtX2hhc2hBbGdvcml0aG1zRm9ySW5saW5lU2NyaXB0cykpCisgICAgaWYgKGZv
dW5kSGFzaE9mQ29udGVudEluQWxsUG9saWNpZXMoJkNvbnRlbnRTZWN1cml0eVBvbGljeURpcmVj
dGl2ZUxpc3Q6OnZpb2xhdGVkRGlyZWN0aXZlRm9yU2NyaXB0SGFzaCwgc2NyaXB0Q29udGVudCwg
bV9oYXNoQWxnb3JpdGhtc0ZvcklubGluZVNjcmlwdHMpKQorICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmUqIHZpb2xhdGVkRGlyZWN0
aXZlID0gdmlvbGF0ZWREaXJlY3RpdmVJbkFueVBvbGljeSgmQ29udGVudFNlY3VyaXR5UG9saWN5
RGlyZWN0aXZlTGlzdDo6dmlvbGF0ZWREaXJlY3RpdmVGb3JVbnNhZmVJbmxpbmVTY3JpcHQpOwor
ICAgIGlmICghdmlvbGF0ZWREaXJlY3RpdmUpCiAgICAgICAgIHJldHVybiB0cnVlOwotICAgIHJl
dHVybiBhbGxQb2xpY2llc0FsbG93KCZDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0
OjphbGxvd0lubGluZVNjcmlwdCwgY29udGV4dFVSTCwgY29udGV4dExpbmUsIENvbnRlbnRTZWN1
cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OlJlcG9ydGluZ1N0YXR1czo6U2VuZFJlcG9ydCk7Cisg
ICAgU3RyaW5nIGNvbnNvbGVNZXNzYWdlID0gY29uc29sZU1lc3NhZ2VGb3JWaW9sYXRpb24oQ29u
dGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXM6OnNjcmlwdFNyYywgKnZpb2xhdGVkRGly
ZWN0aXZlLCBVUkwoKSwgIlJlZnVzZWQgdG8gZXhlY3V0ZSBhIHNjcmlwdCIsICJpdHMgaGFzaCwg
aXRzIG5vbmNlLCBvciAndW5zYWZlLWlubGluZSciKTsKKyAgICByZXBvcnRWaW9sYXRpb24oQ29u
dGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXM6OnNjcmlwdFNyYywgKnZpb2xhdGVkRGly
ZWN0aXZlLCBVUkwoKSwgY29uc29sZU1lc3NhZ2UsIGNvbnRleHRVUkwsIFRleHRQb3NpdGlvbihj
b250ZXh0TGluZSwgV1RGOjpPcmRpbmFsTnVtYmVyKCkpKTsKKyAgICBib29sIGlzUmVwb3J0T25s
eSA9IHZpb2xhdGVkRGlyZWN0aXZlLT5kaXJlY3RpdmVMaXN0KCkuaXNSZXBvcnRPbmx5KCk7Cisg
ICAgaWYgKCFpc1JlcG9ydE9ubHkpCisgICAgICAgIHJlcG9ydEJsb2NrZWRTY3JpcHRFeGVjdXRp
b25Ub0luc3BlY3Rvcih2aW9sYXRlZERpcmVjdGl2ZS0+dGV4dCgpKTsKKyAgICByZXR1cm4gaXNS
ZXBvcnRPbmx5OwogfQogCiBib29sIENvbnRlbnRTZWN1cml0eVBvbGljeTo6YWxsb3dJbmxpbmVT
dHlsZShjb25zdCBTdHJpbmcmIGNvbnRleHRVUkwsIGNvbnN0IFdURjo6T3JkaW5hbE51bWJlciYg
Y29udGV4dExpbmUsIGNvbnN0IFN0cmluZyYgc3R5bGVDb250ZW50LCBib29sIG92ZXJyaWRlQ29u
dGVudFNlY3VyaXR5UG9saWN5KSBjb25zdApAQCAtMjY0LDE3ICszMTMsMjkgQEAgYm9vbCBDb250
ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93SW5saW5lU3R5bGUoY29uc3QgU3RyaW5nJiBjb250ZXh0
VVJMLCBjb25zdCBXVEYKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgaWYgKG1fb3ZlcnJpZGVJ
bmxpbmVTdHlsZUFsbG93ZWQpCiAgICAgICAgIHJldHVybiB0cnVlOwotICAgIGlmICghbV9oYXNo
QWxnb3JpdGhtc0ZvcklubGluZVN0eWxlc2hlZXRzLmlzRW1wdHkoKSAmJiAhc3R5bGVDb250ZW50
LmlzRW1wdHkoKQotICAgICAgICAmJiBhbGxQb2xpY2llc0FsbG93SGFzaEZyb21Db250ZW50KCZD
b250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0OjphbGxvd0lubGluZVN0eWxlV2l0aEhh
c2gsIHN0eWxlQ29udGVudCwgbV9oYXNoQWxnb3JpdGhtc0ZvcklubGluZVN0eWxlc2hlZXRzKSkK
KyAgICBpZiAoZm91bmRIYXNoT2ZDb250ZW50SW5BbGxQb2xpY2llcygmQ29udGVudFNlY3VyaXR5
UG9saWN5RGlyZWN0aXZlTGlzdDo6dmlvbGF0ZWREaXJlY3RpdmVGb3JTdHlsZUhhc2gsIHN0eWxl
Q29udGVudCwgbV9oYXNoQWxnb3JpdGhtc0ZvcklubGluZVN0eWxlc2hlZXRzKSkKICAgICAgICAg
cmV0dXJuIHRydWU7Ci0gICAgcmV0dXJuIGFsbFBvbGljaWVzQWxsb3coJkNvbnRlbnRTZWN1cml0
eVBvbGljeURpcmVjdGl2ZUxpc3Q6OmFsbG93SW5saW5lU3R5bGUsIGNvbnRleHRVUkwsIGNvbnRl
eHRMaW5lLCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0OjpSZXBvcnRpbmdTdGF0
dXM6OlNlbmRSZXBvcnQpOworICAgIGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2
ZSogdmlvbGF0ZWREaXJlY3RpdmUgPSB2aW9sYXRlZERpcmVjdGl2ZUluQW55UG9saWN5KCZDb250
ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0Ojp2aW9sYXRlZERpcmVjdGl2ZUZvclVuc2Fm
ZUlubGluZVN0eWxlKTsKKyAgICBpZiAoIXZpb2xhdGVkRGlyZWN0aXZlKQorICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICBTdHJpbmcgY29uc29sZU1lc3NhZ2UgPSBjb25zb2xlTWVzc2FnZUZvclZp
b2xhdGlvbihDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lczo6c3R5bGVTcmMsICp2
aW9sYXRlZERpcmVjdGl2ZSwgVVJMKCksICJSZWZ1c2VkIHRvIGFwcGx5IGEgc3R5bGVzaGVldCIs
ICJpdHMgaGFzaCwgaXRzIG5vbmNlLCBvciAndW5zYWZlLWlubGluZSciKTsKKyAgICByZXBvcnRW
aW9sYXRpb24oQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXM6OnN0eWxlU3JjLCAq
dmlvbGF0ZWREaXJlY3RpdmUsIFVSTCgpLCBjb25zb2xlTWVzc2FnZSwgY29udGV4dFVSTCwgVGV4
dFBvc2l0aW9uKGNvbnRleHRMaW5lLCBXVEY6Ok9yZGluYWxOdW1iZXIoKSkpOworICAgIHJldHVy
biB2aW9sYXRlZERpcmVjdGl2ZS0+ZGlyZWN0aXZlTGlzdCgpLmlzUmVwb3J0T25seSgpOwogfQog
CiBib29sIENvbnRlbnRTZWN1cml0eVBvbGljeTo6YWxsb3dFdmFsKEpTQzo6RXhlY1N0YXRlKiBz
dGF0ZSwgYm9vbCBvdmVycmlkZUNvbnRlbnRTZWN1cml0eVBvbGljeSkgY29uc3QKIHsKICAgICBp
ZiAob3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3kpCiAgICAgICAgIHJldHVybiB0cnVlOwot
ICAgIHJldHVybiBhbGxQb2xpY2llc0FsbG93KCZDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3Rp
dmVMaXN0OjphbGxvd0V2YWwsIHN0YXRlLCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVM
aXN0OjpSZXBvcnRpbmdTdGF0dXM6OlNlbmRSZXBvcnQpOworICAgIGNvbnN0IENvbnRlbnRTZWN1
cml0eVBvbGljeURpcmVjdGl2ZSogdmlvbGF0ZWREaXJlY3RpdmUgPSB2aW9sYXRlZERpcmVjdGl2
ZUluQW55UG9saWN5KCZDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0Ojp2aW9sYXRl
ZERpcmVjdGl2ZUZvclVuc2FmZUV2YWwpOworICAgIGlmICghdmlvbGF0ZWREaXJlY3RpdmUpCisg
ICAgICAgIHJldHVybiB0cnVlOworICAgIFN0cmluZyBjb25zb2xlTWVzc2FnZSA9IGNvbnNvbGVN
ZXNzYWdlRm9yVmlvbGF0aW9uKENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzOjpz
Y3JpcHRTcmMsICp2aW9sYXRlZERpcmVjdGl2ZSwgVVJMKCksICJSZWZ1c2VkIHRvIGV4ZWN1dGUg
YSBzY3JpcHQiLCAiJ3Vuc2FmZS1ldmFsJyIpOworICAgIHJlcG9ydFZpb2xhdGlvbihDb250ZW50
U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lczo6c2NyaXB0U3JjLCAqdmlvbGF0ZWREaXJlY3Rp
dmUsIFVSTCgpLCBjb25zb2xlTWVzc2FnZSwgc3RhdGUpOworICAgIGJvb2wgaXNSZXBvcnRPbmx5
ID0gdmlvbGF0ZWREaXJlY3RpdmUtPmRpcmVjdGl2ZUxpc3QoKS5pc1JlcG9ydE9ubHkoKTsKKyAg
ICBpZiAoIWlzUmVwb3J0T25seSkKKyAgICAgICAgcmVwb3J0QmxvY2tlZFNjcmlwdEV4ZWN1dGlv
blRvSW5zcGVjdG9yKHZpb2xhdGVkRGlyZWN0aXZlLT50ZXh0KCkpOworICAgIHJldHVybiBpc1Jl
cG9ydE9ubHk7CiB9CiAKIGJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5OjphbGxvd0ZyYW1lQW5j
ZXN0b3JzKGNvbnN0IEZyYW1lJiBmcmFtZSwgY29uc3QgVVJMJiB1cmwsIGJvb2wgb3ZlcnJpZGVD
b250ZW50U2VjdXJpdHlQb2xpY3kpIGNvbnN0CkBAIC0yODQsMTQgKzM0NSwyNCBAQCBib29sIENv
bnRlbnRTZWN1cml0eVBvbGljeTo6YWxsb3dGcmFtZUFuY2VzdG9ycyhjb25zdCBGcmFtZSYgZnJh
bWUsIGNvbnN0IFVSTCYgdQogICAgIEZyYW1lJiB0b3BGcmFtZSA9IGZyYW1lLnRyZWUoKS50b3Ao
KTsKICAgICBpZiAoJmZyYW1lID09ICZ0b3BGcmFtZSkKICAgICAgICAgcmV0dXJuIHRydWU7Ci0g
ICAgcmV0dXJuIGFsbFBvbGljaWVzQWxsb3coJkNvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2
ZUxpc3Q6OmFsbG93RnJhbWVBbmNlc3RvcnMsIGZyYW1lLCB1cmwsIENvbnRlbnRTZWN1cml0eVBv
bGljeURpcmVjdGl2ZUxpc3Q6OlJlcG9ydGluZ1N0YXR1czo6U2VuZFJlcG9ydCk7CisgICAgY29u
c3QgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlKiB2aW9sYXRlZERpcmVjdGl2ZSA9IHZp
b2xhdGVkRGlyZWN0aXZlSW5BbnlQb2xpY3koJkNvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2
ZUxpc3Q6OnZpb2xhdGVkRGlyZWN0aXZlRm9yRnJhbWVBbmNlc3RvciwgZnJhbWUpOworICAgIGlm
ICghdmlvbGF0ZWREaXJlY3RpdmUpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIFN0cmluZyBj
b25zb2xlTWVzc2FnZSA9IGNvbnNvbGVNZXNzYWdlRm9yVmlvbGF0aW9uKENvbnRlbnRTZWN1cml0
eVBvbGljeURpcmVjdGl2ZU5hbWVzOjpmcmFtZUFuY2VzdG9ycywgKnZpb2xhdGVkRGlyZWN0aXZl
LCB1cmwsICJSZWZ1c2VkIHRvIGxvYWQiKTsKKyAgICByZXBvcnRWaW9sYXRpb24oQ29udGVudFNl
Y3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXM6OmZyYW1lQW5jZXN0b3JzLCAqdmlvbGF0ZWREaXJl
Y3RpdmUsIHVybCwgY29uc29sZU1lc3NhZ2UsIFN0cmluZygpLCBUZXh0UG9zaXRpb24oV1RGOjpP
cmRpbmFsTnVtYmVyOjpiZWZvcmVGaXJzdCgpLCBXVEY6Ok9yZGluYWxOdW1iZXIoKSkpOworICAg
IHJldHVybiB2aW9sYXRlZERpcmVjdGl2ZS0+ZGlyZWN0aXZlTGlzdCgpLmlzUmVwb3J0T25seSgp
OwogfQogCiBib29sIENvbnRlbnRTZWN1cml0eVBvbGljeTo6YWxsb3dQbHVnaW5UeXBlKGNvbnN0
IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiB0eXBlQXR0cmlidXRlLCBjb25zdCBVUkwmIHVy
bCwgYm9vbCBvdmVycmlkZUNvbnRlbnRTZWN1cml0eVBvbGljeSkgY29uc3QKIHsKICAgICBpZiAo
b3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3kpCiAgICAgICAgIHJldHVybiB0cnVlOwotICAg
IHJldHVybiBhbGxQb2xpY2llc0FsbG93KCZDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVM
aXN0OjphbGxvd1BsdWdpblR5cGUsIHR5cGUsIHR5cGVBdHRyaWJ1dGUsIHVybCwgQ29udGVudFNl
Y3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6UmVwb3J0aW5nU3RhdHVzOjpTZW5kUmVwb3J0KTsK
KyAgICBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmUqIHZpb2xhdGVkRGlyZWN0
aXZlID0gdmlvbGF0ZWREaXJlY3RpdmVJbkFueVBvbGljeSgmQ29udGVudFNlY3VyaXR5UG9saWN5
RGlyZWN0aXZlTGlzdDo6dmlvbGF0ZWREaXJlY3RpdmVGb3JQbHVnaW5UeXBlLCB0eXBlLCB0eXBl
QXR0cmlidXRlKTsKKyAgICBpZiAoIXZpb2xhdGVkRGlyZWN0aXZlKQorICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICBTdHJpbmcgY29uc29sZU1lc3NhZ2UgPSBjb25zb2xlTWVzc2FnZUZvclZpb2xh
dGlvbihDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lczo6cGx1Z2luVHlwZXMsICp2
aW9sYXRlZERpcmVjdGl2ZSwgdXJsLCAiUmVmdXNlZCB0byBsb2FkIiwgIml0cyBNSU1FIHR5cGUi
KTsKKyAgICByZXBvcnRWaW9sYXRpb24oQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFt
ZXM6OnBsdWdpblR5cGVzLCAqdmlvbGF0ZWREaXJlY3RpdmUsIHVybCwgY29uc29sZU1lc3NhZ2Us
IFN0cmluZygpLCBUZXh0UG9zaXRpb24oV1RGOjpPcmRpbmFsTnVtYmVyOjpiZWZvcmVGaXJzdCgp
LCBXVEY6Ok9yZGluYWxOdW1iZXIoKSkpOworICAgIHJldHVybiB2aW9sYXRlZERpcmVjdGl2ZS0+
ZGlyZWN0aXZlTGlzdCgpLmlzUmVwb3J0T25seSgpOwogfQogCiBib29sIENvbnRlbnRTZWN1cml0
eVBvbGljeTo6YWxsb3dTY3JpcHRGcm9tU291cmNlKGNvbnN0IFVSTCYgdXJsLCBib29sIG92ZXJy
aWRlQ29udGVudFNlY3VyaXR5UG9saWN5KSBjb25zdApAQCAtMzAwLDcgKzM3MSwxMiBAQCBib29s
IENvbnRlbnRTZWN1cml0eVBvbGljeTo6YWxsb3dTY3JpcHRGcm9tU291cmNlKGNvbnN0IFVSTCYg
dXJsLCBib29sIG92ZXJyaWRlQwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBpZiAoU2NoZW1l
UmVnaXN0cnk6OnNjaGVtZVNob3VsZEJ5cGFzc0NvbnRlbnRTZWN1cml0eVBvbGljeSh1cmwucHJv
dG9jb2woKSkpCiAgICAgICAgIHJldHVybiB0cnVlOwotICAgIHJldHVybiBhbGxQb2xpY2llc0Fs
bG93KCZDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0OjphbGxvd1NjcmlwdEZyb21T
b3VyY2UsIHVybCwgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6UmVwb3J0aW5n
U3RhdHVzOjpTZW5kUmVwb3J0KTsKKyAgICBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJl
Y3RpdmUqIHZpb2xhdGVkRGlyZWN0aXZlID0gdmlvbGF0ZWREaXJlY3RpdmVJbkFueVBvbGljeSgm
Q29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6dmlvbGF0ZWREaXJlY3RpdmVGb3JT
Y3JpcHQsIHVybCk7CisgICAgaWYgKCF2aW9sYXRlZERpcmVjdGl2ZSkKKyAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgU3RyaW5nIGNvbnNvbGVNZXNzYWdlID0gY29uc29sZU1lc3NhZ2VGb3JWaW9s
YXRpb24oQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXM6OnNjcmlwdFNyYywgKnZp
b2xhdGVkRGlyZWN0aXZlLCB1cmwsICJSZWZ1c2VkIHRvIGxvYWQiKTsKKyAgICByZXBvcnRWaW9s
YXRpb24oQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXM6OnNjcmlwdFNyYywgKnZp
b2xhdGVkRGlyZWN0aXZlLCB1cmwsIGNvbnNvbGVNZXNzYWdlLCBTdHJpbmcoKSwgVGV4dFBvc2l0
aW9uKFdURjo6T3JkaW5hbE51bWJlcjo6YmVmb3JlRmlyc3QoKSwgV1RGOjpPcmRpbmFsTnVtYmVy
KCkpKTsKKyAgICByZXR1cm4gdmlvbGF0ZWREaXJlY3RpdmUtPmRpcmVjdGl2ZUxpc3QoKS5pc1Jl
cG9ydE9ubHkoKTsKIH0KIAogYm9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93T2JqZWN0
RnJvbVNvdXJjZShjb25zdCBVUkwmIHVybCwgYm9vbCBvdmVycmlkZUNvbnRlbnRTZWN1cml0eVBv
bGljeSkgY29uc3QKQEAgLTMwOSw3ICszODUsMTIgQEAgYm9vbCBDb250ZW50U2VjdXJpdHlQb2xp
Y3k6OmFsbG93T2JqZWN0RnJvbVNvdXJjZShjb25zdCBVUkwmIHVybCwgYm9vbCBvdmVycmlkZUMK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgaWYgKFNjaGVtZVJlZ2lzdHJ5OjpzY2hlbWVTaG91
bGRCeXBhc3NDb250ZW50U2VjdXJpdHlQb2xpY3kodXJsLnByb3RvY29sKCkpKQogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKLSAgICByZXR1cm4gYWxsUG9saWNpZXNBbGxvdygmQ29udGVudFNlY3VyaXR5
UG9saWN5RGlyZWN0aXZlTGlzdDo6YWxsb3dPYmplY3RGcm9tU291cmNlLCB1cmwsIENvbnRlbnRT
ZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OlJlcG9ydGluZ1N0YXR1czo6U2VuZFJlcG9ydCk7
CisgICAgY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlKiB2aW9sYXRlZERpcmVj
dGl2ZSA9IHZpb2xhdGVkRGlyZWN0aXZlSW5BbnlQb2xpY3koJkNvbnRlbnRTZWN1cml0eVBvbGlj
eURpcmVjdGl2ZUxpc3Q6OnZpb2xhdGVkRGlyZWN0aXZlRm9yT2JqZWN0U291cmNlLCB1cmwpOwor
ICAgIGlmICghdmlvbGF0ZWREaXJlY3RpdmUpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIFN0
cmluZyBjb25zb2xlTWVzc2FnZSA9IGNvbnNvbGVNZXNzYWdlRm9yVmlvbGF0aW9uKENvbnRlbnRT
ZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzOjpvYmplY3RTcmMsICp2aW9sYXRlZERpcmVjdGl2
ZSwgdXJsLCAiUmVmdXNlZCB0byBsb2FkIik7CisgICAgcmVwb3J0VmlvbGF0aW9uKENvbnRlbnRT
ZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzOjpvYmplY3RTcmMsICp2aW9sYXRlZERpcmVjdGl2
ZSwgdXJsLCBjb25zb2xlTWVzc2FnZSwgU3RyaW5nKCksIFRleHRQb3NpdGlvbihXVEY6Ok9yZGlu
YWxOdW1iZXI6OmJlZm9yZUZpcnN0KCksIFdURjo6T3JkaW5hbE51bWJlcigpKSk7CisgICAgcmV0
dXJuIHZpb2xhdGVkRGlyZWN0aXZlLT5kaXJlY3RpdmVMaXN0KCkuaXNSZXBvcnRPbmx5KCk7CiB9
CiAKIGJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5OjphbGxvd0NoaWxkRnJhbWVGcm9tU291cmNl
KGNvbnN0IFVSTCYgdXJsLCBib29sIG92ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9saWN5KSBjb25z
dApAQCAtMzE4LDcgKzM5OSwxMiBAQCBib29sIENvbnRlbnRTZWN1cml0eVBvbGljeTo6YWxsb3dD
aGlsZEZyYW1lRnJvbVNvdXJjZShjb25zdCBVUkwmIHVybCwgYm9vbCBvdmVycgogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICBpZiAoU2NoZW1lUmVnaXN0cnk6OnNjaGVtZVNob3VsZEJ5cGFzc0Nv
bnRlbnRTZWN1cml0eVBvbGljeSh1cmwucHJvdG9jb2woKSkpCiAgICAgICAgIHJldHVybiB0cnVl
OwotICAgIHJldHVybiBhbGxQb2xpY2llc0FsbG93KCZDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJl
Y3RpdmVMaXN0OjphbGxvd0NoaWxkRnJhbWVGcm9tU291cmNlLCB1cmwsIENvbnRlbnRTZWN1cml0
eVBvbGljeURpcmVjdGl2ZUxpc3Q6OlJlcG9ydGluZ1N0YXR1czo6U2VuZFJlcG9ydCk7CisgICAg
Y29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlKiB2aW9sYXRlZERpcmVjdGl2ZSA9
IHZpb2xhdGVkRGlyZWN0aXZlSW5BbnlQb2xpY3koJkNvbnRlbnRTZWN1cml0eVBvbGljeURpcmVj
dGl2ZUxpc3Q6OnZpb2xhdGVkRGlyZWN0aXZlRm9yRnJhbWUsIHVybCk7CisgICAgaWYgKCF2aW9s
YXRlZERpcmVjdGl2ZSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgU3RyaW5nIGNvbnNvbGVN
ZXNzYWdlID0gY29uc29sZU1lc3NhZ2VGb3JWaW9sYXRpb24oQ29udGVudFNlY3VyaXR5UG9saWN5
RGlyZWN0aXZlTmFtZXM6OmZyYW1lU3JjLCAqdmlvbGF0ZWREaXJlY3RpdmUsIHVybCwgIlJlZnVz
ZWQgdG8gbG9hZCIpOworICAgIHJlcG9ydFZpb2xhdGlvbihDb250ZW50U2VjdXJpdHlQb2xpY3lE
aXJlY3RpdmVOYW1lczo6ZnJhbWVTcmMsICp2aW9sYXRlZERpcmVjdGl2ZSwgdXJsLCBjb25zb2xl
TWVzc2FnZSwgU3RyaW5nKCksIFRleHRQb3NpdGlvbihXVEY6Ok9yZGluYWxOdW1iZXI6OmJlZm9y
ZUZpcnN0KCksIFdURjo6T3JkaW5hbE51bWJlcigpKSk7CisgICAgcmV0dXJuIHZpb2xhdGVkRGly
ZWN0aXZlLT5kaXJlY3RpdmVMaXN0KCkuaXNSZXBvcnRPbmx5KCk7CiB9CiAKIGJvb2wgQ29udGVu
dFNlY3VyaXR5UG9saWN5OjphbGxvd0NoaWxkQ29udGV4dEZyb21Tb3VyY2UoY29uc3QgVVJMJiB1
cmwsIGJvb2wgb3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3kpIGNvbnN0CkBAIC0zMjcsNyAr
NDEzLDEyIEBAIGJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5OjphbGxvd0NoaWxkQ29udGV4dEZy
b21Tb3VyY2UoY29uc3QgVVJMJiB1cmwsIGJvb2wgb3ZlCiAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgIGlmIChTY2hlbWVSZWdpc3RyeTo6c2NoZW1lU2hvdWxkQnlwYXNzQ29udGVudFNlY3VyaXR5
UG9saWN5KHVybC5wcm90b2NvbCgpKSkKICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgcmV0dXJu
IGFsbFBvbGljaWVzQWxsb3coJkNvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OmFs
bG93Q2hpbGRDb250ZXh0RnJvbVNvdXJjZSwgdXJsLCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJl
Y3RpdmVMaXN0OjpSZXBvcnRpbmdTdGF0dXM6OlNlbmRSZXBvcnQpOworICAgIGNvbnN0IENvbnRl
bnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZSogdmlvbGF0ZWREaXJlY3RpdmUgPSB2aW9sYXRlZERp
cmVjdGl2ZUluQW55UG9saWN5KCZDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0Ojp2
aW9sYXRlZERpcmVjdGl2ZUZvckNoaWxkQ29udGV4dCwgdXJsKTsKKyAgICBpZiAoIXZpb2xhdGVk
RGlyZWN0aXZlKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBTdHJpbmcgY29uc29sZU1lc3Nh
Z2UgPSBjb25zb2xlTWVzc2FnZUZvclZpb2xhdGlvbihDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJl
Y3RpdmVOYW1lczo6Y2hpbGRTcmMsICp2aW9sYXRlZERpcmVjdGl2ZSwgdXJsLCAiUmVmdXNlZCB0
byBsb2FkIik7CisgICAgcmVwb3J0VmlvbGF0aW9uKENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVj
dGl2ZU5hbWVzOjpjaGlsZFNyYywgKnZpb2xhdGVkRGlyZWN0aXZlLCB1cmwsIGNvbnNvbGVNZXNz
YWdlLCBTdHJpbmcoKSwgVGV4dFBvc2l0aW9uKFdURjo6T3JkaW5hbE51bWJlcjo6YmVmb3JlRmly
c3QoKSwgV1RGOjpPcmRpbmFsTnVtYmVyKCkpKTsKKyAgICByZXR1cm4gdmlvbGF0ZWREaXJlY3Rp
dmUtPmRpcmVjdGl2ZUxpc3QoKS5pc1JlcG9ydE9ubHkoKTsKIH0KIAogYm9vbCBDb250ZW50U2Vj
dXJpdHlQb2xpY3k6OmFsbG93SW1hZ2VGcm9tU291cmNlKGNvbnN0IFVSTCYgdXJsLCBib29sIG92
ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9saWN5KSBjb25zdApAQCAtMzM2LDcgKzQyNywxMiBAQCBi
b29sIENvbnRlbnRTZWN1cml0eVBvbGljeTo6YWxsb3dJbWFnZUZyb21Tb3VyY2UoY29uc3QgVVJM
JiB1cmwsIGJvb2wgb3ZlcnJpZGVDbwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBpZiAoU2No
ZW1lUmVnaXN0cnk6OnNjaGVtZVNob3VsZEJ5cGFzc0NvbnRlbnRTZWN1cml0eVBvbGljeSh1cmwu
cHJvdG9jb2woKSkpCiAgICAgICAgIHJldHVybiB0cnVlOwotICAgIHJldHVybiBhbGxQb2xpY2ll
c0FsbG93KCZDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0OjphbGxvd0ltYWdlRnJv
bVNvdXJjZSwgdXJsLCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0OjpSZXBvcnRp
bmdTdGF0dXM6OlNlbmRSZXBvcnQpOworICAgIGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeURp
cmVjdGl2ZSogdmlvbGF0ZWREaXJlY3RpdmUgPSB2aW9sYXRlZERpcmVjdGl2ZUluQW55UG9saWN5
KCZDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0Ojp2aW9sYXRlZERpcmVjdGl2ZUZv
ckltYWdlLCB1cmwpOworICAgIGlmICghdmlvbGF0ZWREaXJlY3RpdmUpCisgICAgICAgIHJldHVy
biB0cnVlOworICAgIFN0cmluZyBjb25zb2xlTWVzc2FnZSA9IGNvbnNvbGVNZXNzYWdlRm9yVmlv
bGF0aW9uKENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzOjppbWdTcmMsICp2aW9s
YXRlZERpcmVjdGl2ZSwgdXJsLCAiUmVmdXNlZCB0byBsb2FkIik7CisgICAgcmVwb3J0VmlvbGF0
aW9uKENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzOjppbWdTcmMsICp2aW9sYXRl
ZERpcmVjdGl2ZSwgdXJsLCBjb25zb2xlTWVzc2FnZSwgU3RyaW5nKCksIFRleHRQb3NpdGlvbihX
VEY6Ok9yZGluYWxOdW1iZXI6OmJlZm9yZUZpcnN0KCksIFdURjo6T3JkaW5hbE51bWJlcigpKSk7
CisgICAgcmV0dXJuIHZpb2xhdGVkRGlyZWN0aXZlLT5kaXJlY3RpdmVMaXN0KCkuaXNSZXBvcnRP
bmx5KCk7CiB9CiAKIGJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5OjphbGxvd1N0eWxlRnJvbVNv
dXJjZShjb25zdCBVUkwmIHVybCwgYm9vbCBvdmVycmlkZUNvbnRlbnRTZWN1cml0eVBvbGljeSkg
Y29uc3QKQEAgLTM0NSw3ICs0NDEsMTIgQEAgYm9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFs
bG93U3R5bGVGcm9tU291cmNlKGNvbnN0IFVSTCYgdXJsLCBib29sIG92ZXJyaWRlQ28KICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgaWYgKFNjaGVtZVJlZ2lzdHJ5OjpzY2hlbWVTaG91bGRCeXBh
c3NDb250ZW50U2VjdXJpdHlQb2xpY3kodXJsLnByb3RvY29sKCkpKQogICAgICAgICByZXR1cm4g
dHJ1ZTsKLSAgICByZXR1cm4gYWxsUG9saWNpZXNBbGxvdygmQ29udGVudFNlY3VyaXR5UG9saWN5
RGlyZWN0aXZlTGlzdDo6YWxsb3dTdHlsZUZyb21Tb3VyY2UsIHVybCwgQ29udGVudFNlY3VyaXR5
UG9saWN5RGlyZWN0aXZlTGlzdDo6UmVwb3J0aW5nU3RhdHVzOjpTZW5kUmVwb3J0KTsKKyAgICBj
b25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmUqIHZpb2xhdGVkRGlyZWN0aXZlID0g
dmlvbGF0ZWREaXJlY3RpdmVJbkFueVBvbGljeSgmQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0
aXZlTGlzdDo6dmlvbGF0ZWREaXJlY3RpdmVGb3JTdHlsZSwgdXJsKTsKKyAgICBpZiAoIXZpb2xh
dGVkRGlyZWN0aXZlKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBTdHJpbmcgY29uc29sZU1l
c3NhZ2UgPSBjb25zb2xlTWVzc2FnZUZvclZpb2xhdGlvbihDb250ZW50U2VjdXJpdHlQb2xpY3lE
aXJlY3RpdmVOYW1lczo6c3R5bGVTcmMsICp2aW9sYXRlZERpcmVjdGl2ZSwgdXJsLCAiUmVmdXNl
ZCB0byBsb2FkIik7CisgICAgcmVwb3J0VmlvbGF0aW9uKENvbnRlbnRTZWN1cml0eVBvbGljeURp
cmVjdGl2ZU5hbWVzOjpzdHlsZVNyYywgKnZpb2xhdGVkRGlyZWN0aXZlLCB1cmwsIGNvbnNvbGVN
ZXNzYWdlLCBTdHJpbmcoKSwgVGV4dFBvc2l0aW9uKFdURjo6T3JkaW5hbE51bWJlcjo6YmVmb3Jl
Rmlyc3QoKSwgV1RGOjpPcmRpbmFsTnVtYmVyKCkpKTsKKyAgICByZXR1cm4gdmlvbGF0ZWREaXJl
Y3RpdmUtPmRpcmVjdGl2ZUxpc3QoKS5pc1JlcG9ydE9ubHkoKTsKIH0KIAogYm9vbCBDb250ZW50
U2VjdXJpdHlQb2xpY3k6OmFsbG93Rm9udEZyb21Tb3VyY2UoY29uc3QgVVJMJiB1cmwsIGJvb2wg
b3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3kpIGNvbnN0CkBAIC0zNTQsNyArNDU1LDEyIEBA
IGJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5OjphbGxvd0ZvbnRGcm9tU291cmNlKGNvbnN0IFVS
TCYgdXJsLCBib29sIG92ZXJyaWRlQ29uCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIGlmIChT
Y2hlbWVSZWdpc3RyeTo6c2NoZW1lU2hvdWxkQnlwYXNzQ29udGVudFNlY3VyaXR5UG9saWN5KHVy
bC5wcm90b2NvbCgpKSkKICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgcmV0dXJuIGFsbFBvbGlj
aWVzQWxsb3coJkNvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OmFsbG93Rm9udEZy
b21Tb3VyY2UsIHVybCwgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6UmVwb3J0
aW5nU3RhdHVzOjpTZW5kUmVwb3J0KTsKKyAgICBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lE
aXJlY3RpdmUqIHZpb2xhdGVkRGlyZWN0aXZlID0gdmlvbGF0ZWREaXJlY3RpdmVJbkFueVBvbGlj
eSgmQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6dmlvbGF0ZWREaXJlY3RpdmVG
b3JGb250LCB1cmwpOworICAgIGlmICghdmlvbGF0ZWREaXJlY3RpdmUpCisgICAgICAgIHJldHVy
biB0cnVlOworICAgIFN0cmluZyBjb25zb2xlTWVzc2FnZSA9IGNvbnNvbGVNZXNzYWdlRm9yVmlv
bGF0aW9uKENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzOjpmb250U3JjLCAqdmlv
bGF0ZWREaXJlY3RpdmUsIHVybCwgIlJlZnVzZWQgdG8gbG9hZCIpOworICAgIHJlcG9ydFZpb2xh
dGlvbihDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lczo6Zm9udFNyYywgKnZpb2xh
dGVkRGlyZWN0aXZlLCB1cmwsIGNvbnNvbGVNZXNzYWdlLCBTdHJpbmcoKSwgVGV4dFBvc2l0aW9u
KFdURjo6T3JkaW5hbE51bWJlcjo6YmVmb3JlRmlyc3QoKSwgV1RGOjpPcmRpbmFsTnVtYmVyKCkp
KTsKKyAgICByZXR1cm4gdmlvbGF0ZWREaXJlY3RpdmUtPmRpcmVjdGl2ZUxpc3QoKS5pc1JlcG9y
dE9ubHkoKTsKIH0KIAogYm9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93TWVkaWFGcm9t
U291cmNlKGNvbnN0IFVSTCYgdXJsLCBib29sIG92ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9saWN5
KSBjb25zdApAQCAtMzYzLDcgKzQ2OSwxMiBAQCBib29sIENvbnRlbnRTZWN1cml0eVBvbGljeTo6
YWxsb3dNZWRpYUZyb21Tb3VyY2UoY29uc3QgVVJMJiB1cmwsIGJvb2wgb3ZlcnJpZGVDbwogICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICBpZiAoU2NoZW1lUmVnaXN0cnk6OnNjaGVtZVNob3VsZEJ5
cGFzc0NvbnRlbnRTZWN1cml0eVBvbGljeSh1cmwucHJvdG9jb2woKSkpCiAgICAgICAgIHJldHVy
biB0cnVlOwotICAgIHJldHVybiBhbGxQb2xpY2llc0FsbG93KCZDb250ZW50U2VjdXJpdHlQb2xp
Y3lEaXJlY3RpdmVMaXN0OjphbGxvd01lZGlhRnJvbVNvdXJjZSwgdXJsLCBDb250ZW50U2VjdXJp
dHlQb2xpY3lEaXJlY3RpdmVMaXN0OjpSZXBvcnRpbmdTdGF0dXM6OlNlbmRSZXBvcnQpOworICAg
IGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZSogdmlvbGF0ZWREaXJlY3RpdmUg
PSB2aW9sYXRlZERpcmVjdGl2ZUluQW55UG9saWN5KCZDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJl
Y3RpdmVMaXN0Ojp2aW9sYXRlZERpcmVjdGl2ZUZvck1lZGlhLCB1cmwpOworICAgIGlmICghdmlv
bGF0ZWREaXJlY3RpdmUpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIFN0cmluZyBjb25zb2xl
TWVzc2FnZSA9IGNvbnNvbGVNZXNzYWdlRm9yVmlvbGF0aW9uKENvbnRlbnRTZWN1cml0eVBvbGlj
eURpcmVjdGl2ZU5hbWVzOjptZWRpYVNyYywgKnZpb2xhdGVkRGlyZWN0aXZlLCB1cmwsICJSZWZ1
c2VkIHRvIGxvYWQiKTsKKyAgICByZXBvcnRWaW9sYXRpb24oQ29udGVudFNlY3VyaXR5UG9saWN5
RGlyZWN0aXZlTmFtZXM6Om1lZGlhU3JjLCAqdmlvbGF0ZWREaXJlY3RpdmUsIHVybCwgY29uc29s
ZU1lc3NhZ2UsIFN0cmluZygpLCBUZXh0UG9zaXRpb24oV1RGOjpPcmRpbmFsTnVtYmVyOjpiZWZv
cmVGaXJzdCgpLCBXVEY6Ok9yZGluYWxOdW1iZXIoKSkpOworICAgIHJldHVybiB2aW9sYXRlZERp
cmVjdGl2ZS0+ZGlyZWN0aXZlTGlzdCgpLmlzUmVwb3J0T25seSgpOwogfQogCiBib29sIENvbnRl
bnRTZWN1cml0eVBvbGljeTo6YWxsb3dDb25uZWN0VG9Tb3VyY2UoY29uc3QgVVJMJiB1cmwsIGJv
b2wgb3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3kpIGNvbnN0CkBAIC0zNzIsNyArNDgzLDEy
IEBAIGJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5OjphbGxvd0Nvbm5lY3RUb1NvdXJjZShjb25z
dCBVUkwmIHVybCwgYm9vbCBvdmVycmlkZUNvCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIGlm
IChTY2hlbWVSZWdpc3RyeTo6c2NoZW1lU2hvdWxkQnlwYXNzQ29udGVudFNlY3VyaXR5UG9saWN5
KHVybC5wcm90b2NvbCgpKSkKICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgcmV0dXJuIGFsbFBv
bGljaWVzQWxsb3coJkNvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OmFsbG93Q29u
bmVjdFRvU291cmNlLCB1cmwsIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OlJl
cG9ydGluZ1N0YXR1czo6U2VuZFJlcG9ydCk7CisgICAgY29uc3QgQ29udGVudFNlY3VyaXR5UG9s
aWN5RGlyZWN0aXZlKiB2aW9sYXRlZERpcmVjdGl2ZSA9IHZpb2xhdGVkRGlyZWN0aXZlSW5BbnlQ
b2xpY3koJkNvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OnZpb2xhdGVkRGlyZWN0
aXZlRm9yQ29ubmVjdFNvdXJjZSwgdXJsKTsKKyAgICBpZiAoIXZpb2xhdGVkRGlyZWN0aXZlKQor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBTdHJpbmcgY29uc29sZU1lc3NhZ2UgPSBjb25zb2xl
TWVzc2FnZUZvclZpb2xhdGlvbihDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lczo6
Y29ubmVjdFNyYywgKnZpb2xhdGVkRGlyZWN0aXZlLCB1cmwsICJSZWZ1c2VkIHRvIGNvbm5lY3Qg
dG8iKTsKKyAgICByZXBvcnRWaW9sYXRpb24oQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZl
TmFtZXM6OmNvbm5lY3RTcmMsICp2aW9sYXRlZERpcmVjdGl2ZSwgdXJsLCBjb25zb2xlTWVzc2Fn
ZSwgU3RyaW5nKCksIFRleHRQb3NpdGlvbihXVEY6Ok9yZGluYWxOdW1iZXI6OmJlZm9yZUZpcnN0
KCksIFdURjo6T3JkaW5hbE51bWJlcigpKSk7CisgICAgcmV0dXJuIHZpb2xhdGVkRGlyZWN0aXZl
LT5kaXJlY3RpdmVMaXN0KCkuaXNSZXBvcnRPbmx5KCk7CiB9CiAKIGJvb2wgQ29udGVudFNlY3Vy
aXR5UG9saWN5OjphbGxvd0Zvcm1BY3Rpb24oY29uc3QgVVJMJiB1cmwsIGJvb2wgb3ZlcnJpZGVD
b250ZW50U2VjdXJpdHlQb2xpY3kpIGNvbnN0CkBAIC0zODEsNyArNDk3LDEyIEBAIGJvb2wgQ29u
dGVudFNlY3VyaXR5UG9saWN5OjphbGxvd0Zvcm1BY3Rpb24oY29uc3QgVVJMJiB1cmwsIGJvb2wg
b3ZlcnJpZGVDb250ZW50CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIGlmIChTY2hlbWVSZWdp
c3RyeTo6c2NoZW1lU2hvdWxkQnlwYXNzQ29udGVudFNlY3VyaXR5UG9saWN5KHVybC5wcm90b2Nv
bCgpKSkKICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgcmV0dXJuIGFsbFBvbGljaWVzQWxsb3co
JkNvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OmFsbG93Rm9ybUFjdGlvbiwgdXJs
LCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0OjpSZXBvcnRpbmdTdGF0dXM6OlNl
bmRSZXBvcnQpOworICAgIGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZSogdmlv
bGF0ZWREaXJlY3RpdmUgPSB2aW9sYXRlZERpcmVjdGl2ZUluQW55UG9saWN5KCZDb250ZW50U2Vj
dXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0Ojp2aW9sYXRlZERpcmVjdGl2ZUZvckZvcm1BY3Rpb24s
IHVybCk7CisgICAgaWYgKCF2aW9sYXRlZERpcmVjdGl2ZSkKKyAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgU3RyaW5nIGNvbnNvbGVNZXNzYWdlID0gY29uc29sZU1lc3NhZ2VGb3JWaW9sYXRpb24o
Q29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXM6OmZvcm1BY3Rpb24sICp2aW9sYXRl
ZERpcmVjdGl2ZSwgdXJsLCAiUmVmdXNlZCB0byBsb2FkIik7CisgICAgcmVwb3J0VmlvbGF0aW9u
KENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzOjpmb3JtQWN0aW9uLCAqdmlvbGF0
ZWREaXJlY3RpdmUsIHVybCwgY29uc29sZU1lc3NhZ2UsIFN0cmluZygpLCBUZXh0UG9zaXRpb24o
V1RGOjpPcmRpbmFsTnVtYmVyOjpiZWZvcmVGaXJzdCgpLCBXVEY6Ok9yZGluYWxOdW1iZXIoKSkp
OworICAgIHJldHVybiB2aW9sYXRlZERpcmVjdGl2ZS0+ZGlyZWN0aXZlTGlzdCgpLmlzUmVwb3J0
T25seSgpOwogfQogCiBib29sIENvbnRlbnRTZWN1cml0eVBvbGljeTo6YWxsb3dCYXNlVVJJKGNv
bnN0IFVSTCYgdXJsLCBib29sIG92ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9saWN5KSBjb25zdApA
QCAtMzkwLDcgKzUxMSwxMiBAQCBib29sIENvbnRlbnRTZWN1cml0eVBvbGljeTo6YWxsb3dCYXNl
VVJJKGNvbnN0IFVSTCYgdXJsLCBib29sIG92ZXJyaWRlQ29udGVudFNlYwogICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICBpZiAoU2NoZW1lUmVnaXN0cnk6OnNjaGVtZVNob3VsZEJ5cGFzc0NvbnRl
bnRTZWN1cml0eVBvbGljeSh1cmwucHJvdG9jb2woKSkpCiAgICAgICAgIHJldHVybiB0cnVlOwot
ICAgIHJldHVybiBhbGxQb2xpY2llc0FsbG93KCZDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3Rp
dmVMaXN0OjphbGxvd0Jhc2VVUkksIHVybCwgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZl
TGlzdDo6UmVwb3J0aW5nU3RhdHVzOjpTZW5kUmVwb3J0KTsKKyAgICBjb25zdCBDb250ZW50U2Vj
dXJpdHlQb2xpY3lEaXJlY3RpdmUqIHZpb2xhdGVkRGlyZWN0aXZlID0gdmlvbGF0ZWREaXJlY3Rp
dmVJbkFueVBvbGljeSgmQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6dmlvbGF0
ZWREaXJlY3RpdmVGb3JCYXNlVVJJLCB1cmwpOworICAgIGlmICghdmlvbGF0ZWREaXJlY3RpdmUp
CisgICAgICAgIHJldHVybiB0cnVlOworICAgIFN0cmluZyBjb25zb2xlTWVzc2FnZSA9IGNvbnNv
bGVNZXNzYWdlRm9yVmlvbGF0aW9uKENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVz
OjpiYXNlVVJJLCAqdmlvbGF0ZWREaXJlY3RpdmUsIHVybCwgIlJlZnVzZWQgdG8gY2hhbmdlIHRo
ZSBkb2N1bWVudCBiYXNlIFVSTCB0byIpOworICAgIHJlcG9ydFZpb2xhdGlvbihDb250ZW50U2Vj
dXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lczo6YmFzZVVSSSwgKnZpb2xhdGVkRGlyZWN0aXZlLCB1
cmwsIGNvbnNvbGVNZXNzYWdlLCBTdHJpbmcoKSwgVGV4dFBvc2l0aW9uKFdURjo6T3JkaW5hbE51
bWJlcjo6YmVmb3JlRmlyc3QoKSwgV1RGOjpPcmRpbmFsTnVtYmVyKCkpKTsKKyAgICByZXR1cm4g
dmlvbGF0ZWREaXJlY3RpdmUtPmRpcmVjdGl2ZUxpc3QoKS5pc1JlcG9ydE9ubHkoKTsKIH0KIAog
Q29udGVudFNlY3VyaXR5UG9saWN5OjpSZWZsZWN0ZWRYU1NEaXNwb3NpdGlvbiBDb250ZW50U2Vj
dXJpdHlQb2xpY3k6OnJlZmxlY3RlZFhTU0Rpc3Bvc2l0aW9uKCkgY29uc3QKQEAgLTQwMywxNSAr
NTI5LDYgQEAgQ29udGVudFNlY3VyaXR5UG9saWN5OjpSZWZsZWN0ZWRYU1NEaXNwb3NpdGlvbiBD
b250ZW50U2VjdXJpdHlQb2xpY3k6OnJlZmxlY3RlZFgKICAgICByZXR1cm4gZGlzcG9zaXRpb247
CiB9CiAKLXZvaWQgQ29udGVudFNlY3VyaXR5UG9saWN5OjpnYXRoZXJSZXBvcnRVUklzKERPTVN0
cmluZ0xpc3QmIGxpc3QpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKG1fc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCk7Ci0gICAgZm9yIChhdXRvJiBwb2xpY3kgOiBtX3BvbGljaWVzKSB7Ci0gICAgICAgIGZv
ciAoYXV0byYgdXJsIDogcG9saWN5LT5yZXBvcnRVUklzKCkpCi0gICAgICAgICAgICBsaXN0LmFw
cGVuZChtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmNvbXBsZXRlVVJMKHVybCkuc3RyaW5nKCkp
OwotICAgIH0KLX0KLQogc3RhdGljIFN0cmluZyBzdHJpcFVSTEZvclVzZUluUmVwb3J0KERvY3Vt
ZW50JiBkb2N1bWVudCwgY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgaWYgKCF1cmwuaXNWYWxpZCgp
KQpAQCAtNDIxLDkgKzUzOCwxNSBAQCBzdGF0aWMgU3RyaW5nIHN0cmlwVVJMRm9yVXNlSW5SZXBv
cnQoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBVUkwmIHVybCkKICAgICByZXR1cm4gZG9jdW1l
bnQuc2VjdXJpdHlPcmlnaW4oKS0+Y2FuUmVxdWVzdCh1cmwpID8gdXJsLnN0cmlwcGVkRm9yVXNl
QXNSZWZlcnJlcigpIDogU2VjdXJpdHlPcmlnaW46OmNyZWF0ZSh1cmwpLmdldCgpLnRvU3RyaW5n
KCk7CiB9CiAKLXZvaWQgQ29udGVudFNlY3VyaXR5UG9saWN5OjpyZXBvcnRWaW9sYXRpb24oY29u
c3QgU3RyaW5nJiBkaXJlY3RpdmVUZXh0LCBjb25zdCBTdHJpbmcmIGVmZmVjdGl2ZURpcmVjdGl2
ZSwgY29uc3QgU3RyaW5nJiBjb25zb2xlTWVzc2FnZSwgY29uc3QgVVJMJiBibG9ja2VkVVJMLCBj
b25zdCBWZWN0b3I8U3RyaW5nPiYgcmVwb3J0VVJJcywgY29uc3QgU3RyaW5nJiBoZWFkZXIsIGNv
bnN0IFN0cmluZyYgY29udGV4dFVSTCwgY29uc3QgV1RGOjpPcmRpbmFsTnVtYmVyJiBjb250ZXh0
TGluZSwgSlNDOjpFeGVjU3RhdGUqIHN0YXRlKSBjb25zdAordm9pZCBDb250ZW50U2VjdXJpdHlQ
b2xpY3k6OnJlcG9ydFZpb2xhdGlvbihjb25zdCBTdHJpbmcmIHZpb2xhdGVkRGlyZWN0aXZlLCBj
b25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmUmIGVmZmVjdGl2ZVZpb2xhdGVkRGly
ZWN0aXZlLCBjb25zdCBVUkwmIGJsb2NrZWRVUkwsIGNvbnN0IFN0cmluZyYgY29uc29sZU1lc3Nh
Z2UsIEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSkgY29uc3QKK3sKKyAgICAvLyBGSVhNRTogRXh0cmFj
dCBzb3VyY2UgZmlsZSBhbmQgc291cmNlIHBvc2l0aW9uIGZyb20gSlNDOjpFeGVjU3RhdGUuCisg
ICAgcmV0dXJuIHJlcG9ydFZpb2xhdGlvbih2aW9sYXRlZERpcmVjdGl2ZSwgZWZmZWN0aXZlVmlv
bGF0ZWREaXJlY3RpdmUsIGJsb2NrZWRVUkwsIGNvbnNvbGVNZXNzYWdlLCBTdHJpbmcoKSwgVGV4
dFBvc2l0aW9uKFdURjo6T3JkaW5hbE51bWJlcjo6YmVmb3JlRmlyc3QoKSwgV1RGOjpPcmRpbmFs
TnVtYmVyOjpiZWZvcmVGaXJzdCgpKSwgc3RhdGUpOworfQorCit2b2lkIENvbnRlbnRTZWN1cml0
eVBvbGljeTo6cmVwb3J0VmlvbGF0aW9uKGNvbnN0IFN0cmluZyYgZWZmZWN0aXZlVmlvbGF0ZWRE
aXJlY3RpdmUsIGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZSYgdmlvbGF0ZWRE
aXJlY3RpdmUsIGNvbnN0IFVSTCYgYmxvY2tlZFVSTCwgY29uc3QgU3RyaW5nJiBjb25zb2xlTWVz
c2FnZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwsIGNvbnN0IFRleHRQb3NpdGlvbiYgc291cmNl
UG9zaXRpb24sIEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSkgY29uc3QKIHsKLSAgICBsb2dUb0NvbnNv
bGUoY29uc29sZU1lc3NhZ2UsIGNvbnRleHRVUkwsIGNvbnRleHRMaW5lLCBzdGF0ZSk7CisgICAg
bG9nVG9Db25zb2xlKGNvbnNvbGVNZXNzYWdlLCBzb3VyY2VVUkwsIHNvdXJjZVBvc2l0aW9uLm1f
bGluZSwgc3RhdGUpOwogCiAgICAgaWYgKCFtX2lzUmVwb3J0aW5nRW5hYmxlZCkKICAgICAgICAg
cmV0dXJuOwpAQCAtNDMyLDkgKzU1NSw3IEBAIHZvaWQgQ29udGVudFNlY3VyaXR5UG9saWN5Ojpy
ZXBvcnRWaW9sYXRpb24oY29uc3QgU3RyaW5nJiBkaXJlY3RpdmVUZXh0LCBjb25zdCBTCiAgICAg
aWYgKCFpczxEb2N1bWVudD4obV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KSAmJiAhbV9mcmFtZSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgLy8gRklYTUU6IFdlIHNob3VsZCBub3QgaGFyZGNvZGUg
dGhlIGRpcmVjdGl2ZSBuYW1lcy4gV2Ugc2hvdWxkIG1ha2UgdXNlIG9mIHRoZSBjb25zdGFudHMg
aW4gQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdC5jcHAuCi0gICAgLy8gU2VlIDxo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU1MTMzPi4KLSAgICBBU1NF
UlQoIW1fZnJhbWUgfHwgZWZmZWN0aXZlRGlyZWN0aXZlID09ICJmcmFtZS1hbmNlc3RvcnMiKTsK
KyAgICBBU1NFUlQoIW1fZnJhbWUgfHwgZWZmZWN0aXZlVmlvbGF0ZWREaXJlY3RpdmUgPT0gQ29u
dGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXM6OmZyYW1lQW5jZXN0b3JzKTsKIAogICAg
IERvY3VtZW50JiBkb2N1bWVudCA9IGlzPERvY3VtZW50PihtX3NjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQpID8gZG93bmNhc3Q8RG9jdW1lbnQ+KCptX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpIDogKm1f
ZnJhbWUtPmRvY3VtZW50KCk7CiAgICAgRnJhbWUqIGZyYW1lID0gZG9jdW1lbnQuZnJhbWUoKTsK
QEAgLTQ1Myw4ICs1NzQsOCBAQCB2b2lkIENvbnRlbnRTZWN1cml0eVBvbGljeTo6cmVwb3J0Vmlv
bGF0aW9uKGNvbnN0IFN0cmluZyYgZGlyZWN0aXZlVGV4dCwgY29uc3QgUwogICAgICAgICBkb2N1
bWVudFVSSSA9IGJsb2NrZWRVUkw7CiAgICAgICAgIGJsb2NrZWRVUkkgPSBibG9ja2VkVVJMOwog
ICAgIH0KLSAgICBTdHJpbmcgdmlvbGF0ZWREaXJlY3RpdmUgPSBkaXJlY3RpdmVUZXh0OwotICAg
IFN0cmluZyBvcmlnaW5hbFBvbGljeSA9IGhlYWRlcjsKKyAgICBTdHJpbmcgdmlvbGF0ZWREaXJl
Y3RpdmVUZXh0ID0gdmlvbGF0ZWREaXJlY3RpdmUudGV4dCgpOworICAgIFN0cmluZyBvcmlnaW5h
bFBvbGljeSA9IHZpb2xhdGVkRGlyZWN0aXZlLmRpcmVjdGl2ZUxpc3QoKS5oZWFkZXIoKTsKICAg
ICBTdHJpbmcgcmVmZXJyZXIgPSBkb2N1bWVudC5yZWZlcnJlcigpOwogICAgIEFTU0VSVChkb2N1
bWVudC5sb2FkZXIoKSk7CiAgICAgdW5zaWduZWQgc2hvcnQgc3RhdHVzQ29kZSA9IGRvY3VtZW50
LnVybCgpLnByb3RvY29sSXMoImh0dHAiKSAmJiBkb2N1bWVudC5sb2FkZXIoKSA/IGRvY3VtZW50
LmxvYWRlcigpLT5yZXNwb25zZSgpLmh0dHBTdGF0dXNDb2RlKCkgOiAwOwpAQCAtNDczLDkgKzU5
NCwxMCBAQCB2b2lkIENvbnRlbnRTZWN1cml0eVBvbGljeTo6cmVwb3J0VmlvbGF0aW9uKGNvbnN0
IFN0cmluZyYgZGlyZWN0aXZlVGV4dCwgY29uc3QgUwogICAgIC8vIDEuIERpc3BhdGNoIHZpb2xh
dGlvbiBldmVudC4KICAgICBib29sIGNhbkJ1YmJsZSA9IGZhbHNlOwogICAgIGJvb2wgY2FuY2Vs
YWJsZSA9IGZhbHNlOwotICAgIGRvY3VtZW50LmVucXVldWVEb2N1bWVudEV2ZW50KFNlY3VyaXR5
UG9saWN5VmlvbGF0aW9uRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuc2VjdXJpdHlwb2xpY3l2
aW9sYXRpb25FdmVudCwgY2FuQnViYmxlLCBjYW5jZWxhYmxlLCBkb2N1bWVudFVSSSwgcmVmZXJy
ZXIsIGJsb2NrZWRVUkksIHZpb2xhdGVkRGlyZWN0aXZlLCBlZmZlY3RpdmVEaXJlY3RpdmUsIG9y
aWdpbmFsUG9saWN5LCBzb3VyY2VGaWxlLCBzdGF0dXNDb2RlLCBsaW5lTnVtYmVyLCBjb2x1bW5O
dW1iZXIpKTsKKyAgICBkb2N1bWVudC5lbnF1ZXVlRG9jdW1lbnRFdmVudChTZWN1cml0eVBvbGlj
eVZpb2xhdGlvbkV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLnNlY3VyaXR5cG9saWN5dmlvbGF0
aW9uRXZlbnQsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgZG9jdW1lbnRVUkksIHJlZmVycmVyLCBi
bG9ja2VkVVJJLCB2aW9sYXRlZERpcmVjdGl2ZVRleHQsIGVmZmVjdGl2ZVZpb2xhdGVkRGlyZWN0
aXZlLCBvcmlnaW5hbFBvbGljeSwgc291cmNlRmlsZSwgc3RhdHVzQ29kZSwgbGluZU51bWJlciwg
Y29sdW1uTnVtYmVyKSk7CiAKICAgICAvLyAyLiBTZW5kIHZpb2xhdGlvbiByZXBvcnQgKGlmIGFw
cGxpY2FibGUpLgorICAgIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiByZXBvcnRVUklzID0gdmlvbGF0
ZWREaXJlY3RpdmUuZGlyZWN0aXZlTGlzdCgpLnJlcG9ydFVSSXMoKTsKICAgICBpZiAocmVwb3J0
VVJJcy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIApAQCAtNDkyLDggKzYxNCw4IEBAIHZv
aWQgQ29udGVudFNlY3VyaXR5UG9saWN5OjpyZXBvcnRWaW9sYXRpb24oY29uc3QgU3RyaW5nJiBk
aXJlY3RpdmVUZXh0LCBjb25zdCBTCiAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gY3NwUmVw
b3J0ID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKICAgICBjc3BSZXBvcnQtPnNldFN0cmlu
ZyhBU0NJSUxpdGVyYWwoImRvY3VtZW50LXVyaSIpLCBkb2N1bWVudFVSSSk7CiAgICAgY3NwUmVw
b3J0LT5zZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJyZWZlcnJlciIpLCByZWZlcnJlcik7Ci0gICAg
Y3NwUmVwb3J0LT5zZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJ2aW9sYXRlZC1kaXJlY3RpdmUiKSwg
ZGlyZWN0aXZlVGV4dCk7Ci0gICAgY3NwUmVwb3J0LT5zZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJl
ZmZlY3RpdmUtZGlyZWN0aXZlIiksIGVmZmVjdGl2ZURpcmVjdGl2ZSk7CisgICAgY3NwUmVwb3J0
LT5zZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJ2aW9sYXRlZC1kaXJlY3RpdmUiKSwgdmlvbGF0ZWRE
aXJlY3RpdmVUZXh0KTsKKyAgICBjc3BSZXBvcnQtPnNldFN0cmluZyhBU0NJSUxpdGVyYWwoImVm
ZmVjdGl2ZS1kaXJlY3RpdmUiKSwgZWZmZWN0aXZlVmlvbGF0ZWREaXJlY3RpdmUpOwogICAgIGNz
cFJlcG9ydC0+c2V0U3RyaW5nKEFTQ0lJTGl0ZXJhbCgib3JpZ2luYWwtcG9saWN5IiksIG9yaWdp
bmFsUG9saWN5KTsKICAgICBjc3BSZXBvcnQtPnNldFN0cmluZyhBU0NJSUxpdGVyYWwoImJsb2Nr
ZWQtdXJpIiksIGJsb2NrZWRVUkkpOwogICAgIGNzcFJlcG9ydC0+c2V0SW50ZWdlcihBU0NJSUxp
dGVyYWwoInN0YXR1cy1jb2RlIiksIHN0YXR1c0NvZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5LmggYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3kuaAppbmRleCBmMzJjMzBkZTdmYmI2M2M1ZThj
Y2U1ZmFlN2MwMGIxYWNkZmViNTQyLi4wZmZlZjljNDAwMTNlNTRmYmVmY2Q3MDRhMjYyMGIxMmZh
YWQ1ZGE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJp
dHlQb2xpY3kuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQ
b2xpY3kuaApAQCAtMzksNiArMzksNyBAQCBjbGFzcyBPcmRpbmFsTnVtYmVyOwogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKK2NsYXNzIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZTsKIGNs
YXNzIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q7CiBjbGFzcyBDb250ZW50U2Vj
dXJpdHlQb2xpY3lTb3VyY2U7CiBjbGFzcyBET01TdHJpbmdMaXN0OwpAQCAtMTM0LDggKzEzNSw2
IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlcG9ydEludmFsaWREaXJlY3RpdmVJbkhUVFBFcXVpdk1l
dGEoY29uc3QgU3RyaW5nJikgY29uc3Q7CiAgICAgdm9pZCByZXBvcnRNaXNzaW5nUmVwb3J0VVJJ
KGNvbnN0IFN0cmluZyYpIGNvbnN0OwogICAgIHZvaWQgcmVwb3J0VW5zdXBwb3J0ZWREaXJlY3Rp
dmUoY29uc3QgU3RyaW5nJikgY29uc3Q7Ci0gICAgdm9pZCByZXBvcnRWaW9sYXRpb24oY29uc3Qg
U3RyaW5nJiBkaXJlY3RpdmVUZXh0LCBjb25zdCBTdHJpbmcmIGVmZmVjdGl2ZURpcmVjdGl2ZSwg
Y29uc3QgU3RyaW5nJiBjb25zb2xlTWVzc2FnZSwgY29uc3QgVVJMJiBibG9ja2VkVVJMLCBjb25z
dCBWZWN0b3I8U3RyaW5nPiYgcmVwb3J0VVJJcywgY29uc3QgU3RyaW5nJiBoZWFkZXIsIGNvbnN0
IFN0cmluZyYgY29udGV4dFVSTCA9IFN0cmluZygpLCBjb25zdCBXVEY6Ok9yZGluYWxOdW1iZXIm
IGNvbnRleHRMaW5lID0gV1RGOjpPcmRpbmFsTnVtYmVyOjpiZWZvcmVGaXJzdCgpLCBKU0M6OkV4
ZWNTdGF0ZSogPSBudWxscHRyKSBjb25zdDsKLSAgICB2b2lkIHJlcG9ydEJsb2NrZWRTY3JpcHRF
eGVjdXRpb25Ub0luc3BlY3Rvcihjb25zdCBTdHJpbmcmIGRpcmVjdGl2ZVRleHQpIGNvbnN0Owog
ICAgIHZvaWQgZW5mb3JjZVNhbmRib3hGbGFncyhTYW5kYm94RmxhZ3Mgc2FuZGJveEZsYWdzKSB7
IG1fc2FuZGJveEZsYWdzIHw9IHNhbmRib3hGbGFnczsgfQogICAgIHZvaWQgYWRkSGFzaEFsZ29y
aXRobXNGb3JJbmxpbmVTY3JpcHRzKE9wdGlvblNldDxDb250ZW50U2VjdXJpdHlQb2xpY3lIYXNo
QWxnb3JpdGhtPiBoYXNoQWxnb3JpdGhtc0ZvcklubGluZVNjcmlwdHMpCiAgICAgewpAQCAtMTU1
LDggKzE1NCwxNCBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBkaWRSZWNlaXZlSGVhZGVyKGNvbnN0
IFN0cmluZyYsIENvbnRlbnRTZWN1cml0eVBvbGljeUhlYWRlclR5cGUsIENvbnRlbnRTZWN1cml0
eVBvbGljeTo6UG9saWN5RnJvbSk7CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBQcmVkaWNhdGUs
IHR5cGVuYW1lLi4uIEFyZ3M+IGJvb2wgYWxsUG9saWNpZXNBbGxvdyhQcmVkaWNhdGUmJiwgQXJn
cyYmLi4uKSBjb25zdCBXQVJOX1VOVVNFRF9SRVRVUk47Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUg
UHJlZGljYXRlPiBib29sIGFsbFBvbGljaWVzQWxsb3dIYXNoRnJvbUNvbnRlbnQoUHJlZGljYXRl
JiYsIGNvbnN0IFN0cmluZyYgY29udGVudCwgT3B0aW9uU2V0PENvbnRlbnRTZWN1cml0eVBvbGlj
eUhhc2hBbGdvcml0aG0+KSBjb25zdCBXQVJOX1VOVVNFRF9SRVRVUk47CisgICAgY29uc3QgVGV4
dEVuY29kaW5nJiBkb2N1bWVudEVuY29kaW5nKCkgY29uc3Q7CisKKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBQcmVkaWNhdGUsIHR5cGVuYW1lLi4uIEFyZ3M+IGNvbnN0IENvbnRlbnRTZWN1cml0eVBv
bGljeURpcmVjdGl2ZSogdmlvbGF0ZWREaXJlY3RpdmVJbkFueVBvbGljeShQcmVkaWNhdGUmJiwg
QXJncyYmLi4uKSBjb25zdCBXQVJOX1VOVVNFRF9SRVRVUk47CisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgUHJlZGljYXRlPiBib29sIGZvdW5kSGFzaE9mQ29udGVudEluQWxsUG9saWNpZXMoUHJlZGlj
YXRlJiYsIGNvbnN0IFN0cmluZyYgY29udGVudCwgT3B0aW9uU2V0PENvbnRlbnRTZWN1cml0eVBv
bGljeUhhc2hBbGdvcml0aG0+KSBjb25zdCBXQVJOX1VOVVNFRF9SRVRVUk47CisKKyAgICB2b2lk
IHJlcG9ydFZpb2xhdGlvbihjb25zdCBTdHJpbmcmIHZpb2xhdGVkRGlyZWN0aXZlLCBjb25zdCBD
b250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmUmIGVmZmVjdGl2ZVZpb2xhdGVkRGlyZWN0aXZl
LCBjb25zdCBVUkwmIGJsb2NrZWRVUkwsIGNvbnN0IFN0cmluZyYgY29uc29sZU1lc3NhZ2UsIEpT
Qzo6RXhlY1N0YXRlKikgY29uc3Q7CisgICAgdm9pZCByZXBvcnRWaW9sYXRpb24oY29uc3QgU3Ry
aW5nJiB2aW9sYXRlZERpcmVjdGl2ZSwgY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0
aXZlJiBlZmZlY3RpdmVWaW9sYXRlZERpcmVjdGl2ZSwgY29uc3QgVVJMJiBibG9ja2VkVVJMLCBj
b25zdCBTdHJpbmcmIGNvbnNvbGVNZXNzYWdlLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCwgY29u
c3QgVGV4dFBvc2l0aW9uJiBzb3VyY2VQb3NpdGlvbiwgSlNDOjpFeGVjU3RhdGUqID0gbnVsbHB0
cikgY29uc3Q7CisgICAgdm9pZCByZXBvcnRCbG9ja2VkU2NyaXB0RXhlY3V0aW9uVG9JbnNwZWN0
b3IoY29uc3QgU3RyaW5nJiBkaXJlY3RpdmVUZXh0KSBjb25zdDsKIAogICAgIC8vIFdlIGNhbiBu
ZXZlciBoYXZlIGJvdGggYSBzY3JpcHQgZXhlY3V0aW9uIGNvbnRleHQgYW5kIGEgZnJhbWUuCiAg
ICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0IHsgbnVs
bHB0ciB9OwpAQCAtMTczLDEzICsxNzgsMTMgQEAgcHJpdmF0ZToKIH07CiAKIHRlbXBsYXRlPHR5
cGVuYW1lIFByZWRpY2F0ZSwgdHlwZW5hbWUuLi4gQXJncz4KLWlubGluZSBib29sIENvbnRlbnRT
ZWN1cml0eVBvbGljeTo6YWxsUG9saWNpZXNBbGxvdyhQcmVkaWNhdGUmJiBwcmVkaWNhdGUsIEFy
Z3MmJi4uLiBhcmdzKSBjb25zdAoraW5saW5lIGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeURp
cmVjdGl2ZSogQ29udGVudFNlY3VyaXR5UG9saWN5Ojp2aW9sYXRlZERpcmVjdGl2ZUluQW55UG9s
aWN5KFByZWRpY2F0ZSYmIHByZWRpY2F0ZSwgQXJncyYmLi4uIGFyZ3MpIGNvbnN0CiB7CiAgICAg
Zm9yIChhdXRvJiBwb2xpY3kgOiBtX3BvbGljaWVzKSB7Ci0gICAgICAgIGlmICghKHBvbGljeS5n
ZXQoKS0+KnByZWRpY2F0ZSkoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKSkKLSAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGlj
eURpcmVjdGl2ZSogdmlvbGF0ZWREaXJlY3RpdmUgPSAocG9saWN5LmdldCgpLT4qcHJlZGljYXRl
KShzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pKQorICAgICAgICAgICAgcmV0dXJuIHZpb2xh
dGVkRGlyZWN0aXZlOwogICAgIH0KLSAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gbnVsbHB0
cjsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNl
Y3VyaXR5UG9saWN5RGlyZWN0aXZlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRl
bnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTgwYzcyZmQ0Y2FiOWM5
Y2MyYzUxOGU3ZTBkZDNhZTBmODAxNzhiMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZS5jcHAKQEAgLTAsMCAr
MSwzOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJDb250
ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmUuaCIKKworI2luY2x1ZGUgIkNvbnRlbnRTZWN1cml0
eVBvbGljeURpcmVjdGl2ZUxpc3QuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitib29sIENv
bnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZTo6aXNEZWZhdWx0U3JjKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gdGhpcyA9PSBtX2RpcmVjdGl2ZUxpc3QuZGVmYXVsdFNyYygpOworfQorCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9D
b250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmUuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3Nw
L0NvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZS5oCmluZGV4IDQ0YWExM2YwMWYwMzBiNzUx
MGZlZGU4NmEyMmM2OGM2ZmIyNDA5MGYuLjVlODI0Zjg3YzAwYjk4ZTFjYWRmNWRlZGMxYTA4N2Yw
MDM1MzA0MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1
cml0eVBvbGljeURpcmVjdGl2ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRl
bnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZS5oCkBAIC0zMSwyNiArMzEsMjggQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1jbGFzcyBDb250ZW50U2VjdXJpdHlQb2xpY3k7CitjbGFzcyBDb250
ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0OwogCiBjbGFzcyBDb250ZW50U2VjdXJpdHlQ
b2xpY3lEaXJlY3RpdmUgewogcHVibGljOgotICAgIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVj
dGl2ZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUsIGNvbnN0IENvbnRl
bnRTZWN1cml0eVBvbGljeSYgcG9saWN5KQorICAgIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVj
dGl2ZShjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0JiBkaXJlY3RpdmVM
aXN0LCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpCiAgICAgICAgIDog
bV9uYW1lKG5hbWUpCiAgICAgICAgICwgbV90ZXh0KG5hbWUgKyAnICcgKyB2YWx1ZSkKLSAgICAg
ICAgLCBtX3BvbGljeShwb2xpY3kpCisgICAgICAgICwgbV9kaXJlY3RpdmVMaXN0KGRpcmVjdGl2
ZUxpc3QpCiAgICAgewogICAgIH0KIAorICAgIGNvbnN0IFN0cmluZyYgbmFtZSgpIGNvbnN0IHsg
cmV0dXJuIG1fbmFtZTsgfQogICAgIGNvbnN0IFN0cmluZyYgdGV4dCgpIGNvbnN0IHsgcmV0dXJu
IG1fdGV4dDsgfQogCi1wcm90ZWN0ZWQ6Ci0gICAgY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5
JiBwb2xpY3koKSBjb25zdCB7IHJldHVybiBtX3BvbGljeTsgfQorICAgIGNvbnN0IENvbnRlbnRT
ZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3QmIGRpcmVjdGl2ZUxpc3QoKSBjb25zdCB7IHJldHVy
biBtX2RpcmVjdGl2ZUxpc3Q7IH0KKworICAgIGJvb2wgaXNEZWZhdWx0U3JjKCkgY29uc3Q7CiAK
IHByaXZhdGU6CiAgICAgU3RyaW5nIG1fbmFtZTsKICAgICBTdHJpbmcgbV90ZXh0OwotICAgIGNv
bnN0IENvbnRlbnRTZWN1cml0eVBvbGljeSYgbV9wb2xpY3k7CisgICAgY29uc3QgQ29udGVudFNl
Y3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdCYgbV9kaXJlY3RpdmVMaXN0OwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29u
dGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0LmNwcAppbmRleCA5NDU1M2Ux
ZmZhNzhjNDFjZTg2MjI4OGJjNGRmOGVhNWRmMzJiYmVjLi4wMDQ0ZTg3OWQ4MjRiYzBhZmQzZDFl
MzBkNWI3NjdlYmExM2U4MjhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9D
b250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0LmNwcApAQCAtMjcs
NzQgKzI3LDE1IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ29udGVudFNlY3Vy
aXR5UG9saWN5RGlyZWN0aXZlTGlzdC5oIgogCisjaW5jbHVkZSAiQ29udGVudFNlY3VyaXR5UG9s
aWN5RGlyZWN0aXZlTmFtZXMuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkZy
YW1lLmgiCiAjaW5jbHVkZSAiUGFyc2luZ1V0aWxpdGllcy5oIgogI2luY2x1ZGUgIlNlY3VyaXR5
Q29udGV4dC5oIgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgotI2luY2x1ZGUgPHd0
Zi9PcHRpb25hbC5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi0vLyBDU1AgMS4wIERpcmVjdGl2ZXMKLXN0YXRpYyBjb25zdCBj
aGFyIGNvbm5lY3RTcmNbXSA9ICJjb25uZWN0LXNyYyI7Ci1zdGF0aWMgY29uc3QgY2hhciBkZWZh
dWx0U3JjW10gPSAiZGVmYXVsdC1zcmMiOwotc3RhdGljIGNvbnN0IGNoYXIgZm9udFNyY1tdID0g
ImZvbnQtc3JjIjsKLXN0YXRpYyBjb25zdCBjaGFyIGZyYW1lU3JjW10gPSAiZnJhbWUtc3JjIjsK
LXN0YXRpYyBjb25zdCBjaGFyIGltZ1NyY1tdID0gImltZy1zcmMiOwotc3RhdGljIGNvbnN0IGNo
YXIgbWVkaWFTcmNbXSA9ICJtZWRpYS1zcmMiOwotc3RhdGljIGNvbnN0IGNoYXIgb2JqZWN0U3Jj
W10gPSAib2JqZWN0LXNyYyI7Ci1zdGF0aWMgY29uc3QgY2hhciByZXBvcnRVUklbXSA9ICJyZXBv
cnQtdXJpIjsKLXN0YXRpYyBjb25zdCBjaGFyIHNhbmRib3hbXSA9ICJzYW5kYm94IjsKLXN0YXRp
YyBjb25zdCBjaGFyIHNjcmlwdFNyY1tdID0gInNjcmlwdC1zcmMiOwotc3RhdGljIGNvbnN0IGNo
YXIgc3R5bGVTcmNbXSA9ICJzdHlsZS1zcmMiOwotCi0vLyBDU1AgMS4xIERpcmVjdGl2ZXMKLXN0
YXRpYyBjb25zdCBjaGFyIGJhc2VVUklbXSA9ICJiYXNlLXVyaSI7Ci1zdGF0aWMgY29uc3QgY2hh
ciBjaGlsZFNyY1tdID0gImNoaWxkLXNyYyI7Ci1zdGF0aWMgY29uc3QgY2hhciBmb3JtQWN0aW9u
W10gPSAiZm9ybS1hY3Rpb24iOwotc3RhdGljIGNvbnN0IGNoYXIgcGx1Z2luVHlwZXNbXSA9ICJw
bHVnaW4tdHlwZXMiOwotc3RhdGljIGNvbnN0IGNoYXIgZnJhbWVBbmNlc3RvcnNbXSA9ICJmcmFt
ZS1hbmNlc3RvcnMiOwotI2lmIEVOQUJMRShDU1BfTkVYVCkKLXN0YXRpYyBjb25zdCBjaGFyIHJl
ZmxlY3RlZFhTU1tdID0gInJlZmxlY3RlZC14c3MiOwotI2VuZGlmCi0KLSNpZiBFTkFCTEUoQ1NQ
X05FWFQpCi0KLXN0YXRpYyBpbmxpbmUgYm9vbCBpc0V4cGVyaW1lbnRhbERpcmVjdGl2ZU5hbWUo
Y29uc3QgU3RyaW5nJiBuYW1lKQotewotICAgIHJldHVybiBlcXVhbExldHRlcnNJZ25vcmluZ0FT
Q0lJQ2FzZShuYW1lLCByZWZsZWN0ZWRYU1MpOwotfQotCi0jZWxzZQotCi1zdGF0aWMgaW5saW5l
IGJvb2wgaXNFeHBlcmltZW50YWxEaXJlY3RpdmVOYW1lKGNvbnN0IFN0cmluZyYpCi17Ci0gICAg
cmV0dXJuIGZhbHNlOwotfQotCi0jZW5kaWYKLQotYm9vbCBpc0NTUERpcmVjdGl2ZU5hbWUoY29u
c3QgU3RyaW5nJiBuYW1lKQotewotICAgIHJldHVybiBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJ
Q2FzZShuYW1lLCBiYXNlVVJJKQotICAgICAgICB8fCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJ
Q2FzZShuYW1lLCBjb25uZWN0U3JjKQotICAgICAgICB8fCBlcXVhbExldHRlcnNJZ25vcmluZ0FT
Q0lJQ2FzZShuYW1lLCBkZWZhdWx0U3JjKQotICAgICAgICB8fCBlcXVhbExldHRlcnNJZ25vcmlu
Z0FTQ0lJQ2FzZShuYW1lLCBmb250U3JjKQotICAgICAgICB8fCBlcXVhbExldHRlcnNJZ25vcmlu
Z0FTQ0lJQ2FzZShuYW1lLCBmb3JtQWN0aW9uKQotICAgICAgICB8fCBlcXVhbExldHRlcnNJZ25v
cmluZ0FTQ0lJQ2FzZShuYW1lLCBmcmFtZVNyYykKLSAgICAgICAgfHwgZXF1YWxMZXR0ZXJzSWdu
b3JpbmdBU0NJSUNhc2UobmFtZSwgaW1nU3JjKQotICAgICAgICB8fCBlcXVhbExldHRlcnNJZ25v
cmluZ0FTQ0lJQ2FzZShuYW1lLCBtZWRpYVNyYykKLSAgICAgICAgfHwgZXF1YWxMZXR0ZXJzSWdu
b3JpbmdBU0NJSUNhc2UobmFtZSwgb2JqZWN0U3JjKQotICAgICAgICB8fCBlcXVhbExldHRlcnNJ
Z25vcmluZ0FTQ0lJQ2FzZShuYW1lLCBwbHVnaW5UeXBlcykKLSAgICAgICAgfHwgZXF1YWxMZXR0
ZXJzSWdub3JpbmdBU0NJSUNhc2UobmFtZSwgcmVwb3J0VVJJKQotICAgICAgICB8fCBlcXVhbExl
dHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShuYW1lLCBzYW5kYm94KQotICAgICAgICB8fCBlcXVhbExl
dHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShuYW1lLCBzY3JpcHRTcmMpCi0gICAgICAgIHx8IGVxdWFs
TGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG5hbWUsIHN0eWxlU3JjKQotICAgICAgICB8fCBpc0V4
cGVyaW1lbnRhbERpcmVjdGl2ZU5hbWUobmFtZSk7Ci19Ci0KIHN0YXRpYyBib29sIGlzRGlyZWN0
aXZlTmFtZUNoYXJhY3RlcihVQ2hhciBjKQogewogICAgIHJldHVybiBpc0FTQ0lJQWxwaGFudW1l
cmljKGMpIHx8IGMgPT0gJy0nOwpAQCAtMTgxLDI4OSArMTIyLDE3MiBAQCBzdGQ6OnVuaXF1ZV9w
dHI8Q29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdD4gQ29udGVudFNlY3VyaXR5UG9s
aWN5RGlyZWN0aQogICAgIHJldHVybiBkaXJlY3RpdmVzOwogfQogCi12b2lkIENvbnRlbnRTZWN1
cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OnJlcG9ydFZpb2xhdGlvbihjb25zdCBTdHJpbmcmIGRp
cmVjdGl2ZVRleHQsIGNvbnN0IFN0cmluZyYgZWZmZWN0aXZlRGlyZWN0aXZlLCBjb25zdCBTdHJp
bmcmIGNvbnNvbGVNZXNzYWdlLCBjb25zdCBVUkwmIGJsb2NrZWRVUkwsIGNvbnN0IFN0cmluZyYg
Y29udGV4dFVSTCwgY29uc3QgV1RGOjpPcmRpbmFsTnVtYmVyJiBjb250ZXh0TGluZSwgSlNDOjpF
eGVjU3RhdGUqIHN0YXRlKSBjb25zdAotewotICAgIFN0cmluZyBtZXNzYWdlID0gbV9yZXBvcnRP
bmx5ID8gIltSZXBvcnQgT25seV0gIiArIGNvbnNvbGVNZXNzYWdlIDogY29uc29sZU1lc3NhZ2U7
Ci0gICAgbV9wb2xpY3kucmVwb3J0VmlvbGF0aW9uKGRpcmVjdGl2ZVRleHQsIGVmZmVjdGl2ZURp
cmVjdGl2ZSwgbWVzc2FnZSwgYmxvY2tlZFVSTCwgbV9yZXBvcnRVUklzLCBtX2hlYWRlciwgY29u
dGV4dFVSTCwgY29udGV4dExpbmUsIHN0YXRlKTsKLX0KLQogQ29udGVudFNlY3VyaXR5UG9saWN5
U291cmNlTGlzdERpcmVjdGl2ZSogQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6
b3BlcmF0aXZlRGlyZWN0aXZlKENvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3REaXJlY3Rp
dmUqIGRpcmVjdGl2ZSkgY29uc3QKIHsKICAgICByZXR1cm4gZGlyZWN0aXZlID8gZGlyZWN0aXZl
IDogbV9kZWZhdWx0U3JjLmdldCgpOwogfQogCi1zdGF0aWMgU3RyaW5nIGNvbnNvbGVNZXNzYWdl
Rm9yVmlvbGF0aW9uKGNvbnN0IFN0cmluZyYgZWZmZWN0aXZlRGlyZWN0aXZlLCBjb25zdCBVUkwm
IGJsb2NrZWRVUkwsIGJvb2wgdmlvbGF0ZXNEZWZhdWx0U3JjLCBjb25zdCBjaGFyKiBwcmVmaXgs
IGNvbnN0IGNoYXIqIHN1YmplY3QgPSAiaXQiKQotewotICAgIFN0cmluZ0J1aWxkZXIgcmVzdWx0
OwotICAgIHJlc3VsdC5hcHBlbmQocHJlZml4KTsKLSAgICBpZiAoIWJsb2NrZWRVUkwuaXNFbXB0
eSgpKSB7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQoJyAnKTsKLSAgICAgICAgcmVzdWx0LmFwcGVu
ZChibG9ja2VkVVJMLnN0cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0aCgpKTsKLSAgICB9Ci0g
ICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoIiBiZWNhdXNlICIpOwotICAgIHJlc3VsdC5hcHBlbmQo
c3ViamVjdCk7Ci0gICAgaWYgKHZpb2xhdGVzRGVmYXVsdFNyYykgewotICAgICAgICByZXN1bHQu
YXBwZW5kTGl0ZXJhbCgiIGFwcGVhcnMgaW4gbmVpdGhlciB0aGUgIik7Ci0gICAgICAgIHJlc3Vs
dC5hcHBlbmQoZWZmZWN0aXZlRGlyZWN0aXZlKTsKLSAgICAgICAgcmVzdWx0LmFwcGVuZExpdGVy
YWwoIiBkaXJlY3RpdmUgbm9yIHRoZSBkZWZhdWx0LXNyYyBkaXJlY3RpdmUgb2YgdGhlIENvbnRl
bnQgU2VjdXJpdHkgUG9saWN5LiIpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIHJlc3VsdC5hcHBl
bmRMaXRlcmFsKCIgZG9lcyBub3QgYXBwZWFyIGluIHRoZSAiKTsKLSAgICAgICAgcmVzdWx0LmFw
cGVuZChlZmZlY3RpdmVEaXJlY3RpdmUpOwotICAgICAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgi
IGRpcmVjdGl2ZSBvZiB0aGUgQ29udGVudCBTZWN1cml0eSBQb2xpY3kuIik7Ci0gICAgfQotICAg
IHJldHVybiByZXN1bHQudG9TdHJpbmcoKTsKLX0KLQotYm9vbCBDb250ZW50U2VjdXJpdHlQb2xp
Y3lEaXJlY3RpdmVMaXN0OjphbGxvd0phdmFTY3JpcHRVUkxzKGNvbnN0IFN0cmluZyYgY29udGV4
dFVSTCwgY29uc3QgV1RGOjpPcmRpbmFsTnVtYmVyJiBjb250ZXh0TGluZSwgUmVwb3J0aW5nU3Rh
dHVzIHJlcG9ydGluZ1N0YXR1cykgY29uc3QKK2NvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeURp
cmVjdGl2ZSogQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6dmlvbGF0ZWREaXJl
Y3RpdmVGb3JVbnNhZmVFdmFsKCkgY29uc3QKIHsKICAgICBDb250ZW50U2VjdXJpdHlQb2xpY3lT
b3VyY2VMaXN0RGlyZWN0aXZlKiBvcGVyYXRpdmVEaXJlY3RpdmUgPSB0aGlzLT5vcGVyYXRpdmVE
aXJlY3RpdmUobV9zY3JpcHRTcmMuZ2V0KCkpOwotICAgIGlmIChjaGVja0lubGluZShvcGVyYXRp
dmVEaXJlY3RpdmUpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBpZiAocmVwb3J0aW5nU3Rh
dHVzID09IFJlcG9ydGluZ1N0YXR1czo6U2VuZFJlcG9ydCkgewotICAgICAgICBTdHJpbmcgY29u
c29sZU1lc3NhZ2UgPSBjb25zb2xlTWVzc2FnZUZvclZpb2xhdGlvbihzY3JpcHRTcmMsIFVSTCgp
LCBvcGVyYXRpdmVEaXJlY3RpdmUgPT0gbV9kZWZhdWx0U3JjLmdldCgpLCAiUmVmdXNlZCB0byBl
eGVjdXRlIGEgc2NyaXB0IiwgIml0cyBoYXNoLCBpdHMgbm9uY2UsIG9yICd1bnNhZmUtaW5saW5l
JyIpOwotICAgICAgICByZXBvcnRWaW9sYXRpb24ob3BlcmF0aXZlRGlyZWN0aXZlLT50ZXh0KCks
IHNjcmlwdFNyYywgY29uc29sZU1lc3NhZ2UsIFVSTCgpLCBjb250ZXh0VVJMLCBjb250ZXh0TGlu
ZSk7Ci0gICAgICAgIGlmICghbV9yZXBvcnRPbmx5KQotICAgICAgICAgICAgbV9wb2xpY3kucmVw
b3J0QmxvY2tlZFNjcmlwdEV4ZWN1dGlvblRvSW5zcGVjdG9yKG9wZXJhdGl2ZURpcmVjdGl2ZS0+
dGV4dCgpKTsKLSAgICB9Ci0gICAgcmV0dXJuIGRlbnlJZkVuZm9yY2luZ1BvbGljeSgpOworICAg
IGlmIChjaGVja0V2YWwob3BlcmF0aXZlRGlyZWN0aXZlKSkKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisgICAgcmV0dXJuIG9wZXJhdGl2ZURpcmVjdGl2ZTsKIH0KIAotYm9vbCBDb250ZW50U2Vj
dXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0OjphbGxvd0lubGluZUV2ZW50SGFuZGxlcnMoY29uc3Qg
U3RyaW5nJiBjb250ZXh0VVJMLCBjb25zdCBXVEY6Ok9yZGluYWxOdW1iZXImIGNvbnRleHRMaW5l
LCBSZXBvcnRpbmdTdGF0dXMgcmVwb3J0aW5nU3RhdHVzKSBjb25zdAorY29uc3QgQ29udGVudFNl
Y3VyaXR5UG9saWN5RGlyZWN0aXZlKiBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0
Ojp2aW9sYXRlZERpcmVjdGl2ZUZvclVuc2FmZUlubGluZVNjcmlwdCgpIGNvbnN0CiB7CiAgICAg
Q29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdERpcmVjdGl2ZSogb3BlcmF0aXZlRGlyZWN0
aXZlID0gdGhpcy0+b3BlcmF0aXZlRGlyZWN0aXZlKG1fc2NyaXB0U3JjLmdldCgpKTsKICAgICBp
ZiAoY2hlY2tJbmxpbmUob3BlcmF0aXZlRGlyZWN0aXZlKSkKLSAgICAgICAgcmV0dXJuIHRydWU7
Ci0gICAgaWYgKHJlcG9ydGluZ1N0YXR1cyA9PSBSZXBvcnRpbmdTdGF0dXM6OlNlbmRSZXBvcnQp
IHsKLSAgICAgICAgU3RyaW5nIGNvbnNvbGVNZXNzYWdlID0gY29uc29sZU1lc3NhZ2VGb3JWaW9s
YXRpb24oc2NyaXB0U3JjLCBVUkwoKSwgb3BlcmF0aXZlRGlyZWN0aXZlID09IG1fZGVmYXVsdFNy
Yy5nZXQoKSwgIlJlZnVzZWQgdG8gZXhlY3V0ZSBhIHNjcmlwdCIsICJpdHMgaGFzaCwgaXRzIG5v
bmNlLCBvciAndW5zYWZlLWlubGluZSciKTsKLSAgICAgICAgcmVwb3J0VmlvbGF0aW9uKG9wZXJh
dGl2ZURpcmVjdGl2ZS0+dGV4dCgpLCBzY3JpcHRTcmMsIGNvbnNvbGVNZXNzYWdlLCBVUkwoKSwg
Y29udGV4dFVSTCwgY29udGV4dExpbmUpOwotICAgICAgICBpZiAoIW1fcmVwb3J0T25seSkKLSAg
ICAgICAgICAgIG1fcG9saWN5LnJlcG9ydEJsb2NrZWRTY3JpcHRFeGVjdXRpb25Ub0luc3BlY3Rv
cihvcGVyYXRpdmVEaXJlY3RpdmUtPnRleHQoKSk7Ci0gICAgfQotICAgIHJldHVybiBkZW55SWZF
bmZvcmNpbmdQb2xpY3koKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIG9w
ZXJhdGl2ZURpcmVjdGl2ZTsKIH0KIAotYm9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3Rp
dmVMaXN0OjphbGxvd0lubGluZVNjcmlwdChjb25zdCBTdHJpbmcmIGNvbnRleHRVUkwsIGNvbnN0
IFdURjo6T3JkaW5hbE51bWJlciYgY29udGV4dExpbmUsIFJlcG9ydGluZ1N0YXR1cyByZXBvcnRp
bmdTdGF0dXMpIGNvbnN0Citjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmUqIENv
bnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OnZpb2xhdGVkRGlyZWN0aXZlRm9yVW5z
YWZlSW5saW5lU3R5bGUoKSBjb25zdAogewotICAgIENvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJj
ZUxpc3REaXJlY3RpdmUqIG9wZXJhdGl2ZURpcmVjdGl2ZSA9IHRoaXMtPm9wZXJhdGl2ZURpcmVj
dGl2ZShtX3NjcmlwdFNyYy5nZXQoKSk7CisgICAgQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNl
TGlzdERpcmVjdGl2ZSogb3BlcmF0aXZlRGlyZWN0aXZlID0gdGhpcy0+b3BlcmF0aXZlRGlyZWN0
aXZlKG1fc3R5bGVTcmMuZ2V0KCkpOwogICAgIGlmIChjaGVja0lubGluZShvcGVyYXRpdmVEaXJl
Y3RpdmUpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBpZiAocmVwb3J0aW5nU3RhdHVzID09
IFJlcG9ydGluZ1N0YXR1czo6U2VuZFJlcG9ydCkgewotICAgICAgICBTdHJpbmcgY29uc29sZU1l
c3NhZ2UgPSBjb25zb2xlTWVzc2FnZUZvclZpb2xhdGlvbihzY3JpcHRTcmMsIFVSTCgpLCBvcGVy
YXRpdmVEaXJlY3RpdmUgPT0gbV9kZWZhdWx0U3JjLmdldCgpLCAiUmVmdXNlZCB0byBleGVjdXRl
IGEgc2NyaXB0IiwgIml0cyBoYXNoLCBpdHMgbm9uY2UsIG9yICd1bnNhZmUtaW5saW5lJyIpOwot
ICAgICAgICByZXBvcnRWaW9sYXRpb24ob3BlcmF0aXZlRGlyZWN0aXZlLT50ZXh0KCksIHNjcmlw
dFNyYywgY29uc29sZU1lc3NhZ2UsIFVSTCgpLCBjb250ZXh0VVJMLCBjb250ZXh0TGluZSk7Ci0g
ICAgICAgIGlmICghbV9yZXBvcnRPbmx5KQotICAgICAgICAgICAgbV9wb2xpY3kucmVwb3J0Qmxv
Y2tlZFNjcmlwdEV4ZWN1dGlvblRvSW5zcGVjdG9yKG9wZXJhdGl2ZURpcmVjdGl2ZS0+dGV4dCgp
KTsKLSAgICB9Ci0gICAgcmV0dXJuIGRlbnlJZkVuZm9yY2luZ1BvbGljeSgpOworICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gb3BlcmF0aXZlRGlyZWN0aXZlOwogfQogCi1ib29s
IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OmFsbG93SW5saW5lU2NyaXB0V2l0
aEhhc2goY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5SGFzaCYgaGFzaCkgY29uc3QKK2NvbnN0
IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZSogQ29udGVudFNlY3VyaXR5UG9saWN5RGly
ZWN0aXZlTGlzdDo6dmlvbGF0ZWREaXJlY3RpdmVGb3JTY3JpcHRIYXNoKGNvbnN0IENvbnRlbnRT
ZWN1cml0eVBvbGljeUhhc2gmIGhhc2gpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGNoZWNrSGFzaChv
cGVyYXRpdmVEaXJlY3RpdmUobV9zY3JpcHRTcmMuZ2V0KCkpLCBoYXNoKTsKLX0KLQotYm9vbCBD
b250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0OjphbGxvd1NjcmlwdFdpdGhOb25jZShj
b25zdCBTdHJpbmcmIG5vbmNlKSBjb25zdAotewotICAgIHJldHVybiBjaGVja05vbmNlKG9wZXJh
dGl2ZURpcmVjdGl2ZShtX3NjcmlwdFNyYy5nZXQoKSksIG5vbmNlKTsKKyAgICBDb250ZW50U2Vj
dXJpdHlQb2xpY3lTb3VyY2VMaXN0RGlyZWN0aXZlKiBvcGVyYXRpdmVEaXJlY3RpdmUgPSB0aGlz
LT5vcGVyYXRpdmVEaXJlY3RpdmUobV9zY3JpcHRTcmMuZ2V0KCkpOworICAgIGlmIChjaGVja0hh
c2gob3BlcmF0aXZlRGlyZWN0aXZlLCBoYXNoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7Cisg
ICAgcmV0dXJuIG9wZXJhdGl2ZURpcmVjdGl2ZTsKIH0KIAotYm9vbCBDb250ZW50U2VjdXJpdHlQ
b2xpY3lEaXJlY3RpdmVMaXN0OjphbGxvd0lubGluZVN0eWxlKGNvbnN0IFN0cmluZyYgY29udGV4
dFVSTCwgY29uc3QgV1RGOjpPcmRpbmFsTnVtYmVyJiBjb250ZXh0TGluZSwgUmVwb3J0aW5nU3Rh
dHVzIHJlcG9ydGluZ1N0YXR1cykgY29uc3QKK2NvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeURp
cmVjdGl2ZSogQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6dmlvbGF0ZWREaXJl
Y3RpdmVGb3JTdHlsZUhhc2goY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5SGFzaCYgaGFzaCkg
Y29uc3QKIHsKICAgICBDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0RGlyZWN0aXZlKiBv
cGVyYXRpdmVEaXJlY3RpdmUgPSB0aGlzLT5vcGVyYXRpdmVEaXJlY3RpdmUobV9zdHlsZVNyYy5n
ZXQoKSk7Ci0gICAgaWYgKGNoZWNrSW5saW5lKG9wZXJhdGl2ZURpcmVjdGl2ZSkpCi0gICAgICAg
IHJldHVybiB0cnVlOwotICAgIGlmIChyZXBvcnRpbmdTdGF0dXMgPT0gUmVwb3J0aW5nU3RhdHVz
OjpTZW5kUmVwb3J0KSB7Ci0gICAgICAgIFN0cmluZyBjb25zb2xlTWVzc2FnZSA9IGNvbnNvbGVN
ZXNzYWdlRm9yVmlvbGF0aW9uKHN0eWxlU3JjLCBVUkwoKSwgb3BlcmF0aXZlRGlyZWN0aXZlID09
IG1fZGVmYXVsdFNyYy5nZXQoKSwgIlJlZnVzZWQgdG8gYXBwbHkgYSBzdHlsZXNoZWV0IiwgIml0
cyBoYXNoLCBpdHMgbm9uY2UsIG9yICd1bnNhZmUtaW5saW5lJyIpOwotICAgICAgICByZXBvcnRW
aW9sYXRpb24ob3BlcmF0aXZlRGlyZWN0aXZlLT50ZXh0KCksIHN0eWxlU3JjLCBjb25zb2xlTWVz
c2FnZSwgVVJMKCksIGNvbnRleHRVUkwsIGNvbnRleHRMaW5lKTsKLSAgICB9Ci0gICAgcmV0dXJu
IGRlbnlJZkVuZm9yY2luZ1BvbGljeSgpOworICAgIGlmIChjaGVja0hhc2gob3BlcmF0aXZlRGly
ZWN0aXZlLCBoYXNoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIG9wZXJh
dGl2ZURpcmVjdGl2ZTsKIH0KIAotYm9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVM
aXN0OjphbGxvd0lubGluZVN0eWxlV2l0aEhhc2goY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5
SGFzaCYgaGFzaCkgY29uc3QKK2NvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZSog
Q29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6dmlvbGF0ZWREaXJlY3RpdmVGb3JT
Y3JpcHROb25jZShjb25zdCBTdHJpbmcmIG5vbmNlKSBjb25zdAogewotICAgIHJldHVybiBjaGVj
a0hhc2gob3BlcmF0aXZlRGlyZWN0aXZlKG1fc3R5bGVTcmMuZ2V0KCkpLCBoYXNoKTsKKyAgICBD
b250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0RGlyZWN0aXZlKiBvcGVyYXRpdmVEaXJlY3Rp
dmUgPSB0aGlzLT5vcGVyYXRpdmVEaXJlY3RpdmUobV9zY3JpcHRTcmMuZ2V0KCkpOworICAgIGlm
IChjaGVja05vbmNlKG9wZXJhdGl2ZURpcmVjdGl2ZSwgbm9uY2UpKQorICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICByZXR1cm4gb3BlcmF0aXZlRGlyZWN0aXZlOwogfQogCi1ib29sIENvbnRl
bnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OmFsbG93U3R5bGVXaXRoTm9uY2UoY29uc3Qg
U3RyaW5nJiBub25jZSkgY29uc3QKK2NvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2
ZSogQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6dmlvbGF0ZWREaXJlY3RpdmVG
b3JTdHlsZU5vbmNlKGNvbnN0IFN0cmluZyYgbm9uY2UpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGNo
ZWNrTm9uY2Uob3BlcmF0aXZlRGlyZWN0aXZlKG1fc3R5bGVTcmMuZ2V0KCkpLCBub25jZSk7Cisg
ICAgQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdERpcmVjdGl2ZSogb3BlcmF0aXZlRGly
ZWN0aXZlID0gdGhpcy0+b3BlcmF0aXZlRGlyZWN0aXZlKG1fc3R5bGVTcmMuZ2V0KCkpOworICAg
IGlmIChjaGVja05vbmNlKG9wZXJhdGl2ZURpcmVjdGl2ZSwgbm9uY2UpKQorICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gb3BlcmF0aXZlRGlyZWN0aXZlOwogfQogCi1ib29sIENv
bnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OmFsbG93RXZhbChKU0M6OkV4ZWNTdGF0
ZSogc3RhdGUsIFJlcG9ydGluZ1N0YXR1cyByZXBvcnRpbmdTdGF0dXMpIGNvbnN0Citjb25zdCBD
b250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmUqIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVj
dGl2ZUxpc3Q6OnZpb2xhdGVkRGlyZWN0aXZlRm9yQmFzZVVSSShjb25zdCBVUkwmIHVybCkgY29u
c3QKIHsKLSAgICBDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0RGlyZWN0aXZlKiBvcGVy
YXRpdmVEaXJlY3RpdmUgPSB0aGlzLT5vcGVyYXRpdmVEaXJlY3RpdmUobV9zY3JpcHRTcmMuZ2V0
KCkpOwotICAgIGlmIChjaGVja0V2YWwob3BlcmF0aXZlRGlyZWN0aXZlKSkKLSAgICAgICAgcmV0
dXJuIHRydWU7Ci0gICAgaWYgKHJlcG9ydGluZ1N0YXR1cyA9PSBSZXBvcnRpbmdTdGF0dXM6OlNl
bmRSZXBvcnQpIHsKLSAgICAgICAgU3RyaW5nIGNvbnNvbGVNZXNzYWdlID0gY29uc29sZU1lc3Nh
Z2VGb3JWaW9sYXRpb24oc2NyaXB0U3JjLCBVUkwoKSwgb3BlcmF0aXZlRGlyZWN0aXZlID09IG1f
ZGVmYXVsdFNyYy5nZXQoKSwgIlJlZnVzZWQgdG8gZXhlY3V0ZSBhIHNjcmlwdCIsICIndW5zYWZl
LWV2YWwnIik7Ci0gICAgICAgIC8vIEZJWE1FOiBRdWVyeSBKU0M6OkV4ZWNTdGF0ZSBmb3Igc291
cmNlIGZpbGUsIGxpbmUgYW5kIGNvbHVtbiBpbmZvcm1hdGlvbi4KLSAgICAgICAgcmVwb3J0Vmlv
bGF0aW9uKG9wZXJhdGl2ZURpcmVjdGl2ZS0+dGV4dCgpLCBzY3JpcHRTcmMsIGNvbnNvbGVNZXNz
YWdlLCBVUkwoKSwgU3RyaW5nKCksIFdURjo6T3JkaW5hbE51bWJlcjo6YmVmb3JlRmlyc3QoKSwg
c3RhdGUpOwotICAgICAgICBpZiAoIW1fcmVwb3J0T25seSkKLSAgICAgICAgICAgIG1fcG9saWN5
LnJlcG9ydEJsb2NrZWRTY3JpcHRFeGVjdXRpb25Ub0luc3BlY3RvcihvcGVyYXRpdmVEaXJlY3Rp
dmUtPnRleHQoKSk7Ci0gICAgfQotICAgIHJldHVybiBkZW55SWZFbmZvcmNpbmdQb2xpY3koKTsK
KyAgICBpZiAoY2hlY2tTb3VyY2UobV9iYXNlVVJJLmdldCgpLCB1cmwpKQorICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gbV9iYXNlVVJJLmdldCgpOwogfQogCi1ib29sIENvbnRl
bnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OmFsbG93UGx1Z2luVHlwZShjb25zdCBTdHJp
bmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgdHlwZUF0dHJpYnV0ZSwgY29uc3QgVVJMJiB1cmwsIFJl
cG9ydGluZ1N0YXR1cyByZXBvcnRpbmdTdGF0dXMpIGNvbnN0Citjb25zdCBDb250ZW50U2VjdXJp
dHlQb2xpY3lEaXJlY3RpdmUqIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OnZp
b2xhdGVkRGlyZWN0aXZlRm9yQ2hpbGRDb250ZXh0KGNvbnN0IFVSTCYgdXJsKSBjb25zdAogewot
ICAgIGlmIChjaGVja01lZGlhVHlwZShtX3BsdWdpblR5cGVzLmdldCgpLCB0eXBlLCB0eXBlQXR0
cmlidXRlKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgaWYgKHJlcG9ydGluZ1N0YXR1cyA9
PSBSZXBvcnRpbmdTdGF0dXM6OlNlbmRSZXBvcnQpIHsKLSAgICAgICAgYm9vbCB2aW9sYXRlc0Rl
ZmF1bHRTcmMgPSBmYWxzZTsKLSAgICAgICAgU3RyaW5nIGNvbnNvbGVNZXNzYWdlID0gY29uc29s
ZU1lc3NhZ2VGb3JWaW9sYXRpb24ocGx1Z2luVHlwZXMsIHVybCwgdmlvbGF0ZXNEZWZhdWx0U3Jj
LCAiUmVmdXNlZCB0byBsb2FkIiwgIml0cyBNSU1FIHR5cGUiKTsKLSAgICAgICAgcmVwb3J0Vmlv
bGF0aW9uKG1fcGx1Z2luVHlwZXMtPnRleHQoKSwgcGx1Z2luVHlwZXMsIGNvbnNvbGVNZXNzYWdl
LCB1cmwpOwotICAgIH0KLSAgICByZXR1cm4gZGVueUlmRW5mb3JjaW5nUG9saWN5KCk7CisgICAg
Q29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdERpcmVjdGl2ZSogb3BlcmF0aXZlRGlyZWN0
aXZlID0gdGhpcy0+b3BlcmF0aXZlRGlyZWN0aXZlKG1fY2hpbGRTcmMuZ2V0KCkpOworICAgIGlm
IChjaGVja1NvdXJjZShvcGVyYXRpdmVEaXJlY3RpdmUsIHVybCkpCisgICAgICAgIHJldHVybiBu
dWxscHRyOworICAgIHJldHVybiBvcGVyYXRpdmVEaXJlY3RpdmU7CiB9CiAKLWJvb2wgQ29udGVu
dFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6YWxsb3dTY3JpcHRGcm9tU291cmNlKGNvbnN0
IFVSTCYgdXJsLCBSZXBvcnRpbmdTdGF0dXMgcmVwb3J0aW5nU3RhdHVzKSBjb25zdAorY29uc3Qg
Q29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlKiBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJl
Y3RpdmVMaXN0Ojp2aW9sYXRlZERpcmVjdGl2ZUZvckNvbm5lY3RTb3VyY2UoY29uc3QgVVJMJiB1
cmwpIGNvbnN0CiB7Ci0gICAgQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdERpcmVjdGl2
ZSogb3BlcmF0aXZlRGlyZWN0aXZlID0gdGhpcy0+b3BlcmF0aXZlRGlyZWN0aXZlKG1fc2NyaXB0
U3JjLmdldCgpKTsKKyAgICBDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0RGlyZWN0aXZl
KiBvcGVyYXRpdmVEaXJlY3RpdmUgPSB0aGlzLT5vcGVyYXRpdmVEaXJlY3RpdmUobV9jb25uZWN0
U3JjLmdldCgpKTsKICAgICBpZiAoY2hlY2tTb3VyY2Uob3BlcmF0aXZlRGlyZWN0aXZlLCB1cmwp
KQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBpZiAocmVwb3J0aW5nU3RhdHVzID09IFJlcG9y
dGluZ1N0YXR1czo6U2VuZFJlcG9ydCkgewotICAgICAgICBTdHJpbmcgY29uc29sZU1lc3NhZ2Ug
PSBjb25zb2xlTWVzc2FnZUZvclZpb2xhdGlvbihzY3JpcHRTcmMsIHVybCwgb3BlcmF0aXZlRGly
ZWN0aXZlID09IG1fZGVmYXVsdFNyYy5nZXQoKSwgIlJlZnVzZWQgdG8gbG9hZCIpOwotICAgICAg
ICByZXBvcnRWaW9sYXRpb24ob3BlcmF0aXZlRGlyZWN0aXZlLT50ZXh0KCksIHNjcmlwdFNyYywg
Y29uc29sZU1lc3NhZ2UsIHVybCk7Ci0gICAgfQotICAgIHJldHVybiBkZW55SWZFbmZvcmNpbmdQ
b2xpY3koKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIG9wZXJhdGl2ZURp
cmVjdGl2ZTsKIH0KIAotYm9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0Ojph
bGxvd09iamVjdEZyb21Tb3VyY2UoY29uc3QgVVJMJiB1cmwsIFJlcG9ydGluZ1N0YXR1cyByZXBv
cnRpbmdTdGF0dXMpIGNvbnN0Citjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmUq
IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OnZpb2xhdGVkRGlyZWN0aXZlRm9y
Rm9udChjb25zdCBVUkwmIHVybCkgY29uc3QKIHsKLSAgICBpZiAodXJsLmlzQmxhbmtVUkwoKSkK
LSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlz
dERpcmVjdGl2ZSogb3BlcmF0aXZlRGlyZWN0aXZlID0gdGhpcy0+b3BlcmF0aXZlRGlyZWN0aXZl
KG1fb2JqZWN0U3JjLmdldCgpKTsKKyAgICBDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0
RGlyZWN0aXZlKiBvcGVyYXRpdmVEaXJlY3RpdmUgPSB0aGlzLT5vcGVyYXRpdmVEaXJlY3RpdmUo
bV9mb250U3JjLmdldCgpKTsKICAgICBpZiAoY2hlY2tTb3VyY2Uob3BlcmF0aXZlRGlyZWN0aXZl
LCB1cmwpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBpZiAocmVwb3J0aW5nU3RhdHVzID09
IFJlcG9ydGluZ1N0YXR1czo6U2VuZFJlcG9ydCkgewotICAgICAgICBTdHJpbmcgY29uc29sZU1l
c3NhZ2UgPSBjb25zb2xlTWVzc2FnZUZvclZpb2xhdGlvbihvYmplY3RTcmMsIHVybCwgb3BlcmF0
aXZlRGlyZWN0aXZlID09IG1fZGVmYXVsdFNyYy5nZXQoKSwgIlJlZnVzZWQgdG8gbG9hZCIpOwot
ICAgICAgICByZXBvcnRWaW9sYXRpb24ob3BlcmF0aXZlRGlyZWN0aXZlLT50ZXh0KCksIG9iamVj
dFNyYywgY29uc29sZU1lc3NhZ2UsIHVybCk7Ci0gICAgfQotICAgIHJldHVybiBkZW55SWZFbmZv
cmNpbmdQb2xpY3koKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIG9wZXJh
dGl2ZURpcmVjdGl2ZTsKIH0KIAotYm9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVM
aXN0OjphbGxvd0NoaWxkQ29udGV4dEZyb21Tb3VyY2UoY29uc3QgVVJMJiB1cmwsIFJlcG9ydGlu
Z1N0YXR1cyByZXBvcnRpbmdTdGF0dXMpIGNvbnN0Citjb25zdCBDb250ZW50U2VjdXJpdHlQb2xp
Y3lEaXJlY3RpdmUqIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OnZpb2xhdGVk
RGlyZWN0aXZlRm9yRm9ybUFjdGlvbihjb25zdCBVUkwmIHVybCkgY29uc3QKIHsKLSAgICBDb250
ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0RGlyZWN0aXZlKiBvcGVyYXRpdmVEaXJlY3RpdmUg
PSB0aGlzLT5vcGVyYXRpdmVEaXJlY3RpdmUobV9jaGlsZFNyYy5nZXQoKSk7Ci0gICAgaWYgKGNo
ZWNrU291cmNlKG9wZXJhdGl2ZURpcmVjdGl2ZSwgdXJsKSkKLSAgICAgICAgcmV0dXJuIHRydWU7
Ci0gICAgaWYgKHJlcG9ydGluZ1N0YXR1cyA9PSBSZXBvcnRpbmdTdGF0dXM6OlNlbmRSZXBvcnQp
IHsKLSAgICAgICAgU3RyaW5nIGNvbnNvbGVNZXNzYWdlID0gY29uc29sZU1lc3NhZ2VGb3JWaW9s
YXRpb24oY2hpbGRTcmMsIHVybCwgb3BlcmF0aXZlRGlyZWN0aXZlID09IG1fZGVmYXVsdFNyYy5n
ZXQoKSwgIlJlZnVzZWQgdG8gbG9hZCIpOwotICAgICAgICByZXBvcnRWaW9sYXRpb24ob3BlcmF0
aXZlRGlyZWN0aXZlLT50ZXh0KCksIGNoaWxkU3JjLCBjb25zb2xlTWVzc2FnZSwgdXJsKTsKLSAg
ICB9Ci0gICAgcmV0dXJuIGRlbnlJZkVuZm9yY2luZ1BvbGljeSgpOworICAgIGlmIChjaGVja1Nv
dXJjZShtX2Zvcm1BY3Rpb24uZ2V0KCksIHVybCkpCisgICAgICAgIHJldHVybiBudWxscHRyOwor
ICAgIHJldHVybiBtX2Zvcm1BY3Rpb24uZ2V0KCk7CiB9CiAKLWJvb2wgQ29udGVudFNlY3VyaXR5
UG9saWN5RGlyZWN0aXZlTGlzdDo6YWxsb3dDaGlsZEZyYW1lRnJvbVNvdXJjZShjb25zdCBVUkwm
IHVybCwgUmVwb3J0aW5nU3RhdHVzIHJlcG9ydGluZ1N0YXR1cykgY29uc3QKK2NvbnN0IENvbnRl
bnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZSogQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZl
TGlzdDo6dmlvbGF0ZWREaXJlY3RpdmVGb3JGcmFtZShjb25zdCBVUkwmIHVybCkgY29uc3QKIHsK
ICAgICBpZiAodXJsLmlzQmxhbmtVUkwoKSkKLSAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAg
IHJldHVybiBudWxscHRyOwogCiAgICAgLy8gV2UgbXVzdCBlbmZvcmNlIHRoZSBmcmFtZS1zcmMg
ZGlyZWN0aXZlIChpZiBzcGVjaWZpZWQpIGJlZm9yZSBlbmZvcmNpbmcgdGhlIGNoaWxkLXNyYyBk
aXJlY3RpdmUgZm9yIGEgbmVzdGVkIGJyb3dzaW5nCiAgICAgLy8gY29udGV4dCBieSA8aHR0cHM6
Ly93M2MuZ2l0aHViLmlvL3dlYmFwcHNlYy1jc3AvMi8jZGlyZWN0aXZlLWNoaWxkLXNyYy1uZXN0
ZWQ+ICgyOSBBdWd1c3QgMjAxNSkuCiAgICAgQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlz
dERpcmVjdGl2ZSogb3BlcmF0aXZlRGlyZWN0aXZlID0gdGhpcy0+b3BlcmF0aXZlRGlyZWN0aXZl
KG1fZnJhbWVTcmMgPyBtX2ZyYW1lU3JjLmdldCgpIDogbV9jaGlsZFNyYy5nZXQoKSk7CiAgICAg
aWYgKGNoZWNrU291cmNlKG9wZXJhdGl2ZURpcmVjdGl2ZSwgdXJsKSkKLSAgICAgICAgcmV0dXJu
IHRydWU7Ci0gICAgaWYgKHJlcG9ydGluZ1N0YXR1cyA9PSBSZXBvcnRpbmdTdGF0dXM6OlNlbmRS
ZXBvcnQpIHsKLSAgICAgICAgU3RyaW5nIGNvbnNvbGVNZXNzYWdlID0gY29uc29sZU1lc3NhZ2VG
b3JWaW9sYXRpb24oZnJhbWVTcmMsIHVybCwgb3BlcmF0aXZlRGlyZWN0aXZlID09IG1fZGVmYXVs
dFNyYy5nZXQoKSwgIlJlZnVzZWQgdG8gbG9hZCIpOwotICAgICAgICByZXBvcnRWaW9sYXRpb24o
b3BlcmF0aXZlRGlyZWN0aXZlLT50ZXh0KCksIGZyYW1lU3JjLCBjb25zb2xlTWVzc2FnZSwgdXJs
KTsKLSAgICB9Ci0gICAgcmV0dXJuIGRlbnlJZkVuZm9yY2luZ1BvbGljeSgpOworICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gb3BlcmF0aXZlRGlyZWN0aXZlOwogfQogCi1ib29s
IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OmFsbG93SW1hZ2VGcm9tU291cmNl
KGNvbnN0IFVSTCYgdXJsLCBSZXBvcnRpbmdTdGF0dXMgcmVwb3J0aW5nU3RhdHVzKSBjb25zdAor
Y29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlKiBDb250ZW50U2VjdXJpdHlQb2xp
Y3lEaXJlY3RpdmVMaXN0Ojp2aW9sYXRlZERpcmVjdGl2ZUZvckZyYW1lQW5jZXN0b3IoY29uc3Qg
RnJhbWUmIGZyYW1lKSBjb25zdAogewotICAgIENvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxp
c3REaXJlY3RpdmUqIG9wZXJhdGl2ZURpcmVjdGl2ZSA9IHRoaXMtPm9wZXJhdGl2ZURpcmVjdGl2
ZShtX2ltZ1NyYy5nZXQoKSk7Ci0gICAgaWYgKGNoZWNrU291cmNlKG9wZXJhdGl2ZURpcmVjdGl2
ZSwgdXJsKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgaWYgKHJlcG9ydGluZ1N0YXR1cyA9
PSBSZXBvcnRpbmdTdGF0dXM6OlNlbmRSZXBvcnQpIHsKLSAgICAgICAgU3RyaW5nIGNvbnNvbGVN
ZXNzYWdlID0gY29uc29sZU1lc3NhZ2VGb3JWaW9sYXRpb24oaW1nU3JjLCB1cmwsIG9wZXJhdGl2
ZURpcmVjdGl2ZSA9PSBtX2RlZmF1bHRTcmMuZ2V0KCksICJSZWZ1c2VkIHRvIGxvYWQiKTsKLSAg
ICAgICAgcmVwb3J0VmlvbGF0aW9uKG9wZXJhdGl2ZURpcmVjdGl2ZS0+dGV4dCgpLCBpbWdTcmMs
IGNvbnNvbGVNZXNzYWdlLCB1cmwpOwotICAgIH0KLSAgICByZXR1cm4gZGVueUlmRW5mb3JjaW5n
UG9saWN5KCk7Ci19Ci0KLWJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6
YWxsb3dTdHlsZUZyb21Tb3VyY2UoY29uc3QgVVJMJiB1cmwsIFJlcG9ydGluZ1N0YXR1cyByZXBv
cnRpbmdTdGF0dXMpIGNvbnN0Ci17Ci0gICAgQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlz
dERpcmVjdGl2ZSogb3BlcmF0aXZlRGlyZWN0aXZlID0gdGhpcy0+b3BlcmF0aXZlRGlyZWN0aXZl
KG1fc3R5bGVTcmMuZ2V0KCkpOwotICAgIGlmIChjaGVja1NvdXJjZShvcGVyYXRpdmVEaXJlY3Rp
dmUsIHVybCkpCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIGlmIChyZXBvcnRpbmdTdGF0dXMg
PT0gUmVwb3J0aW5nU3RhdHVzOjpTZW5kUmVwb3J0KSB7Ci0gICAgICAgIFN0cmluZyBjb25zb2xl
TWVzc2FnZSA9IGNvbnNvbGVNZXNzYWdlRm9yVmlvbGF0aW9uKHN0eWxlU3JjLCB1cmwsIG9wZXJh
dGl2ZURpcmVjdGl2ZSA9PSBtX2RlZmF1bHRTcmMuZ2V0KCksICJSZWZ1c2VkIHRvIGxvYWQiKTsK
LSAgICAgICAgcmVwb3J0VmlvbGF0aW9uKG9wZXJhdGl2ZURpcmVjdGl2ZS0+dGV4dCgpLCBzdHls
ZVNyYywgY29uc29sZU1lc3NhZ2UsIHVybCk7Ci0gICAgfQotICAgIHJldHVybiBkZW55SWZFbmZv
cmNpbmdQb2xpY3koKTsKKyAgICBpZiAoY2hlY2tGcmFtZUFuY2VzdG9ycyhtX2ZyYW1lQW5jZXN0
b3JzLmdldCgpLCBmcmFtZSkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBt
X2ZyYW1lQW5jZXN0b3JzLmdldCgpOwogfQogCi1ib29sIENvbnRlbnRTZWN1cml0eVBvbGljeURp
cmVjdGl2ZUxpc3Q6OmFsbG93Rm9udEZyb21Tb3VyY2UoY29uc3QgVVJMJiB1cmwsIFJlcG9ydGlu
Z1N0YXR1cyByZXBvcnRpbmdTdGF0dXMpIGNvbnN0Citjb25zdCBDb250ZW50U2VjdXJpdHlQb2xp
Y3lEaXJlY3RpdmUqIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OnZpb2xhdGVk
RGlyZWN0aXZlRm9ySW1hZ2UoY29uc3QgVVJMJiB1cmwpIGNvbnN0CiB7Ci0gICAgQ29udGVudFNl
Y3VyaXR5UG9saWN5U291cmNlTGlzdERpcmVjdGl2ZSogb3BlcmF0aXZlRGlyZWN0aXZlID0gdGhp
cy0+b3BlcmF0aXZlRGlyZWN0aXZlKG1fZm9udFNyYy5nZXQoKSk7CisgICAgQ29udGVudFNlY3Vy
aXR5UG9saWN5U291cmNlTGlzdERpcmVjdGl2ZSogb3BlcmF0aXZlRGlyZWN0aXZlID0gdGhpcy0+
b3BlcmF0aXZlRGlyZWN0aXZlKG1faW1nU3JjLmdldCgpKTsKICAgICBpZiAoY2hlY2tTb3VyY2Uo
b3BlcmF0aXZlRGlyZWN0aXZlLCB1cmwpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBpZiAo
cmVwb3J0aW5nU3RhdHVzID09IFJlcG9ydGluZ1N0YXR1czo6U2VuZFJlcG9ydCkgewotICAgICAg
ICBTdHJpbmcgY29uc29sZU1lc3NhZ2UgPSBjb25zb2xlTWVzc2FnZUZvclZpb2xhdGlvbihmb250
U3JjLCB1cmwsIG9wZXJhdGl2ZURpcmVjdGl2ZSA9PSBtX2RlZmF1bHRTcmMuZ2V0KCksICJSZWZ1
c2VkIHRvIGxvYWQiKTsKLSAgICAgICAgcmVwb3J0VmlvbGF0aW9uKG9wZXJhdGl2ZURpcmVjdGl2
ZS0+dGV4dCgpLCBmb250U3JjLCBjb25zb2xlTWVzc2FnZSwgdXJsKTsKLSAgICB9Ci0gICAgcmV0
dXJuIGRlbnlJZkVuZm9yY2luZ1BvbGljeSgpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICByZXR1cm4gb3BlcmF0aXZlRGlyZWN0aXZlOwogfQogCi1ib29sIENvbnRlbnRTZWN1cml0eVBv
bGljeURpcmVjdGl2ZUxpc3Q6OmFsbG93TWVkaWFGcm9tU291cmNlKGNvbnN0IFVSTCYgdXJsLCBS
ZXBvcnRpbmdTdGF0dXMgcmVwb3J0aW5nU3RhdHVzKSBjb25zdAorY29uc3QgQ29udGVudFNlY3Vy
aXR5UG9saWN5RGlyZWN0aXZlKiBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0Ojp2
aW9sYXRlZERpcmVjdGl2ZUZvck1lZGlhKGNvbnN0IFVSTCYgdXJsKSBjb25zdAogewogICAgIENv
bnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3REaXJlY3RpdmUqIG9wZXJhdGl2ZURpcmVjdGl2
ZSA9IHRoaXMtPm9wZXJhdGl2ZURpcmVjdGl2ZShtX21lZGlhU3JjLmdldCgpKTsKICAgICBpZiAo
Y2hlY2tTb3VyY2Uob3BlcmF0aXZlRGlyZWN0aXZlLCB1cmwpKQotICAgICAgICByZXR1cm4gdHJ1
ZTsKLSAgICBpZiAocmVwb3J0aW5nU3RhdHVzID09IFJlcG9ydGluZ1N0YXR1czo6U2VuZFJlcG9y
dCkgewotICAgICAgICBTdHJpbmcgY29uc29sZU1lc3NhZ2UgPSBjb25zb2xlTWVzc2FnZUZvclZp
b2xhdGlvbihtZWRpYVNyYywgdXJsLCBvcGVyYXRpdmVEaXJlY3RpdmUgPT0gbV9kZWZhdWx0U3Jj
LmdldCgpLCAiUmVmdXNlZCB0byBsb2FkIik7Ci0gICAgICAgIHJlcG9ydFZpb2xhdGlvbihvcGVy
YXRpdmVEaXJlY3RpdmUtPnRleHQoKSwgbWVkaWFTcmMsIGNvbnNvbGVNZXNzYWdlLCB1cmwpOwot
ICAgIH0KLSAgICByZXR1cm4gZGVueUlmRW5mb3JjaW5nUG9saWN5KCk7CisgICAgICAgIHJldHVy
biBudWxscHRyOworICAgIHJldHVybiBvcGVyYXRpdmVEaXJlY3RpdmU7CiB9CiAKLWJvb2wgQ29u
dGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6YWxsb3dDb25uZWN0VG9Tb3VyY2UoY29u
c3QgVVJMJiB1cmwsIFJlcG9ydGluZ1N0YXR1cyByZXBvcnRpbmdTdGF0dXMpIGNvbnN0Citjb25z
dCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmUqIENvbnRlbnRTZWN1cml0eVBvbGljeURp
cmVjdGl2ZUxpc3Q6OnZpb2xhdGVkRGlyZWN0aXZlRm9yT2JqZWN0U291cmNlKGNvbnN0IFVSTCYg
dXJsKSBjb25zdAogewotICAgIENvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3REaXJlY3Rp
dmUqIG9wZXJhdGl2ZURpcmVjdGl2ZSA9IHRoaXMtPm9wZXJhdGl2ZURpcmVjdGl2ZShtX2Nvbm5l
Y3RTcmMuZ2V0KCkpOworICAgIGlmICh1cmwuaXNCbGFua1VSTCgpKQorICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICBDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0RGlyZWN0aXZlKiBv
cGVyYXRpdmVEaXJlY3RpdmUgPSB0aGlzLT5vcGVyYXRpdmVEaXJlY3RpdmUobV9vYmplY3RTcmMu
Z2V0KCkpOwogICAgIGlmIChjaGVja1NvdXJjZShvcGVyYXRpdmVEaXJlY3RpdmUsIHVybCkpCi0g
ICAgICAgIHJldHVybiB0cnVlOwotICAgIGlmIChyZXBvcnRpbmdTdGF0dXMgPT0gUmVwb3J0aW5n
U3RhdHVzOjpTZW5kUmVwb3J0KSB7Ci0gICAgICAgIFN0cmluZyBjb25zb2xlTWVzc2FnZSA9IGNv
bnNvbGVNZXNzYWdlRm9yVmlvbGF0aW9uKGNvbm5lY3RTcmMsIHVybCwgb3BlcmF0aXZlRGlyZWN0
aXZlID09IG1fZGVmYXVsdFNyYy5nZXQoKSwgIlJlZnVzZWQgdG8gY29ubmVjdCB0byIpOwotICAg
ICAgICByZXBvcnRWaW9sYXRpb24ob3BlcmF0aXZlRGlyZWN0aXZlLT50ZXh0KCksIGNvbm5lY3RT
cmMsIGNvbnNvbGVNZXNzYWdlLCB1cmwpOwotICAgIH0KLSAgICByZXR1cm4gZGVueUlmRW5mb3Jj
aW5nUG9saWN5KCk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBvcGVyYXRp
dmVEaXJlY3RpdmU7CiB9CiAKLWJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlz
dDo6YWxsb3dGb3JtQWN0aW9uKGNvbnN0IFVSTCYgdXJsLCBSZXBvcnRpbmdTdGF0dXMgcmVwb3J0
aW5nU3RhdHVzKSBjb25zdAorY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlKiBD
b250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0Ojp2aW9sYXRlZERpcmVjdGl2ZUZvclBs
dWdpblR5cGUoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIHR5cGVBdHRyaWJ1dGUp
IGNvbnN0CiB7Ci0gICAgaWYgKGNoZWNrU291cmNlKG1fZm9ybUFjdGlvbi5nZXQoKSwgdXJsKSkK
LSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgaWYgKHJlcG9ydGluZ1N0YXR1cyA9PSBSZXBvcnRp
bmdTdGF0dXM6OlNlbmRSZXBvcnQpIHsKLSAgICAgICAgYm9vbCB2aW9sYXRlc0RlZmF1bHRTcmMg
PSBmYWxzZTsKLSAgICAgICAgU3RyaW5nIGNvbnNvbGVNZXNzYWdlID0gY29uc29sZU1lc3NhZ2VG
b3JWaW9sYXRpb24oZm9ybUFjdGlvbiwgdXJsLCB2aW9sYXRlc0RlZmF1bHRTcmMsICJSZWZ1c2Vk
IHRvIGxvYWQiKTsKLSAgICAgICAgcmVwb3J0VmlvbGF0aW9uKG1fZm9ybUFjdGlvbi0+dGV4dCgp
LCBmb3JtQWN0aW9uLCBjb25zb2xlTWVzc2FnZSwgdXJsKTsKLSAgICB9Ci0gICAgcmV0dXJuIGRl
bnlJZkVuZm9yY2luZ1BvbGljeSgpOworICAgIGlmIChjaGVja01lZGlhVHlwZShtX3BsdWdpblR5
cGVzLmdldCgpLCB0eXBlLCB0eXBlQXR0cmlidXRlKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisgICAgcmV0dXJuIG1fcGx1Z2luVHlwZXMuZ2V0KCk7CiB9CiAKLWJvb2wgQ29udGVudFNlY3Vy
aXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6YWxsb3dCYXNlVVJJKGNvbnN0IFVSTCYgdXJsLCBSZXBv
cnRpbmdTdGF0dXMgcmVwb3J0aW5nU3RhdHVzKSBjb25zdAorY29uc3QgQ29udGVudFNlY3VyaXR5
UG9saWN5RGlyZWN0aXZlKiBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0Ojp2aW9s
YXRlZERpcmVjdGl2ZUZvclNjcmlwdChjb25zdCBVUkwmIHVybCkgY29uc3QKIHsKLSAgICBpZiAo
Y2hlY2tTb3VyY2UobV9iYXNlVVJJLmdldCgpLCB1cmwpKQotICAgICAgICByZXR1cm4gdHJ1ZTsK
LSAgICBpZiAocmVwb3J0aW5nU3RhdHVzID09IFJlcG9ydGluZ1N0YXR1czo6U2VuZFJlcG9ydCkg
ewotICAgICAgICBib29sIHZpb2xhdGVzRGVmYXVsdFNyYyA9IGZhbHNlOwotICAgICAgICBTdHJp
bmcgY29uc29sZU1lc3NhZ2UgPSBjb25zb2xlTWVzc2FnZUZvclZpb2xhdGlvbihiYXNlVVJJLCB1
cmwsIHZpb2xhdGVzRGVmYXVsdFNyYywgIlJlZnVzZWQgdG8gY2hhbmdlIHRoZSBkb2N1bWVudCBi
YXNlIFVSTCB0byIpOwotICAgICAgICByZXBvcnRWaW9sYXRpb24obV9iYXNlVVJJLT50ZXh0KCks
IGJhc2VVUkksIGNvbnNvbGVNZXNzYWdlLCB1cmwpOwotICAgIH0KLSAgICByZXR1cm4gZGVueUlm
RW5mb3JjaW5nUG9saWN5KCk7CisgICAgQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdERp
cmVjdGl2ZSogb3BlcmF0aXZlRGlyZWN0aXZlID0gdGhpcy0+b3BlcmF0aXZlRGlyZWN0aXZlKG1f
c2NyaXB0U3JjLmdldCgpKTsKKyAgICBpZiAoY2hlY2tTb3VyY2Uob3BlcmF0aXZlRGlyZWN0aXZl
LCB1cmwpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gb3BlcmF0aXZlRGly
ZWN0aXZlOwogfQogCi1ib29sIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OmFs
bG93RnJhbWVBbmNlc3RvcnMoY29uc3QgRnJhbWUmIGZyYW1lLCBjb25zdCBVUkwmIHVybCwgUmVw
b3J0aW5nU3RhdHVzIHJlcG9ydGluZ1N0YXR1cykgY29uc3QKK2NvbnN0IENvbnRlbnRTZWN1cml0
eVBvbGljeURpcmVjdGl2ZSogQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6dmlv
bGF0ZWREaXJlY3RpdmVGb3JTdHlsZShjb25zdCBVUkwmIHVybCkgY29uc3QKIHsKLSAgICBpZiAo
Y2hlY2tGcmFtZUFuY2VzdG9ycyhtX2ZyYW1lQW5jZXN0b3JzLmdldCgpLCBmcmFtZSkpCi0gICAg
ICAgIHJldHVybiB0cnVlOwotICAgIGlmIChyZXBvcnRpbmdTdGF0dXMgPT0gUmVwb3J0aW5nU3Rh
dHVzOjpTZW5kUmVwb3J0KSB7Ci0gICAgICAgIGJvb2wgdmlvbGF0ZXNEZWZhdWx0U3JjID0gZmFs
c2U7Ci0gICAgICAgIFN0cmluZyBjb25zb2xlTWVzc2FnZSA9IGNvbnNvbGVNZXNzYWdlRm9yVmlv
bGF0aW9uKGZyYW1lQW5jZXN0b3JzLCB1cmwsIHZpb2xhdGVzRGVmYXVsdFNyYywgIlJlZnVzZWQg
dG8gbG9hZCIpOwotICAgICAgICByZXBvcnRWaW9sYXRpb24obV9mcmFtZUFuY2VzdG9ycy0+dGV4
dCgpLCBmcmFtZUFuY2VzdG9ycywgY29uc29sZU1lc3NhZ2UsIHVybCk7Ci0gICAgfQotICAgIHJl
dHVybiBkZW55SWZFbmZvcmNpbmdQb2xpY3koKTsKKyAgICBDb250ZW50U2VjdXJpdHlQb2xpY3lT
b3VyY2VMaXN0RGlyZWN0aXZlKiBvcGVyYXRpdmVEaXJlY3RpdmUgPSB0aGlzLT5vcGVyYXRpdmVE
aXJlY3RpdmUobV9zdHlsZVNyYy5nZXQoKSk7CisgICAgaWYgKGNoZWNrU291cmNlKG9wZXJhdGl2
ZURpcmVjdGl2ZSwgdXJsKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIG9w
ZXJhdGl2ZURpcmVjdGl2ZTsKIH0KIAogLy8gcG9saWN5ICAgICAgICAgICAgPSBkaXJlY3RpdmUt
bGlzdApAQCAtNDg4LDggKzMxMiw5IEBAIHZvaWQgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0
aXZlTGlzdDo6cGFyc2UoY29uc3QgU3RyaW5nJiBwb2xpY3ksIENvbnRlbnRTZWN1CiAgICAgICAg
ICAgICBBU1NFUlQoIW5hbWUuaXNFbXB0eSgpKTsKICAgICAgICAgICAgIHN3aXRjaCAocG9saWN5
RnJvbSkgewogICAgICAgICAgICAgY2FzZSBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlBvbGljeUZy
b206OkhUVFBFcXVpdk1ldGE6Ci0gICAgICAgICAgICAgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9y
aW5nQVNDSUlDYXNlKG5hbWUsIHNhbmRib3gpIHx8IGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlD
YXNlKG5hbWUsIHJlcG9ydFVSSSkKLSAgICAgICAgICAgICAgICAgICAgfHwgZXF1YWxMZXR0ZXJz
SWdub3JpbmdBU0NJSUNhc2UobmFtZSwgZnJhbWVBbmNlc3RvcnMpKSB7CisgICAgICAgICAgICAg
ICAgaWYgKGVxdWFsSWdub3JpbmdBU0NJSUNhc2UobmFtZSwgQ29udGVudFNlY3VyaXR5UG9saWN5
RGlyZWN0aXZlTmFtZXM6OnNhbmRib3gpCisgICAgICAgICAgICAgICAgICAgIHx8IGVxdWFsSWdu
b3JpbmdBU0NJSUNhc2UobmFtZSwgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXM6
OnJlcG9ydFVSSSkKKyAgICAgICAgICAgICAgICAgICAgfHwgZXF1YWxJZ25vcmluZ0FTQ0lJQ2Fz
ZShuYW1lLCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lczo6ZnJhbWVBbmNlc3Rv
cnMpKSB7CiAgICAgICAgICAgICAgICAgICAgIG1fcG9saWN5LnJlcG9ydEludmFsaWREaXJlY3Rp
dmVJbkhUVFBFcXVpdk1ldGEobmFtZSk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgICAgIH0KQEAgLTU5MCw3ICs0MTUsNyBAQCB2b2lkIENvbnRlbnRTZWN1cml0eVBv
bGljeURpcmVjdGl2ZUxpc3Q6OnNldENTUERpcmVjdGl2ZShjb25zdCBTdHJpbmcmIG5hbWUsIGNv
bgogICAgICAgICBtX3BvbGljeS5yZXBvcnREdXBsaWNhdGVEaXJlY3RpdmUobmFtZSk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9Ci0gICAgZGlyZWN0aXZlID0gc3RkOjptYWtlX3VuaXF1ZTxDU1BE
aXJlY3RpdmVUeXBlPihuYW1lLCB2YWx1ZSwgbV9wb2xpY3kpOworICAgIGRpcmVjdGl2ZSA9IHN0
ZDo6bWFrZV91bmlxdWU8Q1NQRGlyZWN0aXZlVHlwZT4oKnRoaXMsIG5hbWUsIHZhbHVlKTsKIH0K
IAogdm9pZCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0OjphcHBseVNhbmRib3hQ
b2xpY3koY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHNhbmRib3hQb2xpY3kpCkBA
IC02NjAsNTEgKzQ4NSw1MSBAQCB2b2lkIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxp
c3Q6OmFkZERpcmVjdGl2ZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0CiB7CiAgICAgQVNTRVJU
KCFuYW1lLmlzRW1wdHkoKSk7CiAKLSAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNh
c2UobmFtZSwgZGVmYXVsdFNyYykpIHsKKyAgICBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShu
YW1lLCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lczo6ZGVmYXVsdFNyYykpIHsK
ICAgICAgICAgc2V0Q1NQRGlyZWN0aXZlPENvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3RE
aXJlY3RpdmU+KG5hbWUsIHZhbHVlLCBtX2RlZmF1bHRTcmMpOwogICAgICAgICBtX3BvbGljeS5h
ZGRIYXNoQWxnb3JpdGhtc0ZvcklubGluZVNjcmlwdHMobV9kZWZhdWx0U3JjLT5oYXNoQWxnb3Jp
dGhtc1VzZWQoKSk7CiAgICAgICAgIG1fcG9saWN5LmFkZEhhc2hBbGdvcml0aG1zRm9ySW5saW5l
U3R5bGVzaGVldHMobV9kZWZhdWx0U3JjLT5oYXNoQWxnb3JpdGhtc1VzZWQoKSk7Ci0gICAgfSBl
bHNlIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShuYW1lLCBzY3JpcHRTcmMpKSB7
CisgICAgfSBlbHNlIGlmIChlcXVhbElnbm9yaW5nQVNDSUlDYXNlKG5hbWUsIENvbnRlbnRTZWN1
cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzOjpzY3JpcHRTcmMpKSB7CiAgICAgICAgIHNldENTUERp
cmVjdGl2ZTxDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0RGlyZWN0aXZlPihuYW1lLCB2
YWx1ZSwgbV9zY3JpcHRTcmMpOwogICAgICAgICBtX3BvbGljeS5hZGRIYXNoQWxnb3JpdGhtc0Zv
cklubGluZVNjcmlwdHMobV9zY3JpcHRTcmMtPmhhc2hBbGdvcml0aG1zVXNlZCgpKTsKLSAgICB9
IGVsc2UgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG5hbWUsIHN0eWxlU3JjKSkg
eworICAgIH0gZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShuYW1lLCBDb250ZW50U2Vj
dXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lczo6c3R5bGVTcmMpKSB7CiAgICAgICAgIHNldENTUERp
cmVjdGl2ZTxDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0RGlyZWN0aXZlPihuYW1lLCB2
YWx1ZSwgbV9zdHlsZVNyYyk7CiAgICAgICAgIG1fcG9saWN5LmFkZEhhc2hBbGdvcml0aG1zRm9y
SW5saW5lU3R5bGVzaGVldHMobV9zdHlsZVNyYy0+aGFzaEFsZ29yaXRobXNVc2VkKCkpOwotICAg
IH0gZWxzZSBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobmFtZSwgb2JqZWN0U3Jj
KSkKKyAgICB9IGVsc2UgaWYgKGVxdWFsSWdub3JpbmdBU0NJSUNhc2UobmFtZSwgQ29udGVudFNl
Y3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXM6Om9iamVjdFNyYykpCiAgICAgICAgIHNldENTUERp
cmVjdGl2ZTxDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0RGlyZWN0aXZlPihuYW1lLCB2
YWx1ZSwgbV9vYmplY3RTcmMpOwotICAgIGVsc2UgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVND
SUlDYXNlKG5hbWUsIGZyYW1lU3JjKSkgeworICAgIGVsc2UgaWYgKGVxdWFsSWdub3JpbmdBU0NJ
SUNhc2UobmFtZSwgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXM6OmZyYW1lU3Jj
KSkgewogICAgICAgICAvLyBGSVhNRTogTG9nIHRvIGNvbnNvbGUgIlRoZSBmcmFtZS1zcmMgZGly
ZWN0aXZlIGlzIGRlcHJlY2F0ZWQuIFVzZSB0aGUgY2hpbGQtc3JjIGRpcmVjdGl2ZSBpbnN0ZWFk
LiIKICAgICAgICAgLy8gU2VlIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTU1NzczPi4KICAgICAgICAgc2V0Q1NQRGlyZWN0aXZlPENvbnRlbnRTZWN1cml0eVBvbGlj
eVNvdXJjZUxpc3REaXJlY3RpdmU+KG5hbWUsIHZhbHVlLCBtX2ZyYW1lU3JjKTsKLSAgICB9IGVs
c2UgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG5hbWUsIGltZ1NyYykpCisgICAg
fSBlbHNlIGlmIChlcXVhbElnbm9yaW5nQVNDSUlDYXNlKG5hbWUsIENvbnRlbnRTZWN1cml0eVBv
bGljeURpcmVjdGl2ZU5hbWVzOjppbWdTcmMpKQogICAgICAgICBzZXRDU1BEaXJlY3RpdmU8Q29u
dGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdERpcmVjdGl2ZT4obmFtZSwgdmFsdWUsIG1faW1n
U3JjKTsKLSAgICBlbHNlIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShuYW1lLCBm
b250U3JjKSkKKyAgICBlbHNlIGlmIChlcXVhbElnbm9yaW5nQVNDSUlDYXNlKG5hbWUsIENvbnRl
bnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzOjpmb250U3JjKSkKICAgICAgICAgc2V0Q1NQ
RGlyZWN0aXZlPENvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3REaXJlY3RpdmU+KG5hbWUs
IHZhbHVlLCBtX2ZvbnRTcmMpOwotICAgIGVsc2UgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVND
SUlDYXNlKG5hbWUsIG1lZGlhU3JjKSkKKyAgICBlbHNlIGlmIChlcXVhbElnbm9yaW5nQVNDSUlD
YXNlKG5hbWUsIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzOjptZWRpYVNyYykp
CiAgICAgICAgIHNldENTUERpcmVjdGl2ZTxDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0
RGlyZWN0aXZlPihuYW1lLCB2YWx1ZSwgbV9tZWRpYVNyYyk7Ci0gICAgZWxzZSBpZiAoZXF1YWxM
ZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobmFtZSwgY29ubmVjdFNyYykpCisgICAgZWxzZSBpZiAo
ZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShuYW1lLCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3Rp
dmVOYW1lczo6Y29ubmVjdFNyYykpCiAgICAgICAgIHNldENTUERpcmVjdGl2ZTxDb250ZW50U2Vj
dXJpdHlQb2xpY3lTb3VyY2VMaXN0RGlyZWN0aXZlPihuYW1lLCB2YWx1ZSwgbV9jb25uZWN0U3Jj
KTsKLSAgICBlbHNlIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShuYW1lLCBjaGls
ZFNyYykpCisgICAgZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShuYW1lLCBDb250ZW50
U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lczo6Y2hpbGRTcmMpKQogICAgICAgICBzZXRDU1BE
aXJlY3RpdmU8Q29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdERpcmVjdGl2ZT4obmFtZSwg
dmFsdWUsIG1fY2hpbGRTcmMpOwotICAgIGVsc2UgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVND
SUlDYXNlKG5hbWUsIGZvcm1BY3Rpb24pKQorICAgIGVsc2UgaWYgKGVxdWFsSWdub3JpbmdBU0NJ
SUNhc2UobmFtZSwgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXM6OmZvcm1BY3Rp
b24pKQogICAgICAgICBzZXRDU1BEaXJlY3RpdmU8Q29udGVudFNlY3VyaXR5UG9saWN5U291cmNl
TGlzdERpcmVjdGl2ZT4obmFtZSwgdmFsdWUsIG1fZm9ybUFjdGlvbik7Ci0gICAgZWxzZSBpZiAo
ZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobmFtZSwgYmFzZVVSSSkpCisgICAgZWxzZSBp
ZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShuYW1lLCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJl
Y3RpdmVOYW1lczo6YmFzZVVSSSkpCiAgICAgICAgIHNldENTUERpcmVjdGl2ZTxDb250ZW50U2Vj
dXJpdHlQb2xpY3lTb3VyY2VMaXN0RGlyZWN0aXZlPihuYW1lLCB2YWx1ZSwgbV9iYXNlVVJJKTsK
LSAgICBlbHNlIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShuYW1lLCBmcmFtZUFu
Y2VzdG9ycykpIHsKKyAgICBlbHNlIGlmIChlcXVhbElnbm9yaW5nQVNDSUlDYXNlKG5hbWUsIENv
bnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzOjpmcmFtZUFuY2VzdG9ycykpIHsKICAg
ICAgICAgaWYgKG1fcmVwb3J0T25seSkgewogICAgICAgICAgICAgbV9wb2xpY3kucmVwb3J0SW52
YWxpZERpcmVjdGl2ZUluUmVwb3J0T25seU1vZGUobmFtZSk7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KICAgICAgICAgc2V0Q1NQRGlyZWN0aXZlPENvbnRlbnRTZWN1cml0eVBvbGlj
eVNvdXJjZUxpc3REaXJlY3RpdmU+KG5hbWUsIHZhbHVlLCBtX2ZyYW1lQW5jZXN0b3JzKTsKLSAg
ICB9IGVsc2UgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG5hbWUsIHBsdWdpblR5
cGVzKSkKKyAgICB9IGVsc2UgaWYgKGVxdWFsSWdub3JpbmdBU0NJSUNhc2UobmFtZSwgQ29udGVu
dFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXM6OnBsdWdpblR5cGVzKSkKICAgICAgICAgc2V0
Q1NQRGlyZWN0aXZlPENvbnRlbnRTZWN1cml0eVBvbGljeU1lZGlhTGlzdERpcmVjdGl2ZT4obmFt
ZSwgdmFsdWUsIG1fcGx1Z2luVHlwZXMpOwotICAgIGVsc2UgaWYgKGVxdWFsTGV0dGVyc0lnbm9y
aW5nQVNDSUlDYXNlKG5hbWUsIHNhbmRib3gpKQorICAgIGVsc2UgaWYgKGVxdWFsSWdub3JpbmdB
U0NJSUNhc2UobmFtZSwgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXM6OnNhbmRi
b3gpKQogICAgICAgICBhcHBseVNhbmRib3hQb2xpY3kobmFtZSwgdmFsdWUpOwotICAgIGVsc2Ug
aWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG5hbWUsIHJlcG9ydFVSSSkpCisgICAg
ZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShuYW1lLCBDb250ZW50U2VjdXJpdHlQb2xp
Y3lEaXJlY3RpdmVOYW1lczo6cmVwb3J0VVJJKSkKICAgICAgICAgcGFyc2VSZXBvcnRVUkkobmFt
ZSwgdmFsdWUpOwogI2lmIEVOQUJMRShDU1BfTkVYVCkKICAgICBlbHNlIGlmIChtX3BvbGljeS5l
eHBlcmltZW50YWxGZWF0dXJlc0VuYWJsZWQoKSkgewotICAgICAgICBpZiAoZXF1YWxMZXR0ZXJz
SWdub3JpbmdBU0NJSUNhc2UobmFtZSwgcmVmbGVjdGVkWFNTKSkKKyAgICAgICAgaWYgKGVxdWFs
SWdub3JpbmdBU0NJSUNhc2UobmFtZSwgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFt
ZXM6OnJlZmxlY3RlZFhTUykpCiAgICAgICAgICAgICBwYXJzZVJlZmxlY3RlZFhTUyhuYW1lLCB2
YWx1ZSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIG1fcG9saWN5LnJlcG9ydFVuc3VwcG9y
dGVkRGlyZWN0aXZlKG5hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3Av
Q29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdC5oIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdC5oCmluZGV4IDliMWUyMGJj
MDQ1NDBmYTk3MzExYmQ1NmExMDgwYWM2ZWYwZDVlOGEuLjRkMDkwYjk1MzBiYzlmYTM2MjhhZTli
N2M5YTBkMmI3YjM3NjY4ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0Nv
bnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0LmgKQEAgLTM2LDggKzM2
LDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1ib29sIGlzQ1NQRGlyZWN0aXZlTmFtZShj
b25zdCBTdHJpbmcmKTsKLQogY2xhc3MgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlz
dCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFC
TEUoQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdCkKQEAgLTQ4LDQwICs0Niw0MCBA
QCBwdWJsaWM6CiAgICAgY29uc3QgU3RyaW5nJiBoZWFkZXIoKSBjb25zdCB7IHJldHVybiBtX2hl
YWRlcjsgfQogICAgIENvbnRlbnRTZWN1cml0eVBvbGljeUhlYWRlclR5cGUgaGVhZGVyVHlwZSgp
IGNvbnN0IHsgcmV0dXJuIG1faGVhZGVyVHlwZTsgfQogCi0gICAgZW51bSBjbGFzcyBSZXBvcnRp
bmdTdGF0dXMgewotICAgICAgICBTZW5kUmVwb3J0LAotICAgICAgICBTdXBwcmVzc1JlcG9ydAot
ICAgIH07Ci0gICAgYm9vbCBhbGxvd0phdmFTY3JpcHRVUkxzKGNvbnN0IFN0cmluZyYgY29udGV4
dFVSTCwgY29uc3QgV1RGOjpPcmRpbmFsTnVtYmVyJiBjb250ZXh0TGluZSwgUmVwb3J0aW5nU3Rh
dHVzKSBjb25zdDsKLSAgICBib29sIGFsbG93SW5saW5lRXZlbnRIYW5kbGVycyhjb25zdCBTdHJp
bmcmIGNvbnRleHRVUkwsIGNvbnN0IFdURjo6T3JkaW5hbE51bWJlciYgY29udGV4dExpbmUsIFJl
cG9ydGluZ1N0YXR1cykgY29uc3Q7Ci0gICAgYm9vbCBhbGxvd0lubGluZVNjcmlwdChjb25zdCBT
dHJpbmcmIGNvbnRleHRVUkwsIGNvbnN0IFdURjo6T3JkaW5hbE51bWJlciYgY29udGV4dExpbmUs
IFJlcG9ydGluZ1N0YXR1cykgY29uc3Q7Ci0gICAgYm9vbCBhbGxvd0lubGluZVNjcmlwdFdpdGhI
YXNoKGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeUhhc2gmKSBjb25zdDsKLSAgICBib29sIGFs
bG93U2NyaXB0V2l0aE5vbmNlKGNvbnN0IFN0cmluZyYgbm9uY2UpIGNvbnN0OwotICAgIGJvb2wg
YWxsb3dJbmxpbmVTdHlsZShjb25zdCBTdHJpbmcmIGNvbnRleHRVUkwsIGNvbnN0IFdURjo6T3Jk
aW5hbE51bWJlciYgY29udGV4dExpbmUsIFJlcG9ydGluZ1N0YXR1cykgY29uc3Q7Ci0gICAgYm9v
bCBhbGxvd0lubGluZVN0eWxlV2l0aEhhc2goY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5SGFz
aCYpIGNvbnN0OwotICAgIGJvb2wgYWxsb3dTdHlsZVdpdGhOb25jZShjb25zdCBTdHJpbmcmIG5v
bmNlKSBjb25zdDsKLSAgICBib29sIGFsbG93RXZhbChKU0M6OkV4ZWNTdGF0ZSosIFJlcG9ydGlu
Z1N0YXR1cykgY29uc3Q7Ci0gICAgYm9vbCBhbGxvd1BsdWdpblR5cGUoY29uc3QgU3RyaW5nJiB0
eXBlLCBjb25zdCBTdHJpbmcmIHR5cGVBdHRyaWJ1dGUsIGNvbnN0IFVSTCYsIFJlcG9ydGluZ1N0
YXR1cykgY29uc3Q7Ci0KLSAgICBib29sIGFsbG93U2NyaXB0RnJvbVNvdXJjZShjb25zdCBVUkwm
LCBSZXBvcnRpbmdTdGF0dXMpIGNvbnN0OwotICAgIGJvb2wgYWxsb3dPYmplY3RGcm9tU291cmNl
KGNvbnN0IFVSTCYsIFJlcG9ydGluZ1N0YXR1cykgY29uc3Q7Ci0gICAgYm9vbCBhbGxvd0NoaWxk
RnJhbWVGcm9tU291cmNlKGNvbnN0IFVSTCYsIFJlcG9ydGluZ1N0YXR1cykgY29uc3Q7Ci0gICAg
Ym9vbCBhbGxvd0NoaWxkQ29udGV4dEZyb21Tb3VyY2UoY29uc3QgVVJMJiwgUmVwb3J0aW5nU3Rh
dHVzKSBjb25zdDsKLSAgICBib29sIGFsbG93SW1hZ2VGcm9tU291cmNlKGNvbnN0IFVSTCYsIFJl
cG9ydGluZ1N0YXR1cykgY29uc3Q7Ci0gICAgYm9vbCBhbGxvd1N0eWxlRnJvbVNvdXJjZShjb25z
dCBVUkwmLCBSZXBvcnRpbmdTdGF0dXMpIGNvbnN0OwotICAgIGJvb2wgYWxsb3dGb250RnJvbVNv
dXJjZShjb25zdCBVUkwmLCBSZXBvcnRpbmdTdGF0dXMpIGNvbnN0OwotICAgIGJvb2wgYWxsb3dN
ZWRpYUZyb21Tb3VyY2UoY29uc3QgVVJMJiwgUmVwb3J0aW5nU3RhdHVzKSBjb25zdDsKLSAgICBi
b29sIGFsbG93Q29ubmVjdFRvU291cmNlKGNvbnN0IFVSTCYsIFJlcG9ydGluZ1N0YXR1cykgY29u
c3Q7Ci0gICAgYm9vbCBhbGxvd0Zvcm1BY3Rpb24oY29uc3QgVVJMJiwgUmVwb3J0aW5nU3RhdHVz
KSBjb25zdDsKLSAgICBib29sIGFsbG93QmFzZVVSSShjb25zdCBVUkwmLCBSZXBvcnRpbmdTdGF0
dXMpIGNvbnN0OwotCi0gICAgYm9vbCBhbGxvd0ZyYW1lQW5jZXN0b3JzKGNvbnN0IEZyYW1lJiwg
Y29uc3QgVVJMJiwgUmVwb3J0aW5nU3RhdHVzKSBjb25zdDsKKyAgICBjb25zdCBDb250ZW50U2Vj
dXJpdHlQb2xpY3lEaXJlY3RpdmUqIHZpb2xhdGVkRGlyZWN0aXZlRm9yVW5zYWZlRXZhbCgpIGNv
bnN0OworICAgIGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZSogdmlvbGF0ZWRE
aXJlY3RpdmVGb3JVbnNhZmVJbmxpbmVTY3JpcHQoKSBjb25zdDsKKyAgICBjb25zdCBDb250ZW50
U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmUqIHZpb2xhdGVkRGlyZWN0aXZlRm9yVW5zYWZlSW5saW5l
U3R5bGUoKSBjb25zdDsKKworICAgIGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2
ZSogdmlvbGF0ZWREaXJlY3RpdmVGb3JTY3JpcHRIYXNoKGNvbnN0IENvbnRlbnRTZWN1cml0eVBv
bGljeUhhc2gmKSBjb25zdDsKKyAgICBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3Rp
dmUqIHZpb2xhdGVkRGlyZWN0aXZlRm9yU3R5bGVIYXNoKGNvbnN0IENvbnRlbnRTZWN1cml0eVBv
bGljeUhhc2gmKSBjb25zdDsKKworICAgIGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVj
dGl2ZSogdmlvbGF0ZWREaXJlY3RpdmVGb3JTY3JpcHROb25jZShjb25zdCBTdHJpbmcmKSBjb25z
dDsKKyAgICBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmUqIHZpb2xhdGVkRGly
ZWN0aXZlRm9yU3R5bGVOb25jZShjb25zdCBTdHJpbmcmKSBjb25zdDsKKworICAgIGNvbnN0IENv
bnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZSogdmlvbGF0ZWREaXJlY3RpdmVGb3JCYXNlVVJJ
KGNvbnN0IFVSTCYpIGNvbnN0OworICAgIGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVj
dGl2ZSogdmlvbGF0ZWREaXJlY3RpdmVGb3JDaGlsZENvbnRleHQoY29uc3QgVVJMJikgY29uc3Q7
CisgICAgY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlKiB2aW9sYXRlZERpcmVj
dGl2ZUZvckNvbm5lY3RTb3VyY2UoY29uc3QgVVJMJikgY29uc3Q7CisgICAgY29uc3QgQ29udGVu
dFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlKiB2aW9sYXRlZERpcmVjdGl2ZUZvckZvbnQoY29uc3Qg
VVJMJikgY29uc3Q7CisgICAgY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlKiB2
aW9sYXRlZERpcmVjdGl2ZUZvckZvcm1BY3Rpb24oY29uc3QgVVJMJikgY29uc3Q7CisgICAgY29u
c3QgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlKiB2aW9sYXRlZERpcmVjdGl2ZUZvckZy
YW1lKGNvbnN0IFVSTCYpIGNvbnN0OworICAgIGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeURp
cmVjdGl2ZSogdmlvbGF0ZWREaXJlY3RpdmVGb3JGcmFtZUFuY2VzdG9yKGNvbnN0IEZyYW1lJikg
Y29uc3Q7CisgICAgY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlKiB2aW9sYXRl
ZERpcmVjdGl2ZUZvckltYWdlKGNvbnN0IFVSTCYpIGNvbnN0OworICAgIGNvbnN0IENvbnRlbnRT
ZWN1cml0eVBvbGljeURpcmVjdGl2ZSogdmlvbGF0ZWREaXJlY3RpdmVGb3JNZWRpYShjb25zdCBV
UkwmKSBjb25zdDsKKyAgICBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmUqIHZp
b2xhdGVkRGlyZWN0aXZlRm9yT2JqZWN0U291cmNlKGNvbnN0IFVSTCYpIGNvbnN0OworICAgIGNv
bnN0IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZSogdmlvbGF0ZWREaXJlY3RpdmVGb3JQ
bHVnaW5UeXBlKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiB0eXBlQXR0cmlidXRl
KSBjb25zdDsKKyAgICBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmUqIHZpb2xh
dGVkRGlyZWN0aXZlRm9yU2NyaXB0KGNvbnN0IFVSTCYpIGNvbnN0OworICAgIGNvbnN0IENvbnRl
bnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZSogdmlvbGF0ZWREaXJlY3RpdmVGb3JTdHlsZShjb25z
dCBVUkwmKSBjb25zdDsKKworICAgIGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2
ZSogZGVmYXVsdFNyYygpIGNvbnN0IHsgcmV0dXJuIG1fZGVmYXVsdFNyYy5nZXQoKTsgfQogCiAg
ICAgY29uc3QgU3RyaW5nJiBldmFsRGlzYWJsZWRFcnJvck1lc3NhZ2UoKSBjb25zdCB7IHJldHVy
biBtX2V2YWxEaXNhYmxlZEVycm9yTWVzc2FnZTsgfQogICAgIENvbnRlbnRTZWN1cml0eVBvbGlj
eTo6UmVmbGVjdGVkWFNTRGlzcG9zaXRpb24gcmVmbGVjdGVkWFNTRGlzcG9zaXRpb24oKSBjb25z
dCB7IHJldHVybiBtX3JlZmxlY3RlZFhTU0Rpc3Bvc2l0aW9uOyB9CiAgICAgYm9vbCBpc1JlcG9y
dE9ubHkoKSBjb25zdCB7IHJldHVybiBtX3JlcG9ydE9ubHk7IH0KICAgICBjb25zdCBWZWN0b3I8
U3RyaW5nPiYgcmVwb3J0VVJJcygpIGNvbnN0IHsgcmV0dXJuIG1fcmVwb3J0VVJJczsgfQogCisg
ICAgLy8gRklYTUU6IFJlbW92ZSB0aGlzIG9uY2Ugd2UgdGVhY2ggQ29udGVudFNlY3VyaXR5UG9s
aWN5RGlyZWN0aXZlTGlzdCBob3cgdG8gbG9nIGFuIGFyYml0cmFyeSBjb25zb2xlIG1lc3NhZ2Uu
CisgICAgY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5JiBwb2xpY3koKSBjb25zdCB7IHJldHVy
biBtX3BvbGljeTsgfQorCiBwcml2YXRlOgogICAgIHZvaWQgcGFyc2UoY29uc3QgU3RyaW5nJiwg
Q29udGVudFNlY3VyaXR5UG9saWN5OjpQb2xpY3lGcm9tKTsKIApAQCAtOTYsMTIgKzk0LDkgQEAg
cHJpdmF0ZToKICAgICB2b2lkIHNldENTUERpcmVjdGl2ZShjb25zdCBTdHJpbmcmIG5hbWUsIGNv
bnN0IFN0cmluZyYgdmFsdWUsIHN0ZDo6dW5pcXVlX3B0cjxDU1BEaXJlY3RpdmVUeXBlPiYpOwog
CiAgICAgQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdERpcmVjdGl2ZSogb3BlcmF0aXZl
RGlyZWN0aXZlKENvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3REaXJlY3RpdmUqKSBjb25z
dDsKLSAgICB2b2lkIHJlcG9ydFZpb2xhdGlvbihjb25zdCBTdHJpbmcmIGRpcmVjdGl2ZVRleHQs
IGNvbnN0IFN0cmluZyYgZWZmZWN0aXZlRGlyZWN0aXZlLCBjb25zdCBTdHJpbmcmIGNvbnNvbGVN
ZXNzYWdlLCBjb25zdCBVUkwmIGJsb2NrZWRVUkwgPSBVUkwoKSwgY29uc3QgU3RyaW5nJiBjb250
ZXh0VVJMID0gU3RyaW5nKCksIGNvbnN0IFdURjo6T3JkaW5hbE51bWJlciYgY29udGV4dExpbmUg
PSBXVEY6Ok9yZGluYWxOdW1iZXI6OmJlZm9yZUZpcnN0KCksIEpTQzo6RXhlY1N0YXRlKiA9IG51
bGxwdHIpIGNvbnN0OwogCiAgICAgdm9pZCBzZXRFdmFsRGlzYWJsZWRFcnJvck1lc3NhZ2UoY29u
c3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpIHsgbV9ldmFsRGlzYWJsZWRFcnJvck1lc3NhZ2UgPSBl
cnJvck1lc3NhZ2U7IH0KIAotICAgIGJvb2wgZGVueUlmRW5mb3JjaW5nUG9saWN5KCkgY29uc3Qg
eyByZXR1cm4gbV9yZXBvcnRPbmx5OyB9Ci0KICAgICAvLyBGSVhNRTogTWFrZSB0aGlzIGEgY29u
c3QgcmVmZXJlbmNlIG9uY2Ugd2UgdGVhY2ggYXBwbHlTYW5kYm94UG9saWN5KCkgdG8gc3RvcmUg
aXRzIHBvbGljeSBhcyBvcHBvc2VkIHRvIGFwcGx5aW5nIGl0IGRpcmVjdGx5IG9udG8gQ29udGVu
dFNlY3VyaXR5UG9saWN5LgogICAgIENvbnRlbnRTZWN1cml0eVBvbGljeSYgbV9wb2xpY3k7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGlj
eURpcmVjdGl2ZU5hbWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1
cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ZGM0NzM3MTdlZmNjOTkz
YmQ0ZWVjNGQ4NTgwYTg2Yzg4MGU1MzM2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXMuY3BwCkBAIC0w
LDAgKzEsNTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
Q29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXMuaCIKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCituYW1lc3BhY2UgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXMgewor
Citjb25zdCBjaGFyKiBjb25zdCBiYXNlVVJJID0gImJhc2UtdXJpIjsKK2NvbnN0IGNoYXIqIGNv
bnN0IGNoaWxkU3JjID0gImNoaWxkLXNyYyI7Citjb25zdCBjaGFyKiBjb25zdCBjb25uZWN0U3Jj
ID0gImNvbm5lY3Qtc3JjIjsKK2NvbnN0IGNoYXIqIGNvbnN0IGRlZmF1bHRTcmMgPSAiZGVmYXVs
dC1zcmMiOworY29uc3QgY2hhciogY29uc3QgZm9udFNyYyA9ICJmb250LXNyYyI7Citjb25zdCBj
aGFyKiBjb25zdCBmb3JtQWN0aW9uID0gImZvcm0tYWN0aW9uIjsKK2NvbnN0IGNoYXIqIGNvbnN0
IGZyYW1lQW5jZXN0b3JzID0gImZyYW1lLWFuY2VzdG9ycyI7Citjb25zdCBjaGFyKiBjb25zdCBm
cmFtZVNyYyA9ICJmcmFtZS1zcmMiOworY29uc3QgY2hhciogY29uc3QgaW1nU3JjID0gImltZy1z
cmMiOworY29uc3QgY2hhciogY29uc3QgbWVkaWFTcmMgPSAibWVkaWEtc3JjIjsKK2NvbnN0IGNo
YXIqIGNvbnN0IG9iamVjdFNyYyA9ICJvYmplY3Qtc3JjIjsKK2NvbnN0IGNoYXIqIGNvbnN0IHBs
dWdpblR5cGVzID0gInBsdWdpbi10eXBlcyI7Citjb25zdCBjaGFyKiBjb25zdCByZXBvcnRVUkkg
PSAicmVwb3J0LXVyaSI7Citjb25zdCBjaGFyKiBjb25zdCBzYW5kYm94ID0gInNhbmRib3giOwor
Y29uc3QgY2hhciogY29uc3Qgc2NyaXB0U3JjID0gInNjcmlwdC1zcmMiOworY29uc3QgY2hhciog
Y29uc3Qgc3R5bGVTcmMgPSAic3R5bGUtc3JjIjsKKworI2lmIEVOQUJMRShDU1BfTkVYVCkKK2Nv
bnN0IGNoYXIqIGNvbnN0IHJlZmxlY3RlZFhTUyA9ICJyZWZsZWN0ZWQteHNzIjsKKyNlbmRpZgor
ICAgIAorfSAvLyBuYW1lc3BhY2UgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXMK
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXMuaCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNDJjZDFlNTQ5YTFlNzk3NzI1NGMyNDRkZjIxMmUzMTcwZWRmMTcxNwotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeURp
cmVjdGl2ZU5hbWVzLmgKQEAgLTAsMCArMSw1NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBDb250ZW50U2VjdXJpdHlQb2xp
Y3lEaXJlY3RpdmVOYW1lcyB7CisKK2V4dGVybiBjb25zdCBjaGFyKiBjb25zdCBiYXNlVVJJOwor
ZXh0ZXJuIGNvbnN0IGNoYXIqIGNvbnN0IGNoaWxkU3JjOworZXh0ZXJuIGNvbnN0IGNoYXIqIGNv
bnN0IGNvbm5lY3RTcmM7CitleHRlcm4gY29uc3QgY2hhciogY29uc3QgZGVmYXVsdFNyYzsKK2V4
dGVybiBjb25zdCBjaGFyKiBjb25zdCBmb250U3JjOworZXh0ZXJuIGNvbnN0IGNoYXIqIGNvbnN0
IGZvcm1BY3Rpb247CitleHRlcm4gY29uc3QgY2hhciogY29uc3QgZnJhbWVBbmNlc3RvcnM7Citl
eHRlcm4gY29uc3QgY2hhciogY29uc3QgZnJhbWVTcmM7CitleHRlcm4gY29uc3QgY2hhciogY29u
c3QgaW1nU3JjOworZXh0ZXJuIGNvbnN0IGNoYXIqIGNvbnN0IG1lZGlhU3JjOworZXh0ZXJuIGNv
bnN0IGNoYXIqIGNvbnN0IG9iamVjdFNyYzsKK2V4dGVybiBjb25zdCBjaGFyKiBjb25zdCBwbHVn
aW5UeXBlczsKK2V4dGVybiBjb25zdCBjaGFyKiBjb25zdCByZXBvcnRVUkk7CitleHRlcm4gY29u
c3QgY2hhciogY29uc3Qgc2FuZGJveDsKK2V4dGVybiBjb25zdCBjaGFyKiBjb25zdCBzY3JpcHRT
cmM7CitleHRlcm4gY29uc3QgY2hhciogY29uc3Qgc3R5bGVTcmM7CisKKyNpZiBFTkFCTEUoQ1NQ
X05FWFQpCitleHRlcm4gY29uc3QgY2hhciogY29uc3QgcmVmbGVjdGVkWFNTOworI2VuZGlmCisK
K30gLy8gbmFtZXNwYWNlIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzCisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9j
c3AvQ29udGVudFNlY3VyaXR5UG9saWN5TWVkaWFMaXN0RGlyZWN0aXZlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeU1lZGlhTGlzdERpcmVjdGl2ZS5j
cHAKaW5kZXggMmFmMzkzNTk4MzJhMTZjNDhhOWRkYzEwNWZjYzdlZmQ5OWQ2MGY4OC4uM2QzZWQ0
ZDBkYjQ1MWI0NDI4NzhkOWFkNGZkMzljYTFlZjZkZDRhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5TWVkaWFMaXN0RGlyZWN0aXZlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lNZWRp
YUxpc3REaXJlY3RpdmUuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiQ29udGVudFNl
Y3VyaXR5UG9saWN5TWVkaWFMaXN0RGlyZWN0aXZlLmgiCiAKICNpbmNsdWRlICJDb250ZW50U2Vj
dXJpdHlQb2xpY3kuaCIKKyNpbmNsdWRlICJDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVM
aXN0LmgiCiAjaW5jbHVkZSAiUGFyc2luZ1V0aWxpdGllcy5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0
L1N0cmluZ0hhc2guaD4KIApAQCAtNDMsOCArNDQsOCBAQCBzdGF0aWMgYm9vbCBpc05vdEFTQ0lJ
U3BhY2UoVUNoYXIgYykKICAgICByZXR1cm4gIWlzQVNDSUlTcGFjZShjKTsKIH0KIAotQ29udGVu
dFNlY3VyaXR5UG9saWN5TWVkaWFMaXN0RGlyZWN0aXZlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lN
ZWRpYUxpc3REaXJlY3RpdmUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVl
LCBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3kmIHBvbGljeSkKLSAgICA6IENvbnRlbnRTZWN1
cml0eVBvbGljeURpcmVjdGl2ZShuYW1lLCB2YWx1ZSwgcG9saWN5KQorQ29udGVudFNlY3VyaXR5
UG9saWN5TWVkaWFMaXN0RGlyZWN0aXZlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lNZWRpYUxpc3RE
aXJlY3RpdmUoY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdCYgZGlyZWN0
aXZlTGlzdCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlKQorICAgIDog
Q29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlKGRpcmVjdGl2ZUxpc3QsIG5hbWUsIHZhbHVl
KQogewogICAgIHBhcnNlKHZhbHVlKTsKIH0KQEAgLTYzLDcgKzY0LDcgQEAgdm9pZCBDb250ZW50
U2VjdXJpdHlQb2xpY3lNZWRpYUxpc3REaXJlY3RpdmU6OnBhcnNlKGNvbnN0IFN0cmluZyYgdmFs
dWUpCiAKICAgICAvLyAncGx1Z2luLXR5cGVzIF9fX187JyBPUiAncGx1Z2luLXR5cGVzOycKICAg
ICBpZiAodmFsdWUuaXNFbXB0eSgpKSB7Ci0gICAgICAgIHBvbGljeSgpLnJlcG9ydEludmFsaWRQ
bHVnaW5UeXBlcyh2YWx1ZSk7CisgICAgICAgIGRpcmVjdGl2ZUxpc3QoKS5wb2xpY3koKS5yZXBv
cnRJbnZhbGlkUGx1Z2luVHlwZXModmFsdWUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBA
IC03OSw3ICs4MCw3IEBAIHZvaWQgQ29udGVudFNlY3VyaXR5UG9saWN5TWVkaWFMaXN0RGlyZWN0
aXZlOjpwYXJzZShjb25zdCBTdHJpbmcmIHZhbHVlKQogICAgICAgICBiZWdpbiA9IHBvc2l0aW9u
OwogICAgICAgICBpZiAoIXNraXBFeGFjdGx5PFVDaGFyLCBpc01lZGlhVHlwZUNoYXJhY3Rlcj4o
cG9zaXRpb24sIGVuZCkpIHsKICAgICAgICAgICAgIHNraXBXaGlsZTxVQ2hhciwgaXNOb3RBU0NJ
SVNwYWNlPihwb3NpdGlvbiwgZW5kKTsKLSAgICAgICAgICAgIHBvbGljeSgpLnJlcG9ydEludmFs
aWRQbHVnaW5UeXBlcyhTdHJpbmcoYmVnaW4sIHBvc2l0aW9uIC0gYmVnaW4pKTsKKyAgICAgICAg
ICAgIGRpcmVjdGl2ZUxpc3QoKS5wb2xpY3koKS5yZXBvcnRJbnZhbGlkUGx1Z2luVHlwZXMoU3Ry
aW5nKGJlZ2luLCBwb3NpdGlvbiAtIGJlZ2luKSk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAg
ICAgICAgfQogICAgICAgICBza2lwV2hpbGU8VUNoYXIsIGlzTWVkaWFUeXBlQ2hhcmFjdGVyPihw
b3NpdGlvbiwgZW5kKTsKQEAgLTg4LDcgKzg5LDcgQEAgdm9pZCBDb250ZW50U2VjdXJpdHlQb2xp
Y3lNZWRpYUxpc3REaXJlY3RpdmU6OnBhcnNlKGNvbnN0IFN0cmluZyYgdmFsdWUpCiAgICAgICAg
IC8vICAgICAgXgogICAgICAgICBpZiAoIXNraXBFeGFjdGx5PFVDaGFyPihwb3NpdGlvbiwgZW5k
LCAnLycpKSB7CiAgICAgICAgICAgICBza2lwV2hpbGU8VUNoYXIsIGlzTm90QVNDSUlTcGFjZT4o
cG9zaXRpb24sIGVuZCk7Ci0gICAgICAgICAgICBwb2xpY3koKS5yZXBvcnRJbnZhbGlkUGx1Z2lu
VHlwZXMoU3RyaW5nKGJlZ2luLCBwb3NpdGlvbiAtIGJlZ2luKSk7CisgICAgICAgICAgICBkaXJl
Y3RpdmVMaXN0KCkucG9saWN5KCkucmVwb3J0SW52YWxpZFBsdWdpblR5cGVzKFN0cmluZyhiZWdp
biwgcG9zaXRpb24gLSBiZWdpbikpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0K
IApAQCAtOTYsNyArOTcsNyBAQCB2b2lkIENvbnRlbnRTZWN1cml0eVBvbGljeU1lZGlhTGlzdERp
cmVjdGl2ZTo6cGFyc2UoY29uc3QgU3RyaW5nJiB2YWx1ZSkKICAgICAgICAgLy8gICAgICAgXgog
ICAgICAgICBpZiAoIXNraXBFeGFjdGx5PFVDaGFyLCBpc01lZGlhVHlwZUNoYXJhY3Rlcj4ocG9z
aXRpb24sIGVuZCkpIHsKICAgICAgICAgICAgIHNraXBXaGlsZTxVQ2hhciwgaXNOb3RBU0NJSVNw
YWNlPihwb3NpdGlvbiwgZW5kKTsKLSAgICAgICAgICAgIHBvbGljeSgpLnJlcG9ydEludmFsaWRQ
bHVnaW5UeXBlcyhTdHJpbmcoYmVnaW4sIHBvc2l0aW9uIC0gYmVnaW4pKTsKKyAgICAgICAgICAg
IGRpcmVjdGl2ZUxpc3QoKS5wb2xpY3koKS5yZXBvcnRJbnZhbGlkUGx1Z2luVHlwZXMoU3RyaW5n
KGJlZ2luLCBwb3NpdGlvbiAtIGJlZ2luKSk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAg
ICAgfQogICAgICAgICBza2lwV2hpbGU8VUNoYXIsIGlzTWVkaWFUeXBlQ2hhcmFjdGVyPihwb3Np
dGlvbiwgZW5kKTsKQEAgLTEwNSw3ICsxMDYsNyBAQCB2b2lkIENvbnRlbnRTZWN1cml0eVBvbGlj
eU1lZGlhTGlzdERpcmVjdGl2ZTo6cGFyc2UoY29uc3QgU3RyaW5nJiB2YWx1ZSkKICAgICAgICAg
Ly8gICAgICAgICAgICBeICAgICAgICAgICAgICAgICAgICAgICAgICBeICAgICAgICAgICAgICAg
XgogICAgICAgICBpZiAocG9zaXRpb24gPCBlbmQgJiYgaXNOb3RBU0NJSVNwYWNlKCpwb3NpdGlv
bikpIHsKICAgICAgICAgICAgIHNraXBXaGlsZTxVQ2hhciwgaXNOb3RBU0NJSVNwYWNlPihwb3Np
dGlvbiwgZW5kKTsKLSAgICAgICAgICAgIHBvbGljeSgpLnJlcG9ydEludmFsaWRQbHVnaW5UeXBl
cyhTdHJpbmcoYmVnaW4sIHBvc2l0aW9uIC0gYmVnaW4pKTsKKyAgICAgICAgICAgIGRpcmVjdGl2
ZUxpc3QoKS5wb2xpY3koKS5yZXBvcnRJbnZhbGlkUGx1Z2luVHlwZXMoU3RyaW5nKGJlZ2luLCBw
b3NpdGlvbiAtIGJlZ2luKSk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogICAg
ICAgICBtX3BsdWdpblR5cGVzLmFkZChTdHJpbmcoYmVnaW4sIHBvc2l0aW9uIC0gYmVnaW4pKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGlj
eU1lZGlhTGlzdERpcmVjdGl2ZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNl
Y3VyaXR5UG9saWN5TWVkaWFMaXN0RGlyZWN0aXZlLmgKaW5kZXggZjFhMDU3ZTc3NzNlODQyOGE0
OTZlZGQwNzYyNzY4ZTAxNTgwNjMzMC4uZTg1MDY4ZWJhMGFiOGE5N2MyNGMyMTJjMzNiMjE5MGZl
NDdiOTRlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3Vy
aXR5UG9saWN5TWVkaWFMaXN0RGlyZWN0aXZlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9j
c3AvQ29udGVudFNlY3VyaXR5UG9saWN5TWVkaWFMaXN0RGlyZWN0aXZlLmgKQEAgLTMzLDExICsz
MywxMSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIENvbnRlbnRTZWN1cml0eVBv
bGljeTsKK2NsYXNzIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q7CiAKIGNsYXNz
IENvbnRlbnRTZWN1cml0eVBvbGljeU1lZGlhTGlzdERpcmVjdGl2ZSA6IHB1YmxpYyBDb250ZW50
U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmUgewogcHVibGljOgotICAgIENvbnRlbnRTZWN1cml0eVBv
bGljeU1lZGlhTGlzdERpcmVjdGl2ZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYg
dmFsdWUsIGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeSYpOworICAgIENvbnRlbnRTZWN1cml0
eVBvbGljeU1lZGlhTGlzdERpcmVjdGl2ZShjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJl
Y3RpdmVMaXN0JiwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlKTsKIAog
ICAgIGJvb2wgYWxsb3dzKGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3Q7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3Qu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNl
TGlzdC5jcHAKaW5kZXggODA0NGFlOGJmZTMxNGUxYmY5YmRhZmFhZDBlMmI0OGQ5MzczMDRjOS4u
MjU0YWY4ZTU5YjBkMjA4ZDMwYjAxZTAzZGVmNjI4ZmE3ZDM3MzdiOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNl
TGlzdC5jcHAKQEAgLTI4LDcgKzI4LDcgQEAKICNpbmNsdWRlICJDb250ZW50U2VjdXJpdHlQb2xp
Y3lTb3VyY2VMaXN0LmgiCiAKICNpbmNsdWRlICJDb250ZW50U2VjdXJpdHlQb2xpY3kuaCIKLSNp
bmNsdWRlICJDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0LmgiCisjaW5jbHVkZSAi
Q29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXMuaCIKICNpbmNsdWRlICJQYXJzaW5n
VXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJVUkwu
aCIKQEAgLTM4LDYgKzM4LDM1IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorc3RhdGljIGlu
bGluZSBib29sIGlzRXhwZXJpbWVudGFsRGlyZWN0aXZlTmFtZShjb25zdCBTdHJpbmcmIG5hbWUp
Cit7CisjaWYgRU5BQkxFKENTUF9ORVhUKQorICAgIHJldHVybiBlcXVhbElnbm9yaW5nQVNDSUlD
YXNlKG5hbWUsIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzOjpyZWZsZWN0ZWRY
U1MpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0obmFtZSk7CisgICAgcmV0dXJuIGZhbHNlOwor
I2VuZGlmCit9CisKK3N0YXRpYyBib29sIGlzQ1NQRGlyZWN0aXZlTmFtZShjb25zdCBTdHJpbmcm
IG5hbWUpCit7CisgICAgcmV0dXJuIGVxdWFsSWdub3JpbmdBU0NJSUNhc2UobmFtZSwgQ29udGVu
dFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXM6OmJhc2VVUkkpCisgICAgICAgIHx8IGVxdWFs
SWdub3JpbmdBU0NJSUNhc2UobmFtZSwgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFt
ZXM6OmNvbm5lY3RTcmMpCisgICAgICAgIHx8IGVxdWFsSWdub3JpbmdBU0NJSUNhc2UobmFtZSwg
Q29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXM6OmRlZmF1bHRTcmMpCisgICAgICAg
IHx8IGVxdWFsSWdub3JpbmdBU0NJSUNhc2UobmFtZSwgQ29udGVudFNlY3VyaXR5UG9saWN5RGly
ZWN0aXZlTmFtZXM6OmZvbnRTcmMpCisgICAgICAgIHx8IGVxdWFsSWdub3JpbmdBU0NJSUNhc2Uo
bmFtZSwgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXM6OmZvcm1BY3Rpb24pCisg
ICAgICAgIHx8IGVxdWFsSWdub3JpbmdBU0NJSUNhc2UobmFtZSwgQ29udGVudFNlY3VyaXR5UG9s
aWN5RGlyZWN0aXZlTmFtZXM6OmZyYW1lU3JjKQorICAgICAgICB8fCBlcXVhbElnbm9yaW5nQVND
SUlDYXNlKG5hbWUsIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzOjppbWdTcmMp
CisgICAgICAgIHx8IGVxdWFsSWdub3JpbmdBU0NJSUNhc2UobmFtZSwgQ29udGVudFNlY3VyaXR5
UG9saWN5RGlyZWN0aXZlTmFtZXM6Om1lZGlhU3JjKQorICAgICAgICB8fCBlcXVhbElnbm9yaW5n
QVNDSUlDYXNlKG5hbWUsIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzOjpvYmpl
Y3RTcmMpCisgICAgICAgIHx8IGVxdWFsSWdub3JpbmdBU0NJSUNhc2UobmFtZSwgQ29udGVudFNl
Y3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXM6OnBsdWdpblR5cGVzKQorICAgICAgICB8fCBlcXVh
bElnbm9yaW5nQVNDSUlDYXNlKG5hbWUsIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5h
bWVzOjpyZXBvcnRVUkkpCisgICAgICAgIHx8IGVxdWFsSWdub3JpbmdBU0NJSUNhc2UobmFtZSwg
Q29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXM6OnNhbmRib3gpCisgICAgICAgIHx8
IGVxdWFsSWdub3JpbmdBU0NJSUNhc2UobmFtZSwgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0
aXZlTmFtZXM6OnNjcmlwdFNyYykKKyAgICAgICAgfHwgZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShu
YW1lLCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVOYW1lczo6c3R5bGVTcmMpCisgICAg
ICAgIHx8IGlzRXhwZXJpbWVudGFsRGlyZWN0aXZlTmFtZShuYW1lKTsKK30KKwogc3RhdGljIGJv
b2wgaXNTb3VyY2VDaGFyYWN0ZXIoVUNoYXIgYykKIHsKICAgICByZXR1cm4gIWlzQVNDSUlTcGFj
ZShjKTsKQEAgLTEwMSwxMiArMTMwLDEwIEBAIGJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5U291
cmNlTGlzdDo6aXNQcm90b2NvbEFsbG93ZWRCeVN0YXIoY29uc3QgVVJMJiB1cmwpIGNvCiB7CiAg
ICAgLy8gQWx0aG91Z2ggbm90IGFsbG93ZWQgYnkgdGhlIENvbnRlbnQgU2VjdXJpdHkgUG9saWN5
IExldmVsIDMgc3BlYy4sIHdlIGFsbG93IGEgZGF0YSBVUkwgdG8gbWF0Y2gKICAgICAvLyAiaW1n
LXNyYyAqIiBhbmQgZWl0aGVyIGEgZGF0YSBVUkwgb3IgYmxvYiBVUkwgdG8gbWF0Y2ggIm1lZGlh
LXNyYyAqIiBmb3Igd2ViIGNvbXBhdGliaWxpdHkuCi0gICAgLy8gRklYTUU6IFdlIHNob3VsZCBu
b3QgaGFyZGNvZGUgdGhlIGRpcmVjdGl2ZSBuYW1lcy4gV2Ugc2hvdWxkIG1ha2UgdXNlIG9mIHRo
ZSBjb25zdGFudHMgaW4gQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdC5jcHAuCi0g
ICAgLy8gU2VlIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU1MTMz
Pi4KICAgICBib29sIGlzQWxsb3dlZCA9IHVybC5wcm90b2NvbElzSW5IVFRQRmFtaWx5KCk7Ci0g
ICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG1fZGlyZWN0aXZlTmFtZSwgImlt
Zy1zcmMiKSkKKyAgICBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShtX2RpcmVjdGl2ZU5hbWUs
IENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzOjppbWdTcmMpKQogICAgICAgICBp
c0FsbG93ZWQgfD0gdXJsLnByb3RvY29sSXNEYXRhKCk7Ci0gICAgZWxzZSBpZiAoZXF1YWxMZXR0
ZXJzSWdub3JpbmdBU0NJSUNhc2UobV9kaXJlY3RpdmVOYW1lLCAibWVkaWEtc3JjIikpCisgICAg
ZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShtX2RpcmVjdGl2ZU5hbWUsIENvbnRlbnRT
ZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzOjptZWRpYVNyYykpCiAgICAgICAgIGlzQWxsb3dl
ZCB8PSB1cmwucHJvdG9jb2xJc0RhdGEoKSB8fCB1cmwucHJvdG9jb2xJc0Jsb2IoKTsKICAgICBy
ZXR1cm4gaXNBbGxvd2VkOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3Av
Q29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdERpcmVjdGl2ZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0RGlyZWN0aXZlLmNw
cAppbmRleCA0YzRmMTFjNDJlNGI1MWY5NmFjZjVkODZmNGI0ZjU1NjgzYWUyOGY1Li40NjFkYTFk
ZjAwYTU5ODVjNjcyYjFhOWMyYWQxYjQwMjQyMDM3NGM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0RGlyZWN0aXZlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3Vy
Y2VMaXN0RGlyZWN0aXZlLmNwcApAQCAtMjgsMTMgKzI4LDE0IEBACiAjaW5jbHVkZSAiQ29udGVu
dFNlY3VyaXR5UG9saWN5U291cmNlTGlzdERpcmVjdGl2ZS5oIgogCiAjaW5jbHVkZSAiQ29udGVu
dFNlY3VyaXR5UG9saWN5LmgiCisjaW5jbHVkZSAiQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0
aXZlTGlzdC5oIgogI2luY2x1ZGUgIlVSTC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUNv
bnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3REaXJlY3RpdmU6OkNvbnRlbnRTZWN1cml0eVBv
bGljeVNvdXJjZUxpc3REaXJlY3RpdmUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcm
IHZhbHVlLCBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3kmIHBvbGljeSkKLSAgICA6IENvbnRl
bnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZShuYW1lLCB2YWx1ZSwgcG9saWN5KQotICAgICwgbV9z
b3VyY2VMaXN0KHBvbGljeSwgbmFtZSkKK0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3RE
aXJlY3RpdmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3REaXJlY3RpdmUoY29uc3Qg
Q29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdCYgZGlyZWN0aXZlTGlzdCwgY29uc3Qg
U3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlKQorICAgIDogQ29udGVudFNlY3VyaXR5
UG9saWN5RGlyZWN0aXZlKGRpcmVjdGl2ZUxpc3QsIG5hbWUsIHZhbHVlKQorICAgICwgbV9zb3Vy
Y2VMaXN0KGRpcmVjdGl2ZUxpc3QucG9saWN5KCksIG5hbWUpCiB7CiAgICAgbV9zb3VyY2VMaXN0
LnBhcnNlKHZhbHVlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0Nv
bnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3REaXJlY3RpdmUuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3REaXJlY3RpdmUuaAppbmRl
eCBhYzY1MDA1MmRjMWU1OTEyZmMxZDVmNDY2NWRiNWQzZTNjZmM1ZTczLi5iODVhOGU4ZmY5MGNm
MDQ1MGM5ZjE0ZTc3MmNhMWMwMDE0Zjg1MWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0RGlyZWN0aXZlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdERp
cmVjdGl2ZS5oCkBAIC0zMiwxMSArMzIsMTEgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1j
bGFzcyBDb250ZW50U2VjdXJpdHlQb2xpY3k7CitjbGFzcyBDb250ZW50U2VjdXJpdHlQb2xpY3lE
aXJlY3RpdmVMaXN0OwogCiBjbGFzcyBDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0RGly
ZWN0aXZlIDogcHVibGljIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZSB7CiBwdWJsaWM6
Ci0gICAgQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdERpcmVjdGl2ZShjb25zdCBTdHJp
bmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUsIGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGlj
eSYpOworICAgIENvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3REaXJlY3RpdmUoY29uc3Qg
Q29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdCYsIGNvbnN0IFN0cmluZyYgbmFtZSwg
Y29uc3QgU3RyaW5nJiB2YWx1ZSk7CiAKICAgICBib29sIGFsbG93cyhjb25zdCBVUkwmKTsKICAg
ICBib29sIGFsbG93cyhjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lIYXNoJikgY29uc3Q7Cg==
</data>
<flag name="review"
          id="299251"
          type_id="1"
          status="+"
          setter="bfulgham"
    />
          </attachment>
      

    </bug>

</bugzilla>