<?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>155623</bug_id>
          
          <creation_ts>2016-03-17 21:04:35 -0700</creation_ts>
          <short_desc>Cleanup: Remove the need to pass reporting status to ContentSecurityPolicy functions</short_desc>
          <delta_ts>2016-03-17 23:32:33 -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></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>commit-queue</cc>
    
    <cc>mkwst</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1176020</commentid>
    <comment_count>0</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2016-03-17 21:04:35 -0700</bug_when>
    <thetext>ScriptController::initScript() is the only function that passes ContentSecurityPolicy::ReportingStatus::SuppressReport() following the removal of the SecurityPolicy script interface in &lt;http://trac.webkit.org/changeset/197142&gt; (bug #154694). We can refactor the logic in ScriptController::initScript() such that it delegates to the ContentSecurityPolicy object to enable/disable JavaScript eval()/operator eval in the newly initialized world.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1176024</commentid>
    <comment_count>1</comment_count>
      <attachid>274367</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2016-03-17 21:08:35 -0700</bug_when>
    <thetext>Created attachment 274367
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1176041</commentid>
    <comment_count>2</comment_count>
      <attachid>274367</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2016-03-17 22:43:59 -0700</bug_when>
    <thetext>Comment on attachment 274367
Patch

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

r=me

Do you anticipate adding more uses of SuppressReport in later patches, or is ContentSecurityPolicyDirectiveList::allowEval() the only function that will ever be passed ReportingStatus::SuppressReport? I&apos;m wondering if you considered further simplifying this by removing the reportingStatus argument and associated branch from the other allow functions in ContentSecurityPolicyDirectiveList.

&gt; Source/WebCore/page/csp/ContentSecurityPolicy.h:44
&gt; +class JSDOMWindowShell;

Should be listed after DOMStringList.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1176044</commentid>
    <comment_count>3</comment_count>
      <attachid>274367</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-03-17 22:59:18 -0700</bug_when>
    <thetext>Comment on attachment 274367
Patch

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

&gt; Source/WebCore/page/csp/ContentSecurityPolicy.cpp:97
&gt; +    ASSERT(windowShell.window());
&gt; +    ASSERT(windowShell.window()-&gt;scriptExecutionContext());
&gt; +    ASSERT(windowShell.window()-&gt;scriptExecutionContext()-&gt;contentSecurityPolicy() == this);
&gt; +    JSDOMWindow* window = windowShell.window();

It would have less redundancy if you put the assertions after the pointer declaration and used window in your assertions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1176056</commentid>
    <comment_count>4</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2016-03-17 23:26:06 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Do you anticipate adding more uses of SuppressReport in later patches

No.

&gt; , or is ContentSecurityPolicyDirectiveList::allowEval() the only function that will
&gt; ever be passed ReportingStatus::SuppressReport? 

It is the only function.

&gt; I&apos;m wondering if you considered further simplifying this by removing the
&gt; reportingStatus argument and associated branch from the other allow functions in
&gt; ContentSecurityPolicyDirectiveList.
&gt; 

Yes, I plan to completely remove the ReportingStatus enum and it use throughout ContentSecurityPolicyDirectiveList. This patch is the first step.

&gt; &gt; Source/WebCore/page/csp/ContentSecurityPolicy.h:44
&gt; &gt; +class JSDOMWindowShell;
&gt; 
&gt; Should be listed after DOMStringList.

Will fix before landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1176059</commentid>
    <comment_count>5</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2016-03-17 23:28:06 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Comment on attachment 274367 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=274367&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/page/csp/ContentSecurityPolicy.cpp:97
&gt; &gt; +    ASSERT(windowShell.window());
&gt; &gt; +    ASSERT(windowShell.window()-&gt;scriptExecutionContext());
&gt; &gt; +    ASSERT(windowShell.window()-&gt;scriptExecutionContext()-&gt;contentSecurityPolicy() == this);
&gt; &gt; +    JSDOMWindow* window = windowShell.window();
&gt; 
&gt; It would have less redundancy if you put the assertions after the pointer
&gt; declaration and used window in your assertions.

Will fix before landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1176063</commentid>
    <comment_count>6</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2016-03-17 23:32:33 -0700</bug_when>
    <thetext>Committed r198379: &lt;http://trac.webkit.org/changeset/198379&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>274367</attachid>
            <date>2016-03-17 21:08:35 -0700</date>
            <delta_ts>2016-03-17 22:43:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-155623-20160317210834.patch</filename>
            <type>text/plain</type>
            <size>57166</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk4MzU4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2Y1YWYwN2U3YjVlODJk
ZjI1YzM3YzUxNmJmYWU0ODc1OWNlZWVjYS4uNDU1ZmIxMjNjY2RhODcxOWYzYjczYTFlZGZhZjQ1
OWZjYmMyZjc2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg4IEBACisyMDE2LTAzLTE3ICBEYW5p
ZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBDbGVhbnVwOiBSZW1vdmUg
dGhlIG5lZWQgdG8gcGFzcyByZXBvcnRpbmcgc3RhdHVzIHRvIENvbnRlbnRTZWN1cml0eVBvbGlj
eSBmdW5jdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE1NTYyMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFNjcmlwdENvbnRyb2xsZXI6OmluaXRTY3JpcHQoKSBpcyB0aGUgb25seSBmdW5jdGlvbiB0
aGF0IHBhc3NlcyBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJlcG9ydGluZ1N0YXR1czo6U3VwcHJl
c3NSZXBvcnQKKyAgICAgICAgZm9sbG93aW5nIHRoZSByZW1vdmFsIG9mIHRoZSBTZWN1cml0eVBv
bGljeSBzY3JpcHQgaW50ZXJmYWNlIGluIDxodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNl
dC8xOTcxNDI+LiBJdAorICAgICAgICBwYXNzZXMgdGhpcyByZXBvcnRpbmcgc3RhdHVzIHRvIHBy
ZXZlbnQgc2VuZGluZyBhIHZpb2xhdGlvbiByZXBvcnQgd2hlbiBkZXRlcm1pbmluZyB3aGV0aGVy
IHRoZSBDU1AgcG9saWN5IGFsbG93cworICAgICAgICB1c2Ugb2YgdGhlIEphdmFTY3JpcHQgZXZh
bCgpL29wZXJhdG9yIGV2YWwgc28gdGhhdCBpdCBlbmFibGUgb3IgZGlzYWJsZSB0aGlzIGNhcGFi
aWxpdHkgYXMgYXBwcm9wcmlhdGUuIFdlCisgICAgICAgIHNob3VsZCB0ZWFjaCBTY3JpcHRDb250
cm9sbGVyOjppbml0U2NyaXB0KCkgdG8gZGVsZWdhdGUgdGhlIHJlc3BvbnNpYmlsaXR5IG9mIGVu
YWJsaW5nL2Rpc2FibGluZyB0aGlzIGNhcGFiaWxpdHkKKyAgICAgICAgdG8gdGhlIENvbnRlbnRT
ZWN1cml0eVBvbGljeS4gVGhlbiB3ZSBjYW4gcmVtb3ZlIHRoZSBuZWVkIHRvIGV4cG9zZSBDb250
ZW50U2VjdXJpdHlQb2xpY3k6OlJlcG9ydGluZ1N0YXR1cyBhcworICAgICAgICBwYXJ0IG9mIHRo
ZSBDb250ZW50U2VjdXJpdHlQb2xpY3kgaW50ZXJmYWNlLgorCisgICAgICAgIE5vIGZ1bmN0aW9u
YWxpdHkgY2hhbmdlZC4gU28sIG5vIG5ldyB0ZXN0cy4KKworICAgICAgICAqIGJpbmRpbmdzL2pz
L1NjcmlwdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxl
cjo6Y3JlYXRlV2luZG93U2hlbGwpOiBSZXR1cm4gYSByZWZlcmVuY2UgdG8gYSBKU0RPTVdpbmRv
d1NoZWxsIG9iamVjdAorICAgICAgICBpbnN0ZWFkIG9mIGEgcG9pbnRlciBhcyB0aGUgcG9pbnRl
ciBpcyBhbHdheXMgbm9uLW51bGwuCisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVy
Ojppbml0U2NyaXB0KTogVXBkYXRlZCBhcyBuZWVkZWQgbm93IHRoYXQgU2NyaXB0Q29udHJvbGxl
cjo6Y3JlYXRlV2luZG93U2hlbGwoKQorICAgICAgICByZXR1cm5zIGEgcmVmZXJlbmNlLiBNb3Zl
ZCBsb2dpYyB0byBlbmFibGUvZGlzYWJsZSBKYXZhU2NyaXB0IGV2YWwoKSBhbmQgb3BlcmF0b3Ig
ZXZhbCBmcm9tIGhlcmUgaW50bworICAgICAgICBDb250ZW50U2VjdXJpdHlQb2xpY3k6OmRpZENy
ZWF0ZVdpbmRvd1NoZWxsKCkgYW5kIG1ha2UgdXNlIG9mIHRoaXMgbWVtYmVyIGZ1bmN0aW9uLgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBwYWdl
L2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVu
dFNlY3VyaXR5UG9saWN5OjpkaWRDcmVhdGVXaW5kb3dTaGVsbCk6IEFkZGVkLiBNb3ZlZCBsb2dp
YyBmcm9tIHRvIGVuYWJsZS9kaXNhYmxlIEphdmFTY3JpcHQKKyAgICAgICAgZXZhbCgpIGFuZCBv
cGVyYXRvciBldmFsIGZyb20gU2NyaXB0Q29udHJvbGxlcjo6aW5pdFNjcmlwdCgpIHRvIGhlcmUu
CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3k6OmRpZFJlY2VpdmVIZWFk
ZXIpOiBTdWJzdGl0dXRlIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OlJlcG9y
dGluZ1N0YXR1czo6U3VwcHJlc3NSZXBvcnQKKyAgICAgICAgZm9yIENvbnRlbnRTZWN1cml0eVBv
bGljeTo6UmVwb3J0aW5nU3RhdHVzOjpTdXBwcmVzc1JlcG9ydCBhcyB0aGUgZW51bSBoYXMgbW92
ZWQgZnJvbSBjbGFzcyBDb250ZW50U2VjdXJpdHlQb2xpY3kKKyAgICAgICAgdG8gQ29udGVudFNl
Y3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdC4gRml4IG1pbm9yIGNvZGUgc3R5bGUgbml0OyBzdWJz
dGl0dXRlIG51bGxwdHIgZm9yIDAgaW4gdGhlIGZpcnN0IGFyZ3VtZW50CisgICAgICAgIHRvIENv
bnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OmFsbG93RXZhbCgpLgorICAgICAgICAo
V2ViQ29yZTo6aXNBbGxvd2VkQnlBbGxXaXRoRnJhbWUpOiBTdWJzdGl0dXRlIENvbnRlbnRTZWN1
cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OlJlcG9ydGluZ1N0YXR1czo6U3VwcHJlc3NSZXBvcnQK
KyAgICAgICAgZm9yIENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVwb3J0aW5nU3RhdHVzOjpTdXBw
cmVzc1JlcG9ydCBhcyB0aGUgZW51bSBoYXMgbW92ZWQgZnJvbSBjbGFzcyBDb250ZW50U2VjdXJp
dHlQb2xpY3kKKyAgICAgICAgdG8gQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdC4K
KyAgICAgICAgKFdlYkNvcmU6OmlzQWxsb3dlZEJ5QWxsKTogU3Vic3RpdHV0ZSBDb250ZW50U2Vj
dXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0OjpSZXBvcnRpbmdTdGF0dXM6OlN1cHByZXNzUmVwb3J0
CisgICAgICAgIGZvciBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJlcG9ydGluZ1N0YXR1czo6U3Vw
cHJlc3NSZXBvcnQgYXMgdGhlIGVudW0gaGFzIG1vdmVkIGZyb20gY2xhc3MgQ29udGVudFNlY3Vy
aXR5UG9saWN5CisgICAgICAgIHRvIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Qu
IEFsc28gbWFrZSB0aGlzIGZ1bmN0aW9uIHN0YXRpYyBzbyB0aGF0IGl0IGhhcyBpbnRlcm5hbCBs
aW5rYWdlLgorICAgICAgICAoV2ViQ29yZTo6aXNBbGxvd2VkQnlBbGxXaXRoU3RhdGUpOiBEaXR0
by4KKyAgICAgICAgKFdlYkNvcmU6OmlzQWxsb3dlZEJ5QWxsV2l0aENvbnRleHQpOiBEaXR0by4K
KyAgICAgICAgKFdlYkNvcmU6OmlzQWxsb3dlZEJ5QWxsV2l0aEhhc2hGcm9tQ29udGVudCk6IERp
dHRvLgorICAgICAgICAoV2ViQ29yZTo6aXNBbGxvd2VkQnlBbGxXaXRoVVJMKTogRGl0dG8uCisg
ICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93SmF2YVNjcmlwdFVS
THMpOiBSZW1vdmUgYXJndW1lbnQgcmVwb3J0aW5nU3RhdHVzIGFuZCBhbHdheXMgcGFzcworICAg
ICAgICBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0OjpSZXBvcnRpbmdTdGF0dXM6
OlNlbmRSZXBvcnQgdG8gdGhlIGRpcmVjdGl2ZSBsaXN0IG1lbWJlciBmdW5jdGlvbi4gSW4gYQor
ICAgICAgICBzdWJzZXF1ZW50IHBhdGNoIHdlIHdpbGwgcmVtb3ZlIHRoZSBuZWVkIHRvIHBhc3Mg
dGhlIHJlcG9ydGluZyBzdGF0dXMgdG8gdGhlIGRpcmVjdGl2ZSBsaXN0IG1lbWJlciBmdW5jdGlv
bi4KKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeTo6YWxsb3dJbmxpbmVF
dmVudEhhbmRsZXJzKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQ
b2xpY3k6OmFsbG93SW5saW5lU2NyaXB0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpDb250
ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93SW5saW5lU3R5bGUpOiBEaXR0by4KKyAgICAgICAgKFdl
YkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeTo6YWxsb3dFdmFsKTogRGl0dG8uCisgICAgICAg
IChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93RnJhbWVBbmNlc3RvcnMpOiBE
aXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeTo6YWxsb3dQbHVn
aW5UeXBlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3k6
OmFsbG93U2NyaXB0RnJvbVNvdXJjZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Q29udGVu
dFNlY3VyaXR5UG9saWN5OjphbGxvd09iamVjdEZyb21Tb3VyY2UpOiBEaXR0by4KKyAgICAgICAg
KFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeTo6YWxsb3dDaGlsZEZyYW1lRnJvbVNvdXJj
ZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5OjphbGxv
d0NoaWxkQ29udGV4dEZyb21Tb3VyY2UpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkNvbnRl
bnRTZWN1cml0eVBvbGljeTo6YWxsb3dJbWFnZUZyb21Tb3VyY2UpOiBEaXR0by4KKyAgICAgICAg
KFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeTo6YWxsb3dTdHlsZUZyb21Tb3VyY2UpOiBE
aXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeTo6YWxsb3dGb250
RnJvbVNvdXJjZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9s
aWN5OjphbGxvd01lZGlhRnJvbVNvdXJjZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Q29u
dGVudFNlY3VyaXR5UG9saWN5OjphbGxvd0Nvbm5lY3RUb1NvdXJjZSk6IERpdHRvLgorICAgICAg
ICAoV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5OjphbGxvd0Zvcm1BY3Rpb24pOiBEaXR0
by4KKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeTo6YWxsb3dCYXNlVVJJ
KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3k6OmV2YWxE
aXNhYmxlZEVycm9yTWVzc2FnZSk6IERlbGV0ZWQuCisgICAgICAgICogcGFnZS9jc3AvQ29udGVu
dFNlY3VyaXR5UG9saWN5Lmg6CisgICAgICAgICogcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9s
aWN5RGlyZWN0aXZlTGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQ
b2xpY3lEaXJlY3RpdmVMaXN0OjphbGxvd0phdmFTY3JpcHRVUkxzKTogU3Vic3RpdHV0ZSBSZXBv
cnRpbmdTdGF0dXMgZm9yCisgICAgICAgIENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVwb3J0aW5n
U3RhdHVzIGFzIHRoZSBlbnVtIGhhcyBtb3ZlZCBmcm9tIGNsYXNzIENvbnRlbnRTZWN1cml0eVBv
bGljeSB0byB0aGlzIGNsYXNzLgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9s
aWN5RGlyZWN0aXZlTGlzdDo6YWxsb3dJbmxpbmVFdmVudEhhbmRsZXJzKTogRGl0dG8uCisgICAg
ICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0OjphbGxvd0lu
bGluZVNjcmlwdCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9s
aWN5RGlyZWN0aXZlTGlzdDo6YWxsb3dJbmxpbmVTdHlsZSk6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6YWxsb3dFdmFsKTogRGl0
dG8uCisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0
OjphbGxvd1BsdWdpblR5cGUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1
cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OmFsbG93U2NyaXB0RnJvbVNvdXJjZSk6IERpdHRvLgor
ICAgICAgICAoV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6YWxs
b3dPYmplY3RGcm9tU291cmNlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2Vj
dXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0OjphbGxvd0NoaWxkQ29udGV4dEZyb21Tb3VyY2UpOiBE
aXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxp
c3Q6OmFsbG93Q2hpbGRGcmFtZUZyb21Tb3VyY2UpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6
OkNvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OmFsbG93SW1hZ2VGcm9tU291cmNl
KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3Rp
dmVMaXN0OjphbGxvd1N0eWxlRnJvbVNvdXJjZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6
Q29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6YWxsb3dGb250RnJvbVNvdXJjZSk6
IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZl
TGlzdDo6YWxsb3dNZWRpYUZyb21Tb3VyY2UpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkNv
bnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OmFsbG93Q29ubmVjdFRvU291cmNlKTog
RGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVM
aXN0OjphbGxvd0Zvcm1BY3Rpb24pOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRT
ZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OmFsbG93QmFzZVVSSSk6IERpdHRvLgorICAgICAg
ICAoV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6YWxsb3dGcmFt
ZUFuY2VzdG9ycyk6IERpdHRvLgorICAgICAgICAqIHBhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBv
bGljeURpcmVjdGl2ZUxpc3QuaDoKKwogMjAxNi0wMy0xNyAgQnJhZHkgRWlkc29uICA8YmVpZHNv
bkBhcHBsZS5jb20+CiAKICAgICAgICAgRG9uJ3QgdHJ5IHRvIHJlc3RvcmUgZGVsZXRlZCBNZW1v
cnlJbmRleGVzIGlmIHRoZWlyIG93bmluZyBvYmplY3Qgc3RvcmUgaXMgbm90IHJlc3RvcmVkLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcAppbmRl
eCBhYWU1YzNlMzhkOTM3N2RiYTU5NjA2M2FlNGNmOGI2YzllZDc5MTk1Li4xNjYxMWE1NzMwZmUx
NzhiZDY4YzE1YmVlZWJlODZjMWYxMTE0ZDA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcApAQCAtMTIzLDcgKzEyMyw3IEBAIHZvaWQgU2Ny
aXB0Q29udHJvbGxlcjo6ZGVzdHJveVdpbmRvd1NoZWxsKERPTVdyYXBwZXJXb3JsZCYgd29ybGQp
CiAgICAgd29ybGQuZGlkRGVzdHJveVdpbmRvd1NoZWxsKHRoaXMpOwogfQogCi1KU0RPTVdpbmRv
d1NoZWxsKiBTY3JpcHRDb250cm9sbGVyOjpjcmVhdGVXaW5kb3dTaGVsbChET01XcmFwcGVyV29y
bGQmIHdvcmxkKQorSlNET01XaW5kb3dTaGVsbCYgU2NyaXB0Q29udHJvbGxlcjo6Y3JlYXRlV2lu
ZG93U2hlbGwoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCkKIHsKICAgICBBU1NFUlQoIW1fd2luZG93
U2hlbGxzLmNvbnRhaW5zKCZ3b3JsZCkpOwogCkBAIC0xMzQsNyArMTM0LDcgQEAgSlNET01XaW5k
b3dTaGVsbCogU2NyaXB0Q29udHJvbGxlcjo6Y3JlYXRlV2luZG93U2hlbGwoRE9NV3JhcHBlcldv
cmxkJiB3b3JsZCkKICAgICBTdHJvbmc8SlNET01XaW5kb3dTaGVsbD4gd2luZG93U2hlbGwyKHdp
bmRvd1NoZWxsKTsKICAgICBtX3dpbmRvd1NoZWxscy5hZGQoJndvcmxkLCB3aW5kb3dTaGVsbCk7
CiAgICAgd29ybGQuZGlkQ3JlYXRlV2luZG93U2hlbGwodGhpcyk7Ci0gICAgcmV0dXJuIHdpbmRv
d1NoZWxsLmdldCgpOworICAgIHJldHVybiAqd2luZG93U2hlbGwuZ2V0KCk7CiB9CiAKIERlcHJl
Y2F0ZWQ6OlNjcmlwdFZhbHVlIFNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRlSW5Xb3JsZChjb25z
dCBTY3JpcHRTb3VyY2VDb2RlJiBzb3VyY2VDb2RlLCBET01XcmFwcGVyV29ybGQmIHdvcmxkLCBF
eGNlcHRpb25EZXRhaWxzKiBleGNlcHRpb25EZXRhaWxzKQpAQCAtMjQ5LDI3ICsyNDksMjIgQEAg
SlNET01XaW5kb3dTaGVsbCogU2NyaXB0Q29udHJvbGxlcjo6aW5pdFNjcmlwdChET01XcmFwcGVy
V29ybGQmIHdvcmxkKQogCiAgICAgSlNMb2NrSG9sZGVyIGxvY2sod29ybGQudm0oKSk7CiAKLSAg
ICBKU0RPTVdpbmRvd1NoZWxsKiB3aW5kb3dTaGVsbCA9IGNyZWF0ZVdpbmRvd1NoZWxsKHdvcmxk
KTsKKyAgICBKU0RPTVdpbmRvd1NoZWxsJiB3aW5kb3dTaGVsbCA9IGNyZWF0ZVdpbmRvd1NoZWxs
KHdvcmxkKTsKIAotICAgIHdpbmRvd1NoZWxsLT53aW5kb3coKS0+dXBkYXRlRG9jdW1lbnQoKTsK
KyAgICB3aW5kb3dTaGVsbC53aW5kb3coKS0+dXBkYXRlRG9jdW1lbnQoKTsKIAotICAgIGlmICht
X2ZyYW1lLmRvY3VtZW50KCkpIHsKLSAgICAgICAgYm9vbCBzaG91bGRCeXBhc3NNYWluV29ybGRD
b250ZW50U2VjdXJpdHlQb2xpY3kgPSAhd29ybGQuaXNOb3JtYWwoKTsKLSAgICAgICAgaWYgKHNo
b3VsZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSkKLSAgICAgICAgICAgIHdp
bmRvd1NoZWxsLT53aW5kb3coKS0+c2V0RXZhbEVuYWJsZWQodHJ1ZSk7Ci0gICAgICAgIGVsc2UK
LSAgICAgICAgICAgIHdpbmRvd1NoZWxsLT53aW5kb3coKS0+c2V0RXZhbEVuYWJsZWQobV9mcmFt
ZS5kb2N1bWVudCgpLT5jb250ZW50U2VjdXJpdHlQb2xpY3koKS0+YWxsb3dFdmFsKDAsIHNob3Vs
ZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSwgQ29udGVudFNlY3VyaXR5UG9s
aWN5OjpSZXBvcnRpbmdTdGF0dXM6OlN1cHByZXNzUmVwb3J0KSwgbV9mcmFtZS5kb2N1bWVudCgp
LT5jb250ZW50U2VjdXJpdHlQb2xpY3koKS0+ZXZhbERpc2FibGVkRXJyb3JNZXNzYWdlKCkpOwot
ICAgIH0KKyAgICBpZiAoRG9jdW1lbnQqIGRvY3VtZW50ID0gbV9mcmFtZS5kb2N1bWVudCgpKQor
ICAgICAgICBkb2N1bWVudC0+Y29udGVudFNlY3VyaXR5UG9saWN5KCktPmRpZENyZWF0ZVdpbmRv
d1NoZWxsKHdpbmRvd1NoZWxsKTsKIAogICAgIGlmIChQYWdlKiBwYWdlID0gbV9mcmFtZS5wYWdl
KCkpIHsKLSAgICAgICAgYXR0YWNoRGVidWdnZXIod2luZG93U2hlbGwsIHBhZ2UtPmRlYnVnZ2Vy
KCkpOwotICAgICAgICB3aW5kb3dTaGVsbC0+d2luZG93KCktPnNldFByb2ZpbGVHcm91cChwYWdl
LT5ncm91cCgpLmlkZW50aWZpZXIoKSk7Ci0gICAgICAgIHdpbmRvd1NoZWxsLT53aW5kb3coKS0+
c2V0Q29uc29sZUNsaWVudCgmcGFnZS0+Y29uc29sZSgpKTsKKyAgICAgICAgYXR0YWNoRGVidWdn
ZXIoJndpbmRvd1NoZWxsLCBwYWdlLT5kZWJ1Z2dlcigpKTsKKyAgICAgICAgd2luZG93U2hlbGwu
d2luZG93KCktPnNldFByb2ZpbGVHcm91cChwYWdlLT5ncm91cCgpLmlkZW50aWZpZXIoKSk7Cisg
ICAgICAgIHdpbmRvd1NoZWxsLndpbmRvdygpLT5zZXRDb25zb2xlQ2xpZW50KCZwYWdlLT5jb25z
b2xlKCkpOwogICAgIH0KIAogICAgIG1fZnJhbWUubG9hZGVyKCkuZGlzcGF0Y2hEaWRDbGVhcldp
bmRvd09iamVjdEluV29ybGQod29ybGQpOwogCi0gICAgcmV0dXJuIHdpbmRvd1NoZWxsOworICAg
IHJldHVybiAmd2luZG93U2hlbGw7CiB9CiAKIFRleHRQb3NpdGlvbiBTY3JpcHRDb250cm9sbGVy
OjpldmVudEhhbmRsZXJQb3NpdGlvbigpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TY3JpcHRDb250cm9sbGVyLmgKaW5kZXggNjJhNTFiODU1ZTE2YWM1MGNkOTUwOWYzMDJl
MmI4ZDg1MjlkMzU0OC4uMjI3YjBkMWJlN2FkOGRlNWE1NTczNjMwZTQ2MjE2Y2FhZWU0MmUxNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaApAQCAt
NzksNyArNzksNyBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPERP
TVdyYXBwZXJXb3JsZD4gY3JlYXRlV29ybGQoKTsKIAotICAgIEpTRE9NV2luZG93U2hlbGwqIGNy
ZWF0ZVdpbmRvd1NoZWxsKERPTVdyYXBwZXJXb3JsZCYpOworICAgIEpTRE9NV2luZG93U2hlbGwm
IGNyZWF0ZVdpbmRvd1NoZWxsKERPTVdyYXBwZXJXb3JsZCYpOwogICAgIHZvaWQgZGVzdHJveVdp
bmRvd1NoZWxsKERPTVdyYXBwZXJXb3JsZCYpOwogCiAgICAgVmVjdG9yPEpTQzo6U3Ryb25nPEpT
RE9NV2luZG93U2hlbGw+PiB3aW5kb3dTaGVsbHMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3BwCmluZGV4IDlkOTVkMDY4Mzg3ZTBiY2Ri
Y2RmODc3ZGMxOGY1MjdlZDdmZmZkOTguLjRlNGY2YTg4OTgxMDY2MmFkZjRjMTY3YzllNzMyMDg0
Y2M1OTY5MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1
cml0eVBvbGljeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3Vy
aXR5UG9saWN5LmNwcApAQCAtNDEsNiArNDEsNyBAQAogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5j
bHVkZSAiSFRNTFBhcnNlcklkaW9tcy5oIgogI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRh
dGlvbi5oIgorI2luY2x1ZGUgIkpTRE9NV2luZG93U2hlbGwuaCIKICNpbmNsdWRlICJKU01haW5U
aHJlYWRFeGVjU3RhdGUuaCIKICNpbmNsdWRlICJQYXJzaW5nVXRpbGl0aWVzLmgiCiAjaW5jbHVk
ZSAiUGluZ0xvYWRlci5oIgpAQCAtODgsNiArODksMTkgQEAgdm9pZCBDb250ZW50U2VjdXJpdHlQ
b2xpY3k6OmNvcHlTdGF0ZUZyb20oY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5KiBvdGhlcikK
ICAgICAgICAgZGlkUmVjZWl2ZUhlYWRlcihwb2xpY3ktPmhlYWRlcigpLCBwb2xpY3ktPmhlYWRl
clR5cGUoKSwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpQb2xpY3lGcm9tOjpJbmhlcml0ZWQpOwog
fQogCit2b2lkIENvbnRlbnRTZWN1cml0eVBvbGljeTo6ZGlkQ3JlYXRlV2luZG93U2hlbGwoSlNE
T01XaW5kb3dTaGVsbCYgd2luZG93U2hlbGwpIGNvbnN0Cit7CisgICAgQVNTRVJUKHdpbmRvd1No
ZWxsLndpbmRvdygpKTsKKyAgICBBU1NFUlQod2luZG93U2hlbGwud2luZG93KCktPnNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKSk7CisgICAgQVNTRVJUKHdpbmRvd1NoZWxsLndpbmRvdygpLT5zY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCktPmNvbnRlbnRTZWN1cml0eVBvbGljeSgpID09IHRoaXMpOwor
ICAgIEpTRE9NV2luZG93KiB3aW5kb3cgPSB3aW5kb3dTaGVsbC53aW5kb3coKTsKKyAgICBpZiAo
IXdpbmRvd1NoZWxsLndvcmxkKCkuaXNOb3JtYWwoKSkgeworICAgICAgICB3aW5kb3ctPnNldEV2
YWxFbmFibGVkKHRydWUpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIHdpbmRvdy0+c2V0
RXZhbEVuYWJsZWQobV9sYXN0UG9saWN5RXZhbERpc2FibGVkRXJyb3JNZXNzYWdlLmlzTnVsbCgp
LCBtX2xhc3RQb2xpY3lFdmFsRGlzYWJsZWRFcnJvck1lc3NhZ2UpOworfQorCiBDb250ZW50U2Vj
dXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMgQ29udGVudFNlY3VyaXR5UG9saWN5OjpyZXNwb25z
ZUhlYWRlcnMoKSBjb25zdAogewogICAgIENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVh
ZGVycyByZXN1bHQ7CkBAIC0xMTksNyArMTMzLDcgQEAgdm9pZCBDb250ZW50U2VjdXJpdHlQb2xp
Y3k6OmRpZFJlY2VpdmVIZWFkZXIoY29uc3QgU3RyaW5nJiBoZWFkZXIsIENvbnRlbnRTZWN1cmkK
ICAgICAgICAgLy8gaGVhZGVyMSxoZWFkZXIyIE9SIGhlYWRlcjEKICAgICAgICAgLy8gICAgICAg
IF4gICAgICAgICAgICAgICAgICBeCiAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxDb250ZW50U2Vj
dXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0PiBwb2xpY3kgPSBDb250ZW50U2VjdXJpdHlQb2xpY3lE
aXJlY3RpdmVMaXN0OjpjcmVhdGUoKnRoaXMsIFN0cmluZyhiZWdpbiwgcG9zaXRpb24gLSBiZWdp
biksIHR5cGUsIHBvbGljeUZyb20pOwotICAgICAgICBpZiAoIXBvbGljeS0+YWxsb3dFdmFsKDAs
IENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVwb3J0aW5nU3RhdHVzOjpTdXBwcmVzc1JlcG9ydCkp
CisgICAgICAgIGlmICghcG9saWN5LT5hbGxvd0V2YWwobnVsbHB0ciwgQ29udGVudFNlY3VyaXR5
UG9saWN5RGlyZWN0aXZlTGlzdDo6UmVwb3J0aW5nU3RhdHVzOjpTdXBwcmVzc1JlcG9ydCkpCiAg
ICAgICAgICAgICBtX2xhc3RQb2xpY3lFdmFsRGlzYWJsZWRFcnJvck1lc3NhZ2UgPSBwb2xpY3kt
PmV2YWxEaXNhYmxlZEVycm9yTWVzc2FnZSgpOwogCiAgICAgICAgIG1fcG9saWNpZXMuYXBwZW5k
KHBvbGljeS5yZWxlYXNlKCkpOwpAQCAtMTYwLDggKzE3NCw4IEBAIGJvb2wgQ29udGVudFNlY3Vy
aXR5UG9saWN5Ojpwcm90b2NvbE1hdGNoZXNTZWxmKGNvbnN0IFVSTCYgdXJsKSBjb25zdAogICAg
IHJldHVybiBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKHVybC5wcm90b2NvbCgpLCBtX3NlbGZTb3Vy
Y2VQcm90b2NvbCk7CiB9CiAKLXRlbXBsYXRlPGJvb2wgKENvbnRlbnRTZWN1cml0eVBvbGljeURp
cmVjdGl2ZUxpc3Q6OiphbGxvd2VkKShjb25zdCBGcmFtZSYsIGNvbnN0IFVSTCYsIENvbnRlbnRT
ZWN1cml0eVBvbGljeTo6UmVwb3J0aW5nU3RhdHVzKSBjb25zdD4KLXN0YXRpYyBib29sIGlzQWxs
b3dlZEJ5QWxsV2l0aEZyYW1lKGNvbnN0IENTUERpcmVjdGl2ZUxpc3RWZWN0b3ImIHBvbGljaWVz
LCBjb25zdCBGcmFtZSYgZnJhbWUsIGNvbnN0IFVSTCYgdXJsLCBDb250ZW50U2VjdXJpdHlQb2xp
Y3k6OlJlcG9ydGluZ1N0YXR1cyByZXBvcnRpbmdTdGF0dXMpCit0ZW1wbGF0ZTxib29sIChDb250
ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0OjoqYWxsb3dlZCkoY29uc3QgRnJhbWUmLCBj
b25zdCBVUkwmLCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0OjpSZXBvcnRpbmdT
dGF0dXMpIGNvbnN0Pgorc3RhdGljIGJvb2wgaXNBbGxvd2VkQnlBbGxXaXRoRnJhbWUoY29uc3Qg
Q1NQRGlyZWN0aXZlTGlzdFZlY3RvciYgcG9saWNpZXMsIGNvbnN0IEZyYW1lJiBmcmFtZSwgY29u
c3QgVVJMJiB1cmwsIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OlJlcG9ydGlu
Z1N0YXR1cyByZXBvcnRpbmdTdGF0dXMpCiB7CiAgICAgZm9yIChhdXRvJiBwb2xpY3kgOiBwb2xp
Y2llcykgewogICAgICAgICBpZiAoIShwb2xpY3kuZ2V0KCktPiphbGxvd2VkKShmcmFtZSwgdXJs
LCByZXBvcnRpbmdTdGF0dXMpKQpAQCAtMTcwLDggKzE4NCw4IEBAIHN0YXRpYyBib29sIGlzQWxs
b3dlZEJ5QWxsV2l0aEZyYW1lKGNvbnN0IENTUERpcmVjdGl2ZUxpc3RWZWN0b3ImIHBvbGljaWVz
LCBjb25zCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXRlbXBsYXRlPGJvb2wgKENvbnRlbnRTZWN1
cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OiphbGxvd2VkKShDb250ZW50U2VjdXJpdHlQb2xpY3k6
OlJlcG9ydGluZ1N0YXR1cykgY29uc3Q+Ci1ib29sIGlzQWxsb3dlZEJ5QWxsKGNvbnN0IENTUERp
cmVjdGl2ZUxpc3RWZWN0b3ImIHBvbGljaWVzLCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJlcG9y
dGluZ1N0YXR1cyByZXBvcnRpbmdTdGF0dXMpCit0ZW1wbGF0ZTxib29sIChDb250ZW50U2VjdXJp
dHlQb2xpY3lEaXJlY3RpdmVMaXN0OjoqYWxsb3dlZCkoQ29udGVudFNlY3VyaXR5UG9saWN5RGly
ZWN0aXZlTGlzdDo6UmVwb3J0aW5nU3RhdHVzKSBjb25zdD4KK3N0YXRpYyBib29sIGlzQWxsb3dl
ZEJ5QWxsKGNvbnN0IENTUERpcmVjdGl2ZUxpc3RWZWN0b3ImIHBvbGljaWVzLCBDb250ZW50U2Vj
dXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0OjpSZXBvcnRpbmdTdGF0dXMgcmVwb3J0aW5nU3RhdHVz
KQogewogICAgIGZvciAoYXV0byYgcG9saWN5IDogcG9saWNpZXMpIHsKICAgICAgICAgaWYgKCEo
cG9saWN5LmdldCgpLT4qYWxsb3dlZCkocmVwb3J0aW5nU3RhdHVzKSkKQEAgLTE4MCw4ICsxOTQs
OCBAQCBib29sIGlzQWxsb3dlZEJ5QWxsKGNvbnN0IENTUERpcmVjdGl2ZUxpc3RWZWN0b3ImIHBv
bGljaWVzLCBDb250ZW50U2VjdXJpdHlQb2xpYwogICAgIHJldHVybiB0cnVlOwogfQogCi10ZW1w
bGF0ZTxib29sIChDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0OjoqYWxsb3dlZCko
SlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJlcG9ydGluZ1N0
YXR1cykgY29uc3Q+Ci1ib29sIGlzQWxsb3dlZEJ5QWxsV2l0aFN0YXRlKGNvbnN0IENTUERpcmVj
dGl2ZUxpc3RWZWN0b3ImIHBvbGljaWVzLCBKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIENvbnRlbnRT
ZWN1cml0eVBvbGljeTo6UmVwb3J0aW5nU3RhdHVzIHJlcG9ydGluZ1N0YXR1cykKK3RlbXBsYXRl
PGJvb2wgKENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OiphbGxvd2VkKShKU0M6
OkV4ZWNTdGF0ZSogc3RhdGUsIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OlJl
cG9ydGluZ1N0YXR1cykgY29uc3Q+CitzdGF0aWMgYm9vbCBpc0FsbG93ZWRCeUFsbFdpdGhTdGF0
ZShjb25zdCBDU1BEaXJlY3RpdmVMaXN0VmVjdG9yJiBwb2xpY2llcywgSlNDOjpFeGVjU3RhdGUq
IHN0YXRlLCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0OjpSZXBvcnRpbmdTdGF0
dXMgcmVwb3J0aW5nU3RhdHVzKQogewogICAgIGZvciAoYXV0byYgcG9saWN5IDogcG9saWNpZXMp
IHsKICAgICAgICAgaWYgKCEocG9saWN5LmdldCgpLT4qYWxsb3dlZCkoc3RhdGUsIHJlcG9ydGlu
Z1N0YXR1cykpCkBAIC0xOTAsOCArMjA0LDggQEAgYm9vbCBpc0FsbG93ZWRCeUFsbFdpdGhTdGF0
ZShjb25zdCBDU1BEaXJlY3RpdmVMaXN0VmVjdG9yJiBwb2xpY2llcywgSlNDOjpFeGVjU3QKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAotdGVtcGxhdGU8Ym9vbCAoQ29udGVudFNlY3VyaXR5UG9saWN5
RGlyZWN0aXZlTGlzdDo6KmFsbG93ZWQpKGNvbnN0IFN0cmluZyYsIGNvbnN0IFdURjo6T3JkaW5h
bE51bWJlciYsIENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVwb3J0aW5nU3RhdHVzKSBjb25zdD4K
LWJvb2wgaXNBbGxvd2VkQnlBbGxXaXRoQ29udGV4dChjb25zdCBDU1BEaXJlY3RpdmVMaXN0VmVj
dG9yJiBwb2xpY2llcywgY29uc3QgU3RyaW5nJiBjb250ZXh0VVJMLCBjb25zdCBXVEY6Ok9yZGlu
YWxOdW1iZXImIGNvbnRleHRMaW5lLCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJlcG9ydGluZ1N0
YXR1cyByZXBvcnRpbmdTdGF0dXMpCit0ZW1wbGF0ZTxib29sIChDb250ZW50U2VjdXJpdHlQb2xp
Y3lEaXJlY3RpdmVMaXN0OjoqYWxsb3dlZCkoY29uc3QgU3RyaW5nJiwgY29uc3QgV1RGOjpPcmRp
bmFsTnVtYmVyJiwgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6UmVwb3J0aW5n
U3RhdHVzKSBjb25zdD4KK3N0YXRpYyBib29sIGlzQWxsb3dlZEJ5QWxsV2l0aENvbnRleHQoY29u
c3QgQ1NQRGlyZWN0aXZlTGlzdFZlY3RvciYgcG9saWNpZXMsIGNvbnN0IFN0cmluZyYgY29udGV4
dFVSTCwgY29uc3QgV1RGOjpPcmRpbmFsTnVtYmVyJiBjb250ZXh0TGluZSwgQ29udGVudFNlY3Vy
aXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6UmVwb3J0aW5nU3RhdHVzIHJlcG9ydGluZ1N0YXR1cykK
IHsKICAgICBmb3IgKGF1dG8mIHBvbGljeSA6IHBvbGljaWVzKSB7CiAgICAgICAgIGlmICghKHBv
bGljeS5nZXQoKS0+KmFsbG93ZWQpKGNvbnRleHRVUkwsIGNvbnRleHRMaW5lLCByZXBvcnRpbmdT
dGF0dXMpKQpAQCAtMjI1LDcgKzIzOSw3IEBAIHN0YXRpYyBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRo
bSB0b0NyeXB0b0RpZ2VzdEFsZ29yaXRobShDb250ZW50U2VjdXJpdHlQb2xpY3lIYXNoCiB9CiAK
IHRlbXBsYXRlPGJvb2wgKENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OiphbGxv
d2VkKShjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lIYXNoJikgY29uc3Q+Ci1ib29sIGlzQWxs
b3dlZEJ5QWxsV2l0aEhhc2hGcm9tQ29udGVudChjb25zdCBDU1BEaXJlY3RpdmVMaXN0VmVjdG9y
JiBwb2xpY2llcywgY29uc3QgU3RyaW5nJiBjb250ZW50LCBjb25zdCBUZXh0RW5jb2RpbmcmIGVu
Y29kaW5nLCBPcHRpb25TZXQ8Q29udGVudFNlY3VyaXR5UG9saWN5SGFzaEFsZ29yaXRobT4gYWxn
b3JpdGhtcykKK3N0YXRpYyBib29sIGlzQWxsb3dlZEJ5QWxsV2l0aEhhc2hGcm9tQ29udGVudChj
b25zdCBDU1BEaXJlY3RpdmVMaXN0VmVjdG9yJiBwb2xpY2llcywgY29uc3QgU3RyaW5nJiBjb250
ZW50LCBjb25zdCBUZXh0RW5jb2RpbmcmIGVuY29kaW5nLCBPcHRpb25TZXQ8Q29udGVudFNlY3Vy
aXR5UG9saWN5SGFzaEFsZ29yaXRobT4gYWxnb3JpdGhtcykKIHsKICAgICAvLyBGSVhNRTogQ29t
cHV0ZSB0aGUgZGlnZXN0IHdpdGggcmVzcGVjdCB0byB0aGUgcmF3IGJ5dGVzIHJlY2VpdmVkIGZy
b20gdGhlIHBhZ2UuCiAgICAgLy8gU2VlIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTU1MTg0Pi4KQEAgLTI0Miw4ICsyNTYsOCBAQCBib29sIGlzQWxsb3dlZEJ5QWxs
V2l0aEhhc2hGcm9tQ29udGVudChjb25zdCBDU1BEaXJlY3RpdmVMaXN0VmVjdG9yJiBwb2xpY2ll
cywgYwogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdGVtcGxhdGU8Ym9vbCAoQ29udGVudFNlY3Vy
aXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6KmFsbG93RnJvbVVSTCkoY29uc3QgVVJMJiwgQ29udGVu
dFNlY3VyaXR5UG9saWN5OjpSZXBvcnRpbmdTdGF0dXMpIGNvbnN0PgotYm9vbCBpc0FsbG93ZWRC
eUFsbFdpdGhVUkwoY29uc3QgQ1NQRGlyZWN0aXZlTGlzdFZlY3RvciYgcG9saWNpZXMsIGNvbnN0
IFVSTCYgdXJsLCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJlcG9ydGluZ1N0YXR1cyByZXBvcnRp
bmdTdGF0dXMpCit0ZW1wbGF0ZTxib29sIChDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVM
aXN0OjoqYWxsb3dGcm9tVVJMKShjb25zdCBVUkwmLCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJl
Y3RpdmVMaXN0OjpSZXBvcnRpbmdTdGF0dXMpIGNvbnN0Pgorc3RhdGljIGJvb2wgaXNBbGxvd2Vk
QnlBbGxXaXRoVVJMKGNvbnN0IENTUERpcmVjdGl2ZUxpc3RWZWN0b3ImIHBvbGljaWVzLCBjb25z
dCBVUkwmIHVybCwgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6UmVwb3J0aW5n
U3RhdHVzIHJlcG9ydGluZ1N0YXR1cykKIHsKICAgICBpZiAoU2NoZW1lUmVnaXN0cnk6OnNjaGVt
ZVNob3VsZEJ5cGFzc0NvbnRlbnRTZWN1cml0eVBvbGljeSh1cmwucHJvdG9jb2woKSkpCiAgICAg
ICAgIHJldHVybiB0cnVlOwpAQCAtMjU1LDE0ICsyNjksMTQgQEAgYm9vbCBpc0FsbG93ZWRCeUFs
bFdpdGhVUkwoY29uc3QgQ1NQRGlyZWN0aXZlTGlzdFZlY3RvciYgcG9saWNpZXMsIGNvbnN0IFVS
TCYgdXIKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3k6
OmFsbG93SmF2YVNjcmlwdFVSTHMoY29uc3QgU3RyaW5nJiBjb250ZXh0VVJMLCBjb25zdCBXVEY6
Ok9yZGluYWxOdW1iZXImIGNvbnRleHRMaW5lLCBib29sIG92ZXJyaWRlQ29udGVudFNlY3VyaXR5
UG9saWN5LCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJlcG9ydGluZ1N0YXR1cyByZXBvcnRpbmdT
dGF0dXMpIGNvbnN0Citib29sIENvbnRlbnRTZWN1cml0eVBvbGljeTo6YWxsb3dKYXZhU2NyaXB0
VVJMcyhjb25zdCBTdHJpbmcmIGNvbnRleHRVUkwsIGNvbnN0IFdURjo6T3JkaW5hbE51bWJlciYg
Y29udGV4dExpbmUsIGJvb2wgb3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3kpIGNvbnN0CiB7
Ci0gICAgcmV0dXJuIG92ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9saWN5IHx8IGlzQWxsb3dlZEJ5
QWxsV2l0aENvbnRleHQ8JkNvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OmFsbG93
SmF2YVNjcmlwdFVSTHM+KG1fcG9saWNpZXMsIGNvbnRleHRVUkwsIGNvbnRleHRMaW5lLCByZXBv
cnRpbmdTdGF0dXMpOworICAgIHJldHVybiBvdmVycmlkZUNvbnRlbnRTZWN1cml0eVBvbGljeSB8
fCBpc0FsbG93ZWRCeUFsbFdpdGhDb250ZXh0PCZDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3Rp
dmVMaXN0OjphbGxvd0phdmFTY3JpcHRVUkxzPihtX3BvbGljaWVzLCBjb250ZXh0VVJMLCBjb250
ZXh0TGluZSwgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6UmVwb3J0aW5nU3Rh
dHVzOjpTZW5kUmVwb3J0KTsKIH0KIAotYm9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93
SW5saW5lRXZlbnRIYW5kbGVycyhjb25zdCBTdHJpbmcmIGNvbnRleHRVUkwsIGNvbnN0IFdURjo6
T3JkaW5hbE51bWJlciYgY29udGV4dExpbmUsIGJvb2wgb3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQ
b2xpY3ksIENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVwb3J0aW5nU3RhdHVzIHJlcG9ydGluZ1N0
YXR1cykgY29uc3QKK2Jvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5OjphbGxvd0lubGluZUV2ZW50
SGFuZGxlcnMoY29uc3QgU3RyaW5nJiBjb250ZXh0VVJMLCBjb25zdCBXVEY6Ok9yZGluYWxOdW1i
ZXImIGNvbnRleHRMaW5lLCBib29sIG92ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9saWN5KSBjb25z
dAogewotICAgIHJldHVybiBvdmVycmlkZUNvbnRlbnRTZWN1cml0eVBvbGljeSB8fCBpc0FsbG93
ZWRCeUFsbFdpdGhDb250ZXh0PCZDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0Ojph
bGxvd0lubGluZUV2ZW50SGFuZGxlcnM+KG1fcG9saWNpZXMsIGNvbnRleHRVUkwsIGNvbnRleHRM
aW5lLCByZXBvcnRpbmdTdGF0dXMpOworICAgIHJldHVybiBvdmVycmlkZUNvbnRlbnRTZWN1cml0
eVBvbGljeSB8fCBpc0FsbG93ZWRCeUFsbFdpdGhDb250ZXh0PCZDb250ZW50U2VjdXJpdHlQb2xp
Y3lEaXJlY3RpdmVMaXN0OjphbGxvd0lubGluZUV2ZW50SGFuZGxlcnM+KG1fcG9saWNpZXMsIGNv
bnRleHRVUkwsIGNvbnRleHRMaW5lLCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0
OjpSZXBvcnRpbmdTdGF0dXM6OlNlbmRSZXBvcnQpOwogfQogCiAvLyBGSVhNRTogV2Ugc2hvdWxk
IGNvbXB1dGUgdGhlIGRvY3VtZW50IGVuY29kaW5nIG9uY2UgYW5kIGNhY2hlIGl0IGluc3RlYWQg
b2YgY29tcHV0aW5nIGl0IG9uIGVhY2ggaW52b2NhdGlvbi4KQEAgLTMwMCwxNyArMzE0LDE3IEBA
IGJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5OjphbGxvd1N0eWxlV2l0aE5vbmNlKGNvbnN0IFN0
cmluZyYgbm9uY2UsIGJvb2wgb3ZlcnJpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIENv
bnRlbnRTZWN1cml0eVBvbGljeTo6YWxsb3dJbmxpbmVTY3JpcHQoY29uc3QgU3RyaW5nJiBjb250
ZXh0VVJMLCBjb25zdCBXVEY6Ok9yZGluYWxOdW1iZXImIGNvbnRleHRMaW5lLCBjb25zdCBTdHJp
bmcmIHNjcmlwdENvbnRlbnQsIGJvb2wgb3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3ksIENv
bnRlbnRTZWN1cml0eVBvbGljeTo6UmVwb3J0aW5nU3RhdHVzIHJlcG9ydGluZ1N0YXR1cykgY29u
c3QKK2Jvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5OjphbGxvd0lubGluZVNjcmlwdChjb25zdCBT
dHJpbmcmIGNvbnRleHRVUkwsIGNvbnN0IFdURjo6T3JkaW5hbE51bWJlciYgY29udGV4dExpbmUs
IGNvbnN0IFN0cmluZyYgc2NyaXB0Q29udGVudCwgYm9vbCBvdmVycmlkZUNvbnRlbnRTZWN1cml0
eVBvbGljeSkgY29uc3QKIHsKICAgICBpZiAob3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3kp
CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIGlmICghbV9oYXNoQWxnb3JpdGhtc0ZvcklubGlu
ZVNjcmlwdHMuaXNFbXB0eSgpICYmICFzY3JpcHRDb250ZW50LmlzRW1wdHkoKQogICAgICAgICAm
JiBpc0FsbG93ZWRCeUFsbFdpdGhIYXNoRnJvbUNvbnRlbnQ8JkNvbnRlbnRTZWN1cml0eVBvbGlj
eURpcmVjdGl2ZUxpc3Q6OmFsbG93SW5saW5lU2NyaXB0V2l0aEhhc2g+KG1fcG9saWNpZXMsIHNj
cmlwdENvbnRlbnQsIGRvY3VtZW50RW5jb2RpbmcoKSwgbV9oYXNoQWxnb3JpdGhtc0ZvcklubGlu
ZVNjcmlwdHMpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICByZXR1cm4gaXNBbGxvd2VkQnlB
bGxXaXRoQ29udGV4dDwmQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6YWxsb3dJ
bmxpbmVTY3JpcHQ+KG1fcG9saWNpZXMsIGNvbnRleHRVUkwsIGNvbnRleHRMaW5lLCByZXBvcnRp
bmdTdGF0dXMpOworICAgIHJldHVybiBpc0FsbG93ZWRCeUFsbFdpdGhDb250ZXh0PCZDb250ZW50
U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0OjphbGxvd0lubGluZVNjcmlwdD4obV9wb2xpY2ll
cywgY29udGV4dFVSTCwgY29udGV4dExpbmUsIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2
ZUxpc3Q6OlJlcG9ydGluZ1N0YXR1czo6U2VuZFJlcG9ydCk7CiB9CiAKLWJvb2wgQ29udGVudFNl
Y3VyaXR5UG9saWN5OjphbGxvd0lubGluZVN0eWxlKGNvbnN0IFN0cmluZyYgY29udGV4dFVSTCwg
Y29uc3QgV1RGOjpPcmRpbmFsTnVtYmVyJiBjb250ZXh0TGluZSwgY29uc3QgU3RyaW5nJiBzdHls
ZUNvbnRlbnQsIGJvb2wgb3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3ksIENvbnRlbnRTZWN1
cml0eVBvbGljeTo6UmVwb3J0aW5nU3RhdHVzIHJlcG9ydGluZ1N0YXR1cykgY29uc3QKK2Jvb2wg
Q29udGVudFNlY3VyaXR5UG9saWN5OjphbGxvd0lubGluZVN0eWxlKGNvbnN0IFN0cmluZyYgY29u
dGV4dFVSTCwgY29uc3QgV1RGOjpPcmRpbmFsTnVtYmVyJiBjb250ZXh0TGluZSwgY29uc3QgU3Ry
aW5nJiBzdHlsZUNvbnRlbnQsIGJvb2wgb3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3kpIGNv
bnN0CiB7CiAgICAgaWYgKG92ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9saWN5KQogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKQEAgLTMxOSw5NyArMzMzLDg4IEBAIGJvb2wgQ29udGVudFNlY3VyaXR5UG9s
aWN5OjphbGxvd0lubGluZVN0eWxlKGNvbnN0IFN0cmluZyYgY29udGV4dFVSTCwgY29uc3QgV1RG
CiAgICAgaWYgKCFtX2hhc2hBbGdvcml0aG1zRm9ySW5saW5lU3R5bGVzaGVldHMuaXNFbXB0eSgp
ICYmICFzdHlsZUNvbnRlbnQuaXNFbXB0eSgpCiAgICAgICAgICYmIGlzQWxsb3dlZEJ5QWxsV2l0
aEhhc2hGcm9tQ29udGVudDwmQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6YWxs
b3dJbmxpbmVTdHlsZVdpdGhIYXNoPihtX3BvbGljaWVzLCBzdHlsZUNvbnRlbnQsIGRvY3VtZW50
RW5jb2RpbmcoKSwgbV9oYXNoQWxnb3JpdGhtc0ZvcklubGluZVN0eWxlc2hlZXRzKSkKICAgICAg
ICAgcmV0dXJuIHRydWU7Ci0gICAgcmV0dXJuIGlzQWxsb3dlZEJ5QWxsV2l0aENvbnRleHQ8JkNv
bnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OmFsbG93SW5saW5lU3R5bGU+KG1fcG9s
aWNpZXMsIGNvbnRleHRVUkwsIGNvbnRleHRMaW5lLCByZXBvcnRpbmdTdGF0dXMpOworICAgIHJl
dHVybiBpc0FsbG93ZWRCeUFsbFdpdGhDb250ZXh0PCZDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJl
Y3RpdmVMaXN0OjphbGxvd0lubGluZVN0eWxlPihtX3BvbGljaWVzLCBjb250ZXh0VVJMLCBjb250
ZXh0TGluZSwgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6UmVwb3J0aW5nU3Rh
dHVzOjpTZW5kUmVwb3J0KTsKIH0KIAotYm9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93
RXZhbChKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIGJvb2wgb3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQ
b2xpY3ksIENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVwb3J0aW5nU3RhdHVzIHJlcG9ydGluZ1N0
YXR1cykgY29uc3QKK2Jvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5OjphbGxvd0V2YWwoSlNDOjpF
eGVjU3RhdGUqIHN0YXRlLCBib29sIG92ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9saWN5KSBjb25z
dAogewotICAgIHJldHVybiBvdmVycmlkZUNvbnRlbnRTZWN1cml0eVBvbGljeSB8fCBpc0FsbG93
ZWRCeUFsbFdpdGhTdGF0ZTwmQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6YWxs
b3dFdmFsPihtX3BvbGljaWVzLCBzdGF0ZSwgcmVwb3J0aW5nU3RhdHVzKTsKKyAgICByZXR1cm4g
b3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3kgfHwgaXNBbGxvd2VkQnlBbGxXaXRoU3RhdGU8
JkNvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OmFsbG93RXZhbD4obV9wb2xpY2ll
cywgc3RhdGUsIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OlJlcG9ydGluZ1N0
YXR1czo6U2VuZFJlcG9ydCk7CiB9CiAKLWJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5OjphbGxv
d0ZyYW1lQW5jZXN0b3JzKGNvbnN0IEZyYW1lJiBmcmFtZSwgY29uc3QgVVJMJiB1cmwsIGJvb2wg
b3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3ksIENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVw
b3J0aW5nU3RhdHVzIHJlcG9ydGluZ1N0YXR1cykgY29uc3QKK2Jvb2wgQ29udGVudFNlY3VyaXR5
UG9saWN5OjphbGxvd0ZyYW1lQW5jZXN0b3JzKGNvbnN0IEZyYW1lJiBmcmFtZSwgY29uc3QgVVJM
JiB1cmwsIGJvb2wgb3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3kpIGNvbnN0CiB7CiAgICAg
aWYgKG92ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9saWN5KQogICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICBGcmFtZSYgdG9wRnJhbWUgPSBmcmFtZS50cmVlKCkudG9wKCk7CiAgICAgaWYgKCZmcmFt
ZSA9PSAmdG9wRnJhbWUpCiAgICAgICAgIHJldHVybiB0cnVlOwotICAgIHJldHVybiBpc0FsbG93
ZWRCeUFsbFdpdGhGcmFtZTwmQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6YWxs
b3dGcmFtZUFuY2VzdG9ycz4obV9wb2xpY2llcywgZnJhbWUsIHVybCwgcmVwb3J0aW5nU3RhdHVz
KTsKLX0KLQotU3RyaW5nIENvbnRlbnRTZWN1cml0eVBvbGljeTo6ZXZhbERpc2FibGVkRXJyb3JN
ZXNzYWdlKCkgY29uc3QKLXsKLSAgICBmb3IgKGF1dG8mIHBvbGljeSA6IG1fcG9saWNpZXMpIHsK
LSAgICAgICAgaWYgKCFwb2xpY3ktPmFsbG93RXZhbCgwLCBDb250ZW50U2VjdXJpdHlQb2xpY3k6
OlJlcG9ydGluZ1N0YXR1czo6U3VwcHJlc3NSZXBvcnQpKQotICAgICAgICAgICAgcmV0dXJuIHBv
bGljeS0+ZXZhbERpc2FibGVkRXJyb3JNZXNzYWdlKCk7Ci0gICAgfQotICAgIHJldHVybiBTdHJp
bmcoKTsKKyAgICByZXR1cm4gaXNBbGxvd2VkQnlBbGxXaXRoRnJhbWU8JkNvbnRlbnRTZWN1cml0
eVBvbGljeURpcmVjdGl2ZUxpc3Q6OmFsbG93RnJhbWVBbmNlc3RvcnM+KG1fcG9saWNpZXMsIGZy
YW1lLCB1cmwsIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OlJlcG9ydGluZ1N0
YXR1czo6U2VuZFJlcG9ydCk7CiB9CiAKLWJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5OjphbGxv
d1BsdWdpblR5cGUoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIHR5cGVBdHRyaWJ1
dGUsIGNvbnN0IFVSTCYgdXJsLCBib29sIG92ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9saWN5LCBD
b250ZW50U2VjdXJpdHlQb2xpY3k6OlJlcG9ydGluZ1N0YXR1cyByZXBvcnRpbmdTdGF0dXMpIGNv
bnN0Citib29sIENvbnRlbnRTZWN1cml0eVBvbGljeTo6YWxsb3dQbHVnaW5UeXBlKGNvbnN0IFN0
cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiB0eXBlQXR0cmlidXRlLCBjb25zdCBVUkwmIHVybCwg
Ym9vbCBvdmVycmlkZUNvbnRlbnRTZWN1cml0eVBvbGljeSkgY29uc3QKIHsKICAgICBpZiAob3Zl
cnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3kpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIGZv
ciAoYXV0byYgcG9saWN5IDogbV9wb2xpY2llcykgewotICAgICAgICBpZiAoIXBvbGljeS0+YWxs
b3dQbHVnaW5UeXBlKHR5cGUsIHR5cGVBdHRyaWJ1dGUsIHVybCwgcmVwb3J0aW5nU3RhdHVzKSkK
KyAgICAgICAgaWYgKCFwb2xpY3ktPmFsbG93UGx1Z2luVHlwZSh0eXBlLCB0eXBlQXR0cmlidXRl
LCB1cmwsIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OlJlcG9ydGluZ1N0YXR1
czo6U2VuZFJlcG9ydCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIHJl
dHVybiB0cnVlOwogfQogCi1ib29sIENvbnRlbnRTZWN1cml0eVBvbGljeTo6YWxsb3dTY3JpcHRG
cm9tU291cmNlKGNvbnN0IFVSTCYgdXJsLCBib29sIG92ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9s
aWN5LCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJlcG9ydGluZ1N0YXR1cyByZXBvcnRpbmdTdGF0
dXMpIGNvbnN0Citib29sIENvbnRlbnRTZWN1cml0eVBvbGljeTo6YWxsb3dTY3JpcHRGcm9tU291
cmNlKGNvbnN0IFVSTCYgdXJsLCBib29sIG92ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9saWN5KSBj
b25zdAogewotICAgIHJldHVybiBvdmVycmlkZUNvbnRlbnRTZWN1cml0eVBvbGljeSB8fCBpc0Fs
bG93ZWRCeUFsbFdpdGhVUkw8JkNvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OmFs
bG93U2NyaXB0RnJvbVNvdXJjZT4obV9wb2xpY2llcywgdXJsLCByZXBvcnRpbmdTdGF0dXMpOwor
ICAgIHJldHVybiBvdmVycmlkZUNvbnRlbnRTZWN1cml0eVBvbGljeSB8fCBpc0FsbG93ZWRCeUFs
bFdpdGhVUkw8JkNvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OmFsbG93U2NyaXB0
RnJvbVNvdXJjZT4obV9wb2xpY2llcywgdXJsLCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3Rp
dmVMaXN0OjpSZXBvcnRpbmdTdGF0dXM6OlNlbmRSZXBvcnQpOwogfQogCi1ib29sIENvbnRlbnRT
ZWN1cml0eVBvbGljeTo6YWxsb3dPYmplY3RGcm9tU291cmNlKGNvbnN0IFVSTCYgdXJsLCBib29s
IG92ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9saWN5LCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJl
cG9ydGluZ1N0YXR1cyByZXBvcnRpbmdTdGF0dXMpIGNvbnN0Citib29sIENvbnRlbnRTZWN1cml0
eVBvbGljeTo6YWxsb3dPYmplY3RGcm9tU291cmNlKGNvbnN0IFVSTCYgdXJsLCBib29sIG92ZXJy
aWRlQ29udGVudFNlY3VyaXR5UG9saWN5KSBjb25zdAogewotICAgIHJldHVybiBvdmVycmlkZUNv
bnRlbnRTZWN1cml0eVBvbGljeSB8fCBpc0FsbG93ZWRCeUFsbFdpdGhVUkw8JkNvbnRlbnRTZWN1
cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OmFsbG93T2JqZWN0RnJvbVNvdXJjZT4obV9wb2xpY2ll
cywgdXJsLCByZXBvcnRpbmdTdGF0dXMpOworICAgIHJldHVybiBvdmVycmlkZUNvbnRlbnRTZWN1
cml0eVBvbGljeSB8fCBpc0FsbG93ZWRCeUFsbFdpdGhVUkw8JkNvbnRlbnRTZWN1cml0eVBvbGlj
eURpcmVjdGl2ZUxpc3Q6OmFsbG93T2JqZWN0RnJvbVNvdXJjZT4obV9wb2xpY2llcywgdXJsLCBD
b250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0OjpSZXBvcnRpbmdTdGF0dXM6OlNlbmRS
ZXBvcnQpOwogfQogCi1ib29sIENvbnRlbnRTZWN1cml0eVBvbGljeTo6YWxsb3dDaGlsZEZyYW1l
RnJvbVNvdXJjZShjb25zdCBVUkwmIHVybCwgYm9vbCBvdmVycmlkZUNvbnRlbnRTZWN1cml0eVBv
bGljeSwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpSZXBvcnRpbmdTdGF0dXMgcmVwb3J0aW5nU3Rh
dHVzKSBjb25zdAorYm9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93Q2hpbGRGcmFtZUZy
b21Tb3VyY2UoY29uc3QgVVJMJiB1cmwsIGJvb2wgb3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xp
Y3kpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG92ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9saWN5IHx8
IGlzQWxsb3dlZEJ5QWxsV2l0aFVSTDwmQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlz
dDo6YWxsb3dDaGlsZEZyYW1lRnJvbVNvdXJjZT4obV9wb2xpY2llcywgdXJsLCByZXBvcnRpbmdT
dGF0dXMpOworICAgIHJldHVybiBvdmVycmlkZUNvbnRlbnRTZWN1cml0eVBvbGljeSB8fCBpc0Fs
bG93ZWRCeUFsbFdpdGhVUkw8JkNvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OmFs
bG93Q2hpbGRGcmFtZUZyb21Tb3VyY2U+KG1fcG9saWNpZXMsIHVybCwgQ29udGVudFNlY3VyaXR5
UG9saWN5RGlyZWN0aXZlTGlzdDo6UmVwb3J0aW5nU3RhdHVzOjpTZW5kUmVwb3J0KTsKIH0KIAot
Ym9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93Q2hpbGRDb250ZXh0RnJvbVNvdXJjZShj
b25zdCBVUkwmIHVybCwgYm9vbCBvdmVycmlkZUNvbnRlbnRTZWN1cml0eVBvbGljeSwgQ29udGVu
dFNlY3VyaXR5UG9saWN5OjpSZXBvcnRpbmdTdGF0dXMgcmVwb3J0aW5nU3RhdHVzKSBjb25zdAor
Ym9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93Q2hpbGRDb250ZXh0RnJvbVNvdXJjZShj
b25zdCBVUkwmIHVybCwgYm9vbCBvdmVycmlkZUNvbnRlbnRTZWN1cml0eVBvbGljeSkgY29uc3QK
IHsKLSAgICByZXR1cm4gb3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3kgfHwgaXNBbGxvd2Vk
QnlBbGxXaXRoVVJMPCZDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0OjphbGxvd0No
aWxkQ29udGV4dEZyb21Tb3VyY2U+KG1fcG9saWNpZXMsIHVybCwgcmVwb3J0aW5nU3RhdHVzKTsK
KyAgICByZXR1cm4gb3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3kgfHwgaXNBbGxvd2VkQnlB
bGxXaXRoVVJMPCZDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0OjphbGxvd0NoaWxk
Q29udGV4dEZyb21Tb3VyY2U+KG1fcG9saWNpZXMsIHVybCwgQ29udGVudFNlY3VyaXR5UG9saWN5
RGlyZWN0aXZlTGlzdDo6UmVwb3J0aW5nU3RhdHVzOjpTZW5kUmVwb3J0KTsKIH0KIAotYm9vbCBD
b250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93SW1hZ2VGcm9tU291cmNlKGNvbnN0IFVSTCYgdXJs
LCBib29sIG92ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9saWN5LCBDb250ZW50U2VjdXJpdHlQb2xp
Y3k6OlJlcG9ydGluZ1N0YXR1cyByZXBvcnRpbmdTdGF0dXMpIGNvbnN0Citib29sIENvbnRlbnRT
ZWN1cml0eVBvbGljeTo6YWxsb3dJbWFnZUZyb21Tb3VyY2UoY29uc3QgVVJMJiB1cmwsIGJvb2wg
b3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3kpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG92ZXJy
aWRlQ29udGVudFNlY3VyaXR5UG9saWN5IHx8IGlzQWxsb3dlZEJ5QWxsV2l0aFVSTDwmQ29udGVu
dFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6YWxsb3dJbWFnZUZyb21Tb3VyY2U+KG1fcG9s
aWNpZXMsIHVybCwgcmVwb3J0aW5nU3RhdHVzKTsKKyAgICByZXR1cm4gb3ZlcnJpZGVDb250ZW50
U2VjdXJpdHlQb2xpY3kgfHwgaXNBbGxvd2VkQnlBbGxXaXRoVVJMPCZDb250ZW50U2VjdXJpdHlQ
b2xpY3lEaXJlY3RpdmVMaXN0OjphbGxvd0ltYWdlRnJvbVNvdXJjZT4obV9wb2xpY2llcywgdXJs
LCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0OjpSZXBvcnRpbmdTdGF0dXM6OlNl
bmRSZXBvcnQpOwogfQogCi1ib29sIENvbnRlbnRTZWN1cml0eVBvbGljeTo6YWxsb3dTdHlsZUZy
b21Tb3VyY2UoY29uc3QgVVJMJiB1cmwsIGJvb2wgb3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xp
Y3ksIENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVwb3J0aW5nU3RhdHVzIHJlcG9ydGluZ1N0YXR1
cykgY29uc3QKK2Jvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5OjphbGxvd1N0eWxlRnJvbVNvdXJj
ZShjb25zdCBVUkwmIHVybCwgYm9vbCBvdmVycmlkZUNvbnRlbnRTZWN1cml0eVBvbGljeSkgY29u
c3QKIHsKLSAgICByZXR1cm4gb3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3kgfHwgaXNBbGxv
d2VkQnlBbGxXaXRoVVJMPCZDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0OjphbGxv
d1N0eWxlRnJvbVNvdXJjZT4obV9wb2xpY2llcywgdXJsLCByZXBvcnRpbmdTdGF0dXMpOworICAg
IHJldHVybiBvdmVycmlkZUNvbnRlbnRTZWN1cml0eVBvbGljeSB8fCBpc0FsbG93ZWRCeUFsbFdp
dGhVUkw8JkNvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OmFsbG93U3R5bGVGcm9t
U291cmNlPihtX3BvbGljaWVzLCB1cmwsIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxp
c3Q6OlJlcG9ydGluZ1N0YXR1czo6U2VuZFJlcG9ydCk7CiB9CiAKLWJvb2wgQ29udGVudFNlY3Vy
aXR5UG9saWN5OjphbGxvd0ZvbnRGcm9tU291cmNlKGNvbnN0IFVSTCYgdXJsLCBib29sIG92ZXJy
aWRlQ29udGVudFNlY3VyaXR5UG9saWN5LCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJlcG9ydGlu
Z1N0YXR1cyByZXBvcnRpbmdTdGF0dXMpIGNvbnN0Citib29sIENvbnRlbnRTZWN1cml0eVBvbGlj
eTo6YWxsb3dGb250RnJvbVNvdXJjZShjb25zdCBVUkwmIHVybCwgYm9vbCBvdmVycmlkZUNvbnRl
bnRTZWN1cml0eVBvbGljeSkgY29uc3QKIHsKLSAgICByZXR1cm4gb3ZlcnJpZGVDb250ZW50U2Vj
dXJpdHlQb2xpY3kgfHwgaXNBbGxvd2VkQnlBbGxXaXRoVVJMPCZDb250ZW50U2VjdXJpdHlQb2xp
Y3lEaXJlY3RpdmVMaXN0OjphbGxvd0ZvbnRGcm9tU291cmNlPihtX3BvbGljaWVzLCB1cmwsIHJl
cG9ydGluZ1N0YXR1cyk7CisgICAgcmV0dXJuIG92ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9saWN5
IHx8IGlzQWxsb3dlZEJ5QWxsV2l0aFVSTDwmQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZl
TGlzdDo6YWxsb3dGb250RnJvbVNvdXJjZT4obV9wb2xpY2llcywgdXJsLCBDb250ZW50U2VjdXJp
dHlQb2xpY3lEaXJlY3RpdmVMaXN0OjpSZXBvcnRpbmdTdGF0dXM6OlNlbmRSZXBvcnQpOwogfQog
Ci1ib29sIENvbnRlbnRTZWN1cml0eVBvbGljeTo6YWxsb3dNZWRpYUZyb21Tb3VyY2UoY29uc3Qg
VVJMJiB1cmwsIGJvb2wgb3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3ksIENvbnRlbnRTZWN1
cml0eVBvbGljeTo6UmVwb3J0aW5nU3RhdHVzIHJlcG9ydGluZ1N0YXR1cykgY29uc3QKK2Jvb2wg
Q29udGVudFNlY3VyaXR5UG9saWN5OjphbGxvd01lZGlhRnJvbVNvdXJjZShjb25zdCBVUkwmIHVy
bCwgYm9vbCBvdmVycmlkZUNvbnRlbnRTZWN1cml0eVBvbGljeSkgY29uc3QKIHsKLSAgICByZXR1
cm4gb3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3kgfHwgaXNBbGxvd2VkQnlBbGxXaXRoVVJM
PCZDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0OjphbGxvd01lZGlhRnJvbVNvdXJj
ZT4obV9wb2xpY2llcywgdXJsLCByZXBvcnRpbmdTdGF0dXMpOworICAgIHJldHVybiBvdmVycmlk
ZUNvbnRlbnRTZWN1cml0eVBvbGljeSB8fCBpc0FsbG93ZWRCeUFsbFdpdGhVUkw8JkNvbnRlbnRT
ZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OmFsbG93TWVkaWFGcm9tU291cmNlPihtX3BvbGlj
aWVzLCB1cmwsIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OlJlcG9ydGluZ1N0
YXR1czo6U2VuZFJlcG9ydCk7CiB9CiAKLWJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5OjphbGxv
d0Nvbm5lY3RUb1NvdXJjZShjb25zdCBVUkwmIHVybCwgYm9vbCBvdmVycmlkZUNvbnRlbnRTZWN1
cml0eVBvbGljeSwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpSZXBvcnRpbmdTdGF0dXMgcmVwb3J0
aW5nU3RhdHVzKSBjb25zdAorYm9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93Q29ubmVj
dFRvU291cmNlKGNvbnN0IFVSTCYgdXJsLCBib29sIG92ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9s
aWN5KSBjb25zdAogewotICAgIHJldHVybiBvdmVycmlkZUNvbnRlbnRTZWN1cml0eVBvbGljeSB8
fCBpc0FsbG93ZWRCeUFsbFdpdGhVUkw8JkNvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxp
c3Q6OmFsbG93Q29ubmVjdFRvU291cmNlPihtX3BvbGljaWVzLCB1cmwsIHJlcG9ydGluZ1N0YXR1
cyk7CisgICAgcmV0dXJuIG92ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9saWN5IHx8IGlzQWxsb3dl
ZEJ5QWxsV2l0aFVSTDwmQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6YWxsb3dD
b25uZWN0VG9Tb3VyY2U+KG1fcG9saWNpZXMsIHVybCwgQ29udGVudFNlY3VyaXR5UG9saWN5RGly
ZWN0aXZlTGlzdDo6UmVwb3J0aW5nU3RhdHVzOjpTZW5kUmVwb3J0KTsKIH0KIAotYm9vbCBDb250
ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93Rm9ybUFjdGlvbihjb25zdCBVUkwmIHVybCwgYm9vbCBv
dmVycmlkZUNvbnRlbnRTZWN1cml0eVBvbGljeSwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpSZXBv
cnRpbmdTdGF0dXMgcmVwb3J0aW5nU3RhdHVzKSBjb25zdAorYm9vbCBDb250ZW50U2VjdXJpdHlQ
b2xpY3k6OmFsbG93Rm9ybUFjdGlvbihjb25zdCBVUkwmIHVybCwgYm9vbCBvdmVycmlkZUNvbnRl
bnRTZWN1cml0eVBvbGljeSkgY29uc3QKIHsKLSAgICByZXR1cm4gb3ZlcnJpZGVDb250ZW50U2Vj
dXJpdHlQb2xpY3kgfHwgaXNBbGxvd2VkQnlBbGxXaXRoVVJMPCZDb250ZW50U2VjdXJpdHlQb2xp
Y3lEaXJlY3RpdmVMaXN0OjphbGxvd0Zvcm1BY3Rpb24+KG1fcG9saWNpZXMsIHVybCwgcmVwb3J0
aW5nU3RhdHVzKTsKKyAgICByZXR1cm4gb3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3kgfHwg
aXNBbGxvd2VkQnlBbGxXaXRoVVJMPCZDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0
OjphbGxvd0Zvcm1BY3Rpb24+KG1fcG9saWNpZXMsIHVybCwgQ29udGVudFNlY3VyaXR5UG9saWN5
RGlyZWN0aXZlTGlzdDo6UmVwb3J0aW5nU3RhdHVzOjpTZW5kUmVwb3J0KTsKIH0KIAotYm9vbCBD
b250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93QmFzZVVSSShjb25zdCBVUkwmIHVybCwgYm9vbCBv
dmVycmlkZUNvbnRlbnRTZWN1cml0eVBvbGljeSwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpSZXBv
cnRpbmdTdGF0dXMgcmVwb3J0aW5nU3RhdHVzKSBjb25zdAorYm9vbCBDb250ZW50U2VjdXJpdHlQ
b2xpY3k6OmFsbG93QmFzZVVSSShjb25zdCBVUkwmIHVybCwgYm9vbCBvdmVycmlkZUNvbnRlbnRT
ZWN1cml0eVBvbGljeSkgY29uc3QKIHsKLSAgICByZXR1cm4gb3ZlcnJpZGVDb250ZW50U2VjdXJp
dHlQb2xpY3kgfHwgaXNBbGxvd2VkQnlBbGxXaXRoVVJMPCZDb250ZW50U2VjdXJpdHlQb2xpY3lE
aXJlY3RpdmVMaXN0OjphbGxvd0Jhc2VVUkk+KG1fcG9saWNpZXMsIHVybCwgcmVwb3J0aW5nU3Rh
dHVzKTsKKyAgICByZXR1cm4gb3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3kgfHwgaXNBbGxv
d2VkQnlBbGxXaXRoVVJMPCZDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0OjphbGxv
d0Jhc2VVUkk+KG1fcG9saWNpZXMsIHVybCwgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZl
TGlzdDo6UmVwb3J0aW5nU3RhdHVzOjpTZW5kUmVwb3J0KTsKIH0KIAogYm9vbCBDb250ZW50U2Vj
dXJpdHlQb2xpY3k6OmlzQWN0aXZlKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9j
c3AvQ29udGVudFNlY3VyaXR5UG9saWN5LmgKaW5kZXggZDAwNTY0OWVmM2IxMWM3ZjU5MzY3NjZl
NGNkNjg1N2M1YmM0MjRiMi4uMDRhNzE2MDk5ODJjMGNhYTE1MDllYWUwMDI3MTRjMjhhYTcxZmFm
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9s
aWN5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5
LmgKQEAgLTQxLDYgKzQxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDb250ZW50
U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0OwogY2xhc3MgQ29udGVudFNlY3VyaXR5UG9saWN5
U291cmNlOworY2xhc3MgSlNET01XaW5kb3dTaGVsbDsKIGNsYXNzIERPTVN0cmluZ0xpc3Q7CiBj
bGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwogY2xhc3MgU2VjdXJpdHlPcmlnaW47CkBAIC02
MSw2ICs2Miw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY29weVN0YXRlRnJvbShjb25zdCBDb250
ZW50U2VjdXJpdHlQb2xpY3kqKTsKIAorICAgIHZvaWQgZGlkQ3JlYXRlV2luZG93U2hlbGwoSlNE
T01XaW5kb3dTaGVsbCYpIGNvbnN0OworCiAgICAgLy8gQmUgc3VyZSB0byB1cGRhdGUgdGhlIGJl
aGF2aW9yIG9mIFhTU0F1ZGl0b3I6OmNvbWJpbmVYU1NQcm90ZWN0aW9uSGVhZGVyQW5kQ1NQIHdo
ZW5ldmVyIHlvdSBjaGFuZ2UgdGhpcyBlbnVtJ3MgY29udGVudCBvciBvcmRlcmluZy4KICAgICBl
bnVtIFJlZmxlY3RlZFhTU0Rpc3Bvc2l0aW9uIHsKICAgICAgICAgUmVmbGVjdGVkWFNTVW5zZXQg
PSAwLApAQCAtODEsMzAgKzg0LDI2IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZFJlY2VpdmVIZWFk
ZXJzKGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyYsIFJlcG9ydFBh
cnNpbmdFcnJvcnMgPSBSZXBvcnRQYXJzaW5nRXJyb3JzOjpZZXMpOwogICAgIHZvaWQgcHJvY2Vz
c0hUVFBFcXVpdihjb25zdCBTdHJpbmcmIGNvbnRlbnQsIENvbnRlbnRTZWN1cml0eVBvbGljeUhl
YWRlclR5cGUgdHlwZSkgeyBkaWRSZWNlaXZlSGVhZGVyKGNvbnRlbnQsIHR5cGUsIENvbnRlbnRT
ZWN1cml0eVBvbGljeTo6UG9saWN5RnJvbTo6SFRUUEVxdWl2TWV0YSk7IH0KIAotICAgIGVudW0g
Y2xhc3MgUmVwb3J0aW5nU3RhdHVzIHsKLSAgICAgICAgU2VuZFJlcG9ydCwKLSAgICAgICAgU3Vw
cHJlc3NSZXBvcnQKLSAgICB9OwotICAgIGJvb2wgYWxsb3dKYXZhU2NyaXB0VVJMcyhjb25zdCBT
dHJpbmcmIGNvbnRleHRVUkwsIGNvbnN0IFdURjo6T3JkaW5hbE51bWJlciYgY29udGV4dExpbmUs
IGJvb2wgb3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3kgPSBmYWxzZSwgQ29udGVudFNlY3Vy
aXR5UG9saWN5OjpSZXBvcnRpbmdTdGF0dXMgPSBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJlcG9y
dGluZ1N0YXR1czo6U2VuZFJlcG9ydCkgY29uc3Q7Ci0gICAgYm9vbCBhbGxvd0lubGluZUV2ZW50
SGFuZGxlcnMoY29uc3QgU3RyaW5nJiBjb250ZXh0VVJMLCBjb25zdCBXVEY6Ok9yZGluYWxOdW1i
ZXImIGNvbnRleHRMaW5lLCBib29sIG92ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9saWN5ID0gZmFs
c2UsIENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVwb3J0aW5nU3RhdHVzID0gQ29udGVudFNlY3Vy
aXR5UG9saWN5OjpSZXBvcnRpbmdTdGF0dXM6OlNlbmRSZXBvcnQpIGNvbnN0OworICAgIGJvb2wg
YWxsb3dKYXZhU2NyaXB0VVJMcyhjb25zdCBTdHJpbmcmIGNvbnRleHRVUkwsIGNvbnN0IFdURjo6
T3JkaW5hbE51bWJlciYgY29udGV4dExpbmUsIGJvb2wgb3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQ
b2xpY3kgPSBmYWxzZSkgY29uc3Q7CisgICAgYm9vbCBhbGxvd0lubGluZUV2ZW50SGFuZGxlcnMo
Y29uc3QgU3RyaW5nJiBjb250ZXh0VVJMLCBjb25zdCBXVEY6Ok9yZGluYWxOdW1iZXImIGNvbnRl
eHRMaW5lLCBib29sIG92ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9saWN5ID0gZmFsc2UpIGNvbnN0
OwogICAgIGJvb2wgYWxsb3dTY3JpcHRXaXRoTm9uY2UoY29uc3QgU3RyaW5nJiBub25jZSwgYm9v
bCBvdmVycmlkZUNvbnRlbnRTZWN1cml0eVBvbGljeSA9IGZhbHNlKSBjb25zdDsKLSAgICBib29s
IGFsbG93SW5saW5lU2NyaXB0KGNvbnN0IFN0cmluZyYgY29udGV4dFVSTCwgY29uc3QgV1RGOjpP
cmRpbmFsTnVtYmVyJiBjb250ZXh0TGluZSwgY29uc3QgU3RyaW5nJiBzY3JpcHRDb250ZW50LCBi
b29sIG92ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9saWN5ID0gZmFsc2UsIENvbnRlbnRTZWN1cml0
eVBvbGljeTo6UmVwb3J0aW5nU3RhdHVzID0gQ29udGVudFNlY3VyaXR5UG9saWN5OjpSZXBvcnRp
bmdTdGF0dXM6OlNlbmRSZXBvcnQpIGNvbnN0OworICAgIGJvb2wgYWxsb3dJbmxpbmVTY3JpcHQo
Y29uc3QgU3RyaW5nJiBjb250ZXh0VVJMLCBjb25zdCBXVEY6Ok9yZGluYWxOdW1iZXImIGNvbnRl
eHRMaW5lLCBjb25zdCBTdHJpbmcmIHNjcmlwdENvbnRlbnQsIGJvb2wgb3ZlcnJpZGVDb250ZW50
U2VjdXJpdHlQb2xpY3kgPSBmYWxzZSkgY29uc3Q7CiAgICAgYm9vbCBhbGxvd1N0eWxlV2l0aE5v
bmNlKGNvbnN0IFN0cmluZyYgbm9uY2UsIGJvb2wgb3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xp
Y3kgPSBmYWxzZSkgY29uc3Q7Ci0gICAgYm9vbCBhbGxvd0lubGluZVN0eWxlKGNvbnN0IFN0cmlu
ZyYgY29udGV4dFVSTCwgY29uc3QgV1RGOjpPcmRpbmFsTnVtYmVyJiBjb250ZXh0TGluZSwgY29u
c3QgU3RyaW5nJiBzdHlsZUNvbnRlbnQsIGJvb2wgb3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xp
Y3kgPSBmYWxzZSwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpSZXBvcnRpbmdTdGF0dXMgPSBDb250
ZW50U2VjdXJpdHlQb2xpY3k6OlJlcG9ydGluZ1N0YXR1czo6U2VuZFJlcG9ydCkgY29uc3Q7Ci0g
ICAgYm9vbCBhbGxvd0V2YWwoSlNDOjpFeGVjU3RhdGUqID0gbnVsbHB0ciwgYm9vbCBvdmVycmlk
ZUNvbnRlbnRTZWN1cml0eVBvbGljeSA9IGZhbHNlLCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJl
cG9ydGluZ1N0YXR1cyA9IENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVwb3J0aW5nU3RhdHVzOjpT
ZW5kUmVwb3J0KSBjb25zdDsKLSAgICBib29sIGFsbG93UGx1Z2luVHlwZShjb25zdCBTdHJpbmcm
IHR5cGUsIGNvbnN0IFN0cmluZyYgdHlwZUF0dHJpYnV0ZSwgY29uc3QgVVJMJiwgYm9vbCBvdmVy
cmlkZUNvbnRlbnRTZWN1cml0eVBvbGljeSA9IGZhbHNlLCBDb250ZW50U2VjdXJpdHlQb2xpY3k6
OlJlcG9ydGluZ1N0YXR1cyA9IENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVwb3J0aW5nU3RhdHVz
OjpTZW5kUmVwb3J0KSBjb25zdDsKLSAgICBib29sIGFsbG93U2NyaXB0RnJvbVNvdXJjZShjb25z
dCBVUkwmLCBib29sIG92ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9saWN5ID0gZmFsc2UsIENvbnRl
bnRTZWN1cml0eVBvbGljeTo6UmVwb3J0aW5nU3RhdHVzID0gQ29udGVudFNlY3VyaXR5UG9saWN5
OjpSZXBvcnRpbmdTdGF0dXM6OlNlbmRSZXBvcnQpIGNvbnN0OwotICAgIGJvb2wgYWxsb3dPYmpl
Y3RGcm9tU291cmNlKGNvbnN0IFVSTCYsIGJvb2wgb3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xp
Y3kgPSBmYWxzZSwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpSZXBvcnRpbmdTdGF0dXMgPSBDb250
ZW50U2VjdXJpdHlQb2xpY3k6OlJlcG9ydGluZ1N0YXR1czo6U2VuZFJlcG9ydCkgY29uc3Q7Ci0g
ICAgYm9vbCBhbGxvd0NoaWxkRnJhbWVGcm9tU291cmNlKGNvbnN0IFVSTCYsIGJvb2wgb3ZlcnJp
ZGVDb250ZW50U2VjdXJpdHlQb2xpY3kgPSBmYWxzZSwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpS
ZXBvcnRpbmdTdGF0dXMgPSBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJlcG9ydGluZ1N0YXR1czo6
U2VuZFJlcG9ydCkgY29uc3Q7Ci0gICAgYm9vbCBhbGxvd0NoaWxkQ29udGV4dEZyb21Tb3VyY2Uo
Y29uc3QgVVJMJiwgYm9vbCBvdmVycmlkZUNvbnRlbnRTZWN1cml0eVBvbGljeSA9IGZhbHNlLCBD
b250ZW50U2VjdXJpdHlQb2xpY3k6OlJlcG9ydGluZ1N0YXR1cyA9IENvbnRlbnRTZWN1cml0eVBv
bGljeTo6UmVwb3J0aW5nU3RhdHVzOjpTZW5kUmVwb3J0KSBjb25zdDsKLSAgICBib29sIGFsbG93
SW1hZ2VGcm9tU291cmNlKGNvbnN0IFVSTCYsIGJvb2wgb3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQ
b2xpY3kgPSBmYWxzZSwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpSZXBvcnRpbmdTdGF0dXMgPSBD
b250ZW50U2VjdXJpdHlQb2xpY3k6OlJlcG9ydGluZ1N0YXR1czo6U2VuZFJlcG9ydCkgY29uc3Q7
Ci0gICAgYm9vbCBhbGxvd1N0eWxlRnJvbVNvdXJjZShjb25zdCBVUkwmLCBib29sIG92ZXJyaWRl
Q29udGVudFNlY3VyaXR5UG9saWN5ID0gZmFsc2UsIENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVw
b3J0aW5nU3RhdHVzID0gQ29udGVudFNlY3VyaXR5UG9saWN5OjpSZXBvcnRpbmdTdGF0dXM6OlNl
bmRSZXBvcnQpIGNvbnN0OwotICAgIGJvb2wgYWxsb3dGb250RnJvbVNvdXJjZShjb25zdCBVUkwm
LCBib29sIG92ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9saWN5ID0gZmFsc2UsIENvbnRlbnRTZWN1
cml0eVBvbGljeTo6UmVwb3J0aW5nU3RhdHVzID0gQ29udGVudFNlY3VyaXR5UG9saWN5OjpSZXBv
cnRpbmdTdGF0dXM6OlNlbmRSZXBvcnQpIGNvbnN0OwotICAgIGJvb2wgYWxsb3dNZWRpYUZyb21T
b3VyY2UoY29uc3QgVVJMJiwgYm9vbCBvdmVycmlkZUNvbnRlbnRTZWN1cml0eVBvbGljeSA9IGZh
bHNlLCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJlcG9ydGluZ1N0YXR1cyA9IENvbnRlbnRTZWN1
cml0eVBvbGljeTo6UmVwb3J0aW5nU3RhdHVzOjpTZW5kUmVwb3J0KSBjb25zdDsKLSAgICBib29s
IGFsbG93Q29ubmVjdFRvU291cmNlKGNvbnN0IFVSTCYsIGJvb2wgb3ZlcnJpZGVDb250ZW50U2Vj
dXJpdHlQb2xpY3kgPSBmYWxzZSwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpSZXBvcnRpbmdTdGF0
dXMgPSBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJlcG9ydGluZ1N0YXR1czo6U2VuZFJlcG9ydCkg
Y29uc3Q7Ci0gICAgYm9vbCBhbGxvd0Zvcm1BY3Rpb24oY29uc3QgVVJMJiwgYm9vbCBvdmVycmlk
ZUNvbnRlbnRTZWN1cml0eVBvbGljeSA9IGZhbHNlLCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJl
cG9ydGluZ1N0YXR1cyA9IENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVwb3J0aW5nU3RhdHVzOjpT
ZW5kUmVwb3J0KSBjb25zdDsKLSAgICBib29sIGFsbG93QmFzZVVSSShjb25zdCBVUkwmLCBib29s
IG92ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9saWN5ID0gZmFsc2UsIENvbnRlbnRTZWN1cml0eVBv
bGljeTo6UmVwb3J0aW5nU3RhdHVzID0gQ29udGVudFNlY3VyaXR5UG9saWN5OjpSZXBvcnRpbmdT
dGF0dXM6OlNlbmRSZXBvcnQpIGNvbnN0OwotICAgIGJvb2wgYWxsb3dGcmFtZUFuY2VzdG9ycyhj
b25zdCBGcmFtZSYsIGNvbnN0IFVSTCYsIGJvb2wgb3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xp
Y3kgPSBmYWxzZSwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpSZXBvcnRpbmdTdGF0dXMgPSBDb250
ZW50U2VjdXJpdHlQb2xpY3k6OlJlcG9ydGluZ1N0YXR1czo6U2VuZFJlcG9ydCkgY29uc3Q7Cisg
ICAgYm9vbCBhbGxvd0lubGluZVN0eWxlKGNvbnN0IFN0cmluZyYgY29udGV4dFVSTCwgY29uc3Qg
V1RGOjpPcmRpbmFsTnVtYmVyJiBjb250ZXh0TGluZSwgY29uc3QgU3RyaW5nJiBzdHlsZUNvbnRl
bnQsIGJvb2wgb3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3kgPSBmYWxzZSkgY29uc3Q7Cisg
ICAgYm9vbCBhbGxvd0V2YWwoSlNDOjpFeGVjU3RhdGUqLCBib29sIG92ZXJyaWRlQ29udGVudFNl
Y3VyaXR5UG9saWN5ID0gZmFsc2UpIGNvbnN0OworICAgIGJvb2wgYWxsb3dQbHVnaW5UeXBlKGNv
bnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiB0eXBlQXR0cmlidXRlLCBjb25zdCBVUkwm
LCBib29sIG92ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9saWN5ID0gZmFsc2UpIGNvbnN0OworICAg
IGJvb2wgYWxsb3dTY3JpcHRGcm9tU291cmNlKGNvbnN0IFVSTCYsIGJvb2wgb3ZlcnJpZGVDb250
ZW50U2VjdXJpdHlQb2xpY3kgPSBmYWxzZSkgY29uc3Q7CisgICAgYm9vbCBhbGxvd09iamVjdEZy
b21Tb3VyY2UoY29uc3QgVVJMJiwgYm9vbCBvdmVycmlkZUNvbnRlbnRTZWN1cml0eVBvbGljeSA9
IGZhbHNlKSBjb25zdDsKKyAgICBib29sIGFsbG93Q2hpbGRGcmFtZUZyb21Tb3VyY2UoY29uc3Qg
VVJMJiwgYm9vbCBvdmVycmlkZUNvbnRlbnRTZWN1cml0eVBvbGljeSA9IGZhbHNlKSBjb25zdDsK
KyAgICBib29sIGFsbG93Q2hpbGRDb250ZXh0RnJvbVNvdXJjZShjb25zdCBVUkwmLCBib29sIG92
ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9saWN5ID0gZmFsc2UpIGNvbnN0OworICAgIGJvb2wgYWxs
b3dJbWFnZUZyb21Tb3VyY2UoY29uc3QgVVJMJiwgYm9vbCBvdmVycmlkZUNvbnRlbnRTZWN1cml0
eVBvbGljeSA9IGZhbHNlKSBjb25zdDsKKyAgICBib29sIGFsbG93U3R5bGVGcm9tU291cmNlKGNv
bnN0IFVSTCYsIGJvb2wgb3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3kgPSBmYWxzZSkgY29u
c3Q7CisgICAgYm9vbCBhbGxvd0ZvbnRGcm9tU291cmNlKGNvbnN0IFVSTCYsIGJvb2wgb3ZlcnJp
ZGVDb250ZW50U2VjdXJpdHlQb2xpY3kgPSBmYWxzZSkgY29uc3Q7CisgICAgYm9vbCBhbGxvd01l
ZGlhRnJvbVNvdXJjZShjb25zdCBVUkwmLCBib29sIG92ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9s
aWN5ID0gZmFsc2UpIGNvbnN0OworICAgIGJvb2wgYWxsb3dDb25uZWN0VG9Tb3VyY2UoY29uc3Qg
VVJMJiwgYm9vbCBvdmVycmlkZUNvbnRlbnRTZWN1cml0eVBvbGljeSA9IGZhbHNlKSBjb25zdDsK
KyAgICBib29sIGFsbG93Rm9ybUFjdGlvbihjb25zdCBVUkwmLCBib29sIG92ZXJyaWRlQ29udGVu
dFNlY3VyaXR5UG9saWN5ID0gZmFsc2UpIGNvbnN0OworICAgIGJvb2wgYWxsb3dCYXNlVVJJKGNv
bnN0IFVSTCYsIGJvb2wgb3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3kgPSBmYWxzZSkgY29u
c3Q7CisgICAgYm9vbCBhbGxvd0ZyYW1lQW5jZXN0b3JzKGNvbnN0IEZyYW1lJiwgY29uc3QgVVJM
JiwgYm9vbCBvdmVycmlkZUNvbnRlbnRTZWN1cml0eVBvbGljeSA9IGZhbHNlKSBjb25zdDsKIAog
ICAgIHZvaWQgc2V0T3ZlcnJpZGVBbGxvd0lubGluZVN0eWxlKGJvb2wpOwogCkBAIC0xMTIsOCAr
MTExLDYgQEAgcHVibGljOgogCiAgICAgdm9pZCBnYXRoZXJSZXBvcnRVUklzKERPTVN0cmluZ0xp
c3QmKSBjb25zdDsKIAotICAgIFN0cmluZyBldmFsRGlzYWJsZWRFcnJvck1lc3NhZ2UoKSBjb25z
dDsKLQogICAgIGJvb2wgZXhwZXJpbWVudGFsRmVhdHVyZXNFbmFibGVkKCkgY29uc3Q7CiAKICAg
ICAvLyBUaGUgZm9sbG93aW5nIGZ1bmN0aW9ucyBhcmUgdXNlZCBieSBpbnRlcm5hbCBkYXRhIHN0
cnVjdHVyZXMgdG8gY2FsbCBiYWNrIGludG8gdGhpcyBvYmplY3Qgd2hlbiBwYXJzaW5nLCB2YWxp
ZGF0aW5nLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3Vy
aXR5UG9saWN5RGlyZWN0aXZlTGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250
ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0LmNwcAppbmRleCAzOTM4ZTQ0Nzk0NjY3NjQ3
ZGZjNGI1NDM0MWMwYjg3OGMyMTI2N2Q1Li5hZjkzNjg2MzFiNmIxNTBhNWZkNThhMWQ3OGYyNzg4
N2VhYzE3YTIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2Vj
dXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2Nz
cC9Db250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0LmNwcApAQCAtMjg2LDI2ICsyODYs
MjYgQEAgYm9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0OjpjaGVja0ZyYW1l
QW5jZXN0b3JzQW5kUmVwb3J0VmlvbGF0aW9uKEMKICAgICByZXR1cm4gZGVueUlmRW5mb3JjaW5n
UG9saWN5KCk7CiB9CiAKLWJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6
YWxsb3dKYXZhU2NyaXB0VVJMcyhjb25zdCBTdHJpbmcmIGNvbnRleHRVUkwsIGNvbnN0IFdURjo6
T3JkaW5hbE51bWJlciYgY29udGV4dExpbmUsIENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVwb3J0
aW5nU3RhdHVzIHJlcG9ydGluZ1N0YXR1cykgY29uc3QKK2Jvb2wgQ29udGVudFNlY3VyaXR5UG9s
aWN5RGlyZWN0aXZlTGlzdDo6YWxsb3dKYXZhU2NyaXB0VVJMcyhjb25zdCBTdHJpbmcmIGNvbnRl
eHRVUkwsIGNvbnN0IFdURjo6T3JkaW5hbE51bWJlciYgY29udGV4dExpbmUsIFJlcG9ydGluZ1N0
YXR1cyByZXBvcnRpbmdTdGF0dXMpIGNvbnN0CiB7CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PFN0cmluZz4gY29uc29sZU1lc3NhZ2UoQVNDSUlMaXRlcmFsKCJSZWZ1c2VkIHRvIGV4ZWN1dGUg
SmF2YVNjcmlwdCBVUkwgYmVjYXVzZSBpdCB2aW9sYXRlcyB0aGUgZm9sbG93aW5nIENvbnRlbnQg
U2VjdXJpdHkgUG9saWN5IGRpcmVjdGl2ZTogIikpOwotICAgIGlmIChyZXBvcnRpbmdTdGF0dXMg
PT0gQ29udGVudFNlY3VyaXR5UG9saWN5OjpSZXBvcnRpbmdTdGF0dXM6OlNlbmRSZXBvcnQpCisg
ICAgaWYgKHJlcG9ydGluZ1N0YXR1cyA9PSBSZXBvcnRpbmdTdGF0dXM6OlNlbmRSZXBvcnQpCiAg
ICAgICAgIHJldHVybiBjaGVja0lubGluZUFuZFJlcG9ydFZpb2xhdGlvbihvcGVyYXRpdmVEaXJl
Y3RpdmUobV9zY3JpcHRTcmMuZ2V0KCkpLCBjb25zb2xlTWVzc2FnZSwgY29udGV4dFVSTCwgY29u
dGV4dExpbmUsIHRydWUpOwogICAgIHJldHVybiBtX3JlcG9ydE9ubHkgfHwgY2hlY2tJbmxpbmUo
b3BlcmF0aXZlRGlyZWN0aXZlKG1fc2NyaXB0U3JjLmdldCgpKSk7CiB9CiAKLWJvb2wgQ29udGVu
dFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6YWxsb3dJbmxpbmVFdmVudEhhbmRsZXJzKGNv
bnN0IFN0cmluZyYgY29udGV4dFVSTCwgY29uc3QgV1RGOjpPcmRpbmFsTnVtYmVyJiBjb250ZXh0
TGluZSwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpSZXBvcnRpbmdTdGF0dXMgcmVwb3J0aW5nU3Rh
dHVzKSBjb25zdAorYm9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0OjphbGxv
d0lubGluZUV2ZW50SGFuZGxlcnMoY29uc3QgU3RyaW5nJiBjb250ZXh0VVJMLCBjb25zdCBXVEY6
Ok9yZGluYWxOdW1iZXImIGNvbnRleHRMaW5lLCBSZXBvcnRpbmdTdGF0dXMgcmVwb3J0aW5nU3Rh
dHVzKSBjb25zdAogewogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IGNvbnNvbGVN
ZXNzYWdlKEFTQ0lJTGl0ZXJhbCgiUmVmdXNlZCB0byBleGVjdXRlIGlubGluZSBldmVudCBoYW5k
bGVyIGJlY2F1c2UgaXQgdmlvbGF0ZXMgdGhlIGZvbGxvd2luZyBDb250ZW50IFNlY3VyaXR5IFBv
bGljeSBkaXJlY3RpdmU6ICIpKTsKLSAgICBpZiAocmVwb3J0aW5nU3RhdHVzID09IENvbnRlbnRT
ZWN1cml0eVBvbGljeTo6UmVwb3J0aW5nU3RhdHVzOjpTZW5kUmVwb3J0KQorICAgIGlmIChyZXBv
cnRpbmdTdGF0dXMgPT0gUmVwb3J0aW5nU3RhdHVzOjpTZW5kUmVwb3J0KQogICAgICAgICByZXR1
cm4gY2hlY2tJbmxpbmVBbmRSZXBvcnRWaW9sYXRpb24ob3BlcmF0aXZlRGlyZWN0aXZlKG1fc2Ny
aXB0U3JjLmdldCgpKSwgY29uc29sZU1lc3NhZ2UsIGNvbnRleHRVUkwsIGNvbnRleHRMaW5lLCB0
cnVlKTsKICAgICByZXR1cm4gbV9yZXBvcnRPbmx5IHx8IGNoZWNrSW5saW5lKG9wZXJhdGl2ZURp
cmVjdGl2ZShtX3NjcmlwdFNyYy5nZXQoKSkpOwogfQogCi1ib29sIENvbnRlbnRTZWN1cml0eVBv
bGljeURpcmVjdGl2ZUxpc3Q6OmFsbG93SW5saW5lU2NyaXB0KGNvbnN0IFN0cmluZyYgY29udGV4
dFVSTCwgY29uc3QgV1RGOjpPcmRpbmFsTnVtYmVyJiBjb250ZXh0TGluZSwgQ29udGVudFNlY3Vy
aXR5UG9saWN5OjpSZXBvcnRpbmdTdGF0dXMgcmVwb3J0aW5nU3RhdHVzKSBjb25zdAorYm9vbCBD
b250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0OjphbGxvd0lubGluZVNjcmlwdChjb25z
dCBTdHJpbmcmIGNvbnRleHRVUkwsIGNvbnN0IFdURjo6T3JkaW5hbE51bWJlciYgY29udGV4dExp
bmUsIFJlcG9ydGluZ1N0YXR1cyByZXBvcnRpbmdTdGF0dXMpIGNvbnN0CiB7CiAgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPFN0cmluZz4gY29uc29sZU1lc3NhZ2UoQVNDSUlMaXRlcmFsKCJSZWZ1
c2VkIHRvIGV4ZWN1dGUgaW5saW5lIHNjcmlwdCBiZWNhdXNlIGl0IHZpb2xhdGVzIHRoZSBmb2xs
b3dpbmcgQ29udGVudCBTZWN1cml0eSBQb2xpY3kgZGlyZWN0aXZlOiAiKSk7Ci0gICAgaWYgKHJl
cG9ydGluZ1N0YXR1cyA9PSBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJlcG9ydGluZ1N0YXR1czo6
U2VuZFJlcG9ydCkKKyAgICBpZiAocmVwb3J0aW5nU3RhdHVzID09IFJlcG9ydGluZ1N0YXR1czo6
U2VuZFJlcG9ydCkKICAgICAgICAgcmV0dXJuIGNoZWNrSW5saW5lQW5kUmVwb3J0VmlvbGF0aW9u
KG9wZXJhdGl2ZURpcmVjdGl2ZShtX3NjcmlwdFNyYy5nZXQoKSksIGNvbnNvbGVNZXNzYWdlLCBj
b250ZXh0VVJMLCBjb250ZXh0TGluZSwgdHJ1ZSk7CiAgICAgcmV0dXJuIG1fcmVwb3J0T25seSB8
fCBjaGVja0lubGluZShvcGVyYXRpdmVEaXJlY3RpdmUobV9zY3JpcHRTcmMuZ2V0KCkpKTsKIH0K
QEAgLTMyMCwxMCArMzIwLDEwIEBAIGJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZl
TGlzdDo6YWxsb3dTY3JpcHRXaXRoTm9uY2UoY29uc3QgU3RyaW5nJiBub25jCiAgICAgcmV0dXJu
IGNoZWNrTm9uY2Uob3BlcmF0aXZlRGlyZWN0aXZlKG1fc2NyaXB0U3JjLmdldCgpKSwgbm9uY2Up
OwogfQogCi1ib29sIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OmFsbG93SW5s
aW5lU3R5bGUoY29uc3QgU3RyaW5nJiBjb250ZXh0VVJMLCBjb25zdCBXVEY6Ok9yZGluYWxOdW1i
ZXImIGNvbnRleHRMaW5lLCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJlcG9ydGluZ1N0YXR1cyBy
ZXBvcnRpbmdTdGF0dXMpIGNvbnN0Citib29sIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2
ZUxpc3Q6OmFsbG93SW5saW5lU3R5bGUoY29uc3QgU3RyaW5nJiBjb250ZXh0VVJMLCBjb25zdCBX
VEY6Ok9yZGluYWxOdW1iZXImIGNvbnRleHRMaW5lLCBSZXBvcnRpbmdTdGF0dXMgcmVwb3J0aW5n
U3RhdHVzKSBjb25zdAogewogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IGNvbnNv
bGVNZXNzYWdlKEFTQ0lJTGl0ZXJhbCgiUmVmdXNlZCB0byBhcHBseSBpbmxpbmUgc3R5bGUgYmVj
YXVzZSBpdCB2aW9sYXRlcyB0aGUgZm9sbG93aW5nIENvbnRlbnQgU2VjdXJpdHkgUG9saWN5IGRp
cmVjdGl2ZTogIikpOwotICAgIGlmIChyZXBvcnRpbmdTdGF0dXMgPT0gQ29udGVudFNlY3VyaXR5
UG9saWN5OjpSZXBvcnRpbmdTdGF0dXM6OlNlbmRSZXBvcnQpCisgICAgaWYgKHJlcG9ydGluZ1N0
YXR1cyA9PSBSZXBvcnRpbmdTdGF0dXM6OlNlbmRSZXBvcnQpCiAgICAgICAgIHJldHVybiBjaGVj
a0lubGluZUFuZFJlcG9ydFZpb2xhdGlvbihvcGVyYXRpdmVEaXJlY3RpdmUobV9zdHlsZVNyYy5n
ZXQoKSksIGNvbnNvbGVNZXNzYWdlLCBjb250ZXh0VVJMLCBjb250ZXh0TGluZSwgZmFsc2UpOwog
ICAgIHJldHVybiBtX3JlcG9ydE9ubHkgfHwgY2hlY2tJbmxpbmUob3BlcmF0aXZlRGlyZWN0aXZl
KG1fc3R5bGVTcmMuZ2V0KCkpKTsKIH0KQEAgLTMzOCw0NSArMzM4LDQ1IEBAIGJvb2wgQ29udGVu
dFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6YWxsb3dTdHlsZVdpdGhOb25jZShjb25zdCBT
dHJpbmcmIG5vbmNlCiAgICAgcmV0dXJuIGNoZWNrTm9uY2Uob3BlcmF0aXZlRGlyZWN0aXZlKG1f
c3R5bGVTcmMuZ2V0KCkpLCBub25jZSk7CiB9CiAKLWJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5
RGlyZWN0aXZlTGlzdDo6YWxsb3dFdmFsKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgQ29udGVudFNl
Y3VyaXR5UG9saWN5OjpSZXBvcnRpbmdTdGF0dXMgcmVwb3J0aW5nU3RhdHVzKSBjb25zdAorYm9v
bCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0OjphbGxvd0V2YWwoSlNDOjpFeGVj
U3RhdGUqIHN0YXRlLCBSZXBvcnRpbmdTdGF0dXMgcmVwb3J0aW5nU3RhdHVzKSBjb25zdAogewog
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IGNvbnNvbGVNZXNzYWdlKEFTQ0lJTGl0
ZXJhbCgiUmVmdXNlZCB0byBldmFsdWF0ZSBzY3JpcHQgYmVjYXVzZSBpdCB2aW9sYXRlcyB0aGUg
Zm9sbG93aW5nIENvbnRlbnQgU2VjdXJpdHkgUG9saWN5IGRpcmVjdGl2ZTogIikpOwotICAgIGlm
IChyZXBvcnRpbmdTdGF0dXMgPT0gQ29udGVudFNlY3VyaXR5UG9saWN5OjpSZXBvcnRpbmdTdGF0
dXM6OlNlbmRSZXBvcnQpCisgICAgaWYgKHJlcG9ydGluZ1N0YXR1cyA9PSBSZXBvcnRpbmdTdGF0
dXM6OlNlbmRSZXBvcnQpCiAgICAgICAgIHJldHVybiBjaGVja0V2YWxBbmRSZXBvcnRWaW9sYXRp
b24ob3BlcmF0aXZlRGlyZWN0aXZlKG1fc2NyaXB0U3JjLmdldCgpKSwgY29uc29sZU1lc3NhZ2Us
IFN0cmluZygpLCBXVEY6Ok9yZGluYWxOdW1iZXI6OmJlZm9yZUZpcnN0KCksIHN0YXRlKTsKICAg
ICByZXR1cm4gbV9yZXBvcnRPbmx5IHx8IGNoZWNrRXZhbChvcGVyYXRpdmVEaXJlY3RpdmUobV9z
Y3JpcHRTcmMuZ2V0KCkpKTsKIH0KIAotYm9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3Rp
dmVMaXN0OjphbGxvd1BsdWdpblR5cGUoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcm
IHR5cGVBdHRyaWJ1dGUsIGNvbnN0IFVSTCYgdXJsLCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJl
cG9ydGluZ1N0YXR1cyByZXBvcnRpbmdTdGF0dXMpIGNvbnN0Citib29sIENvbnRlbnRTZWN1cml0
eVBvbGljeURpcmVjdGl2ZUxpc3Q6OmFsbG93UGx1Z2luVHlwZShjb25zdCBTdHJpbmcmIHR5cGUs
IGNvbnN0IFN0cmluZyYgdHlwZUF0dHJpYnV0ZSwgY29uc3QgVVJMJiB1cmwsIFJlcG9ydGluZ1N0
YXR1cyByZXBvcnRpbmdTdGF0dXMpIGNvbnN0CiB7Ci0gICAgaWYgKHJlcG9ydGluZ1N0YXR1cyA9
PSBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJlcG9ydGluZ1N0YXR1czo6U2VuZFJlcG9ydCkKKyAg
ICBpZiAocmVwb3J0aW5nU3RhdHVzID09IFJlcG9ydGluZ1N0YXR1czo6U2VuZFJlcG9ydCkKICAg
ICAgICAgcmV0dXJuIGNoZWNrTWVkaWFUeXBlQW5kUmVwb3J0VmlvbGF0aW9uKG1fcGx1Z2luVHlw
ZXMuZ2V0KCksIHR5cGUsIHR5cGVBdHRyaWJ1dGUsICJSZWZ1c2VkIHRvIGxvYWQgJyIgKyB1cmwu
c3RyaW5nQ2VudGVyRWxsaXBzaXplZFRvTGVuZ3RoKCkgKyAiJyAoTUlNRSB0eXBlICciICsgdHlw
ZUF0dHJpYnV0ZSArICInKSBiZWNhdXNlIGl0IHZpb2xhdGVzIHRoZSBmb2xsb3dpbmcgQ29udGVu
dCBTZWN1cml0eSBQb2xpY3kgRGlyZWN0aXZlOiAiKTsKICAgICByZXR1cm4gbV9yZXBvcnRPbmx5
IHx8IGNoZWNrTWVkaWFUeXBlKG1fcGx1Z2luVHlwZXMuZ2V0KCksIHR5cGUsIHR5cGVBdHRyaWJ1
dGUpOwogfQogCi1ib29sIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OmFsbG93
U2NyaXB0RnJvbVNvdXJjZShjb25zdCBVUkwmIHVybCwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpS
ZXBvcnRpbmdTdGF0dXMgcmVwb3J0aW5nU3RhdHVzKSBjb25zdAorYm9vbCBDb250ZW50U2VjdXJp
dHlQb2xpY3lEaXJlY3RpdmVMaXN0OjphbGxvd1NjcmlwdEZyb21Tb3VyY2UoY29uc3QgVVJMJiB1
cmwsIFJlcG9ydGluZ1N0YXR1cyByZXBvcnRpbmdTdGF0dXMpIGNvbnN0CiB7Ci0gICAgaWYgKHJl
cG9ydGluZ1N0YXR1cyA9PSBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJlcG9ydGluZ1N0YXR1czo6
U2VuZFJlcG9ydCkKKyAgICBpZiAocmVwb3J0aW5nU3RhdHVzID09IFJlcG9ydGluZ1N0YXR1czo6
U2VuZFJlcG9ydCkKICAgICAgICAgcmV0dXJuIGNoZWNrU291cmNlQW5kUmVwb3J0VmlvbGF0aW9u
KG9wZXJhdGl2ZURpcmVjdGl2ZShtX3NjcmlwdFNyYy5nZXQoKSksIHVybCwgc2NyaXB0U3JjKTsK
ICAgICByZXR1cm4gbV9yZXBvcnRPbmx5IHx8IGNoZWNrU291cmNlKG9wZXJhdGl2ZURpcmVjdGl2
ZShtX3NjcmlwdFNyYy5nZXQoKSksIHVybCk7CiB9CiAKLWJvb2wgQ29udGVudFNlY3VyaXR5UG9s
aWN5RGlyZWN0aXZlTGlzdDo6YWxsb3dPYmplY3RGcm9tU291cmNlKGNvbnN0IFVSTCYgdXJsLCBD
b250ZW50U2VjdXJpdHlQb2xpY3k6OlJlcG9ydGluZ1N0YXR1cyByZXBvcnRpbmdTdGF0dXMpIGNv
bnN0Citib29sIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OmFsbG93T2JqZWN0
RnJvbVNvdXJjZShjb25zdCBVUkwmIHVybCwgUmVwb3J0aW5nU3RhdHVzIHJlcG9ydGluZ1N0YXR1
cykgY29uc3QKIHsKICAgICBpZiAodXJsLmlzQmxhbmtVUkwoKSkKICAgICAgICAgcmV0dXJuIHRy
dWU7Ci0gICAgaWYgKHJlcG9ydGluZ1N0YXR1cyA9PSBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJl
cG9ydGluZ1N0YXR1czo6U2VuZFJlcG9ydCkKKyAgICBpZiAocmVwb3J0aW5nU3RhdHVzID09IFJl
cG9ydGluZ1N0YXR1czo6U2VuZFJlcG9ydCkKICAgICAgICAgcmV0dXJuIGNoZWNrU291cmNlQW5k
UmVwb3J0VmlvbGF0aW9uKG9wZXJhdGl2ZURpcmVjdGl2ZShtX29iamVjdFNyYy5nZXQoKSksIHVy
bCwgb2JqZWN0U3JjKTsKICAgICByZXR1cm4gbV9yZXBvcnRPbmx5IHx8IGNoZWNrU291cmNlKG9w
ZXJhdGl2ZURpcmVjdGl2ZShtX29iamVjdFNyYy5nZXQoKSksIHVybCk7CiB9CiAKLWJvb2wgQ29u
dGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6YWxsb3dDaGlsZENvbnRleHRGcm9tU291
cmNlKGNvbnN0IFVSTCYgdXJsLCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJlcG9ydGluZ1N0YXR1
cyByZXBvcnRpbmdTdGF0dXMpIGNvbnN0Citib29sIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVj
dGl2ZUxpc3Q6OmFsbG93Q2hpbGRDb250ZXh0RnJvbVNvdXJjZShjb25zdCBVUkwmIHVybCwgUmVw
b3J0aW5nU3RhdHVzIHJlcG9ydGluZ1N0YXR1cykgY29uc3QKIHsKLSAgICBpZiAocmVwb3J0aW5n
U3RhdHVzID09IENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVwb3J0aW5nU3RhdHVzOjpTZW5kUmVw
b3J0KQorICAgIGlmIChyZXBvcnRpbmdTdGF0dXMgPT0gUmVwb3J0aW5nU3RhdHVzOjpTZW5kUmVw
b3J0KQogICAgICAgICByZXR1cm4gY2hlY2tTb3VyY2VBbmRSZXBvcnRWaW9sYXRpb24ob3BlcmF0
aXZlRGlyZWN0aXZlKG1fY2hpbGRTcmMuZ2V0KCkpLCB1cmwsIGNoaWxkU3JjKTsKICAgICByZXR1
cm4gbV9yZXBvcnRPbmx5IHx8IGNoZWNrU291cmNlKG9wZXJhdGl2ZURpcmVjdGl2ZShtX2NoaWxk
U3JjLmdldCgpKSwgdXJsKTsKIH0KIAotYm9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3Rp
dmVMaXN0OjphbGxvd0NoaWxkRnJhbWVGcm9tU291cmNlKGNvbnN0IFVSTCYgdXJsLCBDb250ZW50
U2VjdXJpdHlQb2xpY3k6OlJlcG9ydGluZ1N0YXR1cyByZXBvcnRpbmdTdGF0dXMpIGNvbnN0Citi
b29sIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6OmFsbG93Q2hpbGRGcmFtZUZy
b21Tb3VyY2UoY29uc3QgVVJMJiB1cmwsIFJlcG9ydGluZ1N0YXR1cyByZXBvcnRpbmdTdGF0dXMp
IGNvbnN0CiB7CiAgICAgaWYgKHVybC5pc0JsYW5rVVJMKCkpCiAgICAgICAgIHJldHVybiB0cnVl
OwpAQCAtMzg0LDYzICszODQsNjMgQEAgYm9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3Rp
dmVMaXN0OjphbGxvd0NoaWxkRnJhbWVGcm9tU291cmNlKGNvbnN0IFVSTCYgdXIKICAgICAvLyBX
ZSBtdXN0IGVuZm9yY2UgdGhlIGZyYW1lLXNyYyBkaXJlY3RpdmUgKGlmIHNwZWNpZmllZCkgYmVm
b3JlIGVuZm9yY2luZyB0aGUgY2hpbGQtc3JjIGRpcmVjdGl2ZSBmb3IgYSBuZXN0ZWQgYnJvd3Np
bmcKICAgICAvLyBjb250ZXh0IGJ5IDxodHRwczovL3czYy5naXRodWIuaW8vd2ViYXBwc2VjLWNz
cC8yLyNkaXJlY3RpdmUtY2hpbGQtc3JjLW5lc3RlZD4gKDI5IEF1Z3VzdCAyMDE1KS4KICAgICBD
b250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0RGlyZWN0aXZlKiBkaXJlY3RpdmVUb0VuZm9y
Y2UgPSBvcGVyYXRpdmVEaXJlY3RpdmUobV9mcmFtZVNyYyA/IG1fZnJhbWVTcmMuZ2V0KCkgOiBt
X2NoaWxkU3JjLmdldCgpKTsKLSAgICBpZiAocmVwb3J0aW5nU3RhdHVzID09IENvbnRlbnRTZWN1
cml0eVBvbGljeTo6UmVwb3J0aW5nU3RhdHVzOjpTZW5kUmVwb3J0KQorICAgIGlmIChyZXBvcnRp
bmdTdGF0dXMgPT0gUmVwb3J0aW5nU3RhdHVzOjpTZW5kUmVwb3J0KQogICAgICAgICByZXR1cm4g
Y2hlY2tTb3VyY2VBbmRSZXBvcnRWaW9sYXRpb24oZGlyZWN0aXZlVG9FbmZvcmNlLCB1cmwsIGZy
YW1lU3JjKTsKICAgICByZXR1cm4gbV9yZXBvcnRPbmx5IHx8IGNoZWNrU291cmNlKGRpcmVjdGl2
ZVRvRW5mb3JjZSwgdXJsKTsKIH0KIAotYm9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3Rp
dmVMaXN0OjphbGxvd0ltYWdlRnJvbVNvdXJjZShjb25zdCBVUkwmIHVybCwgQ29udGVudFNlY3Vy
aXR5UG9saWN5OjpSZXBvcnRpbmdTdGF0dXMgcmVwb3J0aW5nU3RhdHVzKSBjb25zdAorYm9vbCBD
b250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0OjphbGxvd0ltYWdlRnJvbVNvdXJjZShj
b25zdCBVUkwmIHVybCwgUmVwb3J0aW5nU3RhdHVzIHJlcG9ydGluZ1N0YXR1cykgY29uc3QKIHsK
LSAgICBpZiAocmVwb3J0aW5nU3RhdHVzID09IENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVwb3J0
aW5nU3RhdHVzOjpTZW5kUmVwb3J0KQorICAgIGlmIChyZXBvcnRpbmdTdGF0dXMgPT0gUmVwb3J0
aW5nU3RhdHVzOjpTZW5kUmVwb3J0KQogICAgICAgICByZXR1cm4gY2hlY2tTb3VyY2VBbmRSZXBv
cnRWaW9sYXRpb24ob3BlcmF0aXZlRGlyZWN0aXZlKG1faW1nU3JjLmdldCgpKSwgdXJsLCBpbWdT
cmMpOwogICAgIHJldHVybiBtX3JlcG9ydE9ubHkgfHwgY2hlY2tTb3VyY2Uob3BlcmF0aXZlRGly
ZWN0aXZlKG1faW1nU3JjLmdldCgpKSwgdXJsKTsKIH0KIAotYm9vbCBDb250ZW50U2VjdXJpdHlQ
b2xpY3lEaXJlY3RpdmVMaXN0OjphbGxvd1N0eWxlRnJvbVNvdXJjZShjb25zdCBVUkwmIHVybCwg
Q29udGVudFNlY3VyaXR5UG9saWN5OjpSZXBvcnRpbmdTdGF0dXMgcmVwb3J0aW5nU3RhdHVzKSBj
b25zdAorYm9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0OjphbGxvd1N0eWxl
RnJvbVNvdXJjZShjb25zdCBVUkwmIHVybCwgUmVwb3J0aW5nU3RhdHVzIHJlcG9ydGluZ1N0YXR1
cykgY29uc3QKIHsKLSAgICBpZiAocmVwb3J0aW5nU3RhdHVzID09IENvbnRlbnRTZWN1cml0eVBv
bGljeTo6UmVwb3J0aW5nU3RhdHVzOjpTZW5kUmVwb3J0KQorICAgIGlmIChyZXBvcnRpbmdTdGF0
dXMgPT0gUmVwb3J0aW5nU3RhdHVzOjpTZW5kUmVwb3J0KQogICAgICAgICByZXR1cm4gY2hlY2tT
b3VyY2VBbmRSZXBvcnRWaW9sYXRpb24ob3BlcmF0aXZlRGlyZWN0aXZlKG1fc3R5bGVTcmMuZ2V0
KCkpLCB1cmwsIHN0eWxlU3JjKTsKICAgICByZXR1cm4gbV9yZXBvcnRPbmx5IHx8IGNoZWNrU291
cmNlKG9wZXJhdGl2ZURpcmVjdGl2ZShtX3N0eWxlU3JjLmdldCgpKSwgdXJsKTsKIH0KIAotYm9v
bCBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0OjphbGxvd0ZvbnRGcm9tU291cmNl
KGNvbnN0IFVSTCYgdXJsLCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJlcG9ydGluZ1N0YXR1cyBy
ZXBvcnRpbmdTdGF0dXMpIGNvbnN0Citib29sIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2
ZUxpc3Q6OmFsbG93Rm9udEZyb21Tb3VyY2UoY29uc3QgVVJMJiB1cmwsIFJlcG9ydGluZ1N0YXR1
cyByZXBvcnRpbmdTdGF0dXMpIGNvbnN0CiB7Ci0gICAgaWYgKHJlcG9ydGluZ1N0YXR1cyA9PSBD
b250ZW50U2VjdXJpdHlQb2xpY3k6OlJlcG9ydGluZ1N0YXR1czo6U2VuZFJlcG9ydCkKKyAgICBp
ZiAocmVwb3J0aW5nU3RhdHVzID09IFJlcG9ydGluZ1N0YXR1czo6U2VuZFJlcG9ydCkKICAgICAg
ICAgcmV0dXJuIGNoZWNrU291cmNlQW5kUmVwb3J0VmlvbGF0aW9uKG9wZXJhdGl2ZURpcmVjdGl2
ZShtX2ZvbnRTcmMuZ2V0KCkpLCB1cmwsIGZvbnRTcmMpOwogICAgIHJldHVybiBtX3JlcG9ydE9u
bHkgfHwgY2hlY2tTb3VyY2Uob3BlcmF0aXZlRGlyZWN0aXZlKG1fZm9udFNyYy5nZXQoKSksIHVy
bCk7CiB9CiAKLWJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6YWxsb3dN
ZWRpYUZyb21Tb3VyY2UoY29uc3QgVVJMJiB1cmwsIENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVw
b3J0aW5nU3RhdHVzIHJlcG9ydGluZ1N0YXR1cykgY29uc3QKK2Jvb2wgQ29udGVudFNlY3VyaXR5
UG9saWN5RGlyZWN0aXZlTGlzdDo6YWxsb3dNZWRpYUZyb21Tb3VyY2UoY29uc3QgVVJMJiB1cmws
IFJlcG9ydGluZ1N0YXR1cyByZXBvcnRpbmdTdGF0dXMpIGNvbnN0CiB7Ci0gICAgaWYgKHJlcG9y
dGluZ1N0YXR1cyA9PSBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJlcG9ydGluZ1N0YXR1czo6U2Vu
ZFJlcG9ydCkKKyAgICBpZiAocmVwb3J0aW5nU3RhdHVzID09IFJlcG9ydGluZ1N0YXR1czo6U2Vu
ZFJlcG9ydCkKICAgICAgICAgcmV0dXJuIGNoZWNrU291cmNlQW5kUmVwb3J0VmlvbGF0aW9uKG9w
ZXJhdGl2ZURpcmVjdGl2ZShtX21lZGlhU3JjLmdldCgpKSwgdXJsLCBtZWRpYVNyYyk7CiAgICAg
cmV0dXJuIG1fcmVwb3J0T25seSB8fCBjaGVja1NvdXJjZShvcGVyYXRpdmVEaXJlY3RpdmUobV9t
ZWRpYVNyYy5nZXQoKSksIHVybCk7CiB9CiAKLWJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5RGly
ZWN0aXZlTGlzdDo6YWxsb3dDb25uZWN0VG9Tb3VyY2UoY29uc3QgVVJMJiB1cmwsIENvbnRlbnRT
ZWN1cml0eVBvbGljeTo6UmVwb3J0aW5nU3RhdHVzIHJlcG9ydGluZ1N0YXR1cykgY29uc3QKK2Jv
b2wgQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6YWxsb3dDb25uZWN0VG9Tb3Vy
Y2UoY29uc3QgVVJMJiB1cmwsIFJlcG9ydGluZ1N0YXR1cyByZXBvcnRpbmdTdGF0dXMpIGNvbnN0
CiB7Ci0gICAgaWYgKHJlcG9ydGluZ1N0YXR1cyA9PSBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJl
cG9ydGluZ1N0YXR1czo6U2VuZFJlcG9ydCkKKyAgICBpZiAocmVwb3J0aW5nU3RhdHVzID09IFJl
cG9ydGluZ1N0YXR1czo6U2VuZFJlcG9ydCkKICAgICAgICAgcmV0dXJuIGNoZWNrU291cmNlQW5k
UmVwb3J0VmlvbGF0aW9uKG9wZXJhdGl2ZURpcmVjdGl2ZShtX2Nvbm5lY3RTcmMuZ2V0KCkpLCB1
cmwsIGNvbm5lY3RTcmMpOwogICAgIHJldHVybiBtX3JlcG9ydE9ubHkgfHwgY2hlY2tTb3VyY2Uo
b3BlcmF0aXZlRGlyZWN0aXZlKG1fY29ubmVjdFNyYy5nZXQoKSksIHVybCk7CiB9CiAKLWJvb2wg
Q29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdDo6YWxsb3dGb3JtQWN0aW9uKGNvbnN0
IFVSTCYgdXJsLCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJlcG9ydGluZ1N0YXR1cyByZXBvcnRp
bmdTdGF0dXMpIGNvbnN0Citib29sIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3Q6
OmFsbG93Rm9ybUFjdGlvbihjb25zdCBVUkwmIHVybCwgUmVwb3J0aW5nU3RhdHVzIHJlcG9ydGlu
Z1N0YXR1cykgY29uc3QKIHsKLSAgICBpZiAocmVwb3J0aW5nU3RhdHVzID09IENvbnRlbnRTZWN1
cml0eVBvbGljeTo6UmVwb3J0aW5nU3RhdHVzOjpTZW5kUmVwb3J0KQorICAgIGlmIChyZXBvcnRp
bmdTdGF0dXMgPT0gUmVwb3J0aW5nU3RhdHVzOjpTZW5kUmVwb3J0KQogICAgICAgICByZXR1cm4g
Y2hlY2tTb3VyY2VBbmRSZXBvcnRWaW9sYXRpb24obV9mb3JtQWN0aW9uLmdldCgpLCB1cmwsIGZv
cm1BY3Rpb24pOwogICAgIHJldHVybiBtX3JlcG9ydE9ubHkgfHwgY2hlY2tTb3VyY2UobV9mb3Jt
QWN0aW9uLmdldCgpLCB1cmwpOwogfQogCi1ib29sIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVj
dGl2ZUxpc3Q6OmFsbG93QmFzZVVSSShjb25zdCBVUkwmIHVybCwgQ29udGVudFNlY3VyaXR5UG9s
aWN5OjpSZXBvcnRpbmdTdGF0dXMgcmVwb3J0aW5nU3RhdHVzKSBjb25zdAorYm9vbCBDb250ZW50
U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0OjphbGxvd0Jhc2VVUkkoY29uc3QgVVJMJiB1cmws
IFJlcG9ydGluZ1N0YXR1cyByZXBvcnRpbmdTdGF0dXMpIGNvbnN0CiB7Ci0gICAgaWYgKHJlcG9y
dGluZ1N0YXR1cyA9PSBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJlcG9ydGluZ1N0YXR1czo6U2Vu
ZFJlcG9ydCkKKyAgICBpZiAocmVwb3J0aW5nU3RhdHVzID09IFJlcG9ydGluZ1N0YXR1czo6U2Vu
ZFJlcG9ydCkKICAgICAgICAgcmV0dXJuIGNoZWNrU291cmNlQW5kUmVwb3J0VmlvbGF0aW9uKG1f
YmFzZVVSSS5nZXQoKSwgdXJsLCBiYXNlVVJJKTsKICAgICByZXR1cm4gbV9yZXBvcnRPbmx5IHx8
IGNoZWNrU291cmNlKG1fYmFzZVVSSS5nZXQoKSwgdXJsKTsKIH0KIAotYm9vbCBDb250ZW50U2Vj
dXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0OjphbGxvd0ZyYW1lQW5jZXN0b3JzKGNvbnN0IEZyYW1l
JiBmcmFtZSwgY29uc3QgVVJMJiB1cmwsIENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVwb3J0aW5n
U3RhdHVzIHJlcG9ydGluZ1N0YXR1cykgY29uc3QKK2Jvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5
RGlyZWN0aXZlTGlzdDo6YWxsb3dGcmFtZUFuY2VzdG9ycyhjb25zdCBGcmFtZSYgZnJhbWUsIGNv
bnN0IFVSTCYgdXJsLCBSZXBvcnRpbmdTdGF0dXMgcmVwb3J0aW5nU3RhdHVzKSBjb25zdAogewot
ICAgIGlmIChyZXBvcnRpbmdTdGF0dXMgPT0gQ29udGVudFNlY3VyaXR5UG9saWN5OjpSZXBvcnRp
bmdTdGF0dXM6OlNlbmRSZXBvcnQpCisgICAgaWYgKHJlcG9ydGluZ1N0YXR1cyA9PSBSZXBvcnRp
bmdTdGF0dXM6OlNlbmRSZXBvcnQpCiAgICAgICAgIHJldHVybiBjaGVja0ZyYW1lQW5jZXN0b3Jz
QW5kUmVwb3J0VmlvbGF0aW9uKG1fZnJhbWVBbmNlc3RvcnMuZ2V0KCksIGZyYW1lLCB1cmwsIGZy
YW1lQW5jZXN0b3JzKTsKICAgICByZXR1cm4gbV9yZXBvcnRPbmx5IHx8IGNoZWNrRnJhbWVBbmNl
c3RvcnMobV9mcmFtZUFuY2VzdG9ycy5nZXQoKSwgZnJhbWUpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTGlzdC5o
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZl
TGlzdC5oCmluZGV4IDVkNzM1Nzg4ZTkwYzRjZmZhZDcxOGU1OWUyYmFlOGUyODZmZTkwMDcuLmU1
NzhjYTEwNTJlYTNiZDI5M2E4NzhkMDc0ZDI1NjczZjg4OWE5NmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZUxpc3QuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3Rp
dmVMaXN0LmgKQEAgLTQ4LDMwICs0OCwzNCBAQCBwdWJsaWM6CiAgICAgY29uc3QgU3RyaW5nJiBo
ZWFkZXIoKSBjb25zdCB7IHJldHVybiBtX2hlYWRlcjsgfQogICAgIENvbnRlbnRTZWN1cml0eVBv
bGljeUhlYWRlclR5cGUgaGVhZGVyVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1faGVhZGVyVHlwZTsg
fQogCi0gICAgYm9vbCBhbGxvd0phdmFTY3JpcHRVUkxzKGNvbnN0IFN0cmluZyYgY29udGV4dFVS
TCwgY29uc3QgV1RGOjpPcmRpbmFsTnVtYmVyJiBjb250ZXh0TGluZSwgQ29udGVudFNlY3VyaXR5
UG9saWN5OjpSZXBvcnRpbmdTdGF0dXMpIGNvbnN0OwotICAgIGJvb2wgYWxsb3dJbmxpbmVFdmVu
dEhhbmRsZXJzKGNvbnN0IFN0cmluZyYgY29udGV4dFVSTCwgY29uc3QgV1RGOjpPcmRpbmFsTnVt
YmVyJiBjb250ZXh0TGluZSwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpSZXBvcnRpbmdTdGF0dXMp
IGNvbnN0OwotICAgIGJvb2wgYWxsb3dJbmxpbmVTY3JpcHQoY29uc3QgU3RyaW5nJiBjb250ZXh0
VVJMLCBjb25zdCBXVEY6Ok9yZGluYWxOdW1iZXImIGNvbnRleHRMaW5lLCBDb250ZW50U2VjdXJp
dHlQb2xpY3k6OlJlcG9ydGluZ1N0YXR1cykgY29uc3Q7CisgICAgZW51bSBjbGFzcyBSZXBvcnRp
bmdTdGF0dXMgeworICAgICAgICBTZW5kUmVwb3J0LAorICAgICAgICBTdXBwcmVzc1JlcG9ydAor
ICAgIH07CisgICAgYm9vbCBhbGxvd0phdmFTY3JpcHRVUkxzKGNvbnN0IFN0cmluZyYgY29udGV4
dFVSTCwgY29uc3QgV1RGOjpPcmRpbmFsTnVtYmVyJiBjb250ZXh0TGluZSwgUmVwb3J0aW5nU3Rh
dHVzKSBjb25zdDsKKyAgICBib29sIGFsbG93SW5saW5lRXZlbnRIYW5kbGVycyhjb25zdCBTdHJp
bmcmIGNvbnRleHRVUkwsIGNvbnN0IFdURjo6T3JkaW5hbE51bWJlciYgY29udGV4dExpbmUsIFJl
cG9ydGluZ1N0YXR1cykgY29uc3Q7CisgICAgYm9vbCBhbGxvd0lubGluZVNjcmlwdChjb25zdCBT
dHJpbmcmIGNvbnRleHRVUkwsIGNvbnN0IFdURjo6T3JkaW5hbE51bWJlciYgY29udGV4dExpbmUs
IFJlcG9ydGluZ1N0YXR1cykgY29uc3Q7CiAgICAgYm9vbCBhbGxvd0lubGluZVNjcmlwdFdpdGhI
YXNoKGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeUhhc2gmKSBjb25zdDsKICAgICBib29sIGFs
bG93U2NyaXB0V2l0aE5vbmNlKGNvbnN0IFN0cmluZyYgbm9uY2UpIGNvbnN0OwotICAgIGJvb2wg
YWxsb3dJbmxpbmVTdHlsZShjb25zdCBTdHJpbmcmIGNvbnRleHRVUkwsIGNvbnN0IFdURjo6T3Jk
aW5hbE51bWJlciYgY29udGV4dExpbmUsIENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVwb3J0aW5n
U3RhdHVzKSBjb25zdDsKKyAgICBib29sIGFsbG93SW5saW5lU3R5bGUoY29uc3QgU3RyaW5nJiBj
b250ZXh0VVJMLCBjb25zdCBXVEY6Ok9yZGluYWxOdW1iZXImIGNvbnRleHRMaW5lLCBSZXBvcnRp
bmdTdGF0dXMpIGNvbnN0OwogICAgIGJvb2wgYWxsb3dJbmxpbmVTdHlsZVdpdGhIYXNoKGNvbnN0
IENvbnRlbnRTZWN1cml0eVBvbGljeUhhc2gmKSBjb25zdDsKICAgICBib29sIGFsbG93U3R5bGVX
aXRoTm9uY2UoY29uc3QgU3RyaW5nJiBub25jZSkgY29uc3Q7Ci0gICAgYm9vbCBhbGxvd0V2YWwo
SlNDOjpFeGVjU3RhdGUqLCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJlcG9ydGluZ1N0YXR1cykg
Y29uc3Q7Ci0gICAgYm9vbCBhbGxvd1BsdWdpblR5cGUoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25z
dCBTdHJpbmcmIHR5cGVBdHRyaWJ1dGUsIGNvbnN0IFVSTCYsIENvbnRlbnRTZWN1cml0eVBvbGlj
eTo6UmVwb3J0aW5nU3RhdHVzKSBjb25zdDsKLQotICAgIGJvb2wgYWxsb3dTY3JpcHRGcm9tU291
cmNlKGNvbnN0IFVSTCYsIENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVwb3J0aW5nU3RhdHVzKSBj
b25zdDsKLSAgICBib29sIGFsbG93T2JqZWN0RnJvbVNvdXJjZShjb25zdCBVUkwmLCBDb250ZW50
U2VjdXJpdHlQb2xpY3k6OlJlcG9ydGluZ1N0YXR1cykgY29uc3Q7Ci0gICAgYm9vbCBhbGxvd0No
aWxkRnJhbWVGcm9tU291cmNlKGNvbnN0IFVSTCYsIENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVw
b3J0aW5nU3RhdHVzKSBjb25zdDsKLSAgICBib29sIGFsbG93Q2hpbGRDb250ZXh0RnJvbVNvdXJj
ZShjb25zdCBVUkwmLCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJlcG9ydGluZ1N0YXR1cykgY29u
c3Q7Ci0gICAgYm9vbCBhbGxvd0ltYWdlRnJvbVNvdXJjZShjb25zdCBVUkwmLCBDb250ZW50U2Vj
dXJpdHlQb2xpY3k6OlJlcG9ydGluZ1N0YXR1cykgY29uc3Q7Ci0gICAgYm9vbCBhbGxvd1N0eWxl
RnJvbVNvdXJjZShjb25zdCBVUkwmLCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJlcG9ydGluZ1N0
YXR1cykgY29uc3Q7Ci0gICAgYm9vbCBhbGxvd0ZvbnRGcm9tU291cmNlKGNvbnN0IFVSTCYsIENv
bnRlbnRTZWN1cml0eVBvbGljeTo6UmVwb3J0aW5nU3RhdHVzKSBjb25zdDsKLSAgICBib29sIGFs
bG93TWVkaWFGcm9tU291cmNlKGNvbnN0IFVSTCYsIENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVw
b3J0aW5nU3RhdHVzKSBjb25zdDsKLSAgICBib29sIGFsbG93Q29ubmVjdFRvU291cmNlKGNvbnN0
IFVSTCYsIENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVwb3J0aW5nU3RhdHVzKSBjb25zdDsKLSAg
ICBib29sIGFsbG93Rm9ybUFjdGlvbihjb25zdCBVUkwmLCBDb250ZW50U2VjdXJpdHlQb2xpY3k6
OlJlcG9ydGluZ1N0YXR1cykgY29uc3Q7Ci0gICAgYm9vbCBhbGxvd0Jhc2VVUkkoY29uc3QgVVJM
JiwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpSZXBvcnRpbmdTdGF0dXMpIGNvbnN0OwotCi0gICAg
Ym9vbCBhbGxvd0ZyYW1lQW5jZXN0b3JzKGNvbnN0IEZyYW1lJiwgY29uc3QgVVJMJiwgQ29udGVu
dFNlY3VyaXR5UG9saWN5OjpSZXBvcnRpbmdTdGF0dXMpIGNvbnN0OworICAgIGJvb2wgYWxsb3dF
dmFsKEpTQzo6RXhlY1N0YXRlKiwgUmVwb3J0aW5nU3RhdHVzKSBjb25zdDsKKyAgICBib29sIGFs
bG93UGx1Z2luVHlwZShjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgdHlwZUF0dHJp
YnV0ZSwgY29uc3QgVVJMJiwgUmVwb3J0aW5nU3RhdHVzKSBjb25zdDsKKworICAgIGJvb2wgYWxs
b3dTY3JpcHRGcm9tU291cmNlKGNvbnN0IFVSTCYsIFJlcG9ydGluZ1N0YXR1cykgY29uc3Q7Cisg
ICAgYm9vbCBhbGxvd09iamVjdEZyb21Tb3VyY2UoY29uc3QgVVJMJiwgUmVwb3J0aW5nU3RhdHVz
KSBjb25zdDsKKyAgICBib29sIGFsbG93Q2hpbGRGcmFtZUZyb21Tb3VyY2UoY29uc3QgVVJMJiwg
UmVwb3J0aW5nU3RhdHVzKSBjb25zdDsKKyAgICBib29sIGFsbG93Q2hpbGRDb250ZXh0RnJvbVNv
dXJjZShjb25zdCBVUkwmLCBSZXBvcnRpbmdTdGF0dXMpIGNvbnN0OworICAgIGJvb2wgYWxsb3dJ
bWFnZUZyb21Tb3VyY2UoY29uc3QgVVJMJiwgUmVwb3J0aW5nU3RhdHVzKSBjb25zdDsKKyAgICBi
b29sIGFsbG93U3R5bGVGcm9tU291cmNlKGNvbnN0IFVSTCYsIFJlcG9ydGluZ1N0YXR1cykgY29u
c3Q7CisgICAgYm9vbCBhbGxvd0ZvbnRGcm9tU291cmNlKGNvbnN0IFVSTCYsIFJlcG9ydGluZ1N0
YXR1cykgY29uc3Q7CisgICAgYm9vbCBhbGxvd01lZGlhRnJvbVNvdXJjZShjb25zdCBVUkwmLCBS
ZXBvcnRpbmdTdGF0dXMpIGNvbnN0OworICAgIGJvb2wgYWxsb3dDb25uZWN0VG9Tb3VyY2UoY29u
c3QgVVJMJiwgUmVwb3J0aW5nU3RhdHVzKSBjb25zdDsKKyAgICBib29sIGFsbG93Rm9ybUFjdGlv
bihjb25zdCBVUkwmLCBSZXBvcnRpbmdTdGF0dXMpIGNvbnN0OworICAgIGJvb2wgYWxsb3dCYXNl
VVJJKGNvbnN0IFVSTCYsIFJlcG9ydGluZ1N0YXR1cykgY29uc3Q7CisKKyAgICBib29sIGFsbG93
RnJhbWVBbmNlc3RvcnMoY29uc3QgRnJhbWUmLCBjb25zdCBVUkwmLCBSZXBvcnRpbmdTdGF0dXMp
IGNvbnN0OwogCiAgICAgY29uc3QgU3RyaW5nJiBldmFsRGlzYWJsZWRFcnJvck1lc3NhZ2UoKSBj
b25zdCB7IHJldHVybiBtX2V2YWxEaXNhYmxlZEVycm9yTWVzc2FnZTsgfQogICAgIENvbnRlbnRT
ZWN1cml0eVBvbGljeTo6UmVmbGVjdGVkWFNTRGlzcG9zaXRpb24gcmVmbGVjdGVkWFNTRGlzcG9z
aXRpb24oKSBjb25zdCB7IHJldHVybiBtX3JlZmxlY3RlZFhTU0Rpc3Bvc2l0aW9uOyB9Cg==
</data>
<flag name="review"
          id="298832"
          type_id="1"
          status="+"
          setter="aestes"
    />
          </attachment>
      

    </bug>

</bugzilla>