<?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>222760</bug_id>
          
          <creation_ts>2021-03-04 13:56:28 -0800</creation_ts>
          <short_desc>Reduce use of CFRetain() / CFRelease() / CFAutoRelease() in WebKit</short_desc>
          <delta_ts>2021-03-05 08:25:58 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>aboxhall</cc>
    
    <cc>achristensen</cc>
    
    <cc>apinheiro</cc>
    
    <cc>benjamin</cc>
    
    <cc>cfleizach</cc>
    
    <cc>changseok</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>glenn</cc>
    
    <cc>hi</cc>
    
    <cc>japhet</cc>
    
    <cc>jcraig</cc>
    
    <cc>jdiggs</cc>
    
    <cc>jer.noble</cc>
    
    <cc>joepeck</cc>
    
    <cc>keith_miller</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mifenton</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>msaboff</cc>
    
    <cc>pdr</cc>
    
    <cc>philipj</cc>
    
    <cc>saam</cc>
    
    <cc>samuel_white</cc>
    
    <cc>sam</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1736005</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-03-04 13:56:28 -0800</bug_when>
    <thetext>Reduce use of CFRetain() / CFRelease() / CFAutoRelease() in WebKit by using RetainPtr&lt;&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1736006</commentid>
    <comment_count>1</comment_count>
      <attachid>422280</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-03-04 13:59:21 -0800</bug_when>
    <thetext>Created attachment 422280
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1736009</commentid>
    <comment_count>2</comment_count>
      <attachid>422283</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-03-04 14:05:19 -0800</bug_when>
    <thetext>Created attachment 422283
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1736019</commentid>
    <comment_count>3</comment_count>
      <attachid>422287</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-03-04 14:28:50 -0800</bug_when>
    <thetext>Created attachment 422287
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1736028</commentid>
    <comment_count>4</comment_count>
      <attachid>422290</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-03-04 14:54:39 -0800</bug_when>
    <thetext>Created attachment 422290
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1736031</commentid>
    <comment_count>5</comment_count>
      <attachid>422292</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-03-04 15:04:12 -0800</bug_when>
    <thetext>Created attachment 422292
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1736075</commentid>
    <comment_count>6</comment_count>
      <attachid>422301</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-03-04 15:55:10 -0800</bug_when>
    <thetext>Created attachment 422301
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1736079</commentid>
    <comment_count>7</comment_count>
      <attachid>422303</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-03-04 16:00:33 -0800</bug_when>
    <thetext>Created attachment 422303
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1736096</commentid>
    <comment_count>8</comment_count>
      <attachid>422310</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-03-04 16:30:47 -0800</bug_when>
    <thetext>Created attachment 422310
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1736135</commentid>
    <comment_count>9</comment_count>
      <attachid>422310</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-03-04 18:44:03 -0800</bug_when>
    <thetext>Comment on attachment 422310
Patch

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

&gt; Source/WebCore/accessibility/mac/AXObjectCacheMac.mm:606
&gt; +    return (AXTextMarkerRangeRef)adoptCF(AXTextMarkerRangeCreate(kCFAllocatorDefault, startMarker, endMarker)).bridgingAutorelease();

I’m pretty sure that CFBridgingRelease was wrong here; instead it would be correct to use CFAutorelease. AXTextMarkerRangeRef is not an Objective-C pointer type and doesn’t work with ARC.

Separately, we should change this internal function to return a RetainPtr&lt;&gt; and not do either kind of autorelease, do them at the call sites instead. But I’m pretty sure we want autorelease(), not bridgingAutorelease().

Same applies for the rest of this file.

&gt; Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperBase.mm:435
&gt; +    PathConversionInfo conversion = { self, adoptCF(CGPathCreateMutable()).autorelease() };

The autorelease() should be at the return statement. We can refactor to add a local variable that holds the RetainPtr, and use a get() here, not autorelease().

&gt; Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm:745
&gt; +    return adoptCF(AXTextMarkerCreate(kCFAllocatorDefault, (const UInt8*)&amp;textMarkerData, sizeof(textMarkerData))).bridgingAutorelease();

For this internal function, we should use RetainPtr&lt;id&gt;, not autorelease. The call to autorelease should go up to the callers level. However, that does requires we convert RetainPtr&lt;AXTextMarkerRef&gt; to RetainPtr&lt;id&gt;. Maybe this should return RetainPtr&lt;AXTextMarkerRef&gt; and put bridgingAutorelease() at the call sites that need to convert it to an id.

Same applies to other functions in this file.

&gt; Source/WebCore/loader/cocoa/DiskCacheMonitorCocoa.mm:108
&gt; -        CFRetain(response);
&gt; +        auto strongResponse = retainPtr(response);
&gt;          WebThreadRun(^{
&gt; -            block(response);
&gt; -            CFRelease(response);
&gt; +            block(strongResponse.get());
&gt;          });

A lambda could make this a little more elegant since we could write the strongResponse inside the capture expression. But certainly OK like this.

&gt; Source/WebCore/page/mac/EventHandlerMac.mm:471
&gt; +    RetainPtr&lt;NSScrollView&gt; strongSelf;

Given the name &quot;retaining&quot; here, I think this should be named &quot;retainedSelf&quot;.

&gt; Source/WebCore/page/mac/EventHandlerMac.mm:473
&gt;      bool shouldRetainSelf = isMainThread() &amp;&amp; nsScrollViewScrollWheelShouldRetainSelf();
&gt; -
&gt;      if (shouldRetainSelf)

Don’t need the bool here any more. Should just put it inside the if statement now.

&gt; Source/WebCore/page/mac/EventHandlerMac.mm:474
&gt; +        strongSelf = retainPtr(self);

Nice to be explicit, I guess, but the call to retainPtr is not needed.

&gt; Source/WebCore/platform/mediarecorder/cocoa/AudioSampleBufferCompressor.mm:348
&gt;                  auto sampleBuffer = adoptCF((CMSampleBufferRef)(const_cast&lt;void*&gt;(CMBufferQueueDequeueAndRetain(m_inputBufferQueue.get()))));

Messy, wonder why this CMSampleBufferRef cast is safe.

&gt; Source/WebCore/platform/network/cf/ResourceHandleCFNet.cpp:207
&gt; +    auto streamProperties  = adoptCF(CFDictionaryCreateMutable(0, 0, &amp;kCFTypeDictionaryKeyCallBacks, &amp;kCFTypeDictionaryValueCallBacks));

Extra space here before the &quot;=&quot;.

&gt; Source/WebCore/platform/network/cf/ResourceHandleCFURLConnectionDelegateWithOperationQueue.cpp:140
&gt; +            return cfRequest.leakRef();

I was really puzzled by this, and had to study a lot of code to find out why this is OK.

We should change ResourceHandleCFURLConnectionDelegate::willSendRequest and ResourceHandleCFURLConnectionDelegate::willCacheResponse to return a RetainPtr so the leakRef can be where it belongs, in ResourceHandleCFURLConnectionDelegate::willSendRequestCallback and ResourceHandleCFURLConnectionDelegate::willCacheResponseCallback.

At this point, it’s Apple-Windows-port-only code, but probably still worth the effort.

&gt; Source/WebCore/platform/network/cf/ResourceRequestCFNet.cpp:286
&gt; +        m_httpMethod = method.get();

Can this be WTFMove(method) instead of method.get()?

&gt; Source/WebCore/testing/cocoa/WebViewVisualIdentificationOverlay.mm:127
&gt; +    return adoptCF(CTFontCreateWithName(CFSTR(&quot;Helvetica&quot;), 20, &amp;matrix)).autorelease();

I think we should change this to return RetainPtr&lt;CTFontRef&gt; and put get() calls at the two call sites. No need for autorelease.

&gt; Source/WebKit/PluginProcess/mac/PluginProcessMac.mm:314
&gt; +    // We leak the two observers so that they observe notifications for the lifetime of the process.

We could consider sticking these in global variables just to make leak checkers less confused. static NeverDestroyed&lt;RetainPtr&lt;id&gt;&gt;, I suppose. Would waste a few bytes of global storage, but why not? Or maybe leak checkers are not confused?

&gt; Source/WebKitLegacy/mac/WebView/WebView.mm:8406
&gt; +    NSString *nsurlCacheDirectory = adoptCF(_CFURLCacheCopyCacheDirectory([[NSURLCache sharedURLCache] _CFURLCache])).bridgingAutorelease();

Can we use RetainPtr&lt;CFStringRef&gt; for the local variable instead? I know we’d need to add two type casts, but at least no autorelease.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1736153</commentid>
    <comment_count>10</comment_count>
      <attachid>422310</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-03-04 20:01:13 -0800</bug_when>
    <thetext>Comment on attachment 422310
Patch

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

&gt;&gt; Source/WebCore/platform/network/cf/ResourceRequestCFNet.cpp:286
&gt;&gt; +        m_httpMethod = method.get();
&gt; 
&gt; Can this be WTFMove(method) instead of method.get()?

I don&apos;t think so because m_httpMethod is a String, not a RetainPtr&lt;&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1736156</commentid>
    <comment_count>11</comment_count>
      <attachid>422310</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-03-04 20:14:04 -0800</bug_when>
    <thetext>Comment on attachment 422310
Patch

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

&gt;&gt; Source/WebKit/PluginProcess/mac/PluginProcessMac.mm:314
&gt;&gt; +    // We leak the two observers so that they observe notifications for the lifetime of the process.
&gt; 
&gt; We could consider sticking these in global variables just to make leak checkers less confused. static NeverDestroyed&lt;RetainPtr&lt;id&gt;&gt;, I suppose. Would waste a few bytes of global storage, but why not? Or maybe leak checkers are not confused?

Actually, looking at https://developer.apple.com/documentation/foundation/nsnotificationcenter/1411723-addobserverforname it says:
&quot;&quot;&quot;
Return Value
An opaque object to act as the observer. Notification center strongly holds this return value until you remove the observer registration.
&quot;&quot;&quot;

So I don&apos;t think we need to do any leaking on our side.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1736159</commentid>
    <comment_count>12</comment_count>
      <attachid>422328</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-03-04 20:19:02 -0800</bug_when>
    <thetext>Created attachment 422328
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1736334</commentid>
    <comment_count>13</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-03-05 07:44:53 -0800</bug_when>
    <thetext>Committed r273966: &lt;https://commits.webkit.org/r273966&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 422328.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1736335</commentid>
    <comment_count>14</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-03-05 07:45:23 -0800</bug_when>
    <thetext>&lt;rdar://problem/75094347&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1736342</commentid>
    <comment_count>15</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-03-05 08:07:01 -0800</bug_when>
    <thetext>This broke the Windows build.
See https://build.webkit.org/#/builders/67/builds/828</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1736343</commentid>
    <comment_count>16</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-03-05 08:07:30 -0800</bug_when>
    <thetext>(In reply to Alex Christensen from comment #15)
&gt; This broke the Windows build.
&gt; See https://build.webkit.org/#/builders/67/builds/828

Looking now. thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1736346</commentid>
    <comment_count>17</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-03-05 08:11:20 -0800</bug_when>
    <thetext>(In reply to Chris Dumez from comment #16)
&gt; (In reply to Alex Christensen from comment #15)
&gt; &gt; This broke the Windows build.
&gt; &gt; See https://build.webkit.org/#/builders/67/builds/828
&gt; 
&gt; Looking now. thanks.

Landed a fix in &lt;https://commits.webkit.org/r273969&gt;. I&apos;ll monitor this bot since the win-ews somehow did not process the patch overnight.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1736352</commentid>
    <comment_count>18</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-03-05 08:25:58 -0800</bug_when>
    <thetext>(In reply to Chris Dumez from comment #17)
&gt; (In reply to Chris Dumez from comment #16)
&gt; &gt; (In reply to Alex Christensen from comment #15)
&gt; &gt; &gt; This broke the Windows build.
&gt; &gt; &gt; See https://build.webkit.org/#/builders/67/builds/828
&gt; &gt; 
&gt; &gt; Looking now. thanks.
&gt; 
&gt; Landed a fix in &lt;https://commits.webkit.org/r273969&gt;. I&apos;ll monitor this bot
&gt; since the win-ews somehow did not process the patch overnight.

Also &lt;https://commits.webkit.org/r273971&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>422280</attachid>
            <date>2021-03-04 13:59:21 -0800</date>
            <delta_ts>2021-03-04 14:14:33 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222760-20210304135920.patch</filename>
            <type>text/plain</type>
            <size>195170</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjczOTA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
MGY4NmUyMTAwZjMxZDk3OTkxNTZhZjkxZGU2MjMzMWIyOWYwN2ViLi44NTViOGIxYjM5ODYxYjhk
NDMzZjg4ZTBmMmU3N2Y0OTcwYzdjYjdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMCBAQAorMjAyMS0wMy0wNCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIFJlZHVjZSB1c2Ugb2YgQ0ZSZXRhaW4oKSAvIENGUmVsZWFzZSgpIC8gQ0ZBdXRv
UmVsZWFzZSgpIGluIFdlYktpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjIyNzYwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgUmVkdWNlIHVzZSBvZiBDRlJldGFpbigpIC8gQ0ZSZWxlYXNlKCkgLyBDRkF1
dG9SZWxlYXNlKCkgaW4gV2ViS2l0IGJ5IHVzaW5nIFJldGFpblB0cjw+LgorCisgICAgICAgICog
QVBJL0pTQ29udGV4dC5tbToKKyAgICAgICAgKC1bSlNDb250ZXh0IG5hbWVdKToKKyAgICAgICAg
KiBBUEkvSlNWYWx1ZS5tbToKKyAgICAgICAgKHZhbHVlVG9PYmplY3RXaXRob3V0Q29weSk6Cisg
ICAgICAgICh2YWx1ZVRvU3RyaW5nKToKKyAgICAgICAgKiBpbnNwZWN0b3IvcmVtb3RlL2NvY29h
L1JlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24ubW06CisgICAgICAgIChJbnNwZWN0b3I6OlJl
bW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb246OmRlc2VyaWFsaXplTWVzc2FnZSk6CisKIDIwMjEt
MDMtMDQgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAg
ICAgICBbQ29jb2FdIFJFR1JFU1NJT04ocjI3Mjc1Mik6IGZpeCBzb21lIGludGVybmFsIGJ1aWxk
cyB0aGF0IHVzZSBXVEZTdHJpbmc6OldURlN0cmluZyhOU1N0cmluZyAqKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCBjN2M5MjQw
MGJmMTVjZTk0YjA4NzBjNzIzYWQ3Y2U3YzYyNmM4NWI4Li5mOTk0ZmVhNTg3MWU1OWI2MTg4M2Iy
Y2U2YjI0OTQ3N2ZjMWE0OWM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDIxLTAzLTA0ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgUmVkdWNlIHVzZSBvZiBDRlJl
dGFpbigpIC8gQ0ZSZWxlYXNlKCkgLyBDRkF1dG9SZWxlYXNlKCkgaW4gV2ViS2l0CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjI3NjAKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWR1Y2UgdXNlIG9mIENG
UmV0YWluKCkgLyBDRlJlbGVhc2UoKSAvIENGQXV0b1JlbGVhc2UoKSBpbiBXZWJLaXQgYnkgdXNp
bmcgUmV0YWluUHRyPD4uCisKKyAgICAgICAgKiB3dGYvY29jb2EvTlNVUkxFeHRyYXMubW06Cisg
ICAgICAgIChXVEY6OmRlY29kZVBlcmNlbnRFc2NhcGVzKToKKyAgICAgICAgKFdURjo6VVJMQnlU
cnVuY2F0aW5nT25lQ2hhcmFjdGVyQmVmb3JlQ29tcG9uZW50KToKKyAgICAgICAgKFdURjo6VVJM
V2l0aERhdGEpOgorICAgICAgICAoV1RGOjpVUkxCeVJlbW92aW5nQ29tcG9uZW50QW5kU3Vic2Vx
dWVudENoYXJhY3Rlcik6CisKIDIwMjEtMDMtMDQgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxl
LmNvbT4KIAogICAgICAgICBbbWFjT1NdW1dLMl0gQ2hhbmdpbmcgdGhlIHN5c3RlbSBsYW5ndWFn
ZSBkb2VzIG5vdCB1cGRhdGUgbmF2aWdhdG9yLmxhbmd1YWdlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDFmOTFj
ZjdlMGE2OGMwMDE1ZDE5ODlkODc5MzBiMGYyZGMyNjNiZC4uNWE0M2Q2NWNkZTkxODNiMDJjMTFl
MTQ2ZDY3YzhhNGFiMTJiYTAzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExMiBAQAorMjAyMS0w
My0wNCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFJlZHVjZSB1
c2Ugb2YgQ0ZSZXRhaW4oKSAvIENGUmVsZWFzZSgpIC8gQ0ZBdXRvUmVsZWFzZSgpIGluIFdlYktp
dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIyNzYw
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVkdWNl
IHVzZSBvZiBDRlJldGFpbigpIC8gQ0ZSZWxlYXNlKCkgLyBDRkF1dG9SZWxlYXNlKCkgaW4gV2Vi
S2l0IGJ5IHVzaW5nIFJldGFpblB0cjw+LgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9tYWMv
QVhPYmplY3RDYWNoZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkFYVGV4dE1hcmtlclJhbmdl
KToKKyAgICAgICAgKFdlYkNvcmU6OkFYVGV4dE1hcmtlclJhbmdlU3RhcnQpOgorICAgICAgICAo
V2ViQ29yZTo6QVhUZXh0TWFya2VyUmFuZ2VFbmQpOgorICAgICAgICAoV2ViQ29yZTo6dGV4dE1h
cmtlckZvclZpc2libGVQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjp0ZXh0TWFya2VyRm9y
Q2hhcmFjdGVyT2Zmc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OnN0YXJ0T3JFbmRUZXh0TWFya2Vy
Rm9yUmFuZ2UpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlP
YmplY3RXcmFwcGVyQmFzZS5tbToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdy
YXBwZXJCYXNlIHVwZGF0ZU9iamVjdEJhY2tpbmdTdG9yZV0pOgorICAgICAgICAoLVtXZWJBY2Nl
c3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UgY29udmVydFBhdGhUb1NjcmVlblNwYWNlOl0pOgor
ICAgICAgICAqIGFjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
TWFjLm1tOgorICAgICAgICAobmV4dFRleHRNYXJrZXJGb3JDaGFyYWN0ZXJPZmZzZXQpOgorICAg
ICAgICAocHJldmlvdXNUZXh0TWFya2VyRm9yQ2hhcmFjdGVyT2Zmc2V0KToKKyAgICAgICAgKC1b
V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgdGV4dE1hcmtlckZvckZpcnN0UG9zaXRpb25J
blRleHRDb250cm9sOl0pOgorICAgICAgICAoQVhBdHRyaWJ1dGVTdHJpbmdTZXRFbGVtZW50KToK
KyAgICAgICAgKiBlZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW06CisgICAgICAgIChIVE1M
Q29udmVydGVyOjpfcHJvY2Vzc1RleHQpOgorICAgICAgICAqIGxvYWRlci9jb2NvYS9EaXNrQ2Fj
aGVNb25pdG9yQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpEaXNrQ2FjaGVNb25pdG9yOjpE
aXNrQ2FjaGVNb25pdG9yKToKKyAgICAgICAgKiBwYWdlL21hYy9FdmVudEhhbmRsZXJNYWMubW06
CisgICAgICAgIChXZWJDb3JlOjpzZWxmUmV0YWluaW5nTlNTY3JvbGxWaWV3U2Nyb2xsV2hlZWwp
OgorICAgICAgICAqIHBhZ2Uvd2luL0ZyYW1lQ0dXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
aW1hZ2VGcm9tUmVjdCk6CisgICAgICAgICogcGxhdGZvcm0vY2YvTWFpblRocmVhZFNoYXJlZFRp
bWVyQ0YuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2hhcmVkVGltZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6TWFpblRocmVhZFNoYXJlZFRpbWVyOjpyZXN0YXJ0U2hhcmVkVGltZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6TWFpblRocmVhZFNoYXJlZFRpbWVyOjppbnZhbGlkYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6Ok1haW5UaHJlYWRTaGFyZWRUaW1lcjo6c2V0RmlyZUludGVydmFsKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1haW5UaHJlYWRTaGFyZWRUaW1lcjo6c3RvcCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZXJuYWxEZXZpY2VEaXNwbGF5TmFt
ZUZvclBsYXllcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL0NBQ0ZMYXll
clRyZWVIb3N0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNBQ0ZMYXllclRyZWVIb3N0Ojppbml0
aWFsaXplKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRD
Ry5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYXR0ZXJuUmVsZWFzZUNhbGxiYWNrKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZmlsbFBhdGgpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0OjpzdHJva2VQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDo6ZmlsbFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
OjpzdHJva2VSZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXR0ZXJuQ0cu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6cGF0dGVyblJlbGVhc2VDYWxsYmFjayk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6YXV0b0FjdGl2YXRlRm9udCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0ZvbnRDR1dpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZTo6Z2V0
UGxhdGZvcm1HbHlwaEFkdmFuY2VzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4v
R3JhcGhpY3NDb250ZXh0Q0dXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0OjpyZWxlYXNlV2luZG93c0NvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0OjpkcmF3Rm9jdXNSaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4v
SW1hZ2VDR1dpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Z2V0SEJJVE1B
UE9mU2l6ZSk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1VzZXJBZ2VudElPUy5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OnN0YW5kYXJkVXNlckFnZW50V2l0aEFwcGxpY2F0aW9uTmFtZSk6CisgICAg
ICAgICogcGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkLm1tOgorICAgICAgICAoU2VuZERl
bGVnYXRlTWVzc2FnZSk6CisgICAgICAgIChSdW5XZWJUaHJlYWQpOgorICAgICAgICAoV2ViVGhy
ZWFkVW5sb2NrR3VhcmRGb3JNYWlsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvUGxhdGZvcm1T
cGVlY2hTeW50aGVzaXplck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OnNwZWVjaFN5bnRoZXNp
c0dldFZvaWNlSWRlbnRpZmllcnMpOgorICAgICAgICAoV2ViQ29yZTo6c3BlZWNoU3ludGhlc2lz
R2V0RGVmYXVsdFZvaWNlSWRlbnRpZmllckZvckxvY2FsZSk6CisgICAgICAgIChXZWJDb3JlOjpQ
bGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyOjppbml0aWFsaXplVm9pY2VMaXN0KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9tYWMvUGx1Z2luQmxvY2tsaXN0Lm1tOgorICAgICAgICAoV2ViQ29yZTo6UGx1
Z2luQmxvY2tsaXN0OjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9XZWJHTEJsb2Nr
bGlzdC5tbToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMQmxvY2tsaXN0OjpjcmVhdGUpOgorICAg
ICAgICAqIHBsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvQXVkaW9TYW1wbGVCdWZmZXJDb21w
cmVzc29yLm1tOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29y
OjphdHRhY2hQcmltaW5nVHJpbXNJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nh
bXBsZUJ1ZmZlckNvbXByZXNzb3I6OnByb3ZpZGVTb3VyY2VEYXRhTnVtT3V0cHV0UGFja2V0cyk6
CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9WaWRlb1NhbXBsZUJ1ZmZl
ckNvbXByZXNzb3IubW06CisgICAgICAgIChXZWJDb3JlOjpzZXRDb21wcmVzc2lvblNlc3Npb25Q
cm9wZXJ0eSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9Gb3JtRGF0YVN0cmVhbUNG
TmV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNsb3NlQ3VycmVudFN0cmVhbSk6CisgICAgICAg
IChXZWJDb3JlOjphZHZhbmNlQ3VycmVudFN0cmVhbSk6CisgICAgICAgIChXZWJDb3JlOjpvcGVu
TmV4dFN0cmVhbSk6CisgICAgICAgIChXZWJDb3JlOjpmb3JtUmVhZCk6CisgICAgICAgIChXZWJD
b3JlOjpmb3JtQ2FuUmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpmb3JtU2NoZWR1bGUpOgorICAg
ICAgICAoV2ViQ29yZTo6Zm9ybVVuc2NoZWR1bGUpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvY2YvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ0ZOZXRXaW4uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Y3JlYXRlUHJpdmF0ZVN0b3JhZ2VTZXNzaW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2V0Q2xp
ZW50Q2VydGlmaWNhdGVJblNTTFByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3Vy
Y2VIYW5kbGU6OmNyZWF0ZUNGVVJMQ29ubmVjdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vbmV0
d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlv
blF1ZXVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0
aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6OndpbGxTZW5kUmVxdWVzdCk6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3RDRk5ldC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q6OmRvVXBkYXRlUmVzb3VyY2VSZXF1ZXN0KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS93aW4vRHJhZ0ltYWdlQ0dXaW4uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Y3JlYXRlQ2dDb250ZXh0RnJvbUJpdG1hcCk6CisgICAgICAgIChXZWJDb3JlOjpzY2FsZURy
YWdJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vd2luL1dlYkNvcmVCdW5kbGVXaW4uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlV2ViS2l0QnVuZGxlKToKKyAgICAgICAgKFdlYkNvcmU6
OndlYktpdEJ1bmRsZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tOgor
ICAgICAgICAoLVtXZWJDb3JlVGV4dEZpZWxkQ2VsbCBfYWRqdXN0ZWRDb3JlVUlEcmF3T3B0aW9u
c0ZvckRyYXdpbmdCb3JkZXJzT25seTpdKToKKyAgICAgICAgKiB0ZXN0aW5nL2NvY29hL1dlYkFy
Y2hpdmVEdW1wU3VwcG9ydC5oOgorICAgICAgICAqIHRlc3RpbmcvY29jb2EvV2ViQXJjaGl2ZUR1
bXBTdXBwb3J0Lm1tOgorICAgICAgICAoV2ViQ29yZVRlc3RTdXBwb3J0OjpjcmVhdGVYTUxTdHJp
bmdGcm9tV2ViQXJjaGl2ZURhdGEpOgorICAgICAgICAqIHRlc3RpbmcvY29jb2EvV2ViVmlld1Zp
c3VhbElkZW50aWZpY2F0aW9uT3ZlcmxheS5tbToKKyAgICAgICAgKGlkZW50aWZpY2F0aW9uRm9u
dCk6CisKIDIwMjEtMDMtMDQgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAg
ICAgICAgIEluIGNhc2Ugb2YgUE9TVCBuYXZpZ2F0aW9uIHJlZGlyZWN0ZWQgYnkgYSAzMDIsIHRo
ZSAnT3JpZ2luJyBoZWFkZXIgaXMga2VwdCBpbiB0aGUgcmVkaXJlY3RlZCByZXF1ZXN0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CmluZGV4IDA4M2M3MTI2NzEzNzhmZTI1NjEzMWI0ZmJkM2U3OGQ4MWUyYzMzMDEuLjQ4YjMxZTI4
Yzk3ZjFjNzZjNDE4ZTQ4NzQ0NGRkM2FkZGYwMzgxYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzkg
QEAKKzIwMjEtMDMtMDQgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAg
ICBSZWR1Y2UgdXNlIG9mIENGUmV0YWluKCkgLyBDRlJlbGVhc2UoKSAvIENGQXV0b1JlbGVhc2Uo
KSBpbiBXZWJLaXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIyMjc2MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFJlZHVjZSB1c2Ugb2YgQ0ZSZXRhaW4oKSAvIENGUmVsZWFzZSgpIC8gQ0ZBdXRvUmVsZWFz
ZSgpIGluIFdlYktpdCBieSB1c2luZyBSZXRhaW5QdHI8Pi4KKworICAgICAgICAqIFBsYXRmb3Jt
L21hYy9TdHJpbmdVdGlsaXRpZXMubW06CisgICAgICAgIChXZWJLaXQ6Om5zU3RyaW5nRnJvbVdl
YkNvcmVTdHJpbmcpOgorICAgICAgICAoV2ViS2l0Ojpmb3JtYXR0ZWRQaG9uZU51bWJlclN0cmlu
Zyk6CisgICAgICAgICogUGx1Z2luUHJvY2Vzcy9tYWMvUGx1Z2luUHJvY2Vzc01hYy5tbToKKyAg
ICAgICAgKFdlYktpdDo6aW5pdGlhbGl6ZUNvY29hT3ZlcnJpZGVzKToKKyAgICAgICAgKiBTaGFy
ZWQvbWFjL1Bhc3RlYm9hcmRUeXBlcy5tbToKKyAgICAgICAgKFdlYktpdDo6UGFzdGVib2FyZFR5
cGVzOjpmb3JFZGl0aW5nKToKKyAgICAgICAgKFdlYktpdDo6UGFzdGVib2FyZFR5cGVzOjpmb3JV
UkwpOgorICAgICAgICAoV2ViS2l0OjpQYXN0ZWJvYXJkVHlwZXM6OmZvckltYWdlcyk6CisgICAg
ICAgIChXZWJLaXQ6OlBhc3RlYm9hcmRUeXBlczo6Zm9ySW1hZ2VzV2l0aEFyY2hpdmUpOgorICAg
ICAgICAoV2ViS2l0OjpQYXN0ZWJvYXJkVHlwZXM6OmZvclNlbGVjdGlvbik6CisgICAgICAgICog
VUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3
SW1wbDo6YWNjZXB0c0ZpcnN0TW91c2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6
c2hvdWxkRGVsYXlXaW5kb3dPcmRlcmluZ0ZvckV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
Vmlld0ltcGw6OnZhbGlkQXR0cmlidXRlc0Zvck1hcmtlZFRleHQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJWaWV3SW1wbDo6cGVyZm9ybUtleUVxdWl2YWxlbnQpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9JbnNwZWN0b3IvaW9zL1dLSW5zcGVjdG9ySGlnaGxpZ2h0Vmlldy5tbToKKyAgICAgICAgKGxh
eWVyUGF0aFdpdGhIb2xlKToKKyAgICAgICAgKGxheWVyUGF0aCk6CisgICAgICAgICogVUlQcm9j
ZXNzL19XS1RvdWNoRXZlbnRHZW5lcmF0b3IubW06CisgICAgICAgICgtW19XS1RvdWNoRXZlbnRH
ZW5lcmF0b3IgZGVhbGxvY10pOgorICAgICAgICAoLVtfV0tUb3VjaEV2ZW50R2VuZXJhdG9yIF9z
ZW5kSElERXZlbnQ6XSk6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9mdWxsc2NyZWVuL1dLRnVs
bFNjcmVlbldpbmRvd0NvbnRyb2xsZXJJT1MubW06CisgICAgICAgICgtW1dLRnVsbFNjcmVlbldp
bmRvd0NvbnRyb2xsZXIgX0VWT3JnYW5pemF0aW9uTmFtZV0pOgorICAgICAgICAqIFdlYlByb2Nl
c3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tOgorICAgICAgICAoV2ViS2l0Ojp3ZWJQcm9jZXNz
TG9hZGVyQWNjZXNzaWJpbGl0eUJ1bmRsZVBhdGgpOgorCiAyMDIxLTAzLTA0ICBDaHJpcyBEdW1l
eiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCBidWlsZCBmaXggYWZ0
ZXIgcjI3MjYyOS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL0NoYW5nZUxvZwppbmRleCBjYWQxODlkMDFlYzI3
NDEzZjg3NTJmODA2NWM5NWEyMmQ1Y2MzNmI0Li5mN2MxNDRmMTZiMjhjZTExYWQ3YTViNmJiMzQ5
YzM2ZWJkOThiOGE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkg
QEAKKzIwMjEtMDMtMDQgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAg
ICBSZWR1Y2UgdXNlIG9mIENGUmV0YWluKCkgLyBDRlJlbGVhc2UoKSAvIENGQXV0b1JlbGVhc2Uo
KSBpbiBXZWJLaXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIyMjc2MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFJlZHVjZSB1c2Ugb2YgQ0ZSZXRhaW4oKSAvIENGUmVsZWFzZSgpIC8gQ0ZBdXRvUmVsZWFz
ZSgpIGluIFdlYktpdCBieSB1c2luZyBSZXRhaW5QdHI8Pi4KKworICAgICAgICAqIE1pc2MvV2Vi
VUlLaXRTdXBwb3J0Lm1tOgorICAgICAgICAoTG9hZFdlYkxvY2FsaXplZFN0cmluZ3MpOgorICAg
ICAgICAqIFdlYlZpZXcvV2ViUERGVmlld0lPUy5tbToKKyAgICAgICAgKC1bV2ViUERGVmlldyBm
aW5pc2hlZExvYWRpbmdXaXRoRGF0YVNvdXJjZTpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlBE
RlZpZXdQbGFjZWhvbGRlci5tbToKKyAgICAgICAgKC1bV2ViUERGVmlld1BsYWNlaG9sZGVyIGZp
bmlzaGVkTG9hZGluZ1dpdGhEYXRhU291cmNlOl0pOgorCiAyMDIxLTAyLTIyICBDaHJpcyBEdW1l
eiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgVXNlIGFkb3B0TlMoKSBhcyBzb29uIGFz
IHdlIFtbT2JqY0NsYXNzIGFsbG9jXSBpbml0XSB0byBhdm9pZCBsZWFrcwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvQ2hhbmdlTG9nCmluZGV4IDdjMTJkMTVhZmFlNThhZTA1Y2U2YjM0MDQ1OTAwYjg1OWVkMTQ2
YjMuLmFkYWE2NDM2ZjIzODNiNTQ5M2I4NGIxMTMyN2E2YTFlODljNjM1ZmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOSBAQAorMjAyMS0wMy0wNCAgQ2hyaXMgRHVt
ZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFJlZHVjZSB1c2Ugb2YgQ0ZSZXRhaW4o
KSAvIENGUmVsZWFzZSgpIC8gQ0ZBdXRvUmVsZWFzZSgpIGluIFdlYktpdAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIyNzYwCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVkdWNlIHVzZSBvZiBDRlJldGFp
bigpIC8gQ0ZSZWxlYXNlKCkgLyBDRkF1dG9SZWxlYXNlKCkgaW4gV2ViS2l0IGJ5IHVzaW5nIFJl
dGFpblB0cjw+LgorCisgICAgICAgICogTWlzYy9XZWJMb2NhbGl6YWJsZVN0cmluZ3MubW06Cisg
ICAgICAgICogTWlzYy9XZWJOU0RhdGFFeHRyYXMubW06CisgICAgICAgICgtW05TU3RyaW5nIF93
ZWJfY2FwaXRhbGl6ZVJGQzgyMkhlYWRlckZpZWxkTmFtZV0pOgorICAgICAgICAqIFBsdWdpbnMv
SG9zdGVkL05ldHNjYXBlUGx1Z2luSG9zdE1hbmFnZXIubW06CisgICAgICAgIChXZWJLaXQ6OnBy
ZWZlcnJlZEJ1bmRsZUxvY2FsaXphdGlvbk5hbWUpOgorICAgICAgICAqIFBsdWdpbnMvV2ViTmV0
c2NhcGVQbHVnaW5WaWV3Lm1tOgorICAgICAgICAoLVtXZWJOZXRzY2FwZVBsdWdpblZpZXcgc3Rh
dHVzOl0pOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlByb2dyZXNzVHJhY2tlckNsaWVu
dC5tbToKKyAgICAgICAgKFdlYlByb2dyZXNzVHJhY2tlckNsaWVudDo6cHJvZ3Jlc3NFc3RpbWF0
ZUNoYW5nZWQpOgorICAgICAgICAqIFdlYkluc3BlY3Rvci9XZWJOb2RlSGlnaGxpZ2h0Vmlldy5t
bToKKyAgICAgICAgKGxheWVyUGF0aFdpdGhIb2xlKToKKyAgICAgICAgKGxheWVyUGF0aCk6Cisg
ICAgICAgICogV2ViVmlldy9XZWJGcmFtZS5tbToKKyAgICAgICAgKGNyZWF0ZVVuaXF1ZVdlYkRh
dGFVUkwpOgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAgICAgICAgKCtbV2ViVmll
dyBfc2V0Q2FjaGVNb2RlbDpdKToKKwogMjAyMS0wMy0wNCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpA
YXBwbGUuY29tPgogCiAgICAgICAgIFttYWNPU11bV0syXSBDaGFuZ2luZyB0aGUgc3lzdGVtIGxh
bmd1YWdlIGRvZXMgbm90IHVwZGF0ZSBuYXZpZ2F0b3IubGFuZ3VhZ2UKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L0NoYW5nZUxvZwppbmRleCA1ODEzNDAyOTZkODVhZDRhODY5OTRkZDM0Y2RlNGU1NTcxY2FiYWE3
Li5jMDg4YmIyZjE1Zjk0MzE5MWYyODAxN2E5MzgxYTY0YjhjOGNjMTJmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDAgQEAKKzIwMjEtMDMtMDQgIENocmlzIER1bWV6
ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBSZWR1Y2UgdXNlIG9mIENGUmV0YWluKCkg
LyBDRlJlbGVhc2UoKSAvIENGQXV0b1JlbGVhc2UoKSBpbiBXZWJLaXQKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMjc2MAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlZHVjZSB1c2Ugb2YgQ0ZSZXRhaW4o
KSAvIENGUmVsZWFzZSgpIC8gQ0ZBdXRvUmVsZWFzZSgpIGluIFdlYktpdCBieSB1c2luZyBSZXRh
aW5QdHI8Pi4KKworICAgICAgICAqIENGRGljdGlvbmFyeVByb3BlcnR5QmFnLmNwcDoKKyAgICAg
ICAgKENvbnZlcnRWYXJpYW50VG9DRlR5cGUpOgorICAgICAgICAoQ0ZEaWN0aW9uYXJ5UHJvcGVy
dHlCYWc6OlJlYWQpOgorICAgICAgICAoQ0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWc6OldyaXRlKToK
KyAgICAgICAgKiBNYXJzaGFsbGluZ0hlbHBlcnMuY3BwOgorICAgICAgICAoTWFyc2hhbGxpbmdI
ZWxwZXJzOjpQYXRoU3RyaW5nVG9GaWxlQ0ZVUkxSZWYpOgorICAgICAgICAoTWFyc2hhbGxpbmdI
ZWxwZXJzOjpGaWxlQ0ZVUkxSZWZUb1BhdGhTdHJpbmcpOgorICAgICAgICAoTWFyc2hhbGxpbmdI
ZWxwZXJzOjpCU1RSVG9DRlVSTFJlZik6CisgICAgICAgIChNYXJzaGFsbGluZ0hlbHBlcnM6OkJT
VFJUb0NGU3RyaW5nUmVmKToKKyAgICAgICAgKE1hcnNoYWxsaW5nSGVscGVyczo6TFBDT0xFU1RS
VG9DRlN0cmluZ1JlZik6CisgICAgICAgIChNYXJzaGFsbGluZ0hlbHBlcnM6OmludFRvQ0ZOdW1i
ZXJSZWYpOgorICAgICAgICAoTWFyc2hhbGxpbmdIZWxwZXJzOjpzYWZlQXJyYXlUb1N0cmluZ0Fy
cmF5KToKKyAgICAgICAgKE1hcnNoYWxsaW5nSGVscGVyczo6c2FmZUFycmF5VG9JbnRBcnJheSk6
CisgICAgICAgIChNYXJzaGFsbGluZ0hlbHBlcnM6OnNhZmVBcnJheVRvSVVua25vd25BcnJheSk6
CisgICAgICAgICogTWFyc2hhbGxpbmdIZWxwZXJzLmg6CisgICAgICAgICogV2ViQXBwbGljYXRp
b25DYWNoZS5jcHA6CisgICAgICAgIChXZWJBcHBsaWNhdGlvbkNhY2hlOjpvcmlnaW5zV2l0aENh
Y2hlKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6
CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRGYWlsVG9TdGFydFBs
dWdpbiBjb25zdCk6CisgICAgICAgICogV2ViRG93bmxvYWRDRk5ldC5jcHA6CisgICAgICAgIChX
ZWJEb3dubG9hZDo6aW5pdFRvUmVzdW1lV2l0aEJ1bmRsZSk6CisgICAgICAgIChXZWJEb3dubG9h
ZDo6c2V0RGVzdGluYXRpb24pOgorICAgICAgICAoV2ViRG93bmxvYWQ6OndpbGxTZW5kUmVxdWVz
dCk6CisgICAgICAgICogV2ViSGlzdG9yeS5jcHA6CisgICAgICAgIChjcmVhdGVVc2VySW5mb0Zy
b21BcnJheSk6CisgICAgICAgICogV2ViTG9jYWxpemFibGVTdHJpbmdzLmNwcDoKKyAgICAgICAg
KGNyZWF0ZVdlYktpdEJ1bmRsZSk6CisKIDIwMjEtMDItMTAgIFJvYiBCdWlzICA8cmJ1aXNAaWdh
bGlhLmNvbT4KIAogICAgICAgICBVc2UgZXZlbnQgbG9vcCB0byBzZXQgdGl0bGUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0Lm1tIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU0NvbnRleHQubW0KaW5kZXggMGJhNzk5MWVmN2IyN2RhZTI1NTFkNjA0
ZWZjM2RjN2IzMzJjM2JkYS4uYmViMTQzZDBhZjU0MWI5M2U5YmQzYjU1NGY3ZDA1ZTNlNjk4YTkw
OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHQubW0KKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHQubW0KQEAgLTI2Miw3ICsyNjIs
NyBAQCAtIChOU1N0cmluZyAqKW5hbWUKICAgICBpZiAoIW5hbWUpCiAgICAgICAgIHJldHVybiBu
aWw7CiAKLSAgICByZXR1cm4gQ0ZCcmlkZ2luZ1JlbGVhc2UoSlNTdHJpbmdDb3B5Q0ZTdHJpbmco
a0NGQWxsb2NhdG9yRGVmYXVsdCwgbmFtZSkpOworICAgIHJldHVybiBhZG9wdENGKEpTU3RyaW5n
Q29weUNGU3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIG5hbWUpKS5icmlkZ2luZ0F1dG9yZWxl
YXNlKCk7CiB9CiAKIC0gKHZvaWQpc2V0TmFtZTooTlNTdHJpbmcgKiluYW1lCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmFsdWUubW0gYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL0pTVmFsdWUubW0KaW5kZXggMTg0NGIwNjEzMjU1MWNlOWJiYWNlNDI0MjQxZjE2
YjliZGRkOTRlMi4uYWMwOWY2NTQ1MDdjM2RiZDQ5NjBmZDY3MTMzMmJiM2YxMWY5MDYyNSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlLm1tCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZS5tbQpAQCAtNzczLDcgKzc3Myw3IEBAIHN0YXRp
YyBKU0NvbnRhaW5lckNvbnZlcnRvcjo6VGFzayB2YWx1ZVRvT2JqZWN0V2l0aG91dENvcHkoSlNH
bG9iYWxDb250ZXh0UmVmIGNvCiAgICAgICAgIH0gZWxzZSBpZiAoSlNWYWx1ZUlzU3RyaW5nKGNv
bnRleHQsIHZhbHVlKSkgewogICAgICAgICAgICAgLy8gV291bGQgYmUgbmljZSB0byB1bmlxdWUg
c3RyaW5ncywgdG9vLgogICAgICAgICAgICAgYXV0byBqc3N0cmluZyA9IGFkb3B0UmVmKEpTVmFs
dWVUb1N0cmluZ0NvcHkoY29udGV4dCwgdmFsdWUsIDApKTsKLSAgICAgICAgICAgIHByaW1pdGl2
ZSA9IENGQnJpZGdpbmdSZWxlYXNlKEpTU3RyaW5nQ29weUNGU3RyaW5nKGtDRkFsbG9jYXRvckRl
ZmF1bHQsIGpzc3RyaW5nLmdldCgpKSk7CisgICAgICAgICAgICBwcmltaXRpdmUgPSBhZG9wdENG
KEpTU3RyaW5nQ29weUNGU3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIGpzc3RyaW5nLmdldCgp
KSkuYnJpZGdpbmdBdXRvcmVsZWFzZSgpOwogICAgICAgICB9IGVsc2UgaWYgKEpTVmFsdWVJc051
bGwoY29udGV4dCwgdmFsdWUpKQogICAgICAgICAgICAgcHJpbWl0aXZlID0gW05TTnVsbCBudWxs
XTsKICAgICAgICAgZWxzZSB7CkBAIC04ODEsNyArODgxLDcgQEAgaWQgdmFsdWVUb1N0cmluZyhK
U0dsb2JhbENvbnRleHRSZWYgY29udGV4dCwgSlNWYWx1ZVJlZiB2YWx1ZSwgSlNWYWx1ZVJlZiog
ZXhjZXAKICAgICAgICAgcmV0dXJuIG5pbDsKICAgICB9CiAKLSAgICByZXR1cm4gQ0ZCcmlkZ2lu
Z1JlbGVhc2UoSlNTdHJpbmdDb3B5Q0ZTdHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwganNzdHJp
bmcuZ2V0KCkpKTsKKyAgICByZXR1cm4gYWRvcHRDRihKU1N0cmluZ0NvcHlDRlN0cmluZyhrQ0ZB
bGxvY2F0b3JEZWZhdWx0LCBqc3N0cmluZy5nZXQoKSkpLmJyaWRnaW5nQXV0b3JlbGVhc2UoKTsK
IH0KIAogaWQgdmFsdWVUb0RhdGUoSlNHbG9iYWxDb250ZXh0UmVmIGNvbnRleHQsIEpTVmFsdWVS
ZWYgdmFsdWUsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL2NvY29hL1JlbW90ZUluc3BlY3RvclhQQ0Nvbm5l
Y3Rpb24ubW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9jb2NvYS9S
ZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uLm1tCmluZGV4IDcyMzEwM2EwMzg3M2IzN2I5YWVi
OWM3Y2ZlNGQ0MDk2Nzg0ZjNmMzYuLjgxM2MxNjMwZTNkNmEwY2JiMTY4YjI3NmM2NTBlMDU3MTcy
M2JlNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3Rl
L2NvY29hL1JlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24ubW0KKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvY29jb2EvUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVj
dGlvbi5tbQpAQCAtMTE3LDEwICsxMTcsMTAgQEAgTlNEaWN0aW9uYXJ5ICpSZW1vdGVJbnNwZWN0
b3JYUENDb25uZWN0aW9uOjpkZXNlcmlhbGl6ZU1lc3NhZ2UoeHBjX29iamVjdF90IG9iamUKICAg
ICAgICAgcmV0dXJuIG5pbDsKICAgICB9CiAKLSAgICBhdXRvIGRpY3Rpb25hcnkgPSBfQ0ZYUEND
cmVhdGVDRk9iamVjdEZyb21YUENNZXNzYWdlKHhwY0RpY3Rpb25hcnkpOworICAgIGF1dG8gZGlj
dGlvbmFyeSA9IGFkb3B0Q0YoX0NGWFBDQ3JlYXRlQ0ZPYmplY3RGcm9tWFBDTWVzc2FnZSh4cGNE
aWN0aW9uYXJ5KSk7CiAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShkaWN0aW9uYXJ5LCAiVW5hYmxl
IHRvIGRlc2VyaWFsaXplIHhwYyBtZXNzYWdlIik7Ci0gICAgQVNTRVJUKENGR2V0VHlwZUlEKGRp
Y3Rpb25hcnkpID09IENGRGljdGlvbmFyeUdldFR5cGVJRCgpKTsKLSAgICByZXR1cm4gQ0ZCcmlk
Z2luZ1JlbGVhc2UoZGljdGlvbmFyeSk7CisgICAgQVNTRVJUKENGR2V0VHlwZUlEKGRpY3Rpb25h
cnkuZ2V0KCkpID09IENGRGljdGlvbmFyeUdldFR5cGVJRCgpKTsKKyAgICByZXR1cm4gZGljdGlv
bmFyeS5icmlkZ2luZ0F1dG9yZWxlYXNlKCk7CiB9CiAKIHZvaWQgUmVtb3RlSW5zcGVjdG9yWFBD
Q29ubmVjdGlvbjo6aGFuZGxlRXZlbnQoeHBjX29iamVjdF90IG9iamVjdCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL2NvY29hL05TVVJMRXh0cmFzLm1tIGIvU291cmNlL1dURi93dGYvY29j
b2EvTlNVUkxFeHRyYXMubW0KaW5kZXggMjA5ZWE1Yjg2NjRhMWJhMzE5MmY5ZWMyMzUzOWUzMGNl
MmM5N2E4Mi4uNzUwOGYyZjRmMmRjNDJlODJhZjgxZjYzNDgyMGM1ZGQ3NjA2NWQwZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi93dGYvY29jb2EvTlNVUkxFeHRyYXMubW0KKysrIGIvU291cmNlL1dU
Ri93dGYvY29jb2EvTlNVUkxFeHRyYXMubW0KQEAgLTkyLDEwICs5MiwxMCBAQCB2b2lkIGxvYWRJ
RE5BbGxvd2VkU2NyaXB0TGlzdCgpCiAgICAgCiBzdGF0aWMgU3RyaW5nIGRlY29kZVBlcmNlbnRF
c2NhcGVzKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogewotICAgIE5TU3RyaW5nICpzdWJzdHJpbmcg
PSBDRkJyaWRnaW5nUmVsZWFzZShDRlVSTENyZWF0ZVN0cmluZ0J5UmVwbGFjaW5nUGVyY2VudEVz
Y2FwZXMobnVsbHB0ciwgc3RyaW5nLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIENGU1RSKCIiKSkp
OworICAgIGF1dG8gc3Vic3RyaW5nID0gYWRvcHRDRihDRlVSTENyZWF0ZVN0cmluZ0J5UmVwbGFj
aW5nUGVyY2VudEVzY2FwZXMobnVsbHB0ciwgc3RyaW5nLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCks
IENGU1RSKCIiKSkpOwogICAgIGlmICghc3Vic3RyaW5nKQogICAgICAgICByZXR1cm4gc3RyaW5n
OwotICAgIHJldHVybiBzdWJzdHJpbmc7CisgICAgcmV0dXJuIHN1YnN0cmluZy5nZXQoKTsKIH0K
IAogTlNTdHJpbmcgKmRlY29kZUhvc3ROYW1lKE5TU3RyaW5nICpzdHJpbmcpCkBAIC0xMzgsMTEg
KzEzOCwxMSBAQCBOU1VSTCAqVVJMQnlUcnVuY2F0aW5nT25lQ2hhcmFjdGVyQmVmb3JlQ29tcG9u
ZW50KE5TVVJMICpVUkwsIENGVVJMQ29tcG9uZW50VHlwZQogICAgICAgICBDRlVSTEdldEJ5dGVz
KChfX2JyaWRnZSBDRlVSTFJlZilVUkwsIHVybEJ5dGVzLmRhdGEoKSwgbnVtQnl0ZXMpOwogICAg
IH0KIAotICAgIENGVVJMUmVmIHJlc3VsdCA9IENGVVJMQ3JlYXRlV2l0aEJ5dGVzKG51bGxwdHIs
IHVybEJ5dGVzLmRhdGEoKSwgZnJhZ1JnLmxvY2F0aW9uIC0gMSwga0NGU3RyaW5nRW5jb2RpbmdV
VEY4LCBudWxscHRyKTsKKyAgICBhdXRvIHJlc3VsdCA9IGFkb3B0Q0YoQ0ZVUkxDcmVhdGVXaXRo
Qnl0ZXMobnVsbHB0ciwgdXJsQnl0ZXMuZGF0YSgpLCBmcmFnUmcubG9jYXRpb24gLSAxLCBrQ0ZT
dHJpbmdFbmNvZGluZ1VURjgsIG51bGxwdHIpKTsKICAgICBpZiAoIXJlc3VsdCkKLSAgICAgICAg
cmVzdWx0ID0gQ0ZVUkxDcmVhdGVXaXRoQnl0ZXMobnVsbHB0ciwgdXJsQnl0ZXMuZGF0YSgpLCBm
cmFnUmcubG9jYXRpb24gLSAxLCBrQ0ZTdHJpbmdFbmNvZGluZ0lTT0xhdGluMSwgbnVsbHB0cik7
CisgICAgICAgIHJlc3VsdCA9IGFkb3B0Q0YoQ0ZVUkxDcmVhdGVXaXRoQnl0ZXMobnVsbHB0ciwg
dXJsQnl0ZXMuZGF0YSgpLCBmcmFnUmcubG9jYXRpb24gLSAxLCBrQ0ZTdHJpbmdFbmNvZGluZ0lT
T0xhdGluMSwgbnVsbHB0cikpOwogICAgICAgICAKLSAgICByZXR1cm4gcmVzdWx0ID8gQ0ZCcmlk
Z2luZ1JlbGVhc2UocmVzdWx0KSA6IFVSTDsKKyAgICByZXR1cm4gcmVzdWx0ID8gcmVzdWx0LmJy
aWRnaW5nQXV0b3JlbGVhc2UoKSA6IFVSTDsKIH0KIAogc3RhdGljIE5TVVJMICpVUkxCeVJlbW92
aW5nUmVzb3VyY2VTcGVjaWZpZXIoTlNVUkwgKlVSTCkKQEAgLTE1NSw3ICsxNTUsNiBAQCBOU1VS
TCAqVVJMV2l0aERhdGEoTlNEYXRhICpkYXRhLCBOU1VSTCAqYmFzZVVSTCkKICAgICBpZiAoIWRh
dGEpCiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgCi0gICAgTlNVUkwgKnJlc3VsdCA9IG5pbDsK
ICAgICBzaXplX3QgbGVuZ3RoID0gW2RhdGEgbGVuZ3RoXTsKICAgICBpZiAobGVuZ3RoID4gMCkg
ewogICAgICAgICAvLyB3b3JrIGFyb3VuZCA8cmRhcjovLzQ0NzA3NzE+OiBDRlVSTENyZWF0ZUFi
c29sdXRlVVJMV2l0aEJ5dGVzKC4uLCBUUlVFKSBkb2Vzbid0IHJlbW92ZSBub24tcGF0aCBjb21w
b25lbnRzLgpAQCAtMTcxLDEzICsxNzAsMTIgQEAgTlNVUkwgKlVSTFdpdGhEYXRhKE5TRGF0YSAq
ZGF0YSwgTlNVUkwgKmJhc2VVUkwpCiAgICAgICAgIC8vIChlLmcgY2FsbHMgdG8gTlNVUkwgLXBh
dGgpLiBIb3dldmVyLCB0aGlzIGZ1bmN0aW9uIGlzIG5vdCB0b2xlcmFudCBvZiBpbGxlZ2FsIFVU
Ri04IHNlcXVlbmNlcywgd2hpY2gKICAgICAgICAgLy8gY291bGQgZWl0aGVyIGJlIGEgbWFsZm9y
bWVkIHN0cmluZyBvciBieXRlcyBpbiBhIGRpZmZlcmVudCBlbmNvZGluZywgbGlrZSBzaGlmdC1q
aXMsIHNvIHdlIGZhbGwgYmFjawogICAgICAgICAvLyBvbnRvIHVzaW5nIElTTyBMYXRpbiAxIGlu
IHRob3NlIGNhc2VzLgotICAgICAgICByZXN1bHQgPSBDRkJyaWRnaW5nUmVsZWFzZShDRlVSTENy
ZWF0ZUFic29sdXRlVVJMV2l0aEJ5dGVzKG51bGxwdHIsIGJ5dGVzLCBsZW5ndGgsIGtDRlN0cmlu
Z0VuY29kaW5nVVRGOCwgKF9fYnJpZGdlIENGVVJMUmVmKWJhc2VVUkwsIFlFUykpOworICAgICAg
ICBhdXRvIHJlc3VsdCA9IGFkb3B0Q0YoQ0ZVUkxDcmVhdGVBYnNvbHV0ZVVSTFdpdGhCeXRlcyhu
dWxscHRyLCBieXRlcywgbGVuZ3RoLCBrQ0ZTdHJpbmdFbmNvZGluZ1VURjgsIChfX2JyaWRnZSBD
RlVSTFJlZiliYXNlVVJMLCBZRVMpKTsKICAgICAgICAgaWYgKCFyZXN1bHQpCi0gICAgICAgICAg
ICByZXN1bHQgPSBDRkJyaWRnaW5nUmVsZWFzZShDRlVSTENyZWF0ZUFic29sdXRlVVJMV2l0aEJ5
dGVzKG51bGxwdHIsIGJ5dGVzLCBsZW5ndGgsIGtDRlN0cmluZ0VuY29kaW5nSVNPTGF0aW4xLCAo
X19icmlkZ2UgQ0ZVUkxSZWYpYmFzZVVSTCwgWUVTKSk7Ci0gICAgfSBlbHNlCi0gICAgICAgIHJl
c3VsdCA9IFtOU1VSTCBVUkxXaXRoU3RyaW5nOkAiIl07Ci0KLSAgICByZXR1cm4gcmVzdWx0Owor
ICAgICAgICAgICAgcmVzdWx0ID0gYWRvcHRDRihDRlVSTENyZWF0ZUFic29sdXRlVVJMV2l0aEJ5
dGVzKG51bGxwdHIsIGJ5dGVzLCBsZW5ndGgsIGtDRlN0cmluZ0VuY29kaW5nSVNPTGF0aW4xLCAo
X19icmlkZ2UgQ0ZVUkxSZWYpYmFzZVVSTCwgWUVTKSk7CisgICAgICAgIHJldHVybiByZXN1bHQu
YnJpZGdpbmdBdXRvcmVsZWFzZSgpOworICAgIH0KKyAgICByZXR1cm4gW05TVVJMIFVSTFdpdGhT
dHJpbmc6QCIiXTsKIH0KIHN0YXRpYyBOU0RhdGEgKmRhdGFXaXRoVXNlclR5cGVkU3RyaW5nKE5T
U3RyaW5nICpzdHJpbmcpCiB7CkBAIC0zMzYsMTEgKzMzNCwxMSBAQCBzdGF0aWMgTlNVUkwgKlVS
TEJ5UmVtb3ZpbmdDb21wb25lbnRBbmRTdWJzZXF1ZW50Q2hhcmFjdGVyKE5TVVJMICpVUkwsIENG
VVJMQ29tcAogICAgICAgICAKICAgICBtZW1tb3ZlKHVybEJ5dGVzICsgcmFuZ2UubG9jYXRpb24s
IHVybEJ5dGVzICsgcmFuZ2UubG9jYXRpb24gKyByYW5nZS5sZW5ndGgsIG51bUJ5dGVzIC0gcmFu
Z2UubG9jYXRpb24gKyByYW5nZS5sZW5ndGgpOwogICAgIAotICAgIENGVVJMUmVmIHJlc3VsdCA9
IENGVVJMQ3JlYXRlV2l0aEJ5dGVzKG51bGxwdHIsIHVybEJ5dGVzLCBudW1CeXRlcyAtIHJhbmdl
Lmxlbmd0aCwga0NGU3RyaW5nRW5jb2RpbmdVVEY4LCBudWxscHRyKTsKKyAgICBhdXRvIHJlc3Vs
dCA9IGFkb3B0Q0YoQ0ZVUkxDcmVhdGVXaXRoQnl0ZXMobnVsbHB0ciwgdXJsQnl0ZXMsIG51bUJ5
dGVzIC0gcmFuZ2UubGVuZ3RoLCBrQ0ZTdHJpbmdFbmNvZGluZ1VURjgsIG51bGxwdHIpKTsKICAg
ICBpZiAoIXJlc3VsdCkKLSAgICAgICAgcmVzdWx0ID0gQ0ZVUkxDcmVhdGVXaXRoQnl0ZXMobnVs
bHB0ciwgdXJsQnl0ZXMsIG51bUJ5dGVzIC0gcmFuZ2UubGVuZ3RoLCBrQ0ZTdHJpbmdFbmNvZGlu
Z0lTT0xhdGluMSwgbnVsbHB0cik7CisgICAgICAgIHJlc3VsdCA9IGFkb3B0Q0YoQ0ZVUkxDcmVh
dGVXaXRoQnl0ZXMobnVsbHB0ciwgdXJsQnl0ZXMsIG51bUJ5dGVzIC0gcmFuZ2UubGVuZ3RoLCBr
Q0ZTdHJpbmdFbmNvZGluZ0lTT0xhdGluMSwgbnVsbHB0cikpOwogICAgICAgICAgICAgICAgIAot
ICAgIHJldHVybiByZXN1bHQgPyBDRkJyaWRnaW5nUmVsZWFzZShyZXN1bHQpIDogVVJMOworICAg
IHJldHVybiByZXN1bHQgPyByZXN1bHQuYnJpZGdpbmdBdXRvcmVsZWFzZSgpIDogVVJMOwogfQog
CiBOU1VSTCAqVVJMQnlSZW1vdmluZ1VzZXJJbmZvKE5TVVJMICpVUkwpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9BWE9iamVjdENhY2hlTWFjLm1tIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvQVhPYmplY3RDYWNoZU1hYy5tbQppbmRleCBi
N2NmZjc0ZTc2MmEyOGUwNDU1NzQ2NDE2MTJkZTg0YjU2OTQxZjI1Li42OWNlZTI4NWU2NjNmYTU2
OGViZmM3Y2E3ZjVmOWVjZDNmNTJmY2VkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L21hYy9BWE9iamVjdENhY2hlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvbWFjL0FYT2JqZWN0Q2FjaGVNYWMubW0KQEAgLTYwMyw3ICs2MDMsNyBAQCBz
dGF0aWMgQVhUZXh0TWFya2VyUmFuZ2VSZWYgQVhUZXh0TWFya2VyUmFuZ2UoQVhUZXh0TWFya2Vy
UmVmIHN0YXJ0TWFya2VyLCBBWFRleAogICAgIEFTU0VSVChlbmRNYXJrZXIpOwogICAgIEFTU0VS
VChDRkdldFR5cGVJRCgoX19icmlkZ2UgQ0ZUeXBlUmVmKXN0YXJ0TWFya2VyKSA9PSBBWFRleHRN
YXJrZXJHZXRUeXBlSUQoKSk7CiAgICAgQVNTRVJUKENGR2V0VHlwZUlEKChfX2JyaWRnZSBDRlR5
cGVSZWYpZW5kTWFya2VyKSA9PSBBWFRleHRNYXJrZXJHZXRUeXBlSUQoKSk7Ci0gICAgcmV0dXJu
IChBWFRleHRNYXJrZXJSYW5nZVJlZilDRkJyaWRnaW5nUmVsZWFzZShBWFRleHRNYXJrZXJSYW5n
ZUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBzdGFydE1hcmtlciwgZW5kTWFya2VyKSk7Cisg
ICAgcmV0dXJuIChBWFRleHRNYXJrZXJSYW5nZVJlZilhZG9wdENGKEFYVGV4dE1hcmtlclJhbmdl
Q3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIHN0YXJ0TWFya2VyLCBlbmRNYXJrZXIpKS5icmlk
Z2luZ0F1dG9yZWxlYXNlKCk7CiB9CiAKIHN0YXRpYyBBWFRleHRNYXJrZXJSYW5nZVJlZiB0ZXh0
TWFya2VyUmFuZ2VGcm9tTWFya2VycyhBWFRleHRNYXJrZXJSZWYgdGV4dE1hcmtlcjEsIEFYVGV4
dE1hcmtlclJlZiB0ZXh0TWFya2VyMikKQEAgLTYxOCwxNCArNjE4LDE0IEBAIHN0YXRpYyBBWFRl
eHRNYXJrZXJSZWYgQVhUZXh0TWFya2VyUmFuZ2VTdGFydChBWFRleHRNYXJrZXJSYW5nZVJlZiB0
ZXh0TWFya2VyUmFuCiB7CiAgICAgQVNTRVJUKHRleHRNYXJrZXJSYW5nZSk7CiAgICAgQVNTRVJU
KENGR2V0VHlwZUlEKChfX2JyaWRnZSBDRlR5cGVSZWYpdGV4dE1hcmtlclJhbmdlKSA9PSBBWFRl
eHRNYXJrZXJSYW5nZUdldFR5cGVJRCgpKTsKLSAgICByZXR1cm4gKEFYVGV4dE1hcmtlclJlZilD
RkJyaWRnaW5nUmVsZWFzZShBWFRleHRNYXJrZXJSYW5nZUNvcHlTdGFydE1hcmtlcih0ZXh0TWFy
a2VyUmFuZ2UpKTsKKyAgICByZXR1cm4gKEFYVGV4dE1hcmtlclJlZilhZG9wdENGKEFYVGV4dE1h
cmtlclJhbmdlQ29weVN0YXJ0TWFya2VyKHRleHRNYXJrZXJSYW5nZSkpLmJyaWRnaW5nQXV0b3Jl
bGVhc2UoKTsKIH0KIAogc3RhdGljIEFYVGV4dE1hcmtlclJlZiBBWFRleHRNYXJrZXJSYW5nZUVu
ZChBWFRleHRNYXJrZXJSYW5nZVJlZiB0ZXh0TWFya2VyUmFuZ2UpCiB7CiAgICAgQVNTRVJUKHRl
eHRNYXJrZXJSYW5nZSk7CiAgICAgQVNTRVJUKENGR2V0VHlwZUlEKChfX2JyaWRnZSBDRlR5cGVS
ZWYpdGV4dE1hcmtlclJhbmdlKSA9PSBBWFRleHRNYXJrZXJSYW5nZUdldFR5cGVJRCgpKTsKLSAg
ICByZXR1cm4gKEFYVGV4dE1hcmtlclJlZilDRkJyaWRnaW5nUmVsZWFzZShBWFRleHRNYXJrZXJS
YW5nZUNvcHlFbmRNYXJrZXIodGV4dE1hcmtlclJhbmdlKSk7CisgICAgcmV0dXJuIChBWFRleHRN
YXJrZXJSZWYpYWRvcHRDRihBWFRleHRNYXJrZXJSYW5nZUNvcHlFbmRNYXJrZXIodGV4dE1hcmtl
clJhbmdlKSkuYnJpZGdpbmdBdXRvcmVsZWFzZSgpOwogfQogCiBzdGF0aWMgVGV4dE1hcmtlckRh
dGEgZ2V0Qnl0ZXNGcm9tQVhUZXh0TWFya2VyKEFYVGV4dE1hcmtlclJlZiB0ZXh0TWFya2VyKQpA
QCAtNjcxLDcgKzY3MSw3IEBAIEFYVGV4dE1hcmtlclJlZiB0ZXh0TWFya2VyRm9yVmlzaWJsZVBv
c2l0aW9uKEFYT2JqZWN0Q2FjaGUqIGNhY2hlLCBjb25zdCBWaXNpYmxlCiAgICAgaWYgKCF0ZXh0
TWFya2VyRGF0YSkKICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAgIHJldHVybiAoQVhUZXh0TWFy
a2VyUmVmKUNGQnJpZGdpbmdSZWxlYXNlKEFYVGV4dE1hcmtlckNyZWF0ZShrQ0ZBbGxvY2F0b3JE
ZWZhdWx0LCAoY29uc3QgVUludDgqKSZ0ZXh0TWFya2VyRGF0YS52YWx1ZSgpLCBzaXplb2YodGV4
dE1hcmtlckRhdGEudmFsdWUoKSkpKTsKKyAgICByZXR1cm4gKEFYVGV4dE1hcmtlclJlZilhZG9w
dENGKEFYVGV4dE1hcmtlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAoY29uc3QgVUludDgq
KSZ0ZXh0TWFya2VyRGF0YS52YWx1ZSgpLCBzaXplb2YodGV4dE1hcmtlckRhdGEudmFsdWUoKSkp
KS5icmlkZ2luZ0F1dG9yZWxlYXNlKCk7CiB9CiAKIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9z
aXRpb25Gb3JUZXh0TWFya2VyKEFYT2JqZWN0Q2FjaGUqIGNhY2hlLCBBWFRleHRNYXJrZXJSZWYg
dGV4dE1hcmtlcikKQEAgLTcyMSw3ICs3MjEsNyBAQCBBWFRleHRNYXJrZXJSZWYgdGV4dE1hcmtl
ckZvckNoYXJhY3Rlck9mZnNldChBWE9iamVjdENhY2hlKiBjYWNoZSwgY29uc3QgQ2hhcmFjdAog
ICAgIGlmICghdGV4dE1hcmtlckRhdGEuYXhJRCB8fCB0ZXh0TWFya2VyRGF0YS5pZ25vcmVkKQog
ICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgcmV0dXJuIChBWFRleHRNYXJrZXJSZWYpQ0ZCcmlk
Z2luZ1JlbGVhc2UoQVhUZXh0TWFya2VyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIChjb25z
dCBVSW50OCopJnRleHRNYXJrZXJEYXRhLCBzaXplb2YodGV4dE1hcmtlckRhdGEpKSk7CisgICAg
cmV0dXJuIChBWFRleHRNYXJrZXJSZWYpYWRvcHRDRihBWFRleHRNYXJrZXJDcmVhdGUoa0NGQWxs
b2NhdG9yRGVmYXVsdCwgKGNvbnN0IFVJbnQ4KikmdGV4dE1hcmtlckRhdGEsIHNpemVvZih0ZXh0
TWFya2VyRGF0YSkpKS5icmlkZ2luZ0F1dG9yZWxlYXNlKCk7CiB9CiAKIENoYXJhY3Rlck9mZnNl
dCBjaGFyYWN0ZXJPZmZzZXRGb3JUZXh0TWFya2VyKEFYT2JqZWN0Q2FjaGUqIGNhY2hlLCBBWFRl
eHRNYXJrZXJSZWYgdGV4dE1hcmtlcikKQEAgLTc0Nyw3ICs3NDcsNyBAQCBBWFRleHRNYXJrZXJS
ZWYgc3RhcnRPckVuZFRleHRNYXJrZXJGb3JSYW5nZShBWE9iamVjdENhY2hlKiBjYWNoZSwgY29u
c3QgT3B0aW9uYQogICAgIGlmICghdGV4dE1hcmtlckRhdGEuYXhJRCkKICAgICAgICAgcmV0dXJu
IG5pbDsKIAotICAgIHJldHVybiAoQVhUZXh0TWFya2VyUmVmKUNGQnJpZGdpbmdSZWxlYXNlKEFY
VGV4dE1hcmtlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAoY29uc3QgVUludDgqKSZ0ZXh0
TWFya2VyRGF0YSwgc2l6ZW9mKHRleHRNYXJrZXJEYXRhKSkpOworICAgIHJldHVybiAoQVhUZXh0
TWFya2VyUmVmKWFkb3B0Q0YoQVhUZXh0TWFya2VyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQs
IChjb25zdCBVSW50OCopJnRleHRNYXJrZXJEYXRhLCBzaXplb2YodGV4dE1hcmtlckRhdGEpKSku
YnJpZGdpbmdBdXRvcmVsZWFzZSgpOwogfQogCiBBWFRleHRNYXJrZXJSYW5nZVJlZiB0ZXh0TWFy
a2VyUmFuZ2VGcm9tUmFuZ2UoQVhPYmplY3RDYWNoZSogY2FjaGUsIGNvbnN0IE9wdGlvbmFsPFNp
bXBsZVJhbmdlPiYgcmFuZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2Uu
bW0KaW5kZXggOTMwNzY4N2I3ZjgwN2RiNWFiYTQ2Nzc1MDg2YzRhNWNjOGRlNzBjMS4uMGZjODI4
ODQ2ZGIzMWZhOGIwNTY1YjFjYjdmZmMwOTgwNmY0MDg0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNl
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxp
dHlPYmplY3RXcmFwcGVyQmFzZS5tbQpAQCAtMzI0LDggKzMyNCw3IEBAIC0gKFdlYkNvcmU6OkFY
Q29yZU9iamVjdCopdXBkYXRlT2JqZWN0QmFja2luZ1N0b3JlCiB7CiAgICAgLy8gQ2FsbGluZyB1
cGRhdGVCYWNraW5nU3RvcmUoKSBjYW4gaW52YWxpZGF0ZSB0aGlzIGVsZW1lbnQgc28gc2VsZiBt
dXN0IGJlIHJldGFpbmVkLgogICAgIC8vIElmIGl0IGRvZXMgYmVjb21lIGludmFsaWRhdGVkLCBz
ZWxmLmF4QmFja2luZ09iamVjdCB3aWxsIGJlIG5pbC4KLSAgICBDRlJldGFpbigoX19icmlkZ2Ug
Q0ZUeXBlUmVmKXNlbGYpOwotICAgIENGQXV0b3JlbGVhc2UoKF9fYnJpZGdlIENGVHlwZVJlZilz
ZWxmKTsKKyAgICByZXRhaW5QdHIoc2VsZikuYXV0b3JlbGVhc2UoKTsKIAogICAgIGF1dG8qIGJh
Y2tpbmdPYmplY3QgPSBzZWxmLmF4QmFja2luZ09iamVjdDsKICAgICBpZiAoIWJhY2tpbmdPYmpl
Y3QpCkBAIC00MzMsMTEgKzQzMiwxMCBAQCBzdGF0aWMgdm9pZCBjb252ZXJ0UGF0aFRvU2NyZWVu
U3BhY2VGdW5jdGlvbihQYXRoQ29udmVyc2lvbkluZm8mIGNvbnZlcnNpb24sIGNvbgogCiAtIChD
R1BhdGhSZWYpY29udmVydFBhdGhUb1NjcmVlblNwYWNlOihjb25zdCBQYXRoJilwYXRoCiB7Ci0g
ICAgUGF0aENvbnZlcnNpb25JbmZvIGNvbnZlcnNpb24gPSB7IHNlbGYsIENHUGF0aENyZWF0ZU11
dGFibGUoKSB9OworICAgIFBhdGhDb252ZXJzaW9uSW5mbyBjb252ZXJzaW9uID0geyBzZWxmLCBh
ZG9wdENGKENHUGF0aENyZWF0ZU11dGFibGUoKSkuYXV0b3JlbGVhc2UoKSB9OwogICAgIHBhdGgu
YXBwbHkoWyZjb252ZXJzaW9uXShjb25zdCBQYXRoRWxlbWVudCYgcGF0aEVsZW1lbnQpIHsKICAg
ICAgICAgY29udmVydFBhdGhUb1NjcmVlblNwYWNlRnVuY3Rpb24oY29udmVyc2lvbiwgcGF0aEVs
ZW1lbnQpOwogICAgIH0pOwotICAgIENGQXV0b3JlbGVhc2UoY29udmVyc2lvbi5wYXRoKTsKICAg
ICByZXR1cm4gY29udmVyc2lvbi5wYXRoOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbSBi
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RX
cmFwcGVyTWFjLm1tCmluZGV4IDgzZWYyNGMxNThhZTcwYzM2MjRmOTM1M2M3NjlmZGUwY2MyNzU2
NmUuLjJiMDA1Y2U2NzU5MDk0Njc0MGNjYmVjMzYwOTMwMmVkZDhjZjlmOGYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RX
cmFwcGVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCkBAIC03NDIsNyArNzQyLDcgQEAgc3RhdGlj
IGlkIG5leHRUZXh0TWFya2VyRm9yQ2hhcmFjdGVyT2Zmc2V0KEFYT2JqZWN0Q2FjaGUqIGNhY2hl
LCBDaGFyYWN0ZXJPZmZzZXQKICAgICBjYWNoZS0+dGV4dE1hcmtlckRhdGFGb3JOZXh0Q2hhcmFj
dGVyT2Zmc2V0KHRleHRNYXJrZXJEYXRhLCBjaGFyYWN0ZXJPZmZzZXQpOwogICAgIGlmICghdGV4
dE1hcmtlckRhdGEuYXhJRCkKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICByZXR1cm4gQ0ZCcmlk
Z2luZ1JlbGVhc2UoQVhUZXh0TWFya2VyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIChjb25z
dCBVSW50OCopJnRleHRNYXJrZXJEYXRhLCBzaXplb2YodGV4dE1hcmtlckRhdGEpKSk7CisgICAg
cmV0dXJuIGFkb3B0Q0YoQVhUZXh0TWFya2VyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIChj
b25zdCBVSW50OCopJnRleHRNYXJrZXJEYXRhLCBzaXplb2YodGV4dE1hcmtlckRhdGEpKSkuYnJp
ZGdpbmdBdXRvcmVsZWFzZSgpOwogfQogCiBzdGF0aWMgaWQgcHJldmlvdXNUZXh0TWFya2VyRm9y
Q2hhcmFjdGVyT2Zmc2V0KEFYT2JqZWN0Q2FjaGUqIGNhY2hlLCBDaGFyYWN0ZXJPZmZzZXQmIGNo
YXJhY3Rlck9mZnNldCkKQEAgLTc1NCw3ICs3NTQsNyBAQCBzdGF0aWMgaWQgcHJldmlvdXNUZXh0
TWFya2VyRm9yQ2hhcmFjdGVyT2Zmc2V0KEFYT2JqZWN0Q2FjaGUqIGNhY2hlLCBDaGFyYWN0ZXJP
ZgogICAgIGNhY2hlLT50ZXh0TWFya2VyRGF0YUZvclByZXZpb3VzQ2hhcmFjdGVyT2Zmc2V0KHRl
eHRNYXJrZXJEYXRhLCBjaGFyYWN0ZXJPZmZzZXQpOwogICAgIGlmICghdGV4dE1hcmtlckRhdGEu
YXhJRCkKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICByZXR1cm4gQ0ZCcmlkZ2luZ1JlbGVhc2Uo
QVhUZXh0TWFya2VyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIChjb25zdCBVSW50OCopJnRl
eHRNYXJrZXJEYXRhLCBzaXplb2YodGV4dE1hcmtlckRhdGEpKSk7CisgICAgcmV0dXJuIGFkb3B0
Q0YoQVhUZXh0TWFya2VyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIChjb25zdCBVSW50OCop
JnRleHRNYXJrZXJEYXRhLCBzaXplb2YodGV4dE1hcmtlckRhdGEpKSkuYnJpZGdpbmdBdXRvcmVs
ZWFzZSgpOwogfQogCiAtIChpZCluZXh0VGV4dE1hcmtlckZvckNoYXJhY3Rlck9mZnNldDooQ2hh
cmFjdGVyT2Zmc2V0JiljaGFyYWN0ZXJPZmZzZXQKQEAgLTc5Miw3ICs3OTIsNyBAQCAtIChpZCl0
ZXh0TWFya2VyRm9yRmlyc3RQb3NpdGlvbkluVGV4dENvbnRyb2w6KEhUTUxUZXh0Rm9ybUNvbnRy
b2xFbGVtZW50ICYpdGV4dAogICAgIGlmICghdGV4dE1hcmtlckRhdGEpCiAgICAgICAgIHJldHVy
biBuaWw7CiAKLSAgICByZXR1cm4gQ0ZCcmlkZ2luZ1JlbGVhc2UoQVhUZXh0TWFya2VyQ3JlYXRl
KGtDRkFsbG9jYXRvckRlZmF1bHQsIChjb25zdCBVSW50OCopJnRleHRNYXJrZXJEYXRhLnZhbHVl
KCksIHNpemVvZih0ZXh0TWFya2VyRGF0YS52YWx1ZSgpKSkpOworICAgIHJldHVybiBhZG9wdENG
KEFYVGV4dE1hcmtlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAoY29uc3QgVUludDgqKSZ0
ZXh0TWFya2VyRGF0YS52YWx1ZSgpLCBzaXplb2YodGV4dE1hcmtlckRhdGEudmFsdWUoKSkpKS5i
cmlkZ2luZ0F1dG9yZWxlYXNlKCk7CiB9CiAKIC8vIFdoZW4gbW9kaWZ5aW5nIGF0dHJpYnV0ZWQg
c3RyaW5ncywgdGhlIHJhbmdlIGNhbiBjb21lIGZyb20gYSBzb3VyY2Ugd2hpY2ggbWF5IHByb3Zp
ZGUgZmF1bHR5IGluZm9ybWF0aW9uIChlLmcuIHRoZSBzcGVsbCBjaGVja2VyKS4KQEAgLTEwMTgs
MTEgKzEwMTgsOCBAQCBzdGF0aWMgdm9pZCBBWEF0dHJpYnV0ZVN0cmluZ1NldEVsZW1lbnQoTlNN
dXRhYmxlQXR0cmlidXRlZFN0cmluZyogYXR0clN0cmluZywgTgogICAgICAgICBpZiAoW2F0dHJp
YnV0ZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5QXR0YWNobWVudFRleHRBdHRyaWJ1
dGVdICYmIG9iamVjdC0+aXNBdHRhY2htZW50KCkgJiYgW29iamVjdFdyYXBwZXIgYXR0YWNobWVu
dFZpZXddKQogICAgICAgICAgICAgb2JqZWN0V3JhcHBlciA9IFtvYmplY3RXcmFwcGVyIGF0dGFj
aG1lbnRWaWV3XTsKICAgICAgICAgCi0gICAgICAgIEFYVUlFbGVtZW50UmVmIGF4RWxlbWVudCA9
IE5TQWNjZXNzaWJpbGl0eUNyZWF0ZUFYVUlFbGVtZW50UmVmKG9iamVjdFdyYXBwZXIpOwotICAg
ICAgICBpZiAoYXhFbGVtZW50KSB7Ci0gICAgICAgICAgICBbYXR0clN0cmluZyBhZGRBdHRyaWJ1
dGU6YXR0cmlidXRlIHZhbHVlOihfX2JyaWRnZSBpZClheEVsZW1lbnQgcmFuZ2U6cmFuZ2VdOwot
ICAgICAgICAgICAgQ0ZSZWxlYXNlKGF4RWxlbWVudCk7Ci0gICAgICAgIH0KKyAgICAgICAgaWYg
KGF1dG8gYXhFbGVtZW50ID0gYWRvcHRDRihOU0FjY2Vzc2liaWxpdHlDcmVhdGVBWFVJRWxlbWVu
dFJlZihvYmplY3RXcmFwcGVyKSkpCisgICAgICAgICAgICBbYXR0clN0cmluZyBhZGRBdHRyaWJ1
dGU6YXR0cmlidXRlIHZhbHVlOihfX2JyaWRnZSBpZClheEVsZW1lbnQuZ2V0KCkgcmFuZ2U6cmFu
Z2VdOwogICAgIH0gZWxzZQogICAgICAgICBbYXR0clN0cmluZyByZW1vdmVBdHRyaWJ1dGU6YXR0
cmlidXRlIHJhbmdlOnJhbmdlXTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvY29jb2EvSFRNTENvbnZlcnRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2Ev
SFRNTENvbnZlcnRlci5tbQppbmRleCA2NWU4NTUyNTI1MGQ0MGJhYzBjM2YzODU2Yjc4Mzk4MzYw
YzBiOTI0Li44Y2FmYTdjMzZlNmRkNjA1MDkyNzdkZTBhY2ZkMmMwMzE1NjhkMGMyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCkBAIC0yMDkwLDcg
KzIwOTAsNiBAQCB2b2lkIEhUTUxDb252ZXJ0ZXI6Ol9wcm9jZXNzVGV4dChDaGFyYWN0ZXJEYXRh
JiBjaGFyYWN0ZXJEYXRhKQogICAgIHVuaWNoYXIgbGFzdENoYXIgPSAodGV4dExlbmd0aCA+IDAp
ID8gW1tfYXR0clN0ciBzdHJpbmddIGNoYXJhY3RlckF0SW5kZXg6dGV4dExlbmd0aCAtIDFdIDog
J1xuJzsKICAgICBCT09MIHN1cHByZXNzTGVhZGluZ1NwYWNlID0gKChfZmxhZ3MuaXNTb2Z0ICYm
IGxhc3RDaGFyID09ICcgJykgfHwgbGFzdENoYXIgPT0gJ1xuJyB8fCBsYXN0Q2hhciA9PSAnXHIn
IHx8IGxhc3RDaGFyID09ICdcdCcgfHwgbGFzdENoYXIgPT0gTlNQYXJhZ3JhcGhTZXBhcmF0b3JD
aGFyYWN0ZXIgfHwgbGFzdENoYXIgPT0gTlNMaW5lU2VwYXJhdG9yQ2hhcmFjdGVyIHx8IGxhc3RD
aGFyID09IE5TRm9ybUZlZWRDaGFyYWN0ZXIgfHwgbGFzdENoYXIgPT0gV2ViTmV4dExpbmVDaGFy
YWN0ZXIpOwogICAgIE5TUmFuZ2UgcmFuZ2VUb1JlcGxhY2UgPSBOU01ha2VSYW5nZSh0ZXh0TGVu
Z3RoLCAwKTsKLSAgICBDRk11dGFibGVTdHJpbmdSZWYgbXV0c3RyID0gTlVMTDsKIAogICAgIFN0
cmluZyBvcmlnaW5hbFN0cmluZyA9IGNoYXJhY3RlckRhdGEuZGF0YSgpOwogICAgIHVuc2lnbmVk
IHN0YXJ0T2Zmc2V0ID0gMDsKQEAgLTIxNjAsOCArMjE1OSw2IEBAIHZvaWQgSFRNTENvbnZlcnRl
cjo6X3Byb2Nlc3NUZXh0KENoYXJhY3RlckRhdGEmIGNoYXJhY3RlckRhdGEpCiAgICAgICAgICAg
ICBbX2F0dHJTdHIgc2V0QXR0cmlidXRlczphZ2dyZWdhdGVkQXR0cmlidXRlc0ZvckFuY2VzdG9y
cyhjaGFyYWN0ZXJEYXRhKSByYW5nZTpyYW5nZVRvUmVwbGFjZV07CiAgICAgICAgIF9mbGFncy5p
c1NvZnQgPSB3YXNTcGFjZTsKICAgICB9Ci0gICAgaWYgKG11dHN0cikKLSAgICAgICAgQ0ZSZWxl
YXNlKG11dHN0cik7CiB9CiAKIHZvaWQgSFRNTENvbnZlcnRlcjo6X3RyYXZlcnNlTm9kZShOb2Rl
JiBub2RlLCB1bnNpZ25lZCBkZXB0aCwgYm9vbCBlbWJlZGRlZCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLm1tCmluZGV4IDk2ZjQ2
YzRjYzAyZTg5YTgyYTZkZjY1MzY3NGQwOTczNDMxODA1NGYuLmZhNGI5MDNiZWY5Mzk0ODFjMjJl
YTdkZjU1MWU4YjU1ZTdlMGU1MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
b2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5tbQpAQCAtMTAyLDEwICsxMDIsOSBAQCBEaXNr
Q2FjaGVNb25pdG9yOjpEaXNrQ2FjaGVNb25pdG9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdCwgUEFMOjpTZXNzaW9uSQogCiAjaWYgVVNFKFdFQl9USFJFQUQpCiAgICAgYXV0byBibG9j
a1RvUnVuID0gXihDRkNhY2hlZFVSTFJlc3BvbnNlUmVmIHJlc3BvbnNlKSB7Ci0gICAgICAgIENG
UmV0YWluKHJlc3BvbnNlKTsKKyAgICAgICAgYXV0byBzdHJvbmdSZXNwb25zZSA9IHJldGFpblB0
cihyZXNwb25zZSk7CiAgICAgICAgIFdlYlRocmVhZFJ1biheewotICAgICAgICAgICAgYmxvY2so
cmVzcG9uc2UpOwotICAgICAgICAgICAgQ0ZSZWxlYXNlKHJlc3BvbnNlKTsKKyAgICAgICAgICAg
IGJsb2NrKHN0cm9uZ1Jlc3BvbnNlLmdldCgpKTsKICAgICAgICAgfSk7CiAgICAgfTsKICNlbHNl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9FdmVudEhhbmRsZXJNYWMubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9FdmVudEhhbmRsZXJNYWMubW0KaW5kZXggYjI0OWU0
ZjRmZDk5MmI0ZTYxYWU3ZmVmOTAwMDhmNTY4ZjkxMGU5Yi4uOWQxMGE5ZmE3ZjE5ZDQwMjFjMTQ4
N2Q1ZWJjYTY1MDNhZWNhYzQyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMv
RXZlbnRIYW5kbGVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0V2ZW50SGFu
ZGxlck1hYy5tbQpAQCAtNDY4LDEzICs0NjgsMTIgQEAgc3RhdGljIHZvaWQgc2V0TlNTY3JvbGxW
aWV3U2Nyb2xsV2hlZWxTaG91bGRSZXRhaW5TZWxmKGJvb2wgc2hvdWxkUmV0YWluKQogCiBzdGF0
aWMgdm9pZCBzZWxmUmV0YWluaW5nTlNTY3JvbGxWaWV3U2Nyb2xsV2hlZWwoTlNTY3JvbGxWaWV3
ICpzZWxmLCBTRUwgc2VsZWN0b3IsIE5TRXZlbnQgKmV2ZW50KQogeworICAgIFJldGFpblB0cjxO
U1Njcm9sbFZpZXc+IHN0cm9uZ1NlbGY7CiAgICAgYm9vbCBzaG91bGRSZXRhaW5TZWxmID0gaXNN
YWluVGhyZWFkKCkgJiYgbnNTY3JvbGxWaWV3U2Nyb2xsV2hlZWxTaG91bGRSZXRhaW5TZWxmKCk7
Ci0KICAgICBpZiAoc2hvdWxkUmV0YWluU2VsZikKLSAgICAgICAgQ0ZSZXRhaW4oKF9fYnJpZGdl
IENGVHlwZVJlZilzZWxmKTsKKyAgICAgICAgc3Ryb25nU2VsZiA9IHJldGFpblB0cihzZWxmKTsK
KwogICAgIHd0ZkNhbGxJTVA8dm9pZD4ob3JpZ2luYWxOU1Njcm9sbFZpZXdTY3JvbGxXaGVlbCwg
c2VsZiwgc2VsZWN0b3IsIGV2ZW50KTsKLSAgICBpZiAoc2hvdWxkUmV0YWluU2VsZikKLSAgICAg
ICAgQ0ZSZWxlYXNlKChfX2JyaWRnZSBDRlR5cGVSZWYpc2VsZik7CiB9CiAKIGJvb2wgRXZlbnRI
YW5kbGVyOjpwYXNzV2hlZWxFdmVudFRvV2lkZ2V0KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYg
d2hlZWxFdmVudCwgV2lkZ2V0JiB3aWRnZXQsIE9wdGlvblNldDxXaGVlbEV2ZW50UHJvY2Vzc2lu
Z1N0ZXBzPiBwcm9jZXNzaW5nU3RlcHMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L3dpbi9GcmFtZUNHV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvd2luL0ZyYW1lQ0dXaW4u
Y3BwCmluZGV4IGYwNTU2YTNkYWIyYTkyOWZmYmRjYzNhMjBhNjE5Njc1NmI2NjdhMjEuLjczZDhi
NDljZWE3Y2E2NThkNTU0NmQzZWIxNTIyYWQzNGMwYWVjMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2Uvd2luL0ZyYW1lQ0dXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
d2luL0ZyYW1lQ0dXaW4uY3BwCkBAIC02OCwxNSArNjgsMTQgQEAgR0RJT2JqZWN0PEhCSVRNQVA+
IGltYWdlRnJvbVJlY3QoY29uc3QgRnJhbWUqIGZyYW1lLCBJbnRSZWN0JiBpcikKICAgICAgICAg
cmV0dXJuIGhibXA7CiAKICAgICBIR0RJT0JKIGhibXBPbGQgPSBTZWxlY3RPYmplY3QoaGRjLmdl
dCgpLCBoYm1wLmdldCgpKTsKLSAgICBDR0NvbnRleHRSZWYgY29udGV4dCA9IENHQml0bWFwQ29u
dGV4dENyZWF0ZShzdGF0aWNfY2FzdDx2b2lkKj4oYml0cyksIHcsIGgsCi0gICAgICAgIDgsIHcg
KiBzaXplb2YoUkdCUVVBRCksIHNSR0JDb2xvclNwYWNlUmVmKCksIGtDR0JpdG1hcEJ5dGVPcmRl
cjMyTGl0dGxlIHwga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRGaXJzdCk7Ci0gICAgQ0dDb250
ZXh0U2F2ZUdTdGF0ZShjb250ZXh0KTsKKyAgICBhdXRvIGNvbnRleHQgPSBhZG9wdENGKENHQml0
bWFwQ29udGV4dENyZWF0ZShzdGF0aWNfY2FzdDx2b2lkKj4oYml0cyksIHcsIGgsCisgICAgICAg
IDgsIHcgKiBzaXplb2YoUkdCUVVBRCksIHNSR0JDb2xvclNwYWNlUmVmKCksIGtDR0JpdG1hcEJ5
dGVPcmRlcjMyTGl0dGxlIHwga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRGaXJzdCkpOworICAg
IENHQ29udGV4dFNhdmVHU3RhdGUoY29udGV4dC5nZXQoKSk7CiAKLSAgICBHcmFwaGljc0NvbnRl
eHQgZ2MoY29udGV4dCk7CisgICAgR3JhcGhpY3NDb250ZXh0IGdjKGNvbnRleHQuZ2V0KCkpOwog
CiAgICAgZHJhd1JlY3RJbnRvQ29udGV4dChpciwgZnJhbWUtPnZpZXcoKSwgZ2MpOwogCi0gICAg
Q0dDb250ZXh0UmVsZWFzZShjb250ZXh0KTsKICAgICBTZWxlY3RPYmplY3QoaGRjLmdldCgpLCBo
Ym1wT2xkKTsKIAogICAgIGZyYW1lLT52aWV3KCktPnNldFBhaW50QmVoYXZpb3Iob2xkUGFpbnRC
ZWhhdmlvcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9NYWluVGhy
ZWFkU2hhcmVkVGltZXJDRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9NYWluVGhy
ZWFkU2hhcmVkVGltZXJDRi5jcHAKaW5kZXggMjhjZDliNzNmZTZiOGE4OGE5NDRhMjAyMDlkN2E3
YTBlMDVlMDEwNC4uNTQyMGE1YTg1OWZiY2JjYzA0ZjVkNWY5ODVmMDg3MmE1NDA1MTNiOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvTWFpblRocmVhZFNoYXJlZFRpbWVy
Q0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL01haW5UaHJlYWRTaGFyZWRU
aW1lckNGLmNwcApAQCAtMzcsNyArMzcsMTEgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1z
dGF0aWMgQ0ZSdW5Mb29wVGltZXJSZWYgc2hhcmVkVGltZXI7CitzdGF0aWMgUmV0YWluUHRyPENG
UnVuTG9vcFRpbWVyUmVmPiYgc2hhcmVkVGltZXIoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxSZXRhaW5QdHI8Q0ZSdW5Mb29wVGltZXJSZWY+PiBzaGFyZWRUaW1lcjsKKyAgICByZXR1
cm4gc2hhcmVkVGltZXI7Cit9CiBzdGF0aWMgdm9pZCB0aW1lckZpcmVkKENGUnVuTG9vcFRpbWVy
UmVmLCB2b2lkKik7CiAKIHN0YXRpYyBjb25zdCBDRlRpbWVJbnRlcnZhbCBrQ0ZUaW1lSW50ZXJ2
YWxEaXN0YW50RnV0dXJlID0gc3RkOjpudW1lcmljX2xpbWl0czxDRlRpbWVJbnRlcnZhbD46Om1h
eCgpOwpAQCAtODMsNyArODcsNyBAQCBzdGF0aWMgdm9pZCB0aW1lckZpcmVkKENGUnVuTG9vcFRp
bWVyUmVmLCB2b2lkKikKIAogdm9pZCBNYWluVGhyZWFkU2hhcmVkVGltZXI6OnJlc3RhcnRTaGFy
ZWRUaW1lcigpCiB7Ci0gICAgaWYgKCFzaGFyZWRUaW1lcikKKyAgICBpZiAoIXNoYXJlZFRpbWVy
KCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIE1haW5UaHJlYWRTaGFyZWRUaW1lcjo6c2luZ2xl
dG9uKCkuc3RvcCgpOwpAQCAtOTIsMTIgKzk2LDExIEBAIHZvaWQgTWFpblRocmVhZFNoYXJlZFRp
bWVyOjpyZXN0YXJ0U2hhcmVkVGltZXIoKQogCiB2b2lkIE1haW5UaHJlYWRTaGFyZWRUaW1lcjo6
aW52YWxpZGF0ZSgpCiB7Ci0gICAgaWYgKCFzaGFyZWRUaW1lcikKKyAgICBpZiAoIXNoYXJlZFRp
bWVyKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIENGUnVuTG9vcFRpbWVySW52YWxpZGF0ZShz
aGFyZWRUaW1lcik7Ci0gICAgQ0ZSZWxlYXNlKHNoYXJlZFRpbWVyKTsKLSAgICBzaGFyZWRUaW1l
ciA9IG51bGxwdHI7CisgICAgQ0ZSdW5Mb29wVGltZXJJbnZhbGlkYXRlKHNoYXJlZFRpbWVyKCku
Z2V0KCkpOworICAgIHNoYXJlZFRpbWVyKCkgPSBudWxscHRyOwogfQogCiB2b2lkIE1haW5UaHJl
YWRTaGFyZWRUaW1lcjo6c2V0RmlyZUludGVydmFsKFNlY29uZHMgaW50ZXJ2YWwpCkBAIC0xMDUs
MTIgKzEwOCwxMiBAQCB2b2lkIE1haW5UaHJlYWRTaGFyZWRUaW1lcjo6c2V0RmlyZUludGVydmFs
KFNlY29uZHMgaW50ZXJ2YWwpCiAgICAgQVNTRVJUKG1fZmlyZWRGdW5jdGlvbik7CiAKICAgICBD
RkFic29sdXRlVGltZSBmaXJlRGF0ZSA9IENGQWJzb2x1dGVUaW1lR2V0Q3VycmVudCgpICsgaW50
ZXJ2YWwudmFsdWUoKTsKLSAgICBpZiAoIXNoYXJlZFRpbWVyKSB7Ci0gICAgICAgIHNoYXJlZFRp
bWVyID0gQ0ZSdW5Mb29wVGltZXJDcmVhdGUobnVsbHB0ciwgZmlyZURhdGUsIGtDRlRpbWVJbnRl
cnZhbERpc3RhbnRGdXR1cmUsIDAsIDAsIHRpbWVyRmlyZWQsIG51bGxwdHIpOworICAgIGlmICgh
c2hhcmVkVGltZXIoKSkgeworICAgICAgICBzaGFyZWRUaW1lcigpID0gYWRvcHRDRihDRlJ1bkxv
b3BUaW1lckNyZWF0ZShudWxscHRyLCBmaXJlRGF0ZSwga0NGVGltZUludGVydmFsRGlzdGFudEZ1
dHVyZSwgMCwgMCwgdGltZXJGaXJlZCwgbnVsbHB0cikpOwogI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCi0gICAgICAgIENGUnVuTG9vcEFkZFRpbWVyKFdlYlRocmVhZFJ1bkxvb3AoKSwgc2hhcmVk
VGltZXIsIGtDRlJ1bkxvb3BDb21tb25Nb2Rlcyk7CisgICAgICAgIENGUnVuTG9vcEFkZFRpbWVy
KFdlYlRocmVhZFJ1bkxvb3AoKSwgc2hhcmVkVGltZXIoKS5nZXQoKSwga0NGUnVuTG9vcENvbW1v
bk1vZGVzKTsKICNlbHNlCi0gICAgICAgIENGUnVuTG9vcEFkZFRpbWVyKENGUnVuTG9vcEdldEN1
cnJlbnQoKSwgc2hhcmVkVGltZXIsIGtDRlJ1bkxvb3BDb21tb25Nb2Rlcyk7CisgICAgICAgIENG
UnVuTG9vcEFkZFRpbWVyKENGUnVuTG9vcEdldEN1cnJlbnQoKSwgc2hhcmVkVGltZXIoKS5nZXQo
KSwga0NGUnVuTG9vcENvbW1vbk1vZGVzKTsKICNlbmRpZgogCiAgICAgICAgIHNldHVwUG93ZXJP
YnNlcnZlcigpOwpAQCAtMTE4LDE1ICsxMjEsMTUgQEAgdm9pZCBNYWluVGhyZWFkU2hhcmVkVGlt
ZXI6OnNldEZpcmVJbnRlcnZhbChTZWNvbmRzIGludGVydmFsKQogICAgICAgICByZXR1cm47CiAg
ICAgfQogCi0gICAgQ0ZSdW5Mb29wVGltZXJTZXROZXh0RmlyZURhdGUoc2hhcmVkVGltZXIsIGZp
cmVEYXRlKTsKKyAgICBDRlJ1bkxvb3BUaW1lclNldE5leHRGaXJlRGF0ZShzaGFyZWRUaW1lcigp
LmdldCgpLCBmaXJlRGF0ZSk7CiB9CiAKIHZvaWQgTWFpblRocmVhZFNoYXJlZFRpbWVyOjpzdG9w
KCkKIHsKLSAgICBpZiAoIXNoYXJlZFRpbWVyKQorICAgIGlmICghc2hhcmVkVGltZXIoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgQ0ZSdW5Mb29wVGltZXJTZXROZXh0RmlyZURhdGUoc2hhcmVk
VGltZXIsIGtDRlRpbWVJbnRlcnZhbERpc3RhbnRGdXR1cmUpOworICAgIENGUnVuTG9vcFRpbWVy
U2V0TmV4dEZpcmVEYXRlKHNoYXJlZFRpbWVyKCkuZ2V0KCksIGtDRlRpbWVJbnRlcnZhbERpc3Rh
bnRGdXR1cmUpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
Qy5tbQppbmRleCA1NzYxYzA5OWIxZjE5NGZhMWYwZDgwM2M2OTVkMDQyZmJlNDQ4M2E5Li5kNWI4
YjhjYmFkZDUwNTFjNTNlZDBkZTBkMTUyNDI4NGMxYTkwNmFhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akMubW0KQEAgLTI4MTAsMTIgKzI4MTAsMTIgQEAgc3RhdGljIE5TU3RyaW5nICpleGVybmFsRGV2
aWNlRGlzcGxheU5hbWVGb3JQbGF5ZXIoQVZQbGF5ZXIgKnBsYXllcikKICAgICBpZiAocGxheWVy
LmV4dGVybmFsUGxheWJhY2tUeXBlICE9IEFWUGxheWVyRXh0ZXJuYWxQbGF5YmFja1R5cGVBaXJQ
bGF5KQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgTlNBcnJheSAqcGlja2FibGVSb3V0ZXMg
PSBDRkJyaWRnaW5nUmVsZWFzZShNUk1lZGlhUmVtb3RlQ29weVBpY2thYmxlUm91dGVzKCkpOwot
ICAgIGlmICghcGlja2FibGVSb3V0ZXMuY291bnQpCisgICAgYXV0byBwaWNrYWJsZVJvdXRlcyA9
IGFkb3B0Q0YoTVJNZWRpYVJlbW90ZUNvcHlQaWNrYWJsZVJvdXRlcygpKTsKKyAgICBpZiAoIXBp
Y2thYmxlUm91dGVzIHx8ICEoQ0ZBcnJheUdldENvdW50KHBpY2thYmxlUm91dGVzKSkKICAgICAg
ICAgcmV0dXJuIG5pbDsKIAogICAgIE5TU3RyaW5nICpkaXNwbGF5TmFtZSA9IG5pbDsKLSAgICBm
b3IgKE5TRGljdGlvbmFyeSAqcGlja2FibGVSb3V0ZSBpbiBwaWNrYWJsZVJvdXRlcykgeworICAg
IGZvciAoTlNEaWN0aW9uYXJ5ICpwaWNrYWJsZVJvdXRlIGluIChfX2JyaWRnZSBOU0FycmF5ICop
cGlja2FibGVSb3V0ZXMpIHsKICAgICAgICAgaWYgKCFbcGlja2FibGVSb3V0ZVtBVkNvbnRyb2xs
ZXJfUm91dGVEZXNjcmlwdGlvbktleV9Sb3V0ZUN1cnJlbnRseVBpY2tlZF0gYm9vbFZhbHVlXSkK
ICAgICAgICAgICAgIGNvbnRpbnVlOwogCkBAIC0yODMwLDcgKzI4MzAsNyBAQCBzdGF0aWMgTlNT
dHJpbmcgKmV4ZXJuYWxEZXZpY2VEaXNwbGF5TmFtZUZvclBsYXllcihBVlBsYXllciAqcGxheWVy
KQogCiAgICAgICAgIC8vIEluIGNhc2VzIHdoZXJlIGEgcm91dGUgd2l0aCB0aGF0IG5hbWUgYWxy
ZWFkeSBleGlzdHMsIHByZWZpeCB0aGUgbmFtZSB3aXRoIHRoZSBtb2RlbC4KICAgICAgICAgQk9P
TCBpbmNsdWRlTG9jYWxpemVkRGV2aWNlTW9kZWxOYW1lID0gTk87Ci0gICAgICAgIGZvciAoTlNE
aWN0aW9uYXJ5ICpvdGhlclJvdXRlIGluIHBpY2thYmxlUm91dGVzKSB7CisgICAgICAgIGZvciAo
TlNEaWN0aW9uYXJ5ICpvdGhlclJvdXRlIGluIChfX2JyaWRnZSBOU0FycmF5ICopcGlja2FibGVS
b3V0ZXMpIHsKICAgICAgICAgICAgIGlmIChvdGhlclJvdXRlID09IHBpY2thYmxlUm91dGUpCiAg
ICAgICAgICAgICAgICAgY29udGludWU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9DQUNGTGF5ZXJUcmVlSG9zdC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vQ0FDRkxheWVyVHJlZUhvc3QuY3BwCmluZGV4
IDEyOWRkYTBkZGFiYTA4MGE1OTAxNjMwNGZhZDRlY2ZmM2U0N2NlYzAuLmE2Yjc2ODNkZWU1YjZl
MTVkMTU4NjQzNWZiMzcxMWExNTlkNDJjYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9DQUNGTGF5ZXJUcmVlSG9zdC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL0NBQ0ZMYXllclRyZWVIb3N0LmNwcApA
QCAtMTU5LDkgKzE1OSw4IEBAIHZvaWQgQ0FDRkxheWVyVHJlZUhvc3Q6OmluaXRpYWxpemUoKQog
ICAgIG1fcm9vdExheWVyLT5zZXRHZW9tZXRyeUZsaXBwZWQodHJ1ZSk7CiAKICNpZm5kZWYgTkRF
QlVHCi0gICAgQ0dDb2xvclJlZiBkZWJ1Z0NvbG9yID0gQ0dDb2xvckNyZWF0ZUdlbmVyaWNSR0Io
MSwgMCwgMCwgMC44KTsKLSAgICBtX3Jvb3RMYXllci0+c2V0QmFja2dyb3VuZENvbG9yKGRlYnVn
Q29sb3IpOwotICAgIENHQ29sb3JSZWxlYXNlKGRlYnVnQ29sb3IpOworICAgIGF1dG8gZGVidWdD
b2xvciA9IGFkb3B0Q0YoQ0dDb2xvckNyZWF0ZUdlbmVyaWNSR0IoMSwgMCwgMCwgMC44KSk7Cisg
ICAgbV9yb290TGF5ZXItPnNldEJhY2tncm91bmRDb2xvcihkZWJ1Z0NvbG9yLmdldCgpKTsKICNl
bmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9HcmFwaGljc0NvbnRleHRDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKaW5kZXggOWRiOTA5Y2RhOGVmMTc2MTBmMjk0YTk4
NTA5MThiYzE5YWU3OTdhOS4uNjQ0M2E3MTU3NThkNjc1ODRlZTNkZjQxNDk1M2U0ZmU3NTg3YzFi
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhp
Y3NDb250ZXh0Q0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0dyYXBoaWNzQ29udGV4dENHLmNwcApAQCAtMzQ2LDkgKzM0Niw3IEBAIHN0YXRpYyB2b2lkIGRy
YXdQYXR0ZXJuQ2FsbGJhY2sodm9pZCogaW5mbywgQ0dDb250ZXh0UmVmIGNvbnRleHQpCiAKIHN0
YXRpYyB2b2lkIHBhdHRlcm5SZWxlYXNlQ2FsbGJhY2sodm9pZCogaW5mbykKIHsKLSAgICBjYWxs
T25NYWluVGhyZWFkKFtpbWFnZSA9IHN0YXRpY19jYXN0PENHSW1hZ2VSZWY+KGluZm8pXSB7Ci0g
ICAgICAgIENHSW1hZ2VSZWxlYXNlKGltYWdlKTsKLSAgICB9KTsKKyAgICBjYWxsT25NYWluVGhy
ZWFkKFtpbWFnZSA9IGFkb3B0Q0Yoc3RhdGljX2Nhc3Q8Q0dJbWFnZVJlZj4oaW5mbykpXSB7IH0p
OwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1BsYXRmb3JtUGF0dGVybihjb25zdCBQ
bGF0Zm9ybUltYWdlUHRyJiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0
IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0IEFm
ZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2Us
IGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9w
dGlvbnMpCkBAIC02NzUsOCArNjczLDggQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxQYXRo
KGNvbnN0IFBhdGgmIHBhdGgpCiAgICAgICAgICAgICBGbG9hdFJlY3QgcmVjdCA9IHBhdGguZmFz
dEJvdW5kaW5nUmVjdCgpOwogICAgICAgICAgICAgRmxvYXRTaXplIGxheWVyU2l6ZSA9IGdldENU
TSgpLm1hcFNpemUocmVjdC5zaXplKCkpOwogCi0gICAgICAgICAgICBDR0xheWVyUmVmIGxheWVy
ID0gQ0dMYXllckNyZWF0ZVdpdGhDb250ZXh0KGNvbnRleHQsIGxheWVyU2l6ZSwgMCk7Ci0gICAg
ICAgICAgICBDR0NvbnRleHRSZWYgbGF5ZXJDb250ZXh0ID0gQ0dMYXllckdldENvbnRleHQobGF5
ZXIpOworICAgICAgICAgICAgYXV0byBsYXllciA9IGFkb3B0Q0YoQ0dMYXllckNyZWF0ZVdpdGhD
b250ZXh0KGNvbnRleHQsIGxheWVyU2l6ZSwgMCkpOworICAgICAgICAgICAgQ0dDb250ZXh0UmVm
IGxheWVyQ29udGV4dCA9IENHTGF5ZXJHZXRDb250ZXh0KGxheWVyLmdldCgpKTsKIAogICAgICAg
ICAgICAgQ0dDb250ZXh0U2NhbGVDVE0obGF5ZXJDb250ZXh0LCBsYXllclNpemUud2lkdGgoKSAv
IHJlY3Qud2lkdGgoKSwgbGF5ZXJTaXplLmhlaWdodCgpIC8gcmVjdC5oZWlnaHQoKSk7CiAgICAg
ICAgICAgICBDR0NvbnRleHRUcmFuc2xhdGVDVE0obGF5ZXJDb250ZXh0LCAtcmVjdC54KCksIC1y
ZWN0LnkoKSk7CkBAIC02OTAsOCArNjg4LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxQ
YXRoKGNvbnN0IFBhdGgmIHBhdGgpCiAgICAgICAgICAgICAgICAgQ0dDb250ZXh0Q2xpcChsYXll
ckNvbnRleHQpOwogCiAgICAgICAgICAgICBtX3N0YXRlLmZpbGxHcmFkaWVudC0+cGFpbnQobGF5
ZXJDb250ZXh0KTsKLSAgICAgICAgICAgIENHQ29udGV4dERyYXdMYXllckluUmVjdChjb250ZXh0
LCByZWN0LCBsYXllcik7Ci0gICAgICAgICAgICBDR0xheWVyUmVsZWFzZShsYXllcik7CisgICAg
ICAgICAgICBDR0NvbnRleHREcmF3TGF5ZXJJblJlY3QoY29udGV4dCwgcmVjdCwgbGF5ZXIuZ2V0
KCkpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgQ0dDb250ZXh0QmVnaW5QYXRoKGNv
bnRleHQpOwogICAgICAgICAgICAgQ0dDb250ZXh0QWRkUGF0aChjb250ZXh0LCBwYXRoLnBsYXRm
b3JtUGF0aCgpKTsKQEAgLTc0NSw4ICs3NDIsOCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c3Ry
b2tlUGF0aChjb25zdCBQYXRoJiBwYXRoKQogCiAgICAgICAgICAgICBGbG9hdFNpemUgbGF5ZXJT
aXplID0gZ2V0Q1RNKCkubWFwU2l6ZShGbG9hdFNpemUoYWRqdXN0ZWRXaWR0aCwgYWRqdXN0ZWRI
ZWlnaHQpKTsKIAotICAgICAgICAgICAgQ0dMYXllclJlZiBsYXllciA9IENHTGF5ZXJDcmVhdGVX
aXRoQ29udGV4dChjb250ZXh0LCBsYXllclNpemUsIDApOwotICAgICAgICAgICAgQ0dDb250ZXh0
UmVmIGxheWVyQ29udGV4dCA9IENHTGF5ZXJHZXRDb250ZXh0KGxheWVyKTsKKyAgICAgICAgICAg
IGF1dG8gbGF5ZXIgPSBhZG9wdENGKENHTGF5ZXJDcmVhdGVXaXRoQ29udGV4dChjb250ZXh0LCBs
YXllclNpemUsIDApKTsKKyAgICAgICAgICAgIENHQ29udGV4dFJlZiBsYXllckNvbnRleHQgPSBD
R0xheWVyR2V0Q29udGV4dChsYXllci5nZXQoKSk7CiAgICAgICAgICAgICBDR0NvbnRleHRTZXRM
aW5lV2lkdGgobGF5ZXJDb250ZXh0LCBsaW5lV2lkdGgpOwogCiAgICAgICAgICAgICAvLyBDb21w
ZW5zYXRlIGZvciB0aGUgbGluZSB3aWR0aCwgb3RoZXJ3aXNlIHRoZSBsYXllcidzIHRvcC1sZWZ0
IGNvcm5lciB3b3VsZCBiZQpAQCAtNzY1LDggKzc2Miw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0
OjpzdHJva2VQYXRoKGNvbnN0IFBhdGgmIHBhdGgpCiAKICAgICAgICAgICAgIGZsb2F0IGRlc3Rp
bmF0aW9uWCA9IHJvdW5kZihyZWN0LngoKSAtIGxpbmVXaWR0aCk7CiAgICAgICAgICAgICBmbG9h
dCBkZXN0aW5hdGlvblkgPSByb3VuZGYocmVjdC55KCkgLSBsaW5lV2lkdGgpOwotICAgICAgICAg
ICAgQ0dDb250ZXh0RHJhd0xheWVySW5SZWN0KGNvbnRleHQsIENHUmVjdE1ha2UoZGVzdGluYXRp
b25YLCBkZXN0aW5hdGlvblksIGFkanVzdGVkV2lkdGgsIGFkanVzdGVkSGVpZ2h0KSwgbGF5ZXIp
OwotICAgICAgICAgICAgQ0dMYXllclJlbGVhc2UobGF5ZXIpOworICAgICAgICAgICAgQ0dDb250
ZXh0RHJhd0xheWVySW5SZWN0KGNvbnRleHQsIENHUmVjdE1ha2UoZGVzdGluYXRpb25YLCBkZXN0
aW5hdGlvblksIGFkanVzdGVkV2lkdGgsIGFkanVzdGVkSGVpZ2h0KSwgbGF5ZXIuZ2V0KCkpOwog
ICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgQ0dDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNh
dmVyKGNvbnRleHQpOwogICAgICAgICAgICAgQ0dDb250ZXh0QmVnaW5QYXRoKGNvbnRleHQpOwpA
QCAtODE3LDggKzgxMyw4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdChjb25zdCBG
bG9hdFJlY3QmIHJlY3QpCiAgICAgICAgIGlmIChoYXNTaGFkb3coKSkgewogICAgICAgICAgICAg
RmxvYXRTaXplIGxheWVyU2l6ZSA9IGdldENUTSgpLm1hcFNpemUocmVjdC5zaXplKCkpOwogCi0g
ICAgICAgICAgICBDR0xheWVyUmVmIGxheWVyID0gQ0dMYXllckNyZWF0ZVdpdGhDb250ZXh0KGNv
bnRleHQsIGxheWVyU2l6ZSwgMCk7Ci0gICAgICAgICAgICBDR0NvbnRleHRSZWYgbGF5ZXJDb250
ZXh0ID0gQ0dMYXllckdldENvbnRleHQobGF5ZXIpOworICAgICAgICAgICAgYXV0byBsYXllciA9
IGFkb3B0Q0YoQ0dMYXllckNyZWF0ZVdpdGhDb250ZXh0KGNvbnRleHQsIGxheWVyU2l6ZSwgMCkp
OworICAgICAgICAgICAgQ0dDb250ZXh0UmVmIGxheWVyQ29udGV4dCA9IENHTGF5ZXJHZXRDb250
ZXh0KGxheWVyLmdldCgpKTsKIAogICAgICAgICAgICAgQ0dDb250ZXh0U2NhbGVDVE0obGF5ZXJD
b250ZXh0LCBsYXllclNpemUud2lkdGgoKSAvIHJlY3Qud2lkdGgoKSwgbGF5ZXJTaXplLmhlaWdo
dCgpIC8gcmVjdC5oZWlnaHQoKSk7CiAgICAgICAgICAgICBDR0NvbnRleHRUcmFuc2xhdGVDVE0o
bGF5ZXJDb250ZXh0LCAtcmVjdC54KCksIC1yZWN0LnkoKSk7CkBAIC04MjcsOCArODIzLDcgQEAg
dm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKIAog
ICAgICAgICAgICAgQ0dDb250ZXh0Q29uY2F0Q1RNKGxheWVyQ29udGV4dCwgbV9zdGF0ZS5maWxs
R3JhZGllbnRTcGFjZVRyYW5zZm9ybSk7CiAgICAgICAgICAgICBtX3N0YXRlLmZpbGxHcmFkaWVu
dC0+cGFpbnQobGF5ZXJDb250ZXh0KTsKLSAgICAgICAgICAgIENHQ29udGV4dERyYXdMYXllcklu
UmVjdChjb250ZXh0LCByZWN0LCBsYXllcik7Ci0gICAgICAgICAgICBDR0xheWVyUmVsZWFzZShs
YXllcik7CisgICAgICAgICAgICBDR0NvbnRleHREcmF3TGF5ZXJJblJlY3QoY29udGV4dCwgcmVj
dCwgbGF5ZXIuZ2V0KCkpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgQ0dDb250ZXh0
Q2xpcFRvUmVjdChjb250ZXh0LCByZWN0KTsKICAgICAgICAgICAgIENHQ29udGV4dENvbmNhdENU
TShjb250ZXh0LCBtX3N0YXRlLmZpbGxHcmFkaWVudFNwYWNlVHJhbnNmb3JtKTsKQEAgLTEyMjYs
OSArMTIyMSw5IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzdHJva2VSZWN0KGNvbnN0IEZsb2F0
UmVjdCYgcmVjdCwgZmxvYXQgbGluZVdpZHRoKQogICAgICAgICAgICAgZmxvYXQgYWRqdXN0ZWRI
ZWlnaHQgPSBjZWlsZihyZWN0LmhlaWdodCgpICsgZG91YmxlTGluZVdpZHRoKTsKICAgICAgICAg
ICAgIEZsb2F0U2l6ZSBsYXllclNpemUgPSBnZXRDVE0oKS5tYXBTaXplKEZsb2F0U2l6ZShhZGp1
c3RlZFdpZHRoLCBhZGp1c3RlZEhlaWdodCkpOwogCi0gICAgICAgICAgICBDR0xheWVyUmVmIGxh
eWVyID0gQ0dMYXllckNyZWF0ZVdpdGhDb250ZXh0KGNvbnRleHQsIGxheWVyU2l6ZSwgMCk7Cisg
ICAgICAgICAgICBhdXRvIGxheWVyID0gYWRvcHRDRihDR0xheWVyQ3JlYXRlV2l0aENvbnRleHQo
Y29udGV4dCwgbGF5ZXJTaXplLCAwKSk7CiAKLSAgICAgICAgICAgIENHQ29udGV4dFJlZiBsYXll
ckNvbnRleHQgPSBDR0xheWVyR2V0Q29udGV4dChsYXllcik7CisgICAgICAgICAgICBDR0NvbnRl
eHRSZWYgbGF5ZXJDb250ZXh0ID0gQ0dMYXllckdldENvbnRleHQobGF5ZXIuZ2V0KCkpOwogICAg
ICAgICAgICAgbV9zdGF0ZS5zdHJva2VUaGlja25lc3MgPSBsaW5lV2lkdGg7CiAgICAgICAgICAg
ICBDR0NvbnRleHRTZXRMaW5lV2lkdGgobGF5ZXJDb250ZXh0LCBsaW5lV2lkdGgpOwogCkBAIC0x
MjQ4LDggKzEyNDMsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c3Ryb2tlUmVjdChjb25zdCBG
bG9hdFJlY3QmIHJlY3QsIGZsb2F0IGxpbmVXaWR0aCkKIAogICAgICAgICAgICAgY29uc3QgZmxv
YXQgZGVzdGluYXRpb25YID0gcm91bmRmKHJlY3QueCgpIC0gbGluZVdpZHRoKTsKICAgICAgICAg
ICAgIGNvbnN0IGZsb2F0IGRlc3RpbmF0aW9uWSA9IHJvdW5kZihyZWN0LnkoKSAtIGxpbmVXaWR0
aCk7Ci0gICAgICAgICAgICBDR0NvbnRleHREcmF3TGF5ZXJJblJlY3QoY29udGV4dCwgQ0dSZWN0
TWFrZShkZXN0aW5hdGlvblgsIGRlc3RpbmF0aW9uWSwgYWRqdXN0ZWRXaWR0aCwgYWRqdXN0ZWRI
ZWlnaHQpLCBsYXllcik7Ci0gICAgICAgICAgICBDR0xheWVyUmVsZWFzZShsYXllcik7CisgICAg
ICAgICAgICBDR0NvbnRleHREcmF3TGF5ZXJJblJlY3QoY29udGV4dCwgQ0dSZWN0TWFrZShkZXN0
aW5hdGlvblgsIGRlc3RpbmF0aW9uWSwgYWRqdXN0ZWRXaWR0aCwgYWRqdXN0ZWRIZWlnaHQpLCBs
YXllci5nZXQoKSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBDR0NvbnRleHRTdGF0
ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7CiAgICAgICAgICAgICBzZXRTdHJva2VUaGlja25l
c3MobGluZVdpZHRoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL1BhdHRlcm5DRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9QYXR0ZXJuQ0cuY3BwCmluZGV4IGYxYjllM2E3YzA1NTY5YTk4OTFiNjk4ZDI4M2FiNTM5N2M3
MjVmNTQuLjNhZWM3NzU2ZGI4Y2QyNTBhZmVmMTBkODNmZGViMWRjYzkzY2Y5YzMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdHRlcm5DRy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0dGVybkNHLmNwcApAQCAt
NTAsOSArNTAsNyBAQCBzdGF0aWMgdm9pZCBwYXR0ZXJuQ2FsbGJhY2sodm9pZCogaW5mbywgQ0dD
b250ZXh0UmVmIGNvbnRleHQpCiAKIHN0YXRpYyB2b2lkIHBhdHRlcm5SZWxlYXNlQ2FsbGJhY2so
dm9pZCogaW5mbykKIHsKLSAgICBjYWxsT25NYWluVGhyZWFkKFtpbWFnZSA9IHN0YXRpY19jYXN0
PENHSW1hZ2VSZWY+KGluZm8pXSB7Ci0gICAgICAgIENHSW1hZ2VSZWxlYXNlKGltYWdlKTsKLSAg
ICB9KTsKKyAgICBjYWxsT25NYWluVGhyZWFkKFtpbWFnZSA9IGFkb3B0Q0Yoc3RhdGljX2Nhc3Q8
Q0dJbWFnZVJlZj4oaW5mbykpXSB7IH0pOwogfQogCiBDR1BhdHRlcm5SZWYgUGF0dGVybjo6Y3Jl
YXRlUGxhdGZvcm1QYXR0ZXJuKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdXNlclNwYWNlVHJhbnNm
b3JtKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwCmluZGV4IDk5Y2JjZmQwYjZkYTE1Y2Uz
MjA4Nzc1ZDE1YjVkZGJiNmFhYzhmMGUuLmZhNzdiMzk5NzdkYjk3OGEwNTk3MWI2YzI1YzQxZjM3
MmRlNTI0YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5jcHAKQEAgLTEyNzksOCArMTI3OSw3IEBA
IHN0YXRpYyB2b2lkIGF1dG9BY3RpdmF0ZUZvbnQoY29uc3QgU3RyaW5nJiBuYW1lLCBDR0Zsb2F0
IHNpemUpCiAgICAgQ0ZUeXBlUmVmIHZhbHVlc1tdID0geyBmb250TmFtZS5nZXQoKSB9OwogICAg
IGF1dG8gYXR0cmlidXRlcyA9IGFkb3B0Q0YoQ0ZEaWN0aW9uYXJ5Q3JlYXRlKGtDRkFsbG9jYXRv
ckRlZmF1bHQsIGtleXMsIHZhbHVlcywgV1RGX0FSUkFZX0xFTkdUSChrZXlzKSwgJmtDRlR5cGVE
aWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcykp
OwogICAgIGF1dG8gZGVzY3JpcHRvciA9IGFkb3B0Q0YoQ1RGb250RGVzY3JpcHRvckNyZWF0ZVdp
dGhBdHRyaWJ1dGVzKGF0dHJpYnV0ZXMuZ2V0KCkpKTsKLSAgICBpZiAoYXV0byBuZXdGb250ID0g
Q1RGb250Q3JlYXRlV2l0aEZvbnREZXNjcmlwdG9yKGRlc2NyaXB0b3IuZ2V0KCksIHNpemUsIG51
bGxwdHIpKQotICAgICAgICBDRlJlbGVhc2UobmV3Rm9udCk7CisgICAgYXV0byBuZXdGb250ID0g
YWRvcHRDRihDVEZvbnRDcmVhdGVXaXRoRm9udERlc2NyaXB0b3IoZGVzY3JpcHRvci5nZXQoKSwg
c2l6ZSwgbnVsbHB0cikpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q0dXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDR1dpbi5jcHAKaW5kZXggNTNhYzdlMjAwMThhMWI4YTk1
MGRjNzQ5MjY4NWQyNzVmOGFiYjE2ZS4uYzE5ZTc0MTU1N2MzMDhjOTQxZTRlZjcxNWUzZGI0NjU5
NGQxODViNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0ZvbnRDR1dpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0ZvbnRDR1dpbi5jcHAKQEAgLTQwOSw1MCArNDA5LDM2IEBAIHZvaWQgRm9udENhc2NhZGU6Omdl
dFBsYXRmb3JtR2x5cGhBZHZhbmNlcyhDR0ZvbnRSZWYgZm9udCwgY29uc3QgQ0dBZmZpbmVUcmFu
c2ZvCiAKICAgICAvLyA8cmRhcjovL3Byb2JsZW0vNzc2MTE2NT4gVGhlIEdESSBiYWNrIGVuZCBp
biBDb3JlIEdyYXBoaWNzIHNvbWV0aW1lcyByZXR1cm5zIGFkdmFuY2VzIHRoYXQKICAgICAvLyBk
aWZmZXIgZnJvbSB3aGF0IHRoZSBmb250J3MgaG10eCB0YWJsZSBzcGVjaWZpZXMuIFRoZSBmb2xs
b3dpbmcgY29kZSBjb3JyZWN0cyB0aGF0LgotICAgIENGRGF0YVJlZiBobXR4VGFibGUgPSBDR0Zv
bnRDb3B5VGFibGVGb3JUYWcoZm9udCwgJ2htdHgnKTsKKyAgICBhdXRvIGhtdHhUYWJsZSA9IGFk
b3B0Q0YoQ0dGb250Q29weVRhYmxlRm9yVGFnKGZvbnQsICdobXR4JykpOwogICAgIGlmICghaG10
eFRhYmxlKQogICAgICAgICByZXR1cm47Ci0gICAgQ0ZEYXRhUmVmIGhoZWFUYWJsZSA9IENHRm9u
dENvcHlUYWJsZUZvclRhZyhmb250LCAnaGhlYScpOwotICAgIGlmICghaGhlYVRhYmxlKSB7Ci0g
ICAgICAgIENGUmVsZWFzZShobXR4VGFibGUpOworICAgIGF1dG8gaGhlYVRhYmxlID0gYWRvcHRD
RihDR0ZvbnRDb3B5VGFibGVGb3JUYWcoZm9udCwgJ2hoZWEnKSk7CisgICAgaWYgKCFoaGVhVGFi
bGUpCiAgICAgICAgIHJldHVybjsKLSAgICB9CiAKICAgICBjb25zdCBDRkluZGV4IGhoZWFUYWJs
ZVNpemUgPSAzNjsKICAgICBjb25zdCBwdHJkaWZmX3QgaGhlYVRhYmxlTnVtYmVyT2ZITWV0cmlj
c09mZnNldCA9IDM0OwotICAgIGlmIChDRkRhdGFHZXRMZW5ndGgoaGhlYVRhYmxlKSA8IGhoZWFU
YWJsZVNpemUpIHsKLSAgICAgICAgQ0ZSZWxlYXNlKGhtdHhUYWJsZSk7Ci0gICAgICAgIENGUmVs
ZWFzZShoaGVhVGFibGUpOworICAgIGlmIChDRkRhdGFHZXRMZW5ndGgoaGhlYVRhYmxlLmdldCgp
KSA8IGhoZWFUYWJsZVNpemUpCiAgICAgICAgIHJldHVybjsKLSAgICB9CiAKLSAgICB1bnNpZ25l
ZCBzaG9ydCBudW1iZXJPZkhNZXRyaWNzID0gKnJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdW5zaWdu
ZWQgc2hvcnQqPihDRkRhdGFHZXRCeXRlUHRyKGhoZWFUYWJsZSkgKyBoaGVhVGFibGVOdW1iZXJP
ZkhNZXRyaWNzT2Zmc2V0KTsKKyAgICB1bnNpZ25lZCBzaG9ydCBudW1iZXJPZkhNZXRyaWNzID0g
KnJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdW5zaWduZWQgc2hvcnQqPihDRkRhdGFHZXRCeXRlUHRy
KGhoZWFUYWJsZS5nZXQoKSkgKyBoaGVhVGFibGVOdW1iZXJPZkhNZXRyaWNzT2Zmc2V0KTsKICAg
ICBudW1iZXJPZkhNZXRyaWNzID0gKChudW1iZXJPZkhNZXRyaWNzICYgMHhGRikgPDwgOCkgfCAo
bnVtYmVyT2ZITWV0cmljcyA+PiA4KTsKLSAgICBpZiAoIW51bWJlck9mSE1ldHJpY3MpIHsKLSAg
ICAgICAgQ0ZSZWxlYXNlKGhtdHhUYWJsZSk7Ci0gICAgICAgIENGUmVsZWFzZShoaGVhVGFibGUp
OworICAgIGlmICghbnVtYmVyT2ZITWV0cmljcykKICAgICAgICAgcmV0dXJuOwotICAgIH0KIAog
ICAgIGlmIChnbHlwaCA+PSBudW1iZXJPZkhNZXRyaWNzKQogICAgICAgICBnbHlwaCA9IG51bWJl
ck9mSE1ldHJpY3MgLSAxOwogCi0gICAgaWYgKENGRGF0YUdldExlbmd0aChobXR4VGFibGUpIDwg
NCAqIChnbHlwaCArIDEpKSB7Ci0gICAgICAgIENGUmVsZWFzZShobXR4VGFibGUpOwotICAgICAg
ICBDRlJlbGVhc2UoaGhlYVRhYmxlKTsKKyAgICBpZiAoQ0ZEYXRhR2V0TGVuZ3RoKGhtdHhUYWJs
ZS5nZXQoKSkgPCA0ICogKGdseXBoICsgMSkpCiAgICAgICAgIHJldHVybjsKLSAgICB9CiAKLSAg
ICB1bnNpZ25lZCBzaG9ydCBhZHZhbmNlSW5EZXNpZ25Vbml0cyA9ICpyZWludGVycHJldF9jYXN0
PGNvbnN0IHVuc2lnbmVkIHNob3J0Kj4oQ0ZEYXRhR2V0Qnl0ZVB0cihobXR4VGFibGUpICsgNCAq
IGdseXBoKTsKKyAgICB1bnNpZ25lZCBzaG9ydCBhZHZhbmNlSW5EZXNpZ25Vbml0cyA9ICpyZWlu
dGVycHJldF9jYXN0PGNvbnN0IHVuc2lnbmVkIHNob3J0Kj4oQ0ZEYXRhR2V0Qnl0ZVB0cihobXR4
VGFibGUuZ2V0KCkpICsgNCAqIGdseXBoKTsKICAgICBhZHZhbmNlSW5EZXNpZ25Vbml0cyA9ICgo
YWR2YW5jZUluRGVzaWduVW5pdHMgJiAweEZGKSA8PCA4KSB8IChhZHZhbmNlSW5EZXNpZ25Vbml0
cyA+PiA4KTsKICAgICBDR1NpemUgaG9yaXpvbnRhbEFkdmFuY2UgPSBDR1NpemVNYWtlKHN0YXRp
Y19jYXN0PENHRmxvYXQ+KGFkdmFuY2VJbkRlc2lnblVuaXRzKSAvIENHRm9udEdldFVuaXRzUGVy
RW0oZm9udCksIDApOwogICAgIGhvcml6b250YWxBZHZhbmNlID0gQ0dTaXplQXBwbHlBZmZpbmVU
cmFuc2Zvcm0oaG9yaXpvbnRhbEFkdmFuY2UsIG0pOwogICAgIGFkdmFuY2Uud2lkdGggPSBob3Jp
em9udGFsQWR2YW5jZS53aWR0aDsKICAgICBpZiAoIShzdHlsZSAmIGtDR0ZvbnRSZW5kZXJpbmdT
dHlsZVN1YnBpeGVsUG9zaXRpb25pbmcpKQogICAgICAgICBhZHZhbmNlLndpZHRoID0gcm91bmRm
KGFkdmFuY2Uud2lkdGgpOwotCi0gICAgQ0ZSZWxlYXNlKGhoZWFUYWJsZSk7Ci0gICAgQ0ZSZWxl
YXNlKGhtdHhUYWJsZSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRDR1dpbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0Q0dXaW4uY3BwCmluZGV4IDMx
N2Y4ZDA0NWQzMjkzYTc4YzdhMWI3NTU0NDZkMDVkZTQ5YTI3YzMuLmNlZGIwMmViOWUxZjk1YmY5
MDMzMTEzYmE2MDVkOWNjZmZmODY5ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRDR1dpbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dENHV2luLmNwcApAQCAt
MTA3LDE2ICsxMDcsMTQgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnJlbGVhc2VXaW5kb3dzQ29u
dGV4dChIREMgaGRjLCBjb25zdCBJbnRSZWN0JiBkc3RSZWN0LCBib28KIAogICAgIEFTU0VSVChw
aXhlbERhdGEuYml0c1BlclBpeGVsKCkgPT0gMzIpOwogCi0gICAgQ0dDb250ZXh0UmVmIGJpdG1h
cENvbnRleHQgPSBDR0JpdG1hcENvbnRleHRDcmVhdGUocGl4ZWxEYXRhLmJ1ZmZlcigpLCBwaXhl
bERhdGEuc2l6ZSgpLndpZHRoKCksIHBpeGVsRGF0YS5zaXplKCkuaGVpZ2h0KCksIDgsCisgICAg
YXV0byBiaXRtYXBDb250ZXh0ID0gYWRvcHRDRihDR0JpdG1hcENvbnRleHRDcmVhdGUocGl4ZWxE
YXRhLmJ1ZmZlcigpLCBwaXhlbERhdGEuc2l6ZSgpLndpZHRoKCksIHBpeGVsRGF0YS5zaXplKCku
aGVpZ2h0KCksIDgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcGl4ZWxEYXRhLmJ5dGVzUGVyUm93KCksIHNSR0JDb2xvclNwYWNlUmVmKCks
IGtDR0JpdG1hcEJ5dGVPcmRlcjMyTGl0dGxlIHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3VwcG9ydEFscGhhQmxlbmQgPyBrQ0dJbWFn
ZUFscGhhUHJlbXVsdGlwbGllZEZpcnN0IDoga0NHSW1hZ2VBbHBoYU5vbmVTa2lwRmlyc3QpKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo
c3VwcG9ydEFscGhhQmxlbmQgPyBrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZEZpcnN0IDoga0NH
SW1hZ2VBbHBoYU5vbmVTa2lwRmlyc3QpKSk7CiAKLSAgICBDR0ltYWdlUmVmIGltYWdlID0gQ0dC
aXRtYXBDb250ZXh0Q3JlYXRlSW1hZ2UoYml0bWFwQ29udGV4dCk7Ci0gICAgQ0dDb250ZXh0RHJh
d0ltYWdlKG1fZGF0YS0+bV9jZ0NvbnRleHQuZ2V0KCksIGRzdFJlY3QsIGltYWdlKTsKKyAgICBh
dXRvIGltYWdlID0gYWRvcHRDRihDR0JpdG1hcENvbnRleHRDcmVhdGVJbWFnZShiaXRtYXBDb250
ZXh0LmdldCgpKSk7CisgICAgQ0dDb250ZXh0RHJhd0ltYWdlKG1fZGF0YS0+bV9jZ0NvbnRleHQu
Z2V0KCksIGRzdFJlY3QsIGltYWdlLmdldCgpKTsKICAgICAKICAgICAvLyBEZWxldGUgYWxsIG91
ciBqdW5rLgotICAgIENHSW1hZ2VSZWxlYXNlKGltYWdlKTsKLSAgICBDR0NvbnRleHRSZWxlYXNl
KGJpdG1hcENvbnRleHQpOwogICAgIDo6RGVsZXRlREMoaGRjKTsKIH0KIApAQCAtMTQ3LDE2ICsx
NDUsMTYgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdGb2N1c1JpbmcoY29uc3QgVmVjdG9y
PEZsb2F0UmVjdD4mIHJlY3RzLCBmbG9hdCB3aWR0aCwKICAgICBvZmZzZXQgKz0gcmFkaXVzOwog
ICAgIENHQ29sb3JSZWYgY29sb3JSZWYgPSBjb2xvci5pc1ZhbGlkKCkgPyBjYWNoZWRDR0NvbG9y
KGNvbG9yKSA6IG51bGxwdHI7CiAKLSAgICBDR011dGFibGVQYXRoUmVmIGZvY3VzUmluZ1BhdGgg
PSBDR1BhdGhDcmVhdGVNdXRhYmxlKCk7CisgICAgYXV0byBmb2N1c1JpbmdQYXRoID0gYWRvcHRD
RihDR1BhdGhDcmVhdGVNdXRhYmxlKCkpOwogICAgIHVuc2lnbmVkIHJlY3RDb3VudCA9IHJlY3Rz
LnNpemUoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcmVjdENvdW50OyBpKyspCi0g
ICAgICAgIENHUGF0aEFkZFJlY3QoZm9jdXNSaW5nUGF0aCwgMCwgQ0dSZWN0SW5zZXQocmVjdHNb
aV0sIC1vZmZzZXQsIC1vZmZzZXQpKTsKKyAgICAgICAgQ0dQYXRoQWRkUmVjdChmb2N1c1JpbmdQ
YXRoLmdldCgpLCAwLCBDR1JlY3RJbnNldChyZWN0c1tpXSwgLW9mZnNldCwgLW9mZnNldCkpOwog
CiAgICAgQ0dDb250ZXh0UmVmIGNvbnRleHQgPSBwbGF0Zm9ybUNvbnRleHQoKTsKICAgICBDR0Nv
bnRleHRTYXZlR1N0YXRlKGNvbnRleHQpOwogCiAgICAgQ0dDb250ZXh0QmVnaW5QYXRoKGNvbnRl
eHQpOwotICAgIENHQ29udGV4dEFkZFBhdGgoY29udGV4dCwgZm9jdXNSaW5nUGF0aCk7CisgICAg
Q0dDb250ZXh0QWRkUGF0aChjb250ZXh0LCBmb2N1c1JpbmdQYXRoLmdldCgpKTsKIAogICAgIC8v
IEZJWE1FOiBXZSBjbGVhciB0aGUgZmlsbCBjb2xvciBoZXJlIHRvIGF2b2lkIGdldHRpbmcgYSBi
bGFjayBmaWxsIHdoZW4gZHJhd2luZyB0aGUgZm9jdXMgcmluZy4KICAgICAvLyBGaW5kIG91dCBm
cm9tIENHIGlmIHRoaXMgaXMgdGhlaXIgYnVnLgpAQCAtMTY1LDggKzE2Myw2IEBAIHZvaWQgR3Jh
cGhpY3NDb250ZXh0OjpkcmF3Rm9jdXNSaW5nKGNvbnN0IFZlY3RvcjxGbG9hdFJlY3Q+JiByZWN0
cywgZmxvYXQgd2lkdGgsCiAgICAgQ0dDb250ZXh0U2V0Rm9jdXNSaW5nV2l0aENvbG9yKGNvbnRl
eHQsIHJhZGl1cywgY29sb3JSZWYsIDAsIChDRkRpY3Rpb25hcnlSZWYpMCk7CiAgICAgQ0dDb250
ZXh0RmlsbFBhdGgoY29udGV4dCk7CiAKLSAgICBDR1BhdGhSZWxlYXNlKGZvY3VzUmluZ1BhdGgp
OwotCiAgICAgQ0dDb250ZXh0UmVzdG9yZUdTdGF0ZShjb250ZXh0KTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQ0dXaW4uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQ0dXaW4uY3BwCmluZGV4
IDZkYWJmMjQxM2ZlZDM1NzU5YWIwMzk1M2RhNDM3MjJjOGQ0MTZmZDYuLmY4YTEwZDVjNDM2ZTcw
NjA4OTg3MDdiYThiNjU0NjQxY2UyYmRmNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNHV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VDR1dpbi5jcHAKQEAgLTcwLDEwICs3MCwxMCBAQCBi
b29sIEJpdG1hcEltYWdlOjpnZXRIQklUTUFQT2ZTaXplKEhCSVRNQVAgYm1wLCBjb25zdCBJbnRT
aXplKiBzaXplKQogICAgIEFTU0VSVChibXBJbmZvLmJtQml0c1BpeGVsID09IDMyKTsKICAgICBp
bnQgYnVmZmVyU2l6ZSA9IGJtcEluZm8uYm1XaWR0aEJ5dGVzICogYm1wSW5mby5ibUhlaWdodDsK
ICAgICAKLSAgICBDR0NvbnRleHRSZWYgY2dDb250ZXh0ID0gQ0dCaXRtYXBDb250ZXh0Q3JlYXRl
KGJtcEluZm8uYm1CaXRzLCBibXBJbmZvLmJtV2lkdGgsIGJtcEluZm8uYm1IZWlnaHQsCi0gICAg
ICAgIDgsIGJtcEluZm8uYm1XaWR0aEJ5dGVzLCBzUkdCQ29sb3JTcGFjZVJlZigpLCBrQ0dCaXRt
YXBCeXRlT3JkZXIzMkxpdHRsZSB8IGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkRmlyc3QpOwor
ICAgIGF1dG8gY2dDb250ZXh0ID0gYWRvcHRDRihDR0JpdG1hcENvbnRleHRDcmVhdGUoYm1wSW5m
by5ibUJpdHMsIGJtcEluZm8uYm1XaWR0aCwgYm1wSW5mby5ibUhlaWdodCwKKyAgICAgICAgOCwg
Ym1wSW5mby5ibVdpZHRoQnl0ZXMsIHNSR0JDb2xvclNwYWNlUmVmKCksIGtDR0JpdG1hcEJ5dGVP
cmRlcjMyTGl0dGxlIHwga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRGaXJzdCkpOwogICAKLSAg
ICBHcmFwaGljc0NvbnRleHQgZ2MoY2dDb250ZXh0KTsKKyAgICBHcmFwaGljc0NvbnRleHQgZ2Mo
Y2dDb250ZXh0LmdldCgpKTsKIAogICAgIEZsb2F0U2l6ZSBpbWFnZVNpemUgPSBCaXRtYXBJbWFn
ZTo6c2l6ZSgpOwogICAgIGlmIChzaXplKQpAQCAtODEsOSArODEsNiBAQCBib29sIEJpdG1hcElt
YWdlOjpnZXRIQklUTUFQT2ZTaXplKEhCSVRNQVAgYm1wLCBjb25zdCBJbnRTaXplKiBzaXplKQog
ICAgIGVsc2UKICAgICAgICAgZHJhdyhnYywgRmxvYXRSZWN0KDAuMGYsIDAuMGYsIGJtcEluZm8u
Ym1XaWR0aCwgYm1wSW5mby5ibUhlaWdodCksIEZsb2F0UmVjdCgwLjBmLCAwLjBmLCBpbWFnZVNp
emUud2lkdGgoKSwgaW1hZ2VTaXplLmhlaWdodCgpKSwgeyBDb21wb3NpdGVPcGVyYXRvcjo6Q29w
eSB9KTsKIAotICAgIC8vIERvIGNsZWFudXAKLSAgICBDR0NvbnRleHRSZWxlYXNlKGNnQ29udGV4
dCk7Ci0KICAgICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW9zL1VzZXJBZ2VudElPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lv
cy9Vc2VyQWdlbnRJT1MubW0KaW5kZXggM2E2MzQ0Y2VmNDM3ZjQzNTUxMmU0Yjk0MDU1NzQ5NzE0
OTMxZTJiYS4uM2I2ZGUxZWMwZjNmYzVkMTQyZGNlYzZhNWFhNmQzMWNjOGQ4MGU1NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1VzZXJBZ2VudElPUy5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVXNlckFnZW50SU9TLm1tCkBAIC04OSwxMSArODks
MTAgQEAgU3RyaW5nIHN0YW5kYXJkVXNlckFnZW50V2l0aEFwcGxpY2F0aW9uTmFtZShjb25zdCBT
dHJpbmcmIGFwcGxpY2F0aW9uTmFtZSwgY29uc3QKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGRl
cHJlY2F0ZSBhbmQgZXZlbnR1YWxseSByZW1vdmUgdGhpcyBvYnNvbGV0ZSBVQSBvdmVycmlkZTsK
ICAgICAvLyBzZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzky
NyBmb3IgZGV0YWlscy4KICAgICAvLyBDaGVjayB0byBzZWUgaWYgdGhlcmUgaXMgYSB1c2VyIGFn
ZW50IG92ZXJyaWRlIGZvciBhbGwgV2ViS2l0IGNsaWVudHMuCi0gICAgQ0ZQcm9wZXJ0eUxpc3RS
ZWYgb3ZlcnJpZGUgPSBDRlByZWZlcmVuY2VzQ29weUFwcFZhbHVlKENGU1RSKCJVc2VyQWdlbnQi
KSwgQ0ZTVFIoImNvbS5hcHBsZS5XZWJGb3VuZGF0aW9uIikpOworICAgIGF1dG8gb3ZlcnJpZGUg
PSBhZG9wdENGKENGUHJlZmVyZW5jZXNDb3B5QXBwVmFsdWUoQ0ZTVFIoIlVzZXJBZ2VudCIpLCBD
RlNUUigiY29tLmFwcGxlLldlYkZvdW5kYXRpb24iKSkpOwogICAgIGlmIChvdmVycmlkZSkgewot
ICAgICAgICBpZiAoQ0ZHZXRUeXBlSUQob3ZlcnJpZGUpID09IENGU3RyaW5nR2V0VHlwZUlEKCkp
Ci0gICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8TlNTdHJpbmcgKj4oQ0ZCcmlkZ2luZ1Jl
bGVhc2Uob3ZlcnJpZGUpKTsKLSAgICAgICAgQ0ZSZWxlYXNlKG92ZXJyaWRlKTsKKyAgICAgICAg
aWYgKENGR2V0VHlwZUlEKG92ZXJyaWRlLmdldCgpKSA9PSBDRlN0cmluZ0dldFR5cGVJRCgpKQor
ICAgICAgICAgICAgcmV0dXJuIChfX2JyaWRnZSBOU1N0cmluZyAqKW92ZXJyaWRlLmdldCgpOwog
ICAgIH0KIAogICAgIFN0cmluZyBvc1ZlcnNpb24gPSB1c2VyQWdlbnRPU1ZlcnNpb24uaXNFbXB0
eSgpICA/IHN5c3RlbU1hcmtldGluZ1ZlcnNpb25Gb3JVc2VyQWdlbnRTdHJpbmcoKSA6IHVzZXJB
Z2VudE9TVmVyc2lvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93
YWsvV2ViQ29yZVRocmVhZC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV2Vi
Q29yZVRocmVhZC5tbQppbmRleCA2NjAwNzZhZGY3NjYzNzRmNDlkNWVlNWE5YjI5M2U5OWQ2NGZj
ZGRjLi45MzJjNzgyYzZiY2IzYjJkNjdlOTM0MDJlYzQyMWEzNDJkMzZiZjQxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dlYkNvcmVUaHJlYWQubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkLm1tCkBAIC0yNjYs
MTAgKzI2Niw4IEBAIHN0YXRpYyB2b2lkIFNlbmREZWxlZ2F0ZU1lc3NhZ2UoUmV0YWluUHRyPE5T
SW52b2NhdGlvbj4mJiBpbnZvY2F0aW9uKQogICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAg
ICAgICAgICAgICAgZGVsZWdhdGVJbmZvcm1hdGlvbiA9IE5TU3RyaW5nRnJvbVNlbGVjdG9yKFtk
ZWxlZ2F0ZUludm9jYXRpb24oKSBzZWxlY3Rvcl0pOwogICAgIAotICAgICAgICAgICAgICAgIENG
U3RyaW5nUmVmIG1vZGUgPSBDRlJ1bkxvb3BDb3B5Q3VycmVudE1vZGUoQ0ZSdW5Mb29wR2V0TWFp
bigpKTsKLSAgICAgICAgICAgICAgICBOU0xvZyhAIiVzOiBkZWxlZ2F0ZSAoJUApIGZhaWxlZCB0
byByZXR1cm4gYWZ0ZXIgd2FpdGluZyAlZiBzZWNvbmRzLiBtYWluIHJ1biBsb29wIG1vZGU6ICVA
IiwgX19QUkVUVFlfRlVOQ1RJT05fXywgZGVsZWdhdGVJbmZvcm1hdGlvbiwgRGVsZWdhdGVXYWl0
SW50ZXJ2YWwuc2Vjb25kcygpLCBtb2RlKTsKLSAgICAgICAgICAgICAgICBpZiAobW9kZSkKLSAg
ICAgICAgICAgICAgICAgICAgQ0ZSZWxlYXNlKG1vZGUpOworICAgICAgICAgICAgICAgIGF1dG8g
bW9kZSA9IGFkb3B0Q0YoQ0ZSdW5Mb29wQ29weUN1cnJlbnRNb2RlKENGUnVuTG9vcEdldE1haW4o
KSkpOworICAgICAgICAgICAgICAgIE5TTG9nKEAiJXM6IGRlbGVnYXRlICglQCkgZmFpbGVkIHRv
IHJldHVybiBhZnRlciB3YWl0aW5nICVmIHNlY29uZHMuIG1haW4gcnVuIGxvb3AgbW9kZTogJUAi
LCBfX1BSRVRUWV9GVU5DVElPTl9fLCBkZWxlZ2F0ZUluZm9ybWF0aW9uLCBEZWxlZ2F0ZVdhaXRJ
bnRlcnZhbC5zZWNvbmRzKCksIG1vZGUuZ2V0KCkpOwogICAgICAgICAgICAgfQogICAgICAgICB9
CiAgICAgICAgIGRlbGVnYXRlTG9jay51bmxvY2soKTsKQEAgLTYzNCwxNiArNjMyLDE0IEBAIHN0
YXRpYyB2b2lkKiBSdW5XZWJUaHJlYWQodm9pZCopCiAgICAgd2ViVGhyZWFkUnVuTG9vcCA9IENG
UnVuTG9vcEdldEN1cnJlbnQoKTsKICAgICB3ZWJUaHJlYWROU1J1bkxvb3AoKSA9IFtOU1J1bkxv
b3AgY3VycmVudFJ1bkxvb3BdOwogCi0gICAgQ0ZSdW5Mb29wT2JzZXJ2ZXJSZWYgd2ViUnVuTG9v
cExvY2tPYnNlcnZlclJlZiA9IENGUnVuTG9vcE9ic2VydmVyQ3JlYXRlKG51bGxwdHIsIGtDRlJ1
bkxvb3BCZWZvcmVUaW1lcnMgfCBrQ0ZSdW5Mb29wQmVmb3JlU291cmNlcyB8IGtDRlJ1bkxvb3BB
ZnRlcldhaXRpbmcsIFlFUywgMCwgV2ViUnVuTG9vcExvY2ssIG51bGxwdHIpOwotICAgIENGUnVu
TG9vcEFkZE9ic2VydmVyKHdlYlRocmVhZFJ1bkxvb3AsIHdlYlJ1bkxvb3BMb2NrT2JzZXJ2ZXJS
ZWYsIGtDRlJ1bkxvb3BDb21tb25Nb2Rlcyk7Ci0gICAgQ0ZSZWxlYXNlKHdlYlJ1bkxvb3BMb2Nr
T2JzZXJ2ZXJSZWYpOworICAgIGF1dG8gd2ViUnVuTG9vcExvY2tPYnNlcnZlclJlZiA9IGFkb3B0
Q0YoQ0ZSdW5Mb29wT2JzZXJ2ZXJDcmVhdGUobnVsbHB0ciwga0NGUnVuTG9vcEJlZm9yZVRpbWVy
cyB8IGtDRlJ1bkxvb3BCZWZvcmVTb3VyY2VzIHwga0NGUnVuTG9vcEFmdGVyV2FpdGluZywgWUVT
LCAwLCBXZWJSdW5Mb29wTG9jaywgbnVsbHB0cikpOworICAgIENGUnVuTG9vcEFkZE9ic2VydmVy
KHdlYlRocmVhZFJ1bkxvb3AsIHdlYlJ1bkxvb3BMb2NrT2JzZXJ2ZXJSZWYuZ2V0KCksIGtDRlJ1
bkxvb3BDb21tb25Nb2Rlcyk7CiAgICAgCiAgICAgV2ViVGhyZWFkSW5pdFJ1blF1ZXVlKCk7CiAK
ICAgICAvLyBXZSBtdXN0IGhhdmUgdGhlIGxvY2sgd2hlbiBDQSBwYWludHMgaW4gdGhlIHdlYiB0
aHJlYWQuIENBIGNvbW1pdHMgYXQgMjAwMDAwMCBzbyB3ZSB1c2UgbGFyZ2VyIG9yZGVyIG51bWJl
ciB0aGFuIHRoYXQgdG8gZnJlZSB0aGUgbG9jay4KLSAgICBDRlJ1bkxvb3BPYnNlcnZlclJlZiB3
ZWJSdW5Mb29wVW5sb2NrT2JzZXJ2ZXJSZWYgPSBDRlJ1bkxvb3BPYnNlcnZlckNyZWF0ZShudWxs
cHRyLCBrQ0ZSdW5Mb29wQmVmb3JlV2FpdGluZyB8IGtDRlJ1bkxvb3BFeGl0LCBZRVMsIDI1MDAw
MDAsIFdlYlJ1bkxvb3BVbmxvY2ssIG51bGxwdHIpOyAgICAKLSAgICBDRlJ1bkxvb3BBZGRPYnNl
cnZlcih3ZWJUaHJlYWRSdW5Mb29wLCB3ZWJSdW5Mb29wVW5sb2NrT2JzZXJ2ZXJSZWYsIGtDRlJ1
bkxvb3BDb21tb25Nb2Rlcyk7Ci0gICAgQ0ZSZWxlYXNlKHdlYlJ1bkxvb3BVbmxvY2tPYnNlcnZl
clJlZik7ICAgIAorICAgIGF1dG8gd2ViUnVuTG9vcFVubG9ja09ic2VydmVyUmVmID0gYWRvcHRD
RihDRlJ1bkxvb3BPYnNlcnZlckNyZWF0ZShudWxscHRyLCBrQ0ZSdW5Mb29wQmVmb3JlV2FpdGlu
ZyB8IGtDRlJ1bkxvb3BFeGl0LCBZRVMsIDI1MDAwMDAsIFdlYlJ1bkxvb3BVbmxvY2ssIG51bGxw
dHIpKTsKKyAgICBDRlJ1bkxvb3BBZGRPYnNlcnZlcih3ZWJUaHJlYWRSdW5Mb29wLCB3ZWJSdW5M
b29wVW5sb2NrT2JzZXJ2ZXJSZWYuZ2V0KCksIGtDRlJ1bkxvb3BDb21tb25Nb2Rlcyk7CiAKICAg
ICBDRlJ1bkxvb3BTb3VyY2VDb250ZXh0IFJlbGVhc2VTb3VyY2VDb250ZXh0ID0gezAsIG51bGxw
dHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIs
IG51bGxwdHIsIEhhbmRsZVdlYlRocmVhZFJlbGVhc2VTb3VyY2V9OwogICAgIFdlYlRocmVhZFJl
bGVhc2VTb3VyY2UgPSBDRlJ1bkxvb3BTb3VyY2VDcmVhdGUobnVsbHB0ciwgLTEsICZSZWxlYXNl
U291cmNlQ29udGV4dCk7CkBAIC04MjMsOSArODE5LDggQEAgdm9pZCBXZWJUaHJlYWRVbmxvY2tH
dWFyZEZvck1haWwodm9pZCkKIHsKICAgICBBU1NFUlQoIVdlYlRocmVhZElzQ3VycmVudCgpKTsK
IAotICAgIENGUnVuTG9vcE9ic2VydmVyUmVmIG1haW5SdW5Mb29wVW5sb2NrR3VhcmRPYnNlcnZl
ciA9IENGUnVuTG9vcE9ic2VydmVyQ3JlYXRlKG51bGxwdHIsIGtDRlJ1bkxvb3BFbnRyeSwgWUVT
LCAwLCBNYWluUnVuTG9vcFVubG9ja0d1YXJkLCBudWxscHRyKTsKLSAgICBDRlJ1bkxvb3BBZGRP
YnNlcnZlcihDRlJ1bkxvb3BHZXRNYWluKCksIG1haW5SdW5Mb29wVW5sb2NrR3VhcmRPYnNlcnZl
ciwga0NGUnVuTG9vcENvbW1vbk1vZGVzKTsKLSAgICBDRlJlbGVhc2UobWFpblJ1bkxvb3BVbmxv
Y2tHdWFyZE9ic2VydmVyKTsKKyAgICBhdXRvIG1haW5SdW5Mb29wVW5sb2NrR3VhcmRPYnNlcnZl
ciA9IGFkb3B0Q0YoQ0ZSdW5Mb29wT2JzZXJ2ZXJDcmVhdGUobnVsbHB0ciwga0NGUnVuTG9vcEVu
dHJ5LCBZRVMsIDAsIE1haW5SdW5Mb29wVW5sb2NrR3VhcmQsIG51bGxwdHIpKTsKKyAgICBDRlJ1
bkxvb3BBZGRPYnNlcnZlcihDRlJ1bkxvb3BHZXRNYWluKCksIG1haW5SdW5Mb29wVW5sb2NrR3Vh
cmRPYnNlcnZlci5nZXQoKSwga0NGUnVuTG9vcENvbW1vbk1vZGVzKTsKIH0KIAogdm9pZCBfV2Vi
VGhyZWFkVW5sb2NrKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Q
bGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNYWMubW0KaW5kZXggMjk1OGYxYmNlMzllY2Vj
OTg2ZGI4ODUyOWYxNThkNzIyZmFkNjZjYS4uYTI4NWMyMmIyMjExY2ZhNjkxYThlMjhiMmQ5MTA5
NjlkOTkwNmU4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRm
b3JtU3BlZWNoU3ludGhlc2l6ZXJNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNYWMubW0KQEAgLTIxNCwxMiArMjE0LDEyIEBA
IFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI6On5QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyKCkK
ICAgICBbbV9wbGF0Zm9ybVNwZWVjaFdyYXBwZXIuZ2V0KCkgaW52YWxpZGF0ZV07CiB9CiAKLXN0
YXRpYyBOU0FycmF5ICpzcGVlY2hTeW50aGVzaXNHZXRWb2ljZUlkZW50aWZpZXJzKCkKK3N0YXRp
YyBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gc3BlZWNoU3ludGhlc2lzR2V0Vm9pY2VJZGVudGlmaWVy
cygpCiB7CiAgICAgLy8gR2V0IGFsbCB0aGUgdm9pY2VzIG9mZmVyZWQgYnkgVFRTLgogICAgIC8v
IEJ5IGRlZmF1bHQgc3BlZWNoIG9ubHkgcmV0dXJucyAicHJlbWl1bSIgdm9pY2VzLCB3aGljaCBk
b2VzIG5vdCBpbmNsdWRlIGFsbCB0aGUKICAgICAvLyBpbnRlcm5hdGlvbmFsIHZvaWNlcy4gVGhp
cyBhbGxvd3MgdXMgdG8gb2ZmZXIgc3BlZWNoIHN5bnRoZXNpcyBmb3IgYWxsIHN1cHBvcnRlZCBs
YW5ndWFnZXMuCi0gICAgcmV0dXJuIENGQnJpZGdpbmdSZWxlYXNlKENvcHlTcGVlY2hTeW50aGVz
aXNWb2ljZXNGb3JNb2RlKChfX2JyaWRnZSBDRkFycmF5UmVmKUBbIEAiVm9pY2VHcm91cERlZmF1
bHQiLCBAIlZvaWNlR3JvdXBDb21wYWN0IiBdKSk7CisgICAgcmV0dXJuIGFkb3B0Q0YoQ29weVNw
ZWVjaFN5bnRoZXNpc1ZvaWNlc0Zvck1vZGUoKF9fYnJpZGdlIENGQXJyYXlSZWYpQFsgQCJWb2lj
ZUdyb3VwRGVmYXVsdCIsIEAiVm9pY2VHcm91cENvbXBhY3QiIF0pKTsKIH0KIAogc3RhdGljIE5T
U3RyaW5nICpzcGVlY2hTeW50aGVzaXNHZXREZWZhdWx0Vm9pY2VJZGVudGlmaWVyRm9yTG9jYWxl
KE5TTG9jYWxlICp1c2VyTG9jYWxlKQpAQCAtMjI3LDE1ICsyMjcsMTUgQEAgc3RhdGljIE5TU3Ry
aW5nICpzcGVlY2hTeW50aGVzaXNHZXREZWZhdWx0Vm9pY2VJZGVudGlmaWVyRm9yTG9jYWxlKE5T
TG9jYWxlICp1c2UKICAgICBpZiAoIXVzZXJMb2NhbGUpCiAgICAgICAgIHJldHVybiBuaWw7CiAK
LSAgICByZXR1cm4gKF9fYnJpZGdlIE5TU3RyaW5nICopR2V0SWRlbnRpZmllclN0cmluZ0ZvclBy
ZWZlcnJlZFZvaWNlSW5MaXN0V2l0aExvY2FsZSgoX19icmlkZ2UgQ0ZBcnJheVJlZilzcGVlY2hT
eW50aGVzaXNHZXRWb2ljZUlkZW50aWZpZXJzKCksIChfX2JyaWRnZSBDRkxvY2FsZVJlZil1c2Vy
TG9jYWxlKTsKKyAgICByZXR1cm4gKF9fYnJpZGdlIE5TU3RyaW5nICopR2V0SWRlbnRpZmllclN0
cmluZ0ZvclByZWZlcnJlZFZvaWNlSW5MaXN0V2l0aExvY2FsZShzcGVlY2hTeW50aGVzaXNHZXRW
b2ljZUlkZW50aWZpZXJzKCkuZ2V0KCksIChfX2JyaWRnZSBDRkxvY2FsZVJlZil1c2VyTG9jYWxl
KTsKIH0KIAogdm9pZCBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyOjppbml0aWFsaXplVm9pY2VM
aXN0KCkKIHsKLSAgICBOU0FycmF5ICphdmFpbGFibGVWb2ljZXMgPSBzcGVlY2hTeW50aGVzaXNH
ZXRWb2ljZUlkZW50aWZpZXJzKCk7Ci0gICAgTlNVSW50ZWdlciBjb3VudCA9IFthdmFpbGFibGVW
b2ljZXMgY291bnRdOworICAgIGF1dG8gYXZhaWxhYmxlVm9pY2VzID0gc3BlZWNoU3ludGhlc2lz
R2V0Vm9pY2VJZGVudGlmaWVycygpOworICAgIE5TVUludGVnZXIgY291bnQgPSBbKF9fYnJpZGdl
IE5TQXJyYXkgKilhdmFpbGFibGVWb2ljZXMuZ2V0KCkgY291bnRdOwogICAgIGZvciAoTlNVSW50
ZWdlciBrID0gMDsgayA8IGNvdW50OyBrKyspIHsKLSAgICAgICAgTlNTdHJpbmcgKnZvaWNlTmFt
ZSA9IFthdmFpbGFibGVWb2ljZXMgb2JqZWN0QXRJbmRleDprXTsKKyAgICAgICAgTlNTdHJpbmcg
KnZvaWNlTmFtZSA9IFsoX19icmlkZ2UgTlNBcnJheSAqKWF2YWlsYWJsZVZvaWNlcy5nZXQoKSBv
YmplY3RBdEluZGV4OmtdOwogICAgICAgICBOU0RpY3Rpb25hcnkgKmF0dHJpYnV0ZXMgPSBbTlNT
cGVlY2hTeW50aGVzaXplciBhdHRyaWJ1dGVzRm9yVm9pY2U6dm9pY2VOYW1lXTsKIAogICAgICAg
ICBOU1N0cmluZyAqdm9pY2VVUkkgPSBbYXR0cmlidXRlcyBvYmplY3RGb3JLZXk6TlNWb2ljZUlk
ZW50aWZpZXJdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsdWdp
bkJsb2NrbGlzdC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbHVnaW5CbG9ja2xp
c3QubW0KaW5kZXggYTgwYjRhZmVjNzYxZDg3OTg3ZmY5MTIwNzM0NjBiOTM5ZTQwZjc0Zi4uMTM2
ZjZlZGY2OWI0ZGM2ZGQ3OTJiYTEzYzRjOGZjZGVjOGQ4ZTQxYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsdWdpbkJsb2NrbGlzdC5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvUGx1Z2luQmxvY2tsaXN0Lm1tCkBAIC02OSw4ICs2OSw4IEBAIGJv
b2wgUGx1Z2luQmxvY2tsaXN0Ojppc1BsdWdpblVwZGF0ZUF2YWlsYWJsZShOU1N0cmluZyAqYnVu
ZGxlSWRlbnRpZmllcikKIAogc3RkOjp1bmlxdWVfcHRyPFBsdWdpbkJsb2NrbGlzdD4gUGx1Z2lu
QmxvY2tsaXN0OjpjcmVhdGUoTlNEaWN0aW9uYXJ5ICpwcm9wZXJ0eUxpc3QpCiB7Ci0gICAgQ0ZE
aWN0aW9uYXJ5UmVmIHN5c3RlbVZlcnNpb25EaWN0aW9uYXJ5ID0gX0NGQ29weVN5c3RlbVZlcnNp
b25EaWN0aW9uYXJ5KCk7Ci0gICAgQ0ZTdHJpbmdSZWYgb3NWZXJzaW9uID0gc3RhdGljX2Nhc3Q8
Q0ZTdHJpbmdSZWY+KENGRGljdGlvbmFyeUdldFZhbHVlKHN5c3RlbVZlcnNpb25EaWN0aW9uYXJ5
LCBfa0NGU3lzdGVtVmVyc2lvblByb2R1Y3RWZXJzaW9uS2V5KSk7CisgICAgYXV0byBzeXN0ZW1W
ZXJzaW9uRGljdGlvbmFyeSA9IGFkb3B0Q0YoX0NGQ29weVN5c3RlbVZlcnNpb25EaWN0aW9uYXJ5
KCkpOworICAgIENGU3RyaW5nUmVmIG9zVmVyc2lvbiA9IHN0YXRpY19jYXN0PENGU3RyaW5nUmVm
PihDRkRpY3Rpb25hcnlHZXRWYWx1ZShzeXN0ZW1WZXJzaW9uRGljdGlvbmFyeS5nZXQoKSwgX2tD
RlN5c3RlbVZlcnNpb25Qcm9kdWN0VmVyc2lvbktleSkpOwogCiAgICAgTlNEaWN0aW9uYXJ5ICpk
aWN0aW9uYXJ5ID0gW3Byb3BlcnR5TGlzdCBvYmplY3RGb3JLZXk6QCJQbHVnSW5CbG9ja2xpc3Qi
XTsKIApAQCAtMTEyLDggKzExMiw2IEBAIHN0ZDo6dW5pcXVlX3B0cjxQbHVnaW5CbG9ja2xpc3Q+
IFBsdWdpbkJsb2NrbGlzdDo6Y3JlYXRlKE5TRGljdGlvbmFyeSAqcHJvcGVydHlMCiAgICAgICAg
IH0KICAgICB9CiAKLSAgICBDRlJlbGVhc2Uoc3lzdGVtVmVyc2lvbkRpY3Rpb25hcnkpOwotCiAg
ICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxQbHVnaW5CbG9ja2xpc3Q+KG5ldyBQbHVnaW5CbG9j
a2xpc3QoYnVuZGxlSURUb01pbmltdW1TZWN1cmVWZXJzaW9uLCBidW5kbGVJRFRvTWluaW11bUNv
bXBhdGlibGVWZXJzaW9uLCBidW5kbGVJRFRvQmxvY2tlZFZlcnNpb25zLCBidW5kbGVJRHNXaXRo
QXZhaWxhYmxlVXBkYXRlcykpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvV2ViR0xCbG9ja2xpc3QubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
V2ViR0xCbG9ja2xpc3QubW0KaW5kZXggNmMxZDI2ZTQ3OWEwMjgxN2JkZDViMTg2ZmFhMmFhNzZh
NWVjYmRiYy4uZDA0ZWUyMTc0ZDFkYmM3N2Q3Y2FlODVhM2ZhYTI1YjAxODE1Nzg0NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkdMQmxvY2tsaXN0Lm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJHTEJsb2NrbGlzdC5tbQpAQCAtMTY4LDEw
ICsxNjgsOSBAQCBzdGF0aWMgYm9vbCBtYXRjaGVzQnVpbGRJbmZvKE9TQnVpbGRJbmZvIG1hY2hp
bmVJbmZvLCBPU0J1aWxkSW5mbyBibG9ja0luZm8sIFdlYgogCiBzdGQ6OnVuaXF1ZV9wdHI8V2Vi
R0xCbG9ja2xpc3Q+IFdlYkdMQmxvY2tsaXN0OjpjcmVhdGUoTlNEaWN0aW9uYXJ5ICpwcm9wZXJ0
eUxpc3QpCiB7Ci0gICAgQ0ZEaWN0aW9uYXJ5UmVmIHN5c3RlbVZlcnNpb25EaWN0aW9uYXJ5ID0g
X0NGQ29weVN5c3RlbVZlcnNpb25EaWN0aW9uYXJ5KCk7Ci0gICAgQ0ZTdHJpbmdSZWYgb3NCdWls
ZCA9IHN0YXRpY19jYXN0PENGU3RyaW5nUmVmPihDRkRpY3Rpb25hcnlHZXRWYWx1ZShzeXN0ZW1W
ZXJzaW9uRGljdGlvbmFyeSwgX2tDRlN5c3RlbVZlcnNpb25CdWlsZFZlcnNpb25LZXkpKTsKKyAg
ICBhdXRvIHN5c3RlbVZlcnNpb25EaWN0aW9uYXJ5ID0gYWRvcHRDRihfQ0ZDb3B5U3lzdGVtVmVy
c2lvbkRpY3Rpb25hcnkoKSk7CisgICAgQ0ZTdHJpbmdSZWYgb3NCdWlsZCA9IHN0YXRpY19jYXN0
PENGU3RyaW5nUmVmPihDRkRpY3Rpb25hcnlHZXRWYWx1ZShzeXN0ZW1WZXJzaW9uRGljdGlvbmFy
eS5nZXQoKSwgX2tDRlN5c3RlbVZlcnNpb25CdWlsZFZlcnNpb25LZXkpKTsKICAgICBPU0J1aWxk
SW5mbyBidWlsZEluZm8gPSBidWlsZEluZm9Gcm9tT1NCdWlsZFN0cmluZygoX19icmlkZ2UgTlNT
dHJpbmcgKilvc0J1aWxkKTsKLSAgICBDRlJlbGVhc2Uoc3lzdGVtVmVyc2lvbkRpY3Rpb25hcnkp
OwogCiAgICAgaWYgKCFidWlsZEluZm8ubWFqb3IpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9B
dWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXJlY29yZGVyL2NvY29hL0F1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5tbQppbmRleCA3
ZTJmNmFhNTJkY2RlMzIxNDcwMTU5MTY2ZTU0OGEwY2M5YWY0ZjUzLi5jNzlhNDc5NjI0MDJiYjEz
MjkzM2M4N2JmZTk4ZDIzN2Y1NmVlMDY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL0F1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL0F1ZGlvU2Ft
cGxlQnVmZmVyQ29tcHJlc3Nvci5tbQpAQCAtMjI3LDkgKzIyNyw4IEBAIHZvaWQgQXVkaW9TYW1w
bGVCdWZmZXJDb21wcmVzc29yOjphdHRhY2hQcmltaW5nVHJpbXNJZk5lZWRlZChDTVNhbXBsZUJ1
ZmZlclJlZiBiCiAgICAgaWYgKENNVElNRV9DT01QQVJFX0lOTElORShrQ01UaW1lWmVybywgPCwg
bV9yZW1haW5pbmdQcmltZUR1cmF0aW9uKSkgewogICAgICAgICBDTVRpbWUgc2FtcGxlRHVyYXRp
b24gPSBDTVNhbXBsZUJ1ZmZlckdldER1cmF0aW9uKGJ1ZmZlcik7CiAgICAgICAgIENNVGltZSB0
cmltRHVyYXRpb24gPSBDTVRpbWVNaW5pbXVtKHNhbXBsZUR1cmF0aW9uLCBtX3JlbWFpbmluZ1By
aW1lRHVyYXRpb24pOwotICAgICAgICBDRkRpY3Rpb25hcnlSZWYgdHJpbUF0U3RhcnREaWN0ID0g
Q01UaW1lQ29weUFzRGljdGlvbmFyeSh0cmltRHVyYXRpb24sIGtDRkFsbG9jYXRvckRlZmF1bHQp
OwotICAgICAgICBDTVNldEF0dGFjaG1lbnQoYnVmZmVyLCBrQ01TYW1wbGVCdWZmZXJBdHRhY2ht
ZW50S2V5X1RyaW1EdXJhdGlvbkF0U3RhcnQsIHRyaW1BdFN0YXJ0RGljdCwga0NNQXR0YWNobWVu
dE1vZGVfU2hvdWxkUHJvcGFnYXRlKTsKLSAgICAgICAgQ0ZSZWxlYXNlKHRyaW1BdFN0YXJ0RGlj
dCk7CisgICAgICAgIGF1dG8gdHJpbUF0U3RhcnREaWN0ID0gYWRvcHRDRihDTVRpbWVDb3B5QXNE
aWN0aW9uYXJ5KHRyaW1EdXJhdGlvbiwga0NGQWxsb2NhdG9yRGVmYXVsdCkpOworICAgICAgICBD
TVNldEF0dGFjaG1lbnQoYnVmZmVyLCBrQ01TYW1wbGVCdWZmZXJBdHRhY2htZW50S2V5X1RyaW1E
dXJhdGlvbkF0U3RhcnQsIHRyaW1BdFN0YXJ0RGljdC5nZXQoKSwga0NNQXR0YWNobWVudE1vZGVf
U2hvdWxkUHJvcGFnYXRlKTsKICAgICAgICAgbV9yZW1haW5pbmdQcmltZUR1cmF0aW9uID0gQ01U
aW1lU3VidHJhY3QobV9yZW1haW5pbmdQcmltZUR1cmF0aW9uLCB0cmltRHVyYXRpb24pOwogICAg
IH0KIH0KQEAgLTM0Nyw3ICszNDYsNyBAQCBPU1N0YXR1cyBBdWRpb1NhbXBsZUJ1ZmZlckNvbXBy
ZXNzb3I6OnByb3ZpZGVTb3VyY2VEYXRhTnVtT3V0cHV0UGFja2V0cyhVSW50MzIqCiAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgICAgICAgICAgYXV0byBzYW1wbGVCdWZmZXIg
PSBhZG9wdENGKChDTVNhbXBsZUJ1ZmZlclJlZikoY29uc3RfY2FzdDx2b2lkKj4oQ01CdWZmZXJR
dWV1ZURlcXVldWVBbmRSZXRhaW4obV9pbnB1dEJ1ZmZlclF1ZXVlLmdldCgpKSkpKTsKLSAgICAg
ICAgICAgICAgICBtX3NhbXBsZUJsb2NrQnVmZmVyID0gYWRvcHRDRigoQ01CbG9ja0J1ZmZlclJl
ZikoY29uc3RfY2FzdDx2b2lkKj4oQ0ZSZXRhaW4oQ01TYW1wbGVCdWZmZXJHZXREYXRhQnVmZmVy
KHNhbXBsZUJ1ZmZlci5nZXQoKSkpKSkpOworICAgICAgICAgICAgICAgIG1fc2FtcGxlQmxvY2tC
dWZmZXIgPSBDTVNhbXBsZUJ1ZmZlckdldERhdGFCdWZmZXIoc2FtcGxlQnVmZmVyLmdldCgpKTsK
ICAgICAgICAgICAgICAgICBpZiAoIW1fc2FtcGxlQmxvY2tCdWZmZXIpIHsKICAgICAgICAgICAg
ICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0sICJBdWRpb1NhbXBsZUJ1ZmZl
ckNvbXByZXNzb3IgQ01TYW1wbGVCdWZmZXJHZXREYXRhQnVmZmVyIGZhaWxlZCIpOwogICAgICAg
ICAgICAgICAgICAgICBtX3NhbXBsZUJsb2NrQnVmZmVyU2l6ZSA9IDA7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL1ZpZGVvU2FtcGxlQnVm
ZmVyQ29tcHJlc3Nvci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIv
Y29jb2EvVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tCmluZGV4IDI4NzE1MTM4MDdjYWQ2
OGNiZGZjM2ZiZTRlZWIxN2Y0MDYzMzkxOTMuLmUwM2U3NzBmMGNhYTliZGM2YjE2ZDVhYzc0YmIz
Nzg2ZGY4ZjRhZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVj
b3JkZXIvY29jb2EvVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvVmlkZW9TYW1wbGVCdWZmZXJDb21w
cmVzc29yLm1tCkBAIC0xMDksOSArMTA5LDggQEAgdm9pZCBWaWRlb1NhbXBsZUJ1ZmZlckNvbXBy
ZXNzb3I6OnZpZGVvQ29tcHJlc3Npb25DYWxsYmFjayh2b2lkICpyZWZDb24sIHZvaWQqLAogc3Rh
dGljIGlubGluZSBPU1N0YXR1cyBzZXRDb21wcmVzc2lvblNlc3Npb25Qcm9wZXJ0eShWVENvbXBy
ZXNzaW9uU2Vzc2lvblJlZiB2dFNlc3Npb24sIENGU3RyaW5nUmVmIGtleSwgdWludDMyX3QgdmFs
dWUpCiB7CiAgICAgaW50NjRfdCB2YWx1ZTY0ID0gdmFsdWU7Ci0gICAgQ0ZOdW1iZXJSZWYgY2ZW
YWx1ZSA9IENGTnVtYmVyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGtDRk51bWJlclNJbnQ2
NFR5cGUsICZ2YWx1ZTY0KTsKLSAgICBPU1N0YXR1cyBzdGF0dXMgPSBWVFNlc3Npb25TZXRQcm9w
ZXJ0eSh2dFNlc3Npb24sIGtleSwgY2ZWYWx1ZSk7Ci0gICAgQ0ZSZWxlYXNlKGNmVmFsdWUpOwor
ICAgIGF1dG8gY2ZWYWx1ZSA9IGFkb3B0Q0YoQ0ZOdW1iZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVm
YXVsdCwga0NGTnVtYmVyU0ludDY0VHlwZSwgJnZhbHVlNjQpKTsKKyAgICBPU1N0YXR1cyBzdGF0
dXMgPSBWVFNlc3Npb25TZXRQcm9wZXJ0eSh2dFNlc3Npb24sIGtleSwgY2ZWYWx1ZS5nZXQoKSk7
CiAgICAgcmV0dXJuIHN0YXR1czsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jZi9Gb3JtRGF0YVN0cmVhbUNGTmV0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY2YvRm9ybURhdGFTdHJlYW1DRk5ldC5jcHAKaW5kZXggM2Y2OGVh
ZDM0MTI2MmY1NmJmZTIyMTIwMzJiZTY4Mzc2ZThjODA3Zi4uZDdkZDYzZmVhYmZiMDNjMDE5MmYy
NDlmODY4YTM0MTAwM2NhNDVmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jZi9Gb3JtRGF0YVN0cmVhbUNGTmV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NmL0Zvcm1EYXRhU3RyZWFtQ0ZOZXQuY3BwCkBAIC0xMDMsNyArMTAz
LDcgQEAgc3RydWN0IEZvcm1TdHJlYW1GaWVsZHMgewogICAgIEZvcm1EYXRhRm9yVXBsb2FkIGRh
dGE7CiAgICAgU2NoZWR1bGVQYWlySGFzaFNldCBzY2hlZHVsZWRSdW5Mb29wUGFpcnM7CiAgICAg
VmVjdG9yPEZvcm1EYXRhRWxlbWVudD4gcmVtYWluaW5nRWxlbWVudHM7IC8vIGluIHJldmVyc2Ug
b3JkZXIKLSAgICBDRlJlYWRTdHJlYW1SZWYgY3VycmVudFN0cmVhbSB7IG51bGxwdHIgfTsKKyAg
ICBSZXRhaW5QdHI8Q0ZSZWFkU3RyZWFtUmVmPiBjdXJyZW50U3RyZWFtOwogICAgIGxvbmcgbG9u
ZyBjdXJyZW50U3RyZWFtUmFuZ2VMZW5ndGggeyBCbG9iRGF0YUl0ZW06OnRvRW5kT2ZGaWxlIH07
CiAgICAgTWFsbG9jUHRyPGNoYXIsIFdURjo6VmVjdG9yTWFsbG9jPiBjdXJyZW50RGF0YTsKICAg
ICBDRlJlYWRTdHJlYW1SZWYgZm9ybVN0cmVhbSB7IG51bGxwdHIgfTsKQEAgLTExNywxMCArMTE3
LDkgQEAgc3RhdGljIHZvaWQgY2xvc2VDdXJyZW50U3RyZWFtKEZvcm1TdHJlYW1GaWVsZHMqIGZv
cm0pCiAgICAgQVNTRVJUKGZvcm0tPnN0cmVhbUlzQmVpbmdPcGVuZWRPckNsb3NlZExvY2suaXNI
ZWxkKCkpOwogCiAgICAgaWYgKGZvcm0tPmN1cnJlbnRTdHJlYW0pIHsKLSAgICAgICAgQ0ZSZWFk
U3RyZWFtQ2xvc2UoZm9ybS0+Y3VycmVudFN0cmVhbSk7Ci0gICAgICAgIENGUmVhZFN0cmVhbVNl
dENsaWVudChmb3JtLT5jdXJyZW50U3RyZWFtLCBrQ0ZTdHJlYW1FdmVudE5vbmUsIDAsIDApOwot
ICAgICAgICBDRlJlbGVhc2UoZm9ybS0+Y3VycmVudFN0cmVhbSk7Ci0gICAgICAgIGZvcm0tPmN1
cnJlbnRTdHJlYW0gPSAwOworICAgICAgICBDRlJlYWRTdHJlYW1DbG9zZShmb3JtLT5jdXJyZW50
U3RyZWFtLmdldCgpKTsKKyAgICAgICAgQ0ZSZWFkU3RyZWFtU2V0Q2xpZW50KGZvcm0tPmN1cnJl
bnRTdHJlYW0uZ2V0KCksIGtDRlN0cmVhbUV2ZW50Tm9uZSwgMCwgMCk7CisgICAgICAgIGZvcm0t
PmN1cnJlbnRTdHJlYW0gPSBudWxscHRyOwogICAgICAgICBmb3JtLT5jdXJyZW50U3RyZWFtUmFu
Z2VMZW5ndGggPSBCbG9iRGF0YUl0ZW06OnRvRW5kT2ZGaWxlOwogICAgIH0KICAgICBmb3JtLT5j
dXJyZW50RGF0YSA9IG51bGxwdHI7CkBAIC0xNDMsNyArMTQyLDcgQEAgc3RhdGljIGJvb2wgYWR2
YW5jZUN1cnJlbnRTdHJlYW0oRm9ybVN0cmVhbUZpZWxkcyogZm9ybSkKICAgICAgICAgW2Zvcm1d
IChWZWN0b3I8Y2hhcj4mIGJ5dGVzKSB7CiAgICAgICAgICAgICBzaXplX3Qgc2l6ZSA9IGJ5dGVz
LnNpemUoKTsKICAgICAgICAgICAgIE1hbGxvY1B0cjxjaGFyLCBXVEY6OlZlY3Rvck1hbGxvYz4g
ZGF0YSA9IGJ5dGVzLnJlbGVhc2VCdWZmZXIoKTsKLSAgICAgICAgICAgIGZvcm0tPmN1cnJlbnRT
dHJlYW0gPSBDRlJlYWRTdHJlYW1DcmVhdGVXaXRoQnl0ZXNOb0NvcHkoMCwgcmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBVSW50OCo+KGRhdGEuZ2V0KCkpLCBzaXplLCBrQ0ZBbGxvY2F0b3JOdWxsKTsK
KyAgICAgICAgICAgIGZvcm0tPmN1cnJlbnRTdHJlYW0gPSBhZG9wdENGKENGUmVhZFN0cmVhbUNy
ZWF0ZVdpdGhCeXRlc05vQ29weSgwLCByZWludGVycHJldF9jYXN0PGNvbnN0IFVJbnQ4Kj4oZGF0
YS5nZXQoKSksIHNpemUsIGtDRkFsbG9jYXRvck51bGwpKTsKICAgICAgICAgICAgIGZvcm0tPmN1
cnJlbnREYXRhID0gV1RGTW92ZShkYXRhKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAg
ICAgICB9LCBbZm9ybV0gKGNvbnN0IEZvcm1EYXRhRWxlbWVudDo6RW5jb2RlZEZpbGVEYXRhJiBm
aWxlRGF0YSkgewpAQCAtMTUyLDE0ICsxNTEsMTQgQEAgc3RhdGljIGJvb2wgYWR2YW5jZUN1cnJl
bnRTdHJlYW0oRm9ybVN0cmVhbUZpZWxkcyogZm9ybSkKICAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKICAgICAgICAgICAgIGNvbnN0IFN0cmluZyYgcGF0aCA9IGZpbGVEYXRhLmZpbGVu
YW1lOwotICAgICAgICAgICAgZm9ybS0+Y3VycmVudFN0cmVhbSA9IENGUmVhZFN0cmVhbUNyZWF0
ZVdpdGhGaWxlKDAsIEZpbGVTeXN0ZW06OnBhdGhBc1VSTChwYXRoKS5nZXQoKSk7CisgICAgICAg
ICAgICBmb3JtLT5jdXJyZW50U3RyZWFtID0gYWRvcHRDRihDRlJlYWRTdHJlYW1DcmVhdGVXaXRo
RmlsZSgwLCBGaWxlU3lzdGVtOjpwYXRoQXNVUkwocGF0aCkuZ2V0KCkpKTsKICAgICAgICAgICAg
IGlmICghZm9ybS0+Y3VycmVudFN0cmVhbSkgewogICAgICAgICAgICAgICAgIC8vIFRoZSBmaWxl
IG11c3QgaGF2ZSBiZWVuIHJlbW92ZWQgb3IgYmVjb21lIHVucmVhZGFibGUuCiAgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKGZpbGVE
YXRhLmZpbGVTdGFydCA+IDApIHsKICAgICAgICAgICAgICAgICBSZXRhaW5QdHI8Q0ZOdW1iZXJS
ZWY+IHBvc2l0aW9uID0gYWRvcHRDRihDRk51bWJlckNyZWF0ZSgwLCBrQ0ZOdW1iZXJMb25nTG9u
Z1R5cGUsICZmaWxlRGF0YS5maWxlU3RhcnQpKTsKLSAgICAgICAgICAgICAgICBDRlJlYWRTdHJl
YW1TZXRQcm9wZXJ0eShmb3JtLT5jdXJyZW50U3RyZWFtLCBrQ0ZTdHJlYW1Qcm9wZXJ0eUZpbGVD
dXJyZW50T2Zmc2V0LCBwb3NpdGlvbi5nZXQoKSk7CisgICAgICAgICAgICAgICAgQ0ZSZWFkU3Ry
ZWFtU2V0UHJvcGVydHkoZm9ybS0+Y3VycmVudFN0cmVhbS5nZXQoKSwga0NGU3RyZWFtUHJvcGVy
dHlGaWxlQ3VycmVudE9mZnNldCwgcG9zaXRpb24uZ2V0KCkpOwogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgZm9ybS0+Y3VycmVudFN0cmVhbVJhbmdlTGVuZ3RoID0gZmlsZURhdGEuZmlsZUxl
bmd0aDsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMTc2LDEzICsxNzUsMTMgQEAgc3Rh
dGljIGJvb2wgYWR2YW5jZUN1cnJlbnRTdHJlYW0oRm9ybVN0cmVhbUZpZWxkcyogZm9ybSkKIAog
ICAgIC8vIFNldCB1cCB0aGUgY2FsbGJhY2suCiAgICAgQ0ZTdHJlYW1DbGllbnRDb250ZXh0IGNv
bnRleHQgPSB7IDAsIGZvcm0sIDAsIDAsIDAgfTsKLSAgICBDRlJlYWRTdHJlYW1TZXRDbGllbnQo
Zm9ybS0+Y3VycmVudFN0cmVhbSwga0NGU3RyZWFtRXZlbnRIYXNCeXRlc0F2YWlsYWJsZSB8IGtD
RlN0cmVhbUV2ZW50RXJyb3JPY2N1cnJlZCB8IGtDRlN0cmVhbUV2ZW50RW5kRW5jb3VudGVyZWQs
CisgICAgQ0ZSZWFkU3RyZWFtU2V0Q2xpZW50KGZvcm0tPmN1cnJlbnRTdHJlYW0uZ2V0KCksIGtD
RlN0cmVhbUV2ZW50SGFzQnl0ZXNBdmFpbGFibGUgfCBrQ0ZTdHJlYW1FdmVudEVycm9yT2NjdXJy
ZWQgfCBrQ0ZTdHJlYW1FdmVudEVuZEVuY291bnRlcmVkLAogICAgICAgICBmb3JtRXZlbnRDYWxs
YmFjaywgJmNvbnRleHQpOwogCiAgICAgLy8gU2NoZWR1bGUgd2l0aCB0aGUgY3VycmVudCBzZXQg
b2YgcnVuIGxvb3BzLgogICAgIFNjaGVkdWxlUGFpckhhc2hTZXQ6Oml0ZXJhdG9yIGVuZCA9IGZv
cm0tPnNjaGVkdWxlZFJ1bkxvb3BQYWlycy5lbmQoKTsKICAgICBmb3IgKFNjaGVkdWxlUGFpckhh
c2hTZXQ6Oml0ZXJhdG9yIGl0ID0gZm9ybS0+c2NoZWR1bGVkUnVuTG9vcFBhaXJzLmJlZ2luKCk7
IGl0ICE9IGVuZDsgKytpdCkKLSAgICAgICAgQ0ZSZWFkU3RyZWFtU2NoZWR1bGVXaXRoUnVuTG9v
cChmb3JtLT5jdXJyZW50U3RyZWFtLCAoKml0KS0+cnVuTG9vcCgpLCAoKml0KS0+bW9kZSgpKTsK
KyAgICAgICAgQ0ZSZWFkU3RyZWFtU2NoZWR1bGVXaXRoUnVuTG9vcChmb3JtLT5jdXJyZW50U3Ry
ZWFtLmdldCgpLCAoKml0KS0+cnVuTG9vcCgpLCAoKml0KS0+bW9kZSgpKTsKIAogICAgIHJldHVy
biB0cnVlOwogfQpAQCAtMTk2LDcgKzE5NSw3IEBAIHN0YXRpYyBib29sIG9wZW5OZXh0U3RyZWFt
KEZvcm1TdHJlYW1GaWVsZHMqIGZvcm0pCiAgICAgLy8gU2tpcCBvdmVyIGFueSBzdHJlYW1zIHdl
IGNhbid0IG9wZW4uCiAgICAgaWYgKCFhZHZhbmNlQ3VycmVudFN0cmVhbShmb3JtKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIHdoaWxlIChmb3JtLT5jdXJyZW50U3RyZWFtICYmICFDRlJl
YWRTdHJlYW1PcGVuKGZvcm0tPmN1cnJlbnRTdHJlYW0pKSB7CisgICAgd2hpbGUgKGZvcm0tPmN1
cnJlbnRTdHJlYW0gJiYgIUNGUmVhZFN0cmVhbU9wZW4oZm9ybS0+Y3VycmVudFN0cmVhbS5nZXQo
KSkpIHsKICAgICAgICAgaWYgKCFhZHZhbmNlQ3VycmVudFN0cmVhbShmb3JtKSkKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICB9CkBAIC0yNjIsOSArMjYxLDkgQEAgc3RhdGljIENGSW5k
ZXggZm9ybVJlYWQoQ0ZSZWFkU3RyZWFtUmVmLCBVSW50OCogYnVmZmVyLCBDRkluZGV4IGJ1ZmZl
ckxlbmd0aCwgQ0YKICAgICAgICAgQ0ZJbmRleCBieXRlc1RvUmVhZCA9IGJ1ZmZlckxlbmd0aDsK
ICAgICAgICAgaWYgKGZvcm0tPmN1cnJlbnRTdHJlYW1SYW5nZUxlbmd0aCAhPSBCbG9iRGF0YUl0
ZW06OnRvRW5kT2ZGaWxlICYmIGZvcm0tPmN1cnJlbnRTdHJlYW1SYW5nZUxlbmd0aCA8IGJ5dGVz
VG9SZWFkKQogICAgICAgICAgICAgYnl0ZXNUb1JlYWQgPSBzdGF0aWNfY2FzdDxDRkluZGV4Pihm
b3JtLT5jdXJyZW50U3RyZWFtUmFuZ2VMZW5ndGgpOwotICAgICAgICBDRkluZGV4IGJ5dGVzUmVh
ZCA9IENGUmVhZFN0cmVhbVJlYWQoZm9ybS0+Y3VycmVudFN0cmVhbSwgYnVmZmVyLCBieXRlc1Rv
UmVhZCk7CisgICAgICAgIENGSW5kZXggYnl0ZXNSZWFkID0gQ0ZSZWFkU3RyZWFtUmVhZChmb3Jt
LT5jdXJyZW50U3RyZWFtLmdldCgpLCBidWZmZXIsIGJ5dGVzVG9SZWFkKTsKICAgICAgICAgaWYg
KGJ5dGVzUmVhZCA8IDApIHsKLSAgICAgICAgICAgICplcnJvciA9IENGUmVhZFN0cmVhbUdldEVy
cm9yKGZvcm0tPmN1cnJlbnRTdHJlYW0pOworICAgICAgICAgICAgKmVycm9yID0gQ0ZSZWFkU3Ry
ZWFtR2V0RXJyb3IoZm9ybS0+Y3VycmVudFN0cmVhbS5nZXQoKSk7CiAgICAgICAgICAgICByZXR1
cm4gLTE7CiAgICAgICAgIH0KICAgICAgICAgaWYgKGJ5dGVzUmVhZCA+IDApIHsKQEAgLTI4OCwx
NCArMjg3LDE0IEBAIHN0YXRpYyBCb29sZWFuIGZvcm1DYW5SZWFkKENGUmVhZFN0cmVhbVJlZiBz
dHJlYW0sIHZvaWQqIGNvbnRleHQpCiB7CiAgICAgRm9ybVN0cmVhbUZpZWxkcyogZm9ybSA9IHN0
YXRpY19jYXN0PEZvcm1TdHJlYW1GaWVsZHMqPihjb250ZXh0KTsKIAotICAgIHdoaWxlIChmb3Jt
LT5jdXJyZW50U3RyZWFtICYmIENGUmVhZFN0cmVhbUdldFN0YXR1cyhmb3JtLT5jdXJyZW50U3Ry
ZWFtKSA9PSBrQ0ZTdHJlYW1TdGF0dXNBdEVuZCkKKyAgICB3aGlsZSAoZm9ybS0+Y3VycmVudFN0
cmVhbSAmJiBDRlJlYWRTdHJlYW1HZXRTdGF0dXMoZm9ybS0+Y3VycmVudFN0cmVhbS5nZXQoKSkg
PT0ga0NGU3RyZWFtU3RhdHVzQXRFbmQpCiAgICAgICAgIG9wZW5OZXh0U3RyZWFtKGZvcm0pOwog
CiAgICAgaWYgKCFmb3JtLT5jdXJyZW50U3RyZWFtKSB7CiAgICAgICAgIENGUmVhZFN0cmVhbVNp
Z25hbEV2ZW50KHN0cmVhbSwga0NGU3RyZWFtRXZlbnRFbmRFbmNvdW50ZXJlZCwgMCk7CiAgICAg
ICAgIHJldHVybiBGQUxTRTsKICAgICB9Ci0gICAgcmV0dXJuIENGUmVhZFN0cmVhbUhhc0J5dGVz
QXZhaWxhYmxlKGZvcm0tPmN1cnJlbnRTdHJlYW0pOworICAgIHJldHVybiBDRlJlYWRTdHJlYW1I
YXNCeXRlc0F2YWlsYWJsZShmb3JtLT5jdXJyZW50U3RyZWFtLmdldCgpKTsKIH0KIAogc3RhdGlj
IHZvaWQgZm9ybUNsb3NlKENGUmVhZFN0cmVhbVJlZiwgdm9pZCogY29udGV4dCkKQEAgLTMyNiw3
ICszMjUsNyBAQCBzdGF0aWMgdm9pZCBmb3JtU2NoZWR1bGUoQ0ZSZWFkU3RyZWFtUmVmLCBDRlJ1
bkxvb3BSZWYgcnVuTG9vcCwgQ0ZTdHJpbmdSZWYgcnVuTAogICAgIEZvcm1TdHJlYW1GaWVsZHMq
IGZvcm0gPSBzdGF0aWNfY2FzdDxGb3JtU3RyZWFtRmllbGRzKj4oY29udGV4dCk7CiAKICAgICBp
ZiAoZm9ybS0+Y3VycmVudFN0cmVhbSkKLSAgICAgICAgQ0ZSZWFkU3RyZWFtU2NoZWR1bGVXaXRo
UnVuTG9vcChmb3JtLT5jdXJyZW50U3RyZWFtLCBydW5Mb29wLCBydW5Mb29wTW9kZSk7CisgICAg
ICAgIENGUmVhZFN0cmVhbVNjaGVkdWxlV2l0aFJ1bkxvb3AoZm9ybS0+Y3VycmVudFN0cmVhbS5n
ZXQoKSwgcnVuTG9vcCwgcnVuTG9vcE1vZGUpOwogICAgIGZvcm0tPnNjaGVkdWxlZFJ1bkxvb3BQ
YWlycy5hZGQoU2NoZWR1bGVQYWlyOjpjcmVhdGUocnVuTG9vcCwgcnVuTG9vcE1vZGUpKTsKIH0K
IApAQCAtMzM1LDcgKzMzNCw3IEBAIHN0YXRpYyB2b2lkIGZvcm1VbnNjaGVkdWxlKENGUmVhZFN0
cmVhbVJlZiwgQ0ZSdW5Mb29wUmVmIHJ1bkxvb3AsIENGU3RyaW5nUmVmIHJ1CiAgICAgRm9ybVN0
cmVhbUZpZWxkcyogZm9ybSA9IHN0YXRpY19jYXN0PEZvcm1TdHJlYW1GaWVsZHMqPihjb250ZXh0
KTsKIAogICAgIGlmIChmb3JtLT5jdXJyZW50U3RyZWFtKQotICAgICAgICBDRlJlYWRTdHJlYW1V
bnNjaGVkdWxlRnJvbVJ1bkxvb3AoZm9ybS0+Y3VycmVudFN0cmVhbSwgcnVuTG9vcCwgcnVuTG9v
cE1vZGUpOworICAgICAgICBDRlJlYWRTdHJlYW1VbnNjaGVkdWxlRnJvbVJ1bkxvb3AoZm9ybS0+
Y3VycmVudFN0cmVhbS5nZXQoKSwgcnVuTG9vcCwgcnVuTG9vcE1vZGUpOwogICAgIGZvcm0tPnNj
aGVkdWxlZFJ1bkxvb3BQYWlycy5yZW1vdmUoU2NoZWR1bGVQYWlyOjpjcmVhdGUocnVuTG9vcCwg
cnVuTG9vcE1vZGUpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jZi9OZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldFdpbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0V2luLmNw
cAppbmRleCAwNWIwZWM5MmI5ZWE3MjY2NmI2OWMwN2JlMDJmNjA2NmJkNWY3ZDE1Li41ZDdkNzk2
MTQ0NjVmY2FiNWJkNmI2NDE4ZTA2MGY2OGViMDk0YTRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0V2luLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL05ldHdvcmtTdG9yYWdl
U2Vzc2lvbkNGTmV0V2luLmNwcApAQCAtODgsMTIgKzg4LDEwIEBAIENGVVJMU3RvcmFnZVNlc3Np
b25SZWYgY3JlYXRlUHJpdmF0ZVN0b3JhZ2VTZXNzaW9uKENGU3RyaW5nUmVmIGlkZW50aWZpZXIs
IE9wdGlvCiAgICAgCiAgICAgLy8gVGhlIHByaXZhdGUgc3RvcmFnZSBzZXNzaW9uIHNob3VsZCBo
YXZlIHRoZSBzYW1lIHByb3BlcnRpZXMgYXMgdGhlIGRlZmF1bHQgc3RvcmFnZSBzZXNzaW9uLAog
ICAgIC8vIHdpdGggdGhlIGV4Y2VwdGlvbiB0aGF0IGl0IHNob3VsZCBiZSBpbi1tZW1vcnkgb25s
eSBzdG9yYWdlLgotICAgIENGVVJMQ2FjaGVSZWYgY2FjaGUgPSBfQ0ZVUkxTdG9yYWdlU2Vzc2lv
bkNvcHlDYWNoZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBzdG9yYWdlU2Vzc2lvbik7Ci0gICAgQ0ZV
UkxDYWNoZVNldERpc2tDYXBhY2l0eShjYWNoZSwgMCk7Ci0gICAgQ0ZVUkxDYWNoZVJlZiBkZWZh
dWx0Q2FjaGUgPSBDRlVSTENhY2hlQ29weVNoYXJlZFVSTENhY2hlKCk7Ci0gICAgQ0ZVUkxDYWNo
ZVNldE1lbW9yeUNhcGFjaXR5KGNhY2hlLCBDRlVSTENhY2hlTWVtb3J5Q2FwYWNpdHkoZGVmYXVs
dENhY2hlKSk7Ci0gICAgQ0ZSZWxlYXNlKGRlZmF1bHRDYWNoZSk7Ci0gICAgQ0ZSZWxlYXNlKGNh
Y2hlKTsKKyAgICBhdXRvIGNhY2hlID0gYWRvcHRDRihfQ0ZVUkxTdG9yYWdlU2Vzc2lvbkNvcHlD
YWNoZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBzdG9yYWdlU2Vzc2lvbikpOworICAgIENGVVJMQ2Fj
aGVTZXREaXNrQ2FwYWNpdHkoY2FjaGUuZ2V0KCksIDApOworICAgIGF1dG8gZGVmYXVsdENhY2hl
ID0gYWRvcHRDRihDRlVSTENhY2hlQ29weVNoYXJlZFVSTENhY2hlKCkpOworICAgIENGVVJMQ2Fj
aGVTZXRNZW1vcnlDYXBhY2l0eShjYWNoZS5nZXQoKSwgQ0ZVUkxDYWNoZU1lbW9yeUNhcGFjaXR5
KGRlZmF1bHRDYWNoZS5nZXQoKSkpOwogICAgIAogICAgIENGSFRUUENvb2tpZVN0b3JhZ2VBY2Nl
cHRQb2xpY3kgY2ZDb29raWVBY2NlcHRQb2xpY3k7CiAgICAgaWYgKGNvb2tpZUFjY2VwdFBvbGlj
eSkKQEAgLTEwMyw5ICsxMDEsOCBAQCBDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmIGNyZWF0ZVByaXZh
dGVTdG9yYWdlU2Vzc2lvbihDRlN0cmluZ1JlZiBpZGVudGlmaWVyLCBPcHRpbwogICAgICAgICBj
ZkNvb2tpZUFjY2VwdFBvbGljeSA9IENGSFRUUENvb2tpZVN0b3JhZ2VHZXRDb29raWVBY2NlcHRQ
b2xpY3koZGVmYXVsdENvb2tpZVN0b3JhZ2UpOwogICAgIH0KIAotICAgIENGSFRUUENvb2tpZVN0
b3JhZ2VSZWYgY29va2llU3RvcmFnZSA9IF9DRlVSTFN0b3JhZ2VTZXNzaW9uQ29weUNvb2tpZVN0
b3JhZ2Uoa0NGQWxsb2NhdG9yRGVmYXVsdCwgc3RvcmFnZVNlc3Npb24pOwotICAgIENGSFRUUENv
b2tpZVN0b3JhZ2VTZXRDb29raWVBY2NlcHRQb2xpY3koY29va2llU3RvcmFnZSwgY2ZDb29raWVB
Y2NlcHRQb2xpY3kpOwotICAgIENGUmVsZWFzZShjb29raWVTdG9yYWdlKTsKKyAgICBhdXRvIGNv
b2tpZVN0b3JhZ2UgPSBhZG9wdENGKF9DRlVSTFN0b3JhZ2VTZXNzaW9uQ29weUNvb2tpZVN0b3Jh
Z2Uoa0NGQWxsb2NhdG9yRGVmYXVsdCwgc3RvcmFnZVNlc3Npb24pKTsKKyAgICBDRkhUVFBDb29r
aWVTdG9yYWdlU2V0Q29va2llQWNjZXB0UG9saWN5KGNvb2tpZVN0b3JhZ2UuZ2V0KCksIGNmQ29v
a2llQWNjZXB0UG9saWN5KTsKICAgICAKICAgICByZXR1cm4gc3RvcmFnZVNlc3Npb247CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFu
ZGxlQ0ZOZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJj
ZUhhbmRsZUNGTmV0LmNwcAppbmRleCBjZTRlZGI0OWI3Mzg3MDNjMWMzYTBiMzg2NWMwOGQ3OTI0
YTQ2MzM3Li4zYzE3YWRjNDE4YjgwNGNhNGVmNTRhOTkzNWZlYzM1NTc0MjNiYzgzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZO
ZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VI
YW5kbGVDRk5ldC5jcHAKQEAgLTEyMCwxMiArMTIwLDExIEBAIHN0YXRpYyB2b2lkIHNldENsaWVu
dENlcnRpZmljYXRlSW5TU0xQcm9wZXJ0aWVzKENGTXV0YWJsZURpY3Rpb25hcnlSZWYgc3NsUHJv
cHMsCiB7CiAgICAgaWYgKCFzc2xQcm9wcyB8fCAhY2VydERhdGEpCiAgICAgICAgIHJldHVybjsK
LSAgICBDRk11dGFibGVEaWN0aW9uYXJ5UmVmIGNlcnREaWN0ID0gQ0ZEaWN0aW9uYXJ5Q3JlYXRl
TXV0YWJsZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAwLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxs
QmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKTsKKyAgICBhdXRvIGNlcnRE
aWN0ID0gYWRvcHRDRihDRkRpY3Rpb25hcnlDcmVhdGVNdXRhYmxlKGtDRkFsbG9jYXRvckRlZmF1
bHQsIDAsICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5
VmFsdWVDYWxsQmFja3MpKTsKICAgICBpZiAoIWNlcnREaWN0KQogICAgICAgICByZXR1cm47Ci0g
ICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUoY2VydERpY3QsIF9rQ0ZXaW5kb3dzU1NMTG9jYWxDZXJ0
LCBjZXJ0RGF0YSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUoc3NsUHJvcHMsIF9rQ0ZTdHJl
YW1Qcm9wZXJ0eVdpbmRvd3NTU0xDZXJ0SW5mbywgY2VydERpY3QpOwotICAgIENGUmVsZWFzZShj
ZXJ0RGljdCk7CisgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUoY2VydERpY3QuZ2V0KCksIF9rQ0ZX
aW5kb3dzU1NMTG9jYWxDZXJ0LCBjZXJ0RGF0YSk7CisgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUo
c3NsUHJvcHMsIF9rQ0ZTdHJlYW1Qcm9wZXJ0eVdpbmRvd3NTU0xDZXJ0SW5mbywgY2VydERpY3Qu
Z2V0KCkpOwogfQogI2VuZGlmCiAKQEAgLTIwNSwxMSArMjA0LDExIEBAIHZvaWQgUmVzb3VyY2VI
YW5kbGU6OmNyZWF0ZUNGVVJMQ29ubmVjdGlvbihib29sIHNob3VsZFVzZUNyZWRlbnRpYWxTdG9y
YWdlLCBib29sCiAgICAgaWYgKHNzbFByb3BzKQogICAgICAgICBDRlVSTFJlcXVlc3RTZXRTU0xQ
cm9wZXJ0aWVzKHJlcXVlc3QuZ2V0KCksIHNzbFByb3BzLmdldCgpKTsKIAotICAgIENGTXV0YWJs
ZURpY3Rpb25hcnlSZWYgc3RyZWFtUHJvcGVydGllcyAgPSBDRkRpY3Rpb25hcnlDcmVhdGVNdXRh
YmxlKDAsIDAsICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9u
YXJ5VmFsdWVDYWxsQmFja3MpOworICAgIGF1dG8gc3RyZWFtUHJvcGVydGllcyAgPSBhZG9wdENG
KENGRGljdGlvbmFyeUNyZWF0ZU11dGFibGUoMCwgMCwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2Fs
bEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcykpOwogCiAgICAgaWYgKCFz
aG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZSkgewogICAgICAgICAvLyBBdm9pZCB1c2luZyBleGlz
dGluZyBjb25uZWN0aW9ucywgYmVjYXVzZSB0aGV5IG1heSBiZSBhbHJlYWR5IGF1dGhlbnRpY2F0
ZWQuCi0gICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHN0cmVhbVByb3BlcnRpZXMsIENGU1RS
KCJfa0NGVVJMQ29ubmVjdGlvblNlc3Npb25JRCIpLCBDRlNUUigiV2ViS2l0UHJpdmF0ZVNlc3Np
b24iKSk7CisgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHN0cmVhbVByb3BlcnRpZXMuZ2V0
KCksIENGU1RSKCJfa0NGVVJMQ29ubmVjdGlvblNlc3Npb25JRCIpLCBDRlNUUigiV2ViS2l0UHJp
dmF0ZVNlc3Npb24iKSk7CiAgICAgfQogCiAgICAgc3RhdGljIGNvbnN0IENGU3RyaW5nUmVmIGtD
RlVSTENvbm5lY3Rpb25Tb2NrZXRTdHJlYW1Qcm9wZXJ0aWVzID0gQ0ZTVFIoImtDRlVSTENvbm5l
Y3Rpb25Tb2NrZXRTdHJlYW1Qcm9wZXJ0aWVzIik7CkBAIC0yMjgsOCArMjI3LDcgQEAgdm9pZCBS
ZXNvdXJjZUhhbmRsZTo6Y3JlYXRlQ0ZVUkxDb25uZWN0aW9uKGJvb2wgc2hvdWxkVXNlQ3JlZGVu
dGlhbFN0b3JhZ2UsIGJvb2wKICNlbmRpZgogCiAgICAgLy8gRklYTUU6IFRoaXMgY29kZSBpcyBk
aWZmZXJlbnQgZnJvbSBpT1MgY29kZSBpbiBSZXNvdXJjZUhhbmRsZU1hYy5tbSBpbiB0aGF0IGhl
cmUgd2UgaWdub3JlIHN0cmVhbSBwcm9wZXJ0aWVzIHRoYXQgd2VyZSBwcmVzZW50IGluIGNsaWVu
dCBwcm9wZXJ0aWVzLgotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKHByb3BlcnRpZXNEaWN0aW9u
YXJ5LmdldCgpLCBrQ0ZVUkxDb25uZWN0aW9uU29ja2V0U3RyZWFtUHJvcGVydGllcywgc3RyZWFt
UHJvcGVydGllcyk7Ci0gICAgQ0ZSZWxlYXNlKHN0cmVhbVByb3BlcnRpZXMpOworICAgIENGRGlj
dGlvbmFyeUFkZFZhbHVlKHByb3BlcnRpZXNEaWN0aW9uYXJ5LmdldCgpLCBrQ0ZVUkxDb25uZWN0
aW9uU29ja2V0U3RyZWFtUHJvcGVydGllcywgc3RyZWFtUHJvcGVydGllcy5nZXQoKSk7CiAKICAg
ICBkLT5tX2Nvbm5lY3Rpb25EZWxlZ2F0ZSA9IGFkb3B0UmVmKG5ldyBSZXNvdXJjZUhhbmRsZUNG
VVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlKHRoaXMsIFdURk1vdmUobWVz
c2FnZVF1ZXVlKSkpOwogICAgIGQtPm1fY29ubmVjdGlvbkRlbGVnYXRlLT5zZXR1cFJlcXVlc3Qo
cmVxdWVzdC5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9u
UXVldWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhh
bmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlLmNwcAppbmRleCAy
NjQ2NjM4OGI3Y2E1YTY2NTZkMGVlMjYxZTc1NmVlMjJmYTA0MDMxLi44ZThjM2FhN2E2YmU0Y2Vl
MzZhYThlOWYzZGEzZTZhMjJhMTVlYzdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRo
T3BlcmF0aW9uUXVldWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y2YvUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1
ZS5jcHAKQEAgLTEzNyw4ICsxMzcsNyBAQCBDRlVSTFJlcXVlc3RSZWYgUmVzb3VyY2VIYW5kbGVD
RlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZTo6d2lsbFNlbgogICAgIGlm
ICghb3JpZ2luYWxSZWRpcmVjdFJlc3BvbnNlKSB7CiAgICAgICAgIFJldGFpblB0cjxDRlN0cmlu
Z1JlZj4gbmV3U2NoZW1lID0gYWRvcHRDRihDRlVSTENvcHlTY2hlbWUoQ0ZVUkxSZXF1ZXN0R2V0
VVJMKGNmUmVxdWVzdCkpKTsKICAgICAgICAgaWYgKENGU3RyaW5nQ29tcGFyZShuZXdTY2hlbWUu
Z2V0KCksIG1fb3JpZ2luYWxTY2hlbWUuZ2V0KCksIGtDRkNvbXBhcmVDYXNlSW5zZW5zaXRpdmUp
ID09IGtDRkNvbXBhcmVFcXVhbFRvKSB7Ci0gICAgICAgICAgICBDRlJldGFpbihjZlJlcXVlc3Qp
OwotICAgICAgICAgICAgcmV0dXJuIGNmUmVxdWVzdDsKKyAgICAgICAgICAgIHJldHVybiBjZlJl
cXVlc3QubGVha1JlZigpOwogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVxdWVzdENGTmV0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuY3Bw
CmluZGV4IGQyZDA5M2MzYzMyMDA3M2I2YTVhYWJlOTNkMGNmZmZhOTFlOTUyYmIuLmY2ZTFiOWI1
ZDNhNWJhN2FlMzVhNzc5MjNkNTZkNTNlYWUzMjcxOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuY3Bw
CkBAIC0yODIsMTAgKzI4Miw4IEBAIHZvaWQgUmVzb3VyY2VSZXF1ZXN0Ojpkb1VwZGF0ZVJlc291
cmNlUmVxdWVzdCgpCiAgICAgICAgIG1fY2FjaGVQb2xpY3kgPSBmcm9tUGxhdGZvcm1SZXF1ZXN0
Q2FjaGVQb2xpY3koQ0ZVUkxSZXF1ZXN0R2V0Q2FjaGVQb2xpY3kobV9jZlJlcXVlc3QuZ2V0KCkp
KTsKICAgICBtX3RpbWVvdXRJbnRlcnZhbCA9IENGVVJMUmVxdWVzdEdldFRpbWVvdXRJbnRlcnZh
bChtX2NmUmVxdWVzdC5nZXQoKSk7CiAgICAgbV9maXJzdFBhcnR5Rm9yQ29va2llcyA9IENGVVJM
UmVxdWVzdEdldE1haW5Eb2N1bWVudFVSTChtX2NmUmVxdWVzdC5nZXQoKSk7Ci0gICAgaWYgKENG
U3RyaW5nUmVmIG1ldGhvZCA9IENGVVJMUmVxdWVzdENvcHlIVFRQUmVxdWVzdE1ldGhvZChtX2Nm
UmVxdWVzdC5nZXQoKSkpIHsKLSAgICAgICAgbV9odHRwTWV0aG9kID0gbWV0aG9kOwotICAgICAg
ICBDRlJlbGVhc2UobWV0aG9kKTsKLSAgICB9CisgICAgaWYgKGF1dG8gbWV0aG9kID0gYWRvcHRD
RihDRlVSTFJlcXVlc3RDb3B5SFRUUFJlcXVlc3RNZXRob2QobV9jZlJlcXVlc3QuZ2V0KCkpKSkK
KyAgICAgICAgbV9odHRwTWV0aG9kID0gbWV0aG9kLmdldCgpOwogICAgIG1fYWxsb3dDb29raWVz
ID0gQ0ZVUkxSZXF1ZXN0U2hvdWxkSGFuZGxlSFRUUENvb2tpZXMobV9jZlJlcXVlc3QuZ2V0KCkp
OwogCiAgICAgaWYgKHJlc291cmNlUHJpb3JpdGllc0VuYWJsZWQoKSkKQEAgLTMwNiwxNCArMzA0
LDEzIEBAIHZvaWQgUmVzb3VyY2VSZXF1ZXN0Ojpkb1VwZGF0ZVJlc291cmNlUmVxdWVzdCgpCiAj
ZW5kaWYKIAogICAgIG1faHR0cEhlYWRlckZpZWxkcy5jbGVhcigpOwotICAgIGlmIChDRkRpY3Rp
b25hcnlSZWYgaGVhZGVycyA9IENGVVJMUmVxdWVzdENvcHlBbGxIVFRQSGVhZGVyRmllbGRzKG1f
Y2ZSZXF1ZXN0LmdldCgpKSkgewotICAgICAgICBDRkluZGV4IGhlYWRlckNvdW50ID0gQ0ZEaWN0
aW9uYXJ5R2V0Q291bnQoaGVhZGVycyk7CisgICAgaWYgKGF1dG8gaGVhZGVycyA9IGFkb3B0Q0Yo
Q0ZVUkxSZXF1ZXN0Q29weUFsbEhUVFBIZWFkZXJGaWVsZHMobV9jZlJlcXVlc3QuZ2V0KCkpKSkg
eworICAgICAgICBDRkluZGV4IGhlYWRlckNvdW50ID0gQ0ZEaWN0aW9uYXJ5R2V0Q291bnQoaGVh
ZGVycy5nZXQoKSk7CiAgICAgICAgIFZlY3Rvcjxjb25zdCB2b2lkKiwgMTI4PiBrZXlzKGhlYWRl
ckNvdW50KTsKICAgICAgICAgVmVjdG9yPGNvbnN0IHZvaWQqLCAxMjg+IHZhbHVlcyhoZWFkZXJD
b3VudCk7Ci0gICAgICAgIENGRGljdGlvbmFyeUdldEtleXNBbmRWYWx1ZXMoaGVhZGVycywga2V5
cy5kYXRhKCksIHZhbHVlcy5kYXRhKCkpOworICAgICAgICBDRkRpY3Rpb25hcnlHZXRLZXlzQW5k
VmFsdWVzKGhlYWRlcnMuZ2V0KCksIGtleXMuZGF0YSgpLCB2YWx1ZXMuZGF0YSgpKTsKICAgICAg
ICAgZm9yIChpbnQgaSA9IDA7IGkgPCBoZWFkZXJDb3VudDsgKytpKQogICAgICAgICAgICAgbV9o
dHRwSGVhZGVyRmllbGRzLnNldCgoQ0ZTdHJpbmdSZWYpa2V5c1tpXSwgKENGU3RyaW5nUmVmKXZh
bHVlc1tpXSk7Ci0gICAgICAgIENGUmVsZWFzZShoZWFkZXJzKTsKICAgICB9CiAKICAgICBtX3Jl
c3BvbnNlQ29udGVudERpc3Bvc2l0aW9uRW5jb2RpbmdGYWxsYmFja0FycmF5LmNsZWFyKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdlQ0dXaW4uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdJbWFnZUNHV2luLmNwcAppbmRleCAz
NGVkOWVmOGNmNGY4NjZjYTAzZmRjYTkzMDRhOTYwOTZiYzY1YjllLi5iNDVlNGQ0YTBhMjVkZmNj
NDc2ZjlhYWJmNzU3YzcwYWUyMmM5OTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS93aW4vRHJhZ0ltYWdlQ0dXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3dpbi9EcmFnSW1hZ2VDR1dpbi5jcHAKQEAgLTY3LDE1ICs2NywxMyBAQCBHRElPYmplY3Q8SEJJ
VE1BUD4gYWxsb2NJbWFnZShIREMgZGMsIEludFNpemUgc2l6ZSwgQ0dDb250ZXh0UmVmICp0YXJn
ZXRSZWYpCiAgICAgcmV0dXJuIGhibXA7CiB9CiAKLXN0YXRpYyBDR0NvbnRleHRSZWYgY3JlYXRl
Q2dDb250ZXh0RnJvbUJpdG1hcChIQklUTUFQIGJpdG1hcCkKK3N0YXRpYyBSZXRhaW5QdHI8Q0dD
b250ZXh0UmVmPiBjcmVhdGVDZ0NvbnRleHRGcm9tQml0bWFwKEhCSVRNQVAgYml0bWFwKQogewog
ICAgIEJJVE1BUCBpbmZvOwogICAgIEdldE9iamVjdChiaXRtYXAsIHNpemVvZihpbmZvKSwgJmlu
Zm8pOwogICAgIEFTU0VSVChpbmZvLmJtQml0c1BpeGVsID09IDMyKTsKIAotICAgIENHQ29udGV4
dFJlZiBiaXRtYXBDb250ZXh0ID0gQ0dCaXRtYXBDb250ZXh0Q3JlYXRlKGluZm8uYm1CaXRzLCBp
bmZvLmJtV2lkdGgsIGluZm8uYm1IZWlnaHQsIDgsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5mby5ibVdpZHRoQnl0ZXMsIHNSR0JDb2xv
clNwYWNlUmVmKCksIGtDR0JpdG1hcEJ5dGVPcmRlcjMyTGl0dGxlIHwga0NHSW1hZ2VBbHBoYU5v
bmVTa2lwRmlyc3QpOwotICAgIHJldHVybiBiaXRtYXBDb250ZXh0OworICAgIHJldHVybiBhZG9w
dENGKENHQml0bWFwQ29udGV4dENyZWF0ZShpbmZvLmJtQml0cywgaW5mby5ibVdpZHRoLCBpbmZv
LmJtSGVpZ2h0LCA4LCBpbmZvLmJtV2lkdGhCeXRlcywgc1JHQkNvbG9yU3BhY2VSZWYoKSwga0NH
Qml0bWFwQnl0ZU9yZGVyMzJMaXR0bGUgfCBrQ0dJbWFnZUFscGhhTm9uZVNraXBGaXJzdCkpOwog
fQogCiBEcmFnSW1hZ2VSZWYgc2NhbGVEcmFnSW1hZ2UoRHJhZ0ltYWdlUmVmIGltYWdlUmVmLCBG
bG9hdFNpemUgc2NhbGUpCkBAIC0xMDEsMTUgKzk5LDEzIEBAIERyYWdJbWFnZVJlZiBzY2FsZURy
YWdJbWFnZShEcmFnSW1hZ2VSZWYgaW1hZ2VSZWYsIEZsb2F0U2l6ZSBzY2FsZSkKICAgICBpZiAo
IWhibXApCiAgICAgICAgIGdvdG8gZXhpdDsKIAotICAgIENHQ29udGV4dFJlZiBzcmNDb250ZXh0
ID0gY3JlYXRlQ2dDb250ZXh0RnJvbUJpdG1hcChpbWFnZS5nZXQoKSk7Ci0gICAgQ0dJbWFnZVJl
ZiBzcmNJbWFnZSA9IENHQml0bWFwQ29udGV4dENyZWF0ZUltYWdlKHNyY0NvbnRleHQpOworICAg
IGF1dG8gc3JjQ29udGV4dCA9IGNyZWF0ZUNnQ29udGV4dEZyb21CaXRtYXAoaW1hZ2UuZ2V0KCkp
OworICAgIGF1dG8gc3JjSW1hZ2UgPSBhZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0ZUltYWdl
KHNyY0NvbnRleHQpKTsKICAgICBDR1JlY3QgcmVjdDsKICAgICByZWN0Lm9yaWdpbi54ID0gMDsK
ICAgICByZWN0Lm9yaWdpbi55ID0gMDsKICAgICByZWN0LnNpemUgPSBkc3RTaXplOwotICAgIENH
Q29udGV4dERyYXdJbWFnZSh0YXJnZXRDb250ZXh0LCByZWN0LCBzcmNJbWFnZSk7Ci0gICAgQ0dJ
bWFnZVJlbGVhc2Uoc3JjSW1hZ2UpOwotICAgIENHQ29udGV4dFJlbGVhc2Uoc3JjQ29udGV4dCk7
CisgICAgQ0dDb250ZXh0RHJhd0ltYWdlKHRhcmdldENvbnRleHQsIHJlY3QsIHNyY0ltYWdlLmdl
dCgpKTsKICAgICBDR0NvbnRleHRSZWxlYXNlKHRhcmdldENvbnRleHQpOwogCiBleGl0OgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1dlYkNvcmVCdW5kbGVXaW4uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1dlYkNvcmVCdW5kbGVXaW4uY3BwCmluZGV4
IDNiN2M4ZTFhMjBhNDUxYWQ3Y2IzODQ4ZWI2MTYyMmU5N2ZkMDI0YzcuLjk1NjNkZjNlMmVkNzYw
MDQwNjczNTgwMzZiYmU3N2FhNTEyZjJkMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3dpbi9XZWJDb3JlQnVuZGxlV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS93aW4vV2ViQ29yZUJ1bmRsZVdpbi5jcHAKQEAgLTM1LDEyICszNSwxMCBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBDRkJ1bmRsZVJlZiBjcmVhdGVXZWJLaXRCdW5kbGUo
KQorc3RhdGljIFJldGFpblB0cjxDRkJ1bmRsZVJlZj4gY3JlYXRlV2ViS2l0QnVuZGxlKCkKIHsK
LSAgICBpZiAoQ0ZCdW5kbGVSZWYgZXhpc3RpbmdCdW5kbGUgPSBDRkJ1bmRsZUdldEJ1bmRsZVdp
dGhJZGVudGlmaWVyKENGU1RSKCJjb20uYXBwbGUuV2ViS2l0IikpKSB7Ci0gICAgICAgIENGUmV0
YWluKGV4aXN0aW5nQnVuZGxlKTsKKyAgICBpZiAoQ0ZCdW5kbGVSZWYgZXhpc3RpbmdCdW5kbGUg
PSBDRkJ1bmRsZUdldEJ1bmRsZVdpdGhJZGVudGlmaWVyKENGU1RSKCJjb20uYXBwbGUuV2ViS2l0
IikpKQogICAgICAgICByZXR1cm4gZXhpc3RpbmdCdW5kbGU7Ci0gICAgfQogCiAgICAgd2NoYXJf
dCBkbGxQYXRoQnVmZmVyW01BWF9QQVRIXTsKICAgICBEV09SRCBsZW5ndGggPSA6OkdldE1vZHVs
ZUZpbGVOYW1lVyhXZWJDb3JlOjppbnN0YW5jZUhhbmRsZSgpLCBkbGxQYXRoQnVmZmVyLCBXVEZf
QVJSQVlfTEVOR1RIKGRsbFBhdGhCdWZmZXIpKTsKQEAgLTUyLDE0ICs1MCwxNCBAQCBzdGF0aWMg
Q0ZCdW5kbGVSZWYgY3JlYXRlV2ViS2l0QnVuZGxlKCkKICAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+
IGRsbERpcmVjdG9yeVVSTCA9IGFkb3B0Q0YoQ0ZVUkxDcmVhdGVDb3B5RGVsZXRpbmdMYXN0UGF0
aENvbXBvbmVudCgwLCBkbGxVUkwuZ2V0KCkpKTsKICAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IHJl
c291cmNlc0RpcmVjdG9yeVVSTCA9IGFkb3B0Q0YoQ0ZVUkxDcmVhdGVDb3B5QXBwZW5kaW5nUGF0
aENvbXBvbmVudCgwLCBkbGxEaXJlY3RvcnlVUkwuZ2V0KCksIENGU1RSKCJXZWJLaXQucmVzb3Vy
Y2VzIiksIHRydWUpKTsKIAotICAgIHJldHVybiBDRkJ1bmRsZUNyZWF0ZSgwLCByZXNvdXJjZXNE
aXJlY3RvcnlVUkwuZ2V0KCkpOworICAgIHJldHVybiBhZG9wdENGKENGQnVuZGxlQ3JlYXRlKDAs
IHJlc291cmNlc0RpcmVjdG9yeVVSTC5nZXQoKSkpOwogfQogCiBDRkJ1bmRsZVJlZiB3ZWJLaXRC
dW5kbGUoKQogewotICAgIHN0YXRpYyBDRkJ1bmRsZVJlZiBidW5kbGUgPSBjcmVhdGVXZWJLaXRC
dW5kbGUoKTsKLSAgICBBU1NFUlQoYnVuZGxlKTsKLSAgICByZXR1cm4gYnVuZGxlOworICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8Q0ZCdW5kbGVSZWY+PiBidW5kbGUgPSBjcmVh
dGVXZWJLaXRCdW5kbGUoKTsKKyAgICBBU1NFUlQoYnVuZGxlLmdldCgpKTsKKyAgICByZXR1cm4g
YnVuZGxlLmdldCgpLmdldCgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0KaW5kZXggYTNiNzQwNmRhNDkxMjcx
YjAxNjg5MjJiNjYyZmUyMmJhYjM3OWEyOS4uNDYzZWJhMDZjZDI5OTFmYWZmMTdhMzRjMWVkMDk3
YjFkNzFlMWJmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRo
ZW1lTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5t
bQpAQCAtMTUzLDEwICsxNTMsOSBAQCAtIChDRkRpY3Rpb25hcnlSZWYpX2FkanVzdGVkQ29yZVVJ
RHJhd09wdGlvbnNGb3JEcmF3aW5nQm9yZGVyc09ubHk6KENGRGljdGlvbmFyeQogCiAgICAgLy8g
RklYTUU6IFRoaXMgaXMgYSB3b3JrYXJvdW5kIGZvciA8cmRhcjovL3Byb2JsZW0vMTEzODU0NjE+
LiBXaGVuIHRoYXQgYnVnIGlzIHJlc29sdmVkLCB3ZSBzaG91bGQgcmVtb3ZlIHRoaXMgY29kZSwK
ICAgICAvLyBhcyB3ZWxsIGFzIHRoZSBpbnRlcm5hbCBtZXRob2Qgb3ZlcnJpZGVzIGJlbG93Lgot
ICAgIENGTXV0YWJsZURpY3Rpb25hcnlSZWYgY29yZVVJRHJhd09wdGlvbnMgPSBDRkRpY3Rpb25h
cnlDcmVhdGVNdXRhYmxlQ29weShOVUxMLCAwLCBkZWZhdWx0T3B0aW9ucyk7Ci0gICAgQ0ZEaWN0
aW9uYXJ5U2V0VmFsdWUoY29yZVVJRHJhd09wdGlvbnMsIENGU1RSKCJib3JkZXJzIG9ubHkiKSwg
a0NGQm9vbGVhblRydWUpOwotICAgIENGQXV0b3JlbGVhc2UoY29yZVVJRHJhd09wdGlvbnMpOwot
ICAgIHJldHVybiBjb3JlVUlEcmF3T3B0aW9uczsKKyAgICBhdXRvIGNvcmVVSURyYXdPcHRpb25z
ID0gYWRvcHRDRihDRkRpY3Rpb25hcnlDcmVhdGVNdXRhYmxlQ29weShOVUxMLCAwLCBkZWZhdWx0
T3B0aW9ucykpOworICAgIENGRGljdGlvbmFyeVNldFZhbHVlKGNvcmVVSURyYXdPcHRpb25zLmdl
dCgpLCBDRlNUUigiYm9yZGVycyBvbmx5IiksIGtDRkJvb2xlYW5UcnVlKTsKKyAgICByZXR1cm4g
Y29yZVVJRHJhd09wdGlvbnMuYXV0b3JlbGVhc2UoKTsKIH0KIAogLSAoQ0ZEaWN0aW9uYXJ5UmVm
KV9jb3JlVUlEcmF3T3B0aW9uc1dpdGhGcmFtZTooTlNSZWN0KWNlbGxGcmFtZSBpblZpZXc6KE5T
VmlldyAqKWNvbnRyb2xWaWV3IGluY2x1ZGVGb2N1czooQk9PTClpbmNsdWRlRm9jdXMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvY29jb2EvV2ViQXJjaGl2ZUR1bXBTdXBwb3J0
LmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL2NvY29hL1dlYkFyY2hpdmVEdW1wU3VwcG9ydC5o
CmluZGV4IDJkMDNlZjNmMjk4NmQ4YjI3MWFiNzM3MDgzMzk2MWVhNzQ2YTgxOWUuLjIwOWE3MTE4
NTdlYmQ3NzY2YTE5OTE4NjI5MGI2NDFjMDdjMTVhMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvY29jb2EvV2ViQXJjaGl2ZUR1bXBTdXBwb3J0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9jb2NvYS9XZWJBcmNoaXZlRHVtcFN1cHBvcnQuaApAQCAtMjYsOSArMjYs
MTAgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ29yZUZvdW5k
YXRpb24uaD4KKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
VGVzdFN1cHBvcnQgewogCi1DRlN0cmluZ1JlZiBjcmVhdGVYTUxTdHJpbmdGcm9tV2ViQXJjaGl2
ZURhdGEoQ0ZEYXRhUmVmIHdlYkFyY2hpdmVEYXRhKSBXVEZfRVhQT1JUX1BSSVZBVEU7CitSZXRh
aW5QdHI8Q0ZTdHJpbmdSZWY+IGNyZWF0ZVhNTFN0cmluZ0Zyb21XZWJBcmNoaXZlRGF0YShDRkRh
dGFSZWYgd2ViQXJjaGl2ZURhdGEpIFdURl9FWFBPUlRfUFJJVkFURTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZVRlc3RTdXBwb3J0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L2NvY29hL1dlYkFyY2hpdmVEdW1wU3VwcG9ydC5tbSBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
Y29jb2EvV2ViQXJjaGl2ZUR1bXBTdXBwb3J0Lm1tCmluZGV4IDVlN2Q4ZTE2YTk4ZmI3MDFmNDdj
NWU0OTdmYmE5MTIzZGViNzlkYzEuLmJlNjYwNzhhODNkMGNhNDliNzFhMWZiNTNjMjNhOGM2Yjgx
ZDc2N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvY29jb2EvV2ViQXJjaGl2
ZUR1bXBTdXBwb3J0Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvY29jb2EvV2ViQXJj
aGl2ZUR1bXBTdXBwb3J0Lm1tCkBAIC0yMDAsNyArMjAwLDcgQEAgc3RhdGljIENGQ29tcGFyaXNv
blJlc3VsdCBjb21wYXJlUmVzb3VyY2VVUkxzKGNvbnN0IHZvaWQgKnZhbDEsIGNvbnN0IHZvaWQg
KnZhbDIKICAgICByZXR1cm4gQ0ZTdHJpbmdDb21wYXJlKHVybDEsIHVybDIsIGtDRkNvbXBhcmVB
bmNob3JlZCk7CiB9CiAKLUNGU3RyaW5nUmVmIGNyZWF0ZVhNTFN0cmluZ0Zyb21XZWJBcmNoaXZl
RGF0YShDRkRhdGFSZWYgd2ViQXJjaGl2ZURhdGEpCitSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGNy
ZWF0ZVhNTFN0cmluZ0Zyb21XZWJBcmNoaXZlRGF0YShDRkRhdGFSZWYgd2ViQXJjaGl2ZURhdGEp
CiB7CiAgICAgQ0ZFcnJvclJlZiBlcnJvciA9IDA7CiAgICAgQ0ZQcm9wZXJ0eUxpc3RGb3JtYXQg
Zm9ybWF0ID0ga0NGUHJvcGVydHlMaXN0QmluYXJ5Rm9ybWF0X3YxXzA7CkBAIC0yMDgsOCArMjA4
LDggQEAgQ0ZTdHJpbmdSZWYgY3JlYXRlWE1MU3RyaW5nRnJvbVdlYkFyY2hpdmVEYXRhKENGRGF0
YVJlZiB3ZWJBcmNoaXZlRGF0YSkKIAogICAgIGlmICghcHJvcGVydHlMaXN0KSB7CiAgICAgICAg
IGlmIChlcnJvcikKLSAgICAgICAgICAgIHJldHVybiBDRkVycm9yQ29weURlc2NyaXB0aW9uKGVy
cm9yKTsKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PENGU3RyaW5nUmVmPihDRlJldGFpbihD
RlNUUigiQW4gdW5rbm93biBlcnJvciBvY2N1cnJlZCBjb252ZXJ0aW5nIGRhdGEgdG8gcHJvcGVy
dHkgbGlzdC4iKSkpOworICAgICAgICAgICAgcmV0dXJuIGFkb3B0Q0YoQ0ZFcnJvckNvcHlEZXNj
cmlwdGlvbihlcnJvcikpOworICAgICAgICByZXR1cm4gQ0ZTVFIoIkFuIHVua25vd24gZXJyb3Ig
b2NjdXJyZWQgY29udmVydGluZyBkYXRhIHRvIHByb3BlcnR5IGxpc3QuIik7CiAgICAgfQogCiAg
ICAgUmV0YWluUHRyPENGTXV0YWJsZUFycmF5UmVmPiByZXNvdXJjZXMgPSBhZG9wdENGKENGQXJy
YXlDcmVhdGVNdXRhYmxlKGtDRkFsbG9jYXRvckRlZmF1bHQsIDAsICZrQ0ZUeXBlQXJyYXlDYWxs
QmFja3MpKTsKQEAgLTI1MCw4ICsyNTAsOCBAQCBDRlN0cmluZ1JlZiBjcmVhdGVYTUxTdHJpbmdG
cm9tV2ViQXJjaGl2ZURhdGEoQ0ZEYXRhUmVmIHdlYkFyY2hpdmVEYXRhKQogCiAgICAgaWYgKCF4
bWxEYXRhKSB7CiAgICAgICAgIGlmIChlcnJvcikKLSAgICAgICAgICAgIHJldHVybiBDRkVycm9y
Q29weURlc2NyaXB0aW9uKGVycm9yKTsKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PENGU3Ry
aW5nUmVmPihDRlJldGFpbihDRlNUUigiQW4gdW5rbm93biBlcnJvciBvY2N1cnJlZCBjb252ZXJ0
aW5nIHByb3BlcnR5IGxpc3QgdG8gZGF0YS4iKSkpOworICAgICAgICAgICAgcmV0dXJuIGFkb3B0
Q0YoQ0ZFcnJvckNvcHlEZXNjcmlwdGlvbihlcnJvcikpOworICAgICAgICByZXR1cm4gQ0ZTVFIo
IkFuIHVua25vd24gZXJyb3Igb2NjdXJyZWQgY29udmVydGluZyBwcm9wZXJ0eSBsaXN0IHRvIGRh
dGEuIik7CiAgICAgfQogCiAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB4bWxTdHJpbmcgPSBh
ZG9wdENGKENGU3RyaW5nQ3JlYXRlRnJvbUV4dGVybmFsUmVwcmVzZW50YXRpb24oa0NGQWxsb2Nh
dG9yRGVmYXVsdCwgeG1sRGF0YS5nZXQoKSwga0NGU3RyaW5nRW5jb2RpbmdVVEY4KSk7CkBAIC0y
NjYsNyArMjY2LDcgQEAgQ0ZTdHJpbmdSZWYgY3JlYXRlWE1MU3RyaW5nRnJvbVdlYkFyY2hpdmVE
YXRhKENGRGF0YVJlZiB3ZWJBcmNoaXZlRGF0YSkKICAgICBxdWlja0xvb2tVUkxSZXBsYWNlbWVu
dHMoKS5jbGVhcigpOwogI2VuZGlmCiAKLSAgICByZXR1cm4gc3RyaW5nLmxlYWtSZWYoKTsKKyAg
ICByZXR1cm4gc3RyaW5nOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlVGVzdFN1cHBvcnQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvY29jb2EvV2ViVmlld1Zpc3VhbElk
ZW50aWZpY2F0aW9uT3ZlcmxheS5tbSBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvY29jb2EvV2Vi
Vmlld1Zpc3VhbElkZW50aWZpY2F0aW9uT3ZlcmxheS5tbQppbmRleCAxZjdhNjJhYTNmY2Y0N2Nj
MjMxMDliM2ZiYjM5M2VhYmI4MzMzZjQyLi45ZGE4ODMwYmEyYjhlMDdjNWY2N2YwZTM0NmRiYmU5
MWI5Y2VlMzdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL2NvY29hL1dlYlZp
ZXdWaXN1YWxJZGVudGlmaWNhdGlvbk92ZXJsYXkubW0KKysrIGIvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9jb2NvYS9XZWJWaWV3VmlzdWFsSWRlbnRpZmljYXRpb25PdmVybGF5Lm1tCkBAIC0xMjQs
NyArMTI0LDcgQEAgLSAodm9pZClvYnNlcnZlVmFsdWVGb3JLZXlQYXRoOihOU1N0cmluZyAqKWtl
eVBhdGggb2ZPYmplY3Q6KGlkKW9iamVjdCBjaGFuZ2U6KE4KIHN0YXRpYyBDVEZvbnRSZWYgaWRl
bnRpZmljYXRpb25Gb250KCkKIHsKICAgICBhdXRvIG1hdHJpeCA9IENHQWZmaW5lVHJhbnNmb3Jt
SWRlbnRpdHk7Ci0gICAgcmV0dXJuIChDVEZvbnRSZWYpQ0ZBdXRvcmVsZWFzZShDVEZvbnRDcmVh
dGVXaXRoTmFtZShDRlNUUigiSGVsdmV0aWNhIiksIDIwLCAmbWF0cml4KSk7CisgICAgcmV0dXJu
IGFkb3B0Q0YoQ1RGb250Q3JlYXRlV2l0aE5hbWUoQ0ZTVFIoIkhlbHZldGljYSIpLCAyMCwgJm1h
dHJpeCkpLmF1dG9yZWxlYXNlKCk7CiB9CiAKIGNvbnN0ZXhwciBDR0Zsb2F0IGhvcml6b250YWxN
YXJnaW4gPSAxNTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vbWFjL1N0cmlu
Z1V0aWxpdGllcy5tbSBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vbWFjL1N0cmluZ1V0aWxpdGll
cy5tbQppbmRleCA2ODRmZDg4Nzk3NjUzZjQ4Y2IzNmM0NWRiMjA4MTdmNGMyYWU4NDNiLi42ZTJl
ZTZlM2IzMGI2ZmQ0Y2Y5MDQyYjQ5YmRiZTVkZjcyYzEwNzFjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL21hYy9TdHJpbmdVdGlsaXRpZXMubW0KKysrIGIvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9tYWMvU3RyaW5nVXRpbGl0aWVzLm1tCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVz
cGFjZSBXZWJLaXQgewogCiBOU1N0cmluZyAqbnNTdHJpbmdGcm9tV2ViQ29yZVN0cmluZyhjb25z
dCBTdHJpbmcmIHN0cmluZykKIHsKLSAgICByZXR1cm4gc3RyaW5nLmlzRW1wdHkoKSA/IEAiIiA6
IENGQnJpZGdpbmdSZWxlYXNlKFdLU3RyaW5nQ29weUNGU3RyaW5nKDAsIHRvQVBJKHN0cmluZy5p
bXBsKCkpKSk7CisgICAgcmV0dXJuIHN0cmluZy5pc0VtcHR5KCkgPyBAIiIgOiBhZG9wdENGKFdL
U3RyaW5nQ29weUNGU3RyaW5nKDAsIHRvQVBJKHN0cmluZy5pbXBsKCkpKSkuYnJpZGdpbmdBdXRv
cmVsZWFzZSgpOwogfQogCiAjaWYgRU5BQkxFKFRFTEVQSE9ORV9OVU1CRVJfREVURUNUSU9OKSAm
JiBQTEFURk9STShNQUMpCkBAIC02NSwxMSArNjUsMTEgQEAgTlNTdHJpbmcgKmZvcm1hdHRlZFBo
b25lTnVtYmVyU3RyaW5nKE5TU3RyaW5nICpvcmlnaW5hbFBob25lTnVtYmVyKQogICAgIGlmICgh
cGhvbmVOdW1iZXIpCiAgICAgICAgIHJldHVybiBvcmlnaW5hbFBob25lTnVtYmVyOwogCi0gICAg
Q0ZTdHJpbmdSZWYgcGhvbmVOdW1iZXJTdHJpbmcgPSBDRlBob25lTnVtYmVyQ29weUZvcm1hdHRl
ZFJlcHJlc2VudGF0aW9uKHBob25lTnVtYmVyLmdldCgpKTsKKyAgICBhdXRvIHBob25lTnVtYmVy
U3RyaW5nID0gYWRvcHRDRihDRlBob25lTnVtYmVyQ29weUZvcm1hdHRlZFJlcHJlc2VudGF0aW9u
KHBob25lTnVtYmVyLmdldCgpKSk7CiAgICAgaWYgKCFwaG9uZU51bWJlclN0cmluZykKLSAgICAg
ICAgcGhvbmVOdW1iZXJTdHJpbmcgPSBDRlBob25lTnVtYmVyQ29weVVuZm9ybWF0dGVkUmVwcmVz
ZW50YXRpb24ocGhvbmVOdW1iZXIuZ2V0KCkpOworICAgICAgICBwaG9uZU51bWJlclN0cmluZyA9
IGFkb3B0Q0YoQ0ZQaG9uZU51bWJlckNvcHlVbmZvcm1hdHRlZFJlcHJlc2VudGF0aW9uKHBob25l
TnVtYmVyLmdldCgpKSk7CiAKLSAgICByZXR1cm4gQ0ZCcmlkZ2luZ1JlbGVhc2UocGhvbmVOdW1i
ZXJTdHJpbmcpOworICAgIHJldHVybiBwaG9uZU51bWJlclN0cmluZy5icmlkZ2luZ0F1dG9yZWxl
YXNlKCk7CiB9CiAKICNlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nl
c3MvbWFjL1BsdWdpblByb2Nlc3NNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3Mv
bWFjL1BsdWdpblByb2Nlc3NNYWMubW0KaW5kZXggMzFlOWNmOTJmMDJlZTBjY2YxMDdhZmZlNTZj
MDUzNDhmYmM1YzRmMC4uY2ZhNjZhNGUyZjI2MTM3YjNjOWY3MjU3ZjY1OTNmNDhmMTQxYTQ5NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL21hYy9QbHVnaW5Qcm9jZXNz
TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9tYWMvUGx1Z2luUHJvY2Vz
c01hYy5tbQpAQCAtMzExLDIwICszMTEsMjAgQEAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZUNvY29h
T3ZlcnJpZGVzKCkKIAogICAgIE5TTm90aWZpY2F0aW9uQ2VudGVyICpkZWZhdWx0Q2VudGVyID0g
W05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdOwogCisgICAgLy8gV2UgbGVhayB0
aGUgdHdvIG9ic2VydmVycyBzbyB0aGF0IHRoZXkgb2JzZXJ2ZSBub3RpZmljYXRpb25zIGZvciB0
aGUgbGlmZXRpbWUgb2YgdGhlIHByb2Nlc3MuCiAgICAgLy8gVHJhY2sgd2hlbiBhbnkgQ29jb2Eg
d2luZG93IGlzIGFib3V0IHRvIGJlIGJlIHNob3duLgotICAgIGlkIG9yZGVyT25TY3JlZW5PYnNl
cnZlciA9IFtkZWZhdWx0Q2VudGVyIGFkZE9ic2VydmVyRm9yTmFtZTpOU1dpbmRvd1dpbGxPcmRl
ck9uU2NyZWVuTm90aWZpY2F0aW9uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgb2JqZWN0Om5pbAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxdWV1ZTpuaWwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNpbmdC
bG9jazpeKE5TTm90aWZpY2F0aW9uICpub3RpZmljYXRpb24pIHsgZnVsbHNjcmVlbldpbmRvd1Ry
YWNrZXIoKS53aW5kb3dTaG93bihbbm90aWZpY2F0aW9uIG9iamVjdF0pOyB9XTsKKyAgICBpZCBv
cmRlck9uU2NyZWVuT2JzZXJ2ZXIgPSByZXRhaW5QdHIoW2RlZmF1bHRDZW50ZXIgYWRkT2JzZXJ2
ZXJGb3JOYW1lOk5TV2luZG93V2lsbE9yZGVyT25TY3JlZW5Ob3RpZmljYXRpb24KKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgb2JqZWN0Om5pbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcXVldWU6bmlsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNpbmdCbG9jazpe
KE5TTm90aWZpY2F0aW9uICpub3RpZmljYXRpb24pIHsgZnVsbHNjcmVlbldpbmRvd1RyYWNrZXIo
KS53aW5kb3dTaG93bihbbm90aWZpY2F0aW9uIG9iamVjdF0pOyB9XSkubGVha1JlZigpOworICAg
IFVOVVNFRF9QQVJBTShvcmRlck9uU2NyZWVuT2JzZXJ2ZXIpOwogICAgIC8vIFRyYWNrIHdoZW4g
YW55IENvY29hIHdpbmRvdyBpcyBhYm91dCB0byBiZSBoaWRkZW4uCi0gICAgaWQgb3JkZXJPZmZT
Y3JlZW5PYnNlcnZlciA9IFtkZWZhdWx0Q2VudGVyIGFkZE9ic2VydmVyRm9yTmFtZTpOU1dpbmRv
d1dpbGxPcmRlck9mZlNjcmVlbk5vdGlmaWNhdGlvbgotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYmplY3Q6bmlsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxdWV1ZTpu
aWwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB1c2luZ0Jsb2NrOl4oTlNOb3RpZmljYXRpb24gKm5vdGlmaWNhdGlvbikgeyBmdWxsc2NyZWVu
V2luZG93VHJhY2tlcigpLndpbmRvd0hpZGRlbihbbm90aWZpY2F0aW9uIG9iamVjdF0pOyB9XTsK
LQotICAgIC8vIExlYWsgdGhlIHR3byBvYnNlcnZlcnMgc28gdGhhdCB0aGV5IG9ic2VydmUgbm90
aWZpY2F0aW9ucyBmb3IgdGhlIGxpZmV0aW1lIG9mIHRoZSBwcm9jZXNzLgotICAgIENGUmV0YWlu
KChfX2JyaWRnZSBDRlR5cGVSZWYpb3JkZXJPblNjcmVlbk9ic2VydmVyKTsKLSAgICBDRlJldGFp
bigoX19icmlkZ2UgQ0ZUeXBlUmVmKW9yZGVyT2ZmU2NyZWVuT2JzZXJ2ZXIpOworICAgIGlkIG9y
ZGVyT2ZmU2NyZWVuT2JzZXJ2ZXIgPSByZXRhaW5QdHIoW2RlZmF1bHRDZW50ZXIgYWRkT2JzZXJ2
ZXJGb3JOYW1lOk5TV2luZG93V2lsbE9yZGVyT2ZmU2NyZWVuTm90aWZpY2F0aW9uCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBvYmplY3Q6bmlsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcXVldWU6bmlsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzaW5nQmxv
Y2s6XihOU05vdGlmaWNhdGlvbiAqbm90aWZpY2F0aW9uKSB7IGZ1bGxzY3JlZW5XaW5kb3dUcmFj
a2VyKCkud2luZG93SGlkZGVuKFtub3RpZmljYXRpb24gb2JqZWN0XSk7IH1dKS5sZWFrUmVmKCk7
CisgICAgVU5VU0VEX1BBUkFNKG9yZGVyT2ZmU2NyZWVuT2JzZXJ2ZXIpOworCiB9CiAKIHZvaWQg
UGx1Z2luUHJvY2Vzczo6c2V0TW9kYWxXaW5kb3dJc1Nob3dpbmcoYm9vbCBtb2RhbFdpbmRvd0lz
U2hvd2luZykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9QYXN0ZWJvYXJk
VHlwZXMubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvUGFzdGVib2FyZFR5cGVzLm1tCmlu
ZGV4IDUzZjk4YzEzNzRmOTRkNTdiMjZlNDZhNmRiMjZiOGFkMjRlNzk3NWUuLmVkNGM3YjliODgx
OTZmMmE5YWEwY2E2MjM4NDgxMDRjODk4ODMxMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL21hYy9QYXN0ZWJvYXJkVHlwZXMubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
bWFjL1Bhc3RlYm9hcmRUeXBlcy5tbQpAQCAtMzcsNDYgKzM3LDQwIEBAIE5TU3RyaW5nICogY29u
c3QgUGFzdGVib2FyZFR5cGVzOjpXZWJVUkxzV2l0aFRpdGxlc1Bib2FyZFR5cGUgPSBAIldlYlVS
THNXaXRoVGl0CiBOU1N0cmluZyAqIGNvbnN0IFBhc3RlYm9hcmRUeXBlczo6V2ViVVJMUGJvYXJk
VHlwZSA9IEAicHVibGljLnVybCI7CiBOU1N0cmluZyAqIGNvbnN0IFBhc3RlYm9hcmRUeXBlczo6
V2ViVVJMTmFtZVBib2FyZFR5cGUgPSBAInB1YmxpYy51cmwtbmFtZSI7CiBOU1N0cmluZyAqIGNv
bnN0IFBhc3RlYm9hcmRUeXBlczo6V2ViRHVtbXlQYm9hcmRUeXBlID0gQCJBcHBsZSBXZWJLaXQg
ZHVtbXkgcGFzdGVib2FyZCB0eXBlIjsKLQotc3RhdGljIGlubGluZSBOU0FycmF5ICpyZXRhaW4o
TlNBcnJheSAqYXJyYXkpCi17Ci0gICAgQ0ZSZXRhaW4oYXJyYXkpOwotICAgIHJldHVybiBhcnJh
eTsKLX0KICAgICAKIE5TQXJyYXkqIFBhc3RlYm9hcmRUeXBlczo6Zm9yRWRpdGluZygpCiB7CiBB
TExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTiAKLSAgICBzdGF0aWMgTlNBcnJheSAq
dHlwZXMgPSByZXRhaW4oQFtXZWJBcmNoaXZlUGJvYXJkVHlwZSwgKF9fYnJpZGdlIE5TU3RyaW5n
ICopa1VUVHlwZVdlYkFyY2hpdmUsIFdlYkNvcmU6OmxlZ2FjeUhUTUxQYXN0ZWJvYXJkVHlwZSgp
LCBXZWJDb3JlOjpsZWdhY3lGaWxlbmFtZXNQYXN0ZWJvYXJkVHlwZSgpLCBXZWJDb3JlOjpsZWdh
Y3lUSUZGUGFzdGVib2FyZFR5cGUoKSwgV2ViQ29yZTo6bGVnYWN5UERGUGFzdGVib2FyZFR5cGUo
KSwKLSAgICAgICAgV2ViQ29yZTo6bGVnYWN5VVJMUGFzdGVib2FyZFR5cGUoKSwgV2ViQ29yZTo6
bGVnYWN5UlRGRFBhc3RlYm9hcmRUeXBlKCksIFdlYkNvcmU6OmxlZ2FjeVJURlBhc3RlYm9hcmRU
eXBlKCksIFdlYkNvcmU6OmxlZ2FjeVN0cmluZ1Bhc3RlYm9hcmRUeXBlKCksIFdlYkNvcmU6Omxl
Z2FjeUNvbG9yUGFzdGVib2FyZFR5cGUoKSwgKF9fYnJpZGdlIE5TU3RyaW5nICopa1VUVHlwZVBO
R10pOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8TlNBcnJheT4+IHR5cGVz
ID0gQFtXZWJBcmNoaXZlUGJvYXJkVHlwZSwgKF9fYnJpZGdlIE5TU3RyaW5nICopa1VUVHlwZVdl
YkFyY2hpdmUsIFdlYkNvcmU6OmxlZ2FjeUhUTUxQYXN0ZWJvYXJkVHlwZSgpLCBXZWJDb3JlOjps
ZWdhY3lGaWxlbmFtZXNQYXN0ZWJvYXJkVHlwZSgpLCBXZWJDb3JlOjpsZWdhY3lUSUZGUGFzdGVi
b2FyZFR5cGUoKSwgV2ViQ29yZTo6bGVnYWN5UERGUGFzdGVib2FyZFR5cGUoKSwKKyAgICAgICAg
V2ViQ29yZTo6bGVnYWN5VVJMUGFzdGVib2FyZFR5cGUoKSwgV2ViQ29yZTo6bGVnYWN5UlRGRFBh
c3RlYm9hcmRUeXBlKCksIFdlYkNvcmU6OmxlZ2FjeVJURlBhc3RlYm9hcmRUeXBlKCksIFdlYkNv
cmU6OmxlZ2FjeVN0cmluZ1Bhc3RlYm9hcmRUeXBlKCksIFdlYkNvcmU6OmxlZ2FjeUNvbG9yUGFz
dGVib2FyZFR5cGUoKSwgKF9fYnJpZGdlIE5TU3RyaW5nICopa1VUVHlwZVBOR107CiBBTExPV19E
RVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKLSAgICByZXR1cm4gdHlwZXM7CisgICAgcmV0dXJu
IHR5cGVzLmdldCgpLmdldCgpOwogfQogCiBOU0FycmF5KiBQYXN0ZWJvYXJkVHlwZXM6OmZvclVS
TCgpCiB7Ci0gICAgc3RhdGljIE5TQXJyYXkgKnR5cGVzID0gcmV0YWluKEBbV2ViVVJMc1dpdGhU
aXRsZXNQYm9hcmRUeXBlLCBXZWJDb3JlOjpsZWdhY3lVUkxQYXN0ZWJvYXJkVHlwZSgpLCBXZWJV
UkxQYm9hcmRUeXBlLCAgV2ViVVJMTmFtZVBib2FyZFR5cGUsIFdlYkNvcmU6OmxlZ2FjeVN0cmlu
Z1Bhc3RlYm9hcmRUeXBlKCksIFdlYkNvcmU6OmxlZ2FjeUZpbGVuYW1lc1Bhc3RlYm9hcmRUeXBl
KCksIFdlYkNvcmU6OmxlZ2FjeUZpbGVzUHJvbWlzZVBhc3RlYm9hcmRUeXBlKCldKTsKLSAgICBy
ZXR1cm4gdHlwZXM7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxOU0FycmF5
Pj4gdHlwZXMgPSBAW1dlYlVSTHNXaXRoVGl0bGVzUGJvYXJkVHlwZSwgV2ViQ29yZTo6bGVnYWN5
VVJMUGFzdGVib2FyZFR5cGUoKSwgV2ViVVJMUGJvYXJkVHlwZSwgIFdlYlVSTE5hbWVQYm9hcmRU
eXBlLCBXZWJDb3JlOjpsZWdhY3lTdHJpbmdQYXN0ZWJvYXJkVHlwZSgpLCBXZWJDb3JlOjpsZWdh
Y3lGaWxlbmFtZXNQYXN0ZWJvYXJkVHlwZSgpLCBXZWJDb3JlOjpsZWdhY3lGaWxlc1Byb21pc2VQ
YXN0ZWJvYXJkVHlwZSgpXTsKKyAgICByZXR1cm4gdHlwZXMuZ2V0KCkuZ2V0KCk7CiB9CiAKIE5T
QXJyYXkqIFBhc3RlYm9hcmRUeXBlczo6Zm9ySW1hZ2VzKCkKIHsKLSAgICBzdGF0aWMgTlNBcnJh
eSAqdHlwZXMgPSByZXRhaW4oQFtXZWJDb3JlOjpsZWdhY3lUSUZGUGFzdGVib2FyZFR5cGUoKSwg
V2ViVVJMc1dpdGhUaXRsZXNQYm9hcmRUeXBlLCBXZWJDb3JlOjpsZWdhY3lVUkxQYXN0ZWJvYXJk
VHlwZSgpLCBXZWJVUkxQYm9hcmRUeXBlLCBXZWJVUkxOYW1lUGJvYXJkVHlwZSwgV2ViQ29yZTo6
bGVnYWN5U3RyaW5nUGFzdGVib2FyZFR5cGUoKV0pOwotICAgIHJldHVybiB0eXBlczsKKyAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPE5TQXJyYXk+PiB0eXBlcyA9IEBbV2ViQ29y
ZTo6bGVnYWN5VElGRlBhc3RlYm9hcmRUeXBlKCksIFdlYlVSTHNXaXRoVGl0bGVzUGJvYXJkVHlw
ZSwgV2ViQ29yZTo6bGVnYWN5VVJMUGFzdGVib2FyZFR5cGUoKSwgV2ViVVJMUGJvYXJkVHlwZSwg
V2ViVVJMTmFtZVBib2FyZFR5cGUsIFdlYkNvcmU6OmxlZ2FjeVN0cmluZ1Bhc3RlYm9hcmRUeXBl
KCldOworICAgIHJldHVybiB0eXBlcy5nZXQoKS5nZXQoKTsKIH0KIAogTlNBcnJheSogUGFzdGVi
b2FyZFR5cGVzOjpmb3JJbWFnZXNXaXRoQXJjaGl2ZSgpCiB7Ci0gICAgc3RhdGljIE5TQXJyYXkg
KnR5cGVzID0gcmV0YWluKEBbV2ViQ29yZTo6bGVnYWN5VElGRlBhc3RlYm9hcmRUeXBlKCksIFdl
YlVSTHNXaXRoVGl0bGVzUGJvYXJkVHlwZSwgV2ViQ29yZTo6bGVnYWN5VVJMUGFzdGVib2FyZFR5
cGUoKSwgV2ViVVJMUGJvYXJkVHlwZSwgV2ViVVJMTmFtZVBib2FyZFR5cGUsIFdlYkNvcmU6Omxl
Z2FjeVN0cmluZ1Bhc3RlYm9hcmRUeXBlKCksIFdlYkNvcmU6OmxlZ2FjeVJURkRQYXN0ZWJvYXJk
VHlwZSgpLCBXZWJBcmNoaXZlUGJvYXJkVHlwZV0pOwotICAgIHJldHVybiB0eXBlczsKKyAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPE5TQXJyYXk+PiB0eXBlcyA9IEBbV2ViQ29y
ZTo6bGVnYWN5VElGRlBhc3RlYm9hcmRUeXBlKCksIFdlYlVSTHNXaXRoVGl0bGVzUGJvYXJkVHlw
ZSwgV2ViQ29yZTo6bGVnYWN5VVJMUGFzdGVib2FyZFR5cGUoKSwgV2ViVVJMUGJvYXJkVHlwZSwg
V2ViVVJMTmFtZVBib2FyZFR5cGUsIFdlYkNvcmU6OmxlZ2FjeVN0cmluZ1Bhc3RlYm9hcmRUeXBl
KCksIFdlYkNvcmU6OmxlZ2FjeVJURkRQYXN0ZWJvYXJkVHlwZSgpLCBXZWJBcmNoaXZlUGJvYXJk
VHlwZV07CisgICAgcmV0dXJuIHR5cGVzLmdldCgpLmdldCgpOwogfQogCiBOU0FycmF5KiBQYXN0
ZWJvYXJkVHlwZXM6OmZvclNlbGVjdGlvbigpCiB7CiBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFU
SU9OU19CRUdJTiAKLSAgICBzdGF0aWMgTlNBcnJheSAqdHlwZXMgPSByZXRhaW4oQFtXZWJBcmNo
aXZlUGJvYXJkVHlwZSwgKF9fYnJpZGdlIE5TU3RyaW5nICopa1VUVHlwZVdlYkFyY2hpdmUsIFdl
YkNvcmU6OmxlZ2FjeVJURkRQYXN0ZWJvYXJkVHlwZSgpLCBXZWJDb3JlOjpsZWdhY3lSVEZQYXN0
ZWJvYXJkVHlwZSgpLCBXZWJDb3JlOjpsZWdhY3lTdHJpbmdQYXN0ZWJvYXJkVHlwZSgpXSk7Cisg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxOU0FycmF5Pj4gdHlwZXMgPSBAW1dl
YkFyY2hpdmVQYm9hcmRUeXBlLCAoX19icmlkZ2UgTlNTdHJpbmcgKilrVVRUeXBlV2ViQXJjaGl2
ZSwgV2ViQ29yZTo6bGVnYWN5UlRGRFBhc3RlYm9hcmRUeXBlKCksIFdlYkNvcmU6OmxlZ2FjeVJU
RlBhc3RlYm9hcmRUeXBlKCksIFdlYkNvcmU6OmxlZ2FjeVN0cmluZ1Bhc3RlYm9hcmRUeXBlKCld
OwogQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECi0gICAgcmV0dXJuIHR5cGVzOwor
ICAgIHJldHVybiB0eXBlcy5nZXQoKS5nZXQoKTsKIH0KICAgICAKIH0gLy8gbmFtZXNwYWNlIFdl
YktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0lt
cGwubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQppbmRl
eCBhNWM2YmJjMGNjZmU0ZmIyZWIzMDk3NzdjZThmN2U3Y2E2YmIzOTljLi5lNmZiNzgxMGY5NjU3
OGVlMjNmMWY5YmEyMzFhYTE0MzY5OTlkODkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9XZWJWaWV3SW1wbC5tbQpAQCAtMjI1OSw4ICsyMjU5LDcgQEAgYm9vbCBXZWJWaWV3
SW1wbDo6YWNjZXB0c0ZpcnN0TW91c2UoTlNFdmVudCAqZXZlbnQpCiAgICAgLy8gVGhlcmUncyBh
IGNoYW5jZSB0aGF0IHJlc3BvbmRpbmcgdG8gdGhpcyBldmVudCB3aWxsIHJ1biBhIG5lc3RlZCBl
dmVudCBsb29wLCBhbmQKICAgICAvLyBmZXRjaGluZyBhIG5ldyBldmVudCBtaWdodCByZWxlYXNl
IHRoZSBvbGQgb25lLiBSZXRhaW5pbmcgYW5kIHRoZW4gYXV0b3JlbGVhc2luZwogICAgIC8vIHRo
ZSBjdXJyZW50IGV2ZW50IHByZXZlbnRzIHRoYXQgZnJvbSBjYXVzaW5nIGEgcHJvYmxlbSBpbnNp
ZGUgV2ViS2l0IG9yIEFwcEtpdCBjb2RlLgotICAgIENGUmV0YWluKChfX2JyaWRnZSBDRlR5cGVS
ZWYpZXZlbnQpOwotICAgIENGQXV0b3JlbGVhc2UoKF9fYnJpZGdlIENGVHlwZVJlZilldmVudCk7
CisgICAgcmV0YWluUHRyKGV2ZW50KS5hdXRvcmVsZWFzZSgpOwogCiAgICAgaWYgKCFbbV92aWV3
IGhpdFRlc3Q6ZXZlbnQubG9jYXRpb25JbldpbmRvd10pCiAgICAgICAgIHJldHVybiBmYWxzZTsK
QEAgLTIyNzksOCArMjI3OCw3IEBAIGJvb2wgV2ViVmlld0ltcGw6OnNob3VsZERlbGF5V2luZG93
T3JkZXJpbmdGb3JFdmVudChOU0V2ZW50ICpldmVudCkKICAgICAvLyBUaGVyZSdzIGEgY2hhbmNl
IHRoYXQgcmVzcG9uZGluZyB0byB0aGlzIGV2ZW50IHdpbGwgcnVuIGEgbmVzdGVkIGV2ZW50IGxv
b3AsIGFuZAogICAgIC8vIGZldGNoaW5nIGEgbmV3IGV2ZW50IG1pZ2h0IHJlbGVhc2UgdGhlIG9s
ZCBvbmUuIFJldGFpbmluZyBhbmQgdGhlbiBhdXRvcmVsZWFzaW5nCiAgICAgLy8gdGhlIGN1cnJl
bnQgZXZlbnQgcHJldmVudHMgdGhhdCBmcm9tIGNhdXNpbmcgYSBwcm9ibGVtIGluc2lkZSBXZWJL
aXQgb3IgQXBwS2l0IGNvZGUuCi0gICAgQ0ZSZXRhaW4oKF9fYnJpZGdlIENGVHlwZVJlZilldmVu
dCk7Ci0gICAgQ0ZBdXRvcmVsZWFzZSgoX19icmlkZ2UgQ0ZUeXBlUmVmKWV2ZW50KTsKKyAgICBy
ZXRhaW5QdHIoZXZlbnQpLmF1dG9yZWxlYXNlKCk7CiAKICAgICBpZiAoIVttX3ZpZXcgaGl0VGVz
dDpldmVudC5sb2NhdGlvbkluV2luZG93XSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNDgx
MSwyNCArNDgwOSwyMCBAQCB2b2lkIFdlYlZpZXdJbXBsOjpkb25lV2l0aEtleUV2ZW50KE5TRXZl
bnQgKmV2ZW50LCBib29sIGV2ZW50V2FzSGFuZGxlZCkKIAogTlNBcnJheSAqV2ViVmlld0ltcGw6
OnZhbGlkQXR0cmlidXRlc0Zvck1hcmtlZFRleHQoKQogewotICAgIHN0YXRpYyBOU0FycmF5ICp2
YWxpZEF0dHJpYnV0ZXM7Ci0gICAgaWYgKCF2YWxpZEF0dHJpYnV0ZXMpIHsKLSAgICAgICAgdmFs
aWRBdHRyaWJ1dGVzID0gQFsKLSAgICAgICAgICAgIE5TVW5kZXJsaW5lU3R5bGVBdHRyaWJ1dGVO
YW1lLAotICAgICAgICAgICAgTlNVbmRlcmxpbmVDb2xvckF0dHJpYnV0ZU5hbWUsCi0gICAgICAg
ICAgICBOU01hcmtlZENsYXVzZVNlZ21lbnRBdHRyaWJ1dGVOYW1lLAotICAgICAgICAgICAgTlNU
ZXh0QWx0ZXJuYXRpdmVzQXR0cmlidXRlTmFtZSwKLSAgICAgICAgICAgIE5TVGV4dEluc2VydGlv
blVuZG9hYmxlQXR0cmlidXRlTmFtZSwKLSAgICAgICAgXTsKLSAgICAgICAgLy8gTlNUZXh0IGFs
c28gc3VwcG9ydHMgdGhlIGZvbGxvd2luZyBhdHRyaWJ1dGVzLCBidXQgaXQncwotICAgICAgICAv
LyBoYXJkIHRvIHRlbGwgd2hpY2ggYXJlIHJlYWxseSByZXF1aXJlZCBmb3IgdGV4dCBpbnB1dCB0
bwotICAgICAgICAvLyB3b3JrIHdlbGw7IEkgaGF2ZSBub3Qgc2VlbiBhbnkgaW5wdXQgbWV0aG9k
IG1ha2UgdXNlIG9mIHRoZW0geWV0LgotICAgICAgICAvLyAgICAgTlNGb250QXR0cmlidXRlTmFt
ZSwgTlNGb3JlZ3JvdW5kQ29sb3JBdHRyaWJ1dGVOYW1lLAotICAgICAgICAvLyAgICAgTlNCYWNr
Z3JvdW5kQ29sb3JBdHRyaWJ1dGVOYW1lLCBOU0xhbmd1YWdlQXR0cmlidXRlTmFtZS4KLSAgICAg
ICAgQ0ZSZXRhaW4odmFsaWRBdHRyaWJ1dGVzKTsKLSAgICB9CisgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPFJldGFpblB0cjxOU0FycmF5Pj4gdmFsaWRBdHRyaWJ1dGVzID0gQFsKKyAgICAgICAg
TlNVbmRlcmxpbmVTdHlsZUF0dHJpYnV0ZU5hbWUsCisgICAgICAgIE5TVW5kZXJsaW5lQ29sb3JB
dHRyaWJ1dGVOYW1lLAorICAgICAgICBOU01hcmtlZENsYXVzZVNlZ21lbnRBdHRyaWJ1dGVOYW1l
LAorICAgICAgICBOU1RleHRBbHRlcm5hdGl2ZXNBdHRyaWJ1dGVOYW1lLAorICAgICAgICBOU1Rl
eHRJbnNlcnRpb25VbmRvYWJsZUF0dHJpYnV0ZU5hbWUsCisgICAgXTsKKyAgICAvLyBOU1RleHQg
YWxzbyBzdXBwb3J0cyB0aGUgZm9sbG93aW5nIGF0dHJpYnV0ZXMsIGJ1dCBpdCdzCisgICAgLy8g
aGFyZCB0byB0ZWxsIHdoaWNoIGFyZSByZWFsbHkgcmVxdWlyZWQgZm9yIHRleHQgaW5wdXQgdG8K
KyAgICAvLyB3b3JrIHdlbGw7IEkgaGF2ZSBub3Qgc2VlbiBhbnkgaW5wdXQgbWV0aG9kIG1ha2Ug
dXNlIG9mIHRoZW0geWV0LgorICAgIC8vICAgICBOU0ZvbnRBdHRyaWJ1dGVOYW1lLCBOU0ZvcmVn
cm91bmRDb2xvckF0dHJpYnV0ZU5hbWUsCisgICAgLy8gICAgIE5TQmFja2dyb3VuZENvbG9yQXR0
cmlidXRlTmFtZSwgTlNMYW5ndWFnZUF0dHJpYnV0ZU5hbWUuCiAgICAgTE9HKFRleHRJbnB1dCwg
InZhbGlkQXR0cmlidXRlc0Zvck1hcmtlZFRleHQgLT4gKC4uLikiKTsKLSAgICByZXR1cm4gdmFs
aWRBdHRyaWJ1dGVzOworICAgIHJldHVybiB2YWxpZEF0dHJpYnV0ZXMuZ2V0KCkuZ2V0KCk7CiB9
CiAKIHN0YXRpYyBWZWN0b3I8V2ViQ29yZTo6Q29tcG9zaXRpb25VbmRlcmxpbmU+IGV4dHJhY3RV
bmRlcmxpbmVzKE5TQXR0cmlidXRlZFN0cmluZyAqc3RyaW5nKQpAQCAtNTIwMiw4ICs1MTk2LDcg
QEAgYm9vbCBXZWJWaWV3SW1wbDo6cGVyZm9ybUtleUVxdWl2YWxlbnQoTlNFdmVudCAqZXZlbnQp
CiAgICAgLy8gVGhlcmUncyBhIGNoYW5jZSB0aGF0IHJlc3BvbmRpbmcgdG8gdGhpcyBldmVudCB3
aWxsIHJ1biBhIG5lc3RlZCBldmVudCBsb29wLCBhbmQKICAgICAvLyBmZXRjaGluZyBhIG5ldyBl
dmVudCBtaWdodCByZWxlYXNlIHRoZSBvbGQgb25lLiBSZXRhaW5pbmcgYW5kIHRoZW4gYXV0b3Jl
bGVhc2luZwogICAgIC8vIHRoZSBjdXJyZW50IGV2ZW50IHByZXZlbnRzIHRoYXQgZnJvbSBjYXVz
aW5nIGEgcHJvYmxlbSBpbnNpZGUgV2ViS2l0IG9yIEFwcEtpdCBjb2RlLgotICAgIENGUmV0YWlu
KChfX2JyaWRnZSBDRlR5cGVSZWYpZXZlbnQpOwotICAgIENGQXV0b3JlbGVhc2UoKF9fYnJpZGdl
IENGVHlwZVJlZilldmVudCk7CisgICAgcmV0YWluUHRyKGV2ZW50KS5hdXRvcmVsZWFzZSgpOwog
CiAgICAgLy8gV2UgZ2V0IEVzYyBrZXkgaGVyZSBhZnRlciBwcm9jZXNzaW5nIGVpdGhlciBFc2Mg
b3IgQ21kK3BlcmlvZC4gVGhlIGZvcm1lciBzdGFydHMgYXMgYSBrZXlEb3duLCBhbmQgdGhlIGxh
dHRlciBzdGFydHMgYXMgYSBrZXkgZXF1aXZhbGVudCwKICAgICAvLyBidXQgYm90aCBnZXQgdHJh
bnNmb3JtZWQgdG8gYSBjYW5jZWxPcGVyYXRpb246IGNvbW1hbmQsIGV4ZWN1dGluZyB3aGljaCBw
YXNzZXMgYW4gRXNjIGtleSBldmVudCB0byAtcGVyZm9ybUtleUVxdWl2YWxlbnQ6LgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL2lvcy9XS0luc3BlY3Rvckhp
Z2hsaWdodFZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvaW9zL1dL
SW5zcGVjdG9ySGlnaGxpZ2h0Vmlldy5tbQppbmRleCA0NDEyNDQzN2MyNDM0MjVjM2VkZGI5OTM3
NmNkNjIyNGYyZmMxNmEzLi5iMWIwYmUzNGJmMzMwYzBlZTU1NWVkOGRjNzQxZmM2NDJiMTA5YWY0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvaW9zL1dLSW5z
cGVjdG9ySGlnaGxpZ2h0Vmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNw
ZWN0b3IvaW9zL1dLSW5zcGVjdG9ySGlnaGxpZ2h0Vmlldy5tbQpAQCAtMTgzLDI4ICsxODMsMjYg
QEAgc3RhdGljIHZvaWQgbGF5ZXJQYXRoV2l0aEhvbGUoQ0FTaGFwZUxheWVyICpsYXllciwgY29u
c3QgV2ViQ29yZTo6RmxvYXRRdWFkJiBvdXQKICAgICAgICAgaW5uZXJIb2xlID0gcXVhZEludGVy
c2VjdGlvbihvdXRlclF1YWQsIGhvbGVRdWFkKTsKIAogICAgIC8vIENsb2Nrd2lzZSBpbnNpZGUg
cmVjdCAoaG9sZSksIENvdW50ZXItQ2xvY2t3aXNlIG91dHNpZGUgcmVjdCAoZmlsbCkuCi0gICAg
Q0dNdXRhYmxlUGF0aFJlZiBwYXRoID0gQ0dQYXRoQ3JlYXRlTXV0YWJsZSgpOwotICAgIENHUGF0
aE1vdmVUb1BvaW50KHBhdGgsIDAsIGlubmVySG9sZS5wMSgpLngoKSwgaW5uZXJIb2xlLnAxKCku
eSgpKTsKLSAgICBDR1BhdGhBZGRMaW5lVG9Qb2ludChwYXRoLCAwLCBpbm5lckhvbGUucDIoKS54
KCksIGlubmVySG9sZS5wMigpLnkoKSk7Ci0gICAgQ0dQYXRoQWRkTGluZVRvUG9pbnQocGF0aCwg
MCwgaW5uZXJIb2xlLnAzKCkueCgpLCBpbm5lckhvbGUucDMoKS55KCkpOwotICAgIENHUGF0aEFk
ZExpbmVUb1BvaW50KHBhdGgsIDAsIGlubmVySG9sZS5wNCgpLngoKSwgaW5uZXJIb2xlLnA0KCku
eSgpKTsKLSAgICBDR1BhdGhNb3ZlVG9Qb2ludChwYXRoLCAwLCBvdXRlclF1YWQucDEoKS54KCks
IG91dGVyUXVhZC5wMSgpLnkoKSk7Ci0gICAgQ0dQYXRoQWRkTGluZVRvUG9pbnQocGF0aCwgMCwg
b3V0ZXJRdWFkLnA0KCkueCgpLCBvdXRlclF1YWQucDQoKS55KCkpOwotICAgIENHUGF0aEFkZExp
bmVUb1BvaW50KHBhdGgsIDAsIG91dGVyUXVhZC5wMygpLngoKSwgb3V0ZXJRdWFkLnAzKCkueSgp
KTsKLSAgICBDR1BhdGhBZGRMaW5lVG9Qb2ludChwYXRoLCAwLCBvdXRlclF1YWQucDIoKS54KCks
IG91dGVyUXVhZC5wMigpLnkoKSk7Ci0gICAgbGF5ZXIucGF0aCA9IHBhdGg7Ci0gICAgQ0dQYXRo
UmVsZWFzZShwYXRoKTsKKyAgICBhdXRvIHBhdGggPSBhZG9wdENGKENHUGF0aENyZWF0ZU11dGFi
bGUoKSk7CisgICAgQ0dQYXRoTW92ZVRvUG9pbnQocGF0aC5nZXQoKSwgMCwgaW5uZXJIb2xlLnAx
KCkueCgpLCBpbm5lckhvbGUucDEoKS55KCkpOworICAgIENHUGF0aEFkZExpbmVUb1BvaW50KHBh
dGguZ2V0KCksIDAsIGlubmVySG9sZS5wMigpLngoKSwgaW5uZXJIb2xlLnAyKCkueSgpKTsKKyAg
ICBDR1BhdGhBZGRMaW5lVG9Qb2ludChwYXRoLmdldCgpLCAwLCBpbm5lckhvbGUucDMoKS54KCks
IGlubmVySG9sZS5wMygpLnkoKSk7CisgICAgQ0dQYXRoQWRkTGluZVRvUG9pbnQocGF0aC5nZXQo
KSwgMCwgaW5uZXJIb2xlLnA0KCkueCgpLCBpbm5lckhvbGUucDQoKS55KCkpOworICAgIENHUGF0
aE1vdmVUb1BvaW50KHBhdGguZ2V0KCksIDAsIG91dGVyUXVhZC5wMSgpLngoKSwgb3V0ZXJRdWFk
LnAxKCkueSgpKTsKKyAgICBDR1BhdGhBZGRMaW5lVG9Qb2ludChwYXRoLmdldCgpLCAwLCBvdXRl
clF1YWQucDQoKS54KCksIG91dGVyUXVhZC5wNCgpLnkoKSk7CisgICAgQ0dQYXRoQWRkTGluZVRv
UG9pbnQocGF0aC5nZXQoKSwgMCwgb3V0ZXJRdWFkLnAzKCkueCgpLCBvdXRlclF1YWQucDMoKS55
KCkpOworICAgIENHUGF0aEFkZExpbmVUb1BvaW50KHBhdGguZ2V0KCksIDAsIG91dGVyUXVhZC5w
MigpLngoKSwgb3V0ZXJRdWFkLnAyKCkueSgpKTsKKyAgICBsYXllci5wYXRoID0gcGF0aC5nZXQo
KTsKIH0KIAogc3RhdGljIHZvaWQgbGF5ZXJQYXRoKENBU2hhcGVMYXllciAqbGF5ZXIsIGNvbnN0
IFdlYkNvcmU6OkZsb2F0UXVhZCYgb3V0ZXJRdWFkKQogewotICAgIENHTXV0YWJsZVBhdGhSZWYg
cGF0aCA9IENHUGF0aENyZWF0ZU11dGFibGUoKTsKLSAgICBDR1BhdGhNb3ZlVG9Qb2ludChwYXRo
LCAwLCBvdXRlclF1YWQucDEoKS54KCksIG91dGVyUXVhZC5wMSgpLnkoKSk7Ci0gICAgQ0dQYXRo
QWRkTGluZVRvUG9pbnQocGF0aCwgMCwgb3V0ZXJRdWFkLnA0KCkueCgpLCBvdXRlclF1YWQucDQo
KS55KCkpOwotICAgIENHUGF0aEFkZExpbmVUb1BvaW50KHBhdGgsIDAsIG91dGVyUXVhZC5wMygp
LngoKSwgb3V0ZXJRdWFkLnAzKCkueSgpKTsKLSAgICBDR1BhdGhBZGRMaW5lVG9Qb2ludChwYXRo
LCAwLCBvdXRlclF1YWQucDIoKS54KCksIG91dGVyUXVhZC5wMigpLnkoKSk7Ci0gICAgbGF5ZXIu
cGF0aCA9IHBhdGg7Ci0gICAgQ0dQYXRoUmVsZWFzZShwYXRoKTsKKyAgICBhdXRvIHBhdGggPSBh
ZG9wdENGKENHUGF0aENyZWF0ZU11dGFibGUoKSk7CisgICAgQ0dQYXRoTW92ZVRvUG9pbnQocGF0
aC5nZXQoKSwgMCwgb3V0ZXJRdWFkLnAxKCkueCgpLCBvdXRlclF1YWQucDEoKS55KCkpOworICAg
IENHUGF0aEFkZExpbmVUb1BvaW50KHBhdGguZ2V0KCksIDAsIG91dGVyUXVhZC5wNCgpLngoKSwg
b3V0ZXJRdWFkLnA0KCkueSgpKTsKKyAgICBDR1BhdGhBZGRMaW5lVG9Qb2ludChwYXRoLmdldCgp
LCAwLCBvdXRlclF1YWQucDMoKS54KCksIG91dGVyUXVhZC5wMygpLnkoKSk7CisgICAgQ0dQYXRo
QWRkTGluZVRvUG9pbnQocGF0aC5nZXQoKSwgMCwgb3V0ZXJRdWFkLnAyKCkueCgpLCBvdXRlclF1
YWQucDIoKS55KCkpOworICAgIGxheWVyLnBhdGggPSBwYXRoLmdldCgpOwogfQogCiAtICh2b2lk
KV9sYXlvdXRGb3JOb2RlSGlnaGxpZ2h0Oihjb25zdCBXZWJDb3JlOjpJbnNwZWN0b3JPdmVybGF5
OjpIaWdobGlnaHQmKWhpZ2hsaWdodCBvZmZzZXQ6KHVuc2lnbmVkKW9mZnNldApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvX1dLVG91Y2hFdmVudEdlbmVyYXRvci5tbSBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL19XS1RvdWNoRXZlbnRHZW5lcmF0b3IubW0KaW5kZXggZTJj
NzE4MTExNGY5Y2M5YTlkMTM4OTBiOTcxMjU2MDIzZDZhODM1OC4uMjE5ZGJhNTdlZjBmNTA0NDkz
MDU4YzYwY2I0ZGVjY2U4MmFmODRjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvX1dLVG91Y2hFdmVudEdlbmVyYXRvci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9fV0tUb3VjaEV2ZW50R2VuZXJhdG9yLm1tCkBAIC05OCw3ICs5OCw3IEBAIEBwcm9wZXJ0eSAo
bm9uYXRvbWljLCBzdHJvbmcpIE5TTXV0YWJsZURpY3Rpb25hcnkgKmV2ZW50Q2FsbGJhY2tzOwog
QGVuZAogCiBAaW1wbGVtZW50YXRpb24gX1dLVG91Y2hFdmVudEdlbmVyYXRvciB7Ci0gICAgSU9I
SURFdmVudFN5c3RlbUNsaWVudFJlZiBfaW9TeXN0ZW1DbGllbnQ7CisgICAgUmV0YWluUHRyPElP
SElERXZlbnRTeXN0ZW1DbGllbnRSZWY+IF9pb1N5c3RlbUNsaWVudDsKICAgICBTeW50aGV0aWNF
dmVudERpZ2l0aXplckluZm8gX2FjdGl2ZVBvaW50c1tISURNYXhUb3VjaENvdW50XTsKICAgICBO
U1VJbnRlZ2VyIF9hY3RpdmVQb2ludENvdW50OwogfQpAQCAtMTMxLDkgKzEzMSw2IEBAIC0gKGlu
c3RhbmNldHlwZSlpbml0CiAKIC0gKHZvaWQpZGVhbGxvYwogewotICBpZiAoX2lvU3lzdGVtQ2xp
ZW50KQotICAgICAgICBDRlJlbGVhc2UoX2lvU3lzdGVtQ2xpZW50KTsKLQogICAgIFtfZXZlbnRD
YWxsYmFja3MgcmVsZWFzZV07CiAgICAgW3N1cGVyIGRlYWxsb2NdOwogfQpAQCAtMjEwLDcgKzIw
Nyw3IEBAIC0gKElPSElERXZlbnRSZWYpX2NyZWF0ZUlPSElERXZlbnRUeXBlOihIYW5kRXZlbnRU
eXBlKWV2ZW50VHlwZQogLSAoQk9PTClfc2VuZEhJREV2ZW50OihJT0hJREV2ZW50UmVmKWV2ZW50
UmVmCiB7CiAgICAgaWYgKCFfaW9TeXN0ZW1DbGllbnQpCi0gICAgICAgIF9pb1N5c3RlbUNsaWVu
dCA9IElPSElERXZlbnRTeXN0ZW1DbGllbnRDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCk7Cisg
ICAgICAgIF9pb1N5c3RlbUNsaWVudCA9IGFkb3B0Q0YoSU9ISURFdmVudFN5c3RlbUNsaWVudENy
ZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0KSk7CiAKICAgICBpZiAoZXZlbnRSZWYpIHsKICAgICAg
ICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtzdHJvbmdFdmVudCA9IHJldGFpblB0cihldmVu
dFJlZildIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mdWxsc2Ny
ZWVuL1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXJJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvZnVsbHNjcmVlbi9XS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVySU9TLm1t
CmluZGV4IDAzM2NlZWZmYjM0NGI0YzdhYTMxMGQ4YzM3NDlhOTBlZmM0NmMxMTIuLjg0NGVlMzIw
MDliODIyZDg2MjVkZmYxYzYyZWQ3OTQwZjU5ODYyNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9mdWxsc2NyZWVuL1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXJJ
T1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Z1bGxzY3JlZW4vV0tGdWxs
U2NyZWVuV2luZG93Q29udHJvbGxlcklPUy5tbQpAQCAtMTAzMCwyOCArMTAzMCwyOCBAQCAtIChO
U1N0cmluZyAqKV9FVk9yZ2FuaXphdGlvbk5hbWUKICAgICBpZiAoIXRydXN0KQogICAgICAgICBy
ZXR1cm4gbmlsOwogCi0gICAgTlNEaWN0aW9uYXJ5ICppbmZvRGljdGlvbmFyeSA9IENGQnJpZGdp
bmdSZWxlYXNlKFNlY1RydXN0Q29weUluZm8odHJ1c3QpKTsKKyAgICBhdXRvIGluZm9EaWN0aW9u
YXJ5ID0gYWRvcHRDRihTZWNUcnVzdENvcHlJbmZvKHRydXN0KSk7CiAgICAgLy8gSWYgU2VjVHJ1
c3RDb3B5SW5mbyByZXR1cm5lZCBOVUxMIHRoZW4gaXQncyBsaWtlbHkgdGhhdCB0aGUgU2VjVHJ1
c3RSZWYgaGFzIG5vdCBiZWVuIGV2YWx1YXRlZAogICAgIC8vIGFuZCB0aGUgb25seSB3YXkgdG8g
Z2V0IHRoZSBpbmZvcm1hdGlvbiB3ZSBuZWVkIGlzIHRvIGNhbGwgU2VjVHJ1c3RFdmFsdWF0ZSBv
dXJzZWx2ZXMuCiAgICAgaWYgKCFpbmZvRGljdGlvbmFyeSkgewogICAgICAgICBpZiAoIVNlY1Ry
dXN0RXZhbHVhdGVXaXRoRXJyb3IodHJ1c3QsIG51bGxwdHIpKQogICAgICAgICAgICAgcmV0dXJu
IG5pbDsKLSAgICAgICAgaW5mb0RpY3Rpb25hcnkgPSBDRkJyaWRnaW5nUmVsZWFzZShTZWNUcnVz
dENvcHlJbmZvKHRydXN0KSk7CisgICAgICAgIGluZm9EaWN0aW9uYXJ5ID0gYWRvcHRDRihTZWNU
cnVzdENvcHlJbmZvKHRydXN0KSk7CiAgICAgICAgIGlmICghaW5mb0RpY3Rpb25hcnkpCiAgICAg
ICAgICAgICByZXR1cm4gbmlsOwogICAgIH0KIAogICAgIC8vIE1ha2Ugc3VyZSB0aGF0IHRoZSBF
ViBjZXJ0aWZpY2F0ZSBpcyB2YWxpZCBhZ2FpbnN0IG91ciBjZXJ0aWZpY2F0ZSBjaGFpbi4KLSAg
ICBpZCBoYXNFViA9IFtpbmZvRGljdGlvbmFyeSBvYmplY3RGb3JLZXk6KF9fYnJpZGdlIE5TU3Ry
aW5nICopa1NlY1RydXN0SW5mb0V4dGVuZGVkVmFsaWRhdGlvbktleV07CisgICAgaWQgaGFzRVYg
PSBbKF9fYnJpZGdlIE5TRGljdGlvbmFyeSAqKWluZm9EaWN0aW9uYXJ5IG9iamVjdEZvcktleToo
X19icmlkZ2UgTlNTdHJpbmcgKilrU2VjVHJ1c3RJbmZvRXh0ZW5kZWRWYWxpZGF0aW9uS2V5XTsK
ICAgICBpZiAoIVtoYXNFViBpc0tpbmRPZkNsYXNzOltOU1ZhbHVlIGNsYXNzXV0gfHwgIVtoYXNF
ViBib29sVmFsdWVdKQogICAgICAgICByZXR1cm4gbmlsOwogCiAgICAgLy8gTWFrZSBzdXJlIHRo
YXQgd2UgY291bGQgY29udGFjdCByZXZvY2F0aW9uIHNlcnZlciBhbmQgaXQgaXMgc3RpbGwgdmFs
aWQuCi0gICAgaWQgaXNOb3RSZXZva2VkID0gW2luZm9EaWN0aW9uYXJ5IG9iamVjdEZvcktleToo
X19icmlkZ2UgTlNTdHJpbmcgKilrU2VjVHJ1c3RJbmZvUmV2b2NhdGlvbktleV07CisgICAgaWQg
aXNOb3RSZXZva2VkID0gWyhfX2JyaWRnZSBOU0RpY3Rpb25hcnkgKilpbmZvRGljdGlvbmFyeSBv
YmplY3RGb3JLZXk6KF9fYnJpZGdlIE5TU3RyaW5nICopa1NlY1RydXN0SW5mb1Jldm9jYXRpb25L
ZXldOwogICAgIGlmICghW2lzTm90UmV2b2tlZCBpc0tpbmRPZkNsYXNzOltOU1ZhbHVlIGNsYXNz
XV0gfHwgIVtpc05vdFJldm9rZWQgYm9vbFZhbHVlXSkKICAgICAgICAgcmV0dXJuIG5pbDsKIAot
ICAgIF9FVk9yZ2FuaXphdGlvbk5hbWUgPSBbaW5mb0RpY3Rpb25hcnkgb2JqZWN0Rm9yS2V5Oihf
X2JyaWRnZSBOU1N0cmluZyAqKWtTZWNUcnVzdEluZm9Db21wYW55TmFtZUtleV07CisgICAgX0VW
T3JnYW5pemF0aW9uTmFtZSA9IFsoX19icmlkZ2UgTlNEaWN0aW9uYXJ5ICopaW5mb0RpY3Rpb25h
cnkgb2JqZWN0Rm9yS2V5OihfX2JyaWRnZSBOU1N0cmluZyAqKWtTZWNUcnVzdEluZm9Db21wYW55
TmFtZUtleV07CiAgICAgcmV0dXJuIF9FVk9yZ2FuaXphdGlvbk5hbWUuZ2V0KCk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2Eu
bW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCmlu
ZGV4IGUwYjkxODVhNWFiNzU1ZDNlMTA5MWQyN2VmOTY2YzlmZjA4MWIzZmYuLjg0NjE0MGYyYTNh
MTdjNDhmNDFlZmNjNjI4MWFlYzA2Nzc1Y2I5M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQpAQCAtNTI4LDcgKzUyOCw3IEBAIHZv
aWQgV2ViUHJvY2Vzczo6dXBkYXRlUHJvY2Vzc05hbWUoSXNJblByb2Nlc3NJbml0aWFsaXphdGlv
biBpc0luUHJvY2Vzc0luaXRpYWxpCiBzdGF0aWMgTlNTdHJpbmcgKndlYlByb2Nlc3NMb2FkZXJB
Y2Nlc3NpYmlsaXR5QnVuZGxlUGF0aCgpCiB7CiAjaWYgSEFWRShBQ0NFU1NJQklMSVRZX0JVTkRM
RVNfUEFUSCkKLSAgICByZXR1cm4gKF9fYnJpZGdlIE5TU3RyaW5nICopQ0ZBdXRvcmVsZWFzZShf
QVhTQ29weVBhdGhGb3JBY2Nlc3NpYmlsaXR5QnVuZGxlKENGU1RSKCJXZWJQcm9jZXNzTG9hZGVy
IikpKTsKKyAgICByZXR1cm4gYWRvcHRDRihfQVhTQ29weVBhdGhGb3JBY2Nlc3NpYmlsaXR5QnVu
ZGxlKENGU1RSKCJXZWJQcm9jZXNzTG9hZGVyIikpKS5icmlkZ2luZ0F1dG9yZWxlYXNlKCk7CiAj
ZWxzZQogICAgIE5TU3RyaW5nICpwYXRoID0gKF9fYnJpZGdlIE5TU3RyaW5nICopR1NTeXN0ZW1S
b290RGlyZWN0b3J5KCk7CiAjaWYgUExBVEZPUk0oTUFDQ0FUQUxZU1QpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9NaXNjL1dlYlVJS2l0U3VwcG9ydC5tbSBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvaW9zL01pc2MvV2ViVUlLaXRTdXBwb3J0Lm1tCmluZGV4IDU5MzE0NmMwMzMy
ZWJkNWNkMWMxOWJjMTU3NTczMmMzMTEyNDk2OTEuLjk4YTZjZmZlNTc1YTgxM2I3M2FlMTAxZThj
MmMzMzg2Y2RhZGUzYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL01pc2Mv
V2ViVUlLaXRTdXBwb3J0Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL01pc2MvV2Vi
VUlLaXRTdXBwb3J0Lm1tCkBAIC01NSw5ICs1NSw4IEBAIHN0YXRpYyB2b2lkIExvYWRXZWJMb2Nh
bGl6ZWRTdHJpbmdzVGltZXJDYWxsYmFjayhDRlJ1bkxvb3BUaW1lclJlZiB0aW1lciwgdm9pZCAq
CiAKIHN0YXRpYyB2b2lkIExvYWRXZWJMb2NhbGl6ZWRTdHJpbmdzKCkKIHsKLSAgICBDRlJ1bkxv
b3BUaW1lclJlZiB0aW1lciA9IENGUnVuTG9vcFRpbWVyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1
bHQsIENGQWJzb2x1dGVUaW1lR2V0Q3VycmVudCgpLCAwLCAwLCAwLCAmTG9hZFdlYkxvY2FsaXpl
ZFN0cmluZ3NUaW1lckNhbGxiYWNrLCBOVUxMKTsKLSAgICBDRlJ1bkxvb3BBZGRUaW1lcihDRlJ1
bkxvb3BHZXRDdXJyZW50KCksIHRpbWVyLCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMpOwotICAgIENG
UmVsZWFzZSh0aW1lcik7CisgICAgYXV0byB0aW1lciA9IGFkb3B0Q0YoQ0ZSdW5Mb29wVGltZXJD
cmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgQ0ZBYnNvbHV0ZVRpbWVHZXRDdXJyZW50KCksIDAs
IDAsIDAsICZMb2FkV2ViTG9jYWxpemVkU3RyaW5nc1RpbWVyQ2FsbGJhY2ssIE5VTEwpKTsKKyAg
ICBDRlJ1bkxvb3BBZGRUaW1lcihDRlJ1bkxvb3BHZXRDdXJyZW50KCksIHRpbWVyLmdldCgpLCBr
Q0ZSdW5Mb29wQ29tbW9uTW9kZXMpOwogfQogCiB2b2lkIFdlYktpdEluaXRpYWxpemUodm9pZCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYlZpZXcvV2ViUERGVmlld0lP
Uy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYlZpZXcvV2ViUERGVmlld0lPUy5tbQpp
bmRleCBhYTg3N2RhMDI5YjA2ZGE5YTJmOGE2ZDZhY2MwMDkwMTkwZTczN2FkLi5jYmQ1MGI2ZmNh
ODU1NzE1YzJjN2NjM2Q2MDEyYWJkMTgyZTQwMjgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L2lvcy9XZWJWaWV3L1dlYlBERlZpZXdJT1MubW0KKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS9pb3MvV2ViVmlldy9XZWJQREZWaWV3SU9TLm1tCkBAIC0zMDIsMTQgKzMwMiwxMSBAQCAt
ICh2b2lkKV9jaGVja1BERlRpdGxlCiAKIC0gKHZvaWQpZmluaXNoZWRMb2FkaW5nV2l0aERhdGFT
b3VyY2U6KFdlYkRhdGFTb3VyY2UgKilkYXRhU291cmNlCiB7Ci0gICAgQ0dEYXRhUHJvdmlkZXJS
ZWYgcHJvdmlkZXIgPSBDR0RhdGFQcm92aWRlckNyZWF0ZVdpdGhDRkRhdGEoKENGRGF0YVJlZilb
ZGF0YVNvdXJjZSBkYXRhXSk7Ci0KKyAgICBhdXRvIHByb3ZpZGVyID0gYWRvcHRDRihDR0RhdGFQ
cm92aWRlckNyZWF0ZVdpdGhDRkRhdGEoKENGRGF0YVJlZilbZGF0YVNvdXJjZSBkYXRhXSkpOwog
ICAgIGlmICghcHJvdmlkZXIpIAogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgX1BERkRvY3Vt
ZW50ID0gQ0dQREZEb2N1bWVudENyZWF0ZVdpdGhQcm92aWRlcihwcm92aWRlcik7Ci0gICAgQ0dE
YXRhUHJvdmlkZXJSZWxlYXNlKHByb3ZpZGVyKTsKLSAgICAgICAgCisgICAgX1BERkRvY3VtZW50
ID0gQ0dQREZEb2N1bWVudENyZWF0ZVdpdGhQcm92aWRlcihwcm92aWRlci5nZXQoKSk7CiAgICAg
aWYgKCFfUERGRG9jdW1lbnQpCiAgICAgICAgIHJldHVybjsKICAgICAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYlZpZXcvV2ViUERGVmlld1BsYWNlaG9sZGVyLm1tIGIv
U291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViVmlldy9XZWJQREZWaWV3UGxhY2Vob2xkZXIubW0K
aW5kZXggNzI1NGQwYzVhY2M2YWExYTg3OWI2MmFkMGE0ODg5OWYzY2U3ZGJhMS4uOWJiMDkwYWJh
ODYzZDgyYjY1NTIzNjU0NjlkMDkzYjk5OWE2MGI5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9pb3MvV2ViVmlldy9XZWJQREZWaWV3UGxhY2Vob2xkZXIubW0KKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS9pb3MvV2ViVmlldy9XZWJQREZWaWV3UGxhY2Vob2xkZXIubW0KQEAgLTI3
NCwxMyArMjc0LDExIEBAIC0gKHZvaWQpZmluaXNoZWRMb2FkaW5nV2l0aERhdGFTb3VyY2U6KFdl
YkRhdGFTb3VyY2UgKilkYXRhU291cmNlCiAgICAgW3NlbGYgZGF0YVNvdXJjZVVwZGF0ZWQ6ZGF0
YVNvdXJjZV07CiAKICAgICBfZGlkRmluaXNoTG9hZCA9IFlFUzsKLSAgICBDR0RhdGFQcm92aWRl
clJlZiBwcm92aWRlciA9IENHRGF0YVByb3ZpZGVyQ3JlYXRlV2l0aENGRGF0YSgoQ0ZEYXRhUmVm
KVtkYXRhU291cmNlIGRhdGFdKTsKKyAgICBhdXRvIHByb3ZpZGVyID0gYWRvcHRDRihDR0RhdGFQ
cm92aWRlckNyZWF0ZVdpdGhDRkRhdGEoKENGRGF0YVJlZilbZGF0YVNvdXJjZSBkYXRhXSkpOwog
ICAgIGlmICghcHJvdmlkZXIpCiAgICAgICAgIHJldHVybjsKIAotICAgIF9kb2N1bWVudCA9IENH
UERGRG9jdW1lbnRDcmVhdGVXaXRoUHJvdmlkZXIocHJvdmlkZXIpOwotCi0gICAgQ0dEYXRhUHJv
dmlkZXJSZWxlYXNlKHByb3ZpZGVyKTsKKyAgICBfZG9jdW1lbnQgPSBDR1BERkRvY3VtZW50Q3Jl
YXRlV2l0aFByb3ZpZGVyKHByb3ZpZGVyLmdldCgpKTsKIAogICAgIFtzZWxmIF9kb1Bvc3RMb2Fk
T3JVbmxvY2tUYXNrc107CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9N
aXNjL1dlYkxvY2FsaXphYmxlU3RyaW5ncy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01p
c2MvV2ViTG9jYWxpemFibGVTdHJpbmdzLm1tCmluZGV4IDRlZTAwMzY0MTllN2FmY2JmODUzODIy
ZGM1YmU5NjQ1MThkMDI5NzkuLjI5NDBkNGFiNmYyMDk4M2VjODZiOTJhYWEyZjYxNzJjMjE5NTMw
ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViTG9jYWxpemFi
bGVTdHJpbmdzLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViTG9jYWxp
emFibGVTdHJpbmdzLm1tCkBAIC0zMCw2ICszMCw4IEBACiAKICNpbXBvcnQgPHd0Zi9Bc3NlcnRp
b25zLmg+CiAjaW1wb3J0IDx3dGYvTWFpblRocmVhZC5oPgorI2ltcG9ydCA8d3RmL05ldmVyRGVz
dHJveWVkLmg+CisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAKIFdlYkxvY2FsaXphYmxlU3Ry
aW5nc0J1bmRsZSBXZWJLaXRMb2NhbGl6YWJsZVN0cmluZ3NCdW5kbGUgPSB7ICJjb20uYXBwbGUu
V2ViS2l0IiwgMCB9OwogCkBAIC00NSwxMyArNDcsOSBAQCBOU1N0cmluZyAqV2ViTG9jYWxpemVk
U3RyaW5nKFdlYkxvY2FsaXphYmxlU3RyaW5nc0J1bmRsZSAqc3RyaW5nc0J1bmRsZSwgY29uc3Qg
YwogCiAgICAgTlNCdW5kbGUgKmJ1bmRsZTsKICAgICBpZiAoc3RyaW5nc0J1bmRsZSA9PSBOVUxM
KSB7Ci0gICAgICAgIHN0YXRpYyBOU0J1bmRsZSAqbWFpbkJ1bmRsZTsKLSAgICAgICAgaWYgKG1h
aW5CdW5kbGUgPT0gbmlsKSB7Ci0gICAgICAgICAgICBtYWluQnVuZGxlID0gW05TQnVuZGxlIG1h
aW5CdW5kbGVdOwotICAgICAgICAgICAgQVNTRVJUKG1haW5CdW5kbGUpOwotICAgICAgICAgICAg
Q0ZSZXRhaW4obWFpbkJ1bmRsZSk7Ci0gICAgICAgIH0KLSAgICAgICAgYnVuZGxlID0gbWFpbkJ1
bmRsZTsKKyAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxOU0J1bmRsZT4+
IG1haW5CdW5kbGUgPSBbTlNCdW5kbGUgbWFpbkJ1bmRsZV07CisgICAgICAgIEFTU0VSVChtYWlu
QnVuZGxlLmdldCgpKTsKKyAgICAgICAgYnVuZGxlID0gbWFpbkJ1bmRsZS5nZXQoKS5nZXQoKTsK
ICAgICB9IGVsc2UgewogICAgICAgICBidW5kbGUgPSBzdHJpbmdzQnVuZGxlLT5idW5kbGU7CiAg
ICAgICAgIGlmIChidW5kbGUgPT0gbmlsKSB7CkBAIC02MSw5ICs1OSw4IEBAIE5TU3RyaW5nICpX
ZWJMb2NhbGl6ZWRTdHJpbmcoV2ViTG9jYWxpemFibGVTdHJpbmdzQnVuZGxlICpzdHJpbmdzQnVu
ZGxlLCBjb25zdCBjCiAgICAgICAgIH0KICAgICB9CiAgICAgTlNTdHJpbmcgKm5vdEZvdW5kID0g
QCJsb2NhbGl6ZWQgc3RyaW5nIG5vdCBmb3VuZCI7Ci0gICAgQ0ZTdHJpbmdSZWYga2V5U3RyaW5n
ID0gQ0ZTdHJpbmdDcmVhdGVXaXRoQ1N0cmluZ05vQ29weShOVUxMLCBrZXksIGtDRlN0cmluZ0Vu
Y29kaW5nVVRGOCwga0NGQWxsb2NhdG9yTnVsbCk7Ci0gICAgTlNTdHJpbmcgKnJlc3VsdCA9IFti
dW5kbGUgbG9jYWxpemVkU3RyaW5nRm9yS2V5OihfX2JyaWRnZSBOU1N0cmluZyAqKWtleVN0cmlu
ZyB2YWx1ZTpub3RGb3VuZCB0YWJsZTpuaWxdOwotICAgIENGUmVsZWFzZShrZXlTdHJpbmcpOwor
ICAgIGF1dG8ga2V5U3RyaW5nID0gYWRvcHRDRihDRlN0cmluZ0NyZWF0ZVdpdGhDU3RyaW5nTm9D
b3B5KE5VTEwsIGtleSwga0NGU3RyaW5nRW5jb2RpbmdVVEY4LCBrQ0ZBbGxvY2F0b3JOdWxsKSk7
CisgICAgTlNTdHJpbmcgKnJlc3VsdCA9IFtidW5kbGUgbG9jYWxpemVkU3RyaW5nRm9yS2V5Oihf
X2JyaWRnZSBOU1N0cmluZyAqKWtleVN0cmluZy5nZXQoKSB2YWx1ZTpub3RGb3VuZCB0YWJsZTpu
aWxdOwogICAgIEFTU0VSVF9XSVRIX01FU1NBR0UocmVzdWx0ICE9IG5vdEZvdW5kLCAiY291bGQg
bm90IGZpbmQgbG9jYWxpemFibGUgc3RyaW5nICVzIGluIGJ1bmRsZSIsIGtleSk7CiAgICAgcmV0
dXJuIHJlc3VsdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2Mv
V2ViTlNEYXRhRXh0cmFzLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJOU0Rh
dGFFeHRyYXMubW0KaW5kZXggNmVjN2NjMGRiMjI3MmNlNGJkM2RhMTc0ZWEzMjk0NTg2ZGRmZDE3
ZS4uOGQ1MDZhMjNmYzY0YTBlOTYyOTJiNmUxZjEwZTNmMjQ4MDY4ZTQwMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJOU0RhdGFFeHRyYXMubW0KKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJOU0RhdGFFeHRyYXMubW0KQEAgLTgzLDkgKzgz
LDkgQEAgLSAoTlNTdHJpbmcgKilfd2ViX2NhcGl0YWxpemVSRkM4MjJIZWFkZXJGaWVsZE5hbWUK
ICAgICB9CiAgICAgaWYgKHNvbWV0aGluZ0NoYW5nZWQpIHsKICAgICAgICAgaWYgKHVzZVVuaUNo
YXJQdHIpCi0gICAgICAgICAgICByZXN1bHQgPSBDRkJyaWRnaW5nUmVsZWFzZShDRlN0cmluZ0Ny
ZWF0ZVdpdGhDaGFyYWN0ZXJzTm9Db3B5KGtDRkFsbG9jYXRvckRlZmF1bHQsIHVuaUNoYXJQdHIs
IGxlbiwgbnVsbHB0cikpOworICAgICAgICAgICAgcmVzdWx0ID0gYWRvcHRDRihDRlN0cmluZ0Ny
ZWF0ZVdpdGhDaGFyYWN0ZXJzTm9Db3B5KGtDRkFsbG9jYXRvckRlZmF1bHQsIHVuaUNoYXJQdHIs
IGxlbiwgbnVsbHB0cikpLmJyaWRnaW5nQXV0b3JlbGVhc2UoKTsKICAgICAgICAgZWxzZQotICAg
ICAgICAgICAgcmVzdWx0ID0gQ0ZCcmlkZ2luZ1JlbGVhc2UoQ0ZTdHJpbmdDcmVhdGVXaXRoQ1N0
cmluZ05vQ29weShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBjaGFyUHRyLCBrQ0ZTdHJpbmdFbmNvZGlu
Z0lTT0xhdGluMSwgbnVsbHB0cikpOworICAgICAgICAgICAgcmVzdWx0ID0gYWRvcHRDRihDRlN0
cmluZ0NyZWF0ZVdpdGhDU3RyaW5nTm9Db3B5KGtDRkFsbG9jYXRvckRlZmF1bHQsIGNoYXJQdHIs
IGtDRlN0cmluZ0VuY29kaW5nSVNPTGF0aW4xLCBudWxscHRyKSkuYnJpZGdpbmdBdXRvcmVsZWFz
ZSgpOwogICAgIH0gZWxzZQogICAgICAgICByZXN1bHQgPSBzZWxmOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkhvc3RN
YW5hZ2VyLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2Nh
cGVQbHVnaW5Ib3N0TWFuYWdlci5tbQppbmRleCBmNjM5M2Y4OWJmYmE0ZjY5ZmQwMzhmMjE1NjVl
ZjE3ZDAyZmJmMzM3Li41ZmRhM2ZjNzE3ZjMxM2E0ZGI2NWUyMmI4MzY5NWQ4MzNjOTllZjhkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2Fw
ZVBsdWdpbkhvc3RNYW5hZ2VyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdp
bnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSG9zdE1hbmFnZXIubW0KQEAgLTEyMSw3ICsxMjEsNyBA
QCBzdGF0aWMgTlNTdHJpbmcgKnByZWZlcnJlZEJ1bmRsZUxvY2FsaXphdGlvbk5hbWUoKQogICAg
IGlmICghc3VjY2VzcykKICAgICAgICAgcmV0dXJuIEAiZW5fVVMiOwogCi0gICAgcmV0dXJuIENG
QnJpZGdpbmdSZWxlYXNlKENGTG9jYWxlQ3JlYXRlQ2Fub25pY2FsTG9jYWxlSWRlbnRpZmllckZy
b21TY3JpcHRNYW5hZ2VyQ29kZXMoMCwgbGFuZ3VhZ2VDb2RlLCByZWdpb25Db2RlKSk7CisgICAg
cmV0dXJuIGFkb3B0Q0YoQ0ZMb2NhbGVDcmVhdGVDYW5vbmljYWxMb2NhbGVJZGVudGlmaWVyRnJv
bVNjcmlwdE1hbmFnZXJDb2RlcygwLCBsYW5ndWFnZUNvZGUsIHJlZ2lvbkNvZGUpKS5icmlkZ2lu
Z0F1dG9yZWxlYXNlKCk7CiB9CiAKIGJvb2wgTmV0c2NhcGVQbHVnaW5Ib3N0TWFuYWdlcjo6c3Bh
d25QbHVnaW5Ib3N0KGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCwgY3B1X3R5cGVfdCBwbHVnaW5B
cmNoaXRlY3R1cmUsIG1hY2hfcG9ydF90IGNsaWVudFBvcnQsIG1hY2hfcG9ydF90JiBwbHVnaW5I
b3N0UG9ydCwgUHJvY2Vzc1NlcmlhbE51bWJlciYgcGx1Z2luSG9zdFBTTikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1t
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblZpZXcu
bW0KaW5kZXggMTJhYWEzZDA4Zjc3YzhjZjhkNDFkNDQzZTEyYWI2ZDJlMjcxMjNiMi4uOGZmZjI0
NWUxNjhkMzRhZGJlZGIwMmQ0NzQ4ZjljYjg3MTEwNzdiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblZpZXcubW0KKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblZpZXcubW0KQEAg
LTE0NTMsMTYgKzE0NTMsMTUgQEAgLSAoY29uc3QgY2hhciAqKXVzZXJBZ2VudAogCiAtKHZvaWQp
c3RhdHVzOihjb25zdCBjaGFyICopbWVzc2FnZQogeyAgICAKLSAgICBDRlN0cmluZ1JlZiBzdGF0
dXMgPSBDRlN0cmluZ0NyZWF0ZVdpdGhDU3RyaW5nKE5VTEwsIG1lc3NhZ2UgPyBtZXNzYWdlIDog
IiIsIGtDRlN0cmluZ0VuY29kaW5nVVRGOCk7CisgICAgYXV0byBzdGF0dXMgPSBhZG9wdENGKENG
U3RyaW5nQ3JlYXRlV2l0aENTdHJpbmcoTlVMTCwgbWVzc2FnZSA/IG1lc3NhZ2UgOiAiIiwga0NG
U3RyaW5nRW5jb2RpbmdVVEY4KSk7CiAgICAgaWYgKCFzdGF0dXMpIHsKICAgICAgICAgTE9HX0VS
Uk9SKCJOUE5fU3RhdHVzOiB0aGUgbWVzc2FnZSB3YXMgbm90IHZhbGlkIFVURi04Iik7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAgICAgCi0gICAgTE9HKFBsdWdpbnMsICJOUE5fU3RhdHVzOiAl
QCIsIHN0YXR1cyk7CisgICAgTE9HKFBsdWdpbnMsICJOUE5fU3RhdHVzOiAlQCIsIHN0YXR1cy5n
ZXQoKSk7CiAgICAgV2ViVmlldyAqd3YgPSBbc2VsZiB3ZWJWaWV3XTsKLSAgICBbW3d2IF9VSURl
bGVnYXRlRm9yd2FyZGVyXSB3ZWJWaWV3Ond2IHNldFN0YXR1c1RleHQ6KF9fYnJpZGdlIE5TU3Ry
aW5nICopc3RhdHVzXTsKLSAgICBDRlJlbGVhc2Uoc3RhdHVzKTsKKyAgICBbW3d2IF9VSURlbGVn
YXRlRm9yd2FyZGVyXSB3ZWJWaWV3Ond2IHNldFN0YXR1c1RleHQ6KF9fYnJpZGdlIE5TU3RyaW5n
ICopc3RhdHVzLmdldCgpXTsKIH0KIAogLSh2b2lkKWludmFsaWRhdGVSZWN0OihOUFJlY3QgKilp
bnZhbGlkUmVjdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViUHJvZ3Jlc3NUcmFja2VyQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViUHJvZ3Jlc3NUcmFja2VyQ2xpZW50Lm1tCmluZGV4IGNjMzhl
ZjE2MWU3NTNkNTE5MTY0ZmVkMzBkZDU4NzY1MTgwOGJmMTYuLjhmNDc4M2NiMzA4YTY0ZGRjYTVi
MTM0NDM1NTA4MjM2MDQxN2UwNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYlByb2dyZXNzVHJhY2tlckNsaWVudC5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQcm9ncmVzc1RyYWNrZXJDbGllbnQu
bW0KQEAgLTcwLDEzICs3MCwxMiBAQCB2b2lkIFdlYlByb2dyZXNzVHJhY2tlckNsaWVudDo6cHJv
Z3Jlc3NFc3RpbWF0ZUNoYW5nZWQoV2ViQ29yZTo6RnJhbWUmKQogICAgIAogICAgIC8vIFVzZSBh
IENGRGljdGlvbmFyeSBzbyB3ZSBjYW4gYWRkIHRoZSBDR0NvbG9yUmVmIHdpdGhvdXQgY29tcGls
ZSBlcnJvcnMuIEFuZCB0aGVuIHRoYW5rcyB0bwogICAgIC8vIHRvbGwtZnJlZSBicmlkZ2luZyB3
ZSBjYW4gcGFzcyB0aGUgQ0ZEaWN0aW9uYXJ5IGFzIGFuIE5TRGljdGlvbmFyeSB0byBwb3N0Tm90
aWZpY2F0aW9uLgotICAgIENGTXV0YWJsZURpY3Rpb25hcnlSZWYgdXNlckluZm8gPSBDRkRpY3Rp
b25hcnlDcmVhdGVNdXRhYmxlKGtDRkFsbG9jYXRvckRlZmF1bHQsIDIsICZrQ0ZUeXBlRGljdGlv
bmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpOwotICAg
IENGRGljdGlvbmFyeUFkZFZhbHVlKHVzZXJJbmZvLCBXZWJWaWV3UHJvZ3Jlc3NFc3RpbWF0ZWRQ
cm9ncmVzc0tleSwgcHJvZ3Jlc3MpOworICAgIGF1dG8gdXNlckluZm8gPSBhZG9wdENGKENGRGlj
dGlvbmFyeUNyZWF0ZU11dGFibGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgMiwgJmtDRlR5cGVEaWN0
aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcykpOwor
ICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKHVzZXJJbmZvLmdldCgpLCBXZWJWaWV3UHJvZ3Jlc3NF
c3RpbWF0ZWRQcm9ncmVzc0tleSwgcHJvZ3Jlc3MpOwogICAgIGlmIChib2R5QmFja2dyb3VuZENv
bG9yKQotICAgICAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZSh1c2VySW5mbywgV2ViVmlld1Byb2dy
ZXNzQmFja2dyb3VuZENvbG9yS2V5LCBib2R5QmFja2dyb3VuZENvbG9yKTsKKyAgICAgICAgQ0ZE
aWN0aW9uYXJ5QWRkVmFsdWUodXNlckluZm8uZ2V0KCksIFdlYlZpZXdQcm9ncmVzc0JhY2tncm91
bmRDb2xvcktleSwgYm9keUJhY2tncm91bmRDb2xvcik7CiAgICAgCi0gICAgV2ViVGhyZWFkUG9z
dE5vdGlmaWNhdGlvbihXZWJWaWV3UHJvZ3Jlc3NFc3RpbWF0ZUNoYW5nZWROb3RpZmljYXRpb24s
IG1fd2ViVmlldywgKE5TRGljdGlvbmFyeSAqKSB1c2VySW5mbyk7Ci0gICAgQ0ZSZWxlYXNlKHVz
ZXJJbmZvKTsKKyAgICBXZWJUaHJlYWRQb3N0Tm90aWZpY2F0aW9uKFdlYlZpZXdQcm9ncmVzc0Vz
dGltYXRlQ2hhbmdlZE5vdGlmaWNhdGlvbiwgbV93ZWJWaWV3LCAoTlNEaWN0aW9uYXJ5ICopdXNl
ckluZm8uZ2V0KCkpOwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYkluc3BlY3Rvci9XZWJOb2RlSGlnaGxpZ2h0Vmlldy5tbSBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYkluc3BlY3Rvci9XZWJOb2RlSGlnaGxpZ2h0Vmlldy5tbQppbmRleCAy
MGYxOWYwYmM0YmI0OGRkMmRlNTkwNmQ5ZTI3ZTNiM2MzNGMyNTNmLi5kMzk3M2UyOTQ0NTllY2Yx
ZGJkZWY0NDllZjJjZmQyY2FjYjhlZDM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJJbnNwZWN0b3IvV2ViTm9kZUhpZ2hsaWdodFZpZXcubW0KKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViSW5zcGVjdG9yL1dlYk5vZGVIaWdobGlnaHRWaWV3Lm1tCkBAIC0y
MzYsMjggKzIzNiwyNiBAQCBzdGF0aWMgdm9pZCBsYXllclBhdGhXaXRoSG9sZShDQVNoYXBlTGF5
ZXIgKmxheWVyLCBjb25zdCBGbG9hdFF1YWQmIG91dGVyUXVhZCwgYwogICAgICAgICBpbm5lckhv
bGUgPSBxdWFkSW50ZXJzZWN0aW9uKG91dGVyUXVhZCwgaG9sZVF1YWQpOwogCiAgICAgLy8gQ2xv
Y2t3aXNlIGluc2lkZSByZWN0IChob2xlKSwgQ291bnRlci1DbG9ja3dpc2Ugb3V0c2lkZSByZWN0
IChmaWxsKS4KLSAgICBDR011dGFibGVQYXRoUmVmIHBhdGggPSBDR1BhdGhDcmVhdGVNdXRhYmxl
KCk7Ci0gICAgQ0dQYXRoTW92ZVRvUG9pbnQocGF0aCwgMCwgaW5uZXJIb2xlLnAxKCkueCgpLCBp
bm5lckhvbGUucDEoKS55KCkpOwotICAgIENHUGF0aEFkZExpbmVUb1BvaW50KHBhdGgsIDAsIGlu
bmVySG9sZS5wMigpLngoKSwgaW5uZXJIb2xlLnAyKCkueSgpKTsKLSAgICBDR1BhdGhBZGRMaW5l
VG9Qb2ludChwYXRoLCAwLCBpbm5lckhvbGUucDMoKS54KCksIGlubmVySG9sZS5wMygpLnkoKSk7
Ci0gICAgQ0dQYXRoQWRkTGluZVRvUG9pbnQocGF0aCwgMCwgaW5uZXJIb2xlLnA0KCkueCgpLCBp
bm5lckhvbGUucDQoKS55KCkpOwotICAgIENHUGF0aE1vdmVUb1BvaW50KHBhdGgsIDAsIG91dGVy
UXVhZC5wMSgpLngoKSwgb3V0ZXJRdWFkLnAxKCkueSgpKTsKLSAgICBDR1BhdGhBZGRMaW5lVG9Q
b2ludChwYXRoLCAwLCBvdXRlclF1YWQucDQoKS54KCksIG91dGVyUXVhZC5wNCgpLnkoKSk7Ci0g
ICAgQ0dQYXRoQWRkTGluZVRvUG9pbnQocGF0aCwgMCwgb3V0ZXJRdWFkLnAzKCkueCgpLCBvdXRl
clF1YWQucDMoKS55KCkpOwotICAgIENHUGF0aEFkZExpbmVUb1BvaW50KHBhdGgsIDAsIG91dGVy
UXVhZC5wMigpLngoKSwgb3V0ZXJRdWFkLnAyKCkueSgpKTsKLSAgICBsYXllci5wYXRoID0gcGF0
aDsKLSAgICBDR1BhdGhSZWxlYXNlKHBhdGgpOworICAgIGF1dG8gcGF0aCA9IGFkb3B0Q0YoQ0dQ
YXRoQ3JlYXRlTXV0YWJsZSgpKTsKKyAgICBDR1BhdGhNb3ZlVG9Qb2ludChwYXRoLmdldCgpLCAw
LCBpbm5lckhvbGUucDEoKS54KCksIGlubmVySG9sZS5wMSgpLnkoKSk7CisgICAgQ0dQYXRoQWRk
TGluZVRvUG9pbnQocGF0aC5nZXQoKSwgMCwgaW5uZXJIb2xlLnAyKCkueCgpLCBpbm5lckhvbGUu
cDIoKS55KCkpOworICAgIENHUGF0aEFkZExpbmVUb1BvaW50KHBhdGguZ2V0KCksIDAsIGlubmVy
SG9sZS5wMygpLngoKSwgaW5uZXJIb2xlLnAzKCkueSgpKTsKKyAgICBDR1BhdGhBZGRMaW5lVG9Q
b2ludChwYXRoLmdldCgpLCAwLCBpbm5lckhvbGUucDQoKS54KCksIGlubmVySG9sZS5wNCgpLnko
KSk7CisgICAgQ0dQYXRoTW92ZVRvUG9pbnQocGF0aC5nZXQoKSwgMCwgb3V0ZXJRdWFkLnAxKCku
eCgpLCBvdXRlclF1YWQucDEoKS55KCkpOworICAgIENHUGF0aEFkZExpbmVUb1BvaW50KHBhdGgu
Z2V0KCksIDAsIG91dGVyUXVhZC5wNCgpLngoKSwgb3V0ZXJRdWFkLnA0KCkueSgpKTsKKyAgICBD
R1BhdGhBZGRMaW5lVG9Qb2ludChwYXRoLmdldCgpLCAwLCBvdXRlclF1YWQucDMoKS54KCksIG91
dGVyUXVhZC5wMygpLnkoKSk7CisgICAgQ0dQYXRoQWRkTGluZVRvUG9pbnQocGF0aC5nZXQoKSwg
MCwgb3V0ZXJRdWFkLnAyKCkueCgpLCBvdXRlclF1YWQucDIoKS55KCkpOworICAgIGxheWVyLnBh
dGggPSBwYXRoLmdldCgpOwogfQogCiBzdGF0aWMgdm9pZCBsYXllclBhdGgoQ0FTaGFwZUxheWVy
ICpsYXllciwgY29uc3QgRmxvYXRRdWFkJiBvdXRlclF1YWQpCiB7Ci0gICAgQ0dNdXRhYmxlUGF0
aFJlZiBwYXRoID0gQ0dQYXRoQ3JlYXRlTXV0YWJsZSgpOwotICAgIENHUGF0aE1vdmVUb1BvaW50
KHBhdGgsIDAsIG91dGVyUXVhZC5wMSgpLngoKSwgb3V0ZXJRdWFkLnAxKCkueSgpKTsKLSAgICBD
R1BhdGhBZGRMaW5lVG9Qb2ludChwYXRoLCAwLCBvdXRlclF1YWQucDQoKS54KCksIG91dGVyUXVh
ZC5wNCgpLnkoKSk7Ci0gICAgQ0dQYXRoQWRkTGluZVRvUG9pbnQocGF0aCwgMCwgb3V0ZXJRdWFk
LnAzKCkueCgpLCBvdXRlclF1YWQucDMoKS55KCkpOwotICAgIENHUGF0aEFkZExpbmVUb1BvaW50
KHBhdGgsIDAsIG91dGVyUXVhZC5wMigpLngoKSwgb3V0ZXJRdWFkLnAyKCkueSgpKTsKLSAgICBs
YXllci5wYXRoID0gcGF0aDsKLSAgICBDR1BhdGhSZWxlYXNlKHBhdGgpOworICAgIGF1dG8gcGF0
aCA9IGFkb3B0Q0YoQ0dQYXRoQ3JlYXRlTXV0YWJsZSgpKTsKKyAgICBDR1BhdGhNb3ZlVG9Qb2lu
dChwYXRoLmdldCgpLCAwLCBvdXRlclF1YWQucDEoKS54KCksIG91dGVyUXVhZC5wMSgpLnkoKSk7
CisgICAgQ0dQYXRoQWRkTGluZVRvUG9pbnQocGF0aC5nZXQoKSwgMCwgb3V0ZXJRdWFkLnA0KCku
eCgpLCBvdXRlclF1YWQucDQoKS55KCkpOworICAgIENHUGF0aEFkZExpbmVUb1BvaW50KHBhdGgu
Z2V0KCksIDAsIG91dGVyUXVhZC5wMygpLngoKSwgb3V0ZXJRdWFkLnAzKCkueSgpKTsKKyAgICBD
R1BhdGhBZGRMaW5lVG9Qb2ludChwYXRoLmdldCgpLCAwLCBvdXRlclF1YWQucDIoKS54KCksIG91
dGVyUXVhZC5wMigpLnkoKSk7CisgICAgbGF5ZXIucGF0aCA9IHBhdGguZ2V0KCk7CiB9CiAKIC0g
KHZvaWQpX2xheW91dEZvck5vZGVIaWdobGlnaHQ6KEluc3BlY3Rvck92ZXJsYXk6OkhpZ2hsaWdo
dCopaGlnaGxpZ2h0IHBhcmVudDooQ0FMYXllciAqKXBhcmVudExheWVyCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQppbmRleCBiOWJlN2Q5OTA1ZGFmNTBlZTlm
ZDUzMDhlOTdmZjNjOWRlY2E5ZTFiLi4zYWJjNjAxYjgwYmFkNDMwMzU0MjViNDkyOTg0OWYxM2Vm
MTQ4Nzc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZy
YW1lLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0K
QEAgLTI0NjEsMTIgKzI0NjEsOSBAQCAtICh2b2lkKWxvYWRSZXF1ZXN0OihOU1VSTFJlcXVlc3Qg
KilyZXF1ZXN0CiAKIHN0YXRpYyBOU1VSTCAqY3JlYXRlVW5pcXVlV2ViRGF0YVVSTCgpCiB7Ci0g
ICAgQ0ZVVUlEUmVmIFVVSURSZWYgPSBDRlVVSURDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCk7
Ci0gICAgTlNTdHJpbmcgKlVVSURTdHJpbmcgPSAoTlNTdHJpbmcgKilDRlVVSURDcmVhdGVTdHJp
bmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwgVVVJRFJlZik7Ci0gICAgQ0ZSZWxlYXNlKFVVSURSZWYp
OwotICAgIE5TVVJMICpVUkwgPSBbTlNVUkwgVVJMV2l0aFN0cmluZzpbTlNTdHJpbmcgc3RyaW5n
V2l0aEZvcm1hdDpAImFwcGxld2ViZGF0YTovLyVAIiwgVVVJRFN0cmluZ11dOwotICAgIENGUmVs
ZWFzZShVVUlEU3RyaW5nKTsKLSAgICByZXR1cm4gVVJMOworICAgIGF1dG8gVVVJRFJlZiA9IGFk
b3B0Q0YoQ0ZVVUlEQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQpKTsKKyAgICBhdXRvIFVVSURT
dHJpbmcgPSBhZG9wdENGKENGVVVJRENyZWF0ZVN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBV
VUlEUmVmLmdldCgpKSk7CisgICAgcmV0dXJuIFtOU1VSTCBVUkxXaXRoU3RyaW5nOltOU1N0cmlu
ZyBzdHJpbmdXaXRoRm9ybWF0OkAiYXBwbGV3ZWJkYXRhOi8vJUAiLCAoX19icmlkZ2UgTlNTdHJp
bmcgKilVVUlEU3RyaW5nLmdldCgpXV07CiB9CiAKIC0gKHZvaWQpX2xvYWREYXRhOihOU0RhdGEg
KilkYXRhIE1JTUVUeXBlOihOU1N0cmluZyAqKU1JTUVUeXBlIHRleHRFbmNvZGluZ05hbWU6KE5T
U3RyaW5nICopZW5jb2RpbmdOYW1lIGJhc2VVUkw6KE5TVVJMICopYmFzZVVSTCB1bnJlYWNoYWJs
ZVVSTDooTlNVUkwgKil1bnJlYWNoYWJsZVVSTApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Vmlldy9XZWJWaWV3Lm1tCmluZGV4IDY4NTYxMGMyNWVjMmFlNWZkNWY1MTNiYjkzMTYyYzRlMmU2
MWZiOTIuLmUzMzNkNmUwZjliM2MyNWNiYmNkZmI5YjZjYWVjNGFlMTQ0MmM5ZDEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KQEAgLTg0MDMsNyArODQwMyw3
IEBAICsgKHZvaWQpX3NldENhY2hlTW9kZWw6KFdlYkNhY2hlTW9kZWwpY2FjaGVNb2RlbAogICAg
IGlmIChzX2RpZFNldENhY2hlTW9kZWwgJiYgY2FjaGVNb2RlbCA9PSBzX2NhY2hlTW9kZWwpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIE5TU3RyaW5nICpuc3VybENhY2hlRGlyZWN0b3J5ID0gQ0ZC
cmlkZ2luZ1JlbGVhc2UoX0NGVVJMQ2FjaGVDb3B5Q2FjaGVEaXJlY3RvcnkoW1tOU1VSTENhY2hl
IHNoYXJlZFVSTENhY2hlXSBfQ0ZVUkxDYWNoZV0pKTsKKyAgICBOU1N0cmluZyAqbnN1cmxDYWNo
ZURpcmVjdG9yeSA9IGFkb3B0Q0YoX0NGVVJMQ2FjaGVDb3B5Q2FjaGVEaXJlY3RvcnkoW1tOU1VS
TENhY2hlIHNoYXJlZFVSTENhY2hlXSBfQ0ZVUkxDYWNoZV0pKS5icmlkZ2luZ0F1dG9yZWxlYXNl
KCk7CiAgICAgaWYgKCFuc3VybENhY2hlRGlyZWN0b3J5KQogICAgICAgICBuc3VybENhY2hlRGly
ZWN0b3J5ID0gTlNIb21lRGlyZWN0b3J5KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL0NGRGljdGlvbmFyeVByb3BlcnR5QmFnLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL0NGRGljdGlvbmFyeVByb3BlcnR5QmFnLmNwcAppbmRleCBiYzllNjU5NGU3NzdiZjAw
ODY4MzYyYjc1MWMyNzUxOWQ3YmVhNzNiLi42ODFiZDlmZGQwOWQzNGViZDhkOWRlYTQyM2ZjNWVh
MGE1NzZjOThkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DRkRpY3Rpb25h
cnlQcm9wZXJ0eUJhZy5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ0ZEaWN0aW9u
YXJ5UHJvcGVydHlCYWcuY3BwCkBAIC0xNDEsMTcgKzE0MSwxNyBAQCBzdGF0aWMgYm9vbCBDb252
ZXJ0VmFyaWFudFRvQ0ZUeXBlKFZBUklBTlQqIHBWYXIsIHZvaWQqKiBjZk9iaikKICAgICAgICAg
ICAgICpjZk9iaiA9ICh2b2lkKikgTWFyc2hhbGxpbmdIZWxwZXJzOjpCU1RSVG9DRlN0cmluZ1Jl
ZihWX0JTVFIocFZhcikpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0gZWxz
ZSBpZiAoVl9WVChwVmFyKSA9PSBWVF9JNCkgewotICAgICAgICAgICAgKmNmT2JqID0gKHZvaWQq
KSBNYXJzaGFsbGluZ0hlbHBlcnM6OmludFRvQ0ZOdW1iZXJSZWYoVl9JNChwVmFyKSk7CisgICAg
ICAgICAgICAqY2ZPYmogPSAodm9pZCopIE1hcnNoYWxsaW5nSGVscGVyczo6aW50VG9DRk51bWJl
clJlZihWX0k0KHBWYXIpKS5sZWFmUmVmKCk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICAgICAgfSBlbHNlIGlmICghIShWX1ZUKHBWYXIpJlZUX0FSUkFZKSkgewogICAgICAgICAgICAg
aWYgKChWX1ZUKHBWYXIpJn5WVF9BUlJBWSkgPT0gVlRfQlNUUikgewotICAgICAgICAgICAgICAg
ICpjZk9iaiA9ICh2b2lkKikgTWFyc2hhbGxpbmdIZWxwZXJzOjpzYWZlQXJyYXlUb1N0cmluZ0Fy
cmF5KFZfQVJSQVkocFZhcikpOworICAgICAgICAgICAgICAgICpjZk9iaiA9ICh2b2lkKikgTWFy
c2hhbGxpbmdIZWxwZXJzOjpzYWZlQXJyYXlUb1N0cmluZ0FycmF5KFZfQVJSQVkocFZhcikpLmxl
YWtSZWYoKTsKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIH0gZWxz
ZSBpZiAoKFZfVlQocFZhcikmflZUX0FSUkFZKSA9PSBWVF9JNCkgewotICAgICAgICAgICAgICAg
ICpjZk9iaiA9ICh2b2lkKikgTWFyc2hhbGxpbmdIZWxwZXJzOjpzYWZlQXJyYXlUb0ludEFycmF5
KFZfQVJSQVkocFZhcikpOworICAgICAgICAgICAgICAgICpjZk9iaiA9ICh2b2lkKikgTWFyc2hh
bGxpbmdIZWxwZXJzOjpzYWZlQXJyYXlUb0ludEFycmF5KFZfQVJSQVkocFZhcikpLmxlYWtSZWYo
KTsKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIH0gZWxzZSBpZiAo
KFZfVlQocFZhcikmflZUX0FSUkFZKSA9PSBWVF9VTktOT1dOKSB7Ci0gICAgICAgICAgICAgICAg
KmNmT2JqID0gKHZvaWQqKSBNYXJzaGFsbGluZ0hlbHBlcnM6OnNhZmVBcnJheVRvSVVua25vd25B
cnJheShWX0FSUkFZKHBWYXIpKTsKKyAgICAgICAgICAgICAgICAqY2ZPYmogPSAodm9pZCopIE1h
cnNoYWxsaW5nSGVscGVyczo6c2FmZUFycmF5VG9JVW5rbm93bkFycmF5KFZfQVJSQVkocFZhcikp
LmxlYWtSZWYoKTsKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIH0K
ICAgICAgICAgfQpAQCAtMTY3LDE0ICsxNjcsMTMgQEAgSFJFU1VMVCBDRkRpY3Rpb25hcnlQcm9w
ZXJ0eUJhZzo6UmVhZChMUENPTEVTVFIgcHN6UHJvcE5hbWUsIFZBUklBTlQgKnBWYXIsIElFcnIK
ICNpZiBVU0UoQ0YpCiAgICAgaWYgKG1fZGljdGlvbmFyeSkgewogICAgICAgICB2b2lkKiB2YWx1
ZTsKLSAgICAgICAgQ0ZTdHJpbmdSZWYga2V5ID0gTWFyc2hhbGxpbmdIZWxwZXJzOjpMUENPTEVT
VFJUb0NGU3RyaW5nUmVmKHBzelByb3BOYW1lKTsKKyAgICAgICAgYXV0byBrZXkgPSBNYXJzaGFs
bGluZ0hlbHBlcnM6OkxQQ09MRVNUUlRvQ0ZTdHJpbmdSZWYocHN6UHJvcE5hbWUpOwogICAgICAg
ICBIUkVTVUxUIGhyID0gRV9GQUlMOwotICAgICAgICBpZiAoQ0ZEaWN0aW9uYXJ5R2V0VmFsdWVJ
ZlByZXNlbnQobV9kaWN0aW9uYXJ5LmdldCgpLCBrZXksIChjb25zdCB2b2lkKiopICZ2YWx1ZSkp
IHsKKyAgICAgICAgaWYgKENGRGljdGlvbmFyeUdldFZhbHVlSWZQcmVzZW50KG1fZGljdGlvbmFy
eS5nZXQoKSwga2V5LmdldCgpLCAoY29uc3Qgdm9pZCoqKSAmdmFsdWUpKSB7CiAgICAgICAgICAg
ICBpZiAoQ29udmVydENGVHlwZVRvVmFyaWFudChwVmFyLCB2YWx1ZSkpCiAgICAgICAgICAgICAg
ICAgaHIgPSBTX09LOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIGhyID0gRV9JTlZBTElE
QVJHOwotICAgICAgICBDRlJlbGVhc2Uoa2V5KTsKICAgICAgICAgcmV0dXJuIGhyOwogICAgIH0K
ICNlbmRpZgpAQCAtMTkxLDEwICsxOTAsOSBAQCBIUkVTVUxUIENGRGljdGlvbmFyeVByb3BlcnR5
QmFnOjpXcml0ZShfSW5fIExQQ09MRVNUUiBwc3pQcm9wTmFtZSwgX0luXyBWQVJJQU5UKgogICAg
IH0KICAgICB2b2lkKiBjZk9iajsKICAgICBpZiAoQ29udmVydFZhcmlhbnRUb0NGVHlwZShwVmFy
LCAmY2ZPYmopKSB7Ci0gICAgICAgIENGU3RyaW5nUmVmIGtleSA9IE1hcnNoYWxsaW5nSGVscGVy
czo6TFBDT0xFU1RSVG9DRlN0cmluZ1JlZihwc3pQcm9wTmFtZSk7Ci0gICAgICAgIENGRGljdGlv
bmFyeUFkZFZhbHVlKG1fZGljdGlvbmFyeS5nZXQoKSwga2V5LCBjZk9iaik7CisgICAgICAgIGF1
dG8ga2V5ID0gTWFyc2hhbGxpbmdIZWxwZXJzOjpMUENPTEVTVFJUb0NGU3RyaW5nUmVmKHBzelBy
b3BOYW1lKTsKKyAgICAgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUobV9kaWN0aW9uYXJ5LmdldCgp
LCBrZXkuZ2V0KCksIGNmT2JqKTsKICAgICAgICAgLy8gQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUgc2hv
dWxkIGF1dG9tYXRpY2FsbHkgcmV0YWluIHRoZSBDRiBvYmplY3RzIHBhc3NlZCBpbiwgc28gcmVs
ZWFzZSB0aGVtIGhlcmUKLSAgICAgICAgQ0ZSZWxlYXNlKGtleSk7CiAgICAgICAgIENGUmVsZWFz
ZShjZk9iaik7CiAgICAgICAgIHJldHVybiBTX09LOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL01hcnNoYWxsaW5nSGVscGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9NYXJzaGFsbGluZ0hlbHBlcnMuY3BwCmluZGV4IDI1NjA4OTMxOTA0NTc0NmE5
Mzk1ZTVkZWQ2YzZhNzNjZGNkYmY4YWUuLmFiNmQ4NWJmZjc5N2E5OWI4ZTlmOGIyMmJjY2RjYzQ1
ZDI3MDllNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01hcnNoYWxsaW5n
SGVscGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vTWFyc2hhbGxpbmdIZWxw
ZXJzLmNwcApAQCAtNTMsMzkgKzUzLDMzIEBAIEJTVFIgTWFyc2hhbGxpbmdIZWxwZXJzOjpVUkxU
b0JTVFIoY29uc3QgVVJMJiB1cmwpCiB9CiAKICNpZiBVU0UoQ0YpCi1DRlVSTFJlZiBNYXJzaGFs
bGluZ0hlbHBlcnM6OlBhdGhTdHJpbmdUb0ZpbGVDRlVSTFJlZihjb25zdCBTdHJpbmcmIHN0cmlu
ZykKK1JldGFpblB0cjxDRlVSTFJlZj4gTWFyc2hhbGxpbmdIZWxwZXJzOjpQYXRoU3RyaW5nVG9G
aWxlQ0ZVUkxSZWYoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiB7Ci0gICAgcmV0dXJuIENGVVJMQ3Jl
YXRlV2l0aEZpbGVTeXN0ZW1QYXRoKDAsIHN0cmluZy5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBr
Q0ZVUkxXaW5kb3dzUGF0aFN0eWxlLCBmYWxzZSk7CisgICAgcmV0dXJuIGFkb3B0Q0YoQ0ZVUkxD
cmVhdGVXaXRoRmlsZVN5c3RlbVBhdGgoMCwgc3RyaW5nLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCks
IGtDRlVSTFdpbmRvd3NQYXRoU3R5bGUsIGZhbHNlKSk7CiB9CiAKIFN0cmluZyBNYXJzaGFsbGlu
Z0hlbHBlcnM6OkZpbGVDRlVSTFJlZlRvUGF0aFN0cmluZyhDRlVSTFJlZiBmaWxlVVJMKQogewot
ICAgIENGU3RyaW5nUmVmIHN0cmluZyA9IENGVVJMQ29weUZpbGVTeXN0ZW1QYXRoKGZpbGVVUkws
IGtDRlVSTFdpbmRvd3NQYXRoU3R5bGUpOwotICAgIFN0cmluZyByZXN1bHQoc3RyaW5nKTsKLSAg
ICBDRlJlbGVhc2Uoc3RyaW5nKTsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiBhZG9w
dENGKENGVVJMQ29weUZpbGVTeXN0ZW1QYXRoKGZpbGVVUkwsIGtDRlVSTFdpbmRvd3NQYXRoU3R5
bGUpKS5nZXQoKTsKIH0KIAotQ0ZVUkxSZWYgTWFyc2hhbGxpbmdIZWxwZXJzOjpCU1RSVG9DRlVS
TFJlZihCU1RSIHVybFN0cikKK1JldGFpblB0cjxDRlVSTFJlZj4gTWFyc2hhbGxpbmdIZWxwZXJz
OjpCU1RSVG9DRlVSTFJlZihCU1RSIHVybFN0cikKIHsKLSAgICBDRlN0cmluZ1JlZiB1cmxDRlN0
cmluZyA9IEJTVFJUb0NGU3RyaW5nUmVmKHVybFN0cik7CisgICAgYXV0byB1cmxDRlN0cmluZyA9
IEJTVFJUb0NGU3RyaW5nUmVmKHVybFN0cik7CiAgICAgaWYgKCF1cmxDRlN0cmluZykKLSAgICAg
ICAgcmV0dXJuIDA7Ci0KLSAgICBDRlVSTFJlZiB1cmxSZWYgPSBDRlVSTENyZWF0ZVdpdGhTdHJp
bmcoMCwgdXJsQ0ZTdHJpbmcsIDApOwotICAgIENGUmVsZWFzZSh1cmxDRlN0cmluZyk7CisgICAg
ICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIHVybFJlZjsKKyAgICByZXR1cm4gYWRv
cHRDRihDRlVSTENyZWF0ZVdpdGhTdHJpbmcobnVsbHB0ciwgdXJsQ0ZTdHJpbmcuZ2V0KCksIG51
bGxwdHIpKTsKIH0KIAotQ0ZTdHJpbmdSZWYgTWFyc2hhbGxpbmdIZWxwZXJzOjpCU1RSVG9DRlN0
cmluZ1JlZihCU1RSIHN0cikKK1JldGFpblB0cjxDRlN0cmluZ1JlZj4gTWFyc2hhbGxpbmdIZWxw
ZXJzOjpCU1RSVG9DRlN0cmluZ1JlZihCU1RSIHN0cikKIHsKLSAgICByZXR1cm4gQ0ZTdHJpbmdD
cmVhdGVXaXRoQ2hhcmFjdGVycygwLCAoY29uc3QgVW5pQ2hhciopKHN0ciA/IHN0ciA6IFRFWFQo
IiIpKSwgU3lzU3RyaW5nTGVuKHN0cikpOworICAgIHJldHVybiBhZG9wdENGKENGU3RyaW5nQ3Jl
YXRlV2l0aENoYXJhY3RlcnMoMCwgKGNvbnN0IFVuaUNoYXIqKShzdHIgPyBzdHIgOiBURVhUKCIi
KSksIFN5c1N0cmluZ0xlbihzdHIpKSk7CiB9CiAKLUNGU3RyaW5nUmVmIE1hcnNoYWxsaW5nSGVs
cGVyczo6TFBDT0xFU1RSVG9DRlN0cmluZ1JlZihMUENPTEVTVFIgc3RyKQorUmV0YWluUHRyPENG
U3RyaW5nUmVmPiBNYXJzaGFsbGluZ0hlbHBlcnM6OkxQQ09MRVNUUlRvQ0ZTdHJpbmdSZWYoTFBD
T0xFU1RSIHN0cikKIHsKLSAgICByZXR1cm4gQ0ZTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycygw
LCAoY29uc3QgVW5pQ2hhciopKHN0ciA/IHN0ciA6IFRFWFQoIiIpKSwgKENGSW5kZXgpKHN0ciA/
IHdjc2xlbihzdHIpIDogMCkpOworICAgIHJldHVybiBhZG9wdENGKENGU3RyaW5nQ3JlYXRlV2l0
aENoYXJhY3RlcnMoMCwgKGNvbnN0IFVuaUNoYXIqKShzdHIgPyBzdHIgOiBURVhUKCIiKSksIChD
RkluZGV4KShzdHIgPyB3Y3NsZW4oc3RyKSA6IDApKSk7CiB9CiAKIEJTVFIgTWFyc2hhbGxpbmdI
ZWxwZXJzOjpDRlN0cmluZ1JlZlRvQlNUUihDRlN0cmluZ1JlZiBzdHIpCkBAIC0xMDAsOSArOTQs
OSBAQCBpbnQgTWFyc2hhbGxpbmdIZWxwZXJzOjpDRk51bWJlclJlZlRvSW50KENGTnVtYmVyUmVm
IG51bSkKICAgICByZXR1cm4gbnVtYmVyOwogfQogCi1DRk51bWJlclJlZiBNYXJzaGFsbGluZ0hl
bHBlcnM6OmludFRvQ0ZOdW1iZXJSZWYoaW50IG51bSkKK1JldGFpblB0cjxDRk51bWJlclJlZj4g
TWFyc2hhbGxpbmdIZWxwZXJzOjppbnRUb0NGTnVtYmVyUmVmKGludCBudW0pCiB7Ci0gICAgcmV0
dXJuIENGTnVtYmVyQ3JlYXRlKDAsIGtDRk51bWJlclNJbnQzMlR5cGUsICZudW0pOworICAgIHJl
dHVybiBhZG9wdENGKENGTnVtYmVyQ3JlYXRlKDAsIGtDRk51bWJlclNJbnQzMlR5cGUsICZudW0p
KTsKIH0KICNlbmRpZgogCkBAIC0yNDQsNyArMjM4LDcgQEAgU0FGRUFSUkFZKiBNYXJzaGFsbGlu
Z0hlbHBlcnM6Oml1bmtub3duQXJyYXlUb1NhZmVBcnJheShDRkFycmF5UmVmIGluQXJyYXkpCiAg
ICAgcmV0dXJuIHNhOwogfQogCi1DRkFycmF5UmVmIE1hcnNoYWxsaW5nSGVscGVyczo6c2FmZUFy
cmF5VG9TdHJpbmdBcnJheShTQUZFQVJSQVkqIGluQXJyYXkpCitSZXRhaW5QdHI8Q0ZBcnJheVJl
Zj4gTWFyc2hhbGxpbmdIZWxwZXJzOjpzYWZlQXJyYXlUb1N0cmluZ0FycmF5KFNBRkVBUlJBWSog
aW5BcnJheSkKIHsKICAgICBsb25nIGxCb3VuZD0wLCB1Qm91bmQ9LTE7CiAgICAgSFJFU1VMVCBo
ciA9IDo6U2FmZUFycmF5R2V0TEJvdW5kKGluQXJyYXksIDEsICZsQm91bmQpOwpAQCAtMjU3LDE0
ICsyNTEsMTMgQEAgQ0ZBcnJheVJlZiBNYXJzaGFsbGluZ0hlbHBlcnM6OnNhZmVBcnJheVRvU3Ry
aW5nQXJyYXkoU0FGRUFSUkFZKiBpbkFycmF5KQogICAgICAgICBmb3IgKDsgbEJvdW5kIDw9IHVC
b3VuZDsgbEJvdW5kKyspIHsKICAgICAgICAgICAgIEJTdHJpbmcgc3RyOwogICAgICAgICAgICAg
aHIgPSA6OlNhZmVBcnJheUdldEVsZW1lbnQoaW5BcnJheSwgJmxCb3VuZCwgJnN0cik7Ci0gICAg
ICAgICAgICBpdGVtc1tsQm91bmRdID0gQlNUUlRvQ0ZTdHJpbmdSZWYoc3RyKTsKKyAgICAgICAg
ICAgIGl0ZW1zW2xCb3VuZF0gPSBCU1RSVG9DRlN0cmluZ1JlZihzdHIpLmxlYWtSZWYoKTsKICAg
ICAgICAgfQogICAgIH0KLSAgICBDRkFycmF5UmVmIHJlc3VsdCA9IENGQXJyYXlDcmVhdGUoMCwg
KGNvbnN0IHZvaWQqKilpdGVtcy5kYXRhKCksIGxlbiwgJmtDRlR5cGVBcnJheUNhbGxCYWNrcyk7
Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4gYWRvcHRDRihDRkFycmF5Q3JlYXRlKDAs
IChjb25zdCB2b2lkKiopaXRlbXMuZGF0YSgpLCBsZW4sICZrQ0ZUeXBlQXJyYXlDYWxsQmFja3Mp
KTsKIH0KIAotQ0ZBcnJheVJlZiBNYXJzaGFsbGluZ0hlbHBlcnM6OnNhZmVBcnJheVRvSW50QXJy
YXkoU0FGRUFSUkFZKiBpbkFycmF5KQorUmV0YWluUHRyPENGQXJyYXlSZWY+IE1hcnNoYWxsaW5n
SGVscGVyczo6c2FmZUFycmF5VG9JbnRBcnJheShTQUZFQVJSQVkqIGluQXJyYXkpCiB7CiAgICAg
bG9uZyBsQm91bmQ9MCwgdUJvdW5kPS0xOwogICAgIEhSRVNVTFQgaHIgPSA6OlNhZmVBcnJheUdl
dExCb3VuZChpbkFycmF5LCAxLCAmbEJvdW5kKTsKQEAgLTI3NywxNCArMjcwLDEzIEBAIENGQXJy
YXlSZWYgTWFyc2hhbGxpbmdIZWxwZXJzOjpzYWZlQXJyYXlUb0ludEFycmF5KFNBRkVBUlJBWSog
aW5BcnJheSkKICAgICAgICAgZm9yICg7IGxCb3VuZCA8PSB1Qm91bmQ7IGxCb3VuZCsrKSB7CiAg
ICAgICAgICAgICBpbnQgbnVtID0gMDsKICAgICAgICAgICAgIGhyID0gOjpTYWZlQXJyYXlHZXRF
bGVtZW50KGluQXJyYXksICZsQm91bmQsICZudW0pOwotICAgICAgICAgICAgaXRlbXNbbEJvdW5k
XSA9IFNVQ0NFRURFRChocikgPyBpbnRUb0NGTnVtYmVyUmVmKG51bSkgOiBrQ0ZOdW1iZXJOYU47
CisgICAgICAgICAgICBpdGVtc1tsQm91bmRdID0gU1VDQ0VFREVEKGhyKSA/IGludFRvQ0ZOdW1i
ZXJSZWYobnVtKS5sZWFrUmVmKCkgOiBrQ0ZOdW1iZXJOYU47CiAgICAgICAgIH0KICAgICB9Ci0g
ICAgQ0ZBcnJheVJlZiByZXN1bHQgPSBDRkFycmF5Q3JlYXRlKDAsIChjb25zdCB2b2lkKiopaXRl
bXMuZGF0YSgpLCBsZW4sICZrQ0ZUeXBlQXJyYXlDYWxsQmFja3MpOwotICAgIHJldHVybiByZXN1
bHQ7CisgICAgcmV0dXJuIGFkb3B0Q0YoQ0ZBcnJheUNyZWF0ZSgwLCAoY29uc3Qgdm9pZCoqKWl0
ZW1zLmRhdGEoKSwgbGVuLCAma0NGVHlwZUFycmF5Q2FsbEJhY2tzKSk7CiB9CiAKLUNGQXJyYXlS
ZWYgTWFyc2hhbGxpbmdIZWxwZXJzOjpzYWZlQXJyYXlUb0lVbmtub3duQXJyYXkoU0FGRUFSUkFZ
KiBpbkFycmF5KQorUmV0YWluUHRyPENGQXJyYXlSZWY+IE1hcnNoYWxsaW5nSGVscGVyczo6c2Fm
ZUFycmF5VG9JVW5rbm93bkFycmF5KFNBRkVBUlJBWSogaW5BcnJheSkKIHsKICAgICBsb25nIGxC
b3VuZD0wLCB1Qm91bmQ9LTE7CiAgICAgSFJFU1VMVCBociA9IDo6U2FmZUFycmF5R2V0TEJvdW5k
KGluQXJyYXksIDEsICZsQm91bmQpOwpAQCAtMjkzLDcgKzI4NSw3IEBAIENGQXJyYXlSZWYgTWFy
c2hhbGxpbmdIZWxwZXJzOjpzYWZlQXJyYXlUb0lVbmtub3duQXJyYXkoU0FGRUFSUkFZKiBpbkFy
cmF5KQogICAgIGxvbmcgbGVuID0gKFNVQ0NFRURFRChocikpID8gKHVCb3VuZC1sQm91bmQrMSkg
OiAwOwogICAgIHZvaWQqIGl0ZW1zID0gbnVsbHB0cjsKICAgICBociA9IDo6U2FmZUFycmF5QWNj
ZXNzRGF0YShpbkFycmF5LCAmaXRlbXMpOwotICAgIENGQXJyYXlSZWYgcmVzdWx0ID0gU1VDQ0VF
REVEKGhyKSA/IENGQXJyYXlDcmVhdGUoMCwgKGNvbnN0IHZvaWQqKikgaXRlbXMsIGxlbiwgJmtJ
VW5rbm93bkFycmF5Q2FsbEJhY2tzKSA6IG51bGxwdHI7CisgICAgYXV0byByZXN1bHQgPSBTVUND
RUVERUQoaHIpID8gYWRvcHRDRihDRkFycmF5Q3JlYXRlKDAsIChjb25zdCB2b2lkKiopIGl0ZW1z
LCBsZW4sICZrSVVua25vd25BcnJheUNhbGxCYWNrcykpIDogbnVsbHB0cjsKICAgICBociA9IDo6
U2FmZUFycmF5VW5hY2Nlc3NEYXRhKGluQXJyYXkpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9NYXJzaGFsbGluZ0hlbHBlcnMuaCBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01hcnNoYWxsaW5nSGVscGVycy5oCmluZGV4IDJjNDg2
MDM2YTBjYzcwMTVjNjA4YzhhMDdhNmQwMTVkNDE3OTExNTQuLjk0MWE0Mjg5ODE0MWFlNTkwMzM1
MTAzMGM0ZTI5YzgzMzY0OGIyYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L01hcnNoYWxsaW5nSGVscGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01hcnNo
YWxsaW5nSGVscGVycy5oCkBAIC0yOSw2ICsyOSw3IEBACiAKICNpZiBVU0UoQ0YpCiAjaW5jbHVk
ZSA8Q29yZUZvdW5kYXRpb24vQ29yZUZvdW5kYXRpb24uaD4KKyNpbmNsdWRlIDx3dGYvUmV0YWlu
UHRyLmg+CiAjZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDIsMTQgKzQzLDE0IEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgQlNUUiBVUkxUb0JTVFIoY29uc3QgVVJMJik7CiAKICNpZiBV
U0UoQ0YpCi0gICAgc3RhdGljIENGVVJMUmVmIFBhdGhTdHJpbmdUb0ZpbGVDRlVSTFJlZihjb25z
dCBXVEY6OlN0cmluZyYpOworICAgIHN0YXRpYyBSZXRhaW5QdHI8Q0ZVUkxSZWY+IFBhdGhTdHJp
bmdUb0ZpbGVDRlVSTFJlZihjb25zdCBXVEY6OlN0cmluZyYpOwogICAgIHN0YXRpYyBXVEY6OlN0
cmluZyBGaWxlQ0ZVUkxSZWZUb1BhdGhTdHJpbmcoQ0ZVUkxSZWYgZmlsZVVSTCk7Ci0gICAgc3Rh
dGljIENGVVJMUmVmIEJTVFJUb0NGVVJMUmVmKEJTVFIpOwotICAgIHN0YXRpYyBDRlN0cmluZ1Jl
ZiBCU1RSVG9DRlN0cmluZ1JlZihCU1RSKTsKLSAgICBzdGF0aWMgQ0ZTdHJpbmdSZWYgTFBDT0xF
U1RSVG9DRlN0cmluZ1JlZihMUENPTEVTVFIpOworICAgIHN0YXRpYyBSZXRhaW5QdHI8Q0ZVUkxS
ZWY+IEJTVFJUb0NGVVJMUmVmKEJTVFIpOworICAgIHN0YXRpYyBSZXRhaW5QdHI8Q0ZTdHJpbmdS
ZWY+IEJTVFJUb0NGU3RyaW5nUmVmKEJTVFIpOworICAgIHN0YXRpYyBSZXRhaW5QdHI8Q0ZTdHJp
bmdSZWY+IExQQ09MRVNUUlRvQ0ZTdHJpbmdSZWYoTFBDT0xFU1RSKTsKICAgICBzdGF0aWMgQlNU
UiBDRlN0cmluZ1JlZlRvQlNUUihDRlN0cmluZ1JlZik7CiAgICAgc3RhdGljIGludCBDRk51bWJl
clJlZlRvSW50KENGTnVtYmVyUmVmKTsKLSAgICBzdGF0aWMgQ0ZOdW1iZXJSZWYgaW50VG9DRk51
bWJlclJlZihpbnQpOworICAgIHN0YXRpYyBSZXRhaW5QdHI8Q0ZOdW1iZXJSZWY+IGludFRvQ0ZO
dW1iZXJSZWYoaW50KTsKICAgICBzdGF0aWMgQ0ZBYnNvbHV0ZVRpbWUgREFURVRvQ0ZBYnNvbHV0
ZVRpbWUoREFURSk7CiAgICAgc3RhdGljIERBVEUgQ0ZBYnNvbHV0ZVRpbWVUb0RBVEUoQ0ZBYnNv
bHV0ZVRpbWUpOwogICAgIHN0YXRpYyBTQUZFQVJSQVkqIHN0cmluZ0FycmF5VG9TYWZlQXJyYXko
Q0ZBcnJheVJlZik7CkBAIC02Myw5ICs2NCw5IEBAIHB1YmxpYzoKIAogI2lmIFVTRShDRikKICAg
ICBzdGF0aWMgU0FGRUFSUkFZKiBpdW5rbm93bkFycmF5VG9TYWZlQXJyYXkoQ0ZBcnJheVJlZik7
Ci0gICAgc3RhdGljIENGQXJyYXlSZWYgc2FmZUFycmF5VG9TdHJpbmdBcnJheShTQUZFQVJSQVkq
KTsKLSAgICBzdGF0aWMgQ0ZBcnJheVJlZiBzYWZlQXJyYXlUb0ludEFycmF5KFNBRkVBUlJBWSop
OwotICAgIHN0YXRpYyBDRkFycmF5UmVmIHNhZmVBcnJheVRvSVVua25vd25BcnJheShTQUZFQVJS
QVkqKTsKKyAgICBzdGF0aWMgUmV0YWluUHRyPENGQXJyYXlSZWY+IHNhZmVBcnJheVRvU3RyaW5n
QXJyYXkoU0FGRUFSUkFZKik7CisgICAgc3RhdGljIFJldGFpblB0cjxDRkFycmF5UmVmPiBzYWZl
QXJyYXlUb0ludEFycmF5KFNBRkVBUlJBWSopOworICAgIHN0YXRpYyBSZXRhaW5QdHI8Q0ZBcnJh
eVJlZj4gc2FmZUFycmF5VG9JVW5rbm93bkFycmF5KFNBRkVBUlJBWSopOwogICAgIHN0YXRpYyBj
b25zdCB2b2lkKiBJVW5rbm93blJldGFpbkNhbGxiYWNrKENGQWxsb2NhdG9yUmVmLCBjb25zdCB2
b2lkKik7CiAgICAgc3RhdGljIHZvaWQgSVVua25vd25SZWxlYXNlQ2FsbGJhY2soQ0ZBbGxvY2F0
b3JSZWYsIGNvbnN0IHZvaWQqKTsKICAgICBzdGF0aWMgQ0ZBcnJheUNhbGxCYWNrcyBrSVVua25v
d25BcnJheUNhbGxCYWNrczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YkFwcGxpY2F0aW9uQ2FjaGUuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQXBwbGlj
YXRpb25DYWNoZS5jcHAKaW5kZXggZGUxMjUwZWNkZTk3NmE2MmYyMjU4YzdkYzc0ZjZlOGVjMzc0
YjJjOC4uMDhkZDQwMWViNzNkODVlMGYzY2U1ZjIzNmM5YzA2ZmY2YTRkNmM1OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQXBwbGljYXRpb25DYWNoZS5jcHAKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQXBwbGljYXRpb25DYWNoZS5jcHAKQEAgLTIwMCw3
ICsyMDAsNyBAQCBIUkVTVUxUIFdlYkFwcGxpY2F0aW9uQ2FjaGU6Om9yaWdpbnNXaXRoQ2FjaGUo
SVByb3BlcnR5QmFnKiogb3JpZ2lucykKICAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlRGljdGlvbmFy
eVJlZj4gZGljdGlvbmFyeSA9IGFkb3B0Q0YoCiAgICAgICAgIENGRGljdGlvbmFyeUNyZWF0ZU11
dGFibGUoMCwgMCwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rp
b25hcnlWYWx1ZUNhbGxCYWNrcykpOwogCi0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBrZXkg
PSBhZG9wdENGKE1hcnNoYWxsaW5nSGVscGVyczo6QlNUUlRvQ0ZTdHJpbmdSZWYoX2JzdHJfdChM
Im9yaWdpbnMiKSkpOworICAgIGF1dG8ga2V5ID0gTWFyc2hhbGxpbmdIZWxwZXJzOjpCU1RSVG9D
RlN0cmluZ1JlZihfYnN0cl90KEwib3JpZ2lucyIpKTsKICAgICBDRkRpY3Rpb25hcnlBZGRWYWx1
ZShkaWN0aW9uYXJ5LmdldCgpLCBrZXkuZ2V0KCksIGFycmF5SXRlbS5nZXQoKSk7CiAKICAgICBD
T01QdHI8Q0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWc+IHJlc3VsdCA9IENGRGljdGlvbmFyeVByb3Bl
cnR5QmFnOjpjcmVhdGVJbnN0YW5jZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCmlu
ZGV4IDliODZhYTQ1YWQ0MzlmNGZiOWI4MmQ0MTQzMDcxZDVkYmNmMzgyNjMuLjBlNjY5MDgyN2Y4
MGFiMTdlM2UzMGI3ZTJhODkyNWQxMzdjNjZkMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5jcHAKQEAgLTEwMzgsMjEgKzEwMzgsMjEgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6
ZGlzcGF0Y2hEaWRGYWlsVG9TdGFydFBsdWdpbihjb25zdCBQbHVnaW5WaWV3JiBwbHVnaW4KICAg
ICBpZiAoIXBsdWdpblZpZXcucGx1Z2luc1BhZ2UoKS5pc051bGwoKSkgewogICAgICAgICBVUkwg
cGx1Z2luUGFnZVVSTCA9IGZyYW1lLT5kb2N1bWVudCgpLT5jb21wbGV0ZVVSTChzdHJpcExlYWRp
bmdBbmRUcmFpbGluZ0hUTUxTcGFjZXMocGx1Z2luVmlldy5wbHVnaW5zUGFnZSgpKSk7CiAgICAg
ICAgIGlmIChwbHVnaW5QYWdlVVJMLnByb3RvY29sSXNJbkhUVFBGYW1pbHkoKSkgewotICAgICAg
ICAgICAgc3RhdGljIENGU3RyaW5nUmVmIGtleSA9IE1hcnNoYWxsaW5nSGVscGVyczo6TFBDT0xF
U1RSVG9DRlN0cmluZ1JlZihXZWJLaXRFcnJvclBsdWdJblBhZ2VVUkxTdHJpbmdLZXkpOwotICAg
ICAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUodXNlckluZm8uZ2V0KCksIGtleSwgcGx1Z2lu
UGFnZVVSTC5zdHJpbmcoKS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKKyAgICAgICAgICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+PiBrZXkgPSBNYXJzaGFs
bGluZ0hlbHBlcnM6OkxQQ09MRVNUUlRvQ0ZTdHJpbmdSZWYoV2ViS2l0RXJyb3JQbHVnSW5QYWdl
VVJMU3RyaW5nS2V5KTsKKyAgICAgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHVzZXJJbmZv
LmdldCgpLCBrZXkuZ2V0KCkuZ2V0KCksIHBsdWdpblBhZ2VVUkwuc3RyaW5nKCkuY3JlYXRlQ0ZT
dHJpbmcoKS5nZXQoKSk7CiAgICAgICAgIH0KICAgICB9CiAKICAgICBpZiAoIXBsdWdpblZpZXcu
bWltZVR5cGUoKS5pc051bGwoKSkgewotICAgICAgICBzdGF0aWMgQ0ZTdHJpbmdSZWYga2V5ID0g
TWFyc2hhbGxpbmdIZWxwZXJzOjpMUENPTEVTVFJUb0NGU3RyaW5nUmVmKFdlYktpdEVycm9yTUlN
RVR5cGVLZXkpOwotICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZSh1c2VySW5mby5nZXQoKSwg
a2V5LCBwbHVnaW5WaWV3Lm1pbWVUeXBlKCkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CisgICAg
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+PiBrZXkgPSBN
YXJzaGFsbGluZ0hlbHBlcnM6OkxQQ09MRVNUUlRvQ0ZTdHJpbmdSZWYoV2ViS2l0RXJyb3JNSU1F
VHlwZUtleSk7CisgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHVzZXJJbmZvLmdldCgpLCBr
ZXkuZ2V0KCkuZ2V0KCksIHBsdWdpblZpZXcubWltZVR5cGUoKS5jcmVhdGVDRlN0cmluZygpLmdl
dCgpKTsKICAgICB9CiAKICAgICBpZiAocGx1Z2luVmlldy5wbHVnaW4oKSkgewogICAgICAgICBT
dHJpbmcgcGx1Z2luTmFtZSA9IHBsdWdpblZpZXcucGx1Z2luKCktPm5hbWUoKTsKICAgICAgICAg
aWYgKCFwbHVnaW5OYW1lLmlzTnVsbCgpKSB7Ci0gICAgICAgICAgICBzdGF0aWMgQ0ZTdHJpbmdS
ZWYga2V5ID0gTWFyc2hhbGxpbmdIZWxwZXJzOjpMUENPTEVTVFJUb0NGU3RyaW5nUmVmKFdlYktp
dEVycm9yUGx1Z0luTmFtZUtleSk7Ci0gICAgICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZSh1
c2VySW5mby5nZXQoKSwga2V5LCBwbHVnaW5OYW1lLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwor
ICAgICAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxDRlN0cmluZ1JlZj4+
IGtleSA9IE1hcnNoYWxsaW5nSGVscGVyczo6TFBDT0xFU1RSVG9DRlN0cmluZ1JlZihXZWJLaXRF
cnJvclBsdWdJbk5hbWVLZXkpOworICAgICAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUodXNl
ckluZm8uZ2V0KCksIGtleS5nZXQoKS5nZXQoKSwgcGx1Z2luTmFtZS5jcmVhdGVDRlN0cmluZygp
LmdldCgpKTsKICAgICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViRG93bmxvYWRDRk5ldC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJEb3dubG9hZENGTmV0LmNwcAppbmRleCBhMzMzYTJmNjI3NjdlYmJhZWMzYzgzYjZiMDc2ZjBj
MzVkMDNkNTBjLi5lYTBiNjc1MWM1NTRlODI3ZGM5ODI1NWNkNGE3MTU3ZjFkNWFkMmIyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEb3dubG9hZENGTmV0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEb3dubG9hZENGTmV0LmNwcApAQCAtMTc4LDcg
KzE3OCw3IEBAIEhSRVNVTFQgV2ViRG93bmxvYWQ6OmluaXRUb1Jlc3VtZVdpdGhCdW5kbGUoX0lu
XyBCU1RSIGJ1bmRsZVBhdGgsIF9Jbl9vcHRfIElXZWJECiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZGlkUmVjZWl2ZVJlc3BvbnNlQ2FsbGJhY2ssIHdpbGxSZXN1bWVXaXRoUmVz
cG9uc2VDYWxsYmFjaywgZGlkUmVjZWl2ZURhdGFDYWxsYmFjaywgc2hvdWxkRGVjb2RlRGF0YU9m
TUlNRVR5cGVDYWxsYmFjaywgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVj
aWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkT2JqZWN0TmFtZUNhbGxiYWNrLCBkaWRDcmVhdGVE
ZXN0aW5hdGlvbkNhbGxiYWNrLCBkaWRGaW5pc2hDYWxsYmFjaywgZGlkRmFpbENhbGxiYWNrfTsK
ICAgICAKLSAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IHBhdGhVUkwgPSBhZG9wdENGKE1hcnNoYWxs
aW5nSGVscGVyczo6UGF0aFN0cmluZ1RvRmlsZUNGVVJMUmVmKFN0cmluZyhidW5kbGVQYXRoLCBT
eXNTdHJpbmdMZW4oYnVuZGxlUGF0aCkpKSk7CisgICAgYXV0byBwYXRoVVJMID0gTWFyc2hhbGxp
bmdIZWxwZXJzOjpQYXRoU3RyaW5nVG9GaWxlQ0ZVUkxSZWYoU3RyaW5nKGJ1bmRsZVBhdGgsIFN5
c1N0cmluZ0xlbihidW5kbGVQYXRoKSkpOwogICAgIEFTU0VSVChwYXRoVVJMKTsKIAogICAgIG1f
ZG93bmxvYWQgPSBhZG9wdENGKENGVVJMRG93bmxvYWRDcmVhdGVXaXRoUmVzdW1lRGF0YSgwLCBy
ZXN1bWVEYXRhLmdldCgpLCBwYXRoVVJMLmdldCgpLCAmY2xpZW50KSk7CkBAIC0yODgsOSArMjg4
LDggQEAgSFJFU1VMVCBXZWJEb3dubG9hZDo6c2V0RGVzdGluYXRpb24oX0luXyBCU1RSIHBhdGgs
IEJPT0wgYWxsb3dPdmVyd3JpdGUpCiAgICAgbV9kZXN0aW5hdGlvbiA9IFN0cmluZyhwYXRoLCBT
eXNTdHJpbmdMZW4ocGF0aCkpOwogICAgIG1fYnVuZGxlUGF0aCA9IG1fZGVzdGluYXRpb24gKyBE
b3dubG9hZEJ1bmRsZTo6ZmlsZUV4dGVuc2lvbigpOwogCi0gICAgQ0ZVUkxSZWYgcGF0aFVSTCA9
IE1hcnNoYWxsaW5nSGVscGVyczo6UGF0aFN0cmluZ1RvRmlsZUNGVVJMUmVmKG1fYnVuZGxlUGF0
aCk7Ci0gICAgQ0ZVUkxEb3dubG9hZFNldERlc3RpbmF0aW9uKG1fZG93bmxvYWQuZ2V0KCksIHBh
dGhVUkwsICEhYWxsb3dPdmVyd3JpdGUpOwotICAgIENGUmVsZWFzZShwYXRoVVJMKTsKKyAgICBh
dXRvIHBhdGhVUkwgPSBNYXJzaGFsbGluZ0hlbHBlcnM6OlBhdGhTdHJpbmdUb0ZpbGVDRlVSTFJl
ZihtX2J1bmRsZVBhdGgpOworICAgIENGVVJMRG93bmxvYWRTZXREZXN0aW5hdGlvbihtX2Rvd25s
b2FkLmdldCgpLCBwYXRoVVJMLmdldCgpLCAhIWFsbG93T3ZlcndyaXRlKTsKIAogICAgIExPRyhE
b3dubG9hZCwgIldlYkRvd25sb2FkIC0gU2V0IGRlc3RpbmF0aW9uIHRvICVzIiwgbV9idW5kbGVQ
YXRoLmFzY2lpKCkuZGF0YSgpKTsKIApAQCAtMzY4LDkgKzM2Nyw3IEBAIENGVVJMUmVxdWVzdFJl
ZiBXZWJEb3dubG9hZDo6d2lsbFNlbmRSZXF1ZXN0KENGVVJMUmVxdWVzdFJlZiByZXF1ZXN0LCBD
RlVSTFJlc3BvCiAKICAgICBDT01QdHI8V2ViTXV0YWJsZVVSTFJlcXVlc3Q+IGZpbmFsV2ViUmVx
dWVzdChBZG9wdENPTSwgV2ViTXV0YWJsZVVSTFJlcXVlc3Q6OmNyZWF0ZUluc3RhbmNlKGZpbmFs
UmVxdWVzdC5nZXQoKSkpOwogICAgIG1fcmVxdWVzdCA9IGZpbmFsV2ViUmVxdWVzdC5nZXQoKTsK
LSAgICBDRlVSTFJlcXVlc3RSZWYgcmVzdWx0ID0gZmluYWxXZWJSZXF1ZXN0LT5yZXNvdXJjZVJl
cXVlc3QoKS5jZlVSTFJlcXVlc3QoVXBkYXRlSFRUUEJvZHkpOwotICAgIENGUmV0YWluKHJlc3Vs
dCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4gcmV0YWluUHRyKGZpbmFsV2ViUmVx
dWVzdC0+cmVzb3VyY2VSZXF1ZXN0KCkuY2ZVUkxSZXF1ZXN0KFVwZGF0ZUhUVFBCb2R5KSkubGVh
a1JlZigpOwogfQogCiB2b2lkIFdlYkRvd25sb2FkOjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25D
aGFsbGVuZ2UoQ0ZVUkxBdXRoQ2hhbGxlbmdlUmVmIGNoYWxsZW5nZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkhpc3RvcnkuY3BwIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViSGlzdG9yeS5jcHAKaW5kZXggNjFjMDI2YjdhZTAwZDgyOGIwMmRlYzNlYTNlNGI0
ZDc5MDg4YWExMS4uOWVmYWUyMjc5M2M3MGQwODYyOGNjOWNlY2U5MjNlYmM0YzI5N2RmNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSGlzdG9yeS5jcHAKKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSGlzdG9yeS5jcHAKQEAgLTYxLDcgKzYxLDcgQEAgc3Rh
dGljIENPTVB0cjxJUHJvcGVydHlCYWc+IGNyZWF0ZVVzZXJJbmZvRnJvbUFycmF5KEJTVFIgbm90
aWZpY2F0aW9uU3RyLCBJV2ViSGkKICAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlRGljdGlvbmFyeVJl
Zj4gZGljdGlvbmFyeSA9IGFkb3B0Q0YoCiAgICAgICAgIENGRGljdGlvbmFyeUNyZWF0ZU11dGFi
bGUoMCwgMCwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25h
cnlWYWx1ZUNhbGxCYWNrcykpOwogCi0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBrZXkgPSBh
ZG9wdENGKE1hcnNoYWxsaW5nSGVscGVyczo6QlNUUlRvQ0ZTdHJpbmdSZWYobm90aWZpY2F0aW9u
U3RyKSk7CisgICAgYXV0byBrZXkgPSBNYXJzaGFsbGluZ0hlbHBlcnM6OkJTVFJUb0NGU3RyaW5n
UmVmKG5vdGlmaWNhdGlvblN0cik7CiAgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGljdGlvbmFy
eS5nZXQoKSwga2V5LmdldCgpLCBhcnJheUl0ZW0uZ2V0KCkpOwogCiAgICAgQ09NUHRyPENGRGlj
dGlvbmFyeVByb3BlcnR5QmFnPiByZXN1bHQgPSBDRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZzo6Y3Jl
YXRlSW5zdGFuY2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkxv
Y2FsaXphYmxlU3RyaW5ncy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJMb2NhbGl6
YWJsZVN0cmluZ3MuY3BwCmluZGV4IGZjODBmZTk2ZjI5NDI2ZGZlMTVmZWRkNTJiNTRjNTQ0ZWQ1
ZGUwZmEuLmU1OGQxYjk2ZTYwNzU3NTMxMzYyMDQ1OGMyMTExODhhNWU5OWUzMjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkxvY2FsaXphYmxlU3RyaW5ncy5jcHAKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTG9jYWxpemFibGVTdHJpbmdzLmNwcApAQCAt
OTUsMTkgKzk1LDE5IEBAIExvY2FsaXplZFN0cmluZzo6b3BlcmF0b3IgTFBDVFNUUigpIGNvbnN0
CiAgICAgcmV0dXJuIG1fc3RyaW5nLndpZGVDaGFyYWN0ZXJzKCkuZGF0YSgpOwogfQogCi1zdGF0
aWMgQ0ZCdW5kbGVSZWYgY3JlYXRlV2ViS2l0QnVuZGxlKCkKK3N0YXRpYyB2b2lkIGNyZWF0ZVdl
YktpdEJ1bmRsZSgpCiB7Ci0gICAgc3RhdGljIENGQnVuZGxlUmVmIGJ1bmRsZTsKKyAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPENGQnVuZGxlUmVmPj4gYnVuZGxlOwogICAgIHN0
YXRpYyBib29sIGluaXRpYWxpemVkOwogCiAgICAgaWYgKGluaXRpYWxpemVkKQotICAgICAgICBy
ZXR1cm4gYnVuZGxlOworICAgICAgICByZXR1cm47CiAgICAgaW5pdGlhbGl6ZWQgPSB0cnVlOwog
CiAgICAgV0NIQVIgcGF0aFN0cltNQVhfUEFUSF07CiAgICAgRFdPUkQgbGVuZ3RoID0gOjpHZXRN
b2R1bGVGaWxlTmFtZVcoZ0luc3RhbmNlLCBwYXRoU3RyLCBNQVhfUEFUSCk7CiAgICAgaWYgKCFs
ZW5ndGggfHwgKGxlbmd0aCA9PSBNQVhfUEFUSCAmJiBHZXRMYXN0RXJyb3IoKSA9PSBFUlJPUl9J
TlNVRkZJQ0lFTlRfQlVGRkVSKSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBu
dWxscHRyOwogCiAgICAgYm9vbCBmb3VuZCA9IGZhbHNlOwogICAgIGZvciAoaW50IGkgPSBsZW5n
dGggLSAxOyBpID49IDA7IGktLSkgewpAQCAtMTIyLDIyICsxMjIsMjAgQEAgc3RhdGljIENGQnVu
ZGxlUmVmIGNyZWF0ZVdlYktpdEJ1bmRsZSgpCiAgICAgICAgIH0KICAgICB9CiAgICAgaWYgKCFm
b3VuZCkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAg
aWYgKHdjc2NhdF9zKHBhdGhTdHIsIE1BWF9QQVRILCBMIlxcV2ViS2l0LnJlc291cmNlcyIpKQot
ICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBTdHJpbmcg
YnVuZGxlUGF0aFN0cmluZyhwYXRoU3RyKTsKICAgICBpZiAoIWJ1bmRsZVBhdGhTdHJpbmcpCi0g
ICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIENGVVJMUmVm
IGJ1bmRsZVVSTFJlZiA9IENGVVJMQ3JlYXRlV2l0aEZpbGVTeXN0ZW1QYXRoKDAsIGJ1bmRsZVBh
dGhTdHJpbmcuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwga0NGVVJMV2luZG93c1BhdGhTdHlsZSwg
dHJ1ZSk7CisgICAgYXV0byBidW5kbGVVUkxSZWYgPSBhZG9wdENGKENGVVJMQ3JlYXRlV2l0aEZp
bGVTeXN0ZW1QYXRoKDAsIGJ1bmRsZVBhdGhTdHJpbmcuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwg
a0NGVVJMV2luZG93c1BhdGhTdHlsZSwgdHJ1ZSkpOwogICAgIGlmICghYnVuZGxlVVJMUmVmKQot
ICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBidW5kbGUg
PSBDRkJ1bmRsZUNyZWF0ZSgwLCBidW5kbGVVUkxSZWYpOwotICAgIENGUmVsZWFzZShidW5kbGVV
UkxSZWYpOwotICAgIHJldHVybiBidW5kbGU7CisgICAgYnVuZGxlLmdldCgpID0gYWRvcHRDRihD
RkJ1bmRsZUNyZWF0ZSgwLCBidW5kbGVVUkxSZWYuZ2V0KCkpKTsKIH0KIAogc3RhdGljIENGQnVu
ZGxlUmVmIGNmQnVuZGxlRm9yU3RyaW5nc0J1bmRsZShXZWJMb2NhbGl6YWJsZVN0cmluZ3NCdW5k
bGUqIHN0cmluZ3NCdW5kbGUpCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9D
aGFuZ2VMb2cKaW5kZXggZmFmMzJlNzdmODFlOGViZWI0NTA3NmE1NDgwNmNjMDRjYWQ5MjU2Mi4u
Njc4ZDJiNDUyMmFhMDljZmUwZTVjMmRlYTk5MDUwZThjYTM0NmFiYyAxMDA2NDQKLS0tIGEvVG9v
bHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY1IEBACisyMDIx
LTAzLTA0ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgUmVkdWNl
IHVzZSBvZiBDRlJldGFpbigpIC8gQ0ZSZWxlYXNlKCkgLyBDRkF1dG9SZWxlYXNlKCkgaW4gV2Vi
S2l0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjI3
NjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWR1
Y2UgdXNlIG9mIENGUmV0YWluKCkgLyBDRlJlbGVhc2UoKSAvIENGQXV0b1JlbGVhc2UoKSBpbiBX
ZWJLaXQgYnkgdXNpbmcgUmV0YWluUHRyPD4uCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9U
ZXN0TmV0c2NhcGVQbHVnSW4vUGx1Z2luT2JqZWN0TWFjLm1tOgorICAgICAgICAoY3JlYXRlQ29y
ZUFuaW1hdGlvbkxheWVyKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvQWNjZXNzaWJp
bGl0eUNvbW1vbk1hYy5tbToKKyAgICAgICAgKCtbTlNTdHJpbmcgc3RyaW5nV2l0aEpTU3RyaW5n
UmVmOl0pOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbToK
KyAgICAgICAgKGFjdGl2YXRlRm9udElPUyk6CisgICAgICAgIChkdW1wUmVuZGVyVHJlZSk6Cisg
ICAgICAgIChpbnZhbGlkYXRlQW55UHJldmlvdXNXYWl0VG9EdW1wV2F0Y2hkb2cpOgorICAgICAg
ICAoc2V0V2FpdFRvRHVtcFdhdGNoZG9nKToKKyAgICAgICAgKGR1bXApOgorICAgICAgICAocnVu
VGVzdCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlTWFjLmg6
CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIubW06
CisgICAgICAgICgtW0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIgbW91c2VTY3JvbGxCeVg6YW5kWTpj
b250aW51b3VzbHk6XSk6CisgICAgICAgICgtW0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIgbW91c2VT
Y3JvbGxCeVg6YW5kWTp3aXRoV2hlZWw6YW5kTW9tZW50dW1QaGFzZXM6XSk6CisgICAgICAgICog
RHVtcFJlbmRlclRyZWUvbWFjL1BpeGVsRHVtcFN1cHBvcnRNYWMubW06CisgICAgICAgICh0YWtl
V2luZG93U25hcHNob3QpOgorICAgICAgICAoY3JlYXRlQml0bWFwQ29udGV4dEZyb21XZWJWaWV3
KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvUmVzb3VyY2VMb2FkRGVsZWdhdGUubW06
CisgICAgICAgICgtW1Jlc291cmNlTG9hZERlbGVnYXRlIHdlYlZpZXc6cmVzb3VyY2U6d2lsbFNl
bmRSZXF1ZXN0OnJlZGlyZWN0UmVzcG9uc2U6ZnJvbURhdGFTb3VyY2U6XSk6CisgICAgICAgICog
RHVtcFJlbmRlclRyZWUvbWFjL1Rlc3RSdW5uZXJNYWMubW06CisgICAgICAgIChUZXN0UnVubmVy
OjphZGREaXNhbGxvd2VkVVJMKToKKyAgICAgICAgKFRlc3RSdW5uZXI6OnNldFdhaXRUb0R1bXAp
OgorICAgICAgICAqIEZvbnRXaXRoRmVhdHVyZXMvRm9udFdpdGhGZWF0dXJlcy9tYWluLmNwcDoK
KyAgICAgICAgKGNvbnN0cnVjdEZvbnRXaXRoVHJ1ZVR5cGVGZWF0dXJlKToKKyAgICAgICAgKGNv
bnN0cnVjdEZvbnRXaXRoT3BlblR5cGVGZWF0dXJlKToKKyAgICAgICAgKGRyYXdUZXh0KToKKyAg
ICAgICAgKG1haW4pOgorICAgICAgICAqIEltYWdlRGlmZi9JbWFnZURpZmYueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBJbWFnZURpZmYvUGxhdGZvcm1JbWFnZS5oOgorICAg
ICAgICAqIEltYWdlRGlmZi9jZy9QbGF0Zm9ybUltYWdlQ0cuY3BwOgorICAgICAgICAoSW1hZ2VE
aWZmOjpQbGF0Zm9ybUltYWdlOjpjcmVhdGVGcm9tU3RkaW4pOgorICAgICAgICAoSW1hZ2VEaWZm
OjpQbGF0Zm9ybUltYWdlOjpjcmVhdGVGcm9tRGlmZkRhdGEpOgorICAgICAgICAoSW1hZ2VEaWZm
OjpQbGF0Zm9ybUltYWdlOjpQbGF0Zm9ybUltYWdlKToKKyAgICAgICAgKEltYWdlRGlmZjo6UGxh
dGZvcm1JbWFnZTo6d2lkdGggY29uc3QpOgorICAgICAgICAoSW1hZ2VEaWZmOjpQbGF0Zm9ybUlt
YWdlOjpoZWlnaHQgY29uc3QpOgorICAgICAgICAoSW1hZ2VEaWZmOjpQbGF0Zm9ybUltYWdlOjpo
YXNBbHBoYSBjb25zdCk6CisgICAgICAgIChJbWFnZURpZmY6OlBsYXRmb3JtSW1hZ2U6OnBpeGVs
cyBjb25zdCk6CisgICAgICAgIChJbWFnZURpZmY6OlBsYXRmb3JtSW1hZ2U6OndyaXRlQXNQTkdU
b1N0ZG91dCk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZVBhZ2UuY3BwOgorICAgICAgICAoV1RSOjpJbmplY3RlZEJ1bmRsZVBhZ2U6OmR1
bXBET01Bc1dlYkFyY2hpdmUpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvaW9zL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRJT1MubW06CisgICAgICAgICgrW05TU3Ry
aW5nIHN0cmluZ1dpdGhKU1N0cmluZ1JlZjpdKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5Q29tbW9uTWFjLm1tOgorICAgICAgICAo
K1tOU1N0cmluZyBzdHJpbmdXaXRoSlNTdHJpbmdSZWY6XSk6CisgICAgICAgICogV2ViS2l0VGVz
dFJ1bm5lci9pb3MvSElERXZlbnRHZW5lcmF0b3IubW06CisgICAgICAgICgtW0hJREV2ZW50R2Vu
ZXJhdG9yIF9jcmVhdGVJT0hJREV2ZW50V2l0aEluZm86XSk6CisgICAgICAgICogV2ViS2l0VGVz
dFJ1bm5lci9tYWMvRXZlbnRTZW5kZXJQcm94eS5tbToKKyAgICAgICAgKC1bRXZlbnRTZW5kZXJT
eW50aGV0aWNFdmVudCBpbml0UHJlc3N1cmVFdmVudEF0TG9jYXRpb246Z2xvYmFsTG9jYXRpb246
c3RhZ2U6cHJlc3N1cmU6c3RhZ2VUcmFuc2l0aW9uOnBoYXNlOnRpbWU6ZXZlbnROdW1iZXI6d2lu
ZG93Ol0pOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvbWFjL1VJU2NyaXB0Q29udHJvbGxl
ck1hYy5tbToKKyAgICAgICAgKFdUUjo6Y2ZTdHJpbmcpOgorICAgICAgICAoV1RSOjpVSVNjcmlw
dENvbnRyb2xsZXJNYWM6OnJlcGxhY2VUZXh0QXRSYW5nZSk6CisKIDIwMjEtMDMtMDQgIENocmlz
IER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBbbWFjT1NdW1dLMl0gQ2hhbmdp
bmcgdGhlIHN5c3RlbSBsYW5ndWFnZSBkb2VzIG5vdCB1cGRhdGUgbmF2aWdhdG9yLmxhbmd1YWdl
CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0TmV0c2NhcGVQbHVnSW4vUGx1
Z2luT2JqZWN0TWFjLm1tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdE5ldHNjYXBlUGx1Z0lu
L1BsdWdpbk9iamVjdE1hYy5tbQppbmRleCA1OWY2NTdmZDNlNGM1OTkzMDNjN2Y0MDQwNDEyMmNi
NDRiNzljZjE0Li4yZjI2ZDg0Y2Y2ZjQ4N2I0Yjk2N2UzYjhmZjI0MTYwMmY3YmUwY2M0IDEwMDY0
NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0TmV0c2NhcGVQbHVnSW4vUGx1Z2luT2Jq
ZWN0TWFjLm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3ROZXRzY2FwZVBsdWdJbi9Q
bHVnaW5PYmplY3RNYWMubW0KQEAgLTY0LDIzICs2NCwxNSBAQCBDRlR5cGVSZWYgY3JlYXRlQ29y
ZUFuaW1hdGlvbkxheWVyKCkKICAgICAvLyBUdXJuIG9mZiBkZWZhdWx0IGFuaW1hdGlvbnMuCiAg
ICAgW2NhTGF5ZXIgc2V0U3R5bGU6QHsgQCJhY3Rpb25zIjogYWN0aW9ucyB9XTsKICAgICBbY2FM
YXllciBzZXROZWVkc0Rpc3BsYXlPbkJvdW5kc0NoYW5nZTpZRVNdOwotCiAgICAgW2NhTGF5ZXIg
c2V0Qm91bmRzOkNHUmVjdE1ha2UoMCwgMCwgMjAwLCAxMDApXTsKICAgICBbY2FMYXllciBzZXRB
bmNob3JQb2ludDpDR1BvaW50WmVyb107Ci0gICAgCi0gICAgQ0dDb2xvclJlZiBjb2xvciA9IENH
Q29sb3JDcmVhdGVHZW5lcmljUkdCKDAuNSwgMC41LCAxLCAxKTsKLSAgICBbY2FMYXllciBzZXRC
YWNrZ3JvdW5kQ29sb3I6Y29sb3JdOwotICAgIENHQ29sb3JSZWxlYXNlKGNvbG9yKTsKLSAgICAK
KyAgICBbY2FMYXllciBzZXRCYWNrZ3JvdW5kQ29sb3I6YWRvcHRDRihDR0NvbG9yQ3JlYXRlR2Vu
ZXJpY1JHQigwLjUsIDAuNSwgMSwgMSkpLmdldCgpXTsKICAgICBbY2FMYXllciBzZXRMYXlvdXRN
YW5hZ2VyOltDQUNvbnN0cmFpbnRMYXlvdXRNYW5hZ2VyIGxheW91dE1hbmFnZXJdXTsKIAogICAg
IENBTGF5ZXIgKnN1YmxheWVyID0gW0NBTGF5ZXIgbGF5ZXJdOwogICAgIC8vIFR1cm4gb2ZmIGRl
ZmF1bHQgYW5pbWF0aW9ucy4KICAgICBbc3VibGF5ZXIgc2V0U3R5bGU6QHsgQCJhY3Rpb25zIjog
YWN0aW9ucyB9XTsKLQotICAgIGNvbG9yID0gQ0dDb2xvckNyZWF0ZUdlbmVyaWNSR0IoMCwgMCwg
MCwgMC43NSk7Ci0gICAgW3N1YmxheWVyIHNldEJhY2tncm91bmRDb2xvcjpjb2xvcl07Ci0gICAg
Q0dDb2xvclJlbGVhc2UoY29sb3IpOworICAgIFtzdWJsYXllciBzZXRCYWNrZ3JvdW5kQ29sb3I6
YWRvcHRDRihDR0NvbG9yQ3JlYXRlR2VuZXJpY1JHQigwLCAwLCAwLCAwLjc1KSkuZ2V0KCldOwog
ICAgIFtzdWJsYXllciBzZXRCb3VuZHM6Q0dSZWN0TWFrZSgwLCAwLCAxODAsIDIwKV07CiAKICAg
ICBbc3VibGF5ZXIgYWRkQ29uc3RyYWludDpbQ0FDb25zdHJhaW50IGNvbnN0cmFpbnRXaXRoQXR0
cmlidXRlOmtDQUNvbnN0cmFpbnRNaW5ZCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9tYWMvQWNjZXNzaWJpbGl0eUNvbW1vbk1hYy5tbSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21h
Yy9BY2Nlc3NpYmlsaXR5Q29tbW9uTWFjLm1tCmluZGV4IDAzMDY3ZTJkMDg5MjE0ZmJlODQ2Njdi
MjgyNGY4Y2UzMTQ4MGY5ODcuLjU4OGM4YjE5YmY0MDRjMjIxMTAzOTljYzRhOGMyOTBmYjA2ZGIy
N2IgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9BY2Nlc3NpYmlsaXR5Q29t
bW9uTWFjLm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9BY2Nlc3NpYmlsaXR5Q29t
bW9uTWFjLm1tCkBAIC00MSw3ICs0MSw3IEBAICsgKE5TU3RyaW5nICopc3RyaW5nV2l0aEpTU3Ry
aW5nUmVmOihKU1N0cmluZ1JlZilqc1N0cmluZ1JlZgogICAgIGlmICghanNTdHJpbmdSZWYpCiAg
ICAgICAgIHJldHVybiBuaWw7CiAKLSAgICByZXR1cm4gQ0ZCcmlkZ2luZ1JlbGVhc2UoSlNTdHJp
bmdDb3B5Q0ZTdHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwganNTdHJpbmdSZWYpKTsKKyAgICBy
ZXR1cm4gYWRvcHRDRihKU1N0cmluZ0NvcHlDRlN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBq
c1N0cmluZ1JlZikpLmJyaWRnaW5nQXV0b3JlbGVhc2UoKTsKIH0KIAogLSAoSlNSZXRhaW5QdHI8
SlNTdHJpbmdSZWY+KWNyZWF0ZUpTU3RyaW5nUmVmCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMv
RHVtcFJlbmRlclRyZWUubW0KaW5kZXggMTRiZDFlODBkNmVmMDkzMjg4OTkzOGNiZDQ1YmE0MzFh
N2ZkNTYwNy4uNzM1MTAzOTZhNTgwYzllYmJiYzY0YTdmZTFiZWMyOTgyYzlmN2NjZSAxMDA2NDQK
LS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tCisrKyBiL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQpAQCAtMjA4LDggKzIwOCw4
IEBAIFdlYkZyYW1lICp0b3BMb2FkaW5nRnJhbWUgPSBuaWw7IC8vICFuaWwgaWZmIGEgbG9hZCBp
cyBpbiBwcm9ncmVzcwogUmV0YWluUHRyPE5TV2luZG93PiBtYWluV2luZG93OwogI2VuZGlmCiAK
LUNGTXV0YWJsZVNldFJlZiBkaXNhbGxvd2VkVVJMcz0gbnVsbHB0cjsKLXN0YXRpYyBDRlJ1bkxv
b3BUaW1lclJlZiB3YWl0VG9EdW1wV2F0Y2hkb2c7CitSZXRhaW5QdHI8Q0ZNdXRhYmxlU2V0UmVm
PiBkaXNhbGxvd2VkVVJMcyA9IG51bGxwdHI7CitzdGF0aWMgUmV0YWluUHRyPENGUnVuTG9vcFRp
bWVyUmVmPiB3YWl0VG9EdW1wV2F0Y2hkb2c7CiAKIHN0YXRpYyBSZXRhaW5QdHI8V2ViVmlldz4m
IGdsb2JhbFdlYlZpZXcoKQogewpAQCAtNTUwLDI2ICs1NTAsMjQgQEAgc3RhdGljIHZvaWQgYWRq
dXN0Rm9udHMoKQogCiBzdGF0aWMgdm9pZCBhY3RpdmF0ZUZvbnRJT1MoY29uc3QgdWludDhfdCog
Zm9udERhdGEsIHVuc2lnbmVkIGxvbmcgbGVuZ3RoLCBzdGQ6OnN0cmluZyBzZWN0aW9uTmFtZSkK
IHsKLSAgICBDR0RhdGFQcm92aWRlclJlZiBkYXRhID0gQ0dEYXRhUHJvdmlkZXJDcmVhdGVXaXRo
RGF0YShudWxscHRyLCBmb250RGF0YSwgbGVuZ3RoLCBudWxscHRyKTsKKyAgICBhdXRvIGRhdGEg
PSBhZG9wdENGKENHRGF0YVByb3ZpZGVyQ3JlYXRlV2l0aERhdGEobnVsbHB0ciwgZm9udERhdGEs
IGxlbmd0aCwgbnVsbHB0cikpOwogICAgIGlmICghZGF0YSkgewogICAgICAgICBmcHJpbnRmKHN0
ZGVyciwgIkZhaWxlZCB0byBjcmVhdGUgQ0dEYXRhUHJvdmlkZXJSZWYgZm9yIHRoZSAlcyBmb250
LlxuIiwgc2VjdGlvbk5hbWUuY19zdHIoKSk7CiAgICAgICAgIGV4aXQoMSk7CiAgICAgfQogCi0g
ICAgQ0dGb250UmVmIGNnRm9udCA9IENHRm9udENyZWF0ZVdpdGhEYXRhUHJvdmlkZXIoZGF0YSk7
Ci0gICAgQ0dEYXRhUHJvdmlkZXJSZWxlYXNlKGRhdGEpOworICAgIGF1dG8gY2dGb250ID0gYWRv
cHRDRihDR0ZvbnRDcmVhdGVXaXRoRGF0YVByb3ZpZGVyKGRhdGEuZ2V0KCkpKTsKICAgICBpZiAo
IWNnRm9udCkgewogICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkZhaWxlZCB0byBjcmVhdGUgQ0dG
b250UmVmIGZvciB0aGUgJXMgZm9udC5cbiIsIHNlY3Rpb25OYW1lLmNfc3RyKCkpOwogICAgICAg
ICBleGl0KDEpOwogICAgIH0KIAogICAgIENGRXJyb3JSZWYgZXJyb3IgPSBudWxscHRyOwotICAg
IENURm9udE1hbmFnZXJSZWdpc3RlckdyYXBoaWNzRm9udChjZ0ZvbnQsICZlcnJvcik7CisgICAg
Q1RGb250TWFuYWdlclJlZ2lzdGVyR3JhcGhpY3NGb250KGNnRm9udC5nZXQoKSwgJmVycm9yKTsK
ICAgICBpZiAoZXJyb3IpIHsKICAgICAgICAgZnByaW50ZihzdGRlcnIsICJGYWlsZWQgdG8gYWRk
IENHRm9udCB0byBDb3JlVGV4dCBmb3IgdGhlICVzIGZvbnQ6ICVzLlxuIiwgc2VjdGlvbk5hbWUu
Y19zdHIoKSwgQ0ZTdHJpbmdHZXRDU3RyaW5nUHRyKENGRXJyb3JDb3B5RGVzY3JpcHRpb24oZXJy
b3IpLCBrQ0ZTdHJpbmdFbmNvZGluZ1VURjgpKTsKICAgICAgICAgZXhpdCgxKTsKICAgICB9Ci0g
ICAgQ0dGb250UmVsZWFzZShjZ0ZvbnQpOwogfQogCiBzdGF0aWMgdm9pZCBhY3RpdmF0ZUZvbnRz
SU9TKCkKQEAgLTEyNjUsMTAgKzEyNjMsNyBAQCB2b2lkIGR1bXBSZW5kZXJUcmVlKGludCBhcmdj
LCBjb25zdCBjaGFyICphcmd2W10pCiAjZW5kaWYKIAogICAgIC8vIEZJWE1FOiBUaGlzIHNob3Vs
ZCBiZSBtb3ZlZCBvbnRvIFRlc3RSdW5uZXIgYW5kIG1hZGUgaW50byBhIEhhc2hTZXQKLSAgICBp
ZiAoZGlzYWxsb3dlZFVSTHMpIHsKLSAgICAgICAgQ0ZSZWxlYXNlKGRpc2FsbG93ZWRVUkxzKTsK
LSAgICAgICAgZGlzYWxsb3dlZFVSTHMgPSAwOwotICAgIH0KKyAgICBkaXNhbGxvd2VkVVJMcyA9
IG51bGxwdHI7CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIHRlYXJEb3duSU9TTGF5
b3V0VGVzdENvbW11bmljYXRpb24oKTsKQEAgLTE2MTUsMTggKzE2MTAsMTcgQEAgc3RhdGljIHZv
aWQgZHVtcEJhY2tGb3J3YXJkTGlzdEZvckFsbFdpbmRvd3MoKQogc3RhdGljIHZvaWQgaW52YWxp
ZGF0ZUFueVByZXZpb3VzV2FpdFRvRHVtcFdhdGNoZG9nKCkKIHsKICAgICBpZiAod2FpdFRvRHVt
cFdhdGNoZG9nKSB7Ci0gICAgICAgIENGUnVuTG9vcFRpbWVySW52YWxpZGF0ZSh3YWl0VG9EdW1w
V2F0Y2hkb2cpOwotICAgICAgICBDRlJlbGVhc2Uod2FpdFRvRHVtcFdhdGNoZG9nKTsKLSAgICAg
ICAgd2FpdFRvRHVtcFdhdGNoZG9nID0gTlVMTDsKKyAgICAgICAgQ0ZSdW5Mb29wVGltZXJJbnZh
bGlkYXRlKHdhaXRUb0R1bXBXYXRjaGRvZy5nZXQoKSk7CisgICAgICAgIHdhaXRUb0R1bXBXYXRj
aGRvZyA9IG51bGxwdHI7CiAgICAgfQogfQogCi12b2lkIHNldFdhaXRUb0R1bXBXYXRjaGRvZyhD
RlJ1bkxvb3BUaW1lclJlZiB0aW1lcikKK3ZvaWQgc2V0V2FpdFRvRHVtcFdhdGNoZG9nKFJldGFp
blB0cjxDRlJ1bkxvb3BUaW1lclJlZj4mJiB0aW1lcikKIHsKICAgICBBU1NFUlQodGltZXIpOwog
ICAgIEFTU0VSVChzaG91bGRTZXRXYWl0VG9EdW1wV2F0Y2hkb2coKSk7Ci0gICAgd2FpdFRvRHVt
cFdhdGNoZG9nID0gdGltZXI7Ci0gICAgQ0ZSdW5Mb29wQWRkVGltZXIoQ0ZSdW5Mb29wR2V0Q3Vy
cmVudCgpLCB3YWl0VG9EdW1wV2F0Y2hkb2csIGtDRlJ1bkxvb3BDb21tb25Nb2Rlcyk7CisgICAg
d2FpdFRvRHVtcFdhdGNoZG9nID0gV1RGTW92ZSh0aW1lcik7CisgICAgQ0ZSdW5Mb29wQWRkVGlt
ZXIoQ0ZSdW5Mb29wR2V0Q3VycmVudCgpLCB3YWl0VG9EdW1wV2F0Y2hkb2cuZ2V0KCksIGtDRlJ1
bkxvb3BDb21tb25Nb2Rlcyk7CiB9CiAKIGJvb2wgc2hvdWxkU2V0V2FpdFRvRHVtcFdhdGNoZG9n
KCkKQEAgLTE2ODMsMTEgKzE2NzcsMTEgQEAgdm9pZCBkdW1wKCkKICAgICAgICAgICAgIHJlc3Vs
dE1pbWVUeXBlID0gQCJhcHBsaWNhdGlvbi9wZGYiOwogICAgICAgICB9IGVsc2UgaWYgKGdUZXN0
UnVubmVyLT5kdW1wRE9NQXNXZWJBcmNoaXZlKCkpIHsKICAgICAgICAgICAgIFdlYkFyY2hpdmUg
KndlYkFyY2hpdmUgPSBbW21haW5GcmFtZSBET01Eb2N1bWVudF0gd2ViQXJjaGl2ZV07Ci0gICAg
ICAgICAgICByZXN1bHRTdHJpbmcgPSBDRkJyaWRnaW5nUmVsZWFzZShXZWJDb3JlVGVzdFN1cHBv
cnQ6OmNyZWF0ZVhNTFN0cmluZ0Zyb21XZWJBcmNoaXZlRGF0YSgoX19icmlkZ2UgQ0ZEYXRhUmVm
KVt3ZWJBcmNoaXZlIGRhdGFdKSk7CisgICAgICAgICAgICByZXN1bHRTdHJpbmcgPSBXZWJDb3Jl
VGVzdFN1cHBvcnQ6OmNyZWF0ZVhNTFN0cmluZ0Zyb21XZWJBcmNoaXZlRGF0YSgoX19icmlkZ2Ug
Q0ZEYXRhUmVmKVt3ZWJBcmNoaXZlIGRhdGFdKTsKICAgICAgICAgICAgIHJlc3VsdE1pbWVUeXBl
ID0gQCJhcHBsaWNhdGlvbi94LXdlYmFyY2hpdmUiOwogICAgICAgICB9IGVsc2UgaWYgKGdUZXN0
UnVubmVyLT5kdW1wU291cmNlQXNXZWJBcmNoaXZlKCkpIHsKICAgICAgICAgICAgIFdlYkFyY2hp
dmUgKndlYkFyY2hpdmUgPSBbW21haW5GcmFtZSBkYXRhU291cmNlXSB3ZWJBcmNoaXZlXTsKLSAg
ICAgICAgICAgIHJlc3VsdFN0cmluZyA9IENGQnJpZGdpbmdSZWxlYXNlKFdlYkNvcmVUZXN0U3Vw
cG9ydDo6Y3JlYXRlWE1MU3RyaW5nRnJvbVdlYkFyY2hpdmVEYXRhKChfX2JyaWRnZSBDRkRhdGFS
ZWYpW3dlYkFyY2hpdmUgZGF0YV0pKTsKKyAgICAgICAgICAgIHJlc3VsdFN0cmluZyA9IFdlYkNv
cmVUZXN0U3VwcG9ydDo6Y3JlYXRlWE1MU3RyaW5nRnJvbVdlYkFyY2hpdmVEYXRhKChfX2JyaWRn
ZSBDRkRhdGFSZWYpW3dlYkFyY2hpdmUgZGF0YV0pOwogICAgICAgICAgICAgcmVzdWx0TWltZVR5
cGUgPSBAImFwcGxpY2F0aW9uL3gtd2ViYXJjaGl2ZSI7CiAgICAgICAgIH0gZWxzZSBpZiAoZ1Rl
c3RSdW5uZXItPmlzUHJpbnRpbmcoKSkKICAgICAgICAgICAgIHJlc3VsdFN0cmluZyA9IFttYWlu
RnJhbWUgcmVuZGVyVHJlZUFzRXh0ZXJuYWxSZXByZXNlbnRhdGlvbkZvclByaW50aW5nXTsKQEAg
LTE5ODIsNyArMTk3Niw3IEBAIHN0YXRpYyB2b2lkIHJ1blRlc3QoY29uc3Qgc3RkOjpzdHJpbmcm
IGlucHV0TGluZSkKICAgICBnVGVzdFJ1bm5lci0+Y2xlYXJBbGxEYXRhYmFzZXMoKTsKIAogICAg
IGlmIChkaXNhbGxvd2VkVVJMcykKLSAgICAgICAgQ0ZTZXRSZW1vdmVBbGxWYWx1ZXMoZGlzYWxs
b3dlZFVSTHMpOworICAgICAgICBDRlNldFJlbW92ZUFsbFZhbHVlcyhkaXNhbGxvd2VkVVJMcy5n
ZXQoKSk7CiAgICAgaWYgKHNob3VsZExvZ0ZyYW1lTG9hZERlbGVnYXRlcyhwYXRoT3JVUkwuY19z
dHIoKSkpCiAgICAgICAgIGdUZXN0UnVubmVyLT5zZXREdW1wRnJhbWVMb2FkQ2FsbGJhY2tzKHRy
dWUpOwogCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRy
ZWVNYWMuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZU1hYy5oCmlu
ZGV4IDNkNDFiNWI3NGJiNzI4YTUxMmRlOTY3ZDk5NThmMDY4ODJkODU2M2MuLjRkOWQxZDJkNzA3
MzdlMGExOWQzYzQ0OTNlNzlmYzQ4NTNkMTZiOWMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZU1hYy5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L21hYy9EdW1wUmVuZGVyVHJlZU1hYy5oCkBAIC00NCwxMCArNDQsMTAgQEAgT0JKQ19DTEFTUyBX
ZWJTY3JpcHRXb3JsZDsKIE9CSkNfQ0xBU1MgV2ViVmlldzsKIAogZXh0ZXJuIENGTXV0YWJsZUFy
cmF5UmVmIG9wZW5XaW5kb3dzUmVmOwotZXh0ZXJuIENGTXV0YWJsZVNldFJlZiBkaXNhbGxvd2Vk
VVJMczsKIGV4dGVybiBXZWJGcmFtZSogbWFpbkZyYW1lOwogZXh0ZXJuIFdlYkZyYW1lKiB0b3BM
b2FkaW5nRnJhbWU7CiAjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiBSZXRhaW5QdHI8Q0ZNdXRh
YmxlU2V0UmVmPiBkaXNhbGxvd2VkVVJMczsKIGV4dGVybiBSZXRhaW5QdHI8RHVtcFJlbmRlclRy
ZWVEcmFnZ2luZ0luZm8+IGRyYWdnaW5nSW5mbzsKIGV4dGVybiBSZXRhaW5QdHI8TmF2aWdhdGlv
bkNvbnRyb2xsZXI+IGdOYXZpZ2F0aW9uQ29udHJvbGxlcjsKIGV4dGVybiBSZXRhaW5QdHI8UG9s
aWN5RGVsZWdhdGU+IHBvbGljeURlbGVnYXRlOwpAQCAtNjAsOSArNjAsMTAgQEAgZXh0ZXJuIFJl
dGFpblB0cjxVSVdpbmRvdz4gbWFpbldpbmRvdzsKIE9CSkNfQ0xBU1MgTlNXaW5kb3c7CiBleHRl
cm4gUmV0YWluUHRyPE5TV2luZG93PiBtYWluV2luZG93OwogI2VuZGlmCi0jZW5kaWYKIAotdm9p
ZCBzZXRXYWl0VG9EdW1wV2F0Y2hkb2coQ0ZSdW5Mb29wVGltZXJSZWYpOwordm9pZCBzZXRXYWl0
VG9EdW1wV2F0Y2hkb2coUmV0YWluUHRyPENGUnVuTG9vcFRpbWVyUmVmPiYmKTsKKyNlbmRpZiAv
LyBfX2NwbHVzcGx1cworCiBib29sIHNob3VsZFNldFdhaXRUb0R1bXBXYXRjaGRvZyh2b2lkKTsK
IAogI2lmZGVmIF9fY3BsdXNwbHVzCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9t
YWMvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5tbSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9F
dmVudFNlbmRpbmdDb250cm9sbGVyLm1tCmluZGV4IDE2YTYwNTFiYjdmYjY0YjlkZjBhYTllMzcz
MjJiODliMDExZDc1NzAuLmI4Nzk0MmIzYzZjOTI1ZjQzNTVmNWU1MzczYTVmNmRlZWYwZmYwNjEg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9FdmVudFNlbmRpbmdDb250cm9s
bGVyLm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9FdmVudFNlbmRpbmdDb250cm9s
bGVyLm1tCkBAIC04MDksMTYgKzgwOSwxNSBAQCAtICh2b2lkKW1vdXNlU2Nyb2xsQnlYOihpbnQp
eCBhbmRZOihpbnQpeSBjb250aW51b3VzbHk6KEJPT0wpY29udGludW91c2x5CiB7CiAjaWYgIVBM
QVRGT1JNKElPU19GQU1JTFkpCiAgICAgQ0dTY3JvbGxFdmVudFVuaXQgdW5pdCA9IGNvbnRpbnVv
dXNseSA/IGtDR1Njcm9sbEV2ZW50VW5pdFBpeGVsIDoga0NHU2Nyb2xsRXZlbnRVbml0TGluZTsK
LSAgICBDR0V2ZW50UmVmIGNnU2Nyb2xsRXZlbnQgPSBDR0V2ZW50Q3JlYXRlU2Nyb2xsV2hlZWxF
dmVudDIoTlVMTCwgdW5pdCwgMiwgeSwgeCwgMCk7CisgICAgYXV0byBjZ1Njcm9sbEV2ZW50ID0g
YWRvcHRDRihDR0V2ZW50Q3JlYXRlU2Nyb2xsV2hlZWxFdmVudDIoTlVMTCwgdW5pdCwgMiwgeSwg
eCwgMCkpOwogICAgIAogICAgIC8vIFNldCB0aGUgQ0dFdmVudCBsb2NhdGlvbiBpbiBmbGlwcGVk
IGNvb3JkcyByZWxhdGl2ZSB0byB0aGUgZmlyc3Qgc2NyZWVuLCB3aGljaAogICAgIC8vIGNvbXBl
bnNhdGVzIGZvciB0aGUgYmVoYXZpb3Igb2YgK1tOU0V2ZW50IGV2ZW50V2l0aENHRXZlbnQ6XSB3
aGVuIHRoZSBldmVudCBoYXMKICAgICAvLyBubyBhc3NvY2lhdGVkIHdpbmRvdy4gU2VlIDxyZGFy
Oi8vcHJvYmxlbS8xNzE4MDU5MT4uCiAgICAgQ0dQb2ludCBsYXN0R2xvYmFsTW91c2VQb3NpdGlv
biA9IENHUG9pbnRNYWtlKGxhc3RNb3VzZVBvc2l0aW9uLngsIFtbW05TU2NyZWVuIHNjcmVlbnNd
IG9iamVjdEF0SW5kZXg6MF0gZnJhbWVdLnNpemUuaGVpZ2h0IC0gbGFzdE1vdXNlUG9zaXRpb24u
eSk7Ci0gICAgQ0dFdmVudFNldExvY2F0aW9uKGNnU2Nyb2xsRXZlbnQsIGxhc3RHbG9iYWxNb3Vz
ZVBvc2l0aW9uKTsKKyAgICBDR0V2ZW50U2V0TG9jYXRpb24oY2dTY3JvbGxFdmVudC5nZXQoKSwg
bGFzdEdsb2JhbE1vdXNlUG9zaXRpb24pOwogCi0gICAgTlNFdmVudCAqc2Nyb2xsRXZlbnQgPSBb
TlNFdmVudCBldmVudFdpdGhDR0V2ZW50OmNnU2Nyb2xsRXZlbnRdOwotICAgIENGUmVsZWFzZShj
Z1Njcm9sbEV2ZW50KTsKKyAgICBOU0V2ZW50ICpzY3JvbGxFdmVudCA9IFtOU0V2ZW50IGV2ZW50
V2l0aENHRXZlbnQ6Y2dTY3JvbGxFdmVudC5nZXQoKV07CiAKICAgICBOU1ZpZXcgKnN1YlZpZXcg
PSBbW21haW5GcmFtZSB3ZWJWaWV3XSBoaXRUZXN0OltzY3JvbGxFdmVudCBsb2NhdGlvbkluV2lu
ZG93XV07CiAgICAgaWYgKHN1YlZpZXcpIHsKQEAgLTg3NSwxOSArODc0LDE4IEBAIC0gKHZvaWQp
bW91c2VTY3JvbGxCeVg6KGludCl4IGFuZFk6KGludCl5IHdpdGhXaGVlbDooTlNTdHJpbmcqKXBo
YXNlTmFtZSBhbmRNb21lCiAgICAgaWYgKG1vbWVudHVtID09IGtDR01vbWVudHVtU2Nyb2xsUGhh
c2VFbmQpCiAgICAgICAgIF9zZW50TW9tZW50dW1QaGFzZUVuZCA9IFlFUzsKIAotICAgIENHRXZl
bnRSZWYgY2dTY3JvbGxFdmVudCA9IENHRXZlbnRDcmVhdGVTY3JvbGxXaGVlbEV2ZW50MihOVUxM
LCBrQ0dTY3JvbGxFdmVudFVuaXRMaW5lLCAyLCB5LCB4LCAwKTsKKyAgICBhdXRvIGNnU2Nyb2xs
RXZlbnQgPSBhZG9wdENGKENHRXZlbnRDcmVhdGVTY3JvbGxXaGVlbEV2ZW50MihOVUxMLCBrQ0dT
Y3JvbGxFdmVudFVuaXRMaW5lLCAyLCB5LCB4LCAwKSk7CiAKICAgICAvLyBTZXQgdGhlIENHRXZl
bnQgbG9jYXRpb24gaW4gZmxpcHBlZCBjb29yZHMgcmVsYXRpdmUgdG8gdGhlIGZpcnN0IHNjcmVl
biwgd2hpY2gKICAgICAvLyBjb21wZW5zYXRlcyBmb3IgdGhlIGJlaGF2aW9yIG9mICtbTlNFdmVu
dCBldmVudFdpdGhDR0V2ZW50Ol0gd2hlbiB0aGUgZXZlbnQgaGFzCiAgICAgLy8gbm8gYXNzb2Np
YXRlZCB3aW5kb3cuIFNlZSA8cmRhcjovL3Byb2JsZW0vMTcxODA1OTE+LgogICAgIENHUG9pbnQg
bGFzdEdsb2JhbE1vdXNlUG9zaXRpb24gPSBDR1BvaW50TWFrZShsYXN0TW91c2VQb3NpdGlvbi54
LCBbW1tOU1NjcmVlbiBzY3JlZW5zXSBvYmplY3RBdEluZGV4OjBdIGZyYW1lXS5zaXplLmhlaWdo
dCAtIGxhc3RNb3VzZVBvc2l0aW9uLnkpOwotICAgIENHRXZlbnRTZXRMb2NhdGlvbihjZ1Njcm9s
bEV2ZW50LCBsYXN0R2xvYmFsTW91c2VQb3NpdGlvbik7Ci0gICAgQ0dFdmVudFNldEludGVnZXJW
YWx1ZUZpZWxkKGNnU2Nyb2xsRXZlbnQsIGtDR1Njcm9sbFdoZWVsRXZlbnRJc0NvbnRpbnVvdXMs
IDEpOwotICAgIENHRXZlbnRTZXRJbnRlZ2VyVmFsdWVGaWVsZChjZ1Njcm9sbEV2ZW50LCBrQ0dT
Y3JvbGxXaGVlbEV2ZW50U2Nyb2xsUGhhc2UsIHBoYXNlKTsKLSAgICBDR0V2ZW50U2V0SW50ZWdl
clZhbHVlRmllbGQoY2dTY3JvbGxFdmVudCwga0NHU2Nyb2xsV2hlZWxFdmVudE1vbWVudHVtUGhh
c2UsIG1vbWVudHVtKTsKKyAgICBDR0V2ZW50U2V0TG9jYXRpb24oY2dTY3JvbGxFdmVudC5nZXQo
KSwgbGFzdEdsb2JhbE1vdXNlUG9zaXRpb24pOworICAgIENHRXZlbnRTZXRJbnRlZ2VyVmFsdWVG
aWVsZChjZ1Njcm9sbEV2ZW50LmdldCgpLCBrQ0dTY3JvbGxXaGVlbEV2ZW50SXNDb250aW51b3Vz
LCAxKTsKKyAgICBDR0V2ZW50U2V0SW50ZWdlclZhbHVlRmllbGQoY2dTY3JvbGxFdmVudC5nZXQo
KSwga0NHU2Nyb2xsV2hlZWxFdmVudFNjcm9sbFBoYXNlLCBwaGFzZSk7CisgICAgQ0dFdmVudFNl
dEludGVnZXJWYWx1ZUZpZWxkKGNnU2Nyb2xsRXZlbnQuZ2V0KCksIGtDR1Njcm9sbFdoZWVsRXZl
bnRNb21lbnR1bVBoYXNlLCBtb21lbnR1bSk7CiAgICAgCi0gICAgTlNFdmVudCogc2Nyb2xsRXZl
bnQgPSBbTlNFdmVudCBldmVudFdpdGhDR0V2ZW50OmNnU2Nyb2xsRXZlbnRdOwotICAgIENGUmVs
ZWFzZShjZ1Njcm9sbEV2ZW50KTsKKyAgICBOU0V2ZW50KiBzY3JvbGxFdmVudCA9IFtOU0V2ZW50
IGV2ZW50V2l0aENHRXZlbnQ6Y2dTY3JvbGxFdmVudC5nZXQoKV07CiAKICAgICBpZiAoTlNWaWV3
KiB0YXJnZXRWaWV3ID0gW1ttYWluRnJhbWUgd2ViVmlld10gaGl0VGVzdDpbc2Nyb2xsRXZlbnQg
bG9jYXRpb25JbldpbmRvd11dKSB7CiAgICAgICAgIFtOU0FwcCBfc2V0Q3VycmVudEV2ZW50OnNj
cm9sbEV2ZW50XTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9QaXhlbER1
bXBTdXBwb3J0TWFjLm1tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1BpeGVsRHVtcFN1cHBv
cnRNYWMubW0KaW5kZXggYWMzMjgxYTRkZjNlMDIzNTY3MTg4MDdmMGFkNzgyYmYxZDc0NGJiNy4u
NGEyNmFhNTMxNjUwNjJjMGI4MDJiODBjMzU1OWE2ZmFkZTEwZDRlZiAxMDA2NDQKLS0tIGEvVG9v
bHMvRHVtcFJlbmRlclRyZWUvbWFjL1BpeGVsRHVtcFN1cHBvcnRNYWMubW0KKysrIGIvVG9vbHMv
RHVtcFJlbmRlclRyZWUvbWFjL1BpeGVsRHVtcFN1cHBvcnRNYWMubW0KQEAgLTc5LDEwICs3OSwx
MCBAQCBzdGF0aWMgdm9pZCBwYWludFJlcGFpbnRSZWN0T3ZlcmxheShXZWJWaWV3KiB3ZWJWaWV3
LCBDR0NvbnRleHRSZWYgY29udGV4dCkKICAgICBDR0NvbnRleHRSZXN0b3JlR1N0YXRlKGNvbnRl
eHQpOwogfQogCi1zdGF0aWMgQ0dJbWFnZVJlZiB0YWtlV2luZG93U25hcHNob3QoQ0dTV2luZG93
SUQgd2luZG93SUQsIENHV2luZG93SW1hZ2VPcHRpb24gaW1hZ2VPcHRpb25zKSBDRl9SRVRVUk5T
X1JFVEFJTkVECitzdGF0aWMgUmV0YWluUHRyPENHSW1hZ2VSZWY+IHRha2VXaW5kb3dTbmFwc2hv
dChDR1NXaW5kb3dJRCB3aW5kb3dJRCwgQ0dXaW5kb3dJbWFnZU9wdGlvbiBpbWFnZU9wdGlvbnMp
CiB7CiAgICAgaW1hZ2VPcHRpb25zIHw9IGtDR1dpbmRvd0ltYWdlQm91bmRzSWdub3JlRnJhbWlu
ZyB8IGtDR1dpbmRvd0ltYWdlU2hvdWxkQmVPcGFxdWU7Ci0gICAgcmV0dXJuIENHV2luZG93TGlz
dENyZWF0ZUltYWdlKENHUmVjdE51bGwsIGtDR1dpbmRvd0xpc3RPcHRpb25JbmNsdWRpbmdXaW5k
b3csIHdpbmRvd0lELCBpbWFnZU9wdGlvbnMpOworICAgIHJldHVybiBhZG9wdENGKENHV2luZG93
TGlzdENyZWF0ZUltYWdlKENHUmVjdE51bGwsIGtDR1dpbmRvd0xpc3RPcHRpb25JbmNsdWRpbmdX
aW5kb3csIHdpbmRvd0lELCBpbWFnZU9wdGlvbnMpKTsKIH0KIAogUmVmUHRyPEJpdG1hcENvbnRl
eHQ+IGNyZWF0ZUJpdG1hcENvbnRleHRGcm9tV2ViVmlldyhib29sIG9uc2NyZWVuLCBib29sIGlu
Y3JlbWVudGFsUmVwYWludCwgYm9vbCBzd2VlcEhvcml6b250YWxseSwgYm9vbCBkcmF3U2VsZWN0
aW9uUmVjdCkKQEAgLTEzMiwyMiArMTMyLDE5IEBAIFJlZlB0cjxCaXRtYXBDb250ZXh0PiBjcmVh
dGVCaXRtYXBDb250ZXh0RnJvbVdlYlZpZXcoYm9vbCBvbnNjcmVlbiwgYm9vbCBpbmNyZW1lCiAg
ICAgICAgICAgICAvLyBBc2sgdGhlIHdpbmRvdyBzZXJ2ZXIgdG8gcHJvdmlkZSB1cyBhIGNvbXBv
c2l0ZWQgdmVyc2lvbiBvZiB0aGUgKnJlYWwqIHdpbmRvdyBjb250ZW50IGluY2x1ZGluZyBzdXJm
YWNlcyAoaS5lLiBPcGVuR0wgY29udGVudCkKICAgICAgICAgICAgIC8vIE5vdGUgdGhhdCB0aGUg
cmV0dXJuZWQgaW1hZ2UgbWlnaHQgZGlmZmVyIHZlcnkgc2xpZ2h0bHkgZnJvbSB0aGUgd2luZG93
IGJhY2tpbmcgYmVjYXVzZSBvZiBkaXRoZXJpbmcgYXJ0aWZhY3RzIGluIHRoZSB3aW5kb3cgc2Vy
dmVyIGNvbXBvc2l0b3IuCiAgICAgICAgICAgICBOU1dpbmRvdyAqd2luZG93ID0gW3ZpZXcgd2lu
ZG93XTsKLSAgICAgICAgICAgIENHSW1hZ2VSZWYgaW1hZ2UgPSB0YWtlV2luZG93U25hcHNob3Qo
W3dpbmRvdyB3aW5kb3dOdW1iZXJdLCBrQ0dXaW5kb3dJbWFnZURlZmF1bHQpOworICAgICAgICAg
ICAgYXV0byBpbWFnZSA9IHRha2VXaW5kb3dTbmFwc2hvdChbd2luZG93IHdpbmRvd051bWJlcl0s
IGtDR1dpbmRvd0ltYWdlRGVmYXVsdCk7CiAKICAgICAgICAgICAgIGlmIChpbWFnZSkgewogICAg
ICAgICAgICAgICAgIC8vIFdvcmsgYXJvdW5kIDxyZGFyOi8vcHJvYmxlbS8xNzA4NDk5Mz47IHJl
LXJlcXVlc3QgdGhlIHNuYXBzaG90IGF0IGtDR1dpbmRvd0ltYWdlTm9taW5hbFJlc29sdXRpb24g
aWYgaXQgd2FzIGNhcHR1cmVkIGF0IHRoZSB3cm9uZyBzY2FsZS4KICAgICAgICAgICAgICAgICBD
R0Zsb2F0IGRlc2lyZWRTbmFwc2hvdFdpZHRoID0gd2luZG93LmZyYW1lLnNpemUud2lkdGggKiBk
ZXZpY2VTY2FsZUZhY3RvcjsKLSAgICAgICAgICAgICAgICBpZiAoQ0dJbWFnZUdldFdpZHRoKGlt
YWdlKSAhPSBkZXNpcmVkU25hcHNob3RXaWR0aCkgewotICAgICAgICAgICAgICAgICAgICBDR0lt
YWdlUmVsZWFzZShpbWFnZSk7CisgICAgICAgICAgICAgICAgaWYgKENHSW1hZ2VHZXRXaWR0aChp
bWFnZS5nZXQoKSkgIT0gZGVzaXJlZFNuYXBzaG90V2lkdGgpCiAgICAgICAgICAgICAgICAgICAg
IGltYWdlID0gdGFrZVdpbmRvd1NuYXBzaG90KFt3aW5kb3cgd2luZG93TnVtYmVyXSwga0NHV2lu
ZG93SW1hZ2VOb21pbmFsUmVzb2x1dGlvbik7Ci0gICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgfQogCiAgICAgICAgICAgICBpZiAoIWltYWdlKQogICAgICAgICAgICAgICAgIHJldHVybiBu
dWxscHRyOwogCi0gICAgICAgICAgICBDR0NvbnRleHREcmF3SW1hZ2UoY29udGV4dCwgQ0dSZWN0
TWFrZSgwLCAwLCBDR0ltYWdlR2V0V2lkdGgoaW1hZ2UpLCBDR0ltYWdlR2V0SGVpZ2h0KGltYWdl
KSksIGltYWdlKTsKLSAgICAgICAgICAgIENHSW1hZ2VSZWxlYXNlKGltYWdlKTsKKyAgICAgICAg
ICAgIENHQ29udGV4dERyYXdJbWFnZShjb250ZXh0LCBDR1JlY3RNYWtlKDAsIDAsIENHSW1hZ2VH
ZXRXaWR0aChpbWFnZS5nZXQoKSksIENHSW1hZ2VHZXRIZWlnaHQoaW1hZ2UuZ2V0KCkpKSwgaW1h
Z2UuZ2V0KCkpOwogCiAgICAgICAgICAgICBpZiAoW3ZpZXcgaXNUcmFja2luZ1JlcGFpbnRzXSkK
ICAgICAgICAgICAgICAgICBwYWludFJlcGFpbnRSZWN0T3ZlcmxheSh2aWV3LCBjb250ZXh0KTsK
ZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9SZXNvdXJjZUxvYWREZWxlZ2F0
ZS5tbSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9SZXNvdXJjZUxvYWREZWxlZ2F0ZS5tbQpp
bmRleCA1MzlkMTZhOGEwY2ZiYmFmYTBlMzQwMWY2NDgzOWUwMjliYWYzMjkwLi4wYTgzMmE5ZGQ2
MDU5YjY2NWRmNzg5NTU5MzgzMjQ2ODhhOTM5MjgzIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9tYWMvUmVzb3VyY2VMb2FkRGVsZWdhdGUubW0KKysrIGIvVG9vbHMvRHVtcFJlbmRl
clRyZWUvbWFjL1Jlc291cmNlTG9hZERlbGVnYXRlLm1tCkBAIC0xNzIsNyArMTcyLDcgQEAgLShO
U1VSTFJlcXVlc3QgKil3ZWJWaWV3OiAoV2ViVmlldyAqKXd2IHJlc291cmNlOmlkZW50aWZpZXIg
d2lsbFNlbmRSZXF1ZXN0OiAoTlMKICAgICAgICAgfQogICAgIH0KIAotICAgIGlmIChkaXNhbGxv
d2VkVVJMcyAmJiBDRlNldENvbnRhaW5zVmFsdWUoZGlzYWxsb3dlZFVSTHMsIChfX2JyaWRnZSBD
RlVSTFJlZil1cmwpKQorICAgIGlmIChkaXNhbGxvd2VkVVJMcyAmJiBDRlNldENvbnRhaW5zVmFs
dWUoZGlzYWxsb3dlZFVSTHMuZ2V0KCksIChfX2JyaWRnZSBDRlVSTFJlZil1cmwpKQogICAgICAg
ICByZXR1cm4gbmlsOwogCiAgICAgYXV0byBuZXdSZXF1ZXN0ID0gYWRvcHROUyhbcmVxdWVzdCBt
dXRhYmxlQ29weV0pOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1Rlc3RS
dW5uZXJNYWMubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVGVzdFJ1bm5lck1hYy5tbQpp
bmRleCAyNGNlMjJmN2ZkYTc2ZDU1Zjg2ZTZhNWQ0YTFmYmJiYThlYzJiNjBmLi4wOWRjMmM0NTU4
NWYwMDdmMDU2MTY1MWQxNzBlYzQzNGU1ZGZlZWY3IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9tYWMvVGVzdFJ1bm5lck1hYy5tbQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9t
YWMvVGVzdFJ1bm5lck1hYy5tbQpAQCAtMTM3LDEzICsxMzcsMTMgQEAgdm9pZCBUZXN0UnVubmVy
OjphZGREaXNhbGxvd2VkVVJMKEpTU3RyaW5nUmVmIHVybCkKICAgICBSZXRhaW5QdHI8Q0ZTdHJp
bmdSZWY+IHVybENGID0gYWRvcHRDRihKU1N0cmluZ0NvcHlDRlN0cmluZyhrQ0ZBbGxvY2F0b3JE
ZWZhdWx0LCB1cmwpKTsKIAogICAgIGlmICghZGlzYWxsb3dlZFVSTHMpCi0gICAgICAgIGRpc2Fs
bG93ZWRVUkxzID0gQ0ZTZXRDcmVhdGVNdXRhYmxlKGtDRkFsbG9jYXRvckRlZmF1bHQsIDAsIE5V
TEwpOworICAgICAgICBkaXNhbGxvd2VkVVJMcyA9IGFkb3B0Q0YoQ0ZTZXRDcmVhdGVNdXRhYmxl
KGtDRkFsbG9jYXRvckRlZmF1bHQsIDAsIE5VTEwpKTsKIAogICAgIC8vIENhbm9uaWNhbGl6ZSB0
aGUgVVJMCiAgICAgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0ID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0
V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzooX19icmlkZ2UgTlNTdHJpbmcgKil1cmxDRi5n
ZXQoKV1dOwogICAgIHJlcXVlc3QgPSBbTlNVUkxQcm90b2NvbCBjYW5vbmljYWxSZXF1ZXN0Rm9y
UmVxdWVzdDpyZXF1ZXN0XTsKIAotICAgIENGU2V0QWRkVmFsdWUoZGlzYWxsb3dlZFVSTHMsIChf
X2JyaWRnZSBDRlVSTFJlZilbcmVxdWVzdCBVUkxdKTsKKyAgICBDRlNldEFkZFZhbHVlKGRpc2Fs
bG93ZWRVUkxzLmdldCgpLCAoX19icmlkZ2UgQ0ZVUkxSZWYpW3JlcXVlc3QgVVJMXSk7CiB9CiAK
IGJvb2wgVGVzdFJ1bm5lcjo6Y2FsbFNob3VsZENsb3NlT25XZWJWaWV3KCkKQEAgLTU3Nyw3ICs1
NzcsNyBAQCB2b2lkIFRlc3RSdW5uZXI6OnNldFdhaXRUb0R1bXAoYm9vbCB3YWl0VW50aWxEb25l
KQogewogICAgIG1fd2FpdFRvRHVtcCA9IHdhaXRVbnRpbERvbmU7CiAgICAgaWYgKG1fd2FpdFRv
RHVtcCAmJiBtX3RpbWVvdXQgJiYgc2hvdWxkU2V0V2FpdFRvRHVtcFdhdGNoZG9nKCkpCi0gICAg
ICAgIHNldFdhaXRUb0R1bXBXYXRjaGRvZyhDRlJ1bkxvb3BUaW1lckNyZWF0ZShrQ0ZBbGxvY2F0
b3JEZWZhdWx0LCBDRkFic29sdXRlVGltZUdldEN1cnJlbnQoKSArIG1fdGltZW91dCAvIDEwMDAu
MCwgMCwgMCwgMCwgd2FpdFVudGlsRG9uZVdhdGNoZG9nRmlyZWQsIE5VTEwpKTsKKyAgICAgICAg
c2V0V2FpdFRvRHVtcFdhdGNoZG9nKGFkb3B0Q0YoQ0ZSdW5Mb29wVGltZXJDcmVhdGUoa0NGQWxs
b2NhdG9yRGVmYXVsdCwgQ0ZBYnNvbHV0ZVRpbWVHZXRDdXJyZW50KCkgKyBtX3RpbWVvdXQgLyAx
MDAwLjAsIDAsIDAsIDAsIHdhaXRVbnRpbERvbmVXYXRjaGRvZ0ZpcmVkLCBOVUxMKSkpOwogfQog
CiBpbnQgVGVzdFJ1bm5lcjo6d2luZG93Q291bnQoKQpkaWZmIC0tZ2l0IGEvVG9vbHMvRm9udFdp
dGhGZWF0dXJlcy9Gb250V2l0aEZlYXR1cmVzL21haW4uY3BwIGIvVG9vbHMvRm9udFdpdGhGZWF0
dXJlcy9Gb250V2l0aEZlYXR1cmVzL21haW4uY3BwCmluZGV4IGM0ZWNkNzY1ODRiOGU3YTdiMTdm
N2RjNGI0MjAxMDU0YmE1ZmIxYWQuLjBkOGM4OTVjNjhlYjAwZGI3ZTBlNWFmZDVlMzhhMTVjY2Ey
ZWZlYTggMTAwNjQ0Ci0tLSBhL1Rvb2xzL0ZvbnRXaXRoRmVhdHVyZXMvRm9udFdpdGhGZWF0dXJl
cy9tYWluLmNwcAorKysgYi9Ub29scy9Gb250V2l0aEZlYXR1cmVzL0ZvbnRXaXRoRmVhdHVyZXMv
bWFpbi5jcHAKQEAgLTMyLDUwICszMiwzOSBAQAogI2luY2x1ZGUgPEltYWdlSU8vSW1hZ2VJTy5o
PgogI2luY2x1ZGUgPGZzdHJlYW0+CiAKLXN0YXRpYyBDVEZvbnREZXNjcmlwdG9yUmVmIGNvbnN0
cnVjdEZvbnRXaXRoVHJ1ZVR5cGVGZWF0dXJlKENURm9udERlc2NyaXB0b3JSZWYgZm9udERlc2Ny
aXB0b3IsIGludCB0eXBlLCBpbnQgc2VsZWN0b3IpCitzdGF0aWMgUmV0YWluUHRyPENURm9udERl
c2NyaXB0b3JSZWY+IGNvbnN0cnVjdEZvbnRXaXRoVHJ1ZVR5cGVGZWF0dXJlKENURm9udERlc2Ny
aXB0b3JSZWYgZm9udERlc2NyaXB0b3IsIGludCB0eXBlLCBpbnQgc2VsZWN0b3IpCiB7Ci0gICAg
Q0ZOdW1iZXJSZWYgdHlwZVZhbHVlID0gQ0ZOdW1iZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVs
dCwga0NGTnVtYmVySW50VHlwZSwgJnR5cGUpOwotICAgIENGTnVtYmVyUmVmIHNlbGVjdG9yVmFs
dWUgPSBDRk51bWJlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrQ0ZOdW1iZXJJbnRUeXBl
LCAmc2VsZWN0b3IpOworICAgIGF1dG8gdHlwZVZhbHVlID0gYWRvcHRDRihDRk51bWJlckNyZWF0
ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrQ0ZOdW1iZXJJbnRUeXBlLCAmdHlwZSkpOworICAgIGF1
dG8gc2VsZWN0b3JWYWx1ZSA9IGFkb3B0Q0YoQ0ZOdW1iZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVm
YXVsdCwga0NGTnVtYmVySW50VHlwZSwgJnNlbGVjdG9yKSk7CiAgICAgQ0ZUeXBlUmVmIGZlYXR1
cmVEaWN0aW9uYXJ5S2V5c1tdID0geyBrQ1RGb250RmVhdHVyZVR5cGVJZGVudGlmaWVyS2V5LCBr
Q1RGb250RmVhdHVyZVNlbGVjdG9ySWRlbnRpZmllcktleSB9OwotICAgIENGVHlwZVJlZiBmZWF0
dXJlRGljdGlvbmFyeVZhbHVlc1tdID0geyB0eXBlVmFsdWUsIHNlbGVjdG9yVmFsdWUgfTsKLSAg
ICBDRkRpY3Rpb25hcnlSZWYgZmVhdHVyZURpY3Rpb25hcnkgPSBDRkRpY3Rpb25hcnlDcmVhdGUo
a0NGQWxsb2NhdG9yRGVmYXVsdCwgZmVhdHVyZURpY3Rpb25hcnlLZXlzLCBmZWF0dXJlRGljdGlv
bmFyeVZhbHVlcywgMiwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURp
Y3Rpb25hcnlWYWx1ZUNhbGxCYWNrcyk7Ci0gICAgQ0ZSZWxlYXNlKHR5cGVWYWx1ZSk7Ci0gICAg
Q0ZSZWxlYXNlKHNlbGVjdG9yVmFsdWUpOworICAgIENGVHlwZVJlZiBmZWF0dXJlRGljdGlvbmFy
eVZhbHVlc1tdID0geyB0eXBlVmFsdWUuZ2V0KCksIHNlbGVjdG9yVmFsdWUuZ2V0KCkgfTsKKyAg
ICBhdXRvIGZlYXR1cmVEaWN0aW9uYXJ5ID0gYWRvcHRDRihDRkRpY3Rpb25hcnlDcmVhdGUoa0NG
QWxsb2NhdG9yRGVmYXVsdCwgZmVhdHVyZURpY3Rpb25hcnlLZXlzLCBmZWF0dXJlRGljdGlvbmFy
eVZhbHVlcywgMiwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rp
b25hcnlWYWx1ZUNhbGxCYWNrcykpOwogCi0gICAgQ0ZUeXBlUmVmIGZlYXR1cmVTZXR0aW5nc1Zh
bHVlc1tdID0geyBmZWF0dXJlRGljdGlvbmFyeSB9OwotICAgIENGQXJyYXlSZWYgZm9udEZlYXR1
cmVTZXR0aW5ncyA9IENGQXJyYXlDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgZmVhdHVyZVNl
dHRpbmdzVmFsdWVzLCAxLCAma0NGVHlwZUFycmF5Q2FsbEJhY2tzKTsKLSAgICBDRlJlbGVhc2Uo
ZmVhdHVyZURpY3Rpb25hcnkpOworICAgIENGVHlwZVJlZiBmZWF0dXJlU2V0dGluZ3NWYWx1ZXNb
XSA9IHsgZmVhdHVyZURpY3Rpb25hcnkuZ2V0KCkgfTsKKyAgICBhdXRvIGZvbnRGZWF0dXJlU2V0
dGluZ3MgPSBhZG9wdENGKENGQXJyYXlDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgZmVhdHVy
ZVNldHRpbmdzVmFsdWVzLCAxLCAma0NGVHlwZUFycmF5Q2FsbEJhY2tzKSk7CiAKICAgICBDRlR5
cGVSZWYgZm9udERlc2NyaXB0b3JLZXlzW10gPSB7IGtDVEZvbnRGZWF0dXJlU2V0dGluZ3NBdHRy
aWJ1dGUgfTsKLSAgICBDRlR5cGVSZWYgZm9udERlc2NyaXB0b3JWYWx1ZXNbXSA9IHsgZm9udEZl
YXR1cmVTZXR0aW5ncyB9OwotICAgIENGRGljdGlvbmFyeVJlZiBmb250RGVzY3JpcHRvckF0dHJp
YnV0ZXMgPSBDRkRpY3Rpb25hcnlDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgZm9udERlc2Ny
aXB0b3JLZXlzLCBmb250RGVzY3JpcHRvclZhbHVlcywgMSwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5
Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcyk7Ci0gICAgQ0ZSZWxl
YXNlKGZvbnRGZWF0dXJlU2V0dGluZ3MpOworICAgIENGVHlwZVJlZiBmb250RGVzY3JpcHRvclZh
bHVlc1tdID0geyBmb250RmVhdHVyZVNldHRpbmdzLmdldCgpIH07CisgICAgYXV0byBmb250RGVz
Y3JpcHRvckF0dHJpYnV0ZXMgPSBhZG9wdENGKENGRGljdGlvbmFyeUNyZWF0ZShrQ0ZBbGxvY2F0
b3JEZWZhdWx0LCBmb250RGVzY3JpcHRvcktleXMsIGZvbnREZXNjcmlwdG9yVmFsdWVzLCAxLCAm
a0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2Fs
bEJhY2tzKSk7CiAKLSAgICBDVEZvbnREZXNjcmlwdG9yUmVmIG1vZGlmaWVkRm9udERlc2NyaXB0
b3IgPSBDVEZvbnREZXNjcmlwdG9yQ3JlYXRlQ29weVdpdGhBdHRyaWJ1dGVzKGZvbnREZXNjcmlw
dG9yLCBmb250RGVzY3JpcHRvckF0dHJpYnV0ZXMpOwotICAgIENGUmVsZWFzZShmb250RGVzY3Jp
cHRvckF0dHJpYnV0ZXMpOwotICAgIHJldHVybiBtb2RpZmllZEZvbnREZXNjcmlwdG9yOworICAg
IHJldHVybiBhZG9wdENGKENURm9udERlc2NyaXB0b3JDcmVhdGVDb3B5V2l0aEF0dHJpYnV0ZXMo
Zm9udERlc2NyaXB0b3IsIGZvbnREZXNjcmlwdG9yQXR0cmlidXRlcy5nZXQoKSkpOwogfQogCi1z
dGF0aWMgQ1RGb250RGVzY3JpcHRvclJlZiBjb25zdHJ1Y3RGb250V2l0aE9wZW5UeXBlRmVhdHVy
ZShDVEZvbnREZXNjcmlwdG9yUmVmIGZvbnREZXNjcmlwdG9yLCBDRlN0cmluZ1JlZiBmZWF0dXJl
LCBpbnQgdmFsdWUpCitzdGF0aWMgUmV0YWluUHRyPENURm9udERlc2NyaXB0b3JSZWY+IGNvbnN0
cnVjdEZvbnRXaXRoT3BlblR5cGVGZWF0dXJlKENURm9udERlc2NyaXB0b3JSZWYgZm9udERlc2Ny
aXB0b3IsIENGU3RyaW5nUmVmIGZlYXR1cmUsIGludCB2YWx1ZSkKIHsKLSAgICBDRk51bWJlclJl
ZiBmZWF0dXJlVmFsdWUgPSBDRk51bWJlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrQ0ZO
dW1iZXJJbnRUeXBlLCAmdmFsdWUpOworICAgIGF1dG8gZmVhdHVyZVZhbHVlID0gYWRvcHRDRihD
Rk51bWJlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrQ0ZOdW1iZXJJbnRUeXBlLCAmdmFs
dWUpKTsKICAgICBDRlR5cGVSZWYgZmVhdHVyZURpY3Rpb25hcnlLZXlzW10gPSB7IGtDVEZvbnRP
cGVuVHlwZUZlYXR1cmVUYWcsIGtDVEZvbnRPcGVuVHlwZUZlYXR1cmVWYWx1ZSB9OwotICAgIENG
VHlwZVJlZiBmZWF0dXJlRGljdGlvbmFyeVZhbHVlc1tdID0geyBmZWF0dXJlLCBmZWF0dXJlVmFs
dWUgfTsKLSAgICBDRkRpY3Rpb25hcnlSZWYgZmVhdHVyZURpY3Rpb25hcnkgPSBDRkRpY3Rpb25h
cnlDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgZmVhdHVyZURpY3Rpb25hcnlLZXlzLCBmZWF0
dXJlRGljdGlvbmFyeVZhbHVlcywgMiwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAm
a0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcyk7Ci0gICAgQ0ZSZWxlYXNlKGZlYXR1cmVW
YWx1ZSk7CisgICAgQ0ZUeXBlUmVmIGZlYXR1cmVEaWN0aW9uYXJ5VmFsdWVzW10gPSB7IGZlYXR1
cmUsIGZlYXR1cmVWYWx1ZS5nZXQoKSB9OworICAgIGF1dG8gZmVhdHVyZURpY3Rpb25hcnkgPSBh
ZG9wdENGKENGRGljdGlvbmFyeUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBmZWF0dXJlRGlj
dGlvbmFyeUtleXMsIGZlYXR1cmVEaWN0aW9uYXJ5VmFsdWVzLCAyLCAma0NGVHlwZURpY3Rpb25h
cnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7CiAKLSAg
ICBDRlR5cGVSZWYgZmVhdHVyZVNldHRpbmdzVmFsdWVzW10gPSB7IGZlYXR1cmVEaWN0aW9uYXJ5
IH07Ci0gICAgQ0ZBcnJheVJlZiBmb250RmVhdHVyZVNldHRpbmdzID0gQ0ZBcnJheUNyZWF0ZShr
Q0ZBbGxvY2F0b3JEZWZhdWx0LCBmZWF0dXJlU2V0dGluZ3NWYWx1ZXMsIDEsICZrQ0ZUeXBlQXJy
YXlDYWxsQmFja3MpOwotICAgIENGUmVsZWFzZShmZWF0dXJlRGljdGlvbmFyeSk7CisgICAgQ0ZU
eXBlUmVmIGZlYXR1cmVTZXR0aW5nc1ZhbHVlc1tdID0geyBmZWF0dXJlRGljdGlvbmFyeS5nZXQo
KSB9OworICAgIGF1dG8gZm9udEZlYXR1cmVTZXR0aW5ncyA9IGFkb3B0Q0YoQ0ZBcnJheUNyZWF0
ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBmZWF0dXJlU2V0dGluZ3NWYWx1ZXMsIDEsICZrQ0ZUeXBl
QXJyYXlDYWxsQmFja3MpKTsKIAogICAgIENGVHlwZVJlZiBmb250RGVzY3JpcHRvcktleXNbXSA9
IHsga0NURm9udEZlYXR1cmVTZXR0aW5nc0F0dHJpYnV0ZSB9OwotICAgIENGVHlwZVJlZiBmb250
RGVzY3JpcHRvclZhbHVlc1tdID0geyBmb250RmVhdHVyZVNldHRpbmdzIH07Ci0gICAgQ0ZEaWN0
aW9uYXJ5UmVmIGZvbnREZXNjcmlwdG9yQXR0cmlidXRlcyA9IENGRGljdGlvbmFyeUNyZWF0ZShr
Q0ZBbGxvY2F0b3JEZWZhdWx0LCBmb250RGVzY3JpcHRvcktleXMsIGZvbnREZXNjcmlwdG9yVmFs
dWVzLCAxLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFy
eVZhbHVlQ2FsbEJhY2tzKTsKLSAgICBDRlJlbGVhc2UoZm9udEZlYXR1cmVTZXR0aW5ncyk7Cisg
ICAgQ0ZUeXBlUmVmIGZvbnREZXNjcmlwdG9yVmFsdWVzW10gPSB7IGZvbnRGZWF0dXJlU2V0dGlu
Z3MuZ2V0KCkgfTsKKyAgICBhdXRvIGZvbnREZXNjcmlwdG9yQXR0cmlidXRlcyA9IGFkb3B0Q0Yo
Q0ZEaWN0aW9uYXJ5Q3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGZvbnREZXNjcmlwdG9yS2V5
cywgZm9udERlc2NyaXB0b3JWYWx1ZXMsIDEsICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNr
cywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpKTsKIAotICAgIENURm9udERlc2Ny
aXB0b3JSZWYgbW9kaWZpZWRGb250RGVzY3JpcHRvciA9IENURm9udERlc2NyaXB0b3JDcmVhdGVD
b3B5V2l0aEF0dHJpYnV0ZXMoZm9udERlc2NyaXB0b3IsIGZvbnREZXNjcmlwdG9yQXR0cmlidXRl
cyk7Ci0gICAgQ0ZSZWxlYXNlKGZvbnREZXNjcmlwdG9yQXR0cmlidXRlcyk7Ci0gICAgcmV0dXJu
IG1vZGlmaWVkRm9udERlc2NyaXB0b3I7CisgICAgcmV0dXJuIGFkb3B0Q0YoQ1RGb250RGVzY3Jp
cHRvckNyZWF0ZUNvcHlXaXRoQXR0cmlidXRlcyhmb250RGVzY3JpcHRvciwgZm9udERlc2NyaXB0
b3JBdHRyaWJ1dGVzLmdldCgpKSk7CiB9CiAKIHN0YXRpYyB2b2lkIGRyYXdUZXh0KENHQ29udGV4
dFJlZiBjb250ZXh0LCBDVEZvbnREZXNjcmlwdG9yUmVmIGZvbnREZXNjcmlwdG9yLCBDRlN0cmlu
Z1JlZiBwcmVmaXgsIENHUG9pbnQgbG9jYXRpb24pCkBAIC04NCwzNyArNzMsMjkgQEAgc3RhdGlj
IHZvaWQgZHJhd1RleHQoQ0dDb250ZXh0UmVmIGNvbnRleHQsIENURm9udERlc2NyaXB0b3JSZWYg
Zm9udERlc2NyaXB0b3IsIEMKICAgICBDR0NvbnRleHRTZXRUZXh0UG9zaXRpb24oY29udGV4dCwg
bG9jYXRpb24ueCwgbG9jYXRpb24ueSk7CiAKICAgICBDR0Zsb2F0IGZvbnRTaXplID0gMjU7Ci0g
ICAgQ1RGb250UmVmIGZvbnQgPSBDVEZvbnRDcmVhdGVXaXRoRm9udERlc2NyaXB0b3IoZm9udERl
c2NyaXB0b3IsIGZvbnRTaXplLCBudWxscHRyKTsKKyAgICBhdXRvIGZvbnQgPSBhZG9wdENGKENU
Rm9udENyZWF0ZVdpdGhGb250RGVzY3JpcHRvcihmb250RGVzY3JpcHRvciwgZm9udFNpemUsIG51
bGxwdHIpKTsKIAotICAgIENGTXV0YWJsZVN0cmluZ1JlZiBzdHJpbmcgPSBDRlN0cmluZ0NyZWF0
ZU11dGFibGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgMCk7Ci0gICAgQ0ZTdHJpbmdBcHBlbmQoc3Ry
aW5nLCBwcmVmaXgpOwotICAgIENGU3RyaW5nQXBwZW5kKHN0cmluZywgQ0ZTVFIoIkFCQ0RFRkdI
SUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXoiKSk7CisgICAgYXV0
byBzdHJpbmcgPSBhZG9wdENGKENGU3RyaW5nQ3JlYXRlTXV0YWJsZShrQ0ZBbGxvY2F0b3JEZWZh
dWx0LCAwKSk7CisgICAgQ0ZTdHJpbmdBcHBlbmQoc3RyaW5nLmdldCgpLCBwcmVmaXgpOworICAg
IENGU3RyaW5nQXBwZW5kKHN0cmluZy5nZXQoKSwgQ0ZTVFIoIkFCQ0RFRkdISUpLTE1OT1BRUlNU
VVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXoiKSk7CiAKLSAgICBDR0NvbG9yUmVmIHJl
ZCA9IENHQ29sb3JDcmVhdGVHZW5lcmljUkdCKDEsIDAsIDAsIDEpOworICAgIGF1dG8gcmVkID0g
YWRvcHRDRihDR0NvbG9yQ3JlYXRlR2VuZXJpY1JHQigxLCAwLCAwLCAxKSk7CiAgICAgQ0ZUeXBl
UmVmIGxpbmVLZXlzW10gPSB7IGtDVEZvcmVncm91bmRDb2xvckF0dHJpYnV0ZU5hbWUgfTsKLSAg
ICBDRlR5cGVSZWYgbGluZVZhbHVlc1tdID0geyByZWQgfTsKLSAgICBDRkRpY3Rpb25hcnlSZWYg
bGluZUF0dHJpYnV0ZXMgPSBDRkRpY3Rpb25hcnlDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwg
bGluZUtleXMsIGxpbmVWYWx1ZXMsIDEsICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywg
JmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpOwotICAgIENHQ29sb3JSZWxlYXNlKHJl
ZCk7CisgICAgQ0ZUeXBlUmVmIGxpbmVWYWx1ZXNbXSA9IHsgcmVkLmdldCgpIH07CisgICAgYXV0
byBsaW5lQXR0cmlidXRlcyA9IGFkb3B0Q0YoQ0ZEaWN0aW9uYXJ5Q3JlYXRlKGtDRkFsbG9jYXRv
ckRlZmF1bHQsIGxpbmVLZXlzLCBsaW5lVmFsdWVzLCAxLCAma0NGVHlwZURpY3Rpb25hcnlLZXlD
YWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7CiAKLSAgICBDRkF0
dHJpYnV0ZWRTdHJpbmdSZWYgYXR0cmlidXRlZFN0cmluZyA9IENGQXR0cmlidXRlZFN0cmluZ0Ny
ZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBzdHJpbmcsIGxpbmVBdHRyaWJ1dGVzKTsKLSAgICBD
RlJlbGVhc2UobGluZUF0dHJpYnV0ZXMpOworICAgIGF1dG8gYXR0cmlidXRlZFN0cmluZyA9IGFk
b3B0Q0YoQ0ZBdHRyaWJ1dGVkU3RyaW5nQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIHN0cmlu
Zy5nZXQoKSwgbGluZUF0dHJpYnV0ZXMuZ2V0KCkpKTsKIAotICAgIENGTXV0YWJsZUF0dHJpYnV0
ZWRTdHJpbmdSZWYgbXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcgPSBDRkF0dHJpYnV0ZWRTdHJpbmdD
cmVhdGVNdXRhYmxlQ29weShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAwLCBhdHRyaWJ1dGVkU3RyaW5n
KTsKLSAgICBDRlJlbGVhc2UoYXR0cmlidXRlZFN0cmluZyk7CisgICAgYXV0byBtdXRhYmxlQXR0
cmlidXRlZFN0cmluZyA9IGFkb3B0Q0YoQ0ZBdHRyaWJ1dGVkU3RyaW5nQ3JlYXRlTXV0YWJsZUNv
cHkoa0NGQWxsb2NhdG9yRGVmYXVsdCwgMCwgYXR0cmlidXRlZFN0cmluZy5nZXQoKSkpOwogCi0g
ICAgQ1RGb250UmVmIG1vbm9zcGFjZUZvbnQgPSBDVEZvbnRDcmVhdGVXaXRoTmFtZShDRlNUUigi
Q291cmllciIpLCBmb250U2l6ZSwgbnVsbHB0cik7Ci0gICAgQ0ZBdHRyaWJ1dGVkU3RyaW5nU2V0
QXR0cmlidXRlKG11dGFibGVBdHRyaWJ1dGVkU3RyaW5nLCBDRlJhbmdlTWFrZSgwLCBDRlN0cmlu
Z0dldExlbmd0aChwcmVmaXgpKSwga0NURm9udEF0dHJpYnV0ZU5hbWUsIG1vbm9zcGFjZUZvbnQp
OwotICAgIENGUmVsZWFzZShtb25vc3BhY2VGb250KTsKKyAgICBhdXRvIG1vbm9zcGFjZUZvbnQg
PSBhZG9wdENGKENURm9udENyZWF0ZVdpdGhOYW1lKENGU1RSKCJDb3VyaWVyIiksIGZvbnRTaXpl
LCBudWxscHRyKSk7CisgICAgQ0ZBdHRyaWJ1dGVkU3RyaW5nU2V0QXR0cmlidXRlKG11dGFibGVB
dHRyaWJ1dGVkU3RyaW5nLmdldCgpLCBDRlJhbmdlTWFrZSgwLCBDRlN0cmluZ0dldExlbmd0aChw
cmVmaXgpKSwga0NURm9udEF0dHJpYnV0ZU5hbWUsIG1vbm9zcGFjZUZvbnQuZ2V0KCkpOwogCi0g
ICAgQ0ZBdHRyaWJ1dGVkU3RyaW5nU2V0QXR0cmlidXRlKG11dGFibGVBdHRyaWJ1dGVkU3RyaW5n
LCBDRlJhbmdlTWFrZShDRlN0cmluZ0dldExlbmd0aChwcmVmaXgpLCBDRlN0cmluZ0dldExlbmd0
aChzdHJpbmcpIC0gQ0ZTdHJpbmdHZXRMZW5ndGgocHJlZml4KSksIGtDVEZvbnRBdHRyaWJ1dGVO
YW1lLCBmb250KTsKLSAgICBDRlJlbGVhc2Uoc3RyaW5nKTsKLSAgICBDRlJlbGVhc2UoZm9udCk7
CisgICAgQ0ZBdHRyaWJ1dGVkU3RyaW5nU2V0QXR0cmlidXRlKG11dGFibGVBdHRyaWJ1dGVkU3Ry
aW5nLmdldCgpLCBDRlJhbmdlTWFrZShDRlN0cmluZ0dldExlbmd0aChwcmVmaXgpLCBDRlN0cmlu
Z0dldExlbmd0aChzdHJpbmcuZ2V0KCkpIC0gQ0ZTdHJpbmdHZXRMZW5ndGgocHJlZml4KSksIGtD
VEZvbnRBdHRyaWJ1dGVOYW1lLCBmb250LmdldCgpKTsKIAotICAgIENUTGluZVJlZiBsaW5lID0g
Q1RMaW5lQ3JlYXRlV2l0aEF0dHJpYnV0ZWRTdHJpbmcobXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcp
OwotICAgIENGUmVsZWFzZShtdXRhYmxlQXR0cmlidXRlZFN0cmluZyk7CisgICAgYXV0byBsaW5l
ID0gYWRvcHRDRihDVExpbmVDcmVhdGVXaXRoQXR0cmlidXRlZFN0cmluZyhtdXRhYmxlQXR0cmli
dXRlZFN0cmluZy5nZXQoKSkpOwogCi0gICAgQ1RMaW5lRHJhdyhsaW5lLCBjb250ZXh0KTsKLSAg
ICBDRlJlbGVhc2UobGluZSk7CisgICAgQ1RMaW5lRHJhdyhsaW5lLmdldCgpLCBjb250ZXh0KTsK
IH0KIAogaW50IG1haW4oaW50IGFyZ2MsIGNvbnN0IGNoYXIgKiBhcmd2W10pCkBAIC0xMjIsNyAr
MTAzLDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNvbnN0IGNoYXIgKiBhcmd2W10pCiAgICAgc2l6
ZV90IHdpZHRoID0gMjUwMDsKICAgICBzaXplX3QgaGVpZ2h0ID0gMjAwMDsKICAgICBDR0NvbG9y
U3BhY2VSZWYgY29sb3JTcGFjZSA9IENHQ29sb3JTcGFjZUNyZWF0ZURldmljZVJHQigpOwotICAg
IENHQ29udGV4dFJlZiBjb250ZXh0ID0gQ0dCaXRtYXBDb250ZXh0Q3JlYXRlKG51bGxwdHIsIHdp
ZHRoLCBoZWlnaHQsIDgsIHdpZHRoICogNCwgY29sb3JTcGFjZSwga0NHSW1hZ2VBbHBoYU5vbmVT
a2lwTGFzdCk7CisgICAgYXV0byBjb250ZXh0ID0gYWRvcHRDRihDR0JpdG1hcENvbnRleHRDcmVh
dGUobnVsbHB0ciwgd2lkdGgsIGhlaWdodCwgOCwgd2lkdGggKiA0LCBjb2xvclNwYWNlLCBrQ0dJ
bWFnZUFscGhhTm9uZVNraXBMYXN0KSk7CiAgICAgQ0dDb2xvclNwYWNlUmVsZWFzZShjb2xvclNw
YWNlKTsKICAgICBUeXBlIHR5cGUgPSBUeXBlOjpUcnVlVHlwZTsKICAgICBjb25zdCBzdGQ6OnZl
Y3Rvcjx1aW50OF90PiBmb250VmVjdG9yID0gZ2VuZXJhdGVGb250KHR5cGUpOwpAQCAtMTMxLDQ5
ICsxMTIsNDAgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNvbnN0IGNoYXIgKiBhcmd2W10pCiAgICAg
ICAgIG91dHB1dEZpbGUgPDwgYjsKICAgICBvdXRwdXRGaWxlLmNsb3NlKCk7CiAgICAgCi0gICAg
Q0ZEYXRhUmVmIGZvbnREYXRhID0gQ0ZEYXRhQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGZv
bnRWZWN0b3IuZGF0YSgpLCBmb250VmVjdG9yLnNpemUoKSk7Ci0gICAgQ1RGb250RGVzY3JpcHRv
clJlZiBmb250RGVzY3JpcHRvciA9IENURm9udE1hbmFnZXJDcmVhdGVGb250RGVzY3JpcHRvckZy
b21EYXRhKGZvbnREYXRhKTsKLSAgICBDRlJlbGVhc2UoZm9udERhdGEpOworICAgIGF1dG8gZm9u
dERhdGEgPSBhZG9wdENGKENGRGF0YUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBmb250VmVj
dG9yLmRhdGEoKSwgZm9udFZlY3Rvci5zaXplKCkpKTsKKyAgICBhdXRvIGZvbnREZXNjcmlwdG9y
ID0gYWRvcHRDRihDVEZvbnRNYW5hZ2VyQ3JlYXRlRm9udERlc2NyaXB0b3JGcm9tRGF0YShmb250
RGF0YS5nZXQoKSkpOwogCiAgICAgaWYgKHR5cGUgPT0gVHlwZTo6T3BlblR5cGUpIHsKICAgICAg
ICAgQ0ZUeXBlUmVmIGZlYXR1cmVWYWx1ZXNPcGVuVHlwZVtdID0geyBDRlNUUigibGlnYSIpLCBD
RlNUUigiY2xpZyIpLCBDRlNUUigiZGxpZyIpLCBDRlNUUigiaGxpZyIpLCBDRlNUUigiY2FsdCIp
LCBDRlNUUigic3VicyIpLCBDRlNUUigic3VwcyIpLCBDRlNUUigic21jcCIpLCBDRlNUUigiYzJz
YyIpLCBDRlNUUigicGNhcCIpLCBDRlNUUigiYzJwYyIpLCBDRlNUUigidW5pYyIpLCBDRlNUUigi
dGl0bCIpLCBDRlNUUigib251bSIpLCBDRlNUUigicG51bSIpLCBDRlNUUigidG51bSIpLCBDRlNU
UigiZnJhYyIpLCBDRlNUUigiYWZyYyIpLCBDRlNUUigib3JkbiIpLCBDRlNUUigiemVybyIpLCBD
RlNUUigiaGlzdCIpLCBDRlNUUigianA3OCIpLCBDRlNUUigianA4MyIpLCBDRlNUUigianA5MCIp
LCBDRlNUUigianAwNCIpLCBDRlNUUigic21wbCIpLCBDRlNUUigidHJhZCIpLCBDRlNUUigiZndp
ZCIpLCBDRlNUUigicHdpZCIpLCBDRlNUUigicnVieSIpIH07Ci0gICAgICAgIENGQXJyYXlSZWYg
ZmVhdHVyZXMgPSBDRkFycmF5Q3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGZlYXR1cmVWYWx1
ZXNPcGVuVHlwZSwgMzAsICZrQ0ZUeXBlQXJyYXlDYWxsQmFja3MpOwotCi0gICAgICAgIGZvciAo
Q0ZJbmRleCBpID0gMDsgaSA8IENGQXJyYXlHZXRDb3VudChmZWF0dXJlcyk7ICsraSkgewotICAg
ICAgICAgICAgQ0ZTdHJpbmdSZWYgZmVhdHVyZSA9IHN0YXRpY19jYXN0PENGU3RyaW5nUmVmPihD
RkFycmF5R2V0VmFsdWVBdEluZGV4KGZlYXR1cmVzLCBpKSk7Ci0gICAgICAgICAgICBDVEZvbnRE
ZXNjcmlwdG9yUmVmIG1vZGlmaWVkRm9udERlc2NyaXB0b3IgPSBjb25zdHJ1Y3RGb250V2l0aE9w
ZW5UeXBlRmVhdHVyZShmb250RGVzY3JpcHRvciwgZmVhdHVyZSwgMSk7Ci0gICAgICAgICAgICBD
Rk11dGFibGVTdHJpbmdSZWYgcHJlZml4ID0gQ0ZTdHJpbmdDcmVhdGVNdXRhYmxlKGtDRkFsbG9j
YXRvckRlZmF1bHQsIDApOwotICAgICAgICAgICAgQ0ZTdHJpbmdBcHBlbmQocHJlZml4LCBmZWF0
dXJlKTsKLSAgICAgICAgICAgIENGU3RyaW5nQXBwZW5kKHByZWZpeCwgQ0ZTVFIoIiAgKG9uKTog
IikpOwotICAgICAgICAgICAgZHJhd1RleHQoY29udGV4dCwgbW9kaWZpZWRGb250RGVzY3JpcHRv
ciwgcHJlZml4LCBDR1BvaW50TWFrZSgyNSwgMTk1MCAtIDUwICogaSkpOwotICAgICAgICAgICAg
Q0ZSZWxlYXNlKHByZWZpeCk7Ci0gICAgICAgICAgICBDRlJlbGVhc2UobW9kaWZpZWRGb250RGVz
Y3JpcHRvcik7Ci0KLSAgICAgICAgICAgIG1vZGlmaWVkRm9udERlc2NyaXB0b3IgPSBjb25zdHJ1
Y3RGb250V2l0aE9wZW5UeXBlRmVhdHVyZShmb250RGVzY3JpcHRvciwgZmVhdHVyZSwgMCk7Ci0g
ICAgICAgICAgICBwcmVmaXggPSBDRlN0cmluZ0NyZWF0ZU11dGFibGUoa0NGQWxsb2NhdG9yRGVm
YXVsdCwgMCk7Ci0gICAgICAgICAgICBDRlN0cmluZ0FwcGVuZChwcmVmaXgsIGZlYXR1cmUpOwot
ICAgICAgICAgICAgQ0ZTdHJpbmdBcHBlbmQocHJlZml4LCBDRlNUUigiIChvZmYpOiAiKSk7Ci0g
ICAgICAgICAgICBkcmF3VGV4dChjb250ZXh0LCBtb2RpZmllZEZvbnREZXNjcmlwdG9yLCBwcmVm
aXgsIENHUG9pbnRNYWtlKDI1LCAxOTI1IC0gNTAgKiBpKSk7Ci0gICAgICAgICAgICBDRlJlbGVh
c2UocHJlZml4KTsKLSAgICAgICAgICAgIENGUmVsZWFzZShtb2RpZmllZEZvbnREZXNjcmlwdG9y
KTsKKyAgICAgICAgYXV0byBmZWF0dXJlcyA9IGFkb3B0Q0YoQ0ZBcnJheUNyZWF0ZShrQ0ZBbGxv
Y2F0b3JEZWZhdWx0LCBmZWF0dXJlVmFsdWVzT3BlblR5cGUsIDMwLCAma0NGVHlwZUFycmF5Q2Fs
bEJhY2tzKSk7CisKKyAgICAgICAgZm9yIChDRkluZGV4IGkgPSAwOyBpIDwgQ0ZBcnJheUdldENv
dW50KGZlYXR1cmVzLmdldCgpKTsgKytpKSB7CisgICAgICAgICAgICBDRlN0cmluZ1JlZiBmZWF0
dXJlID0gc3RhdGljX2Nhc3Q8Q0ZTdHJpbmdSZWY+KENGQXJyYXlHZXRWYWx1ZUF0SW5kZXgoZmVh
dHVyZXMuZ2V0KCksIGkpKTsKKyAgICAgICAgICAgIGF1dG8gbW9kaWZpZWRGb250RGVzY3JpcHRv
ciA9IGNvbnN0cnVjdEZvbnRXaXRoT3BlblR5cGVGZWF0dXJlKGZvbnREZXNjcmlwdG9yLmdldCgp
LCBmZWF0dXJlLCAxKTsKKyAgICAgICAgICAgIGF1dG8gcHJlZml4ID0gYWRvcHRDRihDRlN0cmlu
Z0NyZWF0ZU11dGFibGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgMCkpOworICAgICAgICAgICAgQ0ZT
dHJpbmdBcHBlbmQocHJlZml4LmdldCgpLCBmZWF0dXJlKTsKKyAgICAgICAgICAgIENGU3RyaW5n
QXBwZW5kKHByZWZpeC5nZXQoKSwgQ0ZTVFIoIiAgKG9uKTogIikpOworICAgICAgICAgICAgZHJh
d1RleHQoY29udGV4dC5nZXQoKSwgbW9kaWZpZWRGb250RGVzY3JpcHRvci5nZXQoKSwgcHJlZml4
LmdldCgpLCBDR1BvaW50TWFrZSgyNSwgMTk1MCAtIDUwICogaSkpOworCisgICAgICAgICAgICBt
b2RpZmllZEZvbnREZXNjcmlwdG9yID0gY29uc3RydWN0Rm9udFdpdGhPcGVuVHlwZUZlYXR1cmUo
Zm9udERlc2NyaXB0b3IuZ2V0KCksIGZlYXR1cmUsIDApOworICAgICAgICAgICAgcHJlZml4ID0g
YWRvcHRDRihDRlN0cmluZ0NyZWF0ZU11dGFibGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgMCkpOwor
ICAgICAgICAgICAgQ0ZTdHJpbmdBcHBlbmQocHJlZml4LmdldCgpLCBmZWF0dXJlKTsKKyAgICAg
ICAgICAgIENGU3RyaW5nQXBwZW5kKHByZWZpeC5nZXQoKSwgQ0ZTVFIoIiAob2ZmKTogIikpOwor
ICAgICAgICAgICAgZHJhd1RleHQoY29udGV4dC5nZXQoKSwgbW9kaWZpZWRGb250RGVzY3JpcHRv
ci5nZXQoKSwgcHJlZml4LmdldCgpLCBDR1BvaW50TWFrZSgyNSwgMTkyNSAtIDUwICogaSkpOwog
ICAgICAgICB9Ci0KLSAgICAgICAgQ0ZSZWxlYXNlKGZlYXR1cmVzKTsKICAgICB9IGVsc2Ugewog
ICAgICAgICBfX2Jsb2NrIGludCBpID0gMDsKICAgICAgICAgdm9pZCAoXmhhbmRsZXIpKHVpbnQx
Nl90IHR5cGUsIENGU3RyaW5nUmVmIHR5cGVTdHJpbmcsIHVpbnQxNl90IHNlbGVjdG9yLCBDRlN0
cmluZ1JlZiBzZWxlY3RvclN0cmluZykgPSBeKHVpbnQxNl90IHR5cGUsIENGU3RyaW5nUmVmIHR5
cGVTdHJpbmcsIHVpbnQxNl90IHNlbGVjdG9yLCBDRlN0cmluZ1JlZiBzZWxlY3RvclN0cmluZykK
ICAgICAgICAgewotICAgICAgICAgICAgQ1RGb250RGVzY3JpcHRvclJlZiBtb2RpZmllZEZvbnRE
ZXNjcmlwdG9yID0gY29uc3RydWN0Rm9udFdpdGhUcnVlVHlwZUZlYXR1cmUoZm9udERlc2NyaXB0
b3IsIHR5cGUsIHNlbGVjdG9yKTsKLSAgICAgICAgICAgIENGTXV0YWJsZVN0cmluZ1JlZiBwcmVm
aXggPSBDRlN0cmluZ0NyZWF0ZU11dGFibGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgMCk7Ci0gICAg
ICAgICAgICBDRlN0cmluZ0FwcGVuZChwcmVmaXgsIHR5cGVTdHJpbmcpOwotICAgICAgICAgICAg
Q0ZTdHJpbmdBcHBlbmQocHJlZml4LCBDRlNUUigiOiAiKSk7Ci0gICAgICAgICAgICBDRlN0cmlu
Z0FwcGVuZChwcmVmaXgsIHNlbGVjdG9yU3RyaW5nKTsKLSAgICAgICAgICAgIENGU3RyaW5nQXBw
ZW5kKHByZWZpeCwgQ0ZTVFIoIjogIikpOwotICAgICAgICAgICAgd2hpbGUgKENGU3RyaW5nR2V0
TGVuZ3RoKHByZWZpeCkgPCA2NSkKLSAgICAgICAgICAgICAgICBDRlN0cmluZ0FwcGVuZChwcmVm
aXgsIENGU1RSKCIgIikpOwotICAgICAgICAgICAgZHJhd1RleHQoY29udGV4dCwgbW9kaWZpZWRG
b250RGVzY3JpcHRvciwgcHJlZml4LCBDR1BvaW50TWFrZSgyNSwgMTk1MCAtIDQwICogaSkpOwot
ICAgICAgICAgICAgQ0ZSZWxlYXNlKHByZWZpeCk7Ci0gICAgICAgICAgICBDRlJlbGVhc2UobW9k
aWZpZWRGb250RGVzY3JpcHRvcik7CisgICAgICAgICAgICBhdXRvIG1vZGlmaWVkRm9udERlc2Ny
aXB0b3IgPSBjb25zdHJ1Y3RGb250V2l0aFRydWVUeXBlRmVhdHVyZShmb250RGVzY3JpcHRvci5n
ZXQoKSwgdHlwZSwgc2VsZWN0b3IpOworICAgICAgICAgICAgYXV0byBwcmVmaXggPSBhZG9wdENG
KENGU3RyaW5nQ3JlYXRlTXV0YWJsZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAwKSk7CisgICAgICAg
ICAgICBDRlN0cmluZ0FwcGVuZChwcmVmaXguZ2V0KCksIHR5cGVTdHJpbmcpOworICAgICAgICAg
ICAgQ0ZTdHJpbmdBcHBlbmQocHJlZml4LmdldCgpLCBDRlNUUigiOiAiKSk7CisgICAgICAgICAg
ICBDRlN0cmluZ0FwcGVuZChwcmVmaXguZ2V0KCksIHNlbGVjdG9yU3RyaW5nKTsKKyAgICAgICAg
ICAgIENGU3RyaW5nQXBwZW5kKHByZWZpeC5nZXQoKSwgQ0ZTVFIoIjogIikpOworICAgICAgICAg
ICAgd2hpbGUgKENGU3RyaW5nR2V0TGVuZ3RoKHByZWZpeC5nZXQoKSkgPCA2NSkKKyAgICAgICAg
ICAgICAgICBDRlN0cmluZ0FwcGVuZChwcmVmaXguZ2V0KCksIENGU1RSKCIgIikpOworICAgICAg
ICAgICAgZHJhd1RleHQoY29udGV4dC5nZXQoKSwgbW9kaWZpZWRGb250RGVzY3JpcHRvci5nZXQo
KSwgcHJlZml4LmdldCgpLCBDR1BvaW50TWFrZSgyNSwgMTk1MCAtIDQwICogaSkpOwogICAgICAg
ICAgICAgKytpOwogICAgICAgICB9OwogICAgICAgICBoYW5kbGVyKGtMaWdhdHVyZXNUeXBlLCBD
RlNUUigia0xpZ2F0dXJlc1R5cGUiKSwga0NvbW1vbkxpZ2F0dXJlc09uU2VsZWN0b3IsIENGU1RS
KCJrQ29tbW9uTGlnYXR1cmVzT25TZWxlY3RvciIpKTsKQEAgLTIxNCwxNSArMTg2LDEwIEBAIGlu
dCBtYWluKGludCBhcmdjLCBjb25zdCBjaGFyICogYXJndltdKQogICAgICAgICBoYW5kbGVyKGtS
dWJ5S2FuYVR5cGUsIENGU1RSKCJrUnVieUthbmFUeXBlIiksIGtSdWJ5S2FuYU9uU2VsZWN0b3Is
IENGU1RSKCJrUnVieUthbmFPblNlbGVjdG9yIikpOwogICAgIH0KIAotICAgIENGUmVsZWFzZShm
b250RGVzY3JpcHRvcik7Ci0gICAgQ0dJbWFnZVJlZiBpbWFnZSA9IENHQml0bWFwQ29udGV4dENy
ZWF0ZUltYWdlKGNvbnRleHQpOwotICAgIENHQ29udGV4dFJlbGVhc2UoY29udGV4dCk7Ci0gICAg
Q0ZVUkxSZWYgdXJsID0gQ0ZVUkxDcmVhdGVXaXRoRmlsZVN5c3RlbVBhdGgoa0NGQWxsb2NhdG9y
RGVmYXVsdCwgQ0ZTVFIoIi9Wb2x1bWVzL0RhdGEvaG9tZS9tbWF4ZmllbGQvdG1wL291dHB1dC5w
bmciKSwga0NGVVJMUE9TSVhQYXRoU3R5bGUsIEZBTFNFKTsKLSAgICBDR0ltYWdlRGVzdGluYXRp
b25SZWYgaW1hZ2VEZXN0aW5hdGlvbiA9IENHSW1hZ2VEZXN0aW5hdGlvbkNyZWF0ZVdpdGhVUkwo
dXJsLCBrVVRUeXBlUE5HLCAxLCBudWxscHRyKTsKLSAgICBDRlJlbGVhc2UodXJsKTsKLSAgICBD
R0ltYWdlRGVzdGluYXRpb25BZGRJbWFnZShpbWFnZURlc3RpbmF0aW9uLCBpbWFnZSwgbnVsbHB0
cik7Ci0gICAgQ0dJbWFnZVJlbGVhc2UoaW1hZ2UpOwotICAgIENHSW1hZ2VEZXN0aW5hdGlvbkZp
bmFsaXplKGltYWdlRGVzdGluYXRpb24pOwotICAgIENGUmVsZWFzZShpbWFnZURlc3RpbmF0aW9u
KTsKKyAgICBhdXRvIGltYWdlID0gYWRvcHRDRihDR0JpdG1hcENvbnRleHRDcmVhdGVJbWFnZShj
b250ZXh0LmdldCgpKSk7CisgICAgYXV0byB1cmwgPSBhZG9wdENGKENGVVJMQ3JlYXRlV2l0aEZp
bGVTeXN0ZW1QYXRoKGtDRkFsbG9jYXRvckRlZmF1bHQsIENGU1RSKCIvVm9sdW1lcy9EYXRhL2hv
bWUvbW1heGZpZWxkL3RtcC9vdXRwdXQucG5nIiksIGtDRlVSTFBPU0lYUGF0aFN0eWxlLCBGQUxT
RSkpOworICAgIGF1dG8gaW1hZ2VEZXN0aW5hdGlvbiA9IGFkb3B0Q0YoQ0dJbWFnZURlc3RpbmF0
aW9uQ3JlYXRlV2l0aFVSTCh1cmwuZ2V0KCksIGtVVFR5cGVQTkcsIDEsIG51bGxwdHIpKTsKKyAg
ICBDR0ltYWdlRGVzdGluYXRpb25BZGRJbWFnZShpbWFnZURlc3RpbmF0aW9uLmdldCgpLCBpbWFn
ZS5nZXQoKSwgbnVsbHB0cik7CisgICAgQ0dJbWFnZURlc3RpbmF0aW9uRmluYWxpemUoaW1hZ2VE
ZXN0aW5hdGlvbi5nZXQoKSk7CiAgICAgcmV0dXJuIDA7CiB9CmRpZmYgLS1naXQgYS9Ub29scy9J
bWFnZURpZmYvSW1hZ2VEaWZmLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29scy9JbWFn
ZURpZmYvSW1hZ2VEaWZmLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggOTg1NGYyMmRi
YWZiNWZiMjZlNTgyZDdlNTk2NDgxM2I4OWVlZTkxZC4uYzAzYWRkZmQxY2RjMTk5M2M4NmJjMTM3
MDUwMjdhZDMyNWVlNzBkMiAxMDA2NDQKLS0tIGEvVG9vbHMvSW1hZ2VEaWZmL0ltYWdlRGlmZi54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL0ltYWdlRGlmZi9JbWFnZURpZmYu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTc3LDYgKzE3Nyw3IEBACiAJCQlpc2EgPSBY
Q0J1aWxkQ29uZmlndXJhdGlvbjsKIAkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gMzFE
RjQyQzYxRUJCQkJCOTAwOTZFRDQ0IC8qIEltYWdlRGlmZi54Y2NvbmZpZyAqLzsKIAkJCWJ1aWxk
U2V0dGluZ3MgPSB7CisJCQkJQ0xBTkdfQ1hYX0xBTkdVQUdFX1NUQU5EQVJEID0gImMrKzE3IjsK
IAkJCX07CiAJCQluYW1lID0gRGVidWc7CiAJCX07CkBAIC0xODQsNiArMTg1LDcgQEAKIAkJCWlz
YSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwogCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2Ug
PSAzMURGNDJDNjFFQkJCQkI5MDA5NkVENDQgLyogSW1hZ2VEaWZmLnhjY29uZmlnICovOwogCQkJ
YnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlDTEFOR19DWFhfTEFOR1VBR0VfU1RBTkRBUkQgPSAiYysr
MTciOwogCQkJfTsKIAkJCW5hbWUgPSBSZWxlYXNlOwogCQl9OwpAQCAtMTkxLDYgKzE5Myw3IEBA
CiAJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKIAkJCWJhc2VDb25maWd1cmF0aW9uUmVm
ZXJlbmNlID0gMzFERjQyQzYxRUJCQkJCOTAwOTZFRDQ0IC8qIEltYWdlRGlmZi54Y2NvbmZpZyAq
LzsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJQ0xBTkdfQ1hYX0xBTkdVQUdFX1NUQU5EQVJE
ID0gImMrKzE3IjsKIAkJCX07CiAJCQluYW1lID0gUHJvZHVjdGlvbjsKIAkJfTsKZGlmZiAtLWdp
dCBhL1Rvb2xzL0ltYWdlRGlmZi9QbGF0Zm9ybUltYWdlLmggYi9Ub29scy9JbWFnZURpZmYvUGxh
dGZvcm1JbWFnZS5oCmluZGV4IGE2MzJmMzRlODQ1NTM4NWQ3Njk2YTEzMmQ5NzJmMTQwNjk3MzBi
M2IuLjVjMzhkMDdjNjk2M2M0ZWEwMzRiN2YyNDc1ZTJmMzNjZjE2YjgzZDkgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL0ltYWdlRGlmZi9QbGF0Zm9ybUltYWdlLmgKKysrIGIvVG9vbHMvSW1hZ2VEaWZmL1Bs
YXRmb3JtSW1hZ2UuaApAQCAtMjksNiArMjksNyBAQAogI2lmIGRlZmluZWQoVVNFX0NBSVJPKSAm
JiBVU0VfQ0FJUk8KIHR5cGVkZWYgc3RydWN0IF9jYWlyb19zdXJmYWNlIGNhaXJvX3N1cmZhY2Vf
dDsKICNlbHNlCisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogdHlwZWRlZiBzdHJ1Y3QgQ0dJ
bWFnZSAqQ0dJbWFnZVJlZjsKICNlbmRpZgogCkBAIC00Miw3ICs0Myw3IEBAIHB1YmxpYzoKICNp
ZiBkZWZpbmVkKFVTRV9DQUlSTykgJiYgVVNFX0NBSVJPCiAgICAgUGxhdGZvcm1JbWFnZShjYWly
b19zdXJmYWNlX3QqKTsKICNlbHNlCi0gICAgUGxhdGZvcm1JbWFnZShDR0ltYWdlUmVmKTsKKyAg
ICBQbGF0Zm9ybUltYWdlKFJldGFpblB0cjxDR0ltYWdlUmVmPiYmKTsKICNlbmRpZgogICAgIH5Q
bGF0Zm9ybUltYWdlKCk7CiAKQEAgLTU5LDggKzYwLDggQEAgcHJpdmF0ZToKICNpZiBkZWZpbmVk
KFVTRV9DQUlSTykgJiYgVVNFX0NBSVJPCiAgICAgY2Fpcm9fc3VyZmFjZV90KiBtX2ltYWdlOwog
I2Vsc2UKLSAgICBDR0ltYWdlUmVmIG1faW1hZ2U7Ci0gICAgbXV0YWJsZSB2b2lkKiBtX2J1ZmZl
ciB7IG51bGxwdHIgfTsKKyAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gbV9pbWFnZTsKKyAgICBt
dXRhYmxlIHN0ZDo6dW5pcXVlX3B0cjx1bnNpZ25lZCBjaGFyW10+IG1fYnVmZmVyOwogI2VuZGlm
CiB9OwogCmRpZmYgLS1naXQgYS9Ub29scy9JbWFnZURpZmYvY2cvUGxhdGZvcm1JbWFnZUNHLmNw
cCBiL1Rvb2xzL0ltYWdlRGlmZi9jZy9QbGF0Zm9ybUltYWdlQ0cuY3BwCmluZGV4IGYwM2MzNTc5
MmFkMGQzNDQxZWZlODVhZGRkYmYwN2U3Yzc2ZjUxZGMuLmI4NTUzNDc4ZmU4ZjQ2NjdhNjEwMzFm
NGFjNzNlYjVkZDg3M2FiOWUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0ltYWdlRGlmZi9jZy9QbGF0Zm9y
bUltYWdlQ0cuY3BwCisrKyBiL1Rvb2xzL0ltYWdlRGlmZi9jZy9QbGF0Zm9ybUltYWdlQ0cuY3Bw
CkBAIC03NCw1NCArNzQsNDUgQEAgbmFtZXNwYWNlIEltYWdlRGlmZiB7CiBzdGQ6OnVuaXF1ZV9w
dHI8UGxhdGZvcm1JbWFnZT4gUGxhdGZvcm1JbWFnZTo6Y3JlYXRlRnJvbVN0ZGluKHNpemVfdCBp
bWFnZVNpemUpCiB7CiAgICAgdW5zaWduZWQgY2hhciBidWZmZXJbMjA0OF07Ci0gICAgQ0ZNdXRh
YmxlRGF0YVJlZiBkYXRhID0gQ0ZEYXRhQ3JlYXRlTXV0YWJsZSgwLCBpbWFnZVNpemUpOworICAg
IGF1dG8gZGF0YSA9IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlTXV0YWJsZSgwLCBpbWFnZVNpemUpKTsK
IAogICAgIHNpemVfdCBieXRlc1JlbWFpbmluZyA9IGltYWdlU2l6ZTsKICAgICB3aGlsZSAoYnl0
ZXNSZW1haW5pbmcgPiAwKSB7CiAgICAgICAgIHNpemVfdCBieXRlc1RvUmVhZCA9IHN0ZDo6bWlu
PHNpemVfdD4oYnl0ZXNSZW1haW5pbmcsIDIwNDgpOwogICAgICAgICBzaXplX3QgYnl0ZXNSZWFk
ID0gZnJlYWQoYnVmZmVyLCAxLCBieXRlc1RvUmVhZCwgc3RkaW4pOwotICAgICAgICBDRkRhdGFB
cHBlbmRCeXRlcyhkYXRhLCBidWZmZXIsIHN0YXRpY19jYXN0PENGSW5kZXg+KGJ5dGVzUmVhZCkp
OworICAgICAgICBDRkRhdGFBcHBlbmRCeXRlcyhkYXRhLmdldCgpLCBidWZmZXIsIHN0YXRpY19j
YXN0PENGSW5kZXg+KGJ5dGVzUmVhZCkpOwogICAgICAgICBieXRlc1JlbWFpbmluZyAtPSBzdGF0
aWNfY2FzdDxpbnQ+KGJ5dGVzUmVhZCk7CiAgICAgfQotICAgIENHRGF0YVByb3ZpZGVyUmVmIGRh
dGFQcm92aWRlciA9IENHRGF0YVByb3ZpZGVyQ3JlYXRlV2l0aENGRGF0YShkYXRhKTsKLSAgICBD
RlJlbGVhc2UoZGF0YSk7Ci0gICAgQ0dJbWFnZVJlZiBpbWFnZSA9IENHSW1hZ2VDcmVhdGVXaXRo
UE5HRGF0YVByb3ZpZGVyKGRhdGFQcm92aWRlciwgMCwgZmFsc2UsIGtDR1JlbmRlcmluZ0ludGVu
dERlZmF1bHQpOwotICAgIENGUmVsZWFzZShkYXRhUHJvdmlkZXIpOwotCi0gICAgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1JbWFnZT4oaW1hZ2UpOworICAgIGF1dG8gZGF0YVByb3Zp
ZGVyID0gYWRvcHRDRihDR0RhdGFQcm92aWRlckNyZWF0ZVdpdGhDRkRhdGEoZGF0YS5nZXQoKSkp
OworICAgIGF1dG8gaW1hZ2UgPSBhZG9wdENGKENHSW1hZ2VDcmVhdGVXaXRoUE5HRGF0YVByb3Zp
ZGVyKGRhdGFQcm92aWRlci5nZXQoKSwgMCwgZmFsc2UsIGtDR1JlbmRlcmluZ0ludGVudERlZmF1
bHQpKTsKKyAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybUltYWdlPihXVEZNb3Zl
KGltYWdlKSk7CiB9CiAKIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybUltYWdlPiBQbGF0Zm9ybUlt
YWdlOjpjcmVhdGVGcm9tRGlmZkRhdGEodm9pZCogZGF0YSwgc2l6ZV90IHdpZHRoLCBzaXplX3Qg
aGVpZ2h0KQogewogICAgIHN0YXRpYyBDR0NvbG9yU3BhY2VSZWYgZGlmZkNvbG9yc3BhY2UgPSBD
R0NvbG9yU3BhY2VDcmVhdGVEZXZpY2VHcmF5KCk7Ci0gICAgQ0dEYXRhUHJvdmlkZXJSZWYgcHJv
dmlkZXIgPSBDR0RhdGFQcm92aWRlckNyZWF0ZVdpdGhEYXRhKDAsIGRhdGEsIHdpZHRoICogaGVp
Z2h0LCBbXSh2b2lkKiwgY29uc3Qgdm9pZCogZGF0YSwgc2l6ZV90KSB7CisgICAgYXV0byBwcm92
aWRlciA9IGFkb3B0Q0YoQ0dEYXRhUHJvdmlkZXJDcmVhdGVXaXRoRGF0YSgwLCBkYXRhLCB3aWR0
aCAqIGhlaWdodCwgW10odm9pZCosIGNvbnN0IHZvaWQqIGRhdGEsIHNpemVfdCkgewogICAgICAg
ICBmcmVlKGNvbnN0X2Nhc3Q8dm9pZCo+KGRhdGEpKTsKLSAgICB9KTsKLSAgICBDR0ltYWdlUmVm
IGltYWdlID0gQ0dJbWFnZUNyZWF0ZSh3aWR0aCwgaGVpZ2h0LCA4LCA4LCB3aWR0aCwgZGlmZkNv
bG9yc3BhY2UsIDAsIHByb3ZpZGVyLCAwLCBmYWxzZSwga0NHUmVuZGVyaW5nSW50ZW50RGVmYXVs
dCk7Ci0gICAgQ0ZSZWxlYXNlKHByb3ZpZGVyKTsKLQotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPFBsYXRmb3JtSW1hZ2U+KGltYWdlKTsKKyAgICB9KSk7CisgICAgYXV0byBpbWFnZSA9IGFk
b3B0Q0YoQ0dJbWFnZUNyZWF0ZSh3aWR0aCwgaGVpZ2h0LCA4LCA4LCB3aWR0aCwgZGlmZkNvbG9y
c3BhY2UsIDAsIHByb3ZpZGVyLmdldCgpLCAwLCBmYWxzZSwga0NHUmVuZGVyaW5nSW50ZW50RGVm
YXVsdCkpOworICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtSW1hZ2U+KFdURk1v
dmUoaW1hZ2UpKTsKIH0KIAotUGxhdGZvcm1JbWFnZTo6UGxhdGZvcm1JbWFnZShDR0ltYWdlUmVm
IGltYWdlKQotICAgIDogbV9pbWFnZShpbWFnZSkKK1BsYXRmb3JtSW1hZ2U6OlBsYXRmb3JtSW1h
Z2UoUmV0YWluUHRyPENHSW1hZ2VSZWY+JiYgaW1hZ2UpCisgICAgOiBtX2ltYWdlKFdURk1vdmUo
aW1hZ2UpKQogewogfQogCi1QbGF0Zm9ybUltYWdlOjp+UGxhdGZvcm1JbWFnZSgpCi17Ci0gICAg
Q0ZSZWxlYXNlKG1faW1hZ2UpOwotICAgIGZyZWUobV9idWZmZXIpOwotfQorUGxhdGZvcm1JbWFn
ZTo6flBsYXRmb3JtSW1hZ2UoKSA9IGRlZmF1bHQ7CiAKIHNpemVfdCBQbGF0Zm9ybUltYWdlOjp3
aWR0aCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIENHSW1hZ2VHZXRXaWR0aChtX2ltYWdlKTsKKyAg
ICByZXR1cm4gQ0dJbWFnZUdldFdpZHRoKG1faW1hZ2UuZ2V0KCkpOwogfQogCiBzaXplX3QgUGxh
dGZvcm1JbWFnZTo6aGVpZ2h0KCkgY29uc3QKIHsKLSAgICByZXR1cm4gQ0dJbWFnZUdldEhlaWdo
dChtX2ltYWdlKTsKKyAgICByZXR1cm4gQ0dJbWFnZUdldEhlaWdodChtX2ltYWdlLmdldCgpKTsK
IH0KIAogc2l6ZV90IFBsYXRmb3JtSW1hZ2U6OnJvd0J5dGVzKCkgY29uc3QKQEAgLTEzMSw3ICsx
MjIsNyBAQCBzaXplX3QgUGxhdGZvcm1JbWFnZTo6cm93Qnl0ZXMoKSBjb25zdAogCiBib29sIFBs
YXRmb3JtSW1hZ2U6Omhhc0FscGhhKCkgY29uc3QKIHsKLSAgICBDR0ltYWdlQWxwaGFJbmZvIGlu
Zm8gPSBDR0ltYWdlR2V0QWxwaGFJbmZvKG1faW1hZ2UpOworICAgIENHSW1hZ2VBbHBoYUluZm8g
aW5mbyA9IENHSW1hZ2VHZXRBbHBoYUluZm8obV9pbWFnZS5nZXQoKSk7CiAgICAgcmV0dXJuIChp
bmZvID49IGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkTGFzdCkgJiYgKGluZm8gPD0ga0NHSW1h
Z2VBbHBoYUZpcnN0KTsKIH0KIApAQCAtMTQxLDIzICsxMzIsMjAgQEAgdW5zaWduZWQgY2hhciog
UGxhdGZvcm1JbWFnZTo6cGl4ZWxzKCkgY29uc3QKICAgICBzaXplX3QgaGVpZ2h0ID0gdGhpcy0+
aGVpZ2h0KCk7CiAgICAgc2l6ZV90IHJvd0J5dGVzID0gd2lkdGggKiA0OwogCi0gICAgbV9idWZm
ZXIgPSBjYWxsb2MoaGVpZ2h0LCByb3dCeXRlcyk7Ci0gICAgQ0dDb250ZXh0UmVmIGNvbnRleHQg
PSBDR0JpdG1hcENvbnRleHRDcmVhdGUobV9idWZmZXIsIHdpZHRoLCBoZWlnaHQsIDgsIHJvd0J5
dGVzLCBDR0ltYWdlR2V0Q29sb3JTcGFjZShtX2ltYWdlKSwga0NHSW1hZ2VBbHBoYVByZW11bHRp
cGxpZWRGaXJzdCB8IGtDR0JpdG1hcEJ5dGVPcmRlcjMySG9zdCk7Ci0gICAgQ0dDb250ZXh0RHJh
d0ltYWdlKGNvbnRleHQsIENHUmVjdE1ha2UoMCwgMCwgd2lkdGgsIGhlaWdodCksIG1faW1hZ2Up
OwotICAgIENGUmVsZWFzZShjb250ZXh0KTsKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx1
bnNpZ25lZCBjaGFyKj4obV9idWZmZXIpOworICAgIG1fYnVmZmVyID0gc3RkOjp1bmlxdWVfcHRy
PHVuc2lnbmVkIGNoYXJbXT4ocmVpbnRlcnByZXRfY2FzdDx1bnNpZ25lZCBjaGFyKj4oY2FsbG9j
KGhlaWdodCwgcm93Qnl0ZXMpKSk7CisgICAgYXV0byBjb250ZXh0ID0gYWRvcHRDRihDR0JpdG1h
cENvbnRleHRDcmVhdGUobV9idWZmZXIuZ2V0KCksIHdpZHRoLCBoZWlnaHQsIDgsIHJvd0J5dGVz
LCBDR0ltYWdlR2V0Q29sb3JTcGFjZShtX2ltYWdlLmdldCgpKSwga0NHSW1hZ2VBbHBoYVByZW11
bHRpcGxpZWRGaXJzdCB8IGtDR0JpdG1hcEJ5dGVPcmRlcjMySG9zdCkpOworICAgIENHQ29udGV4
dERyYXdJbWFnZShjb250ZXh0LmdldCgpLCBDR1JlY3RNYWtlKDAsIDAsIHdpZHRoLCBoZWlnaHQp
LCBtX2ltYWdlLmdldCgpKTsKKyAgICByZXR1cm4gbV9idWZmZXIuZ2V0KCk7CiB9CiAKIHZvaWQg
UGxhdGZvcm1JbWFnZTo6d3JpdGVBc1BOR1RvU3Rkb3V0KCkKIHsKLSAgICBDRk11dGFibGVEYXRh
UmVmIGltYWdlRGF0YSA9IENGRGF0YUNyZWF0ZU11dGFibGUoMCwgMCk7Ci0gICAgQ0dJbWFnZURl
c3RpbmF0aW9uUmVmIGltYWdlRGVzdCA9IENHSW1hZ2VEZXN0aW5hdGlvbkNyZWF0ZVdpdGhEYXRh
KGltYWdlRGF0YSwga1VUVHlwZVBORywgMSwgMCk7Ci0gICAgQ0dJbWFnZURlc3RpbmF0aW9uQWRk
SW1hZ2UoaW1hZ2VEZXN0LCBtX2ltYWdlLCAwKTsKLSAgICBDR0ltYWdlRGVzdGluYXRpb25GaW5h
bGl6ZShpbWFnZURlc3QpOwotICAgIHByaW50ZigiQ29udGVudC1MZW5ndGg6ICUiIEZPUk1BVF9T
SVpFX1QgIlxuIiwgc3RhdGljX2Nhc3Q8c2l6ZV90PihDRkRhdGFHZXRMZW5ndGgoaW1hZ2VEYXRh
KSkpOwotICAgIGZ3cml0ZShDRkRhdGFHZXRCeXRlUHRyKGltYWdlRGF0YSksIDEsIENGRGF0YUdl
dExlbmd0aChpbWFnZURhdGEpLCBzdGRvdXQpOwotICAgIENGUmVsZWFzZShpbWFnZURhdGEpOwot
ICAgIENGUmVsZWFzZShpbWFnZURlc3QpOworICAgIGF1dG8gaW1hZ2VEYXRhID0gYWRvcHRDRihD
RkRhdGFDcmVhdGVNdXRhYmxlKDAsIDApKTsKKyAgICBhdXRvIGltYWdlRGVzdCA9IGFkb3B0Q0Yo
Q0dJbWFnZURlc3RpbmF0aW9uQ3JlYXRlV2l0aERhdGEoaW1hZ2VEYXRhLmdldCgpLCBrVVRUeXBl
UE5HLCAxLCAwKSk7CisgICAgQ0dJbWFnZURlc3RpbmF0aW9uQWRkSW1hZ2UoaW1hZ2VEZXN0Lmdl
dCgpLCBtX2ltYWdlLmdldCgpLCAwKTsKKyAgICBDR0ltYWdlRGVzdGluYXRpb25GaW5hbGl6ZShp
bWFnZURlc3QuZ2V0KCkpOworICAgIHByaW50ZigiQ29udGVudC1MZW5ndGg6ICUiIEZPUk1BVF9T
SVpFX1QgIlxuIiwgc3RhdGljX2Nhc3Q8c2l6ZV90PihDRkRhdGFHZXRMZW5ndGgoaW1hZ2VEYXRh
LmdldCgpKSkpOworICAgIGZ3cml0ZShDRkRhdGFHZXRCeXRlUHRyKGltYWdlRGF0YS5nZXQoKSks
IDEsIENGRGF0YUdldExlbmd0aChpbWFnZURhdGEuZ2V0KCkpLCBzdGRvdXQpOwogfQogCiB9IC8v
IG5hbWVzcGFjZSBJbWFnZURpZmYKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcAppbmRleCAzZGIwMjM0
OTM0MTUzOWVkNDM4NzBlNjQ1MDZkOTMzMDc1NDJjMjg5Li43NDVjNGNlODM1ZWRjYzFiMzIwZTkw
M2QzNjdmNzc2YTc1ZTQ1NzM4IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3BwCkBAIC03OTYsNyAr
Nzk2LDcgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2U6OmR1bXBET01Bc1dlYkFyY2hpdmUoV0tC
dW5kbGVGcmFtZVJlZiBmcmFtZSwgU3RyaW5nQnVpbGQKICNpZiBVU0UoQ0YpICYmICFQTEFURk9S
TShXSU5fQ0FJUk8pICYmICFVU0UoRElSRUNUMkQpCiAgICAgYXV0byB3a0RhdGEgPSBhZG9wdFdL
KFdLQnVuZGxlRnJhbWVDb3B5V2ViQXJjaGl2ZShmcmFtZSkpOwogICAgIGF1dG8gY2ZEYXRhID0g
YWRvcHRDRihDRkRhdGFDcmVhdGUoMCwgV0tEYXRhR2V0Qnl0ZXMod2tEYXRhLmdldCgpKSwgV0tE
YXRhR2V0U2l6ZSh3a0RhdGEuZ2V0KCkpKSk7Ci0gICAgYXV0byBjZlN0cmluZyA9IGFkb3B0Q0Yo
V2ViQ29yZVRlc3RTdXBwb3J0OjpjcmVhdGVYTUxTdHJpbmdGcm9tV2ViQXJjaGl2ZURhdGEoY2ZE
YXRhLmdldCgpKSk7CisgICAgYXV0byBjZlN0cmluZyA9IFdlYkNvcmVUZXN0U3VwcG9ydDo6Y3Jl
YXRlWE1MU3RyaW5nRnJvbVdlYkFyY2hpdmVEYXRhKGNmRGF0YS5nZXQoKSk7CiAgICAgc3RyaW5n
QnVpbGRlci5hcHBlbmQoY2ZTdHJpbmcuZ2V0KCkpOwogI2VuZGlmCiB9CmRpZmYgLS1naXQgYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2lvcy9BY2Nlc3NpYmlsaXR5VUlF
bGVtZW50SU9TLm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9pb3Mv
QWNjZXNzaWJpbGl0eVVJRWxlbWVudElPUy5tbQppbmRleCA0NmExNTc4MGRjNThkMzdmOWFkYWJl
NzAwOTAxZDkxMGRlOTdkMWY0Li5mMGY5YjM4N2QwNmM0MzA4YWUxMzYxZjExZGM5MDdkNDhiZGY3
MjUzIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2lv
cy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50SU9TLm1tCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvaW9zL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRJT1MubW0KQEAgLTEz
MCw3ICsxMzAsNyBAQCArIChOU1N0cmluZyAqKXN0cmluZ1dpdGhKU1N0cmluZ1JlZjooSlNTdHJp
bmdSZWYpanNTdHJpbmdSZWYKICAgICBpZiAoIWpzU3RyaW5nUmVmKQogICAgICAgICByZXR1cm4g
bmlsOwogICAgIAotICAgIHJldHVybiBDRkJyaWRnaW5nUmVsZWFzZShKU1N0cmluZ0NvcHlDRlN0
cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBqc1N0cmluZ1JlZikpOworICAgIHJldHVybiBhZG9w
dENGKEpTU3RyaW5nQ29weUNGU3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIGpzU3RyaW5nUmVm
KSkuYnJpZGdpbmdBdXRvcmVsZWFzZSgpOwogfQogCiAtIChKU1JldGFpblB0cjxKU1N0cmluZ1Jl
Zj4pY3JlYXRlSlNTdHJpbmdSZWYKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvbWFjL0FjY2Vzc2liaWxpdHlDb21tb25NYWMubW0gYi9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5Q29tbW9uTWFjLm1t
CmluZGV4IDM1NGE4ZjY1NTVjNmMwMDI2NWY1NjgxYTZiMzcxNTJhODRhNTYyYzAuLmY4ZTJkY2Uy
MjEwMjcyYWY2NmRlOGMyNzFmZjQ1ZDNiN2I1N2M2MGYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0FjY2Vzc2liaWxpdHlDb21tb25NYWMubW0K
KysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvQWNjZXNzaWJp
bGl0eUNvbW1vbk1hYy5tbQpAQCAtNDMsNyArNDMsNyBAQCArIChOU1N0cmluZyAqKXN0cmluZ1dp
dGhKU1N0cmluZ1JlZjooSlNTdHJpbmdSZWYpanNTdHJpbmdSZWYKICAgICBpZiAoIWpzU3RyaW5n
UmVmKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgcmV0dXJuIENGQnJpZGdpbmdSZWxlYXNl
KEpTU3RyaW5nQ29weUNGU3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIGpzU3RyaW5nUmVmKSk7
CisgICAgcmV0dXJuIGFkb3B0Q0YoSlNTdHJpbmdDb3B5Q0ZTdHJpbmcoa0NGQWxsb2NhdG9yRGVm
YXVsdCwganNTdHJpbmdSZWYpKS5icmlkZ2luZ0F1dG9yZWxlYXNlKCk7CiB9CiAKIC0gKEpTUmV0
YWluUHRyPEpTU3RyaW5nUmVmPiljcmVhdGVKU1N0cmluZ1JlZgpkaWZmIC0tZ2l0IGEvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9pb3MvSElERXZlbnRHZW5lcmF0b3IubW0gYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL2lvcy9ISURFdmVudEdlbmVyYXRvci5tbQppbmRleCAzMWI0NjUwZTM1NjExOWMw
MjQwMTY2NGNlMDI3Njk0OGRhMDM1ZWQ4Li5mNjgyY2EyOTg3NWIzNjZlYjE2YjVlNzlmMDZkZDBl
MGE1MWZiZDA3IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9ISURFdmVu
dEdlbmVyYXRvci5tbQorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9ISURFdmVudEdl
bmVyYXRvci5tbQpAQCAtMzE5LDcgKzMxOSw3IEBAIC0gKElPSElERXZlbnRSZWYpX2NyZWF0ZUlP
SElERXZlbnRXaXRoSW5mbzooTlNEaWN0aW9uYXJ5ICopaW5mbwogICAgICAgICBpZiAoW3RvdWNo
SW5mb1tISURFdmVudFByZXNzdXJlS2V5XSBmbG9hdFZhbHVlXSkKICAgICAgICAgICAgIGNoaWxk
RXZlbnRNYXNrIHw9IGtJT0hJRERpZ2l0aXplckV2ZW50QXR0cmlidXRlOwogCi0gICAgICAgIElP
SElERXZlbnRSZWYgc3ViRXZlbnQgPSBJT0hJREV2ZW50Q3JlYXRlRGlnaXRpemVyRmluZ2VyRXZl
bnQoa0NGQWxsb2NhdG9yRGVmYXVsdCwgbWFjaFRpbWUsCisgICAgICAgIGF1dG8gc3ViRXZlbnQg
PSBhZG9wdENGKElPSElERXZlbnRDcmVhdGVEaWdpdGl6ZXJGaW5nZXJFdmVudChrQ0ZBbGxvY2F0
b3JEZWZhdWx0LCBtYWNoVGltZSwKICAgICAgICAgICAgIFt0b3VjaEluZm9bSElERXZlbnRUb3Vj
aElES2V5XSBpbnRWYWx1ZV0sICAgICAgICAgICAgICAgLy8gaW5kZXgKICAgICAgICAgICAgIDIs
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g
aWRlbnRpZmllciAod2hpY2ggZmluZ2VyIHdlIHRoaW5rIGl0IGlzKS4gRklYTUU6IHRoaXMgc2hv
dWxkIGNvbWUgZnJvbSB0aGUgZGF0YS4KICAgICAgICAgICAgIGNoaWxkRXZlbnRNYXNrLApAQCAt
MzMwLDEzICszMzAsMTIgQEAgLSAoSU9ISURFdmVudFJlZilfY3JlYXRlSU9ISURFdmVudFdpdGhJ
bmZvOihOU0RpY3Rpb25hcnkgKilpbmZvCiAgICAgICAgICAgICBbdG91Y2hJbmZvW0hJREV2ZW50
VHdpc3RLZXldIGZsb2F0VmFsdWVdLAogICAgICAgICAgICAgdG91Y2gsICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByYW5nZQogICAgICAgICAgICAg
dG91Y2gsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
LyB0b3VjaAotICAgICAgICAgICAga0lPSElERXZlbnRPcHRpb25Ob25lKTsKKyAgICAgICAgICAg
IGtJT0hJREV2ZW50T3B0aW9uTm9uZSkpOwogCi0gICAgICAgIElPSElERXZlbnRTZXRGbG9hdFZh
bHVlKHN1YkV2ZW50LCBrSU9ISURFdmVudEZpZWxkRGlnaXRpemVyTWFqb3JSYWRpdXMsIFt0b3Vj
aEluZm9bSElERXZlbnRNYWpvclJhZGl1c0tleV0gZmxvYXRWYWx1ZV0pOwotICAgICAgICBJT0hJ
REV2ZW50U2V0RmxvYXRWYWx1ZShzdWJFdmVudCwga0lPSElERXZlbnRGaWVsZERpZ2l0aXplck1p
bm9yUmFkaXVzLCBbdG91Y2hJbmZvW0hJREV2ZW50TWlub3JSYWRpdXNLZXldIGZsb2F0VmFsdWVd
KTsKKyAgICAgICAgSU9ISURFdmVudFNldEZsb2F0VmFsdWUoc3ViRXZlbnQuZ2V0KCksIGtJT0hJ
REV2ZW50RmllbGREaWdpdGl6ZXJNYWpvclJhZGl1cywgW3RvdWNoSW5mb1tISURFdmVudE1ham9y
UmFkaXVzS2V5XSBmbG9hdFZhbHVlXSk7CisgICAgICAgIElPSElERXZlbnRTZXRGbG9hdFZhbHVl
KHN1YkV2ZW50LmdldCgpLCBrSU9ISURFdmVudEZpZWxkRGlnaXRpemVyTWlub3JSYWRpdXMsIFt0
b3VjaEluZm9bSElERXZlbnRNaW5vclJhZGl1c0tleV0gZmxvYXRWYWx1ZV0pOwogCi0gICAgICAg
IElPSElERXZlbnRBcHBlbmRFdmVudChldmVudFJlZiwgc3ViRXZlbnQsIDApOwotICAgICAgICBD
RlJlbGVhc2Uoc3ViRXZlbnQpOworICAgICAgICBJT0hJREV2ZW50QXBwZW5kRXZlbnQoZXZlbnRS
ZWYsIHN1YkV2ZW50LmdldCgpLCAwKTsKICAgICB9CiAKICAgICByZXR1cm4gZXZlbnRSZWY7CmRp
ZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9FdmVudFNlbmRlclByb3h5Lm1t
IGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvRXZlbnRTZW5kZXJQcm94eS5tbQppbmRleCBi
YWNjMTQxMTU0MzMxYjc5ZDFhM2NlZDY4MWM3Zjk0ODk4OGI5MDY2Li44ZTk5NDdiMGIzMjQwZjNm
YzA5YjNjNmFkYjY1ZThmMmUwMmNmZWQ0IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL21hYy9FdmVudFNlbmRlclByb3h5Lm1tCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
bWFjL0V2ZW50U2VuZGVyUHJveHkubW0KQEAgLTk1LDE3ICs5NSwxNiBAQCAtIChpbnN0YW5jZXR5
cGUpaW5pdFByZXNzdXJlRXZlbnRBdExvY2F0aW9uOihOU1BvaW50KWxvY2F0aW9uIGdsb2JhbExv
Y2F0aW9uOihOUwogICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICBDR0V2ZW50UmVmIGNnRXZl
bnQgPSBDR0V2ZW50Q3JlYXRlKG51bGxwdHIpOwotICAgIENHRXZlbnRTZXRUeXBlKGNnRXZlbnQs
IChDR0V2ZW50VHlwZSlrQ0dTRXZlbnRHZXN0dXJlKTsKLSAgICBDR0V2ZW50U2V0SW50ZWdlclZh
bHVlRmllbGQoY2dFdmVudCwga0NHRXZlbnRHZXN0dXJlSElEVHlwZSwgMzIpOwotICAgIENHRXZl
bnRTZXRJbnRlZ2VyVmFsdWVGaWVsZChjZ0V2ZW50LCBrQ0dFdmVudEdlc3R1cmVQaGFzZSwgZ2Vz
dHVyZVBoYXNlKTsKLSAgICBDR0V2ZW50U2V0RG91YmxlVmFsdWVGaWVsZChjZ0V2ZW50LCBrQ0dF
dmVudFN0YWdlUHJlc3N1cmUsIHByZXNzdXJlKTsKLSAgICBDR0V2ZW50U2V0RG91YmxlVmFsdWVG
aWVsZChjZ0V2ZW50LCBrQ0dFdmVudFRyYW5zaXRpb25Qcm9ncmVzcywgcHJlc3N1cmUpOwotICAg
IENHRXZlbnRTZXRJbnRlZ2VyVmFsdWVGaWVsZChjZ0V2ZW50LCBrQ0dFdmVudEdlc3R1cmVTdGFn
ZSwgc3RhZ2VUcmFuc2l0aW9uKTsKLSAgICBDR0V2ZW50U2V0SW50ZWdlclZhbHVlRmllbGQoY2dF
dmVudCwga0NHRXZlbnRHZXN0dXJlQmVoYXZpb3IsIGtDR1NHZXN0dXJlQmVoYXZpb3JEZWVwUHJl
c3MpOwotCi0gICAgc2VsZiA9IFtzdXBlciBfaW5pdFdpdGhDR0V2ZW50OmNnRXZlbnQgZXZlbnRS
ZWY6bnVsbHB0cl07Ci0gICAgQ0ZSZWxlYXNlKGNnRXZlbnQpOworICAgIGF1dG8gY2dFdmVudCA9
IGFkb3B0Q0YoQ0dFdmVudENyZWF0ZShudWxscHRyKSk7CisgICAgQ0dFdmVudFNldFR5cGUoY2dF
dmVudC5nZXQoKSwgKENHRXZlbnRUeXBlKWtDR1NFdmVudEdlc3R1cmUpOworICAgIENHRXZlbnRT
ZXRJbnRlZ2VyVmFsdWVGaWVsZChjZ0V2ZW50LmdldCgpLCBrQ0dFdmVudEdlc3R1cmVISURUeXBl
LCAzMik7CisgICAgQ0dFdmVudFNldEludGVnZXJWYWx1ZUZpZWxkKGNnRXZlbnQuZ2V0KCksIGtD
R0V2ZW50R2VzdHVyZVBoYXNlLCBnZXN0dXJlUGhhc2UpOworICAgIENHRXZlbnRTZXREb3VibGVW
YWx1ZUZpZWxkKGNnRXZlbnQuZ2V0KCksIGtDR0V2ZW50U3RhZ2VQcmVzc3VyZSwgcHJlc3N1cmUp
OworICAgIENHRXZlbnRTZXREb3VibGVWYWx1ZUZpZWxkKGNnRXZlbnQuZ2V0KCksIGtDR0V2ZW50
VHJhbnNpdGlvblByb2dyZXNzLCBwcmVzc3VyZSk7CisgICAgQ0dFdmVudFNldEludGVnZXJWYWx1
ZUZpZWxkKGNnRXZlbnQuZ2V0KCksIGtDR0V2ZW50R2VzdHVyZVN0YWdlLCBzdGFnZVRyYW5zaXRp
b24pOworICAgIENHRXZlbnRTZXRJbnRlZ2VyVmFsdWVGaWVsZChjZ0V2ZW50LmdldCgpLCBrQ0dF
dmVudEdlc3R1cmVCZWhhdmlvciwga0NHU0dlc3R1cmVCZWhhdmlvckRlZXBQcmVzcyk7CisKKyAg
ICBzZWxmID0gW3N1cGVyIF9pbml0V2l0aENHRXZlbnQ6Y2dFdmVudC5nZXQoKSBldmVudFJlZjpu
dWxscHRyXTsKIAogICAgIGlmICghc2VsZikKICAgICAgICAgcmV0dXJuIG5pbDsKZGlmZiAtLWdp
dCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL1VJU2NyaXB0Q29udHJvbGxlck1hYy5tbSBi
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL1VJU2NyaXB0Q29udHJvbGxlck1hYy5tbQppbmRl
eCA2MGJlOTU3ZTA1N2UyNGJlMGZiYWZmYWYyYzM4MjE1NzRhNzY0MTUzLi5iYWJlOTU3ZDExYjIw
NDZkNWYzNmVkNGRkYzcxYmJkN2Q2ZTYwNjFiIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL21hYy9VSVNjcmlwdENvbnRyb2xsZXJNYWMubW0KKysrIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9tYWMvVUlTY3JpcHRDb250cm9sbGVyTWFjLm1tCkBAIC01MywxNCArNTMsMTQgQEAg
UmVmPFVJU2NyaXB0Q29udHJvbGxlcj4gVUlTY3JpcHRDb250cm9sbGVyOjpjcmVhdGUoVUlTY3Jp
cHRDb250ZXh0JiBjb250ZXh0KQogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFVJU2NyaXB0Q29u
dHJvbGxlck1hYyhjb250ZXh0KSk7CiB9CiAKLXN0YXRpYyBOU1N0cmluZyAqbnNTdHJpbmcoSlNT
dHJpbmdSZWYgc3RyaW5nKQorc3RhdGljIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gY2ZTdHJpbmco
SlNTdHJpbmdSZWYgc3RyaW5nKQogewotICAgIHJldHVybiBDRkJyaWRnaW5nUmVsZWFzZShKU1N0
cmluZ0NvcHlDRlN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBzdHJpbmcpKTsKKyAgICByZXR1
cm4gYWRvcHRDRihKU1N0cmluZ0NvcHlDRlN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBzdHJp
bmcpKTsKIH0KIAogdm9pZCBVSVNjcmlwdENvbnRyb2xsZXJNYWM6OnJlcGxhY2VUZXh0QXRSYW5n
ZShKU1N0cmluZ1JlZiB0ZXh0LCBpbnQgbG9jYXRpb24sIGludCBsZW5ndGgpCiB7Ci0gICAgW3dl
YlZpZXcoKSBfaW5zZXJ0VGV4dDpuc1N0cmluZyh0ZXh0KSByZXBsYWNlbWVudFJhbmdlOk5TTWFr
ZVJhbmdlKGxvY2F0aW9uID09IC0xID8gTlNOb3RGb3VuZCA6IGxvY2F0aW9uLCBsZW5ndGgpXTsK
KyAgICBbd2ViVmlldygpIF9pbnNlcnRUZXh0OihfX2JyaWRnZSBOU1N0cmluZyAqKWNmU3RyaW5n
KHRleHQpLmdldCgpIHJlcGxhY2VtZW50UmFuZ2U6TlNNYWtlUmFuZ2UobG9jYXRpb24gPT0gLTEg
PyBOU05vdEZvdW5kIDogbG9jYXRpb24sIGxlbmd0aCldOwogfQogCiB2b2lkIFVJU2NyaXB0Q29u
dHJvbGxlck1hYzo6em9vbVRvU2NhbGUoZG91YmxlIHNjYWxlLCBKU1ZhbHVlUmVmIGNhbGxiYWNr
KQo=
</data>
<flag name="commit-queue"
          id="441335"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>422283</attachid>
            <date>2021-03-04 14:05:19 -0800</date>
            <delta_ts>2021-03-04 14:34:25 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222760-20210304140519.patch</filename>
            <type>text/plain</type>
            <size>195188</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjczOTA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
MGY4NmUyMTAwZjMxZDk3OTkxNTZhZjkxZGU2MjMzMWIyOWYwN2ViLi44NTViOGIxYjM5ODYxYjhk
NDMzZjg4ZTBmMmU3N2Y0OTcwYzdjYjdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMCBAQAorMjAyMS0wMy0wNCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIFJlZHVjZSB1c2Ugb2YgQ0ZSZXRhaW4oKSAvIENGUmVsZWFzZSgpIC8gQ0ZBdXRv
UmVsZWFzZSgpIGluIFdlYktpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjIyNzYwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgUmVkdWNlIHVzZSBvZiBDRlJldGFpbigpIC8gQ0ZSZWxlYXNlKCkgLyBDRkF1
dG9SZWxlYXNlKCkgaW4gV2ViS2l0IGJ5IHVzaW5nIFJldGFpblB0cjw+LgorCisgICAgICAgICog
QVBJL0pTQ29udGV4dC5tbToKKyAgICAgICAgKC1bSlNDb250ZXh0IG5hbWVdKToKKyAgICAgICAg
KiBBUEkvSlNWYWx1ZS5tbToKKyAgICAgICAgKHZhbHVlVG9PYmplY3RXaXRob3V0Q29weSk6Cisg
ICAgICAgICh2YWx1ZVRvU3RyaW5nKToKKyAgICAgICAgKiBpbnNwZWN0b3IvcmVtb3RlL2NvY29h
L1JlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24ubW06CisgICAgICAgIChJbnNwZWN0b3I6OlJl
bW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb246OmRlc2VyaWFsaXplTWVzc2FnZSk6CisKIDIwMjEt
MDMtMDQgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAg
ICAgICBbQ29jb2FdIFJFR1JFU1NJT04ocjI3Mjc1Mik6IGZpeCBzb21lIGludGVybmFsIGJ1aWxk
cyB0aGF0IHVzZSBXVEZTdHJpbmc6OldURlN0cmluZyhOU1N0cmluZyAqKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCBjN2M5MjQw
MGJmMTVjZTk0YjA4NzBjNzIzYWQ3Y2U3YzYyNmM4NWI4Li5mOTk0ZmVhNTg3MWU1OWI2MTg4M2Iy
Y2U2YjI0OTQ3N2ZjMWE0OWM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDIxLTAzLTA0ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgUmVkdWNlIHVzZSBvZiBDRlJl
dGFpbigpIC8gQ0ZSZWxlYXNlKCkgLyBDRkF1dG9SZWxlYXNlKCkgaW4gV2ViS2l0CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjI3NjAKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWR1Y2UgdXNlIG9mIENG
UmV0YWluKCkgLyBDRlJlbGVhc2UoKSAvIENGQXV0b1JlbGVhc2UoKSBpbiBXZWJLaXQgYnkgdXNp
bmcgUmV0YWluUHRyPD4uCisKKyAgICAgICAgKiB3dGYvY29jb2EvTlNVUkxFeHRyYXMubW06Cisg
ICAgICAgIChXVEY6OmRlY29kZVBlcmNlbnRFc2NhcGVzKToKKyAgICAgICAgKFdURjo6VVJMQnlU
cnVuY2F0aW5nT25lQ2hhcmFjdGVyQmVmb3JlQ29tcG9uZW50KToKKyAgICAgICAgKFdURjo6VVJM
V2l0aERhdGEpOgorICAgICAgICAoV1RGOjpVUkxCeVJlbW92aW5nQ29tcG9uZW50QW5kU3Vic2Vx
dWVudENoYXJhY3Rlcik6CisKIDIwMjEtMDMtMDQgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxl
LmNvbT4KIAogICAgICAgICBbbWFjT1NdW1dLMl0gQ2hhbmdpbmcgdGhlIHN5c3RlbSBsYW5ndWFn
ZSBkb2VzIG5vdCB1cGRhdGUgbmF2aWdhdG9yLmxhbmd1YWdlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDFmOTFj
ZjdlMGE2OGMwMDE1ZDE5ODlkODc5MzBiMGYyZGMyNjNiZC4uNWE0M2Q2NWNkZTkxODNiMDJjMTFl
MTQ2ZDY3YzhhNGFiMTJiYTAzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExMiBAQAorMjAyMS0w
My0wNCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFJlZHVjZSB1
c2Ugb2YgQ0ZSZXRhaW4oKSAvIENGUmVsZWFzZSgpIC8gQ0ZBdXRvUmVsZWFzZSgpIGluIFdlYktp
dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIyNzYw
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVkdWNl
IHVzZSBvZiBDRlJldGFpbigpIC8gQ0ZSZWxlYXNlKCkgLyBDRkF1dG9SZWxlYXNlKCkgaW4gV2Vi
S2l0IGJ5IHVzaW5nIFJldGFpblB0cjw+LgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9tYWMv
QVhPYmplY3RDYWNoZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkFYVGV4dE1hcmtlclJhbmdl
KToKKyAgICAgICAgKFdlYkNvcmU6OkFYVGV4dE1hcmtlclJhbmdlU3RhcnQpOgorICAgICAgICAo
V2ViQ29yZTo6QVhUZXh0TWFya2VyUmFuZ2VFbmQpOgorICAgICAgICAoV2ViQ29yZTo6dGV4dE1h
cmtlckZvclZpc2libGVQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjp0ZXh0TWFya2VyRm9y
Q2hhcmFjdGVyT2Zmc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OnN0YXJ0T3JFbmRUZXh0TWFya2Vy
Rm9yUmFuZ2UpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlP
YmplY3RXcmFwcGVyQmFzZS5tbToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdy
YXBwZXJCYXNlIHVwZGF0ZU9iamVjdEJhY2tpbmdTdG9yZV0pOgorICAgICAgICAoLVtXZWJBY2Nl
c3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UgY29udmVydFBhdGhUb1NjcmVlblNwYWNlOl0pOgor
ICAgICAgICAqIGFjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
TWFjLm1tOgorICAgICAgICAobmV4dFRleHRNYXJrZXJGb3JDaGFyYWN0ZXJPZmZzZXQpOgorICAg
ICAgICAocHJldmlvdXNUZXh0TWFya2VyRm9yQ2hhcmFjdGVyT2Zmc2V0KToKKyAgICAgICAgKC1b
V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgdGV4dE1hcmtlckZvckZpcnN0UG9zaXRpb25J
blRleHRDb250cm9sOl0pOgorICAgICAgICAoQVhBdHRyaWJ1dGVTdHJpbmdTZXRFbGVtZW50KToK
KyAgICAgICAgKiBlZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW06CisgICAgICAgIChIVE1M
Q29udmVydGVyOjpfcHJvY2Vzc1RleHQpOgorICAgICAgICAqIGxvYWRlci9jb2NvYS9EaXNrQ2Fj
aGVNb25pdG9yQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpEaXNrQ2FjaGVNb25pdG9yOjpE
aXNrQ2FjaGVNb25pdG9yKToKKyAgICAgICAgKiBwYWdlL21hYy9FdmVudEhhbmRsZXJNYWMubW06
CisgICAgICAgIChXZWJDb3JlOjpzZWxmUmV0YWluaW5nTlNTY3JvbGxWaWV3U2Nyb2xsV2hlZWwp
OgorICAgICAgICAqIHBhZ2Uvd2luL0ZyYW1lQ0dXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
aW1hZ2VGcm9tUmVjdCk6CisgICAgICAgICogcGxhdGZvcm0vY2YvTWFpblRocmVhZFNoYXJlZFRp
bWVyQ0YuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2hhcmVkVGltZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6TWFpblRocmVhZFNoYXJlZFRpbWVyOjpyZXN0YXJ0U2hhcmVkVGltZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6TWFpblRocmVhZFNoYXJlZFRpbWVyOjppbnZhbGlkYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6Ok1haW5UaHJlYWRTaGFyZWRUaW1lcjo6c2V0RmlyZUludGVydmFsKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1haW5UaHJlYWRTaGFyZWRUaW1lcjo6c3RvcCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZXJuYWxEZXZpY2VEaXNwbGF5TmFt
ZUZvclBsYXllcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL0NBQ0ZMYXll
clRyZWVIb3N0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNBQ0ZMYXllclRyZWVIb3N0Ojppbml0
aWFsaXplKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRD
Ry5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYXR0ZXJuUmVsZWFzZUNhbGxiYWNrKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZmlsbFBhdGgpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0OjpzdHJva2VQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDo6ZmlsbFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
OjpzdHJva2VSZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXR0ZXJuQ0cu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6cGF0dGVyblJlbGVhc2VDYWxsYmFjayk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6YXV0b0FjdGl2YXRlRm9udCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0ZvbnRDR1dpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZTo6Z2V0
UGxhdGZvcm1HbHlwaEFkdmFuY2VzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4v
R3JhcGhpY3NDb250ZXh0Q0dXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0OjpyZWxlYXNlV2luZG93c0NvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0OjpkcmF3Rm9jdXNSaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4v
SW1hZ2VDR1dpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Z2V0SEJJVE1B
UE9mU2l6ZSk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1VzZXJBZ2VudElPUy5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OnN0YW5kYXJkVXNlckFnZW50V2l0aEFwcGxpY2F0aW9uTmFtZSk6CisgICAg
ICAgICogcGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkLm1tOgorICAgICAgICAoU2VuZERl
bGVnYXRlTWVzc2FnZSk6CisgICAgICAgIChSdW5XZWJUaHJlYWQpOgorICAgICAgICAoV2ViVGhy
ZWFkVW5sb2NrR3VhcmRGb3JNYWlsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvUGxhdGZvcm1T
cGVlY2hTeW50aGVzaXplck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OnNwZWVjaFN5bnRoZXNp
c0dldFZvaWNlSWRlbnRpZmllcnMpOgorICAgICAgICAoV2ViQ29yZTo6c3BlZWNoU3ludGhlc2lz
R2V0RGVmYXVsdFZvaWNlSWRlbnRpZmllckZvckxvY2FsZSk6CisgICAgICAgIChXZWJDb3JlOjpQ
bGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyOjppbml0aWFsaXplVm9pY2VMaXN0KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9tYWMvUGx1Z2luQmxvY2tsaXN0Lm1tOgorICAgICAgICAoV2ViQ29yZTo6UGx1
Z2luQmxvY2tsaXN0OjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9XZWJHTEJsb2Nr
bGlzdC5tbToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMQmxvY2tsaXN0OjpjcmVhdGUpOgorICAg
ICAgICAqIHBsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvQXVkaW9TYW1wbGVCdWZmZXJDb21w
cmVzc29yLm1tOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29y
OjphdHRhY2hQcmltaW5nVHJpbXNJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nh
bXBsZUJ1ZmZlckNvbXByZXNzb3I6OnByb3ZpZGVTb3VyY2VEYXRhTnVtT3V0cHV0UGFja2V0cyk6
CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9WaWRlb1NhbXBsZUJ1ZmZl
ckNvbXByZXNzb3IubW06CisgICAgICAgIChXZWJDb3JlOjpzZXRDb21wcmVzc2lvblNlc3Npb25Q
cm9wZXJ0eSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9Gb3JtRGF0YVN0cmVhbUNG
TmV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNsb3NlQ3VycmVudFN0cmVhbSk6CisgICAgICAg
IChXZWJDb3JlOjphZHZhbmNlQ3VycmVudFN0cmVhbSk6CisgICAgICAgIChXZWJDb3JlOjpvcGVu
TmV4dFN0cmVhbSk6CisgICAgICAgIChXZWJDb3JlOjpmb3JtUmVhZCk6CisgICAgICAgIChXZWJD
b3JlOjpmb3JtQ2FuUmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpmb3JtU2NoZWR1bGUpOgorICAg
ICAgICAoV2ViQ29yZTo6Zm9ybVVuc2NoZWR1bGUpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvY2YvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ0ZOZXRXaW4uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Y3JlYXRlUHJpdmF0ZVN0b3JhZ2VTZXNzaW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2V0Q2xp
ZW50Q2VydGlmaWNhdGVJblNTTFByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3Vy
Y2VIYW5kbGU6OmNyZWF0ZUNGVVJMQ29ubmVjdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vbmV0
d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlv
blF1ZXVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0
aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6OndpbGxTZW5kUmVxdWVzdCk6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3RDRk5ldC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q6OmRvVXBkYXRlUmVzb3VyY2VSZXF1ZXN0KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS93aW4vRHJhZ0ltYWdlQ0dXaW4uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Y3JlYXRlQ2dDb250ZXh0RnJvbUJpdG1hcCk6CisgICAgICAgIChXZWJDb3JlOjpzY2FsZURy
YWdJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vd2luL1dlYkNvcmVCdW5kbGVXaW4uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlV2ViS2l0QnVuZGxlKToKKyAgICAgICAgKFdlYkNvcmU6
OndlYktpdEJ1bmRsZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tOgor
ICAgICAgICAoLVtXZWJDb3JlVGV4dEZpZWxkQ2VsbCBfYWRqdXN0ZWRDb3JlVUlEcmF3T3B0aW9u
c0ZvckRyYXdpbmdCb3JkZXJzT25seTpdKToKKyAgICAgICAgKiB0ZXN0aW5nL2NvY29hL1dlYkFy
Y2hpdmVEdW1wU3VwcG9ydC5oOgorICAgICAgICAqIHRlc3RpbmcvY29jb2EvV2ViQXJjaGl2ZUR1
bXBTdXBwb3J0Lm1tOgorICAgICAgICAoV2ViQ29yZVRlc3RTdXBwb3J0OjpjcmVhdGVYTUxTdHJp
bmdGcm9tV2ViQXJjaGl2ZURhdGEpOgorICAgICAgICAqIHRlc3RpbmcvY29jb2EvV2ViVmlld1Zp
c3VhbElkZW50aWZpY2F0aW9uT3ZlcmxheS5tbToKKyAgICAgICAgKGlkZW50aWZpY2F0aW9uRm9u
dCk6CisKIDIwMjEtMDMtMDQgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAg
ICAgICAgIEluIGNhc2Ugb2YgUE9TVCBuYXZpZ2F0aW9uIHJlZGlyZWN0ZWQgYnkgYSAzMDIsIHRo
ZSAnT3JpZ2luJyBoZWFkZXIgaXMga2VwdCBpbiB0aGUgcmVkaXJlY3RlZCByZXF1ZXN0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CmluZGV4IDA4M2M3MTI2NzEzNzhmZTI1NjEzMWI0ZmJkM2U3OGQ4MWUyYzMzMDEuLjQ4YjMxZTI4
Yzk3ZjFjNzZjNDE4ZTQ4NzQ0NGRkM2FkZGYwMzgxYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzkg
QEAKKzIwMjEtMDMtMDQgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAg
ICBSZWR1Y2UgdXNlIG9mIENGUmV0YWluKCkgLyBDRlJlbGVhc2UoKSAvIENGQXV0b1JlbGVhc2Uo
KSBpbiBXZWJLaXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIyMjc2MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFJlZHVjZSB1c2Ugb2YgQ0ZSZXRhaW4oKSAvIENGUmVsZWFzZSgpIC8gQ0ZBdXRvUmVsZWFz
ZSgpIGluIFdlYktpdCBieSB1c2luZyBSZXRhaW5QdHI8Pi4KKworICAgICAgICAqIFBsYXRmb3Jt
L21hYy9TdHJpbmdVdGlsaXRpZXMubW06CisgICAgICAgIChXZWJLaXQ6Om5zU3RyaW5nRnJvbVdl
YkNvcmVTdHJpbmcpOgorICAgICAgICAoV2ViS2l0Ojpmb3JtYXR0ZWRQaG9uZU51bWJlclN0cmlu
Zyk6CisgICAgICAgICogUGx1Z2luUHJvY2Vzcy9tYWMvUGx1Z2luUHJvY2Vzc01hYy5tbToKKyAg
ICAgICAgKFdlYktpdDo6aW5pdGlhbGl6ZUNvY29hT3ZlcnJpZGVzKToKKyAgICAgICAgKiBTaGFy
ZWQvbWFjL1Bhc3RlYm9hcmRUeXBlcy5tbToKKyAgICAgICAgKFdlYktpdDo6UGFzdGVib2FyZFR5
cGVzOjpmb3JFZGl0aW5nKToKKyAgICAgICAgKFdlYktpdDo6UGFzdGVib2FyZFR5cGVzOjpmb3JV
UkwpOgorICAgICAgICAoV2ViS2l0OjpQYXN0ZWJvYXJkVHlwZXM6OmZvckltYWdlcyk6CisgICAg
ICAgIChXZWJLaXQ6OlBhc3RlYm9hcmRUeXBlczo6Zm9ySW1hZ2VzV2l0aEFyY2hpdmUpOgorICAg
ICAgICAoV2ViS2l0OjpQYXN0ZWJvYXJkVHlwZXM6OmZvclNlbGVjdGlvbik6CisgICAgICAgICog
VUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3
SW1wbDo6YWNjZXB0c0ZpcnN0TW91c2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6
c2hvdWxkRGVsYXlXaW5kb3dPcmRlcmluZ0ZvckV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
Vmlld0ltcGw6OnZhbGlkQXR0cmlidXRlc0Zvck1hcmtlZFRleHQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJWaWV3SW1wbDo6cGVyZm9ybUtleUVxdWl2YWxlbnQpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9JbnNwZWN0b3IvaW9zL1dLSW5zcGVjdG9ySGlnaGxpZ2h0Vmlldy5tbToKKyAgICAgICAgKGxh
eWVyUGF0aFdpdGhIb2xlKToKKyAgICAgICAgKGxheWVyUGF0aCk6CisgICAgICAgICogVUlQcm9j
ZXNzL19XS1RvdWNoRXZlbnRHZW5lcmF0b3IubW06CisgICAgICAgICgtW19XS1RvdWNoRXZlbnRH
ZW5lcmF0b3IgZGVhbGxvY10pOgorICAgICAgICAoLVtfV0tUb3VjaEV2ZW50R2VuZXJhdG9yIF9z
ZW5kSElERXZlbnQ6XSk6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9mdWxsc2NyZWVuL1dLRnVs
bFNjcmVlbldpbmRvd0NvbnRyb2xsZXJJT1MubW06CisgICAgICAgICgtW1dLRnVsbFNjcmVlbldp
bmRvd0NvbnRyb2xsZXIgX0VWT3JnYW5pemF0aW9uTmFtZV0pOgorICAgICAgICAqIFdlYlByb2Nl
c3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tOgorICAgICAgICAoV2ViS2l0Ojp3ZWJQcm9jZXNz
TG9hZGVyQWNjZXNzaWJpbGl0eUJ1bmRsZVBhdGgpOgorCiAyMDIxLTAzLTA0ICBDaHJpcyBEdW1l
eiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCBidWlsZCBmaXggYWZ0
ZXIgcjI3MjYyOS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL0NoYW5nZUxvZwppbmRleCBjYWQxODlkMDFlYzI3
NDEzZjg3NTJmODA2NWM5NWEyMmQ1Y2MzNmI0Li5mN2MxNDRmMTZiMjhjZTExYWQ3YTViNmJiMzQ5
YzM2ZWJkOThiOGE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkg
QEAKKzIwMjEtMDMtMDQgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAg
ICBSZWR1Y2UgdXNlIG9mIENGUmV0YWluKCkgLyBDRlJlbGVhc2UoKSAvIENGQXV0b1JlbGVhc2Uo
KSBpbiBXZWJLaXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIyMjc2MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFJlZHVjZSB1c2Ugb2YgQ0ZSZXRhaW4oKSAvIENGUmVsZWFzZSgpIC8gQ0ZBdXRvUmVsZWFz
ZSgpIGluIFdlYktpdCBieSB1c2luZyBSZXRhaW5QdHI8Pi4KKworICAgICAgICAqIE1pc2MvV2Vi
VUlLaXRTdXBwb3J0Lm1tOgorICAgICAgICAoTG9hZFdlYkxvY2FsaXplZFN0cmluZ3MpOgorICAg
ICAgICAqIFdlYlZpZXcvV2ViUERGVmlld0lPUy5tbToKKyAgICAgICAgKC1bV2ViUERGVmlldyBm
aW5pc2hlZExvYWRpbmdXaXRoRGF0YVNvdXJjZTpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlBE
RlZpZXdQbGFjZWhvbGRlci5tbToKKyAgICAgICAgKC1bV2ViUERGVmlld1BsYWNlaG9sZGVyIGZp
bmlzaGVkTG9hZGluZ1dpdGhEYXRhU291cmNlOl0pOgorCiAyMDIxLTAyLTIyICBDaHJpcyBEdW1l
eiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgVXNlIGFkb3B0TlMoKSBhcyBzb29uIGFz
IHdlIFtbT2JqY0NsYXNzIGFsbG9jXSBpbml0XSB0byBhdm9pZCBsZWFrcwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvQ2hhbmdlTG9nCmluZGV4IDdjMTJkMTVhZmFlNThhZTA1Y2U2YjM0MDQ1OTAwYjg1OWVkMTQ2
YjMuLmFkYWE2NDM2ZjIzODNiNTQ5M2I4NGIxMTMyN2E2YTFlODljNjM1ZmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOSBAQAorMjAyMS0wMy0wNCAgQ2hyaXMgRHVt
ZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFJlZHVjZSB1c2Ugb2YgQ0ZSZXRhaW4o
KSAvIENGUmVsZWFzZSgpIC8gQ0ZBdXRvUmVsZWFzZSgpIGluIFdlYktpdAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIyNzYwCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVkdWNlIHVzZSBvZiBDRlJldGFp
bigpIC8gQ0ZSZWxlYXNlKCkgLyBDRkF1dG9SZWxlYXNlKCkgaW4gV2ViS2l0IGJ5IHVzaW5nIFJl
dGFpblB0cjw+LgorCisgICAgICAgICogTWlzYy9XZWJMb2NhbGl6YWJsZVN0cmluZ3MubW06Cisg
ICAgICAgICogTWlzYy9XZWJOU0RhdGFFeHRyYXMubW06CisgICAgICAgICgtW05TU3RyaW5nIF93
ZWJfY2FwaXRhbGl6ZVJGQzgyMkhlYWRlckZpZWxkTmFtZV0pOgorICAgICAgICAqIFBsdWdpbnMv
SG9zdGVkL05ldHNjYXBlUGx1Z2luSG9zdE1hbmFnZXIubW06CisgICAgICAgIChXZWJLaXQ6OnBy
ZWZlcnJlZEJ1bmRsZUxvY2FsaXphdGlvbk5hbWUpOgorICAgICAgICAqIFBsdWdpbnMvV2ViTmV0
c2NhcGVQbHVnaW5WaWV3Lm1tOgorICAgICAgICAoLVtXZWJOZXRzY2FwZVBsdWdpblZpZXcgc3Rh
dHVzOl0pOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlByb2dyZXNzVHJhY2tlckNsaWVu
dC5tbToKKyAgICAgICAgKFdlYlByb2dyZXNzVHJhY2tlckNsaWVudDo6cHJvZ3Jlc3NFc3RpbWF0
ZUNoYW5nZWQpOgorICAgICAgICAqIFdlYkluc3BlY3Rvci9XZWJOb2RlSGlnaGxpZ2h0Vmlldy5t
bToKKyAgICAgICAgKGxheWVyUGF0aFdpdGhIb2xlKToKKyAgICAgICAgKGxheWVyUGF0aCk6Cisg
ICAgICAgICogV2ViVmlldy9XZWJGcmFtZS5tbToKKyAgICAgICAgKGNyZWF0ZVVuaXF1ZVdlYkRh
dGFVUkwpOgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAgICAgICAgKCtbV2ViVmll
dyBfc2V0Q2FjaGVNb2RlbDpdKToKKwogMjAyMS0wMy0wNCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpA
YXBwbGUuY29tPgogCiAgICAgICAgIFttYWNPU11bV0syXSBDaGFuZ2luZyB0aGUgc3lzdGVtIGxh
bmd1YWdlIGRvZXMgbm90IHVwZGF0ZSBuYXZpZ2F0b3IubGFuZ3VhZ2UKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L0NoYW5nZUxvZwppbmRleCA1ODEzNDAyOTZkODVhZDRhODY5OTRkZDM0Y2RlNGU1NTcxY2FiYWE3
Li5jMDg4YmIyZjE1Zjk0MzE5MWYyODAxN2E5MzgxYTY0YjhjOGNjMTJmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDAgQEAKKzIwMjEtMDMtMDQgIENocmlzIER1bWV6
ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBSZWR1Y2UgdXNlIG9mIENGUmV0YWluKCkg
LyBDRlJlbGVhc2UoKSAvIENGQXV0b1JlbGVhc2UoKSBpbiBXZWJLaXQKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMjc2MAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlZHVjZSB1c2Ugb2YgQ0ZSZXRhaW4o
KSAvIENGUmVsZWFzZSgpIC8gQ0ZBdXRvUmVsZWFzZSgpIGluIFdlYktpdCBieSB1c2luZyBSZXRh
aW5QdHI8Pi4KKworICAgICAgICAqIENGRGljdGlvbmFyeVByb3BlcnR5QmFnLmNwcDoKKyAgICAg
ICAgKENvbnZlcnRWYXJpYW50VG9DRlR5cGUpOgorICAgICAgICAoQ0ZEaWN0aW9uYXJ5UHJvcGVy
dHlCYWc6OlJlYWQpOgorICAgICAgICAoQ0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWc6OldyaXRlKToK
KyAgICAgICAgKiBNYXJzaGFsbGluZ0hlbHBlcnMuY3BwOgorICAgICAgICAoTWFyc2hhbGxpbmdI
ZWxwZXJzOjpQYXRoU3RyaW5nVG9GaWxlQ0ZVUkxSZWYpOgorICAgICAgICAoTWFyc2hhbGxpbmdI
ZWxwZXJzOjpGaWxlQ0ZVUkxSZWZUb1BhdGhTdHJpbmcpOgorICAgICAgICAoTWFyc2hhbGxpbmdI
ZWxwZXJzOjpCU1RSVG9DRlVSTFJlZik6CisgICAgICAgIChNYXJzaGFsbGluZ0hlbHBlcnM6OkJT
VFJUb0NGU3RyaW5nUmVmKToKKyAgICAgICAgKE1hcnNoYWxsaW5nSGVscGVyczo6TFBDT0xFU1RS
VG9DRlN0cmluZ1JlZik6CisgICAgICAgIChNYXJzaGFsbGluZ0hlbHBlcnM6OmludFRvQ0ZOdW1i
ZXJSZWYpOgorICAgICAgICAoTWFyc2hhbGxpbmdIZWxwZXJzOjpzYWZlQXJyYXlUb1N0cmluZ0Fy
cmF5KToKKyAgICAgICAgKE1hcnNoYWxsaW5nSGVscGVyczo6c2FmZUFycmF5VG9JbnRBcnJheSk6
CisgICAgICAgIChNYXJzaGFsbGluZ0hlbHBlcnM6OnNhZmVBcnJheVRvSVVua25vd25BcnJheSk6
CisgICAgICAgICogTWFyc2hhbGxpbmdIZWxwZXJzLmg6CisgICAgICAgICogV2ViQXBwbGljYXRp
b25DYWNoZS5jcHA6CisgICAgICAgIChXZWJBcHBsaWNhdGlvbkNhY2hlOjpvcmlnaW5zV2l0aENh
Y2hlKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6
CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRGYWlsVG9TdGFydFBs
dWdpbiBjb25zdCk6CisgICAgICAgICogV2ViRG93bmxvYWRDRk5ldC5jcHA6CisgICAgICAgIChX
ZWJEb3dubG9hZDo6aW5pdFRvUmVzdW1lV2l0aEJ1bmRsZSk6CisgICAgICAgIChXZWJEb3dubG9h
ZDo6c2V0RGVzdGluYXRpb24pOgorICAgICAgICAoV2ViRG93bmxvYWQ6OndpbGxTZW5kUmVxdWVz
dCk6CisgICAgICAgICogV2ViSGlzdG9yeS5jcHA6CisgICAgICAgIChjcmVhdGVVc2VySW5mb0Zy
b21BcnJheSk6CisgICAgICAgICogV2ViTG9jYWxpemFibGVTdHJpbmdzLmNwcDoKKyAgICAgICAg
KGNyZWF0ZVdlYktpdEJ1bmRsZSk6CisKIDIwMjEtMDItMTAgIFJvYiBCdWlzICA8cmJ1aXNAaWdh
bGlhLmNvbT4KIAogICAgICAgICBVc2UgZXZlbnQgbG9vcCB0byBzZXQgdGl0bGUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0Lm1tIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU0NvbnRleHQubW0KaW5kZXggMGJhNzk5MWVmN2IyN2RhZTI1NTFkNjA0
ZWZjM2RjN2IzMzJjM2JkYS4uYmViMTQzZDBhZjU0MWI5M2U5YmQzYjU1NGY3ZDA1ZTNlNjk4YTkw
OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHQubW0KKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHQubW0KQEAgLTI2Miw3ICsyNjIs
NyBAQCAtIChOU1N0cmluZyAqKW5hbWUKICAgICBpZiAoIW5hbWUpCiAgICAgICAgIHJldHVybiBu
aWw7CiAKLSAgICByZXR1cm4gQ0ZCcmlkZ2luZ1JlbGVhc2UoSlNTdHJpbmdDb3B5Q0ZTdHJpbmco
a0NGQWxsb2NhdG9yRGVmYXVsdCwgbmFtZSkpOworICAgIHJldHVybiBhZG9wdENGKEpTU3RyaW5n
Q29weUNGU3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIG5hbWUpKS5icmlkZ2luZ0F1dG9yZWxl
YXNlKCk7CiB9CiAKIC0gKHZvaWQpc2V0TmFtZTooTlNTdHJpbmcgKiluYW1lCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmFsdWUubW0gYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL0pTVmFsdWUubW0KaW5kZXggMTg0NGIwNjEzMjU1MWNlOWJiYWNlNDI0MjQxZjE2
YjliZGRkOTRlMi4uYWMwOWY2NTQ1MDdjM2RiZDQ5NjBmZDY3MTMzMmJiM2YxMWY5MDYyNSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlLm1tCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZS5tbQpAQCAtNzczLDcgKzc3Myw3IEBAIHN0YXRp
YyBKU0NvbnRhaW5lckNvbnZlcnRvcjo6VGFzayB2YWx1ZVRvT2JqZWN0V2l0aG91dENvcHkoSlNH
bG9iYWxDb250ZXh0UmVmIGNvCiAgICAgICAgIH0gZWxzZSBpZiAoSlNWYWx1ZUlzU3RyaW5nKGNv
bnRleHQsIHZhbHVlKSkgewogICAgICAgICAgICAgLy8gV291bGQgYmUgbmljZSB0byB1bmlxdWUg
c3RyaW5ncywgdG9vLgogICAgICAgICAgICAgYXV0byBqc3N0cmluZyA9IGFkb3B0UmVmKEpTVmFs
dWVUb1N0cmluZ0NvcHkoY29udGV4dCwgdmFsdWUsIDApKTsKLSAgICAgICAgICAgIHByaW1pdGl2
ZSA9IENGQnJpZGdpbmdSZWxlYXNlKEpTU3RyaW5nQ29weUNGU3RyaW5nKGtDRkFsbG9jYXRvckRl
ZmF1bHQsIGpzc3RyaW5nLmdldCgpKSk7CisgICAgICAgICAgICBwcmltaXRpdmUgPSBhZG9wdENG
KEpTU3RyaW5nQ29weUNGU3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIGpzc3RyaW5nLmdldCgp
KSkuYnJpZGdpbmdBdXRvcmVsZWFzZSgpOwogICAgICAgICB9IGVsc2UgaWYgKEpTVmFsdWVJc051
bGwoY29udGV4dCwgdmFsdWUpKQogICAgICAgICAgICAgcHJpbWl0aXZlID0gW05TTnVsbCBudWxs
XTsKICAgICAgICAgZWxzZSB7CkBAIC04ODEsNyArODgxLDcgQEAgaWQgdmFsdWVUb1N0cmluZyhK
U0dsb2JhbENvbnRleHRSZWYgY29udGV4dCwgSlNWYWx1ZVJlZiB2YWx1ZSwgSlNWYWx1ZVJlZiog
ZXhjZXAKICAgICAgICAgcmV0dXJuIG5pbDsKICAgICB9CiAKLSAgICByZXR1cm4gQ0ZCcmlkZ2lu
Z1JlbGVhc2UoSlNTdHJpbmdDb3B5Q0ZTdHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwganNzdHJp
bmcuZ2V0KCkpKTsKKyAgICByZXR1cm4gYWRvcHRDRihKU1N0cmluZ0NvcHlDRlN0cmluZyhrQ0ZB
bGxvY2F0b3JEZWZhdWx0LCBqc3N0cmluZy5nZXQoKSkpLmJyaWRnaW5nQXV0b3JlbGVhc2UoKTsK
IH0KIAogaWQgdmFsdWVUb0RhdGUoSlNHbG9iYWxDb250ZXh0UmVmIGNvbnRleHQsIEpTVmFsdWVS
ZWYgdmFsdWUsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL2NvY29hL1JlbW90ZUluc3BlY3RvclhQQ0Nvbm5l
Y3Rpb24ubW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9jb2NvYS9S
ZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uLm1tCmluZGV4IDcyMzEwM2EwMzg3M2IzN2I5YWVi
OWM3Y2ZlNGQ0MDk2Nzg0ZjNmMzYuLjgxM2MxNjMwZTNkNmEwY2JiMTY4YjI3NmM2NTBlMDU3MTcy
M2JlNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3Rl
L2NvY29hL1JlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24ubW0KKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvY29jb2EvUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVj
dGlvbi5tbQpAQCAtMTE3LDEwICsxMTcsMTAgQEAgTlNEaWN0aW9uYXJ5ICpSZW1vdGVJbnNwZWN0
b3JYUENDb25uZWN0aW9uOjpkZXNlcmlhbGl6ZU1lc3NhZ2UoeHBjX29iamVjdF90IG9iamUKICAg
ICAgICAgcmV0dXJuIG5pbDsKICAgICB9CiAKLSAgICBhdXRvIGRpY3Rpb25hcnkgPSBfQ0ZYUEND
cmVhdGVDRk9iamVjdEZyb21YUENNZXNzYWdlKHhwY0RpY3Rpb25hcnkpOworICAgIGF1dG8gZGlj
dGlvbmFyeSA9IGFkb3B0Q0YoX0NGWFBDQ3JlYXRlQ0ZPYmplY3RGcm9tWFBDTWVzc2FnZSh4cGNE
aWN0aW9uYXJ5KSk7CiAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShkaWN0aW9uYXJ5LCAiVW5hYmxl
IHRvIGRlc2VyaWFsaXplIHhwYyBtZXNzYWdlIik7Ci0gICAgQVNTRVJUKENGR2V0VHlwZUlEKGRp
Y3Rpb25hcnkpID09IENGRGljdGlvbmFyeUdldFR5cGVJRCgpKTsKLSAgICByZXR1cm4gQ0ZCcmlk
Z2luZ1JlbGVhc2UoZGljdGlvbmFyeSk7CisgICAgQVNTRVJUKENGR2V0VHlwZUlEKGRpY3Rpb25h
cnkuZ2V0KCkpID09IENGRGljdGlvbmFyeUdldFR5cGVJRCgpKTsKKyAgICByZXR1cm4gZGljdGlv
bmFyeS5icmlkZ2luZ0F1dG9yZWxlYXNlKCk7CiB9CiAKIHZvaWQgUmVtb3RlSW5zcGVjdG9yWFBD
Q29ubmVjdGlvbjo6aGFuZGxlRXZlbnQoeHBjX29iamVjdF90IG9iamVjdCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL2NvY29hL05TVVJMRXh0cmFzLm1tIGIvU291cmNlL1dURi93dGYvY29j
b2EvTlNVUkxFeHRyYXMubW0KaW5kZXggMjA5ZWE1Yjg2NjRhMWJhMzE5MmY5ZWMyMzUzOWUzMGNl
MmM5N2E4Mi4uNzUwOGYyZjRmMmRjNDJlODJhZjgxZjYzNDgyMGM1ZGQ3NjA2NWQwZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi93dGYvY29jb2EvTlNVUkxFeHRyYXMubW0KKysrIGIvU291cmNlL1dU
Ri93dGYvY29jb2EvTlNVUkxFeHRyYXMubW0KQEAgLTkyLDEwICs5MiwxMCBAQCB2b2lkIGxvYWRJ
RE5BbGxvd2VkU2NyaXB0TGlzdCgpCiAgICAgCiBzdGF0aWMgU3RyaW5nIGRlY29kZVBlcmNlbnRF
c2NhcGVzKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogewotICAgIE5TU3RyaW5nICpzdWJzdHJpbmcg
PSBDRkJyaWRnaW5nUmVsZWFzZShDRlVSTENyZWF0ZVN0cmluZ0J5UmVwbGFjaW5nUGVyY2VudEVz
Y2FwZXMobnVsbHB0ciwgc3RyaW5nLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIENGU1RSKCIiKSkp
OworICAgIGF1dG8gc3Vic3RyaW5nID0gYWRvcHRDRihDRlVSTENyZWF0ZVN0cmluZ0J5UmVwbGFj
aW5nUGVyY2VudEVzY2FwZXMobnVsbHB0ciwgc3RyaW5nLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCks
IENGU1RSKCIiKSkpOwogICAgIGlmICghc3Vic3RyaW5nKQogICAgICAgICByZXR1cm4gc3RyaW5n
OwotICAgIHJldHVybiBzdWJzdHJpbmc7CisgICAgcmV0dXJuIHN1YnN0cmluZy5nZXQoKTsKIH0K
IAogTlNTdHJpbmcgKmRlY29kZUhvc3ROYW1lKE5TU3RyaW5nICpzdHJpbmcpCkBAIC0xMzgsMTEg
KzEzOCwxMSBAQCBOU1VSTCAqVVJMQnlUcnVuY2F0aW5nT25lQ2hhcmFjdGVyQmVmb3JlQ29tcG9u
ZW50KE5TVVJMICpVUkwsIENGVVJMQ29tcG9uZW50VHlwZQogICAgICAgICBDRlVSTEdldEJ5dGVz
KChfX2JyaWRnZSBDRlVSTFJlZilVUkwsIHVybEJ5dGVzLmRhdGEoKSwgbnVtQnl0ZXMpOwogICAg
IH0KIAotICAgIENGVVJMUmVmIHJlc3VsdCA9IENGVVJMQ3JlYXRlV2l0aEJ5dGVzKG51bGxwdHIs
IHVybEJ5dGVzLmRhdGEoKSwgZnJhZ1JnLmxvY2F0aW9uIC0gMSwga0NGU3RyaW5nRW5jb2RpbmdV
VEY4LCBudWxscHRyKTsKKyAgICBhdXRvIHJlc3VsdCA9IGFkb3B0Q0YoQ0ZVUkxDcmVhdGVXaXRo
Qnl0ZXMobnVsbHB0ciwgdXJsQnl0ZXMuZGF0YSgpLCBmcmFnUmcubG9jYXRpb24gLSAxLCBrQ0ZT
dHJpbmdFbmNvZGluZ1VURjgsIG51bGxwdHIpKTsKICAgICBpZiAoIXJlc3VsdCkKLSAgICAgICAg
cmVzdWx0ID0gQ0ZVUkxDcmVhdGVXaXRoQnl0ZXMobnVsbHB0ciwgdXJsQnl0ZXMuZGF0YSgpLCBm
cmFnUmcubG9jYXRpb24gLSAxLCBrQ0ZTdHJpbmdFbmNvZGluZ0lTT0xhdGluMSwgbnVsbHB0cik7
CisgICAgICAgIHJlc3VsdCA9IGFkb3B0Q0YoQ0ZVUkxDcmVhdGVXaXRoQnl0ZXMobnVsbHB0ciwg
dXJsQnl0ZXMuZGF0YSgpLCBmcmFnUmcubG9jYXRpb24gLSAxLCBrQ0ZTdHJpbmdFbmNvZGluZ0lT
T0xhdGluMSwgbnVsbHB0cikpOwogICAgICAgICAKLSAgICByZXR1cm4gcmVzdWx0ID8gQ0ZCcmlk
Z2luZ1JlbGVhc2UocmVzdWx0KSA6IFVSTDsKKyAgICByZXR1cm4gcmVzdWx0ID8gcmVzdWx0LmJy
aWRnaW5nQXV0b3JlbGVhc2UoKSA6IFVSTDsKIH0KIAogc3RhdGljIE5TVVJMICpVUkxCeVJlbW92
aW5nUmVzb3VyY2VTcGVjaWZpZXIoTlNVUkwgKlVSTCkKQEAgLTE1NSw3ICsxNTUsNiBAQCBOU1VS
TCAqVVJMV2l0aERhdGEoTlNEYXRhICpkYXRhLCBOU1VSTCAqYmFzZVVSTCkKICAgICBpZiAoIWRh
dGEpCiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgCi0gICAgTlNVUkwgKnJlc3VsdCA9IG5pbDsK
ICAgICBzaXplX3QgbGVuZ3RoID0gW2RhdGEgbGVuZ3RoXTsKICAgICBpZiAobGVuZ3RoID4gMCkg
ewogICAgICAgICAvLyB3b3JrIGFyb3VuZCA8cmRhcjovLzQ0NzA3NzE+OiBDRlVSTENyZWF0ZUFi
c29sdXRlVVJMV2l0aEJ5dGVzKC4uLCBUUlVFKSBkb2Vzbid0IHJlbW92ZSBub24tcGF0aCBjb21w
b25lbnRzLgpAQCAtMTcxLDEzICsxNzAsMTIgQEAgTlNVUkwgKlVSTFdpdGhEYXRhKE5TRGF0YSAq
ZGF0YSwgTlNVUkwgKmJhc2VVUkwpCiAgICAgICAgIC8vIChlLmcgY2FsbHMgdG8gTlNVUkwgLXBh
dGgpLiBIb3dldmVyLCB0aGlzIGZ1bmN0aW9uIGlzIG5vdCB0b2xlcmFudCBvZiBpbGxlZ2FsIFVU
Ri04IHNlcXVlbmNlcywgd2hpY2gKICAgICAgICAgLy8gY291bGQgZWl0aGVyIGJlIGEgbWFsZm9y
bWVkIHN0cmluZyBvciBieXRlcyBpbiBhIGRpZmZlcmVudCBlbmNvZGluZywgbGlrZSBzaGlmdC1q
aXMsIHNvIHdlIGZhbGwgYmFjawogICAgICAgICAvLyBvbnRvIHVzaW5nIElTTyBMYXRpbiAxIGlu
IHRob3NlIGNhc2VzLgotICAgICAgICByZXN1bHQgPSBDRkJyaWRnaW5nUmVsZWFzZShDRlVSTENy
ZWF0ZUFic29sdXRlVVJMV2l0aEJ5dGVzKG51bGxwdHIsIGJ5dGVzLCBsZW5ndGgsIGtDRlN0cmlu
Z0VuY29kaW5nVVRGOCwgKF9fYnJpZGdlIENGVVJMUmVmKWJhc2VVUkwsIFlFUykpOworICAgICAg
ICBhdXRvIHJlc3VsdCA9IGFkb3B0Q0YoQ0ZVUkxDcmVhdGVBYnNvbHV0ZVVSTFdpdGhCeXRlcyhu
dWxscHRyLCBieXRlcywgbGVuZ3RoLCBrQ0ZTdHJpbmdFbmNvZGluZ1VURjgsIChfX2JyaWRnZSBD
RlVSTFJlZiliYXNlVVJMLCBZRVMpKTsKICAgICAgICAgaWYgKCFyZXN1bHQpCi0gICAgICAgICAg
ICByZXN1bHQgPSBDRkJyaWRnaW5nUmVsZWFzZShDRlVSTENyZWF0ZUFic29sdXRlVVJMV2l0aEJ5
dGVzKG51bGxwdHIsIGJ5dGVzLCBsZW5ndGgsIGtDRlN0cmluZ0VuY29kaW5nSVNPTGF0aW4xLCAo
X19icmlkZ2UgQ0ZVUkxSZWYpYmFzZVVSTCwgWUVTKSk7Ci0gICAgfSBlbHNlCi0gICAgICAgIHJl
c3VsdCA9IFtOU1VSTCBVUkxXaXRoU3RyaW5nOkAiIl07Ci0KLSAgICByZXR1cm4gcmVzdWx0Owor
ICAgICAgICAgICAgcmVzdWx0ID0gYWRvcHRDRihDRlVSTENyZWF0ZUFic29sdXRlVVJMV2l0aEJ5
dGVzKG51bGxwdHIsIGJ5dGVzLCBsZW5ndGgsIGtDRlN0cmluZ0VuY29kaW5nSVNPTGF0aW4xLCAo
X19icmlkZ2UgQ0ZVUkxSZWYpYmFzZVVSTCwgWUVTKSk7CisgICAgICAgIHJldHVybiByZXN1bHQu
YnJpZGdpbmdBdXRvcmVsZWFzZSgpOworICAgIH0KKyAgICByZXR1cm4gW05TVVJMIFVSTFdpdGhT
dHJpbmc6QCIiXTsKIH0KIHN0YXRpYyBOU0RhdGEgKmRhdGFXaXRoVXNlclR5cGVkU3RyaW5nKE5T
U3RyaW5nICpzdHJpbmcpCiB7CkBAIC0zMzYsMTEgKzMzNCwxMSBAQCBzdGF0aWMgTlNVUkwgKlVS
TEJ5UmVtb3ZpbmdDb21wb25lbnRBbmRTdWJzZXF1ZW50Q2hhcmFjdGVyKE5TVVJMICpVUkwsIENG
VVJMQ29tcAogICAgICAgICAKICAgICBtZW1tb3ZlKHVybEJ5dGVzICsgcmFuZ2UubG9jYXRpb24s
IHVybEJ5dGVzICsgcmFuZ2UubG9jYXRpb24gKyByYW5nZS5sZW5ndGgsIG51bUJ5dGVzIC0gcmFu
Z2UubG9jYXRpb24gKyByYW5nZS5sZW5ndGgpOwogICAgIAotICAgIENGVVJMUmVmIHJlc3VsdCA9
IENGVVJMQ3JlYXRlV2l0aEJ5dGVzKG51bGxwdHIsIHVybEJ5dGVzLCBudW1CeXRlcyAtIHJhbmdl
Lmxlbmd0aCwga0NGU3RyaW5nRW5jb2RpbmdVVEY4LCBudWxscHRyKTsKKyAgICBhdXRvIHJlc3Vs
dCA9IGFkb3B0Q0YoQ0ZVUkxDcmVhdGVXaXRoQnl0ZXMobnVsbHB0ciwgdXJsQnl0ZXMsIG51bUJ5
dGVzIC0gcmFuZ2UubGVuZ3RoLCBrQ0ZTdHJpbmdFbmNvZGluZ1VURjgsIG51bGxwdHIpKTsKICAg
ICBpZiAoIXJlc3VsdCkKLSAgICAgICAgcmVzdWx0ID0gQ0ZVUkxDcmVhdGVXaXRoQnl0ZXMobnVs
bHB0ciwgdXJsQnl0ZXMsIG51bUJ5dGVzIC0gcmFuZ2UubGVuZ3RoLCBrQ0ZTdHJpbmdFbmNvZGlu
Z0lTT0xhdGluMSwgbnVsbHB0cik7CisgICAgICAgIHJlc3VsdCA9IGFkb3B0Q0YoQ0ZVUkxDcmVh
dGVXaXRoQnl0ZXMobnVsbHB0ciwgdXJsQnl0ZXMsIG51bUJ5dGVzIC0gcmFuZ2UubGVuZ3RoLCBr
Q0ZTdHJpbmdFbmNvZGluZ0lTT0xhdGluMSwgbnVsbHB0cikpOwogICAgICAgICAgICAgICAgIAot
ICAgIHJldHVybiByZXN1bHQgPyBDRkJyaWRnaW5nUmVsZWFzZShyZXN1bHQpIDogVVJMOworICAg
IHJldHVybiByZXN1bHQgPyByZXN1bHQuYnJpZGdpbmdBdXRvcmVsZWFzZSgpIDogVVJMOwogfQog
CiBOU1VSTCAqVVJMQnlSZW1vdmluZ1VzZXJJbmZvKE5TVVJMICpVUkwpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9BWE9iamVjdENhY2hlTWFjLm1tIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvQVhPYmplY3RDYWNoZU1hYy5tbQppbmRleCBi
N2NmZjc0ZTc2MmEyOGUwNDU1NzQ2NDE2MTJkZTg0YjU2OTQxZjI1Li42OWNlZTI4NWU2NjNmYTU2
OGViZmM3Y2E3ZjVmOWVjZDNmNTJmY2VkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L21hYy9BWE9iamVjdENhY2hlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvbWFjL0FYT2JqZWN0Q2FjaGVNYWMubW0KQEAgLTYwMyw3ICs2MDMsNyBAQCBz
dGF0aWMgQVhUZXh0TWFya2VyUmFuZ2VSZWYgQVhUZXh0TWFya2VyUmFuZ2UoQVhUZXh0TWFya2Vy
UmVmIHN0YXJ0TWFya2VyLCBBWFRleAogICAgIEFTU0VSVChlbmRNYXJrZXIpOwogICAgIEFTU0VS
VChDRkdldFR5cGVJRCgoX19icmlkZ2UgQ0ZUeXBlUmVmKXN0YXJ0TWFya2VyKSA9PSBBWFRleHRN
YXJrZXJHZXRUeXBlSUQoKSk7CiAgICAgQVNTRVJUKENGR2V0VHlwZUlEKChfX2JyaWRnZSBDRlR5
cGVSZWYpZW5kTWFya2VyKSA9PSBBWFRleHRNYXJrZXJHZXRUeXBlSUQoKSk7Ci0gICAgcmV0dXJu
IChBWFRleHRNYXJrZXJSYW5nZVJlZilDRkJyaWRnaW5nUmVsZWFzZShBWFRleHRNYXJrZXJSYW5n
ZUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBzdGFydE1hcmtlciwgZW5kTWFya2VyKSk7Cisg
ICAgcmV0dXJuIChBWFRleHRNYXJrZXJSYW5nZVJlZilhZG9wdENGKEFYVGV4dE1hcmtlclJhbmdl
Q3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIHN0YXJ0TWFya2VyLCBlbmRNYXJrZXIpKS5icmlk
Z2luZ0F1dG9yZWxlYXNlKCk7CiB9CiAKIHN0YXRpYyBBWFRleHRNYXJrZXJSYW5nZVJlZiB0ZXh0
TWFya2VyUmFuZ2VGcm9tTWFya2VycyhBWFRleHRNYXJrZXJSZWYgdGV4dE1hcmtlcjEsIEFYVGV4
dE1hcmtlclJlZiB0ZXh0TWFya2VyMikKQEAgLTYxOCwxNCArNjE4LDE0IEBAIHN0YXRpYyBBWFRl
eHRNYXJrZXJSZWYgQVhUZXh0TWFya2VyUmFuZ2VTdGFydChBWFRleHRNYXJrZXJSYW5nZVJlZiB0
ZXh0TWFya2VyUmFuCiB7CiAgICAgQVNTRVJUKHRleHRNYXJrZXJSYW5nZSk7CiAgICAgQVNTRVJU
KENGR2V0VHlwZUlEKChfX2JyaWRnZSBDRlR5cGVSZWYpdGV4dE1hcmtlclJhbmdlKSA9PSBBWFRl
eHRNYXJrZXJSYW5nZUdldFR5cGVJRCgpKTsKLSAgICByZXR1cm4gKEFYVGV4dE1hcmtlclJlZilD
RkJyaWRnaW5nUmVsZWFzZShBWFRleHRNYXJrZXJSYW5nZUNvcHlTdGFydE1hcmtlcih0ZXh0TWFy
a2VyUmFuZ2UpKTsKKyAgICByZXR1cm4gKEFYVGV4dE1hcmtlclJlZilhZG9wdENGKEFYVGV4dE1h
cmtlclJhbmdlQ29weVN0YXJ0TWFya2VyKHRleHRNYXJrZXJSYW5nZSkpLmJyaWRnaW5nQXV0b3Jl
bGVhc2UoKTsKIH0KIAogc3RhdGljIEFYVGV4dE1hcmtlclJlZiBBWFRleHRNYXJrZXJSYW5nZUVu
ZChBWFRleHRNYXJrZXJSYW5nZVJlZiB0ZXh0TWFya2VyUmFuZ2UpCiB7CiAgICAgQVNTRVJUKHRl
eHRNYXJrZXJSYW5nZSk7CiAgICAgQVNTRVJUKENGR2V0VHlwZUlEKChfX2JyaWRnZSBDRlR5cGVS
ZWYpdGV4dE1hcmtlclJhbmdlKSA9PSBBWFRleHRNYXJrZXJSYW5nZUdldFR5cGVJRCgpKTsKLSAg
ICByZXR1cm4gKEFYVGV4dE1hcmtlclJlZilDRkJyaWRnaW5nUmVsZWFzZShBWFRleHRNYXJrZXJS
YW5nZUNvcHlFbmRNYXJrZXIodGV4dE1hcmtlclJhbmdlKSk7CisgICAgcmV0dXJuIChBWFRleHRN
YXJrZXJSZWYpYWRvcHRDRihBWFRleHRNYXJrZXJSYW5nZUNvcHlFbmRNYXJrZXIodGV4dE1hcmtl
clJhbmdlKSkuYnJpZGdpbmdBdXRvcmVsZWFzZSgpOwogfQogCiBzdGF0aWMgVGV4dE1hcmtlckRh
dGEgZ2V0Qnl0ZXNGcm9tQVhUZXh0TWFya2VyKEFYVGV4dE1hcmtlclJlZiB0ZXh0TWFya2VyKQpA
QCAtNjcxLDcgKzY3MSw3IEBAIEFYVGV4dE1hcmtlclJlZiB0ZXh0TWFya2VyRm9yVmlzaWJsZVBv
c2l0aW9uKEFYT2JqZWN0Q2FjaGUqIGNhY2hlLCBjb25zdCBWaXNpYmxlCiAgICAgaWYgKCF0ZXh0
TWFya2VyRGF0YSkKICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAgIHJldHVybiAoQVhUZXh0TWFy
a2VyUmVmKUNGQnJpZGdpbmdSZWxlYXNlKEFYVGV4dE1hcmtlckNyZWF0ZShrQ0ZBbGxvY2F0b3JE
ZWZhdWx0LCAoY29uc3QgVUludDgqKSZ0ZXh0TWFya2VyRGF0YS52YWx1ZSgpLCBzaXplb2YodGV4
dE1hcmtlckRhdGEudmFsdWUoKSkpKTsKKyAgICByZXR1cm4gKEFYVGV4dE1hcmtlclJlZilhZG9w
dENGKEFYVGV4dE1hcmtlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAoY29uc3QgVUludDgq
KSZ0ZXh0TWFya2VyRGF0YS52YWx1ZSgpLCBzaXplb2YodGV4dE1hcmtlckRhdGEudmFsdWUoKSkp
KS5icmlkZ2luZ0F1dG9yZWxlYXNlKCk7CiB9CiAKIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9z
aXRpb25Gb3JUZXh0TWFya2VyKEFYT2JqZWN0Q2FjaGUqIGNhY2hlLCBBWFRleHRNYXJrZXJSZWYg
dGV4dE1hcmtlcikKQEAgLTcyMSw3ICs3MjEsNyBAQCBBWFRleHRNYXJrZXJSZWYgdGV4dE1hcmtl
ckZvckNoYXJhY3Rlck9mZnNldChBWE9iamVjdENhY2hlKiBjYWNoZSwgY29uc3QgQ2hhcmFjdAog
ICAgIGlmICghdGV4dE1hcmtlckRhdGEuYXhJRCB8fCB0ZXh0TWFya2VyRGF0YS5pZ25vcmVkKQog
ICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgcmV0dXJuIChBWFRleHRNYXJrZXJSZWYpQ0ZCcmlk
Z2luZ1JlbGVhc2UoQVhUZXh0TWFya2VyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIChjb25z
dCBVSW50OCopJnRleHRNYXJrZXJEYXRhLCBzaXplb2YodGV4dE1hcmtlckRhdGEpKSk7CisgICAg
cmV0dXJuIChBWFRleHRNYXJrZXJSZWYpYWRvcHRDRihBWFRleHRNYXJrZXJDcmVhdGUoa0NGQWxs
b2NhdG9yRGVmYXVsdCwgKGNvbnN0IFVJbnQ4KikmdGV4dE1hcmtlckRhdGEsIHNpemVvZih0ZXh0
TWFya2VyRGF0YSkpKS5icmlkZ2luZ0F1dG9yZWxlYXNlKCk7CiB9CiAKIENoYXJhY3Rlck9mZnNl
dCBjaGFyYWN0ZXJPZmZzZXRGb3JUZXh0TWFya2VyKEFYT2JqZWN0Q2FjaGUqIGNhY2hlLCBBWFRl
eHRNYXJrZXJSZWYgdGV4dE1hcmtlcikKQEAgLTc0Nyw3ICs3NDcsNyBAQCBBWFRleHRNYXJrZXJS
ZWYgc3RhcnRPckVuZFRleHRNYXJrZXJGb3JSYW5nZShBWE9iamVjdENhY2hlKiBjYWNoZSwgY29u
c3QgT3B0aW9uYQogICAgIGlmICghdGV4dE1hcmtlckRhdGEuYXhJRCkKICAgICAgICAgcmV0dXJu
IG5pbDsKIAotICAgIHJldHVybiAoQVhUZXh0TWFya2VyUmVmKUNGQnJpZGdpbmdSZWxlYXNlKEFY
VGV4dE1hcmtlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAoY29uc3QgVUludDgqKSZ0ZXh0
TWFya2VyRGF0YSwgc2l6ZW9mKHRleHRNYXJrZXJEYXRhKSkpOworICAgIHJldHVybiAoQVhUZXh0
TWFya2VyUmVmKWFkb3B0Q0YoQVhUZXh0TWFya2VyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQs
IChjb25zdCBVSW50OCopJnRleHRNYXJrZXJEYXRhLCBzaXplb2YodGV4dE1hcmtlckRhdGEpKSku
YnJpZGdpbmdBdXRvcmVsZWFzZSgpOwogfQogCiBBWFRleHRNYXJrZXJSYW5nZVJlZiB0ZXh0TWFy
a2VyUmFuZ2VGcm9tUmFuZ2UoQVhPYmplY3RDYWNoZSogY2FjaGUsIGNvbnN0IE9wdGlvbmFsPFNp
bXBsZVJhbmdlPiYgcmFuZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2Uu
bW0KaW5kZXggOTMwNzY4N2I3ZjgwN2RiNWFiYTQ2Nzc1MDg2YzRhNWNjOGRlNzBjMS4uMGZjODI4
ODQ2ZGIzMWZhOGIwNTY1YjFjYjdmZmMwOTgwNmY0MDg0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNl
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxp
dHlPYmplY3RXcmFwcGVyQmFzZS5tbQpAQCAtMzI0LDggKzMyNCw3IEBAIC0gKFdlYkNvcmU6OkFY
Q29yZU9iamVjdCopdXBkYXRlT2JqZWN0QmFja2luZ1N0b3JlCiB7CiAgICAgLy8gQ2FsbGluZyB1
cGRhdGVCYWNraW5nU3RvcmUoKSBjYW4gaW52YWxpZGF0ZSB0aGlzIGVsZW1lbnQgc28gc2VsZiBt
dXN0IGJlIHJldGFpbmVkLgogICAgIC8vIElmIGl0IGRvZXMgYmVjb21lIGludmFsaWRhdGVkLCBz
ZWxmLmF4QmFja2luZ09iamVjdCB3aWxsIGJlIG5pbC4KLSAgICBDRlJldGFpbigoX19icmlkZ2Ug
Q0ZUeXBlUmVmKXNlbGYpOwotICAgIENGQXV0b3JlbGVhc2UoKF9fYnJpZGdlIENGVHlwZVJlZilz
ZWxmKTsKKyAgICByZXRhaW5QdHIoc2VsZikuYXV0b3JlbGVhc2UoKTsKIAogICAgIGF1dG8qIGJh
Y2tpbmdPYmplY3QgPSBzZWxmLmF4QmFja2luZ09iamVjdDsKICAgICBpZiAoIWJhY2tpbmdPYmpl
Y3QpCkBAIC00MzMsMTEgKzQzMiwxMCBAQCBzdGF0aWMgdm9pZCBjb252ZXJ0UGF0aFRvU2NyZWVu
U3BhY2VGdW5jdGlvbihQYXRoQ29udmVyc2lvbkluZm8mIGNvbnZlcnNpb24sIGNvbgogCiAtIChD
R1BhdGhSZWYpY29udmVydFBhdGhUb1NjcmVlblNwYWNlOihjb25zdCBQYXRoJilwYXRoCiB7Ci0g
ICAgUGF0aENvbnZlcnNpb25JbmZvIGNvbnZlcnNpb24gPSB7IHNlbGYsIENHUGF0aENyZWF0ZU11
dGFibGUoKSB9OworICAgIFBhdGhDb252ZXJzaW9uSW5mbyBjb252ZXJzaW9uID0geyBzZWxmLCBh
ZG9wdENGKENHUGF0aENyZWF0ZU11dGFibGUoKSkuYXV0b3JlbGVhc2UoKSB9OwogICAgIHBhdGgu
YXBwbHkoWyZjb252ZXJzaW9uXShjb25zdCBQYXRoRWxlbWVudCYgcGF0aEVsZW1lbnQpIHsKICAg
ICAgICAgY29udmVydFBhdGhUb1NjcmVlblNwYWNlRnVuY3Rpb24oY29udmVyc2lvbiwgcGF0aEVs
ZW1lbnQpOwogICAgIH0pOwotICAgIENGQXV0b3JlbGVhc2UoY29udmVyc2lvbi5wYXRoKTsKICAg
ICByZXR1cm4gY29udmVyc2lvbi5wYXRoOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbSBi
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RX
cmFwcGVyTWFjLm1tCmluZGV4IDgzZWYyNGMxNThhZTcwYzM2MjRmOTM1M2M3NjlmZGUwY2MyNzU2
NmUuLjJiMDA1Y2U2NzU5MDk0Njc0MGNjYmVjMzYwOTMwMmVkZDhjZjlmOGYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RX
cmFwcGVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCkBAIC03NDIsNyArNzQyLDcgQEAgc3RhdGlj
IGlkIG5leHRUZXh0TWFya2VyRm9yQ2hhcmFjdGVyT2Zmc2V0KEFYT2JqZWN0Q2FjaGUqIGNhY2hl
LCBDaGFyYWN0ZXJPZmZzZXQKICAgICBjYWNoZS0+dGV4dE1hcmtlckRhdGFGb3JOZXh0Q2hhcmFj
dGVyT2Zmc2V0KHRleHRNYXJrZXJEYXRhLCBjaGFyYWN0ZXJPZmZzZXQpOwogICAgIGlmICghdGV4
dE1hcmtlckRhdGEuYXhJRCkKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICByZXR1cm4gQ0ZCcmlk
Z2luZ1JlbGVhc2UoQVhUZXh0TWFya2VyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIChjb25z
dCBVSW50OCopJnRleHRNYXJrZXJEYXRhLCBzaXplb2YodGV4dE1hcmtlckRhdGEpKSk7CisgICAg
cmV0dXJuIGFkb3B0Q0YoQVhUZXh0TWFya2VyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIChj
b25zdCBVSW50OCopJnRleHRNYXJrZXJEYXRhLCBzaXplb2YodGV4dE1hcmtlckRhdGEpKSkuYnJp
ZGdpbmdBdXRvcmVsZWFzZSgpOwogfQogCiBzdGF0aWMgaWQgcHJldmlvdXNUZXh0TWFya2VyRm9y
Q2hhcmFjdGVyT2Zmc2V0KEFYT2JqZWN0Q2FjaGUqIGNhY2hlLCBDaGFyYWN0ZXJPZmZzZXQmIGNo
YXJhY3Rlck9mZnNldCkKQEAgLTc1NCw3ICs3NTQsNyBAQCBzdGF0aWMgaWQgcHJldmlvdXNUZXh0
TWFya2VyRm9yQ2hhcmFjdGVyT2Zmc2V0KEFYT2JqZWN0Q2FjaGUqIGNhY2hlLCBDaGFyYWN0ZXJP
ZgogICAgIGNhY2hlLT50ZXh0TWFya2VyRGF0YUZvclByZXZpb3VzQ2hhcmFjdGVyT2Zmc2V0KHRl
eHRNYXJrZXJEYXRhLCBjaGFyYWN0ZXJPZmZzZXQpOwogICAgIGlmICghdGV4dE1hcmtlckRhdGEu
YXhJRCkKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICByZXR1cm4gQ0ZCcmlkZ2luZ1JlbGVhc2Uo
QVhUZXh0TWFya2VyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIChjb25zdCBVSW50OCopJnRl
eHRNYXJrZXJEYXRhLCBzaXplb2YodGV4dE1hcmtlckRhdGEpKSk7CisgICAgcmV0dXJuIGFkb3B0
Q0YoQVhUZXh0TWFya2VyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIChjb25zdCBVSW50OCop
JnRleHRNYXJrZXJEYXRhLCBzaXplb2YodGV4dE1hcmtlckRhdGEpKSkuYnJpZGdpbmdBdXRvcmVs
ZWFzZSgpOwogfQogCiAtIChpZCluZXh0VGV4dE1hcmtlckZvckNoYXJhY3Rlck9mZnNldDooQ2hh
cmFjdGVyT2Zmc2V0JiljaGFyYWN0ZXJPZmZzZXQKQEAgLTc5Miw3ICs3OTIsNyBAQCAtIChpZCl0
ZXh0TWFya2VyRm9yRmlyc3RQb3NpdGlvbkluVGV4dENvbnRyb2w6KEhUTUxUZXh0Rm9ybUNvbnRy
b2xFbGVtZW50ICYpdGV4dAogICAgIGlmICghdGV4dE1hcmtlckRhdGEpCiAgICAgICAgIHJldHVy
biBuaWw7CiAKLSAgICByZXR1cm4gQ0ZCcmlkZ2luZ1JlbGVhc2UoQVhUZXh0TWFya2VyQ3JlYXRl
KGtDRkFsbG9jYXRvckRlZmF1bHQsIChjb25zdCBVSW50OCopJnRleHRNYXJrZXJEYXRhLnZhbHVl
KCksIHNpemVvZih0ZXh0TWFya2VyRGF0YS52YWx1ZSgpKSkpOworICAgIHJldHVybiBhZG9wdENG
KEFYVGV4dE1hcmtlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAoY29uc3QgVUludDgqKSZ0
ZXh0TWFya2VyRGF0YS52YWx1ZSgpLCBzaXplb2YodGV4dE1hcmtlckRhdGEudmFsdWUoKSkpKS5i
cmlkZ2luZ0F1dG9yZWxlYXNlKCk7CiB9CiAKIC8vIFdoZW4gbW9kaWZ5aW5nIGF0dHJpYnV0ZWQg
c3RyaW5ncywgdGhlIHJhbmdlIGNhbiBjb21lIGZyb20gYSBzb3VyY2Ugd2hpY2ggbWF5IHByb3Zp
ZGUgZmF1bHR5IGluZm9ybWF0aW9uIChlLmcuIHRoZSBzcGVsbCBjaGVja2VyKS4KQEAgLTEwMTgs
MTEgKzEwMTgsOCBAQCBzdGF0aWMgdm9pZCBBWEF0dHJpYnV0ZVN0cmluZ1NldEVsZW1lbnQoTlNN
dXRhYmxlQXR0cmlidXRlZFN0cmluZyogYXR0clN0cmluZywgTgogICAgICAgICBpZiAoW2F0dHJp
YnV0ZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5QXR0YWNobWVudFRleHRBdHRyaWJ1
dGVdICYmIG9iamVjdC0+aXNBdHRhY2htZW50KCkgJiYgW29iamVjdFdyYXBwZXIgYXR0YWNobWVu
dFZpZXddKQogICAgICAgICAgICAgb2JqZWN0V3JhcHBlciA9IFtvYmplY3RXcmFwcGVyIGF0dGFj
aG1lbnRWaWV3XTsKICAgICAgICAgCi0gICAgICAgIEFYVUlFbGVtZW50UmVmIGF4RWxlbWVudCA9
IE5TQWNjZXNzaWJpbGl0eUNyZWF0ZUFYVUlFbGVtZW50UmVmKG9iamVjdFdyYXBwZXIpOwotICAg
ICAgICBpZiAoYXhFbGVtZW50KSB7Ci0gICAgICAgICAgICBbYXR0clN0cmluZyBhZGRBdHRyaWJ1
dGU6YXR0cmlidXRlIHZhbHVlOihfX2JyaWRnZSBpZClheEVsZW1lbnQgcmFuZ2U6cmFuZ2VdOwot
ICAgICAgICAgICAgQ0ZSZWxlYXNlKGF4RWxlbWVudCk7Ci0gICAgICAgIH0KKyAgICAgICAgaWYg
KGF1dG8gYXhFbGVtZW50ID0gYWRvcHRDRihOU0FjY2Vzc2liaWxpdHlDcmVhdGVBWFVJRWxlbWVu
dFJlZihvYmplY3RXcmFwcGVyKSkpCisgICAgICAgICAgICBbYXR0clN0cmluZyBhZGRBdHRyaWJ1
dGU6YXR0cmlidXRlIHZhbHVlOihfX2JyaWRnZSBpZClheEVsZW1lbnQuZ2V0KCkgcmFuZ2U6cmFu
Z2VdOwogICAgIH0gZWxzZQogICAgICAgICBbYXR0clN0cmluZyByZW1vdmVBdHRyaWJ1dGU6YXR0
cmlidXRlIHJhbmdlOnJhbmdlXTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvY29jb2EvSFRNTENvbnZlcnRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2Ev
SFRNTENvbnZlcnRlci5tbQppbmRleCA2NWU4NTUyNTI1MGQ0MGJhYzBjM2YzODU2Yjc4Mzk4MzYw
YzBiOTI0Li44Y2FmYTdjMzZlNmRkNjA1MDkyNzdkZTBhY2ZkMmMwMzE1NjhkMGMyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCkBAIC0yMDkwLDcg
KzIwOTAsNiBAQCB2b2lkIEhUTUxDb252ZXJ0ZXI6Ol9wcm9jZXNzVGV4dChDaGFyYWN0ZXJEYXRh
JiBjaGFyYWN0ZXJEYXRhKQogICAgIHVuaWNoYXIgbGFzdENoYXIgPSAodGV4dExlbmd0aCA+IDAp
ID8gW1tfYXR0clN0ciBzdHJpbmddIGNoYXJhY3RlckF0SW5kZXg6dGV4dExlbmd0aCAtIDFdIDog
J1xuJzsKICAgICBCT09MIHN1cHByZXNzTGVhZGluZ1NwYWNlID0gKChfZmxhZ3MuaXNTb2Z0ICYm
IGxhc3RDaGFyID09ICcgJykgfHwgbGFzdENoYXIgPT0gJ1xuJyB8fCBsYXN0Q2hhciA9PSAnXHIn
IHx8IGxhc3RDaGFyID09ICdcdCcgfHwgbGFzdENoYXIgPT0gTlNQYXJhZ3JhcGhTZXBhcmF0b3JD
aGFyYWN0ZXIgfHwgbGFzdENoYXIgPT0gTlNMaW5lU2VwYXJhdG9yQ2hhcmFjdGVyIHx8IGxhc3RD
aGFyID09IE5TRm9ybUZlZWRDaGFyYWN0ZXIgfHwgbGFzdENoYXIgPT0gV2ViTmV4dExpbmVDaGFy
YWN0ZXIpOwogICAgIE5TUmFuZ2UgcmFuZ2VUb1JlcGxhY2UgPSBOU01ha2VSYW5nZSh0ZXh0TGVu
Z3RoLCAwKTsKLSAgICBDRk11dGFibGVTdHJpbmdSZWYgbXV0c3RyID0gTlVMTDsKIAogICAgIFN0
cmluZyBvcmlnaW5hbFN0cmluZyA9IGNoYXJhY3RlckRhdGEuZGF0YSgpOwogICAgIHVuc2lnbmVk
IHN0YXJ0T2Zmc2V0ID0gMDsKQEAgLTIxNjAsOCArMjE1OSw2IEBAIHZvaWQgSFRNTENvbnZlcnRl
cjo6X3Byb2Nlc3NUZXh0KENoYXJhY3RlckRhdGEmIGNoYXJhY3RlckRhdGEpCiAgICAgICAgICAg
ICBbX2F0dHJTdHIgc2V0QXR0cmlidXRlczphZ2dyZWdhdGVkQXR0cmlidXRlc0ZvckFuY2VzdG9y
cyhjaGFyYWN0ZXJEYXRhKSByYW5nZTpyYW5nZVRvUmVwbGFjZV07CiAgICAgICAgIF9mbGFncy5p
c1NvZnQgPSB3YXNTcGFjZTsKICAgICB9Ci0gICAgaWYgKG11dHN0cikKLSAgICAgICAgQ0ZSZWxl
YXNlKG11dHN0cik7CiB9CiAKIHZvaWQgSFRNTENvbnZlcnRlcjo6X3RyYXZlcnNlTm9kZShOb2Rl
JiBub2RlLCB1bnNpZ25lZCBkZXB0aCwgYm9vbCBlbWJlZGRlZCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLm1tCmluZGV4IDk2ZjQ2
YzRjYzAyZTg5YTgyYTZkZjY1MzY3NGQwOTczNDMxODA1NGYuLmZhNGI5MDNiZWY5Mzk0ODFjMjJl
YTdkZjU1MWU4YjU1ZTdlMGU1MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
b2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5tbQpAQCAtMTAyLDEwICsxMDIsOSBAQCBEaXNr
Q2FjaGVNb25pdG9yOjpEaXNrQ2FjaGVNb25pdG9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdCwgUEFMOjpTZXNzaW9uSQogCiAjaWYgVVNFKFdFQl9USFJFQUQpCiAgICAgYXV0byBibG9j
a1RvUnVuID0gXihDRkNhY2hlZFVSTFJlc3BvbnNlUmVmIHJlc3BvbnNlKSB7Ci0gICAgICAgIENG
UmV0YWluKHJlc3BvbnNlKTsKKyAgICAgICAgYXV0byBzdHJvbmdSZXNwb25zZSA9IHJldGFpblB0
cihyZXNwb25zZSk7CiAgICAgICAgIFdlYlRocmVhZFJ1biheewotICAgICAgICAgICAgYmxvY2so
cmVzcG9uc2UpOwotICAgICAgICAgICAgQ0ZSZWxlYXNlKHJlc3BvbnNlKTsKKyAgICAgICAgICAg
IGJsb2NrKHN0cm9uZ1Jlc3BvbnNlLmdldCgpKTsKICAgICAgICAgfSk7CiAgICAgfTsKICNlbHNl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9FdmVudEhhbmRsZXJNYWMubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9FdmVudEhhbmRsZXJNYWMubW0KaW5kZXggYjI0OWU0
ZjRmZDk5MmI0ZTYxYWU3ZmVmOTAwMDhmNTY4ZjkxMGU5Yi4uOWQxMGE5ZmE3ZjE5ZDQwMjFjMTQ4
N2Q1ZWJjYTY1MDNhZWNhYzQyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMv
RXZlbnRIYW5kbGVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0V2ZW50SGFu
ZGxlck1hYy5tbQpAQCAtNDY4LDEzICs0NjgsMTIgQEAgc3RhdGljIHZvaWQgc2V0TlNTY3JvbGxW
aWV3U2Nyb2xsV2hlZWxTaG91bGRSZXRhaW5TZWxmKGJvb2wgc2hvdWxkUmV0YWluKQogCiBzdGF0
aWMgdm9pZCBzZWxmUmV0YWluaW5nTlNTY3JvbGxWaWV3U2Nyb2xsV2hlZWwoTlNTY3JvbGxWaWV3
ICpzZWxmLCBTRUwgc2VsZWN0b3IsIE5TRXZlbnQgKmV2ZW50KQogeworICAgIFJldGFpblB0cjxO
U1Njcm9sbFZpZXc+IHN0cm9uZ1NlbGY7CiAgICAgYm9vbCBzaG91bGRSZXRhaW5TZWxmID0gaXNN
YWluVGhyZWFkKCkgJiYgbnNTY3JvbGxWaWV3U2Nyb2xsV2hlZWxTaG91bGRSZXRhaW5TZWxmKCk7
Ci0KICAgICBpZiAoc2hvdWxkUmV0YWluU2VsZikKLSAgICAgICAgQ0ZSZXRhaW4oKF9fYnJpZGdl
IENGVHlwZVJlZilzZWxmKTsKKyAgICAgICAgc3Ryb25nU2VsZiA9IHJldGFpblB0cihzZWxmKTsK
KwogICAgIHd0ZkNhbGxJTVA8dm9pZD4ob3JpZ2luYWxOU1Njcm9sbFZpZXdTY3JvbGxXaGVlbCwg
c2VsZiwgc2VsZWN0b3IsIGV2ZW50KTsKLSAgICBpZiAoc2hvdWxkUmV0YWluU2VsZikKLSAgICAg
ICAgQ0ZSZWxlYXNlKChfX2JyaWRnZSBDRlR5cGVSZWYpc2VsZik7CiB9CiAKIGJvb2wgRXZlbnRI
YW5kbGVyOjpwYXNzV2hlZWxFdmVudFRvV2lkZ2V0KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYg
d2hlZWxFdmVudCwgV2lkZ2V0JiB3aWRnZXQsIE9wdGlvblNldDxXaGVlbEV2ZW50UHJvY2Vzc2lu
Z1N0ZXBzPiBwcm9jZXNzaW5nU3RlcHMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L3dpbi9GcmFtZUNHV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvd2luL0ZyYW1lQ0dXaW4u
Y3BwCmluZGV4IGYwNTU2YTNkYWIyYTkyOWZmYmRjYzNhMjBhNjE5Njc1NmI2NjdhMjEuLjczZDhi
NDljZWE3Y2E2NThkNTU0NmQzZWIxNTIyYWQzNGMwYWVjMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2Uvd2luL0ZyYW1lQ0dXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
d2luL0ZyYW1lQ0dXaW4uY3BwCkBAIC02OCwxNSArNjgsMTQgQEAgR0RJT2JqZWN0PEhCSVRNQVA+
IGltYWdlRnJvbVJlY3QoY29uc3QgRnJhbWUqIGZyYW1lLCBJbnRSZWN0JiBpcikKICAgICAgICAg
cmV0dXJuIGhibXA7CiAKICAgICBIR0RJT0JKIGhibXBPbGQgPSBTZWxlY3RPYmplY3QoaGRjLmdl
dCgpLCBoYm1wLmdldCgpKTsKLSAgICBDR0NvbnRleHRSZWYgY29udGV4dCA9IENHQml0bWFwQ29u
dGV4dENyZWF0ZShzdGF0aWNfY2FzdDx2b2lkKj4oYml0cyksIHcsIGgsCi0gICAgICAgIDgsIHcg
KiBzaXplb2YoUkdCUVVBRCksIHNSR0JDb2xvclNwYWNlUmVmKCksIGtDR0JpdG1hcEJ5dGVPcmRl
cjMyTGl0dGxlIHwga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRGaXJzdCk7Ci0gICAgQ0dDb250
ZXh0U2F2ZUdTdGF0ZShjb250ZXh0KTsKKyAgICBhdXRvIGNvbnRleHQgPSBhZG9wdENGKENHQml0
bWFwQ29udGV4dENyZWF0ZShzdGF0aWNfY2FzdDx2b2lkKj4oYml0cyksIHcsIGgsCisgICAgICAg
IDgsIHcgKiBzaXplb2YoUkdCUVVBRCksIHNSR0JDb2xvclNwYWNlUmVmKCksIGtDR0JpdG1hcEJ5
dGVPcmRlcjMyTGl0dGxlIHwga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRGaXJzdCkpOworICAg
IENHQ29udGV4dFNhdmVHU3RhdGUoY29udGV4dC5nZXQoKSk7CiAKLSAgICBHcmFwaGljc0NvbnRl
eHQgZ2MoY29udGV4dCk7CisgICAgR3JhcGhpY3NDb250ZXh0IGdjKGNvbnRleHQuZ2V0KCkpOwog
CiAgICAgZHJhd1JlY3RJbnRvQ29udGV4dChpciwgZnJhbWUtPnZpZXcoKSwgZ2MpOwogCi0gICAg
Q0dDb250ZXh0UmVsZWFzZShjb250ZXh0KTsKICAgICBTZWxlY3RPYmplY3QoaGRjLmdldCgpLCBo
Ym1wT2xkKTsKIAogICAgIGZyYW1lLT52aWV3KCktPnNldFBhaW50QmVoYXZpb3Iob2xkUGFpbnRC
ZWhhdmlvcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9NYWluVGhy
ZWFkU2hhcmVkVGltZXJDRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9NYWluVGhy
ZWFkU2hhcmVkVGltZXJDRi5jcHAKaW5kZXggMjhjZDliNzNmZTZiOGE4OGE5NDRhMjAyMDlkN2E3
YTBlMDVlMDEwNC4uNTQyMGE1YTg1OWZiY2JjYzA0ZjVkNWY5ODVmMDg3MmE1NDA1MTNiOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvTWFpblRocmVhZFNoYXJlZFRpbWVy
Q0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL01haW5UaHJlYWRTaGFyZWRU
aW1lckNGLmNwcApAQCAtMzcsNyArMzcsMTEgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1z
dGF0aWMgQ0ZSdW5Mb29wVGltZXJSZWYgc2hhcmVkVGltZXI7CitzdGF0aWMgUmV0YWluUHRyPENG
UnVuTG9vcFRpbWVyUmVmPiYgc2hhcmVkVGltZXIoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxSZXRhaW5QdHI8Q0ZSdW5Mb29wVGltZXJSZWY+PiBzaGFyZWRUaW1lcjsKKyAgICByZXR1
cm4gc2hhcmVkVGltZXI7Cit9CiBzdGF0aWMgdm9pZCB0aW1lckZpcmVkKENGUnVuTG9vcFRpbWVy
UmVmLCB2b2lkKik7CiAKIHN0YXRpYyBjb25zdCBDRlRpbWVJbnRlcnZhbCBrQ0ZUaW1lSW50ZXJ2
YWxEaXN0YW50RnV0dXJlID0gc3RkOjpudW1lcmljX2xpbWl0czxDRlRpbWVJbnRlcnZhbD46Om1h
eCgpOwpAQCAtODMsNyArODcsNyBAQCBzdGF0aWMgdm9pZCB0aW1lckZpcmVkKENGUnVuTG9vcFRp
bWVyUmVmLCB2b2lkKikKIAogdm9pZCBNYWluVGhyZWFkU2hhcmVkVGltZXI6OnJlc3RhcnRTaGFy
ZWRUaW1lcigpCiB7Ci0gICAgaWYgKCFzaGFyZWRUaW1lcikKKyAgICBpZiAoIXNoYXJlZFRpbWVy
KCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIE1haW5UaHJlYWRTaGFyZWRUaW1lcjo6c2luZ2xl
dG9uKCkuc3RvcCgpOwpAQCAtOTIsMTIgKzk2LDExIEBAIHZvaWQgTWFpblRocmVhZFNoYXJlZFRp
bWVyOjpyZXN0YXJ0U2hhcmVkVGltZXIoKQogCiB2b2lkIE1haW5UaHJlYWRTaGFyZWRUaW1lcjo6
aW52YWxpZGF0ZSgpCiB7Ci0gICAgaWYgKCFzaGFyZWRUaW1lcikKKyAgICBpZiAoIXNoYXJlZFRp
bWVyKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIENGUnVuTG9vcFRpbWVySW52YWxpZGF0ZShz
aGFyZWRUaW1lcik7Ci0gICAgQ0ZSZWxlYXNlKHNoYXJlZFRpbWVyKTsKLSAgICBzaGFyZWRUaW1l
ciA9IG51bGxwdHI7CisgICAgQ0ZSdW5Mb29wVGltZXJJbnZhbGlkYXRlKHNoYXJlZFRpbWVyKCku
Z2V0KCkpOworICAgIHNoYXJlZFRpbWVyKCkgPSBudWxscHRyOwogfQogCiB2b2lkIE1haW5UaHJl
YWRTaGFyZWRUaW1lcjo6c2V0RmlyZUludGVydmFsKFNlY29uZHMgaW50ZXJ2YWwpCkBAIC0xMDUs
MTIgKzEwOCwxMiBAQCB2b2lkIE1haW5UaHJlYWRTaGFyZWRUaW1lcjo6c2V0RmlyZUludGVydmFs
KFNlY29uZHMgaW50ZXJ2YWwpCiAgICAgQVNTRVJUKG1fZmlyZWRGdW5jdGlvbik7CiAKICAgICBD
RkFic29sdXRlVGltZSBmaXJlRGF0ZSA9IENGQWJzb2x1dGVUaW1lR2V0Q3VycmVudCgpICsgaW50
ZXJ2YWwudmFsdWUoKTsKLSAgICBpZiAoIXNoYXJlZFRpbWVyKSB7Ci0gICAgICAgIHNoYXJlZFRp
bWVyID0gQ0ZSdW5Mb29wVGltZXJDcmVhdGUobnVsbHB0ciwgZmlyZURhdGUsIGtDRlRpbWVJbnRl
cnZhbERpc3RhbnRGdXR1cmUsIDAsIDAsIHRpbWVyRmlyZWQsIG51bGxwdHIpOworICAgIGlmICgh
c2hhcmVkVGltZXIoKSkgeworICAgICAgICBzaGFyZWRUaW1lcigpID0gYWRvcHRDRihDRlJ1bkxv
b3BUaW1lckNyZWF0ZShudWxscHRyLCBmaXJlRGF0ZSwga0NGVGltZUludGVydmFsRGlzdGFudEZ1
dHVyZSwgMCwgMCwgdGltZXJGaXJlZCwgbnVsbHB0cikpOwogI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCi0gICAgICAgIENGUnVuTG9vcEFkZFRpbWVyKFdlYlRocmVhZFJ1bkxvb3AoKSwgc2hhcmVk
VGltZXIsIGtDRlJ1bkxvb3BDb21tb25Nb2Rlcyk7CisgICAgICAgIENGUnVuTG9vcEFkZFRpbWVy
KFdlYlRocmVhZFJ1bkxvb3AoKSwgc2hhcmVkVGltZXIoKS5nZXQoKSwga0NGUnVuTG9vcENvbW1v
bk1vZGVzKTsKICNlbHNlCi0gICAgICAgIENGUnVuTG9vcEFkZFRpbWVyKENGUnVuTG9vcEdldEN1
cnJlbnQoKSwgc2hhcmVkVGltZXIsIGtDRlJ1bkxvb3BDb21tb25Nb2Rlcyk7CisgICAgICAgIENG
UnVuTG9vcEFkZFRpbWVyKENGUnVuTG9vcEdldEN1cnJlbnQoKSwgc2hhcmVkVGltZXIoKS5nZXQo
KSwga0NGUnVuTG9vcENvbW1vbk1vZGVzKTsKICNlbmRpZgogCiAgICAgICAgIHNldHVwUG93ZXJP
YnNlcnZlcigpOwpAQCAtMTE4LDE1ICsxMjEsMTUgQEAgdm9pZCBNYWluVGhyZWFkU2hhcmVkVGlt
ZXI6OnNldEZpcmVJbnRlcnZhbChTZWNvbmRzIGludGVydmFsKQogICAgICAgICByZXR1cm47CiAg
ICAgfQogCi0gICAgQ0ZSdW5Mb29wVGltZXJTZXROZXh0RmlyZURhdGUoc2hhcmVkVGltZXIsIGZp
cmVEYXRlKTsKKyAgICBDRlJ1bkxvb3BUaW1lclNldE5leHRGaXJlRGF0ZShzaGFyZWRUaW1lcigp
LmdldCgpLCBmaXJlRGF0ZSk7CiB9CiAKIHZvaWQgTWFpblRocmVhZFNoYXJlZFRpbWVyOjpzdG9w
KCkKIHsKLSAgICBpZiAoIXNoYXJlZFRpbWVyKQorICAgIGlmICghc2hhcmVkVGltZXIoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgQ0ZSdW5Mb29wVGltZXJTZXROZXh0RmlyZURhdGUoc2hhcmVk
VGltZXIsIGtDRlRpbWVJbnRlcnZhbERpc3RhbnRGdXR1cmUpOworICAgIENGUnVuTG9vcFRpbWVy
U2V0TmV4dEZpcmVEYXRlKHNoYXJlZFRpbWVyKCkuZ2V0KCksIGtDRlRpbWVJbnRlcnZhbERpc3Rh
bnRGdXR1cmUpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
Qy5tbQppbmRleCA1NzYxYzA5OWIxZjE5NGZhMWYwZDgwM2M2OTVkMDQyZmJlNDQ4M2E5Li5kMGZk
YmFkM2YxZDVhNDM5MWM2M2FmZmYwNzY5ZTJmZTU2NjJkOWExIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akMubW0KQEAgLTI4MTAsMTIgKzI4MTAsMTIgQEAgc3RhdGljIE5TU3RyaW5nICpleGVybmFsRGV2
aWNlRGlzcGxheU5hbWVGb3JQbGF5ZXIoQVZQbGF5ZXIgKnBsYXllcikKICAgICBpZiAocGxheWVy
LmV4dGVybmFsUGxheWJhY2tUeXBlICE9IEFWUGxheWVyRXh0ZXJuYWxQbGF5YmFja1R5cGVBaXJQ
bGF5KQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgTlNBcnJheSAqcGlja2FibGVSb3V0ZXMg
PSBDRkJyaWRnaW5nUmVsZWFzZShNUk1lZGlhUmVtb3RlQ29weVBpY2thYmxlUm91dGVzKCkpOwot
ICAgIGlmICghcGlja2FibGVSb3V0ZXMuY291bnQpCisgICAgYXV0byBwaWNrYWJsZVJvdXRlcyA9
IGFkb3B0Q0YoTVJNZWRpYVJlbW90ZUNvcHlQaWNrYWJsZVJvdXRlcygpKTsKKyAgICBpZiAoIXBp
Y2thYmxlUm91dGVzIHx8ICEoQ0ZBcnJheUdldENvdW50KHBpY2thYmxlUm91dGVzLmdldCgpKSkK
ICAgICAgICAgcmV0dXJuIG5pbDsKIAogICAgIE5TU3RyaW5nICpkaXNwbGF5TmFtZSA9IG5pbDsK
LSAgICBmb3IgKE5TRGljdGlvbmFyeSAqcGlja2FibGVSb3V0ZSBpbiBwaWNrYWJsZVJvdXRlcykg
eworICAgIGZvciAoTlNEaWN0aW9uYXJ5ICpwaWNrYWJsZVJvdXRlIGluIChfX2JyaWRnZSBOU0Fy
cmF5ICopcGlja2FibGVSb3V0ZXMuZ2V0KCkpIHsKICAgICAgICAgaWYgKCFbcGlja2FibGVSb3V0
ZVtBVkNvbnRyb2xsZXJfUm91dGVEZXNjcmlwdGlvbktleV9Sb3V0ZUN1cnJlbnRseVBpY2tlZF0g
Ym9vbFZhbHVlXSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCkBAIC0yODMwLDcgKzI4MzAsNyBA
QCBzdGF0aWMgTlNTdHJpbmcgKmV4ZXJuYWxEZXZpY2VEaXNwbGF5TmFtZUZvclBsYXllcihBVlBs
YXllciAqcGxheWVyKQogCiAgICAgICAgIC8vIEluIGNhc2VzIHdoZXJlIGEgcm91dGUgd2l0aCB0
aGF0IG5hbWUgYWxyZWFkeSBleGlzdHMsIHByZWZpeCB0aGUgbmFtZSB3aXRoIHRoZSBtb2RlbC4K
ICAgICAgICAgQk9PTCBpbmNsdWRlTG9jYWxpemVkRGV2aWNlTW9kZWxOYW1lID0gTk87Ci0gICAg
ICAgIGZvciAoTlNEaWN0aW9uYXJ5ICpvdGhlclJvdXRlIGluIHBpY2thYmxlUm91dGVzKSB7Cisg
ICAgICAgIGZvciAoTlNEaWN0aW9uYXJ5ICpvdGhlclJvdXRlIGluIChfX2JyaWRnZSBOU0FycmF5
ICopcGlja2FibGVSb3V0ZXMuZ2V0KCkpIHsKICAgICAgICAgICAgIGlmIChvdGhlclJvdXRlID09
IHBpY2thYmxlUm91dGUpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9DQUNGTGF5ZXJUcmVlSG9z
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vQ0FDRkxheWVy
VHJlZUhvc3QuY3BwCmluZGV4IDEyOWRkYTBkZGFiYTA4MGE1OTAxNjMwNGZhZDRlY2ZmM2U0N2Nl
YzAuLmE2Yjc2ODNkZWU1YjZlMTVkMTU4NjQzNWZiMzcxMWExNTlkNDJjYTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9DQUNGTGF5ZXJUcmVlSG9z
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL0NBQ0ZM
YXllclRyZWVIb3N0LmNwcApAQCAtMTU5LDkgKzE1OSw4IEBAIHZvaWQgQ0FDRkxheWVyVHJlZUhv
c3Q6OmluaXRpYWxpemUoKQogICAgIG1fcm9vdExheWVyLT5zZXRHZW9tZXRyeUZsaXBwZWQodHJ1
ZSk7CiAKICNpZm5kZWYgTkRFQlVHCi0gICAgQ0dDb2xvclJlZiBkZWJ1Z0NvbG9yID0gQ0dDb2xv
ckNyZWF0ZUdlbmVyaWNSR0IoMSwgMCwgMCwgMC44KTsKLSAgICBtX3Jvb3RMYXllci0+c2V0QmFj
a2dyb3VuZENvbG9yKGRlYnVnQ29sb3IpOwotICAgIENHQ29sb3JSZWxlYXNlKGRlYnVnQ29sb3Ip
OworICAgIGF1dG8gZGVidWdDb2xvciA9IGFkb3B0Q0YoQ0dDb2xvckNyZWF0ZUdlbmVyaWNSR0Io
MSwgMCwgMCwgMC44KSk7CisgICAgbV9yb290TGF5ZXItPnNldEJhY2tncm91bmRDb2xvcihkZWJ1
Z0NvbG9yLmdldCgpKTsKICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKaW5kZXggOWRiOTA5
Y2RhOGVmMTc2MTBmMjk0YTk4NTA5MThiYzE5YWU3OTdhOS4uNjQ0M2E3MTU3NThkNjc1ODRlZTNk
ZjQxNDk1M2U0ZmU3NTg3YzFiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcApAQCAtMzQ2LDkgKzM0Niw3
IEBAIHN0YXRpYyB2b2lkIGRyYXdQYXR0ZXJuQ2FsbGJhY2sodm9pZCogaW5mbywgQ0dDb250ZXh0
UmVmIGNvbnRleHQpCiAKIHN0YXRpYyB2b2lkIHBhdHRlcm5SZWxlYXNlQ2FsbGJhY2sodm9pZCog
aW5mbykKIHsKLSAgICBjYWxsT25NYWluVGhyZWFkKFtpbWFnZSA9IHN0YXRpY19jYXN0PENHSW1h
Z2VSZWY+KGluZm8pXSB7Ci0gICAgICAgIENHSW1hZ2VSZWxlYXNlKGltYWdlKTsKLSAgICB9KTsK
KyAgICBjYWxsT25NYWluVGhyZWFkKFtpbWFnZSA9IGFkb3B0Q0Yoc3RhdGljX2Nhc3Q8Q0dJbWFn
ZVJlZj4oaW5mbykpXSB7IH0pOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1BsYXRm
b3JtUGF0dGVybihjb25zdCBQbGF0Zm9ybUltYWdlUHRyJiBpbWFnZSwgY29uc3QgRmxvYXRTaXpl
JiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYg
dGlsZVJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3Qg
RmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQ
YWludGluZ09wdGlvbnMmIG9wdGlvbnMpCkBAIC02NzUsOCArNjczLDggQEAgdm9pZCBHcmFwaGlj
c0NvbnRleHQ6OmZpbGxQYXRoKGNvbnN0IFBhdGgmIHBhdGgpCiAgICAgICAgICAgICBGbG9hdFJl
Y3QgcmVjdCA9IHBhdGguZmFzdEJvdW5kaW5nUmVjdCgpOwogICAgICAgICAgICAgRmxvYXRTaXpl
IGxheWVyU2l6ZSA9IGdldENUTSgpLm1hcFNpemUocmVjdC5zaXplKCkpOwogCi0gICAgICAgICAg
ICBDR0xheWVyUmVmIGxheWVyID0gQ0dMYXllckNyZWF0ZVdpdGhDb250ZXh0KGNvbnRleHQsIGxh
eWVyU2l6ZSwgMCk7Ci0gICAgICAgICAgICBDR0NvbnRleHRSZWYgbGF5ZXJDb250ZXh0ID0gQ0dM
YXllckdldENvbnRleHQobGF5ZXIpOworICAgICAgICAgICAgYXV0byBsYXllciA9IGFkb3B0Q0Yo
Q0dMYXllckNyZWF0ZVdpdGhDb250ZXh0KGNvbnRleHQsIGxheWVyU2l6ZSwgMCkpOworICAgICAg
ICAgICAgQ0dDb250ZXh0UmVmIGxheWVyQ29udGV4dCA9IENHTGF5ZXJHZXRDb250ZXh0KGxheWVy
LmdldCgpKTsKIAogICAgICAgICAgICAgQ0dDb250ZXh0U2NhbGVDVE0obGF5ZXJDb250ZXh0LCBs
YXllclNpemUud2lkdGgoKSAvIHJlY3Qud2lkdGgoKSwgbGF5ZXJTaXplLmhlaWdodCgpIC8gcmVj
dC5oZWlnaHQoKSk7CiAgICAgICAgICAgICBDR0NvbnRleHRUcmFuc2xhdGVDVE0obGF5ZXJDb250
ZXh0LCAtcmVjdC54KCksIC1yZWN0LnkoKSk7CkBAIC02OTAsOCArNjg4LDcgQEAgdm9pZCBHcmFw
aGljc0NvbnRleHQ6OmZpbGxQYXRoKGNvbnN0IFBhdGgmIHBhdGgpCiAgICAgICAgICAgICAgICAg
Q0dDb250ZXh0Q2xpcChsYXllckNvbnRleHQpOwogCiAgICAgICAgICAgICBtX3N0YXRlLmZpbGxH
cmFkaWVudC0+cGFpbnQobGF5ZXJDb250ZXh0KTsKLSAgICAgICAgICAgIENHQ29udGV4dERyYXdM
YXllckluUmVjdChjb250ZXh0LCByZWN0LCBsYXllcik7Ci0gICAgICAgICAgICBDR0xheWVyUmVs
ZWFzZShsYXllcik7CisgICAgICAgICAgICBDR0NvbnRleHREcmF3TGF5ZXJJblJlY3QoY29udGV4
dCwgcmVjdCwgbGF5ZXIuZ2V0KCkpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgQ0dD
b250ZXh0QmVnaW5QYXRoKGNvbnRleHQpOwogICAgICAgICAgICAgQ0dDb250ZXh0QWRkUGF0aChj
b250ZXh0LCBwYXRoLnBsYXRmb3JtUGF0aCgpKTsKQEAgLTc0NSw4ICs3NDIsOCBAQCB2b2lkIEdy
YXBoaWNzQ29udGV4dDo6c3Ryb2tlUGF0aChjb25zdCBQYXRoJiBwYXRoKQogCiAgICAgICAgICAg
ICBGbG9hdFNpemUgbGF5ZXJTaXplID0gZ2V0Q1RNKCkubWFwU2l6ZShGbG9hdFNpemUoYWRqdXN0
ZWRXaWR0aCwgYWRqdXN0ZWRIZWlnaHQpKTsKIAotICAgICAgICAgICAgQ0dMYXllclJlZiBsYXll
ciA9IENHTGF5ZXJDcmVhdGVXaXRoQ29udGV4dChjb250ZXh0LCBsYXllclNpemUsIDApOwotICAg
ICAgICAgICAgQ0dDb250ZXh0UmVmIGxheWVyQ29udGV4dCA9IENHTGF5ZXJHZXRDb250ZXh0KGxh
eWVyKTsKKyAgICAgICAgICAgIGF1dG8gbGF5ZXIgPSBhZG9wdENGKENHTGF5ZXJDcmVhdGVXaXRo
Q29udGV4dChjb250ZXh0LCBsYXllclNpemUsIDApKTsKKyAgICAgICAgICAgIENHQ29udGV4dFJl
ZiBsYXllckNvbnRleHQgPSBDR0xheWVyR2V0Q29udGV4dChsYXllci5nZXQoKSk7CiAgICAgICAg
ICAgICBDR0NvbnRleHRTZXRMaW5lV2lkdGgobGF5ZXJDb250ZXh0LCBsaW5lV2lkdGgpOwogCiAg
ICAgICAgICAgICAvLyBDb21wZW5zYXRlIGZvciB0aGUgbGluZSB3aWR0aCwgb3RoZXJ3aXNlIHRo
ZSBsYXllcidzIHRvcC1sZWZ0IGNvcm5lciB3b3VsZCBiZQpAQCAtNzY1LDggKzc2Miw3IEBAIHZv
aWQgR3JhcGhpY3NDb250ZXh0OjpzdHJva2VQYXRoKGNvbnN0IFBhdGgmIHBhdGgpCiAKICAgICAg
ICAgICAgIGZsb2F0IGRlc3RpbmF0aW9uWCA9IHJvdW5kZihyZWN0LngoKSAtIGxpbmVXaWR0aCk7
CiAgICAgICAgICAgICBmbG9hdCBkZXN0aW5hdGlvblkgPSByb3VuZGYocmVjdC55KCkgLSBsaW5l
V2lkdGgpOwotICAgICAgICAgICAgQ0dDb250ZXh0RHJhd0xheWVySW5SZWN0KGNvbnRleHQsIENH
UmVjdE1ha2UoZGVzdGluYXRpb25YLCBkZXN0aW5hdGlvblksIGFkanVzdGVkV2lkdGgsIGFkanVz
dGVkSGVpZ2h0KSwgbGF5ZXIpOwotICAgICAgICAgICAgQ0dMYXllclJlbGVhc2UobGF5ZXIpOwor
ICAgICAgICAgICAgQ0dDb250ZXh0RHJhd0xheWVySW5SZWN0KGNvbnRleHQsIENHUmVjdE1ha2Uo
ZGVzdGluYXRpb25YLCBkZXN0aW5hdGlvblksIGFkanVzdGVkV2lkdGgsIGFkanVzdGVkSGVpZ2h0
KSwgbGF5ZXIuZ2V0KCkpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgQ0dDb250ZXh0
U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRleHQpOwogICAgICAgICAgICAgQ0dDb250ZXh0QmVn
aW5QYXRoKGNvbnRleHQpOwpAQCAtODE3LDggKzgxMyw4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0
OjpmaWxsUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiAgICAgICAgIGlmIChoYXNTaGFkb3co
KSkgewogICAgICAgICAgICAgRmxvYXRTaXplIGxheWVyU2l6ZSA9IGdldENUTSgpLm1hcFNpemUo
cmVjdC5zaXplKCkpOwogCi0gICAgICAgICAgICBDR0xheWVyUmVmIGxheWVyID0gQ0dMYXllckNy
ZWF0ZVdpdGhDb250ZXh0KGNvbnRleHQsIGxheWVyU2l6ZSwgMCk7Ci0gICAgICAgICAgICBDR0Nv
bnRleHRSZWYgbGF5ZXJDb250ZXh0ID0gQ0dMYXllckdldENvbnRleHQobGF5ZXIpOworICAgICAg
ICAgICAgYXV0byBsYXllciA9IGFkb3B0Q0YoQ0dMYXllckNyZWF0ZVdpdGhDb250ZXh0KGNvbnRl
eHQsIGxheWVyU2l6ZSwgMCkpOworICAgICAgICAgICAgQ0dDb250ZXh0UmVmIGxheWVyQ29udGV4
dCA9IENHTGF5ZXJHZXRDb250ZXh0KGxheWVyLmdldCgpKTsKIAogICAgICAgICAgICAgQ0dDb250
ZXh0U2NhbGVDVE0obGF5ZXJDb250ZXh0LCBsYXllclNpemUud2lkdGgoKSAvIHJlY3Qud2lkdGgo
KSwgbGF5ZXJTaXplLmhlaWdodCgpIC8gcmVjdC5oZWlnaHQoKSk7CiAgICAgICAgICAgICBDR0Nv
bnRleHRUcmFuc2xhdGVDVE0obGF5ZXJDb250ZXh0LCAtcmVjdC54KCksIC1yZWN0LnkoKSk7CkBA
IC04MjcsOCArODIzLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0KGNvbnN0IEZs
b2F0UmVjdCYgcmVjdCkKIAogICAgICAgICAgICAgQ0dDb250ZXh0Q29uY2F0Q1RNKGxheWVyQ29u
dGV4dCwgbV9zdGF0ZS5maWxsR3JhZGllbnRTcGFjZVRyYW5zZm9ybSk7CiAgICAgICAgICAgICBt
X3N0YXRlLmZpbGxHcmFkaWVudC0+cGFpbnQobGF5ZXJDb250ZXh0KTsKLSAgICAgICAgICAgIENH
Q29udGV4dERyYXdMYXllckluUmVjdChjb250ZXh0LCByZWN0LCBsYXllcik7Ci0gICAgICAgICAg
ICBDR0xheWVyUmVsZWFzZShsYXllcik7CisgICAgICAgICAgICBDR0NvbnRleHREcmF3TGF5ZXJJ
blJlY3QoY29udGV4dCwgcmVjdCwgbGF5ZXIuZ2V0KCkpOwogICAgICAgICB9IGVsc2UgewogICAg
ICAgICAgICAgQ0dDb250ZXh0Q2xpcFRvUmVjdChjb250ZXh0LCByZWN0KTsKICAgICAgICAgICAg
IENHQ29udGV4dENvbmNhdENUTShjb250ZXh0LCBtX3N0YXRlLmZpbGxHcmFkaWVudFNwYWNlVHJh
bnNmb3JtKTsKQEAgLTEyMjYsOSArMTIyMSw5IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzdHJv
a2VSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgZmxvYXQgbGluZVdpZHRoKQogICAgICAgICAg
ICAgZmxvYXQgYWRqdXN0ZWRIZWlnaHQgPSBjZWlsZihyZWN0LmhlaWdodCgpICsgZG91YmxlTGlu
ZVdpZHRoKTsKICAgICAgICAgICAgIEZsb2F0U2l6ZSBsYXllclNpemUgPSBnZXRDVE0oKS5tYXBT
aXplKEZsb2F0U2l6ZShhZGp1c3RlZFdpZHRoLCBhZGp1c3RlZEhlaWdodCkpOwogCi0gICAgICAg
ICAgICBDR0xheWVyUmVmIGxheWVyID0gQ0dMYXllckNyZWF0ZVdpdGhDb250ZXh0KGNvbnRleHQs
IGxheWVyU2l6ZSwgMCk7CisgICAgICAgICAgICBhdXRvIGxheWVyID0gYWRvcHRDRihDR0xheWVy
Q3JlYXRlV2l0aENvbnRleHQoY29udGV4dCwgbGF5ZXJTaXplLCAwKSk7CiAKLSAgICAgICAgICAg
IENHQ29udGV4dFJlZiBsYXllckNvbnRleHQgPSBDR0xheWVyR2V0Q29udGV4dChsYXllcik7Cisg
ICAgICAgICAgICBDR0NvbnRleHRSZWYgbGF5ZXJDb250ZXh0ID0gQ0dMYXllckdldENvbnRleHQo
bGF5ZXIuZ2V0KCkpOwogICAgICAgICAgICAgbV9zdGF0ZS5zdHJva2VUaGlja25lc3MgPSBsaW5l
V2lkdGg7CiAgICAgICAgICAgICBDR0NvbnRleHRTZXRMaW5lV2lkdGgobGF5ZXJDb250ZXh0LCBs
aW5lV2lkdGgpOwogCkBAIC0xMjQ4LDggKzEyNDMsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6
c3Ryb2tlUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGZsb2F0IGxpbmVXaWR0aCkKIAogICAg
ICAgICAgICAgY29uc3QgZmxvYXQgZGVzdGluYXRpb25YID0gcm91bmRmKHJlY3QueCgpIC0gbGlu
ZVdpZHRoKTsKICAgICAgICAgICAgIGNvbnN0IGZsb2F0IGRlc3RpbmF0aW9uWSA9IHJvdW5kZihy
ZWN0LnkoKSAtIGxpbmVXaWR0aCk7Ci0gICAgICAgICAgICBDR0NvbnRleHREcmF3TGF5ZXJJblJl
Y3QoY29udGV4dCwgQ0dSZWN0TWFrZShkZXN0aW5hdGlvblgsIGRlc3RpbmF0aW9uWSwgYWRqdXN0
ZWRXaWR0aCwgYWRqdXN0ZWRIZWlnaHQpLCBsYXllcik7Ci0gICAgICAgICAgICBDR0xheWVyUmVs
ZWFzZShsYXllcik7CisgICAgICAgICAgICBDR0NvbnRleHREcmF3TGF5ZXJJblJlY3QoY29udGV4
dCwgQ0dSZWN0TWFrZShkZXN0aW5hdGlvblgsIGRlc3RpbmF0aW9uWSwgYWRqdXN0ZWRXaWR0aCwg
YWRqdXN0ZWRIZWlnaHQpLCBsYXllci5nZXQoKSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAg
ICAgICBDR0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7CiAgICAgICAgICAg
ICBzZXRTdHJva2VUaGlja25lc3MobGluZVdpZHRoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdHRlcm5DRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9QYXR0ZXJuQ0cuY3BwCmluZGV4IGYxYjllM2E3YzA1NTY5YTk4
OTFiNjk4ZDI4M2FiNTM5N2M3MjVmNTQuLjNhZWM3NzU2ZGI4Y2QyNTBhZmVmMTBkODNmZGViMWRj
YzkzY2Y5YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L1BhdHRlcm5DRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
UGF0dGVybkNHLmNwcApAQCAtNTAsOSArNTAsNyBAQCBzdGF0aWMgdm9pZCBwYXR0ZXJuQ2FsbGJh
Y2sodm9pZCogaW5mbywgQ0dDb250ZXh0UmVmIGNvbnRleHQpCiAKIHN0YXRpYyB2b2lkIHBhdHRl
cm5SZWxlYXNlQ2FsbGJhY2sodm9pZCogaW5mbykKIHsKLSAgICBjYWxsT25NYWluVGhyZWFkKFtp
bWFnZSA9IHN0YXRpY19jYXN0PENHSW1hZ2VSZWY+KGluZm8pXSB7Ci0gICAgICAgIENHSW1hZ2VS
ZWxlYXNlKGltYWdlKTsKLSAgICB9KTsKKyAgICBjYWxsT25NYWluVGhyZWFkKFtpbWFnZSA9IGFk
b3B0Q0Yoc3RhdGljX2Nhc3Q8Q0dJbWFnZVJlZj4oaW5mbykpXSB7IH0pOwogfQogCiBDR1BhdHRl
cm5SZWYgUGF0dGVybjo6Y3JlYXRlUGxhdGZvcm1QYXR0ZXJuKGNvbnN0IEFmZmluZVRyYW5zZm9y
bSYgdXNlclNwYWNlVHJhbnNmb3JtKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwCmluZGV4
IDk5Y2JjZmQwYjZkYTE1Y2UzMjA4Nzc1ZDE1YjVkZGJiNmFhYzhmMGUuLmZhNzdiMzk5NzdkYjk3
OGEwNTk3MWI2YzI1YzQxZjM3MmRlNTI0YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5jcHAKQEAg
LTEyNzksOCArMTI3OSw3IEBAIHN0YXRpYyB2b2lkIGF1dG9BY3RpdmF0ZUZvbnQoY29uc3QgU3Ry
aW5nJiBuYW1lLCBDR0Zsb2F0IHNpemUpCiAgICAgQ0ZUeXBlUmVmIHZhbHVlc1tdID0geyBmb250
TmFtZS5nZXQoKSB9OwogICAgIGF1dG8gYXR0cmlidXRlcyA9IGFkb3B0Q0YoQ0ZEaWN0aW9uYXJ5
Q3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGtleXMsIHZhbHVlcywgV1RGX0FSUkFZX0xFTkdU
SChrZXlzKSwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25h
cnlWYWx1ZUNhbGxCYWNrcykpOwogICAgIGF1dG8gZGVzY3JpcHRvciA9IGFkb3B0Q0YoQ1RGb250
RGVzY3JpcHRvckNyZWF0ZVdpdGhBdHRyaWJ1dGVzKGF0dHJpYnV0ZXMuZ2V0KCkpKTsKLSAgICBp
ZiAoYXV0byBuZXdGb250ID0gQ1RGb250Q3JlYXRlV2l0aEZvbnREZXNjcmlwdG9yKGRlc2NyaXB0
b3IuZ2V0KCksIHNpemUsIG51bGxwdHIpKQotICAgICAgICBDRlJlbGVhc2UobmV3Rm9udCk7Cisg
ICAgYXV0byBuZXdGb250ID0gYWRvcHRDRihDVEZvbnRDcmVhdGVXaXRoRm9udERlc2NyaXB0b3Io
ZGVzY3JpcHRvci5nZXQoKSwgc2l6ZSwgbnVsbHB0cikpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q0dXaW4uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDR1dpbi5jcHAKaW5kZXgg
NTNhYzdlMjAwMThhMWI4YTk1MGRjNzQ5MjY4NWQyNzVmOGFiYjE2ZS4uYzE5ZTc0MTU1N2MzMDhj
OTQxZTRlZjcxNWUzZGI0NjU5NGQxODViNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDR1dpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDR1dpbi5jcHAKQEAgLTQwOSw1MCArNDA5LDM2IEBAIHZv
aWQgRm9udENhc2NhZGU6OmdldFBsYXRmb3JtR2x5cGhBZHZhbmNlcyhDR0ZvbnRSZWYgZm9udCwg
Y29uc3QgQ0dBZmZpbmVUcmFuc2ZvCiAKICAgICAvLyA8cmRhcjovL3Byb2JsZW0vNzc2MTE2NT4g
VGhlIEdESSBiYWNrIGVuZCBpbiBDb3JlIEdyYXBoaWNzIHNvbWV0aW1lcyByZXR1cm5zIGFkdmFu
Y2VzIHRoYXQKICAgICAvLyBkaWZmZXIgZnJvbSB3aGF0IHRoZSBmb250J3MgaG10eCB0YWJsZSBz
cGVjaWZpZXMuIFRoZSBmb2xsb3dpbmcgY29kZSBjb3JyZWN0cyB0aGF0LgotICAgIENGRGF0YVJl
ZiBobXR4VGFibGUgPSBDR0ZvbnRDb3B5VGFibGVGb3JUYWcoZm9udCwgJ2htdHgnKTsKKyAgICBh
dXRvIGhtdHhUYWJsZSA9IGFkb3B0Q0YoQ0dGb250Q29weVRhYmxlRm9yVGFnKGZvbnQsICdobXR4
JykpOwogICAgIGlmICghaG10eFRhYmxlKQogICAgICAgICByZXR1cm47Ci0gICAgQ0ZEYXRhUmVm
IGhoZWFUYWJsZSA9IENHRm9udENvcHlUYWJsZUZvclRhZyhmb250LCAnaGhlYScpOwotICAgIGlm
ICghaGhlYVRhYmxlKSB7Ci0gICAgICAgIENGUmVsZWFzZShobXR4VGFibGUpOworICAgIGF1dG8g
aGhlYVRhYmxlID0gYWRvcHRDRihDR0ZvbnRDb3B5VGFibGVGb3JUYWcoZm9udCwgJ2hoZWEnKSk7
CisgICAgaWYgKCFoaGVhVGFibGUpCiAgICAgICAgIHJldHVybjsKLSAgICB9CiAKICAgICBjb25z
dCBDRkluZGV4IGhoZWFUYWJsZVNpemUgPSAzNjsKICAgICBjb25zdCBwdHJkaWZmX3QgaGhlYVRh
YmxlTnVtYmVyT2ZITWV0cmljc09mZnNldCA9IDM0OwotICAgIGlmIChDRkRhdGFHZXRMZW5ndGgo
aGhlYVRhYmxlKSA8IGhoZWFUYWJsZVNpemUpIHsKLSAgICAgICAgQ0ZSZWxlYXNlKGhtdHhUYWJs
ZSk7Ci0gICAgICAgIENGUmVsZWFzZShoaGVhVGFibGUpOworICAgIGlmIChDRkRhdGFHZXRMZW5n
dGgoaGhlYVRhYmxlLmdldCgpKSA8IGhoZWFUYWJsZVNpemUpCiAgICAgICAgIHJldHVybjsKLSAg
ICB9CiAKLSAgICB1bnNpZ25lZCBzaG9ydCBudW1iZXJPZkhNZXRyaWNzID0gKnJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgdW5zaWduZWQgc2hvcnQqPihDRkRhdGFHZXRCeXRlUHRyKGhoZWFUYWJsZSkg
KyBoaGVhVGFibGVOdW1iZXJPZkhNZXRyaWNzT2Zmc2V0KTsKKyAgICB1bnNpZ25lZCBzaG9ydCBu
dW1iZXJPZkhNZXRyaWNzID0gKnJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdW5zaWduZWQgc2hvcnQq
PihDRkRhdGFHZXRCeXRlUHRyKGhoZWFUYWJsZS5nZXQoKSkgKyBoaGVhVGFibGVOdW1iZXJPZkhN
ZXRyaWNzT2Zmc2V0KTsKICAgICBudW1iZXJPZkhNZXRyaWNzID0gKChudW1iZXJPZkhNZXRyaWNz
ICYgMHhGRikgPDwgOCkgfCAobnVtYmVyT2ZITWV0cmljcyA+PiA4KTsKLSAgICBpZiAoIW51bWJl
ck9mSE1ldHJpY3MpIHsKLSAgICAgICAgQ0ZSZWxlYXNlKGhtdHhUYWJsZSk7Ci0gICAgICAgIENG
UmVsZWFzZShoaGVhVGFibGUpOworICAgIGlmICghbnVtYmVyT2ZITWV0cmljcykKICAgICAgICAg
cmV0dXJuOwotICAgIH0KIAogICAgIGlmIChnbHlwaCA+PSBudW1iZXJPZkhNZXRyaWNzKQogICAg
ICAgICBnbHlwaCA9IG51bWJlck9mSE1ldHJpY3MgLSAxOwogCi0gICAgaWYgKENGRGF0YUdldExl
bmd0aChobXR4VGFibGUpIDwgNCAqIChnbHlwaCArIDEpKSB7Ci0gICAgICAgIENGUmVsZWFzZSho
bXR4VGFibGUpOwotICAgICAgICBDRlJlbGVhc2UoaGhlYVRhYmxlKTsKKyAgICBpZiAoQ0ZEYXRh
R2V0TGVuZ3RoKGhtdHhUYWJsZS5nZXQoKSkgPCA0ICogKGdseXBoICsgMSkpCiAgICAgICAgIHJl
dHVybjsKLSAgICB9CiAKLSAgICB1bnNpZ25lZCBzaG9ydCBhZHZhbmNlSW5EZXNpZ25Vbml0cyA9
ICpyZWludGVycHJldF9jYXN0PGNvbnN0IHVuc2lnbmVkIHNob3J0Kj4oQ0ZEYXRhR2V0Qnl0ZVB0
cihobXR4VGFibGUpICsgNCAqIGdseXBoKTsKKyAgICB1bnNpZ25lZCBzaG9ydCBhZHZhbmNlSW5E
ZXNpZ25Vbml0cyA9ICpyZWludGVycHJldF9jYXN0PGNvbnN0IHVuc2lnbmVkIHNob3J0Kj4oQ0ZE
YXRhR2V0Qnl0ZVB0cihobXR4VGFibGUuZ2V0KCkpICsgNCAqIGdseXBoKTsKICAgICBhZHZhbmNl
SW5EZXNpZ25Vbml0cyA9ICgoYWR2YW5jZUluRGVzaWduVW5pdHMgJiAweEZGKSA8PCA4KSB8IChh
ZHZhbmNlSW5EZXNpZ25Vbml0cyA+PiA4KTsKICAgICBDR1NpemUgaG9yaXpvbnRhbEFkdmFuY2Ug
PSBDR1NpemVNYWtlKHN0YXRpY19jYXN0PENHRmxvYXQ+KGFkdmFuY2VJbkRlc2lnblVuaXRzKSAv
IENHRm9udEdldFVuaXRzUGVyRW0oZm9udCksIDApOwogICAgIGhvcml6b250YWxBZHZhbmNlID0g
Q0dTaXplQXBwbHlBZmZpbmVUcmFuc2Zvcm0oaG9yaXpvbnRhbEFkdmFuY2UsIG0pOwogICAgIGFk
dmFuY2Uud2lkdGggPSBob3Jpem9udGFsQWR2YW5jZS53aWR0aDsKICAgICBpZiAoIShzdHlsZSAm
IGtDR0ZvbnRSZW5kZXJpbmdTdHlsZVN1YnBpeGVsUG9zaXRpb25pbmcpKQogICAgICAgICBhZHZh
bmNlLndpZHRoID0gcm91bmRmKGFkdmFuY2Uud2lkdGgpOwotCi0gICAgQ0ZSZWxlYXNlKGhoZWFU
YWJsZSk7Ci0gICAgQ0ZSZWxlYXNlKGhtdHhUYWJsZSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRDR1dpbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0
Q0dXaW4uY3BwCmluZGV4IDMxN2Y4ZDA0NWQzMjkzYTc4YzdhMWI3NTU0NDZkMDVkZTQ5YTI3YzMu
LmNlZGIwMmViOWUxZjk1YmY5MDMzMTEzYmE2MDVkOWNjZmZmODY5ZTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRDR1dpbi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29u
dGV4dENHV2luLmNwcApAQCAtMTA3LDE2ICsxMDcsMTQgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6
OnJlbGVhc2VXaW5kb3dzQ29udGV4dChIREMgaGRjLCBjb25zdCBJbnRSZWN0JiBkc3RSZWN0LCBi
b28KIAogICAgIEFTU0VSVChwaXhlbERhdGEuYml0c1BlclBpeGVsKCkgPT0gMzIpOwogCi0gICAg
Q0dDb250ZXh0UmVmIGJpdG1hcENvbnRleHQgPSBDR0JpdG1hcENvbnRleHRDcmVhdGUocGl4ZWxE
YXRhLmJ1ZmZlcigpLCBwaXhlbERhdGEuc2l6ZSgpLndpZHRoKCksIHBpeGVsRGF0YS5zaXplKCku
aGVpZ2h0KCksIDgsCisgICAgYXV0byBiaXRtYXBDb250ZXh0ID0gYWRvcHRDRihDR0JpdG1hcENv
bnRleHRDcmVhdGUocGl4ZWxEYXRhLmJ1ZmZlcigpLCBwaXhlbERhdGEuc2l6ZSgpLndpZHRoKCks
IHBpeGVsRGF0YS5zaXplKCkuaGVpZ2h0KCksIDgsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGl4ZWxEYXRhLmJ5dGVzUGVyUm93KCksIHNS
R0JDb2xvclNwYWNlUmVmKCksIGtDR0JpdG1hcEJ5dGVPcmRlcjMyTGl0dGxlIHwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3VwcG9ydEFs
cGhhQmxlbmQgPyBrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZEZpcnN0IDoga0NHSW1hZ2VBbHBo
YU5vbmVTa2lwRmlyc3QpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAoc3VwcG9ydEFscGhhQmxlbmQgPyBrQ0dJbWFnZUFscGhhUHJlbXVs
dGlwbGllZEZpcnN0IDoga0NHSW1hZ2VBbHBoYU5vbmVTa2lwRmlyc3QpKSk7CiAKLSAgICBDR0lt
YWdlUmVmIGltYWdlID0gQ0dCaXRtYXBDb250ZXh0Q3JlYXRlSW1hZ2UoYml0bWFwQ29udGV4dCk7
Ci0gICAgQ0dDb250ZXh0RHJhd0ltYWdlKG1fZGF0YS0+bV9jZ0NvbnRleHQuZ2V0KCksIGRzdFJl
Y3QsIGltYWdlKTsKKyAgICBhdXRvIGltYWdlID0gYWRvcHRDRihDR0JpdG1hcENvbnRleHRDcmVh
dGVJbWFnZShiaXRtYXBDb250ZXh0LmdldCgpKSk7CisgICAgQ0dDb250ZXh0RHJhd0ltYWdlKG1f
ZGF0YS0+bV9jZ0NvbnRleHQuZ2V0KCksIGRzdFJlY3QsIGltYWdlLmdldCgpKTsKICAgICAKICAg
ICAvLyBEZWxldGUgYWxsIG91ciBqdW5rLgotICAgIENHSW1hZ2VSZWxlYXNlKGltYWdlKTsKLSAg
ICBDR0NvbnRleHRSZWxlYXNlKGJpdG1hcENvbnRleHQpOwogICAgIDo6RGVsZXRlREMoaGRjKTsK
IH0KIApAQCAtMTQ3LDE2ICsxNDUsMTYgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdGb2N1
c1JpbmcoY29uc3QgVmVjdG9yPEZsb2F0UmVjdD4mIHJlY3RzLCBmbG9hdCB3aWR0aCwKICAgICBv
ZmZzZXQgKz0gcmFkaXVzOwogICAgIENHQ29sb3JSZWYgY29sb3JSZWYgPSBjb2xvci5pc1ZhbGlk
KCkgPyBjYWNoZWRDR0NvbG9yKGNvbG9yKSA6IG51bGxwdHI7CiAKLSAgICBDR011dGFibGVQYXRo
UmVmIGZvY3VzUmluZ1BhdGggPSBDR1BhdGhDcmVhdGVNdXRhYmxlKCk7CisgICAgYXV0byBmb2N1
c1JpbmdQYXRoID0gYWRvcHRDRihDR1BhdGhDcmVhdGVNdXRhYmxlKCkpOwogICAgIHVuc2lnbmVk
IHJlY3RDb3VudCA9IHJlY3RzLnNpemUoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
cmVjdENvdW50OyBpKyspCi0gICAgICAgIENHUGF0aEFkZFJlY3QoZm9jdXNSaW5nUGF0aCwgMCwg
Q0dSZWN0SW5zZXQocmVjdHNbaV0sIC1vZmZzZXQsIC1vZmZzZXQpKTsKKyAgICAgICAgQ0dQYXRo
QWRkUmVjdChmb2N1c1JpbmdQYXRoLmdldCgpLCAwLCBDR1JlY3RJbnNldChyZWN0c1tpXSwgLW9m
ZnNldCwgLW9mZnNldCkpOwogCiAgICAgQ0dDb250ZXh0UmVmIGNvbnRleHQgPSBwbGF0Zm9ybUNv
bnRleHQoKTsKICAgICBDR0NvbnRleHRTYXZlR1N0YXRlKGNvbnRleHQpOwogCiAgICAgQ0dDb250
ZXh0QmVnaW5QYXRoKGNvbnRleHQpOwotICAgIENHQ29udGV4dEFkZFBhdGgoY29udGV4dCwgZm9j
dXNSaW5nUGF0aCk7CisgICAgQ0dDb250ZXh0QWRkUGF0aChjb250ZXh0LCBmb2N1c1JpbmdQYXRo
LmdldCgpKTsKIAogICAgIC8vIEZJWE1FOiBXZSBjbGVhciB0aGUgZmlsbCBjb2xvciBoZXJlIHRv
IGF2b2lkIGdldHRpbmcgYSBibGFjayBmaWxsIHdoZW4gZHJhd2luZyB0aGUgZm9jdXMgcmluZy4K
ICAgICAvLyBGaW5kIG91dCBmcm9tIENHIGlmIHRoaXMgaXMgdGhlaXIgYnVnLgpAQCAtMTY1LDgg
KzE2Myw2IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3Rm9jdXNSaW5nKGNvbnN0IFZlY3Rv
cjxGbG9hdFJlY3Q+JiByZWN0cywgZmxvYXQgd2lkdGgsCiAgICAgQ0dDb250ZXh0U2V0Rm9jdXNS
aW5nV2l0aENvbG9yKGNvbnRleHQsIHJhZGl1cywgY29sb3JSZWYsIDAsIChDRkRpY3Rpb25hcnlS
ZWYpMCk7CiAgICAgQ0dDb250ZXh0RmlsbFBhdGgoY29udGV4dCk7CiAKLSAgICBDR1BhdGhSZWxl
YXNlKGZvY3VzUmluZ1BhdGgpOwotCiAgICAgQ0dDb250ZXh0UmVzdG9yZUdTdGF0ZShjb250ZXh0
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0ltYWdlQ0dXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0lt
YWdlQ0dXaW4uY3BwCmluZGV4IDZkYWJmMjQxM2ZlZDM1NzU5YWIwMzk1M2RhNDM3MjJjOGQ0MTZm
ZDYuLmY4YTEwZDVjNDM2ZTcwNjA4OTg3MDdiYThiNjU0NjQxY2UyYmRmNTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNHV2luLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VDR1dpbi5jcHAKQEAg
LTcwLDEwICs3MCwxMCBAQCBib29sIEJpdG1hcEltYWdlOjpnZXRIQklUTUFQT2ZTaXplKEhCSVRN
QVAgYm1wLCBjb25zdCBJbnRTaXplKiBzaXplKQogICAgIEFTU0VSVChibXBJbmZvLmJtQml0c1Bp
eGVsID09IDMyKTsKICAgICBpbnQgYnVmZmVyU2l6ZSA9IGJtcEluZm8uYm1XaWR0aEJ5dGVzICog
Ym1wSW5mby5ibUhlaWdodDsKICAgICAKLSAgICBDR0NvbnRleHRSZWYgY2dDb250ZXh0ID0gQ0dC
aXRtYXBDb250ZXh0Q3JlYXRlKGJtcEluZm8uYm1CaXRzLCBibXBJbmZvLmJtV2lkdGgsIGJtcElu
Zm8uYm1IZWlnaHQsCi0gICAgICAgIDgsIGJtcEluZm8uYm1XaWR0aEJ5dGVzLCBzUkdCQ29sb3JT
cGFjZVJlZigpLCBrQ0dCaXRtYXBCeXRlT3JkZXIzMkxpdHRsZSB8IGtDR0ltYWdlQWxwaGFQcmVt
dWx0aXBsaWVkRmlyc3QpOworICAgIGF1dG8gY2dDb250ZXh0ID0gYWRvcHRDRihDR0JpdG1hcENv
bnRleHRDcmVhdGUoYm1wSW5mby5ibUJpdHMsIGJtcEluZm8uYm1XaWR0aCwgYm1wSW5mby5ibUhl
aWdodCwKKyAgICAgICAgOCwgYm1wSW5mby5ibVdpZHRoQnl0ZXMsIHNSR0JDb2xvclNwYWNlUmVm
KCksIGtDR0JpdG1hcEJ5dGVPcmRlcjMyTGl0dGxlIHwga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxp
ZWRGaXJzdCkpOwogICAKLSAgICBHcmFwaGljc0NvbnRleHQgZ2MoY2dDb250ZXh0KTsKKyAgICBH
cmFwaGljc0NvbnRleHQgZ2MoY2dDb250ZXh0LmdldCgpKTsKIAogICAgIEZsb2F0U2l6ZSBpbWFn
ZVNpemUgPSBCaXRtYXBJbWFnZTo6c2l6ZSgpOwogICAgIGlmIChzaXplKQpAQCAtODEsOSArODEs
NiBAQCBib29sIEJpdG1hcEltYWdlOjpnZXRIQklUTUFQT2ZTaXplKEhCSVRNQVAgYm1wLCBjb25z
dCBJbnRTaXplKiBzaXplKQogICAgIGVsc2UKICAgICAgICAgZHJhdyhnYywgRmxvYXRSZWN0KDAu
MGYsIDAuMGYsIGJtcEluZm8uYm1XaWR0aCwgYm1wSW5mby5ibUhlaWdodCksIEZsb2F0UmVjdCgw
LjBmLCAwLjBmLCBpbWFnZVNpemUud2lkdGgoKSwgaW1hZ2VTaXplLmhlaWdodCgpKSwgeyBDb21w
b3NpdGVPcGVyYXRvcjo6Q29weSB9KTsKIAotICAgIC8vIERvIGNsZWFudXAKLSAgICBDR0NvbnRl
eHRSZWxlYXNlKGNnQ29udGV4dCk7Ci0KICAgICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1VzZXJBZ2VudElPUy5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2lvcy9Vc2VyQWdlbnRJT1MubW0KaW5kZXggM2E2MzQ0Y2VmNDM3ZjQz
NTUxMmU0Yjk0MDU1NzQ5NzE0OTMxZTJiYS4uM2I2ZGUxZWMwZjNmYzVkMTQyZGNlYzZhNWFhNmQz
MWNjOGQ4MGU1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1VzZXJB
Z2VudElPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVXNlckFnZW50SU9T
Lm1tCkBAIC04OSwxMSArODksMTAgQEAgU3RyaW5nIHN0YW5kYXJkVXNlckFnZW50V2l0aEFwcGxp
Y2F0aW9uTmFtZShjb25zdCBTdHJpbmcmIGFwcGxpY2F0aW9uTmFtZSwgY29uc3QKICAgICAvLyBG
SVhNRTogV2Ugc2hvdWxkIGRlcHJlY2F0ZSBhbmQgZXZlbnR1YWxseSByZW1vdmUgdGhpcyBvYnNv
bGV0ZSBVQSBvdmVycmlkZTsKICAgICAvLyBzZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIxNzkyNyBmb3IgZGV0YWlscy4KICAgICAvLyBDaGVjayB0byBzZWUgaWYg
dGhlcmUgaXMgYSB1c2VyIGFnZW50IG92ZXJyaWRlIGZvciBhbGwgV2ViS2l0IGNsaWVudHMuCi0g
ICAgQ0ZQcm9wZXJ0eUxpc3RSZWYgb3ZlcnJpZGUgPSBDRlByZWZlcmVuY2VzQ29weUFwcFZhbHVl
KENGU1RSKCJVc2VyQWdlbnQiKSwgQ0ZTVFIoImNvbS5hcHBsZS5XZWJGb3VuZGF0aW9uIikpOwor
ICAgIGF1dG8gb3ZlcnJpZGUgPSBhZG9wdENGKENGUHJlZmVyZW5jZXNDb3B5QXBwVmFsdWUoQ0ZT
VFIoIlVzZXJBZ2VudCIpLCBDRlNUUigiY29tLmFwcGxlLldlYkZvdW5kYXRpb24iKSkpOwogICAg
IGlmIChvdmVycmlkZSkgewotICAgICAgICBpZiAoQ0ZHZXRUeXBlSUQob3ZlcnJpZGUpID09IENG
U3RyaW5nR2V0VHlwZUlEKCkpCi0gICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8TlNTdHJp
bmcgKj4oQ0ZCcmlkZ2luZ1JlbGVhc2Uob3ZlcnJpZGUpKTsKLSAgICAgICAgQ0ZSZWxlYXNlKG92
ZXJyaWRlKTsKKyAgICAgICAgaWYgKENGR2V0VHlwZUlEKG92ZXJyaWRlLmdldCgpKSA9PSBDRlN0
cmluZ0dldFR5cGVJRCgpKQorICAgICAgICAgICAgcmV0dXJuIChfX2JyaWRnZSBOU1N0cmluZyAq
KW92ZXJyaWRlLmdldCgpOwogICAgIH0KIAogICAgIFN0cmluZyBvc1ZlcnNpb24gPSB1c2VyQWdl
bnRPU1ZlcnNpb24uaXNFbXB0eSgpICA/IHN5c3RlbU1hcmtldGluZ1ZlcnNpb25Gb3JVc2VyQWdl
bnRTdHJpbmcoKSA6IHVzZXJBZ2VudE9TVmVyc2lvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy93YWsvV2ViQ29yZVRocmVhZC5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy93YWsvV2ViQ29yZVRocmVhZC5tbQppbmRleCA2NjAwNzZhZGY3NjYzNzRmNDlk
NWVlNWE5YjI5M2U5OWQ2NGZjZGRjLi45MzJjNzgyYzZiY2IzYjJkNjdlOTM0MDJlYzQyMWEzNDJk
MzZiZjQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dlYkNv
cmVUaHJlYWQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XZWJDb3Jl
VGhyZWFkLm1tCkBAIC0yNjYsMTAgKzI2Niw4IEBAIHN0YXRpYyB2b2lkIFNlbmREZWxlZ2F0ZU1l
c3NhZ2UoUmV0YWluUHRyPE5TSW52b2NhdGlvbj4mJiBpbnZvY2F0aW9uKQogICAgICAgICAgICAg
ICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgZGVsZWdhdGVJbmZvcm1hdGlvbiA9IE5TU3Ry
aW5nRnJvbVNlbGVjdG9yKFtkZWxlZ2F0ZUludm9jYXRpb24oKSBzZWxlY3Rvcl0pOwogICAgIAot
ICAgICAgICAgICAgICAgIENGU3RyaW5nUmVmIG1vZGUgPSBDRlJ1bkxvb3BDb3B5Q3VycmVudE1v
ZGUoQ0ZSdW5Mb29wR2V0TWFpbigpKTsKLSAgICAgICAgICAgICAgICBOU0xvZyhAIiVzOiBkZWxl
Z2F0ZSAoJUApIGZhaWxlZCB0byByZXR1cm4gYWZ0ZXIgd2FpdGluZyAlZiBzZWNvbmRzLiBtYWlu
IHJ1biBsb29wIG1vZGU6ICVAIiwgX19QUkVUVFlfRlVOQ1RJT05fXywgZGVsZWdhdGVJbmZvcm1h
dGlvbiwgRGVsZWdhdGVXYWl0SW50ZXJ2YWwuc2Vjb25kcygpLCBtb2RlKTsKLSAgICAgICAgICAg
ICAgICBpZiAobW9kZSkKLSAgICAgICAgICAgICAgICAgICAgQ0ZSZWxlYXNlKG1vZGUpOworICAg
ICAgICAgICAgICAgIGF1dG8gbW9kZSA9IGFkb3B0Q0YoQ0ZSdW5Mb29wQ29weUN1cnJlbnRNb2Rl
KENGUnVuTG9vcEdldE1haW4oKSkpOworICAgICAgICAgICAgICAgIE5TTG9nKEAiJXM6IGRlbGVn
YXRlICglQCkgZmFpbGVkIHRvIHJldHVybiBhZnRlciB3YWl0aW5nICVmIHNlY29uZHMuIG1haW4g
cnVuIGxvb3AgbW9kZTogJUAiLCBfX1BSRVRUWV9GVU5DVElPTl9fLCBkZWxlZ2F0ZUluZm9ybWF0
aW9uLCBEZWxlZ2F0ZVdhaXRJbnRlcnZhbC5zZWNvbmRzKCksIG1vZGUuZ2V0KCkpOwogICAgICAg
ICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGRlbGVnYXRlTG9jay51bmxvY2soKTsKQEAgLTYz
NCwxNiArNjMyLDE0IEBAIHN0YXRpYyB2b2lkKiBSdW5XZWJUaHJlYWQodm9pZCopCiAgICAgd2Vi
VGhyZWFkUnVuTG9vcCA9IENGUnVuTG9vcEdldEN1cnJlbnQoKTsKICAgICB3ZWJUaHJlYWROU1J1
bkxvb3AoKSA9IFtOU1J1bkxvb3AgY3VycmVudFJ1bkxvb3BdOwogCi0gICAgQ0ZSdW5Mb29wT2Jz
ZXJ2ZXJSZWYgd2ViUnVuTG9vcExvY2tPYnNlcnZlclJlZiA9IENGUnVuTG9vcE9ic2VydmVyQ3Jl
YXRlKG51bGxwdHIsIGtDRlJ1bkxvb3BCZWZvcmVUaW1lcnMgfCBrQ0ZSdW5Mb29wQmVmb3JlU291
cmNlcyB8IGtDRlJ1bkxvb3BBZnRlcldhaXRpbmcsIFlFUywgMCwgV2ViUnVuTG9vcExvY2ssIG51
bGxwdHIpOwotICAgIENGUnVuTG9vcEFkZE9ic2VydmVyKHdlYlRocmVhZFJ1bkxvb3AsIHdlYlJ1
bkxvb3BMb2NrT2JzZXJ2ZXJSZWYsIGtDRlJ1bkxvb3BDb21tb25Nb2Rlcyk7Ci0gICAgQ0ZSZWxl
YXNlKHdlYlJ1bkxvb3BMb2NrT2JzZXJ2ZXJSZWYpOworICAgIGF1dG8gd2ViUnVuTG9vcExvY2tP
YnNlcnZlclJlZiA9IGFkb3B0Q0YoQ0ZSdW5Mb29wT2JzZXJ2ZXJDcmVhdGUobnVsbHB0ciwga0NG
UnVuTG9vcEJlZm9yZVRpbWVycyB8IGtDRlJ1bkxvb3BCZWZvcmVTb3VyY2VzIHwga0NGUnVuTG9v
cEFmdGVyV2FpdGluZywgWUVTLCAwLCBXZWJSdW5Mb29wTG9jaywgbnVsbHB0cikpOworICAgIENG
UnVuTG9vcEFkZE9ic2VydmVyKHdlYlRocmVhZFJ1bkxvb3AsIHdlYlJ1bkxvb3BMb2NrT2JzZXJ2
ZXJSZWYuZ2V0KCksIGtDRlJ1bkxvb3BDb21tb25Nb2Rlcyk7CiAgICAgCiAgICAgV2ViVGhyZWFk
SW5pdFJ1blF1ZXVlKCk7CiAKICAgICAvLyBXZSBtdXN0IGhhdmUgdGhlIGxvY2sgd2hlbiBDQSBw
YWludHMgaW4gdGhlIHdlYiB0aHJlYWQuIENBIGNvbW1pdHMgYXQgMjAwMDAwMCBzbyB3ZSB1c2Ug
bGFyZ2VyIG9yZGVyIG51bWJlciB0aGFuIHRoYXQgdG8gZnJlZSB0aGUgbG9jay4KLSAgICBDRlJ1
bkxvb3BPYnNlcnZlclJlZiB3ZWJSdW5Mb29wVW5sb2NrT2JzZXJ2ZXJSZWYgPSBDRlJ1bkxvb3BP
YnNlcnZlckNyZWF0ZShudWxscHRyLCBrQ0ZSdW5Mb29wQmVmb3JlV2FpdGluZyB8IGtDRlJ1bkxv
b3BFeGl0LCBZRVMsIDI1MDAwMDAsIFdlYlJ1bkxvb3BVbmxvY2ssIG51bGxwdHIpOyAgICAKLSAg
ICBDRlJ1bkxvb3BBZGRPYnNlcnZlcih3ZWJUaHJlYWRSdW5Mb29wLCB3ZWJSdW5Mb29wVW5sb2Nr
T2JzZXJ2ZXJSZWYsIGtDRlJ1bkxvb3BDb21tb25Nb2Rlcyk7Ci0gICAgQ0ZSZWxlYXNlKHdlYlJ1
bkxvb3BVbmxvY2tPYnNlcnZlclJlZik7ICAgIAorICAgIGF1dG8gd2ViUnVuTG9vcFVubG9ja09i
c2VydmVyUmVmID0gYWRvcHRDRihDRlJ1bkxvb3BPYnNlcnZlckNyZWF0ZShudWxscHRyLCBrQ0ZS
dW5Mb29wQmVmb3JlV2FpdGluZyB8IGtDRlJ1bkxvb3BFeGl0LCBZRVMsIDI1MDAwMDAsIFdlYlJ1
bkxvb3BVbmxvY2ssIG51bGxwdHIpKTsKKyAgICBDRlJ1bkxvb3BBZGRPYnNlcnZlcih3ZWJUaHJl
YWRSdW5Mb29wLCB3ZWJSdW5Mb29wVW5sb2NrT2JzZXJ2ZXJSZWYuZ2V0KCksIGtDRlJ1bkxvb3BD
b21tb25Nb2Rlcyk7CiAKICAgICBDRlJ1bkxvb3BTb3VyY2VDb250ZXh0IFJlbGVhc2VTb3VyY2VD
b250ZXh0ID0gezAsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIs
IG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIEhhbmRsZVdlYlRocmVhZFJlbGVhc2VTb3VyY2V9
OwogICAgIFdlYlRocmVhZFJlbGVhc2VTb3VyY2UgPSBDRlJ1bkxvb3BTb3VyY2VDcmVhdGUobnVs
bHB0ciwgLTEsICZSZWxlYXNlU291cmNlQ29udGV4dCk7CkBAIC04MjMsOSArODE5LDggQEAgdm9p
ZCBXZWJUaHJlYWRVbmxvY2tHdWFyZEZvck1haWwodm9pZCkKIHsKICAgICBBU1NFUlQoIVdlYlRo
cmVhZElzQ3VycmVudCgpKTsKIAotICAgIENGUnVuTG9vcE9ic2VydmVyUmVmIG1haW5SdW5Mb29w
VW5sb2NrR3VhcmRPYnNlcnZlciA9IENGUnVuTG9vcE9ic2VydmVyQ3JlYXRlKG51bGxwdHIsIGtD
RlJ1bkxvb3BFbnRyeSwgWUVTLCAwLCBNYWluUnVuTG9vcFVubG9ja0d1YXJkLCBudWxscHRyKTsK
LSAgICBDRlJ1bkxvb3BBZGRPYnNlcnZlcihDRlJ1bkxvb3BHZXRNYWluKCksIG1haW5SdW5Mb29w
VW5sb2NrR3VhcmRPYnNlcnZlciwga0NGUnVuTG9vcENvbW1vbk1vZGVzKTsKLSAgICBDRlJlbGVh
c2UobWFpblJ1bkxvb3BVbmxvY2tHdWFyZE9ic2VydmVyKTsKKyAgICBhdXRvIG1haW5SdW5Mb29w
VW5sb2NrR3VhcmRPYnNlcnZlciA9IGFkb3B0Q0YoQ0ZSdW5Mb29wT2JzZXJ2ZXJDcmVhdGUobnVs
bHB0ciwga0NGUnVuTG9vcEVudHJ5LCBZRVMsIDAsIE1haW5SdW5Mb29wVW5sb2NrR3VhcmQsIG51
bGxwdHIpKTsKKyAgICBDRlJ1bkxvb3BBZGRPYnNlcnZlcihDRlJ1bkxvb3BHZXRNYWluKCksIG1h
aW5SdW5Mb29wVW5sb2NrR3VhcmRPYnNlcnZlci5nZXQoKSwga0NGUnVuTG9vcENvbW1vbk1vZGVz
KTsKIH0KIAogdm9pZCBfV2ViVGhyZWFkVW5sb2NrKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTWFjLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNYWMubW0KaW5k
ZXggMjk1OGYxYmNlMzllY2VjOTg2ZGI4ODUyOWYxNThkNzIyZmFkNjZjYS4uYTI4NWMyMmIyMjEx
Y2ZhNjkxYThlMjhiMmQ5MTA5NjlkOTkwNmU4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNYWMubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNYWMubW0KQEAg
LTIxNCwxMiArMjE0LDEyIEBAIFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI6On5QbGF0Zm9ybVNw
ZWVjaFN5bnRoZXNpemVyKCkKICAgICBbbV9wbGF0Zm9ybVNwZWVjaFdyYXBwZXIuZ2V0KCkgaW52
YWxpZGF0ZV07CiB9CiAKLXN0YXRpYyBOU0FycmF5ICpzcGVlY2hTeW50aGVzaXNHZXRWb2ljZUlk
ZW50aWZpZXJzKCkKK3N0YXRpYyBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gc3BlZWNoU3ludGhlc2lz
R2V0Vm9pY2VJZGVudGlmaWVycygpCiB7CiAgICAgLy8gR2V0IGFsbCB0aGUgdm9pY2VzIG9mZmVy
ZWQgYnkgVFRTLgogICAgIC8vIEJ5IGRlZmF1bHQgc3BlZWNoIG9ubHkgcmV0dXJucyAicHJlbWl1
bSIgdm9pY2VzLCB3aGljaCBkb2VzIG5vdCBpbmNsdWRlIGFsbCB0aGUKICAgICAvLyBpbnRlcm5h
dGlvbmFsIHZvaWNlcy4gVGhpcyBhbGxvd3MgdXMgdG8gb2ZmZXIgc3BlZWNoIHN5bnRoZXNpcyBm
b3IgYWxsIHN1cHBvcnRlZCBsYW5ndWFnZXMuCi0gICAgcmV0dXJuIENGQnJpZGdpbmdSZWxlYXNl
KENvcHlTcGVlY2hTeW50aGVzaXNWb2ljZXNGb3JNb2RlKChfX2JyaWRnZSBDRkFycmF5UmVmKUBb
IEAiVm9pY2VHcm91cERlZmF1bHQiLCBAIlZvaWNlR3JvdXBDb21wYWN0IiBdKSk7CisgICAgcmV0
dXJuIGFkb3B0Q0YoQ29weVNwZWVjaFN5bnRoZXNpc1ZvaWNlc0Zvck1vZGUoKF9fYnJpZGdlIENG
QXJyYXlSZWYpQFsgQCJWb2ljZUdyb3VwRGVmYXVsdCIsIEAiVm9pY2VHcm91cENvbXBhY3QiIF0p
KTsKIH0KIAogc3RhdGljIE5TU3RyaW5nICpzcGVlY2hTeW50aGVzaXNHZXREZWZhdWx0Vm9pY2VJ
ZGVudGlmaWVyRm9yTG9jYWxlKE5TTG9jYWxlICp1c2VyTG9jYWxlKQpAQCAtMjI3LDE1ICsyMjcs
MTUgQEAgc3RhdGljIE5TU3RyaW5nICpzcGVlY2hTeW50aGVzaXNHZXREZWZhdWx0Vm9pY2VJZGVu
dGlmaWVyRm9yTG9jYWxlKE5TTG9jYWxlICp1c2UKICAgICBpZiAoIXVzZXJMb2NhbGUpCiAgICAg
ICAgIHJldHVybiBuaWw7CiAKLSAgICByZXR1cm4gKF9fYnJpZGdlIE5TU3RyaW5nICopR2V0SWRl
bnRpZmllclN0cmluZ0ZvclByZWZlcnJlZFZvaWNlSW5MaXN0V2l0aExvY2FsZSgoX19icmlkZ2Ug
Q0ZBcnJheVJlZilzcGVlY2hTeW50aGVzaXNHZXRWb2ljZUlkZW50aWZpZXJzKCksIChfX2JyaWRn
ZSBDRkxvY2FsZVJlZil1c2VyTG9jYWxlKTsKKyAgICByZXR1cm4gKF9fYnJpZGdlIE5TU3RyaW5n
ICopR2V0SWRlbnRpZmllclN0cmluZ0ZvclByZWZlcnJlZFZvaWNlSW5MaXN0V2l0aExvY2FsZShz
cGVlY2hTeW50aGVzaXNHZXRWb2ljZUlkZW50aWZpZXJzKCkuZ2V0KCksIChfX2JyaWRnZSBDRkxv
Y2FsZVJlZil1c2VyTG9jYWxlKTsKIH0KIAogdm9pZCBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVy
Ojppbml0aWFsaXplVm9pY2VMaXN0KCkKIHsKLSAgICBOU0FycmF5ICphdmFpbGFibGVWb2ljZXMg
PSBzcGVlY2hTeW50aGVzaXNHZXRWb2ljZUlkZW50aWZpZXJzKCk7Ci0gICAgTlNVSW50ZWdlciBj
b3VudCA9IFthdmFpbGFibGVWb2ljZXMgY291bnRdOworICAgIGF1dG8gYXZhaWxhYmxlVm9pY2Vz
ID0gc3BlZWNoU3ludGhlc2lzR2V0Vm9pY2VJZGVudGlmaWVycygpOworICAgIE5TVUludGVnZXIg
Y291bnQgPSBbKF9fYnJpZGdlIE5TQXJyYXkgKilhdmFpbGFibGVWb2ljZXMuZ2V0KCkgY291bnRd
OwogICAgIGZvciAoTlNVSW50ZWdlciBrID0gMDsgayA8IGNvdW50OyBrKyspIHsKLSAgICAgICAg
TlNTdHJpbmcgKnZvaWNlTmFtZSA9IFthdmFpbGFibGVWb2ljZXMgb2JqZWN0QXRJbmRleDprXTsK
KyAgICAgICAgTlNTdHJpbmcgKnZvaWNlTmFtZSA9IFsoX19icmlkZ2UgTlNBcnJheSAqKWF2YWls
YWJsZVZvaWNlcy5nZXQoKSBvYmplY3RBdEluZGV4OmtdOwogICAgICAgICBOU0RpY3Rpb25hcnkg
KmF0dHJpYnV0ZXMgPSBbTlNTcGVlY2hTeW50aGVzaXplciBhdHRyaWJ1dGVzRm9yVm9pY2U6dm9p
Y2VOYW1lXTsKIAogICAgICAgICBOU1N0cmluZyAqdm9pY2VVUkkgPSBbYXR0cmlidXRlcyBvYmpl
Y3RGb3JLZXk6TlNWb2ljZUlkZW50aWZpZXJdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1BsdWdpbkJsb2NrbGlzdC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9QbHVnaW5CbG9ja2xpc3QubW0KaW5kZXggYTgwYjRhZmVjNzYxZDg3OTg3ZmY5MTIwNzM0
NjBiOTM5ZTQwZjc0Zi4uMTM2ZjZlZGY2OWI0ZGM2ZGQ3OTJiYTEzYzRjOGZjZGVjOGQ4ZTQxYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsdWdpbkJsb2NrbGlzdC5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGx1Z2luQmxvY2tsaXN0Lm1tCkBA
IC02OSw4ICs2OSw4IEBAIGJvb2wgUGx1Z2luQmxvY2tsaXN0Ojppc1BsdWdpblVwZGF0ZUF2YWls
YWJsZShOU1N0cmluZyAqYnVuZGxlSWRlbnRpZmllcikKIAogc3RkOjp1bmlxdWVfcHRyPFBsdWdp
bkJsb2NrbGlzdD4gUGx1Z2luQmxvY2tsaXN0OjpjcmVhdGUoTlNEaWN0aW9uYXJ5ICpwcm9wZXJ0
eUxpc3QpCiB7Ci0gICAgQ0ZEaWN0aW9uYXJ5UmVmIHN5c3RlbVZlcnNpb25EaWN0aW9uYXJ5ID0g
X0NGQ29weVN5c3RlbVZlcnNpb25EaWN0aW9uYXJ5KCk7Ci0gICAgQ0ZTdHJpbmdSZWYgb3NWZXJz
aW9uID0gc3RhdGljX2Nhc3Q8Q0ZTdHJpbmdSZWY+KENGRGljdGlvbmFyeUdldFZhbHVlKHN5c3Rl
bVZlcnNpb25EaWN0aW9uYXJ5LCBfa0NGU3lzdGVtVmVyc2lvblByb2R1Y3RWZXJzaW9uS2V5KSk7
CisgICAgYXV0byBzeXN0ZW1WZXJzaW9uRGljdGlvbmFyeSA9IGFkb3B0Q0YoX0NGQ29weVN5c3Rl
bVZlcnNpb25EaWN0aW9uYXJ5KCkpOworICAgIENGU3RyaW5nUmVmIG9zVmVyc2lvbiA9IHN0YXRp
Y19jYXN0PENGU3RyaW5nUmVmPihDRkRpY3Rpb25hcnlHZXRWYWx1ZShzeXN0ZW1WZXJzaW9uRGlj
dGlvbmFyeS5nZXQoKSwgX2tDRlN5c3RlbVZlcnNpb25Qcm9kdWN0VmVyc2lvbktleSkpOwogCiAg
ICAgTlNEaWN0aW9uYXJ5ICpkaWN0aW9uYXJ5ID0gW3Byb3BlcnR5TGlzdCBvYmplY3RGb3JLZXk6
QCJQbHVnSW5CbG9ja2xpc3QiXTsKIApAQCAtMTEyLDggKzExMiw2IEBAIHN0ZDo6dW5pcXVlX3B0
cjxQbHVnaW5CbG9ja2xpc3Q+IFBsdWdpbkJsb2NrbGlzdDo6Y3JlYXRlKE5TRGljdGlvbmFyeSAq
cHJvcGVydHlMCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBDRlJlbGVhc2Uoc3lzdGVtVmVyc2lv
bkRpY3Rpb25hcnkpOwotCiAgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxQbHVnaW5CbG9ja2xp
c3Q+KG5ldyBQbHVnaW5CbG9ja2xpc3QoYnVuZGxlSURUb01pbmltdW1TZWN1cmVWZXJzaW9uLCBi
dW5kbGVJRFRvTWluaW11bUNvbXBhdGlibGVWZXJzaW9uLCBidW5kbGVJRFRvQmxvY2tlZFZlcnNp
b25zLCBidW5kbGVJRHNXaXRoQXZhaWxhYmxlVXBkYXRlcykpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViR0xCbG9ja2xpc3QubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvV2ViR0xCbG9ja2xpc3QubW0KaW5kZXggNmMxZDI2ZTQ3OWEwMjgx
N2JkZDViMTg2ZmFhMmFhNzZhNWVjYmRiYy4uZDA0ZWUyMTc0ZDFkYmM3N2Q3Y2FlODVhM2ZhYTI1
YjAxODE1Nzg0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkdM
QmxvY2tsaXN0Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJHTEJsb2Nr
bGlzdC5tbQpAQCAtMTY4LDEwICsxNjgsOSBAQCBzdGF0aWMgYm9vbCBtYXRjaGVzQnVpbGRJbmZv
KE9TQnVpbGRJbmZvIG1hY2hpbmVJbmZvLCBPU0J1aWxkSW5mbyBibG9ja0luZm8sIFdlYgogCiBz
dGQ6OnVuaXF1ZV9wdHI8V2ViR0xCbG9ja2xpc3Q+IFdlYkdMQmxvY2tsaXN0OjpjcmVhdGUoTlNE
aWN0aW9uYXJ5ICpwcm9wZXJ0eUxpc3QpCiB7Ci0gICAgQ0ZEaWN0aW9uYXJ5UmVmIHN5c3RlbVZl
cnNpb25EaWN0aW9uYXJ5ID0gX0NGQ29weVN5c3RlbVZlcnNpb25EaWN0aW9uYXJ5KCk7Ci0gICAg
Q0ZTdHJpbmdSZWYgb3NCdWlsZCA9IHN0YXRpY19jYXN0PENGU3RyaW5nUmVmPihDRkRpY3Rpb25h
cnlHZXRWYWx1ZShzeXN0ZW1WZXJzaW9uRGljdGlvbmFyeSwgX2tDRlN5c3RlbVZlcnNpb25CdWls
ZFZlcnNpb25LZXkpKTsKKyAgICBhdXRvIHN5c3RlbVZlcnNpb25EaWN0aW9uYXJ5ID0gYWRvcHRD
RihfQ0ZDb3B5U3lzdGVtVmVyc2lvbkRpY3Rpb25hcnkoKSk7CisgICAgQ0ZTdHJpbmdSZWYgb3NC
dWlsZCA9IHN0YXRpY19jYXN0PENGU3RyaW5nUmVmPihDRkRpY3Rpb25hcnlHZXRWYWx1ZShzeXN0
ZW1WZXJzaW9uRGljdGlvbmFyeS5nZXQoKSwgX2tDRlN5c3RlbVZlcnNpb25CdWlsZFZlcnNpb25L
ZXkpKTsKICAgICBPU0J1aWxkSW5mbyBidWlsZEluZm8gPSBidWlsZEluZm9Gcm9tT1NCdWlsZFN0
cmluZygoX19icmlkZ2UgTlNTdHJpbmcgKilvc0J1aWxkKTsKLSAgICBDRlJlbGVhc2Uoc3lzdGVt
VmVyc2lvbkRpY3Rpb25hcnkpOwogCiAgICAgaWYgKCFidWlsZEluZm8ubWFqb3IpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFyZWNvcmRlci9jb2NvYS9BdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL0F1ZGlvU2FtcGxlQnVmZmVyQ29t
cHJlc3Nvci5tbQppbmRleCA3ZTJmNmFhNTJkY2RlMzIxNDcwMTU5MTY2ZTU0OGEwY2M5YWY0ZjUz
Li5jNzlhNDc5NjI0MDJiYjEzMjkzM2M4N2JmZTk4ZDIzN2Y1NmVlMDY5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL0F1ZGlvU2FtcGxlQnVm
ZmVyQ29tcHJlc3Nvci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29y
ZGVyL2NvY29hL0F1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5tbQpAQCAtMjI3LDkgKzIyNyw4
IEBAIHZvaWQgQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjphdHRhY2hQcmltaW5nVHJpbXNJ
Zk5lZWRlZChDTVNhbXBsZUJ1ZmZlclJlZiBiCiAgICAgaWYgKENNVElNRV9DT01QQVJFX0lOTElO
RShrQ01UaW1lWmVybywgPCwgbV9yZW1haW5pbmdQcmltZUR1cmF0aW9uKSkgewogICAgICAgICBD
TVRpbWUgc2FtcGxlRHVyYXRpb24gPSBDTVNhbXBsZUJ1ZmZlckdldER1cmF0aW9uKGJ1ZmZlcik7
CiAgICAgICAgIENNVGltZSB0cmltRHVyYXRpb24gPSBDTVRpbWVNaW5pbXVtKHNhbXBsZUR1cmF0
aW9uLCBtX3JlbWFpbmluZ1ByaW1lRHVyYXRpb24pOwotICAgICAgICBDRkRpY3Rpb25hcnlSZWYg
dHJpbUF0U3RhcnREaWN0ID0gQ01UaW1lQ29weUFzRGljdGlvbmFyeSh0cmltRHVyYXRpb24sIGtD
RkFsbG9jYXRvckRlZmF1bHQpOwotICAgICAgICBDTVNldEF0dGFjaG1lbnQoYnVmZmVyLCBrQ01T
YW1wbGVCdWZmZXJBdHRhY2htZW50S2V5X1RyaW1EdXJhdGlvbkF0U3RhcnQsIHRyaW1BdFN0YXJ0
RGljdCwga0NNQXR0YWNobWVudE1vZGVfU2hvdWxkUHJvcGFnYXRlKTsKLSAgICAgICAgQ0ZSZWxl
YXNlKHRyaW1BdFN0YXJ0RGljdCk7CisgICAgICAgIGF1dG8gdHJpbUF0U3RhcnREaWN0ID0gYWRv
cHRDRihDTVRpbWVDb3B5QXNEaWN0aW9uYXJ5KHRyaW1EdXJhdGlvbiwga0NGQWxsb2NhdG9yRGVm
YXVsdCkpOworICAgICAgICBDTVNldEF0dGFjaG1lbnQoYnVmZmVyLCBrQ01TYW1wbGVCdWZmZXJB
dHRhY2htZW50S2V5X1RyaW1EdXJhdGlvbkF0U3RhcnQsIHRyaW1BdFN0YXJ0RGljdC5nZXQoKSwg
a0NNQXR0YWNobWVudE1vZGVfU2hvdWxkUHJvcGFnYXRlKTsKICAgICAgICAgbV9yZW1haW5pbmdQ
cmltZUR1cmF0aW9uID0gQ01UaW1lU3VidHJhY3QobV9yZW1haW5pbmdQcmltZUR1cmF0aW9uLCB0
cmltRHVyYXRpb24pOwogICAgIH0KIH0KQEAgLTM0Nyw3ICszNDYsNyBAQCBPU1N0YXR1cyBBdWRp
b1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OnByb3ZpZGVTb3VyY2VEYXRhTnVtT3V0cHV0UGFja2V0
cyhVSW50MzIqCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgICAgICAgICAg
YXV0byBzYW1wbGVCdWZmZXIgPSBhZG9wdENGKChDTVNhbXBsZUJ1ZmZlclJlZikoY29uc3RfY2Fz
dDx2b2lkKj4oQ01CdWZmZXJRdWV1ZURlcXVldWVBbmRSZXRhaW4obV9pbnB1dEJ1ZmZlclF1ZXVl
LmdldCgpKSkpKTsKLSAgICAgICAgICAgICAgICBtX3NhbXBsZUJsb2NrQnVmZmVyID0gYWRvcHRD
RigoQ01CbG9ja0J1ZmZlclJlZikoY29uc3RfY2FzdDx2b2lkKj4oQ0ZSZXRhaW4oQ01TYW1wbGVC
dWZmZXJHZXREYXRhQnVmZmVyKHNhbXBsZUJ1ZmZlci5nZXQoKSkpKSkpOworICAgICAgICAgICAg
ICAgIG1fc2FtcGxlQmxvY2tCdWZmZXIgPSBDTVNhbXBsZUJ1ZmZlckdldERhdGFCdWZmZXIoc2Ft
cGxlQnVmZmVyLmdldCgpKTsKICAgICAgICAgICAgICAgICBpZiAoIW1fc2FtcGxlQmxvY2tCdWZm
ZXIpIHsKICAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWFTdHJlYW0s
ICJBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IgQ01TYW1wbGVCdWZmZXJHZXREYXRhQnVmZmVy
IGZhaWxlZCIpOwogICAgICAgICAgICAgICAgICAgICBtX3NhbXBsZUJsb2NrQnVmZmVyU2l6ZSA9
IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2Nv
Y29hL1ZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhcmVjb3JkZXIvY29jb2EvVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tCmlu
ZGV4IDI4NzE1MTM4MDdjYWQ2OGNiZGZjM2ZiZTRlZWIxN2Y0MDYzMzkxOTMuLmUwM2U3NzBmMGNh
YTliZGM2YjE2ZDVhYzc0YmIzNzg2ZGY4ZjRhZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29y
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvVmlk
ZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tCkBAIC0xMDksOSArMTA5LDggQEAgdm9pZCBWaWRl
b1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OnZpZGVvQ29tcHJlc3Npb25DYWxsYmFjayh2b2lkICpy
ZWZDb24sIHZvaWQqLAogc3RhdGljIGlubGluZSBPU1N0YXR1cyBzZXRDb21wcmVzc2lvblNlc3Np
b25Qcm9wZXJ0eShWVENvbXByZXNzaW9uU2Vzc2lvblJlZiB2dFNlc3Npb24sIENGU3RyaW5nUmVm
IGtleSwgdWludDMyX3QgdmFsdWUpCiB7CiAgICAgaW50NjRfdCB2YWx1ZTY0ID0gdmFsdWU7Ci0g
ICAgQ0ZOdW1iZXJSZWYgY2ZWYWx1ZSA9IENGTnVtYmVyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1
bHQsIGtDRk51bWJlclNJbnQ2NFR5cGUsICZ2YWx1ZTY0KTsKLSAgICBPU1N0YXR1cyBzdGF0dXMg
PSBWVFNlc3Npb25TZXRQcm9wZXJ0eSh2dFNlc3Npb24sIGtleSwgY2ZWYWx1ZSk7Ci0gICAgQ0ZS
ZWxlYXNlKGNmVmFsdWUpOworICAgIGF1dG8gY2ZWYWx1ZSA9IGFkb3B0Q0YoQ0ZOdW1iZXJDcmVh
dGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwga0NGTnVtYmVyU0ludDY0VHlwZSwgJnZhbHVlNjQpKTsK
KyAgICBPU1N0YXR1cyBzdGF0dXMgPSBWVFNlc3Npb25TZXRQcm9wZXJ0eSh2dFNlc3Npb24sIGtl
eSwgY2ZWYWx1ZS5nZXQoKSk7CiAgICAgcmV0dXJuIHN0YXR1czsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Gb3JtRGF0YVN0cmVhbUNGTmV0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRm9ybURhdGFTdHJlYW1DRk5l
dC5jcHAKaW5kZXggM2Y2OGVhZDM0MTI2MmY1NmJmZTIyMTIwMzJiZTY4Mzc2ZThjODA3Zi4uZDdk
ZDYzZmVhYmZiMDNjMDE5MmYyNDlmODY4YTM0MTAwM2NhNDVmNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Gb3JtRGF0YVN0cmVhbUNGTmV0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Zvcm1EYXRhU3RyZWFtQ0ZOZXQu
Y3BwCkBAIC0xMDMsNyArMTAzLDcgQEAgc3RydWN0IEZvcm1TdHJlYW1GaWVsZHMgewogICAgIEZv
cm1EYXRhRm9yVXBsb2FkIGRhdGE7CiAgICAgU2NoZWR1bGVQYWlySGFzaFNldCBzY2hlZHVsZWRS
dW5Mb29wUGFpcnM7CiAgICAgVmVjdG9yPEZvcm1EYXRhRWxlbWVudD4gcmVtYWluaW5nRWxlbWVu
dHM7IC8vIGluIHJldmVyc2Ugb3JkZXIKLSAgICBDRlJlYWRTdHJlYW1SZWYgY3VycmVudFN0cmVh
bSB7IG51bGxwdHIgfTsKKyAgICBSZXRhaW5QdHI8Q0ZSZWFkU3RyZWFtUmVmPiBjdXJyZW50U3Ry
ZWFtOwogICAgIGxvbmcgbG9uZyBjdXJyZW50U3RyZWFtUmFuZ2VMZW5ndGggeyBCbG9iRGF0YUl0
ZW06OnRvRW5kT2ZGaWxlIH07CiAgICAgTWFsbG9jUHRyPGNoYXIsIFdURjo6VmVjdG9yTWFsbG9j
PiBjdXJyZW50RGF0YTsKICAgICBDRlJlYWRTdHJlYW1SZWYgZm9ybVN0cmVhbSB7IG51bGxwdHIg
fTsKQEAgLTExNywxMCArMTE3LDkgQEAgc3RhdGljIHZvaWQgY2xvc2VDdXJyZW50U3RyZWFtKEZv
cm1TdHJlYW1GaWVsZHMqIGZvcm0pCiAgICAgQVNTRVJUKGZvcm0tPnN0cmVhbUlzQmVpbmdPcGVu
ZWRPckNsb3NlZExvY2suaXNIZWxkKCkpOwogCiAgICAgaWYgKGZvcm0tPmN1cnJlbnRTdHJlYW0p
IHsKLSAgICAgICAgQ0ZSZWFkU3RyZWFtQ2xvc2UoZm9ybS0+Y3VycmVudFN0cmVhbSk7Ci0gICAg
ICAgIENGUmVhZFN0cmVhbVNldENsaWVudChmb3JtLT5jdXJyZW50U3RyZWFtLCBrQ0ZTdHJlYW1F
dmVudE5vbmUsIDAsIDApOwotICAgICAgICBDRlJlbGVhc2UoZm9ybS0+Y3VycmVudFN0cmVhbSk7
Ci0gICAgICAgIGZvcm0tPmN1cnJlbnRTdHJlYW0gPSAwOworICAgICAgICBDRlJlYWRTdHJlYW1D
bG9zZShmb3JtLT5jdXJyZW50U3RyZWFtLmdldCgpKTsKKyAgICAgICAgQ0ZSZWFkU3RyZWFtU2V0
Q2xpZW50KGZvcm0tPmN1cnJlbnRTdHJlYW0uZ2V0KCksIGtDRlN0cmVhbUV2ZW50Tm9uZSwgMCwg
MCk7CisgICAgICAgIGZvcm0tPmN1cnJlbnRTdHJlYW0gPSBudWxscHRyOwogICAgICAgICBmb3Jt
LT5jdXJyZW50U3RyZWFtUmFuZ2VMZW5ndGggPSBCbG9iRGF0YUl0ZW06OnRvRW5kT2ZGaWxlOwog
ICAgIH0KICAgICBmb3JtLT5jdXJyZW50RGF0YSA9IG51bGxwdHI7CkBAIC0xNDMsNyArMTQyLDcg
QEAgc3RhdGljIGJvb2wgYWR2YW5jZUN1cnJlbnRTdHJlYW0oRm9ybVN0cmVhbUZpZWxkcyogZm9y
bSkKICAgICAgICAgW2Zvcm1dIChWZWN0b3I8Y2hhcj4mIGJ5dGVzKSB7CiAgICAgICAgICAgICBz
aXplX3Qgc2l6ZSA9IGJ5dGVzLnNpemUoKTsKICAgICAgICAgICAgIE1hbGxvY1B0cjxjaGFyLCBX
VEY6OlZlY3Rvck1hbGxvYz4gZGF0YSA9IGJ5dGVzLnJlbGVhc2VCdWZmZXIoKTsKLSAgICAgICAg
ICAgIGZvcm0tPmN1cnJlbnRTdHJlYW0gPSBDRlJlYWRTdHJlYW1DcmVhdGVXaXRoQnl0ZXNOb0Nv
cHkoMCwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBVSW50OCo+KGRhdGEuZ2V0KCkpLCBzaXplLCBr
Q0ZBbGxvY2F0b3JOdWxsKTsKKyAgICAgICAgICAgIGZvcm0tPmN1cnJlbnRTdHJlYW0gPSBhZG9w
dENGKENGUmVhZFN0cmVhbUNyZWF0ZVdpdGhCeXRlc05vQ29weSgwLCByZWludGVycHJldF9jYXN0
PGNvbnN0IFVJbnQ4Kj4oZGF0YS5nZXQoKSksIHNpemUsIGtDRkFsbG9jYXRvck51bGwpKTsKICAg
ICAgICAgICAgIGZvcm0tPmN1cnJlbnREYXRhID0gV1RGTW92ZShkYXRhKTsKICAgICAgICAgICAg
IHJldHVybiB0cnVlOwogICAgICAgICB9LCBbZm9ybV0gKGNvbnN0IEZvcm1EYXRhRWxlbWVudDo6
RW5jb2RlZEZpbGVEYXRhJiBmaWxlRGF0YSkgewpAQCAtMTUyLDE0ICsxNTEsMTQgQEAgc3RhdGlj
IGJvb2wgYWR2YW5jZUN1cnJlbnRTdHJlYW0oRm9ybVN0cmVhbUZpZWxkcyogZm9ybSkKICAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAgICAgICAgIGNvbnN0IFN0cmluZyYgcGF0
aCA9IGZpbGVEYXRhLmZpbGVuYW1lOwotICAgICAgICAgICAgZm9ybS0+Y3VycmVudFN0cmVhbSA9
IENGUmVhZFN0cmVhbUNyZWF0ZVdpdGhGaWxlKDAsIEZpbGVTeXN0ZW06OnBhdGhBc1VSTChwYXRo
KS5nZXQoKSk7CisgICAgICAgICAgICBmb3JtLT5jdXJyZW50U3RyZWFtID0gYWRvcHRDRihDRlJl
YWRTdHJlYW1DcmVhdGVXaXRoRmlsZSgwLCBGaWxlU3lzdGVtOjpwYXRoQXNVUkwocGF0aCkuZ2V0
KCkpKTsKICAgICAgICAgICAgIGlmICghZm9ybS0+Y3VycmVudFN0cmVhbSkgewogICAgICAgICAg
ICAgICAgIC8vIFRoZSBmaWxlIG11c3QgaGF2ZSBiZWVuIHJlbW92ZWQgb3IgYmVjb21lIHVucmVh
ZGFibGUuCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgaWYgKGZpbGVEYXRhLmZpbGVTdGFydCA+IDApIHsKICAgICAgICAgICAgICAgICBS
ZXRhaW5QdHI8Q0ZOdW1iZXJSZWY+IHBvc2l0aW9uID0gYWRvcHRDRihDRk51bWJlckNyZWF0ZSgw
LCBrQ0ZOdW1iZXJMb25nTG9uZ1R5cGUsICZmaWxlRGF0YS5maWxlU3RhcnQpKTsKLSAgICAgICAg
ICAgICAgICBDRlJlYWRTdHJlYW1TZXRQcm9wZXJ0eShmb3JtLT5jdXJyZW50U3RyZWFtLCBrQ0ZT
dHJlYW1Qcm9wZXJ0eUZpbGVDdXJyZW50T2Zmc2V0LCBwb3NpdGlvbi5nZXQoKSk7CisgICAgICAg
ICAgICAgICAgQ0ZSZWFkU3RyZWFtU2V0UHJvcGVydHkoZm9ybS0+Y3VycmVudFN0cmVhbS5nZXQo
KSwga0NGU3RyZWFtUHJvcGVydHlGaWxlQ3VycmVudE9mZnNldCwgcG9zaXRpb24uZ2V0KCkpOwog
ICAgICAgICAgICAgfQogICAgICAgICAgICAgZm9ybS0+Y3VycmVudFN0cmVhbVJhbmdlTGVuZ3Ro
ID0gZmlsZURhdGEuZmlsZUxlbmd0aDsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMTc2
LDEzICsxNzUsMTMgQEAgc3RhdGljIGJvb2wgYWR2YW5jZUN1cnJlbnRTdHJlYW0oRm9ybVN0cmVh
bUZpZWxkcyogZm9ybSkKIAogICAgIC8vIFNldCB1cCB0aGUgY2FsbGJhY2suCiAgICAgQ0ZTdHJl
YW1DbGllbnRDb250ZXh0IGNvbnRleHQgPSB7IDAsIGZvcm0sIDAsIDAsIDAgfTsKLSAgICBDRlJl
YWRTdHJlYW1TZXRDbGllbnQoZm9ybS0+Y3VycmVudFN0cmVhbSwga0NGU3RyZWFtRXZlbnRIYXNC
eXRlc0F2YWlsYWJsZSB8IGtDRlN0cmVhbUV2ZW50RXJyb3JPY2N1cnJlZCB8IGtDRlN0cmVhbUV2
ZW50RW5kRW5jb3VudGVyZWQsCisgICAgQ0ZSZWFkU3RyZWFtU2V0Q2xpZW50KGZvcm0tPmN1cnJl
bnRTdHJlYW0uZ2V0KCksIGtDRlN0cmVhbUV2ZW50SGFzQnl0ZXNBdmFpbGFibGUgfCBrQ0ZTdHJl
YW1FdmVudEVycm9yT2NjdXJyZWQgfCBrQ0ZTdHJlYW1FdmVudEVuZEVuY291bnRlcmVkLAogICAg
ICAgICBmb3JtRXZlbnRDYWxsYmFjaywgJmNvbnRleHQpOwogCiAgICAgLy8gU2NoZWR1bGUgd2l0
aCB0aGUgY3VycmVudCBzZXQgb2YgcnVuIGxvb3BzLgogICAgIFNjaGVkdWxlUGFpckhhc2hTZXQ6
Oml0ZXJhdG9yIGVuZCA9IGZvcm0tPnNjaGVkdWxlZFJ1bkxvb3BQYWlycy5lbmQoKTsKICAgICBm
b3IgKFNjaGVkdWxlUGFpckhhc2hTZXQ6Oml0ZXJhdG9yIGl0ID0gZm9ybS0+c2NoZWR1bGVkUnVu
TG9vcFBhaXJzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKLSAgICAgICAgQ0ZSZWFkU3RyZWFt
U2NoZWR1bGVXaXRoUnVuTG9vcChmb3JtLT5jdXJyZW50U3RyZWFtLCAoKml0KS0+cnVuTG9vcCgp
LCAoKml0KS0+bW9kZSgpKTsKKyAgICAgICAgQ0ZSZWFkU3RyZWFtU2NoZWR1bGVXaXRoUnVuTG9v
cChmb3JtLT5jdXJyZW50U3RyZWFtLmdldCgpLCAoKml0KS0+cnVuTG9vcCgpLCAoKml0KS0+bW9k
ZSgpKTsKIAogICAgIHJldHVybiB0cnVlOwogfQpAQCAtMTk2LDcgKzE5NSw3IEBAIHN0YXRpYyBi
b29sIG9wZW5OZXh0U3RyZWFtKEZvcm1TdHJlYW1GaWVsZHMqIGZvcm0pCiAgICAgLy8gU2tpcCBv
dmVyIGFueSBzdHJlYW1zIHdlIGNhbid0IG9wZW4uCiAgICAgaWYgKCFhZHZhbmNlQ3VycmVudFN0
cmVhbShmb3JtKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHdoaWxlIChmb3JtLT5jdXJy
ZW50U3RyZWFtICYmICFDRlJlYWRTdHJlYW1PcGVuKGZvcm0tPmN1cnJlbnRTdHJlYW0pKSB7Cisg
ICAgd2hpbGUgKGZvcm0tPmN1cnJlbnRTdHJlYW0gJiYgIUNGUmVhZFN0cmVhbU9wZW4oZm9ybS0+
Y3VycmVudFN0cmVhbS5nZXQoKSkpIHsKICAgICAgICAgaWYgKCFhZHZhbmNlQ3VycmVudFN0cmVh
bShmb3JtKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CkBAIC0yNjIsOSArMjYx
LDkgQEAgc3RhdGljIENGSW5kZXggZm9ybVJlYWQoQ0ZSZWFkU3RyZWFtUmVmLCBVSW50OCogYnVm
ZmVyLCBDRkluZGV4IGJ1ZmZlckxlbmd0aCwgQ0YKICAgICAgICAgQ0ZJbmRleCBieXRlc1RvUmVh
ZCA9IGJ1ZmZlckxlbmd0aDsKICAgICAgICAgaWYgKGZvcm0tPmN1cnJlbnRTdHJlYW1SYW5nZUxl
bmd0aCAhPSBCbG9iRGF0YUl0ZW06OnRvRW5kT2ZGaWxlICYmIGZvcm0tPmN1cnJlbnRTdHJlYW1S
YW5nZUxlbmd0aCA8IGJ5dGVzVG9SZWFkKQogICAgICAgICAgICAgYnl0ZXNUb1JlYWQgPSBzdGF0
aWNfY2FzdDxDRkluZGV4Pihmb3JtLT5jdXJyZW50U3RyZWFtUmFuZ2VMZW5ndGgpOwotICAgICAg
ICBDRkluZGV4IGJ5dGVzUmVhZCA9IENGUmVhZFN0cmVhbVJlYWQoZm9ybS0+Y3VycmVudFN0cmVh
bSwgYnVmZmVyLCBieXRlc1RvUmVhZCk7CisgICAgICAgIENGSW5kZXggYnl0ZXNSZWFkID0gQ0ZS
ZWFkU3RyZWFtUmVhZChmb3JtLT5jdXJyZW50U3RyZWFtLmdldCgpLCBidWZmZXIsIGJ5dGVzVG9S
ZWFkKTsKICAgICAgICAgaWYgKGJ5dGVzUmVhZCA8IDApIHsKLSAgICAgICAgICAgICplcnJvciA9
IENGUmVhZFN0cmVhbUdldEVycm9yKGZvcm0tPmN1cnJlbnRTdHJlYW0pOworICAgICAgICAgICAg
KmVycm9yID0gQ0ZSZWFkU3RyZWFtR2V0RXJyb3IoZm9ybS0+Y3VycmVudFN0cmVhbS5nZXQoKSk7
CiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIH0KICAgICAgICAgaWYgKGJ5dGVzUmVh
ZCA+IDApIHsKQEAgLTI4OCwxNCArMjg3LDE0IEBAIHN0YXRpYyBCb29sZWFuIGZvcm1DYW5SZWFk
KENGUmVhZFN0cmVhbVJlZiBzdHJlYW0sIHZvaWQqIGNvbnRleHQpCiB7CiAgICAgRm9ybVN0cmVh
bUZpZWxkcyogZm9ybSA9IHN0YXRpY19jYXN0PEZvcm1TdHJlYW1GaWVsZHMqPihjb250ZXh0KTsK
IAotICAgIHdoaWxlIChmb3JtLT5jdXJyZW50U3RyZWFtICYmIENGUmVhZFN0cmVhbUdldFN0YXR1
cyhmb3JtLT5jdXJyZW50U3RyZWFtKSA9PSBrQ0ZTdHJlYW1TdGF0dXNBdEVuZCkKKyAgICB3aGls
ZSAoZm9ybS0+Y3VycmVudFN0cmVhbSAmJiBDRlJlYWRTdHJlYW1HZXRTdGF0dXMoZm9ybS0+Y3Vy
cmVudFN0cmVhbS5nZXQoKSkgPT0ga0NGU3RyZWFtU3RhdHVzQXRFbmQpCiAgICAgICAgIG9wZW5O
ZXh0U3RyZWFtKGZvcm0pOwogCiAgICAgaWYgKCFmb3JtLT5jdXJyZW50U3RyZWFtKSB7CiAgICAg
ICAgIENGUmVhZFN0cmVhbVNpZ25hbEV2ZW50KHN0cmVhbSwga0NGU3RyZWFtRXZlbnRFbmRFbmNv
dW50ZXJlZCwgMCk7CiAgICAgICAgIHJldHVybiBGQUxTRTsKICAgICB9Ci0gICAgcmV0dXJuIENG
UmVhZFN0cmVhbUhhc0J5dGVzQXZhaWxhYmxlKGZvcm0tPmN1cnJlbnRTdHJlYW0pOworICAgIHJl
dHVybiBDRlJlYWRTdHJlYW1IYXNCeXRlc0F2YWlsYWJsZShmb3JtLT5jdXJyZW50U3RyZWFtLmdl
dCgpKTsKIH0KIAogc3RhdGljIHZvaWQgZm9ybUNsb3NlKENGUmVhZFN0cmVhbVJlZiwgdm9pZCog
Y29udGV4dCkKQEAgLTMyNiw3ICszMjUsNyBAQCBzdGF0aWMgdm9pZCBmb3JtU2NoZWR1bGUoQ0ZS
ZWFkU3RyZWFtUmVmLCBDRlJ1bkxvb3BSZWYgcnVuTG9vcCwgQ0ZTdHJpbmdSZWYgcnVuTAogICAg
IEZvcm1TdHJlYW1GaWVsZHMqIGZvcm0gPSBzdGF0aWNfY2FzdDxGb3JtU3RyZWFtRmllbGRzKj4o
Y29udGV4dCk7CiAKICAgICBpZiAoZm9ybS0+Y3VycmVudFN0cmVhbSkKLSAgICAgICAgQ0ZSZWFk
U3RyZWFtU2NoZWR1bGVXaXRoUnVuTG9vcChmb3JtLT5jdXJyZW50U3RyZWFtLCBydW5Mb29wLCBy
dW5Mb29wTW9kZSk7CisgICAgICAgIENGUmVhZFN0cmVhbVNjaGVkdWxlV2l0aFJ1bkxvb3AoZm9y
bS0+Y3VycmVudFN0cmVhbS5nZXQoKSwgcnVuTG9vcCwgcnVuTG9vcE1vZGUpOwogICAgIGZvcm0t
PnNjaGVkdWxlZFJ1bkxvb3BQYWlycy5hZGQoU2NoZWR1bGVQYWlyOjpjcmVhdGUocnVuTG9vcCwg
cnVuTG9vcE1vZGUpKTsKIH0KIApAQCAtMzM1LDcgKzMzNCw3IEBAIHN0YXRpYyB2b2lkIGZvcm1V
bnNjaGVkdWxlKENGUmVhZFN0cmVhbVJlZiwgQ0ZSdW5Mb29wUmVmIHJ1bkxvb3AsIENGU3RyaW5n
UmVmIHJ1CiAgICAgRm9ybVN0cmVhbUZpZWxkcyogZm9ybSA9IHN0YXRpY19jYXN0PEZvcm1TdHJl
YW1GaWVsZHMqPihjb250ZXh0KTsKIAogICAgIGlmIChmb3JtLT5jdXJyZW50U3RyZWFtKQotICAg
ICAgICBDRlJlYWRTdHJlYW1VbnNjaGVkdWxlRnJvbVJ1bkxvb3AoZm9ybS0+Y3VycmVudFN0cmVh
bSwgcnVuTG9vcCwgcnVuTG9vcE1vZGUpOworICAgICAgICBDRlJlYWRTdHJlYW1VbnNjaGVkdWxl
RnJvbVJ1bkxvb3AoZm9ybS0+Y3VycmVudFN0cmVhbS5nZXQoKSwgcnVuTG9vcCwgcnVuTG9vcE1v
ZGUpOwogICAgIGZvcm0tPnNjaGVkdWxlZFJ1bkxvb3BQYWlycy5yZW1vdmUoU2NoZWR1bGVQYWly
OjpjcmVhdGUocnVuTG9vcCwgcnVuTG9vcE1vZGUpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9OZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldFdp
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL05ldHdvcmtTdG9yYWdl
U2Vzc2lvbkNGTmV0V2luLmNwcAppbmRleCAwNWIwZWM5MmI5ZWE3MjY2NmI2OWMwN2JlMDJmNjA2
NmJkNWY3ZDE1Li41ZDdkNzk2MTQ0NjVmY2FiNWJkNmI2NDE4ZTA2MGY2OGViMDk0YTRhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL05ldHdvcmtTdG9yYWdl
U2Vzc2lvbkNGTmV0V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NmL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0V2luLmNwcApAQCAtODgsMTIgKzg4LDEwIEBA
IENGVVJMU3RvcmFnZVNlc3Npb25SZWYgY3JlYXRlUHJpdmF0ZVN0b3JhZ2VTZXNzaW9uKENGU3Ry
aW5nUmVmIGlkZW50aWZpZXIsIE9wdGlvCiAgICAgCiAgICAgLy8gVGhlIHByaXZhdGUgc3RvcmFn
ZSBzZXNzaW9uIHNob3VsZCBoYXZlIHRoZSBzYW1lIHByb3BlcnRpZXMgYXMgdGhlIGRlZmF1bHQg
c3RvcmFnZSBzZXNzaW9uLAogICAgIC8vIHdpdGggdGhlIGV4Y2VwdGlvbiB0aGF0IGl0IHNob3Vs
ZCBiZSBpbi1tZW1vcnkgb25seSBzdG9yYWdlLgotICAgIENGVVJMQ2FjaGVSZWYgY2FjaGUgPSBf
Q0ZVUkxTdG9yYWdlU2Vzc2lvbkNvcHlDYWNoZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBzdG9yYWdl
U2Vzc2lvbik7Ci0gICAgQ0ZVUkxDYWNoZVNldERpc2tDYXBhY2l0eShjYWNoZSwgMCk7Ci0gICAg
Q0ZVUkxDYWNoZVJlZiBkZWZhdWx0Q2FjaGUgPSBDRlVSTENhY2hlQ29weVNoYXJlZFVSTENhY2hl
KCk7Ci0gICAgQ0ZVUkxDYWNoZVNldE1lbW9yeUNhcGFjaXR5KGNhY2hlLCBDRlVSTENhY2hlTWVt
b3J5Q2FwYWNpdHkoZGVmYXVsdENhY2hlKSk7Ci0gICAgQ0ZSZWxlYXNlKGRlZmF1bHRDYWNoZSk7
Ci0gICAgQ0ZSZWxlYXNlKGNhY2hlKTsKKyAgICBhdXRvIGNhY2hlID0gYWRvcHRDRihfQ0ZVUkxT
dG9yYWdlU2Vzc2lvbkNvcHlDYWNoZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBzdG9yYWdlU2Vzc2lv
bikpOworICAgIENGVVJMQ2FjaGVTZXREaXNrQ2FwYWNpdHkoY2FjaGUuZ2V0KCksIDApOworICAg
IGF1dG8gZGVmYXVsdENhY2hlID0gYWRvcHRDRihDRlVSTENhY2hlQ29weVNoYXJlZFVSTENhY2hl
KCkpOworICAgIENGVVJMQ2FjaGVTZXRNZW1vcnlDYXBhY2l0eShjYWNoZS5nZXQoKSwgQ0ZVUkxD
YWNoZU1lbW9yeUNhcGFjaXR5KGRlZmF1bHRDYWNoZS5nZXQoKSkpOwogICAgIAogICAgIENGSFRU
UENvb2tpZVN0b3JhZ2VBY2NlcHRQb2xpY3kgY2ZDb29raWVBY2NlcHRQb2xpY3k7CiAgICAgaWYg
KGNvb2tpZUFjY2VwdFBvbGljeSkKQEAgLTEwMyw5ICsxMDEsOCBAQCBDRlVSTFN0b3JhZ2VTZXNz
aW9uUmVmIGNyZWF0ZVByaXZhdGVTdG9yYWdlU2Vzc2lvbihDRlN0cmluZ1JlZiBpZGVudGlmaWVy
LCBPcHRpbwogICAgICAgICBjZkNvb2tpZUFjY2VwdFBvbGljeSA9IENGSFRUUENvb2tpZVN0b3Jh
Z2VHZXRDb29raWVBY2NlcHRQb2xpY3koZGVmYXVsdENvb2tpZVN0b3JhZ2UpOwogICAgIH0KIAot
ICAgIENGSFRUUENvb2tpZVN0b3JhZ2VSZWYgY29va2llU3RvcmFnZSA9IF9DRlVSTFN0b3JhZ2VT
ZXNzaW9uQ29weUNvb2tpZVN0b3JhZ2Uoa0NGQWxsb2NhdG9yRGVmYXVsdCwgc3RvcmFnZVNlc3Np
b24pOwotICAgIENGSFRUUENvb2tpZVN0b3JhZ2VTZXRDb29raWVBY2NlcHRQb2xpY3koY29va2ll
U3RvcmFnZSwgY2ZDb29raWVBY2NlcHRQb2xpY3kpOwotICAgIENGUmVsZWFzZShjb29raWVTdG9y
YWdlKTsKKyAgICBhdXRvIGNvb2tpZVN0b3JhZ2UgPSBhZG9wdENGKF9DRlVSTFN0b3JhZ2VTZXNz
aW9uQ29weUNvb2tpZVN0b3JhZ2Uoa0NGQWxsb2NhdG9yRGVmYXVsdCwgc3RvcmFnZVNlc3Npb24p
KTsKKyAgICBDRkhUVFBDb29raWVTdG9yYWdlU2V0Q29va2llQWNjZXB0UG9saWN5KGNvb2tpZVN0
b3JhZ2UuZ2V0KCksIGNmQ29va2llQWNjZXB0UG9saWN5KTsKICAgICAKICAgICByZXR1cm4gc3Rv
cmFnZVNlc3Npb247CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0LmNwcAppbmRleCBjZTRlZGI0OWI3Mzg3MDNj
MWMzYTBiMzg2NWMwOGQ3OTI0YTQ2MzM3Li4zYzE3YWRjNDE4YjgwNGNhNGVmNTRhOTkzNWZlYzM1
NTc0MjNiYzgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nm
L1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRk5ldC5jcHAKQEAgLTEyMCwxMiArMTIwLDExIEBAIHN0
YXRpYyB2b2lkIHNldENsaWVudENlcnRpZmljYXRlSW5TU0xQcm9wZXJ0aWVzKENGTXV0YWJsZURp
Y3Rpb25hcnlSZWYgc3NsUHJvcHMsCiB7CiAgICAgaWYgKCFzc2xQcm9wcyB8fCAhY2VydERhdGEp
CiAgICAgICAgIHJldHVybjsKLSAgICBDRk11dGFibGVEaWN0aW9uYXJ5UmVmIGNlcnREaWN0ID0g
Q0ZEaWN0aW9uYXJ5Q3JlYXRlTXV0YWJsZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAwLCAma0NGVHlw
ZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tz
KTsKKyAgICBhdXRvIGNlcnREaWN0ID0gYWRvcHRDRihDRkRpY3Rpb25hcnlDcmVhdGVNdXRhYmxl
KGtDRkFsbG9jYXRvckRlZmF1bHQsIDAsICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywg
JmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpKTsKICAgICBpZiAoIWNlcnREaWN0KQog
ICAgICAgICByZXR1cm47Ci0gICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUoY2VydERpY3QsIF9rQ0ZX
aW5kb3dzU1NMTG9jYWxDZXJ0LCBjZXJ0RGF0YSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUo
c3NsUHJvcHMsIF9rQ0ZTdHJlYW1Qcm9wZXJ0eVdpbmRvd3NTU0xDZXJ0SW5mbywgY2VydERpY3Qp
OwotICAgIENGUmVsZWFzZShjZXJ0RGljdCk7CisgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUoY2Vy
dERpY3QuZ2V0KCksIF9rQ0ZXaW5kb3dzU1NMTG9jYWxDZXJ0LCBjZXJ0RGF0YSk7CisgICAgQ0ZE
aWN0aW9uYXJ5U2V0VmFsdWUoc3NsUHJvcHMsIF9rQ0ZTdHJlYW1Qcm9wZXJ0eVdpbmRvd3NTU0xD
ZXJ0SW5mbywgY2VydERpY3QuZ2V0KCkpOwogfQogI2VuZGlmCiAKQEAgLTIwNSwxMSArMjA0LDEx
IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OmNyZWF0ZUNGVVJMQ29ubmVjdGlvbihib29sIHNob3Vs
ZFVzZUNyZWRlbnRpYWxTdG9yYWdlLCBib29sCiAgICAgaWYgKHNzbFByb3BzKQogICAgICAgICBD
RlVSTFJlcXVlc3RTZXRTU0xQcm9wZXJ0aWVzKHJlcXVlc3QuZ2V0KCksIHNzbFByb3BzLmdldCgp
KTsKIAotICAgIENGTXV0YWJsZURpY3Rpb25hcnlSZWYgc3RyZWFtUHJvcGVydGllcyAgPSBDRkRp
Y3Rpb25hcnlDcmVhdGVNdXRhYmxlKDAsIDAsICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNr
cywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpOworICAgIGF1dG8gc3RyZWFtUHJv
cGVydGllcyAgPSBhZG9wdENGKENGRGljdGlvbmFyeUNyZWF0ZU11dGFibGUoMCwgMCwgJmtDRlR5
cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNr
cykpOwogCiAgICAgaWYgKCFzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZSkgewogICAgICAgICAv
LyBBdm9pZCB1c2luZyBleGlzdGluZyBjb25uZWN0aW9ucywgYmVjYXVzZSB0aGV5IG1heSBiZSBh
bHJlYWR5IGF1dGhlbnRpY2F0ZWQuCi0gICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHN0cmVh
bVByb3BlcnRpZXMsIENGU1RSKCJfa0NGVVJMQ29ubmVjdGlvblNlc3Npb25JRCIpLCBDRlNUUigi
V2ViS2l0UHJpdmF0ZVNlc3Npb24iKSk7CisgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHN0
cmVhbVByb3BlcnRpZXMuZ2V0KCksIENGU1RSKCJfa0NGVVJMQ29ubmVjdGlvblNlc3Npb25JRCIp
LCBDRlNUUigiV2ViS2l0UHJpdmF0ZVNlc3Npb24iKSk7CiAgICAgfQogCiAgICAgc3RhdGljIGNv
bnN0IENGU3RyaW5nUmVmIGtDRlVSTENvbm5lY3Rpb25Tb2NrZXRTdHJlYW1Qcm9wZXJ0aWVzID0g
Q0ZTVFIoImtDRlVSTENvbm5lY3Rpb25Tb2NrZXRTdHJlYW1Qcm9wZXJ0aWVzIik7CkBAIC0yMjgs
OCArMjI3LDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6Y3JlYXRlQ0ZVUkxDb25uZWN0aW9uKGJv
b2wgc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UsIGJvb2wKICNlbmRpZgogCiAgICAgLy8gRklY
TUU6IFRoaXMgY29kZSBpcyBkaWZmZXJlbnQgZnJvbSBpT1MgY29kZSBpbiBSZXNvdXJjZUhhbmRs
ZU1hYy5tbSBpbiB0aGF0IGhlcmUgd2UgaWdub3JlIHN0cmVhbSBwcm9wZXJ0aWVzIHRoYXQgd2Vy
ZSBwcmVzZW50IGluIGNsaWVudCBwcm9wZXJ0aWVzLgotICAgIENGRGljdGlvbmFyeUFkZFZhbHVl
KHByb3BlcnRpZXNEaWN0aW9uYXJ5LmdldCgpLCBrQ0ZVUkxDb25uZWN0aW9uU29ja2V0U3RyZWFt
UHJvcGVydGllcywgc3RyZWFtUHJvcGVydGllcyk7Ci0gICAgQ0ZSZWxlYXNlKHN0cmVhbVByb3Bl
cnRpZXMpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKHByb3BlcnRpZXNEaWN0aW9uYXJ5Lmdl
dCgpLCBrQ0ZVUkxDb25uZWN0aW9uU29ja2V0U3RyZWFtUHJvcGVydGllcywgc3RyZWFtUHJvcGVy
dGllcy5nZXQoKSk7CiAKICAgICBkLT5tX2Nvbm5lY3Rpb25EZWxlZ2F0ZSA9IGFkb3B0UmVmKG5l
dyBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVl
KHRoaXMsIFdURk1vdmUobWVzc2FnZVF1ZXVlKSkpOwogICAgIGQtPm1fY29ubmVjdGlvbkRlbGVn
YXRlLT5zZXR1cFJlcXVlc3QocmVxdWVzdC5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVs
ZWdhdGVXaXRoT3BlcmF0aW9uUXVldWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlv
blF1ZXVlLmNwcAppbmRleCAyNjQ2NjM4OGI3Y2E1YTY2NTZkMGVlMjYxZTc1NmVlMjJmYTA0MDMx
Li44ZThjM2FhN2E2YmU0Y2VlMzZhYThlOWYzZGEzZTZhMjJhMTVlYzdkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25u
ZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0
ZVdpdGhPcGVyYXRpb25RdWV1ZS5jcHAKQEAgLTEzNyw4ICsxMzcsNyBAQCBDRlVSTFJlcXVlc3RS
ZWYgUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1
ZTo6d2lsbFNlbgogICAgIGlmICghb3JpZ2luYWxSZWRpcmVjdFJlc3BvbnNlKSB7CiAgICAgICAg
IFJldGFpblB0cjxDRlN0cmluZ1JlZj4gbmV3U2NoZW1lID0gYWRvcHRDRihDRlVSTENvcHlTY2hl
bWUoQ0ZVUkxSZXF1ZXN0R2V0VVJMKGNmUmVxdWVzdCkpKTsKICAgICAgICAgaWYgKENGU3RyaW5n
Q29tcGFyZShuZXdTY2hlbWUuZ2V0KCksIG1fb3JpZ2luYWxTY2hlbWUuZ2V0KCksIGtDRkNvbXBh
cmVDYXNlSW5zZW5zaXRpdmUpID09IGtDRkNvbXBhcmVFcXVhbFRvKSB7Ci0gICAgICAgICAgICBD
RlJldGFpbihjZlJlcXVlc3QpOwotICAgICAgICAgICAgcmV0dXJuIGNmUmVxdWVzdDsKKyAgICAg
ICAgICAgIHJldHVybiBjZlJlcXVlc3QubGVha1JlZigpOwogICAgICAgICB9CiAgICAgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVx
dWVzdENGTmV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3Vy
Y2VSZXF1ZXN0Q0ZOZXQuY3BwCmluZGV4IGQyZDA5M2MzYzMyMDA3M2I2YTVhYWJlOTNkMGNmZmZh
OTFlOTUyYmIuLmY2ZTFiOWI1ZDNhNWJhN2FlMzVhNzc5MjNkNTZkNTNlYWUzMjcxOTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0
Q0ZOZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3Vy
Y2VSZXF1ZXN0Q0ZOZXQuY3BwCkBAIC0yODIsMTAgKzI4Miw4IEBAIHZvaWQgUmVzb3VyY2VSZXF1
ZXN0Ojpkb1VwZGF0ZVJlc291cmNlUmVxdWVzdCgpCiAgICAgICAgIG1fY2FjaGVQb2xpY3kgPSBm
cm9tUGxhdGZvcm1SZXF1ZXN0Q2FjaGVQb2xpY3koQ0ZVUkxSZXF1ZXN0R2V0Q2FjaGVQb2xpY3ko
bV9jZlJlcXVlc3QuZ2V0KCkpKTsKICAgICBtX3RpbWVvdXRJbnRlcnZhbCA9IENGVVJMUmVxdWVz
dEdldFRpbWVvdXRJbnRlcnZhbChtX2NmUmVxdWVzdC5nZXQoKSk7CiAgICAgbV9maXJzdFBhcnR5
Rm9yQ29va2llcyA9IENGVVJMUmVxdWVzdEdldE1haW5Eb2N1bWVudFVSTChtX2NmUmVxdWVzdC5n
ZXQoKSk7Ci0gICAgaWYgKENGU3RyaW5nUmVmIG1ldGhvZCA9IENGVVJMUmVxdWVzdENvcHlIVFRQ
UmVxdWVzdE1ldGhvZChtX2NmUmVxdWVzdC5nZXQoKSkpIHsKLSAgICAgICAgbV9odHRwTWV0aG9k
ID0gbWV0aG9kOwotICAgICAgICBDRlJlbGVhc2UobWV0aG9kKTsKLSAgICB9CisgICAgaWYgKGF1
dG8gbWV0aG9kID0gYWRvcHRDRihDRlVSTFJlcXVlc3RDb3B5SFRUUFJlcXVlc3RNZXRob2QobV9j
ZlJlcXVlc3QuZ2V0KCkpKSkKKyAgICAgICAgbV9odHRwTWV0aG9kID0gbWV0aG9kLmdldCgpOwog
ICAgIG1fYWxsb3dDb29raWVzID0gQ0ZVUkxSZXF1ZXN0U2hvdWxkSGFuZGxlSFRUUENvb2tpZXMo
bV9jZlJlcXVlc3QuZ2V0KCkpOwogCiAgICAgaWYgKHJlc291cmNlUHJpb3JpdGllc0VuYWJsZWQo
KSkKQEAgLTMwNiwxNCArMzA0LDEzIEBAIHZvaWQgUmVzb3VyY2VSZXF1ZXN0Ojpkb1VwZGF0ZVJl
c291cmNlUmVxdWVzdCgpCiAjZW5kaWYKIAogICAgIG1faHR0cEhlYWRlckZpZWxkcy5jbGVhcigp
OwotICAgIGlmIChDRkRpY3Rpb25hcnlSZWYgaGVhZGVycyA9IENGVVJMUmVxdWVzdENvcHlBbGxI
VFRQSGVhZGVyRmllbGRzKG1fY2ZSZXF1ZXN0LmdldCgpKSkgewotICAgICAgICBDRkluZGV4IGhl
YWRlckNvdW50ID0gQ0ZEaWN0aW9uYXJ5R2V0Q291bnQoaGVhZGVycyk7CisgICAgaWYgKGF1dG8g
aGVhZGVycyA9IGFkb3B0Q0YoQ0ZVUkxSZXF1ZXN0Q29weUFsbEhUVFBIZWFkZXJGaWVsZHMobV9j
ZlJlcXVlc3QuZ2V0KCkpKSkgeworICAgICAgICBDRkluZGV4IGhlYWRlckNvdW50ID0gQ0ZEaWN0
aW9uYXJ5R2V0Q291bnQoaGVhZGVycy5nZXQoKSk7CiAgICAgICAgIFZlY3Rvcjxjb25zdCB2b2lk
KiwgMTI4PiBrZXlzKGhlYWRlckNvdW50KTsKICAgICAgICAgVmVjdG9yPGNvbnN0IHZvaWQqLCAx
Mjg+IHZhbHVlcyhoZWFkZXJDb3VudCk7Ci0gICAgICAgIENGRGljdGlvbmFyeUdldEtleXNBbmRW
YWx1ZXMoaGVhZGVycywga2V5cy5kYXRhKCksIHZhbHVlcy5kYXRhKCkpOworICAgICAgICBDRkRp
Y3Rpb25hcnlHZXRLZXlzQW5kVmFsdWVzKGhlYWRlcnMuZ2V0KCksIGtleXMuZGF0YSgpLCB2YWx1
ZXMuZGF0YSgpKTsKICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBoZWFkZXJDb3VudDsgKytp
KQogICAgICAgICAgICAgbV9odHRwSGVhZGVyRmllbGRzLnNldCgoQ0ZTdHJpbmdSZWYpa2V5c1tp
XSwgKENGU3RyaW5nUmVmKXZhbHVlc1tpXSk7Ci0gICAgICAgIENGUmVsZWFzZShoZWFkZXJzKTsK
ICAgICB9CiAKICAgICBtX3Jlc3BvbnNlQ29udGVudERpc3Bvc2l0aW9uRW5jb2RpbmdGYWxsYmFj
a0FycmF5LmNsZWFyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4v
RHJhZ0ltYWdlQ0dXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdJbWFn
ZUNHV2luLmNwcAppbmRleCAzNGVkOWVmOGNmNGY4NjZjYTAzZmRjYTkzMDRhOTYwOTZiYzY1Yjll
Li5iNDVlNGQ0YTBhMjVkZmNjNDc2ZjlhYWJmNzU3YzcwYWUyMmM5OTVmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdlQ0dXaW4uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnSW1hZ2VDR1dpbi5jcHAKQEAgLTY3LDE1ICs2Nywx
MyBAQCBHRElPYmplY3Q8SEJJVE1BUD4gYWxsb2NJbWFnZShIREMgZGMsIEludFNpemUgc2l6ZSwg
Q0dDb250ZXh0UmVmICp0YXJnZXRSZWYpCiAgICAgcmV0dXJuIGhibXA7CiB9CiAKLXN0YXRpYyBD
R0NvbnRleHRSZWYgY3JlYXRlQ2dDb250ZXh0RnJvbUJpdG1hcChIQklUTUFQIGJpdG1hcCkKK3N0
YXRpYyBSZXRhaW5QdHI8Q0dDb250ZXh0UmVmPiBjcmVhdGVDZ0NvbnRleHRGcm9tQml0bWFwKEhC
SVRNQVAgYml0bWFwKQogewogICAgIEJJVE1BUCBpbmZvOwogICAgIEdldE9iamVjdChiaXRtYXAs
IHNpemVvZihpbmZvKSwgJmluZm8pOwogICAgIEFTU0VSVChpbmZvLmJtQml0c1BpeGVsID09IDMy
KTsKIAotICAgIENHQ29udGV4dFJlZiBiaXRtYXBDb250ZXh0ID0gQ0dCaXRtYXBDb250ZXh0Q3Jl
YXRlKGluZm8uYm1CaXRzLCBpbmZvLmJtV2lkdGgsIGluZm8uYm1IZWlnaHQsIDgsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5mby5ibVdp
ZHRoQnl0ZXMsIHNSR0JDb2xvclNwYWNlUmVmKCksIGtDR0JpdG1hcEJ5dGVPcmRlcjMyTGl0dGxl
IHwga0NHSW1hZ2VBbHBoYU5vbmVTa2lwRmlyc3QpOwotICAgIHJldHVybiBiaXRtYXBDb250ZXh0
OworICAgIHJldHVybiBhZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0ZShpbmZvLmJtQml0cywg
aW5mby5ibVdpZHRoLCBpbmZvLmJtSGVpZ2h0LCA4LCBpbmZvLmJtV2lkdGhCeXRlcywgc1JHQkNv
bG9yU3BhY2VSZWYoKSwga0NHQml0bWFwQnl0ZU9yZGVyMzJMaXR0bGUgfCBrQ0dJbWFnZUFscGhh
Tm9uZVNraXBGaXJzdCkpOwogfQogCiBEcmFnSW1hZ2VSZWYgc2NhbGVEcmFnSW1hZ2UoRHJhZ0lt
YWdlUmVmIGltYWdlUmVmLCBGbG9hdFNpemUgc2NhbGUpCkBAIC0xMDEsMTUgKzk5LDEzIEBAIERy
YWdJbWFnZVJlZiBzY2FsZURyYWdJbWFnZShEcmFnSW1hZ2VSZWYgaW1hZ2VSZWYsIEZsb2F0U2l6
ZSBzY2FsZSkKICAgICBpZiAoIWhibXApCiAgICAgICAgIGdvdG8gZXhpdDsKIAotICAgIENHQ29u
dGV4dFJlZiBzcmNDb250ZXh0ID0gY3JlYXRlQ2dDb250ZXh0RnJvbUJpdG1hcChpbWFnZS5nZXQo
KSk7Ci0gICAgQ0dJbWFnZVJlZiBzcmNJbWFnZSA9IENHQml0bWFwQ29udGV4dENyZWF0ZUltYWdl
KHNyY0NvbnRleHQpOworICAgIGF1dG8gc3JjQ29udGV4dCA9IGNyZWF0ZUNnQ29udGV4dEZyb21C
aXRtYXAoaW1hZ2UuZ2V0KCkpOworICAgIGF1dG8gc3JjSW1hZ2UgPSBhZG9wdENGKENHQml0bWFw
Q29udGV4dENyZWF0ZUltYWdlKHNyY0NvbnRleHQpKTsKICAgICBDR1JlY3QgcmVjdDsKICAgICBy
ZWN0Lm9yaWdpbi54ID0gMDsKICAgICByZWN0Lm9yaWdpbi55ID0gMDsKICAgICByZWN0LnNpemUg
PSBkc3RTaXplOwotICAgIENHQ29udGV4dERyYXdJbWFnZSh0YXJnZXRDb250ZXh0LCByZWN0LCBz
cmNJbWFnZSk7Ci0gICAgQ0dJbWFnZVJlbGVhc2Uoc3JjSW1hZ2UpOwotICAgIENHQ29udGV4dFJl
bGVhc2Uoc3JjQ29udGV4dCk7CisgICAgQ0dDb250ZXh0RHJhd0ltYWdlKHRhcmdldENvbnRleHQs
IHJlY3QsIHNyY0ltYWdlLmdldCgpKTsKICAgICBDR0NvbnRleHRSZWxlYXNlKHRhcmdldENvbnRl
eHQpOwogCiBleGl0OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1dl
YkNvcmVCdW5kbGVXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1dlYkNvcmVC
dW5kbGVXaW4uY3BwCmluZGV4IDNiN2M4ZTFhMjBhNDUxYWQ3Y2IzODQ4ZWI2MTYyMmU5N2ZkMDI0
YzcuLjk1NjNkZjNlMmVkNzYwMDQwNjczNTgwMzZiYmU3N2FhNTEyZjJkMzkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9XZWJDb3JlQnVuZGxlV2luLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vV2ViQ29yZUJ1bmRsZVdpbi5jcHAKQEAgLTM1LDEy
ICszNSwxMCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBDRkJ1bmRsZVJlZiBj
cmVhdGVXZWJLaXRCdW5kbGUoKQorc3RhdGljIFJldGFpblB0cjxDRkJ1bmRsZVJlZj4gY3JlYXRl
V2ViS2l0QnVuZGxlKCkKIHsKLSAgICBpZiAoQ0ZCdW5kbGVSZWYgZXhpc3RpbmdCdW5kbGUgPSBD
RkJ1bmRsZUdldEJ1bmRsZVdpdGhJZGVudGlmaWVyKENGU1RSKCJjb20uYXBwbGUuV2ViS2l0Iikp
KSB7Ci0gICAgICAgIENGUmV0YWluKGV4aXN0aW5nQnVuZGxlKTsKKyAgICBpZiAoQ0ZCdW5kbGVS
ZWYgZXhpc3RpbmdCdW5kbGUgPSBDRkJ1bmRsZUdldEJ1bmRsZVdpdGhJZGVudGlmaWVyKENGU1RS
KCJjb20uYXBwbGUuV2ViS2l0IikpKQogICAgICAgICByZXR1cm4gZXhpc3RpbmdCdW5kbGU7Ci0g
ICAgfQogCiAgICAgd2NoYXJfdCBkbGxQYXRoQnVmZmVyW01BWF9QQVRIXTsKICAgICBEV09SRCBs
ZW5ndGggPSA6OkdldE1vZHVsZUZpbGVOYW1lVyhXZWJDb3JlOjppbnN0YW5jZUhhbmRsZSgpLCBk
bGxQYXRoQnVmZmVyLCBXVEZfQVJSQVlfTEVOR1RIKGRsbFBhdGhCdWZmZXIpKTsKQEAgLTUyLDE0
ICs1MCwxNCBAQCBzdGF0aWMgQ0ZCdW5kbGVSZWYgY3JlYXRlV2ViS2l0QnVuZGxlKCkKICAgICBS
ZXRhaW5QdHI8Q0ZVUkxSZWY+IGRsbERpcmVjdG9yeVVSTCA9IGFkb3B0Q0YoQ0ZVUkxDcmVhdGVD
b3B5RGVsZXRpbmdMYXN0UGF0aENvbXBvbmVudCgwLCBkbGxVUkwuZ2V0KCkpKTsKICAgICBSZXRh
aW5QdHI8Q0ZVUkxSZWY+IHJlc291cmNlc0RpcmVjdG9yeVVSTCA9IGFkb3B0Q0YoQ0ZVUkxDcmVh
dGVDb3B5QXBwZW5kaW5nUGF0aENvbXBvbmVudCgwLCBkbGxEaXJlY3RvcnlVUkwuZ2V0KCksIENG
U1RSKCJXZWJLaXQucmVzb3VyY2VzIiksIHRydWUpKTsKIAotICAgIHJldHVybiBDRkJ1bmRsZUNy
ZWF0ZSgwLCByZXNvdXJjZXNEaXJlY3RvcnlVUkwuZ2V0KCkpOworICAgIHJldHVybiBhZG9wdENG
KENGQnVuZGxlQ3JlYXRlKDAsIHJlc291cmNlc0RpcmVjdG9yeVVSTC5nZXQoKSkpOwogfQogCiBD
RkJ1bmRsZVJlZiB3ZWJLaXRCdW5kbGUoKQogewotICAgIHN0YXRpYyBDRkJ1bmRsZVJlZiBidW5k
bGUgPSBjcmVhdGVXZWJLaXRCdW5kbGUoKTsKLSAgICBBU1NFUlQoYnVuZGxlKTsKLSAgICByZXR1
cm4gYnVuZGxlOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8Q0ZCdW5kbGVS
ZWY+PiBidW5kbGUgPSBjcmVhdGVXZWJLaXRCdW5kbGUoKTsKKyAgICBBU1NFUlQoYnVuZGxlLmdl
dCgpKTsKKyAgICByZXR1cm4gYnVuZGxlLmdldCgpLmdldCgpOwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhl
bWVNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0KaW5k
ZXggYTNiNzQwNmRhNDkxMjcxYjAxNjg5MjJiNjYyZmUyMmJhYjM3OWEyOS4uNDYzZWJhMDZjZDI5
OTFmYWZmMTdhMzRjMWVkMDk3YjFkNzFlMWJmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUaGVtZU1hYy5tbQpAQCAtMTUzLDEwICsxNTMsOSBAQCAtIChDRkRpY3Rpb25hcnlS
ZWYpX2FkanVzdGVkQ29yZVVJRHJhd09wdGlvbnNGb3JEcmF3aW5nQm9yZGVyc09ubHk6KENGRGlj
dGlvbmFyeQogCiAgICAgLy8gRklYTUU6IFRoaXMgaXMgYSB3b3JrYXJvdW5kIGZvciA8cmRhcjov
L3Byb2JsZW0vMTEzODU0NjE+LiBXaGVuIHRoYXQgYnVnIGlzIHJlc29sdmVkLCB3ZSBzaG91bGQg
cmVtb3ZlIHRoaXMgY29kZSwKICAgICAvLyBhcyB3ZWxsIGFzIHRoZSBpbnRlcm5hbCBtZXRob2Qg
b3ZlcnJpZGVzIGJlbG93LgotICAgIENGTXV0YWJsZURpY3Rpb25hcnlSZWYgY29yZVVJRHJhd09w
dGlvbnMgPSBDRkRpY3Rpb25hcnlDcmVhdGVNdXRhYmxlQ29weShOVUxMLCAwLCBkZWZhdWx0T3B0
aW9ucyk7Ci0gICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUoY29yZVVJRHJhd09wdGlvbnMsIENGU1RS
KCJib3JkZXJzIG9ubHkiKSwga0NGQm9vbGVhblRydWUpOwotICAgIENGQXV0b3JlbGVhc2UoY29y
ZVVJRHJhd09wdGlvbnMpOwotICAgIHJldHVybiBjb3JlVUlEcmF3T3B0aW9uczsKKyAgICBhdXRv
IGNvcmVVSURyYXdPcHRpb25zID0gYWRvcHRDRihDRkRpY3Rpb25hcnlDcmVhdGVNdXRhYmxlQ29w
eShOVUxMLCAwLCBkZWZhdWx0T3B0aW9ucykpOworICAgIENGRGljdGlvbmFyeVNldFZhbHVlKGNv
cmVVSURyYXdPcHRpb25zLmdldCgpLCBDRlNUUigiYm9yZGVycyBvbmx5IiksIGtDRkJvb2xlYW5U
cnVlKTsKKyAgICByZXR1cm4gY29yZVVJRHJhd09wdGlvbnMuYXV0b3JlbGVhc2UoKTsKIH0KIAog
LSAoQ0ZEaWN0aW9uYXJ5UmVmKV9jb3JlVUlEcmF3T3B0aW9uc1dpdGhGcmFtZTooTlNSZWN0KWNl
bGxGcmFtZSBpblZpZXc6KE5TVmlldyAqKWNvbnRyb2xWaWV3IGluY2x1ZGVGb2N1czooQk9PTClp
bmNsdWRlRm9jdXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvY29jb2EvV2Vi
QXJjaGl2ZUR1bXBTdXBwb3J0LmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL2NvY29hL1dlYkFy
Y2hpdmVEdW1wU3VwcG9ydC5oCmluZGV4IDJkMDNlZjNmMjk4NmQ4YjI3MWFiNzM3MDgzMzk2MWVh
NzQ2YTgxOWUuLjIwOWE3MTE4NTdlYmQ3NzY2YTE5OTE4NjI5MGI2NDFjMDdjMTVhMmMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvY29jb2EvV2ViQXJjaGl2ZUR1bXBTdXBwb3J0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9jb2NvYS9XZWJBcmNoaXZlRHVtcFN1cHBv
cnQuaApAQCAtMjYsOSArMjYsMTAgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSA8Q29yZUZv
dW5kYXRpb24vQ29yZUZvdW5kYXRpb24uaD4KKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlVGVzdFN1cHBvcnQgewogCi1DRlN0cmluZ1JlZiBjcmVhdGVYTUxT
dHJpbmdGcm9tV2ViQXJjaGl2ZURhdGEoQ0ZEYXRhUmVmIHdlYkFyY2hpdmVEYXRhKSBXVEZfRVhQ
T1JUX1BSSVZBVEU7CitSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGNyZWF0ZVhNTFN0cmluZ0Zyb21X
ZWJBcmNoaXZlRGF0YShDRkRhdGFSZWYgd2ViQXJjaGl2ZURhdGEpIFdURl9FWFBPUlRfUFJJVkFU
RTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZVRlc3RTdXBwb3J0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL2NvY29hL1dlYkFyY2hpdmVEdW1wU3VwcG9ydC5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvY29jb2EvV2ViQXJjaGl2ZUR1bXBTdXBwb3J0Lm1tCmluZGV4IDVl
N2Q4ZTE2YTk4ZmI3MDFmNDdjNWU0OTdmYmE5MTIzZGViNzlkYzEuLmJlNjYwNzhhODNkMGNhNDli
NzFhMWZiNTNjMjNhOGM2YjgxZDc2N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvY29jb2EvV2ViQXJjaGl2ZUR1bXBTdXBwb3J0Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvY29jb2EvV2ViQXJjaGl2ZUR1bXBTdXBwb3J0Lm1tCkBAIC0yMDAsNyArMjAwLDcgQEAg
c3RhdGljIENGQ29tcGFyaXNvblJlc3VsdCBjb21wYXJlUmVzb3VyY2VVUkxzKGNvbnN0IHZvaWQg
KnZhbDEsIGNvbnN0IHZvaWQgKnZhbDIKICAgICByZXR1cm4gQ0ZTdHJpbmdDb21wYXJlKHVybDEs
IHVybDIsIGtDRkNvbXBhcmVBbmNob3JlZCk7CiB9CiAKLUNGU3RyaW5nUmVmIGNyZWF0ZVhNTFN0
cmluZ0Zyb21XZWJBcmNoaXZlRGF0YShDRkRhdGFSZWYgd2ViQXJjaGl2ZURhdGEpCitSZXRhaW5Q
dHI8Q0ZTdHJpbmdSZWY+IGNyZWF0ZVhNTFN0cmluZ0Zyb21XZWJBcmNoaXZlRGF0YShDRkRhdGFS
ZWYgd2ViQXJjaGl2ZURhdGEpCiB7CiAgICAgQ0ZFcnJvclJlZiBlcnJvciA9IDA7CiAgICAgQ0ZQ
cm9wZXJ0eUxpc3RGb3JtYXQgZm9ybWF0ID0ga0NGUHJvcGVydHlMaXN0QmluYXJ5Rm9ybWF0X3Yx
XzA7CkBAIC0yMDgsOCArMjA4LDggQEAgQ0ZTdHJpbmdSZWYgY3JlYXRlWE1MU3RyaW5nRnJvbVdl
YkFyY2hpdmVEYXRhKENGRGF0YVJlZiB3ZWJBcmNoaXZlRGF0YSkKIAogICAgIGlmICghcHJvcGVy
dHlMaXN0KSB7CiAgICAgICAgIGlmIChlcnJvcikKLSAgICAgICAgICAgIHJldHVybiBDRkVycm9y
Q29weURlc2NyaXB0aW9uKGVycm9yKTsKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PENGU3Ry
aW5nUmVmPihDRlJldGFpbihDRlNUUigiQW4gdW5rbm93biBlcnJvciBvY2N1cnJlZCBjb252ZXJ0
aW5nIGRhdGEgdG8gcHJvcGVydHkgbGlzdC4iKSkpOworICAgICAgICAgICAgcmV0dXJuIGFkb3B0
Q0YoQ0ZFcnJvckNvcHlEZXNjcmlwdGlvbihlcnJvcikpOworICAgICAgICByZXR1cm4gQ0ZTVFIo
IkFuIHVua25vd24gZXJyb3Igb2NjdXJyZWQgY29udmVydGluZyBkYXRhIHRvIHByb3BlcnR5IGxp
c3QuIik7CiAgICAgfQogCiAgICAgUmV0YWluUHRyPENGTXV0YWJsZUFycmF5UmVmPiByZXNvdXJj
ZXMgPSBhZG9wdENGKENGQXJyYXlDcmVhdGVNdXRhYmxlKGtDRkFsbG9jYXRvckRlZmF1bHQsIDAs
ICZrQ0ZUeXBlQXJyYXlDYWxsQmFja3MpKTsKQEAgLTI1MCw4ICsyNTAsOCBAQCBDRlN0cmluZ1Jl
ZiBjcmVhdGVYTUxTdHJpbmdGcm9tV2ViQXJjaGl2ZURhdGEoQ0ZEYXRhUmVmIHdlYkFyY2hpdmVE
YXRhKQogCiAgICAgaWYgKCF4bWxEYXRhKSB7CiAgICAgICAgIGlmIChlcnJvcikKLSAgICAgICAg
ICAgIHJldHVybiBDRkVycm9yQ29weURlc2NyaXB0aW9uKGVycm9yKTsKLSAgICAgICAgcmV0dXJu
IHN0YXRpY19jYXN0PENGU3RyaW5nUmVmPihDRlJldGFpbihDRlNUUigiQW4gdW5rbm93biBlcnJv
ciBvY2N1cnJlZCBjb252ZXJ0aW5nIHByb3BlcnR5IGxpc3QgdG8gZGF0YS4iKSkpOworICAgICAg
ICAgICAgcmV0dXJuIGFkb3B0Q0YoQ0ZFcnJvckNvcHlEZXNjcmlwdGlvbihlcnJvcikpOworICAg
ICAgICByZXR1cm4gQ0ZTVFIoIkFuIHVua25vd24gZXJyb3Igb2NjdXJyZWQgY29udmVydGluZyBw
cm9wZXJ0eSBsaXN0IHRvIGRhdGEuIik7CiAgICAgfQogCiAgICAgUmV0YWluUHRyPENGU3RyaW5n
UmVmPiB4bWxTdHJpbmcgPSBhZG9wdENGKENGU3RyaW5nQ3JlYXRlRnJvbUV4dGVybmFsUmVwcmVz
ZW50YXRpb24oa0NGQWxsb2NhdG9yRGVmYXVsdCwgeG1sRGF0YS5nZXQoKSwga0NGU3RyaW5nRW5j
b2RpbmdVVEY4KSk7CkBAIC0yNjYsNyArMjY2LDcgQEAgQ0ZTdHJpbmdSZWYgY3JlYXRlWE1MU3Ry
aW5nRnJvbVdlYkFyY2hpdmVEYXRhKENGRGF0YVJlZiB3ZWJBcmNoaXZlRGF0YSkKICAgICBxdWlj
a0xvb2tVUkxSZXBsYWNlbWVudHMoKS5jbGVhcigpOwogI2VuZGlmCiAKLSAgICByZXR1cm4gc3Ry
aW5nLmxlYWtSZWYoKTsKKyAgICByZXR1cm4gc3RyaW5nOwogfQogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlVGVzdFN1cHBvcnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvY29j
b2EvV2ViVmlld1Zpc3VhbElkZW50aWZpY2F0aW9uT3ZlcmxheS5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvY29jb2EvV2ViVmlld1Zpc3VhbElkZW50aWZpY2F0aW9uT3ZlcmxheS5tbQppbmRl
eCAxZjdhNjJhYTNmY2Y0N2NjMjMxMDliM2ZiYjM5M2VhYmI4MzMzZjQyLi45ZGE4ODMwYmEyYjhl
MDdjNWY2N2YwZTM0NmRiYmU5MWI5Y2VlMzdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL2NvY29hL1dlYlZpZXdWaXN1YWxJZGVudGlmaWNhdGlvbk92ZXJsYXkubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9jb2NvYS9XZWJWaWV3VmlzdWFsSWRlbnRpZmljYXRpb25P
dmVybGF5Lm1tCkBAIC0xMjQsNyArMTI0LDcgQEAgLSAodm9pZClvYnNlcnZlVmFsdWVGb3JLZXlQ
YXRoOihOU1N0cmluZyAqKWtleVBhdGggb2ZPYmplY3Q6KGlkKW9iamVjdCBjaGFuZ2U6KE4KIHN0
YXRpYyBDVEZvbnRSZWYgaWRlbnRpZmljYXRpb25Gb250KCkKIHsKICAgICBhdXRvIG1hdHJpeCA9
IENHQWZmaW5lVHJhbnNmb3JtSWRlbnRpdHk7Ci0gICAgcmV0dXJuIChDVEZvbnRSZWYpQ0ZBdXRv
cmVsZWFzZShDVEZvbnRDcmVhdGVXaXRoTmFtZShDRlNUUigiSGVsdmV0aWNhIiksIDIwLCAmbWF0
cml4KSk7CisgICAgcmV0dXJuIGFkb3B0Q0YoQ1RGb250Q3JlYXRlV2l0aE5hbWUoQ0ZTVFIoIkhl
bHZldGljYSIpLCAyMCwgJm1hdHJpeCkpLmF1dG9yZWxlYXNlKCk7CiB9CiAKIGNvbnN0ZXhwciBD
R0Zsb2F0IGhvcml6b250YWxNYXJnaW4gPSAxNTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vbWFjL1N0cmluZ1V0aWxpdGllcy5tbSBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
bWFjL1N0cmluZ1V0aWxpdGllcy5tbQppbmRleCA2ODRmZDg4Nzk3NjUzZjQ4Y2IzNmM0NWRiMjA4
MTdmNGMyYWU4NDNiLi42ZTJlZTZlM2IzMGI2ZmQ0Y2Y5MDQyYjQ5YmRiZTVkZjcyYzEwNzFjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL21hYy9TdHJpbmdVdGlsaXRpZXMubW0K
KysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9tYWMvU3RyaW5nVXRpbGl0aWVzLm1tCkBAIC0z
Niw3ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBOU1N0cmluZyAqbnNTdHJpbmdGcm9t
V2ViQ29yZVN0cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZykKIHsKLSAgICByZXR1cm4gc3RyaW5n
LmlzRW1wdHkoKSA/IEAiIiA6IENGQnJpZGdpbmdSZWxlYXNlKFdLU3RyaW5nQ29weUNGU3RyaW5n
KDAsIHRvQVBJKHN0cmluZy5pbXBsKCkpKSk7CisgICAgcmV0dXJuIHN0cmluZy5pc0VtcHR5KCkg
PyBAIiIgOiBhZG9wdENGKFdLU3RyaW5nQ29weUNGU3RyaW5nKDAsIHRvQVBJKHN0cmluZy5pbXBs
KCkpKSkuYnJpZGdpbmdBdXRvcmVsZWFzZSgpOwogfQogCiAjaWYgRU5BQkxFKFRFTEVQSE9ORV9O
VU1CRVJfREVURUNUSU9OKSAmJiBQTEFURk9STShNQUMpCkBAIC02NSwxMSArNjUsMTEgQEAgTlNT
dHJpbmcgKmZvcm1hdHRlZFBob25lTnVtYmVyU3RyaW5nKE5TU3RyaW5nICpvcmlnaW5hbFBob25l
TnVtYmVyKQogICAgIGlmICghcGhvbmVOdW1iZXIpCiAgICAgICAgIHJldHVybiBvcmlnaW5hbFBo
b25lTnVtYmVyOwogCi0gICAgQ0ZTdHJpbmdSZWYgcGhvbmVOdW1iZXJTdHJpbmcgPSBDRlBob25l
TnVtYmVyQ29weUZvcm1hdHRlZFJlcHJlc2VudGF0aW9uKHBob25lTnVtYmVyLmdldCgpKTsKKyAg
ICBhdXRvIHBob25lTnVtYmVyU3RyaW5nID0gYWRvcHRDRihDRlBob25lTnVtYmVyQ29weUZvcm1h
dHRlZFJlcHJlc2VudGF0aW9uKHBob25lTnVtYmVyLmdldCgpKSk7CiAgICAgaWYgKCFwaG9uZU51
bWJlclN0cmluZykKLSAgICAgICAgcGhvbmVOdW1iZXJTdHJpbmcgPSBDRlBob25lTnVtYmVyQ29w
eVVuZm9ybWF0dGVkUmVwcmVzZW50YXRpb24ocGhvbmVOdW1iZXIuZ2V0KCkpOworICAgICAgICBw
aG9uZU51bWJlclN0cmluZyA9IGFkb3B0Q0YoQ0ZQaG9uZU51bWJlckNvcHlVbmZvcm1hdHRlZFJl
cHJlc2VudGF0aW9uKHBob25lTnVtYmVyLmdldCgpKSk7CiAKLSAgICByZXR1cm4gQ0ZCcmlkZ2lu
Z1JlbGVhc2UocGhvbmVOdW1iZXJTdHJpbmcpOworICAgIHJldHVybiBwaG9uZU51bWJlclN0cmlu
Zy5icmlkZ2luZ0F1dG9yZWxlYXNlKCk7CiB9CiAKICNlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1BsdWdpblByb2Nlc3MvbWFjL1BsdWdpblByb2Nlc3NNYWMubW0gYi9Tb3VyY2UvV2Vi
S2l0L1BsdWdpblByb2Nlc3MvbWFjL1BsdWdpblByb2Nlc3NNYWMubW0KaW5kZXggMzFlOWNmOTJm
MDJlZTBjY2YxMDdhZmZlNTZjMDUzNDhmYmM1YzRmMC4uY2ZhNjZhNGUyZjI2MTM3YjNjOWY3MjU3
ZjY1OTNmNDhmMTQxYTQ5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNz
L21hYy9QbHVnaW5Qcm9jZXNzTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vz
cy9tYWMvUGx1Z2luUHJvY2Vzc01hYy5tbQpAQCAtMzExLDIwICszMTEsMjAgQEAgc3RhdGljIHZv
aWQgaW5pdGlhbGl6ZUNvY29hT3ZlcnJpZGVzKCkKIAogICAgIE5TTm90aWZpY2F0aW9uQ2VudGVy
ICpkZWZhdWx0Q2VudGVyID0gW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdOwog
CisgICAgLy8gV2UgbGVhayB0aGUgdHdvIG9ic2VydmVycyBzbyB0aGF0IHRoZXkgb2JzZXJ2ZSBu
b3RpZmljYXRpb25zIGZvciB0aGUgbGlmZXRpbWUgb2YgdGhlIHByb2Nlc3MuCiAgICAgLy8gVHJh
Y2sgd2hlbiBhbnkgQ29jb2Egd2luZG93IGlzIGFib3V0IHRvIGJlIGJlIHNob3duLgotICAgIGlk
IG9yZGVyT25TY3JlZW5PYnNlcnZlciA9IFtkZWZhdWx0Q2VudGVyIGFkZE9ic2VydmVyRm9yTmFt
ZTpOU1dpbmRvd1dpbGxPcmRlck9uU2NyZWVuTm90aWZpY2F0aW9uCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JqZWN0Om5pbAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBx
dWV1ZTpuaWwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdXNpbmdCbG9jazpeKE5TTm90aWZpY2F0aW9uICpub3RpZmljYXRpb24pIHsg
ZnVsbHNjcmVlbldpbmRvd1RyYWNrZXIoKS53aW5kb3dTaG93bihbbm90aWZpY2F0aW9uIG9iamVj
dF0pOyB9XTsKKyAgICBpZCBvcmRlck9uU2NyZWVuT2JzZXJ2ZXIgPSByZXRhaW5QdHIoW2RlZmF1
bHRDZW50ZXIgYWRkT2JzZXJ2ZXJGb3JOYW1lOk5TV2luZG93V2lsbE9yZGVyT25TY3JlZW5Ob3Rp
ZmljYXRpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgb2JqZWN0Om5pbAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcXVldWU6bmlsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdXNpbmdCbG9jazpeKE5TTm90aWZpY2F0aW9uICpub3RpZmljYXRpb24pIHsgZnVsbHNj
cmVlbldpbmRvd1RyYWNrZXIoKS53aW5kb3dTaG93bihbbm90aWZpY2F0aW9uIG9iamVjdF0pOyB9
XSkubGVha1JlZigpOworICAgIFVOVVNFRF9QQVJBTShvcmRlck9uU2NyZWVuT2JzZXJ2ZXIpOwog
ICAgIC8vIFRyYWNrIHdoZW4gYW55IENvY29hIHdpbmRvdyBpcyBhYm91dCB0byBiZSBoaWRkZW4u
Ci0gICAgaWQgb3JkZXJPZmZTY3JlZW5PYnNlcnZlciA9IFtkZWZhdWx0Q2VudGVyIGFkZE9ic2Vy
dmVyRm9yTmFtZTpOU1dpbmRvd1dpbGxPcmRlck9mZlNjcmVlbk5vdGlmaWNhdGlvbgotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYmpl
Y3Q6bmlsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBxdWV1ZTpuaWwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB1c2luZ0Jsb2NrOl4oTlNOb3RpZmljYXRpb24gKm5vdGlmaWNh
dGlvbikgeyBmdWxsc2NyZWVuV2luZG93VHJhY2tlcigpLndpbmRvd0hpZGRlbihbbm90aWZpY2F0
aW9uIG9iamVjdF0pOyB9XTsKLQotICAgIC8vIExlYWsgdGhlIHR3byBvYnNlcnZlcnMgc28gdGhh
dCB0aGV5IG9ic2VydmUgbm90aWZpY2F0aW9ucyBmb3IgdGhlIGxpZmV0aW1lIG9mIHRoZSBwcm9j
ZXNzLgotICAgIENGUmV0YWluKChfX2JyaWRnZSBDRlR5cGVSZWYpb3JkZXJPblNjcmVlbk9ic2Vy
dmVyKTsKLSAgICBDRlJldGFpbigoX19icmlkZ2UgQ0ZUeXBlUmVmKW9yZGVyT2ZmU2NyZWVuT2Jz
ZXJ2ZXIpOworICAgIGlkIG9yZGVyT2ZmU2NyZWVuT2JzZXJ2ZXIgPSByZXRhaW5QdHIoW2RlZmF1
bHRDZW50ZXIgYWRkT2JzZXJ2ZXJGb3JOYW1lOk5TV2luZG93V2lsbE9yZGVyT2ZmU2NyZWVuTm90
aWZpY2F0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBvYmplY3Q6bmlsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcXVldWU6bmls
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHVzaW5nQmxvY2s6XihOU05vdGlmaWNhdGlvbiAqbm90aWZpY2F0aW9uKSB7IGZ1
bGxzY3JlZW5XaW5kb3dUcmFja2VyKCkud2luZG93SGlkZGVuKFtub3RpZmljYXRpb24gb2JqZWN0
XSk7IH1dKS5sZWFrUmVmKCk7CisgICAgVU5VU0VEX1BBUkFNKG9yZGVyT2ZmU2NyZWVuT2JzZXJ2
ZXIpOworCiB9CiAKIHZvaWQgUGx1Z2luUHJvY2Vzczo6c2V0TW9kYWxXaW5kb3dJc1Nob3dpbmco
Ym9vbCBtb2RhbFdpbmRvd0lzU2hvd2luZykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL21hYy9QYXN0ZWJvYXJkVHlwZXMubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvUGFz
dGVib2FyZFR5cGVzLm1tCmluZGV4IDUzZjk4YzEzNzRmOTRkNTdiMjZlNDZhNmRiMjZiOGFkMjRl
Nzk3NWUuLmVkNGM3YjliODgxOTZmMmE5YWEwY2E2MjM4NDgxMDRjODk4ODMxMzYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9QYXN0ZWJvYXJkVHlwZXMubW0KKysrIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvbWFjL1Bhc3RlYm9hcmRUeXBlcy5tbQpAQCAtMzcsNDYgKzM3LDQw
IEBAIE5TU3RyaW5nICogY29uc3QgUGFzdGVib2FyZFR5cGVzOjpXZWJVUkxzV2l0aFRpdGxlc1Bi
b2FyZFR5cGUgPSBAIldlYlVSTHNXaXRoVGl0CiBOU1N0cmluZyAqIGNvbnN0IFBhc3RlYm9hcmRU
eXBlczo6V2ViVVJMUGJvYXJkVHlwZSA9IEAicHVibGljLnVybCI7CiBOU1N0cmluZyAqIGNvbnN0
IFBhc3RlYm9hcmRUeXBlczo6V2ViVVJMTmFtZVBib2FyZFR5cGUgPSBAInB1YmxpYy51cmwtbmFt
ZSI7CiBOU1N0cmluZyAqIGNvbnN0IFBhc3RlYm9hcmRUeXBlczo6V2ViRHVtbXlQYm9hcmRUeXBl
ID0gQCJBcHBsZSBXZWJLaXQgZHVtbXkgcGFzdGVib2FyZCB0eXBlIjsKLQotc3RhdGljIGlubGlu
ZSBOU0FycmF5ICpyZXRhaW4oTlNBcnJheSAqYXJyYXkpCi17Ci0gICAgQ0ZSZXRhaW4oYXJyYXkp
OwotICAgIHJldHVybiBhcnJheTsKLX0KICAgICAKIE5TQXJyYXkqIFBhc3RlYm9hcmRUeXBlczo6
Zm9yRWRpdGluZygpCiB7CiBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTiAKLSAg
ICBzdGF0aWMgTlNBcnJheSAqdHlwZXMgPSByZXRhaW4oQFtXZWJBcmNoaXZlUGJvYXJkVHlwZSwg
KF9fYnJpZGdlIE5TU3RyaW5nICopa1VUVHlwZVdlYkFyY2hpdmUsIFdlYkNvcmU6OmxlZ2FjeUhU
TUxQYXN0ZWJvYXJkVHlwZSgpLCBXZWJDb3JlOjpsZWdhY3lGaWxlbmFtZXNQYXN0ZWJvYXJkVHlw
ZSgpLCBXZWJDb3JlOjpsZWdhY3lUSUZGUGFzdGVib2FyZFR5cGUoKSwgV2ViQ29yZTo6bGVnYWN5
UERGUGFzdGVib2FyZFR5cGUoKSwKLSAgICAgICAgV2ViQ29yZTo6bGVnYWN5VVJMUGFzdGVib2Fy
ZFR5cGUoKSwgV2ViQ29yZTo6bGVnYWN5UlRGRFBhc3RlYm9hcmRUeXBlKCksIFdlYkNvcmU6Omxl
Z2FjeVJURlBhc3RlYm9hcmRUeXBlKCksIFdlYkNvcmU6OmxlZ2FjeVN0cmluZ1Bhc3RlYm9hcmRU
eXBlKCksIFdlYkNvcmU6OmxlZ2FjeUNvbG9yUGFzdGVib2FyZFR5cGUoKSwgKF9fYnJpZGdlIE5T
U3RyaW5nICopa1VUVHlwZVBOR10pOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5Q
dHI8TlNBcnJheT4+IHR5cGVzID0gQFtXZWJBcmNoaXZlUGJvYXJkVHlwZSwgKF9fYnJpZGdlIE5T
U3RyaW5nICopa1VUVHlwZVdlYkFyY2hpdmUsIFdlYkNvcmU6OmxlZ2FjeUhUTUxQYXN0ZWJvYXJk
VHlwZSgpLCBXZWJDb3JlOjpsZWdhY3lGaWxlbmFtZXNQYXN0ZWJvYXJkVHlwZSgpLCBXZWJDb3Jl
OjpsZWdhY3lUSUZGUGFzdGVib2FyZFR5cGUoKSwgV2ViQ29yZTo6bGVnYWN5UERGUGFzdGVib2Fy
ZFR5cGUoKSwKKyAgICAgICAgV2ViQ29yZTo6bGVnYWN5VVJMUGFzdGVib2FyZFR5cGUoKSwgV2Vi
Q29yZTo6bGVnYWN5UlRGRFBhc3RlYm9hcmRUeXBlKCksIFdlYkNvcmU6OmxlZ2FjeVJURlBhc3Rl
Ym9hcmRUeXBlKCksIFdlYkNvcmU6OmxlZ2FjeVN0cmluZ1Bhc3RlYm9hcmRUeXBlKCksIFdlYkNv
cmU6OmxlZ2FjeUNvbG9yUGFzdGVib2FyZFR5cGUoKSwgKF9fYnJpZGdlIE5TU3RyaW5nICopa1VU
VHlwZVBOR107CiBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKLSAgICByZXR1cm4g
dHlwZXM7CisgICAgcmV0dXJuIHR5cGVzLmdldCgpLmdldCgpOwogfQogCiBOU0FycmF5KiBQYXN0
ZWJvYXJkVHlwZXM6OmZvclVSTCgpCiB7Ci0gICAgc3RhdGljIE5TQXJyYXkgKnR5cGVzID0gcmV0
YWluKEBbV2ViVVJMc1dpdGhUaXRsZXNQYm9hcmRUeXBlLCBXZWJDb3JlOjpsZWdhY3lVUkxQYXN0
ZWJvYXJkVHlwZSgpLCBXZWJVUkxQYm9hcmRUeXBlLCAgV2ViVVJMTmFtZVBib2FyZFR5cGUsIFdl
YkNvcmU6OmxlZ2FjeVN0cmluZ1Bhc3RlYm9hcmRUeXBlKCksIFdlYkNvcmU6OmxlZ2FjeUZpbGVu
YW1lc1Bhc3RlYm9hcmRUeXBlKCksIFdlYkNvcmU6OmxlZ2FjeUZpbGVzUHJvbWlzZVBhc3RlYm9h
cmRUeXBlKCldKTsKLSAgICByZXR1cm4gdHlwZXM7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PFJldGFpblB0cjxOU0FycmF5Pj4gdHlwZXMgPSBAW1dlYlVSTHNXaXRoVGl0bGVzUGJvYXJkVHlw
ZSwgV2ViQ29yZTo6bGVnYWN5VVJMUGFzdGVib2FyZFR5cGUoKSwgV2ViVVJMUGJvYXJkVHlwZSwg
IFdlYlVSTE5hbWVQYm9hcmRUeXBlLCBXZWJDb3JlOjpsZWdhY3lTdHJpbmdQYXN0ZWJvYXJkVHlw
ZSgpLCBXZWJDb3JlOjpsZWdhY3lGaWxlbmFtZXNQYXN0ZWJvYXJkVHlwZSgpLCBXZWJDb3JlOjps
ZWdhY3lGaWxlc1Byb21pc2VQYXN0ZWJvYXJkVHlwZSgpXTsKKyAgICByZXR1cm4gdHlwZXMuZ2V0
KCkuZ2V0KCk7CiB9CiAKIE5TQXJyYXkqIFBhc3RlYm9hcmRUeXBlczo6Zm9ySW1hZ2VzKCkKIHsK
LSAgICBzdGF0aWMgTlNBcnJheSAqdHlwZXMgPSByZXRhaW4oQFtXZWJDb3JlOjpsZWdhY3lUSUZG
UGFzdGVib2FyZFR5cGUoKSwgV2ViVVJMc1dpdGhUaXRsZXNQYm9hcmRUeXBlLCBXZWJDb3JlOjps
ZWdhY3lVUkxQYXN0ZWJvYXJkVHlwZSgpLCBXZWJVUkxQYm9hcmRUeXBlLCBXZWJVUkxOYW1lUGJv
YXJkVHlwZSwgV2ViQ29yZTo6bGVnYWN5U3RyaW5nUGFzdGVib2FyZFR5cGUoKV0pOwotICAgIHJl
dHVybiB0eXBlczsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPE5TQXJyYXk+
PiB0eXBlcyA9IEBbV2ViQ29yZTo6bGVnYWN5VElGRlBhc3RlYm9hcmRUeXBlKCksIFdlYlVSTHNX
aXRoVGl0bGVzUGJvYXJkVHlwZSwgV2ViQ29yZTo6bGVnYWN5VVJMUGFzdGVib2FyZFR5cGUoKSwg
V2ViVVJMUGJvYXJkVHlwZSwgV2ViVVJMTmFtZVBib2FyZFR5cGUsIFdlYkNvcmU6OmxlZ2FjeVN0
cmluZ1Bhc3RlYm9hcmRUeXBlKCldOworICAgIHJldHVybiB0eXBlcy5nZXQoKS5nZXQoKTsKIH0K
IAogTlNBcnJheSogUGFzdGVib2FyZFR5cGVzOjpmb3JJbWFnZXNXaXRoQXJjaGl2ZSgpCiB7Ci0g
ICAgc3RhdGljIE5TQXJyYXkgKnR5cGVzID0gcmV0YWluKEBbV2ViQ29yZTo6bGVnYWN5VElGRlBh
c3RlYm9hcmRUeXBlKCksIFdlYlVSTHNXaXRoVGl0bGVzUGJvYXJkVHlwZSwgV2ViQ29yZTo6bGVn
YWN5VVJMUGFzdGVib2FyZFR5cGUoKSwgV2ViVVJMUGJvYXJkVHlwZSwgV2ViVVJMTmFtZVBib2Fy
ZFR5cGUsIFdlYkNvcmU6OmxlZ2FjeVN0cmluZ1Bhc3RlYm9hcmRUeXBlKCksIFdlYkNvcmU6Omxl
Z2FjeVJURkRQYXN0ZWJvYXJkVHlwZSgpLCBXZWJBcmNoaXZlUGJvYXJkVHlwZV0pOwotICAgIHJl
dHVybiB0eXBlczsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPE5TQXJyYXk+
PiB0eXBlcyA9IEBbV2ViQ29yZTo6bGVnYWN5VElGRlBhc3RlYm9hcmRUeXBlKCksIFdlYlVSTHNX
aXRoVGl0bGVzUGJvYXJkVHlwZSwgV2ViQ29yZTo6bGVnYWN5VVJMUGFzdGVib2FyZFR5cGUoKSwg
V2ViVVJMUGJvYXJkVHlwZSwgV2ViVVJMTmFtZVBib2FyZFR5cGUsIFdlYkNvcmU6OmxlZ2FjeVN0
cmluZ1Bhc3RlYm9hcmRUeXBlKCksIFdlYkNvcmU6OmxlZ2FjeVJURkRQYXN0ZWJvYXJkVHlwZSgp
LCBXZWJBcmNoaXZlUGJvYXJkVHlwZV07CisgICAgcmV0dXJuIHR5cGVzLmdldCgpLmdldCgpOwog
fQogCiBOU0FycmF5KiBQYXN0ZWJvYXJkVHlwZXM6OmZvclNlbGVjdGlvbigpCiB7CiBBTExPV19E
RVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTiAKLSAgICBzdGF0aWMgTlNBcnJheSAqdHlwZXMg
PSByZXRhaW4oQFtXZWJBcmNoaXZlUGJvYXJkVHlwZSwgKF9fYnJpZGdlIE5TU3RyaW5nICopa1VU
VHlwZVdlYkFyY2hpdmUsIFdlYkNvcmU6OmxlZ2FjeVJURkRQYXN0ZWJvYXJkVHlwZSgpLCBXZWJD
b3JlOjpsZWdhY3lSVEZQYXN0ZWJvYXJkVHlwZSgpLCBXZWJDb3JlOjpsZWdhY3lTdHJpbmdQYXN0
ZWJvYXJkVHlwZSgpXSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxOU0Fy
cmF5Pj4gdHlwZXMgPSBAW1dlYkFyY2hpdmVQYm9hcmRUeXBlLCAoX19icmlkZ2UgTlNTdHJpbmcg
KilrVVRUeXBlV2ViQXJjaGl2ZSwgV2ViQ29yZTo6bGVnYWN5UlRGRFBhc3RlYm9hcmRUeXBlKCks
IFdlYkNvcmU6OmxlZ2FjeVJURlBhc3RlYm9hcmRUeXBlKCksIFdlYkNvcmU6OmxlZ2FjeVN0cmlu
Z1Bhc3RlYm9hcmRUeXBlKCldOwogQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECi0g
ICAgcmV0dXJuIHR5cGVzOworICAgIHJldHVybiB0eXBlcy5nZXQoKS5nZXQoKTsKIH0KICAgICAK
IH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvV2ViVmlld0ltcGwubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9X
ZWJWaWV3SW1wbC5tbQppbmRleCBhNWM2YmJjMGNjZmU0ZmIyZWIzMDk3NzdjZThmN2U3Y2E2YmIz
OTljLi5lNmZiNzgxMGY5NjU3OGVlMjNmMWY5YmEyMzFhYTE0MzY5OTlkODkyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQpAQCAtMjI1OSw4ICsyMjU5
LDcgQEAgYm9vbCBXZWJWaWV3SW1wbDo6YWNjZXB0c0ZpcnN0TW91c2UoTlNFdmVudCAqZXZlbnQp
CiAgICAgLy8gVGhlcmUncyBhIGNoYW5jZSB0aGF0IHJlc3BvbmRpbmcgdG8gdGhpcyBldmVudCB3
aWxsIHJ1biBhIG5lc3RlZCBldmVudCBsb29wLCBhbmQKICAgICAvLyBmZXRjaGluZyBhIG5ldyBl
dmVudCBtaWdodCByZWxlYXNlIHRoZSBvbGQgb25lLiBSZXRhaW5pbmcgYW5kIHRoZW4gYXV0b3Jl
bGVhc2luZwogICAgIC8vIHRoZSBjdXJyZW50IGV2ZW50IHByZXZlbnRzIHRoYXQgZnJvbSBjYXVz
aW5nIGEgcHJvYmxlbSBpbnNpZGUgV2ViS2l0IG9yIEFwcEtpdCBjb2RlLgotICAgIENGUmV0YWlu
KChfX2JyaWRnZSBDRlR5cGVSZWYpZXZlbnQpOwotICAgIENGQXV0b3JlbGVhc2UoKF9fYnJpZGdl
IENGVHlwZVJlZilldmVudCk7CisgICAgcmV0YWluUHRyKGV2ZW50KS5hdXRvcmVsZWFzZSgpOwog
CiAgICAgaWYgKCFbbV92aWV3IGhpdFRlc3Q6ZXZlbnQubG9jYXRpb25JbldpbmRvd10pCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKQEAgLTIyNzksOCArMjI3OCw3IEBAIGJvb2wgV2ViVmlld0ltcGw6
OnNob3VsZERlbGF5V2luZG93T3JkZXJpbmdGb3JFdmVudChOU0V2ZW50ICpldmVudCkKICAgICAv
LyBUaGVyZSdzIGEgY2hhbmNlIHRoYXQgcmVzcG9uZGluZyB0byB0aGlzIGV2ZW50IHdpbGwgcnVu
IGEgbmVzdGVkIGV2ZW50IGxvb3AsIGFuZAogICAgIC8vIGZldGNoaW5nIGEgbmV3IGV2ZW50IG1p
Z2h0IHJlbGVhc2UgdGhlIG9sZCBvbmUuIFJldGFpbmluZyBhbmQgdGhlbiBhdXRvcmVsZWFzaW5n
CiAgICAgLy8gdGhlIGN1cnJlbnQgZXZlbnQgcHJldmVudHMgdGhhdCBmcm9tIGNhdXNpbmcgYSBw
cm9ibGVtIGluc2lkZSBXZWJLaXQgb3IgQXBwS2l0IGNvZGUuCi0gICAgQ0ZSZXRhaW4oKF9fYnJp
ZGdlIENGVHlwZVJlZilldmVudCk7Ci0gICAgQ0ZBdXRvcmVsZWFzZSgoX19icmlkZ2UgQ0ZUeXBl
UmVmKWV2ZW50KTsKKyAgICByZXRhaW5QdHIoZXZlbnQpLmF1dG9yZWxlYXNlKCk7CiAKICAgICBp
ZiAoIVttX3ZpZXcgaGl0VGVzdDpldmVudC5sb2NhdGlvbkluV2luZG93XSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwpAQCAtNDgxMSwyNCArNDgwOSwyMCBAQCB2b2lkIFdlYlZpZXdJbXBsOjpkb25l
V2l0aEtleUV2ZW50KE5TRXZlbnQgKmV2ZW50LCBib29sIGV2ZW50V2FzSGFuZGxlZCkKIAogTlNB
cnJheSAqV2ViVmlld0ltcGw6OnZhbGlkQXR0cmlidXRlc0Zvck1hcmtlZFRleHQoKQogewotICAg
IHN0YXRpYyBOU0FycmF5ICp2YWxpZEF0dHJpYnV0ZXM7Ci0gICAgaWYgKCF2YWxpZEF0dHJpYnV0
ZXMpIHsKLSAgICAgICAgdmFsaWRBdHRyaWJ1dGVzID0gQFsKLSAgICAgICAgICAgIE5TVW5kZXJs
aW5lU3R5bGVBdHRyaWJ1dGVOYW1lLAotICAgICAgICAgICAgTlNVbmRlcmxpbmVDb2xvckF0dHJp
YnV0ZU5hbWUsCi0gICAgICAgICAgICBOU01hcmtlZENsYXVzZVNlZ21lbnRBdHRyaWJ1dGVOYW1l
LAotICAgICAgICAgICAgTlNUZXh0QWx0ZXJuYXRpdmVzQXR0cmlidXRlTmFtZSwKLSAgICAgICAg
ICAgIE5TVGV4dEluc2VydGlvblVuZG9hYmxlQXR0cmlidXRlTmFtZSwKLSAgICAgICAgXTsKLSAg
ICAgICAgLy8gTlNUZXh0IGFsc28gc3VwcG9ydHMgdGhlIGZvbGxvd2luZyBhdHRyaWJ1dGVzLCBi
dXQgaXQncwotICAgICAgICAvLyBoYXJkIHRvIHRlbGwgd2hpY2ggYXJlIHJlYWxseSByZXF1aXJl
ZCBmb3IgdGV4dCBpbnB1dCB0bwotICAgICAgICAvLyB3b3JrIHdlbGw7IEkgaGF2ZSBub3Qgc2Vl
biBhbnkgaW5wdXQgbWV0aG9kIG1ha2UgdXNlIG9mIHRoZW0geWV0LgotICAgICAgICAvLyAgICAg
TlNGb250QXR0cmlidXRlTmFtZSwgTlNGb3JlZ3JvdW5kQ29sb3JBdHRyaWJ1dGVOYW1lLAotICAg
ICAgICAvLyAgICAgTlNCYWNrZ3JvdW5kQ29sb3JBdHRyaWJ1dGVOYW1lLCBOU0xhbmd1YWdlQXR0
cmlidXRlTmFtZS4KLSAgICAgICAgQ0ZSZXRhaW4odmFsaWRBdHRyaWJ1dGVzKTsKLSAgICB9Cisg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxOU0FycmF5Pj4gdmFsaWRBdHRyaWJ1
dGVzID0gQFsKKyAgICAgICAgTlNVbmRlcmxpbmVTdHlsZUF0dHJpYnV0ZU5hbWUsCisgICAgICAg
IE5TVW5kZXJsaW5lQ29sb3JBdHRyaWJ1dGVOYW1lLAorICAgICAgICBOU01hcmtlZENsYXVzZVNl
Z21lbnRBdHRyaWJ1dGVOYW1lLAorICAgICAgICBOU1RleHRBbHRlcm5hdGl2ZXNBdHRyaWJ1dGVO
YW1lLAorICAgICAgICBOU1RleHRJbnNlcnRpb25VbmRvYWJsZUF0dHJpYnV0ZU5hbWUsCisgICAg
XTsKKyAgICAvLyBOU1RleHQgYWxzbyBzdXBwb3J0cyB0aGUgZm9sbG93aW5nIGF0dHJpYnV0ZXMs
IGJ1dCBpdCdzCisgICAgLy8gaGFyZCB0byB0ZWxsIHdoaWNoIGFyZSByZWFsbHkgcmVxdWlyZWQg
Zm9yIHRleHQgaW5wdXQgdG8KKyAgICAvLyB3b3JrIHdlbGw7IEkgaGF2ZSBub3Qgc2VlbiBhbnkg
aW5wdXQgbWV0aG9kIG1ha2UgdXNlIG9mIHRoZW0geWV0LgorICAgIC8vICAgICBOU0ZvbnRBdHRy
aWJ1dGVOYW1lLCBOU0ZvcmVncm91bmRDb2xvckF0dHJpYnV0ZU5hbWUsCisgICAgLy8gICAgIE5T
QmFja2dyb3VuZENvbG9yQXR0cmlidXRlTmFtZSwgTlNMYW5ndWFnZUF0dHJpYnV0ZU5hbWUuCiAg
ICAgTE9HKFRleHRJbnB1dCwgInZhbGlkQXR0cmlidXRlc0Zvck1hcmtlZFRleHQgLT4gKC4uLiki
KTsKLSAgICByZXR1cm4gdmFsaWRBdHRyaWJ1dGVzOworICAgIHJldHVybiB2YWxpZEF0dHJpYnV0
ZXMuZ2V0KCkuZ2V0KCk7CiB9CiAKIHN0YXRpYyBWZWN0b3I8V2ViQ29yZTo6Q29tcG9zaXRpb25V
bmRlcmxpbmU+IGV4dHJhY3RVbmRlcmxpbmVzKE5TQXR0cmlidXRlZFN0cmluZyAqc3RyaW5nKQpA
QCAtNTIwMiw4ICs1MTk2LDcgQEAgYm9vbCBXZWJWaWV3SW1wbDo6cGVyZm9ybUtleUVxdWl2YWxl
bnQoTlNFdmVudCAqZXZlbnQpCiAgICAgLy8gVGhlcmUncyBhIGNoYW5jZSB0aGF0IHJlc3BvbmRp
bmcgdG8gdGhpcyBldmVudCB3aWxsIHJ1biBhIG5lc3RlZCBldmVudCBsb29wLCBhbmQKICAgICAv
LyBmZXRjaGluZyBhIG5ldyBldmVudCBtaWdodCByZWxlYXNlIHRoZSBvbGQgb25lLiBSZXRhaW5p
bmcgYW5kIHRoZW4gYXV0b3JlbGVhc2luZwogICAgIC8vIHRoZSBjdXJyZW50IGV2ZW50IHByZXZl
bnRzIHRoYXQgZnJvbSBjYXVzaW5nIGEgcHJvYmxlbSBpbnNpZGUgV2ViS2l0IG9yIEFwcEtpdCBj
b2RlLgotICAgIENGUmV0YWluKChfX2JyaWRnZSBDRlR5cGVSZWYpZXZlbnQpOwotICAgIENGQXV0
b3JlbGVhc2UoKF9fYnJpZGdlIENGVHlwZVJlZilldmVudCk7CisgICAgcmV0YWluUHRyKGV2ZW50
KS5hdXRvcmVsZWFzZSgpOwogCiAgICAgLy8gV2UgZ2V0IEVzYyBrZXkgaGVyZSBhZnRlciBwcm9j
ZXNzaW5nIGVpdGhlciBFc2Mgb3IgQ21kK3BlcmlvZC4gVGhlIGZvcm1lciBzdGFydHMgYXMgYSBr
ZXlEb3duLCBhbmQgdGhlIGxhdHRlciBzdGFydHMgYXMgYSBrZXkgZXF1aXZhbGVudCwKICAgICAv
LyBidXQgYm90aCBnZXQgdHJhbnNmb3JtZWQgdG8gYSBjYW5jZWxPcGVyYXRpb246IGNvbW1hbmQs
IGV4ZWN1dGluZyB3aGljaCBwYXNzZXMgYW4gRXNjIGtleSBldmVudCB0byAtcGVyZm9ybUtleUVx
dWl2YWxlbnQ6LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9y
L2lvcy9XS0luc3BlY3RvckhpZ2hsaWdodFZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9JbnNwZWN0b3IvaW9zL1dLSW5zcGVjdG9ySGlnaGxpZ2h0Vmlldy5tbQppbmRleCA0NDEyNDQz
N2MyNDM0MjVjM2VkZGI5OTM3NmNkNjIyNGYyZmMxNmEzLi5iMWIwYmUzNGJmMzMwYzBlZTU1NWVk
OGRjNzQxZmM2NDJiMTA5YWY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9J
bnNwZWN0b3IvaW9zL1dLSW5zcGVjdG9ySGlnaGxpZ2h0Vmlldy5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvaW9zL1dLSW5zcGVjdG9ySGlnaGxpZ2h0Vmlldy5tbQpA
QCAtMTgzLDI4ICsxODMsMjYgQEAgc3RhdGljIHZvaWQgbGF5ZXJQYXRoV2l0aEhvbGUoQ0FTaGFw
ZUxheWVyICpsYXllciwgY29uc3QgV2ViQ29yZTo6RmxvYXRRdWFkJiBvdXQKICAgICAgICAgaW5u
ZXJIb2xlID0gcXVhZEludGVyc2VjdGlvbihvdXRlclF1YWQsIGhvbGVRdWFkKTsKIAogICAgIC8v
IENsb2Nrd2lzZSBpbnNpZGUgcmVjdCAoaG9sZSksIENvdW50ZXItQ2xvY2t3aXNlIG91dHNpZGUg
cmVjdCAoZmlsbCkuCi0gICAgQ0dNdXRhYmxlUGF0aFJlZiBwYXRoID0gQ0dQYXRoQ3JlYXRlTXV0
YWJsZSgpOwotICAgIENHUGF0aE1vdmVUb1BvaW50KHBhdGgsIDAsIGlubmVySG9sZS5wMSgpLngo
KSwgaW5uZXJIb2xlLnAxKCkueSgpKTsKLSAgICBDR1BhdGhBZGRMaW5lVG9Qb2ludChwYXRoLCAw
LCBpbm5lckhvbGUucDIoKS54KCksIGlubmVySG9sZS5wMigpLnkoKSk7Ci0gICAgQ0dQYXRoQWRk
TGluZVRvUG9pbnQocGF0aCwgMCwgaW5uZXJIb2xlLnAzKCkueCgpLCBpbm5lckhvbGUucDMoKS55
KCkpOwotICAgIENHUGF0aEFkZExpbmVUb1BvaW50KHBhdGgsIDAsIGlubmVySG9sZS5wNCgpLngo
KSwgaW5uZXJIb2xlLnA0KCkueSgpKTsKLSAgICBDR1BhdGhNb3ZlVG9Qb2ludChwYXRoLCAwLCBv
dXRlclF1YWQucDEoKS54KCksIG91dGVyUXVhZC5wMSgpLnkoKSk7Ci0gICAgQ0dQYXRoQWRkTGlu
ZVRvUG9pbnQocGF0aCwgMCwgb3V0ZXJRdWFkLnA0KCkueCgpLCBvdXRlclF1YWQucDQoKS55KCkp
OwotICAgIENHUGF0aEFkZExpbmVUb1BvaW50KHBhdGgsIDAsIG91dGVyUXVhZC5wMygpLngoKSwg
b3V0ZXJRdWFkLnAzKCkueSgpKTsKLSAgICBDR1BhdGhBZGRMaW5lVG9Qb2ludChwYXRoLCAwLCBv
dXRlclF1YWQucDIoKS54KCksIG91dGVyUXVhZC5wMigpLnkoKSk7Ci0gICAgbGF5ZXIucGF0aCA9
IHBhdGg7Ci0gICAgQ0dQYXRoUmVsZWFzZShwYXRoKTsKKyAgICBhdXRvIHBhdGggPSBhZG9wdENG
KENHUGF0aENyZWF0ZU11dGFibGUoKSk7CisgICAgQ0dQYXRoTW92ZVRvUG9pbnQocGF0aC5nZXQo
KSwgMCwgaW5uZXJIb2xlLnAxKCkueCgpLCBpbm5lckhvbGUucDEoKS55KCkpOworICAgIENHUGF0
aEFkZExpbmVUb1BvaW50KHBhdGguZ2V0KCksIDAsIGlubmVySG9sZS5wMigpLngoKSwgaW5uZXJI
b2xlLnAyKCkueSgpKTsKKyAgICBDR1BhdGhBZGRMaW5lVG9Qb2ludChwYXRoLmdldCgpLCAwLCBp
bm5lckhvbGUucDMoKS54KCksIGlubmVySG9sZS5wMygpLnkoKSk7CisgICAgQ0dQYXRoQWRkTGlu
ZVRvUG9pbnQocGF0aC5nZXQoKSwgMCwgaW5uZXJIb2xlLnA0KCkueCgpLCBpbm5lckhvbGUucDQo
KS55KCkpOworICAgIENHUGF0aE1vdmVUb1BvaW50KHBhdGguZ2V0KCksIDAsIG91dGVyUXVhZC5w
MSgpLngoKSwgb3V0ZXJRdWFkLnAxKCkueSgpKTsKKyAgICBDR1BhdGhBZGRMaW5lVG9Qb2ludChw
YXRoLmdldCgpLCAwLCBvdXRlclF1YWQucDQoKS54KCksIG91dGVyUXVhZC5wNCgpLnkoKSk7Cisg
ICAgQ0dQYXRoQWRkTGluZVRvUG9pbnQocGF0aC5nZXQoKSwgMCwgb3V0ZXJRdWFkLnAzKCkueCgp
LCBvdXRlclF1YWQucDMoKS55KCkpOworICAgIENHUGF0aEFkZExpbmVUb1BvaW50KHBhdGguZ2V0
KCksIDAsIG91dGVyUXVhZC5wMigpLngoKSwgb3V0ZXJRdWFkLnAyKCkueSgpKTsKKyAgICBsYXll
ci5wYXRoID0gcGF0aC5nZXQoKTsKIH0KIAogc3RhdGljIHZvaWQgbGF5ZXJQYXRoKENBU2hhcGVM
YXllciAqbGF5ZXIsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UXVhZCYgb3V0ZXJRdWFkKQogewotICAg
IENHTXV0YWJsZVBhdGhSZWYgcGF0aCA9IENHUGF0aENyZWF0ZU11dGFibGUoKTsKLSAgICBDR1Bh
dGhNb3ZlVG9Qb2ludChwYXRoLCAwLCBvdXRlclF1YWQucDEoKS54KCksIG91dGVyUXVhZC5wMSgp
LnkoKSk7Ci0gICAgQ0dQYXRoQWRkTGluZVRvUG9pbnQocGF0aCwgMCwgb3V0ZXJRdWFkLnA0KCku
eCgpLCBvdXRlclF1YWQucDQoKS55KCkpOwotICAgIENHUGF0aEFkZExpbmVUb1BvaW50KHBhdGgs
IDAsIG91dGVyUXVhZC5wMygpLngoKSwgb3V0ZXJRdWFkLnAzKCkueSgpKTsKLSAgICBDR1BhdGhB
ZGRMaW5lVG9Qb2ludChwYXRoLCAwLCBvdXRlclF1YWQucDIoKS54KCksIG91dGVyUXVhZC5wMigp
LnkoKSk7Ci0gICAgbGF5ZXIucGF0aCA9IHBhdGg7Ci0gICAgQ0dQYXRoUmVsZWFzZShwYXRoKTsK
KyAgICBhdXRvIHBhdGggPSBhZG9wdENGKENHUGF0aENyZWF0ZU11dGFibGUoKSk7CisgICAgQ0dQ
YXRoTW92ZVRvUG9pbnQocGF0aC5nZXQoKSwgMCwgb3V0ZXJRdWFkLnAxKCkueCgpLCBvdXRlclF1
YWQucDEoKS55KCkpOworICAgIENHUGF0aEFkZExpbmVUb1BvaW50KHBhdGguZ2V0KCksIDAsIG91
dGVyUXVhZC5wNCgpLngoKSwgb3V0ZXJRdWFkLnA0KCkueSgpKTsKKyAgICBDR1BhdGhBZGRMaW5l
VG9Qb2ludChwYXRoLmdldCgpLCAwLCBvdXRlclF1YWQucDMoKS54KCksIG91dGVyUXVhZC5wMygp
LnkoKSk7CisgICAgQ0dQYXRoQWRkTGluZVRvUG9pbnQocGF0aC5nZXQoKSwgMCwgb3V0ZXJRdWFk
LnAyKCkueCgpLCBvdXRlclF1YWQucDIoKS55KCkpOworICAgIGxheWVyLnBhdGggPSBwYXRoLmdl
dCgpOwogfQogCiAtICh2b2lkKV9sYXlvdXRGb3JOb2RlSGlnaGxpZ2h0Oihjb25zdCBXZWJDb3Jl
OjpJbnNwZWN0b3JPdmVybGF5OjpIaWdobGlnaHQmKWhpZ2hsaWdodCBvZmZzZXQ6KHVuc2lnbmVk
KW9mZnNldApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvX1dLVG91Y2hFdmVu
dEdlbmVyYXRvci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL19XS1RvdWNoRXZlbnRHZW5l
cmF0b3IubW0KaW5kZXggZTJjNzE4MTExNGY5Y2M5YTlkMTM4OTBiOTcxMjU2MDIzZDZhODM1OC4u
MjE5ZGJhNTdlZjBmNTA0NDkzMDU4YzYwY2I0ZGVjY2U4MmFmODRjNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvX1dLVG91Y2hFdmVudEdlbmVyYXRvci5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9fV0tUb3VjaEV2ZW50R2VuZXJhdG9yLm1tCkBAIC05OCw3ICs5
OCw3IEBAIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBzdHJvbmcpIE5TTXV0YWJsZURpY3Rpb25hcnkg
KmV2ZW50Q2FsbGJhY2tzOwogQGVuZAogCiBAaW1wbGVtZW50YXRpb24gX1dLVG91Y2hFdmVudEdl
bmVyYXRvciB7Ci0gICAgSU9ISURFdmVudFN5c3RlbUNsaWVudFJlZiBfaW9TeXN0ZW1DbGllbnQ7
CisgICAgUmV0YWluUHRyPElPSElERXZlbnRTeXN0ZW1DbGllbnRSZWY+IF9pb1N5c3RlbUNsaWVu
dDsKICAgICBTeW50aGV0aWNFdmVudERpZ2l0aXplckluZm8gX2FjdGl2ZVBvaW50c1tISURNYXhU
b3VjaENvdW50XTsKICAgICBOU1VJbnRlZ2VyIF9hY3RpdmVQb2ludENvdW50OwogfQpAQCAtMTMx
LDkgKzEzMSw2IEBAIC0gKGluc3RhbmNldHlwZSlpbml0CiAKIC0gKHZvaWQpZGVhbGxvYwogewot
ICBpZiAoX2lvU3lzdGVtQ2xpZW50KQotICAgICAgICBDRlJlbGVhc2UoX2lvU3lzdGVtQ2xpZW50
KTsKLQogICAgIFtfZXZlbnRDYWxsYmFja3MgcmVsZWFzZV07CiAgICAgW3N1cGVyIGRlYWxsb2Nd
OwogfQpAQCAtMjEwLDcgKzIwNyw3IEBAIC0gKElPSElERXZlbnRSZWYpX2NyZWF0ZUlPSElERXZl
bnRUeXBlOihIYW5kRXZlbnRUeXBlKWV2ZW50VHlwZQogLSAoQk9PTClfc2VuZEhJREV2ZW50OihJ
T0hJREV2ZW50UmVmKWV2ZW50UmVmCiB7CiAgICAgaWYgKCFfaW9TeXN0ZW1DbGllbnQpCi0gICAg
ICAgIF9pb1N5c3RlbUNsaWVudCA9IElPSElERXZlbnRTeXN0ZW1DbGllbnRDcmVhdGUoa0NGQWxs
b2NhdG9yRGVmYXVsdCk7CisgICAgICAgIF9pb1N5c3RlbUNsaWVudCA9IGFkb3B0Q0YoSU9ISURF
dmVudFN5c3RlbUNsaWVudENyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0KSk7CiAKICAgICBpZiAo
ZXZlbnRSZWYpIHsKICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtzdHJvbmdFdmVu
dCA9IHJldGFpblB0cihldmVudFJlZildIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9mdWxsc2NyZWVuL1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXJJT1MubW0g
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZnVsbHNjcmVlbi9XS0Z1bGxTY3JlZW5XaW5k
b3dDb250cm9sbGVySU9TLm1tCmluZGV4IDAzM2NlZWZmYjM0NGI0YzdhYTMxMGQ4YzM3NDlhOTBl
ZmM0NmMxMTIuLjg0NGVlMzIwMDliODIyZDg2MjVkZmYxYzYyZWQ3OTQwZjU5ODYyNzUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mdWxsc2NyZWVuL1dLRnVsbFNjcmVl
bldpbmRvd0NvbnRyb2xsZXJJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L2Z1bGxzY3JlZW4vV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlcklPUy5tbQpAQCAtMTAzMCwy
OCArMTAzMCwyOCBAQCAtIChOU1N0cmluZyAqKV9FVk9yZ2FuaXphdGlvbk5hbWUKICAgICBpZiAo
IXRydXN0KQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgTlNEaWN0aW9uYXJ5ICppbmZvRGlj
dGlvbmFyeSA9IENGQnJpZGdpbmdSZWxlYXNlKFNlY1RydXN0Q29weUluZm8odHJ1c3QpKTsKKyAg
ICBhdXRvIGluZm9EaWN0aW9uYXJ5ID0gYWRvcHRDRihTZWNUcnVzdENvcHlJbmZvKHRydXN0KSk7
CiAgICAgLy8gSWYgU2VjVHJ1c3RDb3B5SW5mbyByZXR1cm5lZCBOVUxMIHRoZW4gaXQncyBsaWtl
bHkgdGhhdCB0aGUgU2VjVHJ1c3RSZWYgaGFzIG5vdCBiZWVuIGV2YWx1YXRlZAogICAgIC8vIGFu
ZCB0aGUgb25seSB3YXkgdG8gZ2V0IHRoZSBpbmZvcm1hdGlvbiB3ZSBuZWVkIGlzIHRvIGNhbGwg
U2VjVHJ1c3RFdmFsdWF0ZSBvdXJzZWx2ZXMuCiAgICAgaWYgKCFpbmZvRGljdGlvbmFyeSkgewog
ICAgICAgICBpZiAoIVNlY1RydXN0RXZhbHVhdGVXaXRoRXJyb3IodHJ1c3QsIG51bGxwdHIpKQog
ICAgICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICAgICAgaW5mb0RpY3Rpb25hcnkgPSBDRkJyaWRn
aW5nUmVsZWFzZShTZWNUcnVzdENvcHlJbmZvKHRydXN0KSk7CisgICAgICAgIGluZm9EaWN0aW9u
YXJ5ID0gYWRvcHRDRihTZWNUcnVzdENvcHlJbmZvKHRydXN0KSk7CiAgICAgICAgIGlmICghaW5m
b0RpY3Rpb25hcnkpCiAgICAgICAgICAgICByZXR1cm4gbmlsOwogICAgIH0KIAogICAgIC8vIE1h
a2Ugc3VyZSB0aGF0IHRoZSBFViBjZXJ0aWZpY2F0ZSBpcyB2YWxpZCBhZ2FpbnN0IG91ciBjZXJ0
aWZpY2F0ZSBjaGFpbi4KLSAgICBpZCBoYXNFViA9IFtpbmZvRGljdGlvbmFyeSBvYmplY3RGb3JL
ZXk6KF9fYnJpZGdlIE5TU3RyaW5nICopa1NlY1RydXN0SW5mb0V4dGVuZGVkVmFsaWRhdGlvbktl
eV07CisgICAgaWQgaGFzRVYgPSBbKF9fYnJpZGdlIE5TRGljdGlvbmFyeSAqKWluZm9EaWN0aW9u
YXJ5IG9iamVjdEZvcktleTooX19icmlkZ2UgTlNTdHJpbmcgKilrU2VjVHJ1c3RJbmZvRXh0ZW5k
ZWRWYWxpZGF0aW9uS2V5XTsKICAgICBpZiAoIVtoYXNFViBpc0tpbmRPZkNsYXNzOltOU1ZhbHVl
IGNsYXNzXV0gfHwgIVtoYXNFViBib29sVmFsdWVdKQogICAgICAgICByZXR1cm4gbmlsOwogCiAg
ICAgLy8gTWFrZSBzdXJlIHRoYXQgd2UgY291bGQgY29udGFjdCByZXZvY2F0aW9uIHNlcnZlciBh
bmQgaXQgaXMgc3RpbGwgdmFsaWQuCi0gICAgaWQgaXNOb3RSZXZva2VkID0gW2luZm9EaWN0aW9u
YXJ5IG9iamVjdEZvcktleTooX19icmlkZ2UgTlNTdHJpbmcgKilrU2VjVHJ1c3RJbmZvUmV2b2Nh
dGlvbktleV07CisgICAgaWQgaXNOb3RSZXZva2VkID0gWyhfX2JyaWRnZSBOU0RpY3Rpb25hcnkg
KilpbmZvRGljdGlvbmFyeSBvYmplY3RGb3JLZXk6KF9fYnJpZGdlIE5TU3RyaW5nICopa1NlY1Ry
dXN0SW5mb1Jldm9jYXRpb25LZXldOwogICAgIGlmICghW2lzTm90UmV2b2tlZCBpc0tpbmRPZkNs
YXNzOltOU1ZhbHVlIGNsYXNzXV0gfHwgIVtpc05vdFJldm9rZWQgYm9vbFZhbHVlXSkKICAgICAg
ICAgcmV0dXJuIG5pbDsKIAotICAgIF9FVk9yZ2FuaXphdGlvbk5hbWUgPSBbaW5mb0RpY3Rpb25h
cnkgb2JqZWN0Rm9yS2V5OihfX2JyaWRnZSBOU1N0cmluZyAqKWtTZWNUcnVzdEluZm9Db21wYW55
TmFtZUtleV07CisgICAgX0VWT3JnYW5pemF0aW9uTmFtZSA9IFsoX19icmlkZ2UgTlNEaWN0aW9u
YXJ5ICopaW5mb0RpY3Rpb25hcnkgb2JqZWN0Rm9yS2V5OihfX2JyaWRnZSBOU1N0cmluZyAqKWtT
ZWNUcnVzdEluZm9Db21wYW55TmFtZUtleV07CiAgICAgcmV0dXJuIF9FVk9yZ2FuaXphdGlvbk5h
bWUuZ2V0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2Nv
YS9XZWJQcm9jZXNzQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2Vi
UHJvY2Vzc0NvY29hLm1tCmluZGV4IGUwYjkxODVhNWFiNzU1ZDNlMTA5MWQyN2VmOTY2YzlmZjA4
MWIzZmYuLjg0NjE0MGYyYTNhMTdjNDhmNDFlZmNjNjI4MWFlYzA2Nzc1Y2I5M2QgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0KKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQpAQCAt
NTI4LDcgKzUyOCw3IEBAIHZvaWQgV2ViUHJvY2Vzczo6dXBkYXRlUHJvY2Vzc05hbWUoSXNJblBy
b2Nlc3NJbml0aWFsaXphdGlvbiBpc0luUHJvY2Vzc0luaXRpYWxpCiBzdGF0aWMgTlNTdHJpbmcg
KndlYlByb2Nlc3NMb2FkZXJBY2Nlc3NpYmlsaXR5QnVuZGxlUGF0aCgpCiB7CiAjaWYgSEFWRShB
Q0NFU1NJQklMSVRZX0JVTkRMRVNfUEFUSCkKLSAgICByZXR1cm4gKF9fYnJpZGdlIE5TU3RyaW5n
ICopQ0ZBdXRvcmVsZWFzZShfQVhTQ29weVBhdGhGb3JBY2Nlc3NpYmlsaXR5QnVuZGxlKENGU1RS
KCJXZWJQcm9jZXNzTG9hZGVyIikpKTsKKyAgICByZXR1cm4gYWRvcHRDRihfQVhTQ29weVBhdGhG
b3JBY2Nlc3NpYmlsaXR5QnVuZGxlKENGU1RSKCJXZWJQcm9jZXNzTG9hZGVyIikpKS5icmlkZ2lu
Z0F1dG9yZWxlYXNlKCk7CiAjZWxzZQogICAgIE5TU3RyaW5nICpwYXRoID0gKF9fYnJpZGdlIE5T
U3RyaW5nICopR1NTeXN0ZW1Sb290RGlyZWN0b3J5KCk7CiAjaWYgUExBVEZPUk0oTUFDQ0FUQUxZ
U1QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9NaXNjL1dlYlVJS2l0U3Vw
cG9ydC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL01pc2MvV2ViVUlLaXRTdXBwb3J0Lm1t
CmluZGV4IDU5MzE0NmMwMzMyZWJkNWNkMWMxOWJjMTU3NTczMmMzMTEyNDk2OTEuLjk4YTZjZmZl
NTc1YTgxM2I3M2FlMTAxZThjMmMzMzg2Y2RhZGUzYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvaW9zL01pc2MvV2ViVUlLaXRTdXBwb3J0Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvaW9zL01pc2MvV2ViVUlLaXRTdXBwb3J0Lm1tCkBAIC01NSw5ICs1NSw4IEBAIHN0YXRp
YyB2b2lkIExvYWRXZWJMb2NhbGl6ZWRTdHJpbmdzVGltZXJDYWxsYmFjayhDRlJ1bkxvb3BUaW1l
clJlZiB0aW1lciwgdm9pZCAqCiAKIHN0YXRpYyB2b2lkIExvYWRXZWJMb2NhbGl6ZWRTdHJpbmdz
KCkKIHsKLSAgICBDRlJ1bkxvb3BUaW1lclJlZiB0aW1lciA9IENGUnVuTG9vcFRpbWVyQ3JlYXRl
KGtDRkFsbG9jYXRvckRlZmF1bHQsIENGQWJzb2x1dGVUaW1lR2V0Q3VycmVudCgpLCAwLCAwLCAw
LCAmTG9hZFdlYkxvY2FsaXplZFN0cmluZ3NUaW1lckNhbGxiYWNrLCBOVUxMKTsKLSAgICBDRlJ1
bkxvb3BBZGRUaW1lcihDRlJ1bkxvb3BHZXRDdXJyZW50KCksIHRpbWVyLCBrQ0ZSdW5Mb29wQ29t
bW9uTW9kZXMpOwotICAgIENGUmVsZWFzZSh0aW1lcik7CisgICAgYXV0byB0aW1lciA9IGFkb3B0
Q0YoQ0ZSdW5Mb29wVGltZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgQ0ZBYnNvbHV0ZVRp
bWVHZXRDdXJyZW50KCksIDAsIDAsIDAsICZMb2FkV2ViTG9jYWxpemVkU3RyaW5nc1RpbWVyQ2Fs
bGJhY2ssIE5VTEwpKTsKKyAgICBDRlJ1bkxvb3BBZGRUaW1lcihDRlJ1bkxvb3BHZXRDdXJyZW50
KCksIHRpbWVyLmdldCgpLCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMpOwogfQogCiB2b2lkIFdlYktp
dEluaXRpYWxpemUodm9pZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dl
YlZpZXcvV2ViUERGVmlld0lPUy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYlZpZXcv
V2ViUERGVmlld0lPUy5tbQppbmRleCBhYTg3N2RhMDI5YjA2ZGE5YTJmOGE2ZDZhY2MwMDkwMTkw
ZTczN2FkLi5jYmQ1MGI2ZmNhODU1NzE1YzJjN2NjM2Q2MDEyYWJkMTgyZTQwMjgwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJWaWV3L1dlYlBERlZpZXdJT1MubW0KKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViVmlldy9XZWJQREZWaWV3SU9TLm1tCkBAIC0z
MDIsMTQgKzMwMiwxMSBAQCAtICh2b2lkKV9jaGVja1BERlRpdGxlCiAKIC0gKHZvaWQpZmluaXNo
ZWRMb2FkaW5nV2l0aERhdGFTb3VyY2U6KFdlYkRhdGFTb3VyY2UgKilkYXRhU291cmNlCiB7Ci0g
ICAgQ0dEYXRhUHJvdmlkZXJSZWYgcHJvdmlkZXIgPSBDR0RhdGFQcm92aWRlckNyZWF0ZVdpdGhD
RkRhdGEoKENGRGF0YVJlZilbZGF0YVNvdXJjZSBkYXRhXSk7Ci0KKyAgICBhdXRvIHByb3ZpZGVy
ID0gYWRvcHRDRihDR0RhdGFQcm92aWRlckNyZWF0ZVdpdGhDRkRhdGEoKENGRGF0YVJlZilbZGF0
YVNvdXJjZSBkYXRhXSkpOwogICAgIGlmICghcHJvdmlkZXIpIAogICAgICAgICByZXR1cm47CiAg
ICAgCi0gICAgX1BERkRvY3VtZW50ID0gQ0dQREZEb2N1bWVudENyZWF0ZVdpdGhQcm92aWRlcihw
cm92aWRlcik7Ci0gICAgQ0dEYXRhUHJvdmlkZXJSZWxlYXNlKHByb3ZpZGVyKTsKLSAgICAgICAg
CisgICAgX1BERkRvY3VtZW50ID0gQ0dQREZEb2N1bWVudENyZWF0ZVdpdGhQcm92aWRlcihwcm92
aWRlci5nZXQoKSk7CiAgICAgaWYgKCFfUERGRG9jdW1lbnQpCiAgICAgICAgIHJldHVybjsKICAg
ICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYlZpZXcvV2ViUERGVmll
d1BsYWNlaG9sZGVyLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViVmlldy9XZWJQREZW
aWV3UGxhY2Vob2xkZXIubW0KaW5kZXggNzI1NGQwYzVhY2M2YWExYTg3OWI2MmFkMGE0ODg5OWYz
Y2U3ZGJhMS4uOWJiMDkwYWJhODYzZDgyYjY1NTIzNjU0NjlkMDkzYjk5OWE2MGI5YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViVmlldy9XZWJQREZWaWV3UGxhY2Vob2xk
ZXIubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViVmlldy9XZWJQREZWaWV3UGxh
Y2Vob2xkZXIubW0KQEAgLTI3NCwxMyArMjc0LDExIEBAIC0gKHZvaWQpZmluaXNoZWRMb2FkaW5n
V2l0aERhdGFTb3VyY2U6KFdlYkRhdGFTb3VyY2UgKilkYXRhU291cmNlCiAgICAgW3NlbGYgZGF0
YVNvdXJjZVVwZGF0ZWQ6ZGF0YVNvdXJjZV07CiAKICAgICBfZGlkRmluaXNoTG9hZCA9IFlFUzsK
LSAgICBDR0RhdGFQcm92aWRlclJlZiBwcm92aWRlciA9IENHRGF0YVByb3ZpZGVyQ3JlYXRlV2l0
aENGRGF0YSgoQ0ZEYXRhUmVmKVtkYXRhU291cmNlIGRhdGFdKTsKKyAgICBhdXRvIHByb3ZpZGVy
ID0gYWRvcHRDRihDR0RhdGFQcm92aWRlckNyZWF0ZVdpdGhDRkRhdGEoKENGRGF0YVJlZilbZGF0
YVNvdXJjZSBkYXRhXSkpOwogICAgIGlmICghcHJvdmlkZXIpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIF9kb2N1bWVudCA9IENHUERGRG9jdW1lbnRDcmVhdGVXaXRoUHJvdmlkZXIocHJvdmlkZXIp
OwotCi0gICAgQ0dEYXRhUHJvdmlkZXJSZWxlYXNlKHByb3ZpZGVyKTsKKyAgICBfZG9jdW1lbnQg
PSBDR1BERkRvY3VtZW50Q3JlYXRlV2l0aFByb3ZpZGVyKHByb3ZpZGVyLmdldCgpKTsKIAogICAg
IFtzZWxmIF9kb1Bvc3RMb2FkT3JVbmxvY2tUYXNrc107CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYkxvY2FsaXphYmxlU3RyaW5ncy5tbSBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViTG9jYWxpemFibGVTdHJpbmdzLm1tCmluZGV4IDRlZTAw
MzY0MTllN2FmY2JmODUzODIyZGM1YmU5NjQ1MThkMDI5NzkuLjI5NDBkNGFiNmYyMDk4M2VjODZi
OTJhYWEyZjYxNzJjMjE5NTMwZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L01pc2MvV2ViTG9jYWxpemFibGVTdHJpbmdzLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL01pc2MvV2ViTG9jYWxpemFibGVTdHJpbmdzLm1tCkBAIC0zMCw2ICszMCw4IEBACiAKICNp
bXBvcnQgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW1wb3J0IDx3dGYvTWFpblRocmVhZC5oPgorI2lt
cG9ydCA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAK
IFdlYkxvY2FsaXphYmxlU3RyaW5nc0J1bmRsZSBXZWJLaXRMb2NhbGl6YWJsZVN0cmluZ3NCdW5k
bGUgPSB7ICJjb20uYXBwbGUuV2ViS2l0IiwgMCB9OwogCkBAIC00NSwxMyArNDcsOSBAQCBOU1N0
cmluZyAqV2ViTG9jYWxpemVkU3RyaW5nKFdlYkxvY2FsaXphYmxlU3RyaW5nc0J1bmRsZSAqc3Ry
aW5nc0J1bmRsZSwgY29uc3QgYwogCiAgICAgTlNCdW5kbGUgKmJ1bmRsZTsKICAgICBpZiAoc3Ry
aW5nc0J1bmRsZSA9PSBOVUxMKSB7Ci0gICAgICAgIHN0YXRpYyBOU0J1bmRsZSAqbWFpbkJ1bmRs
ZTsKLSAgICAgICAgaWYgKG1haW5CdW5kbGUgPT0gbmlsKSB7Ci0gICAgICAgICAgICBtYWluQnVu
ZGxlID0gW05TQnVuZGxlIG1haW5CdW5kbGVdOwotICAgICAgICAgICAgQVNTRVJUKG1haW5CdW5k
bGUpOwotICAgICAgICAgICAgQ0ZSZXRhaW4obWFpbkJ1bmRsZSk7Ci0gICAgICAgIH0KLSAgICAg
ICAgYnVuZGxlID0gbWFpbkJ1bmRsZTsKKyAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJl
dGFpblB0cjxOU0J1bmRsZT4+IG1haW5CdW5kbGUgPSBbTlNCdW5kbGUgbWFpbkJ1bmRsZV07Cisg
ICAgICAgIEFTU0VSVChtYWluQnVuZGxlLmdldCgpKTsKKyAgICAgICAgYnVuZGxlID0gbWFpbkJ1
bmRsZS5nZXQoKS5nZXQoKTsKICAgICB9IGVsc2UgewogICAgICAgICBidW5kbGUgPSBzdHJpbmdz
QnVuZGxlLT5idW5kbGU7CiAgICAgICAgIGlmIChidW5kbGUgPT0gbmlsKSB7CkBAIC02MSw5ICs1
OSw4IEBAIE5TU3RyaW5nICpXZWJMb2NhbGl6ZWRTdHJpbmcoV2ViTG9jYWxpemFibGVTdHJpbmdz
QnVuZGxlICpzdHJpbmdzQnVuZGxlLCBjb25zdCBjCiAgICAgICAgIH0KICAgICB9CiAgICAgTlNT
dHJpbmcgKm5vdEZvdW5kID0gQCJsb2NhbGl6ZWQgc3RyaW5nIG5vdCBmb3VuZCI7Ci0gICAgQ0ZT
dHJpbmdSZWYga2V5U3RyaW5nID0gQ0ZTdHJpbmdDcmVhdGVXaXRoQ1N0cmluZ05vQ29weShOVUxM
LCBrZXksIGtDRlN0cmluZ0VuY29kaW5nVVRGOCwga0NGQWxsb2NhdG9yTnVsbCk7Ci0gICAgTlNT
dHJpbmcgKnJlc3VsdCA9IFtidW5kbGUgbG9jYWxpemVkU3RyaW5nRm9yS2V5OihfX2JyaWRnZSBO
U1N0cmluZyAqKWtleVN0cmluZyB2YWx1ZTpub3RGb3VuZCB0YWJsZTpuaWxdOwotICAgIENGUmVs
ZWFzZShrZXlTdHJpbmcpOworICAgIGF1dG8ga2V5U3RyaW5nID0gYWRvcHRDRihDRlN0cmluZ0Ny
ZWF0ZVdpdGhDU3RyaW5nTm9Db3B5KE5VTEwsIGtleSwga0NGU3RyaW5nRW5jb2RpbmdVVEY4LCBr
Q0ZBbGxvY2F0b3JOdWxsKSk7CisgICAgTlNTdHJpbmcgKnJlc3VsdCA9IFtidW5kbGUgbG9jYWxp
emVkU3RyaW5nRm9yS2V5OihfX2JyaWRnZSBOU1N0cmluZyAqKWtleVN0cmluZy5nZXQoKSB2YWx1
ZTpub3RGb3VuZCB0YWJsZTpuaWxdOwogICAgIEFTU0VSVF9XSVRIX01FU1NBR0UocmVzdWx0ICE9
IG5vdEZvdW5kLCAiY291bGQgbm90IGZpbmQgbG9jYWxpemFibGUgc3RyaW5nICVzIGluIGJ1bmRs
ZSIsIGtleSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL01pc2MvV2ViTlNEYXRhRXh0cmFzLm1tIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvTWlzYy9XZWJOU0RhdGFFeHRyYXMubW0KaW5kZXggNmVjN2NjMGRiMjI3MmNlNGJkM2Rh
MTc0ZWEzMjk0NTg2ZGRmZDE3ZS4uOGQ1MDZhMjNmYzY0YTBlOTYyOTJiNmUxZjEwZTNmMjQ4MDY4
ZTQwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJOU0RhdGFF
eHRyYXMubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJOU0RhdGFFeHRy
YXMubW0KQEAgLTgzLDkgKzgzLDkgQEAgLSAoTlNTdHJpbmcgKilfd2ViX2NhcGl0YWxpemVSRkM4
MjJIZWFkZXJGaWVsZE5hbWUKICAgICB9CiAgICAgaWYgKHNvbWV0aGluZ0NoYW5nZWQpIHsKICAg
ICAgICAgaWYgKHVzZVVuaUNoYXJQdHIpCi0gICAgICAgICAgICByZXN1bHQgPSBDRkJyaWRnaW5n
UmVsZWFzZShDRlN0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzTm9Db3B5KGtDRkFsbG9jYXRvckRl
ZmF1bHQsIHVuaUNoYXJQdHIsIGxlbiwgbnVsbHB0cikpOworICAgICAgICAgICAgcmVzdWx0ID0g
YWRvcHRDRihDRlN0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzTm9Db3B5KGtDRkFsbG9jYXRvckRl
ZmF1bHQsIHVuaUNoYXJQdHIsIGxlbiwgbnVsbHB0cikpLmJyaWRnaW5nQXV0b3JlbGVhc2UoKTsK
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgcmVzdWx0ID0gQ0ZCcmlkZ2luZ1JlbGVhc2UoQ0ZT
dHJpbmdDcmVhdGVXaXRoQ1N0cmluZ05vQ29weShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBjaGFyUHRy
LCBrQ0ZTdHJpbmdFbmNvZGluZ0lTT0xhdGluMSwgbnVsbHB0cikpOworICAgICAgICAgICAgcmVz
dWx0ID0gYWRvcHRDRihDRlN0cmluZ0NyZWF0ZVdpdGhDU3RyaW5nTm9Db3B5KGtDRkFsbG9jYXRv
ckRlZmF1bHQsIGNoYXJQdHIsIGtDRlN0cmluZ0VuY29kaW5nSVNPTGF0aW4xLCBudWxscHRyKSku
YnJpZGdpbmdBdXRvcmVsZWFzZSgpOwogICAgIH0gZWxzZQogICAgICAgICByZXN1bHQgPSBzZWxm
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9O
ZXRzY2FwZVBsdWdpbkhvc3RNYW5hZ2VyLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1
Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5Ib3N0TWFuYWdlci5tbQppbmRleCBmNjM5M2Y4OWJm
YmE0ZjY5ZmQwMzhmMjE1NjVlZjE3ZDAyZmJmMzM3Li41ZmRhM2ZjNzE3ZjMxM2E0ZGI2NWUyMmI4
MzY5NWQ4MzNjOTllZjhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVn
aW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkhvc3RNYW5hZ2VyLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSG9zdE1hbmFnZXIubW0K
QEAgLTEyMSw3ICsxMjEsNyBAQCBzdGF0aWMgTlNTdHJpbmcgKnByZWZlcnJlZEJ1bmRsZUxvY2Fs
aXphdGlvbk5hbWUoKQogICAgIGlmICghc3VjY2VzcykKICAgICAgICAgcmV0dXJuIEAiZW5fVVMi
OwogCi0gICAgcmV0dXJuIENGQnJpZGdpbmdSZWxlYXNlKENGTG9jYWxlQ3JlYXRlQ2Fub25pY2Fs
TG9jYWxlSWRlbnRpZmllckZyb21TY3JpcHRNYW5hZ2VyQ29kZXMoMCwgbGFuZ3VhZ2VDb2RlLCBy
ZWdpb25Db2RlKSk7CisgICAgcmV0dXJuIGFkb3B0Q0YoQ0ZMb2NhbGVDcmVhdGVDYW5vbmljYWxM
b2NhbGVJZGVudGlmaWVyRnJvbVNjcmlwdE1hbmFnZXJDb2RlcygwLCBsYW5ndWFnZUNvZGUsIHJl
Z2lvbkNvZGUpKS5icmlkZ2luZ0F1dG9yZWxlYXNlKCk7CiB9CiAKIGJvb2wgTmV0c2NhcGVQbHVn
aW5Ib3N0TWFuYWdlcjo6c3Bhd25QbHVnaW5Ib3N0KGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCwg
Y3B1X3R5cGVfdCBwbHVnaW5BcmNoaXRlY3R1cmUsIG1hY2hfcG9ydF90IGNsaWVudFBvcnQsIG1h
Y2hfcG9ydF90JiBwbHVnaW5Ib3N0UG9ydCwgUHJvY2Vzc1NlcmlhbE51bWJlciYgcGx1Z2luSG9z
dFBTTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0
c2NhcGVQbHVnaW5WaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJO
ZXRzY2FwZVBsdWdpblZpZXcubW0KaW5kZXggMTJhYWEzZDA4Zjc3YzhjZjhkNDFkNDQzZTEyYWI2
ZDJlMjcxMjNiMi4uOGZmZjI0NWUxNjhkMzRhZGJlZGIwMmQ0NzQ4ZjljYjg3MTEwNzdiNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdp
blZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRzY2Fw
ZVBsdWdpblZpZXcubW0KQEAgLTE0NTMsMTYgKzE0NTMsMTUgQEAgLSAoY29uc3QgY2hhciAqKXVz
ZXJBZ2VudAogCiAtKHZvaWQpc3RhdHVzOihjb25zdCBjaGFyICopbWVzc2FnZQogeyAgICAKLSAg
ICBDRlN0cmluZ1JlZiBzdGF0dXMgPSBDRlN0cmluZ0NyZWF0ZVdpdGhDU3RyaW5nKE5VTEwsIG1l
c3NhZ2UgPyBtZXNzYWdlIDogIiIsIGtDRlN0cmluZ0VuY29kaW5nVVRGOCk7CisgICAgYXV0byBz
dGF0dXMgPSBhZG9wdENGKENGU3RyaW5nQ3JlYXRlV2l0aENTdHJpbmcoTlVMTCwgbWVzc2FnZSA/
IG1lc3NhZ2UgOiAiIiwga0NGU3RyaW5nRW5jb2RpbmdVVEY4KSk7CiAgICAgaWYgKCFzdGF0dXMp
IHsKICAgICAgICAgTE9HX0VSUk9SKCJOUE5fU3RhdHVzOiB0aGUgbWVzc2FnZSB3YXMgbm90IHZh
bGlkIFVURi04Iik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCi0gICAgTE9HKFBsdWdp
bnMsICJOUE5fU3RhdHVzOiAlQCIsIHN0YXR1cyk7CisgICAgTE9HKFBsdWdpbnMsICJOUE5fU3Rh
dHVzOiAlQCIsIHN0YXR1cy5nZXQoKSk7CiAgICAgV2ViVmlldyAqd3YgPSBbc2VsZiB3ZWJWaWV3
XTsKLSAgICBbW3d2IF9VSURlbGVnYXRlRm9yd2FyZGVyXSB3ZWJWaWV3Ond2IHNldFN0YXR1c1Rl
eHQ6KF9fYnJpZGdlIE5TU3RyaW5nICopc3RhdHVzXTsKLSAgICBDRlJlbGVhc2Uoc3RhdHVzKTsK
KyAgICBbW3d2IF9VSURlbGVnYXRlRm9yd2FyZGVyXSB3ZWJWaWV3Ond2IHNldFN0YXR1c1RleHQ6
KF9fYnJpZGdlIE5TU3RyaW5nICopc3RhdHVzLmdldCgpXTsKIH0KIAogLSh2b2lkKWludmFsaWRh
dGVSZWN0OihOUFJlY3QgKilpbnZhbGlkUmVjdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUHJvZ3Jlc3NUcmFja2VyQ2xpZW50Lm1tIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUHJvZ3Jlc3NUcmFja2VyQ2xp
ZW50Lm1tCmluZGV4IGNjMzhlZjE2MWU3NTNkNTE5MTY0ZmVkMzBkZDU4NzY1MTgwOGJmMTYuLjhm
NDc4M2NiMzA4YTY0ZGRjYTViMTM0NDM1NTA4MjM2MDQxN2UwNTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlByb2dyZXNzVHJhY2tlckNsaWVu
dC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQcm9n
cmVzc1RyYWNrZXJDbGllbnQubW0KQEAgLTcwLDEzICs3MCwxMiBAQCB2b2lkIFdlYlByb2dyZXNz
VHJhY2tlckNsaWVudDo6cHJvZ3Jlc3NFc3RpbWF0ZUNoYW5nZWQoV2ViQ29yZTo6RnJhbWUmKQog
ICAgIAogICAgIC8vIFVzZSBhIENGRGljdGlvbmFyeSBzbyB3ZSBjYW4gYWRkIHRoZSBDR0NvbG9y
UmVmIHdpdGhvdXQgY29tcGlsZSBlcnJvcnMuIEFuZCB0aGVuIHRoYW5rcyB0bwogICAgIC8vIHRv
bGwtZnJlZSBicmlkZ2luZyB3ZSBjYW4gcGFzcyB0aGUgQ0ZEaWN0aW9uYXJ5IGFzIGFuIE5TRGlj
dGlvbmFyeSB0byBwb3N0Tm90aWZpY2F0aW9uLgotICAgIENGTXV0YWJsZURpY3Rpb25hcnlSZWYg
dXNlckluZm8gPSBDRkRpY3Rpb25hcnlDcmVhdGVNdXRhYmxlKGtDRkFsbG9jYXRvckRlZmF1bHQs
IDIsICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFs
dWVDYWxsQmFja3MpOwotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKHVzZXJJbmZvLCBXZWJWaWV3
UHJvZ3Jlc3NFc3RpbWF0ZWRQcm9ncmVzc0tleSwgcHJvZ3Jlc3MpOworICAgIGF1dG8gdXNlcklu
Zm8gPSBhZG9wdENGKENGRGljdGlvbmFyeUNyZWF0ZU11dGFibGUoa0NGQWxsb2NhdG9yRGVmYXVs
dCwgMiwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlW
YWx1ZUNhbGxCYWNrcykpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKHVzZXJJbmZvLmdldCgp
LCBXZWJWaWV3UHJvZ3Jlc3NFc3RpbWF0ZWRQcm9ncmVzc0tleSwgcHJvZ3Jlc3MpOwogICAgIGlm
IChib2R5QmFja2dyb3VuZENvbG9yKQotICAgICAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZSh1c2Vy
SW5mbywgV2ViVmlld1Byb2dyZXNzQmFja2dyb3VuZENvbG9yS2V5LCBib2R5QmFja2dyb3VuZENv
bG9yKTsKKyAgICAgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUodXNlckluZm8uZ2V0KCksIFdlYlZp
ZXdQcm9ncmVzc0JhY2tncm91bmRDb2xvcktleSwgYm9keUJhY2tncm91bmRDb2xvcik7CiAgICAg
Ci0gICAgV2ViVGhyZWFkUG9zdE5vdGlmaWNhdGlvbihXZWJWaWV3UHJvZ3Jlc3NFc3RpbWF0ZUNo
YW5nZWROb3RpZmljYXRpb24sIG1fd2ViVmlldywgKE5TRGljdGlvbmFyeSAqKSB1c2VySW5mbyk7
Ci0gICAgQ0ZSZWxlYXNlKHVzZXJJbmZvKTsKKyAgICBXZWJUaHJlYWRQb3N0Tm90aWZpY2F0aW9u
KFdlYlZpZXdQcm9ncmVzc0VzdGltYXRlQ2hhbmdlZE5vdGlmaWNhdGlvbiwgbV93ZWJWaWV3LCAo
TlNEaWN0aW9uYXJ5ICopdXNlckluZm8uZ2V0KCkpOwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkluc3BlY3Rvci9XZWJOb2RlSGlnaGxpZ2h0Vmll
dy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkluc3BlY3Rvci9XZWJOb2RlSGlnaGxp
Z2h0Vmlldy5tbQppbmRleCAyMGYxOWYwYmM0YmI0OGRkMmRlNTkwNmQ5ZTI3ZTNiM2MzNGMyNTNm
Li5kMzk3M2UyOTQ0NTllY2YxZGJkZWY0NDllZjJjZmQyY2FjYjhlZDM1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJJbnNwZWN0b3IvV2ViTm9kZUhpZ2hsaWdodFZpZXcu
bW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViSW5zcGVjdG9yL1dlYk5vZGVIaWdo
bGlnaHRWaWV3Lm1tCkBAIC0yMzYsMjggKzIzNiwyNiBAQCBzdGF0aWMgdm9pZCBsYXllclBhdGhX
aXRoSG9sZShDQVNoYXBlTGF5ZXIgKmxheWVyLCBjb25zdCBGbG9hdFF1YWQmIG91dGVyUXVhZCwg
YwogICAgICAgICBpbm5lckhvbGUgPSBxdWFkSW50ZXJzZWN0aW9uKG91dGVyUXVhZCwgaG9sZVF1
YWQpOwogCiAgICAgLy8gQ2xvY2t3aXNlIGluc2lkZSByZWN0IChob2xlKSwgQ291bnRlci1DbG9j
a3dpc2Ugb3V0c2lkZSByZWN0IChmaWxsKS4KLSAgICBDR011dGFibGVQYXRoUmVmIHBhdGggPSBD
R1BhdGhDcmVhdGVNdXRhYmxlKCk7Ci0gICAgQ0dQYXRoTW92ZVRvUG9pbnQocGF0aCwgMCwgaW5u
ZXJIb2xlLnAxKCkueCgpLCBpbm5lckhvbGUucDEoKS55KCkpOwotICAgIENHUGF0aEFkZExpbmVU
b1BvaW50KHBhdGgsIDAsIGlubmVySG9sZS5wMigpLngoKSwgaW5uZXJIb2xlLnAyKCkueSgpKTsK
LSAgICBDR1BhdGhBZGRMaW5lVG9Qb2ludChwYXRoLCAwLCBpbm5lckhvbGUucDMoKS54KCksIGlu
bmVySG9sZS5wMygpLnkoKSk7Ci0gICAgQ0dQYXRoQWRkTGluZVRvUG9pbnQocGF0aCwgMCwgaW5u
ZXJIb2xlLnA0KCkueCgpLCBpbm5lckhvbGUucDQoKS55KCkpOwotICAgIENHUGF0aE1vdmVUb1Bv
aW50KHBhdGgsIDAsIG91dGVyUXVhZC5wMSgpLngoKSwgb3V0ZXJRdWFkLnAxKCkueSgpKTsKLSAg
ICBDR1BhdGhBZGRMaW5lVG9Qb2ludChwYXRoLCAwLCBvdXRlclF1YWQucDQoKS54KCksIG91dGVy
UXVhZC5wNCgpLnkoKSk7Ci0gICAgQ0dQYXRoQWRkTGluZVRvUG9pbnQocGF0aCwgMCwgb3V0ZXJR
dWFkLnAzKCkueCgpLCBvdXRlclF1YWQucDMoKS55KCkpOwotICAgIENHUGF0aEFkZExpbmVUb1Bv
aW50KHBhdGgsIDAsIG91dGVyUXVhZC5wMigpLngoKSwgb3V0ZXJRdWFkLnAyKCkueSgpKTsKLSAg
ICBsYXllci5wYXRoID0gcGF0aDsKLSAgICBDR1BhdGhSZWxlYXNlKHBhdGgpOworICAgIGF1dG8g
cGF0aCA9IGFkb3B0Q0YoQ0dQYXRoQ3JlYXRlTXV0YWJsZSgpKTsKKyAgICBDR1BhdGhNb3ZlVG9Q
b2ludChwYXRoLmdldCgpLCAwLCBpbm5lckhvbGUucDEoKS54KCksIGlubmVySG9sZS5wMSgpLnko
KSk7CisgICAgQ0dQYXRoQWRkTGluZVRvUG9pbnQocGF0aC5nZXQoKSwgMCwgaW5uZXJIb2xlLnAy
KCkueCgpLCBpbm5lckhvbGUucDIoKS55KCkpOworICAgIENHUGF0aEFkZExpbmVUb1BvaW50KHBh
dGguZ2V0KCksIDAsIGlubmVySG9sZS5wMygpLngoKSwgaW5uZXJIb2xlLnAzKCkueSgpKTsKKyAg
ICBDR1BhdGhBZGRMaW5lVG9Qb2ludChwYXRoLmdldCgpLCAwLCBpbm5lckhvbGUucDQoKS54KCks
IGlubmVySG9sZS5wNCgpLnkoKSk7CisgICAgQ0dQYXRoTW92ZVRvUG9pbnQocGF0aC5nZXQoKSwg
MCwgb3V0ZXJRdWFkLnAxKCkueCgpLCBvdXRlclF1YWQucDEoKS55KCkpOworICAgIENHUGF0aEFk
ZExpbmVUb1BvaW50KHBhdGguZ2V0KCksIDAsIG91dGVyUXVhZC5wNCgpLngoKSwgb3V0ZXJRdWFk
LnA0KCkueSgpKTsKKyAgICBDR1BhdGhBZGRMaW5lVG9Qb2ludChwYXRoLmdldCgpLCAwLCBvdXRl
clF1YWQucDMoKS54KCksIG91dGVyUXVhZC5wMygpLnkoKSk7CisgICAgQ0dQYXRoQWRkTGluZVRv
UG9pbnQocGF0aC5nZXQoKSwgMCwgb3V0ZXJRdWFkLnAyKCkueCgpLCBvdXRlclF1YWQucDIoKS55
KCkpOworICAgIGxheWVyLnBhdGggPSBwYXRoLmdldCgpOwogfQogCiBzdGF0aWMgdm9pZCBsYXll
clBhdGgoQ0FTaGFwZUxheWVyICpsYXllciwgY29uc3QgRmxvYXRRdWFkJiBvdXRlclF1YWQpCiB7
Ci0gICAgQ0dNdXRhYmxlUGF0aFJlZiBwYXRoID0gQ0dQYXRoQ3JlYXRlTXV0YWJsZSgpOwotICAg
IENHUGF0aE1vdmVUb1BvaW50KHBhdGgsIDAsIG91dGVyUXVhZC5wMSgpLngoKSwgb3V0ZXJRdWFk
LnAxKCkueSgpKTsKLSAgICBDR1BhdGhBZGRMaW5lVG9Qb2ludChwYXRoLCAwLCBvdXRlclF1YWQu
cDQoKS54KCksIG91dGVyUXVhZC5wNCgpLnkoKSk7Ci0gICAgQ0dQYXRoQWRkTGluZVRvUG9pbnQo
cGF0aCwgMCwgb3V0ZXJRdWFkLnAzKCkueCgpLCBvdXRlclF1YWQucDMoKS55KCkpOwotICAgIENH
UGF0aEFkZExpbmVUb1BvaW50KHBhdGgsIDAsIG91dGVyUXVhZC5wMigpLngoKSwgb3V0ZXJRdWFk
LnAyKCkueSgpKTsKLSAgICBsYXllci5wYXRoID0gcGF0aDsKLSAgICBDR1BhdGhSZWxlYXNlKHBh
dGgpOworICAgIGF1dG8gcGF0aCA9IGFkb3B0Q0YoQ0dQYXRoQ3JlYXRlTXV0YWJsZSgpKTsKKyAg
ICBDR1BhdGhNb3ZlVG9Qb2ludChwYXRoLmdldCgpLCAwLCBvdXRlclF1YWQucDEoKS54KCksIG91
dGVyUXVhZC5wMSgpLnkoKSk7CisgICAgQ0dQYXRoQWRkTGluZVRvUG9pbnQocGF0aC5nZXQoKSwg
MCwgb3V0ZXJRdWFkLnA0KCkueCgpLCBvdXRlclF1YWQucDQoKS55KCkpOworICAgIENHUGF0aEFk
ZExpbmVUb1BvaW50KHBhdGguZ2V0KCksIDAsIG91dGVyUXVhZC5wMygpLngoKSwgb3V0ZXJRdWFk
LnAzKCkueSgpKTsKKyAgICBDR1BhdGhBZGRMaW5lVG9Qb2ludChwYXRoLmdldCgpLCAwLCBvdXRl
clF1YWQucDIoKS54KCksIG91dGVyUXVhZC5wMigpLnkoKSk7CisgICAgbGF5ZXIucGF0aCA9IHBh
dGguZ2V0KCk7CiB9CiAKIC0gKHZvaWQpX2xheW91dEZvck5vZGVIaWdobGlnaHQ6KEluc3BlY3Rv
ck92ZXJsYXk6OkhpZ2hsaWdodCopaGlnaGxpZ2h0IHBhcmVudDooQ0FMYXllciAqKXBhcmVudExh
eWVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1l
Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQppbmRleCBi
OWJlN2Q5OTA1ZGFmNTBlZTlmZDUzMDhlOTdmZjNjOWRlY2E5ZTFiLi4zYWJjNjAxYjgwYmFkNDMw
MzU0MjViNDkyOTg0OWYxM2VmMTQ4Nzc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViRnJhbWUubW0KQEAgLTI0NjEsMTIgKzI0NjEsOSBAQCAtICh2b2lkKWxvYWRSZXF1
ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0CiAKIHN0YXRpYyBOU1VSTCAqY3JlYXRlVW5pcXVl
V2ViRGF0YVVSTCgpCiB7Ci0gICAgQ0ZVVUlEUmVmIFVVSURSZWYgPSBDRlVVSURDcmVhdGUoa0NG
QWxsb2NhdG9yRGVmYXVsdCk7Ci0gICAgTlNTdHJpbmcgKlVVSURTdHJpbmcgPSAoTlNTdHJpbmcg
KilDRlVVSURDcmVhdGVTdHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwgVVVJRFJlZik7Ci0gICAg
Q0ZSZWxlYXNlKFVVSURSZWYpOwotICAgIE5TVVJMICpVUkwgPSBbTlNVUkwgVVJMV2l0aFN0cmlu
ZzpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAImFwcGxld2ViZGF0YTovLyVAIiwgVVVJRFN0
cmluZ11dOwotICAgIENGUmVsZWFzZShVVUlEU3RyaW5nKTsKLSAgICByZXR1cm4gVVJMOworICAg
IGF1dG8gVVVJRFJlZiA9IGFkb3B0Q0YoQ0ZVVUlEQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQp
KTsKKyAgICBhdXRvIFVVSURTdHJpbmcgPSBhZG9wdENGKENGVVVJRENyZWF0ZVN0cmluZyhrQ0ZB
bGxvY2F0b3JEZWZhdWx0LCBVVUlEUmVmLmdldCgpKSk7CisgICAgcmV0dXJuIFtOU1VSTCBVUkxX
aXRoU3RyaW5nOltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiYXBwbGV3ZWJkYXRhOi8vJUAi
LCAoX19icmlkZ2UgTlNTdHJpbmcgKilVVUlEU3RyaW5nLmdldCgpXV07CiB9CiAKIC0gKHZvaWQp
X2xvYWREYXRhOihOU0RhdGEgKilkYXRhIE1JTUVUeXBlOihOU1N0cmluZyAqKU1JTUVUeXBlIHRl
eHRFbmNvZGluZ05hbWU6KE5TU3RyaW5nICopZW5jb2RpbmdOYW1lIGJhc2VVUkw6KE5TVVJMICop
YmFzZVVSTCB1bnJlYWNoYWJsZVVSTDooTlNVUkwgKil1bnJlYWNoYWJsZVVSTApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCmluZGV4IDY4NTYxMGMyNWVjMmFlNWZk
NWY1MTNiYjkzMTYyYzRlMmU2MWZiOTIuLmUzMzNkNmUwZjliM2MyNWNiYmNkZmI5YjZjYWVjNGFl
MTQ0MmM5ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2Vi
Vmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0K
QEAgLTg0MDMsNyArODQwMyw3IEBAICsgKHZvaWQpX3NldENhY2hlTW9kZWw6KFdlYkNhY2hlTW9k
ZWwpY2FjaGVNb2RlbAogICAgIGlmIChzX2RpZFNldENhY2hlTW9kZWwgJiYgY2FjaGVNb2RlbCA9
PSBzX2NhY2hlTW9kZWwpCiAgICAgICAgIHJldHVybjsKIAotICAgIE5TU3RyaW5nICpuc3VybENh
Y2hlRGlyZWN0b3J5ID0gQ0ZCcmlkZ2luZ1JlbGVhc2UoX0NGVVJMQ2FjaGVDb3B5Q2FjaGVEaXJl
Y3RvcnkoW1tOU1VSTENhY2hlIHNoYXJlZFVSTENhY2hlXSBfQ0ZVUkxDYWNoZV0pKTsKKyAgICBO
U1N0cmluZyAqbnN1cmxDYWNoZURpcmVjdG9yeSA9IGFkb3B0Q0YoX0NGVVJMQ2FjaGVDb3B5Q2Fj
aGVEaXJlY3RvcnkoW1tOU1VSTENhY2hlIHNoYXJlZFVSTENhY2hlXSBfQ0ZVUkxDYWNoZV0pKS5i
cmlkZ2luZ0F1dG9yZWxlYXNlKCk7CiAgICAgaWYgKCFuc3VybENhY2hlRGlyZWN0b3J5KQogICAg
ICAgICBuc3VybENhY2hlRGlyZWN0b3J5ID0gTlNIb21lRGlyZWN0b3J5KCk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NGRGljdGlvbmFyeVByb3BlcnR5QmFnLmNwcCBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NGRGljdGlvbmFyeVByb3BlcnR5QmFnLmNwcAppbmRl
eCBiYzllNjU5NGU3NzdiZjAwODY4MzYyYjc1MWMyNzUxOWQ3YmVhNzNiLi42ODFiZDlmZGQwOWQz
NGViZDhkOWRlYTQyM2ZjNWVhMGE1NzZjOThkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9DRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZy5jcHAKKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vQ0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWcuY3BwCkBAIC0xNDEsMTcgKzE0MSwxNyBA
QCBzdGF0aWMgYm9vbCBDb252ZXJ0VmFyaWFudFRvQ0ZUeXBlKFZBUklBTlQqIHBWYXIsIHZvaWQq
KiBjZk9iaikKICAgICAgICAgICAgICpjZk9iaiA9ICh2b2lkKikgTWFyc2hhbGxpbmdIZWxwZXJz
OjpCU1RSVG9DRlN0cmluZ1JlZihWX0JTVFIocFZhcikpOwogICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgICAgIH0gZWxzZSBpZiAoVl9WVChwVmFyKSA9PSBWVF9JNCkgewotICAgICAgICAg
ICAgKmNmT2JqID0gKHZvaWQqKSBNYXJzaGFsbGluZ0hlbHBlcnM6OmludFRvQ0ZOdW1iZXJSZWYo
Vl9JNChwVmFyKSk7CisgICAgICAgICAgICAqY2ZPYmogPSAodm9pZCopIE1hcnNoYWxsaW5nSGVs
cGVyczo6aW50VG9DRk51bWJlclJlZihWX0k0KHBWYXIpKS5sZWFmUmVmKCk7CiAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfSBlbHNlIGlmICghIShWX1ZUKHBWYXIpJlZUX0FSUkFZ
KSkgewogICAgICAgICAgICAgaWYgKChWX1ZUKHBWYXIpJn5WVF9BUlJBWSkgPT0gVlRfQlNUUikg
ewotICAgICAgICAgICAgICAgICpjZk9iaiA9ICh2b2lkKikgTWFyc2hhbGxpbmdIZWxwZXJzOjpz
YWZlQXJyYXlUb1N0cmluZ0FycmF5KFZfQVJSQVkocFZhcikpOworICAgICAgICAgICAgICAgICpj
Zk9iaiA9ICh2b2lkKikgTWFyc2hhbGxpbmdIZWxwZXJzOjpzYWZlQXJyYXlUb1N0cmluZ0FycmF5
KFZfQVJSQVkocFZhcikpLmxlYWtSZWYoKTsKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICAgICAgICAgIH0gZWxzZSBpZiAoKFZfVlQocFZhcikmflZUX0FSUkFZKSA9PSBWVF9JNCkg
ewotICAgICAgICAgICAgICAgICpjZk9iaiA9ICh2b2lkKikgTWFyc2hhbGxpbmdIZWxwZXJzOjpz
YWZlQXJyYXlUb0ludEFycmF5KFZfQVJSQVkocFZhcikpOworICAgICAgICAgICAgICAgICpjZk9i
aiA9ICh2b2lkKikgTWFyc2hhbGxpbmdIZWxwZXJzOjpzYWZlQXJyYXlUb0ludEFycmF5KFZfQVJS
QVkocFZhcikpLmxlYWtSZWYoKTsKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAg
ICAgICAgIH0gZWxzZSBpZiAoKFZfVlQocFZhcikmflZUX0FSUkFZKSA9PSBWVF9VTktOT1dOKSB7
Ci0gICAgICAgICAgICAgICAgKmNmT2JqID0gKHZvaWQqKSBNYXJzaGFsbGluZ0hlbHBlcnM6OnNh
ZmVBcnJheVRvSVVua25vd25BcnJheShWX0FSUkFZKHBWYXIpKTsKKyAgICAgICAgICAgICAgICAq
Y2ZPYmogPSAodm9pZCopIE1hcnNoYWxsaW5nSGVscGVyczo6c2FmZUFycmF5VG9JVW5rbm93bkFy
cmF5KFZfQVJSQVkocFZhcikpLmxlYWtSZWYoKTsKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMTY3LDE0ICsxNjcsMTMgQEAgSFJFU1VM
VCBDRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZzo6UmVhZChMUENPTEVTVFIgcHN6UHJvcE5hbWUsIFZB
UklBTlQgKnBWYXIsIElFcnIKICNpZiBVU0UoQ0YpCiAgICAgaWYgKG1fZGljdGlvbmFyeSkgewog
ICAgICAgICB2b2lkKiB2YWx1ZTsKLSAgICAgICAgQ0ZTdHJpbmdSZWYga2V5ID0gTWFyc2hhbGxp
bmdIZWxwZXJzOjpMUENPTEVTVFJUb0NGU3RyaW5nUmVmKHBzelByb3BOYW1lKTsKKyAgICAgICAg
YXV0byBrZXkgPSBNYXJzaGFsbGluZ0hlbHBlcnM6OkxQQ09MRVNUUlRvQ0ZTdHJpbmdSZWYocHN6
UHJvcE5hbWUpOwogICAgICAgICBIUkVTVUxUIGhyID0gRV9GQUlMOwotICAgICAgICBpZiAoQ0ZE
aWN0aW9uYXJ5R2V0VmFsdWVJZlByZXNlbnQobV9kaWN0aW9uYXJ5LmdldCgpLCBrZXksIChjb25z
dCB2b2lkKiopICZ2YWx1ZSkpIHsKKyAgICAgICAgaWYgKENGRGljdGlvbmFyeUdldFZhbHVlSWZQ
cmVzZW50KG1fZGljdGlvbmFyeS5nZXQoKSwga2V5LmdldCgpLCAoY29uc3Qgdm9pZCoqKSAmdmFs
dWUpKSB7CiAgICAgICAgICAgICBpZiAoQ29udmVydENGVHlwZVRvVmFyaWFudChwVmFyLCB2YWx1
ZSkpCiAgICAgICAgICAgICAgICAgaHIgPSBTX09LOwogICAgICAgICB9IGVsc2UKICAgICAgICAg
ICAgIGhyID0gRV9JTlZBTElEQVJHOwotICAgICAgICBDRlJlbGVhc2Uoa2V5KTsKICAgICAgICAg
cmV0dXJuIGhyOwogICAgIH0KICNlbmRpZgpAQCAtMTkxLDEwICsxOTAsOSBAQCBIUkVTVUxUIENG
RGljdGlvbmFyeVByb3BlcnR5QmFnOjpXcml0ZShfSW5fIExQQ09MRVNUUiBwc3pQcm9wTmFtZSwg
X0luXyBWQVJJQU5UKgogICAgIH0KICAgICB2b2lkKiBjZk9iajsKICAgICBpZiAoQ29udmVydFZh
cmlhbnRUb0NGVHlwZShwVmFyLCAmY2ZPYmopKSB7Ci0gICAgICAgIENGU3RyaW5nUmVmIGtleSA9
IE1hcnNoYWxsaW5nSGVscGVyczo6TFBDT0xFU1RSVG9DRlN0cmluZ1JlZihwc3pQcm9wTmFtZSk7
Ci0gICAgICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKG1fZGljdGlvbmFyeS5nZXQoKSwga2V5LCBj
Zk9iaik7CisgICAgICAgIGF1dG8ga2V5ID0gTWFyc2hhbGxpbmdIZWxwZXJzOjpMUENPTEVTVFJU
b0NGU3RyaW5nUmVmKHBzelByb3BOYW1lKTsKKyAgICAgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUo
bV9kaWN0aW9uYXJ5LmdldCgpLCBrZXkuZ2V0KCksIGNmT2JqKTsKICAgICAgICAgLy8gQ0ZEaWN0
aW9uYXJ5QWRkVmFsdWUgc2hvdWxkIGF1dG9tYXRpY2FsbHkgcmV0YWluIHRoZSBDRiBvYmplY3Rz
IHBhc3NlZCBpbiwgc28gcmVsZWFzZSB0aGVtIGhlcmUKLSAgICAgICAgQ0ZSZWxlYXNlKGtleSk7
CiAgICAgICAgIENGUmVsZWFzZShjZk9iaik7CiAgICAgICAgIHJldHVybiBTX09LOwogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01hcnNoYWxsaW5nSGVscGVycy5j
cHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9NYXJzaGFsbGluZ0hlbHBlcnMuY3BwCmluZGV4
IDI1NjA4OTMxOTA0NTc0NmE5Mzk1ZTVkZWQ2YzZhNzNjZGNkYmY4YWUuLmFiNmQ4NWJmZjc5N2E5
OWI4ZTlmOGIyMmJjY2RjYzQ1ZDI3MDllNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL01hcnNoYWxsaW5nSGVscGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vTWFyc2hhbGxpbmdIZWxwZXJzLmNwcApAQCAtNTMsMzkgKzUzLDMzIEBAIEJTVFIgTWFyc2hh
bGxpbmdIZWxwZXJzOjpVUkxUb0JTVFIoY29uc3QgVVJMJiB1cmwpCiB9CiAKICNpZiBVU0UoQ0Yp
Ci1DRlVSTFJlZiBNYXJzaGFsbGluZ0hlbHBlcnM6OlBhdGhTdHJpbmdUb0ZpbGVDRlVSTFJlZihj
b25zdCBTdHJpbmcmIHN0cmluZykKK1JldGFpblB0cjxDRlVSTFJlZj4gTWFyc2hhbGxpbmdIZWxw
ZXJzOjpQYXRoU3RyaW5nVG9GaWxlQ0ZVUkxSZWYoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiB7Ci0g
ICAgcmV0dXJuIENGVVJMQ3JlYXRlV2l0aEZpbGVTeXN0ZW1QYXRoKDAsIHN0cmluZy5jcmVhdGVD
RlN0cmluZygpLmdldCgpLCBrQ0ZVUkxXaW5kb3dzUGF0aFN0eWxlLCBmYWxzZSk7CisgICAgcmV0
dXJuIGFkb3B0Q0YoQ0ZVUkxDcmVhdGVXaXRoRmlsZVN5c3RlbVBhdGgoMCwgc3RyaW5nLmNyZWF0
ZUNGU3RyaW5nKCkuZ2V0KCksIGtDRlVSTFdpbmRvd3NQYXRoU3R5bGUsIGZhbHNlKSk7CiB9CiAK
IFN0cmluZyBNYXJzaGFsbGluZ0hlbHBlcnM6OkZpbGVDRlVSTFJlZlRvUGF0aFN0cmluZyhDRlVS
TFJlZiBmaWxlVVJMKQogewotICAgIENGU3RyaW5nUmVmIHN0cmluZyA9IENGVVJMQ29weUZpbGVT
eXN0ZW1QYXRoKGZpbGVVUkwsIGtDRlVSTFdpbmRvd3NQYXRoU3R5bGUpOwotICAgIFN0cmluZyBy
ZXN1bHQoc3RyaW5nKTsKLSAgICBDRlJlbGVhc2Uoc3RyaW5nKTsKLSAgICByZXR1cm4gcmVzdWx0
OworICAgIHJldHVybiBhZG9wdENGKENGVVJMQ29weUZpbGVTeXN0ZW1QYXRoKGZpbGVVUkwsIGtD
RlVSTFdpbmRvd3NQYXRoU3R5bGUpKS5nZXQoKTsKIH0KIAotQ0ZVUkxSZWYgTWFyc2hhbGxpbmdI
ZWxwZXJzOjpCU1RSVG9DRlVSTFJlZihCU1RSIHVybFN0cikKK1JldGFpblB0cjxDRlVSTFJlZj4g
TWFyc2hhbGxpbmdIZWxwZXJzOjpCU1RSVG9DRlVSTFJlZihCU1RSIHVybFN0cikKIHsKLSAgICBD
RlN0cmluZ1JlZiB1cmxDRlN0cmluZyA9IEJTVFJUb0NGU3RyaW5nUmVmKHVybFN0cik7CisgICAg
YXV0byB1cmxDRlN0cmluZyA9IEJTVFJUb0NGU3RyaW5nUmVmKHVybFN0cik7CiAgICAgaWYgKCF1
cmxDRlN0cmluZykKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBDRlVSTFJlZiB1cmxSZWYgPSBD
RlVSTENyZWF0ZVdpdGhTdHJpbmcoMCwgdXJsQ0ZTdHJpbmcsIDApOwotICAgIENGUmVsZWFzZSh1
cmxDRlN0cmluZyk7CisgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIHVybFJl
ZjsKKyAgICByZXR1cm4gYWRvcHRDRihDRlVSTENyZWF0ZVdpdGhTdHJpbmcobnVsbHB0ciwgdXJs
Q0ZTdHJpbmcuZ2V0KCksIG51bGxwdHIpKTsKIH0KIAotQ0ZTdHJpbmdSZWYgTWFyc2hhbGxpbmdI
ZWxwZXJzOjpCU1RSVG9DRlN0cmluZ1JlZihCU1RSIHN0cikKK1JldGFpblB0cjxDRlN0cmluZ1Jl
Zj4gTWFyc2hhbGxpbmdIZWxwZXJzOjpCU1RSVG9DRlN0cmluZ1JlZihCU1RSIHN0cikKIHsKLSAg
ICByZXR1cm4gQ0ZTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycygwLCAoY29uc3QgVW5pQ2hhciop
KHN0ciA/IHN0ciA6IFRFWFQoIiIpKSwgU3lzU3RyaW5nTGVuKHN0cikpOworICAgIHJldHVybiBh
ZG9wdENGKENGU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMoMCwgKGNvbnN0IFVuaUNoYXIqKShz
dHIgPyBzdHIgOiBURVhUKCIiKSksIFN5c1N0cmluZ0xlbihzdHIpKSk7CiB9CiAKLUNGU3RyaW5n
UmVmIE1hcnNoYWxsaW5nSGVscGVyczo6TFBDT0xFU1RSVG9DRlN0cmluZ1JlZihMUENPTEVTVFIg
c3RyKQorUmV0YWluUHRyPENGU3RyaW5nUmVmPiBNYXJzaGFsbGluZ0hlbHBlcnM6OkxQQ09MRVNU
UlRvQ0ZTdHJpbmdSZWYoTFBDT0xFU1RSIHN0cikKIHsKLSAgICByZXR1cm4gQ0ZTdHJpbmdDcmVh
dGVXaXRoQ2hhcmFjdGVycygwLCAoY29uc3QgVW5pQ2hhciopKHN0ciA/IHN0ciA6IFRFWFQoIiIp
KSwgKENGSW5kZXgpKHN0ciA/IHdjc2xlbihzdHIpIDogMCkpOworICAgIHJldHVybiBhZG9wdENG
KENGU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMoMCwgKGNvbnN0IFVuaUNoYXIqKShzdHIgPyBz
dHIgOiBURVhUKCIiKSksIChDRkluZGV4KShzdHIgPyB3Y3NsZW4oc3RyKSA6IDApKSk7CiB9CiAK
IEJTVFIgTWFyc2hhbGxpbmdIZWxwZXJzOjpDRlN0cmluZ1JlZlRvQlNUUihDRlN0cmluZ1JlZiBz
dHIpCkBAIC0xMDAsOSArOTQsOSBAQCBpbnQgTWFyc2hhbGxpbmdIZWxwZXJzOjpDRk51bWJlclJl
ZlRvSW50KENGTnVtYmVyUmVmIG51bSkKICAgICByZXR1cm4gbnVtYmVyOwogfQogCi1DRk51bWJl
clJlZiBNYXJzaGFsbGluZ0hlbHBlcnM6OmludFRvQ0ZOdW1iZXJSZWYoaW50IG51bSkKK1JldGFp
blB0cjxDRk51bWJlclJlZj4gTWFyc2hhbGxpbmdIZWxwZXJzOjppbnRUb0NGTnVtYmVyUmVmKGlu
dCBudW0pCiB7Ci0gICAgcmV0dXJuIENGTnVtYmVyQ3JlYXRlKDAsIGtDRk51bWJlclNJbnQzMlR5
cGUsICZudW0pOworICAgIHJldHVybiBhZG9wdENGKENGTnVtYmVyQ3JlYXRlKDAsIGtDRk51bWJl
clNJbnQzMlR5cGUsICZudW0pKTsKIH0KICNlbmRpZgogCkBAIC0yNDQsNyArMjM4LDcgQEAgU0FG
RUFSUkFZKiBNYXJzaGFsbGluZ0hlbHBlcnM6Oml1bmtub3duQXJyYXlUb1NhZmVBcnJheShDRkFy
cmF5UmVmIGluQXJyYXkpCiAgICAgcmV0dXJuIHNhOwogfQogCi1DRkFycmF5UmVmIE1hcnNoYWxs
aW5nSGVscGVyczo6c2FmZUFycmF5VG9TdHJpbmdBcnJheShTQUZFQVJSQVkqIGluQXJyYXkpCitS
ZXRhaW5QdHI8Q0ZBcnJheVJlZj4gTWFyc2hhbGxpbmdIZWxwZXJzOjpzYWZlQXJyYXlUb1N0cmlu
Z0FycmF5KFNBRkVBUlJBWSogaW5BcnJheSkKIHsKICAgICBsb25nIGxCb3VuZD0wLCB1Qm91bmQ9
LTE7CiAgICAgSFJFU1VMVCBociA9IDo6U2FmZUFycmF5R2V0TEJvdW5kKGluQXJyYXksIDEsICZs
Qm91bmQpOwpAQCAtMjU3LDE0ICsyNTEsMTMgQEAgQ0ZBcnJheVJlZiBNYXJzaGFsbGluZ0hlbHBl
cnM6OnNhZmVBcnJheVRvU3RyaW5nQXJyYXkoU0FGRUFSUkFZKiBpbkFycmF5KQogICAgICAgICBm
b3IgKDsgbEJvdW5kIDw9IHVCb3VuZDsgbEJvdW5kKyspIHsKICAgICAgICAgICAgIEJTdHJpbmcg
c3RyOwogICAgICAgICAgICAgaHIgPSA6OlNhZmVBcnJheUdldEVsZW1lbnQoaW5BcnJheSwgJmxC
b3VuZCwgJnN0cik7Ci0gICAgICAgICAgICBpdGVtc1tsQm91bmRdID0gQlNUUlRvQ0ZTdHJpbmdS
ZWYoc3RyKTsKKyAgICAgICAgICAgIGl0ZW1zW2xCb3VuZF0gPSBCU1RSVG9DRlN0cmluZ1JlZihz
dHIpLmxlYWtSZWYoKTsKICAgICAgICAgfQogICAgIH0KLSAgICBDRkFycmF5UmVmIHJlc3VsdCA9
IENGQXJyYXlDcmVhdGUoMCwgKGNvbnN0IHZvaWQqKilpdGVtcy5kYXRhKCksIGxlbiwgJmtDRlR5
cGVBcnJheUNhbGxCYWNrcyk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4gYWRvcHRD
RihDRkFycmF5Q3JlYXRlKDAsIChjb25zdCB2b2lkKiopaXRlbXMuZGF0YSgpLCBsZW4sICZrQ0ZU
eXBlQXJyYXlDYWxsQmFja3MpKTsKIH0KIAotQ0ZBcnJheVJlZiBNYXJzaGFsbGluZ0hlbHBlcnM6
OnNhZmVBcnJheVRvSW50QXJyYXkoU0FGRUFSUkFZKiBpbkFycmF5KQorUmV0YWluUHRyPENGQXJy
YXlSZWY+IE1hcnNoYWxsaW5nSGVscGVyczo6c2FmZUFycmF5VG9JbnRBcnJheShTQUZFQVJSQVkq
IGluQXJyYXkpCiB7CiAgICAgbG9uZyBsQm91bmQ9MCwgdUJvdW5kPS0xOwogICAgIEhSRVNVTFQg
aHIgPSA6OlNhZmVBcnJheUdldExCb3VuZChpbkFycmF5LCAxLCAmbEJvdW5kKTsKQEAgLTI3Nywx
NCArMjcwLDEzIEBAIENGQXJyYXlSZWYgTWFyc2hhbGxpbmdIZWxwZXJzOjpzYWZlQXJyYXlUb0lu
dEFycmF5KFNBRkVBUlJBWSogaW5BcnJheSkKICAgICAgICAgZm9yICg7IGxCb3VuZCA8PSB1Qm91
bmQ7IGxCb3VuZCsrKSB7CiAgICAgICAgICAgICBpbnQgbnVtID0gMDsKICAgICAgICAgICAgIGhy
ID0gOjpTYWZlQXJyYXlHZXRFbGVtZW50KGluQXJyYXksICZsQm91bmQsICZudW0pOwotICAgICAg
ICAgICAgaXRlbXNbbEJvdW5kXSA9IFNVQ0NFRURFRChocikgPyBpbnRUb0NGTnVtYmVyUmVmKG51
bSkgOiBrQ0ZOdW1iZXJOYU47CisgICAgICAgICAgICBpdGVtc1tsQm91bmRdID0gU1VDQ0VFREVE
KGhyKSA/IGludFRvQ0ZOdW1iZXJSZWYobnVtKS5sZWFrUmVmKCkgOiBrQ0ZOdW1iZXJOYU47CiAg
ICAgICAgIH0KICAgICB9Ci0gICAgQ0ZBcnJheVJlZiByZXN1bHQgPSBDRkFycmF5Q3JlYXRlKDAs
IChjb25zdCB2b2lkKiopaXRlbXMuZGF0YSgpLCBsZW4sICZrQ0ZUeXBlQXJyYXlDYWxsQmFja3Mp
OwotICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJuIGFkb3B0Q0YoQ0ZBcnJheUNyZWF0ZSgw
LCAoY29uc3Qgdm9pZCoqKWl0ZW1zLmRhdGEoKSwgbGVuLCAma0NGVHlwZUFycmF5Q2FsbEJhY2tz
KSk7CiB9CiAKLUNGQXJyYXlSZWYgTWFyc2hhbGxpbmdIZWxwZXJzOjpzYWZlQXJyYXlUb0lVbmtu
b3duQXJyYXkoU0FGRUFSUkFZKiBpbkFycmF5KQorUmV0YWluUHRyPENGQXJyYXlSZWY+IE1hcnNo
YWxsaW5nSGVscGVyczo6c2FmZUFycmF5VG9JVW5rbm93bkFycmF5KFNBRkVBUlJBWSogaW5BcnJh
eSkKIHsKICAgICBsb25nIGxCb3VuZD0wLCB1Qm91bmQ9LTE7CiAgICAgSFJFU1VMVCBociA9IDo6
U2FmZUFycmF5R2V0TEJvdW5kKGluQXJyYXksIDEsICZsQm91bmQpOwpAQCAtMjkzLDcgKzI4NSw3
IEBAIENGQXJyYXlSZWYgTWFyc2hhbGxpbmdIZWxwZXJzOjpzYWZlQXJyYXlUb0lVbmtub3duQXJy
YXkoU0FGRUFSUkFZKiBpbkFycmF5KQogICAgIGxvbmcgbGVuID0gKFNVQ0NFRURFRChocikpID8g
KHVCb3VuZC1sQm91bmQrMSkgOiAwOwogICAgIHZvaWQqIGl0ZW1zID0gbnVsbHB0cjsKICAgICBo
ciA9IDo6U2FmZUFycmF5QWNjZXNzRGF0YShpbkFycmF5LCAmaXRlbXMpOwotICAgIENGQXJyYXlS
ZWYgcmVzdWx0ID0gU1VDQ0VFREVEKGhyKSA/IENGQXJyYXlDcmVhdGUoMCwgKGNvbnN0IHZvaWQq
KikgaXRlbXMsIGxlbiwgJmtJVW5rbm93bkFycmF5Q2FsbEJhY2tzKSA6IG51bGxwdHI7CisgICAg
YXV0byByZXN1bHQgPSBTVUNDRUVERUQoaHIpID8gYWRvcHRDRihDRkFycmF5Q3JlYXRlKDAsIChj
b25zdCB2b2lkKiopIGl0ZW1zLCBsZW4sICZrSVVua25vd25BcnJheUNhbGxCYWNrcykpIDogbnVs
bHB0cjsKICAgICBociA9IDo6U2FmZUFycmF5VW5hY2Nlc3NEYXRhKGluQXJyYXkpOwogICAgIHJl
dHVybiByZXN1bHQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9NYXJz
aGFsbGluZ0hlbHBlcnMuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01hcnNoYWxsaW5nSGVs
cGVycy5oCmluZGV4IDJjNDg2MDM2YTBjYzcwMTVjNjA4YzhhMDdhNmQwMTVkNDE3OTExNTQuLjk0
MWE0Mjg5ODE0MWFlNTkwMzM1MTAzMGM0ZTI5YzgzMzY0OGIyYzggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL01hcnNoYWxsaW5nSGVscGVycy5oCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL01hcnNoYWxsaW5nSGVscGVycy5oCkBAIC0yOSw2ICsyOSw3IEBACiAKICNp
ZiBVU0UoQ0YpCiAjaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ29yZUZvdW5kYXRpb24uaD4KKyNp
bmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAjZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpA
QCAtNDIsMTQgKzQzLDE0IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgQlNUUiBVUkxUb0JTVFIoY29u
c3QgVVJMJik7CiAKICNpZiBVU0UoQ0YpCi0gICAgc3RhdGljIENGVVJMUmVmIFBhdGhTdHJpbmdU
b0ZpbGVDRlVSTFJlZihjb25zdCBXVEY6OlN0cmluZyYpOworICAgIHN0YXRpYyBSZXRhaW5QdHI8
Q0ZVUkxSZWY+IFBhdGhTdHJpbmdUb0ZpbGVDRlVSTFJlZihjb25zdCBXVEY6OlN0cmluZyYpOwog
ICAgIHN0YXRpYyBXVEY6OlN0cmluZyBGaWxlQ0ZVUkxSZWZUb1BhdGhTdHJpbmcoQ0ZVUkxSZWYg
ZmlsZVVSTCk7Ci0gICAgc3RhdGljIENGVVJMUmVmIEJTVFJUb0NGVVJMUmVmKEJTVFIpOwotICAg
IHN0YXRpYyBDRlN0cmluZ1JlZiBCU1RSVG9DRlN0cmluZ1JlZihCU1RSKTsKLSAgICBzdGF0aWMg
Q0ZTdHJpbmdSZWYgTFBDT0xFU1RSVG9DRlN0cmluZ1JlZihMUENPTEVTVFIpOworICAgIHN0YXRp
YyBSZXRhaW5QdHI8Q0ZVUkxSZWY+IEJTVFJUb0NGVVJMUmVmKEJTVFIpOworICAgIHN0YXRpYyBS
ZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IEJTVFJUb0NGU3RyaW5nUmVmKEJTVFIpOworICAgIHN0YXRp
YyBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IExQQ09MRVNUUlRvQ0ZTdHJpbmdSZWYoTFBDT0xFU1RS
KTsKICAgICBzdGF0aWMgQlNUUiBDRlN0cmluZ1JlZlRvQlNUUihDRlN0cmluZ1JlZik7CiAgICAg
c3RhdGljIGludCBDRk51bWJlclJlZlRvSW50KENGTnVtYmVyUmVmKTsKLSAgICBzdGF0aWMgQ0ZO
dW1iZXJSZWYgaW50VG9DRk51bWJlclJlZihpbnQpOworICAgIHN0YXRpYyBSZXRhaW5QdHI8Q0ZO
dW1iZXJSZWY+IGludFRvQ0ZOdW1iZXJSZWYoaW50KTsKICAgICBzdGF0aWMgQ0ZBYnNvbHV0ZVRp
bWUgREFURVRvQ0ZBYnNvbHV0ZVRpbWUoREFURSk7CiAgICAgc3RhdGljIERBVEUgQ0ZBYnNvbHV0
ZVRpbWVUb0RBVEUoQ0ZBYnNvbHV0ZVRpbWUpOwogICAgIHN0YXRpYyBTQUZFQVJSQVkqIHN0cmlu
Z0FycmF5VG9TYWZlQXJyYXkoQ0ZBcnJheVJlZik7CkBAIC02Myw5ICs2NCw5IEBAIHB1YmxpYzoK
IAogI2lmIFVTRShDRikKICAgICBzdGF0aWMgU0FGRUFSUkFZKiBpdW5rbm93bkFycmF5VG9TYWZl
QXJyYXkoQ0ZBcnJheVJlZik7Ci0gICAgc3RhdGljIENGQXJyYXlSZWYgc2FmZUFycmF5VG9TdHJp
bmdBcnJheShTQUZFQVJSQVkqKTsKLSAgICBzdGF0aWMgQ0ZBcnJheVJlZiBzYWZlQXJyYXlUb0lu
dEFycmF5KFNBRkVBUlJBWSopOwotICAgIHN0YXRpYyBDRkFycmF5UmVmIHNhZmVBcnJheVRvSVVu
a25vd25BcnJheShTQUZFQVJSQVkqKTsKKyAgICBzdGF0aWMgUmV0YWluUHRyPENGQXJyYXlSZWY+
IHNhZmVBcnJheVRvU3RyaW5nQXJyYXkoU0FGRUFSUkFZKik7CisgICAgc3RhdGljIFJldGFpblB0
cjxDRkFycmF5UmVmPiBzYWZlQXJyYXlUb0ludEFycmF5KFNBRkVBUlJBWSopOworICAgIHN0YXRp
YyBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gc2FmZUFycmF5VG9JVW5rbm93bkFycmF5KFNBRkVBUlJB
WSopOwogICAgIHN0YXRpYyBjb25zdCB2b2lkKiBJVW5rbm93blJldGFpbkNhbGxiYWNrKENGQWxs
b2NhdG9yUmVmLCBjb25zdCB2b2lkKik7CiAgICAgc3RhdGljIHZvaWQgSVVua25vd25SZWxlYXNl
Q2FsbGJhY2soQ0ZBbGxvY2F0b3JSZWYsIGNvbnN0IHZvaWQqKTsKICAgICBzdGF0aWMgQ0ZBcnJh
eUNhbGxCYWNrcyBrSVVua25vd25BcnJheUNhbGxCYWNrczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYkFwcGxpY2F0aW9uQ2FjaGUuY3BwIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViQXBwbGljYXRpb25DYWNoZS5jcHAKaW5kZXggZGUxMjUwZWNkZTk3NmE2MmYy
MjU4YzdkYzc0ZjZlOGVjMzc0YjJjOC4uMDhkZDQwMWViNzNkODVlMGYzY2U1ZjIzNmM5YzA2ZmY2
YTRkNmM1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQXBwbGljYXRp
b25DYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQXBwbGljYXRpb25D
YWNoZS5jcHAKQEAgLTIwMCw3ICsyMDAsNyBAQCBIUkVTVUxUIFdlYkFwcGxpY2F0aW9uQ2FjaGU6
Om9yaWdpbnNXaXRoQ2FjaGUoSVByb3BlcnR5QmFnKiogb3JpZ2lucykKICAgICBSZXRhaW5QdHI8
Q0ZNdXRhYmxlRGljdGlvbmFyeVJlZj4gZGljdGlvbmFyeSA9IGFkb3B0Q0YoCiAgICAgICAgIENG
RGljdGlvbmFyeUNyZWF0ZU11dGFibGUoMCwgMCwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJh
Y2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcykpOwogCi0gICAgUmV0YWluUHRy
PENGU3RyaW5nUmVmPiBrZXkgPSBhZG9wdENGKE1hcnNoYWxsaW5nSGVscGVyczo6QlNUUlRvQ0ZT
dHJpbmdSZWYoX2JzdHJfdChMIm9yaWdpbnMiKSkpOworICAgIGF1dG8ga2V5ID0gTWFyc2hhbGxp
bmdIZWxwZXJzOjpCU1RSVG9DRlN0cmluZ1JlZihfYnN0cl90KEwib3JpZ2lucyIpKTsKICAgICBD
RkRpY3Rpb25hcnlBZGRWYWx1ZShkaWN0aW9uYXJ5LmdldCgpLCBrZXkuZ2V0KCksIGFycmF5SXRl
bS5nZXQoKSk7CiAKICAgICBDT01QdHI8Q0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWc+IHJlc3VsdCA9
IENGRGljdGlvbmFyeVByb3BlcnR5QmFnOjpjcmVhdGVJbnN0YW5jZSgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQuY3BwCmluZGV4IDliODZhYTQ1YWQ0MzlmNGZiOWI4MmQ0MTQzMDcxZDVkYmNm
MzgyNjMuLjBlNjY5MDgyN2Y4MGFiMTdlM2UzMGI3ZTJhODkyNWQxMzdjNjZkMzUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKQEAgLTEwMzgsMjEgKzEwMzgsMjEgQEAgdm9pZCBXZWJG
cmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRGYWlsVG9TdGFydFBsdWdpbihjb25zdCBQbHVn
aW5WaWV3JiBwbHVnaW4KICAgICBpZiAoIXBsdWdpblZpZXcucGx1Z2luc1BhZ2UoKS5pc051bGwo
KSkgewogICAgICAgICBVUkwgcGx1Z2luUGFnZVVSTCA9IGZyYW1lLT5kb2N1bWVudCgpLT5jb21w
bGV0ZVVSTChzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hUTUxTcGFjZXMocGx1Z2luVmlldy5wbHVn
aW5zUGFnZSgpKSk7CiAgICAgICAgIGlmIChwbHVnaW5QYWdlVVJMLnByb3RvY29sSXNJbkhUVFBG
YW1pbHkoKSkgewotICAgICAgICAgICAgc3RhdGljIENGU3RyaW5nUmVmIGtleSA9IE1hcnNoYWxs
aW5nSGVscGVyczo6TFBDT0xFU1RSVG9DRlN0cmluZ1JlZihXZWJLaXRFcnJvclBsdWdJblBhZ2VV
UkxTdHJpbmdLZXkpOwotICAgICAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUodXNlckluZm8u
Z2V0KCksIGtleSwgcGx1Z2luUGFnZVVSTC5zdHJpbmcoKS5jcmVhdGVDRlN0cmluZygpLmdldCgp
KTsKKyAgICAgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8Q0ZTdHJpbmdS
ZWY+PiBrZXkgPSBNYXJzaGFsbGluZ0hlbHBlcnM6OkxQQ09MRVNUUlRvQ0ZTdHJpbmdSZWYoV2Vi
S2l0RXJyb3JQbHVnSW5QYWdlVVJMU3RyaW5nS2V5KTsKKyAgICAgICAgICAgIENGRGljdGlvbmFy
eVNldFZhbHVlKHVzZXJJbmZvLmdldCgpLCBrZXkuZ2V0KCkuZ2V0KCksIHBsdWdpblBhZ2VVUkwu
c3RyaW5nKCkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiAgICAgICAgIH0KICAgICB9CiAKICAg
ICBpZiAoIXBsdWdpblZpZXcubWltZVR5cGUoKS5pc051bGwoKSkgewotICAgICAgICBzdGF0aWMg
Q0ZTdHJpbmdSZWYga2V5ID0gTWFyc2hhbGxpbmdIZWxwZXJzOjpMUENPTEVTVFJUb0NGU3RyaW5n
UmVmKFdlYktpdEVycm9yTUlNRVR5cGVLZXkpOwotICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1
ZSh1c2VySW5mby5nZXQoKSwga2V5LCBwbHVnaW5WaWV3Lm1pbWVUeXBlKCkuY3JlYXRlQ0ZTdHJp
bmcoKS5nZXQoKSk7CisgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8Q0ZT
dHJpbmdSZWY+PiBrZXkgPSBNYXJzaGFsbGluZ0hlbHBlcnM6OkxQQ09MRVNUUlRvQ0ZTdHJpbmdS
ZWYoV2ViS2l0RXJyb3JNSU1FVHlwZUtleSk7CisgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVl
KHVzZXJJbmZvLmdldCgpLCBrZXkuZ2V0KCkuZ2V0KCksIHBsdWdpblZpZXcubWltZVR5cGUoKS5j
cmVhdGVDRlN0cmluZygpLmdldCgpKTsKICAgICB9CiAKICAgICBpZiAocGx1Z2luVmlldy5wbHVn
aW4oKSkgewogICAgICAgICBTdHJpbmcgcGx1Z2luTmFtZSA9IHBsdWdpblZpZXcucGx1Z2luKCkt
Pm5hbWUoKTsKICAgICAgICAgaWYgKCFwbHVnaW5OYW1lLmlzTnVsbCgpKSB7Ci0gICAgICAgICAg
ICBzdGF0aWMgQ0ZTdHJpbmdSZWYga2V5ID0gTWFyc2hhbGxpbmdIZWxwZXJzOjpMUENPTEVTVFJU
b0NGU3RyaW5nUmVmKFdlYktpdEVycm9yUGx1Z0luTmFtZUtleSk7Ci0gICAgICAgICAgICBDRkRp
Y3Rpb25hcnlTZXRWYWx1ZSh1c2VySW5mby5nZXQoKSwga2V5LCBwbHVnaW5OYW1lLmNyZWF0ZUNG
U3RyaW5nKCkuZ2V0KCkpOworICAgICAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFp
blB0cjxDRlN0cmluZ1JlZj4+IGtleSA9IE1hcnNoYWxsaW5nSGVscGVyczo6TFBDT0xFU1RSVG9D
RlN0cmluZ1JlZihXZWJLaXRFcnJvclBsdWdJbk5hbWVLZXkpOworICAgICAgICAgICAgQ0ZEaWN0
aW9uYXJ5U2V0VmFsdWUodXNlckluZm8uZ2V0KCksIGtleS5nZXQoKS5nZXQoKSwgcGx1Z2luTmFt
ZS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKICAgICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRG93bmxvYWRDRk5ldC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJEb3dubG9hZENGTmV0LmNwcAppbmRleCBhMzMzYTJmNjI3Njdl
YmJhZWMzYzgzYjZiMDc2ZjBjMzVkMDNkNTBjLi5lYTBiNjc1MWM1NTRlODI3ZGM5ODI1NWNkNGE3
MTU3ZjFkNWFkMmIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEb3du
bG9hZENGTmV0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEb3dubG9hZENG
TmV0LmNwcApAQCAtMTc4LDcgKzE3OCw3IEBAIEhSRVNVTFQgV2ViRG93bmxvYWQ6OmluaXRUb1Jl
c3VtZVdpdGhCdW5kbGUoX0luXyBCU1RSIGJ1bmRsZVBhdGgsIF9Jbl9vcHRfIElXZWJECiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlkUmVjZWl2ZVJlc3BvbnNlQ2FsbGJhY2ss
IHdpbGxSZXN1bWVXaXRoUmVzcG9uc2VDYWxsYmFjaywgZGlkUmVjZWl2ZURhdGFDYWxsYmFjaywg
c2hvdWxkRGVjb2RlRGF0YU9mTUlNRVR5cGVDYWxsYmFjaywgCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkT2JqZWN0TmFtZUNh
bGxiYWNrLCBkaWRDcmVhdGVEZXN0aW5hdGlvbkNhbGxiYWNrLCBkaWRGaW5pc2hDYWxsYmFjaywg
ZGlkRmFpbENhbGxiYWNrfTsKICAgICAKLSAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IHBhdGhVUkwg
PSBhZG9wdENGKE1hcnNoYWxsaW5nSGVscGVyczo6UGF0aFN0cmluZ1RvRmlsZUNGVVJMUmVmKFN0
cmluZyhidW5kbGVQYXRoLCBTeXNTdHJpbmdMZW4oYnVuZGxlUGF0aCkpKSk7CisgICAgYXV0byBw
YXRoVVJMID0gTWFyc2hhbGxpbmdIZWxwZXJzOjpQYXRoU3RyaW5nVG9GaWxlQ0ZVUkxSZWYoU3Ry
aW5nKGJ1bmRsZVBhdGgsIFN5c1N0cmluZ0xlbihidW5kbGVQYXRoKSkpOwogICAgIEFTU0VSVChw
YXRoVVJMKTsKIAogICAgIG1fZG93bmxvYWQgPSBhZG9wdENGKENGVVJMRG93bmxvYWRDcmVhdGVX
aXRoUmVzdW1lRGF0YSgwLCByZXN1bWVEYXRhLmdldCgpLCBwYXRoVVJMLmdldCgpLCAmY2xpZW50
KSk7CkBAIC0yODgsOSArMjg4LDggQEAgSFJFU1VMVCBXZWJEb3dubG9hZDo6c2V0RGVzdGluYXRp
b24oX0luXyBCU1RSIHBhdGgsIEJPT0wgYWxsb3dPdmVyd3JpdGUpCiAgICAgbV9kZXN0aW5hdGlv
biA9IFN0cmluZyhwYXRoLCBTeXNTdHJpbmdMZW4ocGF0aCkpOwogICAgIG1fYnVuZGxlUGF0aCA9
IG1fZGVzdGluYXRpb24gKyBEb3dubG9hZEJ1bmRsZTo6ZmlsZUV4dGVuc2lvbigpOwogCi0gICAg
Q0ZVUkxSZWYgcGF0aFVSTCA9IE1hcnNoYWxsaW5nSGVscGVyczo6UGF0aFN0cmluZ1RvRmlsZUNG
VVJMUmVmKG1fYnVuZGxlUGF0aCk7Ci0gICAgQ0ZVUkxEb3dubG9hZFNldERlc3RpbmF0aW9uKG1f
ZG93bmxvYWQuZ2V0KCksIHBhdGhVUkwsICEhYWxsb3dPdmVyd3JpdGUpOwotICAgIENGUmVsZWFz
ZShwYXRoVVJMKTsKKyAgICBhdXRvIHBhdGhVUkwgPSBNYXJzaGFsbGluZ0hlbHBlcnM6OlBhdGhT
dHJpbmdUb0ZpbGVDRlVSTFJlZihtX2J1bmRsZVBhdGgpOworICAgIENGVVJMRG93bmxvYWRTZXRE
ZXN0aW5hdGlvbihtX2Rvd25sb2FkLmdldCgpLCBwYXRoVVJMLmdldCgpLCAhIWFsbG93T3Zlcndy
aXRlKTsKIAogICAgIExPRyhEb3dubG9hZCwgIldlYkRvd25sb2FkIC0gU2V0IGRlc3RpbmF0aW9u
IHRvICVzIiwgbV9idW5kbGVQYXRoLmFzY2lpKCkuZGF0YSgpKTsKIApAQCAtMzY4LDkgKzM2Nyw3
IEBAIENGVVJMUmVxdWVzdFJlZiBXZWJEb3dubG9hZDo6d2lsbFNlbmRSZXF1ZXN0KENGVVJMUmVx
dWVzdFJlZiByZXF1ZXN0LCBDRlVSTFJlc3BvCiAKICAgICBDT01QdHI8V2ViTXV0YWJsZVVSTFJl
cXVlc3Q+IGZpbmFsV2ViUmVxdWVzdChBZG9wdENPTSwgV2ViTXV0YWJsZVVSTFJlcXVlc3Q6OmNy
ZWF0ZUluc3RhbmNlKGZpbmFsUmVxdWVzdC5nZXQoKSkpOwogICAgIG1fcmVxdWVzdCA9IGZpbmFs
V2ViUmVxdWVzdC5nZXQoKTsKLSAgICBDRlVSTFJlcXVlc3RSZWYgcmVzdWx0ID0gZmluYWxXZWJS
ZXF1ZXN0LT5yZXNvdXJjZVJlcXVlc3QoKS5jZlVSTFJlcXVlc3QoVXBkYXRlSFRUUEJvZHkpOwot
ICAgIENGUmV0YWluKHJlc3VsdCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4gcmV0
YWluUHRyKGZpbmFsV2ViUmVxdWVzdC0+cmVzb3VyY2VSZXF1ZXN0KCkuY2ZVUkxSZXF1ZXN0KFVw
ZGF0ZUhUVFBCb2R5KSkubGVha1JlZigpOwogfQogCiB2b2lkIFdlYkRvd25sb2FkOjpkaWRSZWNl
aXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoQ0ZVUkxBdXRoQ2hhbGxlbmdlUmVmIGNoYWxsZW5n
ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkhpc3RvcnkuY3BwIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSGlzdG9yeS5jcHAKaW5kZXggNjFjMDI2YjdhZTAw
ZDgyOGIwMmRlYzNlYTNlNGI0ZDc5MDg4YWExMS4uOWVmYWUyMjc5M2M3MGQwODYyOGNjOWNlY2U5
MjNlYmM0YzI5N2RmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSGlz
dG9yeS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSGlzdG9yeS5jcHAKQEAg
LTYxLDcgKzYxLDcgQEAgc3RhdGljIENPTVB0cjxJUHJvcGVydHlCYWc+IGNyZWF0ZVVzZXJJbmZv
RnJvbUFycmF5KEJTVFIgbm90aWZpY2F0aW9uU3RyLCBJV2ViSGkKICAgICBSZXRhaW5QdHI8Q0ZN
dXRhYmxlRGljdGlvbmFyeVJlZj4gZGljdGlvbmFyeSA9IGFkb3B0Q0YoCiAgICAgICAgIENGRGlj
dGlvbmFyeUNyZWF0ZU11dGFibGUoMCwgMCwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tz
LCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcykpOwogCi0gICAgUmV0YWluUHRyPENG
U3RyaW5nUmVmPiBrZXkgPSBhZG9wdENGKE1hcnNoYWxsaW5nSGVscGVyczo6QlNUUlRvQ0ZTdHJp
bmdSZWYobm90aWZpY2F0aW9uU3RyKSk7CisgICAgYXV0byBrZXkgPSBNYXJzaGFsbGluZ0hlbHBl
cnM6OkJTVFJUb0NGU3RyaW5nUmVmKG5vdGlmaWNhdGlvblN0cik7CiAgICAgQ0ZEaWN0aW9uYXJ5
QWRkVmFsdWUoZGljdGlvbmFyeS5nZXQoKSwga2V5LmdldCgpLCBhcnJheUl0ZW0uZ2V0KCkpOwog
CiAgICAgQ09NUHRyPENGRGljdGlvbmFyeVByb3BlcnR5QmFnPiByZXN1bHQgPSBDRkRpY3Rpb25h
cnlQcm9wZXJ0eUJhZzo6Y3JlYXRlSW5zdGFuY2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYkxvY2FsaXphYmxlU3RyaW5ncy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJMb2NhbGl6YWJsZVN0cmluZ3MuY3BwCmluZGV4IGZjODBmZTk2ZjI5NDI2ZGZl
MTVmZWRkNTJiNTRjNTQ0ZWQ1ZGUwZmEuLmU1OGQxYjk2ZTYwNzU3NTMxMzYyMDQ1OGMyMTExODhh
NWU5OWUzMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkxvY2FsaXph
YmxlU3RyaW5ncy5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTG9jYWxpemFi
bGVTdHJpbmdzLmNwcApAQCAtOTUsMTkgKzk1LDE5IEBAIExvY2FsaXplZFN0cmluZzo6b3BlcmF0
b3IgTFBDVFNUUigpIGNvbnN0CiAgICAgcmV0dXJuIG1fc3RyaW5nLndpZGVDaGFyYWN0ZXJzKCku
ZGF0YSgpOwogfQogCi1zdGF0aWMgQ0ZCdW5kbGVSZWYgY3JlYXRlV2ViS2l0QnVuZGxlKCkKK3N0
YXRpYyB2b2lkIGNyZWF0ZVdlYktpdEJ1bmRsZSgpCiB7Ci0gICAgc3RhdGljIENGQnVuZGxlUmVm
IGJ1bmRsZTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPENGQnVuZGxlUmVm
Pj4gYnVuZGxlOwogICAgIHN0YXRpYyBib29sIGluaXRpYWxpemVkOwogCiAgICAgaWYgKGluaXRp
YWxpemVkKQotICAgICAgICByZXR1cm4gYnVuZGxlOworICAgICAgICByZXR1cm47CiAgICAgaW5p
dGlhbGl6ZWQgPSB0cnVlOwogCiAgICAgV0NIQVIgcGF0aFN0cltNQVhfUEFUSF07CiAgICAgRFdP
UkQgbGVuZ3RoID0gOjpHZXRNb2R1bGVGaWxlTmFtZVcoZ0luc3RhbmNlLCBwYXRoU3RyLCBNQVhf
UEFUSCk7CiAgICAgaWYgKCFsZW5ndGggfHwgKGxlbmd0aCA9PSBNQVhfUEFUSCAmJiBHZXRMYXN0
RXJyb3IoKSA9PSBFUlJPUl9JTlNVRkZJQ0lFTlRfQlVGRkVSKSkKLSAgICAgICAgcmV0dXJuIDA7
CisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgYm9vbCBmb3VuZCA9IGZhbHNlOwogICAg
IGZvciAoaW50IGkgPSBsZW5ndGggLSAxOyBpID49IDA7IGktLSkgewpAQCAtMTIyLDIyICsxMjIs
MjAgQEAgc3RhdGljIENGQnVuZGxlUmVmIGNyZWF0ZVdlYktpdEJ1bmRsZSgpCiAgICAgICAgIH0K
ICAgICB9CiAgICAgaWYgKCFmb3VuZCkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVy
biBudWxscHRyOwogCiAgICAgaWYgKHdjc2NhdF9zKHBhdGhTdHIsIE1BWF9QQVRILCBMIlxcV2Vi
S2l0LnJlc291cmNlcyIpKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAKICAgICBTdHJpbmcgYnVuZGxlUGF0aFN0cmluZyhwYXRoU3RyKTsKICAgICBpZiAoIWJ1
bmRsZVBhdGhTdHJpbmcpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0
cjsKIAotICAgIENGVVJMUmVmIGJ1bmRsZVVSTFJlZiA9IENGVVJMQ3JlYXRlV2l0aEZpbGVTeXN0
ZW1QYXRoKDAsIGJ1bmRsZVBhdGhTdHJpbmcuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwga0NGVVJM
V2luZG93c1BhdGhTdHlsZSwgdHJ1ZSk7CisgICAgYXV0byBidW5kbGVVUkxSZWYgPSBhZG9wdENG
KENGVVJMQ3JlYXRlV2l0aEZpbGVTeXN0ZW1QYXRoKDAsIGJ1bmRsZVBhdGhTdHJpbmcuY3JlYXRl
Q0ZTdHJpbmcoKS5nZXQoKSwga0NGVVJMV2luZG93c1BhdGhTdHlsZSwgdHJ1ZSkpOwogICAgIGlm
ICghYnVuZGxlVVJMUmVmKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAKLSAgICBidW5kbGUgPSBDRkJ1bmRsZUNyZWF0ZSgwLCBidW5kbGVVUkxSZWYpOwotICAg
IENGUmVsZWFzZShidW5kbGVVUkxSZWYpOwotICAgIHJldHVybiBidW5kbGU7CisgICAgYnVuZGxl
LmdldCgpID0gYWRvcHRDRihDRkJ1bmRsZUNyZWF0ZSgwLCBidW5kbGVVUkxSZWYuZ2V0KCkpKTsK
IH0KIAogc3RhdGljIENGQnVuZGxlUmVmIGNmQnVuZGxlRm9yU3RyaW5nc0J1bmRsZShXZWJMb2Nh
bGl6YWJsZVN0cmluZ3NCdW5kbGUqIHN0cmluZ3NCdW5kbGUpCmRpZmYgLS1naXQgYS9Ub29scy9D
aGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZmFmMzJlNzdmODFlOGViZWI0NTA3NmE1
NDgwNmNjMDRjYWQ5MjU2Mi4uNjc4ZDJiNDUyMmFhMDljZmUwZTVjMmRlYTk5MDUwZThjYTM0NmFi
YyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDY1IEBACisyMDIxLTAzLTA0ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+
CisKKyAgICAgICAgUmVkdWNlIHVzZSBvZiBDRlJldGFpbigpIC8gQ0ZSZWxlYXNlKCkgLyBDRkF1
dG9SZWxlYXNlKCkgaW4gV2ViS2l0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMjI3NjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBSZWR1Y2UgdXNlIG9mIENGUmV0YWluKCkgLyBDRlJlbGVhc2UoKSAvIENG
QXV0b1JlbGVhc2UoKSBpbiBXZWJLaXQgYnkgdXNpbmcgUmV0YWluUHRyPD4uCisKKyAgICAgICAg
KiBEdW1wUmVuZGVyVHJlZS9UZXN0TmV0c2NhcGVQbHVnSW4vUGx1Z2luT2JqZWN0TWFjLm1tOgor
ICAgICAgICAoY3JlYXRlQ29yZUFuaW1hdGlvbkxheWVyKToKKyAgICAgICAgKiBEdW1wUmVuZGVy
VHJlZS9tYWMvQWNjZXNzaWJpbGl0eUNvbW1vbk1hYy5tbToKKyAgICAgICAgKCtbTlNTdHJpbmcg
c3RyaW5nV2l0aEpTU3RyaW5nUmVmOl0pOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9E
dW1wUmVuZGVyVHJlZS5tbToKKyAgICAgICAgKGFjdGl2YXRlRm9udElPUyk6CisgICAgICAgIChk
dW1wUmVuZGVyVHJlZSk6CisgICAgICAgIChpbnZhbGlkYXRlQW55UHJldmlvdXNXYWl0VG9EdW1w
V2F0Y2hkb2cpOgorICAgICAgICAoc2V0V2FpdFRvRHVtcFdhdGNoZG9nKToKKyAgICAgICAgKGR1
bXApOgorICAgICAgICAocnVuVGVzdCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0R1
bXBSZW5kZXJUcmVlTWFjLmg6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0V2ZW50U2Vu
ZGluZ0NvbnRyb2xsZXIubW06CisgICAgICAgICgtW0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIgbW91
c2VTY3JvbGxCeVg6YW5kWTpjb250aW51b3VzbHk6XSk6CisgICAgICAgICgtW0V2ZW50U2VuZGlu
Z0NvbnRyb2xsZXIgbW91c2VTY3JvbGxCeVg6YW5kWTp3aXRoV2hlZWw6YW5kTW9tZW50dW1QaGFz
ZXM6XSk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL1BpeGVsRHVtcFN1cHBvcnRNYWMu
bW06CisgICAgICAgICh0YWtlV2luZG93U25hcHNob3QpOgorICAgICAgICAoY3JlYXRlQml0bWFw
Q29udGV4dEZyb21XZWJWaWV3KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvUmVzb3Vy
Y2VMb2FkRGVsZWdhdGUubW06CisgICAgICAgICgtW1Jlc291cmNlTG9hZERlbGVnYXRlIHdlYlZp
ZXc6cmVzb3VyY2U6d2lsbFNlbmRSZXF1ZXN0OnJlZGlyZWN0UmVzcG9uc2U6ZnJvbURhdGFTb3Vy
Y2U6XSk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL1Rlc3RSdW5uZXJNYWMubW06Cisg
ICAgICAgIChUZXN0UnVubmVyOjphZGREaXNhbGxvd2VkVVJMKToKKyAgICAgICAgKFRlc3RSdW5u
ZXI6OnNldFdhaXRUb0R1bXApOgorICAgICAgICAqIEZvbnRXaXRoRmVhdHVyZXMvRm9udFdpdGhG
ZWF0dXJlcy9tYWluLmNwcDoKKyAgICAgICAgKGNvbnN0cnVjdEZvbnRXaXRoVHJ1ZVR5cGVGZWF0
dXJlKToKKyAgICAgICAgKGNvbnN0cnVjdEZvbnRXaXRoT3BlblR5cGVGZWF0dXJlKToKKyAgICAg
ICAgKGRyYXdUZXh0KToKKyAgICAgICAgKG1haW4pOgorICAgICAgICAqIEltYWdlRGlmZi9JbWFn
ZURpZmYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBJbWFnZURpZmYvUGxh
dGZvcm1JbWFnZS5oOgorICAgICAgICAqIEltYWdlRGlmZi9jZy9QbGF0Zm9ybUltYWdlQ0cuY3Bw
OgorICAgICAgICAoSW1hZ2VEaWZmOjpQbGF0Zm9ybUltYWdlOjpjcmVhdGVGcm9tU3RkaW4pOgor
ICAgICAgICAoSW1hZ2VEaWZmOjpQbGF0Zm9ybUltYWdlOjpjcmVhdGVGcm9tRGlmZkRhdGEpOgor
ICAgICAgICAoSW1hZ2VEaWZmOjpQbGF0Zm9ybUltYWdlOjpQbGF0Zm9ybUltYWdlKToKKyAgICAg
ICAgKEltYWdlRGlmZjo6UGxhdGZvcm1JbWFnZTo6d2lkdGggY29uc3QpOgorICAgICAgICAoSW1h
Z2VEaWZmOjpQbGF0Zm9ybUltYWdlOjpoZWlnaHQgY29uc3QpOgorICAgICAgICAoSW1hZ2VEaWZm
OjpQbGF0Zm9ybUltYWdlOjpoYXNBbHBoYSBjb25zdCk6CisgICAgICAgIChJbWFnZURpZmY6OlBs
YXRmb3JtSW1hZ2U6OnBpeGVscyBjb25zdCk6CisgICAgICAgIChJbWFnZURpZmY6OlBsYXRmb3Jt
SW1hZ2U6OndyaXRlQXNQTkdUb1N0ZG91dCk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3BwOgorICAgICAgICAoV1RSOjpJbmpl
Y3RlZEJ1bmRsZVBhZ2U6OmR1bXBET01Bc1dlYkFyY2hpdmUpOgorICAgICAgICAqIFdlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvaW9zL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRJT1MubW06
CisgICAgICAgICgrW05TU3RyaW5nIHN0cmluZ1dpdGhKU1N0cmluZ1JlZjpdKToKKyAgICAgICAg
KiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5Q29tbW9u
TWFjLm1tOgorICAgICAgICAoK1tOU1N0cmluZyBzdHJpbmdXaXRoSlNTdHJpbmdSZWY6XSk6Cisg
ICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9pb3MvSElERXZlbnRHZW5lcmF0b3IubW06CisgICAg
ICAgICgtW0hJREV2ZW50R2VuZXJhdG9yIF9jcmVhdGVJT0hJREV2ZW50V2l0aEluZm86XSk6Cisg
ICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9tYWMvRXZlbnRTZW5kZXJQcm94eS5tbToKKyAgICAg
ICAgKC1bRXZlbnRTZW5kZXJTeW50aGV0aWNFdmVudCBpbml0UHJlc3N1cmVFdmVudEF0TG9jYXRp
b246Z2xvYmFsTG9jYXRpb246c3RhZ2U6cHJlc3N1cmU6c3RhZ2VUcmFuc2l0aW9uOnBoYXNlOnRp
bWU6ZXZlbnROdW1iZXI6d2luZG93Ol0pOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvbWFj
L1VJU2NyaXB0Q29udHJvbGxlck1hYy5tbToKKyAgICAgICAgKFdUUjo6Y2ZTdHJpbmcpOgorICAg
ICAgICAoV1RSOjpVSVNjcmlwdENvbnRyb2xsZXJNYWM6OnJlcGxhY2VUZXh0QXRSYW5nZSk6CisK
IDIwMjEtMDMtMDQgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBb
bWFjT1NdW1dLMl0gQ2hhbmdpbmcgdGhlIHN5c3RlbSBsYW5ndWFnZSBkb2VzIG5vdCB1cGRhdGUg
bmF2aWdhdG9yLmxhbmd1YWdlCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0
TmV0c2NhcGVQbHVnSW4vUGx1Z2luT2JqZWN0TWFjLm1tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUv
VGVzdE5ldHNjYXBlUGx1Z0luL1BsdWdpbk9iamVjdE1hYy5tbQppbmRleCA1OWY2NTdmZDNlNGM1
OTkzMDNjN2Y0MDQwNDEyMmNiNDRiNzljZjE0Li4yZjI2ZDg0Y2Y2ZjQ4N2I0Yjk2N2UzYjhmZjI0
MTYwMmY3YmUwY2M0IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0TmV0c2Nh
cGVQbHVnSW4vUGx1Z2luT2JqZWN0TWFjLm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rl
c3ROZXRzY2FwZVBsdWdJbi9QbHVnaW5PYmplY3RNYWMubW0KQEAgLTY0LDIzICs2NCwxNSBAQCBD
RlR5cGVSZWYgY3JlYXRlQ29yZUFuaW1hdGlvbkxheWVyKCkKICAgICAvLyBUdXJuIG9mZiBkZWZh
dWx0IGFuaW1hdGlvbnMuCiAgICAgW2NhTGF5ZXIgc2V0U3R5bGU6QHsgQCJhY3Rpb25zIjogYWN0
aW9ucyB9XTsKICAgICBbY2FMYXllciBzZXROZWVkc0Rpc3BsYXlPbkJvdW5kc0NoYW5nZTpZRVNd
OwotCiAgICAgW2NhTGF5ZXIgc2V0Qm91bmRzOkNHUmVjdE1ha2UoMCwgMCwgMjAwLCAxMDApXTsK
ICAgICBbY2FMYXllciBzZXRBbmNob3JQb2ludDpDR1BvaW50WmVyb107Ci0gICAgCi0gICAgQ0dD
b2xvclJlZiBjb2xvciA9IENHQ29sb3JDcmVhdGVHZW5lcmljUkdCKDAuNSwgMC41LCAxLCAxKTsK
LSAgICBbY2FMYXllciBzZXRCYWNrZ3JvdW5kQ29sb3I6Y29sb3JdOwotICAgIENHQ29sb3JSZWxl
YXNlKGNvbG9yKTsKLSAgICAKKyAgICBbY2FMYXllciBzZXRCYWNrZ3JvdW5kQ29sb3I6YWRvcHRD
RihDR0NvbG9yQ3JlYXRlR2VuZXJpY1JHQigwLjUsIDAuNSwgMSwgMSkpLmdldCgpXTsKICAgICBb
Y2FMYXllciBzZXRMYXlvdXRNYW5hZ2VyOltDQUNvbnN0cmFpbnRMYXlvdXRNYW5hZ2VyIGxheW91
dE1hbmFnZXJdXTsKIAogICAgIENBTGF5ZXIgKnN1YmxheWVyID0gW0NBTGF5ZXIgbGF5ZXJdOwog
ICAgIC8vIFR1cm4gb2ZmIGRlZmF1bHQgYW5pbWF0aW9ucy4KICAgICBbc3VibGF5ZXIgc2V0U3R5
bGU6QHsgQCJhY3Rpb25zIjogYWN0aW9ucyB9XTsKLQotICAgIGNvbG9yID0gQ0dDb2xvckNyZWF0
ZUdlbmVyaWNSR0IoMCwgMCwgMCwgMC43NSk7Ci0gICAgW3N1YmxheWVyIHNldEJhY2tncm91bmRD
b2xvcjpjb2xvcl07Ci0gICAgQ0dDb2xvclJlbGVhc2UoY29sb3IpOworICAgIFtzdWJsYXllciBz
ZXRCYWNrZ3JvdW5kQ29sb3I6YWRvcHRDRihDR0NvbG9yQ3JlYXRlR2VuZXJpY1JHQigwLCAwLCAw
LCAwLjc1KSkuZ2V0KCldOwogICAgIFtzdWJsYXllciBzZXRCb3VuZHM6Q0dSZWN0TWFrZSgwLCAw
LCAxODAsIDIwKV07CiAKICAgICBbc3VibGF5ZXIgYWRkQ29uc3RyYWludDpbQ0FDb25zdHJhaW50
IGNvbnN0cmFpbnRXaXRoQXR0cmlidXRlOmtDQUNvbnN0cmFpbnRNaW5ZCmRpZmYgLS1naXQgYS9U
b29scy9EdW1wUmVuZGVyVHJlZS9tYWMvQWNjZXNzaWJpbGl0eUNvbW1vbk1hYy5tbSBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL21hYy9BY2Nlc3NpYmlsaXR5Q29tbW9uTWFjLm1tCmluZGV4IDAzMDY3
ZTJkMDg5MjE0ZmJlODQ2NjdiMjgyNGY4Y2UzMTQ4MGY5ODcuLjU4OGM4YjE5YmY0MDRjMjIxMTAz
OTljYzRhOGMyOTBmYjA2ZGIyN2IgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21h
Yy9BY2Nlc3NpYmlsaXR5Q29tbW9uTWFjLm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21h
Yy9BY2Nlc3NpYmlsaXR5Q29tbW9uTWFjLm1tCkBAIC00MSw3ICs0MSw3IEBAICsgKE5TU3RyaW5n
ICopc3RyaW5nV2l0aEpTU3RyaW5nUmVmOihKU1N0cmluZ1JlZilqc1N0cmluZ1JlZgogICAgIGlm
ICghanNTdHJpbmdSZWYpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICByZXR1cm4gQ0ZCcmlk
Z2luZ1JlbGVhc2UoSlNTdHJpbmdDb3B5Q0ZTdHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwganNT
dHJpbmdSZWYpKTsKKyAgICByZXR1cm4gYWRvcHRDRihKU1N0cmluZ0NvcHlDRlN0cmluZyhrQ0ZB
bGxvY2F0b3JEZWZhdWx0LCBqc1N0cmluZ1JlZikpLmJyaWRnaW5nQXV0b3JlbGVhc2UoKTsKIH0K
IAogLSAoSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+KWNyZWF0ZUpTU3RyaW5nUmVmCmRpZmYgLS1n
aXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0gYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0KaW5kZXggMTRiZDFlODBkNmVmMDkz
Mjg4OTkzOGNiZDQ1YmE0MzFhN2ZkNTYwNy4uNzM1MTAzOTZhNTgwYzllYmJiYzY0YTdmZTFiZWMy
OTgyYzlmN2NjZSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5k
ZXJUcmVlLm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5t
bQpAQCAtMjA4LDggKzIwOCw4IEBAIFdlYkZyYW1lICp0b3BMb2FkaW5nRnJhbWUgPSBuaWw7IC8v
ICFuaWwgaWZmIGEgbG9hZCBpcyBpbiBwcm9ncmVzcwogUmV0YWluUHRyPE5TV2luZG93PiBtYWlu
V2luZG93OwogI2VuZGlmCiAKLUNGTXV0YWJsZVNldFJlZiBkaXNhbGxvd2VkVVJMcz0gbnVsbHB0
cjsKLXN0YXRpYyBDRlJ1bkxvb3BUaW1lclJlZiB3YWl0VG9EdW1wV2F0Y2hkb2c7CitSZXRhaW5Q
dHI8Q0ZNdXRhYmxlU2V0UmVmPiBkaXNhbGxvd2VkVVJMcyA9IG51bGxwdHI7CitzdGF0aWMgUmV0
YWluUHRyPENGUnVuTG9vcFRpbWVyUmVmPiB3YWl0VG9EdW1wV2F0Y2hkb2c7CiAKIHN0YXRpYyBS
ZXRhaW5QdHI8V2ViVmlldz4mIGdsb2JhbFdlYlZpZXcoKQogewpAQCAtNTUwLDI2ICs1NTAsMjQg
QEAgc3RhdGljIHZvaWQgYWRqdXN0Rm9udHMoKQogCiBzdGF0aWMgdm9pZCBhY3RpdmF0ZUZvbnRJ
T1MoY29uc3QgdWludDhfdCogZm9udERhdGEsIHVuc2lnbmVkIGxvbmcgbGVuZ3RoLCBzdGQ6OnN0
cmluZyBzZWN0aW9uTmFtZSkKIHsKLSAgICBDR0RhdGFQcm92aWRlclJlZiBkYXRhID0gQ0dEYXRh
UHJvdmlkZXJDcmVhdGVXaXRoRGF0YShudWxscHRyLCBmb250RGF0YSwgbGVuZ3RoLCBudWxscHRy
KTsKKyAgICBhdXRvIGRhdGEgPSBhZG9wdENGKENHRGF0YVByb3ZpZGVyQ3JlYXRlV2l0aERhdGEo
bnVsbHB0ciwgZm9udERhdGEsIGxlbmd0aCwgbnVsbHB0cikpOwogICAgIGlmICghZGF0YSkgewog
ICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkZhaWxlZCB0byBjcmVhdGUgQ0dEYXRhUHJvdmlkZXJS
ZWYgZm9yIHRoZSAlcyBmb250LlxuIiwgc2VjdGlvbk5hbWUuY19zdHIoKSk7CiAgICAgICAgIGV4
aXQoMSk7CiAgICAgfQogCi0gICAgQ0dGb250UmVmIGNnRm9udCA9IENHRm9udENyZWF0ZVdpdGhE
YXRhUHJvdmlkZXIoZGF0YSk7Ci0gICAgQ0dEYXRhUHJvdmlkZXJSZWxlYXNlKGRhdGEpOworICAg
IGF1dG8gY2dGb250ID0gYWRvcHRDRihDR0ZvbnRDcmVhdGVXaXRoRGF0YVByb3ZpZGVyKGRhdGEu
Z2V0KCkpKTsKICAgICBpZiAoIWNnRm9udCkgewogICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkZh
aWxlZCB0byBjcmVhdGUgQ0dGb250UmVmIGZvciB0aGUgJXMgZm9udC5cbiIsIHNlY3Rpb25OYW1l
LmNfc3RyKCkpOwogICAgICAgICBleGl0KDEpOwogICAgIH0KIAogICAgIENGRXJyb3JSZWYgZXJy
b3IgPSBudWxscHRyOwotICAgIENURm9udE1hbmFnZXJSZWdpc3RlckdyYXBoaWNzRm9udChjZ0Zv
bnQsICZlcnJvcik7CisgICAgQ1RGb250TWFuYWdlclJlZ2lzdGVyR3JhcGhpY3NGb250KGNnRm9u
dC5nZXQoKSwgJmVycm9yKTsKICAgICBpZiAoZXJyb3IpIHsKICAgICAgICAgZnByaW50ZihzdGRl
cnIsICJGYWlsZWQgdG8gYWRkIENHRm9udCB0byBDb3JlVGV4dCBmb3IgdGhlICVzIGZvbnQ6ICVz
LlxuIiwgc2VjdGlvbk5hbWUuY19zdHIoKSwgQ0ZTdHJpbmdHZXRDU3RyaW5nUHRyKENGRXJyb3JD
b3B5RGVzY3JpcHRpb24oZXJyb3IpLCBrQ0ZTdHJpbmdFbmNvZGluZ1VURjgpKTsKICAgICAgICAg
ZXhpdCgxKTsKICAgICB9Ci0gICAgQ0dGb250UmVsZWFzZShjZ0ZvbnQpOwogfQogCiBzdGF0aWMg
dm9pZCBhY3RpdmF0ZUZvbnRzSU9TKCkKQEAgLTEyNjUsMTAgKzEyNjMsNyBAQCB2b2lkIGR1bXBS
ZW5kZXJUcmVlKGludCBhcmdjLCBjb25zdCBjaGFyICphcmd2W10pCiAjZW5kaWYKIAogICAgIC8v
IEZJWE1FOiBUaGlzIHNob3VsZCBiZSBtb3ZlZCBvbnRvIFRlc3RSdW5uZXIgYW5kIG1hZGUgaW50
byBhIEhhc2hTZXQKLSAgICBpZiAoZGlzYWxsb3dlZFVSTHMpIHsKLSAgICAgICAgQ0ZSZWxlYXNl
KGRpc2FsbG93ZWRVUkxzKTsKLSAgICAgICAgZGlzYWxsb3dlZFVSTHMgPSAwOwotICAgIH0KKyAg
ICBkaXNhbGxvd2VkVVJMcyA9IG51bGxwdHI7CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQog
ICAgIHRlYXJEb3duSU9TTGF5b3V0VGVzdENvbW11bmljYXRpb24oKTsKQEAgLTE2MTUsMTggKzE2
MTAsMTcgQEAgc3RhdGljIHZvaWQgZHVtcEJhY2tGb3J3YXJkTGlzdEZvckFsbFdpbmRvd3MoKQog
c3RhdGljIHZvaWQgaW52YWxpZGF0ZUFueVByZXZpb3VzV2FpdFRvRHVtcFdhdGNoZG9nKCkKIHsK
ICAgICBpZiAod2FpdFRvRHVtcFdhdGNoZG9nKSB7Ci0gICAgICAgIENGUnVuTG9vcFRpbWVySW52
YWxpZGF0ZSh3YWl0VG9EdW1wV2F0Y2hkb2cpOwotICAgICAgICBDRlJlbGVhc2Uod2FpdFRvRHVt
cFdhdGNoZG9nKTsKLSAgICAgICAgd2FpdFRvRHVtcFdhdGNoZG9nID0gTlVMTDsKKyAgICAgICAg
Q0ZSdW5Mb29wVGltZXJJbnZhbGlkYXRlKHdhaXRUb0R1bXBXYXRjaGRvZy5nZXQoKSk7CisgICAg
ICAgIHdhaXRUb0R1bXBXYXRjaGRvZyA9IG51bGxwdHI7CiAgICAgfQogfQogCi12b2lkIHNldFdh
aXRUb0R1bXBXYXRjaGRvZyhDRlJ1bkxvb3BUaW1lclJlZiB0aW1lcikKK3ZvaWQgc2V0V2FpdFRv
RHVtcFdhdGNoZG9nKFJldGFpblB0cjxDRlJ1bkxvb3BUaW1lclJlZj4mJiB0aW1lcikKIHsKICAg
ICBBU1NFUlQodGltZXIpOwogICAgIEFTU0VSVChzaG91bGRTZXRXYWl0VG9EdW1wV2F0Y2hkb2co
KSk7Ci0gICAgd2FpdFRvRHVtcFdhdGNoZG9nID0gdGltZXI7Ci0gICAgQ0ZSdW5Mb29wQWRkVGlt
ZXIoQ0ZSdW5Mb29wR2V0Q3VycmVudCgpLCB3YWl0VG9EdW1wV2F0Y2hkb2csIGtDRlJ1bkxvb3BD
b21tb25Nb2Rlcyk7CisgICAgd2FpdFRvRHVtcFdhdGNoZG9nID0gV1RGTW92ZSh0aW1lcik7Cisg
ICAgQ0ZSdW5Mb29wQWRkVGltZXIoQ0ZSdW5Mb29wR2V0Q3VycmVudCgpLCB3YWl0VG9EdW1wV2F0
Y2hkb2cuZ2V0KCksIGtDRlJ1bkxvb3BDb21tb25Nb2Rlcyk7CiB9CiAKIGJvb2wgc2hvdWxkU2V0
V2FpdFRvRHVtcFdhdGNoZG9nKCkKQEAgLTE2ODMsMTEgKzE2NzcsMTEgQEAgdm9pZCBkdW1wKCkK
ICAgICAgICAgICAgIHJlc3VsdE1pbWVUeXBlID0gQCJhcHBsaWNhdGlvbi9wZGYiOwogICAgICAg
ICB9IGVsc2UgaWYgKGdUZXN0UnVubmVyLT5kdW1wRE9NQXNXZWJBcmNoaXZlKCkpIHsKICAgICAg
ICAgICAgIFdlYkFyY2hpdmUgKndlYkFyY2hpdmUgPSBbW21haW5GcmFtZSBET01Eb2N1bWVudF0g
d2ViQXJjaGl2ZV07Ci0gICAgICAgICAgICByZXN1bHRTdHJpbmcgPSBDRkJyaWRnaW5nUmVsZWFz
ZShXZWJDb3JlVGVzdFN1cHBvcnQ6OmNyZWF0ZVhNTFN0cmluZ0Zyb21XZWJBcmNoaXZlRGF0YSgo
X19icmlkZ2UgQ0ZEYXRhUmVmKVt3ZWJBcmNoaXZlIGRhdGFdKSk7CisgICAgICAgICAgICByZXN1
bHRTdHJpbmcgPSBXZWJDb3JlVGVzdFN1cHBvcnQ6OmNyZWF0ZVhNTFN0cmluZ0Zyb21XZWJBcmNo
aXZlRGF0YSgoX19icmlkZ2UgQ0ZEYXRhUmVmKVt3ZWJBcmNoaXZlIGRhdGFdKTsKICAgICAgICAg
ICAgIHJlc3VsdE1pbWVUeXBlID0gQCJhcHBsaWNhdGlvbi94LXdlYmFyY2hpdmUiOwogICAgICAg
ICB9IGVsc2UgaWYgKGdUZXN0UnVubmVyLT5kdW1wU291cmNlQXNXZWJBcmNoaXZlKCkpIHsKICAg
ICAgICAgICAgIFdlYkFyY2hpdmUgKndlYkFyY2hpdmUgPSBbW21haW5GcmFtZSBkYXRhU291cmNl
XSB3ZWJBcmNoaXZlXTsKLSAgICAgICAgICAgIHJlc3VsdFN0cmluZyA9IENGQnJpZGdpbmdSZWxl
YXNlKFdlYkNvcmVUZXN0U3VwcG9ydDo6Y3JlYXRlWE1MU3RyaW5nRnJvbVdlYkFyY2hpdmVEYXRh
KChfX2JyaWRnZSBDRkRhdGFSZWYpW3dlYkFyY2hpdmUgZGF0YV0pKTsKKyAgICAgICAgICAgIHJl
c3VsdFN0cmluZyA9IFdlYkNvcmVUZXN0U3VwcG9ydDo6Y3JlYXRlWE1MU3RyaW5nRnJvbVdlYkFy
Y2hpdmVEYXRhKChfX2JyaWRnZSBDRkRhdGFSZWYpW3dlYkFyY2hpdmUgZGF0YV0pOwogICAgICAg
ICAgICAgcmVzdWx0TWltZVR5cGUgPSBAImFwcGxpY2F0aW9uL3gtd2ViYXJjaGl2ZSI7CiAgICAg
ICAgIH0gZWxzZSBpZiAoZ1Rlc3RSdW5uZXItPmlzUHJpbnRpbmcoKSkKICAgICAgICAgICAgIHJl
c3VsdFN0cmluZyA9IFttYWluRnJhbWUgcmVuZGVyVHJlZUFzRXh0ZXJuYWxSZXByZXNlbnRhdGlv
bkZvclByaW50aW5nXTsKQEAgLTE5ODIsNyArMTk3Niw3IEBAIHN0YXRpYyB2b2lkIHJ1blRlc3Qo
Y29uc3Qgc3RkOjpzdHJpbmcmIGlucHV0TGluZSkKICAgICBnVGVzdFJ1bm5lci0+Y2xlYXJBbGxE
YXRhYmFzZXMoKTsKIAogICAgIGlmIChkaXNhbGxvd2VkVVJMcykKLSAgICAgICAgQ0ZTZXRSZW1v
dmVBbGxWYWx1ZXMoZGlzYWxsb3dlZFVSTHMpOworICAgICAgICBDRlNldFJlbW92ZUFsbFZhbHVl
cyhkaXNhbGxvd2VkVVJMcy5nZXQoKSk7CiAgICAgaWYgKHNob3VsZExvZ0ZyYW1lTG9hZERlbGVn
YXRlcyhwYXRoT3JVUkwuY19zdHIoKSkpCiAgICAgICAgIGdUZXN0UnVubmVyLT5zZXREdW1wRnJh
bWVMb2FkQ2FsbGJhY2tzKHRydWUpOwogCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9tYWMvRHVtcFJlbmRlclRyZWVNYWMuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1w
UmVuZGVyVHJlZU1hYy5oCmluZGV4IDNkNDFiNWI3NGJiNzI4YTUxMmRlOTY3ZDk5NThmMDY4ODJk
ODU2M2MuLjRkOWQxZDJkNzA3MzdlMGExOWQzYzQ0OTNlNzlmYzQ4NTNkMTZiOWMgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZU1hYy5oCisrKyBiL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZU1hYy5oCkBAIC00NCwxMCArNDQs
MTAgQEAgT0JKQ19DTEFTUyBXZWJTY3JpcHRXb3JsZDsKIE9CSkNfQ0xBU1MgV2ViVmlldzsKIAog
ZXh0ZXJuIENGTXV0YWJsZUFycmF5UmVmIG9wZW5XaW5kb3dzUmVmOwotZXh0ZXJuIENGTXV0YWJs
ZVNldFJlZiBkaXNhbGxvd2VkVVJMczsKIGV4dGVybiBXZWJGcmFtZSogbWFpbkZyYW1lOwogZXh0
ZXJuIFdlYkZyYW1lKiB0b3BMb2FkaW5nRnJhbWU7CiAjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVy
biBSZXRhaW5QdHI8Q0ZNdXRhYmxlU2V0UmVmPiBkaXNhbGxvd2VkVVJMczsKIGV4dGVybiBSZXRh
aW5QdHI8RHVtcFJlbmRlclRyZWVEcmFnZ2luZ0luZm8+IGRyYWdnaW5nSW5mbzsKIGV4dGVybiBS
ZXRhaW5QdHI8TmF2aWdhdGlvbkNvbnRyb2xsZXI+IGdOYXZpZ2F0aW9uQ29udHJvbGxlcjsKIGV4
dGVybiBSZXRhaW5QdHI8UG9saWN5RGVsZWdhdGU+IHBvbGljeURlbGVnYXRlOwpAQCAtNjAsOSAr
NjAsMTAgQEAgZXh0ZXJuIFJldGFpblB0cjxVSVdpbmRvdz4gbWFpbldpbmRvdzsKIE9CSkNfQ0xB
U1MgTlNXaW5kb3c7CiBleHRlcm4gUmV0YWluUHRyPE5TV2luZG93PiBtYWluV2luZG93OwogI2Vu
ZGlmCi0jZW5kaWYKIAotdm9pZCBzZXRXYWl0VG9EdW1wV2F0Y2hkb2coQ0ZSdW5Mb29wVGltZXJS
ZWYpOwordm9pZCBzZXRXYWl0VG9EdW1wV2F0Y2hkb2coUmV0YWluUHRyPENGUnVuTG9vcFRpbWVy
UmVmPiYmKTsKKyNlbmRpZiAvLyBfX2NwbHVzcGx1cworCiBib29sIHNob3VsZFNldFdhaXRUb0R1
bXBXYXRjaGRvZyh2b2lkKTsKIAogI2lmZGVmIF9fY3BsdXNwbHVzCmRpZmYgLS1naXQgYS9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9tYWMvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5tbSBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL21hYy9FdmVudFNlbmRpbmdDb250cm9sbGVyLm1tCmluZGV4IDE2YTYwNTFi
YjdmYjY0YjlkZjBhYTllMzczMjJiODliMDExZDc1NzAuLmI4Nzk0MmIzYzZjOTI1ZjQzNTVmNWU1
MzczYTVmNmRlZWYwZmYwNjEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9F
dmVudFNlbmRpbmdDb250cm9sbGVyLm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9F
dmVudFNlbmRpbmdDb250cm9sbGVyLm1tCkBAIC04MDksMTYgKzgwOSwxNSBAQCAtICh2b2lkKW1v
dXNlU2Nyb2xsQnlYOihpbnQpeCBhbmRZOihpbnQpeSBjb250aW51b3VzbHk6KEJPT0wpY29udGlu
dW91c2x5CiB7CiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgQ0dTY3JvbGxFdmVudFVu
aXQgdW5pdCA9IGNvbnRpbnVvdXNseSA/IGtDR1Njcm9sbEV2ZW50VW5pdFBpeGVsIDoga0NHU2Ny
b2xsRXZlbnRVbml0TGluZTsKLSAgICBDR0V2ZW50UmVmIGNnU2Nyb2xsRXZlbnQgPSBDR0V2ZW50
Q3JlYXRlU2Nyb2xsV2hlZWxFdmVudDIoTlVMTCwgdW5pdCwgMiwgeSwgeCwgMCk7CisgICAgYXV0
byBjZ1Njcm9sbEV2ZW50ID0gYWRvcHRDRihDR0V2ZW50Q3JlYXRlU2Nyb2xsV2hlZWxFdmVudDIo
TlVMTCwgdW5pdCwgMiwgeSwgeCwgMCkpOwogICAgIAogICAgIC8vIFNldCB0aGUgQ0dFdmVudCBs
b2NhdGlvbiBpbiBmbGlwcGVkIGNvb3JkcyByZWxhdGl2ZSB0byB0aGUgZmlyc3Qgc2NyZWVuLCB3
aGljaAogICAgIC8vIGNvbXBlbnNhdGVzIGZvciB0aGUgYmVoYXZpb3Igb2YgK1tOU0V2ZW50IGV2
ZW50V2l0aENHRXZlbnQ6XSB3aGVuIHRoZSBldmVudCBoYXMKICAgICAvLyBubyBhc3NvY2lhdGVk
IHdpbmRvdy4gU2VlIDxyZGFyOi8vcHJvYmxlbS8xNzE4MDU5MT4uCiAgICAgQ0dQb2ludCBsYXN0
R2xvYmFsTW91c2VQb3NpdGlvbiA9IENHUG9pbnRNYWtlKGxhc3RNb3VzZVBvc2l0aW9uLngsIFtb
W05TU2NyZWVuIHNjcmVlbnNdIG9iamVjdEF0SW5kZXg6MF0gZnJhbWVdLnNpemUuaGVpZ2h0IC0g
bGFzdE1vdXNlUG9zaXRpb24ueSk7Ci0gICAgQ0dFdmVudFNldExvY2F0aW9uKGNnU2Nyb2xsRXZl
bnQsIGxhc3RHbG9iYWxNb3VzZVBvc2l0aW9uKTsKKyAgICBDR0V2ZW50U2V0TG9jYXRpb24oY2dT
Y3JvbGxFdmVudC5nZXQoKSwgbGFzdEdsb2JhbE1vdXNlUG9zaXRpb24pOwogCi0gICAgTlNFdmVu
dCAqc2Nyb2xsRXZlbnQgPSBbTlNFdmVudCBldmVudFdpdGhDR0V2ZW50OmNnU2Nyb2xsRXZlbnRd
OwotICAgIENGUmVsZWFzZShjZ1Njcm9sbEV2ZW50KTsKKyAgICBOU0V2ZW50ICpzY3JvbGxFdmVu
dCA9IFtOU0V2ZW50IGV2ZW50V2l0aENHRXZlbnQ6Y2dTY3JvbGxFdmVudC5nZXQoKV07CiAKICAg
ICBOU1ZpZXcgKnN1YlZpZXcgPSBbW21haW5GcmFtZSB3ZWJWaWV3XSBoaXRUZXN0OltzY3JvbGxF
dmVudCBsb2NhdGlvbkluV2luZG93XV07CiAgICAgaWYgKHN1YlZpZXcpIHsKQEAgLTg3NSwxOSAr
ODc0LDE4IEBAIC0gKHZvaWQpbW91c2VTY3JvbGxCeVg6KGludCl4IGFuZFk6KGludCl5IHdpdGhX
aGVlbDooTlNTdHJpbmcqKXBoYXNlTmFtZSBhbmRNb21lCiAgICAgaWYgKG1vbWVudHVtID09IGtD
R01vbWVudHVtU2Nyb2xsUGhhc2VFbmQpCiAgICAgICAgIF9zZW50TW9tZW50dW1QaGFzZUVuZCA9
IFlFUzsKIAotICAgIENHRXZlbnRSZWYgY2dTY3JvbGxFdmVudCA9IENHRXZlbnRDcmVhdGVTY3Jv
bGxXaGVlbEV2ZW50MihOVUxMLCBrQ0dTY3JvbGxFdmVudFVuaXRMaW5lLCAyLCB5LCB4LCAwKTsK
KyAgICBhdXRvIGNnU2Nyb2xsRXZlbnQgPSBhZG9wdENGKENHRXZlbnRDcmVhdGVTY3JvbGxXaGVl
bEV2ZW50MihOVUxMLCBrQ0dTY3JvbGxFdmVudFVuaXRMaW5lLCAyLCB5LCB4LCAwKSk7CiAKICAg
ICAvLyBTZXQgdGhlIENHRXZlbnQgbG9jYXRpb24gaW4gZmxpcHBlZCBjb29yZHMgcmVsYXRpdmUg
dG8gdGhlIGZpcnN0IHNjcmVlbiwgd2hpY2gKICAgICAvLyBjb21wZW5zYXRlcyBmb3IgdGhlIGJl
aGF2aW9yIG9mICtbTlNFdmVudCBldmVudFdpdGhDR0V2ZW50Ol0gd2hlbiB0aGUgZXZlbnQgaGFz
CiAgICAgLy8gbm8gYXNzb2NpYXRlZCB3aW5kb3cuIFNlZSA8cmRhcjovL3Byb2JsZW0vMTcxODA1
OTE+LgogICAgIENHUG9pbnQgbGFzdEdsb2JhbE1vdXNlUG9zaXRpb24gPSBDR1BvaW50TWFrZShs
YXN0TW91c2VQb3NpdGlvbi54LCBbW1tOU1NjcmVlbiBzY3JlZW5zXSBvYmplY3RBdEluZGV4OjBd
IGZyYW1lXS5zaXplLmhlaWdodCAtIGxhc3RNb3VzZVBvc2l0aW9uLnkpOwotICAgIENHRXZlbnRT
ZXRMb2NhdGlvbihjZ1Njcm9sbEV2ZW50LCBsYXN0R2xvYmFsTW91c2VQb3NpdGlvbik7Ci0gICAg
Q0dFdmVudFNldEludGVnZXJWYWx1ZUZpZWxkKGNnU2Nyb2xsRXZlbnQsIGtDR1Njcm9sbFdoZWVs
RXZlbnRJc0NvbnRpbnVvdXMsIDEpOwotICAgIENHRXZlbnRTZXRJbnRlZ2VyVmFsdWVGaWVsZChj
Z1Njcm9sbEV2ZW50LCBrQ0dTY3JvbGxXaGVlbEV2ZW50U2Nyb2xsUGhhc2UsIHBoYXNlKTsKLSAg
ICBDR0V2ZW50U2V0SW50ZWdlclZhbHVlRmllbGQoY2dTY3JvbGxFdmVudCwga0NHU2Nyb2xsV2hl
ZWxFdmVudE1vbWVudHVtUGhhc2UsIG1vbWVudHVtKTsKKyAgICBDR0V2ZW50U2V0TG9jYXRpb24o
Y2dTY3JvbGxFdmVudC5nZXQoKSwgbGFzdEdsb2JhbE1vdXNlUG9zaXRpb24pOworICAgIENHRXZl
bnRTZXRJbnRlZ2VyVmFsdWVGaWVsZChjZ1Njcm9sbEV2ZW50LmdldCgpLCBrQ0dTY3JvbGxXaGVl
bEV2ZW50SXNDb250aW51b3VzLCAxKTsKKyAgICBDR0V2ZW50U2V0SW50ZWdlclZhbHVlRmllbGQo
Y2dTY3JvbGxFdmVudC5nZXQoKSwga0NHU2Nyb2xsV2hlZWxFdmVudFNjcm9sbFBoYXNlLCBwaGFz
ZSk7CisgICAgQ0dFdmVudFNldEludGVnZXJWYWx1ZUZpZWxkKGNnU2Nyb2xsRXZlbnQuZ2V0KCks
IGtDR1Njcm9sbFdoZWVsRXZlbnRNb21lbnR1bVBoYXNlLCBtb21lbnR1bSk7CiAgICAgCi0gICAg
TlNFdmVudCogc2Nyb2xsRXZlbnQgPSBbTlNFdmVudCBldmVudFdpdGhDR0V2ZW50OmNnU2Nyb2xs
RXZlbnRdOwotICAgIENGUmVsZWFzZShjZ1Njcm9sbEV2ZW50KTsKKyAgICBOU0V2ZW50KiBzY3Jv
bGxFdmVudCA9IFtOU0V2ZW50IGV2ZW50V2l0aENHRXZlbnQ6Y2dTY3JvbGxFdmVudC5nZXQoKV07
CiAKICAgICBpZiAoTlNWaWV3KiB0YXJnZXRWaWV3ID0gW1ttYWluRnJhbWUgd2ViVmlld10gaGl0
VGVzdDpbc2Nyb2xsRXZlbnQgbG9jYXRpb25JbldpbmRvd11dKSB7CiAgICAgICAgIFtOU0FwcCBf
c2V0Q3VycmVudEV2ZW50OnNjcm9sbEV2ZW50XTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL21hYy9QaXhlbER1bXBTdXBwb3J0TWFjLm1tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUv
bWFjL1BpeGVsRHVtcFN1cHBvcnRNYWMubW0KaW5kZXggYWMzMjgxYTRkZjNlMDIzNTY3MTg4MDdm
MGFkNzgyYmYxZDc0NGJiNy4uNGEyNmFhNTMxNjUwNjJjMGI4MDJiODBjMzU1OWE2ZmFkZTEwZDRl
ZiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1BpeGVsRHVtcFN1cHBvcnRN
YWMubW0KKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1BpeGVsRHVtcFN1cHBvcnRNYWMu
bW0KQEAgLTc5LDEwICs3OSwxMCBAQCBzdGF0aWMgdm9pZCBwYWludFJlcGFpbnRSZWN0T3Zlcmxh
eShXZWJWaWV3KiB3ZWJWaWV3LCBDR0NvbnRleHRSZWYgY29udGV4dCkKICAgICBDR0NvbnRleHRS
ZXN0b3JlR1N0YXRlKGNvbnRleHQpOwogfQogCi1zdGF0aWMgQ0dJbWFnZVJlZiB0YWtlV2luZG93
U25hcHNob3QoQ0dTV2luZG93SUQgd2luZG93SUQsIENHV2luZG93SW1hZ2VPcHRpb24gaW1hZ2VP
cHRpb25zKSBDRl9SRVRVUk5TX1JFVEFJTkVECitzdGF0aWMgUmV0YWluUHRyPENHSW1hZ2VSZWY+
IHRha2VXaW5kb3dTbmFwc2hvdChDR1NXaW5kb3dJRCB3aW5kb3dJRCwgQ0dXaW5kb3dJbWFnZU9w
dGlvbiBpbWFnZU9wdGlvbnMpCiB7CiAgICAgaW1hZ2VPcHRpb25zIHw9IGtDR1dpbmRvd0ltYWdl
Qm91bmRzSWdub3JlRnJhbWluZyB8IGtDR1dpbmRvd0ltYWdlU2hvdWxkQmVPcGFxdWU7Ci0gICAg
cmV0dXJuIENHV2luZG93TGlzdENyZWF0ZUltYWdlKENHUmVjdE51bGwsIGtDR1dpbmRvd0xpc3RP
cHRpb25JbmNsdWRpbmdXaW5kb3csIHdpbmRvd0lELCBpbWFnZU9wdGlvbnMpOworICAgIHJldHVy
biBhZG9wdENGKENHV2luZG93TGlzdENyZWF0ZUltYWdlKENHUmVjdE51bGwsIGtDR1dpbmRvd0xp
c3RPcHRpb25JbmNsdWRpbmdXaW5kb3csIHdpbmRvd0lELCBpbWFnZU9wdGlvbnMpKTsKIH0KIAog
UmVmUHRyPEJpdG1hcENvbnRleHQ+IGNyZWF0ZUJpdG1hcENvbnRleHRGcm9tV2ViVmlldyhib29s
IG9uc2NyZWVuLCBib29sIGluY3JlbWVudGFsUmVwYWludCwgYm9vbCBzd2VlcEhvcml6b250YWxs
eSwgYm9vbCBkcmF3U2VsZWN0aW9uUmVjdCkKQEAgLTEzMiwyMiArMTMyLDE5IEBAIFJlZlB0cjxC
aXRtYXBDb250ZXh0PiBjcmVhdGVCaXRtYXBDb250ZXh0RnJvbVdlYlZpZXcoYm9vbCBvbnNjcmVl
biwgYm9vbCBpbmNyZW1lCiAgICAgICAgICAgICAvLyBBc2sgdGhlIHdpbmRvdyBzZXJ2ZXIgdG8g
cHJvdmlkZSB1cyBhIGNvbXBvc2l0ZWQgdmVyc2lvbiBvZiB0aGUgKnJlYWwqIHdpbmRvdyBjb250
ZW50IGluY2x1ZGluZyBzdXJmYWNlcyAoaS5lLiBPcGVuR0wgY29udGVudCkKICAgICAgICAgICAg
IC8vIE5vdGUgdGhhdCB0aGUgcmV0dXJuZWQgaW1hZ2UgbWlnaHQgZGlmZmVyIHZlcnkgc2xpZ2h0
bHkgZnJvbSB0aGUgd2luZG93IGJhY2tpbmcgYmVjYXVzZSBvZiBkaXRoZXJpbmcgYXJ0aWZhY3Rz
IGluIHRoZSB3aW5kb3cgc2VydmVyIGNvbXBvc2l0b3IuCiAgICAgICAgICAgICBOU1dpbmRvdyAq
d2luZG93ID0gW3ZpZXcgd2luZG93XTsKLSAgICAgICAgICAgIENHSW1hZ2VSZWYgaW1hZ2UgPSB0
YWtlV2luZG93U25hcHNob3QoW3dpbmRvdyB3aW5kb3dOdW1iZXJdLCBrQ0dXaW5kb3dJbWFnZURl
ZmF1bHQpOworICAgICAgICAgICAgYXV0byBpbWFnZSA9IHRha2VXaW5kb3dTbmFwc2hvdChbd2lu
ZG93IHdpbmRvd051bWJlcl0sIGtDR1dpbmRvd0ltYWdlRGVmYXVsdCk7CiAKICAgICAgICAgICAg
IGlmIChpbWFnZSkgewogICAgICAgICAgICAgICAgIC8vIFdvcmsgYXJvdW5kIDxyZGFyOi8vcHJv
YmxlbS8xNzA4NDk5Mz47IHJlLXJlcXVlc3QgdGhlIHNuYXBzaG90IGF0IGtDR1dpbmRvd0ltYWdl
Tm9taW5hbFJlc29sdXRpb24gaWYgaXQgd2FzIGNhcHR1cmVkIGF0IHRoZSB3cm9uZyBzY2FsZS4K
ICAgICAgICAgICAgICAgICBDR0Zsb2F0IGRlc2lyZWRTbmFwc2hvdFdpZHRoID0gd2luZG93LmZy
YW1lLnNpemUud2lkdGggKiBkZXZpY2VTY2FsZUZhY3RvcjsKLSAgICAgICAgICAgICAgICBpZiAo
Q0dJbWFnZUdldFdpZHRoKGltYWdlKSAhPSBkZXNpcmVkU25hcHNob3RXaWR0aCkgewotICAgICAg
ICAgICAgICAgICAgICBDR0ltYWdlUmVsZWFzZShpbWFnZSk7CisgICAgICAgICAgICAgICAgaWYg
KENHSW1hZ2VHZXRXaWR0aChpbWFnZS5nZXQoKSkgIT0gZGVzaXJlZFNuYXBzaG90V2lkdGgpCiAg
ICAgICAgICAgICAgICAgICAgIGltYWdlID0gdGFrZVdpbmRvd1NuYXBzaG90KFt3aW5kb3cgd2lu
ZG93TnVtYmVyXSwga0NHV2luZG93SW1hZ2VOb21pbmFsUmVzb2x1dGlvbik7Ci0gICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAoIWltYWdlKQogICAgICAg
ICAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgICAgICAgICBDR0NvbnRleHREcmF3SW1h
Z2UoY29udGV4dCwgQ0dSZWN0TWFrZSgwLCAwLCBDR0ltYWdlR2V0V2lkdGgoaW1hZ2UpLCBDR0lt
YWdlR2V0SGVpZ2h0KGltYWdlKSksIGltYWdlKTsKLSAgICAgICAgICAgIENHSW1hZ2VSZWxlYXNl
KGltYWdlKTsKKyAgICAgICAgICAgIENHQ29udGV4dERyYXdJbWFnZShjb250ZXh0LCBDR1JlY3RN
YWtlKDAsIDAsIENHSW1hZ2VHZXRXaWR0aChpbWFnZS5nZXQoKSksIENHSW1hZ2VHZXRIZWlnaHQo
aW1hZ2UuZ2V0KCkpKSwgaW1hZ2UuZ2V0KCkpOwogCiAgICAgICAgICAgICBpZiAoW3ZpZXcgaXNU
cmFja2luZ1JlcGFpbnRzXSkKICAgICAgICAgICAgICAgICBwYWludFJlcGFpbnRSZWN0T3Zlcmxh
eSh2aWV3LCBjb250ZXh0KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9S
ZXNvdXJjZUxvYWREZWxlZ2F0ZS5tbSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9SZXNvdXJj
ZUxvYWREZWxlZ2F0ZS5tbQppbmRleCA1MzlkMTZhOGEwY2ZiYmFmYTBlMzQwMWY2NDgzOWUwMjli
YWYzMjkwLi4wYTgzMmE5ZGQ2MDU5YjY2NWRmNzg5NTU5MzgzMjQ2ODhhOTM5MjgzIDEwMDY0NAot
LS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvUmVzb3VyY2VMb2FkRGVsZWdhdGUubW0KKysr
IGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1Jlc291cmNlTG9hZERlbGVnYXRlLm1tCkBAIC0x
NzIsNyArMTcyLDcgQEAgLShOU1VSTFJlcXVlc3QgKil3ZWJWaWV3OiAoV2ViVmlldyAqKXd2IHJl
c291cmNlOmlkZW50aWZpZXIgd2lsbFNlbmRSZXF1ZXN0OiAoTlMKICAgICAgICAgfQogICAgIH0K
IAotICAgIGlmIChkaXNhbGxvd2VkVVJMcyAmJiBDRlNldENvbnRhaW5zVmFsdWUoZGlzYWxsb3dl
ZFVSTHMsIChfX2JyaWRnZSBDRlVSTFJlZil1cmwpKQorICAgIGlmIChkaXNhbGxvd2VkVVJMcyAm
JiBDRlNldENvbnRhaW5zVmFsdWUoZGlzYWxsb3dlZFVSTHMuZ2V0KCksIChfX2JyaWRnZSBDRlVS
TFJlZil1cmwpKQogICAgICAgICByZXR1cm4gbmlsOwogCiAgICAgYXV0byBuZXdSZXF1ZXN0ID0g
YWRvcHROUyhbcmVxdWVzdCBtdXRhYmxlQ29weV0pOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJl
bmRlclRyZWUvbWFjL1Rlc3RSdW5uZXJNYWMubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMv
VGVzdFJ1bm5lck1hYy5tbQppbmRleCAyNGNlMjJmN2ZkYTc2ZDU1Zjg2ZTZhNWQ0YTFmYmJiYThl
YzJiNjBmLi4wOWRjMmM0NTU4NWYwMDdmMDU2MTY1MWQxNzBlYzQzNGU1ZGZlZWY3IDEwMDY0NAot
LS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVGVzdFJ1bm5lck1hYy5tbQorKysgYi9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9tYWMvVGVzdFJ1bm5lck1hYy5tbQpAQCAtMTM3LDEzICsxMzcsMTMg
QEAgdm9pZCBUZXN0UnVubmVyOjphZGREaXNhbGxvd2VkVVJMKEpTU3RyaW5nUmVmIHVybCkKICAg
ICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHVybENGID0gYWRvcHRDRihKU1N0cmluZ0NvcHlDRlN0
cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCB1cmwpKTsKIAogICAgIGlmICghZGlzYWxsb3dlZFVS
THMpCi0gICAgICAgIGRpc2FsbG93ZWRVUkxzID0gQ0ZTZXRDcmVhdGVNdXRhYmxlKGtDRkFsbG9j
YXRvckRlZmF1bHQsIDAsIE5VTEwpOworICAgICAgICBkaXNhbGxvd2VkVVJMcyA9IGFkb3B0Q0Yo
Q0ZTZXRDcmVhdGVNdXRhYmxlKGtDRkFsbG9jYXRvckRlZmF1bHQsIDAsIE5VTEwpKTsKIAogICAg
IC8vIENhbm9uaWNhbGl6ZSB0aGUgVVJMCiAgICAgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0ID0gW05T
VVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzooX19icmlkZ2Ug
TlNTdHJpbmcgKil1cmxDRi5nZXQoKV1dOwogICAgIHJlcXVlc3QgPSBbTlNVUkxQcm90b2NvbCBj
YW5vbmljYWxSZXF1ZXN0Rm9yUmVxdWVzdDpyZXF1ZXN0XTsKIAotICAgIENGU2V0QWRkVmFsdWUo
ZGlzYWxsb3dlZFVSTHMsIChfX2JyaWRnZSBDRlVSTFJlZilbcmVxdWVzdCBVUkxdKTsKKyAgICBD
RlNldEFkZFZhbHVlKGRpc2FsbG93ZWRVUkxzLmdldCgpLCAoX19icmlkZ2UgQ0ZVUkxSZWYpW3Jl
cXVlc3QgVVJMXSk7CiB9CiAKIGJvb2wgVGVzdFJ1bm5lcjo6Y2FsbFNob3VsZENsb3NlT25XZWJW
aWV3KCkKQEAgLTU3Nyw3ICs1NzcsNyBAQCB2b2lkIFRlc3RSdW5uZXI6OnNldFdhaXRUb0R1bXAo
Ym9vbCB3YWl0VW50aWxEb25lKQogewogICAgIG1fd2FpdFRvRHVtcCA9IHdhaXRVbnRpbERvbmU7
CiAgICAgaWYgKG1fd2FpdFRvRHVtcCAmJiBtX3RpbWVvdXQgJiYgc2hvdWxkU2V0V2FpdFRvRHVt
cFdhdGNoZG9nKCkpCi0gICAgICAgIHNldFdhaXRUb0R1bXBXYXRjaGRvZyhDRlJ1bkxvb3BUaW1l
ckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBDRkFic29sdXRlVGltZUdldEN1cnJlbnQoKSAr
IG1fdGltZW91dCAvIDEwMDAuMCwgMCwgMCwgMCwgd2FpdFVudGlsRG9uZVdhdGNoZG9nRmlyZWQs
IE5VTEwpKTsKKyAgICAgICAgc2V0V2FpdFRvRHVtcFdhdGNoZG9nKGFkb3B0Q0YoQ0ZSdW5Mb29w
VGltZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgQ0ZBYnNvbHV0ZVRpbWVHZXRDdXJyZW50
KCkgKyBtX3RpbWVvdXQgLyAxMDAwLjAsIDAsIDAsIDAsIHdhaXRVbnRpbERvbmVXYXRjaGRvZ0Zp
cmVkLCBOVUxMKSkpOwogfQogCiBpbnQgVGVzdFJ1bm5lcjo6d2luZG93Q291bnQoKQpkaWZmIC0t
Z2l0IGEvVG9vbHMvRm9udFdpdGhGZWF0dXJlcy9Gb250V2l0aEZlYXR1cmVzL21haW4uY3BwIGIv
VG9vbHMvRm9udFdpdGhGZWF0dXJlcy9Gb250V2l0aEZlYXR1cmVzL21haW4uY3BwCmluZGV4IGM0
ZWNkNzY1ODRiOGU3YTdiMTdmN2RjNGI0MjAxMDU0YmE1ZmIxYWQuLjBkOGM4OTVjNjhlYjAwZGI3
ZTBlNWFmZDVlMzhhMTVjY2EyZWZlYTggMTAwNjQ0Ci0tLSBhL1Rvb2xzL0ZvbnRXaXRoRmVhdHVy
ZXMvRm9udFdpdGhGZWF0dXJlcy9tYWluLmNwcAorKysgYi9Ub29scy9Gb250V2l0aEZlYXR1cmVz
L0ZvbnRXaXRoRmVhdHVyZXMvbWFpbi5jcHAKQEAgLTMyLDUwICszMiwzOSBAQAogI2luY2x1ZGUg
PEltYWdlSU8vSW1hZ2VJTy5oPgogI2luY2x1ZGUgPGZzdHJlYW0+CiAKLXN0YXRpYyBDVEZvbnRE
ZXNjcmlwdG9yUmVmIGNvbnN0cnVjdEZvbnRXaXRoVHJ1ZVR5cGVGZWF0dXJlKENURm9udERlc2Ny
aXB0b3JSZWYgZm9udERlc2NyaXB0b3IsIGludCB0eXBlLCBpbnQgc2VsZWN0b3IpCitzdGF0aWMg
UmV0YWluUHRyPENURm9udERlc2NyaXB0b3JSZWY+IGNvbnN0cnVjdEZvbnRXaXRoVHJ1ZVR5cGVG
ZWF0dXJlKENURm9udERlc2NyaXB0b3JSZWYgZm9udERlc2NyaXB0b3IsIGludCB0eXBlLCBpbnQg
c2VsZWN0b3IpCiB7Ci0gICAgQ0ZOdW1iZXJSZWYgdHlwZVZhbHVlID0gQ0ZOdW1iZXJDcmVhdGUo
a0NGQWxsb2NhdG9yRGVmYXVsdCwga0NGTnVtYmVySW50VHlwZSwgJnR5cGUpOwotICAgIENGTnVt
YmVyUmVmIHNlbGVjdG9yVmFsdWUgPSBDRk51bWJlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0
LCBrQ0ZOdW1iZXJJbnRUeXBlLCAmc2VsZWN0b3IpOworICAgIGF1dG8gdHlwZVZhbHVlID0gYWRv
cHRDRihDRk51bWJlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrQ0ZOdW1iZXJJbnRUeXBl
LCAmdHlwZSkpOworICAgIGF1dG8gc2VsZWN0b3JWYWx1ZSA9IGFkb3B0Q0YoQ0ZOdW1iZXJDcmVh
dGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwga0NGTnVtYmVySW50VHlwZSwgJnNlbGVjdG9yKSk7CiAg
ICAgQ0ZUeXBlUmVmIGZlYXR1cmVEaWN0aW9uYXJ5S2V5c1tdID0geyBrQ1RGb250RmVhdHVyZVR5
cGVJZGVudGlmaWVyS2V5LCBrQ1RGb250RmVhdHVyZVNlbGVjdG9ySWRlbnRpZmllcktleSB9Owot
ICAgIENGVHlwZVJlZiBmZWF0dXJlRGljdGlvbmFyeVZhbHVlc1tdID0geyB0eXBlVmFsdWUsIHNl
bGVjdG9yVmFsdWUgfTsKLSAgICBDRkRpY3Rpb25hcnlSZWYgZmVhdHVyZURpY3Rpb25hcnkgPSBD
RkRpY3Rpb25hcnlDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgZmVhdHVyZURpY3Rpb25hcnlL
ZXlzLCBmZWF0dXJlRGljdGlvbmFyeVZhbHVlcywgMiwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2Fs
bEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcyk7Ci0gICAgQ0ZSZWxlYXNl
KHR5cGVWYWx1ZSk7Ci0gICAgQ0ZSZWxlYXNlKHNlbGVjdG9yVmFsdWUpOworICAgIENGVHlwZVJl
ZiBmZWF0dXJlRGljdGlvbmFyeVZhbHVlc1tdID0geyB0eXBlVmFsdWUuZ2V0KCksIHNlbGVjdG9y
VmFsdWUuZ2V0KCkgfTsKKyAgICBhdXRvIGZlYXR1cmVEaWN0aW9uYXJ5ID0gYWRvcHRDRihDRkRp
Y3Rpb25hcnlDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgZmVhdHVyZURpY3Rpb25hcnlLZXlz
LCBmZWF0dXJlRGljdGlvbmFyeVZhbHVlcywgMiwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJh
Y2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcykpOwogCi0gICAgQ0ZUeXBlUmVm
IGZlYXR1cmVTZXR0aW5nc1ZhbHVlc1tdID0geyBmZWF0dXJlRGljdGlvbmFyeSB9OwotICAgIENG
QXJyYXlSZWYgZm9udEZlYXR1cmVTZXR0aW5ncyA9IENGQXJyYXlDcmVhdGUoa0NGQWxsb2NhdG9y
RGVmYXVsdCwgZmVhdHVyZVNldHRpbmdzVmFsdWVzLCAxLCAma0NGVHlwZUFycmF5Q2FsbEJhY2tz
KTsKLSAgICBDRlJlbGVhc2UoZmVhdHVyZURpY3Rpb25hcnkpOworICAgIENGVHlwZVJlZiBmZWF0
dXJlU2V0dGluZ3NWYWx1ZXNbXSA9IHsgZmVhdHVyZURpY3Rpb25hcnkuZ2V0KCkgfTsKKyAgICBh
dXRvIGZvbnRGZWF0dXJlU2V0dGluZ3MgPSBhZG9wdENGKENGQXJyYXlDcmVhdGUoa0NGQWxsb2Nh
dG9yRGVmYXVsdCwgZmVhdHVyZVNldHRpbmdzVmFsdWVzLCAxLCAma0NGVHlwZUFycmF5Q2FsbEJh
Y2tzKSk7CiAKICAgICBDRlR5cGVSZWYgZm9udERlc2NyaXB0b3JLZXlzW10gPSB7IGtDVEZvbnRG
ZWF0dXJlU2V0dGluZ3NBdHRyaWJ1dGUgfTsKLSAgICBDRlR5cGVSZWYgZm9udERlc2NyaXB0b3JW
YWx1ZXNbXSA9IHsgZm9udEZlYXR1cmVTZXR0aW5ncyB9OwotICAgIENGRGljdGlvbmFyeVJlZiBm
b250RGVzY3JpcHRvckF0dHJpYnV0ZXMgPSBDRkRpY3Rpb25hcnlDcmVhdGUoa0NGQWxsb2NhdG9y
RGVmYXVsdCwgZm9udERlc2NyaXB0b3JLZXlzLCBmb250RGVzY3JpcHRvclZhbHVlcywgMSwgJmtD
RlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxC
YWNrcyk7Ci0gICAgQ0ZSZWxlYXNlKGZvbnRGZWF0dXJlU2V0dGluZ3MpOworICAgIENGVHlwZVJl
ZiBmb250RGVzY3JpcHRvclZhbHVlc1tdID0geyBmb250RmVhdHVyZVNldHRpbmdzLmdldCgpIH07
CisgICAgYXV0byBmb250RGVzY3JpcHRvckF0dHJpYnV0ZXMgPSBhZG9wdENGKENGRGljdGlvbmFy
eUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBmb250RGVzY3JpcHRvcktleXMsIGZvbnREZXNj
cmlwdG9yVmFsdWVzLCAxLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBl
RGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7CiAKLSAgICBDVEZvbnREZXNjcmlwdG9yUmVmIG1v
ZGlmaWVkRm9udERlc2NyaXB0b3IgPSBDVEZvbnREZXNjcmlwdG9yQ3JlYXRlQ29weVdpdGhBdHRy
aWJ1dGVzKGZvbnREZXNjcmlwdG9yLCBmb250RGVzY3JpcHRvckF0dHJpYnV0ZXMpOwotICAgIENG
UmVsZWFzZShmb250RGVzY3JpcHRvckF0dHJpYnV0ZXMpOwotICAgIHJldHVybiBtb2RpZmllZEZv
bnREZXNjcmlwdG9yOworICAgIHJldHVybiBhZG9wdENGKENURm9udERlc2NyaXB0b3JDcmVhdGVD
b3B5V2l0aEF0dHJpYnV0ZXMoZm9udERlc2NyaXB0b3IsIGZvbnREZXNjcmlwdG9yQXR0cmlidXRl
cy5nZXQoKSkpOwogfQogCi1zdGF0aWMgQ1RGb250RGVzY3JpcHRvclJlZiBjb25zdHJ1Y3RGb250
V2l0aE9wZW5UeXBlRmVhdHVyZShDVEZvbnREZXNjcmlwdG9yUmVmIGZvbnREZXNjcmlwdG9yLCBD
RlN0cmluZ1JlZiBmZWF0dXJlLCBpbnQgdmFsdWUpCitzdGF0aWMgUmV0YWluUHRyPENURm9udERl
c2NyaXB0b3JSZWY+IGNvbnN0cnVjdEZvbnRXaXRoT3BlblR5cGVGZWF0dXJlKENURm9udERlc2Ny
aXB0b3JSZWYgZm9udERlc2NyaXB0b3IsIENGU3RyaW5nUmVmIGZlYXR1cmUsIGludCB2YWx1ZSkK
IHsKLSAgICBDRk51bWJlclJlZiBmZWF0dXJlVmFsdWUgPSBDRk51bWJlckNyZWF0ZShrQ0ZBbGxv
Y2F0b3JEZWZhdWx0LCBrQ0ZOdW1iZXJJbnRUeXBlLCAmdmFsdWUpOworICAgIGF1dG8gZmVhdHVy
ZVZhbHVlID0gYWRvcHRDRihDRk51bWJlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrQ0ZO
dW1iZXJJbnRUeXBlLCAmdmFsdWUpKTsKICAgICBDRlR5cGVSZWYgZmVhdHVyZURpY3Rpb25hcnlL
ZXlzW10gPSB7IGtDVEZvbnRPcGVuVHlwZUZlYXR1cmVUYWcsIGtDVEZvbnRPcGVuVHlwZUZlYXR1
cmVWYWx1ZSB9OwotICAgIENGVHlwZVJlZiBmZWF0dXJlRGljdGlvbmFyeVZhbHVlc1tdID0geyBm
ZWF0dXJlLCBmZWF0dXJlVmFsdWUgfTsKLSAgICBDRkRpY3Rpb25hcnlSZWYgZmVhdHVyZURpY3Rp
b25hcnkgPSBDRkRpY3Rpb25hcnlDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgZmVhdHVyZURp
Y3Rpb25hcnlLZXlzLCBmZWF0dXJlRGljdGlvbmFyeVZhbHVlcywgMiwgJmtDRlR5cGVEaWN0aW9u
YXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcyk7Ci0gICAg
Q0ZSZWxlYXNlKGZlYXR1cmVWYWx1ZSk7CisgICAgQ0ZUeXBlUmVmIGZlYXR1cmVEaWN0aW9uYXJ5
VmFsdWVzW10gPSB7IGZlYXR1cmUsIGZlYXR1cmVWYWx1ZS5nZXQoKSB9OworICAgIGF1dG8gZmVh
dHVyZURpY3Rpb25hcnkgPSBhZG9wdENGKENGRGljdGlvbmFyeUNyZWF0ZShrQ0ZBbGxvY2F0b3JE
ZWZhdWx0LCBmZWF0dXJlRGljdGlvbmFyeUtleXMsIGZlYXR1cmVEaWN0aW9uYXJ5VmFsdWVzLCAy
LCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVl
Q2FsbEJhY2tzKSk7CiAKLSAgICBDRlR5cGVSZWYgZmVhdHVyZVNldHRpbmdzVmFsdWVzW10gPSB7
IGZlYXR1cmVEaWN0aW9uYXJ5IH07Ci0gICAgQ0ZBcnJheVJlZiBmb250RmVhdHVyZVNldHRpbmdz
ID0gQ0ZBcnJheUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBmZWF0dXJlU2V0dGluZ3NWYWx1
ZXMsIDEsICZrQ0ZUeXBlQXJyYXlDYWxsQmFja3MpOwotICAgIENGUmVsZWFzZShmZWF0dXJlRGlj
dGlvbmFyeSk7CisgICAgQ0ZUeXBlUmVmIGZlYXR1cmVTZXR0aW5nc1ZhbHVlc1tdID0geyBmZWF0
dXJlRGljdGlvbmFyeS5nZXQoKSB9OworICAgIGF1dG8gZm9udEZlYXR1cmVTZXR0aW5ncyA9IGFk
b3B0Q0YoQ0ZBcnJheUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBmZWF0dXJlU2V0dGluZ3NW
YWx1ZXMsIDEsICZrQ0ZUeXBlQXJyYXlDYWxsQmFja3MpKTsKIAogICAgIENGVHlwZVJlZiBmb250
RGVzY3JpcHRvcktleXNbXSA9IHsga0NURm9udEZlYXR1cmVTZXR0aW5nc0F0dHJpYnV0ZSB9Owot
ICAgIENGVHlwZVJlZiBmb250RGVzY3JpcHRvclZhbHVlc1tdID0geyBmb250RmVhdHVyZVNldHRp
bmdzIH07Ci0gICAgQ0ZEaWN0aW9uYXJ5UmVmIGZvbnREZXNjcmlwdG9yQXR0cmlidXRlcyA9IENG
RGljdGlvbmFyeUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBmb250RGVzY3JpcHRvcktleXMs
IGZvbnREZXNjcmlwdG9yVmFsdWVzLCAxLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3Ms
ICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKTsKLSAgICBDRlJlbGVhc2UoZm9udEZl
YXR1cmVTZXR0aW5ncyk7CisgICAgQ0ZUeXBlUmVmIGZvbnREZXNjcmlwdG9yVmFsdWVzW10gPSB7
IGZvbnRGZWF0dXJlU2V0dGluZ3MuZ2V0KCkgfTsKKyAgICBhdXRvIGZvbnREZXNjcmlwdG9yQXR0
cmlidXRlcyA9IGFkb3B0Q0YoQ0ZEaWN0aW9uYXJ5Q3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQs
IGZvbnREZXNjcmlwdG9yS2V5cywgZm9udERlc2NyaXB0b3JWYWx1ZXMsIDEsICZrQ0ZUeXBlRGlj
dGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpKTsK
IAotICAgIENURm9udERlc2NyaXB0b3JSZWYgbW9kaWZpZWRGb250RGVzY3JpcHRvciA9IENURm9u
dERlc2NyaXB0b3JDcmVhdGVDb3B5V2l0aEF0dHJpYnV0ZXMoZm9udERlc2NyaXB0b3IsIGZvbnRE
ZXNjcmlwdG9yQXR0cmlidXRlcyk7Ci0gICAgQ0ZSZWxlYXNlKGZvbnREZXNjcmlwdG9yQXR0cmli
dXRlcyk7Ci0gICAgcmV0dXJuIG1vZGlmaWVkRm9udERlc2NyaXB0b3I7CisgICAgcmV0dXJuIGFk
b3B0Q0YoQ1RGb250RGVzY3JpcHRvckNyZWF0ZUNvcHlXaXRoQXR0cmlidXRlcyhmb250RGVzY3Jp
cHRvciwgZm9udERlc2NyaXB0b3JBdHRyaWJ1dGVzLmdldCgpKSk7CiB9CiAKIHN0YXRpYyB2b2lk
IGRyYXdUZXh0KENHQ29udGV4dFJlZiBjb250ZXh0LCBDVEZvbnREZXNjcmlwdG9yUmVmIGZvbnRE
ZXNjcmlwdG9yLCBDRlN0cmluZ1JlZiBwcmVmaXgsIENHUG9pbnQgbG9jYXRpb24pCkBAIC04NCwz
NyArNzMsMjkgQEAgc3RhdGljIHZvaWQgZHJhd1RleHQoQ0dDb250ZXh0UmVmIGNvbnRleHQsIENU
Rm9udERlc2NyaXB0b3JSZWYgZm9udERlc2NyaXB0b3IsIEMKICAgICBDR0NvbnRleHRTZXRUZXh0
UG9zaXRpb24oY29udGV4dCwgbG9jYXRpb24ueCwgbG9jYXRpb24ueSk7CiAKICAgICBDR0Zsb2F0
IGZvbnRTaXplID0gMjU7Ci0gICAgQ1RGb250UmVmIGZvbnQgPSBDVEZvbnRDcmVhdGVXaXRoRm9u
dERlc2NyaXB0b3IoZm9udERlc2NyaXB0b3IsIGZvbnRTaXplLCBudWxscHRyKTsKKyAgICBhdXRv
IGZvbnQgPSBhZG9wdENGKENURm9udENyZWF0ZVdpdGhGb250RGVzY3JpcHRvcihmb250RGVzY3Jp
cHRvciwgZm9udFNpemUsIG51bGxwdHIpKTsKIAotICAgIENGTXV0YWJsZVN0cmluZ1JlZiBzdHJp
bmcgPSBDRlN0cmluZ0NyZWF0ZU11dGFibGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgMCk7Ci0gICAg
Q0ZTdHJpbmdBcHBlbmQoc3RyaW5nLCBwcmVmaXgpOwotICAgIENGU3RyaW5nQXBwZW5kKHN0cmlu
ZywgQ0ZTVFIoIkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1
dnd4eXoiKSk7CisgICAgYXV0byBzdHJpbmcgPSBhZG9wdENGKENGU3RyaW5nQ3JlYXRlTXV0YWJs
ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAwKSk7CisgICAgQ0ZTdHJpbmdBcHBlbmQoc3RyaW5nLmdl
dCgpLCBwcmVmaXgpOworICAgIENGU3RyaW5nQXBwZW5kKHN0cmluZy5nZXQoKSwgQ0ZTVFIoIkFC
Q0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXoiKSk7CiAK
LSAgICBDR0NvbG9yUmVmIHJlZCA9IENHQ29sb3JDcmVhdGVHZW5lcmljUkdCKDEsIDAsIDAsIDEp
OworICAgIGF1dG8gcmVkID0gYWRvcHRDRihDR0NvbG9yQ3JlYXRlR2VuZXJpY1JHQigxLCAwLCAw
LCAxKSk7CiAgICAgQ0ZUeXBlUmVmIGxpbmVLZXlzW10gPSB7IGtDVEZvcmVncm91bmRDb2xvckF0
dHJpYnV0ZU5hbWUgfTsKLSAgICBDRlR5cGVSZWYgbGluZVZhbHVlc1tdID0geyByZWQgfTsKLSAg
ICBDRkRpY3Rpb25hcnlSZWYgbGluZUF0dHJpYnV0ZXMgPSBDRkRpY3Rpb25hcnlDcmVhdGUoa0NG
QWxsb2NhdG9yRGVmYXVsdCwgbGluZUtleXMsIGxpbmVWYWx1ZXMsIDEsICZrQ0ZUeXBlRGljdGlv
bmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpOwotICAg
IENHQ29sb3JSZWxlYXNlKHJlZCk7CisgICAgQ0ZUeXBlUmVmIGxpbmVWYWx1ZXNbXSA9IHsgcmVk
LmdldCgpIH07CisgICAgYXV0byBsaW5lQXR0cmlidXRlcyA9IGFkb3B0Q0YoQ0ZEaWN0aW9uYXJ5
Q3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGxpbmVLZXlzLCBsaW5lVmFsdWVzLCAxLCAma0NG
VHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJh
Y2tzKSk7CiAKLSAgICBDRkF0dHJpYnV0ZWRTdHJpbmdSZWYgYXR0cmlidXRlZFN0cmluZyA9IENG
QXR0cmlidXRlZFN0cmluZ0NyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBzdHJpbmcsIGxpbmVB
dHRyaWJ1dGVzKTsKLSAgICBDRlJlbGVhc2UobGluZUF0dHJpYnV0ZXMpOworICAgIGF1dG8gYXR0
cmlidXRlZFN0cmluZyA9IGFkb3B0Q0YoQ0ZBdHRyaWJ1dGVkU3RyaW5nQ3JlYXRlKGtDRkFsbG9j
YXRvckRlZmF1bHQsIHN0cmluZy5nZXQoKSwgbGluZUF0dHJpYnV0ZXMuZ2V0KCkpKTsKIAotICAg
IENGTXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmdSZWYgbXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcgPSBD
RkF0dHJpYnV0ZWRTdHJpbmdDcmVhdGVNdXRhYmxlQ29weShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAw
LCBhdHRyaWJ1dGVkU3RyaW5nKTsKLSAgICBDRlJlbGVhc2UoYXR0cmlidXRlZFN0cmluZyk7Cisg
ICAgYXV0byBtdXRhYmxlQXR0cmlidXRlZFN0cmluZyA9IGFkb3B0Q0YoQ0ZBdHRyaWJ1dGVkU3Ry
aW5nQ3JlYXRlTXV0YWJsZUNvcHkoa0NGQWxsb2NhdG9yRGVmYXVsdCwgMCwgYXR0cmlidXRlZFN0
cmluZy5nZXQoKSkpOwogCi0gICAgQ1RGb250UmVmIG1vbm9zcGFjZUZvbnQgPSBDVEZvbnRDcmVh
dGVXaXRoTmFtZShDRlNUUigiQ291cmllciIpLCBmb250U2l6ZSwgbnVsbHB0cik7Ci0gICAgQ0ZB
dHRyaWJ1dGVkU3RyaW5nU2V0QXR0cmlidXRlKG11dGFibGVBdHRyaWJ1dGVkU3RyaW5nLCBDRlJh
bmdlTWFrZSgwLCBDRlN0cmluZ0dldExlbmd0aChwcmVmaXgpKSwga0NURm9udEF0dHJpYnV0ZU5h
bWUsIG1vbm9zcGFjZUZvbnQpOwotICAgIENGUmVsZWFzZShtb25vc3BhY2VGb250KTsKKyAgICBh
dXRvIG1vbm9zcGFjZUZvbnQgPSBhZG9wdENGKENURm9udENyZWF0ZVdpdGhOYW1lKENGU1RSKCJD
b3VyaWVyIiksIGZvbnRTaXplLCBudWxscHRyKSk7CisgICAgQ0ZBdHRyaWJ1dGVkU3RyaW5nU2V0
QXR0cmlidXRlKG11dGFibGVBdHRyaWJ1dGVkU3RyaW5nLmdldCgpLCBDRlJhbmdlTWFrZSgwLCBD
RlN0cmluZ0dldExlbmd0aChwcmVmaXgpKSwga0NURm9udEF0dHJpYnV0ZU5hbWUsIG1vbm9zcGFj
ZUZvbnQuZ2V0KCkpOwogCi0gICAgQ0ZBdHRyaWJ1dGVkU3RyaW5nU2V0QXR0cmlidXRlKG11dGFi
bGVBdHRyaWJ1dGVkU3RyaW5nLCBDRlJhbmdlTWFrZShDRlN0cmluZ0dldExlbmd0aChwcmVmaXgp
LCBDRlN0cmluZ0dldExlbmd0aChzdHJpbmcpIC0gQ0ZTdHJpbmdHZXRMZW5ndGgocHJlZml4KSks
IGtDVEZvbnRBdHRyaWJ1dGVOYW1lLCBmb250KTsKLSAgICBDRlJlbGVhc2Uoc3RyaW5nKTsKLSAg
ICBDRlJlbGVhc2UoZm9udCk7CisgICAgQ0ZBdHRyaWJ1dGVkU3RyaW5nU2V0QXR0cmlidXRlKG11
dGFibGVBdHRyaWJ1dGVkU3RyaW5nLmdldCgpLCBDRlJhbmdlTWFrZShDRlN0cmluZ0dldExlbmd0
aChwcmVmaXgpLCBDRlN0cmluZ0dldExlbmd0aChzdHJpbmcuZ2V0KCkpIC0gQ0ZTdHJpbmdHZXRM
ZW5ndGgocHJlZml4KSksIGtDVEZvbnRBdHRyaWJ1dGVOYW1lLCBmb250LmdldCgpKTsKIAotICAg
IENUTGluZVJlZiBsaW5lID0gQ1RMaW5lQ3JlYXRlV2l0aEF0dHJpYnV0ZWRTdHJpbmcobXV0YWJs
ZUF0dHJpYnV0ZWRTdHJpbmcpOwotICAgIENGUmVsZWFzZShtdXRhYmxlQXR0cmlidXRlZFN0cmlu
Zyk7CisgICAgYXV0byBsaW5lID0gYWRvcHRDRihDVExpbmVDcmVhdGVXaXRoQXR0cmlidXRlZFN0
cmluZyhtdXRhYmxlQXR0cmlidXRlZFN0cmluZy5nZXQoKSkpOwogCi0gICAgQ1RMaW5lRHJhdyhs
aW5lLCBjb250ZXh0KTsKLSAgICBDRlJlbGVhc2UobGluZSk7CisgICAgQ1RMaW5lRHJhdyhsaW5l
LmdldCgpLCBjb250ZXh0KTsKIH0KIAogaW50IG1haW4oaW50IGFyZ2MsIGNvbnN0IGNoYXIgKiBh
cmd2W10pCkBAIC0xMjIsNyArMTAzLDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNvbnN0IGNoYXIg
KiBhcmd2W10pCiAgICAgc2l6ZV90IHdpZHRoID0gMjUwMDsKICAgICBzaXplX3QgaGVpZ2h0ID0g
MjAwMDsKICAgICBDR0NvbG9yU3BhY2VSZWYgY29sb3JTcGFjZSA9IENHQ29sb3JTcGFjZUNyZWF0
ZURldmljZVJHQigpOwotICAgIENHQ29udGV4dFJlZiBjb250ZXh0ID0gQ0dCaXRtYXBDb250ZXh0
Q3JlYXRlKG51bGxwdHIsIHdpZHRoLCBoZWlnaHQsIDgsIHdpZHRoICogNCwgY29sb3JTcGFjZSwg
a0NHSW1hZ2VBbHBoYU5vbmVTa2lwTGFzdCk7CisgICAgYXV0byBjb250ZXh0ID0gYWRvcHRDRihD
R0JpdG1hcENvbnRleHRDcmVhdGUobnVsbHB0ciwgd2lkdGgsIGhlaWdodCwgOCwgd2lkdGggKiA0
LCBjb2xvclNwYWNlLCBrQ0dJbWFnZUFscGhhTm9uZVNraXBMYXN0KSk7CiAgICAgQ0dDb2xvclNw
YWNlUmVsZWFzZShjb2xvclNwYWNlKTsKICAgICBUeXBlIHR5cGUgPSBUeXBlOjpUcnVlVHlwZTsK
ICAgICBjb25zdCBzdGQ6OnZlY3Rvcjx1aW50OF90PiBmb250VmVjdG9yID0gZ2VuZXJhdGVGb250
KHR5cGUpOwpAQCAtMTMxLDQ5ICsxMTIsNDAgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNvbnN0IGNo
YXIgKiBhcmd2W10pCiAgICAgICAgIG91dHB1dEZpbGUgPDwgYjsKICAgICBvdXRwdXRGaWxlLmNs
b3NlKCk7CiAgICAgCi0gICAgQ0ZEYXRhUmVmIGZvbnREYXRhID0gQ0ZEYXRhQ3JlYXRlKGtDRkFs
bG9jYXRvckRlZmF1bHQsIGZvbnRWZWN0b3IuZGF0YSgpLCBmb250VmVjdG9yLnNpemUoKSk7Ci0g
ICAgQ1RGb250RGVzY3JpcHRvclJlZiBmb250RGVzY3JpcHRvciA9IENURm9udE1hbmFnZXJDcmVh
dGVGb250RGVzY3JpcHRvckZyb21EYXRhKGZvbnREYXRhKTsKLSAgICBDRlJlbGVhc2UoZm9udERh
dGEpOworICAgIGF1dG8gZm9udERhdGEgPSBhZG9wdENGKENGRGF0YUNyZWF0ZShrQ0ZBbGxvY2F0
b3JEZWZhdWx0LCBmb250VmVjdG9yLmRhdGEoKSwgZm9udFZlY3Rvci5zaXplKCkpKTsKKyAgICBh
dXRvIGZvbnREZXNjcmlwdG9yID0gYWRvcHRDRihDVEZvbnRNYW5hZ2VyQ3JlYXRlRm9udERlc2Ny
aXB0b3JGcm9tRGF0YShmb250RGF0YS5nZXQoKSkpOwogCiAgICAgaWYgKHR5cGUgPT0gVHlwZTo6
T3BlblR5cGUpIHsKICAgICAgICAgQ0ZUeXBlUmVmIGZlYXR1cmVWYWx1ZXNPcGVuVHlwZVtdID0g
eyBDRlNUUigibGlnYSIpLCBDRlNUUigiY2xpZyIpLCBDRlNUUigiZGxpZyIpLCBDRlNUUigiaGxp
ZyIpLCBDRlNUUigiY2FsdCIpLCBDRlNUUigic3VicyIpLCBDRlNUUigic3VwcyIpLCBDRlNUUigi
c21jcCIpLCBDRlNUUigiYzJzYyIpLCBDRlNUUigicGNhcCIpLCBDRlNUUigiYzJwYyIpLCBDRlNU
UigidW5pYyIpLCBDRlNUUigidGl0bCIpLCBDRlNUUigib251bSIpLCBDRlNUUigicG51bSIpLCBD
RlNUUigidG51bSIpLCBDRlNUUigiZnJhYyIpLCBDRlNUUigiYWZyYyIpLCBDRlNUUigib3JkbiIp
LCBDRlNUUigiemVybyIpLCBDRlNUUigiaGlzdCIpLCBDRlNUUigianA3OCIpLCBDRlNUUigianA4
MyIpLCBDRlNUUigianA5MCIpLCBDRlNUUigianAwNCIpLCBDRlNUUigic21wbCIpLCBDRlNUUigi
dHJhZCIpLCBDRlNUUigiZndpZCIpLCBDRlNUUigicHdpZCIpLCBDRlNUUigicnVieSIpIH07Ci0g
ICAgICAgIENGQXJyYXlSZWYgZmVhdHVyZXMgPSBDRkFycmF5Q3JlYXRlKGtDRkFsbG9jYXRvckRl
ZmF1bHQsIGZlYXR1cmVWYWx1ZXNPcGVuVHlwZSwgMzAsICZrQ0ZUeXBlQXJyYXlDYWxsQmFja3Mp
OwotCi0gICAgICAgIGZvciAoQ0ZJbmRleCBpID0gMDsgaSA8IENGQXJyYXlHZXRDb3VudChmZWF0
dXJlcyk7ICsraSkgewotICAgICAgICAgICAgQ0ZTdHJpbmdSZWYgZmVhdHVyZSA9IHN0YXRpY19j
YXN0PENGU3RyaW5nUmVmPihDRkFycmF5R2V0VmFsdWVBdEluZGV4KGZlYXR1cmVzLCBpKSk7Ci0g
ICAgICAgICAgICBDVEZvbnREZXNjcmlwdG9yUmVmIG1vZGlmaWVkRm9udERlc2NyaXB0b3IgPSBj
b25zdHJ1Y3RGb250V2l0aE9wZW5UeXBlRmVhdHVyZShmb250RGVzY3JpcHRvciwgZmVhdHVyZSwg
MSk7Ci0gICAgICAgICAgICBDRk11dGFibGVTdHJpbmdSZWYgcHJlZml4ID0gQ0ZTdHJpbmdDcmVh
dGVNdXRhYmxlKGtDRkFsbG9jYXRvckRlZmF1bHQsIDApOwotICAgICAgICAgICAgQ0ZTdHJpbmdB
cHBlbmQocHJlZml4LCBmZWF0dXJlKTsKLSAgICAgICAgICAgIENGU3RyaW5nQXBwZW5kKHByZWZp
eCwgQ0ZTVFIoIiAgKG9uKTogIikpOwotICAgICAgICAgICAgZHJhd1RleHQoY29udGV4dCwgbW9k
aWZpZWRGb250RGVzY3JpcHRvciwgcHJlZml4LCBDR1BvaW50TWFrZSgyNSwgMTk1MCAtIDUwICog
aSkpOwotICAgICAgICAgICAgQ0ZSZWxlYXNlKHByZWZpeCk7Ci0gICAgICAgICAgICBDRlJlbGVh
c2UobW9kaWZpZWRGb250RGVzY3JpcHRvcik7Ci0KLSAgICAgICAgICAgIG1vZGlmaWVkRm9udERl
c2NyaXB0b3IgPSBjb25zdHJ1Y3RGb250V2l0aE9wZW5UeXBlRmVhdHVyZShmb250RGVzY3JpcHRv
ciwgZmVhdHVyZSwgMCk7Ci0gICAgICAgICAgICBwcmVmaXggPSBDRlN0cmluZ0NyZWF0ZU11dGFi
bGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgMCk7Ci0gICAgICAgICAgICBDRlN0cmluZ0FwcGVuZChw
cmVmaXgsIGZlYXR1cmUpOwotICAgICAgICAgICAgQ0ZTdHJpbmdBcHBlbmQocHJlZml4LCBDRlNU
UigiIChvZmYpOiAiKSk7Ci0gICAgICAgICAgICBkcmF3VGV4dChjb250ZXh0LCBtb2RpZmllZEZv
bnREZXNjcmlwdG9yLCBwcmVmaXgsIENHUG9pbnRNYWtlKDI1LCAxOTI1IC0gNTAgKiBpKSk7Ci0g
ICAgICAgICAgICBDRlJlbGVhc2UocHJlZml4KTsKLSAgICAgICAgICAgIENGUmVsZWFzZShtb2Rp
ZmllZEZvbnREZXNjcmlwdG9yKTsKKyAgICAgICAgYXV0byBmZWF0dXJlcyA9IGFkb3B0Q0YoQ0ZB
cnJheUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBmZWF0dXJlVmFsdWVzT3BlblR5cGUsIDMw
LCAma0NGVHlwZUFycmF5Q2FsbEJhY2tzKSk7CisKKyAgICAgICAgZm9yIChDRkluZGV4IGkgPSAw
OyBpIDwgQ0ZBcnJheUdldENvdW50KGZlYXR1cmVzLmdldCgpKTsgKytpKSB7CisgICAgICAgICAg
ICBDRlN0cmluZ1JlZiBmZWF0dXJlID0gc3RhdGljX2Nhc3Q8Q0ZTdHJpbmdSZWY+KENGQXJyYXlH
ZXRWYWx1ZUF0SW5kZXgoZmVhdHVyZXMuZ2V0KCksIGkpKTsKKyAgICAgICAgICAgIGF1dG8gbW9k
aWZpZWRGb250RGVzY3JpcHRvciA9IGNvbnN0cnVjdEZvbnRXaXRoT3BlblR5cGVGZWF0dXJlKGZv
bnREZXNjcmlwdG9yLmdldCgpLCBmZWF0dXJlLCAxKTsKKyAgICAgICAgICAgIGF1dG8gcHJlZml4
ID0gYWRvcHRDRihDRlN0cmluZ0NyZWF0ZU11dGFibGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgMCkp
OworICAgICAgICAgICAgQ0ZTdHJpbmdBcHBlbmQocHJlZml4LmdldCgpLCBmZWF0dXJlKTsKKyAg
ICAgICAgICAgIENGU3RyaW5nQXBwZW5kKHByZWZpeC5nZXQoKSwgQ0ZTVFIoIiAgKG9uKTogIikp
OworICAgICAgICAgICAgZHJhd1RleHQoY29udGV4dC5nZXQoKSwgbW9kaWZpZWRGb250RGVzY3Jp
cHRvci5nZXQoKSwgcHJlZml4LmdldCgpLCBDR1BvaW50TWFrZSgyNSwgMTk1MCAtIDUwICogaSkp
OworCisgICAgICAgICAgICBtb2RpZmllZEZvbnREZXNjcmlwdG9yID0gY29uc3RydWN0Rm9udFdp
dGhPcGVuVHlwZUZlYXR1cmUoZm9udERlc2NyaXB0b3IuZ2V0KCksIGZlYXR1cmUsIDApOworICAg
ICAgICAgICAgcHJlZml4ID0gYWRvcHRDRihDRlN0cmluZ0NyZWF0ZU11dGFibGUoa0NGQWxsb2Nh
dG9yRGVmYXVsdCwgMCkpOworICAgICAgICAgICAgQ0ZTdHJpbmdBcHBlbmQocHJlZml4LmdldCgp
LCBmZWF0dXJlKTsKKyAgICAgICAgICAgIENGU3RyaW5nQXBwZW5kKHByZWZpeC5nZXQoKSwgQ0ZT
VFIoIiAob2ZmKTogIikpOworICAgICAgICAgICAgZHJhd1RleHQoY29udGV4dC5nZXQoKSwgbW9k
aWZpZWRGb250RGVzY3JpcHRvci5nZXQoKSwgcHJlZml4LmdldCgpLCBDR1BvaW50TWFrZSgyNSwg
MTkyNSAtIDUwICogaSkpOwogICAgICAgICB9Ci0KLSAgICAgICAgQ0ZSZWxlYXNlKGZlYXR1cmVz
KTsKICAgICB9IGVsc2UgewogICAgICAgICBfX2Jsb2NrIGludCBpID0gMDsKICAgICAgICAgdm9p
ZCAoXmhhbmRsZXIpKHVpbnQxNl90IHR5cGUsIENGU3RyaW5nUmVmIHR5cGVTdHJpbmcsIHVpbnQx
Nl90IHNlbGVjdG9yLCBDRlN0cmluZ1JlZiBzZWxlY3RvclN0cmluZykgPSBeKHVpbnQxNl90IHR5
cGUsIENGU3RyaW5nUmVmIHR5cGVTdHJpbmcsIHVpbnQxNl90IHNlbGVjdG9yLCBDRlN0cmluZ1Jl
ZiBzZWxlY3RvclN0cmluZykKICAgICAgICAgewotICAgICAgICAgICAgQ1RGb250RGVzY3JpcHRv
clJlZiBtb2RpZmllZEZvbnREZXNjcmlwdG9yID0gY29uc3RydWN0Rm9udFdpdGhUcnVlVHlwZUZl
YXR1cmUoZm9udERlc2NyaXB0b3IsIHR5cGUsIHNlbGVjdG9yKTsKLSAgICAgICAgICAgIENGTXV0
YWJsZVN0cmluZ1JlZiBwcmVmaXggPSBDRlN0cmluZ0NyZWF0ZU11dGFibGUoa0NGQWxsb2NhdG9y
RGVmYXVsdCwgMCk7Ci0gICAgICAgICAgICBDRlN0cmluZ0FwcGVuZChwcmVmaXgsIHR5cGVTdHJp
bmcpOwotICAgICAgICAgICAgQ0ZTdHJpbmdBcHBlbmQocHJlZml4LCBDRlNUUigiOiAiKSk7Ci0g
ICAgICAgICAgICBDRlN0cmluZ0FwcGVuZChwcmVmaXgsIHNlbGVjdG9yU3RyaW5nKTsKLSAgICAg
ICAgICAgIENGU3RyaW5nQXBwZW5kKHByZWZpeCwgQ0ZTVFIoIjogIikpOwotICAgICAgICAgICAg
d2hpbGUgKENGU3RyaW5nR2V0TGVuZ3RoKHByZWZpeCkgPCA2NSkKLSAgICAgICAgICAgICAgICBD
RlN0cmluZ0FwcGVuZChwcmVmaXgsIENGU1RSKCIgIikpOwotICAgICAgICAgICAgZHJhd1RleHQo
Y29udGV4dCwgbW9kaWZpZWRGb250RGVzY3JpcHRvciwgcHJlZml4LCBDR1BvaW50TWFrZSgyNSwg
MTk1MCAtIDQwICogaSkpOwotICAgICAgICAgICAgQ0ZSZWxlYXNlKHByZWZpeCk7Ci0gICAgICAg
ICAgICBDRlJlbGVhc2UobW9kaWZpZWRGb250RGVzY3JpcHRvcik7CisgICAgICAgICAgICBhdXRv
IG1vZGlmaWVkRm9udERlc2NyaXB0b3IgPSBjb25zdHJ1Y3RGb250V2l0aFRydWVUeXBlRmVhdHVy
ZShmb250RGVzY3JpcHRvci5nZXQoKSwgdHlwZSwgc2VsZWN0b3IpOworICAgICAgICAgICAgYXV0
byBwcmVmaXggPSBhZG9wdENGKENGU3RyaW5nQ3JlYXRlTXV0YWJsZShrQ0ZBbGxvY2F0b3JEZWZh
dWx0LCAwKSk7CisgICAgICAgICAgICBDRlN0cmluZ0FwcGVuZChwcmVmaXguZ2V0KCksIHR5cGVT
dHJpbmcpOworICAgICAgICAgICAgQ0ZTdHJpbmdBcHBlbmQocHJlZml4LmdldCgpLCBDRlNUUigi
OiAiKSk7CisgICAgICAgICAgICBDRlN0cmluZ0FwcGVuZChwcmVmaXguZ2V0KCksIHNlbGVjdG9y
U3RyaW5nKTsKKyAgICAgICAgICAgIENGU3RyaW5nQXBwZW5kKHByZWZpeC5nZXQoKSwgQ0ZTVFIo
IjogIikpOworICAgICAgICAgICAgd2hpbGUgKENGU3RyaW5nR2V0TGVuZ3RoKHByZWZpeC5nZXQo
KSkgPCA2NSkKKyAgICAgICAgICAgICAgICBDRlN0cmluZ0FwcGVuZChwcmVmaXguZ2V0KCksIENG
U1RSKCIgIikpOworICAgICAgICAgICAgZHJhd1RleHQoY29udGV4dC5nZXQoKSwgbW9kaWZpZWRG
b250RGVzY3JpcHRvci5nZXQoKSwgcHJlZml4LmdldCgpLCBDR1BvaW50TWFrZSgyNSwgMTk1MCAt
IDQwICogaSkpOwogICAgICAgICAgICAgKytpOwogICAgICAgICB9OwogICAgICAgICBoYW5kbGVy
KGtMaWdhdHVyZXNUeXBlLCBDRlNUUigia0xpZ2F0dXJlc1R5cGUiKSwga0NvbW1vbkxpZ2F0dXJl
c09uU2VsZWN0b3IsIENGU1RSKCJrQ29tbW9uTGlnYXR1cmVzT25TZWxlY3RvciIpKTsKQEAgLTIx
NCwxNSArMTg2LDEwIEBAIGludCBtYWluKGludCBhcmdjLCBjb25zdCBjaGFyICogYXJndltdKQog
ICAgICAgICBoYW5kbGVyKGtSdWJ5S2FuYVR5cGUsIENGU1RSKCJrUnVieUthbmFUeXBlIiksIGtS
dWJ5S2FuYU9uU2VsZWN0b3IsIENGU1RSKCJrUnVieUthbmFPblNlbGVjdG9yIikpOwogICAgIH0K
IAotICAgIENGUmVsZWFzZShmb250RGVzY3JpcHRvcik7Ci0gICAgQ0dJbWFnZVJlZiBpbWFnZSA9
IENHQml0bWFwQ29udGV4dENyZWF0ZUltYWdlKGNvbnRleHQpOwotICAgIENHQ29udGV4dFJlbGVh
c2UoY29udGV4dCk7Ci0gICAgQ0ZVUkxSZWYgdXJsID0gQ0ZVUkxDcmVhdGVXaXRoRmlsZVN5c3Rl
bVBhdGgoa0NGQWxsb2NhdG9yRGVmYXVsdCwgQ0ZTVFIoIi9Wb2x1bWVzL0RhdGEvaG9tZS9tbWF4
ZmllbGQvdG1wL291dHB1dC5wbmciKSwga0NGVVJMUE9TSVhQYXRoU3R5bGUsIEZBTFNFKTsKLSAg
ICBDR0ltYWdlRGVzdGluYXRpb25SZWYgaW1hZ2VEZXN0aW5hdGlvbiA9IENHSW1hZ2VEZXN0aW5h
dGlvbkNyZWF0ZVdpdGhVUkwodXJsLCBrVVRUeXBlUE5HLCAxLCBudWxscHRyKTsKLSAgICBDRlJl
bGVhc2UodXJsKTsKLSAgICBDR0ltYWdlRGVzdGluYXRpb25BZGRJbWFnZShpbWFnZURlc3RpbmF0
aW9uLCBpbWFnZSwgbnVsbHB0cik7Ci0gICAgQ0dJbWFnZVJlbGVhc2UoaW1hZ2UpOwotICAgIENH
SW1hZ2VEZXN0aW5hdGlvbkZpbmFsaXplKGltYWdlRGVzdGluYXRpb24pOwotICAgIENGUmVsZWFz
ZShpbWFnZURlc3RpbmF0aW9uKTsKKyAgICBhdXRvIGltYWdlID0gYWRvcHRDRihDR0JpdG1hcENv
bnRleHRDcmVhdGVJbWFnZShjb250ZXh0LmdldCgpKSk7CisgICAgYXV0byB1cmwgPSBhZG9wdENG
KENGVVJMQ3JlYXRlV2l0aEZpbGVTeXN0ZW1QYXRoKGtDRkFsbG9jYXRvckRlZmF1bHQsIENGU1RS
KCIvVm9sdW1lcy9EYXRhL2hvbWUvbW1heGZpZWxkL3RtcC9vdXRwdXQucG5nIiksIGtDRlVSTFBP
U0lYUGF0aFN0eWxlLCBGQUxTRSkpOworICAgIGF1dG8gaW1hZ2VEZXN0aW5hdGlvbiA9IGFkb3B0
Q0YoQ0dJbWFnZURlc3RpbmF0aW9uQ3JlYXRlV2l0aFVSTCh1cmwuZ2V0KCksIGtVVFR5cGVQTkcs
IDEsIG51bGxwdHIpKTsKKyAgICBDR0ltYWdlRGVzdGluYXRpb25BZGRJbWFnZShpbWFnZURlc3Rp
bmF0aW9uLmdldCgpLCBpbWFnZS5nZXQoKSwgbnVsbHB0cik7CisgICAgQ0dJbWFnZURlc3RpbmF0
aW9uRmluYWxpemUoaW1hZ2VEZXN0aW5hdGlvbi5nZXQoKSk7CiAgICAgcmV0dXJuIDA7CiB9CmRp
ZmYgLS1naXQgYS9Ub29scy9JbWFnZURpZmYvSW1hZ2VEaWZmLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogYi9Ub29scy9JbWFnZURpZmYvSW1hZ2VEaWZmLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKaW5kZXggOTg1NGYyMmRiYWZiNWZiMjZlNTgyZDdlNTk2NDgxM2I4OWVlZTkxZC4uYzAzYWRk
ZmQxY2RjMTk5M2M4NmJjMTM3MDUwMjdhZDMyNWVlNzBkMiAxMDA2NDQKLS0tIGEvVG9vbHMvSW1h
Z2VEaWZmL0ltYWdlRGlmZi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL0lt
YWdlRGlmZi9JbWFnZURpZmYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTc3LDYgKzE3
Nyw3IEBACiAJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKIAkJCWJhc2VDb25maWd1cmF0
aW9uUmVmZXJlbmNlID0gMzFERjQyQzYxRUJCQkJCOTAwOTZFRDQ0IC8qIEltYWdlRGlmZi54Y2Nv
bmZpZyAqLzsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJQ0xBTkdfQ1hYX0xBTkdVQUdFX1NU
QU5EQVJEID0gImMrKzE3IjsKIAkJCX07CiAJCQluYW1lID0gRGVidWc7CiAJCX07CkBAIC0xODQs
NiArMTg1LDcgQEAKIAkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwogCQkJYmFzZUNvbmZp
Z3VyYXRpb25SZWZlcmVuY2UgPSAzMURGNDJDNjFFQkJCQkI5MDA5NkVENDQgLyogSW1hZ2VEaWZm
LnhjY29uZmlnICovOwogCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlDTEFOR19DWFhfTEFOR1VB
R0VfU1RBTkRBUkQgPSAiYysrMTciOwogCQkJfTsKIAkJCW5hbWUgPSBSZWxlYXNlOwogCQl9OwpA
QCAtMTkxLDYgKzE5Myw3IEBACiAJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKIAkJCWJh
c2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gMzFERjQyQzYxRUJCQkJCOTAwOTZFRDQ0IC8qIElt
YWdlRGlmZi54Y2NvbmZpZyAqLzsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJQ0xBTkdfQ1hY
X0xBTkdVQUdFX1NUQU5EQVJEID0gImMrKzE3IjsKIAkJCX07CiAJCQluYW1lID0gUHJvZHVjdGlv
bjsKIAkJfTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0ltYWdlRGlmZi9QbGF0Zm9ybUltYWdlLmggYi9U
b29scy9JbWFnZURpZmYvUGxhdGZvcm1JbWFnZS5oCmluZGV4IGE2MzJmMzRlODQ1NTM4NWQ3Njk2
YTEzMmQ5NzJmMTQwNjk3MzBiM2IuLjVjMzhkMDdjNjk2M2M0ZWEwMzRiN2YyNDc1ZTJmMzNjZjE2
YjgzZDkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0ltYWdlRGlmZi9QbGF0Zm9ybUltYWdlLmgKKysrIGIv
VG9vbHMvSW1hZ2VEaWZmL1BsYXRmb3JtSW1hZ2UuaApAQCAtMjksNiArMjksNyBAQAogI2lmIGRl
ZmluZWQoVVNFX0NBSVJPKSAmJiBVU0VfQ0FJUk8KIHR5cGVkZWYgc3RydWN0IF9jYWlyb19zdXJm
YWNlIGNhaXJvX3N1cmZhY2VfdDsKICNlbHNlCisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgog
dHlwZWRlZiBzdHJ1Y3QgQ0dJbWFnZSAqQ0dJbWFnZVJlZjsKICNlbmRpZgogCkBAIC00Miw3ICs0
Myw3IEBAIHB1YmxpYzoKICNpZiBkZWZpbmVkKFVTRV9DQUlSTykgJiYgVVNFX0NBSVJPCiAgICAg
UGxhdGZvcm1JbWFnZShjYWlyb19zdXJmYWNlX3QqKTsKICNlbHNlCi0gICAgUGxhdGZvcm1JbWFn
ZShDR0ltYWdlUmVmKTsKKyAgICBQbGF0Zm9ybUltYWdlKFJldGFpblB0cjxDR0ltYWdlUmVmPiYm
KTsKICNlbmRpZgogICAgIH5QbGF0Zm9ybUltYWdlKCk7CiAKQEAgLTU5LDggKzYwLDggQEAgcHJp
dmF0ZToKICNpZiBkZWZpbmVkKFVTRV9DQUlSTykgJiYgVVNFX0NBSVJPCiAgICAgY2Fpcm9fc3Vy
ZmFjZV90KiBtX2ltYWdlOwogI2Vsc2UKLSAgICBDR0ltYWdlUmVmIG1faW1hZ2U7Ci0gICAgbXV0
YWJsZSB2b2lkKiBtX2J1ZmZlciB7IG51bGxwdHIgfTsKKyAgICBSZXRhaW5QdHI8Q0dJbWFnZVJl
Zj4gbV9pbWFnZTsKKyAgICBtdXRhYmxlIHN0ZDo6dW5pcXVlX3B0cjx1bnNpZ25lZCBjaGFyW10+
IG1fYnVmZmVyOwogI2VuZGlmCiB9OwogCmRpZmYgLS1naXQgYS9Ub29scy9JbWFnZURpZmYvY2cv
UGxhdGZvcm1JbWFnZUNHLmNwcCBiL1Rvb2xzL0ltYWdlRGlmZi9jZy9QbGF0Zm9ybUltYWdlQ0cu
Y3BwCmluZGV4IGYwM2MzNTc5MmFkMGQzNDQxZWZlODVhZGRkYmYwN2U3Yzc2ZjUxZGMuLmI4NTUz
NDc4ZmU4ZjQ2NjdhNjEwMzFmNGFjNzNlYjVkZDg3M2FiOWUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0lt
YWdlRGlmZi9jZy9QbGF0Zm9ybUltYWdlQ0cuY3BwCisrKyBiL1Rvb2xzL0ltYWdlRGlmZi9jZy9Q
bGF0Zm9ybUltYWdlQ0cuY3BwCkBAIC03NCw1NCArNzQsNDUgQEAgbmFtZXNwYWNlIEltYWdlRGlm
ZiB7CiBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1JbWFnZT4gUGxhdGZvcm1JbWFnZTo6Y3JlYXRl
RnJvbVN0ZGluKHNpemVfdCBpbWFnZVNpemUpCiB7CiAgICAgdW5zaWduZWQgY2hhciBidWZmZXJb
MjA0OF07Ci0gICAgQ0ZNdXRhYmxlRGF0YVJlZiBkYXRhID0gQ0ZEYXRhQ3JlYXRlTXV0YWJsZSgw
LCBpbWFnZVNpemUpOworICAgIGF1dG8gZGF0YSA9IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlTXV0YWJs
ZSgwLCBpbWFnZVNpemUpKTsKIAogICAgIHNpemVfdCBieXRlc1JlbWFpbmluZyA9IGltYWdlU2l6
ZTsKICAgICB3aGlsZSAoYnl0ZXNSZW1haW5pbmcgPiAwKSB7CiAgICAgICAgIHNpemVfdCBieXRl
c1RvUmVhZCA9IHN0ZDo6bWluPHNpemVfdD4oYnl0ZXNSZW1haW5pbmcsIDIwNDgpOwogICAgICAg
ICBzaXplX3QgYnl0ZXNSZWFkID0gZnJlYWQoYnVmZmVyLCAxLCBieXRlc1RvUmVhZCwgc3RkaW4p
OwotICAgICAgICBDRkRhdGFBcHBlbmRCeXRlcyhkYXRhLCBidWZmZXIsIHN0YXRpY19jYXN0PENG
SW5kZXg+KGJ5dGVzUmVhZCkpOworICAgICAgICBDRkRhdGFBcHBlbmRCeXRlcyhkYXRhLmdldCgp
LCBidWZmZXIsIHN0YXRpY19jYXN0PENGSW5kZXg+KGJ5dGVzUmVhZCkpOwogICAgICAgICBieXRl
c1JlbWFpbmluZyAtPSBzdGF0aWNfY2FzdDxpbnQ+KGJ5dGVzUmVhZCk7CiAgICAgfQotICAgIENH
RGF0YVByb3ZpZGVyUmVmIGRhdGFQcm92aWRlciA9IENHRGF0YVByb3ZpZGVyQ3JlYXRlV2l0aENG
RGF0YShkYXRhKTsKLSAgICBDRlJlbGVhc2UoZGF0YSk7Ci0gICAgQ0dJbWFnZVJlZiBpbWFnZSA9
IENHSW1hZ2VDcmVhdGVXaXRoUE5HRGF0YVByb3ZpZGVyKGRhdGFQcm92aWRlciwgMCwgZmFsc2Us
IGtDR1JlbmRlcmluZ0ludGVudERlZmF1bHQpOwotICAgIENGUmVsZWFzZShkYXRhUHJvdmlkZXIp
OwotCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1JbWFnZT4oaW1hZ2UpOwor
ICAgIGF1dG8gZGF0YVByb3ZpZGVyID0gYWRvcHRDRihDR0RhdGFQcm92aWRlckNyZWF0ZVdpdGhD
RkRhdGEoZGF0YS5nZXQoKSkpOworICAgIGF1dG8gaW1hZ2UgPSBhZG9wdENGKENHSW1hZ2VDcmVh
dGVXaXRoUE5HRGF0YVByb3ZpZGVyKGRhdGFQcm92aWRlci5nZXQoKSwgMCwgZmFsc2UsIGtDR1Jl
bmRlcmluZ0ludGVudERlZmF1bHQpKTsKKyAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQbGF0
Zm9ybUltYWdlPihXVEZNb3ZlKGltYWdlKSk7CiB9CiAKIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9y
bUltYWdlPiBQbGF0Zm9ybUltYWdlOjpjcmVhdGVGcm9tRGlmZkRhdGEodm9pZCogZGF0YSwgc2l6
ZV90IHdpZHRoLCBzaXplX3QgaGVpZ2h0KQogewogICAgIHN0YXRpYyBDR0NvbG9yU3BhY2VSZWYg
ZGlmZkNvbG9yc3BhY2UgPSBDR0NvbG9yU3BhY2VDcmVhdGVEZXZpY2VHcmF5KCk7Ci0gICAgQ0dE
YXRhUHJvdmlkZXJSZWYgcHJvdmlkZXIgPSBDR0RhdGFQcm92aWRlckNyZWF0ZVdpdGhEYXRhKDAs
IGRhdGEsIHdpZHRoICogaGVpZ2h0LCBbXSh2b2lkKiwgY29uc3Qgdm9pZCogZGF0YSwgc2l6ZV90
KSB7CisgICAgYXV0byBwcm92aWRlciA9IGFkb3B0Q0YoQ0dEYXRhUHJvdmlkZXJDcmVhdGVXaXRo
RGF0YSgwLCBkYXRhLCB3aWR0aCAqIGhlaWdodCwgW10odm9pZCosIGNvbnN0IHZvaWQqIGRhdGEs
IHNpemVfdCkgewogICAgICAgICBmcmVlKGNvbnN0X2Nhc3Q8dm9pZCo+KGRhdGEpKTsKLSAgICB9
KTsKLSAgICBDR0ltYWdlUmVmIGltYWdlID0gQ0dJbWFnZUNyZWF0ZSh3aWR0aCwgaGVpZ2h0LCA4
LCA4LCB3aWR0aCwgZGlmZkNvbG9yc3BhY2UsIDAsIHByb3ZpZGVyLCAwLCBmYWxzZSwga0NHUmVu
ZGVyaW5nSW50ZW50RGVmYXVsdCk7Ci0gICAgQ0ZSZWxlYXNlKHByb3ZpZGVyKTsKLQotICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtSW1hZ2U+KGltYWdlKTsKKyAgICB9KSk7Cisg
ICAgYXV0byBpbWFnZSA9IGFkb3B0Q0YoQ0dJbWFnZUNyZWF0ZSh3aWR0aCwgaGVpZ2h0LCA4LCA4
LCB3aWR0aCwgZGlmZkNvbG9yc3BhY2UsIDAsIHByb3ZpZGVyLmdldCgpLCAwLCBmYWxzZSwga0NH
UmVuZGVyaW5nSW50ZW50RGVmYXVsdCkpOworICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBs
YXRmb3JtSW1hZ2U+KFdURk1vdmUoaW1hZ2UpKTsKIH0KIAotUGxhdGZvcm1JbWFnZTo6UGxhdGZv
cm1JbWFnZShDR0ltYWdlUmVmIGltYWdlKQotICAgIDogbV9pbWFnZShpbWFnZSkKK1BsYXRmb3Jt
SW1hZ2U6OlBsYXRmb3JtSW1hZ2UoUmV0YWluUHRyPENHSW1hZ2VSZWY+JiYgaW1hZ2UpCisgICAg
OiBtX2ltYWdlKFdURk1vdmUoaW1hZ2UpKQogewogfQogCi1QbGF0Zm9ybUltYWdlOjp+UGxhdGZv
cm1JbWFnZSgpCi17Ci0gICAgQ0ZSZWxlYXNlKG1faW1hZ2UpOwotICAgIGZyZWUobV9idWZmZXIp
OwotfQorUGxhdGZvcm1JbWFnZTo6flBsYXRmb3JtSW1hZ2UoKSA9IGRlZmF1bHQ7CiAKIHNpemVf
dCBQbGF0Zm9ybUltYWdlOjp3aWR0aCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIENHSW1hZ2VHZXRX
aWR0aChtX2ltYWdlKTsKKyAgICByZXR1cm4gQ0dJbWFnZUdldFdpZHRoKG1faW1hZ2UuZ2V0KCkp
OwogfQogCiBzaXplX3QgUGxhdGZvcm1JbWFnZTo6aGVpZ2h0KCkgY29uc3QKIHsKLSAgICByZXR1
cm4gQ0dJbWFnZUdldEhlaWdodChtX2ltYWdlKTsKKyAgICByZXR1cm4gQ0dJbWFnZUdldEhlaWdo
dChtX2ltYWdlLmdldCgpKTsKIH0KIAogc2l6ZV90IFBsYXRmb3JtSW1hZ2U6OnJvd0J5dGVzKCkg
Y29uc3QKQEAgLTEzMSw3ICsxMjIsNyBAQCBzaXplX3QgUGxhdGZvcm1JbWFnZTo6cm93Qnl0ZXMo
KSBjb25zdAogCiBib29sIFBsYXRmb3JtSW1hZ2U6Omhhc0FscGhhKCkgY29uc3QKIHsKLSAgICBD
R0ltYWdlQWxwaGFJbmZvIGluZm8gPSBDR0ltYWdlR2V0QWxwaGFJbmZvKG1faW1hZ2UpOworICAg
IENHSW1hZ2VBbHBoYUluZm8gaW5mbyA9IENHSW1hZ2VHZXRBbHBoYUluZm8obV9pbWFnZS5nZXQo
KSk7CiAgICAgcmV0dXJuIChpbmZvID49IGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkTGFzdCkg
JiYgKGluZm8gPD0ga0NHSW1hZ2VBbHBoYUZpcnN0KTsKIH0KIApAQCAtMTQxLDIzICsxMzIsMjAg
QEAgdW5zaWduZWQgY2hhciogUGxhdGZvcm1JbWFnZTo6cGl4ZWxzKCkgY29uc3QKICAgICBzaXpl
X3QgaGVpZ2h0ID0gdGhpcy0+aGVpZ2h0KCk7CiAgICAgc2l6ZV90IHJvd0J5dGVzID0gd2lkdGgg
KiA0OwogCi0gICAgbV9idWZmZXIgPSBjYWxsb2MoaGVpZ2h0LCByb3dCeXRlcyk7Ci0gICAgQ0dD
b250ZXh0UmVmIGNvbnRleHQgPSBDR0JpdG1hcENvbnRleHRDcmVhdGUobV9idWZmZXIsIHdpZHRo
LCBoZWlnaHQsIDgsIHJvd0J5dGVzLCBDR0ltYWdlR2V0Q29sb3JTcGFjZShtX2ltYWdlKSwga0NH
SW1hZ2VBbHBoYVByZW11bHRpcGxpZWRGaXJzdCB8IGtDR0JpdG1hcEJ5dGVPcmRlcjMySG9zdCk7
Ci0gICAgQ0dDb250ZXh0RHJhd0ltYWdlKGNvbnRleHQsIENHUmVjdE1ha2UoMCwgMCwgd2lkdGgs
IGhlaWdodCksIG1faW1hZ2UpOwotICAgIENGUmVsZWFzZShjb250ZXh0KTsKLSAgICByZXR1cm4g
cmVpbnRlcnByZXRfY2FzdDx1bnNpZ25lZCBjaGFyKj4obV9idWZmZXIpOworICAgIG1fYnVmZmVy
ID0gc3RkOjp1bmlxdWVfcHRyPHVuc2lnbmVkIGNoYXJbXT4ocmVpbnRlcnByZXRfY2FzdDx1bnNp
Z25lZCBjaGFyKj4oY2FsbG9jKGhlaWdodCwgcm93Qnl0ZXMpKSk7CisgICAgYXV0byBjb250ZXh0
ID0gYWRvcHRDRihDR0JpdG1hcENvbnRleHRDcmVhdGUobV9idWZmZXIuZ2V0KCksIHdpZHRoLCBo
ZWlnaHQsIDgsIHJvd0J5dGVzLCBDR0ltYWdlR2V0Q29sb3JTcGFjZShtX2ltYWdlLmdldCgpKSwg
a0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRGaXJzdCB8IGtDR0JpdG1hcEJ5dGVPcmRlcjMySG9z
dCkpOworICAgIENHQ29udGV4dERyYXdJbWFnZShjb250ZXh0LmdldCgpLCBDR1JlY3RNYWtlKDAs
IDAsIHdpZHRoLCBoZWlnaHQpLCBtX2ltYWdlLmdldCgpKTsKKyAgICByZXR1cm4gbV9idWZmZXIu
Z2V0KCk7CiB9CiAKIHZvaWQgUGxhdGZvcm1JbWFnZTo6d3JpdGVBc1BOR1RvU3Rkb3V0KCkKIHsK
LSAgICBDRk11dGFibGVEYXRhUmVmIGltYWdlRGF0YSA9IENGRGF0YUNyZWF0ZU11dGFibGUoMCwg
MCk7Ci0gICAgQ0dJbWFnZURlc3RpbmF0aW9uUmVmIGltYWdlRGVzdCA9IENHSW1hZ2VEZXN0aW5h
dGlvbkNyZWF0ZVdpdGhEYXRhKGltYWdlRGF0YSwga1VUVHlwZVBORywgMSwgMCk7Ci0gICAgQ0dJ
bWFnZURlc3RpbmF0aW9uQWRkSW1hZ2UoaW1hZ2VEZXN0LCBtX2ltYWdlLCAwKTsKLSAgICBDR0lt
YWdlRGVzdGluYXRpb25GaW5hbGl6ZShpbWFnZURlc3QpOwotICAgIHByaW50ZigiQ29udGVudC1M
ZW5ndGg6ICUiIEZPUk1BVF9TSVpFX1QgIlxuIiwgc3RhdGljX2Nhc3Q8c2l6ZV90PihDRkRhdGFH
ZXRMZW5ndGgoaW1hZ2VEYXRhKSkpOwotICAgIGZ3cml0ZShDRkRhdGFHZXRCeXRlUHRyKGltYWdl
RGF0YSksIDEsIENGRGF0YUdldExlbmd0aChpbWFnZURhdGEpLCBzdGRvdXQpOwotICAgIENGUmVs
ZWFzZShpbWFnZURhdGEpOwotICAgIENGUmVsZWFzZShpbWFnZURlc3QpOworICAgIGF1dG8gaW1h
Z2VEYXRhID0gYWRvcHRDRihDRkRhdGFDcmVhdGVNdXRhYmxlKDAsIDApKTsKKyAgICBhdXRvIGlt
YWdlRGVzdCA9IGFkb3B0Q0YoQ0dJbWFnZURlc3RpbmF0aW9uQ3JlYXRlV2l0aERhdGEoaW1hZ2VE
YXRhLmdldCgpLCBrVVRUeXBlUE5HLCAxLCAwKSk7CisgICAgQ0dJbWFnZURlc3RpbmF0aW9uQWRk
SW1hZ2UoaW1hZ2VEZXN0LmdldCgpLCBtX2ltYWdlLmdldCgpLCAwKTsKKyAgICBDR0ltYWdlRGVz
dGluYXRpb25GaW5hbGl6ZShpbWFnZURlc3QuZ2V0KCkpOworICAgIHByaW50ZigiQ29udGVudC1M
ZW5ndGg6ICUiIEZPUk1BVF9TSVpFX1QgIlxuIiwgc3RhdGljX2Nhc3Q8c2l6ZV90PihDRkRhdGFH
ZXRMZW5ndGgoaW1hZ2VEYXRhLmdldCgpKSkpOworICAgIGZ3cml0ZShDRkRhdGFHZXRCeXRlUHRy
KGltYWdlRGF0YS5nZXQoKSksIDEsIENGRGF0YUdldExlbmd0aChpbWFnZURhdGEuZ2V0KCkpLCBz
dGRvdXQpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBJbWFnZURpZmYKZGlmZiAtLWdpdCBhL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcCBi
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdl
LmNwcAppbmRleCAzZGIwMjM0OTM0MTUzOWVkNDM4NzBlNjQ1MDZkOTMzMDc1NDJjMjg5Li43NDVj
NGNlODM1ZWRjYzFiMzIwZTkwM2QzNjdmNzc2YTc1ZTQ1NzM4IDEwMDY0NAotLS0gYS9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHAKKysr
IGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBh
Z2UuY3BwCkBAIC03OTYsNyArNzk2LDcgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2U6OmR1bXBE
T01Bc1dlYkFyY2hpdmUoV0tCdW5kbGVGcmFtZVJlZiBmcmFtZSwgU3RyaW5nQnVpbGQKICNpZiBV
U0UoQ0YpICYmICFQTEFURk9STShXSU5fQ0FJUk8pICYmICFVU0UoRElSRUNUMkQpCiAgICAgYXV0
byB3a0RhdGEgPSBhZG9wdFdLKFdLQnVuZGxlRnJhbWVDb3B5V2ViQXJjaGl2ZShmcmFtZSkpOwog
ICAgIGF1dG8gY2ZEYXRhID0gYWRvcHRDRihDRkRhdGFDcmVhdGUoMCwgV0tEYXRhR2V0Qnl0ZXMo
d2tEYXRhLmdldCgpKSwgV0tEYXRhR2V0U2l6ZSh3a0RhdGEuZ2V0KCkpKSk7Ci0gICAgYXV0byBj
ZlN0cmluZyA9IGFkb3B0Q0YoV2ViQ29yZVRlc3RTdXBwb3J0OjpjcmVhdGVYTUxTdHJpbmdGcm9t
V2ViQXJjaGl2ZURhdGEoY2ZEYXRhLmdldCgpKSk7CisgICAgYXV0byBjZlN0cmluZyA9IFdlYkNv
cmVUZXN0U3VwcG9ydDo6Y3JlYXRlWE1MU3RyaW5nRnJvbVdlYkFyY2hpdmVEYXRhKGNmRGF0YS5n
ZXQoKSk7CiAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoY2ZTdHJpbmcuZ2V0KCkpOwogI2VuZGlm
CiB9CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2lv
cy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50SU9TLm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9pb3MvQWNjZXNzaWJpbGl0eVVJRWxlbWVudElPUy5tbQppbmRleCA0NmEx
NTc4MGRjNThkMzdmOWFkYWJlNzAwOTAxZDkxMGRlOTdkMWY0Li5mMGY5YjM4N2QwNmM0MzA4YWUx
MzYxZjExZGM5MDdkNDhiZGY3MjUzIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL2lvcy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50SU9TLm1tCisrKyBiL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvaW9zL0FjY2Vzc2liaWxpdHlVSUVs
ZW1lbnRJT1MubW0KQEAgLTEzMCw3ICsxMzAsNyBAQCArIChOU1N0cmluZyAqKXN0cmluZ1dpdGhK
U1N0cmluZ1JlZjooSlNTdHJpbmdSZWYpanNTdHJpbmdSZWYKICAgICBpZiAoIWpzU3RyaW5nUmVm
KQogICAgICAgICByZXR1cm4gbmlsOwogICAgIAotICAgIHJldHVybiBDRkJyaWRnaW5nUmVsZWFz
ZShKU1N0cmluZ0NvcHlDRlN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBqc1N0cmluZ1JlZikp
OworICAgIHJldHVybiBhZG9wdENGKEpTU3RyaW5nQ29weUNGU3RyaW5nKGtDRkFsbG9jYXRvckRl
ZmF1bHQsIGpzU3RyaW5nUmVmKSkuYnJpZGdpbmdBdXRvcmVsZWFzZSgpOwogfQogCiAtIChKU1Jl
dGFpblB0cjxKU1N0cmluZ1JlZj4pY3JlYXRlSlNTdHJpbmdSZWYKZGlmZiAtLWdpdCBhL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0FjY2Vzc2liaWxpdHlDb21tb25N
YWMubW0gYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9BY2Nlc3Np
YmlsaXR5Q29tbW9uTWFjLm1tCmluZGV4IDM1NGE4ZjY1NTVjNmMwMDI2NWY1NjgxYTZiMzcxNTJh
ODRhNTYyYzAuLmY4ZTJkY2UyMjEwMjcyYWY2NmRlOGMyNzFmZjQ1ZDNiN2I1N2M2MGYgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0FjY2Vzc2li
aWxpdHlDb21tb25NYWMubW0KKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9tYWMvQWNjZXNzaWJpbGl0eUNvbW1vbk1hYy5tbQpAQCAtNDMsNyArNDMsNyBAQCArIChO
U1N0cmluZyAqKXN0cmluZ1dpdGhKU1N0cmluZ1JlZjooSlNTdHJpbmdSZWYpanNTdHJpbmdSZWYK
ICAgICBpZiAoIWpzU3RyaW5nUmVmKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgcmV0dXJu
IENGQnJpZGdpbmdSZWxlYXNlKEpTU3RyaW5nQ29weUNGU3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1
bHQsIGpzU3RyaW5nUmVmKSk7CisgICAgcmV0dXJuIGFkb3B0Q0YoSlNTdHJpbmdDb3B5Q0ZTdHJp
bmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwganNTdHJpbmdSZWYpKS5icmlkZ2luZ0F1dG9yZWxlYXNl
KCk7CiB9CiAKIC0gKEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiljcmVhdGVKU1N0cmluZ1JlZgpk
aWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvSElERXZlbnRHZW5lcmF0b3Iu
bW0gYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9ISURFdmVudEdlbmVyYXRvci5tbQppbmRl
eCAzMWI0NjUwZTM1NjExOWMwMjQwMTY2NGNlMDI3Njk0OGRhMDM1ZWQ4Li5mNjgyY2EyOTg3NWIz
NjZlYjE2YjVlNzlmMDZkZDBlMGE1MWZiZDA3IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL2lvcy9ISURFdmVudEdlbmVyYXRvci5tbQorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL2lvcy9ISURFdmVudEdlbmVyYXRvci5tbQpAQCAtMzE5LDcgKzMxOSw3IEBAIC0gKElPSElE
RXZlbnRSZWYpX2NyZWF0ZUlPSElERXZlbnRXaXRoSW5mbzooTlNEaWN0aW9uYXJ5ICopaW5mbwog
ICAgICAgICBpZiAoW3RvdWNoSW5mb1tISURFdmVudFByZXNzdXJlS2V5XSBmbG9hdFZhbHVlXSkK
ICAgICAgICAgICAgIGNoaWxkRXZlbnRNYXNrIHw9IGtJT0hJRERpZ2l0aXplckV2ZW50QXR0cmli
dXRlOwogCi0gICAgICAgIElPSElERXZlbnRSZWYgc3ViRXZlbnQgPSBJT0hJREV2ZW50Q3JlYXRl
RGlnaXRpemVyRmluZ2VyRXZlbnQoa0NGQWxsb2NhdG9yRGVmYXVsdCwgbWFjaFRpbWUsCisgICAg
ICAgIGF1dG8gc3ViRXZlbnQgPSBhZG9wdENGKElPSElERXZlbnRDcmVhdGVEaWdpdGl6ZXJGaW5n
ZXJFdmVudChrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBtYWNoVGltZSwKICAgICAgICAgICAgIFt0b3Vj
aEluZm9bSElERXZlbnRUb3VjaElES2V5XSBpbnRWYWx1ZV0sICAgICAgICAgICAgICAgLy8gaW5k
ZXgKICAgICAgICAgICAgIDIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gaWRlbnRpZmllciAod2hpY2ggZmluZ2VyIHdlIHRoaW5rIGl0IGlz
KS4gRklYTUU6IHRoaXMgc2hvdWxkIGNvbWUgZnJvbSB0aGUgZGF0YS4KICAgICAgICAgICAgIGNo
aWxkRXZlbnRNYXNrLApAQCAtMzMwLDEzICszMzAsMTIgQEAgLSAoSU9ISURFdmVudFJlZilfY3Jl
YXRlSU9ISURFdmVudFdpdGhJbmZvOihOU0RpY3Rpb25hcnkgKilpbmZvCiAgICAgICAgICAgICBb
dG91Y2hJbmZvW0hJREV2ZW50VHdpc3RLZXldIGZsb2F0VmFsdWVdLAogICAgICAgICAgICAgdG91
Y2gsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBy
YW5nZQogICAgICAgICAgICAgdG91Y2gsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvLyB0b3VjaAotICAgICAgICAgICAga0lPSElERXZlbnRPcHRpb25O
b25lKTsKKyAgICAgICAgICAgIGtJT0hJREV2ZW50T3B0aW9uTm9uZSkpOwogCi0gICAgICAgIElP
SElERXZlbnRTZXRGbG9hdFZhbHVlKHN1YkV2ZW50LCBrSU9ISURFdmVudEZpZWxkRGlnaXRpemVy
TWFqb3JSYWRpdXMsIFt0b3VjaEluZm9bSElERXZlbnRNYWpvclJhZGl1c0tleV0gZmxvYXRWYWx1
ZV0pOwotICAgICAgICBJT0hJREV2ZW50U2V0RmxvYXRWYWx1ZShzdWJFdmVudCwga0lPSElERXZl
bnRGaWVsZERpZ2l0aXplck1pbm9yUmFkaXVzLCBbdG91Y2hJbmZvW0hJREV2ZW50TWlub3JSYWRp
dXNLZXldIGZsb2F0VmFsdWVdKTsKKyAgICAgICAgSU9ISURFdmVudFNldEZsb2F0VmFsdWUoc3Vi
RXZlbnQuZ2V0KCksIGtJT0hJREV2ZW50RmllbGREaWdpdGl6ZXJNYWpvclJhZGl1cywgW3RvdWNo
SW5mb1tISURFdmVudE1ham9yUmFkaXVzS2V5XSBmbG9hdFZhbHVlXSk7CisgICAgICAgIElPSElE
RXZlbnRTZXRGbG9hdFZhbHVlKHN1YkV2ZW50LmdldCgpLCBrSU9ISURFdmVudEZpZWxkRGlnaXRp
emVyTWlub3JSYWRpdXMsIFt0b3VjaEluZm9bSElERXZlbnRNaW5vclJhZGl1c0tleV0gZmxvYXRW
YWx1ZV0pOwogCi0gICAgICAgIElPSElERXZlbnRBcHBlbmRFdmVudChldmVudFJlZiwgc3ViRXZl
bnQsIDApOwotICAgICAgICBDRlJlbGVhc2Uoc3ViRXZlbnQpOworICAgICAgICBJT0hJREV2ZW50
QXBwZW5kRXZlbnQoZXZlbnRSZWYsIHN1YkV2ZW50LmdldCgpLCAwKTsKICAgICB9CiAKICAgICBy
ZXR1cm4gZXZlbnRSZWY7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9F
dmVudFNlbmRlclByb3h5Lm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvRXZlbnRTZW5k
ZXJQcm94eS5tbQppbmRleCBiYWNjMTQxMTU0MzMxYjc5ZDFhM2NlZDY4MWM3Zjk0ODk4OGI5MDY2
Li44ZTk5NDdiMGIzMjQwZjNmYzA5YjNjNmFkYjY1ZThmMmUwMmNmZWQ0IDEwMDY0NAotLS0gYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9FdmVudFNlbmRlclByb3h5Lm1tCisrKyBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvbWFjL0V2ZW50U2VuZGVyUHJveHkubW0KQEAgLTk1LDE3ICs5NSwx
NiBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdFByZXNzdXJlRXZlbnRBdExvY2F0aW9uOihOU1BvaW50
KWxvY2F0aW9uIGdsb2JhbExvY2F0aW9uOihOUwogICAgICAgICBicmVhazsKICAgICB9CiAKLSAg
ICBDR0V2ZW50UmVmIGNnRXZlbnQgPSBDR0V2ZW50Q3JlYXRlKG51bGxwdHIpOwotICAgIENHRXZl
bnRTZXRUeXBlKGNnRXZlbnQsIChDR0V2ZW50VHlwZSlrQ0dTRXZlbnRHZXN0dXJlKTsKLSAgICBD
R0V2ZW50U2V0SW50ZWdlclZhbHVlRmllbGQoY2dFdmVudCwga0NHRXZlbnRHZXN0dXJlSElEVHlw
ZSwgMzIpOwotICAgIENHRXZlbnRTZXRJbnRlZ2VyVmFsdWVGaWVsZChjZ0V2ZW50LCBrQ0dFdmVu
dEdlc3R1cmVQaGFzZSwgZ2VzdHVyZVBoYXNlKTsKLSAgICBDR0V2ZW50U2V0RG91YmxlVmFsdWVG
aWVsZChjZ0V2ZW50LCBrQ0dFdmVudFN0YWdlUHJlc3N1cmUsIHByZXNzdXJlKTsKLSAgICBDR0V2
ZW50U2V0RG91YmxlVmFsdWVGaWVsZChjZ0V2ZW50LCBrQ0dFdmVudFRyYW5zaXRpb25Qcm9ncmVz
cywgcHJlc3N1cmUpOwotICAgIENHRXZlbnRTZXRJbnRlZ2VyVmFsdWVGaWVsZChjZ0V2ZW50LCBr
Q0dFdmVudEdlc3R1cmVTdGFnZSwgc3RhZ2VUcmFuc2l0aW9uKTsKLSAgICBDR0V2ZW50U2V0SW50
ZWdlclZhbHVlRmllbGQoY2dFdmVudCwga0NHRXZlbnRHZXN0dXJlQmVoYXZpb3IsIGtDR1NHZXN0
dXJlQmVoYXZpb3JEZWVwUHJlc3MpOwotCi0gICAgc2VsZiA9IFtzdXBlciBfaW5pdFdpdGhDR0V2
ZW50OmNnRXZlbnQgZXZlbnRSZWY6bnVsbHB0cl07Ci0gICAgQ0ZSZWxlYXNlKGNnRXZlbnQpOwor
ICAgIGF1dG8gY2dFdmVudCA9IGFkb3B0Q0YoQ0dFdmVudENyZWF0ZShudWxscHRyKSk7CisgICAg
Q0dFdmVudFNldFR5cGUoY2dFdmVudC5nZXQoKSwgKENHRXZlbnRUeXBlKWtDR1NFdmVudEdlc3R1
cmUpOworICAgIENHRXZlbnRTZXRJbnRlZ2VyVmFsdWVGaWVsZChjZ0V2ZW50LmdldCgpLCBrQ0dF
dmVudEdlc3R1cmVISURUeXBlLCAzMik7CisgICAgQ0dFdmVudFNldEludGVnZXJWYWx1ZUZpZWxk
KGNnRXZlbnQuZ2V0KCksIGtDR0V2ZW50R2VzdHVyZVBoYXNlLCBnZXN0dXJlUGhhc2UpOworICAg
IENHRXZlbnRTZXREb3VibGVWYWx1ZUZpZWxkKGNnRXZlbnQuZ2V0KCksIGtDR0V2ZW50U3RhZ2VQ
cmVzc3VyZSwgcHJlc3N1cmUpOworICAgIENHRXZlbnRTZXREb3VibGVWYWx1ZUZpZWxkKGNnRXZl
bnQuZ2V0KCksIGtDR0V2ZW50VHJhbnNpdGlvblByb2dyZXNzLCBwcmVzc3VyZSk7CisgICAgQ0dF
dmVudFNldEludGVnZXJWYWx1ZUZpZWxkKGNnRXZlbnQuZ2V0KCksIGtDR0V2ZW50R2VzdHVyZVN0
YWdlLCBzdGFnZVRyYW5zaXRpb24pOworICAgIENHRXZlbnRTZXRJbnRlZ2VyVmFsdWVGaWVsZChj
Z0V2ZW50LmdldCgpLCBrQ0dFdmVudEdlc3R1cmVCZWhhdmlvciwga0NHU0dlc3R1cmVCZWhhdmlv
ckRlZXBQcmVzcyk7CisKKyAgICBzZWxmID0gW3N1cGVyIF9pbml0V2l0aENHRXZlbnQ6Y2dFdmVu
dC5nZXQoKSBldmVudFJlZjpudWxscHRyXTsKIAogICAgIGlmICghc2VsZikKICAgICAgICAgcmV0
dXJuIG5pbDsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL1VJU2NyaXB0
Q29udHJvbGxlck1hYy5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL1VJU2NyaXB0Q29u
dHJvbGxlck1hYy5tbQppbmRleCA2MGJlOTU3ZTA1N2UyNGJlMGZiYWZmYWYyYzM4MjE1NzRhNzY0
MTUzLi5iYWJlOTU3ZDExYjIwNDZkNWYzNmVkNGRkYzcxYmJkN2Q2ZTYwNjFiIDEwMDY0NAotLS0g
YS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9VSVNjcmlwdENvbnRyb2xsZXJNYWMubW0KKysr
IGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvVUlTY3JpcHRDb250cm9sbGVyTWFjLm1tCkBA
IC01MywxNCArNTMsMTQgQEAgUmVmPFVJU2NyaXB0Q29udHJvbGxlcj4gVUlTY3JpcHRDb250cm9s
bGVyOjpjcmVhdGUoVUlTY3JpcHRDb250ZXh0JiBjb250ZXh0KQogICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFVJU2NyaXB0Q29udHJvbGxlck1hYyhjb250ZXh0KSk7CiB9CiAKLXN0YXRpYyBOU1N0
cmluZyAqbnNTdHJpbmcoSlNTdHJpbmdSZWYgc3RyaW5nKQorc3RhdGljIFJldGFpblB0cjxDRlN0
cmluZ1JlZj4gY2ZTdHJpbmcoSlNTdHJpbmdSZWYgc3RyaW5nKQogewotICAgIHJldHVybiBDRkJy
aWRnaW5nUmVsZWFzZShKU1N0cmluZ0NvcHlDRlN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBz
dHJpbmcpKTsKKyAgICByZXR1cm4gYWRvcHRDRihKU1N0cmluZ0NvcHlDRlN0cmluZyhrQ0ZBbGxv
Y2F0b3JEZWZhdWx0LCBzdHJpbmcpKTsKIH0KIAogdm9pZCBVSVNjcmlwdENvbnRyb2xsZXJNYWM6
OnJlcGxhY2VUZXh0QXRSYW5nZShKU1N0cmluZ1JlZiB0ZXh0LCBpbnQgbG9jYXRpb24sIGludCBs
ZW5ndGgpCiB7Ci0gICAgW3dlYlZpZXcoKSBfaW5zZXJ0VGV4dDpuc1N0cmluZyh0ZXh0KSByZXBs
YWNlbWVudFJhbmdlOk5TTWFrZVJhbmdlKGxvY2F0aW9uID09IC0xID8gTlNOb3RGb3VuZCA6IGxv
Y2F0aW9uLCBsZW5ndGgpXTsKKyAgICBbd2ViVmlldygpIF9pbnNlcnRUZXh0OihfX2JyaWRnZSBO
U1N0cmluZyAqKWNmU3RyaW5nKHRleHQpLmdldCgpIHJlcGxhY2VtZW50UmFuZ2U6TlNNYWtlUmFu
Z2UobG9jYXRpb24gPT0gLTEgPyBOU05vdEZvdW5kIDogbG9jYXRpb24sIGxlbmd0aCldOwogfQog
CiB2b2lkIFVJU2NyaXB0Q29udHJvbGxlck1hYzo6em9vbVRvU2NhbGUoZG91YmxlIHNjYWxlLCBK
U1ZhbHVlUmVmIGNhbGxiYWNrKQo=
</data>
<flag name="commit-queue"
          id="441339"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>422287</attachid>
            <date>2021-03-04 14:28:50 -0800</date>
            <delta_ts>2021-03-04 14:57:53 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222760-20210304142850.patch</filename>
            <type>text/plain</type>
            <size>195187</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjczOTA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
MGY4NmUyMTAwZjMxZDk3OTkxNTZhZjkxZGU2MjMzMWIyOWYwN2ViLi44NTViOGIxYjM5ODYxYjhk
NDMzZjg4ZTBmMmU3N2Y0OTcwYzdjYjdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMCBAQAorMjAyMS0wMy0wNCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIFJlZHVjZSB1c2Ugb2YgQ0ZSZXRhaW4oKSAvIENGUmVsZWFzZSgpIC8gQ0ZBdXRv
UmVsZWFzZSgpIGluIFdlYktpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjIyNzYwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgUmVkdWNlIHVzZSBvZiBDRlJldGFpbigpIC8gQ0ZSZWxlYXNlKCkgLyBDRkF1
dG9SZWxlYXNlKCkgaW4gV2ViS2l0IGJ5IHVzaW5nIFJldGFpblB0cjw+LgorCisgICAgICAgICog
QVBJL0pTQ29udGV4dC5tbToKKyAgICAgICAgKC1bSlNDb250ZXh0IG5hbWVdKToKKyAgICAgICAg
KiBBUEkvSlNWYWx1ZS5tbToKKyAgICAgICAgKHZhbHVlVG9PYmplY3RXaXRob3V0Q29weSk6Cisg
ICAgICAgICh2YWx1ZVRvU3RyaW5nKToKKyAgICAgICAgKiBpbnNwZWN0b3IvcmVtb3RlL2NvY29h
L1JlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24ubW06CisgICAgICAgIChJbnNwZWN0b3I6OlJl
bW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb246OmRlc2VyaWFsaXplTWVzc2FnZSk6CisKIDIwMjEt
MDMtMDQgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAg
ICAgICBbQ29jb2FdIFJFR1JFU1NJT04ocjI3Mjc1Mik6IGZpeCBzb21lIGludGVybmFsIGJ1aWxk
cyB0aGF0IHVzZSBXVEZTdHJpbmc6OldURlN0cmluZyhOU1N0cmluZyAqKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCBjN2M5MjQw
MGJmMTVjZTk0YjA4NzBjNzIzYWQ3Y2U3YzYyNmM4NWI4Li5mOTk0ZmVhNTg3MWU1OWI2MTg4M2Iy
Y2U2YjI0OTQ3N2ZjMWE0OWM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDIxLTAzLTA0ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgUmVkdWNlIHVzZSBvZiBDRlJl
dGFpbigpIC8gQ0ZSZWxlYXNlKCkgLyBDRkF1dG9SZWxlYXNlKCkgaW4gV2ViS2l0CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjI3NjAKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWR1Y2UgdXNlIG9mIENG
UmV0YWluKCkgLyBDRlJlbGVhc2UoKSAvIENGQXV0b1JlbGVhc2UoKSBpbiBXZWJLaXQgYnkgdXNp
bmcgUmV0YWluUHRyPD4uCisKKyAgICAgICAgKiB3dGYvY29jb2EvTlNVUkxFeHRyYXMubW06Cisg
ICAgICAgIChXVEY6OmRlY29kZVBlcmNlbnRFc2NhcGVzKToKKyAgICAgICAgKFdURjo6VVJMQnlU
cnVuY2F0aW5nT25lQ2hhcmFjdGVyQmVmb3JlQ29tcG9uZW50KToKKyAgICAgICAgKFdURjo6VVJM
V2l0aERhdGEpOgorICAgICAgICAoV1RGOjpVUkxCeVJlbW92aW5nQ29tcG9uZW50QW5kU3Vic2Vx
dWVudENoYXJhY3Rlcik6CisKIDIwMjEtMDMtMDQgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxl
LmNvbT4KIAogICAgICAgICBbbWFjT1NdW1dLMl0gQ2hhbmdpbmcgdGhlIHN5c3RlbSBsYW5ndWFn
ZSBkb2VzIG5vdCB1cGRhdGUgbmF2aWdhdG9yLmxhbmd1YWdlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDFmOTFj
ZjdlMGE2OGMwMDE1ZDE5ODlkODc5MzBiMGYyZGMyNjNiZC4uNWE0M2Q2NWNkZTkxODNiMDJjMTFl
MTQ2ZDY3YzhhNGFiMTJiYTAzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExMiBAQAorMjAyMS0w
My0wNCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFJlZHVjZSB1
c2Ugb2YgQ0ZSZXRhaW4oKSAvIENGUmVsZWFzZSgpIC8gQ0ZBdXRvUmVsZWFzZSgpIGluIFdlYktp
dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIyNzYw
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVkdWNl
IHVzZSBvZiBDRlJldGFpbigpIC8gQ0ZSZWxlYXNlKCkgLyBDRkF1dG9SZWxlYXNlKCkgaW4gV2Vi
S2l0IGJ5IHVzaW5nIFJldGFpblB0cjw+LgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9tYWMv
QVhPYmplY3RDYWNoZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkFYVGV4dE1hcmtlclJhbmdl
KToKKyAgICAgICAgKFdlYkNvcmU6OkFYVGV4dE1hcmtlclJhbmdlU3RhcnQpOgorICAgICAgICAo
V2ViQ29yZTo6QVhUZXh0TWFya2VyUmFuZ2VFbmQpOgorICAgICAgICAoV2ViQ29yZTo6dGV4dE1h
cmtlckZvclZpc2libGVQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjp0ZXh0TWFya2VyRm9y
Q2hhcmFjdGVyT2Zmc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OnN0YXJ0T3JFbmRUZXh0TWFya2Vy
Rm9yUmFuZ2UpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlP
YmplY3RXcmFwcGVyQmFzZS5tbToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdy
YXBwZXJCYXNlIHVwZGF0ZU9iamVjdEJhY2tpbmdTdG9yZV0pOgorICAgICAgICAoLVtXZWJBY2Nl
c3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UgY29udmVydFBhdGhUb1NjcmVlblNwYWNlOl0pOgor
ICAgICAgICAqIGFjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
TWFjLm1tOgorICAgICAgICAobmV4dFRleHRNYXJrZXJGb3JDaGFyYWN0ZXJPZmZzZXQpOgorICAg
ICAgICAocHJldmlvdXNUZXh0TWFya2VyRm9yQ2hhcmFjdGVyT2Zmc2V0KToKKyAgICAgICAgKC1b
V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgdGV4dE1hcmtlckZvckZpcnN0UG9zaXRpb25J
blRleHRDb250cm9sOl0pOgorICAgICAgICAoQVhBdHRyaWJ1dGVTdHJpbmdTZXRFbGVtZW50KToK
KyAgICAgICAgKiBlZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW06CisgICAgICAgIChIVE1M
Q29udmVydGVyOjpfcHJvY2Vzc1RleHQpOgorICAgICAgICAqIGxvYWRlci9jb2NvYS9EaXNrQ2Fj
aGVNb25pdG9yQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpEaXNrQ2FjaGVNb25pdG9yOjpE
aXNrQ2FjaGVNb25pdG9yKToKKyAgICAgICAgKiBwYWdlL21hYy9FdmVudEhhbmRsZXJNYWMubW06
CisgICAgICAgIChXZWJDb3JlOjpzZWxmUmV0YWluaW5nTlNTY3JvbGxWaWV3U2Nyb2xsV2hlZWwp
OgorICAgICAgICAqIHBhZ2Uvd2luL0ZyYW1lQ0dXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
aW1hZ2VGcm9tUmVjdCk6CisgICAgICAgICogcGxhdGZvcm0vY2YvTWFpblRocmVhZFNoYXJlZFRp
bWVyQ0YuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2hhcmVkVGltZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6TWFpblRocmVhZFNoYXJlZFRpbWVyOjpyZXN0YXJ0U2hhcmVkVGltZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6TWFpblRocmVhZFNoYXJlZFRpbWVyOjppbnZhbGlkYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6Ok1haW5UaHJlYWRTaGFyZWRUaW1lcjo6c2V0RmlyZUludGVydmFsKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1haW5UaHJlYWRTaGFyZWRUaW1lcjo6c3RvcCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZXJuYWxEZXZpY2VEaXNwbGF5TmFt
ZUZvclBsYXllcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL0NBQ0ZMYXll
clRyZWVIb3N0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNBQ0ZMYXllclRyZWVIb3N0Ojppbml0
aWFsaXplKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRD
Ry5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYXR0ZXJuUmVsZWFzZUNhbGxiYWNrKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZmlsbFBhdGgpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0OjpzdHJva2VQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDo6ZmlsbFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
OjpzdHJva2VSZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXR0ZXJuQ0cu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6cGF0dGVyblJlbGVhc2VDYWxsYmFjayk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6YXV0b0FjdGl2YXRlRm9udCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0ZvbnRDR1dpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZTo6Z2V0
UGxhdGZvcm1HbHlwaEFkdmFuY2VzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4v
R3JhcGhpY3NDb250ZXh0Q0dXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0OjpyZWxlYXNlV2luZG93c0NvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0OjpkcmF3Rm9jdXNSaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4v
SW1hZ2VDR1dpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Z2V0SEJJVE1B
UE9mU2l6ZSk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1VzZXJBZ2VudElPUy5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OnN0YW5kYXJkVXNlckFnZW50V2l0aEFwcGxpY2F0aW9uTmFtZSk6CisgICAg
ICAgICogcGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkLm1tOgorICAgICAgICAoU2VuZERl
bGVnYXRlTWVzc2FnZSk6CisgICAgICAgIChSdW5XZWJUaHJlYWQpOgorICAgICAgICAoV2ViVGhy
ZWFkVW5sb2NrR3VhcmRGb3JNYWlsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvUGxhdGZvcm1T
cGVlY2hTeW50aGVzaXplck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OnNwZWVjaFN5bnRoZXNp
c0dldFZvaWNlSWRlbnRpZmllcnMpOgorICAgICAgICAoV2ViQ29yZTo6c3BlZWNoU3ludGhlc2lz
R2V0RGVmYXVsdFZvaWNlSWRlbnRpZmllckZvckxvY2FsZSk6CisgICAgICAgIChXZWJDb3JlOjpQ
bGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyOjppbml0aWFsaXplVm9pY2VMaXN0KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9tYWMvUGx1Z2luQmxvY2tsaXN0Lm1tOgorICAgICAgICAoV2ViQ29yZTo6UGx1
Z2luQmxvY2tsaXN0OjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9XZWJHTEJsb2Nr
bGlzdC5tbToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMQmxvY2tsaXN0OjpjcmVhdGUpOgorICAg
ICAgICAqIHBsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvQXVkaW9TYW1wbGVCdWZmZXJDb21w
cmVzc29yLm1tOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29y
OjphdHRhY2hQcmltaW5nVHJpbXNJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nh
bXBsZUJ1ZmZlckNvbXByZXNzb3I6OnByb3ZpZGVTb3VyY2VEYXRhTnVtT3V0cHV0UGFja2V0cyk6
CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9WaWRlb1NhbXBsZUJ1ZmZl
ckNvbXByZXNzb3IubW06CisgICAgICAgIChXZWJDb3JlOjpzZXRDb21wcmVzc2lvblNlc3Npb25Q
cm9wZXJ0eSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9Gb3JtRGF0YVN0cmVhbUNG
TmV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNsb3NlQ3VycmVudFN0cmVhbSk6CisgICAgICAg
IChXZWJDb3JlOjphZHZhbmNlQ3VycmVudFN0cmVhbSk6CisgICAgICAgIChXZWJDb3JlOjpvcGVu
TmV4dFN0cmVhbSk6CisgICAgICAgIChXZWJDb3JlOjpmb3JtUmVhZCk6CisgICAgICAgIChXZWJD
b3JlOjpmb3JtQ2FuUmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpmb3JtU2NoZWR1bGUpOgorICAg
ICAgICAoV2ViQ29yZTo6Zm9ybVVuc2NoZWR1bGUpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvY2YvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ0ZOZXRXaW4uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Y3JlYXRlUHJpdmF0ZVN0b3JhZ2VTZXNzaW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2V0Q2xp
ZW50Q2VydGlmaWNhdGVJblNTTFByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3Vy
Y2VIYW5kbGU6OmNyZWF0ZUNGVVJMQ29ubmVjdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vbmV0
d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlv
blF1ZXVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0
aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6OndpbGxTZW5kUmVxdWVzdCk6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3RDRk5ldC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q6OmRvVXBkYXRlUmVzb3VyY2VSZXF1ZXN0KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS93aW4vRHJhZ0ltYWdlQ0dXaW4uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Y3JlYXRlQ2dDb250ZXh0RnJvbUJpdG1hcCk6CisgICAgICAgIChXZWJDb3JlOjpzY2FsZURy
YWdJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vd2luL1dlYkNvcmVCdW5kbGVXaW4uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlV2ViS2l0QnVuZGxlKToKKyAgICAgICAgKFdlYkNvcmU6
OndlYktpdEJ1bmRsZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tOgor
ICAgICAgICAoLVtXZWJDb3JlVGV4dEZpZWxkQ2VsbCBfYWRqdXN0ZWRDb3JlVUlEcmF3T3B0aW9u
c0ZvckRyYXdpbmdCb3JkZXJzT25seTpdKToKKyAgICAgICAgKiB0ZXN0aW5nL2NvY29hL1dlYkFy
Y2hpdmVEdW1wU3VwcG9ydC5oOgorICAgICAgICAqIHRlc3RpbmcvY29jb2EvV2ViQXJjaGl2ZUR1
bXBTdXBwb3J0Lm1tOgorICAgICAgICAoV2ViQ29yZVRlc3RTdXBwb3J0OjpjcmVhdGVYTUxTdHJp
bmdGcm9tV2ViQXJjaGl2ZURhdGEpOgorICAgICAgICAqIHRlc3RpbmcvY29jb2EvV2ViVmlld1Zp
c3VhbElkZW50aWZpY2F0aW9uT3ZlcmxheS5tbToKKyAgICAgICAgKGlkZW50aWZpY2F0aW9uRm9u
dCk6CisKIDIwMjEtMDMtMDQgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAg
ICAgICAgIEluIGNhc2Ugb2YgUE9TVCBuYXZpZ2F0aW9uIHJlZGlyZWN0ZWQgYnkgYSAzMDIsIHRo
ZSAnT3JpZ2luJyBoZWFkZXIgaXMga2VwdCBpbiB0aGUgcmVkaXJlY3RlZCByZXF1ZXN0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CmluZGV4IDA4M2M3MTI2NzEzNzhmZTI1NjEzMWI0ZmJkM2U3OGQ4MWUyYzMzMDEuLjQ4YjMxZTI4
Yzk3ZjFjNzZjNDE4ZTQ4NzQ0NGRkM2FkZGYwMzgxYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzkg
QEAKKzIwMjEtMDMtMDQgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAg
ICBSZWR1Y2UgdXNlIG9mIENGUmV0YWluKCkgLyBDRlJlbGVhc2UoKSAvIENGQXV0b1JlbGVhc2Uo
KSBpbiBXZWJLaXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIyMjc2MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFJlZHVjZSB1c2Ugb2YgQ0ZSZXRhaW4oKSAvIENGUmVsZWFzZSgpIC8gQ0ZBdXRvUmVsZWFz
ZSgpIGluIFdlYktpdCBieSB1c2luZyBSZXRhaW5QdHI8Pi4KKworICAgICAgICAqIFBsYXRmb3Jt
L21hYy9TdHJpbmdVdGlsaXRpZXMubW06CisgICAgICAgIChXZWJLaXQ6Om5zU3RyaW5nRnJvbVdl
YkNvcmVTdHJpbmcpOgorICAgICAgICAoV2ViS2l0Ojpmb3JtYXR0ZWRQaG9uZU51bWJlclN0cmlu
Zyk6CisgICAgICAgICogUGx1Z2luUHJvY2Vzcy9tYWMvUGx1Z2luUHJvY2Vzc01hYy5tbToKKyAg
ICAgICAgKFdlYktpdDo6aW5pdGlhbGl6ZUNvY29hT3ZlcnJpZGVzKToKKyAgICAgICAgKiBTaGFy
ZWQvbWFjL1Bhc3RlYm9hcmRUeXBlcy5tbToKKyAgICAgICAgKFdlYktpdDo6UGFzdGVib2FyZFR5
cGVzOjpmb3JFZGl0aW5nKToKKyAgICAgICAgKFdlYktpdDo6UGFzdGVib2FyZFR5cGVzOjpmb3JV
UkwpOgorICAgICAgICAoV2ViS2l0OjpQYXN0ZWJvYXJkVHlwZXM6OmZvckltYWdlcyk6CisgICAg
ICAgIChXZWJLaXQ6OlBhc3RlYm9hcmRUeXBlczo6Zm9ySW1hZ2VzV2l0aEFyY2hpdmUpOgorICAg
ICAgICAoV2ViS2l0OjpQYXN0ZWJvYXJkVHlwZXM6OmZvclNlbGVjdGlvbik6CisgICAgICAgICog
VUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3
SW1wbDo6YWNjZXB0c0ZpcnN0TW91c2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6
c2hvdWxkRGVsYXlXaW5kb3dPcmRlcmluZ0ZvckV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
Vmlld0ltcGw6OnZhbGlkQXR0cmlidXRlc0Zvck1hcmtlZFRleHQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJWaWV3SW1wbDo6cGVyZm9ybUtleUVxdWl2YWxlbnQpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9JbnNwZWN0b3IvaW9zL1dLSW5zcGVjdG9ySGlnaGxpZ2h0Vmlldy5tbToKKyAgICAgICAgKGxh
eWVyUGF0aFdpdGhIb2xlKToKKyAgICAgICAgKGxheWVyUGF0aCk6CisgICAgICAgICogVUlQcm9j
ZXNzL19XS1RvdWNoRXZlbnRHZW5lcmF0b3IubW06CisgICAgICAgICgtW19XS1RvdWNoRXZlbnRH
ZW5lcmF0b3IgZGVhbGxvY10pOgorICAgICAgICAoLVtfV0tUb3VjaEV2ZW50R2VuZXJhdG9yIF9z
ZW5kSElERXZlbnQ6XSk6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9mdWxsc2NyZWVuL1dLRnVs
bFNjcmVlbldpbmRvd0NvbnRyb2xsZXJJT1MubW06CisgICAgICAgICgtW1dLRnVsbFNjcmVlbldp
bmRvd0NvbnRyb2xsZXIgX0VWT3JnYW5pemF0aW9uTmFtZV0pOgorICAgICAgICAqIFdlYlByb2Nl
c3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tOgorICAgICAgICAoV2ViS2l0Ojp3ZWJQcm9jZXNz
TG9hZGVyQWNjZXNzaWJpbGl0eUJ1bmRsZVBhdGgpOgorCiAyMDIxLTAzLTA0ICBDaHJpcyBEdW1l
eiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCBidWlsZCBmaXggYWZ0
ZXIgcjI3MjYyOS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL0NoYW5nZUxvZwppbmRleCBjYWQxODlkMDFlYzI3
NDEzZjg3NTJmODA2NWM5NWEyMmQ1Y2MzNmI0Li5mN2MxNDRmMTZiMjhjZTExYWQ3YTViNmJiMzQ5
YzM2ZWJkOThiOGE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkg
QEAKKzIwMjEtMDMtMDQgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAg
ICBSZWR1Y2UgdXNlIG9mIENGUmV0YWluKCkgLyBDRlJlbGVhc2UoKSAvIENGQXV0b1JlbGVhc2Uo
KSBpbiBXZWJLaXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIyMjc2MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFJlZHVjZSB1c2Ugb2YgQ0ZSZXRhaW4oKSAvIENGUmVsZWFzZSgpIC8gQ0ZBdXRvUmVsZWFz
ZSgpIGluIFdlYktpdCBieSB1c2luZyBSZXRhaW5QdHI8Pi4KKworICAgICAgICAqIE1pc2MvV2Vi
VUlLaXRTdXBwb3J0Lm1tOgorICAgICAgICAoTG9hZFdlYkxvY2FsaXplZFN0cmluZ3MpOgorICAg
ICAgICAqIFdlYlZpZXcvV2ViUERGVmlld0lPUy5tbToKKyAgICAgICAgKC1bV2ViUERGVmlldyBm
aW5pc2hlZExvYWRpbmdXaXRoRGF0YVNvdXJjZTpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlBE
RlZpZXdQbGFjZWhvbGRlci5tbToKKyAgICAgICAgKC1bV2ViUERGVmlld1BsYWNlaG9sZGVyIGZp
bmlzaGVkTG9hZGluZ1dpdGhEYXRhU291cmNlOl0pOgorCiAyMDIxLTAyLTIyICBDaHJpcyBEdW1l
eiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgVXNlIGFkb3B0TlMoKSBhcyBzb29uIGFz
IHdlIFtbT2JqY0NsYXNzIGFsbG9jXSBpbml0XSB0byBhdm9pZCBsZWFrcwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvQ2hhbmdlTG9nCmluZGV4IDdjMTJkMTVhZmFlNThhZTA1Y2U2YjM0MDQ1OTAwYjg1OWVkMTQ2
YjMuLmFkYWE2NDM2ZjIzODNiNTQ5M2I4NGIxMTMyN2E2YTFlODljNjM1ZmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOSBAQAorMjAyMS0wMy0wNCAgQ2hyaXMgRHVt
ZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFJlZHVjZSB1c2Ugb2YgQ0ZSZXRhaW4o
KSAvIENGUmVsZWFzZSgpIC8gQ0ZBdXRvUmVsZWFzZSgpIGluIFdlYktpdAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIyNzYwCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVkdWNlIHVzZSBvZiBDRlJldGFp
bigpIC8gQ0ZSZWxlYXNlKCkgLyBDRkF1dG9SZWxlYXNlKCkgaW4gV2ViS2l0IGJ5IHVzaW5nIFJl
dGFpblB0cjw+LgorCisgICAgICAgICogTWlzYy9XZWJMb2NhbGl6YWJsZVN0cmluZ3MubW06Cisg
ICAgICAgICogTWlzYy9XZWJOU0RhdGFFeHRyYXMubW06CisgICAgICAgICgtW05TU3RyaW5nIF93
ZWJfY2FwaXRhbGl6ZVJGQzgyMkhlYWRlckZpZWxkTmFtZV0pOgorICAgICAgICAqIFBsdWdpbnMv
SG9zdGVkL05ldHNjYXBlUGx1Z2luSG9zdE1hbmFnZXIubW06CisgICAgICAgIChXZWJLaXQ6OnBy
ZWZlcnJlZEJ1bmRsZUxvY2FsaXphdGlvbk5hbWUpOgorICAgICAgICAqIFBsdWdpbnMvV2ViTmV0
c2NhcGVQbHVnaW5WaWV3Lm1tOgorICAgICAgICAoLVtXZWJOZXRzY2FwZVBsdWdpblZpZXcgc3Rh
dHVzOl0pOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlByb2dyZXNzVHJhY2tlckNsaWVu
dC5tbToKKyAgICAgICAgKFdlYlByb2dyZXNzVHJhY2tlckNsaWVudDo6cHJvZ3Jlc3NFc3RpbWF0
ZUNoYW5nZWQpOgorICAgICAgICAqIFdlYkluc3BlY3Rvci9XZWJOb2RlSGlnaGxpZ2h0Vmlldy5t
bToKKyAgICAgICAgKGxheWVyUGF0aFdpdGhIb2xlKToKKyAgICAgICAgKGxheWVyUGF0aCk6Cisg
ICAgICAgICogV2ViVmlldy9XZWJGcmFtZS5tbToKKyAgICAgICAgKGNyZWF0ZVVuaXF1ZVdlYkRh
dGFVUkwpOgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAgICAgICAgKCtbV2ViVmll
dyBfc2V0Q2FjaGVNb2RlbDpdKToKKwogMjAyMS0wMy0wNCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpA
YXBwbGUuY29tPgogCiAgICAgICAgIFttYWNPU11bV0syXSBDaGFuZ2luZyB0aGUgc3lzdGVtIGxh
bmd1YWdlIGRvZXMgbm90IHVwZGF0ZSBuYXZpZ2F0b3IubGFuZ3VhZ2UKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L0NoYW5nZUxvZwppbmRleCA1ODEzNDAyOTZkODVhZDRhODY5OTRkZDM0Y2RlNGU1NTcxY2FiYWE3
Li5jMDg4YmIyZjE1Zjk0MzE5MWYyODAxN2E5MzgxYTY0YjhjOGNjMTJmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDAgQEAKKzIwMjEtMDMtMDQgIENocmlzIER1bWV6
ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBSZWR1Y2UgdXNlIG9mIENGUmV0YWluKCkg
LyBDRlJlbGVhc2UoKSAvIENGQXV0b1JlbGVhc2UoKSBpbiBXZWJLaXQKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMjc2MAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlZHVjZSB1c2Ugb2YgQ0ZSZXRhaW4o
KSAvIENGUmVsZWFzZSgpIC8gQ0ZBdXRvUmVsZWFzZSgpIGluIFdlYktpdCBieSB1c2luZyBSZXRh
aW5QdHI8Pi4KKworICAgICAgICAqIENGRGljdGlvbmFyeVByb3BlcnR5QmFnLmNwcDoKKyAgICAg
ICAgKENvbnZlcnRWYXJpYW50VG9DRlR5cGUpOgorICAgICAgICAoQ0ZEaWN0aW9uYXJ5UHJvcGVy
dHlCYWc6OlJlYWQpOgorICAgICAgICAoQ0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWc6OldyaXRlKToK
KyAgICAgICAgKiBNYXJzaGFsbGluZ0hlbHBlcnMuY3BwOgorICAgICAgICAoTWFyc2hhbGxpbmdI
ZWxwZXJzOjpQYXRoU3RyaW5nVG9GaWxlQ0ZVUkxSZWYpOgorICAgICAgICAoTWFyc2hhbGxpbmdI
ZWxwZXJzOjpGaWxlQ0ZVUkxSZWZUb1BhdGhTdHJpbmcpOgorICAgICAgICAoTWFyc2hhbGxpbmdI
ZWxwZXJzOjpCU1RSVG9DRlVSTFJlZik6CisgICAgICAgIChNYXJzaGFsbGluZ0hlbHBlcnM6OkJT
VFJUb0NGU3RyaW5nUmVmKToKKyAgICAgICAgKE1hcnNoYWxsaW5nSGVscGVyczo6TFBDT0xFU1RS
VG9DRlN0cmluZ1JlZik6CisgICAgICAgIChNYXJzaGFsbGluZ0hlbHBlcnM6OmludFRvQ0ZOdW1i
ZXJSZWYpOgorICAgICAgICAoTWFyc2hhbGxpbmdIZWxwZXJzOjpzYWZlQXJyYXlUb1N0cmluZ0Fy
cmF5KToKKyAgICAgICAgKE1hcnNoYWxsaW5nSGVscGVyczo6c2FmZUFycmF5VG9JbnRBcnJheSk6
CisgICAgICAgIChNYXJzaGFsbGluZ0hlbHBlcnM6OnNhZmVBcnJheVRvSVVua25vd25BcnJheSk6
CisgICAgICAgICogTWFyc2hhbGxpbmdIZWxwZXJzLmg6CisgICAgICAgICogV2ViQXBwbGljYXRp
b25DYWNoZS5jcHA6CisgICAgICAgIChXZWJBcHBsaWNhdGlvbkNhY2hlOjpvcmlnaW5zV2l0aENh
Y2hlKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6
CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRGYWlsVG9TdGFydFBs
dWdpbiBjb25zdCk6CisgICAgICAgICogV2ViRG93bmxvYWRDRk5ldC5jcHA6CisgICAgICAgIChX
ZWJEb3dubG9hZDo6aW5pdFRvUmVzdW1lV2l0aEJ1bmRsZSk6CisgICAgICAgIChXZWJEb3dubG9h
ZDo6c2V0RGVzdGluYXRpb24pOgorICAgICAgICAoV2ViRG93bmxvYWQ6OndpbGxTZW5kUmVxdWVz
dCk6CisgICAgICAgICogV2ViSGlzdG9yeS5jcHA6CisgICAgICAgIChjcmVhdGVVc2VySW5mb0Zy
b21BcnJheSk6CisgICAgICAgICogV2ViTG9jYWxpemFibGVTdHJpbmdzLmNwcDoKKyAgICAgICAg
KGNyZWF0ZVdlYktpdEJ1bmRsZSk6CisKIDIwMjEtMDItMTAgIFJvYiBCdWlzICA8cmJ1aXNAaWdh
bGlhLmNvbT4KIAogICAgICAgICBVc2UgZXZlbnQgbG9vcCB0byBzZXQgdGl0bGUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0Lm1tIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU0NvbnRleHQubW0KaW5kZXggMGJhNzk5MWVmN2IyN2RhZTI1NTFkNjA0
ZWZjM2RjN2IzMzJjM2JkYS4uYmViMTQzZDBhZjU0MWI5M2U5YmQzYjU1NGY3ZDA1ZTNlNjk4YTkw
OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHQubW0KKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHQubW0KQEAgLTI2Miw3ICsyNjIs
NyBAQCAtIChOU1N0cmluZyAqKW5hbWUKICAgICBpZiAoIW5hbWUpCiAgICAgICAgIHJldHVybiBu
aWw7CiAKLSAgICByZXR1cm4gQ0ZCcmlkZ2luZ1JlbGVhc2UoSlNTdHJpbmdDb3B5Q0ZTdHJpbmco
a0NGQWxsb2NhdG9yRGVmYXVsdCwgbmFtZSkpOworICAgIHJldHVybiBhZG9wdENGKEpTU3RyaW5n
Q29weUNGU3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIG5hbWUpKS5icmlkZ2luZ0F1dG9yZWxl
YXNlKCk7CiB9CiAKIC0gKHZvaWQpc2V0TmFtZTooTlNTdHJpbmcgKiluYW1lCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmFsdWUubW0gYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL0pTVmFsdWUubW0KaW5kZXggMTg0NGIwNjEzMjU1MWNlOWJiYWNlNDI0MjQxZjE2
YjliZGRkOTRlMi4uYWMwOWY2NTQ1MDdjM2RiZDQ5NjBmZDY3MTMzMmJiM2YxMWY5MDYyNSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlLm1tCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZS5tbQpAQCAtNzczLDcgKzc3Myw3IEBAIHN0YXRp
YyBKU0NvbnRhaW5lckNvbnZlcnRvcjo6VGFzayB2YWx1ZVRvT2JqZWN0V2l0aG91dENvcHkoSlNH
bG9iYWxDb250ZXh0UmVmIGNvCiAgICAgICAgIH0gZWxzZSBpZiAoSlNWYWx1ZUlzU3RyaW5nKGNv
bnRleHQsIHZhbHVlKSkgewogICAgICAgICAgICAgLy8gV291bGQgYmUgbmljZSB0byB1bmlxdWUg
c3RyaW5ncywgdG9vLgogICAgICAgICAgICAgYXV0byBqc3N0cmluZyA9IGFkb3B0UmVmKEpTVmFs
dWVUb1N0cmluZ0NvcHkoY29udGV4dCwgdmFsdWUsIDApKTsKLSAgICAgICAgICAgIHByaW1pdGl2
ZSA9IENGQnJpZGdpbmdSZWxlYXNlKEpTU3RyaW5nQ29weUNGU3RyaW5nKGtDRkFsbG9jYXRvckRl
ZmF1bHQsIGpzc3RyaW5nLmdldCgpKSk7CisgICAgICAgICAgICBwcmltaXRpdmUgPSBhZG9wdENG
KEpTU3RyaW5nQ29weUNGU3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIGpzc3RyaW5nLmdldCgp
KSkuYnJpZGdpbmdBdXRvcmVsZWFzZSgpOwogICAgICAgICB9IGVsc2UgaWYgKEpTVmFsdWVJc051
bGwoY29udGV4dCwgdmFsdWUpKQogICAgICAgICAgICAgcHJpbWl0aXZlID0gW05TTnVsbCBudWxs
XTsKICAgICAgICAgZWxzZSB7CkBAIC04ODEsNyArODgxLDcgQEAgaWQgdmFsdWVUb1N0cmluZyhK
U0dsb2JhbENvbnRleHRSZWYgY29udGV4dCwgSlNWYWx1ZVJlZiB2YWx1ZSwgSlNWYWx1ZVJlZiog
ZXhjZXAKICAgICAgICAgcmV0dXJuIG5pbDsKICAgICB9CiAKLSAgICByZXR1cm4gQ0ZCcmlkZ2lu
Z1JlbGVhc2UoSlNTdHJpbmdDb3B5Q0ZTdHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwganNzdHJp
bmcuZ2V0KCkpKTsKKyAgICByZXR1cm4gYWRvcHRDRihKU1N0cmluZ0NvcHlDRlN0cmluZyhrQ0ZB
bGxvY2F0b3JEZWZhdWx0LCBqc3N0cmluZy5nZXQoKSkpLmJyaWRnaW5nQXV0b3JlbGVhc2UoKTsK
IH0KIAogaWQgdmFsdWVUb0RhdGUoSlNHbG9iYWxDb250ZXh0UmVmIGNvbnRleHQsIEpTVmFsdWVS
ZWYgdmFsdWUsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL2NvY29hL1JlbW90ZUluc3BlY3RvclhQQ0Nvbm5l
Y3Rpb24ubW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9jb2NvYS9S
ZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uLm1tCmluZGV4IDcyMzEwM2EwMzg3M2IzN2I5YWVi
OWM3Y2ZlNGQ0MDk2Nzg0ZjNmMzYuLjgxM2MxNjMwZTNkNmEwY2JiMTY4YjI3NmM2NTBlMDU3MTcy
M2JlNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3Rl
L2NvY29hL1JlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24ubW0KKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvY29jb2EvUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVj
dGlvbi5tbQpAQCAtMTE3LDEwICsxMTcsMTAgQEAgTlNEaWN0aW9uYXJ5ICpSZW1vdGVJbnNwZWN0
b3JYUENDb25uZWN0aW9uOjpkZXNlcmlhbGl6ZU1lc3NhZ2UoeHBjX29iamVjdF90IG9iamUKICAg
ICAgICAgcmV0dXJuIG5pbDsKICAgICB9CiAKLSAgICBhdXRvIGRpY3Rpb25hcnkgPSBfQ0ZYUEND
cmVhdGVDRk9iamVjdEZyb21YUENNZXNzYWdlKHhwY0RpY3Rpb25hcnkpOworICAgIGF1dG8gZGlj
dGlvbmFyeSA9IGFkb3B0Q0YoX0NGWFBDQ3JlYXRlQ0ZPYmplY3RGcm9tWFBDTWVzc2FnZSh4cGNE
aWN0aW9uYXJ5KSk7CiAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShkaWN0aW9uYXJ5LCAiVW5hYmxl
IHRvIGRlc2VyaWFsaXplIHhwYyBtZXNzYWdlIik7Ci0gICAgQVNTRVJUKENGR2V0VHlwZUlEKGRp
Y3Rpb25hcnkpID09IENGRGljdGlvbmFyeUdldFR5cGVJRCgpKTsKLSAgICByZXR1cm4gQ0ZCcmlk
Z2luZ1JlbGVhc2UoZGljdGlvbmFyeSk7CisgICAgQVNTRVJUKENGR2V0VHlwZUlEKGRpY3Rpb25h
cnkuZ2V0KCkpID09IENGRGljdGlvbmFyeUdldFR5cGVJRCgpKTsKKyAgICByZXR1cm4gZGljdGlv
bmFyeS5icmlkZ2luZ0F1dG9yZWxlYXNlKCk7CiB9CiAKIHZvaWQgUmVtb3RlSW5zcGVjdG9yWFBD
Q29ubmVjdGlvbjo6aGFuZGxlRXZlbnQoeHBjX29iamVjdF90IG9iamVjdCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL2NvY29hL05TVVJMRXh0cmFzLm1tIGIvU291cmNlL1dURi93dGYvY29j
b2EvTlNVUkxFeHRyYXMubW0KaW5kZXggMjA5ZWE1Yjg2NjRhMWJhMzE5MmY5ZWMyMzUzOWUzMGNl
MmM5N2E4Mi4uNzUwOGYyZjRmMmRjNDJlODJhZjgxZjYzNDgyMGM1ZGQ3NjA2NWQwZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi93dGYvY29jb2EvTlNVUkxFeHRyYXMubW0KKysrIGIvU291cmNlL1dU
Ri93dGYvY29jb2EvTlNVUkxFeHRyYXMubW0KQEAgLTkyLDEwICs5MiwxMCBAQCB2b2lkIGxvYWRJ
RE5BbGxvd2VkU2NyaXB0TGlzdCgpCiAgICAgCiBzdGF0aWMgU3RyaW5nIGRlY29kZVBlcmNlbnRF
c2NhcGVzKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogewotICAgIE5TU3RyaW5nICpzdWJzdHJpbmcg
PSBDRkJyaWRnaW5nUmVsZWFzZShDRlVSTENyZWF0ZVN0cmluZ0J5UmVwbGFjaW5nUGVyY2VudEVz
Y2FwZXMobnVsbHB0ciwgc3RyaW5nLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIENGU1RSKCIiKSkp
OworICAgIGF1dG8gc3Vic3RyaW5nID0gYWRvcHRDRihDRlVSTENyZWF0ZVN0cmluZ0J5UmVwbGFj
aW5nUGVyY2VudEVzY2FwZXMobnVsbHB0ciwgc3RyaW5nLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCks
IENGU1RSKCIiKSkpOwogICAgIGlmICghc3Vic3RyaW5nKQogICAgICAgICByZXR1cm4gc3RyaW5n
OwotICAgIHJldHVybiBzdWJzdHJpbmc7CisgICAgcmV0dXJuIHN1YnN0cmluZy5nZXQoKTsKIH0K
IAogTlNTdHJpbmcgKmRlY29kZUhvc3ROYW1lKE5TU3RyaW5nICpzdHJpbmcpCkBAIC0xMzgsMTEg
KzEzOCwxMSBAQCBOU1VSTCAqVVJMQnlUcnVuY2F0aW5nT25lQ2hhcmFjdGVyQmVmb3JlQ29tcG9u
ZW50KE5TVVJMICpVUkwsIENGVVJMQ29tcG9uZW50VHlwZQogICAgICAgICBDRlVSTEdldEJ5dGVz
KChfX2JyaWRnZSBDRlVSTFJlZilVUkwsIHVybEJ5dGVzLmRhdGEoKSwgbnVtQnl0ZXMpOwogICAg
IH0KIAotICAgIENGVVJMUmVmIHJlc3VsdCA9IENGVVJMQ3JlYXRlV2l0aEJ5dGVzKG51bGxwdHIs
IHVybEJ5dGVzLmRhdGEoKSwgZnJhZ1JnLmxvY2F0aW9uIC0gMSwga0NGU3RyaW5nRW5jb2RpbmdV
VEY4LCBudWxscHRyKTsKKyAgICBhdXRvIHJlc3VsdCA9IGFkb3B0Q0YoQ0ZVUkxDcmVhdGVXaXRo
Qnl0ZXMobnVsbHB0ciwgdXJsQnl0ZXMuZGF0YSgpLCBmcmFnUmcubG9jYXRpb24gLSAxLCBrQ0ZT
dHJpbmdFbmNvZGluZ1VURjgsIG51bGxwdHIpKTsKICAgICBpZiAoIXJlc3VsdCkKLSAgICAgICAg
cmVzdWx0ID0gQ0ZVUkxDcmVhdGVXaXRoQnl0ZXMobnVsbHB0ciwgdXJsQnl0ZXMuZGF0YSgpLCBm
cmFnUmcubG9jYXRpb24gLSAxLCBrQ0ZTdHJpbmdFbmNvZGluZ0lTT0xhdGluMSwgbnVsbHB0cik7
CisgICAgICAgIHJlc3VsdCA9IGFkb3B0Q0YoQ0ZVUkxDcmVhdGVXaXRoQnl0ZXMobnVsbHB0ciwg
dXJsQnl0ZXMuZGF0YSgpLCBmcmFnUmcubG9jYXRpb24gLSAxLCBrQ0ZTdHJpbmdFbmNvZGluZ0lT
T0xhdGluMSwgbnVsbHB0cikpOwogICAgICAgICAKLSAgICByZXR1cm4gcmVzdWx0ID8gQ0ZCcmlk
Z2luZ1JlbGVhc2UocmVzdWx0KSA6IFVSTDsKKyAgICByZXR1cm4gcmVzdWx0ID8gcmVzdWx0LmJy
aWRnaW5nQXV0b3JlbGVhc2UoKSA6IFVSTDsKIH0KIAogc3RhdGljIE5TVVJMICpVUkxCeVJlbW92
aW5nUmVzb3VyY2VTcGVjaWZpZXIoTlNVUkwgKlVSTCkKQEAgLTE1NSw3ICsxNTUsNiBAQCBOU1VS
TCAqVVJMV2l0aERhdGEoTlNEYXRhICpkYXRhLCBOU1VSTCAqYmFzZVVSTCkKICAgICBpZiAoIWRh
dGEpCiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgCi0gICAgTlNVUkwgKnJlc3VsdCA9IG5pbDsK
ICAgICBzaXplX3QgbGVuZ3RoID0gW2RhdGEgbGVuZ3RoXTsKICAgICBpZiAobGVuZ3RoID4gMCkg
ewogICAgICAgICAvLyB3b3JrIGFyb3VuZCA8cmRhcjovLzQ0NzA3NzE+OiBDRlVSTENyZWF0ZUFi
c29sdXRlVVJMV2l0aEJ5dGVzKC4uLCBUUlVFKSBkb2Vzbid0IHJlbW92ZSBub24tcGF0aCBjb21w
b25lbnRzLgpAQCAtMTcxLDEzICsxNzAsMTIgQEAgTlNVUkwgKlVSTFdpdGhEYXRhKE5TRGF0YSAq
ZGF0YSwgTlNVUkwgKmJhc2VVUkwpCiAgICAgICAgIC8vIChlLmcgY2FsbHMgdG8gTlNVUkwgLXBh
dGgpLiBIb3dldmVyLCB0aGlzIGZ1bmN0aW9uIGlzIG5vdCB0b2xlcmFudCBvZiBpbGxlZ2FsIFVU
Ri04IHNlcXVlbmNlcywgd2hpY2gKICAgICAgICAgLy8gY291bGQgZWl0aGVyIGJlIGEgbWFsZm9y
bWVkIHN0cmluZyBvciBieXRlcyBpbiBhIGRpZmZlcmVudCBlbmNvZGluZywgbGlrZSBzaGlmdC1q
aXMsIHNvIHdlIGZhbGwgYmFjawogICAgICAgICAvLyBvbnRvIHVzaW5nIElTTyBMYXRpbiAxIGlu
IHRob3NlIGNhc2VzLgotICAgICAgICByZXN1bHQgPSBDRkJyaWRnaW5nUmVsZWFzZShDRlVSTENy
ZWF0ZUFic29sdXRlVVJMV2l0aEJ5dGVzKG51bGxwdHIsIGJ5dGVzLCBsZW5ndGgsIGtDRlN0cmlu
Z0VuY29kaW5nVVRGOCwgKF9fYnJpZGdlIENGVVJMUmVmKWJhc2VVUkwsIFlFUykpOworICAgICAg
ICBhdXRvIHJlc3VsdCA9IGFkb3B0Q0YoQ0ZVUkxDcmVhdGVBYnNvbHV0ZVVSTFdpdGhCeXRlcyhu
dWxscHRyLCBieXRlcywgbGVuZ3RoLCBrQ0ZTdHJpbmdFbmNvZGluZ1VURjgsIChfX2JyaWRnZSBD
RlVSTFJlZiliYXNlVVJMLCBZRVMpKTsKICAgICAgICAgaWYgKCFyZXN1bHQpCi0gICAgICAgICAg
ICByZXN1bHQgPSBDRkJyaWRnaW5nUmVsZWFzZShDRlVSTENyZWF0ZUFic29sdXRlVVJMV2l0aEJ5
dGVzKG51bGxwdHIsIGJ5dGVzLCBsZW5ndGgsIGtDRlN0cmluZ0VuY29kaW5nSVNPTGF0aW4xLCAo
X19icmlkZ2UgQ0ZVUkxSZWYpYmFzZVVSTCwgWUVTKSk7Ci0gICAgfSBlbHNlCi0gICAgICAgIHJl
c3VsdCA9IFtOU1VSTCBVUkxXaXRoU3RyaW5nOkAiIl07Ci0KLSAgICByZXR1cm4gcmVzdWx0Owor
ICAgICAgICAgICAgcmVzdWx0ID0gYWRvcHRDRihDRlVSTENyZWF0ZUFic29sdXRlVVJMV2l0aEJ5
dGVzKG51bGxwdHIsIGJ5dGVzLCBsZW5ndGgsIGtDRlN0cmluZ0VuY29kaW5nSVNPTGF0aW4xLCAo
X19icmlkZ2UgQ0ZVUkxSZWYpYmFzZVVSTCwgWUVTKSk7CisgICAgICAgIHJldHVybiByZXN1bHQu
YnJpZGdpbmdBdXRvcmVsZWFzZSgpOworICAgIH0KKyAgICByZXR1cm4gW05TVVJMIFVSTFdpdGhT
dHJpbmc6QCIiXTsKIH0KIHN0YXRpYyBOU0RhdGEgKmRhdGFXaXRoVXNlclR5cGVkU3RyaW5nKE5T
U3RyaW5nICpzdHJpbmcpCiB7CkBAIC0zMzYsMTEgKzMzNCwxMSBAQCBzdGF0aWMgTlNVUkwgKlVS
TEJ5UmVtb3ZpbmdDb21wb25lbnRBbmRTdWJzZXF1ZW50Q2hhcmFjdGVyKE5TVVJMICpVUkwsIENG
VVJMQ29tcAogICAgICAgICAKICAgICBtZW1tb3ZlKHVybEJ5dGVzICsgcmFuZ2UubG9jYXRpb24s
IHVybEJ5dGVzICsgcmFuZ2UubG9jYXRpb24gKyByYW5nZS5sZW5ndGgsIG51bUJ5dGVzIC0gcmFu
Z2UubG9jYXRpb24gKyByYW5nZS5sZW5ndGgpOwogICAgIAotICAgIENGVVJMUmVmIHJlc3VsdCA9
IENGVVJMQ3JlYXRlV2l0aEJ5dGVzKG51bGxwdHIsIHVybEJ5dGVzLCBudW1CeXRlcyAtIHJhbmdl
Lmxlbmd0aCwga0NGU3RyaW5nRW5jb2RpbmdVVEY4LCBudWxscHRyKTsKKyAgICBhdXRvIHJlc3Vs
dCA9IGFkb3B0Q0YoQ0ZVUkxDcmVhdGVXaXRoQnl0ZXMobnVsbHB0ciwgdXJsQnl0ZXMsIG51bUJ5
dGVzIC0gcmFuZ2UubGVuZ3RoLCBrQ0ZTdHJpbmdFbmNvZGluZ1VURjgsIG51bGxwdHIpKTsKICAg
ICBpZiAoIXJlc3VsdCkKLSAgICAgICAgcmVzdWx0ID0gQ0ZVUkxDcmVhdGVXaXRoQnl0ZXMobnVs
bHB0ciwgdXJsQnl0ZXMsIG51bUJ5dGVzIC0gcmFuZ2UubGVuZ3RoLCBrQ0ZTdHJpbmdFbmNvZGlu
Z0lTT0xhdGluMSwgbnVsbHB0cik7CisgICAgICAgIHJlc3VsdCA9IGFkb3B0Q0YoQ0ZVUkxDcmVh
dGVXaXRoQnl0ZXMobnVsbHB0ciwgdXJsQnl0ZXMsIG51bUJ5dGVzIC0gcmFuZ2UubGVuZ3RoLCBr
Q0ZTdHJpbmdFbmNvZGluZ0lTT0xhdGluMSwgbnVsbHB0cikpOwogICAgICAgICAgICAgICAgIAot
ICAgIHJldHVybiByZXN1bHQgPyBDRkJyaWRnaW5nUmVsZWFzZShyZXN1bHQpIDogVVJMOworICAg
IHJldHVybiByZXN1bHQgPyByZXN1bHQuYnJpZGdpbmdBdXRvcmVsZWFzZSgpIDogVVJMOwogfQog
CiBOU1VSTCAqVVJMQnlSZW1vdmluZ1VzZXJJbmZvKE5TVVJMICpVUkwpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9BWE9iamVjdENhY2hlTWFjLm1tIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvQVhPYmplY3RDYWNoZU1hYy5tbQppbmRleCBi
N2NmZjc0ZTc2MmEyOGUwNDU1NzQ2NDE2MTJkZTg0YjU2OTQxZjI1Li42OWNlZTI4NWU2NjNmYTU2
OGViZmM3Y2E3ZjVmOWVjZDNmNTJmY2VkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L21hYy9BWE9iamVjdENhY2hlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvbWFjL0FYT2JqZWN0Q2FjaGVNYWMubW0KQEAgLTYwMyw3ICs2MDMsNyBAQCBz
dGF0aWMgQVhUZXh0TWFya2VyUmFuZ2VSZWYgQVhUZXh0TWFya2VyUmFuZ2UoQVhUZXh0TWFya2Vy
UmVmIHN0YXJ0TWFya2VyLCBBWFRleAogICAgIEFTU0VSVChlbmRNYXJrZXIpOwogICAgIEFTU0VS
VChDRkdldFR5cGVJRCgoX19icmlkZ2UgQ0ZUeXBlUmVmKXN0YXJ0TWFya2VyKSA9PSBBWFRleHRN
YXJrZXJHZXRUeXBlSUQoKSk7CiAgICAgQVNTRVJUKENGR2V0VHlwZUlEKChfX2JyaWRnZSBDRlR5
cGVSZWYpZW5kTWFya2VyKSA9PSBBWFRleHRNYXJrZXJHZXRUeXBlSUQoKSk7Ci0gICAgcmV0dXJu
IChBWFRleHRNYXJrZXJSYW5nZVJlZilDRkJyaWRnaW5nUmVsZWFzZShBWFRleHRNYXJrZXJSYW5n
ZUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBzdGFydE1hcmtlciwgZW5kTWFya2VyKSk7Cisg
ICAgcmV0dXJuIChBWFRleHRNYXJrZXJSYW5nZVJlZilhZG9wdENGKEFYVGV4dE1hcmtlclJhbmdl
Q3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIHN0YXJ0TWFya2VyLCBlbmRNYXJrZXIpKS5icmlk
Z2luZ0F1dG9yZWxlYXNlKCk7CiB9CiAKIHN0YXRpYyBBWFRleHRNYXJrZXJSYW5nZVJlZiB0ZXh0
TWFya2VyUmFuZ2VGcm9tTWFya2VycyhBWFRleHRNYXJrZXJSZWYgdGV4dE1hcmtlcjEsIEFYVGV4
dE1hcmtlclJlZiB0ZXh0TWFya2VyMikKQEAgLTYxOCwxNCArNjE4LDE0IEBAIHN0YXRpYyBBWFRl
eHRNYXJrZXJSZWYgQVhUZXh0TWFya2VyUmFuZ2VTdGFydChBWFRleHRNYXJrZXJSYW5nZVJlZiB0
ZXh0TWFya2VyUmFuCiB7CiAgICAgQVNTRVJUKHRleHRNYXJrZXJSYW5nZSk7CiAgICAgQVNTRVJU
KENGR2V0VHlwZUlEKChfX2JyaWRnZSBDRlR5cGVSZWYpdGV4dE1hcmtlclJhbmdlKSA9PSBBWFRl
eHRNYXJrZXJSYW5nZUdldFR5cGVJRCgpKTsKLSAgICByZXR1cm4gKEFYVGV4dE1hcmtlclJlZilD
RkJyaWRnaW5nUmVsZWFzZShBWFRleHRNYXJrZXJSYW5nZUNvcHlTdGFydE1hcmtlcih0ZXh0TWFy
a2VyUmFuZ2UpKTsKKyAgICByZXR1cm4gKEFYVGV4dE1hcmtlclJlZilhZG9wdENGKEFYVGV4dE1h
cmtlclJhbmdlQ29weVN0YXJ0TWFya2VyKHRleHRNYXJrZXJSYW5nZSkpLmJyaWRnaW5nQXV0b3Jl
bGVhc2UoKTsKIH0KIAogc3RhdGljIEFYVGV4dE1hcmtlclJlZiBBWFRleHRNYXJrZXJSYW5nZUVu
ZChBWFRleHRNYXJrZXJSYW5nZVJlZiB0ZXh0TWFya2VyUmFuZ2UpCiB7CiAgICAgQVNTRVJUKHRl
eHRNYXJrZXJSYW5nZSk7CiAgICAgQVNTRVJUKENGR2V0VHlwZUlEKChfX2JyaWRnZSBDRlR5cGVS
ZWYpdGV4dE1hcmtlclJhbmdlKSA9PSBBWFRleHRNYXJrZXJSYW5nZUdldFR5cGVJRCgpKTsKLSAg
ICByZXR1cm4gKEFYVGV4dE1hcmtlclJlZilDRkJyaWRnaW5nUmVsZWFzZShBWFRleHRNYXJrZXJS
YW5nZUNvcHlFbmRNYXJrZXIodGV4dE1hcmtlclJhbmdlKSk7CisgICAgcmV0dXJuIChBWFRleHRN
YXJrZXJSZWYpYWRvcHRDRihBWFRleHRNYXJrZXJSYW5nZUNvcHlFbmRNYXJrZXIodGV4dE1hcmtl
clJhbmdlKSkuYnJpZGdpbmdBdXRvcmVsZWFzZSgpOwogfQogCiBzdGF0aWMgVGV4dE1hcmtlckRh
dGEgZ2V0Qnl0ZXNGcm9tQVhUZXh0TWFya2VyKEFYVGV4dE1hcmtlclJlZiB0ZXh0TWFya2VyKQpA
QCAtNjcxLDcgKzY3MSw3IEBAIEFYVGV4dE1hcmtlclJlZiB0ZXh0TWFya2VyRm9yVmlzaWJsZVBv
c2l0aW9uKEFYT2JqZWN0Q2FjaGUqIGNhY2hlLCBjb25zdCBWaXNpYmxlCiAgICAgaWYgKCF0ZXh0
TWFya2VyRGF0YSkKICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAgIHJldHVybiAoQVhUZXh0TWFy
a2VyUmVmKUNGQnJpZGdpbmdSZWxlYXNlKEFYVGV4dE1hcmtlckNyZWF0ZShrQ0ZBbGxvY2F0b3JE
ZWZhdWx0LCAoY29uc3QgVUludDgqKSZ0ZXh0TWFya2VyRGF0YS52YWx1ZSgpLCBzaXplb2YodGV4
dE1hcmtlckRhdGEudmFsdWUoKSkpKTsKKyAgICByZXR1cm4gKEFYVGV4dE1hcmtlclJlZilhZG9w
dENGKEFYVGV4dE1hcmtlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAoY29uc3QgVUludDgq
KSZ0ZXh0TWFya2VyRGF0YS52YWx1ZSgpLCBzaXplb2YodGV4dE1hcmtlckRhdGEudmFsdWUoKSkp
KS5icmlkZ2luZ0F1dG9yZWxlYXNlKCk7CiB9CiAKIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9z
aXRpb25Gb3JUZXh0TWFya2VyKEFYT2JqZWN0Q2FjaGUqIGNhY2hlLCBBWFRleHRNYXJrZXJSZWYg
dGV4dE1hcmtlcikKQEAgLTcyMSw3ICs3MjEsNyBAQCBBWFRleHRNYXJrZXJSZWYgdGV4dE1hcmtl
ckZvckNoYXJhY3Rlck9mZnNldChBWE9iamVjdENhY2hlKiBjYWNoZSwgY29uc3QgQ2hhcmFjdAog
ICAgIGlmICghdGV4dE1hcmtlckRhdGEuYXhJRCB8fCB0ZXh0TWFya2VyRGF0YS5pZ25vcmVkKQog
ICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgcmV0dXJuIChBWFRleHRNYXJrZXJSZWYpQ0ZCcmlk
Z2luZ1JlbGVhc2UoQVhUZXh0TWFya2VyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIChjb25z
dCBVSW50OCopJnRleHRNYXJrZXJEYXRhLCBzaXplb2YodGV4dE1hcmtlckRhdGEpKSk7CisgICAg
cmV0dXJuIChBWFRleHRNYXJrZXJSZWYpYWRvcHRDRihBWFRleHRNYXJrZXJDcmVhdGUoa0NGQWxs
b2NhdG9yRGVmYXVsdCwgKGNvbnN0IFVJbnQ4KikmdGV4dE1hcmtlckRhdGEsIHNpemVvZih0ZXh0
TWFya2VyRGF0YSkpKS5icmlkZ2luZ0F1dG9yZWxlYXNlKCk7CiB9CiAKIENoYXJhY3Rlck9mZnNl
dCBjaGFyYWN0ZXJPZmZzZXRGb3JUZXh0TWFya2VyKEFYT2JqZWN0Q2FjaGUqIGNhY2hlLCBBWFRl
eHRNYXJrZXJSZWYgdGV4dE1hcmtlcikKQEAgLTc0Nyw3ICs3NDcsNyBAQCBBWFRleHRNYXJrZXJS
ZWYgc3RhcnRPckVuZFRleHRNYXJrZXJGb3JSYW5nZShBWE9iamVjdENhY2hlKiBjYWNoZSwgY29u
c3QgT3B0aW9uYQogICAgIGlmICghdGV4dE1hcmtlckRhdGEuYXhJRCkKICAgICAgICAgcmV0dXJu
IG5pbDsKIAotICAgIHJldHVybiAoQVhUZXh0TWFya2VyUmVmKUNGQnJpZGdpbmdSZWxlYXNlKEFY
VGV4dE1hcmtlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAoY29uc3QgVUludDgqKSZ0ZXh0
TWFya2VyRGF0YSwgc2l6ZW9mKHRleHRNYXJrZXJEYXRhKSkpOworICAgIHJldHVybiAoQVhUZXh0
TWFya2VyUmVmKWFkb3B0Q0YoQVhUZXh0TWFya2VyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQs
IChjb25zdCBVSW50OCopJnRleHRNYXJrZXJEYXRhLCBzaXplb2YodGV4dE1hcmtlckRhdGEpKSku
YnJpZGdpbmdBdXRvcmVsZWFzZSgpOwogfQogCiBBWFRleHRNYXJrZXJSYW5nZVJlZiB0ZXh0TWFy
a2VyUmFuZ2VGcm9tUmFuZ2UoQVhPYmplY3RDYWNoZSogY2FjaGUsIGNvbnN0IE9wdGlvbmFsPFNp
bXBsZVJhbmdlPiYgcmFuZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2Uu
bW0KaW5kZXggOTMwNzY4N2I3ZjgwN2RiNWFiYTQ2Nzc1MDg2YzRhNWNjOGRlNzBjMS4uMGZjODI4
ODQ2ZGIzMWZhOGIwNTY1YjFjYjdmZmMwOTgwNmY0MDg0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNl
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxp
dHlPYmplY3RXcmFwcGVyQmFzZS5tbQpAQCAtMzI0LDggKzMyNCw3IEBAIC0gKFdlYkNvcmU6OkFY
Q29yZU9iamVjdCopdXBkYXRlT2JqZWN0QmFja2luZ1N0b3JlCiB7CiAgICAgLy8gQ2FsbGluZyB1
cGRhdGVCYWNraW5nU3RvcmUoKSBjYW4gaW52YWxpZGF0ZSB0aGlzIGVsZW1lbnQgc28gc2VsZiBt
dXN0IGJlIHJldGFpbmVkLgogICAgIC8vIElmIGl0IGRvZXMgYmVjb21lIGludmFsaWRhdGVkLCBz
ZWxmLmF4QmFja2luZ09iamVjdCB3aWxsIGJlIG5pbC4KLSAgICBDRlJldGFpbigoX19icmlkZ2Ug
Q0ZUeXBlUmVmKXNlbGYpOwotICAgIENGQXV0b3JlbGVhc2UoKF9fYnJpZGdlIENGVHlwZVJlZilz
ZWxmKTsKKyAgICByZXRhaW5QdHIoc2VsZikuYXV0b3JlbGVhc2UoKTsKIAogICAgIGF1dG8qIGJh
Y2tpbmdPYmplY3QgPSBzZWxmLmF4QmFja2luZ09iamVjdDsKICAgICBpZiAoIWJhY2tpbmdPYmpl
Y3QpCkBAIC00MzMsMTEgKzQzMiwxMCBAQCBzdGF0aWMgdm9pZCBjb252ZXJ0UGF0aFRvU2NyZWVu
U3BhY2VGdW5jdGlvbihQYXRoQ29udmVyc2lvbkluZm8mIGNvbnZlcnNpb24sIGNvbgogCiAtIChD
R1BhdGhSZWYpY29udmVydFBhdGhUb1NjcmVlblNwYWNlOihjb25zdCBQYXRoJilwYXRoCiB7Ci0g
ICAgUGF0aENvbnZlcnNpb25JbmZvIGNvbnZlcnNpb24gPSB7IHNlbGYsIENHUGF0aENyZWF0ZU11
dGFibGUoKSB9OworICAgIFBhdGhDb252ZXJzaW9uSW5mbyBjb252ZXJzaW9uID0geyBzZWxmLCBh
ZG9wdENGKENHUGF0aENyZWF0ZU11dGFibGUoKSkuYXV0b3JlbGVhc2UoKSB9OwogICAgIHBhdGgu
YXBwbHkoWyZjb252ZXJzaW9uXShjb25zdCBQYXRoRWxlbWVudCYgcGF0aEVsZW1lbnQpIHsKICAg
ICAgICAgY29udmVydFBhdGhUb1NjcmVlblNwYWNlRnVuY3Rpb24oY29udmVyc2lvbiwgcGF0aEVs
ZW1lbnQpOwogICAgIH0pOwotICAgIENGQXV0b3JlbGVhc2UoY29udmVyc2lvbi5wYXRoKTsKICAg
ICByZXR1cm4gY29udmVyc2lvbi5wYXRoOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbSBi
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RX
cmFwcGVyTWFjLm1tCmluZGV4IDgzZWYyNGMxNThhZTcwYzM2MjRmOTM1M2M3NjlmZGUwY2MyNzU2
NmUuLjJiMDA1Y2U2NzU5MDk0Njc0MGNjYmVjMzYwOTMwMmVkZDhjZjlmOGYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RX
cmFwcGVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCkBAIC03NDIsNyArNzQyLDcgQEAgc3RhdGlj
IGlkIG5leHRUZXh0TWFya2VyRm9yQ2hhcmFjdGVyT2Zmc2V0KEFYT2JqZWN0Q2FjaGUqIGNhY2hl
LCBDaGFyYWN0ZXJPZmZzZXQKICAgICBjYWNoZS0+dGV4dE1hcmtlckRhdGFGb3JOZXh0Q2hhcmFj
dGVyT2Zmc2V0KHRleHRNYXJrZXJEYXRhLCBjaGFyYWN0ZXJPZmZzZXQpOwogICAgIGlmICghdGV4
dE1hcmtlckRhdGEuYXhJRCkKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICByZXR1cm4gQ0ZCcmlk
Z2luZ1JlbGVhc2UoQVhUZXh0TWFya2VyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIChjb25z
dCBVSW50OCopJnRleHRNYXJrZXJEYXRhLCBzaXplb2YodGV4dE1hcmtlckRhdGEpKSk7CisgICAg
cmV0dXJuIGFkb3B0Q0YoQVhUZXh0TWFya2VyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIChj
b25zdCBVSW50OCopJnRleHRNYXJrZXJEYXRhLCBzaXplb2YodGV4dE1hcmtlckRhdGEpKSkuYnJp
ZGdpbmdBdXRvcmVsZWFzZSgpOwogfQogCiBzdGF0aWMgaWQgcHJldmlvdXNUZXh0TWFya2VyRm9y
Q2hhcmFjdGVyT2Zmc2V0KEFYT2JqZWN0Q2FjaGUqIGNhY2hlLCBDaGFyYWN0ZXJPZmZzZXQmIGNo
YXJhY3Rlck9mZnNldCkKQEAgLTc1NCw3ICs3NTQsNyBAQCBzdGF0aWMgaWQgcHJldmlvdXNUZXh0
TWFya2VyRm9yQ2hhcmFjdGVyT2Zmc2V0KEFYT2JqZWN0Q2FjaGUqIGNhY2hlLCBDaGFyYWN0ZXJP
ZgogICAgIGNhY2hlLT50ZXh0TWFya2VyRGF0YUZvclByZXZpb3VzQ2hhcmFjdGVyT2Zmc2V0KHRl
eHRNYXJrZXJEYXRhLCBjaGFyYWN0ZXJPZmZzZXQpOwogICAgIGlmICghdGV4dE1hcmtlckRhdGEu
YXhJRCkKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICByZXR1cm4gQ0ZCcmlkZ2luZ1JlbGVhc2Uo
QVhUZXh0TWFya2VyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIChjb25zdCBVSW50OCopJnRl
eHRNYXJrZXJEYXRhLCBzaXplb2YodGV4dE1hcmtlckRhdGEpKSk7CisgICAgcmV0dXJuIGFkb3B0
Q0YoQVhUZXh0TWFya2VyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIChjb25zdCBVSW50OCop
JnRleHRNYXJrZXJEYXRhLCBzaXplb2YodGV4dE1hcmtlckRhdGEpKSkuYnJpZGdpbmdBdXRvcmVs
ZWFzZSgpOwogfQogCiAtIChpZCluZXh0VGV4dE1hcmtlckZvckNoYXJhY3Rlck9mZnNldDooQ2hh
cmFjdGVyT2Zmc2V0JiljaGFyYWN0ZXJPZmZzZXQKQEAgLTc5Miw3ICs3OTIsNyBAQCAtIChpZCl0
ZXh0TWFya2VyRm9yRmlyc3RQb3NpdGlvbkluVGV4dENvbnRyb2w6KEhUTUxUZXh0Rm9ybUNvbnRy
b2xFbGVtZW50ICYpdGV4dAogICAgIGlmICghdGV4dE1hcmtlckRhdGEpCiAgICAgICAgIHJldHVy
biBuaWw7CiAKLSAgICByZXR1cm4gQ0ZCcmlkZ2luZ1JlbGVhc2UoQVhUZXh0TWFya2VyQ3JlYXRl
KGtDRkFsbG9jYXRvckRlZmF1bHQsIChjb25zdCBVSW50OCopJnRleHRNYXJrZXJEYXRhLnZhbHVl
KCksIHNpemVvZih0ZXh0TWFya2VyRGF0YS52YWx1ZSgpKSkpOworICAgIHJldHVybiBhZG9wdENG
KEFYVGV4dE1hcmtlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAoY29uc3QgVUludDgqKSZ0
ZXh0TWFya2VyRGF0YS52YWx1ZSgpLCBzaXplb2YodGV4dE1hcmtlckRhdGEudmFsdWUoKSkpKS5i
cmlkZ2luZ0F1dG9yZWxlYXNlKCk7CiB9CiAKIC8vIFdoZW4gbW9kaWZ5aW5nIGF0dHJpYnV0ZWQg
c3RyaW5ncywgdGhlIHJhbmdlIGNhbiBjb21lIGZyb20gYSBzb3VyY2Ugd2hpY2ggbWF5IHByb3Zp
ZGUgZmF1bHR5IGluZm9ybWF0aW9uIChlLmcuIHRoZSBzcGVsbCBjaGVja2VyKS4KQEAgLTEwMTgs
MTEgKzEwMTgsOCBAQCBzdGF0aWMgdm9pZCBBWEF0dHJpYnV0ZVN0cmluZ1NldEVsZW1lbnQoTlNN
dXRhYmxlQXR0cmlidXRlZFN0cmluZyogYXR0clN0cmluZywgTgogICAgICAgICBpZiAoW2F0dHJp
YnV0ZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5QXR0YWNobWVudFRleHRBdHRyaWJ1
dGVdICYmIG9iamVjdC0+aXNBdHRhY2htZW50KCkgJiYgW29iamVjdFdyYXBwZXIgYXR0YWNobWVu
dFZpZXddKQogICAgICAgICAgICAgb2JqZWN0V3JhcHBlciA9IFtvYmplY3RXcmFwcGVyIGF0dGFj
aG1lbnRWaWV3XTsKICAgICAgICAgCi0gICAgICAgIEFYVUlFbGVtZW50UmVmIGF4RWxlbWVudCA9
IE5TQWNjZXNzaWJpbGl0eUNyZWF0ZUFYVUlFbGVtZW50UmVmKG9iamVjdFdyYXBwZXIpOwotICAg
ICAgICBpZiAoYXhFbGVtZW50KSB7Ci0gICAgICAgICAgICBbYXR0clN0cmluZyBhZGRBdHRyaWJ1
dGU6YXR0cmlidXRlIHZhbHVlOihfX2JyaWRnZSBpZClheEVsZW1lbnQgcmFuZ2U6cmFuZ2VdOwot
ICAgICAgICAgICAgQ0ZSZWxlYXNlKGF4RWxlbWVudCk7Ci0gICAgICAgIH0KKyAgICAgICAgaWYg
KGF1dG8gYXhFbGVtZW50ID0gYWRvcHRDRihOU0FjY2Vzc2liaWxpdHlDcmVhdGVBWFVJRWxlbWVu
dFJlZihvYmplY3RXcmFwcGVyKSkpCisgICAgICAgICAgICBbYXR0clN0cmluZyBhZGRBdHRyaWJ1
dGU6YXR0cmlidXRlIHZhbHVlOihfX2JyaWRnZSBpZClheEVsZW1lbnQuZ2V0KCkgcmFuZ2U6cmFu
Z2VdOwogICAgIH0gZWxzZQogICAgICAgICBbYXR0clN0cmluZyByZW1vdmVBdHRyaWJ1dGU6YXR0
cmlidXRlIHJhbmdlOnJhbmdlXTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvY29jb2EvSFRNTENvbnZlcnRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2Ev
SFRNTENvbnZlcnRlci5tbQppbmRleCA2NWU4NTUyNTI1MGQ0MGJhYzBjM2YzODU2Yjc4Mzk4MzYw
YzBiOTI0Li44Y2FmYTdjMzZlNmRkNjA1MDkyNzdkZTBhY2ZkMmMwMzE1NjhkMGMyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCkBAIC0yMDkwLDcg
KzIwOTAsNiBAQCB2b2lkIEhUTUxDb252ZXJ0ZXI6Ol9wcm9jZXNzVGV4dChDaGFyYWN0ZXJEYXRh
JiBjaGFyYWN0ZXJEYXRhKQogICAgIHVuaWNoYXIgbGFzdENoYXIgPSAodGV4dExlbmd0aCA+IDAp
ID8gW1tfYXR0clN0ciBzdHJpbmddIGNoYXJhY3RlckF0SW5kZXg6dGV4dExlbmd0aCAtIDFdIDog
J1xuJzsKICAgICBCT09MIHN1cHByZXNzTGVhZGluZ1NwYWNlID0gKChfZmxhZ3MuaXNTb2Z0ICYm
IGxhc3RDaGFyID09ICcgJykgfHwgbGFzdENoYXIgPT0gJ1xuJyB8fCBsYXN0Q2hhciA9PSAnXHIn
IHx8IGxhc3RDaGFyID09ICdcdCcgfHwgbGFzdENoYXIgPT0gTlNQYXJhZ3JhcGhTZXBhcmF0b3JD
aGFyYWN0ZXIgfHwgbGFzdENoYXIgPT0gTlNMaW5lU2VwYXJhdG9yQ2hhcmFjdGVyIHx8IGxhc3RD
aGFyID09IE5TRm9ybUZlZWRDaGFyYWN0ZXIgfHwgbGFzdENoYXIgPT0gV2ViTmV4dExpbmVDaGFy
YWN0ZXIpOwogICAgIE5TUmFuZ2UgcmFuZ2VUb1JlcGxhY2UgPSBOU01ha2VSYW5nZSh0ZXh0TGVu
Z3RoLCAwKTsKLSAgICBDRk11dGFibGVTdHJpbmdSZWYgbXV0c3RyID0gTlVMTDsKIAogICAgIFN0
cmluZyBvcmlnaW5hbFN0cmluZyA9IGNoYXJhY3RlckRhdGEuZGF0YSgpOwogICAgIHVuc2lnbmVk
IHN0YXJ0T2Zmc2V0ID0gMDsKQEAgLTIxNjAsOCArMjE1OSw2IEBAIHZvaWQgSFRNTENvbnZlcnRl
cjo6X3Byb2Nlc3NUZXh0KENoYXJhY3RlckRhdGEmIGNoYXJhY3RlckRhdGEpCiAgICAgICAgICAg
ICBbX2F0dHJTdHIgc2V0QXR0cmlidXRlczphZ2dyZWdhdGVkQXR0cmlidXRlc0ZvckFuY2VzdG9y
cyhjaGFyYWN0ZXJEYXRhKSByYW5nZTpyYW5nZVRvUmVwbGFjZV07CiAgICAgICAgIF9mbGFncy5p
c1NvZnQgPSB3YXNTcGFjZTsKICAgICB9Ci0gICAgaWYgKG11dHN0cikKLSAgICAgICAgQ0ZSZWxl
YXNlKG11dHN0cik7CiB9CiAKIHZvaWQgSFRNTENvbnZlcnRlcjo6X3RyYXZlcnNlTm9kZShOb2Rl
JiBub2RlLCB1bnNpZ25lZCBkZXB0aCwgYm9vbCBlbWJlZGRlZCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLm1tCmluZGV4IDk2ZjQ2
YzRjYzAyZTg5YTgyYTZkZjY1MzY3NGQwOTczNDMxODA1NGYuLmZhNGI5MDNiZWY5Mzk0ODFjMjJl
YTdkZjU1MWU4YjU1ZTdlMGU1MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
b2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5tbQpAQCAtMTAyLDEwICsxMDIsOSBAQCBEaXNr
Q2FjaGVNb25pdG9yOjpEaXNrQ2FjaGVNb25pdG9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdCwgUEFMOjpTZXNzaW9uSQogCiAjaWYgVVNFKFdFQl9USFJFQUQpCiAgICAgYXV0byBibG9j
a1RvUnVuID0gXihDRkNhY2hlZFVSTFJlc3BvbnNlUmVmIHJlc3BvbnNlKSB7Ci0gICAgICAgIENG
UmV0YWluKHJlc3BvbnNlKTsKKyAgICAgICAgYXV0byBzdHJvbmdSZXNwb25zZSA9IHJldGFpblB0
cihyZXNwb25zZSk7CiAgICAgICAgIFdlYlRocmVhZFJ1biheewotICAgICAgICAgICAgYmxvY2so
cmVzcG9uc2UpOwotICAgICAgICAgICAgQ0ZSZWxlYXNlKHJlc3BvbnNlKTsKKyAgICAgICAgICAg
IGJsb2NrKHN0cm9uZ1Jlc3BvbnNlLmdldCgpKTsKICAgICAgICAgfSk7CiAgICAgfTsKICNlbHNl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9FdmVudEhhbmRsZXJNYWMubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9FdmVudEhhbmRsZXJNYWMubW0KaW5kZXggYjI0OWU0
ZjRmZDk5MmI0ZTYxYWU3ZmVmOTAwMDhmNTY4ZjkxMGU5Yi4uOWQxMGE5ZmE3ZjE5ZDQwMjFjMTQ4
N2Q1ZWJjYTY1MDNhZWNhYzQyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMv
RXZlbnRIYW5kbGVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0V2ZW50SGFu
ZGxlck1hYy5tbQpAQCAtNDY4LDEzICs0NjgsMTIgQEAgc3RhdGljIHZvaWQgc2V0TlNTY3JvbGxW
aWV3U2Nyb2xsV2hlZWxTaG91bGRSZXRhaW5TZWxmKGJvb2wgc2hvdWxkUmV0YWluKQogCiBzdGF0
aWMgdm9pZCBzZWxmUmV0YWluaW5nTlNTY3JvbGxWaWV3U2Nyb2xsV2hlZWwoTlNTY3JvbGxWaWV3
ICpzZWxmLCBTRUwgc2VsZWN0b3IsIE5TRXZlbnQgKmV2ZW50KQogeworICAgIFJldGFpblB0cjxO
U1Njcm9sbFZpZXc+IHN0cm9uZ1NlbGY7CiAgICAgYm9vbCBzaG91bGRSZXRhaW5TZWxmID0gaXNN
YWluVGhyZWFkKCkgJiYgbnNTY3JvbGxWaWV3U2Nyb2xsV2hlZWxTaG91bGRSZXRhaW5TZWxmKCk7
Ci0KICAgICBpZiAoc2hvdWxkUmV0YWluU2VsZikKLSAgICAgICAgQ0ZSZXRhaW4oKF9fYnJpZGdl
IENGVHlwZVJlZilzZWxmKTsKKyAgICAgICAgc3Ryb25nU2VsZiA9IHJldGFpblB0cihzZWxmKTsK
KwogICAgIHd0ZkNhbGxJTVA8dm9pZD4ob3JpZ2luYWxOU1Njcm9sbFZpZXdTY3JvbGxXaGVlbCwg
c2VsZiwgc2VsZWN0b3IsIGV2ZW50KTsKLSAgICBpZiAoc2hvdWxkUmV0YWluU2VsZikKLSAgICAg
ICAgQ0ZSZWxlYXNlKChfX2JyaWRnZSBDRlR5cGVSZWYpc2VsZik7CiB9CiAKIGJvb2wgRXZlbnRI
YW5kbGVyOjpwYXNzV2hlZWxFdmVudFRvV2lkZ2V0KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYg
d2hlZWxFdmVudCwgV2lkZ2V0JiB3aWRnZXQsIE9wdGlvblNldDxXaGVlbEV2ZW50UHJvY2Vzc2lu
Z1N0ZXBzPiBwcm9jZXNzaW5nU3RlcHMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L3dpbi9GcmFtZUNHV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvd2luL0ZyYW1lQ0dXaW4u
Y3BwCmluZGV4IGYwNTU2YTNkYWIyYTkyOWZmYmRjYzNhMjBhNjE5Njc1NmI2NjdhMjEuLjczZDhi
NDljZWE3Y2E2NThkNTU0NmQzZWIxNTIyYWQzNGMwYWVjMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2Uvd2luL0ZyYW1lQ0dXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
d2luL0ZyYW1lQ0dXaW4uY3BwCkBAIC02OCwxNSArNjgsMTQgQEAgR0RJT2JqZWN0PEhCSVRNQVA+
IGltYWdlRnJvbVJlY3QoY29uc3QgRnJhbWUqIGZyYW1lLCBJbnRSZWN0JiBpcikKICAgICAgICAg
cmV0dXJuIGhibXA7CiAKICAgICBIR0RJT0JKIGhibXBPbGQgPSBTZWxlY3RPYmplY3QoaGRjLmdl
dCgpLCBoYm1wLmdldCgpKTsKLSAgICBDR0NvbnRleHRSZWYgY29udGV4dCA9IENHQml0bWFwQ29u
dGV4dENyZWF0ZShzdGF0aWNfY2FzdDx2b2lkKj4oYml0cyksIHcsIGgsCi0gICAgICAgIDgsIHcg
KiBzaXplb2YoUkdCUVVBRCksIHNSR0JDb2xvclNwYWNlUmVmKCksIGtDR0JpdG1hcEJ5dGVPcmRl
cjMyTGl0dGxlIHwga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRGaXJzdCk7Ci0gICAgQ0dDb250
ZXh0U2F2ZUdTdGF0ZShjb250ZXh0KTsKKyAgICBhdXRvIGNvbnRleHQgPSBhZG9wdENGKENHQml0
bWFwQ29udGV4dENyZWF0ZShzdGF0aWNfY2FzdDx2b2lkKj4oYml0cyksIHcsIGgsCisgICAgICAg
IDgsIHcgKiBzaXplb2YoUkdCUVVBRCksIHNSR0JDb2xvclNwYWNlUmVmKCksIGtDR0JpdG1hcEJ5
dGVPcmRlcjMyTGl0dGxlIHwga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRGaXJzdCkpOworICAg
IENHQ29udGV4dFNhdmVHU3RhdGUoY29udGV4dC5nZXQoKSk7CiAKLSAgICBHcmFwaGljc0NvbnRl
eHQgZ2MoY29udGV4dCk7CisgICAgR3JhcGhpY3NDb250ZXh0IGdjKGNvbnRleHQuZ2V0KCkpOwog
CiAgICAgZHJhd1JlY3RJbnRvQ29udGV4dChpciwgZnJhbWUtPnZpZXcoKSwgZ2MpOwogCi0gICAg
Q0dDb250ZXh0UmVsZWFzZShjb250ZXh0KTsKICAgICBTZWxlY3RPYmplY3QoaGRjLmdldCgpLCBo
Ym1wT2xkKTsKIAogICAgIGZyYW1lLT52aWV3KCktPnNldFBhaW50QmVoYXZpb3Iob2xkUGFpbnRC
ZWhhdmlvcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9NYWluVGhy
ZWFkU2hhcmVkVGltZXJDRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9NYWluVGhy
ZWFkU2hhcmVkVGltZXJDRi5jcHAKaW5kZXggMjhjZDliNzNmZTZiOGE4OGE5NDRhMjAyMDlkN2E3
YTBlMDVlMDEwNC4uNTQyMGE1YTg1OWZiY2JjYzA0ZjVkNWY5ODVmMDg3MmE1NDA1MTNiOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvTWFpblRocmVhZFNoYXJlZFRpbWVy
Q0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL01haW5UaHJlYWRTaGFyZWRU
aW1lckNGLmNwcApAQCAtMzcsNyArMzcsMTEgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1z
dGF0aWMgQ0ZSdW5Mb29wVGltZXJSZWYgc2hhcmVkVGltZXI7CitzdGF0aWMgUmV0YWluUHRyPENG
UnVuTG9vcFRpbWVyUmVmPiYgc2hhcmVkVGltZXIoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxSZXRhaW5QdHI8Q0ZSdW5Mb29wVGltZXJSZWY+PiBzaGFyZWRUaW1lcjsKKyAgICByZXR1
cm4gc2hhcmVkVGltZXI7Cit9CiBzdGF0aWMgdm9pZCB0aW1lckZpcmVkKENGUnVuTG9vcFRpbWVy
UmVmLCB2b2lkKik7CiAKIHN0YXRpYyBjb25zdCBDRlRpbWVJbnRlcnZhbCBrQ0ZUaW1lSW50ZXJ2
YWxEaXN0YW50RnV0dXJlID0gc3RkOjpudW1lcmljX2xpbWl0czxDRlRpbWVJbnRlcnZhbD46Om1h
eCgpOwpAQCAtODMsNyArODcsNyBAQCBzdGF0aWMgdm9pZCB0aW1lckZpcmVkKENGUnVuTG9vcFRp
bWVyUmVmLCB2b2lkKikKIAogdm9pZCBNYWluVGhyZWFkU2hhcmVkVGltZXI6OnJlc3RhcnRTaGFy
ZWRUaW1lcigpCiB7Ci0gICAgaWYgKCFzaGFyZWRUaW1lcikKKyAgICBpZiAoIXNoYXJlZFRpbWVy
KCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIE1haW5UaHJlYWRTaGFyZWRUaW1lcjo6c2luZ2xl
dG9uKCkuc3RvcCgpOwpAQCAtOTIsMTIgKzk2LDExIEBAIHZvaWQgTWFpblRocmVhZFNoYXJlZFRp
bWVyOjpyZXN0YXJ0U2hhcmVkVGltZXIoKQogCiB2b2lkIE1haW5UaHJlYWRTaGFyZWRUaW1lcjo6
aW52YWxpZGF0ZSgpCiB7Ci0gICAgaWYgKCFzaGFyZWRUaW1lcikKKyAgICBpZiAoIXNoYXJlZFRp
bWVyKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIENGUnVuTG9vcFRpbWVySW52YWxpZGF0ZShz
aGFyZWRUaW1lcik7Ci0gICAgQ0ZSZWxlYXNlKHNoYXJlZFRpbWVyKTsKLSAgICBzaGFyZWRUaW1l
ciA9IG51bGxwdHI7CisgICAgQ0ZSdW5Mb29wVGltZXJJbnZhbGlkYXRlKHNoYXJlZFRpbWVyKCku
Z2V0KCkpOworICAgIHNoYXJlZFRpbWVyKCkgPSBudWxscHRyOwogfQogCiB2b2lkIE1haW5UaHJl
YWRTaGFyZWRUaW1lcjo6c2V0RmlyZUludGVydmFsKFNlY29uZHMgaW50ZXJ2YWwpCkBAIC0xMDUs
MTIgKzEwOCwxMiBAQCB2b2lkIE1haW5UaHJlYWRTaGFyZWRUaW1lcjo6c2V0RmlyZUludGVydmFs
KFNlY29uZHMgaW50ZXJ2YWwpCiAgICAgQVNTRVJUKG1fZmlyZWRGdW5jdGlvbik7CiAKICAgICBD
RkFic29sdXRlVGltZSBmaXJlRGF0ZSA9IENGQWJzb2x1dGVUaW1lR2V0Q3VycmVudCgpICsgaW50
ZXJ2YWwudmFsdWUoKTsKLSAgICBpZiAoIXNoYXJlZFRpbWVyKSB7Ci0gICAgICAgIHNoYXJlZFRp
bWVyID0gQ0ZSdW5Mb29wVGltZXJDcmVhdGUobnVsbHB0ciwgZmlyZURhdGUsIGtDRlRpbWVJbnRl
cnZhbERpc3RhbnRGdXR1cmUsIDAsIDAsIHRpbWVyRmlyZWQsIG51bGxwdHIpOworICAgIGlmICgh
c2hhcmVkVGltZXIoKSkgeworICAgICAgICBzaGFyZWRUaW1lcigpID0gYWRvcHRDRihDRlJ1bkxv
b3BUaW1lckNyZWF0ZShudWxscHRyLCBmaXJlRGF0ZSwga0NGVGltZUludGVydmFsRGlzdGFudEZ1
dHVyZSwgMCwgMCwgdGltZXJGaXJlZCwgbnVsbHB0cikpOwogI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCi0gICAgICAgIENGUnVuTG9vcEFkZFRpbWVyKFdlYlRocmVhZFJ1bkxvb3AoKSwgc2hhcmVk
VGltZXIsIGtDRlJ1bkxvb3BDb21tb25Nb2Rlcyk7CisgICAgICAgIENGUnVuTG9vcEFkZFRpbWVy
KFdlYlRocmVhZFJ1bkxvb3AoKSwgc2hhcmVkVGltZXIoKS5nZXQoKSwga0NGUnVuTG9vcENvbW1v
bk1vZGVzKTsKICNlbHNlCi0gICAgICAgIENGUnVuTG9vcEFkZFRpbWVyKENGUnVuTG9vcEdldEN1
cnJlbnQoKSwgc2hhcmVkVGltZXIsIGtDRlJ1bkxvb3BDb21tb25Nb2Rlcyk7CisgICAgICAgIENG
UnVuTG9vcEFkZFRpbWVyKENGUnVuTG9vcEdldEN1cnJlbnQoKSwgc2hhcmVkVGltZXIoKS5nZXQo
KSwga0NGUnVuTG9vcENvbW1vbk1vZGVzKTsKICNlbmRpZgogCiAgICAgICAgIHNldHVwUG93ZXJP
YnNlcnZlcigpOwpAQCAtMTE4LDE1ICsxMjEsMTUgQEAgdm9pZCBNYWluVGhyZWFkU2hhcmVkVGlt
ZXI6OnNldEZpcmVJbnRlcnZhbChTZWNvbmRzIGludGVydmFsKQogICAgICAgICByZXR1cm47CiAg
ICAgfQogCi0gICAgQ0ZSdW5Mb29wVGltZXJTZXROZXh0RmlyZURhdGUoc2hhcmVkVGltZXIsIGZp
cmVEYXRlKTsKKyAgICBDRlJ1bkxvb3BUaW1lclNldE5leHRGaXJlRGF0ZShzaGFyZWRUaW1lcigp
LmdldCgpLCBmaXJlRGF0ZSk7CiB9CiAKIHZvaWQgTWFpblRocmVhZFNoYXJlZFRpbWVyOjpzdG9w
KCkKIHsKLSAgICBpZiAoIXNoYXJlZFRpbWVyKQorICAgIGlmICghc2hhcmVkVGltZXIoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgQ0ZSdW5Mb29wVGltZXJTZXROZXh0RmlyZURhdGUoc2hhcmVk
VGltZXIsIGtDRlRpbWVJbnRlcnZhbERpc3RhbnRGdXR1cmUpOworICAgIENGUnVuTG9vcFRpbWVy
U2V0TmV4dEZpcmVEYXRlKHNoYXJlZFRpbWVyKCkuZ2V0KCksIGtDRlRpbWVJbnRlcnZhbERpc3Rh
bnRGdXR1cmUpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
Qy5tbQppbmRleCA1NzYxYzA5OWIxZjE5NGZhMWYwZDgwM2M2OTVkMDQyZmJlNDQ4M2E5Li5lZTRk
ZWNlN2IyYzQ5MmZlYzc1Yjk4ZDJhYmQwMmUxMGI3YTQ5N2ZlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akMubW0KQEAgLTI4MTAsMTIgKzI4MTAsMTIgQEAgc3RhdGljIE5TU3RyaW5nICpleGVybmFsRGV2
aWNlRGlzcGxheU5hbWVGb3JQbGF5ZXIoQVZQbGF5ZXIgKnBsYXllcikKICAgICBpZiAocGxheWVy
LmV4dGVybmFsUGxheWJhY2tUeXBlICE9IEFWUGxheWVyRXh0ZXJuYWxQbGF5YmFja1R5cGVBaXJQ
bGF5KQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgTlNBcnJheSAqcGlja2FibGVSb3V0ZXMg
PSBDRkJyaWRnaW5nUmVsZWFzZShNUk1lZGlhUmVtb3RlQ29weVBpY2thYmxlUm91dGVzKCkpOwot
ICAgIGlmICghcGlja2FibGVSb3V0ZXMuY291bnQpCisgICAgYXV0byBwaWNrYWJsZVJvdXRlcyA9
IGFkb3B0Q0YoTVJNZWRpYVJlbW90ZUNvcHlQaWNrYWJsZVJvdXRlcygpKTsKKyAgICBpZiAoIXBp
Y2thYmxlUm91dGVzIHx8ICFDRkFycmF5R2V0Q291bnQocGlja2FibGVSb3V0ZXMuZ2V0KCkpKQog
ICAgICAgICByZXR1cm4gbmlsOwogCiAgICAgTlNTdHJpbmcgKmRpc3BsYXlOYW1lID0gbmlsOwot
ICAgIGZvciAoTlNEaWN0aW9uYXJ5ICpwaWNrYWJsZVJvdXRlIGluIHBpY2thYmxlUm91dGVzKSB7
CisgICAgZm9yIChOU0RpY3Rpb25hcnkgKnBpY2thYmxlUm91dGUgaW4gKF9fYnJpZGdlIE5TQXJy
YXkgKilwaWNrYWJsZVJvdXRlcy5nZXQoKSkgewogICAgICAgICBpZiAoIVtwaWNrYWJsZVJvdXRl
W0FWQ29udHJvbGxlcl9Sb3V0ZURlc2NyaXB0aW9uS2V5X1JvdXRlQ3VycmVudGx5UGlja2VkXSBi
b29sVmFsdWVdKQogICAgICAgICAgICAgY29udGludWU7CiAKQEAgLTI4MzAsNyArMjgzMCw3IEBA
IHN0YXRpYyBOU1N0cmluZyAqZXhlcm5hbERldmljZURpc3BsYXlOYW1lRm9yUGxheWVyKEFWUGxh
eWVyICpwbGF5ZXIpCiAKICAgICAgICAgLy8gSW4gY2FzZXMgd2hlcmUgYSByb3V0ZSB3aXRoIHRo
YXQgbmFtZSBhbHJlYWR5IGV4aXN0cywgcHJlZml4IHRoZSBuYW1lIHdpdGggdGhlIG1vZGVsLgog
ICAgICAgICBCT09MIGluY2x1ZGVMb2NhbGl6ZWREZXZpY2VNb2RlbE5hbWUgPSBOTzsKLSAgICAg
ICAgZm9yIChOU0RpY3Rpb25hcnkgKm90aGVyUm91dGUgaW4gcGlja2FibGVSb3V0ZXMpIHsKKyAg
ICAgICAgZm9yIChOU0RpY3Rpb25hcnkgKm90aGVyUm91dGUgaW4gKF9fYnJpZGdlIE5TQXJyYXkg
KilwaWNrYWJsZVJvdXRlcy5nZXQoKSkgewogICAgICAgICAgICAgaWYgKG90aGVyUm91dGUgPT0g
cGlja2FibGVSb3V0ZSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL0NBQ0ZMYXllclRyZWVIb3N0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9DQUNGTGF5ZXJU
cmVlSG9zdC5jcHAKaW5kZXggMTI5ZGRhMGRkYWJhMDgwYTU5MDE2MzA0ZmFkNGVjZmYzZTQ3Y2Vj
MC4uYTZiNzY4M2RlZTViNmUxNWQxNTg2NDM1ZmIzNzExYTE1OWQ0MmNhNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL0NBQ0ZMYXllclRyZWVIb3N0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vQ0FDRkxh
eWVyVHJlZUhvc3QuY3BwCkBAIC0xNTksOSArMTU5LDggQEAgdm9pZCBDQUNGTGF5ZXJUcmVlSG9z
dDo6aW5pdGlhbGl6ZSgpCiAgICAgbV9yb290TGF5ZXItPnNldEdlb21ldHJ5RmxpcHBlZCh0cnVl
KTsKIAogI2lmbmRlZiBOREVCVUcKLSAgICBDR0NvbG9yUmVmIGRlYnVnQ29sb3IgPSBDR0NvbG9y
Q3JlYXRlR2VuZXJpY1JHQigxLCAwLCAwLCAwLjgpOwotICAgIG1fcm9vdExheWVyLT5zZXRCYWNr
Z3JvdW5kQ29sb3IoZGVidWdDb2xvcik7Ci0gICAgQ0dDb2xvclJlbGVhc2UoZGVidWdDb2xvcik7
CisgICAgYXV0byBkZWJ1Z0NvbG9yID0gYWRvcHRDRihDR0NvbG9yQ3JlYXRlR2VuZXJpY1JHQigx
LCAwLCAwLCAwLjgpKTsKKyAgICBtX3Jvb3RMYXllci0+c2V0QmFja2dyb3VuZENvbG9yKGRlYnVn
Q29sb3IuZ2V0KCkpOwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAppbmRleCA5ZGI5MDlj
ZGE4ZWYxNzYxMGYyOTRhOTg1MDkxOGJjMTlhZTc5N2E5Li42NDQzYTcxNTc1OGQ2NzU4NGVlM2Rm
NDE0OTUzZTRmZTc1ODdjMWJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCkBAIC0zNDYsOSArMzQ2LDcg
QEAgc3RhdGljIHZvaWQgZHJhd1BhdHRlcm5DYWxsYmFjayh2b2lkKiBpbmZvLCBDR0NvbnRleHRS
ZWYgY29udGV4dCkKIAogc3RhdGljIHZvaWQgcGF0dGVyblJlbGVhc2VDYWxsYmFjayh2b2lkKiBp
bmZvKQogewotICAgIGNhbGxPbk1haW5UaHJlYWQoW2ltYWdlID0gc3RhdGljX2Nhc3Q8Q0dJbWFn
ZVJlZj4oaW5mbyldIHsKLSAgICAgICAgQ0dJbWFnZVJlbGVhc2UoaW1hZ2UpOwotICAgIH0pOwor
ICAgIGNhbGxPbk1haW5UaHJlYWQoW2ltYWdlID0gYWRvcHRDRihzdGF0aWNfY2FzdDxDR0ltYWdl
UmVmPihpbmZvKSldIHsgfSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3UGxhdGZv
cm1QYXR0ZXJuKGNvbnN0IFBsYXRmb3JtSW1hZ2VQdHImIGltYWdlLCBjb25zdCBGbG9hdFNpemUm
IGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiB0
aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBG
bG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBh
aW50aW5nT3B0aW9ucyYgb3B0aW9ucykKQEAgLTY3NSw4ICs2NzMsOCBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dDo6ZmlsbFBhdGgoY29uc3QgUGF0aCYgcGF0aCkKICAgICAgICAgICAgIEZsb2F0UmVj
dCByZWN0ID0gcGF0aC5mYXN0Qm91bmRpbmdSZWN0KCk7CiAgICAgICAgICAgICBGbG9hdFNpemUg
bGF5ZXJTaXplID0gZ2V0Q1RNKCkubWFwU2l6ZShyZWN0LnNpemUoKSk7CiAKLSAgICAgICAgICAg
IENHTGF5ZXJSZWYgbGF5ZXIgPSBDR0xheWVyQ3JlYXRlV2l0aENvbnRleHQoY29udGV4dCwgbGF5
ZXJTaXplLCAwKTsKLSAgICAgICAgICAgIENHQ29udGV4dFJlZiBsYXllckNvbnRleHQgPSBDR0xh
eWVyR2V0Q29udGV4dChsYXllcik7CisgICAgICAgICAgICBhdXRvIGxheWVyID0gYWRvcHRDRihD
R0xheWVyQ3JlYXRlV2l0aENvbnRleHQoY29udGV4dCwgbGF5ZXJTaXplLCAwKSk7CisgICAgICAg
ICAgICBDR0NvbnRleHRSZWYgbGF5ZXJDb250ZXh0ID0gQ0dMYXllckdldENvbnRleHQobGF5ZXIu
Z2V0KCkpOwogCiAgICAgICAgICAgICBDR0NvbnRleHRTY2FsZUNUTShsYXllckNvbnRleHQsIGxh
eWVyU2l6ZS53aWR0aCgpIC8gcmVjdC53aWR0aCgpLCBsYXllclNpemUuaGVpZ2h0KCkgLyByZWN0
LmhlaWdodCgpKTsKICAgICAgICAgICAgIENHQ29udGV4dFRyYW5zbGF0ZUNUTShsYXllckNvbnRl
eHQsIC1yZWN0LngoKSwgLXJlY3QueSgpKTsKQEAgLTY5MCw4ICs2ODgsNyBAQCB2b2lkIEdyYXBo
aWNzQ29udGV4dDo6ZmlsbFBhdGgoY29uc3QgUGF0aCYgcGF0aCkKICAgICAgICAgICAgICAgICBD
R0NvbnRleHRDbGlwKGxheWVyQ29udGV4dCk7CiAKICAgICAgICAgICAgIG1fc3RhdGUuZmlsbEdy
YWRpZW50LT5wYWludChsYXllckNvbnRleHQpOwotICAgICAgICAgICAgQ0dDb250ZXh0RHJhd0xh
eWVySW5SZWN0KGNvbnRleHQsIHJlY3QsIGxheWVyKTsKLSAgICAgICAgICAgIENHTGF5ZXJSZWxl
YXNlKGxheWVyKTsKKyAgICAgICAgICAgIENHQ29udGV4dERyYXdMYXllckluUmVjdChjb250ZXh0
LCByZWN0LCBsYXllci5nZXQoKSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBDR0Nv
bnRleHRCZWdpblBhdGgoY29udGV4dCk7CiAgICAgICAgICAgICBDR0NvbnRleHRBZGRQYXRoKGNv
bnRleHQsIHBhdGgucGxhdGZvcm1QYXRoKCkpOwpAQCAtNzQ1LDggKzc0Miw4IEBAIHZvaWQgR3Jh
cGhpY3NDb250ZXh0OjpzdHJva2VQYXRoKGNvbnN0IFBhdGgmIHBhdGgpCiAKICAgICAgICAgICAg
IEZsb2F0U2l6ZSBsYXllclNpemUgPSBnZXRDVE0oKS5tYXBTaXplKEZsb2F0U2l6ZShhZGp1c3Rl
ZFdpZHRoLCBhZGp1c3RlZEhlaWdodCkpOwogCi0gICAgICAgICAgICBDR0xheWVyUmVmIGxheWVy
ID0gQ0dMYXllckNyZWF0ZVdpdGhDb250ZXh0KGNvbnRleHQsIGxheWVyU2l6ZSwgMCk7Ci0gICAg
ICAgICAgICBDR0NvbnRleHRSZWYgbGF5ZXJDb250ZXh0ID0gQ0dMYXllckdldENvbnRleHQobGF5
ZXIpOworICAgICAgICAgICAgYXV0byBsYXllciA9IGFkb3B0Q0YoQ0dMYXllckNyZWF0ZVdpdGhD
b250ZXh0KGNvbnRleHQsIGxheWVyU2l6ZSwgMCkpOworICAgICAgICAgICAgQ0dDb250ZXh0UmVm
IGxheWVyQ29udGV4dCA9IENHTGF5ZXJHZXRDb250ZXh0KGxheWVyLmdldCgpKTsKICAgICAgICAg
ICAgIENHQ29udGV4dFNldExpbmVXaWR0aChsYXllckNvbnRleHQsIGxpbmVXaWR0aCk7CiAKICAg
ICAgICAgICAgIC8vIENvbXBlbnNhdGUgZm9yIHRoZSBsaW5lIHdpZHRoLCBvdGhlcndpc2UgdGhl
IGxheWVyJ3MgdG9wLWxlZnQgY29ybmVyIHdvdWxkIGJlCkBAIC03NjUsOCArNzYyLDcgQEAgdm9p
ZCBHcmFwaGljc0NvbnRleHQ6OnN0cm9rZVBhdGgoY29uc3QgUGF0aCYgcGF0aCkKIAogICAgICAg
ICAgICAgZmxvYXQgZGVzdGluYXRpb25YID0gcm91bmRmKHJlY3QueCgpIC0gbGluZVdpZHRoKTsK
ICAgICAgICAgICAgIGZsb2F0IGRlc3RpbmF0aW9uWSA9IHJvdW5kZihyZWN0LnkoKSAtIGxpbmVX
aWR0aCk7Ci0gICAgICAgICAgICBDR0NvbnRleHREcmF3TGF5ZXJJblJlY3QoY29udGV4dCwgQ0dS
ZWN0TWFrZShkZXN0aW5hdGlvblgsIGRlc3RpbmF0aW9uWSwgYWRqdXN0ZWRXaWR0aCwgYWRqdXN0
ZWRIZWlnaHQpLCBsYXllcik7Ci0gICAgICAgICAgICBDR0xheWVyUmVsZWFzZShsYXllcik7Cisg
ICAgICAgICAgICBDR0NvbnRleHREcmF3TGF5ZXJJblJlY3QoY29udGV4dCwgQ0dSZWN0TWFrZShk
ZXN0aW5hdGlvblgsIGRlc3RpbmF0aW9uWSwgYWRqdXN0ZWRXaWR0aCwgYWRqdXN0ZWRIZWlnaHQp
LCBsYXllci5nZXQoKSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBDR0NvbnRleHRT
dGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7CiAgICAgICAgICAgICBDR0NvbnRleHRCZWdp
blBhdGgoY29udGV4dCk7CkBAIC04MTcsOCArODEzLDggQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6
OmZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKICAgICAgICAgaWYgKGhhc1NoYWRvdygp
KSB7CiAgICAgICAgICAgICBGbG9hdFNpemUgbGF5ZXJTaXplID0gZ2V0Q1RNKCkubWFwU2l6ZShy
ZWN0LnNpemUoKSk7CiAKLSAgICAgICAgICAgIENHTGF5ZXJSZWYgbGF5ZXIgPSBDR0xheWVyQ3Jl
YXRlV2l0aENvbnRleHQoY29udGV4dCwgbGF5ZXJTaXplLCAwKTsKLSAgICAgICAgICAgIENHQ29u
dGV4dFJlZiBsYXllckNvbnRleHQgPSBDR0xheWVyR2V0Q29udGV4dChsYXllcik7CisgICAgICAg
ICAgICBhdXRvIGxheWVyID0gYWRvcHRDRihDR0xheWVyQ3JlYXRlV2l0aENvbnRleHQoY29udGV4
dCwgbGF5ZXJTaXplLCAwKSk7CisgICAgICAgICAgICBDR0NvbnRleHRSZWYgbGF5ZXJDb250ZXh0
ID0gQ0dMYXllckdldENvbnRleHQobGF5ZXIuZ2V0KCkpOwogCiAgICAgICAgICAgICBDR0NvbnRl
eHRTY2FsZUNUTShsYXllckNvbnRleHQsIGxheWVyU2l6ZS53aWR0aCgpIC8gcmVjdC53aWR0aCgp
LCBsYXllclNpemUuaGVpZ2h0KCkgLyByZWN0LmhlaWdodCgpKTsKICAgICAgICAgICAgIENHQ29u
dGV4dFRyYW5zbGF0ZUNUTShsYXllckNvbnRleHQsIC1yZWN0LngoKSwgLXJlY3QueSgpKTsKQEAg
LTgyNyw4ICs4MjMsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3QoY29uc3QgRmxv
YXRSZWN0JiByZWN0KQogCiAgICAgICAgICAgICBDR0NvbnRleHRDb25jYXRDVE0obGF5ZXJDb250
ZXh0LCBtX3N0YXRlLmZpbGxHcmFkaWVudFNwYWNlVHJhbnNmb3JtKTsKICAgICAgICAgICAgIG1f
c3RhdGUuZmlsbEdyYWRpZW50LT5wYWludChsYXllckNvbnRleHQpOwotICAgICAgICAgICAgQ0dD
b250ZXh0RHJhd0xheWVySW5SZWN0KGNvbnRleHQsIHJlY3QsIGxheWVyKTsKLSAgICAgICAgICAg
IENHTGF5ZXJSZWxlYXNlKGxheWVyKTsKKyAgICAgICAgICAgIENHQ29udGV4dERyYXdMYXllcklu
UmVjdChjb250ZXh0LCByZWN0LCBsYXllci5nZXQoKSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAg
ICAgICAgICBDR0NvbnRleHRDbGlwVG9SZWN0KGNvbnRleHQsIHJlY3QpOwogICAgICAgICAgICAg
Q0dDb250ZXh0Q29uY2F0Q1RNKGNvbnRleHQsIG1fc3RhdGUuZmlsbEdyYWRpZW50U3BhY2VUcmFu
c2Zvcm0pOwpAQCAtMTIyNiw5ICsxMjIxLDkgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnN0cm9r
ZVJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBmbG9hdCBsaW5lV2lkdGgpCiAgICAgICAgICAg
ICBmbG9hdCBhZGp1c3RlZEhlaWdodCA9IGNlaWxmKHJlY3QuaGVpZ2h0KCkgKyBkb3VibGVMaW5l
V2lkdGgpOwogICAgICAgICAgICAgRmxvYXRTaXplIGxheWVyU2l6ZSA9IGdldENUTSgpLm1hcFNp
emUoRmxvYXRTaXplKGFkanVzdGVkV2lkdGgsIGFkanVzdGVkSGVpZ2h0KSk7CiAKLSAgICAgICAg
ICAgIENHTGF5ZXJSZWYgbGF5ZXIgPSBDR0xheWVyQ3JlYXRlV2l0aENvbnRleHQoY29udGV4dCwg
bGF5ZXJTaXplLCAwKTsKKyAgICAgICAgICAgIGF1dG8gbGF5ZXIgPSBhZG9wdENGKENHTGF5ZXJD
cmVhdGVXaXRoQ29udGV4dChjb250ZXh0LCBsYXllclNpemUsIDApKTsKIAotICAgICAgICAgICAg
Q0dDb250ZXh0UmVmIGxheWVyQ29udGV4dCA9IENHTGF5ZXJHZXRDb250ZXh0KGxheWVyKTsKKyAg
ICAgICAgICAgIENHQ29udGV4dFJlZiBsYXllckNvbnRleHQgPSBDR0xheWVyR2V0Q29udGV4dChs
YXllci5nZXQoKSk7CiAgICAgICAgICAgICBtX3N0YXRlLnN0cm9rZVRoaWNrbmVzcyA9IGxpbmVX
aWR0aDsKICAgICAgICAgICAgIENHQ29udGV4dFNldExpbmVXaWR0aChsYXllckNvbnRleHQsIGxp
bmVXaWR0aCk7CiAKQEAgLTEyNDgsOCArMTI0Myw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Ojpz
dHJva2VSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgZmxvYXQgbGluZVdpZHRoKQogCiAgICAg
ICAgICAgICBjb25zdCBmbG9hdCBkZXN0aW5hdGlvblggPSByb3VuZGYocmVjdC54KCkgLSBsaW5l
V2lkdGgpOwogICAgICAgICAgICAgY29uc3QgZmxvYXQgZGVzdGluYXRpb25ZID0gcm91bmRmKHJl
Y3QueSgpIC0gbGluZVdpZHRoKTsKLSAgICAgICAgICAgIENHQ29udGV4dERyYXdMYXllckluUmVj
dChjb250ZXh0LCBDR1JlY3RNYWtlKGRlc3RpbmF0aW9uWCwgZGVzdGluYXRpb25ZLCBhZGp1c3Rl
ZFdpZHRoLCBhZGp1c3RlZEhlaWdodCksIGxheWVyKTsKLSAgICAgICAgICAgIENHTGF5ZXJSZWxl
YXNlKGxheWVyKTsKKyAgICAgICAgICAgIENHQ29udGV4dERyYXdMYXllckluUmVjdChjb250ZXh0
LCBDR1JlY3RNYWtlKGRlc3RpbmF0aW9uWCwgZGVzdGluYXRpb25ZLCBhZGp1c3RlZFdpZHRoLCBh
ZGp1c3RlZEhlaWdodCksIGxheWVyLmdldCgpKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAg
ICAgIENHQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsKICAgICAgICAgICAg
IHNldFN0cm9rZVRoaWNrbmVzcyhsaW5lV2lkdGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0dGVybkNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL1BhdHRlcm5DRy5jcHAKaW5kZXggZjFiOWUzYTdjMDU1NjlhOTg5
MWI2OThkMjgzYWI1Mzk3YzcyNWY1NC4uM2FlYzc3NTZkYjhjZDI1MGFmZWYxMGQ4M2ZkZWIxZGNj
OTNjZjljMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
UGF0dGVybkNHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Q
YXR0ZXJuQ0cuY3BwCkBAIC01MCw5ICs1MCw3IEBAIHN0YXRpYyB2b2lkIHBhdHRlcm5DYWxsYmFj
ayh2b2lkKiBpbmZvLCBDR0NvbnRleHRSZWYgY29udGV4dCkKIAogc3RhdGljIHZvaWQgcGF0dGVy
blJlbGVhc2VDYWxsYmFjayh2b2lkKiBpbmZvKQogewotICAgIGNhbGxPbk1haW5UaHJlYWQoW2lt
YWdlID0gc3RhdGljX2Nhc3Q8Q0dJbWFnZVJlZj4oaW5mbyldIHsKLSAgICAgICAgQ0dJbWFnZVJl
bGVhc2UoaW1hZ2UpOwotICAgIH0pOworICAgIGNhbGxPbk1haW5UaHJlYWQoW2ltYWdlID0gYWRv
cHRDRihzdGF0aWNfY2FzdDxDR0ltYWdlUmVmPihpbmZvKSldIHsgfSk7CiB9CiAKIENHUGF0dGVy
blJlZiBQYXR0ZXJuOjpjcmVhdGVQbGF0Zm9ybVBhdHRlcm4oY29uc3QgQWZmaW5lVHJhbnNmb3Jt
JiB1c2VyU3BhY2VUcmFuc2Zvcm0pIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5jcHAKaW5kZXgg
OTljYmNmZDBiNmRhMTVjZTMyMDg3NzVkMTViNWRkYmI2YWFjOGYwZS4uZmE3N2IzOTk3N2RiOTc4
YTA1OTcxYjZjMjVjNDFmMzcyZGU1MjRiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcApAQCAt
MTI3OSw4ICsxMjc5LDcgQEAgc3RhdGljIHZvaWQgYXV0b0FjdGl2YXRlRm9udChjb25zdCBTdHJp
bmcmIG5hbWUsIENHRmxvYXQgc2l6ZSkKICAgICBDRlR5cGVSZWYgdmFsdWVzW10gPSB7IGZvbnRO
YW1lLmdldCgpIH07CiAgICAgYXV0byBhdHRyaWJ1dGVzID0gYWRvcHRDRihDRkRpY3Rpb25hcnlD
cmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwga2V5cywgdmFsdWVzLCBXVEZfQVJSQVlfTEVOR1RI
KGtleXMpLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFy
eVZhbHVlQ2FsbEJhY2tzKSk7CiAgICAgYXV0byBkZXNjcmlwdG9yID0gYWRvcHRDRihDVEZvbnRE
ZXNjcmlwdG9yQ3JlYXRlV2l0aEF0dHJpYnV0ZXMoYXR0cmlidXRlcy5nZXQoKSkpOwotICAgIGlm
IChhdXRvIG5ld0ZvbnQgPSBDVEZvbnRDcmVhdGVXaXRoRm9udERlc2NyaXB0b3IoZGVzY3JpcHRv
ci5nZXQoKSwgc2l6ZSwgbnVsbHB0cikpCi0gICAgICAgIENGUmVsZWFzZShuZXdGb250KTsKKyAg
ICBhdXRvIG5ld0ZvbnQgPSBhZG9wdENGKENURm9udENyZWF0ZVdpdGhGb250RGVzY3JpcHRvcihk
ZXNjcmlwdG9yLmdldCgpLCBzaXplLCBudWxscHRyKSk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDR1dpbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udENHV2luLmNwcAppbmRleCA1
M2FjN2UyMDAxOGExYjhhOTUwZGM3NDkyNjg1ZDI3NWY4YWJiMTZlLi5jMTllNzQxNTU3YzMwOGM5
NDFlNGVmNzE1ZTNkYjQ2NTk0ZDE4NWI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vRm9udENHV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vRm9udENHV2luLmNwcApAQCAtNDA5LDUwICs0MDksMzYgQEAgdm9p
ZCBGb250Q2FzY2FkZTo6Z2V0UGxhdGZvcm1HbHlwaEFkdmFuY2VzKENHRm9udFJlZiBmb250LCBj
b25zdCBDR0FmZmluZVRyYW5zZm8KIAogICAgIC8vIDxyZGFyOi8vcHJvYmxlbS83NzYxMTY1PiBU
aGUgR0RJIGJhY2sgZW5kIGluIENvcmUgR3JhcGhpY3Mgc29tZXRpbWVzIHJldHVybnMgYWR2YW5j
ZXMgdGhhdAogICAgIC8vIGRpZmZlciBmcm9tIHdoYXQgdGhlIGZvbnQncyBobXR4IHRhYmxlIHNw
ZWNpZmllcy4gVGhlIGZvbGxvd2luZyBjb2RlIGNvcnJlY3RzIHRoYXQuCi0gICAgQ0ZEYXRhUmVm
IGhtdHhUYWJsZSA9IENHRm9udENvcHlUYWJsZUZvclRhZyhmb250LCAnaG10eCcpOworICAgIGF1
dG8gaG10eFRhYmxlID0gYWRvcHRDRihDR0ZvbnRDb3B5VGFibGVGb3JUYWcoZm9udCwgJ2htdHgn
KSk7CiAgICAgaWYgKCFobXR4VGFibGUpCiAgICAgICAgIHJldHVybjsKLSAgICBDRkRhdGFSZWYg
aGhlYVRhYmxlID0gQ0dGb250Q29weVRhYmxlRm9yVGFnKGZvbnQsICdoaGVhJyk7Ci0gICAgaWYg
KCFoaGVhVGFibGUpIHsKLSAgICAgICAgQ0ZSZWxlYXNlKGhtdHhUYWJsZSk7CisgICAgYXV0byBo
aGVhVGFibGUgPSBhZG9wdENGKENHRm9udENvcHlUYWJsZUZvclRhZyhmb250LCAnaGhlYScpKTsK
KyAgICBpZiAoIWhoZWFUYWJsZSkKICAgICAgICAgcmV0dXJuOwotICAgIH0KIAogICAgIGNvbnN0
IENGSW5kZXggaGhlYVRhYmxlU2l6ZSA9IDM2OwogICAgIGNvbnN0IHB0cmRpZmZfdCBoaGVhVGFi
bGVOdW1iZXJPZkhNZXRyaWNzT2Zmc2V0ID0gMzQ7Ci0gICAgaWYgKENGRGF0YUdldExlbmd0aCho
aGVhVGFibGUpIDwgaGhlYVRhYmxlU2l6ZSkgewotICAgICAgICBDRlJlbGVhc2UoaG10eFRhYmxl
KTsKLSAgICAgICAgQ0ZSZWxlYXNlKGhoZWFUYWJsZSk7CisgICAgaWYgKENGRGF0YUdldExlbmd0
aChoaGVhVGFibGUuZ2V0KCkpIDwgaGhlYVRhYmxlU2l6ZSkKICAgICAgICAgcmV0dXJuOwotICAg
IH0KIAotICAgIHVuc2lnbmVkIHNob3J0IG51bWJlck9mSE1ldHJpY3MgPSAqcmVpbnRlcnByZXRf
Y2FzdDxjb25zdCB1bnNpZ25lZCBzaG9ydCo+KENGRGF0YUdldEJ5dGVQdHIoaGhlYVRhYmxlKSAr
IGhoZWFUYWJsZU51bWJlck9mSE1ldHJpY3NPZmZzZXQpOworICAgIHVuc2lnbmVkIHNob3J0IG51
bWJlck9mSE1ldHJpY3MgPSAqcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1bnNpZ25lZCBzaG9ydCo+
KENGRGF0YUdldEJ5dGVQdHIoaGhlYVRhYmxlLmdldCgpKSArIGhoZWFUYWJsZU51bWJlck9mSE1l
dHJpY3NPZmZzZXQpOwogICAgIG51bWJlck9mSE1ldHJpY3MgPSAoKG51bWJlck9mSE1ldHJpY3Mg
JiAweEZGKSA8PCA4KSB8IChudW1iZXJPZkhNZXRyaWNzID4+IDgpOwotICAgIGlmICghbnVtYmVy
T2ZITWV0cmljcykgewotICAgICAgICBDRlJlbGVhc2UoaG10eFRhYmxlKTsKLSAgICAgICAgQ0ZS
ZWxlYXNlKGhoZWFUYWJsZSk7CisgICAgaWYgKCFudW1iZXJPZkhNZXRyaWNzKQogICAgICAgICBy
ZXR1cm47Ci0gICAgfQogCiAgICAgaWYgKGdseXBoID49IG51bWJlck9mSE1ldHJpY3MpCiAgICAg
ICAgIGdseXBoID0gbnVtYmVyT2ZITWV0cmljcyAtIDE7CiAKLSAgICBpZiAoQ0ZEYXRhR2V0TGVu
Z3RoKGhtdHhUYWJsZSkgPCA0ICogKGdseXBoICsgMSkpIHsKLSAgICAgICAgQ0ZSZWxlYXNlKGht
dHhUYWJsZSk7Ci0gICAgICAgIENGUmVsZWFzZShoaGVhVGFibGUpOworICAgIGlmIChDRkRhdGFH
ZXRMZW5ndGgoaG10eFRhYmxlLmdldCgpKSA8IDQgKiAoZ2x5cGggKyAxKSkKICAgICAgICAgcmV0
dXJuOwotICAgIH0KIAotICAgIHVuc2lnbmVkIHNob3J0IGFkdmFuY2VJbkRlc2lnblVuaXRzID0g
KnJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdW5zaWduZWQgc2hvcnQqPihDRkRhdGFHZXRCeXRlUHRy
KGhtdHhUYWJsZSkgKyA0ICogZ2x5cGgpOworICAgIHVuc2lnbmVkIHNob3J0IGFkdmFuY2VJbkRl
c2lnblVuaXRzID0gKnJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdW5zaWduZWQgc2hvcnQqPihDRkRh
dGFHZXRCeXRlUHRyKGhtdHhUYWJsZS5nZXQoKSkgKyA0ICogZ2x5cGgpOwogICAgIGFkdmFuY2VJ
bkRlc2lnblVuaXRzID0gKChhZHZhbmNlSW5EZXNpZ25Vbml0cyAmIDB4RkYpIDw8IDgpIHwgKGFk
dmFuY2VJbkRlc2lnblVuaXRzID4+IDgpOwogICAgIENHU2l6ZSBob3Jpem9udGFsQWR2YW5jZSA9
IENHU2l6ZU1ha2Uoc3RhdGljX2Nhc3Q8Q0dGbG9hdD4oYWR2YW5jZUluRGVzaWduVW5pdHMpIC8g
Q0dGb250R2V0VW5pdHNQZXJFbShmb250KSwgMCk7CiAgICAgaG9yaXpvbnRhbEFkdmFuY2UgPSBD
R1NpemVBcHBseUFmZmluZVRyYW5zZm9ybShob3Jpem9udGFsQWR2YW5jZSwgbSk7CiAgICAgYWR2
YW5jZS53aWR0aCA9IGhvcml6b250YWxBZHZhbmNlLndpZHRoOwogICAgIGlmICghKHN0eWxlICYg
a0NHRm9udFJlbmRlcmluZ1N0eWxlU3VicGl4ZWxQb3NpdGlvbmluZykpCiAgICAgICAgIGFkdmFu
Y2Uud2lkdGggPSByb3VuZGYoYWR2YW5jZS53aWR0aCk7Ci0KLSAgICBDRlJlbGVhc2UoaGhlYVRh
YmxlKTsKLSAgICBDRlJlbGVhc2UoaG10eFRhYmxlKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dENHV2luLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRD
R1dpbi5jcHAKaW5kZXggMzE3ZjhkMDQ1ZDMyOTNhNzhjN2ExYjc1NTQ0NmQwNWRlNDlhMjdjMy4u
Y2VkYjAyZWI5ZTFmOTViZjkwMzMxMTNiYTYwNWQ5Y2NmZmY4NjllOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dENHV2luLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250
ZXh0Q0dXaW4uY3BwCkBAIC0xMDcsMTYgKzEwNywxNCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6
cmVsZWFzZVdpbmRvd3NDb250ZXh0KEhEQyBoZGMsIGNvbnN0IEludFJlY3QmIGRzdFJlY3QsIGJv
bwogCiAgICAgQVNTRVJUKHBpeGVsRGF0YS5iaXRzUGVyUGl4ZWwoKSA9PSAzMik7CiAKLSAgICBD
R0NvbnRleHRSZWYgYml0bWFwQ29udGV4dCA9IENHQml0bWFwQ29udGV4dENyZWF0ZShwaXhlbERh
dGEuYnVmZmVyKCksIHBpeGVsRGF0YS5zaXplKCkud2lkdGgoKSwgcGl4ZWxEYXRhLnNpemUoKS5o
ZWlnaHQoKSwgOCwKKyAgICBhdXRvIGJpdG1hcENvbnRleHQgPSBhZG9wdENGKENHQml0bWFwQ29u
dGV4dENyZWF0ZShwaXhlbERhdGEuYnVmZmVyKCksIHBpeGVsRGF0YS5zaXplKCkud2lkdGgoKSwg
cGl4ZWxEYXRhLnNpemUoKS5oZWlnaHQoKSwgOCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaXhlbERhdGEuYnl0ZXNQZXJSb3coKSwgc1JH
QkNvbG9yU3BhY2VSZWYoKSwga0NHQml0bWFwQnl0ZU9yZGVyMzJMaXR0bGUgfAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzdXBwb3J0QWxw
aGFCbGVuZCA/IGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkRmlyc3QgOiBrQ0dJbWFnZUFscGhh
Tm9uZVNraXBGaXJzdCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIChzdXBwb3J0QWxwaGFCbGVuZCA/IGtDR0ltYWdlQWxwaGFQcmVtdWx0
aXBsaWVkRmlyc3QgOiBrQ0dJbWFnZUFscGhhTm9uZVNraXBGaXJzdCkpKTsKIAotICAgIENHSW1h
Z2VSZWYgaW1hZ2UgPSBDR0JpdG1hcENvbnRleHRDcmVhdGVJbWFnZShiaXRtYXBDb250ZXh0KTsK
LSAgICBDR0NvbnRleHREcmF3SW1hZ2UobV9kYXRhLT5tX2NnQ29udGV4dC5nZXQoKSwgZHN0UmVj
dCwgaW1hZ2UpOworICAgIGF1dG8gaW1hZ2UgPSBhZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0
ZUltYWdlKGJpdG1hcENvbnRleHQuZ2V0KCkpKTsKKyAgICBDR0NvbnRleHREcmF3SW1hZ2UobV9k
YXRhLT5tX2NnQ29udGV4dC5nZXQoKSwgZHN0UmVjdCwgaW1hZ2UuZ2V0KCkpOwogICAgIAogICAg
IC8vIERlbGV0ZSBhbGwgb3VyIGp1bmsuCi0gICAgQ0dJbWFnZVJlbGVhc2UoaW1hZ2UpOwotICAg
IENHQ29udGV4dFJlbGVhc2UoYml0bWFwQ29udGV4dCk7CiAgICAgOjpEZWxldGVEQyhoZGMpOwog
fQogCkBAIC0xNDcsMTYgKzE0NSwxNiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ZvY3Vz
UmluZyhjb25zdCBWZWN0b3I8RmxvYXRSZWN0PiYgcmVjdHMsIGZsb2F0IHdpZHRoLAogICAgIG9m
ZnNldCArPSByYWRpdXM7CiAgICAgQ0dDb2xvclJlZiBjb2xvclJlZiA9IGNvbG9yLmlzVmFsaWQo
KSA/IGNhY2hlZENHQ29sb3IoY29sb3IpIDogbnVsbHB0cjsKIAotICAgIENHTXV0YWJsZVBhdGhS
ZWYgZm9jdXNSaW5nUGF0aCA9IENHUGF0aENyZWF0ZU11dGFibGUoKTsKKyAgICBhdXRvIGZvY3Vz
UmluZ1BhdGggPSBhZG9wdENGKENHUGF0aENyZWF0ZU11dGFibGUoKSk7CiAgICAgdW5zaWduZWQg
cmVjdENvdW50ID0gcmVjdHMuc2l6ZSgpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBy
ZWN0Q291bnQ7IGkrKykKLSAgICAgICAgQ0dQYXRoQWRkUmVjdChmb2N1c1JpbmdQYXRoLCAwLCBD
R1JlY3RJbnNldChyZWN0c1tpXSwgLW9mZnNldCwgLW9mZnNldCkpOworICAgICAgICBDR1BhdGhB
ZGRSZWN0KGZvY3VzUmluZ1BhdGguZ2V0KCksIDAsIENHUmVjdEluc2V0KHJlY3RzW2ldLCAtb2Zm
c2V0LCAtb2Zmc2V0KSk7CiAKICAgICBDR0NvbnRleHRSZWYgY29udGV4dCA9IHBsYXRmb3JtQ29u
dGV4dCgpOwogICAgIENHQ29udGV4dFNhdmVHU3RhdGUoY29udGV4dCk7CiAKICAgICBDR0NvbnRl
eHRCZWdpblBhdGgoY29udGV4dCk7Ci0gICAgQ0dDb250ZXh0QWRkUGF0aChjb250ZXh0LCBmb2N1
c1JpbmdQYXRoKTsKKyAgICBDR0NvbnRleHRBZGRQYXRoKGNvbnRleHQsIGZvY3VzUmluZ1BhdGgu
Z2V0KCkpOwogCiAgICAgLy8gRklYTUU6IFdlIGNsZWFyIHRoZSBmaWxsIGNvbG9yIGhlcmUgdG8g
YXZvaWQgZ2V0dGluZyBhIGJsYWNrIGZpbGwgd2hlbiBkcmF3aW5nIHRoZSBmb2N1cyByaW5nLgog
ICAgIC8vIEZpbmQgb3V0IGZyb20gQ0cgaWYgdGhpcyBpcyB0aGVpciBidWcuCkBAIC0xNjUsOCAr
MTYzLDYgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdGb2N1c1JpbmcoY29uc3QgVmVjdG9y
PEZsb2F0UmVjdD4mIHJlY3RzLCBmbG9hdCB3aWR0aCwKICAgICBDR0NvbnRleHRTZXRGb2N1c1Jp
bmdXaXRoQ29sb3IoY29udGV4dCwgcmFkaXVzLCBjb2xvclJlZiwgMCwgKENGRGljdGlvbmFyeVJl
ZikwKTsKICAgICBDR0NvbnRleHRGaWxsUGF0aChjb250ZXh0KTsKIAotICAgIENHUGF0aFJlbGVh
c2UoZm9jdXNSaW5nUGF0aCk7Ci0KICAgICBDR0NvbnRleHRSZXN0b3JlR1N0YXRlKGNvbnRleHQp
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
SW1hZ2VDR1dpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1h
Z2VDR1dpbi5jcHAKaW5kZXggNmRhYmYyNDEzZmVkMzU3NTlhYjAzOTUzZGE0MzcyMmM4ZDQxNmZk
Ni4uZjhhMTBkNWM0MzZlNzA2MDg5ODcwN2JhOGI2NTQ2NDFjZTJiZGY1NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQ0dXaW4uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNHV2luLmNwcApAQCAt
NzAsMTAgKzcwLDEwIEBAIGJvb2wgQml0bWFwSW1hZ2U6OmdldEhCSVRNQVBPZlNpemUoSEJJVE1B
UCBibXAsIGNvbnN0IEludFNpemUqIHNpemUpCiAgICAgQVNTRVJUKGJtcEluZm8uYm1CaXRzUGl4
ZWwgPT0gMzIpOwogICAgIGludCBidWZmZXJTaXplID0gYm1wSW5mby5ibVdpZHRoQnl0ZXMgKiBi
bXBJbmZvLmJtSGVpZ2h0OwogICAgIAotICAgIENHQ29udGV4dFJlZiBjZ0NvbnRleHQgPSBDR0Jp
dG1hcENvbnRleHRDcmVhdGUoYm1wSW5mby5ibUJpdHMsIGJtcEluZm8uYm1XaWR0aCwgYm1wSW5m
by5ibUhlaWdodCwKLSAgICAgICAgOCwgYm1wSW5mby5ibVdpZHRoQnl0ZXMsIHNSR0JDb2xvclNw
YWNlUmVmKCksIGtDR0JpdG1hcEJ5dGVPcmRlcjMyTGl0dGxlIHwga0NHSW1hZ2VBbHBoYVByZW11
bHRpcGxpZWRGaXJzdCk7CisgICAgYXV0byBjZ0NvbnRleHQgPSBhZG9wdENGKENHQml0bWFwQ29u
dGV4dENyZWF0ZShibXBJbmZvLmJtQml0cywgYm1wSW5mby5ibVdpZHRoLCBibXBJbmZvLmJtSGVp
Z2h0LAorICAgICAgICA4LCBibXBJbmZvLmJtV2lkdGhCeXRlcywgc1JHQkNvbG9yU3BhY2VSZWYo
KSwga0NHQml0bWFwQnl0ZU9yZGVyMzJMaXR0bGUgfCBrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGll
ZEZpcnN0KSk7CiAgIAotICAgIEdyYXBoaWNzQ29udGV4dCBnYyhjZ0NvbnRleHQpOworICAgIEdy
YXBoaWNzQ29udGV4dCBnYyhjZ0NvbnRleHQuZ2V0KCkpOwogCiAgICAgRmxvYXRTaXplIGltYWdl
U2l6ZSA9IEJpdG1hcEltYWdlOjpzaXplKCk7CiAgICAgaWYgKHNpemUpCkBAIC04MSw5ICs4MSw2
IEBAIGJvb2wgQml0bWFwSW1hZ2U6OmdldEhCSVRNQVBPZlNpemUoSEJJVE1BUCBibXAsIGNvbnN0
IEludFNpemUqIHNpemUpCiAgICAgZWxzZQogICAgICAgICBkcmF3KGdjLCBGbG9hdFJlY3QoMC4w
ZiwgMC4wZiwgYm1wSW5mby5ibVdpZHRoLCBibXBJbmZvLmJtSGVpZ2h0KSwgRmxvYXRSZWN0KDAu
MGYsIDAuMGYsIGltYWdlU2l6ZS53aWR0aCgpLCBpbWFnZVNpemUuaGVpZ2h0KCkpLCB7IENvbXBv
c2l0ZU9wZXJhdG9yOjpDb3B5IH0pOwogCi0gICAgLy8gRG8gY2xlYW51cAotICAgIENHQ29udGV4
dFJlbGVhc2UoY2dDb250ZXh0KTsKLQogICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVXNlckFnZW50SU9TLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW9zL1VzZXJBZ2VudElPUy5tbQppbmRleCAzYTYzNDRjZWY0MzdmNDM1
NTEyZTRiOTQwNTU3NDk3MTQ5MzFlMmJhLi4zYjZkZTFlYzBmM2ZjNWQxNDJkY2VjNmE1YWE2ZDMx
Y2M4ZDgwZTU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVXNlckFn
ZW50SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9Vc2VyQWdlbnRJT1Mu
bW0KQEAgLTg5LDExICs4OSwxMCBAQCBTdHJpbmcgc3RhbmRhcmRVc2VyQWdlbnRXaXRoQXBwbGlj
YXRpb25OYW1lKGNvbnN0IFN0cmluZyYgYXBwbGljYXRpb25OYW1lLCBjb25zdAogICAgIC8vIEZJ
WE1FOiBXZSBzaG91bGQgZGVwcmVjYXRlIGFuZCBldmVudHVhbGx5IHJlbW92ZSB0aGlzIG9ic29s
ZXRlIFVBIG92ZXJyaWRlOwogICAgIC8vIHNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjE3OTI3IGZvciBkZXRhaWxzLgogICAgIC8vIENoZWNrIHRvIHNlZSBpZiB0
aGVyZSBpcyBhIHVzZXIgYWdlbnQgb3ZlcnJpZGUgZm9yIGFsbCBXZWJLaXQgY2xpZW50cy4KLSAg
ICBDRlByb3BlcnR5TGlzdFJlZiBvdmVycmlkZSA9IENGUHJlZmVyZW5jZXNDb3B5QXBwVmFsdWUo
Q0ZTVFIoIlVzZXJBZ2VudCIpLCBDRlNUUigiY29tLmFwcGxlLldlYkZvdW5kYXRpb24iKSk7Cisg
ICAgYXV0byBvdmVycmlkZSA9IGFkb3B0Q0YoQ0ZQcmVmZXJlbmNlc0NvcHlBcHBWYWx1ZShDRlNU
UigiVXNlckFnZW50IiksIENGU1RSKCJjb20uYXBwbGUuV2ViRm91bmRhdGlvbiIpKSk7CiAgICAg
aWYgKG92ZXJyaWRlKSB7Ci0gICAgICAgIGlmIChDRkdldFR5cGVJRChvdmVycmlkZSkgPT0gQ0ZT
dHJpbmdHZXRUeXBlSUQoKSkKLSAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxOU1N0cmlu
ZyAqPihDRkJyaWRnaW5nUmVsZWFzZShvdmVycmlkZSkpOwotICAgICAgICBDRlJlbGVhc2Uob3Zl
cnJpZGUpOworICAgICAgICBpZiAoQ0ZHZXRUeXBlSUQob3ZlcnJpZGUuZ2V0KCkpID09IENGU3Ry
aW5nR2V0VHlwZUlEKCkpCisgICAgICAgICAgICByZXR1cm4gKF9fYnJpZGdlIE5TU3RyaW5nICop
b3ZlcnJpZGUuZ2V0KCk7CiAgICAgfQogCiAgICAgU3RyaW5nIG9zVmVyc2lvbiA9IHVzZXJBZ2Vu
dE9TVmVyc2lvbi5pc0VtcHR5KCkgID8gc3lzdGVtTWFya2V0aW5nVmVyc2lvbkZvclVzZXJBZ2Vu
dFN0cmluZygpIDogdXNlckFnZW50T1NWZXJzaW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkLm1tCmluZGV4IDY2MDA3NmFkZjc2NjM3NGY0OWQ1
ZWU1YTliMjkzZTk5ZDY0ZmNkZGMuLjkzMmM3ODJjNmJjYjNiMmQ2N2U5MzQwMmVjNDIxYTM0MmQz
NmJmNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV2ViQ29y
ZVRocmVhZC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dlYkNvcmVU
aHJlYWQubW0KQEAgLTI2NiwxMCArMjY2LDggQEAgc3RhdGljIHZvaWQgU2VuZERlbGVnYXRlTWVz
c2FnZShSZXRhaW5QdHI8TlNJbnZvY2F0aW9uPiYmIGludm9jYXRpb24pCiAgICAgICAgICAgICAg
ICAgZWxzZQogICAgICAgICAgICAgICAgICAgICBkZWxlZ2F0ZUluZm9ybWF0aW9uID0gTlNTdHJp
bmdGcm9tU2VsZWN0b3IoW2RlbGVnYXRlSW52b2NhdGlvbigpIHNlbGVjdG9yXSk7CiAgICAgCi0g
ICAgICAgICAgICAgICAgQ0ZTdHJpbmdSZWYgbW9kZSA9IENGUnVuTG9vcENvcHlDdXJyZW50TW9k
ZShDRlJ1bkxvb3BHZXRNYWluKCkpOwotICAgICAgICAgICAgICAgIE5TTG9nKEAiJXM6IGRlbGVn
YXRlICglQCkgZmFpbGVkIHRvIHJldHVybiBhZnRlciB3YWl0aW5nICVmIHNlY29uZHMuIG1haW4g
cnVuIGxvb3AgbW9kZTogJUAiLCBfX1BSRVRUWV9GVU5DVElPTl9fLCBkZWxlZ2F0ZUluZm9ybWF0
aW9uLCBEZWxlZ2F0ZVdhaXRJbnRlcnZhbC5zZWNvbmRzKCksIG1vZGUpOwotICAgICAgICAgICAg
ICAgIGlmIChtb2RlKQotICAgICAgICAgICAgICAgICAgICBDRlJlbGVhc2UobW9kZSk7CisgICAg
ICAgICAgICAgICAgYXV0byBtb2RlID0gYWRvcHRDRihDRlJ1bkxvb3BDb3B5Q3VycmVudE1vZGUo
Q0ZSdW5Mb29wR2V0TWFpbigpKSk7CisgICAgICAgICAgICAgICAgTlNMb2coQCIlczogZGVsZWdh
dGUgKCVAKSBmYWlsZWQgdG8gcmV0dXJuIGFmdGVyIHdhaXRpbmcgJWYgc2Vjb25kcy4gbWFpbiBy
dW4gbG9vcCBtb2RlOiAlQCIsIF9fUFJFVFRZX0ZVTkNUSU9OX18sIGRlbGVnYXRlSW5mb3JtYXRp
b24sIERlbGVnYXRlV2FpdEludGVydmFsLnNlY29uZHMoKSwgbW9kZS5nZXQoKSk7CiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0KICAgICAgICAgZGVsZWdhdGVMb2NrLnVubG9jaygpOwpAQCAtNjM0
LDE2ICs2MzIsMTQgQEAgc3RhdGljIHZvaWQqIFJ1bldlYlRocmVhZCh2b2lkKikKICAgICB3ZWJU
aHJlYWRSdW5Mb29wID0gQ0ZSdW5Mb29wR2V0Q3VycmVudCgpOwogICAgIHdlYlRocmVhZE5TUnVu
TG9vcCgpID0gW05TUnVuTG9vcCBjdXJyZW50UnVuTG9vcF07CiAKLSAgICBDRlJ1bkxvb3BPYnNl
cnZlclJlZiB3ZWJSdW5Mb29wTG9ja09ic2VydmVyUmVmID0gQ0ZSdW5Mb29wT2JzZXJ2ZXJDcmVh
dGUobnVsbHB0ciwga0NGUnVuTG9vcEJlZm9yZVRpbWVycyB8IGtDRlJ1bkxvb3BCZWZvcmVTb3Vy
Y2VzIHwga0NGUnVuTG9vcEFmdGVyV2FpdGluZywgWUVTLCAwLCBXZWJSdW5Mb29wTG9jaywgbnVs
bHB0cik7Ci0gICAgQ0ZSdW5Mb29wQWRkT2JzZXJ2ZXIod2ViVGhyZWFkUnVuTG9vcCwgd2ViUnVu
TG9vcExvY2tPYnNlcnZlclJlZiwga0NGUnVuTG9vcENvbW1vbk1vZGVzKTsKLSAgICBDRlJlbGVh
c2Uod2ViUnVuTG9vcExvY2tPYnNlcnZlclJlZik7CisgICAgYXV0byB3ZWJSdW5Mb29wTG9ja09i
c2VydmVyUmVmID0gYWRvcHRDRihDRlJ1bkxvb3BPYnNlcnZlckNyZWF0ZShudWxscHRyLCBrQ0ZS
dW5Mb29wQmVmb3JlVGltZXJzIHwga0NGUnVuTG9vcEJlZm9yZVNvdXJjZXMgfCBrQ0ZSdW5Mb29w
QWZ0ZXJXYWl0aW5nLCBZRVMsIDAsIFdlYlJ1bkxvb3BMb2NrLCBudWxscHRyKSk7CisgICAgQ0ZS
dW5Mb29wQWRkT2JzZXJ2ZXIod2ViVGhyZWFkUnVuTG9vcCwgd2ViUnVuTG9vcExvY2tPYnNlcnZl
clJlZi5nZXQoKSwga0NGUnVuTG9vcENvbW1vbk1vZGVzKTsKICAgICAKICAgICBXZWJUaHJlYWRJ
bml0UnVuUXVldWUoKTsKIAogICAgIC8vIFdlIG11c3QgaGF2ZSB0aGUgbG9jayB3aGVuIENBIHBh
aW50cyBpbiB0aGUgd2ViIHRocmVhZC4gQ0EgY29tbWl0cyBhdCAyMDAwMDAwIHNvIHdlIHVzZSBs
YXJnZXIgb3JkZXIgbnVtYmVyIHRoYW4gdGhhdCB0byBmcmVlIHRoZSBsb2NrLgotICAgIENGUnVu
TG9vcE9ic2VydmVyUmVmIHdlYlJ1bkxvb3BVbmxvY2tPYnNlcnZlclJlZiA9IENGUnVuTG9vcE9i
c2VydmVyQ3JlYXRlKG51bGxwdHIsIGtDRlJ1bkxvb3BCZWZvcmVXYWl0aW5nIHwga0NGUnVuTG9v
cEV4aXQsIFlFUywgMjUwMDAwMCwgV2ViUnVuTG9vcFVubG9jaywgbnVsbHB0cik7ICAgIAotICAg
IENGUnVuTG9vcEFkZE9ic2VydmVyKHdlYlRocmVhZFJ1bkxvb3AsIHdlYlJ1bkxvb3BVbmxvY2tP
YnNlcnZlclJlZiwga0NGUnVuTG9vcENvbW1vbk1vZGVzKTsKLSAgICBDRlJlbGVhc2Uod2ViUnVu
TG9vcFVubG9ja09ic2VydmVyUmVmKTsgICAgCisgICAgYXV0byB3ZWJSdW5Mb29wVW5sb2NrT2Jz
ZXJ2ZXJSZWYgPSBhZG9wdENGKENGUnVuTG9vcE9ic2VydmVyQ3JlYXRlKG51bGxwdHIsIGtDRlJ1
bkxvb3BCZWZvcmVXYWl0aW5nIHwga0NGUnVuTG9vcEV4aXQsIFlFUywgMjUwMDAwMCwgV2ViUnVu
TG9vcFVubG9jaywgbnVsbHB0cikpOworICAgIENGUnVuTG9vcEFkZE9ic2VydmVyKHdlYlRocmVh
ZFJ1bkxvb3AsIHdlYlJ1bkxvb3BVbmxvY2tPYnNlcnZlclJlZi5nZXQoKSwga0NGUnVuTG9vcENv
bW1vbk1vZGVzKTsKIAogICAgIENGUnVuTG9vcFNvdXJjZUNvbnRleHQgUmVsZWFzZVNvdXJjZUNv
bnRleHQgPSB7MCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwg
bnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgSGFuZGxlV2ViVGhyZWFkUmVsZWFzZVNvdXJjZX07
CiAgICAgV2ViVGhyZWFkUmVsZWFzZVNvdXJjZSA9IENGUnVuTG9vcFNvdXJjZUNyZWF0ZShudWxs
cHRyLCAtMSwgJlJlbGVhc2VTb3VyY2VDb250ZXh0KTsKQEAgLTgyMyw5ICs4MTksOCBAQCB2b2lk
IFdlYlRocmVhZFVubG9ja0d1YXJkRm9yTWFpbCh2b2lkKQogewogICAgIEFTU0VSVCghV2ViVGhy
ZWFkSXNDdXJyZW50KCkpOwogCi0gICAgQ0ZSdW5Mb29wT2JzZXJ2ZXJSZWYgbWFpblJ1bkxvb3BV
bmxvY2tHdWFyZE9ic2VydmVyID0gQ0ZSdW5Mb29wT2JzZXJ2ZXJDcmVhdGUobnVsbHB0ciwga0NG
UnVuTG9vcEVudHJ5LCBZRVMsIDAsIE1haW5SdW5Mb29wVW5sb2NrR3VhcmQsIG51bGxwdHIpOwot
ICAgIENGUnVuTG9vcEFkZE9ic2VydmVyKENGUnVuTG9vcEdldE1haW4oKSwgbWFpblJ1bkxvb3BV
bmxvY2tHdWFyZE9ic2VydmVyLCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMpOwotICAgIENGUmVsZWFz
ZShtYWluUnVuTG9vcFVubG9ja0d1YXJkT2JzZXJ2ZXIpOworICAgIGF1dG8gbWFpblJ1bkxvb3BV
bmxvY2tHdWFyZE9ic2VydmVyID0gYWRvcHRDRihDRlJ1bkxvb3BPYnNlcnZlckNyZWF0ZShudWxs
cHRyLCBrQ0ZSdW5Mb29wRW50cnksIFlFUywgMCwgTWFpblJ1bkxvb3BVbmxvY2tHdWFyZCwgbnVs
bHB0cikpOworICAgIENGUnVuTG9vcEFkZE9ic2VydmVyKENGUnVuTG9vcEdldE1haW4oKSwgbWFp
blJ1bkxvb3BVbmxvY2tHdWFyZE9ic2VydmVyLmdldCgpLCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMp
OwogfQogCiB2b2lkIF9XZWJUaHJlYWRVbmxvY2soKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNYWMubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplck1hYy5tbQppbmRl
eCAyOTU4ZjFiY2UzOWVjZWM5ODZkYjg4NTI5ZjE1OGQ3MjJmYWQ2NmNhLi5hMjg1YzIyYjIyMTFj
ZmE2OTFhOGUyOGIyZDkxMDk2OWQ5OTA2ZThmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplck1hYy5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplck1hYy5tbQpAQCAt
MjE0LDEyICsyMTQsMTIgQEAgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcjo6flBsYXRmb3JtU3Bl
ZWNoU3ludGhlc2l6ZXIoKQogICAgIFttX3BsYXRmb3JtU3BlZWNoV3JhcHBlci5nZXQoKSBpbnZh
bGlkYXRlXTsKIH0KIAotc3RhdGljIE5TQXJyYXkgKnNwZWVjaFN5bnRoZXNpc0dldFZvaWNlSWRl
bnRpZmllcnMoKQorc3RhdGljIFJldGFpblB0cjxDRkFycmF5UmVmPiBzcGVlY2hTeW50aGVzaXNH
ZXRWb2ljZUlkZW50aWZpZXJzKCkKIHsKICAgICAvLyBHZXQgYWxsIHRoZSB2b2ljZXMgb2ZmZXJl
ZCBieSBUVFMuCiAgICAgLy8gQnkgZGVmYXVsdCBzcGVlY2ggb25seSByZXR1cm5zICJwcmVtaXVt
IiB2b2ljZXMsIHdoaWNoIGRvZXMgbm90IGluY2x1ZGUgYWxsIHRoZQogICAgIC8vIGludGVybmF0
aW9uYWwgdm9pY2VzLiBUaGlzIGFsbG93cyB1cyB0byBvZmZlciBzcGVlY2ggc3ludGhlc2lzIGZv
ciBhbGwgc3VwcG9ydGVkIGxhbmd1YWdlcy4KLSAgICByZXR1cm4gQ0ZCcmlkZ2luZ1JlbGVhc2Uo
Q29weVNwZWVjaFN5bnRoZXNpc1ZvaWNlc0Zvck1vZGUoKF9fYnJpZGdlIENGQXJyYXlSZWYpQFsg
QCJWb2ljZUdyb3VwRGVmYXVsdCIsIEAiVm9pY2VHcm91cENvbXBhY3QiIF0pKTsKKyAgICByZXR1
cm4gYWRvcHRDRihDb3B5U3BlZWNoU3ludGhlc2lzVm9pY2VzRm9yTW9kZSgoX19icmlkZ2UgQ0ZB
cnJheVJlZilAWyBAIlZvaWNlR3JvdXBEZWZhdWx0IiwgQCJWb2ljZUdyb3VwQ29tcGFjdCIgXSkp
OwogfQogCiBzdGF0aWMgTlNTdHJpbmcgKnNwZWVjaFN5bnRoZXNpc0dldERlZmF1bHRWb2ljZUlk
ZW50aWZpZXJGb3JMb2NhbGUoTlNMb2NhbGUgKnVzZXJMb2NhbGUpCkBAIC0yMjcsMTUgKzIyNywx
NSBAQCBzdGF0aWMgTlNTdHJpbmcgKnNwZWVjaFN5bnRoZXNpc0dldERlZmF1bHRWb2ljZUlkZW50
aWZpZXJGb3JMb2NhbGUoTlNMb2NhbGUgKnVzZQogICAgIGlmICghdXNlckxvY2FsZSkKICAgICAg
ICAgcmV0dXJuIG5pbDsKIAotICAgIHJldHVybiAoX19icmlkZ2UgTlNTdHJpbmcgKilHZXRJZGVu
dGlmaWVyU3RyaW5nRm9yUHJlZmVycmVkVm9pY2VJbkxpc3RXaXRoTG9jYWxlKChfX2JyaWRnZSBD
RkFycmF5UmVmKXNwZWVjaFN5bnRoZXNpc0dldFZvaWNlSWRlbnRpZmllcnMoKSwgKF9fYnJpZGdl
IENGTG9jYWxlUmVmKXVzZXJMb2NhbGUpOworICAgIHJldHVybiAoX19icmlkZ2UgTlNTdHJpbmcg
KilHZXRJZGVudGlmaWVyU3RyaW5nRm9yUHJlZmVycmVkVm9pY2VJbkxpc3RXaXRoTG9jYWxlKHNw
ZWVjaFN5bnRoZXNpc0dldFZvaWNlSWRlbnRpZmllcnMoKS5nZXQoKSwgKF9fYnJpZGdlIENGTG9j
YWxlUmVmKXVzZXJMb2NhbGUpOwogfQogCiB2b2lkIFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI6
OmluaXRpYWxpemVWb2ljZUxpc3QoKQogewotICAgIE5TQXJyYXkgKmF2YWlsYWJsZVZvaWNlcyA9
IHNwZWVjaFN5bnRoZXNpc0dldFZvaWNlSWRlbnRpZmllcnMoKTsKLSAgICBOU1VJbnRlZ2VyIGNv
dW50ID0gW2F2YWlsYWJsZVZvaWNlcyBjb3VudF07CisgICAgYXV0byBhdmFpbGFibGVWb2ljZXMg
PSBzcGVlY2hTeW50aGVzaXNHZXRWb2ljZUlkZW50aWZpZXJzKCk7CisgICAgTlNVSW50ZWdlciBj
b3VudCA9IFsoX19icmlkZ2UgTlNBcnJheSAqKWF2YWlsYWJsZVZvaWNlcy5nZXQoKSBjb3VudF07
CiAgICAgZm9yIChOU1VJbnRlZ2VyIGsgPSAwOyBrIDwgY291bnQ7IGsrKykgewotICAgICAgICBO
U1N0cmluZyAqdm9pY2VOYW1lID0gW2F2YWlsYWJsZVZvaWNlcyBvYmplY3RBdEluZGV4OmtdOwor
ICAgICAgICBOU1N0cmluZyAqdm9pY2VOYW1lID0gWyhfX2JyaWRnZSBOU0FycmF5ICopYXZhaWxh
YmxlVm9pY2VzLmdldCgpIG9iamVjdEF0SW5kZXg6a107CiAgICAgICAgIE5TRGljdGlvbmFyeSAq
YXR0cmlidXRlcyA9IFtOU1NwZWVjaFN5bnRoZXNpemVyIGF0dHJpYnV0ZXNGb3JWb2ljZTp2b2lj
ZU5hbWVdOwogCiAgICAgICAgIE5TU3RyaW5nICp2b2ljZVVSSSA9IFthdHRyaWJ1dGVzIG9iamVj
dEZvcktleTpOU1ZvaWNlSWRlbnRpZmllcl07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvUGx1Z2luQmxvY2tsaXN0Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1BsdWdpbkJsb2NrbGlzdC5tbQppbmRleCBhODBiNGFmZWM3NjFkODc5ODdmZjkxMjA3MzQ2
MGI5MzllNDBmNzRmLi4xMzZmNmVkZjY5YjRkYzZkZDc5MmJhMTNjNGM4ZmNkZWM4ZDhlNDFjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGx1Z2luQmxvY2tsaXN0Lm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbHVnaW5CbG9ja2xpc3QubW0KQEAg
LTY5LDggKzY5LDggQEAgYm9vbCBQbHVnaW5CbG9ja2xpc3Q6OmlzUGx1Z2luVXBkYXRlQXZhaWxh
YmxlKE5TU3RyaW5nICpidW5kbGVJZGVudGlmaWVyKQogCiBzdGQ6OnVuaXF1ZV9wdHI8UGx1Z2lu
QmxvY2tsaXN0PiBQbHVnaW5CbG9ja2xpc3Q6OmNyZWF0ZShOU0RpY3Rpb25hcnkgKnByb3BlcnR5
TGlzdCkKIHsKLSAgICBDRkRpY3Rpb25hcnlSZWYgc3lzdGVtVmVyc2lvbkRpY3Rpb25hcnkgPSBf
Q0ZDb3B5U3lzdGVtVmVyc2lvbkRpY3Rpb25hcnkoKTsKLSAgICBDRlN0cmluZ1JlZiBvc1ZlcnNp
b24gPSBzdGF0aWNfY2FzdDxDRlN0cmluZ1JlZj4oQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoc3lzdGVt
VmVyc2lvbkRpY3Rpb25hcnksIF9rQ0ZTeXN0ZW1WZXJzaW9uUHJvZHVjdFZlcnNpb25LZXkpKTsK
KyAgICBhdXRvIHN5c3RlbVZlcnNpb25EaWN0aW9uYXJ5ID0gYWRvcHRDRihfQ0ZDb3B5U3lzdGVt
VmVyc2lvbkRpY3Rpb25hcnkoKSk7CisgICAgQ0ZTdHJpbmdSZWYgb3NWZXJzaW9uID0gc3RhdGlj
X2Nhc3Q8Q0ZTdHJpbmdSZWY+KENGRGljdGlvbmFyeUdldFZhbHVlKHN5c3RlbVZlcnNpb25EaWN0
aW9uYXJ5LmdldCgpLCBfa0NGU3lzdGVtVmVyc2lvblByb2R1Y3RWZXJzaW9uS2V5KSk7CiAKICAg
ICBOU0RpY3Rpb25hcnkgKmRpY3Rpb25hcnkgPSBbcHJvcGVydHlMaXN0IG9iamVjdEZvcktleTpA
IlBsdWdJbkJsb2NrbGlzdCJdOwogCkBAIC0xMTIsOCArMTEyLDYgQEAgc3RkOjp1bmlxdWVfcHRy
PFBsdWdpbkJsb2NrbGlzdD4gUGx1Z2luQmxvY2tsaXN0OjpjcmVhdGUoTlNEaWN0aW9uYXJ5ICpw
cm9wZXJ0eUwKICAgICAgICAgfQogICAgIH0KIAotICAgIENGUmVsZWFzZShzeXN0ZW1WZXJzaW9u
RGljdGlvbmFyeSk7Ci0KICAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPFBsdWdpbkJsb2NrbGlz
dD4obmV3IFBsdWdpbkJsb2NrbGlzdChidW5kbGVJRFRvTWluaW11bVNlY3VyZVZlcnNpb24sIGJ1
bmRsZUlEVG9NaW5pbXVtQ29tcGF0aWJsZVZlcnNpb24sIGJ1bmRsZUlEVG9CbG9ja2VkVmVyc2lv
bnMsIGJ1bmRsZUlEc1dpdGhBdmFpbGFibGVVcGRhdGVzKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJHTEJsb2NrbGlzdC5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9XZWJHTEJsb2NrbGlzdC5tbQppbmRleCA2YzFkMjZlNDc5YTAyODE3
YmRkNWIxODZmYWEyYWE3NmE1ZWNiZGJjLi5kMDRlZTIxNzRkMWRiYzc3ZDdjYWU4NWEzZmFhMjVi
MDE4MTU3ODQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViR0xC
bG9ja2xpc3QubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkdMQmxvY2ts
aXN0Lm1tCkBAIC0xNjgsMTAgKzE2OCw5IEBAIHN0YXRpYyBib29sIG1hdGNoZXNCdWlsZEluZm8o
T1NCdWlsZEluZm8gbWFjaGluZUluZm8sIE9TQnVpbGRJbmZvIGJsb2NrSW5mbywgV2ViCiAKIHN0
ZDo6dW5pcXVlX3B0cjxXZWJHTEJsb2NrbGlzdD4gV2ViR0xCbG9ja2xpc3Q6OmNyZWF0ZShOU0Rp
Y3Rpb25hcnkgKnByb3BlcnR5TGlzdCkKIHsKLSAgICBDRkRpY3Rpb25hcnlSZWYgc3lzdGVtVmVy
c2lvbkRpY3Rpb25hcnkgPSBfQ0ZDb3B5U3lzdGVtVmVyc2lvbkRpY3Rpb25hcnkoKTsKLSAgICBD
RlN0cmluZ1JlZiBvc0J1aWxkID0gc3RhdGljX2Nhc3Q8Q0ZTdHJpbmdSZWY+KENGRGljdGlvbmFy
eUdldFZhbHVlKHN5c3RlbVZlcnNpb25EaWN0aW9uYXJ5LCBfa0NGU3lzdGVtVmVyc2lvbkJ1aWxk
VmVyc2lvbktleSkpOworICAgIGF1dG8gc3lzdGVtVmVyc2lvbkRpY3Rpb25hcnkgPSBhZG9wdENG
KF9DRkNvcHlTeXN0ZW1WZXJzaW9uRGljdGlvbmFyeSgpKTsKKyAgICBDRlN0cmluZ1JlZiBvc0J1
aWxkID0gc3RhdGljX2Nhc3Q8Q0ZTdHJpbmdSZWY+KENGRGljdGlvbmFyeUdldFZhbHVlKHN5c3Rl
bVZlcnNpb25EaWN0aW9uYXJ5LmdldCgpLCBfa0NGU3lzdGVtVmVyc2lvbkJ1aWxkVmVyc2lvbktl
eSkpOwogICAgIE9TQnVpbGRJbmZvIGJ1aWxkSW5mbyA9IGJ1aWxkSW5mb0Zyb21PU0J1aWxkU3Ry
aW5nKChfX2JyaWRnZSBOU1N0cmluZyAqKW9zQnVpbGQpOwotICAgIENGUmVsZWFzZShzeXN0ZW1W
ZXJzaW9uRGljdGlvbmFyeSk7CiAKICAgICBpZiAoIWJ1aWxkSW5mby5tYWpvcikKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXJlY29yZGVyL2NvY29hL0F1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvQXVkaW9TYW1wbGVCdWZmZXJDb21w
cmVzc29yLm1tCmluZGV4IDdlMmY2YWE1MmRjZGUzMjE0NzAxNTkxNjZlNTQ4YTBjYzlhZjRmNTMu
LmM3OWE0Nzk2MjQwMmJiMTMyOTMzYzg3YmZlOThkMjM3ZjU2ZWUwNjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvQXVkaW9TYW1wbGVCdWZm
ZXJDb21wcmVzc29yLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3Jk
ZXIvY29jb2EvQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tCkBAIC0yMjcsOSArMjI3LDgg
QEAgdm9pZCBBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OmF0dGFjaFByaW1pbmdUcmltc0lm
TmVlZGVkKENNU2FtcGxlQnVmZmVyUmVmIGIKICAgICBpZiAoQ01USU1FX0NPTVBBUkVfSU5MSU5F
KGtDTVRpbWVaZXJvLCA8LCBtX3JlbWFpbmluZ1ByaW1lRHVyYXRpb24pKSB7CiAgICAgICAgIENN
VGltZSBzYW1wbGVEdXJhdGlvbiA9IENNU2FtcGxlQnVmZmVyR2V0RHVyYXRpb24oYnVmZmVyKTsK
ICAgICAgICAgQ01UaW1lIHRyaW1EdXJhdGlvbiA9IENNVGltZU1pbmltdW0oc2FtcGxlRHVyYXRp
b24sIG1fcmVtYWluaW5nUHJpbWVEdXJhdGlvbik7Ci0gICAgICAgIENGRGljdGlvbmFyeVJlZiB0
cmltQXRTdGFydERpY3QgPSBDTVRpbWVDb3B5QXNEaWN0aW9uYXJ5KHRyaW1EdXJhdGlvbiwga0NG
QWxsb2NhdG9yRGVmYXVsdCk7Ci0gICAgICAgIENNU2V0QXR0YWNobWVudChidWZmZXIsIGtDTVNh
bXBsZUJ1ZmZlckF0dGFjaG1lbnRLZXlfVHJpbUR1cmF0aW9uQXRTdGFydCwgdHJpbUF0U3RhcnRE
aWN0LCBrQ01BdHRhY2htZW50TW9kZV9TaG91bGRQcm9wYWdhdGUpOwotICAgICAgICBDRlJlbGVh
c2UodHJpbUF0U3RhcnREaWN0KTsKKyAgICAgICAgYXV0byB0cmltQXRTdGFydERpY3QgPSBhZG9w
dENGKENNVGltZUNvcHlBc0RpY3Rpb25hcnkodHJpbUR1cmF0aW9uLCBrQ0ZBbGxvY2F0b3JEZWZh
dWx0KSk7CisgICAgICAgIENNU2V0QXR0YWNobWVudChidWZmZXIsIGtDTVNhbXBsZUJ1ZmZlckF0
dGFjaG1lbnRLZXlfVHJpbUR1cmF0aW9uQXRTdGFydCwgdHJpbUF0U3RhcnREaWN0LmdldCgpLCBr
Q01BdHRhY2htZW50TW9kZV9TaG91bGRQcm9wYWdhdGUpOwogICAgICAgICBtX3JlbWFpbmluZ1By
aW1lRHVyYXRpb24gPSBDTVRpbWVTdWJ0cmFjdChtX3JlbWFpbmluZ1ByaW1lRHVyYXRpb24sIHRy
aW1EdXJhdGlvbik7CiAgICAgfQogfQpAQCAtMzQ3LDcgKzM0Niw3IEBAIE9TU3RhdHVzIEF1ZGlv
U2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6cHJvdmlkZVNvdXJjZURhdGFOdW1PdXRwdXRQYWNrZXRz
KFVJbnQzMioKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgICAgICAgICBh
dXRvIHNhbXBsZUJ1ZmZlciA9IGFkb3B0Q0YoKENNU2FtcGxlQnVmZmVyUmVmKShjb25zdF9jYXN0
PHZvaWQqPihDTUJ1ZmZlclF1ZXVlRGVxdWV1ZUFuZFJldGFpbihtX2lucHV0QnVmZmVyUXVldWUu
Z2V0KCkpKSkpOwotICAgICAgICAgICAgICAgIG1fc2FtcGxlQmxvY2tCdWZmZXIgPSBhZG9wdENG
KChDTUJsb2NrQnVmZmVyUmVmKShjb25zdF9jYXN0PHZvaWQqPihDRlJldGFpbihDTVNhbXBsZUJ1
ZmZlckdldERhdGFCdWZmZXIoc2FtcGxlQnVmZmVyLmdldCgpKSkpKSk7CisgICAgICAgICAgICAg
ICAgbV9zYW1wbGVCbG9ja0J1ZmZlciA9IENNU2FtcGxlQnVmZmVyR2V0RGF0YUJ1ZmZlcihzYW1w
bGVCdWZmZXIuZ2V0KCkpOwogICAgICAgICAgICAgICAgIGlmICghbV9zYW1wbGVCbG9ja0J1ZmZl
cikgewogICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwg
IkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBDTVNhbXBsZUJ1ZmZlckdldERhdGFCdWZmZXIg
ZmFpbGVkIik7CiAgICAgICAgICAgICAgICAgICAgIG1fc2FtcGxlQmxvY2tCdWZmZXJTaXplID0g
MDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29j
b2EvVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFyZWNvcmRlci9jb2NvYS9WaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IubW0KaW5k
ZXggMjg3MTUxMzgwN2NhZDY4Y2JkZmMzZmJlNGVlYjE3ZjQwNjMzOTE5My4uZTAzZTc3MGYwY2Fh
OWJkYzZiMTZkNWFjNzRiYjM3ODZkZjhmNGFkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9WaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3Iu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9WaWRl
b1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IubW0KQEAgLTEwOSw5ICsxMDksOCBAQCB2b2lkIFZpZGVv
U2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6dmlkZW9Db21wcmVzc2lvbkNhbGxiYWNrKHZvaWQgKnJl
ZkNvbiwgdm9pZCosCiBzdGF0aWMgaW5saW5lIE9TU3RhdHVzIHNldENvbXByZXNzaW9uU2Vzc2lv
blByb3BlcnR5KFZUQ29tcHJlc3Npb25TZXNzaW9uUmVmIHZ0U2Vzc2lvbiwgQ0ZTdHJpbmdSZWYg
a2V5LCB1aW50MzJfdCB2YWx1ZSkKIHsKICAgICBpbnQ2NF90IHZhbHVlNjQgPSB2YWx1ZTsKLSAg
ICBDRk51bWJlclJlZiBjZlZhbHVlID0gQ0ZOdW1iZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVs
dCwga0NGTnVtYmVyU0ludDY0VHlwZSwgJnZhbHVlNjQpOwotICAgIE9TU3RhdHVzIHN0YXR1cyA9
IFZUU2Vzc2lvblNldFByb3BlcnR5KHZ0U2Vzc2lvbiwga2V5LCBjZlZhbHVlKTsKLSAgICBDRlJl
bGVhc2UoY2ZWYWx1ZSk7CisgICAgYXV0byBjZlZhbHVlID0gYWRvcHRDRihDRk51bWJlckNyZWF0
ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrQ0ZOdW1iZXJTSW50NjRUeXBlLCAmdmFsdWU2NCkpOwor
ICAgIE9TU3RhdHVzIHN0YXR1cyA9IFZUU2Vzc2lvblNldFByb3BlcnR5KHZ0U2Vzc2lvbiwga2V5
LCBjZlZhbHVlLmdldCgpKTsKICAgICByZXR1cm4gc3RhdHVzOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Zvcm1EYXRhU3RyZWFtQ0ZOZXQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Gb3JtRGF0YVN0cmVhbUNGTmV0
LmNwcAppbmRleCAzZjY4ZWFkMzQxMjYyZjU2YmZlMjIxMjAzMmJlNjgzNzZlOGM4MDdmLi5kN2Rk
NjNmZWFiZmIwM2MwMTkyZjI0OWY4NjhhMzQxMDAzY2E0NWY2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Zvcm1EYXRhU3RyZWFtQ0ZOZXQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRm9ybURhdGFTdHJlYW1DRk5ldC5j
cHAKQEAgLTEwMyw3ICsxMDMsNyBAQCBzdHJ1Y3QgRm9ybVN0cmVhbUZpZWxkcyB7CiAgICAgRm9y
bURhdGFGb3JVcGxvYWQgZGF0YTsKICAgICBTY2hlZHVsZVBhaXJIYXNoU2V0IHNjaGVkdWxlZFJ1
bkxvb3BQYWlyczsKICAgICBWZWN0b3I8Rm9ybURhdGFFbGVtZW50PiByZW1haW5pbmdFbGVtZW50
czsgLy8gaW4gcmV2ZXJzZSBvcmRlcgotICAgIENGUmVhZFN0cmVhbVJlZiBjdXJyZW50U3RyZWFt
IHsgbnVsbHB0ciB9OworICAgIFJldGFpblB0cjxDRlJlYWRTdHJlYW1SZWY+IGN1cnJlbnRTdHJl
YW07CiAgICAgbG9uZyBsb25nIGN1cnJlbnRTdHJlYW1SYW5nZUxlbmd0aCB7IEJsb2JEYXRhSXRl
bTo6dG9FbmRPZkZpbGUgfTsKICAgICBNYWxsb2NQdHI8Y2hhciwgV1RGOjpWZWN0b3JNYWxsb2M+
IGN1cnJlbnREYXRhOwogICAgIENGUmVhZFN0cmVhbVJlZiBmb3JtU3RyZWFtIHsgbnVsbHB0ciB9
OwpAQCAtMTE3LDEwICsxMTcsOSBAQCBzdGF0aWMgdm9pZCBjbG9zZUN1cnJlbnRTdHJlYW0oRm9y
bVN0cmVhbUZpZWxkcyogZm9ybSkKICAgICBBU1NFUlQoZm9ybS0+c3RyZWFtSXNCZWluZ09wZW5l
ZE9yQ2xvc2VkTG9jay5pc0hlbGQoKSk7CiAKICAgICBpZiAoZm9ybS0+Y3VycmVudFN0cmVhbSkg
ewotICAgICAgICBDRlJlYWRTdHJlYW1DbG9zZShmb3JtLT5jdXJyZW50U3RyZWFtKTsKLSAgICAg
ICAgQ0ZSZWFkU3RyZWFtU2V0Q2xpZW50KGZvcm0tPmN1cnJlbnRTdHJlYW0sIGtDRlN0cmVhbUV2
ZW50Tm9uZSwgMCwgMCk7Ci0gICAgICAgIENGUmVsZWFzZShmb3JtLT5jdXJyZW50U3RyZWFtKTsK
LSAgICAgICAgZm9ybS0+Y3VycmVudFN0cmVhbSA9IDA7CisgICAgICAgIENGUmVhZFN0cmVhbUNs
b3NlKGZvcm0tPmN1cnJlbnRTdHJlYW0uZ2V0KCkpOworICAgICAgICBDRlJlYWRTdHJlYW1TZXRD
bGllbnQoZm9ybS0+Y3VycmVudFN0cmVhbS5nZXQoKSwga0NGU3RyZWFtRXZlbnROb25lLCAwLCAw
KTsKKyAgICAgICAgZm9ybS0+Y3VycmVudFN0cmVhbSA9IG51bGxwdHI7CiAgICAgICAgIGZvcm0t
PmN1cnJlbnRTdHJlYW1SYW5nZUxlbmd0aCA9IEJsb2JEYXRhSXRlbTo6dG9FbmRPZkZpbGU7CiAg
ICAgfQogICAgIGZvcm0tPmN1cnJlbnREYXRhID0gbnVsbHB0cjsKQEAgLTE0Myw3ICsxNDIsNyBA
QCBzdGF0aWMgYm9vbCBhZHZhbmNlQ3VycmVudFN0cmVhbShGb3JtU3RyZWFtRmllbGRzKiBmb3Jt
KQogICAgICAgICBbZm9ybV0gKFZlY3RvcjxjaGFyPiYgYnl0ZXMpIHsKICAgICAgICAgICAgIHNp
emVfdCBzaXplID0gYnl0ZXMuc2l6ZSgpOwogICAgICAgICAgICAgTWFsbG9jUHRyPGNoYXIsIFdU
Rjo6VmVjdG9yTWFsbG9jPiBkYXRhID0gYnl0ZXMucmVsZWFzZUJ1ZmZlcigpOwotICAgICAgICAg
ICAgZm9ybS0+Y3VycmVudFN0cmVhbSA9IENGUmVhZFN0cmVhbUNyZWF0ZVdpdGhCeXRlc05vQ29w
eSgwLCByZWludGVycHJldF9jYXN0PGNvbnN0IFVJbnQ4Kj4oZGF0YS5nZXQoKSksIHNpemUsIGtD
RkFsbG9jYXRvck51bGwpOworICAgICAgICAgICAgZm9ybS0+Y3VycmVudFN0cmVhbSA9IGFkb3B0
Q0YoQ0ZSZWFkU3RyZWFtQ3JlYXRlV2l0aEJ5dGVzTm9Db3B5KDAsIHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgVUludDgqPihkYXRhLmdldCgpKSwgc2l6ZSwga0NGQWxsb2NhdG9yTnVsbCkpOwogICAg
ICAgICAgICAgZm9ybS0+Y3VycmVudERhdGEgPSBXVEZNb3ZlKGRhdGEpOwogICAgICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgICAgIH0sIFtmb3JtXSAoY29uc3QgRm9ybURhdGFFbGVtZW50OjpF
bmNvZGVkRmlsZURhdGEmIGZpbGVEYXRhKSB7CkBAIC0xNTIsMTQgKzE1MSwxNCBAQCBzdGF0aWMg
Ym9vbCBhZHZhbmNlQ3VycmVudFN0cmVhbShGb3JtU3RyZWFtRmllbGRzKiBmb3JtKQogICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICAgICAgY29uc3QgU3RyaW5nJiBwYXRo
ID0gZmlsZURhdGEuZmlsZW5hbWU7Ci0gICAgICAgICAgICBmb3JtLT5jdXJyZW50U3RyZWFtID0g
Q0ZSZWFkU3RyZWFtQ3JlYXRlV2l0aEZpbGUoMCwgRmlsZVN5c3RlbTo6cGF0aEFzVVJMKHBhdGgp
LmdldCgpKTsKKyAgICAgICAgICAgIGZvcm0tPmN1cnJlbnRTdHJlYW0gPSBhZG9wdENGKENGUmVh
ZFN0cmVhbUNyZWF0ZVdpdGhGaWxlKDAsIEZpbGVTeXN0ZW06OnBhdGhBc1VSTChwYXRoKS5nZXQo
KSkpOwogICAgICAgICAgICAgaWYgKCFmb3JtLT5jdXJyZW50U3RyZWFtKSB7CiAgICAgICAgICAg
ICAgICAgLy8gVGhlIGZpbGUgbXVzdCBoYXZlIGJlZW4gcmVtb3ZlZCBvciBiZWNvbWUgdW5yZWFk
YWJsZS4KICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICBpZiAoZmlsZURhdGEuZmlsZVN0YXJ0ID4gMCkgewogICAgICAgICAgICAgICAgIFJl
dGFpblB0cjxDRk51bWJlclJlZj4gcG9zaXRpb24gPSBhZG9wdENGKENGTnVtYmVyQ3JlYXRlKDAs
IGtDRk51bWJlckxvbmdMb25nVHlwZSwgJmZpbGVEYXRhLmZpbGVTdGFydCkpOwotICAgICAgICAg
ICAgICAgIENGUmVhZFN0cmVhbVNldFByb3BlcnR5KGZvcm0tPmN1cnJlbnRTdHJlYW0sIGtDRlN0
cmVhbVByb3BlcnR5RmlsZUN1cnJlbnRPZmZzZXQsIHBvc2l0aW9uLmdldCgpKTsKKyAgICAgICAg
ICAgICAgICBDRlJlYWRTdHJlYW1TZXRQcm9wZXJ0eShmb3JtLT5jdXJyZW50U3RyZWFtLmdldCgp
LCBrQ0ZTdHJlYW1Qcm9wZXJ0eUZpbGVDdXJyZW50T2Zmc2V0LCBwb3NpdGlvbi5nZXQoKSk7CiAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICBmb3JtLT5jdXJyZW50U3RyZWFtUmFuZ2VMZW5ndGgg
PSBmaWxlRGF0YS5maWxlTGVuZ3RoOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0xNzYs
MTMgKzE3NSwxMyBAQCBzdGF0aWMgYm9vbCBhZHZhbmNlQ3VycmVudFN0cmVhbShGb3JtU3RyZWFt
RmllbGRzKiBmb3JtKQogCiAgICAgLy8gU2V0IHVwIHRoZSBjYWxsYmFjay4KICAgICBDRlN0cmVh
bUNsaWVudENvbnRleHQgY29udGV4dCA9IHsgMCwgZm9ybSwgMCwgMCwgMCB9OwotICAgIENGUmVh
ZFN0cmVhbVNldENsaWVudChmb3JtLT5jdXJyZW50U3RyZWFtLCBrQ0ZTdHJlYW1FdmVudEhhc0J5
dGVzQXZhaWxhYmxlIHwga0NGU3RyZWFtRXZlbnRFcnJvck9jY3VycmVkIHwga0NGU3RyZWFtRXZl
bnRFbmRFbmNvdW50ZXJlZCwKKyAgICBDRlJlYWRTdHJlYW1TZXRDbGllbnQoZm9ybS0+Y3VycmVu
dFN0cmVhbS5nZXQoKSwga0NGU3RyZWFtRXZlbnRIYXNCeXRlc0F2YWlsYWJsZSB8IGtDRlN0cmVh
bUV2ZW50RXJyb3JPY2N1cnJlZCB8IGtDRlN0cmVhbUV2ZW50RW5kRW5jb3VudGVyZWQsCiAgICAg
ICAgIGZvcm1FdmVudENhbGxiYWNrLCAmY29udGV4dCk7CiAKICAgICAvLyBTY2hlZHVsZSB3aXRo
IHRoZSBjdXJyZW50IHNldCBvZiBydW4gbG9vcHMuCiAgICAgU2NoZWR1bGVQYWlySGFzaFNldDo6
aXRlcmF0b3IgZW5kID0gZm9ybS0+c2NoZWR1bGVkUnVuTG9vcFBhaXJzLmVuZCgpOwogICAgIGZv
ciAoU2NoZWR1bGVQYWlySGFzaFNldDo6aXRlcmF0b3IgaXQgPSBmb3JtLT5zY2hlZHVsZWRSdW5M
b29wUGFpcnMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQotICAgICAgICBDRlJlYWRTdHJlYW1T
Y2hlZHVsZVdpdGhSdW5Mb29wKGZvcm0tPmN1cnJlbnRTdHJlYW0sICgqaXQpLT5ydW5Mb29wKCks
ICgqaXQpLT5tb2RlKCkpOworICAgICAgICBDRlJlYWRTdHJlYW1TY2hlZHVsZVdpdGhSdW5Mb29w
KGZvcm0tPmN1cnJlbnRTdHJlYW0uZ2V0KCksICgqaXQpLT5ydW5Mb29wKCksICgqaXQpLT5tb2Rl
KCkpOwogCiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0xOTYsNyArMTk1LDcgQEAgc3RhdGljIGJv
b2wgb3Blbk5leHRTdHJlYW0oRm9ybVN0cmVhbUZpZWxkcyogZm9ybSkKICAgICAvLyBTa2lwIG92
ZXIgYW55IHN0cmVhbXMgd2UgY2FuJ3Qgb3Blbi4KICAgICBpZiAoIWFkdmFuY2VDdXJyZW50U3Ry
ZWFtKGZvcm0pKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgd2hpbGUgKGZvcm0tPmN1cnJl
bnRTdHJlYW0gJiYgIUNGUmVhZFN0cmVhbU9wZW4oZm9ybS0+Y3VycmVudFN0cmVhbSkpIHsKKyAg
ICB3aGlsZSAoZm9ybS0+Y3VycmVudFN0cmVhbSAmJiAhQ0ZSZWFkU3RyZWFtT3Blbihmb3JtLT5j
dXJyZW50U3RyZWFtLmdldCgpKSkgewogICAgICAgICBpZiAoIWFkdmFuY2VDdXJyZW50U3RyZWFt
KGZvcm0pKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KQEAgLTI2Miw5ICsyNjEs
OSBAQCBzdGF0aWMgQ0ZJbmRleCBmb3JtUmVhZChDRlJlYWRTdHJlYW1SZWYsIFVJbnQ4KiBidWZm
ZXIsIENGSW5kZXggYnVmZmVyTGVuZ3RoLCBDRgogICAgICAgICBDRkluZGV4IGJ5dGVzVG9SZWFk
ID0gYnVmZmVyTGVuZ3RoOwogICAgICAgICBpZiAoZm9ybS0+Y3VycmVudFN0cmVhbVJhbmdlTGVu
Z3RoICE9IEJsb2JEYXRhSXRlbTo6dG9FbmRPZkZpbGUgJiYgZm9ybS0+Y3VycmVudFN0cmVhbVJh
bmdlTGVuZ3RoIDwgYnl0ZXNUb1JlYWQpCiAgICAgICAgICAgICBieXRlc1RvUmVhZCA9IHN0YXRp
Y19jYXN0PENGSW5kZXg+KGZvcm0tPmN1cnJlbnRTdHJlYW1SYW5nZUxlbmd0aCk7Ci0gICAgICAg
IENGSW5kZXggYnl0ZXNSZWFkID0gQ0ZSZWFkU3RyZWFtUmVhZChmb3JtLT5jdXJyZW50U3RyZWFt
LCBidWZmZXIsIGJ5dGVzVG9SZWFkKTsKKyAgICAgICAgQ0ZJbmRleCBieXRlc1JlYWQgPSBDRlJl
YWRTdHJlYW1SZWFkKGZvcm0tPmN1cnJlbnRTdHJlYW0uZ2V0KCksIGJ1ZmZlciwgYnl0ZXNUb1Jl
YWQpOwogICAgICAgICBpZiAoYnl0ZXNSZWFkIDwgMCkgewotICAgICAgICAgICAgKmVycm9yID0g
Q0ZSZWFkU3RyZWFtR2V0RXJyb3IoZm9ybS0+Y3VycmVudFN0cmVhbSk7CisgICAgICAgICAgICAq
ZXJyb3IgPSBDRlJlYWRTdHJlYW1HZXRFcnJvcihmb3JtLT5jdXJyZW50U3RyZWFtLmdldCgpKTsK
ICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgfQogICAgICAgICBpZiAoYnl0ZXNSZWFk
ID4gMCkgewpAQCAtMjg4LDE0ICsyODcsMTQgQEAgc3RhdGljIEJvb2xlYW4gZm9ybUNhblJlYWQo
Q0ZSZWFkU3RyZWFtUmVmIHN0cmVhbSwgdm9pZCogY29udGV4dCkKIHsKICAgICBGb3JtU3RyZWFt
RmllbGRzKiBmb3JtID0gc3RhdGljX2Nhc3Q8Rm9ybVN0cmVhbUZpZWxkcyo+KGNvbnRleHQpOwog
Ci0gICAgd2hpbGUgKGZvcm0tPmN1cnJlbnRTdHJlYW0gJiYgQ0ZSZWFkU3RyZWFtR2V0U3RhdHVz
KGZvcm0tPmN1cnJlbnRTdHJlYW0pID09IGtDRlN0cmVhbVN0YXR1c0F0RW5kKQorICAgIHdoaWxl
IChmb3JtLT5jdXJyZW50U3RyZWFtICYmIENGUmVhZFN0cmVhbUdldFN0YXR1cyhmb3JtLT5jdXJy
ZW50U3RyZWFtLmdldCgpKSA9PSBrQ0ZTdHJlYW1TdGF0dXNBdEVuZCkKICAgICAgICAgb3Blbk5l
eHRTdHJlYW0oZm9ybSk7CiAKICAgICBpZiAoIWZvcm0tPmN1cnJlbnRTdHJlYW0pIHsKICAgICAg
ICAgQ0ZSZWFkU3RyZWFtU2lnbmFsRXZlbnQoc3RyZWFtLCBrQ0ZTdHJlYW1FdmVudEVuZEVuY291
bnRlcmVkLCAwKTsKICAgICAgICAgcmV0dXJuIEZBTFNFOwogICAgIH0KLSAgICByZXR1cm4gQ0ZS
ZWFkU3RyZWFtSGFzQnl0ZXNBdmFpbGFibGUoZm9ybS0+Y3VycmVudFN0cmVhbSk7CisgICAgcmV0
dXJuIENGUmVhZFN0cmVhbUhhc0J5dGVzQXZhaWxhYmxlKGZvcm0tPmN1cnJlbnRTdHJlYW0uZ2V0
KCkpOwogfQogCiBzdGF0aWMgdm9pZCBmb3JtQ2xvc2UoQ0ZSZWFkU3RyZWFtUmVmLCB2b2lkKiBj
b250ZXh0KQpAQCAtMzI2LDcgKzMyNSw3IEBAIHN0YXRpYyB2b2lkIGZvcm1TY2hlZHVsZShDRlJl
YWRTdHJlYW1SZWYsIENGUnVuTG9vcFJlZiBydW5Mb29wLCBDRlN0cmluZ1JlZiBydW5MCiAgICAg
Rm9ybVN0cmVhbUZpZWxkcyogZm9ybSA9IHN0YXRpY19jYXN0PEZvcm1TdHJlYW1GaWVsZHMqPihj
b250ZXh0KTsKIAogICAgIGlmIChmb3JtLT5jdXJyZW50U3RyZWFtKQotICAgICAgICBDRlJlYWRT
dHJlYW1TY2hlZHVsZVdpdGhSdW5Mb29wKGZvcm0tPmN1cnJlbnRTdHJlYW0sIHJ1bkxvb3AsIHJ1
bkxvb3BNb2RlKTsKKyAgICAgICAgQ0ZSZWFkU3RyZWFtU2NoZWR1bGVXaXRoUnVuTG9vcChmb3Jt
LT5jdXJyZW50U3RyZWFtLmdldCgpLCBydW5Mb29wLCBydW5Mb29wTW9kZSk7CiAgICAgZm9ybS0+
c2NoZWR1bGVkUnVuTG9vcFBhaXJzLmFkZChTY2hlZHVsZVBhaXI6OmNyZWF0ZShydW5Mb29wLCBy
dW5Mb29wTW9kZSkpOwogfQogCkBAIC0zMzUsNyArMzM0LDcgQEAgc3RhdGljIHZvaWQgZm9ybVVu
c2NoZWR1bGUoQ0ZSZWFkU3RyZWFtUmVmLCBDRlJ1bkxvb3BSZWYgcnVuTG9vcCwgQ0ZTdHJpbmdS
ZWYgcnUKICAgICBGb3JtU3RyZWFtRmllbGRzKiBmb3JtID0gc3RhdGljX2Nhc3Q8Rm9ybVN0cmVh
bUZpZWxkcyo+KGNvbnRleHQpOwogCiAgICAgaWYgKGZvcm0tPmN1cnJlbnRTdHJlYW0pCi0gICAg
ICAgIENGUmVhZFN0cmVhbVVuc2NoZWR1bGVGcm9tUnVuTG9vcChmb3JtLT5jdXJyZW50U3RyZWFt
LCBydW5Mb29wLCBydW5Mb29wTW9kZSk7CisgICAgICAgIENGUmVhZFN0cmVhbVVuc2NoZWR1bGVG
cm9tUnVuTG9vcChmb3JtLT5jdXJyZW50U3RyZWFtLmdldCgpLCBydW5Mb29wLCBydW5Mb29wTW9k
ZSk7CiAgICAgZm9ybS0+c2NoZWR1bGVkUnVuTG9vcFBhaXJzLnJlbW92ZShTY2hlZHVsZVBhaXI6
OmNyZWF0ZShydW5Mb29wLCBydW5Mb29wTW9kZSkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0V2lu
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uQ0ZOZXRXaW4uY3BwCmluZGV4IDA1YjBlYzkyYjllYTcyNjY2YjY5YzA3YmUwMmY2MDY2
YmQ1ZjdkMTUuLjVkN2Q3OTYxNDQ2NWZjYWI1YmQ2YjY0MThlMDYwZjY4ZWIwOTRhNGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uQ0ZOZXRXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y2YvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ0ZOZXRXaW4uY3BwCkBAIC04OCwxMiArODgsMTAgQEAg
Q0ZVUkxTdG9yYWdlU2Vzc2lvblJlZiBjcmVhdGVQcml2YXRlU3RvcmFnZVNlc3Npb24oQ0ZTdHJp
bmdSZWYgaWRlbnRpZmllciwgT3B0aW8KICAgICAKICAgICAvLyBUaGUgcHJpdmF0ZSBzdG9yYWdl
IHNlc3Npb24gc2hvdWxkIGhhdmUgdGhlIHNhbWUgcHJvcGVydGllcyBhcyB0aGUgZGVmYXVsdCBz
dG9yYWdlIHNlc3Npb24sCiAgICAgLy8gd2l0aCB0aGUgZXhjZXB0aW9uIHRoYXQgaXQgc2hvdWxk
IGJlIGluLW1lbW9yeSBvbmx5IHN0b3JhZ2UuCi0gICAgQ0ZVUkxDYWNoZVJlZiBjYWNoZSA9IF9D
RlVSTFN0b3JhZ2VTZXNzaW9uQ29weUNhY2hlKGtDRkFsbG9jYXRvckRlZmF1bHQsIHN0b3JhZ2VT
ZXNzaW9uKTsKLSAgICBDRlVSTENhY2hlU2V0RGlza0NhcGFjaXR5KGNhY2hlLCAwKTsKLSAgICBD
RlVSTENhY2hlUmVmIGRlZmF1bHRDYWNoZSA9IENGVVJMQ2FjaGVDb3B5U2hhcmVkVVJMQ2FjaGUo
KTsKLSAgICBDRlVSTENhY2hlU2V0TWVtb3J5Q2FwYWNpdHkoY2FjaGUsIENGVVJMQ2FjaGVNZW1v
cnlDYXBhY2l0eShkZWZhdWx0Q2FjaGUpKTsKLSAgICBDRlJlbGVhc2UoZGVmYXVsdENhY2hlKTsK
LSAgICBDRlJlbGVhc2UoY2FjaGUpOworICAgIGF1dG8gY2FjaGUgPSBhZG9wdENGKF9DRlVSTFN0
b3JhZ2VTZXNzaW9uQ29weUNhY2hlKGtDRkFsbG9jYXRvckRlZmF1bHQsIHN0b3JhZ2VTZXNzaW9u
KSk7CisgICAgQ0ZVUkxDYWNoZVNldERpc2tDYXBhY2l0eShjYWNoZS5nZXQoKSwgMCk7CisgICAg
YXV0byBkZWZhdWx0Q2FjaGUgPSBhZG9wdENGKENGVVJMQ2FjaGVDb3B5U2hhcmVkVVJMQ2FjaGUo
KSk7CisgICAgQ0ZVUkxDYWNoZVNldE1lbW9yeUNhcGFjaXR5KGNhY2hlLmdldCgpLCBDRlVSTENh
Y2hlTWVtb3J5Q2FwYWNpdHkoZGVmYXVsdENhY2hlLmdldCgpKSk7CiAgICAgCiAgICAgQ0ZIVFRQ
Q29va2llU3RvcmFnZUFjY2VwdFBvbGljeSBjZkNvb2tpZUFjY2VwdFBvbGljeTsKICAgICBpZiAo
Y29va2llQWNjZXB0UG9saWN5KQpAQCAtMTAzLDkgKzEwMSw4IEBAIENGVVJMU3RvcmFnZVNlc3Np
b25SZWYgY3JlYXRlUHJpdmF0ZVN0b3JhZ2VTZXNzaW9uKENGU3RyaW5nUmVmIGlkZW50aWZpZXIs
IE9wdGlvCiAgICAgICAgIGNmQ29va2llQWNjZXB0UG9saWN5ID0gQ0ZIVFRQQ29va2llU3RvcmFn
ZUdldENvb2tpZUFjY2VwdFBvbGljeShkZWZhdWx0Q29va2llU3RvcmFnZSk7CiAgICAgfQogCi0g
ICAgQ0ZIVFRQQ29va2llU3RvcmFnZVJlZiBjb29raWVTdG9yYWdlID0gX0NGVVJMU3RvcmFnZVNl
c3Npb25Db3B5Q29va2llU3RvcmFnZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBzdG9yYWdlU2Vzc2lv
bik7Ci0gICAgQ0ZIVFRQQ29va2llU3RvcmFnZVNldENvb2tpZUFjY2VwdFBvbGljeShjb29raWVT
dG9yYWdlLCBjZkNvb2tpZUFjY2VwdFBvbGljeSk7Ci0gICAgQ0ZSZWxlYXNlKGNvb2tpZVN0b3Jh
Z2UpOworICAgIGF1dG8gY29va2llU3RvcmFnZSA9IGFkb3B0Q0YoX0NGVVJMU3RvcmFnZVNlc3Np
b25Db3B5Q29va2llU3RvcmFnZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBzdG9yYWdlU2Vzc2lvbikp
OworICAgIENGSFRUUENvb2tpZVN0b3JhZ2VTZXRDb29raWVBY2NlcHRQb2xpY3koY29va2llU3Rv
cmFnZS5nZXQoKSwgY2ZDb29raWVBY2NlcHRQb2xpY3kpOwogICAgIAogICAgIHJldHVybiBzdG9y
YWdlU2Vzc2lvbjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY2YvUmVzb3VyY2VIYW5kbGVDRk5ldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwCmluZGV4IGNlNGVkYjQ5YjczODcwM2Mx
YzNhMGIzODY1YzA4ZDc5MjRhNDYzMzcuLjNjMTdhZGM0MThiODA0Y2E0ZWY1NGE5OTM1ZmVjMzU1
NzQyM2JjODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2Yv
UmVzb3VyY2VIYW5kbGVDRk5ldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0LmNwcApAQCAtMTIwLDEyICsxMjAsMTEgQEAgc3Rh
dGljIHZvaWQgc2V0Q2xpZW50Q2VydGlmaWNhdGVJblNTTFByb3BlcnRpZXMoQ0ZNdXRhYmxlRGlj
dGlvbmFyeVJlZiBzc2xQcm9wcywKIHsKICAgICBpZiAoIXNzbFByb3BzIHx8ICFjZXJ0RGF0YSkK
ICAgICAgICAgcmV0dXJuOwotICAgIENGTXV0YWJsZURpY3Rpb25hcnlSZWYgY2VydERpY3QgPSBD
RkRpY3Rpb25hcnlDcmVhdGVNdXRhYmxlKGtDRkFsbG9jYXRvckRlZmF1bHQsIDAsICZrQ0ZUeXBl
RGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3Mp
OworICAgIGF1dG8gY2VydERpY3QgPSBhZG9wdENGKENGRGljdGlvbmFyeUNyZWF0ZU11dGFibGUo
a0NGQWxsb2NhdG9yRGVmYXVsdCwgMCwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAm
a0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcykpOwogICAgIGlmICghY2VydERpY3QpCiAg
ICAgICAgIHJldHVybjsKLSAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShjZXJ0RGljdCwgX2tDRldp
bmRvd3NTU0xMb2NhbENlcnQsIGNlcnREYXRhKTsKLSAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShz
c2xQcm9wcywgX2tDRlN0cmVhbVByb3BlcnR5V2luZG93c1NTTENlcnRJbmZvLCBjZXJ0RGljdCk7
Ci0gICAgQ0ZSZWxlYXNlKGNlcnREaWN0KTsKKyAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShjZXJ0
RGljdC5nZXQoKSwgX2tDRldpbmRvd3NTU0xMb2NhbENlcnQsIGNlcnREYXRhKTsKKyAgICBDRkRp
Y3Rpb25hcnlTZXRWYWx1ZShzc2xQcm9wcywgX2tDRlN0cmVhbVByb3BlcnR5V2luZG93c1NTTENl
cnRJbmZvLCBjZXJ0RGljdC5nZXQoKSk7CiB9CiAjZW5kaWYKIApAQCAtMjA1LDExICsyMDQsMTEg
QEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6Y3JlYXRlQ0ZVUkxDb25uZWN0aW9uKGJvb2wgc2hvdWxk
VXNlQ3JlZGVudGlhbFN0b3JhZ2UsIGJvb2wKICAgICBpZiAoc3NsUHJvcHMpCiAgICAgICAgIENG
VVJMUmVxdWVzdFNldFNTTFByb3BlcnRpZXMocmVxdWVzdC5nZXQoKSwgc3NsUHJvcHMuZ2V0KCkp
OwogCi0gICAgQ0ZNdXRhYmxlRGljdGlvbmFyeVJlZiBzdHJlYW1Qcm9wZXJ0aWVzICA9IENGRGlj
dGlvbmFyeUNyZWF0ZU11dGFibGUoMCwgMCwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tz
LCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcyk7CisgICAgYXV0byBzdHJlYW1Qcm9w
ZXJ0aWVzICA9IGFkb3B0Q0YoQ0ZEaWN0aW9uYXJ5Q3JlYXRlTXV0YWJsZSgwLCAwLCAma0NGVHlw
ZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tz
KSk7CiAKICAgICBpZiAoIXNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKSB7CiAgICAgICAgIC8v
IEF2b2lkIHVzaW5nIGV4aXN0aW5nIGNvbm5lY3Rpb25zLCBiZWNhdXNlIHRoZXkgbWF5IGJlIGFs
cmVhZHkgYXV0aGVudGljYXRlZC4KLSAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUoc3RyZWFt
UHJvcGVydGllcywgQ0ZTVFIoIl9rQ0ZVUkxDb25uZWN0aW9uU2Vzc2lvbklEIiksIENGU1RSKCJX
ZWJLaXRQcml2YXRlU2Vzc2lvbiIpKTsKKyAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUoc3Ry
ZWFtUHJvcGVydGllcy5nZXQoKSwgQ0ZTVFIoIl9rQ0ZVUkxDb25uZWN0aW9uU2Vzc2lvbklEIiks
IENGU1RSKCJXZWJLaXRQcml2YXRlU2Vzc2lvbiIpKTsKICAgICB9CiAKICAgICBzdGF0aWMgY29u
c3QgQ0ZTdHJpbmdSZWYga0NGVVJMQ29ubmVjdGlvblNvY2tldFN0cmVhbVByb3BlcnRpZXMgPSBD
RlNUUigia0NGVVJMQ29ubmVjdGlvblNvY2tldFN0cmVhbVByb3BlcnRpZXMiKTsKQEAgLTIyOCw4
ICsyMjcsNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpjcmVhdGVDRlVSTENvbm5lY3Rpb24oYm9v
bCBzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZSwgYm9vbAogI2VuZGlmCiAKICAgICAvLyBGSVhN
RTogVGhpcyBjb2RlIGlzIGRpZmZlcmVudCBmcm9tIGlPUyBjb2RlIGluIFJlc291cmNlSGFuZGxl
TWFjLm1tIGluIHRoYXQgaGVyZSB3ZSBpZ25vcmUgc3RyZWFtIHByb3BlcnRpZXMgdGhhdCB3ZXJl
IHByZXNlbnQgaW4gY2xpZW50IHByb3BlcnRpZXMuCi0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUo
cHJvcGVydGllc0RpY3Rpb25hcnkuZ2V0KCksIGtDRlVSTENvbm5lY3Rpb25Tb2NrZXRTdHJlYW1Q
cm9wZXJ0aWVzLCBzdHJlYW1Qcm9wZXJ0aWVzKTsKLSAgICBDRlJlbGVhc2Uoc3RyZWFtUHJvcGVy
dGllcyk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUocHJvcGVydGllc0RpY3Rpb25hcnkuZ2V0
KCksIGtDRlVSTENvbm5lY3Rpb25Tb2NrZXRTdHJlYW1Qcm9wZXJ0aWVzLCBzdHJlYW1Qcm9wZXJ0
aWVzLmdldCgpKTsKIAogICAgIGQtPm1fY29ubmVjdGlvbkRlbGVnYXRlID0gYWRvcHRSZWYobmV3
IFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWUo
dGhpcywgV1RGTW92ZShtZXNzYWdlUXVldWUpKSk7CiAgICAgZC0+bV9jb25uZWN0aW9uRGVsZWdh
dGUtPnNldHVwUmVxdWVzdChyZXF1ZXN0LmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxl
Z2F0ZVdpdGhPcGVyYXRpb25RdWV1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9u
UXVldWUuY3BwCmluZGV4IDI2NDY2Mzg4YjdjYTVhNjY1NmQwZWUyNjFlNzU2ZWUyMmZhMDQwMzEu
LjhlOGMzYWE3YTZiZTRjZWUzNmFhOGU5ZjNkYTNlNmEyMmExNWVjN2QgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5l
Y3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRl
V2l0aE9wZXJhdGlvblF1ZXVlLmNwcApAQCAtMTM3LDggKzEzNyw3IEBAIENGVVJMUmVxdWVzdFJl
ZiBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVl
Ojp3aWxsU2VuCiAgICAgaWYgKCFvcmlnaW5hbFJlZGlyZWN0UmVzcG9uc2UpIHsKICAgICAgICAg
UmV0YWluUHRyPENGU3RyaW5nUmVmPiBuZXdTY2hlbWUgPSBhZG9wdENGKENGVVJMQ29weVNjaGVt
ZShDRlVSTFJlcXVlc3RHZXRVUkwoY2ZSZXF1ZXN0KSkpOwogICAgICAgICBpZiAoQ0ZTdHJpbmdD
b21wYXJlKG5ld1NjaGVtZS5nZXQoKSwgbV9vcmlnaW5hbFNjaGVtZS5nZXQoKSwga0NGQ29tcGFy
ZUNhc2VJbnNlbnNpdGl2ZSkgPT0ga0NGQ29tcGFyZUVxdWFsVG8pIHsKLSAgICAgICAgICAgIENG
UmV0YWluKGNmUmVxdWVzdCk7Ci0gICAgICAgICAgICByZXR1cm4gY2ZSZXF1ZXN0OworICAgICAg
ICAgICAgcmV0dXJuIGNmUmVxdWVzdC5sZWFrUmVmKCk7CiAgICAgICAgIH0KICAgICB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1
ZXN0Q0ZOZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJj
ZVJlcXVlc3RDRk5ldC5jcHAKaW5kZXggZDJkMDkzYzNjMzIwMDczYjZhNWFhYmU5M2QwY2ZmZmE5
MWU5NTJiYi4uZjZlMWI5YjVkM2E1YmE3YWUzNWE3NzkyM2Q1NmQ1M2VhZTMyNzE5OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3RD
Rk5ldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJj
ZVJlcXVlc3RDRk5ldC5jcHAKQEAgLTI4MiwxMCArMjgyLDggQEAgdm9pZCBSZXNvdXJjZVJlcXVl
c3Q6OmRvVXBkYXRlUmVzb3VyY2VSZXF1ZXN0KCkKICAgICAgICAgbV9jYWNoZVBvbGljeSA9IGZy
b21QbGF0Zm9ybVJlcXVlc3RDYWNoZVBvbGljeShDRlVSTFJlcXVlc3RHZXRDYWNoZVBvbGljeSht
X2NmUmVxdWVzdC5nZXQoKSkpOwogICAgIG1fdGltZW91dEludGVydmFsID0gQ0ZVUkxSZXF1ZXN0
R2V0VGltZW91dEludGVydmFsKG1fY2ZSZXF1ZXN0LmdldCgpKTsKICAgICBtX2ZpcnN0UGFydHlG
b3JDb29raWVzID0gQ0ZVUkxSZXF1ZXN0R2V0TWFpbkRvY3VtZW50VVJMKG1fY2ZSZXF1ZXN0Lmdl
dCgpKTsKLSAgICBpZiAoQ0ZTdHJpbmdSZWYgbWV0aG9kID0gQ0ZVUkxSZXF1ZXN0Q29weUhUVFBS
ZXF1ZXN0TWV0aG9kKG1fY2ZSZXF1ZXN0LmdldCgpKSkgewotICAgICAgICBtX2h0dHBNZXRob2Qg
PSBtZXRob2Q7Ci0gICAgICAgIENGUmVsZWFzZShtZXRob2QpOwotICAgIH0KKyAgICBpZiAoYXV0
byBtZXRob2QgPSBhZG9wdENGKENGVVJMUmVxdWVzdENvcHlIVFRQUmVxdWVzdE1ldGhvZChtX2Nm
UmVxdWVzdC5nZXQoKSkpKQorICAgICAgICBtX2h0dHBNZXRob2QgPSBtZXRob2QuZ2V0KCk7CiAg
ICAgbV9hbGxvd0Nvb2tpZXMgPSBDRlVSTFJlcXVlc3RTaG91bGRIYW5kbGVIVFRQQ29va2llcyht
X2NmUmVxdWVzdC5nZXQoKSk7CiAKICAgICBpZiAocmVzb3VyY2VQcmlvcml0aWVzRW5hYmxlZCgp
KQpAQCAtMzA2LDE0ICszMDQsMTMgQEAgdm9pZCBSZXNvdXJjZVJlcXVlc3Q6OmRvVXBkYXRlUmVz
b3VyY2VSZXF1ZXN0KCkKICNlbmRpZgogCiAgICAgbV9odHRwSGVhZGVyRmllbGRzLmNsZWFyKCk7
Ci0gICAgaWYgKENGRGljdGlvbmFyeVJlZiBoZWFkZXJzID0gQ0ZVUkxSZXF1ZXN0Q29weUFsbEhU
VFBIZWFkZXJGaWVsZHMobV9jZlJlcXVlc3QuZ2V0KCkpKSB7Ci0gICAgICAgIENGSW5kZXggaGVh
ZGVyQ291bnQgPSBDRkRpY3Rpb25hcnlHZXRDb3VudChoZWFkZXJzKTsKKyAgICBpZiAoYXV0byBo
ZWFkZXJzID0gYWRvcHRDRihDRlVSTFJlcXVlc3RDb3B5QWxsSFRUUEhlYWRlckZpZWxkcyhtX2Nm
UmVxdWVzdC5nZXQoKSkpKSB7CisgICAgICAgIENGSW5kZXggaGVhZGVyQ291bnQgPSBDRkRpY3Rp
b25hcnlHZXRDb3VudChoZWFkZXJzLmdldCgpKTsKICAgICAgICAgVmVjdG9yPGNvbnN0IHZvaWQq
LCAxMjg+IGtleXMoaGVhZGVyQ291bnQpOwogICAgICAgICBWZWN0b3I8Y29uc3Qgdm9pZCosIDEy
OD4gdmFsdWVzKGhlYWRlckNvdW50KTsKLSAgICAgICAgQ0ZEaWN0aW9uYXJ5R2V0S2V5c0FuZFZh
bHVlcyhoZWFkZXJzLCBrZXlzLmRhdGEoKSwgdmFsdWVzLmRhdGEoKSk7CisgICAgICAgIENGRGlj
dGlvbmFyeUdldEtleXNBbmRWYWx1ZXMoaGVhZGVycy5nZXQoKSwga2V5cy5kYXRhKCksIHZhbHVl
cy5kYXRhKCkpOwogICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGhlYWRlckNvdW50OyArK2kp
CiAgICAgICAgICAgICBtX2h0dHBIZWFkZXJGaWVsZHMuc2V0KChDRlN0cmluZ1JlZilrZXlzW2ld
LCAoQ0ZTdHJpbmdSZWYpdmFsdWVzW2ldKTsKLSAgICAgICAgQ0ZSZWxlYXNlKGhlYWRlcnMpOwog
ICAgIH0KIAogICAgIG1fcmVzcG9uc2VDb250ZW50RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxiYWNr
QXJyYXkuY2xlYXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9E
cmFnSW1hZ2VDR1dpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdl
Q0dXaW4uY3BwCmluZGV4IDM0ZWQ5ZWY4Y2Y0Zjg2NmNhMDNmZGNhOTMwNGE5NjA5NmJjNjViOWUu
LmI0NWU0ZDRhMGEyNWRmY2M0NzZmOWFhYmY3NTdjNzBhZTIyYzk5NWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnSW1hZ2VDR1dpbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdJbWFnZUNHV2luLmNwcApAQCAtNjcsMTUgKzY3LDEz
IEBAIEdESU9iamVjdDxIQklUTUFQPiBhbGxvY0ltYWdlKEhEQyBkYywgSW50U2l6ZSBzaXplLCBD
R0NvbnRleHRSZWYgKnRhcmdldFJlZikKICAgICByZXR1cm4gaGJtcDsKIH0KIAotc3RhdGljIENH
Q29udGV4dFJlZiBjcmVhdGVDZ0NvbnRleHRGcm9tQml0bWFwKEhCSVRNQVAgYml0bWFwKQorc3Rh
dGljIFJldGFpblB0cjxDR0NvbnRleHRSZWY+IGNyZWF0ZUNnQ29udGV4dEZyb21CaXRtYXAoSEJJ
VE1BUCBiaXRtYXApCiB7CiAgICAgQklUTUFQIGluZm87CiAgICAgR2V0T2JqZWN0KGJpdG1hcCwg
c2l6ZW9mKGluZm8pLCAmaW5mbyk7CiAgICAgQVNTRVJUKGluZm8uYm1CaXRzUGl4ZWwgPT0gMzIp
OwogCi0gICAgQ0dDb250ZXh0UmVmIGJpdG1hcENvbnRleHQgPSBDR0JpdG1hcENvbnRleHRDcmVh
dGUoaW5mby5ibUJpdHMsIGluZm8uYm1XaWR0aCwgaW5mby5ibUhlaWdodCwgOCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmZvLmJtV2lk
dGhCeXRlcywgc1JHQkNvbG9yU3BhY2VSZWYoKSwga0NHQml0bWFwQnl0ZU9yZGVyMzJMaXR0bGUg
fCBrQ0dJbWFnZUFscGhhTm9uZVNraXBGaXJzdCk7Ci0gICAgcmV0dXJuIGJpdG1hcENvbnRleHQ7
CisgICAgcmV0dXJuIGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlKGluZm8uYm1CaXRzLCBp
bmZvLmJtV2lkdGgsIGluZm8uYm1IZWlnaHQsIDgsIGluZm8uYm1XaWR0aEJ5dGVzLCBzUkdCQ29s
b3JTcGFjZVJlZigpLCBrQ0dCaXRtYXBCeXRlT3JkZXIzMkxpdHRsZSB8IGtDR0ltYWdlQWxwaGFO
b25lU2tpcEZpcnN0KSk7CiB9CiAKIERyYWdJbWFnZVJlZiBzY2FsZURyYWdJbWFnZShEcmFnSW1h
Z2VSZWYgaW1hZ2VSZWYsIEZsb2F0U2l6ZSBzY2FsZSkKQEAgLTEwMSwxNSArOTksMTMgQEAgRHJh
Z0ltYWdlUmVmIHNjYWxlRHJhZ0ltYWdlKERyYWdJbWFnZVJlZiBpbWFnZVJlZiwgRmxvYXRTaXpl
IHNjYWxlKQogICAgIGlmICghaGJtcCkKICAgICAgICAgZ290byBleGl0OwogCi0gICAgQ0dDb250
ZXh0UmVmIHNyY0NvbnRleHQgPSBjcmVhdGVDZ0NvbnRleHRGcm9tQml0bWFwKGltYWdlLmdldCgp
KTsKLSAgICBDR0ltYWdlUmVmIHNyY0ltYWdlID0gQ0dCaXRtYXBDb250ZXh0Q3JlYXRlSW1hZ2Uo
c3JjQ29udGV4dCk7CisgICAgYXV0byBzcmNDb250ZXh0ID0gY3JlYXRlQ2dDb250ZXh0RnJvbUJp
dG1hcChpbWFnZS5nZXQoKSk7CisgICAgYXV0byBzcmNJbWFnZSA9IGFkb3B0Q0YoQ0dCaXRtYXBD
b250ZXh0Q3JlYXRlSW1hZ2Uoc3JjQ29udGV4dCkpOwogICAgIENHUmVjdCByZWN0OwogICAgIHJl
Y3Qub3JpZ2luLnggPSAwOwogICAgIHJlY3Qub3JpZ2luLnkgPSAwOwogICAgIHJlY3Quc2l6ZSA9
IGRzdFNpemU7Ci0gICAgQ0dDb250ZXh0RHJhd0ltYWdlKHRhcmdldENvbnRleHQsIHJlY3QsIHNy
Y0ltYWdlKTsKLSAgICBDR0ltYWdlUmVsZWFzZShzcmNJbWFnZSk7Ci0gICAgQ0dDb250ZXh0UmVs
ZWFzZShzcmNDb250ZXh0KTsKKyAgICBDR0NvbnRleHREcmF3SW1hZ2UodGFyZ2V0Q29udGV4dCwg
cmVjdCwgc3JjSW1hZ2UuZ2V0KCkpOwogICAgIENHQ29udGV4dFJlbGVhc2UodGFyZ2V0Q29udGV4
dCk7CiAKIGV4aXQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vV2Vi
Q29yZUJ1bmRsZVdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vV2ViQ29yZUJ1
bmRsZVdpbi5jcHAKaW5kZXggM2I3YzhlMWEyMGE0NTFhZDdjYjM4NDhlYjYxNjIyZTk3ZmQwMjRj
Ny4uOTU2M2RmM2UyZWQ3NjAwNDA2NzM1ODAzNmJiZTc3YWE1MTJmMmQzOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1dlYkNvcmVCdW5kbGVXaW4uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9XZWJDb3JlQnVuZGxlV2luLmNwcApAQCAtMzUsMTIg
KzM1LDEwIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIENGQnVuZGxlUmVmIGNy
ZWF0ZVdlYktpdEJ1bmRsZSgpCitzdGF0aWMgUmV0YWluUHRyPENGQnVuZGxlUmVmPiBjcmVhdGVX
ZWJLaXRCdW5kbGUoKQogewotICAgIGlmIChDRkJ1bmRsZVJlZiBleGlzdGluZ0J1bmRsZSA9IENG
QnVuZGxlR2V0QnVuZGxlV2l0aElkZW50aWZpZXIoQ0ZTVFIoImNvbS5hcHBsZS5XZWJLaXQiKSkp
IHsKLSAgICAgICAgQ0ZSZXRhaW4oZXhpc3RpbmdCdW5kbGUpOworICAgIGlmIChDRkJ1bmRsZVJl
ZiBleGlzdGluZ0J1bmRsZSA9IENGQnVuZGxlR2V0QnVuZGxlV2l0aElkZW50aWZpZXIoQ0ZTVFIo
ImNvbS5hcHBsZS5XZWJLaXQiKSkpCiAgICAgICAgIHJldHVybiBleGlzdGluZ0J1bmRsZTsKLSAg
ICB9CiAKICAgICB3Y2hhcl90IGRsbFBhdGhCdWZmZXJbTUFYX1BBVEhdOwogICAgIERXT1JEIGxl
bmd0aCA9IDo6R2V0TW9kdWxlRmlsZU5hbWVXKFdlYkNvcmU6Omluc3RhbmNlSGFuZGxlKCksIGRs
bFBhdGhCdWZmZXIsIFdURl9BUlJBWV9MRU5HVEgoZGxsUGF0aEJ1ZmZlcikpOwpAQCAtNTIsMTQg
KzUwLDE0IEBAIHN0YXRpYyBDRkJ1bmRsZVJlZiBjcmVhdGVXZWJLaXRCdW5kbGUoKQogICAgIFJl
dGFpblB0cjxDRlVSTFJlZj4gZGxsRGlyZWN0b3J5VVJMID0gYWRvcHRDRihDRlVSTENyZWF0ZUNv
cHlEZWxldGluZ0xhc3RQYXRoQ29tcG9uZW50KDAsIGRsbFVSTC5nZXQoKSkpOwogICAgIFJldGFp
blB0cjxDRlVSTFJlZj4gcmVzb3VyY2VzRGlyZWN0b3J5VVJMID0gYWRvcHRDRihDRlVSTENyZWF0
ZUNvcHlBcHBlbmRpbmdQYXRoQ29tcG9uZW50KDAsIGRsbERpcmVjdG9yeVVSTC5nZXQoKSwgQ0ZT
VFIoIldlYktpdC5yZXNvdXJjZXMiKSwgdHJ1ZSkpOwogCi0gICAgcmV0dXJuIENGQnVuZGxlQ3Jl
YXRlKDAsIHJlc291cmNlc0RpcmVjdG9yeVVSTC5nZXQoKSk7CisgICAgcmV0dXJuIGFkb3B0Q0Yo
Q0ZCdW5kbGVDcmVhdGUoMCwgcmVzb3VyY2VzRGlyZWN0b3J5VVJMLmdldCgpKSk7CiB9CiAKIENG
QnVuZGxlUmVmIHdlYktpdEJ1bmRsZSgpCiB7Ci0gICAgc3RhdGljIENGQnVuZGxlUmVmIGJ1bmRs
ZSA9IGNyZWF0ZVdlYktpdEJ1bmRsZSgpOwotICAgIEFTU0VSVChidW5kbGUpOwotICAgIHJldHVy
biBidW5kbGU7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxDRkJ1bmRsZVJl
Zj4+IGJ1bmRsZSA9IGNyZWF0ZVdlYktpdEJ1bmRsZSgpOworICAgIEFTU0VSVChidW5kbGUuZ2V0
KCkpOworICAgIHJldHVybiBidW5kbGUuZ2V0KCkuZ2V0KCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVt
ZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbQppbmRl
eCBhM2I3NDA2ZGE0OTEyNzFiMDE2ODkyMmI2NjJmZTIyYmFiMzc5YTI5Li40NjNlYmEwNmNkMjk5
MWZhZmYxN2EzNGMxZWQwOTdiMWQ3MWUxYmY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRoZW1lTWFjLm1tCkBAIC0xNTMsMTAgKzE1Myw5IEBAIC0gKENGRGljdGlvbmFyeVJl
ZilfYWRqdXN0ZWRDb3JlVUlEcmF3T3B0aW9uc0ZvckRyYXdpbmdCb3JkZXJzT25seTooQ0ZEaWN0
aW9uYXJ5CiAKICAgICAvLyBGSVhNRTogVGhpcyBpcyBhIHdvcmthcm91bmQgZm9yIDxyZGFyOi8v
cHJvYmxlbS8xMTM4NTQ2MT4uIFdoZW4gdGhhdCBidWcgaXMgcmVzb2x2ZWQsIHdlIHNob3VsZCBy
ZW1vdmUgdGhpcyBjb2RlLAogICAgIC8vIGFzIHdlbGwgYXMgdGhlIGludGVybmFsIG1ldGhvZCBv
dmVycmlkZXMgYmVsb3cuCi0gICAgQ0ZNdXRhYmxlRGljdGlvbmFyeVJlZiBjb3JlVUlEcmF3T3B0
aW9ucyA9IENGRGljdGlvbmFyeUNyZWF0ZU11dGFibGVDb3B5KE5VTEwsIDAsIGRlZmF1bHRPcHRp
b25zKTsKLSAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShjb3JlVUlEcmF3T3B0aW9ucywgQ0ZTVFIo
ImJvcmRlcnMgb25seSIpLCBrQ0ZCb29sZWFuVHJ1ZSk7Ci0gICAgQ0ZBdXRvcmVsZWFzZShjb3Jl
VUlEcmF3T3B0aW9ucyk7Ci0gICAgcmV0dXJuIGNvcmVVSURyYXdPcHRpb25zOworICAgIGF1dG8g
Y29yZVVJRHJhd09wdGlvbnMgPSBhZG9wdENGKENGRGljdGlvbmFyeUNyZWF0ZU11dGFibGVDb3B5
KE5VTEwsIDAsIGRlZmF1bHRPcHRpb25zKSk7CisgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUoY29y
ZVVJRHJhd09wdGlvbnMuZ2V0KCksIENGU1RSKCJib3JkZXJzIG9ubHkiKSwga0NGQm9vbGVhblRy
dWUpOworICAgIHJldHVybiBjb3JlVUlEcmF3T3B0aW9ucy5hdXRvcmVsZWFzZSgpOwogfQogCiAt
IChDRkRpY3Rpb25hcnlSZWYpX2NvcmVVSURyYXdPcHRpb25zV2l0aEZyYW1lOihOU1JlY3QpY2Vs
bEZyYW1lIGluVmlldzooTlNWaWV3ICopY29udHJvbFZpZXcgaW5jbHVkZUZvY3VzOihCT09MKWlu
Y2x1ZGVGb2N1cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9jb2NvYS9XZWJB
cmNoaXZlRHVtcFN1cHBvcnQuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvY29jb2EvV2ViQXJj
aGl2ZUR1bXBTdXBwb3J0LmgKaW5kZXggMmQwM2VmM2YyOTg2ZDhiMjcxYWI3MzcwODMzOTYxZWE3
NDZhODE5ZS4uMjA5YTcxMTg1N2ViZDc3NjZhMTk5MTg2MjkwYjY0MWMwN2MxNWEyYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9jb2NvYS9XZWJBcmNoaXZlRHVtcFN1cHBvcnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL2NvY29hL1dlYkFyY2hpdmVEdW1wU3VwcG9y
dC5oCkBAIC0yNiw5ICsyNiwxMCBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlIDxDb3JlRm91
bmRhdGlvbi9Db3JlRm91bmRhdGlvbi5oPgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmVUZXN0U3VwcG9ydCB7CiAKLUNGU3RyaW5nUmVmIGNyZWF0ZVhNTFN0
cmluZ0Zyb21XZWJBcmNoaXZlRGF0YShDRkRhdGFSZWYgd2ViQXJjaGl2ZURhdGEpIFdURl9FWFBP
UlRfUFJJVkFURTsKK1JldGFpblB0cjxDRlN0cmluZ1JlZj4gY3JlYXRlWE1MU3RyaW5nRnJvbVdl
YkFyY2hpdmVEYXRhKENGRGF0YVJlZiB3ZWJBcmNoaXZlRGF0YSkgV1RGX0VYUE9SVF9QUklWQVRF
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlVGVzdFN1cHBvcnQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvY29jb2EvV2ViQXJjaGl2ZUR1bXBTdXBwb3J0Lm1tIGIvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9jb2NvYS9XZWJBcmNoaXZlRHVtcFN1cHBvcnQubW0KaW5kZXggNWU3
ZDhlMTZhOThmYjcwMWY0N2M1ZTQ5N2ZiYTkxMjNkZWI3OWRjMS4uYmU2NjA3OGE4M2QwY2E0OWI3
MWExZmI1M2MyM2E4YzZiODFkNzY3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9jb2NvYS9XZWJBcmNoaXZlRHVtcFN1cHBvcnQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9jb2NvYS9XZWJBcmNoaXZlRHVtcFN1cHBvcnQubW0KQEAgLTIwMCw3ICsyMDAsNyBAQCBz
dGF0aWMgQ0ZDb21wYXJpc29uUmVzdWx0IGNvbXBhcmVSZXNvdXJjZVVSTHMoY29uc3Qgdm9pZCAq
dmFsMSwgY29uc3Qgdm9pZCAqdmFsMgogICAgIHJldHVybiBDRlN0cmluZ0NvbXBhcmUodXJsMSwg
dXJsMiwga0NGQ29tcGFyZUFuY2hvcmVkKTsKIH0KIAotQ0ZTdHJpbmdSZWYgY3JlYXRlWE1MU3Ry
aW5nRnJvbVdlYkFyY2hpdmVEYXRhKENGRGF0YVJlZiB3ZWJBcmNoaXZlRGF0YSkKK1JldGFpblB0
cjxDRlN0cmluZ1JlZj4gY3JlYXRlWE1MU3RyaW5nRnJvbVdlYkFyY2hpdmVEYXRhKENGRGF0YVJl
ZiB3ZWJBcmNoaXZlRGF0YSkKIHsKICAgICBDRkVycm9yUmVmIGVycm9yID0gMDsKICAgICBDRlBy
b3BlcnR5TGlzdEZvcm1hdCBmb3JtYXQgPSBrQ0ZQcm9wZXJ0eUxpc3RCaW5hcnlGb3JtYXRfdjFf
MDsKQEAgLTIwOCw4ICsyMDgsOCBAQCBDRlN0cmluZ1JlZiBjcmVhdGVYTUxTdHJpbmdGcm9tV2Vi
QXJjaGl2ZURhdGEoQ0ZEYXRhUmVmIHdlYkFyY2hpdmVEYXRhKQogCiAgICAgaWYgKCFwcm9wZXJ0
eUxpc3QpIHsKICAgICAgICAgaWYgKGVycm9yKQotICAgICAgICAgICAgcmV0dXJuIENGRXJyb3JD
b3B5RGVzY3JpcHRpb24oZXJyb3IpOwotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q0ZTdHJp
bmdSZWY+KENGUmV0YWluKENGU1RSKCJBbiB1bmtub3duIGVycm9yIG9jY3VycmVkIGNvbnZlcnRp
bmcgZGF0YSB0byBwcm9wZXJ0eSBsaXN0LiIpKSk7CisgICAgICAgICAgICByZXR1cm4gYWRvcHRD
RihDRkVycm9yQ29weURlc2NyaXB0aW9uKGVycm9yKSk7CisgICAgICAgIHJldHVybiBDRlNUUigi
QW4gdW5rbm93biBlcnJvciBvY2N1cnJlZCBjb252ZXJ0aW5nIGRhdGEgdG8gcHJvcGVydHkgbGlz
dC4iKTsKICAgICB9CiAKICAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlQXJyYXlSZWY+IHJlc291cmNl
cyA9IGFkb3B0Q0YoQ0ZBcnJheUNyZWF0ZU11dGFibGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgMCwg
JmtDRlR5cGVBcnJheUNhbGxCYWNrcykpOwpAQCAtMjUwLDggKzI1MCw4IEBAIENGU3RyaW5nUmVm
IGNyZWF0ZVhNTFN0cmluZ0Zyb21XZWJBcmNoaXZlRGF0YShDRkRhdGFSZWYgd2ViQXJjaGl2ZURh
dGEpCiAKICAgICBpZiAoIXhtbERhdGEpIHsKICAgICAgICAgaWYgKGVycm9yKQotICAgICAgICAg
ICAgcmV0dXJuIENGRXJyb3JDb3B5RGVzY3JpcHRpb24oZXJyb3IpOwotICAgICAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8Q0ZTdHJpbmdSZWY+KENGUmV0YWluKENGU1RSKCJBbiB1bmtub3duIGVycm9y
IG9jY3VycmVkIGNvbnZlcnRpbmcgcHJvcGVydHkgbGlzdCB0byBkYXRhLiIpKSk7CisgICAgICAg
ICAgICByZXR1cm4gYWRvcHRDRihDRkVycm9yQ29weURlc2NyaXB0aW9uKGVycm9yKSk7CisgICAg
ICAgIHJldHVybiBDRlNUUigiQW4gdW5rbm93biBlcnJvciBvY2N1cnJlZCBjb252ZXJ0aW5nIHBy
b3BlcnR5IGxpc3QgdG8gZGF0YS4iKTsKICAgICB9CiAKICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdS
ZWY+IHhtbFN0cmluZyA9IGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVGcm9tRXh0ZXJuYWxSZXByZXNl
bnRhdGlvbihrQ0ZBbGxvY2F0b3JEZWZhdWx0LCB4bWxEYXRhLmdldCgpLCBrQ0ZTdHJpbmdFbmNv
ZGluZ1VURjgpKTsKQEAgLTI2Niw3ICsyNjYsNyBAQCBDRlN0cmluZ1JlZiBjcmVhdGVYTUxTdHJp
bmdGcm9tV2ViQXJjaGl2ZURhdGEoQ0ZEYXRhUmVmIHdlYkFyY2hpdmVEYXRhKQogICAgIHF1aWNr
TG9va1VSTFJlcGxhY2VtZW50cygpLmNsZWFyKCk7CiAjZW5kaWYKIAotICAgIHJldHVybiBzdHJp
bmcubGVha1JlZigpOworICAgIHJldHVybiBzdHJpbmc7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmVUZXN0U3VwcG9ydApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9jb2Nv
YS9XZWJWaWV3VmlzdWFsSWRlbnRpZmljYXRpb25PdmVybGF5Lm1tIGIvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9jb2NvYS9XZWJWaWV3VmlzdWFsSWRlbnRpZmljYXRpb25PdmVybGF5Lm1tCmluZGV4
IDFmN2E2MmFhM2ZjZjQ3Y2MyMzEwOWIzZmJiMzkzZWFiYjgzMzNmNDIuLjlkYTg4MzBiYTJiOGUw
N2M1ZjY3ZjBlMzQ2ZGJiZTkxYjljZWUzN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvY29jb2EvV2ViVmlld1Zpc3VhbElkZW50aWZpY2F0aW9uT3ZlcmxheS5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL2NvY29hL1dlYlZpZXdWaXN1YWxJZGVudGlmaWNhdGlvbk92
ZXJsYXkubW0KQEAgLTEyNCw3ICsxMjQsNyBAQCAtICh2b2lkKW9ic2VydmVWYWx1ZUZvcktleVBh
dGg6KE5TU3RyaW5nICopa2V5UGF0aCBvZk9iamVjdDooaWQpb2JqZWN0IGNoYW5nZTooTgogc3Rh
dGljIENURm9udFJlZiBpZGVudGlmaWNhdGlvbkZvbnQoKQogewogICAgIGF1dG8gbWF0cml4ID0g
Q0dBZmZpbmVUcmFuc2Zvcm1JZGVudGl0eTsKLSAgICByZXR1cm4gKENURm9udFJlZilDRkF1dG9y
ZWxlYXNlKENURm9udENyZWF0ZVdpdGhOYW1lKENGU1RSKCJIZWx2ZXRpY2EiKSwgMjAsICZtYXRy
aXgpKTsKKyAgICByZXR1cm4gYWRvcHRDRihDVEZvbnRDcmVhdGVXaXRoTmFtZShDRlNUUigiSGVs
dmV0aWNhIiksIDIwLCAmbWF0cml4KSkuYXV0b3JlbGVhc2UoKTsKIH0KIAogY29uc3RleHByIENH
RmxvYXQgaG9yaXpvbnRhbE1hcmdpbiA9IDE1OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9tYWMvU3RyaW5nVXRpbGl0aWVzLm1tIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9t
YWMvU3RyaW5nVXRpbGl0aWVzLm1tCmluZGV4IDY4NGZkODg3OTc2NTNmNDhjYjM2YzQ1ZGIyMDgx
N2Y0YzJhZTg0M2IuLjZlMmVlNmUzYjMwYjZmZDRjZjkwNDJiNDliZGJlNWRmNzJjMTA3MWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vbWFjL1N0cmluZ1V0aWxpdGllcy5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL21hYy9TdHJpbmdVdGlsaXRpZXMubW0KQEAgLTM2
LDcgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIE5TU3RyaW5nICpuc1N0cmluZ0Zyb21X
ZWJDb3JlU3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogewotICAgIHJldHVybiBzdHJpbmcu
aXNFbXB0eSgpID8gQCIiIDogQ0ZCcmlkZ2luZ1JlbGVhc2UoV0tTdHJpbmdDb3B5Q0ZTdHJpbmco
MCwgdG9BUEkoc3RyaW5nLmltcGwoKSkpKTsKKyAgICByZXR1cm4gc3RyaW5nLmlzRW1wdHkoKSA/
IEAiIiA6IGFkb3B0Q0YoV0tTdHJpbmdDb3B5Q0ZTdHJpbmcoMCwgdG9BUEkoc3RyaW5nLmltcGwo
KSkpKS5icmlkZ2luZ0F1dG9yZWxlYXNlKCk7CiB9CiAKICNpZiBFTkFCTEUoVEVMRVBIT05FX05V
TUJFUl9ERVRFQ1RJT04pICYmIFBMQVRGT1JNKE1BQykKQEAgLTY1LDExICs2NSwxMSBAQCBOU1N0
cmluZyAqZm9ybWF0dGVkUGhvbmVOdW1iZXJTdHJpbmcoTlNTdHJpbmcgKm9yaWdpbmFsUGhvbmVO
dW1iZXIpCiAgICAgaWYgKCFwaG9uZU51bWJlcikKICAgICAgICAgcmV0dXJuIG9yaWdpbmFsUGhv
bmVOdW1iZXI7CiAKLSAgICBDRlN0cmluZ1JlZiBwaG9uZU51bWJlclN0cmluZyA9IENGUGhvbmVO
dW1iZXJDb3B5Rm9ybWF0dGVkUmVwcmVzZW50YXRpb24ocGhvbmVOdW1iZXIuZ2V0KCkpOworICAg
IGF1dG8gcGhvbmVOdW1iZXJTdHJpbmcgPSBhZG9wdENGKENGUGhvbmVOdW1iZXJDb3B5Rm9ybWF0
dGVkUmVwcmVzZW50YXRpb24ocGhvbmVOdW1iZXIuZ2V0KCkpKTsKICAgICBpZiAoIXBob25lTnVt
YmVyU3RyaW5nKQotICAgICAgICBwaG9uZU51bWJlclN0cmluZyA9IENGUGhvbmVOdW1iZXJDb3B5
VW5mb3JtYXR0ZWRSZXByZXNlbnRhdGlvbihwaG9uZU51bWJlci5nZXQoKSk7CisgICAgICAgIHBo
b25lTnVtYmVyU3RyaW5nID0gYWRvcHRDRihDRlBob25lTnVtYmVyQ29weVVuZm9ybWF0dGVkUmVw
cmVzZW50YXRpb24ocGhvbmVOdW1iZXIuZ2V0KCkpKTsKIAotICAgIHJldHVybiBDRkJyaWRnaW5n
UmVsZWFzZShwaG9uZU51bWJlclN0cmluZyk7CisgICAgcmV0dXJuIHBob25lTnVtYmVyU3RyaW5n
LmJyaWRnaW5nQXV0b3JlbGVhc2UoKTsKIH0KIAogI2Vsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvUGx1Z2luUHJvY2Vzcy9tYWMvUGx1Z2luUHJvY2Vzc01hYy5tbSBiL1NvdXJjZS9XZWJL
aXQvUGx1Z2luUHJvY2Vzcy9tYWMvUGx1Z2luUHJvY2Vzc01hYy5tbQppbmRleCAzMWU5Y2Y5MmYw
MmVlMGNjZjEwN2FmZmU1NmMwNTM0OGZiYzVjNGYwLi5jZmE2NmE0ZTJmMjYxMzdiM2M5ZjcyNTdm
NjU5M2Y0OGYxNDFhNDk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3Mv
bWFjL1BsdWdpblByb2Nlc3NNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNz
L21hYy9QbHVnaW5Qcm9jZXNzTWFjLm1tCkBAIC0zMTEsMjAgKzMxMSwyMCBAQCBzdGF0aWMgdm9p
ZCBpbml0aWFsaXplQ29jb2FPdmVycmlkZXMoKQogCiAgICAgTlNOb3RpZmljYXRpb25DZW50ZXIg
KmRlZmF1bHRDZW50ZXIgPSBbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl07CiAK
KyAgICAvLyBXZSBsZWFrIHRoZSB0d28gb2JzZXJ2ZXJzIHNvIHRoYXQgdGhleSBvYnNlcnZlIG5v
dGlmaWNhdGlvbnMgZm9yIHRoZSBsaWZldGltZSBvZiB0aGUgcHJvY2Vzcy4KICAgICAvLyBUcmFj
ayB3aGVuIGFueSBDb2NvYSB3aW5kb3cgaXMgYWJvdXQgdG8gYmUgYmUgc2hvd24uCi0gICAgaWQg
b3JkZXJPblNjcmVlbk9ic2VydmVyID0gW2RlZmF1bHRDZW50ZXIgYWRkT2JzZXJ2ZXJGb3JOYW1l
Ok5TV2luZG93V2lsbE9yZGVyT25TY3JlZW5Ob3RpZmljYXRpb24KLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYmplY3Q6bmlsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1
ZXVlOm5pbAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB1c2luZ0Jsb2NrOl4oTlNOb3RpZmljYXRpb24gKm5vdGlmaWNhdGlvbikgeyBm
dWxsc2NyZWVuV2luZG93VHJhY2tlcigpLndpbmRvd1Nob3duKFtub3RpZmljYXRpb24gb2JqZWN0
XSk7IH1dOworICAgIGlkIG9yZGVyT25TY3JlZW5PYnNlcnZlciA9IHJldGFpblB0cihbZGVmYXVs
dENlbnRlciBhZGRPYnNlcnZlckZvck5hbWU6TlNXaW5kb3dXaWxsT3JkZXJPblNjcmVlbk5vdGlm
aWNhdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBvYmplY3Q6bmlsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxdWV1ZTpuaWwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB1c2luZ0Jsb2NrOl4oTlNOb3RpZmljYXRpb24gKm5vdGlmaWNhdGlvbikgeyBmdWxsc2Ny
ZWVuV2luZG93VHJhY2tlcigpLndpbmRvd1Nob3duKFtub3RpZmljYXRpb24gb2JqZWN0XSk7IH1d
KS5sZWFrUmVmKCk7CisgICAgVU5VU0VEX1BBUkFNKG9yZGVyT25TY3JlZW5PYnNlcnZlcik7CiAg
ICAgLy8gVHJhY2sgd2hlbiBhbnkgQ29jb2Egd2luZG93IGlzIGFib3V0IHRvIGJlIGhpZGRlbi4K
LSAgICBpZCBvcmRlck9mZlNjcmVlbk9ic2VydmVyID0gW2RlZmF1bHRDZW50ZXIgYWRkT2JzZXJ2
ZXJGb3JOYW1lOk5TV2luZG93V2lsbE9yZGVyT2ZmU2NyZWVuTm90aWZpY2F0aW9uCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9iamVj
dDpuaWwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHF1ZXVlOm5pbAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHVzaW5nQmxvY2s6XihOU05vdGlmaWNhdGlvbiAqbm90aWZpY2F0
aW9uKSB7IGZ1bGxzY3JlZW5XaW5kb3dUcmFja2VyKCkud2luZG93SGlkZGVuKFtub3RpZmljYXRp
b24gb2JqZWN0XSk7IH1dOwotCi0gICAgLy8gTGVhayB0aGUgdHdvIG9ic2VydmVycyBzbyB0aGF0
IHRoZXkgb2JzZXJ2ZSBub3RpZmljYXRpb25zIGZvciB0aGUgbGlmZXRpbWUgb2YgdGhlIHByb2Nl
c3MuCi0gICAgQ0ZSZXRhaW4oKF9fYnJpZGdlIENGVHlwZVJlZilvcmRlck9uU2NyZWVuT2JzZXJ2
ZXIpOwotICAgIENGUmV0YWluKChfX2JyaWRnZSBDRlR5cGVSZWYpb3JkZXJPZmZTY3JlZW5PYnNl
cnZlcik7CisgICAgaWQgb3JkZXJPZmZTY3JlZW5PYnNlcnZlciA9IHJldGFpblB0cihbZGVmYXVs
dENlbnRlciBhZGRPYnNlcnZlckZvck5hbWU6TlNXaW5kb3dXaWxsT3JkZXJPZmZTY3JlZW5Ob3Rp
ZmljYXRpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG9iamVjdDpuaWwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxdWV1ZTpuaWwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdXNpbmdCbG9jazpeKE5TTm90aWZpY2F0aW9uICpub3RpZmljYXRpb24pIHsgZnVs
bHNjcmVlbldpbmRvd1RyYWNrZXIoKS53aW5kb3dIaWRkZW4oW25vdGlmaWNhdGlvbiBvYmplY3Rd
KTsgfV0pLmxlYWtSZWYoKTsKKyAgICBVTlVTRURfUEFSQU0ob3JkZXJPZmZTY3JlZW5PYnNlcnZl
cik7CisKIH0KIAogdm9pZCBQbHVnaW5Qcm9jZXNzOjpzZXRNb2RhbFdpbmRvd0lzU2hvd2luZyhi
b29sIG1vZGFsV2luZG93SXNTaG93aW5nKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvbWFjL1Bhc3RlYm9hcmRUeXBlcy5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9QYXN0
ZWJvYXJkVHlwZXMubW0KaW5kZXggNTNmOThjMTM3NGY5NGQ1N2IyNmU0NmE2ZGIyNmI4YWQyNGU3
OTc1ZS4uZWQ0YzdiOWI4ODE5NmYyYTlhYTBjYTYyMzg0ODEwNGM4OTg4MzEzNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL1Bhc3RlYm9hcmRUeXBlcy5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9tYWMvUGFzdGVib2FyZFR5cGVzLm1tCkBAIC0zNyw0NiArMzcsNDAg
QEAgTlNTdHJpbmcgKiBjb25zdCBQYXN0ZWJvYXJkVHlwZXM6OldlYlVSTHNXaXRoVGl0bGVzUGJv
YXJkVHlwZSA9IEAiV2ViVVJMc1dpdGhUaXQKIE5TU3RyaW5nICogY29uc3QgUGFzdGVib2FyZFR5
cGVzOjpXZWJVUkxQYm9hcmRUeXBlID0gQCJwdWJsaWMudXJsIjsKIE5TU3RyaW5nICogY29uc3Qg
UGFzdGVib2FyZFR5cGVzOjpXZWJVUkxOYW1lUGJvYXJkVHlwZSA9IEAicHVibGljLnVybC1uYW1l
IjsKIE5TU3RyaW5nICogY29uc3QgUGFzdGVib2FyZFR5cGVzOjpXZWJEdW1teVBib2FyZFR5cGUg
PSBAIkFwcGxlIFdlYktpdCBkdW1teSBwYXN0ZWJvYXJkIHR5cGUiOwotCi1zdGF0aWMgaW5saW5l
IE5TQXJyYXkgKnJldGFpbihOU0FycmF5ICphcnJheSkKLXsKLSAgICBDRlJldGFpbihhcnJheSk7
Ci0gICAgcmV0dXJuIGFycmF5OwotfQogICAgIAogTlNBcnJheSogUGFzdGVib2FyZFR5cGVzOjpm
b3JFZGl0aW5nKCkKIHsKIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOIAotICAg
IHN0YXRpYyBOU0FycmF5ICp0eXBlcyA9IHJldGFpbihAW1dlYkFyY2hpdmVQYm9hcmRUeXBlLCAo
X19icmlkZ2UgTlNTdHJpbmcgKilrVVRUeXBlV2ViQXJjaGl2ZSwgV2ViQ29yZTo6bGVnYWN5SFRN
TFBhc3RlYm9hcmRUeXBlKCksIFdlYkNvcmU6OmxlZ2FjeUZpbGVuYW1lc1Bhc3RlYm9hcmRUeXBl
KCksIFdlYkNvcmU6OmxlZ2FjeVRJRkZQYXN0ZWJvYXJkVHlwZSgpLCBXZWJDb3JlOjpsZWdhY3lQ
REZQYXN0ZWJvYXJkVHlwZSgpLAotICAgICAgICBXZWJDb3JlOjpsZWdhY3lVUkxQYXN0ZWJvYXJk
VHlwZSgpLCBXZWJDb3JlOjpsZWdhY3lSVEZEUGFzdGVib2FyZFR5cGUoKSwgV2ViQ29yZTo6bGVn
YWN5UlRGUGFzdGVib2FyZFR5cGUoKSwgV2ViQ29yZTo6bGVnYWN5U3RyaW5nUGFzdGVib2FyZFR5
cGUoKSwgV2ViQ29yZTo6bGVnYWN5Q29sb3JQYXN0ZWJvYXJkVHlwZSgpLCAoX19icmlkZ2UgTlNT
dHJpbmcgKilrVVRUeXBlUE5HXSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0
cjxOU0FycmF5Pj4gdHlwZXMgPSBAW1dlYkFyY2hpdmVQYm9hcmRUeXBlLCAoX19icmlkZ2UgTlNT
dHJpbmcgKilrVVRUeXBlV2ViQXJjaGl2ZSwgV2ViQ29yZTo6bGVnYWN5SFRNTFBhc3RlYm9hcmRU
eXBlKCksIFdlYkNvcmU6OmxlZ2FjeUZpbGVuYW1lc1Bhc3RlYm9hcmRUeXBlKCksIFdlYkNvcmU6
OmxlZ2FjeVRJRkZQYXN0ZWJvYXJkVHlwZSgpLCBXZWJDb3JlOjpsZWdhY3lQREZQYXN0ZWJvYXJk
VHlwZSgpLAorICAgICAgICBXZWJDb3JlOjpsZWdhY3lVUkxQYXN0ZWJvYXJkVHlwZSgpLCBXZWJD
b3JlOjpsZWdhY3lSVEZEUGFzdGVib2FyZFR5cGUoKSwgV2ViQ29yZTo6bGVnYWN5UlRGUGFzdGVi
b2FyZFR5cGUoKSwgV2ViQ29yZTo6bGVnYWN5U3RyaW5nUGFzdGVib2FyZFR5cGUoKSwgV2ViQ29y
ZTo6bGVnYWN5Q29sb3JQYXN0ZWJvYXJkVHlwZSgpLCAoX19icmlkZ2UgTlNTdHJpbmcgKilrVVRU
eXBlUE5HXTsKIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAotICAgIHJldHVybiB0
eXBlczsKKyAgICByZXR1cm4gdHlwZXMuZ2V0KCkuZ2V0KCk7CiB9CiAKIE5TQXJyYXkqIFBhc3Rl
Ym9hcmRUeXBlczo6Zm9yVVJMKCkKIHsKLSAgICBzdGF0aWMgTlNBcnJheSAqdHlwZXMgPSByZXRh
aW4oQFtXZWJVUkxzV2l0aFRpdGxlc1Bib2FyZFR5cGUsIFdlYkNvcmU6OmxlZ2FjeVVSTFBhc3Rl
Ym9hcmRUeXBlKCksIFdlYlVSTFBib2FyZFR5cGUsICBXZWJVUkxOYW1lUGJvYXJkVHlwZSwgV2Vi
Q29yZTo6bGVnYWN5U3RyaW5nUGFzdGVib2FyZFR5cGUoKSwgV2ViQ29yZTo6bGVnYWN5RmlsZW5h
bWVzUGFzdGVib2FyZFR5cGUoKSwgV2ViQ29yZTo6bGVnYWN5RmlsZXNQcm9taXNlUGFzdGVib2Fy
ZFR5cGUoKV0pOwotICAgIHJldHVybiB0eXBlczsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
UmV0YWluUHRyPE5TQXJyYXk+PiB0eXBlcyA9IEBbV2ViVVJMc1dpdGhUaXRsZXNQYm9hcmRUeXBl
LCBXZWJDb3JlOjpsZWdhY3lVUkxQYXN0ZWJvYXJkVHlwZSgpLCBXZWJVUkxQYm9hcmRUeXBlLCAg
V2ViVVJMTmFtZVBib2FyZFR5cGUsIFdlYkNvcmU6OmxlZ2FjeVN0cmluZ1Bhc3RlYm9hcmRUeXBl
KCksIFdlYkNvcmU6OmxlZ2FjeUZpbGVuYW1lc1Bhc3RlYm9hcmRUeXBlKCksIFdlYkNvcmU6Omxl
Z2FjeUZpbGVzUHJvbWlzZVBhc3RlYm9hcmRUeXBlKCldOworICAgIHJldHVybiB0eXBlcy5nZXQo
KS5nZXQoKTsKIH0KIAogTlNBcnJheSogUGFzdGVib2FyZFR5cGVzOjpmb3JJbWFnZXMoKQogewot
ICAgIHN0YXRpYyBOU0FycmF5ICp0eXBlcyA9IHJldGFpbihAW1dlYkNvcmU6OmxlZ2FjeVRJRkZQ
YXN0ZWJvYXJkVHlwZSgpLCBXZWJVUkxzV2l0aFRpdGxlc1Bib2FyZFR5cGUsIFdlYkNvcmU6Omxl
Z2FjeVVSTFBhc3RlYm9hcmRUeXBlKCksIFdlYlVSTFBib2FyZFR5cGUsIFdlYlVSTE5hbWVQYm9h
cmRUeXBlLCBXZWJDb3JlOjpsZWdhY3lTdHJpbmdQYXN0ZWJvYXJkVHlwZSgpXSk7Ci0gICAgcmV0
dXJuIHR5cGVzOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8TlNBcnJheT4+
IHR5cGVzID0gQFtXZWJDb3JlOjpsZWdhY3lUSUZGUGFzdGVib2FyZFR5cGUoKSwgV2ViVVJMc1dp
dGhUaXRsZXNQYm9hcmRUeXBlLCBXZWJDb3JlOjpsZWdhY3lVUkxQYXN0ZWJvYXJkVHlwZSgpLCBX
ZWJVUkxQYm9hcmRUeXBlLCBXZWJVUkxOYW1lUGJvYXJkVHlwZSwgV2ViQ29yZTo6bGVnYWN5U3Ry
aW5nUGFzdGVib2FyZFR5cGUoKV07CisgICAgcmV0dXJuIHR5cGVzLmdldCgpLmdldCgpOwogfQog
CiBOU0FycmF5KiBQYXN0ZWJvYXJkVHlwZXM6OmZvckltYWdlc1dpdGhBcmNoaXZlKCkKIHsKLSAg
ICBzdGF0aWMgTlNBcnJheSAqdHlwZXMgPSByZXRhaW4oQFtXZWJDb3JlOjpsZWdhY3lUSUZGUGFz
dGVib2FyZFR5cGUoKSwgV2ViVVJMc1dpdGhUaXRsZXNQYm9hcmRUeXBlLCBXZWJDb3JlOjpsZWdh
Y3lVUkxQYXN0ZWJvYXJkVHlwZSgpLCBXZWJVUkxQYm9hcmRUeXBlLCBXZWJVUkxOYW1lUGJvYXJk
VHlwZSwgV2ViQ29yZTo6bGVnYWN5U3RyaW5nUGFzdGVib2FyZFR5cGUoKSwgV2ViQ29yZTo6bGVn
YWN5UlRGRFBhc3RlYm9hcmRUeXBlKCksIFdlYkFyY2hpdmVQYm9hcmRUeXBlXSk7Ci0gICAgcmV0
dXJuIHR5cGVzOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8TlNBcnJheT4+
IHR5cGVzID0gQFtXZWJDb3JlOjpsZWdhY3lUSUZGUGFzdGVib2FyZFR5cGUoKSwgV2ViVVJMc1dp
dGhUaXRsZXNQYm9hcmRUeXBlLCBXZWJDb3JlOjpsZWdhY3lVUkxQYXN0ZWJvYXJkVHlwZSgpLCBX
ZWJVUkxQYm9hcmRUeXBlLCBXZWJVUkxOYW1lUGJvYXJkVHlwZSwgV2ViQ29yZTo6bGVnYWN5U3Ry
aW5nUGFzdGVib2FyZFR5cGUoKSwgV2ViQ29yZTo6bGVnYWN5UlRGRFBhc3RlYm9hcmRUeXBlKCks
IFdlYkFyY2hpdmVQYm9hcmRUeXBlXTsKKyAgICByZXR1cm4gdHlwZXMuZ2V0KCkuZ2V0KCk7CiB9
CiAKIE5TQXJyYXkqIFBhc3RlYm9hcmRUeXBlczo6Zm9yU2VsZWN0aW9uKCkKIHsKIEFMTE9XX0RF
UFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOIAotICAgIHN0YXRpYyBOU0FycmF5ICp0eXBlcyA9
IHJldGFpbihAW1dlYkFyY2hpdmVQYm9hcmRUeXBlLCAoX19icmlkZ2UgTlNTdHJpbmcgKilrVVRU
eXBlV2ViQXJjaGl2ZSwgV2ViQ29yZTo6bGVnYWN5UlRGRFBhc3RlYm9hcmRUeXBlKCksIFdlYkNv
cmU6OmxlZ2FjeVJURlBhc3RlYm9hcmRUeXBlKCksIFdlYkNvcmU6OmxlZ2FjeVN0cmluZ1Bhc3Rl
Ym9hcmRUeXBlKCldKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPE5TQXJy
YXk+PiB0eXBlcyA9IEBbV2ViQXJjaGl2ZVBib2FyZFR5cGUsIChfX2JyaWRnZSBOU1N0cmluZyAq
KWtVVFR5cGVXZWJBcmNoaXZlLCBXZWJDb3JlOjpsZWdhY3lSVEZEUGFzdGVib2FyZFR5cGUoKSwg
V2ViQ29yZTo6bGVnYWN5UlRGUGFzdGVib2FyZFR5cGUoKSwgV2ViQ29yZTo6bGVnYWN5U3RyaW5n
UGFzdGVib2FyZFR5cGUoKV07CiBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKLSAg
ICByZXR1cm4gdHlwZXM7CisgICAgcmV0dXJuIHR5cGVzLmdldCgpLmdldCgpOwogfQogICAgIAog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9XZWJWaWV3SW1wbC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dl
YlZpZXdJbXBsLm1tCmluZGV4IGE1YzZiYmMwY2NmZTRmYjJlYjMwOTc3N2NlOGY3ZTdjYTZiYjM5
OWMuLmU2ZmI3ODEwZjk2NTc4ZWUyM2YxZjliYTIzMWFhMTQzNjk5OWQ4OTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCkBAIC0yMjU5LDggKzIyNTks
NyBAQCBib29sIFdlYlZpZXdJbXBsOjphY2NlcHRzRmlyc3RNb3VzZShOU0V2ZW50ICpldmVudCkK
ICAgICAvLyBUaGVyZSdzIGEgY2hhbmNlIHRoYXQgcmVzcG9uZGluZyB0byB0aGlzIGV2ZW50IHdp
bGwgcnVuIGEgbmVzdGVkIGV2ZW50IGxvb3AsIGFuZAogICAgIC8vIGZldGNoaW5nIGEgbmV3IGV2
ZW50IG1pZ2h0IHJlbGVhc2UgdGhlIG9sZCBvbmUuIFJldGFpbmluZyBhbmQgdGhlbiBhdXRvcmVs
ZWFzaW5nCiAgICAgLy8gdGhlIGN1cnJlbnQgZXZlbnQgcHJldmVudHMgdGhhdCBmcm9tIGNhdXNp
bmcgYSBwcm9ibGVtIGluc2lkZSBXZWJLaXQgb3IgQXBwS2l0IGNvZGUuCi0gICAgQ0ZSZXRhaW4o
KF9fYnJpZGdlIENGVHlwZVJlZilldmVudCk7Ci0gICAgQ0ZBdXRvcmVsZWFzZSgoX19icmlkZ2Ug
Q0ZUeXBlUmVmKWV2ZW50KTsKKyAgICByZXRhaW5QdHIoZXZlbnQpLmF1dG9yZWxlYXNlKCk7CiAK
ICAgICBpZiAoIVttX3ZpZXcgaGl0VGVzdDpldmVudC5sb2NhdGlvbkluV2luZG93XSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwpAQCAtMjI3OSw4ICsyMjc4LDcgQEAgYm9vbCBXZWJWaWV3SW1wbDo6
c2hvdWxkRGVsYXlXaW5kb3dPcmRlcmluZ0ZvckV2ZW50KE5TRXZlbnQgKmV2ZW50KQogICAgIC8v
IFRoZXJlJ3MgYSBjaGFuY2UgdGhhdCByZXNwb25kaW5nIHRvIHRoaXMgZXZlbnQgd2lsbCBydW4g
YSBuZXN0ZWQgZXZlbnQgbG9vcCwgYW5kCiAgICAgLy8gZmV0Y2hpbmcgYSBuZXcgZXZlbnQgbWln
aHQgcmVsZWFzZSB0aGUgb2xkIG9uZS4gUmV0YWluaW5nIGFuZCB0aGVuIGF1dG9yZWxlYXNpbmcK
ICAgICAvLyB0aGUgY3VycmVudCBldmVudCBwcmV2ZW50cyB0aGF0IGZyb20gY2F1c2luZyBhIHBy
b2JsZW0gaW5zaWRlIFdlYktpdCBvciBBcHBLaXQgY29kZS4KLSAgICBDRlJldGFpbigoX19icmlk
Z2UgQ0ZUeXBlUmVmKWV2ZW50KTsKLSAgICBDRkF1dG9yZWxlYXNlKChfX2JyaWRnZSBDRlR5cGVS
ZWYpZXZlbnQpOworICAgIHJldGFpblB0cihldmVudCkuYXV0b3JlbGVhc2UoKTsKIAogICAgIGlm
ICghW21fdmlldyBoaXRUZXN0OmV2ZW50LmxvY2F0aW9uSW5XaW5kb3ddKQogICAgICAgICByZXR1
cm4gZmFsc2U7CkBAIC00ODExLDI0ICs0ODA5LDIwIEBAIHZvaWQgV2ViVmlld0ltcGw6OmRvbmVX
aXRoS2V5RXZlbnQoTlNFdmVudCAqZXZlbnQsIGJvb2wgZXZlbnRXYXNIYW5kbGVkKQogCiBOU0Fy
cmF5ICpXZWJWaWV3SW1wbDo6dmFsaWRBdHRyaWJ1dGVzRm9yTWFya2VkVGV4dCgpCiB7Ci0gICAg
c3RhdGljIE5TQXJyYXkgKnZhbGlkQXR0cmlidXRlczsKLSAgICBpZiAoIXZhbGlkQXR0cmlidXRl
cykgewotICAgICAgICB2YWxpZEF0dHJpYnV0ZXMgPSBAWwotICAgICAgICAgICAgTlNVbmRlcmxp
bmVTdHlsZUF0dHJpYnV0ZU5hbWUsCi0gICAgICAgICAgICBOU1VuZGVybGluZUNvbG9yQXR0cmli
dXRlTmFtZSwKLSAgICAgICAgICAgIE5TTWFya2VkQ2xhdXNlU2VnbWVudEF0dHJpYnV0ZU5hbWUs
Ci0gICAgICAgICAgICBOU1RleHRBbHRlcm5hdGl2ZXNBdHRyaWJ1dGVOYW1lLAotICAgICAgICAg
ICAgTlNUZXh0SW5zZXJ0aW9uVW5kb2FibGVBdHRyaWJ1dGVOYW1lLAotICAgICAgICBdOwotICAg
ICAgICAvLyBOU1RleHQgYWxzbyBzdXBwb3J0cyB0aGUgZm9sbG93aW5nIGF0dHJpYnV0ZXMsIGJ1
dCBpdCdzCi0gICAgICAgIC8vIGhhcmQgdG8gdGVsbCB3aGljaCBhcmUgcmVhbGx5IHJlcXVpcmVk
IGZvciB0ZXh0IGlucHV0IHRvCi0gICAgICAgIC8vIHdvcmsgd2VsbDsgSSBoYXZlIG5vdCBzZWVu
IGFueSBpbnB1dCBtZXRob2QgbWFrZSB1c2Ugb2YgdGhlbSB5ZXQuCi0gICAgICAgIC8vICAgICBO
U0ZvbnRBdHRyaWJ1dGVOYW1lLCBOU0ZvcmVncm91bmRDb2xvckF0dHJpYnV0ZU5hbWUsCi0gICAg
ICAgIC8vICAgICBOU0JhY2tncm91bmRDb2xvckF0dHJpYnV0ZU5hbWUsIE5TTGFuZ3VhZ2VBdHRy
aWJ1dGVOYW1lLgotICAgICAgICBDRlJldGFpbih2YWxpZEF0dHJpYnV0ZXMpOwotICAgIH0KKyAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPE5TQXJyYXk+PiB2YWxpZEF0dHJpYnV0
ZXMgPSBAWworICAgICAgICBOU1VuZGVybGluZVN0eWxlQXR0cmlidXRlTmFtZSwKKyAgICAgICAg
TlNVbmRlcmxpbmVDb2xvckF0dHJpYnV0ZU5hbWUsCisgICAgICAgIE5TTWFya2VkQ2xhdXNlU2Vn
bWVudEF0dHJpYnV0ZU5hbWUsCisgICAgICAgIE5TVGV4dEFsdGVybmF0aXZlc0F0dHJpYnV0ZU5h
bWUsCisgICAgICAgIE5TVGV4dEluc2VydGlvblVuZG9hYmxlQXR0cmlidXRlTmFtZSwKKyAgICBd
OworICAgIC8vIE5TVGV4dCBhbHNvIHN1cHBvcnRzIHRoZSBmb2xsb3dpbmcgYXR0cmlidXRlcywg
YnV0IGl0J3MKKyAgICAvLyBoYXJkIHRvIHRlbGwgd2hpY2ggYXJlIHJlYWxseSByZXF1aXJlZCBm
b3IgdGV4dCBpbnB1dCB0bworICAgIC8vIHdvcmsgd2VsbDsgSSBoYXZlIG5vdCBzZWVuIGFueSBp
bnB1dCBtZXRob2QgbWFrZSB1c2Ugb2YgdGhlbSB5ZXQuCisgICAgLy8gICAgIE5TRm9udEF0dHJp
YnV0ZU5hbWUsIE5TRm9yZWdyb3VuZENvbG9yQXR0cmlidXRlTmFtZSwKKyAgICAvLyAgICAgTlNC
YWNrZ3JvdW5kQ29sb3JBdHRyaWJ1dGVOYW1lLCBOU0xhbmd1YWdlQXR0cmlidXRlTmFtZS4KICAg
ICBMT0coVGV4dElucHV0LCAidmFsaWRBdHRyaWJ1dGVzRm9yTWFya2VkVGV4dCAtPiAoLi4uKSIp
OwotICAgIHJldHVybiB2YWxpZEF0dHJpYnV0ZXM7CisgICAgcmV0dXJuIHZhbGlkQXR0cmlidXRl
cy5nZXQoKS5nZXQoKTsKIH0KIAogc3RhdGljIFZlY3RvcjxXZWJDb3JlOjpDb21wb3NpdGlvblVu
ZGVybGluZT4gZXh0cmFjdFVuZGVybGluZXMoTlNBdHRyaWJ1dGVkU3RyaW5nICpzdHJpbmcpCkBA
IC01MjAyLDggKzUxOTYsNyBAQCBib29sIFdlYlZpZXdJbXBsOjpwZXJmb3JtS2V5RXF1aXZhbGVu
dChOU0V2ZW50ICpldmVudCkKICAgICAvLyBUaGVyZSdzIGEgY2hhbmNlIHRoYXQgcmVzcG9uZGlu
ZyB0byB0aGlzIGV2ZW50IHdpbGwgcnVuIGEgbmVzdGVkIGV2ZW50IGxvb3AsIGFuZAogICAgIC8v
IGZldGNoaW5nIGEgbmV3IGV2ZW50IG1pZ2h0IHJlbGVhc2UgdGhlIG9sZCBvbmUuIFJldGFpbmlu
ZyBhbmQgdGhlbiBhdXRvcmVsZWFzaW5nCiAgICAgLy8gdGhlIGN1cnJlbnQgZXZlbnQgcHJldmVu
dHMgdGhhdCBmcm9tIGNhdXNpbmcgYSBwcm9ibGVtIGluc2lkZSBXZWJLaXQgb3IgQXBwS2l0IGNv
ZGUuCi0gICAgQ0ZSZXRhaW4oKF9fYnJpZGdlIENGVHlwZVJlZilldmVudCk7Ci0gICAgQ0ZBdXRv
cmVsZWFzZSgoX19icmlkZ2UgQ0ZUeXBlUmVmKWV2ZW50KTsKKyAgICByZXRhaW5QdHIoZXZlbnQp
LmF1dG9yZWxlYXNlKCk7CiAKICAgICAvLyBXZSBnZXQgRXNjIGtleSBoZXJlIGFmdGVyIHByb2Nl
c3NpbmcgZWl0aGVyIEVzYyBvciBDbWQrcGVyaW9kLiBUaGUgZm9ybWVyIHN0YXJ0cyBhcyBhIGtl
eURvd24sIGFuZCB0aGUgbGF0dGVyIHN0YXJ0cyBhcyBhIGtleSBlcXVpdmFsZW50LAogICAgIC8v
IGJ1dCBib3RoIGdldCB0cmFuc2Zvcm1lZCB0byBhIGNhbmNlbE9wZXJhdGlvbjogY29tbWFuZCwg
ZXhlY3V0aW5nIHdoaWNoIHBhc3NlcyBhbiBFc2Mga2V5IGV2ZW50IHRvIC1wZXJmb3JtS2V5RXF1
aXZhbGVudDouCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3Iv
aW9zL1dLSW5zcGVjdG9ySGlnaGxpZ2h0Vmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0luc3BlY3Rvci9pb3MvV0tJbnNwZWN0b3JIaWdobGlnaHRWaWV3Lm1tCmluZGV4IDQ0MTI0NDM3
YzI0MzQyNWMzZWRkYjk5Mzc2Y2Q2MjI0ZjJmYzE2YTMuLmIxYjBiZTM0YmYzMzBjMGVlNTU1ZWQ4
ZGM3NDFmYzY0MmIxMDlhZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0lu
c3BlY3Rvci9pb3MvV0tJbnNwZWN0b3JIaWdobGlnaHRWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0luc3BlY3Rvci9pb3MvV0tJbnNwZWN0b3JIaWdobGlnaHRWaWV3Lm1tCkBA
IC0xODMsMjggKzE4MywyNiBAQCBzdGF0aWMgdm9pZCBsYXllclBhdGhXaXRoSG9sZShDQVNoYXBl
TGF5ZXIgKmxheWVyLCBjb25zdCBXZWJDb3JlOjpGbG9hdFF1YWQmIG91dAogICAgICAgICBpbm5l
ckhvbGUgPSBxdWFkSW50ZXJzZWN0aW9uKG91dGVyUXVhZCwgaG9sZVF1YWQpOwogCiAgICAgLy8g
Q2xvY2t3aXNlIGluc2lkZSByZWN0IChob2xlKSwgQ291bnRlci1DbG9ja3dpc2Ugb3V0c2lkZSBy
ZWN0IChmaWxsKS4KLSAgICBDR011dGFibGVQYXRoUmVmIHBhdGggPSBDR1BhdGhDcmVhdGVNdXRh
YmxlKCk7Ci0gICAgQ0dQYXRoTW92ZVRvUG9pbnQocGF0aCwgMCwgaW5uZXJIb2xlLnAxKCkueCgp
LCBpbm5lckhvbGUucDEoKS55KCkpOwotICAgIENHUGF0aEFkZExpbmVUb1BvaW50KHBhdGgsIDAs
IGlubmVySG9sZS5wMigpLngoKSwgaW5uZXJIb2xlLnAyKCkueSgpKTsKLSAgICBDR1BhdGhBZGRM
aW5lVG9Qb2ludChwYXRoLCAwLCBpbm5lckhvbGUucDMoKS54KCksIGlubmVySG9sZS5wMygpLnko
KSk7Ci0gICAgQ0dQYXRoQWRkTGluZVRvUG9pbnQocGF0aCwgMCwgaW5uZXJIb2xlLnA0KCkueCgp
LCBpbm5lckhvbGUucDQoKS55KCkpOwotICAgIENHUGF0aE1vdmVUb1BvaW50KHBhdGgsIDAsIG91
dGVyUXVhZC5wMSgpLngoKSwgb3V0ZXJRdWFkLnAxKCkueSgpKTsKLSAgICBDR1BhdGhBZGRMaW5l
VG9Qb2ludChwYXRoLCAwLCBvdXRlclF1YWQucDQoKS54KCksIG91dGVyUXVhZC5wNCgpLnkoKSk7
Ci0gICAgQ0dQYXRoQWRkTGluZVRvUG9pbnQocGF0aCwgMCwgb3V0ZXJRdWFkLnAzKCkueCgpLCBv
dXRlclF1YWQucDMoKS55KCkpOwotICAgIENHUGF0aEFkZExpbmVUb1BvaW50KHBhdGgsIDAsIG91
dGVyUXVhZC5wMigpLngoKSwgb3V0ZXJRdWFkLnAyKCkueSgpKTsKLSAgICBsYXllci5wYXRoID0g
cGF0aDsKLSAgICBDR1BhdGhSZWxlYXNlKHBhdGgpOworICAgIGF1dG8gcGF0aCA9IGFkb3B0Q0Yo
Q0dQYXRoQ3JlYXRlTXV0YWJsZSgpKTsKKyAgICBDR1BhdGhNb3ZlVG9Qb2ludChwYXRoLmdldCgp
LCAwLCBpbm5lckhvbGUucDEoKS54KCksIGlubmVySG9sZS5wMSgpLnkoKSk7CisgICAgQ0dQYXRo
QWRkTGluZVRvUG9pbnQocGF0aC5nZXQoKSwgMCwgaW5uZXJIb2xlLnAyKCkueCgpLCBpbm5lckhv
bGUucDIoKS55KCkpOworICAgIENHUGF0aEFkZExpbmVUb1BvaW50KHBhdGguZ2V0KCksIDAsIGlu
bmVySG9sZS5wMygpLngoKSwgaW5uZXJIb2xlLnAzKCkueSgpKTsKKyAgICBDR1BhdGhBZGRMaW5l
VG9Qb2ludChwYXRoLmdldCgpLCAwLCBpbm5lckhvbGUucDQoKS54KCksIGlubmVySG9sZS5wNCgp
LnkoKSk7CisgICAgQ0dQYXRoTW92ZVRvUG9pbnQocGF0aC5nZXQoKSwgMCwgb3V0ZXJRdWFkLnAx
KCkueCgpLCBvdXRlclF1YWQucDEoKS55KCkpOworICAgIENHUGF0aEFkZExpbmVUb1BvaW50KHBh
dGguZ2V0KCksIDAsIG91dGVyUXVhZC5wNCgpLngoKSwgb3V0ZXJRdWFkLnA0KCkueSgpKTsKKyAg
ICBDR1BhdGhBZGRMaW5lVG9Qb2ludChwYXRoLmdldCgpLCAwLCBvdXRlclF1YWQucDMoKS54KCks
IG91dGVyUXVhZC5wMygpLnkoKSk7CisgICAgQ0dQYXRoQWRkTGluZVRvUG9pbnQocGF0aC5nZXQo
KSwgMCwgb3V0ZXJRdWFkLnAyKCkueCgpLCBvdXRlclF1YWQucDIoKS55KCkpOworICAgIGxheWVy
LnBhdGggPSBwYXRoLmdldCgpOwogfQogCiBzdGF0aWMgdm9pZCBsYXllclBhdGgoQ0FTaGFwZUxh
eWVyICpsYXllciwgY29uc3QgV2ViQ29yZTo6RmxvYXRRdWFkJiBvdXRlclF1YWQpCiB7Ci0gICAg
Q0dNdXRhYmxlUGF0aFJlZiBwYXRoID0gQ0dQYXRoQ3JlYXRlTXV0YWJsZSgpOwotICAgIENHUGF0
aE1vdmVUb1BvaW50KHBhdGgsIDAsIG91dGVyUXVhZC5wMSgpLngoKSwgb3V0ZXJRdWFkLnAxKCku
eSgpKTsKLSAgICBDR1BhdGhBZGRMaW5lVG9Qb2ludChwYXRoLCAwLCBvdXRlclF1YWQucDQoKS54
KCksIG91dGVyUXVhZC5wNCgpLnkoKSk7Ci0gICAgQ0dQYXRoQWRkTGluZVRvUG9pbnQocGF0aCwg
MCwgb3V0ZXJRdWFkLnAzKCkueCgpLCBvdXRlclF1YWQucDMoKS55KCkpOwotICAgIENHUGF0aEFk
ZExpbmVUb1BvaW50KHBhdGgsIDAsIG91dGVyUXVhZC5wMigpLngoKSwgb3V0ZXJRdWFkLnAyKCku
eSgpKTsKLSAgICBsYXllci5wYXRoID0gcGF0aDsKLSAgICBDR1BhdGhSZWxlYXNlKHBhdGgpOwor
ICAgIGF1dG8gcGF0aCA9IGFkb3B0Q0YoQ0dQYXRoQ3JlYXRlTXV0YWJsZSgpKTsKKyAgICBDR1Bh
dGhNb3ZlVG9Qb2ludChwYXRoLmdldCgpLCAwLCBvdXRlclF1YWQucDEoKS54KCksIG91dGVyUXVh
ZC5wMSgpLnkoKSk7CisgICAgQ0dQYXRoQWRkTGluZVRvUG9pbnQocGF0aC5nZXQoKSwgMCwgb3V0
ZXJRdWFkLnA0KCkueCgpLCBvdXRlclF1YWQucDQoKS55KCkpOworICAgIENHUGF0aEFkZExpbmVU
b1BvaW50KHBhdGguZ2V0KCksIDAsIG91dGVyUXVhZC5wMygpLngoKSwgb3V0ZXJRdWFkLnAzKCku
eSgpKTsKKyAgICBDR1BhdGhBZGRMaW5lVG9Qb2ludChwYXRoLmdldCgpLCAwLCBvdXRlclF1YWQu
cDIoKS54KCksIG91dGVyUXVhZC5wMigpLnkoKSk7CisgICAgbGF5ZXIucGF0aCA9IHBhdGguZ2V0
KCk7CiB9CiAKIC0gKHZvaWQpX2xheW91dEZvck5vZGVIaWdobGlnaHQ6KGNvbnN0IFdlYkNvcmU6
Okluc3BlY3Rvck92ZXJsYXk6OkhpZ2hsaWdodCYpaGlnaGxpZ2h0IG9mZnNldDoodW5zaWduZWQp
b2Zmc2V0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9fV0tUb3VjaEV2ZW50
R2VuZXJhdG9yLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvX1dLVG91Y2hFdmVudEdlbmVy
YXRvci5tbQppbmRleCBlMmM3MTgxMTE0ZjljYzlhOWQxMzg5MGI5NzEyNTYwMjNkNmE4MzU4Li4y
MTlkYmE1N2VmMGY1MDQ0OTMwNThjNjBjYjRkZWNjZTgyYWY4NGM0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9fV0tUb3VjaEV2ZW50R2VuZXJhdG9yLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL19XS1RvdWNoRXZlbnRHZW5lcmF0b3IubW0KQEAgLTk4LDcgKzk4
LDcgQEAgQHByb3BlcnR5IChub25hdG9taWMsIHN0cm9uZykgTlNNdXRhYmxlRGljdGlvbmFyeSAq
ZXZlbnRDYWxsYmFja3M7CiBAZW5kCiAKIEBpbXBsZW1lbnRhdGlvbiBfV0tUb3VjaEV2ZW50R2Vu
ZXJhdG9yIHsKLSAgICBJT0hJREV2ZW50U3lzdGVtQ2xpZW50UmVmIF9pb1N5c3RlbUNsaWVudDsK
KyAgICBSZXRhaW5QdHI8SU9ISURFdmVudFN5c3RlbUNsaWVudFJlZj4gX2lvU3lzdGVtQ2xpZW50
OwogICAgIFN5bnRoZXRpY0V2ZW50RGlnaXRpemVySW5mbyBfYWN0aXZlUG9pbnRzW0hJRE1heFRv
dWNoQ291bnRdOwogICAgIE5TVUludGVnZXIgX2FjdGl2ZVBvaW50Q291bnQ7CiB9CkBAIC0xMzEs
OSArMTMxLDYgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXQKIAogLSAodm9pZClkZWFsbG9jCiB7Ci0g
IGlmIChfaW9TeXN0ZW1DbGllbnQpCi0gICAgICAgIENGUmVsZWFzZShfaW9TeXN0ZW1DbGllbnQp
OwotCiAgICAgW19ldmVudENhbGxiYWNrcyByZWxlYXNlXTsKICAgICBbc3VwZXIgZGVhbGxvY107
CiB9CkBAIC0yMTAsNyArMjA3LDcgQEAgLSAoSU9ISURFdmVudFJlZilfY3JlYXRlSU9ISURFdmVu
dFR5cGU6KEhhbmRFdmVudFR5cGUpZXZlbnRUeXBlCiAtIChCT09MKV9zZW5kSElERXZlbnQ6KElP
SElERXZlbnRSZWYpZXZlbnRSZWYKIHsKICAgICBpZiAoIV9pb1N5c3RlbUNsaWVudCkKLSAgICAg
ICAgX2lvU3lzdGVtQ2xpZW50ID0gSU9ISURFdmVudFN5c3RlbUNsaWVudENyZWF0ZShrQ0ZBbGxv
Y2F0b3JEZWZhdWx0KTsKKyAgICAgICAgX2lvU3lzdGVtQ2xpZW50ID0gYWRvcHRDRihJT0hJREV2
ZW50U3lzdGVtQ2xpZW50Q3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQpKTsKIAogICAgIGlmIChl
dmVudFJlZikgewogICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3N0cm9uZ0V2ZW50
ID0gcmV0YWluUHRyKGV2ZW50UmVmKV0gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL2Z1bGxzY3JlZW4vV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlcklPUy5tbSBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mdWxsc2NyZWVuL1dLRnVsbFNjcmVlbldpbmRv
d0NvbnRyb2xsZXJJT1MubW0KaW5kZXggMDMzY2VlZmZiMzQ0YjRjN2FhMzEwZDhjMzc0OWE5MGVm
YzQ2YzExMi4uODQ0ZWUzMjAwOWI4MjJkODYyNWRmZjFjNjJlZDc5NDBmNTk4NjI3NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Z1bGxzY3JlZW4vV0tGdWxsU2NyZWVu
V2luZG93Q29udHJvbGxlcklPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
ZnVsbHNjcmVlbi9XS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVySU9TLm1tCkBAIC0xMDMwLDI4
ICsxMDMwLDI4IEBAIC0gKE5TU3RyaW5nICopX0VWT3JnYW5pemF0aW9uTmFtZQogICAgIGlmICgh
dHJ1c3QpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBOU0RpY3Rpb25hcnkgKmluZm9EaWN0
aW9uYXJ5ID0gQ0ZCcmlkZ2luZ1JlbGVhc2UoU2VjVHJ1c3RDb3B5SW5mbyh0cnVzdCkpOworICAg
IGF1dG8gaW5mb0RpY3Rpb25hcnkgPSBhZG9wdENGKFNlY1RydXN0Q29weUluZm8odHJ1c3QpKTsK
ICAgICAvLyBJZiBTZWNUcnVzdENvcHlJbmZvIHJldHVybmVkIE5VTEwgdGhlbiBpdCdzIGxpa2Vs
eSB0aGF0IHRoZSBTZWNUcnVzdFJlZiBoYXMgbm90IGJlZW4gZXZhbHVhdGVkCiAgICAgLy8gYW5k
IHRoZSBvbmx5IHdheSB0byBnZXQgdGhlIGluZm9ybWF0aW9uIHdlIG5lZWQgaXMgdG8gY2FsbCBT
ZWNUcnVzdEV2YWx1YXRlIG91cnNlbHZlcy4KICAgICBpZiAoIWluZm9EaWN0aW9uYXJ5KSB7CiAg
ICAgICAgIGlmICghU2VjVHJ1c3RFdmFsdWF0ZVdpdGhFcnJvcih0cnVzdCwgbnVsbHB0cikpCiAg
ICAgICAgICAgICByZXR1cm4gbmlsOwotICAgICAgICBpbmZvRGljdGlvbmFyeSA9IENGQnJpZGdp
bmdSZWxlYXNlKFNlY1RydXN0Q29weUluZm8odHJ1c3QpKTsKKyAgICAgICAgaW5mb0RpY3Rpb25h
cnkgPSBhZG9wdENGKFNlY1RydXN0Q29weUluZm8odHJ1c3QpKTsKICAgICAgICAgaWYgKCFpbmZv
RGljdGlvbmFyeSkKICAgICAgICAgICAgIHJldHVybiBuaWw7CiAgICAgfQogCiAgICAgLy8gTWFr
ZSBzdXJlIHRoYXQgdGhlIEVWIGNlcnRpZmljYXRlIGlzIHZhbGlkIGFnYWluc3Qgb3VyIGNlcnRp
ZmljYXRlIGNoYWluLgotICAgIGlkIGhhc0VWID0gW2luZm9EaWN0aW9uYXJ5IG9iamVjdEZvcktl
eTooX19icmlkZ2UgTlNTdHJpbmcgKilrU2VjVHJ1c3RJbmZvRXh0ZW5kZWRWYWxpZGF0aW9uS2V5
XTsKKyAgICBpZCBoYXNFViA9IFsoX19icmlkZ2UgTlNEaWN0aW9uYXJ5ICopaW5mb0RpY3Rpb25h
cnkgb2JqZWN0Rm9yS2V5OihfX2JyaWRnZSBOU1N0cmluZyAqKWtTZWNUcnVzdEluZm9FeHRlbmRl
ZFZhbGlkYXRpb25LZXldOwogICAgIGlmICghW2hhc0VWIGlzS2luZE9mQ2xhc3M6W05TVmFsdWUg
Y2xhc3NdXSB8fCAhW2hhc0VWIGJvb2xWYWx1ZV0pCiAgICAgICAgIHJldHVybiBuaWw7CiAKICAg
ICAvLyBNYWtlIHN1cmUgdGhhdCB3ZSBjb3VsZCBjb250YWN0IHJldm9jYXRpb24gc2VydmVyIGFu
ZCBpdCBpcyBzdGlsbCB2YWxpZC4KLSAgICBpZCBpc05vdFJldm9rZWQgPSBbaW5mb0RpY3Rpb25h
cnkgb2JqZWN0Rm9yS2V5OihfX2JyaWRnZSBOU1N0cmluZyAqKWtTZWNUcnVzdEluZm9SZXZvY2F0
aW9uS2V5XTsKKyAgICBpZCBpc05vdFJldm9rZWQgPSBbKF9fYnJpZGdlIE5TRGljdGlvbmFyeSAq
KWluZm9EaWN0aW9uYXJ5IG9iamVjdEZvcktleTooX19icmlkZ2UgTlNTdHJpbmcgKilrU2VjVHJ1
c3RJbmZvUmV2b2NhdGlvbktleV07CiAgICAgaWYgKCFbaXNOb3RSZXZva2VkIGlzS2luZE9mQ2xh
c3M6W05TVmFsdWUgY2xhc3NdXSB8fCAhW2lzTm90UmV2b2tlZCBib29sVmFsdWVdKQogICAgICAg
ICByZXR1cm4gbmlsOwogCi0gICAgX0VWT3JnYW5pemF0aW9uTmFtZSA9IFtpbmZvRGljdGlvbmFy
eSBvYmplY3RGb3JLZXk6KF9fYnJpZGdlIE5TU3RyaW5nICopa1NlY1RydXN0SW5mb0NvbXBhbnlO
YW1lS2V5XTsKKyAgICBfRVZPcmdhbml6YXRpb25OYW1lID0gWyhfX2JyaWRnZSBOU0RpY3Rpb25h
cnkgKilpbmZvRGljdGlvbmFyeSBvYmplY3RGb3JLZXk6KF9fYnJpZGdlIE5TU3RyaW5nICopa1Nl
Y1RydXN0SW5mb0NvbXBhbnlOYW1lS2V5XTsKICAgICByZXR1cm4gX0VWT3JnYW5pemF0aW9uTmFt
ZS5nZXQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29h
L1dlYlByb2Nlc3NDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQ
cm9jZXNzQ29jb2EubW0KaW5kZXggZTBiOTE4NWE1YWI3NTVkM2UxMDkxZDI3ZWY5NjZjOWZmMDgx
YjNmZi4uODQ2MTQwZjJhM2ExN2M0OGY0MWVmY2M2MjgxYWVjMDY3NzVjYjkzZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCkBAIC01
MjgsNyArNTI4LDcgQEAgdm9pZCBXZWJQcm9jZXNzOjp1cGRhdGVQcm9jZXNzTmFtZShJc0luUHJv
Y2Vzc0luaXRpYWxpemF0aW9uIGlzSW5Qcm9jZXNzSW5pdGlhbGkKIHN0YXRpYyBOU1N0cmluZyAq
d2ViUHJvY2Vzc0xvYWRlckFjY2Vzc2liaWxpdHlCdW5kbGVQYXRoKCkKIHsKICNpZiBIQVZFKEFD
Q0VTU0lCSUxJVFlfQlVORExFU19QQVRIKQotICAgIHJldHVybiAoX19icmlkZ2UgTlNTdHJpbmcg
KilDRkF1dG9yZWxlYXNlKF9BWFNDb3B5UGF0aEZvckFjY2Vzc2liaWxpdHlCdW5kbGUoQ0ZTVFIo
IldlYlByb2Nlc3NMb2FkZXIiKSkpOworICAgIHJldHVybiBhZG9wdENGKF9BWFNDb3B5UGF0aEZv
ckFjY2Vzc2liaWxpdHlCdW5kbGUoQ0ZTVFIoIldlYlByb2Nlc3NMb2FkZXIiKSkpLmJyaWRnaW5n
QXV0b3JlbGVhc2UoKTsKICNlbHNlCiAgICAgTlNTdHJpbmcgKnBhdGggPSAoX19icmlkZ2UgTlNT
dHJpbmcgKilHU1N5c3RlbVJvb3REaXJlY3RvcnkoKTsKICNpZiBQTEFURk9STShNQUNDQVRBTFlT
VCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL01pc2MvV2ViVUlLaXRTdXBw
b3J0Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvTWlzYy9XZWJVSUtpdFN1cHBvcnQubW0K
aW5kZXggNTkzMTQ2YzAzMzJlYmQ1Y2QxYzE5YmMxNTc1NzMyYzMxMTI0OTY5MS4uOThhNmNmZmU1
NzVhODEzYjczYWUxMDFlOGMyYzMzODZjZGFkZTNjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9pb3MvTWlzYy9XZWJVSUtpdFN1cHBvcnQubW0KKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS9pb3MvTWlzYy9XZWJVSUtpdFN1cHBvcnQubW0KQEAgLTU1LDkgKzU1LDggQEAgc3RhdGlj
IHZvaWQgTG9hZFdlYkxvY2FsaXplZFN0cmluZ3NUaW1lckNhbGxiYWNrKENGUnVuTG9vcFRpbWVy
UmVmIHRpbWVyLCB2b2lkICoKIAogc3RhdGljIHZvaWQgTG9hZFdlYkxvY2FsaXplZFN0cmluZ3Mo
KQogewotICAgIENGUnVuTG9vcFRpbWVyUmVmIHRpbWVyID0gQ0ZSdW5Mb29wVGltZXJDcmVhdGUo
a0NGQWxsb2NhdG9yRGVmYXVsdCwgQ0ZBYnNvbHV0ZVRpbWVHZXRDdXJyZW50KCksIDAsIDAsIDAs
ICZMb2FkV2ViTG9jYWxpemVkU3RyaW5nc1RpbWVyQ2FsbGJhY2ssIE5VTEwpOwotICAgIENGUnVu
TG9vcEFkZFRpbWVyKENGUnVuTG9vcEdldEN1cnJlbnQoKSwgdGltZXIsIGtDRlJ1bkxvb3BDb21t
b25Nb2Rlcyk7Ci0gICAgQ0ZSZWxlYXNlKHRpbWVyKTsKKyAgICBhdXRvIHRpbWVyID0gYWRvcHRD
RihDRlJ1bkxvb3BUaW1lckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBDRkFic29sdXRlVGlt
ZUdldEN1cnJlbnQoKSwgMCwgMCwgMCwgJkxvYWRXZWJMb2NhbGl6ZWRTdHJpbmdzVGltZXJDYWxs
YmFjaywgTlVMTCkpOworICAgIENGUnVuTG9vcEFkZFRpbWVyKENGUnVuTG9vcEdldEN1cnJlbnQo
KSwgdGltZXIuZ2V0KCksIGtDRlJ1bkxvb3BDb21tb25Nb2Rlcyk7CiB9CiAKIHZvaWQgV2ViS2l0
SW5pdGlhbGl6ZSh2b2lkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2Vi
Vmlldy9XZWJQREZWaWV3SU9TLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViVmlldy9X
ZWJQREZWaWV3SU9TLm1tCmluZGV4IGFhODc3ZGEwMjliMDZkYTlhMmY4YTZkNmFjYzAwOTAxOTBl
NzM3YWQuLmNiZDUwYjZmY2E4NTU3MTVjMmM3Y2MzZDYwMTJhYmQxODJlNDAyODAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYlZpZXcvV2ViUERGVmlld0lPUy5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJWaWV3L1dlYlBERlZpZXdJT1MubW0KQEAgLTMw
MiwxNCArMzAyLDExIEBAIC0gKHZvaWQpX2NoZWNrUERGVGl0bGUKIAogLSAodm9pZClmaW5pc2hl
ZExvYWRpbmdXaXRoRGF0YVNvdXJjZTooV2ViRGF0YVNvdXJjZSAqKWRhdGFTb3VyY2UKIHsKLSAg
ICBDR0RhdGFQcm92aWRlclJlZiBwcm92aWRlciA9IENHRGF0YVByb3ZpZGVyQ3JlYXRlV2l0aENG
RGF0YSgoQ0ZEYXRhUmVmKVtkYXRhU291cmNlIGRhdGFdKTsKLQorICAgIGF1dG8gcHJvdmlkZXIg
PSBhZG9wdENGKENHRGF0YVByb3ZpZGVyQ3JlYXRlV2l0aENGRGF0YSgoQ0ZEYXRhUmVmKVtkYXRh
U291cmNlIGRhdGFdKSk7CiAgICAgaWYgKCFwcm92aWRlcikgCiAgICAgICAgIHJldHVybjsKICAg
ICAKLSAgICBfUERGRG9jdW1lbnQgPSBDR1BERkRvY3VtZW50Q3JlYXRlV2l0aFByb3ZpZGVyKHBy
b3ZpZGVyKTsKLSAgICBDR0RhdGFQcm92aWRlclJlbGVhc2UocHJvdmlkZXIpOwotICAgICAgICAK
KyAgICBfUERGRG9jdW1lbnQgPSBDR1BERkRvY3VtZW50Q3JlYXRlV2l0aFByb3ZpZGVyKHByb3Zp
ZGVyLmdldCgpKTsKICAgICBpZiAoIV9QREZEb2N1bWVudCkKICAgICAgICAgcmV0dXJuOwogICAg
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViVmlldy9XZWJQREZWaWV3
UGxhY2Vob2xkZXIubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJWaWV3L1dlYlBERlZp
ZXdQbGFjZWhvbGRlci5tbQppbmRleCA3MjU0ZDBjNWFjYzZhYTFhODc5YjYyYWQwYTQ4ODk5ZjNj
ZTdkYmExLi45YmIwOTBhYmE4NjNkODJiNjU1MjM2NTQ2OWQwOTNiOTk5YTYwYjlhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJWaWV3L1dlYlBERlZpZXdQbGFjZWhvbGRl
ci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJWaWV3L1dlYlBERlZpZXdQbGFj
ZWhvbGRlci5tbQpAQCAtMjc0LDEzICsyNzQsMTEgQEAgLSAodm9pZClmaW5pc2hlZExvYWRpbmdX
aXRoRGF0YVNvdXJjZTooV2ViRGF0YVNvdXJjZSAqKWRhdGFTb3VyY2UKICAgICBbc2VsZiBkYXRh
U291cmNlVXBkYXRlZDpkYXRhU291cmNlXTsKIAogICAgIF9kaWRGaW5pc2hMb2FkID0gWUVTOwot
ICAgIENHRGF0YVByb3ZpZGVyUmVmIHByb3ZpZGVyID0gQ0dEYXRhUHJvdmlkZXJDcmVhdGVXaXRo
Q0ZEYXRhKChDRkRhdGFSZWYpW2RhdGFTb3VyY2UgZGF0YV0pOworICAgIGF1dG8gcHJvdmlkZXIg
PSBhZG9wdENGKENHRGF0YVByb3ZpZGVyQ3JlYXRlV2l0aENGRGF0YSgoQ0ZEYXRhUmVmKVtkYXRh
U291cmNlIGRhdGFdKSk7CiAgICAgaWYgKCFwcm92aWRlcikKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgX2RvY3VtZW50ID0gQ0dQREZEb2N1bWVudENyZWF0ZVdpdGhQcm92aWRlcihwcm92aWRlcik7
Ci0KLSAgICBDR0RhdGFQcm92aWRlclJlbGVhc2UocHJvdmlkZXIpOworICAgIF9kb2N1bWVudCA9
IENHUERGRG9jdW1lbnRDcmVhdGVXaXRoUHJvdmlkZXIocHJvdmlkZXIuZ2V0KCkpOwogCiAgICAg
W3NlbGYgX2RvUG9zdExvYWRPclVubG9ja1Rhc2tzXTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViTG9jYWxpemFibGVTdHJpbmdzLm1tIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvTWlzYy9XZWJMb2NhbGl6YWJsZVN0cmluZ3MubW0KaW5kZXggNGVlMDAz
NjQxOWU3YWZjYmY4NTM4MjJkYzViZTk2NDUxOGQwMjk3OS4uMjk0MGQ0YWI2ZjIwOTgzZWM4NmI5
MmFhYTJmNjE3MmMyMTk1MzBmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
TWlzYy9XZWJMb2NhbGl6YWJsZVN0cmluZ3MubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvTWlzYy9XZWJMb2NhbGl6YWJsZVN0cmluZ3MubW0KQEAgLTMwLDYgKzMwLDggQEAKIAogI2lt
cG9ydCA8d3RmL0Fzc2VydGlvbnMuaD4KICNpbXBvcnQgPHd0Zi9NYWluVGhyZWFkLmg+CisjaW1w
b3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KIAog
V2ViTG9jYWxpemFibGVTdHJpbmdzQnVuZGxlIFdlYktpdExvY2FsaXphYmxlU3RyaW5nc0J1bmRs
ZSA9IHsgImNvbS5hcHBsZS5XZWJLaXQiLCAwIH07CiAKQEAgLTQ1LDEzICs0Nyw5IEBAIE5TU3Ry
aW5nICpXZWJMb2NhbGl6ZWRTdHJpbmcoV2ViTG9jYWxpemFibGVTdHJpbmdzQnVuZGxlICpzdHJp
bmdzQnVuZGxlLCBjb25zdCBjCiAKICAgICBOU0J1bmRsZSAqYnVuZGxlOwogICAgIGlmIChzdHJp
bmdzQnVuZGxlID09IE5VTEwpIHsKLSAgICAgICAgc3RhdGljIE5TQnVuZGxlICptYWluQnVuZGxl
OwotICAgICAgICBpZiAobWFpbkJ1bmRsZSA9PSBuaWwpIHsKLSAgICAgICAgICAgIG1haW5CdW5k
bGUgPSBbTlNCdW5kbGUgbWFpbkJ1bmRsZV07Ci0gICAgICAgICAgICBBU1NFUlQobWFpbkJ1bmRs
ZSk7Ci0gICAgICAgICAgICBDRlJldGFpbihtYWluQnVuZGxlKTsKLSAgICAgICAgfQotICAgICAg
ICBidW5kbGUgPSBtYWluQnVuZGxlOworICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0
YWluUHRyPE5TQnVuZGxlPj4gbWFpbkJ1bmRsZSA9IFtOU0J1bmRsZSBtYWluQnVuZGxlXTsKKyAg
ICAgICAgQVNTRVJUKG1haW5CdW5kbGUuZ2V0KCkpOworICAgICAgICBidW5kbGUgPSBtYWluQnVu
ZGxlLmdldCgpLmdldCgpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGJ1bmRsZSA9IHN0cmluZ3NC
dW5kbGUtPmJ1bmRsZTsKICAgICAgICAgaWYgKGJ1bmRsZSA9PSBuaWwpIHsKQEAgLTYxLDkgKzU5
LDggQEAgTlNTdHJpbmcgKldlYkxvY2FsaXplZFN0cmluZyhXZWJMb2NhbGl6YWJsZVN0cmluZ3NC
dW5kbGUgKnN0cmluZ3NCdW5kbGUsIGNvbnN0IGMKICAgICAgICAgfQogICAgIH0KICAgICBOU1N0
cmluZyAqbm90Rm91bmQgPSBAImxvY2FsaXplZCBzdHJpbmcgbm90IGZvdW5kIjsKLSAgICBDRlN0
cmluZ1JlZiBrZXlTdHJpbmcgPSBDRlN0cmluZ0NyZWF0ZVdpdGhDU3RyaW5nTm9Db3B5KE5VTEws
IGtleSwga0NGU3RyaW5nRW5jb2RpbmdVVEY4LCBrQ0ZBbGxvY2F0b3JOdWxsKTsKLSAgICBOU1N0
cmluZyAqcmVzdWx0ID0gW2J1bmRsZSBsb2NhbGl6ZWRTdHJpbmdGb3JLZXk6KF9fYnJpZGdlIE5T
U3RyaW5nICopa2V5U3RyaW5nIHZhbHVlOm5vdEZvdW5kIHRhYmxlOm5pbF07Ci0gICAgQ0ZSZWxl
YXNlKGtleVN0cmluZyk7CisgICAgYXV0byBrZXlTdHJpbmcgPSBhZG9wdENGKENGU3RyaW5nQ3Jl
YXRlV2l0aENTdHJpbmdOb0NvcHkoTlVMTCwga2V5LCBrQ0ZTdHJpbmdFbmNvZGluZ1VURjgsIGtD
RkFsbG9jYXRvck51bGwpKTsKKyAgICBOU1N0cmluZyAqcmVzdWx0ID0gW2J1bmRsZSBsb2NhbGl6
ZWRTdHJpbmdGb3JLZXk6KF9fYnJpZGdlIE5TU3RyaW5nICopa2V5U3RyaW5nLmdldCgpIHZhbHVl
Om5vdEZvdW5kIHRhYmxlOm5pbF07CiAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShyZXN1bHQgIT0g
bm90Rm91bmQsICJjb3VsZCBub3QgZmluZCBsb2NhbGl6YWJsZSBzdHJpbmcgJXMgaW4gYnVuZGxl
Iiwga2V5KTsKICAgICByZXR1cm4gcmVzdWx0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvTWlzYy9XZWJOU0RhdGFFeHRyYXMubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9NaXNjL1dlYk5TRGF0YUV4dHJhcy5tbQppbmRleCA2ZWM3Y2MwZGIyMjcyY2U0YmQzZGEx
NzRlYTMyOTQ1ODZkZGZkMTdlLi44ZDUwNmEyM2ZjNjRhMGU5NjI5MmI2ZTFmMTBlM2YyNDgwNjhl
NDAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYk5TRGF0YUV4
dHJhcy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYk5TRGF0YUV4dHJh
cy5tbQpAQCAtODMsOSArODMsOSBAQCAtIChOU1N0cmluZyAqKV93ZWJfY2FwaXRhbGl6ZVJGQzgy
MkhlYWRlckZpZWxkTmFtZQogICAgIH0KICAgICBpZiAoc29tZXRoaW5nQ2hhbmdlZCkgewogICAg
ICAgICBpZiAodXNlVW5pQ2hhclB0cikKLSAgICAgICAgICAgIHJlc3VsdCA9IENGQnJpZGdpbmdS
ZWxlYXNlKENGU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnNOb0NvcHkoa0NGQWxsb2NhdG9yRGVm
YXVsdCwgdW5pQ2hhclB0ciwgbGVuLCBudWxscHRyKSk7CisgICAgICAgICAgICByZXN1bHQgPSBh
ZG9wdENGKENGU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnNOb0NvcHkoa0NGQWxsb2NhdG9yRGVm
YXVsdCwgdW5pQ2hhclB0ciwgbGVuLCBudWxscHRyKSkuYnJpZGdpbmdBdXRvcmVsZWFzZSgpOwog
ICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXN1bHQgPSBDRkJyaWRnaW5nUmVsZWFzZShDRlN0
cmluZ0NyZWF0ZVdpdGhDU3RyaW5nTm9Db3B5KGtDRkFsbG9jYXRvckRlZmF1bHQsIGNoYXJQdHIs
IGtDRlN0cmluZ0VuY29kaW5nSVNPTGF0aW4xLCBudWxscHRyKSk7CisgICAgICAgICAgICByZXN1
bHQgPSBhZG9wdENGKENGU3RyaW5nQ3JlYXRlV2l0aENTdHJpbmdOb0NvcHkoa0NGQWxsb2NhdG9y
RGVmYXVsdCwgY2hhclB0ciwga0NGU3RyaW5nRW5jb2RpbmdJU09MYXRpbjEsIG51bGxwdHIpKS5i
cmlkZ2luZ0F1dG9yZWxlYXNlKCk7CiAgICAgfSBlbHNlCiAgICAgICAgIHJlc3VsdCA9IHNlbGY7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL05l
dHNjYXBlUGx1Z2luSG9zdE1hbmFnZXIubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVn
aW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkhvc3RNYW5hZ2VyLm1tCmluZGV4IGY2MzkzZjg5YmZi
YTRmNjlmZDAzOGYyMTU2NWVmMTdkMDJmYmYzMzcuLjVmZGEzZmM3MTdmMzEzYTRkYjY1ZTIyYjgz
Njk1ZDgzM2M5OWVmOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdp
bnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSG9zdE1hbmFnZXIubW0KKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5Ib3N0TWFuYWdlci5tbQpA
QCAtMTIxLDcgKzEyMSw3IEBAIHN0YXRpYyBOU1N0cmluZyAqcHJlZmVycmVkQnVuZGxlTG9jYWxp
emF0aW9uTmFtZSgpCiAgICAgaWYgKCFzdWNjZXNzKQogICAgICAgICByZXR1cm4gQCJlbl9VUyI7
CiAKLSAgICByZXR1cm4gQ0ZCcmlkZ2luZ1JlbGVhc2UoQ0ZMb2NhbGVDcmVhdGVDYW5vbmljYWxM
b2NhbGVJZGVudGlmaWVyRnJvbVNjcmlwdE1hbmFnZXJDb2RlcygwLCBsYW5ndWFnZUNvZGUsIHJl
Z2lvbkNvZGUpKTsKKyAgICByZXR1cm4gYWRvcHRDRihDRkxvY2FsZUNyZWF0ZUNhbm9uaWNhbExv
Y2FsZUlkZW50aWZpZXJGcm9tU2NyaXB0TWFuYWdlckNvZGVzKDAsIGxhbmd1YWdlQ29kZSwgcmVn
aW9uQ29kZSkpLmJyaWRnaW5nQXV0b3JlbGVhc2UoKTsKIH0KIAogYm9vbCBOZXRzY2FwZVBsdWdp
bkhvc3RNYW5hZ2VyOjpzcGF3blBsdWdpbkhvc3QoY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoLCBj
cHVfdHlwZV90IHBsdWdpbkFyY2hpdGVjdHVyZSwgbWFjaF9wb3J0X3QgY2xpZW50UG9ydCwgbWFj
aF9wb3J0X3QmIHBsdWdpbkhvc3RQb3J0LCBQcm9jZXNzU2VyaWFsTnVtYmVyJiBwbHVnaW5Ib3N0
UFNOKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRz
Y2FwZVBsdWdpblZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYk5l
dHNjYXBlUGx1Z2luVmlldy5tbQppbmRleCAxMmFhYTNkMDhmNzdjOGNmOGQ0MWQ0NDNlMTJhYjZk
MmUyNzEyM2IyLi44ZmZmMjQ1ZTE2OGQzNGFkYmVkYjAyZDQ3NDhmOWNiODcxMTA3N2I2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2lu
Vmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBl
UGx1Z2luVmlldy5tbQpAQCAtMTQ1MywxNiArMTQ1MywxNSBAQCAtIChjb25zdCBjaGFyICopdXNl
ckFnZW50CiAKIC0odm9pZClzdGF0dXM6KGNvbnN0IGNoYXIgKiltZXNzYWdlCiB7ICAgIAotICAg
IENGU3RyaW5nUmVmIHN0YXR1cyA9IENGU3RyaW5nQ3JlYXRlV2l0aENTdHJpbmcoTlVMTCwgbWVz
c2FnZSA/IG1lc3NhZ2UgOiAiIiwga0NGU3RyaW5nRW5jb2RpbmdVVEY4KTsKKyAgICBhdXRvIHN0
YXR1cyA9IGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVXaXRoQ1N0cmluZyhOVUxMLCBtZXNzYWdlID8g
bWVzc2FnZSA6ICIiLCBrQ0ZTdHJpbmdFbmNvZGluZ1VURjgpKTsKICAgICBpZiAoIXN0YXR1cykg
ewogICAgICAgICBMT0dfRVJST1IoIk5QTl9TdGF0dXM6IHRoZSBtZXNzYWdlIHdhcyBub3QgdmFs
aWQgVVRGLTgiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAgICBMT0coUGx1Z2lu
cywgIk5QTl9TdGF0dXM6ICVAIiwgc3RhdHVzKTsKKyAgICBMT0coUGx1Z2lucywgIk5QTl9TdGF0
dXM6ICVAIiwgc3RhdHVzLmdldCgpKTsKICAgICBXZWJWaWV3ICp3diA9IFtzZWxmIHdlYlZpZXdd
OwotICAgIFtbd3YgX1VJRGVsZWdhdGVGb3J3YXJkZXJdIHdlYlZpZXc6d3Ygc2V0U3RhdHVzVGV4
dDooX19icmlkZ2UgTlNTdHJpbmcgKilzdGF0dXNdOwotICAgIENGUmVsZWFzZShzdGF0dXMpOwor
ICAgIFtbd3YgX1VJRGVsZWdhdGVGb3J3YXJkZXJdIHdlYlZpZXc6d3Ygc2V0U3RhdHVzVGV4dDoo
X19icmlkZ2UgTlNTdHJpbmcgKilzdGF0dXMuZ2V0KCldOwogfQogCiAtKHZvaWQpaW52YWxpZGF0
ZVJlY3Q6KE5QUmVjdCAqKWludmFsaWRSZWN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQcm9ncmVzc1RyYWNrZXJDbGllbnQubW0gYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQcm9ncmVzc1RyYWNrZXJDbGll
bnQubW0KaW5kZXggY2MzOGVmMTYxZTc1M2Q1MTkxNjRmZWQzMGRkNTg3NjUxODA4YmYxNi4uOGY0
NzgzY2IzMDhhNjRkZGNhNWIxMzQ0MzU1MDgyMzYwNDE3ZTA1MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUHJvZ3Jlc3NUcmFja2VyQ2xpZW50
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlByb2dy
ZXNzVHJhY2tlckNsaWVudC5tbQpAQCAtNzAsMTMgKzcwLDEyIEBAIHZvaWQgV2ViUHJvZ3Jlc3NU
cmFja2VyQ2xpZW50Ojpwcm9ncmVzc0VzdGltYXRlQ2hhbmdlZChXZWJDb3JlOjpGcmFtZSYpCiAg
ICAgCiAgICAgLy8gVXNlIGEgQ0ZEaWN0aW9uYXJ5IHNvIHdlIGNhbiBhZGQgdGhlIENHQ29sb3JS
ZWYgd2l0aG91dCBjb21waWxlIGVycm9ycy4gQW5kIHRoZW4gdGhhbmtzIHRvCiAgICAgLy8gdG9s
bC1mcmVlIGJyaWRnaW5nIHdlIGNhbiBwYXNzIHRoZSBDRkRpY3Rpb25hcnkgYXMgYW4gTlNEaWN0
aW9uYXJ5IHRvIHBvc3ROb3RpZmljYXRpb24uCi0gICAgQ0ZNdXRhYmxlRGljdGlvbmFyeVJlZiB1
c2VySW5mbyA9IENGRGljdGlvbmFyeUNyZWF0ZU11dGFibGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwg
MiwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1
ZUNhbGxCYWNrcyk7Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUodXNlckluZm8sIFdlYlZpZXdQ
cm9ncmVzc0VzdGltYXRlZFByb2dyZXNzS2V5LCBwcm9ncmVzcyk7CisgICAgYXV0byB1c2VySW5m
byA9IGFkb3B0Q0YoQ0ZEaWN0aW9uYXJ5Q3JlYXRlTXV0YWJsZShrQ0ZBbGxvY2F0b3JEZWZhdWx0
LCAyLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZh
bHVlQ2FsbEJhY2tzKSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUodXNlckluZm8uZ2V0KCks
IFdlYlZpZXdQcm9ncmVzc0VzdGltYXRlZFByb2dyZXNzS2V5LCBwcm9ncmVzcyk7CiAgICAgaWYg
KGJvZHlCYWNrZ3JvdW5kQ29sb3IpCi0gICAgICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKHVzZXJJ
bmZvLCBXZWJWaWV3UHJvZ3Jlc3NCYWNrZ3JvdW5kQ29sb3JLZXksIGJvZHlCYWNrZ3JvdW5kQ29s
b3IpOworICAgICAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZSh1c2VySW5mby5nZXQoKSwgV2ViVmll
d1Byb2dyZXNzQmFja2dyb3VuZENvbG9yS2V5LCBib2R5QmFja2dyb3VuZENvbG9yKTsKICAgICAK
LSAgICBXZWJUaHJlYWRQb3N0Tm90aWZpY2F0aW9uKFdlYlZpZXdQcm9ncmVzc0VzdGltYXRlQ2hh
bmdlZE5vdGlmaWNhdGlvbiwgbV93ZWJWaWV3LCAoTlNEaWN0aW9uYXJ5ICopIHVzZXJJbmZvKTsK
LSAgICBDRlJlbGVhc2UodXNlckluZm8pOworICAgIFdlYlRocmVhZFBvc3ROb3RpZmljYXRpb24o
V2ViVmlld1Byb2dyZXNzRXN0aW1hdGVDaGFuZ2VkTm90aWZpY2F0aW9uLCBtX3dlYlZpZXcsIChO
U0RpY3Rpb25hcnkgKil1c2VySW5mby5nZXQoKSk7CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViSW5zcGVjdG9yL1dlYk5vZGVIaWdobGlnaHRWaWV3
Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViSW5zcGVjdG9yL1dlYk5vZGVIaWdobGln
aHRWaWV3Lm1tCmluZGV4IDIwZjE5ZjBiYzRiYjQ4ZGQyZGU1OTA2ZDllMjdlM2IzYzM0YzI1M2Yu
LmQzOTczZTI5NDQ1OWVjZjFkYmRlZjQ0OWVmMmNmZDJjYWNiOGVkMzUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkluc3BlY3Rvci9XZWJOb2RlSGlnaGxpZ2h0Vmlldy5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJJbnNwZWN0b3IvV2ViTm9kZUhpZ2hs
aWdodFZpZXcubW0KQEAgLTIzNiwyOCArMjM2LDI2IEBAIHN0YXRpYyB2b2lkIGxheWVyUGF0aFdp
dGhIb2xlKENBU2hhcGVMYXllciAqbGF5ZXIsIGNvbnN0IEZsb2F0UXVhZCYgb3V0ZXJRdWFkLCBj
CiAgICAgICAgIGlubmVySG9sZSA9IHF1YWRJbnRlcnNlY3Rpb24ob3V0ZXJRdWFkLCBob2xlUXVh
ZCk7CiAKICAgICAvLyBDbG9ja3dpc2UgaW5zaWRlIHJlY3QgKGhvbGUpLCBDb3VudGVyLUNsb2Nr
d2lzZSBvdXRzaWRlIHJlY3QgKGZpbGwpLgotICAgIENHTXV0YWJsZVBhdGhSZWYgcGF0aCA9IENH
UGF0aENyZWF0ZU11dGFibGUoKTsKLSAgICBDR1BhdGhNb3ZlVG9Qb2ludChwYXRoLCAwLCBpbm5l
ckhvbGUucDEoKS54KCksIGlubmVySG9sZS5wMSgpLnkoKSk7Ci0gICAgQ0dQYXRoQWRkTGluZVRv
UG9pbnQocGF0aCwgMCwgaW5uZXJIb2xlLnAyKCkueCgpLCBpbm5lckhvbGUucDIoKS55KCkpOwot
ICAgIENHUGF0aEFkZExpbmVUb1BvaW50KHBhdGgsIDAsIGlubmVySG9sZS5wMygpLngoKSwgaW5u
ZXJIb2xlLnAzKCkueSgpKTsKLSAgICBDR1BhdGhBZGRMaW5lVG9Qb2ludChwYXRoLCAwLCBpbm5l
ckhvbGUucDQoKS54KCksIGlubmVySG9sZS5wNCgpLnkoKSk7Ci0gICAgQ0dQYXRoTW92ZVRvUG9p
bnQocGF0aCwgMCwgb3V0ZXJRdWFkLnAxKCkueCgpLCBvdXRlclF1YWQucDEoKS55KCkpOwotICAg
IENHUGF0aEFkZExpbmVUb1BvaW50KHBhdGgsIDAsIG91dGVyUXVhZC5wNCgpLngoKSwgb3V0ZXJR
dWFkLnA0KCkueSgpKTsKLSAgICBDR1BhdGhBZGRMaW5lVG9Qb2ludChwYXRoLCAwLCBvdXRlclF1
YWQucDMoKS54KCksIG91dGVyUXVhZC5wMygpLnkoKSk7Ci0gICAgQ0dQYXRoQWRkTGluZVRvUG9p
bnQocGF0aCwgMCwgb3V0ZXJRdWFkLnAyKCkueCgpLCBvdXRlclF1YWQucDIoKS55KCkpOwotICAg
IGxheWVyLnBhdGggPSBwYXRoOwotICAgIENHUGF0aFJlbGVhc2UocGF0aCk7CisgICAgYXV0byBw
YXRoID0gYWRvcHRDRihDR1BhdGhDcmVhdGVNdXRhYmxlKCkpOworICAgIENHUGF0aE1vdmVUb1Bv
aW50KHBhdGguZ2V0KCksIDAsIGlubmVySG9sZS5wMSgpLngoKSwgaW5uZXJIb2xlLnAxKCkueSgp
KTsKKyAgICBDR1BhdGhBZGRMaW5lVG9Qb2ludChwYXRoLmdldCgpLCAwLCBpbm5lckhvbGUucDIo
KS54KCksIGlubmVySG9sZS5wMigpLnkoKSk7CisgICAgQ0dQYXRoQWRkTGluZVRvUG9pbnQocGF0
aC5nZXQoKSwgMCwgaW5uZXJIb2xlLnAzKCkueCgpLCBpbm5lckhvbGUucDMoKS55KCkpOworICAg
IENHUGF0aEFkZExpbmVUb1BvaW50KHBhdGguZ2V0KCksIDAsIGlubmVySG9sZS5wNCgpLngoKSwg
aW5uZXJIb2xlLnA0KCkueSgpKTsKKyAgICBDR1BhdGhNb3ZlVG9Qb2ludChwYXRoLmdldCgpLCAw
LCBvdXRlclF1YWQucDEoKS54KCksIG91dGVyUXVhZC5wMSgpLnkoKSk7CisgICAgQ0dQYXRoQWRk
TGluZVRvUG9pbnQocGF0aC5nZXQoKSwgMCwgb3V0ZXJRdWFkLnA0KCkueCgpLCBvdXRlclF1YWQu
cDQoKS55KCkpOworICAgIENHUGF0aEFkZExpbmVUb1BvaW50KHBhdGguZ2V0KCksIDAsIG91dGVy
UXVhZC5wMygpLngoKSwgb3V0ZXJRdWFkLnAzKCkueSgpKTsKKyAgICBDR1BhdGhBZGRMaW5lVG9Q
b2ludChwYXRoLmdldCgpLCAwLCBvdXRlclF1YWQucDIoKS54KCksIG91dGVyUXVhZC5wMigpLnko
KSk7CisgICAgbGF5ZXIucGF0aCA9IHBhdGguZ2V0KCk7CiB9CiAKIHN0YXRpYyB2b2lkIGxheWVy
UGF0aChDQVNoYXBlTGF5ZXIgKmxheWVyLCBjb25zdCBGbG9hdFF1YWQmIG91dGVyUXVhZCkKIHsK
LSAgICBDR011dGFibGVQYXRoUmVmIHBhdGggPSBDR1BhdGhDcmVhdGVNdXRhYmxlKCk7Ci0gICAg
Q0dQYXRoTW92ZVRvUG9pbnQocGF0aCwgMCwgb3V0ZXJRdWFkLnAxKCkueCgpLCBvdXRlclF1YWQu
cDEoKS55KCkpOwotICAgIENHUGF0aEFkZExpbmVUb1BvaW50KHBhdGgsIDAsIG91dGVyUXVhZC5w
NCgpLngoKSwgb3V0ZXJRdWFkLnA0KCkueSgpKTsKLSAgICBDR1BhdGhBZGRMaW5lVG9Qb2ludChw
YXRoLCAwLCBvdXRlclF1YWQucDMoKS54KCksIG91dGVyUXVhZC5wMygpLnkoKSk7Ci0gICAgQ0dQ
YXRoQWRkTGluZVRvUG9pbnQocGF0aCwgMCwgb3V0ZXJRdWFkLnAyKCkueCgpLCBvdXRlclF1YWQu
cDIoKS55KCkpOwotICAgIGxheWVyLnBhdGggPSBwYXRoOwotICAgIENHUGF0aFJlbGVhc2UocGF0
aCk7CisgICAgYXV0byBwYXRoID0gYWRvcHRDRihDR1BhdGhDcmVhdGVNdXRhYmxlKCkpOworICAg
IENHUGF0aE1vdmVUb1BvaW50KHBhdGguZ2V0KCksIDAsIG91dGVyUXVhZC5wMSgpLngoKSwgb3V0
ZXJRdWFkLnAxKCkueSgpKTsKKyAgICBDR1BhdGhBZGRMaW5lVG9Qb2ludChwYXRoLmdldCgpLCAw
LCBvdXRlclF1YWQucDQoKS54KCksIG91dGVyUXVhZC5wNCgpLnkoKSk7CisgICAgQ0dQYXRoQWRk
TGluZVRvUG9pbnQocGF0aC5nZXQoKSwgMCwgb3V0ZXJRdWFkLnAzKCkueCgpLCBvdXRlclF1YWQu
cDMoKS55KCkpOworICAgIENHUGF0aEFkZExpbmVUb1BvaW50KHBhdGguZ2V0KCksIDAsIG91dGVy
UXVhZC5wMigpLngoKSwgb3V0ZXJRdWFkLnAyKCkueSgpKTsKKyAgICBsYXllci5wYXRoID0gcGF0
aC5nZXQoKTsKIH0KIAogLSAodm9pZClfbGF5b3V0Rm9yTm9kZUhpZ2hsaWdodDooSW5zcGVjdG9y
T3ZlcmxheTo6SGlnaGxpZ2h0KiloaWdobGlnaHQgcGFyZW50OihDQUxheWVyICopcGFyZW50TGF5
ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUu
bW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCmluZGV4IGI5
YmU3ZDk5MDVkYWY1MGVlOWZkNTMwOGU5N2ZmM2M5ZGVjYTllMWIuLjNhYmM2MDFiODBiYWQ0MzAz
NTQyNWI0OTI5ODQ5ZjEzZWYxNDg3NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Vmlldy9XZWJGcmFtZS5tbQpAQCAtMjQ2MSwxMiArMjQ2MSw5IEBAIC0gKHZvaWQpbG9hZFJlcXVl
c3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QKIAogc3RhdGljIE5TVVJMICpjcmVhdGVVbmlxdWVX
ZWJEYXRhVVJMKCkKIHsKLSAgICBDRlVVSURSZWYgVVVJRFJlZiA9IENGVVVJRENyZWF0ZShrQ0ZB
bGxvY2F0b3JEZWZhdWx0KTsKLSAgICBOU1N0cmluZyAqVVVJRFN0cmluZyA9IChOU1N0cmluZyAq
KUNGVVVJRENyZWF0ZVN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBVVUlEUmVmKTsKLSAgICBD
RlJlbGVhc2UoVVVJRFJlZik7Ci0gICAgTlNVUkwgKlVSTCA9IFtOU1VSTCBVUkxXaXRoU3RyaW5n
OltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiYXBwbGV3ZWJkYXRhOi8vJUAiLCBVVUlEU3Ry
aW5nXV07Ci0gICAgQ0ZSZWxlYXNlKFVVSURTdHJpbmcpOwotICAgIHJldHVybiBVUkw7CisgICAg
YXV0byBVVUlEUmVmID0gYWRvcHRDRihDRlVVSURDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCkp
OworICAgIGF1dG8gVVVJRFN0cmluZyA9IGFkb3B0Q0YoQ0ZVVUlEQ3JlYXRlU3RyaW5nKGtDRkFs
bG9jYXRvckRlZmF1bHQsIFVVSURSZWYuZ2V0KCkpKTsKKyAgICByZXR1cm4gW05TVVJMIFVSTFdp
dGhTdHJpbmc6W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJhcHBsZXdlYmRhdGE6Ly8lQCIs
IChfX2JyaWRnZSBOU1N0cmluZyAqKVVVSURTdHJpbmcuZ2V0KCldXTsKIH0KIAogLSAodm9pZClf
bG9hZERhdGE6KE5TRGF0YSAqKWRhdGEgTUlNRVR5cGU6KE5TU3RyaW5nICopTUlNRVR5cGUgdGV4
dEVuY29kaW5nTmFtZTooTlNTdHJpbmcgKillbmNvZGluZ05hbWUgYmFzZVVSTDooTlNVUkwgKili
YXNlVVJMIHVucmVhY2hhYmxlVVJMOihOU1VSTCAqKXVucmVhY2hhYmxlVVJMCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0gYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KaW5kZXggNjg1NjEwYzI1ZWMyYWU1ZmQ1
ZjUxM2JiOTMxNjJjNGUyZTYxZmI5Mi4uZTMzM2Q2ZTBmOWIzYzI1Y2JiY2RmYjliNmNhZWM0YWUx
NDQyYzlkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJW
aWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpA
QCAtODQwMyw3ICs4NDAzLDcgQEAgKyAodm9pZClfc2V0Q2FjaGVNb2RlbDooV2ViQ2FjaGVNb2Rl
bCljYWNoZU1vZGVsCiAgICAgaWYgKHNfZGlkU2V0Q2FjaGVNb2RlbCAmJiBjYWNoZU1vZGVsID09
IHNfY2FjaGVNb2RlbCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgTlNTdHJpbmcgKm5zdXJsQ2Fj
aGVEaXJlY3RvcnkgPSBDRkJyaWRnaW5nUmVsZWFzZShfQ0ZVUkxDYWNoZUNvcHlDYWNoZURpcmVj
dG9yeShbW05TVVJMQ2FjaGUgc2hhcmVkVVJMQ2FjaGVdIF9DRlVSTENhY2hlXSkpOworICAgIE5T
U3RyaW5nICpuc3VybENhY2hlRGlyZWN0b3J5ID0gYWRvcHRDRihfQ0ZVUkxDYWNoZUNvcHlDYWNo
ZURpcmVjdG9yeShbW05TVVJMQ2FjaGUgc2hhcmVkVVJMQ2FjaGVdIF9DRlVSTENhY2hlXSkpLmJy
aWRnaW5nQXV0b3JlbGVhc2UoKTsKICAgICBpZiAoIW5zdXJsQ2FjaGVEaXJlY3RvcnkpCiAgICAg
ICAgIG5zdXJsQ2FjaGVEaXJlY3RvcnkgPSBOU0hvbWVEaXJlY3RvcnkoKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWcuY3BwIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vQ0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWcuY3BwCmluZGV4
IGJjOWU2NTk0ZTc3N2JmMDA4NjgzNjJiNzUxYzI3NTE5ZDdiZWE3M2IuLjY4MWJkOWZkZDA5ZDM0
ZWJkOGQ5ZGVhNDIzZmM1ZWEwYTU3NmM5OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL0NGRGljdGlvbmFyeVByb3BlcnR5QmFnLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9DRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZy5jcHAKQEAgLTE0MSwxNyArMTQxLDE3IEBA
IHN0YXRpYyBib29sIENvbnZlcnRWYXJpYW50VG9DRlR5cGUoVkFSSUFOVCogcFZhciwgdm9pZCoq
IGNmT2JqKQogICAgICAgICAgICAgKmNmT2JqID0gKHZvaWQqKSBNYXJzaGFsbGluZ0hlbHBlcnM6
OkJTVFJUb0NGU3RyaW5nUmVmKFZfQlNUUihwVmFyKSk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICAgICAgfSBlbHNlIGlmIChWX1ZUKHBWYXIpID09IFZUX0k0KSB7Ci0gICAgICAgICAg
ICAqY2ZPYmogPSAodm9pZCopIE1hcnNoYWxsaW5nSGVscGVyczo6aW50VG9DRk51bWJlclJlZihW
X0k0KHBWYXIpKTsKKyAgICAgICAgICAgICpjZk9iaiA9ICh2b2lkKikgTWFyc2hhbGxpbmdIZWxw
ZXJzOjppbnRUb0NGTnVtYmVyUmVmKFZfSTQocFZhcikpLmxlYWZSZWYoKTsKICAgICAgICAgICAg
IHJldHVybiB0cnVlOwogICAgICAgICB9IGVsc2UgaWYgKCEhKFZfVlQocFZhcikmVlRfQVJSQVkp
KSB7CiAgICAgICAgICAgICBpZiAoKFZfVlQocFZhcikmflZUX0FSUkFZKSA9PSBWVF9CU1RSKSB7
Ci0gICAgICAgICAgICAgICAgKmNmT2JqID0gKHZvaWQqKSBNYXJzaGFsbGluZ0hlbHBlcnM6OnNh
ZmVBcnJheVRvU3RyaW5nQXJyYXkoVl9BUlJBWShwVmFyKSk7CisgICAgICAgICAgICAgICAgKmNm
T2JqID0gKHZvaWQqKSBNYXJzaGFsbGluZ0hlbHBlcnM6OnNhZmVBcnJheVRvU3RyaW5nQXJyYXko
Vl9BUlJBWShwVmFyKSkubGVha1JlZigpOwogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgICAgICAgICAgfSBlbHNlIGlmICgoVl9WVChwVmFyKSZ+VlRfQVJSQVkpID09IFZUX0k0KSB7
Ci0gICAgICAgICAgICAgICAgKmNmT2JqID0gKHZvaWQqKSBNYXJzaGFsbGluZ0hlbHBlcnM6OnNh
ZmVBcnJheVRvSW50QXJyYXkoVl9BUlJBWShwVmFyKSk7CisgICAgICAgICAgICAgICAgKmNmT2Jq
ID0gKHZvaWQqKSBNYXJzaGFsbGluZ0hlbHBlcnM6OnNhZmVBcnJheVRvSW50QXJyYXkoVl9BUlJB
WShwVmFyKSkubGVha1JlZigpOwogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAg
ICAgICAgfSBlbHNlIGlmICgoVl9WVChwVmFyKSZ+VlRfQVJSQVkpID09IFZUX1VOS05PV04pIHsK
LSAgICAgICAgICAgICAgICAqY2ZPYmogPSAodm9pZCopIE1hcnNoYWxsaW5nSGVscGVyczo6c2Fm
ZUFycmF5VG9JVW5rbm93bkFycmF5KFZfQVJSQVkocFZhcikpOworICAgICAgICAgICAgICAgICpj
Zk9iaiA9ICh2b2lkKikgTWFyc2hhbGxpbmdIZWxwZXJzOjpzYWZlQXJyYXlUb0lVbmtub3duQXJy
YXkoVl9BUlJBWShwVmFyKSkubGVha1JlZigpOwogICAgICAgICAgICAgICAgIHJldHVybiB0cnVl
OwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0xNjcsMTQgKzE2NywxMyBAQCBIUkVTVUxU
IENGRGljdGlvbmFyeVByb3BlcnR5QmFnOjpSZWFkKExQQ09MRVNUUiBwc3pQcm9wTmFtZSwgVkFS
SUFOVCAqcFZhciwgSUVycgogI2lmIFVTRShDRikKICAgICBpZiAobV9kaWN0aW9uYXJ5KSB7CiAg
ICAgICAgIHZvaWQqIHZhbHVlOwotICAgICAgICBDRlN0cmluZ1JlZiBrZXkgPSBNYXJzaGFsbGlu
Z0hlbHBlcnM6OkxQQ09MRVNUUlRvQ0ZTdHJpbmdSZWYocHN6UHJvcE5hbWUpOworICAgICAgICBh
dXRvIGtleSA9IE1hcnNoYWxsaW5nSGVscGVyczo6TFBDT0xFU1RSVG9DRlN0cmluZ1JlZihwc3pQ
cm9wTmFtZSk7CiAgICAgICAgIEhSRVNVTFQgaHIgPSBFX0ZBSUw7Ci0gICAgICAgIGlmIChDRkRp
Y3Rpb25hcnlHZXRWYWx1ZUlmUHJlc2VudChtX2RpY3Rpb25hcnkuZ2V0KCksIGtleSwgKGNvbnN0
IHZvaWQqKikgJnZhbHVlKSkgeworICAgICAgICBpZiAoQ0ZEaWN0aW9uYXJ5R2V0VmFsdWVJZlBy
ZXNlbnQobV9kaWN0aW9uYXJ5LmdldCgpLCBrZXkuZ2V0KCksIChjb25zdCB2b2lkKiopICZ2YWx1
ZSkpIHsKICAgICAgICAgICAgIGlmIChDb252ZXJ0Q0ZUeXBlVG9WYXJpYW50KHBWYXIsIHZhbHVl
KSkKICAgICAgICAgICAgICAgICBociA9IFNfT0s7CiAgICAgICAgIH0gZWxzZQogICAgICAgICAg
ICAgaHIgPSBFX0lOVkFMSURBUkc7Ci0gICAgICAgIENGUmVsZWFzZShrZXkpOwogICAgICAgICBy
ZXR1cm4gaHI7CiAgICAgfQogI2VuZGlmCkBAIC0xOTEsMTAgKzE5MCw5IEBAIEhSRVNVTFQgQ0ZE
aWN0aW9uYXJ5UHJvcGVydHlCYWc6OldyaXRlKF9Jbl8gTFBDT0xFU1RSIHBzelByb3BOYW1lLCBf
SW5fIFZBUklBTlQqCiAgICAgfQogICAgIHZvaWQqIGNmT2JqOwogICAgIGlmIChDb252ZXJ0VmFy
aWFudFRvQ0ZUeXBlKHBWYXIsICZjZk9iaikpIHsKLSAgICAgICAgQ0ZTdHJpbmdSZWYga2V5ID0g
TWFyc2hhbGxpbmdIZWxwZXJzOjpMUENPTEVTVFJUb0NGU3RyaW5nUmVmKHBzelByb3BOYW1lKTsK
LSAgICAgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUobV9kaWN0aW9uYXJ5LmdldCgpLCBrZXksIGNm
T2JqKTsKKyAgICAgICAgYXV0byBrZXkgPSBNYXJzaGFsbGluZ0hlbHBlcnM6OkxQQ09MRVNUUlRv
Q0ZTdHJpbmdSZWYocHN6UHJvcE5hbWUpOworICAgICAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZSht
X2RpY3Rpb25hcnkuZ2V0KCksIGtleS5nZXQoKSwgY2ZPYmopOwogICAgICAgICAvLyBDRkRpY3Rp
b25hcnlBZGRWYWx1ZSBzaG91bGQgYXV0b21hdGljYWxseSByZXRhaW4gdGhlIENGIG9iamVjdHMg
cGFzc2VkIGluLCBzbyByZWxlYXNlIHRoZW0gaGVyZQotICAgICAgICBDRlJlbGVhc2Uoa2V5KTsK
ICAgICAgICAgQ0ZSZWxlYXNlKGNmT2JqKTsKICAgICAgICAgcmV0dXJuIFNfT0s7CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vTWFyc2hhbGxpbmdIZWxwZXJzLmNw
cCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01hcnNoYWxsaW5nSGVscGVycy5jcHAKaW5kZXgg
MjU2MDg5MzE5MDQ1NzQ2YTkzOTVlNWRlZDZjNmE3M2NkY2RiZjhhZS4uYWI2ZDg1YmZmNzk3YTk5
YjhlOWY4YjIyYmNjZGNjNDVkMjcwOWU3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vTWFyc2hhbGxpbmdIZWxwZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9NYXJzaGFsbGluZ0hlbHBlcnMuY3BwCkBAIC01MywzOSArNTMsMzMgQEAgQlNUUiBNYXJzaGFs
bGluZ0hlbHBlcnM6OlVSTFRvQlNUUihjb25zdCBVUkwmIHVybCkKIH0KIAogI2lmIFVTRShDRikK
LUNGVVJMUmVmIE1hcnNoYWxsaW5nSGVscGVyczo6UGF0aFN0cmluZ1RvRmlsZUNGVVJMUmVmKGNv
bnN0IFN0cmluZyYgc3RyaW5nKQorUmV0YWluUHRyPENGVVJMUmVmPiBNYXJzaGFsbGluZ0hlbHBl
cnM6OlBhdGhTdHJpbmdUb0ZpbGVDRlVSTFJlZihjb25zdCBTdHJpbmcmIHN0cmluZykKIHsKLSAg
ICByZXR1cm4gQ0ZVUkxDcmVhdGVXaXRoRmlsZVN5c3RlbVBhdGgoMCwgc3RyaW5nLmNyZWF0ZUNG
U3RyaW5nKCkuZ2V0KCksIGtDRlVSTFdpbmRvd3NQYXRoU3R5bGUsIGZhbHNlKTsKKyAgICByZXR1
cm4gYWRvcHRDRihDRlVSTENyZWF0ZVdpdGhGaWxlU3lzdGVtUGF0aCgwLCBzdHJpbmcuY3JlYXRl
Q0ZTdHJpbmcoKS5nZXQoKSwga0NGVVJMV2luZG93c1BhdGhTdHlsZSwgZmFsc2UpKTsKIH0KIAog
U3RyaW5nIE1hcnNoYWxsaW5nSGVscGVyczo6RmlsZUNGVVJMUmVmVG9QYXRoU3RyaW5nKENGVVJM
UmVmIGZpbGVVUkwpCiB7Ci0gICAgQ0ZTdHJpbmdSZWYgc3RyaW5nID0gQ0ZVUkxDb3B5RmlsZVN5
c3RlbVBhdGgoZmlsZVVSTCwga0NGVVJMV2luZG93c1BhdGhTdHlsZSk7Ci0gICAgU3RyaW5nIHJl
c3VsdChzdHJpbmcpOwotICAgIENGUmVsZWFzZShzdHJpbmcpOwotICAgIHJldHVybiByZXN1bHQ7
CisgICAgcmV0dXJuIGFkb3B0Q0YoQ0ZVUkxDb3B5RmlsZVN5c3RlbVBhdGgoZmlsZVVSTCwga0NG
VVJMV2luZG93c1BhdGhTdHlsZSkpLmdldCgpOwogfQogCi1DRlVSTFJlZiBNYXJzaGFsbGluZ0hl
bHBlcnM6OkJTVFJUb0NGVVJMUmVmKEJTVFIgdXJsU3RyKQorUmV0YWluUHRyPENGVVJMUmVmPiBN
YXJzaGFsbGluZ0hlbHBlcnM6OkJTVFJUb0NGVVJMUmVmKEJTVFIgdXJsU3RyKQogewotICAgIENG
U3RyaW5nUmVmIHVybENGU3RyaW5nID0gQlNUUlRvQ0ZTdHJpbmdSZWYodXJsU3RyKTsKKyAgICBh
dXRvIHVybENGU3RyaW5nID0gQlNUUlRvQ0ZTdHJpbmdSZWYodXJsU3RyKTsKICAgICBpZiAoIXVy
bENGU3RyaW5nKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIENGVVJMUmVmIHVybFJlZiA9IENG
VVJMQ3JlYXRlV2l0aFN0cmluZygwLCB1cmxDRlN0cmluZywgMCk7Ci0gICAgQ0ZSZWxlYXNlKHVy
bENGU3RyaW5nKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gdXJsUmVm
OworICAgIHJldHVybiBhZG9wdENGKENGVVJMQ3JlYXRlV2l0aFN0cmluZyhudWxscHRyLCB1cmxD
RlN0cmluZy5nZXQoKSwgbnVsbHB0cikpOwogfQogCi1DRlN0cmluZ1JlZiBNYXJzaGFsbGluZ0hl
bHBlcnM6OkJTVFJUb0NGU3RyaW5nUmVmKEJTVFIgc3RyKQorUmV0YWluUHRyPENGU3RyaW5nUmVm
PiBNYXJzaGFsbGluZ0hlbHBlcnM6OkJTVFJUb0NGU3RyaW5nUmVmKEJTVFIgc3RyKQogewotICAg
IHJldHVybiBDRlN0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKDAsIChjb25zdCBVbmlDaGFyKiko
c3RyID8gc3RyIDogVEVYVCgiIikpLCBTeXNTdHJpbmdMZW4oc3RyKSk7CisgICAgcmV0dXJuIGFk
b3B0Q0YoQ0ZTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycygwLCAoY29uc3QgVW5pQ2hhciopKHN0
ciA/IHN0ciA6IFRFWFQoIiIpKSwgU3lzU3RyaW5nTGVuKHN0cikpKTsKIH0KIAotQ0ZTdHJpbmdS
ZWYgTWFyc2hhbGxpbmdIZWxwZXJzOjpMUENPTEVTVFJUb0NGU3RyaW5nUmVmKExQQ09MRVNUUiBz
dHIpCitSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IE1hcnNoYWxsaW5nSGVscGVyczo6TFBDT0xFU1RS
VG9DRlN0cmluZ1JlZihMUENPTEVTVFIgc3RyKQogewotICAgIHJldHVybiBDRlN0cmluZ0NyZWF0
ZVdpdGhDaGFyYWN0ZXJzKDAsIChjb25zdCBVbmlDaGFyKikoc3RyID8gc3RyIDogVEVYVCgiIikp
LCAoQ0ZJbmRleCkoc3RyID8gd2NzbGVuKHN0cikgOiAwKSk7CisgICAgcmV0dXJuIGFkb3B0Q0Yo
Q0ZTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycygwLCAoY29uc3QgVW5pQ2hhciopKHN0ciA/IHN0
ciA6IFRFWFQoIiIpKSwgKENGSW5kZXgpKHN0ciA/IHdjc2xlbihzdHIpIDogMCkpKTsKIH0KIAog
QlNUUiBNYXJzaGFsbGluZ0hlbHBlcnM6OkNGU3RyaW5nUmVmVG9CU1RSKENGU3RyaW5nUmVmIHN0
cikKQEAgLTEwMCw5ICs5NCw5IEBAIGludCBNYXJzaGFsbGluZ0hlbHBlcnM6OkNGTnVtYmVyUmVm
VG9JbnQoQ0ZOdW1iZXJSZWYgbnVtKQogICAgIHJldHVybiBudW1iZXI7CiB9CiAKLUNGTnVtYmVy
UmVmIE1hcnNoYWxsaW5nSGVscGVyczo6aW50VG9DRk51bWJlclJlZihpbnQgbnVtKQorUmV0YWlu
UHRyPENGTnVtYmVyUmVmPiBNYXJzaGFsbGluZ0hlbHBlcnM6OmludFRvQ0ZOdW1iZXJSZWYoaW50
IG51bSkKIHsKLSAgICByZXR1cm4gQ0ZOdW1iZXJDcmVhdGUoMCwga0NGTnVtYmVyU0ludDMyVHlw
ZSwgJm51bSk7CisgICAgcmV0dXJuIGFkb3B0Q0YoQ0ZOdW1iZXJDcmVhdGUoMCwga0NGTnVtYmVy
U0ludDMyVHlwZSwgJm51bSkpOwogfQogI2VuZGlmCiAKQEAgLTI0NCw3ICsyMzgsNyBAQCBTQUZF
QVJSQVkqIE1hcnNoYWxsaW5nSGVscGVyczo6aXVua25vd25BcnJheVRvU2FmZUFycmF5KENGQXJy
YXlSZWYgaW5BcnJheSkKICAgICByZXR1cm4gc2E7CiB9CiAKLUNGQXJyYXlSZWYgTWFyc2hhbGxp
bmdIZWxwZXJzOjpzYWZlQXJyYXlUb1N0cmluZ0FycmF5KFNBRkVBUlJBWSogaW5BcnJheSkKK1Jl
dGFpblB0cjxDRkFycmF5UmVmPiBNYXJzaGFsbGluZ0hlbHBlcnM6OnNhZmVBcnJheVRvU3RyaW5n
QXJyYXkoU0FGRUFSUkFZKiBpbkFycmF5KQogewogICAgIGxvbmcgbEJvdW5kPTAsIHVCb3VuZD0t
MTsKICAgICBIUkVTVUxUIGhyID0gOjpTYWZlQXJyYXlHZXRMQm91bmQoaW5BcnJheSwgMSwgJmxC
b3VuZCk7CkBAIC0yNTcsMTQgKzI1MSwxMyBAQCBDRkFycmF5UmVmIE1hcnNoYWxsaW5nSGVscGVy
czo6c2FmZUFycmF5VG9TdHJpbmdBcnJheShTQUZFQVJSQVkqIGluQXJyYXkpCiAgICAgICAgIGZv
ciAoOyBsQm91bmQgPD0gdUJvdW5kOyBsQm91bmQrKykgewogICAgICAgICAgICAgQlN0cmluZyBz
dHI7CiAgICAgICAgICAgICBociA9IDo6U2FmZUFycmF5R2V0RWxlbWVudChpbkFycmF5LCAmbEJv
dW5kLCAmc3RyKTsKLSAgICAgICAgICAgIGl0ZW1zW2xCb3VuZF0gPSBCU1RSVG9DRlN0cmluZ1Jl
ZihzdHIpOworICAgICAgICAgICAgaXRlbXNbbEJvdW5kXSA9IEJTVFJUb0NGU3RyaW5nUmVmKHN0
cikubGVha1JlZigpOwogICAgICAgICB9CiAgICAgfQotICAgIENGQXJyYXlSZWYgcmVzdWx0ID0g
Q0ZBcnJheUNyZWF0ZSgwLCAoY29uc3Qgdm9pZCoqKWl0ZW1zLmRhdGEoKSwgbGVuLCAma0NGVHlw
ZUFycmF5Q2FsbEJhY2tzKTsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiBhZG9wdENG
KENGQXJyYXlDcmVhdGUoMCwgKGNvbnN0IHZvaWQqKilpdGVtcy5kYXRhKCksIGxlbiwgJmtDRlR5
cGVBcnJheUNhbGxCYWNrcykpOwogfQogCi1DRkFycmF5UmVmIE1hcnNoYWxsaW5nSGVscGVyczo6
c2FmZUFycmF5VG9JbnRBcnJheShTQUZFQVJSQVkqIGluQXJyYXkpCitSZXRhaW5QdHI8Q0ZBcnJh
eVJlZj4gTWFyc2hhbGxpbmdIZWxwZXJzOjpzYWZlQXJyYXlUb0ludEFycmF5KFNBRkVBUlJBWSog
aW5BcnJheSkKIHsKICAgICBsb25nIGxCb3VuZD0wLCB1Qm91bmQ9LTE7CiAgICAgSFJFU1VMVCBo
ciA9IDo6U2FmZUFycmF5R2V0TEJvdW5kKGluQXJyYXksIDEsICZsQm91bmQpOwpAQCAtMjc3LDE0
ICsyNzAsMTMgQEAgQ0ZBcnJheVJlZiBNYXJzaGFsbGluZ0hlbHBlcnM6OnNhZmVBcnJheVRvSW50
QXJyYXkoU0FGRUFSUkFZKiBpbkFycmF5KQogICAgICAgICBmb3IgKDsgbEJvdW5kIDw9IHVCb3Vu
ZDsgbEJvdW5kKyspIHsKICAgICAgICAgICAgIGludCBudW0gPSAwOwogICAgICAgICAgICAgaHIg
PSA6OlNhZmVBcnJheUdldEVsZW1lbnQoaW5BcnJheSwgJmxCb3VuZCwgJm51bSk7Ci0gICAgICAg
ICAgICBpdGVtc1tsQm91bmRdID0gU1VDQ0VFREVEKGhyKSA/IGludFRvQ0ZOdW1iZXJSZWYobnVt
KSA6IGtDRk51bWJlck5hTjsKKyAgICAgICAgICAgIGl0ZW1zW2xCb3VuZF0gPSBTVUNDRUVERUQo
aHIpID8gaW50VG9DRk51bWJlclJlZihudW0pLmxlYWtSZWYoKSA6IGtDRk51bWJlck5hTjsKICAg
ICAgICAgfQogICAgIH0KLSAgICBDRkFycmF5UmVmIHJlc3VsdCA9IENGQXJyYXlDcmVhdGUoMCwg
KGNvbnN0IHZvaWQqKilpdGVtcy5kYXRhKCksIGxlbiwgJmtDRlR5cGVBcnJheUNhbGxCYWNrcyk7
Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4gYWRvcHRDRihDRkFycmF5Q3JlYXRlKDAs
IChjb25zdCB2b2lkKiopaXRlbXMuZGF0YSgpLCBsZW4sICZrQ0ZUeXBlQXJyYXlDYWxsQmFja3Mp
KTsKIH0KIAotQ0ZBcnJheVJlZiBNYXJzaGFsbGluZ0hlbHBlcnM6OnNhZmVBcnJheVRvSVVua25v
d25BcnJheShTQUZFQVJSQVkqIGluQXJyYXkpCitSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gTWFyc2hh
bGxpbmdIZWxwZXJzOjpzYWZlQXJyYXlUb0lVbmtub3duQXJyYXkoU0FGRUFSUkFZKiBpbkFycmF5
KQogewogICAgIGxvbmcgbEJvdW5kPTAsIHVCb3VuZD0tMTsKICAgICBIUkVTVUxUIGhyID0gOjpT
YWZlQXJyYXlHZXRMQm91bmQoaW5BcnJheSwgMSwgJmxCb3VuZCk7CkBAIC0yOTMsNyArMjg1LDcg
QEAgQ0ZBcnJheVJlZiBNYXJzaGFsbGluZ0hlbHBlcnM6OnNhZmVBcnJheVRvSVVua25vd25BcnJh
eShTQUZFQVJSQVkqIGluQXJyYXkpCiAgICAgbG9uZyBsZW4gPSAoU1VDQ0VFREVEKGhyKSkgPyAo
dUJvdW5kLWxCb3VuZCsxKSA6IDA7CiAgICAgdm9pZCogaXRlbXMgPSBudWxscHRyOwogICAgIGhy
ID0gOjpTYWZlQXJyYXlBY2Nlc3NEYXRhKGluQXJyYXksICZpdGVtcyk7Ci0gICAgQ0ZBcnJheVJl
ZiByZXN1bHQgPSBTVUNDRUVERUQoaHIpID8gQ0ZBcnJheUNyZWF0ZSgwLCAoY29uc3Qgdm9pZCoq
KSBpdGVtcywgbGVuLCAma0lVbmtub3duQXJyYXlDYWxsQmFja3MpIDogbnVsbHB0cjsKKyAgICBh
dXRvIHJlc3VsdCA9IFNVQ0NFRURFRChocikgPyBhZG9wdENGKENGQXJyYXlDcmVhdGUoMCwgKGNv
bnN0IHZvaWQqKikgaXRlbXMsIGxlbiwgJmtJVW5rbm93bkFycmF5Q2FsbEJhY2tzKSkgOiBudWxs
cHRyOwogICAgIGhyID0gOjpTYWZlQXJyYXlVbmFjY2Vzc0RhdGEoaW5BcnJheSk7CiAgICAgcmV0
dXJuIHJlc3VsdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01hcnNo
YWxsaW5nSGVscGVycy5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vTWFyc2hhbGxpbmdIZWxw
ZXJzLmgKaW5kZXggMmM0ODYwMzZhMGNjNzAxNWM2MDhjOGEwN2E2ZDAxNWQ0MTc5MTE1NC4uOTQx
YTQyODk4MTQxYWU1OTAzMzUxMDMwYzRlMjljODMzNjQ4YjJjOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vTWFyc2hhbGxpbmdIZWxwZXJzLmgKKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vTWFyc2hhbGxpbmdIZWxwZXJzLmgKQEAgLTI5LDYgKzI5LDcgQEAKIAogI2lm
IFVTRShDRikKICNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9Db3JlRm91bmRhdGlvbi5oPgorI2lu
Y2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBA
IC00MiwxNCArNDMsMTQgQEAgcHVibGljOgogICAgIHN0YXRpYyBCU1RSIFVSTFRvQlNUUihjb25z
dCBVUkwmKTsKIAogI2lmIFVTRShDRikKLSAgICBzdGF0aWMgQ0ZVUkxSZWYgUGF0aFN0cmluZ1Rv
RmlsZUNGVVJMUmVmKGNvbnN0IFdURjo6U3RyaW5nJik7CisgICAgc3RhdGljIFJldGFpblB0cjxD
RlVSTFJlZj4gUGF0aFN0cmluZ1RvRmlsZUNGVVJMUmVmKGNvbnN0IFdURjo6U3RyaW5nJik7CiAg
ICAgc3RhdGljIFdURjo6U3RyaW5nIEZpbGVDRlVSTFJlZlRvUGF0aFN0cmluZyhDRlVSTFJlZiBm
aWxlVVJMKTsKLSAgICBzdGF0aWMgQ0ZVUkxSZWYgQlNUUlRvQ0ZVUkxSZWYoQlNUUik7Ci0gICAg
c3RhdGljIENGU3RyaW5nUmVmIEJTVFJUb0NGU3RyaW5nUmVmKEJTVFIpOwotICAgIHN0YXRpYyBD
RlN0cmluZ1JlZiBMUENPTEVTVFJUb0NGU3RyaW5nUmVmKExQQ09MRVNUUik7CisgICAgc3RhdGlj
IFJldGFpblB0cjxDRlVSTFJlZj4gQlNUUlRvQ0ZVUkxSZWYoQlNUUik7CisgICAgc3RhdGljIFJl
dGFpblB0cjxDRlN0cmluZ1JlZj4gQlNUUlRvQ0ZTdHJpbmdSZWYoQlNUUik7CisgICAgc3RhdGlj
IFJldGFpblB0cjxDRlN0cmluZ1JlZj4gTFBDT0xFU1RSVG9DRlN0cmluZ1JlZihMUENPTEVTVFIp
OwogICAgIHN0YXRpYyBCU1RSIENGU3RyaW5nUmVmVG9CU1RSKENGU3RyaW5nUmVmKTsKICAgICBz
dGF0aWMgaW50IENGTnVtYmVyUmVmVG9JbnQoQ0ZOdW1iZXJSZWYpOwotICAgIHN0YXRpYyBDRk51
bWJlclJlZiBpbnRUb0NGTnVtYmVyUmVmKGludCk7CisgICAgc3RhdGljIFJldGFpblB0cjxDRk51
bWJlclJlZj4gaW50VG9DRk51bWJlclJlZihpbnQpOwogICAgIHN0YXRpYyBDRkFic29sdXRlVGlt
ZSBEQVRFVG9DRkFic29sdXRlVGltZShEQVRFKTsKICAgICBzdGF0aWMgREFURSBDRkFic29sdXRl
VGltZVRvREFURShDRkFic29sdXRlVGltZSk7CiAgICAgc3RhdGljIFNBRkVBUlJBWSogc3RyaW5n
QXJyYXlUb1NhZmVBcnJheShDRkFycmF5UmVmKTsKQEAgLTYzLDkgKzY0LDkgQEAgcHVibGljOgog
CiAjaWYgVVNFKENGKQogICAgIHN0YXRpYyBTQUZFQVJSQVkqIGl1bmtub3duQXJyYXlUb1NhZmVB
cnJheShDRkFycmF5UmVmKTsKLSAgICBzdGF0aWMgQ0ZBcnJheVJlZiBzYWZlQXJyYXlUb1N0cmlu
Z0FycmF5KFNBRkVBUlJBWSopOwotICAgIHN0YXRpYyBDRkFycmF5UmVmIHNhZmVBcnJheVRvSW50
QXJyYXkoU0FGRUFSUkFZKik7Ci0gICAgc3RhdGljIENGQXJyYXlSZWYgc2FmZUFycmF5VG9JVW5r
bm93bkFycmF5KFNBRkVBUlJBWSopOworICAgIHN0YXRpYyBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4g
c2FmZUFycmF5VG9TdHJpbmdBcnJheShTQUZFQVJSQVkqKTsKKyAgICBzdGF0aWMgUmV0YWluUHRy
PENGQXJyYXlSZWY+IHNhZmVBcnJheVRvSW50QXJyYXkoU0FGRUFSUkFZKik7CisgICAgc3RhdGlj
IFJldGFpblB0cjxDRkFycmF5UmVmPiBzYWZlQXJyYXlUb0lVbmtub3duQXJyYXkoU0FGRUFSUkFZ
Kik7CiAgICAgc3RhdGljIGNvbnN0IHZvaWQqIElVbmtub3duUmV0YWluQ2FsbGJhY2soQ0ZBbGxv
Y2F0b3JSZWYsIGNvbnN0IHZvaWQqKTsKICAgICBzdGF0aWMgdm9pZCBJVW5rbm93blJlbGVhc2VD
YWxsYmFjayhDRkFsbG9jYXRvclJlZiwgY29uc3Qgdm9pZCopOwogICAgIHN0YXRpYyBDRkFycmF5
Q2FsbEJhY2tzIGtJVW5rbm93bkFycmF5Q2FsbEJhY2tzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViQXBwbGljYXRpb25DYWNoZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJBcHBsaWNhdGlvbkNhY2hlLmNwcAppbmRleCBkZTEyNTBlY2RlOTc2YTYyZjIy
NThjN2RjNzRmNmU4ZWMzNzRiMmM4Li4wOGRkNDAxZWI3M2Q4NWUwZjNjZTVmMjM2YzljMDZmZjZh
NGQ2YzU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJBcHBsaWNhdGlv
bkNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJBcHBsaWNhdGlvbkNh
Y2hlLmNwcApAQCAtMjAwLDcgKzIwMCw3IEBAIEhSRVNVTFQgV2ViQXBwbGljYXRpb25DYWNoZTo6
b3JpZ2luc1dpdGhDYWNoZShJUHJvcGVydHlCYWcqKiBvcmlnaW5zKQogICAgIFJldGFpblB0cjxD
Rk11dGFibGVEaWN0aW9uYXJ5UmVmPiBkaWN0aW9uYXJ5ID0gYWRvcHRDRigKICAgICAgICAgQ0ZE
aWN0aW9uYXJ5Q3JlYXRlTXV0YWJsZSgwLCAwLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFj
a3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7CiAKLSAgICBSZXRhaW5QdHI8
Q0ZTdHJpbmdSZWY+IGtleSA9IGFkb3B0Q0YoTWFyc2hhbGxpbmdIZWxwZXJzOjpCU1RSVG9DRlN0
cmluZ1JlZihfYnN0cl90KEwib3JpZ2lucyIpKSk7CisgICAgYXV0byBrZXkgPSBNYXJzaGFsbGlu
Z0hlbHBlcnM6OkJTVFJUb0NGU3RyaW5nUmVmKF9ic3RyX3QoTCJvcmlnaW5zIikpOwogICAgIENG
RGljdGlvbmFyeUFkZFZhbHVlKGRpY3Rpb25hcnkuZ2V0KCksIGtleS5nZXQoKSwgYXJyYXlJdGVt
LmdldCgpKTsKIAogICAgIENPTVB0cjxDRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZz4gcmVzdWx0ID0g
Q0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWc6OmNyZWF0ZUluc3RhbmNlKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5jcHAKaW5kZXggOWI4NmFhNDVhZDQzOWY0ZmI5YjgyZDQxNDMwNzFkNWRiY2Yz
ODI2My4uMGU2NjkwODI3ZjgwYWIxN2UzZTMwYjdlMmE4OTI1ZDEzN2M2NmQzNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50LmNwcApAQCAtMTAzOCwyMSArMTAzOCwyMSBAQCB2b2lkIFdlYkZy
YW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZEZhaWxUb1N0YXJ0UGx1Z2luKGNvbnN0IFBsdWdp
blZpZXcmIHBsdWdpbgogICAgIGlmICghcGx1Z2luVmlldy5wbHVnaW5zUGFnZSgpLmlzTnVsbCgp
KSB7CiAgICAgICAgIFVSTCBwbHVnaW5QYWdlVVJMID0gZnJhbWUtPmRvY3VtZW50KCktPmNvbXBs
ZXRlVVJMKHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRNTFNwYWNlcyhwbHVnaW5WaWV3LnBsdWdp
bnNQYWdlKCkpKTsKICAgICAgICAgaWYgKHBsdWdpblBhZ2VVUkwucHJvdG9jb2xJc0luSFRUUEZh
bWlseSgpKSB7Ci0gICAgICAgICAgICBzdGF0aWMgQ0ZTdHJpbmdSZWYga2V5ID0gTWFyc2hhbGxp
bmdIZWxwZXJzOjpMUENPTEVTVFJUb0NGU3RyaW5nUmVmKFdlYktpdEVycm9yUGx1Z0luUGFnZVVS
TFN0cmluZ0tleSk7Ci0gICAgICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZSh1c2VySW5mby5n
ZXQoKSwga2V5LCBwbHVnaW5QYWdlVVJMLnN0cmluZygpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkp
OworICAgICAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxDRlN0cmluZ1Jl
Zj4+IGtleSA9IE1hcnNoYWxsaW5nSGVscGVyczo6TFBDT0xFU1RSVG9DRlN0cmluZ1JlZihXZWJL
aXRFcnJvclBsdWdJblBhZ2VVUkxTdHJpbmdLZXkpOworICAgICAgICAgICAgQ0ZEaWN0aW9uYXJ5
U2V0VmFsdWUodXNlckluZm8uZ2V0KCksIGtleS5nZXQoKS5nZXQoKSwgcGx1Z2luUGFnZVVSTC5z
dHJpbmcoKS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKICAgICAgICAgfQogICAgIH0KIAogICAg
IGlmICghcGx1Z2luVmlldy5taW1lVHlwZSgpLmlzTnVsbCgpKSB7Ci0gICAgICAgIHN0YXRpYyBD
RlN0cmluZ1JlZiBrZXkgPSBNYXJzaGFsbGluZ0hlbHBlcnM6OkxQQ09MRVNUUlRvQ0ZTdHJpbmdS
ZWYoV2ViS2l0RXJyb3JNSU1FVHlwZUtleSk7Ci0gICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVl
KHVzZXJJbmZvLmdldCgpLCBrZXksIHBsdWdpblZpZXcubWltZVR5cGUoKS5jcmVhdGVDRlN0cmlu
ZygpLmdldCgpKTsKKyAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxDRlN0
cmluZ1JlZj4+IGtleSA9IE1hcnNoYWxsaW5nSGVscGVyczo6TFBDT0xFU1RSVG9DRlN0cmluZ1Jl
ZihXZWJLaXRFcnJvck1JTUVUeXBlS2V5KTsKKyAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUo
dXNlckluZm8uZ2V0KCksIGtleS5nZXQoKS5nZXQoKSwgcGx1Z2luVmlldy5taW1lVHlwZSgpLmNy
ZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwogICAgIH0KIAogICAgIGlmIChwbHVnaW5WaWV3LnBsdWdp
bigpKSB7CiAgICAgICAgIFN0cmluZyBwbHVnaW5OYW1lID0gcGx1Z2luVmlldy5wbHVnaW4oKS0+
bmFtZSgpOwogICAgICAgICBpZiAoIXBsdWdpbk5hbWUuaXNOdWxsKCkpIHsKLSAgICAgICAgICAg
IHN0YXRpYyBDRlN0cmluZ1JlZiBrZXkgPSBNYXJzaGFsbGluZ0hlbHBlcnM6OkxQQ09MRVNUUlRv
Q0ZTdHJpbmdSZWYoV2ViS2l0RXJyb3JQbHVnSW5OYW1lS2V5KTsKLSAgICAgICAgICAgIENGRGlj
dGlvbmFyeVNldFZhbHVlKHVzZXJJbmZvLmdldCgpLCBrZXksIHBsdWdpbk5hbWUuY3JlYXRlQ0ZT
dHJpbmcoKS5nZXQoKSk7CisgICAgICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWlu
UHRyPENGU3RyaW5nUmVmPj4ga2V5ID0gTWFyc2hhbGxpbmdIZWxwZXJzOjpMUENPTEVTVFJUb0NG
U3RyaW5nUmVmKFdlYktpdEVycm9yUGx1Z0luTmFtZUtleSk7CisgICAgICAgICAgICBDRkRpY3Rp
b25hcnlTZXRWYWx1ZSh1c2VySW5mby5nZXQoKSwga2V5LmdldCgpLmdldCgpLCBwbHVnaW5OYW1l
LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEb3dubG9hZENGTmV0LmNwcCBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYkRvd25sb2FkQ0ZOZXQuY3BwCmluZGV4IGEzMzNhMmY2Mjc2N2Vi
YmFlYzNjODNiNmIwNzZmMGMzNWQwM2Q1MGMuLmVhMGI2NzUxYzU1NGU4MjdkYzk4MjU1Y2Q0YTcx
NTdmMWQ1YWQyYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRvd25s
b2FkQ0ZOZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRvd25sb2FkQ0ZO
ZXQuY3BwCkBAIC0xNzgsNyArMTc4LDcgQEAgSFJFU1VMVCBXZWJEb3dubG9hZDo6aW5pdFRvUmVz
dW1lV2l0aEJ1bmRsZShfSW5fIEJTVFIgYnVuZGxlUGF0aCwgX0luX29wdF8gSVdlYkQKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWRSZWNlaXZlUmVzcG9uc2VDYWxsYmFjaywg
d2lsbFJlc3VtZVdpdGhSZXNwb25zZUNhbGxiYWNrLCBkaWRSZWNlaXZlRGF0YUNhbGxiYWNrLCBz
aG91bGREZWNvZGVEYXRhT2ZNSU1FVHlwZUNhbGxiYWNrLCAKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRPYmplY3ROYW1lQ2Fs
bGJhY2ssIGRpZENyZWF0ZURlc3RpbmF0aW9uQ2FsbGJhY2ssIGRpZEZpbmlzaENhbGxiYWNrLCBk
aWRGYWlsQ2FsbGJhY2t9OwogICAgIAotICAgIFJldGFpblB0cjxDRlVSTFJlZj4gcGF0aFVSTCA9
IGFkb3B0Q0YoTWFyc2hhbGxpbmdIZWxwZXJzOjpQYXRoU3RyaW5nVG9GaWxlQ0ZVUkxSZWYoU3Ry
aW5nKGJ1bmRsZVBhdGgsIFN5c1N0cmluZ0xlbihidW5kbGVQYXRoKSkpKTsKKyAgICBhdXRvIHBh
dGhVUkwgPSBNYXJzaGFsbGluZ0hlbHBlcnM6OlBhdGhTdHJpbmdUb0ZpbGVDRlVSTFJlZihTdHJp
bmcoYnVuZGxlUGF0aCwgU3lzU3RyaW5nTGVuKGJ1bmRsZVBhdGgpKSk7CiAgICAgQVNTRVJUKHBh
dGhVUkwpOwogCiAgICAgbV9kb3dubG9hZCA9IGFkb3B0Q0YoQ0ZVUkxEb3dubG9hZENyZWF0ZVdp
dGhSZXN1bWVEYXRhKDAsIHJlc3VtZURhdGEuZ2V0KCksIHBhdGhVUkwuZ2V0KCksICZjbGllbnQp
KTsKQEAgLTI4OCw5ICsyODgsOCBAQCBIUkVTVUxUIFdlYkRvd25sb2FkOjpzZXREZXN0aW5hdGlv
bihfSW5fIEJTVFIgcGF0aCwgQk9PTCBhbGxvd092ZXJ3cml0ZSkKICAgICBtX2Rlc3RpbmF0aW9u
ID0gU3RyaW5nKHBhdGgsIFN5c1N0cmluZ0xlbihwYXRoKSk7CiAgICAgbV9idW5kbGVQYXRoID0g
bV9kZXN0aW5hdGlvbiArIERvd25sb2FkQnVuZGxlOjpmaWxlRXh0ZW5zaW9uKCk7CiAKLSAgICBD
RlVSTFJlZiBwYXRoVVJMID0gTWFyc2hhbGxpbmdIZWxwZXJzOjpQYXRoU3RyaW5nVG9GaWxlQ0ZV
UkxSZWYobV9idW5kbGVQYXRoKTsKLSAgICBDRlVSTERvd25sb2FkU2V0RGVzdGluYXRpb24obV9k
b3dubG9hZC5nZXQoKSwgcGF0aFVSTCwgISFhbGxvd092ZXJ3cml0ZSk7Ci0gICAgQ0ZSZWxlYXNl
KHBhdGhVUkwpOworICAgIGF1dG8gcGF0aFVSTCA9IE1hcnNoYWxsaW5nSGVscGVyczo6UGF0aFN0
cmluZ1RvRmlsZUNGVVJMUmVmKG1fYnVuZGxlUGF0aCk7CisgICAgQ0ZVUkxEb3dubG9hZFNldERl
c3RpbmF0aW9uKG1fZG93bmxvYWQuZ2V0KCksIHBhdGhVUkwuZ2V0KCksICEhYWxsb3dPdmVyd3Jp
dGUpOwogCiAgICAgTE9HKERvd25sb2FkLCAiV2ViRG93bmxvYWQgLSBTZXQgZGVzdGluYXRpb24g
dG8gJXMiLCBtX2J1bmRsZVBhdGguYXNjaWkoKS5kYXRhKCkpOwogCkBAIC0zNjgsOSArMzY3LDcg
QEAgQ0ZVUkxSZXF1ZXN0UmVmIFdlYkRvd25sb2FkOjp3aWxsU2VuZFJlcXVlc3QoQ0ZVUkxSZXF1
ZXN0UmVmIHJlcXVlc3QsIENGVVJMUmVzcG8KIAogICAgIENPTVB0cjxXZWJNdXRhYmxlVVJMUmVx
dWVzdD4gZmluYWxXZWJSZXF1ZXN0KEFkb3B0Q09NLCBXZWJNdXRhYmxlVVJMUmVxdWVzdDo6Y3Jl
YXRlSW5zdGFuY2UoZmluYWxSZXF1ZXN0LmdldCgpKSk7CiAgICAgbV9yZXF1ZXN0ID0gZmluYWxX
ZWJSZXF1ZXN0LmdldCgpOwotICAgIENGVVJMUmVxdWVzdFJlZiByZXN1bHQgPSBmaW5hbFdlYlJl
cXVlc3QtPnJlc291cmNlUmVxdWVzdCgpLmNmVVJMUmVxdWVzdChVcGRhdGVIVFRQQm9keSk7Ci0g
ICAgQ0ZSZXRhaW4ocmVzdWx0KTsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiByZXRh
aW5QdHIoZmluYWxXZWJSZXF1ZXN0LT5yZXNvdXJjZVJlcXVlc3QoKS5jZlVSTFJlcXVlc3QoVXBk
YXRlSFRUUEJvZHkpKS5sZWFrUmVmKCk7CiB9CiAKIHZvaWQgV2ViRG93bmxvYWQ6OmRpZFJlY2Vp
dmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShDRlVSTEF1dGhDaGFsbGVuZ2VSZWYgY2hhbGxlbmdl
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSGlzdG9yeS5jcHAgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJIaXN0b3J5LmNwcAppbmRleCA2MWMwMjZiN2FlMDBk
ODI4YjAyZGVjM2VhM2U0YjRkNzkwODhhYTExLi45ZWZhZTIyNzkzYzcwZDA4NjI4Y2M5Y2VjZTky
M2ViYzRjMjk3ZGY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJIaXN0
b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJIaXN0b3J5LmNwcApAQCAt
NjEsNyArNjEsNyBAQCBzdGF0aWMgQ09NUHRyPElQcm9wZXJ0eUJhZz4gY3JlYXRlVXNlckluZm9G
cm9tQXJyYXkoQlNUUiBub3RpZmljYXRpb25TdHIsIElXZWJIaQogICAgIFJldGFpblB0cjxDRk11
dGFibGVEaWN0aW9uYXJ5UmVmPiBkaWN0aW9uYXJ5ID0gYWRvcHRDRigKICAgICAgICAgQ0ZEaWN0
aW9uYXJ5Q3JlYXRlTXV0YWJsZSgwLCAwLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3Ms
ICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7CiAKLSAgICBSZXRhaW5QdHI8Q0ZT
dHJpbmdSZWY+IGtleSA9IGFkb3B0Q0YoTWFyc2hhbGxpbmdIZWxwZXJzOjpCU1RSVG9DRlN0cmlu
Z1JlZihub3RpZmljYXRpb25TdHIpKTsKKyAgICBhdXRvIGtleSA9IE1hcnNoYWxsaW5nSGVscGVy
czo6QlNUUlRvQ0ZTdHJpbmdSZWYobm90aWZpY2F0aW9uU3RyKTsKICAgICBDRkRpY3Rpb25hcnlB
ZGRWYWx1ZShkaWN0aW9uYXJ5LmdldCgpLCBrZXkuZ2V0KCksIGFycmF5SXRlbS5nZXQoKSk7CiAK
ICAgICBDT01QdHI8Q0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWc+IHJlc3VsdCA9IENGRGljdGlvbmFy
eVByb3BlcnR5QmFnOjpjcmVhdGVJbnN0YW5jZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViTG9jYWxpemFibGVTdHJpbmdzLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkxvY2FsaXphYmxlU3RyaW5ncy5jcHAKaW5kZXggZmM4MGZlOTZmMjk0MjZkZmUx
NWZlZGQ1MmI1NGM1NDRlZDVkZTBmYS4uZTU4ZDFiOTZlNjA3NTc1MzEzNjIwNDU4YzIxMTE4OGE1
ZTk5ZTMyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTG9jYWxpemFi
bGVTdHJpbmdzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJMb2NhbGl6YWJs
ZVN0cmluZ3MuY3BwCkBAIC05NSwxOSArOTUsMTkgQEAgTG9jYWxpemVkU3RyaW5nOjpvcGVyYXRv
ciBMUENUU1RSKCkgY29uc3QKICAgICByZXR1cm4gbV9zdHJpbmcud2lkZUNoYXJhY3RlcnMoKS5k
YXRhKCk7CiB9CiAKLXN0YXRpYyBDRkJ1bmRsZVJlZiBjcmVhdGVXZWJLaXRCdW5kbGUoKQorc3Rh
dGljIHZvaWQgY3JlYXRlV2ViS2l0QnVuZGxlKCkKIHsKLSAgICBzdGF0aWMgQ0ZCdW5kbGVSZWYg
YnVuZGxlOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8Q0ZCdW5kbGVSZWY+
PiBidW5kbGU7CiAgICAgc3RhdGljIGJvb2wgaW5pdGlhbGl6ZWQ7CiAKICAgICBpZiAoaW5pdGlh
bGl6ZWQpCi0gICAgICAgIHJldHVybiBidW5kbGU7CisgICAgICAgIHJldHVybjsKICAgICBpbml0
aWFsaXplZCA9IHRydWU7CiAKICAgICBXQ0hBUiBwYXRoU3RyW01BWF9QQVRIXTsKICAgICBEV09S
RCBsZW5ndGggPSA6OkdldE1vZHVsZUZpbGVOYW1lVyhnSW5zdGFuY2UsIHBhdGhTdHIsIE1BWF9Q
QVRIKTsKICAgICBpZiAoIWxlbmd0aCB8fCAobGVuZ3RoID09IE1BWF9QQVRIICYmIEdldExhc3RF
cnJvcigpID09IEVSUk9SX0lOU1VGRklDSUVOVF9CVUZGRVIpKQotICAgICAgICByZXR1cm4gMDsK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBib29sIGZvdW5kID0gZmFsc2U7CiAgICAg
Zm9yIChpbnQgaSA9IGxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7CkBAIC0xMjIsMjIgKzEyMiwy
MCBAQCBzdGF0aWMgQ0ZCdW5kbGVSZWYgY3JlYXRlV2ViS2l0QnVuZGxlKCkKICAgICAgICAgfQog
ICAgIH0KICAgICBpZiAoIWZvdW5kKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKICAgICBpZiAod2NzY2F0X3MocGF0aFN0ciwgTUFYX1BBVEgsIEwiXFxXZWJL
aXQucmVzb3VyY2VzIikpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0
cjsKIAogICAgIFN0cmluZyBidW5kbGVQYXRoU3RyaW5nKHBhdGhTdHIpOwogICAgIGlmICghYnVu
ZGxlUGF0aFN0cmluZykKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRy
OwogCi0gICAgQ0ZVUkxSZWYgYnVuZGxlVVJMUmVmID0gQ0ZVUkxDcmVhdGVXaXRoRmlsZVN5c3Rl
bVBhdGgoMCwgYnVuZGxlUGF0aFN0cmluZy5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBrQ0ZVUkxX
aW5kb3dzUGF0aFN0eWxlLCB0cnVlKTsKKyAgICBhdXRvIGJ1bmRsZVVSTFJlZiA9IGFkb3B0Q0Yo
Q0ZVUkxDcmVhdGVXaXRoRmlsZVN5c3RlbVBhdGgoMCwgYnVuZGxlUGF0aFN0cmluZy5jcmVhdGVD
RlN0cmluZygpLmdldCgpLCBrQ0ZVUkxXaW5kb3dzUGF0aFN0eWxlLCB0cnVlKSk7CiAgICAgaWYg
KCFidW5kbGVVUkxSZWYpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0
cjsKIAotICAgIGJ1bmRsZSA9IENGQnVuZGxlQ3JlYXRlKDAsIGJ1bmRsZVVSTFJlZik7Ci0gICAg
Q0ZSZWxlYXNlKGJ1bmRsZVVSTFJlZik7Ci0gICAgcmV0dXJuIGJ1bmRsZTsKKyAgICBidW5kbGUu
Z2V0KCkgPSBhZG9wdENGKENGQnVuZGxlQ3JlYXRlKDAsIGJ1bmRsZVVSTFJlZi5nZXQoKSkpOwog
fQogCiBzdGF0aWMgQ0ZCdW5kbGVSZWYgY2ZCdW5kbGVGb3JTdHJpbmdzQnVuZGxlKFdlYkxvY2Fs
aXphYmxlU3RyaW5nc0J1bmRsZSogc3RyaW5nc0J1bmRsZSkKZGlmZiAtLWdpdCBhL1Rvb2xzL0No
YW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBmYWYzMmU3N2Y4MWU4ZWJlYjQ1MDc2YTU0
ODA2Y2MwNGNhZDkyNTYyLi42NzhkMmI0NTIyYWEwOWNmZTBlNWMyZGVhOTkwNTBlOGNhMzQ2YWJj
IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsNjUgQEAKKzIwMjEtMDMtMDQgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4K
KworICAgICAgICBSZWR1Y2UgdXNlIG9mIENGUmV0YWluKCkgLyBDRlJlbGVhc2UoKSAvIENGQXV0
b1JlbGVhc2UoKSBpbiBXZWJLaXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIyMjc2MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFJlZHVjZSB1c2Ugb2YgQ0ZSZXRhaW4oKSAvIENGUmVsZWFzZSgpIC8gQ0ZB
dXRvUmVsZWFzZSgpIGluIFdlYktpdCBieSB1c2luZyBSZXRhaW5QdHI8Pi4KKworICAgICAgICAq
IER1bXBSZW5kZXJUcmVlL1Rlc3ROZXRzY2FwZVBsdWdJbi9QbHVnaW5PYmplY3RNYWMubW06Cisg
ICAgICAgIChjcmVhdGVDb3JlQW5pbWF0aW9uTGF5ZXIpOgorICAgICAgICAqIER1bXBSZW5kZXJU
cmVlL21hYy9BY2Nlc3NpYmlsaXR5Q29tbW9uTWFjLm1tOgorICAgICAgICAoK1tOU1N0cmluZyBz
dHJpbmdXaXRoSlNTdHJpbmdSZWY6XSk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0R1
bXBSZW5kZXJUcmVlLm1tOgorICAgICAgICAoYWN0aXZhdGVGb250SU9TKToKKyAgICAgICAgKGR1
bXBSZW5kZXJUcmVlKToKKyAgICAgICAgKGludmFsaWRhdGVBbnlQcmV2aW91c1dhaXRUb0R1bXBX
YXRjaGRvZyk6CisgICAgICAgIChzZXRXYWl0VG9EdW1wV2F0Y2hkb2cpOgorICAgICAgICAoZHVt
cCk6CisgICAgICAgIChydW5UZXN0KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvRHVt
cFJlbmRlclRyZWVNYWMuaDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvRXZlbnRTZW5k
aW5nQ29udHJvbGxlci5tbToKKyAgICAgICAgKC1bRXZlbnRTZW5kaW5nQ29udHJvbGxlciBtb3Vz
ZVNjcm9sbEJ5WDphbmRZOmNvbnRpbnVvdXNseTpdKToKKyAgICAgICAgKC1bRXZlbnRTZW5kaW5n
Q29udHJvbGxlciBtb3VzZVNjcm9sbEJ5WDphbmRZOndpdGhXaGVlbDphbmRNb21lbnR1bVBoYXNl
czpdKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvUGl4ZWxEdW1wU3VwcG9ydE1hYy5t
bToKKyAgICAgICAgKHRha2VXaW5kb3dTbmFwc2hvdCk6CisgICAgICAgIChjcmVhdGVCaXRtYXBD
b250ZXh0RnJvbVdlYlZpZXcpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9SZXNvdXJj
ZUxvYWREZWxlZ2F0ZS5tbToKKyAgICAgICAgKC1bUmVzb3VyY2VMb2FkRGVsZWdhdGUgd2ViVmll
dzpyZXNvdXJjZTp3aWxsU2VuZFJlcXVlc3Q6cmVkaXJlY3RSZXNwb25zZTpmcm9tRGF0YVNvdXJj
ZTpdKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvVGVzdFJ1bm5lck1hYy5tbToKKyAg
ICAgICAgKFRlc3RSdW5uZXI6OmFkZERpc2FsbG93ZWRVUkwpOgorICAgICAgICAoVGVzdFJ1bm5l
cjo6c2V0V2FpdFRvRHVtcCk6CisgICAgICAgICogRm9udFdpdGhGZWF0dXJlcy9Gb250V2l0aEZl
YXR1cmVzL21haW4uY3BwOgorICAgICAgICAoY29uc3RydWN0Rm9udFdpdGhUcnVlVHlwZUZlYXR1
cmUpOgorICAgICAgICAoY29uc3RydWN0Rm9udFdpdGhPcGVuVHlwZUZlYXR1cmUpOgorICAgICAg
ICAoZHJhd1RleHQpOgorICAgICAgICAobWFpbik6CisgICAgICAgICogSW1hZ2VEaWZmL0ltYWdl
RGlmZi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIEltYWdlRGlmZi9QbGF0
Zm9ybUltYWdlLmg6CisgICAgICAgICogSW1hZ2VEaWZmL2NnL1BsYXRmb3JtSW1hZ2VDRy5jcHA6
CisgICAgICAgIChJbWFnZURpZmY6OlBsYXRmb3JtSW1hZ2U6OmNyZWF0ZUZyb21TdGRpbik6Cisg
ICAgICAgIChJbWFnZURpZmY6OlBsYXRmb3JtSW1hZ2U6OmNyZWF0ZUZyb21EaWZmRGF0YSk6Cisg
ICAgICAgIChJbWFnZURpZmY6OlBsYXRmb3JtSW1hZ2U6OlBsYXRmb3JtSW1hZ2UpOgorICAgICAg
ICAoSW1hZ2VEaWZmOjpQbGF0Zm9ybUltYWdlOjp3aWR0aCBjb25zdCk6CisgICAgICAgIChJbWFn
ZURpZmY6OlBsYXRmb3JtSW1hZ2U6OmhlaWdodCBjb25zdCk6CisgICAgICAgIChJbWFnZURpZmY6
OlBsYXRmb3JtSW1hZ2U6Omhhc0FscGhhIGNvbnN0KToKKyAgICAgICAgKEltYWdlRGlmZjo6UGxh
dGZvcm1JbWFnZTo6cGl4ZWxzIGNvbnN0KToKKyAgICAgICAgKEltYWdlRGlmZjo6UGxhdGZvcm1J
bWFnZTo6d3JpdGVBc1BOR1RvU3Rkb3V0KToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHA6CisgICAgICAgIChXVFI6OkluamVj
dGVkQnVuZGxlUGFnZTo6ZHVtcERPTUFzV2ViQXJjaGl2ZSk6CisgICAgICAgICogV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9pb3MvQWNjZXNzaWJpbGl0eVVJRWxlbWVudElPUy5tbToK
KyAgICAgICAgKCtbTlNTdHJpbmcgc3RyaW5nV2l0aEpTU3RyaW5nUmVmOl0pOgorICAgICAgICAq
IFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0FjY2Vzc2liaWxpdHlDb21tb25N
YWMubW06CisgICAgICAgICgrW05TU3RyaW5nIHN0cmluZ1dpdGhKU1N0cmluZ1JlZjpdKToKKyAg
ICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL2lvcy9ISURFdmVudEdlbmVyYXRvci5tbToKKyAgICAg
ICAgKC1bSElERXZlbnRHZW5lcmF0b3IgX2NyZWF0ZUlPSElERXZlbnRXaXRoSW5mbzpdKToKKyAg
ICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL21hYy9FdmVudFNlbmRlclByb3h5Lm1tOgorICAgICAg
ICAoLVtFdmVudFNlbmRlclN5bnRoZXRpY0V2ZW50IGluaXRQcmVzc3VyZUV2ZW50QXRMb2NhdGlv
bjpnbG9iYWxMb2NhdGlvbjpzdGFnZTpwcmVzc3VyZTpzdGFnZVRyYW5zaXRpb246cGhhc2U6dGlt
ZTpldmVudE51bWJlcjp3aW5kb3c6XSk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9tYWMv
VUlTY3JpcHRDb250cm9sbGVyTWFjLm1tOgorICAgICAgICAoV1RSOjpjZlN0cmluZyk6CisgICAg
ICAgIChXVFI6OlVJU2NyaXB0Q29udHJvbGxlck1hYzo6cmVwbGFjZVRleHRBdFJhbmdlKToKKwog
MjAyMS0wMy0wNCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFtt
YWNPU11bV0syXSBDaGFuZ2luZyB0aGUgc3lzdGVtIGxhbmd1YWdlIGRvZXMgbm90IHVwZGF0ZSBu
YXZpZ2F0b3IubGFuZ3VhZ2UKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RO
ZXRzY2FwZVBsdWdJbi9QbHVnaW5PYmplY3RNYWMubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9U
ZXN0TmV0c2NhcGVQbHVnSW4vUGx1Z2luT2JqZWN0TWFjLm1tCmluZGV4IDU5ZjY1N2ZkM2U0YzU5
OTMwM2M3ZjQwNDA0MTIyY2I0NGI3OWNmMTQuLjJmMjZkODRjZjZmNDg3YjRiOTY3ZTNiOGZmMjQx
NjAyZjdiZTBjYzQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3ROZXRzY2Fw
ZVBsdWdJbi9QbHVnaW5PYmplY3RNYWMubW0KKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVz
dE5ldHNjYXBlUGx1Z0luL1BsdWdpbk9iamVjdE1hYy5tbQpAQCAtNjQsMjMgKzY0LDE1IEBAIENG
VHlwZVJlZiBjcmVhdGVDb3JlQW5pbWF0aW9uTGF5ZXIoKQogICAgIC8vIFR1cm4gb2ZmIGRlZmF1
bHQgYW5pbWF0aW9ucy4KICAgICBbY2FMYXllciBzZXRTdHlsZTpAeyBAImFjdGlvbnMiOiBhY3Rp
b25zIH1dOwogICAgIFtjYUxheWVyIHNldE5lZWRzRGlzcGxheU9uQm91bmRzQ2hhbmdlOllFU107
Ci0KICAgICBbY2FMYXllciBzZXRCb3VuZHM6Q0dSZWN0TWFrZSgwLCAwLCAyMDAsIDEwMCldOwog
ICAgIFtjYUxheWVyIHNldEFuY2hvclBvaW50OkNHUG9pbnRaZXJvXTsKLSAgICAKLSAgICBDR0Nv
bG9yUmVmIGNvbG9yID0gQ0dDb2xvckNyZWF0ZUdlbmVyaWNSR0IoMC41LCAwLjUsIDEsIDEpOwot
ICAgIFtjYUxheWVyIHNldEJhY2tncm91bmRDb2xvcjpjb2xvcl07Ci0gICAgQ0dDb2xvclJlbGVh
c2UoY29sb3IpOwotICAgIAorICAgIFtjYUxheWVyIHNldEJhY2tncm91bmRDb2xvcjphZG9wdENG
KENHQ29sb3JDcmVhdGVHZW5lcmljUkdCKDAuNSwgMC41LCAxLCAxKSkuZ2V0KCldOwogICAgIFtj
YUxheWVyIHNldExheW91dE1hbmFnZXI6W0NBQ29uc3RyYWludExheW91dE1hbmFnZXIgbGF5b3V0
TWFuYWdlcl1dOwogCiAgICAgQ0FMYXllciAqc3VibGF5ZXIgPSBbQ0FMYXllciBsYXllcl07CiAg
ICAgLy8gVHVybiBvZmYgZGVmYXVsdCBhbmltYXRpb25zLgogICAgIFtzdWJsYXllciBzZXRTdHls
ZTpAeyBAImFjdGlvbnMiOiBhY3Rpb25zIH1dOwotCi0gICAgY29sb3IgPSBDR0NvbG9yQ3JlYXRl
R2VuZXJpY1JHQigwLCAwLCAwLCAwLjc1KTsKLSAgICBbc3VibGF5ZXIgc2V0QmFja2dyb3VuZENv
bG9yOmNvbG9yXTsKLSAgICBDR0NvbG9yUmVsZWFzZShjb2xvcik7CisgICAgW3N1YmxheWVyIHNl
dEJhY2tncm91bmRDb2xvcjphZG9wdENGKENHQ29sb3JDcmVhdGVHZW5lcmljUkdCKDAsIDAsIDAs
IDAuNzUpKS5nZXQoKV07CiAgICAgW3N1YmxheWVyIHNldEJvdW5kczpDR1JlY3RNYWtlKDAsIDAs
IDE4MCwgMjApXTsKIAogICAgIFtzdWJsYXllciBhZGRDb25zdHJhaW50OltDQUNvbnN0cmFpbnQg
Y29uc3RyYWludFdpdGhBdHRyaWJ1dGU6a0NBQ29uc3RyYWludE1pblkKZGlmZiAtLWdpdCBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL21hYy9BY2Nlc3NpYmlsaXR5Q29tbW9uTWFjLm1tIGIvVG9vbHMv
RHVtcFJlbmRlclRyZWUvbWFjL0FjY2Vzc2liaWxpdHlDb21tb25NYWMubW0KaW5kZXggMDMwNjdl
MmQwODkyMTRmYmU4NDY2N2IyODI0ZjhjZTMxNDgwZjk4Ny4uNTg4YzhiMTliZjQwNGMyMjExMDM5
OWNjNGE4YzI5MGZiMDZkYjI3YiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFj
L0FjY2Vzc2liaWxpdHlDb21tb25NYWMubW0KKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFj
L0FjY2Vzc2liaWxpdHlDb21tb25NYWMubW0KQEAgLTQxLDcgKzQxLDcgQEAgKyAoTlNTdHJpbmcg
KilzdHJpbmdXaXRoSlNTdHJpbmdSZWY6KEpTU3RyaW5nUmVmKWpzU3RyaW5nUmVmCiAgICAgaWYg
KCFqc1N0cmluZ1JlZikKICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAgIHJldHVybiBDRkJyaWRn
aW5nUmVsZWFzZShKU1N0cmluZ0NvcHlDRlN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBqc1N0
cmluZ1JlZikpOworICAgIHJldHVybiBhZG9wdENGKEpTU3RyaW5nQ29weUNGU3RyaW5nKGtDRkFs
bG9jYXRvckRlZmF1bHQsIGpzU3RyaW5nUmVmKSkuYnJpZGdpbmdBdXRvcmVsZWFzZSgpOwogfQog
CiAtIChKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4pY3JlYXRlSlNTdHJpbmdSZWYKZGlmZiAtLWdp
dCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbSBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQppbmRleCAxNGJkMWU4MGQ2ZWYwOTMy
ODg5OTM4Y2JkNDViYTQzMWE3ZmQ1NjA3Li43MzUxMDM5NmE1ODBjOWViYmJjNjRhN2ZlMWJlYzI5
ODJjOWY3Y2NlIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRl
clRyZWUubW0KKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1t
CkBAIC0yMDgsOCArMjA4LDggQEAgV2ViRnJhbWUgKnRvcExvYWRpbmdGcmFtZSA9IG5pbDsgLy8g
IW5pbCBpZmYgYSBsb2FkIGlzIGluIHByb2dyZXNzCiBSZXRhaW5QdHI8TlNXaW5kb3c+IG1haW5X
aW5kb3c7CiAjZW5kaWYKIAotQ0ZNdXRhYmxlU2V0UmVmIGRpc2FsbG93ZWRVUkxzPSBudWxscHRy
Owotc3RhdGljIENGUnVuTG9vcFRpbWVyUmVmIHdhaXRUb0R1bXBXYXRjaGRvZzsKK1JldGFpblB0
cjxDRk11dGFibGVTZXRSZWY+IGRpc2FsbG93ZWRVUkxzID0gbnVsbHB0cjsKK3N0YXRpYyBSZXRh
aW5QdHI8Q0ZSdW5Mb29wVGltZXJSZWY+IHdhaXRUb0R1bXBXYXRjaGRvZzsKIAogc3RhdGljIFJl
dGFpblB0cjxXZWJWaWV3PiYgZ2xvYmFsV2ViVmlldygpCiB7CkBAIC01NTAsMjYgKzU1MCwyNCBA
QCBzdGF0aWMgdm9pZCBhZGp1c3RGb250cygpCiAKIHN0YXRpYyB2b2lkIGFjdGl2YXRlRm9udElP
Uyhjb25zdCB1aW50OF90KiBmb250RGF0YSwgdW5zaWduZWQgbG9uZyBsZW5ndGgsIHN0ZDo6c3Ry
aW5nIHNlY3Rpb25OYW1lKQogewotICAgIENHRGF0YVByb3ZpZGVyUmVmIGRhdGEgPSBDR0RhdGFQ
cm92aWRlckNyZWF0ZVdpdGhEYXRhKG51bGxwdHIsIGZvbnREYXRhLCBsZW5ndGgsIG51bGxwdHIp
OworICAgIGF1dG8gZGF0YSA9IGFkb3B0Q0YoQ0dEYXRhUHJvdmlkZXJDcmVhdGVXaXRoRGF0YShu
dWxscHRyLCBmb250RGF0YSwgbGVuZ3RoLCBudWxscHRyKSk7CiAgICAgaWYgKCFkYXRhKSB7CiAg
ICAgICAgIGZwcmludGYoc3RkZXJyLCAiRmFpbGVkIHRvIGNyZWF0ZSBDR0RhdGFQcm92aWRlclJl
ZiBmb3IgdGhlICVzIGZvbnQuXG4iLCBzZWN0aW9uTmFtZS5jX3N0cigpKTsKICAgICAgICAgZXhp
dCgxKTsKICAgICB9CiAKLSAgICBDR0ZvbnRSZWYgY2dGb250ID0gQ0dGb250Q3JlYXRlV2l0aERh
dGFQcm92aWRlcihkYXRhKTsKLSAgICBDR0RhdGFQcm92aWRlclJlbGVhc2UoZGF0YSk7CisgICAg
YXV0byBjZ0ZvbnQgPSBhZG9wdENGKENHRm9udENyZWF0ZVdpdGhEYXRhUHJvdmlkZXIoZGF0YS5n
ZXQoKSkpOwogICAgIGlmICghY2dGb250KSB7CiAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiRmFp
bGVkIHRvIGNyZWF0ZSBDR0ZvbnRSZWYgZm9yIHRoZSAlcyBmb250LlxuIiwgc2VjdGlvbk5hbWUu
Y19zdHIoKSk7CiAgICAgICAgIGV4aXQoMSk7CiAgICAgfQogCiAgICAgQ0ZFcnJvclJlZiBlcnJv
ciA9IG51bGxwdHI7Ci0gICAgQ1RGb250TWFuYWdlclJlZ2lzdGVyR3JhcGhpY3NGb250KGNnRm9u
dCwgJmVycm9yKTsKKyAgICBDVEZvbnRNYW5hZ2VyUmVnaXN0ZXJHcmFwaGljc0ZvbnQoY2dGb250
LmdldCgpLCAmZXJyb3IpOwogICAgIGlmIChlcnJvcikgewogICAgICAgICBmcHJpbnRmKHN0ZGVy
ciwgIkZhaWxlZCB0byBhZGQgQ0dGb250IHRvIENvcmVUZXh0IGZvciB0aGUgJXMgZm9udDogJXMu
XG4iLCBzZWN0aW9uTmFtZS5jX3N0cigpLCBDRlN0cmluZ0dldENTdHJpbmdQdHIoQ0ZFcnJvckNv
cHlEZXNjcmlwdGlvbihlcnJvciksIGtDRlN0cmluZ0VuY29kaW5nVVRGOCkpOwogICAgICAgICBl
eGl0KDEpOwogICAgIH0KLSAgICBDR0ZvbnRSZWxlYXNlKGNnRm9udCk7CiB9CiAKIHN0YXRpYyB2
b2lkIGFjdGl2YXRlRm9udHNJT1MoKQpAQCAtMTI2NSwxMCArMTI2Myw3IEBAIHZvaWQgZHVtcFJl
bmRlclRyZWUoaW50IGFyZ2MsIGNvbnN0IGNoYXIgKmFyZ3ZbXSkKICNlbmRpZgogCiAgICAgLy8g
RklYTUU6IFRoaXMgc2hvdWxkIGJlIG1vdmVkIG9udG8gVGVzdFJ1bm5lciBhbmQgbWFkZSBpbnRv
IGEgSGFzaFNldAotICAgIGlmIChkaXNhbGxvd2VkVVJMcykgewotICAgICAgICBDRlJlbGVhc2Uo
ZGlzYWxsb3dlZFVSTHMpOwotICAgICAgICBkaXNhbGxvd2VkVVJMcyA9IDA7Ci0gICAgfQorICAg
IGRpc2FsbG93ZWRVUkxzID0gbnVsbHB0cjsKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAg
ICAgdGVhckRvd25JT1NMYXlvdXRUZXN0Q29tbXVuaWNhdGlvbigpOwpAQCAtMTYxNSwxOCArMTYx
MCwxNyBAQCBzdGF0aWMgdm9pZCBkdW1wQmFja0ZvcndhcmRMaXN0Rm9yQWxsV2luZG93cygpCiBz
dGF0aWMgdm9pZCBpbnZhbGlkYXRlQW55UHJldmlvdXNXYWl0VG9EdW1wV2F0Y2hkb2coKQogewog
ICAgIGlmICh3YWl0VG9EdW1wV2F0Y2hkb2cpIHsKLSAgICAgICAgQ0ZSdW5Mb29wVGltZXJJbnZh
bGlkYXRlKHdhaXRUb0R1bXBXYXRjaGRvZyk7Ci0gICAgICAgIENGUmVsZWFzZSh3YWl0VG9EdW1w
V2F0Y2hkb2cpOwotICAgICAgICB3YWl0VG9EdW1wV2F0Y2hkb2cgPSBOVUxMOworICAgICAgICBD
RlJ1bkxvb3BUaW1lckludmFsaWRhdGUod2FpdFRvRHVtcFdhdGNoZG9nLmdldCgpKTsKKyAgICAg
ICAgd2FpdFRvRHVtcFdhdGNoZG9nID0gbnVsbHB0cjsKICAgICB9CiB9CiAKLXZvaWQgc2V0V2Fp
dFRvRHVtcFdhdGNoZG9nKENGUnVuTG9vcFRpbWVyUmVmIHRpbWVyKQordm9pZCBzZXRXYWl0VG9E
dW1wV2F0Y2hkb2coUmV0YWluUHRyPENGUnVuTG9vcFRpbWVyUmVmPiYmIHRpbWVyKQogewogICAg
IEFTU0VSVCh0aW1lcik7CiAgICAgQVNTRVJUKHNob3VsZFNldFdhaXRUb0R1bXBXYXRjaGRvZygp
KTsKLSAgICB3YWl0VG9EdW1wV2F0Y2hkb2cgPSB0aW1lcjsKLSAgICBDRlJ1bkxvb3BBZGRUaW1l
cihDRlJ1bkxvb3BHZXRDdXJyZW50KCksIHdhaXRUb0R1bXBXYXRjaGRvZywga0NGUnVuTG9vcENv
bW1vbk1vZGVzKTsKKyAgICB3YWl0VG9EdW1wV2F0Y2hkb2cgPSBXVEZNb3ZlKHRpbWVyKTsKKyAg
ICBDRlJ1bkxvb3BBZGRUaW1lcihDRlJ1bkxvb3BHZXRDdXJyZW50KCksIHdhaXRUb0R1bXBXYXRj
aGRvZy5nZXQoKSwga0NGUnVuTG9vcENvbW1vbk1vZGVzKTsKIH0KIAogYm9vbCBzaG91bGRTZXRX
YWl0VG9EdW1wV2F0Y2hkb2coKQpAQCAtMTY4MywxMSArMTY3NywxMSBAQCB2b2lkIGR1bXAoKQog
ICAgICAgICAgICAgcmVzdWx0TWltZVR5cGUgPSBAImFwcGxpY2F0aW9uL3BkZiI7CiAgICAgICAg
IH0gZWxzZSBpZiAoZ1Rlc3RSdW5uZXItPmR1bXBET01Bc1dlYkFyY2hpdmUoKSkgewogICAgICAg
ICAgICAgV2ViQXJjaGl2ZSAqd2ViQXJjaGl2ZSA9IFtbbWFpbkZyYW1lIERPTURvY3VtZW50XSB3
ZWJBcmNoaXZlXTsKLSAgICAgICAgICAgIHJlc3VsdFN0cmluZyA9IENGQnJpZGdpbmdSZWxlYXNl
KFdlYkNvcmVUZXN0U3VwcG9ydDo6Y3JlYXRlWE1MU3RyaW5nRnJvbVdlYkFyY2hpdmVEYXRhKChf
X2JyaWRnZSBDRkRhdGFSZWYpW3dlYkFyY2hpdmUgZGF0YV0pKTsKKyAgICAgICAgICAgIHJlc3Vs
dFN0cmluZyA9IFdlYkNvcmVUZXN0U3VwcG9ydDo6Y3JlYXRlWE1MU3RyaW5nRnJvbVdlYkFyY2hp
dmVEYXRhKChfX2JyaWRnZSBDRkRhdGFSZWYpW3dlYkFyY2hpdmUgZGF0YV0pOwogICAgICAgICAg
ICAgcmVzdWx0TWltZVR5cGUgPSBAImFwcGxpY2F0aW9uL3gtd2ViYXJjaGl2ZSI7CiAgICAgICAg
IH0gZWxzZSBpZiAoZ1Rlc3RSdW5uZXItPmR1bXBTb3VyY2VBc1dlYkFyY2hpdmUoKSkgewogICAg
ICAgICAgICAgV2ViQXJjaGl2ZSAqd2ViQXJjaGl2ZSA9IFtbbWFpbkZyYW1lIGRhdGFTb3VyY2Vd
IHdlYkFyY2hpdmVdOwotICAgICAgICAgICAgcmVzdWx0U3RyaW5nID0gQ0ZCcmlkZ2luZ1JlbGVh
c2UoV2ViQ29yZVRlc3RTdXBwb3J0OjpjcmVhdGVYTUxTdHJpbmdGcm9tV2ViQXJjaGl2ZURhdGEo
KF9fYnJpZGdlIENGRGF0YVJlZilbd2ViQXJjaGl2ZSBkYXRhXSkpOworICAgICAgICAgICAgcmVz
dWx0U3RyaW5nID0gV2ViQ29yZVRlc3RTdXBwb3J0OjpjcmVhdGVYTUxTdHJpbmdGcm9tV2ViQXJj
aGl2ZURhdGEoKF9fYnJpZGdlIENGRGF0YVJlZilbd2ViQXJjaGl2ZSBkYXRhXSk7CiAgICAgICAg
ICAgICByZXN1bHRNaW1lVHlwZSA9IEAiYXBwbGljYXRpb24veC13ZWJhcmNoaXZlIjsKICAgICAg
ICAgfSBlbHNlIGlmIChnVGVzdFJ1bm5lci0+aXNQcmludGluZygpKQogICAgICAgICAgICAgcmVz
dWx0U3RyaW5nID0gW21haW5GcmFtZSByZW5kZXJUcmVlQXNFeHRlcm5hbFJlcHJlc2VudGF0aW9u
Rm9yUHJpbnRpbmddOwpAQCAtMTk4Miw3ICsxOTc2LDcgQEAgc3RhdGljIHZvaWQgcnVuVGVzdChj
b25zdCBzdGQ6OnN0cmluZyYgaW5wdXRMaW5lKQogICAgIGdUZXN0UnVubmVyLT5jbGVhckFsbERh
dGFiYXNlcygpOwogCiAgICAgaWYgKGRpc2FsbG93ZWRVUkxzKQotICAgICAgICBDRlNldFJlbW92
ZUFsbFZhbHVlcyhkaXNhbGxvd2VkVVJMcyk7CisgICAgICAgIENGU2V0UmVtb3ZlQWxsVmFsdWVz
KGRpc2FsbG93ZWRVUkxzLmdldCgpKTsKICAgICBpZiAoc2hvdWxkTG9nRnJhbWVMb2FkRGVsZWdh
dGVzKHBhdGhPclVSTC5jX3N0cigpKSkKICAgICAgICAgZ1Rlc3RSdW5uZXItPnNldER1bXBGcmFt
ZUxvYWRDYWxsYmFja3ModHJ1ZSk7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L21hYy9EdW1wUmVuZGVyVHJlZU1hYy5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBS
ZW5kZXJUcmVlTWFjLmgKaW5kZXggM2Q0MWI1Yjc0YmI3MjhhNTEyZGU5NjdkOTk1OGYwNjg4MmQ4
NTYzYy4uNGQ5ZDFkMmQ3MDczN2UwYTE5ZDNjNDQ5M2U3OWZjNDg1M2QxNmI5YyAxMDA2NDQKLS0t
IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlTWFjLmgKKysrIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlTWFjLmgKQEAgLTQ0LDEwICs0NCwx
MCBAQCBPQkpDX0NMQVNTIFdlYlNjcmlwdFdvcmxkOwogT0JKQ19DTEFTUyBXZWJWaWV3OwogCiBl
eHRlcm4gQ0ZNdXRhYmxlQXJyYXlSZWYgb3BlbldpbmRvd3NSZWY7Ci1leHRlcm4gQ0ZNdXRhYmxl
U2V0UmVmIGRpc2FsbG93ZWRVUkxzOwogZXh0ZXJuIFdlYkZyYW1lKiBtYWluRnJhbWU7CiBleHRl
cm4gV2ViRnJhbWUqIHRvcExvYWRpbmdGcmFtZTsKICNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJu
IFJldGFpblB0cjxDRk11dGFibGVTZXRSZWY+IGRpc2FsbG93ZWRVUkxzOwogZXh0ZXJuIFJldGFp
blB0cjxEdW1wUmVuZGVyVHJlZURyYWdnaW5nSW5mbz4gZHJhZ2dpbmdJbmZvOwogZXh0ZXJuIFJl
dGFpblB0cjxOYXZpZ2F0aW9uQ29udHJvbGxlcj4gZ05hdmlnYXRpb25Db250cm9sbGVyOwogZXh0
ZXJuIFJldGFpblB0cjxQb2xpY3lEZWxlZ2F0ZT4gcG9saWN5RGVsZWdhdGU7CkBAIC02MCw5ICs2
MCwxMCBAQCBleHRlcm4gUmV0YWluUHRyPFVJV2luZG93PiBtYWluV2luZG93OwogT0JKQ19DTEFT
UyBOU1dpbmRvdzsKIGV4dGVybiBSZXRhaW5QdHI8TlNXaW5kb3c+IG1haW5XaW5kb3c7CiAjZW5k
aWYKLSNlbmRpZgogCi12b2lkIHNldFdhaXRUb0R1bXBXYXRjaGRvZyhDRlJ1bkxvb3BUaW1lclJl
Zik7Cit2b2lkIHNldFdhaXRUb0R1bXBXYXRjaGRvZyhSZXRhaW5QdHI8Q0ZSdW5Mb29wVGltZXJS
ZWY+JiYpOworI2VuZGlmIC8vIF9fY3BsdXNwbHVzCisKIGJvb2wgc2hvdWxkU2V0V2FpdFRvRHVt
cFdhdGNoZG9nKHZvaWQpOwogCiAjaWZkZWYgX19jcGx1c3BsdXMKZGlmZiAtLWdpdCBhL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL21hYy9FdmVudFNlbmRpbmdDb250cm9sbGVyLm1tIGIvVG9vbHMvRHVt
cFJlbmRlclRyZWUvbWFjL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIubW0KaW5kZXggMTZhNjA1MWJi
N2ZiNjRiOWRmMGFhOWUzNzMyMmI4OWIwMTFkNzU3MC4uYjg3OTQyYjNjNmM5MjVmNDM1NWY1ZTUz
NzNhNWY2ZGVlZjBmZjA2MSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0V2
ZW50U2VuZGluZ0NvbnRyb2xsZXIubW0KKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0V2
ZW50U2VuZGluZ0NvbnRyb2xsZXIubW0KQEAgLTgwOSwxNiArODA5LDE1IEBAIC0gKHZvaWQpbW91
c2VTY3JvbGxCeVg6KGludCl4IGFuZFk6KGludCl5IGNvbnRpbnVvdXNseTooQk9PTCljb250aW51
b3VzbHkKIHsKICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBDR1Njcm9sbEV2ZW50VW5p
dCB1bml0ID0gY29udGludW91c2x5ID8ga0NHU2Nyb2xsRXZlbnRVbml0UGl4ZWwgOiBrQ0dTY3Jv
bGxFdmVudFVuaXRMaW5lOwotICAgIENHRXZlbnRSZWYgY2dTY3JvbGxFdmVudCA9IENHRXZlbnRD
cmVhdGVTY3JvbGxXaGVlbEV2ZW50MihOVUxMLCB1bml0LCAyLCB5LCB4LCAwKTsKKyAgICBhdXRv
IGNnU2Nyb2xsRXZlbnQgPSBhZG9wdENGKENHRXZlbnRDcmVhdGVTY3JvbGxXaGVlbEV2ZW50MihO
VUxMLCB1bml0LCAyLCB5LCB4LCAwKSk7CiAgICAgCiAgICAgLy8gU2V0IHRoZSBDR0V2ZW50IGxv
Y2F0aW9uIGluIGZsaXBwZWQgY29vcmRzIHJlbGF0aXZlIHRvIHRoZSBmaXJzdCBzY3JlZW4sIHdo
aWNoCiAgICAgLy8gY29tcGVuc2F0ZXMgZm9yIHRoZSBiZWhhdmlvciBvZiArW05TRXZlbnQgZXZl
bnRXaXRoQ0dFdmVudDpdIHdoZW4gdGhlIGV2ZW50IGhhcwogICAgIC8vIG5vIGFzc29jaWF0ZWQg
d2luZG93LiBTZWUgPHJkYXI6Ly9wcm9ibGVtLzE3MTgwNTkxPi4KICAgICBDR1BvaW50IGxhc3RH
bG9iYWxNb3VzZVBvc2l0aW9uID0gQ0dQb2ludE1ha2UobGFzdE1vdXNlUG9zaXRpb24ueCwgW1tb
TlNTY3JlZW4gc2NyZWVuc10gb2JqZWN0QXRJbmRleDowXSBmcmFtZV0uc2l6ZS5oZWlnaHQgLSBs
YXN0TW91c2VQb3NpdGlvbi55KTsKLSAgICBDR0V2ZW50U2V0TG9jYXRpb24oY2dTY3JvbGxFdmVu
dCwgbGFzdEdsb2JhbE1vdXNlUG9zaXRpb24pOworICAgIENHRXZlbnRTZXRMb2NhdGlvbihjZ1Nj
cm9sbEV2ZW50LmdldCgpLCBsYXN0R2xvYmFsTW91c2VQb3NpdGlvbik7CiAKLSAgICBOU0V2ZW50
ICpzY3JvbGxFdmVudCA9IFtOU0V2ZW50IGV2ZW50V2l0aENHRXZlbnQ6Y2dTY3JvbGxFdmVudF07
Ci0gICAgQ0ZSZWxlYXNlKGNnU2Nyb2xsRXZlbnQpOworICAgIE5TRXZlbnQgKnNjcm9sbEV2ZW50
ID0gW05TRXZlbnQgZXZlbnRXaXRoQ0dFdmVudDpjZ1Njcm9sbEV2ZW50LmdldCgpXTsKIAogICAg
IE5TVmlldyAqc3ViVmlldyA9IFtbbWFpbkZyYW1lIHdlYlZpZXddIGhpdFRlc3Q6W3Njcm9sbEV2
ZW50IGxvY2F0aW9uSW5XaW5kb3ddXTsKICAgICBpZiAoc3ViVmlldykgewpAQCAtODc1LDE5ICs4
NzQsMTggQEAgLSAodm9pZCltb3VzZVNjcm9sbEJ5WDooaW50KXggYW5kWTooaW50KXkgd2l0aFdo
ZWVsOihOU1N0cmluZyopcGhhc2VOYW1lIGFuZE1vbWUKICAgICBpZiAobW9tZW50dW0gPT0ga0NH
TW9tZW50dW1TY3JvbGxQaGFzZUVuZCkKICAgICAgICAgX3NlbnRNb21lbnR1bVBoYXNlRW5kID0g
WUVTOwogCi0gICAgQ0dFdmVudFJlZiBjZ1Njcm9sbEV2ZW50ID0gQ0dFdmVudENyZWF0ZVNjcm9s
bFdoZWVsRXZlbnQyKE5VTEwsIGtDR1Njcm9sbEV2ZW50VW5pdExpbmUsIDIsIHksIHgsIDApOwor
ICAgIGF1dG8gY2dTY3JvbGxFdmVudCA9IGFkb3B0Q0YoQ0dFdmVudENyZWF0ZVNjcm9sbFdoZWVs
RXZlbnQyKE5VTEwsIGtDR1Njcm9sbEV2ZW50VW5pdExpbmUsIDIsIHksIHgsIDApKTsKIAogICAg
IC8vIFNldCB0aGUgQ0dFdmVudCBsb2NhdGlvbiBpbiBmbGlwcGVkIGNvb3JkcyByZWxhdGl2ZSB0
byB0aGUgZmlyc3Qgc2NyZWVuLCB3aGljaAogICAgIC8vIGNvbXBlbnNhdGVzIGZvciB0aGUgYmVo
YXZpb3Igb2YgK1tOU0V2ZW50IGV2ZW50V2l0aENHRXZlbnQ6XSB3aGVuIHRoZSBldmVudCBoYXMK
ICAgICAvLyBubyBhc3NvY2lhdGVkIHdpbmRvdy4gU2VlIDxyZGFyOi8vcHJvYmxlbS8xNzE4MDU5
MT4uCiAgICAgQ0dQb2ludCBsYXN0R2xvYmFsTW91c2VQb3NpdGlvbiA9IENHUG9pbnRNYWtlKGxh
c3RNb3VzZVBvc2l0aW9uLngsIFtbW05TU2NyZWVuIHNjcmVlbnNdIG9iamVjdEF0SW5kZXg6MF0g
ZnJhbWVdLnNpemUuaGVpZ2h0IC0gbGFzdE1vdXNlUG9zaXRpb24ueSk7Ci0gICAgQ0dFdmVudFNl
dExvY2F0aW9uKGNnU2Nyb2xsRXZlbnQsIGxhc3RHbG9iYWxNb3VzZVBvc2l0aW9uKTsKLSAgICBD
R0V2ZW50U2V0SW50ZWdlclZhbHVlRmllbGQoY2dTY3JvbGxFdmVudCwga0NHU2Nyb2xsV2hlZWxF
dmVudElzQ29udGludW91cywgMSk7Ci0gICAgQ0dFdmVudFNldEludGVnZXJWYWx1ZUZpZWxkKGNn
U2Nyb2xsRXZlbnQsIGtDR1Njcm9sbFdoZWVsRXZlbnRTY3JvbGxQaGFzZSwgcGhhc2UpOwotICAg
IENHRXZlbnRTZXRJbnRlZ2VyVmFsdWVGaWVsZChjZ1Njcm9sbEV2ZW50LCBrQ0dTY3JvbGxXaGVl
bEV2ZW50TW9tZW50dW1QaGFzZSwgbW9tZW50dW0pOworICAgIENHRXZlbnRTZXRMb2NhdGlvbihj
Z1Njcm9sbEV2ZW50LmdldCgpLCBsYXN0R2xvYmFsTW91c2VQb3NpdGlvbik7CisgICAgQ0dFdmVu
dFNldEludGVnZXJWYWx1ZUZpZWxkKGNnU2Nyb2xsRXZlbnQuZ2V0KCksIGtDR1Njcm9sbFdoZWVs
RXZlbnRJc0NvbnRpbnVvdXMsIDEpOworICAgIENHRXZlbnRTZXRJbnRlZ2VyVmFsdWVGaWVsZChj
Z1Njcm9sbEV2ZW50LmdldCgpLCBrQ0dTY3JvbGxXaGVlbEV2ZW50U2Nyb2xsUGhhc2UsIHBoYXNl
KTsKKyAgICBDR0V2ZW50U2V0SW50ZWdlclZhbHVlRmllbGQoY2dTY3JvbGxFdmVudC5nZXQoKSwg
a0NHU2Nyb2xsV2hlZWxFdmVudE1vbWVudHVtUGhhc2UsIG1vbWVudHVtKTsKICAgICAKLSAgICBO
U0V2ZW50KiBzY3JvbGxFdmVudCA9IFtOU0V2ZW50IGV2ZW50V2l0aENHRXZlbnQ6Y2dTY3JvbGxF
dmVudF07Ci0gICAgQ0ZSZWxlYXNlKGNnU2Nyb2xsRXZlbnQpOworICAgIE5TRXZlbnQqIHNjcm9s
bEV2ZW50ID0gW05TRXZlbnQgZXZlbnRXaXRoQ0dFdmVudDpjZ1Njcm9sbEV2ZW50LmdldCgpXTsK
IAogICAgIGlmIChOU1ZpZXcqIHRhcmdldFZpZXcgPSBbW21haW5GcmFtZSB3ZWJWaWV3XSBoaXRU
ZXN0OltzY3JvbGxFdmVudCBsb2NhdGlvbkluV2luZG93XV0pIHsKICAgICAgICAgW05TQXBwIF9z
ZXRDdXJyZW50RXZlbnQ6c2Nyb2xsRXZlbnRdOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRl
clRyZWUvbWFjL1BpeGVsRHVtcFN1cHBvcnRNYWMubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9t
YWMvUGl4ZWxEdW1wU3VwcG9ydE1hYy5tbQppbmRleCBhYzMyODFhNGRmM2UwMjM1NjcxODgwN2Yw
YWQ3ODJiZjFkNzQ0YmI3Li40YTI2YWE1MzE2NTA2MmMwYjgwMmI4MGMzNTU5YTZmYWRlMTBkNGVm
IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvUGl4ZWxEdW1wU3VwcG9ydE1h
Yy5tbQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvUGl4ZWxEdW1wU3VwcG9ydE1hYy5t
bQpAQCAtNzksMTAgKzc5LDEwIEBAIHN0YXRpYyB2b2lkIHBhaW50UmVwYWludFJlY3RPdmVybGF5
KFdlYlZpZXcqIHdlYlZpZXcsIENHQ29udGV4dFJlZiBjb250ZXh0KQogICAgIENHQ29udGV4dFJl
c3RvcmVHU3RhdGUoY29udGV4dCk7CiB9CiAKLXN0YXRpYyBDR0ltYWdlUmVmIHRha2VXaW5kb3dT
bmFwc2hvdChDR1NXaW5kb3dJRCB3aW5kb3dJRCwgQ0dXaW5kb3dJbWFnZU9wdGlvbiBpbWFnZU9w
dGlvbnMpIENGX1JFVFVSTlNfUkVUQUlORUQKK3N0YXRpYyBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4g
dGFrZVdpbmRvd1NuYXBzaG90KENHU1dpbmRvd0lEIHdpbmRvd0lELCBDR1dpbmRvd0ltYWdlT3B0
aW9uIGltYWdlT3B0aW9ucykKIHsKICAgICBpbWFnZU9wdGlvbnMgfD0ga0NHV2luZG93SW1hZ2VC
b3VuZHNJZ25vcmVGcmFtaW5nIHwga0NHV2luZG93SW1hZ2VTaG91bGRCZU9wYXF1ZTsKLSAgICBy
ZXR1cm4gQ0dXaW5kb3dMaXN0Q3JlYXRlSW1hZ2UoQ0dSZWN0TnVsbCwga0NHV2luZG93TGlzdE9w
dGlvbkluY2x1ZGluZ1dpbmRvdywgd2luZG93SUQsIGltYWdlT3B0aW9ucyk7CisgICAgcmV0dXJu
IGFkb3B0Q0YoQ0dXaW5kb3dMaXN0Q3JlYXRlSW1hZ2UoQ0dSZWN0TnVsbCwga0NHV2luZG93TGlz
dE9wdGlvbkluY2x1ZGluZ1dpbmRvdywgd2luZG93SUQsIGltYWdlT3B0aW9ucykpOwogfQogCiBS
ZWZQdHI8Qml0bWFwQ29udGV4dD4gY3JlYXRlQml0bWFwQ29udGV4dEZyb21XZWJWaWV3KGJvb2wg
b25zY3JlZW4sIGJvb2wgaW5jcmVtZW50YWxSZXBhaW50LCBib29sIHN3ZWVwSG9yaXpvbnRhbGx5
LCBib29sIGRyYXdTZWxlY3Rpb25SZWN0KQpAQCAtMTMyLDIyICsxMzIsMTkgQEAgUmVmUHRyPEJp
dG1hcENvbnRleHQ+IGNyZWF0ZUJpdG1hcENvbnRleHRGcm9tV2ViVmlldyhib29sIG9uc2NyZWVu
LCBib29sIGluY3JlbWUKICAgICAgICAgICAgIC8vIEFzayB0aGUgd2luZG93IHNlcnZlciB0byBw
cm92aWRlIHVzIGEgY29tcG9zaXRlZCB2ZXJzaW9uIG9mIHRoZSAqcmVhbCogd2luZG93IGNvbnRl
bnQgaW5jbHVkaW5nIHN1cmZhY2VzIChpLmUuIE9wZW5HTCBjb250ZW50KQogICAgICAgICAgICAg
Ly8gTm90ZSB0aGF0IHRoZSByZXR1cm5lZCBpbWFnZSBtaWdodCBkaWZmZXIgdmVyeSBzbGlnaHRs
eSBmcm9tIHRoZSB3aW5kb3cgYmFja2luZyBiZWNhdXNlIG9mIGRpdGhlcmluZyBhcnRpZmFjdHMg
aW4gdGhlIHdpbmRvdyBzZXJ2ZXIgY29tcG9zaXRvci4KICAgICAgICAgICAgIE5TV2luZG93ICp3
aW5kb3cgPSBbdmlldyB3aW5kb3ddOwotICAgICAgICAgICAgQ0dJbWFnZVJlZiBpbWFnZSA9IHRh
a2VXaW5kb3dTbmFwc2hvdChbd2luZG93IHdpbmRvd051bWJlcl0sIGtDR1dpbmRvd0ltYWdlRGVm
YXVsdCk7CisgICAgICAgICAgICBhdXRvIGltYWdlID0gdGFrZVdpbmRvd1NuYXBzaG90KFt3aW5k
b3cgd2luZG93TnVtYmVyXSwga0NHV2luZG93SW1hZ2VEZWZhdWx0KTsKIAogICAgICAgICAgICAg
aWYgKGltYWdlKSB7CiAgICAgICAgICAgICAgICAgLy8gV29yayBhcm91bmQgPHJkYXI6Ly9wcm9i
bGVtLzE3MDg0OTkzPjsgcmUtcmVxdWVzdCB0aGUgc25hcHNob3QgYXQga0NHV2luZG93SW1hZ2VO
b21pbmFsUmVzb2x1dGlvbiBpZiBpdCB3YXMgY2FwdHVyZWQgYXQgdGhlIHdyb25nIHNjYWxlLgog
ICAgICAgICAgICAgICAgIENHRmxvYXQgZGVzaXJlZFNuYXBzaG90V2lkdGggPSB3aW5kb3cuZnJh
bWUuc2l6ZS53aWR0aCAqIGRldmljZVNjYWxlRmFjdG9yOwotICAgICAgICAgICAgICAgIGlmIChD
R0ltYWdlR2V0V2lkdGgoaW1hZ2UpICE9IGRlc2lyZWRTbmFwc2hvdFdpZHRoKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIENHSW1hZ2VSZWxlYXNlKGltYWdlKTsKKyAgICAgICAgICAgICAgICBpZiAo
Q0dJbWFnZUdldFdpZHRoKGltYWdlLmdldCgpKSAhPSBkZXNpcmVkU25hcHNob3RXaWR0aCkKICAg
ICAgICAgICAgICAgICAgICAgaW1hZ2UgPSB0YWtlV2luZG93U25hcHNob3QoW3dpbmRvdyB3aW5k
b3dOdW1iZXJdLCBrQ0dXaW5kb3dJbWFnZU5vbWluYWxSZXNvbHV0aW9uKTsKLSAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmICghaW1hZ2UpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICAgICAgICAgIENHQ29udGV4dERyYXdJbWFn
ZShjb250ZXh0LCBDR1JlY3RNYWtlKDAsIDAsIENHSW1hZ2VHZXRXaWR0aChpbWFnZSksIENHSW1h
Z2VHZXRIZWlnaHQoaW1hZ2UpKSwgaW1hZ2UpOwotICAgICAgICAgICAgQ0dJbWFnZVJlbGVhc2Uo
aW1hZ2UpOworICAgICAgICAgICAgQ0dDb250ZXh0RHJhd0ltYWdlKGNvbnRleHQsIENHUmVjdE1h
a2UoMCwgMCwgQ0dJbWFnZUdldFdpZHRoKGltYWdlLmdldCgpKSwgQ0dJbWFnZUdldEhlaWdodChp
bWFnZS5nZXQoKSkpLCBpbWFnZS5nZXQoKSk7CiAKICAgICAgICAgICAgIGlmIChbdmlldyBpc1Ry
YWNraW5nUmVwYWludHNdKQogICAgICAgICAgICAgICAgIHBhaW50UmVwYWludFJlY3RPdmVybGF5
KHZpZXcsIGNvbnRleHQpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1Jl
c291cmNlTG9hZERlbGVnYXRlLm1tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1Jlc291cmNl
TG9hZERlbGVnYXRlLm1tCmluZGV4IDUzOWQxNmE4YTBjZmJiYWZhMGUzNDAxZjY0ODM5ZTAyOWJh
ZjMyOTAuLjBhODMyYTlkZDYwNTliNjY1ZGY3ODk1NTkzODMyNDY4OGE5MzkyODMgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9SZXNvdXJjZUxvYWREZWxlZ2F0ZS5tbQorKysg
Yi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvUmVzb3VyY2VMb2FkRGVsZWdhdGUubW0KQEAgLTE3
Miw3ICsxNzIsNyBAQCAtKE5TVVJMUmVxdWVzdCAqKXdlYlZpZXc6IChXZWJWaWV3ICopd3YgcmVz
b3VyY2U6aWRlbnRpZmllciB3aWxsU2VuZFJlcXVlc3Q6IChOUwogICAgICAgICB9CiAgICAgfQog
Ci0gICAgaWYgKGRpc2FsbG93ZWRVUkxzICYmIENGU2V0Q29udGFpbnNWYWx1ZShkaXNhbGxvd2Vk
VVJMcywgKF9fYnJpZGdlIENGVVJMUmVmKXVybCkpCisgICAgaWYgKGRpc2FsbG93ZWRVUkxzICYm
IENGU2V0Q29udGFpbnNWYWx1ZShkaXNhbGxvd2VkVVJMcy5nZXQoKSwgKF9fYnJpZGdlIENGVVJM
UmVmKXVybCkpCiAgICAgICAgIHJldHVybiBuaWw7CiAKICAgICBhdXRvIG5ld1JlcXVlc3QgPSBh
ZG9wdE5TKFtyZXF1ZXN0IG11dGFibGVDb3B5XSk7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9tYWMvVGVzdFJ1bm5lck1hYy5tbSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9U
ZXN0UnVubmVyTWFjLm1tCmluZGV4IDI0Y2UyMmY3ZmRhNzZkNTVmODZlNmE1ZDRhMWZiYmJhOGVj
MmI2MGYuLjA5ZGMyYzQ1NTg1ZjAwN2YwNTYxNjUxZDE3MGVjNDM0ZTVkZmVlZjcgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9UZXN0UnVubmVyTWFjLm1tCisrKyBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL21hYy9UZXN0UnVubmVyTWFjLm1tCkBAIC0xMzcsMTMgKzEzNywxMyBA
QCB2b2lkIFRlc3RSdW5uZXI6OmFkZERpc2FsbG93ZWRVUkwoSlNTdHJpbmdSZWYgdXJsKQogICAg
IFJldGFpblB0cjxDRlN0cmluZ1JlZj4gdXJsQ0YgPSBhZG9wdENGKEpTU3RyaW5nQ29weUNGU3Ry
aW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIHVybCkpOwogCiAgICAgaWYgKCFkaXNhbGxvd2VkVVJM
cykKLSAgICAgICAgZGlzYWxsb3dlZFVSTHMgPSBDRlNldENyZWF0ZU11dGFibGUoa0NGQWxsb2Nh
dG9yRGVmYXVsdCwgMCwgTlVMTCk7CisgICAgICAgIGRpc2FsbG93ZWRVUkxzID0gYWRvcHRDRihD
RlNldENyZWF0ZU11dGFibGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgMCwgTlVMTCkpOwogCiAgICAg
Ly8gQ2Fub25pY2FsaXplIHRoZSBVUkwKICAgICBOU1VSTFJlcXVlc3QgKnJlcXVlc3QgPSBbTlNV
UkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOihfX2JyaWRnZSBO
U1N0cmluZyAqKXVybENGLmdldCgpXV07CiAgICAgcmVxdWVzdCA9IFtOU1VSTFByb3RvY29sIGNh
bm9uaWNhbFJlcXVlc3RGb3JSZXF1ZXN0OnJlcXVlc3RdOwogCi0gICAgQ0ZTZXRBZGRWYWx1ZShk
aXNhbGxvd2VkVVJMcywgKF9fYnJpZGdlIENGVVJMUmVmKVtyZXF1ZXN0IFVSTF0pOworICAgIENG
U2V0QWRkVmFsdWUoZGlzYWxsb3dlZFVSTHMuZ2V0KCksIChfX2JyaWRnZSBDRlVSTFJlZilbcmVx
dWVzdCBVUkxdKTsKIH0KIAogYm9vbCBUZXN0UnVubmVyOjpjYWxsU2hvdWxkQ2xvc2VPbldlYlZp
ZXcoKQpAQCAtNTc3LDcgKzU3Nyw3IEBAIHZvaWQgVGVzdFJ1bm5lcjo6c2V0V2FpdFRvRHVtcChi
b29sIHdhaXRVbnRpbERvbmUpCiB7CiAgICAgbV93YWl0VG9EdW1wID0gd2FpdFVudGlsRG9uZTsK
ICAgICBpZiAobV93YWl0VG9EdW1wICYmIG1fdGltZW91dCAmJiBzaG91bGRTZXRXYWl0VG9EdW1w
V2F0Y2hkb2coKSkKLSAgICAgICAgc2V0V2FpdFRvRHVtcFdhdGNoZG9nKENGUnVuTG9vcFRpbWVy
Q3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIENGQWJzb2x1dGVUaW1lR2V0Q3VycmVudCgpICsg
bV90aW1lb3V0IC8gMTAwMC4wLCAwLCAwLCAwLCB3YWl0VW50aWxEb25lV2F0Y2hkb2dGaXJlZCwg
TlVMTCkpOworICAgICAgICBzZXRXYWl0VG9EdW1wV2F0Y2hkb2coYWRvcHRDRihDRlJ1bkxvb3BU
aW1lckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBDRkFic29sdXRlVGltZUdldEN1cnJlbnQo
KSArIG1fdGltZW91dCAvIDEwMDAuMCwgMCwgMCwgMCwgd2FpdFVudGlsRG9uZVdhdGNoZG9nRmly
ZWQsIE5VTEwpKSk7CiB9CiAKIGludCBUZXN0UnVubmVyOjp3aW5kb3dDb3VudCgpCmRpZmYgLS1n
aXQgYS9Ub29scy9Gb250V2l0aEZlYXR1cmVzL0ZvbnRXaXRoRmVhdHVyZXMvbWFpbi5jcHAgYi9U
b29scy9Gb250V2l0aEZlYXR1cmVzL0ZvbnRXaXRoRmVhdHVyZXMvbWFpbi5jcHAKaW5kZXggYzRl
Y2Q3NjU4NGI4ZTdhN2IxN2Y3ZGM0YjQyMDEwNTRiYTVmYjFhZC4uMGQ4Yzg5NWM2OGViMDBkYjdl
MGU1YWZkNWUzOGExNWNjYTJlZmVhOCAxMDA2NDQKLS0tIGEvVG9vbHMvRm9udFdpdGhGZWF0dXJl
cy9Gb250V2l0aEZlYXR1cmVzL21haW4uY3BwCisrKyBiL1Rvb2xzL0ZvbnRXaXRoRmVhdHVyZXMv
Rm9udFdpdGhGZWF0dXJlcy9tYWluLmNwcApAQCAtMzIsNTAgKzMyLDM5IEBACiAjaW5jbHVkZSA8
SW1hZ2VJTy9JbWFnZUlPLmg+CiAjaW5jbHVkZSA8ZnN0cmVhbT4KIAotc3RhdGljIENURm9udERl
c2NyaXB0b3JSZWYgY29uc3RydWN0Rm9udFdpdGhUcnVlVHlwZUZlYXR1cmUoQ1RGb250RGVzY3Jp
cHRvclJlZiBmb250RGVzY3JpcHRvciwgaW50IHR5cGUsIGludCBzZWxlY3RvcikKK3N0YXRpYyBS
ZXRhaW5QdHI8Q1RGb250RGVzY3JpcHRvclJlZj4gY29uc3RydWN0Rm9udFdpdGhUcnVlVHlwZUZl
YXR1cmUoQ1RGb250RGVzY3JpcHRvclJlZiBmb250RGVzY3JpcHRvciwgaW50IHR5cGUsIGludCBz
ZWxlY3RvcikKIHsKLSAgICBDRk51bWJlclJlZiB0eXBlVmFsdWUgPSBDRk51bWJlckNyZWF0ZShr
Q0ZBbGxvY2F0b3JEZWZhdWx0LCBrQ0ZOdW1iZXJJbnRUeXBlLCAmdHlwZSk7Ci0gICAgQ0ZOdW1i
ZXJSZWYgc2VsZWN0b3JWYWx1ZSA9IENGTnVtYmVyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQs
IGtDRk51bWJlckludFR5cGUsICZzZWxlY3Rvcik7CisgICAgYXV0byB0eXBlVmFsdWUgPSBhZG9w
dENGKENGTnVtYmVyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGtDRk51bWJlckludFR5cGUs
ICZ0eXBlKSk7CisgICAgYXV0byBzZWxlY3RvclZhbHVlID0gYWRvcHRDRihDRk51bWJlckNyZWF0
ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrQ0ZOdW1iZXJJbnRUeXBlLCAmc2VsZWN0b3IpKTsKICAg
ICBDRlR5cGVSZWYgZmVhdHVyZURpY3Rpb25hcnlLZXlzW10gPSB7IGtDVEZvbnRGZWF0dXJlVHlw
ZUlkZW50aWZpZXJLZXksIGtDVEZvbnRGZWF0dXJlU2VsZWN0b3JJZGVudGlmaWVyS2V5IH07Ci0g
ICAgQ0ZUeXBlUmVmIGZlYXR1cmVEaWN0aW9uYXJ5VmFsdWVzW10gPSB7IHR5cGVWYWx1ZSwgc2Vs
ZWN0b3JWYWx1ZSB9OwotICAgIENGRGljdGlvbmFyeVJlZiBmZWF0dXJlRGljdGlvbmFyeSA9IENG
RGljdGlvbmFyeUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBmZWF0dXJlRGljdGlvbmFyeUtl
eXMsIGZlYXR1cmVEaWN0aW9uYXJ5VmFsdWVzLCAyLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxs
QmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKTsKLSAgICBDRlJlbGVhc2Uo
dHlwZVZhbHVlKTsKLSAgICBDRlJlbGVhc2Uoc2VsZWN0b3JWYWx1ZSk7CisgICAgQ0ZUeXBlUmVm
IGZlYXR1cmVEaWN0aW9uYXJ5VmFsdWVzW10gPSB7IHR5cGVWYWx1ZS5nZXQoKSwgc2VsZWN0b3JW
YWx1ZS5nZXQoKSB9OworICAgIGF1dG8gZmVhdHVyZURpY3Rpb25hcnkgPSBhZG9wdENGKENGRGlj
dGlvbmFyeUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBmZWF0dXJlRGljdGlvbmFyeUtleXMs
IGZlYXR1cmVEaWN0aW9uYXJ5VmFsdWVzLCAyLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFj
a3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7CiAKLSAgICBDRlR5cGVSZWYg
ZmVhdHVyZVNldHRpbmdzVmFsdWVzW10gPSB7IGZlYXR1cmVEaWN0aW9uYXJ5IH07Ci0gICAgQ0ZB
cnJheVJlZiBmb250RmVhdHVyZVNldHRpbmdzID0gQ0ZBcnJheUNyZWF0ZShrQ0ZBbGxvY2F0b3JE
ZWZhdWx0LCBmZWF0dXJlU2V0dGluZ3NWYWx1ZXMsIDEsICZrQ0ZUeXBlQXJyYXlDYWxsQmFja3Mp
OwotICAgIENGUmVsZWFzZShmZWF0dXJlRGljdGlvbmFyeSk7CisgICAgQ0ZUeXBlUmVmIGZlYXR1
cmVTZXR0aW5nc1ZhbHVlc1tdID0geyBmZWF0dXJlRGljdGlvbmFyeS5nZXQoKSB9OworICAgIGF1
dG8gZm9udEZlYXR1cmVTZXR0aW5ncyA9IGFkb3B0Q0YoQ0ZBcnJheUNyZWF0ZShrQ0ZBbGxvY2F0
b3JEZWZhdWx0LCBmZWF0dXJlU2V0dGluZ3NWYWx1ZXMsIDEsICZrQ0ZUeXBlQXJyYXlDYWxsQmFj
a3MpKTsKIAogICAgIENGVHlwZVJlZiBmb250RGVzY3JpcHRvcktleXNbXSA9IHsga0NURm9udEZl
YXR1cmVTZXR0aW5nc0F0dHJpYnV0ZSB9OwotICAgIENGVHlwZVJlZiBmb250RGVzY3JpcHRvclZh
bHVlc1tdID0geyBmb250RmVhdHVyZVNldHRpbmdzIH07Ci0gICAgQ0ZEaWN0aW9uYXJ5UmVmIGZv
bnREZXNjcmlwdG9yQXR0cmlidXRlcyA9IENGRGljdGlvbmFyeUNyZWF0ZShrQ0ZBbGxvY2F0b3JE
ZWZhdWx0LCBmb250RGVzY3JpcHRvcktleXMsIGZvbnREZXNjcmlwdG9yVmFsdWVzLCAxLCAma0NG
VHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJh
Y2tzKTsKLSAgICBDRlJlbGVhc2UoZm9udEZlYXR1cmVTZXR0aW5ncyk7CisgICAgQ0ZUeXBlUmVm
IGZvbnREZXNjcmlwdG9yVmFsdWVzW10gPSB7IGZvbnRGZWF0dXJlU2V0dGluZ3MuZ2V0KCkgfTsK
KyAgICBhdXRvIGZvbnREZXNjcmlwdG9yQXR0cmlidXRlcyA9IGFkb3B0Q0YoQ0ZEaWN0aW9uYXJ5
Q3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGZvbnREZXNjcmlwdG9yS2V5cywgZm9udERlc2Ny
aXB0b3JWYWx1ZXMsIDEsICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVE
aWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpKTsKIAotICAgIENURm9udERlc2NyaXB0b3JSZWYgbW9k
aWZpZWRGb250RGVzY3JpcHRvciA9IENURm9udERlc2NyaXB0b3JDcmVhdGVDb3B5V2l0aEF0dHJp
YnV0ZXMoZm9udERlc2NyaXB0b3IsIGZvbnREZXNjcmlwdG9yQXR0cmlidXRlcyk7Ci0gICAgQ0ZS
ZWxlYXNlKGZvbnREZXNjcmlwdG9yQXR0cmlidXRlcyk7Ci0gICAgcmV0dXJuIG1vZGlmaWVkRm9u
dERlc2NyaXB0b3I7CisgICAgcmV0dXJuIGFkb3B0Q0YoQ1RGb250RGVzY3JpcHRvckNyZWF0ZUNv
cHlXaXRoQXR0cmlidXRlcyhmb250RGVzY3JpcHRvciwgZm9udERlc2NyaXB0b3JBdHRyaWJ1dGVz
LmdldCgpKSk7CiB9CiAKLXN0YXRpYyBDVEZvbnREZXNjcmlwdG9yUmVmIGNvbnN0cnVjdEZvbnRX
aXRoT3BlblR5cGVGZWF0dXJlKENURm9udERlc2NyaXB0b3JSZWYgZm9udERlc2NyaXB0b3IsIENG
U3RyaW5nUmVmIGZlYXR1cmUsIGludCB2YWx1ZSkKK3N0YXRpYyBSZXRhaW5QdHI8Q1RGb250RGVz
Y3JpcHRvclJlZj4gY29uc3RydWN0Rm9udFdpdGhPcGVuVHlwZUZlYXR1cmUoQ1RGb250RGVzY3Jp
cHRvclJlZiBmb250RGVzY3JpcHRvciwgQ0ZTdHJpbmdSZWYgZmVhdHVyZSwgaW50IHZhbHVlKQog
ewotICAgIENGTnVtYmVyUmVmIGZlYXR1cmVWYWx1ZSA9IENGTnVtYmVyQ3JlYXRlKGtDRkFsbG9j
YXRvckRlZmF1bHQsIGtDRk51bWJlckludFR5cGUsICZ2YWx1ZSk7CisgICAgYXV0byBmZWF0dXJl
VmFsdWUgPSBhZG9wdENGKENGTnVtYmVyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGtDRk51
bWJlckludFR5cGUsICZ2YWx1ZSkpOwogICAgIENGVHlwZVJlZiBmZWF0dXJlRGljdGlvbmFyeUtl
eXNbXSA9IHsga0NURm9udE9wZW5UeXBlRmVhdHVyZVRhZywga0NURm9udE9wZW5UeXBlRmVhdHVy
ZVZhbHVlIH07Ci0gICAgQ0ZUeXBlUmVmIGZlYXR1cmVEaWN0aW9uYXJ5VmFsdWVzW10gPSB7IGZl
YXR1cmUsIGZlYXR1cmVWYWx1ZSB9OwotICAgIENGRGljdGlvbmFyeVJlZiBmZWF0dXJlRGljdGlv
bmFyeSA9IENGRGljdGlvbmFyeUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBmZWF0dXJlRGlj
dGlvbmFyeUtleXMsIGZlYXR1cmVEaWN0aW9uYXJ5VmFsdWVzLCAyLCAma0NGVHlwZURpY3Rpb25h
cnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKTsKLSAgICBD
RlJlbGVhc2UoZmVhdHVyZVZhbHVlKTsKKyAgICBDRlR5cGVSZWYgZmVhdHVyZURpY3Rpb25hcnlW
YWx1ZXNbXSA9IHsgZmVhdHVyZSwgZmVhdHVyZVZhbHVlLmdldCgpIH07CisgICAgYXV0byBmZWF0
dXJlRGljdGlvbmFyeSA9IGFkb3B0Q0YoQ0ZEaWN0aW9uYXJ5Q3JlYXRlKGtDRkFsbG9jYXRvckRl
ZmF1bHQsIGZlYXR1cmVEaWN0aW9uYXJ5S2V5cywgZmVhdHVyZURpY3Rpb25hcnlWYWx1ZXMsIDIs
ICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVD
YWxsQmFja3MpKTsKIAotICAgIENGVHlwZVJlZiBmZWF0dXJlU2V0dGluZ3NWYWx1ZXNbXSA9IHsg
ZmVhdHVyZURpY3Rpb25hcnkgfTsKLSAgICBDRkFycmF5UmVmIGZvbnRGZWF0dXJlU2V0dGluZ3Mg
PSBDRkFycmF5Q3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGZlYXR1cmVTZXR0aW5nc1ZhbHVl
cywgMSwgJmtDRlR5cGVBcnJheUNhbGxCYWNrcyk7Ci0gICAgQ0ZSZWxlYXNlKGZlYXR1cmVEaWN0
aW9uYXJ5KTsKKyAgICBDRlR5cGVSZWYgZmVhdHVyZVNldHRpbmdzVmFsdWVzW10gPSB7IGZlYXR1
cmVEaWN0aW9uYXJ5LmdldCgpIH07CisgICAgYXV0byBmb250RmVhdHVyZVNldHRpbmdzID0gYWRv
cHRDRihDRkFycmF5Q3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGZlYXR1cmVTZXR0aW5nc1Zh
bHVlcywgMSwgJmtDRlR5cGVBcnJheUNhbGxCYWNrcykpOwogCiAgICAgQ0ZUeXBlUmVmIGZvbnRE
ZXNjcmlwdG9yS2V5c1tdID0geyBrQ1RGb250RmVhdHVyZVNldHRpbmdzQXR0cmlidXRlIH07Ci0g
ICAgQ0ZUeXBlUmVmIGZvbnREZXNjcmlwdG9yVmFsdWVzW10gPSB7IGZvbnRGZWF0dXJlU2V0dGlu
Z3MgfTsKLSAgICBDRkRpY3Rpb25hcnlSZWYgZm9udERlc2NyaXB0b3JBdHRyaWJ1dGVzID0gQ0ZE
aWN0aW9uYXJ5Q3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGZvbnREZXNjcmlwdG9yS2V5cywg
Zm9udERlc2NyaXB0b3JWYWx1ZXMsIDEsICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywg
JmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpOwotICAgIENGUmVsZWFzZShmb250RmVh
dHVyZVNldHRpbmdzKTsKKyAgICBDRlR5cGVSZWYgZm9udERlc2NyaXB0b3JWYWx1ZXNbXSA9IHsg
Zm9udEZlYXR1cmVTZXR0aW5ncy5nZXQoKSB9OworICAgIGF1dG8gZm9udERlc2NyaXB0b3JBdHRy
aWJ1dGVzID0gYWRvcHRDRihDRkRpY3Rpb25hcnlDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwg
Zm9udERlc2NyaXB0b3JLZXlzLCBmb250RGVzY3JpcHRvclZhbHVlcywgMSwgJmtDRlR5cGVEaWN0
aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcykpOwog
Ci0gICAgQ1RGb250RGVzY3JpcHRvclJlZiBtb2RpZmllZEZvbnREZXNjcmlwdG9yID0gQ1RGb250
RGVzY3JpcHRvckNyZWF0ZUNvcHlXaXRoQXR0cmlidXRlcyhmb250RGVzY3JpcHRvciwgZm9udERl
c2NyaXB0b3JBdHRyaWJ1dGVzKTsKLSAgICBDRlJlbGVhc2UoZm9udERlc2NyaXB0b3JBdHRyaWJ1
dGVzKTsKLSAgICByZXR1cm4gbW9kaWZpZWRGb250RGVzY3JpcHRvcjsKKyAgICByZXR1cm4gYWRv
cHRDRihDVEZvbnREZXNjcmlwdG9yQ3JlYXRlQ29weVdpdGhBdHRyaWJ1dGVzKGZvbnREZXNjcmlw
dG9yLCBmb250RGVzY3JpcHRvckF0dHJpYnV0ZXMuZ2V0KCkpKTsKIH0KIAogc3RhdGljIHZvaWQg
ZHJhd1RleHQoQ0dDb250ZXh0UmVmIGNvbnRleHQsIENURm9udERlc2NyaXB0b3JSZWYgZm9udERl
c2NyaXB0b3IsIENGU3RyaW5nUmVmIHByZWZpeCwgQ0dQb2ludCBsb2NhdGlvbikKQEAgLTg0LDM3
ICs3MywyOSBAQCBzdGF0aWMgdm9pZCBkcmF3VGV4dChDR0NvbnRleHRSZWYgY29udGV4dCwgQ1RG
b250RGVzY3JpcHRvclJlZiBmb250RGVzY3JpcHRvciwgQwogICAgIENHQ29udGV4dFNldFRleHRQ
b3NpdGlvbihjb250ZXh0LCBsb2NhdGlvbi54LCBsb2NhdGlvbi55KTsKIAogICAgIENHRmxvYXQg
Zm9udFNpemUgPSAyNTsKLSAgICBDVEZvbnRSZWYgZm9udCA9IENURm9udENyZWF0ZVdpdGhGb250
RGVzY3JpcHRvcihmb250RGVzY3JpcHRvciwgZm9udFNpemUsIG51bGxwdHIpOworICAgIGF1dG8g
Zm9udCA9IGFkb3B0Q0YoQ1RGb250Q3JlYXRlV2l0aEZvbnREZXNjcmlwdG9yKGZvbnREZXNjcmlw
dG9yLCBmb250U2l6ZSwgbnVsbHB0cikpOwogCi0gICAgQ0ZNdXRhYmxlU3RyaW5nUmVmIHN0cmlu
ZyA9IENGU3RyaW5nQ3JlYXRlTXV0YWJsZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAwKTsKLSAgICBD
RlN0cmluZ0FwcGVuZChzdHJpbmcsIHByZWZpeCk7Ci0gICAgQ0ZTdHJpbmdBcHBlbmQoc3RyaW5n
LCBDRlNUUigiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2
d3h5eiIpKTsKKyAgICBhdXRvIHN0cmluZyA9IGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVNdXRhYmxl
KGtDRkFsbG9jYXRvckRlZmF1bHQsIDApKTsKKyAgICBDRlN0cmluZ0FwcGVuZChzdHJpbmcuZ2V0
KCksIHByZWZpeCk7CisgICAgQ0ZTdHJpbmdBcHBlbmQoc3RyaW5nLmdldCgpLCBDRlNUUigiQUJD
REVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eiIpKTsKIAot
ICAgIENHQ29sb3JSZWYgcmVkID0gQ0dDb2xvckNyZWF0ZUdlbmVyaWNSR0IoMSwgMCwgMCwgMSk7
CisgICAgYXV0byByZWQgPSBhZG9wdENGKENHQ29sb3JDcmVhdGVHZW5lcmljUkdCKDEsIDAsIDAs
IDEpKTsKICAgICBDRlR5cGVSZWYgbGluZUtleXNbXSA9IHsga0NURm9yZWdyb3VuZENvbG9yQXR0
cmlidXRlTmFtZSB9OwotICAgIENGVHlwZVJlZiBsaW5lVmFsdWVzW10gPSB7IHJlZCB9OwotICAg
IENGRGljdGlvbmFyeVJlZiBsaW5lQXR0cmlidXRlcyA9IENGRGljdGlvbmFyeUNyZWF0ZShrQ0ZB
bGxvY2F0b3JEZWZhdWx0LCBsaW5lS2V5cywgbGluZVZhbHVlcywgMSwgJmtDRlR5cGVEaWN0aW9u
YXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcyk7Ci0gICAg
Q0dDb2xvclJlbGVhc2UocmVkKTsKKyAgICBDRlR5cGVSZWYgbGluZVZhbHVlc1tdID0geyByZWQu
Z2V0KCkgfTsKKyAgICBhdXRvIGxpbmVBdHRyaWJ1dGVzID0gYWRvcHRDRihDRkRpY3Rpb25hcnlD
cmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgbGluZUtleXMsIGxpbmVWYWx1ZXMsIDEsICZrQ0ZU
eXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFj
a3MpKTsKIAotICAgIENGQXR0cmlidXRlZFN0cmluZ1JlZiBhdHRyaWJ1dGVkU3RyaW5nID0gQ0ZB
dHRyaWJ1dGVkU3RyaW5nQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIHN0cmluZywgbGluZUF0
dHJpYnV0ZXMpOwotICAgIENGUmVsZWFzZShsaW5lQXR0cmlidXRlcyk7CisgICAgYXV0byBhdHRy
aWJ1dGVkU3RyaW5nID0gYWRvcHRDRihDRkF0dHJpYnV0ZWRTdHJpbmdDcmVhdGUoa0NGQWxsb2Nh
dG9yRGVmYXVsdCwgc3RyaW5nLmdldCgpLCBsaW5lQXR0cmlidXRlcy5nZXQoKSkpOwogCi0gICAg
Q0ZNdXRhYmxlQXR0cmlidXRlZFN0cmluZ1JlZiBtdXRhYmxlQXR0cmlidXRlZFN0cmluZyA9IENG
QXR0cmlidXRlZFN0cmluZ0NyZWF0ZU11dGFibGVDb3B5KGtDRkFsbG9jYXRvckRlZmF1bHQsIDAs
IGF0dHJpYnV0ZWRTdHJpbmcpOwotICAgIENGUmVsZWFzZShhdHRyaWJ1dGVkU3RyaW5nKTsKKyAg
ICBhdXRvIG11dGFibGVBdHRyaWJ1dGVkU3RyaW5nID0gYWRvcHRDRihDRkF0dHJpYnV0ZWRTdHJp
bmdDcmVhdGVNdXRhYmxlQ29weShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAwLCBhdHRyaWJ1dGVkU3Ry
aW5nLmdldCgpKSk7CiAKLSAgICBDVEZvbnRSZWYgbW9ub3NwYWNlRm9udCA9IENURm9udENyZWF0
ZVdpdGhOYW1lKENGU1RSKCJDb3VyaWVyIiksIGZvbnRTaXplLCBudWxscHRyKTsKLSAgICBDRkF0
dHJpYnV0ZWRTdHJpbmdTZXRBdHRyaWJ1dGUobXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcsIENGUmFu
Z2VNYWtlKDAsIENGU3RyaW5nR2V0TGVuZ3RoKHByZWZpeCkpLCBrQ1RGb250QXR0cmlidXRlTmFt
ZSwgbW9ub3NwYWNlRm9udCk7Ci0gICAgQ0ZSZWxlYXNlKG1vbm9zcGFjZUZvbnQpOworICAgIGF1
dG8gbW9ub3NwYWNlRm9udCA9IGFkb3B0Q0YoQ1RGb250Q3JlYXRlV2l0aE5hbWUoQ0ZTVFIoIkNv
dXJpZXIiKSwgZm9udFNpemUsIG51bGxwdHIpKTsKKyAgICBDRkF0dHJpYnV0ZWRTdHJpbmdTZXRB
dHRyaWJ1dGUobXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcuZ2V0KCksIENGUmFuZ2VNYWtlKDAsIENG
U3RyaW5nR2V0TGVuZ3RoKHByZWZpeCkpLCBrQ1RGb250QXR0cmlidXRlTmFtZSwgbW9ub3NwYWNl
Rm9udC5nZXQoKSk7CiAKLSAgICBDRkF0dHJpYnV0ZWRTdHJpbmdTZXRBdHRyaWJ1dGUobXV0YWJs
ZUF0dHJpYnV0ZWRTdHJpbmcsIENGUmFuZ2VNYWtlKENGU3RyaW5nR2V0TGVuZ3RoKHByZWZpeCks
IENGU3RyaW5nR2V0TGVuZ3RoKHN0cmluZykgLSBDRlN0cmluZ0dldExlbmd0aChwcmVmaXgpKSwg
a0NURm9udEF0dHJpYnV0ZU5hbWUsIGZvbnQpOwotICAgIENGUmVsZWFzZShzdHJpbmcpOwotICAg
IENGUmVsZWFzZShmb250KTsKKyAgICBDRkF0dHJpYnV0ZWRTdHJpbmdTZXRBdHRyaWJ1dGUobXV0
YWJsZUF0dHJpYnV0ZWRTdHJpbmcuZ2V0KCksIENGUmFuZ2VNYWtlKENGU3RyaW5nR2V0TGVuZ3Ro
KHByZWZpeCksIENGU3RyaW5nR2V0TGVuZ3RoKHN0cmluZy5nZXQoKSkgLSBDRlN0cmluZ0dldExl
bmd0aChwcmVmaXgpKSwga0NURm9udEF0dHJpYnV0ZU5hbWUsIGZvbnQuZ2V0KCkpOwogCi0gICAg
Q1RMaW5lUmVmIGxpbmUgPSBDVExpbmVDcmVhdGVXaXRoQXR0cmlidXRlZFN0cmluZyhtdXRhYmxl
QXR0cmlidXRlZFN0cmluZyk7Ci0gICAgQ0ZSZWxlYXNlKG11dGFibGVBdHRyaWJ1dGVkU3RyaW5n
KTsKKyAgICBhdXRvIGxpbmUgPSBhZG9wdENGKENUTGluZUNyZWF0ZVdpdGhBdHRyaWJ1dGVkU3Ry
aW5nKG11dGFibGVBdHRyaWJ1dGVkU3RyaW5nLmdldCgpKSk7CiAKLSAgICBDVExpbmVEcmF3KGxp
bmUsIGNvbnRleHQpOwotICAgIENGUmVsZWFzZShsaW5lKTsKKyAgICBDVExpbmVEcmF3KGxpbmUu
Z2V0KCksIGNvbnRleHQpOwogfQogCiBpbnQgbWFpbihpbnQgYXJnYywgY29uc3QgY2hhciAqIGFy
Z3ZbXSkKQEAgLTEyMiw3ICsxMDMsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY29uc3QgY2hhciAq
IGFyZ3ZbXSkKICAgICBzaXplX3Qgd2lkdGggPSAyNTAwOwogICAgIHNpemVfdCBoZWlnaHQgPSAy
MDAwOwogICAgIENHQ29sb3JTcGFjZVJlZiBjb2xvclNwYWNlID0gQ0dDb2xvclNwYWNlQ3JlYXRl
RGV2aWNlUkdCKCk7Ci0gICAgQ0dDb250ZXh0UmVmIGNvbnRleHQgPSBDR0JpdG1hcENvbnRleHRD
cmVhdGUobnVsbHB0ciwgd2lkdGgsIGhlaWdodCwgOCwgd2lkdGggKiA0LCBjb2xvclNwYWNlLCBr
Q0dJbWFnZUFscGhhTm9uZVNraXBMYXN0KTsKKyAgICBhdXRvIGNvbnRleHQgPSBhZG9wdENGKENH
Qml0bWFwQ29udGV4dENyZWF0ZShudWxscHRyLCB3aWR0aCwgaGVpZ2h0LCA4LCB3aWR0aCAqIDQs
IGNvbG9yU3BhY2UsIGtDR0ltYWdlQWxwaGFOb25lU2tpcExhc3QpKTsKICAgICBDR0NvbG9yU3Bh
Y2VSZWxlYXNlKGNvbG9yU3BhY2UpOwogICAgIFR5cGUgdHlwZSA9IFR5cGU6OlRydWVUeXBlOwog
ICAgIGNvbnN0IHN0ZDo6dmVjdG9yPHVpbnQ4X3Q+IGZvbnRWZWN0b3IgPSBnZW5lcmF0ZUZvbnQo
dHlwZSk7CkBAIC0xMzEsNDkgKzExMiw0MCBAQCBpbnQgbWFpbihpbnQgYXJnYywgY29uc3QgY2hh
ciAqIGFyZ3ZbXSkKICAgICAgICAgb3V0cHV0RmlsZSA8PCBiOwogICAgIG91dHB1dEZpbGUuY2xv
c2UoKTsKICAgICAKLSAgICBDRkRhdGFSZWYgZm9udERhdGEgPSBDRkRhdGFDcmVhdGUoa0NGQWxs
b2NhdG9yRGVmYXVsdCwgZm9udFZlY3Rvci5kYXRhKCksIGZvbnRWZWN0b3Iuc2l6ZSgpKTsKLSAg
ICBDVEZvbnREZXNjcmlwdG9yUmVmIGZvbnREZXNjcmlwdG9yID0gQ1RGb250TWFuYWdlckNyZWF0
ZUZvbnREZXNjcmlwdG9yRnJvbURhdGEoZm9udERhdGEpOwotICAgIENGUmVsZWFzZShmb250RGF0
YSk7CisgICAgYXV0byBmb250RGF0YSA9IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlKGtDRkFsbG9jYXRv
ckRlZmF1bHQsIGZvbnRWZWN0b3IuZGF0YSgpLCBmb250VmVjdG9yLnNpemUoKSkpOworICAgIGF1
dG8gZm9udERlc2NyaXB0b3IgPSBhZG9wdENGKENURm9udE1hbmFnZXJDcmVhdGVGb250RGVzY3Jp
cHRvckZyb21EYXRhKGZvbnREYXRhLmdldCgpKSk7CiAKICAgICBpZiAodHlwZSA9PSBUeXBlOjpP
cGVuVHlwZSkgewogICAgICAgICBDRlR5cGVSZWYgZmVhdHVyZVZhbHVlc09wZW5UeXBlW10gPSB7
IENGU1RSKCJsaWdhIiksIENGU1RSKCJjbGlnIiksIENGU1RSKCJkbGlnIiksIENGU1RSKCJobGln
IiksIENGU1RSKCJjYWx0IiksIENGU1RSKCJzdWJzIiksIENGU1RSKCJzdXBzIiksIENGU1RSKCJz
bWNwIiksIENGU1RSKCJjMnNjIiksIENGU1RSKCJwY2FwIiksIENGU1RSKCJjMnBjIiksIENGU1RS
KCJ1bmljIiksIENGU1RSKCJ0aXRsIiksIENGU1RSKCJvbnVtIiksIENGU1RSKCJwbnVtIiksIENG
U1RSKCJ0bnVtIiksIENGU1RSKCJmcmFjIiksIENGU1RSKCJhZnJjIiksIENGU1RSKCJvcmRuIiks
IENGU1RSKCJ6ZXJvIiksIENGU1RSKCJoaXN0IiksIENGU1RSKCJqcDc4IiksIENGU1RSKCJqcDgz
IiksIENGU1RSKCJqcDkwIiksIENGU1RSKCJqcDA0IiksIENGU1RSKCJzbXBsIiksIENGU1RSKCJ0
cmFkIiksIENGU1RSKCJmd2lkIiksIENGU1RSKCJwd2lkIiksIENGU1RSKCJydWJ5IikgfTsKLSAg
ICAgICAgQ0ZBcnJheVJlZiBmZWF0dXJlcyA9IENGQXJyYXlDcmVhdGUoa0NGQWxsb2NhdG9yRGVm
YXVsdCwgZmVhdHVyZVZhbHVlc09wZW5UeXBlLCAzMCwgJmtDRlR5cGVBcnJheUNhbGxCYWNrcyk7
Ci0KLSAgICAgICAgZm9yIChDRkluZGV4IGkgPSAwOyBpIDwgQ0ZBcnJheUdldENvdW50KGZlYXR1
cmVzKTsgKytpKSB7Ci0gICAgICAgICAgICBDRlN0cmluZ1JlZiBmZWF0dXJlID0gc3RhdGljX2Nh
c3Q8Q0ZTdHJpbmdSZWY+KENGQXJyYXlHZXRWYWx1ZUF0SW5kZXgoZmVhdHVyZXMsIGkpKTsKLSAg
ICAgICAgICAgIENURm9udERlc2NyaXB0b3JSZWYgbW9kaWZpZWRGb250RGVzY3JpcHRvciA9IGNv
bnN0cnVjdEZvbnRXaXRoT3BlblR5cGVGZWF0dXJlKGZvbnREZXNjcmlwdG9yLCBmZWF0dXJlLCAx
KTsKLSAgICAgICAgICAgIENGTXV0YWJsZVN0cmluZ1JlZiBwcmVmaXggPSBDRlN0cmluZ0NyZWF0
ZU11dGFibGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgMCk7Ci0gICAgICAgICAgICBDRlN0cmluZ0Fw
cGVuZChwcmVmaXgsIGZlYXR1cmUpOwotICAgICAgICAgICAgQ0ZTdHJpbmdBcHBlbmQocHJlZml4
LCBDRlNUUigiICAob24pOiAiKSk7Ci0gICAgICAgICAgICBkcmF3VGV4dChjb250ZXh0LCBtb2Rp
ZmllZEZvbnREZXNjcmlwdG9yLCBwcmVmaXgsIENHUG9pbnRNYWtlKDI1LCAxOTUwIC0gNTAgKiBp
KSk7Ci0gICAgICAgICAgICBDRlJlbGVhc2UocHJlZml4KTsKLSAgICAgICAgICAgIENGUmVsZWFz
ZShtb2RpZmllZEZvbnREZXNjcmlwdG9yKTsKLQotICAgICAgICAgICAgbW9kaWZpZWRGb250RGVz
Y3JpcHRvciA9IGNvbnN0cnVjdEZvbnRXaXRoT3BlblR5cGVGZWF0dXJlKGZvbnREZXNjcmlwdG9y
LCBmZWF0dXJlLCAwKTsKLSAgICAgICAgICAgIHByZWZpeCA9IENGU3RyaW5nQ3JlYXRlTXV0YWJs
ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAwKTsKLSAgICAgICAgICAgIENGU3RyaW5nQXBwZW5kKHBy
ZWZpeCwgZmVhdHVyZSk7Ci0gICAgICAgICAgICBDRlN0cmluZ0FwcGVuZChwcmVmaXgsIENGU1RS
KCIgKG9mZik6ICIpKTsKLSAgICAgICAgICAgIGRyYXdUZXh0KGNvbnRleHQsIG1vZGlmaWVkRm9u
dERlc2NyaXB0b3IsIHByZWZpeCwgQ0dQb2ludE1ha2UoMjUsIDE5MjUgLSA1MCAqIGkpKTsKLSAg
ICAgICAgICAgIENGUmVsZWFzZShwcmVmaXgpOwotICAgICAgICAgICAgQ0ZSZWxlYXNlKG1vZGlm
aWVkRm9udERlc2NyaXB0b3IpOworICAgICAgICBhdXRvIGZlYXR1cmVzID0gYWRvcHRDRihDRkFy
cmF5Q3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGZlYXR1cmVWYWx1ZXNPcGVuVHlwZSwgMzAs
ICZrQ0ZUeXBlQXJyYXlDYWxsQmFja3MpKTsKKworICAgICAgICBmb3IgKENGSW5kZXggaSA9IDA7
IGkgPCBDRkFycmF5R2V0Q291bnQoZmVhdHVyZXMuZ2V0KCkpOyArK2kpIHsKKyAgICAgICAgICAg
IENGU3RyaW5nUmVmIGZlYXR1cmUgPSBzdGF0aWNfY2FzdDxDRlN0cmluZ1JlZj4oQ0ZBcnJheUdl
dFZhbHVlQXRJbmRleChmZWF0dXJlcy5nZXQoKSwgaSkpOworICAgICAgICAgICAgYXV0byBtb2Rp
ZmllZEZvbnREZXNjcmlwdG9yID0gY29uc3RydWN0Rm9udFdpdGhPcGVuVHlwZUZlYXR1cmUoZm9u
dERlc2NyaXB0b3IuZ2V0KCksIGZlYXR1cmUsIDEpOworICAgICAgICAgICAgYXV0byBwcmVmaXgg
PSBhZG9wdENGKENGU3RyaW5nQ3JlYXRlTXV0YWJsZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAwKSk7
CisgICAgICAgICAgICBDRlN0cmluZ0FwcGVuZChwcmVmaXguZ2V0KCksIGZlYXR1cmUpOworICAg
ICAgICAgICAgQ0ZTdHJpbmdBcHBlbmQocHJlZml4LmdldCgpLCBDRlNUUigiICAob24pOiAiKSk7
CisgICAgICAgICAgICBkcmF3VGV4dChjb250ZXh0LmdldCgpLCBtb2RpZmllZEZvbnREZXNjcmlw
dG9yLmdldCgpLCBwcmVmaXguZ2V0KCksIENHUG9pbnRNYWtlKDI1LCAxOTUwIC0gNTAgKiBpKSk7
CisKKyAgICAgICAgICAgIG1vZGlmaWVkRm9udERlc2NyaXB0b3IgPSBjb25zdHJ1Y3RGb250V2l0
aE9wZW5UeXBlRmVhdHVyZShmb250RGVzY3JpcHRvci5nZXQoKSwgZmVhdHVyZSwgMCk7CisgICAg
ICAgICAgICBwcmVmaXggPSBhZG9wdENGKENGU3RyaW5nQ3JlYXRlTXV0YWJsZShrQ0ZBbGxvY2F0
b3JEZWZhdWx0LCAwKSk7CisgICAgICAgICAgICBDRlN0cmluZ0FwcGVuZChwcmVmaXguZ2V0KCks
IGZlYXR1cmUpOworICAgICAgICAgICAgQ0ZTdHJpbmdBcHBlbmQocHJlZml4LmdldCgpLCBDRlNU
UigiIChvZmYpOiAiKSk7CisgICAgICAgICAgICBkcmF3VGV4dChjb250ZXh0LmdldCgpLCBtb2Rp
ZmllZEZvbnREZXNjcmlwdG9yLmdldCgpLCBwcmVmaXguZ2V0KCksIENHUG9pbnRNYWtlKDI1LCAx
OTI1IC0gNTAgKiBpKSk7CiAgICAgICAgIH0KLQotICAgICAgICBDRlJlbGVhc2UoZmVhdHVyZXMp
OwogICAgIH0gZWxzZSB7CiAgICAgICAgIF9fYmxvY2sgaW50IGkgPSAwOwogICAgICAgICB2b2lk
ICheaGFuZGxlcikodWludDE2X3QgdHlwZSwgQ0ZTdHJpbmdSZWYgdHlwZVN0cmluZywgdWludDE2
X3Qgc2VsZWN0b3IsIENGU3RyaW5nUmVmIHNlbGVjdG9yU3RyaW5nKSA9IF4odWludDE2X3QgdHlw
ZSwgQ0ZTdHJpbmdSZWYgdHlwZVN0cmluZywgdWludDE2X3Qgc2VsZWN0b3IsIENGU3RyaW5nUmVm
IHNlbGVjdG9yU3RyaW5nKQogICAgICAgICB7Ci0gICAgICAgICAgICBDVEZvbnREZXNjcmlwdG9y
UmVmIG1vZGlmaWVkRm9udERlc2NyaXB0b3IgPSBjb25zdHJ1Y3RGb250V2l0aFRydWVUeXBlRmVh
dHVyZShmb250RGVzY3JpcHRvciwgdHlwZSwgc2VsZWN0b3IpOwotICAgICAgICAgICAgQ0ZNdXRh
YmxlU3RyaW5nUmVmIHByZWZpeCA9IENGU3RyaW5nQ3JlYXRlTXV0YWJsZShrQ0ZBbGxvY2F0b3JE
ZWZhdWx0LCAwKTsKLSAgICAgICAgICAgIENGU3RyaW5nQXBwZW5kKHByZWZpeCwgdHlwZVN0cmlu
Zyk7Ci0gICAgICAgICAgICBDRlN0cmluZ0FwcGVuZChwcmVmaXgsIENGU1RSKCI6ICIpKTsKLSAg
ICAgICAgICAgIENGU3RyaW5nQXBwZW5kKHByZWZpeCwgc2VsZWN0b3JTdHJpbmcpOwotICAgICAg
ICAgICAgQ0ZTdHJpbmdBcHBlbmQocHJlZml4LCBDRlNUUigiOiAiKSk7Ci0gICAgICAgICAgICB3
aGlsZSAoQ0ZTdHJpbmdHZXRMZW5ndGgocHJlZml4KSA8IDY1KQotICAgICAgICAgICAgICAgIENG
U3RyaW5nQXBwZW5kKHByZWZpeCwgQ0ZTVFIoIiAiKSk7Ci0gICAgICAgICAgICBkcmF3VGV4dChj
b250ZXh0LCBtb2RpZmllZEZvbnREZXNjcmlwdG9yLCBwcmVmaXgsIENHUG9pbnRNYWtlKDI1LCAx
OTUwIC0gNDAgKiBpKSk7Ci0gICAgICAgICAgICBDRlJlbGVhc2UocHJlZml4KTsKLSAgICAgICAg
ICAgIENGUmVsZWFzZShtb2RpZmllZEZvbnREZXNjcmlwdG9yKTsKKyAgICAgICAgICAgIGF1dG8g
bW9kaWZpZWRGb250RGVzY3JpcHRvciA9IGNvbnN0cnVjdEZvbnRXaXRoVHJ1ZVR5cGVGZWF0dXJl
KGZvbnREZXNjcmlwdG9yLmdldCgpLCB0eXBlLCBzZWxlY3Rvcik7CisgICAgICAgICAgICBhdXRv
IHByZWZpeCA9IGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVNdXRhYmxlKGtDRkFsbG9jYXRvckRlZmF1
bHQsIDApKTsKKyAgICAgICAgICAgIENGU3RyaW5nQXBwZW5kKHByZWZpeC5nZXQoKSwgdHlwZVN0
cmluZyk7CisgICAgICAgICAgICBDRlN0cmluZ0FwcGVuZChwcmVmaXguZ2V0KCksIENGU1RSKCI6
ICIpKTsKKyAgICAgICAgICAgIENGU3RyaW5nQXBwZW5kKHByZWZpeC5nZXQoKSwgc2VsZWN0b3JT
dHJpbmcpOworICAgICAgICAgICAgQ0ZTdHJpbmdBcHBlbmQocHJlZml4LmdldCgpLCBDRlNUUigi
OiAiKSk7CisgICAgICAgICAgICB3aGlsZSAoQ0ZTdHJpbmdHZXRMZW5ndGgocHJlZml4LmdldCgp
KSA8IDY1KQorICAgICAgICAgICAgICAgIENGU3RyaW5nQXBwZW5kKHByZWZpeC5nZXQoKSwgQ0ZT
VFIoIiAiKSk7CisgICAgICAgICAgICBkcmF3VGV4dChjb250ZXh0LmdldCgpLCBtb2RpZmllZEZv
bnREZXNjcmlwdG9yLmdldCgpLCBwcmVmaXguZ2V0KCksIENHUG9pbnRNYWtlKDI1LCAxOTUwIC0g
NDAgKiBpKSk7CiAgICAgICAgICAgICArK2k7CiAgICAgICAgIH07CiAgICAgICAgIGhhbmRsZXIo
a0xpZ2F0dXJlc1R5cGUsIENGU1RSKCJrTGlnYXR1cmVzVHlwZSIpLCBrQ29tbW9uTGlnYXR1cmVz
T25TZWxlY3RvciwgQ0ZTVFIoImtDb21tb25MaWdhdHVyZXNPblNlbGVjdG9yIikpOwpAQCAtMjE0
LDE1ICsxODYsMTAgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNvbnN0IGNoYXIgKiBhcmd2W10pCiAg
ICAgICAgIGhhbmRsZXIoa1J1YnlLYW5hVHlwZSwgQ0ZTVFIoImtSdWJ5S2FuYVR5cGUiKSwga1J1
YnlLYW5hT25TZWxlY3RvciwgQ0ZTVFIoImtSdWJ5S2FuYU9uU2VsZWN0b3IiKSk7CiAgICAgfQog
Ci0gICAgQ0ZSZWxlYXNlKGZvbnREZXNjcmlwdG9yKTsKLSAgICBDR0ltYWdlUmVmIGltYWdlID0g
Q0dCaXRtYXBDb250ZXh0Q3JlYXRlSW1hZ2UoY29udGV4dCk7Ci0gICAgQ0dDb250ZXh0UmVsZWFz
ZShjb250ZXh0KTsKLSAgICBDRlVSTFJlZiB1cmwgPSBDRlVSTENyZWF0ZVdpdGhGaWxlU3lzdGVt
UGF0aChrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBDRlNUUigiL1ZvbHVtZXMvRGF0YS9ob21lL21tYXhm
aWVsZC90bXAvb3V0cHV0LnBuZyIpLCBrQ0ZVUkxQT1NJWFBhdGhTdHlsZSwgRkFMU0UpOwotICAg
IENHSW1hZ2VEZXN0aW5hdGlvblJlZiBpbWFnZURlc3RpbmF0aW9uID0gQ0dJbWFnZURlc3RpbmF0
aW9uQ3JlYXRlV2l0aFVSTCh1cmwsIGtVVFR5cGVQTkcsIDEsIG51bGxwdHIpOwotICAgIENGUmVs
ZWFzZSh1cmwpOwotICAgIENHSW1hZ2VEZXN0aW5hdGlvbkFkZEltYWdlKGltYWdlRGVzdGluYXRp
b24sIGltYWdlLCBudWxscHRyKTsKLSAgICBDR0ltYWdlUmVsZWFzZShpbWFnZSk7Ci0gICAgQ0dJ
bWFnZURlc3RpbmF0aW9uRmluYWxpemUoaW1hZ2VEZXN0aW5hdGlvbik7Ci0gICAgQ0ZSZWxlYXNl
KGltYWdlRGVzdGluYXRpb24pOworICAgIGF1dG8gaW1hZ2UgPSBhZG9wdENGKENHQml0bWFwQ29u
dGV4dENyZWF0ZUltYWdlKGNvbnRleHQuZ2V0KCkpKTsKKyAgICBhdXRvIHVybCA9IGFkb3B0Q0Yo
Q0ZVUkxDcmVhdGVXaXRoRmlsZVN5c3RlbVBhdGgoa0NGQWxsb2NhdG9yRGVmYXVsdCwgQ0ZTVFIo
Ii9Wb2x1bWVzL0RhdGEvaG9tZS9tbWF4ZmllbGQvdG1wL291dHB1dC5wbmciKSwga0NGVVJMUE9T
SVhQYXRoU3R5bGUsIEZBTFNFKSk7CisgICAgYXV0byBpbWFnZURlc3RpbmF0aW9uID0gYWRvcHRD
RihDR0ltYWdlRGVzdGluYXRpb25DcmVhdGVXaXRoVVJMKHVybC5nZXQoKSwga1VUVHlwZVBORywg
MSwgbnVsbHB0cikpOworICAgIENHSW1hZ2VEZXN0aW5hdGlvbkFkZEltYWdlKGltYWdlRGVzdGlu
YXRpb24uZ2V0KCksIGltYWdlLmdldCgpLCBudWxscHRyKTsKKyAgICBDR0ltYWdlRGVzdGluYXRp
b25GaW5hbGl6ZShpbWFnZURlc3RpbmF0aW9uLmdldCgpKTsKICAgICByZXR1cm4gMDsKIH0KZGlm
ZiAtLWdpdCBhL1Rvb2xzL0ltYWdlRGlmZi9JbWFnZURpZmYueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiBiL1Rvb2xzL0ltYWdlRGlmZi9JbWFnZURpZmYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agppbmRleCA5ODU0ZjIyZGJhZmI1ZmIyNmU1ODJkN2U1OTY0ODEzYjg5ZWVlOTFkLi5jMDNhZGRm
ZDFjZGMxOTkzYzg2YmMxMzcwNTAyN2FkMzI1ZWU3MGQyIDEwMDY0NAotLS0gYS9Ub29scy9JbWFn
ZURpZmYvSW1hZ2VEaWZmLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMvSW1h
Z2VEaWZmL0ltYWdlRGlmZi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNzcsNiArMTc3
LDcgQEAKIAkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwogCQkJYmFzZUNvbmZpZ3VyYXRp
b25SZWZlcmVuY2UgPSAzMURGNDJDNjFFQkJCQkI5MDA5NkVENDQgLyogSW1hZ2VEaWZmLnhjY29u
ZmlnICovOwogCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlDTEFOR19DWFhfTEFOR1VBR0VfU1RB
TkRBUkQgPSAiYysrMTciOwogCQkJfTsKIAkJCW5hbWUgPSBEZWJ1ZzsKIAkJfTsKQEAgLTE4NCw2
ICsxODUsNyBAQAogCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CiAJCQliYXNlQ29uZmln
dXJhdGlvblJlZmVyZW5jZSA9IDMxREY0MkM2MUVCQkJCQjkwMDk2RUQ0NCAvKiBJbWFnZURpZmYu
eGNjb25maWcgKi87CiAJCQlidWlsZFNldHRpbmdzID0geworCQkJCUNMQU5HX0NYWF9MQU5HVUFH
RV9TVEFOREFSRCA9ICJjKysxNyI7CiAJCQl9OwogCQkJbmFtZSA9IFJlbGVhc2U7CiAJCX07CkBA
IC0xOTEsNiArMTkzLDcgQEAKIAkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwogCQkJYmFz
ZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2UgPSAzMURGNDJDNjFFQkJCQkI5MDA5NkVENDQgLyogSW1h
Z2VEaWZmLnhjY29uZmlnICovOwogCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlDTEFOR19DWFhf
TEFOR1VBR0VfU1RBTkRBUkQgPSAiYysrMTciOwogCQkJfTsKIAkJCW5hbWUgPSBQcm9kdWN0aW9u
OwogCQl9OwpkaWZmIC0tZ2l0IGEvVG9vbHMvSW1hZ2VEaWZmL1BsYXRmb3JtSW1hZ2UuaCBiL1Rv
b2xzL0ltYWdlRGlmZi9QbGF0Zm9ybUltYWdlLmgKaW5kZXggYTYzMmYzNGU4NDU1Mzg1ZDc2OTZh
MTMyZDk3MmYxNDA2OTczMGIzYi4uNWMzOGQwN2M2OTYzYzRlYTAzNGI3ZjI0NzVlMmYzM2NmMTZi
ODNkOSAxMDA2NDQKLS0tIGEvVG9vbHMvSW1hZ2VEaWZmL1BsYXRmb3JtSW1hZ2UuaAorKysgYi9U
b29scy9JbWFnZURpZmYvUGxhdGZvcm1JbWFnZS5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaWYgZGVm
aW5lZChVU0VfQ0FJUk8pICYmIFVTRV9DQUlSTwogdHlwZWRlZiBzdHJ1Y3QgX2NhaXJvX3N1cmZh
Y2UgY2Fpcm9fc3VyZmFjZV90OwogI2Vsc2UKKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiB0
eXBlZGVmIHN0cnVjdCBDR0ltYWdlICpDR0ltYWdlUmVmOwogI2VuZGlmCiAKQEAgLTQyLDcgKzQz
LDcgQEAgcHVibGljOgogI2lmIGRlZmluZWQoVVNFX0NBSVJPKSAmJiBVU0VfQ0FJUk8KICAgICBQ
bGF0Zm9ybUltYWdlKGNhaXJvX3N1cmZhY2VfdCopOwogI2Vsc2UKLSAgICBQbGF0Zm9ybUltYWdl
KENHSW1hZ2VSZWYpOworICAgIFBsYXRmb3JtSW1hZ2UoUmV0YWluUHRyPENHSW1hZ2VSZWY+JiYp
OwogI2VuZGlmCiAgICAgflBsYXRmb3JtSW1hZ2UoKTsKIApAQCAtNTksOCArNjAsOCBAQCBwcml2
YXRlOgogI2lmIGRlZmluZWQoVVNFX0NBSVJPKSAmJiBVU0VfQ0FJUk8KICAgICBjYWlyb19zdXJm
YWNlX3QqIG1faW1hZ2U7CiAjZWxzZQotICAgIENHSW1hZ2VSZWYgbV9pbWFnZTsKLSAgICBtdXRh
YmxlIHZvaWQqIG1fYnVmZmVyIHsgbnVsbHB0ciB9OworICAgIFJldGFpblB0cjxDR0ltYWdlUmVm
PiBtX2ltYWdlOworICAgIG11dGFibGUgc3RkOjp1bmlxdWVfcHRyPHVuc2lnbmVkIGNoYXJbXT4g
bV9idWZmZXI7CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0ltYWdlRGlmZi9jZy9Q
bGF0Zm9ybUltYWdlQ0cuY3BwIGIvVG9vbHMvSW1hZ2VEaWZmL2NnL1BsYXRmb3JtSW1hZ2VDRy5j
cHAKaW5kZXggZjAzYzM1NzkyYWQwZDM0NDFlZmU4NWFkZGRiZjA3ZTdjNzZmNTFkYy4uYjg1NTM0
NzhmZThmNDY2N2E2MTAzMWY0YWM3M2ViNWRkODczYWI5ZSAxMDA2NDQKLS0tIGEvVG9vbHMvSW1h
Z2VEaWZmL2NnL1BsYXRmb3JtSW1hZ2VDRy5jcHAKKysrIGIvVG9vbHMvSW1hZ2VEaWZmL2NnL1Bs
YXRmb3JtSW1hZ2VDRy5jcHAKQEAgLTc0LDU0ICs3NCw0NSBAQCBuYW1lc3BhY2UgSW1hZ2VEaWZm
IHsKIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybUltYWdlPiBQbGF0Zm9ybUltYWdlOjpjcmVhdGVG
cm9tU3RkaW4oc2l6ZV90IGltYWdlU2l6ZSkKIHsKICAgICB1bnNpZ25lZCBjaGFyIGJ1ZmZlclsy
MDQ4XTsKLSAgICBDRk11dGFibGVEYXRhUmVmIGRhdGEgPSBDRkRhdGFDcmVhdGVNdXRhYmxlKDAs
IGltYWdlU2l6ZSk7CisgICAgYXV0byBkYXRhID0gYWRvcHRDRihDRkRhdGFDcmVhdGVNdXRhYmxl
KDAsIGltYWdlU2l6ZSkpOwogCiAgICAgc2l6ZV90IGJ5dGVzUmVtYWluaW5nID0gaW1hZ2VTaXpl
OwogICAgIHdoaWxlIChieXRlc1JlbWFpbmluZyA+IDApIHsKICAgICAgICAgc2l6ZV90IGJ5dGVz
VG9SZWFkID0gc3RkOjptaW48c2l6ZV90PihieXRlc1JlbWFpbmluZywgMjA0OCk7CiAgICAgICAg
IHNpemVfdCBieXRlc1JlYWQgPSBmcmVhZChidWZmZXIsIDEsIGJ5dGVzVG9SZWFkLCBzdGRpbik7
Ci0gICAgICAgIENGRGF0YUFwcGVuZEJ5dGVzKGRhdGEsIGJ1ZmZlciwgc3RhdGljX2Nhc3Q8Q0ZJ
bmRleD4oYnl0ZXNSZWFkKSk7CisgICAgICAgIENGRGF0YUFwcGVuZEJ5dGVzKGRhdGEuZ2V0KCks
IGJ1ZmZlciwgc3RhdGljX2Nhc3Q8Q0ZJbmRleD4oYnl0ZXNSZWFkKSk7CiAgICAgICAgIGJ5dGVz
UmVtYWluaW5nIC09IHN0YXRpY19jYXN0PGludD4oYnl0ZXNSZWFkKTsKICAgICB9Ci0gICAgQ0dE
YXRhUHJvdmlkZXJSZWYgZGF0YVByb3ZpZGVyID0gQ0dEYXRhUHJvdmlkZXJDcmVhdGVXaXRoQ0ZE
YXRhKGRhdGEpOwotICAgIENGUmVsZWFzZShkYXRhKTsKLSAgICBDR0ltYWdlUmVmIGltYWdlID0g
Q0dJbWFnZUNyZWF0ZVdpdGhQTkdEYXRhUHJvdmlkZXIoZGF0YVByb3ZpZGVyLCAwLCBmYWxzZSwg
a0NHUmVuZGVyaW5nSW50ZW50RGVmYXVsdCk7Ci0gICAgQ0ZSZWxlYXNlKGRhdGFQcm92aWRlcik7
Ci0KLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybUltYWdlPihpbWFnZSk7Cisg
ICAgYXV0byBkYXRhUHJvdmlkZXIgPSBhZG9wdENGKENHRGF0YVByb3ZpZGVyQ3JlYXRlV2l0aENG
RGF0YShkYXRhLmdldCgpKSk7CisgICAgYXV0byBpbWFnZSA9IGFkb3B0Q0YoQ0dJbWFnZUNyZWF0
ZVdpdGhQTkdEYXRhUHJvdmlkZXIoZGF0YVByb3ZpZGVyLmdldCgpLCAwLCBmYWxzZSwga0NHUmVu
ZGVyaW5nSW50ZW50RGVmYXVsdCkpOworICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRm
b3JtSW1hZ2U+KFdURk1vdmUoaW1hZ2UpKTsKIH0KIAogc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3Jt
SW1hZ2U+IFBsYXRmb3JtSW1hZ2U6OmNyZWF0ZUZyb21EaWZmRGF0YSh2b2lkKiBkYXRhLCBzaXpl
X3Qgd2lkdGgsIHNpemVfdCBoZWlnaHQpCiB7CiAgICAgc3RhdGljIENHQ29sb3JTcGFjZVJlZiBk
aWZmQ29sb3JzcGFjZSA9IENHQ29sb3JTcGFjZUNyZWF0ZURldmljZUdyYXkoKTsKLSAgICBDR0Rh
dGFQcm92aWRlclJlZiBwcm92aWRlciA9IENHRGF0YVByb3ZpZGVyQ3JlYXRlV2l0aERhdGEoMCwg
ZGF0YSwgd2lkdGggKiBoZWlnaHQsIFtdKHZvaWQqLCBjb25zdCB2b2lkKiBkYXRhLCBzaXplX3Qp
IHsKKyAgICBhdXRvIHByb3ZpZGVyID0gYWRvcHRDRihDR0RhdGFQcm92aWRlckNyZWF0ZVdpdGhE
YXRhKDAsIGRhdGEsIHdpZHRoICogaGVpZ2h0LCBbXSh2b2lkKiwgY29uc3Qgdm9pZCogZGF0YSwg
c2l6ZV90KSB7CiAgICAgICAgIGZyZWUoY29uc3RfY2FzdDx2b2lkKj4oZGF0YSkpOwotICAgIH0p
OwotICAgIENHSW1hZ2VSZWYgaW1hZ2UgPSBDR0ltYWdlQ3JlYXRlKHdpZHRoLCBoZWlnaHQsIDgs
IDgsIHdpZHRoLCBkaWZmQ29sb3JzcGFjZSwgMCwgcHJvdmlkZXIsIDAsIGZhbHNlLCBrQ0dSZW5k
ZXJpbmdJbnRlbnREZWZhdWx0KTsKLSAgICBDRlJlbGVhc2UocHJvdmlkZXIpOwotCi0gICAgcmV0
dXJuIHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1JbWFnZT4oaW1hZ2UpOworICAgIH0pKTsKKyAg
ICBhdXRvIGltYWdlID0gYWRvcHRDRihDR0ltYWdlQ3JlYXRlKHdpZHRoLCBoZWlnaHQsIDgsIDgs
IHdpZHRoLCBkaWZmQ29sb3JzcGFjZSwgMCwgcHJvdmlkZXIuZ2V0KCksIDAsIGZhbHNlLCBrQ0dS
ZW5kZXJpbmdJbnRlbnREZWZhdWx0KSk7CisgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UGxh
dGZvcm1JbWFnZT4oV1RGTW92ZShpbWFnZSkpOwogfQogCi1QbGF0Zm9ybUltYWdlOjpQbGF0Zm9y
bUltYWdlKENHSW1hZ2VSZWYgaW1hZ2UpCi0gICAgOiBtX2ltYWdlKGltYWdlKQorUGxhdGZvcm1J
bWFnZTo6UGxhdGZvcm1JbWFnZShSZXRhaW5QdHI8Q0dJbWFnZVJlZj4mJiBpbWFnZSkKKyAgICA6
IG1faW1hZ2UoV1RGTW92ZShpbWFnZSkpCiB7CiB9CiAKLVBsYXRmb3JtSW1hZ2U6On5QbGF0Zm9y
bUltYWdlKCkKLXsKLSAgICBDRlJlbGVhc2UobV9pbWFnZSk7Ci0gICAgZnJlZShtX2J1ZmZlcik7
Ci19CitQbGF0Zm9ybUltYWdlOjp+UGxhdGZvcm1JbWFnZSgpID0gZGVmYXVsdDsKIAogc2l6ZV90
IFBsYXRmb3JtSW1hZ2U6OndpZHRoKCkgY29uc3QKIHsKLSAgICByZXR1cm4gQ0dJbWFnZUdldFdp
ZHRoKG1faW1hZ2UpOworICAgIHJldHVybiBDR0ltYWdlR2V0V2lkdGgobV9pbWFnZS5nZXQoKSk7
CiB9CiAKIHNpemVfdCBQbGF0Zm9ybUltYWdlOjpoZWlnaHQoKSBjb25zdAogewotICAgIHJldHVy
biBDR0ltYWdlR2V0SGVpZ2h0KG1faW1hZ2UpOworICAgIHJldHVybiBDR0ltYWdlR2V0SGVpZ2h0
KG1faW1hZ2UuZ2V0KCkpOwogfQogCiBzaXplX3QgUGxhdGZvcm1JbWFnZTo6cm93Qnl0ZXMoKSBj
b25zdApAQCAtMTMxLDcgKzEyMiw3IEBAIHNpemVfdCBQbGF0Zm9ybUltYWdlOjpyb3dCeXRlcygp
IGNvbnN0CiAKIGJvb2wgUGxhdGZvcm1JbWFnZTo6aGFzQWxwaGEoKSBjb25zdAogewotICAgIENH
SW1hZ2VBbHBoYUluZm8gaW5mbyA9IENHSW1hZ2VHZXRBbHBoYUluZm8obV9pbWFnZSk7CisgICAg
Q0dJbWFnZUFscGhhSW5mbyBpbmZvID0gQ0dJbWFnZUdldEFscGhhSW5mbyhtX2ltYWdlLmdldCgp
KTsKICAgICByZXR1cm4gKGluZm8gPj0ga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRMYXN0KSAm
JiAoaW5mbyA8PSBrQ0dJbWFnZUFscGhhRmlyc3QpOwogfQogCkBAIC0xNDEsMjMgKzEzMiwyMCBA
QCB1bnNpZ25lZCBjaGFyKiBQbGF0Zm9ybUltYWdlOjpwaXhlbHMoKSBjb25zdAogICAgIHNpemVf
dCBoZWlnaHQgPSB0aGlzLT5oZWlnaHQoKTsKICAgICBzaXplX3Qgcm93Qnl0ZXMgPSB3aWR0aCAq
IDQ7CiAKLSAgICBtX2J1ZmZlciA9IGNhbGxvYyhoZWlnaHQsIHJvd0J5dGVzKTsKLSAgICBDR0Nv
bnRleHRSZWYgY29udGV4dCA9IENHQml0bWFwQ29udGV4dENyZWF0ZShtX2J1ZmZlciwgd2lkdGgs
IGhlaWdodCwgOCwgcm93Qnl0ZXMsIENHSW1hZ2VHZXRDb2xvclNwYWNlKG1faW1hZ2UpLCBrQ0dJ
bWFnZUFscGhhUHJlbXVsdGlwbGllZEZpcnN0IHwga0NHQml0bWFwQnl0ZU9yZGVyMzJIb3N0KTsK
LSAgICBDR0NvbnRleHREcmF3SW1hZ2UoY29udGV4dCwgQ0dSZWN0TWFrZSgwLCAwLCB3aWR0aCwg
aGVpZ2h0KSwgbV9pbWFnZSk7Ci0gICAgQ0ZSZWxlYXNlKGNvbnRleHQpOwotICAgIHJldHVybiBy
ZWludGVycHJldF9jYXN0PHVuc2lnbmVkIGNoYXIqPihtX2J1ZmZlcik7CisgICAgbV9idWZmZXIg
PSBzdGQ6OnVuaXF1ZV9wdHI8dW5zaWduZWQgY2hhcltdPihyZWludGVycHJldF9jYXN0PHVuc2ln
bmVkIGNoYXIqPihjYWxsb2MoaGVpZ2h0LCByb3dCeXRlcykpKTsKKyAgICBhdXRvIGNvbnRleHQg
PSBhZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0ZShtX2J1ZmZlci5nZXQoKSwgd2lkdGgsIGhl
aWdodCwgOCwgcm93Qnl0ZXMsIENHSW1hZ2VHZXRDb2xvclNwYWNlKG1faW1hZ2UuZ2V0KCkpLCBr
Q0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZEZpcnN0IHwga0NHQml0bWFwQnl0ZU9yZGVyMzJIb3N0
KSk7CisgICAgQ0dDb250ZXh0RHJhd0ltYWdlKGNvbnRleHQuZ2V0KCksIENHUmVjdE1ha2UoMCwg
MCwgd2lkdGgsIGhlaWdodCksIG1faW1hZ2UuZ2V0KCkpOworICAgIHJldHVybiBtX2J1ZmZlci5n
ZXQoKTsKIH0KIAogdm9pZCBQbGF0Zm9ybUltYWdlOjp3cml0ZUFzUE5HVG9TdGRvdXQoKQogewot
ICAgIENGTXV0YWJsZURhdGFSZWYgaW1hZ2VEYXRhID0gQ0ZEYXRhQ3JlYXRlTXV0YWJsZSgwLCAw
KTsKLSAgICBDR0ltYWdlRGVzdGluYXRpb25SZWYgaW1hZ2VEZXN0ID0gQ0dJbWFnZURlc3RpbmF0
aW9uQ3JlYXRlV2l0aERhdGEoaW1hZ2VEYXRhLCBrVVRUeXBlUE5HLCAxLCAwKTsKLSAgICBDR0lt
YWdlRGVzdGluYXRpb25BZGRJbWFnZShpbWFnZURlc3QsIG1faW1hZ2UsIDApOwotICAgIENHSW1h
Z2VEZXN0aW5hdGlvbkZpbmFsaXplKGltYWdlRGVzdCk7Ci0gICAgcHJpbnRmKCJDb250ZW50LUxl
bmd0aDogJSIgRk9STUFUX1NJWkVfVCAiXG4iLCBzdGF0aWNfY2FzdDxzaXplX3Q+KENGRGF0YUdl
dExlbmd0aChpbWFnZURhdGEpKSk7Ci0gICAgZndyaXRlKENGRGF0YUdldEJ5dGVQdHIoaW1hZ2VE
YXRhKSwgMSwgQ0ZEYXRhR2V0TGVuZ3RoKGltYWdlRGF0YSksIHN0ZG91dCk7Ci0gICAgQ0ZSZWxl
YXNlKGltYWdlRGF0YSk7Ci0gICAgQ0ZSZWxlYXNlKGltYWdlRGVzdCk7CisgICAgYXV0byBpbWFn
ZURhdGEgPSBhZG9wdENGKENGRGF0YUNyZWF0ZU11dGFibGUoMCwgMCkpOworICAgIGF1dG8gaW1h
Z2VEZXN0ID0gYWRvcHRDRihDR0ltYWdlRGVzdGluYXRpb25DcmVhdGVXaXRoRGF0YShpbWFnZURh
dGEuZ2V0KCksIGtVVFR5cGVQTkcsIDEsIDApKTsKKyAgICBDR0ltYWdlRGVzdGluYXRpb25BZGRJ
bWFnZShpbWFnZURlc3QuZ2V0KCksIG1faW1hZ2UuZ2V0KCksIDApOworICAgIENHSW1hZ2VEZXN0
aW5hdGlvbkZpbmFsaXplKGltYWdlRGVzdC5nZXQoKSk7CisgICAgcHJpbnRmKCJDb250ZW50LUxl
bmd0aDogJSIgRk9STUFUX1NJWkVfVCAiXG4iLCBzdGF0aWNfY2FzdDxzaXplX3Q+KENGRGF0YUdl
dExlbmd0aChpbWFnZURhdGEuZ2V0KCkpKSk7CisgICAgZndyaXRlKENGRGF0YUdldEJ5dGVQdHIo
aW1hZ2VEYXRhLmdldCgpKSwgMSwgQ0ZEYXRhR2V0TGVuZ3RoKGltYWdlRGF0YS5nZXQoKSksIHN0
ZG91dCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEltYWdlRGlmZgpkaWZmIC0tZ2l0IGEvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3BwIGIv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2Uu
Y3BwCmluZGV4IDNkYjAyMzQ5MzQxNTM5ZWQ0Mzg3MGU2NDUwNmQ5MzMwNzU0MmMyODkuLjc0NWM0
Y2U4MzVlZGNjMWIzMjBlOTAzZDM2N2Y3NzZhNzVlNDU3MzggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcAorKysg
Yi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFn
ZS5jcHAKQEAgLTc5Niw3ICs3OTYsNyBAQCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZTo6ZHVtcERP
TUFzV2ViQXJjaGl2ZShXS0J1bmRsZUZyYW1lUmVmIGZyYW1lLCBTdHJpbmdCdWlsZAogI2lmIFVT
RShDRikgJiYgIVBMQVRGT1JNKFdJTl9DQUlSTykgJiYgIVVTRShESVJFQ1QyRCkKICAgICBhdXRv
IHdrRGF0YSA9IGFkb3B0V0soV0tCdW5kbGVGcmFtZUNvcHlXZWJBcmNoaXZlKGZyYW1lKSk7CiAg
ICAgYXV0byBjZkRhdGEgPSBhZG9wdENGKENGRGF0YUNyZWF0ZSgwLCBXS0RhdGFHZXRCeXRlcyh3
a0RhdGEuZ2V0KCkpLCBXS0RhdGFHZXRTaXplKHdrRGF0YS5nZXQoKSkpKTsKLSAgICBhdXRvIGNm
U3RyaW5nID0gYWRvcHRDRihXZWJDb3JlVGVzdFN1cHBvcnQ6OmNyZWF0ZVhNTFN0cmluZ0Zyb21X
ZWJBcmNoaXZlRGF0YShjZkRhdGEuZ2V0KCkpKTsKKyAgICBhdXRvIGNmU3RyaW5nID0gV2ViQ29y
ZVRlc3RTdXBwb3J0OjpjcmVhdGVYTUxTdHJpbmdGcm9tV2ViQXJjaGl2ZURhdGEoY2ZEYXRhLmdl
dCgpKTsKICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChjZlN0cmluZy5nZXQoKSk7CiAjZW5kaWYK
IH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvaW9z
L0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRJT1MubW0gYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL2lvcy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50SU9TLm1tCmluZGV4IDQ2YTE1
NzgwZGM1OGQzN2Y5YWRhYmU3MDA5MDFkOTEwZGU5N2QxZjQuLmYwZjliMzg3ZDA2YzQzMDhhZTEz
NjFmMTFkYzkwN2Q0OGJkZjcyNTMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvaW9zL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRJT1MubW0KKysrIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9pb3MvQWNjZXNzaWJpbGl0eVVJRWxl
bWVudElPUy5tbQpAQCAtMTMwLDcgKzEzMCw3IEBAICsgKE5TU3RyaW5nICopc3RyaW5nV2l0aEpT
U3RyaW5nUmVmOihKU1N0cmluZ1JlZilqc1N0cmluZ1JlZgogICAgIGlmICghanNTdHJpbmdSZWYp
CiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgCi0gICAgcmV0dXJuIENGQnJpZGdpbmdSZWxlYXNl
KEpTU3RyaW5nQ29weUNGU3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIGpzU3RyaW5nUmVmKSk7
CisgICAgcmV0dXJuIGFkb3B0Q0YoSlNTdHJpbmdDb3B5Q0ZTdHJpbmcoa0NGQWxsb2NhdG9yRGVm
YXVsdCwganNTdHJpbmdSZWYpKS5icmlkZ2luZ0F1dG9yZWxlYXNlKCk7CiB9CiAKIC0gKEpTUmV0
YWluUHRyPEpTU3RyaW5nUmVmPiljcmVhdGVKU1N0cmluZ1JlZgpkaWZmIC0tZ2l0IGEvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvQWNjZXNzaWJpbGl0eUNvbW1vbk1h
Yy5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0FjY2Vzc2li
aWxpdHlDb21tb25NYWMubW0KaW5kZXggMzU0YThmNjU1NWM2YzAwMjY1ZjU2ODFhNmIzNzE1MmE4
NGE1NjJjMC4uZjhlMmRjZTIyMTAyNzJhZjY2ZGU4YzI3MWZmNDVkM2I3YjU3YzYwZiAxMDA2NDQK
LS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvQWNjZXNzaWJp
bGl0eUNvbW1vbk1hYy5tbQorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL21hYy9BY2Nlc3NpYmlsaXR5Q29tbW9uTWFjLm1tCkBAIC00Myw3ICs0Myw3IEBAICsgKE5T
U3RyaW5nICopc3RyaW5nV2l0aEpTU3RyaW5nUmVmOihKU1N0cmluZ1JlZilqc1N0cmluZ1JlZgog
ICAgIGlmICghanNTdHJpbmdSZWYpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICByZXR1cm4g
Q0ZCcmlkZ2luZ1JlbGVhc2UoSlNTdHJpbmdDb3B5Q0ZTdHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVs
dCwganNTdHJpbmdSZWYpKTsKKyAgICByZXR1cm4gYWRvcHRDRihKU1N0cmluZ0NvcHlDRlN0cmlu
ZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBqc1N0cmluZ1JlZikpLmJyaWRnaW5nQXV0b3JlbGVhc2Uo
KTsKIH0KIAogLSAoSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+KWNyZWF0ZUpTU3RyaW5nUmVmCmRp
ZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9ISURFdmVudEdlbmVyYXRvci5t
bSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL0hJREV2ZW50R2VuZXJhdG9yLm1tCmluZGV4
IDMxYjQ2NTBlMzU2MTE5YzAyNDAxNjY0Y2UwMjc2OTQ4ZGEwMzVlZDguLmY2ODJjYTI5ODc1YjM2
NmViMTZiNWU3OWYwNmRkMGUwYTUxZmJkMDcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvaW9zL0hJREV2ZW50R2VuZXJhdG9yLm1tCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvaW9zL0hJREV2ZW50R2VuZXJhdG9yLm1tCkBAIC0zMTksNyArMzE5LDcgQEAgLSAoSU9ISURF
dmVudFJlZilfY3JlYXRlSU9ISURFdmVudFdpdGhJbmZvOihOU0RpY3Rpb25hcnkgKilpbmZvCiAg
ICAgICAgIGlmIChbdG91Y2hJbmZvW0hJREV2ZW50UHJlc3N1cmVLZXldIGZsb2F0VmFsdWVdKQog
ICAgICAgICAgICAgY2hpbGRFdmVudE1hc2sgfD0ga0lPSElERGlnaXRpemVyRXZlbnRBdHRyaWJ1
dGU7CiAKLSAgICAgICAgSU9ISURFdmVudFJlZiBzdWJFdmVudCA9IElPSElERXZlbnRDcmVhdGVE
aWdpdGl6ZXJGaW5nZXJFdmVudChrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBtYWNoVGltZSwKKyAgICAg
ICAgYXV0byBzdWJFdmVudCA9IGFkb3B0Q0YoSU9ISURFdmVudENyZWF0ZURpZ2l0aXplckZpbmdl
ckV2ZW50KGtDRkFsbG9jYXRvckRlZmF1bHQsIG1hY2hUaW1lLAogICAgICAgICAgICAgW3RvdWNo
SW5mb1tISURFdmVudFRvdWNoSURLZXldIGludFZhbHVlXSwgICAgICAgICAgICAgICAvLyBpbmRl
eAogICAgICAgICAgICAgMiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvLyBpZGVudGlmaWVyICh3aGljaCBmaW5nZXIgd2UgdGhpbmsgaXQgaXMp
LiBGSVhNRTogdGhpcyBzaG91bGQgY29tZSBmcm9tIHRoZSBkYXRhLgogICAgICAgICAgICAgY2hp
bGRFdmVudE1hc2ssCkBAIC0zMzAsMTMgKzMzMCwxMiBAQCAtIChJT0hJREV2ZW50UmVmKV9jcmVh
dGVJT0hJREV2ZW50V2l0aEluZm86KE5TRGljdGlvbmFyeSAqKWluZm8KICAgICAgICAgICAgIFt0
b3VjaEluZm9bSElERXZlbnRUd2lzdEtleV0gZmxvYXRWYWx1ZV0sCiAgICAgICAgICAgICB0b3Vj
aCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJh
bmdlCiAgICAgICAgICAgICB0b3VjaCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIHRvdWNoCi0gICAgICAgICAgICBrSU9ISURFdmVudE9wdGlvbk5v
bmUpOworICAgICAgICAgICAga0lPSElERXZlbnRPcHRpb25Ob25lKSk7CiAKLSAgICAgICAgSU9I
SURFdmVudFNldEZsb2F0VmFsdWUoc3ViRXZlbnQsIGtJT0hJREV2ZW50RmllbGREaWdpdGl6ZXJN
YWpvclJhZGl1cywgW3RvdWNoSW5mb1tISURFdmVudE1ham9yUmFkaXVzS2V5XSBmbG9hdFZhbHVl
XSk7Ci0gICAgICAgIElPSElERXZlbnRTZXRGbG9hdFZhbHVlKHN1YkV2ZW50LCBrSU9ISURFdmVu
dEZpZWxkRGlnaXRpemVyTWlub3JSYWRpdXMsIFt0b3VjaEluZm9bSElERXZlbnRNaW5vclJhZGl1
c0tleV0gZmxvYXRWYWx1ZV0pOworICAgICAgICBJT0hJREV2ZW50U2V0RmxvYXRWYWx1ZShzdWJF
dmVudC5nZXQoKSwga0lPSElERXZlbnRGaWVsZERpZ2l0aXplck1ham9yUmFkaXVzLCBbdG91Y2hJ
bmZvW0hJREV2ZW50TWFqb3JSYWRpdXNLZXldIGZsb2F0VmFsdWVdKTsKKyAgICAgICAgSU9ISURF
dmVudFNldEZsb2F0VmFsdWUoc3ViRXZlbnQuZ2V0KCksIGtJT0hJREV2ZW50RmllbGREaWdpdGl6
ZXJNaW5vclJhZGl1cywgW3RvdWNoSW5mb1tISURFdmVudE1pbm9yUmFkaXVzS2V5XSBmbG9hdFZh
bHVlXSk7CiAKLSAgICAgICAgSU9ISURFdmVudEFwcGVuZEV2ZW50KGV2ZW50UmVmLCBzdWJFdmVu
dCwgMCk7Ci0gICAgICAgIENGUmVsZWFzZShzdWJFdmVudCk7CisgICAgICAgIElPSElERXZlbnRB
cHBlbmRFdmVudChldmVudFJlZiwgc3ViRXZlbnQuZ2V0KCksIDApOwogICAgIH0KIAogICAgIHJl
dHVybiBldmVudFJlZjsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL0V2
ZW50U2VuZGVyUHJveHkubW0gYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9FdmVudFNlbmRl
clByb3h5Lm1tCmluZGV4IGJhY2MxNDExNTQzMzFiNzlkMWEzY2VkNjgxYzdmOTQ4OTg4YjkwNjYu
LjhlOTk0N2IwYjMyNDBmM2ZjMDliM2M2YWRiNjVlOGYyZTAyY2ZlZDQgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL0V2ZW50U2VuZGVyUHJveHkubW0KKysrIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9tYWMvRXZlbnRTZW5kZXJQcm94eS5tbQpAQCAtOTUsMTcgKzk1LDE2
IEBAIC0gKGluc3RhbmNldHlwZSlpbml0UHJlc3N1cmVFdmVudEF0TG9jYXRpb246KE5TUG9pbnQp
bG9jYXRpb24gZ2xvYmFsTG9jYXRpb246KE5TCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAotICAg
IENHRXZlbnRSZWYgY2dFdmVudCA9IENHRXZlbnRDcmVhdGUobnVsbHB0cik7Ci0gICAgQ0dFdmVu
dFNldFR5cGUoY2dFdmVudCwgKENHRXZlbnRUeXBlKWtDR1NFdmVudEdlc3R1cmUpOwotICAgIENH
RXZlbnRTZXRJbnRlZ2VyVmFsdWVGaWVsZChjZ0V2ZW50LCBrQ0dFdmVudEdlc3R1cmVISURUeXBl
LCAzMik7Ci0gICAgQ0dFdmVudFNldEludGVnZXJWYWx1ZUZpZWxkKGNnRXZlbnQsIGtDR0V2ZW50
R2VzdHVyZVBoYXNlLCBnZXN0dXJlUGhhc2UpOwotICAgIENHRXZlbnRTZXREb3VibGVWYWx1ZUZp
ZWxkKGNnRXZlbnQsIGtDR0V2ZW50U3RhZ2VQcmVzc3VyZSwgcHJlc3N1cmUpOwotICAgIENHRXZl
bnRTZXREb3VibGVWYWx1ZUZpZWxkKGNnRXZlbnQsIGtDR0V2ZW50VHJhbnNpdGlvblByb2dyZXNz
LCBwcmVzc3VyZSk7Ci0gICAgQ0dFdmVudFNldEludGVnZXJWYWx1ZUZpZWxkKGNnRXZlbnQsIGtD
R0V2ZW50R2VzdHVyZVN0YWdlLCBzdGFnZVRyYW5zaXRpb24pOwotICAgIENHRXZlbnRTZXRJbnRl
Z2VyVmFsdWVGaWVsZChjZ0V2ZW50LCBrQ0dFdmVudEdlc3R1cmVCZWhhdmlvciwga0NHU0dlc3R1
cmVCZWhhdmlvckRlZXBQcmVzcyk7Ci0KLSAgICBzZWxmID0gW3N1cGVyIF9pbml0V2l0aENHRXZl
bnQ6Y2dFdmVudCBldmVudFJlZjpudWxscHRyXTsKLSAgICBDRlJlbGVhc2UoY2dFdmVudCk7Cisg
ICAgYXV0byBjZ0V2ZW50ID0gYWRvcHRDRihDR0V2ZW50Q3JlYXRlKG51bGxwdHIpKTsKKyAgICBD
R0V2ZW50U2V0VHlwZShjZ0V2ZW50LmdldCgpLCAoQ0dFdmVudFR5cGUpa0NHU0V2ZW50R2VzdHVy
ZSk7CisgICAgQ0dFdmVudFNldEludGVnZXJWYWx1ZUZpZWxkKGNnRXZlbnQuZ2V0KCksIGtDR0V2
ZW50R2VzdHVyZUhJRFR5cGUsIDMyKTsKKyAgICBDR0V2ZW50U2V0SW50ZWdlclZhbHVlRmllbGQo
Y2dFdmVudC5nZXQoKSwga0NHRXZlbnRHZXN0dXJlUGhhc2UsIGdlc3R1cmVQaGFzZSk7CisgICAg
Q0dFdmVudFNldERvdWJsZVZhbHVlRmllbGQoY2dFdmVudC5nZXQoKSwga0NHRXZlbnRTdGFnZVBy
ZXNzdXJlLCBwcmVzc3VyZSk7CisgICAgQ0dFdmVudFNldERvdWJsZVZhbHVlRmllbGQoY2dFdmVu
dC5nZXQoKSwga0NHRXZlbnRUcmFuc2l0aW9uUHJvZ3Jlc3MsIHByZXNzdXJlKTsKKyAgICBDR0V2
ZW50U2V0SW50ZWdlclZhbHVlRmllbGQoY2dFdmVudC5nZXQoKSwga0NHRXZlbnRHZXN0dXJlU3Rh
Z2UsIHN0YWdlVHJhbnNpdGlvbik7CisgICAgQ0dFdmVudFNldEludGVnZXJWYWx1ZUZpZWxkKGNn
RXZlbnQuZ2V0KCksIGtDR0V2ZW50R2VzdHVyZUJlaGF2aW9yLCBrQ0dTR2VzdHVyZUJlaGF2aW9y
RGVlcFByZXNzKTsKKworICAgIHNlbGYgPSBbc3VwZXIgX2luaXRXaXRoQ0dFdmVudDpjZ0V2ZW50
LmdldCgpIGV2ZW50UmVmOm51bGxwdHJdOwogCiAgICAgaWYgKCFzZWxmKQogICAgICAgICByZXR1
cm4gbmlsOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvVUlTY3JpcHRD
b250cm9sbGVyTWFjLm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvVUlTY3JpcHRDb250
cm9sbGVyTWFjLm1tCmluZGV4IDYwYmU5NTdlMDU3ZTI0YmUwZmJhZmZhZjJjMzgyMTU3NGE3NjQx
NTMuLmJhYmU5NTdkMTFiMjA0NmQ1ZjM2ZWQ0ZGRjNzFiYmQ3ZDZlNjA2MWIgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL1VJU2NyaXB0Q29udHJvbGxlck1hYy5tbQorKysg
Yi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9VSVNjcmlwdENvbnRyb2xsZXJNYWMubW0KQEAg
LTUzLDE0ICs1MywxNCBAQCBSZWY8VUlTY3JpcHRDb250cm9sbGVyPiBVSVNjcmlwdENvbnRyb2xs
ZXI6OmNyZWF0ZShVSVNjcmlwdENvbnRleHQmIGNvbnRleHQpCiAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgVUlTY3JpcHRDb250cm9sbGVyTWFjKGNvbnRleHQpKTsKIH0KIAotc3RhdGljIE5TU3Ry
aW5nICpuc1N0cmluZyhKU1N0cmluZ1JlZiBzdHJpbmcpCitzdGF0aWMgUmV0YWluUHRyPENGU3Ry
aW5nUmVmPiBjZlN0cmluZyhKU1N0cmluZ1JlZiBzdHJpbmcpCiB7Ci0gICAgcmV0dXJuIENGQnJp
ZGdpbmdSZWxlYXNlKEpTU3RyaW5nQ29weUNGU3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIHN0
cmluZykpOworICAgIHJldHVybiBhZG9wdENGKEpTU3RyaW5nQ29weUNGU3RyaW5nKGtDRkFsbG9j
YXRvckRlZmF1bHQsIHN0cmluZykpOwogfQogCiB2b2lkIFVJU2NyaXB0Q29udHJvbGxlck1hYzo6
cmVwbGFjZVRleHRBdFJhbmdlKEpTU3RyaW5nUmVmIHRleHQsIGludCBsb2NhdGlvbiwgaW50IGxl
bmd0aCkKIHsKLSAgICBbd2ViVmlldygpIF9pbnNlcnRUZXh0Om5zU3RyaW5nKHRleHQpIHJlcGxh
Y2VtZW50UmFuZ2U6TlNNYWtlUmFuZ2UobG9jYXRpb24gPT0gLTEgPyBOU05vdEZvdW5kIDogbG9j
YXRpb24sIGxlbmd0aCldOworICAgIFt3ZWJWaWV3KCkgX2luc2VydFRleHQ6KF9fYnJpZGdlIE5T
U3RyaW5nICopY2ZTdHJpbmcodGV4dCkuZ2V0KCkgcmVwbGFjZW1lbnRSYW5nZTpOU01ha2VSYW5n
ZShsb2NhdGlvbiA9PSAtMSA/IE5TTm90Rm91bmQgOiBsb2NhdGlvbiwgbGVuZ3RoKV07CiB9CiAK
IHZvaWQgVUlTY3JpcHRDb250cm9sbGVyTWFjOjp6b29tVG9TY2FsZShkb3VibGUgc2NhbGUsIEpT
VmFsdWVSZWYgY2FsbGJhY2spCg==
</data>
<flag name="commit-queue"
          id="441344"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>422290</attachid>
            <date>2021-03-04 14:54:39 -0800</date>
            <delta_ts>2021-03-04 15:44:34 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222760-20210304145438.patch</filename>
            <type>text/plain</type>
            <size>187284</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjczOTA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
MGY4NmUyMTAwZjMxZDk3OTkxNTZhZjkxZGU2MjMzMWIyOWYwN2ViLi44NTViOGIxYjM5ODYxYjhk
NDMzZjg4ZTBmMmU3N2Y0OTcwYzdjYjdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMCBAQAorMjAyMS0wMy0wNCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIFJlZHVjZSB1c2Ugb2YgQ0ZSZXRhaW4oKSAvIENGUmVsZWFzZSgpIC8gQ0ZBdXRv
UmVsZWFzZSgpIGluIFdlYktpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjIyNzYwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgUmVkdWNlIHVzZSBvZiBDRlJldGFpbigpIC8gQ0ZSZWxlYXNlKCkgLyBDRkF1
dG9SZWxlYXNlKCkgaW4gV2ViS2l0IGJ5IHVzaW5nIFJldGFpblB0cjw+LgorCisgICAgICAgICog
QVBJL0pTQ29udGV4dC5tbToKKyAgICAgICAgKC1bSlNDb250ZXh0IG5hbWVdKToKKyAgICAgICAg
KiBBUEkvSlNWYWx1ZS5tbToKKyAgICAgICAgKHZhbHVlVG9PYmplY3RXaXRob3V0Q29weSk6Cisg
ICAgICAgICh2YWx1ZVRvU3RyaW5nKToKKyAgICAgICAgKiBpbnNwZWN0b3IvcmVtb3RlL2NvY29h
L1JlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24ubW06CisgICAgICAgIChJbnNwZWN0b3I6OlJl
bW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb246OmRlc2VyaWFsaXplTWVzc2FnZSk6CisKIDIwMjEt
MDMtMDQgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAg
ICAgICBbQ29jb2FdIFJFR1JFU1NJT04ocjI3Mjc1Mik6IGZpeCBzb21lIGludGVybmFsIGJ1aWxk
cyB0aGF0IHVzZSBXVEZTdHJpbmc6OldURlN0cmluZyhOU1N0cmluZyAqKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCBjN2M5MjQw
MGJmMTVjZTk0YjA4NzBjNzIzYWQ3Y2U3YzYyNmM4NWI4Li5mOTk0ZmVhNTg3MWU1OWI2MTg4M2Iy
Y2U2YjI0OTQ3N2ZjMWE0OWM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDIxLTAzLTA0ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgUmVkdWNlIHVzZSBvZiBDRlJl
dGFpbigpIC8gQ0ZSZWxlYXNlKCkgLyBDRkF1dG9SZWxlYXNlKCkgaW4gV2ViS2l0CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjI3NjAKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWR1Y2UgdXNlIG9mIENG
UmV0YWluKCkgLyBDRlJlbGVhc2UoKSAvIENGQXV0b1JlbGVhc2UoKSBpbiBXZWJLaXQgYnkgdXNp
bmcgUmV0YWluUHRyPD4uCisKKyAgICAgICAgKiB3dGYvY29jb2EvTlNVUkxFeHRyYXMubW06Cisg
ICAgICAgIChXVEY6OmRlY29kZVBlcmNlbnRFc2NhcGVzKToKKyAgICAgICAgKFdURjo6VVJMQnlU
cnVuY2F0aW5nT25lQ2hhcmFjdGVyQmVmb3JlQ29tcG9uZW50KToKKyAgICAgICAgKFdURjo6VVJM
V2l0aERhdGEpOgorICAgICAgICAoV1RGOjpVUkxCeVJlbW92aW5nQ29tcG9uZW50QW5kU3Vic2Vx
dWVudENoYXJhY3Rlcik6CisKIDIwMjEtMDMtMDQgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxl
LmNvbT4KIAogICAgICAgICBbbWFjT1NdW1dLMl0gQ2hhbmdpbmcgdGhlIHN5c3RlbSBsYW5ndWFn
ZSBkb2VzIG5vdCB1cGRhdGUgbmF2aWdhdG9yLmxhbmd1YWdlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDFmOTFj
ZjdlMGE2OGMwMDE1ZDE5ODlkODc5MzBiMGYyZGMyNjNiZC4uNWE0M2Q2NWNkZTkxODNiMDJjMTFl
MTQ2ZDY3YzhhNGFiMTJiYTAzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExMiBAQAorMjAyMS0w
My0wNCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFJlZHVjZSB1
c2Ugb2YgQ0ZSZXRhaW4oKSAvIENGUmVsZWFzZSgpIC8gQ0ZBdXRvUmVsZWFzZSgpIGluIFdlYktp
dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIyNzYw
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVkdWNl
IHVzZSBvZiBDRlJldGFpbigpIC8gQ0ZSZWxlYXNlKCkgLyBDRkF1dG9SZWxlYXNlKCkgaW4gV2Vi
S2l0IGJ5IHVzaW5nIFJldGFpblB0cjw+LgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9tYWMv
QVhPYmplY3RDYWNoZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkFYVGV4dE1hcmtlclJhbmdl
KToKKyAgICAgICAgKFdlYkNvcmU6OkFYVGV4dE1hcmtlclJhbmdlU3RhcnQpOgorICAgICAgICAo
V2ViQ29yZTo6QVhUZXh0TWFya2VyUmFuZ2VFbmQpOgorICAgICAgICAoV2ViQ29yZTo6dGV4dE1h
cmtlckZvclZpc2libGVQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjp0ZXh0TWFya2VyRm9y
Q2hhcmFjdGVyT2Zmc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OnN0YXJ0T3JFbmRUZXh0TWFya2Vy
Rm9yUmFuZ2UpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlP
YmplY3RXcmFwcGVyQmFzZS5tbToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdy
YXBwZXJCYXNlIHVwZGF0ZU9iamVjdEJhY2tpbmdTdG9yZV0pOgorICAgICAgICAoLVtXZWJBY2Nl
c3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UgY29udmVydFBhdGhUb1NjcmVlblNwYWNlOl0pOgor
ICAgICAgICAqIGFjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
TWFjLm1tOgorICAgICAgICAobmV4dFRleHRNYXJrZXJGb3JDaGFyYWN0ZXJPZmZzZXQpOgorICAg
ICAgICAocHJldmlvdXNUZXh0TWFya2VyRm9yQ2hhcmFjdGVyT2Zmc2V0KToKKyAgICAgICAgKC1b
V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgdGV4dE1hcmtlckZvckZpcnN0UG9zaXRpb25J
blRleHRDb250cm9sOl0pOgorICAgICAgICAoQVhBdHRyaWJ1dGVTdHJpbmdTZXRFbGVtZW50KToK
KyAgICAgICAgKiBlZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW06CisgICAgICAgIChIVE1M
Q29udmVydGVyOjpfcHJvY2Vzc1RleHQpOgorICAgICAgICAqIGxvYWRlci9jb2NvYS9EaXNrQ2Fj
aGVNb25pdG9yQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpEaXNrQ2FjaGVNb25pdG9yOjpE
aXNrQ2FjaGVNb25pdG9yKToKKyAgICAgICAgKiBwYWdlL21hYy9FdmVudEhhbmRsZXJNYWMubW06
CisgICAgICAgIChXZWJDb3JlOjpzZWxmUmV0YWluaW5nTlNTY3JvbGxWaWV3U2Nyb2xsV2hlZWwp
OgorICAgICAgICAqIHBhZ2Uvd2luL0ZyYW1lQ0dXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
aW1hZ2VGcm9tUmVjdCk6CisgICAgICAgICogcGxhdGZvcm0vY2YvTWFpblRocmVhZFNoYXJlZFRp
bWVyQ0YuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2hhcmVkVGltZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6TWFpblRocmVhZFNoYXJlZFRpbWVyOjpyZXN0YXJ0U2hhcmVkVGltZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6TWFpblRocmVhZFNoYXJlZFRpbWVyOjppbnZhbGlkYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6Ok1haW5UaHJlYWRTaGFyZWRUaW1lcjo6c2V0RmlyZUludGVydmFsKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1haW5UaHJlYWRTaGFyZWRUaW1lcjo6c3RvcCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZXJuYWxEZXZpY2VEaXNwbGF5TmFt
ZUZvclBsYXllcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL0NBQ0ZMYXll
clRyZWVIb3N0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNBQ0ZMYXllclRyZWVIb3N0Ojppbml0
aWFsaXplKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRD
Ry5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYXR0ZXJuUmVsZWFzZUNhbGxiYWNrKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZmlsbFBhdGgpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0OjpzdHJva2VQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDo6ZmlsbFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
OjpzdHJva2VSZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXR0ZXJuQ0cu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6cGF0dGVyblJlbGVhc2VDYWxsYmFjayk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6YXV0b0FjdGl2YXRlRm9udCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0ZvbnRDR1dpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZTo6Z2V0
UGxhdGZvcm1HbHlwaEFkdmFuY2VzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4v
R3JhcGhpY3NDb250ZXh0Q0dXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0OjpyZWxlYXNlV2luZG93c0NvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0OjpkcmF3Rm9jdXNSaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4v
SW1hZ2VDR1dpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Z2V0SEJJVE1B
UE9mU2l6ZSk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1VzZXJBZ2VudElPUy5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OnN0YW5kYXJkVXNlckFnZW50V2l0aEFwcGxpY2F0aW9uTmFtZSk6CisgICAg
ICAgICogcGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkLm1tOgorICAgICAgICAoU2VuZERl
bGVnYXRlTWVzc2FnZSk6CisgICAgICAgIChSdW5XZWJUaHJlYWQpOgorICAgICAgICAoV2ViVGhy
ZWFkVW5sb2NrR3VhcmRGb3JNYWlsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvUGxhdGZvcm1T
cGVlY2hTeW50aGVzaXplck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OnNwZWVjaFN5bnRoZXNp
c0dldFZvaWNlSWRlbnRpZmllcnMpOgorICAgICAgICAoV2ViQ29yZTo6c3BlZWNoU3ludGhlc2lz
R2V0RGVmYXVsdFZvaWNlSWRlbnRpZmllckZvckxvY2FsZSk6CisgICAgICAgIChXZWJDb3JlOjpQ
bGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyOjppbml0aWFsaXplVm9pY2VMaXN0KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9tYWMvUGx1Z2luQmxvY2tsaXN0Lm1tOgorICAgICAgICAoV2ViQ29yZTo6UGx1
Z2luQmxvY2tsaXN0OjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9XZWJHTEJsb2Nr
bGlzdC5tbToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMQmxvY2tsaXN0OjpjcmVhdGUpOgorICAg
ICAgICAqIHBsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvQXVkaW9TYW1wbGVCdWZmZXJDb21w
cmVzc29yLm1tOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29y
OjphdHRhY2hQcmltaW5nVHJpbXNJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nh
bXBsZUJ1ZmZlckNvbXByZXNzb3I6OnByb3ZpZGVTb3VyY2VEYXRhTnVtT3V0cHV0UGFja2V0cyk6
CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9WaWRlb1NhbXBsZUJ1ZmZl
ckNvbXByZXNzb3IubW06CisgICAgICAgIChXZWJDb3JlOjpzZXRDb21wcmVzc2lvblNlc3Npb25Q
cm9wZXJ0eSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9Gb3JtRGF0YVN0cmVhbUNG
TmV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNsb3NlQ3VycmVudFN0cmVhbSk6CisgICAgICAg
IChXZWJDb3JlOjphZHZhbmNlQ3VycmVudFN0cmVhbSk6CisgICAgICAgIChXZWJDb3JlOjpvcGVu
TmV4dFN0cmVhbSk6CisgICAgICAgIChXZWJDb3JlOjpmb3JtUmVhZCk6CisgICAgICAgIChXZWJD
b3JlOjpmb3JtQ2FuUmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpmb3JtU2NoZWR1bGUpOgorICAg
ICAgICAoV2ViQ29yZTo6Zm9ybVVuc2NoZWR1bGUpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvY2YvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ0ZOZXRXaW4uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Y3JlYXRlUHJpdmF0ZVN0b3JhZ2VTZXNzaW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2V0Q2xp
ZW50Q2VydGlmaWNhdGVJblNTTFByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3Vy
Y2VIYW5kbGU6OmNyZWF0ZUNGVVJMQ29ubmVjdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vbmV0
d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlv
blF1ZXVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0
aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6OndpbGxTZW5kUmVxdWVzdCk6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3RDRk5ldC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q6OmRvVXBkYXRlUmVzb3VyY2VSZXF1ZXN0KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS93aW4vRHJhZ0ltYWdlQ0dXaW4uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Y3JlYXRlQ2dDb250ZXh0RnJvbUJpdG1hcCk6CisgICAgICAgIChXZWJDb3JlOjpzY2FsZURy
YWdJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vd2luL1dlYkNvcmVCdW5kbGVXaW4uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlV2ViS2l0QnVuZGxlKToKKyAgICAgICAgKFdlYkNvcmU6
OndlYktpdEJ1bmRsZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tOgor
ICAgICAgICAoLVtXZWJDb3JlVGV4dEZpZWxkQ2VsbCBfYWRqdXN0ZWRDb3JlVUlEcmF3T3B0aW9u
c0ZvckRyYXdpbmdCb3JkZXJzT25seTpdKToKKyAgICAgICAgKiB0ZXN0aW5nL2NvY29hL1dlYkFy
Y2hpdmVEdW1wU3VwcG9ydC5oOgorICAgICAgICAqIHRlc3RpbmcvY29jb2EvV2ViQXJjaGl2ZUR1
bXBTdXBwb3J0Lm1tOgorICAgICAgICAoV2ViQ29yZVRlc3RTdXBwb3J0OjpjcmVhdGVYTUxTdHJp
bmdGcm9tV2ViQXJjaGl2ZURhdGEpOgorICAgICAgICAqIHRlc3RpbmcvY29jb2EvV2ViVmlld1Zp
c3VhbElkZW50aWZpY2F0aW9uT3ZlcmxheS5tbToKKyAgICAgICAgKGlkZW50aWZpY2F0aW9uRm9u
dCk6CisKIDIwMjEtMDMtMDQgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAg
ICAgICAgIEluIGNhc2Ugb2YgUE9TVCBuYXZpZ2F0aW9uIHJlZGlyZWN0ZWQgYnkgYSAzMDIsIHRo
ZSAnT3JpZ2luJyBoZWFkZXIgaXMga2VwdCBpbiB0aGUgcmVkaXJlY3RlZCByZXF1ZXN0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CmluZGV4IDA4M2M3MTI2NzEzNzhmZTI1NjEzMWI0ZmJkM2U3OGQ4MWUyYzMzMDEuLjQ4YjMxZTI4
Yzk3ZjFjNzZjNDE4ZTQ4NzQ0NGRkM2FkZGYwMzgxYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzkg
QEAKKzIwMjEtMDMtMDQgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAg
ICBSZWR1Y2UgdXNlIG9mIENGUmV0YWluKCkgLyBDRlJlbGVhc2UoKSAvIENGQXV0b1JlbGVhc2Uo
KSBpbiBXZWJLaXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIyMjc2MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFJlZHVjZSB1c2Ugb2YgQ0ZSZXRhaW4oKSAvIENGUmVsZWFzZSgpIC8gQ0ZBdXRvUmVsZWFz
ZSgpIGluIFdlYktpdCBieSB1c2luZyBSZXRhaW5QdHI8Pi4KKworICAgICAgICAqIFBsYXRmb3Jt
L21hYy9TdHJpbmdVdGlsaXRpZXMubW06CisgICAgICAgIChXZWJLaXQ6Om5zU3RyaW5nRnJvbVdl
YkNvcmVTdHJpbmcpOgorICAgICAgICAoV2ViS2l0Ojpmb3JtYXR0ZWRQaG9uZU51bWJlclN0cmlu
Zyk6CisgICAgICAgICogUGx1Z2luUHJvY2Vzcy9tYWMvUGx1Z2luUHJvY2Vzc01hYy5tbToKKyAg
ICAgICAgKFdlYktpdDo6aW5pdGlhbGl6ZUNvY29hT3ZlcnJpZGVzKToKKyAgICAgICAgKiBTaGFy
ZWQvbWFjL1Bhc3RlYm9hcmRUeXBlcy5tbToKKyAgICAgICAgKFdlYktpdDo6UGFzdGVib2FyZFR5
cGVzOjpmb3JFZGl0aW5nKToKKyAgICAgICAgKFdlYktpdDo6UGFzdGVib2FyZFR5cGVzOjpmb3JV
UkwpOgorICAgICAgICAoV2ViS2l0OjpQYXN0ZWJvYXJkVHlwZXM6OmZvckltYWdlcyk6CisgICAg
ICAgIChXZWJLaXQ6OlBhc3RlYm9hcmRUeXBlczo6Zm9ySW1hZ2VzV2l0aEFyY2hpdmUpOgorICAg
ICAgICAoV2ViS2l0OjpQYXN0ZWJvYXJkVHlwZXM6OmZvclNlbGVjdGlvbik6CisgICAgICAgICog
VUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3
SW1wbDo6YWNjZXB0c0ZpcnN0TW91c2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6
c2hvdWxkRGVsYXlXaW5kb3dPcmRlcmluZ0ZvckV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
Vmlld0ltcGw6OnZhbGlkQXR0cmlidXRlc0Zvck1hcmtlZFRleHQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJWaWV3SW1wbDo6cGVyZm9ybUtleUVxdWl2YWxlbnQpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9JbnNwZWN0b3IvaW9zL1dLSW5zcGVjdG9ySGlnaGxpZ2h0Vmlldy5tbToKKyAgICAgICAgKGxh
eWVyUGF0aFdpdGhIb2xlKToKKyAgICAgICAgKGxheWVyUGF0aCk6CisgICAgICAgICogVUlQcm9j
ZXNzL19XS1RvdWNoRXZlbnRHZW5lcmF0b3IubW06CisgICAgICAgICgtW19XS1RvdWNoRXZlbnRH
ZW5lcmF0b3IgZGVhbGxvY10pOgorICAgICAgICAoLVtfV0tUb3VjaEV2ZW50R2VuZXJhdG9yIF9z
ZW5kSElERXZlbnQ6XSk6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9mdWxsc2NyZWVuL1dLRnVs
bFNjcmVlbldpbmRvd0NvbnRyb2xsZXJJT1MubW06CisgICAgICAgICgtW1dLRnVsbFNjcmVlbldp
bmRvd0NvbnRyb2xsZXIgX0VWT3JnYW5pemF0aW9uTmFtZV0pOgorICAgICAgICAqIFdlYlByb2Nl
c3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tOgorICAgICAgICAoV2ViS2l0Ojp3ZWJQcm9jZXNz
TG9hZGVyQWNjZXNzaWJpbGl0eUJ1bmRsZVBhdGgpOgorCiAyMDIxLTAzLTA0ICBDaHJpcyBEdW1l
eiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCBidWlsZCBmaXggYWZ0
ZXIgcjI3MjYyOS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL0NoYW5nZUxvZwppbmRleCBjYWQxODlkMDFlYzI3
NDEzZjg3NTJmODA2NWM5NWEyMmQ1Y2MzNmI0Li5mN2MxNDRmMTZiMjhjZTExYWQ3YTViNmJiMzQ5
YzM2ZWJkOThiOGE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkg
QEAKKzIwMjEtMDMtMDQgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAg
ICBSZWR1Y2UgdXNlIG9mIENGUmV0YWluKCkgLyBDRlJlbGVhc2UoKSAvIENGQXV0b1JlbGVhc2Uo
KSBpbiBXZWJLaXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIyMjc2MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFJlZHVjZSB1c2Ugb2YgQ0ZSZXRhaW4oKSAvIENGUmVsZWFzZSgpIC8gQ0ZBdXRvUmVsZWFz
ZSgpIGluIFdlYktpdCBieSB1c2luZyBSZXRhaW5QdHI8Pi4KKworICAgICAgICAqIE1pc2MvV2Vi
VUlLaXRTdXBwb3J0Lm1tOgorICAgICAgICAoTG9hZFdlYkxvY2FsaXplZFN0cmluZ3MpOgorICAg
ICAgICAqIFdlYlZpZXcvV2ViUERGVmlld0lPUy5tbToKKyAgICAgICAgKC1bV2ViUERGVmlldyBm
aW5pc2hlZExvYWRpbmdXaXRoRGF0YVNvdXJjZTpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlBE
RlZpZXdQbGFjZWhvbGRlci5tbToKKyAgICAgICAgKC1bV2ViUERGVmlld1BsYWNlaG9sZGVyIGZp
bmlzaGVkTG9hZGluZ1dpdGhEYXRhU291cmNlOl0pOgorCiAyMDIxLTAyLTIyICBDaHJpcyBEdW1l
eiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgVXNlIGFkb3B0TlMoKSBhcyBzb29uIGFz
IHdlIFtbT2JqY0NsYXNzIGFsbG9jXSBpbml0XSB0byBhdm9pZCBsZWFrcwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvQ2hhbmdlTG9nCmluZGV4IDdjMTJkMTVhZmFlNThhZTA1Y2U2YjM0MDQ1OTAwYjg1OWVkMTQ2
YjMuLmFkYWE2NDM2ZjIzODNiNTQ5M2I4NGIxMTMyN2E2YTFlODljNjM1ZmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOSBAQAorMjAyMS0wMy0wNCAgQ2hyaXMgRHVt
ZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFJlZHVjZSB1c2Ugb2YgQ0ZSZXRhaW4o
KSAvIENGUmVsZWFzZSgpIC8gQ0ZBdXRvUmVsZWFzZSgpIGluIFdlYktpdAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIyNzYwCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVkdWNlIHVzZSBvZiBDRlJldGFp
bigpIC8gQ0ZSZWxlYXNlKCkgLyBDRkF1dG9SZWxlYXNlKCkgaW4gV2ViS2l0IGJ5IHVzaW5nIFJl
dGFpblB0cjw+LgorCisgICAgICAgICogTWlzYy9XZWJMb2NhbGl6YWJsZVN0cmluZ3MubW06Cisg
ICAgICAgICogTWlzYy9XZWJOU0RhdGFFeHRyYXMubW06CisgICAgICAgICgtW05TU3RyaW5nIF93
ZWJfY2FwaXRhbGl6ZVJGQzgyMkhlYWRlckZpZWxkTmFtZV0pOgorICAgICAgICAqIFBsdWdpbnMv
SG9zdGVkL05ldHNjYXBlUGx1Z2luSG9zdE1hbmFnZXIubW06CisgICAgICAgIChXZWJLaXQ6OnBy
ZWZlcnJlZEJ1bmRsZUxvY2FsaXphdGlvbk5hbWUpOgorICAgICAgICAqIFBsdWdpbnMvV2ViTmV0
c2NhcGVQbHVnaW5WaWV3Lm1tOgorICAgICAgICAoLVtXZWJOZXRzY2FwZVBsdWdpblZpZXcgc3Rh
dHVzOl0pOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlByb2dyZXNzVHJhY2tlckNsaWVu
dC5tbToKKyAgICAgICAgKFdlYlByb2dyZXNzVHJhY2tlckNsaWVudDo6cHJvZ3Jlc3NFc3RpbWF0
ZUNoYW5nZWQpOgorICAgICAgICAqIFdlYkluc3BlY3Rvci9XZWJOb2RlSGlnaGxpZ2h0Vmlldy5t
bToKKyAgICAgICAgKGxheWVyUGF0aFdpdGhIb2xlKToKKyAgICAgICAgKGxheWVyUGF0aCk6Cisg
ICAgICAgICogV2ViVmlldy9XZWJGcmFtZS5tbToKKyAgICAgICAgKGNyZWF0ZVVuaXF1ZVdlYkRh
dGFVUkwpOgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAgICAgICAgKCtbV2ViVmll
dyBfc2V0Q2FjaGVNb2RlbDpdKToKKwogMjAyMS0wMy0wNCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpA
YXBwbGUuY29tPgogCiAgICAgICAgIFttYWNPU11bV0syXSBDaGFuZ2luZyB0aGUgc3lzdGVtIGxh
bmd1YWdlIGRvZXMgbm90IHVwZGF0ZSBuYXZpZ2F0b3IubGFuZ3VhZ2UKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L0NoYW5nZUxvZwppbmRleCA1ODEzNDAyOTZkODVhZDRhODY5OTRkZDM0Y2RlNGU1NTcxY2FiYWE3
Li5jMDg4YmIyZjE1Zjk0MzE5MWYyODAxN2E5MzgxYTY0YjhjOGNjMTJmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDAgQEAKKzIwMjEtMDMtMDQgIENocmlzIER1bWV6
ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBSZWR1Y2UgdXNlIG9mIENGUmV0YWluKCkg
LyBDRlJlbGVhc2UoKSAvIENGQXV0b1JlbGVhc2UoKSBpbiBXZWJLaXQKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMjc2MAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlZHVjZSB1c2Ugb2YgQ0ZSZXRhaW4o
KSAvIENGUmVsZWFzZSgpIC8gQ0ZBdXRvUmVsZWFzZSgpIGluIFdlYktpdCBieSB1c2luZyBSZXRh
aW5QdHI8Pi4KKworICAgICAgICAqIENGRGljdGlvbmFyeVByb3BlcnR5QmFnLmNwcDoKKyAgICAg
ICAgKENvbnZlcnRWYXJpYW50VG9DRlR5cGUpOgorICAgICAgICAoQ0ZEaWN0aW9uYXJ5UHJvcGVy
dHlCYWc6OlJlYWQpOgorICAgICAgICAoQ0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWc6OldyaXRlKToK
KyAgICAgICAgKiBNYXJzaGFsbGluZ0hlbHBlcnMuY3BwOgorICAgICAgICAoTWFyc2hhbGxpbmdI
ZWxwZXJzOjpQYXRoU3RyaW5nVG9GaWxlQ0ZVUkxSZWYpOgorICAgICAgICAoTWFyc2hhbGxpbmdI
ZWxwZXJzOjpGaWxlQ0ZVUkxSZWZUb1BhdGhTdHJpbmcpOgorICAgICAgICAoTWFyc2hhbGxpbmdI
ZWxwZXJzOjpCU1RSVG9DRlVSTFJlZik6CisgICAgICAgIChNYXJzaGFsbGluZ0hlbHBlcnM6OkJT
VFJUb0NGU3RyaW5nUmVmKToKKyAgICAgICAgKE1hcnNoYWxsaW5nSGVscGVyczo6TFBDT0xFU1RS
VG9DRlN0cmluZ1JlZik6CisgICAgICAgIChNYXJzaGFsbGluZ0hlbHBlcnM6OmludFRvQ0ZOdW1i
ZXJSZWYpOgorICAgICAgICAoTWFyc2hhbGxpbmdIZWxwZXJzOjpzYWZlQXJyYXlUb1N0cmluZ0Fy
cmF5KToKKyAgICAgICAgKE1hcnNoYWxsaW5nSGVscGVyczo6c2FmZUFycmF5VG9JbnRBcnJheSk6
CisgICAgICAgIChNYXJzaGFsbGluZ0hlbHBlcnM6OnNhZmVBcnJheVRvSVVua25vd25BcnJheSk6
CisgICAgICAgICogTWFyc2hhbGxpbmdIZWxwZXJzLmg6CisgICAgICAgICogV2ViQXBwbGljYXRp
b25DYWNoZS5jcHA6CisgICAgICAgIChXZWJBcHBsaWNhdGlvbkNhY2hlOjpvcmlnaW5zV2l0aENh
Y2hlKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6
CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRGYWlsVG9TdGFydFBs
dWdpbiBjb25zdCk6CisgICAgICAgICogV2ViRG93bmxvYWRDRk5ldC5jcHA6CisgICAgICAgIChX
ZWJEb3dubG9hZDo6aW5pdFRvUmVzdW1lV2l0aEJ1bmRsZSk6CisgICAgICAgIChXZWJEb3dubG9h
ZDo6c2V0RGVzdGluYXRpb24pOgorICAgICAgICAoV2ViRG93bmxvYWQ6OndpbGxTZW5kUmVxdWVz
dCk6CisgICAgICAgICogV2ViSGlzdG9yeS5jcHA6CisgICAgICAgIChjcmVhdGVVc2VySW5mb0Zy
b21BcnJheSk6CisgICAgICAgICogV2ViTG9jYWxpemFibGVTdHJpbmdzLmNwcDoKKyAgICAgICAg
KGNyZWF0ZVdlYktpdEJ1bmRsZSk6CisKIDIwMjEtMDItMTAgIFJvYiBCdWlzICA8cmJ1aXNAaWdh
bGlhLmNvbT4KIAogICAgICAgICBVc2UgZXZlbnQgbG9vcCB0byBzZXQgdGl0bGUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0Lm1tIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU0NvbnRleHQubW0KaW5kZXggMGJhNzk5MWVmN2IyN2RhZTI1NTFkNjA0
ZWZjM2RjN2IzMzJjM2JkYS4uYmViMTQzZDBhZjU0MWI5M2U5YmQzYjU1NGY3ZDA1ZTNlNjk4YTkw
OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHQubW0KKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHQubW0KQEAgLTI2Miw3ICsyNjIs
NyBAQCAtIChOU1N0cmluZyAqKW5hbWUKICAgICBpZiAoIW5hbWUpCiAgICAgICAgIHJldHVybiBu
aWw7CiAKLSAgICByZXR1cm4gQ0ZCcmlkZ2luZ1JlbGVhc2UoSlNTdHJpbmdDb3B5Q0ZTdHJpbmco
a0NGQWxsb2NhdG9yRGVmYXVsdCwgbmFtZSkpOworICAgIHJldHVybiBhZG9wdENGKEpTU3RyaW5n
Q29weUNGU3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIG5hbWUpKS5icmlkZ2luZ0F1dG9yZWxl
YXNlKCk7CiB9CiAKIC0gKHZvaWQpc2V0TmFtZTooTlNTdHJpbmcgKiluYW1lCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmFsdWUubW0gYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL0pTVmFsdWUubW0KaW5kZXggMTg0NGIwNjEzMjU1MWNlOWJiYWNlNDI0MjQxZjE2
YjliZGRkOTRlMi4uYWMwOWY2NTQ1MDdjM2RiZDQ5NjBmZDY3MTMzMmJiM2YxMWY5MDYyNSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlLm1tCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZS5tbQpAQCAtNzczLDcgKzc3Myw3IEBAIHN0YXRp
YyBKU0NvbnRhaW5lckNvbnZlcnRvcjo6VGFzayB2YWx1ZVRvT2JqZWN0V2l0aG91dENvcHkoSlNH
bG9iYWxDb250ZXh0UmVmIGNvCiAgICAgICAgIH0gZWxzZSBpZiAoSlNWYWx1ZUlzU3RyaW5nKGNv
bnRleHQsIHZhbHVlKSkgewogICAgICAgICAgICAgLy8gV291bGQgYmUgbmljZSB0byB1bmlxdWUg
c3RyaW5ncywgdG9vLgogICAgICAgICAgICAgYXV0byBqc3N0cmluZyA9IGFkb3B0UmVmKEpTVmFs
dWVUb1N0cmluZ0NvcHkoY29udGV4dCwgdmFsdWUsIDApKTsKLSAgICAgICAgICAgIHByaW1pdGl2
ZSA9IENGQnJpZGdpbmdSZWxlYXNlKEpTU3RyaW5nQ29weUNGU3RyaW5nKGtDRkFsbG9jYXRvckRl
ZmF1bHQsIGpzc3RyaW5nLmdldCgpKSk7CisgICAgICAgICAgICBwcmltaXRpdmUgPSBhZG9wdENG
KEpTU3RyaW5nQ29weUNGU3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIGpzc3RyaW5nLmdldCgp
KSkuYnJpZGdpbmdBdXRvcmVsZWFzZSgpOwogICAgICAgICB9IGVsc2UgaWYgKEpTVmFsdWVJc051
bGwoY29udGV4dCwgdmFsdWUpKQogICAgICAgICAgICAgcHJpbWl0aXZlID0gW05TTnVsbCBudWxs
XTsKICAgICAgICAgZWxzZSB7CkBAIC04ODEsNyArODgxLDcgQEAgaWQgdmFsdWVUb1N0cmluZyhK
U0dsb2JhbENvbnRleHRSZWYgY29udGV4dCwgSlNWYWx1ZVJlZiB2YWx1ZSwgSlNWYWx1ZVJlZiog
ZXhjZXAKICAgICAgICAgcmV0dXJuIG5pbDsKICAgICB9CiAKLSAgICByZXR1cm4gQ0ZCcmlkZ2lu
Z1JlbGVhc2UoSlNTdHJpbmdDb3B5Q0ZTdHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwganNzdHJp
bmcuZ2V0KCkpKTsKKyAgICByZXR1cm4gYWRvcHRDRihKU1N0cmluZ0NvcHlDRlN0cmluZyhrQ0ZB
bGxvY2F0b3JEZWZhdWx0LCBqc3N0cmluZy5nZXQoKSkpLmJyaWRnaW5nQXV0b3JlbGVhc2UoKTsK
IH0KIAogaWQgdmFsdWVUb0RhdGUoSlNHbG9iYWxDb250ZXh0UmVmIGNvbnRleHQsIEpTVmFsdWVS
ZWYgdmFsdWUsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL2NvY29hL1JlbW90ZUluc3BlY3RvclhQQ0Nvbm5l
Y3Rpb24ubW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9jb2NvYS9S
ZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uLm1tCmluZGV4IDcyMzEwM2EwMzg3M2IzN2I5YWVi
OWM3Y2ZlNGQ0MDk2Nzg0ZjNmMzYuLjgxM2MxNjMwZTNkNmEwY2JiMTY4YjI3NmM2NTBlMDU3MTcy
M2JlNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3Rl
L2NvY29hL1JlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24ubW0KKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvY29jb2EvUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVj
dGlvbi5tbQpAQCAtMTE3LDEwICsxMTcsMTAgQEAgTlNEaWN0aW9uYXJ5ICpSZW1vdGVJbnNwZWN0
b3JYUENDb25uZWN0aW9uOjpkZXNlcmlhbGl6ZU1lc3NhZ2UoeHBjX29iamVjdF90IG9iamUKICAg
ICAgICAgcmV0dXJuIG5pbDsKICAgICB9CiAKLSAgICBhdXRvIGRpY3Rpb25hcnkgPSBfQ0ZYUEND
cmVhdGVDRk9iamVjdEZyb21YUENNZXNzYWdlKHhwY0RpY3Rpb25hcnkpOworICAgIGF1dG8gZGlj
dGlvbmFyeSA9IGFkb3B0Q0YoX0NGWFBDQ3JlYXRlQ0ZPYmplY3RGcm9tWFBDTWVzc2FnZSh4cGNE
aWN0aW9uYXJ5KSk7CiAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShkaWN0aW9uYXJ5LCAiVW5hYmxl
IHRvIGRlc2VyaWFsaXplIHhwYyBtZXNzYWdlIik7Ci0gICAgQVNTRVJUKENGR2V0VHlwZUlEKGRp
Y3Rpb25hcnkpID09IENGRGljdGlvbmFyeUdldFR5cGVJRCgpKTsKLSAgICByZXR1cm4gQ0ZCcmlk
Z2luZ1JlbGVhc2UoZGljdGlvbmFyeSk7CisgICAgQVNTRVJUKENGR2V0VHlwZUlEKGRpY3Rpb25h
cnkuZ2V0KCkpID09IENGRGljdGlvbmFyeUdldFR5cGVJRCgpKTsKKyAgICByZXR1cm4gZGljdGlv
bmFyeS5icmlkZ2luZ0F1dG9yZWxlYXNlKCk7CiB9CiAKIHZvaWQgUmVtb3RlSW5zcGVjdG9yWFBD
Q29ubmVjdGlvbjo6aGFuZGxlRXZlbnQoeHBjX29iamVjdF90IG9iamVjdCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL2NvY29hL05TVVJMRXh0cmFzLm1tIGIvU291cmNlL1dURi93dGYvY29j
b2EvTlNVUkxFeHRyYXMubW0KaW5kZXggMjA5ZWE1Yjg2NjRhMWJhMzE5MmY5ZWMyMzUzOWUzMGNl
MmM5N2E4Mi4uNzUwOGYyZjRmMmRjNDJlODJhZjgxZjYzNDgyMGM1ZGQ3NjA2NWQwZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi93dGYvY29jb2EvTlNVUkxFeHRyYXMubW0KKysrIGIvU291cmNlL1dU
Ri93dGYvY29jb2EvTlNVUkxFeHRyYXMubW0KQEAgLTkyLDEwICs5MiwxMCBAQCB2b2lkIGxvYWRJ
RE5BbGxvd2VkU2NyaXB0TGlzdCgpCiAgICAgCiBzdGF0aWMgU3RyaW5nIGRlY29kZVBlcmNlbnRF
c2NhcGVzKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogewotICAgIE5TU3RyaW5nICpzdWJzdHJpbmcg
PSBDRkJyaWRnaW5nUmVsZWFzZShDRlVSTENyZWF0ZVN0cmluZ0J5UmVwbGFjaW5nUGVyY2VudEVz
Y2FwZXMobnVsbHB0ciwgc3RyaW5nLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIENGU1RSKCIiKSkp
OworICAgIGF1dG8gc3Vic3RyaW5nID0gYWRvcHRDRihDRlVSTENyZWF0ZVN0cmluZ0J5UmVwbGFj
aW5nUGVyY2VudEVzY2FwZXMobnVsbHB0ciwgc3RyaW5nLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCks
IENGU1RSKCIiKSkpOwogICAgIGlmICghc3Vic3RyaW5nKQogICAgICAgICByZXR1cm4gc3RyaW5n
OwotICAgIHJldHVybiBzdWJzdHJpbmc7CisgICAgcmV0dXJuIHN1YnN0cmluZy5nZXQoKTsKIH0K
IAogTlNTdHJpbmcgKmRlY29kZUhvc3ROYW1lKE5TU3RyaW5nICpzdHJpbmcpCkBAIC0xMzgsMTEg
KzEzOCwxMSBAQCBOU1VSTCAqVVJMQnlUcnVuY2F0aW5nT25lQ2hhcmFjdGVyQmVmb3JlQ29tcG9u
ZW50KE5TVVJMICpVUkwsIENGVVJMQ29tcG9uZW50VHlwZQogICAgICAgICBDRlVSTEdldEJ5dGVz
KChfX2JyaWRnZSBDRlVSTFJlZilVUkwsIHVybEJ5dGVzLmRhdGEoKSwgbnVtQnl0ZXMpOwogICAg
IH0KIAotICAgIENGVVJMUmVmIHJlc3VsdCA9IENGVVJMQ3JlYXRlV2l0aEJ5dGVzKG51bGxwdHIs
IHVybEJ5dGVzLmRhdGEoKSwgZnJhZ1JnLmxvY2F0aW9uIC0gMSwga0NGU3RyaW5nRW5jb2RpbmdV
VEY4LCBudWxscHRyKTsKKyAgICBhdXRvIHJlc3VsdCA9IGFkb3B0Q0YoQ0ZVUkxDcmVhdGVXaXRo
Qnl0ZXMobnVsbHB0ciwgdXJsQnl0ZXMuZGF0YSgpLCBmcmFnUmcubG9jYXRpb24gLSAxLCBrQ0ZT
dHJpbmdFbmNvZGluZ1VURjgsIG51bGxwdHIpKTsKICAgICBpZiAoIXJlc3VsdCkKLSAgICAgICAg
cmVzdWx0ID0gQ0ZVUkxDcmVhdGVXaXRoQnl0ZXMobnVsbHB0ciwgdXJsQnl0ZXMuZGF0YSgpLCBm
cmFnUmcubG9jYXRpb24gLSAxLCBrQ0ZTdHJpbmdFbmNvZGluZ0lTT0xhdGluMSwgbnVsbHB0cik7
CisgICAgICAgIHJlc3VsdCA9IGFkb3B0Q0YoQ0ZVUkxDcmVhdGVXaXRoQnl0ZXMobnVsbHB0ciwg
dXJsQnl0ZXMuZGF0YSgpLCBmcmFnUmcubG9jYXRpb24gLSAxLCBrQ0ZTdHJpbmdFbmNvZGluZ0lT
T0xhdGluMSwgbnVsbHB0cikpOwogICAgICAgICAKLSAgICByZXR1cm4gcmVzdWx0ID8gQ0ZCcmlk
Z2luZ1JlbGVhc2UocmVzdWx0KSA6IFVSTDsKKyAgICByZXR1cm4gcmVzdWx0ID8gcmVzdWx0LmJy
aWRnaW5nQXV0b3JlbGVhc2UoKSA6IFVSTDsKIH0KIAogc3RhdGljIE5TVVJMICpVUkxCeVJlbW92
aW5nUmVzb3VyY2VTcGVjaWZpZXIoTlNVUkwgKlVSTCkKQEAgLTE1NSw3ICsxNTUsNiBAQCBOU1VS
TCAqVVJMV2l0aERhdGEoTlNEYXRhICpkYXRhLCBOU1VSTCAqYmFzZVVSTCkKICAgICBpZiAoIWRh
dGEpCiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgCi0gICAgTlNVUkwgKnJlc3VsdCA9IG5pbDsK
ICAgICBzaXplX3QgbGVuZ3RoID0gW2RhdGEgbGVuZ3RoXTsKICAgICBpZiAobGVuZ3RoID4gMCkg
ewogICAgICAgICAvLyB3b3JrIGFyb3VuZCA8cmRhcjovLzQ0NzA3NzE+OiBDRlVSTENyZWF0ZUFi
c29sdXRlVVJMV2l0aEJ5dGVzKC4uLCBUUlVFKSBkb2Vzbid0IHJlbW92ZSBub24tcGF0aCBjb21w
b25lbnRzLgpAQCAtMTcxLDEzICsxNzAsMTIgQEAgTlNVUkwgKlVSTFdpdGhEYXRhKE5TRGF0YSAq
ZGF0YSwgTlNVUkwgKmJhc2VVUkwpCiAgICAgICAgIC8vIChlLmcgY2FsbHMgdG8gTlNVUkwgLXBh
dGgpLiBIb3dldmVyLCB0aGlzIGZ1bmN0aW9uIGlzIG5vdCB0b2xlcmFudCBvZiBpbGxlZ2FsIFVU
Ri04IHNlcXVlbmNlcywgd2hpY2gKICAgICAgICAgLy8gY291bGQgZWl0aGVyIGJlIGEgbWFsZm9y
bWVkIHN0cmluZyBvciBieXRlcyBpbiBhIGRpZmZlcmVudCBlbmNvZGluZywgbGlrZSBzaGlmdC1q
aXMsIHNvIHdlIGZhbGwgYmFjawogICAgICAgICAvLyBvbnRvIHVzaW5nIElTTyBMYXRpbiAxIGlu
IHRob3NlIGNhc2VzLgotICAgICAgICByZXN1bHQgPSBDRkJyaWRnaW5nUmVsZWFzZShDRlVSTENy
ZWF0ZUFic29sdXRlVVJMV2l0aEJ5dGVzKG51bGxwdHIsIGJ5dGVzLCBsZW5ndGgsIGtDRlN0cmlu
Z0VuY29kaW5nVVRGOCwgKF9fYnJpZGdlIENGVVJMUmVmKWJhc2VVUkwsIFlFUykpOworICAgICAg
ICBhdXRvIHJlc3VsdCA9IGFkb3B0Q0YoQ0ZVUkxDcmVhdGVBYnNvbHV0ZVVSTFdpdGhCeXRlcyhu
dWxscHRyLCBieXRlcywgbGVuZ3RoLCBrQ0ZTdHJpbmdFbmNvZGluZ1VURjgsIChfX2JyaWRnZSBD
RlVSTFJlZiliYXNlVVJMLCBZRVMpKTsKICAgICAgICAgaWYgKCFyZXN1bHQpCi0gICAgICAgICAg
ICByZXN1bHQgPSBDRkJyaWRnaW5nUmVsZWFzZShDRlVSTENyZWF0ZUFic29sdXRlVVJMV2l0aEJ5
dGVzKG51bGxwdHIsIGJ5dGVzLCBsZW5ndGgsIGtDRlN0cmluZ0VuY29kaW5nSVNPTGF0aW4xLCAo
X19icmlkZ2UgQ0ZVUkxSZWYpYmFzZVVSTCwgWUVTKSk7Ci0gICAgfSBlbHNlCi0gICAgICAgIHJl
c3VsdCA9IFtOU1VSTCBVUkxXaXRoU3RyaW5nOkAiIl07Ci0KLSAgICByZXR1cm4gcmVzdWx0Owor
ICAgICAgICAgICAgcmVzdWx0ID0gYWRvcHRDRihDRlVSTENyZWF0ZUFic29sdXRlVVJMV2l0aEJ5
dGVzKG51bGxwdHIsIGJ5dGVzLCBsZW5ndGgsIGtDRlN0cmluZ0VuY29kaW5nSVNPTGF0aW4xLCAo
X19icmlkZ2UgQ0ZVUkxSZWYpYmFzZVVSTCwgWUVTKSk7CisgICAgICAgIHJldHVybiByZXN1bHQu
YnJpZGdpbmdBdXRvcmVsZWFzZSgpOworICAgIH0KKyAgICByZXR1cm4gW05TVVJMIFVSTFdpdGhT
dHJpbmc6QCIiXTsKIH0KIHN0YXRpYyBOU0RhdGEgKmRhdGFXaXRoVXNlclR5cGVkU3RyaW5nKE5T
U3RyaW5nICpzdHJpbmcpCiB7CkBAIC0zMzYsMTEgKzMzNCwxMSBAQCBzdGF0aWMgTlNVUkwgKlVS
TEJ5UmVtb3ZpbmdDb21wb25lbnRBbmRTdWJzZXF1ZW50Q2hhcmFjdGVyKE5TVVJMICpVUkwsIENG
VVJMQ29tcAogICAgICAgICAKICAgICBtZW1tb3ZlKHVybEJ5dGVzICsgcmFuZ2UubG9jYXRpb24s
IHVybEJ5dGVzICsgcmFuZ2UubG9jYXRpb24gKyByYW5nZS5sZW5ndGgsIG51bUJ5dGVzIC0gcmFu
Z2UubG9jYXRpb24gKyByYW5nZS5sZW5ndGgpOwogICAgIAotICAgIENGVVJMUmVmIHJlc3VsdCA9
IENGVVJMQ3JlYXRlV2l0aEJ5dGVzKG51bGxwdHIsIHVybEJ5dGVzLCBudW1CeXRlcyAtIHJhbmdl
Lmxlbmd0aCwga0NGU3RyaW5nRW5jb2RpbmdVVEY4LCBudWxscHRyKTsKKyAgICBhdXRvIHJlc3Vs
dCA9IGFkb3B0Q0YoQ0ZVUkxDcmVhdGVXaXRoQnl0ZXMobnVsbHB0ciwgdXJsQnl0ZXMsIG51bUJ5
dGVzIC0gcmFuZ2UubGVuZ3RoLCBrQ0ZTdHJpbmdFbmNvZGluZ1VURjgsIG51bGxwdHIpKTsKICAg
ICBpZiAoIXJlc3VsdCkKLSAgICAgICAgcmVzdWx0ID0gQ0ZVUkxDcmVhdGVXaXRoQnl0ZXMobnVs
bHB0ciwgdXJsQnl0ZXMsIG51bUJ5dGVzIC0gcmFuZ2UubGVuZ3RoLCBrQ0ZTdHJpbmdFbmNvZGlu
Z0lTT0xhdGluMSwgbnVsbHB0cik7CisgICAgICAgIHJlc3VsdCA9IGFkb3B0Q0YoQ0ZVUkxDcmVh
dGVXaXRoQnl0ZXMobnVsbHB0ciwgdXJsQnl0ZXMsIG51bUJ5dGVzIC0gcmFuZ2UubGVuZ3RoLCBr
Q0ZTdHJpbmdFbmNvZGluZ0lTT0xhdGluMSwgbnVsbHB0cikpOwogICAgICAgICAgICAgICAgIAot
ICAgIHJldHVybiByZXN1bHQgPyBDRkJyaWRnaW5nUmVsZWFzZShyZXN1bHQpIDogVVJMOworICAg
IHJldHVybiByZXN1bHQgPyByZXN1bHQuYnJpZGdpbmdBdXRvcmVsZWFzZSgpIDogVVJMOwogfQog
CiBOU1VSTCAqVVJMQnlSZW1vdmluZ1VzZXJJbmZvKE5TVVJMICpVUkwpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9BWE9iamVjdENhY2hlTWFjLm1tIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvQVhPYmplY3RDYWNoZU1hYy5tbQppbmRleCBi
N2NmZjc0ZTc2MmEyOGUwNDU1NzQ2NDE2MTJkZTg0YjU2OTQxZjI1Li42OWNlZTI4NWU2NjNmYTU2
OGViZmM3Y2E3ZjVmOWVjZDNmNTJmY2VkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L21hYy9BWE9iamVjdENhY2hlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvbWFjL0FYT2JqZWN0Q2FjaGVNYWMubW0KQEAgLTYwMyw3ICs2MDMsNyBAQCBz
dGF0aWMgQVhUZXh0TWFya2VyUmFuZ2VSZWYgQVhUZXh0TWFya2VyUmFuZ2UoQVhUZXh0TWFya2Vy
UmVmIHN0YXJ0TWFya2VyLCBBWFRleAogICAgIEFTU0VSVChlbmRNYXJrZXIpOwogICAgIEFTU0VS
VChDRkdldFR5cGVJRCgoX19icmlkZ2UgQ0ZUeXBlUmVmKXN0YXJ0TWFya2VyKSA9PSBBWFRleHRN
YXJrZXJHZXRUeXBlSUQoKSk7CiAgICAgQVNTRVJUKENGR2V0VHlwZUlEKChfX2JyaWRnZSBDRlR5
cGVSZWYpZW5kTWFya2VyKSA9PSBBWFRleHRNYXJrZXJHZXRUeXBlSUQoKSk7Ci0gICAgcmV0dXJu
IChBWFRleHRNYXJrZXJSYW5nZVJlZilDRkJyaWRnaW5nUmVsZWFzZShBWFRleHRNYXJrZXJSYW5n
ZUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBzdGFydE1hcmtlciwgZW5kTWFya2VyKSk7Cisg
ICAgcmV0dXJuIChBWFRleHRNYXJrZXJSYW5nZVJlZilhZG9wdENGKEFYVGV4dE1hcmtlclJhbmdl
Q3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIHN0YXJ0TWFya2VyLCBlbmRNYXJrZXIpKS5icmlk
Z2luZ0F1dG9yZWxlYXNlKCk7CiB9CiAKIHN0YXRpYyBBWFRleHRNYXJrZXJSYW5nZVJlZiB0ZXh0
TWFya2VyUmFuZ2VGcm9tTWFya2VycyhBWFRleHRNYXJrZXJSZWYgdGV4dE1hcmtlcjEsIEFYVGV4
dE1hcmtlclJlZiB0ZXh0TWFya2VyMikKQEAgLTYxOCwxNCArNjE4LDE0IEBAIHN0YXRpYyBBWFRl
eHRNYXJrZXJSZWYgQVhUZXh0TWFya2VyUmFuZ2VTdGFydChBWFRleHRNYXJrZXJSYW5nZVJlZiB0
ZXh0TWFya2VyUmFuCiB7CiAgICAgQVNTRVJUKHRleHRNYXJrZXJSYW5nZSk7CiAgICAgQVNTRVJU
KENGR2V0VHlwZUlEKChfX2JyaWRnZSBDRlR5cGVSZWYpdGV4dE1hcmtlclJhbmdlKSA9PSBBWFRl
eHRNYXJrZXJSYW5nZUdldFR5cGVJRCgpKTsKLSAgICByZXR1cm4gKEFYVGV4dE1hcmtlclJlZilD
RkJyaWRnaW5nUmVsZWFzZShBWFRleHRNYXJrZXJSYW5nZUNvcHlTdGFydE1hcmtlcih0ZXh0TWFy
a2VyUmFuZ2UpKTsKKyAgICByZXR1cm4gKEFYVGV4dE1hcmtlclJlZilhZG9wdENGKEFYVGV4dE1h
cmtlclJhbmdlQ29weVN0YXJ0TWFya2VyKHRleHRNYXJrZXJSYW5nZSkpLmJyaWRnaW5nQXV0b3Jl
bGVhc2UoKTsKIH0KIAogc3RhdGljIEFYVGV4dE1hcmtlclJlZiBBWFRleHRNYXJrZXJSYW5nZUVu
ZChBWFRleHRNYXJrZXJSYW5nZVJlZiB0ZXh0TWFya2VyUmFuZ2UpCiB7CiAgICAgQVNTRVJUKHRl
eHRNYXJrZXJSYW5nZSk7CiAgICAgQVNTRVJUKENGR2V0VHlwZUlEKChfX2JyaWRnZSBDRlR5cGVS
ZWYpdGV4dE1hcmtlclJhbmdlKSA9PSBBWFRleHRNYXJrZXJSYW5nZUdldFR5cGVJRCgpKTsKLSAg
ICByZXR1cm4gKEFYVGV4dE1hcmtlclJlZilDRkJyaWRnaW5nUmVsZWFzZShBWFRleHRNYXJrZXJS
YW5nZUNvcHlFbmRNYXJrZXIodGV4dE1hcmtlclJhbmdlKSk7CisgICAgcmV0dXJuIChBWFRleHRN
YXJrZXJSZWYpYWRvcHRDRihBWFRleHRNYXJrZXJSYW5nZUNvcHlFbmRNYXJrZXIodGV4dE1hcmtl
clJhbmdlKSkuYnJpZGdpbmdBdXRvcmVsZWFzZSgpOwogfQogCiBzdGF0aWMgVGV4dE1hcmtlckRh
dGEgZ2V0Qnl0ZXNGcm9tQVhUZXh0TWFya2VyKEFYVGV4dE1hcmtlclJlZiB0ZXh0TWFya2VyKQpA
QCAtNjcxLDcgKzY3MSw3IEBAIEFYVGV4dE1hcmtlclJlZiB0ZXh0TWFya2VyRm9yVmlzaWJsZVBv
c2l0aW9uKEFYT2JqZWN0Q2FjaGUqIGNhY2hlLCBjb25zdCBWaXNpYmxlCiAgICAgaWYgKCF0ZXh0
TWFya2VyRGF0YSkKICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAgIHJldHVybiAoQVhUZXh0TWFy
a2VyUmVmKUNGQnJpZGdpbmdSZWxlYXNlKEFYVGV4dE1hcmtlckNyZWF0ZShrQ0ZBbGxvY2F0b3JE
ZWZhdWx0LCAoY29uc3QgVUludDgqKSZ0ZXh0TWFya2VyRGF0YS52YWx1ZSgpLCBzaXplb2YodGV4
dE1hcmtlckRhdGEudmFsdWUoKSkpKTsKKyAgICByZXR1cm4gKEFYVGV4dE1hcmtlclJlZilhZG9w
dENGKEFYVGV4dE1hcmtlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAoY29uc3QgVUludDgq
KSZ0ZXh0TWFya2VyRGF0YS52YWx1ZSgpLCBzaXplb2YodGV4dE1hcmtlckRhdGEudmFsdWUoKSkp
KS5icmlkZ2luZ0F1dG9yZWxlYXNlKCk7CiB9CiAKIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9z
aXRpb25Gb3JUZXh0TWFya2VyKEFYT2JqZWN0Q2FjaGUqIGNhY2hlLCBBWFRleHRNYXJrZXJSZWYg
dGV4dE1hcmtlcikKQEAgLTcyMSw3ICs3MjEsNyBAQCBBWFRleHRNYXJrZXJSZWYgdGV4dE1hcmtl
ckZvckNoYXJhY3Rlck9mZnNldChBWE9iamVjdENhY2hlKiBjYWNoZSwgY29uc3QgQ2hhcmFjdAog
ICAgIGlmICghdGV4dE1hcmtlckRhdGEuYXhJRCB8fCB0ZXh0TWFya2VyRGF0YS5pZ25vcmVkKQog
ICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgcmV0dXJuIChBWFRleHRNYXJrZXJSZWYpQ0ZCcmlk
Z2luZ1JlbGVhc2UoQVhUZXh0TWFya2VyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIChjb25z
dCBVSW50OCopJnRleHRNYXJrZXJEYXRhLCBzaXplb2YodGV4dE1hcmtlckRhdGEpKSk7CisgICAg
cmV0dXJuIChBWFRleHRNYXJrZXJSZWYpYWRvcHRDRihBWFRleHRNYXJrZXJDcmVhdGUoa0NGQWxs
b2NhdG9yRGVmYXVsdCwgKGNvbnN0IFVJbnQ4KikmdGV4dE1hcmtlckRhdGEsIHNpemVvZih0ZXh0
TWFya2VyRGF0YSkpKS5icmlkZ2luZ0F1dG9yZWxlYXNlKCk7CiB9CiAKIENoYXJhY3Rlck9mZnNl
dCBjaGFyYWN0ZXJPZmZzZXRGb3JUZXh0TWFya2VyKEFYT2JqZWN0Q2FjaGUqIGNhY2hlLCBBWFRl
eHRNYXJrZXJSZWYgdGV4dE1hcmtlcikKQEAgLTc0Nyw3ICs3NDcsNyBAQCBBWFRleHRNYXJrZXJS
ZWYgc3RhcnRPckVuZFRleHRNYXJrZXJGb3JSYW5nZShBWE9iamVjdENhY2hlKiBjYWNoZSwgY29u
c3QgT3B0aW9uYQogICAgIGlmICghdGV4dE1hcmtlckRhdGEuYXhJRCkKICAgICAgICAgcmV0dXJu
IG5pbDsKIAotICAgIHJldHVybiAoQVhUZXh0TWFya2VyUmVmKUNGQnJpZGdpbmdSZWxlYXNlKEFY
VGV4dE1hcmtlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAoY29uc3QgVUludDgqKSZ0ZXh0
TWFya2VyRGF0YSwgc2l6ZW9mKHRleHRNYXJrZXJEYXRhKSkpOworICAgIHJldHVybiAoQVhUZXh0
TWFya2VyUmVmKWFkb3B0Q0YoQVhUZXh0TWFya2VyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQs
IChjb25zdCBVSW50OCopJnRleHRNYXJrZXJEYXRhLCBzaXplb2YodGV4dE1hcmtlckRhdGEpKSku
YnJpZGdpbmdBdXRvcmVsZWFzZSgpOwogfQogCiBBWFRleHRNYXJrZXJSYW5nZVJlZiB0ZXh0TWFy
a2VyUmFuZ2VGcm9tUmFuZ2UoQVhPYmplY3RDYWNoZSogY2FjaGUsIGNvbnN0IE9wdGlvbmFsPFNp
bXBsZVJhbmdlPiYgcmFuZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2Uu
bW0KaW5kZXggOTMwNzY4N2I3ZjgwN2RiNWFiYTQ2Nzc1MDg2YzRhNWNjOGRlNzBjMS4uMGZjODI4
ODQ2ZGIzMWZhOGIwNTY1YjFjYjdmZmMwOTgwNmY0MDg0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNl
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxp
dHlPYmplY3RXcmFwcGVyQmFzZS5tbQpAQCAtMzI0LDggKzMyNCw3IEBAIC0gKFdlYkNvcmU6OkFY
Q29yZU9iamVjdCopdXBkYXRlT2JqZWN0QmFja2luZ1N0b3JlCiB7CiAgICAgLy8gQ2FsbGluZyB1
cGRhdGVCYWNraW5nU3RvcmUoKSBjYW4gaW52YWxpZGF0ZSB0aGlzIGVsZW1lbnQgc28gc2VsZiBt
dXN0IGJlIHJldGFpbmVkLgogICAgIC8vIElmIGl0IGRvZXMgYmVjb21lIGludmFsaWRhdGVkLCBz
ZWxmLmF4QmFja2luZ09iamVjdCB3aWxsIGJlIG5pbC4KLSAgICBDRlJldGFpbigoX19icmlkZ2Ug
Q0ZUeXBlUmVmKXNlbGYpOwotICAgIENGQXV0b3JlbGVhc2UoKF9fYnJpZGdlIENGVHlwZVJlZilz
ZWxmKTsKKyAgICByZXRhaW5QdHIoc2VsZikuYXV0b3JlbGVhc2UoKTsKIAogICAgIGF1dG8qIGJh
Y2tpbmdPYmplY3QgPSBzZWxmLmF4QmFja2luZ09iamVjdDsKICAgICBpZiAoIWJhY2tpbmdPYmpl
Y3QpCkBAIC00MzMsMTEgKzQzMiwxMCBAQCBzdGF0aWMgdm9pZCBjb252ZXJ0UGF0aFRvU2NyZWVu
U3BhY2VGdW5jdGlvbihQYXRoQ29udmVyc2lvbkluZm8mIGNvbnZlcnNpb24sIGNvbgogCiAtIChD
R1BhdGhSZWYpY29udmVydFBhdGhUb1NjcmVlblNwYWNlOihjb25zdCBQYXRoJilwYXRoCiB7Ci0g
ICAgUGF0aENvbnZlcnNpb25JbmZvIGNvbnZlcnNpb24gPSB7IHNlbGYsIENHUGF0aENyZWF0ZU11
dGFibGUoKSB9OworICAgIFBhdGhDb252ZXJzaW9uSW5mbyBjb252ZXJzaW9uID0geyBzZWxmLCBh
ZG9wdENGKENHUGF0aENyZWF0ZU11dGFibGUoKSkuYXV0b3JlbGVhc2UoKSB9OwogICAgIHBhdGgu
YXBwbHkoWyZjb252ZXJzaW9uXShjb25zdCBQYXRoRWxlbWVudCYgcGF0aEVsZW1lbnQpIHsKICAg
ICAgICAgY29udmVydFBhdGhUb1NjcmVlblNwYWNlRnVuY3Rpb24oY29udmVyc2lvbiwgcGF0aEVs
ZW1lbnQpOwogICAgIH0pOwotICAgIENGQXV0b3JlbGVhc2UoY29udmVyc2lvbi5wYXRoKTsKICAg
ICByZXR1cm4gY29udmVyc2lvbi5wYXRoOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbSBi
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RX
cmFwcGVyTWFjLm1tCmluZGV4IDgzZWYyNGMxNThhZTcwYzM2MjRmOTM1M2M3NjlmZGUwY2MyNzU2
NmUuLjJiMDA1Y2U2NzU5MDk0Njc0MGNjYmVjMzYwOTMwMmVkZDhjZjlmOGYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RX
cmFwcGVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCkBAIC03NDIsNyArNzQyLDcgQEAgc3RhdGlj
IGlkIG5leHRUZXh0TWFya2VyRm9yQ2hhcmFjdGVyT2Zmc2V0KEFYT2JqZWN0Q2FjaGUqIGNhY2hl
LCBDaGFyYWN0ZXJPZmZzZXQKICAgICBjYWNoZS0+dGV4dE1hcmtlckRhdGFGb3JOZXh0Q2hhcmFj
dGVyT2Zmc2V0KHRleHRNYXJrZXJEYXRhLCBjaGFyYWN0ZXJPZmZzZXQpOwogICAgIGlmICghdGV4
dE1hcmtlckRhdGEuYXhJRCkKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICByZXR1cm4gQ0ZCcmlk
Z2luZ1JlbGVhc2UoQVhUZXh0TWFya2VyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIChjb25z
dCBVSW50OCopJnRleHRNYXJrZXJEYXRhLCBzaXplb2YodGV4dE1hcmtlckRhdGEpKSk7CisgICAg
cmV0dXJuIGFkb3B0Q0YoQVhUZXh0TWFya2VyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIChj
b25zdCBVSW50OCopJnRleHRNYXJrZXJEYXRhLCBzaXplb2YodGV4dE1hcmtlckRhdGEpKSkuYnJp
ZGdpbmdBdXRvcmVsZWFzZSgpOwogfQogCiBzdGF0aWMgaWQgcHJldmlvdXNUZXh0TWFya2VyRm9y
Q2hhcmFjdGVyT2Zmc2V0KEFYT2JqZWN0Q2FjaGUqIGNhY2hlLCBDaGFyYWN0ZXJPZmZzZXQmIGNo
YXJhY3Rlck9mZnNldCkKQEAgLTc1NCw3ICs3NTQsNyBAQCBzdGF0aWMgaWQgcHJldmlvdXNUZXh0
TWFya2VyRm9yQ2hhcmFjdGVyT2Zmc2V0KEFYT2JqZWN0Q2FjaGUqIGNhY2hlLCBDaGFyYWN0ZXJP
ZgogICAgIGNhY2hlLT50ZXh0TWFya2VyRGF0YUZvclByZXZpb3VzQ2hhcmFjdGVyT2Zmc2V0KHRl
eHRNYXJrZXJEYXRhLCBjaGFyYWN0ZXJPZmZzZXQpOwogICAgIGlmICghdGV4dE1hcmtlckRhdGEu
YXhJRCkKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICByZXR1cm4gQ0ZCcmlkZ2luZ1JlbGVhc2Uo
QVhUZXh0TWFya2VyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIChjb25zdCBVSW50OCopJnRl
eHRNYXJrZXJEYXRhLCBzaXplb2YodGV4dE1hcmtlckRhdGEpKSk7CisgICAgcmV0dXJuIGFkb3B0
Q0YoQVhUZXh0TWFya2VyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIChjb25zdCBVSW50OCop
JnRleHRNYXJrZXJEYXRhLCBzaXplb2YodGV4dE1hcmtlckRhdGEpKSkuYnJpZGdpbmdBdXRvcmVs
ZWFzZSgpOwogfQogCiAtIChpZCluZXh0VGV4dE1hcmtlckZvckNoYXJhY3Rlck9mZnNldDooQ2hh
cmFjdGVyT2Zmc2V0JiljaGFyYWN0ZXJPZmZzZXQKQEAgLTc5Miw3ICs3OTIsNyBAQCAtIChpZCl0
ZXh0TWFya2VyRm9yRmlyc3RQb3NpdGlvbkluVGV4dENvbnRyb2w6KEhUTUxUZXh0Rm9ybUNvbnRy
b2xFbGVtZW50ICYpdGV4dAogICAgIGlmICghdGV4dE1hcmtlckRhdGEpCiAgICAgICAgIHJldHVy
biBuaWw7CiAKLSAgICByZXR1cm4gQ0ZCcmlkZ2luZ1JlbGVhc2UoQVhUZXh0TWFya2VyQ3JlYXRl
KGtDRkFsbG9jYXRvckRlZmF1bHQsIChjb25zdCBVSW50OCopJnRleHRNYXJrZXJEYXRhLnZhbHVl
KCksIHNpemVvZih0ZXh0TWFya2VyRGF0YS52YWx1ZSgpKSkpOworICAgIHJldHVybiBhZG9wdENG
KEFYVGV4dE1hcmtlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAoY29uc3QgVUludDgqKSZ0
ZXh0TWFya2VyRGF0YS52YWx1ZSgpLCBzaXplb2YodGV4dE1hcmtlckRhdGEudmFsdWUoKSkpKS5i
cmlkZ2luZ0F1dG9yZWxlYXNlKCk7CiB9CiAKIC8vIFdoZW4gbW9kaWZ5aW5nIGF0dHJpYnV0ZWQg
c3RyaW5ncywgdGhlIHJhbmdlIGNhbiBjb21lIGZyb20gYSBzb3VyY2Ugd2hpY2ggbWF5IHByb3Zp
ZGUgZmF1bHR5IGluZm9ybWF0aW9uIChlLmcuIHRoZSBzcGVsbCBjaGVja2VyKS4KQEAgLTEwMTgs
MTEgKzEwMTgsOCBAQCBzdGF0aWMgdm9pZCBBWEF0dHJpYnV0ZVN0cmluZ1NldEVsZW1lbnQoTlNN
dXRhYmxlQXR0cmlidXRlZFN0cmluZyogYXR0clN0cmluZywgTgogICAgICAgICBpZiAoW2F0dHJp
YnV0ZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5QXR0YWNobWVudFRleHRBdHRyaWJ1
dGVdICYmIG9iamVjdC0+aXNBdHRhY2htZW50KCkgJiYgW29iamVjdFdyYXBwZXIgYXR0YWNobWVu
dFZpZXddKQogICAgICAgICAgICAgb2JqZWN0V3JhcHBlciA9IFtvYmplY3RXcmFwcGVyIGF0dGFj
aG1lbnRWaWV3XTsKICAgICAgICAgCi0gICAgICAgIEFYVUlFbGVtZW50UmVmIGF4RWxlbWVudCA9
IE5TQWNjZXNzaWJpbGl0eUNyZWF0ZUFYVUlFbGVtZW50UmVmKG9iamVjdFdyYXBwZXIpOwotICAg
ICAgICBpZiAoYXhFbGVtZW50KSB7Ci0gICAgICAgICAgICBbYXR0clN0cmluZyBhZGRBdHRyaWJ1
dGU6YXR0cmlidXRlIHZhbHVlOihfX2JyaWRnZSBpZClheEVsZW1lbnQgcmFuZ2U6cmFuZ2VdOwot
ICAgICAgICAgICAgQ0ZSZWxlYXNlKGF4RWxlbWVudCk7Ci0gICAgICAgIH0KKyAgICAgICAgaWYg
KGF1dG8gYXhFbGVtZW50ID0gYWRvcHRDRihOU0FjY2Vzc2liaWxpdHlDcmVhdGVBWFVJRWxlbWVu
dFJlZihvYmplY3RXcmFwcGVyKSkpCisgICAgICAgICAgICBbYXR0clN0cmluZyBhZGRBdHRyaWJ1
dGU6YXR0cmlidXRlIHZhbHVlOihfX2JyaWRnZSBpZClheEVsZW1lbnQuZ2V0KCkgcmFuZ2U6cmFu
Z2VdOwogICAgIH0gZWxzZQogICAgICAgICBbYXR0clN0cmluZyByZW1vdmVBdHRyaWJ1dGU6YXR0
cmlidXRlIHJhbmdlOnJhbmdlXTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvY29jb2EvSFRNTENvbnZlcnRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2Ev
SFRNTENvbnZlcnRlci5tbQppbmRleCA2NWU4NTUyNTI1MGQ0MGJhYzBjM2YzODU2Yjc4Mzk4MzYw
YzBiOTI0Li44Y2FmYTdjMzZlNmRkNjA1MDkyNzdkZTBhY2ZkMmMwMzE1NjhkMGMyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCkBAIC0yMDkwLDcg
KzIwOTAsNiBAQCB2b2lkIEhUTUxDb252ZXJ0ZXI6Ol9wcm9jZXNzVGV4dChDaGFyYWN0ZXJEYXRh
JiBjaGFyYWN0ZXJEYXRhKQogICAgIHVuaWNoYXIgbGFzdENoYXIgPSAodGV4dExlbmd0aCA+IDAp
ID8gW1tfYXR0clN0ciBzdHJpbmddIGNoYXJhY3RlckF0SW5kZXg6dGV4dExlbmd0aCAtIDFdIDog
J1xuJzsKICAgICBCT09MIHN1cHByZXNzTGVhZGluZ1NwYWNlID0gKChfZmxhZ3MuaXNTb2Z0ICYm
IGxhc3RDaGFyID09ICcgJykgfHwgbGFzdENoYXIgPT0gJ1xuJyB8fCBsYXN0Q2hhciA9PSAnXHIn
IHx8IGxhc3RDaGFyID09ICdcdCcgfHwgbGFzdENoYXIgPT0gTlNQYXJhZ3JhcGhTZXBhcmF0b3JD
aGFyYWN0ZXIgfHwgbGFzdENoYXIgPT0gTlNMaW5lU2VwYXJhdG9yQ2hhcmFjdGVyIHx8IGxhc3RD
aGFyID09IE5TRm9ybUZlZWRDaGFyYWN0ZXIgfHwgbGFzdENoYXIgPT0gV2ViTmV4dExpbmVDaGFy
YWN0ZXIpOwogICAgIE5TUmFuZ2UgcmFuZ2VUb1JlcGxhY2UgPSBOU01ha2VSYW5nZSh0ZXh0TGVu
Z3RoLCAwKTsKLSAgICBDRk11dGFibGVTdHJpbmdSZWYgbXV0c3RyID0gTlVMTDsKIAogICAgIFN0
cmluZyBvcmlnaW5hbFN0cmluZyA9IGNoYXJhY3RlckRhdGEuZGF0YSgpOwogICAgIHVuc2lnbmVk
IHN0YXJ0T2Zmc2V0ID0gMDsKQEAgLTIxNjAsOCArMjE1OSw2IEBAIHZvaWQgSFRNTENvbnZlcnRl
cjo6X3Byb2Nlc3NUZXh0KENoYXJhY3RlckRhdGEmIGNoYXJhY3RlckRhdGEpCiAgICAgICAgICAg
ICBbX2F0dHJTdHIgc2V0QXR0cmlidXRlczphZ2dyZWdhdGVkQXR0cmlidXRlc0ZvckFuY2VzdG9y
cyhjaGFyYWN0ZXJEYXRhKSByYW5nZTpyYW5nZVRvUmVwbGFjZV07CiAgICAgICAgIF9mbGFncy5p
c1NvZnQgPSB3YXNTcGFjZTsKICAgICB9Ci0gICAgaWYgKG11dHN0cikKLSAgICAgICAgQ0ZSZWxl
YXNlKG11dHN0cik7CiB9CiAKIHZvaWQgSFRNTENvbnZlcnRlcjo6X3RyYXZlcnNlTm9kZShOb2Rl
JiBub2RlLCB1bnNpZ25lZCBkZXB0aCwgYm9vbCBlbWJlZGRlZCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLm1tCmluZGV4IDk2ZjQ2
YzRjYzAyZTg5YTgyYTZkZjY1MzY3NGQwOTczNDMxODA1NGYuLmZhNGI5MDNiZWY5Mzk0ODFjMjJl
YTdkZjU1MWU4YjU1ZTdlMGU1MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
b2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5tbQpAQCAtMTAyLDEwICsxMDIsOSBAQCBEaXNr
Q2FjaGVNb25pdG9yOjpEaXNrQ2FjaGVNb25pdG9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdCwgUEFMOjpTZXNzaW9uSQogCiAjaWYgVVNFKFdFQl9USFJFQUQpCiAgICAgYXV0byBibG9j
a1RvUnVuID0gXihDRkNhY2hlZFVSTFJlc3BvbnNlUmVmIHJlc3BvbnNlKSB7Ci0gICAgICAgIENG
UmV0YWluKHJlc3BvbnNlKTsKKyAgICAgICAgYXV0byBzdHJvbmdSZXNwb25zZSA9IHJldGFpblB0
cihyZXNwb25zZSk7CiAgICAgICAgIFdlYlRocmVhZFJ1biheewotICAgICAgICAgICAgYmxvY2so
cmVzcG9uc2UpOwotICAgICAgICAgICAgQ0ZSZWxlYXNlKHJlc3BvbnNlKTsKKyAgICAgICAgICAg
IGJsb2NrKHN0cm9uZ1Jlc3BvbnNlLmdldCgpKTsKICAgICAgICAgfSk7CiAgICAgfTsKICNlbHNl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9FdmVudEhhbmRsZXJNYWMubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9FdmVudEhhbmRsZXJNYWMubW0KaW5kZXggYjI0OWU0
ZjRmZDk5MmI0ZTYxYWU3ZmVmOTAwMDhmNTY4ZjkxMGU5Yi4uOWQxMGE5ZmE3ZjE5ZDQwMjFjMTQ4
N2Q1ZWJjYTY1MDNhZWNhYzQyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMv
RXZlbnRIYW5kbGVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0V2ZW50SGFu
ZGxlck1hYy5tbQpAQCAtNDY4LDEzICs0NjgsMTIgQEAgc3RhdGljIHZvaWQgc2V0TlNTY3JvbGxW
aWV3U2Nyb2xsV2hlZWxTaG91bGRSZXRhaW5TZWxmKGJvb2wgc2hvdWxkUmV0YWluKQogCiBzdGF0
aWMgdm9pZCBzZWxmUmV0YWluaW5nTlNTY3JvbGxWaWV3U2Nyb2xsV2hlZWwoTlNTY3JvbGxWaWV3
ICpzZWxmLCBTRUwgc2VsZWN0b3IsIE5TRXZlbnQgKmV2ZW50KQogeworICAgIFJldGFpblB0cjxO
U1Njcm9sbFZpZXc+IHN0cm9uZ1NlbGY7CiAgICAgYm9vbCBzaG91bGRSZXRhaW5TZWxmID0gaXNN
YWluVGhyZWFkKCkgJiYgbnNTY3JvbGxWaWV3U2Nyb2xsV2hlZWxTaG91bGRSZXRhaW5TZWxmKCk7
Ci0KICAgICBpZiAoc2hvdWxkUmV0YWluU2VsZikKLSAgICAgICAgQ0ZSZXRhaW4oKF9fYnJpZGdl
IENGVHlwZVJlZilzZWxmKTsKKyAgICAgICAgc3Ryb25nU2VsZiA9IHJldGFpblB0cihzZWxmKTsK
KwogICAgIHd0ZkNhbGxJTVA8dm9pZD4ob3JpZ2luYWxOU1Njcm9sbFZpZXdTY3JvbGxXaGVlbCwg
c2VsZiwgc2VsZWN0b3IsIGV2ZW50KTsKLSAgICBpZiAoc2hvdWxkUmV0YWluU2VsZikKLSAgICAg
ICAgQ0ZSZWxlYXNlKChfX2JyaWRnZSBDRlR5cGVSZWYpc2VsZik7CiB9CiAKIGJvb2wgRXZlbnRI
YW5kbGVyOjpwYXNzV2hlZWxFdmVudFRvV2lkZ2V0KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYg
d2hlZWxFdmVudCwgV2lkZ2V0JiB3aWRnZXQsIE9wdGlvblNldDxXaGVlbEV2ZW50UHJvY2Vzc2lu
Z1N0ZXBzPiBwcm9jZXNzaW5nU3RlcHMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L3dpbi9GcmFtZUNHV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvd2luL0ZyYW1lQ0dXaW4u
Y3BwCmluZGV4IGYwNTU2YTNkYWIyYTkyOWZmYmRjYzNhMjBhNjE5Njc1NmI2NjdhMjEuLjczZDhi
NDljZWE3Y2E2NThkNTU0NmQzZWIxNTIyYWQzNGMwYWVjMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2Uvd2luL0ZyYW1lQ0dXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
d2luL0ZyYW1lQ0dXaW4uY3BwCkBAIC02OCwxNSArNjgsMTQgQEAgR0RJT2JqZWN0PEhCSVRNQVA+
IGltYWdlRnJvbVJlY3QoY29uc3QgRnJhbWUqIGZyYW1lLCBJbnRSZWN0JiBpcikKICAgICAgICAg
cmV0dXJuIGhibXA7CiAKICAgICBIR0RJT0JKIGhibXBPbGQgPSBTZWxlY3RPYmplY3QoaGRjLmdl
dCgpLCBoYm1wLmdldCgpKTsKLSAgICBDR0NvbnRleHRSZWYgY29udGV4dCA9IENHQml0bWFwQ29u
dGV4dENyZWF0ZShzdGF0aWNfY2FzdDx2b2lkKj4oYml0cyksIHcsIGgsCi0gICAgICAgIDgsIHcg
KiBzaXplb2YoUkdCUVVBRCksIHNSR0JDb2xvclNwYWNlUmVmKCksIGtDR0JpdG1hcEJ5dGVPcmRl
cjMyTGl0dGxlIHwga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRGaXJzdCk7Ci0gICAgQ0dDb250
ZXh0U2F2ZUdTdGF0ZShjb250ZXh0KTsKKyAgICBhdXRvIGNvbnRleHQgPSBhZG9wdENGKENHQml0
bWFwQ29udGV4dENyZWF0ZShzdGF0aWNfY2FzdDx2b2lkKj4oYml0cyksIHcsIGgsCisgICAgICAg
IDgsIHcgKiBzaXplb2YoUkdCUVVBRCksIHNSR0JDb2xvclNwYWNlUmVmKCksIGtDR0JpdG1hcEJ5
dGVPcmRlcjMyTGl0dGxlIHwga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRGaXJzdCkpOworICAg
IENHQ29udGV4dFNhdmVHU3RhdGUoY29udGV4dC5nZXQoKSk7CiAKLSAgICBHcmFwaGljc0NvbnRl
eHQgZ2MoY29udGV4dCk7CisgICAgR3JhcGhpY3NDb250ZXh0IGdjKGNvbnRleHQuZ2V0KCkpOwog
CiAgICAgZHJhd1JlY3RJbnRvQ29udGV4dChpciwgZnJhbWUtPnZpZXcoKSwgZ2MpOwogCi0gICAg
Q0dDb250ZXh0UmVsZWFzZShjb250ZXh0KTsKICAgICBTZWxlY3RPYmplY3QoaGRjLmdldCgpLCBo
Ym1wT2xkKTsKIAogICAgIGZyYW1lLT52aWV3KCktPnNldFBhaW50QmVoYXZpb3Iob2xkUGFpbnRC
ZWhhdmlvcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9NYWluVGhy
ZWFkU2hhcmVkVGltZXJDRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9NYWluVGhy
ZWFkU2hhcmVkVGltZXJDRi5jcHAKaW5kZXggMjhjZDliNzNmZTZiOGE4OGE5NDRhMjAyMDlkN2E3
YTBlMDVlMDEwNC4uNTQyMGE1YTg1OWZiY2JjYzA0ZjVkNWY5ODVmMDg3MmE1NDA1MTNiOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvTWFpblRocmVhZFNoYXJlZFRpbWVy
Q0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL01haW5UaHJlYWRTaGFyZWRU
aW1lckNGLmNwcApAQCAtMzcsNyArMzcsMTEgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1z
dGF0aWMgQ0ZSdW5Mb29wVGltZXJSZWYgc2hhcmVkVGltZXI7CitzdGF0aWMgUmV0YWluUHRyPENG
UnVuTG9vcFRpbWVyUmVmPiYgc2hhcmVkVGltZXIoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxSZXRhaW5QdHI8Q0ZSdW5Mb29wVGltZXJSZWY+PiBzaGFyZWRUaW1lcjsKKyAgICByZXR1
cm4gc2hhcmVkVGltZXI7Cit9CiBzdGF0aWMgdm9pZCB0aW1lckZpcmVkKENGUnVuTG9vcFRpbWVy
UmVmLCB2b2lkKik7CiAKIHN0YXRpYyBjb25zdCBDRlRpbWVJbnRlcnZhbCBrQ0ZUaW1lSW50ZXJ2
YWxEaXN0YW50RnV0dXJlID0gc3RkOjpudW1lcmljX2xpbWl0czxDRlRpbWVJbnRlcnZhbD46Om1h
eCgpOwpAQCAtODMsNyArODcsNyBAQCBzdGF0aWMgdm9pZCB0aW1lckZpcmVkKENGUnVuTG9vcFRp
bWVyUmVmLCB2b2lkKikKIAogdm9pZCBNYWluVGhyZWFkU2hhcmVkVGltZXI6OnJlc3RhcnRTaGFy
ZWRUaW1lcigpCiB7Ci0gICAgaWYgKCFzaGFyZWRUaW1lcikKKyAgICBpZiAoIXNoYXJlZFRpbWVy
KCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIE1haW5UaHJlYWRTaGFyZWRUaW1lcjo6c2luZ2xl
dG9uKCkuc3RvcCgpOwpAQCAtOTIsMTIgKzk2LDExIEBAIHZvaWQgTWFpblRocmVhZFNoYXJlZFRp
bWVyOjpyZXN0YXJ0U2hhcmVkVGltZXIoKQogCiB2b2lkIE1haW5UaHJlYWRTaGFyZWRUaW1lcjo6
aW52YWxpZGF0ZSgpCiB7Ci0gICAgaWYgKCFzaGFyZWRUaW1lcikKKyAgICBpZiAoIXNoYXJlZFRp
bWVyKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIENGUnVuTG9vcFRpbWVySW52YWxpZGF0ZShz
aGFyZWRUaW1lcik7Ci0gICAgQ0ZSZWxlYXNlKHNoYXJlZFRpbWVyKTsKLSAgICBzaGFyZWRUaW1l
ciA9IG51bGxwdHI7CisgICAgQ0ZSdW5Mb29wVGltZXJJbnZhbGlkYXRlKHNoYXJlZFRpbWVyKCku
Z2V0KCkpOworICAgIHNoYXJlZFRpbWVyKCkgPSBudWxscHRyOwogfQogCiB2b2lkIE1haW5UaHJl
YWRTaGFyZWRUaW1lcjo6c2V0RmlyZUludGVydmFsKFNlY29uZHMgaW50ZXJ2YWwpCkBAIC0xMDUs
MTIgKzEwOCwxMiBAQCB2b2lkIE1haW5UaHJlYWRTaGFyZWRUaW1lcjo6c2V0RmlyZUludGVydmFs
KFNlY29uZHMgaW50ZXJ2YWwpCiAgICAgQVNTRVJUKG1fZmlyZWRGdW5jdGlvbik7CiAKICAgICBD
RkFic29sdXRlVGltZSBmaXJlRGF0ZSA9IENGQWJzb2x1dGVUaW1lR2V0Q3VycmVudCgpICsgaW50
ZXJ2YWwudmFsdWUoKTsKLSAgICBpZiAoIXNoYXJlZFRpbWVyKSB7Ci0gICAgICAgIHNoYXJlZFRp
bWVyID0gQ0ZSdW5Mb29wVGltZXJDcmVhdGUobnVsbHB0ciwgZmlyZURhdGUsIGtDRlRpbWVJbnRl
cnZhbERpc3RhbnRGdXR1cmUsIDAsIDAsIHRpbWVyRmlyZWQsIG51bGxwdHIpOworICAgIGlmICgh
c2hhcmVkVGltZXIoKSkgeworICAgICAgICBzaGFyZWRUaW1lcigpID0gYWRvcHRDRihDRlJ1bkxv
b3BUaW1lckNyZWF0ZShudWxscHRyLCBmaXJlRGF0ZSwga0NGVGltZUludGVydmFsRGlzdGFudEZ1
dHVyZSwgMCwgMCwgdGltZXJGaXJlZCwgbnVsbHB0cikpOwogI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCi0gICAgICAgIENGUnVuTG9vcEFkZFRpbWVyKFdlYlRocmVhZFJ1bkxvb3AoKSwgc2hhcmVk
VGltZXIsIGtDRlJ1bkxvb3BDb21tb25Nb2Rlcyk7CisgICAgICAgIENGUnVuTG9vcEFkZFRpbWVy
KFdlYlRocmVhZFJ1bkxvb3AoKSwgc2hhcmVkVGltZXIoKS5nZXQoKSwga0NGUnVuTG9vcENvbW1v
bk1vZGVzKTsKICNlbHNlCi0gICAgICAgIENGUnVuTG9vcEFkZFRpbWVyKENGUnVuTG9vcEdldEN1
cnJlbnQoKSwgc2hhcmVkVGltZXIsIGtDRlJ1bkxvb3BDb21tb25Nb2Rlcyk7CisgICAgICAgIENG
UnVuTG9vcEFkZFRpbWVyKENGUnVuTG9vcEdldEN1cnJlbnQoKSwgc2hhcmVkVGltZXIoKS5nZXQo
KSwga0NGUnVuTG9vcENvbW1vbk1vZGVzKTsKICNlbmRpZgogCiAgICAgICAgIHNldHVwUG93ZXJP
YnNlcnZlcigpOwpAQCAtMTE4LDE1ICsxMjEsMTUgQEAgdm9pZCBNYWluVGhyZWFkU2hhcmVkVGlt
ZXI6OnNldEZpcmVJbnRlcnZhbChTZWNvbmRzIGludGVydmFsKQogICAgICAgICByZXR1cm47CiAg
ICAgfQogCi0gICAgQ0ZSdW5Mb29wVGltZXJTZXROZXh0RmlyZURhdGUoc2hhcmVkVGltZXIsIGZp
cmVEYXRlKTsKKyAgICBDRlJ1bkxvb3BUaW1lclNldE5leHRGaXJlRGF0ZShzaGFyZWRUaW1lcigp
LmdldCgpLCBmaXJlRGF0ZSk7CiB9CiAKIHZvaWQgTWFpblRocmVhZFNoYXJlZFRpbWVyOjpzdG9w
KCkKIHsKLSAgICBpZiAoIXNoYXJlZFRpbWVyKQorICAgIGlmICghc2hhcmVkVGltZXIoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgQ0ZSdW5Mb29wVGltZXJTZXROZXh0RmlyZURhdGUoc2hhcmVk
VGltZXIsIGtDRlRpbWVJbnRlcnZhbERpc3RhbnRGdXR1cmUpOworICAgIENGUnVuTG9vcFRpbWVy
U2V0TmV4dEZpcmVEYXRlKHNoYXJlZFRpbWVyKCkuZ2V0KCksIGtDRlRpbWVJbnRlcnZhbERpc3Rh
bnRGdXR1cmUpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
Qy5tbQppbmRleCA1NzYxYzA5OWIxZjE5NGZhMWYwZDgwM2M2OTVkMDQyZmJlNDQ4M2E5Li5lZTRk
ZWNlN2IyYzQ5MmZlYzc1Yjk4ZDJhYmQwMmUxMGI3YTQ5N2ZlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akMubW0KQEAgLTI4MTAsMTIgKzI4MTAsMTIgQEAgc3RhdGljIE5TU3RyaW5nICpleGVybmFsRGV2
aWNlRGlzcGxheU5hbWVGb3JQbGF5ZXIoQVZQbGF5ZXIgKnBsYXllcikKICAgICBpZiAocGxheWVy
LmV4dGVybmFsUGxheWJhY2tUeXBlICE9IEFWUGxheWVyRXh0ZXJuYWxQbGF5YmFja1R5cGVBaXJQ
bGF5KQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgTlNBcnJheSAqcGlja2FibGVSb3V0ZXMg
PSBDRkJyaWRnaW5nUmVsZWFzZShNUk1lZGlhUmVtb3RlQ29weVBpY2thYmxlUm91dGVzKCkpOwot
ICAgIGlmICghcGlja2FibGVSb3V0ZXMuY291bnQpCisgICAgYXV0byBwaWNrYWJsZVJvdXRlcyA9
IGFkb3B0Q0YoTVJNZWRpYVJlbW90ZUNvcHlQaWNrYWJsZVJvdXRlcygpKTsKKyAgICBpZiAoIXBp
Y2thYmxlUm91dGVzIHx8ICFDRkFycmF5R2V0Q291bnQocGlja2FibGVSb3V0ZXMuZ2V0KCkpKQog
ICAgICAgICByZXR1cm4gbmlsOwogCiAgICAgTlNTdHJpbmcgKmRpc3BsYXlOYW1lID0gbmlsOwot
ICAgIGZvciAoTlNEaWN0aW9uYXJ5ICpwaWNrYWJsZVJvdXRlIGluIHBpY2thYmxlUm91dGVzKSB7
CisgICAgZm9yIChOU0RpY3Rpb25hcnkgKnBpY2thYmxlUm91dGUgaW4gKF9fYnJpZGdlIE5TQXJy
YXkgKilwaWNrYWJsZVJvdXRlcy5nZXQoKSkgewogICAgICAgICBpZiAoIVtwaWNrYWJsZVJvdXRl
W0FWQ29udHJvbGxlcl9Sb3V0ZURlc2NyaXB0aW9uS2V5X1JvdXRlQ3VycmVudGx5UGlja2VkXSBi
b29sVmFsdWVdKQogICAgICAgICAgICAgY29udGludWU7CiAKQEAgLTI4MzAsNyArMjgzMCw3IEBA
IHN0YXRpYyBOU1N0cmluZyAqZXhlcm5hbERldmljZURpc3BsYXlOYW1lRm9yUGxheWVyKEFWUGxh
eWVyICpwbGF5ZXIpCiAKICAgICAgICAgLy8gSW4gY2FzZXMgd2hlcmUgYSByb3V0ZSB3aXRoIHRo
YXQgbmFtZSBhbHJlYWR5IGV4aXN0cywgcHJlZml4IHRoZSBuYW1lIHdpdGggdGhlIG1vZGVsLgog
ICAgICAgICBCT09MIGluY2x1ZGVMb2NhbGl6ZWREZXZpY2VNb2RlbE5hbWUgPSBOTzsKLSAgICAg
ICAgZm9yIChOU0RpY3Rpb25hcnkgKm90aGVyUm91dGUgaW4gcGlja2FibGVSb3V0ZXMpIHsKKyAg
ICAgICAgZm9yIChOU0RpY3Rpb25hcnkgKm90aGVyUm91dGUgaW4gKF9fYnJpZGdlIE5TQXJyYXkg
KilwaWNrYWJsZVJvdXRlcy5nZXQoKSkgewogICAgICAgICAgICAgaWYgKG90aGVyUm91dGUgPT0g
cGlja2FibGVSb3V0ZSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL0NBQ0ZMYXllclRyZWVIb3N0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9DQUNGTGF5ZXJU
cmVlSG9zdC5jcHAKaW5kZXggMTI5ZGRhMGRkYWJhMDgwYTU5MDE2MzA0ZmFkNGVjZmYzZTQ3Y2Vj
MC4uYTZiNzY4M2RlZTViNmUxNWQxNTg2NDM1ZmIzNzExYTE1OWQ0MmNhNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL0NBQ0ZMYXllclRyZWVIb3N0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vQ0FDRkxh
eWVyVHJlZUhvc3QuY3BwCkBAIC0xNTksOSArMTU5LDggQEAgdm9pZCBDQUNGTGF5ZXJUcmVlSG9z
dDo6aW5pdGlhbGl6ZSgpCiAgICAgbV9yb290TGF5ZXItPnNldEdlb21ldHJ5RmxpcHBlZCh0cnVl
KTsKIAogI2lmbmRlZiBOREVCVUcKLSAgICBDR0NvbG9yUmVmIGRlYnVnQ29sb3IgPSBDR0NvbG9y
Q3JlYXRlR2VuZXJpY1JHQigxLCAwLCAwLCAwLjgpOwotICAgIG1fcm9vdExheWVyLT5zZXRCYWNr
Z3JvdW5kQ29sb3IoZGVidWdDb2xvcik7Ci0gICAgQ0dDb2xvclJlbGVhc2UoZGVidWdDb2xvcik7
CisgICAgYXV0byBkZWJ1Z0NvbG9yID0gYWRvcHRDRihDR0NvbG9yQ3JlYXRlR2VuZXJpY1JHQigx
LCAwLCAwLCAwLjgpKTsKKyAgICBtX3Jvb3RMYXllci0+c2V0QmFja2dyb3VuZENvbG9yKGRlYnVn
Q29sb3IuZ2V0KCkpOwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAppbmRleCA5ZGI5MDlj
ZGE4ZWYxNzYxMGYyOTRhOTg1MDkxOGJjMTlhZTc5N2E5Li42NDQzYTcxNTc1OGQ2NzU4NGVlM2Rm
NDE0OTUzZTRmZTc1ODdjMWJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCkBAIC0zNDYsOSArMzQ2LDcg
QEAgc3RhdGljIHZvaWQgZHJhd1BhdHRlcm5DYWxsYmFjayh2b2lkKiBpbmZvLCBDR0NvbnRleHRS
ZWYgY29udGV4dCkKIAogc3RhdGljIHZvaWQgcGF0dGVyblJlbGVhc2VDYWxsYmFjayh2b2lkKiBp
bmZvKQogewotICAgIGNhbGxPbk1haW5UaHJlYWQoW2ltYWdlID0gc3RhdGljX2Nhc3Q8Q0dJbWFn
ZVJlZj4oaW5mbyldIHsKLSAgICAgICAgQ0dJbWFnZVJlbGVhc2UoaW1hZ2UpOwotICAgIH0pOwor
ICAgIGNhbGxPbk1haW5UaHJlYWQoW2ltYWdlID0gYWRvcHRDRihzdGF0aWNfY2FzdDxDR0ltYWdl
UmVmPihpbmZvKSldIHsgfSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3UGxhdGZv
cm1QYXR0ZXJuKGNvbnN0IFBsYXRmb3JtSW1hZ2VQdHImIGltYWdlLCBjb25zdCBGbG9hdFNpemUm
IGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiB0
aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBG
bG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBh
aW50aW5nT3B0aW9ucyYgb3B0aW9ucykKQEAgLTY3NSw4ICs2NzMsOCBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dDo6ZmlsbFBhdGgoY29uc3QgUGF0aCYgcGF0aCkKICAgICAgICAgICAgIEZsb2F0UmVj
dCByZWN0ID0gcGF0aC5mYXN0Qm91bmRpbmdSZWN0KCk7CiAgICAgICAgICAgICBGbG9hdFNpemUg
bGF5ZXJTaXplID0gZ2V0Q1RNKCkubWFwU2l6ZShyZWN0LnNpemUoKSk7CiAKLSAgICAgICAgICAg
IENHTGF5ZXJSZWYgbGF5ZXIgPSBDR0xheWVyQ3JlYXRlV2l0aENvbnRleHQoY29udGV4dCwgbGF5
ZXJTaXplLCAwKTsKLSAgICAgICAgICAgIENHQ29udGV4dFJlZiBsYXllckNvbnRleHQgPSBDR0xh
eWVyR2V0Q29udGV4dChsYXllcik7CisgICAgICAgICAgICBhdXRvIGxheWVyID0gYWRvcHRDRihD
R0xheWVyQ3JlYXRlV2l0aENvbnRleHQoY29udGV4dCwgbGF5ZXJTaXplLCAwKSk7CisgICAgICAg
ICAgICBDR0NvbnRleHRSZWYgbGF5ZXJDb250ZXh0ID0gQ0dMYXllckdldENvbnRleHQobGF5ZXIu
Z2V0KCkpOwogCiAgICAgICAgICAgICBDR0NvbnRleHRTY2FsZUNUTShsYXllckNvbnRleHQsIGxh
eWVyU2l6ZS53aWR0aCgpIC8gcmVjdC53aWR0aCgpLCBsYXllclNpemUuaGVpZ2h0KCkgLyByZWN0
LmhlaWdodCgpKTsKICAgICAgICAgICAgIENHQ29udGV4dFRyYW5zbGF0ZUNUTShsYXllckNvbnRl
eHQsIC1yZWN0LngoKSwgLXJlY3QueSgpKTsKQEAgLTY5MCw4ICs2ODgsNyBAQCB2b2lkIEdyYXBo
aWNzQ29udGV4dDo6ZmlsbFBhdGgoY29uc3QgUGF0aCYgcGF0aCkKICAgICAgICAgICAgICAgICBD
R0NvbnRleHRDbGlwKGxheWVyQ29udGV4dCk7CiAKICAgICAgICAgICAgIG1fc3RhdGUuZmlsbEdy
YWRpZW50LT5wYWludChsYXllckNvbnRleHQpOwotICAgICAgICAgICAgQ0dDb250ZXh0RHJhd0xh
eWVySW5SZWN0KGNvbnRleHQsIHJlY3QsIGxheWVyKTsKLSAgICAgICAgICAgIENHTGF5ZXJSZWxl
YXNlKGxheWVyKTsKKyAgICAgICAgICAgIENHQ29udGV4dERyYXdMYXllckluUmVjdChjb250ZXh0
LCByZWN0LCBsYXllci5nZXQoKSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBDR0Nv
bnRleHRCZWdpblBhdGgoY29udGV4dCk7CiAgICAgICAgICAgICBDR0NvbnRleHRBZGRQYXRoKGNv
bnRleHQsIHBhdGgucGxhdGZvcm1QYXRoKCkpOwpAQCAtNzQ1LDggKzc0Miw4IEBAIHZvaWQgR3Jh
cGhpY3NDb250ZXh0OjpzdHJva2VQYXRoKGNvbnN0IFBhdGgmIHBhdGgpCiAKICAgICAgICAgICAg
IEZsb2F0U2l6ZSBsYXllclNpemUgPSBnZXRDVE0oKS5tYXBTaXplKEZsb2F0U2l6ZShhZGp1c3Rl
ZFdpZHRoLCBhZGp1c3RlZEhlaWdodCkpOwogCi0gICAgICAgICAgICBDR0xheWVyUmVmIGxheWVy
ID0gQ0dMYXllckNyZWF0ZVdpdGhDb250ZXh0KGNvbnRleHQsIGxheWVyU2l6ZSwgMCk7Ci0gICAg
ICAgICAgICBDR0NvbnRleHRSZWYgbGF5ZXJDb250ZXh0ID0gQ0dMYXllckdldENvbnRleHQobGF5
ZXIpOworICAgICAgICAgICAgYXV0byBsYXllciA9IGFkb3B0Q0YoQ0dMYXllckNyZWF0ZVdpdGhD
b250ZXh0KGNvbnRleHQsIGxheWVyU2l6ZSwgMCkpOworICAgICAgICAgICAgQ0dDb250ZXh0UmVm
IGxheWVyQ29udGV4dCA9IENHTGF5ZXJHZXRDb250ZXh0KGxheWVyLmdldCgpKTsKICAgICAgICAg
ICAgIENHQ29udGV4dFNldExpbmVXaWR0aChsYXllckNvbnRleHQsIGxpbmVXaWR0aCk7CiAKICAg
ICAgICAgICAgIC8vIENvbXBlbnNhdGUgZm9yIHRoZSBsaW5lIHdpZHRoLCBvdGhlcndpc2UgdGhl
IGxheWVyJ3MgdG9wLWxlZnQgY29ybmVyIHdvdWxkIGJlCkBAIC03NjUsOCArNzYyLDcgQEAgdm9p
ZCBHcmFwaGljc0NvbnRleHQ6OnN0cm9rZVBhdGgoY29uc3QgUGF0aCYgcGF0aCkKIAogICAgICAg
ICAgICAgZmxvYXQgZGVzdGluYXRpb25YID0gcm91bmRmKHJlY3QueCgpIC0gbGluZVdpZHRoKTsK
ICAgICAgICAgICAgIGZsb2F0IGRlc3RpbmF0aW9uWSA9IHJvdW5kZihyZWN0LnkoKSAtIGxpbmVX
aWR0aCk7Ci0gICAgICAgICAgICBDR0NvbnRleHREcmF3TGF5ZXJJblJlY3QoY29udGV4dCwgQ0dS
ZWN0TWFrZShkZXN0aW5hdGlvblgsIGRlc3RpbmF0aW9uWSwgYWRqdXN0ZWRXaWR0aCwgYWRqdXN0
ZWRIZWlnaHQpLCBsYXllcik7Ci0gICAgICAgICAgICBDR0xheWVyUmVsZWFzZShsYXllcik7Cisg
ICAgICAgICAgICBDR0NvbnRleHREcmF3TGF5ZXJJblJlY3QoY29udGV4dCwgQ0dSZWN0TWFrZShk
ZXN0aW5hdGlvblgsIGRlc3RpbmF0aW9uWSwgYWRqdXN0ZWRXaWR0aCwgYWRqdXN0ZWRIZWlnaHQp
LCBsYXllci5nZXQoKSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBDR0NvbnRleHRT
dGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7CiAgICAgICAgICAgICBDR0NvbnRleHRCZWdp
blBhdGgoY29udGV4dCk7CkBAIC04MTcsOCArODEzLDggQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6
OmZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKICAgICAgICAgaWYgKGhhc1NoYWRvdygp
KSB7CiAgICAgICAgICAgICBGbG9hdFNpemUgbGF5ZXJTaXplID0gZ2V0Q1RNKCkubWFwU2l6ZShy
ZWN0LnNpemUoKSk7CiAKLSAgICAgICAgICAgIENHTGF5ZXJSZWYgbGF5ZXIgPSBDR0xheWVyQ3Jl
YXRlV2l0aENvbnRleHQoY29udGV4dCwgbGF5ZXJTaXplLCAwKTsKLSAgICAgICAgICAgIENHQ29u
dGV4dFJlZiBsYXllckNvbnRleHQgPSBDR0xheWVyR2V0Q29udGV4dChsYXllcik7CisgICAgICAg
ICAgICBhdXRvIGxheWVyID0gYWRvcHRDRihDR0xheWVyQ3JlYXRlV2l0aENvbnRleHQoY29udGV4
dCwgbGF5ZXJTaXplLCAwKSk7CisgICAgICAgICAgICBDR0NvbnRleHRSZWYgbGF5ZXJDb250ZXh0
ID0gQ0dMYXllckdldENvbnRleHQobGF5ZXIuZ2V0KCkpOwogCiAgICAgICAgICAgICBDR0NvbnRl
eHRTY2FsZUNUTShsYXllckNvbnRleHQsIGxheWVyU2l6ZS53aWR0aCgpIC8gcmVjdC53aWR0aCgp
LCBsYXllclNpemUuaGVpZ2h0KCkgLyByZWN0LmhlaWdodCgpKTsKICAgICAgICAgICAgIENHQ29u
dGV4dFRyYW5zbGF0ZUNUTShsYXllckNvbnRleHQsIC1yZWN0LngoKSwgLXJlY3QueSgpKTsKQEAg
LTgyNyw4ICs4MjMsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3QoY29uc3QgRmxv
YXRSZWN0JiByZWN0KQogCiAgICAgICAgICAgICBDR0NvbnRleHRDb25jYXRDVE0obGF5ZXJDb250
ZXh0LCBtX3N0YXRlLmZpbGxHcmFkaWVudFNwYWNlVHJhbnNmb3JtKTsKICAgICAgICAgICAgIG1f
c3RhdGUuZmlsbEdyYWRpZW50LT5wYWludChsYXllckNvbnRleHQpOwotICAgICAgICAgICAgQ0dD
b250ZXh0RHJhd0xheWVySW5SZWN0KGNvbnRleHQsIHJlY3QsIGxheWVyKTsKLSAgICAgICAgICAg
IENHTGF5ZXJSZWxlYXNlKGxheWVyKTsKKyAgICAgICAgICAgIENHQ29udGV4dERyYXdMYXllcklu
UmVjdChjb250ZXh0LCByZWN0LCBsYXllci5nZXQoKSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAg
ICAgICAgICBDR0NvbnRleHRDbGlwVG9SZWN0KGNvbnRleHQsIHJlY3QpOwogICAgICAgICAgICAg
Q0dDb250ZXh0Q29uY2F0Q1RNKGNvbnRleHQsIG1fc3RhdGUuZmlsbEdyYWRpZW50U3BhY2VUcmFu
c2Zvcm0pOwpAQCAtMTIyNiw5ICsxMjIxLDkgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnN0cm9r
ZVJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBmbG9hdCBsaW5lV2lkdGgpCiAgICAgICAgICAg
ICBmbG9hdCBhZGp1c3RlZEhlaWdodCA9IGNlaWxmKHJlY3QuaGVpZ2h0KCkgKyBkb3VibGVMaW5l
V2lkdGgpOwogICAgICAgICAgICAgRmxvYXRTaXplIGxheWVyU2l6ZSA9IGdldENUTSgpLm1hcFNp
emUoRmxvYXRTaXplKGFkanVzdGVkV2lkdGgsIGFkanVzdGVkSGVpZ2h0KSk7CiAKLSAgICAgICAg
ICAgIENHTGF5ZXJSZWYgbGF5ZXIgPSBDR0xheWVyQ3JlYXRlV2l0aENvbnRleHQoY29udGV4dCwg
bGF5ZXJTaXplLCAwKTsKKyAgICAgICAgICAgIGF1dG8gbGF5ZXIgPSBhZG9wdENGKENHTGF5ZXJD
cmVhdGVXaXRoQ29udGV4dChjb250ZXh0LCBsYXllclNpemUsIDApKTsKIAotICAgICAgICAgICAg
Q0dDb250ZXh0UmVmIGxheWVyQ29udGV4dCA9IENHTGF5ZXJHZXRDb250ZXh0KGxheWVyKTsKKyAg
ICAgICAgICAgIENHQ29udGV4dFJlZiBsYXllckNvbnRleHQgPSBDR0xheWVyR2V0Q29udGV4dChs
YXllci5nZXQoKSk7CiAgICAgICAgICAgICBtX3N0YXRlLnN0cm9rZVRoaWNrbmVzcyA9IGxpbmVX
aWR0aDsKICAgICAgICAgICAgIENHQ29udGV4dFNldExpbmVXaWR0aChsYXllckNvbnRleHQsIGxp
bmVXaWR0aCk7CiAKQEAgLTEyNDgsOCArMTI0Myw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Ojpz
dHJva2VSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgZmxvYXQgbGluZVdpZHRoKQogCiAgICAg
ICAgICAgICBjb25zdCBmbG9hdCBkZXN0aW5hdGlvblggPSByb3VuZGYocmVjdC54KCkgLSBsaW5l
V2lkdGgpOwogICAgICAgICAgICAgY29uc3QgZmxvYXQgZGVzdGluYXRpb25ZID0gcm91bmRmKHJl
Y3QueSgpIC0gbGluZVdpZHRoKTsKLSAgICAgICAgICAgIENHQ29udGV4dERyYXdMYXllckluUmVj
dChjb250ZXh0LCBDR1JlY3RNYWtlKGRlc3RpbmF0aW9uWCwgZGVzdGluYXRpb25ZLCBhZGp1c3Rl
ZFdpZHRoLCBhZGp1c3RlZEhlaWdodCksIGxheWVyKTsKLSAgICAgICAgICAgIENHTGF5ZXJSZWxl
YXNlKGxheWVyKTsKKyAgICAgICAgICAgIENHQ29udGV4dERyYXdMYXllckluUmVjdChjb250ZXh0
LCBDR1JlY3RNYWtlKGRlc3RpbmF0aW9uWCwgZGVzdGluYXRpb25ZLCBhZGp1c3RlZFdpZHRoLCBh
ZGp1c3RlZEhlaWdodCksIGxheWVyLmdldCgpKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAg
ICAgIENHQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsKICAgICAgICAgICAg
IHNldFN0cm9rZVRoaWNrbmVzcyhsaW5lV2lkdGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0dGVybkNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL1BhdHRlcm5DRy5jcHAKaW5kZXggZjFiOWUzYTdjMDU1NjlhOTg5
MWI2OThkMjgzYWI1Mzk3YzcyNWY1NC4uM2FlYzc3NTZkYjhjZDI1MGFmZWYxMGQ4M2ZkZWIxZGNj
OTNjZjljMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
UGF0dGVybkNHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Q
YXR0ZXJuQ0cuY3BwCkBAIC01MCw5ICs1MCw3IEBAIHN0YXRpYyB2b2lkIHBhdHRlcm5DYWxsYmFj
ayh2b2lkKiBpbmZvLCBDR0NvbnRleHRSZWYgY29udGV4dCkKIAogc3RhdGljIHZvaWQgcGF0dGVy
blJlbGVhc2VDYWxsYmFjayh2b2lkKiBpbmZvKQogewotICAgIGNhbGxPbk1haW5UaHJlYWQoW2lt
YWdlID0gc3RhdGljX2Nhc3Q8Q0dJbWFnZVJlZj4oaW5mbyldIHsKLSAgICAgICAgQ0dJbWFnZVJl
bGVhc2UoaW1hZ2UpOwotICAgIH0pOworICAgIGNhbGxPbk1haW5UaHJlYWQoW2ltYWdlID0gYWRv
cHRDRihzdGF0aWNfY2FzdDxDR0ltYWdlUmVmPihpbmZvKSldIHsgfSk7CiB9CiAKIENHUGF0dGVy
blJlZiBQYXR0ZXJuOjpjcmVhdGVQbGF0Zm9ybVBhdHRlcm4oY29uc3QgQWZmaW5lVHJhbnNmb3Jt
JiB1c2VyU3BhY2VUcmFuc2Zvcm0pIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5jcHAKaW5kZXgg
OTljYmNmZDBiNmRhMTVjZTMyMDg3NzVkMTViNWRkYmI2YWFjOGYwZS4uZmE3N2IzOTk3N2RiOTc4
YTA1OTcxYjZjMjVjNDFmMzcyZGU1MjRiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcApAQCAt
MTI3OSw4ICsxMjc5LDcgQEAgc3RhdGljIHZvaWQgYXV0b0FjdGl2YXRlRm9udChjb25zdCBTdHJp
bmcmIG5hbWUsIENHRmxvYXQgc2l6ZSkKICAgICBDRlR5cGVSZWYgdmFsdWVzW10gPSB7IGZvbnRO
YW1lLmdldCgpIH07CiAgICAgYXV0byBhdHRyaWJ1dGVzID0gYWRvcHRDRihDRkRpY3Rpb25hcnlD
cmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwga2V5cywgdmFsdWVzLCBXVEZfQVJSQVlfTEVOR1RI
KGtleXMpLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFy
eVZhbHVlQ2FsbEJhY2tzKSk7CiAgICAgYXV0byBkZXNjcmlwdG9yID0gYWRvcHRDRihDVEZvbnRE
ZXNjcmlwdG9yQ3JlYXRlV2l0aEF0dHJpYnV0ZXMoYXR0cmlidXRlcy5nZXQoKSkpOwotICAgIGlm
IChhdXRvIG5ld0ZvbnQgPSBDVEZvbnRDcmVhdGVXaXRoRm9udERlc2NyaXB0b3IoZGVzY3JpcHRv
ci5nZXQoKSwgc2l6ZSwgbnVsbHB0cikpCi0gICAgICAgIENGUmVsZWFzZShuZXdGb250KTsKKyAg
ICBhdXRvIG5ld0ZvbnQgPSBhZG9wdENGKENURm9udENyZWF0ZVdpdGhGb250RGVzY3JpcHRvcihk
ZXNjcmlwdG9yLmdldCgpLCBzaXplLCBudWxscHRyKSk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDR1dpbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udENHV2luLmNwcAppbmRleCA1
M2FjN2UyMDAxOGExYjhhOTUwZGM3NDkyNjg1ZDI3NWY4YWJiMTZlLi5jMTllNzQxNTU3YzMwOGM5
NDFlNGVmNzE1ZTNkYjQ2NTk0ZDE4NWI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vRm9udENHV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vRm9udENHV2luLmNwcApAQCAtNDA5LDUwICs0MDksMzYgQEAgdm9p
ZCBGb250Q2FzY2FkZTo6Z2V0UGxhdGZvcm1HbHlwaEFkdmFuY2VzKENHRm9udFJlZiBmb250LCBj
b25zdCBDR0FmZmluZVRyYW5zZm8KIAogICAgIC8vIDxyZGFyOi8vcHJvYmxlbS83NzYxMTY1PiBU
aGUgR0RJIGJhY2sgZW5kIGluIENvcmUgR3JhcGhpY3Mgc29tZXRpbWVzIHJldHVybnMgYWR2YW5j
ZXMgdGhhdAogICAgIC8vIGRpZmZlciBmcm9tIHdoYXQgdGhlIGZvbnQncyBobXR4IHRhYmxlIHNw
ZWNpZmllcy4gVGhlIGZvbGxvd2luZyBjb2RlIGNvcnJlY3RzIHRoYXQuCi0gICAgQ0ZEYXRhUmVm
IGhtdHhUYWJsZSA9IENHRm9udENvcHlUYWJsZUZvclRhZyhmb250LCAnaG10eCcpOworICAgIGF1
dG8gaG10eFRhYmxlID0gYWRvcHRDRihDR0ZvbnRDb3B5VGFibGVGb3JUYWcoZm9udCwgJ2htdHgn
KSk7CiAgICAgaWYgKCFobXR4VGFibGUpCiAgICAgICAgIHJldHVybjsKLSAgICBDRkRhdGFSZWYg
aGhlYVRhYmxlID0gQ0dGb250Q29weVRhYmxlRm9yVGFnKGZvbnQsICdoaGVhJyk7Ci0gICAgaWYg
KCFoaGVhVGFibGUpIHsKLSAgICAgICAgQ0ZSZWxlYXNlKGhtdHhUYWJsZSk7CisgICAgYXV0byBo
aGVhVGFibGUgPSBhZG9wdENGKENHRm9udENvcHlUYWJsZUZvclRhZyhmb250LCAnaGhlYScpKTsK
KyAgICBpZiAoIWhoZWFUYWJsZSkKICAgICAgICAgcmV0dXJuOwotICAgIH0KIAogICAgIGNvbnN0
IENGSW5kZXggaGhlYVRhYmxlU2l6ZSA9IDM2OwogICAgIGNvbnN0IHB0cmRpZmZfdCBoaGVhVGFi
bGVOdW1iZXJPZkhNZXRyaWNzT2Zmc2V0ID0gMzQ7Ci0gICAgaWYgKENGRGF0YUdldExlbmd0aCho
aGVhVGFibGUpIDwgaGhlYVRhYmxlU2l6ZSkgewotICAgICAgICBDRlJlbGVhc2UoaG10eFRhYmxl
KTsKLSAgICAgICAgQ0ZSZWxlYXNlKGhoZWFUYWJsZSk7CisgICAgaWYgKENGRGF0YUdldExlbmd0
aChoaGVhVGFibGUuZ2V0KCkpIDwgaGhlYVRhYmxlU2l6ZSkKICAgICAgICAgcmV0dXJuOwotICAg
IH0KIAotICAgIHVuc2lnbmVkIHNob3J0IG51bWJlck9mSE1ldHJpY3MgPSAqcmVpbnRlcnByZXRf
Y2FzdDxjb25zdCB1bnNpZ25lZCBzaG9ydCo+KENGRGF0YUdldEJ5dGVQdHIoaGhlYVRhYmxlKSAr
IGhoZWFUYWJsZU51bWJlck9mSE1ldHJpY3NPZmZzZXQpOworICAgIHVuc2lnbmVkIHNob3J0IG51
bWJlck9mSE1ldHJpY3MgPSAqcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1bnNpZ25lZCBzaG9ydCo+
KENGRGF0YUdldEJ5dGVQdHIoaGhlYVRhYmxlLmdldCgpKSArIGhoZWFUYWJsZU51bWJlck9mSE1l
dHJpY3NPZmZzZXQpOwogICAgIG51bWJlck9mSE1ldHJpY3MgPSAoKG51bWJlck9mSE1ldHJpY3Mg
JiAweEZGKSA8PCA4KSB8IChudW1iZXJPZkhNZXRyaWNzID4+IDgpOwotICAgIGlmICghbnVtYmVy
T2ZITWV0cmljcykgewotICAgICAgICBDRlJlbGVhc2UoaG10eFRhYmxlKTsKLSAgICAgICAgQ0ZS
ZWxlYXNlKGhoZWFUYWJsZSk7CisgICAgaWYgKCFudW1iZXJPZkhNZXRyaWNzKQogICAgICAgICBy
ZXR1cm47Ci0gICAgfQogCiAgICAgaWYgKGdseXBoID49IG51bWJlck9mSE1ldHJpY3MpCiAgICAg
ICAgIGdseXBoID0gbnVtYmVyT2ZITWV0cmljcyAtIDE7CiAKLSAgICBpZiAoQ0ZEYXRhR2V0TGVu
Z3RoKGhtdHhUYWJsZSkgPCA0ICogKGdseXBoICsgMSkpIHsKLSAgICAgICAgQ0ZSZWxlYXNlKGht
dHhUYWJsZSk7Ci0gICAgICAgIENGUmVsZWFzZShoaGVhVGFibGUpOworICAgIGlmIChDRkRhdGFH
ZXRMZW5ndGgoaG10eFRhYmxlLmdldCgpKSA8IDQgKiAoZ2x5cGggKyAxKSkKICAgICAgICAgcmV0
dXJuOwotICAgIH0KIAotICAgIHVuc2lnbmVkIHNob3J0IGFkdmFuY2VJbkRlc2lnblVuaXRzID0g
KnJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdW5zaWduZWQgc2hvcnQqPihDRkRhdGFHZXRCeXRlUHRy
KGhtdHhUYWJsZSkgKyA0ICogZ2x5cGgpOworICAgIHVuc2lnbmVkIHNob3J0IGFkdmFuY2VJbkRl
c2lnblVuaXRzID0gKnJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdW5zaWduZWQgc2hvcnQqPihDRkRh
dGFHZXRCeXRlUHRyKGhtdHhUYWJsZS5nZXQoKSkgKyA0ICogZ2x5cGgpOwogICAgIGFkdmFuY2VJ
bkRlc2lnblVuaXRzID0gKChhZHZhbmNlSW5EZXNpZ25Vbml0cyAmIDB4RkYpIDw8IDgpIHwgKGFk
dmFuY2VJbkRlc2lnblVuaXRzID4+IDgpOwogICAgIENHU2l6ZSBob3Jpem9udGFsQWR2YW5jZSA9
IENHU2l6ZU1ha2Uoc3RhdGljX2Nhc3Q8Q0dGbG9hdD4oYWR2YW5jZUluRGVzaWduVW5pdHMpIC8g
Q0dGb250R2V0VW5pdHNQZXJFbShmb250KSwgMCk7CiAgICAgaG9yaXpvbnRhbEFkdmFuY2UgPSBD
R1NpemVBcHBseUFmZmluZVRyYW5zZm9ybShob3Jpem9udGFsQWR2YW5jZSwgbSk7CiAgICAgYWR2
YW5jZS53aWR0aCA9IGhvcml6b250YWxBZHZhbmNlLndpZHRoOwogICAgIGlmICghKHN0eWxlICYg
a0NHRm9udFJlbmRlcmluZ1N0eWxlU3VicGl4ZWxQb3NpdGlvbmluZykpCiAgICAgICAgIGFkdmFu
Y2Uud2lkdGggPSByb3VuZGYoYWR2YW5jZS53aWR0aCk7Ci0KLSAgICBDRlJlbGVhc2UoaGhlYVRh
YmxlKTsKLSAgICBDRlJlbGVhc2UoaG10eFRhYmxlKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dENHV2luLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRD
R1dpbi5jcHAKaW5kZXggMzE3ZjhkMDQ1ZDMyOTNhNzhjN2ExYjc1NTQ0NmQwNWRlNDlhMjdjMy4u
Y2VkYjAyZWI5ZTFmOTViZjkwMzMxMTNiYTYwNWQ5Y2NmZmY4NjllOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dENHV2luLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250
ZXh0Q0dXaW4uY3BwCkBAIC0xMDcsMTYgKzEwNywxNCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6
cmVsZWFzZVdpbmRvd3NDb250ZXh0KEhEQyBoZGMsIGNvbnN0IEludFJlY3QmIGRzdFJlY3QsIGJv
bwogCiAgICAgQVNTRVJUKHBpeGVsRGF0YS5iaXRzUGVyUGl4ZWwoKSA9PSAzMik7CiAKLSAgICBD
R0NvbnRleHRSZWYgYml0bWFwQ29udGV4dCA9IENHQml0bWFwQ29udGV4dENyZWF0ZShwaXhlbERh
dGEuYnVmZmVyKCksIHBpeGVsRGF0YS5zaXplKCkud2lkdGgoKSwgcGl4ZWxEYXRhLnNpemUoKS5o
ZWlnaHQoKSwgOCwKKyAgICBhdXRvIGJpdG1hcENvbnRleHQgPSBhZG9wdENGKENHQml0bWFwQ29u
dGV4dENyZWF0ZShwaXhlbERhdGEuYnVmZmVyKCksIHBpeGVsRGF0YS5zaXplKCkud2lkdGgoKSwg
cGl4ZWxEYXRhLnNpemUoKS5oZWlnaHQoKSwgOCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaXhlbERhdGEuYnl0ZXNQZXJSb3coKSwgc1JH
QkNvbG9yU3BhY2VSZWYoKSwga0NHQml0bWFwQnl0ZU9yZGVyMzJMaXR0bGUgfAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzdXBwb3J0QWxw
aGFCbGVuZCA/IGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkRmlyc3QgOiBrQ0dJbWFnZUFscGhh
Tm9uZVNraXBGaXJzdCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIChzdXBwb3J0QWxwaGFCbGVuZCA/IGtDR0ltYWdlQWxwaGFQcmVtdWx0
aXBsaWVkRmlyc3QgOiBrQ0dJbWFnZUFscGhhTm9uZVNraXBGaXJzdCkpKTsKIAotICAgIENHSW1h
Z2VSZWYgaW1hZ2UgPSBDR0JpdG1hcENvbnRleHRDcmVhdGVJbWFnZShiaXRtYXBDb250ZXh0KTsK
LSAgICBDR0NvbnRleHREcmF3SW1hZ2UobV9kYXRhLT5tX2NnQ29udGV4dC5nZXQoKSwgZHN0UmVj
dCwgaW1hZ2UpOworICAgIGF1dG8gaW1hZ2UgPSBhZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0
ZUltYWdlKGJpdG1hcENvbnRleHQuZ2V0KCkpKTsKKyAgICBDR0NvbnRleHREcmF3SW1hZ2UobV9k
YXRhLT5tX2NnQ29udGV4dC5nZXQoKSwgZHN0UmVjdCwgaW1hZ2UuZ2V0KCkpOwogICAgIAogICAg
IC8vIERlbGV0ZSBhbGwgb3VyIGp1bmsuCi0gICAgQ0dJbWFnZVJlbGVhc2UoaW1hZ2UpOwotICAg
IENHQ29udGV4dFJlbGVhc2UoYml0bWFwQ29udGV4dCk7CiAgICAgOjpEZWxldGVEQyhoZGMpOwog
fQogCkBAIC0xNDcsMTYgKzE0NSwxNiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ZvY3Vz
UmluZyhjb25zdCBWZWN0b3I8RmxvYXRSZWN0PiYgcmVjdHMsIGZsb2F0IHdpZHRoLAogICAgIG9m
ZnNldCArPSByYWRpdXM7CiAgICAgQ0dDb2xvclJlZiBjb2xvclJlZiA9IGNvbG9yLmlzVmFsaWQo
KSA/IGNhY2hlZENHQ29sb3IoY29sb3IpIDogbnVsbHB0cjsKIAotICAgIENHTXV0YWJsZVBhdGhS
ZWYgZm9jdXNSaW5nUGF0aCA9IENHUGF0aENyZWF0ZU11dGFibGUoKTsKKyAgICBhdXRvIGZvY3Vz
UmluZ1BhdGggPSBhZG9wdENGKENHUGF0aENyZWF0ZU11dGFibGUoKSk7CiAgICAgdW5zaWduZWQg
cmVjdENvdW50ID0gcmVjdHMuc2l6ZSgpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBy
ZWN0Q291bnQ7IGkrKykKLSAgICAgICAgQ0dQYXRoQWRkUmVjdChmb2N1c1JpbmdQYXRoLCAwLCBD
R1JlY3RJbnNldChyZWN0c1tpXSwgLW9mZnNldCwgLW9mZnNldCkpOworICAgICAgICBDR1BhdGhB
ZGRSZWN0KGZvY3VzUmluZ1BhdGguZ2V0KCksIDAsIENHUmVjdEluc2V0KHJlY3RzW2ldLCAtb2Zm
c2V0LCAtb2Zmc2V0KSk7CiAKICAgICBDR0NvbnRleHRSZWYgY29udGV4dCA9IHBsYXRmb3JtQ29u
dGV4dCgpOwogICAgIENHQ29udGV4dFNhdmVHU3RhdGUoY29udGV4dCk7CiAKICAgICBDR0NvbnRl
eHRCZWdpblBhdGgoY29udGV4dCk7Ci0gICAgQ0dDb250ZXh0QWRkUGF0aChjb250ZXh0LCBmb2N1
c1JpbmdQYXRoKTsKKyAgICBDR0NvbnRleHRBZGRQYXRoKGNvbnRleHQsIGZvY3VzUmluZ1BhdGgu
Z2V0KCkpOwogCiAgICAgLy8gRklYTUU6IFdlIGNsZWFyIHRoZSBmaWxsIGNvbG9yIGhlcmUgdG8g
YXZvaWQgZ2V0dGluZyBhIGJsYWNrIGZpbGwgd2hlbiBkcmF3aW5nIHRoZSBmb2N1cyByaW5nLgog
ICAgIC8vIEZpbmQgb3V0IGZyb20gQ0cgaWYgdGhpcyBpcyB0aGVpciBidWcuCkBAIC0xNjUsOCAr
MTYzLDYgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdGb2N1c1JpbmcoY29uc3QgVmVjdG9y
PEZsb2F0UmVjdD4mIHJlY3RzLCBmbG9hdCB3aWR0aCwKICAgICBDR0NvbnRleHRTZXRGb2N1c1Jp
bmdXaXRoQ29sb3IoY29udGV4dCwgcmFkaXVzLCBjb2xvclJlZiwgMCwgKENGRGljdGlvbmFyeVJl
ZikwKTsKICAgICBDR0NvbnRleHRGaWxsUGF0aChjb250ZXh0KTsKIAotICAgIENHUGF0aFJlbGVh
c2UoZm9jdXNSaW5nUGF0aCk7Ci0KICAgICBDR0NvbnRleHRSZXN0b3JlR1N0YXRlKGNvbnRleHQp
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
SW1hZ2VDR1dpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1h
Z2VDR1dpbi5jcHAKaW5kZXggNmRhYmYyNDEzZmVkMzU3NTlhYjAzOTUzZGE0MzcyMmM4ZDQxNmZk
Ni4uZjhhMTBkNWM0MzZlNzA2MDg5ODcwN2JhOGI2NTQ2NDFjZTJiZGY1NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQ0dXaW4uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNHV2luLmNwcApAQCAt
NzAsMTAgKzcwLDEwIEBAIGJvb2wgQml0bWFwSW1hZ2U6OmdldEhCSVRNQVBPZlNpemUoSEJJVE1B
UCBibXAsIGNvbnN0IEludFNpemUqIHNpemUpCiAgICAgQVNTRVJUKGJtcEluZm8uYm1CaXRzUGl4
ZWwgPT0gMzIpOwogICAgIGludCBidWZmZXJTaXplID0gYm1wSW5mby5ibVdpZHRoQnl0ZXMgKiBi
bXBJbmZvLmJtSGVpZ2h0OwogICAgIAotICAgIENHQ29udGV4dFJlZiBjZ0NvbnRleHQgPSBDR0Jp
dG1hcENvbnRleHRDcmVhdGUoYm1wSW5mby5ibUJpdHMsIGJtcEluZm8uYm1XaWR0aCwgYm1wSW5m
by5ibUhlaWdodCwKLSAgICAgICAgOCwgYm1wSW5mby5ibVdpZHRoQnl0ZXMsIHNSR0JDb2xvclNw
YWNlUmVmKCksIGtDR0JpdG1hcEJ5dGVPcmRlcjMyTGl0dGxlIHwga0NHSW1hZ2VBbHBoYVByZW11
bHRpcGxpZWRGaXJzdCk7CisgICAgYXV0byBjZ0NvbnRleHQgPSBhZG9wdENGKENHQml0bWFwQ29u
dGV4dENyZWF0ZShibXBJbmZvLmJtQml0cywgYm1wSW5mby5ibVdpZHRoLCBibXBJbmZvLmJtSGVp
Z2h0LAorICAgICAgICA4LCBibXBJbmZvLmJtV2lkdGhCeXRlcywgc1JHQkNvbG9yU3BhY2VSZWYo
KSwga0NHQml0bWFwQnl0ZU9yZGVyMzJMaXR0bGUgfCBrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGll
ZEZpcnN0KSk7CiAgIAotICAgIEdyYXBoaWNzQ29udGV4dCBnYyhjZ0NvbnRleHQpOworICAgIEdy
YXBoaWNzQ29udGV4dCBnYyhjZ0NvbnRleHQuZ2V0KCkpOwogCiAgICAgRmxvYXRTaXplIGltYWdl
U2l6ZSA9IEJpdG1hcEltYWdlOjpzaXplKCk7CiAgICAgaWYgKHNpemUpCkBAIC04MSw5ICs4MSw2
IEBAIGJvb2wgQml0bWFwSW1hZ2U6OmdldEhCSVRNQVBPZlNpemUoSEJJVE1BUCBibXAsIGNvbnN0
IEludFNpemUqIHNpemUpCiAgICAgZWxzZQogICAgICAgICBkcmF3KGdjLCBGbG9hdFJlY3QoMC4w
ZiwgMC4wZiwgYm1wSW5mby5ibVdpZHRoLCBibXBJbmZvLmJtSGVpZ2h0KSwgRmxvYXRSZWN0KDAu
MGYsIDAuMGYsIGltYWdlU2l6ZS53aWR0aCgpLCBpbWFnZVNpemUuaGVpZ2h0KCkpLCB7IENvbXBv
c2l0ZU9wZXJhdG9yOjpDb3B5IH0pOwogCi0gICAgLy8gRG8gY2xlYW51cAotICAgIENHQ29udGV4
dFJlbGVhc2UoY2dDb250ZXh0KTsKLQogICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVXNlckFnZW50SU9TLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW9zL1VzZXJBZ2VudElPUy5tbQppbmRleCAzYTYzNDRjZWY0MzdmNDM1
NTEyZTRiOTQwNTU3NDk3MTQ5MzFlMmJhLi4zYjZkZTFlYzBmM2ZjNWQxNDJkY2VjNmE1YWE2ZDMx
Y2M4ZDgwZTU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVXNlckFn
ZW50SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9Vc2VyQWdlbnRJT1Mu
bW0KQEAgLTg5LDExICs4OSwxMCBAQCBTdHJpbmcgc3RhbmRhcmRVc2VyQWdlbnRXaXRoQXBwbGlj
YXRpb25OYW1lKGNvbnN0IFN0cmluZyYgYXBwbGljYXRpb25OYW1lLCBjb25zdAogICAgIC8vIEZJ
WE1FOiBXZSBzaG91bGQgZGVwcmVjYXRlIGFuZCBldmVudHVhbGx5IHJlbW92ZSB0aGlzIG9ic29s
ZXRlIFVBIG92ZXJyaWRlOwogICAgIC8vIHNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjE3OTI3IGZvciBkZXRhaWxzLgogICAgIC8vIENoZWNrIHRvIHNlZSBpZiB0
aGVyZSBpcyBhIHVzZXIgYWdlbnQgb3ZlcnJpZGUgZm9yIGFsbCBXZWJLaXQgY2xpZW50cy4KLSAg
ICBDRlByb3BlcnR5TGlzdFJlZiBvdmVycmlkZSA9IENGUHJlZmVyZW5jZXNDb3B5QXBwVmFsdWUo
Q0ZTVFIoIlVzZXJBZ2VudCIpLCBDRlNUUigiY29tLmFwcGxlLldlYkZvdW5kYXRpb24iKSk7Cisg
ICAgYXV0byBvdmVycmlkZSA9IGFkb3B0Q0YoQ0ZQcmVmZXJlbmNlc0NvcHlBcHBWYWx1ZShDRlNU
UigiVXNlckFnZW50IiksIENGU1RSKCJjb20uYXBwbGUuV2ViRm91bmRhdGlvbiIpKSk7CiAgICAg
aWYgKG92ZXJyaWRlKSB7Ci0gICAgICAgIGlmIChDRkdldFR5cGVJRChvdmVycmlkZSkgPT0gQ0ZT
dHJpbmdHZXRUeXBlSUQoKSkKLSAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxOU1N0cmlu
ZyAqPihDRkJyaWRnaW5nUmVsZWFzZShvdmVycmlkZSkpOwotICAgICAgICBDRlJlbGVhc2Uob3Zl
cnJpZGUpOworICAgICAgICBpZiAoQ0ZHZXRUeXBlSUQob3ZlcnJpZGUuZ2V0KCkpID09IENGU3Ry
aW5nR2V0VHlwZUlEKCkpCisgICAgICAgICAgICByZXR1cm4gKF9fYnJpZGdlIE5TU3RyaW5nICop
b3ZlcnJpZGUuZ2V0KCk7CiAgICAgfQogCiAgICAgU3RyaW5nIG9zVmVyc2lvbiA9IHVzZXJBZ2Vu
dE9TVmVyc2lvbi5pc0VtcHR5KCkgID8gc3lzdGVtTWFya2V0aW5nVmVyc2lvbkZvclVzZXJBZ2Vu
dFN0cmluZygpIDogdXNlckFnZW50T1NWZXJzaW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkLm1tCmluZGV4IDY2MDA3NmFkZjc2NjM3NGY0OWQ1
ZWU1YTliMjkzZTk5ZDY0ZmNkZGMuLjkzMmM3ODJjNmJjYjNiMmQ2N2U5MzQwMmVjNDIxYTM0MmQz
NmJmNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV2ViQ29y
ZVRocmVhZC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dlYkNvcmVU
aHJlYWQubW0KQEAgLTI2NiwxMCArMjY2LDggQEAgc3RhdGljIHZvaWQgU2VuZERlbGVnYXRlTWVz
c2FnZShSZXRhaW5QdHI8TlNJbnZvY2F0aW9uPiYmIGludm9jYXRpb24pCiAgICAgICAgICAgICAg
ICAgZWxzZQogICAgICAgICAgICAgICAgICAgICBkZWxlZ2F0ZUluZm9ybWF0aW9uID0gTlNTdHJp
bmdGcm9tU2VsZWN0b3IoW2RlbGVnYXRlSW52b2NhdGlvbigpIHNlbGVjdG9yXSk7CiAgICAgCi0g
ICAgICAgICAgICAgICAgQ0ZTdHJpbmdSZWYgbW9kZSA9IENGUnVuTG9vcENvcHlDdXJyZW50TW9k
ZShDRlJ1bkxvb3BHZXRNYWluKCkpOwotICAgICAgICAgICAgICAgIE5TTG9nKEAiJXM6IGRlbGVn
YXRlICglQCkgZmFpbGVkIHRvIHJldHVybiBhZnRlciB3YWl0aW5nICVmIHNlY29uZHMuIG1haW4g
cnVuIGxvb3AgbW9kZTogJUAiLCBfX1BSRVRUWV9GVU5DVElPTl9fLCBkZWxlZ2F0ZUluZm9ybWF0
aW9uLCBEZWxlZ2F0ZVdhaXRJbnRlcnZhbC5zZWNvbmRzKCksIG1vZGUpOwotICAgICAgICAgICAg
ICAgIGlmIChtb2RlKQotICAgICAgICAgICAgICAgICAgICBDRlJlbGVhc2UobW9kZSk7CisgICAg
ICAgICAgICAgICAgYXV0byBtb2RlID0gYWRvcHRDRihDRlJ1bkxvb3BDb3B5Q3VycmVudE1vZGUo
Q0ZSdW5Mb29wR2V0TWFpbigpKSk7CisgICAgICAgICAgICAgICAgTlNMb2coQCIlczogZGVsZWdh
dGUgKCVAKSBmYWlsZWQgdG8gcmV0dXJuIGFmdGVyIHdhaXRpbmcgJWYgc2Vjb25kcy4gbWFpbiBy
dW4gbG9vcCBtb2RlOiAlQCIsIF9fUFJFVFRZX0ZVTkNUSU9OX18sIGRlbGVnYXRlSW5mb3JtYXRp
b24sIERlbGVnYXRlV2FpdEludGVydmFsLnNlY29uZHMoKSwgbW9kZS5nZXQoKSk7CiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0KICAgICAgICAgZGVsZWdhdGVMb2NrLnVubG9jaygpOwpAQCAtNjM0
LDE2ICs2MzIsMTQgQEAgc3RhdGljIHZvaWQqIFJ1bldlYlRocmVhZCh2b2lkKikKICAgICB3ZWJU
aHJlYWRSdW5Mb29wID0gQ0ZSdW5Mb29wR2V0Q3VycmVudCgpOwogICAgIHdlYlRocmVhZE5TUnVu
TG9vcCgpID0gW05TUnVuTG9vcCBjdXJyZW50UnVuTG9vcF07CiAKLSAgICBDRlJ1bkxvb3BPYnNl
cnZlclJlZiB3ZWJSdW5Mb29wTG9ja09ic2VydmVyUmVmID0gQ0ZSdW5Mb29wT2JzZXJ2ZXJDcmVh
dGUobnVsbHB0ciwga0NGUnVuTG9vcEJlZm9yZVRpbWVycyB8IGtDRlJ1bkxvb3BCZWZvcmVTb3Vy
Y2VzIHwga0NGUnVuTG9vcEFmdGVyV2FpdGluZywgWUVTLCAwLCBXZWJSdW5Mb29wTG9jaywgbnVs
bHB0cik7Ci0gICAgQ0ZSdW5Mb29wQWRkT2JzZXJ2ZXIod2ViVGhyZWFkUnVuTG9vcCwgd2ViUnVu
TG9vcExvY2tPYnNlcnZlclJlZiwga0NGUnVuTG9vcENvbW1vbk1vZGVzKTsKLSAgICBDRlJlbGVh
c2Uod2ViUnVuTG9vcExvY2tPYnNlcnZlclJlZik7CisgICAgYXV0byB3ZWJSdW5Mb29wTG9ja09i
c2VydmVyUmVmID0gYWRvcHRDRihDRlJ1bkxvb3BPYnNlcnZlckNyZWF0ZShudWxscHRyLCBrQ0ZS
dW5Mb29wQmVmb3JlVGltZXJzIHwga0NGUnVuTG9vcEJlZm9yZVNvdXJjZXMgfCBrQ0ZSdW5Mb29w
QWZ0ZXJXYWl0aW5nLCBZRVMsIDAsIFdlYlJ1bkxvb3BMb2NrLCBudWxscHRyKSk7CisgICAgQ0ZS
dW5Mb29wQWRkT2JzZXJ2ZXIod2ViVGhyZWFkUnVuTG9vcCwgd2ViUnVuTG9vcExvY2tPYnNlcnZl
clJlZi5nZXQoKSwga0NGUnVuTG9vcENvbW1vbk1vZGVzKTsKICAgICAKICAgICBXZWJUaHJlYWRJ
bml0UnVuUXVldWUoKTsKIAogICAgIC8vIFdlIG11c3QgaGF2ZSB0aGUgbG9jayB3aGVuIENBIHBh
aW50cyBpbiB0aGUgd2ViIHRocmVhZC4gQ0EgY29tbWl0cyBhdCAyMDAwMDAwIHNvIHdlIHVzZSBs
YXJnZXIgb3JkZXIgbnVtYmVyIHRoYW4gdGhhdCB0byBmcmVlIHRoZSBsb2NrLgotICAgIENGUnVu
TG9vcE9ic2VydmVyUmVmIHdlYlJ1bkxvb3BVbmxvY2tPYnNlcnZlclJlZiA9IENGUnVuTG9vcE9i
c2VydmVyQ3JlYXRlKG51bGxwdHIsIGtDRlJ1bkxvb3BCZWZvcmVXYWl0aW5nIHwga0NGUnVuTG9v
cEV4aXQsIFlFUywgMjUwMDAwMCwgV2ViUnVuTG9vcFVubG9jaywgbnVsbHB0cik7ICAgIAotICAg
IENGUnVuTG9vcEFkZE9ic2VydmVyKHdlYlRocmVhZFJ1bkxvb3AsIHdlYlJ1bkxvb3BVbmxvY2tP
YnNlcnZlclJlZiwga0NGUnVuTG9vcENvbW1vbk1vZGVzKTsKLSAgICBDRlJlbGVhc2Uod2ViUnVu
TG9vcFVubG9ja09ic2VydmVyUmVmKTsgICAgCisgICAgYXV0byB3ZWJSdW5Mb29wVW5sb2NrT2Jz
ZXJ2ZXJSZWYgPSBhZG9wdENGKENGUnVuTG9vcE9ic2VydmVyQ3JlYXRlKG51bGxwdHIsIGtDRlJ1
bkxvb3BCZWZvcmVXYWl0aW5nIHwga0NGUnVuTG9vcEV4aXQsIFlFUywgMjUwMDAwMCwgV2ViUnVu
TG9vcFVubG9jaywgbnVsbHB0cikpOworICAgIENGUnVuTG9vcEFkZE9ic2VydmVyKHdlYlRocmVh
ZFJ1bkxvb3AsIHdlYlJ1bkxvb3BVbmxvY2tPYnNlcnZlclJlZi5nZXQoKSwga0NGUnVuTG9vcENv
bW1vbk1vZGVzKTsKIAogICAgIENGUnVuTG9vcFNvdXJjZUNvbnRleHQgUmVsZWFzZVNvdXJjZUNv
bnRleHQgPSB7MCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwg
bnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgSGFuZGxlV2ViVGhyZWFkUmVsZWFzZVNvdXJjZX07
CiAgICAgV2ViVGhyZWFkUmVsZWFzZVNvdXJjZSA9IENGUnVuTG9vcFNvdXJjZUNyZWF0ZShudWxs
cHRyLCAtMSwgJlJlbGVhc2VTb3VyY2VDb250ZXh0KTsKQEAgLTgyMyw5ICs4MTksOCBAQCB2b2lk
IFdlYlRocmVhZFVubG9ja0d1YXJkRm9yTWFpbCh2b2lkKQogewogICAgIEFTU0VSVCghV2ViVGhy
ZWFkSXNDdXJyZW50KCkpOwogCi0gICAgQ0ZSdW5Mb29wT2JzZXJ2ZXJSZWYgbWFpblJ1bkxvb3BV
bmxvY2tHdWFyZE9ic2VydmVyID0gQ0ZSdW5Mb29wT2JzZXJ2ZXJDcmVhdGUobnVsbHB0ciwga0NG
UnVuTG9vcEVudHJ5LCBZRVMsIDAsIE1haW5SdW5Mb29wVW5sb2NrR3VhcmQsIG51bGxwdHIpOwot
ICAgIENGUnVuTG9vcEFkZE9ic2VydmVyKENGUnVuTG9vcEdldE1haW4oKSwgbWFpblJ1bkxvb3BV
bmxvY2tHdWFyZE9ic2VydmVyLCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMpOwotICAgIENGUmVsZWFz
ZShtYWluUnVuTG9vcFVubG9ja0d1YXJkT2JzZXJ2ZXIpOworICAgIGF1dG8gbWFpblJ1bkxvb3BV
bmxvY2tHdWFyZE9ic2VydmVyID0gYWRvcHRDRihDRlJ1bkxvb3BPYnNlcnZlckNyZWF0ZShudWxs
cHRyLCBrQ0ZSdW5Mb29wRW50cnksIFlFUywgMCwgTWFpblJ1bkxvb3BVbmxvY2tHdWFyZCwgbnVs
bHB0cikpOworICAgIENGUnVuTG9vcEFkZE9ic2VydmVyKENGUnVuTG9vcEdldE1haW4oKSwgbWFp
blJ1bkxvb3BVbmxvY2tHdWFyZE9ic2VydmVyLmdldCgpLCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMp
OwogfQogCiB2b2lkIF9XZWJUaHJlYWRVbmxvY2soKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNYWMubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplck1hYy5tbQppbmRl
eCAyOTU4ZjFiY2UzOWVjZWM5ODZkYjg4NTI5ZjE1OGQ3MjJmYWQ2NmNhLi5hMjg1YzIyYjIyMTFj
ZmE2OTFhOGUyOGIyZDkxMDk2OWQ5OTA2ZThmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplck1hYy5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplck1hYy5tbQpAQCAt
MjE0LDEyICsyMTQsMTIgQEAgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcjo6flBsYXRmb3JtU3Bl
ZWNoU3ludGhlc2l6ZXIoKQogICAgIFttX3BsYXRmb3JtU3BlZWNoV3JhcHBlci5nZXQoKSBpbnZh
bGlkYXRlXTsKIH0KIAotc3RhdGljIE5TQXJyYXkgKnNwZWVjaFN5bnRoZXNpc0dldFZvaWNlSWRl
bnRpZmllcnMoKQorc3RhdGljIFJldGFpblB0cjxDRkFycmF5UmVmPiBzcGVlY2hTeW50aGVzaXNH
ZXRWb2ljZUlkZW50aWZpZXJzKCkKIHsKICAgICAvLyBHZXQgYWxsIHRoZSB2b2ljZXMgb2ZmZXJl
ZCBieSBUVFMuCiAgICAgLy8gQnkgZGVmYXVsdCBzcGVlY2ggb25seSByZXR1cm5zICJwcmVtaXVt
IiB2b2ljZXMsIHdoaWNoIGRvZXMgbm90IGluY2x1ZGUgYWxsIHRoZQogICAgIC8vIGludGVybmF0
aW9uYWwgdm9pY2VzLiBUaGlzIGFsbG93cyB1cyB0byBvZmZlciBzcGVlY2ggc3ludGhlc2lzIGZv
ciBhbGwgc3VwcG9ydGVkIGxhbmd1YWdlcy4KLSAgICByZXR1cm4gQ0ZCcmlkZ2luZ1JlbGVhc2Uo
Q29weVNwZWVjaFN5bnRoZXNpc1ZvaWNlc0Zvck1vZGUoKF9fYnJpZGdlIENGQXJyYXlSZWYpQFsg
QCJWb2ljZUdyb3VwRGVmYXVsdCIsIEAiVm9pY2VHcm91cENvbXBhY3QiIF0pKTsKKyAgICByZXR1
cm4gYWRvcHRDRihDb3B5U3BlZWNoU3ludGhlc2lzVm9pY2VzRm9yTW9kZSgoX19icmlkZ2UgQ0ZB
cnJheVJlZilAWyBAIlZvaWNlR3JvdXBEZWZhdWx0IiwgQCJWb2ljZUdyb3VwQ29tcGFjdCIgXSkp
OwogfQogCiBzdGF0aWMgTlNTdHJpbmcgKnNwZWVjaFN5bnRoZXNpc0dldERlZmF1bHRWb2ljZUlk
ZW50aWZpZXJGb3JMb2NhbGUoTlNMb2NhbGUgKnVzZXJMb2NhbGUpCkBAIC0yMjcsMTUgKzIyNywx
NSBAQCBzdGF0aWMgTlNTdHJpbmcgKnNwZWVjaFN5bnRoZXNpc0dldERlZmF1bHRWb2ljZUlkZW50
aWZpZXJGb3JMb2NhbGUoTlNMb2NhbGUgKnVzZQogICAgIGlmICghdXNlckxvY2FsZSkKICAgICAg
ICAgcmV0dXJuIG5pbDsKIAotICAgIHJldHVybiAoX19icmlkZ2UgTlNTdHJpbmcgKilHZXRJZGVu
dGlmaWVyU3RyaW5nRm9yUHJlZmVycmVkVm9pY2VJbkxpc3RXaXRoTG9jYWxlKChfX2JyaWRnZSBD
RkFycmF5UmVmKXNwZWVjaFN5bnRoZXNpc0dldFZvaWNlSWRlbnRpZmllcnMoKSwgKF9fYnJpZGdl
IENGTG9jYWxlUmVmKXVzZXJMb2NhbGUpOworICAgIHJldHVybiAoX19icmlkZ2UgTlNTdHJpbmcg
KilHZXRJZGVudGlmaWVyU3RyaW5nRm9yUHJlZmVycmVkVm9pY2VJbkxpc3RXaXRoTG9jYWxlKHNw
ZWVjaFN5bnRoZXNpc0dldFZvaWNlSWRlbnRpZmllcnMoKS5nZXQoKSwgKF9fYnJpZGdlIENGTG9j
YWxlUmVmKXVzZXJMb2NhbGUpOwogfQogCiB2b2lkIFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI6
OmluaXRpYWxpemVWb2ljZUxpc3QoKQogewotICAgIE5TQXJyYXkgKmF2YWlsYWJsZVZvaWNlcyA9
IHNwZWVjaFN5bnRoZXNpc0dldFZvaWNlSWRlbnRpZmllcnMoKTsKLSAgICBOU1VJbnRlZ2VyIGNv
dW50ID0gW2F2YWlsYWJsZVZvaWNlcyBjb3VudF07CisgICAgYXV0byBhdmFpbGFibGVWb2ljZXMg
PSBzcGVlY2hTeW50aGVzaXNHZXRWb2ljZUlkZW50aWZpZXJzKCk7CisgICAgTlNVSW50ZWdlciBj
b3VudCA9IFsoX19icmlkZ2UgTlNBcnJheSAqKWF2YWlsYWJsZVZvaWNlcy5nZXQoKSBjb3VudF07
CiAgICAgZm9yIChOU1VJbnRlZ2VyIGsgPSAwOyBrIDwgY291bnQ7IGsrKykgewotICAgICAgICBO
U1N0cmluZyAqdm9pY2VOYW1lID0gW2F2YWlsYWJsZVZvaWNlcyBvYmplY3RBdEluZGV4OmtdOwor
ICAgICAgICBOU1N0cmluZyAqdm9pY2VOYW1lID0gWyhfX2JyaWRnZSBOU0FycmF5ICopYXZhaWxh
YmxlVm9pY2VzLmdldCgpIG9iamVjdEF0SW5kZXg6a107CiAgICAgICAgIE5TRGljdGlvbmFyeSAq
YXR0cmlidXRlcyA9IFtOU1NwZWVjaFN5bnRoZXNpemVyIGF0dHJpYnV0ZXNGb3JWb2ljZTp2b2lj
ZU5hbWVdOwogCiAgICAgICAgIE5TU3RyaW5nICp2b2ljZVVSSSA9IFthdHRyaWJ1dGVzIG9iamVj
dEZvcktleTpOU1ZvaWNlSWRlbnRpZmllcl07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvUGx1Z2luQmxvY2tsaXN0Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1BsdWdpbkJsb2NrbGlzdC5tbQppbmRleCBhODBiNGFmZWM3NjFkODc5ODdmZjkxMjA3MzQ2
MGI5MzllNDBmNzRmLi4xMzZmNmVkZjY5YjRkYzZkZDc5MmJhMTNjNGM4ZmNkZWM4ZDhlNDFjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGx1Z2luQmxvY2tsaXN0Lm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbHVnaW5CbG9ja2xpc3QubW0KQEAg
LTY5LDggKzY5LDggQEAgYm9vbCBQbHVnaW5CbG9ja2xpc3Q6OmlzUGx1Z2luVXBkYXRlQXZhaWxh
YmxlKE5TU3RyaW5nICpidW5kbGVJZGVudGlmaWVyKQogCiBzdGQ6OnVuaXF1ZV9wdHI8UGx1Z2lu
QmxvY2tsaXN0PiBQbHVnaW5CbG9ja2xpc3Q6OmNyZWF0ZShOU0RpY3Rpb25hcnkgKnByb3BlcnR5
TGlzdCkKIHsKLSAgICBDRkRpY3Rpb25hcnlSZWYgc3lzdGVtVmVyc2lvbkRpY3Rpb25hcnkgPSBf
Q0ZDb3B5U3lzdGVtVmVyc2lvbkRpY3Rpb25hcnkoKTsKLSAgICBDRlN0cmluZ1JlZiBvc1ZlcnNp
b24gPSBzdGF0aWNfY2FzdDxDRlN0cmluZ1JlZj4oQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoc3lzdGVt
VmVyc2lvbkRpY3Rpb25hcnksIF9rQ0ZTeXN0ZW1WZXJzaW9uUHJvZHVjdFZlcnNpb25LZXkpKTsK
KyAgICBhdXRvIHN5c3RlbVZlcnNpb25EaWN0aW9uYXJ5ID0gYWRvcHRDRihfQ0ZDb3B5U3lzdGVt
VmVyc2lvbkRpY3Rpb25hcnkoKSk7CisgICAgQ0ZTdHJpbmdSZWYgb3NWZXJzaW9uID0gc3RhdGlj
X2Nhc3Q8Q0ZTdHJpbmdSZWY+KENGRGljdGlvbmFyeUdldFZhbHVlKHN5c3RlbVZlcnNpb25EaWN0
aW9uYXJ5LmdldCgpLCBfa0NGU3lzdGVtVmVyc2lvblByb2R1Y3RWZXJzaW9uS2V5KSk7CiAKICAg
ICBOU0RpY3Rpb25hcnkgKmRpY3Rpb25hcnkgPSBbcHJvcGVydHlMaXN0IG9iamVjdEZvcktleTpA
IlBsdWdJbkJsb2NrbGlzdCJdOwogCkBAIC0xMTIsOCArMTEyLDYgQEAgc3RkOjp1bmlxdWVfcHRy
PFBsdWdpbkJsb2NrbGlzdD4gUGx1Z2luQmxvY2tsaXN0OjpjcmVhdGUoTlNEaWN0aW9uYXJ5ICpw
cm9wZXJ0eUwKICAgICAgICAgfQogICAgIH0KIAotICAgIENGUmVsZWFzZShzeXN0ZW1WZXJzaW9u
RGljdGlvbmFyeSk7Ci0KICAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPFBsdWdpbkJsb2NrbGlz
dD4obmV3IFBsdWdpbkJsb2NrbGlzdChidW5kbGVJRFRvTWluaW11bVNlY3VyZVZlcnNpb24sIGJ1
bmRsZUlEVG9NaW5pbXVtQ29tcGF0aWJsZVZlcnNpb24sIGJ1bmRsZUlEVG9CbG9ja2VkVmVyc2lv
bnMsIGJ1bmRsZUlEc1dpdGhBdmFpbGFibGVVcGRhdGVzKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJHTEJsb2NrbGlzdC5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9XZWJHTEJsb2NrbGlzdC5tbQppbmRleCA2YzFkMjZlNDc5YTAyODE3
YmRkNWIxODZmYWEyYWE3NmE1ZWNiZGJjLi5kMDRlZTIxNzRkMWRiYzc3ZDdjYWU4NWEzZmFhMjVi
MDE4MTU3ODQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViR0xC
bG9ja2xpc3QubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkdMQmxvY2ts
aXN0Lm1tCkBAIC0xNjgsMTAgKzE2OCw5IEBAIHN0YXRpYyBib29sIG1hdGNoZXNCdWlsZEluZm8o
T1NCdWlsZEluZm8gbWFjaGluZUluZm8sIE9TQnVpbGRJbmZvIGJsb2NrSW5mbywgV2ViCiAKIHN0
ZDo6dW5pcXVlX3B0cjxXZWJHTEJsb2NrbGlzdD4gV2ViR0xCbG9ja2xpc3Q6OmNyZWF0ZShOU0Rp
Y3Rpb25hcnkgKnByb3BlcnR5TGlzdCkKIHsKLSAgICBDRkRpY3Rpb25hcnlSZWYgc3lzdGVtVmVy
c2lvbkRpY3Rpb25hcnkgPSBfQ0ZDb3B5U3lzdGVtVmVyc2lvbkRpY3Rpb25hcnkoKTsKLSAgICBD
RlN0cmluZ1JlZiBvc0J1aWxkID0gc3RhdGljX2Nhc3Q8Q0ZTdHJpbmdSZWY+KENGRGljdGlvbmFy
eUdldFZhbHVlKHN5c3RlbVZlcnNpb25EaWN0aW9uYXJ5LCBfa0NGU3lzdGVtVmVyc2lvbkJ1aWxk
VmVyc2lvbktleSkpOworICAgIGF1dG8gc3lzdGVtVmVyc2lvbkRpY3Rpb25hcnkgPSBhZG9wdENG
KF9DRkNvcHlTeXN0ZW1WZXJzaW9uRGljdGlvbmFyeSgpKTsKKyAgICBDRlN0cmluZ1JlZiBvc0J1
aWxkID0gc3RhdGljX2Nhc3Q8Q0ZTdHJpbmdSZWY+KENGRGljdGlvbmFyeUdldFZhbHVlKHN5c3Rl
bVZlcnNpb25EaWN0aW9uYXJ5LmdldCgpLCBfa0NGU3lzdGVtVmVyc2lvbkJ1aWxkVmVyc2lvbktl
eSkpOwogICAgIE9TQnVpbGRJbmZvIGJ1aWxkSW5mbyA9IGJ1aWxkSW5mb0Zyb21PU0J1aWxkU3Ry
aW5nKChfX2JyaWRnZSBOU1N0cmluZyAqKW9zQnVpbGQpOwotICAgIENGUmVsZWFzZShzeXN0ZW1W
ZXJzaW9uRGljdGlvbmFyeSk7CiAKICAgICBpZiAoIWJ1aWxkSW5mby5tYWpvcikKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXJlY29yZGVyL2NvY29hL0F1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvQXVkaW9TYW1wbGVCdWZmZXJDb21w
cmVzc29yLm1tCmluZGV4IDdlMmY2YWE1MmRjZGUzMjE0NzAxNTkxNjZlNTQ4YTBjYzlhZjRmNTMu
LmM3OWE0Nzk2MjQwMmJiMTMyOTMzYzg3YmZlOThkMjM3ZjU2ZWUwNjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvQXVkaW9TYW1wbGVCdWZm
ZXJDb21wcmVzc29yLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3Jk
ZXIvY29jb2EvQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tCkBAIC0yMjcsOSArMjI3LDgg
QEAgdm9pZCBBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OmF0dGFjaFByaW1pbmdUcmltc0lm
TmVlZGVkKENNU2FtcGxlQnVmZmVyUmVmIGIKICAgICBpZiAoQ01USU1FX0NPTVBBUkVfSU5MSU5F
KGtDTVRpbWVaZXJvLCA8LCBtX3JlbWFpbmluZ1ByaW1lRHVyYXRpb24pKSB7CiAgICAgICAgIENN
VGltZSBzYW1wbGVEdXJhdGlvbiA9IENNU2FtcGxlQnVmZmVyR2V0RHVyYXRpb24oYnVmZmVyKTsK
ICAgICAgICAgQ01UaW1lIHRyaW1EdXJhdGlvbiA9IENNVGltZU1pbmltdW0oc2FtcGxlRHVyYXRp
b24sIG1fcmVtYWluaW5nUHJpbWVEdXJhdGlvbik7Ci0gICAgICAgIENGRGljdGlvbmFyeVJlZiB0
cmltQXRTdGFydERpY3QgPSBDTVRpbWVDb3B5QXNEaWN0aW9uYXJ5KHRyaW1EdXJhdGlvbiwga0NG
QWxsb2NhdG9yRGVmYXVsdCk7Ci0gICAgICAgIENNU2V0QXR0YWNobWVudChidWZmZXIsIGtDTVNh
bXBsZUJ1ZmZlckF0dGFjaG1lbnRLZXlfVHJpbUR1cmF0aW9uQXRTdGFydCwgdHJpbUF0U3RhcnRE
aWN0LCBrQ01BdHRhY2htZW50TW9kZV9TaG91bGRQcm9wYWdhdGUpOwotICAgICAgICBDRlJlbGVh
c2UodHJpbUF0U3RhcnREaWN0KTsKKyAgICAgICAgYXV0byB0cmltQXRTdGFydERpY3QgPSBhZG9w
dENGKENNVGltZUNvcHlBc0RpY3Rpb25hcnkodHJpbUR1cmF0aW9uLCBrQ0ZBbGxvY2F0b3JEZWZh
dWx0KSk7CisgICAgICAgIENNU2V0QXR0YWNobWVudChidWZmZXIsIGtDTVNhbXBsZUJ1ZmZlckF0
dGFjaG1lbnRLZXlfVHJpbUR1cmF0aW9uQXRTdGFydCwgdHJpbUF0U3RhcnREaWN0LmdldCgpLCBr
Q01BdHRhY2htZW50TW9kZV9TaG91bGRQcm9wYWdhdGUpOwogICAgICAgICBtX3JlbWFpbmluZ1By
aW1lRHVyYXRpb24gPSBDTVRpbWVTdWJ0cmFjdChtX3JlbWFpbmluZ1ByaW1lRHVyYXRpb24sIHRy
aW1EdXJhdGlvbik7CiAgICAgfQogfQpAQCAtMzQ3LDcgKzM0Niw3IEBAIE9TU3RhdHVzIEF1ZGlv
U2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6cHJvdmlkZVNvdXJjZURhdGFOdW1PdXRwdXRQYWNrZXRz
KFVJbnQzMioKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgICAgICAgICBh
dXRvIHNhbXBsZUJ1ZmZlciA9IGFkb3B0Q0YoKENNU2FtcGxlQnVmZmVyUmVmKShjb25zdF9jYXN0
PHZvaWQqPihDTUJ1ZmZlclF1ZXVlRGVxdWV1ZUFuZFJldGFpbihtX2lucHV0QnVmZmVyUXVldWUu
Z2V0KCkpKSkpOwotICAgICAgICAgICAgICAgIG1fc2FtcGxlQmxvY2tCdWZmZXIgPSBhZG9wdENG
KChDTUJsb2NrQnVmZmVyUmVmKShjb25zdF9jYXN0PHZvaWQqPihDRlJldGFpbihDTVNhbXBsZUJ1
ZmZlckdldERhdGFCdWZmZXIoc2FtcGxlQnVmZmVyLmdldCgpKSkpKSk7CisgICAgICAgICAgICAg
ICAgbV9zYW1wbGVCbG9ja0J1ZmZlciA9IENNU2FtcGxlQnVmZmVyR2V0RGF0YUJ1ZmZlcihzYW1w
bGVCdWZmZXIuZ2V0KCkpOwogICAgICAgICAgICAgICAgIGlmICghbV9zYW1wbGVCbG9ja0J1ZmZl
cikgewogICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwg
IkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBDTVNhbXBsZUJ1ZmZlckdldERhdGFCdWZmZXIg
ZmFpbGVkIik7CiAgICAgICAgICAgICAgICAgICAgIG1fc2FtcGxlQmxvY2tCdWZmZXJTaXplID0g
MDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29j
b2EvVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFyZWNvcmRlci9jb2NvYS9WaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IubW0KaW5k
ZXggMjg3MTUxMzgwN2NhZDY4Y2JkZmMzZmJlNGVlYjE3ZjQwNjMzOTE5My4uZTAzZTc3MGYwY2Fh
OWJkYzZiMTZkNWFjNzRiYjM3ODZkZjhmNGFkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9WaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3Iu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9WaWRl
b1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IubW0KQEAgLTEwOSw5ICsxMDksOCBAQCB2b2lkIFZpZGVv
U2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6dmlkZW9Db21wcmVzc2lvbkNhbGxiYWNrKHZvaWQgKnJl
ZkNvbiwgdm9pZCosCiBzdGF0aWMgaW5saW5lIE9TU3RhdHVzIHNldENvbXByZXNzaW9uU2Vzc2lv
blByb3BlcnR5KFZUQ29tcHJlc3Npb25TZXNzaW9uUmVmIHZ0U2Vzc2lvbiwgQ0ZTdHJpbmdSZWYg
a2V5LCB1aW50MzJfdCB2YWx1ZSkKIHsKICAgICBpbnQ2NF90IHZhbHVlNjQgPSB2YWx1ZTsKLSAg
ICBDRk51bWJlclJlZiBjZlZhbHVlID0gQ0ZOdW1iZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVs
dCwga0NGTnVtYmVyU0ludDY0VHlwZSwgJnZhbHVlNjQpOwotICAgIE9TU3RhdHVzIHN0YXR1cyA9
IFZUU2Vzc2lvblNldFByb3BlcnR5KHZ0U2Vzc2lvbiwga2V5LCBjZlZhbHVlKTsKLSAgICBDRlJl
bGVhc2UoY2ZWYWx1ZSk7CisgICAgYXV0byBjZlZhbHVlID0gYWRvcHRDRihDRk51bWJlckNyZWF0
ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrQ0ZOdW1iZXJTSW50NjRUeXBlLCAmdmFsdWU2NCkpOwor
ICAgIE9TU3RhdHVzIHN0YXR1cyA9IFZUU2Vzc2lvblNldFByb3BlcnR5KHZ0U2Vzc2lvbiwga2V5
LCBjZlZhbHVlLmdldCgpKTsKICAgICByZXR1cm4gc3RhdHVzOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Zvcm1EYXRhU3RyZWFtQ0ZOZXQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Gb3JtRGF0YVN0cmVhbUNGTmV0
LmNwcAppbmRleCAzZjY4ZWFkMzQxMjYyZjU2YmZlMjIxMjAzMmJlNjgzNzZlOGM4MDdmLi5kN2Rk
NjNmZWFiZmIwM2MwMTkyZjI0OWY4NjhhMzQxMDAzY2E0NWY2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Zvcm1EYXRhU3RyZWFtQ0ZOZXQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRm9ybURhdGFTdHJlYW1DRk5ldC5j
cHAKQEAgLTEwMyw3ICsxMDMsNyBAQCBzdHJ1Y3QgRm9ybVN0cmVhbUZpZWxkcyB7CiAgICAgRm9y
bURhdGFGb3JVcGxvYWQgZGF0YTsKICAgICBTY2hlZHVsZVBhaXJIYXNoU2V0IHNjaGVkdWxlZFJ1
bkxvb3BQYWlyczsKICAgICBWZWN0b3I8Rm9ybURhdGFFbGVtZW50PiByZW1haW5pbmdFbGVtZW50
czsgLy8gaW4gcmV2ZXJzZSBvcmRlcgotICAgIENGUmVhZFN0cmVhbVJlZiBjdXJyZW50U3RyZWFt
IHsgbnVsbHB0ciB9OworICAgIFJldGFpblB0cjxDRlJlYWRTdHJlYW1SZWY+IGN1cnJlbnRTdHJl
YW07CiAgICAgbG9uZyBsb25nIGN1cnJlbnRTdHJlYW1SYW5nZUxlbmd0aCB7IEJsb2JEYXRhSXRl
bTo6dG9FbmRPZkZpbGUgfTsKICAgICBNYWxsb2NQdHI8Y2hhciwgV1RGOjpWZWN0b3JNYWxsb2M+
IGN1cnJlbnREYXRhOwogICAgIENGUmVhZFN0cmVhbVJlZiBmb3JtU3RyZWFtIHsgbnVsbHB0ciB9
OwpAQCAtMTE3LDEwICsxMTcsOSBAQCBzdGF0aWMgdm9pZCBjbG9zZUN1cnJlbnRTdHJlYW0oRm9y
bVN0cmVhbUZpZWxkcyogZm9ybSkKICAgICBBU1NFUlQoZm9ybS0+c3RyZWFtSXNCZWluZ09wZW5l
ZE9yQ2xvc2VkTG9jay5pc0hlbGQoKSk7CiAKICAgICBpZiAoZm9ybS0+Y3VycmVudFN0cmVhbSkg
ewotICAgICAgICBDRlJlYWRTdHJlYW1DbG9zZShmb3JtLT5jdXJyZW50U3RyZWFtKTsKLSAgICAg
ICAgQ0ZSZWFkU3RyZWFtU2V0Q2xpZW50KGZvcm0tPmN1cnJlbnRTdHJlYW0sIGtDRlN0cmVhbUV2
ZW50Tm9uZSwgMCwgMCk7Ci0gICAgICAgIENGUmVsZWFzZShmb3JtLT5jdXJyZW50U3RyZWFtKTsK
LSAgICAgICAgZm9ybS0+Y3VycmVudFN0cmVhbSA9IDA7CisgICAgICAgIENGUmVhZFN0cmVhbUNs
b3NlKGZvcm0tPmN1cnJlbnRTdHJlYW0uZ2V0KCkpOworICAgICAgICBDRlJlYWRTdHJlYW1TZXRD
bGllbnQoZm9ybS0+Y3VycmVudFN0cmVhbS5nZXQoKSwga0NGU3RyZWFtRXZlbnROb25lLCAwLCAw
KTsKKyAgICAgICAgZm9ybS0+Y3VycmVudFN0cmVhbSA9IG51bGxwdHI7CiAgICAgICAgIGZvcm0t
PmN1cnJlbnRTdHJlYW1SYW5nZUxlbmd0aCA9IEJsb2JEYXRhSXRlbTo6dG9FbmRPZkZpbGU7CiAg
ICAgfQogICAgIGZvcm0tPmN1cnJlbnREYXRhID0gbnVsbHB0cjsKQEAgLTE0Myw3ICsxNDIsNyBA
QCBzdGF0aWMgYm9vbCBhZHZhbmNlQ3VycmVudFN0cmVhbShGb3JtU3RyZWFtRmllbGRzKiBmb3Jt
KQogICAgICAgICBbZm9ybV0gKFZlY3RvcjxjaGFyPiYgYnl0ZXMpIHsKICAgICAgICAgICAgIHNp
emVfdCBzaXplID0gYnl0ZXMuc2l6ZSgpOwogICAgICAgICAgICAgTWFsbG9jUHRyPGNoYXIsIFdU
Rjo6VmVjdG9yTWFsbG9jPiBkYXRhID0gYnl0ZXMucmVsZWFzZUJ1ZmZlcigpOwotICAgICAgICAg
ICAgZm9ybS0+Y3VycmVudFN0cmVhbSA9IENGUmVhZFN0cmVhbUNyZWF0ZVdpdGhCeXRlc05vQ29w
eSgwLCByZWludGVycHJldF9jYXN0PGNvbnN0IFVJbnQ4Kj4oZGF0YS5nZXQoKSksIHNpemUsIGtD
RkFsbG9jYXRvck51bGwpOworICAgICAgICAgICAgZm9ybS0+Y3VycmVudFN0cmVhbSA9IGFkb3B0
Q0YoQ0ZSZWFkU3RyZWFtQ3JlYXRlV2l0aEJ5dGVzTm9Db3B5KDAsIHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgVUludDgqPihkYXRhLmdldCgpKSwgc2l6ZSwga0NGQWxsb2NhdG9yTnVsbCkpOwogICAg
ICAgICAgICAgZm9ybS0+Y3VycmVudERhdGEgPSBXVEZNb3ZlKGRhdGEpOwogICAgICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgICAgIH0sIFtmb3JtXSAoY29uc3QgRm9ybURhdGFFbGVtZW50OjpF
bmNvZGVkRmlsZURhdGEmIGZpbGVEYXRhKSB7CkBAIC0xNTIsMTQgKzE1MSwxNCBAQCBzdGF0aWMg
Ym9vbCBhZHZhbmNlQ3VycmVudFN0cmVhbShGb3JtU3RyZWFtRmllbGRzKiBmb3JtKQogICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICAgICAgY29uc3QgU3RyaW5nJiBwYXRo
ID0gZmlsZURhdGEuZmlsZW5hbWU7Ci0gICAgICAgICAgICBmb3JtLT5jdXJyZW50U3RyZWFtID0g
Q0ZSZWFkU3RyZWFtQ3JlYXRlV2l0aEZpbGUoMCwgRmlsZVN5c3RlbTo6cGF0aEFzVVJMKHBhdGgp
LmdldCgpKTsKKyAgICAgICAgICAgIGZvcm0tPmN1cnJlbnRTdHJlYW0gPSBhZG9wdENGKENGUmVh
ZFN0cmVhbUNyZWF0ZVdpdGhGaWxlKDAsIEZpbGVTeXN0ZW06OnBhdGhBc1VSTChwYXRoKS5nZXQo
KSkpOwogICAgICAgICAgICAgaWYgKCFmb3JtLT5jdXJyZW50U3RyZWFtKSB7CiAgICAgICAgICAg
ICAgICAgLy8gVGhlIGZpbGUgbXVzdCBoYXZlIGJlZW4gcmVtb3ZlZCBvciBiZWNvbWUgdW5yZWFk
YWJsZS4KICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICBpZiAoZmlsZURhdGEuZmlsZVN0YXJ0ID4gMCkgewogICAgICAgICAgICAgICAgIFJl
dGFpblB0cjxDRk51bWJlclJlZj4gcG9zaXRpb24gPSBhZG9wdENGKENGTnVtYmVyQ3JlYXRlKDAs
IGtDRk51bWJlckxvbmdMb25nVHlwZSwgJmZpbGVEYXRhLmZpbGVTdGFydCkpOwotICAgICAgICAg
ICAgICAgIENGUmVhZFN0cmVhbVNldFByb3BlcnR5KGZvcm0tPmN1cnJlbnRTdHJlYW0sIGtDRlN0
cmVhbVByb3BlcnR5RmlsZUN1cnJlbnRPZmZzZXQsIHBvc2l0aW9uLmdldCgpKTsKKyAgICAgICAg
ICAgICAgICBDRlJlYWRTdHJlYW1TZXRQcm9wZXJ0eShmb3JtLT5jdXJyZW50U3RyZWFtLmdldCgp
LCBrQ0ZTdHJlYW1Qcm9wZXJ0eUZpbGVDdXJyZW50T2Zmc2V0LCBwb3NpdGlvbi5nZXQoKSk7CiAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICBmb3JtLT5jdXJyZW50U3RyZWFtUmFuZ2VMZW5ndGgg
PSBmaWxlRGF0YS5maWxlTGVuZ3RoOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0xNzYs
MTMgKzE3NSwxMyBAQCBzdGF0aWMgYm9vbCBhZHZhbmNlQ3VycmVudFN0cmVhbShGb3JtU3RyZWFt
RmllbGRzKiBmb3JtKQogCiAgICAgLy8gU2V0IHVwIHRoZSBjYWxsYmFjay4KICAgICBDRlN0cmVh
bUNsaWVudENvbnRleHQgY29udGV4dCA9IHsgMCwgZm9ybSwgMCwgMCwgMCB9OwotICAgIENGUmVh
ZFN0cmVhbVNldENsaWVudChmb3JtLT5jdXJyZW50U3RyZWFtLCBrQ0ZTdHJlYW1FdmVudEhhc0J5
dGVzQXZhaWxhYmxlIHwga0NGU3RyZWFtRXZlbnRFcnJvck9jY3VycmVkIHwga0NGU3RyZWFtRXZl
bnRFbmRFbmNvdW50ZXJlZCwKKyAgICBDRlJlYWRTdHJlYW1TZXRDbGllbnQoZm9ybS0+Y3VycmVu
dFN0cmVhbS5nZXQoKSwga0NGU3RyZWFtRXZlbnRIYXNCeXRlc0F2YWlsYWJsZSB8IGtDRlN0cmVh
bUV2ZW50RXJyb3JPY2N1cnJlZCB8IGtDRlN0cmVhbUV2ZW50RW5kRW5jb3VudGVyZWQsCiAgICAg
ICAgIGZvcm1FdmVudENhbGxiYWNrLCAmY29udGV4dCk7CiAKICAgICAvLyBTY2hlZHVsZSB3aXRo
IHRoZSBjdXJyZW50IHNldCBvZiBydW4gbG9vcHMuCiAgICAgU2NoZWR1bGVQYWlySGFzaFNldDo6
aXRlcmF0b3IgZW5kID0gZm9ybS0+c2NoZWR1bGVkUnVuTG9vcFBhaXJzLmVuZCgpOwogICAgIGZv
ciAoU2NoZWR1bGVQYWlySGFzaFNldDo6aXRlcmF0b3IgaXQgPSBmb3JtLT5zY2hlZHVsZWRSdW5M
b29wUGFpcnMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQotICAgICAgICBDRlJlYWRTdHJlYW1T
Y2hlZHVsZVdpdGhSdW5Mb29wKGZvcm0tPmN1cnJlbnRTdHJlYW0sICgqaXQpLT5ydW5Mb29wKCks
ICgqaXQpLT5tb2RlKCkpOworICAgICAgICBDRlJlYWRTdHJlYW1TY2hlZHVsZVdpdGhSdW5Mb29w
KGZvcm0tPmN1cnJlbnRTdHJlYW0uZ2V0KCksICgqaXQpLT5ydW5Mb29wKCksICgqaXQpLT5tb2Rl
KCkpOwogCiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0xOTYsNyArMTk1LDcgQEAgc3RhdGljIGJv
b2wgb3Blbk5leHRTdHJlYW0oRm9ybVN0cmVhbUZpZWxkcyogZm9ybSkKICAgICAvLyBTa2lwIG92
ZXIgYW55IHN0cmVhbXMgd2UgY2FuJ3Qgb3Blbi4KICAgICBpZiAoIWFkdmFuY2VDdXJyZW50U3Ry
ZWFtKGZvcm0pKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgd2hpbGUgKGZvcm0tPmN1cnJl
bnRTdHJlYW0gJiYgIUNGUmVhZFN0cmVhbU9wZW4oZm9ybS0+Y3VycmVudFN0cmVhbSkpIHsKKyAg
ICB3aGlsZSAoZm9ybS0+Y3VycmVudFN0cmVhbSAmJiAhQ0ZSZWFkU3RyZWFtT3Blbihmb3JtLT5j
dXJyZW50U3RyZWFtLmdldCgpKSkgewogICAgICAgICBpZiAoIWFkdmFuY2VDdXJyZW50U3RyZWFt
KGZvcm0pKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KQEAgLTI2Miw5ICsyNjEs
OSBAQCBzdGF0aWMgQ0ZJbmRleCBmb3JtUmVhZChDRlJlYWRTdHJlYW1SZWYsIFVJbnQ4KiBidWZm
ZXIsIENGSW5kZXggYnVmZmVyTGVuZ3RoLCBDRgogICAgICAgICBDRkluZGV4IGJ5dGVzVG9SZWFk
ID0gYnVmZmVyTGVuZ3RoOwogICAgICAgICBpZiAoZm9ybS0+Y3VycmVudFN0cmVhbVJhbmdlTGVu
Z3RoICE9IEJsb2JEYXRhSXRlbTo6dG9FbmRPZkZpbGUgJiYgZm9ybS0+Y3VycmVudFN0cmVhbVJh
bmdlTGVuZ3RoIDwgYnl0ZXNUb1JlYWQpCiAgICAgICAgICAgICBieXRlc1RvUmVhZCA9IHN0YXRp
Y19jYXN0PENGSW5kZXg+KGZvcm0tPmN1cnJlbnRTdHJlYW1SYW5nZUxlbmd0aCk7Ci0gICAgICAg
IENGSW5kZXggYnl0ZXNSZWFkID0gQ0ZSZWFkU3RyZWFtUmVhZChmb3JtLT5jdXJyZW50U3RyZWFt
LCBidWZmZXIsIGJ5dGVzVG9SZWFkKTsKKyAgICAgICAgQ0ZJbmRleCBieXRlc1JlYWQgPSBDRlJl
YWRTdHJlYW1SZWFkKGZvcm0tPmN1cnJlbnRTdHJlYW0uZ2V0KCksIGJ1ZmZlciwgYnl0ZXNUb1Jl
YWQpOwogICAgICAgICBpZiAoYnl0ZXNSZWFkIDwgMCkgewotICAgICAgICAgICAgKmVycm9yID0g
Q0ZSZWFkU3RyZWFtR2V0RXJyb3IoZm9ybS0+Y3VycmVudFN0cmVhbSk7CisgICAgICAgICAgICAq
ZXJyb3IgPSBDRlJlYWRTdHJlYW1HZXRFcnJvcihmb3JtLT5jdXJyZW50U3RyZWFtLmdldCgpKTsK
ICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgfQogICAgICAgICBpZiAoYnl0ZXNSZWFk
ID4gMCkgewpAQCAtMjg4LDE0ICsyODcsMTQgQEAgc3RhdGljIEJvb2xlYW4gZm9ybUNhblJlYWQo
Q0ZSZWFkU3RyZWFtUmVmIHN0cmVhbSwgdm9pZCogY29udGV4dCkKIHsKICAgICBGb3JtU3RyZWFt
RmllbGRzKiBmb3JtID0gc3RhdGljX2Nhc3Q8Rm9ybVN0cmVhbUZpZWxkcyo+KGNvbnRleHQpOwog
Ci0gICAgd2hpbGUgKGZvcm0tPmN1cnJlbnRTdHJlYW0gJiYgQ0ZSZWFkU3RyZWFtR2V0U3RhdHVz
KGZvcm0tPmN1cnJlbnRTdHJlYW0pID09IGtDRlN0cmVhbVN0YXR1c0F0RW5kKQorICAgIHdoaWxl
IChmb3JtLT5jdXJyZW50U3RyZWFtICYmIENGUmVhZFN0cmVhbUdldFN0YXR1cyhmb3JtLT5jdXJy
ZW50U3RyZWFtLmdldCgpKSA9PSBrQ0ZTdHJlYW1TdGF0dXNBdEVuZCkKICAgICAgICAgb3Blbk5l
eHRTdHJlYW0oZm9ybSk7CiAKICAgICBpZiAoIWZvcm0tPmN1cnJlbnRTdHJlYW0pIHsKICAgICAg
ICAgQ0ZSZWFkU3RyZWFtU2lnbmFsRXZlbnQoc3RyZWFtLCBrQ0ZTdHJlYW1FdmVudEVuZEVuY291
bnRlcmVkLCAwKTsKICAgICAgICAgcmV0dXJuIEZBTFNFOwogICAgIH0KLSAgICByZXR1cm4gQ0ZS
ZWFkU3RyZWFtSGFzQnl0ZXNBdmFpbGFibGUoZm9ybS0+Y3VycmVudFN0cmVhbSk7CisgICAgcmV0
dXJuIENGUmVhZFN0cmVhbUhhc0J5dGVzQXZhaWxhYmxlKGZvcm0tPmN1cnJlbnRTdHJlYW0uZ2V0
KCkpOwogfQogCiBzdGF0aWMgdm9pZCBmb3JtQ2xvc2UoQ0ZSZWFkU3RyZWFtUmVmLCB2b2lkKiBj
b250ZXh0KQpAQCAtMzI2LDcgKzMyNSw3IEBAIHN0YXRpYyB2b2lkIGZvcm1TY2hlZHVsZShDRlJl
YWRTdHJlYW1SZWYsIENGUnVuTG9vcFJlZiBydW5Mb29wLCBDRlN0cmluZ1JlZiBydW5MCiAgICAg
Rm9ybVN0cmVhbUZpZWxkcyogZm9ybSA9IHN0YXRpY19jYXN0PEZvcm1TdHJlYW1GaWVsZHMqPihj
b250ZXh0KTsKIAogICAgIGlmIChmb3JtLT5jdXJyZW50U3RyZWFtKQotICAgICAgICBDRlJlYWRT
dHJlYW1TY2hlZHVsZVdpdGhSdW5Mb29wKGZvcm0tPmN1cnJlbnRTdHJlYW0sIHJ1bkxvb3AsIHJ1
bkxvb3BNb2RlKTsKKyAgICAgICAgQ0ZSZWFkU3RyZWFtU2NoZWR1bGVXaXRoUnVuTG9vcChmb3Jt
LT5jdXJyZW50U3RyZWFtLmdldCgpLCBydW5Mb29wLCBydW5Mb29wTW9kZSk7CiAgICAgZm9ybS0+
c2NoZWR1bGVkUnVuTG9vcFBhaXJzLmFkZChTY2hlZHVsZVBhaXI6OmNyZWF0ZShydW5Mb29wLCBy
dW5Mb29wTW9kZSkpOwogfQogCkBAIC0zMzUsNyArMzM0LDcgQEAgc3RhdGljIHZvaWQgZm9ybVVu
c2NoZWR1bGUoQ0ZSZWFkU3RyZWFtUmVmLCBDRlJ1bkxvb3BSZWYgcnVuTG9vcCwgQ0ZTdHJpbmdS
ZWYgcnUKICAgICBGb3JtU3RyZWFtRmllbGRzKiBmb3JtID0gc3RhdGljX2Nhc3Q8Rm9ybVN0cmVh
bUZpZWxkcyo+KGNvbnRleHQpOwogCiAgICAgaWYgKGZvcm0tPmN1cnJlbnRTdHJlYW0pCi0gICAg
ICAgIENGUmVhZFN0cmVhbVVuc2NoZWR1bGVGcm9tUnVuTG9vcChmb3JtLT5jdXJyZW50U3RyZWFt
LCBydW5Mb29wLCBydW5Mb29wTW9kZSk7CisgICAgICAgIENGUmVhZFN0cmVhbVVuc2NoZWR1bGVG
cm9tUnVuTG9vcChmb3JtLT5jdXJyZW50U3RyZWFtLmdldCgpLCBydW5Mb29wLCBydW5Mb29wTW9k
ZSk7CiAgICAgZm9ybS0+c2NoZWR1bGVkUnVuTG9vcFBhaXJzLnJlbW92ZShTY2hlZHVsZVBhaXI6
OmNyZWF0ZShydW5Mb29wLCBydW5Mb29wTW9kZSkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0V2lu
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uQ0ZOZXRXaW4uY3BwCmluZGV4IDA1YjBlYzkyYjllYTcyNjY2YjY5YzA3YmUwMmY2MDY2
YmQ1ZjdkMTUuLjVkN2Q3OTYxNDQ2NWZjYWI1YmQ2YjY0MThlMDYwZjY4ZWIwOTRhNGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uQ0ZOZXRXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y2YvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ0ZOZXRXaW4uY3BwCkBAIC04OCwxMiArODgsMTAgQEAg
Q0ZVUkxTdG9yYWdlU2Vzc2lvblJlZiBjcmVhdGVQcml2YXRlU3RvcmFnZVNlc3Npb24oQ0ZTdHJp
bmdSZWYgaWRlbnRpZmllciwgT3B0aW8KICAgICAKICAgICAvLyBUaGUgcHJpdmF0ZSBzdG9yYWdl
IHNlc3Npb24gc2hvdWxkIGhhdmUgdGhlIHNhbWUgcHJvcGVydGllcyBhcyB0aGUgZGVmYXVsdCBz
dG9yYWdlIHNlc3Npb24sCiAgICAgLy8gd2l0aCB0aGUgZXhjZXB0aW9uIHRoYXQgaXQgc2hvdWxk
IGJlIGluLW1lbW9yeSBvbmx5IHN0b3JhZ2UuCi0gICAgQ0ZVUkxDYWNoZVJlZiBjYWNoZSA9IF9D
RlVSTFN0b3JhZ2VTZXNzaW9uQ29weUNhY2hlKGtDRkFsbG9jYXRvckRlZmF1bHQsIHN0b3JhZ2VT
ZXNzaW9uKTsKLSAgICBDRlVSTENhY2hlU2V0RGlza0NhcGFjaXR5KGNhY2hlLCAwKTsKLSAgICBD
RlVSTENhY2hlUmVmIGRlZmF1bHRDYWNoZSA9IENGVVJMQ2FjaGVDb3B5U2hhcmVkVVJMQ2FjaGUo
KTsKLSAgICBDRlVSTENhY2hlU2V0TWVtb3J5Q2FwYWNpdHkoY2FjaGUsIENGVVJMQ2FjaGVNZW1v
cnlDYXBhY2l0eShkZWZhdWx0Q2FjaGUpKTsKLSAgICBDRlJlbGVhc2UoZGVmYXVsdENhY2hlKTsK
LSAgICBDRlJlbGVhc2UoY2FjaGUpOworICAgIGF1dG8gY2FjaGUgPSBhZG9wdENGKF9DRlVSTFN0
b3JhZ2VTZXNzaW9uQ29weUNhY2hlKGtDRkFsbG9jYXRvckRlZmF1bHQsIHN0b3JhZ2VTZXNzaW9u
KSk7CisgICAgQ0ZVUkxDYWNoZVNldERpc2tDYXBhY2l0eShjYWNoZS5nZXQoKSwgMCk7CisgICAg
YXV0byBkZWZhdWx0Q2FjaGUgPSBhZG9wdENGKENGVVJMQ2FjaGVDb3B5U2hhcmVkVVJMQ2FjaGUo
KSk7CisgICAgQ0ZVUkxDYWNoZVNldE1lbW9yeUNhcGFjaXR5KGNhY2hlLmdldCgpLCBDRlVSTENh
Y2hlTWVtb3J5Q2FwYWNpdHkoZGVmYXVsdENhY2hlLmdldCgpKSk7CiAgICAgCiAgICAgQ0ZIVFRQ
Q29va2llU3RvcmFnZUFjY2VwdFBvbGljeSBjZkNvb2tpZUFjY2VwdFBvbGljeTsKICAgICBpZiAo
Y29va2llQWNjZXB0UG9saWN5KQpAQCAtMTAzLDkgKzEwMSw4IEBAIENGVVJMU3RvcmFnZVNlc3Np
b25SZWYgY3JlYXRlUHJpdmF0ZVN0b3JhZ2VTZXNzaW9uKENGU3RyaW5nUmVmIGlkZW50aWZpZXIs
IE9wdGlvCiAgICAgICAgIGNmQ29va2llQWNjZXB0UG9saWN5ID0gQ0ZIVFRQQ29va2llU3RvcmFn
ZUdldENvb2tpZUFjY2VwdFBvbGljeShkZWZhdWx0Q29va2llU3RvcmFnZSk7CiAgICAgfQogCi0g
ICAgQ0ZIVFRQQ29va2llU3RvcmFnZVJlZiBjb29raWVTdG9yYWdlID0gX0NGVVJMU3RvcmFnZVNl
c3Npb25Db3B5Q29va2llU3RvcmFnZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBzdG9yYWdlU2Vzc2lv
bik7Ci0gICAgQ0ZIVFRQQ29va2llU3RvcmFnZVNldENvb2tpZUFjY2VwdFBvbGljeShjb29raWVT
dG9yYWdlLCBjZkNvb2tpZUFjY2VwdFBvbGljeSk7Ci0gICAgQ0ZSZWxlYXNlKGNvb2tpZVN0b3Jh
Z2UpOworICAgIGF1dG8gY29va2llU3RvcmFnZSA9IGFkb3B0Q0YoX0NGVVJMU3RvcmFnZVNlc3Np
b25Db3B5Q29va2llU3RvcmFnZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBzdG9yYWdlU2Vzc2lvbikp
OworICAgIENGSFRUUENvb2tpZVN0b3JhZ2VTZXRDb29raWVBY2NlcHRQb2xpY3koY29va2llU3Rv
cmFnZS5nZXQoKSwgY2ZDb29raWVBY2NlcHRQb2xpY3kpOwogICAgIAogICAgIHJldHVybiBzdG9y
YWdlU2Vzc2lvbjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY2YvUmVzb3VyY2VIYW5kbGVDRk5ldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwCmluZGV4IGNlNGVkYjQ5YjczODcwM2Mx
YzNhMGIzODY1YzA4ZDc5MjRhNDYzMzcuLjNjMTdhZGM0MThiODA0Y2E0ZWY1NGE5OTM1ZmVjMzU1
NzQyM2JjODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2Yv
UmVzb3VyY2VIYW5kbGVDRk5ldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0LmNwcApAQCAtMTIwLDEyICsxMjAsMTEgQEAgc3Rh
dGljIHZvaWQgc2V0Q2xpZW50Q2VydGlmaWNhdGVJblNTTFByb3BlcnRpZXMoQ0ZNdXRhYmxlRGlj
dGlvbmFyeVJlZiBzc2xQcm9wcywKIHsKICAgICBpZiAoIXNzbFByb3BzIHx8ICFjZXJ0RGF0YSkK
ICAgICAgICAgcmV0dXJuOwotICAgIENGTXV0YWJsZURpY3Rpb25hcnlSZWYgY2VydERpY3QgPSBD
RkRpY3Rpb25hcnlDcmVhdGVNdXRhYmxlKGtDRkFsbG9jYXRvckRlZmF1bHQsIDAsICZrQ0ZUeXBl
RGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3Mp
OworICAgIGF1dG8gY2VydERpY3QgPSBhZG9wdENGKENGRGljdGlvbmFyeUNyZWF0ZU11dGFibGUo
a0NGQWxsb2NhdG9yRGVmYXVsdCwgMCwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAm
a0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcykpOwogICAgIGlmICghY2VydERpY3QpCiAg
ICAgICAgIHJldHVybjsKLSAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShjZXJ0RGljdCwgX2tDRldp
bmRvd3NTU0xMb2NhbENlcnQsIGNlcnREYXRhKTsKLSAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShz
c2xQcm9wcywgX2tDRlN0cmVhbVByb3BlcnR5V2luZG93c1NTTENlcnRJbmZvLCBjZXJ0RGljdCk7
Ci0gICAgQ0ZSZWxlYXNlKGNlcnREaWN0KTsKKyAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShjZXJ0
RGljdC5nZXQoKSwgX2tDRldpbmRvd3NTU0xMb2NhbENlcnQsIGNlcnREYXRhKTsKKyAgICBDRkRp
Y3Rpb25hcnlTZXRWYWx1ZShzc2xQcm9wcywgX2tDRlN0cmVhbVByb3BlcnR5V2luZG93c1NTTENl
cnRJbmZvLCBjZXJ0RGljdC5nZXQoKSk7CiB9CiAjZW5kaWYKIApAQCAtMjA1LDExICsyMDQsMTEg
QEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6Y3JlYXRlQ0ZVUkxDb25uZWN0aW9uKGJvb2wgc2hvdWxk
VXNlQ3JlZGVudGlhbFN0b3JhZ2UsIGJvb2wKICAgICBpZiAoc3NsUHJvcHMpCiAgICAgICAgIENG
VVJMUmVxdWVzdFNldFNTTFByb3BlcnRpZXMocmVxdWVzdC5nZXQoKSwgc3NsUHJvcHMuZ2V0KCkp
OwogCi0gICAgQ0ZNdXRhYmxlRGljdGlvbmFyeVJlZiBzdHJlYW1Qcm9wZXJ0aWVzICA9IENGRGlj
dGlvbmFyeUNyZWF0ZU11dGFibGUoMCwgMCwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tz
LCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcyk7CisgICAgYXV0byBzdHJlYW1Qcm9w
ZXJ0aWVzICA9IGFkb3B0Q0YoQ0ZEaWN0aW9uYXJ5Q3JlYXRlTXV0YWJsZSgwLCAwLCAma0NGVHlw
ZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tz
KSk7CiAKICAgICBpZiAoIXNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKSB7CiAgICAgICAgIC8v
IEF2b2lkIHVzaW5nIGV4aXN0aW5nIGNvbm5lY3Rpb25zLCBiZWNhdXNlIHRoZXkgbWF5IGJlIGFs
cmVhZHkgYXV0aGVudGljYXRlZC4KLSAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUoc3RyZWFt
UHJvcGVydGllcywgQ0ZTVFIoIl9rQ0ZVUkxDb25uZWN0aW9uU2Vzc2lvbklEIiksIENGU1RSKCJX
ZWJLaXRQcml2YXRlU2Vzc2lvbiIpKTsKKyAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUoc3Ry
ZWFtUHJvcGVydGllcy5nZXQoKSwgQ0ZTVFIoIl9rQ0ZVUkxDb25uZWN0aW9uU2Vzc2lvbklEIiks
IENGU1RSKCJXZWJLaXRQcml2YXRlU2Vzc2lvbiIpKTsKICAgICB9CiAKICAgICBzdGF0aWMgY29u
c3QgQ0ZTdHJpbmdSZWYga0NGVVJMQ29ubmVjdGlvblNvY2tldFN0cmVhbVByb3BlcnRpZXMgPSBD
RlNUUigia0NGVVJMQ29ubmVjdGlvblNvY2tldFN0cmVhbVByb3BlcnRpZXMiKTsKQEAgLTIyOCw4
ICsyMjcsNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpjcmVhdGVDRlVSTENvbm5lY3Rpb24oYm9v
bCBzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZSwgYm9vbAogI2VuZGlmCiAKICAgICAvLyBGSVhN
RTogVGhpcyBjb2RlIGlzIGRpZmZlcmVudCBmcm9tIGlPUyBjb2RlIGluIFJlc291cmNlSGFuZGxl
TWFjLm1tIGluIHRoYXQgaGVyZSB3ZSBpZ25vcmUgc3RyZWFtIHByb3BlcnRpZXMgdGhhdCB3ZXJl
IHByZXNlbnQgaW4gY2xpZW50IHByb3BlcnRpZXMuCi0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUo
cHJvcGVydGllc0RpY3Rpb25hcnkuZ2V0KCksIGtDRlVSTENvbm5lY3Rpb25Tb2NrZXRTdHJlYW1Q
cm9wZXJ0aWVzLCBzdHJlYW1Qcm9wZXJ0aWVzKTsKLSAgICBDRlJlbGVhc2Uoc3RyZWFtUHJvcGVy
dGllcyk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUocHJvcGVydGllc0RpY3Rpb25hcnkuZ2V0
KCksIGtDRlVSTENvbm5lY3Rpb25Tb2NrZXRTdHJlYW1Qcm9wZXJ0aWVzLCBzdHJlYW1Qcm9wZXJ0
aWVzLmdldCgpKTsKIAogICAgIGQtPm1fY29ubmVjdGlvbkRlbGVnYXRlID0gYWRvcHRSZWYobmV3
IFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWUo
dGhpcywgV1RGTW92ZShtZXNzYWdlUXVldWUpKSk7CiAgICAgZC0+bV9jb25uZWN0aW9uRGVsZWdh
dGUtPnNldHVwUmVxdWVzdChyZXF1ZXN0LmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxl
Z2F0ZVdpdGhPcGVyYXRpb25RdWV1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9u
UXVldWUuY3BwCmluZGV4IDI2NDY2Mzg4YjdjYTVhNjY1NmQwZWUyNjFlNzU2ZWUyMmZhMDQwMzEu
LjhlOGMzYWE3YTZiZTRjZWUzNmFhOGU5ZjNkYTNlNmEyMmExNWVjN2QgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5l
Y3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRl
V2l0aE9wZXJhdGlvblF1ZXVlLmNwcApAQCAtMTM3LDggKzEzNyw3IEBAIENGVVJMUmVxdWVzdFJl
ZiBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVl
Ojp3aWxsU2VuCiAgICAgaWYgKCFvcmlnaW5hbFJlZGlyZWN0UmVzcG9uc2UpIHsKICAgICAgICAg
UmV0YWluUHRyPENGU3RyaW5nUmVmPiBuZXdTY2hlbWUgPSBhZG9wdENGKENGVVJMQ29weVNjaGVt
ZShDRlVSTFJlcXVlc3RHZXRVUkwoY2ZSZXF1ZXN0KSkpOwogICAgICAgICBpZiAoQ0ZTdHJpbmdD
b21wYXJlKG5ld1NjaGVtZS5nZXQoKSwgbV9vcmlnaW5hbFNjaGVtZS5nZXQoKSwga0NGQ29tcGFy
ZUNhc2VJbnNlbnNpdGl2ZSkgPT0ga0NGQ29tcGFyZUVxdWFsVG8pIHsKLSAgICAgICAgICAgIENG
UmV0YWluKGNmUmVxdWVzdCk7Ci0gICAgICAgICAgICByZXR1cm4gY2ZSZXF1ZXN0OworICAgICAg
ICAgICAgcmV0dXJuIGNmUmVxdWVzdC5sZWFrUmVmKCk7CiAgICAgICAgIH0KICAgICB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1
ZXN0Q0ZOZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJj
ZVJlcXVlc3RDRk5ldC5jcHAKaW5kZXggZDJkMDkzYzNjMzIwMDczYjZhNWFhYmU5M2QwY2ZmZmE5
MWU5NTJiYi4uZjZlMWI5YjVkM2E1YmE3YWUzNWE3NzkyM2Q1NmQ1M2VhZTMyNzE5OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3RD
Rk5ldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJj
ZVJlcXVlc3RDRk5ldC5jcHAKQEAgLTI4MiwxMCArMjgyLDggQEAgdm9pZCBSZXNvdXJjZVJlcXVl
c3Q6OmRvVXBkYXRlUmVzb3VyY2VSZXF1ZXN0KCkKICAgICAgICAgbV9jYWNoZVBvbGljeSA9IGZy
b21QbGF0Zm9ybVJlcXVlc3RDYWNoZVBvbGljeShDRlVSTFJlcXVlc3RHZXRDYWNoZVBvbGljeSht
X2NmUmVxdWVzdC5nZXQoKSkpOwogICAgIG1fdGltZW91dEludGVydmFsID0gQ0ZVUkxSZXF1ZXN0
R2V0VGltZW91dEludGVydmFsKG1fY2ZSZXF1ZXN0LmdldCgpKTsKICAgICBtX2ZpcnN0UGFydHlG
b3JDb29raWVzID0gQ0ZVUkxSZXF1ZXN0R2V0TWFpbkRvY3VtZW50VVJMKG1fY2ZSZXF1ZXN0Lmdl
dCgpKTsKLSAgICBpZiAoQ0ZTdHJpbmdSZWYgbWV0aG9kID0gQ0ZVUkxSZXF1ZXN0Q29weUhUVFBS
ZXF1ZXN0TWV0aG9kKG1fY2ZSZXF1ZXN0LmdldCgpKSkgewotICAgICAgICBtX2h0dHBNZXRob2Qg
PSBtZXRob2Q7Ci0gICAgICAgIENGUmVsZWFzZShtZXRob2QpOwotICAgIH0KKyAgICBpZiAoYXV0
byBtZXRob2QgPSBhZG9wdENGKENGVVJMUmVxdWVzdENvcHlIVFRQUmVxdWVzdE1ldGhvZChtX2Nm
UmVxdWVzdC5nZXQoKSkpKQorICAgICAgICBtX2h0dHBNZXRob2QgPSBtZXRob2QuZ2V0KCk7CiAg
ICAgbV9hbGxvd0Nvb2tpZXMgPSBDRlVSTFJlcXVlc3RTaG91bGRIYW5kbGVIVFRQQ29va2llcyht
X2NmUmVxdWVzdC5nZXQoKSk7CiAKICAgICBpZiAocmVzb3VyY2VQcmlvcml0aWVzRW5hYmxlZCgp
KQpAQCAtMzA2LDE0ICszMDQsMTMgQEAgdm9pZCBSZXNvdXJjZVJlcXVlc3Q6OmRvVXBkYXRlUmVz
b3VyY2VSZXF1ZXN0KCkKICNlbmRpZgogCiAgICAgbV9odHRwSGVhZGVyRmllbGRzLmNsZWFyKCk7
Ci0gICAgaWYgKENGRGljdGlvbmFyeVJlZiBoZWFkZXJzID0gQ0ZVUkxSZXF1ZXN0Q29weUFsbEhU
VFBIZWFkZXJGaWVsZHMobV9jZlJlcXVlc3QuZ2V0KCkpKSB7Ci0gICAgICAgIENGSW5kZXggaGVh
ZGVyQ291bnQgPSBDRkRpY3Rpb25hcnlHZXRDb3VudChoZWFkZXJzKTsKKyAgICBpZiAoYXV0byBo
ZWFkZXJzID0gYWRvcHRDRihDRlVSTFJlcXVlc3RDb3B5QWxsSFRUUEhlYWRlckZpZWxkcyhtX2Nm
UmVxdWVzdC5nZXQoKSkpKSB7CisgICAgICAgIENGSW5kZXggaGVhZGVyQ291bnQgPSBDRkRpY3Rp
b25hcnlHZXRDb3VudChoZWFkZXJzLmdldCgpKTsKICAgICAgICAgVmVjdG9yPGNvbnN0IHZvaWQq
LCAxMjg+IGtleXMoaGVhZGVyQ291bnQpOwogICAgICAgICBWZWN0b3I8Y29uc3Qgdm9pZCosIDEy
OD4gdmFsdWVzKGhlYWRlckNvdW50KTsKLSAgICAgICAgQ0ZEaWN0aW9uYXJ5R2V0S2V5c0FuZFZh
bHVlcyhoZWFkZXJzLCBrZXlzLmRhdGEoKSwgdmFsdWVzLmRhdGEoKSk7CisgICAgICAgIENGRGlj
dGlvbmFyeUdldEtleXNBbmRWYWx1ZXMoaGVhZGVycy5nZXQoKSwga2V5cy5kYXRhKCksIHZhbHVl
cy5kYXRhKCkpOwogICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGhlYWRlckNvdW50OyArK2kp
CiAgICAgICAgICAgICBtX2h0dHBIZWFkZXJGaWVsZHMuc2V0KChDRlN0cmluZ1JlZilrZXlzW2ld
LCAoQ0ZTdHJpbmdSZWYpdmFsdWVzW2ldKTsKLSAgICAgICAgQ0ZSZWxlYXNlKGhlYWRlcnMpOwog
ICAgIH0KIAogICAgIG1fcmVzcG9uc2VDb250ZW50RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxiYWNr
QXJyYXkuY2xlYXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9E
cmFnSW1hZ2VDR1dpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdl
Q0dXaW4uY3BwCmluZGV4IDM0ZWQ5ZWY4Y2Y0Zjg2NmNhMDNmZGNhOTMwNGE5NjA5NmJjNjViOWUu
LmI0NWU0ZDRhMGEyNWRmY2M0NzZmOWFhYmY3NTdjNzBhZTIyYzk5NWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnSW1hZ2VDR1dpbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdJbWFnZUNHV2luLmNwcApAQCAtNjcsMTUgKzY3LDEz
IEBAIEdESU9iamVjdDxIQklUTUFQPiBhbGxvY0ltYWdlKEhEQyBkYywgSW50U2l6ZSBzaXplLCBD
R0NvbnRleHRSZWYgKnRhcmdldFJlZikKICAgICByZXR1cm4gaGJtcDsKIH0KIAotc3RhdGljIENH
Q29udGV4dFJlZiBjcmVhdGVDZ0NvbnRleHRGcm9tQml0bWFwKEhCSVRNQVAgYml0bWFwKQorc3Rh
dGljIFJldGFpblB0cjxDR0NvbnRleHRSZWY+IGNyZWF0ZUNnQ29udGV4dEZyb21CaXRtYXAoSEJJ
VE1BUCBiaXRtYXApCiB7CiAgICAgQklUTUFQIGluZm87CiAgICAgR2V0T2JqZWN0KGJpdG1hcCwg
c2l6ZW9mKGluZm8pLCAmaW5mbyk7CiAgICAgQVNTRVJUKGluZm8uYm1CaXRzUGl4ZWwgPT0gMzIp
OwogCi0gICAgQ0dDb250ZXh0UmVmIGJpdG1hcENvbnRleHQgPSBDR0JpdG1hcENvbnRleHRDcmVh
dGUoaW5mby5ibUJpdHMsIGluZm8uYm1XaWR0aCwgaW5mby5ibUhlaWdodCwgOCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmZvLmJtV2lk
dGhCeXRlcywgc1JHQkNvbG9yU3BhY2VSZWYoKSwga0NHQml0bWFwQnl0ZU9yZGVyMzJMaXR0bGUg
fCBrQ0dJbWFnZUFscGhhTm9uZVNraXBGaXJzdCk7Ci0gICAgcmV0dXJuIGJpdG1hcENvbnRleHQ7
CisgICAgcmV0dXJuIGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlKGluZm8uYm1CaXRzLCBp
bmZvLmJtV2lkdGgsIGluZm8uYm1IZWlnaHQsIDgsIGluZm8uYm1XaWR0aEJ5dGVzLCBzUkdCQ29s
b3JTcGFjZVJlZigpLCBrQ0dCaXRtYXBCeXRlT3JkZXIzMkxpdHRsZSB8IGtDR0ltYWdlQWxwaGFO
b25lU2tpcEZpcnN0KSk7CiB9CiAKIERyYWdJbWFnZVJlZiBzY2FsZURyYWdJbWFnZShEcmFnSW1h
Z2VSZWYgaW1hZ2VSZWYsIEZsb2F0U2l6ZSBzY2FsZSkKQEAgLTEwMSwxNSArOTksMTMgQEAgRHJh
Z0ltYWdlUmVmIHNjYWxlRHJhZ0ltYWdlKERyYWdJbWFnZVJlZiBpbWFnZVJlZiwgRmxvYXRTaXpl
IHNjYWxlKQogICAgIGlmICghaGJtcCkKICAgICAgICAgZ290byBleGl0OwogCi0gICAgQ0dDb250
ZXh0UmVmIHNyY0NvbnRleHQgPSBjcmVhdGVDZ0NvbnRleHRGcm9tQml0bWFwKGltYWdlLmdldCgp
KTsKLSAgICBDR0ltYWdlUmVmIHNyY0ltYWdlID0gQ0dCaXRtYXBDb250ZXh0Q3JlYXRlSW1hZ2Uo
c3JjQ29udGV4dCk7CisgICAgYXV0byBzcmNDb250ZXh0ID0gY3JlYXRlQ2dDb250ZXh0RnJvbUJp
dG1hcChpbWFnZS5nZXQoKSk7CisgICAgYXV0byBzcmNJbWFnZSA9IGFkb3B0Q0YoQ0dCaXRtYXBD
b250ZXh0Q3JlYXRlSW1hZ2Uoc3JjQ29udGV4dCkpOwogICAgIENHUmVjdCByZWN0OwogICAgIHJl
Y3Qub3JpZ2luLnggPSAwOwogICAgIHJlY3Qub3JpZ2luLnkgPSAwOwogICAgIHJlY3Quc2l6ZSA9
IGRzdFNpemU7Ci0gICAgQ0dDb250ZXh0RHJhd0ltYWdlKHRhcmdldENvbnRleHQsIHJlY3QsIHNy
Y0ltYWdlKTsKLSAgICBDR0ltYWdlUmVsZWFzZShzcmNJbWFnZSk7Ci0gICAgQ0dDb250ZXh0UmVs
ZWFzZShzcmNDb250ZXh0KTsKKyAgICBDR0NvbnRleHREcmF3SW1hZ2UodGFyZ2V0Q29udGV4dCwg
cmVjdCwgc3JjSW1hZ2UuZ2V0KCkpOwogICAgIENHQ29udGV4dFJlbGVhc2UodGFyZ2V0Q29udGV4
dCk7CiAKIGV4aXQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vV2Vi
Q29yZUJ1bmRsZVdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vV2ViQ29yZUJ1
bmRsZVdpbi5jcHAKaW5kZXggM2I3YzhlMWEyMGE0NTFhZDdjYjM4NDhlYjYxNjIyZTk3ZmQwMjRj
Ny4uOTU2M2RmM2UyZWQ3NjAwNDA2NzM1ODAzNmJiZTc3YWE1MTJmMmQzOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1dlYkNvcmVCdW5kbGVXaW4uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9XZWJDb3JlQnVuZGxlV2luLmNwcApAQCAtMzUsMTIg
KzM1LDEwIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIENGQnVuZGxlUmVmIGNy
ZWF0ZVdlYktpdEJ1bmRsZSgpCitzdGF0aWMgUmV0YWluUHRyPENGQnVuZGxlUmVmPiBjcmVhdGVX
ZWJLaXRCdW5kbGUoKQogewotICAgIGlmIChDRkJ1bmRsZVJlZiBleGlzdGluZ0J1bmRsZSA9IENG
QnVuZGxlR2V0QnVuZGxlV2l0aElkZW50aWZpZXIoQ0ZTVFIoImNvbS5hcHBsZS5XZWJLaXQiKSkp
IHsKLSAgICAgICAgQ0ZSZXRhaW4oZXhpc3RpbmdCdW5kbGUpOworICAgIGlmIChDRkJ1bmRsZVJl
ZiBleGlzdGluZ0J1bmRsZSA9IENGQnVuZGxlR2V0QnVuZGxlV2l0aElkZW50aWZpZXIoQ0ZTVFIo
ImNvbS5hcHBsZS5XZWJLaXQiKSkpCiAgICAgICAgIHJldHVybiBleGlzdGluZ0J1bmRsZTsKLSAg
ICB9CiAKICAgICB3Y2hhcl90IGRsbFBhdGhCdWZmZXJbTUFYX1BBVEhdOwogICAgIERXT1JEIGxl
bmd0aCA9IDo6R2V0TW9kdWxlRmlsZU5hbWVXKFdlYkNvcmU6Omluc3RhbmNlSGFuZGxlKCksIGRs
bFBhdGhCdWZmZXIsIFdURl9BUlJBWV9MRU5HVEgoZGxsUGF0aEJ1ZmZlcikpOwpAQCAtNTIsMTQg
KzUwLDE0IEBAIHN0YXRpYyBDRkJ1bmRsZVJlZiBjcmVhdGVXZWJLaXRCdW5kbGUoKQogICAgIFJl
dGFpblB0cjxDRlVSTFJlZj4gZGxsRGlyZWN0b3J5VVJMID0gYWRvcHRDRihDRlVSTENyZWF0ZUNv
cHlEZWxldGluZ0xhc3RQYXRoQ29tcG9uZW50KDAsIGRsbFVSTC5nZXQoKSkpOwogICAgIFJldGFp
blB0cjxDRlVSTFJlZj4gcmVzb3VyY2VzRGlyZWN0b3J5VVJMID0gYWRvcHRDRihDRlVSTENyZWF0
ZUNvcHlBcHBlbmRpbmdQYXRoQ29tcG9uZW50KDAsIGRsbERpcmVjdG9yeVVSTC5nZXQoKSwgQ0ZT
VFIoIldlYktpdC5yZXNvdXJjZXMiKSwgdHJ1ZSkpOwogCi0gICAgcmV0dXJuIENGQnVuZGxlQ3Jl
YXRlKDAsIHJlc291cmNlc0RpcmVjdG9yeVVSTC5nZXQoKSk7CisgICAgcmV0dXJuIGFkb3B0Q0Yo
Q0ZCdW5kbGVDcmVhdGUoMCwgcmVzb3VyY2VzRGlyZWN0b3J5VVJMLmdldCgpKSk7CiB9CiAKIENG
QnVuZGxlUmVmIHdlYktpdEJ1bmRsZSgpCiB7Ci0gICAgc3RhdGljIENGQnVuZGxlUmVmIGJ1bmRs
ZSA9IGNyZWF0ZVdlYktpdEJ1bmRsZSgpOwotICAgIEFTU0VSVChidW5kbGUpOwotICAgIHJldHVy
biBidW5kbGU7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxDRkJ1bmRsZVJl
Zj4+IGJ1bmRsZSA9IGNyZWF0ZVdlYktpdEJ1bmRsZSgpOworICAgIEFTU0VSVChidW5kbGUuZ2V0
KCkpOworICAgIHJldHVybiBidW5kbGUuZ2V0KCkuZ2V0KCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVt
ZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbQppbmRl
eCBhM2I3NDA2ZGE0OTEyNzFiMDE2ODkyMmI2NjJmZTIyYmFiMzc5YTI5Li40NjNlYmEwNmNkMjk5
MWZhZmYxN2EzNGMxZWQwOTdiMWQ3MWUxYmY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRoZW1lTWFjLm1tCkBAIC0xNTMsMTAgKzE1Myw5IEBAIC0gKENGRGljdGlvbmFyeVJl
ZilfYWRqdXN0ZWRDb3JlVUlEcmF3T3B0aW9uc0ZvckRyYXdpbmdCb3JkZXJzT25seTooQ0ZEaWN0
aW9uYXJ5CiAKICAgICAvLyBGSVhNRTogVGhpcyBpcyBhIHdvcmthcm91bmQgZm9yIDxyZGFyOi8v
cHJvYmxlbS8xMTM4NTQ2MT4uIFdoZW4gdGhhdCBidWcgaXMgcmVzb2x2ZWQsIHdlIHNob3VsZCBy
ZW1vdmUgdGhpcyBjb2RlLAogICAgIC8vIGFzIHdlbGwgYXMgdGhlIGludGVybmFsIG1ldGhvZCBv
dmVycmlkZXMgYmVsb3cuCi0gICAgQ0ZNdXRhYmxlRGljdGlvbmFyeVJlZiBjb3JlVUlEcmF3T3B0
aW9ucyA9IENGRGljdGlvbmFyeUNyZWF0ZU11dGFibGVDb3B5KE5VTEwsIDAsIGRlZmF1bHRPcHRp
b25zKTsKLSAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShjb3JlVUlEcmF3T3B0aW9ucywgQ0ZTVFIo
ImJvcmRlcnMgb25seSIpLCBrQ0ZCb29sZWFuVHJ1ZSk7Ci0gICAgQ0ZBdXRvcmVsZWFzZShjb3Jl
VUlEcmF3T3B0aW9ucyk7Ci0gICAgcmV0dXJuIGNvcmVVSURyYXdPcHRpb25zOworICAgIGF1dG8g
Y29yZVVJRHJhd09wdGlvbnMgPSBhZG9wdENGKENGRGljdGlvbmFyeUNyZWF0ZU11dGFibGVDb3B5
KE5VTEwsIDAsIGRlZmF1bHRPcHRpb25zKSk7CisgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUoY29y
ZVVJRHJhd09wdGlvbnMuZ2V0KCksIENGU1RSKCJib3JkZXJzIG9ubHkiKSwga0NGQm9vbGVhblRy
dWUpOworICAgIHJldHVybiBjb3JlVUlEcmF3T3B0aW9ucy5hdXRvcmVsZWFzZSgpOwogfQogCiAt
IChDRkRpY3Rpb25hcnlSZWYpX2NvcmVVSURyYXdPcHRpb25zV2l0aEZyYW1lOihOU1JlY3QpY2Vs
bEZyYW1lIGluVmlldzooTlNWaWV3ICopY29udHJvbFZpZXcgaW5jbHVkZUZvY3VzOihCT09MKWlu
Y2x1ZGVGb2N1cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9jb2NvYS9XZWJB
cmNoaXZlRHVtcFN1cHBvcnQuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvY29jb2EvV2ViQXJj
aGl2ZUR1bXBTdXBwb3J0LmgKaW5kZXggMmQwM2VmM2YyOTg2ZDhiMjcxYWI3MzcwODMzOTYxZWE3
NDZhODE5ZS4uMjA5YTcxMTg1N2ViZDc3NjZhMTk5MTg2MjkwYjY0MWMwN2MxNWEyYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9jb2NvYS9XZWJBcmNoaXZlRHVtcFN1cHBvcnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL2NvY29hL1dlYkFyY2hpdmVEdW1wU3VwcG9y
dC5oCkBAIC0yNiw5ICsyNiwxMCBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlIDxDb3JlRm91
bmRhdGlvbi9Db3JlRm91bmRhdGlvbi5oPgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmVUZXN0U3VwcG9ydCB7CiAKLUNGU3RyaW5nUmVmIGNyZWF0ZVhNTFN0
cmluZ0Zyb21XZWJBcmNoaXZlRGF0YShDRkRhdGFSZWYgd2ViQXJjaGl2ZURhdGEpIFdURl9FWFBP
UlRfUFJJVkFURTsKK1JldGFpblB0cjxDRlN0cmluZ1JlZj4gY3JlYXRlWE1MU3RyaW5nRnJvbVdl
YkFyY2hpdmVEYXRhKENGRGF0YVJlZiB3ZWJBcmNoaXZlRGF0YSkgV1RGX0VYUE9SVF9QUklWQVRF
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlVGVzdFN1cHBvcnQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvY29jb2EvV2ViQXJjaGl2ZUR1bXBTdXBwb3J0Lm1tIGIvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9jb2NvYS9XZWJBcmNoaXZlRHVtcFN1cHBvcnQubW0KaW5kZXggNWU3
ZDhlMTZhOThmYjcwMWY0N2M1ZTQ5N2ZiYTkxMjNkZWI3OWRjMS4uYmU2NjA3OGE4M2QwY2E0OWI3
MWExZmI1M2MyM2E4YzZiODFkNzY3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9jb2NvYS9XZWJBcmNoaXZlRHVtcFN1cHBvcnQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9jb2NvYS9XZWJBcmNoaXZlRHVtcFN1cHBvcnQubW0KQEAgLTIwMCw3ICsyMDAsNyBAQCBz
dGF0aWMgQ0ZDb21wYXJpc29uUmVzdWx0IGNvbXBhcmVSZXNvdXJjZVVSTHMoY29uc3Qgdm9pZCAq
dmFsMSwgY29uc3Qgdm9pZCAqdmFsMgogICAgIHJldHVybiBDRlN0cmluZ0NvbXBhcmUodXJsMSwg
dXJsMiwga0NGQ29tcGFyZUFuY2hvcmVkKTsKIH0KIAotQ0ZTdHJpbmdSZWYgY3JlYXRlWE1MU3Ry
aW5nRnJvbVdlYkFyY2hpdmVEYXRhKENGRGF0YVJlZiB3ZWJBcmNoaXZlRGF0YSkKK1JldGFpblB0
cjxDRlN0cmluZ1JlZj4gY3JlYXRlWE1MU3RyaW5nRnJvbVdlYkFyY2hpdmVEYXRhKENGRGF0YVJl
ZiB3ZWJBcmNoaXZlRGF0YSkKIHsKICAgICBDRkVycm9yUmVmIGVycm9yID0gMDsKICAgICBDRlBy
b3BlcnR5TGlzdEZvcm1hdCBmb3JtYXQgPSBrQ0ZQcm9wZXJ0eUxpc3RCaW5hcnlGb3JtYXRfdjFf
MDsKQEAgLTIwOCw4ICsyMDgsOCBAQCBDRlN0cmluZ1JlZiBjcmVhdGVYTUxTdHJpbmdGcm9tV2Vi
QXJjaGl2ZURhdGEoQ0ZEYXRhUmVmIHdlYkFyY2hpdmVEYXRhKQogCiAgICAgaWYgKCFwcm9wZXJ0
eUxpc3QpIHsKICAgICAgICAgaWYgKGVycm9yKQotICAgICAgICAgICAgcmV0dXJuIENGRXJyb3JD
b3B5RGVzY3JpcHRpb24oZXJyb3IpOwotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q0ZTdHJp
bmdSZWY+KENGUmV0YWluKENGU1RSKCJBbiB1bmtub3duIGVycm9yIG9jY3VycmVkIGNvbnZlcnRp
bmcgZGF0YSB0byBwcm9wZXJ0eSBsaXN0LiIpKSk7CisgICAgICAgICAgICByZXR1cm4gYWRvcHRD
RihDRkVycm9yQ29weURlc2NyaXB0aW9uKGVycm9yKSk7CisgICAgICAgIHJldHVybiBDRlNUUigi
QW4gdW5rbm93biBlcnJvciBvY2N1cnJlZCBjb252ZXJ0aW5nIGRhdGEgdG8gcHJvcGVydHkgbGlz
dC4iKTsKICAgICB9CiAKICAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlQXJyYXlSZWY+IHJlc291cmNl
cyA9IGFkb3B0Q0YoQ0ZBcnJheUNyZWF0ZU11dGFibGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgMCwg
JmtDRlR5cGVBcnJheUNhbGxCYWNrcykpOwpAQCAtMjUwLDggKzI1MCw4IEBAIENGU3RyaW5nUmVm
IGNyZWF0ZVhNTFN0cmluZ0Zyb21XZWJBcmNoaXZlRGF0YShDRkRhdGFSZWYgd2ViQXJjaGl2ZURh
dGEpCiAKICAgICBpZiAoIXhtbERhdGEpIHsKICAgICAgICAgaWYgKGVycm9yKQotICAgICAgICAg
ICAgcmV0dXJuIENGRXJyb3JDb3B5RGVzY3JpcHRpb24oZXJyb3IpOwotICAgICAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8Q0ZTdHJpbmdSZWY+KENGUmV0YWluKENGU1RSKCJBbiB1bmtub3duIGVycm9y
IG9jY3VycmVkIGNvbnZlcnRpbmcgcHJvcGVydHkgbGlzdCB0byBkYXRhLiIpKSk7CisgICAgICAg
ICAgICByZXR1cm4gYWRvcHRDRihDRkVycm9yQ29weURlc2NyaXB0aW9uKGVycm9yKSk7CisgICAg
ICAgIHJldHVybiBDRlNUUigiQW4gdW5rbm93biBlcnJvciBvY2N1cnJlZCBjb252ZXJ0aW5nIHBy
b3BlcnR5IGxpc3QgdG8gZGF0YS4iKTsKICAgICB9CiAKICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdS
ZWY+IHhtbFN0cmluZyA9IGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVGcm9tRXh0ZXJuYWxSZXByZXNl
bnRhdGlvbihrQ0ZBbGxvY2F0b3JEZWZhdWx0LCB4bWxEYXRhLmdldCgpLCBrQ0ZTdHJpbmdFbmNv
ZGluZ1VURjgpKTsKQEAgLTI2Niw3ICsyNjYsNyBAQCBDRlN0cmluZ1JlZiBjcmVhdGVYTUxTdHJp
bmdGcm9tV2ViQXJjaGl2ZURhdGEoQ0ZEYXRhUmVmIHdlYkFyY2hpdmVEYXRhKQogICAgIHF1aWNr
TG9va1VSTFJlcGxhY2VtZW50cygpLmNsZWFyKCk7CiAjZW5kaWYKIAotICAgIHJldHVybiBzdHJp
bmcubGVha1JlZigpOworICAgIHJldHVybiBzdHJpbmc7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmVUZXN0U3VwcG9ydApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9jb2Nv
YS9XZWJWaWV3VmlzdWFsSWRlbnRpZmljYXRpb25PdmVybGF5Lm1tIGIvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9jb2NvYS9XZWJWaWV3VmlzdWFsSWRlbnRpZmljYXRpb25PdmVybGF5Lm1tCmluZGV4
IDFmN2E2MmFhM2ZjZjQ3Y2MyMzEwOWIzZmJiMzkzZWFiYjgzMzNmNDIuLjlkYTg4MzBiYTJiOGUw
N2M1ZjY3ZjBlMzQ2ZGJiZTkxYjljZWUzN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvY29jb2EvV2ViVmlld1Zpc3VhbElkZW50aWZpY2F0aW9uT3ZlcmxheS5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL2NvY29hL1dlYlZpZXdWaXN1YWxJZGVudGlmaWNhdGlvbk92
ZXJsYXkubW0KQEAgLTEyNCw3ICsxMjQsNyBAQCAtICh2b2lkKW9ic2VydmVWYWx1ZUZvcktleVBh
dGg6KE5TU3RyaW5nICopa2V5UGF0aCBvZk9iamVjdDooaWQpb2JqZWN0IGNoYW5nZTooTgogc3Rh
dGljIENURm9udFJlZiBpZGVudGlmaWNhdGlvbkZvbnQoKQogewogICAgIGF1dG8gbWF0cml4ID0g
Q0dBZmZpbmVUcmFuc2Zvcm1JZGVudGl0eTsKLSAgICByZXR1cm4gKENURm9udFJlZilDRkF1dG9y
ZWxlYXNlKENURm9udENyZWF0ZVdpdGhOYW1lKENGU1RSKCJIZWx2ZXRpY2EiKSwgMjAsICZtYXRy
aXgpKTsKKyAgICByZXR1cm4gYWRvcHRDRihDVEZvbnRDcmVhdGVXaXRoTmFtZShDRlNUUigiSGVs
dmV0aWNhIiksIDIwLCAmbWF0cml4KSkuYXV0b3JlbGVhc2UoKTsKIH0KIAogY29uc3RleHByIENH
RmxvYXQgaG9yaXpvbnRhbE1hcmdpbiA9IDE1OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9tYWMvU3RyaW5nVXRpbGl0aWVzLm1tIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9t
YWMvU3RyaW5nVXRpbGl0aWVzLm1tCmluZGV4IDY4NGZkODg3OTc2NTNmNDhjYjM2YzQ1ZGIyMDgx
N2Y0YzJhZTg0M2IuLjZlMmVlNmUzYjMwYjZmZDRjZjkwNDJiNDliZGJlNWRmNzJjMTA3MWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vbWFjL1N0cmluZ1V0aWxpdGllcy5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL21hYy9TdHJpbmdVdGlsaXRpZXMubW0KQEAgLTM2
LDcgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIE5TU3RyaW5nICpuc1N0cmluZ0Zyb21X
ZWJDb3JlU3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogewotICAgIHJldHVybiBzdHJpbmcu
aXNFbXB0eSgpID8gQCIiIDogQ0ZCcmlkZ2luZ1JlbGVhc2UoV0tTdHJpbmdDb3B5Q0ZTdHJpbmco
MCwgdG9BUEkoc3RyaW5nLmltcGwoKSkpKTsKKyAgICByZXR1cm4gc3RyaW5nLmlzRW1wdHkoKSA/
IEAiIiA6IGFkb3B0Q0YoV0tTdHJpbmdDb3B5Q0ZTdHJpbmcoMCwgdG9BUEkoc3RyaW5nLmltcGwo
KSkpKS5icmlkZ2luZ0F1dG9yZWxlYXNlKCk7CiB9CiAKICNpZiBFTkFCTEUoVEVMRVBIT05FX05V
TUJFUl9ERVRFQ1RJT04pICYmIFBMQVRGT1JNKE1BQykKQEAgLTY1LDExICs2NSwxMSBAQCBOU1N0
cmluZyAqZm9ybWF0dGVkUGhvbmVOdW1iZXJTdHJpbmcoTlNTdHJpbmcgKm9yaWdpbmFsUGhvbmVO
dW1iZXIpCiAgICAgaWYgKCFwaG9uZU51bWJlcikKICAgICAgICAgcmV0dXJuIG9yaWdpbmFsUGhv
bmVOdW1iZXI7CiAKLSAgICBDRlN0cmluZ1JlZiBwaG9uZU51bWJlclN0cmluZyA9IENGUGhvbmVO
dW1iZXJDb3B5Rm9ybWF0dGVkUmVwcmVzZW50YXRpb24ocGhvbmVOdW1iZXIuZ2V0KCkpOworICAg
IGF1dG8gcGhvbmVOdW1iZXJTdHJpbmcgPSBhZG9wdENGKENGUGhvbmVOdW1iZXJDb3B5Rm9ybWF0
dGVkUmVwcmVzZW50YXRpb24ocGhvbmVOdW1iZXIuZ2V0KCkpKTsKICAgICBpZiAoIXBob25lTnVt
YmVyU3RyaW5nKQotICAgICAgICBwaG9uZU51bWJlclN0cmluZyA9IENGUGhvbmVOdW1iZXJDb3B5
VW5mb3JtYXR0ZWRSZXByZXNlbnRhdGlvbihwaG9uZU51bWJlci5nZXQoKSk7CisgICAgICAgIHBo
b25lTnVtYmVyU3RyaW5nID0gYWRvcHRDRihDRlBob25lTnVtYmVyQ29weVVuZm9ybWF0dGVkUmVw
cmVzZW50YXRpb24ocGhvbmVOdW1iZXIuZ2V0KCkpKTsKIAotICAgIHJldHVybiBDRkJyaWRnaW5n
UmVsZWFzZShwaG9uZU51bWJlclN0cmluZyk7CisgICAgcmV0dXJuIHBob25lTnVtYmVyU3RyaW5n
LmJyaWRnaW5nQXV0b3JlbGVhc2UoKTsKIH0KIAogI2Vsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvUGx1Z2luUHJvY2Vzcy9tYWMvUGx1Z2luUHJvY2Vzc01hYy5tbSBiL1NvdXJjZS9XZWJL
aXQvUGx1Z2luUHJvY2Vzcy9tYWMvUGx1Z2luUHJvY2Vzc01hYy5tbQppbmRleCAzMWU5Y2Y5MmYw
MmVlMGNjZjEwN2FmZmU1NmMwNTM0OGZiYzVjNGYwLi5jZmE2NmE0ZTJmMjYxMzdiM2M5ZjcyNTdm
NjU5M2Y0OGYxNDFhNDk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3Mv
bWFjL1BsdWdpblByb2Nlc3NNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNz
L21hYy9QbHVnaW5Qcm9jZXNzTWFjLm1tCkBAIC0zMTEsMjAgKzMxMSwyMCBAQCBzdGF0aWMgdm9p
ZCBpbml0aWFsaXplQ29jb2FPdmVycmlkZXMoKQogCiAgICAgTlNOb3RpZmljYXRpb25DZW50ZXIg
KmRlZmF1bHRDZW50ZXIgPSBbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl07CiAK
KyAgICAvLyBXZSBsZWFrIHRoZSB0d28gb2JzZXJ2ZXJzIHNvIHRoYXQgdGhleSBvYnNlcnZlIG5v
dGlmaWNhdGlvbnMgZm9yIHRoZSBsaWZldGltZSBvZiB0aGUgcHJvY2Vzcy4KICAgICAvLyBUcmFj
ayB3aGVuIGFueSBDb2NvYSB3aW5kb3cgaXMgYWJvdXQgdG8gYmUgYmUgc2hvd24uCi0gICAgaWQg
b3JkZXJPblNjcmVlbk9ic2VydmVyID0gW2RlZmF1bHRDZW50ZXIgYWRkT2JzZXJ2ZXJGb3JOYW1l
Ok5TV2luZG93V2lsbE9yZGVyT25TY3JlZW5Ob3RpZmljYXRpb24KLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYmplY3Q6bmlsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1
ZXVlOm5pbAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB1c2luZ0Jsb2NrOl4oTlNOb3RpZmljYXRpb24gKm5vdGlmaWNhdGlvbikgeyBm
dWxsc2NyZWVuV2luZG93VHJhY2tlcigpLndpbmRvd1Nob3duKFtub3RpZmljYXRpb24gb2JqZWN0
XSk7IH1dOworICAgIGlkIG9yZGVyT25TY3JlZW5PYnNlcnZlciA9IHJldGFpblB0cihbZGVmYXVs
dENlbnRlciBhZGRPYnNlcnZlckZvck5hbWU6TlNXaW5kb3dXaWxsT3JkZXJPblNjcmVlbk5vdGlm
aWNhdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBvYmplY3Q6bmlsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxdWV1ZTpuaWwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB1c2luZ0Jsb2NrOl4oTlNOb3RpZmljYXRpb24gKm5vdGlmaWNhdGlvbikgeyBmdWxsc2Ny
ZWVuV2luZG93VHJhY2tlcigpLndpbmRvd1Nob3duKFtub3RpZmljYXRpb24gb2JqZWN0XSk7IH1d
KS5sZWFrUmVmKCk7CisgICAgVU5VU0VEX1BBUkFNKG9yZGVyT25TY3JlZW5PYnNlcnZlcik7CiAg
ICAgLy8gVHJhY2sgd2hlbiBhbnkgQ29jb2Egd2luZG93IGlzIGFib3V0IHRvIGJlIGhpZGRlbi4K
LSAgICBpZCBvcmRlck9mZlNjcmVlbk9ic2VydmVyID0gW2RlZmF1bHRDZW50ZXIgYWRkT2JzZXJ2
ZXJGb3JOYW1lOk5TV2luZG93V2lsbE9yZGVyT2ZmU2NyZWVuTm90aWZpY2F0aW9uCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9iamVj
dDpuaWwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHF1ZXVlOm5pbAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHVzaW5nQmxvY2s6XihOU05vdGlmaWNhdGlvbiAqbm90aWZpY2F0
aW9uKSB7IGZ1bGxzY3JlZW5XaW5kb3dUcmFja2VyKCkud2luZG93SGlkZGVuKFtub3RpZmljYXRp
b24gb2JqZWN0XSk7IH1dOwotCi0gICAgLy8gTGVhayB0aGUgdHdvIG9ic2VydmVycyBzbyB0aGF0
IHRoZXkgb2JzZXJ2ZSBub3RpZmljYXRpb25zIGZvciB0aGUgbGlmZXRpbWUgb2YgdGhlIHByb2Nl
c3MuCi0gICAgQ0ZSZXRhaW4oKF9fYnJpZGdlIENGVHlwZVJlZilvcmRlck9uU2NyZWVuT2JzZXJ2
ZXIpOwotICAgIENGUmV0YWluKChfX2JyaWRnZSBDRlR5cGVSZWYpb3JkZXJPZmZTY3JlZW5PYnNl
cnZlcik7CisgICAgaWQgb3JkZXJPZmZTY3JlZW5PYnNlcnZlciA9IHJldGFpblB0cihbZGVmYXVs
dENlbnRlciBhZGRPYnNlcnZlckZvck5hbWU6TlNXaW5kb3dXaWxsT3JkZXJPZmZTY3JlZW5Ob3Rp
ZmljYXRpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG9iamVjdDpuaWwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxdWV1ZTpuaWwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdXNpbmdCbG9jazpeKE5TTm90aWZpY2F0aW9uICpub3RpZmljYXRpb24pIHsgZnVs
bHNjcmVlbldpbmRvd1RyYWNrZXIoKS53aW5kb3dIaWRkZW4oW25vdGlmaWNhdGlvbiBvYmplY3Rd
KTsgfV0pLmxlYWtSZWYoKTsKKyAgICBVTlVTRURfUEFSQU0ob3JkZXJPZmZTY3JlZW5PYnNlcnZl
cik7CisKIH0KIAogdm9pZCBQbHVnaW5Qcm9jZXNzOjpzZXRNb2RhbFdpbmRvd0lzU2hvd2luZyhi
b29sIG1vZGFsV2luZG93SXNTaG93aW5nKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvbWFjL1Bhc3RlYm9hcmRUeXBlcy5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9QYXN0
ZWJvYXJkVHlwZXMubW0KaW5kZXggNTNmOThjMTM3NGY5NGQ1N2IyNmU0NmE2ZGIyNmI4YWQyNGU3
OTc1ZS4uZWQ0YzdiOWI4ODE5NmYyYTlhYTBjYTYyMzg0ODEwNGM4OTg4MzEzNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL1Bhc3RlYm9hcmRUeXBlcy5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9tYWMvUGFzdGVib2FyZFR5cGVzLm1tCkBAIC0zNyw0NiArMzcsNDAg
QEAgTlNTdHJpbmcgKiBjb25zdCBQYXN0ZWJvYXJkVHlwZXM6OldlYlVSTHNXaXRoVGl0bGVzUGJv
YXJkVHlwZSA9IEAiV2ViVVJMc1dpdGhUaXQKIE5TU3RyaW5nICogY29uc3QgUGFzdGVib2FyZFR5
cGVzOjpXZWJVUkxQYm9hcmRUeXBlID0gQCJwdWJsaWMudXJsIjsKIE5TU3RyaW5nICogY29uc3Qg
UGFzdGVib2FyZFR5cGVzOjpXZWJVUkxOYW1lUGJvYXJkVHlwZSA9IEAicHVibGljLnVybC1uYW1l
IjsKIE5TU3RyaW5nICogY29uc3QgUGFzdGVib2FyZFR5cGVzOjpXZWJEdW1teVBib2FyZFR5cGUg
PSBAIkFwcGxlIFdlYktpdCBkdW1teSBwYXN0ZWJvYXJkIHR5cGUiOwotCi1zdGF0aWMgaW5saW5l
IE5TQXJyYXkgKnJldGFpbihOU0FycmF5ICphcnJheSkKLXsKLSAgICBDRlJldGFpbihhcnJheSk7
Ci0gICAgcmV0dXJuIGFycmF5OwotfQogICAgIAogTlNBcnJheSogUGFzdGVib2FyZFR5cGVzOjpm
b3JFZGl0aW5nKCkKIHsKIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOIAotICAg
IHN0YXRpYyBOU0FycmF5ICp0eXBlcyA9IHJldGFpbihAW1dlYkFyY2hpdmVQYm9hcmRUeXBlLCAo
X19icmlkZ2UgTlNTdHJpbmcgKilrVVRUeXBlV2ViQXJjaGl2ZSwgV2ViQ29yZTo6bGVnYWN5SFRN
TFBhc3RlYm9hcmRUeXBlKCksIFdlYkNvcmU6OmxlZ2FjeUZpbGVuYW1lc1Bhc3RlYm9hcmRUeXBl
KCksIFdlYkNvcmU6OmxlZ2FjeVRJRkZQYXN0ZWJvYXJkVHlwZSgpLCBXZWJDb3JlOjpsZWdhY3lQ
REZQYXN0ZWJvYXJkVHlwZSgpLAotICAgICAgICBXZWJDb3JlOjpsZWdhY3lVUkxQYXN0ZWJvYXJk
VHlwZSgpLCBXZWJDb3JlOjpsZWdhY3lSVEZEUGFzdGVib2FyZFR5cGUoKSwgV2ViQ29yZTo6bGVn
YWN5UlRGUGFzdGVib2FyZFR5cGUoKSwgV2ViQ29yZTo6bGVnYWN5U3RyaW5nUGFzdGVib2FyZFR5
cGUoKSwgV2ViQ29yZTo6bGVnYWN5Q29sb3JQYXN0ZWJvYXJkVHlwZSgpLCAoX19icmlkZ2UgTlNT
dHJpbmcgKilrVVRUeXBlUE5HXSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0
cjxOU0FycmF5Pj4gdHlwZXMgPSBAW1dlYkFyY2hpdmVQYm9hcmRUeXBlLCAoX19icmlkZ2UgTlNT
dHJpbmcgKilrVVRUeXBlV2ViQXJjaGl2ZSwgV2ViQ29yZTo6bGVnYWN5SFRNTFBhc3RlYm9hcmRU
eXBlKCksIFdlYkNvcmU6OmxlZ2FjeUZpbGVuYW1lc1Bhc3RlYm9hcmRUeXBlKCksIFdlYkNvcmU6
OmxlZ2FjeVRJRkZQYXN0ZWJvYXJkVHlwZSgpLCBXZWJDb3JlOjpsZWdhY3lQREZQYXN0ZWJvYXJk
VHlwZSgpLAorICAgICAgICBXZWJDb3JlOjpsZWdhY3lVUkxQYXN0ZWJvYXJkVHlwZSgpLCBXZWJD
b3JlOjpsZWdhY3lSVEZEUGFzdGVib2FyZFR5cGUoKSwgV2ViQ29yZTo6bGVnYWN5UlRGUGFzdGVi
b2FyZFR5cGUoKSwgV2ViQ29yZTo6bGVnYWN5U3RyaW5nUGFzdGVib2FyZFR5cGUoKSwgV2ViQ29y
ZTo6bGVnYWN5Q29sb3JQYXN0ZWJvYXJkVHlwZSgpLCAoX19icmlkZ2UgTlNTdHJpbmcgKilrVVRU
eXBlUE5HXTsKIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAotICAgIHJldHVybiB0
eXBlczsKKyAgICByZXR1cm4gdHlwZXMuZ2V0KCkuZ2V0KCk7CiB9CiAKIE5TQXJyYXkqIFBhc3Rl
Ym9hcmRUeXBlczo6Zm9yVVJMKCkKIHsKLSAgICBzdGF0aWMgTlNBcnJheSAqdHlwZXMgPSByZXRh
aW4oQFtXZWJVUkxzV2l0aFRpdGxlc1Bib2FyZFR5cGUsIFdlYkNvcmU6OmxlZ2FjeVVSTFBhc3Rl
Ym9hcmRUeXBlKCksIFdlYlVSTFBib2FyZFR5cGUsICBXZWJVUkxOYW1lUGJvYXJkVHlwZSwgV2Vi
Q29yZTo6bGVnYWN5U3RyaW5nUGFzdGVib2FyZFR5cGUoKSwgV2ViQ29yZTo6bGVnYWN5RmlsZW5h
bWVzUGFzdGVib2FyZFR5cGUoKSwgV2ViQ29yZTo6bGVnYWN5RmlsZXNQcm9taXNlUGFzdGVib2Fy
ZFR5cGUoKV0pOwotICAgIHJldHVybiB0eXBlczsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
UmV0YWluUHRyPE5TQXJyYXk+PiB0eXBlcyA9IEBbV2ViVVJMc1dpdGhUaXRsZXNQYm9hcmRUeXBl
LCBXZWJDb3JlOjpsZWdhY3lVUkxQYXN0ZWJvYXJkVHlwZSgpLCBXZWJVUkxQYm9hcmRUeXBlLCAg
V2ViVVJMTmFtZVBib2FyZFR5cGUsIFdlYkNvcmU6OmxlZ2FjeVN0cmluZ1Bhc3RlYm9hcmRUeXBl
KCksIFdlYkNvcmU6OmxlZ2FjeUZpbGVuYW1lc1Bhc3RlYm9hcmRUeXBlKCksIFdlYkNvcmU6Omxl
Z2FjeUZpbGVzUHJvbWlzZVBhc3RlYm9hcmRUeXBlKCldOworICAgIHJldHVybiB0eXBlcy5nZXQo
KS5nZXQoKTsKIH0KIAogTlNBcnJheSogUGFzdGVib2FyZFR5cGVzOjpmb3JJbWFnZXMoKQogewot
ICAgIHN0YXRpYyBOU0FycmF5ICp0eXBlcyA9IHJldGFpbihAW1dlYkNvcmU6OmxlZ2FjeVRJRkZQ
YXN0ZWJvYXJkVHlwZSgpLCBXZWJVUkxzV2l0aFRpdGxlc1Bib2FyZFR5cGUsIFdlYkNvcmU6Omxl
Z2FjeVVSTFBhc3RlYm9hcmRUeXBlKCksIFdlYlVSTFBib2FyZFR5cGUsIFdlYlVSTE5hbWVQYm9h
cmRUeXBlLCBXZWJDb3JlOjpsZWdhY3lTdHJpbmdQYXN0ZWJvYXJkVHlwZSgpXSk7Ci0gICAgcmV0
dXJuIHR5cGVzOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8TlNBcnJheT4+
IHR5cGVzID0gQFtXZWJDb3JlOjpsZWdhY3lUSUZGUGFzdGVib2FyZFR5cGUoKSwgV2ViVVJMc1dp
dGhUaXRsZXNQYm9hcmRUeXBlLCBXZWJDb3JlOjpsZWdhY3lVUkxQYXN0ZWJvYXJkVHlwZSgpLCBX
ZWJVUkxQYm9hcmRUeXBlLCBXZWJVUkxOYW1lUGJvYXJkVHlwZSwgV2ViQ29yZTo6bGVnYWN5U3Ry
aW5nUGFzdGVib2FyZFR5cGUoKV07CisgICAgcmV0dXJuIHR5cGVzLmdldCgpLmdldCgpOwogfQog
CiBOU0FycmF5KiBQYXN0ZWJvYXJkVHlwZXM6OmZvckltYWdlc1dpdGhBcmNoaXZlKCkKIHsKLSAg
ICBzdGF0aWMgTlNBcnJheSAqdHlwZXMgPSByZXRhaW4oQFtXZWJDb3JlOjpsZWdhY3lUSUZGUGFz
dGVib2FyZFR5cGUoKSwgV2ViVVJMc1dpdGhUaXRsZXNQYm9hcmRUeXBlLCBXZWJDb3JlOjpsZWdh
Y3lVUkxQYXN0ZWJvYXJkVHlwZSgpLCBXZWJVUkxQYm9hcmRUeXBlLCBXZWJVUkxOYW1lUGJvYXJk
VHlwZSwgV2ViQ29yZTo6bGVnYWN5U3RyaW5nUGFzdGVib2FyZFR5cGUoKSwgV2ViQ29yZTo6bGVn
YWN5UlRGRFBhc3RlYm9hcmRUeXBlKCksIFdlYkFyY2hpdmVQYm9hcmRUeXBlXSk7Ci0gICAgcmV0
dXJuIHR5cGVzOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8TlNBcnJheT4+
IHR5cGVzID0gQFtXZWJDb3JlOjpsZWdhY3lUSUZGUGFzdGVib2FyZFR5cGUoKSwgV2ViVVJMc1dp
dGhUaXRsZXNQYm9hcmRUeXBlLCBXZWJDb3JlOjpsZWdhY3lVUkxQYXN0ZWJvYXJkVHlwZSgpLCBX
ZWJVUkxQYm9hcmRUeXBlLCBXZWJVUkxOYW1lUGJvYXJkVHlwZSwgV2ViQ29yZTo6bGVnYWN5U3Ry
aW5nUGFzdGVib2FyZFR5cGUoKSwgV2ViQ29yZTo6bGVnYWN5UlRGRFBhc3RlYm9hcmRUeXBlKCks
IFdlYkFyY2hpdmVQYm9hcmRUeXBlXTsKKyAgICByZXR1cm4gdHlwZXMuZ2V0KCkuZ2V0KCk7CiB9
CiAKIE5TQXJyYXkqIFBhc3RlYm9hcmRUeXBlczo6Zm9yU2VsZWN0aW9uKCkKIHsKIEFMTE9XX0RF
UFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOIAotICAgIHN0YXRpYyBOU0FycmF5ICp0eXBlcyA9
IHJldGFpbihAW1dlYkFyY2hpdmVQYm9hcmRUeXBlLCAoX19icmlkZ2UgTlNTdHJpbmcgKilrVVRU
eXBlV2ViQXJjaGl2ZSwgV2ViQ29yZTo6bGVnYWN5UlRGRFBhc3RlYm9hcmRUeXBlKCksIFdlYkNv
cmU6OmxlZ2FjeVJURlBhc3RlYm9hcmRUeXBlKCksIFdlYkNvcmU6OmxlZ2FjeVN0cmluZ1Bhc3Rl
Ym9hcmRUeXBlKCldKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPE5TQXJy
YXk+PiB0eXBlcyA9IEBbV2ViQXJjaGl2ZVBib2FyZFR5cGUsIChfX2JyaWRnZSBOU1N0cmluZyAq
KWtVVFR5cGVXZWJBcmNoaXZlLCBXZWJDb3JlOjpsZWdhY3lSVEZEUGFzdGVib2FyZFR5cGUoKSwg
V2ViQ29yZTo6bGVnYWN5UlRGUGFzdGVib2FyZFR5cGUoKSwgV2ViQ29yZTo6bGVnYWN5U3RyaW5n
UGFzdGVib2FyZFR5cGUoKV07CiBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKLSAg
ICByZXR1cm4gdHlwZXM7CisgICAgcmV0dXJuIHR5cGVzLmdldCgpLmdldCgpOwogfQogICAgIAog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9XZWJWaWV3SW1wbC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dl
YlZpZXdJbXBsLm1tCmluZGV4IGE1YzZiYmMwY2NmZTRmYjJlYjMwOTc3N2NlOGY3ZTdjYTZiYjM5
OWMuLmU2ZmI3ODEwZjk2NTc4ZWUyM2YxZjliYTIzMWFhMTQzNjk5OWQ4OTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCkBAIC0yMjU5LDggKzIyNTks
NyBAQCBib29sIFdlYlZpZXdJbXBsOjphY2NlcHRzRmlyc3RNb3VzZShOU0V2ZW50ICpldmVudCkK
ICAgICAvLyBUaGVyZSdzIGEgY2hhbmNlIHRoYXQgcmVzcG9uZGluZyB0byB0aGlzIGV2ZW50IHdp
bGwgcnVuIGEgbmVzdGVkIGV2ZW50IGxvb3AsIGFuZAogICAgIC8vIGZldGNoaW5nIGEgbmV3IGV2
ZW50IG1pZ2h0IHJlbGVhc2UgdGhlIG9sZCBvbmUuIFJldGFpbmluZyBhbmQgdGhlbiBhdXRvcmVs
ZWFzaW5nCiAgICAgLy8gdGhlIGN1cnJlbnQgZXZlbnQgcHJldmVudHMgdGhhdCBmcm9tIGNhdXNp
bmcgYSBwcm9ibGVtIGluc2lkZSBXZWJLaXQgb3IgQXBwS2l0IGNvZGUuCi0gICAgQ0ZSZXRhaW4o
KF9fYnJpZGdlIENGVHlwZVJlZilldmVudCk7Ci0gICAgQ0ZBdXRvcmVsZWFzZSgoX19icmlkZ2Ug
Q0ZUeXBlUmVmKWV2ZW50KTsKKyAgICByZXRhaW5QdHIoZXZlbnQpLmF1dG9yZWxlYXNlKCk7CiAK
ICAgICBpZiAoIVttX3ZpZXcgaGl0VGVzdDpldmVudC5sb2NhdGlvbkluV2luZG93XSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwpAQCAtMjI3OSw4ICsyMjc4LDcgQEAgYm9vbCBXZWJWaWV3SW1wbDo6
c2hvdWxkRGVsYXlXaW5kb3dPcmRlcmluZ0ZvckV2ZW50KE5TRXZlbnQgKmV2ZW50KQogICAgIC8v
IFRoZXJlJ3MgYSBjaGFuY2UgdGhhdCByZXNwb25kaW5nIHRvIHRoaXMgZXZlbnQgd2lsbCBydW4g
YSBuZXN0ZWQgZXZlbnQgbG9vcCwgYW5kCiAgICAgLy8gZmV0Y2hpbmcgYSBuZXcgZXZlbnQgbWln
aHQgcmVsZWFzZSB0aGUgb2xkIG9uZS4gUmV0YWluaW5nIGFuZCB0aGVuIGF1dG9yZWxlYXNpbmcK
ICAgICAvLyB0aGUgY3VycmVudCBldmVudCBwcmV2ZW50cyB0aGF0IGZyb20gY2F1c2luZyBhIHBy
b2JsZW0gaW5zaWRlIFdlYktpdCBvciBBcHBLaXQgY29kZS4KLSAgICBDRlJldGFpbigoX19icmlk
Z2UgQ0ZUeXBlUmVmKWV2ZW50KTsKLSAgICBDRkF1dG9yZWxlYXNlKChfX2JyaWRnZSBDRlR5cGVS
ZWYpZXZlbnQpOworICAgIHJldGFpblB0cihldmVudCkuYXV0b3JlbGVhc2UoKTsKIAogICAgIGlm
ICghW21fdmlldyBoaXRUZXN0OmV2ZW50LmxvY2F0aW9uSW5XaW5kb3ddKQogICAgICAgICByZXR1
cm4gZmFsc2U7CkBAIC00ODExLDI0ICs0ODA5LDIwIEBAIHZvaWQgV2ViVmlld0ltcGw6OmRvbmVX
aXRoS2V5RXZlbnQoTlNFdmVudCAqZXZlbnQsIGJvb2wgZXZlbnRXYXNIYW5kbGVkKQogCiBOU0Fy
cmF5ICpXZWJWaWV3SW1wbDo6dmFsaWRBdHRyaWJ1dGVzRm9yTWFya2VkVGV4dCgpCiB7Ci0gICAg
c3RhdGljIE5TQXJyYXkgKnZhbGlkQXR0cmlidXRlczsKLSAgICBpZiAoIXZhbGlkQXR0cmlidXRl
cykgewotICAgICAgICB2YWxpZEF0dHJpYnV0ZXMgPSBAWwotICAgICAgICAgICAgTlNVbmRlcmxp
bmVTdHlsZUF0dHJpYnV0ZU5hbWUsCi0gICAgICAgICAgICBOU1VuZGVybGluZUNvbG9yQXR0cmli
dXRlTmFtZSwKLSAgICAgICAgICAgIE5TTWFya2VkQ2xhdXNlU2VnbWVudEF0dHJpYnV0ZU5hbWUs
Ci0gICAgICAgICAgICBOU1RleHRBbHRlcm5hdGl2ZXNBdHRyaWJ1dGVOYW1lLAotICAgICAgICAg
ICAgTlNUZXh0SW5zZXJ0aW9uVW5kb2FibGVBdHRyaWJ1dGVOYW1lLAotICAgICAgICBdOwotICAg
ICAgICAvLyBOU1RleHQgYWxzbyBzdXBwb3J0cyB0aGUgZm9sbG93aW5nIGF0dHJpYnV0ZXMsIGJ1
dCBpdCdzCi0gICAgICAgIC8vIGhhcmQgdG8gdGVsbCB3aGljaCBhcmUgcmVhbGx5IHJlcXVpcmVk
IGZvciB0ZXh0IGlucHV0IHRvCi0gICAgICAgIC8vIHdvcmsgd2VsbDsgSSBoYXZlIG5vdCBzZWVu
IGFueSBpbnB1dCBtZXRob2QgbWFrZSB1c2Ugb2YgdGhlbSB5ZXQuCi0gICAgICAgIC8vICAgICBO
U0ZvbnRBdHRyaWJ1dGVOYW1lLCBOU0ZvcmVncm91bmRDb2xvckF0dHJpYnV0ZU5hbWUsCi0gICAg
ICAgIC8vICAgICBOU0JhY2tncm91bmRDb2xvckF0dHJpYnV0ZU5hbWUsIE5TTGFuZ3VhZ2VBdHRy
aWJ1dGVOYW1lLgotICAgICAgICBDRlJldGFpbih2YWxpZEF0dHJpYnV0ZXMpOwotICAgIH0KKyAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPE5TQXJyYXk+PiB2YWxpZEF0dHJpYnV0
ZXMgPSBAWworICAgICAgICBOU1VuZGVybGluZVN0eWxlQXR0cmlidXRlTmFtZSwKKyAgICAgICAg
TlNVbmRlcmxpbmVDb2xvckF0dHJpYnV0ZU5hbWUsCisgICAgICAgIE5TTWFya2VkQ2xhdXNlU2Vn
bWVudEF0dHJpYnV0ZU5hbWUsCisgICAgICAgIE5TVGV4dEFsdGVybmF0aXZlc0F0dHJpYnV0ZU5h
bWUsCisgICAgICAgIE5TVGV4dEluc2VydGlvblVuZG9hYmxlQXR0cmlidXRlTmFtZSwKKyAgICBd
OworICAgIC8vIE5TVGV4dCBhbHNvIHN1cHBvcnRzIHRoZSBmb2xsb3dpbmcgYXR0cmlidXRlcywg
YnV0IGl0J3MKKyAgICAvLyBoYXJkIHRvIHRlbGwgd2hpY2ggYXJlIHJlYWxseSByZXF1aXJlZCBm
b3IgdGV4dCBpbnB1dCB0bworICAgIC8vIHdvcmsgd2VsbDsgSSBoYXZlIG5vdCBzZWVuIGFueSBp
bnB1dCBtZXRob2QgbWFrZSB1c2Ugb2YgdGhlbSB5ZXQuCisgICAgLy8gICAgIE5TRm9udEF0dHJp
YnV0ZU5hbWUsIE5TRm9yZWdyb3VuZENvbG9yQXR0cmlidXRlTmFtZSwKKyAgICAvLyAgICAgTlNC
YWNrZ3JvdW5kQ29sb3JBdHRyaWJ1dGVOYW1lLCBOU0xhbmd1YWdlQXR0cmlidXRlTmFtZS4KICAg
ICBMT0coVGV4dElucHV0LCAidmFsaWRBdHRyaWJ1dGVzRm9yTWFya2VkVGV4dCAtPiAoLi4uKSIp
OwotICAgIHJldHVybiB2YWxpZEF0dHJpYnV0ZXM7CisgICAgcmV0dXJuIHZhbGlkQXR0cmlidXRl
cy5nZXQoKS5nZXQoKTsKIH0KIAogc3RhdGljIFZlY3RvcjxXZWJDb3JlOjpDb21wb3NpdGlvblVu
ZGVybGluZT4gZXh0cmFjdFVuZGVybGluZXMoTlNBdHRyaWJ1dGVkU3RyaW5nICpzdHJpbmcpCkBA
IC01MjAyLDggKzUxOTYsNyBAQCBib29sIFdlYlZpZXdJbXBsOjpwZXJmb3JtS2V5RXF1aXZhbGVu
dChOU0V2ZW50ICpldmVudCkKICAgICAvLyBUaGVyZSdzIGEgY2hhbmNlIHRoYXQgcmVzcG9uZGlu
ZyB0byB0aGlzIGV2ZW50IHdpbGwgcnVuIGEgbmVzdGVkIGV2ZW50IGxvb3AsIGFuZAogICAgIC8v
IGZldGNoaW5nIGEgbmV3IGV2ZW50IG1pZ2h0IHJlbGVhc2UgdGhlIG9sZCBvbmUuIFJldGFpbmlu
ZyBhbmQgdGhlbiBhdXRvcmVsZWFzaW5nCiAgICAgLy8gdGhlIGN1cnJlbnQgZXZlbnQgcHJldmVu
dHMgdGhhdCBmcm9tIGNhdXNpbmcgYSBwcm9ibGVtIGluc2lkZSBXZWJLaXQgb3IgQXBwS2l0IGNv
ZGUuCi0gICAgQ0ZSZXRhaW4oKF9fYnJpZGdlIENGVHlwZVJlZilldmVudCk7Ci0gICAgQ0ZBdXRv
cmVsZWFzZSgoX19icmlkZ2UgQ0ZUeXBlUmVmKWV2ZW50KTsKKyAgICByZXRhaW5QdHIoZXZlbnQp
LmF1dG9yZWxlYXNlKCk7CiAKICAgICAvLyBXZSBnZXQgRXNjIGtleSBoZXJlIGFmdGVyIHByb2Nl
c3NpbmcgZWl0aGVyIEVzYyBvciBDbWQrcGVyaW9kLiBUaGUgZm9ybWVyIHN0YXJ0cyBhcyBhIGtl
eURvd24sIGFuZCB0aGUgbGF0dGVyIHN0YXJ0cyBhcyBhIGtleSBlcXVpdmFsZW50LAogICAgIC8v
IGJ1dCBib3RoIGdldCB0cmFuc2Zvcm1lZCB0byBhIGNhbmNlbE9wZXJhdGlvbjogY29tbWFuZCwg
ZXhlY3V0aW5nIHdoaWNoIHBhc3NlcyBhbiBFc2Mga2V5IGV2ZW50IHRvIC1wZXJmb3JtS2V5RXF1
aXZhbGVudDouCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3Iv
aW9zL1dLSW5zcGVjdG9ySGlnaGxpZ2h0Vmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0luc3BlY3Rvci9pb3MvV0tJbnNwZWN0b3JIaWdobGlnaHRWaWV3Lm1tCmluZGV4IDQ0MTI0NDM3
YzI0MzQyNWMzZWRkYjk5Mzc2Y2Q2MjI0ZjJmYzE2YTMuLmIxYjBiZTM0YmYzMzBjMGVlNTU1ZWQ4
ZGM3NDFmYzY0MmIxMDlhZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0lu
c3BlY3Rvci9pb3MvV0tJbnNwZWN0b3JIaWdobGlnaHRWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0luc3BlY3Rvci9pb3MvV0tJbnNwZWN0b3JIaWdobGlnaHRWaWV3Lm1tCkBA
IC0xODMsMjggKzE4MywyNiBAQCBzdGF0aWMgdm9pZCBsYXllclBhdGhXaXRoSG9sZShDQVNoYXBl
TGF5ZXIgKmxheWVyLCBjb25zdCBXZWJDb3JlOjpGbG9hdFF1YWQmIG91dAogICAgICAgICBpbm5l
ckhvbGUgPSBxdWFkSW50ZXJzZWN0aW9uKG91dGVyUXVhZCwgaG9sZVF1YWQpOwogCiAgICAgLy8g
Q2xvY2t3aXNlIGluc2lkZSByZWN0IChob2xlKSwgQ291bnRlci1DbG9ja3dpc2Ugb3V0c2lkZSBy
ZWN0IChmaWxsKS4KLSAgICBDR011dGFibGVQYXRoUmVmIHBhdGggPSBDR1BhdGhDcmVhdGVNdXRh
YmxlKCk7Ci0gICAgQ0dQYXRoTW92ZVRvUG9pbnQocGF0aCwgMCwgaW5uZXJIb2xlLnAxKCkueCgp
LCBpbm5lckhvbGUucDEoKS55KCkpOwotICAgIENHUGF0aEFkZExpbmVUb1BvaW50KHBhdGgsIDAs
IGlubmVySG9sZS5wMigpLngoKSwgaW5uZXJIb2xlLnAyKCkueSgpKTsKLSAgICBDR1BhdGhBZGRM
aW5lVG9Qb2ludChwYXRoLCAwLCBpbm5lckhvbGUucDMoKS54KCksIGlubmVySG9sZS5wMygpLnko
KSk7Ci0gICAgQ0dQYXRoQWRkTGluZVRvUG9pbnQocGF0aCwgMCwgaW5uZXJIb2xlLnA0KCkueCgp
LCBpbm5lckhvbGUucDQoKS55KCkpOwotICAgIENHUGF0aE1vdmVUb1BvaW50KHBhdGgsIDAsIG91
dGVyUXVhZC5wMSgpLngoKSwgb3V0ZXJRdWFkLnAxKCkueSgpKTsKLSAgICBDR1BhdGhBZGRMaW5l
VG9Qb2ludChwYXRoLCAwLCBvdXRlclF1YWQucDQoKS54KCksIG91dGVyUXVhZC5wNCgpLnkoKSk7
Ci0gICAgQ0dQYXRoQWRkTGluZVRvUG9pbnQocGF0aCwgMCwgb3V0ZXJRdWFkLnAzKCkueCgpLCBv
dXRlclF1YWQucDMoKS55KCkpOwotICAgIENHUGF0aEFkZExpbmVUb1BvaW50KHBhdGgsIDAsIG91
dGVyUXVhZC5wMigpLngoKSwgb3V0ZXJRdWFkLnAyKCkueSgpKTsKLSAgICBsYXllci5wYXRoID0g
cGF0aDsKLSAgICBDR1BhdGhSZWxlYXNlKHBhdGgpOworICAgIGF1dG8gcGF0aCA9IGFkb3B0Q0Yo
Q0dQYXRoQ3JlYXRlTXV0YWJsZSgpKTsKKyAgICBDR1BhdGhNb3ZlVG9Qb2ludChwYXRoLmdldCgp
LCAwLCBpbm5lckhvbGUucDEoKS54KCksIGlubmVySG9sZS5wMSgpLnkoKSk7CisgICAgQ0dQYXRo
QWRkTGluZVRvUG9pbnQocGF0aC5nZXQoKSwgMCwgaW5uZXJIb2xlLnAyKCkueCgpLCBpbm5lckhv
bGUucDIoKS55KCkpOworICAgIENHUGF0aEFkZExpbmVUb1BvaW50KHBhdGguZ2V0KCksIDAsIGlu
bmVySG9sZS5wMygpLngoKSwgaW5uZXJIb2xlLnAzKCkueSgpKTsKKyAgICBDR1BhdGhBZGRMaW5l
VG9Qb2ludChwYXRoLmdldCgpLCAwLCBpbm5lckhvbGUucDQoKS54KCksIGlubmVySG9sZS5wNCgp
LnkoKSk7CisgICAgQ0dQYXRoTW92ZVRvUG9pbnQocGF0aC5nZXQoKSwgMCwgb3V0ZXJRdWFkLnAx
KCkueCgpLCBvdXRlclF1YWQucDEoKS55KCkpOworICAgIENHUGF0aEFkZExpbmVUb1BvaW50KHBh
dGguZ2V0KCksIDAsIG91dGVyUXVhZC5wNCgpLngoKSwgb3V0ZXJRdWFkLnA0KCkueSgpKTsKKyAg
ICBDR1BhdGhBZGRMaW5lVG9Qb2ludChwYXRoLmdldCgpLCAwLCBvdXRlclF1YWQucDMoKS54KCks
IG91dGVyUXVhZC5wMygpLnkoKSk7CisgICAgQ0dQYXRoQWRkTGluZVRvUG9pbnQocGF0aC5nZXQo
KSwgMCwgb3V0ZXJRdWFkLnAyKCkueCgpLCBvdXRlclF1YWQucDIoKS55KCkpOworICAgIGxheWVy
LnBhdGggPSBwYXRoLmdldCgpOwogfQogCiBzdGF0aWMgdm9pZCBsYXllclBhdGgoQ0FTaGFwZUxh
eWVyICpsYXllciwgY29uc3QgV2ViQ29yZTo6RmxvYXRRdWFkJiBvdXRlclF1YWQpCiB7Ci0gICAg
Q0dNdXRhYmxlUGF0aFJlZiBwYXRoID0gQ0dQYXRoQ3JlYXRlTXV0YWJsZSgpOwotICAgIENHUGF0
aE1vdmVUb1BvaW50KHBhdGgsIDAsIG91dGVyUXVhZC5wMSgpLngoKSwgb3V0ZXJRdWFkLnAxKCku
eSgpKTsKLSAgICBDR1BhdGhBZGRMaW5lVG9Qb2ludChwYXRoLCAwLCBvdXRlclF1YWQucDQoKS54
KCksIG91dGVyUXVhZC5wNCgpLnkoKSk7Ci0gICAgQ0dQYXRoQWRkTGluZVRvUG9pbnQocGF0aCwg
MCwgb3V0ZXJRdWFkLnAzKCkueCgpLCBvdXRlclF1YWQucDMoKS55KCkpOwotICAgIENHUGF0aEFk
ZExpbmVUb1BvaW50KHBhdGgsIDAsIG91dGVyUXVhZC5wMigpLngoKSwgb3V0ZXJRdWFkLnAyKCku
eSgpKTsKLSAgICBsYXllci5wYXRoID0gcGF0aDsKLSAgICBDR1BhdGhSZWxlYXNlKHBhdGgpOwor
ICAgIGF1dG8gcGF0aCA9IGFkb3B0Q0YoQ0dQYXRoQ3JlYXRlTXV0YWJsZSgpKTsKKyAgICBDR1Bh
dGhNb3ZlVG9Qb2ludChwYXRoLmdldCgpLCAwLCBvdXRlclF1YWQucDEoKS54KCksIG91dGVyUXVh
ZC5wMSgpLnkoKSk7CisgICAgQ0dQYXRoQWRkTGluZVRvUG9pbnQocGF0aC5nZXQoKSwgMCwgb3V0
ZXJRdWFkLnA0KCkueCgpLCBvdXRlclF1YWQucDQoKS55KCkpOworICAgIENHUGF0aEFkZExpbmVU
b1BvaW50KHBhdGguZ2V0KCksIDAsIG91dGVyUXVhZC5wMygpLngoKSwgb3V0ZXJRdWFkLnAzKCku
eSgpKTsKKyAgICBDR1BhdGhBZGRMaW5lVG9Qb2ludChwYXRoLmdldCgpLCAwLCBvdXRlclF1YWQu
cDIoKS54KCksIG91dGVyUXVhZC5wMigpLnkoKSk7CisgICAgbGF5ZXIucGF0aCA9IHBhdGguZ2V0
KCk7CiB9CiAKIC0gKHZvaWQpX2xheW91dEZvck5vZGVIaWdobGlnaHQ6KGNvbnN0IFdlYkNvcmU6
Okluc3BlY3Rvck92ZXJsYXk6OkhpZ2hsaWdodCYpaGlnaGxpZ2h0IG9mZnNldDoodW5zaWduZWQp
b2Zmc2V0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9fV0tUb3VjaEV2ZW50
R2VuZXJhdG9yLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvX1dLVG91Y2hFdmVudEdlbmVy
YXRvci5tbQppbmRleCBlMmM3MTgxMTE0ZjljYzlhOWQxMzg5MGI5NzEyNTYwMjNkNmE4MzU4Li4y
MTlkYmE1N2VmMGY1MDQ0OTMwNThjNjBjYjRkZWNjZTgyYWY4NGM0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9fV0tUb3VjaEV2ZW50R2VuZXJhdG9yLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL19XS1RvdWNoRXZlbnRHZW5lcmF0b3IubW0KQEAgLTk4LDcgKzk4
LDcgQEAgQHByb3BlcnR5IChub25hdG9taWMsIHN0cm9uZykgTlNNdXRhYmxlRGljdGlvbmFyeSAq
ZXZlbnRDYWxsYmFja3M7CiBAZW5kCiAKIEBpbXBsZW1lbnRhdGlvbiBfV0tUb3VjaEV2ZW50R2Vu
ZXJhdG9yIHsKLSAgICBJT0hJREV2ZW50U3lzdGVtQ2xpZW50UmVmIF9pb1N5c3RlbUNsaWVudDsK
KyAgICBSZXRhaW5QdHI8SU9ISURFdmVudFN5c3RlbUNsaWVudFJlZj4gX2lvU3lzdGVtQ2xpZW50
OwogICAgIFN5bnRoZXRpY0V2ZW50RGlnaXRpemVySW5mbyBfYWN0aXZlUG9pbnRzW0hJRE1heFRv
dWNoQ291bnRdOwogICAgIE5TVUludGVnZXIgX2FjdGl2ZVBvaW50Q291bnQ7CiB9CkBAIC0xMzEs
OSArMTMxLDYgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXQKIAogLSAodm9pZClkZWFsbG9jCiB7Ci0g
IGlmIChfaW9TeXN0ZW1DbGllbnQpCi0gICAgICAgIENGUmVsZWFzZShfaW9TeXN0ZW1DbGllbnQp
OwotCiAgICAgW19ldmVudENhbGxiYWNrcyByZWxlYXNlXTsKICAgICBbc3VwZXIgZGVhbGxvY107
CiB9CkBAIC0yMTAsNyArMjA3LDcgQEAgLSAoSU9ISURFdmVudFJlZilfY3JlYXRlSU9ISURFdmVu
dFR5cGU6KEhhbmRFdmVudFR5cGUpZXZlbnRUeXBlCiAtIChCT09MKV9zZW5kSElERXZlbnQ6KElP
SElERXZlbnRSZWYpZXZlbnRSZWYKIHsKICAgICBpZiAoIV9pb1N5c3RlbUNsaWVudCkKLSAgICAg
ICAgX2lvU3lzdGVtQ2xpZW50ID0gSU9ISURFdmVudFN5c3RlbUNsaWVudENyZWF0ZShrQ0ZBbGxv
Y2F0b3JEZWZhdWx0KTsKKyAgICAgICAgX2lvU3lzdGVtQ2xpZW50ID0gYWRvcHRDRihJT0hJREV2
ZW50U3lzdGVtQ2xpZW50Q3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQpKTsKIAogICAgIGlmIChl
dmVudFJlZikgewogICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3N0cm9uZ0V2ZW50
ID0gcmV0YWluUHRyKGV2ZW50UmVmKV0gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL2Z1bGxzY3JlZW4vV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlcklPUy5tbSBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mdWxsc2NyZWVuL1dLRnVsbFNjcmVlbldpbmRv
d0NvbnRyb2xsZXJJT1MubW0KaW5kZXggMDMzY2VlZmZiMzQ0YjRjN2FhMzEwZDhjMzc0OWE5MGVm
YzQ2YzExMi4uODQ0ZWUzMjAwOWI4MjJkODYyNWRmZjFjNjJlZDc5NDBmNTk4NjI3NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Z1bGxzY3JlZW4vV0tGdWxsU2NyZWVu
V2luZG93Q29udHJvbGxlcklPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
ZnVsbHNjcmVlbi9XS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVySU9TLm1tCkBAIC0xMDMwLDI4
ICsxMDMwLDI4IEBAIC0gKE5TU3RyaW5nICopX0VWT3JnYW5pemF0aW9uTmFtZQogICAgIGlmICgh
dHJ1c3QpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBOU0RpY3Rpb25hcnkgKmluZm9EaWN0
aW9uYXJ5ID0gQ0ZCcmlkZ2luZ1JlbGVhc2UoU2VjVHJ1c3RDb3B5SW5mbyh0cnVzdCkpOworICAg
IGF1dG8gaW5mb0RpY3Rpb25hcnkgPSBhZG9wdENGKFNlY1RydXN0Q29weUluZm8odHJ1c3QpKTsK
ICAgICAvLyBJZiBTZWNUcnVzdENvcHlJbmZvIHJldHVybmVkIE5VTEwgdGhlbiBpdCdzIGxpa2Vs
eSB0aGF0IHRoZSBTZWNUcnVzdFJlZiBoYXMgbm90IGJlZW4gZXZhbHVhdGVkCiAgICAgLy8gYW5k
IHRoZSBvbmx5IHdheSB0byBnZXQgdGhlIGluZm9ybWF0aW9uIHdlIG5lZWQgaXMgdG8gY2FsbCBT
ZWNUcnVzdEV2YWx1YXRlIG91cnNlbHZlcy4KICAgICBpZiAoIWluZm9EaWN0aW9uYXJ5KSB7CiAg
ICAgICAgIGlmICghU2VjVHJ1c3RFdmFsdWF0ZVdpdGhFcnJvcih0cnVzdCwgbnVsbHB0cikpCiAg
ICAgICAgICAgICByZXR1cm4gbmlsOwotICAgICAgICBpbmZvRGljdGlvbmFyeSA9IENGQnJpZGdp
bmdSZWxlYXNlKFNlY1RydXN0Q29weUluZm8odHJ1c3QpKTsKKyAgICAgICAgaW5mb0RpY3Rpb25h
cnkgPSBhZG9wdENGKFNlY1RydXN0Q29weUluZm8odHJ1c3QpKTsKICAgICAgICAgaWYgKCFpbmZv
RGljdGlvbmFyeSkKICAgICAgICAgICAgIHJldHVybiBuaWw7CiAgICAgfQogCiAgICAgLy8gTWFr
ZSBzdXJlIHRoYXQgdGhlIEVWIGNlcnRpZmljYXRlIGlzIHZhbGlkIGFnYWluc3Qgb3VyIGNlcnRp
ZmljYXRlIGNoYWluLgotICAgIGlkIGhhc0VWID0gW2luZm9EaWN0aW9uYXJ5IG9iamVjdEZvcktl
eTooX19icmlkZ2UgTlNTdHJpbmcgKilrU2VjVHJ1c3RJbmZvRXh0ZW5kZWRWYWxpZGF0aW9uS2V5
XTsKKyAgICBpZCBoYXNFViA9IFsoX19icmlkZ2UgTlNEaWN0aW9uYXJ5ICopaW5mb0RpY3Rpb25h
cnkgb2JqZWN0Rm9yS2V5OihfX2JyaWRnZSBOU1N0cmluZyAqKWtTZWNUcnVzdEluZm9FeHRlbmRl
ZFZhbGlkYXRpb25LZXldOwogICAgIGlmICghW2hhc0VWIGlzS2luZE9mQ2xhc3M6W05TVmFsdWUg
Y2xhc3NdXSB8fCAhW2hhc0VWIGJvb2xWYWx1ZV0pCiAgICAgICAgIHJldHVybiBuaWw7CiAKICAg
ICAvLyBNYWtlIHN1cmUgdGhhdCB3ZSBjb3VsZCBjb250YWN0IHJldm9jYXRpb24gc2VydmVyIGFu
ZCBpdCBpcyBzdGlsbCB2YWxpZC4KLSAgICBpZCBpc05vdFJldm9rZWQgPSBbaW5mb0RpY3Rpb25h
cnkgb2JqZWN0Rm9yS2V5OihfX2JyaWRnZSBOU1N0cmluZyAqKWtTZWNUcnVzdEluZm9SZXZvY2F0
aW9uS2V5XTsKKyAgICBpZCBpc05vdFJldm9rZWQgPSBbKF9fYnJpZGdlIE5TRGljdGlvbmFyeSAq
KWluZm9EaWN0aW9uYXJ5IG9iamVjdEZvcktleTooX19icmlkZ2UgTlNTdHJpbmcgKilrU2VjVHJ1
c3RJbmZvUmV2b2NhdGlvbktleV07CiAgICAgaWYgKCFbaXNOb3RSZXZva2VkIGlzS2luZE9mQ2xh
c3M6W05TVmFsdWUgY2xhc3NdXSB8fCAhW2lzTm90UmV2b2tlZCBib29sVmFsdWVdKQogICAgICAg
ICByZXR1cm4gbmlsOwogCi0gICAgX0VWT3JnYW5pemF0aW9uTmFtZSA9IFtpbmZvRGljdGlvbmFy
eSBvYmplY3RGb3JLZXk6KF9fYnJpZGdlIE5TU3RyaW5nICopa1NlY1RydXN0SW5mb0NvbXBhbnlO
YW1lS2V5XTsKKyAgICBfRVZPcmdhbml6YXRpb25OYW1lID0gWyhfX2JyaWRnZSBOU0RpY3Rpb25h
cnkgKilpbmZvRGljdGlvbmFyeSBvYmplY3RGb3JLZXk6KF9fYnJpZGdlIE5TU3RyaW5nICopa1Nl
Y1RydXN0SW5mb0NvbXBhbnlOYW1lS2V5XTsKICAgICByZXR1cm4gX0VWT3JnYW5pemF0aW9uTmFt
ZS5nZXQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29h
L1dlYlByb2Nlc3NDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQ
cm9jZXNzQ29jb2EubW0KaW5kZXggZTBiOTE4NWE1YWI3NTVkM2UxMDkxZDI3ZWY5NjZjOWZmMDgx
YjNmZi4uODQ2MTQwZjJhM2ExN2M0OGY0MWVmY2M2MjgxYWVjMDY3NzVjYjkzZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCkBAIC01
MjgsNyArNTI4LDcgQEAgdm9pZCBXZWJQcm9jZXNzOjp1cGRhdGVQcm9jZXNzTmFtZShJc0luUHJv
Y2Vzc0luaXRpYWxpemF0aW9uIGlzSW5Qcm9jZXNzSW5pdGlhbGkKIHN0YXRpYyBOU1N0cmluZyAq
d2ViUHJvY2Vzc0xvYWRlckFjY2Vzc2liaWxpdHlCdW5kbGVQYXRoKCkKIHsKICNpZiBIQVZFKEFD
Q0VTU0lCSUxJVFlfQlVORExFU19QQVRIKQotICAgIHJldHVybiAoX19icmlkZ2UgTlNTdHJpbmcg
KilDRkF1dG9yZWxlYXNlKF9BWFNDb3B5UGF0aEZvckFjY2Vzc2liaWxpdHlCdW5kbGUoQ0ZTVFIo
IldlYlByb2Nlc3NMb2FkZXIiKSkpOworICAgIHJldHVybiBhZG9wdENGKF9BWFNDb3B5UGF0aEZv
ckFjY2Vzc2liaWxpdHlCdW5kbGUoQ0ZTVFIoIldlYlByb2Nlc3NMb2FkZXIiKSkpLmJyaWRnaW5n
QXV0b3JlbGVhc2UoKTsKICNlbHNlCiAgICAgTlNTdHJpbmcgKnBhdGggPSAoX19icmlkZ2UgTlNT
dHJpbmcgKilHU1N5c3RlbVJvb3REaXJlY3RvcnkoKTsKICNpZiBQTEFURk9STShNQUNDQVRBTFlT
VCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL01pc2MvV2ViVUlLaXRTdXBw
b3J0Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvTWlzYy9XZWJVSUtpdFN1cHBvcnQubW0K
aW5kZXggNTkzMTQ2YzAzMzJlYmQ1Y2QxYzE5YmMxNTc1NzMyYzMxMTI0OTY5MS4uOThhNmNmZmU1
NzVhODEzYjczYWUxMDFlOGMyYzMzODZjZGFkZTNjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9pb3MvTWlzYy9XZWJVSUtpdFN1cHBvcnQubW0KKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS9pb3MvTWlzYy9XZWJVSUtpdFN1cHBvcnQubW0KQEAgLTU1LDkgKzU1LDggQEAgc3RhdGlj
IHZvaWQgTG9hZFdlYkxvY2FsaXplZFN0cmluZ3NUaW1lckNhbGxiYWNrKENGUnVuTG9vcFRpbWVy
UmVmIHRpbWVyLCB2b2lkICoKIAogc3RhdGljIHZvaWQgTG9hZFdlYkxvY2FsaXplZFN0cmluZ3Mo
KQogewotICAgIENGUnVuTG9vcFRpbWVyUmVmIHRpbWVyID0gQ0ZSdW5Mb29wVGltZXJDcmVhdGUo
a0NGQWxsb2NhdG9yRGVmYXVsdCwgQ0ZBYnNvbHV0ZVRpbWVHZXRDdXJyZW50KCksIDAsIDAsIDAs
ICZMb2FkV2ViTG9jYWxpemVkU3RyaW5nc1RpbWVyQ2FsbGJhY2ssIE5VTEwpOwotICAgIENGUnVu
TG9vcEFkZFRpbWVyKENGUnVuTG9vcEdldEN1cnJlbnQoKSwgdGltZXIsIGtDRlJ1bkxvb3BDb21t
b25Nb2Rlcyk7Ci0gICAgQ0ZSZWxlYXNlKHRpbWVyKTsKKyAgICBhdXRvIHRpbWVyID0gYWRvcHRD
RihDRlJ1bkxvb3BUaW1lckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBDRkFic29sdXRlVGlt
ZUdldEN1cnJlbnQoKSwgMCwgMCwgMCwgJkxvYWRXZWJMb2NhbGl6ZWRTdHJpbmdzVGltZXJDYWxs
YmFjaywgTlVMTCkpOworICAgIENGUnVuTG9vcEFkZFRpbWVyKENGUnVuTG9vcEdldEN1cnJlbnQo
KSwgdGltZXIuZ2V0KCksIGtDRlJ1bkxvb3BDb21tb25Nb2Rlcyk7CiB9CiAKIHZvaWQgV2ViS2l0
SW5pdGlhbGl6ZSh2b2lkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2Vi
Vmlldy9XZWJQREZWaWV3SU9TLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViVmlldy9X
ZWJQREZWaWV3SU9TLm1tCmluZGV4IGFhODc3ZGEwMjliMDZkYTlhMmY4YTZkNmFjYzAwOTAxOTBl
NzM3YWQuLmNiZDUwYjZmY2E4NTU3MTVjMmM3Y2MzZDYwMTJhYmQxODJlNDAyODAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYlZpZXcvV2ViUERGVmlld0lPUy5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJWaWV3L1dlYlBERlZpZXdJT1MubW0KQEAgLTMw
MiwxNCArMzAyLDExIEBAIC0gKHZvaWQpX2NoZWNrUERGVGl0bGUKIAogLSAodm9pZClmaW5pc2hl
ZExvYWRpbmdXaXRoRGF0YVNvdXJjZTooV2ViRGF0YVNvdXJjZSAqKWRhdGFTb3VyY2UKIHsKLSAg
ICBDR0RhdGFQcm92aWRlclJlZiBwcm92aWRlciA9IENHRGF0YVByb3ZpZGVyQ3JlYXRlV2l0aENG
RGF0YSgoQ0ZEYXRhUmVmKVtkYXRhU291cmNlIGRhdGFdKTsKLQorICAgIGF1dG8gcHJvdmlkZXIg
PSBhZG9wdENGKENHRGF0YVByb3ZpZGVyQ3JlYXRlV2l0aENGRGF0YSgoQ0ZEYXRhUmVmKVtkYXRh
U291cmNlIGRhdGFdKSk7CiAgICAgaWYgKCFwcm92aWRlcikgCiAgICAgICAgIHJldHVybjsKICAg
ICAKLSAgICBfUERGRG9jdW1lbnQgPSBDR1BERkRvY3VtZW50Q3JlYXRlV2l0aFByb3ZpZGVyKHBy
b3ZpZGVyKTsKLSAgICBDR0RhdGFQcm92aWRlclJlbGVhc2UocHJvdmlkZXIpOwotICAgICAgICAK
KyAgICBfUERGRG9jdW1lbnQgPSBDR1BERkRvY3VtZW50Q3JlYXRlV2l0aFByb3ZpZGVyKHByb3Zp
ZGVyLmdldCgpKTsKICAgICBpZiAoIV9QREZEb2N1bWVudCkKICAgICAgICAgcmV0dXJuOwogICAg
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViVmlldy9XZWJQREZWaWV3
UGxhY2Vob2xkZXIubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJWaWV3L1dlYlBERlZp
ZXdQbGFjZWhvbGRlci5tbQppbmRleCA3MjU0ZDBjNWFjYzZhYTFhODc5YjYyYWQwYTQ4ODk5ZjNj
ZTdkYmExLi45YmIwOTBhYmE4NjNkODJiNjU1MjM2NTQ2OWQwOTNiOTk5YTYwYjlhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJWaWV3L1dlYlBERlZpZXdQbGFjZWhvbGRl
ci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJWaWV3L1dlYlBERlZpZXdQbGFj
ZWhvbGRlci5tbQpAQCAtMjc0LDEzICsyNzQsMTEgQEAgLSAodm9pZClmaW5pc2hlZExvYWRpbmdX
aXRoRGF0YVNvdXJjZTooV2ViRGF0YVNvdXJjZSAqKWRhdGFTb3VyY2UKICAgICBbc2VsZiBkYXRh
U291cmNlVXBkYXRlZDpkYXRhU291cmNlXTsKIAogICAgIF9kaWRGaW5pc2hMb2FkID0gWUVTOwot
ICAgIENHRGF0YVByb3ZpZGVyUmVmIHByb3ZpZGVyID0gQ0dEYXRhUHJvdmlkZXJDcmVhdGVXaXRo
Q0ZEYXRhKChDRkRhdGFSZWYpW2RhdGFTb3VyY2UgZGF0YV0pOworICAgIGF1dG8gcHJvdmlkZXIg
PSBhZG9wdENGKENHRGF0YVByb3ZpZGVyQ3JlYXRlV2l0aENGRGF0YSgoQ0ZEYXRhUmVmKVtkYXRh
U291cmNlIGRhdGFdKSk7CiAgICAgaWYgKCFwcm92aWRlcikKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgX2RvY3VtZW50ID0gQ0dQREZEb2N1bWVudENyZWF0ZVdpdGhQcm92aWRlcihwcm92aWRlcik7
Ci0KLSAgICBDR0RhdGFQcm92aWRlclJlbGVhc2UocHJvdmlkZXIpOworICAgIF9kb2N1bWVudCA9
IENHUERGRG9jdW1lbnRDcmVhdGVXaXRoUHJvdmlkZXIocHJvdmlkZXIuZ2V0KCkpOwogCiAgICAg
W3NlbGYgX2RvUG9zdExvYWRPclVubG9ja1Rhc2tzXTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViTG9jYWxpemFibGVTdHJpbmdzLm1tIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvTWlzYy9XZWJMb2NhbGl6YWJsZVN0cmluZ3MubW0KaW5kZXggNGVlMDAz
NjQxOWU3YWZjYmY4NTM4MjJkYzViZTk2NDUxOGQwMjk3OS4uMjk0MGQ0YWI2ZjIwOTgzZWM4NmI5
MmFhYTJmNjE3MmMyMTk1MzBmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
TWlzYy9XZWJMb2NhbGl6YWJsZVN0cmluZ3MubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvTWlzYy9XZWJMb2NhbGl6YWJsZVN0cmluZ3MubW0KQEAgLTMwLDYgKzMwLDggQEAKIAogI2lt
cG9ydCA8d3RmL0Fzc2VydGlvbnMuaD4KICNpbXBvcnQgPHd0Zi9NYWluVGhyZWFkLmg+CisjaW1w
b3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KIAog
V2ViTG9jYWxpemFibGVTdHJpbmdzQnVuZGxlIFdlYktpdExvY2FsaXphYmxlU3RyaW5nc0J1bmRs
ZSA9IHsgImNvbS5hcHBsZS5XZWJLaXQiLCAwIH07CiAKQEAgLTQ1LDEzICs0Nyw5IEBAIE5TU3Ry
aW5nICpXZWJMb2NhbGl6ZWRTdHJpbmcoV2ViTG9jYWxpemFibGVTdHJpbmdzQnVuZGxlICpzdHJp
bmdzQnVuZGxlLCBjb25zdCBjCiAKICAgICBOU0J1bmRsZSAqYnVuZGxlOwogICAgIGlmIChzdHJp
bmdzQnVuZGxlID09IE5VTEwpIHsKLSAgICAgICAgc3RhdGljIE5TQnVuZGxlICptYWluQnVuZGxl
OwotICAgICAgICBpZiAobWFpbkJ1bmRsZSA9PSBuaWwpIHsKLSAgICAgICAgICAgIG1haW5CdW5k
bGUgPSBbTlNCdW5kbGUgbWFpbkJ1bmRsZV07Ci0gICAgICAgICAgICBBU1NFUlQobWFpbkJ1bmRs
ZSk7Ci0gICAgICAgICAgICBDRlJldGFpbihtYWluQnVuZGxlKTsKLSAgICAgICAgfQotICAgICAg
ICBidW5kbGUgPSBtYWluQnVuZGxlOworICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0
YWluUHRyPE5TQnVuZGxlPj4gbWFpbkJ1bmRsZSA9IFtOU0J1bmRsZSBtYWluQnVuZGxlXTsKKyAg
ICAgICAgQVNTRVJUKG1haW5CdW5kbGUuZ2V0KCkpOworICAgICAgICBidW5kbGUgPSBtYWluQnVu
ZGxlLmdldCgpLmdldCgpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGJ1bmRsZSA9IHN0cmluZ3NC
dW5kbGUtPmJ1bmRsZTsKICAgICAgICAgaWYgKGJ1bmRsZSA9PSBuaWwpIHsKQEAgLTYxLDkgKzU5
LDggQEAgTlNTdHJpbmcgKldlYkxvY2FsaXplZFN0cmluZyhXZWJMb2NhbGl6YWJsZVN0cmluZ3NC
dW5kbGUgKnN0cmluZ3NCdW5kbGUsIGNvbnN0IGMKICAgICAgICAgfQogICAgIH0KICAgICBOU1N0
cmluZyAqbm90Rm91bmQgPSBAImxvY2FsaXplZCBzdHJpbmcgbm90IGZvdW5kIjsKLSAgICBDRlN0
cmluZ1JlZiBrZXlTdHJpbmcgPSBDRlN0cmluZ0NyZWF0ZVdpdGhDU3RyaW5nTm9Db3B5KE5VTEws
IGtleSwga0NGU3RyaW5nRW5jb2RpbmdVVEY4LCBrQ0ZBbGxvY2F0b3JOdWxsKTsKLSAgICBOU1N0
cmluZyAqcmVzdWx0ID0gW2J1bmRsZSBsb2NhbGl6ZWRTdHJpbmdGb3JLZXk6KF9fYnJpZGdlIE5T
U3RyaW5nICopa2V5U3RyaW5nIHZhbHVlOm5vdEZvdW5kIHRhYmxlOm5pbF07Ci0gICAgQ0ZSZWxl
YXNlKGtleVN0cmluZyk7CisgICAgYXV0byBrZXlTdHJpbmcgPSBhZG9wdENGKENGU3RyaW5nQ3Jl
YXRlV2l0aENTdHJpbmdOb0NvcHkoTlVMTCwga2V5LCBrQ0ZTdHJpbmdFbmNvZGluZ1VURjgsIGtD
RkFsbG9jYXRvck51bGwpKTsKKyAgICBOU1N0cmluZyAqcmVzdWx0ID0gW2J1bmRsZSBsb2NhbGl6
ZWRTdHJpbmdGb3JLZXk6KF9fYnJpZGdlIE5TU3RyaW5nICopa2V5U3RyaW5nLmdldCgpIHZhbHVl
Om5vdEZvdW5kIHRhYmxlOm5pbF07CiAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShyZXN1bHQgIT0g
bm90Rm91bmQsICJjb3VsZCBub3QgZmluZCBsb2NhbGl6YWJsZSBzdHJpbmcgJXMgaW4gYnVuZGxl
Iiwga2V5KTsKICAgICByZXR1cm4gcmVzdWx0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvTWlzYy9XZWJOU0RhdGFFeHRyYXMubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9NaXNjL1dlYk5TRGF0YUV4dHJhcy5tbQppbmRleCA2ZWM3Y2MwZGIyMjcyY2U0YmQzZGEx
NzRlYTMyOTQ1ODZkZGZkMTdlLi44ZDUwNmEyM2ZjNjRhMGU5NjI5MmI2ZTFmMTBlM2YyNDgwNjhl
NDAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYk5TRGF0YUV4
dHJhcy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYk5TRGF0YUV4dHJh
cy5tbQpAQCAtODMsOSArODMsOSBAQCAtIChOU1N0cmluZyAqKV93ZWJfY2FwaXRhbGl6ZVJGQzgy
MkhlYWRlckZpZWxkTmFtZQogICAgIH0KICAgICBpZiAoc29tZXRoaW5nQ2hhbmdlZCkgewogICAg
ICAgICBpZiAodXNlVW5pQ2hhclB0cikKLSAgICAgICAgICAgIHJlc3VsdCA9IENGQnJpZGdpbmdS
ZWxlYXNlKENGU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnNOb0NvcHkoa0NGQWxsb2NhdG9yRGVm
YXVsdCwgdW5pQ2hhclB0ciwgbGVuLCBudWxscHRyKSk7CisgICAgICAgICAgICByZXN1bHQgPSBh
ZG9wdENGKENGU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnNOb0NvcHkoa0NGQWxsb2NhdG9yRGVm
YXVsdCwgdW5pQ2hhclB0ciwgbGVuLCBudWxscHRyKSkuYnJpZGdpbmdBdXRvcmVsZWFzZSgpOwog
ICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXN1bHQgPSBDRkJyaWRnaW5nUmVsZWFzZShDRlN0
cmluZ0NyZWF0ZVdpdGhDU3RyaW5nTm9Db3B5KGtDRkFsbG9jYXRvckRlZmF1bHQsIGNoYXJQdHIs
IGtDRlN0cmluZ0VuY29kaW5nSVNPTGF0aW4xLCBudWxscHRyKSk7CisgICAgICAgICAgICByZXN1
bHQgPSBhZG9wdENGKENGU3RyaW5nQ3JlYXRlV2l0aENTdHJpbmdOb0NvcHkoa0NGQWxsb2NhdG9y
RGVmYXVsdCwgY2hhclB0ciwga0NGU3RyaW5nRW5jb2RpbmdJU09MYXRpbjEsIG51bGxwdHIpKS5i
cmlkZ2luZ0F1dG9yZWxlYXNlKCk7CiAgICAgfSBlbHNlCiAgICAgICAgIHJlc3VsdCA9IHNlbGY7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL05l
dHNjYXBlUGx1Z2luSG9zdE1hbmFnZXIubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVn
aW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkhvc3RNYW5hZ2VyLm1tCmluZGV4IGY2MzkzZjg5YmZi
YTRmNjlmZDAzOGYyMTU2NWVmMTdkMDJmYmYzMzcuLjVmZGEzZmM3MTdmMzEzYTRkYjY1ZTIyYjgz
Njk1ZDgzM2M5OWVmOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdp
bnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSG9zdE1hbmFnZXIubW0KKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5Ib3N0TWFuYWdlci5tbQpA
QCAtMTIxLDcgKzEyMSw3IEBAIHN0YXRpYyBOU1N0cmluZyAqcHJlZmVycmVkQnVuZGxlTG9jYWxp
emF0aW9uTmFtZSgpCiAgICAgaWYgKCFzdWNjZXNzKQogICAgICAgICByZXR1cm4gQCJlbl9VUyI7
CiAKLSAgICByZXR1cm4gQ0ZCcmlkZ2luZ1JlbGVhc2UoQ0ZMb2NhbGVDcmVhdGVDYW5vbmljYWxM
b2NhbGVJZGVudGlmaWVyRnJvbVNjcmlwdE1hbmFnZXJDb2RlcygwLCBsYW5ndWFnZUNvZGUsIHJl
Z2lvbkNvZGUpKTsKKyAgICByZXR1cm4gYWRvcHRDRihDRkxvY2FsZUNyZWF0ZUNhbm9uaWNhbExv
Y2FsZUlkZW50aWZpZXJGcm9tU2NyaXB0TWFuYWdlckNvZGVzKDAsIGxhbmd1YWdlQ29kZSwgcmVn
aW9uQ29kZSkpLmJyaWRnaW5nQXV0b3JlbGVhc2UoKTsKIH0KIAogYm9vbCBOZXRzY2FwZVBsdWdp
bkhvc3RNYW5hZ2VyOjpzcGF3blBsdWdpbkhvc3QoY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoLCBj
cHVfdHlwZV90IHBsdWdpbkFyY2hpdGVjdHVyZSwgbWFjaF9wb3J0X3QgY2xpZW50UG9ydCwgbWFj
aF9wb3J0X3QmIHBsdWdpbkhvc3RQb3J0LCBQcm9jZXNzU2VyaWFsTnVtYmVyJiBwbHVnaW5Ib3N0
UFNOKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRz
Y2FwZVBsdWdpblZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYk5l
dHNjYXBlUGx1Z2luVmlldy5tbQppbmRleCAxMmFhYTNkMDhmNzdjOGNmOGQ0MWQ0NDNlMTJhYjZk
MmUyNzEyM2IyLi44ZmZmMjQ1ZTE2OGQzNGFkYmVkYjAyZDQ3NDhmOWNiODcxMTA3N2I2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2lu
Vmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBl
UGx1Z2luVmlldy5tbQpAQCAtMTQ1MywxNiArMTQ1MywxNSBAQCAtIChjb25zdCBjaGFyICopdXNl
ckFnZW50CiAKIC0odm9pZClzdGF0dXM6KGNvbnN0IGNoYXIgKiltZXNzYWdlCiB7ICAgIAotICAg
IENGU3RyaW5nUmVmIHN0YXR1cyA9IENGU3RyaW5nQ3JlYXRlV2l0aENTdHJpbmcoTlVMTCwgbWVz
c2FnZSA/IG1lc3NhZ2UgOiAiIiwga0NGU3RyaW5nRW5jb2RpbmdVVEY4KTsKKyAgICBhdXRvIHN0
YXR1cyA9IGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVXaXRoQ1N0cmluZyhOVUxMLCBtZXNzYWdlID8g
bWVzc2FnZSA6ICIiLCBrQ0ZTdHJpbmdFbmNvZGluZ1VURjgpKTsKICAgICBpZiAoIXN0YXR1cykg
ewogICAgICAgICBMT0dfRVJST1IoIk5QTl9TdGF0dXM6IHRoZSBtZXNzYWdlIHdhcyBub3QgdmFs
aWQgVVRGLTgiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAgICBMT0coUGx1Z2lu
cywgIk5QTl9TdGF0dXM6ICVAIiwgc3RhdHVzKTsKKyAgICBMT0coUGx1Z2lucywgIk5QTl9TdGF0
dXM6ICVAIiwgc3RhdHVzLmdldCgpKTsKICAgICBXZWJWaWV3ICp3diA9IFtzZWxmIHdlYlZpZXdd
OwotICAgIFtbd3YgX1VJRGVsZWdhdGVGb3J3YXJkZXJdIHdlYlZpZXc6d3Ygc2V0U3RhdHVzVGV4
dDooX19icmlkZ2UgTlNTdHJpbmcgKilzdGF0dXNdOwotICAgIENGUmVsZWFzZShzdGF0dXMpOwor
ICAgIFtbd3YgX1VJRGVsZWdhdGVGb3J3YXJkZXJdIHdlYlZpZXc6d3Ygc2V0U3RhdHVzVGV4dDoo
X19icmlkZ2UgTlNTdHJpbmcgKilzdGF0dXMuZ2V0KCldOwogfQogCiAtKHZvaWQpaW52YWxpZGF0
ZVJlY3Q6KE5QUmVjdCAqKWludmFsaWRSZWN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQcm9ncmVzc1RyYWNrZXJDbGllbnQubW0gYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQcm9ncmVzc1RyYWNrZXJDbGll
bnQubW0KaW5kZXggY2MzOGVmMTYxZTc1M2Q1MTkxNjRmZWQzMGRkNTg3NjUxODA4YmYxNi4uOGY0
NzgzY2IzMDhhNjRkZGNhNWIxMzQ0MzU1MDgyMzYwNDE3ZTA1MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUHJvZ3Jlc3NUcmFja2VyQ2xpZW50
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlByb2dy
ZXNzVHJhY2tlckNsaWVudC5tbQpAQCAtNzAsMTMgKzcwLDEyIEBAIHZvaWQgV2ViUHJvZ3Jlc3NU
cmFja2VyQ2xpZW50Ojpwcm9ncmVzc0VzdGltYXRlQ2hhbmdlZChXZWJDb3JlOjpGcmFtZSYpCiAg
ICAgCiAgICAgLy8gVXNlIGEgQ0ZEaWN0aW9uYXJ5IHNvIHdlIGNhbiBhZGQgdGhlIENHQ29sb3JS
ZWYgd2l0aG91dCBjb21waWxlIGVycm9ycy4gQW5kIHRoZW4gdGhhbmtzIHRvCiAgICAgLy8gdG9s
bC1mcmVlIGJyaWRnaW5nIHdlIGNhbiBwYXNzIHRoZSBDRkRpY3Rpb25hcnkgYXMgYW4gTlNEaWN0
aW9uYXJ5IHRvIHBvc3ROb3RpZmljYXRpb24uCi0gICAgQ0ZNdXRhYmxlRGljdGlvbmFyeVJlZiB1
c2VySW5mbyA9IENGRGljdGlvbmFyeUNyZWF0ZU11dGFibGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwg
MiwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1
ZUNhbGxCYWNrcyk7Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUodXNlckluZm8sIFdlYlZpZXdQ
cm9ncmVzc0VzdGltYXRlZFByb2dyZXNzS2V5LCBwcm9ncmVzcyk7CisgICAgYXV0byB1c2VySW5m
byA9IGFkb3B0Q0YoQ0ZEaWN0aW9uYXJ5Q3JlYXRlTXV0YWJsZShrQ0ZBbGxvY2F0b3JEZWZhdWx0
LCAyLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZh
bHVlQ2FsbEJhY2tzKSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUodXNlckluZm8uZ2V0KCks
IFdlYlZpZXdQcm9ncmVzc0VzdGltYXRlZFByb2dyZXNzS2V5LCBwcm9ncmVzcyk7CiAgICAgaWYg
KGJvZHlCYWNrZ3JvdW5kQ29sb3IpCi0gICAgICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKHVzZXJJ
bmZvLCBXZWJWaWV3UHJvZ3Jlc3NCYWNrZ3JvdW5kQ29sb3JLZXksIGJvZHlCYWNrZ3JvdW5kQ29s
b3IpOworICAgICAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZSh1c2VySW5mby5nZXQoKSwgV2ViVmll
d1Byb2dyZXNzQmFja2dyb3VuZENvbG9yS2V5LCBib2R5QmFja2dyb3VuZENvbG9yKTsKICAgICAK
LSAgICBXZWJUaHJlYWRQb3N0Tm90aWZpY2F0aW9uKFdlYlZpZXdQcm9ncmVzc0VzdGltYXRlQ2hh
bmdlZE5vdGlmaWNhdGlvbiwgbV93ZWJWaWV3LCAoTlNEaWN0aW9uYXJ5ICopIHVzZXJJbmZvKTsK
LSAgICBDRlJlbGVhc2UodXNlckluZm8pOworICAgIFdlYlRocmVhZFBvc3ROb3RpZmljYXRpb24o
V2ViVmlld1Byb2dyZXNzRXN0aW1hdGVDaGFuZ2VkTm90aWZpY2F0aW9uLCBtX3dlYlZpZXcsIChO
U0RpY3Rpb25hcnkgKil1c2VySW5mby5nZXQoKSk7CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViSW5zcGVjdG9yL1dlYk5vZGVIaWdobGlnaHRWaWV3
Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViSW5zcGVjdG9yL1dlYk5vZGVIaWdobGln
aHRWaWV3Lm1tCmluZGV4IDIwZjE5ZjBiYzRiYjQ4ZGQyZGU1OTA2ZDllMjdlM2IzYzM0YzI1M2Yu
LmQzOTczZTI5NDQ1OWVjZjFkYmRlZjQ0OWVmMmNmZDJjYWNiOGVkMzUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkluc3BlY3Rvci9XZWJOb2RlSGlnaGxpZ2h0Vmlldy5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJJbnNwZWN0b3IvV2ViTm9kZUhpZ2hs
aWdodFZpZXcubW0KQEAgLTIzNiwyOCArMjM2LDI2IEBAIHN0YXRpYyB2b2lkIGxheWVyUGF0aFdp
dGhIb2xlKENBU2hhcGVMYXllciAqbGF5ZXIsIGNvbnN0IEZsb2F0UXVhZCYgb3V0ZXJRdWFkLCBj
CiAgICAgICAgIGlubmVySG9sZSA9IHF1YWRJbnRlcnNlY3Rpb24ob3V0ZXJRdWFkLCBob2xlUXVh
ZCk7CiAKICAgICAvLyBDbG9ja3dpc2UgaW5zaWRlIHJlY3QgKGhvbGUpLCBDb3VudGVyLUNsb2Nr
d2lzZSBvdXRzaWRlIHJlY3QgKGZpbGwpLgotICAgIENHTXV0YWJsZVBhdGhSZWYgcGF0aCA9IENH
UGF0aENyZWF0ZU11dGFibGUoKTsKLSAgICBDR1BhdGhNb3ZlVG9Qb2ludChwYXRoLCAwLCBpbm5l
ckhvbGUucDEoKS54KCksIGlubmVySG9sZS5wMSgpLnkoKSk7Ci0gICAgQ0dQYXRoQWRkTGluZVRv
UG9pbnQocGF0aCwgMCwgaW5uZXJIb2xlLnAyKCkueCgpLCBpbm5lckhvbGUucDIoKS55KCkpOwot
ICAgIENHUGF0aEFkZExpbmVUb1BvaW50KHBhdGgsIDAsIGlubmVySG9sZS5wMygpLngoKSwgaW5u
ZXJIb2xlLnAzKCkueSgpKTsKLSAgICBDR1BhdGhBZGRMaW5lVG9Qb2ludChwYXRoLCAwLCBpbm5l
ckhvbGUucDQoKS54KCksIGlubmVySG9sZS5wNCgpLnkoKSk7Ci0gICAgQ0dQYXRoTW92ZVRvUG9p
bnQocGF0aCwgMCwgb3V0ZXJRdWFkLnAxKCkueCgpLCBvdXRlclF1YWQucDEoKS55KCkpOwotICAg
IENHUGF0aEFkZExpbmVUb1BvaW50KHBhdGgsIDAsIG91dGVyUXVhZC5wNCgpLngoKSwgb3V0ZXJR
dWFkLnA0KCkueSgpKTsKLSAgICBDR1BhdGhBZGRMaW5lVG9Qb2ludChwYXRoLCAwLCBvdXRlclF1
YWQucDMoKS54KCksIG91dGVyUXVhZC5wMygpLnkoKSk7Ci0gICAgQ0dQYXRoQWRkTGluZVRvUG9p
bnQocGF0aCwgMCwgb3V0ZXJRdWFkLnAyKCkueCgpLCBvdXRlclF1YWQucDIoKS55KCkpOwotICAg
IGxheWVyLnBhdGggPSBwYXRoOwotICAgIENHUGF0aFJlbGVhc2UocGF0aCk7CisgICAgYXV0byBw
YXRoID0gYWRvcHRDRihDR1BhdGhDcmVhdGVNdXRhYmxlKCkpOworICAgIENHUGF0aE1vdmVUb1Bv
aW50KHBhdGguZ2V0KCksIDAsIGlubmVySG9sZS5wMSgpLngoKSwgaW5uZXJIb2xlLnAxKCkueSgp
KTsKKyAgICBDR1BhdGhBZGRMaW5lVG9Qb2ludChwYXRoLmdldCgpLCAwLCBpbm5lckhvbGUucDIo
KS54KCksIGlubmVySG9sZS5wMigpLnkoKSk7CisgICAgQ0dQYXRoQWRkTGluZVRvUG9pbnQocGF0
aC5nZXQoKSwgMCwgaW5uZXJIb2xlLnAzKCkueCgpLCBpbm5lckhvbGUucDMoKS55KCkpOworICAg
IENHUGF0aEFkZExpbmVUb1BvaW50KHBhdGguZ2V0KCksIDAsIGlubmVySG9sZS5wNCgpLngoKSwg
aW5uZXJIb2xlLnA0KCkueSgpKTsKKyAgICBDR1BhdGhNb3ZlVG9Qb2ludChwYXRoLmdldCgpLCAw
LCBvdXRlclF1YWQucDEoKS54KCksIG91dGVyUXVhZC5wMSgpLnkoKSk7CisgICAgQ0dQYXRoQWRk
TGluZVRvUG9pbnQocGF0aC5nZXQoKSwgMCwgb3V0ZXJRdWFkLnA0KCkueCgpLCBvdXRlclF1YWQu
cDQoKS55KCkpOworICAgIENHUGF0aEFkZExpbmVUb1BvaW50KHBhdGguZ2V0KCksIDAsIG91dGVy
UXVhZC5wMygpLngoKSwgb3V0ZXJRdWFkLnAzKCkueSgpKTsKKyAgICBDR1BhdGhBZGRMaW5lVG9Q
b2ludChwYXRoLmdldCgpLCAwLCBvdXRlclF1YWQucDIoKS54KCksIG91dGVyUXVhZC5wMigpLnko
KSk7CisgICAgbGF5ZXIucGF0aCA9IHBhdGguZ2V0KCk7CiB9CiAKIHN0YXRpYyB2b2lkIGxheWVy
UGF0aChDQVNoYXBlTGF5ZXIgKmxheWVyLCBjb25zdCBGbG9hdFF1YWQmIG91dGVyUXVhZCkKIHsK
LSAgICBDR011dGFibGVQYXRoUmVmIHBhdGggPSBDR1BhdGhDcmVhdGVNdXRhYmxlKCk7Ci0gICAg
Q0dQYXRoTW92ZVRvUG9pbnQocGF0aCwgMCwgb3V0ZXJRdWFkLnAxKCkueCgpLCBvdXRlclF1YWQu
cDEoKS55KCkpOwotICAgIENHUGF0aEFkZExpbmVUb1BvaW50KHBhdGgsIDAsIG91dGVyUXVhZC5w
NCgpLngoKSwgb3V0ZXJRdWFkLnA0KCkueSgpKTsKLSAgICBDR1BhdGhBZGRMaW5lVG9Qb2ludChw
YXRoLCAwLCBvdXRlclF1YWQucDMoKS54KCksIG91dGVyUXVhZC5wMygpLnkoKSk7Ci0gICAgQ0dQ
YXRoQWRkTGluZVRvUG9pbnQocGF0aCwgMCwgb3V0ZXJRdWFkLnAyKCkueCgpLCBvdXRlclF1YWQu
cDIoKS55KCkpOwotICAgIGxheWVyLnBhdGggPSBwYXRoOwotICAgIENHUGF0aFJlbGVhc2UocGF0
aCk7CisgICAgYXV0byBwYXRoID0gYWRvcHRDRihDR1BhdGhDcmVhdGVNdXRhYmxlKCkpOworICAg
IENHUGF0aE1vdmVUb1BvaW50KHBhdGguZ2V0KCksIDAsIG91dGVyUXVhZC5wMSgpLngoKSwgb3V0
ZXJRdWFkLnAxKCkueSgpKTsKKyAgICBDR1BhdGhBZGRMaW5lVG9Qb2ludChwYXRoLmdldCgpLCAw
LCBvdXRlclF1YWQucDQoKS54KCksIG91dGVyUXVhZC5wNCgpLnkoKSk7CisgICAgQ0dQYXRoQWRk
TGluZVRvUG9pbnQocGF0aC5nZXQoKSwgMCwgb3V0ZXJRdWFkLnAzKCkueCgpLCBvdXRlclF1YWQu
cDMoKS55KCkpOworICAgIENHUGF0aEFkZExpbmVUb1BvaW50KHBhdGguZ2V0KCksIDAsIG91dGVy
UXVhZC5wMigpLngoKSwgb3V0ZXJRdWFkLnAyKCkueSgpKTsKKyAgICBsYXllci5wYXRoID0gcGF0
aC5nZXQoKTsKIH0KIAogLSAodm9pZClfbGF5b3V0Rm9yTm9kZUhpZ2hsaWdodDooSW5zcGVjdG9y
T3ZlcmxheTo6SGlnaGxpZ2h0KiloaWdobGlnaHQgcGFyZW50OihDQUxheWVyICopcGFyZW50TGF5
ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUu
bW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCmluZGV4IGI5
YmU3ZDk5MDVkYWY1MGVlOWZkNTMwOGU5N2ZmM2M5ZGVjYTllMWIuLjNhYmM2MDFiODBiYWQ0MzAz
NTQyNWI0OTI5ODQ5ZjEzZWYxNDg3NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Vmlldy9XZWJGcmFtZS5tbQpAQCAtMjQ2MSwxMiArMjQ2MSw5IEBAIC0gKHZvaWQpbG9hZFJlcXVl
c3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QKIAogc3RhdGljIE5TVVJMICpjcmVhdGVVbmlxdWVX
ZWJEYXRhVVJMKCkKIHsKLSAgICBDRlVVSURSZWYgVVVJRFJlZiA9IENGVVVJRENyZWF0ZShrQ0ZB
bGxvY2F0b3JEZWZhdWx0KTsKLSAgICBOU1N0cmluZyAqVVVJRFN0cmluZyA9IChOU1N0cmluZyAq
KUNGVVVJRENyZWF0ZVN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBVVUlEUmVmKTsKLSAgICBD
RlJlbGVhc2UoVVVJRFJlZik7Ci0gICAgTlNVUkwgKlVSTCA9IFtOU1VSTCBVUkxXaXRoU3RyaW5n
OltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiYXBwbGV3ZWJkYXRhOi8vJUAiLCBVVUlEU3Ry
aW5nXV07Ci0gICAgQ0ZSZWxlYXNlKFVVSURTdHJpbmcpOwotICAgIHJldHVybiBVUkw7CisgICAg
YXV0byBVVUlEUmVmID0gYWRvcHRDRihDRlVVSURDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCkp
OworICAgIGF1dG8gVVVJRFN0cmluZyA9IGFkb3B0Q0YoQ0ZVVUlEQ3JlYXRlU3RyaW5nKGtDRkFs
bG9jYXRvckRlZmF1bHQsIFVVSURSZWYuZ2V0KCkpKTsKKyAgICByZXR1cm4gW05TVVJMIFVSTFdp
dGhTdHJpbmc6W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJhcHBsZXdlYmRhdGE6Ly8lQCIs
IChfX2JyaWRnZSBOU1N0cmluZyAqKVVVSURTdHJpbmcuZ2V0KCldXTsKIH0KIAogLSAodm9pZClf
bG9hZERhdGE6KE5TRGF0YSAqKWRhdGEgTUlNRVR5cGU6KE5TU3RyaW5nICopTUlNRVR5cGUgdGV4
dEVuY29kaW5nTmFtZTooTlNTdHJpbmcgKillbmNvZGluZ05hbWUgYmFzZVVSTDooTlNVUkwgKili
YXNlVVJMIHVucmVhY2hhYmxlVVJMOihOU1VSTCAqKXVucmVhY2hhYmxlVVJMCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0gYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KaW5kZXggNjg1NjEwYzI1ZWMyYWU1ZmQ1
ZjUxM2JiOTMxNjJjNGUyZTYxZmI5Mi4uZTMzM2Q2ZTBmOWIzYzI1Y2JiY2RmYjliNmNhZWM0YWUx
NDQyYzlkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJW
aWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpA
QCAtODQwMyw3ICs4NDAzLDcgQEAgKyAodm9pZClfc2V0Q2FjaGVNb2RlbDooV2ViQ2FjaGVNb2Rl
bCljYWNoZU1vZGVsCiAgICAgaWYgKHNfZGlkU2V0Q2FjaGVNb2RlbCAmJiBjYWNoZU1vZGVsID09
IHNfY2FjaGVNb2RlbCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgTlNTdHJpbmcgKm5zdXJsQ2Fj
aGVEaXJlY3RvcnkgPSBDRkJyaWRnaW5nUmVsZWFzZShfQ0ZVUkxDYWNoZUNvcHlDYWNoZURpcmVj
dG9yeShbW05TVVJMQ2FjaGUgc2hhcmVkVVJMQ2FjaGVdIF9DRlVSTENhY2hlXSkpOworICAgIE5T
U3RyaW5nICpuc3VybENhY2hlRGlyZWN0b3J5ID0gYWRvcHRDRihfQ0ZVUkxDYWNoZUNvcHlDYWNo
ZURpcmVjdG9yeShbW05TVVJMQ2FjaGUgc2hhcmVkVVJMQ2FjaGVdIF9DRlVSTENhY2hlXSkpLmJy
aWRnaW5nQXV0b3JlbGVhc2UoKTsKICAgICBpZiAoIW5zdXJsQ2FjaGVEaXJlY3RvcnkpCiAgICAg
ICAgIG5zdXJsQ2FjaGVEaXJlY3RvcnkgPSBOU0hvbWVEaXJlY3RvcnkoKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWcuY3BwIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vQ0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWcuY3BwCmluZGV4
IGJjOWU2NTk0ZTc3N2JmMDA4NjgzNjJiNzUxYzI3NTE5ZDdiZWE3M2IuLjY4MWJkOWZkZDA5ZDM0
ZWJkOGQ5ZGVhNDIzZmM1ZWEwYTU3NmM5OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL0NGRGljdGlvbmFyeVByb3BlcnR5QmFnLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9DRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZy5jcHAKQEAgLTE0MSwxNyArMTQxLDE3IEBA
IHN0YXRpYyBib29sIENvbnZlcnRWYXJpYW50VG9DRlR5cGUoVkFSSUFOVCogcFZhciwgdm9pZCoq
IGNmT2JqKQogICAgICAgICAgICAgKmNmT2JqID0gKHZvaWQqKSBNYXJzaGFsbGluZ0hlbHBlcnM6
OkJTVFJUb0NGU3RyaW5nUmVmKFZfQlNUUihwVmFyKSk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICAgICAgfSBlbHNlIGlmIChWX1ZUKHBWYXIpID09IFZUX0k0KSB7Ci0gICAgICAgICAg
ICAqY2ZPYmogPSAodm9pZCopIE1hcnNoYWxsaW5nSGVscGVyczo6aW50VG9DRk51bWJlclJlZihW
X0k0KHBWYXIpKTsKKyAgICAgICAgICAgICpjZk9iaiA9ICh2b2lkKikgTWFyc2hhbGxpbmdIZWxw
ZXJzOjppbnRUb0NGTnVtYmVyUmVmKFZfSTQocFZhcikpLmxlYWZSZWYoKTsKICAgICAgICAgICAg
IHJldHVybiB0cnVlOwogICAgICAgICB9IGVsc2UgaWYgKCEhKFZfVlQocFZhcikmVlRfQVJSQVkp
KSB7CiAgICAgICAgICAgICBpZiAoKFZfVlQocFZhcikmflZUX0FSUkFZKSA9PSBWVF9CU1RSKSB7
Ci0gICAgICAgICAgICAgICAgKmNmT2JqID0gKHZvaWQqKSBNYXJzaGFsbGluZ0hlbHBlcnM6OnNh
ZmVBcnJheVRvU3RyaW5nQXJyYXkoVl9BUlJBWShwVmFyKSk7CisgICAgICAgICAgICAgICAgKmNm
T2JqID0gKHZvaWQqKSBNYXJzaGFsbGluZ0hlbHBlcnM6OnNhZmVBcnJheVRvU3RyaW5nQXJyYXko
Vl9BUlJBWShwVmFyKSkubGVha1JlZigpOwogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgICAgICAgICAgfSBlbHNlIGlmICgoVl9WVChwVmFyKSZ+VlRfQVJSQVkpID09IFZUX0k0KSB7
Ci0gICAgICAgICAgICAgICAgKmNmT2JqID0gKHZvaWQqKSBNYXJzaGFsbGluZ0hlbHBlcnM6OnNh
ZmVBcnJheVRvSW50QXJyYXkoVl9BUlJBWShwVmFyKSk7CisgICAgICAgICAgICAgICAgKmNmT2Jq
ID0gKHZvaWQqKSBNYXJzaGFsbGluZ0hlbHBlcnM6OnNhZmVBcnJheVRvSW50QXJyYXkoVl9BUlJB
WShwVmFyKSkubGVha1JlZigpOwogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAg
ICAgICAgfSBlbHNlIGlmICgoVl9WVChwVmFyKSZ+VlRfQVJSQVkpID09IFZUX1VOS05PV04pIHsK
LSAgICAgICAgICAgICAgICAqY2ZPYmogPSAodm9pZCopIE1hcnNoYWxsaW5nSGVscGVyczo6c2Fm
ZUFycmF5VG9JVW5rbm93bkFycmF5KFZfQVJSQVkocFZhcikpOworICAgICAgICAgICAgICAgICpj
Zk9iaiA9ICh2b2lkKikgTWFyc2hhbGxpbmdIZWxwZXJzOjpzYWZlQXJyYXlUb0lVbmtub3duQXJy
YXkoVl9BUlJBWShwVmFyKSkubGVha1JlZigpOwogICAgICAgICAgICAgICAgIHJldHVybiB0cnVl
OwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0xNjcsMTQgKzE2NywxMyBAQCBIUkVTVUxU
IENGRGljdGlvbmFyeVByb3BlcnR5QmFnOjpSZWFkKExQQ09MRVNUUiBwc3pQcm9wTmFtZSwgVkFS
SUFOVCAqcFZhciwgSUVycgogI2lmIFVTRShDRikKICAgICBpZiAobV9kaWN0aW9uYXJ5KSB7CiAg
ICAgICAgIHZvaWQqIHZhbHVlOwotICAgICAgICBDRlN0cmluZ1JlZiBrZXkgPSBNYXJzaGFsbGlu
Z0hlbHBlcnM6OkxQQ09MRVNUUlRvQ0ZTdHJpbmdSZWYocHN6UHJvcE5hbWUpOworICAgICAgICBh
dXRvIGtleSA9IE1hcnNoYWxsaW5nSGVscGVyczo6TFBDT0xFU1RSVG9DRlN0cmluZ1JlZihwc3pQ
cm9wTmFtZSk7CiAgICAgICAgIEhSRVNVTFQgaHIgPSBFX0ZBSUw7Ci0gICAgICAgIGlmIChDRkRp
Y3Rpb25hcnlHZXRWYWx1ZUlmUHJlc2VudChtX2RpY3Rpb25hcnkuZ2V0KCksIGtleSwgKGNvbnN0
IHZvaWQqKikgJnZhbHVlKSkgeworICAgICAgICBpZiAoQ0ZEaWN0aW9uYXJ5R2V0VmFsdWVJZlBy
ZXNlbnQobV9kaWN0aW9uYXJ5LmdldCgpLCBrZXkuZ2V0KCksIChjb25zdCB2b2lkKiopICZ2YWx1
ZSkpIHsKICAgICAgICAgICAgIGlmIChDb252ZXJ0Q0ZUeXBlVG9WYXJpYW50KHBWYXIsIHZhbHVl
KSkKICAgICAgICAgICAgICAgICBociA9IFNfT0s7CiAgICAgICAgIH0gZWxzZQogICAgICAgICAg
ICAgaHIgPSBFX0lOVkFMSURBUkc7Ci0gICAgICAgIENGUmVsZWFzZShrZXkpOwogICAgICAgICBy
ZXR1cm4gaHI7CiAgICAgfQogI2VuZGlmCkBAIC0xOTEsMTAgKzE5MCw5IEBAIEhSRVNVTFQgQ0ZE
aWN0aW9uYXJ5UHJvcGVydHlCYWc6OldyaXRlKF9Jbl8gTFBDT0xFU1RSIHBzelByb3BOYW1lLCBf
SW5fIFZBUklBTlQqCiAgICAgfQogICAgIHZvaWQqIGNmT2JqOwogICAgIGlmIChDb252ZXJ0VmFy
aWFudFRvQ0ZUeXBlKHBWYXIsICZjZk9iaikpIHsKLSAgICAgICAgQ0ZTdHJpbmdSZWYga2V5ID0g
TWFyc2hhbGxpbmdIZWxwZXJzOjpMUENPTEVTVFJUb0NGU3RyaW5nUmVmKHBzelByb3BOYW1lKTsK
LSAgICAgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUobV9kaWN0aW9uYXJ5LmdldCgpLCBrZXksIGNm
T2JqKTsKKyAgICAgICAgYXV0byBrZXkgPSBNYXJzaGFsbGluZ0hlbHBlcnM6OkxQQ09MRVNUUlRv
Q0ZTdHJpbmdSZWYocHN6UHJvcE5hbWUpOworICAgICAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZSht
X2RpY3Rpb25hcnkuZ2V0KCksIGtleS5nZXQoKSwgY2ZPYmopOwogICAgICAgICAvLyBDRkRpY3Rp
b25hcnlBZGRWYWx1ZSBzaG91bGQgYXV0b21hdGljYWxseSByZXRhaW4gdGhlIENGIG9iamVjdHMg
cGFzc2VkIGluLCBzbyByZWxlYXNlIHRoZW0gaGVyZQotICAgICAgICBDRlJlbGVhc2Uoa2V5KTsK
ICAgICAgICAgQ0ZSZWxlYXNlKGNmT2JqKTsKICAgICAgICAgcmV0dXJuIFNfT0s7CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vTWFyc2hhbGxpbmdIZWxwZXJzLmNw
cCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01hcnNoYWxsaW5nSGVscGVycy5jcHAKaW5kZXgg
MjU2MDg5MzE5MDQ1NzQ2YTkzOTVlNWRlZDZjNmE3M2NkY2RiZjhhZS4uYWI2ZDg1YmZmNzk3YTk5
YjhlOWY4YjIyYmNjZGNjNDVkMjcwOWU3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vTWFyc2hhbGxpbmdIZWxwZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9NYXJzaGFsbGluZ0hlbHBlcnMuY3BwCkBAIC01MywzOSArNTMsMzMgQEAgQlNUUiBNYXJzaGFs
bGluZ0hlbHBlcnM6OlVSTFRvQlNUUihjb25zdCBVUkwmIHVybCkKIH0KIAogI2lmIFVTRShDRikK
LUNGVVJMUmVmIE1hcnNoYWxsaW5nSGVscGVyczo6UGF0aFN0cmluZ1RvRmlsZUNGVVJMUmVmKGNv
bnN0IFN0cmluZyYgc3RyaW5nKQorUmV0YWluUHRyPENGVVJMUmVmPiBNYXJzaGFsbGluZ0hlbHBl
cnM6OlBhdGhTdHJpbmdUb0ZpbGVDRlVSTFJlZihjb25zdCBTdHJpbmcmIHN0cmluZykKIHsKLSAg
ICByZXR1cm4gQ0ZVUkxDcmVhdGVXaXRoRmlsZVN5c3RlbVBhdGgoMCwgc3RyaW5nLmNyZWF0ZUNG
U3RyaW5nKCkuZ2V0KCksIGtDRlVSTFdpbmRvd3NQYXRoU3R5bGUsIGZhbHNlKTsKKyAgICByZXR1
cm4gYWRvcHRDRihDRlVSTENyZWF0ZVdpdGhGaWxlU3lzdGVtUGF0aCgwLCBzdHJpbmcuY3JlYXRl
Q0ZTdHJpbmcoKS5nZXQoKSwga0NGVVJMV2luZG93c1BhdGhTdHlsZSwgZmFsc2UpKTsKIH0KIAog
U3RyaW5nIE1hcnNoYWxsaW5nSGVscGVyczo6RmlsZUNGVVJMUmVmVG9QYXRoU3RyaW5nKENGVVJM
UmVmIGZpbGVVUkwpCiB7Ci0gICAgQ0ZTdHJpbmdSZWYgc3RyaW5nID0gQ0ZVUkxDb3B5RmlsZVN5
c3RlbVBhdGgoZmlsZVVSTCwga0NGVVJMV2luZG93c1BhdGhTdHlsZSk7Ci0gICAgU3RyaW5nIHJl
c3VsdChzdHJpbmcpOwotICAgIENGUmVsZWFzZShzdHJpbmcpOwotICAgIHJldHVybiByZXN1bHQ7
CisgICAgcmV0dXJuIGFkb3B0Q0YoQ0ZVUkxDb3B5RmlsZVN5c3RlbVBhdGgoZmlsZVVSTCwga0NG
VVJMV2luZG93c1BhdGhTdHlsZSkpLmdldCgpOwogfQogCi1DRlVSTFJlZiBNYXJzaGFsbGluZ0hl
bHBlcnM6OkJTVFJUb0NGVVJMUmVmKEJTVFIgdXJsU3RyKQorUmV0YWluUHRyPENGVVJMUmVmPiBN
YXJzaGFsbGluZ0hlbHBlcnM6OkJTVFJUb0NGVVJMUmVmKEJTVFIgdXJsU3RyKQogewotICAgIENG
U3RyaW5nUmVmIHVybENGU3RyaW5nID0gQlNUUlRvQ0ZTdHJpbmdSZWYodXJsU3RyKTsKKyAgICBh
dXRvIHVybENGU3RyaW5nID0gQlNUUlRvQ0ZTdHJpbmdSZWYodXJsU3RyKTsKICAgICBpZiAoIXVy
bENGU3RyaW5nKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIENGVVJMUmVmIHVybFJlZiA9IENG
VVJMQ3JlYXRlV2l0aFN0cmluZygwLCB1cmxDRlN0cmluZywgMCk7Ci0gICAgQ0ZSZWxlYXNlKHVy
bENGU3RyaW5nKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gdXJsUmVm
OworICAgIHJldHVybiBhZG9wdENGKENGVVJMQ3JlYXRlV2l0aFN0cmluZyhudWxscHRyLCB1cmxD
RlN0cmluZy5nZXQoKSwgbnVsbHB0cikpOwogfQogCi1DRlN0cmluZ1JlZiBNYXJzaGFsbGluZ0hl
bHBlcnM6OkJTVFJUb0NGU3RyaW5nUmVmKEJTVFIgc3RyKQorUmV0YWluUHRyPENGU3RyaW5nUmVm
PiBNYXJzaGFsbGluZ0hlbHBlcnM6OkJTVFJUb0NGU3RyaW5nUmVmKEJTVFIgc3RyKQogewotICAg
IHJldHVybiBDRlN0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKDAsIChjb25zdCBVbmlDaGFyKiko
c3RyID8gc3RyIDogVEVYVCgiIikpLCBTeXNTdHJpbmdMZW4oc3RyKSk7CisgICAgcmV0dXJuIGFk
b3B0Q0YoQ0ZTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycygwLCAoY29uc3QgVW5pQ2hhciopKHN0
ciA/IHN0ciA6IFRFWFQoIiIpKSwgU3lzU3RyaW5nTGVuKHN0cikpKTsKIH0KIAotQ0ZTdHJpbmdS
ZWYgTWFyc2hhbGxpbmdIZWxwZXJzOjpMUENPTEVTVFJUb0NGU3RyaW5nUmVmKExQQ09MRVNUUiBz
dHIpCitSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IE1hcnNoYWxsaW5nSGVscGVyczo6TFBDT0xFU1RS
VG9DRlN0cmluZ1JlZihMUENPTEVTVFIgc3RyKQogewotICAgIHJldHVybiBDRlN0cmluZ0NyZWF0
ZVdpdGhDaGFyYWN0ZXJzKDAsIChjb25zdCBVbmlDaGFyKikoc3RyID8gc3RyIDogVEVYVCgiIikp
LCAoQ0ZJbmRleCkoc3RyID8gd2NzbGVuKHN0cikgOiAwKSk7CisgICAgcmV0dXJuIGFkb3B0Q0Yo
Q0ZTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycygwLCAoY29uc3QgVW5pQ2hhciopKHN0ciA/IHN0
ciA6IFRFWFQoIiIpKSwgKENGSW5kZXgpKHN0ciA/IHdjc2xlbihzdHIpIDogMCkpKTsKIH0KIAog
QlNUUiBNYXJzaGFsbGluZ0hlbHBlcnM6OkNGU3RyaW5nUmVmVG9CU1RSKENGU3RyaW5nUmVmIHN0
cikKQEAgLTEwMCw5ICs5NCw5IEBAIGludCBNYXJzaGFsbGluZ0hlbHBlcnM6OkNGTnVtYmVyUmVm
VG9JbnQoQ0ZOdW1iZXJSZWYgbnVtKQogICAgIHJldHVybiBudW1iZXI7CiB9CiAKLUNGTnVtYmVy
UmVmIE1hcnNoYWxsaW5nSGVscGVyczo6aW50VG9DRk51bWJlclJlZihpbnQgbnVtKQorUmV0YWlu
UHRyPENGTnVtYmVyUmVmPiBNYXJzaGFsbGluZ0hlbHBlcnM6OmludFRvQ0ZOdW1iZXJSZWYoaW50
IG51bSkKIHsKLSAgICByZXR1cm4gQ0ZOdW1iZXJDcmVhdGUoMCwga0NGTnVtYmVyU0ludDMyVHlw
ZSwgJm51bSk7CisgICAgcmV0dXJuIGFkb3B0Q0YoQ0ZOdW1iZXJDcmVhdGUoMCwga0NGTnVtYmVy
U0ludDMyVHlwZSwgJm51bSkpOwogfQogI2VuZGlmCiAKQEAgLTI0NCw3ICsyMzgsNyBAQCBTQUZF
QVJSQVkqIE1hcnNoYWxsaW5nSGVscGVyczo6aXVua25vd25BcnJheVRvU2FmZUFycmF5KENGQXJy
YXlSZWYgaW5BcnJheSkKICAgICByZXR1cm4gc2E7CiB9CiAKLUNGQXJyYXlSZWYgTWFyc2hhbGxp
bmdIZWxwZXJzOjpzYWZlQXJyYXlUb1N0cmluZ0FycmF5KFNBRkVBUlJBWSogaW5BcnJheSkKK1Jl
dGFpblB0cjxDRkFycmF5UmVmPiBNYXJzaGFsbGluZ0hlbHBlcnM6OnNhZmVBcnJheVRvU3RyaW5n
QXJyYXkoU0FGRUFSUkFZKiBpbkFycmF5KQogewogICAgIGxvbmcgbEJvdW5kPTAsIHVCb3VuZD0t
MTsKICAgICBIUkVTVUxUIGhyID0gOjpTYWZlQXJyYXlHZXRMQm91bmQoaW5BcnJheSwgMSwgJmxC
b3VuZCk7CkBAIC0yNTcsMTQgKzI1MSwxMyBAQCBDRkFycmF5UmVmIE1hcnNoYWxsaW5nSGVscGVy
czo6c2FmZUFycmF5VG9TdHJpbmdBcnJheShTQUZFQVJSQVkqIGluQXJyYXkpCiAgICAgICAgIGZv
ciAoOyBsQm91bmQgPD0gdUJvdW5kOyBsQm91bmQrKykgewogICAgICAgICAgICAgQlN0cmluZyBz
dHI7CiAgICAgICAgICAgICBociA9IDo6U2FmZUFycmF5R2V0RWxlbWVudChpbkFycmF5LCAmbEJv
dW5kLCAmc3RyKTsKLSAgICAgICAgICAgIGl0ZW1zW2xCb3VuZF0gPSBCU1RSVG9DRlN0cmluZ1Jl
ZihzdHIpOworICAgICAgICAgICAgaXRlbXNbbEJvdW5kXSA9IEJTVFJUb0NGU3RyaW5nUmVmKHN0
cikubGVha1JlZigpOwogICAgICAgICB9CiAgICAgfQotICAgIENGQXJyYXlSZWYgcmVzdWx0ID0g
Q0ZBcnJheUNyZWF0ZSgwLCAoY29uc3Qgdm9pZCoqKWl0ZW1zLmRhdGEoKSwgbGVuLCAma0NGVHlw
ZUFycmF5Q2FsbEJhY2tzKTsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiBhZG9wdENG
KENGQXJyYXlDcmVhdGUoMCwgKGNvbnN0IHZvaWQqKilpdGVtcy5kYXRhKCksIGxlbiwgJmtDRlR5
cGVBcnJheUNhbGxCYWNrcykpOwogfQogCi1DRkFycmF5UmVmIE1hcnNoYWxsaW5nSGVscGVyczo6
c2FmZUFycmF5VG9JbnRBcnJheShTQUZFQVJSQVkqIGluQXJyYXkpCitSZXRhaW5QdHI8Q0ZBcnJh
eVJlZj4gTWFyc2hhbGxpbmdIZWxwZXJzOjpzYWZlQXJyYXlUb0ludEFycmF5KFNBRkVBUlJBWSog
aW5BcnJheSkKIHsKICAgICBsb25nIGxCb3VuZD0wLCB1Qm91bmQ9LTE7CiAgICAgSFJFU1VMVCBo
ciA9IDo6U2FmZUFycmF5R2V0TEJvdW5kKGluQXJyYXksIDEsICZsQm91bmQpOwpAQCAtMjc3LDE0
ICsyNzAsMTMgQEAgQ0ZBcnJheVJlZiBNYXJzaGFsbGluZ0hlbHBlcnM6OnNhZmVBcnJheVRvSW50
QXJyYXkoU0FGRUFSUkFZKiBpbkFycmF5KQogICAgICAgICBmb3IgKDsgbEJvdW5kIDw9IHVCb3Vu
ZDsgbEJvdW5kKyspIHsKICAgICAgICAgICAgIGludCBudW0gPSAwOwogICAgICAgICAgICAgaHIg
PSA6OlNhZmVBcnJheUdldEVsZW1lbnQoaW5BcnJheSwgJmxCb3VuZCwgJm51bSk7Ci0gICAgICAg
ICAgICBpdGVtc1tsQm91bmRdID0gU1VDQ0VFREVEKGhyKSA/IGludFRvQ0ZOdW1iZXJSZWYobnVt
KSA6IGtDRk51bWJlck5hTjsKKyAgICAgICAgICAgIGl0ZW1zW2xCb3VuZF0gPSBTVUNDRUVERUQo
aHIpID8gaW50VG9DRk51bWJlclJlZihudW0pLmxlYWtSZWYoKSA6IGtDRk51bWJlck5hTjsKICAg
ICAgICAgfQogICAgIH0KLSAgICBDRkFycmF5UmVmIHJlc3VsdCA9IENGQXJyYXlDcmVhdGUoMCwg
KGNvbnN0IHZvaWQqKilpdGVtcy5kYXRhKCksIGxlbiwgJmtDRlR5cGVBcnJheUNhbGxCYWNrcyk7
Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4gYWRvcHRDRihDRkFycmF5Q3JlYXRlKDAs
IChjb25zdCB2b2lkKiopaXRlbXMuZGF0YSgpLCBsZW4sICZrQ0ZUeXBlQXJyYXlDYWxsQmFja3Mp
KTsKIH0KIAotQ0ZBcnJheVJlZiBNYXJzaGFsbGluZ0hlbHBlcnM6OnNhZmVBcnJheVRvSVVua25v
d25BcnJheShTQUZFQVJSQVkqIGluQXJyYXkpCitSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gTWFyc2hh
bGxpbmdIZWxwZXJzOjpzYWZlQXJyYXlUb0lVbmtub3duQXJyYXkoU0FGRUFSUkFZKiBpbkFycmF5
KQogewogICAgIGxvbmcgbEJvdW5kPTAsIHVCb3VuZD0tMTsKICAgICBIUkVTVUxUIGhyID0gOjpT
YWZlQXJyYXlHZXRMQm91bmQoaW5BcnJheSwgMSwgJmxCb3VuZCk7CkBAIC0yOTMsNyArMjg1LDcg
QEAgQ0ZBcnJheVJlZiBNYXJzaGFsbGluZ0hlbHBlcnM6OnNhZmVBcnJheVRvSVVua25vd25BcnJh
eShTQUZFQVJSQVkqIGluQXJyYXkpCiAgICAgbG9uZyBsZW4gPSAoU1VDQ0VFREVEKGhyKSkgPyAo
dUJvdW5kLWxCb3VuZCsxKSA6IDA7CiAgICAgdm9pZCogaXRlbXMgPSBudWxscHRyOwogICAgIGhy
ID0gOjpTYWZlQXJyYXlBY2Nlc3NEYXRhKGluQXJyYXksICZpdGVtcyk7Ci0gICAgQ0ZBcnJheVJl
ZiByZXN1bHQgPSBTVUNDRUVERUQoaHIpID8gQ0ZBcnJheUNyZWF0ZSgwLCAoY29uc3Qgdm9pZCoq
KSBpdGVtcywgbGVuLCAma0lVbmtub3duQXJyYXlDYWxsQmFja3MpIDogbnVsbHB0cjsKKyAgICBh
dXRvIHJlc3VsdCA9IFNVQ0NFRURFRChocikgPyBhZG9wdENGKENGQXJyYXlDcmVhdGUoMCwgKGNv
bnN0IHZvaWQqKikgaXRlbXMsIGxlbiwgJmtJVW5rbm93bkFycmF5Q2FsbEJhY2tzKSkgOiBudWxs
cHRyOwogICAgIGhyID0gOjpTYWZlQXJyYXlVbmFjY2Vzc0RhdGEoaW5BcnJheSk7CiAgICAgcmV0
dXJuIHJlc3VsdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01hcnNo
YWxsaW5nSGVscGVycy5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vTWFyc2hhbGxpbmdIZWxw
ZXJzLmgKaW5kZXggMmM0ODYwMzZhMGNjNzAxNWM2MDhjOGEwN2E2ZDAxNWQ0MTc5MTE1NC4uOTQx
YTQyODk4MTQxYWU1OTAzMzUxMDMwYzRlMjljODMzNjQ4YjJjOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vTWFyc2hhbGxpbmdIZWxwZXJzLmgKKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vTWFyc2hhbGxpbmdIZWxwZXJzLmgKQEAgLTI5LDYgKzI5LDcgQEAKIAogI2lm
IFVTRShDRikKICNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9Db3JlRm91bmRhdGlvbi5oPgorI2lu
Y2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBA
IC00MiwxNCArNDMsMTQgQEAgcHVibGljOgogICAgIHN0YXRpYyBCU1RSIFVSTFRvQlNUUihjb25z
dCBVUkwmKTsKIAogI2lmIFVTRShDRikKLSAgICBzdGF0aWMgQ0ZVUkxSZWYgUGF0aFN0cmluZ1Rv
RmlsZUNGVVJMUmVmKGNvbnN0IFdURjo6U3RyaW5nJik7CisgICAgc3RhdGljIFJldGFpblB0cjxD
RlVSTFJlZj4gUGF0aFN0cmluZ1RvRmlsZUNGVVJMUmVmKGNvbnN0IFdURjo6U3RyaW5nJik7CiAg
ICAgc3RhdGljIFdURjo6U3RyaW5nIEZpbGVDRlVSTFJlZlRvUGF0aFN0cmluZyhDRlVSTFJlZiBm
aWxlVVJMKTsKLSAgICBzdGF0aWMgQ0ZVUkxSZWYgQlNUUlRvQ0ZVUkxSZWYoQlNUUik7Ci0gICAg
c3RhdGljIENGU3RyaW5nUmVmIEJTVFJUb0NGU3RyaW5nUmVmKEJTVFIpOwotICAgIHN0YXRpYyBD
RlN0cmluZ1JlZiBMUENPTEVTVFJUb0NGU3RyaW5nUmVmKExQQ09MRVNUUik7CisgICAgc3RhdGlj
IFJldGFpblB0cjxDRlVSTFJlZj4gQlNUUlRvQ0ZVUkxSZWYoQlNUUik7CisgICAgc3RhdGljIFJl
dGFpblB0cjxDRlN0cmluZ1JlZj4gQlNUUlRvQ0ZTdHJpbmdSZWYoQlNUUik7CisgICAgc3RhdGlj
IFJldGFpblB0cjxDRlN0cmluZ1JlZj4gTFBDT0xFU1RSVG9DRlN0cmluZ1JlZihMUENPTEVTVFIp
OwogICAgIHN0YXRpYyBCU1RSIENGU3RyaW5nUmVmVG9CU1RSKENGU3RyaW5nUmVmKTsKICAgICBz
dGF0aWMgaW50IENGTnVtYmVyUmVmVG9JbnQoQ0ZOdW1iZXJSZWYpOwotICAgIHN0YXRpYyBDRk51
bWJlclJlZiBpbnRUb0NGTnVtYmVyUmVmKGludCk7CisgICAgc3RhdGljIFJldGFpblB0cjxDRk51
bWJlclJlZj4gaW50VG9DRk51bWJlclJlZihpbnQpOwogICAgIHN0YXRpYyBDRkFic29sdXRlVGlt
ZSBEQVRFVG9DRkFic29sdXRlVGltZShEQVRFKTsKICAgICBzdGF0aWMgREFURSBDRkFic29sdXRl
VGltZVRvREFURShDRkFic29sdXRlVGltZSk7CiAgICAgc3RhdGljIFNBRkVBUlJBWSogc3RyaW5n
QXJyYXlUb1NhZmVBcnJheShDRkFycmF5UmVmKTsKQEAgLTYzLDkgKzY0LDkgQEAgcHVibGljOgog
CiAjaWYgVVNFKENGKQogICAgIHN0YXRpYyBTQUZFQVJSQVkqIGl1bmtub3duQXJyYXlUb1NhZmVB
cnJheShDRkFycmF5UmVmKTsKLSAgICBzdGF0aWMgQ0ZBcnJheVJlZiBzYWZlQXJyYXlUb1N0cmlu
Z0FycmF5KFNBRkVBUlJBWSopOwotICAgIHN0YXRpYyBDRkFycmF5UmVmIHNhZmVBcnJheVRvSW50
QXJyYXkoU0FGRUFSUkFZKik7Ci0gICAgc3RhdGljIENGQXJyYXlSZWYgc2FmZUFycmF5VG9JVW5r
bm93bkFycmF5KFNBRkVBUlJBWSopOworICAgIHN0YXRpYyBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4g
c2FmZUFycmF5VG9TdHJpbmdBcnJheShTQUZFQVJSQVkqKTsKKyAgICBzdGF0aWMgUmV0YWluUHRy
PENGQXJyYXlSZWY+IHNhZmVBcnJheVRvSW50QXJyYXkoU0FGRUFSUkFZKik7CisgICAgc3RhdGlj
IFJldGFpblB0cjxDRkFycmF5UmVmPiBzYWZlQXJyYXlUb0lVbmtub3duQXJyYXkoU0FGRUFSUkFZ
Kik7CiAgICAgc3RhdGljIGNvbnN0IHZvaWQqIElVbmtub3duUmV0YWluQ2FsbGJhY2soQ0ZBbGxv
Y2F0b3JSZWYsIGNvbnN0IHZvaWQqKTsKICAgICBzdGF0aWMgdm9pZCBJVW5rbm93blJlbGVhc2VD
YWxsYmFjayhDRkFsbG9jYXRvclJlZiwgY29uc3Qgdm9pZCopOwogICAgIHN0YXRpYyBDRkFycmF5
Q2FsbEJhY2tzIGtJVW5rbm93bkFycmF5Q2FsbEJhY2tzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViQXBwbGljYXRpb25DYWNoZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJBcHBsaWNhdGlvbkNhY2hlLmNwcAppbmRleCBkZTEyNTBlY2RlOTc2YTYyZjIy
NThjN2RjNzRmNmU4ZWMzNzRiMmM4Li4wOGRkNDAxZWI3M2Q4NWUwZjNjZTVmMjM2YzljMDZmZjZh
NGQ2YzU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJBcHBsaWNhdGlv
bkNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJBcHBsaWNhdGlvbkNh
Y2hlLmNwcApAQCAtMjAwLDcgKzIwMCw3IEBAIEhSRVNVTFQgV2ViQXBwbGljYXRpb25DYWNoZTo6
b3JpZ2luc1dpdGhDYWNoZShJUHJvcGVydHlCYWcqKiBvcmlnaW5zKQogICAgIFJldGFpblB0cjxD
Rk11dGFibGVEaWN0aW9uYXJ5UmVmPiBkaWN0aW9uYXJ5ID0gYWRvcHRDRigKICAgICAgICAgQ0ZE
aWN0aW9uYXJ5Q3JlYXRlTXV0YWJsZSgwLCAwLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFj
a3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7CiAKLSAgICBSZXRhaW5QdHI8
Q0ZTdHJpbmdSZWY+IGtleSA9IGFkb3B0Q0YoTWFyc2hhbGxpbmdIZWxwZXJzOjpCU1RSVG9DRlN0
cmluZ1JlZihfYnN0cl90KEwib3JpZ2lucyIpKSk7CisgICAgYXV0byBrZXkgPSBNYXJzaGFsbGlu
Z0hlbHBlcnM6OkJTVFJUb0NGU3RyaW5nUmVmKF9ic3RyX3QoTCJvcmlnaW5zIikpOwogICAgIENG
RGljdGlvbmFyeUFkZFZhbHVlKGRpY3Rpb25hcnkuZ2V0KCksIGtleS5nZXQoKSwgYXJyYXlJdGVt
LmdldCgpKTsKIAogICAgIENPTVB0cjxDRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZz4gcmVzdWx0ID0g
Q0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWc6OmNyZWF0ZUluc3RhbmNlKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5jcHAKaW5kZXggOWI4NmFhNDVhZDQzOWY0ZmI5YjgyZDQxNDMwNzFkNWRiY2Yz
ODI2My4uMGU2NjkwODI3ZjgwYWIxN2UzZTMwYjdlMmE4OTI1ZDEzN2M2NmQzNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50LmNwcApAQCAtMTAzOCwyMSArMTAzOCwyMSBAQCB2b2lkIFdlYkZy
YW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZEZhaWxUb1N0YXJ0UGx1Z2luKGNvbnN0IFBsdWdp
blZpZXcmIHBsdWdpbgogICAgIGlmICghcGx1Z2luVmlldy5wbHVnaW5zUGFnZSgpLmlzTnVsbCgp
KSB7CiAgICAgICAgIFVSTCBwbHVnaW5QYWdlVVJMID0gZnJhbWUtPmRvY3VtZW50KCktPmNvbXBs
ZXRlVVJMKHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRNTFNwYWNlcyhwbHVnaW5WaWV3LnBsdWdp
bnNQYWdlKCkpKTsKICAgICAgICAgaWYgKHBsdWdpblBhZ2VVUkwucHJvdG9jb2xJc0luSFRUUEZh
bWlseSgpKSB7Ci0gICAgICAgICAgICBzdGF0aWMgQ0ZTdHJpbmdSZWYga2V5ID0gTWFyc2hhbGxp
bmdIZWxwZXJzOjpMUENPTEVTVFJUb0NGU3RyaW5nUmVmKFdlYktpdEVycm9yUGx1Z0luUGFnZVVS
TFN0cmluZ0tleSk7Ci0gICAgICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZSh1c2VySW5mby5n
ZXQoKSwga2V5LCBwbHVnaW5QYWdlVVJMLnN0cmluZygpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkp
OworICAgICAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxDRlN0cmluZ1Jl
Zj4+IGtleSA9IE1hcnNoYWxsaW5nSGVscGVyczo6TFBDT0xFU1RSVG9DRlN0cmluZ1JlZihXZWJL
aXRFcnJvclBsdWdJblBhZ2VVUkxTdHJpbmdLZXkpOworICAgICAgICAgICAgQ0ZEaWN0aW9uYXJ5
U2V0VmFsdWUodXNlckluZm8uZ2V0KCksIGtleS5nZXQoKS5nZXQoKSwgcGx1Z2luUGFnZVVSTC5z
dHJpbmcoKS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKICAgICAgICAgfQogICAgIH0KIAogICAg
IGlmICghcGx1Z2luVmlldy5taW1lVHlwZSgpLmlzTnVsbCgpKSB7Ci0gICAgICAgIHN0YXRpYyBD
RlN0cmluZ1JlZiBrZXkgPSBNYXJzaGFsbGluZ0hlbHBlcnM6OkxQQ09MRVNUUlRvQ0ZTdHJpbmdS
ZWYoV2ViS2l0RXJyb3JNSU1FVHlwZUtleSk7Ci0gICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVl
KHVzZXJJbmZvLmdldCgpLCBrZXksIHBsdWdpblZpZXcubWltZVR5cGUoKS5jcmVhdGVDRlN0cmlu
ZygpLmdldCgpKTsKKyAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxDRlN0
cmluZ1JlZj4+IGtleSA9IE1hcnNoYWxsaW5nSGVscGVyczo6TFBDT0xFU1RSVG9DRlN0cmluZ1Jl
ZihXZWJLaXRFcnJvck1JTUVUeXBlS2V5KTsKKyAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUo
dXNlckluZm8uZ2V0KCksIGtleS5nZXQoKS5nZXQoKSwgcGx1Z2luVmlldy5taW1lVHlwZSgpLmNy
ZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwogICAgIH0KIAogICAgIGlmIChwbHVnaW5WaWV3LnBsdWdp
bigpKSB7CiAgICAgICAgIFN0cmluZyBwbHVnaW5OYW1lID0gcGx1Z2luVmlldy5wbHVnaW4oKS0+
bmFtZSgpOwogICAgICAgICBpZiAoIXBsdWdpbk5hbWUuaXNOdWxsKCkpIHsKLSAgICAgICAgICAg
IHN0YXRpYyBDRlN0cmluZ1JlZiBrZXkgPSBNYXJzaGFsbGluZ0hlbHBlcnM6OkxQQ09MRVNUUlRv
Q0ZTdHJpbmdSZWYoV2ViS2l0RXJyb3JQbHVnSW5OYW1lS2V5KTsKLSAgICAgICAgICAgIENGRGlj
dGlvbmFyeVNldFZhbHVlKHVzZXJJbmZvLmdldCgpLCBrZXksIHBsdWdpbk5hbWUuY3JlYXRlQ0ZT
dHJpbmcoKS5nZXQoKSk7CisgICAgICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWlu
UHRyPENGU3RyaW5nUmVmPj4ga2V5ID0gTWFyc2hhbGxpbmdIZWxwZXJzOjpMUENPTEVTVFJUb0NG
U3RyaW5nUmVmKFdlYktpdEVycm9yUGx1Z0luTmFtZUtleSk7CisgICAgICAgICAgICBDRkRpY3Rp
b25hcnlTZXRWYWx1ZSh1c2VySW5mby5nZXQoKSwga2V5LmdldCgpLmdldCgpLCBwbHVnaW5OYW1l
LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEb3dubG9hZENGTmV0LmNwcCBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYkRvd25sb2FkQ0ZOZXQuY3BwCmluZGV4IGEzMzNhMmY2Mjc2N2Vi
YmFlYzNjODNiNmIwNzZmMGMzNWQwM2Q1MGMuLmVhMGI2NzUxYzU1NGU4MjdkYzk4MjU1Y2Q0YTcx
NTdmMWQ1YWQyYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRvd25s
b2FkQ0ZOZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRvd25sb2FkQ0ZO
ZXQuY3BwCkBAIC0xNzgsNyArMTc4LDcgQEAgSFJFU1VMVCBXZWJEb3dubG9hZDo6aW5pdFRvUmVz
dW1lV2l0aEJ1bmRsZShfSW5fIEJTVFIgYnVuZGxlUGF0aCwgX0luX29wdF8gSVdlYkQKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWRSZWNlaXZlUmVzcG9uc2VDYWxsYmFjaywg
d2lsbFJlc3VtZVdpdGhSZXNwb25zZUNhbGxiYWNrLCBkaWRSZWNlaXZlRGF0YUNhbGxiYWNrLCBz
aG91bGREZWNvZGVEYXRhT2ZNSU1FVHlwZUNhbGxiYWNrLCAKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRPYmplY3ROYW1lQ2Fs
bGJhY2ssIGRpZENyZWF0ZURlc3RpbmF0aW9uQ2FsbGJhY2ssIGRpZEZpbmlzaENhbGxiYWNrLCBk
aWRGYWlsQ2FsbGJhY2t9OwogICAgIAotICAgIFJldGFpblB0cjxDRlVSTFJlZj4gcGF0aFVSTCA9
IGFkb3B0Q0YoTWFyc2hhbGxpbmdIZWxwZXJzOjpQYXRoU3RyaW5nVG9GaWxlQ0ZVUkxSZWYoU3Ry
aW5nKGJ1bmRsZVBhdGgsIFN5c1N0cmluZ0xlbihidW5kbGVQYXRoKSkpKTsKKyAgICBhdXRvIHBh
dGhVUkwgPSBNYXJzaGFsbGluZ0hlbHBlcnM6OlBhdGhTdHJpbmdUb0ZpbGVDRlVSTFJlZihTdHJp
bmcoYnVuZGxlUGF0aCwgU3lzU3RyaW5nTGVuKGJ1bmRsZVBhdGgpKSk7CiAgICAgQVNTRVJUKHBh
dGhVUkwpOwogCiAgICAgbV9kb3dubG9hZCA9IGFkb3B0Q0YoQ0ZVUkxEb3dubG9hZENyZWF0ZVdp
dGhSZXN1bWVEYXRhKDAsIHJlc3VtZURhdGEuZ2V0KCksIHBhdGhVUkwuZ2V0KCksICZjbGllbnQp
KTsKQEAgLTI4OCw5ICsyODgsOCBAQCBIUkVTVUxUIFdlYkRvd25sb2FkOjpzZXREZXN0aW5hdGlv
bihfSW5fIEJTVFIgcGF0aCwgQk9PTCBhbGxvd092ZXJ3cml0ZSkKICAgICBtX2Rlc3RpbmF0aW9u
ID0gU3RyaW5nKHBhdGgsIFN5c1N0cmluZ0xlbihwYXRoKSk7CiAgICAgbV9idW5kbGVQYXRoID0g
bV9kZXN0aW5hdGlvbiArIERvd25sb2FkQnVuZGxlOjpmaWxlRXh0ZW5zaW9uKCk7CiAKLSAgICBD
RlVSTFJlZiBwYXRoVVJMID0gTWFyc2hhbGxpbmdIZWxwZXJzOjpQYXRoU3RyaW5nVG9GaWxlQ0ZV
UkxSZWYobV9idW5kbGVQYXRoKTsKLSAgICBDRlVSTERvd25sb2FkU2V0RGVzdGluYXRpb24obV9k
b3dubG9hZC5nZXQoKSwgcGF0aFVSTCwgISFhbGxvd092ZXJ3cml0ZSk7Ci0gICAgQ0ZSZWxlYXNl
KHBhdGhVUkwpOworICAgIGF1dG8gcGF0aFVSTCA9IE1hcnNoYWxsaW5nSGVscGVyczo6UGF0aFN0
cmluZ1RvRmlsZUNGVVJMUmVmKG1fYnVuZGxlUGF0aCk7CisgICAgQ0ZVUkxEb3dubG9hZFNldERl
c3RpbmF0aW9uKG1fZG93bmxvYWQuZ2V0KCksIHBhdGhVUkwuZ2V0KCksICEhYWxsb3dPdmVyd3Jp
dGUpOwogCiAgICAgTE9HKERvd25sb2FkLCAiV2ViRG93bmxvYWQgLSBTZXQgZGVzdGluYXRpb24g
dG8gJXMiLCBtX2J1bmRsZVBhdGguYXNjaWkoKS5kYXRhKCkpOwogCkBAIC0zNjgsOSArMzY3LDcg
QEAgQ0ZVUkxSZXF1ZXN0UmVmIFdlYkRvd25sb2FkOjp3aWxsU2VuZFJlcXVlc3QoQ0ZVUkxSZXF1
ZXN0UmVmIHJlcXVlc3QsIENGVVJMUmVzcG8KIAogICAgIENPTVB0cjxXZWJNdXRhYmxlVVJMUmVx
dWVzdD4gZmluYWxXZWJSZXF1ZXN0KEFkb3B0Q09NLCBXZWJNdXRhYmxlVVJMUmVxdWVzdDo6Y3Jl
YXRlSW5zdGFuY2UoZmluYWxSZXF1ZXN0LmdldCgpKSk7CiAgICAgbV9yZXF1ZXN0ID0gZmluYWxX
ZWJSZXF1ZXN0LmdldCgpOwotICAgIENGVVJMUmVxdWVzdFJlZiByZXN1bHQgPSBmaW5hbFdlYlJl
cXVlc3QtPnJlc291cmNlUmVxdWVzdCgpLmNmVVJMUmVxdWVzdChVcGRhdGVIVFRQQm9keSk7Ci0g
ICAgQ0ZSZXRhaW4ocmVzdWx0KTsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiByZXRh
aW5QdHIoZmluYWxXZWJSZXF1ZXN0LT5yZXNvdXJjZVJlcXVlc3QoKS5jZlVSTFJlcXVlc3QoVXBk
YXRlSFRUUEJvZHkpKS5sZWFrUmVmKCk7CiB9CiAKIHZvaWQgV2ViRG93bmxvYWQ6OmRpZFJlY2Vp
dmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShDRlVSTEF1dGhDaGFsbGVuZ2VSZWYgY2hhbGxlbmdl
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSGlzdG9yeS5jcHAgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJIaXN0b3J5LmNwcAppbmRleCA2MWMwMjZiN2FlMDBk
ODI4YjAyZGVjM2VhM2U0YjRkNzkwODhhYTExLi45ZWZhZTIyNzkzYzcwZDA4NjI4Y2M5Y2VjZTky
M2ViYzRjMjk3ZGY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJIaXN0
b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJIaXN0b3J5LmNwcApAQCAt
NjEsNyArNjEsNyBAQCBzdGF0aWMgQ09NUHRyPElQcm9wZXJ0eUJhZz4gY3JlYXRlVXNlckluZm9G
cm9tQXJyYXkoQlNUUiBub3RpZmljYXRpb25TdHIsIElXZWJIaQogICAgIFJldGFpblB0cjxDRk11
dGFibGVEaWN0aW9uYXJ5UmVmPiBkaWN0aW9uYXJ5ID0gYWRvcHRDRigKICAgICAgICAgQ0ZEaWN0
aW9uYXJ5Q3JlYXRlTXV0YWJsZSgwLCAwLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3Ms
ICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7CiAKLSAgICBSZXRhaW5QdHI8Q0ZT
dHJpbmdSZWY+IGtleSA9IGFkb3B0Q0YoTWFyc2hhbGxpbmdIZWxwZXJzOjpCU1RSVG9DRlN0cmlu
Z1JlZihub3RpZmljYXRpb25TdHIpKTsKKyAgICBhdXRvIGtleSA9IE1hcnNoYWxsaW5nSGVscGVy
czo6QlNUUlRvQ0ZTdHJpbmdSZWYobm90aWZpY2F0aW9uU3RyKTsKICAgICBDRkRpY3Rpb25hcnlB
ZGRWYWx1ZShkaWN0aW9uYXJ5LmdldCgpLCBrZXkuZ2V0KCksIGFycmF5SXRlbS5nZXQoKSk7CiAK
ICAgICBDT01QdHI8Q0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWc+IHJlc3VsdCA9IENGRGljdGlvbmFy
eVByb3BlcnR5QmFnOjpjcmVhdGVJbnN0YW5jZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViTG9jYWxpemFibGVTdHJpbmdzLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkxvY2FsaXphYmxlU3RyaW5ncy5jcHAKaW5kZXggZmM4MGZlOTZmMjk0MjZkZmUx
NWZlZGQ1MmI1NGM1NDRlZDVkZTBmYS4uZTU4ZDFiOTZlNjA3NTc1MzEzNjIwNDU4YzIxMTE4OGE1
ZTk5ZTMyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTG9jYWxpemFi
bGVTdHJpbmdzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJMb2NhbGl6YWJs
ZVN0cmluZ3MuY3BwCkBAIC05NSwxOSArOTUsMTkgQEAgTG9jYWxpemVkU3RyaW5nOjpvcGVyYXRv
ciBMUENUU1RSKCkgY29uc3QKICAgICByZXR1cm4gbV9zdHJpbmcud2lkZUNoYXJhY3RlcnMoKS5k
YXRhKCk7CiB9CiAKLXN0YXRpYyBDRkJ1bmRsZVJlZiBjcmVhdGVXZWJLaXRCdW5kbGUoKQorc3Rh
dGljIHZvaWQgY3JlYXRlV2ViS2l0QnVuZGxlKCkKIHsKLSAgICBzdGF0aWMgQ0ZCdW5kbGVSZWYg
YnVuZGxlOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8Q0ZCdW5kbGVSZWY+
PiBidW5kbGU7CiAgICAgc3RhdGljIGJvb2wgaW5pdGlhbGl6ZWQ7CiAKICAgICBpZiAoaW5pdGlh
bGl6ZWQpCi0gICAgICAgIHJldHVybiBidW5kbGU7CisgICAgICAgIHJldHVybjsKICAgICBpbml0
aWFsaXplZCA9IHRydWU7CiAKICAgICBXQ0hBUiBwYXRoU3RyW01BWF9QQVRIXTsKICAgICBEV09S
RCBsZW5ndGggPSA6OkdldE1vZHVsZUZpbGVOYW1lVyhnSW5zdGFuY2UsIHBhdGhTdHIsIE1BWF9Q
QVRIKTsKICAgICBpZiAoIWxlbmd0aCB8fCAobGVuZ3RoID09IE1BWF9QQVRIICYmIEdldExhc3RF
cnJvcigpID09IEVSUk9SX0lOU1VGRklDSUVOVF9CVUZGRVIpKQotICAgICAgICByZXR1cm4gMDsK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBib29sIGZvdW5kID0gZmFsc2U7CiAgICAg
Zm9yIChpbnQgaSA9IGxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7CkBAIC0xMjIsMjIgKzEyMiwy
MCBAQCBzdGF0aWMgQ0ZCdW5kbGVSZWYgY3JlYXRlV2ViS2l0QnVuZGxlKCkKICAgICAgICAgfQog
ICAgIH0KICAgICBpZiAoIWZvdW5kKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKICAgICBpZiAod2NzY2F0X3MocGF0aFN0ciwgTUFYX1BBVEgsIEwiXFxXZWJL
aXQucmVzb3VyY2VzIikpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0
cjsKIAogICAgIFN0cmluZyBidW5kbGVQYXRoU3RyaW5nKHBhdGhTdHIpOwogICAgIGlmICghYnVu
ZGxlUGF0aFN0cmluZykKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRy
OwogCi0gICAgQ0ZVUkxSZWYgYnVuZGxlVVJMUmVmID0gQ0ZVUkxDcmVhdGVXaXRoRmlsZVN5c3Rl
bVBhdGgoMCwgYnVuZGxlUGF0aFN0cmluZy5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBrQ0ZVUkxX
aW5kb3dzUGF0aFN0eWxlLCB0cnVlKTsKKyAgICBhdXRvIGJ1bmRsZVVSTFJlZiA9IGFkb3B0Q0Yo
Q0ZVUkxDcmVhdGVXaXRoRmlsZVN5c3RlbVBhdGgoMCwgYnVuZGxlUGF0aFN0cmluZy5jcmVhdGVD
RlN0cmluZygpLmdldCgpLCBrQ0ZVUkxXaW5kb3dzUGF0aFN0eWxlLCB0cnVlKSk7CiAgICAgaWYg
KCFidW5kbGVVUkxSZWYpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0
cjsKIAotICAgIGJ1bmRsZSA9IENGQnVuZGxlQ3JlYXRlKDAsIGJ1bmRsZVVSTFJlZik7Ci0gICAg
Q0ZSZWxlYXNlKGJ1bmRsZVVSTFJlZik7Ci0gICAgcmV0dXJuIGJ1bmRsZTsKKyAgICBidW5kbGUu
Z2V0KCkgPSBhZG9wdENGKENGQnVuZGxlQ3JlYXRlKDAsIGJ1bmRsZVVSTFJlZi5nZXQoKSkpOwog
fQogCiBzdGF0aWMgQ0ZCdW5kbGVSZWYgY2ZCdW5kbGVGb3JTdHJpbmdzQnVuZGxlKFdlYkxvY2Fs
aXphYmxlU3RyaW5nc0J1bmRsZSogc3RyaW5nc0J1bmRsZSkKZGlmZiAtLWdpdCBhL1Rvb2xzL0No
YW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBmYWYzMmU3N2Y4MWU4ZWJlYjQ1MDc2YTU0
ODA2Y2MwNGNhZDkyNTYyLi5hYjgwYmNlNDJiMWM0YzIyMDRhMmFhNjc1ZTdiMGE0OWQyMTBhNzg2
IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsNTQgQEAKKzIwMjEtMDMtMDQgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4K
KworICAgICAgICBSZWR1Y2UgdXNlIG9mIENGUmV0YWluKCkgLyBDRlJlbGVhc2UoKSAvIENGQXV0
b1JlbGVhc2UoKSBpbiBXZWJLaXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIyMjc2MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFJlZHVjZSB1c2Ugb2YgQ0ZSZXRhaW4oKSAvIENGUmVsZWFzZSgpIC8gQ0ZB
dXRvUmVsZWFzZSgpIGluIFdlYktpdCBieSB1c2luZyBSZXRhaW5QdHI8Pi4KKworICAgICAgICAq
IER1bXBSZW5kZXJUcmVlL1Rlc3ROZXRzY2FwZVBsdWdJbi9QbHVnaW5PYmplY3RNYWMubW06Cisg
ICAgICAgIChjcmVhdGVDb3JlQW5pbWF0aW9uTGF5ZXIpOgorICAgICAgICAqIER1bXBSZW5kZXJU
cmVlL21hYy9BY2Nlc3NpYmlsaXR5Q29tbW9uTWFjLm1tOgorICAgICAgICAoK1tOU1N0cmluZyBz
dHJpbmdXaXRoSlNTdHJpbmdSZWY6XSk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0R1
bXBSZW5kZXJUcmVlLm1tOgorICAgICAgICAoYWN0aXZhdGVGb250SU9TKToKKyAgICAgICAgKGR1
bXBSZW5kZXJUcmVlKToKKyAgICAgICAgKGludmFsaWRhdGVBbnlQcmV2aW91c1dhaXRUb0R1bXBX
YXRjaGRvZyk6CisgICAgICAgIChzZXRXYWl0VG9EdW1wV2F0Y2hkb2cpOgorICAgICAgICAoZHVt
cCk6CisgICAgICAgIChydW5UZXN0KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvRHVt
cFJlbmRlclRyZWVNYWMuaDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvRXZlbnRTZW5k
aW5nQ29udHJvbGxlci5tbToKKyAgICAgICAgKC1bRXZlbnRTZW5kaW5nQ29udHJvbGxlciBtb3Vz
ZVNjcm9sbEJ5WDphbmRZOmNvbnRpbnVvdXNseTpdKToKKyAgICAgICAgKC1bRXZlbnRTZW5kaW5n
Q29udHJvbGxlciBtb3VzZVNjcm9sbEJ5WDphbmRZOndpdGhXaGVlbDphbmRNb21lbnR1bVBoYXNl
czpdKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvUGl4ZWxEdW1wU3VwcG9ydE1hYy5t
bToKKyAgICAgICAgKHRha2VXaW5kb3dTbmFwc2hvdCk6CisgICAgICAgIChjcmVhdGVCaXRtYXBD
b250ZXh0RnJvbVdlYlZpZXcpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9SZXNvdXJj
ZUxvYWREZWxlZ2F0ZS5tbToKKyAgICAgICAgKC1bUmVzb3VyY2VMb2FkRGVsZWdhdGUgd2ViVmll
dzpyZXNvdXJjZTp3aWxsU2VuZFJlcXVlc3Q6cmVkaXJlY3RSZXNwb25zZTpmcm9tRGF0YVNvdXJj
ZTpdKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvVGVzdFJ1bm5lck1hYy5tbToKKyAg
ICAgICAgKFRlc3RSdW5uZXI6OmFkZERpc2FsbG93ZWRVUkwpOgorICAgICAgICAoVGVzdFJ1bm5l
cjo6c2V0V2FpdFRvRHVtcCk6CisgICAgICAgICogRm9udFdpdGhGZWF0dXJlcy9Gb250V2l0aEZl
YXR1cmVzL21haW4uY3BwOgorICAgICAgICAoY29uc3RydWN0Rm9udFdpdGhUcnVlVHlwZUZlYXR1
cmUpOgorICAgICAgICAoY29uc3RydWN0Rm9udFdpdGhPcGVuVHlwZUZlYXR1cmUpOgorICAgICAg
ICAoZHJhd1RleHQpOgorICAgICAgICAobWFpbik6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3BwOgorICAgICAgICAoV1RSOjpJ
bmplY3RlZEJ1bmRsZVBhZ2U6OmR1bXBET01Bc1dlYkFyY2hpdmUpOgorICAgICAgICAqIFdlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvaW9zL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRJT1Mu
bW06CisgICAgICAgICgrW05TU3RyaW5nIHN0cmluZ1dpdGhKU1N0cmluZ1JlZjpdKToKKyAgICAg
ICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5Q29t
bW9uTWFjLm1tOgorICAgICAgICAoK1tOU1N0cmluZyBzdHJpbmdXaXRoSlNTdHJpbmdSZWY6XSk6
CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9pb3MvSElERXZlbnRHZW5lcmF0b3IubW06Cisg
ICAgICAgICgtW0hJREV2ZW50R2VuZXJhdG9yIF9jcmVhdGVJT0hJREV2ZW50V2l0aEluZm86XSk6
CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9tYWMvRXZlbnRTZW5kZXJQcm94eS5tbToKKyAg
ICAgICAgKC1bRXZlbnRTZW5kZXJTeW50aGV0aWNFdmVudCBpbml0UHJlc3N1cmVFdmVudEF0TG9j
YXRpb246Z2xvYmFsTG9jYXRpb246c3RhZ2U6cHJlc3N1cmU6c3RhZ2VUcmFuc2l0aW9uOnBoYXNl
OnRpbWU6ZXZlbnROdW1iZXI6d2luZG93Ol0pOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIv
bWFjL1VJU2NyaXB0Q29udHJvbGxlck1hYy5tbToKKyAgICAgICAgKFdUUjo6Y2ZTdHJpbmcpOgor
ICAgICAgICAoV1RSOjpVSVNjcmlwdENvbnRyb2xsZXJNYWM6OnJlcGxhY2VUZXh0QXRSYW5nZSk6
CisKIDIwMjEtMDMtMDQgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAg
ICBbbWFjT1NdW1dLMl0gQ2hhbmdpbmcgdGhlIHN5c3RlbSBsYW5ndWFnZSBkb2VzIG5vdCB1cGRh
dGUgbmF2aWdhdG9yLmxhbmd1YWdlCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9U
ZXN0TmV0c2NhcGVQbHVnSW4vUGx1Z2luT2JqZWN0TWFjLm1tIGIvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvVGVzdE5ldHNjYXBlUGx1Z0luL1BsdWdpbk9iamVjdE1hYy5tbQppbmRleCA1OWY2NTdmZDNl
NGM1OTkzMDNjN2Y0MDQwNDEyMmNiNDRiNzljZjE0Li4yZjI2ZDg0Y2Y2ZjQ4N2I0Yjk2N2UzYjhm
ZjI0MTYwMmY3YmUwY2M0IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0TmV0
c2NhcGVQbHVnSW4vUGx1Z2luT2JqZWN0TWFjLm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L1Rlc3ROZXRzY2FwZVBsdWdJbi9QbHVnaW5PYmplY3RNYWMubW0KQEAgLTY0LDIzICs2NCwxNSBA
QCBDRlR5cGVSZWYgY3JlYXRlQ29yZUFuaW1hdGlvbkxheWVyKCkKICAgICAvLyBUdXJuIG9mZiBk
ZWZhdWx0IGFuaW1hdGlvbnMuCiAgICAgW2NhTGF5ZXIgc2V0U3R5bGU6QHsgQCJhY3Rpb25zIjog
YWN0aW9ucyB9XTsKICAgICBbY2FMYXllciBzZXROZWVkc0Rpc3BsYXlPbkJvdW5kc0NoYW5nZTpZ
RVNdOwotCiAgICAgW2NhTGF5ZXIgc2V0Qm91bmRzOkNHUmVjdE1ha2UoMCwgMCwgMjAwLCAxMDAp
XTsKICAgICBbY2FMYXllciBzZXRBbmNob3JQb2ludDpDR1BvaW50WmVyb107Ci0gICAgCi0gICAg
Q0dDb2xvclJlZiBjb2xvciA9IENHQ29sb3JDcmVhdGVHZW5lcmljUkdCKDAuNSwgMC41LCAxLCAx
KTsKLSAgICBbY2FMYXllciBzZXRCYWNrZ3JvdW5kQ29sb3I6Y29sb3JdOwotICAgIENHQ29sb3JS
ZWxlYXNlKGNvbG9yKTsKLSAgICAKKyAgICBbY2FMYXllciBzZXRCYWNrZ3JvdW5kQ29sb3I6YWRv
cHRDRihDR0NvbG9yQ3JlYXRlR2VuZXJpY1JHQigwLjUsIDAuNSwgMSwgMSkpLmdldCgpXTsKICAg
ICBbY2FMYXllciBzZXRMYXlvdXRNYW5hZ2VyOltDQUNvbnN0cmFpbnRMYXlvdXRNYW5hZ2VyIGxh
eW91dE1hbmFnZXJdXTsKIAogICAgIENBTGF5ZXIgKnN1YmxheWVyID0gW0NBTGF5ZXIgbGF5ZXJd
OwogICAgIC8vIFR1cm4gb2ZmIGRlZmF1bHQgYW5pbWF0aW9ucy4KICAgICBbc3VibGF5ZXIgc2V0
U3R5bGU6QHsgQCJhY3Rpb25zIjogYWN0aW9ucyB9XTsKLQotICAgIGNvbG9yID0gQ0dDb2xvckNy
ZWF0ZUdlbmVyaWNSR0IoMCwgMCwgMCwgMC43NSk7Ci0gICAgW3N1YmxheWVyIHNldEJhY2tncm91
bmRDb2xvcjpjb2xvcl07Ci0gICAgQ0dDb2xvclJlbGVhc2UoY29sb3IpOworICAgIFtzdWJsYXll
ciBzZXRCYWNrZ3JvdW5kQ29sb3I6YWRvcHRDRihDR0NvbG9yQ3JlYXRlR2VuZXJpY1JHQigwLCAw
LCAwLCAwLjc1KSkuZ2V0KCldOwogICAgIFtzdWJsYXllciBzZXRCb3VuZHM6Q0dSZWN0TWFrZSgw
LCAwLCAxODAsIDIwKV07CiAKICAgICBbc3VibGF5ZXIgYWRkQ29uc3RyYWludDpbQ0FDb25zdHJh
aW50IGNvbnN0cmFpbnRXaXRoQXR0cmlidXRlOmtDQUNvbnN0cmFpbnRNaW5ZCmRpZmYgLS1naXQg
YS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvQWNjZXNzaWJpbGl0eUNvbW1vbk1hYy5tbSBiL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL21hYy9BY2Nlc3NpYmlsaXR5Q29tbW9uTWFjLm1tCmluZGV4IDAz
MDY3ZTJkMDg5MjE0ZmJlODQ2NjdiMjgyNGY4Y2UzMTQ4MGY5ODcuLjU4OGM4YjE5YmY0MDRjMjIx
MTAzOTljYzRhOGMyOTBmYjA2ZGIyN2IgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L21hYy9BY2Nlc3NpYmlsaXR5Q29tbW9uTWFjLm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L21hYy9BY2Nlc3NpYmlsaXR5Q29tbW9uTWFjLm1tCkBAIC00MSw3ICs0MSw3IEBAICsgKE5TU3Ry
aW5nICopc3RyaW5nV2l0aEpTU3RyaW5nUmVmOihKU1N0cmluZ1JlZilqc1N0cmluZ1JlZgogICAg
IGlmICghanNTdHJpbmdSZWYpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICByZXR1cm4gQ0ZC
cmlkZ2luZ1JlbGVhc2UoSlNTdHJpbmdDb3B5Q0ZTdHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwg
anNTdHJpbmdSZWYpKTsKKyAgICByZXR1cm4gYWRvcHRDRihKU1N0cmluZ0NvcHlDRlN0cmluZyhr
Q0ZBbGxvY2F0b3JEZWZhdWx0LCBqc1N0cmluZ1JlZikpLmJyaWRnaW5nQXV0b3JlbGVhc2UoKTsK
IH0KIAogLSAoSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+KWNyZWF0ZUpTU3RyaW5nUmVmCmRpZmYg
LS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0gYi9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0KaW5kZXggMTRiZDFlODBkNmVm
MDkzMjg4OTkzOGNiZDQ1YmE0MzFhN2ZkNTYwNy4uNzM1MTAzOTZhNTgwYzllYmJiYzY0YTdmZTFi
ZWMyOTgyYzlmN2NjZSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBS
ZW5kZXJUcmVlLm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJl
ZS5tbQpAQCAtMjA4LDggKzIwOCw4IEBAIFdlYkZyYW1lICp0b3BMb2FkaW5nRnJhbWUgPSBuaWw7
IC8vICFuaWwgaWZmIGEgbG9hZCBpcyBpbiBwcm9ncmVzcwogUmV0YWluUHRyPE5TV2luZG93PiBt
YWluV2luZG93OwogI2VuZGlmCiAKLUNGTXV0YWJsZVNldFJlZiBkaXNhbGxvd2VkVVJMcz0gbnVs
bHB0cjsKLXN0YXRpYyBDRlJ1bkxvb3BUaW1lclJlZiB3YWl0VG9EdW1wV2F0Y2hkb2c7CitSZXRh
aW5QdHI8Q0ZNdXRhYmxlU2V0UmVmPiBkaXNhbGxvd2VkVVJMcyA9IG51bGxwdHI7CitzdGF0aWMg
UmV0YWluUHRyPENGUnVuTG9vcFRpbWVyUmVmPiB3YWl0VG9EdW1wV2F0Y2hkb2c7CiAKIHN0YXRp
YyBSZXRhaW5QdHI8V2ViVmlldz4mIGdsb2JhbFdlYlZpZXcoKQogewpAQCAtNTUwLDI2ICs1NTAs
MjQgQEAgc3RhdGljIHZvaWQgYWRqdXN0Rm9udHMoKQogCiBzdGF0aWMgdm9pZCBhY3RpdmF0ZUZv
bnRJT1MoY29uc3QgdWludDhfdCogZm9udERhdGEsIHVuc2lnbmVkIGxvbmcgbGVuZ3RoLCBzdGQ6
OnN0cmluZyBzZWN0aW9uTmFtZSkKIHsKLSAgICBDR0RhdGFQcm92aWRlclJlZiBkYXRhID0gQ0dE
YXRhUHJvdmlkZXJDcmVhdGVXaXRoRGF0YShudWxscHRyLCBmb250RGF0YSwgbGVuZ3RoLCBudWxs
cHRyKTsKKyAgICBhdXRvIGRhdGEgPSBhZG9wdENGKENHRGF0YVByb3ZpZGVyQ3JlYXRlV2l0aERh
dGEobnVsbHB0ciwgZm9udERhdGEsIGxlbmd0aCwgbnVsbHB0cikpOwogICAgIGlmICghZGF0YSkg
ewogICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkZhaWxlZCB0byBjcmVhdGUgQ0dEYXRhUHJvdmlk
ZXJSZWYgZm9yIHRoZSAlcyBmb250LlxuIiwgc2VjdGlvbk5hbWUuY19zdHIoKSk7CiAgICAgICAg
IGV4aXQoMSk7CiAgICAgfQogCi0gICAgQ0dGb250UmVmIGNnRm9udCA9IENHRm9udENyZWF0ZVdp
dGhEYXRhUHJvdmlkZXIoZGF0YSk7Ci0gICAgQ0dEYXRhUHJvdmlkZXJSZWxlYXNlKGRhdGEpOwor
ICAgIGF1dG8gY2dGb250ID0gYWRvcHRDRihDR0ZvbnRDcmVhdGVXaXRoRGF0YVByb3ZpZGVyKGRh
dGEuZ2V0KCkpKTsKICAgICBpZiAoIWNnRm9udCkgewogICAgICAgICBmcHJpbnRmKHN0ZGVyciwg
IkZhaWxlZCB0byBjcmVhdGUgQ0dGb250UmVmIGZvciB0aGUgJXMgZm9udC5cbiIsIHNlY3Rpb25O
YW1lLmNfc3RyKCkpOwogICAgICAgICBleGl0KDEpOwogICAgIH0KIAogICAgIENGRXJyb3JSZWYg
ZXJyb3IgPSBudWxscHRyOwotICAgIENURm9udE1hbmFnZXJSZWdpc3RlckdyYXBoaWNzRm9udChj
Z0ZvbnQsICZlcnJvcik7CisgICAgQ1RGb250TWFuYWdlclJlZ2lzdGVyR3JhcGhpY3NGb250KGNn
Rm9udC5nZXQoKSwgJmVycm9yKTsKICAgICBpZiAoZXJyb3IpIHsKICAgICAgICAgZnByaW50Zihz
dGRlcnIsICJGYWlsZWQgdG8gYWRkIENHRm9udCB0byBDb3JlVGV4dCBmb3IgdGhlICVzIGZvbnQ6
ICVzLlxuIiwgc2VjdGlvbk5hbWUuY19zdHIoKSwgQ0ZTdHJpbmdHZXRDU3RyaW5nUHRyKENGRXJy
b3JDb3B5RGVzY3JpcHRpb24oZXJyb3IpLCBrQ0ZTdHJpbmdFbmNvZGluZ1VURjgpKTsKICAgICAg
ICAgZXhpdCgxKTsKICAgICB9Ci0gICAgQ0dGb250UmVsZWFzZShjZ0ZvbnQpOwogfQogCiBzdGF0
aWMgdm9pZCBhY3RpdmF0ZUZvbnRzSU9TKCkKQEAgLTEyNjUsMTAgKzEyNjMsNyBAQCB2b2lkIGR1
bXBSZW5kZXJUcmVlKGludCBhcmdjLCBjb25zdCBjaGFyICphcmd2W10pCiAjZW5kaWYKIAogICAg
IC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSBtb3ZlZCBvbnRvIFRlc3RSdW5uZXIgYW5kIG1hZGUg
aW50byBhIEhhc2hTZXQKLSAgICBpZiAoZGlzYWxsb3dlZFVSTHMpIHsKLSAgICAgICAgQ0ZSZWxl
YXNlKGRpc2FsbG93ZWRVUkxzKTsKLSAgICAgICAgZGlzYWxsb3dlZFVSTHMgPSAwOwotICAgIH0K
KyAgICBkaXNhbGxvd2VkVVJMcyA9IG51bGxwdHI7CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KQogICAgIHRlYXJEb3duSU9TTGF5b3V0VGVzdENvbW11bmljYXRpb24oKTsKQEAgLTE2MTUsMTgg
KzE2MTAsMTcgQEAgc3RhdGljIHZvaWQgZHVtcEJhY2tGb3J3YXJkTGlzdEZvckFsbFdpbmRvd3Mo
KQogc3RhdGljIHZvaWQgaW52YWxpZGF0ZUFueVByZXZpb3VzV2FpdFRvRHVtcFdhdGNoZG9nKCkK
IHsKICAgICBpZiAod2FpdFRvRHVtcFdhdGNoZG9nKSB7Ci0gICAgICAgIENGUnVuTG9vcFRpbWVy
SW52YWxpZGF0ZSh3YWl0VG9EdW1wV2F0Y2hkb2cpOwotICAgICAgICBDRlJlbGVhc2Uod2FpdFRv
RHVtcFdhdGNoZG9nKTsKLSAgICAgICAgd2FpdFRvRHVtcFdhdGNoZG9nID0gTlVMTDsKKyAgICAg
ICAgQ0ZSdW5Mb29wVGltZXJJbnZhbGlkYXRlKHdhaXRUb0R1bXBXYXRjaGRvZy5nZXQoKSk7Cisg
ICAgICAgIHdhaXRUb0R1bXBXYXRjaGRvZyA9IG51bGxwdHI7CiAgICAgfQogfQogCi12b2lkIHNl
dFdhaXRUb0R1bXBXYXRjaGRvZyhDRlJ1bkxvb3BUaW1lclJlZiB0aW1lcikKK3ZvaWQgc2V0V2Fp
dFRvRHVtcFdhdGNoZG9nKFJldGFpblB0cjxDRlJ1bkxvb3BUaW1lclJlZj4mJiB0aW1lcikKIHsK
ICAgICBBU1NFUlQodGltZXIpOwogICAgIEFTU0VSVChzaG91bGRTZXRXYWl0VG9EdW1wV2F0Y2hk
b2coKSk7Ci0gICAgd2FpdFRvRHVtcFdhdGNoZG9nID0gdGltZXI7Ci0gICAgQ0ZSdW5Mb29wQWRk
VGltZXIoQ0ZSdW5Mb29wR2V0Q3VycmVudCgpLCB3YWl0VG9EdW1wV2F0Y2hkb2csIGtDRlJ1bkxv
b3BDb21tb25Nb2Rlcyk7CisgICAgd2FpdFRvRHVtcFdhdGNoZG9nID0gV1RGTW92ZSh0aW1lcik7
CisgICAgQ0ZSdW5Mb29wQWRkVGltZXIoQ0ZSdW5Mb29wR2V0Q3VycmVudCgpLCB3YWl0VG9EdW1w
V2F0Y2hkb2cuZ2V0KCksIGtDRlJ1bkxvb3BDb21tb25Nb2Rlcyk7CiB9CiAKIGJvb2wgc2hvdWxk
U2V0V2FpdFRvRHVtcFdhdGNoZG9nKCkKQEAgLTE2ODMsMTEgKzE2NzcsMTEgQEAgdm9pZCBkdW1w
KCkKICAgICAgICAgICAgIHJlc3VsdE1pbWVUeXBlID0gQCJhcHBsaWNhdGlvbi9wZGYiOwogICAg
ICAgICB9IGVsc2UgaWYgKGdUZXN0UnVubmVyLT5kdW1wRE9NQXNXZWJBcmNoaXZlKCkpIHsKICAg
ICAgICAgICAgIFdlYkFyY2hpdmUgKndlYkFyY2hpdmUgPSBbW21haW5GcmFtZSBET01Eb2N1bWVu
dF0gd2ViQXJjaGl2ZV07Ci0gICAgICAgICAgICByZXN1bHRTdHJpbmcgPSBDRkJyaWRnaW5nUmVs
ZWFzZShXZWJDb3JlVGVzdFN1cHBvcnQ6OmNyZWF0ZVhNTFN0cmluZ0Zyb21XZWJBcmNoaXZlRGF0
YSgoX19icmlkZ2UgQ0ZEYXRhUmVmKVt3ZWJBcmNoaXZlIGRhdGFdKSk7CisgICAgICAgICAgICBy
ZXN1bHRTdHJpbmcgPSBXZWJDb3JlVGVzdFN1cHBvcnQ6OmNyZWF0ZVhNTFN0cmluZ0Zyb21XZWJB
cmNoaXZlRGF0YSgoX19icmlkZ2UgQ0ZEYXRhUmVmKVt3ZWJBcmNoaXZlIGRhdGFdKTsKICAgICAg
ICAgICAgIHJlc3VsdE1pbWVUeXBlID0gQCJhcHBsaWNhdGlvbi94LXdlYmFyY2hpdmUiOwogICAg
ICAgICB9IGVsc2UgaWYgKGdUZXN0UnVubmVyLT5kdW1wU291cmNlQXNXZWJBcmNoaXZlKCkpIHsK
ICAgICAgICAgICAgIFdlYkFyY2hpdmUgKndlYkFyY2hpdmUgPSBbW21haW5GcmFtZSBkYXRhU291
cmNlXSB3ZWJBcmNoaXZlXTsKLSAgICAgICAgICAgIHJlc3VsdFN0cmluZyA9IENGQnJpZGdpbmdS
ZWxlYXNlKFdlYkNvcmVUZXN0U3VwcG9ydDo6Y3JlYXRlWE1MU3RyaW5nRnJvbVdlYkFyY2hpdmVE
YXRhKChfX2JyaWRnZSBDRkRhdGFSZWYpW3dlYkFyY2hpdmUgZGF0YV0pKTsKKyAgICAgICAgICAg
IHJlc3VsdFN0cmluZyA9IFdlYkNvcmVUZXN0U3VwcG9ydDo6Y3JlYXRlWE1MU3RyaW5nRnJvbVdl
YkFyY2hpdmVEYXRhKChfX2JyaWRnZSBDRkRhdGFSZWYpW3dlYkFyY2hpdmUgZGF0YV0pOwogICAg
ICAgICAgICAgcmVzdWx0TWltZVR5cGUgPSBAImFwcGxpY2F0aW9uL3gtd2ViYXJjaGl2ZSI7CiAg
ICAgICAgIH0gZWxzZSBpZiAoZ1Rlc3RSdW5uZXItPmlzUHJpbnRpbmcoKSkKICAgICAgICAgICAg
IHJlc3VsdFN0cmluZyA9IFttYWluRnJhbWUgcmVuZGVyVHJlZUFzRXh0ZXJuYWxSZXByZXNlbnRh
dGlvbkZvclByaW50aW5nXTsKQEAgLTE5ODIsNyArMTk3Niw3IEBAIHN0YXRpYyB2b2lkIHJ1blRl
c3QoY29uc3Qgc3RkOjpzdHJpbmcmIGlucHV0TGluZSkKICAgICBnVGVzdFJ1bm5lci0+Y2xlYXJB
bGxEYXRhYmFzZXMoKTsKIAogICAgIGlmIChkaXNhbGxvd2VkVVJMcykKLSAgICAgICAgQ0ZTZXRS
ZW1vdmVBbGxWYWx1ZXMoZGlzYWxsb3dlZFVSTHMpOworICAgICAgICBDRlNldFJlbW92ZUFsbFZh
bHVlcyhkaXNhbGxvd2VkVVJMcy5nZXQoKSk7CiAgICAgaWYgKHNob3VsZExvZ0ZyYW1lTG9hZERl
bGVnYXRlcyhwYXRoT3JVUkwuY19zdHIoKSkpCiAgICAgICAgIGdUZXN0UnVubmVyLT5zZXREdW1w
RnJhbWVMb2FkQ2FsbGJhY2tzKHRydWUpOwogCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVy
VHJlZS9tYWMvRHVtcFJlbmRlclRyZWVNYWMuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9E
dW1wUmVuZGVyVHJlZU1hYy5oCmluZGV4IDNkNDFiNWI3NGJiNzI4YTUxMmRlOTY3ZDk5NThmMDY4
ODJkODU2M2MuLjRkOWQxZDJkNzA3MzdlMGExOWQzYzQ0OTNlNzlmYzQ4NTNkMTZiOWMgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZU1hYy5oCisrKyBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZU1hYy5oCkBAIC00NCwxMCAr
NDQsMTAgQEAgT0JKQ19DTEFTUyBXZWJTY3JpcHRXb3JsZDsKIE9CSkNfQ0xBU1MgV2ViVmlldzsK
IAogZXh0ZXJuIENGTXV0YWJsZUFycmF5UmVmIG9wZW5XaW5kb3dzUmVmOwotZXh0ZXJuIENGTXV0
YWJsZVNldFJlZiBkaXNhbGxvd2VkVVJMczsKIGV4dGVybiBXZWJGcmFtZSogbWFpbkZyYW1lOwog
ZXh0ZXJuIFdlYkZyYW1lKiB0b3BMb2FkaW5nRnJhbWU7CiAjaWZkZWYgX19jcGx1c3BsdXMKK2V4
dGVybiBSZXRhaW5QdHI8Q0ZNdXRhYmxlU2V0UmVmPiBkaXNhbGxvd2VkVVJMczsKIGV4dGVybiBS
ZXRhaW5QdHI8RHVtcFJlbmRlclRyZWVEcmFnZ2luZ0luZm8+IGRyYWdnaW5nSW5mbzsKIGV4dGVy
biBSZXRhaW5QdHI8TmF2aWdhdGlvbkNvbnRyb2xsZXI+IGdOYXZpZ2F0aW9uQ29udHJvbGxlcjsK
IGV4dGVybiBSZXRhaW5QdHI8UG9saWN5RGVsZWdhdGU+IHBvbGljeURlbGVnYXRlOwpAQCAtNjAs
OSArNjAsMTAgQEAgZXh0ZXJuIFJldGFpblB0cjxVSVdpbmRvdz4gbWFpbldpbmRvdzsKIE9CSkNf
Q0xBU1MgTlNXaW5kb3c7CiBleHRlcm4gUmV0YWluUHRyPE5TV2luZG93PiBtYWluV2luZG93Owog
I2VuZGlmCi0jZW5kaWYKIAotdm9pZCBzZXRXYWl0VG9EdW1wV2F0Y2hkb2coQ0ZSdW5Mb29wVGlt
ZXJSZWYpOwordm9pZCBzZXRXYWl0VG9EdW1wV2F0Y2hkb2coUmV0YWluUHRyPENGUnVuTG9vcFRp
bWVyUmVmPiYmKTsKKyNlbmRpZiAvLyBfX2NwbHVzcGx1cworCiBib29sIHNob3VsZFNldFdhaXRU
b0R1bXBXYXRjaGRvZyh2b2lkKTsKIAogI2lmZGVmIF9fY3BsdXNwbHVzCmRpZmYgLS1naXQgYS9U
b29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5tbSBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL21hYy9FdmVudFNlbmRpbmdDb250cm9sbGVyLm1tCmluZGV4IDE2YTYw
NTFiYjdmYjY0YjlkZjBhYTllMzczMjJiODliMDExZDc1NzAuLmI4Nzk0MmIzYzZjOTI1ZjQzNTVm
NWU1MzczYTVmNmRlZWYwZmYwNjEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21h
Yy9FdmVudFNlbmRpbmdDb250cm9sbGVyLm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21h
Yy9FdmVudFNlbmRpbmdDb250cm9sbGVyLm1tCkBAIC04MDksMTYgKzgwOSwxNSBAQCAtICh2b2lk
KW1vdXNlU2Nyb2xsQnlYOihpbnQpeCBhbmRZOihpbnQpeSBjb250aW51b3VzbHk6KEJPT0wpY29u
dGludW91c2x5CiB7CiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgQ0dTY3JvbGxFdmVu
dFVuaXQgdW5pdCA9IGNvbnRpbnVvdXNseSA/IGtDR1Njcm9sbEV2ZW50VW5pdFBpeGVsIDoga0NH
U2Nyb2xsRXZlbnRVbml0TGluZTsKLSAgICBDR0V2ZW50UmVmIGNnU2Nyb2xsRXZlbnQgPSBDR0V2
ZW50Q3JlYXRlU2Nyb2xsV2hlZWxFdmVudDIoTlVMTCwgdW5pdCwgMiwgeSwgeCwgMCk7CisgICAg
YXV0byBjZ1Njcm9sbEV2ZW50ID0gYWRvcHRDRihDR0V2ZW50Q3JlYXRlU2Nyb2xsV2hlZWxFdmVu
dDIoTlVMTCwgdW5pdCwgMiwgeSwgeCwgMCkpOwogICAgIAogICAgIC8vIFNldCB0aGUgQ0dFdmVu
dCBsb2NhdGlvbiBpbiBmbGlwcGVkIGNvb3JkcyByZWxhdGl2ZSB0byB0aGUgZmlyc3Qgc2NyZWVu
LCB3aGljaAogICAgIC8vIGNvbXBlbnNhdGVzIGZvciB0aGUgYmVoYXZpb3Igb2YgK1tOU0V2ZW50
IGV2ZW50V2l0aENHRXZlbnQ6XSB3aGVuIHRoZSBldmVudCBoYXMKICAgICAvLyBubyBhc3NvY2lh
dGVkIHdpbmRvdy4gU2VlIDxyZGFyOi8vcHJvYmxlbS8xNzE4MDU5MT4uCiAgICAgQ0dQb2ludCBs
YXN0R2xvYmFsTW91c2VQb3NpdGlvbiA9IENHUG9pbnRNYWtlKGxhc3RNb3VzZVBvc2l0aW9uLngs
IFtbW05TU2NyZWVuIHNjcmVlbnNdIG9iamVjdEF0SW5kZXg6MF0gZnJhbWVdLnNpemUuaGVpZ2h0
IC0gbGFzdE1vdXNlUG9zaXRpb24ueSk7Ci0gICAgQ0dFdmVudFNldExvY2F0aW9uKGNnU2Nyb2xs
RXZlbnQsIGxhc3RHbG9iYWxNb3VzZVBvc2l0aW9uKTsKKyAgICBDR0V2ZW50U2V0TG9jYXRpb24o
Y2dTY3JvbGxFdmVudC5nZXQoKSwgbGFzdEdsb2JhbE1vdXNlUG9zaXRpb24pOwogCi0gICAgTlNF
dmVudCAqc2Nyb2xsRXZlbnQgPSBbTlNFdmVudCBldmVudFdpdGhDR0V2ZW50OmNnU2Nyb2xsRXZl
bnRdOwotICAgIENGUmVsZWFzZShjZ1Njcm9sbEV2ZW50KTsKKyAgICBOU0V2ZW50ICpzY3JvbGxF
dmVudCA9IFtOU0V2ZW50IGV2ZW50V2l0aENHRXZlbnQ6Y2dTY3JvbGxFdmVudC5nZXQoKV07CiAK
ICAgICBOU1ZpZXcgKnN1YlZpZXcgPSBbW21haW5GcmFtZSB3ZWJWaWV3XSBoaXRUZXN0OltzY3Jv
bGxFdmVudCBsb2NhdGlvbkluV2luZG93XV07CiAgICAgaWYgKHN1YlZpZXcpIHsKQEAgLTg3NSwx
OSArODc0LDE4IEBAIC0gKHZvaWQpbW91c2VTY3JvbGxCeVg6KGludCl4IGFuZFk6KGludCl5IHdp
dGhXaGVlbDooTlNTdHJpbmcqKXBoYXNlTmFtZSBhbmRNb21lCiAgICAgaWYgKG1vbWVudHVtID09
IGtDR01vbWVudHVtU2Nyb2xsUGhhc2VFbmQpCiAgICAgICAgIF9zZW50TW9tZW50dW1QaGFzZUVu
ZCA9IFlFUzsKIAotICAgIENHRXZlbnRSZWYgY2dTY3JvbGxFdmVudCA9IENHRXZlbnRDcmVhdGVT
Y3JvbGxXaGVlbEV2ZW50MihOVUxMLCBrQ0dTY3JvbGxFdmVudFVuaXRMaW5lLCAyLCB5LCB4LCAw
KTsKKyAgICBhdXRvIGNnU2Nyb2xsRXZlbnQgPSBhZG9wdENGKENHRXZlbnRDcmVhdGVTY3JvbGxX
aGVlbEV2ZW50MihOVUxMLCBrQ0dTY3JvbGxFdmVudFVuaXRMaW5lLCAyLCB5LCB4LCAwKSk7CiAK
ICAgICAvLyBTZXQgdGhlIENHRXZlbnQgbG9jYXRpb24gaW4gZmxpcHBlZCBjb29yZHMgcmVsYXRp
dmUgdG8gdGhlIGZpcnN0IHNjcmVlbiwgd2hpY2gKICAgICAvLyBjb21wZW5zYXRlcyBmb3IgdGhl
IGJlaGF2aW9yIG9mICtbTlNFdmVudCBldmVudFdpdGhDR0V2ZW50Ol0gd2hlbiB0aGUgZXZlbnQg
aGFzCiAgICAgLy8gbm8gYXNzb2NpYXRlZCB3aW5kb3cuIFNlZSA8cmRhcjovL3Byb2JsZW0vMTcx
ODA1OTE+LgogICAgIENHUG9pbnQgbGFzdEdsb2JhbE1vdXNlUG9zaXRpb24gPSBDR1BvaW50TWFr
ZShsYXN0TW91c2VQb3NpdGlvbi54LCBbW1tOU1NjcmVlbiBzY3JlZW5zXSBvYmplY3RBdEluZGV4
OjBdIGZyYW1lXS5zaXplLmhlaWdodCAtIGxhc3RNb3VzZVBvc2l0aW9uLnkpOwotICAgIENHRXZl
bnRTZXRMb2NhdGlvbihjZ1Njcm9sbEV2ZW50LCBsYXN0R2xvYmFsTW91c2VQb3NpdGlvbik7Ci0g
ICAgQ0dFdmVudFNldEludGVnZXJWYWx1ZUZpZWxkKGNnU2Nyb2xsRXZlbnQsIGtDR1Njcm9sbFdo
ZWVsRXZlbnRJc0NvbnRpbnVvdXMsIDEpOwotICAgIENHRXZlbnRTZXRJbnRlZ2VyVmFsdWVGaWVs
ZChjZ1Njcm9sbEV2ZW50LCBrQ0dTY3JvbGxXaGVlbEV2ZW50U2Nyb2xsUGhhc2UsIHBoYXNlKTsK
LSAgICBDR0V2ZW50U2V0SW50ZWdlclZhbHVlRmllbGQoY2dTY3JvbGxFdmVudCwga0NHU2Nyb2xs
V2hlZWxFdmVudE1vbWVudHVtUGhhc2UsIG1vbWVudHVtKTsKKyAgICBDR0V2ZW50U2V0TG9jYXRp
b24oY2dTY3JvbGxFdmVudC5nZXQoKSwgbGFzdEdsb2JhbE1vdXNlUG9zaXRpb24pOworICAgIENH
RXZlbnRTZXRJbnRlZ2VyVmFsdWVGaWVsZChjZ1Njcm9sbEV2ZW50LmdldCgpLCBrQ0dTY3JvbGxX
aGVlbEV2ZW50SXNDb250aW51b3VzLCAxKTsKKyAgICBDR0V2ZW50U2V0SW50ZWdlclZhbHVlRmll
bGQoY2dTY3JvbGxFdmVudC5nZXQoKSwga0NHU2Nyb2xsV2hlZWxFdmVudFNjcm9sbFBoYXNlLCBw
aGFzZSk7CisgICAgQ0dFdmVudFNldEludGVnZXJWYWx1ZUZpZWxkKGNnU2Nyb2xsRXZlbnQuZ2V0
KCksIGtDR1Njcm9sbFdoZWVsRXZlbnRNb21lbnR1bVBoYXNlLCBtb21lbnR1bSk7CiAgICAgCi0g
ICAgTlNFdmVudCogc2Nyb2xsRXZlbnQgPSBbTlNFdmVudCBldmVudFdpdGhDR0V2ZW50OmNnU2Ny
b2xsRXZlbnRdOwotICAgIENGUmVsZWFzZShjZ1Njcm9sbEV2ZW50KTsKKyAgICBOU0V2ZW50KiBz
Y3JvbGxFdmVudCA9IFtOU0V2ZW50IGV2ZW50V2l0aENHRXZlbnQ6Y2dTY3JvbGxFdmVudC5nZXQo
KV07CiAKICAgICBpZiAoTlNWaWV3KiB0YXJnZXRWaWV3ID0gW1ttYWluRnJhbWUgd2ViVmlld10g
aGl0VGVzdDpbc2Nyb2xsRXZlbnQgbG9jYXRpb25JbldpbmRvd11dKSB7CiAgICAgICAgIFtOU0Fw
cCBfc2V0Q3VycmVudEV2ZW50OnNjcm9sbEV2ZW50XTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL21hYy9QaXhlbER1bXBTdXBwb3J0TWFjLm1tIGIvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvbWFjL1BpeGVsRHVtcFN1cHBvcnRNYWMubW0KaW5kZXggYWMzMjgxYTRkZjNlMDIzNTY3MTg4
MDdmMGFkNzgyYmYxZDc0NGJiNy4uNGEyNmFhNTMxNjUwNjJjMGI4MDJiODBjMzU1OWE2ZmFkZTEw
ZDRlZiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1BpeGVsRHVtcFN1cHBv
cnRNYWMubW0KKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1BpeGVsRHVtcFN1cHBvcnRN
YWMubW0KQEAgLTc5LDEwICs3OSwxMCBAQCBzdGF0aWMgdm9pZCBwYWludFJlcGFpbnRSZWN0T3Zl
cmxheShXZWJWaWV3KiB3ZWJWaWV3LCBDR0NvbnRleHRSZWYgY29udGV4dCkKICAgICBDR0NvbnRl
eHRSZXN0b3JlR1N0YXRlKGNvbnRleHQpOwogfQogCi1zdGF0aWMgQ0dJbWFnZVJlZiB0YWtlV2lu
ZG93U25hcHNob3QoQ0dTV2luZG93SUQgd2luZG93SUQsIENHV2luZG93SW1hZ2VPcHRpb24gaW1h
Z2VPcHRpb25zKSBDRl9SRVRVUk5TX1JFVEFJTkVECitzdGF0aWMgUmV0YWluUHRyPENHSW1hZ2VS
ZWY+IHRha2VXaW5kb3dTbmFwc2hvdChDR1NXaW5kb3dJRCB3aW5kb3dJRCwgQ0dXaW5kb3dJbWFn
ZU9wdGlvbiBpbWFnZU9wdGlvbnMpCiB7CiAgICAgaW1hZ2VPcHRpb25zIHw9IGtDR1dpbmRvd0lt
YWdlQm91bmRzSWdub3JlRnJhbWluZyB8IGtDR1dpbmRvd0ltYWdlU2hvdWxkQmVPcGFxdWU7Ci0g
ICAgcmV0dXJuIENHV2luZG93TGlzdENyZWF0ZUltYWdlKENHUmVjdE51bGwsIGtDR1dpbmRvd0xp
c3RPcHRpb25JbmNsdWRpbmdXaW5kb3csIHdpbmRvd0lELCBpbWFnZU9wdGlvbnMpOworICAgIHJl
dHVybiBhZG9wdENGKENHV2luZG93TGlzdENyZWF0ZUltYWdlKENHUmVjdE51bGwsIGtDR1dpbmRv
d0xpc3RPcHRpb25JbmNsdWRpbmdXaW5kb3csIHdpbmRvd0lELCBpbWFnZU9wdGlvbnMpKTsKIH0K
IAogUmVmUHRyPEJpdG1hcENvbnRleHQ+IGNyZWF0ZUJpdG1hcENvbnRleHRGcm9tV2ViVmlldyhi
b29sIG9uc2NyZWVuLCBib29sIGluY3JlbWVudGFsUmVwYWludCwgYm9vbCBzd2VlcEhvcml6b250
YWxseSwgYm9vbCBkcmF3U2VsZWN0aW9uUmVjdCkKQEAgLTEzMiwyMiArMTMyLDE5IEBAIFJlZlB0
cjxCaXRtYXBDb250ZXh0PiBjcmVhdGVCaXRtYXBDb250ZXh0RnJvbVdlYlZpZXcoYm9vbCBvbnNj
cmVlbiwgYm9vbCBpbmNyZW1lCiAgICAgICAgICAgICAvLyBBc2sgdGhlIHdpbmRvdyBzZXJ2ZXIg
dG8gcHJvdmlkZSB1cyBhIGNvbXBvc2l0ZWQgdmVyc2lvbiBvZiB0aGUgKnJlYWwqIHdpbmRvdyBj
b250ZW50IGluY2x1ZGluZyBzdXJmYWNlcyAoaS5lLiBPcGVuR0wgY29udGVudCkKICAgICAgICAg
ICAgIC8vIE5vdGUgdGhhdCB0aGUgcmV0dXJuZWQgaW1hZ2UgbWlnaHQgZGlmZmVyIHZlcnkgc2xp
Z2h0bHkgZnJvbSB0aGUgd2luZG93IGJhY2tpbmcgYmVjYXVzZSBvZiBkaXRoZXJpbmcgYXJ0aWZh
Y3RzIGluIHRoZSB3aW5kb3cgc2VydmVyIGNvbXBvc2l0b3IuCiAgICAgICAgICAgICBOU1dpbmRv
dyAqd2luZG93ID0gW3ZpZXcgd2luZG93XTsKLSAgICAgICAgICAgIENHSW1hZ2VSZWYgaW1hZ2Ug
PSB0YWtlV2luZG93U25hcHNob3QoW3dpbmRvdyB3aW5kb3dOdW1iZXJdLCBrQ0dXaW5kb3dJbWFn
ZURlZmF1bHQpOworICAgICAgICAgICAgYXV0byBpbWFnZSA9IHRha2VXaW5kb3dTbmFwc2hvdChb
d2luZG93IHdpbmRvd051bWJlcl0sIGtDR1dpbmRvd0ltYWdlRGVmYXVsdCk7CiAKICAgICAgICAg
ICAgIGlmIChpbWFnZSkgewogICAgICAgICAgICAgICAgIC8vIFdvcmsgYXJvdW5kIDxyZGFyOi8v
cHJvYmxlbS8xNzA4NDk5Mz47IHJlLXJlcXVlc3QgdGhlIHNuYXBzaG90IGF0IGtDR1dpbmRvd0lt
YWdlTm9taW5hbFJlc29sdXRpb24gaWYgaXQgd2FzIGNhcHR1cmVkIGF0IHRoZSB3cm9uZyBzY2Fs
ZS4KICAgICAgICAgICAgICAgICBDR0Zsb2F0IGRlc2lyZWRTbmFwc2hvdFdpZHRoID0gd2luZG93
LmZyYW1lLnNpemUud2lkdGggKiBkZXZpY2VTY2FsZUZhY3RvcjsKLSAgICAgICAgICAgICAgICBp
ZiAoQ0dJbWFnZUdldFdpZHRoKGltYWdlKSAhPSBkZXNpcmVkU25hcHNob3RXaWR0aCkgewotICAg
ICAgICAgICAgICAgICAgICBDR0ltYWdlUmVsZWFzZShpbWFnZSk7CisgICAgICAgICAgICAgICAg
aWYgKENHSW1hZ2VHZXRXaWR0aChpbWFnZS5nZXQoKSkgIT0gZGVzaXJlZFNuYXBzaG90V2lkdGgp
CiAgICAgICAgICAgICAgICAgICAgIGltYWdlID0gdGFrZVdpbmRvd1NuYXBzaG90KFt3aW5kb3cg
d2luZG93TnVtYmVyXSwga0NHV2luZG93SW1hZ2VOb21pbmFsUmVzb2x1dGlvbik7Ci0gICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAoIWltYWdlKQogICAg
ICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgICAgICAgICBDR0NvbnRleHREcmF3
SW1hZ2UoY29udGV4dCwgQ0dSZWN0TWFrZSgwLCAwLCBDR0ltYWdlR2V0V2lkdGgoaW1hZ2UpLCBD
R0ltYWdlR2V0SGVpZ2h0KGltYWdlKSksIGltYWdlKTsKLSAgICAgICAgICAgIENHSW1hZ2VSZWxl
YXNlKGltYWdlKTsKKyAgICAgICAgICAgIENHQ29udGV4dERyYXdJbWFnZShjb250ZXh0LCBDR1Jl
Y3RNYWtlKDAsIDAsIENHSW1hZ2VHZXRXaWR0aChpbWFnZS5nZXQoKSksIENHSW1hZ2VHZXRIZWln
aHQoaW1hZ2UuZ2V0KCkpKSwgaW1hZ2UuZ2V0KCkpOwogCiAgICAgICAgICAgICBpZiAoW3ZpZXcg
aXNUcmFja2luZ1JlcGFpbnRzXSkKICAgICAgICAgICAgICAgICBwYWludFJlcGFpbnRSZWN0T3Zl
cmxheSh2aWV3LCBjb250ZXh0KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21h
Yy9SZXNvdXJjZUxvYWREZWxlZ2F0ZS5tbSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9SZXNv
dXJjZUxvYWREZWxlZ2F0ZS5tbQppbmRleCA1MzlkMTZhOGEwY2ZiYmFmYTBlMzQwMWY2NDgzOWUw
MjliYWYzMjkwLi4wYTgzMmE5ZGQ2MDU5YjY2NWRmNzg5NTU5MzgzMjQ2ODhhOTM5MjgzIDEwMDY0
NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvUmVzb3VyY2VMb2FkRGVsZWdhdGUubW0K
KysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1Jlc291cmNlTG9hZERlbGVnYXRlLm1tCkBA
IC0xNzIsNyArMTcyLDcgQEAgLShOU1VSTFJlcXVlc3QgKil3ZWJWaWV3OiAoV2ViVmlldyAqKXd2
IHJlc291cmNlOmlkZW50aWZpZXIgd2lsbFNlbmRSZXF1ZXN0OiAoTlMKICAgICAgICAgfQogICAg
IH0KIAotICAgIGlmIChkaXNhbGxvd2VkVVJMcyAmJiBDRlNldENvbnRhaW5zVmFsdWUoZGlzYWxs
b3dlZFVSTHMsIChfX2JyaWRnZSBDRlVSTFJlZil1cmwpKQorICAgIGlmIChkaXNhbGxvd2VkVVJM
cyAmJiBDRlNldENvbnRhaW5zVmFsdWUoZGlzYWxsb3dlZFVSTHMuZ2V0KCksIChfX2JyaWRnZSBD
RlVSTFJlZil1cmwpKQogICAgICAgICByZXR1cm4gbmlsOwogCiAgICAgYXV0byBuZXdSZXF1ZXN0
ID0gYWRvcHROUyhbcmVxdWVzdCBtdXRhYmxlQ29weV0pOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVt
cFJlbmRlclRyZWUvbWFjL1Rlc3RSdW5uZXJNYWMubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9t
YWMvVGVzdFJ1bm5lck1hYy5tbQppbmRleCAyNGNlMjJmN2ZkYTc2ZDU1Zjg2ZTZhNWQ0YTFmYmJi
YThlYzJiNjBmLi4wOWRjMmM0NTU4NWYwMDdmMDU2MTY1MWQxNzBlYzQzNGU1ZGZlZWY3IDEwMDY0
NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVGVzdFJ1bm5lck1hYy5tbQorKysgYi9U
b29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVGVzdFJ1bm5lck1hYy5tbQpAQCAtMTM3LDEzICsxMzcs
MTMgQEAgdm9pZCBUZXN0UnVubmVyOjphZGREaXNhbGxvd2VkVVJMKEpTU3RyaW5nUmVmIHVybCkK
ICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHVybENGID0gYWRvcHRDRihKU1N0cmluZ0NvcHlD
RlN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCB1cmwpKTsKIAogICAgIGlmICghZGlzYWxsb3dl
ZFVSTHMpCi0gICAgICAgIGRpc2FsbG93ZWRVUkxzID0gQ0ZTZXRDcmVhdGVNdXRhYmxlKGtDRkFs
bG9jYXRvckRlZmF1bHQsIDAsIE5VTEwpOworICAgICAgICBkaXNhbGxvd2VkVVJMcyA9IGFkb3B0
Q0YoQ0ZTZXRDcmVhdGVNdXRhYmxlKGtDRkFsbG9jYXRvckRlZmF1bHQsIDAsIE5VTEwpKTsKIAog
ICAgIC8vIENhbm9uaWNhbGl6ZSB0aGUgVVJMCiAgICAgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0ID0g
W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzooX19icmlk
Z2UgTlNTdHJpbmcgKil1cmxDRi5nZXQoKV1dOwogICAgIHJlcXVlc3QgPSBbTlNVUkxQcm90b2Nv
bCBjYW5vbmljYWxSZXF1ZXN0Rm9yUmVxdWVzdDpyZXF1ZXN0XTsKIAotICAgIENGU2V0QWRkVmFs
dWUoZGlzYWxsb3dlZFVSTHMsIChfX2JyaWRnZSBDRlVSTFJlZilbcmVxdWVzdCBVUkxdKTsKKyAg
ICBDRlNldEFkZFZhbHVlKGRpc2FsbG93ZWRVUkxzLmdldCgpLCAoX19icmlkZ2UgQ0ZVUkxSZWYp
W3JlcXVlc3QgVVJMXSk7CiB9CiAKIGJvb2wgVGVzdFJ1bm5lcjo6Y2FsbFNob3VsZENsb3NlT25X
ZWJWaWV3KCkKQEAgLTU3Nyw3ICs1NzcsNyBAQCB2b2lkIFRlc3RSdW5uZXI6OnNldFdhaXRUb0R1
bXAoYm9vbCB3YWl0VW50aWxEb25lKQogewogICAgIG1fd2FpdFRvRHVtcCA9IHdhaXRVbnRpbERv
bmU7CiAgICAgaWYgKG1fd2FpdFRvRHVtcCAmJiBtX3RpbWVvdXQgJiYgc2hvdWxkU2V0V2FpdFRv
RHVtcFdhdGNoZG9nKCkpCi0gICAgICAgIHNldFdhaXRUb0R1bXBXYXRjaGRvZyhDRlJ1bkxvb3BU
aW1lckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBDRkFic29sdXRlVGltZUdldEN1cnJlbnQo
KSArIG1fdGltZW91dCAvIDEwMDAuMCwgMCwgMCwgMCwgd2FpdFVudGlsRG9uZVdhdGNoZG9nRmly
ZWQsIE5VTEwpKTsKKyAgICAgICAgc2V0V2FpdFRvRHVtcFdhdGNoZG9nKGFkb3B0Q0YoQ0ZSdW5M
b29wVGltZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgQ0ZBYnNvbHV0ZVRpbWVHZXRDdXJy
ZW50KCkgKyBtX3RpbWVvdXQgLyAxMDAwLjAsIDAsIDAsIDAsIHdhaXRVbnRpbERvbmVXYXRjaGRv
Z0ZpcmVkLCBOVUxMKSkpOwogfQogCiBpbnQgVGVzdFJ1bm5lcjo6d2luZG93Q291bnQoKQpkaWZm
IC0tZ2l0IGEvVG9vbHMvRm9udFdpdGhGZWF0dXJlcy9Gb250V2l0aEZlYXR1cmVzL21haW4uY3Bw
IGIvVG9vbHMvRm9udFdpdGhGZWF0dXJlcy9Gb250V2l0aEZlYXR1cmVzL21haW4uY3BwCmluZGV4
IGM0ZWNkNzY1ODRiOGU3YTdiMTdmN2RjNGI0MjAxMDU0YmE1ZmIxYWQuLjBkOGM4OTVjNjhlYjAw
ZGI3ZTBlNWFmZDVlMzhhMTVjY2EyZWZlYTggMTAwNjQ0Ci0tLSBhL1Rvb2xzL0ZvbnRXaXRoRmVh
dHVyZXMvRm9udFdpdGhGZWF0dXJlcy9tYWluLmNwcAorKysgYi9Ub29scy9Gb250V2l0aEZlYXR1
cmVzL0ZvbnRXaXRoRmVhdHVyZXMvbWFpbi5jcHAKQEAgLTMyLDUwICszMiwzOSBAQAogI2luY2x1
ZGUgPEltYWdlSU8vSW1hZ2VJTy5oPgogI2luY2x1ZGUgPGZzdHJlYW0+CiAKLXN0YXRpYyBDVEZv
bnREZXNjcmlwdG9yUmVmIGNvbnN0cnVjdEZvbnRXaXRoVHJ1ZVR5cGVGZWF0dXJlKENURm9udERl
c2NyaXB0b3JSZWYgZm9udERlc2NyaXB0b3IsIGludCB0eXBlLCBpbnQgc2VsZWN0b3IpCitzdGF0
aWMgUmV0YWluUHRyPENURm9udERlc2NyaXB0b3JSZWY+IGNvbnN0cnVjdEZvbnRXaXRoVHJ1ZVR5
cGVGZWF0dXJlKENURm9udERlc2NyaXB0b3JSZWYgZm9udERlc2NyaXB0b3IsIGludCB0eXBlLCBp
bnQgc2VsZWN0b3IpCiB7Ci0gICAgQ0ZOdW1iZXJSZWYgdHlwZVZhbHVlID0gQ0ZOdW1iZXJDcmVh
dGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwga0NGTnVtYmVySW50VHlwZSwgJnR5cGUpOwotICAgIENG
TnVtYmVyUmVmIHNlbGVjdG9yVmFsdWUgPSBDRk51bWJlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZh
dWx0LCBrQ0ZOdW1iZXJJbnRUeXBlLCAmc2VsZWN0b3IpOworICAgIGF1dG8gdHlwZVZhbHVlID0g
YWRvcHRDRihDRk51bWJlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrQ0ZOdW1iZXJJbnRU
eXBlLCAmdHlwZSkpOworICAgIGF1dG8gc2VsZWN0b3JWYWx1ZSA9IGFkb3B0Q0YoQ0ZOdW1iZXJD
cmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwga0NGTnVtYmVySW50VHlwZSwgJnNlbGVjdG9yKSk7
CiAgICAgQ0ZUeXBlUmVmIGZlYXR1cmVEaWN0aW9uYXJ5S2V5c1tdID0geyBrQ1RGb250RmVhdHVy
ZVR5cGVJZGVudGlmaWVyS2V5LCBrQ1RGb250RmVhdHVyZVNlbGVjdG9ySWRlbnRpZmllcktleSB9
OwotICAgIENGVHlwZVJlZiBmZWF0dXJlRGljdGlvbmFyeVZhbHVlc1tdID0geyB0eXBlVmFsdWUs
IHNlbGVjdG9yVmFsdWUgfTsKLSAgICBDRkRpY3Rpb25hcnlSZWYgZmVhdHVyZURpY3Rpb25hcnkg
PSBDRkRpY3Rpb25hcnlDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgZmVhdHVyZURpY3Rpb25h
cnlLZXlzLCBmZWF0dXJlRGljdGlvbmFyeVZhbHVlcywgMiwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5
Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcyk7Ci0gICAgQ0ZSZWxl
YXNlKHR5cGVWYWx1ZSk7Ci0gICAgQ0ZSZWxlYXNlKHNlbGVjdG9yVmFsdWUpOworICAgIENGVHlw
ZVJlZiBmZWF0dXJlRGljdGlvbmFyeVZhbHVlc1tdID0geyB0eXBlVmFsdWUuZ2V0KCksIHNlbGVj
dG9yVmFsdWUuZ2V0KCkgfTsKKyAgICBhdXRvIGZlYXR1cmVEaWN0aW9uYXJ5ID0gYWRvcHRDRihD
RkRpY3Rpb25hcnlDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgZmVhdHVyZURpY3Rpb25hcnlL
ZXlzLCBmZWF0dXJlRGljdGlvbmFyeVZhbHVlcywgMiwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2Fs
bEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcykpOwogCi0gICAgQ0ZUeXBl
UmVmIGZlYXR1cmVTZXR0aW5nc1ZhbHVlc1tdID0geyBmZWF0dXJlRGljdGlvbmFyeSB9OwotICAg
IENGQXJyYXlSZWYgZm9udEZlYXR1cmVTZXR0aW5ncyA9IENGQXJyYXlDcmVhdGUoa0NGQWxsb2Nh
dG9yRGVmYXVsdCwgZmVhdHVyZVNldHRpbmdzVmFsdWVzLCAxLCAma0NGVHlwZUFycmF5Q2FsbEJh
Y2tzKTsKLSAgICBDRlJlbGVhc2UoZmVhdHVyZURpY3Rpb25hcnkpOworICAgIENGVHlwZVJlZiBm
ZWF0dXJlU2V0dGluZ3NWYWx1ZXNbXSA9IHsgZmVhdHVyZURpY3Rpb25hcnkuZ2V0KCkgfTsKKyAg
ICBhdXRvIGZvbnRGZWF0dXJlU2V0dGluZ3MgPSBhZG9wdENGKENGQXJyYXlDcmVhdGUoa0NGQWxs
b2NhdG9yRGVmYXVsdCwgZmVhdHVyZVNldHRpbmdzVmFsdWVzLCAxLCAma0NGVHlwZUFycmF5Q2Fs
bEJhY2tzKSk7CiAKICAgICBDRlR5cGVSZWYgZm9udERlc2NyaXB0b3JLZXlzW10gPSB7IGtDVEZv
bnRGZWF0dXJlU2V0dGluZ3NBdHRyaWJ1dGUgfTsKLSAgICBDRlR5cGVSZWYgZm9udERlc2NyaXB0
b3JWYWx1ZXNbXSA9IHsgZm9udEZlYXR1cmVTZXR0aW5ncyB9OwotICAgIENGRGljdGlvbmFyeVJl
ZiBmb250RGVzY3JpcHRvckF0dHJpYnV0ZXMgPSBDRkRpY3Rpb25hcnlDcmVhdGUoa0NGQWxsb2Nh
dG9yRGVmYXVsdCwgZm9udERlc2NyaXB0b3JLZXlzLCBmb250RGVzY3JpcHRvclZhbHVlcywgMSwg
JmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNh
bGxCYWNrcyk7Ci0gICAgQ0ZSZWxlYXNlKGZvbnRGZWF0dXJlU2V0dGluZ3MpOworICAgIENGVHlw
ZVJlZiBmb250RGVzY3JpcHRvclZhbHVlc1tdID0geyBmb250RmVhdHVyZVNldHRpbmdzLmdldCgp
IH07CisgICAgYXV0byBmb250RGVzY3JpcHRvckF0dHJpYnV0ZXMgPSBhZG9wdENGKENGRGljdGlv
bmFyeUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBmb250RGVzY3JpcHRvcktleXMsIGZvbnRE
ZXNjcmlwdG9yVmFsdWVzLCAxLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZU
eXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7CiAKLSAgICBDVEZvbnREZXNjcmlwdG9yUmVm
IG1vZGlmaWVkRm9udERlc2NyaXB0b3IgPSBDVEZvbnREZXNjcmlwdG9yQ3JlYXRlQ29weVdpdGhB
dHRyaWJ1dGVzKGZvbnREZXNjcmlwdG9yLCBmb250RGVzY3JpcHRvckF0dHJpYnV0ZXMpOwotICAg
IENGUmVsZWFzZShmb250RGVzY3JpcHRvckF0dHJpYnV0ZXMpOwotICAgIHJldHVybiBtb2RpZmll
ZEZvbnREZXNjcmlwdG9yOworICAgIHJldHVybiBhZG9wdENGKENURm9udERlc2NyaXB0b3JDcmVh
dGVDb3B5V2l0aEF0dHJpYnV0ZXMoZm9udERlc2NyaXB0b3IsIGZvbnREZXNjcmlwdG9yQXR0cmli
dXRlcy5nZXQoKSkpOwogfQogCi1zdGF0aWMgQ1RGb250RGVzY3JpcHRvclJlZiBjb25zdHJ1Y3RG
b250V2l0aE9wZW5UeXBlRmVhdHVyZShDVEZvbnREZXNjcmlwdG9yUmVmIGZvbnREZXNjcmlwdG9y
LCBDRlN0cmluZ1JlZiBmZWF0dXJlLCBpbnQgdmFsdWUpCitzdGF0aWMgUmV0YWluUHRyPENURm9u
dERlc2NyaXB0b3JSZWY+IGNvbnN0cnVjdEZvbnRXaXRoT3BlblR5cGVGZWF0dXJlKENURm9udERl
c2NyaXB0b3JSZWYgZm9udERlc2NyaXB0b3IsIENGU3RyaW5nUmVmIGZlYXR1cmUsIGludCB2YWx1
ZSkKIHsKLSAgICBDRk51bWJlclJlZiBmZWF0dXJlVmFsdWUgPSBDRk51bWJlckNyZWF0ZShrQ0ZB
bGxvY2F0b3JEZWZhdWx0LCBrQ0ZOdW1iZXJJbnRUeXBlLCAmdmFsdWUpOworICAgIGF1dG8gZmVh
dHVyZVZhbHVlID0gYWRvcHRDRihDRk51bWJlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBr
Q0ZOdW1iZXJJbnRUeXBlLCAmdmFsdWUpKTsKICAgICBDRlR5cGVSZWYgZmVhdHVyZURpY3Rpb25h
cnlLZXlzW10gPSB7IGtDVEZvbnRPcGVuVHlwZUZlYXR1cmVUYWcsIGtDVEZvbnRPcGVuVHlwZUZl
YXR1cmVWYWx1ZSB9OwotICAgIENGVHlwZVJlZiBmZWF0dXJlRGljdGlvbmFyeVZhbHVlc1tdID0g
eyBmZWF0dXJlLCBmZWF0dXJlVmFsdWUgfTsKLSAgICBDRkRpY3Rpb25hcnlSZWYgZmVhdHVyZURp
Y3Rpb25hcnkgPSBDRkRpY3Rpb25hcnlDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgZmVhdHVy
ZURpY3Rpb25hcnlLZXlzLCBmZWF0dXJlRGljdGlvbmFyeVZhbHVlcywgMiwgJmtDRlR5cGVEaWN0
aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcyk7Ci0g
ICAgQ0ZSZWxlYXNlKGZlYXR1cmVWYWx1ZSk7CisgICAgQ0ZUeXBlUmVmIGZlYXR1cmVEaWN0aW9u
YXJ5VmFsdWVzW10gPSB7IGZlYXR1cmUsIGZlYXR1cmVWYWx1ZS5nZXQoKSB9OworICAgIGF1dG8g
ZmVhdHVyZURpY3Rpb25hcnkgPSBhZG9wdENGKENGRGljdGlvbmFyeUNyZWF0ZShrQ0ZBbGxvY2F0
b3JEZWZhdWx0LCBmZWF0dXJlRGljdGlvbmFyeUtleXMsIGZlYXR1cmVEaWN0aW9uYXJ5VmFsdWVz
LCAyLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZh
bHVlQ2FsbEJhY2tzKSk7CiAKLSAgICBDRlR5cGVSZWYgZmVhdHVyZVNldHRpbmdzVmFsdWVzW10g
PSB7IGZlYXR1cmVEaWN0aW9uYXJ5IH07Ci0gICAgQ0ZBcnJheVJlZiBmb250RmVhdHVyZVNldHRp
bmdzID0gQ0ZBcnJheUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBmZWF0dXJlU2V0dGluZ3NW
YWx1ZXMsIDEsICZrQ0ZUeXBlQXJyYXlDYWxsQmFja3MpOwotICAgIENGUmVsZWFzZShmZWF0dXJl
RGljdGlvbmFyeSk7CisgICAgQ0ZUeXBlUmVmIGZlYXR1cmVTZXR0aW5nc1ZhbHVlc1tdID0geyBm
ZWF0dXJlRGljdGlvbmFyeS5nZXQoKSB9OworICAgIGF1dG8gZm9udEZlYXR1cmVTZXR0aW5ncyA9
IGFkb3B0Q0YoQ0ZBcnJheUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBmZWF0dXJlU2V0dGlu
Z3NWYWx1ZXMsIDEsICZrQ0ZUeXBlQXJyYXlDYWxsQmFja3MpKTsKIAogICAgIENGVHlwZVJlZiBm
b250RGVzY3JpcHRvcktleXNbXSA9IHsga0NURm9udEZlYXR1cmVTZXR0aW5nc0F0dHJpYnV0ZSB9
OwotICAgIENGVHlwZVJlZiBmb250RGVzY3JpcHRvclZhbHVlc1tdID0geyBmb250RmVhdHVyZVNl
dHRpbmdzIH07Ci0gICAgQ0ZEaWN0aW9uYXJ5UmVmIGZvbnREZXNjcmlwdG9yQXR0cmlidXRlcyA9
IENGRGljdGlvbmFyeUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBmb250RGVzY3JpcHRvcktl
eXMsIGZvbnREZXNjcmlwdG9yVmFsdWVzLCAxLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFj
a3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKTsKLSAgICBDRlJlbGVhc2UoZm9u
dEZlYXR1cmVTZXR0aW5ncyk7CisgICAgQ0ZUeXBlUmVmIGZvbnREZXNjcmlwdG9yVmFsdWVzW10g
PSB7IGZvbnRGZWF0dXJlU2V0dGluZ3MuZ2V0KCkgfTsKKyAgICBhdXRvIGZvbnREZXNjcmlwdG9y
QXR0cmlidXRlcyA9IGFkb3B0Q0YoQ0ZEaWN0aW9uYXJ5Q3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1
bHQsIGZvbnREZXNjcmlwdG9yS2V5cywgZm9udERlc2NyaXB0b3JWYWx1ZXMsIDEsICZrQ0ZUeXBl
RGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3Mp
KTsKIAotICAgIENURm9udERlc2NyaXB0b3JSZWYgbW9kaWZpZWRGb250RGVzY3JpcHRvciA9IENU
Rm9udERlc2NyaXB0b3JDcmVhdGVDb3B5V2l0aEF0dHJpYnV0ZXMoZm9udERlc2NyaXB0b3IsIGZv
bnREZXNjcmlwdG9yQXR0cmlidXRlcyk7Ci0gICAgQ0ZSZWxlYXNlKGZvbnREZXNjcmlwdG9yQXR0
cmlidXRlcyk7Ci0gICAgcmV0dXJuIG1vZGlmaWVkRm9udERlc2NyaXB0b3I7CisgICAgcmV0dXJu
IGFkb3B0Q0YoQ1RGb250RGVzY3JpcHRvckNyZWF0ZUNvcHlXaXRoQXR0cmlidXRlcyhmb250RGVz
Y3JpcHRvciwgZm9udERlc2NyaXB0b3JBdHRyaWJ1dGVzLmdldCgpKSk7CiB9CiAKIHN0YXRpYyB2
b2lkIGRyYXdUZXh0KENHQ29udGV4dFJlZiBjb250ZXh0LCBDVEZvbnREZXNjcmlwdG9yUmVmIGZv
bnREZXNjcmlwdG9yLCBDRlN0cmluZ1JlZiBwcmVmaXgsIENHUG9pbnQgbG9jYXRpb24pCkBAIC04
NCwzNyArNzMsMjkgQEAgc3RhdGljIHZvaWQgZHJhd1RleHQoQ0dDb250ZXh0UmVmIGNvbnRleHQs
IENURm9udERlc2NyaXB0b3JSZWYgZm9udERlc2NyaXB0b3IsIEMKICAgICBDR0NvbnRleHRTZXRU
ZXh0UG9zaXRpb24oY29udGV4dCwgbG9jYXRpb24ueCwgbG9jYXRpb24ueSk7CiAKICAgICBDR0Zs
b2F0IGZvbnRTaXplID0gMjU7Ci0gICAgQ1RGb250UmVmIGZvbnQgPSBDVEZvbnRDcmVhdGVXaXRo
Rm9udERlc2NyaXB0b3IoZm9udERlc2NyaXB0b3IsIGZvbnRTaXplLCBudWxscHRyKTsKKyAgICBh
dXRvIGZvbnQgPSBhZG9wdENGKENURm9udENyZWF0ZVdpdGhGb250RGVzY3JpcHRvcihmb250RGVz
Y3JpcHRvciwgZm9udFNpemUsIG51bGxwdHIpKTsKIAotICAgIENGTXV0YWJsZVN0cmluZ1JlZiBz
dHJpbmcgPSBDRlN0cmluZ0NyZWF0ZU11dGFibGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgMCk7Ci0g
ICAgQ0ZTdHJpbmdBcHBlbmQoc3RyaW5nLCBwcmVmaXgpOwotICAgIENGU3RyaW5nQXBwZW5kKHN0
cmluZywgQ0ZTVFIoIkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFy
c3R1dnd4eXoiKSk7CisgICAgYXV0byBzdHJpbmcgPSBhZG9wdENGKENGU3RyaW5nQ3JlYXRlTXV0
YWJsZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAwKSk7CisgICAgQ0ZTdHJpbmdBcHBlbmQoc3RyaW5n
LmdldCgpLCBwcmVmaXgpOworICAgIENGU3RyaW5nQXBwZW5kKHN0cmluZy5nZXQoKSwgQ0ZTVFIo
IkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXoiKSk7
CiAKLSAgICBDR0NvbG9yUmVmIHJlZCA9IENHQ29sb3JDcmVhdGVHZW5lcmljUkdCKDEsIDAsIDAs
IDEpOworICAgIGF1dG8gcmVkID0gYWRvcHRDRihDR0NvbG9yQ3JlYXRlR2VuZXJpY1JHQigxLCAw
LCAwLCAxKSk7CiAgICAgQ0ZUeXBlUmVmIGxpbmVLZXlzW10gPSB7IGtDVEZvcmVncm91bmRDb2xv
ckF0dHJpYnV0ZU5hbWUgfTsKLSAgICBDRlR5cGVSZWYgbGluZVZhbHVlc1tdID0geyByZWQgfTsK
LSAgICBDRkRpY3Rpb25hcnlSZWYgbGluZUF0dHJpYnV0ZXMgPSBDRkRpY3Rpb25hcnlDcmVhdGUo
a0NGQWxsb2NhdG9yRGVmYXVsdCwgbGluZUtleXMsIGxpbmVWYWx1ZXMsIDEsICZrQ0ZUeXBlRGlj
dGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpOwot
ICAgIENHQ29sb3JSZWxlYXNlKHJlZCk7CisgICAgQ0ZUeXBlUmVmIGxpbmVWYWx1ZXNbXSA9IHsg
cmVkLmdldCgpIH07CisgICAgYXV0byBsaW5lQXR0cmlidXRlcyA9IGFkb3B0Q0YoQ0ZEaWN0aW9u
YXJ5Q3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGxpbmVLZXlzLCBsaW5lVmFsdWVzLCAxLCAm
a0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2Fs
bEJhY2tzKSk7CiAKLSAgICBDRkF0dHJpYnV0ZWRTdHJpbmdSZWYgYXR0cmlidXRlZFN0cmluZyA9
IENGQXR0cmlidXRlZFN0cmluZ0NyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBzdHJpbmcsIGxp
bmVBdHRyaWJ1dGVzKTsKLSAgICBDRlJlbGVhc2UobGluZUF0dHJpYnV0ZXMpOworICAgIGF1dG8g
YXR0cmlidXRlZFN0cmluZyA9IGFkb3B0Q0YoQ0ZBdHRyaWJ1dGVkU3RyaW5nQ3JlYXRlKGtDRkFs
bG9jYXRvckRlZmF1bHQsIHN0cmluZy5nZXQoKSwgbGluZUF0dHJpYnV0ZXMuZ2V0KCkpKTsKIAot
ICAgIENGTXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmdSZWYgbXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcg
PSBDRkF0dHJpYnV0ZWRTdHJpbmdDcmVhdGVNdXRhYmxlQ29weShrQ0ZBbGxvY2F0b3JEZWZhdWx0
LCAwLCBhdHRyaWJ1dGVkU3RyaW5nKTsKLSAgICBDRlJlbGVhc2UoYXR0cmlidXRlZFN0cmluZyk7
CisgICAgYXV0byBtdXRhYmxlQXR0cmlidXRlZFN0cmluZyA9IGFkb3B0Q0YoQ0ZBdHRyaWJ1dGVk
U3RyaW5nQ3JlYXRlTXV0YWJsZUNvcHkoa0NGQWxsb2NhdG9yRGVmYXVsdCwgMCwgYXR0cmlidXRl
ZFN0cmluZy5nZXQoKSkpOwogCi0gICAgQ1RGb250UmVmIG1vbm9zcGFjZUZvbnQgPSBDVEZvbnRD
cmVhdGVXaXRoTmFtZShDRlNUUigiQ291cmllciIpLCBmb250U2l6ZSwgbnVsbHB0cik7Ci0gICAg
Q0ZBdHRyaWJ1dGVkU3RyaW5nU2V0QXR0cmlidXRlKG11dGFibGVBdHRyaWJ1dGVkU3RyaW5nLCBD
RlJhbmdlTWFrZSgwLCBDRlN0cmluZ0dldExlbmd0aChwcmVmaXgpKSwga0NURm9udEF0dHJpYnV0
ZU5hbWUsIG1vbm9zcGFjZUZvbnQpOwotICAgIENGUmVsZWFzZShtb25vc3BhY2VGb250KTsKKyAg
ICBhdXRvIG1vbm9zcGFjZUZvbnQgPSBhZG9wdENGKENURm9udENyZWF0ZVdpdGhOYW1lKENGU1RS
KCJDb3VyaWVyIiksIGZvbnRTaXplLCBudWxscHRyKSk7CisgICAgQ0ZBdHRyaWJ1dGVkU3RyaW5n
U2V0QXR0cmlidXRlKG11dGFibGVBdHRyaWJ1dGVkU3RyaW5nLmdldCgpLCBDRlJhbmdlTWFrZSgw
LCBDRlN0cmluZ0dldExlbmd0aChwcmVmaXgpKSwga0NURm9udEF0dHJpYnV0ZU5hbWUsIG1vbm9z
cGFjZUZvbnQuZ2V0KCkpOwogCi0gICAgQ0ZBdHRyaWJ1dGVkU3RyaW5nU2V0QXR0cmlidXRlKG11
dGFibGVBdHRyaWJ1dGVkU3RyaW5nLCBDRlJhbmdlTWFrZShDRlN0cmluZ0dldExlbmd0aChwcmVm
aXgpLCBDRlN0cmluZ0dldExlbmd0aChzdHJpbmcpIC0gQ0ZTdHJpbmdHZXRMZW5ndGgocHJlZml4
KSksIGtDVEZvbnRBdHRyaWJ1dGVOYW1lLCBmb250KTsKLSAgICBDRlJlbGVhc2Uoc3RyaW5nKTsK
LSAgICBDRlJlbGVhc2UoZm9udCk7CisgICAgQ0ZBdHRyaWJ1dGVkU3RyaW5nU2V0QXR0cmlidXRl
KG11dGFibGVBdHRyaWJ1dGVkU3RyaW5nLmdldCgpLCBDRlJhbmdlTWFrZShDRlN0cmluZ0dldExl
bmd0aChwcmVmaXgpLCBDRlN0cmluZ0dldExlbmd0aChzdHJpbmcuZ2V0KCkpIC0gQ0ZTdHJpbmdH
ZXRMZW5ndGgocHJlZml4KSksIGtDVEZvbnRBdHRyaWJ1dGVOYW1lLCBmb250LmdldCgpKTsKIAot
ICAgIENUTGluZVJlZiBsaW5lID0gQ1RMaW5lQ3JlYXRlV2l0aEF0dHJpYnV0ZWRTdHJpbmcobXV0
YWJsZUF0dHJpYnV0ZWRTdHJpbmcpOwotICAgIENGUmVsZWFzZShtdXRhYmxlQXR0cmlidXRlZFN0
cmluZyk7CisgICAgYXV0byBsaW5lID0gYWRvcHRDRihDVExpbmVDcmVhdGVXaXRoQXR0cmlidXRl
ZFN0cmluZyhtdXRhYmxlQXR0cmlidXRlZFN0cmluZy5nZXQoKSkpOwogCi0gICAgQ1RMaW5lRHJh
dyhsaW5lLCBjb250ZXh0KTsKLSAgICBDRlJlbGVhc2UobGluZSk7CisgICAgQ1RMaW5lRHJhdyhs
aW5lLmdldCgpLCBjb250ZXh0KTsKIH0KIAogaW50IG1haW4oaW50IGFyZ2MsIGNvbnN0IGNoYXIg
KiBhcmd2W10pCkBAIC0xMjIsNyArMTAzLDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNvbnN0IGNo
YXIgKiBhcmd2W10pCiAgICAgc2l6ZV90IHdpZHRoID0gMjUwMDsKICAgICBzaXplX3QgaGVpZ2h0
ID0gMjAwMDsKICAgICBDR0NvbG9yU3BhY2VSZWYgY29sb3JTcGFjZSA9IENHQ29sb3JTcGFjZUNy
ZWF0ZURldmljZVJHQigpOwotICAgIENHQ29udGV4dFJlZiBjb250ZXh0ID0gQ0dCaXRtYXBDb250
ZXh0Q3JlYXRlKG51bGxwdHIsIHdpZHRoLCBoZWlnaHQsIDgsIHdpZHRoICogNCwgY29sb3JTcGFj
ZSwga0NHSW1hZ2VBbHBoYU5vbmVTa2lwTGFzdCk7CisgICAgYXV0byBjb250ZXh0ID0gYWRvcHRD
RihDR0JpdG1hcENvbnRleHRDcmVhdGUobnVsbHB0ciwgd2lkdGgsIGhlaWdodCwgOCwgd2lkdGgg
KiA0LCBjb2xvclNwYWNlLCBrQ0dJbWFnZUFscGhhTm9uZVNraXBMYXN0KSk7CiAgICAgQ0dDb2xv
clNwYWNlUmVsZWFzZShjb2xvclNwYWNlKTsKICAgICBUeXBlIHR5cGUgPSBUeXBlOjpUcnVlVHlw
ZTsKICAgICBjb25zdCBzdGQ6OnZlY3Rvcjx1aW50OF90PiBmb250VmVjdG9yID0gZ2VuZXJhdGVG
b250KHR5cGUpOwpAQCAtMTMxLDQ5ICsxMTIsNDAgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNvbnN0
IGNoYXIgKiBhcmd2W10pCiAgICAgICAgIG91dHB1dEZpbGUgPDwgYjsKICAgICBvdXRwdXRGaWxl
LmNsb3NlKCk7CiAgICAgCi0gICAgQ0ZEYXRhUmVmIGZvbnREYXRhID0gQ0ZEYXRhQ3JlYXRlKGtD
RkFsbG9jYXRvckRlZmF1bHQsIGZvbnRWZWN0b3IuZGF0YSgpLCBmb250VmVjdG9yLnNpemUoKSk7
Ci0gICAgQ1RGb250RGVzY3JpcHRvclJlZiBmb250RGVzY3JpcHRvciA9IENURm9udE1hbmFnZXJD
cmVhdGVGb250RGVzY3JpcHRvckZyb21EYXRhKGZvbnREYXRhKTsKLSAgICBDRlJlbGVhc2UoZm9u
dERhdGEpOworICAgIGF1dG8gZm9udERhdGEgPSBhZG9wdENGKENGRGF0YUNyZWF0ZShrQ0ZBbGxv
Y2F0b3JEZWZhdWx0LCBmb250VmVjdG9yLmRhdGEoKSwgZm9udFZlY3Rvci5zaXplKCkpKTsKKyAg
ICBhdXRvIGZvbnREZXNjcmlwdG9yID0gYWRvcHRDRihDVEZvbnRNYW5hZ2VyQ3JlYXRlRm9udERl
c2NyaXB0b3JGcm9tRGF0YShmb250RGF0YS5nZXQoKSkpOwogCiAgICAgaWYgKHR5cGUgPT0gVHlw
ZTo6T3BlblR5cGUpIHsKICAgICAgICAgQ0ZUeXBlUmVmIGZlYXR1cmVWYWx1ZXNPcGVuVHlwZVtd
ID0geyBDRlNUUigibGlnYSIpLCBDRlNUUigiY2xpZyIpLCBDRlNUUigiZGxpZyIpLCBDRlNUUigi
aGxpZyIpLCBDRlNUUigiY2FsdCIpLCBDRlNUUigic3VicyIpLCBDRlNUUigic3VwcyIpLCBDRlNU
Uigic21jcCIpLCBDRlNUUigiYzJzYyIpLCBDRlNUUigicGNhcCIpLCBDRlNUUigiYzJwYyIpLCBD
RlNUUigidW5pYyIpLCBDRlNUUigidGl0bCIpLCBDRlNUUigib251bSIpLCBDRlNUUigicG51bSIp
LCBDRlNUUigidG51bSIpLCBDRlNUUigiZnJhYyIpLCBDRlNUUigiYWZyYyIpLCBDRlNUUigib3Jk
biIpLCBDRlNUUigiemVybyIpLCBDRlNUUigiaGlzdCIpLCBDRlNUUigianA3OCIpLCBDRlNUUigi
anA4MyIpLCBDRlNUUigianA5MCIpLCBDRlNUUigianAwNCIpLCBDRlNUUigic21wbCIpLCBDRlNU
UigidHJhZCIpLCBDRlNUUigiZndpZCIpLCBDRlNUUigicHdpZCIpLCBDRlNUUigicnVieSIpIH07
Ci0gICAgICAgIENGQXJyYXlSZWYgZmVhdHVyZXMgPSBDRkFycmF5Q3JlYXRlKGtDRkFsbG9jYXRv
ckRlZmF1bHQsIGZlYXR1cmVWYWx1ZXNPcGVuVHlwZSwgMzAsICZrQ0ZUeXBlQXJyYXlDYWxsQmFj
a3MpOwotCi0gICAgICAgIGZvciAoQ0ZJbmRleCBpID0gMDsgaSA8IENGQXJyYXlHZXRDb3VudChm
ZWF0dXJlcyk7ICsraSkgewotICAgICAgICAgICAgQ0ZTdHJpbmdSZWYgZmVhdHVyZSA9IHN0YXRp
Y19jYXN0PENGU3RyaW5nUmVmPihDRkFycmF5R2V0VmFsdWVBdEluZGV4KGZlYXR1cmVzLCBpKSk7
Ci0gICAgICAgICAgICBDVEZvbnREZXNjcmlwdG9yUmVmIG1vZGlmaWVkRm9udERlc2NyaXB0b3Ig
PSBjb25zdHJ1Y3RGb250V2l0aE9wZW5UeXBlRmVhdHVyZShmb250RGVzY3JpcHRvciwgZmVhdHVy
ZSwgMSk7Ci0gICAgICAgICAgICBDRk11dGFibGVTdHJpbmdSZWYgcHJlZml4ID0gQ0ZTdHJpbmdD
cmVhdGVNdXRhYmxlKGtDRkFsbG9jYXRvckRlZmF1bHQsIDApOwotICAgICAgICAgICAgQ0ZTdHJp
bmdBcHBlbmQocHJlZml4LCBmZWF0dXJlKTsKLSAgICAgICAgICAgIENGU3RyaW5nQXBwZW5kKHBy
ZWZpeCwgQ0ZTVFIoIiAgKG9uKTogIikpOwotICAgICAgICAgICAgZHJhd1RleHQoY29udGV4dCwg
bW9kaWZpZWRGb250RGVzY3JpcHRvciwgcHJlZml4LCBDR1BvaW50TWFrZSgyNSwgMTk1MCAtIDUw
ICogaSkpOwotICAgICAgICAgICAgQ0ZSZWxlYXNlKHByZWZpeCk7Ci0gICAgICAgICAgICBDRlJl
bGVhc2UobW9kaWZpZWRGb250RGVzY3JpcHRvcik7Ci0KLSAgICAgICAgICAgIG1vZGlmaWVkRm9u
dERlc2NyaXB0b3IgPSBjb25zdHJ1Y3RGb250V2l0aE9wZW5UeXBlRmVhdHVyZShmb250RGVzY3Jp
cHRvciwgZmVhdHVyZSwgMCk7Ci0gICAgICAgICAgICBwcmVmaXggPSBDRlN0cmluZ0NyZWF0ZU11
dGFibGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgMCk7Ci0gICAgICAgICAgICBDRlN0cmluZ0FwcGVu
ZChwcmVmaXgsIGZlYXR1cmUpOwotICAgICAgICAgICAgQ0ZTdHJpbmdBcHBlbmQocHJlZml4LCBD
RlNUUigiIChvZmYpOiAiKSk7Ci0gICAgICAgICAgICBkcmF3VGV4dChjb250ZXh0LCBtb2RpZmll
ZEZvbnREZXNjcmlwdG9yLCBwcmVmaXgsIENHUG9pbnRNYWtlKDI1LCAxOTI1IC0gNTAgKiBpKSk7
Ci0gICAgICAgICAgICBDRlJlbGVhc2UocHJlZml4KTsKLSAgICAgICAgICAgIENGUmVsZWFzZSht
b2RpZmllZEZvbnREZXNjcmlwdG9yKTsKKyAgICAgICAgYXV0byBmZWF0dXJlcyA9IGFkb3B0Q0Yo
Q0ZBcnJheUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBmZWF0dXJlVmFsdWVzT3BlblR5cGUs
IDMwLCAma0NGVHlwZUFycmF5Q2FsbEJhY2tzKSk7CisKKyAgICAgICAgZm9yIChDRkluZGV4IGkg
PSAwOyBpIDwgQ0ZBcnJheUdldENvdW50KGZlYXR1cmVzLmdldCgpKTsgKytpKSB7CisgICAgICAg
ICAgICBDRlN0cmluZ1JlZiBmZWF0dXJlID0gc3RhdGljX2Nhc3Q8Q0ZTdHJpbmdSZWY+KENGQXJy
YXlHZXRWYWx1ZUF0SW5kZXgoZmVhdHVyZXMuZ2V0KCksIGkpKTsKKyAgICAgICAgICAgIGF1dG8g
bW9kaWZpZWRGb250RGVzY3JpcHRvciA9IGNvbnN0cnVjdEZvbnRXaXRoT3BlblR5cGVGZWF0dXJl
KGZvbnREZXNjcmlwdG9yLmdldCgpLCBmZWF0dXJlLCAxKTsKKyAgICAgICAgICAgIGF1dG8gcHJl
Zml4ID0gYWRvcHRDRihDRlN0cmluZ0NyZWF0ZU11dGFibGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwg
MCkpOworICAgICAgICAgICAgQ0ZTdHJpbmdBcHBlbmQocHJlZml4LmdldCgpLCBmZWF0dXJlKTsK
KyAgICAgICAgICAgIENGU3RyaW5nQXBwZW5kKHByZWZpeC5nZXQoKSwgQ0ZTVFIoIiAgKG9uKTog
IikpOworICAgICAgICAgICAgZHJhd1RleHQoY29udGV4dC5nZXQoKSwgbW9kaWZpZWRGb250RGVz
Y3JpcHRvci5nZXQoKSwgcHJlZml4LmdldCgpLCBDR1BvaW50TWFrZSgyNSwgMTk1MCAtIDUwICog
aSkpOworCisgICAgICAgICAgICBtb2RpZmllZEZvbnREZXNjcmlwdG9yID0gY29uc3RydWN0Rm9u
dFdpdGhPcGVuVHlwZUZlYXR1cmUoZm9udERlc2NyaXB0b3IuZ2V0KCksIGZlYXR1cmUsIDApOwor
ICAgICAgICAgICAgcHJlZml4ID0gYWRvcHRDRihDRlN0cmluZ0NyZWF0ZU11dGFibGUoa0NGQWxs
b2NhdG9yRGVmYXVsdCwgMCkpOworICAgICAgICAgICAgQ0ZTdHJpbmdBcHBlbmQocHJlZml4Lmdl
dCgpLCBmZWF0dXJlKTsKKyAgICAgICAgICAgIENGU3RyaW5nQXBwZW5kKHByZWZpeC5nZXQoKSwg
Q0ZTVFIoIiAob2ZmKTogIikpOworICAgICAgICAgICAgZHJhd1RleHQoY29udGV4dC5nZXQoKSwg
bW9kaWZpZWRGb250RGVzY3JpcHRvci5nZXQoKSwgcHJlZml4LmdldCgpLCBDR1BvaW50TWFrZSgy
NSwgMTkyNSAtIDUwICogaSkpOwogICAgICAgICB9Ci0KLSAgICAgICAgQ0ZSZWxlYXNlKGZlYXR1
cmVzKTsKICAgICB9IGVsc2UgewogICAgICAgICBfX2Jsb2NrIGludCBpID0gMDsKICAgICAgICAg
dm9pZCAoXmhhbmRsZXIpKHVpbnQxNl90IHR5cGUsIENGU3RyaW5nUmVmIHR5cGVTdHJpbmcsIHVp
bnQxNl90IHNlbGVjdG9yLCBDRlN0cmluZ1JlZiBzZWxlY3RvclN0cmluZykgPSBeKHVpbnQxNl90
IHR5cGUsIENGU3RyaW5nUmVmIHR5cGVTdHJpbmcsIHVpbnQxNl90IHNlbGVjdG9yLCBDRlN0cmlu
Z1JlZiBzZWxlY3RvclN0cmluZykKICAgICAgICAgewotICAgICAgICAgICAgQ1RGb250RGVzY3Jp
cHRvclJlZiBtb2RpZmllZEZvbnREZXNjcmlwdG9yID0gY29uc3RydWN0Rm9udFdpdGhUcnVlVHlw
ZUZlYXR1cmUoZm9udERlc2NyaXB0b3IsIHR5cGUsIHNlbGVjdG9yKTsKLSAgICAgICAgICAgIENG
TXV0YWJsZVN0cmluZ1JlZiBwcmVmaXggPSBDRlN0cmluZ0NyZWF0ZU11dGFibGUoa0NGQWxsb2Nh
dG9yRGVmYXVsdCwgMCk7Ci0gICAgICAgICAgICBDRlN0cmluZ0FwcGVuZChwcmVmaXgsIHR5cGVT
dHJpbmcpOwotICAgICAgICAgICAgQ0ZTdHJpbmdBcHBlbmQocHJlZml4LCBDRlNUUigiOiAiKSk7
Ci0gICAgICAgICAgICBDRlN0cmluZ0FwcGVuZChwcmVmaXgsIHNlbGVjdG9yU3RyaW5nKTsKLSAg
ICAgICAgICAgIENGU3RyaW5nQXBwZW5kKHByZWZpeCwgQ0ZTVFIoIjogIikpOwotICAgICAgICAg
ICAgd2hpbGUgKENGU3RyaW5nR2V0TGVuZ3RoKHByZWZpeCkgPCA2NSkKLSAgICAgICAgICAgICAg
ICBDRlN0cmluZ0FwcGVuZChwcmVmaXgsIENGU1RSKCIgIikpOwotICAgICAgICAgICAgZHJhd1Rl
eHQoY29udGV4dCwgbW9kaWZpZWRGb250RGVzY3JpcHRvciwgcHJlZml4LCBDR1BvaW50TWFrZSgy
NSwgMTk1MCAtIDQwICogaSkpOwotICAgICAgICAgICAgQ0ZSZWxlYXNlKHByZWZpeCk7Ci0gICAg
ICAgICAgICBDRlJlbGVhc2UobW9kaWZpZWRGb250RGVzY3JpcHRvcik7CisgICAgICAgICAgICBh
dXRvIG1vZGlmaWVkRm9udERlc2NyaXB0b3IgPSBjb25zdHJ1Y3RGb250V2l0aFRydWVUeXBlRmVh
dHVyZShmb250RGVzY3JpcHRvci5nZXQoKSwgdHlwZSwgc2VsZWN0b3IpOworICAgICAgICAgICAg
YXV0byBwcmVmaXggPSBhZG9wdENGKENGU3RyaW5nQ3JlYXRlTXV0YWJsZShrQ0ZBbGxvY2F0b3JE
ZWZhdWx0LCAwKSk7CisgICAgICAgICAgICBDRlN0cmluZ0FwcGVuZChwcmVmaXguZ2V0KCksIHR5
cGVTdHJpbmcpOworICAgICAgICAgICAgQ0ZTdHJpbmdBcHBlbmQocHJlZml4LmdldCgpLCBDRlNU
UigiOiAiKSk7CisgICAgICAgICAgICBDRlN0cmluZ0FwcGVuZChwcmVmaXguZ2V0KCksIHNlbGVj
dG9yU3RyaW5nKTsKKyAgICAgICAgICAgIENGU3RyaW5nQXBwZW5kKHByZWZpeC5nZXQoKSwgQ0ZT
VFIoIjogIikpOworICAgICAgICAgICAgd2hpbGUgKENGU3RyaW5nR2V0TGVuZ3RoKHByZWZpeC5n
ZXQoKSkgPCA2NSkKKyAgICAgICAgICAgICAgICBDRlN0cmluZ0FwcGVuZChwcmVmaXguZ2V0KCks
IENGU1RSKCIgIikpOworICAgICAgICAgICAgZHJhd1RleHQoY29udGV4dC5nZXQoKSwgbW9kaWZp
ZWRGb250RGVzY3JpcHRvci5nZXQoKSwgcHJlZml4LmdldCgpLCBDR1BvaW50TWFrZSgyNSwgMTk1
MCAtIDQwICogaSkpOwogICAgICAgICAgICAgKytpOwogICAgICAgICB9OwogICAgICAgICBoYW5k
bGVyKGtMaWdhdHVyZXNUeXBlLCBDRlNUUigia0xpZ2F0dXJlc1R5cGUiKSwga0NvbW1vbkxpZ2F0
dXJlc09uU2VsZWN0b3IsIENGU1RSKCJrQ29tbW9uTGlnYXR1cmVzT25TZWxlY3RvciIpKTsKQEAg
LTIxNCwxNSArMTg2LDEwIEBAIGludCBtYWluKGludCBhcmdjLCBjb25zdCBjaGFyICogYXJndltd
KQogICAgICAgICBoYW5kbGVyKGtSdWJ5S2FuYVR5cGUsIENGU1RSKCJrUnVieUthbmFUeXBlIiks
IGtSdWJ5S2FuYU9uU2VsZWN0b3IsIENGU1RSKCJrUnVieUthbmFPblNlbGVjdG9yIikpOwogICAg
IH0KIAotICAgIENGUmVsZWFzZShmb250RGVzY3JpcHRvcik7Ci0gICAgQ0dJbWFnZVJlZiBpbWFn
ZSA9IENHQml0bWFwQ29udGV4dENyZWF0ZUltYWdlKGNvbnRleHQpOwotICAgIENHQ29udGV4dFJl
bGVhc2UoY29udGV4dCk7Ci0gICAgQ0ZVUkxSZWYgdXJsID0gQ0ZVUkxDcmVhdGVXaXRoRmlsZVN5
c3RlbVBhdGgoa0NGQWxsb2NhdG9yRGVmYXVsdCwgQ0ZTVFIoIi9Wb2x1bWVzL0RhdGEvaG9tZS9t
bWF4ZmllbGQvdG1wL291dHB1dC5wbmciKSwga0NGVVJMUE9TSVhQYXRoU3R5bGUsIEZBTFNFKTsK
LSAgICBDR0ltYWdlRGVzdGluYXRpb25SZWYgaW1hZ2VEZXN0aW5hdGlvbiA9IENHSW1hZ2VEZXN0
aW5hdGlvbkNyZWF0ZVdpdGhVUkwodXJsLCBrVVRUeXBlUE5HLCAxLCBudWxscHRyKTsKLSAgICBD
RlJlbGVhc2UodXJsKTsKLSAgICBDR0ltYWdlRGVzdGluYXRpb25BZGRJbWFnZShpbWFnZURlc3Rp
bmF0aW9uLCBpbWFnZSwgbnVsbHB0cik7Ci0gICAgQ0dJbWFnZVJlbGVhc2UoaW1hZ2UpOwotICAg
IENHSW1hZ2VEZXN0aW5hdGlvbkZpbmFsaXplKGltYWdlRGVzdGluYXRpb24pOwotICAgIENGUmVs
ZWFzZShpbWFnZURlc3RpbmF0aW9uKTsKKyAgICBhdXRvIGltYWdlID0gYWRvcHRDRihDR0JpdG1h
cENvbnRleHRDcmVhdGVJbWFnZShjb250ZXh0LmdldCgpKSk7CisgICAgYXV0byB1cmwgPSBhZG9w
dENGKENGVVJMQ3JlYXRlV2l0aEZpbGVTeXN0ZW1QYXRoKGtDRkFsbG9jYXRvckRlZmF1bHQsIENG
U1RSKCIvVm9sdW1lcy9EYXRhL2hvbWUvbW1heGZpZWxkL3RtcC9vdXRwdXQucG5nIiksIGtDRlVS
TFBPU0lYUGF0aFN0eWxlLCBGQUxTRSkpOworICAgIGF1dG8gaW1hZ2VEZXN0aW5hdGlvbiA9IGFk
b3B0Q0YoQ0dJbWFnZURlc3RpbmF0aW9uQ3JlYXRlV2l0aFVSTCh1cmwuZ2V0KCksIGtVVFR5cGVQ
TkcsIDEsIG51bGxwdHIpKTsKKyAgICBDR0ltYWdlRGVzdGluYXRpb25BZGRJbWFnZShpbWFnZURl
c3RpbmF0aW9uLmdldCgpLCBpbWFnZS5nZXQoKSwgbnVsbHB0cik7CisgICAgQ0dJbWFnZURlc3Rp
bmF0aW9uRmluYWxpemUoaW1hZ2VEZXN0aW5hdGlvbi5nZXQoKSk7CiAgICAgcmV0dXJuIDA7CiB9
CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVj
dGVkQnVuZGxlUGFnZS5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L0luamVjdGVkQnVuZGxlUGFnZS5jcHAKaW5kZXggM2RiMDIzNDkzNDE1MzllZDQzODcwZTY0NTA2
ZDkzMzA3NTQyYzI4OS4uNzQ1YzRjZTgzNWVkY2MxYjMyMGU5MDNkMzY3Zjc3NmE3NWU0NTczOCAx
MDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3Rl
ZEJ1bmRsZVBhZ2UuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcApAQCAtNzk2LDcgKzc5Niw3IEBAIHZvaWQgSW5qZWN0
ZWRCdW5kbGVQYWdlOjpkdW1wRE9NQXNXZWJBcmNoaXZlKFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUs
IFN0cmluZ0J1aWxkCiAjaWYgVVNFKENGKSAmJiAhUExBVEZPUk0oV0lOX0NBSVJPKSAmJiAhVVNF
KERJUkVDVDJEKQogICAgIGF1dG8gd2tEYXRhID0gYWRvcHRXSyhXS0J1bmRsZUZyYW1lQ29weVdl
YkFyY2hpdmUoZnJhbWUpKTsKICAgICBhdXRvIGNmRGF0YSA9IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRl
KDAsIFdLRGF0YUdldEJ5dGVzKHdrRGF0YS5nZXQoKSksIFdLRGF0YUdldFNpemUod2tEYXRhLmdl
dCgpKSkpOwotICAgIGF1dG8gY2ZTdHJpbmcgPSBhZG9wdENGKFdlYkNvcmVUZXN0U3VwcG9ydDo6
Y3JlYXRlWE1MU3RyaW5nRnJvbVdlYkFyY2hpdmVEYXRhKGNmRGF0YS5nZXQoKSkpOworICAgIGF1
dG8gY2ZTdHJpbmcgPSBXZWJDb3JlVGVzdFN1cHBvcnQ6OmNyZWF0ZVhNTFN0cmluZ0Zyb21XZWJB
cmNoaXZlRGF0YShjZkRhdGEuZ2V0KCkpOwogICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKGNmU3Ry
aW5nLmdldCgpKTsKICNlbmRpZgogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9pb3MvQWNjZXNzaWJpbGl0eVVJRWxlbWVudElPUy5tbSBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvaW9zL0FjY2Vzc2liaWxpdHlVSUVsZW1l
bnRJT1MubW0KaW5kZXggNDZhMTU3ODBkYzU4ZDM3ZjlhZGFiZTcwMDkwMWQ5MTBkZTk3ZDFmNC4u
ZjBmOWIzODdkMDZjNDMwOGFlMTM2MWYxMWRjOTA3ZDQ4YmRmNzI1MyAxMDA2NDQKLS0tIGEvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9pb3MvQWNjZXNzaWJpbGl0eVVJRWxl
bWVudElPUy5tbQorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2lv
cy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50SU9TLm1tCkBAIC0xMzAsNyArMTMwLDcgQEAgKyAoTlNT
dHJpbmcgKilzdHJpbmdXaXRoSlNTdHJpbmdSZWY6KEpTU3RyaW5nUmVmKWpzU3RyaW5nUmVmCiAg
ICAgaWYgKCFqc1N0cmluZ1JlZikKICAgICAgICAgcmV0dXJuIG5pbDsKICAgICAKLSAgICByZXR1
cm4gQ0ZCcmlkZ2luZ1JlbGVhc2UoSlNTdHJpbmdDb3B5Q0ZTdHJpbmcoa0NGQWxsb2NhdG9yRGVm
YXVsdCwganNTdHJpbmdSZWYpKTsKKyAgICByZXR1cm4gYWRvcHRDRihKU1N0cmluZ0NvcHlDRlN0
cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBqc1N0cmluZ1JlZikpLmJyaWRnaW5nQXV0b3JlbGVh
c2UoKTsKIH0KIAogLSAoSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+KWNyZWF0ZUpTU3RyaW5nUmVm
CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9B
Y2Nlc3NpYmlsaXR5Q29tbW9uTWFjLm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9tYWMvQWNjZXNzaWJpbGl0eUNvbW1vbk1hYy5tbQppbmRleCAzNTRhOGY2NTU1YzZj
MDAyNjVmNTY4MWE2YjM3MTUyYTg0YTU2MmMwLi5mOGUyZGNlMjIxMDI3MmFmNjZkZThjMjcxZmY0
NWQzYjdiNTdjNjBmIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5Q29tbW9uTWFjLm1tCisrKyBiL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0FjY2Vzc2liaWxpdHlDb21tb25NYWMubW0KQEAg
LTQzLDcgKzQzLDcgQEAgKyAoTlNTdHJpbmcgKilzdHJpbmdXaXRoSlNTdHJpbmdSZWY6KEpTU3Ry
aW5nUmVmKWpzU3RyaW5nUmVmCiAgICAgaWYgKCFqc1N0cmluZ1JlZikKICAgICAgICAgcmV0dXJu
IG5pbDsKIAotICAgIHJldHVybiBDRkJyaWRnaW5nUmVsZWFzZShKU1N0cmluZ0NvcHlDRlN0cmlu
ZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBqc1N0cmluZ1JlZikpOworICAgIHJldHVybiBhZG9wdENG
KEpTU3RyaW5nQ29weUNGU3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIGpzU3RyaW5nUmVmKSku
YnJpZGdpbmdBdXRvcmVsZWFzZSgpOwogfQogCiAtIChKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4p
Y3JlYXRlSlNTdHJpbmdSZWYKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9z
L0hJREV2ZW50R2VuZXJhdG9yLm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvSElERXZl
bnRHZW5lcmF0b3IubW0KaW5kZXggMzFiNDY1MGUzNTYxMTljMDI0MDE2NjRjZTAyNzY5NDhkYTAz
NWVkOC4uZjY4MmNhMjk4NzViMzY2ZWIxNmI1ZTc5ZjA2ZGQwZTBhNTFmYmQwNyAxMDA2NDQKLS0t
IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvSElERXZlbnRHZW5lcmF0b3IubW0KKysrIGIv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvSElERXZlbnRHZW5lcmF0b3IubW0KQEAgLTMxOSw3
ICszMTksNyBAQCAtIChJT0hJREV2ZW50UmVmKV9jcmVhdGVJT0hJREV2ZW50V2l0aEluZm86KE5T
RGljdGlvbmFyeSAqKWluZm8KICAgICAgICAgaWYgKFt0b3VjaEluZm9bSElERXZlbnRQcmVzc3Vy
ZUtleV0gZmxvYXRWYWx1ZV0pCiAgICAgICAgICAgICBjaGlsZEV2ZW50TWFzayB8PSBrSU9ISURE
aWdpdGl6ZXJFdmVudEF0dHJpYnV0ZTsKIAotICAgICAgICBJT0hJREV2ZW50UmVmIHN1YkV2ZW50
ID0gSU9ISURFdmVudENyZWF0ZURpZ2l0aXplckZpbmdlckV2ZW50KGtDRkFsbG9jYXRvckRlZmF1
bHQsIG1hY2hUaW1lLAorICAgICAgICBhdXRvIHN1YkV2ZW50ID0gYWRvcHRDRihJT0hJREV2ZW50
Q3JlYXRlRGlnaXRpemVyRmluZ2VyRXZlbnQoa0NGQWxsb2NhdG9yRGVmYXVsdCwgbWFjaFRpbWUs
CiAgICAgICAgICAgICBbdG91Y2hJbmZvW0hJREV2ZW50VG91Y2hJREtleV0gaW50VmFsdWVdLCAg
ICAgICAgICAgICAgIC8vIGluZGV4CiAgICAgICAgICAgICAyLCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlkZW50aWZpZXIgKHdoaWNoIGZp
bmdlciB3ZSB0aGluayBpdCBpcykuIEZJWE1FOiB0aGlzIHNob3VsZCBjb21lIGZyb20gdGhlIGRh
dGEuCiAgICAgICAgICAgICBjaGlsZEV2ZW50TWFzaywKQEAgLTMzMCwxMyArMzMwLDEyIEBAIC0g
KElPSElERXZlbnRSZWYpX2NyZWF0ZUlPSElERXZlbnRXaXRoSW5mbzooTlNEaWN0aW9uYXJ5ICop
aW5mbwogICAgICAgICAgICAgW3RvdWNoSW5mb1tISURFdmVudFR3aXN0S2V5XSBmbG9hdFZhbHVl
XSwKICAgICAgICAgICAgIHRvdWNoLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gcmFuZ2UKICAgICAgICAgICAgIHRvdWNoLCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdG91Y2gKLSAgICAgICAgICAg
IGtJT0hJREV2ZW50T3B0aW9uTm9uZSk7CisgICAgICAgICAgICBrSU9ISURFdmVudE9wdGlvbk5v
bmUpKTsKIAotICAgICAgICBJT0hJREV2ZW50U2V0RmxvYXRWYWx1ZShzdWJFdmVudCwga0lPSElE
RXZlbnRGaWVsZERpZ2l0aXplck1ham9yUmFkaXVzLCBbdG91Y2hJbmZvW0hJREV2ZW50TWFqb3JS
YWRpdXNLZXldIGZsb2F0VmFsdWVdKTsKLSAgICAgICAgSU9ISURFdmVudFNldEZsb2F0VmFsdWUo
c3ViRXZlbnQsIGtJT0hJREV2ZW50RmllbGREaWdpdGl6ZXJNaW5vclJhZGl1cywgW3RvdWNoSW5m
b1tISURFdmVudE1pbm9yUmFkaXVzS2V5XSBmbG9hdFZhbHVlXSk7CisgICAgICAgIElPSElERXZl
bnRTZXRGbG9hdFZhbHVlKHN1YkV2ZW50LmdldCgpLCBrSU9ISURFdmVudEZpZWxkRGlnaXRpemVy
TWFqb3JSYWRpdXMsIFt0b3VjaEluZm9bSElERXZlbnRNYWpvclJhZGl1c0tleV0gZmxvYXRWYWx1
ZV0pOworICAgICAgICBJT0hJREV2ZW50U2V0RmxvYXRWYWx1ZShzdWJFdmVudC5nZXQoKSwga0lP
SElERXZlbnRGaWVsZERpZ2l0aXplck1pbm9yUmFkaXVzLCBbdG91Y2hJbmZvW0hJREV2ZW50TWlu
b3JSYWRpdXNLZXldIGZsb2F0VmFsdWVdKTsKIAotICAgICAgICBJT0hJREV2ZW50QXBwZW5kRXZl
bnQoZXZlbnRSZWYsIHN1YkV2ZW50LCAwKTsKLSAgICAgICAgQ0ZSZWxlYXNlKHN1YkV2ZW50KTsK
KyAgICAgICAgSU9ISURFdmVudEFwcGVuZEV2ZW50KGV2ZW50UmVmLCBzdWJFdmVudC5nZXQoKSwg
MCk7CiAgICAgfQogCiAgICAgcmV0dXJuIGV2ZW50UmVmOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9tYWMvRXZlbnRTZW5kZXJQcm94eS5tbSBiL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvbWFjL0V2ZW50U2VuZGVyUHJveHkubW0KaW5kZXggYmFjYzE0MTE1NDMzMWI3OWQxYTNj
ZWQ2ODFjN2Y5NDg5ODhiOTA2Ni4uOGU5OTQ3YjBiMzI0MGYzZmMwOWIzYzZhZGI2NWU4ZjJlMDJj
ZmVkNCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvRXZlbnRTZW5kZXJQ
cm94eS5tbQorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9FdmVudFNlbmRlclByb3h5
Lm1tCkBAIC05NSwxNyArOTUsMTYgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXRQcmVzc3VyZUV2ZW50
QXRMb2NhdGlvbjooTlNQb2ludClsb2NhdGlvbiBnbG9iYWxMb2NhdGlvbjooTlMKICAgICAgICAg
YnJlYWs7CiAgICAgfQogCi0gICAgQ0dFdmVudFJlZiBjZ0V2ZW50ID0gQ0dFdmVudENyZWF0ZShu
dWxscHRyKTsKLSAgICBDR0V2ZW50U2V0VHlwZShjZ0V2ZW50LCAoQ0dFdmVudFR5cGUpa0NHU0V2
ZW50R2VzdHVyZSk7Ci0gICAgQ0dFdmVudFNldEludGVnZXJWYWx1ZUZpZWxkKGNnRXZlbnQsIGtD
R0V2ZW50R2VzdHVyZUhJRFR5cGUsIDMyKTsKLSAgICBDR0V2ZW50U2V0SW50ZWdlclZhbHVlRmll
bGQoY2dFdmVudCwga0NHRXZlbnRHZXN0dXJlUGhhc2UsIGdlc3R1cmVQaGFzZSk7Ci0gICAgQ0dF
dmVudFNldERvdWJsZVZhbHVlRmllbGQoY2dFdmVudCwga0NHRXZlbnRTdGFnZVByZXNzdXJlLCBw
cmVzc3VyZSk7Ci0gICAgQ0dFdmVudFNldERvdWJsZVZhbHVlRmllbGQoY2dFdmVudCwga0NHRXZl
bnRUcmFuc2l0aW9uUHJvZ3Jlc3MsIHByZXNzdXJlKTsKLSAgICBDR0V2ZW50U2V0SW50ZWdlclZh
bHVlRmllbGQoY2dFdmVudCwga0NHRXZlbnRHZXN0dXJlU3RhZ2UsIHN0YWdlVHJhbnNpdGlvbik7
Ci0gICAgQ0dFdmVudFNldEludGVnZXJWYWx1ZUZpZWxkKGNnRXZlbnQsIGtDR0V2ZW50R2VzdHVy
ZUJlaGF2aW9yLCBrQ0dTR2VzdHVyZUJlaGF2aW9yRGVlcFByZXNzKTsKLQotICAgIHNlbGYgPSBb
c3VwZXIgX2luaXRXaXRoQ0dFdmVudDpjZ0V2ZW50IGV2ZW50UmVmOm51bGxwdHJdOwotICAgIENG
UmVsZWFzZShjZ0V2ZW50KTsKKyAgICBhdXRvIGNnRXZlbnQgPSBhZG9wdENGKENHRXZlbnRDcmVh
dGUobnVsbHB0cikpOworICAgIENHRXZlbnRTZXRUeXBlKGNnRXZlbnQuZ2V0KCksIChDR0V2ZW50
VHlwZSlrQ0dTRXZlbnRHZXN0dXJlKTsKKyAgICBDR0V2ZW50U2V0SW50ZWdlclZhbHVlRmllbGQo
Y2dFdmVudC5nZXQoKSwga0NHRXZlbnRHZXN0dXJlSElEVHlwZSwgMzIpOworICAgIENHRXZlbnRT
ZXRJbnRlZ2VyVmFsdWVGaWVsZChjZ0V2ZW50LmdldCgpLCBrQ0dFdmVudEdlc3R1cmVQaGFzZSwg
Z2VzdHVyZVBoYXNlKTsKKyAgICBDR0V2ZW50U2V0RG91YmxlVmFsdWVGaWVsZChjZ0V2ZW50Lmdl
dCgpLCBrQ0dFdmVudFN0YWdlUHJlc3N1cmUsIHByZXNzdXJlKTsKKyAgICBDR0V2ZW50U2V0RG91
YmxlVmFsdWVGaWVsZChjZ0V2ZW50LmdldCgpLCBrQ0dFdmVudFRyYW5zaXRpb25Qcm9ncmVzcywg
cHJlc3N1cmUpOworICAgIENHRXZlbnRTZXRJbnRlZ2VyVmFsdWVGaWVsZChjZ0V2ZW50LmdldCgp
LCBrQ0dFdmVudEdlc3R1cmVTdGFnZSwgc3RhZ2VUcmFuc2l0aW9uKTsKKyAgICBDR0V2ZW50U2V0
SW50ZWdlclZhbHVlRmllbGQoY2dFdmVudC5nZXQoKSwga0NHRXZlbnRHZXN0dXJlQmVoYXZpb3Is
IGtDR1NHZXN0dXJlQmVoYXZpb3JEZWVwUHJlc3MpOworCisgICAgc2VsZiA9IFtzdXBlciBfaW5p
dFdpdGhDR0V2ZW50OmNnRXZlbnQuZ2V0KCkgZXZlbnRSZWY6bnVsbHB0cl07CiAKICAgICBpZiAo
IXNlbGYpCiAgICAgICAgIHJldHVybiBuaWw7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL21hYy9VSVNjcmlwdENvbnRyb2xsZXJNYWMubW0gYi9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL21hYy9VSVNjcmlwdENvbnRyb2xsZXJNYWMubW0KaW5kZXggNjBiZTk1N2UwNTdlMjRiZTBm
YmFmZmFmMmMzODIxNTc0YTc2NDE1My4uYmFiZTk1N2QxMWIyMDQ2ZDVmMzZlZDRkZGM3MWJiZDdk
NmU2MDYxYiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvVUlTY3JpcHRD
b250cm9sbGVyTWFjLm1tCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL1VJU2NyaXB0
Q29udHJvbGxlck1hYy5tbQpAQCAtNTMsMTQgKzUzLDE0IEBAIFJlZjxVSVNjcmlwdENvbnRyb2xs
ZXI+IFVJU2NyaXB0Q29udHJvbGxlcjo6Y3JlYXRlKFVJU2NyaXB0Q29udGV4dCYgY29udGV4dCkK
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBVSVNjcmlwdENvbnRyb2xsZXJNYWMoY29udGV4dCkp
OwogfQogCi1zdGF0aWMgTlNTdHJpbmcgKm5zU3RyaW5nKEpTU3RyaW5nUmVmIHN0cmluZykKK3N0
YXRpYyBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGNmU3RyaW5nKEpTU3RyaW5nUmVmIHN0cmluZykK
IHsKLSAgICByZXR1cm4gQ0ZCcmlkZ2luZ1JlbGVhc2UoSlNTdHJpbmdDb3B5Q0ZTdHJpbmcoa0NG
QWxsb2NhdG9yRGVmYXVsdCwgc3RyaW5nKSk7CisgICAgcmV0dXJuIGFkb3B0Q0YoSlNTdHJpbmdD
b3B5Q0ZTdHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwgc3RyaW5nKSk7CiB9CiAKIHZvaWQgVUlT
Y3JpcHRDb250cm9sbGVyTWFjOjpyZXBsYWNlVGV4dEF0UmFuZ2UoSlNTdHJpbmdSZWYgdGV4dCwg
aW50IGxvY2F0aW9uLCBpbnQgbGVuZ3RoKQogewotICAgIFt3ZWJWaWV3KCkgX2luc2VydFRleHQ6
bnNTdHJpbmcodGV4dCkgcmVwbGFjZW1lbnRSYW5nZTpOU01ha2VSYW5nZShsb2NhdGlvbiA9PSAt
MSA/IE5TTm90Rm91bmQgOiBsb2NhdGlvbiwgbGVuZ3RoKV07CisgICAgW3dlYlZpZXcoKSBfaW5z
ZXJ0VGV4dDooX19icmlkZ2UgTlNTdHJpbmcgKiljZlN0cmluZyh0ZXh0KS5nZXQoKSByZXBsYWNl
bWVudFJhbmdlOk5TTWFrZVJhbmdlKGxvY2F0aW9uID09IC0xID8gTlNOb3RGb3VuZCA6IGxvY2F0
aW9uLCBsZW5ndGgpXTsKIH0KIAogdm9pZCBVSVNjcmlwdENvbnRyb2xsZXJNYWM6Onpvb21Ub1Nj
YWxlKGRvdWJsZSBzY2FsZSwgSlNWYWx1ZVJlZiBjYWxsYmFjaykK
</data>
<flag name="commit-queue"
          id="441353"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>422292</attachid>
            <date>2021-03-04 15:04:12 -0800</date>
            <delta_ts>2021-03-04 15:58:31 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222760-20210304150411.patch</filename>
            <type>text/plain</type>
            <size>187441</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjczOTA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
MGY4NmUyMTAwZjMxZDk3OTkxNTZhZjkxZGU2MjMzMWIyOWYwN2ViLi44NTViOGIxYjM5ODYxYjhk
NDMzZjg4ZTBmMmU3N2Y0OTcwYzdjYjdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMCBAQAorMjAyMS0wMy0wNCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIFJlZHVjZSB1c2Ugb2YgQ0ZSZXRhaW4oKSAvIENGUmVsZWFzZSgpIC8gQ0ZBdXRv
UmVsZWFzZSgpIGluIFdlYktpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjIyNzYwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgUmVkdWNlIHVzZSBvZiBDRlJldGFpbigpIC8gQ0ZSZWxlYXNlKCkgLyBDRkF1
dG9SZWxlYXNlKCkgaW4gV2ViS2l0IGJ5IHVzaW5nIFJldGFpblB0cjw+LgorCisgICAgICAgICog
QVBJL0pTQ29udGV4dC5tbToKKyAgICAgICAgKC1bSlNDb250ZXh0IG5hbWVdKToKKyAgICAgICAg
KiBBUEkvSlNWYWx1ZS5tbToKKyAgICAgICAgKHZhbHVlVG9PYmplY3RXaXRob3V0Q29weSk6Cisg
ICAgICAgICh2YWx1ZVRvU3RyaW5nKToKKyAgICAgICAgKiBpbnNwZWN0b3IvcmVtb3RlL2NvY29h
L1JlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24ubW06CisgICAgICAgIChJbnNwZWN0b3I6OlJl
bW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb246OmRlc2VyaWFsaXplTWVzc2FnZSk6CisKIDIwMjEt
MDMtMDQgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAg
ICAgICBbQ29jb2FdIFJFR1JFU1NJT04ocjI3Mjc1Mik6IGZpeCBzb21lIGludGVybmFsIGJ1aWxk
cyB0aGF0IHVzZSBXVEZTdHJpbmc6OldURlN0cmluZyhOU1N0cmluZyAqKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCBjN2M5MjQw
MGJmMTVjZTk0YjA4NzBjNzIzYWQ3Y2U3YzYyNmM4NWI4Li5mOTk0ZmVhNTg3MWU1OWI2MTg4M2Iy
Y2U2YjI0OTQ3N2ZjMWE0OWM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDIxLTAzLTA0ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgUmVkdWNlIHVzZSBvZiBDRlJl
dGFpbigpIC8gQ0ZSZWxlYXNlKCkgLyBDRkF1dG9SZWxlYXNlKCkgaW4gV2ViS2l0CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjI3NjAKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWR1Y2UgdXNlIG9mIENG
UmV0YWluKCkgLyBDRlJlbGVhc2UoKSAvIENGQXV0b1JlbGVhc2UoKSBpbiBXZWJLaXQgYnkgdXNp
bmcgUmV0YWluUHRyPD4uCisKKyAgICAgICAgKiB3dGYvY29jb2EvTlNVUkxFeHRyYXMubW06Cisg
ICAgICAgIChXVEY6OmRlY29kZVBlcmNlbnRFc2NhcGVzKToKKyAgICAgICAgKFdURjo6VVJMQnlU
cnVuY2F0aW5nT25lQ2hhcmFjdGVyQmVmb3JlQ29tcG9uZW50KToKKyAgICAgICAgKFdURjo6VVJM
V2l0aERhdGEpOgorICAgICAgICAoV1RGOjpVUkxCeVJlbW92aW5nQ29tcG9uZW50QW5kU3Vic2Vx
dWVudENoYXJhY3Rlcik6CisKIDIwMjEtMDMtMDQgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxl
LmNvbT4KIAogICAgICAgICBbbWFjT1NdW1dLMl0gQ2hhbmdpbmcgdGhlIHN5c3RlbSBsYW5ndWFn
ZSBkb2VzIG5vdCB1cGRhdGUgbmF2aWdhdG9yLmxhbmd1YWdlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDFmOTFj
ZjdlMGE2OGMwMDE1ZDE5ODlkODc5MzBiMGYyZGMyNjNiZC4uNWE0M2Q2NWNkZTkxODNiMDJjMTFl
MTQ2ZDY3YzhhNGFiMTJiYTAzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExMiBAQAorMjAyMS0w
My0wNCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFJlZHVjZSB1
c2Ugb2YgQ0ZSZXRhaW4oKSAvIENGUmVsZWFzZSgpIC8gQ0ZBdXRvUmVsZWFzZSgpIGluIFdlYktp
dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIyNzYw
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVkdWNl
IHVzZSBvZiBDRlJldGFpbigpIC8gQ0ZSZWxlYXNlKCkgLyBDRkF1dG9SZWxlYXNlKCkgaW4gV2Vi
S2l0IGJ5IHVzaW5nIFJldGFpblB0cjw+LgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9tYWMv
QVhPYmplY3RDYWNoZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkFYVGV4dE1hcmtlclJhbmdl
KToKKyAgICAgICAgKFdlYkNvcmU6OkFYVGV4dE1hcmtlclJhbmdlU3RhcnQpOgorICAgICAgICAo
V2ViQ29yZTo6QVhUZXh0TWFya2VyUmFuZ2VFbmQpOgorICAgICAgICAoV2ViQ29yZTo6dGV4dE1h
cmtlckZvclZpc2libGVQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjp0ZXh0TWFya2VyRm9y
Q2hhcmFjdGVyT2Zmc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OnN0YXJ0T3JFbmRUZXh0TWFya2Vy
Rm9yUmFuZ2UpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlP
YmplY3RXcmFwcGVyQmFzZS5tbToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdy
YXBwZXJCYXNlIHVwZGF0ZU9iamVjdEJhY2tpbmdTdG9yZV0pOgorICAgICAgICAoLVtXZWJBY2Nl
c3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UgY29udmVydFBhdGhUb1NjcmVlblNwYWNlOl0pOgor
ICAgICAgICAqIGFjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
TWFjLm1tOgorICAgICAgICAobmV4dFRleHRNYXJrZXJGb3JDaGFyYWN0ZXJPZmZzZXQpOgorICAg
ICAgICAocHJldmlvdXNUZXh0TWFya2VyRm9yQ2hhcmFjdGVyT2Zmc2V0KToKKyAgICAgICAgKC1b
V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgdGV4dE1hcmtlckZvckZpcnN0UG9zaXRpb25J
blRleHRDb250cm9sOl0pOgorICAgICAgICAoQVhBdHRyaWJ1dGVTdHJpbmdTZXRFbGVtZW50KToK
KyAgICAgICAgKiBlZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW06CisgICAgICAgIChIVE1M
Q29udmVydGVyOjpfcHJvY2Vzc1RleHQpOgorICAgICAgICAqIGxvYWRlci9jb2NvYS9EaXNrQ2Fj
aGVNb25pdG9yQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpEaXNrQ2FjaGVNb25pdG9yOjpE
aXNrQ2FjaGVNb25pdG9yKToKKyAgICAgICAgKiBwYWdlL21hYy9FdmVudEhhbmRsZXJNYWMubW06
CisgICAgICAgIChXZWJDb3JlOjpzZWxmUmV0YWluaW5nTlNTY3JvbGxWaWV3U2Nyb2xsV2hlZWwp
OgorICAgICAgICAqIHBhZ2Uvd2luL0ZyYW1lQ0dXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
aW1hZ2VGcm9tUmVjdCk6CisgICAgICAgICogcGxhdGZvcm0vY2YvTWFpblRocmVhZFNoYXJlZFRp
bWVyQ0YuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2hhcmVkVGltZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6TWFpblRocmVhZFNoYXJlZFRpbWVyOjpyZXN0YXJ0U2hhcmVkVGltZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6TWFpblRocmVhZFNoYXJlZFRpbWVyOjppbnZhbGlkYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6Ok1haW5UaHJlYWRTaGFyZWRUaW1lcjo6c2V0RmlyZUludGVydmFsKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1haW5UaHJlYWRTaGFyZWRUaW1lcjo6c3RvcCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZXJuYWxEZXZpY2VEaXNwbGF5TmFt
ZUZvclBsYXllcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL0NBQ0ZMYXll
clRyZWVIb3N0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNBQ0ZMYXllclRyZWVIb3N0Ojppbml0
aWFsaXplKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRD
Ry5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYXR0ZXJuUmVsZWFzZUNhbGxiYWNrKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZmlsbFBhdGgpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0OjpzdHJva2VQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDo6ZmlsbFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
OjpzdHJva2VSZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXR0ZXJuQ0cu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6cGF0dGVyblJlbGVhc2VDYWxsYmFjayk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6YXV0b0FjdGl2YXRlRm9udCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0ZvbnRDR1dpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZTo6Z2V0
UGxhdGZvcm1HbHlwaEFkdmFuY2VzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4v
R3JhcGhpY3NDb250ZXh0Q0dXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0OjpyZWxlYXNlV2luZG93c0NvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0OjpkcmF3Rm9jdXNSaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4v
SW1hZ2VDR1dpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Z2V0SEJJVE1B
UE9mU2l6ZSk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1VzZXJBZ2VudElPUy5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OnN0YW5kYXJkVXNlckFnZW50V2l0aEFwcGxpY2F0aW9uTmFtZSk6CisgICAg
ICAgICogcGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkLm1tOgorICAgICAgICAoU2VuZERl
bGVnYXRlTWVzc2FnZSk6CisgICAgICAgIChSdW5XZWJUaHJlYWQpOgorICAgICAgICAoV2ViVGhy
ZWFkVW5sb2NrR3VhcmRGb3JNYWlsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvUGxhdGZvcm1T
cGVlY2hTeW50aGVzaXplck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OnNwZWVjaFN5bnRoZXNp
c0dldFZvaWNlSWRlbnRpZmllcnMpOgorICAgICAgICAoV2ViQ29yZTo6c3BlZWNoU3ludGhlc2lz
R2V0RGVmYXVsdFZvaWNlSWRlbnRpZmllckZvckxvY2FsZSk6CisgICAgICAgIChXZWJDb3JlOjpQ
bGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyOjppbml0aWFsaXplVm9pY2VMaXN0KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9tYWMvUGx1Z2luQmxvY2tsaXN0Lm1tOgorICAgICAgICAoV2ViQ29yZTo6UGx1
Z2luQmxvY2tsaXN0OjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9XZWJHTEJsb2Nr
bGlzdC5tbToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMQmxvY2tsaXN0OjpjcmVhdGUpOgorICAg
ICAgICAqIHBsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvQXVkaW9TYW1wbGVCdWZmZXJDb21w
cmVzc29yLm1tOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29y
OjphdHRhY2hQcmltaW5nVHJpbXNJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nh
bXBsZUJ1ZmZlckNvbXByZXNzb3I6OnByb3ZpZGVTb3VyY2VEYXRhTnVtT3V0cHV0UGFja2V0cyk6
CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9WaWRlb1NhbXBsZUJ1ZmZl
ckNvbXByZXNzb3IubW06CisgICAgICAgIChXZWJDb3JlOjpzZXRDb21wcmVzc2lvblNlc3Npb25Q
cm9wZXJ0eSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9Gb3JtRGF0YVN0cmVhbUNG
TmV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNsb3NlQ3VycmVudFN0cmVhbSk6CisgICAgICAg
IChXZWJDb3JlOjphZHZhbmNlQ3VycmVudFN0cmVhbSk6CisgICAgICAgIChXZWJDb3JlOjpvcGVu
TmV4dFN0cmVhbSk6CisgICAgICAgIChXZWJDb3JlOjpmb3JtUmVhZCk6CisgICAgICAgIChXZWJD
b3JlOjpmb3JtQ2FuUmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpmb3JtU2NoZWR1bGUpOgorICAg
ICAgICAoV2ViQ29yZTo6Zm9ybVVuc2NoZWR1bGUpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvY2YvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ0ZOZXRXaW4uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Y3JlYXRlUHJpdmF0ZVN0b3JhZ2VTZXNzaW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2V0Q2xp
ZW50Q2VydGlmaWNhdGVJblNTTFByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3Vy
Y2VIYW5kbGU6OmNyZWF0ZUNGVVJMQ29ubmVjdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vbmV0
d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlv
blF1ZXVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0
aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6OndpbGxTZW5kUmVxdWVzdCk6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3RDRk5ldC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q6OmRvVXBkYXRlUmVzb3VyY2VSZXF1ZXN0KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS93aW4vRHJhZ0ltYWdlQ0dXaW4uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Y3JlYXRlQ2dDb250ZXh0RnJvbUJpdG1hcCk6CisgICAgICAgIChXZWJDb3JlOjpzY2FsZURy
YWdJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vd2luL1dlYkNvcmVCdW5kbGVXaW4uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlV2ViS2l0QnVuZGxlKToKKyAgICAgICAgKFdlYkNvcmU6
OndlYktpdEJ1bmRsZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tOgor
ICAgICAgICAoLVtXZWJDb3JlVGV4dEZpZWxkQ2VsbCBfYWRqdXN0ZWRDb3JlVUlEcmF3T3B0aW9u
c0ZvckRyYXdpbmdCb3JkZXJzT25seTpdKToKKyAgICAgICAgKiB0ZXN0aW5nL2NvY29hL1dlYkFy
Y2hpdmVEdW1wU3VwcG9ydC5oOgorICAgICAgICAqIHRlc3RpbmcvY29jb2EvV2ViQXJjaGl2ZUR1
bXBTdXBwb3J0Lm1tOgorICAgICAgICAoV2ViQ29yZVRlc3RTdXBwb3J0OjpjcmVhdGVYTUxTdHJp
bmdGcm9tV2ViQXJjaGl2ZURhdGEpOgorICAgICAgICAqIHRlc3RpbmcvY29jb2EvV2ViVmlld1Zp
c3VhbElkZW50aWZpY2F0aW9uT3ZlcmxheS5tbToKKyAgICAgICAgKGlkZW50aWZpY2F0aW9uRm9u
dCk6CisKIDIwMjEtMDMtMDQgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAg
ICAgICAgIEluIGNhc2Ugb2YgUE9TVCBuYXZpZ2F0aW9uIHJlZGlyZWN0ZWQgYnkgYSAzMDIsIHRo
ZSAnT3JpZ2luJyBoZWFkZXIgaXMga2VwdCBpbiB0aGUgcmVkaXJlY3RlZCByZXF1ZXN0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CmluZGV4IDA4M2M3MTI2NzEzNzhmZTI1NjEzMWI0ZmJkM2U3OGQ4MWUyYzMzMDEuLjQ4YjMxZTI4
Yzk3ZjFjNzZjNDE4ZTQ4NzQ0NGRkM2FkZGYwMzgxYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzkg
QEAKKzIwMjEtMDMtMDQgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAg
ICBSZWR1Y2UgdXNlIG9mIENGUmV0YWluKCkgLyBDRlJlbGVhc2UoKSAvIENGQXV0b1JlbGVhc2Uo
KSBpbiBXZWJLaXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIyMjc2MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFJlZHVjZSB1c2Ugb2YgQ0ZSZXRhaW4oKSAvIENGUmVsZWFzZSgpIC8gQ0ZBdXRvUmVsZWFz
ZSgpIGluIFdlYktpdCBieSB1c2luZyBSZXRhaW5QdHI8Pi4KKworICAgICAgICAqIFBsYXRmb3Jt
L21hYy9TdHJpbmdVdGlsaXRpZXMubW06CisgICAgICAgIChXZWJLaXQ6Om5zU3RyaW5nRnJvbVdl
YkNvcmVTdHJpbmcpOgorICAgICAgICAoV2ViS2l0Ojpmb3JtYXR0ZWRQaG9uZU51bWJlclN0cmlu
Zyk6CisgICAgICAgICogUGx1Z2luUHJvY2Vzcy9tYWMvUGx1Z2luUHJvY2Vzc01hYy5tbToKKyAg
ICAgICAgKFdlYktpdDo6aW5pdGlhbGl6ZUNvY29hT3ZlcnJpZGVzKToKKyAgICAgICAgKiBTaGFy
ZWQvbWFjL1Bhc3RlYm9hcmRUeXBlcy5tbToKKyAgICAgICAgKFdlYktpdDo6UGFzdGVib2FyZFR5
cGVzOjpmb3JFZGl0aW5nKToKKyAgICAgICAgKFdlYktpdDo6UGFzdGVib2FyZFR5cGVzOjpmb3JV
UkwpOgorICAgICAgICAoV2ViS2l0OjpQYXN0ZWJvYXJkVHlwZXM6OmZvckltYWdlcyk6CisgICAg
ICAgIChXZWJLaXQ6OlBhc3RlYm9hcmRUeXBlczo6Zm9ySW1hZ2VzV2l0aEFyY2hpdmUpOgorICAg
ICAgICAoV2ViS2l0OjpQYXN0ZWJvYXJkVHlwZXM6OmZvclNlbGVjdGlvbik6CisgICAgICAgICog
VUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3
SW1wbDo6YWNjZXB0c0ZpcnN0TW91c2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6
c2hvdWxkRGVsYXlXaW5kb3dPcmRlcmluZ0ZvckV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
Vmlld0ltcGw6OnZhbGlkQXR0cmlidXRlc0Zvck1hcmtlZFRleHQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJWaWV3SW1wbDo6cGVyZm9ybUtleUVxdWl2YWxlbnQpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9JbnNwZWN0b3IvaW9zL1dLSW5zcGVjdG9ySGlnaGxpZ2h0Vmlldy5tbToKKyAgICAgICAgKGxh
eWVyUGF0aFdpdGhIb2xlKToKKyAgICAgICAgKGxheWVyUGF0aCk6CisgICAgICAgICogVUlQcm9j
ZXNzL19XS1RvdWNoRXZlbnRHZW5lcmF0b3IubW06CisgICAgICAgICgtW19XS1RvdWNoRXZlbnRH
ZW5lcmF0b3IgZGVhbGxvY10pOgorICAgICAgICAoLVtfV0tUb3VjaEV2ZW50R2VuZXJhdG9yIF9z
ZW5kSElERXZlbnQ6XSk6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9mdWxsc2NyZWVuL1dLRnVs
bFNjcmVlbldpbmRvd0NvbnRyb2xsZXJJT1MubW06CisgICAgICAgICgtW1dLRnVsbFNjcmVlbldp
bmRvd0NvbnRyb2xsZXIgX0VWT3JnYW5pemF0aW9uTmFtZV0pOgorICAgICAgICAqIFdlYlByb2Nl
c3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tOgorICAgICAgICAoV2ViS2l0Ojp3ZWJQcm9jZXNz
TG9hZGVyQWNjZXNzaWJpbGl0eUJ1bmRsZVBhdGgpOgorCiAyMDIxLTAzLTA0ICBDaHJpcyBEdW1l
eiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCBidWlsZCBmaXggYWZ0
ZXIgcjI3MjYyOS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL0NoYW5nZUxvZwppbmRleCBjYWQxODlkMDFlYzI3
NDEzZjg3NTJmODA2NWM5NWEyMmQ1Y2MzNmI0Li5mN2MxNDRmMTZiMjhjZTExYWQ3YTViNmJiMzQ5
YzM2ZWJkOThiOGE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkg
QEAKKzIwMjEtMDMtMDQgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAg
ICBSZWR1Y2UgdXNlIG9mIENGUmV0YWluKCkgLyBDRlJlbGVhc2UoKSAvIENGQXV0b1JlbGVhc2Uo
KSBpbiBXZWJLaXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIyMjc2MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFJlZHVjZSB1c2Ugb2YgQ0ZSZXRhaW4oKSAvIENGUmVsZWFzZSgpIC8gQ0ZBdXRvUmVsZWFz
ZSgpIGluIFdlYktpdCBieSB1c2luZyBSZXRhaW5QdHI8Pi4KKworICAgICAgICAqIE1pc2MvV2Vi
VUlLaXRTdXBwb3J0Lm1tOgorICAgICAgICAoTG9hZFdlYkxvY2FsaXplZFN0cmluZ3MpOgorICAg
ICAgICAqIFdlYlZpZXcvV2ViUERGVmlld0lPUy5tbToKKyAgICAgICAgKC1bV2ViUERGVmlldyBm
aW5pc2hlZExvYWRpbmdXaXRoRGF0YVNvdXJjZTpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlBE
RlZpZXdQbGFjZWhvbGRlci5tbToKKyAgICAgICAgKC1bV2ViUERGVmlld1BsYWNlaG9sZGVyIGZp
bmlzaGVkTG9hZGluZ1dpdGhEYXRhU291cmNlOl0pOgorCiAyMDIxLTAyLTIyICBDaHJpcyBEdW1l
eiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgVXNlIGFkb3B0TlMoKSBhcyBzb29uIGFz
IHdlIFtbT2JqY0NsYXNzIGFsbG9jXSBpbml0XSB0byBhdm9pZCBsZWFrcwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvQ2hhbmdlTG9nCmluZGV4IDdjMTJkMTVhZmFlNThhZTA1Y2U2YjM0MDQ1OTAwYjg1OWVkMTQ2
YjMuLmFkYWE2NDM2ZjIzODNiNTQ5M2I4NGIxMTMyN2E2YTFlODljNjM1ZmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOSBAQAorMjAyMS0wMy0wNCAgQ2hyaXMgRHVt
ZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFJlZHVjZSB1c2Ugb2YgQ0ZSZXRhaW4o
KSAvIENGUmVsZWFzZSgpIC8gQ0ZBdXRvUmVsZWFzZSgpIGluIFdlYktpdAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIyNzYwCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVkdWNlIHVzZSBvZiBDRlJldGFp
bigpIC8gQ0ZSZWxlYXNlKCkgLyBDRkF1dG9SZWxlYXNlKCkgaW4gV2ViS2l0IGJ5IHVzaW5nIFJl
dGFpblB0cjw+LgorCisgICAgICAgICogTWlzYy9XZWJMb2NhbGl6YWJsZVN0cmluZ3MubW06Cisg
ICAgICAgICogTWlzYy9XZWJOU0RhdGFFeHRyYXMubW06CisgICAgICAgICgtW05TU3RyaW5nIF93
ZWJfY2FwaXRhbGl6ZVJGQzgyMkhlYWRlckZpZWxkTmFtZV0pOgorICAgICAgICAqIFBsdWdpbnMv
SG9zdGVkL05ldHNjYXBlUGx1Z2luSG9zdE1hbmFnZXIubW06CisgICAgICAgIChXZWJLaXQ6OnBy
ZWZlcnJlZEJ1bmRsZUxvY2FsaXphdGlvbk5hbWUpOgorICAgICAgICAqIFBsdWdpbnMvV2ViTmV0
c2NhcGVQbHVnaW5WaWV3Lm1tOgorICAgICAgICAoLVtXZWJOZXRzY2FwZVBsdWdpblZpZXcgc3Rh
dHVzOl0pOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlByb2dyZXNzVHJhY2tlckNsaWVu
dC5tbToKKyAgICAgICAgKFdlYlByb2dyZXNzVHJhY2tlckNsaWVudDo6cHJvZ3Jlc3NFc3RpbWF0
ZUNoYW5nZWQpOgorICAgICAgICAqIFdlYkluc3BlY3Rvci9XZWJOb2RlSGlnaGxpZ2h0Vmlldy5t
bToKKyAgICAgICAgKGxheWVyUGF0aFdpdGhIb2xlKToKKyAgICAgICAgKGxheWVyUGF0aCk6Cisg
ICAgICAgICogV2ViVmlldy9XZWJGcmFtZS5tbToKKyAgICAgICAgKGNyZWF0ZVVuaXF1ZVdlYkRh
dGFVUkwpOgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAgICAgICAgKCtbV2ViVmll
dyBfc2V0Q2FjaGVNb2RlbDpdKToKKwogMjAyMS0wMy0wNCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpA
YXBwbGUuY29tPgogCiAgICAgICAgIFttYWNPU11bV0syXSBDaGFuZ2luZyB0aGUgc3lzdGVtIGxh
bmd1YWdlIGRvZXMgbm90IHVwZGF0ZSBuYXZpZ2F0b3IubGFuZ3VhZ2UKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L0NoYW5nZUxvZwppbmRleCA1ODEzNDAyOTZkODVhZDRhODY5OTRkZDM0Y2RlNGU1NTcxY2FiYWE3
Li5jMDg4YmIyZjE1Zjk0MzE5MWYyODAxN2E5MzgxYTY0YjhjOGNjMTJmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDAgQEAKKzIwMjEtMDMtMDQgIENocmlzIER1bWV6
ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBSZWR1Y2UgdXNlIG9mIENGUmV0YWluKCkg
LyBDRlJlbGVhc2UoKSAvIENGQXV0b1JlbGVhc2UoKSBpbiBXZWJLaXQKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMjc2MAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlZHVjZSB1c2Ugb2YgQ0ZSZXRhaW4o
KSAvIENGUmVsZWFzZSgpIC8gQ0ZBdXRvUmVsZWFzZSgpIGluIFdlYktpdCBieSB1c2luZyBSZXRh
aW5QdHI8Pi4KKworICAgICAgICAqIENGRGljdGlvbmFyeVByb3BlcnR5QmFnLmNwcDoKKyAgICAg
ICAgKENvbnZlcnRWYXJpYW50VG9DRlR5cGUpOgorICAgICAgICAoQ0ZEaWN0aW9uYXJ5UHJvcGVy
dHlCYWc6OlJlYWQpOgorICAgICAgICAoQ0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWc6OldyaXRlKToK
KyAgICAgICAgKiBNYXJzaGFsbGluZ0hlbHBlcnMuY3BwOgorICAgICAgICAoTWFyc2hhbGxpbmdI
ZWxwZXJzOjpQYXRoU3RyaW5nVG9GaWxlQ0ZVUkxSZWYpOgorICAgICAgICAoTWFyc2hhbGxpbmdI
ZWxwZXJzOjpGaWxlQ0ZVUkxSZWZUb1BhdGhTdHJpbmcpOgorICAgICAgICAoTWFyc2hhbGxpbmdI
ZWxwZXJzOjpCU1RSVG9DRlVSTFJlZik6CisgICAgICAgIChNYXJzaGFsbGluZ0hlbHBlcnM6OkJT
VFJUb0NGU3RyaW5nUmVmKToKKyAgICAgICAgKE1hcnNoYWxsaW5nSGVscGVyczo6TFBDT0xFU1RS
VG9DRlN0cmluZ1JlZik6CisgICAgICAgIChNYXJzaGFsbGluZ0hlbHBlcnM6OmludFRvQ0ZOdW1i
ZXJSZWYpOgorICAgICAgICAoTWFyc2hhbGxpbmdIZWxwZXJzOjpzYWZlQXJyYXlUb1N0cmluZ0Fy
cmF5KToKKyAgICAgICAgKE1hcnNoYWxsaW5nSGVscGVyczo6c2FmZUFycmF5VG9JbnRBcnJheSk6
CisgICAgICAgIChNYXJzaGFsbGluZ0hlbHBlcnM6OnNhZmVBcnJheVRvSVVua25vd25BcnJheSk6
CisgICAgICAgICogTWFyc2hhbGxpbmdIZWxwZXJzLmg6CisgICAgICAgICogV2ViQXBwbGljYXRp
b25DYWNoZS5jcHA6CisgICAgICAgIChXZWJBcHBsaWNhdGlvbkNhY2hlOjpvcmlnaW5zV2l0aENh
Y2hlKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6
CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRGYWlsVG9TdGFydFBs
dWdpbiBjb25zdCk6CisgICAgICAgICogV2ViRG93bmxvYWRDRk5ldC5jcHA6CisgICAgICAgIChX
ZWJEb3dubG9hZDo6aW5pdFRvUmVzdW1lV2l0aEJ1bmRsZSk6CisgICAgICAgIChXZWJEb3dubG9h
ZDo6c2V0RGVzdGluYXRpb24pOgorICAgICAgICAoV2ViRG93bmxvYWQ6OndpbGxTZW5kUmVxdWVz
dCk6CisgICAgICAgICogV2ViSGlzdG9yeS5jcHA6CisgICAgICAgIChjcmVhdGVVc2VySW5mb0Zy
b21BcnJheSk6CisgICAgICAgICogV2ViTG9jYWxpemFibGVTdHJpbmdzLmNwcDoKKyAgICAgICAg
KGNyZWF0ZVdlYktpdEJ1bmRsZSk6CisKIDIwMjEtMDItMTAgIFJvYiBCdWlzICA8cmJ1aXNAaWdh
bGlhLmNvbT4KIAogICAgICAgICBVc2UgZXZlbnQgbG9vcCB0byBzZXQgdGl0bGUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0Lm1tIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU0NvbnRleHQubW0KaW5kZXggMGJhNzk5MWVmN2IyN2RhZTI1NTFkNjA0
ZWZjM2RjN2IzMzJjM2JkYS4uYmViMTQzZDBhZjU0MWI5M2U5YmQzYjU1NGY3ZDA1ZTNlNjk4YTkw
OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHQubW0KKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHQubW0KQEAgLTI2Miw3ICsyNjIs
NyBAQCAtIChOU1N0cmluZyAqKW5hbWUKICAgICBpZiAoIW5hbWUpCiAgICAgICAgIHJldHVybiBu
aWw7CiAKLSAgICByZXR1cm4gQ0ZCcmlkZ2luZ1JlbGVhc2UoSlNTdHJpbmdDb3B5Q0ZTdHJpbmco
a0NGQWxsb2NhdG9yRGVmYXVsdCwgbmFtZSkpOworICAgIHJldHVybiBhZG9wdENGKEpTU3RyaW5n
Q29weUNGU3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIG5hbWUpKS5icmlkZ2luZ0F1dG9yZWxl
YXNlKCk7CiB9CiAKIC0gKHZvaWQpc2V0TmFtZTooTlNTdHJpbmcgKiluYW1lCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmFsdWUubW0gYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL0pTVmFsdWUubW0KaW5kZXggMTg0NGIwNjEzMjU1MWNlOWJiYWNlNDI0MjQxZjE2
YjliZGRkOTRlMi4uYWMwOWY2NTQ1MDdjM2RiZDQ5NjBmZDY3MTMzMmJiM2YxMWY5MDYyNSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlLm1tCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZS5tbQpAQCAtNzczLDcgKzc3Myw3IEBAIHN0YXRp
YyBKU0NvbnRhaW5lckNvbnZlcnRvcjo6VGFzayB2YWx1ZVRvT2JqZWN0V2l0aG91dENvcHkoSlNH
bG9iYWxDb250ZXh0UmVmIGNvCiAgICAgICAgIH0gZWxzZSBpZiAoSlNWYWx1ZUlzU3RyaW5nKGNv
bnRleHQsIHZhbHVlKSkgewogICAgICAgICAgICAgLy8gV291bGQgYmUgbmljZSB0byB1bmlxdWUg
c3RyaW5ncywgdG9vLgogICAgICAgICAgICAgYXV0byBqc3N0cmluZyA9IGFkb3B0UmVmKEpTVmFs
dWVUb1N0cmluZ0NvcHkoY29udGV4dCwgdmFsdWUsIDApKTsKLSAgICAgICAgICAgIHByaW1pdGl2
ZSA9IENGQnJpZGdpbmdSZWxlYXNlKEpTU3RyaW5nQ29weUNGU3RyaW5nKGtDRkFsbG9jYXRvckRl
ZmF1bHQsIGpzc3RyaW5nLmdldCgpKSk7CisgICAgICAgICAgICBwcmltaXRpdmUgPSBhZG9wdENG
KEpTU3RyaW5nQ29weUNGU3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIGpzc3RyaW5nLmdldCgp
KSkuYnJpZGdpbmdBdXRvcmVsZWFzZSgpOwogICAgICAgICB9IGVsc2UgaWYgKEpTVmFsdWVJc051
bGwoY29udGV4dCwgdmFsdWUpKQogICAgICAgICAgICAgcHJpbWl0aXZlID0gW05TTnVsbCBudWxs
XTsKICAgICAgICAgZWxzZSB7CkBAIC04ODEsNyArODgxLDcgQEAgaWQgdmFsdWVUb1N0cmluZyhK
U0dsb2JhbENvbnRleHRSZWYgY29udGV4dCwgSlNWYWx1ZVJlZiB2YWx1ZSwgSlNWYWx1ZVJlZiog
ZXhjZXAKICAgICAgICAgcmV0dXJuIG5pbDsKICAgICB9CiAKLSAgICByZXR1cm4gQ0ZCcmlkZ2lu
Z1JlbGVhc2UoSlNTdHJpbmdDb3B5Q0ZTdHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwganNzdHJp
bmcuZ2V0KCkpKTsKKyAgICByZXR1cm4gYWRvcHRDRihKU1N0cmluZ0NvcHlDRlN0cmluZyhrQ0ZB
bGxvY2F0b3JEZWZhdWx0LCBqc3N0cmluZy5nZXQoKSkpLmJyaWRnaW5nQXV0b3JlbGVhc2UoKTsK
IH0KIAogaWQgdmFsdWVUb0RhdGUoSlNHbG9iYWxDb250ZXh0UmVmIGNvbnRleHQsIEpTVmFsdWVS
ZWYgdmFsdWUsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL2NvY29hL1JlbW90ZUluc3BlY3RvclhQQ0Nvbm5l
Y3Rpb24ubW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9jb2NvYS9S
ZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uLm1tCmluZGV4IDcyMzEwM2EwMzg3M2IzN2I5YWVi
OWM3Y2ZlNGQ0MDk2Nzg0ZjNmMzYuLjgxM2MxNjMwZTNkNmEwY2JiMTY4YjI3NmM2NTBlMDU3MTcy
M2JlNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3Rl
L2NvY29hL1JlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24ubW0KKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvY29jb2EvUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVj
dGlvbi5tbQpAQCAtMTE3LDEwICsxMTcsMTAgQEAgTlNEaWN0aW9uYXJ5ICpSZW1vdGVJbnNwZWN0
b3JYUENDb25uZWN0aW9uOjpkZXNlcmlhbGl6ZU1lc3NhZ2UoeHBjX29iamVjdF90IG9iamUKICAg
ICAgICAgcmV0dXJuIG5pbDsKICAgICB9CiAKLSAgICBhdXRvIGRpY3Rpb25hcnkgPSBfQ0ZYUEND
cmVhdGVDRk9iamVjdEZyb21YUENNZXNzYWdlKHhwY0RpY3Rpb25hcnkpOworICAgIGF1dG8gZGlj
dGlvbmFyeSA9IGFkb3B0Q0YoX0NGWFBDQ3JlYXRlQ0ZPYmplY3RGcm9tWFBDTWVzc2FnZSh4cGNE
aWN0aW9uYXJ5KSk7CiAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShkaWN0aW9uYXJ5LCAiVW5hYmxl
IHRvIGRlc2VyaWFsaXplIHhwYyBtZXNzYWdlIik7Ci0gICAgQVNTRVJUKENGR2V0VHlwZUlEKGRp
Y3Rpb25hcnkpID09IENGRGljdGlvbmFyeUdldFR5cGVJRCgpKTsKLSAgICByZXR1cm4gQ0ZCcmlk
Z2luZ1JlbGVhc2UoZGljdGlvbmFyeSk7CisgICAgQVNTRVJUKENGR2V0VHlwZUlEKGRpY3Rpb25h
cnkuZ2V0KCkpID09IENGRGljdGlvbmFyeUdldFR5cGVJRCgpKTsKKyAgICByZXR1cm4gZGljdGlv
bmFyeS5icmlkZ2luZ0F1dG9yZWxlYXNlKCk7CiB9CiAKIHZvaWQgUmVtb3RlSW5zcGVjdG9yWFBD
Q29ubmVjdGlvbjo6aGFuZGxlRXZlbnQoeHBjX29iamVjdF90IG9iamVjdCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL2NvY29hL05TVVJMRXh0cmFzLm1tIGIvU291cmNlL1dURi93dGYvY29j
b2EvTlNVUkxFeHRyYXMubW0KaW5kZXggMjA5ZWE1Yjg2NjRhMWJhMzE5MmY5ZWMyMzUzOWUzMGNl
MmM5N2E4Mi4uNzUwOGYyZjRmMmRjNDJlODJhZjgxZjYzNDgyMGM1ZGQ3NjA2NWQwZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi93dGYvY29jb2EvTlNVUkxFeHRyYXMubW0KKysrIGIvU291cmNlL1dU
Ri93dGYvY29jb2EvTlNVUkxFeHRyYXMubW0KQEAgLTkyLDEwICs5MiwxMCBAQCB2b2lkIGxvYWRJ
RE5BbGxvd2VkU2NyaXB0TGlzdCgpCiAgICAgCiBzdGF0aWMgU3RyaW5nIGRlY29kZVBlcmNlbnRF
c2NhcGVzKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogewotICAgIE5TU3RyaW5nICpzdWJzdHJpbmcg
PSBDRkJyaWRnaW5nUmVsZWFzZShDRlVSTENyZWF0ZVN0cmluZ0J5UmVwbGFjaW5nUGVyY2VudEVz
Y2FwZXMobnVsbHB0ciwgc3RyaW5nLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIENGU1RSKCIiKSkp
OworICAgIGF1dG8gc3Vic3RyaW5nID0gYWRvcHRDRihDRlVSTENyZWF0ZVN0cmluZ0J5UmVwbGFj
aW5nUGVyY2VudEVzY2FwZXMobnVsbHB0ciwgc3RyaW5nLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCks
IENGU1RSKCIiKSkpOwogICAgIGlmICghc3Vic3RyaW5nKQogICAgICAgICByZXR1cm4gc3RyaW5n
OwotICAgIHJldHVybiBzdWJzdHJpbmc7CisgICAgcmV0dXJuIHN1YnN0cmluZy5nZXQoKTsKIH0K
IAogTlNTdHJpbmcgKmRlY29kZUhvc3ROYW1lKE5TU3RyaW5nICpzdHJpbmcpCkBAIC0xMzgsMTEg
KzEzOCwxMSBAQCBOU1VSTCAqVVJMQnlUcnVuY2F0aW5nT25lQ2hhcmFjdGVyQmVmb3JlQ29tcG9u
ZW50KE5TVVJMICpVUkwsIENGVVJMQ29tcG9uZW50VHlwZQogICAgICAgICBDRlVSTEdldEJ5dGVz
KChfX2JyaWRnZSBDRlVSTFJlZilVUkwsIHVybEJ5dGVzLmRhdGEoKSwgbnVtQnl0ZXMpOwogICAg
IH0KIAotICAgIENGVVJMUmVmIHJlc3VsdCA9IENGVVJMQ3JlYXRlV2l0aEJ5dGVzKG51bGxwdHIs
IHVybEJ5dGVzLmRhdGEoKSwgZnJhZ1JnLmxvY2F0aW9uIC0gMSwga0NGU3RyaW5nRW5jb2RpbmdV
VEY4LCBudWxscHRyKTsKKyAgICBhdXRvIHJlc3VsdCA9IGFkb3B0Q0YoQ0ZVUkxDcmVhdGVXaXRo
Qnl0ZXMobnVsbHB0ciwgdXJsQnl0ZXMuZGF0YSgpLCBmcmFnUmcubG9jYXRpb24gLSAxLCBrQ0ZT
dHJpbmdFbmNvZGluZ1VURjgsIG51bGxwdHIpKTsKICAgICBpZiAoIXJlc3VsdCkKLSAgICAgICAg
cmVzdWx0ID0gQ0ZVUkxDcmVhdGVXaXRoQnl0ZXMobnVsbHB0ciwgdXJsQnl0ZXMuZGF0YSgpLCBm
cmFnUmcubG9jYXRpb24gLSAxLCBrQ0ZTdHJpbmdFbmNvZGluZ0lTT0xhdGluMSwgbnVsbHB0cik7
CisgICAgICAgIHJlc3VsdCA9IGFkb3B0Q0YoQ0ZVUkxDcmVhdGVXaXRoQnl0ZXMobnVsbHB0ciwg
dXJsQnl0ZXMuZGF0YSgpLCBmcmFnUmcubG9jYXRpb24gLSAxLCBrQ0ZTdHJpbmdFbmNvZGluZ0lT
T0xhdGluMSwgbnVsbHB0cikpOwogICAgICAgICAKLSAgICByZXR1cm4gcmVzdWx0ID8gQ0ZCcmlk
Z2luZ1JlbGVhc2UocmVzdWx0KSA6IFVSTDsKKyAgICByZXR1cm4gcmVzdWx0ID8gcmVzdWx0LmJy
aWRnaW5nQXV0b3JlbGVhc2UoKSA6IFVSTDsKIH0KIAogc3RhdGljIE5TVVJMICpVUkxCeVJlbW92
aW5nUmVzb3VyY2VTcGVjaWZpZXIoTlNVUkwgKlVSTCkKQEAgLTE1NSw3ICsxNTUsNiBAQCBOU1VS
TCAqVVJMV2l0aERhdGEoTlNEYXRhICpkYXRhLCBOU1VSTCAqYmFzZVVSTCkKICAgICBpZiAoIWRh
dGEpCiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgCi0gICAgTlNVUkwgKnJlc3VsdCA9IG5pbDsK
ICAgICBzaXplX3QgbGVuZ3RoID0gW2RhdGEgbGVuZ3RoXTsKICAgICBpZiAobGVuZ3RoID4gMCkg
ewogICAgICAgICAvLyB3b3JrIGFyb3VuZCA8cmRhcjovLzQ0NzA3NzE+OiBDRlVSTENyZWF0ZUFi
c29sdXRlVVJMV2l0aEJ5dGVzKC4uLCBUUlVFKSBkb2Vzbid0IHJlbW92ZSBub24tcGF0aCBjb21w
b25lbnRzLgpAQCAtMTcxLDEzICsxNzAsMTIgQEAgTlNVUkwgKlVSTFdpdGhEYXRhKE5TRGF0YSAq
ZGF0YSwgTlNVUkwgKmJhc2VVUkwpCiAgICAgICAgIC8vIChlLmcgY2FsbHMgdG8gTlNVUkwgLXBh
dGgpLiBIb3dldmVyLCB0aGlzIGZ1bmN0aW9uIGlzIG5vdCB0b2xlcmFudCBvZiBpbGxlZ2FsIFVU
Ri04IHNlcXVlbmNlcywgd2hpY2gKICAgICAgICAgLy8gY291bGQgZWl0aGVyIGJlIGEgbWFsZm9y
bWVkIHN0cmluZyBvciBieXRlcyBpbiBhIGRpZmZlcmVudCBlbmNvZGluZywgbGlrZSBzaGlmdC1q
aXMsIHNvIHdlIGZhbGwgYmFjawogICAgICAgICAvLyBvbnRvIHVzaW5nIElTTyBMYXRpbiAxIGlu
IHRob3NlIGNhc2VzLgotICAgICAgICByZXN1bHQgPSBDRkJyaWRnaW5nUmVsZWFzZShDRlVSTENy
ZWF0ZUFic29sdXRlVVJMV2l0aEJ5dGVzKG51bGxwdHIsIGJ5dGVzLCBsZW5ndGgsIGtDRlN0cmlu
Z0VuY29kaW5nVVRGOCwgKF9fYnJpZGdlIENGVVJMUmVmKWJhc2VVUkwsIFlFUykpOworICAgICAg
ICBhdXRvIHJlc3VsdCA9IGFkb3B0Q0YoQ0ZVUkxDcmVhdGVBYnNvbHV0ZVVSTFdpdGhCeXRlcyhu
dWxscHRyLCBieXRlcywgbGVuZ3RoLCBrQ0ZTdHJpbmdFbmNvZGluZ1VURjgsIChfX2JyaWRnZSBD
RlVSTFJlZiliYXNlVVJMLCBZRVMpKTsKICAgICAgICAgaWYgKCFyZXN1bHQpCi0gICAgICAgICAg
ICByZXN1bHQgPSBDRkJyaWRnaW5nUmVsZWFzZShDRlVSTENyZWF0ZUFic29sdXRlVVJMV2l0aEJ5
dGVzKG51bGxwdHIsIGJ5dGVzLCBsZW5ndGgsIGtDRlN0cmluZ0VuY29kaW5nSVNPTGF0aW4xLCAo
X19icmlkZ2UgQ0ZVUkxSZWYpYmFzZVVSTCwgWUVTKSk7Ci0gICAgfSBlbHNlCi0gICAgICAgIHJl
c3VsdCA9IFtOU1VSTCBVUkxXaXRoU3RyaW5nOkAiIl07Ci0KLSAgICByZXR1cm4gcmVzdWx0Owor
ICAgICAgICAgICAgcmVzdWx0ID0gYWRvcHRDRihDRlVSTENyZWF0ZUFic29sdXRlVVJMV2l0aEJ5
dGVzKG51bGxwdHIsIGJ5dGVzLCBsZW5ndGgsIGtDRlN0cmluZ0VuY29kaW5nSVNPTGF0aW4xLCAo
X19icmlkZ2UgQ0ZVUkxSZWYpYmFzZVVSTCwgWUVTKSk7CisgICAgICAgIHJldHVybiByZXN1bHQu
YnJpZGdpbmdBdXRvcmVsZWFzZSgpOworICAgIH0KKyAgICByZXR1cm4gW05TVVJMIFVSTFdpdGhT
dHJpbmc6QCIiXTsKIH0KIHN0YXRpYyBOU0RhdGEgKmRhdGFXaXRoVXNlclR5cGVkU3RyaW5nKE5T
U3RyaW5nICpzdHJpbmcpCiB7CkBAIC0zMzYsMTEgKzMzNCwxMSBAQCBzdGF0aWMgTlNVUkwgKlVS
TEJ5UmVtb3ZpbmdDb21wb25lbnRBbmRTdWJzZXF1ZW50Q2hhcmFjdGVyKE5TVVJMICpVUkwsIENG
VVJMQ29tcAogICAgICAgICAKICAgICBtZW1tb3ZlKHVybEJ5dGVzICsgcmFuZ2UubG9jYXRpb24s
IHVybEJ5dGVzICsgcmFuZ2UubG9jYXRpb24gKyByYW5nZS5sZW5ndGgsIG51bUJ5dGVzIC0gcmFu
Z2UubG9jYXRpb24gKyByYW5nZS5sZW5ndGgpOwogICAgIAotICAgIENGVVJMUmVmIHJlc3VsdCA9
IENGVVJMQ3JlYXRlV2l0aEJ5dGVzKG51bGxwdHIsIHVybEJ5dGVzLCBudW1CeXRlcyAtIHJhbmdl
Lmxlbmd0aCwga0NGU3RyaW5nRW5jb2RpbmdVVEY4LCBudWxscHRyKTsKKyAgICBhdXRvIHJlc3Vs
dCA9IGFkb3B0Q0YoQ0ZVUkxDcmVhdGVXaXRoQnl0ZXMobnVsbHB0ciwgdXJsQnl0ZXMsIG51bUJ5
dGVzIC0gcmFuZ2UubGVuZ3RoLCBrQ0ZTdHJpbmdFbmNvZGluZ1VURjgsIG51bGxwdHIpKTsKICAg
ICBpZiAoIXJlc3VsdCkKLSAgICAgICAgcmVzdWx0ID0gQ0ZVUkxDcmVhdGVXaXRoQnl0ZXMobnVs
bHB0ciwgdXJsQnl0ZXMsIG51bUJ5dGVzIC0gcmFuZ2UubGVuZ3RoLCBrQ0ZTdHJpbmdFbmNvZGlu
Z0lTT0xhdGluMSwgbnVsbHB0cik7CisgICAgICAgIHJlc3VsdCA9IGFkb3B0Q0YoQ0ZVUkxDcmVh
dGVXaXRoQnl0ZXMobnVsbHB0ciwgdXJsQnl0ZXMsIG51bUJ5dGVzIC0gcmFuZ2UubGVuZ3RoLCBr
Q0ZTdHJpbmdFbmNvZGluZ0lTT0xhdGluMSwgbnVsbHB0cikpOwogICAgICAgICAgICAgICAgIAot
ICAgIHJldHVybiByZXN1bHQgPyBDRkJyaWRnaW5nUmVsZWFzZShyZXN1bHQpIDogVVJMOworICAg
IHJldHVybiByZXN1bHQgPyByZXN1bHQuYnJpZGdpbmdBdXRvcmVsZWFzZSgpIDogVVJMOwogfQog
CiBOU1VSTCAqVVJMQnlSZW1vdmluZ1VzZXJJbmZvKE5TVVJMICpVUkwpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9BWE9iamVjdENhY2hlTWFjLm1tIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvQVhPYmplY3RDYWNoZU1hYy5tbQppbmRleCBi
N2NmZjc0ZTc2MmEyOGUwNDU1NzQ2NDE2MTJkZTg0YjU2OTQxZjI1Li42OWNlZTI4NWU2NjNmYTU2
OGViZmM3Y2E3ZjVmOWVjZDNmNTJmY2VkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L21hYy9BWE9iamVjdENhY2hlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvbWFjL0FYT2JqZWN0Q2FjaGVNYWMubW0KQEAgLTYwMyw3ICs2MDMsNyBAQCBz
dGF0aWMgQVhUZXh0TWFya2VyUmFuZ2VSZWYgQVhUZXh0TWFya2VyUmFuZ2UoQVhUZXh0TWFya2Vy
UmVmIHN0YXJ0TWFya2VyLCBBWFRleAogICAgIEFTU0VSVChlbmRNYXJrZXIpOwogICAgIEFTU0VS
VChDRkdldFR5cGVJRCgoX19icmlkZ2UgQ0ZUeXBlUmVmKXN0YXJ0TWFya2VyKSA9PSBBWFRleHRN
YXJrZXJHZXRUeXBlSUQoKSk7CiAgICAgQVNTRVJUKENGR2V0VHlwZUlEKChfX2JyaWRnZSBDRlR5
cGVSZWYpZW5kTWFya2VyKSA9PSBBWFRleHRNYXJrZXJHZXRUeXBlSUQoKSk7Ci0gICAgcmV0dXJu
IChBWFRleHRNYXJrZXJSYW5nZVJlZilDRkJyaWRnaW5nUmVsZWFzZShBWFRleHRNYXJrZXJSYW5n
ZUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBzdGFydE1hcmtlciwgZW5kTWFya2VyKSk7Cisg
ICAgcmV0dXJuIChBWFRleHRNYXJrZXJSYW5nZVJlZilhZG9wdENGKEFYVGV4dE1hcmtlclJhbmdl
Q3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIHN0YXJ0TWFya2VyLCBlbmRNYXJrZXIpKS5icmlk
Z2luZ0F1dG9yZWxlYXNlKCk7CiB9CiAKIHN0YXRpYyBBWFRleHRNYXJrZXJSYW5nZVJlZiB0ZXh0
TWFya2VyUmFuZ2VGcm9tTWFya2VycyhBWFRleHRNYXJrZXJSZWYgdGV4dE1hcmtlcjEsIEFYVGV4
dE1hcmtlclJlZiB0ZXh0TWFya2VyMikKQEAgLTYxOCwxNCArNjE4LDE0IEBAIHN0YXRpYyBBWFRl
eHRNYXJrZXJSZWYgQVhUZXh0TWFya2VyUmFuZ2VTdGFydChBWFRleHRNYXJrZXJSYW5nZVJlZiB0
ZXh0TWFya2VyUmFuCiB7CiAgICAgQVNTRVJUKHRleHRNYXJrZXJSYW5nZSk7CiAgICAgQVNTRVJU
KENGR2V0VHlwZUlEKChfX2JyaWRnZSBDRlR5cGVSZWYpdGV4dE1hcmtlclJhbmdlKSA9PSBBWFRl
eHRNYXJrZXJSYW5nZUdldFR5cGVJRCgpKTsKLSAgICByZXR1cm4gKEFYVGV4dE1hcmtlclJlZilD
RkJyaWRnaW5nUmVsZWFzZShBWFRleHRNYXJrZXJSYW5nZUNvcHlTdGFydE1hcmtlcih0ZXh0TWFy
a2VyUmFuZ2UpKTsKKyAgICByZXR1cm4gKEFYVGV4dE1hcmtlclJlZilhZG9wdENGKEFYVGV4dE1h
cmtlclJhbmdlQ29weVN0YXJ0TWFya2VyKHRleHRNYXJrZXJSYW5nZSkpLmJyaWRnaW5nQXV0b3Jl
bGVhc2UoKTsKIH0KIAogc3RhdGljIEFYVGV4dE1hcmtlclJlZiBBWFRleHRNYXJrZXJSYW5nZUVu
ZChBWFRleHRNYXJrZXJSYW5nZVJlZiB0ZXh0TWFya2VyUmFuZ2UpCiB7CiAgICAgQVNTRVJUKHRl
eHRNYXJrZXJSYW5nZSk7CiAgICAgQVNTRVJUKENGR2V0VHlwZUlEKChfX2JyaWRnZSBDRlR5cGVS
ZWYpdGV4dE1hcmtlclJhbmdlKSA9PSBBWFRleHRNYXJrZXJSYW5nZUdldFR5cGVJRCgpKTsKLSAg
ICByZXR1cm4gKEFYVGV4dE1hcmtlclJlZilDRkJyaWRnaW5nUmVsZWFzZShBWFRleHRNYXJrZXJS
YW5nZUNvcHlFbmRNYXJrZXIodGV4dE1hcmtlclJhbmdlKSk7CisgICAgcmV0dXJuIChBWFRleHRN
YXJrZXJSZWYpYWRvcHRDRihBWFRleHRNYXJrZXJSYW5nZUNvcHlFbmRNYXJrZXIodGV4dE1hcmtl
clJhbmdlKSkuYnJpZGdpbmdBdXRvcmVsZWFzZSgpOwogfQogCiBzdGF0aWMgVGV4dE1hcmtlckRh
dGEgZ2V0Qnl0ZXNGcm9tQVhUZXh0TWFya2VyKEFYVGV4dE1hcmtlclJlZiB0ZXh0TWFya2VyKQpA
QCAtNjcxLDcgKzY3MSw3IEBAIEFYVGV4dE1hcmtlclJlZiB0ZXh0TWFya2VyRm9yVmlzaWJsZVBv
c2l0aW9uKEFYT2JqZWN0Q2FjaGUqIGNhY2hlLCBjb25zdCBWaXNpYmxlCiAgICAgaWYgKCF0ZXh0
TWFya2VyRGF0YSkKICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAgIHJldHVybiAoQVhUZXh0TWFy
a2VyUmVmKUNGQnJpZGdpbmdSZWxlYXNlKEFYVGV4dE1hcmtlckNyZWF0ZShrQ0ZBbGxvY2F0b3JE
ZWZhdWx0LCAoY29uc3QgVUludDgqKSZ0ZXh0TWFya2VyRGF0YS52YWx1ZSgpLCBzaXplb2YodGV4
dE1hcmtlckRhdGEudmFsdWUoKSkpKTsKKyAgICByZXR1cm4gKEFYVGV4dE1hcmtlclJlZilhZG9w
dENGKEFYVGV4dE1hcmtlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAoY29uc3QgVUludDgq
KSZ0ZXh0TWFya2VyRGF0YS52YWx1ZSgpLCBzaXplb2YodGV4dE1hcmtlckRhdGEudmFsdWUoKSkp
KS5icmlkZ2luZ0F1dG9yZWxlYXNlKCk7CiB9CiAKIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9z
aXRpb25Gb3JUZXh0TWFya2VyKEFYT2JqZWN0Q2FjaGUqIGNhY2hlLCBBWFRleHRNYXJrZXJSZWYg
dGV4dE1hcmtlcikKQEAgLTcyMSw3ICs3MjEsNyBAQCBBWFRleHRNYXJrZXJSZWYgdGV4dE1hcmtl
ckZvckNoYXJhY3Rlck9mZnNldChBWE9iamVjdENhY2hlKiBjYWNoZSwgY29uc3QgQ2hhcmFjdAog
ICAgIGlmICghdGV4dE1hcmtlckRhdGEuYXhJRCB8fCB0ZXh0TWFya2VyRGF0YS5pZ25vcmVkKQog
ICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgcmV0dXJuIChBWFRleHRNYXJrZXJSZWYpQ0ZCcmlk
Z2luZ1JlbGVhc2UoQVhUZXh0TWFya2VyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIChjb25z
dCBVSW50OCopJnRleHRNYXJrZXJEYXRhLCBzaXplb2YodGV4dE1hcmtlckRhdGEpKSk7CisgICAg
cmV0dXJuIChBWFRleHRNYXJrZXJSZWYpYWRvcHRDRihBWFRleHRNYXJrZXJDcmVhdGUoa0NGQWxs
b2NhdG9yRGVmYXVsdCwgKGNvbnN0IFVJbnQ4KikmdGV4dE1hcmtlckRhdGEsIHNpemVvZih0ZXh0
TWFya2VyRGF0YSkpKS5icmlkZ2luZ0F1dG9yZWxlYXNlKCk7CiB9CiAKIENoYXJhY3Rlck9mZnNl
dCBjaGFyYWN0ZXJPZmZzZXRGb3JUZXh0TWFya2VyKEFYT2JqZWN0Q2FjaGUqIGNhY2hlLCBBWFRl
eHRNYXJrZXJSZWYgdGV4dE1hcmtlcikKQEAgLTc0Nyw3ICs3NDcsNyBAQCBBWFRleHRNYXJrZXJS
ZWYgc3RhcnRPckVuZFRleHRNYXJrZXJGb3JSYW5nZShBWE9iamVjdENhY2hlKiBjYWNoZSwgY29u
c3QgT3B0aW9uYQogICAgIGlmICghdGV4dE1hcmtlckRhdGEuYXhJRCkKICAgICAgICAgcmV0dXJu
IG5pbDsKIAotICAgIHJldHVybiAoQVhUZXh0TWFya2VyUmVmKUNGQnJpZGdpbmdSZWxlYXNlKEFY
VGV4dE1hcmtlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAoY29uc3QgVUludDgqKSZ0ZXh0
TWFya2VyRGF0YSwgc2l6ZW9mKHRleHRNYXJrZXJEYXRhKSkpOworICAgIHJldHVybiAoQVhUZXh0
TWFya2VyUmVmKWFkb3B0Q0YoQVhUZXh0TWFya2VyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQs
IChjb25zdCBVSW50OCopJnRleHRNYXJrZXJEYXRhLCBzaXplb2YodGV4dE1hcmtlckRhdGEpKSku
YnJpZGdpbmdBdXRvcmVsZWFzZSgpOwogfQogCiBBWFRleHRNYXJrZXJSYW5nZVJlZiB0ZXh0TWFy
a2VyUmFuZ2VGcm9tUmFuZ2UoQVhPYmplY3RDYWNoZSogY2FjaGUsIGNvbnN0IE9wdGlvbmFsPFNp
bXBsZVJhbmdlPiYgcmFuZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2Uu
bW0KaW5kZXggOTMwNzY4N2I3ZjgwN2RiNWFiYTQ2Nzc1MDg2YzRhNWNjOGRlNzBjMS4uMGZjODI4
ODQ2ZGIzMWZhOGIwNTY1YjFjYjdmZmMwOTgwNmY0MDg0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNl
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxp
dHlPYmplY3RXcmFwcGVyQmFzZS5tbQpAQCAtMzI0LDggKzMyNCw3IEBAIC0gKFdlYkNvcmU6OkFY
Q29yZU9iamVjdCopdXBkYXRlT2JqZWN0QmFja2luZ1N0b3JlCiB7CiAgICAgLy8gQ2FsbGluZyB1
cGRhdGVCYWNraW5nU3RvcmUoKSBjYW4gaW52YWxpZGF0ZSB0aGlzIGVsZW1lbnQgc28gc2VsZiBt
dXN0IGJlIHJldGFpbmVkLgogICAgIC8vIElmIGl0IGRvZXMgYmVjb21lIGludmFsaWRhdGVkLCBz
ZWxmLmF4QmFja2luZ09iamVjdCB3aWxsIGJlIG5pbC4KLSAgICBDRlJldGFpbigoX19icmlkZ2Ug
Q0ZUeXBlUmVmKXNlbGYpOwotICAgIENGQXV0b3JlbGVhc2UoKF9fYnJpZGdlIENGVHlwZVJlZilz
ZWxmKTsKKyAgICByZXRhaW5QdHIoc2VsZikuYXV0b3JlbGVhc2UoKTsKIAogICAgIGF1dG8qIGJh
Y2tpbmdPYmplY3QgPSBzZWxmLmF4QmFja2luZ09iamVjdDsKICAgICBpZiAoIWJhY2tpbmdPYmpl
Y3QpCkBAIC00MzMsMTEgKzQzMiwxMCBAQCBzdGF0aWMgdm9pZCBjb252ZXJ0UGF0aFRvU2NyZWVu
U3BhY2VGdW5jdGlvbihQYXRoQ29udmVyc2lvbkluZm8mIGNvbnZlcnNpb24sIGNvbgogCiAtIChD
R1BhdGhSZWYpY29udmVydFBhdGhUb1NjcmVlblNwYWNlOihjb25zdCBQYXRoJilwYXRoCiB7Ci0g
ICAgUGF0aENvbnZlcnNpb25JbmZvIGNvbnZlcnNpb24gPSB7IHNlbGYsIENHUGF0aENyZWF0ZU11
dGFibGUoKSB9OworICAgIFBhdGhDb252ZXJzaW9uSW5mbyBjb252ZXJzaW9uID0geyBzZWxmLCBh
ZG9wdENGKENHUGF0aENyZWF0ZU11dGFibGUoKSkuYXV0b3JlbGVhc2UoKSB9OwogICAgIHBhdGgu
YXBwbHkoWyZjb252ZXJzaW9uXShjb25zdCBQYXRoRWxlbWVudCYgcGF0aEVsZW1lbnQpIHsKICAg
ICAgICAgY29udmVydFBhdGhUb1NjcmVlblNwYWNlRnVuY3Rpb24oY29udmVyc2lvbiwgcGF0aEVs
ZW1lbnQpOwogICAgIH0pOwotICAgIENGQXV0b3JlbGVhc2UoY29udmVyc2lvbi5wYXRoKTsKICAg
ICByZXR1cm4gY29udmVyc2lvbi5wYXRoOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbSBi
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RX
cmFwcGVyTWFjLm1tCmluZGV4IDgzZWYyNGMxNThhZTcwYzM2MjRmOTM1M2M3NjlmZGUwY2MyNzU2
NmUuLjJiMDA1Y2U2NzU5MDk0Njc0MGNjYmVjMzYwOTMwMmVkZDhjZjlmOGYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RX
cmFwcGVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCkBAIC03NDIsNyArNzQyLDcgQEAgc3RhdGlj
IGlkIG5leHRUZXh0TWFya2VyRm9yQ2hhcmFjdGVyT2Zmc2V0KEFYT2JqZWN0Q2FjaGUqIGNhY2hl
LCBDaGFyYWN0ZXJPZmZzZXQKICAgICBjYWNoZS0+dGV4dE1hcmtlckRhdGFGb3JOZXh0Q2hhcmFj
dGVyT2Zmc2V0KHRleHRNYXJrZXJEYXRhLCBjaGFyYWN0ZXJPZmZzZXQpOwogICAgIGlmICghdGV4
dE1hcmtlckRhdGEuYXhJRCkKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICByZXR1cm4gQ0ZCcmlk
Z2luZ1JlbGVhc2UoQVhUZXh0TWFya2VyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIChjb25z
dCBVSW50OCopJnRleHRNYXJrZXJEYXRhLCBzaXplb2YodGV4dE1hcmtlckRhdGEpKSk7CisgICAg
cmV0dXJuIGFkb3B0Q0YoQVhUZXh0TWFya2VyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIChj
b25zdCBVSW50OCopJnRleHRNYXJrZXJEYXRhLCBzaXplb2YodGV4dE1hcmtlckRhdGEpKSkuYnJp
ZGdpbmdBdXRvcmVsZWFzZSgpOwogfQogCiBzdGF0aWMgaWQgcHJldmlvdXNUZXh0TWFya2VyRm9y
Q2hhcmFjdGVyT2Zmc2V0KEFYT2JqZWN0Q2FjaGUqIGNhY2hlLCBDaGFyYWN0ZXJPZmZzZXQmIGNo
YXJhY3Rlck9mZnNldCkKQEAgLTc1NCw3ICs3NTQsNyBAQCBzdGF0aWMgaWQgcHJldmlvdXNUZXh0
TWFya2VyRm9yQ2hhcmFjdGVyT2Zmc2V0KEFYT2JqZWN0Q2FjaGUqIGNhY2hlLCBDaGFyYWN0ZXJP
ZgogICAgIGNhY2hlLT50ZXh0TWFya2VyRGF0YUZvclByZXZpb3VzQ2hhcmFjdGVyT2Zmc2V0KHRl
eHRNYXJrZXJEYXRhLCBjaGFyYWN0ZXJPZmZzZXQpOwogICAgIGlmICghdGV4dE1hcmtlckRhdGEu
YXhJRCkKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICByZXR1cm4gQ0ZCcmlkZ2luZ1JlbGVhc2Uo
QVhUZXh0TWFya2VyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIChjb25zdCBVSW50OCopJnRl
eHRNYXJrZXJEYXRhLCBzaXplb2YodGV4dE1hcmtlckRhdGEpKSk7CisgICAgcmV0dXJuIGFkb3B0
Q0YoQVhUZXh0TWFya2VyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIChjb25zdCBVSW50OCop
JnRleHRNYXJrZXJEYXRhLCBzaXplb2YodGV4dE1hcmtlckRhdGEpKSkuYnJpZGdpbmdBdXRvcmVs
ZWFzZSgpOwogfQogCiAtIChpZCluZXh0VGV4dE1hcmtlckZvckNoYXJhY3Rlck9mZnNldDooQ2hh
cmFjdGVyT2Zmc2V0JiljaGFyYWN0ZXJPZmZzZXQKQEAgLTc5Miw3ICs3OTIsNyBAQCAtIChpZCl0
ZXh0TWFya2VyRm9yRmlyc3RQb3NpdGlvbkluVGV4dENvbnRyb2w6KEhUTUxUZXh0Rm9ybUNvbnRy
b2xFbGVtZW50ICYpdGV4dAogICAgIGlmICghdGV4dE1hcmtlckRhdGEpCiAgICAgICAgIHJldHVy
biBuaWw7CiAKLSAgICByZXR1cm4gQ0ZCcmlkZ2luZ1JlbGVhc2UoQVhUZXh0TWFya2VyQ3JlYXRl
KGtDRkFsbG9jYXRvckRlZmF1bHQsIChjb25zdCBVSW50OCopJnRleHRNYXJrZXJEYXRhLnZhbHVl
KCksIHNpemVvZih0ZXh0TWFya2VyRGF0YS52YWx1ZSgpKSkpOworICAgIHJldHVybiBhZG9wdENG
KEFYVGV4dE1hcmtlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAoY29uc3QgVUludDgqKSZ0
ZXh0TWFya2VyRGF0YS52YWx1ZSgpLCBzaXplb2YodGV4dE1hcmtlckRhdGEudmFsdWUoKSkpKS5i
cmlkZ2luZ0F1dG9yZWxlYXNlKCk7CiB9CiAKIC8vIFdoZW4gbW9kaWZ5aW5nIGF0dHJpYnV0ZWQg
c3RyaW5ncywgdGhlIHJhbmdlIGNhbiBjb21lIGZyb20gYSBzb3VyY2Ugd2hpY2ggbWF5IHByb3Zp
ZGUgZmF1bHR5IGluZm9ybWF0aW9uIChlLmcuIHRoZSBzcGVsbCBjaGVja2VyKS4KQEAgLTEwMTgs
MTEgKzEwMTgsOCBAQCBzdGF0aWMgdm9pZCBBWEF0dHJpYnV0ZVN0cmluZ1NldEVsZW1lbnQoTlNN
dXRhYmxlQXR0cmlidXRlZFN0cmluZyogYXR0clN0cmluZywgTgogICAgICAgICBpZiAoW2F0dHJp
YnV0ZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5QXR0YWNobWVudFRleHRBdHRyaWJ1
dGVdICYmIG9iamVjdC0+aXNBdHRhY2htZW50KCkgJiYgW29iamVjdFdyYXBwZXIgYXR0YWNobWVu
dFZpZXddKQogICAgICAgICAgICAgb2JqZWN0V3JhcHBlciA9IFtvYmplY3RXcmFwcGVyIGF0dGFj
aG1lbnRWaWV3XTsKICAgICAgICAgCi0gICAgICAgIEFYVUlFbGVtZW50UmVmIGF4RWxlbWVudCA9
IE5TQWNjZXNzaWJpbGl0eUNyZWF0ZUFYVUlFbGVtZW50UmVmKG9iamVjdFdyYXBwZXIpOwotICAg
ICAgICBpZiAoYXhFbGVtZW50KSB7Ci0gICAgICAgICAgICBbYXR0clN0cmluZyBhZGRBdHRyaWJ1
dGU6YXR0cmlidXRlIHZhbHVlOihfX2JyaWRnZSBpZClheEVsZW1lbnQgcmFuZ2U6cmFuZ2VdOwot
ICAgICAgICAgICAgQ0ZSZWxlYXNlKGF4RWxlbWVudCk7Ci0gICAgICAgIH0KKyAgICAgICAgaWYg
KGF1dG8gYXhFbGVtZW50ID0gYWRvcHRDRihOU0FjY2Vzc2liaWxpdHlDcmVhdGVBWFVJRWxlbWVu
dFJlZihvYmplY3RXcmFwcGVyKSkpCisgICAgICAgICAgICBbYXR0clN0cmluZyBhZGRBdHRyaWJ1
dGU6YXR0cmlidXRlIHZhbHVlOihfX2JyaWRnZSBpZClheEVsZW1lbnQuZ2V0KCkgcmFuZ2U6cmFu
Z2VdOwogICAgIH0gZWxzZQogICAgICAgICBbYXR0clN0cmluZyByZW1vdmVBdHRyaWJ1dGU6YXR0
cmlidXRlIHJhbmdlOnJhbmdlXTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvY29jb2EvSFRNTENvbnZlcnRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2Ev
SFRNTENvbnZlcnRlci5tbQppbmRleCA2NWU4NTUyNTI1MGQ0MGJhYzBjM2YzODU2Yjc4Mzk4MzYw
YzBiOTI0Li44Y2FmYTdjMzZlNmRkNjA1MDkyNzdkZTBhY2ZkMmMwMzE1NjhkMGMyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCkBAIC0yMDkwLDcg
KzIwOTAsNiBAQCB2b2lkIEhUTUxDb252ZXJ0ZXI6Ol9wcm9jZXNzVGV4dChDaGFyYWN0ZXJEYXRh
JiBjaGFyYWN0ZXJEYXRhKQogICAgIHVuaWNoYXIgbGFzdENoYXIgPSAodGV4dExlbmd0aCA+IDAp
ID8gW1tfYXR0clN0ciBzdHJpbmddIGNoYXJhY3RlckF0SW5kZXg6dGV4dExlbmd0aCAtIDFdIDog
J1xuJzsKICAgICBCT09MIHN1cHByZXNzTGVhZGluZ1NwYWNlID0gKChfZmxhZ3MuaXNTb2Z0ICYm
IGxhc3RDaGFyID09ICcgJykgfHwgbGFzdENoYXIgPT0gJ1xuJyB8fCBsYXN0Q2hhciA9PSAnXHIn
IHx8IGxhc3RDaGFyID09ICdcdCcgfHwgbGFzdENoYXIgPT0gTlNQYXJhZ3JhcGhTZXBhcmF0b3JD
aGFyYWN0ZXIgfHwgbGFzdENoYXIgPT0gTlNMaW5lU2VwYXJhdG9yQ2hhcmFjdGVyIHx8IGxhc3RD
aGFyID09IE5TRm9ybUZlZWRDaGFyYWN0ZXIgfHwgbGFzdENoYXIgPT0gV2ViTmV4dExpbmVDaGFy
YWN0ZXIpOwogICAgIE5TUmFuZ2UgcmFuZ2VUb1JlcGxhY2UgPSBOU01ha2VSYW5nZSh0ZXh0TGVu
Z3RoLCAwKTsKLSAgICBDRk11dGFibGVTdHJpbmdSZWYgbXV0c3RyID0gTlVMTDsKIAogICAgIFN0
cmluZyBvcmlnaW5hbFN0cmluZyA9IGNoYXJhY3RlckRhdGEuZGF0YSgpOwogICAgIHVuc2lnbmVk
IHN0YXJ0T2Zmc2V0ID0gMDsKQEAgLTIxNjAsOCArMjE1OSw2IEBAIHZvaWQgSFRNTENvbnZlcnRl
cjo6X3Byb2Nlc3NUZXh0KENoYXJhY3RlckRhdGEmIGNoYXJhY3RlckRhdGEpCiAgICAgICAgICAg
ICBbX2F0dHJTdHIgc2V0QXR0cmlidXRlczphZ2dyZWdhdGVkQXR0cmlidXRlc0ZvckFuY2VzdG9y
cyhjaGFyYWN0ZXJEYXRhKSByYW5nZTpyYW5nZVRvUmVwbGFjZV07CiAgICAgICAgIF9mbGFncy5p
c1NvZnQgPSB3YXNTcGFjZTsKICAgICB9Ci0gICAgaWYgKG11dHN0cikKLSAgICAgICAgQ0ZSZWxl
YXNlKG11dHN0cik7CiB9CiAKIHZvaWQgSFRNTENvbnZlcnRlcjo6X3RyYXZlcnNlTm9kZShOb2Rl
JiBub2RlLCB1bnNpZ25lZCBkZXB0aCwgYm9vbCBlbWJlZGRlZCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNvY29hLm1tCmluZGV4IDk2ZjQ2
YzRjYzAyZTg5YTgyYTZkZjY1MzY3NGQwOTczNDMxODA1NGYuLmZhNGI5MDNiZWY5Mzk0ODFjMjJl
YTdkZjU1MWU4YjU1ZTdlMGU1MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
b2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5tbQpAQCAtMTAyLDEwICsxMDIsOSBAQCBEaXNr
Q2FjaGVNb25pdG9yOjpEaXNrQ2FjaGVNb25pdG9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdCwgUEFMOjpTZXNzaW9uSQogCiAjaWYgVVNFKFdFQl9USFJFQUQpCiAgICAgYXV0byBibG9j
a1RvUnVuID0gXihDRkNhY2hlZFVSTFJlc3BvbnNlUmVmIHJlc3BvbnNlKSB7Ci0gICAgICAgIENG
UmV0YWluKHJlc3BvbnNlKTsKKyAgICAgICAgYXV0byBzdHJvbmdSZXNwb25zZSA9IHJldGFpblB0
cihyZXNwb25zZSk7CiAgICAgICAgIFdlYlRocmVhZFJ1biheewotICAgICAgICAgICAgYmxvY2so
cmVzcG9uc2UpOwotICAgICAgICAgICAgQ0ZSZWxlYXNlKHJlc3BvbnNlKTsKKyAgICAgICAgICAg
IGJsb2NrKHN0cm9uZ1Jlc3BvbnNlLmdldCgpKTsKICAgICAgICAgfSk7CiAgICAgfTsKICNlbHNl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9FdmVudEhhbmRsZXJNYWMubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9FdmVudEhhbmRsZXJNYWMubW0KaW5kZXggYjI0OWU0
ZjRmZDk5MmI0ZTYxYWU3ZmVmOTAwMDhmNTY4ZjkxMGU5Yi4uOWQxMGE5ZmE3ZjE5ZDQwMjFjMTQ4
N2Q1ZWJjYTY1MDNhZWNhYzQyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMv
RXZlbnRIYW5kbGVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0V2ZW50SGFu
ZGxlck1hYy5tbQpAQCAtNDY4LDEzICs0NjgsMTIgQEAgc3RhdGljIHZvaWQgc2V0TlNTY3JvbGxW
aWV3U2Nyb2xsV2hlZWxTaG91bGRSZXRhaW5TZWxmKGJvb2wgc2hvdWxkUmV0YWluKQogCiBzdGF0
aWMgdm9pZCBzZWxmUmV0YWluaW5nTlNTY3JvbGxWaWV3U2Nyb2xsV2hlZWwoTlNTY3JvbGxWaWV3
ICpzZWxmLCBTRUwgc2VsZWN0b3IsIE5TRXZlbnQgKmV2ZW50KQogeworICAgIFJldGFpblB0cjxO
U1Njcm9sbFZpZXc+IHN0cm9uZ1NlbGY7CiAgICAgYm9vbCBzaG91bGRSZXRhaW5TZWxmID0gaXNN
YWluVGhyZWFkKCkgJiYgbnNTY3JvbGxWaWV3U2Nyb2xsV2hlZWxTaG91bGRSZXRhaW5TZWxmKCk7
Ci0KICAgICBpZiAoc2hvdWxkUmV0YWluU2VsZikKLSAgICAgICAgQ0ZSZXRhaW4oKF9fYnJpZGdl
IENGVHlwZVJlZilzZWxmKTsKKyAgICAgICAgc3Ryb25nU2VsZiA9IHJldGFpblB0cihzZWxmKTsK
KwogICAgIHd0ZkNhbGxJTVA8dm9pZD4ob3JpZ2luYWxOU1Njcm9sbFZpZXdTY3JvbGxXaGVlbCwg
c2VsZiwgc2VsZWN0b3IsIGV2ZW50KTsKLSAgICBpZiAoc2hvdWxkUmV0YWluU2VsZikKLSAgICAg
ICAgQ0ZSZWxlYXNlKChfX2JyaWRnZSBDRlR5cGVSZWYpc2VsZik7CiB9CiAKIGJvb2wgRXZlbnRI
YW5kbGVyOjpwYXNzV2hlZWxFdmVudFRvV2lkZ2V0KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYg
d2hlZWxFdmVudCwgV2lkZ2V0JiB3aWRnZXQsIE9wdGlvblNldDxXaGVlbEV2ZW50UHJvY2Vzc2lu
Z1N0ZXBzPiBwcm9jZXNzaW5nU3RlcHMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L3dpbi9GcmFtZUNHV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvd2luL0ZyYW1lQ0dXaW4u
Y3BwCmluZGV4IGYwNTU2YTNkYWIyYTkyOWZmYmRjYzNhMjBhNjE5Njc1NmI2NjdhMjEuLjczZDhi
NDljZWE3Y2E2NThkNTU0NmQzZWIxNTIyYWQzNGMwYWVjMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2Uvd2luL0ZyYW1lQ0dXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
d2luL0ZyYW1lQ0dXaW4uY3BwCkBAIC02OCwxNSArNjgsMTQgQEAgR0RJT2JqZWN0PEhCSVRNQVA+
IGltYWdlRnJvbVJlY3QoY29uc3QgRnJhbWUqIGZyYW1lLCBJbnRSZWN0JiBpcikKICAgICAgICAg
cmV0dXJuIGhibXA7CiAKICAgICBIR0RJT0JKIGhibXBPbGQgPSBTZWxlY3RPYmplY3QoaGRjLmdl
dCgpLCBoYm1wLmdldCgpKTsKLSAgICBDR0NvbnRleHRSZWYgY29udGV4dCA9IENHQml0bWFwQ29u
dGV4dENyZWF0ZShzdGF0aWNfY2FzdDx2b2lkKj4oYml0cyksIHcsIGgsCi0gICAgICAgIDgsIHcg
KiBzaXplb2YoUkdCUVVBRCksIHNSR0JDb2xvclNwYWNlUmVmKCksIGtDR0JpdG1hcEJ5dGVPcmRl
cjMyTGl0dGxlIHwga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRGaXJzdCk7Ci0gICAgQ0dDb250
ZXh0U2F2ZUdTdGF0ZShjb250ZXh0KTsKKyAgICBhdXRvIGNvbnRleHQgPSBhZG9wdENGKENHQml0
bWFwQ29udGV4dENyZWF0ZShzdGF0aWNfY2FzdDx2b2lkKj4oYml0cyksIHcsIGgsCisgICAgICAg
IDgsIHcgKiBzaXplb2YoUkdCUVVBRCksIHNSR0JDb2xvclNwYWNlUmVmKCksIGtDR0JpdG1hcEJ5
dGVPcmRlcjMyTGl0dGxlIHwga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRGaXJzdCkpOworICAg
IENHQ29udGV4dFNhdmVHU3RhdGUoY29udGV4dC5nZXQoKSk7CiAKLSAgICBHcmFwaGljc0NvbnRl
eHQgZ2MoY29udGV4dCk7CisgICAgR3JhcGhpY3NDb250ZXh0IGdjKGNvbnRleHQuZ2V0KCkpOwog
CiAgICAgZHJhd1JlY3RJbnRvQ29udGV4dChpciwgZnJhbWUtPnZpZXcoKSwgZ2MpOwogCi0gICAg
Q0dDb250ZXh0UmVsZWFzZShjb250ZXh0KTsKICAgICBTZWxlY3RPYmplY3QoaGRjLmdldCgpLCBo
Ym1wT2xkKTsKIAogICAgIGZyYW1lLT52aWV3KCktPnNldFBhaW50QmVoYXZpb3Iob2xkUGFpbnRC
ZWhhdmlvcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9NYWluVGhy
ZWFkU2hhcmVkVGltZXJDRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9NYWluVGhy
ZWFkU2hhcmVkVGltZXJDRi5jcHAKaW5kZXggMjhjZDliNzNmZTZiOGE4OGE5NDRhMjAyMDlkN2E3
YTBlMDVlMDEwNC4uNTQyMGE1YTg1OWZiY2JjYzA0ZjVkNWY5ODVmMDg3MmE1NDA1MTNiOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvTWFpblRocmVhZFNoYXJlZFRpbWVy
Q0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL01haW5UaHJlYWRTaGFyZWRU
aW1lckNGLmNwcApAQCAtMzcsNyArMzcsMTEgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1z
dGF0aWMgQ0ZSdW5Mb29wVGltZXJSZWYgc2hhcmVkVGltZXI7CitzdGF0aWMgUmV0YWluUHRyPENG
UnVuTG9vcFRpbWVyUmVmPiYgc2hhcmVkVGltZXIoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxSZXRhaW5QdHI8Q0ZSdW5Mb29wVGltZXJSZWY+PiBzaGFyZWRUaW1lcjsKKyAgICByZXR1
cm4gc2hhcmVkVGltZXI7Cit9CiBzdGF0aWMgdm9pZCB0aW1lckZpcmVkKENGUnVuTG9vcFRpbWVy
UmVmLCB2b2lkKik7CiAKIHN0YXRpYyBjb25zdCBDRlRpbWVJbnRlcnZhbCBrQ0ZUaW1lSW50ZXJ2
YWxEaXN0YW50RnV0dXJlID0gc3RkOjpudW1lcmljX2xpbWl0czxDRlRpbWVJbnRlcnZhbD46Om1h
eCgpOwpAQCAtODMsNyArODcsNyBAQCBzdGF0aWMgdm9pZCB0aW1lckZpcmVkKENGUnVuTG9vcFRp
bWVyUmVmLCB2b2lkKikKIAogdm9pZCBNYWluVGhyZWFkU2hhcmVkVGltZXI6OnJlc3RhcnRTaGFy
ZWRUaW1lcigpCiB7Ci0gICAgaWYgKCFzaGFyZWRUaW1lcikKKyAgICBpZiAoIXNoYXJlZFRpbWVy
KCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIE1haW5UaHJlYWRTaGFyZWRUaW1lcjo6c2luZ2xl
dG9uKCkuc3RvcCgpOwpAQCAtOTIsMTIgKzk2LDExIEBAIHZvaWQgTWFpblRocmVhZFNoYXJlZFRp
bWVyOjpyZXN0YXJ0U2hhcmVkVGltZXIoKQogCiB2b2lkIE1haW5UaHJlYWRTaGFyZWRUaW1lcjo6
aW52YWxpZGF0ZSgpCiB7Ci0gICAgaWYgKCFzaGFyZWRUaW1lcikKKyAgICBpZiAoIXNoYXJlZFRp
bWVyKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIENGUnVuTG9vcFRpbWVySW52YWxpZGF0ZShz
aGFyZWRUaW1lcik7Ci0gICAgQ0ZSZWxlYXNlKHNoYXJlZFRpbWVyKTsKLSAgICBzaGFyZWRUaW1l
ciA9IG51bGxwdHI7CisgICAgQ0ZSdW5Mb29wVGltZXJJbnZhbGlkYXRlKHNoYXJlZFRpbWVyKCku
Z2V0KCkpOworICAgIHNoYXJlZFRpbWVyKCkgPSBudWxscHRyOwogfQogCiB2b2lkIE1haW5UaHJl
YWRTaGFyZWRUaW1lcjo6c2V0RmlyZUludGVydmFsKFNlY29uZHMgaW50ZXJ2YWwpCkBAIC0xMDUs
MTIgKzEwOCwxMiBAQCB2b2lkIE1haW5UaHJlYWRTaGFyZWRUaW1lcjo6c2V0RmlyZUludGVydmFs
KFNlY29uZHMgaW50ZXJ2YWwpCiAgICAgQVNTRVJUKG1fZmlyZWRGdW5jdGlvbik7CiAKICAgICBD
RkFic29sdXRlVGltZSBmaXJlRGF0ZSA9IENGQWJzb2x1dGVUaW1lR2V0Q3VycmVudCgpICsgaW50
ZXJ2YWwudmFsdWUoKTsKLSAgICBpZiAoIXNoYXJlZFRpbWVyKSB7Ci0gICAgICAgIHNoYXJlZFRp
bWVyID0gQ0ZSdW5Mb29wVGltZXJDcmVhdGUobnVsbHB0ciwgZmlyZURhdGUsIGtDRlRpbWVJbnRl
cnZhbERpc3RhbnRGdXR1cmUsIDAsIDAsIHRpbWVyRmlyZWQsIG51bGxwdHIpOworICAgIGlmICgh
c2hhcmVkVGltZXIoKSkgeworICAgICAgICBzaGFyZWRUaW1lcigpID0gYWRvcHRDRihDRlJ1bkxv
b3BUaW1lckNyZWF0ZShudWxscHRyLCBmaXJlRGF0ZSwga0NGVGltZUludGVydmFsRGlzdGFudEZ1
dHVyZSwgMCwgMCwgdGltZXJGaXJlZCwgbnVsbHB0cikpOwogI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCi0gICAgICAgIENGUnVuTG9vcEFkZFRpbWVyKFdlYlRocmVhZFJ1bkxvb3AoKSwgc2hhcmVk
VGltZXIsIGtDRlJ1bkxvb3BDb21tb25Nb2Rlcyk7CisgICAgICAgIENGUnVuTG9vcEFkZFRpbWVy
KFdlYlRocmVhZFJ1bkxvb3AoKSwgc2hhcmVkVGltZXIoKS5nZXQoKSwga0NGUnVuTG9vcENvbW1v
bk1vZGVzKTsKICNlbHNlCi0gICAgICAgIENGUnVuTG9vcEFkZFRpbWVyKENGUnVuTG9vcEdldEN1
cnJlbnQoKSwgc2hhcmVkVGltZXIsIGtDRlJ1bkxvb3BDb21tb25Nb2Rlcyk7CisgICAgICAgIENG
UnVuTG9vcEFkZFRpbWVyKENGUnVuTG9vcEdldEN1cnJlbnQoKSwgc2hhcmVkVGltZXIoKS5nZXQo
KSwga0NGUnVuTG9vcENvbW1vbk1vZGVzKTsKICNlbmRpZgogCiAgICAgICAgIHNldHVwUG93ZXJP
YnNlcnZlcigpOwpAQCAtMTE4LDE1ICsxMjEsMTUgQEAgdm9pZCBNYWluVGhyZWFkU2hhcmVkVGlt
ZXI6OnNldEZpcmVJbnRlcnZhbChTZWNvbmRzIGludGVydmFsKQogICAgICAgICByZXR1cm47CiAg
ICAgfQogCi0gICAgQ0ZSdW5Mb29wVGltZXJTZXROZXh0RmlyZURhdGUoc2hhcmVkVGltZXIsIGZp
cmVEYXRlKTsKKyAgICBDRlJ1bkxvb3BUaW1lclNldE5leHRGaXJlRGF0ZShzaGFyZWRUaW1lcigp
LmdldCgpLCBmaXJlRGF0ZSk7CiB9CiAKIHZvaWQgTWFpblRocmVhZFNoYXJlZFRpbWVyOjpzdG9w
KCkKIHsKLSAgICBpZiAoIXNoYXJlZFRpbWVyKQorICAgIGlmICghc2hhcmVkVGltZXIoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgQ0ZSdW5Mb29wVGltZXJTZXROZXh0RmlyZURhdGUoc2hhcmVk
VGltZXIsIGtDRlRpbWVJbnRlcnZhbERpc3RhbnRGdXR1cmUpOworICAgIENGUnVuTG9vcFRpbWVy
U2V0TmV4dEZpcmVEYXRlKHNoYXJlZFRpbWVyKCkuZ2V0KCksIGtDRlRpbWVJbnRlcnZhbERpc3Rh
bnRGdXR1cmUpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
Qy5tbQppbmRleCA1NzYxYzA5OWIxZjE5NGZhMWYwZDgwM2M2OTVkMDQyZmJlNDQ4M2E5Li5lZTRk
ZWNlN2IyYzQ5MmZlYzc1Yjk4ZDJhYmQwMmUxMGI3YTQ5N2ZlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akMubW0KQEAgLTI4MTAsMTIgKzI4MTAsMTIgQEAgc3RhdGljIE5TU3RyaW5nICpleGVybmFsRGV2
aWNlRGlzcGxheU5hbWVGb3JQbGF5ZXIoQVZQbGF5ZXIgKnBsYXllcikKICAgICBpZiAocGxheWVy
LmV4dGVybmFsUGxheWJhY2tUeXBlICE9IEFWUGxheWVyRXh0ZXJuYWxQbGF5YmFja1R5cGVBaXJQ
bGF5KQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgTlNBcnJheSAqcGlja2FibGVSb3V0ZXMg
PSBDRkJyaWRnaW5nUmVsZWFzZShNUk1lZGlhUmVtb3RlQ29weVBpY2thYmxlUm91dGVzKCkpOwot
ICAgIGlmICghcGlja2FibGVSb3V0ZXMuY291bnQpCisgICAgYXV0byBwaWNrYWJsZVJvdXRlcyA9
IGFkb3B0Q0YoTVJNZWRpYVJlbW90ZUNvcHlQaWNrYWJsZVJvdXRlcygpKTsKKyAgICBpZiAoIXBp
Y2thYmxlUm91dGVzIHx8ICFDRkFycmF5R2V0Q291bnQocGlja2FibGVSb3V0ZXMuZ2V0KCkpKQog
ICAgICAgICByZXR1cm4gbmlsOwogCiAgICAgTlNTdHJpbmcgKmRpc3BsYXlOYW1lID0gbmlsOwot
ICAgIGZvciAoTlNEaWN0aW9uYXJ5ICpwaWNrYWJsZVJvdXRlIGluIHBpY2thYmxlUm91dGVzKSB7
CisgICAgZm9yIChOU0RpY3Rpb25hcnkgKnBpY2thYmxlUm91dGUgaW4gKF9fYnJpZGdlIE5TQXJy
YXkgKilwaWNrYWJsZVJvdXRlcy5nZXQoKSkgewogICAgICAgICBpZiAoIVtwaWNrYWJsZVJvdXRl
W0FWQ29udHJvbGxlcl9Sb3V0ZURlc2NyaXB0aW9uS2V5X1JvdXRlQ3VycmVudGx5UGlja2VkXSBi
b29sVmFsdWVdKQogICAgICAgICAgICAgY29udGludWU7CiAKQEAgLTI4MzAsNyArMjgzMCw3IEBA
IHN0YXRpYyBOU1N0cmluZyAqZXhlcm5hbERldmljZURpc3BsYXlOYW1lRm9yUGxheWVyKEFWUGxh
eWVyICpwbGF5ZXIpCiAKICAgICAgICAgLy8gSW4gY2FzZXMgd2hlcmUgYSByb3V0ZSB3aXRoIHRo
YXQgbmFtZSBhbHJlYWR5IGV4aXN0cywgcHJlZml4IHRoZSBuYW1lIHdpdGggdGhlIG1vZGVsLgog
ICAgICAgICBCT09MIGluY2x1ZGVMb2NhbGl6ZWREZXZpY2VNb2RlbE5hbWUgPSBOTzsKLSAgICAg
ICAgZm9yIChOU0RpY3Rpb25hcnkgKm90aGVyUm91dGUgaW4gcGlja2FibGVSb3V0ZXMpIHsKKyAg
ICAgICAgZm9yIChOU0RpY3Rpb25hcnkgKm90aGVyUm91dGUgaW4gKF9fYnJpZGdlIE5TQXJyYXkg
KilwaWNrYWJsZVJvdXRlcy5nZXQoKSkgewogICAgICAgICAgICAgaWYgKG90aGVyUm91dGUgPT0g
cGlja2FibGVSb3V0ZSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL0NBQ0ZMYXllclRyZWVIb3N0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9DQUNGTGF5ZXJU
cmVlSG9zdC5jcHAKaW5kZXggMTI5ZGRhMGRkYWJhMDgwYTU5MDE2MzA0ZmFkNGVjZmYzZTQ3Y2Vj
MC4uYTZiNzY4M2RlZTViNmUxNWQxNTg2NDM1ZmIzNzExYTE1OWQ0MmNhNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL0NBQ0ZMYXllclRyZWVIb3N0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vQ0FDRkxh
eWVyVHJlZUhvc3QuY3BwCkBAIC0xNTksOSArMTU5LDggQEAgdm9pZCBDQUNGTGF5ZXJUcmVlSG9z
dDo6aW5pdGlhbGl6ZSgpCiAgICAgbV9yb290TGF5ZXItPnNldEdlb21ldHJ5RmxpcHBlZCh0cnVl
KTsKIAogI2lmbmRlZiBOREVCVUcKLSAgICBDR0NvbG9yUmVmIGRlYnVnQ29sb3IgPSBDR0NvbG9y
Q3JlYXRlR2VuZXJpY1JHQigxLCAwLCAwLCAwLjgpOwotICAgIG1fcm9vdExheWVyLT5zZXRCYWNr
Z3JvdW5kQ29sb3IoZGVidWdDb2xvcik7Ci0gICAgQ0dDb2xvclJlbGVhc2UoZGVidWdDb2xvcik7
CisgICAgYXV0byBkZWJ1Z0NvbG9yID0gYWRvcHRDRihDR0NvbG9yQ3JlYXRlR2VuZXJpY1JHQigx
LCAwLCAwLCAwLjgpKTsKKyAgICBtX3Jvb3RMYXllci0+c2V0QmFja2dyb3VuZENvbG9yKGRlYnVn
Q29sb3IuZ2V0KCkpOwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAppbmRleCA5ZGI5MDlj
ZGE4ZWYxNzYxMGYyOTRhOTg1MDkxOGJjMTlhZTc5N2E5Li42NDQzYTcxNTc1OGQ2NzU4NGVlM2Rm
NDE0OTUzZTRmZTc1ODdjMWJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCkBAIC0zNDYsOSArMzQ2LDcg
QEAgc3RhdGljIHZvaWQgZHJhd1BhdHRlcm5DYWxsYmFjayh2b2lkKiBpbmZvLCBDR0NvbnRleHRS
ZWYgY29udGV4dCkKIAogc3RhdGljIHZvaWQgcGF0dGVyblJlbGVhc2VDYWxsYmFjayh2b2lkKiBp
bmZvKQogewotICAgIGNhbGxPbk1haW5UaHJlYWQoW2ltYWdlID0gc3RhdGljX2Nhc3Q8Q0dJbWFn
ZVJlZj4oaW5mbyldIHsKLSAgICAgICAgQ0dJbWFnZVJlbGVhc2UoaW1hZ2UpOwotICAgIH0pOwor
ICAgIGNhbGxPbk1haW5UaHJlYWQoW2ltYWdlID0gYWRvcHRDRihzdGF0aWNfY2FzdDxDR0ltYWdl
UmVmPihpbmZvKSldIHsgfSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3UGxhdGZv
cm1QYXR0ZXJuKGNvbnN0IFBsYXRmb3JtSW1hZ2VQdHImIGltYWdlLCBjb25zdCBGbG9hdFNpemUm
IGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiB0
aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBG
bG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBh
aW50aW5nT3B0aW9ucyYgb3B0aW9ucykKQEAgLTY3NSw4ICs2NzMsOCBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dDo6ZmlsbFBhdGgoY29uc3QgUGF0aCYgcGF0aCkKICAgICAgICAgICAgIEZsb2F0UmVj
dCByZWN0ID0gcGF0aC5mYXN0Qm91bmRpbmdSZWN0KCk7CiAgICAgICAgICAgICBGbG9hdFNpemUg
bGF5ZXJTaXplID0gZ2V0Q1RNKCkubWFwU2l6ZShyZWN0LnNpemUoKSk7CiAKLSAgICAgICAgICAg
IENHTGF5ZXJSZWYgbGF5ZXIgPSBDR0xheWVyQ3JlYXRlV2l0aENvbnRleHQoY29udGV4dCwgbGF5
ZXJTaXplLCAwKTsKLSAgICAgICAgICAgIENHQ29udGV4dFJlZiBsYXllckNvbnRleHQgPSBDR0xh
eWVyR2V0Q29udGV4dChsYXllcik7CisgICAgICAgICAgICBhdXRvIGxheWVyID0gYWRvcHRDRihD
R0xheWVyQ3JlYXRlV2l0aENvbnRleHQoY29udGV4dCwgbGF5ZXJTaXplLCAwKSk7CisgICAgICAg
ICAgICBDR0NvbnRleHRSZWYgbGF5ZXJDb250ZXh0ID0gQ0dMYXllckdldENvbnRleHQobGF5ZXIu
Z2V0KCkpOwogCiAgICAgICAgICAgICBDR0NvbnRleHRTY2FsZUNUTShsYXllckNvbnRleHQsIGxh
eWVyU2l6ZS53aWR0aCgpIC8gcmVjdC53aWR0aCgpLCBsYXllclNpemUuaGVpZ2h0KCkgLyByZWN0
LmhlaWdodCgpKTsKICAgICAgICAgICAgIENHQ29udGV4dFRyYW5zbGF0ZUNUTShsYXllckNvbnRl
eHQsIC1yZWN0LngoKSwgLXJlY3QueSgpKTsKQEAgLTY5MCw4ICs2ODgsNyBAQCB2b2lkIEdyYXBo
aWNzQ29udGV4dDo6ZmlsbFBhdGgoY29uc3QgUGF0aCYgcGF0aCkKICAgICAgICAgICAgICAgICBD
R0NvbnRleHRDbGlwKGxheWVyQ29udGV4dCk7CiAKICAgICAgICAgICAgIG1fc3RhdGUuZmlsbEdy
YWRpZW50LT5wYWludChsYXllckNvbnRleHQpOwotICAgICAgICAgICAgQ0dDb250ZXh0RHJhd0xh
eWVySW5SZWN0KGNvbnRleHQsIHJlY3QsIGxheWVyKTsKLSAgICAgICAgICAgIENHTGF5ZXJSZWxl
YXNlKGxheWVyKTsKKyAgICAgICAgICAgIENHQ29udGV4dERyYXdMYXllckluUmVjdChjb250ZXh0
LCByZWN0LCBsYXllci5nZXQoKSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBDR0Nv
bnRleHRCZWdpblBhdGgoY29udGV4dCk7CiAgICAgICAgICAgICBDR0NvbnRleHRBZGRQYXRoKGNv
bnRleHQsIHBhdGgucGxhdGZvcm1QYXRoKCkpOwpAQCAtNzQ1LDggKzc0Miw4IEBAIHZvaWQgR3Jh
cGhpY3NDb250ZXh0OjpzdHJva2VQYXRoKGNvbnN0IFBhdGgmIHBhdGgpCiAKICAgICAgICAgICAg
IEZsb2F0U2l6ZSBsYXllclNpemUgPSBnZXRDVE0oKS5tYXBTaXplKEZsb2F0U2l6ZShhZGp1c3Rl
ZFdpZHRoLCBhZGp1c3RlZEhlaWdodCkpOwogCi0gICAgICAgICAgICBDR0xheWVyUmVmIGxheWVy
ID0gQ0dMYXllckNyZWF0ZVdpdGhDb250ZXh0KGNvbnRleHQsIGxheWVyU2l6ZSwgMCk7Ci0gICAg
ICAgICAgICBDR0NvbnRleHRSZWYgbGF5ZXJDb250ZXh0ID0gQ0dMYXllckdldENvbnRleHQobGF5
ZXIpOworICAgICAgICAgICAgYXV0byBsYXllciA9IGFkb3B0Q0YoQ0dMYXllckNyZWF0ZVdpdGhD
b250ZXh0KGNvbnRleHQsIGxheWVyU2l6ZSwgMCkpOworICAgICAgICAgICAgQ0dDb250ZXh0UmVm
IGxheWVyQ29udGV4dCA9IENHTGF5ZXJHZXRDb250ZXh0KGxheWVyLmdldCgpKTsKICAgICAgICAg
ICAgIENHQ29udGV4dFNldExpbmVXaWR0aChsYXllckNvbnRleHQsIGxpbmVXaWR0aCk7CiAKICAg
ICAgICAgICAgIC8vIENvbXBlbnNhdGUgZm9yIHRoZSBsaW5lIHdpZHRoLCBvdGhlcndpc2UgdGhl
IGxheWVyJ3MgdG9wLWxlZnQgY29ybmVyIHdvdWxkIGJlCkBAIC03NjUsOCArNzYyLDcgQEAgdm9p
ZCBHcmFwaGljc0NvbnRleHQ6OnN0cm9rZVBhdGgoY29uc3QgUGF0aCYgcGF0aCkKIAogICAgICAg
ICAgICAgZmxvYXQgZGVzdGluYXRpb25YID0gcm91bmRmKHJlY3QueCgpIC0gbGluZVdpZHRoKTsK
ICAgICAgICAgICAgIGZsb2F0IGRlc3RpbmF0aW9uWSA9IHJvdW5kZihyZWN0LnkoKSAtIGxpbmVX
aWR0aCk7Ci0gICAgICAgICAgICBDR0NvbnRleHREcmF3TGF5ZXJJblJlY3QoY29udGV4dCwgQ0dS
ZWN0TWFrZShkZXN0aW5hdGlvblgsIGRlc3RpbmF0aW9uWSwgYWRqdXN0ZWRXaWR0aCwgYWRqdXN0
ZWRIZWlnaHQpLCBsYXllcik7Ci0gICAgICAgICAgICBDR0xheWVyUmVsZWFzZShsYXllcik7Cisg
ICAgICAgICAgICBDR0NvbnRleHREcmF3TGF5ZXJJblJlY3QoY29udGV4dCwgQ0dSZWN0TWFrZShk
ZXN0aW5hdGlvblgsIGRlc3RpbmF0aW9uWSwgYWRqdXN0ZWRXaWR0aCwgYWRqdXN0ZWRIZWlnaHQp
LCBsYXllci5nZXQoKSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBDR0NvbnRleHRT
dGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7CiAgICAgICAgICAgICBDR0NvbnRleHRCZWdp
blBhdGgoY29udGV4dCk7CkBAIC04MTcsOCArODEzLDggQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6
OmZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKICAgICAgICAgaWYgKGhhc1NoYWRvdygp
KSB7CiAgICAgICAgICAgICBGbG9hdFNpemUgbGF5ZXJTaXplID0gZ2V0Q1RNKCkubWFwU2l6ZShy
ZWN0LnNpemUoKSk7CiAKLSAgICAgICAgICAgIENHTGF5ZXJSZWYgbGF5ZXIgPSBDR0xheWVyQ3Jl
YXRlV2l0aENvbnRleHQoY29udGV4dCwgbGF5ZXJTaXplLCAwKTsKLSAgICAgICAgICAgIENHQ29u
dGV4dFJlZiBsYXllckNvbnRleHQgPSBDR0xheWVyR2V0Q29udGV4dChsYXllcik7CisgICAgICAg
ICAgICBhdXRvIGxheWVyID0gYWRvcHRDRihDR0xheWVyQ3JlYXRlV2l0aENvbnRleHQoY29udGV4
dCwgbGF5ZXJTaXplLCAwKSk7CisgICAgICAgICAgICBDR0NvbnRleHRSZWYgbGF5ZXJDb250ZXh0
ID0gQ0dMYXllckdldENvbnRleHQobGF5ZXIuZ2V0KCkpOwogCiAgICAgICAgICAgICBDR0NvbnRl
eHRTY2FsZUNUTShsYXllckNvbnRleHQsIGxheWVyU2l6ZS53aWR0aCgpIC8gcmVjdC53aWR0aCgp
LCBsYXllclNpemUuaGVpZ2h0KCkgLyByZWN0LmhlaWdodCgpKTsKICAgICAgICAgICAgIENHQ29u
dGV4dFRyYW5zbGF0ZUNUTShsYXllckNvbnRleHQsIC1yZWN0LngoKSwgLXJlY3QueSgpKTsKQEAg
LTgyNyw4ICs4MjMsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3QoY29uc3QgRmxv
YXRSZWN0JiByZWN0KQogCiAgICAgICAgICAgICBDR0NvbnRleHRDb25jYXRDVE0obGF5ZXJDb250
ZXh0LCBtX3N0YXRlLmZpbGxHcmFkaWVudFNwYWNlVHJhbnNmb3JtKTsKICAgICAgICAgICAgIG1f
c3RhdGUuZmlsbEdyYWRpZW50LT5wYWludChsYXllckNvbnRleHQpOwotICAgICAgICAgICAgQ0dD
b250ZXh0RHJhd0xheWVySW5SZWN0KGNvbnRleHQsIHJlY3QsIGxheWVyKTsKLSAgICAgICAgICAg
IENHTGF5ZXJSZWxlYXNlKGxheWVyKTsKKyAgICAgICAgICAgIENHQ29udGV4dERyYXdMYXllcklu
UmVjdChjb250ZXh0LCByZWN0LCBsYXllci5nZXQoKSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAg
ICAgICAgICBDR0NvbnRleHRDbGlwVG9SZWN0KGNvbnRleHQsIHJlY3QpOwogICAgICAgICAgICAg
Q0dDb250ZXh0Q29uY2F0Q1RNKGNvbnRleHQsIG1fc3RhdGUuZmlsbEdyYWRpZW50U3BhY2VUcmFu
c2Zvcm0pOwpAQCAtMTIyNiw5ICsxMjIxLDkgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnN0cm9r
ZVJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBmbG9hdCBsaW5lV2lkdGgpCiAgICAgICAgICAg
ICBmbG9hdCBhZGp1c3RlZEhlaWdodCA9IGNlaWxmKHJlY3QuaGVpZ2h0KCkgKyBkb3VibGVMaW5l
V2lkdGgpOwogICAgICAgICAgICAgRmxvYXRTaXplIGxheWVyU2l6ZSA9IGdldENUTSgpLm1hcFNp
emUoRmxvYXRTaXplKGFkanVzdGVkV2lkdGgsIGFkanVzdGVkSGVpZ2h0KSk7CiAKLSAgICAgICAg
ICAgIENHTGF5ZXJSZWYgbGF5ZXIgPSBDR0xheWVyQ3JlYXRlV2l0aENvbnRleHQoY29udGV4dCwg
bGF5ZXJTaXplLCAwKTsKKyAgICAgICAgICAgIGF1dG8gbGF5ZXIgPSBhZG9wdENGKENHTGF5ZXJD
cmVhdGVXaXRoQ29udGV4dChjb250ZXh0LCBsYXllclNpemUsIDApKTsKIAotICAgICAgICAgICAg
Q0dDb250ZXh0UmVmIGxheWVyQ29udGV4dCA9IENHTGF5ZXJHZXRDb250ZXh0KGxheWVyKTsKKyAg
ICAgICAgICAgIENHQ29udGV4dFJlZiBsYXllckNvbnRleHQgPSBDR0xheWVyR2V0Q29udGV4dChs
YXllci5nZXQoKSk7CiAgICAgICAgICAgICBtX3N0YXRlLnN0cm9rZVRoaWNrbmVzcyA9IGxpbmVX
aWR0aDsKICAgICAgICAgICAgIENHQ29udGV4dFNldExpbmVXaWR0aChsYXllckNvbnRleHQsIGxp
bmVXaWR0aCk7CiAKQEAgLTEyNDgsOCArMTI0Myw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Ojpz
dHJva2VSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgZmxvYXQgbGluZVdpZHRoKQogCiAgICAg
ICAgICAgICBjb25zdCBmbG9hdCBkZXN0aW5hdGlvblggPSByb3VuZGYocmVjdC54KCkgLSBsaW5l
V2lkdGgpOwogICAgICAgICAgICAgY29uc3QgZmxvYXQgZGVzdGluYXRpb25ZID0gcm91bmRmKHJl
Y3QueSgpIC0gbGluZVdpZHRoKTsKLSAgICAgICAgICAgIENHQ29udGV4dERyYXdMYXllckluUmVj
dChjb250ZXh0LCBDR1JlY3RNYWtlKGRlc3RpbmF0aW9uWCwgZGVzdGluYXRpb25ZLCBhZGp1c3Rl
ZFdpZHRoLCBhZGp1c3RlZEhlaWdodCksIGxheWVyKTsKLSAgICAgICAgICAgIENHTGF5ZXJSZWxl
YXNlKGxheWVyKTsKKyAgICAgICAgICAgIENHQ29udGV4dERyYXdMYXllckluUmVjdChjb250ZXh0
LCBDR1JlY3RNYWtlKGRlc3RpbmF0aW9uWCwgZGVzdGluYXRpb25ZLCBhZGp1c3RlZFdpZHRoLCBh
ZGp1c3RlZEhlaWdodCksIGxheWVyLmdldCgpKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAg
ICAgIENHQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsKICAgICAgICAgICAg
IHNldFN0cm9rZVRoaWNrbmVzcyhsaW5lV2lkdGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0dGVybkNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL1BhdHRlcm5DRy5jcHAKaW5kZXggZjFiOWUzYTdjMDU1NjlhOTg5
MWI2OThkMjgzYWI1Mzk3YzcyNWY1NC4uM2FlYzc3NTZkYjhjZDI1MGFmZWYxMGQ4M2ZkZWIxZGNj
OTNjZjljMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
UGF0dGVybkNHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Q
YXR0ZXJuQ0cuY3BwCkBAIC01MCw5ICs1MCw3IEBAIHN0YXRpYyB2b2lkIHBhdHRlcm5DYWxsYmFj
ayh2b2lkKiBpbmZvLCBDR0NvbnRleHRSZWYgY29udGV4dCkKIAogc3RhdGljIHZvaWQgcGF0dGVy
blJlbGVhc2VDYWxsYmFjayh2b2lkKiBpbmZvKQogewotICAgIGNhbGxPbk1haW5UaHJlYWQoW2lt
YWdlID0gc3RhdGljX2Nhc3Q8Q0dJbWFnZVJlZj4oaW5mbyldIHsKLSAgICAgICAgQ0dJbWFnZVJl
bGVhc2UoaW1hZ2UpOwotICAgIH0pOworICAgIGNhbGxPbk1haW5UaHJlYWQoW2ltYWdlID0gYWRv
cHRDRihzdGF0aWNfY2FzdDxDR0ltYWdlUmVmPihpbmZvKSldIHsgfSk7CiB9CiAKIENHUGF0dGVy
blJlZiBQYXR0ZXJuOjpjcmVhdGVQbGF0Zm9ybVBhdHRlcm4oY29uc3QgQWZmaW5lVHJhbnNmb3Jt
JiB1c2VyU3BhY2VUcmFuc2Zvcm0pIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5jcHAKaW5kZXgg
OTljYmNmZDBiNmRhMTVjZTMyMDg3NzVkMTViNWRkYmI2YWFjOGYwZS4uZmE3N2IzOTk3N2RiOTc4
YTA1OTcxYjZjMjVjNDFmMzcyZGU1MjRiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcApAQCAt
MTI3OSw4ICsxMjc5LDcgQEAgc3RhdGljIHZvaWQgYXV0b0FjdGl2YXRlRm9udChjb25zdCBTdHJp
bmcmIG5hbWUsIENHRmxvYXQgc2l6ZSkKICAgICBDRlR5cGVSZWYgdmFsdWVzW10gPSB7IGZvbnRO
YW1lLmdldCgpIH07CiAgICAgYXV0byBhdHRyaWJ1dGVzID0gYWRvcHRDRihDRkRpY3Rpb25hcnlD
cmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwga2V5cywgdmFsdWVzLCBXVEZfQVJSQVlfTEVOR1RI
KGtleXMpLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFy
eVZhbHVlQ2FsbEJhY2tzKSk7CiAgICAgYXV0byBkZXNjcmlwdG9yID0gYWRvcHRDRihDVEZvbnRE
ZXNjcmlwdG9yQ3JlYXRlV2l0aEF0dHJpYnV0ZXMoYXR0cmlidXRlcy5nZXQoKSkpOwotICAgIGlm
IChhdXRvIG5ld0ZvbnQgPSBDVEZvbnRDcmVhdGVXaXRoRm9udERlc2NyaXB0b3IoZGVzY3JpcHRv
ci5nZXQoKSwgc2l6ZSwgbnVsbHB0cikpCi0gICAgICAgIENGUmVsZWFzZShuZXdGb250KTsKKyAg
ICBhdXRvIG5ld0ZvbnQgPSBhZG9wdENGKENURm9udENyZWF0ZVdpdGhGb250RGVzY3JpcHRvcihk
ZXNjcmlwdG9yLmdldCgpLCBzaXplLCBudWxscHRyKSk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDR1dpbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udENHV2luLmNwcAppbmRleCA1
M2FjN2UyMDAxOGExYjhhOTUwZGM3NDkyNjg1ZDI3NWY4YWJiMTZlLi5jMTllNzQxNTU3YzMwOGM5
NDFlNGVmNzE1ZTNkYjQ2NTk0ZDE4NWI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vRm9udENHV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vRm9udENHV2luLmNwcApAQCAtNDA5LDUwICs0MDksMzYgQEAgdm9p
ZCBGb250Q2FzY2FkZTo6Z2V0UGxhdGZvcm1HbHlwaEFkdmFuY2VzKENHRm9udFJlZiBmb250LCBj
b25zdCBDR0FmZmluZVRyYW5zZm8KIAogICAgIC8vIDxyZGFyOi8vcHJvYmxlbS83NzYxMTY1PiBU
aGUgR0RJIGJhY2sgZW5kIGluIENvcmUgR3JhcGhpY3Mgc29tZXRpbWVzIHJldHVybnMgYWR2YW5j
ZXMgdGhhdAogICAgIC8vIGRpZmZlciBmcm9tIHdoYXQgdGhlIGZvbnQncyBobXR4IHRhYmxlIHNw
ZWNpZmllcy4gVGhlIGZvbGxvd2luZyBjb2RlIGNvcnJlY3RzIHRoYXQuCi0gICAgQ0ZEYXRhUmVm
IGhtdHhUYWJsZSA9IENHRm9udENvcHlUYWJsZUZvclRhZyhmb250LCAnaG10eCcpOworICAgIGF1
dG8gaG10eFRhYmxlID0gYWRvcHRDRihDR0ZvbnRDb3B5VGFibGVGb3JUYWcoZm9udCwgJ2htdHgn
KSk7CiAgICAgaWYgKCFobXR4VGFibGUpCiAgICAgICAgIHJldHVybjsKLSAgICBDRkRhdGFSZWYg
aGhlYVRhYmxlID0gQ0dGb250Q29weVRhYmxlRm9yVGFnKGZvbnQsICdoaGVhJyk7Ci0gICAgaWYg
KCFoaGVhVGFibGUpIHsKLSAgICAgICAgQ0ZSZWxlYXNlKGhtdHhUYWJsZSk7CisgICAgYXV0byBo
aGVhVGFibGUgPSBhZG9wdENGKENHRm9udENvcHlUYWJsZUZvclRhZyhmb250LCAnaGhlYScpKTsK
KyAgICBpZiAoIWhoZWFUYWJsZSkKICAgICAgICAgcmV0dXJuOwotICAgIH0KIAogICAgIGNvbnN0
IENGSW5kZXggaGhlYVRhYmxlU2l6ZSA9IDM2OwogICAgIGNvbnN0IHB0cmRpZmZfdCBoaGVhVGFi
bGVOdW1iZXJPZkhNZXRyaWNzT2Zmc2V0ID0gMzQ7Ci0gICAgaWYgKENGRGF0YUdldExlbmd0aCho
aGVhVGFibGUpIDwgaGhlYVRhYmxlU2l6ZSkgewotICAgICAgICBDRlJlbGVhc2UoaG10eFRhYmxl
KTsKLSAgICAgICAgQ0ZSZWxlYXNlKGhoZWFUYWJsZSk7CisgICAgaWYgKENGRGF0YUdldExlbmd0
aChoaGVhVGFibGUuZ2V0KCkpIDwgaGhlYVRhYmxlU2l6ZSkKICAgICAgICAgcmV0dXJuOwotICAg
IH0KIAotICAgIHVuc2lnbmVkIHNob3J0IG51bWJlck9mSE1ldHJpY3MgPSAqcmVpbnRlcnByZXRf
Y2FzdDxjb25zdCB1bnNpZ25lZCBzaG9ydCo+KENGRGF0YUdldEJ5dGVQdHIoaGhlYVRhYmxlKSAr
IGhoZWFUYWJsZU51bWJlck9mSE1ldHJpY3NPZmZzZXQpOworICAgIHVuc2lnbmVkIHNob3J0IG51
bWJlck9mSE1ldHJpY3MgPSAqcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1bnNpZ25lZCBzaG9ydCo+
KENGRGF0YUdldEJ5dGVQdHIoaGhlYVRhYmxlLmdldCgpKSArIGhoZWFUYWJsZU51bWJlck9mSE1l
dHJpY3NPZmZzZXQpOwogICAgIG51bWJlck9mSE1ldHJpY3MgPSAoKG51bWJlck9mSE1ldHJpY3Mg
JiAweEZGKSA8PCA4KSB8IChudW1iZXJPZkhNZXRyaWNzID4+IDgpOwotICAgIGlmICghbnVtYmVy
T2ZITWV0cmljcykgewotICAgICAgICBDRlJlbGVhc2UoaG10eFRhYmxlKTsKLSAgICAgICAgQ0ZS
ZWxlYXNlKGhoZWFUYWJsZSk7CisgICAgaWYgKCFudW1iZXJPZkhNZXRyaWNzKQogICAgICAgICBy
ZXR1cm47Ci0gICAgfQogCiAgICAgaWYgKGdseXBoID49IG51bWJlck9mSE1ldHJpY3MpCiAgICAg
ICAgIGdseXBoID0gbnVtYmVyT2ZITWV0cmljcyAtIDE7CiAKLSAgICBpZiAoQ0ZEYXRhR2V0TGVu
Z3RoKGhtdHhUYWJsZSkgPCA0ICogKGdseXBoICsgMSkpIHsKLSAgICAgICAgQ0ZSZWxlYXNlKGht
dHhUYWJsZSk7Ci0gICAgICAgIENGUmVsZWFzZShoaGVhVGFibGUpOworICAgIGlmIChDRkRhdGFH
ZXRMZW5ndGgoaG10eFRhYmxlLmdldCgpKSA8IDQgKiAoZ2x5cGggKyAxKSkKICAgICAgICAgcmV0
dXJuOwotICAgIH0KIAotICAgIHVuc2lnbmVkIHNob3J0IGFkdmFuY2VJbkRlc2lnblVuaXRzID0g
KnJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdW5zaWduZWQgc2hvcnQqPihDRkRhdGFHZXRCeXRlUHRy
KGhtdHhUYWJsZSkgKyA0ICogZ2x5cGgpOworICAgIHVuc2lnbmVkIHNob3J0IGFkdmFuY2VJbkRl
c2lnblVuaXRzID0gKnJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdW5zaWduZWQgc2hvcnQqPihDRkRh
dGFHZXRCeXRlUHRyKGhtdHhUYWJsZS5nZXQoKSkgKyA0ICogZ2x5cGgpOwogICAgIGFkdmFuY2VJ
bkRlc2lnblVuaXRzID0gKChhZHZhbmNlSW5EZXNpZ25Vbml0cyAmIDB4RkYpIDw8IDgpIHwgKGFk
dmFuY2VJbkRlc2lnblVuaXRzID4+IDgpOwogICAgIENHU2l6ZSBob3Jpem9udGFsQWR2YW5jZSA9
IENHU2l6ZU1ha2Uoc3RhdGljX2Nhc3Q8Q0dGbG9hdD4oYWR2YW5jZUluRGVzaWduVW5pdHMpIC8g
Q0dGb250R2V0VW5pdHNQZXJFbShmb250KSwgMCk7CiAgICAgaG9yaXpvbnRhbEFkdmFuY2UgPSBD
R1NpemVBcHBseUFmZmluZVRyYW5zZm9ybShob3Jpem9udGFsQWR2YW5jZSwgbSk7CiAgICAgYWR2
YW5jZS53aWR0aCA9IGhvcml6b250YWxBZHZhbmNlLndpZHRoOwogICAgIGlmICghKHN0eWxlICYg
a0NHRm9udFJlbmRlcmluZ1N0eWxlU3VicGl4ZWxQb3NpdGlvbmluZykpCiAgICAgICAgIGFkdmFu
Y2Uud2lkdGggPSByb3VuZGYoYWR2YW5jZS53aWR0aCk7Ci0KLSAgICBDRlJlbGVhc2UoaGhlYVRh
YmxlKTsKLSAgICBDRlJlbGVhc2UoaG10eFRhYmxlKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dENHV2luLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRD
R1dpbi5jcHAKaW5kZXggMzE3ZjhkMDQ1ZDMyOTNhNzhjN2ExYjc1NTQ0NmQwNWRlNDlhMjdjMy4u
Y2VkYjAyZWI5ZTFmOTViZjkwMzMxMTNiYTYwNWQ5Y2NmZmY4NjllOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dENHV2luLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250
ZXh0Q0dXaW4uY3BwCkBAIC0xMDcsMTYgKzEwNywxNCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6
cmVsZWFzZVdpbmRvd3NDb250ZXh0KEhEQyBoZGMsIGNvbnN0IEludFJlY3QmIGRzdFJlY3QsIGJv
bwogCiAgICAgQVNTRVJUKHBpeGVsRGF0YS5iaXRzUGVyUGl4ZWwoKSA9PSAzMik7CiAKLSAgICBD
R0NvbnRleHRSZWYgYml0bWFwQ29udGV4dCA9IENHQml0bWFwQ29udGV4dENyZWF0ZShwaXhlbERh
dGEuYnVmZmVyKCksIHBpeGVsRGF0YS5zaXplKCkud2lkdGgoKSwgcGl4ZWxEYXRhLnNpemUoKS5o
ZWlnaHQoKSwgOCwKKyAgICBhdXRvIGJpdG1hcENvbnRleHQgPSBhZG9wdENGKENHQml0bWFwQ29u
dGV4dENyZWF0ZShwaXhlbERhdGEuYnVmZmVyKCksIHBpeGVsRGF0YS5zaXplKCkud2lkdGgoKSwg
cGl4ZWxEYXRhLnNpemUoKS5oZWlnaHQoKSwgOCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaXhlbERhdGEuYnl0ZXNQZXJSb3coKSwgc1JH
QkNvbG9yU3BhY2VSZWYoKSwga0NHQml0bWFwQnl0ZU9yZGVyMzJMaXR0bGUgfAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzdXBwb3J0QWxw
aGFCbGVuZCA/IGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkRmlyc3QgOiBrQ0dJbWFnZUFscGhh
Tm9uZVNraXBGaXJzdCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIChzdXBwb3J0QWxwaGFCbGVuZCA/IGtDR0ltYWdlQWxwaGFQcmVtdWx0
aXBsaWVkRmlyc3QgOiBrQ0dJbWFnZUFscGhhTm9uZVNraXBGaXJzdCkpKTsKIAotICAgIENHSW1h
Z2VSZWYgaW1hZ2UgPSBDR0JpdG1hcENvbnRleHRDcmVhdGVJbWFnZShiaXRtYXBDb250ZXh0KTsK
LSAgICBDR0NvbnRleHREcmF3SW1hZ2UobV9kYXRhLT5tX2NnQ29udGV4dC5nZXQoKSwgZHN0UmVj
dCwgaW1hZ2UpOworICAgIGF1dG8gaW1hZ2UgPSBhZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0
ZUltYWdlKGJpdG1hcENvbnRleHQuZ2V0KCkpKTsKKyAgICBDR0NvbnRleHREcmF3SW1hZ2UobV9k
YXRhLT5tX2NnQ29udGV4dC5nZXQoKSwgZHN0UmVjdCwgaW1hZ2UuZ2V0KCkpOwogICAgIAogICAg
IC8vIERlbGV0ZSBhbGwgb3VyIGp1bmsuCi0gICAgQ0dJbWFnZVJlbGVhc2UoaW1hZ2UpOwotICAg
IENHQ29udGV4dFJlbGVhc2UoYml0bWFwQ29udGV4dCk7CiAgICAgOjpEZWxldGVEQyhoZGMpOwog
fQogCkBAIC0xNDcsMTYgKzE0NSwxNiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ZvY3Vz
UmluZyhjb25zdCBWZWN0b3I8RmxvYXRSZWN0PiYgcmVjdHMsIGZsb2F0IHdpZHRoLAogICAgIG9m
ZnNldCArPSByYWRpdXM7CiAgICAgQ0dDb2xvclJlZiBjb2xvclJlZiA9IGNvbG9yLmlzVmFsaWQo
KSA/IGNhY2hlZENHQ29sb3IoY29sb3IpIDogbnVsbHB0cjsKIAotICAgIENHTXV0YWJsZVBhdGhS
ZWYgZm9jdXNSaW5nUGF0aCA9IENHUGF0aENyZWF0ZU11dGFibGUoKTsKKyAgICBhdXRvIGZvY3Vz
UmluZ1BhdGggPSBhZG9wdENGKENHUGF0aENyZWF0ZU11dGFibGUoKSk7CiAgICAgdW5zaWduZWQg
cmVjdENvdW50ID0gcmVjdHMuc2l6ZSgpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBy
ZWN0Q291bnQ7IGkrKykKLSAgICAgICAgQ0dQYXRoQWRkUmVjdChmb2N1c1JpbmdQYXRoLCAwLCBD
R1JlY3RJbnNldChyZWN0c1tpXSwgLW9mZnNldCwgLW9mZnNldCkpOworICAgICAgICBDR1BhdGhB
ZGRSZWN0KGZvY3VzUmluZ1BhdGguZ2V0KCksIDAsIENHUmVjdEluc2V0KHJlY3RzW2ldLCAtb2Zm
c2V0LCAtb2Zmc2V0KSk7CiAKICAgICBDR0NvbnRleHRSZWYgY29udGV4dCA9IHBsYXRmb3JtQ29u
dGV4dCgpOwogICAgIENHQ29udGV4dFNhdmVHU3RhdGUoY29udGV4dCk7CiAKICAgICBDR0NvbnRl
eHRCZWdpblBhdGgoY29udGV4dCk7Ci0gICAgQ0dDb250ZXh0QWRkUGF0aChjb250ZXh0LCBmb2N1
c1JpbmdQYXRoKTsKKyAgICBDR0NvbnRleHRBZGRQYXRoKGNvbnRleHQsIGZvY3VzUmluZ1BhdGgu
Z2V0KCkpOwogCiAgICAgLy8gRklYTUU6IFdlIGNsZWFyIHRoZSBmaWxsIGNvbG9yIGhlcmUgdG8g
YXZvaWQgZ2V0dGluZyBhIGJsYWNrIGZpbGwgd2hlbiBkcmF3aW5nIHRoZSBmb2N1cyByaW5nLgog
ICAgIC8vIEZpbmQgb3V0IGZyb20gQ0cgaWYgdGhpcyBpcyB0aGVpciBidWcuCkBAIC0xNjUsOCAr
MTYzLDYgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdGb2N1c1JpbmcoY29uc3QgVmVjdG9y
PEZsb2F0UmVjdD4mIHJlY3RzLCBmbG9hdCB3aWR0aCwKICAgICBDR0NvbnRleHRTZXRGb2N1c1Jp
bmdXaXRoQ29sb3IoY29udGV4dCwgcmFkaXVzLCBjb2xvclJlZiwgMCwgKENGRGljdGlvbmFyeVJl
ZikwKTsKICAgICBDR0NvbnRleHRGaWxsUGF0aChjb250ZXh0KTsKIAotICAgIENHUGF0aFJlbGVh
c2UoZm9jdXNSaW5nUGF0aCk7Ci0KICAgICBDR0NvbnRleHRSZXN0b3JlR1N0YXRlKGNvbnRleHQp
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
SW1hZ2VDR1dpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1h
Z2VDR1dpbi5jcHAKaW5kZXggNmRhYmYyNDEzZmVkMzU3NTlhYjAzOTUzZGE0MzcyMmM4ZDQxNmZk
Ni4uZjhhMTBkNWM0MzZlNzA2MDg5ODcwN2JhOGI2NTQ2NDFjZTJiZGY1NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQ0dXaW4uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNHV2luLmNwcApAQCAt
NzAsMTAgKzcwLDEwIEBAIGJvb2wgQml0bWFwSW1hZ2U6OmdldEhCSVRNQVBPZlNpemUoSEJJVE1B
UCBibXAsIGNvbnN0IEludFNpemUqIHNpemUpCiAgICAgQVNTRVJUKGJtcEluZm8uYm1CaXRzUGl4
ZWwgPT0gMzIpOwogICAgIGludCBidWZmZXJTaXplID0gYm1wSW5mby5ibVdpZHRoQnl0ZXMgKiBi
bXBJbmZvLmJtSGVpZ2h0OwogICAgIAotICAgIENHQ29udGV4dFJlZiBjZ0NvbnRleHQgPSBDR0Jp
dG1hcENvbnRleHRDcmVhdGUoYm1wSW5mby5ibUJpdHMsIGJtcEluZm8uYm1XaWR0aCwgYm1wSW5m
by5ibUhlaWdodCwKLSAgICAgICAgOCwgYm1wSW5mby5ibVdpZHRoQnl0ZXMsIHNSR0JDb2xvclNw
YWNlUmVmKCksIGtDR0JpdG1hcEJ5dGVPcmRlcjMyTGl0dGxlIHwga0NHSW1hZ2VBbHBoYVByZW11
bHRpcGxpZWRGaXJzdCk7CisgICAgYXV0byBjZ0NvbnRleHQgPSBhZG9wdENGKENHQml0bWFwQ29u
dGV4dENyZWF0ZShibXBJbmZvLmJtQml0cywgYm1wSW5mby5ibVdpZHRoLCBibXBJbmZvLmJtSGVp
Z2h0LAorICAgICAgICA4LCBibXBJbmZvLmJtV2lkdGhCeXRlcywgc1JHQkNvbG9yU3BhY2VSZWYo
KSwga0NHQml0bWFwQnl0ZU9yZGVyMzJMaXR0bGUgfCBrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGll
ZEZpcnN0KSk7CiAgIAotICAgIEdyYXBoaWNzQ29udGV4dCBnYyhjZ0NvbnRleHQpOworICAgIEdy
YXBoaWNzQ29udGV4dCBnYyhjZ0NvbnRleHQuZ2V0KCkpOwogCiAgICAgRmxvYXRTaXplIGltYWdl
U2l6ZSA9IEJpdG1hcEltYWdlOjpzaXplKCk7CiAgICAgaWYgKHNpemUpCkBAIC04MSw5ICs4MSw2
IEBAIGJvb2wgQml0bWFwSW1hZ2U6OmdldEhCSVRNQVBPZlNpemUoSEJJVE1BUCBibXAsIGNvbnN0
IEludFNpemUqIHNpemUpCiAgICAgZWxzZQogICAgICAgICBkcmF3KGdjLCBGbG9hdFJlY3QoMC4w
ZiwgMC4wZiwgYm1wSW5mby5ibVdpZHRoLCBibXBJbmZvLmJtSGVpZ2h0KSwgRmxvYXRSZWN0KDAu
MGYsIDAuMGYsIGltYWdlU2l6ZS53aWR0aCgpLCBpbWFnZVNpemUuaGVpZ2h0KCkpLCB7IENvbXBv
c2l0ZU9wZXJhdG9yOjpDb3B5IH0pOwogCi0gICAgLy8gRG8gY2xlYW51cAotICAgIENHQ29udGV4
dFJlbGVhc2UoY2dDb250ZXh0KTsKLQogICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVXNlckFnZW50SU9TLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW9zL1VzZXJBZ2VudElPUy5tbQppbmRleCAzYTYzNDRjZWY0MzdmNDM1
NTEyZTRiOTQwNTU3NDk3MTQ5MzFlMmJhLi4zYjZkZTFlYzBmM2ZjNWQxNDJkY2VjNmE1YWE2ZDMx
Y2M4ZDgwZTU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVXNlckFn
ZW50SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9Vc2VyQWdlbnRJT1Mu
bW0KQEAgLTg5LDExICs4OSwxMCBAQCBTdHJpbmcgc3RhbmRhcmRVc2VyQWdlbnRXaXRoQXBwbGlj
YXRpb25OYW1lKGNvbnN0IFN0cmluZyYgYXBwbGljYXRpb25OYW1lLCBjb25zdAogICAgIC8vIEZJ
WE1FOiBXZSBzaG91bGQgZGVwcmVjYXRlIGFuZCBldmVudHVhbGx5IHJlbW92ZSB0aGlzIG9ic29s
ZXRlIFVBIG92ZXJyaWRlOwogICAgIC8vIHNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjE3OTI3IGZvciBkZXRhaWxzLgogICAgIC8vIENoZWNrIHRvIHNlZSBpZiB0
aGVyZSBpcyBhIHVzZXIgYWdlbnQgb3ZlcnJpZGUgZm9yIGFsbCBXZWJLaXQgY2xpZW50cy4KLSAg
ICBDRlByb3BlcnR5TGlzdFJlZiBvdmVycmlkZSA9IENGUHJlZmVyZW5jZXNDb3B5QXBwVmFsdWUo
Q0ZTVFIoIlVzZXJBZ2VudCIpLCBDRlNUUigiY29tLmFwcGxlLldlYkZvdW5kYXRpb24iKSk7Cisg
ICAgYXV0byBvdmVycmlkZSA9IGFkb3B0Q0YoQ0ZQcmVmZXJlbmNlc0NvcHlBcHBWYWx1ZShDRlNU
UigiVXNlckFnZW50IiksIENGU1RSKCJjb20uYXBwbGUuV2ViRm91bmRhdGlvbiIpKSk7CiAgICAg
aWYgKG92ZXJyaWRlKSB7Ci0gICAgICAgIGlmIChDRkdldFR5cGVJRChvdmVycmlkZSkgPT0gQ0ZT
dHJpbmdHZXRUeXBlSUQoKSkKLSAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxOU1N0cmlu
ZyAqPihDRkJyaWRnaW5nUmVsZWFzZShvdmVycmlkZSkpOwotICAgICAgICBDRlJlbGVhc2Uob3Zl
cnJpZGUpOworICAgICAgICBpZiAoQ0ZHZXRUeXBlSUQob3ZlcnJpZGUuZ2V0KCkpID09IENGU3Ry
aW5nR2V0VHlwZUlEKCkpCisgICAgICAgICAgICByZXR1cm4gKF9fYnJpZGdlIE5TU3RyaW5nICop
b3ZlcnJpZGUuZ2V0KCk7CiAgICAgfQogCiAgICAgU3RyaW5nIG9zVmVyc2lvbiA9IHVzZXJBZ2Vu
dE9TVmVyc2lvbi5pc0VtcHR5KCkgID8gc3lzdGVtTWFya2V0aW5nVmVyc2lvbkZvclVzZXJBZ2Vu
dFN0cmluZygpIDogdXNlckFnZW50T1NWZXJzaW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkLm1tCmluZGV4IDY2MDA3NmFkZjc2NjM3NGY0OWQ1
ZWU1YTliMjkzZTk5ZDY0ZmNkZGMuLjkzMmM3ODJjNmJjYjNiMmQ2N2U5MzQwMmVjNDIxYTM0MmQz
NmJmNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV2ViQ29y
ZVRocmVhZC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dlYkNvcmVU
aHJlYWQubW0KQEAgLTI2NiwxMCArMjY2LDggQEAgc3RhdGljIHZvaWQgU2VuZERlbGVnYXRlTWVz
c2FnZShSZXRhaW5QdHI8TlNJbnZvY2F0aW9uPiYmIGludm9jYXRpb24pCiAgICAgICAgICAgICAg
ICAgZWxzZQogICAgICAgICAgICAgICAgICAgICBkZWxlZ2F0ZUluZm9ybWF0aW9uID0gTlNTdHJp
bmdGcm9tU2VsZWN0b3IoW2RlbGVnYXRlSW52b2NhdGlvbigpIHNlbGVjdG9yXSk7CiAgICAgCi0g
ICAgICAgICAgICAgICAgQ0ZTdHJpbmdSZWYgbW9kZSA9IENGUnVuTG9vcENvcHlDdXJyZW50TW9k
ZShDRlJ1bkxvb3BHZXRNYWluKCkpOwotICAgICAgICAgICAgICAgIE5TTG9nKEAiJXM6IGRlbGVn
YXRlICglQCkgZmFpbGVkIHRvIHJldHVybiBhZnRlciB3YWl0aW5nICVmIHNlY29uZHMuIG1haW4g
cnVuIGxvb3AgbW9kZTogJUAiLCBfX1BSRVRUWV9GVU5DVElPTl9fLCBkZWxlZ2F0ZUluZm9ybWF0
aW9uLCBEZWxlZ2F0ZVdhaXRJbnRlcnZhbC5zZWNvbmRzKCksIG1vZGUpOwotICAgICAgICAgICAg
ICAgIGlmIChtb2RlKQotICAgICAgICAgICAgICAgICAgICBDRlJlbGVhc2UobW9kZSk7CisgICAg
ICAgICAgICAgICAgYXV0byBtb2RlID0gYWRvcHRDRihDRlJ1bkxvb3BDb3B5Q3VycmVudE1vZGUo
Q0ZSdW5Mb29wR2V0TWFpbigpKSk7CisgICAgICAgICAgICAgICAgTlNMb2coQCIlczogZGVsZWdh
dGUgKCVAKSBmYWlsZWQgdG8gcmV0dXJuIGFmdGVyIHdhaXRpbmcgJWYgc2Vjb25kcy4gbWFpbiBy
dW4gbG9vcCBtb2RlOiAlQCIsIF9fUFJFVFRZX0ZVTkNUSU9OX18sIGRlbGVnYXRlSW5mb3JtYXRp
b24sIERlbGVnYXRlV2FpdEludGVydmFsLnNlY29uZHMoKSwgbW9kZS5nZXQoKSk7CiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0KICAgICAgICAgZGVsZWdhdGVMb2NrLnVubG9jaygpOwpAQCAtNjM0
LDE2ICs2MzIsMTQgQEAgc3RhdGljIHZvaWQqIFJ1bldlYlRocmVhZCh2b2lkKikKICAgICB3ZWJU
aHJlYWRSdW5Mb29wID0gQ0ZSdW5Mb29wR2V0Q3VycmVudCgpOwogICAgIHdlYlRocmVhZE5TUnVu
TG9vcCgpID0gW05TUnVuTG9vcCBjdXJyZW50UnVuTG9vcF07CiAKLSAgICBDRlJ1bkxvb3BPYnNl
cnZlclJlZiB3ZWJSdW5Mb29wTG9ja09ic2VydmVyUmVmID0gQ0ZSdW5Mb29wT2JzZXJ2ZXJDcmVh
dGUobnVsbHB0ciwga0NGUnVuTG9vcEJlZm9yZVRpbWVycyB8IGtDRlJ1bkxvb3BCZWZvcmVTb3Vy
Y2VzIHwga0NGUnVuTG9vcEFmdGVyV2FpdGluZywgWUVTLCAwLCBXZWJSdW5Mb29wTG9jaywgbnVs
bHB0cik7Ci0gICAgQ0ZSdW5Mb29wQWRkT2JzZXJ2ZXIod2ViVGhyZWFkUnVuTG9vcCwgd2ViUnVu
TG9vcExvY2tPYnNlcnZlclJlZiwga0NGUnVuTG9vcENvbW1vbk1vZGVzKTsKLSAgICBDRlJlbGVh
c2Uod2ViUnVuTG9vcExvY2tPYnNlcnZlclJlZik7CisgICAgYXV0byB3ZWJSdW5Mb29wTG9ja09i
c2VydmVyUmVmID0gYWRvcHRDRihDRlJ1bkxvb3BPYnNlcnZlckNyZWF0ZShudWxscHRyLCBrQ0ZS
dW5Mb29wQmVmb3JlVGltZXJzIHwga0NGUnVuTG9vcEJlZm9yZVNvdXJjZXMgfCBrQ0ZSdW5Mb29w
QWZ0ZXJXYWl0aW5nLCBZRVMsIDAsIFdlYlJ1bkxvb3BMb2NrLCBudWxscHRyKSk7CisgICAgQ0ZS
dW5Mb29wQWRkT2JzZXJ2ZXIod2ViVGhyZWFkUnVuTG9vcCwgd2ViUnVuTG9vcExvY2tPYnNlcnZl
clJlZi5nZXQoKSwga0NGUnVuTG9vcENvbW1vbk1vZGVzKTsKICAgICAKICAgICBXZWJUaHJlYWRJ
bml0UnVuUXVldWUoKTsKIAogICAgIC8vIFdlIG11c3QgaGF2ZSB0aGUgbG9jayB3aGVuIENBIHBh
aW50cyBpbiB0aGUgd2ViIHRocmVhZC4gQ0EgY29tbWl0cyBhdCAyMDAwMDAwIHNvIHdlIHVzZSBs
YXJnZXIgb3JkZXIgbnVtYmVyIHRoYW4gdGhhdCB0byBmcmVlIHRoZSBsb2NrLgotICAgIENGUnVu
TG9vcE9ic2VydmVyUmVmIHdlYlJ1bkxvb3BVbmxvY2tPYnNlcnZlclJlZiA9IENGUnVuTG9vcE9i
c2VydmVyQ3JlYXRlKG51bGxwdHIsIGtDRlJ1bkxvb3BCZWZvcmVXYWl0aW5nIHwga0NGUnVuTG9v
cEV4aXQsIFlFUywgMjUwMDAwMCwgV2ViUnVuTG9vcFVubG9jaywgbnVsbHB0cik7ICAgIAotICAg
IENGUnVuTG9vcEFkZE9ic2VydmVyKHdlYlRocmVhZFJ1bkxvb3AsIHdlYlJ1bkxvb3BVbmxvY2tP
YnNlcnZlclJlZiwga0NGUnVuTG9vcENvbW1vbk1vZGVzKTsKLSAgICBDRlJlbGVhc2Uod2ViUnVu
TG9vcFVubG9ja09ic2VydmVyUmVmKTsgICAgCisgICAgYXV0byB3ZWJSdW5Mb29wVW5sb2NrT2Jz
ZXJ2ZXJSZWYgPSBhZG9wdENGKENGUnVuTG9vcE9ic2VydmVyQ3JlYXRlKG51bGxwdHIsIGtDRlJ1
bkxvb3BCZWZvcmVXYWl0aW5nIHwga0NGUnVuTG9vcEV4aXQsIFlFUywgMjUwMDAwMCwgV2ViUnVu
TG9vcFVubG9jaywgbnVsbHB0cikpOworICAgIENGUnVuTG9vcEFkZE9ic2VydmVyKHdlYlRocmVh
ZFJ1bkxvb3AsIHdlYlJ1bkxvb3BVbmxvY2tPYnNlcnZlclJlZi5nZXQoKSwga0NGUnVuTG9vcENv
bW1vbk1vZGVzKTsKIAogICAgIENGUnVuTG9vcFNvdXJjZUNvbnRleHQgUmVsZWFzZVNvdXJjZUNv
bnRleHQgPSB7MCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwg
bnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgSGFuZGxlV2ViVGhyZWFkUmVsZWFzZVNvdXJjZX07
CiAgICAgV2ViVGhyZWFkUmVsZWFzZVNvdXJjZSA9IENGUnVuTG9vcFNvdXJjZUNyZWF0ZShudWxs
cHRyLCAtMSwgJlJlbGVhc2VTb3VyY2VDb250ZXh0KTsKQEAgLTgyMyw5ICs4MTksOCBAQCB2b2lk
IFdlYlRocmVhZFVubG9ja0d1YXJkRm9yTWFpbCh2b2lkKQogewogICAgIEFTU0VSVCghV2ViVGhy
ZWFkSXNDdXJyZW50KCkpOwogCi0gICAgQ0ZSdW5Mb29wT2JzZXJ2ZXJSZWYgbWFpblJ1bkxvb3BV
bmxvY2tHdWFyZE9ic2VydmVyID0gQ0ZSdW5Mb29wT2JzZXJ2ZXJDcmVhdGUobnVsbHB0ciwga0NG
UnVuTG9vcEVudHJ5LCBZRVMsIDAsIE1haW5SdW5Mb29wVW5sb2NrR3VhcmQsIG51bGxwdHIpOwot
ICAgIENGUnVuTG9vcEFkZE9ic2VydmVyKENGUnVuTG9vcEdldE1haW4oKSwgbWFpblJ1bkxvb3BV
bmxvY2tHdWFyZE9ic2VydmVyLCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMpOwotICAgIENGUmVsZWFz
ZShtYWluUnVuTG9vcFVubG9ja0d1YXJkT2JzZXJ2ZXIpOworICAgIGF1dG8gbWFpblJ1bkxvb3BV
bmxvY2tHdWFyZE9ic2VydmVyID0gYWRvcHRDRihDRlJ1bkxvb3BPYnNlcnZlckNyZWF0ZShudWxs
cHRyLCBrQ0ZSdW5Mb29wRW50cnksIFlFUywgMCwgTWFpblJ1bkxvb3BVbmxvY2tHdWFyZCwgbnVs
bHB0cikpOworICAgIENGUnVuTG9vcEFkZE9ic2VydmVyKENGUnVuTG9vcEdldE1haW4oKSwgbWFp
blJ1bkxvb3BVbmxvY2tHdWFyZE9ic2VydmVyLmdldCgpLCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMp
OwogfQogCiB2b2lkIF9XZWJUaHJlYWRVbmxvY2soKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNYWMubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplck1hYy5tbQppbmRl
eCAyOTU4ZjFiY2UzOWVjZWM5ODZkYjg4NTI5ZjE1OGQ3MjJmYWQ2NmNhLi5hMjg1YzIyYjIyMTFj
ZmE2OTFhOGUyOGIyZDkxMDk2OWQ5OTA2ZThmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplck1hYy5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplck1hYy5tbQpAQCAt
MjE0LDEyICsyMTQsMTIgQEAgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcjo6flBsYXRmb3JtU3Bl
ZWNoU3ludGhlc2l6ZXIoKQogICAgIFttX3BsYXRmb3JtU3BlZWNoV3JhcHBlci5nZXQoKSBpbnZh
bGlkYXRlXTsKIH0KIAotc3RhdGljIE5TQXJyYXkgKnNwZWVjaFN5bnRoZXNpc0dldFZvaWNlSWRl
bnRpZmllcnMoKQorc3RhdGljIFJldGFpblB0cjxDRkFycmF5UmVmPiBzcGVlY2hTeW50aGVzaXNH
ZXRWb2ljZUlkZW50aWZpZXJzKCkKIHsKICAgICAvLyBHZXQgYWxsIHRoZSB2b2ljZXMgb2ZmZXJl
ZCBieSBUVFMuCiAgICAgLy8gQnkgZGVmYXVsdCBzcGVlY2ggb25seSByZXR1cm5zICJwcmVtaXVt
IiB2b2ljZXMsIHdoaWNoIGRvZXMgbm90IGluY2x1ZGUgYWxsIHRoZQogICAgIC8vIGludGVybmF0
aW9uYWwgdm9pY2VzLiBUaGlzIGFsbG93cyB1cyB0byBvZmZlciBzcGVlY2ggc3ludGhlc2lzIGZv
ciBhbGwgc3VwcG9ydGVkIGxhbmd1YWdlcy4KLSAgICByZXR1cm4gQ0ZCcmlkZ2luZ1JlbGVhc2Uo
Q29weVNwZWVjaFN5bnRoZXNpc1ZvaWNlc0Zvck1vZGUoKF9fYnJpZGdlIENGQXJyYXlSZWYpQFsg
QCJWb2ljZUdyb3VwRGVmYXVsdCIsIEAiVm9pY2VHcm91cENvbXBhY3QiIF0pKTsKKyAgICByZXR1
cm4gYWRvcHRDRihDb3B5U3BlZWNoU3ludGhlc2lzVm9pY2VzRm9yTW9kZSgoX19icmlkZ2UgQ0ZB
cnJheVJlZilAWyBAIlZvaWNlR3JvdXBEZWZhdWx0IiwgQCJWb2ljZUdyb3VwQ29tcGFjdCIgXSkp
OwogfQogCiBzdGF0aWMgTlNTdHJpbmcgKnNwZWVjaFN5bnRoZXNpc0dldERlZmF1bHRWb2ljZUlk
ZW50aWZpZXJGb3JMb2NhbGUoTlNMb2NhbGUgKnVzZXJMb2NhbGUpCkBAIC0yMjcsMTUgKzIyNywx
NSBAQCBzdGF0aWMgTlNTdHJpbmcgKnNwZWVjaFN5bnRoZXNpc0dldERlZmF1bHRWb2ljZUlkZW50
aWZpZXJGb3JMb2NhbGUoTlNMb2NhbGUgKnVzZQogICAgIGlmICghdXNlckxvY2FsZSkKICAgICAg
ICAgcmV0dXJuIG5pbDsKIAotICAgIHJldHVybiAoX19icmlkZ2UgTlNTdHJpbmcgKilHZXRJZGVu
dGlmaWVyU3RyaW5nRm9yUHJlZmVycmVkVm9pY2VJbkxpc3RXaXRoTG9jYWxlKChfX2JyaWRnZSBD
RkFycmF5UmVmKXNwZWVjaFN5bnRoZXNpc0dldFZvaWNlSWRlbnRpZmllcnMoKSwgKF9fYnJpZGdl
IENGTG9jYWxlUmVmKXVzZXJMb2NhbGUpOworICAgIHJldHVybiAoX19icmlkZ2UgTlNTdHJpbmcg
KilHZXRJZGVudGlmaWVyU3RyaW5nRm9yUHJlZmVycmVkVm9pY2VJbkxpc3RXaXRoTG9jYWxlKHNw
ZWVjaFN5bnRoZXNpc0dldFZvaWNlSWRlbnRpZmllcnMoKS5nZXQoKSwgKF9fYnJpZGdlIENGTG9j
YWxlUmVmKXVzZXJMb2NhbGUpOwogfQogCiB2b2lkIFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI6
OmluaXRpYWxpemVWb2ljZUxpc3QoKQogewotICAgIE5TQXJyYXkgKmF2YWlsYWJsZVZvaWNlcyA9
IHNwZWVjaFN5bnRoZXNpc0dldFZvaWNlSWRlbnRpZmllcnMoKTsKLSAgICBOU1VJbnRlZ2VyIGNv
dW50ID0gW2F2YWlsYWJsZVZvaWNlcyBjb3VudF07CisgICAgYXV0byBhdmFpbGFibGVWb2ljZXMg
PSBzcGVlY2hTeW50aGVzaXNHZXRWb2ljZUlkZW50aWZpZXJzKCk7CisgICAgTlNVSW50ZWdlciBj
b3VudCA9IFsoX19icmlkZ2UgTlNBcnJheSAqKWF2YWlsYWJsZVZvaWNlcy5nZXQoKSBjb3VudF07
CiAgICAgZm9yIChOU1VJbnRlZ2VyIGsgPSAwOyBrIDwgY291bnQ7IGsrKykgewotICAgICAgICBO
U1N0cmluZyAqdm9pY2VOYW1lID0gW2F2YWlsYWJsZVZvaWNlcyBvYmplY3RBdEluZGV4OmtdOwor
ICAgICAgICBOU1N0cmluZyAqdm9pY2VOYW1lID0gWyhfX2JyaWRnZSBOU0FycmF5ICopYXZhaWxh
YmxlVm9pY2VzLmdldCgpIG9iamVjdEF0SW5kZXg6a107CiAgICAgICAgIE5TRGljdGlvbmFyeSAq
YXR0cmlidXRlcyA9IFtOU1NwZWVjaFN5bnRoZXNpemVyIGF0dHJpYnV0ZXNGb3JWb2ljZTp2b2lj
ZU5hbWVdOwogCiAgICAgICAgIE5TU3RyaW5nICp2b2ljZVVSSSA9IFthdHRyaWJ1dGVzIG9iamVj
dEZvcktleTpOU1ZvaWNlSWRlbnRpZmllcl07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvUGx1Z2luQmxvY2tsaXN0Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1BsdWdpbkJsb2NrbGlzdC5tbQppbmRleCBhODBiNGFmZWM3NjFkODc5ODdmZjkxMjA3MzQ2
MGI5MzllNDBmNzRmLi4xMzZmNmVkZjY5YjRkYzZkZDc5MmJhMTNjNGM4ZmNkZWM4ZDhlNDFjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGx1Z2luQmxvY2tsaXN0Lm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbHVnaW5CbG9ja2xpc3QubW0KQEAg
LTY5LDggKzY5LDggQEAgYm9vbCBQbHVnaW5CbG9ja2xpc3Q6OmlzUGx1Z2luVXBkYXRlQXZhaWxh
YmxlKE5TU3RyaW5nICpidW5kbGVJZGVudGlmaWVyKQogCiBzdGQ6OnVuaXF1ZV9wdHI8UGx1Z2lu
QmxvY2tsaXN0PiBQbHVnaW5CbG9ja2xpc3Q6OmNyZWF0ZShOU0RpY3Rpb25hcnkgKnByb3BlcnR5
TGlzdCkKIHsKLSAgICBDRkRpY3Rpb25hcnlSZWYgc3lzdGVtVmVyc2lvbkRpY3Rpb25hcnkgPSBf
Q0ZDb3B5U3lzdGVtVmVyc2lvbkRpY3Rpb25hcnkoKTsKLSAgICBDRlN0cmluZ1JlZiBvc1ZlcnNp
b24gPSBzdGF0aWNfY2FzdDxDRlN0cmluZ1JlZj4oQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoc3lzdGVt
VmVyc2lvbkRpY3Rpb25hcnksIF9rQ0ZTeXN0ZW1WZXJzaW9uUHJvZHVjdFZlcnNpb25LZXkpKTsK
KyAgICBhdXRvIHN5c3RlbVZlcnNpb25EaWN0aW9uYXJ5ID0gYWRvcHRDRihfQ0ZDb3B5U3lzdGVt
VmVyc2lvbkRpY3Rpb25hcnkoKSk7CisgICAgQ0ZTdHJpbmdSZWYgb3NWZXJzaW9uID0gc3RhdGlj
X2Nhc3Q8Q0ZTdHJpbmdSZWY+KENGRGljdGlvbmFyeUdldFZhbHVlKHN5c3RlbVZlcnNpb25EaWN0
aW9uYXJ5LmdldCgpLCBfa0NGU3lzdGVtVmVyc2lvblByb2R1Y3RWZXJzaW9uS2V5KSk7CiAKICAg
ICBOU0RpY3Rpb25hcnkgKmRpY3Rpb25hcnkgPSBbcHJvcGVydHlMaXN0IG9iamVjdEZvcktleTpA
IlBsdWdJbkJsb2NrbGlzdCJdOwogCkBAIC0xMTIsOCArMTEyLDYgQEAgc3RkOjp1bmlxdWVfcHRy
PFBsdWdpbkJsb2NrbGlzdD4gUGx1Z2luQmxvY2tsaXN0OjpjcmVhdGUoTlNEaWN0aW9uYXJ5ICpw
cm9wZXJ0eUwKICAgICAgICAgfQogICAgIH0KIAotICAgIENGUmVsZWFzZShzeXN0ZW1WZXJzaW9u
RGljdGlvbmFyeSk7Ci0KICAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPFBsdWdpbkJsb2NrbGlz
dD4obmV3IFBsdWdpbkJsb2NrbGlzdChidW5kbGVJRFRvTWluaW11bVNlY3VyZVZlcnNpb24sIGJ1
bmRsZUlEVG9NaW5pbXVtQ29tcGF0aWJsZVZlcnNpb24sIGJ1bmRsZUlEVG9CbG9ja2VkVmVyc2lv
bnMsIGJ1bmRsZUlEc1dpdGhBdmFpbGFibGVVcGRhdGVzKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJHTEJsb2NrbGlzdC5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9XZWJHTEJsb2NrbGlzdC5tbQppbmRleCA2YzFkMjZlNDc5YTAyODE3
YmRkNWIxODZmYWEyYWE3NmE1ZWNiZGJjLi5kMDRlZTIxNzRkMWRiYzc3ZDdjYWU4NWEzZmFhMjVi
MDE4MTU3ODQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViR0xC
bG9ja2xpc3QubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkdMQmxvY2ts
aXN0Lm1tCkBAIC0xNjgsMTAgKzE2OCw5IEBAIHN0YXRpYyBib29sIG1hdGNoZXNCdWlsZEluZm8o
T1NCdWlsZEluZm8gbWFjaGluZUluZm8sIE9TQnVpbGRJbmZvIGJsb2NrSW5mbywgV2ViCiAKIHN0
ZDo6dW5pcXVlX3B0cjxXZWJHTEJsb2NrbGlzdD4gV2ViR0xCbG9ja2xpc3Q6OmNyZWF0ZShOU0Rp
Y3Rpb25hcnkgKnByb3BlcnR5TGlzdCkKIHsKLSAgICBDRkRpY3Rpb25hcnlSZWYgc3lzdGVtVmVy
c2lvbkRpY3Rpb25hcnkgPSBfQ0ZDb3B5U3lzdGVtVmVyc2lvbkRpY3Rpb25hcnkoKTsKLSAgICBD
RlN0cmluZ1JlZiBvc0J1aWxkID0gc3RhdGljX2Nhc3Q8Q0ZTdHJpbmdSZWY+KENGRGljdGlvbmFy
eUdldFZhbHVlKHN5c3RlbVZlcnNpb25EaWN0aW9uYXJ5LCBfa0NGU3lzdGVtVmVyc2lvbkJ1aWxk
VmVyc2lvbktleSkpOworICAgIGF1dG8gc3lzdGVtVmVyc2lvbkRpY3Rpb25hcnkgPSBhZG9wdENG
KF9DRkNvcHlTeXN0ZW1WZXJzaW9uRGljdGlvbmFyeSgpKTsKKyAgICBDRlN0cmluZ1JlZiBvc0J1
aWxkID0gc3RhdGljX2Nhc3Q8Q0ZTdHJpbmdSZWY+KENGRGljdGlvbmFyeUdldFZhbHVlKHN5c3Rl
bVZlcnNpb25EaWN0aW9uYXJ5LmdldCgpLCBfa0NGU3lzdGVtVmVyc2lvbkJ1aWxkVmVyc2lvbktl
eSkpOwogICAgIE9TQnVpbGRJbmZvIGJ1aWxkSW5mbyA9IGJ1aWxkSW5mb0Zyb21PU0J1aWxkU3Ry
aW5nKChfX2JyaWRnZSBOU1N0cmluZyAqKW9zQnVpbGQpOwotICAgIENGUmVsZWFzZShzeXN0ZW1W
ZXJzaW9uRGljdGlvbmFyeSk7CiAKICAgICBpZiAoIWJ1aWxkSW5mby5tYWpvcikKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXJlY29yZGVyL2NvY29hL0F1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvQXVkaW9TYW1wbGVCdWZmZXJDb21w
cmVzc29yLm1tCmluZGV4IDdlMmY2YWE1MmRjZGUzMjE0NzAxNTkxNjZlNTQ4YTBjYzlhZjRmNTMu
LmM3OWE0Nzk2MjQwMmJiMTMyOTMzYzg3YmZlOThkMjM3ZjU2ZWUwNjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvQXVkaW9TYW1wbGVCdWZm
ZXJDb21wcmVzc29yLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3Jk
ZXIvY29jb2EvQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tCkBAIC0yMjcsOSArMjI3LDgg
QEAgdm9pZCBBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OmF0dGFjaFByaW1pbmdUcmltc0lm
TmVlZGVkKENNU2FtcGxlQnVmZmVyUmVmIGIKICAgICBpZiAoQ01USU1FX0NPTVBBUkVfSU5MSU5F
KGtDTVRpbWVaZXJvLCA8LCBtX3JlbWFpbmluZ1ByaW1lRHVyYXRpb24pKSB7CiAgICAgICAgIENN
VGltZSBzYW1wbGVEdXJhdGlvbiA9IENNU2FtcGxlQnVmZmVyR2V0RHVyYXRpb24oYnVmZmVyKTsK
ICAgICAgICAgQ01UaW1lIHRyaW1EdXJhdGlvbiA9IENNVGltZU1pbmltdW0oc2FtcGxlRHVyYXRp
b24sIG1fcmVtYWluaW5nUHJpbWVEdXJhdGlvbik7Ci0gICAgICAgIENGRGljdGlvbmFyeVJlZiB0
cmltQXRTdGFydERpY3QgPSBDTVRpbWVDb3B5QXNEaWN0aW9uYXJ5KHRyaW1EdXJhdGlvbiwga0NG
QWxsb2NhdG9yRGVmYXVsdCk7Ci0gICAgICAgIENNU2V0QXR0YWNobWVudChidWZmZXIsIGtDTVNh
bXBsZUJ1ZmZlckF0dGFjaG1lbnRLZXlfVHJpbUR1cmF0aW9uQXRTdGFydCwgdHJpbUF0U3RhcnRE
aWN0LCBrQ01BdHRhY2htZW50TW9kZV9TaG91bGRQcm9wYWdhdGUpOwotICAgICAgICBDRlJlbGVh
c2UodHJpbUF0U3RhcnREaWN0KTsKKyAgICAgICAgYXV0byB0cmltQXRTdGFydERpY3QgPSBhZG9w
dENGKENNVGltZUNvcHlBc0RpY3Rpb25hcnkodHJpbUR1cmF0aW9uLCBrQ0ZBbGxvY2F0b3JEZWZh
dWx0KSk7CisgICAgICAgIENNU2V0QXR0YWNobWVudChidWZmZXIsIGtDTVNhbXBsZUJ1ZmZlckF0
dGFjaG1lbnRLZXlfVHJpbUR1cmF0aW9uQXRTdGFydCwgdHJpbUF0U3RhcnREaWN0LmdldCgpLCBr
Q01BdHRhY2htZW50TW9kZV9TaG91bGRQcm9wYWdhdGUpOwogICAgICAgICBtX3JlbWFpbmluZ1By
aW1lRHVyYXRpb24gPSBDTVRpbWVTdWJ0cmFjdChtX3JlbWFpbmluZ1ByaW1lRHVyYXRpb24sIHRy
aW1EdXJhdGlvbik7CiAgICAgfQogfQpAQCAtMzQ3LDcgKzM0Niw3IEBAIE9TU3RhdHVzIEF1ZGlv
U2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6cHJvdmlkZVNvdXJjZURhdGFOdW1PdXRwdXRQYWNrZXRz
KFVJbnQzMioKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgICAgICAgICBh
dXRvIHNhbXBsZUJ1ZmZlciA9IGFkb3B0Q0YoKENNU2FtcGxlQnVmZmVyUmVmKShjb25zdF9jYXN0
PHZvaWQqPihDTUJ1ZmZlclF1ZXVlRGVxdWV1ZUFuZFJldGFpbihtX2lucHV0QnVmZmVyUXVldWUu
Z2V0KCkpKSkpOwotICAgICAgICAgICAgICAgIG1fc2FtcGxlQmxvY2tCdWZmZXIgPSBhZG9wdENG
KChDTUJsb2NrQnVmZmVyUmVmKShjb25zdF9jYXN0PHZvaWQqPihDRlJldGFpbihDTVNhbXBsZUJ1
ZmZlckdldERhdGFCdWZmZXIoc2FtcGxlQnVmZmVyLmdldCgpKSkpKSk7CisgICAgICAgICAgICAg
ICAgbV9zYW1wbGVCbG9ja0J1ZmZlciA9IENNU2FtcGxlQnVmZmVyR2V0RGF0YUJ1ZmZlcihzYW1w
bGVCdWZmZXIuZ2V0KCkpOwogICAgICAgICAgICAgICAgIGlmICghbV9zYW1wbGVCbG9ja0J1ZmZl
cikgewogICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYVN0cmVhbSwg
IkF1ZGlvU2FtcGxlQnVmZmVyQ29tcHJlc3NvciBDTVNhbXBsZUJ1ZmZlckdldERhdGFCdWZmZXIg
ZmFpbGVkIik7CiAgICAgICAgICAgICAgICAgICAgIG1fc2FtcGxlQmxvY2tCdWZmZXJTaXplID0g
MDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29j
b2EvVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFyZWNvcmRlci9jb2NvYS9WaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IubW0KaW5k
ZXggMjg3MTUxMzgwN2NhZDY4Y2JkZmMzZmJlNGVlYjE3ZjQwNjMzOTE5My4uZTAzZTc3MGYwY2Fh
OWJkYzZiMTZkNWFjNzRiYjM3ODZkZjhmNGFkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9WaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3Iu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9WaWRl
b1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IubW0KQEAgLTEwOSw5ICsxMDksOCBAQCB2b2lkIFZpZGVv
U2FtcGxlQnVmZmVyQ29tcHJlc3Nvcjo6dmlkZW9Db21wcmVzc2lvbkNhbGxiYWNrKHZvaWQgKnJl
ZkNvbiwgdm9pZCosCiBzdGF0aWMgaW5saW5lIE9TU3RhdHVzIHNldENvbXByZXNzaW9uU2Vzc2lv
blByb3BlcnR5KFZUQ29tcHJlc3Npb25TZXNzaW9uUmVmIHZ0U2Vzc2lvbiwgQ0ZTdHJpbmdSZWYg
a2V5LCB1aW50MzJfdCB2YWx1ZSkKIHsKICAgICBpbnQ2NF90IHZhbHVlNjQgPSB2YWx1ZTsKLSAg
ICBDRk51bWJlclJlZiBjZlZhbHVlID0gQ0ZOdW1iZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVs
dCwga0NGTnVtYmVyU0ludDY0VHlwZSwgJnZhbHVlNjQpOwotICAgIE9TU3RhdHVzIHN0YXR1cyA9
IFZUU2Vzc2lvblNldFByb3BlcnR5KHZ0U2Vzc2lvbiwga2V5LCBjZlZhbHVlKTsKLSAgICBDRlJl
bGVhc2UoY2ZWYWx1ZSk7CisgICAgYXV0byBjZlZhbHVlID0gYWRvcHRDRihDRk51bWJlckNyZWF0
ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrQ0ZOdW1iZXJTSW50NjRUeXBlLCAmdmFsdWU2NCkpOwor
ICAgIE9TU3RhdHVzIHN0YXR1cyA9IFZUU2Vzc2lvblNldFByb3BlcnR5KHZ0U2Vzc2lvbiwga2V5
LCBjZlZhbHVlLmdldCgpKTsKICAgICByZXR1cm4gc3RhdHVzOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Zvcm1EYXRhU3RyZWFtQ0ZOZXQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Gb3JtRGF0YVN0cmVhbUNGTmV0
LmNwcAppbmRleCAzZjY4ZWFkMzQxMjYyZjU2YmZlMjIxMjAzMmJlNjgzNzZlOGM4MDdmLi5kN2Rk
NjNmZWFiZmIwM2MwMTkyZjI0OWY4NjhhMzQxMDAzY2E0NWY2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Zvcm1EYXRhU3RyZWFtQ0ZOZXQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRm9ybURhdGFTdHJlYW1DRk5ldC5j
cHAKQEAgLTEwMyw3ICsxMDMsNyBAQCBzdHJ1Y3QgRm9ybVN0cmVhbUZpZWxkcyB7CiAgICAgRm9y
bURhdGFGb3JVcGxvYWQgZGF0YTsKICAgICBTY2hlZHVsZVBhaXJIYXNoU2V0IHNjaGVkdWxlZFJ1
bkxvb3BQYWlyczsKICAgICBWZWN0b3I8Rm9ybURhdGFFbGVtZW50PiByZW1haW5pbmdFbGVtZW50
czsgLy8gaW4gcmV2ZXJzZSBvcmRlcgotICAgIENGUmVhZFN0cmVhbVJlZiBjdXJyZW50U3RyZWFt
IHsgbnVsbHB0ciB9OworICAgIFJldGFpblB0cjxDRlJlYWRTdHJlYW1SZWY+IGN1cnJlbnRTdHJl
YW07CiAgICAgbG9uZyBsb25nIGN1cnJlbnRTdHJlYW1SYW5nZUxlbmd0aCB7IEJsb2JEYXRhSXRl
bTo6dG9FbmRPZkZpbGUgfTsKICAgICBNYWxsb2NQdHI8Y2hhciwgV1RGOjpWZWN0b3JNYWxsb2M+
IGN1cnJlbnREYXRhOwogICAgIENGUmVhZFN0cmVhbVJlZiBmb3JtU3RyZWFtIHsgbnVsbHB0ciB9
OwpAQCAtMTE3LDEwICsxMTcsOSBAQCBzdGF0aWMgdm9pZCBjbG9zZUN1cnJlbnRTdHJlYW0oRm9y
bVN0cmVhbUZpZWxkcyogZm9ybSkKICAgICBBU1NFUlQoZm9ybS0+c3RyZWFtSXNCZWluZ09wZW5l
ZE9yQ2xvc2VkTG9jay5pc0hlbGQoKSk7CiAKICAgICBpZiAoZm9ybS0+Y3VycmVudFN0cmVhbSkg
ewotICAgICAgICBDRlJlYWRTdHJlYW1DbG9zZShmb3JtLT5jdXJyZW50U3RyZWFtKTsKLSAgICAg
ICAgQ0ZSZWFkU3RyZWFtU2V0Q2xpZW50KGZvcm0tPmN1cnJlbnRTdHJlYW0sIGtDRlN0cmVhbUV2
ZW50Tm9uZSwgMCwgMCk7Ci0gICAgICAgIENGUmVsZWFzZShmb3JtLT5jdXJyZW50U3RyZWFtKTsK
LSAgICAgICAgZm9ybS0+Y3VycmVudFN0cmVhbSA9IDA7CisgICAgICAgIENGUmVhZFN0cmVhbUNs
b3NlKGZvcm0tPmN1cnJlbnRTdHJlYW0uZ2V0KCkpOworICAgICAgICBDRlJlYWRTdHJlYW1TZXRD
bGllbnQoZm9ybS0+Y3VycmVudFN0cmVhbS5nZXQoKSwga0NGU3RyZWFtRXZlbnROb25lLCAwLCAw
KTsKKyAgICAgICAgZm9ybS0+Y3VycmVudFN0cmVhbSA9IG51bGxwdHI7CiAgICAgICAgIGZvcm0t
PmN1cnJlbnRTdHJlYW1SYW5nZUxlbmd0aCA9IEJsb2JEYXRhSXRlbTo6dG9FbmRPZkZpbGU7CiAg
ICAgfQogICAgIGZvcm0tPmN1cnJlbnREYXRhID0gbnVsbHB0cjsKQEAgLTE0Myw3ICsxNDIsNyBA
QCBzdGF0aWMgYm9vbCBhZHZhbmNlQ3VycmVudFN0cmVhbShGb3JtU3RyZWFtRmllbGRzKiBmb3Jt
KQogICAgICAgICBbZm9ybV0gKFZlY3RvcjxjaGFyPiYgYnl0ZXMpIHsKICAgICAgICAgICAgIHNp
emVfdCBzaXplID0gYnl0ZXMuc2l6ZSgpOwogICAgICAgICAgICAgTWFsbG9jUHRyPGNoYXIsIFdU
Rjo6VmVjdG9yTWFsbG9jPiBkYXRhID0gYnl0ZXMucmVsZWFzZUJ1ZmZlcigpOwotICAgICAgICAg
ICAgZm9ybS0+Y3VycmVudFN0cmVhbSA9IENGUmVhZFN0cmVhbUNyZWF0ZVdpdGhCeXRlc05vQ29w
eSgwLCByZWludGVycHJldF9jYXN0PGNvbnN0IFVJbnQ4Kj4oZGF0YS5nZXQoKSksIHNpemUsIGtD
RkFsbG9jYXRvck51bGwpOworICAgICAgICAgICAgZm9ybS0+Y3VycmVudFN0cmVhbSA9IGFkb3B0
Q0YoQ0ZSZWFkU3RyZWFtQ3JlYXRlV2l0aEJ5dGVzTm9Db3B5KDAsIHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgVUludDgqPihkYXRhLmdldCgpKSwgc2l6ZSwga0NGQWxsb2NhdG9yTnVsbCkpOwogICAg
ICAgICAgICAgZm9ybS0+Y3VycmVudERhdGEgPSBXVEZNb3ZlKGRhdGEpOwogICAgICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgICAgIH0sIFtmb3JtXSAoY29uc3QgRm9ybURhdGFFbGVtZW50OjpF
bmNvZGVkRmlsZURhdGEmIGZpbGVEYXRhKSB7CkBAIC0xNTIsMTQgKzE1MSwxNCBAQCBzdGF0aWMg
Ym9vbCBhZHZhbmNlQ3VycmVudFN0cmVhbShGb3JtU3RyZWFtRmllbGRzKiBmb3JtKQogICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICAgICAgY29uc3QgU3RyaW5nJiBwYXRo
ID0gZmlsZURhdGEuZmlsZW5hbWU7Ci0gICAgICAgICAgICBmb3JtLT5jdXJyZW50U3RyZWFtID0g
Q0ZSZWFkU3RyZWFtQ3JlYXRlV2l0aEZpbGUoMCwgRmlsZVN5c3RlbTo6cGF0aEFzVVJMKHBhdGgp
LmdldCgpKTsKKyAgICAgICAgICAgIGZvcm0tPmN1cnJlbnRTdHJlYW0gPSBhZG9wdENGKENGUmVh
ZFN0cmVhbUNyZWF0ZVdpdGhGaWxlKDAsIEZpbGVTeXN0ZW06OnBhdGhBc1VSTChwYXRoKS5nZXQo
KSkpOwogICAgICAgICAgICAgaWYgKCFmb3JtLT5jdXJyZW50U3RyZWFtKSB7CiAgICAgICAgICAg
ICAgICAgLy8gVGhlIGZpbGUgbXVzdCBoYXZlIGJlZW4gcmVtb3ZlZCBvciBiZWNvbWUgdW5yZWFk
YWJsZS4KICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICBpZiAoZmlsZURhdGEuZmlsZVN0YXJ0ID4gMCkgewogICAgICAgICAgICAgICAgIFJl
dGFpblB0cjxDRk51bWJlclJlZj4gcG9zaXRpb24gPSBhZG9wdENGKENGTnVtYmVyQ3JlYXRlKDAs
IGtDRk51bWJlckxvbmdMb25nVHlwZSwgJmZpbGVEYXRhLmZpbGVTdGFydCkpOwotICAgICAgICAg
ICAgICAgIENGUmVhZFN0cmVhbVNldFByb3BlcnR5KGZvcm0tPmN1cnJlbnRTdHJlYW0sIGtDRlN0
cmVhbVByb3BlcnR5RmlsZUN1cnJlbnRPZmZzZXQsIHBvc2l0aW9uLmdldCgpKTsKKyAgICAgICAg
ICAgICAgICBDRlJlYWRTdHJlYW1TZXRQcm9wZXJ0eShmb3JtLT5jdXJyZW50U3RyZWFtLmdldCgp
LCBrQ0ZTdHJlYW1Qcm9wZXJ0eUZpbGVDdXJyZW50T2Zmc2V0LCBwb3NpdGlvbi5nZXQoKSk7CiAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICBmb3JtLT5jdXJyZW50U3RyZWFtUmFuZ2VMZW5ndGgg
PSBmaWxlRGF0YS5maWxlTGVuZ3RoOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0xNzYs
MTMgKzE3NSwxMyBAQCBzdGF0aWMgYm9vbCBhZHZhbmNlQ3VycmVudFN0cmVhbShGb3JtU3RyZWFt
RmllbGRzKiBmb3JtKQogCiAgICAgLy8gU2V0IHVwIHRoZSBjYWxsYmFjay4KICAgICBDRlN0cmVh
bUNsaWVudENvbnRleHQgY29udGV4dCA9IHsgMCwgZm9ybSwgMCwgMCwgMCB9OwotICAgIENGUmVh
ZFN0cmVhbVNldENsaWVudChmb3JtLT5jdXJyZW50U3RyZWFtLCBrQ0ZTdHJlYW1FdmVudEhhc0J5
dGVzQXZhaWxhYmxlIHwga0NGU3RyZWFtRXZlbnRFcnJvck9jY3VycmVkIHwga0NGU3RyZWFtRXZl
bnRFbmRFbmNvdW50ZXJlZCwKKyAgICBDRlJlYWRTdHJlYW1TZXRDbGllbnQoZm9ybS0+Y3VycmVu
dFN0cmVhbS5nZXQoKSwga0NGU3RyZWFtRXZlbnRIYXNCeXRlc0F2YWlsYWJsZSB8IGtDRlN0cmVh
bUV2ZW50RXJyb3JPY2N1cnJlZCB8IGtDRlN0cmVhbUV2ZW50RW5kRW5jb3VudGVyZWQsCiAgICAg
ICAgIGZvcm1FdmVudENhbGxiYWNrLCAmY29udGV4dCk7CiAKICAgICAvLyBTY2hlZHVsZSB3aXRo
IHRoZSBjdXJyZW50IHNldCBvZiBydW4gbG9vcHMuCiAgICAgU2NoZWR1bGVQYWlySGFzaFNldDo6
aXRlcmF0b3IgZW5kID0gZm9ybS0+c2NoZWR1bGVkUnVuTG9vcFBhaXJzLmVuZCgpOwogICAgIGZv
ciAoU2NoZWR1bGVQYWlySGFzaFNldDo6aXRlcmF0b3IgaXQgPSBmb3JtLT5zY2hlZHVsZWRSdW5M
b29wUGFpcnMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQotICAgICAgICBDRlJlYWRTdHJlYW1T
Y2hlZHVsZVdpdGhSdW5Mb29wKGZvcm0tPmN1cnJlbnRTdHJlYW0sICgqaXQpLT5ydW5Mb29wKCks
ICgqaXQpLT5tb2RlKCkpOworICAgICAgICBDRlJlYWRTdHJlYW1TY2hlZHVsZVdpdGhSdW5Mb29w
KGZvcm0tPmN1cnJlbnRTdHJlYW0uZ2V0KCksICgqaXQpLT5ydW5Mb29wKCksICgqaXQpLT5tb2Rl
KCkpOwogCiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0xOTYsNyArMTk1LDcgQEAgc3RhdGljIGJv
b2wgb3Blbk5leHRTdHJlYW0oRm9ybVN0cmVhbUZpZWxkcyogZm9ybSkKICAgICAvLyBTa2lwIG92
ZXIgYW55IHN0cmVhbXMgd2UgY2FuJ3Qgb3Blbi4KICAgICBpZiAoIWFkdmFuY2VDdXJyZW50U3Ry
ZWFtKGZvcm0pKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgd2hpbGUgKGZvcm0tPmN1cnJl
bnRTdHJlYW0gJiYgIUNGUmVhZFN0cmVhbU9wZW4oZm9ybS0+Y3VycmVudFN0cmVhbSkpIHsKKyAg
ICB3aGlsZSAoZm9ybS0+Y3VycmVudFN0cmVhbSAmJiAhQ0ZSZWFkU3RyZWFtT3Blbihmb3JtLT5j
dXJyZW50U3RyZWFtLmdldCgpKSkgewogICAgICAgICBpZiAoIWFkdmFuY2VDdXJyZW50U3RyZWFt
KGZvcm0pKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KQEAgLTI2Miw5ICsyNjEs
OSBAQCBzdGF0aWMgQ0ZJbmRleCBmb3JtUmVhZChDRlJlYWRTdHJlYW1SZWYsIFVJbnQ4KiBidWZm
ZXIsIENGSW5kZXggYnVmZmVyTGVuZ3RoLCBDRgogICAgICAgICBDRkluZGV4IGJ5dGVzVG9SZWFk
ID0gYnVmZmVyTGVuZ3RoOwogICAgICAgICBpZiAoZm9ybS0+Y3VycmVudFN0cmVhbVJhbmdlTGVu
Z3RoICE9IEJsb2JEYXRhSXRlbTo6dG9FbmRPZkZpbGUgJiYgZm9ybS0+Y3VycmVudFN0cmVhbVJh
bmdlTGVuZ3RoIDwgYnl0ZXNUb1JlYWQpCiAgICAgICAgICAgICBieXRlc1RvUmVhZCA9IHN0YXRp
Y19jYXN0PENGSW5kZXg+KGZvcm0tPmN1cnJlbnRTdHJlYW1SYW5nZUxlbmd0aCk7Ci0gICAgICAg
IENGSW5kZXggYnl0ZXNSZWFkID0gQ0ZSZWFkU3RyZWFtUmVhZChmb3JtLT5jdXJyZW50U3RyZWFt
LCBidWZmZXIsIGJ5dGVzVG9SZWFkKTsKKyAgICAgICAgQ0ZJbmRleCBieXRlc1JlYWQgPSBDRlJl
YWRTdHJlYW1SZWFkKGZvcm0tPmN1cnJlbnRTdHJlYW0uZ2V0KCksIGJ1ZmZlciwgYnl0ZXNUb1Jl
YWQpOwogICAgICAgICBpZiAoYnl0ZXNSZWFkIDwgMCkgewotICAgICAgICAgICAgKmVycm9yID0g
Q0ZSZWFkU3RyZWFtR2V0RXJyb3IoZm9ybS0+Y3VycmVudFN0cmVhbSk7CisgICAgICAgICAgICAq
ZXJyb3IgPSBDRlJlYWRTdHJlYW1HZXRFcnJvcihmb3JtLT5jdXJyZW50U3RyZWFtLmdldCgpKTsK
ICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgfQogICAgICAgICBpZiAoYnl0ZXNSZWFk
ID4gMCkgewpAQCAtMjg4LDE0ICsyODcsMTQgQEAgc3RhdGljIEJvb2xlYW4gZm9ybUNhblJlYWQo
Q0ZSZWFkU3RyZWFtUmVmIHN0cmVhbSwgdm9pZCogY29udGV4dCkKIHsKICAgICBGb3JtU3RyZWFt
RmllbGRzKiBmb3JtID0gc3RhdGljX2Nhc3Q8Rm9ybVN0cmVhbUZpZWxkcyo+KGNvbnRleHQpOwog
Ci0gICAgd2hpbGUgKGZvcm0tPmN1cnJlbnRTdHJlYW0gJiYgQ0ZSZWFkU3RyZWFtR2V0U3RhdHVz
KGZvcm0tPmN1cnJlbnRTdHJlYW0pID09IGtDRlN0cmVhbVN0YXR1c0F0RW5kKQorICAgIHdoaWxl
IChmb3JtLT5jdXJyZW50U3RyZWFtICYmIENGUmVhZFN0cmVhbUdldFN0YXR1cyhmb3JtLT5jdXJy
ZW50U3RyZWFtLmdldCgpKSA9PSBrQ0ZTdHJlYW1TdGF0dXNBdEVuZCkKICAgICAgICAgb3Blbk5l
eHRTdHJlYW0oZm9ybSk7CiAKICAgICBpZiAoIWZvcm0tPmN1cnJlbnRTdHJlYW0pIHsKICAgICAg
ICAgQ0ZSZWFkU3RyZWFtU2lnbmFsRXZlbnQoc3RyZWFtLCBrQ0ZTdHJlYW1FdmVudEVuZEVuY291
bnRlcmVkLCAwKTsKICAgICAgICAgcmV0dXJuIEZBTFNFOwogICAgIH0KLSAgICByZXR1cm4gQ0ZS
ZWFkU3RyZWFtSGFzQnl0ZXNBdmFpbGFibGUoZm9ybS0+Y3VycmVudFN0cmVhbSk7CisgICAgcmV0
dXJuIENGUmVhZFN0cmVhbUhhc0J5dGVzQXZhaWxhYmxlKGZvcm0tPmN1cnJlbnRTdHJlYW0uZ2V0
KCkpOwogfQogCiBzdGF0aWMgdm9pZCBmb3JtQ2xvc2UoQ0ZSZWFkU3RyZWFtUmVmLCB2b2lkKiBj
b250ZXh0KQpAQCAtMzI2LDcgKzMyNSw3IEBAIHN0YXRpYyB2b2lkIGZvcm1TY2hlZHVsZShDRlJl
YWRTdHJlYW1SZWYsIENGUnVuTG9vcFJlZiBydW5Mb29wLCBDRlN0cmluZ1JlZiBydW5MCiAgICAg
Rm9ybVN0cmVhbUZpZWxkcyogZm9ybSA9IHN0YXRpY19jYXN0PEZvcm1TdHJlYW1GaWVsZHMqPihj
b250ZXh0KTsKIAogICAgIGlmIChmb3JtLT5jdXJyZW50U3RyZWFtKQotICAgICAgICBDRlJlYWRT
dHJlYW1TY2hlZHVsZVdpdGhSdW5Mb29wKGZvcm0tPmN1cnJlbnRTdHJlYW0sIHJ1bkxvb3AsIHJ1
bkxvb3BNb2RlKTsKKyAgICAgICAgQ0ZSZWFkU3RyZWFtU2NoZWR1bGVXaXRoUnVuTG9vcChmb3Jt
LT5jdXJyZW50U3RyZWFtLmdldCgpLCBydW5Mb29wLCBydW5Mb29wTW9kZSk7CiAgICAgZm9ybS0+
c2NoZWR1bGVkUnVuTG9vcFBhaXJzLmFkZChTY2hlZHVsZVBhaXI6OmNyZWF0ZShydW5Mb29wLCBy
dW5Mb29wTW9kZSkpOwogfQogCkBAIC0zMzUsNyArMzM0LDcgQEAgc3RhdGljIHZvaWQgZm9ybVVu
c2NoZWR1bGUoQ0ZSZWFkU3RyZWFtUmVmLCBDRlJ1bkxvb3BSZWYgcnVuTG9vcCwgQ0ZTdHJpbmdS
ZWYgcnUKICAgICBGb3JtU3RyZWFtRmllbGRzKiBmb3JtID0gc3RhdGljX2Nhc3Q8Rm9ybVN0cmVh
bUZpZWxkcyo+KGNvbnRleHQpOwogCiAgICAgaWYgKGZvcm0tPmN1cnJlbnRTdHJlYW0pCi0gICAg
ICAgIENGUmVhZFN0cmVhbVVuc2NoZWR1bGVGcm9tUnVuTG9vcChmb3JtLT5jdXJyZW50U3RyZWFt
LCBydW5Mb29wLCBydW5Mb29wTW9kZSk7CisgICAgICAgIENGUmVhZFN0cmVhbVVuc2NoZWR1bGVG
cm9tUnVuTG9vcChmb3JtLT5jdXJyZW50U3RyZWFtLmdldCgpLCBydW5Mb29wLCBydW5Mb29wTW9k
ZSk7CiAgICAgZm9ybS0+c2NoZWR1bGVkUnVuTG9vcFBhaXJzLnJlbW92ZShTY2hlZHVsZVBhaXI6
OmNyZWF0ZShydW5Mb29wLCBydW5Mb29wTW9kZSkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0V2lu
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uQ0ZOZXRXaW4uY3BwCmluZGV4IDA1YjBlYzkyYjllYTcyNjY2YjY5YzA3YmUwMmY2MDY2
YmQ1ZjdkMTUuLjVkN2Q3OTYxNDQ2NWZjYWI1YmQ2YjY0MThlMDYwZjY4ZWIwOTRhNGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uQ0ZOZXRXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y2YvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ0ZOZXRXaW4uY3BwCkBAIC04OCwxMiArODgsMTAgQEAg
Q0ZVUkxTdG9yYWdlU2Vzc2lvblJlZiBjcmVhdGVQcml2YXRlU3RvcmFnZVNlc3Npb24oQ0ZTdHJp
bmdSZWYgaWRlbnRpZmllciwgT3B0aW8KICAgICAKICAgICAvLyBUaGUgcHJpdmF0ZSBzdG9yYWdl
IHNlc3Npb24gc2hvdWxkIGhhdmUgdGhlIHNhbWUgcHJvcGVydGllcyBhcyB0aGUgZGVmYXVsdCBz
dG9yYWdlIHNlc3Npb24sCiAgICAgLy8gd2l0aCB0aGUgZXhjZXB0aW9uIHRoYXQgaXQgc2hvdWxk
IGJlIGluLW1lbW9yeSBvbmx5IHN0b3JhZ2UuCi0gICAgQ0ZVUkxDYWNoZVJlZiBjYWNoZSA9IF9D
RlVSTFN0b3JhZ2VTZXNzaW9uQ29weUNhY2hlKGtDRkFsbG9jYXRvckRlZmF1bHQsIHN0b3JhZ2VT
ZXNzaW9uKTsKLSAgICBDRlVSTENhY2hlU2V0RGlza0NhcGFjaXR5KGNhY2hlLCAwKTsKLSAgICBD
RlVSTENhY2hlUmVmIGRlZmF1bHRDYWNoZSA9IENGVVJMQ2FjaGVDb3B5U2hhcmVkVVJMQ2FjaGUo
KTsKLSAgICBDRlVSTENhY2hlU2V0TWVtb3J5Q2FwYWNpdHkoY2FjaGUsIENGVVJMQ2FjaGVNZW1v
cnlDYXBhY2l0eShkZWZhdWx0Q2FjaGUpKTsKLSAgICBDRlJlbGVhc2UoZGVmYXVsdENhY2hlKTsK
LSAgICBDRlJlbGVhc2UoY2FjaGUpOworICAgIGF1dG8gY2FjaGUgPSBhZG9wdENGKF9DRlVSTFN0
b3JhZ2VTZXNzaW9uQ29weUNhY2hlKGtDRkFsbG9jYXRvckRlZmF1bHQsIHN0b3JhZ2VTZXNzaW9u
KSk7CisgICAgQ0ZVUkxDYWNoZVNldERpc2tDYXBhY2l0eShjYWNoZS5nZXQoKSwgMCk7CisgICAg
YXV0byBkZWZhdWx0Q2FjaGUgPSBhZG9wdENGKENGVVJMQ2FjaGVDb3B5U2hhcmVkVVJMQ2FjaGUo
KSk7CisgICAgQ0ZVUkxDYWNoZVNldE1lbW9yeUNhcGFjaXR5KGNhY2hlLmdldCgpLCBDRlVSTENh
Y2hlTWVtb3J5Q2FwYWNpdHkoZGVmYXVsdENhY2hlLmdldCgpKSk7CiAgICAgCiAgICAgQ0ZIVFRQ
Q29va2llU3RvcmFnZUFjY2VwdFBvbGljeSBjZkNvb2tpZUFjY2VwdFBvbGljeTsKICAgICBpZiAo
Y29va2llQWNjZXB0UG9saWN5KQpAQCAtMTAzLDkgKzEwMSw4IEBAIENGVVJMU3RvcmFnZVNlc3Np
b25SZWYgY3JlYXRlUHJpdmF0ZVN0b3JhZ2VTZXNzaW9uKENGU3RyaW5nUmVmIGlkZW50aWZpZXIs
IE9wdGlvCiAgICAgICAgIGNmQ29va2llQWNjZXB0UG9saWN5ID0gQ0ZIVFRQQ29va2llU3RvcmFn
ZUdldENvb2tpZUFjY2VwdFBvbGljeShkZWZhdWx0Q29va2llU3RvcmFnZSk7CiAgICAgfQogCi0g
ICAgQ0ZIVFRQQ29va2llU3RvcmFnZVJlZiBjb29raWVTdG9yYWdlID0gX0NGVVJMU3RvcmFnZVNl
c3Npb25Db3B5Q29va2llU3RvcmFnZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBzdG9yYWdlU2Vzc2lv
bik7Ci0gICAgQ0ZIVFRQQ29va2llU3RvcmFnZVNldENvb2tpZUFjY2VwdFBvbGljeShjb29raWVT
dG9yYWdlLCBjZkNvb2tpZUFjY2VwdFBvbGljeSk7Ci0gICAgQ0ZSZWxlYXNlKGNvb2tpZVN0b3Jh
Z2UpOworICAgIGF1dG8gY29va2llU3RvcmFnZSA9IGFkb3B0Q0YoX0NGVVJMU3RvcmFnZVNlc3Np
b25Db3B5Q29va2llU3RvcmFnZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBzdG9yYWdlU2Vzc2lvbikp
OworICAgIENGSFRUUENvb2tpZVN0b3JhZ2VTZXRDb29raWVBY2NlcHRQb2xpY3koY29va2llU3Rv
cmFnZS5nZXQoKSwgY2ZDb29raWVBY2NlcHRQb2xpY3kpOwogICAgIAogICAgIHJldHVybiBzdG9y
YWdlU2Vzc2lvbjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY2YvUmVzb3VyY2VIYW5kbGVDRk5ldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwCmluZGV4IGNlNGVkYjQ5YjczODcwM2Mx
YzNhMGIzODY1YzA4ZDc5MjRhNDYzMzcuLjNjMTdhZGM0MThiODA0Y2E0ZWY1NGE5OTM1ZmVjMzU1
NzQyM2JjODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2Yv
UmVzb3VyY2VIYW5kbGVDRk5ldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0LmNwcApAQCAtMTIwLDEyICsxMjAsMTEgQEAgc3Rh
dGljIHZvaWQgc2V0Q2xpZW50Q2VydGlmaWNhdGVJblNTTFByb3BlcnRpZXMoQ0ZNdXRhYmxlRGlj
dGlvbmFyeVJlZiBzc2xQcm9wcywKIHsKICAgICBpZiAoIXNzbFByb3BzIHx8ICFjZXJ0RGF0YSkK
ICAgICAgICAgcmV0dXJuOwotICAgIENGTXV0YWJsZURpY3Rpb25hcnlSZWYgY2VydERpY3QgPSBD
RkRpY3Rpb25hcnlDcmVhdGVNdXRhYmxlKGtDRkFsbG9jYXRvckRlZmF1bHQsIDAsICZrQ0ZUeXBl
RGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3Mp
OworICAgIGF1dG8gY2VydERpY3QgPSBhZG9wdENGKENGRGljdGlvbmFyeUNyZWF0ZU11dGFibGUo
a0NGQWxsb2NhdG9yRGVmYXVsdCwgMCwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAm
a0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcykpOwogICAgIGlmICghY2VydERpY3QpCiAg
ICAgICAgIHJldHVybjsKLSAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShjZXJ0RGljdCwgX2tDRldp
bmRvd3NTU0xMb2NhbENlcnQsIGNlcnREYXRhKTsKLSAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShz
c2xQcm9wcywgX2tDRlN0cmVhbVByb3BlcnR5V2luZG93c1NTTENlcnRJbmZvLCBjZXJ0RGljdCk7
Ci0gICAgQ0ZSZWxlYXNlKGNlcnREaWN0KTsKKyAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShjZXJ0
RGljdC5nZXQoKSwgX2tDRldpbmRvd3NTU0xMb2NhbENlcnQsIGNlcnREYXRhKTsKKyAgICBDRkRp
Y3Rpb25hcnlTZXRWYWx1ZShzc2xQcm9wcywgX2tDRlN0cmVhbVByb3BlcnR5V2luZG93c1NTTENl
cnRJbmZvLCBjZXJ0RGljdC5nZXQoKSk7CiB9CiAjZW5kaWYKIApAQCAtMjA1LDExICsyMDQsMTEg
QEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6Y3JlYXRlQ0ZVUkxDb25uZWN0aW9uKGJvb2wgc2hvdWxk
VXNlQ3JlZGVudGlhbFN0b3JhZ2UsIGJvb2wKICAgICBpZiAoc3NsUHJvcHMpCiAgICAgICAgIENG
VVJMUmVxdWVzdFNldFNTTFByb3BlcnRpZXMocmVxdWVzdC5nZXQoKSwgc3NsUHJvcHMuZ2V0KCkp
OwogCi0gICAgQ0ZNdXRhYmxlRGljdGlvbmFyeVJlZiBzdHJlYW1Qcm9wZXJ0aWVzICA9IENGRGlj
dGlvbmFyeUNyZWF0ZU11dGFibGUoMCwgMCwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tz
LCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcyk7CisgICAgYXV0byBzdHJlYW1Qcm9w
ZXJ0aWVzICA9IGFkb3B0Q0YoQ0ZEaWN0aW9uYXJ5Q3JlYXRlTXV0YWJsZSgwLCAwLCAma0NGVHlw
ZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tz
KSk7CiAKICAgICBpZiAoIXNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKSB7CiAgICAgICAgIC8v
IEF2b2lkIHVzaW5nIGV4aXN0aW5nIGNvbm5lY3Rpb25zLCBiZWNhdXNlIHRoZXkgbWF5IGJlIGFs
cmVhZHkgYXV0aGVudGljYXRlZC4KLSAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUoc3RyZWFt
UHJvcGVydGllcywgQ0ZTVFIoIl9rQ0ZVUkxDb25uZWN0aW9uU2Vzc2lvbklEIiksIENGU1RSKCJX
ZWJLaXRQcml2YXRlU2Vzc2lvbiIpKTsKKyAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUoc3Ry
ZWFtUHJvcGVydGllcy5nZXQoKSwgQ0ZTVFIoIl9rQ0ZVUkxDb25uZWN0aW9uU2Vzc2lvbklEIiks
IENGU1RSKCJXZWJLaXRQcml2YXRlU2Vzc2lvbiIpKTsKICAgICB9CiAKICAgICBzdGF0aWMgY29u
c3QgQ0ZTdHJpbmdSZWYga0NGVVJMQ29ubmVjdGlvblNvY2tldFN0cmVhbVByb3BlcnRpZXMgPSBD
RlNUUigia0NGVVJMQ29ubmVjdGlvblNvY2tldFN0cmVhbVByb3BlcnRpZXMiKTsKQEAgLTIyOCw4
ICsyMjcsNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpjcmVhdGVDRlVSTENvbm5lY3Rpb24oYm9v
bCBzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZSwgYm9vbAogI2VuZGlmCiAKICAgICAvLyBGSVhN
RTogVGhpcyBjb2RlIGlzIGRpZmZlcmVudCBmcm9tIGlPUyBjb2RlIGluIFJlc291cmNlSGFuZGxl
TWFjLm1tIGluIHRoYXQgaGVyZSB3ZSBpZ25vcmUgc3RyZWFtIHByb3BlcnRpZXMgdGhhdCB3ZXJl
IHByZXNlbnQgaW4gY2xpZW50IHByb3BlcnRpZXMuCi0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUo
cHJvcGVydGllc0RpY3Rpb25hcnkuZ2V0KCksIGtDRlVSTENvbm5lY3Rpb25Tb2NrZXRTdHJlYW1Q
cm9wZXJ0aWVzLCBzdHJlYW1Qcm9wZXJ0aWVzKTsKLSAgICBDRlJlbGVhc2Uoc3RyZWFtUHJvcGVy
dGllcyk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUocHJvcGVydGllc0RpY3Rpb25hcnkuZ2V0
KCksIGtDRlVSTENvbm5lY3Rpb25Tb2NrZXRTdHJlYW1Qcm9wZXJ0aWVzLCBzdHJlYW1Qcm9wZXJ0
aWVzLmdldCgpKTsKIAogICAgIGQtPm1fY29ubmVjdGlvbkRlbGVnYXRlID0gYWRvcHRSZWYobmV3
IFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWUo
dGhpcywgV1RGTW92ZShtZXNzYWdlUXVldWUpKSk7CiAgICAgZC0+bV9jb25uZWN0aW9uRGVsZWdh
dGUtPnNldHVwUmVxdWVzdChyZXF1ZXN0LmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxl
Z2F0ZVdpdGhPcGVyYXRpb25RdWV1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9u
UXVldWUuY3BwCmluZGV4IDI2NDY2Mzg4YjdjYTVhNjY1NmQwZWUyNjFlNzU2ZWUyMmZhMDQwMzEu
LjhlOGMzYWE3YTZiZTRjZWUzNmFhOGU5ZjNkYTNlNmEyMmExNWVjN2QgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5l
Y3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRl
V2l0aE9wZXJhdGlvblF1ZXVlLmNwcApAQCAtMTM3LDggKzEzNyw3IEBAIENGVVJMUmVxdWVzdFJl
ZiBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVl
Ojp3aWxsU2VuCiAgICAgaWYgKCFvcmlnaW5hbFJlZGlyZWN0UmVzcG9uc2UpIHsKICAgICAgICAg
UmV0YWluUHRyPENGU3RyaW5nUmVmPiBuZXdTY2hlbWUgPSBhZG9wdENGKENGVVJMQ29weVNjaGVt
ZShDRlVSTFJlcXVlc3RHZXRVUkwoY2ZSZXF1ZXN0KSkpOwogICAgICAgICBpZiAoQ0ZTdHJpbmdD
b21wYXJlKG5ld1NjaGVtZS5nZXQoKSwgbV9vcmlnaW5hbFNjaGVtZS5nZXQoKSwga0NGQ29tcGFy
ZUNhc2VJbnNlbnNpdGl2ZSkgPT0ga0NGQ29tcGFyZUVxdWFsVG8pIHsKLSAgICAgICAgICAgIENG
UmV0YWluKGNmUmVxdWVzdCk7Ci0gICAgICAgICAgICByZXR1cm4gY2ZSZXF1ZXN0OworICAgICAg
ICAgICAgcmV0dXJuIGNmUmVxdWVzdC5sZWFrUmVmKCk7CiAgICAgICAgIH0KICAgICB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1
ZXN0Q0ZOZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJj
ZVJlcXVlc3RDRk5ldC5jcHAKaW5kZXggZDJkMDkzYzNjMzIwMDczYjZhNWFhYmU5M2QwY2ZmZmE5
MWU5NTJiYi4uZjZlMWI5YjVkM2E1YmE3YWUzNWE3NzkyM2Q1NmQ1M2VhZTMyNzE5OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3RD
Rk5ldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJj
ZVJlcXVlc3RDRk5ldC5jcHAKQEAgLTI4MiwxMCArMjgyLDggQEAgdm9pZCBSZXNvdXJjZVJlcXVl
c3Q6OmRvVXBkYXRlUmVzb3VyY2VSZXF1ZXN0KCkKICAgICAgICAgbV9jYWNoZVBvbGljeSA9IGZy
b21QbGF0Zm9ybVJlcXVlc3RDYWNoZVBvbGljeShDRlVSTFJlcXVlc3RHZXRDYWNoZVBvbGljeSht
X2NmUmVxdWVzdC5nZXQoKSkpOwogICAgIG1fdGltZW91dEludGVydmFsID0gQ0ZVUkxSZXF1ZXN0
R2V0VGltZW91dEludGVydmFsKG1fY2ZSZXF1ZXN0LmdldCgpKTsKICAgICBtX2ZpcnN0UGFydHlG
b3JDb29raWVzID0gQ0ZVUkxSZXF1ZXN0R2V0TWFpbkRvY3VtZW50VVJMKG1fY2ZSZXF1ZXN0Lmdl
dCgpKTsKLSAgICBpZiAoQ0ZTdHJpbmdSZWYgbWV0aG9kID0gQ0ZVUkxSZXF1ZXN0Q29weUhUVFBS
ZXF1ZXN0TWV0aG9kKG1fY2ZSZXF1ZXN0LmdldCgpKSkgewotICAgICAgICBtX2h0dHBNZXRob2Qg
PSBtZXRob2Q7Ci0gICAgICAgIENGUmVsZWFzZShtZXRob2QpOwotICAgIH0KKyAgICBpZiAoYXV0
byBtZXRob2QgPSBhZG9wdENGKENGVVJMUmVxdWVzdENvcHlIVFRQUmVxdWVzdE1ldGhvZChtX2Nm
UmVxdWVzdC5nZXQoKSkpKQorICAgICAgICBtX2h0dHBNZXRob2QgPSBtZXRob2QuZ2V0KCk7CiAg
ICAgbV9hbGxvd0Nvb2tpZXMgPSBDRlVSTFJlcXVlc3RTaG91bGRIYW5kbGVIVFRQQ29va2llcyht
X2NmUmVxdWVzdC5nZXQoKSk7CiAKICAgICBpZiAocmVzb3VyY2VQcmlvcml0aWVzRW5hYmxlZCgp
KQpAQCAtMzA2LDE0ICszMDQsMTMgQEAgdm9pZCBSZXNvdXJjZVJlcXVlc3Q6OmRvVXBkYXRlUmVz
b3VyY2VSZXF1ZXN0KCkKICNlbmRpZgogCiAgICAgbV9odHRwSGVhZGVyRmllbGRzLmNsZWFyKCk7
Ci0gICAgaWYgKENGRGljdGlvbmFyeVJlZiBoZWFkZXJzID0gQ0ZVUkxSZXF1ZXN0Q29weUFsbEhU
VFBIZWFkZXJGaWVsZHMobV9jZlJlcXVlc3QuZ2V0KCkpKSB7Ci0gICAgICAgIENGSW5kZXggaGVh
ZGVyQ291bnQgPSBDRkRpY3Rpb25hcnlHZXRDb3VudChoZWFkZXJzKTsKKyAgICBpZiAoYXV0byBo
ZWFkZXJzID0gYWRvcHRDRihDRlVSTFJlcXVlc3RDb3B5QWxsSFRUUEhlYWRlckZpZWxkcyhtX2Nm
UmVxdWVzdC5nZXQoKSkpKSB7CisgICAgICAgIENGSW5kZXggaGVhZGVyQ291bnQgPSBDRkRpY3Rp
b25hcnlHZXRDb3VudChoZWFkZXJzLmdldCgpKTsKICAgICAgICAgVmVjdG9yPGNvbnN0IHZvaWQq
LCAxMjg+IGtleXMoaGVhZGVyQ291bnQpOwogICAgICAgICBWZWN0b3I8Y29uc3Qgdm9pZCosIDEy
OD4gdmFsdWVzKGhlYWRlckNvdW50KTsKLSAgICAgICAgQ0ZEaWN0aW9uYXJ5R2V0S2V5c0FuZFZh
bHVlcyhoZWFkZXJzLCBrZXlzLmRhdGEoKSwgdmFsdWVzLmRhdGEoKSk7CisgICAgICAgIENGRGlj
dGlvbmFyeUdldEtleXNBbmRWYWx1ZXMoaGVhZGVycy5nZXQoKSwga2V5cy5kYXRhKCksIHZhbHVl
cy5kYXRhKCkpOwogICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGhlYWRlckNvdW50OyArK2kp
CiAgICAgICAgICAgICBtX2h0dHBIZWFkZXJGaWVsZHMuc2V0KChDRlN0cmluZ1JlZilrZXlzW2ld
LCAoQ0ZTdHJpbmdSZWYpdmFsdWVzW2ldKTsKLSAgICAgICAgQ0ZSZWxlYXNlKGhlYWRlcnMpOwog
ICAgIH0KIAogICAgIG1fcmVzcG9uc2VDb250ZW50RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxiYWNr
QXJyYXkuY2xlYXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9E
cmFnSW1hZ2VDR1dpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdl
Q0dXaW4uY3BwCmluZGV4IDM0ZWQ5ZWY4Y2Y0Zjg2NmNhMDNmZGNhOTMwNGE5NjA5NmJjNjViOWUu
LmI0NWU0ZDRhMGEyNWRmY2M0NzZmOWFhYmY3NTdjNzBhZTIyYzk5NWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnSW1hZ2VDR1dpbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdJbWFnZUNHV2luLmNwcApAQCAtNjcsMTUgKzY3LDEz
IEBAIEdESU9iamVjdDxIQklUTUFQPiBhbGxvY0ltYWdlKEhEQyBkYywgSW50U2l6ZSBzaXplLCBD
R0NvbnRleHRSZWYgKnRhcmdldFJlZikKICAgICByZXR1cm4gaGJtcDsKIH0KIAotc3RhdGljIENH
Q29udGV4dFJlZiBjcmVhdGVDZ0NvbnRleHRGcm9tQml0bWFwKEhCSVRNQVAgYml0bWFwKQorc3Rh
dGljIFJldGFpblB0cjxDR0NvbnRleHRSZWY+IGNyZWF0ZUNnQ29udGV4dEZyb21CaXRtYXAoSEJJ
VE1BUCBiaXRtYXApCiB7CiAgICAgQklUTUFQIGluZm87CiAgICAgR2V0T2JqZWN0KGJpdG1hcCwg
c2l6ZW9mKGluZm8pLCAmaW5mbyk7CiAgICAgQVNTRVJUKGluZm8uYm1CaXRzUGl4ZWwgPT0gMzIp
OwogCi0gICAgQ0dDb250ZXh0UmVmIGJpdG1hcENvbnRleHQgPSBDR0JpdG1hcENvbnRleHRDcmVh
dGUoaW5mby5ibUJpdHMsIGluZm8uYm1XaWR0aCwgaW5mby5ibUhlaWdodCwgOCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmZvLmJtV2lk
dGhCeXRlcywgc1JHQkNvbG9yU3BhY2VSZWYoKSwga0NHQml0bWFwQnl0ZU9yZGVyMzJMaXR0bGUg
fCBrQ0dJbWFnZUFscGhhTm9uZVNraXBGaXJzdCk7Ci0gICAgcmV0dXJuIGJpdG1hcENvbnRleHQ7
CisgICAgcmV0dXJuIGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlKGluZm8uYm1CaXRzLCBp
bmZvLmJtV2lkdGgsIGluZm8uYm1IZWlnaHQsIDgsIGluZm8uYm1XaWR0aEJ5dGVzLCBzUkdCQ29s
b3JTcGFjZVJlZigpLCBrQ0dCaXRtYXBCeXRlT3JkZXIzMkxpdHRsZSB8IGtDR0ltYWdlQWxwaGFO
b25lU2tpcEZpcnN0KSk7CiB9CiAKIERyYWdJbWFnZVJlZiBzY2FsZURyYWdJbWFnZShEcmFnSW1h
Z2VSZWYgaW1hZ2VSZWYsIEZsb2F0U2l6ZSBzY2FsZSkKQEAgLTEwMSwxNSArOTksMTMgQEAgRHJh
Z0ltYWdlUmVmIHNjYWxlRHJhZ0ltYWdlKERyYWdJbWFnZVJlZiBpbWFnZVJlZiwgRmxvYXRTaXpl
IHNjYWxlKQogICAgIGlmICghaGJtcCkKICAgICAgICAgZ290byBleGl0OwogCi0gICAgQ0dDb250
ZXh0UmVmIHNyY0NvbnRleHQgPSBjcmVhdGVDZ0NvbnRleHRGcm9tQml0bWFwKGltYWdlLmdldCgp
KTsKLSAgICBDR0ltYWdlUmVmIHNyY0ltYWdlID0gQ0dCaXRtYXBDb250ZXh0Q3JlYXRlSW1hZ2Uo
c3JjQ29udGV4dCk7CisgICAgYXV0byBzcmNDb250ZXh0ID0gY3JlYXRlQ2dDb250ZXh0RnJvbUJp
dG1hcChpbWFnZS5nZXQoKSk7CisgICAgYXV0byBzcmNJbWFnZSA9IGFkb3B0Q0YoQ0dCaXRtYXBD
b250ZXh0Q3JlYXRlSW1hZ2Uoc3JjQ29udGV4dCkpOwogICAgIENHUmVjdCByZWN0OwogICAgIHJl
Y3Qub3JpZ2luLnggPSAwOwogICAgIHJlY3Qub3JpZ2luLnkgPSAwOwogICAgIHJlY3Quc2l6ZSA9
IGRzdFNpemU7Ci0gICAgQ0dDb250ZXh0RHJhd0ltYWdlKHRhcmdldENvbnRleHQsIHJlY3QsIHNy
Y0ltYWdlKTsKLSAgICBDR0ltYWdlUmVsZWFzZShzcmNJbWFnZSk7Ci0gICAgQ0dDb250ZXh0UmVs
ZWFzZShzcmNDb250ZXh0KTsKKyAgICBDR0NvbnRleHREcmF3SW1hZ2UodGFyZ2V0Q29udGV4dCwg
cmVjdCwgc3JjSW1hZ2UuZ2V0KCkpOwogICAgIENHQ29udGV4dFJlbGVhc2UodGFyZ2V0Q29udGV4
dCk7CiAKIGV4aXQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vV2Vi
Q29yZUJ1bmRsZVdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vV2ViQ29yZUJ1
bmRsZVdpbi5jcHAKaW5kZXggM2I3YzhlMWEyMGE0NTFhZDdjYjM4NDhlYjYxNjIyZTk3ZmQwMjRj
Ny4uOTQ5MzJmYmM5NmE1Mjk4NDBmMmU2YmI0OGViNmQ0NGUxN2NlNWU1ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1dlYkNvcmVCdW5kbGVXaW4uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9XZWJDb3JlQnVuZGxlV2luLmNwcApAQCAtMzEsMTYg
KzMxLDE1IEBACiAjaW5jbHVkZSAiV2ViQ29yZUluc3RhbmNlSGFuZGxlLmgiCiAjaW5jbHVkZSA8
Q29yZUZvdW5kYXRpb24vQ0ZCdW5kbGUuaD4KICNpbmNsdWRlIDx3aW5kb3dzLmg+CisjaW5jbHVk
ZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBDRkJ1bmRsZVJlZiBjcmVhdGVXZWJLaXRCdW5k
bGUoKQorc3RhdGljIFJldGFpblB0cjxDRkJ1bmRsZVJlZj4gY3JlYXRlV2ViS2l0QnVuZGxlKCkK
IHsKLSAgICBpZiAoQ0ZCdW5kbGVSZWYgZXhpc3RpbmdCdW5kbGUgPSBDRkJ1bmRsZUdldEJ1bmRs
ZVdpdGhJZGVudGlmaWVyKENGU1RSKCJjb20uYXBwbGUuV2ViS2l0IikpKSB7Ci0gICAgICAgIENG
UmV0YWluKGV4aXN0aW5nQnVuZGxlKTsKKyAgICBpZiAoQ0ZCdW5kbGVSZWYgZXhpc3RpbmdCdW5k
bGUgPSBDRkJ1bmRsZUdldEJ1bmRsZVdpdGhJZGVudGlmaWVyKENGU1RSKCJjb20uYXBwbGUuV2Vi
S2l0IikpKQogICAgICAgICByZXR1cm4gZXhpc3RpbmdCdW5kbGU7Ci0gICAgfQogCiAgICAgd2No
YXJfdCBkbGxQYXRoQnVmZmVyW01BWF9QQVRIXTsKICAgICBEV09SRCBsZW5ndGggPSA6OkdldE1v
ZHVsZUZpbGVOYW1lVyhXZWJDb3JlOjppbnN0YW5jZUhhbmRsZSgpLCBkbGxQYXRoQnVmZmVyLCBX
VEZfQVJSQVlfTEVOR1RIKGRsbFBhdGhCdWZmZXIpKTsKQEAgLTUyLDE0ICs1MSwxNCBAQCBzdGF0
aWMgQ0ZCdW5kbGVSZWYgY3JlYXRlV2ViS2l0QnVuZGxlKCkKICAgICBSZXRhaW5QdHI8Q0ZVUkxS
ZWY+IGRsbERpcmVjdG9yeVVSTCA9IGFkb3B0Q0YoQ0ZVUkxDcmVhdGVDb3B5RGVsZXRpbmdMYXN0
UGF0aENvbXBvbmVudCgwLCBkbGxVUkwuZ2V0KCkpKTsKICAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+
IHJlc291cmNlc0RpcmVjdG9yeVVSTCA9IGFkb3B0Q0YoQ0ZVUkxDcmVhdGVDb3B5QXBwZW5kaW5n
UGF0aENvbXBvbmVudCgwLCBkbGxEaXJlY3RvcnlVUkwuZ2V0KCksIENGU1RSKCJXZWJLaXQucmVz
b3VyY2VzIiksIHRydWUpKTsKIAotICAgIHJldHVybiBDRkJ1bmRsZUNyZWF0ZSgwLCByZXNvdXJj
ZXNEaXJlY3RvcnlVUkwuZ2V0KCkpOworICAgIHJldHVybiBhZG9wdENGKENGQnVuZGxlQ3JlYXRl
KDAsIHJlc291cmNlc0RpcmVjdG9yeVVSTC5nZXQoKSkpOwogfQogCiBDRkJ1bmRsZVJlZiB3ZWJL
aXRCdW5kbGUoKQogewotICAgIHN0YXRpYyBDRkJ1bmRsZVJlZiBidW5kbGUgPSBjcmVhdGVXZWJL
aXRCdW5kbGUoKTsKLSAgICBBU1NFUlQoYnVuZGxlKTsKLSAgICByZXR1cm4gYnVuZGxlOworICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8Q0ZCdW5kbGVSZWY+PiBidW5kbGUgPSBj
cmVhdGVXZWJLaXRCdW5kbGUoKTsKKyAgICBBU1NFUlQoYnVuZGxlLmdldCgpKTsKKyAgICByZXR1
cm4gYnVuZGxlLmdldCgpLmdldCgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0KaW5kZXggYTNiNzQwNmRhNDkx
MjcxYjAxNjg5MjJiNjYyZmUyMmJhYjM3OWEyOS4uNDYzZWJhMDZjZDI5OTFmYWZmMTdhMzRjMWVk
MDk3YjFkNzFlMWJmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRoZW1lTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1h
Yy5tbQpAQCAtMTUzLDEwICsxNTMsOSBAQCAtIChDRkRpY3Rpb25hcnlSZWYpX2FkanVzdGVkQ29y
ZVVJRHJhd09wdGlvbnNGb3JEcmF3aW5nQm9yZGVyc09ubHk6KENGRGljdGlvbmFyeQogCiAgICAg
Ly8gRklYTUU6IFRoaXMgaXMgYSB3b3JrYXJvdW5kIGZvciA8cmRhcjovL3Byb2JsZW0vMTEzODU0
NjE+LiBXaGVuIHRoYXQgYnVnIGlzIHJlc29sdmVkLCB3ZSBzaG91bGQgcmVtb3ZlIHRoaXMgY29k
ZSwKICAgICAvLyBhcyB3ZWxsIGFzIHRoZSBpbnRlcm5hbCBtZXRob2Qgb3ZlcnJpZGVzIGJlbG93
LgotICAgIENGTXV0YWJsZURpY3Rpb25hcnlSZWYgY29yZVVJRHJhd09wdGlvbnMgPSBDRkRpY3Rp
b25hcnlDcmVhdGVNdXRhYmxlQ29weShOVUxMLCAwLCBkZWZhdWx0T3B0aW9ucyk7Ci0gICAgQ0ZE
aWN0aW9uYXJ5U2V0VmFsdWUoY29yZVVJRHJhd09wdGlvbnMsIENGU1RSKCJib3JkZXJzIG9ubHki
KSwga0NGQm9vbGVhblRydWUpOwotICAgIENGQXV0b3JlbGVhc2UoY29yZVVJRHJhd09wdGlvbnMp
OwotICAgIHJldHVybiBjb3JlVUlEcmF3T3B0aW9uczsKKyAgICBhdXRvIGNvcmVVSURyYXdPcHRp
b25zID0gYWRvcHRDRihDRkRpY3Rpb25hcnlDcmVhdGVNdXRhYmxlQ29weShOVUxMLCAwLCBkZWZh
dWx0T3B0aW9ucykpOworICAgIENGRGljdGlvbmFyeVNldFZhbHVlKGNvcmVVSURyYXdPcHRpb25z
LmdldCgpLCBDRlNUUigiYm9yZGVycyBvbmx5IiksIGtDRkJvb2xlYW5UcnVlKTsKKyAgICByZXR1
cm4gY29yZVVJRHJhd09wdGlvbnMuYXV0b3JlbGVhc2UoKTsKIH0KIAogLSAoQ0ZEaWN0aW9uYXJ5
UmVmKV9jb3JlVUlEcmF3T3B0aW9uc1dpdGhGcmFtZTooTlNSZWN0KWNlbGxGcmFtZSBpblZpZXc6
KE5TVmlldyAqKWNvbnRyb2xWaWV3IGluY2x1ZGVGb2N1czooQk9PTClpbmNsdWRlRm9jdXMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvY29jb2EvV2ViQXJjaGl2ZUR1bXBTdXBw
b3J0LmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL2NvY29hL1dlYkFyY2hpdmVEdW1wU3VwcG9y
dC5oCmluZGV4IDJkMDNlZjNmMjk4NmQ4YjI3MWFiNzM3MDgzMzk2MWVhNzQ2YTgxOWUuLjIwOWE3
MTE4NTdlYmQ3NzY2YTE5OTE4NjI5MGI2NDFjMDdjMTVhMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvY29jb2EvV2ViQXJjaGl2ZUR1bXBTdXBwb3J0LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9jb2NvYS9XZWJBcmNoaXZlRHVtcFN1cHBvcnQuaApAQCAtMjYsOSAr
MjYsMTAgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ29yZUZv
dW5kYXRpb24uaD4KKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlVGVzdFN1cHBvcnQgewogCi1DRlN0cmluZ1JlZiBjcmVhdGVYTUxTdHJpbmdGcm9tV2ViQXJj
aGl2ZURhdGEoQ0ZEYXRhUmVmIHdlYkFyY2hpdmVEYXRhKSBXVEZfRVhQT1JUX1BSSVZBVEU7CitS
ZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGNyZWF0ZVhNTFN0cmluZ0Zyb21XZWJBcmNoaXZlRGF0YShD
RkRhdGFSZWYgd2ViQXJjaGl2ZURhdGEpIFdURl9FWFBPUlRfUFJJVkFURTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZVRlc3RTdXBwb3J0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL2NvY29hL1dlYkFyY2hpdmVEdW1wU3VwcG9ydC5tbSBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvY29jb2EvV2ViQXJjaGl2ZUR1bXBTdXBwb3J0Lm1tCmluZGV4IDVlN2Q4ZTE2YTk4ZmI3MDFm
NDdjNWU0OTdmYmE5MTIzZGViNzlkYzEuLmJlNjYwNzhhODNkMGNhNDliNzFhMWZiNTNjMjNhOGM2
YjgxZDc2N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvY29jb2EvV2ViQXJj
aGl2ZUR1bXBTdXBwb3J0Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvY29jb2EvV2Vi
QXJjaGl2ZUR1bXBTdXBwb3J0Lm1tCkBAIC0yMDAsNyArMjAwLDcgQEAgc3RhdGljIENGQ29tcGFy
aXNvblJlc3VsdCBjb21wYXJlUmVzb3VyY2VVUkxzKGNvbnN0IHZvaWQgKnZhbDEsIGNvbnN0IHZv
aWQgKnZhbDIKICAgICByZXR1cm4gQ0ZTdHJpbmdDb21wYXJlKHVybDEsIHVybDIsIGtDRkNvbXBh
cmVBbmNob3JlZCk7CiB9CiAKLUNGU3RyaW5nUmVmIGNyZWF0ZVhNTFN0cmluZ0Zyb21XZWJBcmNo
aXZlRGF0YShDRkRhdGFSZWYgd2ViQXJjaGl2ZURhdGEpCitSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+
IGNyZWF0ZVhNTFN0cmluZ0Zyb21XZWJBcmNoaXZlRGF0YShDRkRhdGFSZWYgd2ViQXJjaGl2ZURh
dGEpCiB7CiAgICAgQ0ZFcnJvclJlZiBlcnJvciA9IDA7CiAgICAgQ0ZQcm9wZXJ0eUxpc3RGb3Jt
YXQgZm9ybWF0ID0ga0NGUHJvcGVydHlMaXN0QmluYXJ5Rm9ybWF0X3YxXzA7CkBAIC0yMDgsOCAr
MjA4LDggQEAgQ0ZTdHJpbmdSZWYgY3JlYXRlWE1MU3RyaW5nRnJvbVdlYkFyY2hpdmVEYXRhKENG
RGF0YVJlZiB3ZWJBcmNoaXZlRGF0YSkKIAogICAgIGlmICghcHJvcGVydHlMaXN0KSB7CiAgICAg
ICAgIGlmIChlcnJvcikKLSAgICAgICAgICAgIHJldHVybiBDRkVycm9yQ29weURlc2NyaXB0aW9u
KGVycm9yKTsKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PENGU3RyaW5nUmVmPihDRlJldGFp
bihDRlNUUigiQW4gdW5rbm93biBlcnJvciBvY2N1cnJlZCBjb252ZXJ0aW5nIGRhdGEgdG8gcHJv
cGVydHkgbGlzdC4iKSkpOworICAgICAgICAgICAgcmV0dXJuIGFkb3B0Q0YoQ0ZFcnJvckNvcHlE
ZXNjcmlwdGlvbihlcnJvcikpOworICAgICAgICByZXR1cm4gQ0ZTVFIoIkFuIHVua25vd24gZXJy
b3Igb2NjdXJyZWQgY29udmVydGluZyBkYXRhIHRvIHByb3BlcnR5IGxpc3QuIik7CiAgICAgfQog
CiAgICAgUmV0YWluUHRyPENGTXV0YWJsZUFycmF5UmVmPiByZXNvdXJjZXMgPSBhZG9wdENGKENG
QXJyYXlDcmVhdGVNdXRhYmxlKGtDRkFsbG9jYXRvckRlZmF1bHQsIDAsICZrQ0ZUeXBlQXJyYXlD
YWxsQmFja3MpKTsKQEAgLTI1MCw4ICsyNTAsOCBAQCBDRlN0cmluZ1JlZiBjcmVhdGVYTUxTdHJp
bmdGcm9tV2ViQXJjaGl2ZURhdGEoQ0ZEYXRhUmVmIHdlYkFyY2hpdmVEYXRhKQogCiAgICAgaWYg
KCF4bWxEYXRhKSB7CiAgICAgICAgIGlmIChlcnJvcikKLSAgICAgICAgICAgIHJldHVybiBDRkVy
cm9yQ29weURlc2NyaXB0aW9uKGVycm9yKTsKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PENG
U3RyaW5nUmVmPihDRlJldGFpbihDRlNUUigiQW4gdW5rbm93biBlcnJvciBvY2N1cnJlZCBjb252
ZXJ0aW5nIHByb3BlcnR5IGxpc3QgdG8gZGF0YS4iKSkpOworICAgICAgICAgICAgcmV0dXJuIGFk
b3B0Q0YoQ0ZFcnJvckNvcHlEZXNjcmlwdGlvbihlcnJvcikpOworICAgICAgICByZXR1cm4gQ0ZT
VFIoIkFuIHVua25vd24gZXJyb3Igb2NjdXJyZWQgY29udmVydGluZyBwcm9wZXJ0eSBsaXN0IHRv
IGRhdGEuIik7CiAgICAgfQogCiAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB4bWxTdHJpbmcg
PSBhZG9wdENGKENGU3RyaW5nQ3JlYXRlRnJvbUV4dGVybmFsUmVwcmVzZW50YXRpb24oa0NGQWxs
b2NhdG9yRGVmYXVsdCwgeG1sRGF0YS5nZXQoKSwga0NGU3RyaW5nRW5jb2RpbmdVVEY4KSk7CkBA
IC0yNjYsNyArMjY2LDcgQEAgQ0ZTdHJpbmdSZWYgY3JlYXRlWE1MU3RyaW5nRnJvbVdlYkFyY2hp
dmVEYXRhKENGRGF0YVJlZiB3ZWJBcmNoaXZlRGF0YSkKICAgICBxdWlja0xvb2tVUkxSZXBsYWNl
bWVudHMoKS5jbGVhcigpOwogI2VuZGlmCiAKLSAgICByZXR1cm4gc3RyaW5nLmxlYWtSZWYoKTsK
KyAgICByZXR1cm4gc3RyaW5nOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlVGVzdFN1cHBv
cnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvY29jb2EvV2ViVmlld1Zpc3Vh
bElkZW50aWZpY2F0aW9uT3ZlcmxheS5tbSBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvY29jb2Ev
V2ViVmlld1Zpc3VhbElkZW50aWZpY2F0aW9uT3ZlcmxheS5tbQppbmRleCAxZjdhNjJhYTNmY2Y0
N2NjMjMxMDliM2ZiYjM5M2VhYmI4MzMzZjQyLi45ZGE4ODMwYmEyYjhlMDdjNWY2N2YwZTM0NmRi
YmU5MWI5Y2VlMzdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL2NvY29hL1dl
YlZpZXdWaXN1YWxJZGVudGlmaWNhdGlvbk92ZXJsYXkubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9jb2NvYS9XZWJWaWV3VmlzdWFsSWRlbnRpZmljYXRpb25PdmVybGF5Lm1tCkBAIC0x
MjQsNyArMTI0LDcgQEAgLSAodm9pZClvYnNlcnZlVmFsdWVGb3JLZXlQYXRoOihOU1N0cmluZyAq
KWtleVBhdGggb2ZPYmplY3Q6KGlkKW9iamVjdCBjaGFuZ2U6KE4KIHN0YXRpYyBDVEZvbnRSZWYg
aWRlbnRpZmljYXRpb25Gb250KCkKIHsKICAgICBhdXRvIG1hdHJpeCA9IENHQWZmaW5lVHJhbnNm
b3JtSWRlbnRpdHk7Ci0gICAgcmV0dXJuIChDVEZvbnRSZWYpQ0ZBdXRvcmVsZWFzZShDVEZvbnRD
cmVhdGVXaXRoTmFtZShDRlNUUigiSGVsdmV0aWNhIiksIDIwLCAmbWF0cml4KSk7CisgICAgcmV0
dXJuIGFkb3B0Q0YoQ1RGb250Q3JlYXRlV2l0aE5hbWUoQ0ZTVFIoIkhlbHZldGljYSIpLCAyMCwg
Jm1hdHJpeCkpLmF1dG9yZWxlYXNlKCk7CiB9CiAKIGNvbnN0ZXhwciBDR0Zsb2F0IGhvcml6b250
YWxNYXJnaW4gPSAxNTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vbWFjL1N0
cmluZ1V0aWxpdGllcy5tbSBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vbWFjL1N0cmluZ1V0aWxp
dGllcy5tbQppbmRleCA2ODRmZDg4Nzk3NjUzZjQ4Y2IzNmM0NWRiMjA4MTdmNGMyYWU4NDNiLi42
ZTJlZTZlM2IzMGI2ZmQ0Y2Y5MDQyYjQ5YmRiZTVkZjcyYzEwNzFjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL21hYy9TdHJpbmdVdGlsaXRpZXMubW0KKysrIGIvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9tYWMvU3RyaW5nVXRpbGl0aWVzLm1tCkBAIC0zNiw3ICszNiw3IEBAIG5h
bWVzcGFjZSBXZWJLaXQgewogCiBOU1N0cmluZyAqbnNTdHJpbmdGcm9tV2ViQ29yZVN0cmluZyhj
b25zdCBTdHJpbmcmIHN0cmluZykKIHsKLSAgICByZXR1cm4gc3RyaW5nLmlzRW1wdHkoKSA/IEAi
IiA6IENGQnJpZGdpbmdSZWxlYXNlKFdLU3RyaW5nQ29weUNGU3RyaW5nKDAsIHRvQVBJKHN0cmlu
Zy5pbXBsKCkpKSk7CisgICAgcmV0dXJuIHN0cmluZy5pc0VtcHR5KCkgPyBAIiIgOiBhZG9wdENG
KFdLU3RyaW5nQ29weUNGU3RyaW5nKDAsIHRvQVBJKHN0cmluZy5pbXBsKCkpKSkuYnJpZGdpbmdB
dXRvcmVsZWFzZSgpOwogfQogCiAjaWYgRU5BQkxFKFRFTEVQSE9ORV9OVU1CRVJfREVURUNUSU9O
KSAmJiBQTEFURk9STShNQUMpCkBAIC02NSwxMSArNjUsMTEgQEAgTlNTdHJpbmcgKmZvcm1hdHRl
ZFBob25lTnVtYmVyU3RyaW5nKE5TU3RyaW5nICpvcmlnaW5hbFBob25lTnVtYmVyKQogICAgIGlm
ICghcGhvbmVOdW1iZXIpCiAgICAgICAgIHJldHVybiBvcmlnaW5hbFBob25lTnVtYmVyOwogCi0g
ICAgQ0ZTdHJpbmdSZWYgcGhvbmVOdW1iZXJTdHJpbmcgPSBDRlBob25lTnVtYmVyQ29weUZvcm1h
dHRlZFJlcHJlc2VudGF0aW9uKHBob25lTnVtYmVyLmdldCgpKTsKKyAgICBhdXRvIHBob25lTnVt
YmVyU3RyaW5nID0gYWRvcHRDRihDRlBob25lTnVtYmVyQ29weUZvcm1hdHRlZFJlcHJlc2VudGF0
aW9uKHBob25lTnVtYmVyLmdldCgpKSk7CiAgICAgaWYgKCFwaG9uZU51bWJlclN0cmluZykKLSAg
ICAgICAgcGhvbmVOdW1iZXJTdHJpbmcgPSBDRlBob25lTnVtYmVyQ29weVVuZm9ybWF0dGVkUmVw
cmVzZW50YXRpb24ocGhvbmVOdW1iZXIuZ2V0KCkpOworICAgICAgICBwaG9uZU51bWJlclN0cmlu
ZyA9IGFkb3B0Q0YoQ0ZQaG9uZU51bWJlckNvcHlVbmZvcm1hdHRlZFJlcHJlc2VudGF0aW9uKHBo
b25lTnVtYmVyLmdldCgpKSk7CiAKLSAgICByZXR1cm4gQ0ZCcmlkZ2luZ1JlbGVhc2UocGhvbmVO
dW1iZXJTdHJpbmcpOworICAgIHJldHVybiBwaG9uZU51bWJlclN0cmluZy5icmlkZ2luZ0F1dG9y
ZWxlYXNlKCk7CiB9CiAKICNlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsdWdpblBy
b2Nlc3MvbWFjL1BsdWdpblByb2Nlc3NNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nl
c3MvbWFjL1BsdWdpblByb2Nlc3NNYWMubW0KaW5kZXggMzFlOWNmOTJmMDJlZTBjY2YxMDdhZmZl
NTZjMDUzNDhmYmM1YzRmMC4uY2ZhNjZhNGUyZjI2MTM3YjNjOWY3MjU3ZjY1OTNmNDhmMTQxYTQ5
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL21hYy9QbHVnaW5Qcm9j
ZXNzTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9tYWMvUGx1Z2luUHJv
Y2Vzc01hYy5tbQpAQCAtMzExLDIwICszMTEsMjAgQEAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZUNv
Y29hT3ZlcnJpZGVzKCkKIAogICAgIE5TTm90aWZpY2F0aW9uQ2VudGVyICpkZWZhdWx0Q2VudGVy
ID0gW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdOwogCisgICAgLy8gV2UgbGVh
ayB0aGUgdHdvIG9ic2VydmVycyBzbyB0aGF0IHRoZXkgb2JzZXJ2ZSBub3RpZmljYXRpb25zIGZv
ciB0aGUgbGlmZXRpbWUgb2YgdGhlIHByb2Nlc3MuCiAgICAgLy8gVHJhY2sgd2hlbiBhbnkgQ29j
b2Egd2luZG93IGlzIGFib3V0IHRvIGJlIGJlIHNob3duLgotICAgIGlkIG9yZGVyT25TY3JlZW5P
YnNlcnZlciA9IFtkZWZhdWx0Q2VudGVyIGFkZE9ic2VydmVyRm9yTmFtZTpOU1dpbmRvd1dpbGxP
cmRlck9uU2NyZWVuTm90aWZpY2F0aW9uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JqZWN0Om5pbAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxdWV1ZTpuaWwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNp
bmdCbG9jazpeKE5TTm90aWZpY2F0aW9uICpub3RpZmljYXRpb24pIHsgZnVsbHNjcmVlbldpbmRv
d1RyYWNrZXIoKS53aW5kb3dTaG93bihbbm90aWZpY2F0aW9uIG9iamVjdF0pOyB9XTsKKyAgICBp
ZCBvcmRlck9uU2NyZWVuT2JzZXJ2ZXIgPSByZXRhaW5QdHIoW2RlZmF1bHRDZW50ZXIgYWRkT2Jz
ZXJ2ZXJGb3JOYW1lOk5TV2luZG93V2lsbE9yZGVyT25TY3JlZW5Ob3RpZmljYXRpb24KKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgb2JqZWN0Om5pbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcXVldWU6bmlsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNpbmdCbG9j
azpeKE5TTm90aWZpY2F0aW9uICpub3RpZmljYXRpb24pIHsgZnVsbHNjcmVlbldpbmRvd1RyYWNr
ZXIoKS53aW5kb3dTaG93bihbbm90aWZpY2F0aW9uIG9iamVjdF0pOyB9XSkubGVha1JlZigpOwor
ICAgIFVOVVNFRF9QQVJBTShvcmRlck9uU2NyZWVuT2JzZXJ2ZXIpOwogICAgIC8vIFRyYWNrIHdo
ZW4gYW55IENvY29hIHdpbmRvdyBpcyBhYm91dCB0byBiZSBoaWRkZW4uCi0gICAgaWQgb3JkZXJP
ZmZTY3JlZW5PYnNlcnZlciA9IFtkZWZhdWx0Q2VudGVyIGFkZE9ic2VydmVyRm9yTmFtZTpOU1dp
bmRvd1dpbGxPcmRlck9mZlNjcmVlbk5vdGlmaWNhdGlvbgotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYmplY3Q6bmlsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxdWV1
ZTpuaWwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB1c2luZ0Jsb2NrOl4oTlNOb3RpZmljYXRpb24gKm5vdGlmaWNhdGlvbikgeyBmdWxsc2Ny
ZWVuV2luZG93VHJhY2tlcigpLndpbmRvd0hpZGRlbihbbm90aWZpY2F0aW9uIG9iamVjdF0pOyB9
XTsKLQotICAgIC8vIExlYWsgdGhlIHR3byBvYnNlcnZlcnMgc28gdGhhdCB0aGV5IG9ic2VydmUg
bm90aWZpY2F0aW9ucyBmb3IgdGhlIGxpZmV0aW1lIG9mIHRoZSBwcm9jZXNzLgotICAgIENGUmV0
YWluKChfX2JyaWRnZSBDRlR5cGVSZWYpb3JkZXJPblNjcmVlbk9ic2VydmVyKTsKLSAgICBDRlJl
dGFpbigoX19icmlkZ2UgQ0ZUeXBlUmVmKW9yZGVyT2ZmU2NyZWVuT2JzZXJ2ZXIpOworICAgIGlk
IG9yZGVyT2ZmU2NyZWVuT2JzZXJ2ZXIgPSByZXRhaW5QdHIoW2RlZmF1bHRDZW50ZXIgYWRkT2Jz
ZXJ2ZXJGb3JOYW1lOk5TV2luZG93V2lsbE9yZGVyT2ZmU2NyZWVuTm90aWZpY2F0aW9uCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBvYmplY3Q6bmlsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcXVldWU6bmlsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzaW5n
QmxvY2s6XihOU05vdGlmaWNhdGlvbiAqbm90aWZpY2F0aW9uKSB7IGZ1bGxzY3JlZW5XaW5kb3dU
cmFja2VyKCkud2luZG93SGlkZGVuKFtub3RpZmljYXRpb24gb2JqZWN0XSk7IH1dKS5sZWFrUmVm
KCk7CisgICAgVU5VU0VEX1BBUkFNKG9yZGVyT2ZmU2NyZWVuT2JzZXJ2ZXIpOworCiB9CiAKIHZv
aWQgUGx1Z2luUHJvY2Vzczo6c2V0TW9kYWxXaW5kb3dJc1Nob3dpbmcoYm9vbCBtb2RhbFdpbmRv
d0lzU2hvd2luZykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9QYXN0ZWJv
YXJkVHlwZXMubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvUGFzdGVib2FyZFR5cGVzLm1t
CmluZGV4IDUzZjk4YzEzNzRmOTRkNTdiMjZlNDZhNmRiMjZiOGFkMjRlNzk3NWUuLmVkNGM3Yjli
ODgxOTZmMmE5YWEwY2E2MjM4NDgxMDRjODk4ODMxMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL21hYy9QYXN0ZWJvYXJkVHlwZXMubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvbWFjL1Bhc3RlYm9hcmRUeXBlcy5tbQpAQCAtMzcsNDYgKzM3LDQwIEBAIE5TU3RyaW5nICog
Y29uc3QgUGFzdGVib2FyZFR5cGVzOjpXZWJVUkxzV2l0aFRpdGxlc1Bib2FyZFR5cGUgPSBAIldl
YlVSTHNXaXRoVGl0CiBOU1N0cmluZyAqIGNvbnN0IFBhc3RlYm9hcmRUeXBlczo6V2ViVVJMUGJv
YXJkVHlwZSA9IEAicHVibGljLnVybCI7CiBOU1N0cmluZyAqIGNvbnN0IFBhc3RlYm9hcmRUeXBl
czo6V2ViVVJMTmFtZVBib2FyZFR5cGUgPSBAInB1YmxpYy51cmwtbmFtZSI7CiBOU1N0cmluZyAq
IGNvbnN0IFBhc3RlYm9hcmRUeXBlczo6V2ViRHVtbXlQYm9hcmRUeXBlID0gQCJBcHBsZSBXZWJL
aXQgZHVtbXkgcGFzdGVib2FyZCB0eXBlIjsKLQotc3RhdGljIGlubGluZSBOU0FycmF5ICpyZXRh
aW4oTlNBcnJheSAqYXJyYXkpCi17Ci0gICAgQ0ZSZXRhaW4oYXJyYXkpOwotICAgIHJldHVybiBh
cnJheTsKLX0KICAgICAKIE5TQXJyYXkqIFBhc3RlYm9hcmRUeXBlczo6Zm9yRWRpdGluZygpCiB7
CiBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTiAKLSAgICBzdGF0aWMgTlNBcnJh
eSAqdHlwZXMgPSByZXRhaW4oQFtXZWJBcmNoaXZlUGJvYXJkVHlwZSwgKF9fYnJpZGdlIE5TU3Ry
aW5nICopa1VUVHlwZVdlYkFyY2hpdmUsIFdlYkNvcmU6OmxlZ2FjeUhUTUxQYXN0ZWJvYXJkVHlw
ZSgpLCBXZWJDb3JlOjpsZWdhY3lGaWxlbmFtZXNQYXN0ZWJvYXJkVHlwZSgpLCBXZWJDb3JlOjps
ZWdhY3lUSUZGUGFzdGVib2FyZFR5cGUoKSwgV2ViQ29yZTo6bGVnYWN5UERGUGFzdGVib2FyZFR5
cGUoKSwKLSAgICAgICAgV2ViQ29yZTo6bGVnYWN5VVJMUGFzdGVib2FyZFR5cGUoKSwgV2ViQ29y
ZTo6bGVnYWN5UlRGRFBhc3RlYm9hcmRUeXBlKCksIFdlYkNvcmU6OmxlZ2FjeVJURlBhc3RlYm9h
cmRUeXBlKCksIFdlYkNvcmU6OmxlZ2FjeVN0cmluZ1Bhc3RlYm9hcmRUeXBlKCksIFdlYkNvcmU6
OmxlZ2FjeUNvbG9yUGFzdGVib2FyZFR5cGUoKSwgKF9fYnJpZGdlIE5TU3RyaW5nICopa1VUVHlw
ZVBOR10pOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8TlNBcnJheT4+IHR5
cGVzID0gQFtXZWJBcmNoaXZlUGJvYXJkVHlwZSwgKF9fYnJpZGdlIE5TU3RyaW5nICopa1VUVHlw
ZVdlYkFyY2hpdmUsIFdlYkNvcmU6OmxlZ2FjeUhUTUxQYXN0ZWJvYXJkVHlwZSgpLCBXZWJDb3Jl
OjpsZWdhY3lGaWxlbmFtZXNQYXN0ZWJvYXJkVHlwZSgpLCBXZWJDb3JlOjpsZWdhY3lUSUZGUGFz
dGVib2FyZFR5cGUoKSwgV2ViQ29yZTo6bGVnYWN5UERGUGFzdGVib2FyZFR5cGUoKSwKKyAgICAg
ICAgV2ViQ29yZTo6bGVnYWN5VVJMUGFzdGVib2FyZFR5cGUoKSwgV2ViQ29yZTo6bGVnYWN5UlRG
RFBhc3RlYm9hcmRUeXBlKCksIFdlYkNvcmU6OmxlZ2FjeVJURlBhc3RlYm9hcmRUeXBlKCksIFdl
YkNvcmU6OmxlZ2FjeVN0cmluZ1Bhc3RlYm9hcmRUeXBlKCksIFdlYkNvcmU6OmxlZ2FjeUNvbG9y
UGFzdGVib2FyZFR5cGUoKSwgKF9fYnJpZGdlIE5TU3RyaW5nICopa1VUVHlwZVBOR107CiBBTExP
V19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKLSAgICByZXR1cm4gdHlwZXM7CisgICAgcmV0
dXJuIHR5cGVzLmdldCgpLmdldCgpOwogfQogCiBOU0FycmF5KiBQYXN0ZWJvYXJkVHlwZXM6OmZv
clVSTCgpCiB7Ci0gICAgc3RhdGljIE5TQXJyYXkgKnR5cGVzID0gcmV0YWluKEBbV2ViVVJMc1dp
dGhUaXRsZXNQYm9hcmRUeXBlLCBXZWJDb3JlOjpsZWdhY3lVUkxQYXN0ZWJvYXJkVHlwZSgpLCBX
ZWJVUkxQYm9hcmRUeXBlLCAgV2ViVVJMTmFtZVBib2FyZFR5cGUsIFdlYkNvcmU6OmxlZ2FjeVN0
cmluZ1Bhc3RlYm9hcmRUeXBlKCksIFdlYkNvcmU6OmxlZ2FjeUZpbGVuYW1lc1Bhc3RlYm9hcmRU
eXBlKCksIFdlYkNvcmU6OmxlZ2FjeUZpbGVzUHJvbWlzZVBhc3RlYm9hcmRUeXBlKCldKTsKLSAg
ICByZXR1cm4gdHlwZXM7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxOU0Fy
cmF5Pj4gdHlwZXMgPSBAW1dlYlVSTHNXaXRoVGl0bGVzUGJvYXJkVHlwZSwgV2ViQ29yZTo6bGVn
YWN5VVJMUGFzdGVib2FyZFR5cGUoKSwgV2ViVVJMUGJvYXJkVHlwZSwgIFdlYlVSTE5hbWVQYm9h
cmRUeXBlLCBXZWJDb3JlOjpsZWdhY3lTdHJpbmdQYXN0ZWJvYXJkVHlwZSgpLCBXZWJDb3JlOjps
ZWdhY3lGaWxlbmFtZXNQYXN0ZWJvYXJkVHlwZSgpLCBXZWJDb3JlOjpsZWdhY3lGaWxlc1Byb21p
c2VQYXN0ZWJvYXJkVHlwZSgpXTsKKyAgICByZXR1cm4gdHlwZXMuZ2V0KCkuZ2V0KCk7CiB9CiAK
IE5TQXJyYXkqIFBhc3RlYm9hcmRUeXBlczo6Zm9ySW1hZ2VzKCkKIHsKLSAgICBzdGF0aWMgTlNB
cnJheSAqdHlwZXMgPSByZXRhaW4oQFtXZWJDb3JlOjpsZWdhY3lUSUZGUGFzdGVib2FyZFR5cGUo
KSwgV2ViVVJMc1dpdGhUaXRsZXNQYm9hcmRUeXBlLCBXZWJDb3JlOjpsZWdhY3lVUkxQYXN0ZWJv
YXJkVHlwZSgpLCBXZWJVUkxQYm9hcmRUeXBlLCBXZWJVUkxOYW1lUGJvYXJkVHlwZSwgV2ViQ29y
ZTo6bGVnYWN5U3RyaW5nUGFzdGVib2FyZFR5cGUoKV0pOwotICAgIHJldHVybiB0eXBlczsKKyAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPE5TQXJyYXk+PiB0eXBlcyA9IEBbV2Vi
Q29yZTo6bGVnYWN5VElGRlBhc3RlYm9hcmRUeXBlKCksIFdlYlVSTHNXaXRoVGl0bGVzUGJvYXJk
VHlwZSwgV2ViQ29yZTo6bGVnYWN5VVJMUGFzdGVib2FyZFR5cGUoKSwgV2ViVVJMUGJvYXJkVHlw
ZSwgV2ViVVJMTmFtZVBib2FyZFR5cGUsIFdlYkNvcmU6OmxlZ2FjeVN0cmluZ1Bhc3RlYm9hcmRU
eXBlKCldOworICAgIHJldHVybiB0eXBlcy5nZXQoKS5nZXQoKTsKIH0KIAogTlNBcnJheSogUGFz
dGVib2FyZFR5cGVzOjpmb3JJbWFnZXNXaXRoQXJjaGl2ZSgpCiB7Ci0gICAgc3RhdGljIE5TQXJy
YXkgKnR5cGVzID0gcmV0YWluKEBbV2ViQ29yZTo6bGVnYWN5VElGRlBhc3RlYm9hcmRUeXBlKCks
IFdlYlVSTHNXaXRoVGl0bGVzUGJvYXJkVHlwZSwgV2ViQ29yZTo6bGVnYWN5VVJMUGFzdGVib2Fy
ZFR5cGUoKSwgV2ViVVJMUGJvYXJkVHlwZSwgV2ViVVJMTmFtZVBib2FyZFR5cGUsIFdlYkNvcmU6
OmxlZ2FjeVN0cmluZ1Bhc3RlYm9hcmRUeXBlKCksIFdlYkNvcmU6OmxlZ2FjeVJURkRQYXN0ZWJv
YXJkVHlwZSgpLCBXZWJBcmNoaXZlUGJvYXJkVHlwZV0pOwotICAgIHJldHVybiB0eXBlczsKKyAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPE5TQXJyYXk+PiB0eXBlcyA9IEBbV2Vi
Q29yZTo6bGVnYWN5VElGRlBhc3RlYm9hcmRUeXBlKCksIFdlYlVSTHNXaXRoVGl0bGVzUGJvYXJk
VHlwZSwgV2ViQ29yZTo6bGVnYWN5VVJMUGFzdGVib2FyZFR5cGUoKSwgV2ViVVJMUGJvYXJkVHlw
ZSwgV2ViVVJMTmFtZVBib2FyZFR5cGUsIFdlYkNvcmU6OmxlZ2FjeVN0cmluZ1Bhc3RlYm9hcmRU
eXBlKCksIFdlYkNvcmU6OmxlZ2FjeVJURkRQYXN0ZWJvYXJkVHlwZSgpLCBXZWJBcmNoaXZlUGJv
YXJkVHlwZV07CisgICAgcmV0dXJuIHR5cGVzLmdldCgpLmdldCgpOwogfQogCiBOU0FycmF5KiBQ
YXN0ZWJvYXJkVHlwZXM6OmZvclNlbGVjdGlvbigpCiB7CiBBTExPV19ERVBSRUNBVEVEX0RFQ0xB
UkFUSU9OU19CRUdJTiAKLSAgICBzdGF0aWMgTlNBcnJheSAqdHlwZXMgPSByZXRhaW4oQFtXZWJB
cmNoaXZlUGJvYXJkVHlwZSwgKF9fYnJpZGdlIE5TU3RyaW5nICopa1VUVHlwZVdlYkFyY2hpdmUs
IFdlYkNvcmU6OmxlZ2FjeVJURkRQYXN0ZWJvYXJkVHlwZSgpLCBXZWJDb3JlOjpsZWdhY3lSVEZQ
YXN0ZWJvYXJkVHlwZSgpLCBXZWJDb3JlOjpsZWdhY3lTdHJpbmdQYXN0ZWJvYXJkVHlwZSgpXSk7
CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxOU0FycmF5Pj4gdHlwZXMgPSBA
W1dlYkFyY2hpdmVQYm9hcmRUeXBlLCAoX19icmlkZ2UgTlNTdHJpbmcgKilrVVRUeXBlV2ViQXJj
aGl2ZSwgV2ViQ29yZTo6bGVnYWN5UlRGRFBhc3RlYm9hcmRUeXBlKCksIFdlYkNvcmU6OmxlZ2Fj
eVJURlBhc3RlYm9hcmRUeXBlKCksIFdlYkNvcmU6OmxlZ2FjeVN0cmluZ1Bhc3RlYm9hcmRUeXBl
KCldOwogQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECi0gICAgcmV0dXJuIHR5cGVz
OworICAgIHJldHVybiB0eXBlcy5nZXQoKS5nZXQoKTsKIH0KICAgICAKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmll
d0ltcGwubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQpp
bmRleCBhNWM2YmJjMGNjZmU0ZmIyZWIzMDk3NzdjZThmN2U3Y2E2YmIzOTljLi5lNmZiNzgxMGY5
NjU3OGVlMjNmMWY5YmEyMzFhYTE0MzY5OTlkODkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQpAQCAtMjI1OSw4ICsyMjU5LDcgQEAgYm9vbCBXZWJW
aWV3SW1wbDo6YWNjZXB0c0ZpcnN0TW91c2UoTlNFdmVudCAqZXZlbnQpCiAgICAgLy8gVGhlcmUn
cyBhIGNoYW5jZSB0aGF0IHJlc3BvbmRpbmcgdG8gdGhpcyBldmVudCB3aWxsIHJ1biBhIG5lc3Rl
ZCBldmVudCBsb29wLCBhbmQKICAgICAvLyBmZXRjaGluZyBhIG5ldyBldmVudCBtaWdodCByZWxl
YXNlIHRoZSBvbGQgb25lLiBSZXRhaW5pbmcgYW5kIHRoZW4gYXV0b3JlbGVhc2luZwogICAgIC8v
IHRoZSBjdXJyZW50IGV2ZW50IHByZXZlbnRzIHRoYXQgZnJvbSBjYXVzaW5nIGEgcHJvYmxlbSBp
bnNpZGUgV2ViS2l0IG9yIEFwcEtpdCBjb2RlLgotICAgIENGUmV0YWluKChfX2JyaWRnZSBDRlR5
cGVSZWYpZXZlbnQpOwotICAgIENGQXV0b3JlbGVhc2UoKF9fYnJpZGdlIENGVHlwZVJlZilldmVu
dCk7CisgICAgcmV0YWluUHRyKGV2ZW50KS5hdXRvcmVsZWFzZSgpOwogCiAgICAgaWYgKCFbbV92
aWV3IGhpdFRlc3Q6ZXZlbnQubG9jYXRpb25JbldpbmRvd10pCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKQEAgLTIyNzksOCArMjI3OCw3IEBAIGJvb2wgV2ViVmlld0ltcGw6OnNob3VsZERlbGF5V2lu
ZG93T3JkZXJpbmdGb3JFdmVudChOU0V2ZW50ICpldmVudCkKICAgICAvLyBUaGVyZSdzIGEgY2hh
bmNlIHRoYXQgcmVzcG9uZGluZyB0byB0aGlzIGV2ZW50IHdpbGwgcnVuIGEgbmVzdGVkIGV2ZW50
IGxvb3AsIGFuZAogICAgIC8vIGZldGNoaW5nIGEgbmV3IGV2ZW50IG1pZ2h0IHJlbGVhc2UgdGhl
IG9sZCBvbmUuIFJldGFpbmluZyBhbmQgdGhlbiBhdXRvcmVsZWFzaW5nCiAgICAgLy8gdGhlIGN1
cnJlbnQgZXZlbnQgcHJldmVudHMgdGhhdCBmcm9tIGNhdXNpbmcgYSBwcm9ibGVtIGluc2lkZSBX
ZWJLaXQgb3IgQXBwS2l0IGNvZGUuCi0gICAgQ0ZSZXRhaW4oKF9fYnJpZGdlIENGVHlwZVJlZill
dmVudCk7Ci0gICAgQ0ZBdXRvcmVsZWFzZSgoX19icmlkZ2UgQ0ZUeXBlUmVmKWV2ZW50KTsKKyAg
ICByZXRhaW5QdHIoZXZlbnQpLmF1dG9yZWxlYXNlKCk7CiAKICAgICBpZiAoIVttX3ZpZXcgaGl0
VGVzdDpldmVudC5sb2NhdGlvbkluV2luZG93XSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAt
NDgxMSwyNCArNDgwOSwyMCBAQCB2b2lkIFdlYlZpZXdJbXBsOjpkb25lV2l0aEtleUV2ZW50KE5T
RXZlbnQgKmV2ZW50LCBib29sIGV2ZW50V2FzSGFuZGxlZCkKIAogTlNBcnJheSAqV2ViVmlld0lt
cGw6OnZhbGlkQXR0cmlidXRlc0Zvck1hcmtlZFRleHQoKQogewotICAgIHN0YXRpYyBOU0FycmF5
ICp2YWxpZEF0dHJpYnV0ZXM7Ci0gICAgaWYgKCF2YWxpZEF0dHJpYnV0ZXMpIHsKLSAgICAgICAg
dmFsaWRBdHRyaWJ1dGVzID0gQFsKLSAgICAgICAgICAgIE5TVW5kZXJsaW5lU3R5bGVBdHRyaWJ1
dGVOYW1lLAotICAgICAgICAgICAgTlNVbmRlcmxpbmVDb2xvckF0dHJpYnV0ZU5hbWUsCi0gICAg
ICAgICAgICBOU01hcmtlZENsYXVzZVNlZ21lbnRBdHRyaWJ1dGVOYW1lLAotICAgICAgICAgICAg
TlNUZXh0QWx0ZXJuYXRpdmVzQXR0cmlidXRlTmFtZSwKLSAgICAgICAgICAgIE5TVGV4dEluc2Vy
dGlvblVuZG9hYmxlQXR0cmlidXRlTmFtZSwKLSAgICAgICAgXTsKLSAgICAgICAgLy8gTlNUZXh0
IGFsc28gc3VwcG9ydHMgdGhlIGZvbGxvd2luZyBhdHRyaWJ1dGVzLCBidXQgaXQncwotICAgICAg
ICAvLyBoYXJkIHRvIHRlbGwgd2hpY2ggYXJlIHJlYWxseSByZXF1aXJlZCBmb3IgdGV4dCBpbnB1
dCB0bwotICAgICAgICAvLyB3b3JrIHdlbGw7IEkgaGF2ZSBub3Qgc2VlbiBhbnkgaW5wdXQgbWV0
aG9kIG1ha2UgdXNlIG9mIHRoZW0geWV0LgotICAgICAgICAvLyAgICAgTlNGb250QXR0cmlidXRl
TmFtZSwgTlNGb3JlZ3JvdW5kQ29sb3JBdHRyaWJ1dGVOYW1lLAotICAgICAgICAvLyAgICAgTlNC
YWNrZ3JvdW5kQ29sb3JBdHRyaWJ1dGVOYW1lLCBOU0xhbmd1YWdlQXR0cmlidXRlTmFtZS4KLSAg
ICAgICAgQ0ZSZXRhaW4odmFsaWRBdHRyaWJ1dGVzKTsKLSAgICB9CisgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPFJldGFpblB0cjxOU0FycmF5Pj4gdmFsaWRBdHRyaWJ1dGVzID0gQFsKKyAgICAg
ICAgTlNVbmRlcmxpbmVTdHlsZUF0dHJpYnV0ZU5hbWUsCisgICAgICAgIE5TVW5kZXJsaW5lQ29s
b3JBdHRyaWJ1dGVOYW1lLAorICAgICAgICBOU01hcmtlZENsYXVzZVNlZ21lbnRBdHRyaWJ1dGVO
YW1lLAorICAgICAgICBOU1RleHRBbHRlcm5hdGl2ZXNBdHRyaWJ1dGVOYW1lLAorICAgICAgICBO
U1RleHRJbnNlcnRpb25VbmRvYWJsZUF0dHJpYnV0ZU5hbWUsCisgICAgXTsKKyAgICAvLyBOU1Rl
eHQgYWxzbyBzdXBwb3J0cyB0aGUgZm9sbG93aW5nIGF0dHJpYnV0ZXMsIGJ1dCBpdCdzCisgICAg
Ly8gaGFyZCB0byB0ZWxsIHdoaWNoIGFyZSByZWFsbHkgcmVxdWlyZWQgZm9yIHRleHQgaW5wdXQg
dG8KKyAgICAvLyB3b3JrIHdlbGw7IEkgaGF2ZSBub3Qgc2VlbiBhbnkgaW5wdXQgbWV0aG9kIG1h
a2UgdXNlIG9mIHRoZW0geWV0LgorICAgIC8vICAgICBOU0ZvbnRBdHRyaWJ1dGVOYW1lLCBOU0Zv
cmVncm91bmRDb2xvckF0dHJpYnV0ZU5hbWUsCisgICAgLy8gICAgIE5TQmFja2dyb3VuZENvbG9y
QXR0cmlidXRlTmFtZSwgTlNMYW5ndWFnZUF0dHJpYnV0ZU5hbWUuCiAgICAgTE9HKFRleHRJbnB1
dCwgInZhbGlkQXR0cmlidXRlc0Zvck1hcmtlZFRleHQgLT4gKC4uLikiKTsKLSAgICByZXR1cm4g
dmFsaWRBdHRyaWJ1dGVzOworICAgIHJldHVybiB2YWxpZEF0dHJpYnV0ZXMuZ2V0KCkuZ2V0KCk7
CiB9CiAKIHN0YXRpYyBWZWN0b3I8V2ViQ29yZTo6Q29tcG9zaXRpb25VbmRlcmxpbmU+IGV4dHJh
Y3RVbmRlcmxpbmVzKE5TQXR0cmlidXRlZFN0cmluZyAqc3RyaW5nKQpAQCAtNTIwMiw4ICs1MTk2
LDcgQEAgYm9vbCBXZWJWaWV3SW1wbDo6cGVyZm9ybUtleUVxdWl2YWxlbnQoTlNFdmVudCAqZXZl
bnQpCiAgICAgLy8gVGhlcmUncyBhIGNoYW5jZSB0aGF0IHJlc3BvbmRpbmcgdG8gdGhpcyBldmVu
dCB3aWxsIHJ1biBhIG5lc3RlZCBldmVudCBsb29wLCBhbmQKICAgICAvLyBmZXRjaGluZyBhIG5l
dyBldmVudCBtaWdodCByZWxlYXNlIHRoZSBvbGQgb25lLiBSZXRhaW5pbmcgYW5kIHRoZW4gYXV0
b3JlbGVhc2luZwogICAgIC8vIHRoZSBjdXJyZW50IGV2ZW50IHByZXZlbnRzIHRoYXQgZnJvbSBj
YXVzaW5nIGEgcHJvYmxlbSBpbnNpZGUgV2ViS2l0IG9yIEFwcEtpdCBjb2RlLgotICAgIENGUmV0
YWluKChfX2JyaWRnZSBDRlR5cGVSZWYpZXZlbnQpOwotICAgIENGQXV0b3JlbGVhc2UoKF9fYnJp
ZGdlIENGVHlwZVJlZilldmVudCk7CisgICAgcmV0YWluUHRyKGV2ZW50KS5hdXRvcmVsZWFzZSgp
OwogCiAgICAgLy8gV2UgZ2V0IEVzYyBrZXkgaGVyZSBhZnRlciBwcm9jZXNzaW5nIGVpdGhlciBF
c2Mgb3IgQ21kK3BlcmlvZC4gVGhlIGZvcm1lciBzdGFydHMgYXMgYSBrZXlEb3duLCBhbmQgdGhl
IGxhdHRlciBzdGFydHMgYXMgYSBrZXkgZXF1aXZhbGVudCwKICAgICAvLyBidXQgYm90aCBnZXQg
dHJhbnNmb3JtZWQgdG8gYSBjYW5jZWxPcGVyYXRpb246IGNvbW1hbmQsIGV4ZWN1dGluZyB3aGlj
aCBwYXNzZXMgYW4gRXNjIGtleSBldmVudCB0byAtcGVyZm9ybUtleUVxdWl2YWxlbnQ6LgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL2lvcy9XS0luc3BlY3Rv
ckhpZ2hsaWdodFZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvaW9z
L1dLSW5zcGVjdG9ySGlnaGxpZ2h0Vmlldy5tbQppbmRleCA0NDEyNDQzN2MyNDM0MjVjM2VkZGI5
OTM3NmNkNjIyNGYyZmMxNmEzLi5iMWIwYmUzNGJmMzMwYzBlZTU1NWVkOGRjNzQxZmM2NDJiMTA5
YWY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvaW9zL1dL
SW5zcGVjdG9ySGlnaGxpZ2h0Vmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9J
bnNwZWN0b3IvaW9zL1dLSW5zcGVjdG9ySGlnaGxpZ2h0Vmlldy5tbQpAQCAtMTgzLDI4ICsxODMs
MjYgQEAgc3RhdGljIHZvaWQgbGF5ZXJQYXRoV2l0aEhvbGUoQ0FTaGFwZUxheWVyICpsYXllciwg
Y29uc3QgV2ViQ29yZTo6RmxvYXRRdWFkJiBvdXQKICAgICAgICAgaW5uZXJIb2xlID0gcXVhZElu
dGVyc2VjdGlvbihvdXRlclF1YWQsIGhvbGVRdWFkKTsKIAogICAgIC8vIENsb2Nrd2lzZSBpbnNp
ZGUgcmVjdCAoaG9sZSksIENvdW50ZXItQ2xvY2t3aXNlIG91dHNpZGUgcmVjdCAoZmlsbCkuCi0g
ICAgQ0dNdXRhYmxlUGF0aFJlZiBwYXRoID0gQ0dQYXRoQ3JlYXRlTXV0YWJsZSgpOwotICAgIENH
UGF0aE1vdmVUb1BvaW50KHBhdGgsIDAsIGlubmVySG9sZS5wMSgpLngoKSwgaW5uZXJIb2xlLnAx
KCkueSgpKTsKLSAgICBDR1BhdGhBZGRMaW5lVG9Qb2ludChwYXRoLCAwLCBpbm5lckhvbGUucDIo
KS54KCksIGlubmVySG9sZS5wMigpLnkoKSk7Ci0gICAgQ0dQYXRoQWRkTGluZVRvUG9pbnQocGF0
aCwgMCwgaW5uZXJIb2xlLnAzKCkueCgpLCBpbm5lckhvbGUucDMoKS55KCkpOwotICAgIENHUGF0
aEFkZExpbmVUb1BvaW50KHBhdGgsIDAsIGlubmVySG9sZS5wNCgpLngoKSwgaW5uZXJIb2xlLnA0
KCkueSgpKTsKLSAgICBDR1BhdGhNb3ZlVG9Qb2ludChwYXRoLCAwLCBvdXRlclF1YWQucDEoKS54
KCksIG91dGVyUXVhZC5wMSgpLnkoKSk7Ci0gICAgQ0dQYXRoQWRkTGluZVRvUG9pbnQocGF0aCwg
MCwgb3V0ZXJRdWFkLnA0KCkueCgpLCBvdXRlclF1YWQucDQoKS55KCkpOwotICAgIENHUGF0aEFk
ZExpbmVUb1BvaW50KHBhdGgsIDAsIG91dGVyUXVhZC5wMygpLngoKSwgb3V0ZXJRdWFkLnAzKCku
eSgpKTsKLSAgICBDR1BhdGhBZGRMaW5lVG9Qb2ludChwYXRoLCAwLCBvdXRlclF1YWQucDIoKS54
KCksIG91dGVyUXVhZC5wMigpLnkoKSk7Ci0gICAgbGF5ZXIucGF0aCA9IHBhdGg7Ci0gICAgQ0dQ
YXRoUmVsZWFzZShwYXRoKTsKKyAgICBhdXRvIHBhdGggPSBhZG9wdENGKENHUGF0aENyZWF0ZU11
dGFibGUoKSk7CisgICAgQ0dQYXRoTW92ZVRvUG9pbnQocGF0aC5nZXQoKSwgMCwgaW5uZXJIb2xl
LnAxKCkueCgpLCBpbm5lckhvbGUucDEoKS55KCkpOworICAgIENHUGF0aEFkZExpbmVUb1BvaW50
KHBhdGguZ2V0KCksIDAsIGlubmVySG9sZS5wMigpLngoKSwgaW5uZXJIb2xlLnAyKCkueSgpKTsK
KyAgICBDR1BhdGhBZGRMaW5lVG9Qb2ludChwYXRoLmdldCgpLCAwLCBpbm5lckhvbGUucDMoKS54
KCksIGlubmVySG9sZS5wMygpLnkoKSk7CisgICAgQ0dQYXRoQWRkTGluZVRvUG9pbnQocGF0aC5n
ZXQoKSwgMCwgaW5uZXJIb2xlLnA0KCkueCgpLCBpbm5lckhvbGUucDQoKS55KCkpOworICAgIENH
UGF0aE1vdmVUb1BvaW50KHBhdGguZ2V0KCksIDAsIG91dGVyUXVhZC5wMSgpLngoKSwgb3V0ZXJR
dWFkLnAxKCkueSgpKTsKKyAgICBDR1BhdGhBZGRMaW5lVG9Qb2ludChwYXRoLmdldCgpLCAwLCBv
dXRlclF1YWQucDQoKS54KCksIG91dGVyUXVhZC5wNCgpLnkoKSk7CisgICAgQ0dQYXRoQWRkTGlu
ZVRvUG9pbnQocGF0aC5nZXQoKSwgMCwgb3V0ZXJRdWFkLnAzKCkueCgpLCBvdXRlclF1YWQucDMo
KS55KCkpOworICAgIENHUGF0aEFkZExpbmVUb1BvaW50KHBhdGguZ2V0KCksIDAsIG91dGVyUXVh
ZC5wMigpLngoKSwgb3V0ZXJRdWFkLnAyKCkueSgpKTsKKyAgICBsYXllci5wYXRoID0gcGF0aC5n
ZXQoKTsKIH0KIAogc3RhdGljIHZvaWQgbGF5ZXJQYXRoKENBU2hhcGVMYXllciAqbGF5ZXIsIGNv
bnN0IFdlYkNvcmU6OkZsb2F0UXVhZCYgb3V0ZXJRdWFkKQogewotICAgIENHTXV0YWJsZVBhdGhS
ZWYgcGF0aCA9IENHUGF0aENyZWF0ZU11dGFibGUoKTsKLSAgICBDR1BhdGhNb3ZlVG9Qb2ludChw
YXRoLCAwLCBvdXRlclF1YWQucDEoKS54KCksIG91dGVyUXVhZC5wMSgpLnkoKSk7Ci0gICAgQ0dQ
YXRoQWRkTGluZVRvUG9pbnQocGF0aCwgMCwgb3V0ZXJRdWFkLnA0KCkueCgpLCBvdXRlclF1YWQu
cDQoKS55KCkpOwotICAgIENHUGF0aEFkZExpbmVUb1BvaW50KHBhdGgsIDAsIG91dGVyUXVhZC5w
MygpLngoKSwgb3V0ZXJRdWFkLnAzKCkueSgpKTsKLSAgICBDR1BhdGhBZGRMaW5lVG9Qb2ludChw
YXRoLCAwLCBvdXRlclF1YWQucDIoKS54KCksIG91dGVyUXVhZC5wMigpLnkoKSk7Ci0gICAgbGF5
ZXIucGF0aCA9IHBhdGg7Ci0gICAgQ0dQYXRoUmVsZWFzZShwYXRoKTsKKyAgICBhdXRvIHBhdGgg
PSBhZG9wdENGKENHUGF0aENyZWF0ZU11dGFibGUoKSk7CisgICAgQ0dQYXRoTW92ZVRvUG9pbnQo
cGF0aC5nZXQoKSwgMCwgb3V0ZXJRdWFkLnAxKCkueCgpLCBvdXRlclF1YWQucDEoKS55KCkpOwor
ICAgIENHUGF0aEFkZExpbmVUb1BvaW50KHBhdGguZ2V0KCksIDAsIG91dGVyUXVhZC5wNCgpLngo
KSwgb3V0ZXJRdWFkLnA0KCkueSgpKTsKKyAgICBDR1BhdGhBZGRMaW5lVG9Qb2ludChwYXRoLmdl
dCgpLCAwLCBvdXRlclF1YWQucDMoKS54KCksIG91dGVyUXVhZC5wMygpLnkoKSk7CisgICAgQ0dQ
YXRoQWRkTGluZVRvUG9pbnQocGF0aC5nZXQoKSwgMCwgb3V0ZXJRdWFkLnAyKCkueCgpLCBvdXRl
clF1YWQucDIoKS55KCkpOworICAgIGxheWVyLnBhdGggPSBwYXRoLmdldCgpOwogfQogCiAtICh2
b2lkKV9sYXlvdXRGb3JOb2RlSGlnaGxpZ2h0Oihjb25zdCBXZWJDb3JlOjpJbnNwZWN0b3JPdmVy
bGF5OjpIaWdobGlnaHQmKWhpZ2hsaWdodCBvZmZzZXQ6KHVuc2lnbmVkKW9mZnNldApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvX1dLVG91Y2hFdmVudEdlbmVyYXRvci5tbSBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL19XS1RvdWNoRXZlbnRHZW5lcmF0b3IubW0KaW5kZXgg
ZTJjNzE4MTExNGY5Y2M5YTlkMTM4OTBiOTcxMjU2MDIzZDZhODM1OC4uMjE5ZGJhNTdlZjBmNTA0
NDkzMDU4YzYwY2I0ZGVjY2U4MmFmODRjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvX1dLVG91Y2hFdmVudEdlbmVyYXRvci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9fV0tUb3VjaEV2ZW50R2VuZXJhdG9yLm1tCkBAIC05OCw3ICs5OCw3IEBAIEBwcm9wZXJ0
eSAobm9uYXRvbWljLCBzdHJvbmcpIE5TTXV0YWJsZURpY3Rpb25hcnkgKmV2ZW50Q2FsbGJhY2tz
OwogQGVuZAogCiBAaW1wbGVtZW50YXRpb24gX1dLVG91Y2hFdmVudEdlbmVyYXRvciB7Ci0gICAg
SU9ISURFdmVudFN5c3RlbUNsaWVudFJlZiBfaW9TeXN0ZW1DbGllbnQ7CisgICAgUmV0YWluUHRy
PElPSElERXZlbnRTeXN0ZW1DbGllbnRSZWY+IF9pb1N5c3RlbUNsaWVudDsKICAgICBTeW50aGV0
aWNFdmVudERpZ2l0aXplckluZm8gX2FjdGl2ZVBvaW50c1tISURNYXhUb3VjaENvdW50XTsKICAg
ICBOU1VJbnRlZ2VyIF9hY3RpdmVQb2ludENvdW50OwogfQpAQCAtMTMxLDkgKzEzMSw2IEBAIC0g
KGluc3RhbmNldHlwZSlpbml0CiAKIC0gKHZvaWQpZGVhbGxvYwogewotICBpZiAoX2lvU3lzdGVt
Q2xpZW50KQotICAgICAgICBDRlJlbGVhc2UoX2lvU3lzdGVtQ2xpZW50KTsKLQogICAgIFtfZXZl
bnRDYWxsYmFja3MgcmVsZWFzZV07CiAgICAgW3N1cGVyIGRlYWxsb2NdOwogfQpAQCAtMjEwLDcg
KzIwNyw3IEBAIC0gKElPSElERXZlbnRSZWYpX2NyZWF0ZUlPSElERXZlbnRUeXBlOihIYW5kRXZl
bnRUeXBlKWV2ZW50VHlwZQogLSAoQk9PTClfc2VuZEhJREV2ZW50OihJT0hJREV2ZW50UmVmKWV2
ZW50UmVmCiB7CiAgICAgaWYgKCFfaW9TeXN0ZW1DbGllbnQpCi0gICAgICAgIF9pb1N5c3RlbUNs
aWVudCA9IElPSElERXZlbnRTeXN0ZW1DbGllbnRDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCk7
CisgICAgICAgIF9pb1N5c3RlbUNsaWVudCA9IGFkb3B0Q0YoSU9ISURFdmVudFN5c3RlbUNsaWVu
dENyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0KSk7CiAKICAgICBpZiAoZXZlbnRSZWYpIHsKICAg
ICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtzdHJvbmdFdmVudCA9IHJldGFpblB0cihl
dmVudFJlZildIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mdWxs
c2NyZWVuL1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXJJT1MubW0gYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvZnVsbHNjcmVlbi9XS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVySU9T
Lm1tCmluZGV4IDAzM2NlZWZmYjM0NGI0YzdhYTMxMGQ4YzM3NDlhOTBlZmM0NmMxMTIuLjg0NGVl
MzIwMDliODIyZDg2MjVkZmYxYzYyZWQ3OTQwZjU5ODYyNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9mdWxsc2NyZWVuL1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xs
ZXJJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Z1bGxzY3JlZW4vV0tG
dWxsU2NyZWVuV2luZG93Q29udHJvbGxlcklPUy5tbQpAQCAtMTAzMCwyOCArMTAzMCwyOCBAQCAt
IChOU1N0cmluZyAqKV9FVk9yZ2FuaXphdGlvbk5hbWUKICAgICBpZiAoIXRydXN0KQogICAgICAg
ICByZXR1cm4gbmlsOwogCi0gICAgTlNEaWN0aW9uYXJ5ICppbmZvRGljdGlvbmFyeSA9IENGQnJp
ZGdpbmdSZWxlYXNlKFNlY1RydXN0Q29weUluZm8odHJ1c3QpKTsKKyAgICBhdXRvIGluZm9EaWN0
aW9uYXJ5ID0gYWRvcHRDRihTZWNUcnVzdENvcHlJbmZvKHRydXN0KSk7CiAgICAgLy8gSWYgU2Vj
VHJ1c3RDb3B5SW5mbyByZXR1cm5lZCBOVUxMIHRoZW4gaXQncyBsaWtlbHkgdGhhdCB0aGUgU2Vj
VHJ1c3RSZWYgaGFzIG5vdCBiZWVuIGV2YWx1YXRlZAogICAgIC8vIGFuZCB0aGUgb25seSB3YXkg
dG8gZ2V0IHRoZSBpbmZvcm1hdGlvbiB3ZSBuZWVkIGlzIHRvIGNhbGwgU2VjVHJ1c3RFdmFsdWF0
ZSBvdXJzZWx2ZXMuCiAgICAgaWYgKCFpbmZvRGljdGlvbmFyeSkgewogICAgICAgICBpZiAoIVNl
Y1RydXN0RXZhbHVhdGVXaXRoRXJyb3IodHJ1c3QsIG51bGxwdHIpKQogICAgICAgICAgICAgcmV0
dXJuIG5pbDsKLSAgICAgICAgaW5mb0RpY3Rpb25hcnkgPSBDRkJyaWRnaW5nUmVsZWFzZShTZWNU
cnVzdENvcHlJbmZvKHRydXN0KSk7CisgICAgICAgIGluZm9EaWN0aW9uYXJ5ID0gYWRvcHRDRihT
ZWNUcnVzdENvcHlJbmZvKHRydXN0KSk7CiAgICAgICAgIGlmICghaW5mb0RpY3Rpb25hcnkpCiAg
ICAgICAgICAgICByZXR1cm4gbmlsOwogICAgIH0KIAogICAgIC8vIE1ha2Ugc3VyZSB0aGF0IHRo
ZSBFViBjZXJ0aWZpY2F0ZSBpcyB2YWxpZCBhZ2FpbnN0IG91ciBjZXJ0aWZpY2F0ZSBjaGFpbi4K
LSAgICBpZCBoYXNFViA9IFtpbmZvRGljdGlvbmFyeSBvYmplY3RGb3JLZXk6KF9fYnJpZGdlIE5T
U3RyaW5nICopa1NlY1RydXN0SW5mb0V4dGVuZGVkVmFsaWRhdGlvbktleV07CisgICAgaWQgaGFz
RVYgPSBbKF9fYnJpZGdlIE5TRGljdGlvbmFyeSAqKWluZm9EaWN0aW9uYXJ5IG9iamVjdEZvcktl
eTooX19icmlkZ2UgTlNTdHJpbmcgKilrU2VjVHJ1c3RJbmZvRXh0ZW5kZWRWYWxpZGF0aW9uS2V5
XTsKICAgICBpZiAoIVtoYXNFViBpc0tpbmRPZkNsYXNzOltOU1ZhbHVlIGNsYXNzXV0gfHwgIVto
YXNFViBib29sVmFsdWVdKQogICAgICAgICByZXR1cm4gbmlsOwogCiAgICAgLy8gTWFrZSBzdXJl
IHRoYXQgd2UgY291bGQgY29udGFjdCByZXZvY2F0aW9uIHNlcnZlciBhbmQgaXQgaXMgc3RpbGwg
dmFsaWQuCi0gICAgaWQgaXNOb3RSZXZva2VkID0gW2luZm9EaWN0aW9uYXJ5IG9iamVjdEZvcktl
eTooX19icmlkZ2UgTlNTdHJpbmcgKilrU2VjVHJ1c3RJbmZvUmV2b2NhdGlvbktleV07CisgICAg
aWQgaXNOb3RSZXZva2VkID0gWyhfX2JyaWRnZSBOU0RpY3Rpb25hcnkgKilpbmZvRGljdGlvbmFy
eSBvYmplY3RGb3JLZXk6KF9fYnJpZGdlIE5TU3RyaW5nICopa1NlY1RydXN0SW5mb1Jldm9jYXRp
b25LZXldOwogICAgIGlmICghW2lzTm90UmV2b2tlZCBpc0tpbmRPZkNsYXNzOltOU1ZhbHVlIGNs
YXNzXV0gfHwgIVtpc05vdFJldm9rZWQgYm9vbFZhbHVlXSkKICAgICAgICAgcmV0dXJuIG5pbDsK
IAotICAgIF9FVk9yZ2FuaXphdGlvbk5hbWUgPSBbaW5mb0RpY3Rpb25hcnkgb2JqZWN0Rm9yS2V5
OihfX2JyaWRnZSBOU1N0cmluZyAqKWtTZWNUcnVzdEluZm9Db21wYW55TmFtZUtleV07CisgICAg
X0VWT3JnYW5pemF0aW9uTmFtZSA9IFsoX19icmlkZ2UgTlNEaWN0aW9uYXJ5ICopaW5mb0RpY3Rp
b25hcnkgb2JqZWN0Rm9yS2V5OihfX2JyaWRnZSBOU1N0cmluZyAqKWtTZWNUcnVzdEluZm9Db21w
YW55TmFtZUtleV07CiAgICAgcmV0dXJuIF9FVk9yZ2FuaXphdGlvbk5hbWUuZ2V0KCk7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29j
b2EubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1t
CmluZGV4IGUwYjkxODVhNWFiNzU1ZDNlMTA5MWQyN2VmOTY2YzlmZjA4MWIzZmYuLjg0NjE0MGYy
YTNhMTdjNDhmNDFlZmNjNjI4MWFlYzA2Nzc1Y2I5M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQpAQCAtNTI4LDcgKzUyOCw3IEBA
IHZvaWQgV2ViUHJvY2Vzczo6dXBkYXRlUHJvY2Vzc05hbWUoSXNJblByb2Nlc3NJbml0aWFsaXph
dGlvbiBpc0luUHJvY2Vzc0luaXRpYWxpCiBzdGF0aWMgTlNTdHJpbmcgKndlYlByb2Nlc3NMb2Fk
ZXJBY2Nlc3NpYmlsaXR5QnVuZGxlUGF0aCgpCiB7CiAjaWYgSEFWRShBQ0NFU1NJQklMSVRZX0JV
TkRMRVNfUEFUSCkKLSAgICByZXR1cm4gKF9fYnJpZGdlIE5TU3RyaW5nICopQ0ZBdXRvcmVsZWFz
ZShfQVhTQ29weVBhdGhGb3JBY2Nlc3NpYmlsaXR5QnVuZGxlKENGU1RSKCJXZWJQcm9jZXNzTG9h
ZGVyIikpKTsKKyAgICByZXR1cm4gYWRvcHRDRihfQVhTQ29weVBhdGhGb3JBY2Nlc3NpYmlsaXR5
QnVuZGxlKENGU1RSKCJXZWJQcm9jZXNzTG9hZGVyIikpKS5icmlkZ2luZ0F1dG9yZWxlYXNlKCk7
CiAjZWxzZQogICAgIE5TU3RyaW5nICpwYXRoID0gKF9fYnJpZGdlIE5TU3RyaW5nICopR1NTeXN0
ZW1Sb290RGlyZWN0b3J5KCk7CiAjaWYgUExBVEZPUk0oTUFDQ0FUQUxZU1QpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9NaXNjL1dlYlVJS2l0U3VwcG9ydC5tbSBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvaW9zL01pc2MvV2ViVUlLaXRTdXBwb3J0Lm1tCmluZGV4IDU5MzE0NmMw
MzMyZWJkNWNkMWMxOWJjMTU3NTczMmMzMTEyNDk2OTEuLjk4YTZjZmZlNTc1YTgxM2I3M2FlMTAx
ZThjMmMzMzg2Y2RhZGUzYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL01p
c2MvV2ViVUlLaXRTdXBwb3J0Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL01pc2Mv
V2ViVUlLaXRTdXBwb3J0Lm1tCkBAIC01NSw5ICs1NSw4IEBAIHN0YXRpYyB2b2lkIExvYWRXZWJM
b2NhbGl6ZWRTdHJpbmdzVGltZXJDYWxsYmFjayhDRlJ1bkxvb3BUaW1lclJlZiB0aW1lciwgdm9p
ZCAqCiAKIHN0YXRpYyB2b2lkIExvYWRXZWJMb2NhbGl6ZWRTdHJpbmdzKCkKIHsKLSAgICBDRlJ1
bkxvb3BUaW1lclJlZiB0aW1lciA9IENGUnVuTG9vcFRpbWVyQ3JlYXRlKGtDRkFsbG9jYXRvckRl
ZmF1bHQsIENGQWJzb2x1dGVUaW1lR2V0Q3VycmVudCgpLCAwLCAwLCAwLCAmTG9hZFdlYkxvY2Fs
aXplZFN0cmluZ3NUaW1lckNhbGxiYWNrLCBOVUxMKTsKLSAgICBDRlJ1bkxvb3BBZGRUaW1lcihD
RlJ1bkxvb3BHZXRDdXJyZW50KCksIHRpbWVyLCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMpOwotICAg
IENGUmVsZWFzZSh0aW1lcik7CisgICAgYXV0byB0aW1lciA9IGFkb3B0Q0YoQ0ZSdW5Mb29wVGlt
ZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgQ0ZBYnNvbHV0ZVRpbWVHZXRDdXJyZW50KCks
IDAsIDAsIDAsICZMb2FkV2ViTG9jYWxpemVkU3RyaW5nc1RpbWVyQ2FsbGJhY2ssIE5VTEwpKTsK
KyAgICBDRlJ1bkxvb3BBZGRUaW1lcihDRlJ1bkxvb3BHZXRDdXJyZW50KCksIHRpbWVyLmdldCgp
LCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMpOwogfQogCiB2b2lkIFdlYktpdEluaXRpYWxpemUodm9p
ZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYlZpZXcvV2ViUERGVmll
d0lPUy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYlZpZXcvV2ViUERGVmlld0lPUy5t
bQppbmRleCBhYTg3N2RhMDI5YjA2ZGE5YTJmOGE2ZDZhY2MwMDkwMTkwZTczN2FkLi5jYmQ1MGI2
ZmNhODU1NzE1YzJjN2NjM2Q2MDEyYWJkMTgyZTQwMjgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L2lvcy9XZWJWaWV3L1dlYlBERlZpZXdJT1MubW0KKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS9pb3MvV2ViVmlldy9XZWJQREZWaWV3SU9TLm1tCkBAIC0zMDIsMTQgKzMwMiwxMSBA
QCAtICh2b2lkKV9jaGVja1BERlRpdGxlCiAKIC0gKHZvaWQpZmluaXNoZWRMb2FkaW5nV2l0aERh
dGFTb3VyY2U6KFdlYkRhdGFTb3VyY2UgKilkYXRhU291cmNlCiB7Ci0gICAgQ0dEYXRhUHJvdmlk
ZXJSZWYgcHJvdmlkZXIgPSBDR0RhdGFQcm92aWRlckNyZWF0ZVdpdGhDRkRhdGEoKENGRGF0YVJl
ZilbZGF0YVNvdXJjZSBkYXRhXSk7Ci0KKyAgICBhdXRvIHByb3ZpZGVyID0gYWRvcHRDRihDR0Rh
dGFQcm92aWRlckNyZWF0ZVdpdGhDRkRhdGEoKENGRGF0YVJlZilbZGF0YVNvdXJjZSBkYXRhXSkp
OwogICAgIGlmICghcHJvdmlkZXIpIAogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgX1BERkRv
Y3VtZW50ID0gQ0dQREZEb2N1bWVudENyZWF0ZVdpdGhQcm92aWRlcihwcm92aWRlcik7Ci0gICAg
Q0dEYXRhUHJvdmlkZXJSZWxlYXNlKHByb3ZpZGVyKTsKLSAgICAgICAgCisgICAgX1BERkRvY3Vt
ZW50ID0gQ0dQREZEb2N1bWVudENyZWF0ZVdpdGhQcm92aWRlcihwcm92aWRlci5nZXQoKSk7CiAg
ICAgaWYgKCFfUERGRG9jdW1lbnQpCiAgICAgICAgIHJldHVybjsKICAgICAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYlZpZXcvV2ViUERGVmlld1BsYWNlaG9sZGVyLm1t
IGIvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViVmlldy9XZWJQREZWaWV3UGxhY2Vob2xkZXIu
bW0KaW5kZXggNzI1NGQwYzVhY2M2YWExYTg3OWI2MmFkMGE0ODg5OWYzY2U3ZGJhMS4uOWJiMDkw
YWJhODYzZDgyYjY1NTIzNjU0NjlkMDkzYjk5OWE2MGI5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS9pb3MvV2ViVmlldy9XZWJQREZWaWV3UGxhY2Vob2xkZXIubW0KKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViVmlldy9XZWJQREZWaWV3UGxhY2Vob2xkZXIubW0KQEAg
LTI3NCwxMyArMjc0LDExIEBAIC0gKHZvaWQpZmluaXNoZWRMb2FkaW5nV2l0aERhdGFTb3VyY2U6
KFdlYkRhdGFTb3VyY2UgKilkYXRhU291cmNlCiAgICAgW3NlbGYgZGF0YVNvdXJjZVVwZGF0ZWQ6
ZGF0YVNvdXJjZV07CiAKICAgICBfZGlkRmluaXNoTG9hZCA9IFlFUzsKLSAgICBDR0RhdGFQcm92
aWRlclJlZiBwcm92aWRlciA9IENHRGF0YVByb3ZpZGVyQ3JlYXRlV2l0aENGRGF0YSgoQ0ZEYXRh
UmVmKVtkYXRhU291cmNlIGRhdGFdKTsKKyAgICBhdXRvIHByb3ZpZGVyID0gYWRvcHRDRihDR0Rh
dGFQcm92aWRlckNyZWF0ZVdpdGhDRkRhdGEoKENGRGF0YVJlZilbZGF0YVNvdXJjZSBkYXRhXSkp
OwogICAgIGlmICghcHJvdmlkZXIpCiAgICAgICAgIHJldHVybjsKIAotICAgIF9kb2N1bWVudCA9
IENHUERGRG9jdW1lbnRDcmVhdGVXaXRoUHJvdmlkZXIocHJvdmlkZXIpOwotCi0gICAgQ0dEYXRh
UHJvdmlkZXJSZWxlYXNlKHByb3ZpZGVyKTsKKyAgICBfZG9jdW1lbnQgPSBDR1BERkRvY3VtZW50
Q3JlYXRlV2l0aFByb3ZpZGVyKHByb3ZpZGVyLmdldCgpKTsKIAogICAgIFtzZWxmIF9kb1Bvc3RM
b2FkT3JVbmxvY2tUYXNrc107CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9NaXNjL1dlYkxvY2FsaXphYmxlU3RyaW5ncy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L01pc2MvV2ViTG9jYWxpemFibGVTdHJpbmdzLm1tCmluZGV4IDRlZTAwMzY0MTllN2FmY2JmODUz
ODIyZGM1YmU5NjQ1MThkMDI5NzkuLjI5NDBkNGFiNmYyMDk4M2VjODZiOTJhYWEyZjYxNzJjMjE5
NTMwZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViTG9jYWxp
emFibGVTdHJpbmdzLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViTG9j
YWxpemFibGVTdHJpbmdzLm1tCkBAIC0zMCw2ICszMCw4IEBACiAKICNpbXBvcnQgPHd0Zi9Bc3Nl
cnRpb25zLmg+CiAjaW1wb3J0IDx3dGYvTWFpblRocmVhZC5oPgorI2ltcG9ydCA8d3RmL05ldmVy
RGVzdHJveWVkLmg+CisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAKIFdlYkxvY2FsaXphYmxl
U3RyaW5nc0J1bmRsZSBXZWJLaXRMb2NhbGl6YWJsZVN0cmluZ3NCdW5kbGUgPSB7ICJjb20uYXBw
bGUuV2ViS2l0IiwgMCB9OwogCkBAIC00NSwxMyArNDcsOSBAQCBOU1N0cmluZyAqV2ViTG9jYWxp
emVkU3RyaW5nKFdlYkxvY2FsaXphYmxlU3RyaW5nc0J1bmRsZSAqc3RyaW5nc0J1bmRsZSwgY29u
c3QgYwogCiAgICAgTlNCdW5kbGUgKmJ1bmRsZTsKICAgICBpZiAoc3RyaW5nc0J1bmRsZSA9PSBO
VUxMKSB7Ci0gICAgICAgIHN0YXRpYyBOU0J1bmRsZSAqbWFpbkJ1bmRsZTsKLSAgICAgICAgaWYg
KG1haW5CdW5kbGUgPT0gbmlsKSB7Ci0gICAgICAgICAgICBtYWluQnVuZGxlID0gW05TQnVuZGxl
IG1haW5CdW5kbGVdOwotICAgICAgICAgICAgQVNTRVJUKG1haW5CdW5kbGUpOwotICAgICAgICAg
ICAgQ0ZSZXRhaW4obWFpbkJ1bmRsZSk7Ci0gICAgICAgIH0KLSAgICAgICAgYnVuZGxlID0gbWFp
bkJ1bmRsZTsKKyAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxOU0J1bmRs
ZT4+IG1haW5CdW5kbGUgPSBbTlNCdW5kbGUgbWFpbkJ1bmRsZV07CisgICAgICAgIEFTU0VSVCht
YWluQnVuZGxlLmdldCgpKTsKKyAgICAgICAgYnVuZGxlID0gbWFpbkJ1bmRsZS5nZXQoKS5nZXQo
KTsKICAgICB9IGVsc2UgewogICAgICAgICBidW5kbGUgPSBzdHJpbmdzQnVuZGxlLT5idW5kbGU7
CiAgICAgICAgIGlmIChidW5kbGUgPT0gbmlsKSB7CkBAIC02MSw5ICs1OSw4IEBAIE5TU3RyaW5n
ICpXZWJMb2NhbGl6ZWRTdHJpbmcoV2ViTG9jYWxpemFibGVTdHJpbmdzQnVuZGxlICpzdHJpbmdz
QnVuZGxlLCBjb25zdCBjCiAgICAgICAgIH0KICAgICB9CiAgICAgTlNTdHJpbmcgKm5vdEZvdW5k
ID0gQCJsb2NhbGl6ZWQgc3RyaW5nIG5vdCBmb3VuZCI7Ci0gICAgQ0ZTdHJpbmdSZWYga2V5U3Ry
aW5nID0gQ0ZTdHJpbmdDcmVhdGVXaXRoQ1N0cmluZ05vQ29weShOVUxMLCBrZXksIGtDRlN0cmlu
Z0VuY29kaW5nVVRGOCwga0NGQWxsb2NhdG9yTnVsbCk7Ci0gICAgTlNTdHJpbmcgKnJlc3VsdCA9
IFtidW5kbGUgbG9jYWxpemVkU3RyaW5nRm9yS2V5OihfX2JyaWRnZSBOU1N0cmluZyAqKWtleVN0
cmluZyB2YWx1ZTpub3RGb3VuZCB0YWJsZTpuaWxdOwotICAgIENGUmVsZWFzZShrZXlTdHJpbmcp
OworICAgIGF1dG8ga2V5U3RyaW5nID0gYWRvcHRDRihDRlN0cmluZ0NyZWF0ZVdpdGhDU3RyaW5n
Tm9Db3B5KE5VTEwsIGtleSwga0NGU3RyaW5nRW5jb2RpbmdVVEY4LCBrQ0ZBbGxvY2F0b3JOdWxs
KSk7CisgICAgTlNTdHJpbmcgKnJlc3VsdCA9IFtidW5kbGUgbG9jYWxpemVkU3RyaW5nRm9yS2V5
OihfX2JyaWRnZSBOU1N0cmluZyAqKWtleVN0cmluZy5nZXQoKSB2YWx1ZTpub3RGb3VuZCB0YWJs
ZTpuaWxdOwogICAgIEFTU0VSVF9XSVRIX01FU1NBR0UocmVzdWx0ICE9IG5vdEZvdW5kLCAiY291
bGQgbm90IGZpbmQgbG9jYWxpemFibGUgc3RyaW5nICVzIGluIGJ1bmRsZSIsIGtleSk7CiAgICAg
cmV0dXJuIHJlc3VsdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01p
c2MvV2ViTlNEYXRhRXh0cmFzLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJO
U0RhdGFFeHRyYXMubW0KaW5kZXggNmVjN2NjMGRiMjI3MmNlNGJkM2RhMTc0ZWEzMjk0NTg2ZGRm
ZDE3ZS4uOGQ1MDZhMjNmYzY0YTBlOTYyOTJiNmUxZjEwZTNmMjQ4MDY4ZTQwMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJOU0RhdGFFeHRyYXMubW0KKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJOU0RhdGFFeHRyYXMubW0KQEAgLTgzLDkg
KzgzLDkgQEAgLSAoTlNTdHJpbmcgKilfd2ViX2NhcGl0YWxpemVSRkM4MjJIZWFkZXJGaWVsZE5h
bWUKICAgICB9CiAgICAgaWYgKHNvbWV0aGluZ0NoYW5nZWQpIHsKICAgICAgICAgaWYgKHVzZVVu
aUNoYXJQdHIpCi0gICAgICAgICAgICByZXN1bHQgPSBDRkJyaWRnaW5nUmVsZWFzZShDRlN0cmlu
Z0NyZWF0ZVdpdGhDaGFyYWN0ZXJzTm9Db3B5KGtDRkFsbG9jYXRvckRlZmF1bHQsIHVuaUNoYXJQ
dHIsIGxlbiwgbnVsbHB0cikpOworICAgICAgICAgICAgcmVzdWx0ID0gYWRvcHRDRihDRlN0cmlu
Z0NyZWF0ZVdpdGhDaGFyYWN0ZXJzTm9Db3B5KGtDRkFsbG9jYXRvckRlZmF1bHQsIHVuaUNoYXJQ
dHIsIGxlbiwgbnVsbHB0cikpLmJyaWRnaW5nQXV0b3JlbGVhc2UoKTsKICAgICAgICAgZWxzZQot
ICAgICAgICAgICAgcmVzdWx0ID0gQ0ZCcmlkZ2luZ1JlbGVhc2UoQ0ZTdHJpbmdDcmVhdGVXaXRo
Q1N0cmluZ05vQ29weShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBjaGFyUHRyLCBrQ0ZTdHJpbmdFbmNv
ZGluZ0lTT0xhdGluMSwgbnVsbHB0cikpOworICAgICAgICAgICAgcmVzdWx0ID0gYWRvcHRDRihD
RlN0cmluZ0NyZWF0ZVdpdGhDU3RyaW5nTm9Db3B5KGtDRkFsbG9jYXRvckRlZmF1bHQsIGNoYXJQ
dHIsIGtDRlN0cmluZ0VuY29kaW5nSVNPTGF0aW4xLCBudWxscHRyKSkuYnJpZGdpbmdBdXRvcmVs
ZWFzZSgpOwogICAgIH0gZWxzZQogICAgICAgICByZXN1bHQgPSBzZWxmOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkhv
c3RNYW5hZ2VyLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0
c2NhcGVQbHVnaW5Ib3N0TWFuYWdlci5tbQppbmRleCBmNjM5M2Y4OWJmYmE0ZjY5ZmQwMzhmMjE1
NjVlZjE3ZDAyZmJmMzM3Li41ZmRhM2ZjNzE3ZjMxM2E0ZGI2NWUyMmI4MzY5NWQ4MzNjOTllZjhk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRz
Y2FwZVBsdWdpbkhvc3RNYW5hZ2VyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1Bs
dWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSG9zdE1hbmFnZXIubW0KQEAgLTEyMSw3ICsxMjEs
NyBAQCBzdGF0aWMgTlNTdHJpbmcgKnByZWZlcnJlZEJ1bmRsZUxvY2FsaXphdGlvbk5hbWUoKQog
ICAgIGlmICghc3VjY2VzcykKICAgICAgICAgcmV0dXJuIEAiZW5fVVMiOwogCi0gICAgcmV0dXJu
IENGQnJpZGdpbmdSZWxlYXNlKENGTG9jYWxlQ3JlYXRlQ2Fub25pY2FsTG9jYWxlSWRlbnRpZmll
ckZyb21TY3JpcHRNYW5hZ2VyQ29kZXMoMCwgbGFuZ3VhZ2VDb2RlLCByZWdpb25Db2RlKSk7Cisg
ICAgcmV0dXJuIGFkb3B0Q0YoQ0ZMb2NhbGVDcmVhdGVDYW5vbmljYWxMb2NhbGVJZGVudGlmaWVy
RnJvbVNjcmlwdE1hbmFnZXJDb2RlcygwLCBsYW5ndWFnZUNvZGUsIHJlZ2lvbkNvZGUpKS5icmlk
Z2luZ0F1dG9yZWxlYXNlKCk7CiB9CiAKIGJvb2wgTmV0c2NhcGVQbHVnaW5Ib3N0TWFuYWdlcjo6
c3Bhd25QbHVnaW5Ib3N0KGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCwgY3B1X3R5cGVfdCBwbHVn
aW5BcmNoaXRlY3R1cmUsIG1hY2hfcG9ydF90IGNsaWVudFBvcnQsIG1hY2hfcG9ydF90JiBwbHVn
aW5Ib3N0UG9ydCwgUHJvY2Vzc1NlcmlhbE51bWJlciYgcGx1Z2luSG9zdFBTTikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3
Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblZp
ZXcubW0KaW5kZXggMTJhYWEzZDA4Zjc3YzhjZjhkNDFkNDQzZTEyYWI2ZDJlMjcxMjNiMi4uOGZm
ZjI0NWUxNjhkMzRhZGJlZGIwMmQ0NzQ4ZjljYjg3MTEwNzdiNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblZpZXcubW0KKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblZpZXcubW0K
QEAgLTE0NTMsMTYgKzE0NTMsMTUgQEAgLSAoY29uc3QgY2hhciAqKXVzZXJBZ2VudAogCiAtKHZv
aWQpc3RhdHVzOihjb25zdCBjaGFyICopbWVzc2FnZQogeyAgICAKLSAgICBDRlN0cmluZ1JlZiBz
dGF0dXMgPSBDRlN0cmluZ0NyZWF0ZVdpdGhDU3RyaW5nKE5VTEwsIG1lc3NhZ2UgPyBtZXNzYWdl
IDogIiIsIGtDRlN0cmluZ0VuY29kaW5nVVRGOCk7CisgICAgYXV0byBzdGF0dXMgPSBhZG9wdENG
KENGU3RyaW5nQ3JlYXRlV2l0aENTdHJpbmcoTlVMTCwgbWVzc2FnZSA/IG1lc3NhZ2UgOiAiIiwg
a0NGU3RyaW5nRW5jb2RpbmdVVEY4KSk7CiAgICAgaWYgKCFzdGF0dXMpIHsKICAgICAgICAgTE9H
X0VSUk9SKCJOUE5fU3RhdHVzOiB0aGUgbWVzc2FnZSB3YXMgbm90IHZhbGlkIFVURi04Iik7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCi0gICAgTE9HKFBsdWdpbnMsICJOUE5fU3RhdHVz
OiAlQCIsIHN0YXR1cyk7CisgICAgTE9HKFBsdWdpbnMsICJOUE5fU3RhdHVzOiAlQCIsIHN0YXR1
cy5nZXQoKSk7CiAgICAgV2ViVmlldyAqd3YgPSBbc2VsZiB3ZWJWaWV3XTsKLSAgICBbW3d2IF9V
SURlbGVnYXRlRm9yd2FyZGVyXSB3ZWJWaWV3Ond2IHNldFN0YXR1c1RleHQ6KF9fYnJpZGdlIE5T
U3RyaW5nICopc3RhdHVzXTsKLSAgICBDRlJlbGVhc2Uoc3RhdHVzKTsKKyAgICBbW3d2IF9VSURl
bGVnYXRlRm9yd2FyZGVyXSB3ZWJWaWV3Ond2IHNldFN0YXR1c1RleHQ6KF9fYnJpZGdlIE5TU3Ry
aW5nICopc3RhdHVzLmdldCgpXTsKIH0KIAogLSh2b2lkKWludmFsaWRhdGVSZWN0OihOUFJlY3Qg
KilpbnZhbGlkUmVjdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViUHJvZ3Jlc3NUcmFja2VyQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUHJvZ3Jlc3NUcmFja2VyQ2xpZW50Lm1tCmluZGV4IGNj
MzhlZjE2MWU3NTNkNTE5MTY0ZmVkMzBkZDU4NzY1MTgwOGJmMTYuLjhmNDc4M2NiMzA4YTY0ZGRj
YTViMTM0NDM1NTA4MjM2MDQxN2UwNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYlByb2dyZXNzVHJhY2tlckNsaWVudC5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQcm9ncmVzc1RyYWNrZXJDbGll
bnQubW0KQEAgLTcwLDEzICs3MCwxMiBAQCB2b2lkIFdlYlByb2dyZXNzVHJhY2tlckNsaWVudDo6
cHJvZ3Jlc3NFc3RpbWF0ZUNoYW5nZWQoV2ViQ29yZTo6RnJhbWUmKQogICAgIAogICAgIC8vIFVz
ZSBhIENGRGljdGlvbmFyeSBzbyB3ZSBjYW4gYWRkIHRoZSBDR0NvbG9yUmVmIHdpdGhvdXQgY29t
cGlsZSBlcnJvcnMuIEFuZCB0aGVuIHRoYW5rcyB0bwogICAgIC8vIHRvbGwtZnJlZSBicmlkZ2lu
ZyB3ZSBjYW4gcGFzcyB0aGUgQ0ZEaWN0aW9uYXJ5IGFzIGFuIE5TRGljdGlvbmFyeSB0byBwb3N0
Tm90aWZpY2F0aW9uLgotICAgIENGTXV0YWJsZURpY3Rpb25hcnlSZWYgdXNlckluZm8gPSBDRkRp
Y3Rpb25hcnlDcmVhdGVNdXRhYmxlKGtDRkFsbG9jYXRvckRlZmF1bHQsIDIsICZrQ0ZUeXBlRGlj
dGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpOwot
ICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKHVzZXJJbmZvLCBXZWJWaWV3UHJvZ3Jlc3NFc3RpbWF0
ZWRQcm9ncmVzc0tleSwgcHJvZ3Jlc3MpOworICAgIGF1dG8gdXNlckluZm8gPSBhZG9wdENGKENG
RGljdGlvbmFyeUNyZWF0ZU11dGFibGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgMiwgJmtDRlR5cGVE
aWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcykp
OworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKHVzZXJJbmZvLmdldCgpLCBXZWJWaWV3UHJvZ3Jl
c3NFc3RpbWF0ZWRQcm9ncmVzc0tleSwgcHJvZ3Jlc3MpOwogICAgIGlmIChib2R5QmFja2dyb3Vu
ZENvbG9yKQotICAgICAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZSh1c2VySW5mbywgV2ViVmlld1By
b2dyZXNzQmFja2dyb3VuZENvbG9yS2V5LCBib2R5QmFja2dyb3VuZENvbG9yKTsKKyAgICAgICAg
Q0ZEaWN0aW9uYXJ5QWRkVmFsdWUodXNlckluZm8uZ2V0KCksIFdlYlZpZXdQcm9ncmVzc0JhY2tn
cm91bmRDb2xvcktleSwgYm9keUJhY2tncm91bmRDb2xvcik7CiAgICAgCi0gICAgV2ViVGhyZWFk
UG9zdE5vdGlmaWNhdGlvbihXZWJWaWV3UHJvZ3Jlc3NFc3RpbWF0ZUNoYW5nZWROb3RpZmljYXRp
b24sIG1fd2ViVmlldywgKE5TRGljdGlvbmFyeSAqKSB1c2VySW5mbyk7Ci0gICAgQ0ZSZWxlYXNl
KHVzZXJJbmZvKTsKKyAgICBXZWJUaHJlYWRQb3N0Tm90aWZpY2F0aW9uKFdlYlZpZXdQcm9ncmVz
c0VzdGltYXRlQ2hhbmdlZE5vdGlmaWNhdGlvbiwgbV93ZWJWaWV3LCAoTlNEaWN0aW9uYXJ5ICop
dXNlckluZm8uZ2V0KCkpOwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYkluc3BlY3Rvci9XZWJOb2RlSGlnaGxpZ2h0Vmlldy5tbSBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYkluc3BlY3Rvci9XZWJOb2RlSGlnaGxpZ2h0Vmlldy5tbQppbmRl
eCAyMGYxOWYwYmM0YmI0OGRkMmRlNTkwNmQ5ZTI3ZTNiM2MzNGMyNTNmLi5kMzk3M2UyOTQ0NTll
Y2YxZGJkZWY0NDllZjJjZmQyY2FjYjhlZDM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJJbnNwZWN0b3IvV2ViTm9kZUhpZ2hsaWdodFZpZXcubW0KKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViSW5zcGVjdG9yL1dlYk5vZGVIaWdobGlnaHRWaWV3Lm1tCkBA
IC0yMzYsMjggKzIzNiwyNiBAQCBzdGF0aWMgdm9pZCBsYXllclBhdGhXaXRoSG9sZShDQVNoYXBl
TGF5ZXIgKmxheWVyLCBjb25zdCBGbG9hdFF1YWQmIG91dGVyUXVhZCwgYwogICAgICAgICBpbm5l
ckhvbGUgPSBxdWFkSW50ZXJzZWN0aW9uKG91dGVyUXVhZCwgaG9sZVF1YWQpOwogCiAgICAgLy8g
Q2xvY2t3aXNlIGluc2lkZSByZWN0IChob2xlKSwgQ291bnRlci1DbG9ja3dpc2Ugb3V0c2lkZSBy
ZWN0IChmaWxsKS4KLSAgICBDR011dGFibGVQYXRoUmVmIHBhdGggPSBDR1BhdGhDcmVhdGVNdXRh
YmxlKCk7Ci0gICAgQ0dQYXRoTW92ZVRvUG9pbnQocGF0aCwgMCwgaW5uZXJIb2xlLnAxKCkueCgp
LCBpbm5lckhvbGUucDEoKS55KCkpOwotICAgIENHUGF0aEFkZExpbmVUb1BvaW50KHBhdGgsIDAs
IGlubmVySG9sZS5wMigpLngoKSwgaW5uZXJIb2xlLnAyKCkueSgpKTsKLSAgICBDR1BhdGhBZGRM
aW5lVG9Qb2ludChwYXRoLCAwLCBpbm5lckhvbGUucDMoKS54KCksIGlubmVySG9sZS5wMygpLnko
KSk7Ci0gICAgQ0dQYXRoQWRkTGluZVRvUG9pbnQocGF0aCwgMCwgaW5uZXJIb2xlLnA0KCkueCgp
LCBpbm5lckhvbGUucDQoKS55KCkpOwotICAgIENHUGF0aE1vdmVUb1BvaW50KHBhdGgsIDAsIG91
dGVyUXVhZC5wMSgpLngoKSwgb3V0ZXJRdWFkLnAxKCkueSgpKTsKLSAgICBDR1BhdGhBZGRMaW5l
VG9Qb2ludChwYXRoLCAwLCBvdXRlclF1YWQucDQoKS54KCksIG91dGVyUXVhZC5wNCgpLnkoKSk7
Ci0gICAgQ0dQYXRoQWRkTGluZVRvUG9pbnQocGF0aCwgMCwgb3V0ZXJRdWFkLnAzKCkueCgpLCBv
dXRlclF1YWQucDMoKS55KCkpOwotICAgIENHUGF0aEFkZExpbmVUb1BvaW50KHBhdGgsIDAsIG91
dGVyUXVhZC5wMigpLngoKSwgb3V0ZXJRdWFkLnAyKCkueSgpKTsKLSAgICBsYXllci5wYXRoID0g
cGF0aDsKLSAgICBDR1BhdGhSZWxlYXNlKHBhdGgpOworICAgIGF1dG8gcGF0aCA9IGFkb3B0Q0Yo
Q0dQYXRoQ3JlYXRlTXV0YWJsZSgpKTsKKyAgICBDR1BhdGhNb3ZlVG9Qb2ludChwYXRoLmdldCgp
LCAwLCBpbm5lckhvbGUucDEoKS54KCksIGlubmVySG9sZS5wMSgpLnkoKSk7CisgICAgQ0dQYXRo
QWRkTGluZVRvUG9pbnQocGF0aC5nZXQoKSwgMCwgaW5uZXJIb2xlLnAyKCkueCgpLCBpbm5lckhv
bGUucDIoKS55KCkpOworICAgIENHUGF0aEFkZExpbmVUb1BvaW50KHBhdGguZ2V0KCksIDAsIGlu
bmVySG9sZS5wMygpLngoKSwgaW5uZXJIb2xlLnAzKCkueSgpKTsKKyAgICBDR1BhdGhBZGRMaW5l
VG9Qb2ludChwYXRoLmdldCgpLCAwLCBpbm5lckhvbGUucDQoKS54KCksIGlubmVySG9sZS5wNCgp
LnkoKSk7CisgICAgQ0dQYXRoTW92ZVRvUG9pbnQocGF0aC5nZXQoKSwgMCwgb3V0ZXJRdWFkLnAx
KCkueCgpLCBvdXRlclF1YWQucDEoKS55KCkpOworICAgIENHUGF0aEFkZExpbmVUb1BvaW50KHBh
dGguZ2V0KCksIDAsIG91dGVyUXVhZC5wNCgpLngoKSwgb3V0ZXJRdWFkLnA0KCkueSgpKTsKKyAg
ICBDR1BhdGhBZGRMaW5lVG9Qb2ludChwYXRoLmdldCgpLCAwLCBvdXRlclF1YWQucDMoKS54KCks
IG91dGVyUXVhZC5wMygpLnkoKSk7CisgICAgQ0dQYXRoQWRkTGluZVRvUG9pbnQocGF0aC5nZXQo
KSwgMCwgb3V0ZXJRdWFkLnAyKCkueCgpLCBvdXRlclF1YWQucDIoKS55KCkpOworICAgIGxheWVy
LnBhdGggPSBwYXRoLmdldCgpOwogfQogCiBzdGF0aWMgdm9pZCBsYXllclBhdGgoQ0FTaGFwZUxh
eWVyICpsYXllciwgY29uc3QgRmxvYXRRdWFkJiBvdXRlclF1YWQpCiB7Ci0gICAgQ0dNdXRhYmxl
UGF0aFJlZiBwYXRoID0gQ0dQYXRoQ3JlYXRlTXV0YWJsZSgpOwotICAgIENHUGF0aE1vdmVUb1Bv
aW50KHBhdGgsIDAsIG91dGVyUXVhZC5wMSgpLngoKSwgb3V0ZXJRdWFkLnAxKCkueSgpKTsKLSAg
ICBDR1BhdGhBZGRMaW5lVG9Qb2ludChwYXRoLCAwLCBvdXRlclF1YWQucDQoKS54KCksIG91dGVy
UXVhZC5wNCgpLnkoKSk7Ci0gICAgQ0dQYXRoQWRkTGluZVRvUG9pbnQocGF0aCwgMCwgb3V0ZXJR
dWFkLnAzKCkueCgpLCBvdXRlclF1YWQucDMoKS55KCkpOwotICAgIENHUGF0aEFkZExpbmVUb1Bv
aW50KHBhdGgsIDAsIG91dGVyUXVhZC5wMigpLngoKSwgb3V0ZXJRdWFkLnAyKCkueSgpKTsKLSAg
ICBsYXllci5wYXRoID0gcGF0aDsKLSAgICBDR1BhdGhSZWxlYXNlKHBhdGgpOworICAgIGF1dG8g
cGF0aCA9IGFkb3B0Q0YoQ0dQYXRoQ3JlYXRlTXV0YWJsZSgpKTsKKyAgICBDR1BhdGhNb3ZlVG9Q
b2ludChwYXRoLmdldCgpLCAwLCBvdXRlclF1YWQucDEoKS54KCksIG91dGVyUXVhZC5wMSgpLnko
KSk7CisgICAgQ0dQYXRoQWRkTGluZVRvUG9pbnQocGF0aC5nZXQoKSwgMCwgb3V0ZXJRdWFkLnA0
KCkueCgpLCBvdXRlclF1YWQucDQoKS55KCkpOworICAgIENHUGF0aEFkZExpbmVUb1BvaW50KHBh
dGguZ2V0KCksIDAsIG91dGVyUXVhZC5wMygpLngoKSwgb3V0ZXJRdWFkLnAzKCkueSgpKTsKKyAg
ICBDR1BhdGhBZGRMaW5lVG9Qb2ludChwYXRoLmdldCgpLCAwLCBvdXRlclF1YWQucDIoKS54KCks
IG91dGVyUXVhZC5wMigpLnkoKSk7CisgICAgbGF5ZXIucGF0aCA9IHBhdGguZ2V0KCk7CiB9CiAK
IC0gKHZvaWQpX2xheW91dEZvck5vZGVIaWdobGlnaHQ6KEluc3BlY3Rvck92ZXJsYXk6OkhpZ2hs
aWdodCopaGlnaGxpZ2h0IHBhcmVudDooQ0FMYXllciAqKXBhcmVudExheWVyCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQppbmRleCBiOWJlN2Q5OTA1ZGFmNTBl
ZTlmZDUzMDhlOTdmZjNjOWRlY2E5ZTFiLi4zYWJjNjAxYjgwYmFkNDMwMzU0MjViNDkyOTg0OWYx
M2VmMTQ4Nzc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dl
YkZyYW1lLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUu
bW0KQEAgLTI0NjEsMTIgKzI0NjEsOSBAQCAtICh2b2lkKWxvYWRSZXF1ZXN0OihOU1VSTFJlcXVl
c3QgKilyZXF1ZXN0CiAKIHN0YXRpYyBOU1VSTCAqY3JlYXRlVW5pcXVlV2ViRGF0YVVSTCgpCiB7
Ci0gICAgQ0ZVVUlEUmVmIFVVSURSZWYgPSBDRlVVSURDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVs
dCk7Ci0gICAgTlNTdHJpbmcgKlVVSURTdHJpbmcgPSAoTlNTdHJpbmcgKilDRlVVSURDcmVhdGVT
dHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwgVVVJRFJlZik7Ci0gICAgQ0ZSZWxlYXNlKFVVSURS
ZWYpOwotICAgIE5TVVJMICpVUkwgPSBbTlNVUkwgVVJMV2l0aFN0cmluZzpbTlNTdHJpbmcgc3Ry
aW5nV2l0aEZvcm1hdDpAImFwcGxld2ViZGF0YTovLyVAIiwgVVVJRFN0cmluZ11dOwotICAgIENG
UmVsZWFzZShVVUlEU3RyaW5nKTsKLSAgICByZXR1cm4gVVJMOworICAgIGF1dG8gVVVJRFJlZiA9
IGFkb3B0Q0YoQ0ZVVUlEQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQpKTsKKyAgICBhdXRvIFVV
SURTdHJpbmcgPSBhZG9wdENGKENGVVVJRENyZWF0ZVN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0
LCBVVUlEUmVmLmdldCgpKSk7CisgICAgcmV0dXJuIFtOU1VSTCBVUkxXaXRoU3RyaW5nOltOU1N0
cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiYXBwbGV3ZWJkYXRhOi8vJUAiLCAoX19icmlkZ2UgTlNT
dHJpbmcgKilVVUlEU3RyaW5nLmdldCgpXV07CiB9CiAKIC0gKHZvaWQpX2xvYWREYXRhOihOU0Rh
dGEgKilkYXRhIE1JTUVUeXBlOihOU1N0cmluZyAqKU1JTUVUeXBlIHRleHRFbmNvZGluZ05hbWU6
KE5TU3RyaW5nICopZW5jb2RpbmdOYW1lIGJhc2VVUkw6KE5TVVJMICopYmFzZVVSTCB1bnJlYWNo
YWJsZVVSTDooTlNVUkwgKil1bnJlYWNoYWJsZVVSTApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViVmlldy9XZWJWaWV3Lm1tCmluZGV4IDY4NTYxMGMyNWVjMmFlNWZkNWY1MTNiYjkzMTYyYzRl
MmU2MWZiOTIuLmUzMzNkNmUwZjliM2MyNWNiYmNkZmI5YjZjYWVjNGFlMTQ0MmM5ZDEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KQEAgLTg0MDMsNyArODQw
Myw3IEBAICsgKHZvaWQpX3NldENhY2hlTW9kZWw6KFdlYkNhY2hlTW9kZWwpY2FjaGVNb2RlbAog
ICAgIGlmIChzX2RpZFNldENhY2hlTW9kZWwgJiYgY2FjaGVNb2RlbCA9PSBzX2NhY2hlTW9kZWwp
CiAgICAgICAgIHJldHVybjsKIAotICAgIE5TU3RyaW5nICpuc3VybENhY2hlRGlyZWN0b3J5ID0g
Q0ZCcmlkZ2luZ1JlbGVhc2UoX0NGVVJMQ2FjaGVDb3B5Q2FjaGVEaXJlY3RvcnkoW1tOU1VSTENh
Y2hlIHNoYXJlZFVSTENhY2hlXSBfQ0ZVUkxDYWNoZV0pKTsKKyAgICBOU1N0cmluZyAqbnN1cmxD
YWNoZURpcmVjdG9yeSA9IGFkb3B0Q0YoX0NGVVJMQ2FjaGVDb3B5Q2FjaGVEaXJlY3RvcnkoW1tO
U1VSTENhY2hlIHNoYXJlZFVSTENhY2hlXSBfQ0ZVUkxDYWNoZV0pKS5icmlkZ2luZ0F1dG9yZWxl
YXNlKCk7CiAgICAgaWYgKCFuc3VybENhY2hlRGlyZWN0b3J5KQogICAgICAgICBuc3VybENhY2hl
RGlyZWN0b3J5ID0gTlNIb21lRGlyZWN0b3J5KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL0NGRGljdGlvbmFyeVByb3BlcnR5QmFnLmNwcCBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL0NGRGljdGlvbmFyeVByb3BlcnR5QmFnLmNwcAppbmRleCBiYzllNjU5NGU3Nzdi
ZjAwODY4MzYyYjc1MWMyNzUxOWQ3YmVhNzNiLi42ODFiZDlmZGQwOWQzNGViZDhkOWRlYTQyM2Zj
NWVhMGE1NzZjOThkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DRkRpY3Rp
b25hcnlQcm9wZXJ0eUJhZy5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ0ZEaWN0
aW9uYXJ5UHJvcGVydHlCYWcuY3BwCkBAIC0xNDEsMTcgKzE0MSwxNyBAQCBzdGF0aWMgYm9vbCBD
b252ZXJ0VmFyaWFudFRvQ0ZUeXBlKFZBUklBTlQqIHBWYXIsIHZvaWQqKiBjZk9iaikKICAgICAg
ICAgICAgICpjZk9iaiA9ICh2b2lkKikgTWFyc2hhbGxpbmdIZWxwZXJzOjpCU1RSVG9DRlN0cmlu
Z1JlZihWX0JTVFIocFZhcikpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0g
ZWxzZSBpZiAoVl9WVChwVmFyKSA9PSBWVF9JNCkgewotICAgICAgICAgICAgKmNmT2JqID0gKHZv
aWQqKSBNYXJzaGFsbGluZ0hlbHBlcnM6OmludFRvQ0ZOdW1iZXJSZWYoVl9JNChwVmFyKSk7Cisg
ICAgICAgICAgICAqY2ZPYmogPSAodm9pZCopIE1hcnNoYWxsaW5nSGVscGVyczo6aW50VG9DRk51
bWJlclJlZihWX0k0KHBWYXIpKS5sZWFmUmVmKCk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICAgICAgfSBlbHNlIGlmICghIShWX1ZUKHBWYXIpJlZUX0FSUkFZKSkgewogICAgICAgICAg
ICAgaWYgKChWX1ZUKHBWYXIpJn5WVF9BUlJBWSkgPT0gVlRfQlNUUikgewotICAgICAgICAgICAg
ICAgICpjZk9iaiA9ICh2b2lkKikgTWFyc2hhbGxpbmdIZWxwZXJzOjpzYWZlQXJyYXlUb1N0cmlu
Z0FycmF5KFZfQVJSQVkocFZhcikpOworICAgICAgICAgICAgICAgICpjZk9iaiA9ICh2b2lkKikg
TWFyc2hhbGxpbmdIZWxwZXJzOjpzYWZlQXJyYXlUb1N0cmluZ0FycmF5KFZfQVJSQVkocFZhcikp
LmxlYWtSZWYoKTsKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIH0g
ZWxzZSBpZiAoKFZfVlQocFZhcikmflZUX0FSUkFZKSA9PSBWVF9JNCkgewotICAgICAgICAgICAg
ICAgICpjZk9iaiA9ICh2b2lkKikgTWFyc2hhbGxpbmdIZWxwZXJzOjpzYWZlQXJyYXlUb0ludEFy
cmF5KFZfQVJSQVkocFZhcikpOworICAgICAgICAgICAgICAgICpjZk9iaiA9ICh2b2lkKikgTWFy
c2hhbGxpbmdIZWxwZXJzOjpzYWZlQXJyYXlUb0ludEFycmF5KFZfQVJSQVkocFZhcikpLmxlYWtS
ZWYoKTsKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIH0gZWxzZSBp
ZiAoKFZfVlQocFZhcikmflZUX0FSUkFZKSA9PSBWVF9VTktOT1dOKSB7Ci0gICAgICAgICAgICAg
ICAgKmNmT2JqID0gKHZvaWQqKSBNYXJzaGFsbGluZ0hlbHBlcnM6OnNhZmVBcnJheVRvSVVua25v
d25BcnJheShWX0FSUkFZKHBWYXIpKTsKKyAgICAgICAgICAgICAgICAqY2ZPYmogPSAodm9pZCop
IE1hcnNoYWxsaW5nSGVscGVyczo6c2FmZUFycmF5VG9JVW5rbm93bkFycmF5KFZfQVJSQVkocFZh
cikpLmxlYWtSZWYoKTsKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAg
IH0KICAgICAgICAgfQpAQCAtMTY3LDE0ICsxNjcsMTMgQEAgSFJFU1VMVCBDRkRpY3Rpb25hcnlQ
cm9wZXJ0eUJhZzo6UmVhZChMUENPTEVTVFIgcHN6UHJvcE5hbWUsIFZBUklBTlQgKnBWYXIsIElF
cnIKICNpZiBVU0UoQ0YpCiAgICAgaWYgKG1fZGljdGlvbmFyeSkgewogICAgICAgICB2b2lkKiB2
YWx1ZTsKLSAgICAgICAgQ0ZTdHJpbmdSZWYga2V5ID0gTWFyc2hhbGxpbmdIZWxwZXJzOjpMUENP
TEVTVFJUb0NGU3RyaW5nUmVmKHBzelByb3BOYW1lKTsKKyAgICAgICAgYXV0byBrZXkgPSBNYXJz
aGFsbGluZ0hlbHBlcnM6OkxQQ09MRVNUUlRvQ0ZTdHJpbmdSZWYocHN6UHJvcE5hbWUpOwogICAg
ICAgICBIUkVTVUxUIGhyID0gRV9GQUlMOwotICAgICAgICBpZiAoQ0ZEaWN0aW9uYXJ5R2V0VmFs
dWVJZlByZXNlbnQobV9kaWN0aW9uYXJ5LmdldCgpLCBrZXksIChjb25zdCB2b2lkKiopICZ2YWx1
ZSkpIHsKKyAgICAgICAgaWYgKENGRGljdGlvbmFyeUdldFZhbHVlSWZQcmVzZW50KG1fZGljdGlv
bmFyeS5nZXQoKSwga2V5LmdldCgpLCAoY29uc3Qgdm9pZCoqKSAmdmFsdWUpKSB7CiAgICAgICAg
ICAgICBpZiAoQ29udmVydENGVHlwZVRvVmFyaWFudChwVmFyLCB2YWx1ZSkpCiAgICAgICAgICAg
ICAgICAgaHIgPSBTX09LOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIGhyID0gRV9JTlZB
TElEQVJHOwotICAgICAgICBDRlJlbGVhc2Uoa2V5KTsKICAgICAgICAgcmV0dXJuIGhyOwogICAg
IH0KICNlbmRpZgpAQCAtMTkxLDEwICsxOTAsOSBAQCBIUkVTVUxUIENGRGljdGlvbmFyeVByb3Bl
cnR5QmFnOjpXcml0ZShfSW5fIExQQ09MRVNUUiBwc3pQcm9wTmFtZSwgX0luXyBWQVJJQU5UKgog
ICAgIH0KICAgICB2b2lkKiBjZk9iajsKICAgICBpZiAoQ29udmVydFZhcmlhbnRUb0NGVHlwZShw
VmFyLCAmY2ZPYmopKSB7Ci0gICAgICAgIENGU3RyaW5nUmVmIGtleSA9IE1hcnNoYWxsaW5nSGVs
cGVyczo6TFBDT0xFU1RSVG9DRlN0cmluZ1JlZihwc3pQcm9wTmFtZSk7Ci0gICAgICAgIENGRGlj
dGlvbmFyeUFkZFZhbHVlKG1fZGljdGlvbmFyeS5nZXQoKSwga2V5LCBjZk9iaik7CisgICAgICAg
IGF1dG8ga2V5ID0gTWFyc2hhbGxpbmdIZWxwZXJzOjpMUENPTEVTVFJUb0NGU3RyaW5nUmVmKHBz
elByb3BOYW1lKTsKKyAgICAgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUobV9kaWN0aW9uYXJ5Lmdl
dCgpLCBrZXkuZ2V0KCksIGNmT2JqKTsKICAgICAgICAgLy8gQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUg
c2hvdWxkIGF1dG9tYXRpY2FsbHkgcmV0YWluIHRoZSBDRiBvYmplY3RzIHBhc3NlZCBpbiwgc28g
cmVsZWFzZSB0aGVtIGhlcmUKLSAgICAgICAgQ0ZSZWxlYXNlKGtleSk7CiAgICAgICAgIENGUmVs
ZWFzZShjZk9iaik7CiAgICAgICAgIHJldHVybiBTX09LOwogICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL01hcnNoYWxsaW5nSGVscGVycy5jcHAgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9NYXJzaGFsbGluZ0hlbHBlcnMuY3BwCmluZGV4IDI1NjA4OTMxOTA0NTc0
NmE5Mzk1ZTVkZWQ2YzZhNzNjZGNkYmY4YWUuLmFiNmQ4NWJmZjc5N2E5OWI4ZTlmOGIyMmJjY2Rj
YzQ1ZDI3MDllNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01hcnNoYWxs
aW5nSGVscGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vTWFyc2hhbGxpbmdI
ZWxwZXJzLmNwcApAQCAtNTMsMzkgKzUzLDMzIEBAIEJTVFIgTWFyc2hhbGxpbmdIZWxwZXJzOjpV
UkxUb0JTVFIoY29uc3QgVVJMJiB1cmwpCiB9CiAKICNpZiBVU0UoQ0YpCi1DRlVSTFJlZiBNYXJz
aGFsbGluZ0hlbHBlcnM6OlBhdGhTdHJpbmdUb0ZpbGVDRlVSTFJlZihjb25zdCBTdHJpbmcmIHN0
cmluZykKK1JldGFpblB0cjxDRlVSTFJlZj4gTWFyc2hhbGxpbmdIZWxwZXJzOjpQYXRoU3RyaW5n
VG9GaWxlQ0ZVUkxSZWYoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiB7Ci0gICAgcmV0dXJuIENGVVJM
Q3JlYXRlV2l0aEZpbGVTeXN0ZW1QYXRoKDAsIHN0cmluZy5jcmVhdGVDRlN0cmluZygpLmdldCgp
LCBrQ0ZVUkxXaW5kb3dzUGF0aFN0eWxlLCBmYWxzZSk7CisgICAgcmV0dXJuIGFkb3B0Q0YoQ0ZV
UkxDcmVhdGVXaXRoRmlsZVN5c3RlbVBhdGgoMCwgc3RyaW5nLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0
KCksIGtDRlVSTFdpbmRvd3NQYXRoU3R5bGUsIGZhbHNlKSk7CiB9CiAKIFN0cmluZyBNYXJzaGFs
bGluZ0hlbHBlcnM6OkZpbGVDRlVSTFJlZlRvUGF0aFN0cmluZyhDRlVSTFJlZiBmaWxlVVJMKQog
ewotICAgIENGU3RyaW5nUmVmIHN0cmluZyA9IENGVVJMQ29weUZpbGVTeXN0ZW1QYXRoKGZpbGVV
UkwsIGtDRlVSTFdpbmRvd3NQYXRoU3R5bGUpOwotICAgIFN0cmluZyByZXN1bHQoc3RyaW5nKTsK
LSAgICBDRlJlbGVhc2Uoc3RyaW5nKTsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiBh
ZG9wdENGKENGVVJMQ29weUZpbGVTeXN0ZW1QYXRoKGZpbGVVUkwsIGtDRlVSTFdpbmRvd3NQYXRo
U3R5bGUpKS5nZXQoKTsKIH0KIAotQ0ZVUkxSZWYgTWFyc2hhbGxpbmdIZWxwZXJzOjpCU1RSVG9D
RlVSTFJlZihCU1RSIHVybFN0cikKK1JldGFpblB0cjxDRlVSTFJlZj4gTWFyc2hhbGxpbmdIZWxw
ZXJzOjpCU1RSVG9DRlVSTFJlZihCU1RSIHVybFN0cikKIHsKLSAgICBDRlN0cmluZ1JlZiB1cmxD
RlN0cmluZyA9IEJTVFJUb0NGU3RyaW5nUmVmKHVybFN0cik7CisgICAgYXV0byB1cmxDRlN0cmlu
ZyA9IEJTVFJUb0NGU3RyaW5nUmVmKHVybFN0cik7CiAgICAgaWYgKCF1cmxDRlN0cmluZykKLSAg
ICAgICAgcmV0dXJuIDA7Ci0KLSAgICBDRlVSTFJlZiB1cmxSZWYgPSBDRlVSTENyZWF0ZVdpdGhT
dHJpbmcoMCwgdXJsQ0ZTdHJpbmcsIDApOwotICAgIENGUmVsZWFzZSh1cmxDRlN0cmluZyk7Cisg
ICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIHVybFJlZjsKKyAgICByZXR1cm4g
YWRvcHRDRihDRlVSTENyZWF0ZVdpdGhTdHJpbmcobnVsbHB0ciwgdXJsQ0ZTdHJpbmcuZ2V0KCks
IG51bGxwdHIpKTsKIH0KIAotQ0ZTdHJpbmdSZWYgTWFyc2hhbGxpbmdIZWxwZXJzOjpCU1RSVG9D
RlN0cmluZ1JlZihCU1RSIHN0cikKK1JldGFpblB0cjxDRlN0cmluZ1JlZj4gTWFyc2hhbGxpbmdI
ZWxwZXJzOjpCU1RSVG9DRlN0cmluZ1JlZihCU1RSIHN0cikKIHsKLSAgICByZXR1cm4gQ0ZTdHJp
bmdDcmVhdGVXaXRoQ2hhcmFjdGVycygwLCAoY29uc3QgVW5pQ2hhciopKHN0ciA/IHN0ciA6IFRF
WFQoIiIpKSwgU3lzU3RyaW5nTGVuKHN0cikpOworICAgIHJldHVybiBhZG9wdENGKENGU3RyaW5n
Q3JlYXRlV2l0aENoYXJhY3RlcnMoMCwgKGNvbnN0IFVuaUNoYXIqKShzdHIgPyBzdHIgOiBURVhU
KCIiKSksIFN5c1N0cmluZ0xlbihzdHIpKSk7CiB9CiAKLUNGU3RyaW5nUmVmIE1hcnNoYWxsaW5n
SGVscGVyczo6TFBDT0xFU1RSVG9DRlN0cmluZ1JlZihMUENPTEVTVFIgc3RyKQorUmV0YWluUHRy
PENGU3RyaW5nUmVmPiBNYXJzaGFsbGluZ0hlbHBlcnM6OkxQQ09MRVNUUlRvQ0ZTdHJpbmdSZWYo
TFBDT0xFU1RSIHN0cikKIHsKLSAgICByZXR1cm4gQ0ZTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVy
cygwLCAoY29uc3QgVW5pQ2hhciopKHN0ciA/IHN0ciA6IFRFWFQoIiIpKSwgKENGSW5kZXgpKHN0
ciA/IHdjc2xlbihzdHIpIDogMCkpOworICAgIHJldHVybiBhZG9wdENGKENGU3RyaW5nQ3JlYXRl
V2l0aENoYXJhY3RlcnMoMCwgKGNvbnN0IFVuaUNoYXIqKShzdHIgPyBzdHIgOiBURVhUKCIiKSks
IChDRkluZGV4KShzdHIgPyB3Y3NsZW4oc3RyKSA6IDApKSk7CiB9CiAKIEJTVFIgTWFyc2hhbGxp
bmdIZWxwZXJzOjpDRlN0cmluZ1JlZlRvQlNUUihDRlN0cmluZ1JlZiBzdHIpCkBAIC0xMDAsOSAr
OTQsOSBAQCBpbnQgTWFyc2hhbGxpbmdIZWxwZXJzOjpDRk51bWJlclJlZlRvSW50KENGTnVtYmVy
UmVmIG51bSkKICAgICByZXR1cm4gbnVtYmVyOwogfQogCi1DRk51bWJlclJlZiBNYXJzaGFsbGlu
Z0hlbHBlcnM6OmludFRvQ0ZOdW1iZXJSZWYoaW50IG51bSkKK1JldGFpblB0cjxDRk51bWJlclJl
Zj4gTWFyc2hhbGxpbmdIZWxwZXJzOjppbnRUb0NGTnVtYmVyUmVmKGludCBudW0pCiB7Ci0gICAg
cmV0dXJuIENGTnVtYmVyQ3JlYXRlKDAsIGtDRk51bWJlclNJbnQzMlR5cGUsICZudW0pOworICAg
IHJldHVybiBhZG9wdENGKENGTnVtYmVyQ3JlYXRlKDAsIGtDRk51bWJlclNJbnQzMlR5cGUsICZu
dW0pKTsKIH0KICNlbmRpZgogCkBAIC0yNDQsNyArMjM4LDcgQEAgU0FGRUFSUkFZKiBNYXJzaGFs
bGluZ0hlbHBlcnM6Oml1bmtub3duQXJyYXlUb1NhZmVBcnJheShDRkFycmF5UmVmIGluQXJyYXkp
CiAgICAgcmV0dXJuIHNhOwogfQogCi1DRkFycmF5UmVmIE1hcnNoYWxsaW5nSGVscGVyczo6c2Fm
ZUFycmF5VG9TdHJpbmdBcnJheShTQUZFQVJSQVkqIGluQXJyYXkpCitSZXRhaW5QdHI8Q0ZBcnJh
eVJlZj4gTWFyc2hhbGxpbmdIZWxwZXJzOjpzYWZlQXJyYXlUb1N0cmluZ0FycmF5KFNBRkVBUlJB
WSogaW5BcnJheSkKIHsKICAgICBsb25nIGxCb3VuZD0wLCB1Qm91bmQ9LTE7CiAgICAgSFJFU1VM
VCBociA9IDo6U2FmZUFycmF5R2V0TEJvdW5kKGluQXJyYXksIDEsICZsQm91bmQpOwpAQCAtMjU3
LDE0ICsyNTEsMTMgQEAgQ0ZBcnJheVJlZiBNYXJzaGFsbGluZ0hlbHBlcnM6OnNhZmVBcnJheVRv
U3RyaW5nQXJyYXkoU0FGRUFSUkFZKiBpbkFycmF5KQogICAgICAgICBmb3IgKDsgbEJvdW5kIDw9
IHVCb3VuZDsgbEJvdW5kKyspIHsKICAgICAgICAgICAgIEJTdHJpbmcgc3RyOwogICAgICAgICAg
ICAgaHIgPSA6OlNhZmVBcnJheUdldEVsZW1lbnQoaW5BcnJheSwgJmxCb3VuZCwgJnN0cik7Ci0g
ICAgICAgICAgICBpdGVtc1tsQm91bmRdID0gQlNUUlRvQ0ZTdHJpbmdSZWYoc3RyKTsKKyAgICAg
ICAgICAgIGl0ZW1zW2xCb3VuZF0gPSBCU1RSVG9DRlN0cmluZ1JlZihzdHIpLmxlYWtSZWYoKTsK
ICAgICAgICAgfQogICAgIH0KLSAgICBDRkFycmF5UmVmIHJlc3VsdCA9IENGQXJyYXlDcmVhdGUo
MCwgKGNvbnN0IHZvaWQqKilpdGVtcy5kYXRhKCksIGxlbiwgJmtDRlR5cGVBcnJheUNhbGxCYWNr
cyk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4gYWRvcHRDRihDRkFycmF5Q3JlYXRl
KDAsIChjb25zdCB2b2lkKiopaXRlbXMuZGF0YSgpLCBsZW4sICZrQ0ZUeXBlQXJyYXlDYWxsQmFj
a3MpKTsKIH0KIAotQ0ZBcnJheVJlZiBNYXJzaGFsbGluZ0hlbHBlcnM6OnNhZmVBcnJheVRvSW50
QXJyYXkoU0FGRUFSUkFZKiBpbkFycmF5KQorUmV0YWluUHRyPENGQXJyYXlSZWY+IE1hcnNoYWxs
aW5nSGVscGVyczo6c2FmZUFycmF5VG9JbnRBcnJheShTQUZFQVJSQVkqIGluQXJyYXkpCiB7CiAg
ICAgbG9uZyBsQm91bmQ9MCwgdUJvdW5kPS0xOwogICAgIEhSRVNVTFQgaHIgPSA6OlNhZmVBcnJh
eUdldExCb3VuZChpbkFycmF5LCAxLCAmbEJvdW5kKTsKQEAgLTI3NywxNCArMjcwLDEzIEBAIENG
QXJyYXlSZWYgTWFyc2hhbGxpbmdIZWxwZXJzOjpzYWZlQXJyYXlUb0ludEFycmF5KFNBRkVBUlJB
WSogaW5BcnJheSkKICAgICAgICAgZm9yICg7IGxCb3VuZCA8PSB1Qm91bmQ7IGxCb3VuZCsrKSB7
CiAgICAgICAgICAgICBpbnQgbnVtID0gMDsKICAgICAgICAgICAgIGhyID0gOjpTYWZlQXJyYXlH
ZXRFbGVtZW50KGluQXJyYXksICZsQm91bmQsICZudW0pOwotICAgICAgICAgICAgaXRlbXNbbEJv
dW5kXSA9IFNVQ0NFRURFRChocikgPyBpbnRUb0NGTnVtYmVyUmVmKG51bSkgOiBrQ0ZOdW1iZXJO
YU47CisgICAgICAgICAgICBpdGVtc1tsQm91bmRdID0gU1VDQ0VFREVEKGhyKSA/IGludFRvQ0ZO
dW1iZXJSZWYobnVtKS5sZWFrUmVmKCkgOiBrQ0ZOdW1iZXJOYU47CiAgICAgICAgIH0KICAgICB9
Ci0gICAgQ0ZBcnJheVJlZiByZXN1bHQgPSBDRkFycmF5Q3JlYXRlKDAsIChjb25zdCB2b2lkKiop
aXRlbXMuZGF0YSgpLCBsZW4sICZrQ0ZUeXBlQXJyYXlDYWxsQmFja3MpOwotICAgIHJldHVybiBy
ZXN1bHQ7CisgICAgcmV0dXJuIGFkb3B0Q0YoQ0ZBcnJheUNyZWF0ZSgwLCAoY29uc3Qgdm9pZCoq
KWl0ZW1zLmRhdGEoKSwgbGVuLCAma0NGVHlwZUFycmF5Q2FsbEJhY2tzKSk7CiB9CiAKLUNGQXJy
YXlSZWYgTWFyc2hhbGxpbmdIZWxwZXJzOjpzYWZlQXJyYXlUb0lVbmtub3duQXJyYXkoU0FGRUFS
UkFZKiBpbkFycmF5KQorUmV0YWluUHRyPENGQXJyYXlSZWY+IE1hcnNoYWxsaW5nSGVscGVyczo6
c2FmZUFycmF5VG9JVW5rbm93bkFycmF5KFNBRkVBUlJBWSogaW5BcnJheSkKIHsKICAgICBsb25n
IGxCb3VuZD0wLCB1Qm91bmQ9LTE7CiAgICAgSFJFU1VMVCBociA9IDo6U2FmZUFycmF5R2V0TEJv
dW5kKGluQXJyYXksIDEsICZsQm91bmQpOwpAQCAtMjkzLDcgKzI4NSw3IEBAIENGQXJyYXlSZWYg
TWFyc2hhbGxpbmdIZWxwZXJzOjpzYWZlQXJyYXlUb0lVbmtub3duQXJyYXkoU0FGRUFSUkFZKiBp
bkFycmF5KQogICAgIGxvbmcgbGVuID0gKFNVQ0NFRURFRChocikpID8gKHVCb3VuZC1sQm91bmQr
MSkgOiAwOwogICAgIHZvaWQqIGl0ZW1zID0gbnVsbHB0cjsKICAgICBociA9IDo6U2FmZUFycmF5
QWNjZXNzRGF0YShpbkFycmF5LCAmaXRlbXMpOwotICAgIENGQXJyYXlSZWYgcmVzdWx0ID0gU1VD
Q0VFREVEKGhyKSA/IENGQXJyYXlDcmVhdGUoMCwgKGNvbnN0IHZvaWQqKikgaXRlbXMsIGxlbiwg
JmtJVW5rbm93bkFycmF5Q2FsbEJhY2tzKSA6IG51bGxwdHI7CisgICAgYXV0byByZXN1bHQgPSBT
VUNDRUVERUQoaHIpID8gYWRvcHRDRihDRkFycmF5Q3JlYXRlKDAsIChjb25zdCB2b2lkKiopIGl0
ZW1zLCBsZW4sICZrSVVua25vd25BcnJheUNhbGxCYWNrcykpIDogbnVsbHB0cjsKICAgICBociA9
IDo6U2FmZUFycmF5VW5hY2Nlc3NEYXRhKGluQXJyYXkpOwogICAgIHJldHVybiByZXN1bHQ7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9NYXJzaGFsbGluZ0hlbHBlcnMu
aCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01hcnNoYWxsaW5nSGVscGVycy5oCmluZGV4IDJj
NDg2MDM2YTBjYzcwMTVjNjA4YzhhMDdhNmQwMTVkNDE3OTExNTQuLjk0MWE0Mjg5ODE0MWFlNTkw
MzM1MTAzMGM0ZTI5YzgzMzY0OGIyYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL01hcnNoYWxsaW5nSGVscGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01h
cnNoYWxsaW5nSGVscGVycy5oCkBAIC0yOSw2ICsyOSw3IEBACiAKICNpZiBVU0UoQ0YpCiAjaW5j
bHVkZSA8Q29yZUZvdW5kYXRpb24vQ29yZUZvdW5kYXRpb24uaD4KKyNpbmNsdWRlIDx3dGYvUmV0
YWluUHRyLmg+CiAjZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDIsMTQgKzQzLDE0
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgQlNUUiBVUkxUb0JTVFIoY29uc3QgVVJMJik7CiAKICNp
ZiBVU0UoQ0YpCi0gICAgc3RhdGljIENGVVJMUmVmIFBhdGhTdHJpbmdUb0ZpbGVDRlVSTFJlZihj
b25zdCBXVEY6OlN0cmluZyYpOworICAgIHN0YXRpYyBSZXRhaW5QdHI8Q0ZVUkxSZWY+IFBhdGhT
dHJpbmdUb0ZpbGVDRlVSTFJlZihjb25zdCBXVEY6OlN0cmluZyYpOwogICAgIHN0YXRpYyBXVEY6
OlN0cmluZyBGaWxlQ0ZVUkxSZWZUb1BhdGhTdHJpbmcoQ0ZVUkxSZWYgZmlsZVVSTCk7Ci0gICAg
c3RhdGljIENGVVJMUmVmIEJTVFJUb0NGVVJMUmVmKEJTVFIpOwotICAgIHN0YXRpYyBDRlN0cmlu
Z1JlZiBCU1RSVG9DRlN0cmluZ1JlZihCU1RSKTsKLSAgICBzdGF0aWMgQ0ZTdHJpbmdSZWYgTFBD
T0xFU1RSVG9DRlN0cmluZ1JlZihMUENPTEVTVFIpOworICAgIHN0YXRpYyBSZXRhaW5QdHI8Q0ZV
UkxSZWY+IEJTVFJUb0NGVVJMUmVmKEJTVFIpOworICAgIHN0YXRpYyBSZXRhaW5QdHI8Q0ZTdHJp
bmdSZWY+IEJTVFJUb0NGU3RyaW5nUmVmKEJTVFIpOworICAgIHN0YXRpYyBSZXRhaW5QdHI8Q0ZT
dHJpbmdSZWY+IExQQ09MRVNUUlRvQ0ZTdHJpbmdSZWYoTFBDT0xFU1RSKTsKICAgICBzdGF0aWMg
QlNUUiBDRlN0cmluZ1JlZlRvQlNUUihDRlN0cmluZ1JlZik7CiAgICAgc3RhdGljIGludCBDRk51
bWJlclJlZlRvSW50KENGTnVtYmVyUmVmKTsKLSAgICBzdGF0aWMgQ0ZOdW1iZXJSZWYgaW50VG9D
Rk51bWJlclJlZihpbnQpOworICAgIHN0YXRpYyBSZXRhaW5QdHI8Q0ZOdW1iZXJSZWY+IGludFRv
Q0ZOdW1iZXJSZWYoaW50KTsKICAgICBzdGF0aWMgQ0ZBYnNvbHV0ZVRpbWUgREFURVRvQ0ZBYnNv
bHV0ZVRpbWUoREFURSk7CiAgICAgc3RhdGljIERBVEUgQ0ZBYnNvbHV0ZVRpbWVUb0RBVEUoQ0ZB
YnNvbHV0ZVRpbWUpOwogICAgIHN0YXRpYyBTQUZFQVJSQVkqIHN0cmluZ0FycmF5VG9TYWZlQXJy
YXkoQ0ZBcnJheVJlZik7CkBAIC02Myw5ICs2NCw5IEBAIHB1YmxpYzoKIAogI2lmIFVTRShDRikK
ICAgICBzdGF0aWMgU0FGRUFSUkFZKiBpdW5rbm93bkFycmF5VG9TYWZlQXJyYXkoQ0ZBcnJheVJl
Zik7Ci0gICAgc3RhdGljIENGQXJyYXlSZWYgc2FmZUFycmF5VG9TdHJpbmdBcnJheShTQUZFQVJS
QVkqKTsKLSAgICBzdGF0aWMgQ0ZBcnJheVJlZiBzYWZlQXJyYXlUb0ludEFycmF5KFNBRkVBUlJB
WSopOwotICAgIHN0YXRpYyBDRkFycmF5UmVmIHNhZmVBcnJheVRvSVVua25vd25BcnJheShTQUZF
QVJSQVkqKTsKKyAgICBzdGF0aWMgUmV0YWluUHRyPENGQXJyYXlSZWY+IHNhZmVBcnJheVRvU3Ry
aW5nQXJyYXkoU0FGRUFSUkFZKik7CisgICAgc3RhdGljIFJldGFpblB0cjxDRkFycmF5UmVmPiBz
YWZlQXJyYXlUb0ludEFycmF5KFNBRkVBUlJBWSopOworICAgIHN0YXRpYyBSZXRhaW5QdHI8Q0ZB
cnJheVJlZj4gc2FmZUFycmF5VG9JVW5rbm93bkFycmF5KFNBRkVBUlJBWSopOwogICAgIHN0YXRp
YyBjb25zdCB2b2lkKiBJVW5rbm93blJldGFpbkNhbGxiYWNrKENGQWxsb2NhdG9yUmVmLCBjb25z
dCB2b2lkKik7CiAgICAgc3RhdGljIHZvaWQgSVVua25vd25SZWxlYXNlQ2FsbGJhY2soQ0ZBbGxv
Y2F0b3JSZWYsIGNvbnN0IHZvaWQqKTsKICAgICBzdGF0aWMgQ0ZBcnJheUNhbGxCYWNrcyBrSVVu
a25vd25BcnJheUNhbGxCYWNrczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkFwcGxpY2F0aW9uQ2FjaGUuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQXBw
bGljYXRpb25DYWNoZS5jcHAKaW5kZXggZGUxMjUwZWNkZTk3NmE2MmYyMjU4YzdkYzc0ZjZlOGVj
Mzc0YjJjOC4uMDhkZDQwMWViNzNkODVlMGYzY2U1ZjIzNmM5YzA2ZmY2YTRkNmM1OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQXBwbGljYXRpb25DYWNoZS5jcHAKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQXBwbGljYXRpb25DYWNoZS5jcHAKQEAgLTIw
MCw3ICsyMDAsNyBAQCBIUkVTVUxUIFdlYkFwcGxpY2F0aW9uQ2FjaGU6Om9yaWdpbnNXaXRoQ2Fj
aGUoSVByb3BlcnR5QmFnKiogb3JpZ2lucykKICAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlRGljdGlv
bmFyeVJlZj4gZGljdGlvbmFyeSA9IGFkb3B0Q0YoCiAgICAgICAgIENGRGljdGlvbmFyeUNyZWF0
ZU11dGFibGUoMCwgMCwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURp
Y3Rpb25hcnlWYWx1ZUNhbGxCYWNrcykpOwogCi0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBr
ZXkgPSBhZG9wdENGKE1hcnNoYWxsaW5nSGVscGVyczo6QlNUUlRvQ0ZTdHJpbmdSZWYoX2JzdHJf
dChMIm9yaWdpbnMiKSkpOworICAgIGF1dG8ga2V5ID0gTWFyc2hhbGxpbmdIZWxwZXJzOjpCU1RS
VG9DRlN0cmluZ1JlZihfYnN0cl90KEwib3JpZ2lucyIpKTsKICAgICBDRkRpY3Rpb25hcnlBZGRW
YWx1ZShkaWN0aW9uYXJ5LmdldCgpLCBrZXkuZ2V0KCksIGFycmF5SXRlbS5nZXQoKSk7CiAKICAg
ICBDT01QdHI8Q0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWc+IHJlc3VsdCA9IENGRGljdGlvbmFyeVBy
b3BlcnR5QmFnOjpjcmVhdGVJbnN0YW5jZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3Bw
CmluZGV4IDliODZhYTQ1YWQ0MzlmNGZiOWI4MmQ0MTQzMDcxZDVkYmNmMzgyNjMuLjBlNjY5MDgy
N2Y4MGFiMTdlM2UzMGI3ZTJhODkyNWQxMzdjNjZkMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5jcHAKQEAgLTEwMzgsMjEgKzEwMzgsMjEgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVu
dDo6ZGlzcGF0Y2hEaWRGYWlsVG9TdGFydFBsdWdpbihjb25zdCBQbHVnaW5WaWV3JiBwbHVnaW4K
ICAgICBpZiAoIXBsdWdpblZpZXcucGx1Z2luc1BhZ2UoKS5pc051bGwoKSkgewogICAgICAgICBV
UkwgcGx1Z2luUGFnZVVSTCA9IGZyYW1lLT5kb2N1bWVudCgpLT5jb21wbGV0ZVVSTChzdHJpcExl
YWRpbmdBbmRUcmFpbGluZ0hUTUxTcGFjZXMocGx1Z2luVmlldy5wbHVnaW5zUGFnZSgpKSk7CiAg
ICAgICAgIGlmIChwbHVnaW5QYWdlVVJMLnByb3RvY29sSXNJbkhUVFBGYW1pbHkoKSkgewotICAg
ICAgICAgICAgc3RhdGljIENGU3RyaW5nUmVmIGtleSA9IE1hcnNoYWxsaW5nSGVscGVyczo6TFBD
T0xFU1RSVG9DRlN0cmluZ1JlZihXZWJLaXRFcnJvclBsdWdJblBhZ2VVUkxTdHJpbmdLZXkpOwot
ICAgICAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUodXNlckluZm8uZ2V0KCksIGtleSwgcGx1
Z2luUGFnZVVSTC5zdHJpbmcoKS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKKyAgICAgICAgICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+PiBrZXkgPSBNYXJz
aGFsbGluZ0hlbHBlcnM6OkxQQ09MRVNUUlRvQ0ZTdHJpbmdSZWYoV2ViS2l0RXJyb3JQbHVnSW5Q
YWdlVVJMU3RyaW5nS2V5KTsKKyAgICAgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHVzZXJJ
bmZvLmdldCgpLCBrZXkuZ2V0KCkuZ2V0KCksIHBsdWdpblBhZ2VVUkwuc3RyaW5nKCkuY3JlYXRl
Q0ZTdHJpbmcoKS5nZXQoKSk7CiAgICAgICAgIH0KICAgICB9CiAKICAgICBpZiAoIXBsdWdpblZp
ZXcubWltZVR5cGUoKS5pc051bGwoKSkgewotICAgICAgICBzdGF0aWMgQ0ZTdHJpbmdSZWYga2V5
ID0gTWFyc2hhbGxpbmdIZWxwZXJzOjpMUENPTEVTVFJUb0NGU3RyaW5nUmVmKFdlYktpdEVycm9y
TUlNRVR5cGVLZXkpOwotICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZSh1c2VySW5mby5nZXQo
KSwga2V5LCBwbHVnaW5WaWV3Lm1pbWVUeXBlKCkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7Cisg
ICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+PiBrZXkg
PSBNYXJzaGFsbGluZ0hlbHBlcnM6OkxQQ09MRVNUUlRvQ0ZTdHJpbmdSZWYoV2ViS2l0RXJyb3JN
SU1FVHlwZUtleSk7CisgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHVzZXJJbmZvLmdldCgp
LCBrZXkuZ2V0KCkuZ2V0KCksIHBsdWdpblZpZXcubWltZVR5cGUoKS5jcmVhdGVDRlN0cmluZygp
LmdldCgpKTsKICAgICB9CiAKICAgICBpZiAocGx1Z2luVmlldy5wbHVnaW4oKSkgewogICAgICAg
ICBTdHJpbmcgcGx1Z2luTmFtZSA9IHBsdWdpblZpZXcucGx1Z2luKCktPm5hbWUoKTsKICAgICAg
ICAgaWYgKCFwbHVnaW5OYW1lLmlzTnVsbCgpKSB7Ci0gICAgICAgICAgICBzdGF0aWMgQ0ZTdHJp
bmdSZWYga2V5ID0gTWFyc2hhbGxpbmdIZWxwZXJzOjpMUENPTEVTVFJUb0NGU3RyaW5nUmVmKFdl
YktpdEVycm9yUGx1Z0luTmFtZUtleSk7Ci0gICAgICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1
ZSh1c2VySW5mby5nZXQoKSwga2V5LCBwbHVnaW5OYW1lLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkp
OworICAgICAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxDRlN0cmluZ1Jl
Zj4+IGtleSA9IE1hcnNoYWxsaW5nSGVscGVyczo6TFBDT0xFU1RSVG9DRlN0cmluZ1JlZihXZWJL
aXRFcnJvclBsdWdJbk5hbWVLZXkpOworICAgICAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUo
dXNlckluZm8uZ2V0KCksIGtleS5nZXQoKS5nZXQoKSwgcGx1Z2luTmFtZS5jcmVhdGVDRlN0cmlu
ZygpLmdldCgpKTsKICAgICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViRG93bmxvYWRDRk5ldC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJEb3dubG9hZENGTmV0LmNwcAppbmRleCBhMzMzYTJmNjI3NjdlYmJhZWMzYzgzYjZiMDc2
ZjBjMzVkMDNkNTBjLi5lYTBiNjc1MWM1NTRlODI3ZGM5ODI1NWNkNGE3MTU3ZjFkNWFkMmIyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEb3dubG9hZENGTmV0LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEb3dubG9hZENGTmV0LmNwcApAQCAtMTc4
LDcgKzE3OCw3IEBAIEhSRVNVTFQgV2ViRG93bmxvYWQ6OmluaXRUb1Jlc3VtZVdpdGhCdW5kbGUo
X0luXyBCU1RSIGJ1bmRsZVBhdGgsIF9Jbl9vcHRfIElXZWJECiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZGlkUmVjZWl2ZVJlc3BvbnNlQ2FsbGJhY2ssIHdpbGxSZXN1bWVXaXRo
UmVzcG9uc2VDYWxsYmFjaywgZGlkUmVjZWl2ZURhdGFDYWxsYmFjaywgc2hvdWxkRGVjb2RlRGF0
YU9mTUlNRVR5cGVDYWxsYmFjaywgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkT2JqZWN0TmFtZUNhbGxiYWNrLCBkaWRDcmVh
dGVEZXN0aW5hdGlvbkNhbGxiYWNrLCBkaWRGaW5pc2hDYWxsYmFjaywgZGlkRmFpbENhbGxiYWNr
fTsKICAgICAKLSAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IHBhdGhVUkwgPSBhZG9wdENGKE1hcnNo
YWxsaW5nSGVscGVyczo6UGF0aFN0cmluZ1RvRmlsZUNGVVJMUmVmKFN0cmluZyhidW5kbGVQYXRo
LCBTeXNTdHJpbmdMZW4oYnVuZGxlUGF0aCkpKSk7CisgICAgYXV0byBwYXRoVVJMID0gTWFyc2hh
bGxpbmdIZWxwZXJzOjpQYXRoU3RyaW5nVG9GaWxlQ0ZVUkxSZWYoU3RyaW5nKGJ1bmRsZVBhdGgs
IFN5c1N0cmluZ0xlbihidW5kbGVQYXRoKSkpOwogICAgIEFTU0VSVChwYXRoVVJMKTsKIAogICAg
IG1fZG93bmxvYWQgPSBhZG9wdENGKENGVVJMRG93bmxvYWRDcmVhdGVXaXRoUmVzdW1lRGF0YSgw
LCByZXN1bWVEYXRhLmdldCgpLCBwYXRoVVJMLmdldCgpLCAmY2xpZW50KSk7CkBAIC0yODgsOSAr
Mjg4LDggQEAgSFJFU1VMVCBXZWJEb3dubG9hZDo6c2V0RGVzdGluYXRpb24oX0luXyBCU1RSIHBh
dGgsIEJPT0wgYWxsb3dPdmVyd3JpdGUpCiAgICAgbV9kZXN0aW5hdGlvbiA9IFN0cmluZyhwYXRo
LCBTeXNTdHJpbmdMZW4ocGF0aCkpOwogICAgIG1fYnVuZGxlUGF0aCA9IG1fZGVzdGluYXRpb24g
KyBEb3dubG9hZEJ1bmRsZTo6ZmlsZUV4dGVuc2lvbigpOwogCi0gICAgQ0ZVUkxSZWYgcGF0aFVS
TCA9IE1hcnNoYWxsaW5nSGVscGVyczo6UGF0aFN0cmluZ1RvRmlsZUNGVVJMUmVmKG1fYnVuZGxl
UGF0aCk7Ci0gICAgQ0ZVUkxEb3dubG9hZFNldERlc3RpbmF0aW9uKG1fZG93bmxvYWQuZ2V0KCks
IHBhdGhVUkwsICEhYWxsb3dPdmVyd3JpdGUpOwotICAgIENGUmVsZWFzZShwYXRoVVJMKTsKKyAg
ICBhdXRvIHBhdGhVUkwgPSBNYXJzaGFsbGluZ0hlbHBlcnM6OlBhdGhTdHJpbmdUb0ZpbGVDRlVS
TFJlZihtX2J1bmRsZVBhdGgpOworICAgIENGVVJMRG93bmxvYWRTZXREZXN0aW5hdGlvbihtX2Rv
d25sb2FkLmdldCgpLCBwYXRoVVJMLmdldCgpLCAhIWFsbG93T3ZlcndyaXRlKTsKIAogICAgIExP
RyhEb3dubG9hZCwgIldlYkRvd25sb2FkIC0gU2V0IGRlc3RpbmF0aW9uIHRvICVzIiwgbV9idW5k
bGVQYXRoLmFzY2lpKCkuZGF0YSgpKTsKIApAQCAtMzY4LDkgKzM2Nyw3IEBAIENGVVJMUmVxdWVz
dFJlZiBXZWJEb3dubG9hZDo6d2lsbFNlbmRSZXF1ZXN0KENGVVJMUmVxdWVzdFJlZiByZXF1ZXN0
LCBDRlVSTFJlc3BvCiAKICAgICBDT01QdHI8V2ViTXV0YWJsZVVSTFJlcXVlc3Q+IGZpbmFsV2Vi
UmVxdWVzdChBZG9wdENPTSwgV2ViTXV0YWJsZVVSTFJlcXVlc3Q6OmNyZWF0ZUluc3RhbmNlKGZp
bmFsUmVxdWVzdC5nZXQoKSkpOwogICAgIG1fcmVxdWVzdCA9IGZpbmFsV2ViUmVxdWVzdC5nZXQo
KTsKLSAgICBDRlVSTFJlcXVlc3RSZWYgcmVzdWx0ID0gZmluYWxXZWJSZXF1ZXN0LT5yZXNvdXJj
ZVJlcXVlc3QoKS5jZlVSTFJlcXVlc3QoVXBkYXRlSFRUUEJvZHkpOwotICAgIENGUmV0YWluKHJl
c3VsdCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4gcmV0YWluUHRyKGZpbmFsV2Vi
UmVxdWVzdC0+cmVzb3VyY2VSZXF1ZXN0KCkuY2ZVUkxSZXF1ZXN0KFVwZGF0ZUhUVFBCb2R5KSku
bGVha1JlZigpOwogfQogCiB2b2lkIFdlYkRvd25sb2FkOjpkaWRSZWNlaXZlQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UoQ0ZVUkxBdXRoQ2hhbGxlbmdlUmVmIGNoYWxsZW5nZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkhpc3RvcnkuY3BwIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViSGlzdG9yeS5jcHAKaW5kZXggNjFjMDI2YjdhZTAwZDgyOGIwMmRlYzNlYTNl
NGI0ZDc5MDg4YWExMS4uOWVmYWUyMjc5M2M3MGQwODYyOGNjOWNlY2U5MjNlYmM0YzI5N2RmNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSGlzdG9yeS5jcHAKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSGlzdG9yeS5jcHAKQEAgLTYxLDcgKzYxLDcgQEAg
c3RhdGljIENPTVB0cjxJUHJvcGVydHlCYWc+IGNyZWF0ZVVzZXJJbmZvRnJvbUFycmF5KEJTVFIg
bm90aWZpY2F0aW9uU3RyLCBJV2ViSGkKICAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlRGljdGlvbmFy
eVJlZj4gZGljdGlvbmFyeSA9IGFkb3B0Q0YoCiAgICAgICAgIENGRGljdGlvbmFyeUNyZWF0ZU11
dGFibGUoMCwgMCwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rp
b25hcnlWYWx1ZUNhbGxCYWNrcykpOwogCi0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBrZXkg
PSBhZG9wdENGKE1hcnNoYWxsaW5nSGVscGVyczo6QlNUUlRvQ0ZTdHJpbmdSZWYobm90aWZpY2F0
aW9uU3RyKSk7CisgICAgYXV0byBrZXkgPSBNYXJzaGFsbGluZ0hlbHBlcnM6OkJTVFJUb0NGU3Ry
aW5nUmVmKG5vdGlmaWNhdGlvblN0cik7CiAgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGljdGlv
bmFyeS5nZXQoKSwga2V5LmdldCgpLCBhcnJheUl0ZW0uZ2V0KCkpOwogCiAgICAgQ09NUHRyPENG
RGljdGlvbmFyeVByb3BlcnR5QmFnPiByZXN1bHQgPSBDRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZzo6
Y3JlYXRlSW5zdGFuY2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YkxvY2FsaXphYmxlU3RyaW5ncy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJMb2Nh
bGl6YWJsZVN0cmluZ3MuY3BwCmluZGV4IGZjODBmZTk2ZjI5NDI2ZGZlMTVmZWRkNTJiNTRjNTQ0
ZWQ1ZGUwZmEuLmU1OGQxYjk2ZTYwNzU3NTMxMzYyMDQ1OGMyMTExODhhNWU5OWUzMjkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkxvY2FsaXphYmxlU3RyaW5ncy5jcHAK
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTG9jYWxpemFibGVTdHJpbmdzLmNwcApA
QCAtOTUsMTkgKzk1LDE5IEBAIExvY2FsaXplZFN0cmluZzo6b3BlcmF0b3IgTFBDVFNUUigpIGNv
bnN0CiAgICAgcmV0dXJuIG1fc3RyaW5nLndpZGVDaGFyYWN0ZXJzKCkuZGF0YSgpOwogfQogCi1z
dGF0aWMgQ0ZCdW5kbGVSZWYgY3JlYXRlV2ViS2l0QnVuZGxlKCkKK3N0YXRpYyB2b2lkIGNyZWF0
ZVdlYktpdEJ1bmRsZSgpCiB7Ci0gICAgc3RhdGljIENGQnVuZGxlUmVmIGJ1bmRsZTsKKyAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPENGQnVuZGxlUmVmPj4gYnVuZGxlOwogICAg
IHN0YXRpYyBib29sIGluaXRpYWxpemVkOwogCiAgICAgaWYgKGluaXRpYWxpemVkKQotICAgICAg
ICByZXR1cm4gYnVuZGxlOworICAgICAgICByZXR1cm47CiAgICAgaW5pdGlhbGl6ZWQgPSB0cnVl
OwogCiAgICAgV0NIQVIgcGF0aFN0cltNQVhfUEFUSF07CiAgICAgRFdPUkQgbGVuZ3RoID0gOjpH
ZXRNb2R1bGVGaWxlTmFtZVcoZ0luc3RhbmNlLCBwYXRoU3RyLCBNQVhfUEFUSCk7CiAgICAgaWYg
KCFsZW5ndGggfHwgKGxlbmd0aCA9PSBNQVhfUEFUSCAmJiBHZXRMYXN0RXJyb3IoKSA9PSBFUlJP
Ul9JTlNVRkZJQ0lFTlRfQlVGRkVSKSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVy
biBudWxscHRyOwogCiAgICAgYm9vbCBmb3VuZCA9IGZhbHNlOwogICAgIGZvciAoaW50IGkgPSBs
ZW5ndGggLSAxOyBpID49IDA7IGktLSkgewpAQCAtMTIyLDIyICsxMjIsMjAgQEAgc3RhdGljIENG
QnVuZGxlUmVmIGNyZWF0ZVdlYktpdEJ1bmRsZSgpCiAgICAgICAgIH0KICAgICB9CiAgICAgaWYg
KCFmb3VuZCkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAg
ICAgaWYgKHdjc2NhdF9zKHBhdGhTdHIsIE1BWF9QQVRILCBMIlxcV2ViS2l0LnJlc291cmNlcyIp
KQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBTdHJp
bmcgYnVuZGxlUGF0aFN0cmluZyhwYXRoU3RyKTsKICAgICBpZiAoIWJ1bmRsZVBhdGhTdHJpbmcp
Ci0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIENGVVJM
UmVmIGJ1bmRsZVVSTFJlZiA9IENGVVJMQ3JlYXRlV2l0aEZpbGVTeXN0ZW1QYXRoKDAsIGJ1bmRs
ZVBhdGhTdHJpbmcuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwga0NGVVJMV2luZG93c1BhdGhTdHls
ZSwgdHJ1ZSk7CisgICAgYXV0byBidW5kbGVVUkxSZWYgPSBhZG9wdENGKENGVVJMQ3JlYXRlV2l0
aEZpbGVTeXN0ZW1QYXRoKDAsIGJ1bmRsZVBhdGhTdHJpbmcuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQo
KSwga0NGVVJMV2luZG93c1BhdGhTdHlsZSwgdHJ1ZSkpOwogICAgIGlmICghYnVuZGxlVVJMUmVm
KQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBidW5k
bGUgPSBDRkJ1bmRsZUNyZWF0ZSgwLCBidW5kbGVVUkxSZWYpOwotICAgIENGUmVsZWFzZShidW5k
bGVVUkxSZWYpOwotICAgIHJldHVybiBidW5kbGU7CisgICAgYnVuZGxlLmdldCgpID0gYWRvcHRD
RihDRkJ1bmRsZUNyZWF0ZSgwLCBidW5kbGVVUkxSZWYuZ2V0KCkpKTsKIH0KIAogc3RhdGljIENG
QnVuZGxlUmVmIGNmQnVuZGxlRm9yU3RyaW5nc0J1bmRsZShXZWJMb2NhbGl6YWJsZVN0cmluZ3NC
dW5kbGUqIHN0cmluZ3NCdW5kbGUpCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29s
cy9DaGFuZ2VMb2cKaW5kZXggZmFmMzJlNzdmODFlOGViZWI0NTA3NmE1NDgwNmNjMDRjYWQ5MjU2
Mi4uYWI4MGJjZTQyYjFjNGMyMjA0YTJhYTY3NWU3YjBhNDlkMjEwYTc4NiAxMDA2NDQKLS0tIGEv
VG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0IEBACisy
MDIxLTAzLTA0ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgUmVk
dWNlIHVzZSBvZiBDRlJldGFpbigpIC8gQ0ZSZWxlYXNlKCkgLyBDRkF1dG9SZWxlYXNlKCkgaW4g
V2ViS2l0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MjI3NjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBS
ZWR1Y2UgdXNlIG9mIENGUmV0YWluKCkgLyBDRlJlbGVhc2UoKSAvIENGQXV0b1JlbGVhc2UoKSBp
biBXZWJLaXQgYnkgdXNpbmcgUmV0YWluUHRyPD4uCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJl
ZS9UZXN0TmV0c2NhcGVQbHVnSW4vUGx1Z2luT2JqZWN0TWFjLm1tOgorICAgICAgICAoY3JlYXRl
Q29yZUFuaW1hdGlvbkxheWVyKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvQWNjZXNz
aWJpbGl0eUNvbW1vbk1hYy5tbToKKyAgICAgICAgKCtbTlNTdHJpbmcgc3RyaW5nV2l0aEpTU3Ry
aW5nUmVmOl0pOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5t
bToKKyAgICAgICAgKGFjdGl2YXRlRm9udElPUyk6CisgICAgICAgIChkdW1wUmVuZGVyVHJlZSk6
CisgICAgICAgIChpbnZhbGlkYXRlQW55UHJldmlvdXNXYWl0VG9EdW1wV2F0Y2hkb2cpOgorICAg
ICAgICAoc2V0V2FpdFRvRHVtcFdhdGNoZG9nKToKKyAgICAgICAgKGR1bXApOgorICAgICAgICAo
cnVuVGVzdCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlTWFj
Lmg6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIu
bW06CisgICAgICAgICgtW0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIgbW91c2VTY3JvbGxCeVg6YW5k
WTpjb250aW51b3VzbHk6XSk6CisgICAgICAgICgtW0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIgbW91
c2VTY3JvbGxCeVg6YW5kWTp3aXRoV2hlZWw6YW5kTW9tZW50dW1QaGFzZXM6XSk6CisgICAgICAg
ICogRHVtcFJlbmRlclRyZWUvbWFjL1BpeGVsRHVtcFN1cHBvcnRNYWMubW06CisgICAgICAgICh0
YWtlV2luZG93U25hcHNob3QpOgorICAgICAgICAoY3JlYXRlQml0bWFwQ29udGV4dEZyb21XZWJW
aWV3KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvUmVzb3VyY2VMb2FkRGVsZWdhdGUu
bW06CisgICAgICAgICgtW1Jlc291cmNlTG9hZERlbGVnYXRlIHdlYlZpZXc6cmVzb3VyY2U6d2ls
bFNlbmRSZXF1ZXN0OnJlZGlyZWN0UmVzcG9uc2U6ZnJvbURhdGFTb3VyY2U6XSk6CisgICAgICAg
ICogRHVtcFJlbmRlclRyZWUvbWFjL1Rlc3RSdW5uZXJNYWMubW06CisgICAgICAgIChUZXN0UnVu
bmVyOjphZGREaXNhbGxvd2VkVVJMKToKKyAgICAgICAgKFRlc3RSdW5uZXI6OnNldFdhaXRUb0R1
bXApOgorICAgICAgICAqIEZvbnRXaXRoRmVhdHVyZXMvRm9udFdpdGhGZWF0dXJlcy9tYWluLmNw
cDoKKyAgICAgICAgKGNvbnN0cnVjdEZvbnRXaXRoVHJ1ZVR5cGVGZWF0dXJlKToKKyAgICAgICAg
KGNvbnN0cnVjdEZvbnRXaXRoT3BlblR5cGVGZWF0dXJlKToKKyAgICAgICAgKGRyYXdUZXh0KToK
KyAgICAgICAgKG1haW4pOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcDoKKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGVQ
YWdlOjpkdW1wRE9NQXNXZWJBcmNoaXZlKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL2lvcy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50SU9TLm1tOgorICAgICAgICAo
K1tOU1N0cmluZyBzdHJpbmdXaXRoSlNTdHJpbmdSZWY6XSk6CisgICAgICAgICogV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvQWNjZXNzaWJpbGl0eUNvbW1vbk1hYy5tbToKKyAg
ICAgICAgKCtbTlNTdHJpbmcgc3RyaW5nV2l0aEpTU3RyaW5nUmVmOl0pOgorICAgICAgICAqIFdl
YktpdFRlc3RSdW5uZXIvaW9zL0hJREV2ZW50R2VuZXJhdG9yLm1tOgorICAgICAgICAoLVtISURF
dmVudEdlbmVyYXRvciBfY3JlYXRlSU9ISURFdmVudFdpdGhJbmZvOl0pOgorICAgICAgICAqIFdl
YktpdFRlc3RSdW5uZXIvbWFjL0V2ZW50U2VuZGVyUHJveHkubW06CisgICAgICAgICgtW0V2ZW50
U2VuZGVyU3ludGhldGljRXZlbnQgaW5pdFByZXNzdXJlRXZlbnRBdExvY2F0aW9uOmdsb2JhbExv
Y2F0aW9uOnN0YWdlOnByZXNzdXJlOnN0YWdlVHJhbnNpdGlvbjpwaGFzZTp0aW1lOmV2ZW50TnVt
YmVyOndpbmRvdzpdKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL21hYy9VSVNjcmlwdENv
bnRyb2xsZXJNYWMubW06CisgICAgICAgIChXVFI6OmNmU3RyaW5nKToKKyAgICAgICAgKFdUUjo6
VUlTY3JpcHRDb250cm9sbGVyTWFjOjpyZXBsYWNlVGV4dEF0UmFuZ2UpOgorCiAyMDIxLTAzLTA0
ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgW21hY09TXVtXSzJd
IENoYW5naW5nIHRoZSBzeXN0ZW0gbGFuZ3VhZ2UgZG9lcyBub3QgdXBkYXRlIG5hdmlnYXRvci5s
YW5ndWFnZQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdE5ldHNjYXBlUGx1
Z0luL1BsdWdpbk9iamVjdE1hYy5tbSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3ROZXRzY2Fw
ZVBsdWdJbi9QbHVnaW5PYmplY3RNYWMubW0KaW5kZXggNTlmNjU3ZmQzZTRjNTk5MzAzYzdmNDA0
MDQxMjJjYjQ0Yjc5Y2YxNC4uMmYyNmQ4NGNmNmY0ODdiNGI5NjdlM2I4ZmYyNDE2MDJmN2JlMGNj
NCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdE5ldHNjYXBlUGx1Z0luL1Bs
dWdpbk9iamVjdE1hYy5tbQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0TmV0c2NhcGVQ
bHVnSW4vUGx1Z2luT2JqZWN0TWFjLm1tCkBAIC02NCwyMyArNjQsMTUgQEAgQ0ZUeXBlUmVmIGNy
ZWF0ZUNvcmVBbmltYXRpb25MYXllcigpCiAgICAgLy8gVHVybiBvZmYgZGVmYXVsdCBhbmltYXRp
b25zLgogICAgIFtjYUxheWVyIHNldFN0eWxlOkB7IEAiYWN0aW9ucyI6IGFjdGlvbnMgfV07CiAg
ICAgW2NhTGF5ZXIgc2V0TmVlZHNEaXNwbGF5T25Cb3VuZHNDaGFuZ2U6WUVTXTsKLQogICAgIFtj
YUxheWVyIHNldEJvdW5kczpDR1JlY3RNYWtlKDAsIDAsIDIwMCwgMTAwKV07CiAgICAgW2NhTGF5
ZXIgc2V0QW5jaG9yUG9pbnQ6Q0dQb2ludFplcm9dOwotICAgIAotICAgIENHQ29sb3JSZWYgY29s
b3IgPSBDR0NvbG9yQ3JlYXRlR2VuZXJpY1JHQigwLjUsIDAuNSwgMSwgMSk7Ci0gICAgW2NhTGF5
ZXIgc2V0QmFja2dyb3VuZENvbG9yOmNvbG9yXTsKLSAgICBDR0NvbG9yUmVsZWFzZShjb2xvcik7
Ci0gICAgCisgICAgW2NhTGF5ZXIgc2V0QmFja2dyb3VuZENvbG9yOmFkb3B0Q0YoQ0dDb2xvckNy
ZWF0ZUdlbmVyaWNSR0IoMC41LCAwLjUsIDEsIDEpKS5nZXQoKV07CiAgICAgW2NhTGF5ZXIgc2V0
TGF5b3V0TWFuYWdlcjpbQ0FDb25zdHJhaW50TGF5b3V0TWFuYWdlciBsYXlvdXRNYW5hZ2VyXV07
CiAKICAgICBDQUxheWVyICpzdWJsYXllciA9IFtDQUxheWVyIGxheWVyXTsKICAgICAvLyBUdXJu
IG9mZiBkZWZhdWx0IGFuaW1hdGlvbnMuCiAgICAgW3N1YmxheWVyIHNldFN0eWxlOkB7IEAiYWN0
aW9ucyI6IGFjdGlvbnMgfV07Ci0KLSAgICBjb2xvciA9IENHQ29sb3JDcmVhdGVHZW5lcmljUkdC
KDAsIDAsIDAsIDAuNzUpOwotICAgIFtzdWJsYXllciBzZXRCYWNrZ3JvdW5kQ29sb3I6Y29sb3Jd
OwotICAgIENHQ29sb3JSZWxlYXNlKGNvbG9yKTsKKyAgICBbc3VibGF5ZXIgc2V0QmFja2dyb3Vu
ZENvbG9yOmFkb3B0Q0YoQ0dDb2xvckNyZWF0ZUdlbmVyaWNSR0IoMCwgMCwgMCwgMC43NSkpLmdl
dCgpXTsKICAgICBbc3VibGF5ZXIgc2V0Qm91bmRzOkNHUmVjdE1ha2UoMCwgMCwgMTgwLCAyMCld
OwogCiAgICAgW3N1YmxheWVyIGFkZENvbnN0cmFpbnQ6W0NBQ29uc3RyYWludCBjb25zdHJhaW50
V2l0aEF0dHJpYnV0ZTprQ0FDb25zdHJhaW50TWluWQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJl
bmRlclRyZWUvbWFjL0FjY2Vzc2liaWxpdHlDb21tb25NYWMubW0gYi9Ub29scy9EdW1wUmVuZGVy
VHJlZS9tYWMvQWNjZXNzaWJpbGl0eUNvbW1vbk1hYy5tbQppbmRleCAwMzA2N2UyZDA4OTIxNGZi
ZTg0NjY3YjI4MjRmOGNlMzE0ODBmOTg3Li41ODhjOGIxOWJmNDA0YzIyMTEwMzk5Y2M0YThjMjkw
ZmIwNmRiMjdiIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvQWNjZXNzaWJp
bGl0eUNvbW1vbk1hYy5tbQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvQWNjZXNzaWJp
bGl0eUNvbW1vbk1hYy5tbQpAQCAtNDEsNyArNDEsNyBAQCArIChOU1N0cmluZyAqKXN0cmluZ1dp
dGhKU1N0cmluZ1JlZjooSlNTdHJpbmdSZWYpanNTdHJpbmdSZWYKICAgICBpZiAoIWpzU3RyaW5n
UmVmKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgcmV0dXJuIENGQnJpZGdpbmdSZWxlYXNl
KEpTU3RyaW5nQ29weUNGU3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIGpzU3RyaW5nUmVmKSk7
CisgICAgcmV0dXJuIGFkb3B0Q0YoSlNTdHJpbmdDb3B5Q0ZTdHJpbmcoa0NGQWxsb2NhdG9yRGVm
YXVsdCwganNTdHJpbmdSZWYpKS5icmlkZ2luZ0F1dG9yZWxlYXNlKCk7CiB9CiAKIC0gKEpTUmV0
YWluUHRyPEpTU3RyaW5nUmVmPiljcmVhdGVKU1N0cmluZ1JlZgpkaWZmIC0tZ2l0IGEvVG9vbHMv
RHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tIGIvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tCmluZGV4IDE0YmQxZTgwZDZlZjA5MzI4ODk5MzhjYmQ0
NWJhNDMxYTdmZDU2MDcuLjczNTEwMzk2YTU4MGM5ZWJiYmM2NGE3ZmUxYmVjMjk4MmM5ZjdjY2Ug
MTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQor
KysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0KQEAgLTIwOCw4
ICsyMDgsOCBAQCBXZWJGcmFtZSAqdG9wTG9hZGluZ0ZyYW1lID0gbmlsOyAvLyAhbmlsIGlmZiBh
IGxvYWQgaXMgaW4gcHJvZ3Jlc3MKIFJldGFpblB0cjxOU1dpbmRvdz4gbWFpbldpbmRvdzsKICNl
bmRpZgogCi1DRk11dGFibGVTZXRSZWYgZGlzYWxsb3dlZFVSTHM9IG51bGxwdHI7Ci1zdGF0aWMg
Q0ZSdW5Mb29wVGltZXJSZWYgd2FpdFRvRHVtcFdhdGNoZG9nOworUmV0YWluUHRyPENGTXV0YWJs
ZVNldFJlZj4gZGlzYWxsb3dlZFVSTHMgPSBudWxscHRyOworc3RhdGljIFJldGFpblB0cjxDRlJ1
bkxvb3BUaW1lclJlZj4gd2FpdFRvRHVtcFdhdGNoZG9nOwogCiBzdGF0aWMgUmV0YWluUHRyPFdl
YlZpZXc+JiBnbG9iYWxXZWJWaWV3KCkKIHsKQEAgLTU1MCwyNiArNTUwLDI0IEBAIHN0YXRpYyB2
b2lkIGFkanVzdEZvbnRzKCkKIAogc3RhdGljIHZvaWQgYWN0aXZhdGVGb250SU9TKGNvbnN0IHVp
bnQ4X3QqIGZvbnREYXRhLCB1bnNpZ25lZCBsb25nIGxlbmd0aCwgc3RkOjpzdHJpbmcgc2VjdGlv
bk5hbWUpCiB7Ci0gICAgQ0dEYXRhUHJvdmlkZXJSZWYgZGF0YSA9IENHRGF0YVByb3ZpZGVyQ3Jl
YXRlV2l0aERhdGEobnVsbHB0ciwgZm9udERhdGEsIGxlbmd0aCwgbnVsbHB0cik7CisgICAgYXV0
byBkYXRhID0gYWRvcHRDRihDR0RhdGFQcm92aWRlckNyZWF0ZVdpdGhEYXRhKG51bGxwdHIsIGZv
bnREYXRhLCBsZW5ndGgsIG51bGxwdHIpKTsKICAgICBpZiAoIWRhdGEpIHsKICAgICAgICAgZnBy
aW50ZihzdGRlcnIsICJGYWlsZWQgdG8gY3JlYXRlIENHRGF0YVByb3ZpZGVyUmVmIGZvciB0aGUg
JXMgZm9udC5cbiIsIHNlY3Rpb25OYW1lLmNfc3RyKCkpOwogICAgICAgICBleGl0KDEpOwogICAg
IH0KIAotICAgIENHRm9udFJlZiBjZ0ZvbnQgPSBDR0ZvbnRDcmVhdGVXaXRoRGF0YVByb3ZpZGVy
KGRhdGEpOwotICAgIENHRGF0YVByb3ZpZGVyUmVsZWFzZShkYXRhKTsKKyAgICBhdXRvIGNnRm9u
dCA9IGFkb3B0Q0YoQ0dGb250Q3JlYXRlV2l0aERhdGFQcm92aWRlcihkYXRhLmdldCgpKSk7CiAg
ICAgaWYgKCFjZ0ZvbnQpIHsKICAgICAgICAgZnByaW50ZihzdGRlcnIsICJGYWlsZWQgdG8gY3Jl
YXRlIENHRm9udFJlZiBmb3IgdGhlICVzIGZvbnQuXG4iLCBzZWN0aW9uTmFtZS5jX3N0cigpKTsK
ICAgICAgICAgZXhpdCgxKTsKICAgICB9CiAKICAgICBDRkVycm9yUmVmIGVycm9yID0gbnVsbHB0
cjsKLSAgICBDVEZvbnRNYW5hZ2VyUmVnaXN0ZXJHcmFwaGljc0ZvbnQoY2dGb250LCAmZXJyb3Ip
OworICAgIENURm9udE1hbmFnZXJSZWdpc3RlckdyYXBoaWNzRm9udChjZ0ZvbnQuZ2V0KCksICZl
cnJvcik7CiAgICAgaWYgKGVycm9yKSB7CiAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiRmFpbGVk
IHRvIGFkZCBDR0ZvbnQgdG8gQ29yZVRleHQgZm9yIHRoZSAlcyBmb250OiAlcy5cbiIsIHNlY3Rp
b25OYW1lLmNfc3RyKCksIENGU3RyaW5nR2V0Q1N0cmluZ1B0cihDRkVycm9yQ29weURlc2NyaXB0
aW9uKGVycm9yKSwga0NGU3RyaW5nRW5jb2RpbmdVVEY4KSk7CiAgICAgICAgIGV4aXQoMSk7CiAg
ICAgfQotICAgIENHRm9udFJlbGVhc2UoY2dGb250KTsKIH0KIAogc3RhdGljIHZvaWQgYWN0aXZh
dGVGb250c0lPUygpCkBAIC0xMjY1LDEwICsxMjYzLDcgQEAgdm9pZCBkdW1wUmVuZGVyVHJlZShp
bnQgYXJnYywgY29uc3QgY2hhciAqYXJndltdKQogI2VuZGlmCiAKICAgICAvLyBGSVhNRTogVGhp
cyBzaG91bGQgYmUgbW92ZWQgb250byBUZXN0UnVubmVyIGFuZCBtYWRlIGludG8gYSBIYXNoU2V0
Ci0gICAgaWYgKGRpc2FsbG93ZWRVUkxzKSB7Ci0gICAgICAgIENGUmVsZWFzZShkaXNhbGxvd2Vk
VVJMcyk7Ci0gICAgICAgIGRpc2FsbG93ZWRVUkxzID0gMDsKLSAgICB9CisgICAgZGlzYWxsb3dl
ZFVSTHMgPSBudWxscHRyOwogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICB0ZWFyRG93
bklPU0xheW91dFRlc3RDb21tdW5pY2F0aW9uKCk7CkBAIC0xNjE1LDE4ICsxNjEwLDE3IEBAIHN0
YXRpYyB2b2lkIGR1bXBCYWNrRm9yd2FyZExpc3RGb3JBbGxXaW5kb3dzKCkKIHN0YXRpYyB2b2lk
IGludmFsaWRhdGVBbnlQcmV2aW91c1dhaXRUb0R1bXBXYXRjaGRvZygpCiB7CiAgICAgaWYgKHdh
aXRUb0R1bXBXYXRjaGRvZykgewotICAgICAgICBDRlJ1bkxvb3BUaW1lckludmFsaWRhdGUod2Fp
dFRvRHVtcFdhdGNoZG9nKTsKLSAgICAgICAgQ0ZSZWxlYXNlKHdhaXRUb0R1bXBXYXRjaGRvZyk7
Ci0gICAgICAgIHdhaXRUb0R1bXBXYXRjaGRvZyA9IE5VTEw7CisgICAgICAgIENGUnVuTG9vcFRp
bWVySW52YWxpZGF0ZSh3YWl0VG9EdW1wV2F0Y2hkb2cuZ2V0KCkpOworICAgICAgICB3YWl0VG9E
dW1wV2F0Y2hkb2cgPSBudWxscHRyOwogICAgIH0KIH0KIAotdm9pZCBzZXRXYWl0VG9EdW1wV2F0
Y2hkb2coQ0ZSdW5Mb29wVGltZXJSZWYgdGltZXIpCit2b2lkIHNldFdhaXRUb0R1bXBXYXRjaGRv
ZyhSZXRhaW5QdHI8Q0ZSdW5Mb29wVGltZXJSZWY+JiYgdGltZXIpCiB7CiAgICAgQVNTRVJUKHRp
bWVyKTsKICAgICBBU1NFUlQoc2hvdWxkU2V0V2FpdFRvRHVtcFdhdGNoZG9nKCkpOwotICAgIHdh
aXRUb0R1bXBXYXRjaGRvZyA9IHRpbWVyOwotICAgIENGUnVuTG9vcEFkZFRpbWVyKENGUnVuTG9v
cEdldEN1cnJlbnQoKSwgd2FpdFRvRHVtcFdhdGNoZG9nLCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMp
OworICAgIHdhaXRUb0R1bXBXYXRjaGRvZyA9IFdURk1vdmUodGltZXIpOworICAgIENGUnVuTG9v
cEFkZFRpbWVyKENGUnVuTG9vcEdldEN1cnJlbnQoKSwgd2FpdFRvRHVtcFdhdGNoZG9nLmdldCgp
LCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMpOwogfQogCiBib29sIHNob3VsZFNldFdhaXRUb0R1bXBX
YXRjaGRvZygpCkBAIC0xNjgzLDExICsxNjc3LDExIEBAIHZvaWQgZHVtcCgpCiAgICAgICAgICAg
ICByZXN1bHRNaW1lVHlwZSA9IEAiYXBwbGljYXRpb24vcGRmIjsKICAgICAgICAgfSBlbHNlIGlm
IChnVGVzdFJ1bm5lci0+ZHVtcERPTUFzV2ViQXJjaGl2ZSgpKSB7CiAgICAgICAgICAgICBXZWJB
cmNoaXZlICp3ZWJBcmNoaXZlID0gW1ttYWluRnJhbWUgRE9NRG9jdW1lbnRdIHdlYkFyY2hpdmVd
OwotICAgICAgICAgICAgcmVzdWx0U3RyaW5nID0gQ0ZCcmlkZ2luZ1JlbGVhc2UoV2ViQ29yZVRl
c3RTdXBwb3J0OjpjcmVhdGVYTUxTdHJpbmdGcm9tV2ViQXJjaGl2ZURhdGEoKF9fYnJpZGdlIENG
RGF0YVJlZilbd2ViQXJjaGl2ZSBkYXRhXSkpOworICAgICAgICAgICAgcmVzdWx0U3RyaW5nID0g
V2ViQ29yZVRlc3RTdXBwb3J0OjpjcmVhdGVYTUxTdHJpbmdGcm9tV2ViQXJjaGl2ZURhdGEoKF9f
YnJpZGdlIENGRGF0YVJlZilbd2ViQXJjaGl2ZSBkYXRhXSk7CiAgICAgICAgICAgICByZXN1bHRN
aW1lVHlwZSA9IEAiYXBwbGljYXRpb24veC13ZWJhcmNoaXZlIjsKICAgICAgICAgfSBlbHNlIGlm
IChnVGVzdFJ1bm5lci0+ZHVtcFNvdXJjZUFzV2ViQXJjaGl2ZSgpKSB7CiAgICAgICAgICAgICBX
ZWJBcmNoaXZlICp3ZWJBcmNoaXZlID0gW1ttYWluRnJhbWUgZGF0YVNvdXJjZV0gd2ViQXJjaGl2
ZV07Ci0gICAgICAgICAgICByZXN1bHRTdHJpbmcgPSBDRkJyaWRnaW5nUmVsZWFzZShXZWJDb3Jl
VGVzdFN1cHBvcnQ6OmNyZWF0ZVhNTFN0cmluZ0Zyb21XZWJBcmNoaXZlRGF0YSgoX19icmlkZ2Ug
Q0ZEYXRhUmVmKVt3ZWJBcmNoaXZlIGRhdGFdKSk7CisgICAgICAgICAgICByZXN1bHRTdHJpbmcg
PSBXZWJDb3JlVGVzdFN1cHBvcnQ6OmNyZWF0ZVhNTFN0cmluZ0Zyb21XZWJBcmNoaXZlRGF0YSgo
X19icmlkZ2UgQ0ZEYXRhUmVmKVt3ZWJBcmNoaXZlIGRhdGFdKTsKICAgICAgICAgICAgIHJlc3Vs
dE1pbWVUeXBlID0gQCJhcHBsaWNhdGlvbi94LXdlYmFyY2hpdmUiOwogICAgICAgICB9IGVsc2Ug
aWYgKGdUZXN0UnVubmVyLT5pc1ByaW50aW5nKCkpCiAgICAgICAgICAgICByZXN1bHRTdHJpbmcg
PSBbbWFpbkZyYW1lIHJlbmRlclRyZWVBc0V4dGVybmFsUmVwcmVzZW50YXRpb25Gb3JQcmludGlu
Z107CkBAIC0xOTgyLDcgKzE5NzYsNyBAQCBzdGF0aWMgdm9pZCBydW5UZXN0KGNvbnN0IHN0ZDo6
c3RyaW5nJiBpbnB1dExpbmUpCiAgICAgZ1Rlc3RSdW5uZXItPmNsZWFyQWxsRGF0YWJhc2VzKCk7
CiAKICAgICBpZiAoZGlzYWxsb3dlZFVSTHMpCi0gICAgICAgIENGU2V0UmVtb3ZlQWxsVmFsdWVz
KGRpc2FsbG93ZWRVUkxzKTsKKyAgICAgICAgQ0ZTZXRSZW1vdmVBbGxWYWx1ZXMoZGlzYWxsb3dl
ZFVSTHMuZ2V0KCkpOwogICAgIGlmIChzaG91bGRMb2dGcmFtZUxvYWREZWxlZ2F0ZXMocGF0aE9y
VVJMLmNfc3RyKCkpKQogICAgICAgICBnVGVzdFJ1bm5lci0+c2V0RHVtcEZyYW1lTG9hZENhbGxi
YWNrcyh0cnVlKTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBS
ZW5kZXJUcmVlTWFjLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWVN
YWMuaAppbmRleCAzZDQxYjViNzRiYjcyOGE1MTJkZTk2N2Q5OTU4ZjA2ODgyZDg1NjNjLi40ZDlk
MWQyZDcwNzM3ZTBhMTlkM2M0NDkzZTc5ZmM0ODUzZDE2YjljIDEwMDY0NAotLS0gYS9Ub29scy9E
dW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWVNYWMuaAorKysgYi9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWVNYWMuaApAQCAtNDQsMTAgKzQ0LDEwIEBAIE9CSkNf
Q0xBU1MgV2ViU2NyaXB0V29ybGQ7CiBPQkpDX0NMQVNTIFdlYlZpZXc7CiAKIGV4dGVybiBDRk11
dGFibGVBcnJheVJlZiBvcGVuV2luZG93c1JlZjsKLWV4dGVybiBDRk11dGFibGVTZXRSZWYgZGlz
YWxsb3dlZFVSTHM7CiBleHRlcm4gV2ViRnJhbWUqIG1haW5GcmFtZTsKIGV4dGVybiBXZWJGcmFt
ZSogdG9wTG9hZGluZ0ZyYW1lOwogI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gUmV0YWluUHRy
PENGTXV0YWJsZVNldFJlZj4gZGlzYWxsb3dlZFVSTHM7CiBleHRlcm4gUmV0YWluUHRyPER1bXBS
ZW5kZXJUcmVlRHJhZ2dpbmdJbmZvPiBkcmFnZ2luZ0luZm87CiBleHRlcm4gUmV0YWluUHRyPE5h
dmlnYXRpb25Db250cm9sbGVyPiBnTmF2aWdhdGlvbkNvbnRyb2xsZXI7CiBleHRlcm4gUmV0YWlu
UHRyPFBvbGljeURlbGVnYXRlPiBwb2xpY3lEZWxlZ2F0ZTsKQEAgLTYwLDkgKzYwLDEwIEBAIGV4
dGVybiBSZXRhaW5QdHI8VUlXaW5kb3c+IG1haW5XaW5kb3c7CiBPQkpDX0NMQVNTIE5TV2luZG93
OwogZXh0ZXJuIFJldGFpblB0cjxOU1dpbmRvdz4gbWFpbldpbmRvdzsKICNlbmRpZgotI2VuZGlm
CiAKLXZvaWQgc2V0V2FpdFRvRHVtcFdhdGNoZG9nKENGUnVuTG9vcFRpbWVyUmVmKTsKK3ZvaWQg
c2V0V2FpdFRvRHVtcFdhdGNoZG9nKFJldGFpblB0cjxDRlJ1bkxvb3BUaW1lclJlZj4mJik7Cisj
ZW5kaWYgLy8gX19jcGx1c3BsdXMKKwogYm9vbCBzaG91bGRTZXRXYWl0VG9EdW1wV2F0Y2hkb2co
dm9pZCk7CiAKICNpZmRlZiBfX2NwbHVzcGx1cwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRl
clRyZWUvbWFjL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9tYWMvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5tbQppbmRleCAxNmE2MDUxYmI3ZmI2NGI5ZGYw
YWE5ZTM3MzIyYjg5YjAxMWQ3NTcwLi5iODc5NDJiM2M2YzkyNWY0MzU1ZjVlNTM3M2E1ZjZkZWVm
MGZmMDYxIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRXZlbnRTZW5kaW5n
Q29udHJvbGxlci5tbQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRXZlbnRTZW5kaW5n
Q29udHJvbGxlci5tbQpAQCAtODA5LDE2ICs4MDksMTUgQEAgLSAodm9pZCltb3VzZVNjcm9sbEJ5
WDooaW50KXggYW5kWTooaW50KXkgY29udGludW91c2x5OihCT09MKWNvbnRpbnVvdXNseQogewog
I2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIENHU2Nyb2xsRXZlbnRVbml0IHVuaXQgPSBj
b250aW51b3VzbHkgPyBrQ0dTY3JvbGxFdmVudFVuaXRQaXhlbCA6IGtDR1Njcm9sbEV2ZW50VW5p
dExpbmU7Ci0gICAgQ0dFdmVudFJlZiBjZ1Njcm9sbEV2ZW50ID0gQ0dFdmVudENyZWF0ZVNjcm9s
bFdoZWVsRXZlbnQyKE5VTEwsIHVuaXQsIDIsIHksIHgsIDApOworICAgIGF1dG8gY2dTY3JvbGxF
dmVudCA9IGFkb3B0Q0YoQ0dFdmVudENyZWF0ZVNjcm9sbFdoZWVsRXZlbnQyKE5VTEwsIHVuaXQs
IDIsIHksIHgsIDApKTsKICAgICAKICAgICAvLyBTZXQgdGhlIENHRXZlbnQgbG9jYXRpb24gaW4g
ZmxpcHBlZCBjb29yZHMgcmVsYXRpdmUgdG8gdGhlIGZpcnN0IHNjcmVlbiwgd2hpY2gKICAgICAv
LyBjb21wZW5zYXRlcyBmb3IgdGhlIGJlaGF2aW9yIG9mICtbTlNFdmVudCBldmVudFdpdGhDR0V2
ZW50Ol0gd2hlbiB0aGUgZXZlbnQgaGFzCiAgICAgLy8gbm8gYXNzb2NpYXRlZCB3aW5kb3cuIFNl
ZSA8cmRhcjovL3Byb2JsZW0vMTcxODA1OTE+LgogICAgIENHUG9pbnQgbGFzdEdsb2JhbE1vdXNl
UG9zaXRpb24gPSBDR1BvaW50TWFrZShsYXN0TW91c2VQb3NpdGlvbi54LCBbW1tOU1NjcmVlbiBz
Y3JlZW5zXSBvYmplY3RBdEluZGV4OjBdIGZyYW1lXS5zaXplLmhlaWdodCAtIGxhc3RNb3VzZVBv
c2l0aW9uLnkpOwotICAgIENHRXZlbnRTZXRMb2NhdGlvbihjZ1Njcm9sbEV2ZW50LCBsYXN0R2xv
YmFsTW91c2VQb3NpdGlvbik7CisgICAgQ0dFdmVudFNldExvY2F0aW9uKGNnU2Nyb2xsRXZlbnQu
Z2V0KCksIGxhc3RHbG9iYWxNb3VzZVBvc2l0aW9uKTsKIAotICAgIE5TRXZlbnQgKnNjcm9sbEV2
ZW50ID0gW05TRXZlbnQgZXZlbnRXaXRoQ0dFdmVudDpjZ1Njcm9sbEV2ZW50XTsKLSAgICBDRlJl
bGVhc2UoY2dTY3JvbGxFdmVudCk7CisgICAgTlNFdmVudCAqc2Nyb2xsRXZlbnQgPSBbTlNFdmVu
dCBldmVudFdpdGhDR0V2ZW50OmNnU2Nyb2xsRXZlbnQuZ2V0KCldOwogCiAgICAgTlNWaWV3ICpz
dWJWaWV3ID0gW1ttYWluRnJhbWUgd2ViVmlld10gaGl0VGVzdDpbc2Nyb2xsRXZlbnQgbG9jYXRp
b25JbldpbmRvd11dOwogICAgIGlmIChzdWJWaWV3KSB7CkBAIC04NzUsMTkgKzg3NCwxOCBAQCAt
ICh2b2lkKW1vdXNlU2Nyb2xsQnlYOihpbnQpeCBhbmRZOihpbnQpeSB3aXRoV2hlZWw6KE5TU3Ry
aW5nKilwaGFzZU5hbWUgYW5kTW9tZQogICAgIGlmIChtb21lbnR1bSA9PSBrQ0dNb21lbnR1bVNj
cm9sbFBoYXNlRW5kKQogICAgICAgICBfc2VudE1vbWVudHVtUGhhc2VFbmQgPSBZRVM7CiAKLSAg
ICBDR0V2ZW50UmVmIGNnU2Nyb2xsRXZlbnQgPSBDR0V2ZW50Q3JlYXRlU2Nyb2xsV2hlZWxFdmVu
dDIoTlVMTCwga0NHU2Nyb2xsRXZlbnRVbml0TGluZSwgMiwgeSwgeCwgMCk7CisgICAgYXV0byBj
Z1Njcm9sbEV2ZW50ID0gYWRvcHRDRihDR0V2ZW50Q3JlYXRlU2Nyb2xsV2hlZWxFdmVudDIoTlVM
TCwga0NHU2Nyb2xsRXZlbnRVbml0TGluZSwgMiwgeSwgeCwgMCkpOwogCiAgICAgLy8gU2V0IHRo
ZSBDR0V2ZW50IGxvY2F0aW9uIGluIGZsaXBwZWQgY29vcmRzIHJlbGF0aXZlIHRvIHRoZSBmaXJz
dCBzY3JlZW4sIHdoaWNoCiAgICAgLy8gY29tcGVuc2F0ZXMgZm9yIHRoZSBiZWhhdmlvciBvZiAr
W05TRXZlbnQgZXZlbnRXaXRoQ0dFdmVudDpdIHdoZW4gdGhlIGV2ZW50IGhhcwogICAgIC8vIG5v
IGFzc29jaWF0ZWQgd2luZG93LiBTZWUgPHJkYXI6Ly9wcm9ibGVtLzE3MTgwNTkxPi4KICAgICBD
R1BvaW50IGxhc3RHbG9iYWxNb3VzZVBvc2l0aW9uID0gQ0dQb2ludE1ha2UobGFzdE1vdXNlUG9z
aXRpb24ueCwgW1tbTlNTY3JlZW4gc2NyZWVuc10gb2JqZWN0QXRJbmRleDowXSBmcmFtZV0uc2l6
ZS5oZWlnaHQgLSBsYXN0TW91c2VQb3NpdGlvbi55KTsKLSAgICBDR0V2ZW50U2V0TG9jYXRpb24o
Y2dTY3JvbGxFdmVudCwgbGFzdEdsb2JhbE1vdXNlUG9zaXRpb24pOwotICAgIENHRXZlbnRTZXRJ
bnRlZ2VyVmFsdWVGaWVsZChjZ1Njcm9sbEV2ZW50LCBrQ0dTY3JvbGxXaGVlbEV2ZW50SXNDb250
aW51b3VzLCAxKTsKLSAgICBDR0V2ZW50U2V0SW50ZWdlclZhbHVlRmllbGQoY2dTY3JvbGxFdmVu
dCwga0NHU2Nyb2xsV2hlZWxFdmVudFNjcm9sbFBoYXNlLCBwaGFzZSk7Ci0gICAgQ0dFdmVudFNl
dEludGVnZXJWYWx1ZUZpZWxkKGNnU2Nyb2xsRXZlbnQsIGtDR1Njcm9sbFdoZWVsRXZlbnRNb21l
bnR1bVBoYXNlLCBtb21lbnR1bSk7CisgICAgQ0dFdmVudFNldExvY2F0aW9uKGNnU2Nyb2xsRXZl
bnQuZ2V0KCksIGxhc3RHbG9iYWxNb3VzZVBvc2l0aW9uKTsKKyAgICBDR0V2ZW50U2V0SW50ZWdl
clZhbHVlRmllbGQoY2dTY3JvbGxFdmVudC5nZXQoKSwga0NHU2Nyb2xsV2hlZWxFdmVudElzQ29u
dGludW91cywgMSk7CisgICAgQ0dFdmVudFNldEludGVnZXJWYWx1ZUZpZWxkKGNnU2Nyb2xsRXZl
bnQuZ2V0KCksIGtDR1Njcm9sbFdoZWVsRXZlbnRTY3JvbGxQaGFzZSwgcGhhc2UpOworICAgIENH
RXZlbnRTZXRJbnRlZ2VyVmFsdWVGaWVsZChjZ1Njcm9sbEV2ZW50LmdldCgpLCBrQ0dTY3JvbGxX
aGVlbEV2ZW50TW9tZW50dW1QaGFzZSwgbW9tZW50dW0pOwogICAgIAotICAgIE5TRXZlbnQqIHNj
cm9sbEV2ZW50ID0gW05TRXZlbnQgZXZlbnRXaXRoQ0dFdmVudDpjZ1Njcm9sbEV2ZW50XTsKLSAg
ICBDRlJlbGVhc2UoY2dTY3JvbGxFdmVudCk7CisgICAgTlNFdmVudCogc2Nyb2xsRXZlbnQgPSBb
TlNFdmVudCBldmVudFdpdGhDR0V2ZW50OmNnU2Nyb2xsRXZlbnQuZ2V0KCldOwogCiAgICAgaWYg
KE5TVmlldyogdGFyZ2V0VmlldyA9IFtbbWFpbkZyYW1lIHdlYlZpZXddIGhpdFRlc3Q6W3Njcm9s
bEV2ZW50IGxvY2F0aW9uSW5XaW5kb3ddXSkgewogICAgICAgICBbTlNBcHAgX3NldEN1cnJlbnRF
dmVudDpzY3JvbGxFdmVudF07CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMv
UGl4ZWxEdW1wU3VwcG9ydE1hYy5tbSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9QaXhlbER1
bXBTdXBwb3J0TWFjLm1tCmluZGV4IGFjMzI4MWE0ZGYzZTAyMzU2NzE4ODA3ZjBhZDc4MmJmMWQ3
NDRiYjcuLjRhMjZhYTUzMTY1MDYyYzBiODAyYjgwYzM1NTlhNmZhZGUxMGQ0ZWYgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9QaXhlbER1bXBTdXBwb3J0TWFjLm1tCisrKyBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9QaXhlbER1bXBTdXBwb3J0TWFjLm1tCkBAIC03OSwx
MCArNzksMTAgQEAgc3RhdGljIHZvaWQgcGFpbnRSZXBhaW50UmVjdE92ZXJsYXkoV2ViVmlldyog
d2ViVmlldywgQ0dDb250ZXh0UmVmIGNvbnRleHQpCiAgICAgQ0dDb250ZXh0UmVzdG9yZUdTdGF0
ZShjb250ZXh0KTsKIH0KIAotc3RhdGljIENHSW1hZ2VSZWYgdGFrZVdpbmRvd1NuYXBzaG90KENH
U1dpbmRvd0lEIHdpbmRvd0lELCBDR1dpbmRvd0ltYWdlT3B0aW9uIGltYWdlT3B0aW9ucykgQ0Zf
UkVUVVJOU19SRVRBSU5FRAorc3RhdGljIFJldGFpblB0cjxDR0ltYWdlUmVmPiB0YWtlV2luZG93
U25hcHNob3QoQ0dTV2luZG93SUQgd2luZG93SUQsIENHV2luZG93SW1hZ2VPcHRpb24gaW1hZ2VP
cHRpb25zKQogewogICAgIGltYWdlT3B0aW9ucyB8PSBrQ0dXaW5kb3dJbWFnZUJvdW5kc0lnbm9y
ZUZyYW1pbmcgfCBrQ0dXaW5kb3dJbWFnZVNob3VsZEJlT3BhcXVlOwotICAgIHJldHVybiBDR1dp
bmRvd0xpc3RDcmVhdGVJbWFnZShDR1JlY3ROdWxsLCBrQ0dXaW5kb3dMaXN0T3B0aW9uSW5jbHVk
aW5nV2luZG93LCB3aW5kb3dJRCwgaW1hZ2VPcHRpb25zKTsKKyAgICByZXR1cm4gYWRvcHRDRihD
R1dpbmRvd0xpc3RDcmVhdGVJbWFnZShDR1JlY3ROdWxsLCBrQ0dXaW5kb3dMaXN0T3B0aW9uSW5j
bHVkaW5nV2luZG93LCB3aW5kb3dJRCwgaW1hZ2VPcHRpb25zKSk7CiB9CiAKIFJlZlB0cjxCaXRt
YXBDb250ZXh0PiBjcmVhdGVCaXRtYXBDb250ZXh0RnJvbVdlYlZpZXcoYm9vbCBvbnNjcmVlbiwg
Ym9vbCBpbmNyZW1lbnRhbFJlcGFpbnQsIGJvb2wgc3dlZXBIb3Jpem9udGFsbHksIGJvb2wgZHJh
d1NlbGVjdGlvblJlY3QpCkBAIC0xMzIsMjIgKzEzMiwxOSBAQCBSZWZQdHI8Qml0bWFwQ29udGV4
dD4gY3JlYXRlQml0bWFwQ29udGV4dEZyb21XZWJWaWV3KGJvb2wgb25zY3JlZW4sIGJvb2wgaW5j
cmVtZQogICAgICAgICAgICAgLy8gQXNrIHRoZSB3aW5kb3cgc2VydmVyIHRvIHByb3ZpZGUgdXMg
YSBjb21wb3NpdGVkIHZlcnNpb24gb2YgdGhlICpyZWFsKiB3aW5kb3cgY29udGVudCBpbmNsdWRp
bmcgc3VyZmFjZXMgKGkuZS4gT3BlbkdMIGNvbnRlbnQpCiAgICAgICAgICAgICAvLyBOb3RlIHRo
YXQgdGhlIHJldHVybmVkIGltYWdlIG1pZ2h0IGRpZmZlciB2ZXJ5IHNsaWdodGx5IGZyb20gdGhl
IHdpbmRvdyBiYWNraW5nIGJlY2F1c2Ugb2YgZGl0aGVyaW5nIGFydGlmYWN0cyBpbiB0aGUgd2lu
ZG93IHNlcnZlciBjb21wb3NpdG9yLgogICAgICAgICAgICAgTlNXaW5kb3cgKndpbmRvdyA9IFt2
aWV3IHdpbmRvd107Ci0gICAgICAgICAgICBDR0ltYWdlUmVmIGltYWdlID0gdGFrZVdpbmRvd1Nu
YXBzaG90KFt3aW5kb3cgd2luZG93TnVtYmVyXSwga0NHV2luZG93SW1hZ2VEZWZhdWx0KTsKKyAg
ICAgICAgICAgIGF1dG8gaW1hZ2UgPSB0YWtlV2luZG93U25hcHNob3QoW3dpbmRvdyB3aW5kb3dO
dW1iZXJdLCBrQ0dXaW5kb3dJbWFnZURlZmF1bHQpOwogCiAgICAgICAgICAgICBpZiAoaW1hZ2Up
IHsKICAgICAgICAgICAgICAgICAvLyBXb3JrIGFyb3VuZCA8cmRhcjovL3Byb2JsZW0vMTcwODQ5
OTM+OyByZS1yZXF1ZXN0IHRoZSBzbmFwc2hvdCBhdCBrQ0dXaW5kb3dJbWFnZU5vbWluYWxSZXNv
bHV0aW9uIGlmIGl0IHdhcyBjYXB0dXJlZCBhdCB0aGUgd3Jvbmcgc2NhbGUuCiAgICAgICAgICAg
ICAgICAgQ0dGbG9hdCBkZXNpcmVkU25hcHNob3RXaWR0aCA9IHdpbmRvdy5mcmFtZS5zaXplLndp
ZHRoICogZGV2aWNlU2NhbGVGYWN0b3I7Ci0gICAgICAgICAgICAgICAgaWYgKENHSW1hZ2VHZXRX
aWR0aChpbWFnZSkgIT0gZGVzaXJlZFNuYXBzaG90V2lkdGgpIHsKLSAgICAgICAgICAgICAgICAg
ICAgQ0dJbWFnZVJlbGVhc2UoaW1hZ2UpOworICAgICAgICAgICAgICAgIGlmIChDR0ltYWdlR2V0
V2lkdGgoaW1hZ2UuZ2V0KCkpICE9IGRlc2lyZWRTbmFwc2hvdFdpZHRoKQogICAgICAgICAgICAg
ICAgICAgICBpbWFnZSA9IHRha2VXaW5kb3dTbmFwc2hvdChbd2luZG93IHdpbmRvd051bWJlcl0s
IGtDR1dpbmRvd0ltYWdlTm9taW5hbFJlc29sdXRpb24pOwotICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKCFpbWFnZSkKICAgICAgICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKIAotICAgICAgICAgICAgQ0dDb250ZXh0RHJhd0ltYWdlKGNvbnRleHQs
IENHUmVjdE1ha2UoMCwgMCwgQ0dJbWFnZUdldFdpZHRoKGltYWdlKSwgQ0dJbWFnZUdldEhlaWdo
dChpbWFnZSkpLCBpbWFnZSk7Ci0gICAgICAgICAgICBDR0ltYWdlUmVsZWFzZShpbWFnZSk7Cisg
ICAgICAgICAgICBDR0NvbnRleHREcmF3SW1hZ2UoY29udGV4dCwgQ0dSZWN0TWFrZSgwLCAwLCBD
R0ltYWdlR2V0V2lkdGgoaW1hZ2UuZ2V0KCkpLCBDR0ltYWdlR2V0SGVpZ2h0KGltYWdlLmdldCgp
KSksIGltYWdlLmdldCgpKTsKIAogICAgICAgICAgICAgaWYgKFt2aWV3IGlzVHJhY2tpbmdSZXBh
aW50c10pCiAgICAgICAgICAgICAgICAgcGFpbnRSZXBhaW50UmVjdE92ZXJsYXkodmlldywgY29u
dGV4dCk7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvUmVzb3VyY2VMb2Fk
RGVsZWdhdGUubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvUmVzb3VyY2VMb2FkRGVsZWdh
dGUubW0KaW5kZXggNTM5ZDE2YThhMGNmYmJhZmEwZTM0MDFmNjQ4MzllMDI5YmFmMzI5MC4uMGE4
MzJhOWRkNjA1OWI2NjVkZjc4OTU1OTM4MzI0Njg4YTkzOTI4MyAxMDA2NDQKLS0tIGEvVG9vbHMv
RHVtcFJlbmRlclRyZWUvbWFjL1Jlc291cmNlTG9hZERlbGVnYXRlLm1tCisrKyBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL21hYy9SZXNvdXJjZUxvYWREZWxlZ2F0ZS5tbQpAQCAtMTcyLDcgKzE3Miw3
IEBAIC0oTlNVUkxSZXF1ZXN0ICopd2ViVmlldzogKFdlYlZpZXcgKil3diByZXNvdXJjZTppZGVu
dGlmaWVyIHdpbGxTZW5kUmVxdWVzdDogKE5TCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAo
ZGlzYWxsb3dlZFVSTHMgJiYgQ0ZTZXRDb250YWluc1ZhbHVlKGRpc2FsbG93ZWRVUkxzLCAoX19i
cmlkZ2UgQ0ZVUkxSZWYpdXJsKSkKKyAgICBpZiAoZGlzYWxsb3dlZFVSTHMgJiYgQ0ZTZXRDb250
YWluc1ZhbHVlKGRpc2FsbG93ZWRVUkxzLmdldCgpLCAoX19icmlkZ2UgQ0ZVUkxSZWYpdXJsKSkK
ICAgICAgICAgcmV0dXJuIG5pbDsKIAogICAgIGF1dG8gbmV3UmVxdWVzdCA9IGFkb3B0TlMoW3Jl
cXVlc3QgbXV0YWJsZUNvcHldKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21h
Yy9UZXN0UnVubmVyTWFjLm1tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1Rlc3RSdW5uZXJN
YWMubW0KaW5kZXggMjRjZTIyZjdmZGE3NmQ1NWY4NmU2YTVkNGExZmJiYmE4ZWMyYjYwZi4uMDlk
YzJjNDU1ODVmMDA3ZjA1NjE2NTFkMTcwZWM0MzRlNWRmZWVmNyAxMDA2NDQKLS0tIGEvVG9vbHMv
RHVtcFJlbmRlclRyZWUvbWFjL1Rlc3RSdW5uZXJNYWMubW0KKysrIGIvVG9vbHMvRHVtcFJlbmRl
clRyZWUvbWFjL1Rlc3RSdW5uZXJNYWMubW0KQEAgLTEzNywxMyArMTM3LDEzIEBAIHZvaWQgVGVz
dFJ1bm5lcjo6YWRkRGlzYWxsb3dlZFVSTChKU1N0cmluZ1JlZiB1cmwpCiAgICAgUmV0YWluUHRy
PENGU3RyaW5nUmVmPiB1cmxDRiA9IGFkb3B0Q0YoSlNTdHJpbmdDb3B5Q0ZTdHJpbmcoa0NGQWxs
b2NhdG9yRGVmYXVsdCwgdXJsKSk7CiAKICAgICBpZiAoIWRpc2FsbG93ZWRVUkxzKQotICAgICAg
ICBkaXNhbGxvd2VkVVJMcyA9IENGU2V0Q3JlYXRlTXV0YWJsZShrQ0ZBbGxvY2F0b3JEZWZhdWx0
LCAwLCBOVUxMKTsKKyAgICAgICAgZGlzYWxsb3dlZFVSTHMgPSBhZG9wdENGKENGU2V0Q3JlYXRl
TXV0YWJsZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAwLCBOVUxMKSk7CiAKICAgICAvLyBDYW5vbmlj
YWxpemUgdGhlIFVSTAogICAgIE5TVVJMUmVxdWVzdCAqcmVxdWVzdCA9IFtOU1VSTFJlcXVlc3Qg
cmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6KF9fYnJpZGdlIE5TU3RyaW5nICop
dXJsQ0YuZ2V0KCldXTsKICAgICByZXF1ZXN0ID0gW05TVVJMUHJvdG9jb2wgY2Fub25pY2FsUmVx
dWVzdEZvclJlcXVlc3Q6cmVxdWVzdF07CiAKLSAgICBDRlNldEFkZFZhbHVlKGRpc2FsbG93ZWRV
UkxzLCAoX19icmlkZ2UgQ0ZVUkxSZWYpW3JlcXVlc3QgVVJMXSk7CisgICAgQ0ZTZXRBZGRWYWx1
ZShkaXNhbGxvd2VkVVJMcy5nZXQoKSwgKF9fYnJpZGdlIENGVVJMUmVmKVtyZXF1ZXN0IFVSTF0p
OwogfQogCiBib29sIFRlc3RSdW5uZXI6OmNhbGxTaG91bGRDbG9zZU9uV2ViVmlldygpCkBAIC01
NzcsNyArNTc3LDcgQEAgdm9pZCBUZXN0UnVubmVyOjpzZXRXYWl0VG9EdW1wKGJvb2wgd2FpdFVu
dGlsRG9uZSkKIHsKICAgICBtX3dhaXRUb0R1bXAgPSB3YWl0VW50aWxEb25lOwogICAgIGlmICht
X3dhaXRUb0R1bXAgJiYgbV90aW1lb3V0ICYmIHNob3VsZFNldFdhaXRUb0R1bXBXYXRjaGRvZygp
KQotICAgICAgICBzZXRXYWl0VG9EdW1wV2F0Y2hkb2coQ0ZSdW5Mb29wVGltZXJDcmVhdGUoa0NG
QWxsb2NhdG9yRGVmYXVsdCwgQ0ZBYnNvbHV0ZVRpbWVHZXRDdXJyZW50KCkgKyBtX3RpbWVvdXQg
LyAxMDAwLjAsIDAsIDAsIDAsIHdhaXRVbnRpbERvbmVXYXRjaGRvZ0ZpcmVkLCBOVUxMKSk7Cisg
ICAgICAgIHNldFdhaXRUb0R1bXBXYXRjaGRvZyhhZG9wdENGKENGUnVuTG9vcFRpbWVyQ3JlYXRl
KGtDRkFsbG9jYXRvckRlZmF1bHQsIENGQWJzb2x1dGVUaW1lR2V0Q3VycmVudCgpICsgbV90aW1l
b3V0IC8gMTAwMC4wLCAwLCAwLCAwLCB3YWl0VW50aWxEb25lV2F0Y2hkb2dGaXJlZCwgTlVMTCkp
KTsKIH0KIAogaW50IFRlc3RSdW5uZXI6OndpbmRvd0NvdW50KCkKZGlmZiAtLWdpdCBhL1Rvb2xz
L0ZvbnRXaXRoRmVhdHVyZXMvRm9udFdpdGhGZWF0dXJlcy9tYWluLmNwcCBiL1Rvb2xzL0ZvbnRX
aXRoRmVhdHVyZXMvRm9udFdpdGhGZWF0dXJlcy9tYWluLmNwcAppbmRleCBjNGVjZDc2NTg0Yjhl
N2E3YjE3ZjdkYzRiNDIwMTA1NGJhNWZiMWFkLi4wZDhjODk1YzY4ZWIwMGRiN2UwZTVhZmQ1ZTM4
YTE1Y2NhMmVmZWE4IDEwMDY0NAotLS0gYS9Ub29scy9Gb250V2l0aEZlYXR1cmVzL0ZvbnRXaXRo
RmVhdHVyZXMvbWFpbi5jcHAKKysrIGIvVG9vbHMvRm9udFdpdGhGZWF0dXJlcy9Gb250V2l0aEZl
YXR1cmVzL21haW4uY3BwCkBAIC0zMiw1MCArMzIsMzkgQEAKICNpbmNsdWRlIDxJbWFnZUlPL0lt
YWdlSU8uaD4KICNpbmNsdWRlIDxmc3RyZWFtPgogCi1zdGF0aWMgQ1RGb250RGVzY3JpcHRvclJl
ZiBjb25zdHJ1Y3RGb250V2l0aFRydWVUeXBlRmVhdHVyZShDVEZvbnREZXNjcmlwdG9yUmVmIGZv
bnREZXNjcmlwdG9yLCBpbnQgdHlwZSwgaW50IHNlbGVjdG9yKQorc3RhdGljIFJldGFpblB0cjxD
VEZvbnREZXNjcmlwdG9yUmVmPiBjb25zdHJ1Y3RGb250V2l0aFRydWVUeXBlRmVhdHVyZShDVEZv
bnREZXNjcmlwdG9yUmVmIGZvbnREZXNjcmlwdG9yLCBpbnQgdHlwZSwgaW50IHNlbGVjdG9yKQog
ewotICAgIENGTnVtYmVyUmVmIHR5cGVWYWx1ZSA9IENGTnVtYmVyQ3JlYXRlKGtDRkFsbG9jYXRv
ckRlZmF1bHQsIGtDRk51bWJlckludFR5cGUsICZ0eXBlKTsKLSAgICBDRk51bWJlclJlZiBzZWxl
Y3RvclZhbHVlID0gQ0ZOdW1iZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwga0NGTnVtYmVy
SW50VHlwZSwgJnNlbGVjdG9yKTsKKyAgICBhdXRvIHR5cGVWYWx1ZSA9IGFkb3B0Q0YoQ0ZOdW1i
ZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwga0NGTnVtYmVySW50VHlwZSwgJnR5cGUpKTsK
KyAgICBhdXRvIHNlbGVjdG9yVmFsdWUgPSBhZG9wdENGKENGTnVtYmVyQ3JlYXRlKGtDRkFsbG9j
YXRvckRlZmF1bHQsIGtDRk51bWJlckludFR5cGUsICZzZWxlY3RvcikpOwogICAgIENGVHlwZVJl
ZiBmZWF0dXJlRGljdGlvbmFyeUtleXNbXSA9IHsga0NURm9udEZlYXR1cmVUeXBlSWRlbnRpZmll
cktleSwga0NURm9udEZlYXR1cmVTZWxlY3RvcklkZW50aWZpZXJLZXkgfTsKLSAgICBDRlR5cGVS
ZWYgZmVhdHVyZURpY3Rpb25hcnlWYWx1ZXNbXSA9IHsgdHlwZVZhbHVlLCBzZWxlY3RvclZhbHVl
IH07Ci0gICAgQ0ZEaWN0aW9uYXJ5UmVmIGZlYXR1cmVEaWN0aW9uYXJ5ID0gQ0ZEaWN0aW9uYXJ5
Q3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGZlYXR1cmVEaWN0aW9uYXJ5S2V5cywgZmVhdHVy
ZURpY3Rpb25hcnlWYWx1ZXMsIDIsICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtD
RlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpOwotICAgIENGUmVsZWFzZSh0eXBlVmFsdWUp
OwotICAgIENGUmVsZWFzZShzZWxlY3RvclZhbHVlKTsKKyAgICBDRlR5cGVSZWYgZmVhdHVyZURp
Y3Rpb25hcnlWYWx1ZXNbXSA9IHsgdHlwZVZhbHVlLmdldCgpLCBzZWxlY3RvclZhbHVlLmdldCgp
IH07CisgICAgYXV0byBmZWF0dXJlRGljdGlvbmFyeSA9IGFkb3B0Q0YoQ0ZEaWN0aW9uYXJ5Q3Jl
YXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGZlYXR1cmVEaWN0aW9uYXJ5S2V5cywgZmVhdHVyZURp
Y3Rpb25hcnlWYWx1ZXMsIDIsICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5
cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpKTsKIAotICAgIENGVHlwZVJlZiBmZWF0dXJlU2V0
dGluZ3NWYWx1ZXNbXSA9IHsgZmVhdHVyZURpY3Rpb25hcnkgfTsKLSAgICBDRkFycmF5UmVmIGZv
bnRGZWF0dXJlU2V0dGluZ3MgPSBDRkFycmF5Q3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGZl
YXR1cmVTZXR0aW5nc1ZhbHVlcywgMSwgJmtDRlR5cGVBcnJheUNhbGxCYWNrcyk7Ci0gICAgQ0ZS
ZWxlYXNlKGZlYXR1cmVEaWN0aW9uYXJ5KTsKKyAgICBDRlR5cGVSZWYgZmVhdHVyZVNldHRpbmdz
VmFsdWVzW10gPSB7IGZlYXR1cmVEaWN0aW9uYXJ5LmdldCgpIH07CisgICAgYXV0byBmb250RmVh
dHVyZVNldHRpbmdzID0gYWRvcHRDRihDRkFycmF5Q3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQs
IGZlYXR1cmVTZXR0aW5nc1ZhbHVlcywgMSwgJmtDRlR5cGVBcnJheUNhbGxCYWNrcykpOwogCiAg
ICAgQ0ZUeXBlUmVmIGZvbnREZXNjcmlwdG9yS2V5c1tdID0geyBrQ1RGb250RmVhdHVyZVNldHRp
bmdzQXR0cmlidXRlIH07Ci0gICAgQ0ZUeXBlUmVmIGZvbnREZXNjcmlwdG9yVmFsdWVzW10gPSB7
IGZvbnRGZWF0dXJlU2V0dGluZ3MgfTsKLSAgICBDRkRpY3Rpb25hcnlSZWYgZm9udERlc2NyaXB0
b3JBdHRyaWJ1dGVzID0gQ0ZEaWN0aW9uYXJ5Q3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGZv
bnREZXNjcmlwdG9yS2V5cywgZm9udERlc2NyaXB0b3JWYWx1ZXMsIDEsICZrQ0ZUeXBlRGljdGlv
bmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpOwotICAg
IENGUmVsZWFzZShmb250RmVhdHVyZVNldHRpbmdzKTsKKyAgICBDRlR5cGVSZWYgZm9udERlc2Ny
aXB0b3JWYWx1ZXNbXSA9IHsgZm9udEZlYXR1cmVTZXR0aW5ncy5nZXQoKSB9OworICAgIGF1dG8g
Zm9udERlc2NyaXB0b3JBdHRyaWJ1dGVzID0gYWRvcHRDRihDRkRpY3Rpb25hcnlDcmVhdGUoa0NG
QWxsb2NhdG9yRGVmYXVsdCwgZm9udERlc2NyaXB0b3JLZXlzLCBmb250RGVzY3JpcHRvclZhbHVl
cywgMSwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlW
YWx1ZUNhbGxCYWNrcykpOwogCi0gICAgQ1RGb250RGVzY3JpcHRvclJlZiBtb2RpZmllZEZvbnRE
ZXNjcmlwdG9yID0gQ1RGb250RGVzY3JpcHRvckNyZWF0ZUNvcHlXaXRoQXR0cmlidXRlcyhmb250
RGVzY3JpcHRvciwgZm9udERlc2NyaXB0b3JBdHRyaWJ1dGVzKTsKLSAgICBDRlJlbGVhc2UoZm9u
dERlc2NyaXB0b3JBdHRyaWJ1dGVzKTsKLSAgICByZXR1cm4gbW9kaWZpZWRGb250RGVzY3JpcHRv
cjsKKyAgICByZXR1cm4gYWRvcHRDRihDVEZvbnREZXNjcmlwdG9yQ3JlYXRlQ29weVdpdGhBdHRy
aWJ1dGVzKGZvbnREZXNjcmlwdG9yLCBmb250RGVzY3JpcHRvckF0dHJpYnV0ZXMuZ2V0KCkpKTsK
IH0KIAotc3RhdGljIENURm9udERlc2NyaXB0b3JSZWYgY29uc3RydWN0Rm9udFdpdGhPcGVuVHlw
ZUZlYXR1cmUoQ1RGb250RGVzY3JpcHRvclJlZiBmb250RGVzY3JpcHRvciwgQ0ZTdHJpbmdSZWYg
ZmVhdHVyZSwgaW50IHZhbHVlKQorc3RhdGljIFJldGFpblB0cjxDVEZvbnREZXNjcmlwdG9yUmVm
PiBjb25zdHJ1Y3RGb250V2l0aE9wZW5UeXBlRmVhdHVyZShDVEZvbnREZXNjcmlwdG9yUmVmIGZv
bnREZXNjcmlwdG9yLCBDRlN0cmluZ1JlZiBmZWF0dXJlLCBpbnQgdmFsdWUpCiB7Ci0gICAgQ0ZO
dW1iZXJSZWYgZmVhdHVyZVZhbHVlID0gQ0ZOdW1iZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVs
dCwga0NGTnVtYmVySW50VHlwZSwgJnZhbHVlKTsKKyAgICBhdXRvIGZlYXR1cmVWYWx1ZSA9IGFk
b3B0Q0YoQ0ZOdW1iZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwga0NGTnVtYmVySW50VHlw
ZSwgJnZhbHVlKSk7CiAgICAgQ0ZUeXBlUmVmIGZlYXR1cmVEaWN0aW9uYXJ5S2V5c1tdID0geyBr
Q1RGb250T3BlblR5cGVGZWF0dXJlVGFnLCBrQ1RGb250T3BlblR5cGVGZWF0dXJlVmFsdWUgfTsK
LSAgICBDRlR5cGVSZWYgZmVhdHVyZURpY3Rpb25hcnlWYWx1ZXNbXSA9IHsgZmVhdHVyZSwgZmVh
dHVyZVZhbHVlIH07Ci0gICAgQ0ZEaWN0aW9uYXJ5UmVmIGZlYXR1cmVEaWN0aW9uYXJ5ID0gQ0ZE
aWN0aW9uYXJ5Q3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGZlYXR1cmVEaWN0aW9uYXJ5S2V5
cywgZmVhdHVyZURpY3Rpb25hcnlWYWx1ZXMsIDIsICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxC
YWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpOwotICAgIENGUmVsZWFzZShm
ZWF0dXJlVmFsdWUpOworICAgIENGVHlwZVJlZiBmZWF0dXJlRGljdGlvbmFyeVZhbHVlc1tdID0g
eyBmZWF0dXJlLCBmZWF0dXJlVmFsdWUuZ2V0KCkgfTsKKyAgICBhdXRvIGZlYXR1cmVEaWN0aW9u
YXJ5ID0gYWRvcHRDRihDRkRpY3Rpb25hcnlDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgZmVh
dHVyZURpY3Rpb25hcnlLZXlzLCBmZWF0dXJlRGljdGlvbmFyeVZhbHVlcywgMiwgJmtDRlR5cGVE
aWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcykp
OwogCi0gICAgQ0ZUeXBlUmVmIGZlYXR1cmVTZXR0aW5nc1ZhbHVlc1tdID0geyBmZWF0dXJlRGlj
dGlvbmFyeSB9OwotICAgIENGQXJyYXlSZWYgZm9udEZlYXR1cmVTZXR0aW5ncyA9IENGQXJyYXlD
cmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgZmVhdHVyZVNldHRpbmdzVmFsdWVzLCAxLCAma0NG
VHlwZUFycmF5Q2FsbEJhY2tzKTsKLSAgICBDRlJlbGVhc2UoZmVhdHVyZURpY3Rpb25hcnkpOwor
ICAgIENGVHlwZVJlZiBmZWF0dXJlU2V0dGluZ3NWYWx1ZXNbXSA9IHsgZmVhdHVyZURpY3Rpb25h
cnkuZ2V0KCkgfTsKKyAgICBhdXRvIGZvbnRGZWF0dXJlU2V0dGluZ3MgPSBhZG9wdENGKENGQXJy
YXlDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgZmVhdHVyZVNldHRpbmdzVmFsdWVzLCAxLCAm
a0NGVHlwZUFycmF5Q2FsbEJhY2tzKSk7CiAKICAgICBDRlR5cGVSZWYgZm9udERlc2NyaXB0b3JL
ZXlzW10gPSB7IGtDVEZvbnRGZWF0dXJlU2V0dGluZ3NBdHRyaWJ1dGUgfTsKLSAgICBDRlR5cGVS
ZWYgZm9udERlc2NyaXB0b3JWYWx1ZXNbXSA9IHsgZm9udEZlYXR1cmVTZXR0aW5ncyB9OwotICAg
IENGRGljdGlvbmFyeVJlZiBmb250RGVzY3JpcHRvckF0dHJpYnV0ZXMgPSBDRkRpY3Rpb25hcnlD
cmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgZm9udERlc2NyaXB0b3JLZXlzLCBmb250RGVzY3Jp
cHRvclZhbHVlcywgMSwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURp
Y3Rpb25hcnlWYWx1ZUNhbGxCYWNrcyk7Ci0gICAgQ0ZSZWxlYXNlKGZvbnRGZWF0dXJlU2V0dGlu
Z3MpOworICAgIENGVHlwZVJlZiBmb250RGVzY3JpcHRvclZhbHVlc1tdID0geyBmb250RmVhdHVy
ZVNldHRpbmdzLmdldCgpIH07CisgICAgYXV0byBmb250RGVzY3JpcHRvckF0dHJpYnV0ZXMgPSBh
ZG9wdENGKENGRGljdGlvbmFyeUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBmb250RGVzY3Jp
cHRvcktleXMsIGZvbnREZXNjcmlwdG9yVmFsdWVzLCAxLCAma0NGVHlwZURpY3Rpb25hcnlLZXlD
YWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7CiAKLSAgICBDVEZv
bnREZXNjcmlwdG9yUmVmIG1vZGlmaWVkRm9udERlc2NyaXB0b3IgPSBDVEZvbnREZXNjcmlwdG9y
Q3JlYXRlQ29weVdpdGhBdHRyaWJ1dGVzKGZvbnREZXNjcmlwdG9yLCBmb250RGVzY3JpcHRvckF0
dHJpYnV0ZXMpOwotICAgIENGUmVsZWFzZShmb250RGVzY3JpcHRvckF0dHJpYnV0ZXMpOwotICAg
IHJldHVybiBtb2RpZmllZEZvbnREZXNjcmlwdG9yOworICAgIHJldHVybiBhZG9wdENGKENURm9u
dERlc2NyaXB0b3JDcmVhdGVDb3B5V2l0aEF0dHJpYnV0ZXMoZm9udERlc2NyaXB0b3IsIGZvbnRE
ZXNjcmlwdG9yQXR0cmlidXRlcy5nZXQoKSkpOwogfQogCiBzdGF0aWMgdm9pZCBkcmF3VGV4dChD
R0NvbnRleHRSZWYgY29udGV4dCwgQ1RGb250RGVzY3JpcHRvclJlZiBmb250RGVzY3JpcHRvciwg
Q0ZTdHJpbmdSZWYgcHJlZml4LCBDR1BvaW50IGxvY2F0aW9uKQpAQCAtODQsMzcgKzczLDI5IEBA
IHN0YXRpYyB2b2lkIGRyYXdUZXh0KENHQ29udGV4dFJlZiBjb250ZXh0LCBDVEZvbnREZXNjcmlw
dG9yUmVmIGZvbnREZXNjcmlwdG9yLCBDCiAgICAgQ0dDb250ZXh0U2V0VGV4dFBvc2l0aW9uKGNv
bnRleHQsIGxvY2F0aW9uLngsIGxvY2F0aW9uLnkpOwogCiAgICAgQ0dGbG9hdCBmb250U2l6ZSA9
IDI1OwotICAgIENURm9udFJlZiBmb250ID0gQ1RGb250Q3JlYXRlV2l0aEZvbnREZXNjcmlwdG9y
KGZvbnREZXNjcmlwdG9yLCBmb250U2l6ZSwgbnVsbHB0cik7CisgICAgYXV0byBmb250ID0gYWRv
cHRDRihDVEZvbnRDcmVhdGVXaXRoRm9udERlc2NyaXB0b3IoZm9udERlc2NyaXB0b3IsIGZvbnRT
aXplLCBudWxscHRyKSk7CiAKLSAgICBDRk11dGFibGVTdHJpbmdSZWYgc3RyaW5nID0gQ0ZTdHJp
bmdDcmVhdGVNdXRhYmxlKGtDRkFsbG9jYXRvckRlZmF1bHQsIDApOwotICAgIENGU3RyaW5nQXBw
ZW5kKHN0cmluZywgcHJlZml4KTsKLSAgICBDRlN0cmluZ0FwcGVuZChzdHJpbmcsIENGU1RSKCJB
QkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6IikpOwor
ICAgIGF1dG8gc3RyaW5nID0gYWRvcHRDRihDRlN0cmluZ0NyZWF0ZU11dGFibGUoa0NGQWxsb2Nh
dG9yRGVmYXVsdCwgMCkpOworICAgIENGU3RyaW5nQXBwZW5kKHN0cmluZy5nZXQoKSwgcHJlZml4
KTsKKyAgICBDRlN0cmluZ0FwcGVuZChzdHJpbmcuZ2V0KCksIENGU1RSKCJBQkNERUZHSElKS0xN
Tk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6IikpOwogCi0gICAgQ0dDb2xv
clJlZiByZWQgPSBDR0NvbG9yQ3JlYXRlR2VuZXJpY1JHQigxLCAwLCAwLCAxKTsKKyAgICBhdXRv
IHJlZCA9IGFkb3B0Q0YoQ0dDb2xvckNyZWF0ZUdlbmVyaWNSR0IoMSwgMCwgMCwgMSkpOwogICAg
IENGVHlwZVJlZiBsaW5lS2V5c1tdID0geyBrQ1RGb3JlZ3JvdW5kQ29sb3JBdHRyaWJ1dGVOYW1l
IH07Ci0gICAgQ0ZUeXBlUmVmIGxpbmVWYWx1ZXNbXSA9IHsgcmVkIH07Ci0gICAgQ0ZEaWN0aW9u
YXJ5UmVmIGxpbmVBdHRyaWJ1dGVzID0gQ0ZEaWN0aW9uYXJ5Q3JlYXRlKGtDRkFsbG9jYXRvckRl
ZmF1bHQsIGxpbmVLZXlzLCBsaW5lVmFsdWVzLCAxLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxs
QmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKTsKLSAgICBDR0NvbG9yUmVs
ZWFzZShyZWQpOworICAgIENGVHlwZVJlZiBsaW5lVmFsdWVzW10gPSB7IHJlZC5nZXQoKSB9Owor
ICAgIGF1dG8gbGluZUF0dHJpYnV0ZXMgPSBhZG9wdENGKENGRGljdGlvbmFyeUNyZWF0ZShrQ0ZB
bGxvY2F0b3JEZWZhdWx0LCBsaW5lS2V5cywgbGluZVZhbHVlcywgMSwgJmtDRlR5cGVEaWN0aW9u
YXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcykpOwogCi0g
ICAgQ0ZBdHRyaWJ1dGVkU3RyaW5nUmVmIGF0dHJpYnV0ZWRTdHJpbmcgPSBDRkF0dHJpYnV0ZWRT
dHJpbmdDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgc3RyaW5nLCBsaW5lQXR0cmlidXRlcyk7
Ci0gICAgQ0ZSZWxlYXNlKGxpbmVBdHRyaWJ1dGVzKTsKKyAgICBhdXRvIGF0dHJpYnV0ZWRTdHJp
bmcgPSBhZG9wdENGKENGQXR0cmlidXRlZFN0cmluZ0NyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0
LCBzdHJpbmcuZ2V0KCksIGxpbmVBdHRyaWJ1dGVzLmdldCgpKSk7CiAKLSAgICBDRk11dGFibGVB
dHRyaWJ1dGVkU3RyaW5nUmVmIG11dGFibGVBdHRyaWJ1dGVkU3RyaW5nID0gQ0ZBdHRyaWJ1dGVk
U3RyaW5nQ3JlYXRlTXV0YWJsZUNvcHkoa0NGQWxsb2NhdG9yRGVmYXVsdCwgMCwgYXR0cmlidXRl
ZFN0cmluZyk7Ci0gICAgQ0ZSZWxlYXNlKGF0dHJpYnV0ZWRTdHJpbmcpOworICAgIGF1dG8gbXV0
YWJsZUF0dHJpYnV0ZWRTdHJpbmcgPSBhZG9wdENGKENGQXR0cmlidXRlZFN0cmluZ0NyZWF0ZU11
dGFibGVDb3B5KGtDRkFsbG9jYXRvckRlZmF1bHQsIDAsIGF0dHJpYnV0ZWRTdHJpbmcuZ2V0KCkp
KTsKIAotICAgIENURm9udFJlZiBtb25vc3BhY2VGb250ID0gQ1RGb250Q3JlYXRlV2l0aE5hbWUo
Q0ZTVFIoIkNvdXJpZXIiKSwgZm9udFNpemUsIG51bGxwdHIpOwotICAgIENGQXR0cmlidXRlZFN0
cmluZ1NldEF0dHJpYnV0ZShtdXRhYmxlQXR0cmlidXRlZFN0cmluZywgQ0ZSYW5nZU1ha2UoMCwg
Q0ZTdHJpbmdHZXRMZW5ndGgocHJlZml4KSksIGtDVEZvbnRBdHRyaWJ1dGVOYW1lLCBtb25vc3Bh
Y2VGb250KTsKLSAgICBDRlJlbGVhc2UobW9ub3NwYWNlRm9udCk7CisgICAgYXV0byBtb25vc3Bh
Y2VGb250ID0gYWRvcHRDRihDVEZvbnRDcmVhdGVXaXRoTmFtZShDRlNUUigiQ291cmllciIpLCBm
b250U2l6ZSwgbnVsbHB0cikpOworICAgIENGQXR0cmlidXRlZFN0cmluZ1NldEF0dHJpYnV0ZSht
dXRhYmxlQXR0cmlidXRlZFN0cmluZy5nZXQoKSwgQ0ZSYW5nZU1ha2UoMCwgQ0ZTdHJpbmdHZXRM
ZW5ndGgocHJlZml4KSksIGtDVEZvbnRBdHRyaWJ1dGVOYW1lLCBtb25vc3BhY2VGb250LmdldCgp
KTsKIAotICAgIENGQXR0cmlidXRlZFN0cmluZ1NldEF0dHJpYnV0ZShtdXRhYmxlQXR0cmlidXRl
ZFN0cmluZywgQ0ZSYW5nZU1ha2UoQ0ZTdHJpbmdHZXRMZW5ndGgocHJlZml4KSwgQ0ZTdHJpbmdH
ZXRMZW5ndGgoc3RyaW5nKSAtIENGU3RyaW5nR2V0TGVuZ3RoKHByZWZpeCkpLCBrQ1RGb250QXR0
cmlidXRlTmFtZSwgZm9udCk7Ci0gICAgQ0ZSZWxlYXNlKHN0cmluZyk7Ci0gICAgQ0ZSZWxlYXNl
KGZvbnQpOworICAgIENGQXR0cmlidXRlZFN0cmluZ1NldEF0dHJpYnV0ZShtdXRhYmxlQXR0cmli
dXRlZFN0cmluZy5nZXQoKSwgQ0ZSYW5nZU1ha2UoQ0ZTdHJpbmdHZXRMZW5ndGgocHJlZml4KSwg
Q0ZTdHJpbmdHZXRMZW5ndGgoc3RyaW5nLmdldCgpKSAtIENGU3RyaW5nR2V0TGVuZ3RoKHByZWZp
eCkpLCBrQ1RGb250QXR0cmlidXRlTmFtZSwgZm9udC5nZXQoKSk7CiAKLSAgICBDVExpbmVSZWYg
bGluZSA9IENUTGluZUNyZWF0ZVdpdGhBdHRyaWJ1dGVkU3RyaW5nKG11dGFibGVBdHRyaWJ1dGVk
U3RyaW5nKTsKLSAgICBDRlJlbGVhc2UobXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcpOworICAgIGF1
dG8gbGluZSA9IGFkb3B0Q0YoQ1RMaW5lQ3JlYXRlV2l0aEF0dHJpYnV0ZWRTdHJpbmcobXV0YWJs
ZUF0dHJpYnV0ZWRTdHJpbmcuZ2V0KCkpKTsKIAotICAgIENUTGluZURyYXcobGluZSwgY29udGV4
dCk7Ci0gICAgQ0ZSZWxlYXNlKGxpbmUpOworICAgIENUTGluZURyYXcobGluZS5nZXQoKSwgY29u
dGV4dCk7CiB9CiAKIGludCBtYWluKGludCBhcmdjLCBjb25zdCBjaGFyICogYXJndltdKQpAQCAt
MTIyLDcgKzEwMyw3IEBAIGludCBtYWluKGludCBhcmdjLCBjb25zdCBjaGFyICogYXJndltdKQog
ICAgIHNpemVfdCB3aWR0aCA9IDI1MDA7CiAgICAgc2l6ZV90IGhlaWdodCA9IDIwMDA7CiAgICAg
Q0dDb2xvclNwYWNlUmVmIGNvbG9yU3BhY2UgPSBDR0NvbG9yU3BhY2VDcmVhdGVEZXZpY2VSR0Io
KTsKLSAgICBDR0NvbnRleHRSZWYgY29udGV4dCA9IENHQml0bWFwQ29udGV4dENyZWF0ZShudWxs
cHRyLCB3aWR0aCwgaGVpZ2h0LCA4LCB3aWR0aCAqIDQsIGNvbG9yU3BhY2UsIGtDR0ltYWdlQWxw
aGFOb25lU2tpcExhc3QpOworICAgIGF1dG8gY29udGV4dCA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250
ZXh0Q3JlYXRlKG51bGxwdHIsIHdpZHRoLCBoZWlnaHQsIDgsIHdpZHRoICogNCwgY29sb3JTcGFj
ZSwga0NHSW1hZ2VBbHBoYU5vbmVTa2lwTGFzdCkpOwogICAgIENHQ29sb3JTcGFjZVJlbGVhc2Uo
Y29sb3JTcGFjZSk7CiAgICAgVHlwZSB0eXBlID0gVHlwZTo6VHJ1ZVR5cGU7CiAgICAgY29uc3Qg
c3RkOjp2ZWN0b3I8dWludDhfdD4gZm9udFZlY3RvciA9IGdlbmVyYXRlRm9udCh0eXBlKTsKQEAg
LTEzMSw0OSArMTEyLDQwIEBAIGludCBtYWluKGludCBhcmdjLCBjb25zdCBjaGFyICogYXJndltd
KQogICAgICAgICBvdXRwdXRGaWxlIDw8IGI7CiAgICAgb3V0cHV0RmlsZS5jbG9zZSgpOwogICAg
IAotICAgIENGRGF0YVJlZiBmb250RGF0YSA9IENGRGF0YUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZh
dWx0LCBmb250VmVjdG9yLmRhdGEoKSwgZm9udFZlY3Rvci5zaXplKCkpOwotICAgIENURm9udERl
c2NyaXB0b3JSZWYgZm9udERlc2NyaXB0b3IgPSBDVEZvbnRNYW5hZ2VyQ3JlYXRlRm9udERlc2Ny
aXB0b3JGcm9tRGF0YShmb250RGF0YSk7Ci0gICAgQ0ZSZWxlYXNlKGZvbnREYXRhKTsKKyAgICBh
dXRvIGZvbnREYXRhID0gYWRvcHRDRihDRkRhdGFDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwg
Zm9udFZlY3Rvci5kYXRhKCksIGZvbnRWZWN0b3Iuc2l6ZSgpKSk7CisgICAgYXV0byBmb250RGVz
Y3JpcHRvciA9IGFkb3B0Q0YoQ1RGb250TWFuYWdlckNyZWF0ZUZvbnREZXNjcmlwdG9yRnJvbURh
dGEoZm9udERhdGEuZ2V0KCkpKTsKIAogICAgIGlmICh0eXBlID09IFR5cGU6Ok9wZW5UeXBlKSB7
CiAgICAgICAgIENGVHlwZVJlZiBmZWF0dXJlVmFsdWVzT3BlblR5cGVbXSA9IHsgQ0ZTVFIoImxp
Z2EiKSwgQ0ZTVFIoImNsaWciKSwgQ0ZTVFIoImRsaWciKSwgQ0ZTVFIoImhsaWciKSwgQ0ZTVFIo
ImNhbHQiKSwgQ0ZTVFIoInN1YnMiKSwgQ0ZTVFIoInN1cHMiKSwgQ0ZTVFIoInNtY3AiKSwgQ0ZT
VFIoImMyc2MiKSwgQ0ZTVFIoInBjYXAiKSwgQ0ZTVFIoImMycGMiKSwgQ0ZTVFIoInVuaWMiKSwg
Q0ZTVFIoInRpdGwiKSwgQ0ZTVFIoIm9udW0iKSwgQ0ZTVFIoInBudW0iKSwgQ0ZTVFIoInRudW0i
KSwgQ0ZTVFIoImZyYWMiKSwgQ0ZTVFIoImFmcmMiKSwgQ0ZTVFIoIm9yZG4iKSwgQ0ZTVFIoInpl
cm8iKSwgQ0ZTVFIoImhpc3QiKSwgQ0ZTVFIoImpwNzgiKSwgQ0ZTVFIoImpwODMiKSwgQ0ZTVFIo
ImpwOTAiKSwgQ0ZTVFIoImpwMDQiKSwgQ0ZTVFIoInNtcGwiKSwgQ0ZTVFIoInRyYWQiKSwgQ0ZT
VFIoImZ3aWQiKSwgQ0ZTVFIoInB3aWQiKSwgQ0ZTVFIoInJ1YnkiKSB9OwotICAgICAgICBDRkFy
cmF5UmVmIGZlYXR1cmVzID0gQ0ZBcnJheUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBmZWF0
dXJlVmFsdWVzT3BlblR5cGUsIDMwLCAma0NGVHlwZUFycmF5Q2FsbEJhY2tzKTsKLQotICAgICAg
ICBmb3IgKENGSW5kZXggaSA9IDA7IGkgPCBDRkFycmF5R2V0Q291bnQoZmVhdHVyZXMpOyArK2kp
IHsKLSAgICAgICAgICAgIENGU3RyaW5nUmVmIGZlYXR1cmUgPSBzdGF0aWNfY2FzdDxDRlN0cmlu
Z1JlZj4oQ0ZBcnJheUdldFZhbHVlQXRJbmRleChmZWF0dXJlcywgaSkpOwotICAgICAgICAgICAg
Q1RGb250RGVzY3JpcHRvclJlZiBtb2RpZmllZEZvbnREZXNjcmlwdG9yID0gY29uc3RydWN0Rm9u
dFdpdGhPcGVuVHlwZUZlYXR1cmUoZm9udERlc2NyaXB0b3IsIGZlYXR1cmUsIDEpOwotICAgICAg
ICAgICAgQ0ZNdXRhYmxlU3RyaW5nUmVmIHByZWZpeCA9IENGU3RyaW5nQ3JlYXRlTXV0YWJsZShr
Q0ZBbGxvY2F0b3JEZWZhdWx0LCAwKTsKLSAgICAgICAgICAgIENGU3RyaW5nQXBwZW5kKHByZWZp
eCwgZmVhdHVyZSk7Ci0gICAgICAgICAgICBDRlN0cmluZ0FwcGVuZChwcmVmaXgsIENGU1RSKCIg
IChvbik6ICIpKTsKLSAgICAgICAgICAgIGRyYXdUZXh0KGNvbnRleHQsIG1vZGlmaWVkRm9udERl
c2NyaXB0b3IsIHByZWZpeCwgQ0dQb2ludE1ha2UoMjUsIDE5NTAgLSA1MCAqIGkpKTsKLSAgICAg
ICAgICAgIENGUmVsZWFzZShwcmVmaXgpOwotICAgICAgICAgICAgQ0ZSZWxlYXNlKG1vZGlmaWVk
Rm9udERlc2NyaXB0b3IpOwotCi0gICAgICAgICAgICBtb2RpZmllZEZvbnREZXNjcmlwdG9yID0g
Y29uc3RydWN0Rm9udFdpdGhPcGVuVHlwZUZlYXR1cmUoZm9udERlc2NyaXB0b3IsIGZlYXR1cmUs
IDApOwotICAgICAgICAgICAgcHJlZml4ID0gQ0ZTdHJpbmdDcmVhdGVNdXRhYmxlKGtDRkFsbG9j
YXRvckRlZmF1bHQsIDApOwotICAgICAgICAgICAgQ0ZTdHJpbmdBcHBlbmQocHJlZml4LCBmZWF0
dXJlKTsKLSAgICAgICAgICAgIENGU3RyaW5nQXBwZW5kKHByZWZpeCwgQ0ZTVFIoIiAob2ZmKTog
IikpOwotICAgICAgICAgICAgZHJhd1RleHQoY29udGV4dCwgbW9kaWZpZWRGb250RGVzY3JpcHRv
ciwgcHJlZml4LCBDR1BvaW50TWFrZSgyNSwgMTkyNSAtIDUwICogaSkpOwotICAgICAgICAgICAg
Q0ZSZWxlYXNlKHByZWZpeCk7Ci0gICAgICAgICAgICBDRlJlbGVhc2UobW9kaWZpZWRGb250RGVz
Y3JpcHRvcik7CisgICAgICAgIGF1dG8gZmVhdHVyZXMgPSBhZG9wdENGKENGQXJyYXlDcmVhdGUo
a0NGQWxsb2NhdG9yRGVmYXVsdCwgZmVhdHVyZVZhbHVlc09wZW5UeXBlLCAzMCwgJmtDRlR5cGVB
cnJheUNhbGxCYWNrcykpOworCisgICAgICAgIGZvciAoQ0ZJbmRleCBpID0gMDsgaSA8IENGQXJy
YXlHZXRDb3VudChmZWF0dXJlcy5nZXQoKSk7ICsraSkgeworICAgICAgICAgICAgQ0ZTdHJpbmdS
ZWYgZmVhdHVyZSA9IHN0YXRpY19jYXN0PENGU3RyaW5nUmVmPihDRkFycmF5R2V0VmFsdWVBdElu
ZGV4KGZlYXR1cmVzLmdldCgpLCBpKSk7CisgICAgICAgICAgICBhdXRvIG1vZGlmaWVkRm9udERl
c2NyaXB0b3IgPSBjb25zdHJ1Y3RGb250V2l0aE9wZW5UeXBlRmVhdHVyZShmb250RGVzY3JpcHRv
ci5nZXQoKSwgZmVhdHVyZSwgMSk7CisgICAgICAgICAgICBhdXRvIHByZWZpeCA9IGFkb3B0Q0Yo
Q0ZTdHJpbmdDcmVhdGVNdXRhYmxlKGtDRkFsbG9jYXRvckRlZmF1bHQsIDApKTsKKyAgICAgICAg
ICAgIENGU3RyaW5nQXBwZW5kKHByZWZpeC5nZXQoKSwgZmVhdHVyZSk7CisgICAgICAgICAgICBD
RlN0cmluZ0FwcGVuZChwcmVmaXguZ2V0KCksIENGU1RSKCIgIChvbik6ICIpKTsKKyAgICAgICAg
ICAgIGRyYXdUZXh0KGNvbnRleHQuZ2V0KCksIG1vZGlmaWVkRm9udERlc2NyaXB0b3IuZ2V0KCks
IHByZWZpeC5nZXQoKSwgQ0dQb2ludE1ha2UoMjUsIDE5NTAgLSA1MCAqIGkpKTsKKworICAgICAg
ICAgICAgbW9kaWZpZWRGb250RGVzY3JpcHRvciA9IGNvbnN0cnVjdEZvbnRXaXRoT3BlblR5cGVG
ZWF0dXJlKGZvbnREZXNjcmlwdG9yLmdldCgpLCBmZWF0dXJlLCAwKTsKKyAgICAgICAgICAgIHBy
ZWZpeCA9IGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVNdXRhYmxlKGtDRkFsbG9jYXRvckRlZmF1bHQs
IDApKTsKKyAgICAgICAgICAgIENGU3RyaW5nQXBwZW5kKHByZWZpeC5nZXQoKSwgZmVhdHVyZSk7
CisgICAgICAgICAgICBDRlN0cmluZ0FwcGVuZChwcmVmaXguZ2V0KCksIENGU1RSKCIgKG9mZik6
ICIpKTsKKyAgICAgICAgICAgIGRyYXdUZXh0KGNvbnRleHQuZ2V0KCksIG1vZGlmaWVkRm9udERl
c2NyaXB0b3IuZ2V0KCksIHByZWZpeC5nZXQoKSwgQ0dQb2ludE1ha2UoMjUsIDE5MjUgLSA1MCAq
IGkpKTsKICAgICAgICAgfQotCi0gICAgICAgIENGUmVsZWFzZShmZWF0dXJlcyk7CiAgICAgfSBl
bHNlIHsKICAgICAgICAgX19ibG9jayBpbnQgaSA9IDA7CiAgICAgICAgIHZvaWQgKF5oYW5kbGVy
KSh1aW50MTZfdCB0eXBlLCBDRlN0cmluZ1JlZiB0eXBlU3RyaW5nLCB1aW50MTZfdCBzZWxlY3Rv
ciwgQ0ZTdHJpbmdSZWYgc2VsZWN0b3JTdHJpbmcpID0gXih1aW50MTZfdCB0eXBlLCBDRlN0cmlu
Z1JlZiB0eXBlU3RyaW5nLCB1aW50MTZfdCBzZWxlY3RvciwgQ0ZTdHJpbmdSZWYgc2VsZWN0b3JT
dHJpbmcpCiAgICAgICAgIHsKLSAgICAgICAgICAgIENURm9udERlc2NyaXB0b3JSZWYgbW9kaWZp
ZWRGb250RGVzY3JpcHRvciA9IGNvbnN0cnVjdEZvbnRXaXRoVHJ1ZVR5cGVGZWF0dXJlKGZvbnRE
ZXNjcmlwdG9yLCB0eXBlLCBzZWxlY3Rvcik7Ci0gICAgICAgICAgICBDRk11dGFibGVTdHJpbmdS
ZWYgcHJlZml4ID0gQ0ZTdHJpbmdDcmVhdGVNdXRhYmxlKGtDRkFsbG9jYXRvckRlZmF1bHQsIDAp
OwotICAgICAgICAgICAgQ0ZTdHJpbmdBcHBlbmQocHJlZml4LCB0eXBlU3RyaW5nKTsKLSAgICAg
ICAgICAgIENGU3RyaW5nQXBwZW5kKHByZWZpeCwgQ0ZTVFIoIjogIikpOwotICAgICAgICAgICAg
Q0ZTdHJpbmdBcHBlbmQocHJlZml4LCBzZWxlY3RvclN0cmluZyk7Ci0gICAgICAgICAgICBDRlN0
cmluZ0FwcGVuZChwcmVmaXgsIENGU1RSKCI6ICIpKTsKLSAgICAgICAgICAgIHdoaWxlIChDRlN0
cmluZ0dldExlbmd0aChwcmVmaXgpIDwgNjUpCi0gICAgICAgICAgICAgICAgQ0ZTdHJpbmdBcHBl
bmQocHJlZml4LCBDRlNUUigiICIpKTsKLSAgICAgICAgICAgIGRyYXdUZXh0KGNvbnRleHQsIG1v
ZGlmaWVkRm9udERlc2NyaXB0b3IsIHByZWZpeCwgQ0dQb2ludE1ha2UoMjUsIDE5NTAgLSA0MCAq
IGkpKTsKLSAgICAgICAgICAgIENGUmVsZWFzZShwcmVmaXgpOwotICAgICAgICAgICAgQ0ZSZWxl
YXNlKG1vZGlmaWVkRm9udERlc2NyaXB0b3IpOworICAgICAgICAgICAgYXV0byBtb2RpZmllZEZv
bnREZXNjcmlwdG9yID0gY29uc3RydWN0Rm9udFdpdGhUcnVlVHlwZUZlYXR1cmUoZm9udERlc2Ny
aXB0b3IuZ2V0KCksIHR5cGUsIHNlbGVjdG9yKTsKKyAgICAgICAgICAgIGF1dG8gcHJlZml4ID0g
YWRvcHRDRihDRlN0cmluZ0NyZWF0ZU11dGFibGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgMCkpOwor
ICAgICAgICAgICAgQ0ZTdHJpbmdBcHBlbmQocHJlZml4LmdldCgpLCB0eXBlU3RyaW5nKTsKKyAg
ICAgICAgICAgIENGU3RyaW5nQXBwZW5kKHByZWZpeC5nZXQoKSwgQ0ZTVFIoIjogIikpOworICAg
ICAgICAgICAgQ0ZTdHJpbmdBcHBlbmQocHJlZml4LmdldCgpLCBzZWxlY3RvclN0cmluZyk7Cisg
ICAgICAgICAgICBDRlN0cmluZ0FwcGVuZChwcmVmaXguZ2V0KCksIENGU1RSKCI6ICIpKTsKKyAg
ICAgICAgICAgIHdoaWxlIChDRlN0cmluZ0dldExlbmd0aChwcmVmaXguZ2V0KCkpIDwgNjUpCisg
ICAgICAgICAgICAgICAgQ0ZTdHJpbmdBcHBlbmQocHJlZml4LmdldCgpLCBDRlNUUigiICIpKTsK
KyAgICAgICAgICAgIGRyYXdUZXh0KGNvbnRleHQuZ2V0KCksIG1vZGlmaWVkRm9udERlc2NyaXB0
b3IuZ2V0KCksIHByZWZpeC5nZXQoKSwgQ0dQb2ludE1ha2UoMjUsIDE5NTAgLSA0MCAqIGkpKTsK
ICAgICAgICAgICAgICsraTsKICAgICAgICAgfTsKICAgICAgICAgaGFuZGxlcihrTGlnYXR1cmVz
VHlwZSwgQ0ZTVFIoImtMaWdhdHVyZXNUeXBlIiksIGtDb21tb25MaWdhdHVyZXNPblNlbGVjdG9y
LCBDRlNUUigia0NvbW1vbkxpZ2F0dXJlc09uU2VsZWN0b3IiKSk7CkBAIC0yMTQsMTUgKzE4Niwx
MCBAQCBpbnQgbWFpbihpbnQgYXJnYywgY29uc3QgY2hhciAqIGFyZ3ZbXSkKICAgICAgICAgaGFu
ZGxlcihrUnVieUthbmFUeXBlLCBDRlNUUigia1J1YnlLYW5hVHlwZSIpLCBrUnVieUthbmFPblNl
bGVjdG9yLCBDRlNUUigia1J1YnlLYW5hT25TZWxlY3RvciIpKTsKICAgICB9CiAKLSAgICBDRlJl
bGVhc2UoZm9udERlc2NyaXB0b3IpOwotICAgIENHSW1hZ2VSZWYgaW1hZ2UgPSBDR0JpdG1hcENv
bnRleHRDcmVhdGVJbWFnZShjb250ZXh0KTsKLSAgICBDR0NvbnRleHRSZWxlYXNlKGNvbnRleHQp
OwotICAgIENGVVJMUmVmIHVybCA9IENGVVJMQ3JlYXRlV2l0aEZpbGVTeXN0ZW1QYXRoKGtDRkFs
bG9jYXRvckRlZmF1bHQsIENGU1RSKCIvVm9sdW1lcy9EYXRhL2hvbWUvbW1heGZpZWxkL3RtcC9v
dXRwdXQucG5nIiksIGtDRlVSTFBPU0lYUGF0aFN0eWxlLCBGQUxTRSk7Ci0gICAgQ0dJbWFnZURl
c3RpbmF0aW9uUmVmIGltYWdlRGVzdGluYXRpb24gPSBDR0ltYWdlRGVzdGluYXRpb25DcmVhdGVX
aXRoVVJMKHVybCwga1VUVHlwZVBORywgMSwgbnVsbHB0cik7Ci0gICAgQ0ZSZWxlYXNlKHVybCk7
Ci0gICAgQ0dJbWFnZURlc3RpbmF0aW9uQWRkSW1hZ2UoaW1hZ2VEZXN0aW5hdGlvbiwgaW1hZ2Us
IG51bGxwdHIpOwotICAgIENHSW1hZ2VSZWxlYXNlKGltYWdlKTsKLSAgICBDR0ltYWdlRGVzdGlu
YXRpb25GaW5hbGl6ZShpbWFnZURlc3RpbmF0aW9uKTsKLSAgICBDRlJlbGVhc2UoaW1hZ2VEZXN0
aW5hdGlvbik7CisgICAgYXV0byBpbWFnZSA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRl
SW1hZ2UoY29udGV4dC5nZXQoKSkpOworICAgIGF1dG8gdXJsID0gYWRvcHRDRihDRlVSTENyZWF0
ZVdpdGhGaWxlU3lzdGVtUGF0aChrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBDRlNUUigiL1ZvbHVtZXMv
RGF0YS9ob21lL21tYXhmaWVsZC90bXAvb3V0cHV0LnBuZyIpLCBrQ0ZVUkxQT1NJWFBhdGhTdHls
ZSwgRkFMU0UpKTsKKyAgICBhdXRvIGltYWdlRGVzdGluYXRpb24gPSBhZG9wdENGKENHSW1hZ2VE
ZXN0aW5hdGlvbkNyZWF0ZVdpdGhVUkwodXJsLmdldCgpLCBrVVRUeXBlUE5HLCAxLCBudWxscHRy
KSk7CisgICAgQ0dJbWFnZURlc3RpbmF0aW9uQWRkSW1hZ2UoaW1hZ2VEZXN0aW5hdGlvbi5nZXQo
KSwgaW1hZ2UuZ2V0KCksIG51bGxwdHIpOworICAgIENHSW1hZ2VEZXN0aW5hdGlvbkZpbmFsaXpl
KGltYWdlRGVzdGluYXRpb24uZ2V0KCkpOwogICAgIHJldHVybiAwOwogfQpkaWZmIC0tZ2l0IGEv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2Uu
Y3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZVBhZ2UuY3BwCmluZGV4IDNkYjAyMzQ5MzQxNTM5ZWQ0Mzg3MGU2NDUwNmQ5MzMwNzU0MmMyODku
Ljc0NWM0Y2U4MzVlZGNjMWIzMjBlOTAzZDM2N2Y3NzZhNzVlNDU3MzggMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNw
cAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlUGFnZS5jcHAKQEAgLTc5Niw3ICs3OTYsNyBAQCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZTo6
ZHVtcERPTUFzV2ViQXJjaGl2ZShXS0J1bmRsZUZyYW1lUmVmIGZyYW1lLCBTdHJpbmdCdWlsZAog
I2lmIFVTRShDRikgJiYgIVBMQVRGT1JNKFdJTl9DQUlSTykgJiYgIVVTRShESVJFQ1QyRCkKICAg
ICBhdXRvIHdrRGF0YSA9IGFkb3B0V0soV0tCdW5kbGVGcmFtZUNvcHlXZWJBcmNoaXZlKGZyYW1l
KSk7CiAgICAgYXV0byBjZkRhdGEgPSBhZG9wdENGKENGRGF0YUNyZWF0ZSgwLCBXS0RhdGFHZXRC
eXRlcyh3a0RhdGEuZ2V0KCkpLCBXS0RhdGFHZXRTaXplKHdrRGF0YS5nZXQoKSkpKTsKLSAgICBh
dXRvIGNmU3RyaW5nID0gYWRvcHRDRihXZWJDb3JlVGVzdFN1cHBvcnQ6OmNyZWF0ZVhNTFN0cmlu
Z0Zyb21XZWJBcmNoaXZlRGF0YShjZkRhdGEuZ2V0KCkpKTsKKyAgICBhdXRvIGNmU3RyaW5nID0g
V2ViQ29yZVRlc3RTdXBwb3J0OjpjcmVhdGVYTUxTdHJpbmdGcm9tV2ViQXJjaGl2ZURhdGEoY2ZE
YXRhLmdldCgpKTsKICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChjZlN0cmluZy5nZXQoKSk7CiAj
ZW5kaWYKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvaW9zL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRJT1MubW0gYi9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL2lvcy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50SU9TLm1tCmluZGV4
IDQ2YTE1NzgwZGM1OGQzN2Y5YWRhYmU3MDA5MDFkOTEwZGU5N2QxZjQuLmYwZjliMzg3ZDA2YzQz
MDhhZTEzNjFmMTFkYzkwN2Q0OGJkZjcyNTMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvaW9zL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRJT1MubW0KKysr
IGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9pb3MvQWNjZXNzaWJpbGl0
eVVJRWxlbWVudElPUy5tbQpAQCAtMTMwLDcgKzEzMCw3IEBAICsgKE5TU3RyaW5nICopc3RyaW5n
V2l0aEpTU3RyaW5nUmVmOihKU1N0cmluZ1JlZilqc1N0cmluZ1JlZgogICAgIGlmICghanNTdHJp
bmdSZWYpCiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgCi0gICAgcmV0dXJuIENGQnJpZGdpbmdS
ZWxlYXNlKEpTU3RyaW5nQ29weUNGU3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIGpzU3RyaW5n
UmVmKSk7CisgICAgcmV0dXJuIGFkb3B0Q0YoSlNTdHJpbmdDb3B5Q0ZTdHJpbmcoa0NGQWxsb2Nh
dG9yRGVmYXVsdCwganNTdHJpbmdSZWYpKS5icmlkZ2luZ0F1dG9yZWxlYXNlKCk7CiB9CiAKIC0g
KEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiljcmVhdGVKU1N0cmluZ1JlZgpkaWZmIC0tZ2l0IGEv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvQWNjZXNzaWJpbGl0eUNv
bW1vbk1hYy5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0Fj
Y2Vzc2liaWxpdHlDb21tb25NYWMubW0KaW5kZXggMzU0YThmNjU1NWM2YzAwMjY1ZjU2ODFhNmIz
NzE1MmE4NGE1NjJjMC4uZjhlMmRjZTIyMTAyNzJhZjY2ZGU4YzI3MWZmNDVkM2I3YjU3YzYwZiAx
MDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvQWNj
ZXNzaWJpbGl0eUNvbW1vbk1hYy5tbQorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5Q29tbW9uTWFjLm1tCkBAIC00Myw3ICs0Myw3IEBA
ICsgKE5TU3RyaW5nICopc3RyaW5nV2l0aEpTU3RyaW5nUmVmOihKU1N0cmluZ1JlZilqc1N0cmlu
Z1JlZgogICAgIGlmICghanNTdHJpbmdSZWYpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBy
ZXR1cm4gQ0ZCcmlkZ2luZ1JlbGVhc2UoSlNTdHJpbmdDb3B5Q0ZTdHJpbmcoa0NGQWxsb2NhdG9y
RGVmYXVsdCwganNTdHJpbmdSZWYpKTsKKyAgICByZXR1cm4gYWRvcHRDRihKU1N0cmluZ0NvcHlD
RlN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBqc1N0cmluZ1JlZikpLmJyaWRnaW5nQXV0b3Jl
bGVhc2UoKTsKIH0KIAogLSAoSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+KWNyZWF0ZUpTU3RyaW5n
UmVmCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9ISURFdmVudEdlbmVy
YXRvci5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL0hJREV2ZW50R2VuZXJhdG9yLm1t
CmluZGV4IDMxYjQ2NTBlMzU2MTE5YzAyNDAxNjY0Y2UwMjc2OTQ4ZGEwMzVlZDguLmY2ODJjYTI5
ODc1YjM2NmViMTZiNWU3OWYwNmRkMGUwYTUxZmJkMDcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvaW9zL0hJREV2ZW50R2VuZXJhdG9yLm1tCisrKyBiL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvaW9zL0hJREV2ZW50R2VuZXJhdG9yLm1tCkBAIC0zMTksNyArMzE5LDcgQEAgLSAo
SU9ISURFdmVudFJlZilfY3JlYXRlSU9ISURFdmVudFdpdGhJbmZvOihOU0RpY3Rpb25hcnkgKilp
bmZvCiAgICAgICAgIGlmIChbdG91Y2hJbmZvW0hJREV2ZW50UHJlc3N1cmVLZXldIGZsb2F0VmFs
dWVdKQogICAgICAgICAgICAgY2hpbGRFdmVudE1hc2sgfD0ga0lPSElERGlnaXRpemVyRXZlbnRB
dHRyaWJ1dGU7CiAKLSAgICAgICAgSU9ISURFdmVudFJlZiBzdWJFdmVudCA9IElPSElERXZlbnRD
cmVhdGVEaWdpdGl6ZXJGaW5nZXJFdmVudChrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBtYWNoVGltZSwK
KyAgICAgICAgYXV0byBzdWJFdmVudCA9IGFkb3B0Q0YoSU9ISURFdmVudENyZWF0ZURpZ2l0aXpl
ckZpbmdlckV2ZW50KGtDRkFsbG9jYXRvckRlZmF1bHQsIG1hY2hUaW1lLAogICAgICAgICAgICAg
W3RvdWNoSW5mb1tISURFdmVudFRvdWNoSURLZXldIGludFZhbHVlXSwgICAgICAgICAgICAgICAv
LyBpbmRleAogICAgICAgICAgICAgMiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBpZGVudGlmaWVyICh3aGljaCBmaW5nZXIgd2UgdGhpbmsg
aXQgaXMpLiBGSVhNRTogdGhpcyBzaG91bGQgY29tZSBmcm9tIHRoZSBkYXRhLgogICAgICAgICAg
ICAgY2hpbGRFdmVudE1hc2ssCkBAIC0zMzAsMTMgKzMzMCwxMiBAQCAtIChJT0hJREV2ZW50UmVm
KV9jcmVhdGVJT0hJREV2ZW50V2l0aEluZm86KE5TRGljdGlvbmFyeSAqKWluZm8KICAgICAgICAg
ICAgIFt0b3VjaEluZm9bSElERXZlbnRUd2lzdEtleV0gZmxvYXRWYWx1ZV0sCiAgICAgICAgICAg
ICB0b3VjaCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8vIHJhbmdlCiAgICAgICAgICAgICB0b3VjaCwgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIHRvdWNoCi0gICAgICAgICAgICBrSU9ISURFdmVudE9w
dGlvbk5vbmUpOworICAgICAgICAgICAga0lPSElERXZlbnRPcHRpb25Ob25lKSk7CiAKLSAgICAg
ICAgSU9ISURFdmVudFNldEZsb2F0VmFsdWUoc3ViRXZlbnQsIGtJT0hJREV2ZW50RmllbGREaWdp
dGl6ZXJNYWpvclJhZGl1cywgW3RvdWNoSW5mb1tISURFdmVudE1ham9yUmFkaXVzS2V5XSBmbG9h
dFZhbHVlXSk7Ci0gICAgICAgIElPSElERXZlbnRTZXRGbG9hdFZhbHVlKHN1YkV2ZW50LCBrSU9I
SURFdmVudEZpZWxkRGlnaXRpemVyTWlub3JSYWRpdXMsIFt0b3VjaEluZm9bSElERXZlbnRNaW5v
clJhZGl1c0tleV0gZmxvYXRWYWx1ZV0pOworICAgICAgICBJT0hJREV2ZW50U2V0RmxvYXRWYWx1
ZShzdWJFdmVudC5nZXQoKSwga0lPSElERXZlbnRGaWVsZERpZ2l0aXplck1ham9yUmFkaXVzLCBb
dG91Y2hJbmZvW0hJREV2ZW50TWFqb3JSYWRpdXNLZXldIGZsb2F0VmFsdWVdKTsKKyAgICAgICAg
SU9ISURFdmVudFNldEZsb2F0VmFsdWUoc3ViRXZlbnQuZ2V0KCksIGtJT0hJREV2ZW50RmllbGRE
aWdpdGl6ZXJNaW5vclJhZGl1cywgW3RvdWNoSW5mb1tISURFdmVudE1pbm9yUmFkaXVzS2V5XSBm
bG9hdFZhbHVlXSk7CiAKLSAgICAgICAgSU9ISURFdmVudEFwcGVuZEV2ZW50KGV2ZW50UmVmLCBz
dWJFdmVudCwgMCk7Ci0gICAgICAgIENGUmVsZWFzZShzdWJFdmVudCk7CisgICAgICAgIElPSElE
RXZlbnRBcHBlbmRFdmVudChldmVudFJlZiwgc3ViRXZlbnQuZ2V0KCksIDApOwogICAgIH0KIAog
ICAgIHJldHVybiBldmVudFJlZjsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
bWFjL0V2ZW50U2VuZGVyUHJveHkubW0gYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9FdmVu
dFNlbmRlclByb3h5Lm1tCmluZGV4IGJhY2MxNDExNTQzMzFiNzlkMWEzY2VkNjgxYzdmOTQ4OTg4
YjkwNjYuLjhlOTk0N2IwYjMyNDBmM2ZjMDliM2M2YWRiNjVlOGYyZTAyY2ZlZDQgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL0V2ZW50U2VuZGVyUHJveHkubW0KKysrIGIv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvRXZlbnRTZW5kZXJQcm94eS5tbQpAQCAtOTUsMTcg
Kzk1LDE2IEBAIC0gKGluc3RhbmNldHlwZSlpbml0UHJlc3N1cmVFdmVudEF0TG9jYXRpb246KE5T
UG9pbnQpbG9jYXRpb24gZ2xvYmFsTG9jYXRpb246KE5TCiAgICAgICAgIGJyZWFrOwogICAgIH0K
IAotICAgIENHRXZlbnRSZWYgY2dFdmVudCA9IENHRXZlbnRDcmVhdGUobnVsbHB0cik7Ci0gICAg
Q0dFdmVudFNldFR5cGUoY2dFdmVudCwgKENHRXZlbnRUeXBlKWtDR1NFdmVudEdlc3R1cmUpOwot
ICAgIENHRXZlbnRTZXRJbnRlZ2VyVmFsdWVGaWVsZChjZ0V2ZW50LCBrQ0dFdmVudEdlc3R1cmVI
SURUeXBlLCAzMik7Ci0gICAgQ0dFdmVudFNldEludGVnZXJWYWx1ZUZpZWxkKGNnRXZlbnQsIGtD
R0V2ZW50R2VzdHVyZVBoYXNlLCBnZXN0dXJlUGhhc2UpOwotICAgIENHRXZlbnRTZXREb3VibGVW
YWx1ZUZpZWxkKGNnRXZlbnQsIGtDR0V2ZW50U3RhZ2VQcmVzc3VyZSwgcHJlc3N1cmUpOwotICAg
IENHRXZlbnRTZXREb3VibGVWYWx1ZUZpZWxkKGNnRXZlbnQsIGtDR0V2ZW50VHJhbnNpdGlvblBy
b2dyZXNzLCBwcmVzc3VyZSk7Ci0gICAgQ0dFdmVudFNldEludGVnZXJWYWx1ZUZpZWxkKGNnRXZl
bnQsIGtDR0V2ZW50R2VzdHVyZVN0YWdlLCBzdGFnZVRyYW5zaXRpb24pOwotICAgIENHRXZlbnRT
ZXRJbnRlZ2VyVmFsdWVGaWVsZChjZ0V2ZW50LCBrQ0dFdmVudEdlc3R1cmVCZWhhdmlvciwga0NH
U0dlc3R1cmVCZWhhdmlvckRlZXBQcmVzcyk7Ci0KLSAgICBzZWxmID0gW3N1cGVyIF9pbml0V2l0
aENHRXZlbnQ6Y2dFdmVudCBldmVudFJlZjpudWxscHRyXTsKLSAgICBDRlJlbGVhc2UoY2dFdmVu
dCk7CisgICAgYXV0byBjZ0V2ZW50ID0gYWRvcHRDRihDR0V2ZW50Q3JlYXRlKG51bGxwdHIpKTsK
KyAgICBDR0V2ZW50U2V0VHlwZShjZ0V2ZW50LmdldCgpLCAoQ0dFdmVudFR5cGUpa0NHU0V2ZW50
R2VzdHVyZSk7CisgICAgQ0dFdmVudFNldEludGVnZXJWYWx1ZUZpZWxkKGNnRXZlbnQuZ2V0KCks
IGtDR0V2ZW50R2VzdHVyZUhJRFR5cGUsIDMyKTsKKyAgICBDR0V2ZW50U2V0SW50ZWdlclZhbHVl
RmllbGQoY2dFdmVudC5nZXQoKSwga0NHRXZlbnRHZXN0dXJlUGhhc2UsIGdlc3R1cmVQaGFzZSk7
CisgICAgQ0dFdmVudFNldERvdWJsZVZhbHVlRmllbGQoY2dFdmVudC5nZXQoKSwga0NHRXZlbnRT
dGFnZVByZXNzdXJlLCBwcmVzc3VyZSk7CisgICAgQ0dFdmVudFNldERvdWJsZVZhbHVlRmllbGQo
Y2dFdmVudC5nZXQoKSwga0NHRXZlbnRUcmFuc2l0aW9uUHJvZ3Jlc3MsIHByZXNzdXJlKTsKKyAg
ICBDR0V2ZW50U2V0SW50ZWdlclZhbHVlRmllbGQoY2dFdmVudC5nZXQoKSwga0NHRXZlbnRHZXN0
dXJlU3RhZ2UsIHN0YWdlVHJhbnNpdGlvbik7CisgICAgQ0dFdmVudFNldEludGVnZXJWYWx1ZUZp
ZWxkKGNnRXZlbnQuZ2V0KCksIGtDR0V2ZW50R2VzdHVyZUJlaGF2aW9yLCBrQ0dTR2VzdHVyZUJl
aGF2aW9yRGVlcFByZXNzKTsKKworICAgIHNlbGYgPSBbc3VwZXIgX2luaXRXaXRoQ0dFdmVudDpj
Z0V2ZW50LmdldCgpIGV2ZW50UmVmOm51bGxwdHJdOwogCiAgICAgaWYgKCFzZWxmKQogICAgICAg
ICByZXR1cm4gbmlsOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvVUlT
Y3JpcHRDb250cm9sbGVyTWFjLm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvVUlTY3Jp
cHRDb250cm9sbGVyTWFjLm1tCmluZGV4IDYwYmU5NTdlMDU3ZTI0YmUwZmJhZmZhZjJjMzgyMTU3
NGE3NjQxNTMuLmJhYmU5NTdkMTFiMjA0NmQ1ZjM2ZWQ0ZGRjNzFiYmQ3ZDZlNjA2MWIgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL1VJU2NyaXB0Q29udHJvbGxlck1hYy5t
bQorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9VSVNjcmlwdENvbnRyb2xsZXJNYWMu
bW0KQEAgLTUzLDE0ICs1MywxNCBAQCBSZWY8VUlTY3JpcHRDb250cm9sbGVyPiBVSVNjcmlwdENv
bnRyb2xsZXI6OmNyZWF0ZShVSVNjcmlwdENvbnRleHQmIGNvbnRleHQpCiAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgVUlTY3JpcHRDb250cm9sbGVyTWFjKGNvbnRleHQpKTsKIH0KIAotc3RhdGlj
IE5TU3RyaW5nICpuc1N0cmluZyhKU1N0cmluZ1JlZiBzdHJpbmcpCitzdGF0aWMgUmV0YWluUHRy
PENGU3RyaW5nUmVmPiBjZlN0cmluZyhKU1N0cmluZ1JlZiBzdHJpbmcpCiB7Ci0gICAgcmV0dXJu
IENGQnJpZGdpbmdSZWxlYXNlKEpTU3RyaW5nQ29weUNGU3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1
bHQsIHN0cmluZykpOworICAgIHJldHVybiBhZG9wdENGKEpTU3RyaW5nQ29weUNGU3RyaW5nKGtD
RkFsbG9jYXRvckRlZmF1bHQsIHN0cmluZykpOwogfQogCiB2b2lkIFVJU2NyaXB0Q29udHJvbGxl
ck1hYzo6cmVwbGFjZVRleHRBdFJhbmdlKEpTU3RyaW5nUmVmIHRleHQsIGludCBsb2NhdGlvbiwg
aW50IGxlbmd0aCkKIHsKLSAgICBbd2ViVmlldygpIF9pbnNlcnRUZXh0Om5zU3RyaW5nKHRleHQp
IHJlcGxhY2VtZW50UmFuZ2U6TlNNYWtlUmFuZ2UobG9jYXRpb24gPT0gLTEgPyBOU05vdEZvdW5k
IDogbG9jYXRpb24sIGxlbmd0aCldOworICAgIFt3ZWJWaWV3KCkgX2luc2VydFRleHQ6KF9fYnJp
ZGdlIE5TU3RyaW5nICopY2ZTdHJpbmcodGV4dCkuZ2V0KCkgcmVwbGFjZW1lbnRSYW5nZTpOU01h
a2VSYW5nZShsb2NhdGlvbiA9PSAtMSA/IE5TTm90Rm91bmQgOiBsb2NhdGlvbiwgbGVuZ3RoKV07
CiB9CiAKIHZvaWQgVUlTY3JpcHRDb250cm9sbGVyTWFjOjp6b29tVG9TY2FsZShkb3VibGUgc2Nh
bGUsIEpTVmFsdWVSZWYgY2FsbGJhY2spCg==
</data>
<flag name="commit-queue"
          id="441356"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>422301</attachid>
            <date>2021-03-04 15:55:10 -0800</date>
            <delta_ts>2021-03-04 16:44:54 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222760-20210304155509.patch</filename>
            <type>text/plain</type>
            <size>187308</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjczOTI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
MWU0YmQxNzg0NzU1ZmE4ODU2YjFlODQ0NDExYzg3OWE4YjMyNzg5Li4xNGJhNDI4MjIxY2M0MjQ3
M2E0YzJlYjNkYmM0OTE5OTk1N2E1MTI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMCBAQAorMjAyMS0wMy0wNCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIFJlZHVjZSB1c2Ugb2YgQ0ZSZXRhaW4oKSAvIENGUmVsZWFzZSgpIC8gQ0ZBdXRv
UmVsZWFzZSgpIGluIFdlYktpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjIyNzYwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgUmVkdWNlIHVzZSBvZiBDRlJldGFpbigpIC8gQ0ZSZWxlYXNlKCkgLyBDRkF1
dG9SZWxlYXNlKCkgaW4gV2ViS2l0IGJ5IHVzaW5nIFJldGFpblB0cjw+LgorCisgICAgICAgICog
QVBJL0pTQ29udGV4dC5tbToKKyAgICAgICAgKC1bSlNDb250ZXh0IG5hbWVdKToKKyAgICAgICAg
KiBBUEkvSlNWYWx1ZS5tbToKKyAgICAgICAgKHZhbHVlVG9PYmplY3RXaXRob3V0Q29weSk6Cisg
ICAgICAgICh2YWx1ZVRvU3RyaW5nKToKKyAgICAgICAgKiBpbnNwZWN0b3IvcmVtb3RlL2NvY29h
L1JlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24ubW06CisgICAgICAgIChJbnNwZWN0b3I6OlJl
bW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb246OmRlc2VyaWFsaXplTWVzc2FnZSk6CisKIDIwMjEt
MDMtMDQgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAg
ICAgICBVbnJldmlld2VkLCByZXZlcnRpbmcgcjI3MzkwNi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggNGE4YmZkMjA1NmExZmVi
ZWRmYzBiYzhiMGI0OWYzYzIzOWMwN2I0My4uNmVmNDBhMTY5OTY0ODk2MDU4OWMwMWMxZjA1MDYx
YTU4YjFhNzNhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAyMS0wMy0wNCAgQ2hyaXMgRHVtZXog
IDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFJlZHVjZSB1c2Ugb2YgQ0ZSZXRhaW4oKSAv
IENGUmVsZWFzZSgpIC8gQ0ZBdXRvUmVsZWFzZSgpIGluIFdlYktpdAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIyNzYwCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVkdWNlIHVzZSBvZiBDRlJldGFpbigp
IC8gQ0ZSZWxlYXNlKCkgLyBDRkF1dG9SZWxlYXNlKCkgaW4gV2ViS2l0IGJ5IHVzaW5nIFJldGFp
blB0cjw+LgorCisgICAgICAgICogd3RmL2NvY29hL05TVVJMRXh0cmFzLm1tOgorICAgICAgICAo
V1RGOjpkZWNvZGVQZXJjZW50RXNjYXBlcyk6CisgICAgICAgIChXVEY6OlVSTEJ5VHJ1bmNhdGlu
Z09uZUNoYXJhY3RlckJlZm9yZUNvbXBvbmVudCk6CisgICAgICAgIChXVEY6OlVSTFdpdGhEYXRh
KToKKyAgICAgICAgKFdURjo6VVJMQnlSZW1vdmluZ0NvbXBvbmVudEFuZFN1YnNlcXVlbnRDaGFy
YWN0ZXIpOgorCiAyMDIxLTAzLTA0ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdl
YmtpdC5vcmc+CiAKICAgICAgICAgUmVtb3ZlIHRoZSBIVFRQU1VwZ3JhZGVFbmFibGVkIGV4cGVy
aW1lbnRhbCBmZWF0dXJlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTdmYjczNjIyYWJkNTdiYjA3Y2M4OGE3N2Zj
YmNjMWEyMzFlZTliNC4uYTFmMThlY2VhZjBiYjZmYjY2MzlmNWVhMjM4ODFiNjI5MTgzZDExMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDExMiBAQAorMjAyMS0wMy0wNCAgQ2hyaXMgRHVtZXogIDxj
ZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFJlZHVjZSB1c2Ugb2YgQ0ZSZXRhaW4oKSAvIENG
UmVsZWFzZSgpIC8gQ0ZBdXRvUmVsZWFzZSgpIGluIFdlYktpdAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIyNzYwCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVkdWNlIHVzZSBvZiBDRlJldGFpbigpIC8g
Q0ZSZWxlYXNlKCkgLyBDRkF1dG9SZWxlYXNlKCkgaW4gV2ViS2l0IGJ5IHVzaW5nIFJldGFpblB0
cjw+LgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9tYWMvQVhPYmplY3RDYWNoZU1hYy5tbToK
KyAgICAgICAgKFdlYkNvcmU6OkFYVGV4dE1hcmtlclJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6
OkFYVGV4dE1hcmtlclJhbmdlU3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6QVhUZXh0TWFya2Vy
UmFuZ2VFbmQpOgorICAgICAgICAoV2ViQ29yZTo6dGV4dE1hcmtlckZvclZpc2libGVQb3NpdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjp0ZXh0TWFya2VyRm9yQ2hhcmFjdGVyT2Zmc2V0KToKKyAg
ICAgICAgKFdlYkNvcmU6OnN0YXJ0T3JFbmRUZXh0TWFya2VyRm9yUmFuZ2UpOgorICAgICAgICAq
IGFjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5tbToK
KyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlIHVwZGF0ZU9iamVj
dEJhY2tpbmdTdG9yZV0pOgorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBl
ckJhc2UgY29udmVydFBhdGhUb1NjcmVlblNwYWNlOl0pOgorICAgICAgICAqIGFjY2Vzc2liaWxp
dHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tOgorICAgICAgICAobmV4
dFRleHRNYXJrZXJGb3JDaGFyYWN0ZXJPZmZzZXQpOgorICAgICAgICAocHJldmlvdXNUZXh0TWFy
a2VyRm9yQ2hhcmFjdGVyT2Zmc2V0KToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVj
dFdyYXBwZXIgdGV4dE1hcmtlckZvckZpcnN0UG9zaXRpb25JblRleHRDb250cm9sOl0pOgorICAg
ICAgICAoQVhBdHRyaWJ1dGVTdHJpbmdTZXRFbGVtZW50KToKKyAgICAgICAgKiBlZGl0aW5nL2Nv
Y29hL0hUTUxDb252ZXJ0ZXIubW06CisgICAgICAgIChIVE1MQ29udmVydGVyOjpfcHJvY2Vzc1Rl
eHQpOgorICAgICAgICAqIGxvYWRlci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EubW06Cisg
ICAgICAgIChXZWJDb3JlOjpEaXNrQ2FjaGVNb25pdG9yOjpEaXNrQ2FjaGVNb25pdG9yKToKKyAg
ICAgICAgKiBwYWdlL21hYy9FdmVudEhhbmRsZXJNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpz
ZWxmUmV0YWluaW5nTlNTY3JvbGxWaWV3U2Nyb2xsV2hlZWwpOgorICAgICAgICAqIHBhZ2Uvd2lu
L0ZyYW1lQ0dXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6aW1hZ2VGcm9tUmVjdCk6CisgICAg
ICAgICogcGxhdGZvcm0vY2YvTWFpblRocmVhZFNoYXJlZFRpbWVyQ0YuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6c2hhcmVkVGltZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWFpblRocmVhZFNoYXJl
ZFRpbWVyOjpyZXN0YXJ0U2hhcmVkVGltZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWFpblRocmVh
ZFNoYXJlZFRpbWVyOjppbnZhbGlkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1haW5UaHJlYWRT
aGFyZWRUaW1lcjo6c2V0RmlyZUludGVydmFsKToKKyAgICAgICAgKFdlYkNvcmU6Ok1haW5UaHJl
YWRTaGFyZWRUaW1lcjo6c3RvcCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OmV4ZXJuYWxEZXZpY2VEaXNwbGF5TmFtZUZvclBsYXllcik6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL0NBQ0ZMYXllclRyZWVIb3N0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNBQ0ZMYXllclRyZWVIb3N0Ojppbml0aWFsaXplKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpwYXR0ZXJuUmVsZWFzZUNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDo6ZmlsbFBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Ojpz
dHJva2VQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3Qp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzdHJva2VSZWN0KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXR0ZXJuQ0cuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6cGF0dGVyblJlbGVhc2VDYWxsYmFjayk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YXV0b0FjdGl2
YXRlRm9udCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDR1dpbi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZTo6Z2V0UGxhdGZvcm1HbHlwaEFkdmFuY2Vz
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0Q0dXaW4u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpyZWxlYXNlV2luZG93c0Nv
bnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3Rm9jdXNSaW5n
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VDR1dpbi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Z2V0SEJJVE1BUE9mU2l6ZSk6CisgICAgICAgICog
cGxhdGZvcm0vaW9zL1VzZXJBZ2VudElPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OnN0YW5kYXJk
VXNlckFnZW50V2l0aEFwcGxpY2F0aW9uTmFtZSk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL3dh
ay9XZWJDb3JlVGhyZWFkLm1tOgorICAgICAgICAoU2VuZERlbGVnYXRlTWVzc2FnZSk6CisgICAg
ICAgIChSdW5XZWJUaHJlYWQpOgorICAgICAgICAoV2ViVGhyZWFkVW5sb2NrR3VhcmRGb3JNYWls
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplck1hYy5t
bToKKyAgICAgICAgKFdlYkNvcmU6OnNwZWVjaFN5bnRoZXNpc0dldFZvaWNlSWRlbnRpZmllcnMp
OgorICAgICAgICAoV2ViQ29yZTo6c3BlZWNoU3ludGhlc2lzR2V0RGVmYXVsdFZvaWNlSWRlbnRp
ZmllckZvckxvY2FsZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNp
emVyOjppbml0aWFsaXplVm9pY2VMaXN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvUGx1Z2lu
QmxvY2tsaXN0Lm1tOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luQmxvY2tsaXN0OjpjcmVhdGUp
OgorICAgICAgICAqIHBsYXRmb3JtL21hYy9XZWJHTEJsb2NrbGlzdC5tbToKKyAgICAgICAgKFdl
YkNvcmU6OldlYkdMQmxvY2tsaXN0OjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlh
cmVjb3JkZXIvY29jb2EvQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tOgorICAgICAgICAo
V2ViQ29yZTo6QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjphdHRhY2hQcmltaW5nVHJpbXNJ
Zk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6
OnByb3ZpZGVTb3VyY2VEYXRhTnVtT3V0cHV0UGFja2V0cyk6CisgICAgICAgICogcGxhdGZvcm0v
bWVkaWFyZWNvcmRlci9jb2NvYS9WaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IubW06CisgICAg
ICAgIChXZWJDb3JlOjpzZXRDb21wcmVzc2lvblNlc3Npb25Qcm9wZXJ0eSk6CisgICAgICAgICog
cGxhdGZvcm0vbmV0d29yay9jZi9Gb3JtRGF0YVN0cmVhbUNGTmV0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmNsb3NlQ3VycmVudFN0cmVhbSk6CisgICAgICAgIChXZWJDb3JlOjphZHZhbmNlQ3Vy
cmVudFN0cmVhbSk6CisgICAgICAgIChXZWJDb3JlOjpvcGVuTmV4dFN0cmVhbSk6CisgICAgICAg
IChXZWJDb3JlOjpmb3JtUmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpmb3JtQ2FuUmVhZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpmb3JtU2NoZWR1bGUpOgorICAgICAgICAoV2ViQ29yZTo6Zm9ybVVu
c2NoZWR1bGUpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uQ0ZOZXRXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlUHJpdmF0ZVN0b3Jh
Z2VTZXNzaW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxl
Q0ZOZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2V0Q2xpZW50Q2VydGlmaWNhdGVJblNTTFBy
b3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OmNyZWF0ZUNGVVJM
Q29ubmVjdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRs
ZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0
aW9uUXVldWU6OndpbGxTZW5kUmVxdWVzdCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9j
Zi9SZXNvdXJjZVJlcXVlc3RDRk5ldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3Q6OmRvVXBkYXRlUmVzb3VyY2VSZXF1ZXN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4v
RHJhZ0ltYWdlQ0dXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlQ2dDb250ZXh0RnJv
bUJpdG1hcCk6CisgICAgICAgIChXZWJDb3JlOjpzY2FsZURyYWdJbWFnZSk6CisgICAgICAgICog
cGxhdGZvcm0vd2luL1dlYkNvcmVCdW5kbGVXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3Jl
YXRlV2ViS2l0QnVuZGxlKToKKyAgICAgICAgKFdlYkNvcmU6OndlYktpdEJ1bmRsZSk6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tOgorICAgICAgICAoLVtXZWJDb3JlVGV4
dEZpZWxkQ2VsbCBfYWRqdXN0ZWRDb3JlVUlEcmF3T3B0aW9uc0ZvckRyYXdpbmdCb3JkZXJzT25s
eTpdKToKKyAgICAgICAgKiB0ZXN0aW5nL2NvY29hL1dlYkFyY2hpdmVEdW1wU3VwcG9ydC5oOgor
ICAgICAgICAqIHRlc3RpbmcvY29jb2EvV2ViQXJjaGl2ZUR1bXBTdXBwb3J0Lm1tOgorICAgICAg
ICAoV2ViQ29yZVRlc3RTdXBwb3J0OjpjcmVhdGVYTUxTdHJpbmdGcm9tV2ViQXJjaGl2ZURhdGEp
OgorICAgICAgICAqIHRlc3RpbmcvY29jb2EvV2ViVmlld1Zpc3VhbElkZW50aWZpY2F0aW9uT3Zl
cmxheS5tbToKKyAgICAgICAgKGlkZW50aWZpY2F0aW9uRm9udCk6CisKIDIwMjEtMDMtMDQgIERl
dmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgogCiAgICAgICAgIFtQYXltZW50IFJlcXVl
c3RdIGluY3JlbWVudCB0aGUgY3VycmVudCB2ZXJzaW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDI2OTAwNzI1MzI2
ODAzOTBkZGU1NzNjZTUyYmVjNWRmYzNmYTdlYzkuLjdmNmY0YjgzNzYxNmZjMjFhZTg2MWZhMjc0
MjI0MjIzYzFlZGMyNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzkgQEAKKzIwMjEtMDMtMDQgIENo
cmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBSZWR1Y2UgdXNlIG9mIENG
UmV0YWluKCkgLyBDRlJlbGVhc2UoKSAvIENGQXV0b1JlbGVhc2UoKSBpbiBXZWJLaXQKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMjc2MAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlZHVjZSB1c2Ugb2Yg
Q0ZSZXRhaW4oKSAvIENGUmVsZWFzZSgpIC8gQ0ZBdXRvUmVsZWFzZSgpIGluIFdlYktpdCBieSB1
c2luZyBSZXRhaW5QdHI8Pi4KKworICAgICAgICAqIFBsYXRmb3JtL21hYy9TdHJpbmdVdGlsaXRp
ZXMubW06CisgICAgICAgIChXZWJLaXQ6Om5zU3RyaW5nRnJvbVdlYkNvcmVTdHJpbmcpOgorICAg
ICAgICAoV2ViS2l0Ojpmb3JtYXR0ZWRQaG9uZU51bWJlclN0cmluZyk6CisgICAgICAgICogUGx1
Z2luUHJvY2Vzcy9tYWMvUGx1Z2luUHJvY2Vzc01hYy5tbToKKyAgICAgICAgKFdlYktpdDo6aW5p
dGlhbGl6ZUNvY29hT3ZlcnJpZGVzKToKKyAgICAgICAgKiBTaGFyZWQvbWFjL1Bhc3RlYm9hcmRU
eXBlcy5tbToKKyAgICAgICAgKFdlYktpdDo6UGFzdGVib2FyZFR5cGVzOjpmb3JFZGl0aW5nKToK
KyAgICAgICAgKFdlYktpdDo6UGFzdGVib2FyZFR5cGVzOjpmb3JVUkwpOgorICAgICAgICAoV2Vi
S2l0OjpQYXN0ZWJvYXJkVHlwZXM6OmZvckltYWdlcyk6CisgICAgICAgIChXZWJLaXQ6OlBhc3Rl
Ym9hcmRUeXBlczo6Zm9ySW1hZ2VzV2l0aEFyY2hpdmUpOgorICAgICAgICAoV2ViS2l0OjpQYXN0
ZWJvYXJkVHlwZXM6OmZvclNlbGVjdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dl
YlZpZXdJbXBsLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6YWNjZXB0c0ZpcnN0
TW91c2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6c2hvdWxkRGVsYXlXaW5kb3dP
cmRlcmluZ0ZvckV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnZhbGlkQXR0
cmlidXRlc0Zvck1hcmtlZFRleHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6cGVy
Zm9ybUtleUVxdWl2YWxlbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9JbnNwZWN0b3IvaW9zL1dL
SW5zcGVjdG9ySGlnaGxpZ2h0Vmlldy5tbToKKyAgICAgICAgKGxheWVyUGF0aFdpdGhIb2xlKToK
KyAgICAgICAgKGxheWVyUGF0aCk6CisgICAgICAgICogVUlQcm9jZXNzL19XS1RvdWNoRXZlbnRH
ZW5lcmF0b3IubW06CisgICAgICAgICgtW19XS1RvdWNoRXZlbnRHZW5lcmF0b3IgZGVhbGxvY10p
OgorICAgICAgICAoLVtfV0tUb3VjaEV2ZW50R2VuZXJhdG9yIF9zZW5kSElERXZlbnQ6XSk6Cisg
ICAgICAgICogVUlQcm9jZXNzL2lvcy9mdWxsc2NyZWVuL1dLRnVsbFNjcmVlbldpbmRvd0NvbnRy
b2xsZXJJT1MubW06CisgICAgICAgICgtW1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIgX0VW
T3JnYW5pemF0aW9uTmFtZV0pOgorICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vz
c0NvY29hLm1tOgorICAgICAgICAoV2ViS2l0Ojp3ZWJQcm9jZXNzTG9hZGVyQWNjZXNzaWJpbGl0
eUJ1bmRsZVBhdGgpOgorCiAyMDIxLTAzLTA0ICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25A
YXBwbGUuY29tPgogCiAgICAgICAgIEZpeCB0aGUgYnVpbGQgYWZ0ZXIgcjI3MzkwNApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExl
Z2FjeS9pb3MvQ2hhbmdlTG9nCmluZGV4IGNhZDE4OWQwMWVjMjc0MTNmODc1MmY4MDY1Yzk1YTIy
ZDVjYzM2YjQuLmY3YzE0NGYxNmIyOGNlMTFhZDdhNWI2YmIzNDljMzZlYmQ5OGI4YTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L2lvcy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAyMS0wMy0wNCAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFJlZHVjZSB1c2Ugb2YgQ0ZS
ZXRhaW4oKSAvIENGUmVsZWFzZSgpIC8gQ0ZBdXRvUmVsZWFzZSgpIGluIFdlYktpdAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIyNzYwCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVkdWNlIHVzZSBvZiBD
RlJldGFpbigpIC8gQ0ZSZWxlYXNlKCkgLyBDRkF1dG9SZWxlYXNlKCkgaW4gV2ViS2l0IGJ5IHVz
aW5nIFJldGFpblB0cjw+LgorCisgICAgICAgICogTWlzYy9XZWJVSUtpdFN1cHBvcnQubW06Cisg
ICAgICAgIChMb2FkV2ViTG9jYWxpemVkU3RyaW5ncyk6CisgICAgICAgICogV2ViVmlldy9XZWJQ
REZWaWV3SU9TLm1tOgorICAgICAgICAoLVtXZWJQREZWaWV3IGZpbmlzaGVkTG9hZGluZ1dpdGhE
YXRhU291cmNlOl0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViUERGVmlld1BsYWNlaG9sZGVyLm1t
OgorICAgICAgICAoLVtXZWJQREZWaWV3UGxhY2Vob2xkZXIgZmluaXNoZWRMb2FkaW5nV2l0aERh
dGFTb3VyY2U6XSk6CisKIDIwMjEtMDItMjIgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNv
bT4KIAogICAgICAgICBVc2UgYWRvcHROUygpIGFzIHNvb24gYXMgd2UgW1tPYmpjQ2xhc3MgYWxs
b2NdIGluaXRdIHRvIGF2b2lkIGxlYWtzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXgg
N2MxMmQxNWFmYWU1OGFlMDVjZTZiMzQwNDU5MDBiODU5ZWQxNDZiMy4uYWRhYTY0MzZmMjM4M2I1
NDkzYjg0YjExMzI3YTZhMWU4OWM2MzVmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDI5IEBACisyMDIxLTAzLTA0ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5j
b20+CisKKyAgICAgICAgUmVkdWNlIHVzZSBvZiBDRlJldGFpbigpIC8gQ0ZSZWxlYXNlKCkgLyBD
RkF1dG9SZWxlYXNlKCkgaW4gV2ViS2l0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMjI3NjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBSZWR1Y2UgdXNlIG9mIENGUmV0YWluKCkgLyBDRlJlbGVhc2UoKSAv
IENGQXV0b1JlbGVhc2UoKSBpbiBXZWJLaXQgYnkgdXNpbmcgUmV0YWluUHRyPD4uCisKKyAgICAg
ICAgKiBNaXNjL1dlYkxvY2FsaXphYmxlU3RyaW5ncy5tbToKKyAgICAgICAgKiBNaXNjL1dlYk5T
RGF0YUV4dHJhcy5tbToKKyAgICAgICAgKC1bTlNTdHJpbmcgX3dlYl9jYXBpdGFsaXplUkZDODIy
SGVhZGVyRmllbGROYW1lXSk6CisgICAgICAgICogUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVn
aW5Ib3N0TWFuYWdlci5tbToKKyAgICAgICAgKFdlYktpdDo6cHJlZmVycmVkQnVuZGxlTG9jYWxp
emF0aW9uTmFtZSk6CisgICAgICAgICogUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblZpZXcubW06
CisgICAgICAgICgtW1dlYk5ldHNjYXBlUGx1Z2luVmlldyBzdGF0dXM6XSk6CisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvV2ViUHJvZ3Jlc3NUcmFja2VyQ2xpZW50Lm1tOgorICAgICAgICAoV2Vi
UHJvZ3Jlc3NUcmFja2VyQ2xpZW50Ojpwcm9ncmVzc0VzdGltYXRlQ2hhbmdlZCk6CisgICAgICAg
ICogV2ViSW5zcGVjdG9yL1dlYk5vZGVIaWdobGlnaHRWaWV3Lm1tOgorICAgICAgICAobGF5ZXJQ
YXRoV2l0aEhvbGUpOgorICAgICAgICAobGF5ZXJQYXRoKToKKyAgICAgICAgKiBXZWJWaWV3L1dl
YkZyYW1lLm1tOgorICAgICAgICAoY3JlYXRlVW5pcXVlV2ViRGF0YVVSTCk6CisgICAgICAgICog
V2ViVmlldy9XZWJWaWV3Lm1tOgorICAgICAgICAoK1tXZWJWaWV3IF9zZXRDYWNoZU1vZGVsOl0p
OgorCiAyMDIxLTAzLTA0ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAg
ICAgW21hY09TXVtXSzJdIENoYW5naW5nIHRoZSBzeXN0ZW0gbGFuZ3VhZ2UgZG9lcyBub3QgdXBk
YXRlIG5hdmlnYXRvci5sYW5ndWFnZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCmluZGV4IDU4
MTM0MDI5NmQ4NWFkNGE4Njk5NGRkMzRjZGU0ZTU1NzFjYWJhYTcuLmMwODhiYjJmMTVmOTQzMTkx
ZjI4MDE3YTkzODFhNjRiOGM4Y2MxMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKQEAg
LTEsMyArMSw0MCBAQAorMjAyMS0wMy0wNCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29t
PgorCisgICAgICAgIFJlZHVjZSB1c2Ugb2YgQ0ZSZXRhaW4oKSAvIENGUmVsZWFzZSgpIC8gQ0ZB
dXRvUmVsZWFzZSgpIGluIFdlYktpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjIyNzYwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgUmVkdWNlIHVzZSBvZiBDRlJldGFpbigpIC8gQ0ZSZWxlYXNlKCkgLyBD
RkF1dG9SZWxlYXNlKCkgaW4gV2ViS2l0IGJ5IHVzaW5nIFJldGFpblB0cjw+LgorCisgICAgICAg
ICogQ0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWcuY3BwOgorICAgICAgICAoQ29udmVydFZhcmlhbnRU
b0NGVHlwZSk6CisgICAgICAgIChDRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZzo6UmVhZCk6CisgICAg
ICAgIChDRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZzo6V3JpdGUpOgorICAgICAgICAqIE1hcnNoYWxs
aW5nSGVscGVycy5jcHA6CisgICAgICAgIChNYXJzaGFsbGluZ0hlbHBlcnM6OlBhdGhTdHJpbmdU
b0ZpbGVDRlVSTFJlZik6CisgICAgICAgIChNYXJzaGFsbGluZ0hlbHBlcnM6OkZpbGVDRlVSTFJl
ZlRvUGF0aFN0cmluZyk6CisgICAgICAgIChNYXJzaGFsbGluZ0hlbHBlcnM6OkJTVFJUb0NGVVJM
UmVmKToKKyAgICAgICAgKE1hcnNoYWxsaW5nSGVscGVyczo6QlNUUlRvQ0ZTdHJpbmdSZWYpOgor
ICAgICAgICAoTWFyc2hhbGxpbmdIZWxwZXJzOjpMUENPTEVTVFJUb0NGU3RyaW5nUmVmKToKKyAg
ICAgICAgKE1hcnNoYWxsaW5nSGVscGVyczo6aW50VG9DRk51bWJlclJlZik6CisgICAgICAgIChN
YXJzaGFsbGluZ0hlbHBlcnM6OnNhZmVBcnJheVRvU3RyaW5nQXJyYXkpOgorICAgICAgICAoTWFy
c2hhbGxpbmdIZWxwZXJzOjpzYWZlQXJyYXlUb0ludEFycmF5KToKKyAgICAgICAgKE1hcnNoYWxs
aW5nSGVscGVyczo6c2FmZUFycmF5VG9JVW5rbm93bkFycmF5KToKKyAgICAgICAgKiBNYXJzaGFs
bGluZ0hlbHBlcnMuaDoKKyAgICAgICAgKiBXZWJBcHBsaWNhdGlvbkNhY2hlLmNwcDoKKyAgICAg
ICAgKFdlYkFwcGxpY2F0aW9uQ2FjaGU6Om9yaWdpbnNXaXRoQ2FjaGUpOgorICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkZyYW1l
TG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZEZhaWxUb1N0YXJ0UGx1Z2luIGNvbnN0KToKKyAgICAg
ICAgKiBXZWJEb3dubG9hZENGTmV0LmNwcDoKKyAgICAgICAgKFdlYkRvd25sb2FkOjppbml0VG9S
ZXN1bWVXaXRoQnVuZGxlKToKKyAgICAgICAgKFdlYkRvd25sb2FkOjpzZXREZXN0aW5hdGlvbik6
CisgICAgICAgIChXZWJEb3dubG9hZDo6d2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKiBXZWJI
aXN0b3J5LmNwcDoKKyAgICAgICAgKGNyZWF0ZVVzZXJJbmZvRnJvbUFycmF5KToKKyAgICAgICAg
KiBXZWJMb2NhbGl6YWJsZVN0cmluZ3MuY3BwOgorICAgICAgICAoY3JlYXRlV2ViS2l0QnVuZGxl
KToKKwogMjAyMS0wMi0xMCAgUm9iIEJ1aXMgIDxyYnVpc0BpZ2FsaWEuY29tPgogCiAgICAgICAg
IFVzZSBldmVudCBsb29wIHRvIHNldCB0aXRsZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS9KU0NvbnRleHQubW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29u
dGV4dC5tbQppbmRleCAwYmE3OTkxZWY3YjI3ZGFlMjU1MWQ2MDRlZmMzZGM3YjMzMmMzYmRhLi5i
ZWIxNDNkMGFmNTQxYjkzZTliZDNiNTU0ZjdkMDVlM2U2OThhOTA5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dC5tbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL0pTQ29udGV4dC5tbQpAQCAtMjYyLDcgKzI2Miw3IEBAIC0gKE5TU3RyaW5nICop
bmFtZQogICAgIGlmICghbmFtZSkKICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAgIHJldHVybiBD
RkJyaWRnaW5nUmVsZWFzZShKU1N0cmluZ0NvcHlDRlN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0
LCBuYW1lKSk7CisgICAgcmV0dXJuIGFkb3B0Q0YoSlNTdHJpbmdDb3B5Q0ZTdHJpbmcoa0NGQWxs
b2NhdG9yRGVmYXVsdCwgbmFtZSkpLmJyaWRnaW5nQXV0b3JlbGVhc2UoKTsKIH0KIAogLSAodm9p
ZClzZXROYW1lOihOU1N0cmluZyAqKW5hbWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNWYWx1ZS5tbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZS5t
bQppbmRleCAxODQ0YjA2MTMyNTUxY2U5YmJhY2U0MjQyNDFmMTZiOWJkZGQ5NGUyLi5hYzA5ZjY1
NDUwN2MzZGJkNDk2MGZkNjcxMzMyYmIzZjExZjkwNjI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0pTVmFsdWUubW0KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS9KU1ZhbHVlLm1tCkBAIC03NzMsNyArNzczLDcgQEAgc3RhdGljIEpTQ29udGFpbmVyQ29udmVy
dG9yOjpUYXNrIHZhbHVlVG9PYmplY3RXaXRob3V0Q29weShKU0dsb2JhbENvbnRleHRSZWYgY28K
ICAgICAgICAgfSBlbHNlIGlmIChKU1ZhbHVlSXNTdHJpbmcoY29udGV4dCwgdmFsdWUpKSB7CiAg
ICAgICAgICAgICAvLyBXb3VsZCBiZSBuaWNlIHRvIHVuaXF1ZSBzdHJpbmdzLCB0b28uCiAgICAg
ICAgICAgICBhdXRvIGpzc3RyaW5nID0gYWRvcHRSZWYoSlNWYWx1ZVRvU3RyaW5nQ29weShjb250
ZXh0LCB2YWx1ZSwgMCkpOwotICAgICAgICAgICAgcHJpbWl0aXZlID0gQ0ZCcmlkZ2luZ1JlbGVh
c2UoSlNTdHJpbmdDb3B5Q0ZTdHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwganNzdHJpbmcuZ2V0
KCkpKTsKKyAgICAgICAgICAgIHByaW1pdGl2ZSA9IGFkb3B0Q0YoSlNTdHJpbmdDb3B5Q0ZTdHJp
bmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwganNzdHJpbmcuZ2V0KCkpKS5icmlkZ2luZ0F1dG9yZWxl
YXNlKCk7CiAgICAgICAgIH0gZWxzZSBpZiAoSlNWYWx1ZUlzTnVsbChjb250ZXh0LCB2YWx1ZSkp
CiAgICAgICAgICAgICBwcmltaXRpdmUgPSBbTlNOdWxsIG51bGxdOwogICAgICAgICBlbHNlIHsK
QEAgLTg4MSw3ICs4ODEsNyBAQCBpZCB2YWx1ZVRvU3RyaW5nKEpTR2xvYmFsQ29udGV4dFJlZiBj
b250ZXh0LCBKU1ZhbHVlUmVmIHZhbHVlLCBKU1ZhbHVlUmVmKiBleGNlcAogICAgICAgICByZXR1
cm4gbmlsOwogICAgIH0KIAotICAgIHJldHVybiBDRkJyaWRnaW5nUmVsZWFzZShKU1N0cmluZ0Nv
cHlDRlN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBqc3N0cmluZy5nZXQoKSkpOworICAgIHJl
dHVybiBhZG9wdENGKEpTU3RyaW5nQ29weUNGU3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIGpz
c3RyaW5nLmdldCgpKSkuYnJpZGdpbmdBdXRvcmVsZWFzZSgpOwogfQogCiBpZCB2YWx1ZVRvRGF0
ZShKU0dsb2JhbENvbnRleHRSZWYgY29udGV4dCwgSlNWYWx1ZVJlZiB2YWx1ZSwgSlNWYWx1ZVJl
ZiogZXhjZXB0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9yZW1vdGUvY29jb2EvUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5tbSBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL2NvY29hL1JlbW90ZUluc3BlY3RvclhQQ0Nv
bm5lY3Rpb24ubW0KaW5kZXggNzIzMTAzYTAzODczYjM3YjlhZWI5YzdjZmU0ZDQwOTY3ODRmM2Yz
Ni4uODEzYzE2MzBlM2Q2YTBjYmIxNjhiMjc2YzY1MGUwNTcxNzIzYmU3MCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvY29jb2EvUmVtb3RlSW5zcGVj
dG9yWFBDQ29ubmVjdGlvbi5tbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L3JlbW90ZS9jb2NvYS9SZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uLm1tCkBAIC0xMTcsMTAg
KzExNywxMCBAQCBOU0RpY3Rpb25hcnkgKlJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb246OmRl
c2VyaWFsaXplTWVzc2FnZSh4cGNfb2JqZWN0X3Qgb2JqZQogICAgICAgICByZXR1cm4gbmlsOwog
ICAgIH0KIAotICAgIGF1dG8gZGljdGlvbmFyeSA9IF9DRlhQQ0NyZWF0ZUNGT2JqZWN0RnJvbVhQ
Q01lc3NhZ2UoeHBjRGljdGlvbmFyeSk7CisgICAgYXV0byBkaWN0aW9uYXJ5ID0gYWRvcHRDRihf
Q0ZYUENDcmVhdGVDRk9iamVjdEZyb21YUENNZXNzYWdlKHhwY0RpY3Rpb25hcnkpKTsKICAgICBB
U1NFUlRfV0lUSF9NRVNTQUdFKGRpY3Rpb25hcnksICJVbmFibGUgdG8gZGVzZXJpYWxpemUgeHBj
IG1lc3NhZ2UiKTsKLSAgICBBU1NFUlQoQ0ZHZXRUeXBlSUQoZGljdGlvbmFyeSkgPT0gQ0ZEaWN0
aW9uYXJ5R2V0VHlwZUlEKCkpOwotICAgIHJldHVybiBDRkJyaWRnaW5nUmVsZWFzZShkaWN0aW9u
YXJ5KTsKKyAgICBBU1NFUlQoQ0ZHZXRUeXBlSUQoZGljdGlvbmFyeS5nZXQoKSkgPT0gQ0ZEaWN0
aW9uYXJ5R2V0VHlwZUlEKCkpOworICAgIHJldHVybiBkaWN0aW9uYXJ5LmJyaWRnaW5nQXV0b3Jl
bGVhc2UoKTsKIH0KIAogdm9pZCBSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uOjpoYW5kbGVF
dmVudCh4cGNfb2JqZWN0X3Qgb2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvY29j
b2EvTlNVUkxFeHRyYXMubW0gYi9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9OU1VSTEV4dHJhcy5tbQpp
bmRleCAyMDllYTViODY2NGExYmEzMTkyZjllYzIzNTM5ZTMwY2UyYzk3YTgyLi43NTA4ZjJmNGYy
ZGM0MmU4MmFmODFmNjM0ODIwYzVkZDc2MDY1ZDBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0
Zi9jb2NvYS9OU1VSTEV4dHJhcy5tbQorKysgYi9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9OU1VSTEV4
dHJhcy5tbQpAQCAtOTIsMTAgKzkyLDEwIEBAIHZvaWQgbG9hZElETkFsbG93ZWRTY3JpcHRMaXN0
KCkKICAgICAKIHN0YXRpYyBTdHJpbmcgZGVjb2RlUGVyY2VudEVzY2FwZXMoY29uc3QgU3RyaW5n
JiBzdHJpbmcpCiB7Ci0gICAgTlNTdHJpbmcgKnN1YnN0cmluZyA9IENGQnJpZGdpbmdSZWxlYXNl
KENGVVJMQ3JlYXRlU3RyaW5nQnlSZXBsYWNpbmdQZXJjZW50RXNjYXBlcyhudWxscHRyLCBzdHJp
bmcuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgQ0ZTVFIoIiIpKSk7CisgICAgYXV0byBzdWJzdHJp
bmcgPSBhZG9wdENGKENGVVJMQ3JlYXRlU3RyaW5nQnlSZXBsYWNpbmdQZXJjZW50RXNjYXBlcyhu
dWxscHRyLCBzdHJpbmcuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgQ0ZTVFIoIiIpKSk7CiAgICAg
aWYgKCFzdWJzdHJpbmcpCiAgICAgICAgIHJldHVybiBzdHJpbmc7Ci0gICAgcmV0dXJuIHN1YnN0
cmluZzsKKyAgICByZXR1cm4gc3Vic3RyaW5nLmdldCgpOwogfQogCiBOU1N0cmluZyAqZGVjb2Rl
SG9zdE5hbWUoTlNTdHJpbmcgKnN0cmluZykKQEAgLTEzOCwxMSArMTM4LDExIEBAIE5TVVJMICpV
UkxCeVRydW5jYXRpbmdPbmVDaGFyYWN0ZXJCZWZvcmVDb21wb25lbnQoTlNVUkwgKlVSTCwgQ0ZV
UkxDb21wb25lbnRUeXBlCiAgICAgICAgIENGVVJMR2V0Qnl0ZXMoKF9fYnJpZGdlIENGVVJMUmVm
KVVSTCwgdXJsQnl0ZXMuZGF0YSgpLCBudW1CeXRlcyk7CiAgICAgfQogCi0gICAgQ0ZVUkxSZWYg
cmVzdWx0ID0gQ0ZVUkxDcmVhdGVXaXRoQnl0ZXMobnVsbHB0ciwgdXJsQnl0ZXMuZGF0YSgpLCBm
cmFnUmcubG9jYXRpb24gLSAxLCBrQ0ZTdHJpbmdFbmNvZGluZ1VURjgsIG51bGxwdHIpOworICAg
IGF1dG8gcmVzdWx0ID0gYWRvcHRDRihDRlVSTENyZWF0ZVdpdGhCeXRlcyhudWxscHRyLCB1cmxC
eXRlcy5kYXRhKCksIGZyYWdSZy5sb2NhdGlvbiAtIDEsIGtDRlN0cmluZ0VuY29kaW5nVVRGOCwg
bnVsbHB0cikpOwogICAgIGlmICghcmVzdWx0KQotICAgICAgICByZXN1bHQgPSBDRlVSTENyZWF0
ZVdpdGhCeXRlcyhudWxscHRyLCB1cmxCeXRlcy5kYXRhKCksIGZyYWdSZy5sb2NhdGlvbiAtIDEs
IGtDRlN0cmluZ0VuY29kaW5nSVNPTGF0aW4xLCBudWxscHRyKTsKKyAgICAgICAgcmVzdWx0ID0g
YWRvcHRDRihDRlVSTENyZWF0ZVdpdGhCeXRlcyhudWxscHRyLCB1cmxCeXRlcy5kYXRhKCksIGZy
YWdSZy5sb2NhdGlvbiAtIDEsIGtDRlN0cmluZ0VuY29kaW5nSVNPTGF0aW4xLCBudWxscHRyKSk7
CiAgICAgICAgIAotICAgIHJldHVybiByZXN1bHQgPyBDRkJyaWRnaW5nUmVsZWFzZShyZXN1bHQp
IDogVVJMOworICAgIHJldHVybiByZXN1bHQgPyByZXN1bHQuYnJpZGdpbmdBdXRvcmVsZWFzZSgp
IDogVVJMOwogfQogCiBzdGF0aWMgTlNVUkwgKlVSTEJ5UmVtb3ZpbmdSZXNvdXJjZVNwZWNpZmll
cihOU1VSTCAqVVJMKQpAQCAtMTU1LDcgKzE1NSw2IEBAIE5TVVJMICpVUkxXaXRoRGF0YShOU0Rh
dGEgKmRhdGEsIE5TVVJMICpiYXNlVVJMKQogICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJu
IG5pbDsKICAgICAKLSAgICBOU1VSTCAqcmVzdWx0ID0gbmlsOwogICAgIHNpemVfdCBsZW5ndGgg
PSBbZGF0YSBsZW5ndGhdOwogICAgIGlmIChsZW5ndGggPiAwKSB7CiAgICAgICAgIC8vIHdvcmsg
YXJvdW5kIDxyZGFyOi8vNDQ3MDc3MT46IENGVVJMQ3JlYXRlQWJzb2x1dGVVUkxXaXRoQnl0ZXMo
Li4sIFRSVUUpIGRvZXNuJ3QgcmVtb3ZlIG5vbi1wYXRoIGNvbXBvbmVudHMuCkBAIC0xNzEsMTMg
KzE3MCwxMiBAQCBOU1VSTCAqVVJMV2l0aERhdGEoTlNEYXRhICpkYXRhLCBOU1VSTCAqYmFzZVVS
TCkKICAgICAgICAgLy8gKGUuZyBjYWxscyB0byBOU1VSTCAtcGF0aCkuIEhvd2V2ZXIsIHRoaXMg
ZnVuY3Rpb24gaXMgbm90IHRvbGVyYW50IG9mIGlsbGVnYWwgVVRGLTggc2VxdWVuY2VzLCB3aGlj
aAogICAgICAgICAvLyBjb3VsZCBlaXRoZXIgYmUgYSBtYWxmb3JtZWQgc3RyaW5nIG9yIGJ5dGVz
IGluIGEgZGlmZmVyZW50IGVuY29kaW5nLCBsaWtlIHNoaWZ0LWppcywgc28gd2UgZmFsbCBiYWNr
CiAgICAgICAgIC8vIG9udG8gdXNpbmcgSVNPIExhdGluIDEgaW4gdGhvc2UgY2FzZXMuCi0gICAg
ICAgIHJlc3VsdCA9IENGQnJpZGdpbmdSZWxlYXNlKENGVVJMQ3JlYXRlQWJzb2x1dGVVUkxXaXRo
Qnl0ZXMobnVsbHB0ciwgYnl0ZXMsIGxlbmd0aCwga0NGU3RyaW5nRW5jb2RpbmdVVEY4LCAoX19i
cmlkZ2UgQ0ZVUkxSZWYpYmFzZVVSTCwgWUVTKSk7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gYWRv
cHRDRihDRlVSTENyZWF0ZUFic29sdXRlVVJMV2l0aEJ5dGVzKG51bGxwdHIsIGJ5dGVzLCBsZW5n
dGgsIGtDRlN0cmluZ0VuY29kaW5nVVRGOCwgKF9fYnJpZGdlIENGVVJMUmVmKWJhc2VVUkwsIFlF
UykpOwogICAgICAgICBpZiAoIXJlc3VsdCkKLSAgICAgICAgICAgIHJlc3VsdCA9IENGQnJpZGdp
bmdSZWxlYXNlKENGVVJMQ3JlYXRlQWJzb2x1dGVVUkxXaXRoQnl0ZXMobnVsbHB0ciwgYnl0ZXMs
IGxlbmd0aCwga0NGU3RyaW5nRW5jb2RpbmdJU09MYXRpbjEsIChfX2JyaWRnZSBDRlVSTFJlZili
YXNlVVJMLCBZRVMpKTsKLSAgICB9IGVsc2UKLSAgICAgICAgcmVzdWx0ID0gW05TVVJMIFVSTFdp
dGhTdHJpbmc6QCIiXTsKLQotICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgICAgICByZXN1bHQg
PSBhZG9wdENGKENGVVJMQ3JlYXRlQWJzb2x1dGVVUkxXaXRoQnl0ZXMobnVsbHB0ciwgYnl0ZXMs
IGxlbmd0aCwga0NGU3RyaW5nRW5jb2RpbmdJU09MYXRpbjEsIChfX2JyaWRnZSBDRlVSTFJlZili
YXNlVVJMLCBZRVMpKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdC5icmlkZ2luZ0F1dG9yZWxlYXNl
KCk7CisgICAgfQorICAgIHJldHVybiBbTlNVUkwgVVJMV2l0aFN0cmluZzpAIiJdOwogfQogc3Rh
dGljIE5TRGF0YSAqZGF0YVdpdGhVc2VyVHlwZWRTdHJpbmcoTlNTdHJpbmcgKnN0cmluZykKIHsK
QEAgLTMzNiwxMSArMzM0LDExIEBAIHN0YXRpYyBOU1VSTCAqVVJMQnlSZW1vdmluZ0NvbXBvbmVu
dEFuZFN1YnNlcXVlbnRDaGFyYWN0ZXIoTlNVUkwgKlVSTCwgQ0ZVUkxDb21wCiAgICAgICAgIAog
ICAgIG1lbW1vdmUodXJsQnl0ZXMgKyByYW5nZS5sb2NhdGlvbiwgdXJsQnl0ZXMgKyByYW5nZS5s
b2NhdGlvbiArIHJhbmdlLmxlbmd0aCwgbnVtQnl0ZXMgLSByYW5nZS5sb2NhdGlvbiArIHJhbmdl
Lmxlbmd0aCk7CiAgICAgCi0gICAgQ0ZVUkxSZWYgcmVzdWx0ID0gQ0ZVUkxDcmVhdGVXaXRoQnl0
ZXMobnVsbHB0ciwgdXJsQnl0ZXMsIG51bUJ5dGVzIC0gcmFuZ2UubGVuZ3RoLCBrQ0ZTdHJpbmdF
bmNvZGluZ1VURjgsIG51bGxwdHIpOworICAgIGF1dG8gcmVzdWx0ID0gYWRvcHRDRihDRlVSTENy
ZWF0ZVdpdGhCeXRlcyhudWxscHRyLCB1cmxCeXRlcywgbnVtQnl0ZXMgLSByYW5nZS5sZW5ndGgs
IGtDRlN0cmluZ0VuY29kaW5nVVRGOCwgbnVsbHB0cikpOwogICAgIGlmICghcmVzdWx0KQotICAg
ICAgICByZXN1bHQgPSBDRlVSTENyZWF0ZVdpdGhCeXRlcyhudWxscHRyLCB1cmxCeXRlcywgbnVt
Qnl0ZXMgLSByYW5nZS5sZW5ndGgsIGtDRlN0cmluZ0VuY29kaW5nSVNPTGF0aW4xLCBudWxscHRy
KTsKKyAgICAgICAgcmVzdWx0ID0gYWRvcHRDRihDRlVSTENyZWF0ZVdpdGhCeXRlcyhudWxscHRy
LCB1cmxCeXRlcywgbnVtQnl0ZXMgLSByYW5nZS5sZW5ndGgsIGtDRlN0cmluZ0VuY29kaW5nSVNP
TGF0aW4xLCBudWxscHRyKSk7CiAgICAgICAgICAgICAgICAgCi0gICAgcmV0dXJuIHJlc3VsdCA/
IENGQnJpZGdpbmdSZWxlYXNlKHJlc3VsdCkgOiBVUkw7CisgICAgcmV0dXJuIHJlc3VsdCA/IHJl
c3VsdC5icmlkZ2luZ0F1dG9yZWxlYXNlKCkgOiBVUkw7CiB9CiAKIE5TVVJMICpVUkxCeVJlbW92
aW5nVXNlckluZm8oTlNVUkwgKlVSTCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvbWFjL0FYT2JqZWN0Q2FjaGVNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L21hYy9BWE9iamVjdENhY2hlTWFjLm1tCmluZGV4IGI3Y2ZmNzRlNzYyYTI4ZTA0NTU3
NDY0MTYxMmRlODRiNTY5NDFmMjUuLjY5Y2VlMjg1ZTY2M2ZhNTY4ZWJmYzdjYTdmNWY5ZWNkM2Y1
MmZjZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL0FYT2Jq
ZWN0Q2FjaGVNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvQVhP
YmplY3RDYWNoZU1hYy5tbQpAQCAtNjAzLDcgKzYwMyw3IEBAIHN0YXRpYyBBWFRleHRNYXJrZXJS
YW5nZVJlZiBBWFRleHRNYXJrZXJSYW5nZShBWFRleHRNYXJrZXJSZWYgc3RhcnRNYXJrZXIsIEFY
VGV4CiAgICAgQVNTRVJUKGVuZE1hcmtlcik7CiAgICAgQVNTRVJUKENGR2V0VHlwZUlEKChfX2Jy
aWRnZSBDRlR5cGVSZWYpc3RhcnRNYXJrZXIpID09IEFYVGV4dE1hcmtlckdldFR5cGVJRCgpKTsK
ICAgICBBU1NFUlQoQ0ZHZXRUeXBlSUQoKF9fYnJpZGdlIENGVHlwZVJlZillbmRNYXJrZXIpID09
IEFYVGV4dE1hcmtlckdldFR5cGVJRCgpKTsKLSAgICByZXR1cm4gKEFYVGV4dE1hcmtlclJhbmdl
UmVmKUNGQnJpZGdpbmdSZWxlYXNlKEFYVGV4dE1hcmtlclJhbmdlQ3JlYXRlKGtDRkFsbG9jYXRv
ckRlZmF1bHQsIHN0YXJ0TWFya2VyLCBlbmRNYXJrZXIpKTsKKyAgICByZXR1cm4gKEFYVGV4dE1h
cmtlclJhbmdlUmVmKWFkb3B0Q0YoQVhUZXh0TWFya2VyUmFuZ2VDcmVhdGUoa0NGQWxsb2NhdG9y
RGVmYXVsdCwgc3RhcnRNYXJrZXIsIGVuZE1hcmtlcikpLmJyaWRnaW5nQXV0b3JlbGVhc2UoKTsK
IH0KIAogc3RhdGljIEFYVGV4dE1hcmtlclJhbmdlUmVmIHRleHRNYXJrZXJSYW5nZUZyb21NYXJr
ZXJzKEFYVGV4dE1hcmtlclJlZiB0ZXh0TWFya2VyMSwgQVhUZXh0TWFya2VyUmVmIHRleHRNYXJr
ZXIyKQpAQCAtNjE4LDE0ICs2MTgsMTQgQEAgc3RhdGljIEFYVGV4dE1hcmtlclJlZiBBWFRleHRN
YXJrZXJSYW5nZVN0YXJ0KEFYVGV4dE1hcmtlclJhbmdlUmVmIHRleHRNYXJrZXJSYW4KIHsKICAg
ICBBU1NFUlQodGV4dE1hcmtlclJhbmdlKTsKICAgICBBU1NFUlQoQ0ZHZXRUeXBlSUQoKF9fYnJp
ZGdlIENGVHlwZVJlZil0ZXh0TWFya2VyUmFuZ2UpID09IEFYVGV4dE1hcmtlclJhbmdlR2V0VHlw
ZUlEKCkpOwotICAgIHJldHVybiAoQVhUZXh0TWFya2VyUmVmKUNGQnJpZGdpbmdSZWxlYXNlKEFY
VGV4dE1hcmtlclJhbmdlQ29weVN0YXJ0TWFya2VyKHRleHRNYXJrZXJSYW5nZSkpOworICAgIHJl
dHVybiAoQVhUZXh0TWFya2VyUmVmKWFkb3B0Q0YoQVhUZXh0TWFya2VyUmFuZ2VDb3B5U3RhcnRN
YXJrZXIodGV4dE1hcmtlclJhbmdlKSkuYnJpZGdpbmdBdXRvcmVsZWFzZSgpOwogfQogCiBzdGF0
aWMgQVhUZXh0TWFya2VyUmVmIEFYVGV4dE1hcmtlclJhbmdlRW5kKEFYVGV4dE1hcmtlclJhbmdl
UmVmIHRleHRNYXJrZXJSYW5nZSkKIHsKICAgICBBU1NFUlQodGV4dE1hcmtlclJhbmdlKTsKICAg
ICBBU1NFUlQoQ0ZHZXRUeXBlSUQoKF9fYnJpZGdlIENGVHlwZVJlZil0ZXh0TWFya2VyUmFuZ2Up
ID09IEFYVGV4dE1hcmtlclJhbmdlR2V0VHlwZUlEKCkpOwotICAgIHJldHVybiAoQVhUZXh0TWFy
a2VyUmVmKUNGQnJpZGdpbmdSZWxlYXNlKEFYVGV4dE1hcmtlclJhbmdlQ29weUVuZE1hcmtlcih0
ZXh0TWFya2VyUmFuZ2UpKTsKKyAgICByZXR1cm4gKEFYVGV4dE1hcmtlclJlZilhZG9wdENGKEFY
VGV4dE1hcmtlclJhbmdlQ29weUVuZE1hcmtlcih0ZXh0TWFya2VyUmFuZ2UpKS5icmlkZ2luZ0F1
dG9yZWxlYXNlKCk7CiB9CiAKIHN0YXRpYyBUZXh0TWFya2VyRGF0YSBnZXRCeXRlc0Zyb21BWFRl
eHRNYXJrZXIoQVhUZXh0TWFya2VyUmVmIHRleHRNYXJrZXIpCkBAIC02NzEsNyArNjcxLDcgQEAg
QVhUZXh0TWFya2VyUmVmIHRleHRNYXJrZXJGb3JWaXNpYmxlUG9zaXRpb24oQVhPYmplY3RDYWNo
ZSogY2FjaGUsIGNvbnN0IFZpc2libGUKICAgICBpZiAoIXRleHRNYXJrZXJEYXRhKQogICAgICAg
ICByZXR1cm4gbmlsOwogCi0gICAgcmV0dXJuIChBWFRleHRNYXJrZXJSZWYpQ0ZCcmlkZ2luZ1Jl
bGVhc2UoQVhUZXh0TWFya2VyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIChjb25zdCBVSW50
OCopJnRleHRNYXJrZXJEYXRhLnZhbHVlKCksIHNpemVvZih0ZXh0TWFya2VyRGF0YS52YWx1ZSgp
KSkpOworICAgIHJldHVybiAoQVhUZXh0TWFya2VyUmVmKWFkb3B0Q0YoQVhUZXh0TWFya2VyQ3Jl
YXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIChjb25zdCBVSW50OCopJnRleHRNYXJrZXJEYXRhLnZh
bHVlKCksIHNpemVvZih0ZXh0TWFya2VyRGF0YS52YWx1ZSgpKSkpLmJyaWRnaW5nQXV0b3JlbGVh
c2UoKTsKIH0KIAogVmlzaWJsZVBvc2l0aW9uIHZpc2libGVQb3NpdGlvbkZvclRleHRNYXJrZXIo
QVhPYmplY3RDYWNoZSogY2FjaGUsIEFYVGV4dE1hcmtlclJlZiB0ZXh0TWFya2VyKQpAQCAtNzIx
LDcgKzcyMSw3IEBAIEFYVGV4dE1hcmtlclJlZiB0ZXh0TWFya2VyRm9yQ2hhcmFjdGVyT2Zmc2V0
KEFYT2JqZWN0Q2FjaGUqIGNhY2hlLCBjb25zdCBDaGFyYWN0CiAgICAgaWYgKCF0ZXh0TWFya2Vy
RGF0YS5heElEIHx8IHRleHRNYXJrZXJEYXRhLmlnbm9yZWQpCiAgICAgICAgIHJldHVybiBuaWw7
CiAKLSAgICByZXR1cm4gKEFYVGV4dE1hcmtlclJlZilDRkJyaWRnaW5nUmVsZWFzZShBWFRleHRN
YXJrZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgKGNvbnN0IFVJbnQ4KikmdGV4dE1hcmtl
ckRhdGEsIHNpemVvZih0ZXh0TWFya2VyRGF0YSkpKTsKKyAgICByZXR1cm4gKEFYVGV4dE1hcmtl
clJlZilhZG9wdENGKEFYVGV4dE1hcmtlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAoY29u
c3QgVUludDgqKSZ0ZXh0TWFya2VyRGF0YSwgc2l6ZW9mKHRleHRNYXJrZXJEYXRhKSkpLmJyaWRn
aW5nQXV0b3JlbGVhc2UoKTsKIH0KIAogQ2hhcmFjdGVyT2Zmc2V0IGNoYXJhY3Rlck9mZnNldEZv
clRleHRNYXJrZXIoQVhPYmplY3RDYWNoZSogY2FjaGUsIEFYVGV4dE1hcmtlclJlZiB0ZXh0TWFy
a2VyKQpAQCAtNzQ3LDcgKzc0Nyw3IEBAIEFYVGV4dE1hcmtlclJlZiBzdGFydE9yRW5kVGV4dE1h
cmtlckZvclJhbmdlKEFYT2JqZWN0Q2FjaGUqIGNhY2hlLCBjb25zdCBPcHRpb25hCiAgICAgaWYg
KCF0ZXh0TWFya2VyRGF0YS5heElEKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgcmV0dXJu
IChBWFRleHRNYXJrZXJSZWYpQ0ZCcmlkZ2luZ1JlbGVhc2UoQVhUZXh0TWFya2VyQ3JlYXRlKGtD
RkFsbG9jYXRvckRlZmF1bHQsIChjb25zdCBVSW50OCopJnRleHRNYXJrZXJEYXRhLCBzaXplb2Yo
dGV4dE1hcmtlckRhdGEpKSk7CisgICAgcmV0dXJuIChBWFRleHRNYXJrZXJSZWYpYWRvcHRDRihB
WFRleHRNYXJrZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgKGNvbnN0IFVJbnQ4KikmdGV4
dE1hcmtlckRhdGEsIHNpemVvZih0ZXh0TWFya2VyRGF0YSkpKS5icmlkZ2luZ0F1dG9yZWxlYXNl
KCk7CiB9CiAKIEFYVGV4dE1hcmtlclJhbmdlUmVmIHRleHRNYXJrZXJSYW5nZUZyb21SYW5nZShB
WE9iamVjdENhY2hlKiBjYWNoZSwgY29uc3QgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiByYW5nZSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyQmFzZS5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
bWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5tbQppbmRleCA5MzA3Njg3Yjdm
ODA3ZGI1YWJhNDY3NzUwODZjNGE1Y2M4ZGU3MGMxLi4wZmM4Mjg4NDZkYjMxZmE4YjA1NjViMWNi
N2ZmYzA5ODA2ZjQwODQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNl
Lm1tCkBAIC0zMjQsOCArMzI0LDcgQEAgLSAoV2ViQ29yZTo6QVhDb3JlT2JqZWN0Kil1cGRhdGVP
YmplY3RCYWNraW5nU3RvcmUKIHsKICAgICAvLyBDYWxsaW5nIHVwZGF0ZUJhY2tpbmdTdG9yZSgp
IGNhbiBpbnZhbGlkYXRlIHRoaXMgZWxlbWVudCBzbyBzZWxmIG11c3QgYmUgcmV0YWluZWQuCiAg
ICAgLy8gSWYgaXQgZG9lcyBiZWNvbWUgaW52YWxpZGF0ZWQsIHNlbGYuYXhCYWNraW5nT2JqZWN0
IHdpbGwgYmUgbmlsLgotICAgIENGUmV0YWluKChfX2JyaWRnZSBDRlR5cGVSZWYpc2VsZik7Ci0g
ICAgQ0ZBdXRvcmVsZWFzZSgoX19icmlkZ2UgQ0ZUeXBlUmVmKXNlbGYpOworICAgIHJldGFpblB0
cihzZWxmKS5hdXRvcmVsZWFzZSgpOwogCiAgICAgYXV0byogYmFja2luZ09iamVjdCA9IHNlbGYu
YXhCYWNraW5nT2JqZWN0OwogICAgIGlmICghYmFja2luZ09iamVjdCkKQEAgLTQzMywxMSArNDMy
LDEwIEBAIHN0YXRpYyB2b2lkIGNvbnZlcnRQYXRoVG9TY3JlZW5TcGFjZUZ1bmN0aW9uKFBhdGhD
b252ZXJzaW9uSW5mbyYgY29udmVyc2lvbiwgY29uCiAKIC0gKENHUGF0aFJlZiljb252ZXJ0UGF0
aFRvU2NyZWVuU3BhY2U6KGNvbnN0IFBhdGgmKXBhdGgKIHsKLSAgICBQYXRoQ29udmVyc2lvbklu
Zm8gY29udmVyc2lvbiA9IHsgc2VsZiwgQ0dQYXRoQ3JlYXRlTXV0YWJsZSgpIH07CisgICAgUGF0
aENvbnZlcnNpb25JbmZvIGNvbnZlcnNpb24gPSB7IHNlbGYsIGFkb3B0Q0YoQ0dQYXRoQ3JlYXRl
TXV0YWJsZSgpKS5hdXRvcmVsZWFzZSgpIH07CiAgICAgcGF0aC5hcHBseShbJmNvbnZlcnNpb25d
KGNvbnN0IFBhdGhFbGVtZW50JiBwYXRoRWxlbWVudCkgewogICAgICAgICBjb252ZXJ0UGF0aFRv
U2NyZWVuU3BhY2VGdW5jdGlvbihjb252ZXJzaW9uLCBwYXRoRWxlbWVudCk7CiAgICAgfSk7Ci0g
ICAgQ0ZBdXRvcmVsZWFzZShjb252ZXJzaW9uLnBhdGgpOwogICAgIHJldHVybiBjb252ZXJzaW9u
LnBhdGg7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFj
L1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KaW5kZXgg
ODNlZjI0YzE1OGFlNzBjMzYyNGY5MzUzYzc2OWZkZTBjYzI3NTY2ZS4uMmIwMDVjZTY3NTkwOTQ2
NzQwY2NiZWMzNjA5MzAyZWRkOGNmOWY4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdy
YXBwZXJNYWMubW0KQEAgLTc0Miw3ICs3NDIsNyBAQCBzdGF0aWMgaWQgbmV4dFRleHRNYXJrZXJG
b3JDaGFyYWN0ZXJPZmZzZXQoQVhPYmplY3RDYWNoZSogY2FjaGUsIENoYXJhY3Rlck9mZnNldAog
ICAgIGNhY2hlLT50ZXh0TWFya2VyRGF0YUZvck5leHRDaGFyYWN0ZXJPZmZzZXQodGV4dE1hcmtl
ckRhdGEsIGNoYXJhY3Rlck9mZnNldCk7CiAgICAgaWYgKCF0ZXh0TWFya2VyRGF0YS5heElEKQog
ICAgICAgICByZXR1cm4gbmlsOwotICAgIHJldHVybiBDRkJyaWRnaW5nUmVsZWFzZShBWFRleHRN
YXJrZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgKGNvbnN0IFVJbnQ4KikmdGV4dE1hcmtl
ckRhdGEsIHNpemVvZih0ZXh0TWFya2VyRGF0YSkpKTsKKyAgICByZXR1cm4gYWRvcHRDRihBWFRl
eHRNYXJrZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgKGNvbnN0IFVJbnQ4KikmdGV4dE1h
cmtlckRhdGEsIHNpemVvZih0ZXh0TWFya2VyRGF0YSkpKS5icmlkZ2luZ0F1dG9yZWxlYXNlKCk7
CiB9CiAKIHN0YXRpYyBpZCBwcmV2aW91c1RleHRNYXJrZXJGb3JDaGFyYWN0ZXJPZmZzZXQoQVhP
YmplY3RDYWNoZSogY2FjaGUsIENoYXJhY3Rlck9mZnNldCYgY2hhcmFjdGVyT2Zmc2V0KQpAQCAt
NzU0LDcgKzc1NCw3IEBAIHN0YXRpYyBpZCBwcmV2aW91c1RleHRNYXJrZXJGb3JDaGFyYWN0ZXJP
ZmZzZXQoQVhPYmplY3RDYWNoZSogY2FjaGUsIENoYXJhY3Rlck9mCiAgICAgY2FjaGUtPnRleHRN
YXJrZXJEYXRhRm9yUHJldmlvdXNDaGFyYWN0ZXJPZmZzZXQodGV4dE1hcmtlckRhdGEsIGNoYXJh
Y3Rlck9mZnNldCk7CiAgICAgaWYgKCF0ZXh0TWFya2VyRGF0YS5heElEKQogICAgICAgICByZXR1
cm4gbmlsOwotICAgIHJldHVybiBDRkJyaWRnaW5nUmVsZWFzZShBWFRleHRNYXJrZXJDcmVhdGUo
a0NGQWxsb2NhdG9yRGVmYXVsdCwgKGNvbnN0IFVJbnQ4KikmdGV4dE1hcmtlckRhdGEsIHNpemVv
Zih0ZXh0TWFya2VyRGF0YSkpKTsKKyAgICByZXR1cm4gYWRvcHRDRihBWFRleHRNYXJrZXJDcmVh
dGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgKGNvbnN0IFVJbnQ4KikmdGV4dE1hcmtlckRhdGEsIHNp
emVvZih0ZXh0TWFya2VyRGF0YSkpKS5icmlkZ2luZ0F1dG9yZWxlYXNlKCk7CiB9CiAKIC0gKGlk
KW5leHRUZXh0TWFya2VyRm9yQ2hhcmFjdGVyT2Zmc2V0OihDaGFyYWN0ZXJPZmZzZXQmKWNoYXJh
Y3Rlck9mZnNldApAQCAtNzkyLDcgKzc5Miw3IEBAIC0gKGlkKXRleHRNYXJrZXJGb3JGaXJzdFBv
c2l0aW9uSW5UZXh0Q29udHJvbDooSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQgJil0ZXh0CiAg
ICAgaWYgKCF0ZXh0TWFya2VyRGF0YSkKICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAgIHJldHVy
biBDRkJyaWRnaW5nUmVsZWFzZShBWFRleHRNYXJrZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVs
dCwgKGNvbnN0IFVJbnQ4KikmdGV4dE1hcmtlckRhdGEudmFsdWUoKSwgc2l6ZW9mKHRleHRNYXJr
ZXJEYXRhLnZhbHVlKCkpKSk7CisgICAgcmV0dXJuIGFkb3B0Q0YoQVhUZXh0TWFya2VyQ3JlYXRl
KGtDRkFsbG9jYXRvckRlZmF1bHQsIChjb25zdCBVSW50OCopJnRleHRNYXJrZXJEYXRhLnZhbHVl
KCksIHNpemVvZih0ZXh0TWFya2VyRGF0YS52YWx1ZSgpKSkpLmJyaWRnaW5nQXV0b3JlbGVhc2Uo
KTsKIH0KIAogLy8gV2hlbiBtb2RpZnlpbmcgYXR0cmlidXRlZCBzdHJpbmdzLCB0aGUgcmFuZ2Ug
Y2FuIGNvbWUgZnJvbSBhIHNvdXJjZSB3aGljaCBtYXkgcHJvdmlkZSBmYXVsdHkgaW5mb3JtYXRp
b24gKGUuZy4gdGhlIHNwZWxsIGNoZWNrZXIpLgpAQCAtMTAxOCwxMSArMTAxOCw4IEBAIHN0YXRp
YyB2b2lkIEFYQXR0cmlidXRlU3RyaW5nU2V0RWxlbWVudChOU011dGFibGVBdHRyaWJ1dGVkU3Ry
aW5nKiBhdHRyU3RyaW5nLCBOCiAgICAgICAgIGlmIChbYXR0cmlidXRlIGlzRXF1YWxUb1N0cmlu
ZzpOU0FjY2Vzc2liaWxpdHlBdHRhY2htZW50VGV4dEF0dHJpYnV0ZV0gJiYgb2JqZWN0LT5pc0F0
dGFjaG1lbnQoKSAmJiBbb2JqZWN0V3JhcHBlciBhdHRhY2htZW50Vmlld10pCiAgICAgICAgICAg
ICBvYmplY3RXcmFwcGVyID0gW29iamVjdFdyYXBwZXIgYXR0YWNobWVudFZpZXddOwogICAgICAg
ICAKLSAgICAgICAgQVhVSUVsZW1lbnRSZWYgYXhFbGVtZW50ID0gTlNBY2Nlc3NpYmlsaXR5Q3Jl
YXRlQVhVSUVsZW1lbnRSZWYob2JqZWN0V3JhcHBlcik7Ci0gICAgICAgIGlmIChheEVsZW1lbnQp
IHsKLSAgICAgICAgICAgIFthdHRyU3RyaW5nIGFkZEF0dHJpYnV0ZTphdHRyaWJ1dGUgdmFsdWU6
KF9fYnJpZGdlIGlkKWF4RWxlbWVudCByYW5nZTpyYW5nZV07Ci0gICAgICAgICAgICBDRlJlbGVh
c2UoYXhFbGVtZW50KTsKLSAgICAgICAgfQorICAgICAgICBpZiAoYXV0byBheEVsZW1lbnQgPSBh
ZG9wdENGKE5TQWNjZXNzaWJpbGl0eUNyZWF0ZUFYVUlFbGVtZW50UmVmKG9iamVjdFdyYXBwZXIp
KSkKKyAgICAgICAgICAgIFthdHRyU3RyaW5nIGFkZEF0dHJpYnV0ZTphdHRyaWJ1dGUgdmFsdWU6
KF9fYnJpZGdlIGlkKWF4RWxlbWVudC5nZXQoKSByYW5nZTpyYW5nZV07CiAgICAgfSBlbHNlCiAg
ICAgICAgIFthdHRyU3RyaW5nIHJlbW92ZUF0dHJpYnV0ZTphdHRyaWJ1dGUgcmFuZ2U6cmFuZ2Vd
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVy
dGVyLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCmlu
ZGV4IDY1ZTg1NTI1MjUwZDQwYmFjMGMzZjM4NTZiNzgzOTgzNjBjMGI5MjQuLjhjYWZhN2MzNmU2
ZGQ2MDUwOTI3N2RlMGFjZmQyYzAzMTU2OGQwYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW0KQEAgLTIwOTAsNyArMjA5MCw2IEBAIHZvaWQgSFRN
TENvbnZlcnRlcjo6X3Byb2Nlc3NUZXh0KENoYXJhY3RlckRhdGEmIGNoYXJhY3RlckRhdGEpCiAg
ICAgdW5pY2hhciBsYXN0Q2hhciA9ICh0ZXh0TGVuZ3RoID4gMCkgPyBbW19hdHRyU3RyIHN0cmlu
Z10gY2hhcmFjdGVyQXRJbmRleDp0ZXh0TGVuZ3RoIC0gMV0gOiAnXG4nOwogICAgIEJPT0wgc3Vw
cHJlc3NMZWFkaW5nU3BhY2UgPSAoKF9mbGFncy5pc1NvZnQgJiYgbGFzdENoYXIgPT0gJyAnKSB8
fCBsYXN0Q2hhciA9PSAnXG4nIHx8IGxhc3RDaGFyID09ICdccicgfHwgbGFzdENoYXIgPT0gJ1x0
JyB8fCBsYXN0Q2hhciA9PSBOU1BhcmFncmFwaFNlcGFyYXRvckNoYXJhY3RlciB8fCBsYXN0Q2hh
ciA9PSBOU0xpbmVTZXBhcmF0b3JDaGFyYWN0ZXIgfHwgbGFzdENoYXIgPT0gTlNGb3JtRmVlZENo
YXJhY3RlciB8fCBsYXN0Q2hhciA9PSBXZWJOZXh0TGluZUNoYXJhY3Rlcik7CiAgICAgTlNSYW5n
ZSByYW5nZVRvUmVwbGFjZSA9IE5TTWFrZVJhbmdlKHRleHRMZW5ndGgsIDApOwotICAgIENGTXV0
YWJsZVN0cmluZ1JlZiBtdXRzdHIgPSBOVUxMOwogCiAgICAgU3RyaW5nIG9yaWdpbmFsU3RyaW5n
ID0gY2hhcmFjdGVyRGF0YS5kYXRhKCk7CiAgICAgdW5zaWduZWQgc3RhcnRPZmZzZXQgPSAwOwpA
QCAtMjE2MCw4ICsyMTU5LDYgQEAgdm9pZCBIVE1MQ29udmVydGVyOjpfcHJvY2Vzc1RleHQoQ2hh
cmFjdGVyRGF0YSYgY2hhcmFjdGVyRGF0YSkKICAgICAgICAgICAgIFtfYXR0clN0ciBzZXRBdHRy
aWJ1dGVzOmFnZ3JlZ2F0ZWRBdHRyaWJ1dGVzRm9yQW5jZXN0b3JzKGNoYXJhY3RlckRhdGEpIHJh
bmdlOnJhbmdlVG9SZXBsYWNlXTsKICAgICAgICAgX2ZsYWdzLmlzU29mdCA9IHdhc1NwYWNlOwog
ICAgIH0KLSAgICBpZiAobXV0c3RyKQotICAgICAgICBDRlJlbGVhc2UobXV0c3RyKTsKIH0KIAog
dm9pZCBIVE1MQ29udmVydGVyOjpfdHJhdmVyc2VOb2RlKE5vZGUmIG5vZGUsIHVuc2lnbmVkIGRl
cHRoLCBib29sIGVtYmVkZGVkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nv
Y29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jb2Nv
YS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EubW0KaW5kZXggOTZmNDZjNGNjMDJlODlhODJhNmRmNjUz
Njc0ZDA5NzM0MzE4MDU0Zi4uZmE0YjkwM2JlZjkzOTQ4MWMyMmVhN2RmNTUxZThiNTVlN2UwZTUy
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0
b3JDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY29jb2EvRGlza0NhY2hlTW9u
aXRvckNvY29hLm1tCkBAIC0xMDIsMTAgKzEwMiw5IEBAIERpc2tDYWNoZU1vbml0b3I6OkRpc2tD
YWNoZU1vbml0b3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBQQUw6OlNlc3Npb25J
CiAKICNpZiBVU0UoV0VCX1RIUkVBRCkKICAgICBhdXRvIGJsb2NrVG9SdW4gPSBeKENGQ2FjaGVk
VVJMUmVzcG9uc2VSZWYgcmVzcG9uc2UpIHsKLSAgICAgICAgQ0ZSZXRhaW4ocmVzcG9uc2UpOwor
ICAgICAgICBhdXRvIHN0cm9uZ1Jlc3BvbnNlID0gcmV0YWluUHRyKHJlc3BvbnNlKTsKICAgICAg
ICAgV2ViVGhyZWFkUnVuKF57Ci0gICAgICAgICAgICBibG9jayhyZXNwb25zZSk7Ci0gICAgICAg
ICAgICBDRlJlbGVhc2UocmVzcG9uc2UpOworICAgICAgICAgICAgYmxvY2soc3Ryb25nUmVzcG9u
c2UuZ2V0KCkpOwogICAgICAgICB9KTsKICAgICB9OwogI2Vsc2UKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvbWFjL0V2ZW50SGFuZGxlck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvbWFjL0V2ZW50SGFuZGxlck1hYy5tbQppbmRleCBiMjQ5ZTRmNGZkOTkyYjRlNjFhZTdmZWY5
MDAwOGY1NjhmOTEwZTliLi45ZDEwYTlmYTdmMTlkNDAyMWMxNDg3ZDVlYmNhNjUwM2FlY2FjNDJl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9FdmVudEhhbmRsZXJNYWMubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvRXZlbnRIYW5kbGVyTWFjLm1tCkBAIC00Njgs
MTMgKzQ2OCwxMiBAQCBzdGF0aWMgdm9pZCBzZXROU1Njcm9sbFZpZXdTY3JvbGxXaGVlbFNob3Vs
ZFJldGFpblNlbGYoYm9vbCBzaG91bGRSZXRhaW4pCiAKIHN0YXRpYyB2b2lkIHNlbGZSZXRhaW5p
bmdOU1Njcm9sbFZpZXdTY3JvbGxXaGVlbChOU1Njcm9sbFZpZXcgKnNlbGYsIFNFTCBzZWxlY3Rv
ciwgTlNFdmVudCAqZXZlbnQpCiB7CisgICAgUmV0YWluUHRyPE5TU2Nyb2xsVmlldz4gc3Ryb25n
U2VsZjsKICAgICBib29sIHNob3VsZFJldGFpblNlbGYgPSBpc01haW5UaHJlYWQoKSAmJiBuc1Nj
cm9sbFZpZXdTY3JvbGxXaGVlbFNob3VsZFJldGFpblNlbGYoKTsKLQogICAgIGlmIChzaG91bGRS
ZXRhaW5TZWxmKQotICAgICAgICBDRlJldGFpbigoX19icmlkZ2UgQ0ZUeXBlUmVmKXNlbGYpOwor
ICAgICAgICBzdHJvbmdTZWxmID0gcmV0YWluUHRyKHNlbGYpOworCiAgICAgd3RmQ2FsbElNUDx2
b2lkPihvcmlnaW5hbE5TU2Nyb2xsVmlld1Njcm9sbFdoZWVsLCBzZWxmLCBzZWxlY3RvciwgZXZl
bnQpOwotICAgIGlmIChzaG91bGRSZXRhaW5TZWxmKQotICAgICAgICBDRlJlbGVhc2UoKF9fYnJp
ZGdlIENGVHlwZVJlZilzZWxmKTsKIH0KIAogYm9vbCBFdmVudEhhbmRsZXI6OnBhc3NXaGVlbEV2
ZW50VG9XaWRnZXQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50LCBXaWRnZXQm
IHdpZGdldCwgT3B0aW9uU2V0PFdoZWVsRXZlbnRQcm9jZXNzaW5nU3RlcHM+IHByb2Nlc3NpbmdT
dGVwcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvd2luL0ZyYW1lQ0dXaW4uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGFnZS93aW4vRnJhbWVDR1dpbi5jcHAKaW5kZXggZjA1NTZhM2Rh
YjJhOTI5ZmZiZGNjM2EyMGE2MTk2NzU2YjY2N2EyMS4uNzNkOGI0OWNlYTdjYTY1OGQ1NTQ2ZDNl
YjE1MjJhZDM0YzBhZWMxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS93aW4vRnJh
bWVDR1dpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS93aW4vRnJhbWVDR1dpbi5jcHAK
QEAgLTY4LDE1ICs2OCwxNCBAQCBHRElPYmplY3Q8SEJJVE1BUD4gaW1hZ2VGcm9tUmVjdChjb25z
dCBGcmFtZSogZnJhbWUsIEludFJlY3QmIGlyKQogICAgICAgICByZXR1cm4gaGJtcDsKIAogICAg
IEhHRElPQkogaGJtcE9sZCA9IFNlbGVjdE9iamVjdChoZGMuZ2V0KCksIGhibXAuZ2V0KCkpOwot
ICAgIENHQ29udGV4dFJlZiBjb250ZXh0ID0gQ0dCaXRtYXBDb250ZXh0Q3JlYXRlKHN0YXRpY19j
YXN0PHZvaWQqPihiaXRzKSwgdywgaCwKLSAgICAgICAgOCwgdyAqIHNpemVvZihSR0JRVUFEKSwg
c1JHQkNvbG9yU3BhY2VSZWYoKSwga0NHQml0bWFwQnl0ZU9yZGVyMzJMaXR0bGUgfCBrQ0dJbWFn
ZUFscGhhUHJlbXVsdGlwbGllZEZpcnN0KTsKLSAgICBDR0NvbnRleHRTYXZlR1N0YXRlKGNvbnRl
eHQpOworICAgIGF1dG8gY29udGV4dCA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlKHN0
YXRpY19jYXN0PHZvaWQqPihiaXRzKSwgdywgaCwKKyAgICAgICAgOCwgdyAqIHNpemVvZihSR0JR
VUFEKSwgc1JHQkNvbG9yU3BhY2VSZWYoKSwga0NHQml0bWFwQnl0ZU9yZGVyMzJMaXR0bGUgfCBr
Q0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZEZpcnN0KSk7CisgICAgQ0dDb250ZXh0U2F2ZUdTdGF0
ZShjb250ZXh0LmdldCgpKTsKIAotICAgIEdyYXBoaWNzQ29udGV4dCBnYyhjb250ZXh0KTsKKyAg
ICBHcmFwaGljc0NvbnRleHQgZ2MoY29udGV4dC5nZXQoKSk7CiAKICAgICBkcmF3UmVjdEludG9D
b250ZXh0KGlyLCBmcmFtZS0+dmlldygpLCBnYyk7CiAKLSAgICBDR0NvbnRleHRSZWxlYXNlKGNv
bnRleHQpOwogICAgIFNlbGVjdE9iamVjdChoZGMuZ2V0KCksIGhibXBPbGQpOwogCiAgICAgZnJh
bWUtPnZpZXcoKS0+c2V0UGFpbnRCZWhhdmlvcihvbGRQYWludEJlaGF2aW9yKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL01haW5UaHJlYWRTaGFyZWRUaW1lckNGLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL01haW5UaHJlYWRTaGFyZWRUaW1lckNGLmNw
cAppbmRleCAyOGNkOWI3M2ZlNmI4YTg4YTk0NGEyMDIwOWQ3YTdhMGUwNWUwMTA0Li41NDIwYTVh
ODU5ZmJjYmNjMDRmNWQ1Zjk4NWYwODcyYTU0MDUxM2I4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jZi9NYWluVGhyZWFkU2hhcmVkVGltZXJDRi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY2YvTWFpblRocmVhZFNoYXJlZFRpbWVyQ0YuY3BwCkBAIC0zNyw3
ICszNywxMSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBDRlJ1bkxvb3BUaW1l
clJlZiBzaGFyZWRUaW1lcjsKK3N0YXRpYyBSZXRhaW5QdHI8Q0ZSdW5Mb29wVGltZXJSZWY+JiBz
aGFyZWRUaW1lcigpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxDRlJ1
bkxvb3BUaW1lclJlZj4+IHNoYXJlZFRpbWVyOworICAgIHJldHVybiBzaGFyZWRUaW1lcjsKK30K
IHN0YXRpYyB2b2lkIHRpbWVyRmlyZWQoQ0ZSdW5Mb29wVGltZXJSZWYsIHZvaWQqKTsKIAogc3Rh
dGljIGNvbnN0IENGVGltZUludGVydmFsIGtDRlRpbWVJbnRlcnZhbERpc3RhbnRGdXR1cmUgPSBz
dGQ6Om51bWVyaWNfbGltaXRzPENGVGltZUludGVydmFsPjo6bWF4KCk7CkBAIC04Myw3ICs4Nyw3
IEBAIHN0YXRpYyB2b2lkIHRpbWVyRmlyZWQoQ0ZSdW5Mb29wVGltZXJSZWYsIHZvaWQqKQogCiB2
b2lkIE1haW5UaHJlYWRTaGFyZWRUaW1lcjo6cmVzdGFydFNoYXJlZFRpbWVyKCkKIHsKLSAgICBp
ZiAoIXNoYXJlZFRpbWVyKQorICAgIGlmICghc2hhcmVkVGltZXIoKSkKICAgICAgICAgcmV0dXJu
OwogCiAgICAgTWFpblRocmVhZFNoYXJlZFRpbWVyOjpzaW5nbGV0b24oKS5zdG9wKCk7CkBAIC05
MiwxMiArOTYsMTEgQEAgdm9pZCBNYWluVGhyZWFkU2hhcmVkVGltZXI6OnJlc3RhcnRTaGFyZWRU
aW1lcigpCiAKIHZvaWQgTWFpblRocmVhZFNoYXJlZFRpbWVyOjppbnZhbGlkYXRlKCkKIHsKLSAg
ICBpZiAoIXNoYXJlZFRpbWVyKQorICAgIGlmICghc2hhcmVkVGltZXIoKSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgQ0ZSdW5Mb29wVGltZXJJbnZhbGlkYXRlKHNoYXJlZFRpbWVyKTsKLSAgICBD
RlJlbGVhc2Uoc2hhcmVkVGltZXIpOwotICAgIHNoYXJlZFRpbWVyID0gbnVsbHB0cjsKKyAgICBD
RlJ1bkxvb3BUaW1lckludmFsaWRhdGUoc2hhcmVkVGltZXIoKS5nZXQoKSk7CisgICAgc2hhcmVk
VGltZXIoKSA9IG51bGxwdHI7CiB9CiAKIHZvaWQgTWFpblRocmVhZFNoYXJlZFRpbWVyOjpzZXRG
aXJlSW50ZXJ2YWwoU2Vjb25kcyBpbnRlcnZhbCkKQEAgLTEwNSwxMiArMTA4LDEyIEBAIHZvaWQg
TWFpblRocmVhZFNoYXJlZFRpbWVyOjpzZXRGaXJlSW50ZXJ2YWwoU2Vjb25kcyBpbnRlcnZhbCkK
ICAgICBBU1NFUlQobV9maXJlZEZ1bmN0aW9uKTsKIAogICAgIENGQWJzb2x1dGVUaW1lIGZpcmVE
YXRlID0gQ0ZBYnNvbHV0ZVRpbWVHZXRDdXJyZW50KCkgKyBpbnRlcnZhbC52YWx1ZSgpOwotICAg
IGlmICghc2hhcmVkVGltZXIpIHsKLSAgICAgICAgc2hhcmVkVGltZXIgPSBDRlJ1bkxvb3BUaW1l
ckNyZWF0ZShudWxscHRyLCBmaXJlRGF0ZSwga0NGVGltZUludGVydmFsRGlzdGFudEZ1dHVyZSwg
MCwgMCwgdGltZXJGaXJlZCwgbnVsbHB0cik7CisgICAgaWYgKCFzaGFyZWRUaW1lcigpKSB7Cisg
ICAgICAgIHNoYXJlZFRpbWVyKCkgPSBhZG9wdENGKENGUnVuTG9vcFRpbWVyQ3JlYXRlKG51bGxw
dHIsIGZpcmVEYXRlLCBrQ0ZUaW1lSW50ZXJ2YWxEaXN0YW50RnV0dXJlLCAwLCAwLCB0aW1lckZp
cmVkLCBudWxscHRyKSk7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICAgICAgQ0ZSdW5M
b29wQWRkVGltZXIoV2ViVGhyZWFkUnVuTG9vcCgpLCBzaGFyZWRUaW1lciwga0NGUnVuTG9vcENv
bW1vbk1vZGVzKTsKKyAgICAgICAgQ0ZSdW5Mb29wQWRkVGltZXIoV2ViVGhyZWFkUnVuTG9vcCgp
LCBzaGFyZWRUaW1lcigpLmdldCgpLCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMpOwogI2Vsc2UKLSAg
ICAgICAgQ0ZSdW5Mb29wQWRkVGltZXIoQ0ZSdW5Mb29wR2V0Q3VycmVudCgpLCBzaGFyZWRUaW1l
ciwga0NGUnVuTG9vcENvbW1vbk1vZGVzKTsKKyAgICAgICAgQ0ZSdW5Mb29wQWRkVGltZXIoQ0ZS
dW5Mb29wR2V0Q3VycmVudCgpLCBzaGFyZWRUaW1lcigpLmdldCgpLCBrQ0ZSdW5Mb29wQ29tbW9u
TW9kZXMpOwogI2VuZGlmCiAKICAgICAgICAgc2V0dXBQb3dlck9ic2VydmVyKCk7CkBAIC0xMTgs
MTUgKzEyMSwxNSBAQCB2b2lkIE1haW5UaHJlYWRTaGFyZWRUaW1lcjo6c2V0RmlyZUludGVydmFs
KFNlY29uZHMgaW50ZXJ2YWwpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBDRlJ1bkxv
b3BUaW1lclNldE5leHRGaXJlRGF0ZShzaGFyZWRUaW1lciwgZmlyZURhdGUpOworICAgIENGUnVu
TG9vcFRpbWVyU2V0TmV4dEZpcmVEYXRlKHNoYXJlZFRpbWVyKCkuZ2V0KCksIGZpcmVEYXRlKTsK
IH0KIAogdm9pZCBNYWluVGhyZWFkU2hhcmVkVGltZXI6OnN0b3AoKQogewotICAgIGlmICghc2hh
cmVkVGltZXIpCisgICAgaWYgKCFzaGFyZWRUaW1lcigpKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBDRlJ1bkxvb3BUaW1lclNldE5leHRGaXJlRGF0ZShzaGFyZWRUaW1lciwga0NGVGltZUludGVy
dmFsRGlzdGFudEZ1dHVyZSk7CisgICAgQ0ZSdW5Mb29wVGltZXJTZXROZXh0RmlyZURhdGUoc2hh
cmVkVGltZXIoKS5nZXQoKSwga0NGVGltZUludGVydmFsRGlzdGFudEZ1dHVyZSk7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCmluZGV4IDU3NjFjMDk5
YjFmMTk0ZmExZjBkODAzYzY5NWQwNDJmYmU0NDgzYTkuLmVlNGRlY2U3YjJjNDkyZmVjNzViOThk
MmFiZDAyZTEwYjdhNDk3ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQpAQCAtMjgxMCwxMiAr
MjgxMCwxMiBAQCBzdGF0aWMgTlNTdHJpbmcgKmV4ZXJuYWxEZXZpY2VEaXNwbGF5TmFtZUZvclBs
YXllcihBVlBsYXllciAqcGxheWVyKQogICAgIGlmIChwbGF5ZXIuZXh0ZXJuYWxQbGF5YmFja1R5
cGUgIT0gQVZQbGF5ZXJFeHRlcm5hbFBsYXliYWNrVHlwZUFpclBsYXkpCiAgICAgICAgIHJldHVy
biBuaWw7CiAKLSAgICBOU0FycmF5ICpwaWNrYWJsZVJvdXRlcyA9IENGQnJpZGdpbmdSZWxlYXNl
KE1STWVkaWFSZW1vdGVDb3B5UGlja2FibGVSb3V0ZXMoKSk7Ci0gICAgaWYgKCFwaWNrYWJsZVJv
dXRlcy5jb3VudCkKKyAgICBhdXRvIHBpY2thYmxlUm91dGVzID0gYWRvcHRDRihNUk1lZGlhUmVt
b3RlQ29weVBpY2thYmxlUm91dGVzKCkpOworICAgIGlmICghcGlja2FibGVSb3V0ZXMgfHwgIUNG
QXJyYXlHZXRDb3VudChwaWNrYWJsZVJvdXRlcy5nZXQoKSkpCiAgICAgICAgIHJldHVybiBuaWw7
CiAKICAgICBOU1N0cmluZyAqZGlzcGxheU5hbWUgPSBuaWw7Ci0gICAgZm9yIChOU0RpY3Rpb25h
cnkgKnBpY2thYmxlUm91dGUgaW4gcGlja2FibGVSb3V0ZXMpIHsKKyAgICBmb3IgKE5TRGljdGlv
bmFyeSAqcGlja2FibGVSb3V0ZSBpbiAoX19icmlkZ2UgTlNBcnJheSAqKXBpY2thYmxlUm91dGVz
LmdldCgpKSB7CiAgICAgICAgIGlmICghW3BpY2thYmxlUm91dGVbQVZDb250cm9sbGVyX1JvdXRl
RGVzY3JpcHRpb25LZXlfUm91dGVDdXJyZW50bHlQaWNrZWRdIGJvb2xWYWx1ZV0pCiAgICAgICAg
ICAgICBjb250aW51ZTsKIApAQCAtMjgzMCw3ICsyODMwLDcgQEAgc3RhdGljIE5TU3RyaW5nICpl
eGVybmFsRGV2aWNlRGlzcGxheU5hbWVGb3JQbGF5ZXIoQVZQbGF5ZXIgKnBsYXllcikKIAogICAg
ICAgICAvLyBJbiBjYXNlcyB3aGVyZSBhIHJvdXRlIHdpdGggdGhhdCBuYW1lIGFscmVhZHkgZXhp
c3RzLCBwcmVmaXggdGhlIG5hbWUgd2l0aCB0aGUgbW9kZWwuCiAgICAgICAgIEJPT0wgaW5jbHVk
ZUxvY2FsaXplZERldmljZU1vZGVsTmFtZSA9IE5POwotICAgICAgICBmb3IgKE5TRGljdGlvbmFy
eSAqb3RoZXJSb3V0ZSBpbiBwaWNrYWJsZVJvdXRlcykgeworICAgICAgICBmb3IgKE5TRGljdGlv
bmFyeSAqb3RoZXJSb3V0ZSBpbiAoX19icmlkZ2UgTlNBcnJheSAqKXBpY2thYmxlUm91dGVzLmdl
dCgpKSB7CiAgICAgICAgICAgICBpZiAob3RoZXJSb3V0ZSA9PSBwaWNrYWJsZVJvdXRlKQogICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYS93aW4vQ0FDRkxheWVyVHJlZUhvc3QuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL0NBQ0ZMYXllclRyZWVIb3N0LmNwcAppbmRleCAx
MjlkZGEwZGRhYmEwODBhNTkwMTYzMDRmYWQ0ZWNmZjNlNDdjZWMwLi5hNmI3NjgzZGVlNWI2ZTE1
ZDE1ODY0MzVmYjM3MTFhMTU5ZDQyY2E1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYS93aW4vQ0FDRkxheWVyVHJlZUhvc3QuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9DQUNGTGF5ZXJUcmVlSG9zdC5jcHAKQEAg
LTE1OSw5ICsxNTksOCBAQCB2b2lkIENBQ0ZMYXllclRyZWVIb3N0Ojppbml0aWFsaXplKCkKICAg
ICBtX3Jvb3RMYXllci0+c2V0R2VvbWV0cnlGbGlwcGVkKHRydWUpOwogCiAjaWZuZGVmIE5ERUJV
RwotICAgIENHQ29sb3JSZWYgZGVidWdDb2xvciA9IENHQ29sb3JDcmVhdGVHZW5lcmljUkdCKDEs
IDAsIDAsIDAuOCk7Ci0gICAgbV9yb290TGF5ZXItPnNldEJhY2tncm91bmRDb2xvcihkZWJ1Z0Nv
bG9yKTsKLSAgICBDR0NvbG9yUmVsZWFzZShkZWJ1Z0NvbG9yKTsKKyAgICBhdXRvIGRlYnVnQ29s
b3IgPSBhZG9wdENGKENHQ29sb3JDcmVhdGVHZW5lcmljUkdCKDEsIDAsIDAsIDAuOCkpOworICAg
IG1fcm9vdExheWVyLT5zZXRCYWNrZ3JvdW5kQ29sb3IoZGVidWdDb2xvci5nZXQoKSk7CiAjZW5k
aWYKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
R3JhcGhpY3NDb250ZXh0Q0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCmluZGV4IDlkYjkwOWNkYThlZjE3NjEwZjI5NGE5ODUw
OTE4YmMxOWFlNzk3YTkuLjY0NDNhNzE1NzU4ZDY3NTg0ZWUzZGY0MTQ5NTNlNGZlNzU4N2MxYmIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNz
Q29udGV4dENHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9H
cmFwaGljc0NvbnRleHRDRy5jcHAKQEAgLTM0Niw5ICszNDYsNyBAQCBzdGF0aWMgdm9pZCBkcmF3
UGF0dGVybkNhbGxiYWNrKHZvaWQqIGluZm8sIENHQ29udGV4dFJlZiBjb250ZXh0KQogCiBzdGF0
aWMgdm9pZCBwYXR0ZXJuUmVsZWFzZUNhbGxiYWNrKHZvaWQqIGluZm8pCiB7Ci0gICAgY2FsbE9u
TWFpblRocmVhZChbaW1hZ2UgPSBzdGF0aWNfY2FzdDxDR0ltYWdlUmVmPihpbmZvKV0gewotICAg
ICAgICBDR0ltYWdlUmVsZWFzZShpbWFnZSk7Ci0gICAgfSk7CisgICAgY2FsbE9uTWFpblRocmVh
ZChbaW1hZ2UgPSBhZG9wdENGKHN0YXRpY19jYXN0PENHSW1hZ2VSZWY+KGluZm8pKV0geyB9KTsK
IH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdQbGF0Zm9ybVBhdHRlcm4oY29uc3QgUGxh
dGZvcm1JbWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdCBBZmZp
bmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBj
b25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRp
b25zKQpAQCAtNjc1LDggKzY3Myw4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUGF0aChj
b25zdCBQYXRoJiBwYXRoKQogICAgICAgICAgICAgRmxvYXRSZWN0IHJlY3QgPSBwYXRoLmZhc3RC
b3VuZGluZ1JlY3QoKTsKICAgICAgICAgICAgIEZsb2F0U2l6ZSBsYXllclNpemUgPSBnZXRDVE0o
KS5tYXBTaXplKHJlY3Quc2l6ZSgpKTsKIAotICAgICAgICAgICAgQ0dMYXllclJlZiBsYXllciA9
IENHTGF5ZXJDcmVhdGVXaXRoQ29udGV4dChjb250ZXh0LCBsYXllclNpemUsIDApOwotICAgICAg
ICAgICAgQ0dDb250ZXh0UmVmIGxheWVyQ29udGV4dCA9IENHTGF5ZXJHZXRDb250ZXh0KGxheWVy
KTsKKyAgICAgICAgICAgIGF1dG8gbGF5ZXIgPSBhZG9wdENGKENHTGF5ZXJDcmVhdGVXaXRoQ29u
dGV4dChjb250ZXh0LCBsYXllclNpemUsIDApKTsKKyAgICAgICAgICAgIENHQ29udGV4dFJlZiBs
YXllckNvbnRleHQgPSBDR0xheWVyR2V0Q29udGV4dChsYXllci5nZXQoKSk7CiAKICAgICAgICAg
ICAgIENHQ29udGV4dFNjYWxlQ1RNKGxheWVyQ29udGV4dCwgbGF5ZXJTaXplLndpZHRoKCkgLyBy
ZWN0LndpZHRoKCksIGxheWVyU2l6ZS5oZWlnaHQoKSAvIHJlY3QuaGVpZ2h0KCkpOwogICAgICAg
ICAgICAgQ0dDb250ZXh0VHJhbnNsYXRlQ1RNKGxheWVyQ29udGV4dCwgLXJlY3QueCgpLCAtcmVj
dC55KCkpOwpAQCAtNjkwLDggKzY4OCw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUGF0
aChjb25zdCBQYXRoJiBwYXRoKQogICAgICAgICAgICAgICAgIENHQ29udGV4dENsaXAobGF5ZXJD
b250ZXh0KTsKIAogICAgICAgICAgICAgbV9zdGF0ZS5maWxsR3JhZGllbnQtPnBhaW50KGxheWVy
Q29udGV4dCk7Ci0gICAgICAgICAgICBDR0NvbnRleHREcmF3TGF5ZXJJblJlY3QoY29udGV4dCwg
cmVjdCwgbGF5ZXIpOwotICAgICAgICAgICAgQ0dMYXllclJlbGVhc2UobGF5ZXIpOworICAgICAg
ICAgICAgQ0dDb250ZXh0RHJhd0xheWVySW5SZWN0KGNvbnRleHQsIHJlY3QsIGxheWVyLmdldCgp
KTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIENHQ29udGV4dEJlZ2luUGF0aChjb250
ZXh0KTsKICAgICAgICAgICAgIENHQ29udGV4dEFkZFBhdGgoY29udGV4dCwgcGF0aC5wbGF0Zm9y
bVBhdGgoKSk7CkBAIC03NDUsOCArNzQyLDggQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnN0cm9r
ZVBhdGgoY29uc3QgUGF0aCYgcGF0aCkKIAogICAgICAgICAgICAgRmxvYXRTaXplIGxheWVyU2l6
ZSA9IGdldENUTSgpLm1hcFNpemUoRmxvYXRTaXplKGFkanVzdGVkV2lkdGgsIGFkanVzdGVkSGVp
Z2h0KSk7CiAKLSAgICAgICAgICAgIENHTGF5ZXJSZWYgbGF5ZXIgPSBDR0xheWVyQ3JlYXRlV2l0
aENvbnRleHQoY29udGV4dCwgbGF5ZXJTaXplLCAwKTsKLSAgICAgICAgICAgIENHQ29udGV4dFJl
ZiBsYXllckNvbnRleHQgPSBDR0xheWVyR2V0Q29udGV4dChsYXllcik7CisgICAgICAgICAgICBh
dXRvIGxheWVyID0gYWRvcHRDRihDR0xheWVyQ3JlYXRlV2l0aENvbnRleHQoY29udGV4dCwgbGF5
ZXJTaXplLCAwKSk7CisgICAgICAgICAgICBDR0NvbnRleHRSZWYgbGF5ZXJDb250ZXh0ID0gQ0dM
YXllckdldENvbnRleHQobGF5ZXIuZ2V0KCkpOwogICAgICAgICAgICAgQ0dDb250ZXh0U2V0TGlu
ZVdpZHRoKGxheWVyQ29udGV4dCwgbGluZVdpZHRoKTsKIAogICAgICAgICAgICAgLy8gQ29tcGVu
c2F0ZSBmb3IgdGhlIGxpbmUgd2lkdGgsIG90aGVyd2lzZSB0aGUgbGF5ZXIncyB0b3AtbGVmdCBj
b3JuZXIgd291bGQgYmUKQEAgLTc2NSw4ICs3NjIsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6
c3Ryb2tlUGF0aChjb25zdCBQYXRoJiBwYXRoKQogCiAgICAgICAgICAgICBmbG9hdCBkZXN0aW5h
dGlvblggPSByb3VuZGYocmVjdC54KCkgLSBsaW5lV2lkdGgpOwogICAgICAgICAgICAgZmxvYXQg
ZGVzdGluYXRpb25ZID0gcm91bmRmKHJlY3QueSgpIC0gbGluZVdpZHRoKTsKLSAgICAgICAgICAg
IENHQ29udGV4dERyYXdMYXllckluUmVjdChjb250ZXh0LCBDR1JlY3RNYWtlKGRlc3RpbmF0aW9u
WCwgZGVzdGluYXRpb25ZLCBhZGp1c3RlZFdpZHRoLCBhZGp1c3RlZEhlaWdodCksIGxheWVyKTsK
LSAgICAgICAgICAgIENHTGF5ZXJSZWxlYXNlKGxheWVyKTsKKyAgICAgICAgICAgIENHQ29udGV4
dERyYXdMYXllckluUmVjdChjb250ZXh0LCBDR1JlY3RNYWtlKGRlc3RpbmF0aW9uWCwgZGVzdGlu
YXRpb25ZLCBhZGp1c3RlZFdpZHRoLCBhZGp1c3RlZEhlaWdodCksIGxheWVyLmdldCgpKTsKICAg
ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIENHQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZl
cihjb250ZXh0KTsKICAgICAgICAgICAgIENHQ29udGV4dEJlZ2luUGF0aChjb250ZXh0KTsKQEAg
LTgxNyw4ICs4MTMsOCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3QoY29uc3QgRmxv
YXRSZWN0JiByZWN0KQogICAgICAgICBpZiAoaGFzU2hhZG93KCkpIHsKICAgICAgICAgICAgIEZs
b2F0U2l6ZSBsYXllclNpemUgPSBnZXRDVE0oKS5tYXBTaXplKHJlY3Quc2l6ZSgpKTsKIAotICAg
ICAgICAgICAgQ0dMYXllclJlZiBsYXllciA9IENHTGF5ZXJDcmVhdGVXaXRoQ29udGV4dChjb250
ZXh0LCBsYXllclNpemUsIDApOwotICAgICAgICAgICAgQ0dDb250ZXh0UmVmIGxheWVyQ29udGV4
dCA9IENHTGF5ZXJHZXRDb250ZXh0KGxheWVyKTsKKyAgICAgICAgICAgIGF1dG8gbGF5ZXIgPSBh
ZG9wdENGKENHTGF5ZXJDcmVhdGVXaXRoQ29udGV4dChjb250ZXh0LCBsYXllclNpemUsIDApKTsK
KyAgICAgICAgICAgIENHQ29udGV4dFJlZiBsYXllckNvbnRleHQgPSBDR0xheWVyR2V0Q29udGV4
dChsYXllci5nZXQoKSk7CiAKICAgICAgICAgICAgIENHQ29udGV4dFNjYWxlQ1RNKGxheWVyQ29u
dGV4dCwgbGF5ZXJTaXplLndpZHRoKCkgLyByZWN0LndpZHRoKCksIGxheWVyU2l6ZS5oZWlnaHQo
KSAvIHJlY3QuaGVpZ2h0KCkpOwogICAgICAgICAgICAgQ0dDb250ZXh0VHJhbnNsYXRlQ1RNKGxh
eWVyQ29udGV4dCwgLXJlY3QueCgpLCAtcmVjdC55KCkpOwpAQCAtODI3LDggKzgyMyw3IEBAIHZv
aWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiAKICAg
ICAgICAgICAgIENHQ29udGV4dENvbmNhdENUTShsYXllckNvbnRleHQsIG1fc3RhdGUuZmlsbEdy
YWRpZW50U3BhY2VUcmFuc2Zvcm0pOwogICAgICAgICAgICAgbV9zdGF0ZS5maWxsR3JhZGllbnQt
PnBhaW50KGxheWVyQ29udGV4dCk7Ci0gICAgICAgICAgICBDR0NvbnRleHREcmF3TGF5ZXJJblJl
Y3QoY29udGV4dCwgcmVjdCwgbGF5ZXIpOwotICAgICAgICAgICAgQ0dMYXllclJlbGVhc2UobGF5
ZXIpOworICAgICAgICAgICAgQ0dDb250ZXh0RHJhd0xheWVySW5SZWN0KGNvbnRleHQsIHJlY3Qs
IGxheWVyLmdldCgpKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIENHQ29udGV4dENs
aXBUb1JlY3QoY29udGV4dCwgcmVjdCk7CiAgICAgICAgICAgICBDR0NvbnRleHRDb25jYXRDVE0o
Y29udGV4dCwgbV9zdGF0ZS5maWxsR3JhZGllbnRTcGFjZVRyYW5zZm9ybSk7CkBAIC0xMjI2LDkg
KzEyMjEsOSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c3Ryb2tlUmVjdChjb25zdCBGbG9hdFJl
Y3QmIHJlY3QsIGZsb2F0IGxpbmVXaWR0aCkKICAgICAgICAgICAgIGZsb2F0IGFkanVzdGVkSGVp
Z2h0ID0gY2VpbGYocmVjdC5oZWlnaHQoKSArIGRvdWJsZUxpbmVXaWR0aCk7CiAgICAgICAgICAg
ICBGbG9hdFNpemUgbGF5ZXJTaXplID0gZ2V0Q1RNKCkubWFwU2l6ZShGbG9hdFNpemUoYWRqdXN0
ZWRXaWR0aCwgYWRqdXN0ZWRIZWlnaHQpKTsKIAotICAgICAgICAgICAgQ0dMYXllclJlZiBsYXll
ciA9IENHTGF5ZXJDcmVhdGVXaXRoQ29udGV4dChjb250ZXh0LCBsYXllclNpemUsIDApOworICAg
ICAgICAgICAgYXV0byBsYXllciA9IGFkb3B0Q0YoQ0dMYXllckNyZWF0ZVdpdGhDb250ZXh0KGNv
bnRleHQsIGxheWVyU2l6ZSwgMCkpOwogCi0gICAgICAgICAgICBDR0NvbnRleHRSZWYgbGF5ZXJD
b250ZXh0ID0gQ0dMYXllckdldENvbnRleHQobGF5ZXIpOworICAgICAgICAgICAgQ0dDb250ZXh0
UmVmIGxheWVyQ29udGV4dCA9IENHTGF5ZXJHZXRDb250ZXh0KGxheWVyLmdldCgpKTsKICAgICAg
ICAgICAgIG1fc3RhdGUuc3Ryb2tlVGhpY2tuZXNzID0gbGluZVdpZHRoOwogICAgICAgICAgICAg
Q0dDb250ZXh0U2V0TGluZVdpZHRoKGxheWVyQ29udGV4dCwgbGluZVdpZHRoKTsKIApAQCAtMTI0
OCw4ICsxMjQzLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnN0cm9rZVJlY3QoY29uc3QgRmxv
YXRSZWN0JiByZWN0LCBmbG9hdCBsaW5lV2lkdGgpCiAKICAgICAgICAgICAgIGNvbnN0IGZsb2F0
IGRlc3RpbmF0aW9uWCA9IHJvdW5kZihyZWN0LngoKSAtIGxpbmVXaWR0aCk7CiAgICAgICAgICAg
ICBjb25zdCBmbG9hdCBkZXN0aW5hdGlvblkgPSByb3VuZGYocmVjdC55KCkgLSBsaW5lV2lkdGgp
OwotICAgICAgICAgICAgQ0dDb250ZXh0RHJhd0xheWVySW5SZWN0KGNvbnRleHQsIENHUmVjdE1h
a2UoZGVzdGluYXRpb25YLCBkZXN0aW5hdGlvblksIGFkanVzdGVkV2lkdGgsIGFkanVzdGVkSGVp
Z2h0KSwgbGF5ZXIpOwotICAgICAgICAgICAgQ0dMYXllclJlbGVhc2UobGF5ZXIpOworICAgICAg
ICAgICAgQ0dDb250ZXh0RHJhd0xheWVySW5SZWN0KGNvbnRleHQsIENHUmVjdE1ha2UoZGVzdGlu
YXRpb25YLCBkZXN0aW5hdGlvblksIGFkanVzdGVkV2lkdGgsIGFkanVzdGVkSGVpZ2h0KSwgbGF5
ZXIuZ2V0KCkpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgQ0dDb250ZXh0U3RhdGVT
YXZlciBzdGF0ZVNhdmVyKGNvbnRleHQpOwogICAgICAgICAgICAgc2V0U3Ryb2tlVGhpY2tuZXNz
KGxpbmVXaWR0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9QYXR0ZXJuQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
UGF0dGVybkNHLmNwcAppbmRleCBmMWI5ZTNhN2MwNTU2OWE5ODkxYjY5OGQyODNhYjUzOTdjNzI1
ZjU0Li4zYWVjNzc1NmRiOGNkMjUwYWZlZjEwZDgzZmRlYjFkY2M5M2NmOWMzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXR0ZXJuQ0cuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdHRlcm5DRy5jcHAKQEAgLTUw
LDkgKzUwLDcgQEAgc3RhdGljIHZvaWQgcGF0dGVybkNhbGxiYWNrKHZvaWQqIGluZm8sIENHQ29u
dGV4dFJlZiBjb250ZXh0KQogCiBzdGF0aWMgdm9pZCBwYXR0ZXJuUmVsZWFzZUNhbGxiYWNrKHZv
aWQqIGluZm8pCiB7Ci0gICAgY2FsbE9uTWFpblRocmVhZChbaW1hZ2UgPSBzdGF0aWNfY2FzdDxD
R0ltYWdlUmVmPihpbmZvKV0gewotICAgICAgICBDR0ltYWdlUmVsZWFzZShpbWFnZSk7Ci0gICAg
fSk7CisgICAgY2FsbE9uTWFpblRocmVhZChbaW1hZ2UgPSBhZG9wdENGKHN0YXRpY19jYXN0PENH
SW1hZ2VSZWY+KGluZm8pKV0geyB9KTsKIH0KIAogQ0dQYXR0ZXJuUmVmIFBhdHRlcm46OmNyZWF0
ZVBsYXRmb3JtUGF0dGVybihjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHVzZXJTcGFjZVRyYW5zZm9y
bSkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcAppbmRleCA5OWNiY2ZkMGI2ZGExNWNlMzIw
ODc3NWQxNWI1ZGRiYjZhYWM4ZjBlLi5mYTc3YjM5OTc3ZGI5NzhhMDU5NzFiNmMyNWM0MWYzNzJk
ZTUyNGIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9Gb250Q2FjaGVDb3JlVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwCkBAIC0xMjc5LDggKzEyNzksNyBAQCBz
dGF0aWMgdm9pZCBhdXRvQWN0aXZhdGVGb250KGNvbnN0IFN0cmluZyYgbmFtZSwgQ0dGbG9hdCBz
aXplKQogICAgIENGVHlwZVJlZiB2YWx1ZXNbXSA9IHsgZm9udE5hbWUuZ2V0KCkgfTsKICAgICBh
dXRvIGF0dHJpYnV0ZXMgPSBhZG9wdENGKENGRGljdGlvbmFyeUNyZWF0ZShrQ0ZBbGxvY2F0b3JE
ZWZhdWx0LCBrZXlzLCB2YWx1ZXMsIFdURl9BUlJBWV9MRU5HVEgoa2V5cyksICZrQ0ZUeXBlRGlj
dGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpKTsK
ICAgICBhdXRvIGRlc2NyaXB0b3IgPSBhZG9wdENGKENURm9udERlc2NyaXB0b3JDcmVhdGVXaXRo
QXR0cmlidXRlcyhhdHRyaWJ1dGVzLmdldCgpKSk7Ci0gICAgaWYgKGF1dG8gbmV3Rm9udCA9IENU
Rm9udENyZWF0ZVdpdGhGb250RGVzY3JpcHRvcihkZXNjcmlwdG9yLmdldCgpLCBzaXplLCBudWxs
cHRyKSkKLSAgICAgICAgQ0ZSZWxlYXNlKG5ld0ZvbnQpOworICAgIGF1dG8gbmV3Rm9udCA9IGFk
b3B0Q0YoQ1RGb250Q3JlYXRlV2l0aEZvbnREZXNjcmlwdG9yKGRlc2NyaXB0b3IuZ2V0KCksIHNp
emUsIG51bGxwdHIpKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udENHV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9Gb250Q0dXaW4uY3BwCmluZGV4IDUzYWM3ZTIwMDE4YTFiOGE5NTBk
Yzc0OTI2ODVkMjc1ZjhhYmIxNmUuLmMxOWU3NDE1NTdjMzA4Yzk0MWU0ZWY3MTVlM2RiNDY1OTRk
MTg1YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9G
b250Q0dXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9G
b250Q0dXaW4uY3BwCkBAIC00MDksNTAgKzQwOSwzNiBAQCB2b2lkIEZvbnRDYXNjYWRlOjpnZXRQ
bGF0Zm9ybUdseXBoQWR2YW5jZXMoQ0dGb250UmVmIGZvbnQsIGNvbnN0IENHQWZmaW5lVHJhbnNm
bwogCiAgICAgLy8gPHJkYXI6Ly9wcm9ibGVtLzc3NjExNjU+IFRoZSBHREkgYmFjayBlbmQgaW4g
Q29yZSBHcmFwaGljcyBzb21ldGltZXMgcmV0dXJucyBhZHZhbmNlcyB0aGF0CiAgICAgLy8gZGlm
ZmVyIGZyb20gd2hhdCB0aGUgZm9udCdzIGhtdHggdGFibGUgc3BlY2lmaWVzLiBUaGUgZm9sbG93
aW5nIGNvZGUgY29ycmVjdHMgdGhhdC4KLSAgICBDRkRhdGFSZWYgaG10eFRhYmxlID0gQ0dGb250
Q29weVRhYmxlRm9yVGFnKGZvbnQsICdobXR4Jyk7CisgICAgYXV0byBobXR4VGFibGUgPSBhZG9w
dENGKENHRm9udENvcHlUYWJsZUZvclRhZyhmb250LCAnaG10eCcpKTsKICAgICBpZiAoIWhtdHhU
YWJsZSkKICAgICAgICAgcmV0dXJuOwotICAgIENGRGF0YVJlZiBoaGVhVGFibGUgPSBDR0ZvbnRD
b3B5VGFibGVGb3JUYWcoZm9udCwgJ2hoZWEnKTsKLSAgICBpZiAoIWhoZWFUYWJsZSkgewotICAg
ICAgICBDRlJlbGVhc2UoaG10eFRhYmxlKTsKKyAgICBhdXRvIGhoZWFUYWJsZSA9IGFkb3B0Q0Yo
Q0dGb250Q29weVRhYmxlRm9yVGFnKGZvbnQsICdoaGVhJykpOworICAgIGlmICghaGhlYVRhYmxl
KQogICAgICAgICByZXR1cm47Ci0gICAgfQogCiAgICAgY29uc3QgQ0ZJbmRleCBoaGVhVGFibGVT
aXplID0gMzY7CiAgICAgY29uc3QgcHRyZGlmZl90IGhoZWFUYWJsZU51bWJlck9mSE1ldHJpY3NP
ZmZzZXQgPSAzNDsKLSAgICBpZiAoQ0ZEYXRhR2V0TGVuZ3RoKGhoZWFUYWJsZSkgPCBoaGVhVGFi
bGVTaXplKSB7Ci0gICAgICAgIENGUmVsZWFzZShobXR4VGFibGUpOwotICAgICAgICBDRlJlbGVh
c2UoaGhlYVRhYmxlKTsKKyAgICBpZiAoQ0ZEYXRhR2V0TGVuZ3RoKGhoZWFUYWJsZS5nZXQoKSkg
PCBoaGVhVGFibGVTaXplKQogICAgICAgICByZXR1cm47Ci0gICAgfQogCi0gICAgdW5zaWduZWQg
c2hvcnQgbnVtYmVyT2ZITWV0cmljcyA9ICpyZWludGVycHJldF9jYXN0PGNvbnN0IHVuc2lnbmVk
IHNob3J0Kj4oQ0ZEYXRhR2V0Qnl0ZVB0cihoaGVhVGFibGUpICsgaGhlYVRhYmxlTnVtYmVyT2ZI
TWV0cmljc09mZnNldCk7CisgICAgdW5zaWduZWQgc2hvcnQgbnVtYmVyT2ZITWV0cmljcyA9ICpy
ZWludGVycHJldF9jYXN0PGNvbnN0IHVuc2lnbmVkIHNob3J0Kj4oQ0ZEYXRhR2V0Qnl0ZVB0ciho
aGVhVGFibGUuZ2V0KCkpICsgaGhlYVRhYmxlTnVtYmVyT2ZITWV0cmljc09mZnNldCk7CiAgICAg
bnVtYmVyT2ZITWV0cmljcyA9ICgobnVtYmVyT2ZITWV0cmljcyAmIDB4RkYpIDw8IDgpIHwgKG51
bWJlck9mSE1ldHJpY3MgPj4gOCk7Ci0gICAgaWYgKCFudW1iZXJPZkhNZXRyaWNzKSB7Ci0gICAg
ICAgIENGUmVsZWFzZShobXR4VGFibGUpOwotICAgICAgICBDRlJlbGVhc2UoaGhlYVRhYmxlKTsK
KyAgICBpZiAoIW51bWJlck9mSE1ldHJpY3MpCiAgICAgICAgIHJldHVybjsKLSAgICB9CiAKICAg
ICBpZiAoZ2x5cGggPj0gbnVtYmVyT2ZITWV0cmljcykKICAgICAgICAgZ2x5cGggPSBudW1iZXJP
ZkhNZXRyaWNzIC0gMTsKIAotICAgIGlmIChDRkRhdGFHZXRMZW5ndGgoaG10eFRhYmxlKSA8IDQg
KiAoZ2x5cGggKyAxKSkgewotICAgICAgICBDRlJlbGVhc2UoaG10eFRhYmxlKTsKLSAgICAgICAg
Q0ZSZWxlYXNlKGhoZWFUYWJsZSk7CisgICAgaWYgKENGRGF0YUdldExlbmd0aChobXR4VGFibGUu
Z2V0KCkpIDwgNCAqIChnbHlwaCArIDEpKQogICAgICAgICByZXR1cm47Ci0gICAgfQogCi0gICAg
dW5zaWduZWQgc2hvcnQgYWR2YW5jZUluRGVzaWduVW5pdHMgPSAqcmVpbnRlcnByZXRfY2FzdDxj
b25zdCB1bnNpZ25lZCBzaG9ydCo+KENGRGF0YUdldEJ5dGVQdHIoaG10eFRhYmxlKSArIDQgKiBn
bHlwaCk7CisgICAgdW5zaWduZWQgc2hvcnQgYWR2YW5jZUluRGVzaWduVW5pdHMgPSAqcmVpbnRl
cnByZXRfY2FzdDxjb25zdCB1bnNpZ25lZCBzaG9ydCo+KENGRGF0YUdldEJ5dGVQdHIoaG10eFRh
YmxlLmdldCgpKSArIDQgKiBnbHlwaCk7CiAgICAgYWR2YW5jZUluRGVzaWduVW5pdHMgPSAoKGFk
dmFuY2VJbkRlc2lnblVuaXRzICYgMHhGRikgPDwgOCkgfCAoYWR2YW5jZUluRGVzaWduVW5pdHMg
Pj4gOCk7CiAgICAgQ0dTaXplIGhvcml6b250YWxBZHZhbmNlID0gQ0dTaXplTWFrZShzdGF0aWNf
Y2FzdDxDR0Zsb2F0PihhZHZhbmNlSW5EZXNpZ25Vbml0cykgLyBDR0ZvbnRHZXRVbml0c1BlckVt
KGZvbnQpLCAwKTsKICAgICBob3Jpem9udGFsQWR2YW5jZSA9IENHU2l6ZUFwcGx5QWZmaW5lVHJh
bnNmb3JtKGhvcml6b250YWxBZHZhbmNlLCBtKTsKICAgICBhZHZhbmNlLndpZHRoID0gaG9yaXpv
bnRhbEFkdmFuY2Uud2lkdGg7CiAgICAgaWYgKCEoc3R5bGUgJiBrQ0dGb250UmVuZGVyaW5nU3R5
bGVTdWJwaXhlbFBvc2l0aW9uaW5nKSkKICAgICAgICAgYWR2YW5jZS53aWR0aCA9IHJvdW5kZihh
ZHZhbmNlLndpZHRoKTsKLQotICAgIENGUmVsZWFzZShoaGVhVGFibGUpOwotICAgIENGUmVsZWFz
ZShobXR4VGFibGUpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0Q0dXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dENHV2luLmNwcAppbmRleCAzMTdm
OGQwNDVkMzI5M2E3OGM3YTFiNzU1NDQ2ZDA1ZGU0OWEyN2MzLi5jZWRiMDJlYjllMWY5NWJmOTAz
MzExM2JhNjA1ZDljY2ZmZjg2OWU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0Q0dXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRDR1dpbi5jcHAKQEAgLTEw
NywxNiArMTA3LDE0IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpyZWxlYXNlV2luZG93c0NvbnRl
eHQoSERDIGhkYywgY29uc3QgSW50UmVjdCYgZHN0UmVjdCwgYm9vCiAKICAgICBBU1NFUlQocGl4
ZWxEYXRhLmJpdHNQZXJQaXhlbCgpID09IDMyKTsKIAotICAgIENHQ29udGV4dFJlZiBiaXRtYXBD
b250ZXh0ID0gQ0dCaXRtYXBDb250ZXh0Q3JlYXRlKHBpeGVsRGF0YS5idWZmZXIoKSwgcGl4ZWxE
YXRhLnNpemUoKS53aWR0aCgpLCBwaXhlbERhdGEuc2l6ZSgpLmhlaWdodCgpLCA4LAorICAgIGF1
dG8gYml0bWFwQ29udGV4dCA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlKHBpeGVsRGF0
YS5idWZmZXIoKSwgcGl4ZWxEYXRhLnNpemUoKS53aWR0aCgpLCBwaXhlbERhdGEuc2l6ZSgpLmhl
aWdodCgpLCA4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHBpeGVsRGF0YS5ieXRlc1BlclJvdygpLCBzUkdCQ29sb3JTcGFjZVJlZigpLCBr
Q0dCaXRtYXBCeXRlT3JkZXIzMkxpdHRsZSB8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN1cHBvcnRBbHBoYUJsZW5kID8ga0NHSW1hZ2VB
bHBoYVByZW11bHRpcGxpZWRGaXJzdCA6IGtDR0ltYWdlQWxwaGFOb25lU2tpcEZpcnN0KSk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN1
cHBvcnRBbHBoYUJsZW5kID8ga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRGaXJzdCA6IGtDR0lt
YWdlQWxwaGFOb25lU2tpcEZpcnN0KSkpOwogCi0gICAgQ0dJbWFnZVJlZiBpbWFnZSA9IENHQml0
bWFwQ29udGV4dENyZWF0ZUltYWdlKGJpdG1hcENvbnRleHQpOwotICAgIENHQ29udGV4dERyYXdJ
bWFnZShtX2RhdGEtPm1fY2dDb250ZXh0LmdldCgpLCBkc3RSZWN0LCBpbWFnZSk7CisgICAgYXV0
byBpbWFnZSA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlSW1hZ2UoYml0bWFwQ29udGV4
dC5nZXQoKSkpOworICAgIENHQ29udGV4dERyYXdJbWFnZShtX2RhdGEtPm1fY2dDb250ZXh0Lmdl
dCgpLCBkc3RSZWN0LCBpbWFnZS5nZXQoKSk7CiAgICAgCiAgICAgLy8gRGVsZXRlIGFsbCBvdXIg
anVuay4KLSAgICBDR0ltYWdlUmVsZWFzZShpbWFnZSk7Ci0gICAgQ0dDb250ZXh0UmVsZWFzZShi
aXRtYXBDb250ZXh0KTsKICAgICA6OkRlbGV0ZURDKGhkYyk7CiB9CiAKQEAgLTE0NywxNiArMTQ1
LDE2IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3Rm9jdXNSaW5nKGNvbnN0IFZlY3RvcjxG
bG9hdFJlY3Q+JiByZWN0cywgZmxvYXQgd2lkdGgsCiAgICAgb2Zmc2V0ICs9IHJhZGl1czsKICAg
ICBDR0NvbG9yUmVmIGNvbG9yUmVmID0gY29sb3IuaXNWYWxpZCgpID8gY2FjaGVkQ0dDb2xvcihj
b2xvcikgOiBudWxscHRyOwogCi0gICAgQ0dNdXRhYmxlUGF0aFJlZiBmb2N1c1JpbmdQYXRoID0g
Q0dQYXRoQ3JlYXRlTXV0YWJsZSgpOworICAgIGF1dG8gZm9jdXNSaW5nUGF0aCA9IGFkb3B0Q0Yo
Q0dQYXRoQ3JlYXRlTXV0YWJsZSgpKTsKICAgICB1bnNpZ25lZCByZWN0Q291bnQgPSByZWN0cy5z
aXplKCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHJlY3RDb3VudDsgaSsrKQotICAg
ICAgICBDR1BhdGhBZGRSZWN0KGZvY3VzUmluZ1BhdGgsIDAsIENHUmVjdEluc2V0KHJlY3RzW2ld
LCAtb2Zmc2V0LCAtb2Zmc2V0KSk7CisgICAgICAgIENHUGF0aEFkZFJlY3QoZm9jdXNSaW5nUGF0
aC5nZXQoKSwgMCwgQ0dSZWN0SW5zZXQocmVjdHNbaV0sIC1vZmZzZXQsIC1vZmZzZXQpKTsKIAog
ICAgIENHQ29udGV4dFJlZiBjb250ZXh0ID0gcGxhdGZvcm1Db250ZXh0KCk7CiAgICAgQ0dDb250
ZXh0U2F2ZUdTdGF0ZShjb250ZXh0KTsKIAogICAgIENHQ29udGV4dEJlZ2luUGF0aChjb250ZXh0
KTsKLSAgICBDR0NvbnRleHRBZGRQYXRoKGNvbnRleHQsIGZvY3VzUmluZ1BhdGgpOworICAgIENH
Q29udGV4dEFkZFBhdGgoY29udGV4dCwgZm9jdXNSaW5nUGF0aC5nZXQoKSk7CiAKICAgICAvLyBG
SVhNRTogV2UgY2xlYXIgdGhlIGZpbGwgY29sb3IgaGVyZSB0byBhdm9pZCBnZXR0aW5nIGEgYmxh
Y2sgZmlsbCB3aGVuIGRyYXdpbmcgdGhlIGZvY3VzIHJpbmcuCiAgICAgLy8gRmluZCBvdXQgZnJv
bSBDRyBpZiB0aGlzIGlzIHRoZWlyIGJ1Zy4KQEAgLTE2NSw4ICsxNjMsNiBAQCB2b2lkIEdyYXBo
aWNzQ29udGV4dDo6ZHJhd0ZvY3VzUmluZyhjb25zdCBWZWN0b3I8RmxvYXRSZWN0PiYgcmVjdHMs
IGZsb2F0IHdpZHRoLAogICAgIENHQ29udGV4dFNldEZvY3VzUmluZ1dpdGhDb2xvcihjb250ZXh0
LCByYWRpdXMsIGNvbG9yUmVmLCAwLCAoQ0ZEaWN0aW9uYXJ5UmVmKTApOwogICAgIENHQ29udGV4
dEZpbGxQYXRoKGNvbnRleHQpOwogCi0gICAgQ0dQYXRoUmVsZWFzZShmb2N1c1JpbmdQYXRoKTsK
LQogICAgIENHQ29udGV4dFJlc3RvcmVHU3RhdGUoY29udGV4dCk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNHV2luLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNHV2luLmNwcAppbmRleCA2
ZGFiZjI0MTNmZWQzNTc1OWFiMDM5NTNkYTQzNzIyYzhkNDE2ZmQ2Li5mOGExMGQ1YzQzNmU3MDYw
ODk4NzA3YmE4YjY1NDY0MWNlMmJkZjU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VDR1dpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQ0dXaW4uY3BwCkBAIC03MCwxMCArNzAsMTAgQEAgYm9v
bCBCaXRtYXBJbWFnZTo6Z2V0SEJJVE1BUE9mU2l6ZShIQklUTUFQIGJtcCwgY29uc3QgSW50U2l6
ZSogc2l6ZSkKICAgICBBU1NFUlQoYm1wSW5mby5ibUJpdHNQaXhlbCA9PSAzMik7CiAgICAgaW50
IGJ1ZmZlclNpemUgPSBibXBJbmZvLmJtV2lkdGhCeXRlcyAqIGJtcEluZm8uYm1IZWlnaHQ7CiAg
ICAgCi0gICAgQ0dDb250ZXh0UmVmIGNnQ29udGV4dCA9IENHQml0bWFwQ29udGV4dENyZWF0ZShi
bXBJbmZvLmJtQml0cywgYm1wSW5mby5ibVdpZHRoLCBibXBJbmZvLmJtSGVpZ2h0LAotICAgICAg
ICA4LCBibXBJbmZvLmJtV2lkdGhCeXRlcywgc1JHQkNvbG9yU3BhY2VSZWYoKSwga0NHQml0bWFw
Qnl0ZU9yZGVyMzJMaXR0bGUgfCBrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZEZpcnN0KTsKKyAg
ICBhdXRvIGNnQ29udGV4dCA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlKGJtcEluZm8u
Ym1CaXRzLCBibXBJbmZvLmJtV2lkdGgsIGJtcEluZm8uYm1IZWlnaHQsCisgICAgICAgIDgsIGJt
cEluZm8uYm1XaWR0aEJ5dGVzLCBzUkdCQ29sb3JTcGFjZVJlZigpLCBrQ0dCaXRtYXBCeXRlT3Jk
ZXIzMkxpdHRsZSB8IGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkRmlyc3QpKTsKICAgCi0gICAg
R3JhcGhpY3NDb250ZXh0IGdjKGNnQ29udGV4dCk7CisgICAgR3JhcGhpY3NDb250ZXh0IGdjKGNn
Q29udGV4dC5nZXQoKSk7CiAKICAgICBGbG9hdFNpemUgaW1hZ2VTaXplID0gQml0bWFwSW1hZ2U6
OnNpemUoKTsKICAgICBpZiAoc2l6ZSkKQEAgLTgxLDkgKzgxLDYgQEAgYm9vbCBCaXRtYXBJbWFn
ZTo6Z2V0SEJJVE1BUE9mU2l6ZShIQklUTUFQIGJtcCwgY29uc3QgSW50U2l6ZSogc2l6ZSkKICAg
ICBlbHNlCiAgICAgICAgIGRyYXcoZ2MsIEZsb2F0UmVjdCgwLjBmLCAwLjBmLCBibXBJbmZvLmJt
V2lkdGgsIGJtcEluZm8uYm1IZWlnaHQpLCBGbG9hdFJlY3QoMC4wZiwgMC4wZiwgaW1hZ2VTaXpl
LndpZHRoKCksIGltYWdlU2l6ZS5oZWlnaHQoKSksIHsgQ29tcG9zaXRlT3BlcmF0b3I6OkNvcHkg
fSk7CiAKLSAgICAvLyBEbyBjbGVhbnVwCi0gICAgQ0dDb250ZXh0UmVsZWFzZShjZ0NvbnRleHQp
OwotCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy9Vc2VyQWdlbnRJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
VXNlckFnZW50SU9TLm1tCmluZGV4IDNhNjM0NGNlZjQzN2Y0MzU1MTJlNGI5NDA1NTc0OTcxNDkz
MWUyYmEuLjNiNmRlMWVjMGYzZmM1ZDE0MmRjZWM2YTVhYTZkMzFjYzhkODBlNTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9Vc2VyQWdlbnRJT1MubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1VzZXJBZ2VudElPUy5tbQpAQCAtODksMTEgKzg5LDEw
IEBAIFN0cmluZyBzdGFuZGFyZFVzZXJBZ2VudFdpdGhBcHBsaWNhdGlvbk5hbWUoY29uc3QgU3Ry
aW5nJiBhcHBsaWNhdGlvbk5hbWUsIGNvbnN0CiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBkZXBy
ZWNhdGUgYW5kIGV2ZW50dWFsbHkgcmVtb3ZlIHRoaXMgb2Jzb2xldGUgVUEgb3ZlcnJpZGU7CiAg
ICAgLy8gc2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTc5Mjcg
Zm9yIGRldGFpbHMuCiAgICAgLy8gQ2hlY2sgdG8gc2VlIGlmIHRoZXJlIGlzIGEgdXNlciBhZ2Vu
dCBvdmVycmlkZSBmb3IgYWxsIFdlYktpdCBjbGllbnRzLgotICAgIENGUHJvcGVydHlMaXN0UmVm
IG92ZXJyaWRlID0gQ0ZQcmVmZXJlbmNlc0NvcHlBcHBWYWx1ZShDRlNUUigiVXNlckFnZW50Iiks
IENGU1RSKCJjb20uYXBwbGUuV2ViRm91bmRhdGlvbiIpKTsKKyAgICBhdXRvIG92ZXJyaWRlID0g
YWRvcHRDRihDRlByZWZlcmVuY2VzQ29weUFwcFZhbHVlKENGU1RSKCJVc2VyQWdlbnQiKSwgQ0ZT
VFIoImNvbS5hcHBsZS5XZWJGb3VuZGF0aW9uIikpKTsKICAgICBpZiAob3ZlcnJpZGUpIHsKLSAg
ICAgICAgaWYgKENGR2V0VHlwZUlEKG92ZXJyaWRlKSA9PSBDRlN0cmluZ0dldFR5cGVJRCgpKQot
ICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PE5TU3RyaW5nICo+KENGQnJpZGdpbmdSZWxl
YXNlKG92ZXJyaWRlKSk7Ci0gICAgICAgIENGUmVsZWFzZShvdmVycmlkZSk7CisgICAgICAgIGlm
IChDRkdldFR5cGVJRChvdmVycmlkZS5nZXQoKSkgPT0gQ0ZTdHJpbmdHZXRUeXBlSUQoKSkKKyAg
ICAgICAgICAgIHJldHVybiAoX19icmlkZ2UgTlNTdHJpbmcgKilvdmVycmlkZS5nZXQoKTsKICAg
ICB9CiAKICAgICBTdHJpbmcgb3NWZXJzaW9uID0gdXNlckFnZW50T1NWZXJzaW9uLmlzRW1wdHko
KSAgPyBzeXN0ZW1NYXJrZXRpbmdWZXJzaW9uRm9yVXNlckFnZW50U3RyaW5nKCkgOiB1c2VyQWdl
bnRPU1ZlcnNpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2Fr
L1dlYkNvcmVUaHJlYWQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dlYkNv
cmVUaHJlYWQubW0KaW5kZXggNjYwMDc2YWRmNzY2Mzc0ZjQ5ZDVlZTVhOWIyOTNlOTlkNjRmY2Rk
Yy4uOTMyYzc4MmM2YmNiM2IyZDY3ZTkzNDAyZWM0MjFhMzQyZDM2YmY0MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV2ViQ29yZVRocmVhZC5tbQpAQCAtMjY2LDEw
ICsyNjYsOCBAQCBzdGF0aWMgdm9pZCBTZW5kRGVsZWdhdGVNZXNzYWdlKFJldGFpblB0cjxOU0lu
dm9jYXRpb24+JiYgaW52b2NhdGlvbikKICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAg
ICAgICAgICAgIGRlbGVnYXRlSW5mb3JtYXRpb24gPSBOU1N0cmluZ0Zyb21TZWxlY3RvcihbZGVs
ZWdhdGVJbnZvY2F0aW9uKCkgc2VsZWN0b3JdKTsKICAgICAKLSAgICAgICAgICAgICAgICBDRlN0
cmluZ1JlZiBtb2RlID0gQ0ZSdW5Mb29wQ29weUN1cnJlbnRNb2RlKENGUnVuTG9vcEdldE1haW4o
KSk7Ci0gICAgICAgICAgICAgICAgTlNMb2coQCIlczogZGVsZWdhdGUgKCVAKSBmYWlsZWQgdG8g
cmV0dXJuIGFmdGVyIHdhaXRpbmcgJWYgc2Vjb25kcy4gbWFpbiBydW4gbG9vcCBtb2RlOiAlQCIs
IF9fUFJFVFRZX0ZVTkNUSU9OX18sIGRlbGVnYXRlSW5mb3JtYXRpb24sIERlbGVnYXRlV2FpdElu
dGVydmFsLnNlY29uZHMoKSwgbW9kZSk7Ci0gICAgICAgICAgICAgICAgaWYgKG1vZGUpCi0gICAg
ICAgICAgICAgICAgICAgIENGUmVsZWFzZShtb2RlKTsKKyAgICAgICAgICAgICAgICBhdXRvIG1v
ZGUgPSBhZG9wdENGKENGUnVuTG9vcENvcHlDdXJyZW50TW9kZShDRlJ1bkxvb3BHZXRNYWluKCkp
KTsKKyAgICAgICAgICAgICAgICBOU0xvZyhAIiVzOiBkZWxlZ2F0ZSAoJUApIGZhaWxlZCB0byBy
ZXR1cm4gYWZ0ZXIgd2FpdGluZyAlZiBzZWNvbmRzLiBtYWluIHJ1biBsb29wIG1vZGU6ICVAIiwg
X19QUkVUVFlfRlVOQ1RJT05fXywgZGVsZWdhdGVJbmZvcm1hdGlvbiwgRGVsZWdhdGVXYWl0SW50
ZXJ2YWwuc2Vjb25kcygpLCBtb2RlLmdldCgpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQog
ICAgICAgICBkZWxlZ2F0ZUxvY2sudW5sb2NrKCk7CkBAIC02MzQsMTYgKzYzMiwxNCBAQCBzdGF0
aWMgdm9pZCogUnVuV2ViVGhyZWFkKHZvaWQqKQogICAgIHdlYlRocmVhZFJ1bkxvb3AgPSBDRlJ1
bkxvb3BHZXRDdXJyZW50KCk7CiAgICAgd2ViVGhyZWFkTlNSdW5Mb29wKCkgPSBbTlNSdW5Mb29w
IGN1cnJlbnRSdW5Mb29wXTsKIAotICAgIENGUnVuTG9vcE9ic2VydmVyUmVmIHdlYlJ1bkxvb3BM
b2NrT2JzZXJ2ZXJSZWYgPSBDRlJ1bkxvb3BPYnNlcnZlckNyZWF0ZShudWxscHRyLCBrQ0ZSdW5M
b29wQmVmb3JlVGltZXJzIHwga0NGUnVuTG9vcEJlZm9yZVNvdXJjZXMgfCBrQ0ZSdW5Mb29wQWZ0
ZXJXYWl0aW5nLCBZRVMsIDAsIFdlYlJ1bkxvb3BMb2NrLCBudWxscHRyKTsKLSAgICBDRlJ1bkxv
b3BBZGRPYnNlcnZlcih3ZWJUaHJlYWRSdW5Mb29wLCB3ZWJSdW5Mb29wTG9ja09ic2VydmVyUmVm
LCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMpOwotICAgIENGUmVsZWFzZSh3ZWJSdW5Mb29wTG9ja09i
c2VydmVyUmVmKTsKKyAgICBhdXRvIHdlYlJ1bkxvb3BMb2NrT2JzZXJ2ZXJSZWYgPSBhZG9wdENG
KENGUnVuTG9vcE9ic2VydmVyQ3JlYXRlKG51bGxwdHIsIGtDRlJ1bkxvb3BCZWZvcmVUaW1lcnMg
fCBrQ0ZSdW5Mb29wQmVmb3JlU291cmNlcyB8IGtDRlJ1bkxvb3BBZnRlcldhaXRpbmcsIFlFUywg
MCwgV2ViUnVuTG9vcExvY2ssIG51bGxwdHIpKTsKKyAgICBDRlJ1bkxvb3BBZGRPYnNlcnZlcih3
ZWJUaHJlYWRSdW5Mb29wLCB3ZWJSdW5Mb29wTG9ja09ic2VydmVyUmVmLmdldCgpLCBrQ0ZSdW5M
b29wQ29tbW9uTW9kZXMpOwogICAgIAogICAgIFdlYlRocmVhZEluaXRSdW5RdWV1ZSgpOwogCiAg
ICAgLy8gV2UgbXVzdCBoYXZlIHRoZSBsb2NrIHdoZW4gQ0EgcGFpbnRzIGluIHRoZSB3ZWIgdGhy
ZWFkLiBDQSBjb21taXRzIGF0IDIwMDAwMDAgc28gd2UgdXNlIGxhcmdlciBvcmRlciBudW1iZXIg
dGhhbiB0aGF0IHRvIGZyZWUgdGhlIGxvY2suCi0gICAgQ0ZSdW5Mb29wT2JzZXJ2ZXJSZWYgd2Vi
UnVuTG9vcFVubG9ja09ic2VydmVyUmVmID0gQ0ZSdW5Mb29wT2JzZXJ2ZXJDcmVhdGUobnVsbHB0
ciwga0NGUnVuTG9vcEJlZm9yZVdhaXRpbmcgfCBrQ0ZSdW5Mb29wRXhpdCwgWUVTLCAyNTAwMDAw
LCBXZWJSdW5Mb29wVW5sb2NrLCBudWxscHRyKTsgICAgCi0gICAgQ0ZSdW5Mb29wQWRkT2JzZXJ2
ZXIod2ViVGhyZWFkUnVuTG9vcCwgd2ViUnVuTG9vcFVubG9ja09ic2VydmVyUmVmLCBrQ0ZSdW5M
b29wQ29tbW9uTW9kZXMpOwotICAgIENGUmVsZWFzZSh3ZWJSdW5Mb29wVW5sb2NrT2JzZXJ2ZXJS
ZWYpOyAgICAKKyAgICBhdXRvIHdlYlJ1bkxvb3BVbmxvY2tPYnNlcnZlclJlZiA9IGFkb3B0Q0Yo
Q0ZSdW5Mb29wT2JzZXJ2ZXJDcmVhdGUobnVsbHB0ciwga0NGUnVuTG9vcEJlZm9yZVdhaXRpbmcg
fCBrQ0ZSdW5Mb29wRXhpdCwgWUVTLCAyNTAwMDAwLCBXZWJSdW5Mb29wVW5sb2NrLCBudWxscHRy
KSk7CisgICAgQ0ZSdW5Mb29wQWRkT2JzZXJ2ZXIod2ViVGhyZWFkUnVuTG9vcCwgd2ViUnVuTG9v
cFVubG9ja09ic2VydmVyUmVmLmdldCgpLCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMpOwogCiAgICAg
Q0ZSdW5Mb29wU291cmNlQ29udGV4dCBSZWxlYXNlU291cmNlQ29udGV4dCA9IHswLCBudWxscHRy
LCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBu
dWxscHRyLCBIYW5kbGVXZWJUaHJlYWRSZWxlYXNlU291cmNlfTsKICAgICBXZWJUaHJlYWRSZWxl
YXNlU291cmNlID0gQ0ZSdW5Mb29wU291cmNlQ3JlYXRlKG51bGxwdHIsIC0xLCAmUmVsZWFzZVNv
dXJjZUNvbnRleHQpOwpAQCAtODIzLDkgKzgxOSw4IEBAIHZvaWQgV2ViVGhyZWFkVW5sb2NrR3Vh
cmRGb3JNYWlsKHZvaWQpCiB7CiAgICAgQVNTRVJUKCFXZWJUaHJlYWRJc0N1cnJlbnQoKSk7CiAK
LSAgICBDRlJ1bkxvb3BPYnNlcnZlclJlZiBtYWluUnVuTG9vcFVubG9ja0d1YXJkT2JzZXJ2ZXIg
PSBDRlJ1bkxvb3BPYnNlcnZlckNyZWF0ZShudWxscHRyLCBrQ0ZSdW5Mb29wRW50cnksIFlFUywg
MCwgTWFpblJ1bkxvb3BVbmxvY2tHdWFyZCwgbnVsbHB0cik7Ci0gICAgQ0ZSdW5Mb29wQWRkT2Jz
ZXJ2ZXIoQ0ZSdW5Mb29wR2V0TWFpbigpLCBtYWluUnVuTG9vcFVubG9ja0d1YXJkT2JzZXJ2ZXIs
IGtDRlJ1bkxvb3BDb21tb25Nb2Rlcyk7Ci0gICAgQ0ZSZWxlYXNlKG1haW5SdW5Mb29wVW5sb2Nr
R3VhcmRPYnNlcnZlcik7CisgICAgYXV0byBtYWluUnVuTG9vcFVubG9ja0d1YXJkT2JzZXJ2ZXIg
PSBhZG9wdENGKENGUnVuTG9vcE9ic2VydmVyQ3JlYXRlKG51bGxwdHIsIGtDRlJ1bkxvb3BFbnRy
eSwgWUVTLCAwLCBNYWluUnVuTG9vcFVubG9ja0d1YXJkLCBudWxscHRyKSk7CisgICAgQ0ZSdW5M
b29wQWRkT2JzZXJ2ZXIoQ0ZSdW5Mb29wR2V0TWFpbigpLCBtYWluUnVuTG9vcFVubG9ja0d1YXJk
T2JzZXJ2ZXIuZ2V0KCksIGtDRlJ1bkxvb3BDb21tb25Nb2Rlcyk7CiB9CiAKIHZvaWQgX1dlYlRo
cmVhZFVubG9jaygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxh
dGZvcm1TcGVlY2hTeW50aGVzaXplck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTWFjLm1tCmluZGV4IDI5NThmMWJjZTM5ZWNlYzk4
NmRiODg1MjlmMTU4ZDcyMmZhZDY2Y2EuLmEyODVjMjJiMjIxMWNmYTY5MWE4ZTI4YjJkOTEwOTY5
ZDk5MDZlOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9y
bVNwZWVjaFN5bnRoZXNpemVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTWFjLm1tCkBAIC0yMTQsMTIgKzIxNCwxMiBAQCBQ
bGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyOjp+UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcigpCiAg
ICAgW21fcGxhdGZvcm1TcGVlY2hXcmFwcGVyLmdldCgpIGludmFsaWRhdGVdOwogfQogCi1zdGF0
aWMgTlNBcnJheSAqc3BlZWNoU3ludGhlc2lzR2V0Vm9pY2VJZGVudGlmaWVycygpCitzdGF0aWMg
UmV0YWluUHRyPENGQXJyYXlSZWY+IHNwZWVjaFN5bnRoZXNpc0dldFZvaWNlSWRlbnRpZmllcnMo
KQogewogICAgIC8vIEdldCBhbGwgdGhlIHZvaWNlcyBvZmZlcmVkIGJ5IFRUUy4KICAgICAvLyBC
eSBkZWZhdWx0IHNwZWVjaCBvbmx5IHJldHVybnMgInByZW1pdW0iIHZvaWNlcywgd2hpY2ggZG9l
cyBub3QgaW5jbHVkZSBhbGwgdGhlCiAgICAgLy8gaW50ZXJuYXRpb25hbCB2b2ljZXMuIFRoaXMg
YWxsb3dzIHVzIHRvIG9mZmVyIHNwZWVjaCBzeW50aGVzaXMgZm9yIGFsbCBzdXBwb3J0ZWQgbGFu
Z3VhZ2VzLgotICAgIHJldHVybiBDRkJyaWRnaW5nUmVsZWFzZShDb3B5U3BlZWNoU3ludGhlc2lz
Vm9pY2VzRm9yTW9kZSgoX19icmlkZ2UgQ0ZBcnJheVJlZilAWyBAIlZvaWNlR3JvdXBEZWZhdWx0
IiwgQCJWb2ljZUdyb3VwQ29tcGFjdCIgXSkpOworICAgIHJldHVybiBhZG9wdENGKENvcHlTcGVl
Y2hTeW50aGVzaXNWb2ljZXNGb3JNb2RlKChfX2JyaWRnZSBDRkFycmF5UmVmKUBbIEAiVm9pY2VH
cm91cERlZmF1bHQiLCBAIlZvaWNlR3JvdXBDb21wYWN0IiBdKSk7CiB9CiAKIHN0YXRpYyBOU1N0
cmluZyAqc3BlZWNoU3ludGhlc2lzR2V0RGVmYXVsdFZvaWNlSWRlbnRpZmllckZvckxvY2FsZShO
U0xvY2FsZSAqdXNlckxvY2FsZSkKQEAgLTIyNywxNSArMjI3LDE1IEBAIHN0YXRpYyBOU1N0cmlu
ZyAqc3BlZWNoU3ludGhlc2lzR2V0RGVmYXVsdFZvaWNlSWRlbnRpZmllckZvckxvY2FsZShOU0xv
Y2FsZSAqdXNlCiAgICAgaWYgKCF1c2VyTG9jYWxlKQogICAgICAgICByZXR1cm4gbmlsOwogCi0g
ICAgcmV0dXJuIChfX2JyaWRnZSBOU1N0cmluZyAqKUdldElkZW50aWZpZXJTdHJpbmdGb3JQcmVm
ZXJyZWRWb2ljZUluTGlzdFdpdGhMb2NhbGUoKF9fYnJpZGdlIENGQXJyYXlSZWYpc3BlZWNoU3lu
dGhlc2lzR2V0Vm9pY2VJZGVudGlmaWVycygpLCAoX19icmlkZ2UgQ0ZMb2NhbGVSZWYpdXNlckxv
Y2FsZSk7CisgICAgcmV0dXJuIChfX2JyaWRnZSBOU1N0cmluZyAqKUdldElkZW50aWZpZXJTdHJp
bmdGb3JQcmVmZXJyZWRWb2ljZUluTGlzdFdpdGhMb2NhbGUoc3BlZWNoU3ludGhlc2lzR2V0Vm9p
Y2VJZGVudGlmaWVycygpLmdldCgpLCAoX19icmlkZ2UgQ0ZMb2NhbGVSZWYpdXNlckxvY2FsZSk7
CiB9CiAKIHZvaWQgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcjo6aW5pdGlhbGl6ZVZvaWNlTGlz
dCgpCiB7Ci0gICAgTlNBcnJheSAqYXZhaWxhYmxlVm9pY2VzID0gc3BlZWNoU3ludGhlc2lzR2V0
Vm9pY2VJZGVudGlmaWVycygpOwotICAgIE5TVUludGVnZXIgY291bnQgPSBbYXZhaWxhYmxlVm9p
Y2VzIGNvdW50XTsKKyAgICBhdXRvIGF2YWlsYWJsZVZvaWNlcyA9IHNwZWVjaFN5bnRoZXNpc0dl
dFZvaWNlSWRlbnRpZmllcnMoKTsKKyAgICBOU1VJbnRlZ2VyIGNvdW50ID0gWyhfX2JyaWRnZSBO
U0FycmF5ICopYXZhaWxhYmxlVm9pY2VzLmdldCgpIGNvdW50XTsKICAgICBmb3IgKE5TVUludGVn
ZXIgayA9IDA7IGsgPCBjb3VudDsgaysrKSB7Ci0gICAgICAgIE5TU3RyaW5nICp2b2ljZU5hbWUg
PSBbYXZhaWxhYmxlVm9pY2VzIG9iamVjdEF0SW5kZXg6a107CisgICAgICAgIE5TU3RyaW5nICp2
b2ljZU5hbWUgPSBbKF9fYnJpZGdlIE5TQXJyYXkgKilhdmFpbGFibGVWb2ljZXMuZ2V0KCkgb2Jq
ZWN0QXRJbmRleDprXTsKICAgICAgICAgTlNEaWN0aW9uYXJ5ICphdHRyaWJ1dGVzID0gW05TU3Bl
ZWNoU3ludGhlc2l6ZXIgYXR0cmlidXRlc0ZvclZvaWNlOnZvaWNlTmFtZV07CiAKICAgICAgICAg
TlNTdHJpbmcgKnZvaWNlVVJJID0gW2F0dHJpYnV0ZXMgb2JqZWN0Rm9yS2V5Ok5TVm9pY2VJZGVu
dGlmaWVyXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbHVnaW5C
bG9ja2xpc3QubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGx1Z2luQmxvY2tsaXN0
Lm1tCmluZGV4IGE4MGI0YWZlYzc2MWQ4Nzk4N2ZmOTEyMDczNDYwYjkzOWU0MGY3NGYuLjEzNmY2
ZWRmNjliNGRjNmRkNzkyYmExM2M0YzhmY2RlYzhkOGU0MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9QbHVnaW5CbG9ja2xpc3QubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL1BsdWdpbkJsb2NrbGlzdC5tbQpAQCAtNjksOCArNjksOCBAQCBib29s
IFBsdWdpbkJsb2NrbGlzdDo6aXNQbHVnaW5VcGRhdGVBdmFpbGFibGUoTlNTdHJpbmcgKmJ1bmRs
ZUlkZW50aWZpZXIpCiAKIHN0ZDo6dW5pcXVlX3B0cjxQbHVnaW5CbG9ja2xpc3Q+IFBsdWdpbkJs
b2NrbGlzdDo6Y3JlYXRlKE5TRGljdGlvbmFyeSAqcHJvcGVydHlMaXN0KQogewotICAgIENGRGlj
dGlvbmFyeVJlZiBzeXN0ZW1WZXJzaW9uRGljdGlvbmFyeSA9IF9DRkNvcHlTeXN0ZW1WZXJzaW9u
RGljdGlvbmFyeSgpOwotICAgIENGU3RyaW5nUmVmIG9zVmVyc2lvbiA9IHN0YXRpY19jYXN0PENG
U3RyaW5nUmVmPihDRkRpY3Rpb25hcnlHZXRWYWx1ZShzeXN0ZW1WZXJzaW9uRGljdGlvbmFyeSwg
X2tDRlN5c3RlbVZlcnNpb25Qcm9kdWN0VmVyc2lvbktleSkpOworICAgIGF1dG8gc3lzdGVtVmVy
c2lvbkRpY3Rpb25hcnkgPSBhZG9wdENGKF9DRkNvcHlTeXN0ZW1WZXJzaW9uRGljdGlvbmFyeSgp
KTsKKyAgICBDRlN0cmluZ1JlZiBvc1ZlcnNpb24gPSBzdGF0aWNfY2FzdDxDRlN0cmluZ1JlZj4o
Q0ZEaWN0aW9uYXJ5R2V0VmFsdWUoc3lzdGVtVmVyc2lvbkRpY3Rpb25hcnkuZ2V0KCksIF9rQ0ZT
eXN0ZW1WZXJzaW9uUHJvZHVjdFZlcnNpb25LZXkpKTsKIAogICAgIE5TRGljdGlvbmFyeSAqZGlj
dGlvbmFyeSA9IFtwcm9wZXJ0eUxpc3Qgb2JqZWN0Rm9yS2V5OkAiUGx1Z0luQmxvY2tsaXN0Il07
CiAKQEAgLTExMiw4ICsxMTIsNiBAQCBzdGQ6OnVuaXF1ZV9wdHI8UGx1Z2luQmxvY2tsaXN0PiBQ
bHVnaW5CbG9ja2xpc3Q6OmNyZWF0ZShOU0RpY3Rpb25hcnkgKnByb3BlcnR5TAogICAgICAgICB9
CiAgICAgfQogCi0gICAgQ0ZSZWxlYXNlKHN5c3RlbVZlcnNpb25EaWN0aW9uYXJ5KTsKLQogICAg
IHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8UGx1Z2luQmxvY2tsaXN0PihuZXcgUGx1Z2luQmxvY2ts
aXN0KGJ1bmRsZUlEVG9NaW5pbXVtU2VjdXJlVmVyc2lvbiwgYnVuZGxlSURUb01pbmltdW1Db21w
YXRpYmxlVmVyc2lvbiwgYnVuZGxlSURUb0Jsb2NrZWRWZXJzaW9ucywgYnVuZGxlSURzV2l0aEF2
YWlsYWJsZVVwZGF0ZXMpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL1dlYkdMQmxvY2tsaXN0Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dl
YkdMQmxvY2tsaXN0Lm1tCmluZGV4IDZjMWQyNmU0NzlhMDI4MTdiZGQ1YjE4NmZhYTJhYTc2YTVl
Y2JkYmMuLmQwNGVlMjE3NGQxZGJjNzdkN2NhZTg1YTNmYWEyNWIwMTgxNTc4NDUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJHTEJsb2NrbGlzdC5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViR0xCbG9ja2xpc3QubW0KQEAgLTE2OCwxMCAr
MTY4LDkgQEAgc3RhdGljIGJvb2wgbWF0Y2hlc0J1aWxkSW5mbyhPU0J1aWxkSW5mbyBtYWNoaW5l
SW5mbywgT1NCdWlsZEluZm8gYmxvY2tJbmZvLCBXZWIKIAogc3RkOjp1bmlxdWVfcHRyPFdlYkdM
QmxvY2tsaXN0PiBXZWJHTEJsb2NrbGlzdDo6Y3JlYXRlKE5TRGljdGlvbmFyeSAqcHJvcGVydHlM
aXN0KQogewotICAgIENGRGljdGlvbmFyeVJlZiBzeXN0ZW1WZXJzaW9uRGljdGlvbmFyeSA9IF9D
RkNvcHlTeXN0ZW1WZXJzaW9uRGljdGlvbmFyeSgpOwotICAgIENGU3RyaW5nUmVmIG9zQnVpbGQg
PSBzdGF0aWNfY2FzdDxDRlN0cmluZ1JlZj4oQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoc3lzdGVtVmVy
c2lvbkRpY3Rpb25hcnksIF9rQ0ZTeXN0ZW1WZXJzaW9uQnVpbGRWZXJzaW9uS2V5KSk7CisgICAg
YXV0byBzeXN0ZW1WZXJzaW9uRGljdGlvbmFyeSA9IGFkb3B0Q0YoX0NGQ29weVN5c3RlbVZlcnNp
b25EaWN0aW9uYXJ5KCkpOworICAgIENGU3RyaW5nUmVmIG9zQnVpbGQgPSBzdGF0aWNfY2FzdDxD
RlN0cmluZ1JlZj4oQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoc3lzdGVtVmVyc2lvbkRpY3Rpb25hcnku
Z2V0KCksIF9rQ0ZTeXN0ZW1WZXJzaW9uQnVpbGRWZXJzaW9uS2V5KSk7CiAgICAgT1NCdWlsZElu
Zm8gYnVpbGRJbmZvID0gYnVpbGRJbmZvRnJvbU9TQnVpbGRTdHJpbmcoKF9fYnJpZGdlIE5TU3Ry
aW5nICopb3NCdWlsZCk7Ci0gICAgQ0ZSZWxlYXNlKHN5c3RlbVZlcnNpb25EaWN0aW9uYXJ5KTsK
IAogICAgIGlmICghYnVpbGRJbmZvLm1ham9yKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvQXVk
aW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFyZWNvcmRlci9jb2NvYS9BdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IubW0KaW5kZXggN2Uy
ZjZhYTUyZGNkZTMyMTQ3MDE1OTE2NmU1NDhhMGNjOWFmNGY1My4uYzc5YTQ3OTYyNDAyYmIxMzI5
MzNjODdiZmU5OGQyMzdmNTZlZTA2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFyZWNvcmRlci9jb2NvYS9BdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9BdWRpb1NhbXBs
ZUJ1ZmZlckNvbXByZXNzb3IubW0KQEAgLTIyNyw5ICsyMjcsOCBAQCB2b2lkIEF1ZGlvU2FtcGxl
QnVmZmVyQ29tcHJlc3Nvcjo6YXR0YWNoUHJpbWluZ1RyaW1zSWZOZWVkZWQoQ01TYW1wbGVCdWZm
ZXJSZWYgYgogICAgIGlmIChDTVRJTUVfQ09NUEFSRV9JTkxJTkUoa0NNVGltZVplcm8sIDwsIG1f
cmVtYWluaW5nUHJpbWVEdXJhdGlvbikpIHsKICAgICAgICAgQ01UaW1lIHNhbXBsZUR1cmF0aW9u
ID0gQ01TYW1wbGVCdWZmZXJHZXREdXJhdGlvbihidWZmZXIpOwogICAgICAgICBDTVRpbWUgdHJp
bUR1cmF0aW9uID0gQ01UaW1lTWluaW11bShzYW1wbGVEdXJhdGlvbiwgbV9yZW1haW5pbmdQcmlt
ZUR1cmF0aW9uKTsKLSAgICAgICAgQ0ZEaWN0aW9uYXJ5UmVmIHRyaW1BdFN0YXJ0RGljdCA9IENN
VGltZUNvcHlBc0RpY3Rpb25hcnkodHJpbUR1cmF0aW9uLCBrQ0ZBbGxvY2F0b3JEZWZhdWx0KTsK
LSAgICAgICAgQ01TZXRBdHRhY2htZW50KGJ1ZmZlciwga0NNU2FtcGxlQnVmZmVyQXR0YWNobWVu
dEtleV9UcmltRHVyYXRpb25BdFN0YXJ0LCB0cmltQXRTdGFydERpY3QsIGtDTUF0dGFjaG1lbnRN
b2RlX1Nob3VsZFByb3BhZ2F0ZSk7Ci0gICAgICAgIENGUmVsZWFzZSh0cmltQXRTdGFydERpY3Qp
OworICAgICAgICBhdXRvIHRyaW1BdFN0YXJ0RGljdCA9IGFkb3B0Q0YoQ01UaW1lQ29weUFzRGlj
dGlvbmFyeSh0cmltRHVyYXRpb24sIGtDRkFsbG9jYXRvckRlZmF1bHQpKTsKKyAgICAgICAgQ01T
ZXRBdHRhY2htZW50KGJ1ZmZlciwga0NNU2FtcGxlQnVmZmVyQXR0YWNobWVudEtleV9UcmltRHVy
YXRpb25BdFN0YXJ0LCB0cmltQXRTdGFydERpY3QuZ2V0KCksIGtDTUF0dGFjaG1lbnRNb2RlX1No
b3VsZFByb3BhZ2F0ZSk7CiAgICAgICAgIG1fcmVtYWluaW5nUHJpbWVEdXJhdGlvbiA9IENNVGlt
ZVN1YnRyYWN0KG1fcmVtYWluaW5nUHJpbWVEdXJhdGlvbiwgdHJpbUR1cmF0aW9uKTsKICAgICB9
CiB9CkBAIC0zNDcsNyArMzQ2LDcgQEAgT1NTdGF0dXMgQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVz
c29yOjpwcm92aWRlU291cmNlRGF0YU51bU91dHB1dFBhY2tldHMoVUludDMyKgogICAgICAgICAg
ICAgICAgICAgICBicmVhazsKIAogICAgICAgICAgICAgICAgIGF1dG8gc2FtcGxlQnVmZmVyID0g
YWRvcHRDRigoQ01TYW1wbGVCdWZmZXJSZWYpKGNvbnN0X2Nhc3Q8dm9pZCo+KENNQnVmZmVyUXVl
dWVEZXF1ZXVlQW5kUmV0YWluKG1faW5wdXRCdWZmZXJRdWV1ZS5nZXQoKSkpKSk7Ci0gICAgICAg
ICAgICAgICAgbV9zYW1wbGVCbG9ja0J1ZmZlciA9IGFkb3B0Q0YoKENNQmxvY2tCdWZmZXJSZWYp
KGNvbnN0X2Nhc3Q8dm9pZCo+KENGUmV0YWluKENNU2FtcGxlQnVmZmVyR2V0RGF0YUJ1ZmZlcihz
YW1wbGVCdWZmZXIuZ2V0KCkpKSkpKTsKKyAgICAgICAgICAgICAgICBtX3NhbXBsZUJsb2NrQnVm
ZmVyID0gQ01TYW1wbGVCdWZmZXJHZXREYXRhQnVmZmVyKHNhbXBsZUJ1ZmZlci5nZXQoKSk7CiAg
ICAgICAgICAgICAgICAgaWYgKCFtX3NhbXBsZUJsb2NrQnVmZmVyKSB7CiAgICAgICAgICAgICAg
ICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAiQXVkaW9TYW1wbGVCdWZmZXJD
b21wcmVzc29yIENNU2FtcGxlQnVmZmVyR2V0RGF0YUJ1ZmZlciBmYWlsZWQiKTsKICAgICAgICAg
ICAgICAgICAgICAgbV9zYW1wbGVCbG9ja0J1ZmZlclNpemUgPSAwOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9WaWRlb1NhbXBsZUJ1ZmZl
ckNvbXByZXNzb3IubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2Nv
Y29hL1ZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5tbQppbmRleCAyODcxNTEzODA3Y2FkNjhj
YmRmYzNmYmU0ZWViMTdmNDA2MzM5MTkzLi5lMDNlNzcwZjBjYWE5YmRjNmIxNmQ1YWM3NGJiMzc4
NmRmOGY0YWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29y
ZGVyL2NvY29hL1ZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL1ZpZGVvU2FtcGxlQnVmZmVyQ29tcHJl
c3Nvci5tbQpAQCAtMTA5LDkgKzEwOSw4IEBAIHZvaWQgVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVz
c29yOjp2aWRlb0NvbXByZXNzaW9uQ2FsbGJhY2sodm9pZCAqcmVmQ29uLCB2b2lkKiwKIHN0YXRp
YyBpbmxpbmUgT1NTdGF0dXMgc2V0Q29tcHJlc3Npb25TZXNzaW9uUHJvcGVydHkoVlRDb21wcmVz
c2lvblNlc3Npb25SZWYgdnRTZXNzaW9uLCBDRlN0cmluZ1JlZiBrZXksIHVpbnQzMl90IHZhbHVl
KQogewogICAgIGludDY0X3QgdmFsdWU2NCA9IHZhbHVlOwotICAgIENGTnVtYmVyUmVmIGNmVmFs
dWUgPSBDRk51bWJlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrQ0ZOdW1iZXJTSW50NjRU
eXBlLCAmdmFsdWU2NCk7Ci0gICAgT1NTdGF0dXMgc3RhdHVzID0gVlRTZXNzaW9uU2V0UHJvcGVy
dHkodnRTZXNzaW9uLCBrZXksIGNmVmFsdWUpOwotICAgIENGUmVsZWFzZShjZlZhbHVlKTsKKyAg
ICBhdXRvIGNmVmFsdWUgPSBhZG9wdENGKENGTnVtYmVyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1
bHQsIGtDRk51bWJlclNJbnQ2NFR5cGUsICZ2YWx1ZTY0KSk7CisgICAgT1NTdGF0dXMgc3RhdHVz
ID0gVlRTZXNzaW9uU2V0UHJvcGVydHkodnRTZXNzaW9uLCBrZXksIGNmVmFsdWUuZ2V0KCkpOwog
ICAgIHJldHVybiBzdGF0dXM7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY2YvRm9ybURhdGFTdHJlYW1DRk5ldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NmL0Zvcm1EYXRhU3RyZWFtQ0ZOZXQuY3BwCmluZGV4IDNmNjhlYWQz
NDEyNjJmNTZiZmUyMjEyMDMyYmU2ODM3NmU4YzgwN2YuLmQ3ZGQ2M2ZlYWJmYjAzYzAxOTJmMjQ5
Zjg2OGEzNDEwMDNjYTQ1ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY2YvRm9ybURhdGFTdHJlYW1DRk5ldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jZi9Gb3JtRGF0YVN0cmVhbUNGTmV0LmNwcApAQCAtMTAzLDcgKzEwMyw3
IEBAIHN0cnVjdCBGb3JtU3RyZWFtRmllbGRzIHsKICAgICBGb3JtRGF0YUZvclVwbG9hZCBkYXRh
OwogICAgIFNjaGVkdWxlUGFpckhhc2hTZXQgc2NoZWR1bGVkUnVuTG9vcFBhaXJzOwogICAgIFZl
Y3RvcjxGb3JtRGF0YUVsZW1lbnQ+IHJlbWFpbmluZ0VsZW1lbnRzOyAvLyBpbiByZXZlcnNlIG9y
ZGVyCi0gICAgQ0ZSZWFkU3RyZWFtUmVmIGN1cnJlbnRTdHJlYW0geyBudWxscHRyIH07CisgICAg
UmV0YWluUHRyPENGUmVhZFN0cmVhbVJlZj4gY3VycmVudFN0cmVhbTsKICAgICBsb25nIGxvbmcg
Y3VycmVudFN0cmVhbVJhbmdlTGVuZ3RoIHsgQmxvYkRhdGFJdGVtOjp0b0VuZE9mRmlsZSB9Owog
ICAgIE1hbGxvY1B0cjxjaGFyLCBXVEY6OlZlY3Rvck1hbGxvYz4gY3VycmVudERhdGE7CiAgICAg
Q0ZSZWFkU3RyZWFtUmVmIGZvcm1TdHJlYW0geyBudWxscHRyIH07CkBAIC0xMTcsMTAgKzExNyw5
IEBAIHN0YXRpYyB2b2lkIGNsb3NlQ3VycmVudFN0cmVhbShGb3JtU3RyZWFtRmllbGRzKiBmb3Jt
KQogICAgIEFTU0VSVChmb3JtLT5zdHJlYW1Jc0JlaW5nT3BlbmVkT3JDbG9zZWRMb2NrLmlzSGVs
ZCgpKTsKIAogICAgIGlmIChmb3JtLT5jdXJyZW50U3RyZWFtKSB7Ci0gICAgICAgIENGUmVhZFN0
cmVhbUNsb3NlKGZvcm0tPmN1cnJlbnRTdHJlYW0pOwotICAgICAgICBDRlJlYWRTdHJlYW1TZXRD
bGllbnQoZm9ybS0+Y3VycmVudFN0cmVhbSwga0NGU3RyZWFtRXZlbnROb25lLCAwLCAwKTsKLSAg
ICAgICAgQ0ZSZWxlYXNlKGZvcm0tPmN1cnJlbnRTdHJlYW0pOwotICAgICAgICBmb3JtLT5jdXJy
ZW50U3RyZWFtID0gMDsKKyAgICAgICAgQ0ZSZWFkU3RyZWFtQ2xvc2UoZm9ybS0+Y3VycmVudFN0
cmVhbS5nZXQoKSk7CisgICAgICAgIENGUmVhZFN0cmVhbVNldENsaWVudChmb3JtLT5jdXJyZW50
U3RyZWFtLmdldCgpLCBrQ0ZTdHJlYW1FdmVudE5vbmUsIDAsIDApOworICAgICAgICBmb3JtLT5j
dXJyZW50U3RyZWFtID0gbnVsbHB0cjsKICAgICAgICAgZm9ybS0+Y3VycmVudFN0cmVhbVJhbmdl
TGVuZ3RoID0gQmxvYkRhdGFJdGVtOjp0b0VuZE9mRmlsZTsKICAgICB9CiAgICAgZm9ybS0+Y3Vy
cmVudERhdGEgPSBudWxscHRyOwpAQCAtMTQzLDcgKzE0Miw3IEBAIHN0YXRpYyBib29sIGFkdmFu
Y2VDdXJyZW50U3RyZWFtKEZvcm1TdHJlYW1GaWVsZHMqIGZvcm0pCiAgICAgICAgIFtmb3JtXSAo
VmVjdG9yPGNoYXI+JiBieXRlcykgewogICAgICAgICAgICAgc2l6ZV90IHNpemUgPSBieXRlcy5z
aXplKCk7CiAgICAgICAgICAgICBNYWxsb2NQdHI8Y2hhciwgV1RGOjpWZWN0b3JNYWxsb2M+IGRh
dGEgPSBieXRlcy5yZWxlYXNlQnVmZmVyKCk7Ci0gICAgICAgICAgICBmb3JtLT5jdXJyZW50U3Ry
ZWFtID0gQ0ZSZWFkU3RyZWFtQ3JlYXRlV2l0aEJ5dGVzTm9Db3B5KDAsIHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgVUludDgqPihkYXRhLmdldCgpKSwgc2l6ZSwga0NGQWxsb2NhdG9yTnVsbCk7Cisg
ICAgICAgICAgICBmb3JtLT5jdXJyZW50U3RyZWFtID0gYWRvcHRDRihDRlJlYWRTdHJlYW1DcmVh
dGVXaXRoQnl0ZXNOb0NvcHkoMCwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBVSW50OCo+KGRhdGEu
Z2V0KCkpLCBzaXplLCBrQ0ZBbGxvY2F0b3JOdWxsKSk7CiAgICAgICAgICAgICBmb3JtLT5jdXJy
ZW50RGF0YSA9IFdURk1vdmUoZGF0YSk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAg
ICAgfSwgW2Zvcm1dIChjb25zdCBGb3JtRGF0YUVsZW1lbnQ6OkVuY29kZWRGaWxlRGF0YSYgZmls
ZURhdGEpIHsKQEAgLTE1MiwxNCArMTUxLDE0IEBAIHN0YXRpYyBib29sIGFkdmFuY2VDdXJyZW50
U3RyZWFtKEZvcm1TdHJlYW1GaWVsZHMqIGZvcm0pCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCiAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIHBhdGggPSBmaWxlRGF0YS5maWxlbmFt
ZTsKLSAgICAgICAgICAgIGZvcm0tPmN1cnJlbnRTdHJlYW0gPSBDRlJlYWRTdHJlYW1DcmVhdGVX
aXRoRmlsZSgwLCBGaWxlU3lzdGVtOjpwYXRoQXNVUkwocGF0aCkuZ2V0KCkpOworICAgICAgICAg
ICAgZm9ybS0+Y3VycmVudFN0cmVhbSA9IGFkb3B0Q0YoQ0ZSZWFkU3RyZWFtQ3JlYXRlV2l0aEZp
bGUoMCwgRmlsZVN5c3RlbTo6cGF0aEFzVVJMKHBhdGgpLmdldCgpKSk7CiAgICAgICAgICAgICBp
ZiAoIWZvcm0tPmN1cnJlbnRTdHJlYW0pIHsKICAgICAgICAgICAgICAgICAvLyBUaGUgZmlsZSBt
dXN0IGhhdmUgYmVlbiByZW1vdmVkIG9yIGJlY29tZSB1bnJlYWRhYmxlLgogICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChmaWxlRGF0
YS5maWxlU3RhcnQgPiAwKSB7CiAgICAgICAgICAgICAgICAgUmV0YWluUHRyPENGTnVtYmVyUmVm
PiBwb3NpdGlvbiA9IGFkb3B0Q0YoQ0ZOdW1iZXJDcmVhdGUoMCwga0NGTnVtYmVyTG9uZ0xvbmdU
eXBlLCAmZmlsZURhdGEuZmlsZVN0YXJ0KSk7Ci0gICAgICAgICAgICAgICAgQ0ZSZWFkU3RyZWFt
U2V0UHJvcGVydHkoZm9ybS0+Y3VycmVudFN0cmVhbSwga0NGU3RyZWFtUHJvcGVydHlGaWxlQ3Vy
cmVudE9mZnNldCwgcG9zaXRpb24uZ2V0KCkpOworICAgICAgICAgICAgICAgIENGUmVhZFN0cmVh
bVNldFByb3BlcnR5KGZvcm0tPmN1cnJlbnRTdHJlYW0uZ2V0KCksIGtDRlN0cmVhbVByb3BlcnR5
RmlsZUN1cnJlbnRPZmZzZXQsIHBvc2l0aW9uLmdldCgpKTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIGZvcm0tPmN1cnJlbnRTdHJlYW1SYW5nZUxlbmd0aCA9IGZpbGVEYXRhLmZpbGVMZW5n
dGg7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTE3NiwxMyArMTc1LDEzIEBAIHN0YXRp
YyBib29sIGFkdmFuY2VDdXJyZW50U3RyZWFtKEZvcm1TdHJlYW1GaWVsZHMqIGZvcm0pCiAKICAg
ICAvLyBTZXQgdXAgdGhlIGNhbGxiYWNrLgogICAgIENGU3RyZWFtQ2xpZW50Q29udGV4dCBjb250
ZXh0ID0geyAwLCBmb3JtLCAwLCAwLCAwIH07Ci0gICAgQ0ZSZWFkU3RyZWFtU2V0Q2xpZW50KGZv
cm0tPmN1cnJlbnRTdHJlYW0sIGtDRlN0cmVhbUV2ZW50SGFzQnl0ZXNBdmFpbGFibGUgfCBrQ0ZT
dHJlYW1FdmVudEVycm9yT2NjdXJyZWQgfCBrQ0ZTdHJlYW1FdmVudEVuZEVuY291bnRlcmVkLAor
ICAgIENGUmVhZFN0cmVhbVNldENsaWVudChmb3JtLT5jdXJyZW50U3RyZWFtLmdldCgpLCBrQ0ZT
dHJlYW1FdmVudEhhc0J5dGVzQXZhaWxhYmxlIHwga0NGU3RyZWFtRXZlbnRFcnJvck9jY3VycmVk
IHwga0NGU3RyZWFtRXZlbnRFbmRFbmNvdW50ZXJlZCwKICAgICAgICAgZm9ybUV2ZW50Q2FsbGJh
Y2ssICZjb250ZXh0KTsKIAogICAgIC8vIFNjaGVkdWxlIHdpdGggdGhlIGN1cnJlbnQgc2V0IG9m
IHJ1biBsb29wcy4KICAgICBTY2hlZHVsZVBhaXJIYXNoU2V0OjppdGVyYXRvciBlbmQgPSBmb3Jt
LT5zY2hlZHVsZWRSdW5Mb29wUGFpcnMuZW5kKCk7CiAgICAgZm9yIChTY2hlZHVsZVBhaXJIYXNo
U2V0OjppdGVyYXRvciBpdCA9IGZvcm0tPnNjaGVkdWxlZFJ1bkxvb3BQYWlycy5iZWdpbigpOyBp
dCAhPSBlbmQ7ICsraXQpCi0gICAgICAgIENGUmVhZFN0cmVhbVNjaGVkdWxlV2l0aFJ1bkxvb3Ao
Zm9ybS0+Y3VycmVudFN0cmVhbSwgKCppdCktPnJ1bkxvb3AoKSwgKCppdCktPm1vZGUoKSk7Cisg
ICAgICAgIENGUmVhZFN0cmVhbVNjaGVkdWxlV2l0aFJ1bkxvb3AoZm9ybS0+Y3VycmVudFN0cmVh
bS5nZXQoKSwgKCppdCktPnJ1bkxvb3AoKSwgKCppdCktPm1vZGUoKSk7CiAKICAgICByZXR1cm4g
dHJ1ZTsKIH0KQEAgLTE5Niw3ICsxOTUsNyBAQCBzdGF0aWMgYm9vbCBvcGVuTmV4dFN0cmVhbShG
b3JtU3RyZWFtRmllbGRzKiBmb3JtKQogICAgIC8vIFNraXAgb3ZlciBhbnkgc3RyZWFtcyB3ZSBj
YW4ndCBvcGVuLgogICAgIGlmICghYWR2YW5jZUN1cnJlbnRTdHJlYW0oZm9ybSkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICB3aGlsZSAoZm9ybS0+Y3VycmVudFN0cmVhbSAmJiAhQ0ZSZWFk
U3RyZWFtT3Blbihmb3JtLT5jdXJyZW50U3RyZWFtKSkgeworICAgIHdoaWxlIChmb3JtLT5jdXJy
ZW50U3RyZWFtICYmICFDRlJlYWRTdHJlYW1PcGVuKGZvcm0tPmN1cnJlbnRTdHJlYW0uZ2V0KCkp
KSB7CiAgICAgICAgIGlmICghYWR2YW5jZUN1cnJlbnRTdHJlYW0oZm9ybSkpCiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfQpAQCAtMjYyLDkgKzI2MSw5IEBAIHN0YXRpYyBDRkluZGV4
IGZvcm1SZWFkKENGUmVhZFN0cmVhbVJlZiwgVUludDgqIGJ1ZmZlciwgQ0ZJbmRleCBidWZmZXJM
ZW5ndGgsIENGCiAgICAgICAgIENGSW5kZXggYnl0ZXNUb1JlYWQgPSBidWZmZXJMZW5ndGg7CiAg
ICAgICAgIGlmIChmb3JtLT5jdXJyZW50U3RyZWFtUmFuZ2VMZW5ndGggIT0gQmxvYkRhdGFJdGVt
Ojp0b0VuZE9mRmlsZSAmJiBmb3JtLT5jdXJyZW50U3RyZWFtUmFuZ2VMZW5ndGggPCBieXRlc1Rv
UmVhZCkKICAgICAgICAgICAgIGJ5dGVzVG9SZWFkID0gc3RhdGljX2Nhc3Q8Q0ZJbmRleD4oZm9y
bS0+Y3VycmVudFN0cmVhbVJhbmdlTGVuZ3RoKTsKLSAgICAgICAgQ0ZJbmRleCBieXRlc1JlYWQg
PSBDRlJlYWRTdHJlYW1SZWFkKGZvcm0tPmN1cnJlbnRTdHJlYW0sIGJ1ZmZlciwgYnl0ZXNUb1Jl
YWQpOworICAgICAgICBDRkluZGV4IGJ5dGVzUmVhZCA9IENGUmVhZFN0cmVhbVJlYWQoZm9ybS0+
Y3VycmVudFN0cmVhbS5nZXQoKSwgYnVmZmVyLCBieXRlc1RvUmVhZCk7CiAgICAgICAgIGlmIChi
eXRlc1JlYWQgPCAwKSB7Ci0gICAgICAgICAgICAqZXJyb3IgPSBDRlJlYWRTdHJlYW1HZXRFcnJv
cihmb3JtLT5jdXJyZW50U3RyZWFtKTsKKyAgICAgICAgICAgICplcnJvciA9IENGUmVhZFN0cmVh
bUdldEVycm9yKGZvcm0tPmN1cnJlbnRTdHJlYW0uZ2V0KCkpOwogICAgICAgICAgICAgcmV0dXJu
IC0xOwogICAgICAgICB9CiAgICAgICAgIGlmIChieXRlc1JlYWQgPiAwKSB7CkBAIC0yODgsMTQg
KzI4NywxNCBAQCBzdGF0aWMgQm9vbGVhbiBmb3JtQ2FuUmVhZChDRlJlYWRTdHJlYW1SZWYgc3Ry
ZWFtLCB2b2lkKiBjb250ZXh0KQogewogICAgIEZvcm1TdHJlYW1GaWVsZHMqIGZvcm0gPSBzdGF0
aWNfY2FzdDxGb3JtU3RyZWFtRmllbGRzKj4oY29udGV4dCk7CiAKLSAgICB3aGlsZSAoZm9ybS0+
Y3VycmVudFN0cmVhbSAmJiBDRlJlYWRTdHJlYW1HZXRTdGF0dXMoZm9ybS0+Y3VycmVudFN0cmVh
bSkgPT0ga0NGU3RyZWFtU3RhdHVzQXRFbmQpCisgICAgd2hpbGUgKGZvcm0tPmN1cnJlbnRTdHJl
YW0gJiYgQ0ZSZWFkU3RyZWFtR2V0U3RhdHVzKGZvcm0tPmN1cnJlbnRTdHJlYW0uZ2V0KCkpID09
IGtDRlN0cmVhbVN0YXR1c0F0RW5kKQogICAgICAgICBvcGVuTmV4dFN0cmVhbShmb3JtKTsKIAog
ICAgIGlmICghZm9ybS0+Y3VycmVudFN0cmVhbSkgewogICAgICAgICBDRlJlYWRTdHJlYW1TaWdu
YWxFdmVudChzdHJlYW0sIGtDRlN0cmVhbUV2ZW50RW5kRW5jb3VudGVyZWQsIDApOwogICAgICAg
ICByZXR1cm4gRkFMU0U7CiAgICAgfQotICAgIHJldHVybiBDRlJlYWRTdHJlYW1IYXNCeXRlc0F2
YWlsYWJsZShmb3JtLT5jdXJyZW50U3RyZWFtKTsKKyAgICByZXR1cm4gQ0ZSZWFkU3RyZWFtSGFz
Qnl0ZXNBdmFpbGFibGUoZm9ybS0+Y3VycmVudFN0cmVhbS5nZXQoKSk7CiB9CiAKIHN0YXRpYyB2
b2lkIGZvcm1DbG9zZShDRlJlYWRTdHJlYW1SZWYsIHZvaWQqIGNvbnRleHQpCkBAIC0zMjYsNyAr
MzI1LDcgQEAgc3RhdGljIHZvaWQgZm9ybVNjaGVkdWxlKENGUmVhZFN0cmVhbVJlZiwgQ0ZSdW5M
b29wUmVmIHJ1bkxvb3AsIENGU3RyaW5nUmVmIHJ1bkwKICAgICBGb3JtU3RyZWFtRmllbGRzKiBm
b3JtID0gc3RhdGljX2Nhc3Q8Rm9ybVN0cmVhbUZpZWxkcyo+KGNvbnRleHQpOwogCiAgICAgaWYg
KGZvcm0tPmN1cnJlbnRTdHJlYW0pCi0gICAgICAgIENGUmVhZFN0cmVhbVNjaGVkdWxlV2l0aFJ1
bkxvb3AoZm9ybS0+Y3VycmVudFN0cmVhbSwgcnVuTG9vcCwgcnVuTG9vcE1vZGUpOworICAgICAg
ICBDRlJlYWRTdHJlYW1TY2hlZHVsZVdpdGhSdW5Mb29wKGZvcm0tPmN1cnJlbnRTdHJlYW0uZ2V0
KCksIHJ1bkxvb3AsIHJ1bkxvb3BNb2RlKTsKICAgICBmb3JtLT5zY2hlZHVsZWRSdW5Mb29wUGFp
cnMuYWRkKFNjaGVkdWxlUGFpcjo6Y3JlYXRlKHJ1bkxvb3AsIHJ1bkxvb3BNb2RlKSk7CiB9CiAK
QEAgLTMzNSw3ICszMzQsNyBAQCBzdGF0aWMgdm9pZCBmb3JtVW5zY2hlZHVsZShDRlJlYWRTdHJl
YW1SZWYsIENGUnVuTG9vcFJlZiBydW5Mb29wLCBDRlN0cmluZ1JlZiBydQogICAgIEZvcm1TdHJl
YW1GaWVsZHMqIGZvcm0gPSBzdGF0aWNfY2FzdDxGb3JtU3RyZWFtRmllbGRzKj4oY29udGV4dCk7
CiAKICAgICBpZiAoZm9ybS0+Y3VycmVudFN0cmVhbSkKLSAgICAgICAgQ0ZSZWFkU3RyZWFtVW5z
Y2hlZHVsZUZyb21SdW5Mb29wKGZvcm0tPmN1cnJlbnRTdHJlYW0sIHJ1bkxvb3AsIHJ1bkxvb3BN
b2RlKTsKKyAgICAgICAgQ0ZSZWFkU3RyZWFtVW5zY2hlZHVsZUZyb21SdW5Mb29wKGZvcm0tPmN1
cnJlbnRTdHJlYW0uZ2V0KCksIHJ1bkxvb3AsIHJ1bkxvb3BNb2RlKTsKICAgICBmb3JtLT5zY2hl
ZHVsZWRSdW5Mb29wUGFpcnMucmVtb3ZlKFNjaGVkdWxlUGFpcjo6Y3JlYXRlKHJ1bkxvb3AsIHJ1
bkxvb3BNb2RlKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY2YvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ0ZOZXRXaW4uY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jZi9OZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldFdpbi5jcHAK
aW5kZXggMDViMGVjOTJiOWVhNzI2NjZiNjljMDdiZTAyZjYwNjZiZDVmN2QxNS4uNWQ3ZDc5NjE0
NDY1ZmNhYjViZDZiNjQxOGUwNjBmNjhlYjA5NGE0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jZi9OZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldFdpbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9OZXR3b3JrU3RvcmFnZVNl
c3Npb25DRk5ldFdpbi5jcHAKQEAgLTg4LDEyICs4OCwxMCBAQCBDRlVSTFN0b3JhZ2VTZXNzaW9u
UmVmIGNyZWF0ZVByaXZhdGVTdG9yYWdlU2Vzc2lvbihDRlN0cmluZ1JlZiBpZGVudGlmaWVyLCBP
cHRpbwogICAgIAogICAgIC8vIFRoZSBwcml2YXRlIHN0b3JhZ2Ugc2Vzc2lvbiBzaG91bGQgaGF2
ZSB0aGUgc2FtZSBwcm9wZXJ0aWVzIGFzIHRoZSBkZWZhdWx0IHN0b3JhZ2Ugc2Vzc2lvbiwKICAg
ICAvLyB3aXRoIHRoZSBleGNlcHRpb24gdGhhdCBpdCBzaG91bGQgYmUgaW4tbWVtb3J5IG9ubHkg
c3RvcmFnZS4KLSAgICBDRlVSTENhY2hlUmVmIGNhY2hlID0gX0NGVVJMU3RvcmFnZVNlc3Npb25D
b3B5Q2FjaGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgc3RvcmFnZVNlc3Npb24pOwotICAgIENGVVJM
Q2FjaGVTZXREaXNrQ2FwYWNpdHkoY2FjaGUsIDApOwotICAgIENGVVJMQ2FjaGVSZWYgZGVmYXVs
dENhY2hlID0gQ0ZVUkxDYWNoZUNvcHlTaGFyZWRVUkxDYWNoZSgpOwotICAgIENGVVJMQ2FjaGVT
ZXRNZW1vcnlDYXBhY2l0eShjYWNoZSwgQ0ZVUkxDYWNoZU1lbW9yeUNhcGFjaXR5KGRlZmF1bHRD
YWNoZSkpOwotICAgIENGUmVsZWFzZShkZWZhdWx0Q2FjaGUpOwotICAgIENGUmVsZWFzZShjYWNo
ZSk7CisgICAgYXV0byBjYWNoZSA9IGFkb3B0Q0YoX0NGVVJMU3RvcmFnZVNlc3Npb25Db3B5Q2Fj
aGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgc3RvcmFnZVNlc3Npb24pKTsKKyAgICBDRlVSTENhY2hl
U2V0RGlza0NhcGFjaXR5KGNhY2hlLmdldCgpLCAwKTsKKyAgICBhdXRvIGRlZmF1bHRDYWNoZSA9
IGFkb3B0Q0YoQ0ZVUkxDYWNoZUNvcHlTaGFyZWRVUkxDYWNoZSgpKTsKKyAgICBDRlVSTENhY2hl
U2V0TWVtb3J5Q2FwYWNpdHkoY2FjaGUuZ2V0KCksIENGVVJMQ2FjaGVNZW1vcnlDYXBhY2l0eShk
ZWZhdWx0Q2FjaGUuZ2V0KCkpKTsKICAgICAKICAgICBDRkhUVFBDb29raWVTdG9yYWdlQWNjZXB0
UG9saWN5IGNmQ29va2llQWNjZXB0UG9saWN5OwogICAgIGlmIChjb29raWVBY2NlcHRQb2xpY3kp
CkBAIC0xMDMsOSArMTAxLDggQEAgQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZiBjcmVhdGVQcml2YXRl
U3RvcmFnZVNlc3Npb24oQ0ZTdHJpbmdSZWYgaWRlbnRpZmllciwgT3B0aW8KICAgICAgICAgY2ZD
b29raWVBY2NlcHRQb2xpY3kgPSBDRkhUVFBDb29raWVTdG9yYWdlR2V0Q29va2llQWNjZXB0UG9s
aWN5KGRlZmF1bHRDb29raWVTdG9yYWdlKTsKICAgICB9CiAKLSAgICBDRkhUVFBDb29raWVTdG9y
YWdlUmVmIGNvb2tpZVN0b3JhZ2UgPSBfQ0ZVUkxTdG9yYWdlU2Vzc2lvbkNvcHlDb29raWVTdG9y
YWdlKGtDRkFsbG9jYXRvckRlZmF1bHQsIHN0b3JhZ2VTZXNzaW9uKTsKLSAgICBDRkhUVFBDb29r
aWVTdG9yYWdlU2V0Q29va2llQWNjZXB0UG9saWN5KGNvb2tpZVN0b3JhZ2UsIGNmQ29va2llQWNj
ZXB0UG9saWN5KTsKLSAgICBDRlJlbGVhc2UoY29va2llU3RvcmFnZSk7CisgICAgYXV0byBjb29r
aWVTdG9yYWdlID0gYWRvcHRDRihfQ0ZVUkxTdG9yYWdlU2Vzc2lvbkNvcHlDb29raWVTdG9yYWdl
KGtDRkFsbG9jYXRvckRlZmF1bHQsIHN0b3JhZ2VTZXNzaW9uKSk7CisgICAgQ0ZIVFRQQ29va2ll
U3RvcmFnZVNldENvb2tpZUFjY2VwdFBvbGljeShjb29raWVTdG9yYWdlLmdldCgpLCBjZkNvb2tp
ZUFjY2VwdFBvbGljeSk7CiAgICAgCiAgICAgcmV0dXJuIHN0b3JhZ2VTZXNzaW9uOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRs
ZUNGTmV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VI
YW5kbGVDRk5ldC5jcHAKaW5kZXggY2U0ZWRiNDliNzM4NzAzYzFjM2EwYjM4NjVjMDhkNzkyNGE0
NjMzNy4uM2MxN2FkYzQxOGI4MDRjYTRlZjU0YTk5MzVmZWMzNTU3NDIzYmM4MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFu
ZGxlQ0ZOZXQuY3BwCkBAIC0xMjAsMTIgKzEyMCwxMSBAQCBzdGF0aWMgdm9pZCBzZXRDbGllbnRD
ZXJ0aWZpY2F0ZUluU1NMUHJvcGVydGllcyhDRk11dGFibGVEaWN0aW9uYXJ5UmVmIHNzbFByb3Bz
LAogewogICAgIGlmICghc3NsUHJvcHMgfHwgIWNlcnREYXRhKQogICAgICAgICByZXR1cm47Ci0g
ICAgQ0ZNdXRhYmxlRGljdGlvbmFyeVJlZiBjZXJ0RGljdCA9IENGRGljdGlvbmFyeUNyZWF0ZU11
dGFibGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgMCwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJh
Y2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcyk7CisgICAgYXV0byBjZXJ0RGlj
dCA9IGFkb3B0Q0YoQ0ZEaWN0aW9uYXJ5Q3JlYXRlTXV0YWJsZShrQ0ZBbGxvY2F0b3JEZWZhdWx0
LCAwLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZh
bHVlQ2FsbEJhY2tzKSk7CiAgICAgaWYgKCFjZXJ0RGljdCkKICAgICAgICAgcmV0dXJuOwotICAg
IENGRGljdGlvbmFyeVNldFZhbHVlKGNlcnREaWN0LCBfa0NGV2luZG93c1NTTExvY2FsQ2VydCwg
Y2VydERhdGEpOwotICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHNzbFByb3BzLCBfa0NGU3RyZWFt
UHJvcGVydHlXaW5kb3dzU1NMQ2VydEluZm8sIGNlcnREaWN0KTsKLSAgICBDRlJlbGVhc2UoY2Vy
dERpY3QpOworICAgIENGRGljdGlvbmFyeVNldFZhbHVlKGNlcnREaWN0LmdldCgpLCBfa0NGV2lu
ZG93c1NTTExvY2FsQ2VydCwgY2VydERhdGEpOworICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHNz
bFByb3BzLCBfa0NGU3RyZWFtUHJvcGVydHlXaW5kb3dzU1NMQ2VydEluZm8sIGNlcnREaWN0Lmdl
dCgpKTsKIH0KICNlbmRpZgogCkBAIC0yMDUsMTEgKzIwNCwxMSBAQCB2b2lkIFJlc291cmNlSGFu
ZGxlOjpjcmVhdGVDRlVSTENvbm5lY3Rpb24oYm9vbCBzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFn
ZSwgYm9vbAogICAgIGlmIChzc2xQcm9wcykKICAgICAgICAgQ0ZVUkxSZXF1ZXN0U2V0U1NMUHJv
cGVydGllcyhyZXF1ZXN0LmdldCgpLCBzc2xQcm9wcy5nZXQoKSk7CiAKLSAgICBDRk11dGFibGVE
aWN0aW9uYXJ5UmVmIHN0cmVhbVByb3BlcnRpZXMgID0gQ0ZEaWN0aW9uYXJ5Q3JlYXRlTXV0YWJs
ZSgwLCAwLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFy
eVZhbHVlQ2FsbEJhY2tzKTsKKyAgICBhdXRvIHN0cmVhbVByb3BlcnRpZXMgID0gYWRvcHRDRihD
RkRpY3Rpb25hcnlDcmVhdGVNdXRhYmxlKDAsIDAsICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxC
YWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpKTsKIAogICAgIGlmICghc2hv
dWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UpIHsKICAgICAgICAgLy8gQXZvaWQgdXNpbmcgZXhpc3Rp
bmcgY29ubmVjdGlvbnMsIGJlY2F1c2UgdGhleSBtYXkgYmUgYWxyZWFkeSBhdXRoZW50aWNhdGVk
LgotICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShzdHJlYW1Qcm9wZXJ0aWVzLCBDRlNUUigi
X2tDRlVSTENvbm5lY3Rpb25TZXNzaW9uSUQiKSwgQ0ZTVFIoIldlYktpdFByaXZhdGVTZXNzaW9u
IikpOworICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShzdHJlYW1Qcm9wZXJ0aWVzLmdldCgp
LCBDRlNUUigiX2tDRlVSTENvbm5lY3Rpb25TZXNzaW9uSUQiKSwgQ0ZTVFIoIldlYktpdFByaXZh
dGVTZXNzaW9uIikpOwogICAgIH0KIAogICAgIHN0YXRpYyBjb25zdCBDRlN0cmluZ1JlZiBrQ0ZV
UkxDb25uZWN0aW9uU29ja2V0U3RyZWFtUHJvcGVydGllcyA9IENGU1RSKCJrQ0ZVUkxDb25uZWN0
aW9uU29ja2V0U3RyZWFtUHJvcGVydGllcyIpOwpAQCAtMjI4LDggKzIyNyw3IEBAIHZvaWQgUmVz
b3VyY2VIYW5kbGU6OmNyZWF0ZUNGVVJMQ29ubmVjdGlvbihib29sIHNob3VsZFVzZUNyZWRlbnRp
YWxTdG9yYWdlLCBib29sCiAjZW5kaWYKIAogICAgIC8vIEZJWE1FOiBUaGlzIGNvZGUgaXMgZGlm
ZmVyZW50IGZyb20gaU9TIGNvZGUgaW4gUmVzb3VyY2VIYW5kbGVNYWMubW0gaW4gdGhhdCBoZXJl
IHdlIGlnbm9yZSBzdHJlYW0gcHJvcGVydGllcyB0aGF0IHdlcmUgcHJlc2VudCBpbiBjbGllbnQg
cHJvcGVydGllcy4KLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShwcm9wZXJ0aWVzRGljdGlvbmFy
eS5nZXQoKSwga0NGVVJMQ29ubmVjdGlvblNvY2tldFN0cmVhbVByb3BlcnRpZXMsIHN0cmVhbVBy
b3BlcnRpZXMpOwotICAgIENGUmVsZWFzZShzdHJlYW1Qcm9wZXJ0aWVzKTsKKyAgICBDRkRpY3Rp
b25hcnlBZGRWYWx1ZShwcm9wZXJ0aWVzRGljdGlvbmFyeS5nZXQoKSwga0NGVVJMQ29ubmVjdGlv
blNvY2tldFN0cmVhbVByb3BlcnRpZXMsIHN0cmVhbVByb3BlcnRpZXMuZ2V0KCkpOwogCiAgICAg
ZC0+bV9jb25uZWN0aW9uRGVsZWdhdGUgPSBhZG9wdFJlZihuZXcgUmVzb3VyY2VIYW5kbGVDRlVS
TENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZSh0aGlzLCBXVEZNb3ZlKG1lc3Nh
Z2VRdWV1ZSkpKTsKICAgICBkLT5tX2Nvbm5lY3Rpb25EZWxlZ2F0ZS0+c2V0dXBSZXF1ZXN0KHJl
cXVlc3QuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1
ZXVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5k
bGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZS5jcHAKaW5kZXggMjY0
NjYzODhiN2NhNWE2NjU2ZDBlZTI2MWU3NTZlZTIyZmEwNDAzMS4uOGU4YzNhYTdhNmJlNGNlZTM2
YWE4ZTlmM2RhM2U2YTIyYTE1ZWM3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9w
ZXJhdGlvblF1ZXVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nm
L1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWUu
Y3BwCkBAIC0xMzcsOCArMTM3LDcgQEAgQ0ZVUkxSZXF1ZXN0UmVmIFJlc291cmNlSGFuZGxlQ0ZV
UkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6OndpbGxTZW4KICAgICBpZiAo
IW9yaWdpbmFsUmVkaXJlY3RSZXNwb25zZSkgewogICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdS
ZWY+IG5ld1NjaGVtZSA9IGFkb3B0Q0YoQ0ZVUkxDb3B5U2NoZW1lKENGVVJMUmVxdWVzdEdldFVS
TChjZlJlcXVlc3QpKSk7CiAgICAgICAgIGlmIChDRlN0cmluZ0NvbXBhcmUobmV3U2NoZW1lLmdl
dCgpLCBtX29yaWdpbmFsU2NoZW1lLmdldCgpLCBrQ0ZDb21wYXJlQ2FzZUluc2Vuc2l0aXZlKSA9
PSBrQ0ZDb21wYXJlRXF1YWxUbykgewotICAgICAgICAgICAgQ0ZSZXRhaW4oY2ZSZXF1ZXN0KTsK
LSAgICAgICAgICAgIHJldHVybiBjZlJlcXVlc3Q7CisgICAgICAgICAgICByZXR1cm4gY2ZSZXF1
ZXN0LmxlYWtSZWYoKTsKICAgICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3RDRk5ldC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVxdWVzdENGTmV0LmNwcApp
bmRleCBkMmQwOTNjM2MzMjAwNzNiNmE1YWFiZTkzZDBjZmZmYTkxZTk1MmJiLi5mNmUxYjliNWQz
YTViYTdhZTM1YTc3OTIzZDU2ZDUzZWFlMzI3MTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVxdWVzdENGTmV0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVxdWVzdENGTmV0LmNwcApA
QCAtMjgyLDEwICsyODIsOCBAQCB2b2lkIFJlc291cmNlUmVxdWVzdDo6ZG9VcGRhdGVSZXNvdXJj
ZVJlcXVlc3QoKQogICAgICAgICBtX2NhY2hlUG9saWN5ID0gZnJvbVBsYXRmb3JtUmVxdWVzdENh
Y2hlUG9saWN5KENGVVJMUmVxdWVzdEdldENhY2hlUG9saWN5KG1fY2ZSZXF1ZXN0LmdldCgpKSk7
CiAgICAgbV90aW1lb3V0SW50ZXJ2YWwgPSBDRlVSTFJlcXVlc3RHZXRUaW1lb3V0SW50ZXJ2YWwo
bV9jZlJlcXVlc3QuZ2V0KCkpOwogICAgIG1fZmlyc3RQYXJ0eUZvckNvb2tpZXMgPSBDRlVSTFJl
cXVlc3RHZXRNYWluRG9jdW1lbnRVUkwobV9jZlJlcXVlc3QuZ2V0KCkpOwotICAgIGlmIChDRlN0
cmluZ1JlZiBtZXRob2QgPSBDRlVSTFJlcXVlc3RDb3B5SFRUUFJlcXVlc3RNZXRob2QobV9jZlJl
cXVlc3QuZ2V0KCkpKSB7Ci0gICAgICAgIG1faHR0cE1ldGhvZCA9IG1ldGhvZDsKLSAgICAgICAg
Q0ZSZWxlYXNlKG1ldGhvZCk7Ci0gICAgfQorICAgIGlmIChhdXRvIG1ldGhvZCA9IGFkb3B0Q0Yo
Q0ZVUkxSZXF1ZXN0Q29weUhUVFBSZXF1ZXN0TWV0aG9kKG1fY2ZSZXF1ZXN0LmdldCgpKSkpCisg
ICAgICAgIG1faHR0cE1ldGhvZCA9IG1ldGhvZC5nZXQoKTsKICAgICBtX2FsbG93Q29va2llcyA9
IENGVVJMUmVxdWVzdFNob3VsZEhhbmRsZUhUVFBDb29raWVzKG1fY2ZSZXF1ZXN0LmdldCgpKTsK
IAogICAgIGlmIChyZXNvdXJjZVByaW9yaXRpZXNFbmFibGVkKCkpCkBAIC0zMDYsMTQgKzMwNCwx
MyBAQCB2b2lkIFJlc291cmNlUmVxdWVzdDo6ZG9VcGRhdGVSZXNvdXJjZVJlcXVlc3QoKQogI2Vu
ZGlmCiAKICAgICBtX2h0dHBIZWFkZXJGaWVsZHMuY2xlYXIoKTsKLSAgICBpZiAoQ0ZEaWN0aW9u
YXJ5UmVmIGhlYWRlcnMgPSBDRlVSTFJlcXVlc3RDb3B5QWxsSFRUUEhlYWRlckZpZWxkcyhtX2Nm
UmVxdWVzdC5nZXQoKSkpIHsKLSAgICAgICAgQ0ZJbmRleCBoZWFkZXJDb3VudCA9IENGRGljdGlv
bmFyeUdldENvdW50KGhlYWRlcnMpOworICAgIGlmIChhdXRvIGhlYWRlcnMgPSBhZG9wdENGKENG
VVJMUmVxdWVzdENvcHlBbGxIVFRQSGVhZGVyRmllbGRzKG1fY2ZSZXF1ZXN0LmdldCgpKSkpIHsK
KyAgICAgICAgQ0ZJbmRleCBoZWFkZXJDb3VudCA9IENGRGljdGlvbmFyeUdldENvdW50KGhlYWRl
cnMuZ2V0KCkpOwogICAgICAgICBWZWN0b3I8Y29uc3Qgdm9pZCosIDEyOD4ga2V5cyhoZWFkZXJD
b3VudCk7CiAgICAgICAgIFZlY3Rvcjxjb25zdCB2b2lkKiwgMTI4PiB2YWx1ZXMoaGVhZGVyQ291
bnQpOwotICAgICAgICBDRkRpY3Rpb25hcnlHZXRLZXlzQW5kVmFsdWVzKGhlYWRlcnMsIGtleXMu
ZGF0YSgpLCB2YWx1ZXMuZGF0YSgpKTsKKyAgICAgICAgQ0ZEaWN0aW9uYXJ5R2V0S2V5c0FuZFZh
bHVlcyhoZWFkZXJzLmdldCgpLCBrZXlzLmRhdGEoKSwgdmFsdWVzLmRhdGEoKSk7CiAgICAgICAg
IGZvciAoaW50IGkgPSAwOyBpIDwgaGVhZGVyQ291bnQ7ICsraSkKICAgICAgICAgICAgIG1faHR0
cEhlYWRlckZpZWxkcy5zZXQoKENGU3RyaW5nUmVmKWtleXNbaV0sIChDRlN0cmluZ1JlZil2YWx1
ZXNbaV0pOwotICAgICAgICBDRlJlbGVhc2UoaGVhZGVycyk7CiAgICAgfQogCiAgICAgbV9yZXNw
b25zZUNvbnRlbnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tBcnJheS5jbGVhcigpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdJbWFnZUNHV2luLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnSW1hZ2VDR1dpbi5jcHAKaW5kZXggMzRl
ZDllZjhjZjRmODY2Y2EwM2ZkY2E5MzA0YTk2MDk2YmM2NWI5ZS4uYjQ1ZTRkNGEwYTI1ZGZjYzQ3
NmY5YWFiZjc1N2M3MGFlMjJjOTk1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vd2luL0RyYWdJbWFnZUNHV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93
aW4vRHJhZ0ltYWdlQ0dXaW4uY3BwCkBAIC02NywxNSArNjcsMTMgQEAgR0RJT2JqZWN0PEhCSVRN
QVA+IGFsbG9jSW1hZ2UoSERDIGRjLCBJbnRTaXplIHNpemUsIENHQ29udGV4dFJlZiAqdGFyZ2V0
UmVmKQogICAgIHJldHVybiBoYm1wOwogfQogCi1zdGF0aWMgQ0dDb250ZXh0UmVmIGNyZWF0ZUNn
Q29udGV4dEZyb21CaXRtYXAoSEJJVE1BUCBiaXRtYXApCitzdGF0aWMgUmV0YWluUHRyPENHQ29u
dGV4dFJlZj4gY3JlYXRlQ2dDb250ZXh0RnJvbUJpdG1hcChIQklUTUFQIGJpdG1hcCkKIHsKICAg
ICBCSVRNQVAgaW5mbzsKICAgICBHZXRPYmplY3QoYml0bWFwLCBzaXplb2YoaW5mbyksICZpbmZv
KTsKICAgICBBU1NFUlQoaW5mby5ibUJpdHNQaXhlbCA9PSAzMik7CiAKLSAgICBDR0NvbnRleHRS
ZWYgYml0bWFwQ29udGV4dCA9IENHQml0bWFwQ29udGV4dENyZWF0ZShpbmZvLmJtQml0cywgaW5m
by5ibVdpZHRoLCBpbmZvLmJtSGVpZ2h0LCA4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZm8uYm1XaWR0aEJ5dGVzLCBzUkdCQ29sb3JT
cGFjZVJlZigpLCBrQ0dCaXRtYXBCeXRlT3JkZXIzMkxpdHRsZSB8IGtDR0ltYWdlQWxwaGFOb25l
U2tpcEZpcnN0KTsKLSAgICByZXR1cm4gYml0bWFwQ29udGV4dDsKKyAgICByZXR1cm4gYWRvcHRD
RihDR0JpdG1hcENvbnRleHRDcmVhdGUoaW5mby5ibUJpdHMsIGluZm8uYm1XaWR0aCwgaW5mby5i
bUhlaWdodCwgOCwgaW5mby5ibVdpZHRoQnl0ZXMsIHNSR0JDb2xvclNwYWNlUmVmKCksIGtDR0Jp
dG1hcEJ5dGVPcmRlcjMyTGl0dGxlIHwga0NHSW1hZ2VBbHBoYU5vbmVTa2lwRmlyc3QpKTsKIH0K
IAogRHJhZ0ltYWdlUmVmIHNjYWxlRHJhZ0ltYWdlKERyYWdJbWFnZVJlZiBpbWFnZVJlZiwgRmxv
YXRTaXplIHNjYWxlKQpAQCAtMTAxLDE1ICs5OSwxMyBAQCBEcmFnSW1hZ2VSZWYgc2NhbGVEcmFn
SW1hZ2UoRHJhZ0ltYWdlUmVmIGltYWdlUmVmLCBGbG9hdFNpemUgc2NhbGUpCiAgICAgaWYgKCFo
Ym1wKQogICAgICAgICBnb3RvIGV4aXQ7CiAKLSAgICBDR0NvbnRleHRSZWYgc3JjQ29udGV4dCA9
IGNyZWF0ZUNnQ29udGV4dEZyb21CaXRtYXAoaW1hZ2UuZ2V0KCkpOwotICAgIENHSW1hZ2VSZWYg
c3JjSW1hZ2UgPSBDR0JpdG1hcENvbnRleHRDcmVhdGVJbWFnZShzcmNDb250ZXh0KTsKKyAgICBh
dXRvIHNyY0NvbnRleHQgPSBjcmVhdGVDZ0NvbnRleHRGcm9tQml0bWFwKGltYWdlLmdldCgpKTsK
KyAgICBhdXRvIHNyY0ltYWdlID0gYWRvcHRDRihDR0JpdG1hcENvbnRleHRDcmVhdGVJbWFnZShz
cmNDb250ZXh0KSk7CiAgICAgQ0dSZWN0IHJlY3Q7CiAgICAgcmVjdC5vcmlnaW4ueCA9IDA7CiAg
ICAgcmVjdC5vcmlnaW4ueSA9IDA7CiAgICAgcmVjdC5zaXplID0gZHN0U2l6ZTsKLSAgICBDR0Nv
bnRleHREcmF3SW1hZ2UodGFyZ2V0Q29udGV4dCwgcmVjdCwgc3JjSW1hZ2UpOwotICAgIENHSW1h
Z2VSZWxlYXNlKHNyY0ltYWdlKTsKLSAgICBDR0NvbnRleHRSZWxlYXNlKHNyY0NvbnRleHQpOwor
ICAgIENHQ29udGV4dERyYXdJbWFnZSh0YXJnZXRDb250ZXh0LCByZWN0LCBzcmNJbWFnZS5nZXQo
KSk7CiAgICAgQ0dDb250ZXh0UmVsZWFzZSh0YXJnZXRDb250ZXh0KTsKIAogZXhpdDoKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9XZWJDb3JlQnVuZGxlV2luLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9XZWJDb3JlQnVuZGxlV2luLmNwcAppbmRleCAz
YjdjOGUxYTIwYTQ1MWFkN2NiMzg0OGViNjE2MjJlOTdmZDAyNGM3Li45NDkzMmZiYzk2YTUyOTg0
MGYyZTZiYjQ4ZWI2ZDQ0ZTE3Y2U1ZTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS93aW4vV2ViQ29yZUJ1bmRsZVdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vd2luL1dlYkNvcmVCdW5kbGVXaW4uY3BwCkBAIC0zMSwxNiArMzEsMTUgQEAKICNpbmNsdWRl
ICJXZWJDb3JlSW5zdGFuY2VIYW5kbGUuaCIKICNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9DRkJ1
bmRsZS5oPgogI2luY2x1ZGUgPHdpbmRvd3MuaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95
ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotc3RhdGljIENGQnVuZGxlUmVmIGNyZWF0ZVdlYktpdEJ1bmRsZSgpCitzdGF0aWMgUmV0YWlu
UHRyPENGQnVuZGxlUmVmPiBjcmVhdGVXZWJLaXRCdW5kbGUoKQogewotICAgIGlmIChDRkJ1bmRs
ZVJlZiBleGlzdGluZ0J1bmRsZSA9IENGQnVuZGxlR2V0QnVuZGxlV2l0aElkZW50aWZpZXIoQ0ZT
VFIoImNvbS5hcHBsZS5XZWJLaXQiKSkpIHsKLSAgICAgICAgQ0ZSZXRhaW4oZXhpc3RpbmdCdW5k
bGUpOworICAgIGlmIChDRkJ1bmRsZVJlZiBleGlzdGluZ0J1bmRsZSA9IENGQnVuZGxlR2V0QnVu
ZGxlV2l0aElkZW50aWZpZXIoQ0ZTVFIoImNvbS5hcHBsZS5XZWJLaXQiKSkpCiAgICAgICAgIHJl
dHVybiBleGlzdGluZ0J1bmRsZTsKLSAgICB9CiAKICAgICB3Y2hhcl90IGRsbFBhdGhCdWZmZXJb
TUFYX1BBVEhdOwogICAgIERXT1JEIGxlbmd0aCA9IDo6R2V0TW9kdWxlRmlsZU5hbWVXKFdlYkNv
cmU6Omluc3RhbmNlSGFuZGxlKCksIGRsbFBhdGhCdWZmZXIsIFdURl9BUlJBWV9MRU5HVEgoZGxs
UGF0aEJ1ZmZlcikpOwpAQCAtNTIsMTQgKzUxLDE0IEBAIHN0YXRpYyBDRkJ1bmRsZVJlZiBjcmVh
dGVXZWJLaXRCdW5kbGUoKQogICAgIFJldGFpblB0cjxDRlVSTFJlZj4gZGxsRGlyZWN0b3J5VVJM
ID0gYWRvcHRDRihDRlVSTENyZWF0ZUNvcHlEZWxldGluZ0xhc3RQYXRoQ29tcG9uZW50KDAsIGRs
bFVSTC5nZXQoKSkpOwogICAgIFJldGFpblB0cjxDRlVSTFJlZj4gcmVzb3VyY2VzRGlyZWN0b3J5
VVJMID0gYWRvcHRDRihDRlVSTENyZWF0ZUNvcHlBcHBlbmRpbmdQYXRoQ29tcG9uZW50KDAsIGRs
bERpcmVjdG9yeVVSTC5nZXQoKSwgQ0ZTVFIoIldlYktpdC5yZXNvdXJjZXMiKSwgdHJ1ZSkpOwog
Ci0gICAgcmV0dXJuIENGQnVuZGxlQ3JlYXRlKDAsIHJlc291cmNlc0RpcmVjdG9yeVVSTC5nZXQo
KSk7CisgICAgcmV0dXJuIGFkb3B0Q0YoQ0ZCdW5kbGVDcmVhdGUoMCwgcmVzb3VyY2VzRGlyZWN0
b3J5VVJMLmdldCgpKSk7CiB9CiAKIENGQnVuZGxlUmVmIHdlYktpdEJ1bmRsZSgpCiB7Ci0gICAg
c3RhdGljIENGQnVuZGxlUmVmIGJ1bmRsZSA9IGNyZWF0ZVdlYktpdEJ1bmRsZSgpOwotICAgIEFT
U0VSVChidW5kbGUpOwotICAgIHJldHVybiBidW5kbGU7CisgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPFJldGFpblB0cjxDRkJ1bmRsZVJlZj4+IGJ1bmRsZSA9IGNyZWF0ZVdlYktpdEJ1bmRsZSgp
OworICAgIEFTU0VSVChidW5kbGUuZ2V0KCkpOworICAgIHJldHVybiBidW5kbGUuZ2V0KCkuZ2V0
KCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUaGVtZU1hYy5tbQppbmRleCBhM2I3NDA2ZGE0OTEyNzFiMDE2ODkyMmI2NjJmZTIy
YmFiMzc5YTI5Li40NjNlYmEwNmNkMjk5MWZhZmYxN2EzNGMxZWQwOTdiMWQ3MWUxYmY4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCkBAIC0xNTMsMTAgKzE1
Myw5IEBAIC0gKENGRGljdGlvbmFyeVJlZilfYWRqdXN0ZWRDb3JlVUlEcmF3T3B0aW9uc0ZvckRy
YXdpbmdCb3JkZXJzT25seTooQ0ZEaWN0aW9uYXJ5CiAKICAgICAvLyBGSVhNRTogVGhpcyBpcyBh
IHdvcmthcm91bmQgZm9yIDxyZGFyOi8vcHJvYmxlbS8xMTM4NTQ2MT4uIFdoZW4gdGhhdCBidWcg
aXMgcmVzb2x2ZWQsIHdlIHNob3VsZCByZW1vdmUgdGhpcyBjb2RlLAogICAgIC8vIGFzIHdlbGwg
YXMgdGhlIGludGVybmFsIG1ldGhvZCBvdmVycmlkZXMgYmVsb3cuCi0gICAgQ0ZNdXRhYmxlRGlj
dGlvbmFyeVJlZiBjb3JlVUlEcmF3T3B0aW9ucyA9IENGRGljdGlvbmFyeUNyZWF0ZU11dGFibGVD
b3B5KE5VTEwsIDAsIGRlZmF1bHRPcHRpb25zKTsKLSAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShj
b3JlVUlEcmF3T3B0aW9ucywgQ0ZTVFIoImJvcmRlcnMgb25seSIpLCBrQ0ZCb29sZWFuVHJ1ZSk7
Ci0gICAgQ0ZBdXRvcmVsZWFzZShjb3JlVUlEcmF3T3B0aW9ucyk7Ci0gICAgcmV0dXJuIGNvcmVV
SURyYXdPcHRpb25zOworICAgIGF1dG8gY29yZVVJRHJhd09wdGlvbnMgPSBhZG9wdENGKENGRGlj
dGlvbmFyeUNyZWF0ZU11dGFibGVDb3B5KE5VTEwsIDAsIGRlZmF1bHRPcHRpb25zKSk7CisgICAg
Q0ZEaWN0aW9uYXJ5U2V0VmFsdWUoY29yZVVJRHJhd09wdGlvbnMuZ2V0KCksIENGU1RSKCJib3Jk
ZXJzIG9ubHkiKSwga0NGQm9vbGVhblRydWUpOworICAgIHJldHVybiBjb3JlVUlEcmF3T3B0aW9u
cy5hdXRvcmVsZWFzZSgpOwogfQogCiAtIChDRkRpY3Rpb25hcnlSZWYpX2NvcmVVSURyYXdPcHRp
b25zV2l0aEZyYW1lOihOU1JlY3QpY2VsbEZyYW1lIGluVmlldzooTlNWaWV3ICopY29udHJvbFZp
ZXcgaW5jbHVkZUZvY3VzOihCT09MKWluY2x1ZGVGb2N1cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9jb2NvYS9XZWJBcmNoaXZlRHVtcFN1cHBvcnQuaCBiL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvY29jb2EvV2ViQXJjaGl2ZUR1bXBTdXBwb3J0LmgKaW5kZXggMmQwM2VmM2Yy
OTg2ZDhiMjcxYWI3MzcwODMzOTYxZWE3NDZhODE5ZS4uMjA5YTcxMTg1N2ViZDc3NjZhMTk5MTg2
MjkwYjY0MWMwN2MxNWEyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9jb2Nv
YS9XZWJBcmNoaXZlRHVtcFN1cHBvcnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL2Nv
Y29hL1dlYkFyY2hpdmVEdW1wU3VwcG9ydC5oCkBAIC0yNiw5ICsyNiwxMCBAQAogI3ByYWdtYSBv
bmNlCiAKICNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9Db3JlRm91bmRhdGlvbi5oPgorI2luY2x1
ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmVUZXN0U3VwcG9ydCB7CiAK
LUNGU3RyaW5nUmVmIGNyZWF0ZVhNTFN0cmluZ0Zyb21XZWJBcmNoaXZlRGF0YShDRkRhdGFSZWYg
d2ViQXJjaGl2ZURhdGEpIFdURl9FWFBPUlRfUFJJVkFURTsKK1JldGFpblB0cjxDRlN0cmluZ1Jl
Zj4gY3JlYXRlWE1MU3RyaW5nRnJvbVdlYkFyY2hpdmVEYXRhKENGRGF0YVJlZiB3ZWJBcmNoaXZl
RGF0YSkgV1RGX0VYUE9SVF9QUklWQVRFOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlVGVzdFN1
cHBvcnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvY29jb2EvV2ViQXJjaGl2
ZUR1bXBTdXBwb3J0Lm1tIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9jb2NvYS9XZWJBcmNoaXZl
RHVtcFN1cHBvcnQubW0KaW5kZXggNWU3ZDhlMTZhOThmYjcwMWY0N2M1ZTQ5N2ZiYTkxMjNkZWI3
OWRjMS4uYmU2NjA3OGE4M2QwY2E0OWI3MWExZmI1M2MyM2E4YzZiODFkNzY3ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9jb2NvYS9XZWJBcmNoaXZlRHVtcFN1cHBvcnQubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9jb2NvYS9XZWJBcmNoaXZlRHVtcFN1cHBvcnQu
bW0KQEAgLTIwMCw3ICsyMDAsNyBAQCBzdGF0aWMgQ0ZDb21wYXJpc29uUmVzdWx0IGNvbXBhcmVS
ZXNvdXJjZVVSTHMoY29uc3Qgdm9pZCAqdmFsMSwgY29uc3Qgdm9pZCAqdmFsMgogICAgIHJldHVy
biBDRlN0cmluZ0NvbXBhcmUodXJsMSwgdXJsMiwga0NGQ29tcGFyZUFuY2hvcmVkKTsKIH0KIAot
Q0ZTdHJpbmdSZWYgY3JlYXRlWE1MU3RyaW5nRnJvbVdlYkFyY2hpdmVEYXRhKENGRGF0YVJlZiB3
ZWJBcmNoaXZlRGF0YSkKK1JldGFpblB0cjxDRlN0cmluZ1JlZj4gY3JlYXRlWE1MU3RyaW5nRnJv
bVdlYkFyY2hpdmVEYXRhKENGRGF0YVJlZiB3ZWJBcmNoaXZlRGF0YSkKIHsKICAgICBDRkVycm9y
UmVmIGVycm9yID0gMDsKICAgICBDRlByb3BlcnR5TGlzdEZvcm1hdCBmb3JtYXQgPSBrQ0ZQcm9w
ZXJ0eUxpc3RCaW5hcnlGb3JtYXRfdjFfMDsKQEAgLTIwOCw4ICsyMDgsOCBAQCBDRlN0cmluZ1Jl
ZiBjcmVhdGVYTUxTdHJpbmdGcm9tV2ViQXJjaGl2ZURhdGEoQ0ZEYXRhUmVmIHdlYkFyY2hpdmVE
YXRhKQogCiAgICAgaWYgKCFwcm9wZXJ0eUxpc3QpIHsKICAgICAgICAgaWYgKGVycm9yKQotICAg
ICAgICAgICAgcmV0dXJuIENGRXJyb3JDb3B5RGVzY3JpcHRpb24oZXJyb3IpOwotICAgICAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8Q0ZTdHJpbmdSZWY+KENGUmV0YWluKENGU1RSKCJBbiB1bmtub3du
IGVycm9yIG9jY3VycmVkIGNvbnZlcnRpbmcgZGF0YSB0byBwcm9wZXJ0eSBsaXN0LiIpKSk7Cisg
ICAgICAgICAgICByZXR1cm4gYWRvcHRDRihDRkVycm9yQ29weURlc2NyaXB0aW9uKGVycm9yKSk7
CisgICAgICAgIHJldHVybiBDRlNUUigiQW4gdW5rbm93biBlcnJvciBvY2N1cnJlZCBjb252ZXJ0
aW5nIGRhdGEgdG8gcHJvcGVydHkgbGlzdC4iKTsKICAgICB9CiAKICAgICBSZXRhaW5QdHI8Q0ZN
dXRhYmxlQXJyYXlSZWY+IHJlc291cmNlcyA9IGFkb3B0Q0YoQ0ZBcnJheUNyZWF0ZU11dGFibGUo
a0NGQWxsb2NhdG9yRGVmYXVsdCwgMCwgJmtDRlR5cGVBcnJheUNhbGxCYWNrcykpOwpAQCAtMjUw
LDggKzI1MCw4IEBAIENGU3RyaW5nUmVmIGNyZWF0ZVhNTFN0cmluZ0Zyb21XZWJBcmNoaXZlRGF0
YShDRkRhdGFSZWYgd2ViQXJjaGl2ZURhdGEpCiAKICAgICBpZiAoIXhtbERhdGEpIHsKICAgICAg
ICAgaWYgKGVycm9yKQotICAgICAgICAgICAgcmV0dXJuIENGRXJyb3JDb3B5RGVzY3JpcHRpb24o
ZXJyb3IpOwotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q0ZTdHJpbmdSZWY+KENGUmV0YWlu
KENGU1RSKCJBbiB1bmtub3duIGVycm9yIG9jY3VycmVkIGNvbnZlcnRpbmcgcHJvcGVydHkgbGlz
dCB0byBkYXRhLiIpKSk7CisgICAgICAgICAgICByZXR1cm4gYWRvcHRDRihDRkVycm9yQ29weURl
c2NyaXB0aW9uKGVycm9yKSk7CisgICAgICAgIHJldHVybiBDRlNUUigiQW4gdW5rbm93biBlcnJv
ciBvY2N1cnJlZCBjb252ZXJ0aW5nIHByb3BlcnR5IGxpc3QgdG8gZGF0YS4iKTsKICAgICB9CiAK
ICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHhtbFN0cmluZyA9IGFkb3B0Q0YoQ0ZTdHJpbmdD
cmVhdGVGcm9tRXh0ZXJuYWxSZXByZXNlbnRhdGlvbihrQ0ZBbGxvY2F0b3JEZWZhdWx0LCB4bWxE
YXRhLmdldCgpLCBrQ0ZTdHJpbmdFbmNvZGluZ1VURjgpKTsKQEAgLTI2Niw3ICsyNjYsNyBAQCBD
RlN0cmluZ1JlZiBjcmVhdGVYTUxTdHJpbmdGcm9tV2ViQXJjaGl2ZURhdGEoQ0ZEYXRhUmVmIHdl
YkFyY2hpdmVEYXRhKQogICAgIHF1aWNrTG9va1VSTFJlcGxhY2VtZW50cygpLmNsZWFyKCk7CiAj
ZW5kaWYKIAotICAgIHJldHVybiBzdHJpbmcubGVha1JlZigpOworICAgIHJldHVybiBzdHJpbmc7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmVUZXN0U3VwcG9ydApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9jb2NvYS9XZWJWaWV3VmlzdWFsSWRlbnRpZmljYXRpb25PdmVy
bGF5Lm1tIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9jb2NvYS9XZWJWaWV3VmlzdWFsSWRlbnRp
ZmljYXRpb25PdmVybGF5Lm1tCmluZGV4IDFmN2E2MmFhM2ZjZjQ3Y2MyMzEwOWIzZmJiMzkzZWFi
YjgzMzNmNDIuLjlkYTg4MzBiYTJiOGUwN2M1ZjY3ZjBlMzQ2ZGJiZTkxYjljZWUzN2UgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvY29jb2EvV2ViVmlld1Zpc3VhbElkZW50aWZp
Y2F0aW9uT3ZlcmxheS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL2NvY29hL1dlYlZp
ZXdWaXN1YWxJZGVudGlmaWNhdGlvbk92ZXJsYXkubW0KQEAgLTEyNCw3ICsxMjQsNyBAQCAtICh2
b2lkKW9ic2VydmVWYWx1ZUZvcktleVBhdGg6KE5TU3RyaW5nICopa2V5UGF0aCBvZk9iamVjdDoo
aWQpb2JqZWN0IGNoYW5nZTooTgogc3RhdGljIENURm9udFJlZiBpZGVudGlmaWNhdGlvbkZvbnQo
KQogewogICAgIGF1dG8gbWF0cml4ID0gQ0dBZmZpbmVUcmFuc2Zvcm1JZGVudGl0eTsKLSAgICBy
ZXR1cm4gKENURm9udFJlZilDRkF1dG9yZWxlYXNlKENURm9udENyZWF0ZVdpdGhOYW1lKENGU1RS
KCJIZWx2ZXRpY2EiKSwgMjAsICZtYXRyaXgpKTsKKyAgICByZXR1cm4gYWRvcHRDRihDVEZvbnRD
cmVhdGVXaXRoTmFtZShDRlNUUigiSGVsdmV0aWNhIiksIDIwLCAmbWF0cml4KSkuYXV0b3JlbGVh
c2UoKTsKIH0KIAogY29uc3RleHByIENHRmxvYXQgaG9yaXpvbnRhbE1hcmdpbiA9IDE1OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9tYWMvU3RyaW5nVXRpbGl0aWVzLm1tIGIv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9tYWMvU3RyaW5nVXRpbGl0aWVzLm1tCmluZGV4IDY4NGZk
ODg3OTc2NTNmNDhjYjM2YzQ1ZGIyMDgxN2Y0YzJhZTg0M2IuLjZlMmVlNmUzYjMwYjZmZDRjZjkw
NDJiNDliZGJlNWRmNzJjMTA3MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
bWFjL1N0cmluZ1V0aWxpdGllcy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL21hYy9T
dHJpbmdVdGlsaXRpZXMubW0KQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAK
IE5TU3RyaW5nICpuc1N0cmluZ0Zyb21XZWJDb3JlU3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyaW5n
KQogewotICAgIHJldHVybiBzdHJpbmcuaXNFbXB0eSgpID8gQCIiIDogQ0ZCcmlkZ2luZ1JlbGVh
c2UoV0tTdHJpbmdDb3B5Q0ZTdHJpbmcoMCwgdG9BUEkoc3RyaW5nLmltcGwoKSkpKTsKKyAgICBy
ZXR1cm4gc3RyaW5nLmlzRW1wdHkoKSA/IEAiIiA6IGFkb3B0Q0YoV0tTdHJpbmdDb3B5Q0ZTdHJp
bmcoMCwgdG9BUEkoc3RyaW5nLmltcGwoKSkpKS5icmlkZ2luZ0F1dG9yZWxlYXNlKCk7CiB9CiAK
ICNpZiBFTkFCTEUoVEVMRVBIT05FX05VTUJFUl9ERVRFQ1RJT04pICYmIFBMQVRGT1JNKE1BQykK
QEAgLTY1LDExICs2NSwxMSBAQCBOU1N0cmluZyAqZm9ybWF0dGVkUGhvbmVOdW1iZXJTdHJpbmco
TlNTdHJpbmcgKm9yaWdpbmFsUGhvbmVOdW1iZXIpCiAgICAgaWYgKCFwaG9uZU51bWJlcikKICAg
ICAgICAgcmV0dXJuIG9yaWdpbmFsUGhvbmVOdW1iZXI7CiAKLSAgICBDRlN0cmluZ1JlZiBwaG9u
ZU51bWJlclN0cmluZyA9IENGUGhvbmVOdW1iZXJDb3B5Rm9ybWF0dGVkUmVwcmVzZW50YXRpb24o
cGhvbmVOdW1iZXIuZ2V0KCkpOworICAgIGF1dG8gcGhvbmVOdW1iZXJTdHJpbmcgPSBhZG9wdENG
KENGUGhvbmVOdW1iZXJDb3B5Rm9ybWF0dGVkUmVwcmVzZW50YXRpb24ocGhvbmVOdW1iZXIuZ2V0
KCkpKTsKICAgICBpZiAoIXBob25lTnVtYmVyU3RyaW5nKQotICAgICAgICBwaG9uZU51bWJlclN0
cmluZyA9IENGUGhvbmVOdW1iZXJDb3B5VW5mb3JtYXR0ZWRSZXByZXNlbnRhdGlvbihwaG9uZU51
bWJlci5nZXQoKSk7CisgICAgICAgIHBob25lTnVtYmVyU3RyaW5nID0gYWRvcHRDRihDRlBob25l
TnVtYmVyQ29weVVuZm9ybWF0dGVkUmVwcmVzZW50YXRpb24ocGhvbmVOdW1iZXIuZ2V0KCkpKTsK
IAotICAgIHJldHVybiBDRkJyaWRnaW5nUmVsZWFzZShwaG9uZU51bWJlclN0cmluZyk7CisgICAg
cmV0dXJuIHBob25lTnVtYmVyU3RyaW5nLmJyaWRnaW5nQXV0b3JlbGVhc2UoKTsKIH0KIAogI2Vs
c2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9tYWMvUGx1Z2luUHJv
Y2Vzc01hYy5tbSBiL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9tYWMvUGx1Z2luUHJvY2Vz
c01hYy5tbQppbmRleCAzMWU5Y2Y5MmYwMmVlMGNjZjEwN2FmZmU1NmMwNTM0OGZiYzVjNGYwLi5j
ZmE2NmE0ZTJmMjYxMzdiM2M5ZjcyNTdmNjU5M2Y0OGYxNDFhNDk3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvbWFjL1BsdWdpblByb2Nlc3NNYWMubW0KKysrIGIvU291
cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL21hYy9QbHVnaW5Qcm9jZXNzTWFjLm1tCkBAIC0zMTEs
MjAgKzMxMSwyMCBAQCBzdGF0aWMgdm9pZCBpbml0aWFsaXplQ29jb2FPdmVycmlkZXMoKQogCiAg
ICAgTlNOb3RpZmljYXRpb25DZW50ZXIgKmRlZmF1bHRDZW50ZXIgPSBbTlNOb3RpZmljYXRpb25D
ZW50ZXIgZGVmYXVsdENlbnRlcl07CiAKKyAgICAvLyBXZSBsZWFrIHRoZSB0d28gb2JzZXJ2ZXJz
IHNvIHRoYXQgdGhleSBvYnNlcnZlIG5vdGlmaWNhdGlvbnMgZm9yIHRoZSBsaWZldGltZSBvZiB0
aGUgcHJvY2Vzcy4KICAgICAvLyBUcmFjayB3aGVuIGFueSBDb2NvYSB3aW5kb3cgaXMgYWJvdXQg
dG8gYmUgYmUgc2hvd24uCi0gICAgaWQgb3JkZXJPblNjcmVlbk9ic2VydmVyID0gW2RlZmF1bHRD
ZW50ZXIgYWRkT2JzZXJ2ZXJGb3JOYW1lOk5TV2luZG93V2lsbE9yZGVyT25TY3JlZW5Ob3RpZmlj
YXRpb24KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBvYmplY3Q6bmlsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHF1ZXVlOm5pbAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2luZ0Jsb2NrOl4oTlNOb3RpZmlj
YXRpb24gKm5vdGlmaWNhdGlvbikgeyBmdWxsc2NyZWVuV2luZG93VHJhY2tlcigpLndpbmRvd1No
b3duKFtub3RpZmljYXRpb24gb2JqZWN0XSk7IH1dOworICAgIGlkIG9yZGVyT25TY3JlZW5PYnNl
cnZlciA9IHJldGFpblB0cihbZGVmYXVsdENlbnRlciBhZGRPYnNlcnZlckZvck5hbWU6TlNXaW5k
b3dXaWxsT3JkZXJPblNjcmVlbk5vdGlmaWNhdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYmplY3Q6bmlsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBxdWV1ZTpuaWwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2luZ0Jsb2NrOl4oTlNOb3RpZmljYXRpb24g
Km5vdGlmaWNhdGlvbikgeyBmdWxsc2NyZWVuV2luZG93VHJhY2tlcigpLndpbmRvd1Nob3duKFtu
b3RpZmljYXRpb24gb2JqZWN0XSk7IH1dKS5sZWFrUmVmKCk7CisgICAgVU5VU0VEX1BBUkFNKG9y
ZGVyT25TY3JlZW5PYnNlcnZlcik7CiAgICAgLy8gVHJhY2sgd2hlbiBhbnkgQ29jb2Egd2luZG93
IGlzIGFib3V0IHRvIGJlIGhpZGRlbi4KLSAgICBpZCBvcmRlck9mZlNjcmVlbk9ic2VydmVyID0g
W2RlZmF1bHRDZW50ZXIgYWRkT2JzZXJ2ZXJGb3JOYW1lOk5TV2luZG93V2lsbE9yZGVyT2ZmU2Ny
ZWVuTm90aWZpY2F0aW9uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG9iamVjdDpuaWwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1ZXVlOm5pbAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzaW5nQmxvY2s6XihO
U05vdGlmaWNhdGlvbiAqbm90aWZpY2F0aW9uKSB7IGZ1bGxzY3JlZW5XaW5kb3dUcmFja2VyKCku
d2luZG93SGlkZGVuKFtub3RpZmljYXRpb24gb2JqZWN0XSk7IH1dOwotCi0gICAgLy8gTGVhayB0
aGUgdHdvIG9ic2VydmVycyBzbyB0aGF0IHRoZXkgb2JzZXJ2ZSBub3RpZmljYXRpb25zIGZvciB0
aGUgbGlmZXRpbWUgb2YgdGhlIHByb2Nlc3MuCi0gICAgQ0ZSZXRhaW4oKF9fYnJpZGdlIENGVHlw
ZVJlZilvcmRlck9uU2NyZWVuT2JzZXJ2ZXIpOwotICAgIENGUmV0YWluKChfX2JyaWRnZSBDRlR5
cGVSZWYpb3JkZXJPZmZTY3JlZW5PYnNlcnZlcik7CisgICAgaWQgb3JkZXJPZmZTY3JlZW5PYnNl
cnZlciA9IHJldGFpblB0cihbZGVmYXVsdENlbnRlciBhZGRPYnNlcnZlckZvck5hbWU6TlNXaW5k
b3dXaWxsT3JkZXJPZmZTY3JlZW5Ob3RpZmljYXRpb24KKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9iamVjdDpuaWwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBxdWV1ZTpuaWwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNpbmdCbG9jazpeKE5TTm90aWZpY2F0
aW9uICpub3RpZmljYXRpb24pIHsgZnVsbHNjcmVlbldpbmRvd1RyYWNrZXIoKS53aW5kb3dIaWRk
ZW4oW25vdGlmaWNhdGlvbiBvYmplY3RdKTsgfV0pLmxlYWtSZWYoKTsKKyAgICBVTlVTRURfUEFS
QU0ob3JkZXJPZmZTY3JlZW5PYnNlcnZlcik7CisKIH0KIAogdm9pZCBQbHVnaW5Qcm9jZXNzOjpz
ZXRNb2RhbFdpbmRvd0lzU2hvd2luZyhib29sIG1vZGFsV2luZG93SXNTaG93aW5nKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL1Bhc3RlYm9hcmRUeXBlcy5tbSBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL21hYy9QYXN0ZWJvYXJkVHlwZXMubW0KaW5kZXggNTNmOThjMTM3NGY5
NGQ1N2IyNmU0NmE2ZGIyNmI4YWQyNGU3OTc1ZS4uZWQ0YzdiOWI4ODE5NmYyYTlhYTBjYTYyMzg0
ODEwNGM4OTg4MzEzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL1Bhc3Rl
Ym9hcmRUeXBlcy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvUGFzdGVib2FyZFR5
cGVzLm1tCkBAIC0zNyw0NiArMzcsNDAgQEAgTlNTdHJpbmcgKiBjb25zdCBQYXN0ZWJvYXJkVHlw
ZXM6OldlYlVSTHNXaXRoVGl0bGVzUGJvYXJkVHlwZSA9IEAiV2ViVVJMc1dpdGhUaXQKIE5TU3Ry
aW5nICogY29uc3QgUGFzdGVib2FyZFR5cGVzOjpXZWJVUkxQYm9hcmRUeXBlID0gQCJwdWJsaWMu
dXJsIjsKIE5TU3RyaW5nICogY29uc3QgUGFzdGVib2FyZFR5cGVzOjpXZWJVUkxOYW1lUGJvYXJk
VHlwZSA9IEAicHVibGljLnVybC1uYW1lIjsKIE5TU3RyaW5nICogY29uc3QgUGFzdGVib2FyZFR5
cGVzOjpXZWJEdW1teVBib2FyZFR5cGUgPSBAIkFwcGxlIFdlYktpdCBkdW1teSBwYXN0ZWJvYXJk
IHR5cGUiOwotCi1zdGF0aWMgaW5saW5lIE5TQXJyYXkgKnJldGFpbihOU0FycmF5ICphcnJheSkK
LXsKLSAgICBDRlJldGFpbihhcnJheSk7Ci0gICAgcmV0dXJuIGFycmF5OwotfQogICAgIAogTlNB
cnJheSogUGFzdGVib2FyZFR5cGVzOjpmb3JFZGl0aW5nKCkKIHsKIEFMTE9XX0RFUFJFQ0FURURf
REVDTEFSQVRJT05TX0JFR0lOIAotICAgIHN0YXRpYyBOU0FycmF5ICp0eXBlcyA9IHJldGFpbihA
W1dlYkFyY2hpdmVQYm9hcmRUeXBlLCAoX19icmlkZ2UgTlNTdHJpbmcgKilrVVRUeXBlV2ViQXJj
aGl2ZSwgV2ViQ29yZTo6bGVnYWN5SFRNTFBhc3RlYm9hcmRUeXBlKCksIFdlYkNvcmU6OmxlZ2Fj
eUZpbGVuYW1lc1Bhc3RlYm9hcmRUeXBlKCksIFdlYkNvcmU6OmxlZ2FjeVRJRkZQYXN0ZWJvYXJk
VHlwZSgpLCBXZWJDb3JlOjpsZWdhY3lQREZQYXN0ZWJvYXJkVHlwZSgpLAotICAgICAgICBXZWJD
b3JlOjpsZWdhY3lVUkxQYXN0ZWJvYXJkVHlwZSgpLCBXZWJDb3JlOjpsZWdhY3lSVEZEUGFzdGVi
b2FyZFR5cGUoKSwgV2ViQ29yZTo6bGVnYWN5UlRGUGFzdGVib2FyZFR5cGUoKSwgV2ViQ29yZTo6
bGVnYWN5U3RyaW5nUGFzdGVib2FyZFR5cGUoKSwgV2ViQ29yZTo6bGVnYWN5Q29sb3JQYXN0ZWJv
YXJkVHlwZSgpLCAoX19icmlkZ2UgTlNTdHJpbmcgKilrVVRUeXBlUE5HXSk7CisgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxOU0FycmF5Pj4gdHlwZXMgPSBAW1dlYkFyY2hpdmVQ
Ym9hcmRUeXBlLCAoX19icmlkZ2UgTlNTdHJpbmcgKilrVVRUeXBlV2ViQXJjaGl2ZSwgV2ViQ29y
ZTo6bGVnYWN5SFRNTFBhc3RlYm9hcmRUeXBlKCksIFdlYkNvcmU6OmxlZ2FjeUZpbGVuYW1lc1Bh
c3RlYm9hcmRUeXBlKCksIFdlYkNvcmU6OmxlZ2FjeVRJRkZQYXN0ZWJvYXJkVHlwZSgpLCBXZWJD
b3JlOjpsZWdhY3lQREZQYXN0ZWJvYXJkVHlwZSgpLAorICAgICAgICBXZWJDb3JlOjpsZWdhY3lV
UkxQYXN0ZWJvYXJkVHlwZSgpLCBXZWJDb3JlOjpsZWdhY3lSVEZEUGFzdGVib2FyZFR5cGUoKSwg
V2ViQ29yZTo6bGVnYWN5UlRGUGFzdGVib2FyZFR5cGUoKSwgV2ViQ29yZTo6bGVnYWN5U3RyaW5n
UGFzdGVib2FyZFR5cGUoKSwgV2ViQ29yZTo6bGVnYWN5Q29sb3JQYXN0ZWJvYXJkVHlwZSgpLCAo
X19icmlkZ2UgTlNTdHJpbmcgKilrVVRUeXBlUE5HXTsKIEFMTE9XX0RFUFJFQ0FURURfREVDTEFS
QVRJT05TX0VORAotICAgIHJldHVybiB0eXBlczsKKyAgICByZXR1cm4gdHlwZXMuZ2V0KCkuZ2V0
KCk7CiB9CiAKIE5TQXJyYXkqIFBhc3RlYm9hcmRUeXBlczo6Zm9yVVJMKCkKIHsKLSAgICBzdGF0
aWMgTlNBcnJheSAqdHlwZXMgPSByZXRhaW4oQFtXZWJVUkxzV2l0aFRpdGxlc1Bib2FyZFR5cGUs
IFdlYkNvcmU6OmxlZ2FjeVVSTFBhc3RlYm9hcmRUeXBlKCksIFdlYlVSTFBib2FyZFR5cGUsICBX
ZWJVUkxOYW1lUGJvYXJkVHlwZSwgV2ViQ29yZTo6bGVnYWN5U3RyaW5nUGFzdGVib2FyZFR5cGUo
KSwgV2ViQ29yZTo6bGVnYWN5RmlsZW5hbWVzUGFzdGVib2FyZFR5cGUoKSwgV2ViQ29yZTo6bGVn
YWN5RmlsZXNQcm9taXNlUGFzdGVib2FyZFR5cGUoKV0pOwotICAgIHJldHVybiB0eXBlczsKKyAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPE5TQXJyYXk+PiB0eXBlcyA9IEBbV2Vi
VVJMc1dpdGhUaXRsZXNQYm9hcmRUeXBlLCBXZWJDb3JlOjpsZWdhY3lVUkxQYXN0ZWJvYXJkVHlw
ZSgpLCBXZWJVUkxQYm9hcmRUeXBlLCAgV2ViVVJMTmFtZVBib2FyZFR5cGUsIFdlYkNvcmU6Omxl
Z2FjeVN0cmluZ1Bhc3RlYm9hcmRUeXBlKCksIFdlYkNvcmU6OmxlZ2FjeUZpbGVuYW1lc1Bhc3Rl
Ym9hcmRUeXBlKCksIFdlYkNvcmU6OmxlZ2FjeUZpbGVzUHJvbWlzZVBhc3RlYm9hcmRUeXBlKCld
OworICAgIHJldHVybiB0eXBlcy5nZXQoKS5nZXQoKTsKIH0KIAogTlNBcnJheSogUGFzdGVib2Fy
ZFR5cGVzOjpmb3JJbWFnZXMoKQogewotICAgIHN0YXRpYyBOU0FycmF5ICp0eXBlcyA9IHJldGFp
bihAW1dlYkNvcmU6OmxlZ2FjeVRJRkZQYXN0ZWJvYXJkVHlwZSgpLCBXZWJVUkxzV2l0aFRpdGxl
c1Bib2FyZFR5cGUsIFdlYkNvcmU6OmxlZ2FjeVVSTFBhc3RlYm9hcmRUeXBlKCksIFdlYlVSTFBi
b2FyZFR5cGUsIFdlYlVSTE5hbWVQYm9hcmRUeXBlLCBXZWJDb3JlOjpsZWdhY3lTdHJpbmdQYXN0
ZWJvYXJkVHlwZSgpXSk7Ci0gICAgcmV0dXJuIHR5cGVzOworICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxSZXRhaW5QdHI8TlNBcnJheT4+IHR5cGVzID0gQFtXZWJDb3JlOjpsZWdhY3lUSUZGUGFz
dGVib2FyZFR5cGUoKSwgV2ViVVJMc1dpdGhUaXRsZXNQYm9hcmRUeXBlLCBXZWJDb3JlOjpsZWdh
Y3lVUkxQYXN0ZWJvYXJkVHlwZSgpLCBXZWJVUkxQYm9hcmRUeXBlLCBXZWJVUkxOYW1lUGJvYXJk
VHlwZSwgV2ViQ29yZTo6bGVnYWN5U3RyaW5nUGFzdGVib2FyZFR5cGUoKV07CisgICAgcmV0dXJu
IHR5cGVzLmdldCgpLmdldCgpOwogfQogCiBOU0FycmF5KiBQYXN0ZWJvYXJkVHlwZXM6OmZvcklt
YWdlc1dpdGhBcmNoaXZlKCkKIHsKLSAgICBzdGF0aWMgTlNBcnJheSAqdHlwZXMgPSByZXRhaW4o
QFtXZWJDb3JlOjpsZWdhY3lUSUZGUGFzdGVib2FyZFR5cGUoKSwgV2ViVVJMc1dpdGhUaXRsZXNQ
Ym9hcmRUeXBlLCBXZWJDb3JlOjpsZWdhY3lVUkxQYXN0ZWJvYXJkVHlwZSgpLCBXZWJVUkxQYm9h
cmRUeXBlLCBXZWJVUkxOYW1lUGJvYXJkVHlwZSwgV2ViQ29yZTo6bGVnYWN5U3RyaW5nUGFzdGVi
b2FyZFR5cGUoKSwgV2ViQ29yZTo6bGVnYWN5UlRGRFBhc3RlYm9hcmRUeXBlKCksIFdlYkFyY2hp
dmVQYm9hcmRUeXBlXSk7Ci0gICAgcmV0dXJuIHR5cGVzOworICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxSZXRhaW5QdHI8TlNBcnJheT4+IHR5cGVzID0gQFtXZWJDb3JlOjpsZWdhY3lUSUZGUGFz
dGVib2FyZFR5cGUoKSwgV2ViVVJMc1dpdGhUaXRsZXNQYm9hcmRUeXBlLCBXZWJDb3JlOjpsZWdh
Y3lVUkxQYXN0ZWJvYXJkVHlwZSgpLCBXZWJVUkxQYm9hcmRUeXBlLCBXZWJVUkxOYW1lUGJvYXJk
VHlwZSwgV2ViQ29yZTo6bGVnYWN5U3RyaW5nUGFzdGVib2FyZFR5cGUoKSwgV2ViQ29yZTo6bGVn
YWN5UlRGRFBhc3RlYm9hcmRUeXBlKCksIFdlYkFyY2hpdmVQYm9hcmRUeXBlXTsKKyAgICByZXR1
cm4gdHlwZXMuZ2V0KCkuZ2V0KCk7CiB9CiAKIE5TQXJyYXkqIFBhc3RlYm9hcmRUeXBlczo6Zm9y
U2VsZWN0aW9uKCkKIHsKIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOIAotICAg
IHN0YXRpYyBOU0FycmF5ICp0eXBlcyA9IHJldGFpbihAW1dlYkFyY2hpdmVQYm9hcmRUeXBlLCAo
X19icmlkZ2UgTlNTdHJpbmcgKilrVVRUeXBlV2ViQXJjaGl2ZSwgV2ViQ29yZTo6bGVnYWN5UlRG
RFBhc3RlYm9hcmRUeXBlKCksIFdlYkNvcmU6OmxlZ2FjeVJURlBhc3RlYm9hcmRUeXBlKCksIFdl
YkNvcmU6OmxlZ2FjeVN0cmluZ1Bhc3RlYm9hcmRUeXBlKCldKTsKKyAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8UmV0YWluUHRyPE5TQXJyYXk+PiB0eXBlcyA9IEBbV2ViQXJjaGl2ZVBib2FyZFR5
cGUsIChfX2JyaWRnZSBOU1N0cmluZyAqKWtVVFR5cGVXZWJBcmNoaXZlLCBXZWJDb3JlOjpsZWdh
Y3lSVEZEUGFzdGVib2FyZFR5cGUoKSwgV2ViQ29yZTo6bGVnYWN5UlRGUGFzdGVib2FyZFR5cGUo
KSwgV2ViQ29yZTo6bGVnYWN5U3RyaW5nUGFzdGVib2FyZFR5cGUoKV07CiBBTExPV19ERVBSRUNB
VEVEX0RFQ0xBUkFUSU9OU19FTkQKLSAgICByZXR1cm4gdHlwZXM7CisgICAgcmV0dXJuIHR5cGVz
LmdldCgpLmdldCgpOwogfQogICAgIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbSBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCmluZGV4IGE1YzZiYmMwY2NmZTRm
YjJlYjMwOTc3N2NlOGY3ZTdjYTZiYjM5OWMuLmU2ZmI3ODEwZjk2NTc4ZWUyM2YxZjliYTIzMWFh
MTQzNjk5OWQ4OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dl
YlZpZXdJbXBsLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJ
bXBsLm1tCkBAIC0yMjU5LDggKzIyNTksNyBAQCBib29sIFdlYlZpZXdJbXBsOjphY2NlcHRzRmly
c3RNb3VzZShOU0V2ZW50ICpldmVudCkKICAgICAvLyBUaGVyZSdzIGEgY2hhbmNlIHRoYXQgcmVz
cG9uZGluZyB0byB0aGlzIGV2ZW50IHdpbGwgcnVuIGEgbmVzdGVkIGV2ZW50IGxvb3AsIGFuZAog
ICAgIC8vIGZldGNoaW5nIGEgbmV3IGV2ZW50IG1pZ2h0IHJlbGVhc2UgdGhlIG9sZCBvbmUuIFJl
dGFpbmluZyBhbmQgdGhlbiBhdXRvcmVsZWFzaW5nCiAgICAgLy8gdGhlIGN1cnJlbnQgZXZlbnQg
cHJldmVudHMgdGhhdCBmcm9tIGNhdXNpbmcgYSBwcm9ibGVtIGluc2lkZSBXZWJLaXQgb3IgQXBw
S2l0IGNvZGUuCi0gICAgQ0ZSZXRhaW4oKF9fYnJpZGdlIENGVHlwZVJlZilldmVudCk7Ci0gICAg
Q0ZBdXRvcmVsZWFzZSgoX19icmlkZ2UgQ0ZUeXBlUmVmKWV2ZW50KTsKKyAgICByZXRhaW5QdHIo
ZXZlbnQpLmF1dG9yZWxlYXNlKCk7CiAKICAgICBpZiAoIVttX3ZpZXcgaGl0VGVzdDpldmVudC5s
b2NhdGlvbkluV2luZG93XSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjI3OSw4ICsyMjc4
LDcgQEAgYm9vbCBXZWJWaWV3SW1wbDo6c2hvdWxkRGVsYXlXaW5kb3dPcmRlcmluZ0ZvckV2ZW50
KE5TRXZlbnQgKmV2ZW50KQogICAgIC8vIFRoZXJlJ3MgYSBjaGFuY2UgdGhhdCByZXNwb25kaW5n
IHRvIHRoaXMgZXZlbnQgd2lsbCBydW4gYSBuZXN0ZWQgZXZlbnQgbG9vcCwgYW5kCiAgICAgLy8g
ZmV0Y2hpbmcgYSBuZXcgZXZlbnQgbWlnaHQgcmVsZWFzZSB0aGUgb2xkIG9uZS4gUmV0YWluaW5n
IGFuZCB0aGVuIGF1dG9yZWxlYXNpbmcKICAgICAvLyB0aGUgY3VycmVudCBldmVudCBwcmV2ZW50
cyB0aGF0IGZyb20gY2F1c2luZyBhIHByb2JsZW0gaW5zaWRlIFdlYktpdCBvciBBcHBLaXQgY29k
ZS4KLSAgICBDRlJldGFpbigoX19icmlkZ2UgQ0ZUeXBlUmVmKWV2ZW50KTsKLSAgICBDRkF1dG9y
ZWxlYXNlKChfX2JyaWRnZSBDRlR5cGVSZWYpZXZlbnQpOworICAgIHJldGFpblB0cihldmVudCku
YXV0b3JlbGVhc2UoKTsKIAogICAgIGlmICghW21fdmlldyBoaXRUZXN0OmV2ZW50LmxvY2F0aW9u
SW5XaW5kb3ddKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC00ODExLDI0ICs0ODA5LDIwIEBA
IHZvaWQgV2ViVmlld0ltcGw6OmRvbmVXaXRoS2V5RXZlbnQoTlNFdmVudCAqZXZlbnQsIGJvb2wg
ZXZlbnRXYXNIYW5kbGVkKQogCiBOU0FycmF5ICpXZWJWaWV3SW1wbDo6dmFsaWRBdHRyaWJ1dGVz
Rm9yTWFya2VkVGV4dCgpCiB7Ci0gICAgc3RhdGljIE5TQXJyYXkgKnZhbGlkQXR0cmlidXRlczsK
LSAgICBpZiAoIXZhbGlkQXR0cmlidXRlcykgewotICAgICAgICB2YWxpZEF0dHJpYnV0ZXMgPSBA
WwotICAgICAgICAgICAgTlNVbmRlcmxpbmVTdHlsZUF0dHJpYnV0ZU5hbWUsCi0gICAgICAgICAg
ICBOU1VuZGVybGluZUNvbG9yQXR0cmlidXRlTmFtZSwKLSAgICAgICAgICAgIE5TTWFya2VkQ2xh
dXNlU2VnbWVudEF0dHJpYnV0ZU5hbWUsCi0gICAgICAgICAgICBOU1RleHRBbHRlcm5hdGl2ZXNB
dHRyaWJ1dGVOYW1lLAotICAgICAgICAgICAgTlNUZXh0SW5zZXJ0aW9uVW5kb2FibGVBdHRyaWJ1
dGVOYW1lLAotICAgICAgICBdOwotICAgICAgICAvLyBOU1RleHQgYWxzbyBzdXBwb3J0cyB0aGUg
Zm9sbG93aW5nIGF0dHJpYnV0ZXMsIGJ1dCBpdCdzCi0gICAgICAgIC8vIGhhcmQgdG8gdGVsbCB3
aGljaCBhcmUgcmVhbGx5IHJlcXVpcmVkIGZvciB0ZXh0IGlucHV0IHRvCi0gICAgICAgIC8vIHdv
cmsgd2VsbDsgSSBoYXZlIG5vdCBzZWVuIGFueSBpbnB1dCBtZXRob2QgbWFrZSB1c2Ugb2YgdGhl
bSB5ZXQuCi0gICAgICAgIC8vICAgICBOU0ZvbnRBdHRyaWJ1dGVOYW1lLCBOU0ZvcmVncm91bmRD
b2xvckF0dHJpYnV0ZU5hbWUsCi0gICAgICAgIC8vICAgICBOU0JhY2tncm91bmRDb2xvckF0dHJp
YnV0ZU5hbWUsIE5TTGFuZ3VhZ2VBdHRyaWJ1dGVOYW1lLgotICAgICAgICBDRlJldGFpbih2YWxp
ZEF0dHJpYnV0ZXMpOwotICAgIH0KKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRy
PE5TQXJyYXk+PiB2YWxpZEF0dHJpYnV0ZXMgPSBAWworICAgICAgICBOU1VuZGVybGluZVN0eWxl
QXR0cmlidXRlTmFtZSwKKyAgICAgICAgTlNVbmRlcmxpbmVDb2xvckF0dHJpYnV0ZU5hbWUsCisg
ICAgICAgIE5TTWFya2VkQ2xhdXNlU2VnbWVudEF0dHJpYnV0ZU5hbWUsCisgICAgICAgIE5TVGV4
dEFsdGVybmF0aXZlc0F0dHJpYnV0ZU5hbWUsCisgICAgICAgIE5TVGV4dEluc2VydGlvblVuZG9h
YmxlQXR0cmlidXRlTmFtZSwKKyAgICBdOworICAgIC8vIE5TVGV4dCBhbHNvIHN1cHBvcnRzIHRo
ZSBmb2xsb3dpbmcgYXR0cmlidXRlcywgYnV0IGl0J3MKKyAgICAvLyBoYXJkIHRvIHRlbGwgd2hp
Y2ggYXJlIHJlYWxseSByZXF1aXJlZCBmb3IgdGV4dCBpbnB1dCB0bworICAgIC8vIHdvcmsgd2Vs
bDsgSSBoYXZlIG5vdCBzZWVuIGFueSBpbnB1dCBtZXRob2QgbWFrZSB1c2Ugb2YgdGhlbSB5ZXQu
CisgICAgLy8gICAgIE5TRm9udEF0dHJpYnV0ZU5hbWUsIE5TRm9yZWdyb3VuZENvbG9yQXR0cmli
dXRlTmFtZSwKKyAgICAvLyAgICAgTlNCYWNrZ3JvdW5kQ29sb3JBdHRyaWJ1dGVOYW1lLCBOU0xh
bmd1YWdlQXR0cmlidXRlTmFtZS4KICAgICBMT0coVGV4dElucHV0LCAidmFsaWRBdHRyaWJ1dGVz
Rm9yTWFya2VkVGV4dCAtPiAoLi4uKSIpOwotICAgIHJldHVybiB2YWxpZEF0dHJpYnV0ZXM7Cisg
ICAgcmV0dXJuIHZhbGlkQXR0cmlidXRlcy5nZXQoKS5nZXQoKTsKIH0KIAogc3RhdGljIFZlY3Rv
cjxXZWJDb3JlOjpDb21wb3NpdGlvblVuZGVybGluZT4gZXh0cmFjdFVuZGVybGluZXMoTlNBdHRy
aWJ1dGVkU3RyaW5nICpzdHJpbmcpCkBAIC01MjAyLDggKzUxOTYsNyBAQCBib29sIFdlYlZpZXdJ
bXBsOjpwZXJmb3JtS2V5RXF1aXZhbGVudChOU0V2ZW50ICpldmVudCkKICAgICAvLyBUaGVyZSdz
IGEgY2hhbmNlIHRoYXQgcmVzcG9uZGluZyB0byB0aGlzIGV2ZW50IHdpbGwgcnVuIGEgbmVzdGVk
IGV2ZW50IGxvb3AsIGFuZAogICAgIC8vIGZldGNoaW5nIGEgbmV3IGV2ZW50IG1pZ2h0IHJlbGVh
c2UgdGhlIG9sZCBvbmUuIFJldGFpbmluZyBhbmQgdGhlbiBhdXRvcmVsZWFzaW5nCiAgICAgLy8g
dGhlIGN1cnJlbnQgZXZlbnQgcHJldmVudHMgdGhhdCBmcm9tIGNhdXNpbmcgYSBwcm9ibGVtIGlu
c2lkZSBXZWJLaXQgb3IgQXBwS2l0IGNvZGUuCi0gICAgQ0ZSZXRhaW4oKF9fYnJpZGdlIENGVHlw
ZVJlZilldmVudCk7Ci0gICAgQ0ZBdXRvcmVsZWFzZSgoX19icmlkZ2UgQ0ZUeXBlUmVmKWV2ZW50
KTsKKyAgICByZXRhaW5QdHIoZXZlbnQpLmF1dG9yZWxlYXNlKCk7CiAKICAgICAvLyBXZSBnZXQg
RXNjIGtleSBoZXJlIGFmdGVyIHByb2Nlc3NpbmcgZWl0aGVyIEVzYyBvciBDbWQrcGVyaW9kLiBU
aGUgZm9ybWVyIHN0YXJ0cyBhcyBhIGtleURvd24sIGFuZCB0aGUgbGF0dGVyIHN0YXJ0cyBhcyBh
IGtleSBlcXVpdmFsZW50LAogICAgIC8vIGJ1dCBib3RoIGdldCB0cmFuc2Zvcm1lZCB0byBhIGNh
bmNlbE9wZXJhdGlvbjogY29tbWFuZCwgZXhlY3V0aW5nIHdoaWNoIHBhc3NlcyBhbiBFc2Mga2V5
IGV2ZW50IHRvIC1wZXJmb3JtS2V5RXF1aXZhbGVudDouCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvaW9zL1dLSW5zcGVjdG9ySGlnaGxpZ2h0Vmlldy5tbSBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9pb3MvV0tJbnNwZWN0b3JIaWdobGln
aHRWaWV3Lm1tCmluZGV4IDQ0MTI0NDM3YzI0MzQyNWMzZWRkYjk5Mzc2Y2Q2MjI0ZjJmYzE2YTMu
LmIxYjBiZTM0YmYzMzBjMGVlNTU1ZWQ4ZGM3NDFmYzY0MmIxMDlhZjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9pb3MvV0tJbnNwZWN0b3JIaWdobGlnaHRW
aWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9pb3MvV0tJbnNw
ZWN0b3JIaWdobGlnaHRWaWV3Lm1tCkBAIC0xODMsMjggKzE4MywyNiBAQCBzdGF0aWMgdm9pZCBs
YXllclBhdGhXaXRoSG9sZShDQVNoYXBlTGF5ZXIgKmxheWVyLCBjb25zdCBXZWJDb3JlOjpGbG9h
dFF1YWQmIG91dAogICAgICAgICBpbm5lckhvbGUgPSBxdWFkSW50ZXJzZWN0aW9uKG91dGVyUXVh
ZCwgaG9sZVF1YWQpOwogCiAgICAgLy8gQ2xvY2t3aXNlIGluc2lkZSByZWN0IChob2xlKSwgQ291
bnRlci1DbG9ja3dpc2Ugb3V0c2lkZSByZWN0IChmaWxsKS4KLSAgICBDR011dGFibGVQYXRoUmVm
IHBhdGggPSBDR1BhdGhDcmVhdGVNdXRhYmxlKCk7Ci0gICAgQ0dQYXRoTW92ZVRvUG9pbnQocGF0
aCwgMCwgaW5uZXJIb2xlLnAxKCkueCgpLCBpbm5lckhvbGUucDEoKS55KCkpOwotICAgIENHUGF0
aEFkZExpbmVUb1BvaW50KHBhdGgsIDAsIGlubmVySG9sZS5wMigpLngoKSwgaW5uZXJIb2xlLnAy
KCkueSgpKTsKLSAgICBDR1BhdGhBZGRMaW5lVG9Qb2ludChwYXRoLCAwLCBpbm5lckhvbGUucDMo
KS54KCksIGlubmVySG9sZS5wMygpLnkoKSk7Ci0gICAgQ0dQYXRoQWRkTGluZVRvUG9pbnQocGF0
aCwgMCwgaW5uZXJIb2xlLnA0KCkueCgpLCBpbm5lckhvbGUucDQoKS55KCkpOwotICAgIENHUGF0
aE1vdmVUb1BvaW50KHBhdGgsIDAsIG91dGVyUXVhZC5wMSgpLngoKSwgb3V0ZXJRdWFkLnAxKCku
eSgpKTsKLSAgICBDR1BhdGhBZGRMaW5lVG9Qb2ludChwYXRoLCAwLCBvdXRlclF1YWQucDQoKS54
KCksIG91dGVyUXVhZC5wNCgpLnkoKSk7Ci0gICAgQ0dQYXRoQWRkTGluZVRvUG9pbnQocGF0aCwg
MCwgb3V0ZXJRdWFkLnAzKCkueCgpLCBvdXRlclF1YWQucDMoKS55KCkpOwotICAgIENHUGF0aEFk
ZExpbmVUb1BvaW50KHBhdGgsIDAsIG91dGVyUXVhZC5wMigpLngoKSwgb3V0ZXJRdWFkLnAyKCku
eSgpKTsKLSAgICBsYXllci5wYXRoID0gcGF0aDsKLSAgICBDR1BhdGhSZWxlYXNlKHBhdGgpOwor
ICAgIGF1dG8gcGF0aCA9IGFkb3B0Q0YoQ0dQYXRoQ3JlYXRlTXV0YWJsZSgpKTsKKyAgICBDR1Bh
dGhNb3ZlVG9Qb2ludChwYXRoLmdldCgpLCAwLCBpbm5lckhvbGUucDEoKS54KCksIGlubmVySG9s
ZS5wMSgpLnkoKSk7CisgICAgQ0dQYXRoQWRkTGluZVRvUG9pbnQocGF0aC5nZXQoKSwgMCwgaW5u
ZXJIb2xlLnAyKCkueCgpLCBpbm5lckhvbGUucDIoKS55KCkpOworICAgIENHUGF0aEFkZExpbmVU
b1BvaW50KHBhdGguZ2V0KCksIDAsIGlubmVySG9sZS5wMygpLngoKSwgaW5uZXJIb2xlLnAzKCku
eSgpKTsKKyAgICBDR1BhdGhBZGRMaW5lVG9Qb2ludChwYXRoLmdldCgpLCAwLCBpbm5lckhvbGUu
cDQoKS54KCksIGlubmVySG9sZS5wNCgpLnkoKSk7CisgICAgQ0dQYXRoTW92ZVRvUG9pbnQocGF0
aC5nZXQoKSwgMCwgb3V0ZXJRdWFkLnAxKCkueCgpLCBvdXRlclF1YWQucDEoKS55KCkpOworICAg
IENHUGF0aEFkZExpbmVUb1BvaW50KHBhdGguZ2V0KCksIDAsIG91dGVyUXVhZC5wNCgpLngoKSwg
b3V0ZXJRdWFkLnA0KCkueSgpKTsKKyAgICBDR1BhdGhBZGRMaW5lVG9Qb2ludChwYXRoLmdldCgp
LCAwLCBvdXRlclF1YWQucDMoKS54KCksIG91dGVyUXVhZC5wMygpLnkoKSk7CisgICAgQ0dQYXRo
QWRkTGluZVRvUG9pbnQocGF0aC5nZXQoKSwgMCwgb3V0ZXJRdWFkLnAyKCkueCgpLCBvdXRlclF1
YWQucDIoKS55KCkpOworICAgIGxheWVyLnBhdGggPSBwYXRoLmdldCgpOwogfQogCiBzdGF0aWMg
dm9pZCBsYXllclBhdGgoQ0FTaGFwZUxheWVyICpsYXllciwgY29uc3QgV2ViQ29yZTo6RmxvYXRR
dWFkJiBvdXRlclF1YWQpCiB7Ci0gICAgQ0dNdXRhYmxlUGF0aFJlZiBwYXRoID0gQ0dQYXRoQ3Jl
YXRlTXV0YWJsZSgpOwotICAgIENHUGF0aE1vdmVUb1BvaW50KHBhdGgsIDAsIG91dGVyUXVhZC5w
MSgpLngoKSwgb3V0ZXJRdWFkLnAxKCkueSgpKTsKLSAgICBDR1BhdGhBZGRMaW5lVG9Qb2ludChw
YXRoLCAwLCBvdXRlclF1YWQucDQoKS54KCksIG91dGVyUXVhZC5wNCgpLnkoKSk7Ci0gICAgQ0dQ
YXRoQWRkTGluZVRvUG9pbnQocGF0aCwgMCwgb3V0ZXJRdWFkLnAzKCkueCgpLCBvdXRlclF1YWQu
cDMoKS55KCkpOwotICAgIENHUGF0aEFkZExpbmVUb1BvaW50KHBhdGgsIDAsIG91dGVyUXVhZC5w
MigpLngoKSwgb3V0ZXJRdWFkLnAyKCkueSgpKTsKLSAgICBsYXllci5wYXRoID0gcGF0aDsKLSAg
ICBDR1BhdGhSZWxlYXNlKHBhdGgpOworICAgIGF1dG8gcGF0aCA9IGFkb3B0Q0YoQ0dQYXRoQ3Jl
YXRlTXV0YWJsZSgpKTsKKyAgICBDR1BhdGhNb3ZlVG9Qb2ludChwYXRoLmdldCgpLCAwLCBvdXRl
clF1YWQucDEoKS54KCksIG91dGVyUXVhZC5wMSgpLnkoKSk7CisgICAgQ0dQYXRoQWRkTGluZVRv
UG9pbnQocGF0aC5nZXQoKSwgMCwgb3V0ZXJRdWFkLnA0KCkueCgpLCBvdXRlclF1YWQucDQoKS55
KCkpOworICAgIENHUGF0aEFkZExpbmVUb1BvaW50KHBhdGguZ2V0KCksIDAsIG91dGVyUXVhZC5w
MygpLngoKSwgb3V0ZXJRdWFkLnAzKCkueSgpKTsKKyAgICBDR1BhdGhBZGRMaW5lVG9Qb2ludChw
YXRoLmdldCgpLCAwLCBvdXRlclF1YWQucDIoKS54KCksIG91dGVyUXVhZC5wMigpLnkoKSk7Cisg
ICAgbGF5ZXIucGF0aCA9IHBhdGguZ2V0KCk7CiB9CiAKIC0gKHZvaWQpX2xheW91dEZvck5vZGVI
aWdobGlnaHQ6KGNvbnN0IFdlYkNvcmU6Okluc3BlY3Rvck92ZXJsYXk6OkhpZ2hsaWdodCYpaGln
aGxpZ2h0IG9mZnNldDoodW5zaWduZWQpb2Zmc2V0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9fV0tUb3VjaEV2ZW50R2VuZXJhdG9yLm1tIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvX1dLVG91Y2hFdmVudEdlbmVyYXRvci5tbQppbmRleCBlMmM3MTgxMTE0ZjljYzlhOWQx
Mzg5MGI5NzEyNTYwMjNkNmE4MzU4Li4yMTlkYmE1N2VmMGY1MDQ0OTMwNThjNjBjYjRkZWNjZTgy
YWY4NGM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9fV0tUb3VjaEV2ZW50
R2VuZXJhdG9yLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL19XS1RvdWNoRXZlbnRH
ZW5lcmF0b3IubW0KQEAgLTk4LDcgKzk4LDcgQEAgQHByb3BlcnR5IChub25hdG9taWMsIHN0cm9u
ZykgTlNNdXRhYmxlRGljdGlvbmFyeSAqZXZlbnRDYWxsYmFja3M7CiBAZW5kCiAKIEBpbXBsZW1l
bnRhdGlvbiBfV0tUb3VjaEV2ZW50R2VuZXJhdG9yIHsKLSAgICBJT0hJREV2ZW50U3lzdGVtQ2xp
ZW50UmVmIF9pb1N5c3RlbUNsaWVudDsKKyAgICBSZXRhaW5QdHI8SU9ISURFdmVudFN5c3RlbUNs
aWVudFJlZj4gX2lvU3lzdGVtQ2xpZW50OwogICAgIFN5bnRoZXRpY0V2ZW50RGlnaXRpemVySW5m
byBfYWN0aXZlUG9pbnRzW0hJRE1heFRvdWNoQ291bnRdOwogICAgIE5TVUludGVnZXIgX2FjdGl2
ZVBvaW50Q291bnQ7CiB9CkBAIC0xMzEsOSArMTMxLDYgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXQK
IAogLSAodm9pZClkZWFsbG9jCiB7Ci0gIGlmIChfaW9TeXN0ZW1DbGllbnQpCi0gICAgICAgIENG
UmVsZWFzZShfaW9TeXN0ZW1DbGllbnQpOwotCiAgICAgW19ldmVudENhbGxiYWNrcyByZWxlYXNl
XTsKICAgICBbc3VwZXIgZGVhbGxvY107CiB9CkBAIC0yMTAsNyArMjA3LDcgQEAgLSAoSU9ISURF
dmVudFJlZilfY3JlYXRlSU9ISURFdmVudFR5cGU6KEhhbmRFdmVudFR5cGUpZXZlbnRUeXBlCiAt
IChCT09MKV9zZW5kSElERXZlbnQ6KElPSElERXZlbnRSZWYpZXZlbnRSZWYKIHsKICAgICBpZiAo
IV9pb1N5c3RlbUNsaWVudCkKLSAgICAgICAgX2lvU3lzdGVtQ2xpZW50ID0gSU9ISURFdmVudFN5
c3RlbUNsaWVudENyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0KTsKKyAgICAgICAgX2lvU3lzdGVt
Q2xpZW50ID0gYWRvcHRDRihJT0hJREV2ZW50U3lzdGVtQ2xpZW50Q3JlYXRlKGtDRkFsbG9jYXRv
ckRlZmF1bHQpKTsKIAogICAgIGlmIChldmVudFJlZikgewogICAgICAgICBSdW5Mb29wOjptYWlu
KCkuZGlzcGF0Y2goW3N0cm9uZ0V2ZW50ID0gcmV0YWluUHRyKGV2ZW50UmVmKV0gewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Z1bGxzY3JlZW4vV0tGdWxsU2NyZWVu
V2luZG93Q29udHJvbGxlcklPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mdWxs
c2NyZWVuL1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXJJT1MubW0KaW5kZXggMDMzY2VlZmZi
MzQ0YjRjN2FhMzEwZDhjMzc0OWE5MGVmYzQ2YzExMi4uNmFlNDU4YTI2OWY1NTQ0ODk1OWM4NmI3
YTg5ZTBmYTE3ZDdlZDFlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L2Z1bGxzY3JlZW4vV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlcklPUy5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZnVsbHNjcmVlbi9XS0Z1bGxTY3JlZW5XaW5kb3dDb250
cm9sbGVySU9TLm1tCkBAIC0xMDMwLDI4ICsxMDMwLDI4IEBAIC0gKE5TU3RyaW5nICopX0VWT3Jn
YW5pemF0aW9uTmFtZQogICAgIGlmICghdHJ1c3QpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAg
ICBOU0RpY3Rpb25hcnkgKmluZm9EaWN0aW9uYXJ5ID0gQ0ZCcmlkZ2luZ1JlbGVhc2UoU2VjVHJ1
c3RDb3B5SW5mbyh0cnVzdCkpOworICAgIGF1dG8gaW5mb0RpY3Rpb25hcnkgPSBhZG9wdENGKFNl
Y1RydXN0Q29weUluZm8odHJ1c3QpKTsKICAgICAvLyBJZiBTZWNUcnVzdENvcHlJbmZvIHJldHVy
bmVkIE5VTEwgdGhlbiBpdCdzIGxpa2VseSB0aGF0IHRoZSBTZWNUcnVzdFJlZiBoYXMgbm90IGJl
ZW4gZXZhbHVhdGVkCiAgICAgLy8gYW5kIHRoZSBvbmx5IHdheSB0byBnZXQgdGhlIGluZm9ybWF0
aW9uIHdlIG5lZWQgaXMgdG8gY2FsbCBTZWNUcnVzdEV2YWx1YXRlIG91cnNlbHZlcy4KICAgICBp
ZiAoIWluZm9EaWN0aW9uYXJ5KSB7CiAgICAgICAgIGlmICghU2VjVHJ1c3RFdmFsdWF0ZVdpdGhF
cnJvcih0cnVzdCwgbnVsbHB0cikpCiAgICAgICAgICAgICByZXR1cm4gbmlsOwotICAgICAgICBp
bmZvRGljdGlvbmFyeSA9IENGQnJpZGdpbmdSZWxlYXNlKFNlY1RydXN0Q29weUluZm8odHJ1c3Qp
KTsKKyAgICAgICAgaW5mb0RpY3Rpb25hcnkgPSBhZG9wdENGKFNlY1RydXN0Q29weUluZm8odHJ1
c3QpKTsKICAgICAgICAgaWYgKCFpbmZvRGljdGlvbmFyeSkKICAgICAgICAgICAgIHJldHVybiBu
aWw7CiAgICAgfQogCiAgICAgLy8gTWFrZSBzdXJlIHRoYXQgdGhlIEVWIGNlcnRpZmljYXRlIGlz
IHZhbGlkIGFnYWluc3Qgb3VyIGNlcnRpZmljYXRlIGNoYWluLgotICAgIGlkIGhhc0VWID0gW2lu
Zm9EaWN0aW9uYXJ5IG9iamVjdEZvcktleTooX19icmlkZ2UgTlNTdHJpbmcgKilrU2VjVHJ1c3RJ
bmZvRXh0ZW5kZWRWYWxpZGF0aW9uS2V5XTsKKyAgICBpZCBoYXNFViA9IFsoX19icmlkZ2UgTlNE
aWN0aW9uYXJ5ICopaW5mb0RpY3Rpb25hcnkuZ2V0KCkgb2JqZWN0Rm9yS2V5OihfX2JyaWRnZSBO
U1N0cmluZyAqKWtTZWNUcnVzdEluZm9FeHRlbmRlZFZhbGlkYXRpb25LZXldOwogICAgIGlmICgh
W2hhc0VWIGlzS2luZE9mQ2xhc3M6W05TVmFsdWUgY2xhc3NdXSB8fCAhW2hhc0VWIGJvb2xWYWx1
ZV0pCiAgICAgICAgIHJldHVybiBuaWw7CiAKICAgICAvLyBNYWtlIHN1cmUgdGhhdCB3ZSBjb3Vs
ZCBjb250YWN0IHJldm9jYXRpb24gc2VydmVyIGFuZCBpdCBpcyBzdGlsbCB2YWxpZC4KLSAgICBp
ZCBpc05vdFJldm9rZWQgPSBbaW5mb0RpY3Rpb25hcnkgb2JqZWN0Rm9yS2V5OihfX2JyaWRnZSBO
U1N0cmluZyAqKWtTZWNUcnVzdEluZm9SZXZvY2F0aW9uS2V5XTsKKyAgICBpZCBpc05vdFJldm9r
ZWQgPSBbKF9fYnJpZGdlIE5TRGljdGlvbmFyeSAqKWluZm9EaWN0aW9uYXJ5LmdldCgpIG9iamVj
dEZvcktleTooX19icmlkZ2UgTlNTdHJpbmcgKilrU2VjVHJ1c3RJbmZvUmV2b2NhdGlvbktleV07
CiAgICAgaWYgKCFbaXNOb3RSZXZva2VkIGlzS2luZE9mQ2xhc3M6W05TVmFsdWUgY2xhc3NdXSB8
fCAhW2lzTm90UmV2b2tlZCBib29sVmFsdWVdKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAg
X0VWT3JnYW5pemF0aW9uTmFtZSA9IFtpbmZvRGljdGlvbmFyeSBvYmplY3RGb3JLZXk6KF9fYnJp
ZGdlIE5TU3RyaW5nICopa1NlY1RydXN0SW5mb0NvbXBhbnlOYW1lS2V5XTsKKyAgICBfRVZPcmdh
bml6YXRpb25OYW1lID0gWyhfX2JyaWRnZSBOU0RpY3Rpb25hcnkgKilpbmZvRGljdGlvbmFyeS5n
ZXQoKSBvYmplY3RGb3JLZXk6KF9fYnJpZGdlIE5TU3RyaW5nICopa1NlY1RydXN0SW5mb0NvbXBh
bnlOYW1lS2V5XTsKICAgICByZXR1cm4gX0VWT3JnYW5pemF0aW9uTmFtZS5nZXQoKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2Nv
YS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0K
aW5kZXggMzA5MjE1MmMwZmM0N2FkYjA3OTU1YjdkNDg3MmM4ZjE2YTljYmUyNS4uNTUyYWFkMzg4
NDU3ZjcxNDIwNDhhMjYxZmYyNmYyOWM0YmExOTFlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCkBAIC01MjgsNyArNTI4LDcgQEAg
dm9pZCBXZWJQcm9jZXNzOjp1cGRhdGVQcm9jZXNzTmFtZShJc0luUHJvY2Vzc0luaXRpYWxpemF0
aW9uIGlzSW5Qcm9jZXNzSW5pdGlhbGkKIHN0YXRpYyBOU1N0cmluZyAqd2ViUHJvY2Vzc0xvYWRl
ckFjY2Vzc2liaWxpdHlCdW5kbGVQYXRoKCkKIHsKICNpZiBIQVZFKEFDQ0VTU0lCSUxJVFlfQlVO
RExFU19QQVRIKQotICAgIHJldHVybiAoX19icmlkZ2UgTlNTdHJpbmcgKilDRkF1dG9yZWxlYXNl
KF9BWFNDb3B5UGF0aEZvckFjY2Vzc2liaWxpdHlCdW5kbGUoQ0ZTVFIoIldlYlByb2Nlc3NMb2Fk
ZXIiKSkpOworICAgIHJldHVybiBhZG9wdENGKF9BWFNDb3B5UGF0aEZvckFjY2Vzc2liaWxpdHlC
dW5kbGUoQ0ZTVFIoIldlYlByb2Nlc3NMb2FkZXIiKSkpLmJyaWRnaW5nQXV0b3JlbGVhc2UoKTsK
ICNlbHNlCiAgICAgTlNTdHJpbmcgKnBhdGggPSAoX19icmlkZ2UgTlNTdHJpbmcgKilHU1N5c3Rl
bVJvb3REaXJlY3RvcnkoKTsKICNpZiBQTEFURk9STShNQUNDQVRBTFlTVCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL01pc2MvV2ViVUlLaXRTdXBwb3J0Lm1tIGIvU291cmNl
L1dlYktpdExlZ2FjeS9pb3MvTWlzYy9XZWJVSUtpdFN1cHBvcnQubW0KaW5kZXggNTkzMTQ2YzAz
MzJlYmQ1Y2QxYzE5YmMxNTc1NzMyYzMxMTI0OTY5MS4uOThhNmNmZmU1NzVhODEzYjczYWUxMDFl
OGMyYzMzODZjZGFkZTNjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvTWlz
Yy9XZWJVSUtpdFN1cHBvcnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvTWlzYy9X
ZWJVSUtpdFN1cHBvcnQubW0KQEAgLTU1LDkgKzU1LDggQEAgc3RhdGljIHZvaWQgTG9hZFdlYkxv
Y2FsaXplZFN0cmluZ3NUaW1lckNhbGxiYWNrKENGUnVuTG9vcFRpbWVyUmVmIHRpbWVyLCB2b2lk
ICoKIAogc3RhdGljIHZvaWQgTG9hZFdlYkxvY2FsaXplZFN0cmluZ3MoKQogewotICAgIENGUnVu
TG9vcFRpbWVyUmVmIHRpbWVyID0gQ0ZSdW5Mb29wVGltZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVm
YXVsdCwgQ0ZBYnNvbHV0ZVRpbWVHZXRDdXJyZW50KCksIDAsIDAsIDAsICZMb2FkV2ViTG9jYWxp
emVkU3RyaW5nc1RpbWVyQ2FsbGJhY2ssIE5VTEwpOwotICAgIENGUnVuTG9vcEFkZFRpbWVyKENG
UnVuTG9vcEdldEN1cnJlbnQoKSwgdGltZXIsIGtDRlJ1bkxvb3BDb21tb25Nb2Rlcyk7Ci0gICAg
Q0ZSZWxlYXNlKHRpbWVyKTsKKyAgICBhdXRvIHRpbWVyID0gYWRvcHRDRihDRlJ1bkxvb3BUaW1l
ckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBDRkFic29sdXRlVGltZUdldEN1cnJlbnQoKSwg
MCwgMCwgMCwgJkxvYWRXZWJMb2NhbGl6ZWRTdHJpbmdzVGltZXJDYWxsYmFjaywgTlVMTCkpOwor
ICAgIENGUnVuTG9vcEFkZFRpbWVyKENGUnVuTG9vcEdldEN1cnJlbnQoKSwgdGltZXIuZ2V0KCks
IGtDRlJ1bkxvb3BDb21tb25Nb2Rlcyk7CiB9CiAKIHZvaWQgV2ViS2l0SW5pdGlhbGl6ZSh2b2lk
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViVmlldy9XZWJQREZWaWV3
SU9TLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViVmlldy9XZWJQREZWaWV3SU9TLm1t
CmluZGV4IGFhODc3ZGEwMjliMDZkYTlhMmY4YTZkNmFjYzAwOTAxOTBlNzM3YWQuLmNiZDUwYjZm
Y2E4NTU3MTVjMmM3Y2MzZDYwMTJhYmQxODJlNDAyODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvaW9zL1dlYlZpZXcvV2ViUERGVmlld0lPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L2lvcy9XZWJWaWV3L1dlYlBERlZpZXdJT1MubW0KQEAgLTMwMiwxNCArMzAyLDExIEBA
IC0gKHZvaWQpX2NoZWNrUERGVGl0bGUKIAogLSAodm9pZClmaW5pc2hlZExvYWRpbmdXaXRoRGF0
YVNvdXJjZTooV2ViRGF0YVNvdXJjZSAqKWRhdGFTb3VyY2UKIHsKLSAgICBDR0RhdGFQcm92aWRl
clJlZiBwcm92aWRlciA9IENHRGF0YVByb3ZpZGVyQ3JlYXRlV2l0aENGRGF0YSgoQ0ZEYXRhUmVm
KVtkYXRhU291cmNlIGRhdGFdKTsKLQorICAgIGF1dG8gcHJvdmlkZXIgPSBhZG9wdENGKENHRGF0
YVByb3ZpZGVyQ3JlYXRlV2l0aENGRGF0YSgoQ0ZEYXRhUmVmKVtkYXRhU291cmNlIGRhdGFdKSk7
CiAgICAgaWYgKCFwcm92aWRlcikgCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBfUERGRG9j
dW1lbnQgPSBDR1BERkRvY3VtZW50Q3JlYXRlV2l0aFByb3ZpZGVyKHByb3ZpZGVyKTsKLSAgICBD
R0RhdGFQcm92aWRlclJlbGVhc2UocHJvdmlkZXIpOwotICAgICAgICAKKyAgICBfUERGRG9jdW1l
bnQgPSBDR1BERkRvY3VtZW50Q3JlYXRlV2l0aFByb3ZpZGVyKHByb3ZpZGVyLmdldCgpKTsKICAg
ICBpZiAoIV9QREZEb2N1bWVudCkKICAgICAgICAgcmV0dXJuOwogICAgIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViVmlldy9XZWJQREZWaWV3UGxhY2Vob2xkZXIubW0g
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJWaWV3L1dlYlBERlZpZXdQbGFjZWhvbGRlci5t
bQppbmRleCA3MjU0ZDBjNWFjYzZhYTFhODc5YjYyYWQwYTQ4ODk5ZjNjZTdkYmExLi45YmIwOTBh
YmE4NjNkODJiNjU1MjM2NTQ2OWQwOTNiOTk5YTYwYjlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L2lvcy9XZWJWaWV3L1dlYlBERlZpZXdQbGFjZWhvbGRlci5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJWaWV3L1dlYlBERlZpZXdQbGFjZWhvbGRlci5tbQpAQCAt
Mjc0LDEzICsyNzQsMTEgQEAgLSAodm9pZClmaW5pc2hlZExvYWRpbmdXaXRoRGF0YVNvdXJjZToo
V2ViRGF0YVNvdXJjZSAqKWRhdGFTb3VyY2UKICAgICBbc2VsZiBkYXRhU291cmNlVXBkYXRlZDpk
YXRhU291cmNlXTsKIAogICAgIF9kaWRGaW5pc2hMb2FkID0gWUVTOwotICAgIENHRGF0YVByb3Zp
ZGVyUmVmIHByb3ZpZGVyID0gQ0dEYXRhUHJvdmlkZXJDcmVhdGVXaXRoQ0ZEYXRhKChDRkRhdGFS
ZWYpW2RhdGFTb3VyY2UgZGF0YV0pOworICAgIGF1dG8gcHJvdmlkZXIgPSBhZG9wdENGKENHRGF0
YVByb3ZpZGVyQ3JlYXRlV2l0aENGRGF0YSgoQ0ZEYXRhUmVmKVtkYXRhU291cmNlIGRhdGFdKSk7
CiAgICAgaWYgKCFwcm92aWRlcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgX2RvY3VtZW50ID0g
Q0dQREZEb2N1bWVudENyZWF0ZVdpdGhQcm92aWRlcihwcm92aWRlcik7Ci0KLSAgICBDR0RhdGFQ
cm92aWRlclJlbGVhc2UocHJvdmlkZXIpOworICAgIF9kb2N1bWVudCA9IENHUERGRG9jdW1lbnRD
cmVhdGVXaXRoUHJvdmlkZXIocHJvdmlkZXIuZ2V0KCkpOwogCiAgICAgW3NlbGYgX2RvUG9zdExv
YWRPclVubG9ja1Rhc2tzXTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L01pc2MvV2ViTG9jYWxpemFibGVTdHJpbmdzLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
TWlzYy9XZWJMb2NhbGl6YWJsZVN0cmluZ3MubW0KaW5kZXggNGVlMDAzNjQxOWU3YWZjYmY4NTM4
MjJkYzViZTk2NDUxOGQwMjk3OS4uMjk0MGQ0YWI2ZjIwOTgzZWM4NmI5MmFhYTJmNjE3MmMyMTk1
MzBmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJMb2NhbGl6
YWJsZVN0cmluZ3MubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJMb2Nh
bGl6YWJsZVN0cmluZ3MubW0KQEAgLTMwLDYgKzMwLDggQEAKIAogI2ltcG9ydCA8d3RmL0Fzc2Vy
dGlvbnMuaD4KICNpbXBvcnQgPHd0Zi9NYWluVGhyZWFkLmg+CisjaW1wb3J0IDx3dGYvTmV2ZXJE
ZXN0cm95ZWQuaD4KKyNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KIAogV2ViTG9jYWxpemFibGVT
dHJpbmdzQnVuZGxlIFdlYktpdExvY2FsaXphYmxlU3RyaW5nc0J1bmRsZSA9IHsgImNvbS5hcHBs
ZS5XZWJLaXQiLCAwIH07CiAKQEAgLTQ1LDEzICs0Nyw5IEBAIE5TU3RyaW5nICpXZWJMb2NhbGl6
ZWRTdHJpbmcoV2ViTG9jYWxpemFibGVTdHJpbmdzQnVuZGxlICpzdHJpbmdzQnVuZGxlLCBjb25z
dCBjCiAKICAgICBOU0J1bmRsZSAqYnVuZGxlOwogICAgIGlmIChzdHJpbmdzQnVuZGxlID09IE5V
TEwpIHsKLSAgICAgICAgc3RhdGljIE5TQnVuZGxlICptYWluQnVuZGxlOwotICAgICAgICBpZiAo
bWFpbkJ1bmRsZSA9PSBuaWwpIHsKLSAgICAgICAgICAgIG1haW5CdW5kbGUgPSBbTlNCdW5kbGUg
bWFpbkJ1bmRsZV07Ci0gICAgICAgICAgICBBU1NFUlQobWFpbkJ1bmRsZSk7Ci0gICAgICAgICAg
ICBDRlJldGFpbihtYWluQnVuZGxlKTsKLSAgICAgICAgfQotICAgICAgICBidW5kbGUgPSBtYWlu
QnVuZGxlOworICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPE5TQnVuZGxl
Pj4gbWFpbkJ1bmRsZSA9IFtOU0J1bmRsZSBtYWluQnVuZGxlXTsKKyAgICAgICAgQVNTRVJUKG1h
aW5CdW5kbGUuZ2V0KCkpOworICAgICAgICBidW5kbGUgPSBtYWluQnVuZGxlLmdldCgpLmdldCgp
OwogICAgIH0gZWxzZSB7CiAgICAgICAgIGJ1bmRsZSA9IHN0cmluZ3NCdW5kbGUtPmJ1bmRsZTsK
ICAgICAgICAgaWYgKGJ1bmRsZSA9PSBuaWwpIHsKQEAgLTYxLDkgKzU5LDggQEAgTlNTdHJpbmcg
KldlYkxvY2FsaXplZFN0cmluZyhXZWJMb2NhbGl6YWJsZVN0cmluZ3NCdW5kbGUgKnN0cmluZ3NC
dW5kbGUsIGNvbnN0IGMKICAgICAgICAgfQogICAgIH0KICAgICBOU1N0cmluZyAqbm90Rm91bmQg
PSBAImxvY2FsaXplZCBzdHJpbmcgbm90IGZvdW5kIjsKLSAgICBDRlN0cmluZ1JlZiBrZXlTdHJp
bmcgPSBDRlN0cmluZ0NyZWF0ZVdpdGhDU3RyaW5nTm9Db3B5KE5VTEwsIGtleSwga0NGU3RyaW5n
RW5jb2RpbmdVVEY4LCBrQ0ZBbGxvY2F0b3JOdWxsKTsKLSAgICBOU1N0cmluZyAqcmVzdWx0ID0g
W2J1bmRsZSBsb2NhbGl6ZWRTdHJpbmdGb3JLZXk6KF9fYnJpZGdlIE5TU3RyaW5nICopa2V5U3Ry
aW5nIHZhbHVlOm5vdEZvdW5kIHRhYmxlOm5pbF07Ci0gICAgQ0ZSZWxlYXNlKGtleVN0cmluZyk7
CisgICAgYXV0byBrZXlTdHJpbmcgPSBhZG9wdENGKENGU3RyaW5nQ3JlYXRlV2l0aENTdHJpbmdO
b0NvcHkoTlVMTCwga2V5LCBrQ0ZTdHJpbmdFbmNvZGluZ1VURjgsIGtDRkFsbG9jYXRvck51bGwp
KTsKKyAgICBOU1N0cmluZyAqcmVzdWx0ID0gW2J1bmRsZSBsb2NhbGl6ZWRTdHJpbmdGb3JLZXk6
KF9fYnJpZGdlIE5TU3RyaW5nICopa2V5U3RyaW5nLmdldCgpIHZhbHVlOm5vdEZvdW5kIHRhYmxl
Om5pbF07CiAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShyZXN1bHQgIT0gbm90Rm91bmQsICJjb3Vs
ZCBub3QgZmluZCBsb2NhbGl6YWJsZSBzdHJpbmcgJXMgaW4gYnVuZGxlIiwga2V5KTsKICAgICBy
ZXR1cm4gcmVzdWx0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlz
Yy9XZWJOU0RhdGFFeHRyYXMubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYk5T
RGF0YUV4dHJhcy5tbQppbmRleCA2ZWM3Y2MwZGIyMjcyY2U0YmQzZGExNzRlYTMyOTQ1ODZkZGZk
MTdlLi44ZDUwNmEyM2ZjNjRhMGU5NjI5MmI2ZTFmMTBlM2YyNDgwNjhlNDAzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYk5TRGF0YUV4dHJhcy5tbQorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYk5TRGF0YUV4dHJhcy5tbQpAQCAtODMsOSAr
ODMsOSBAQCAtIChOU1N0cmluZyAqKV93ZWJfY2FwaXRhbGl6ZVJGQzgyMkhlYWRlckZpZWxkTmFt
ZQogICAgIH0KICAgICBpZiAoc29tZXRoaW5nQ2hhbmdlZCkgewogICAgICAgICBpZiAodXNlVW5p
Q2hhclB0cikKLSAgICAgICAgICAgIHJlc3VsdCA9IENGQnJpZGdpbmdSZWxlYXNlKENGU3RyaW5n
Q3JlYXRlV2l0aENoYXJhY3RlcnNOb0NvcHkoa0NGQWxsb2NhdG9yRGVmYXVsdCwgdW5pQ2hhclB0
ciwgbGVuLCBudWxscHRyKSk7CisgICAgICAgICAgICByZXN1bHQgPSBhZG9wdENGKENGU3RyaW5n
Q3JlYXRlV2l0aENoYXJhY3RlcnNOb0NvcHkoa0NGQWxsb2NhdG9yRGVmYXVsdCwgdW5pQ2hhclB0
ciwgbGVuLCBudWxscHRyKSkuYnJpZGdpbmdBdXRvcmVsZWFzZSgpOwogICAgICAgICBlbHNlCi0g
ICAgICAgICAgICByZXN1bHQgPSBDRkJyaWRnaW5nUmVsZWFzZShDRlN0cmluZ0NyZWF0ZVdpdGhD
U3RyaW5nTm9Db3B5KGtDRkFsbG9jYXRvckRlZmF1bHQsIGNoYXJQdHIsIGtDRlN0cmluZ0VuY29k
aW5nSVNPTGF0aW4xLCBudWxscHRyKSk7CisgICAgICAgICAgICByZXN1bHQgPSBhZG9wdENGKENG
U3RyaW5nQ3JlYXRlV2l0aENTdHJpbmdOb0NvcHkoa0NGQWxsb2NhdG9yRGVmYXVsdCwgY2hhclB0
ciwga0NGU3RyaW5nRW5jb2RpbmdJU09MYXRpbjEsIG51bGxwdHIpKS5icmlkZ2luZ0F1dG9yZWxl
YXNlKCk7CiAgICAgfSBlbHNlCiAgICAgICAgIHJlc3VsdCA9IHNlbGY7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSG9z
dE1hbmFnZXIubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRz
Y2FwZVBsdWdpbkhvc3RNYW5hZ2VyLm1tCmluZGV4IGY2MzkzZjg5YmZiYTRmNjlmZDAzOGYyMTU2
NWVmMTdkMDJmYmYzMzcuLjVmZGEzZmM3MTdmMzEzYTRkYjY1ZTIyYjgzNjk1ZDgzM2M5OWVmOGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNj
YXBlUGx1Z2luSG9zdE1hbmFnZXIubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1
Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5Ib3N0TWFuYWdlci5tbQpAQCAtMTIxLDcgKzEyMSw3
IEBAIHN0YXRpYyBOU1N0cmluZyAqcHJlZmVycmVkQnVuZGxlTG9jYWxpemF0aW9uTmFtZSgpCiAg
ICAgaWYgKCFzdWNjZXNzKQogICAgICAgICByZXR1cm4gQCJlbl9VUyI7CiAKLSAgICByZXR1cm4g
Q0ZCcmlkZ2luZ1JlbGVhc2UoQ0ZMb2NhbGVDcmVhdGVDYW5vbmljYWxMb2NhbGVJZGVudGlmaWVy
RnJvbVNjcmlwdE1hbmFnZXJDb2RlcygwLCBsYW5ndWFnZUNvZGUsIHJlZ2lvbkNvZGUpKTsKKyAg
ICByZXR1cm4gYWRvcHRDRihDRkxvY2FsZUNyZWF0ZUNhbm9uaWNhbExvY2FsZUlkZW50aWZpZXJG
cm9tU2NyaXB0TWFuYWdlckNvZGVzKDAsIGxhbmd1YWdlQ29kZSwgcmVnaW9uQ29kZSkpLmJyaWRn
aW5nQXV0b3JlbGVhc2UoKTsKIH0KIAogYm9vbCBOZXRzY2FwZVBsdWdpbkhvc3RNYW5hZ2VyOjpz
cGF3blBsdWdpbkhvc3QoY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoLCBjcHVfdHlwZV90IHBsdWdp
bkFyY2hpdGVjdHVyZSwgbWFjaF9wb3J0X3QgY2xpZW50UG9ydCwgbWFjaF9wb3J0X3QmIHBsdWdp
bkhvc3RQb3J0LCBQcm9jZXNzU2VyaWFsTnVtYmVyJiBwbHVnaW5Ib3N0UFNOKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblZpZXcu
bW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luVmll
dy5tbQppbmRleCAxMmFhYTNkMDhmNzdjOGNmOGQ0MWQ0NDNlMTJhYjZkMmUyNzEyM2IyLi44ZmZm
MjQ1ZTE2OGQzNGFkYmVkYjAyZDQ3NDhmOWNiODcxMTA3N2I2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luVmlldy5tbQorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luVmlldy5tbQpA
QCAtMTQ1MywxNiArMTQ1MywxNSBAQCAtIChjb25zdCBjaGFyICopdXNlckFnZW50CiAKIC0odm9p
ZClzdGF0dXM6KGNvbnN0IGNoYXIgKiltZXNzYWdlCiB7ICAgIAotICAgIENGU3RyaW5nUmVmIHN0
YXR1cyA9IENGU3RyaW5nQ3JlYXRlV2l0aENTdHJpbmcoTlVMTCwgbWVzc2FnZSA/IG1lc3NhZ2Ug
OiAiIiwga0NGU3RyaW5nRW5jb2RpbmdVVEY4KTsKKyAgICBhdXRvIHN0YXR1cyA9IGFkb3B0Q0Yo
Q0ZTdHJpbmdDcmVhdGVXaXRoQ1N0cmluZyhOVUxMLCBtZXNzYWdlID8gbWVzc2FnZSA6ICIiLCBr
Q0ZTdHJpbmdFbmNvZGluZ1VURjgpKTsKICAgICBpZiAoIXN0YXR1cykgewogICAgICAgICBMT0df
RVJST1IoIk5QTl9TdGF0dXM6IHRoZSBtZXNzYWdlIHdhcyBub3QgdmFsaWQgVVRGLTgiKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAgICBMT0coUGx1Z2lucywgIk5QTl9TdGF0dXM6
ICVAIiwgc3RhdHVzKTsKKyAgICBMT0coUGx1Z2lucywgIk5QTl9TdGF0dXM6ICVAIiwgc3RhdHVz
LmdldCgpKTsKICAgICBXZWJWaWV3ICp3diA9IFtzZWxmIHdlYlZpZXddOwotICAgIFtbd3YgX1VJ
RGVsZWdhdGVGb3J3YXJkZXJdIHdlYlZpZXc6d3Ygc2V0U3RhdHVzVGV4dDooX19icmlkZ2UgTlNT
dHJpbmcgKilzdGF0dXNdOwotICAgIENGUmVsZWFzZShzdGF0dXMpOworICAgIFtbd3YgX1VJRGVs
ZWdhdGVGb3J3YXJkZXJdIHdlYlZpZXc6d3Ygc2V0U3RhdHVzVGV4dDooX19icmlkZ2UgTlNTdHJp
bmcgKilzdGF0dXMuZ2V0KCldOwogfQogCiAtKHZvaWQpaW52YWxpZGF0ZVJlY3Q6KE5QUmVjdCAq
KWludmFsaWRSZWN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJQcm9ncmVzc1RyYWNrZXJDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQcm9ncmVzc1RyYWNrZXJDbGllbnQubW0KaW5kZXggY2Mz
OGVmMTYxZTc1M2Q1MTkxNjRmZWQzMGRkNTg3NjUxODA4YmYxNi4uOGY0NzgzY2IzMDhhNjRkZGNh
NWIxMzQ0MzU1MDgyMzYwNDE3ZTA1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViUHJvZ3Jlc3NUcmFja2VyQ2xpZW50Lm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlByb2dyZXNzVHJhY2tlckNsaWVu
dC5tbQpAQCAtNzAsMTMgKzcwLDEyIEBAIHZvaWQgV2ViUHJvZ3Jlc3NUcmFja2VyQ2xpZW50Ojpw
cm9ncmVzc0VzdGltYXRlQ2hhbmdlZChXZWJDb3JlOjpGcmFtZSYpCiAgICAgCiAgICAgLy8gVXNl
IGEgQ0ZEaWN0aW9uYXJ5IHNvIHdlIGNhbiBhZGQgdGhlIENHQ29sb3JSZWYgd2l0aG91dCBjb21w
aWxlIGVycm9ycy4gQW5kIHRoZW4gdGhhbmtzIHRvCiAgICAgLy8gdG9sbC1mcmVlIGJyaWRnaW5n
IHdlIGNhbiBwYXNzIHRoZSBDRkRpY3Rpb25hcnkgYXMgYW4gTlNEaWN0aW9uYXJ5IHRvIHBvc3RO
b3RpZmljYXRpb24uCi0gICAgQ0ZNdXRhYmxlRGljdGlvbmFyeVJlZiB1c2VySW5mbyA9IENGRGlj
dGlvbmFyeUNyZWF0ZU11dGFibGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgMiwgJmtDRlR5cGVEaWN0
aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcyk7Ci0g
ICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUodXNlckluZm8sIFdlYlZpZXdQcm9ncmVzc0VzdGltYXRl
ZFByb2dyZXNzS2V5LCBwcm9ncmVzcyk7CisgICAgYXV0byB1c2VySW5mbyA9IGFkb3B0Q0YoQ0ZE
aWN0aW9uYXJ5Q3JlYXRlTXV0YWJsZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAyLCAma0NGVHlwZURp
Y3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7
CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUodXNlckluZm8uZ2V0KCksIFdlYlZpZXdQcm9ncmVz
c0VzdGltYXRlZFByb2dyZXNzS2V5LCBwcm9ncmVzcyk7CiAgICAgaWYgKGJvZHlCYWNrZ3JvdW5k
Q29sb3IpCi0gICAgICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKHVzZXJJbmZvLCBXZWJWaWV3UHJv
Z3Jlc3NCYWNrZ3JvdW5kQ29sb3JLZXksIGJvZHlCYWNrZ3JvdW5kQ29sb3IpOworICAgICAgICBD
RkRpY3Rpb25hcnlBZGRWYWx1ZSh1c2VySW5mby5nZXQoKSwgV2ViVmlld1Byb2dyZXNzQmFja2dy
b3VuZENvbG9yS2V5LCBib2R5QmFja2dyb3VuZENvbG9yKTsKICAgICAKLSAgICBXZWJUaHJlYWRQ
b3N0Tm90aWZpY2F0aW9uKFdlYlZpZXdQcm9ncmVzc0VzdGltYXRlQ2hhbmdlZE5vdGlmaWNhdGlv
biwgbV93ZWJWaWV3LCAoTlNEaWN0aW9uYXJ5ICopIHVzZXJJbmZvKTsKLSAgICBDRlJlbGVhc2Uo
dXNlckluZm8pOworICAgIFdlYlRocmVhZFBvc3ROb3RpZmljYXRpb24oV2ViVmlld1Byb2dyZXNz
RXN0aW1hdGVDaGFuZ2VkTm90aWZpY2F0aW9uLCBtX3dlYlZpZXcsIChOU0RpY3Rpb25hcnkgKil1
c2VySW5mby5nZXQoKSk7CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViSW5zcGVjdG9yL1dlYk5vZGVIaWdobGlnaHRWaWV3Lm1tIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViSW5zcGVjdG9yL1dlYk5vZGVIaWdobGlnaHRWaWV3Lm1tCmluZGV4
IDIwZjE5ZjBiYzRiYjQ4ZGQyZGU1OTA2ZDllMjdlM2IzYzM0YzI1M2YuLmQzOTczZTI5NDQ1OWVj
ZjFkYmRlZjQ0OWVmMmNmZDJjYWNiOGVkMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYkluc3BlY3Rvci9XZWJOb2RlSGlnaGxpZ2h0Vmlldy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJJbnNwZWN0b3IvV2ViTm9kZUhpZ2hsaWdodFZpZXcubW0KQEAg
LTIzNiwyOCArMjM2LDI2IEBAIHN0YXRpYyB2b2lkIGxheWVyUGF0aFdpdGhIb2xlKENBU2hhcGVM
YXllciAqbGF5ZXIsIGNvbnN0IEZsb2F0UXVhZCYgb3V0ZXJRdWFkLCBjCiAgICAgICAgIGlubmVy
SG9sZSA9IHF1YWRJbnRlcnNlY3Rpb24ob3V0ZXJRdWFkLCBob2xlUXVhZCk7CiAKICAgICAvLyBD
bG9ja3dpc2UgaW5zaWRlIHJlY3QgKGhvbGUpLCBDb3VudGVyLUNsb2Nrd2lzZSBvdXRzaWRlIHJl
Y3QgKGZpbGwpLgotICAgIENHTXV0YWJsZVBhdGhSZWYgcGF0aCA9IENHUGF0aENyZWF0ZU11dGFi
bGUoKTsKLSAgICBDR1BhdGhNb3ZlVG9Qb2ludChwYXRoLCAwLCBpbm5lckhvbGUucDEoKS54KCks
IGlubmVySG9sZS5wMSgpLnkoKSk7Ci0gICAgQ0dQYXRoQWRkTGluZVRvUG9pbnQocGF0aCwgMCwg
aW5uZXJIb2xlLnAyKCkueCgpLCBpbm5lckhvbGUucDIoKS55KCkpOwotICAgIENHUGF0aEFkZExp
bmVUb1BvaW50KHBhdGgsIDAsIGlubmVySG9sZS5wMygpLngoKSwgaW5uZXJIb2xlLnAzKCkueSgp
KTsKLSAgICBDR1BhdGhBZGRMaW5lVG9Qb2ludChwYXRoLCAwLCBpbm5lckhvbGUucDQoKS54KCks
IGlubmVySG9sZS5wNCgpLnkoKSk7Ci0gICAgQ0dQYXRoTW92ZVRvUG9pbnQocGF0aCwgMCwgb3V0
ZXJRdWFkLnAxKCkueCgpLCBvdXRlclF1YWQucDEoKS55KCkpOwotICAgIENHUGF0aEFkZExpbmVU
b1BvaW50KHBhdGgsIDAsIG91dGVyUXVhZC5wNCgpLngoKSwgb3V0ZXJRdWFkLnA0KCkueSgpKTsK
LSAgICBDR1BhdGhBZGRMaW5lVG9Qb2ludChwYXRoLCAwLCBvdXRlclF1YWQucDMoKS54KCksIG91
dGVyUXVhZC5wMygpLnkoKSk7Ci0gICAgQ0dQYXRoQWRkTGluZVRvUG9pbnQocGF0aCwgMCwgb3V0
ZXJRdWFkLnAyKCkueCgpLCBvdXRlclF1YWQucDIoKS55KCkpOwotICAgIGxheWVyLnBhdGggPSBw
YXRoOwotICAgIENHUGF0aFJlbGVhc2UocGF0aCk7CisgICAgYXV0byBwYXRoID0gYWRvcHRDRihD
R1BhdGhDcmVhdGVNdXRhYmxlKCkpOworICAgIENHUGF0aE1vdmVUb1BvaW50KHBhdGguZ2V0KCks
IDAsIGlubmVySG9sZS5wMSgpLngoKSwgaW5uZXJIb2xlLnAxKCkueSgpKTsKKyAgICBDR1BhdGhB
ZGRMaW5lVG9Qb2ludChwYXRoLmdldCgpLCAwLCBpbm5lckhvbGUucDIoKS54KCksIGlubmVySG9s
ZS5wMigpLnkoKSk7CisgICAgQ0dQYXRoQWRkTGluZVRvUG9pbnQocGF0aC5nZXQoKSwgMCwgaW5u
ZXJIb2xlLnAzKCkueCgpLCBpbm5lckhvbGUucDMoKS55KCkpOworICAgIENHUGF0aEFkZExpbmVU
b1BvaW50KHBhdGguZ2V0KCksIDAsIGlubmVySG9sZS5wNCgpLngoKSwgaW5uZXJIb2xlLnA0KCku
eSgpKTsKKyAgICBDR1BhdGhNb3ZlVG9Qb2ludChwYXRoLmdldCgpLCAwLCBvdXRlclF1YWQucDEo
KS54KCksIG91dGVyUXVhZC5wMSgpLnkoKSk7CisgICAgQ0dQYXRoQWRkTGluZVRvUG9pbnQocGF0
aC5nZXQoKSwgMCwgb3V0ZXJRdWFkLnA0KCkueCgpLCBvdXRlclF1YWQucDQoKS55KCkpOworICAg
IENHUGF0aEFkZExpbmVUb1BvaW50KHBhdGguZ2V0KCksIDAsIG91dGVyUXVhZC5wMygpLngoKSwg
b3V0ZXJRdWFkLnAzKCkueSgpKTsKKyAgICBDR1BhdGhBZGRMaW5lVG9Qb2ludChwYXRoLmdldCgp
LCAwLCBvdXRlclF1YWQucDIoKS54KCksIG91dGVyUXVhZC5wMigpLnkoKSk7CisgICAgbGF5ZXIu
cGF0aCA9IHBhdGguZ2V0KCk7CiB9CiAKIHN0YXRpYyB2b2lkIGxheWVyUGF0aChDQVNoYXBlTGF5
ZXIgKmxheWVyLCBjb25zdCBGbG9hdFF1YWQmIG91dGVyUXVhZCkKIHsKLSAgICBDR011dGFibGVQ
YXRoUmVmIHBhdGggPSBDR1BhdGhDcmVhdGVNdXRhYmxlKCk7Ci0gICAgQ0dQYXRoTW92ZVRvUG9p
bnQocGF0aCwgMCwgb3V0ZXJRdWFkLnAxKCkueCgpLCBvdXRlclF1YWQucDEoKS55KCkpOwotICAg
IENHUGF0aEFkZExpbmVUb1BvaW50KHBhdGgsIDAsIG91dGVyUXVhZC5wNCgpLngoKSwgb3V0ZXJR
dWFkLnA0KCkueSgpKTsKLSAgICBDR1BhdGhBZGRMaW5lVG9Qb2ludChwYXRoLCAwLCBvdXRlclF1
YWQucDMoKS54KCksIG91dGVyUXVhZC5wMygpLnkoKSk7Ci0gICAgQ0dQYXRoQWRkTGluZVRvUG9p
bnQocGF0aCwgMCwgb3V0ZXJRdWFkLnAyKCkueCgpLCBvdXRlclF1YWQucDIoKS55KCkpOwotICAg
IGxheWVyLnBhdGggPSBwYXRoOwotICAgIENHUGF0aFJlbGVhc2UocGF0aCk7CisgICAgYXV0byBw
YXRoID0gYWRvcHRDRihDR1BhdGhDcmVhdGVNdXRhYmxlKCkpOworICAgIENHUGF0aE1vdmVUb1Bv
aW50KHBhdGguZ2V0KCksIDAsIG91dGVyUXVhZC5wMSgpLngoKSwgb3V0ZXJRdWFkLnAxKCkueSgp
KTsKKyAgICBDR1BhdGhBZGRMaW5lVG9Qb2ludChwYXRoLmdldCgpLCAwLCBvdXRlclF1YWQucDQo
KS54KCksIG91dGVyUXVhZC5wNCgpLnkoKSk7CisgICAgQ0dQYXRoQWRkTGluZVRvUG9pbnQocGF0
aC5nZXQoKSwgMCwgb3V0ZXJRdWFkLnAzKCkueCgpLCBvdXRlclF1YWQucDMoKS55KCkpOworICAg
IENHUGF0aEFkZExpbmVUb1BvaW50KHBhdGguZ2V0KCksIDAsIG91dGVyUXVhZC5wMigpLngoKSwg
b3V0ZXJRdWFkLnAyKCkueSgpKTsKKyAgICBsYXllci5wYXRoID0gcGF0aC5nZXQoKTsKIH0KIAog
LSAodm9pZClfbGF5b3V0Rm9yTm9kZUhpZ2hsaWdodDooSW5zcGVjdG9yT3ZlcmxheTo6SGlnaGxp
Z2h0KiloaWdobGlnaHQgcGFyZW50OihDQUxheWVyICopcGFyZW50TGF5ZXIKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0gYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCmluZGV4IGI5YmU3ZDk5MDVkYWY1MGVl
OWZkNTMwOGU5N2ZmM2M5ZGVjYTllMWIuLjNhYmM2MDFiODBiYWQ0MzAzNTQyNWI0OTI5ODQ5ZjEz
ZWYxNDg3NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2Vi
RnJhbWUubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5t
bQpAQCAtMjQ2MSwxMiArMjQ2MSw5IEBAIC0gKHZvaWQpbG9hZFJlcXVlc3Q6KE5TVVJMUmVxdWVz
dCAqKXJlcXVlc3QKIAogc3RhdGljIE5TVVJMICpjcmVhdGVVbmlxdWVXZWJEYXRhVVJMKCkKIHsK
LSAgICBDRlVVSURSZWYgVVVJRFJlZiA9IENGVVVJRENyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0
KTsKLSAgICBOU1N0cmluZyAqVVVJRFN0cmluZyA9IChOU1N0cmluZyAqKUNGVVVJRENyZWF0ZVN0
cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBVVUlEUmVmKTsKLSAgICBDRlJlbGVhc2UoVVVJRFJl
Zik7Ci0gICAgTlNVUkwgKlVSTCA9IFtOU1VSTCBVUkxXaXRoU3RyaW5nOltOU1N0cmluZyBzdHJp
bmdXaXRoRm9ybWF0OkAiYXBwbGV3ZWJkYXRhOi8vJUAiLCBVVUlEU3RyaW5nXV07Ci0gICAgQ0ZS
ZWxlYXNlKFVVSURTdHJpbmcpOwotICAgIHJldHVybiBVUkw7CisgICAgYXV0byBVVUlEUmVmID0g
YWRvcHRDRihDRlVVSURDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCkpOworICAgIGF1dG8gVVVJ
RFN0cmluZyA9IGFkb3B0Q0YoQ0ZVVUlEQ3JlYXRlU3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQs
IFVVSURSZWYuZ2V0KCkpKTsKKyAgICByZXR1cm4gW05TVVJMIFVSTFdpdGhTdHJpbmc6W05TU3Ry
aW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJhcHBsZXdlYmRhdGE6Ly8lQCIsIChfX2JyaWRnZSBOU1N0
cmluZyAqKVVVSURTdHJpbmcuZ2V0KCldXTsKIH0KIAogLSAodm9pZClfbG9hZERhdGE6KE5TRGF0
YSAqKWRhdGEgTUlNRVR5cGU6KE5TU3RyaW5nICopTUlNRVR5cGUgdGV4dEVuY29kaW5nTmFtZToo
TlNTdHJpbmcgKillbmNvZGluZ05hbWUgYmFzZVVSTDooTlNVUkwgKiliYXNlVVJMIHVucmVhY2hh
YmxlVVJMOihOU1VSTCAqKXVucmVhY2hhYmxlVVJMCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJWaWV3L1dlYlZpZXcubW0KaW5kZXggNjg1NjEwYzI1ZWMyYWU1ZmQ1ZjUxM2JiOTMxNjJjNGUy
ZTYxZmI5Mi4uZTMzM2Q2ZTBmOWIzYzI1Y2JiY2RmYjliNmNhZWM0YWUxNDQyYzlkMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtODQwMyw3ICs4NDAz
LDcgQEAgKyAodm9pZClfc2V0Q2FjaGVNb2RlbDooV2ViQ2FjaGVNb2RlbCljYWNoZU1vZGVsCiAg
ICAgaWYgKHNfZGlkU2V0Q2FjaGVNb2RlbCAmJiBjYWNoZU1vZGVsID09IHNfY2FjaGVNb2RlbCkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgTlNTdHJpbmcgKm5zdXJsQ2FjaGVEaXJlY3RvcnkgPSBD
RkJyaWRnaW5nUmVsZWFzZShfQ0ZVUkxDYWNoZUNvcHlDYWNoZURpcmVjdG9yeShbW05TVVJMQ2Fj
aGUgc2hhcmVkVVJMQ2FjaGVdIF9DRlVSTENhY2hlXSkpOworICAgIE5TU3RyaW5nICpuc3VybENh
Y2hlRGlyZWN0b3J5ID0gYWRvcHRDRihfQ0ZVUkxDYWNoZUNvcHlDYWNoZURpcmVjdG9yeShbW05T
VVJMQ2FjaGUgc2hhcmVkVVJMQ2FjaGVdIF9DRlVSTENhY2hlXSkpLmJyaWRnaW5nQXV0b3JlbGVh
c2UoKTsKICAgICBpZiAoIW5zdXJsQ2FjaGVEaXJlY3RvcnkpCiAgICAgICAgIG5zdXJsQ2FjaGVE
aXJlY3RvcnkgPSBOU0hvbWVEaXJlY3RvcnkoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vQ0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWcuY3BwIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vQ0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWcuY3BwCmluZGV4IGJjOWU2NTk0ZTc3N2Jm
MDA4NjgzNjJiNzUxYzI3NTE5ZDdiZWE3M2IuLjY4MWJkOWZkZDA5ZDM0ZWJkOGQ5ZGVhNDIzZmM1
ZWEwYTU3NmM5OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NGRGljdGlv
bmFyeVByb3BlcnR5QmFnLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DRkRpY3Rp
b25hcnlQcm9wZXJ0eUJhZy5jcHAKQEAgLTE0MSwxNyArMTQxLDE3IEBAIHN0YXRpYyBib29sIENv
bnZlcnRWYXJpYW50VG9DRlR5cGUoVkFSSUFOVCogcFZhciwgdm9pZCoqIGNmT2JqKQogICAgICAg
ICAgICAgKmNmT2JqID0gKHZvaWQqKSBNYXJzaGFsbGluZ0hlbHBlcnM6OkJTVFJUb0NGU3RyaW5n
UmVmKFZfQlNUUihwVmFyKSk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfSBl
bHNlIGlmIChWX1ZUKHBWYXIpID09IFZUX0k0KSB7Ci0gICAgICAgICAgICAqY2ZPYmogPSAodm9p
ZCopIE1hcnNoYWxsaW5nSGVscGVyczo6aW50VG9DRk51bWJlclJlZihWX0k0KHBWYXIpKTsKKyAg
ICAgICAgICAgICpjZk9iaiA9ICh2b2lkKikgTWFyc2hhbGxpbmdIZWxwZXJzOjppbnRUb0NGTnVt
YmVyUmVmKFZfSTQocFZhcikpLmxlYWZSZWYoKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgICAgICB9IGVsc2UgaWYgKCEhKFZfVlQocFZhcikmVlRfQVJSQVkpKSB7CiAgICAgICAgICAg
ICBpZiAoKFZfVlQocFZhcikmflZUX0FSUkFZKSA9PSBWVF9CU1RSKSB7Ci0gICAgICAgICAgICAg
ICAgKmNmT2JqID0gKHZvaWQqKSBNYXJzaGFsbGluZ0hlbHBlcnM6OnNhZmVBcnJheVRvU3RyaW5n
QXJyYXkoVl9BUlJBWShwVmFyKSk7CisgICAgICAgICAgICAgICAgKmNmT2JqID0gKHZvaWQqKSBN
YXJzaGFsbGluZ0hlbHBlcnM6OnNhZmVBcnJheVRvU3RyaW5nQXJyYXkoVl9BUlJBWShwVmFyKSku
bGVha1JlZigpOwogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgfSBl
bHNlIGlmICgoVl9WVChwVmFyKSZ+VlRfQVJSQVkpID09IFZUX0k0KSB7Ci0gICAgICAgICAgICAg
ICAgKmNmT2JqID0gKHZvaWQqKSBNYXJzaGFsbGluZ0hlbHBlcnM6OnNhZmVBcnJheVRvSW50QXJy
YXkoVl9BUlJBWShwVmFyKSk7CisgICAgICAgICAgICAgICAgKmNmT2JqID0gKHZvaWQqKSBNYXJz
aGFsbGluZ0hlbHBlcnM6OnNhZmVBcnJheVRvSW50QXJyYXkoVl9BUlJBWShwVmFyKSkubGVha1Jl
ZigpOwogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgfSBlbHNlIGlm
ICgoVl9WVChwVmFyKSZ+VlRfQVJSQVkpID09IFZUX1VOS05PV04pIHsKLSAgICAgICAgICAgICAg
ICAqY2ZPYmogPSAodm9pZCopIE1hcnNoYWxsaW5nSGVscGVyczo6c2FmZUFycmF5VG9JVW5rbm93
bkFycmF5KFZfQVJSQVkocFZhcikpOworICAgICAgICAgICAgICAgICpjZk9iaiA9ICh2b2lkKikg
TWFyc2hhbGxpbmdIZWxwZXJzOjpzYWZlQXJyYXlUb0lVbmtub3duQXJyYXkoVl9BUlJBWShwVmFy
KSkubGVha1JlZigpOwogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAg
fQogICAgICAgICB9CkBAIC0xNjcsMTQgKzE2NywxMyBAQCBIUkVTVUxUIENGRGljdGlvbmFyeVBy
b3BlcnR5QmFnOjpSZWFkKExQQ09MRVNUUiBwc3pQcm9wTmFtZSwgVkFSSUFOVCAqcFZhciwgSUVy
cgogI2lmIFVTRShDRikKICAgICBpZiAobV9kaWN0aW9uYXJ5KSB7CiAgICAgICAgIHZvaWQqIHZh
bHVlOwotICAgICAgICBDRlN0cmluZ1JlZiBrZXkgPSBNYXJzaGFsbGluZ0hlbHBlcnM6OkxQQ09M
RVNUUlRvQ0ZTdHJpbmdSZWYocHN6UHJvcE5hbWUpOworICAgICAgICBhdXRvIGtleSA9IE1hcnNo
YWxsaW5nSGVscGVyczo6TFBDT0xFU1RSVG9DRlN0cmluZ1JlZihwc3pQcm9wTmFtZSk7CiAgICAg
ICAgIEhSRVNVTFQgaHIgPSBFX0ZBSUw7Ci0gICAgICAgIGlmIChDRkRpY3Rpb25hcnlHZXRWYWx1
ZUlmUHJlc2VudChtX2RpY3Rpb25hcnkuZ2V0KCksIGtleSwgKGNvbnN0IHZvaWQqKikgJnZhbHVl
KSkgeworICAgICAgICBpZiAoQ0ZEaWN0aW9uYXJ5R2V0VmFsdWVJZlByZXNlbnQobV9kaWN0aW9u
YXJ5LmdldCgpLCBrZXkuZ2V0KCksIChjb25zdCB2b2lkKiopICZ2YWx1ZSkpIHsKICAgICAgICAg
ICAgIGlmIChDb252ZXJ0Q0ZUeXBlVG9WYXJpYW50KHBWYXIsIHZhbHVlKSkKICAgICAgICAgICAg
ICAgICBociA9IFNfT0s7CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgaHIgPSBFX0lOVkFM
SURBUkc7Ci0gICAgICAgIENGUmVsZWFzZShrZXkpOwogICAgICAgICByZXR1cm4gaHI7CiAgICAg
fQogI2VuZGlmCkBAIC0xOTEsMTAgKzE5MCw5IEBAIEhSRVNVTFQgQ0ZEaWN0aW9uYXJ5UHJvcGVy
dHlCYWc6OldyaXRlKF9Jbl8gTFBDT0xFU1RSIHBzelByb3BOYW1lLCBfSW5fIFZBUklBTlQqCiAg
ICAgfQogICAgIHZvaWQqIGNmT2JqOwogICAgIGlmIChDb252ZXJ0VmFyaWFudFRvQ0ZUeXBlKHBW
YXIsICZjZk9iaikpIHsKLSAgICAgICAgQ0ZTdHJpbmdSZWYga2V5ID0gTWFyc2hhbGxpbmdIZWxw
ZXJzOjpMUENPTEVTVFJUb0NGU3RyaW5nUmVmKHBzelByb3BOYW1lKTsKLSAgICAgICAgQ0ZEaWN0
aW9uYXJ5QWRkVmFsdWUobV9kaWN0aW9uYXJ5LmdldCgpLCBrZXksIGNmT2JqKTsKKyAgICAgICAg
YXV0byBrZXkgPSBNYXJzaGFsbGluZ0hlbHBlcnM6OkxQQ09MRVNUUlRvQ0ZTdHJpbmdSZWYocHN6
UHJvcE5hbWUpOworICAgICAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShtX2RpY3Rpb25hcnkuZ2V0
KCksIGtleS5nZXQoKSwgY2ZPYmopOwogICAgICAgICAvLyBDRkRpY3Rpb25hcnlBZGRWYWx1ZSBz
aG91bGQgYXV0b21hdGljYWxseSByZXRhaW4gdGhlIENGIG9iamVjdHMgcGFzc2VkIGluLCBzbyBy
ZWxlYXNlIHRoZW0gaGVyZQotICAgICAgICBDRlJlbGVhc2Uoa2V5KTsKICAgICAgICAgQ0ZSZWxl
YXNlKGNmT2JqKTsKICAgICAgICAgcmV0dXJuIFNfT0s7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vTWFyc2hhbGxpbmdIZWxwZXJzLmNwcCBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL01hcnNoYWxsaW5nSGVscGVycy5jcHAKaW5kZXggMjU2MDg5MzE5MDQ1NzQ2
YTkzOTVlNWRlZDZjNmE3M2NkY2RiZjhhZS4uYWI2ZDg1YmZmNzk3YTk5YjhlOWY4YjIyYmNjZGNj
NDVkMjcwOWU3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vTWFyc2hhbGxp
bmdIZWxwZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9NYXJzaGFsbGluZ0hl
bHBlcnMuY3BwCkBAIC01MywzOSArNTMsMzMgQEAgQlNUUiBNYXJzaGFsbGluZ0hlbHBlcnM6OlVS
TFRvQlNUUihjb25zdCBVUkwmIHVybCkKIH0KIAogI2lmIFVTRShDRikKLUNGVVJMUmVmIE1hcnNo
YWxsaW5nSGVscGVyczo6UGF0aFN0cmluZ1RvRmlsZUNGVVJMUmVmKGNvbnN0IFN0cmluZyYgc3Ry
aW5nKQorUmV0YWluUHRyPENGVVJMUmVmPiBNYXJzaGFsbGluZ0hlbHBlcnM6OlBhdGhTdHJpbmdU
b0ZpbGVDRlVSTFJlZihjb25zdCBTdHJpbmcmIHN0cmluZykKIHsKLSAgICByZXR1cm4gQ0ZVUkxD
cmVhdGVXaXRoRmlsZVN5c3RlbVBhdGgoMCwgc3RyaW5nLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCks
IGtDRlVSTFdpbmRvd3NQYXRoU3R5bGUsIGZhbHNlKTsKKyAgICByZXR1cm4gYWRvcHRDRihDRlVS
TENyZWF0ZVdpdGhGaWxlU3lzdGVtUGF0aCgwLCBzdHJpbmcuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQo
KSwga0NGVVJMV2luZG93c1BhdGhTdHlsZSwgZmFsc2UpKTsKIH0KIAogU3RyaW5nIE1hcnNoYWxs
aW5nSGVscGVyczo6RmlsZUNGVVJMUmVmVG9QYXRoU3RyaW5nKENGVVJMUmVmIGZpbGVVUkwpCiB7
Ci0gICAgQ0ZTdHJpbmdSZWYgc3RyaW5nID0gQ0ZVUkxDb3B5RmlsZVN5c3RlbVBhdGgoZmlsZVVS
TCwga0NGVVJMV2luZG93c1BhdGhTdHlsZSk7Ci0gICAgU3RyaW5nIHJlc3VsdChzdHJpbmcpOwot
ICAgIENGUmVsZWFzZShzdHJpbmcpOwotICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJuIGFk
b3B0Q0YoQ0ZVUkxDb3B5RmlsZVN5c3RlbVBhdGgoZmlsZVVSTCwga0NGVVJMV2luZG93c1BhdGhT
dHlsZSkpLmdldCgpOwogfQogCi1DRlVSTFJlZiBNYXJzaGFsbGluZ0hlbHBlcnM6OkJTVFJUb0NG
VVJMUmVmKEJTVFIgdXJsU3RyKQorUmV0YWluUHRyPENGVVJMUmVmPiBNYXJzaGFsbGluZ0hlbHBl
cnM6OkJTVFJUb0NGVVJMUmVmKEJTVFIgdXJsU3RyKQogewotICAgIENGU3RyaW5nUmVmIHVybENG
U3RyaW5nID0gQlNUUlRvQ0ZTdHJpbmdSZWYodXJsU3RyKTsKKyAgICBhdXRvIHVybENGU3RyaW5n
ID0gQlNUUlRvQ0ZTdHJpbmdSZWYodXJsU3RyKTsKICAgICBpZiAoIXVybENGU3RyaW5nKQotICAg
ICAgICByZXR1cm4gMDsKLQotICAgIENGVVJMUmVmIHVybFJlZiA9IENGVVJMQ3JlYXRlV2l0aFN0
cmluZygwLCB1cmxDRlN0cmluZywgMCk7Ci0gICAgQ0ZSZWxlYXNlKHVybENGU3RyaW5nKTsKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gdXJsUmVmOworICAgIHJldHVybiBh
ZG9wdENGKENGVVJMQ3JlYXRlV2l0aFN0cmluZyhudWxscHRyLCB1cmxDRlN0cmluZy5nZXQoKSwg
bnVsbHB0cikpOwogfQogCi1DRlN0cmluZ1JlZiBNYXJzaGFsbGluZ0hlbHBlcnM6OkJTVFJUb0NG
U3RyaW5nUmVmKEJTVFIgc3RyKQorUmV0YWluUHRyPENGU3RyaW5nUmVmPiBNYXJzaGFsbGluZ0hl
bHBlcnM6OkJTVFJUb0NGU3RyaW5nUmVmKEJTVFIgc3RyKQogewotICAgIHJldHVybiBDRlN0cmlu
Z0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKDAsIChjb25zdCBVbmlDaGFyKikoc3RyID8gc3RyIDogVEVY
VCgiIikpLCBTeXNTdHJpbmdMZW4oc3RyKSk7CisgICAgcmV0dXJuIGFkb3B0Q0YoQ0ZTdHJpbmdD
cmVhdGVXaXRoQ2hhcmFjdGVycygwLCAoY29uc3QgVW5pQ2hhciopKHN0ciA/IHN0ciA6IFRFWFQo
IiIpKSwgU3lzU3RyaW5nTGVuKHN0cikpKTsKIH0KIAotQ0ZTdHJpbmdSZWYgTWFyc2hhbGxpbmdI
ZWxwZXJzOjpMUENPTEVTVFJUb0NGU3RyaW5nUmVmKExQQ09MRVNUUiBzdHIpCitSZXRhaW5QdHI8
Q0ZTdHJpbmdSZWY+IE1hcnNoYWxsaW5nSGVscGVyczo6TFBDT0xFU1RSVG9DRlN0cmluZ1JlZihM
UENPTEVTVFIgc3RyKQogewotICAgIHJldHVybiBDRlN0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJz
KDAsIChjb25zdCBVbmlDaGFyKikoc3RyID8gc3RyIDogVEVYVCgiIikpLCAoQ0ZJbmRleCkoc3Ry
ID8gd2NzbGVuKHN0cikgOiAwKSk7CisgICAgcmV0dXJuIGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVX
aXRoQ2hhcmFjdGVycygwLCAoY29uc3QgVW5pQ2hhciopKHN0ciA/IHN0ciA6IFRFWFQoIiIpKSwg
KENGSW5kZXgpKHN0ciA/IHdjc2xlbihzdHIpIDogMCkpKTsKIH0KIAogQlNUUiBNYXJzaGFsbGlu
Z0hlbHBlcnM6OkNGU3RyaW5nUmVmVG9CU1RSKENGU3RyaW5nUmVmIHN0cikKQEAgLTEwMCw5ICs5
NCw5IEBAIGludCBNYXJzaGFsbGluZ0hlbHBlcnM6OkNGTnVtYmVyUmVmVG9JbnQoQ0ZOdW1iZXJS
ZWYgbnVtKQogICAgIHJldHVybiBudW1iZXI7CiB9CiAKLUNGTnVtYmVyUmVmIE1hcnNoYWxsaW5n
SGVscGVyczo6aW50VG9DRk51bWJlclJlZihpbnQgbnVtKQorUmV0YWluUHRyPENGTnVtYmVyUmVm
PiBNYXJzaGFsbGluZ0hlbHBlcnM6OmludFRvQ0ZOdW1iZXJSZWYoaW50IG51bSkKIHsKLSAgICBy
ZXR1cm4gQ0ZOdW1iZXJDcmVhdGUoMCwga0NGTnVtYmVyU0ludDMyVHlwZSwgJm51bSk7CisgICAg
cmV0dXJuIGFkb3B0Q0YoQ0ZOdW1iZXJDcmVhdGUoMCwga0NGTnVtYmVyU0ludDMyVHlwZSwgJm51
bSkpOwogfQogI2VuZGlmCiAKQEAgLTI0NCw3ICsyMzgsNyBAQCBTQUZFQVJSQVkqIE1hcnNoYWxs
aW5nSGVscGVyczo6aXVua25vd25BcnJheVRvU2FmZUFycmF5KENGQXJyYXlSZWYgaW5BcnJheSkK
ICAgICByZXR1cm4gc2E7CiB9CiAKLUNGQXJyYXlSZWYgTWFyc2hhbGxpbmdIZWxwZXJzOjpzYWZl
QXJyYXlUb1N0cmluZ0FycmF5KFNBRkVBUlJBWSogaW5BcnJheSkKK1JldGFpblB0cjxDRkFycmF5
UmVmPiBNYXJzaGFsbGluZ0hlbHBlcnM6OnNhZmVBcnJheVRvU3RyaW5nQXJyYXkoU0FGRUFSUkFZ
KiBpbkFycmF5KQogewogICAgIGxvbmcgbEJvdW5kPTAsIHVCb3VuZD0tMTsKICAgICBIUkVTVUxU
IGhyID0gOjpTYWZlQXJyYXlHZXRMQm91bmQoaW5BcnJheSwgMSwgJmxCb3VuZCk7CkBAIC0yNTcs
MTQgKzI1MSwxMyBAQCBDRkFycmF5UmVmIE1hcnNoYWxsaW5nSGVscGVyczo6c2FmZUFycmF5VG9T
dHJpbmdBcnJheShTQUZFQVJSQVkqIGluQXJyYXkpCiAgICAgICAgIGZvciAoOyBsQm91bmQgPD0g
dUJvdW5kOyBsQm91bmQrKykgewogICAgICAgICAgICAgQlN0cmluZyBzdHI7CiAgICAgICAgICAg
ICBociA9IDo6U2FmZUFycmF5R2V0RWxlbWVudChpbkFycmF5LCAmbEJvdW5kLCAmc3RyKTsKLSAg
ICAgICAgICAgIGl0ZW1zW2xCb3VuZF0gPSBCU1RSVG9DRlN0cmluZ1JlZihzdHIpOworICAgICAg
ICAgICAgaXRlbXNbbEJvdW5kXSA9IEJTVFJUb0NGU3RyaW5nUmVmKHN0cikubGVha1JlZigpOwog
ICAgICAgICB9CiAgICAgfQotICAgIENGQXJyYXlSZWYgcmVzdWx0ID0gQ0ZBcnJheUNyZWF0ZSgw
LCAoY29uc3Qgdm9pZCoqKWl0ZW1zLmRhdGEoKSwgbGVuLCAma0NGVHlwZUFycmF5Q2FsbEJhY2tz
KTsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiBhZG9wdENGKENGQXJyYXlDcmVhdGUo
MCwgKGNvbnN0IHZvaWQqKilpdGVtcy5kYXRhKCksIGxlbiwgJmtDRlR5cGVBcnJheUNhbGxCYWNr
cykpOwogfQogCi1DRkFycmF5UmVmIE1hcnNoYWxsaW5nSGVscGVyczo6c2FmZUFycmF5VG9JbnRB
cnJheShTQUZFQVJSQVkqIGluQXJyYXkpCitSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gTWFyc2hhbGxp
bmdIZWxwZXJzOjpzYWZlQXJyYXlUb0ludEFycmF5KFNBRkVBUlJBWSogaW5BcnJheSkKIHsKICAg
ICBsb25nIGxCb3VuZD0wLCB1Qm91bmQ9LTE7CiAgICAgSFJFU1VMVCBociA9IDo6U2FmZUFycmF5
R2V0TEJvdW5kKGluQXJyYXksIDEsICZsQm91bmQpOwpAQCAtMjc3LDE0ICsyNzAsMTMgQEAgQ0ZB
cnJheVJlZiBNYXJzaGFsbGluZ0hlbHBlcnM6OnNhZmVBcnJheVRvSW50QXJyYXkoU0FGRUFSUkFZ
KiBpbkFycmF5KQogICAgICAgICBmb3IgKDsgbEJvdW5kIDw9IHVCb3VuZDsgbEJvdW5kKyspIHsK
ICAgICAgICAgICAgIGludCBudW0gPSAwOwogICAgICAgICAgICAgaHIgPSA6OlNhZmVBcnJheUdl
dEVsZW1lbnQoaW5BcnJheSwgJmxCb3VuZCwgJm51bSk7Ci0gICAgICAgICAgICBpdGVtc1tsQm91
bmRdID0gU1VDQ0VFREVEKGhyKSA/IGludFRvQ0ZOdW1iZXJSZWYobnVtKSA6IGtDRk51bWJlck5h
TjsKKyAgICAgICAgICAgIGl0ZW1zW2xCb3VuZF0gPSBTVUNDRUVERUQoaHIpID8gaW50VG9DRk51
bWJlclJlZihudW0pLmxlYWtSZWYoKSA6IGtDRk51bWJlck5hTjsKICAgICAgICAgfQogICAgIH0K
LSAgICBDRkFycmF5UmVmIHJlc3VsdCA9IENGQXJyYXlDcmVhdGUoMCwgKGNvbnN0IHZvaWQqKilp
dGVtcy5kYXRhKCksIGxlbiwgJmtDRlR5cGVBcnJheUNhbGxCYWNrcyk7Ci0gICAgcmV0dXJuIHJl
c3VsdDsKKyAgICByZXR1cm4gYWRvcHRDRihDRkFycmF5Q3JlYXRlKDAsIChjb25zdCB2b2lkKiop
aXRlbXMuZGF0YSgpLCBsZW4sICZrQ0ZUeXBlQXJyYXlDYWxsQmFja3MpKTsKIH0KIAotQ0ZBcnJh
eVJlZiBNYXJzaGFsbGluZ0hlbHBlcnM6OnNhZmVBcnJheVRvSVVua25vd25BcnJheShTQUZFQVJS
QVkqIGluQXJyYXkpCitSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gTWFyc2hhbGxpbmdIZWxwZXJzOjpz
YWZlQXJyYXlUb0lVbmtub3duQXJyYXkoU0FGRUFSUkFZKiBpbkFycmF5KQogewogICAgIGxvbmcg
bEJvdW5kPTAsIHVCb3VuZD0tMTsKICAgICBIUkVTVUxUIGhyID0gOjpTYWZlQXJyYXlHZXRMQm91
bmQoaW5BcnJheSwgMSwgJmxCb3VuZCk7CkBAIC0yOTMsNyArMjg1LDcgQEAgQ0ZBcnJheVJlZiBN
YXJzaGFsbGluZ0hlbHBlcnM6OnNhZmVBcnJheVRvSVVua25vd25BcnJheShTQUZFQVJSQVkqIGlu
QXJyYXkpCiAgICAgbG9uZyBsZW4gPSAoU1VDQ0VFREVEKGhyKSkgPyAodUJvdW5kLWxCb3VuZCsx
KSA6IDA7CiAgICAgdm9pZCogaXRlbXMgPSBudWxscHRyOwogICAgIGhyID0gOjpTYWZlQXJyYXlB
Y2Nlc3NEYXRhKGluQXJyYXksICZpdGVtcyk7Ci0gICAgQ0ZBcnJheVJlZiByZXN1bHQgPSBTVUND
RUVERUQoaHIpID8gQ0ZBcnJheUNyZWF0ZSgwLCAoY29uc3Qgdm9pZCoqKSBpdGVtcywgbGVuLCAm
a0lVbmtub3duQXJyYXlDYWxsQmFja3MpIDogbnVsbHB0cjsKKyAgICBhdXRvIHJlc3VsdCA9IFNV
Q0NFRURFRChocikgPyBhZG9wdENGKENGQXJyYXlDcmVhdGUoMCwgKGNvbnN0IHZvaWQqKikgaXRl
bXMsIGxlbiwgJmtJVW5rbm93bkFycmF5Q2FsbEJhY2tzKSkgOiBudWxscHRyOwogICAgIGhyID0g
OjpTYWZlQXJyYXlVbmFjY2Vzc0RhdGEoaW5BcnJheSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01hcnNoYWxsaW5nSGVscGVycy5o
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vTWFyc2hhbGxpbmdIZWxwZXJzLmgKaW5kZXggMmM0
ODYwMzZhMGNjNzAxNWM2MDhjOGEwN2E2ZDAxNWQ0MTc5MTE1NC4uOTQxYTQyODk4MTQxYWU1OTAz
MzUxMDMwYzRlMjljODMzNjQ4YjJjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vTWFyc2hhbGxpbmdIZWxwZXJzLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vTWFy
c2hhbGxpbmdIZWxwZXJzLmgKQEAgLTI5LDYgKzI5LDcgQEAKIAogI2lmIFVTRShDRikKICNpbmNs
dWRlIDxDb3JlRm91bmRhdGlvbi9Db3JlRm91bmRhdGlvbi5oPgorI2luY2x1ZGUgPHd0Zi9SZXRh
aW5QdHIuaD4KICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00MiwxNCArNDMsMTQg
QEAgcHVibGljOgogICAgIHN0YXRpYyBCU1RSIFVSTFRvQlNUUihjb25zdCBVUkwmKTsKIAogI2lm
IFVTRShDRikKLSAgICBzdGF0aWMgQ0ZVUkxSZWYgUGF0aFN0cmluZ1RvRmlsZUNGVVJMUmVmKGNv
bnN0IFdURjo6U3RyaW5nJik7CisgICAgc3RhdGljIFJldGFpblB0cjxDRlVSTFJlZj4gUGF0aFN0
cmluZ1RvRmlsZUNGVVJMUmVmKGNvbnN0IFdURjo6U3RyaW5nJik7CiAgICAgc3RhdGljIFdURjo6
U3RyaW5nIEZpbGVDRlVSTFJlZlRvUGF0aFN0cmluZyhDRlVSTFJlZiBmaWxlVVJMKTsKLSAgICBz
dGF0aWMgQ0ZVUkxSZWYgQlNUUlRvQ0ZVUkxSZWYoQlNUUik7Ci0gICAgc3RhdGljIENGU3RyaW5n
UmVmIEJTVFJUb0NGU3RyaW5nUmVmKEJTVFIpOwotICAgIHN0YXRpYyBDRlN0cmluZ1JlZiBMUENP
TEVTVFJUb0NGU3RyaW5nUmVmKExQQ09MRVNUUik7CisgICAgc3RhdGljIFJldGFpblB0cjxDRlVS
TFJlZj4gQlNUUlRvQ0ZVUkxSZWYoQlNUUik7CisgICAgc3RhdGljIFJldGFpblB0cjxDRlN0cmlu
Z1JlZj4gQlNUUlRvQ0ZTdHJpbmdSZWYoQlNUUik7CisgICAgc3RhdGljIFJldGFpblB0cjxDRlN0
cmluZ1JlZj4gTFBDT0xFU1RSVG9DRlN0cmluZ1JlZihMUENPTEVTVFIpOwogICAgIHN0YXRpYyBC
U1RSIENGU3RyaW5nUmVmVG9CU1RSKENGU3RyaW5nUmVmKTsKICAgICBzdGF0aWMgaW50IENGTnVt
YmVyUmVmVG9JbnQoQ0ZOdW1iZXJSZWYpOwotICAgIHN0YXRpYyBDRk51bWJlclJlZiBpbnRUb0NG
TnVtYmVyUmVmKGludCk7CisgICAgc3RhdGljIFJldGFpblB0cjxDRk51bWJlclJlZj4gaW50VG9D
Rk51bWJlclJlZihpbnQpOwogICAgIHN0YXRpYyBDRkFic29sdXRlVGltZSBEQVRFVG9DRkFic29s
dXRlVGltZShEQVRFKTsKICAgICBzdGF0aWMgREFURSBDRkFic29sdXRlVGltZVRvREFURShDRkFi
c29sdXRlVGltZSk7CiAgICAgc3RhdGljIFNBRkVBUlJBWSogc3RyaW5nQXJyYXlUb1NhZmVBcnJh
eShDRkFycmF5UmVmKTsKQEAgLTYzLDkgKzY0LDkgQEAgcHVibGljOgogCiAjaWYgVVNFKENGKQog
ICAgIHN0YXRpYyBTQUZFQVJSQVkqIGl1bmtub3duQXJyYXlUb1NhZmVBcnJheShDRkFycmF5UmVm
KTsKLSAgICBzdGF0aWMgQ0ZBcnJheVJlZiBzYWZlQXJyYXlUb1N0cmluZ0FycmF5KFNBRkVBUlJB
WSopOwotICAgIHN0YXRpYyBDRkFycmF5UmVmIHNhZmVBcnJheVRvSW50QXJyYXkoU0FGRUFSUkFZ
Kik7Ci0gICAgc3RhdGljIENGQXJyYXlSZWYgc2FmZUFycmF5VG9JVW5rbm93bkFycmF5KFNBRkVB
UlJBWSopOworICAgIHN0YXRpYyBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gc2FmZUFycmF5VG9TdHJp
bmdBcnJheShTQUZFQVJSQVkqKTsKKyAgICBzdGF0aWMgUmV0YWluUHRyPENGQXJyYXlSZWY+IHNh
ZmVBcnJheVRvSW50QXJyYXkoU0FGRUFSUkFZKik7CisgICAgc3RhdGljIFJldGFpblB0cjxDRkFy
cmF5UmVmPiBzYWZlQXJyYXlUb0lVbmtub3duQXJyYXkoU0FGRUFSUkFZKik7CiAgICAgc3RhdGlj
IGNvbnN0IHZvaWQqIElVbmtub3duUmV0YWluQ2FsbGJhY2soQ0ZBbGxvY2F0b3JSZWYsIGNvbnN0
IHZvaWQqKTsKICAgICBzdGF0aWMgdm9pZCBJVW5rbm93blJlbGVhc2VDYWxsYmFjayhDRkFsbG9j
YXRvclJlZiwgY29uc3Qgdm9pZCopOwogICAgIHN0YXRpYyBDRkFycmF5Q2FsbEJhY2tzIGtJVW5r
bm93bkFycmF5Q2FsbEJhY2tzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViQXBwbGljYXRpb25DYWNoZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJBcHBs
aWNhdGlvbkNhY2hlLmNwcAppbmRleCBkZTEyNTBlY2RlOTc2YTYyZjIyNThjN2RjNzRmNmU4ZWMz
NzRiMmM4Li4wOGRkNDAxZWI3M2Q4NWUwZjNjZTVmMjM2YzljMDZmZjZhNGQ2YzU5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJBcHBsaWNhdGlvbkNhY2hlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJBcHBsaWNhdGlvbkNhY2hlLmNwcApAQCAtMjAw
LDcgKzIwMCw3IEBAIEhSRVNVTFQgV2ViQXBwbGljYXRpb25DYWNoZTo6b3JpZ2luc1dpdGhDYWNo
ZShJUHJvcGVydHlCYWcqKiBvcmlnaW5zKQogICAgIFJldGFpblB0cjxDRk11dGFibGVEaWN0aW9u
YXJ5UmVmPiBkaWN0aW9uYXJ5ID0gYWRvcHRDRigKICAgICAgICAgQ0ZEaWN0aW9uYXJ5Q3JlYXRl
TXV0YWJsZSgwLCAwLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGlj
dGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7CiAKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGtl
eSA9IGFkb3B0Q0YoTWFyc2hhbGxpbmdIZWxwZXJzOjpCU1RSVG9DRlN0cmluZ1JlZihfYnN0cl90
KEwib3JpZ2lucyIpKSk7CisgICAgYXV0byBrZXkgPSBNYXJzaGFsbGluZ0hlbHBlcnM6OkJTVFJU
b0NGU3RyaW5nUmVmKF9ic3RyX3QoTCJvcmlnaW5zIikpOwogICAgIENGRGljdGlvbmFyeUFkZFZh
bHVlKGRpY3Rpb25hcnkuZ2V0KCksIGtleS5nZXQoKSwgYXJyYXlJdGVtLmdldCgpKTsKIAogICAg
IENPTVB0cjxDRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZz4gcmVzdWx0ID0gQ0ZEaWN0aW9uYXJ5UHJv
cGVydHlCYWc6OmNyZWF0ZUluc3RhbmNlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAK
aW5kZXggOWI4NmFhNDVhZDQzOWY0ZmI5YjgyZDQxNDMwNzFkNWRiY2YzODI2My4uMGU2NjkwODI3
ZjgwYWIxN2UzZTMwYjdlMmE4OTI1ZDEzN2M2NmQzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50LmNwcApAQCAtMTAzOCwyMSArMTAzOCwyMSBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50
OjpkaXNwYXRjaERpZEZhaWxUb1N0YXJ0UGx1Z2luKGNvbnN0IFBsdWdpblZpZXcmIHBsdWdpbgog
ICAgIGlmICghcGx1Z2luVmlldy5wbHVnaW5zUGFnZSgpLmlzTnVsbCgpKSB7CiAgICAgICAgIFVS
TCBwbHVnaW5QYWdlVVJMID0gZnJhbWUtPmRvY3VtZW50KCktPmNvbXBsZXRlVVJMKHN0cmlwTGVh
ZGluZ0FuZFRyYWlsaW5nSFRNTFNwYWNlcyhwbHVnaW5WaWV3LnBsdWdpbnNQYWdlKCkpKTsKICAg
ICAgICAgaWYgKHBsdWdpblBhZ2VVUkwucHJvdG9jb2xJc0luSFRUUEZhbWlseSgpKSB7Ci0gICAg
ICAgICAgICBzdGF0aWMgQ0ZTdHJpbmdSZWYga2V5ID0gTWFyc2hhbGxpbmdIZWxwZXJzOjpMUENP
TEVTVFJUb0NGU3RyaW5nUmVmKFdlYktpdEVycm9yUGx1Z0luUGFnZVVSTFN0cmluZ0tleSk7Ci0g
ICAgICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZSh1c2VySW5mby5nZXQoKSwga2V5LCBwbHVn
aW5QYWdlVVJMLnN0cmluZygpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOworICAgICAgICAgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxDRlN0cmluZ1JlZj4+IGtleSA9IE1hcnNo
YWxsaW5nSGVscGVyczo6TFBDT0xFU1RSVG9DRlN0cmluZ1JlZihXZWJLaXRFcnJvclBsdWdJblBh
Z2VVUkxTdHJpbmdLZXkpOworICAgICAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUodXNlcklu
Zm8uZ2V0KCksIGtleS5nZXQoKS5nZXQoKSwgcGx1Z2luUGFnZVVSTC5zdHJpbmcoKS5jcmVhdGVD
RlN0cmluZygpLmdldCgpKTsKICAgICAgICAgfQogICAgIH0KIAogICAgIGlmICghcGx1Z2luVmll
dy5taW1lVHlwZSgpLmlzTnVsbCgpKSB7Ci0gICAgICAgIHN0YXRpYyBDRlN0cmluZ1JlZiBrZXkg
PSBNYXJzaGFsbGluZ0hlbHBlcnM6OkxQQ09MRVNUUlRvQ0ZTdHJpbmdSZWYoV2ViS2l0RXJyb3JN
SU1FVHlwZUtleSk7Ci0gICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHVzZXJJbmZvLmdldCgp
LCBrZXksIHBsdWdpblZpZXcubWltZVR5cGUoKS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKKyAg
ICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxDRlN0cmluZ1JlZj4+IGtleSA9
IE1hcnNoYWxsaW5nSGVscGVyczo6TFBDT0xFU1RSVG9DRlN0cmluZ1JlZihXZWJLaXRFcnJvck1J
TUVUeXBlS2V5KTsKKyAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUodXNlckluZm8uZ2V0KCks
IGtleS5nZXQoKS5nZXQoKSwgcGx1Z2luVmlldy5taW1lVHlwZSgpLmNyZWF0ZUNGU3RyaW5nKCku
Z2V0KCkpOwogICAgIH0KIAogICAgIGlmIChwbHVnaW5WaWV3LnBsdWdpbigpKSB7CiAgICAgICAg
IFN0cmluZyBwbHVnaW5OYW1lID0gcGx1Z2luVmlldy5wbHVnaW4oKS0+bmFtZSgpOwogICAgICAg
ICBpZiAoIXBsdWdpbk5hbWUuaXNOdWxsKCkpIHsKLSAgICAgICAgICAgIHN0YXRpYyBDRlN0cmlu
Z1JlZiBrZXkgPSBNYXJzaGFsbGluZ0hlbHBlcnM6OkxQQ09MRVNUUlRvQ0ZTdHJpbmdSZWYoV2Vi
S2l0RXJyb3JQbHVnSW5OYW1lS2V5KTsKLSAgICAgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVl
KHVzZXJJbmZvLmdldCgpLCBrZXksIHBsdWdpbk5hbWUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7
CisgICAgICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPENGU3RyaW5nUmVm
Pj4ga2V5ID0gTWFyc2hhbGxpbmdIZWxwZXJzOjpMUENPTEVTVFJUb0NGU3RyaW5nUmVmKFdlYktp
dEVycm9yUGx1Z0luTmFtZUtleSk7CisgICAgICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZSh1
c2VySW5mby5nZXQoKSwga2V5LmdldCgpLmdldCgpLCBwbHVnaW5OYW1lLmNyZWF0ZUNGU3RyaW5n
KCkuZ2V0KCkpOwogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJEb3dubG9hZENGTmV0LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkRvd25sb2FkQ0ZOZXQuY3BwCmluZGV4IGEzMzNhMmY2Mjc2N2ViYmFlYzNjODNiNmIwNzZm
MGMzNWQwM2Q1MGMuLmVhMGI2NzUxYzU1NGU4MjdkYzk4MjU1Y2Q0YTcxNTdmMWQ1YWQyYjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRvd25sb2FkQ0ZOZXQuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRvd25sb2FkQ0ZOZXQuY3BwCkBAIC0xNzgs
NyArMTc4LDcgQEAgSFJFU1VMVCBXZWJEb3dubG9hZDo6aW5pdFRvUmVzdW1lV2l0aEJ1bmRsZShf
SW5fIEJTVFIgYnVuZGxlUGF0aCwgX0luX29wdF8gSVdlYkQKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBkaWRSZWNlaXZlUmVzcG9uc2VDYWxsYmFjaywgd2lsbFJlc3VtZVdpdGhS
ZXNwb25zZUNhbGxiYWNrLCBkaWRSZWNlaXZlRGF0YUNhbGxiYWNrLCBzaG91bGREZWNvZGVEYXRh
T2ZNSU1FVHlwZUNhbGxiYWNrLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBk
ZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRPYmplY3ROYW1lQ2FsbGJhY2ssIGRpZENyZWF0
ZURlc3RpbmF0aW9uQ2FsbGJhY2ssIGRpZEZpbmlzaENhbGxiYWNrLCBkaWRGYWlsQ2FsbGJhY2t9
OwogICAgIAotICAgIFJldGFpblB0cjxDRlVSTFJlZj4gcGF0aFVSTCA9IGFkb3B0Q0YoTWFyc2hh
bGxpbmdIZWxwZXJzOjpQYXRoU3RyaW5nVG9GaWxlQ0ZVUkxSZWYoU3RyaW5nKGJ1bmRsZVBhdGgs
IFN5c1N0cmluZ0xlbihidW5kbGVQYXRoKSkpKTsKKyAgICBhdXRvIHBhdGhVUkwgPSBNYXJzaGFs
bGluZ0hlbHBlcnM6OlBhdGhTdHJpbmdUb0ZpbGVDRlVSTFJlZihTdHJpbmcoYnVuZGxlUGF0aCwg
U3lzU3RyaW5nTGVuKGJ1bmRsZVBhdGgpKSk7CiAgICAgQVNTRVJUKHBhdGhVUkwpOwogCiAgICAg
bV9kb3dubG9hZCA9IGFkb3B0Q0YoQ0ZVUkxEb3dubG9hZENyZWF0ZVdpdGhSZXN1bWVEYXRhKDAs
IHJlc3VtZURhdGEuZ2V0KCksIHBhdGhVUkwuZ2V0KCksICZjbGllbnQpKTsKQEAgLTI4OCw5ICsy
ODgsOCBAQCBIUkVTVUxUIFdlYkRvd25sb2FkOjpzZXREZXN0aW5hdGlvbihfSW5fIEJTVFIgcGF0
aCwgQk9PTCBhbGxvd092ZXJ3cml0ZSkKICAgICBtX2Rlc3RpbmF0aW9uID0gU3RyaW5nKHBhdGgs
IFN5c1N0cmluZ0xlbihwYXRoKSk7CiAgICAgbV9idW5kbGVQYXRoID0gbV9kZXN0aW5hdGlvbiAr
IERvd25sb2FkQnVuZGxlOjpmaWxlRXh0ZW5zaW9uKCk7CiAKLSAgICBDRlVSTFJlZiBwYXRoVVJM
ID0gTWFyc2hhbGxpbmdIZWxwZXJzOjpQYXRoU3RyaW5nVG9GaWxlQ0ZVUkxSZWYobV9idW5kbGVQ
YXRoKTsKLSAgICBDRlVSTERvd25sb2FkU2V0RGVzdGluYXRpb24obV9kb3dubG9hZC5nZXQoKSwg
cGF0aFVSTCwgISFhbGxvd092ZXJ3cml0ZSk7Ci0gICAgQ0ZSZWxlYXNlKHBhdGhVUkwpOworICAg
IGF1dG8gcGF0aFVSTCA9IE1hcnNoYWxsaW5nSGVscGVyczo6UGF0aFN0cmluZ1RvRmlsZUNGVVJM
UmVmKG1fYnVuZGxlUGF0aCk7CisgICAgQ0ZVUkxEb3dubG9hZFNldERlc3RpbmF0aW9uKG1fZG93
bmxvYWQuZ2V0KCksIHBhdGhVUkwuZ2V0KCksICEhYWxsb3dPdmVyd3JpdGUpOwogCiAgICAgTE9H
KERvd25sb2FkLCAiV2ViRG93bmxvYWQgLSBTZXQgZGVzdGluYXRpb24gdG8gJXMiLCBtX2J1bmRs
ZVBhdGguYXNjaWkoKS5kYXRhKCkpOwogCkBAIC0zNjgsOSArMzY3LDcgQEAgQ0ZVUkxSZXF1ZXN0
UmVmIFdlYkRvd25sb2FkOjp3aWxsU2VuZFJlcXVlc3QoQ0ZVUkxSZXF1ZXN0UmVmIHJlcXVlc3Qs
IENGVVJMUmVzcG8KIAogICAgIENPTVB0cjxXZWJNdXRhYmxlVVJMUmVxdWVzdD4gZmluYWxXZWJS
ZXF1ZXN0KEFkb3B0Q09NLCBXZWJNdXRhYmxlVVJMUmVxdWVzdDo6Y3JlYXRlSW5zdGFuY2UoZmlu
YWxSZXF1ZXN0LmdldCgpKSk7CiAgICAgbV9yZXF1ZXN0ID0gZmluYWxXZWJSZXF1ZXN0LmdldCgp
OwotICAgIENGVVJMUmVxdWVzdFJlZiByZXN1bHQgPSBmaW5hbFdlYlJlcXVlc3QtPnJlc291cmNl
UmVxdWVzdCgpLmNmVVJMUmVxdWVzdChVcGRhdGVIVFRQQm9keSk7Ci0gICAgQ0ZSZXRhaW4ocmVz
dWx0KTsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiByZXRhaW5QdHIoZmluYWxXZWJS
ZXF1ZXN0LT5yZXNvdXJjZVJlcXVlc3QoKS5jZlVSTFJlcXVlc3QoVXBkYXRlSFRUUEJvZHkpKS5s
ZWFrUmVmKCk7CiB9CiAKIHZvaWQgV2ViRG93bmxvYWQ6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZShDRlVSTEF1dGhDaGFsbGVuZ2VSZWYgY2hhbGxlbmdlKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSGlzdG9yeS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJIaXN0b3J5LmNwcAppbmRleCA2MWMwMjZiN2FlMDBkODI4YjAyZGVjM2VhM2U0
YjRkNzkwODhhYTExLi45ZWZhZTIyNzkzYzcwZDA4NjI4Y2M5Y2VjZTkyM2ViYzRjMjk3ZGY1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJIaXN0b3J5LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJIaXN0b3J5LmNwcApAQCAtNjEsNyArNjEsNyBAQCBz
dGF0aWMgQ09NUHRyPElQcm9wZXJ0eUJhZz4gY3JlYXRlVXNlckluZm9Gcm9tQXJyYXkoQlNUUiBu
b3RpZmljYXRpb25TdHIsIElXZWJIaQogICAgIFJldGFpblB0cjxDRk11dGFibGVEaWN0aW9uYXJ5
UmVmPiBkaWN0aW9uYXJ5ID0gYWRvcHRDRigKICAgICAgICAgQ0ZEaWN0aW9uYXJ5Q3JlYXRlTXV0
YWJsZSgwLCAwLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlv
bmFyeVZhbHVlQ2FsbEJhY2tzKSk7CiAKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGtleSA9
IGFkb3B0Q0YoTWFyc2hhbGxpbmdIZWxwZXJzOjpCU1RSVG9DRlN0cmluZ1JlZihub3RpZmljYXRp
b25TdHIpKTsKKyAgICBhdXRvIGtleSA9IE1hcnNoYWxsaW5nSGVscGVyczo6QlNUUlRvQ0ZTdHJp
bmdSZWYobm90aWZpY2F0aW9uU3RyKTsKICAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkaWN0aW9u
YXJ5LmdldCgpLCBrZXkuZ2V0KCksIGFycmF5SXRlbS5nZXQoKSk7CiAKICAgICBDT01QdHI8Q0ZE
aWN0aW9uYXJ5UHJvcGVydHlCYWc+IHJlc3VsdCA9IENGRGljdGlvbmFyeVByb3BlcnR5QmFnOjpj
cmVhdGVJbnN0YW5jZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
TG9jYWxpemFibGVTdHJpbmdzLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkxvY2Fs
aXphYmxlU3RyaW5ncy5jcHAKaW5kZXggZmM4MGZlOTZmMjk0MjZkZmUxNWZlZGQ1MmI1NGM1NDRl
ZDVkZTBmYS4uZTU4ZDFiOTZlNjA3NTc1MzEzNjIwNDU4YzIxMTE4OGE1ZTk5ZTMyOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTG9jYWxpemFibGVTdHJpbmdzLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJMb2NhbGl6YWJsZVN0cmluZ3MuY3BwCkBA
IC05NSwxOSArOTUsMTkgQEAgTG9jYWxpemVkU3RyaW5nOjpvcGVyYXRvciBMUENUU1RSKCkgY29u
c3QKICAgICByZXR1cm4gbV9zdHJpbmcud2lkZUNoYXJhY3RlcnMoKS5kYXRhKCk7CiB9CiAKLXN0
YXRpYyBDRkJ1bmRsZVJlZiBjcmVhdGVXZWJLaXRCdW5kbGUoKQorc3RhdGljIHZvaWQgY3JlYXRl
V2ViS2l0QnVuZGxlKCkKIHsKLSAgICBzdGF0aWMgQ0ZCdW5kbGVSZWYgYnVuZGxlOworICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8Q0ZCdW5kbGVSZWY+PiBidW5kbGU7CiAgICAg
c3RhdGljIGJvb2wgaW5pdGlhbGl6ZWQ7CiAKICAgICBpZiAoaW5pdGlhbGl6ZWQpCi0gICAgICAg
IHJldHVybiBidW5kbGU7CisgICAgICAgIHJldHVybjsKICAgICBpbml0aWFsaXplZCA9IHRydWU7
CiAKICAgICBXQ0hBUiBwYXRoU3RyW01BWF9QQVRIXTsKICAgICBEV09SRCBsZW5ndGggPSA6Okdl
dE1vZHVsZUZpbGVOYW1lVyhnSW5zdGFuY2UsIHBhdGhTdHIsIE1BWF9QQVRIKTsKICAgICBpZiAo
IWxlbmd0aCB8fCAobGVuZ3RoID09IE1BWF9QQVRIICYmIEdldExhc3RFcnJvcigpID09IEVSUk9S
X0lOU1VGRklDSUVOVF9CVUZGRVIpKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKICAgICBib29sIGZvdW5kID0gZmFsc2U7CiAgICAgZm9yIChpbnQgaSA9IGxl
bmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7CkBAIC0xMjIsMjIgKzEyMiwyMCBAQCBzdGF0aWMgQ0ZC
dW5kbGVSZWYgY3JlYXRlV2ViS2l0QnVuZGxlKCkKICAgICAgICAgfQogICAgIH0KICAgICBpZiAo
IWZvdW5kKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAg
ICBpZiAod2NzY2F0X3MocGF0aFN0ciwgTUFYX1BBVEgsIEwiXFxXZWJLaXQucmVzb3VyY2VzIikp
Ci0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIFN0cmlu
ZyBidW5kbGVQYXRoU3RyaW5nKHBhdGhTdHIpOwogICAgIGlmICghYnVuZGxlUGF0aFN0cmluZykK
LSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgQ0ZVUkxS
ZWYgYnVuZGxlVVJMUmVmID0gQ0ZVUkxDcmVhdGVXaXRoRmlsZVN5c3RlbVBhdGgoMCwgYnVuZGxl
UGF0aFN0cmluZy5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBrQ0ZVUkxXaW5kb3dzUGF0aFN0eWxl
LCB0cnVlKTsKKyAgICBhdXRvIGJ1bmRsZVVSTFJlZiA9IGFkb3B0Q0YoQ0ZVUkxDcmVhdGVXaXRo
RmlsZVN5c3RlbVBhdGgoMCwgYnVuZGxlUGF0aFN0cmluZy5jcmVhdGVDRlN0cmluZygpLmdldCgp
LCBrQ0ZVUkxXaW5kb3dzUGF0aFN0eWxlLCB0cnVlKSk7CiAgICAgaWYgKCFidW5kbGVVUkxSZWYp
Ci0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGJ1bmRs
ZSA9IENGQnVuZGxlQ3JlYXRlKDAsIGJ1bmRsZVVSTFJlZik7Ci0gICAgQ0ZSZWxlYXNlKGJ1bmRs
ZVVSTFJlZik7Ci0gICAgcmV0dXJuIGJ1bmRsZTsKKyAgICBidW5kbGUuZ2V0KCkgPSBhZG9wdENG
KENGQnVuZGxlQ3JlYXRlKDAsIGJ1bmRsZVVSTFJlZi5nZXQoKSkpOwogfQogCiBzdGF0aWMgQ0ZC
dW5kbGVSZWYgY2ZCdW5kbGVGb3JTdHJpbmdzQnVuZGxlKFdlYkxvY2FsaXphYmxlU3RyaW5nc0J1
bmRsZSogc3RyaW5nc0J1bmRsZSkKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xz
L0NoYW5nZUxvZwppbmRleCAyZjkyYjE4MGNmZTFmYmY5YjBhYmU2YzRjZTg5NjRhM2NkZTZiNTQ4
Li5mM2Y1ODRmMGYyYTU3YjhlOGRiOGM3YWE2MWRhZGYxZTRiZTBjNzc2IDEwMDY0NAotLS0gYS9U
b29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTQgQEAKKzIw
MjEtMDMtMDQgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBSZWR1
Y2UgdXNlIG9mIENGUmV0YWluKCkgLyBDRlJlbGVhc2UoKSAvIENGQXV0b1JlbGVhc2UoKSBpbiBX
ZWJLaXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIy
Mjc2MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJl
ZHVjZSB1c2Ugb2YgQ0ZSZXRhaW4oKSAvIENGUmVsZWFzZSgpIC8gQ0ZBdXRvUmVsZWFzZSgpIGlu
IFdlYktpdCBieSB1c2luZyBSZXRhaW5QdHI8Pi4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVl
L1Rlc3ROZXRzY2FwZVBsdWdJbi9QbHVnaW5PYmplY3RNYWMubW06CisgICAgICAgIChjcmVhdGVD
b3JlQW5pbWF0aW9uTGF5ZXIpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9BY2Nlc3Np
YmlsaXR5Q29tbW9uTWFjLm1tOgorICAgICAgICAoK1tOU1N0cmluZyBzdHJpbmdXaXRoSlNTdHJp
bmdSZWY6XSk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1t
OgorICAgICAgICAoYWN0aXZhdGVGb250SU9TKToKKyAgICAgICAgKGR1bXBSZW5kZXJUcmVlKToK
KyAgICAgICAgKGludmFsaWRhdGVBbnlQcmV2aW91c1dhaXRUb0R1bXBXYXRjaGRvZyk6CisgICAg
ICAgIChzZXRXYWl0VG9EdW1wV2F0Y2hkb2cpOgorICAgICAgICAoZHVtcCk6CisgICAgICAgIChy
dW5UZXN0KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWVNYWMu
aDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5t
bToKKyAgICAgICAgKC1bRXZlbnRTZW5kaW5nQ29udHJvbGxlciBtb3VzZVNjcm9sbEJ5WDphbmRZ
OmNvbnRpbnVvdXNseTpdKToKKyAgICAgICAgKC1bRXZlbnRTZW5kaW5nQ29udHJvbGxlciBtb3Vz
ZVNjcm9sbEJ5WDphbmRZOndpdGhXaGVlbDphbmRNb21lbnR1bVBoYXNlczpdKToKKyAgICAgICAg
KiBEdW1wUmVuZGVyVHJlZS9tYWMvUGl4ZWxEdW1wU3VwcG9ydE1hYy5tbToKKyAgICAgICAgKHRh
a2VXaW5kb3dTbmFwc2hvdCk6CisgICAgICAgIChjcmVhdGVCaXRtYXBDb250ZXh0RnJvbVdlYlZp
ZXcpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9SZXNvdXJjZUxvYWREZWxlZ2F0ZS5t
bToKKyAgICAgICAgKC1bUmVzb3VyY2VMb2FkRGVsZWdhdGUgd2ViVmlldzpyZXNvdXJjZTp3aWxs
U2VuZFJlcXVlc3Q6cmVkaXJlY3RSZXNwb25zZTpmcm9tRGF0YVNvdXJjZTpdKToKKyAgICAgICAg
KiBEdW1wUmVuZGVyVHJlZS9tYWMvVGVzdFJ1bm5lck1hYy5tbToKKyAgICAgICAgKFRlc3RSdW5u
ZXI6OmFkZERpc2FsbG93ZWRVUkwpOgorICAgICAgICAoVGVzdFJ1bm5lcjo6c2V0V2FpdFRvRHVt
cCk6CisgICAgICAgICogRm9udFdpdGhGZWF0dXJlcy9Gb250V2l0aEZlYXR1cmVzL21haW4uY3Bw
OgorICAgICAgICAoY29uc3RydWN0Rm9udFdpdGhUcnVlVHlwZUZlYXR1cmUpOgorICAgICAgICAo
Y29uc3RydWN0Rm9udFdpdGhPcGVuVHlwZUZlYXR1cmUpOgorICAgICAgICAoZHJhd1RleHQpOgor
ICAgICAgICAobWFpbik6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3BwOgorICAgICAgICAoV1RSOjpJbmplY3RlZEJ1bmRsZVBh
Z2U6OmR1bXBET01Bc1dlYkFyY2hpdmUpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvaW9zL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRJT1MubW06CisgICAgICAgICgr
W05TU3RyaW5nIHN0cmluZ1dpdGhKU1N0cmluZ1JlZjpdKToKKyAgICAgICAgKiBXZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5Q29tbW9uTWFjLm1tOgorICAg
ICAgICAoK1tOU1N0cmluZyBzdHJpbmdXaXRoSlNTdHJpbmdSZWY6XSk6CisgICAgICAgICogV2Vi
S2l0VGVzdFJ1bm5lci9pb3MvSElERXZlbnRHZW5lcmF0b3IubW06CisgICAgICAgICgtW0hJREV2
ZW50R2VuZXJhdG9yIF9jcmVhdGVJT0hJREV2ZW50V2l0aEluZm86XSk6CisgICAgICAgICogV2Vi
S2l0VGVzdFJ1bm5lci9tYWMvRXZlbnRTZW5kZXJQcm94eS5tbToKKyAgICAgICAgKC1bRXZlbnRT
ZW5kZXJTeW50aGV0aWNFdmVudCBpbml0UHJlc3N1cmVFdmVudEF0TG9jYXRpb246Z2xvYmFsTG9j
YXRpb246c3RhZ2U6cHJlc3N1cmU6c3RhZ2VUcmFuc2l0aW9uOnBoYXNlOnRpbWU6ZXZlbnROdW1i
ZXI6d2luZG93Ol0pOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvbWFjL1VJU2NyaXB0Q29u
dHJvbGxlck1hYy5tbToKKyAgICAgICAgKFdUUjo6Y2ZTdHJpbmcpOgorICAgICAgICAoV1RSOjpV
SVNjcmlwdENvbnRyb2xsZXJNYWM6OnJlcGxhY2VUZXh0QXRSYW5nZSk6CisKIDIwMjEtMDMtMDQg
IE1hdHQgTGV3aXMgIDxqbGV3aXMzQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgQXBwbGUgU2ls
aWNvbiBEZXZpY2VzIHRvIEJpZyBTdXIgYnVpbGRlcnMgYW5kIHRlc3RlcnMuCmRpZmYgLS1naXQg
YS9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0TmV0c2NhcGVQbHVnSW4vUGx1Z2luT2JqZWN0TWFj
Lm1tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdE5ldHNjYXBlUGx1Z0luL1BsdWdpbk9iamVj
dE1hYy5tbQppbmRleCA1OWY2NTdmZDNlNGM1OTkzMDNjN2Y0MDQwNDEyMmNiNDRiNzljZjE0Li4y
ZjI2ZDg0Y2Y2ZjQ4N2I0Yjk2N2UzYjhmZjI0MTYwMmY3YmUwY2M0IDEwMDY0NAotLS0gYS9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9UZXN0TmV0c2NhcGVQbHVnSW4vUGx1Z2luT2JqZWN0TWFjLm1tCisr
KyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3ROZXRzY2FwZVBsdWdJbi9QbHVnaW5PYmplY3RN
YWMubW0KQEAgLTY0LDIzICs2NCwxNSBAQCBDRlR5cGVSZWYgY3JlYXRlQ29yZUFuaW1hdGlvbkxh
eWVyKCkKICAgICAvLyBUdXJuIG9mZiBkZWZhdWx0IGFuaW1hdGlvbnMuCiAgICAgW2NhTGF5ZXIg
c2V0U3R5bGU6QHsgQCJhY3Rpb25zIjogYWN0aW9ucyB9XTsKICAgICBbY2FMYXllciBzZXROZWVk
c0Rpc3BsYXlPbkJvdW5kc0NoYW5nZTpZRVNdOwotCiAgICAgW2NhTGF5ZXIgc2V0Qm91bmRzOkNH
UmVjdE1ha2UoMCwgMCwgMjAwLCAxMDApXTsKICAgICBbY2FMYXllciBzZXRBbmNob3JQb2ludDpD
R1BvaW50WmVyb107Ci0gICAgCi0gICAgQ0dDb2xvclJlZiBjb2xvciA9IENHQ29sb3JDcmVhdGVH
ZW5lcmljUkdCKDAuNSwgMC41LCAxLCAxKTsKLSAgICBbY2FMYXllciBzZXRCYWNrZ3JvdW5kQ29s
b3I6Y29sb3JdOwotICAgIENHQ29sb3JSZWxlYXNlKGNvbG9yKTsKLSAgICAKKyAgICBbY2FMYXll
ciBzZXRCYWNrZ3JvdW5kQ29sb3I6YWRvcHRDRihDR0NvbG9yQ3JlYXRlR2VuZXJpY1JHQigwLjUs
IDAuNSwgMSwgMSkpLmdldCgpXTsKICAgICBbY2FMYXllciBzZXRMYXlvdXRNYW5hZ2VyOltDQUNv
bnN0cmFpbnRMYXlvdXRNYW5hZ2VyIGxheW91dE1hbmFnZXJdXTsKIAogICAgIENBTGF5ZXIgKnN1
YmxheWVyID0gW0NBTGF5ZXIgbGF5ZXJdOwogICAgIC8vIFR1cm4gb2ZmIGRlZmF1bHQgYW5pbWF0
aW9ucy4KICAgICBbc3VibGF5ZXIgc2V0U3R5bGU6QHsgQCJhY3Rpb25zIjogYWN0aW9ucyB9XTsK
LQotICAgIGNvbG9yID0gQ0dDb2xvckNyZWF0ZUdlbmVyaWNSR0IoMCwgMCwgMCwgMC43NSk7Ci0g
ICAgW3N1YmxheWVyIHNldEJhY2tncm91bmRDb2xvcjpjb2xvcl07Ci0gICAgQ0dDb2xvclJlbGVh
c2UoY29sb3IpOworICAgIFtzdWJsYXllciBzZXRCYWNrZ3JvdW5kQ29sb3I6YWRvcHRDRihDR0Nv
bG9yQ3JlYXRlR2VuZXJpY1JHQigwLCAwLCAwLCAwLjc1KSkuZ2V0KCldOwogICAgIFtzdWJsYXll
ciBzZXRCb3VuZHM6Q0dSZWN0TWFrZSgwLCAwLCAxODAsIDIwKV07CiAKICAgICBbc3VibGF5ZXIg
YWRkQ29uc3RyYWludDpbQ0FDb25zdHJhaW50IGNvbnN0cmFpbnRXaXRoQXR0cmlidXRlOmtDQUNv
bnN0cmFpbnRNaW5ZCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvQWNjZXNz
aWJpbGl0eUNvbW1vbk1hYy5tbSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9BY2Nlc3NpYmls
aXR5Q29tbW9uTWFjLm1tCmluZGV4IDAzMDY3ZTJkMDg5MjE0ZmJlODQ2NjdiMjgyNGY4Y2UzMTQ4
MGY5ODcuLjU4OGM4YjE5YmY0MDRjMjIxMTAzOTljYzRhOGMyOTBmYjA2ZGIyN2IgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9BY2Nlc3NpYmlsaXR5Q29tbW9uTWFjLm1tCisr
KyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9BY2Nlc3NpYmlsaXR5Q29tbW9uTWFjLm1tCkBA
IC00MSw3ICs0MSw3IEBAICsgKE5TU3RyaW5nICopc3RyaW5nV2l0aEpTU3RyaW5nUmVmOihKU1N0
cmluZ1JlZilqc1N0cmluZ1JlZgogICAgIGlmICghanNTdHJpbmdSZWYpCiAgICAgICAgIHJldHVy
biBuaWw7CiAKLSAgICByZXR1cm4gQ0ZCcmlkZ2luZ1JlbGVhc2UoSlNTdHJpbmdDb3B5Q0ZTdHJp
bmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwganNTdHJpbmdSZWYpKTsKKyAgICByZXR1cm4gYWRvcHRD
RihKU1N0cmluZ0NvcHlDRlN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBqc1N0cmluZ1JlZikp
LmJyaWRnaW5nQXV0b3JlbGVhc2UoKTsKIH0KIAogLSAoSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+
KWNyZWF0ZUpTU3RyaW5nUmVmCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMv
RHVtcFJlbmRlclRyZWUubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRy
ZWUubW0KaW5kZXggMTRiZDFlODBkNmVmMDkzMjg4OTkzOGNiZDQ1YmE0MzFhN2ZkNTYwNy4uNzM1
MTAzOTZhNTgwYzllYmJiYzY0YTdmZTFiZWMyOTgyYzlmN2NjZSAxMDA2NDQKLS0tIGEvVG9vbHMv
RHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQpAQCAtMjA4LDggKzIwOCw4IEBAIFdlYkZyYW1l
ICp0b3BMb2FkaW5nRnJhbWUgPSBuaWw7IC8vICFuaWwgaWZmIGEgbG9hZCBpcyBpbiBwcm9ncmVz
cwogUmV0YWluUHRyPE5TV2luZG93PiBtYWluV2luZG93OwogI2VuZGlmCiAKLUNGTXV0YWJsZVNl
dFJlZiBkaXNhbGxvd2VkVVJMcz0gbnVsbHB0cjsKLXN0YXRpYyBDRlJ1bkxvb3BUaW1lclJlZiB3
YWl0VG9EdW1wV2F0Y2hkb2c7CitSZXRhaW5QdHI8Q0ZNdXRhYmxlU2V0UmVmPiBkaXNhbGxvd2Vk
VVJMcyA9IG51bGxwdHI7CitzdGF0aWMgUmV0YWluUHRyPENGUnVuTG9vcFRpbWVyUmVmPiB3YWl0
VG9EdW1wV2F0Y2hkb2c7CiAKIHN0YXRpYyBSZXRhaW5QdHI8V2ViVmlldz4mIGdsb2JhbFdlYlZp
ZXcoKQogewpAQCAtNTUwLDI2ICs1NTAsMjQgQEAgc3RhdGljIHZvaWQgYWRqdXN0Rm9udHMoKQog
CiBzdGF0aWMgdm9pZCBhY3RpdmF0ZUZvbnRJT1MoY29uc3QgdWludDhfdCogZm9udERhdGEsIHVu
c2lnbmVkIGxvbmcgbGVuZ3RoLCBzdGQ6OnN0cmluZyBzZWN0aW9uTmFtZSkKIHsKLSAgICBDR0Rh
dGFQcm92aWRlclJlZiBkYXRhID0gQ0dEYXRhUHJvdmlkZXJDcmVhdGVXaXRoRGF0YShudWxscHRy
LCBmb250RGF0YSwgbGVuZ3RoLCBudWxscHRyKTsKKyAgICBhdXRvIGRhdGEgPSBhZG9wdENGKENH
RGF0YVByb3ZpZGVyQ3JlYXRlV2l0aERhdGEobnVsbHB0ciwgZm9udERhdGEsIGxlbmd0aCwgbnVs
bHB0cikpOwogICAgIGlmICghZGF0YSkgewogICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkZhaWxl
ZCB0byBjcmVhdGUgQ0dEYXRhUHJvdmlkZXJSZWYgZm9yIHRoZSAlcyBmb250LlxuIiwgc2VjdGlv
bk5hbWUuY19zdHIoKSk7CiAgICAgICAgIGV4aXQoMSk7CiAgICAgfQogCi0gICAgQ0dGb250UmVm
IGNnRm9udCA9IENHRm9udENyZWF0ZVdpdGhEYXRhUHJvdmlkZXIoZGF0YSk7Ci0gICAgQ0dEYXRh
UHJvdmlkZXJSZWxlYXNlKGRhdGEpOworICAgIGF1dG8gY2dGb250ID0gYWRvcHRDRihDR0ZvbnRD
cmVhdGVXaXRoRGF0YVByb3ZpZGVyKGRhdGEuZ2V0KCkpKTsKICAgICBpZiAoIWNnRm9udCkgewog
ICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkZhaWxlZCB0byBjcmVhdGUgQ0dGb250UmVmIGZvciB0
aGUgJXMgZm9udC5cbiIsIHNlY3Rpb25OYW1lLmNfc3RyKCkpOwogICAgICAgICBleGl0KDEpOwog
ICAgIH0KIAogICAgIENGRXJyb3JSZWYgZXJyb3IgPSBudWxscHRyOwotICAgIENURm9udE1hbmFn
ZXJSZWdpc3RlckdyYXBoaWNzRm9udChjZ0ZvbnQsICZlcnJvcik7CisgICAgQ1RGb250TWFuYWdl
clJlZ2lzdGVyR3JhcGhpY3NGb250KGNnRm9udC5nZXQoKSwgJmVycm9yKTsKICAgICBpZiAoZXJy
b3IpIHsKICAgICAgICAgZnByaW50ZihzdGRlcnIsICJGYWlsZWQgdG8gYWRkIENHRm9udCB0byBD
b3JlVGV4dCBmb3IgdGhlICVzIGZvbnQ6ICVzLlxuIiwgc2VjdGlvbk5hbWUuY19zdHIoKSwgQ0ZT
dHJpbmdHZXRDU3RyaW5nUHRyKENGRXJyb3JDb3B5RGVzY3JpcHRpb24oZXJyb3IpLCBrQ0ZTdHJp
bmdFbmNvZGluZ1VURjgpKTsKICAgICAgICAgZXhpdCgxKTsKICAgICB9Ci0gICAgQ0dGb250UmVs
ZWFzZShjZ0ZvbnQpOwogfQogCiBzdGF0aWMgdm9pZCBhY3RpdmF0ZUZvbnRzSU9TKCkKQEAgLTEy
NjUsMTAgKzEyNjMsNyBAQCB2b2lkIGR1bXBSZW5kZXJUcmVlKGludCBhcmdjLCBjb25zdCBjaGFy
ICphcmd2W10pCiAjZW5kaWYKIAogICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSBtb3ZlZCBv
bnRvIFRlc3RSdW5uZXIgYW5kIG1hZGUgaW50byBhIEhhc2hTZXQKLSAgICBpZiAoZGlzYWxsb3dl
ZFVSTHMpIHsKLSAgICAgICAgQ0ZSZWxlYXNlKGRpc2FsbG93ZWRVUkxzKTsKLSAgICAgICAgZGlz
YWxsb3dlZFVSTHMgPSAwOwotICAgIH0KKyAgICBkaXNhbGxvd2VkVVJMcyA9IG51bGxwdHI7CiAK
ICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIHRlYXJEb3duSU9TTGF5b3V0VGVzdENvbW11
bmljYXRpb24oKTsKQEAgLTE2MTUsMTggKzE2MTAsMTcgQEAgc3RhdGljIHZvaWQgZHVtcEJhY2tG
b3J3YXJkTGlzdEZvckFsbFdpbmRvd3MoKQogc3RhdGljIHZvaWQgaW52YWxpZGF0ZUFueVByZXZp
b3VzV2FpdFRvRHVtcFdhdGNoZG9nKCkKIHsKICAgICBpZiAod2FpdFRvRHVtcFdhdGNoZG9nKSB7
Ci0gICAgICAgIENGUnVuTG9vcFRpbWVySW52YWxpZGF0ZSh3YWl0VG9EdW1wV2F0Y2hkb2cpOwot
ICAgICAgICBDRlJlbGVhc2Uod2FpdFRvRHVtcFdhdGNoZG9nKTsKLSAgICAgICAgd2FpdFRvRHVt
cFdhdGNoZG9nID0gTlVMTDsKKyAgICAgICAgQ0ZSdW5Mb29wVGltZXJJbnZhbGlkYXRlKHdhaXRU
b0R1bXBXYXRjaGRvZy5nZXQoKSk7CisgICAgICAgIHdhaXRUb0R1bXBXYXRjaGRvZyA9IG51bGxw
dHI7CiAgICAgfQogfQogCi12b2lkIHNldFdhaXRUb0R1bXBXYXRjaGRvZyhDRlJ1bkxvb3BUaW1l
clJlZiB0aW1lcikKK3ZvaWQgc2V0V2FpdFRvRHVtcFdhdGNoZG9nKFJldGFpblB0cjxDRlJ1bkxv
b3BUaW1lclJlZj4mJiB0aW1lcikKIHsKICAgICBBU1NFUlQodGltZXIpOwogICAgIEFTU0VSVChz
aG91bGRTZXRXYWl0VG9EdW1wV2F0Y2hkb2coKSk7Ci0gICAgd2FpdFRvRHVtcFdhdGNoZG9nID0g
dGltZXI7Ci0gICAgQ0ZSdW5Mb29wQWRkVGltZXIoQ0ZSdW5Mb29wR2V0Q3VycmVudCgpLCB3YWl0
VG9EdW1wV2F0Y2hkb2csIGtDRlJ1bkxvb3BDb21tb25Nb2Rlcyk7CisgICAgd2FpdFRvRHVtcFdh
dGNoZG9nID0gV1RGTW92ZSh0aW1lcik7CisgICAgQ0ZSdW5Mb29wQWRkVGltZXIoQ0ZSdW5Mb29w
R2V0Q3VycmVudCgpLCB3YWl0VG9EdW1wV2F0Y2hkb2cuZ2V0KCksIGtDRlJ1bkxvb3BDb21tb25N
b2Rlcyk7CiB9CiAKIGJvb2wgc2hvdWxkU2V0V2FpdFRvRHVtcFdhdGNoZG9nKCkKQEAgLTE2ODMs
MTEgKzE2NzcsMTEgQEAgdm9pZCBkdW1wKCkKICAgICAgICAgICAgIHJlc3VsdE1pbWVUeXBlID0g
QCJhcHBsaWNhdGlvbi9wZGYiOwogICAgICAgICB9IGVsc2UgaWYgKGdUZXN0UnVubmVyLT5kdW1w
RE9NQXNXZWJBcmNoaXZlKCkpIHsKICAgICAgICAgICAgIFdlYkFyY2hpdmUgKndlYkFyY2hpdmUg
PSBbW21haW5GcmFtZSBET01Eb2N1bWVudF0gd2ViQXJjaGl2ZV07Ci0gICAgICAgICAgICByZXN1
bHRTdHJpbmcgPSBDRkJyaWRnaW5nUmVsZWFzZShXZWJDb3JlVGVzdFN1cHBvcnQ6OmNyZWF0ZVhN
TFN0cmluZ0Zyb21XZWJBcmNoaXZlRGF0YSgoX19icmlkZ2UgQ0ZEYXRhUmVmKVt3ZWJBcmNoaXZl
IGRhdGFdKSk7CisgICAgICAgICAgICByZXN1bHRTdHJpbmcgPSBXZWJDb3JlVGVzdFN1cHBvcnQ6
OmNyZWF0ZVhNTFN0cmluZ0Zyb21XZWJBcmNoaXZlRGF0YSgoX19icmlkZ2UgQ0ZEYXRhUmVmKVt3
ZWJBcmNoaXZlIGRhdGFdKTsKICAgICAgICAgICAgIHJlc3VsdE1pbWVUeXBlID0gQCJhcHBsaWNh
dGlvbi94LXdlYmFyY2hpdmUiOwogICAgICAgICB9IGVsc2UgaWYgKGdUZXN0UnVubmVyLT5kdW1w
U291cmNlQXNXZWJBcmNoaXZlKCkpIHsKICAgICAgICAgICAgIFdlYkFyY2hpdmUgKndlYkFyY2hp
dmUgPSBbW21haW5GcmFtZSBkYXRhU291cmNlXSB3ZWJBcmNoaXZlXTsKLSAgICAgICAgICAgIHJl
c3VsdFN0cmluZyA9IENGQnJpZGdpbmdSZWxlYXNlKFdlYkNvcmVUZXN0U3VwcG9ydDo6Y3JlYXRl
WE1MU3RyaW5nRnJvbVdlYkFyY2hpdmVEYXRhKChfX2JyaWRnZSBDRkRhdGFSZWYpW3dlYkFyY2hp
dmUgZGF0YV0pKTsKKyAgICAgICAgICAgIHJlc3VsdFN0cmluZyA9IFdlYkNvcmVUZXN0U3VwcG9y
dDo6Y3JlYXRlWE1MU3RyaW5nRnJvbVdlYkFyY2hpdmVEYXRhKChfX2JyaWRnZSBDRkRhdGFSZWYp
W3dlYkFyY2hpdmUgZGF0YV0pOwogICAgICAgICAgICAgcmVzdWx0TWltZVR5cGUgPSBAImFwcGxp
Y2F0aW9uL3gtd2ViYXJjaGl2ZSI7CiAgICAgICAgIH0gZWxzZSBpZiAoZ1Rlc3RSdW5uZXItPmlz
UHJpbnRpbmcoKSkKICAgICAgICAgICAgIHJlc3VsdFN0cmluZyA9IFttYWluRnJhbWUgcmVuZGVy
VHJlZUFzRXh0ZXJuYWxSZXByZXNlbnRhdGlvbkZvclByaW50aW5nXTsKQEAgLTE5ODIsNyArMTk3
Niw3IEBAIHN0YXRpYyB2b2lkIHJ1blRlc3QoY29uc3Qgc3RkOjpzdHJpbmcmIGlucHV0TGluZSkK
ICAgICBnVGVzdFJ1bm5lci0+Y2xlYXJBbGxEYXRhYmFzZXMoKTsKIAogICAgIGlmIChkaXNhbGxv
d2VkVVJMcykKLSAgICAgICAgQ0ZTZXRSZW1vdmVBbGxWYWx1ZXMoZGlzYWxsb3dlZFVSTHMpOwor
ICAgICAgICBDRlNldFJlbW92ZUFsbFZhbHVlcyhkaXNhbGxvd2VkVVJMcy5nZXQoKSk7CiAgICAg
aWYgKHNob3VsZExvZ0ZyYW1lTG9hZERlbGVnYXRlcyhwYXRoT3JVUkwuY19zdHIoKSkpCiAgICAg
ICAgIGdUZXN0UnVubmVyLT5zZXREdW1wRnJhbWVMb2FkQ2FsbGJhY2tzKHRydWUpOwogCmRpZmYg
LS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWVNYWMuaCBiL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZU1hYy5oCmluZGV4IDNkNDFiNWI3
NGJiNzI4YTUxMmRlOTY3ZDk5NThmMDY4ODJkODU2M2MuLjRkOWQxZDJkNzA3MzdlMGExOWQzYzQ0
OTNlNzlmYzQ4NTNkMTZiOWMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9E
dW1wUmVuZGVyVHJlZU1hYy5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVu
ZGVyVHJlZU1hYy5oCkBAIC00NCwxMCArNDQsMTAgQEAgT0JKQ19DTEFTUyBXZWJTY3JpcHRXb3Js
ZDsKIE9CSkNfQ0xBU1MgV2ViVmlldzsKIAogZXh0ZXJuIENGTXV0YWJsZUFycmF5UmVmIG9wZW5X
aW5kb3dzUmVmOwotZXh0ZXJuIENGTXV0YWJsZVNldFJlZiBkaXNhbGxvd2VkVVJMczsKIGV4dGVy
biBXZWJGcmFtZSogbWFpbkZyYW1lOwogZXh0ZXJuIFdlYkZyYW1lKiB0b3BMb2FkaW5nRnJhbWU7
CiAjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiBSZXRhaW5QdHI8Q0ZNdXRhYmxlU2V0UmVmPiBk
aXNhbGxvd2VkVVJMczsKIGV4dGVybiBSZXRhaW5QdHI8RHVtcFJlbmRlclRyZWVEcmFnZ2luZ0lu
Zm8+IGRyYWdnaW5nSW5mbzsKIGV4dGVybiBSZXRhaW5QdHI8TmF2aWdhdGlvbkNvbnRyb2xsZXI+
IGdOYXZpZ2F0aW9uQ29udHJvbGxlcjsKIGV4dGVybiBSZXRhaW5QdHI8UG9saWN5RGVsZWdhdGU+
IHBvbGljeURlbGVnYXRlOwpAQCAtNjAsOSArNjAsMTAgQEAgZXh0ZXJuIFJldGFpblB0cjxVSVdp
bmRvdz4gbWFpbldpbmRvdzsKIE9CSkNfQ0xBU1MgTlNXaW5kb3c7CiBleHRlcm4gUmV0YWluUHRy
PE5TV2luZG93PiBtYWluV2luZG93OwogI2VuZGlmCi0jZW5kaWYKIAotdm9pZCBzZXRXYWl0VG9E
dW1wV2F0Y2hkb2coQ0ZSdW5Mb29wVGltZXJSZWYpOwordm9pZCBzZXRXYWl0VG9EdW1wV2F0Y2hk
b2coUmV0YWluUHRyPENGUnVuTG9vcFRpbWVyUmVmPiYmKTsKKyNlbmRpZiAvLyBfX2NwbHVzcGx1
cworCiBib29sIHNob3VsZFNldFdhaXRUb0R1bXBXYXRjaGRvZyh2b2lkKTsKIAogI2lmZGVmIF9f
Y3BsdXNwbHVzCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRXZlbnRTZW5k
aW5nQ29udHJvbGxlci5tbSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9FdmVudFNlbmRpbmdD
b250cm9sbGVyLm1tCmluZGV4IDE2YTYwNTFiYjdmYjY0YjlkZjBhYTllMzczMjJiODliMDExZDc1
NzAuLmI4Nzk0MmIzYzZjOTI1ZjQzNTVmNWU1MzczYTVmNmRlZWYwZmYwNjEgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9FdmVudFNlbmRpbmdDb250cm9sbGVyLm1tCisrKyBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9FdmVudFNlbmRpbmdDb250cm9sbGVyLm1tCkBAIC04
MDksMTYgKzgwOSwxNSBAQCAtICh2b2lkKW1vdXNlU2Nyb2xsQnlYOihpbnQpeCBhbmRZOihpbnQp
eSBjb250aW51b3VzbHk6KEJPT0wpY29udGludW91c2x5CiB7CiAjaWYgIVBMQVRGT1JNKElPU19G
QU1JTFkpCiAgICAgQ0dTY3JvbGxFdmVudFVuaXQgdW5pdCA9IGNvbnRpbnVvdXNseSA/IGtDR1Nj
cm9sbEV2ZW50VW5pdFBpeGVsIDoga0NHU2Nyb2xsRXZlbnRVbml0TGluZTsKLSAgICBDR0V2ZW50
UmVmIGNnU2Nyb2xsRXZlbnQgPSBDR0V2ZW50Q3JlYXRlU2Nyb2xsV2hlZWxFdmVudDIoTlVMTCwg
dW5pdCwgMiwgeSwgeCwgMCk7CisgICAgYXV0byBjZ1Njcm9sbEV2ZW50ID0gYWRvcHRDRihDR0V2
ZW50Q3JlYXRlU2Nyb2xsV2hlZWxFdmVudDIoTlVMTCwgdW5pdCwgMiwgeSwgeCwgMCkpOwogICAg
IAogICAgIC8vIFNldCB0aGUgQ0dFdmVudCBsb2NhdGlvbiBpbiBmbGlwcGVkIGNvb3JkcyByZWxh
dGl2ZSB0byB0aGUgZmlyc3Qgc2NyZWVuLCB3aGljaAogICAgIC8vIGNvbXBlbnNhdGVzIGZvciB0
aGUgYmVoYXZpb3Igb2YgK1tOU0V2ZW50IGV2ZW50V2l0aENHRXZlbnQ6XSB3aGVuIHRoZSBldmVu
dCBoYXMKICAgICAvLyBubyBhc3NvY2lhdGVkIHdpbmRvdy4gU2VlIDxyZGFyOi8vcHJvYmxlbS8x
NzE4MDU5MT4uCiAgICAgQ0dQb2ludCBsYXN0R2xvYmFsTW91c2VQb3NpdGlvbiA9IENHUG9pbnRN
YWtlKGxhc3RNb3VzZVBvc2l0aW9uLngsIFtbW05TU2NyZWVuIHNjcmVlbnNdIG9iamVjdEF0SW5k
ZXg6MF0gZnJhbWVdLnNpemUuaGVpZ2h0IC0gbGFzdE1vdXNlUG9zaXRpb24ueSk7Ci0gICAgQ0dF
dmVudFNldExvY2F0aW9uKGNnU2Nyb2xsRXZlbnQsIGxhc3RHbG9iYWxNb3VzZVBvc2l0aW9uKTsK
KyAgICBDR0V2ZW50U2V0TG9jYXRpb24oY2dTY3JvbGxFdmVudC5nZXQoKSwgbGFzdEdsb2JhbE1v
dXNlUG9zaXRpb24pOwogCi0gICAgTlNFdmVudCAqc2Nyb2xsRXZlbnQgPSBbTlNFdmVudCBldmVu
dFdpdGhDR0V2ZW50OmNnU2Nyb2xsRXZlbnRdOwotICAgIENGUmVsZWFzZShjZ1Njcm9sbEV2ZW50
KTsKKyAgICBOU0V2ZW50ICpzY3JvbGxFdmVudCA9IFtOU0V2ZW50IGV2ZW50V2l0aENHRXZlbnQ6
Y2dTY3JvbGxFdmVudC5nZXQoKV07CiAKICAgICBOU1ZpZXcgKnN1YlZpZXcgPSBbW21haW5GcmFt
ZSB3ZWJWaWV3XSBoaXRUZXN0OltzY3JvbGxFdmVudCBsb2NhdGlvbkluV2luZG93XV07CiAgICAg
aWYgKHN1YlZpZXcpIHsKQEAgLTg3NSwxOSArODc0LDE4IEBAIC0gKHZvaWQpbW91c2VTY3JvbGxC
eVg6KGludCl4IGFuZFk6KGludCl5IHdpdGhXaGVlbDooTlNTdHJpbmcqKXBoYXNlTmFtZSBhbmRN
b21lCiAgICAgaWYgKG1vbWVudHVtID09IGtDR01vbWVudHVtU2Nyb2xsUGhhc2VFbmQpCiAgICAg
ICAgIF9zZW50TW9tZW50dW1QaGFzZUVuZCA9IFlFUzsKIAotICAgIENHRXZlbnRSZWYgY2dTY3Jv
bGxFdmVudCA9IENHRXZlbnRDcmVhdGVTY3JvbGxXaGVlbEV2ZW50MihOVUxMLCBrQ0dTY3JvbGxF
dmVudFVuaXRMaW5lLCAyLCB5LCB4LCAwKTsKKyAgICBhdXRvIGNnU2Nyb2xsRXZlbnQgPSBhZG9w
dENGKENHRXZlbnRDcmVhdGVTY3JvbGxXaGVlbEV2ZW50MihOVUxMLCBrQ0dTY3JvbGxFdmVudFVu
aXRMaW5lLCAyLCB5LCB4LCAwKSk7CiAKICAgICAvLyBTZXQgdGhlIENHRXZlbnQgbG9jYXRpb24g
aW4gZmxpcHBlZCBjb29yZHMgcmVsYXRpdmUgdG8gdGhlIGZpcnN0IHNjcmVlbiwgd2hpY2gKICAg
ICAvLyBjb21wZW5zYXRlcyBmb3IgdGhlIGJlaGF2aW9yIG9mICtbTlNFdmVudCBldmVudFdpdGhD
R0V2ZW50Ol0gd2hlbiB0aGUgZXZlbnQgaGFzCiAgICAgLy8gbm8gYXNzb2NpYXRlZCB3aW5kb3cu
IFNlZSA8cmRhcjovL3Byb2JsZW0vMTcxODA1OTE+LgogICAgIENHUG9pbnQgbGFzdEdsb2JhbE1v
dXNlUG9zaXRpb24gPSBDR1BvaW50TWFrZShsYXN0TW91c2VQb3NpdGlvbi54LCBbW1tOU1NjcmVl
biBzY3JlZW5zXSBvYmplY3RBdEluZGV4OjBdIGZyYW1lXS5zaXplLmhlaWdodCAtIGxhc3RNb3Vz
ZVBvc2l0aW9uLnkpOwotICAgIENHRXZlbnRTZXRMb2NhdGlvbihjZ1Njcm9sbEV2ZW50LCBsYXN0
R2xvYmFsTW91c2VQb3NpdGlvbik7Ci0gICAgQ0dFdmVudFNldEludGVnZXJWYWx1ZUZpZWxkKGNn
U2Nyb2xsRXZlbnQsIGtDR1Njcm9sbFdoZWVsRXZlbnRJc0NvbnRpbnVvdXMsIDEpOwotICAgIENH
RXZlbnRTZXRJbnRlZ2VyVmFsdWVGaWVsZChjZ1Njcm9sbEV2ZW50LCBrQ0dTY3JvbGxXaGVlbEV2
ZW50U2Nyb2xsUGhhc2UsIHBoYXNlKTsKLSAgICBDR0V2ZW50U2V0SW50ZWdlclZhbHVlRmllbGQo
Y2dTY3JvbGxFdmVudCwga0NHU2Nyb2xsV2hlZWxFdmVudE1vbWVudHVtUGhhc2UsIG1vbWVudHVt
KTsKKyAgICBDR0V2ZW50U2V0TG9jYXRpb24oY2dTY3JvbGxFdmVudC5nZXQoKSwgbGFzdEdsb2Jh
bE1vdXNlUG9zaXRpb24pOworICAgIENHRXZlbnRTZXRJbnRlZ2VyVmFsdWVGaWVsZChjZ1Njcm9s
bEV2ZW50LmdldCgpLCBrQ0dTY3JvbGxXaGVlbEV2ZW50SXNDb250aW51b3VzLCAxKTsKKyAgICBD
R0V2ZW50U2V0SW50ZWdlclZhbHVlRmllbGQoY2dTY3JvbGxFdmVudC5nZXQoKSwga0NHU2Nyb2xs
V2hlZWxFdmVudFNjcm9sbFBoYXNlLCBwaGFzZSk7CisgICAgQ0dFdmVudFNldEludGVnZXJWYWx1
ZUZpZWxkKGNnU2Nyb2xsRXZlbnQuZ2V0KCksIGtDR1Njcm9sbFdoZWVsRXZlbnRNb21lbnR1bVBo
YXNlLCBtb21lbnR1bSk7CiAgICAgCi0gICAgTlNFdmVudCogc2Nyb2xsRXZlbnQgPSBbTlNFdmVu
dCBldmVudFdpdGhDR0V2ZW50OmNnU2Nyb2xsRXZlbnRdOwotICAgIENGUmVsZWFzZShjZ1Njcm9s
bEV2ZW50KTsKKyAgICBOU0V2ZW50KiBzY3JvbGxFdmVudCA9IFtOU0V2ZW50IGV2ZW50V2l0aENH
RXZlbnQ6Y2dTY3JvbGxFdmVudC5nZXQoKV07CiAKICAgICBpZiAoTlNWaWV3KiB0YXJnZXRWaWV3
ID0gW1ttYWluRnJhbWUgd2ViVmlld10gaGl0VGVzdDpbc2Nyb2xsRXZlbnQgbG9jYXRpb25Jbldp
bmRvd11dKSB7CiAgICAgICAgIFtOU0FwcCBfc2V0Q3VycmVudEV2ZW50OnNjcm9sbEV2ZW50XTsK
ZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9QaXhlbER1bXBTdXBwb3J0TWFj
Lm1tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1BpeGVsRHVtcFN1cHBvcnRNYWMubW0KaW5k
ZXggYWMzMjgxYTRkZjNlMDIzNTY3MTg4MDdmMGFkNzgyYmYxZDc0NGJiNy4uNGEyNmFhNTMxNjUw
NjJjMGI4MDJiODBjMzU1OWE2ZmFkZTEwZDRlZiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRl
clRyZWUvbWFjL1BpeGVsRHVtcFN1cHBvcnRNYWMubW0KKysrIGIvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvbWFjL1BpeGVsRHVtcFN1cHBvcnRNYWMubW0KQEAgLTc5LDEwICs3OSwxMCBAQCBzdGF0aWMg
dm9pZCBwYWludFJlcGFpbnRSZWN0T3ZlcmxheShXZWJWaWV3KiB3ZWJWaWV3LCBDR0NvbnRleHRS
ZWYgY29udGV4dCkKICAgICBDR0NvbnRleHRSZXN0b3JlR1N0YXRlKGNvbnRleHQpOwogfQogCi1z
dGF0aWMgQ0dJbWFnZVJlZiB0YWtlV2luZG93U25hcHNob3QoQ0dTV2luZG93SUQgd2luZG93SUQs
IENHV2luZG93SW1hZ2VPcHRpb24gaW1hZ2VPcHRpb25zKSBDRl9SRVRVUk5TX1JFVEFJTkVECitz
dGF0aWMgUmV0YWluUHRyPENHSW1hZ2VSZWY+IHRha2VXaW5kb3dTbmFwc2hvdChDR1NXaW5kb3dJ
RCB3aW5kb3dJRCwgQ0dXaW5kb3dJbWFnZU9wdGlvbiBpbWFnZU9wdGlvbnMpCiB7CiAgICAgaW1h
Z2VPcHRpb25zIHw9IGtDR1dpbmRvd0ltYWdlQm91bmRzSWdub3JlRnJhbWluZyB8IGtDR1dpbmRv
d0ltYWdlU2hvdWxkQmVPcGFxdWU7Ci0gICAgcmV0dXJuIENHV2luZG93TGlzdENyZWF0ZUltYWdl
KENHUmVjdE51bGwsIGtDR1dpbmRvd0xpc3RPcHRpb25JbmNsdWRpbmdXaW5kb3csIHdpbmRvd0lE
LCBpbWFnZU9wdGlvbnMpOworICAgIHJldHVybiBhZG9wdENGKENHV2luZG93TGlzdENyZWF0ZUlt
YWdlKENHUmVjdE51bGwsIGtDR1dpbmRvd0xpc3RPcHRpb25JbmNsdWRpbmdXaW5kb3csIHdpbmRv
d0lELCBpbWFnZU9wdGlvbnMpKTsKIH0KIAogUmVmUHRyPEJpdG1hcENvbnRleHQ+IGNyZWF0ZUJp
dG1hcENvbnRleHRGcm9tV2ViVmlldyhib29sIG9uc2NyZWVuLCBib29sIGluY3JlbWVudGFsUmVw
YWludCwgYm9vbCBzd2VlcEhvcml6b250YWxseSwgYm9vbCBkcmF3U2VsZWN0aW9uUmVjdCkKQEAg
LTEzMiwyMiArMTMyLDE5IEBAIFJlZlB0cjxCaXRtYXBDb250ZXh0PiBjcmVhdGVCaXRtYXBDb250
ZXh0RnJvbVdlYlZpZXcoYm9vbCBvbnNjcmVlbiwgYm9vbCBpbmNyZW1lCiAgICAgICAgICAgICAv
LyBBc2sgdGhlIHdpbmRvdyBzZXJ2ZXIgdG8gcHJvdmlkZSB1cyBhIGNvbXBvc2l0ZWQgdmVyc2lv
biBvZiB0aGUgKnJlYWwqIHdpbmRvdyBjb250ZW50IGluY2x1ZGluZyBzdXJmYWNlcyAoaS5lLiBP
cGVuR0wgY29udGVudCkKICAgICAgICAgICAgIC8vIE5vdGUgdGhhdCB0aGUgcmV0dXJuZWQgaW1h
Z2UgbWlnaHQgZGlmZmVyIHZlcnkgc2xpZ2h0bHkgZnJvbSB0aGUgd2luZG93IGJhY2tpbmcgYmVj
YXVzZSBvZiBkaXRoZXJpbmcgYXJ0aWZhY3RzIGluIHRoZSB3aW5kb3cgc2VydmVyIGNvbXBvc2l0
b3IuCiAgICAgICAgICAgICBOU1dpbmRvdyAqd2luZG93ID0gW3ZpZXcgd2luZG93XTsKLSAgICAg
ICAgICAgIENHSW1hZ2VSZWYgaW1hZ2UgPSB0YWtlV2luZG93U25hcHNob3QoW3dpbmRvdyB3aW5k
b3dOdW1iZXJdLCBrQ0dXaW5kb3dJbWFnZURlZmF1bHQpOworICAgICAgICAgICAgYXV0byBpbWFn
ZSA9IHRha2VXaW5kb3dTbmFwc2hvdChbd2luZG93IHdpbmRvd051bWJlcl0sIGtDR1dpbmRvd0lt
YWdlRGVmYXVsdCk7CiAKICAgICAgICAgICAgIGlmIChpbWFnZSkgewogICAgICAgICAgICAgICAg
IC8vIFdvcmsgYXJvdW5kIDxyZGFyOi8vcHJvYmxlbS8xNzA4NDk5Mz47IHJlLXJlcXVlc3QgdGhl
IHNuYXBzaG90IGF0IGtDR1dpbmRvd0ltYWdlTm9taW5hbFJlc29sdXRpb24gaWYgaXQgd2FzIGNh
cHR1cmVkIGF0IHRoZSB3cm9uZyBzY2FsZS4KICAgICAgICAgICAgICAgICBDR0Zsb2F0IGRlc2ly
ZWRTbmFwc2hvdFdpZHRoID0gd2luZG93LmZyYW1lLnNpemUud2lkdGggKiBkZXZpY2VTY2FsZUZh
Y3RvcjsKLSAgICAgICAgICAgICAgICBpZiAoQ0dJbWFnZUdldFdpZHRoKGltYWdlKSAhPSBkZXNp
cmVkU25hcHNob3RXaWR0aCkgewotICAgICAgICAgICAgICAgICAgICBDR0ltYWdlUmVsZWFzZShp
bWFnZSk7CisgICAgICAgICAgICAgICAgaWYgKENHSW1hZ2VHZXRXaWR0aChpbWFnZS5nZXQoKSkg
IT0gZGVzaXJlZFNuYXBzaG90V2lkdGgpCiAgICAgICAgICAgICAgICAgICAgIGltYWdlID0gdGFr
ZVdpbmRvd1NuYXBzaG90KFt3aW5kb3cgd2luZG93TnVtYmVyXSwga0NHV2luZG93SW1hZ2VOb21p
bmFsUmVzb2x1dGlvbik7Ci0gICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogCiAgICAg
ICAgICAgICBpZiAoIWltYWdlKQogICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0g
ICAgICAgICAgICBDR0NvbnRleHREcmF3SW1hZ2UoY29udGV4dCwgQ0dSZWN0TWFrZSgwLCAwLCBD
R0ltYWdlR2V0V2lkdGgoaW1hZ2UpLCBDR0ltYWdlR2V0SGVpZ2h0KGltYWdlKSksIGltYWdlKTsK
LSAgICAgICAgICAgIENHSW1hZ2VSZWxlYXNlKGltYWdlKTsKKyAgICAgICAgICAgIENHQ29udGV4
dERyYXdJbWFnZShjb250ZXh0LCBDR1JlY3RNYWtlKDAsIDAsIENHSW1hZ2VHZXRXaWR0aChpbWFn
ZS5nZXQoKSksIENHSW1hZ2VHZXRIZWlnaHQoaW1hZ2UuZ2V0KCkpKSwgaW1hZ2UuZ2V0KCkpOwog
CiAgICAgICAgICAgICBpZiAoW3ZpZXcgaXNUcmFja2luZ1JlcGFpbnRzXSkKICAgICAgICAgICAg
ICAgICBwYWludFJlcGFpbnRSZWN0T3ZlcmxheSh2aWV3LCBjb250ZXh0KTsKZGlmZiAtLWdpdCBh
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9SZXNvdXJjZUxvYWREZWxlZ2F0ZS5tbSBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL21hYy9SZXNvdXJjZUxvYWREZWxlZ2F0ZS5tbQppbmRleCA1MzlkMTZh
OGEwY2ZiYmFmYTBlMzQwMWY2NDgzOWUwMjliYWYzMjkwLi4wYTgzMmE5ZGQ2MDU5YjY2NWRmNzg5
NTU5MzgzMjQ2ODhhOTM5MjgzIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMv
UmVzb3VyY2VMb2FkRGVsZWdhdGUubW0KKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1Jl
c291cmNlTG9hZERlbGVnYXRlLm1tCkBAIC0xNzIsNyArMTcyLDcgQEAgLShOU1VSTFJlcXVlc3Qg
Kil3ZWJWaWV3OiAoV2ViVmlldyAqKXd2IHJlc291cmNlOmlkZW50aWZpZXIgd2lsbFNlbmRSZXF1
ZXN0OiAoTlMKICAgICAgICAgfQogICAgIH0KIAotICAgIGlmIChkaXNhbGxvd2VkVVJMcyAmJiBD
RlNldENvbnRhaW5zVmFsdWUoZGlzYWxsb3dlZFVSTHMsIChfX2JyaWRnZSBDRlVSTFJlZil1cmwp
KQorICAgIGlmIChkaXNhbGxvd2VkVVJMcyAmJiBDRlNldENvbnRhaW5zVmFsdWUoZGlzYWxsb3dl
ZFVSTHMuZ2V0KCksIChfX2JyaWRnZSBDRlVSTFJlZil1cmwpKQogICAgICAgICByZXR1cm4gbmls
OwogCiAgICAgYXV0byBuZXdSZXF1ZXN0ID0gYWRvcHROUyhbcmVxdWVzdCBtdXRhYmxlQ29weV0p
OwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1Rlc3RSdW5uZXJNYWMubW0g
Yi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVGVzdFJ1bm5lck1hYy5tbQppbmRleCAyNGNlMjJm
N2ZkYTc2ZDU1Zjg2ZTZhNWQ0YTFmYmJiYThlYzJiNjBmLi4wOWRjMmM0NTU4NWYwMDdmMDU2MTY1
MWQxNzBlYzQzNGU1ZGZlZWY3IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMv
VGVzdFJ1bm5lck1hYy5tbQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVGVzdFJ1bm5l
ck1hYy5tbQpAQCAtMTM3LDEzICsxMzcsMTMgQEAgdm9pZCBUZXN0UnVubmVyOjphZGREaXNhbGxv
d2VkVVJMKEpTU3RyaW5nUmVmIHVybCkKICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHVybENG
ID0gYWRvcHRDRihKU1N0cmluZ0NvcHlDRlN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCB1cmwp
KTsKIAogICAgIGlmICghZGlzYWxsb3dlZFVSTHMpCi0gICAgICAgIGRpc2FsbG93ZWRVUkxzID0g
Q0ZTZXRDcmVhdGVNdXRhYmxlKGtDRkFsbG9jYXRvckRlZmF1bHQsIDAsIE5VTEwpOworICAgICAg
ICBkaXNhbGxvd2VkVVJMcyA9IGFkb3B0Q0YoQ0ZTZXRDcmVhdGVNdXRhYmxlKGtDRkFsbG9jYXRv
ckRlZmF1bHQsIDAsIE5VTEwpKTsKIAogICAgIC8vIENhbm9uaWNhbGl6ZSB0aGUgVVJMCiAgICAg
TlNVUkxSZXF1ZXN0ICpyZXF1ZXN0ID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNV
UkwgVVJMV2l0aFN0cmluZzooX19icmlkZ2UgTlNTdHJpbmcgKil1cmxDRi5nZXQoKV1dOwogICAg
IHJlcXVlc3QgPSBbTlNVUkxQcm90b2NvbCBjYW5vbmljYWxSZXF1ZXN0Rm9yUmVxdWVzdDpyZXF1
ZXN0XTsKIAotICAgIENGU2V0QWRkVmFsdWUoZGlzYWxsb3dlZFVSTHMsIChfX2JyaWRnZSBDRlVS
TFJlZilbcmVxdWVzdCBVUkxdKTsKKyAgICBDRlNldEFkZFZhbHVlKGRpc2FsbG93ZWRVUkxzLmdl
dCgpLCAoX19icmlkZ2UgQ0ZVUkxSZWYpW3JlcXVlc3QgVVJMXSk7CiB9CiAKIGJvb2wgVGVzdFJ1
bm5lcjo6Y2FsbFNob3VsZENsb3NlT25XZWJWaWV3KCkKQEAgLTU3Nyw3ICs1NzcsNyBAQCB2b2lk
IFRlc3RSdW5uZXI6OnNldFdhaXRUb0R1bXAoYm9vbCB3YWl0VW50aWxEb25lKQogewogICAgIG1f
d2FpdFRvRHVtcCA9IHdhaXRVbnRpbERvbmU7CiAgICAgaWYgKG1fd2FpdFRvRHVtcCAmJiBtX3Rp
bWVvdXQgJiYgc2hvdWxkU2V0V2FpdFRvRHVtcFdhdGNoZG9nKCkpCi0gICAgICAgIHNldFdhaXRU
b0R1bXBXYXRjaGRvZyhDRlJ1bkxvb3BUaW1lckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBD
RkFic29sdXRlVGltZUdldEN1cnJlbnQoKSArIG1fdGltZW91dCAvIDEwMDAuMCwgMCwgMCwgMCwg
d2FpdFVudGlsRG9uZVdhdGNoZG9nRmlyZWQsIE5VTEwpKTsKKyAgICAgICAgc2V0V2FpdFRvRHVt
cFdhdGNoZG9nKGFkb3B0Q0YoQ0ZSdW5Mb29wVGltZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVs
dCwgQ0ZBYnNvbHV0ZVRpbWVHZXRDdXJyZW50KCkgKyBtX3RpbWVvdXQgLyAxMDAwLjAsIDAsIDAs
IDAsIHdhaXRVbnRpbERvbmVXYXRjaGRvZ0ZpcmVkLCBOVUxMKSkpOwogfQogCiBpbnQgVGVzdFJ1
bm5lcjo6d2luZG93Q291bnQoKQpkaWZmIC0tZ2l0IGEvVG9vbHMvRm9udFdpdGhGZWF0dXJlcy9G
b250V2l0aEZlYXR1cmVzL21haW4uY3BwIGIvVG9vbHMvRm9udFdpdGhGZWF0dXJlcy9Gb250V2l0
aEZlYXR1cmVzL21haW4uY3BwCmluZGV4IGM0ZWNkNzY1ODRiOGU3YTdiMTdmN2RjNGI0MjAxMDU0
YmE1ZmIxYWQuLjBkOGM4OTVjNjhlYjAwZGI3ZTBlNWFmZDVlMzhhMTVjY2EyZWZlYTggMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0ZvbnRXaXRoRmVhdHVyZXMvRm9udFdpdGhGZWF0dXJlcy9tYWluLmNwcAor
KysgYi9Ub29scy9Gb250V2l0aEZlYXR1cmVzL0ZvbnRXaXRoRmVhdHVyZXMvbWFpbi5jcHAKQEAg
LTMyLDUwICszMiwzOSBAQAogI2luY2x1ZGUgPEltYWdlSU8vSW1hZ2VJTy5oPgogI2luY2x1ZGUg
PGZzdHJlYW0+CiAKLXN0YXRpYyBDVEZvbnREZXNjcmlwdG9yUmVmIGNvbnN0cnVjdEZvbnRXaXRo
VHJ1ZVR5cGVGZWF0dXJlKENURm9udERlc2NyaXB0b3JSZWYgZm9udERlc2NyaXB0b3IsIGludCB0
eXBlLCBpbnQgc2VsZWN0b3IpCitzdGF0aWMgUmV0YWluUHRyPENURm9udERlc2NyaXB0b3JSZWY+
IGNvbnN0cnVjdEZvbnRXaXRoVHJ1ZVR5cGVGZWF0dXJlKENURm9udERlc2NyaXB0b3JSZWYgZm9u
dERlc2NyaXB0b3IsIGludCB0eXBlLCBpbnQgc2VsZWN0b3IpCiB7Ci0gICAgQ0ZOdW1iZXJSZWYg
dHlwZVZhbHVlID0gQ0ZOdW1iZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwga0NGTnVtYmVy
SW50VHlwZSwgJnR5cGUpOwotICAgIENGTnVtYmVyUmVmIHNlbGVjdG9yVmFsdWUgPSBDRk51bWJl
ckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrQ0ZOdW1iZXJJbnRUeXBlLCAmc2VsZWN0b3Ip
OworICAgIGF1dG8gdHlwZVZhbHVlID0gYWRvcHRDRihDRk51bWJlckNyZWF0ZShrQ0ZBbGxvY2F0
b3JEZWZhdWx0LCBrQ0ZOdW1iZXJJbnRUeXBlLCAmdHlwZSkpOworICAgIGF1dG8gc2VsZWN0b3JW
YWx1ZSA9IGFkb3B0Q0YoQ0ZOdW1iZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwga0NGTnVt
YmVySW50VHlwZSwgJnNlbGVjdG9yKSk7CiAgICAgQ0ZUeXBlUmVmIGZlYXR1cmVEaWN0aW9uYXJ5
S2V5c1tdID0geyBrQ1RGb250RmVhdHVyZVR5cGVJZGVudGlmaWVyS2V5LCBrQ1RGb250RmVhdHVy
ZVNlbGVjdG9ySWRlbnRpZmllcktleSB9OwotICAgIENGVHlwZVJlZiBmZWF0dXJlRGljdGlvbmFy
eVZhbHVlc1tdID0geyB0eXBlVmFsdWUsIHNlbGVjdG9yVmFsdWUgfTsKLSAgICBDRkRpY3Rpb25h
cnlSZWYgZmVhdHVyZURpY3Rpb25hcnkgPSBDRkRpY3Rpb25hcnlDcmVhdGUoa0NGQWxsb2NhdG9y
RGVmYXVsdCwgZmVhdHVyZURpY3Rpb25hcnlLZXlzLCBmZWF0dXJlRGljdGlvbmFyeVZhbHVlcywg
MiwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1
ZUNhbGxCYWNrcyk7Ci0gICAgQ0ZSZWxlYXNlKHR5cGVWYWx1ZSk7Ci0gICAgQ0ZSZWxlYXNlKHNl
bGVjdG9yVmFsdWUpOworICAgIENGVHlwZVJlZiBmZWF0dXJlRGljdGlvbmFyeVZhbHVlc1tdID0g
eyB0eXBlVmFsdWUuZ2V0KCksIHNlbGVjdG9yVmFsdWUuZ2V0KCkgfTsKKyAgICBhdXRvIGZlYXR1
cmVEaWN0aW9uYXJ5ID0gYWRvcHRDRihDRkRpY3Rpb25hcnlDcmVhdGUoa0NGQWxsb2NhdG9yRGVm
YXVsdCwgZmVhdHVyZURpY3Rpb25hcnlLZXlzLCBmZWF0dXJlRGljdGlvbmFyeVZhbHVlcywgMiwg
JmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNh
bGxCYWNrcykpOwogCi0gICAgQ0ZUeXBlUmVmIGZlYXR1cmVTZXR0aW5nc1ZhbHVlc1tdID0geyBm
ZWF0dXJlRGljdGlvbmFyeSB9OwotICAgIENGQXJyYXlSZWYgZm9udEZlYXR1cmVTZXR0aW5ncyA9
IENGQXJyYXlDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgZmVhdHVyZVNldHRpbmdzVmFsdWVz
LCAxLCAma0NGVHlwZUFycmF5Q2FsbEJhY2tzKTsKLSAgICBDRlJlbGVhc2UoZmVhdHVyZURpY3Rp
b25hcnkpOworICAgIENGVHlwZVJlZiBmZWF0dXJlU2V0dGluZ3NWYWx1ZXNbXSA9IHsgZmVhdHVy
ZURpY3Rpb25hcnkuZ2V0KCkgfTsKKyAgICBhdXRvIGZvbnRGZWF0dXJlU2V0dGluZ3MgPSBhZG9w
dENGKENGQXJyYXlDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgZmVhdHVyZVNldHRpbmdzVmFs
dWVzLCAxLCAma0NGVHlwZUFycmF5Q2FsbEJhY2tzKSk7CiAKICAgICBDRlR5cGVSZWYgZm9udERl
c2NyaXB0b3JLZXlzW10gPSB7IGtDVEZvbnRGZWF0dXJlU2V0dGluZ3NBdHRyaWJ1dGUgfTsKLSAg
ICBDRlR5cGVSZWYgZm9udERlc2NyaXB0b3JWYWx1ZXNbXSA9IHsgZm9udEZlYXR1cmVTZXR0aW5n
cyB9OwotICAgIENGRGljdGlvbmFyeVJlZiBmb250RGVzY3JpcHRvckF0dHJpYnV0ZXMgPSBDRkRp
Y3Rpb25hcnlDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgZm9udERlc2NyaXB0b3JLZXlzLCBm
b250RGVzY3JpcHRvclZhbHVlcywgMSwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAm
a0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcyk7Ci0gICAgQ0ZSZWxlYXNlKGZvbnRGZWF0
dXJlU2V0dGluZ3MpOworICAgIENGVHlwZVJlZiBmb250RGVzY3JpcHRvclZhbHVlc1tdID0geyBm
b250RmVhdHVyZVNldHRpbmdzLmdldCgpIH07CisgICAgYXV0byBmb250RGVzY3JpcHRvckF0dHJp
YnV0ZXMgPSBhZG9wdENGKENGRGljdGlvbmFyeUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBm
b250RGVzY3JpcHRvcktleXMsIGZvbnREZXNjcmlwdG9yVmFsdWVzLCAxLCAma0NGVHlwZURpY3Rp
b25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7CiAK
LSAgICBDVEZvbnREZXNjcmlwdG9yUmVmIG1vZGlmaWVkRm9udERlc2NyaXB0b3IgPSBDVEZvbnRE
ZXNjcmlwdG9yQ3JlYXRlQ29weVdpdGhBdHRyaWJ1dGVzKGZvbnREZXNjcmlwdG9yLCBmb250RGVz
Y3JpcHRvckF0dHJpYnV0ZXMpOwotICAgIENGUmVsZWFzZShmb250RGVzY3JpcHRvckF0dHJpYnV0
ZXMpOwotICAgIHJldHVybiBtb2RpZmllZEZvbnREZXNjcmlwdG9yOworICAgIHJldHVybiBhZG9w
dENGKENURm9udERlc2NyaXB0b3JDcmVhdGVDb3B5V2l0aEF0dHJpYnV0ZXMoZm9udERlc2NyaXB0
b3IsIGZvbnREZXNjcmlwdG9yQXR0cmlidXRlcy5nZXQoKSkpOwogfQogCi1zdGF0aWMgQ1RGb250
RGVzY3JpcHRvclJlZiBjb25zdHJ1Y3RGb250V2l0aE9wZW5UeXBlRmVhdHVyZShDVEZvbnREZXNj
cmlwdG9yUmVmIGZvbnREZXNjcmlwdG9yLCBDRlN0cmluZ1JlZiBmZWF0dXJlLCBpbnQgdmFsdWUp
CitzdGF0aWMgUmV0YWluUHRyPENURm9udERlc2NyaXB0b3JSZWY+IGNvbnN0cnVjdEZvbnRXaXRo
T3BlblR5cGVGZWF0dXJlKENURm9udERlc2NyaXB0b3JSZWYgZm9udERlc2NyaXB0b3IsIENGU3Ry
aW5nUmVmIGZlYXR1cmUsIGludCB2YWx1ZSkKIHsKLSAgICBDRk51bWJlclJlZiBmZWF0dXJlVmFs
dWUgPSBDRk51bWJlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrQ0ZOdW1iZXJJbnRUeXBl
LCAmdmFsdWUpOworICAgIGF1dG8gZmVhdHVyZVZhbHVlID0gYWRvcHRDRihDRk51bWJlckNyZWF0
ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrQ0ZOdW1iZXJJbnRUeXBlLCAmdmFsdWUpKTsKICAgICBD
RlR5cGVSZWYgZmVhdHVyZURpY3Rpb25hcnlLZXlzW10gPSB7IGtDVEZvbnRPcGVuVHlwZUZlYXR1
cmVUYWcsIGtDVEZvbnRPcGVuVHlwZUZlYXR1cmVWYWx1ZSB9OwotICAgIENGVHlwZVJlZiBmZWF0
dXJlRGljdGlvbmFyeVZhbHVlc1tdID0geyBmZWF0dXJlLCBmZWF0dXJlVmFsdWUgfTsKLSAgICBD
RkRpY3Rpb25hcnlSZWYgZmVhdHVyZURpY3Rpb25hcnkgPSBDRkRpY3Rpb25hcnlDcmVhdGUoa0NG
QWxsb2NhdG9yRGVmYXVsdCwgZmVhdHVyZURpY3Rpb25hcnlLZXlzLCBmZWF0dXJlRGljdGlvbmFy
eVZhbHVlcywgMiwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rp
b25hcnlWYWx1ZUNhbGxCYWNrcyk7Ci0gICAgQ0ZSZWxlYXNlKGZlYXR1cmVWYWx1ZSk7CisgICAg
Q0ZUeXBlUmVmIGZlYXR1cmVEaWN0aW9uYXJ5VmFsdWVzW10gPSB7IGZlYXR1cmUsIGZlYXR1cmVW
YWx1ZS5nZXQoKSB9OworICAgIGF1dG8gZmVhdHVyZURpY3Rpb25hcnkgPSBhZG9wdENGKENGRGlj
dGlvbmFyeUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBmZWF0dXJlRGljdGlvbmFyeUtleXMs
IGZlYXR1cmVEaWN0aW9uYXJ5VmFsdWVzLCAyLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFj
a3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7CiAKLSAgICBDRlR5cGVSZWYg
ZmVhdHVyZVNldHRpbmdzVmFsdWVzW10gPSB7IGZlYXR1cmVEaWN0aW9uYXJ5IH07Ci0gICAgQ0ZB
cnJheVJlZiBmb250RmVhdHVyZVNldHRpbmdzID0gQ0ZBcnJheUNyZWF0ZShrQ0ZBbGxvY2F0b3JE
ZWZhdWx0LCBmZWF0dXJlU2V0dGluZ3NWYWx1ZXMsIDEsICZrQ0ZUeXBlQXJyYXlDYWxsQmFja3Mp
OwotICAgIENGUmVsZWFzZShmZWF0dXJlRGljdGlvbmFyeSk7CisgICAgQ0ZUeXBlUmVmIGZlYXR1
cmVTZXR0aW5nc1ZhbHVlc1tdID0geyBmZWF0dXJlRGljdGlvbmFyeS5nZXQoKSB9OworICAgIGF1
dG8gZm9udEZlYXR1cmVTZXR0aW5ncyA9IGFkb3B0Q0YoQ0ZBcnJheUNyZWF0ZShrQ0ZBbGxvY2F0
b3JEZWZhdWx0LCBmZWF0dXJlU2V0dGluZ3NWYWx1ZXMsIDEsICZrQ0ZUeXBlQXJyYXlDYWxsQmFj
a3MpKTsKIAogICAgIENGVHlwZVJlZiBmb250RGVzY3JpcHRvcktleXNbXSA9IHsga0NURm9udEZl
YXR1cmVTZXR0aW5nc0F0dHJpYnV0ZSB9OwotICAgIENGVHlwZVJlZiBmb250RGVzY3JpcHRvclZh
bHVlc1tdID0geyBmb250RmVhdHVyZVNldHRpbmdzIH07Ci0gICAgQ0ZEaWN0aW9uYXJ5UmVmIGZv
bnREZXNjcmlwdG9yQXR0cmlidXRlcyA9IENGRGljdGlvbmFyeUNyZWF0ZShrQ0ZBbGxvY2F0b3JE
ZWZhdWx0LCBmb250RGVzY3JpcHRvcktleXMsIGZvbnREZXNjcmlwdG9yVmFsdWVzLCAxLCAma0NG
VHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJh
Y2tzKTsKLSAgICBDRlJlbGVhc2UoZm9udEZlYXR1cmVTZXR0aW5ncyk7CisgICAgQ0ZUeXBlUmVm
IGZvbnREZXNjcmlwdG9yVmFsdWVzW10gPSB7IGZvbnRGZWF0dXJlU2V0dGluZ3MuZ2V0KCkgfTsK
KyAgICBhdXRvIGZvbnREZXNjcmlwdG9yQXR0cmlidXRlcyA9IGFkb3B0Q0YoQ0ZEaWN0aW9uYXJ5
Q3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGZvbnREZXNjcmlwdG9yS2V5cywgZm9udERlc2Ny
aXB0b3JWYWx1ZXMsIDEsICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVE
aWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpKTsKIAotICAgIENURm9udERlc2NyaXB0b3JSZWYgbW9k
aWZpZWRGb250RGVzY3JpcHRvciA9IENURm9udERlc2NyaXB0b3JDcmVhdGVDb3B5V2l0aEF0dHJp
YnV0ZXMoZm9udERlc2NyaXB0b3IsIGZvbnREZXNjcmlwdG9yQXR0cmlidXRlcyk7Ci0gICAgQ0ZS
ZWxlYXNlKGZvbnREZXNjcmlwdG9yQXR0cmlidXRlcyk7Ci0gICAgcmV0dXJuIG1vZGlmaWVkRm9u
dERlc2NyaXB0b3I7CisgICAgcmV0dXJuIGFkb3B0Q0YoQ1RGb250RGVzY3JpcHRvckNyZWF0ZUNv
cHlXaXRoQXR0cmlidXRlcyhmb250RGVzY3JpcHRvciwgZm9udERlc2NyaXB0b3JBdHRyaWJ1dGVz
LmdldCgpKSk7CiB9CiAKIHN0YXRpYyB2b2lkIGRyYXdUZXh0KENHQ29udGV4dFJlZiBjb250ZXh0
LCBDVEZvbnREZXNjcmlwdG9yUmVmIGZvbnREZXNjcmlwdG9yLCBDRlN0cmluZ1JlZiBwcmVmaXgs
IENHUG9pbnQgbG9jYXRpb24pCkBAIC04NCwzNyArNzMsMjkgQEAgc3RhdGljIHZvaWQgZHJhd1Rl
eHQoQ0dDb250ZXh0UmVmIGNvbnRleHQsIENURm9udERlc2NyaXB0b3JSZWYgZm9udERlc2NyaXB0
b3IsIEMKICAgICBDR0NvbnRleHRTZXRUZXh0UG9zaXRpb24oY29udGV4dCwgbG9jYXRpb24ueCwg
bG9jYXRpb24ueSk7CiAKICAgICBDR0Zsb2F0IGZvbnRTaXplID0gMjU7Ci0gICAgQ1RGb250UmVm
IGZvbnQgPSBDVEZvbnRDcmVhdGVXaXRoRm9udERlc2NyaXB0b3IoZm9udERlc2NyaXB0b3IsIGZv
bnRTaXplLCBudWxscHRyKTsKKyAgICBhdXRvIGZvbnQgPSBhZG9wdENGKENURm9udENyZWF0ZVdp
dGhGb250RGVzY3JpcHRvcihmb250RGVzY3JpcHRvciwgZm9udFNpemUsIG51bGxwdHIpKTsKIAot
ICAgIENGTXV0YWJsZVN0cmluZ1JlZiBzdHJpbmcgPSBDRlN0cmluZ0NyZWF0ZU11dGFibGUoa0NG
QWxsb2NhdG9yRGVmYXVsdCwgMCk7Ci0gICAgQ0ZTdHJpbmdBcHBlbmQoc3RyaW5nLCBwcmVmaXgp
OwotICAgIENGU3RyaW5nQXBwZW5kKHN0cmluZywgQ0ZTVFIoIkFCQ0RFRkdISUpLTE1OT1BRUlNU
VVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXoiKSk7CisgICAgYXV0byBzdHJpbmcgPSBh
ZG9wdENGKENGU3RyaW5nQ3JlYXRlTXV0YWJsZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAwKSk7Cisg
ICAgQ0ZTdHJpbmdBcHBlbmQoc3RyaW5nLmdldCgpLCBwcmVmaXgpOworICAgIENGU3RyaW5nQXBw
ZW5kKHN0cmluZy5nZXQoKSwgQ0ZTVFIoIkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVm
Z2hpamtsbW5vcHFyc3R1dnd4eXoiKSk7CiAKLSAgICBDR0NvbG9yUmVmIHJlZCA9IENHQ29sb3JD
cmVhdGVHZW5lcmljUkdCKDEsIDAsIDAsIDEpOworICAgIGF1dG8gcmVkID0gYWRvcHRDRihDR0Nv
bG9yQ3JlYXRlR2VuZXJpY1JHQigxLCAwLCAwLCAxKSk7CiAgICAgQ0ZUeXBlUmVmIGxpbmVLZXlz
W10gPSB7IGtDVEZvcmVncm91bmRDb2xvckF0dHJpYnV0ZU5hbWUgfTsKLSAgICBDRlR5cGVSZWYg
bGluZVZhbHVlc1tdID0geyByZWQgfTsKLSAgICBDRkRpY3Rpb25hcnlSZWYgbGluZUF0dHJpYnV0
ZXMgPSBDRkRpY3Rpb25hcnlDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgbGluZUtleXMsIGxp
bmVWYWx1ZXMsIDEsICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0
aW9uYXJ5VmFsdWVDYWxsQmFja3MpOwotICAgIENHQ29sb3JSZWxlYXNlKHJlZCk7CisgICAgQ0ZU
eXBlUmVmIGxpbmVWYWx1ZXNbXSA9IHsgcmVkLmdldCgpIH07CisgICAgYXV0byBsaW5lQXR0cmli
dXRlcyA9IGFkb3B0Q0YoQ0ZEaWN0aW9uYXJ5Q3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGxp
bmVLZXlzLCBsaW5lVmFsdWVzLCAxLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZr
Q0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7CiAKLSAgICBDRkF0dHJpYnV0ZWRTdHJp
bmdSZWYgYXR0cmlidXRlZFN0cmluZyA9IENGQXR0cmlidXRlZFN0cmluZ0NyZWF0ZShrQ0ZBbGxv
Y2F0b3JEZWZhdWx0LCBzdHJpbmcsIGxpbmVBdHRyaWJ1dGVzKTsKLSAgICBDRlJlbGVhc2UobGlu
ZUF0dHJpYnV0ZXMpOworICAgIGF1dG8gYXR0cmlidXRlZFN0cmluZyA9IGFkb3B0Q0YoQ0ZBdHRy
aWJ1dGVkU3RyaW5nQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIHN0cmluZy5nZXQoKSwgbGlu
ZUF0dHJpYnV0ZXMuZ2V0KCkpKTsKIAotICAgIENGTXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmdSZWYg
bXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcgPSBDRkF0dHJpYnV0ZWRTdHJpbmdDcmVhdGVNdXRhYmxl
Q29weShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAwLCBhdHRyaWJ1dGVkU3RyaW5nKTsKLSAgICBDRlJl
bGVhc2UoYXR0cmlidXRlZFN0cmluZyk7CisgICAgYXV0byBtdXRhYmxlQXR0cmlidXRlZFN0cmlu
ZyA9IGFkb3B0Q0YoQ0ZBdHRyaWJ1dGVkU3RyaW5nQ3JlYXRlTXV0YWJsZUNvcHkoa0NGQWxsb2Nh
dG9yRGVmYXVsdCwgMCwgYXR0cmlidXRlZFN0cmluZy5nZXQoKSkpOwogCi0gICAgQ1RGb250UmVm
IG1vbm9zcGFjZUZvbnQgPSBDVEZvbnRDcmVhdGVXaXRoTmFtZShDRlNUUigiQ291cmllciIpLCBm
b250U2l6ZSwgbnVsbHB0cik7Ci0gICAgQ0ZBdHRyaWJ1dGVkU3RyaW5nU2V0QXR0cmlidXRlKG11
dGFibGVBdHRyaWJ1dGVkU3RyaW5nLCBDRlJhbmdlTWFrZSgwLCBDRlN0cmluZ0dldExlbmd0aChw
cmVmaXgpKSwga0NURm9udEF0dHJpYnV0ZU5hbWUsIG1vbm9zcGFjZUZvbnQpOwotICAgIENGUmVs
ZWFzZShtb25vc3BhY2VGb250KTsKKyAgICBhdXRvIG1vbm9zcGFjZUZvbnQgPSBhZG9wdENGKENU
Rm9udENyZWF0ZVdpdGhOYW1lKENGU1RSKCJDb3VyaWVyIiksIGZvbnRTaXplLCBudWxscHRyKSk7
CisgICAgQ0ZBdHRyaWJ1dGVkU3RyaW5nU2V0QXR0cmlidXRlKG11dGFibGVBdHRyaWJ1dGVkU3Ry
aW5nLmdldCgpLCBDRlJhbmdlTWFrZSgwLCBDRlN0cmluZ0dldExlbmd0aChwcmVmaXgpKSwga0NU
Rm9udEF0dHJpYnV0ZU5hbWUsIG1vbm9zcGFjZUZvbnQuZ2V0KCkpOwogCi0gICAgQ0ZBdHRyaWJ1
dGVkU3RyaW5nU2V0QXR0cmlidXRlKG11dGFibGVBdHRyaWJ1dGVkU3RyaW5nLCBDRlJhbmdlTWFr
ZShDRlN0cmluZ0dldExlbmd0aChwcmVmaXgpLCBDRlN0cmluZ0dldExlbmd0aChzdHJpbmcpIC0g
Q0ZTdHJpbmdHZXRMZW5ndGgocHJlZml4KSksIGtDVEZvbnRBdHRyaWJ1dGVOYW1lLCBmb250KTsK
LSAgICBDRlJlbGVhc2Uoc3RyaW5nKTsKLSAgICBDRlJlbGVhc2UoZm9udCk7CisgICAgQ0ZBdHRy
aWJ1dGVkU3RyaW5nU2V0QXR0cmlidXRlKG11dGFibGVBdHRyaWJ1dGVkU3RyaW5nLmdldCgpLCBD
RlJhbmdlTWFrZShDRlN0cmluZ0dldExlbmd0aChwcmVmaXgpLCBDRlN0cmluZ0dldExlbmd0aChz
dHJpbmcuZ2V0KCkpIC0gQ0ZTdHJpbmdHZXRMZW5ndGgocHJlZml4KSksIGtDVEZvbnRBdHRyaWJ1
dGVOYW1lLCBmb250LmdldCgpKTsKIAotICAgIENUTGluZVJlZiBsaW5lID0gQ1RMaW5lQ3JlYXRl
V2l0aEF0dHJpYnV0ZWRTdHJpbmcobXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcpOwotICAgIENGUmVs
ZWFzZShtdXRhYmxlQXR0cmlidXRlZFN0cmluZyk7CisgICAgYXV0byBsaW5lID0gYWRvcHRDRihD
VExpbmVDcmVhdGVXaXRoQXR0cmlidXRlZFN0cmluZyhtdXRhYmxlQXR0cmlidXRlZFN0cmluZy5n
ZXQoKSkpOwogCi0gICAgQ1RMaW5lRHJhdyhsaW5lLCBjb250ZXh0KTsKLSAgICBDRlJlbGVhc2Uo
bGluZSk7CisgICAgQ1RMaW5lRHJhdyhsaW5lLmdldCgpLCBjb250ZXh0KTsKIH0KIAogaW50IG1h
aW4oaW50IGFyZ2MsIGNvbnN0IGNoYXIgKiBhcmd2W10pCkBAIC0xMjIsNyArMTAzLDcgQEAgaW50
IG1haW4oaW50IGFyZ2MsIGNvbnN0IGNoYXIgKiBhcmd2W10pCiAgICAgc2l6ZV90IHdpZHRoID0g
MjUwMDsKICAgICBzaXplX3QgaGVpZ2h0ID0gMjAwMDsKICAgICBDR0NvbG9yU3BhY2VSZWYgY29s
b3JTcGFjZSA9IENHQ29sb3JTcGFjZUNyZWF0ZURldmljZVJHQigpOwotICAgIENHQ29udGV4dFJl
ZiBjb250ZXh0ID0gQ0dCaXRtYXBDb250ZXh0Q3JlYXRlKG51bGxwdHIsIHdpZHRoLCBoZWlnaHQs
IDgsIHdpZHRoICogNCwgY29sb3JTcGFjZSwga0NHSW1hZ2VBbHBoYU5vbmVTa2lwTGFzdCk7Cisg
ICAgYXV0byBjb250ZXh0ID0gYWRvcHRDRihDR0JpdG1hcENvbnRleHRDcmVhdGUobnVsbHB0ciwg
d2lkdGgsIGhlaWdodCwgOCwgd2lkdGggKiA0LCBjb2xvclNwYWNlLCBrQ0dJbWFnZUFscGhhTm9u
ZVNraXBMYXN0KSk7CiAgICAgQ0dDb2xvclNwYWNlUmVsZWFzZShjb2xvclNwYWNlKTsKICAgICBU
eXBlIHR5cGUgPSBUeXBlOjpUcnVlVHlwZTsKICAgICBjb25zdCBzdGQ6OnZlY3Rvcjx1aW50OF90
PiBmb250VmVjdG9yID0gZ2VuZXJhdGVGb250KHR5cGUpOwpAQCAtMTMxLDQ5ICsxMTIsNDAgQEAg
aW50IG1haW4oaW50IGFyZ2MsIGNvbnN0IGNoYXIgKiBhcmd2W10pCiAgICAgICAgIG91dHB1dEZp
bGUgPDwgYjsKICAgICBvdXRwdXRGaWxlLmNsb3NlKCk7CiAgICAgCi0gICAgQ0ZEYXRhUmVmIGZv
bnREYXRhID0gQ0ZEYXRhQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGZvbnRWZWN0b3IuZGF0
YSgpLCBmb250VmVjdG9yLnNpemUoKSk7Ci0gICAgQ1RGb250RGVzY3JpcHRvclJlZiBmb250RGVz
Y3JpcHRvciA9IENURm9udE1hbmFnZXJDcmVhdGVGb250RGVzY3JpcHRvckZyb21EYXRhKGZvbnRE
YXRhKTsKLSAgICBDRlJlbGVhc2UoZm9udERhdGEpOworICAgIGF1dG8gZm9udERhdGEgPSBhZG9w
dENGKENGRGF0YUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBmb250VmVjdG9yLmRhdGEoKSwg
Zm9udFZlY3Rvci5zaXplKCkpKTsKKyAgICBhdXRvIGZvbnREZXNjcmlwdG9yID0gYWRvcHRDRihD
VEZvbnRNYW5hZ2VyQ3JlYXRlRm9udERlc2NyaXB0b3JGcm9tRGF0YShmb250RGF0YS5nZXQoKSkp
OwogCiAgICAgaWYgKHR5cGUgPT0gVHlwZTo6T3BlblR5cGUpIHsKICAgICAgICAgQ0ZUeXBlUmVm
IGZlYXR1cmVWYWx1ZXNPcGVuVHlwZVtdID0geyBDRlNUUigibGlnYSIpLCBDRlNUUigiY2xpZyIp
LCBDRlNUUigiZGxpZyIpLCBDRlNUUigiaGxpZyIpLCBDRlNUUigiY2FsdCIpLCBDRlNUUigic3Vi
cyIpLCBDRlNUUigic3VwcyIpLCBDRlNUUigic21jcCIpLCBDRlNUUigiYzJzYyIpLCBDRlNUUigi
cGNhcCIpLCBDRlNUUigiYzJwYyIpLCBDRlNUUigidW5pYyIpLCBDRlNUUigidGl0bCIpLCBDRlNU
Uigib251bSIpLCBDRlNUUigicG51bSIpLCBDRlNUUigidG51bSIpLCBDRlNUUigiZnJhYyIpLCBD
RlNUUigiYWZyYyIpLCBDRlNUUigib3JkbiIpLCBDRlNUUigiemVybyIpLCBDRlNUUigiaGlzdCIp
LCBDRlNUUigianA3OCIpLCBDRlNUUigianA4MyIpLCBDRlNUUigianA5MCIpLCBDRlNUUigianAw
NCIpLCBDRlNUUigic21wbCIpLCBDRlNUUigidHJhZCIpLCBDRlNUUigiZndpZCIpLCBDRlNUUigi
cHdpZCIpLCBDRlNUUigicnVieSIpIH07Ci0gICAgICAgIENGQXJyYXlSZWYgZmVhdHVyZXMgPSBD
RkFycmF5Q3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGZlYXR1cmVWYWx1ZXNPcGVuVHlwZSwg
MzAsICZrQ0ZUeXBlQXJyYXlDYWxsQmFja3MpOwotCi0gICAgICAgIGZvciAoQ0ZJbmRleCBpID0g
MDsgaSA8IENGQXJyYXlHZXRDb3VudChmZWF0dXJlcyk7ICsraSkgewotICAgICAgICAgICAgQ0ZT
dHJpbmdSZWYgZmVhdHVyZSA9IHN0YXRpY19jYXN0PENGU3RyaW5nUmVmPihDRkFycmF5R2V0VmFs
dWVBdEluZGV4KGZlYXR1cmVzLCBpKSk7Ci0gICAgICAgICAgICBDVEZvbnREZXNjcmlwdG9yUmVm
IG1vZGlmaWVkRm9udERlc2NyaXB0b3IgPSBjb25zdHJ1Y3RGb250V2l0aE9wZW5UeXBlRmVhdHVy
ZShmb250RGVzY3JpcHRvciwgZmVhdHVyZSwgMSk7Ci0gICAgICAgICAgICBDRk11dGFibGVTdHJp
bmdSZWYgcHJlZml4ID0gQ0ZTdHJpbmdDcmVhdGVNdXRhYmxlKGtDRkFsbG9jYXRvckRlZmF1bHQs
IDApOwotICAgICAgICAgICAgQ0ZTdHJpbmdBcHBlbmQocHJlZml4LCBmZWF0dXJlKTsKLSAgICAg
ICAgICAgIENGU3RyaW5nQXBwZW5kKHByZWZpeCwgQ0ZTVFIoIiAgKG9uKTogIikpOwotICAgICAg
ICAgICAgZHJhd1RleHQoY29udGV4dCwgbW9kaWZpZWRGb250RGVzY3JpcHRvciwgcHJlZml4LCBD
R1BvaW50TWFrZSgyNSwgMTk1MCAtIDUwICogaSkpOwotICAgICAgICAgICAgQ0ZSZWxlYXNlKHBy
ZWZpeCk7Ci0gICAgICAgICAgICBDRlJlbGVhc2UobW9kaWZpZWRGb250RGVzY3JpcHRvcik7Ci0K
LSAgICAgICAgICAgIG1vZGlmaWVkRm9udERlc2NyaXB0b3IgPSBjb25zdHJ1Y3RGb250V2l0aE9w
ZW5UeXBlRmVhdHVyZShmb250RGVzY3JpcHRvciwgZmVhdHVyZSwgMCk7Ci0gICAgICAgICAgICBw
cmVmaXggPSBDRlN0cmluZ0NyZWF0ZU11dGFibGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgMCk7Ci0g
ICAgICAgICAgICBDRlN0cmluZ0FwcGVuZChwcmVmaXgsIGZlYXR1cmUpOwotICAgICAgICAgICAg
Q0ZTdHJpbmdBcHBlbmQocHJlZml4LCBDRlNUUigiIChvZmYpOiAiKSk7Ci0gICAgICAgICAgICBk
cmF3VGV4dChjb250ZXh0LCBtb2RpZmllZEZvbnREZXNjcmlwdG9yLCBwcmVmaXgsIENHUG9pbnRN
YWtlKDI1LCAxOTI1IC0gNTAgKiBpKSk7Ci0gICAgICAgICAgICBDRlJlbGVhc2UocHJlZml4KTsK
LSAgICAgICAgICAgIENGUmVsZWFzZShtb2RpZmllZEZvbnREZXNjcmlwdG9yKTsKKyAgICAgICAg
YXV0byBmZWF0dXJlcyA9IGFkb3B0Q0YoQ0ZBcnJheUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0
LCBmZWF0dXJlVmFsdWVzT3BlblR5cGUsIDMwLCAma0NGVHlwZUFycmF5Q2FsbEJhY2tzKSk7CisK
KyAgICAgICAgZm9yIChDRkluZGV4IGkgPSAwOyBpIDwgQ0ZBcnJheUdldENvdW50KGZlYXR1cmVz
LmdldCgpKTsgKytpKSB7CisgICAgICAgICAgICBDRlN0cmluZ1JlZiBmZWF0dXJlID0gc3RhdGlj
X2Nhc3Q8Q0ZTdHJpbmdSZWY+KENGQXJyYXlHZXRWYWx1ZUF0SW5kZXgoZmVhdHVyZXMuZ2V0KCks
IGkpKTsKKyAgICAgICAgICAgIGF1dG8gbW9kaWZpZWRGb250RGVzY3JpcHRvciA9IGNvbnN0cnVj
dEZvbnRXaXRoT3BlblR5cGVGZWF0dXJlKGZvbnREZXNjcmlwdG9yLmdldCgpLCBmZWF0dXJlLCAx
KTsKKyAgICAgICAgICAgIGF1dG8gcHJlZml4ID0gYWRvcHRDRihDRlN0cmluZ0NyZWF0ZU11dGFi
bGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgMCkpOworICAgICAgICAgICAgQ0ZTdHJpbmdBcHBlbmQo
cHJlZml4LmdldCgpLCBmZWF0dXJlKTsKKyAgICAgICAgICAgIENGU3RyaW5nQXBwZW5kKHByZWZp
eC5nZXQoKSwgQ0ZTVFIoIiAgKG9uKTogIikpOworICAgICAgICAgICAgZHJhd1RleHQoY29udGV4
dC5nZXQoKSwgbW9kaWZpZWRGb250RGVzY3JpcHRvci5nZXQoKSwgcHJlZml4LmdldCgpLCBDR1Bv
aW50TWFrZSgyNSwgMTk1MCAtIDUwICogaSkpOworCisgICAgICAgICAgICBtb2RpZmllZEZvbnRE
ZXNjcmlwdG9yID0gY29uc3RydWN0Rm9udFdpdGhPcGVuVHlwZUZlYXR1cmUoZm9udERlc2NyaXB0
b3IuZ2V0KCksIGZlYXR1cmUsIDApOworICAgICAgICAgICAgcHJlZml4ID0gYWRvcHRDRihDRlN0
cmluZ0NyZWF0ZU11dGFibGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgMCkpOworICAgICAgICAgICAg
Q0ZTdHJpbmdBcHBlbmQocHJlZml4LmdldCgpLCBmZWF0dXJlKTsKKyAgICAgICAgICAgIENGU3Ry
aW5nQXBwZW5kKHByZWZpeC5nZXQoKSwgQ0ZTVFIoIiAob2ZmKTogIikpOworICAgICAgICAgICAg
ZHJhd1RleHQoY29udGV4dC5nZXQoKSwgbW9kaWZpZWRGb250RGVzY3JpcHRvci5nZXQoKSwgcHJl
Zml4LmdldCgpLCBDR1BvaW50TWFrZSgyNSwgMTkyNSAtIDUwICogaSkpOwogICAgICAgICB9Ci0K
LSAgICAgICAgQ0ZSZWxlYXNlKGZlYXR1cmVzKTsKICAgICB9IGVsc2UgewogICAgICAgICBfX2Js
b2NrIGludCBpID0gMDsKICAgICAgICAgdm9pZCAoXmhhbmRsZXIpKHVpbnQxNl90IHR5cGUsIENG
U3RyaW5nUmVmIHR5cGVTdHJpbmcsIHVpbnQxNl90IHNlbGVjdG9yLCBDRlN0cmluZ1JlZiBzZWxl
Y3RvclN0cmluZykgPSBeKHVpbnQxNl90IHR5cGUsIENGU3RyaW5nUmVmIHR5cGVTdHJpbmcsIHVp
bnQxNl90IHNlbGVjdG9yLCBDRlN0cmluZ1JlZiBzZWxlY3RvclN0cmluZykKICAgICAgICAgewot
ICAgICAgICAgICAgQ1RGb250RGVzY3JpcHRvclJlZiBtb2RpZmllZEZvbnREZXNjcmlwdG9yID0g
Y29uc3RydWN0Rm9udFdpdGhUcnVlVHlwZUZlYXR1cmUoZm9udERlc2NyaXB0b3IsIHR5cGUsIHNl
bGVjdG9yKTsKLSAgICAgICAgICAgIENGTXV0YWJsZVN0cmluZ1JlZiBwcmVmaXggPSBDRlN0cmlu
Z0NyZWF0ZU11dGFibGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgMCk7Ci0gICAgICAgICAgICBDRlN0
cmluZ0FwcGVuZChwcmVmaXgsIHR5cGVTdHJpbmcpOwotICAgICAgICAgICAgQ0ZTdHJpbmdBcHBl
bmQocHJlZml4LCBDRlNUUigiOiAiKSk7Ci0gICAgICAgICAgICBDRlN0cmluZ0FwcGVuZChwcmVm
aXgsIHNlbGVjdG9yU3RyaW5nKTsKLSAgICAgICAgICAgIENGU3RyaW5nQXBwZW5kKHByZWZpeCwg
Q0ZTVFIoIjogIikpOwotICAgICAgICAgICAgd2hpbGUgKENGU3RyaW5nR2V0TGVuZ3RoKHByZWZp
eCkgPCA2NSkKLSAgICAgICAgICAgICAgICBDRlN0cmluZ0FwcGVuZChwcmVmaXgsIENGU1RSKCIg
IikpOwotICAgICAgICAgICAgZHJhd1RleHQoY29udGV4dCwgbW9kaWZpZWRGb250RGVzY3JpcHRv
ciwgcHJlZml4LCBDR1BvaW50TWFrZSgyNSwgMTk1MCAtIDQwICogaSkpOwotICAgICAgICAgICAg
Q0ZSZWxlYXNlKHByZWZpeCk7Ci0gICAgICAgICAgICBDRlJlbGVhc2UobW9kaWZpZWRGb250RGVz
Y3JpcHRvcik7CisgICAgICAgICAgICBhdXRvIG1vZGlmaWVkRm9udERlc2NyaXB0b3IgPSBjb25z
dHJ1Y3RGb250V2l0aFRydWVUeXBlRmVhdHVyZShmb250RGVzY3JpcHRvci5nZXQoKSwgdHlwZSwg
c2VsZWN0b3IpOworICAgICAgICAgICAgYXV0byBwcmVmaXggPSBhZG9wdENGKENGU3RyaW5nQ3Jl
YXRlTXV0YWJsZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAwKSk7CisgICAgICAgICAgICBDRlN0cmlu
Z0FwcGVuZChwcmVmaXguZ2V0KCksIHR5cGVTdHJpbmcpOworICAgICAgICAgICAgQ0ZTdHJpbmdB
cHBlbmQocHJlZml4LmdldCgpLCBDRlNUUigiOiAiKSk7CisgICAgICAgICAgICBDRlN0cmluZ0Fw
cGVuZChwcmVmaXguZ2V0KCksIHNlbGVjdG9yU3RyaW5nKTsKKyAgICAgICAgICAgIENGU3RyaW5n
QXBwZW5kKHByZWZpeC5nZXQoKSwgQ0ZTVFIoIjogIikpOworICAgICAgICAgICAgd2hpbGUgKENG
U3RyaW5nR2V0TGVuZ3RoKHByZWZpeC5nZXQoKSkgPCA2NSkKKyAgICAgICAgICAgICAgICBDRlN0
cmluZ0FwcGVuZChwcmVmaXguZ2V0KCksIENGU1RSKCIgIikpOworICAgICAgICAgICAgZHJhd1Rl
eHQoY29udGV4dC5nZXQoKSwgbW9kaWZpZWRGb250RGVzY3JpcHRvci5nZXQoKSwgcHJlZml4Lmdl
dCgpLCBDR1BvaW50TWFrZSgyNSwgMTk1MCAtIDQwICogaSkpOwogICAgICAgICAgICAgKytpOwog
ICAgICAgICB9OwogICAgICAgICBoYW5kbGVyKGtMaWdhdHVyZXNUeXBlLCBDRlNUUigia0xpZ2F0
dXJlc1R5cGUiKSwga0NvbW1vbkxpZ2F0dXJlc09uU2VsZWN0b3IsIENGU1RSKCJrQ29tbW9uTGln
YXR1cmVzT25TZWxlY3RvciIpKTsKQEAgLTIxNCwxNSArMTg2LDEwIEBAIGludCBtYWluKGludCBh
cmdjLCBjb25zdCBjaGFyICogYXJndltdKQogICAgICAgICBoYW5kbGVyKGtSdWJ5S2FuYVR5cGUs
IENGU1RSKCJrUnVieUthbmFUeXBlIiksIGtSdWJ5S2FuYU9uU2VsZWN0b3IsIENGU1RSKCJrUnVi
eUthbmFPblNlbGVjdG9yIikpOwogICAgIH0KIAotICAgIENGUmVsZWFzZShmb250RGVzY3JpcHRv
cik7Ci0gICAgQ0dJbWFnZVJlZiBpbWFnZSA9IENHQml0bWFwQ29udGV4dENyZWF0ZUltYWdlKGNv
bnRleHQpOwotICAgIENHQ29udGV4dFJlbGVhc2UoY29udGV4dCk7Ci0gICAgQ0ZVUkxSZWYgdXJs
ID0gQ0ZVUkxDcmVhdGVXaXRoRmlsZVN5c3RlbVBhdGgoa0NGQWxsb2NhdG9yRGVmYXVsdCwgQ0ZT
VFIoIi9Wb2x1bWVzL0RhdGEvaG9tZS9tbWF4ZmllbGQvdG1wL291dHB1dC5wbmciKSwga0NGVVJM
UE9TSVhQYXRoU3R5bGUsIEZBTFNFKTsKLSAgICBDR0ltYWdlRGVzdGluYXRpb25SZWYgaW1hZ2VE
ZXN0aW5hdGlvbiA9IENHSW1hZ2VEZXN0aW5hdGlvbkNyZWF0ZVdpdGhVUkwodXJsLCBrVVRUeXBl
UE5HLCAxLCBudWxscHRyKTsKLSAgICBDRlJlbGVhc2UodXJsKTsKLSAgICBDR0ltYWdlRGVzdGlu
YXRpb25BZGRJbWFnZShpbWFnZURlc3RpbmF0aW9uLCBpbWFnZSwgbnVsbHB0cik7Ci0gICAgQ0dJ
bWFnZVJlbGVhc2UoaW1hZ2UpOwotICAgIENHSW1hZ2VEZXN0aW5hdGlvbkZpbmFsaXplKGltYWdl
RGVzdGluYXRpb24pOwotICAgIENGUmVsZWFzZShpbWFnZURlc3RpbmF0aW9uKTsKKyAgICBhdXRv
IGltYWdlID0gYWRvcHRDRihDR0JpdG1hcENvbnRleHRDcmVhdGVJbWFnZShjb250ZXh0LmdldCgp
KSk7CisgICAgYXV0byB1cmwgPSBhZG9wdENGKENGVVJMQ3JlYXRlV2l0aEZpbGVTeXN0ZW1QYXRo
KGtDRkFsbG9jYXRvckRlZmF1bHQsIENGU1RSKCIvVm9sdW1lcy9EYXRhL2hvbWUvbW1heGZpZWxk
L3RtcC9vdXRwdXQucG5nIiksIGtDRlVSTFBPU0lYUGF0aFN0eWxlLCBGQUxTRSkpOworICAgIGF1
dG8gaW1hZ2VEZXN0aW5hdGlvbiA9IGFkb3B0Q0YoQ0dJbWFnZURlc3RpbmF0aW9uQ3JlYXRlV2l0
aFVSTCh1cmwuZ2V0KCksIGtVVFR5cGVQTkcsIDEsIG51bGxwdHIpKTsKKyAgICBDR0ltYWdlRGVz
dGluYXRpb25BZGRJbWFnZShpbWFnZURlc3RpbmF0aW9uLmdldCgpLCBpbWFnZS5nZXQoKSwgbnVs
bHB0cik7CisgICAgQ0dJbWFnZURlc3RpbmF0aW9uRmluYWxpemUoaW1hZ2VEZXN0aW5hdGlvbi5n
ZXQoKSk7CiAgICAgcmV0dXJuIDA7CiB9CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHAgYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHAKaW5kZXggM2Ri
MDIzNDkzNDE1MzllZDQzODcwZTY0NTA2ZDkzMzA3NTQyYzI4OS4uNzQ1YzRjZTgzNWVkY2MxYjMy
MGU5MDNkMzY3Zjc3NmE3NWU0NTczOCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3BwCisrKyBiL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcApAQCAtNzk2
LDcgKzc5Niw3IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlOjpkdW1wRE9NQXNXZWJBcmNoaXZl
KFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUsIFN0cmluZ0J1aWxkCiAjaWYgVVNFKENGKSAmJiAhUExB
VEZPUk0oV0lOX0NBSVJPKSAmJiAhVVNFKERJUkVDVDJEKQogICAgIGF1dG8gd2tEYXRhID0gYWRv
cHRXSyhXS0J1bmRsZUZyYW1lQ29weVdlYkFyY2hpdmUoZnJhbWUpKTsKICAgICBhdXRvIGNmRGF0
YSA9IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlKDAsIFdLRGF0YUdldEJ5dGVzKHdrRGF0YS5nZXQoKSks
IFdLRGF0YUdldFNpemUod2tEYXRhLmdldCgpKSkpOwotICAgIGF1dG8gY2ZTdHJpbmcgPSBhZG9w
dENGKFdlYkNvcmVUZXN0U3VwcG9ydDo6Y3JlYXRlWE1MU3RyaW5nRnJvbVdlYkFyY2hpdmVEYXRh
KGNmRGF0YS5nZXQoKSkpOworICAgIGF1dG8gY2ZTdHJpbmcgPSBXZWJDb3JlVGVzdFN1cHBvcnQ6
OmNyZWF0ZVhNTFN0cmluZ0Zyb21XZWJBcmNoaXZlRGF0YShjZkRhdGEuZ2V0KCkpOwogICAgIHN0
cmluZ0J1aWxkZXIuYXBwZW5kKGNmU3RyaW5nLmdldCgpKTsKICNlbmRpZgogfQpkaWZmIC0tZ2l0
IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9pb3MvQWNjZXNzaWJpbGl0
eVVJRWxlbWVudElPUy5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
aW9zL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRJT1MubW0KaW5kZXggNDZhMTU3ODBkYzU4ZDM3Zjlh
ZGFiZTcwMDkwMWQ5MTBkZTk3ZDFmNC4uZjBmOWIzODdkMDZjNDMwOGFlMTM2MWYxMWRjOTA3ZDQ4
YmRmNzI1MyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9pb3MvQWNjZXNzaWJpbGl0eVVJRWxlbWVudElPUy5tbQorKysgYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL2lvcy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50SU9TLm1tCkBA
IC0xMzAsNyArMTMwLDcgQEAgKyAoTlNTdHJpbmcgKilzdHJpbmdXaXRoSlNTdHJpbmdSZWY6KEpT
U3RyaW5nUmVmKWpzU3RyaW5nUmVmCiAgICAgaWYgKCFqc1N0cmluZ1JlZikKICAgICAgICAgcmV0
dXJuIG5pbDsKICAgICAKLSAgICByZXR1cm4gQ0ZCcmlkZ2luZ1JlbGVhc2UoSlNTdHJpbmdDb3B5
Q0ZTdHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwganNTdHJpbmdSZWYpKTsKKyAgICByZXR1cm4g
YWRvcHRDRihKU1N0cmluZ0NvcHlDRlN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBqc1N0cmlu
Z1JlZikpLmJyaWRnaW5nQXV0b3JlbGVhc2UoKTsKIH0KIAogLSAoSlNSZXRhaW5QdHI8SlNTdHJp
bmdSZWY+KWNyZWF0ZUpTU3RyaW5nUmVmCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5Q29tbW9uTWFjLm1tIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvQWNjZXNzaWJpbGl0eUNvbW1vbk1h
Yy5tbQppbmRleCAzNTRhOGY2NTU1YzZjMDAyNjVmNTY4MWE2YjM3MTUyYTg0YTU2MmMwLi5mOGUy
ZGNlMjIxMDI3MmFmNjZkZThjMjcxZmY0NWQzYjdiNTdjNjBmIDEwMDY0NAotLS0gYS9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5Q29tbW9uTWFj
Lm1tCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0FjY2Vz
c2liaWxpdHlDb21tb25NYWMubW0KQEAgLTQzLDcgKzQzLDcgQEAgKyAoTlNTdHJpbmcgKilzdHJp
bmdXaXRoSlNTdHJpbmdSZWY6KEpTU3RyaW5nUmVmKWpzU3RyaW5nUmVmCiAgICAgaWYgKCFqc1N0
cmluZ1JlZikKICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAgIHJldHVybiBDRkJyaWRnaW5nUmVs
ZWFzZShKU1N0cmluZ0NvcHlDRlN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBqc1N0cmluZ1Jl
ZikpOworICAgIHJldHVybiBhZG9wdENGKEpTU3RyaW5nQ29weUNGU3RyaW5nKGtDRkFsbG9jYXRv
ckRlZmF1bHQsIGpzU3RyaW5nUmVmKSkuYnJpZGdpbmdBdXRvcmVsZWFzZSgpOwogfQogCiAtIChK
U1JldGFpblB0cjxKU1N0cmluZ1JlZj4pY3JlYXRlSlNTdHJpbmdSZWYKZGlmZiAtLWdpdCBhL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL0hJREV2ZW50R2VuZXJhdG9yLm1tIGIvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9pb3MvSElERXZlbnRHZW5lcmF0b3IubW0KaW5kZXggMzFiNDY1MGUzNTYx
MTljMDI0MDE2NjRjZTAyNzY5NDhkYTAzNWVkOC4uZjY4MmNhMjk4NzViMzY2ZWIxNmI1ZTc5ZjA2
ZGQwZTBhNTFmYmQwNyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvSElE
RXZlbnRHZW5lcmF0b3IubW0KKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvSElERXZl
bnRHZW5lcmF0b3IubW0KQEAgLTMxOSw3ICszMTksNyBAQCAtIChJT0hJREV2ZW50UmVmKV9jcmVh
dGVJT0hJREV2ZW50V2l0aEluZm86KE5TRGljdGlvbmFyeSAqKWluZm8KICAgICAgICAgaWYgKFt0
b3VjaEluZm9bSElERXZlbnRQcmVzc3VyZUtleV0gZmxvYXRWYWx1ZV0pCiAgICAgICAgICAgICBj
aGlsZEV2ZW50TWFzayB8PSBrSU9ISUREaWdpdGl6ZXJFdmVudEF0dHJpYnV0ZTsKIAotICAgICAg
ICBJT0hJREV2ZW50UmVmIHN1YkV2ZW50ID0gSU9ISURFdmVudENyZWF0ZURpZ2l0aXplckZpbmdl
ckV2ZW50KGtDRkFsbG9jYXRvckRlZmF1bHQsIG1hY2hUaW1lLAorICAgICAgICBhdXRvIHN1YkV2
ZW50ID0gYWRvcHRDRihJT0hJREV2ZW50Q3JlYXRlRGlnaXRpemVyRmluZ2VyRXZlbnQoa0NGQWxs
b2NhdG9yRGVmYXVsdCwgbWFjaFRpbWUsCiAgICAgICAgICAgICBbdG91Y2hJbmZvW0hJREV2ZW50
VG91Y2hJREtleV0gaW50VmFsdWVdLCAgICAgICAgICAgICAgIC8vIGluZGV4CiAgICAgICAgICAg
ICAyLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8vIGlkZW50aWZpZXIgKHdoaWNoIGZpbmdlciB3ZSB0aGluayBpdCBpcykuIEZJWE1FOiB0aGlz
IHNob3VsZCBjb21lIGZyb20gdGhlIGRhdGEuCiAgICAgICAgICAgICBjaGlsZEV2ZW50TWFzaywK
QEAgLTMzMCwxMyArMzMwLDEyIEBAIC0gKElPSElERXZlbnRSZWYpX2NyZWF0ZUlPSElERXZlbnRX
aXRoSW5mbzooTlNEaWN0aW9uYXJ5ICopaW5mbwogICAgICAgICAgICAgW3RvdWNoSW5mb1tISURF
dmVudFR3aXN0S2V5XSBmbG9hdFZhbHVlXSwKICAgICAgICAgICAgIHRvdWNoLCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmFuZ2UKICAgICAgICAg
ICAgIHRvdWNoLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gdG91Y2gKLSAgICAgICAgICAgIGtJT0hJREV2ZW50T3B0aW9uTm9uZSk7CisgICAgICAg
ICAgICBrSU9ISURFdmVudE9wdGlvbk5vbmUpKTsKIAotICAgICAgICBJT0hJREV2ZW50U2V0Rmxv
YXRWYWx1ZShzdWJFdmVudCwga0lPSElERXZlbnRGaWVsZERpZ2l0aXplck1ham9yUmFkaXVzLCBb
dG91Y2hJbmZvW0hJREV2ZW50TWFqb3JSYWRpdXNLZXldIGZsb2F0VmFsdWVdKTsKLSAgICAgICAg
SU9ISURFdmVudFNldEZsb2F0VmFsdWUoc3ViRXZlbnQsIGtJT0hJREV2ZW50RmllbGREaWdpdGl6
ZXJNaW5vclJhZGl1cywgW3RvdWNoSW5mb1tISURFdmVudE1pbm9yUmFkaXVzS2V5XSBmbG9hdFZh
bHVlXSk7CisgICAgICAgIElPSElERXZlbnRTZXRGbG9hdFZhbHVlKHN1YkV2ZW50LmdldCgpLCBr
SU9ISURFdmVudEZpZWxkRGlnaXRpemVyTWFqb3JSYWRpdXMsIFt0b3VjaEluZm9bSElERXZlbnRN
YWpvclJhZGl1c0tleV0gZmxvYXRWYWx1ZV0pOworICAgICAgICBJT0hJREV2ZW50U2V0RmxvYXRW
YWx1ZShzdWJFdmVudC5nZXQoKSwga0lPSElERXZlbnRGaWVsZERpZ2l0aXplck1pbm9yUmFkaXVz
LCBbdG91Y2hJbmZvW0hJREV2ZW50TWlub3JSYWRpdXNLZXldIGZsb2F0VmFsdWVdKTsKIAotICAg
ICAgICBJT0hJREV2ZW50QXBwZW5kRXZlbnQoZXZlbnRSZWYsIHN1YkV2ZW50LCAwKTsKLSAgICAg
ICAgQ0ZSZWxlYXNlKHN1YkV2ZW50KTsKKyAgICAgICAgSU9ISURFdmVudEFwcGVuZEV2ZW50KGV2
ZW50UmVmLCBzdWJFdmVudC5nZXQoKSwgMCk7CiAgICAgfQogCiAgICAgcmV0dXJuIGV2ZW50UmVm
OwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvRXZlbnRTZW5kZXJQcm94
eS5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL0V2ZW50U2VuZGVyUHJveHkubW0KaW5k
ZXggYmFjYzE0MTE1NDMzMWI3OWQxYTNjZWQ2ODFjN2Y5NDg5ODhiOTA2Ni4uOGU5OTQ3YjBiMzI0
MGYzZmMwOWIzYzZhZGI2NWU4ZjJlMDJjZmVkNCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9tYWMvRXZlbnRTZW5kZXJQcm94eS5tbQorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL21hYy9FdmVudFNlbmRlclByb3h5Lm1tCkBAIC05NSwxNyArOTUsMTYgQEAgLSAoaW5zdGFu
Y2V0eXBlKWluaXRQcmVzc3VyZUV2ZW50QXRMb2NhdGlvbjooTlNQb2ludClsb2NhdGlvbiBnbG9i
YWxMb2NhdGlvbjooTlMKICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgQ0dFdmVudFJlZiBj
Z0V2ZW50ID0gQ0dFdmVudENyZWF0ZShudWxscHRyKTsKLSAgICBDR0V2ZW50U2V0VHlwZShjZ0V2
ZW50LCAoQ0dFdmVudFR5cGUpa0NHU0V2ZW50R2VzdHVyZSk7Ci0gICAgQ0dFdmVudFNldEludGVn
ZXJWYWx1ZUZpZWxkKGNnRXZlbnQsIGtDR0V2ZW50R2VzdHVyZUhJRFR5cGUsIDMyKTsKLSAgICBD
R0V2ZW50U2V0SW50ZWdlclZhbHVlRmllbGQoY2dFdmVudCwga0NHRXZlbnRHZXN0dXJlUGhhc2Us
IGdlc3R1cmVQaGFzZSk7Ci0gICAgQ0dFdmVudFNldERvdWJsZVZhbHVlRmllbGQoY2dFdmVudCwg
a0NHRXZlbnRTdGFnZVByZXNzdXJlLCBwcmVzc3VyZSk7Ci0gICAgQ0dFdmVudFNldERvdWJsZVZh
bHVlRmllbGQoY2dFdmVudCwga0NHRXZlbnRUcmFuc2l0aW9uUHJvZ3Jlc3MsIHByZXNzdXJlKTsK
LSAgICBDR0V2ZW50U2V0SW50ZWdlclZhbHVlRmllbGQoY2dFdmVudCwga0NHRXZlbnRHZXN0dXJl
U3RhZ2UsIHN0YWdlVHJhbnNpdGlvbik7Ci0gICAgQ0dFdmVudFNldEludGVnZXJWYWx1ZUZpZWxk
KGNnRXZlbnQsIGtDR0V2ZW50R2VzdHVyZUJlaGF2aW9yLCBrQ0dTR2VzdHVyZUJlaGF2aW9yRGVl
cFByZXNzKTsKLQotICAgIHNlbGYgPSBbc3VwZXIgX2luaXRXaXRoQ0dFdmVudDpjZ0V2ZW50IGV2
ZW50UmVmOm51bGxwdHJdOwotICAgIENGUmVsZWFzZShjZ0V2ZW50KTsKKyAgICBhdXRvIGNnRXZl
bnQgPSBhZG9wdENGKENHRXZlbnRDcmVhdGUobnVsbHB0cikpOworICAgIENHRXZlbnRTZXRUeXBl
KGNnRXZlbnQuZ2V0KCksIChDR0V2ZW50VHlwZSlrQ0dTRXZlbnRHZXN0dXJlKTsKKyAgICBDR0V2
ZW50U2V0SW50ZWdlclZhbHVlRmllbGQoY2dFdmVudC5nZXQoKSwga0NHRXZlbnRHZXN0dXJlSElE
VHlwZSwgMzIpOworICAgIENHRXZlbnRTZXRJbnRlZ2VyVmFsdWVGaWVsZChjZ0V2ZW50LmdldCgp
LCBrQ0dFdmVudEdlc3R1cmVQaGFzZSwgZ2VzdHVyZVBoYXNlKTsKKyAgICBDR0V2ZW50U2V0RG91
YmxlVmFsdWVGaWVsZChjZ0V2ZW50LmdldCgpLCBrQ0dFdmVudFN0YWdlUHJlc3N1cmUsIHByZXNz
dXJlKTsKKyAgICBDR0V2ZW50U2V0RG91YmxlVmFsdWVGaWVsZChjZ0V2ZW50LmdldCgpLCBrQ0dF
dmVudFRyYW5zaXRpb25Qcm9ncmVzcywgcHJlc3N1cmUpOworICAgIENHRXZlbnRTZXRJbnRlZ2Vy
VmFsdWVGaWVsZChjZ0V2ZW50LmdldCgpLCBrQ0dFdmVudEdlc3R1cmVTdGFnZSwgc3RhZ2VUcmFu
c2l0aW9uKTsKKyAgICBDR0V2ZW50U2V0SW50ZWdlclZhbHVlRmllbGQoY2dFdmVudC5nZXQoKSwg
a0NHRXZlbnRHZXN0dXJlQmVoYXZpb3IsIGtDR1NHZXN0dXJlQmVoYXZpb3JEZWVwUHJlc3MpOwor
CisgICAgc2VsZiA9IFtzdXBlciBfaW5pdFdpdGhDR0V2ZW50OmNnRXZlbnQuZ2V0KCkgZXZlbnRS
ZWY6bnVsbHB0cl07CiAKICAgICBpZiAoIXNlbGYpCiAgICAgICAgIHJldHVybiBuaWw7CmRpZmYg
LS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9VSVNjcmlwdENvbnRyb2xsZXJNYWMu
bW0gYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9VSVNjcmlwdENvbnRyb2xsZXJNYWMubW0K
aW5kZXggNjBiZTk1N2UwNTdlMjRiZTBmYmFmZmFmMmMzODIxNTc0YTc2NDE1My4uYmFiZTk1N2Qx
MWIyMDQ2ZDVmMzZlZDRkZGM3MWJiZDdkNmU2MDYxYiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9tYWMvVUlTY3JpcHRDb250cm9sbGVyTWFjLm1tCisrKyBiL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvbWFjL1VJU2NyaXB0Q29udHJvbGxlck1hYy5tbQpAQCAtNTMsMTQgKzUzLDE0
IEBAIFJlZjxVSVNjcmlwdENvbnRyb2xsZXI+IFVJU2NyaXB0Q29udHJvbGxlcjo6Y3JlYXRlKFVJ
U2NyaXB0Q29udGV4dCYgY29udGV4dCkKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBVSVNjcmlw
dENvbnRyb2xsZXJNYWMoY29udGV4dCkpOwogfQogCi1zdGF0aWMgTlNTdHJpbmcgKm5zU3RyaW5n
KEpTU3RyaW5nUmVmIHN0cmluZykKK3N0YXRpYyBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGNmU3Ry
aW5nKEpTU3RyaW5nUmVmIHN0cmluZykKIHsKLSAgICByZXR1cm4gQ0ZCcmlkZ2luZ1JlbGVhc2Uo
SlNTdHJpbmdDb3B5Q0ZTdHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwgc3RyaW5nKSk7CisgICAg
cmV0dXJuIGFkb3B0Q0YoSlNTdHJpbmdDb3B5Q0ZTdHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwg
c3RyaW5nKSk7CiB9CiAKIHZvaWQgVUlTY3JpcHRDb250cm9sbGVyTWFjOjpyZXBsYWNlVGV4dEF0
UmFuZ2UoSlNTdHJpbmdSZWYgdGV4dCwgaW50IGxvY2F0aW9uLCBpbnQgbGVuZ3RoKQogewotICAg
IFt3ZWJWaWV3KCkgX2luc2VydFRleHQ6bnNTdHJpbmcodGV4dCkgcmVwbGFjZW1lbnRSYW5nZTpO
U01ha2VSYW5nZShsb2NhdGlvbiA9PSAtMSA/IE5TTm90Rm91bmQgOiBsb2NhdGlvbiwgbGVuZ3Ro
KV07CisgICAgW3dlYlZpZXcoKSBfaW5zZXJ0VGV4dDooX19icmlkZ2UgTlNTdHJpbmcgKiljZlN0
cmluZyh0ZXh0KS5nZXQoKSByZXBsYWNlbWVudFJhbmdlOk5TTWFrZVJhbmdlKGxvY2F0aW9uID09
IC0xID8gTlNOb3RGb3VuZCA6IGxvY2F0aW9uLCBsZW5ndGgpXTsKIH0KIAogdm9pZCBVSVNjcmlw
dENvbnRyb2xsZXJNYWM6Onpvb21Ub1NjYWxlKGRvdWJsZSBzY2FsZSwgSlNWYWx1ZVJlZiBjYWxs
YmFjaykK
</data>
<flag name="commit-queue"
          id="441368"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>422303</attachid>
            <date>2021-03-04 16:00:33 -0800</date>
            <delta_ts>2021-03-04 17:35:23 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222760-20210304160032.patch</filename>
            <type>text/plain</type>
            <size>187522</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjczOTI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
MWU0YmQxNzg0NzU1ZmE4ODU2YjFlODQ0NDExYzg3OWE4YjMyNzg5Li4xNGJhNDI4MjIxY2M0MjQ3
M2E0YzJlYjNkYmM0OTE5OTk1N2E1MTI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMCBAQAorMjAyMS0wMy0wNCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIFJlZHVjZSB1c2Ugb2YgQ0ZSZXRhaW4oKSAvIENGUmVsZWFzZSgpIC8gQ0ZBdXRv
UmVsZWFzZSgpIGluIFdlYktpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjIyNzYwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgUmVkdWNlIHVzZSBvZiBDRlJldGFpbigpIC8gQ0ZSZWxlYXNlKCkgLyBDRkF1
dG9SZWxlYXNlKCkgaW4gV2ViS2l0IGJ5IHVzaW5nIFJldGFpblB0cjw+LgorCisgICAgICAgICog
QVBJL0pTQ29udGV4dC5tbToKKyAgICAgICAgKC1bSlNDb250ZXh0IG5hbWVdKToKKyAgICAgICAg
KiBBUEkvSlNWYWx1ZS5tbToKKyAgICAgICAgKHZhbHVlVG9PYmplY3RXaXRob3V0Q29weSk6Cisg
ICAgICAgICh2YWx1ZVRvU3RyaW5nKToKKyAgICAgICAgKiBpbnNwZWN0b3IvcmVtb3RlL2NvY29h
L1JlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24ubW06CisgICAgICAgIChJbnNwZWN0b3I6OlJl
bW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb246OmRlc2VyaWFsaXplTWVzc2FnZSk6CisKIDIwMjEt
MDMtMDQgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAg
ICAgICBVbnJldmlld2VkLCByZXZlcnRpbmcgcjI3MzkwNi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggNGE4YmZkMjA1NmExZmVi
ZWRmYzBiYzhiMGI0OWYzYzIzOWMwN2I0My4uNmVmNDBhMTY5OTY0ODk2MDU4OWMwMWMxZjA1MDYx
YTU4YjFhNzNhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAyMS0wMy0wNCAgQ2hyaXMgRHVtZXog
IDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFJlZHVjZSB1c2Ugb2YgQ0ZSZXRhaW4oKSAv
IENGUmVsZWFzZSgpIC8gQ0ZBdXRvUmVsZWFzZSgpIGluIFdlYktpdAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIyNzYwCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVkdWNlIHVzZSBvZiBDRlJldGFpbigp
IC8gQ0ZSZWxlYXNlKCkgLyBDRkF1dG9SZWxlYXNlKCkgaW4gV2ViS2l0IGJ5IHVzaW5nIFJldGFp
blB0cjw+LgorCisgICAgICAgICogd3RmL2NvY29hL05TVVJMRXh0cmFzLm1tOgorICAgICAgICAo
V1RGOjpkZWNvZGVQZXJjZW50RXNjYXBlcyk6CisgICAgICAgIChXVEY6OlVSTEJ5VHJ1bmNhdGlu
Z09uZUNoYXJhY3RlckJlZm9yZUNvbXBvbmVudCk6CisgICAgICAgIChXVEY6OlVSTFdpdGhEYXRh
KToKKyAgICAgICAgKFdURjo6VVJMQnlSZW1vdmluZ0NvbXBvbmVudEFuZFN1YnNlcXVlbnRDaGFy
YWN0ZXIpOgorCiAyMDIxLTAzLTA0ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdl
YmtpdC5vcmc+CiAKICAgICAgICAgUmVtb3ZlIHRoZSBIVFRQU1VwZ3JhZGVFbmFibGVkIGV4cGVy
aW1lbnRhbCBmZWF0dXJlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTdmYjczNjIyYWJkNTdiYjA3Y2M4OGE3N2Zj
YmNjMWEyMzFlZTliNC4uYTFmMThlY2VhZjBiYjZmYjY2MzlmNWVhMjM4ODFiNjI5MTgzZDExMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDExMiBAQAorMjAyMS0wMy0wNCAgQ2hyaXMgRHVtZXogIDxj
ZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFJlZHVjZSB1c2Ugb2YgQ0ZSZXRhaW4oKSAvIENG
UmVsZWFzZSgpIC8gQ0ZBdXRvUmVsZWFzZSgpIGluIFdlYktpdAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIyNzYwCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVkdWNlIHVzZSBvZiBDRlJldGFpbigpIC8g
Q0ZSZWxlYXNlKCkgLyBDRkF1dG9SZWxlYXNlKCkgaW4gV2ViS2l0IGJ5IHVzaW5nIFJldGFpblB0
cjw+LgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9tYWMvQVhPYmplY3RDYWNoZU1hYy5tbToK
KyAgICAgICAgKFdlYkNvcmU6OkFYVGV4dE1hcmtlclJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6
OkFYVGV4dE1hcmtlclJhbmdlU3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6QVhUZXh0TWFya2Vy
UmFuZ2VFbmQpOgorICAgICAgICAoV2ViQ29yZTo6dGV4dE1hcmtlckZvclZpc2libGVQb3NpdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjp0ZXh0TWFya2VyRm9yQ2hhcmFjdGVyT2Zmc2V0KToKKyAg
ICAgICAgKFdlYkNvcmU6OnN0YXJ0T3JFbmRUZXh0TWFya2VyRm9yUmFuZ2UpOgorICAgICAgICAq
IGFjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5tbToK
KyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlIHVwZGF0ZU9iamVj
dEJhY2tpbmdTdG9yZV0pOgorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBl
ckJhc2UgY29udmVydFBhdGhUb1NjcmVlblNwYWNlOl0pOgorICAgICAgICAqIGFjY2Vzc2liaWxp
dHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tOgorICAgICAgICAobmV4
dFRleHRNYXJrZXJGb3JDaGFyYWN0ZXJPZmZzZXQpOgorICAgICAgICAocHJldmlvdXNUZXh0TWFy
a2VyRm9yQ2hhcmFjdGVyT2Zmc2V0KToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVj
dFdyYXBwZXIgdGV4dE1hcmtlckZvckZpcnN0UG9zaXRpb25JblRleHRDb250cm9sOl0pOgorICAg
ICAgICAoQVhBdHRyaWJ1dGVTdHJpbmdTZXRFbGVtZW50KToKKyAgICAgICAgKiBlZGl0aW5nL2Nv
Y29hL0hUTUxDb252ZXJ0ZXIubW06CisgICAgICAgIChIVE1MQ29udmVydGVyOjpfcHJvY2Vzc1Rl
eHQpOgorICAgICAgICAqIGxvYWRlci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EubW06Cisg
ICAgICAgIChXZWJDb3JlOjpEaXNrQ2FjaGVNb25pdG9yOjpEaXNrQ2FjaGVNb25pdG9yKToKKyAg
ICAgICAgKiBwYWdlL21hYy9FdmVudEhhbmRsZXJNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpz
ZWxmUmV0YWluaW5nTlNTY3JvbGxWaWV3U2Nyb2xsV2hlZWwpOgorICAgICAgICAqIHBhZ2Uvd2lu
L0ZyYW1lQ0dXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6aW1hZ2VGcm9tUmVjdCk6CisgICAg
ICAgICogcGxhdGZvcm0vY2YvTWFpblRocmVhZFNoYXJlZFRpbWVyQ0YuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6c2hhcmVkVGltZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWFpblRocmVhZFNoYXJl
ZFRpbWVyOjpyZXN0YXJ0U2hhcmVkVGltZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWFpblRocmVh
ZFNoYXJlZFRpbWVyOjppbnZhbGlkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1haW5UaHJlYWRT
aGFyZWRUaW1lcjo6c2V0RmlyZUludGVydmFsKToKKyAgICAgICAgKFdlYkNvcmU6Ok1haW5UaHJl
YWRTaGFyZWRUaW1lcjo6c3RvcCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OmV4ZXJuYWxEZXZpY2VEaXNwbGF5TmFtZUZvclBsYXllcik6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL0NBQ0ZMYXllclRyZWVIb3N0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNBQ0ZMYXllclRyZWVIb3N0Ojppbml0aWFsaXplKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpwYXR0ZXJuUmVsZWFzZUNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDo6ZmlsbFBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Ojpz
dHJva2VQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3Qp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzdHJva2VSZWN0KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXR0ZXJuQ0cuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6cGF0dGVyblJlbGVhc2VDYWxsYmFjayk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YXV0b0FjdGl2
YXRlRm9udCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDR1dpbi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZTo6Z2V0UGxhdGZvcm1HbHlwaEFkdmFuY2Vz
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0Q0dXaW4u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpyZWxlYXNlV2luZG93c0Nv
bnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3Rm9jdXNSaW5n
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VDR1dpbi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Z2V0SEJJVE1BUE9mU2l6ZSk6CisgICAgICAgICog
cGxhdGZvcm0vaW9zL1VzZXJBZ2VudElPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OnN0YW5kYXJk
VXNlckFnZW50V2l0aEFwcGxpY2F0aW9uTmFtZSk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL3dh
ay9XZWJDb3JlVGhyZWFkLm1tOgorICAgICAgICAoU2VuZERlbGVnYXRlTWVzc2FnZSk6CisgICAg
ICAgIChSdW5XZWJUaHJlYWQpOgorICAgICAgICAoV2ViVGhyZWFkVW5sb2NrR3VhcmRGb3JNYWls
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplck1hYy5t
bToKKyAgICAgICAgKFdlYkNvcmU6OnNwZWVjaFN5bnRoZXNpc0dldFZvaWNlSWRlbnRpZmllcnMp
OgorICAgICAgICAoV2ViQ29yZTo6c3BlZWNoU3ludGhlc2lzR2V0RGVmYXVsdFZvaWNlSWRlbnRp
ZmllckZvckxvY2FsZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNp
emVyOjppbml0aWFsaXplVm9pY2VMaXN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvUGx1Z2lu
QmxvY2tsaXN0Lm1tOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luQmxvY2tsaXN0OjpjcmVhdGUp
OgorICAgICAgICAqIHBsYXRmb3JtL21hYy9XZWJHTEJsb2NrbGlzdC5tbToKKyAgICAgICAgKFdl
YkNvcmU6OldlYkdMQmxvY2tsaXN0OjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlh
cmVjb3JkZXIvY29jb2EvQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tOgorICAgICAgICAo
V2ViQ29yZTo6QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjphdHRhY2hQcmltaW5nVHJpbXNJ
Zk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6
OnByb3ZpZGVTb3VyY2VEYXRhTnVtT3V0cHV0UGFja2V0cyk6CisgICAgICAgICogcGxhdGZvcm0v
bWVkaWFyZWNvcmRlci9jb2NvYS9WaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IubW06CisgICAg
ICAgIChXZWJDb3JlOjpzZXRDb21wcmVzc2lvblNlc3Npb25Qcm9wZXJ0eSk6CisgICAgICAgICog
cGxhdGZvcm0vbmV0d29yay9jZi9Gb3JtRGF0YVN0cmVhbUNGTmV0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmNsb3NlQ3VycmVudFN0cmVhbSk6CisgICAgICAgIChXZWJDb3JlOjphZHZhbmNlQ3Vy
cmVudFN0cmVhbSk6CisgICAgICAgIChXZWJDb3JlOjpvcGVuTmV4dFN0cmVhbSk6CisgICAgICAg
IChXZWJDb3JlOjpmb3JtUmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpmb3JtQ2FuUmVhZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpmb3JtU2NoZWR1bGUpOgorICAgICAgICAoV2ViQ29yZTo6Zm9ybVVu
c2NoZWR1bGUpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uQ0ZOZXRXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlUHJpdmF0ZVN0b3Jh
Z2VTZXNzaW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxl
Q0ZOZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2V0Q2xpZW50Q2VydGlmaWNhdGVJblNTTFBy
b3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OmNyZWF0ZUNGVVJM
Q29ubmVjdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRs
ZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0
aW9uUXVldWU6OndpbGxTZW5kUmVxdWVzdCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9j
Zi9SZXNvdXJjZVJlcXVlc3RDRk5ldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3Q6OmRvVXBkYXRlUmVzb3VyY2VSZXF1ZXN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4v
RHJhZ0ltYWdlQ0dXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlQ2dDb250ZXh0RnJv
bUJpdG1hcCk6CisgICAgICAgIChXZWJDb3JlOjpzY2FsZURyYWdJbWFnZSk6CisgICAgICAgICog
cGxhdGZvcm0vd2luL1dlYkNvcmVCdW5kbGVXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3Jl
YXRlV2ViS2l0QnVuZGxlKToKKyAgICAgICAgKFdlYkNvcmU6OndlYktpdEJ1bmRsZSk6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tOgorICAgICAgICAoLVtXZWJDb3JlVGV4
dEZpZWxkQ2VsbCBfYWRqdXN0ZWRDb3JlVUlEcmF3T3B0aW9uc0ZvckRyYXdpbmdCb3JkZXJzT25s
eTpdKToKKyAgICAgICAgKiB0ZXN0aW5nL2NvY29hL1dlYkFyY2hpdmVEdW1wU3VwcG9ydC5oOgor
ICAgICAgICAqIHRlc3RpbmcvY29jb2EvV2ViQXJjaGl2ZUR1bXBTdXBwb3J0Lm1tOgorICAgICAg
ICAoV2ViQ29yZVRlc3RTdXBwb3J0OjpjcmVhdGVYTUxTdHJpbmdGcm9tV2ViQXJjaGl2ZURhdGEp
OgorICAgICAgICAqIHRlc3RpbmcvY29jb2EvV2ViVmlld1Zpc3VhbElkZW50aWZpY2F0aW9uT3Zl
cmxheS5tbToKKyAgICAgICAgKGlkZW50aWZpY2F0aW9uRm9udCk6CisKIDIwMjEtMDMtMDQgIERl
dmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgogCiAgICAgICAgIFtQYXltZW50IFJlcXVl
c3RdIGluY3JlbWVudCB0aGUgY3VycmVudCB2ZXJzaW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDI2OTAwNzI1MzI2
ODAzOTBkZGU1NzNjZTUyYmVjNWRmYzNmYTdlYzkuLjdmNmY0YjgzNzYxNmZjMjFhZTg2MWZhMjc0
MjI0MjIzYzFlZGMyNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzkgQEAKKzIwMjEtMDMtMDQgIENo
cmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBSZWR1Y2UgdXNlIG9mIENG
UmV0YWluKCkgLyBDRlJlbGVhc2UoKSAvIENGQXV0b1JlbGVhc2UoKSBpbiBXZWJLaXQKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMjc2MAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlZHVjZSB1c2Ugb2Yg
Q0ZSZXRhaW4oKSAvIENGUmVsZWFzZSgpIC8gQ0ZBdXRvUmVsZWFzZSgpIGluIFdlYktpdCBieSB1
c2luZyBSZXRhaW5QdHI8Pi4KKworICAgICAgICAqIFBsYXRmb3JtL21hYy9TdHJpbmdVdGlsaXRp
ZXMubW06CisgICAgICAgIChXZWJLaXQ6Om5zU3RyaW5nRnJvbVdlYkNvcmVTdHJpbmcpOgorICAg
ICAgICAoV2ViS2l0Ojpmb3JtYXR0ZWRQaG9uZU51bWJlclN0cmluZyk6CisgICAgICAgICogUGx1
Z2luUHJvY2Vzcy9tYWMvUGx1Z2luUHJvY2Vzc01hYy5tbToKKyAgICAgICAgKFdlYktpdDo6aW5p
dGlhbGl6ZUNvY29hT3ZlcnJpZGVzKToKKyAgICAgICAgKiBTaGFyZWQvbWFjL1Bhc3RlYm9hcmRU
eXBlcy5tbToKKyAgICAgICAgKFdlYktpdDo6UGFzdGVib2FyZFR5cGVzOjpmb3JFZGl0aW5nKToK
KyAgICAgICAgKFdlYktpdDo6UGFzdGVib2FyZFR5cGVzOjpmb3JVUkwpOgorICAgICAgICAoV2Vi
S2l0OjpQYXN0ZWJvYXJkVHlwZXM6OmZvckltYWdlcyk6CisgICAgICAgIChXZWJLaXQ6OlBhc3Rl
Ym9hcmRUeXBlczo6Zm9ySW1hZ2VzV2l0aEFyY2hpdmUpOgorICAgICAgICAoV2ViS2l0OjpQYXN0
ZWJvYXJkVHlwZXM6OmZvclNlbGVjdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dl
YlZpZXdJbXBsLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6YWNjZXB0c0ZpcnN0
TW91c2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6c2hvdWxkRGVsYXlXaW5kb3dP
cmRlcmluZ0ZvckV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnZhbGlkQXR0
cmlidXRlc0Zvck1hcmtlZFRleHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6cGVy
Zm9ybUtleUVxdWl2YWxlbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9JbnNwZWN0b3IvaW9zL1dL
SW5zcGVjdG9ySGlnaGxpZ2h0Vmlldy5tbToKKyAgICAgICAgKGxheWVyUGF0aFdpdGhIb2xlKToK
KyAgICAgICAgKGxheWVyUGF0aCk6CisgICAgICAgICogVUlQcm9jZXNzL19XS1RvdWNoRXZlbnRH
ZW5lcmF0b3IubW06CisgICAgICAgICgtW19XS1RvdWNoRXZlbnRHZW5lcmF0b3IgZGVhbGxvY10p
OgorICAgICAgICAoLVtfV0tUb3VjaEV2ZW50R2VuZXJhdG9yIF9zZW5kSElERXZlbnQ6XSk6Cisg
ICAgICAgICogVUlQcm9jZXNzL2lvcy9mdWxsc2NyZWVuL1dLRnVsbFNjcmVlbldpbmRvd0NvbnRy
b2xsZXJJT1MubW06CisgICAgICAgICgtW1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIgX0VW
T3JnYW5pemF0aW9uTmFtZV0pOgorICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vz
c0NvY29hLm1tOgorICAgICAgICAoV2ViS2l0Ojp3ZWJQcm9jZXNzTG9hZGVyQWNjZXNzaWJpbGl0
eUJ1bmRsZVBhdGgpOgorCiAyMDIxLTAzLTA0ICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25A
YXBwbGUuY29tPgogCiAgICAgICAgIEZpeCB0aGUgYnVpbGQgYWZ0ZXIgcjI3MzkwNApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExl
Z2FjeS9pb3MvQ2hhbmdlTG9nCmluZGV4IGNhZDE4OWQwMWVjMjc0MTNmODc1MmY4MDY1Yzk1YTIy
ZDVjYzM2YjQuLmY3YzE0NGYxNmIyOGNlMTFhZDdhNWI2YmIzNDljMzZlYmQ5OGI4YTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L2lvcy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAyMS0wMy0wNCAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFJlZHVjZSB1c2Ugb2YgQ0ZS
ZXRhaW4oKSAvIENGUmVsZWFzZSgpIC8gQ0ZBdXRvUmVsZWFzZSgpIGluIFdlYktpdAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIyNzYwCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVkdWNlIHVzZSBvZiBD
RlJldGFpbigpIC8gQ0ZSZWxlYXNlKCkgLyBDRkF1dG9SZWxlYXNlKCkgaW4gV2ViS2l0IGJ5IHVz
aW5nIFJldGFpblB0cjw+LgorCisgICAgICAgICogTWlzYy9XZWJVSUtpdFN1cHBvcnQubW06Cisg
ICAgICAgIChMb2FkV2ViTG9jYWxpemVkU3RyaW5ncyk6CisgICAgICAgICogV2ViVmlldy9XZWJQ
REZWaWV3SU9TLm1tOgorICAgICAgICAoLVtXZWJQREZWaWV3IGZpbmlzaGVkTG9hZGluZ1dpdGhE
YXRhU291cmNlOl0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViUERGVmlld1BsYWNlaG9sZGVyLm1t
OgorICAgICAgICAoLVtXZWJQREZWaWV3UGxhY2Vob2xkZXIgZmluaXNoZWRMb2FkaW5nV2l0aERh
dGFTb3VyY2U6XSk6CisKIDIwMjEtMDItMjIgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNv
bT4KIAogICAgICAgICBVc2UgYWRvcHROUygpIGFzIHNvb24gYXMgd2UgW1tPYmpjQ2xhc3MgYWxs
b2NdIGluaXRdIHRvIGF2b2lkIGxlYWtzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXgg
N2MxMmQxNWFmYWU1OGFlMDVjZTZiMzQwNDU5MDBiODU5ZWQxNDZiMy4uYWRhYTY0MzZmMjM4M2I1
NDkzYjg0YjExMzI3YTZhMWU4OWM2MzVmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDI5IEBACisyMDIxLTAzLTA0ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5j
b20+CisKKyAgICAgICAgUmVkdWNlIHVzZSBvZiBDRlJldGFpbigpIC8gQ0ZSZWxlYXNlKCkgLyBD
RkF1dG9SZWxlYXNlKCkgaW4gV2ViS2l0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMjI3NjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBSZWR1Y2UgdXNlIG9mIENGUmV0YWluKCkgLyBDRlJlbGVhc2UoKSAv
IENGQXV0b1JlbGVhc2UoKSBpbiBXZWJLaXQgYnkgdXNpbmcgUmV0YWluUHRyPD4uCisKKyAgICAg
ICAgKiBNaXNjL1dlYkxvY2FsaXphYmxlU3RyaW5ncy5tbToKKyAgICAgICAgKiBNaXNjL1dlYk5T
RGF0YUV4dHJhcy5tbToKKyAgICAgICAgKC1bTlNTdHJpbmcgX3dlYl9jYXBpdGFsaXplUkZDODIy
SGVhZGVyRmllbGROYW1lXSk6CisgICAgICAgICogUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVn
aW5Ib3N0TWFuYWdlci5tbToKKyAgICAgICAgKFdlYktpdDo6cHJlZmVycmVkQnVuZGxlTG9jYWxp
emF0aW9uTmFtZSk6CisgICAgICAgICogUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblZpZXcubW06
CisgICAgICAgICgtW1dlYk5ldHNjYXBlUGx1Z2luVmlldyBzdGF0dXM6XSk6CisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvV2ViUHJvZ3Jlc3NUcmFja2VyQ2xpZW50Lm1tOgorICAgICAgICAoV2Vi
UHJvZ3Jlc3NUcmFja2VyQ2xpZW50Ojpwcm9ncmVzc0VzdGltYXRlQ2hhbmdlZCk6CisgICAgICAg
ICogV2ViSW5zcGVjdG9yL1dlYk5vZGVIaWdobGlnaHRWaWV3Lm1tOgorICAgICAgICAobGF5ZXJQ
YXRoV2l0aEhvbGUpOgorICAgICAgICAobGF5ZXJQYXRoKToKKyAgICAgICAgKiBXZWJWaWV3L1dl
YkZyYW1lLm1tOgorICAgICAgICAoY3JlYXRlVW5pcXVlV2ViRGF0YVVSTCk6CisgICAgICAgICog
V2ViVmlldy9XZWJWaWV3Lm1tOgorICAgICAgICAoK1tXZWJWaWV3IF9zZXRDYWNoZU1vZGVsOl0p
OgorCiAyMDIxLTAzLTA0ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAg
ICAgW21hY09TXVtXSzJdIENoYW5naW5nIHRoZSBzeXN0ZW0gbGFuZ3VhZ2UgZG9lcyBub3QgdXBk
YXRlIG5hdmlnYXRvci5sYW5ndWFnZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCmluZGV4IDU4
MTM0MDI5NmQ4NWFkNGE4Njk5NGRkMzRjZGU0ZTU1NzFjYWJhYTcuLmMwODhiYjJmMTVmOTQzMTkx
ZjI4MDE3YTkzODFhNjRiOGM4Y2MxMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKQEAg
LTEsMyArMSw0MCBAQAorMjAyMS0wMy0wNCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29t
PgorCisgICAgICAgIFJlZHVjZSB1c2Ugb2YgQ0ZSZXRhaW4oKSAvIENGUmVsZWFzZSgpIC8gQ0ZB
dXRvUmVsZWFzZSgpIGluIFdlYktpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjIyNzYwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgUmVkdWNlIHVzZSBvZiBDRlJldGFpbigpIC8gQ0ZSZWxlYXNlKCkgLyBD
RkF1dG9SZWxlYXNlKCkgaW4gV2ViS2l0IGJ5IHVzaW5nIFJldGFpblB0cjw+LgorCisgICAgICAg
ICogQ0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWcuY3BwOgorICAgICAgICAoQ29udmVydFZhcmlhbnRU
b0NGVHlwZSk6CisgICAgICAgIChDRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZzo6UmVhZCk6CisgICAg
ICAgIChDRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZzo6V3JpdGUpOgorICAgICAgICAqIE1hcnNoYWxs
aW5nSGVscGVycy5jcHA6CisgICAgICAgIChNYXJzaGFsbGluZ0hlbHBlcnM6OlBhdGhTdHJpbmdU
b0ZpbGVDRlVSTFJlZik6CisgICAgICAgIChNYXJzaGFsbGluZ0hlbHBlcnM6OkZpbGVDRlVSTFJl
ZlRvUGF0aFN0cmluZyk6CisgICAgICAgIChNYXJzaGFsbGluZ0hlbHBlcnM6OkJTVFJUb0NGVVJM
UmVmKToKKyAgICAgICAgKE1hcnNoYWxsaW5nSGVscGVyczo6QlNUUlRvQ0ZTdHJpbmdSZWYpOgor
ICAgICAgICAoTWFyc2hhbGxpbmdIZWxwZXJzOjpMUENPTEVTVFJUb0NGU3RyaW5nUmVmKToKKyAg
ICAgICAgKE1hcnNoYWxsaW5nSGVscGVyczo6aW50VG9DRk51bWJlclJlZik6CisgICAgICAgIChN
YXJzaGFsbGluZ0hlbHBlcnM6OnNhZmVBcnJheVRvU3RyaW5nQXJyYXkpOgorICAgICAgICAoTWFy
c2hhbGxpbmdIZWxwZXJzOjpzYWZlQXJyYXlUb0ludEFycmF5KToKKyAgICAgICAgKE1hcnNoYWxs
aW5nSGVscGVyczo6c2FmZUFycmF5VG9JVW5rbm93bkFycmF5KToKKyAgICAgICAgKiBNYXJzaGFs
bGluZ0hlbHBlcnMuaDoKKyAgICAgICAgKiBXZWJBcHBsaWNhdGlvbkNhY2hlLmNwcDoKKyAgICAg
ICAgKFdlYkFwcGxpY2F0aW9uQ2FjaGU6Om9yaWdpbnNXaXRoQ2FjaGUpOgorICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkZyYW1l
TG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZEZhaWxUb1N0YXJ0UGx1Z2luIGNvbnN0KToKKyAgICAg
ICAgKiBXZWJEb3dubG9hZENGTmV0LmNwcDoKKyAgICAgICAgKFdlYkRvd25sb2FkOjppbml0VG9S
ZXN1bWVXaXRoQnVuZGxlKToKKyAgICAgICAgKFdlYkRvd25sb2FkOjpzZXREZXN0aW5hdGlvbik6
CisgICAgICAgIChXZWJEb3dubG9hZDo6d2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKiBXZWJI
aXN0b3J5LmNwcDoKKyAgICAgICAgKGNyZWF0ZVVzZXJJbmZvRnJvbUFycmF5KToKKyAgICAgICAg
KiBXZWJMb2NhbGl6YWJsZVN0cmluZ3MuY3BwOgorICAgICAgICAoY3JlYXRlV2ViS2l0QnVuZGxl
KToKKwogMjAyMS0wMi0xMCAgUm9iIEJ1aXMgIDxyYnVpc0BpZ2FsaWEuY29tPgogCiAgICAgICAg
IFVzZSBldmVudCBsb29wIHRvIHNldCB0aXRsZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS9KU0NvbnRleHQubW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29u
dGV4dC5tbQppbmRleCAwYmE3OTkxZWY3YjI3ZGFlMjU1MWQ2MDRlZmMzZGM3YjMzMmMzYmRhLi5i
ZWIxNDNkMGFmNTQxYjkzZTliZDNiNTU0ZjdkMDVlM2U2OThhOTA5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dC5tbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL0pTQ29udGV4dC5tbQpAQCAtMjYyLDcgKzI2Miw3IEBAIC0gKE5TU3RyaW5nICop
bmFtZQogICAgIGlmICghbmFtZSkKICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAgIHJldHVybiBD
RkJyaWRnaW5nUmVsZWFzZShKU1N0cmluZ0NvcHlDRlN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0
LCBuYW1lKSk7CisgICAgcmV0dXJuIGFkb3B0Q0YoSlNTdHJpbmdDb3B5Q0ZTdHJpbmcoa0NGQWxs
b2NhdG9yRGVmYXVsdCwgbmFtZSkpLmJyaWRnaW5nQXV0b3JlbGVhc2UoKTsKIH0KIAogLSAodm9p
ZClzZXROYW1lOihOU1N0cmluZyAqKW5hbWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNWYWx1ZS5tbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZS5t
bQppbmRleCAxODQ0YjA2MTMyNTUxY2U5YmJhY2U0MjQyNDFmMTZiOWJkZGQ5NGUyLi5hYzA5ZjY1
NDUwN2MzZGJkNDk2MGZkNjcxMzMyYmIzZjExZjkwNjI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0pTVmFsdWUubW0KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS9KU1ZhbHVlLm1tCkBAIC03NzMsNyArNzczLDcgQEAgc3RhdGljIEpTQ29udGFpbmVyQ29udmVy
dG9yOjpUYXNrIHZhbHVlVG9PYmplY3RXaXRob3V0Q29weShKU0dsb2JhbENvbnRleHRSZWYgY28K
ICAgICAgICAgfSBlbHNlIGlmIChKU1ZhbHVlSXNTdHJpbmcoY29udGV4dCwgdmFsdWUpKSB7CiAg
ICAgICAgICAgICAvLyBXb3VsZCBiZSBuaWNlIHRvIHVuaXF1ZSBzdHJpbmdzLCB0b28uCiAgICAg
ICAgICAgICBhdXRvIGpzc3RyaW5nID0gYWRvcHRSZWYoSlNWYWx1ZVRvU3RyaW5nQ29weShjb250
ZXh0LCB2YWx1ZSwgMCkpOwotICAgICAgICAgICAgcHJpbWl0aXZlID0gQ0ZCcmlkZ2luZ1JlbGVh
c2UoSlNTdHJpbmdDb3B5Q0ZTdHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwganNzdHJpbmcuZ2V0
KCkpKTsKKyAgICAgICAgICAgIHByaW1pdGl2ZSA9IGFkb3B0Q0YoSlNTdHJpbmdDb3B5Q0ZTdHJp
bmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwganNzdHJpbmcuZ2V0KCkpKS5icmlkZ2luZ0F1dG9yZWxl
YXNlKCk7CiAgICAgICAgIH0gZWxzZSBpZiAoSlNWYWx1ZUlzTnVsbChjb250ZXh0LCB2YWx1ZSkp
CiAgICAgICAgICAgICBwcmltaXRpdmUgPSBbTlNOdWxsIG51bGxdOwogICAgICAgICBlbHNlIHsK
QEAgLTg4MSw3ICs4ODEsNyBAQCBpZCB2YWx1ZVRvU3RyaW5nKEpTR2xvYmFsQ29udGV4dFJlZiBj
b250ZXh0LCBKU1ZhbHVlUmVmIHZhbHVlLCBKU1ZhbHVlUmVmKiBleGNlcAogICAgICAgICByZXR1
cm4gbmlsOwogICAgIH0KIAotICAgIHJldHVybiBDRkJyaWRnaW5nUmVsZWFzZShKU1N0cmluZ0Nv
cHlDRlN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBqc3N0cmluZy5nZXQoKSkpOworICAgIHJl
dHVybiBhZG9wdENGKEpTU3RyaW5nQ29weUNGU3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIGpz
c3RyaW5nLmdldCgpKSkuYnJpZGdpbmdBdXRvcmVsZWFzZSgpOwogfQogCiBpZCB2YWx1ZVRvRGF0
ZShKU0dsb2JhbENvbnRleHRSZWYgY29udGV4dCwgSlNWYWx1ZVJlZiB2YWx1ZSwgSlNWYWx1ZVJl
ZiogZXhjZXB0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9yZW1vdGUvY29jb2EvUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5tbSBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL2NvY29hL1JlbW90ZUluc3BlY3RvclhQQ0Nv
bm5lY3Rpb24ubW0KaW5kZXggNzIzMTAzYTAzODczYjM3YjlhZWI5YzdjZmU0ZDQwOTY3ODRmM2Yz
Ni4uODEzYzE2MzBlM2Q2YTBjYmIxNjhiMjc2YzY1MGUwNTcxNzIzYmU3MCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvY29jb2EvUmVtb3RlSW5zcGVj
dG9yWFBDQ29ubmVjdGlvbi5tbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L3JlbW90ZS9jb2NvYS9SZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uLm1tCkBAIC0xMTcsMTAg
KzExNywxMCBAQCBOU0RpY3Rpb25hcnkgKlJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb246OmRl
c2VyaWFsaXplTWVzc2FnZSh4cGNfb2JqZWN0X3Qgb2JqZQogICAgICAgICByZXR1cm4gbmlsOwog
ICAgIH0KIAotICAgIGF1dG8gZGljdGlvbmFyeSA9IF9DRlhQQ0NyZWF0ZUNGT2JqZWN0RnJvbVhQ
Q01lc3NhZ2UoeHBjRGljdGlvbmFyeSk7CisgICAgYXV0byBkaWN0aW9uYXJ5ID0gYWRvcHRDRihf
Q0ZYUENDcmVhdGVDRk9iamVjdEZyb21YUENNZXNzYWdlKHhwY0RpY3Rpb25hcnkpKTsKICAgICBB
U1NFUlRfV0lUSF9NRVNTQUdFKGRpY3Rpb25hcnksICJVbmFibGUgdG8gZGVzZXJpYWxpemUgeHBj
IG1lc3NhZ2UiKTsKLSAgICBBU1NFUlQoQ0ZHZXRUeXBlSUQoZGljdGlvbmFyeSkgPT0gQ0ZEaWN0
aW9uYXJ5R2V0VHlwZUlEKCkpOwotICAgIHJldHVybiBDRkJyaWRnaW5nUmVsZWFzZShkaWN0aW9u
YXJ5KTsKKyAgICBBU1NFUlQoQ0ZHZXRUeXBlSUQoZGljdGlvbmFyeS5nZXQoKSkgPT0gQ0ZEaWN0
aW9uYXJ5R2V0VHlwZUlEKCkpOworICAgIHJldHVybiBkaWN0aW9uYXJ5LmJyaWRnaW5nQXV0b3Jl
bGVhc2UoKTsKIH0KIAogdm9pZCBSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uOjpoYW5kbGVF
dmVudCh4cGNfb2JqZWN0X3Qgb2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvY29j
b2EvTlNVUkxFeHRyYXMubW0gYi9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9OU1VSTEV4dHJhcy5tbQpp
bmRleCAyMDllYTViODY2NGExYmEzMTkyZjllYzIzNTM5ZTMwY2UyYzk3YTgyLi43NTA4ZjJmNGYy
ZGM0MmU4MmFmODFmNjM0ODIwYzVkZDc2MDY1ZDBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0
Zi9jb2NvYS9OU1VSTEV4dHJhcy5tbQorKysgYi9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9OU1VSTEV4
dHJhcy5tbQpAQCAtOTIsMTAgKzkyLDEwIEBAIHZvaWQgbG9hZElETkFsbG93ZWRTY3JpcHRMaXN0
KCkKICAgICAKIHN0YXRpYyBTdHJpbmcgZGVjb2RlUGVyY2VudEVzY2FwZXMoY29uc3QgU3RyaW5n
JiBzdHJpbmcpCiB7Ci0gICAgTlNTdHJpbmcgKnN1YnN0cmluZyA9IENGQnJpZGdpbmdSZWxlYXNl
KENGVVJMQ3JlYXRlU3RyaW5nQnlSZXBsYWNpbmdQZXJjZW50RXNjYXBlcyhudWxscHRyLCBzdHJp
bmcuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgQ0ZTVFIoIiIpKSk7CisgICAgYXV0byBzdWJzdHJp
bmcgPSBhZG9wdENGKENGVVJMQ3JlYXRlU3RyaW5nQnlSZXBsYWNpbmdQZXJjZW50RXNjYXBlcyhu
dWxscHRyLCBzdHJpbmcuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgQ0ZTVFIoIiIpKSk7CiAgICAg
aWYgKCFzdWJzdHJpbmcpCiAgICAgICAgIHJldHVybiBzdHJpbmc7Ci0gICAgcmV0dXJuIHN1YnN0
cmluZzsKKyAgICByZXR1cm4gc3Vic3RyaW5nLmdldCgpOwogfQogCiBOU1N0cmluZyAqZGVjb2Rl
SG9zdE5hbWUoTlNTdHJpbmcgKnN0cmluZykKQEAgLTEzOCwxMSArMTM4LDExIEBAIE5TVVJMICpV
UkxCeVRydW5jYXRpbmdPbmVDaGFyYWN0ZXJCZWZvcmVDb21wb25lbnQoTlNVUkwgKlVSTCwgQ0ZV
UkxDb21wb25lbnRUeXBlCiAgICAgICAgIENGVVJMR2V0Qnl0ZXMoKF9fYnJpZGdlIENGVVJMUmVm
KVVSTCwgdXJsQnl0ZXMuZGF0YSgpLCBudW1CeXRlcyk7CiAgICAgfQogCi0gICAgQ0ZVUkxSZWYg
cmVzdWx0ID0gQ0ZVUkxDcmVhdGVXaXRoQnl0ZXMobnVsbHB0ciwgdXJsQnl0ZXMuZGF0YSgpLCBm
cmFnUmcubG9jYXRpb24gLSAxLCBrQ0ZTdHJpbmdFbmNvZGluZ1VURjgsIG51bGxwdHIpOworICAg
IGF1dG8gcmVzdWx0ID0gYWRvcHRDRihDRlVSTENyZWF0ZVdpdGhCeXRlcyhudWxscHRyLCB1cmxC
eXRlcy5kYXRhKCksIGZyYWdSZy5sb2NhdGlvbiAtIDEsIGtDRlN0cmluZ0VuY29kaW5nVVRGOCwg
bnVsbHB0cikpOwogICAgIGlmICghcmVzdWx0KQotICAgICAgICByZXN1bHQgPSBDRlVSTENyZWF0
ZVdpdGhCeXRlcyhudWxscHRyLCB1cmxCeXRlcy5kYXRhKCksIGZyYWdSZy5sb2NhdGlvbiAtIDEs
IGtDRlN0cmluZ0VuY29kaW5nSVNPTGF0aW4xLCBudWxscHRyKTsKKyAgICAgICAgcmVzdWx0ID0g
YWRvcHRDRihDRlVSTENyZWF0ZVdpdGhCeXRlcyhudWxscHRyLCB1cmxCeXRlcy5kYXRhKCksIGZy
YWdSZy5sb2NhdGlvbiAtIDEsIGtDRlN0cmluZ0VuY29kaW5nSVNPTGF0aW4xLCBudWxscHRyKSk7
CiAgICAgICAgIAotICAgIHJldHVybiByZXN1bHQgPyBDRkJyaWRnaW5nUmVsZWFzZShyZXN1bHQp
IDogVVJMOworICAgIHJldHVybiByZXN1bHQgPyByZXN1bHQuYnJpZGdpbmdBdXRvcmVsZWFzZSgp
IDogVVJMOwogfQogCiBzdGF0aWMgTlNVUkwgKlVSTEJ5UmVtb3ZpbmdSZXNvdXJjZVNwZWNpZmll
cihOU1VSTCAqVVJMKQpAQCAtMTU1LDcgKzE1NSw2IEBAIE5TVVJMICpVUkxXaXRoRGF0YShOU0Rh
dGEgKmRhdGEsIE5TVVJMICpiYXNlVVJMKQogICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJu
IG5pbDsKICAgICAKLSAgICBOU1VSTCAqcmVzdWx0ID0gbmlsOwogICAgIHNpemVfdCBsZW5ndGgg
PSBbZGF0YSBsZW5ndGhdOwogICAgIGlmIChsZW5ndGggPiAwKSB7CiAgICAgICAgIC8vIHdvcmsg
YXJvdW5kIDxyZGFyOi8vNDQ3MDc3MT46IENGVVJMQ3JlYXRlQWJzb2x1dGVVUkxXaXRoQnl0ZXMo
Li4sIFRSVUUpIGRvZXNuJ3QgcmVtb3ZlIG5vbi1wYXRoIGNvbXBvbmVudHMuCkBAIC0xNzEsMTMg
KzE3MCwxMiBAQCBOU1VSTCAqVVJMV2l0aERhdGEoTlNEYXRhICpkYXRhLCBOU1VSTCAqYmFzZVVS
TCkKICAgICAgICAgLy8gKGUuZyBjYWxscyB0byBOU1VSTCAtcGF0aCkuIEhvd2V2ZXIsIHRoaXMg
ZnVuY3Rpb24gaXMgbm90IHRvbGVyYW50IG9mIGlsbGVnYWwgVVRGLTggc2VxdWVuY2VzLCB3aGlj
aAogICAgICAgICAvLyBjb3VsZCBlaXRoZXIgYmUgYSBtYWxmb3JtZWQgc3RyaW5nIG9yIGJ5dGVz
IGluIGEgZGlmZmVyZW50IGVuY29kaW5nLCBsaWtlIHNoaWZ0LWppcywgc28gd2UgZmFsbCBiYWNr
CiAgICAgICAgIC8vIG9udG8gdXNpbmcgSVNPIExhdGluIDEgaW4gdGhvc2UgY2FzZXMuCi0gICAg
ICAgIHJlc3VsdCA9IENGQnJpZGdpbmdSZWxlYXNlKENGVVJMQ3JlYXRlQWJzb2x1dGVVUkxXaXRo
Qnl0ZXMobnVsbHB0ciwgYnl0ZXMsIGxlbmd0aCwga0NGU3RyaW5nRW5jb2RpbmdVVEY4LCAoX19i
cmlkZ2UgQ0ZVUkxSZWYpYmFzZVVSTCwgWUVTKSk7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gYWRv
cHRDRihDRlVSTENyZWF0ZUFic29sdXRlVVJMV2l0aEJ5dGVzKG51bGxwdHIsIGJ5dGVzLCBsZW5n
dGgsIGtDRlN0cmluZ0VuY29kaW5nVVRGOCwgKF9fYnJpZGdlIENGVVJMUmVmKWJhc2VVUkwsIFlF
UykpOwogICAgICAgICBpZiAoIXJlc3VsdCkKLSAgICAgICAgICAgIHJlc3VsdCA9IENGQnJpZGdp
bmdSZWxlYXNlKENGVVJMQ3JlYXRlQWJzb2x1dGVVUkxXaXRoQnl0ZXMobnVsbHB0ciwgYnl0ZXMs
IGxlbmd0aCwga0NGU3RyaW5nRW5jb2RpbmdJU09MYXRpbjEsIChfX2JyaWRnZSBDRlVSTFJlZili
YXNlVVJMLCBZRVMpKTsKLSAgICB9IGVsc2UKLSAgICAgICAgcmVzdWx0ID0gW05TVVJMIFVSTFdp
dGhTdHJpbmc6QCIiXTsKLQotICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgICAgICByZXN1bHQg
PSBhZG9wdENGKENGVVJMQ3JlYXRlQWJzb2x1dGVVUkxXaXRoQnl0ZXMobnVsbHB0ciwgYnl0ZXMs
IGxlbmd0aCwga0NGU3RyaW5nRW5jb2RpbmdJU09MYXRpbjEsIChfX2JyaWRnZSBDRlVSTFJlZili
YXNlVVJMLCBZRVMpKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdC5icmlkZ2luZ0F1dG9yZWxlYXNl
KCk7CisgICAgfQorICAgIHJldHVybiBbTlNVUkwgVVJMV2l0aFN0cmluZzpAIiJdOwogfQogc3Rh
dGljIE5TRGF0YSAqZGF0YVdpdGhVc2VyVHlwZWRTdHJpbmcoTlNTdHJpbmcgKnN0cmluZykKIHsK
QEAgLTMzNiwxMSArMzM0LDExIEBAIHN0YXRpYyBOU1VSTCAqVVJMQnlSZW1vdmluZ0NvbXBvbmVu
dEFuZFN1YnNlcXVlbnRDaGFyYWN0ZXIoTlNVUkwgKlVSTCwgQ0ZVUkxDb21wCiAgICAgICAgIAog
ICAgIG1lbW1vdmUodXJsQnl0ZXMgKyByYW5nZS5sb2NhdGlvbiwgdXJsQnl0ZXMgKyByYW5nZS5s
b2NhdGlvbiArIHJhbmdlLmxlbmd0aCwgbnVtQnl0ZXMgLSByYW5nZS5sb2NhdGlvbiArIHJhbmdl
Lmxlbmd0aCk7CiAgICAgCi0gICAgQ0ZVUkxSZWYgcmVzdWx0ID0gQ0ZVUkxDcmVhdGVXaXRoQnl0
ZXMobnVsbHB0ciwgdXJsQnl0ZXMsIG51bUJ5dGVzIC0gcmFuZ2UubGVuZ3RoLCBrQ0ZTdHJpbmdF
bmNvZGluZ1VURjgsIG51bGxwdHIpOworICAgIGF1dG8gcmVzdWx0ID0gYWRvcHRDRihDRlVSTENy
ZWF0ZVdpdGhCeXRlcyhudWxscHRyLCB1cmxCeXRlcywgbnVtQnl0ZXMgLSByYW5nZS5sZW5ndGgs
IGtDRlN0cmluZ0VuY29kaW5nVVRGOCwgbnVsbHB0cikpOwogICAgIGlmICghcmVzdWx0KQotICAg
ICAgICByZXN1bHQgPSBDRlVSTENyZWF0ZVdpdGhCeXRlcyhudWxscHRyLCB1cmxCeXRlcywgbnVt
Qnl0ZXMgLSByYW5nZS5sZW5ndGgsIGtDRlN0cmluZ0VuY29kaW5nSVNPTGF0aW4xLCBudWxscHRy
KTsKKyAgICAgICAgcmVzdWx0ID0gYWRvcHRDRihDRlVSTENyZWF0ZVdpdGhCeXRlcyhudWxscHRy
LCB1cmxCeXRlcywgbnVtQnl0ZXMgLSByYW5nZS5sZW5ndGgsIGtDRlN0cmluZ0VuY29kaW5nSVNP
TGF0aW4xLCBudWxscHRyKSk7CiAgICAgICAgICAgICAgICAgCi0gICAgcmV0dXJuIHJlc3VsdCA/
IENGQnJpZGdpbmdSZWxlYXNlKHJlc3VsdCkgOiBVUkw7CisgICAgcmV0dXJuIHJlc3VsdCA/IHJl
c3VsdC5icmlkZ2luZ0F1dG9yZWxlYXNlKCkgOiBVUkw7CiB9CiAKIE5TVVJMICpVUkxCeVJlbW92
aW5nVXNlckluZm8oTlNVUkwgKlVSTCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvbWFjL0FYT2JqZWN0Q2FjaGVNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L21hYy9BWE9iamVjdENhY2hlTWFjLm1tCmluZGV4IGI3Y2ZmNzRlNzYyYTI4ZTA0NTU3
NDY0MTYxMmRlODRiNTY5NDFmMjUuLjY5Y2VlMjg1ZTY2M2ZhNTY4ZWJmYzdjYTdmNWY5ZWNkM2Y1
MmZjZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL0FYT2Jq
ZWN0Q2FjaGVNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvQVhP
YmplY3RDYWNoZU1hYy5tbQpAQCAtNjAzLDcgKzYwMyw3IEBAIHN0YXRpYyBBWFRleHRNYXJrZXJS
YW5nZVJlZiBBWFRleHRNYXJrZXJSYW5nZShBWFRleHRNYXJrZXJSZWYgc3RhcnRNYXJrZXIsIEFY
VGV4CiAgICAgQVNTRVJUKGVuZE1hcmtlcik7CiAgICAgQVNTRVJUKENGR2V0VHlwZUlEKChfX2Jy
aWRnZSBDRlR5cGVSZWYpc3RhcnRNYXJrZXIpID09IEFYVGV4dE1hcmtlckdldFR5cGVJRCgpKTsK
ICAgICBBU1NFUlQoQ0ZHZXRUeXBlSUQoKF9fYnJpZGdlIENGVHlwZVJlZillbmRNYXJrZXIpID09
IEFYVGV4dE1hcmtlckdldFR5cGVJRCgpKTsKLSAgICByZXR1cm4gKEFYVGV4dE1hcmtlclJhbmdl
UmVmKUNGQnJpZGdpbmdSZWxlYXNlKEFYVGV4dE1hcmtlclJhbmdlQ3JlYXRlKGtDRkFsbG9jYXRv
ckRlZmF1bHQsIHN0YXJ0TWFya2VyLCBlbmRNYXJrZXIpKTsKKyAgICByZXR1cm4gKEFYVGV4dE1h
cmtlclJhbmdlUmVmKWFkb3B0Q0YoQVhUZXh0TWFya2VyUmFuZ2VDcmVhdGUoa0NGQWxsb2NhdG9y
RGVmYXVsdCwgc3RhcnRNYXJrZXIsIGVuZE1hcmtlcikpLmJyaWRnaW5nQXV0b3JlbGVhc2UoKTsK
IH0KIAogc3RhdGljIEFYVGV4dE1hcmtlclJhbmdlUmVmIHRleHRNYXJrZXJSYW5nZUZyb21NYXJr
ZXJzKEFYVGV4dE1hcmtlclJlZiB0ZXh0TWFya2VyMSwgQVhUZXh0TWFya2VyUmVmIHRleHRNYXJr
ZXIyKQpAQCAtNjE4LDE0ICs2MTgsMTQgQEAgc3RhdGljIEFYVGV4dE1hcmtlclJlZiBBWFRleHRN
YXJrZXJSYW5nZVN0YXJ0KEFYVGV4dE1hcmtlclJhbmdlUmVmIHRleHRNYXJrZXJSYW4KIHsKICAg
ICBBU1NFUlQodGV4dE1hcmtlclJhbmdlKTsKICAgICBBU1NFUlQoQ0ZHZXRUeXBlSUQoKF9fYnJp
ZGdlIENGVHlwZVJlZil0ZXh0TWFya2VyUmFuZ2UpID09IEFYVGV4dE1hcmtlclJhbmdlR2V0VHlw
ZUlEKCkpOwotICAgIHJldHVybiAoQVhUZXh0TWFya2VyUmVmKUNGQnJpZGdpbmdSZWxlYXNlKEFY
VGV4dE1hcmtlclJhbmdlQ29weVN0YXJ0TWFya2VyKHRleHRNYXJrZXJSYW5nZSkpOworICAgIHJl
dHVybiAoQVhUZXh0TWFya2VyUmVmKWFkb3B0Q0YoQVhUZXh0TWFya2VyUmFuZ2VDb3B5U3RhcnRN
YXJrZXIodGV4dE1hcmtlclJhbmdlKSkuYnJpZGdpbmdBdXRvcmVsZWFzZSgpOwogfQogCiBzdGF0
aWMgQVhUZXh0TWFya2VyUmVmIEFYVGV4dE1hcmtlclJhbmdlRW5kKEFYVGV4dE1hcmtlclJhbmdl
UmVmIHRleHRNYXJrZXJSYW5nZSkKIHsKICAgICBBU1NFUlQodGV4dE1hcmtlclJhbmdlKTsKICAg
ICBBU1NFUlQoQ0ZHZXRUeXBlSUQoKF9fYnJpZGdlIENGVHlwZVJlZil0ZXh0TWFya2VyUmFuZ2Up
ID09IEFYVGV4dE1hcmtlclJhbmdlR2V0VHlwZUlEKCkpOwotICAgIHJldHVybiAoQVhUZXh0TWFy
a2VyUmVmKUNGQnJpZGdpbmdSZWxlYXNlKEFYVGV4dE1hcmtlclJhbmdlQ29weUVuZE1hcmtlcih0
ZXh0TWFya2VyUmFuZ2UpKTsKKyAgICByZXR1cm4gKEFYVGV4dE1hcmtlclJlZilhZG9wdENGKEFY
VGV4dE1hcmtlclJhbmdlQ29weUVuZE1hcmtlcih0ZXh0TWFya2VyUmFuZ2UpKS5icmlkZ2luZ0F1
dG9yZWxlYXNlKCk7CiB9CiAKIHN0YXRpYyBUZXh0TWFya2VyRGF0YSBnZXRCeXRlc0Zyb21BWFRl
eHRNYXJrZXIoQVhUZXh0TWFya2VyUmVmIHRleHRNYXJrZXIpCkBAIC02NzEsNyArNjcxLDcgQEAg
QVhUZXh0TWFya2VyUmVmIHRleHRNYXJrZXJGb3JWaXNpYmxlUG9zaXRpb24oQVhPYmplY3RDYWNo
ZSogY2FjaGUsIGNvbnN0IFZpc2libGUKICAgICBpZiAoIXRleHRNYXJrZXJEYXRhKQogICAgICAg
ICByZXR1cm4gbmlsOwogCi0gICAgcmV0dXJuIChBWFRleHRNYXJrZXJSZWYpQ0ZCcmlkZ2luZ1Jl
bGVhc2UoQVhUZXh0TWFya2VyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIChjb25zdCBVSW50
OCopJnRleHRNYXJrZXJEYXRhLnZhbHVlKCksIHNpemVvZih0ZXh0TWFya2VyRGF0YS52YWx1ZSgp
KSkpOworICAgIHJldHVybiAoQVhUZXh0TWFya2VyUmVmKWFkb3B0Q0YoQVhUZXh0TWFya2VyQ3Jl
YXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIChjb25zdCBVSW50OCopJnRleHRNYXJrZXJEYXRhLnZh
bHVlKCksIHNpemVvZih0ZXh0TWFya2VyRGF0YS52YWx1ZSgpKSkpLmJyaWRnaW5nQXV0b3JlbGVh
c2UoKTsKIH0KIAogVmlzaWJsZVBvc2l0aW9uIHZpc2libGVQb3NpdGlvbkZvclRleHRNYXJrZXIo
QVhPYmplY3RDYWNoZSogY2FjaGUsIEFYVGV4dE1hcmtlclJlZiB0ZXh0TWFya2VyKQpAQCAtNzIx
LDcgKzcyMSw3IEBAIEFYVGV4dE1hcmtlclJlZiB0ZXh0TWFya2VyRm9yQ2hhcmFjdGVyT2Zmc2V0
KEFYT2JqZWN0Q2FjaGUqIGNhY2hlLCBjb25zdCBDaGFyYWN0CiAgICAgaWYgKCF0ZXh0TWFya2Vy
RGF0YS5heElEIHx8IHRleHRNYXJrZXJEYXRhLmlnbm9yZWQpCiAgICAgICAgIHJldHVybiBuaWw7
CiAKLSAgICByZXR1cm4gKEFYVGV4dE1hcmtlclJlZilDRkJyaWRnaW5nUmVsZWFzZShBWFRleHRN
YXJrZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgKGNvbnN0IFVJbnQ4KikmdGV4dE1hcmtl
ckRhdGEsIHNpemVvZih0ZXh0TWFya2VyRGF0YSkpKTsKKyAgICByZXR1cm4gKEFYVGV4dE1hcmtl
clJlZilhZG9wdENGKEFYVGV4dE1hcmtlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAoY29u
c3QgVUludDgqKSZ0ZXh0TWFya2VyRGF0YSwgc2l6ZW9mKHRleHRNYXJrZXJEYXRhKSkpLmJyaWRn
aW5nQXV0b3JlbGVhc2UoKTsKIH0KIAogQ2hhcmFjdGVyT2Zmc2V0IGNoYXJhY3Rlck9mZnNldEZv
clRleHRNYXJrZXIoQVhPYmplY3RDYWNoZSogY2FjaGUsIEFYVGV4dE1hcmtlclJlZiB0ZXh0TWFy
a2VyKQpAQCAtNzQ3LDcgKzc0Nyw3IEBAIEFYVGV4dE1hcmtlclJlZiBzdGFydE9yRW5kVGV4dE1h
cmtlckZvclJhbmdlKEFYT2JqZWN0Q2FjaGUqIGNhY2hlLCBjb25zdCBPcHRpb25hCiAgICAgaWYg
KCF0ZXh0TWFya2VyRGF0YS5heElEKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgcmV0dXJu
IChBWFRleHRNYXJrZXJSZWYpQ0ZCcmlkZ2luZ1JlbGVhc2UoQVhUZXh0TWFya2VyQ3JlYXRlKGtD
RkFsbG9jYXRvckRlZmF1bHQsIChjb25zdCBVSW50OCopJnRleHRNYXJrZXJEYXRhLCBzaXplb2Yo
dGV4dE1hcmtlckRhdGEpKSk7CisgICAgcmV0dXJuIChBWFRleHRNYXJrZXJSZWYpYWRvcHRDRihB
WFRleHRNYXJrZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgKGNvbnN0IFVJbnQ4KikmdGV4
dE1hcmtlckRhdGEsIHNpemVvZih0ZXh0TWFya2VyRGF0YSkpKS5icmlkZ2luZ0F1dG9yZWxlYXNl
KCk7CiB9CiAKIEFYVGV4dE1hcmtlclJhbmdlUmVmIHRleHRNYXJrZXJSYW5nZUZyb21SYW5nZShB
WE9iamVjdENhY2hlKiBjYWNoZSwgY29uc3QgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiByYW5nZSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyQmFzZS5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
bWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5tbQppbmRleCA5MzA3Njg3Yjdm
ODA3ZGI1YWJhNDY3NzUwODZjNGE1Y2M4ZGU3MGMxLi4wZmM4Mjg4NDZkYjMxZmE4YjA1NjViMWNi
N2ZmYzA5ODA2ZjQwODQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNl
Lm1tCkBAIC0zMjQsOCArMzI0LDcgQEAgLSAoV2ViQ29yZTo6QVhDb3JlT2JqZWN0Kil1cGRhdGVP
YmplY3RCYWNraW5nU3RvcmUKIHsKICAgICAvLyBDYWxsaW5nIHVwZGF0ZUJhY2tpbmdTdG9yZSgp
IGNhbiBpbnZhbGlkYXRlIHRoaXMgZWxlbWVudCBzbyBzZWxmIG11c3QgYmUgcmV0YWluZWQuCiAg
ICAgLy8gSWYgaXQgZG9lcyBiZWNvbWUgaW52YWxpZGF0ZWQsIHNlbGYuYXhCYWNraW5nT2JqZWN0
IHdpbGwgYmUgbmlsLgotICAgIENGUmV0YWluKChfX2JyaWRnZSBDRlR5cGVSZWYpc2VsZik7Ci0g
ICAgQ0ZBdXRvcmVsZWFzZSgoX19icmlkZ2UgQ0ZUeXBlUmVmKXNlbGYpOworICAgIHJldGFpblB0
cihzZWxmKS5hdXRvcmVsZWFzZSgpOwogCiAgICAgYXV0byogYmFja2luZ09iamVjdCA9IHNlbGYu
YXhCYWNraW5nT2JqZWN0OwogICAgIGlmICghYmFja2luZ09iamVjdCkKQEAgLTQzMywxMSArNDMy
LDEwIEBAIHN0YXRpYyB2b2lkIGNvbnZlcnRQYXRoVG9TY3JlZW5TcGFjZUZ1bmN0aW9uKFBhdGhD
b252ZXJzaW9uSW5mbyYgY29udmVyc2lvbiwgY29uCiAKIC0gKENHUGF0aFJlZiljb252ZXJ0UGF0
aFRvU2NyZWVuU3BhY2U6KGNvbnN0IFBhdGgmKXBhdGgKIHsKLSAgICBQYXRoQ29udmVyc2lvbklu
Zm8gY29udmVyc2lvbiA9IHsgc2VsZiwgQ0dQYXRoQ3JlYXRlTXV0YWJsZSgpIH07CisgICAgUGF0
aENvbnZlcnNpb25JbmZvIGNvbnZlcnNpb24gPSB7IHNlbGYsIGFkb3B0Q0YoQ0dQYXRoQ3JlYXRl
TXV0YWJsZSgpKS5hdXRvcmVsZWFzZSgpIH07CiAgICAgcGF0aC5hcHBseShbJmNvbnZlcnNpb25d
KGNvbnN0IFBhdGhFbGVtZW50JiBwYXRoRWxlbWVudCkgewogICAgICAgICBjb252ZXJ0UGF0aFRv
U2NyZWVuU3BhY2VGdW5jdGlvbihjb252ZXJzaW9uLCBwYXRoRWxlbWVudCk7CiAgICAgfSk7Ci0g
ICAgQ0ZBdXRvcmVsZWFzZShjb252ZXJzaW9uLnBhdGgpOwogICAgIHJldHVybiBjb252ZXJzaW9u
LnBhdGg7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFj
L1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KaW5kZXgg
ODNlZjI0YzE1OGFlNzBjMzYyNGY5MzUzYzc2OWZkZTBjYzI3NTY2ZS4uMmIwMDVjZTY3NTkwOTQ2
NzQwY2NiZWMzNjA5MzAyZWRkOGNmOWY4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdy
YXBwZXJNYWMubW0KQEAgLTc0Miw3ICs3NDIsNyBAQCBzdGF0aWMgaWQgbmV4dFRleHRNYXJrZXJG
b3JDaGFyYWN0ZXJPZmZzZXQoQVhPYmplY3RDYWNoZSogY2FjaGUsIENoYXJhY3Rlck9mZnNldAog
ICAgIGNhY2hlLT50ZXh0TWFya2VyRGF0YUZvck5leHRDaGFyYWN0ZXJPZmZzZXQodGV4dE1hcmtl
ckRhdGEsIGNoYXJhY3Rlck9mZnNldCk7CiAgICAgaWYgKCF0ZXh0TWFya2VyRGF0YS5heElEKQog
ICAgICAgICByZXR1cm4gbmlsOwotICAgIHJldHVybiBDRkJyaWRnaW5nUmVsZWFzZShBWFRleHRN
YXJrZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgKGNvbnN0IFVJbnQ4KikmdGV4dE1hcmtl
ckRhdGEsIHNpemVvZih0ZXh0TWFya2VyRGF0YSkpKTsKKyAgICByZXR1cm4gYWRvcHRDRihBWFRl
eHRNYXJrZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgKGNvbnN0IFVJbnQ4KikmdGV4dE1h
cmtlckRhdGEsIHNpemVvZih0ZXh0TWFya2VyRGF0YSkpKS5icmlkZ2luZ0F1dG9yZWxlYXNlKCk7
CiB9CiAKIHN0YXRpYyBpZCBwcmV2aW91c1RleHRNYXJrZXJGb3JDaGFyYWN0ZXJPZmZzZXQoQVhP
YmplY3RDYWNoZSogY2FjaGUsIENoYXJhY3Rlck9mZnNldCYgY2hhcmFjdGVyT2Zmc2V0KQpAQCAt
NzU0LDcgKzc1NCw3IEBAIHN0YXRpYyBpZCBwcmV2aW91c1RleHRNYXJrZXJGb3JDaGFyYWN0ZXJP
ZmZzZXQoQVhPYmplY3RDYWNoZSogY2FjaGUsIENoYXJhY3Rlck9mCiAgICAgY2FjaGUtPnRleHRN
YXJrZXJEYXRhRm9yUHJldmlvdXNDaGFyYWN0ZXJPZmZzZXQodGV4dE1hcmtlckRhdGEsIGNoYXJh
Y3Rlck9mZnNldCk7CiAgICAgaWYgKCF0ZXh0TWFya2VyRGF0YS5heElEKQogICAgICAgICByZXR1
cm4gbmlsOwotICAgIHJldHVybiBDRkJyaWRnaW5nUmVsZWFzZShBWFRleHRNYXJrZXJDcmVhdGUo
a0NGQWxsb2NhdG9yRGVmYXVsdCwgKGNvbnN0IFVJbnQ4KikmdGV4dE1hcmtlckRhdGEsIHNpemVv
Zih0ZXh0TWFya2VyRGF0YSkpKTsKKyAgICByZXR1cm4gYWRvcHRDRihBWFRleHRNYXJrZXJDcmVh
dGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgKGNvbnN0IFVJbnQ4KikmdGV4dE1hcmtlckRhdGEsIHNp
emVvZih0ZXh0TWFya2VyRGF0YSkpKS5icmlkZ2luZ0F1dG9yZWxlYXNlKCk7CiB9CiAKIC0gKGlk
KW5leHRUZXh0TWFya2VyRm9yQ2hhcmFjdGVyT2Zmc2V0OihDaGFyYWN0ZXJPZmZzZXQmKWNoYXJh
Y3Rlck9mZnNldApAQCAtNzkyLDcgKzc5Miw3IEBAIC0gKGlkKXRleHRNYXJrZXJGb3JGaXJzdFBv
c2l0aW9uSW5UZXh0Q29udHJvbDooSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQgJil0ZXh0CiAg
ICAgaWYgKCF0ZXh0TWFya2VyRGF0YSkKICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAgIHJldHVy
biBDRkJyaWRnaW5nUmVsZWFzZShBWFRleHRNYXJrZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVs
dCwgKGNvbnN0IFVJbnQ4KikmdGV4dE1hcmtlckRhdGEudmFsdWUoKSwgc2l6ZW9mKHRleHRNYXJr
ZXJEYXRhLnZhbHVlKCkpKSk7CisgICAgcmV0dXJuIGFkb3B0Q0YoQVhUZXh0TWFya2VyQ3JlYXRl
KGtDRkFsbG9jYXRvckRlZmF1bHQsIChjb25zdCBVSW50OCopJnRleHRNYXJrZXJEYXRhLnZhbHVl
KCksIHNpemVvZih0ZXh0TWFya2VyRGF0YS52YWx1ZSgpKSkpLmJyaWRnaW5nQXV0b3JlbGVhc2Uo
KTsKIH0KIAogLy8gV2hlbiBtb2RpZnlpbmcgYXR0cmlidXRlZCBzdHJpbmdzLCB0aGUgcmFuZ2Ug
Y2FuIGNvbWUgZnJvbSBhIHNvdXJjZSB3aGljaCBtYXkgcHJvdmlkZSBmYXVsdHkgaW5mb3JtYXRp
b24gKGUuZy4gdGhlIHNwZWxsIGNoZWNrZXIpLgpAQCAtMTAxOCwxMSArMTAxOCw4IEBAIHN0YXRp
YyB2b2lkIEFYQXR0cmlidXRlU3RyaW5nU2V0RWxlbWVudChOU011dGFibGVBdHRyaWJ1dGVkU3Ry
aW5nKiBhdHRyU3RyaW5nLCBOCiAgICAgICAgIGlmIChbYXR0cmlidXRlIGlzRXF1YWxUb1N0cmlu
ZzpOU0FjY2Vzc2liaWxpdHlBdHRhY2htZW50VGV4dEF0dHJpYnV0ZV0gJiYgb2JqZWN0LT5pc0F0
dGFjaG1lbnQoKSAmJiBbb2JqZWN0V3JhcHBlciBhdHRhY2htZW50Vmlld10pCiAgICAgICAgICAg
ICBvYmplY3RXcmFwcGVyID0gW29iamVjdFdyYXBwZXIgYXR0YWNobWVudFZpZXddOwogICAgICAg
ICAKLSAgICAgICAgQVhVSUVsZW1lbnRSZWYgYXhFbGVtZW50ID0gTlNBY2Nlc3NpYmlsaXR5Q3Jl
YXRlQVhVSUVsZW1lbnRSZWYob2JqZWN0V3JhcHBlcik7Ci0gICAgICAgIGlmIChheEVsZW1lbnQp
IHsKLSAgICAgICAgICAgIFthdHRyU3RyaW5nIGFkZEF0dHJpYnV0ZTphdHRyaWJ1dGUgdmFsdWU6
KF9fYnJpZGdlIGlkKWF4RWxlbWVudCByYW5nZTpyYW5nZV07Ci0gICAgICAgICAgICBDRlJlbGVh
c2UoYXhFbGVtZW50KTsKLSAgICAgICAgfQorICAgICAgICBpZiAoYXV0byBheEVsZW1lbnQgPSBh
ZG9wdENGKE5TQWNjZXNzaWJpbGl0eUNyZWF0ZUFYVUlFbGVtZW50UmVmKG9iamVjdFdyYXBwZXIp
KSkKKyAgICAgICAgICAgIFthdHRyU3RyaW5nIGFkZEF0dHJpYnV0ZTphdHRyaWJ1dGUgdmFsdWU6
KF9fYnJpZGdlIGlkKWF4RWxlbWVudC5nZXQoKSByYW5nZTpyYW5nZV07CiAgICAgfSBlbHNlCiAg
ICAgICAgIFthdHRyU3RyaW5nIHJlbW92ZUF0dHJpYnV0ZTphdHRyaWJ1dGUgcmFuZ2U6cmFuZ2Vd
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVy
dGVyLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCmlu
ZGV4IDY1ZTg1NTI1MjUwZDQwYmFjMGMzZjM4NTZiNzgzOTgzNjBjMGI5MjQuLjhjYWZhN2MzNmU2
ZGQ2MDUwOTI3N2RlMGFjZmQyYzAzMTU2OGQwYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW0KQEAgLTIwOTAsNyArMjA5MCw2IEBAIHZvaWQgSFRN
TENvbnZlcnRlcjo6X3Byb2Nlc3NUZXh0KENoYXJhY3RlckRhdGEmIGNoYXJhY3RlckRhdGEpCiAg
ICAgdW5pY2hhciBsYXN0Q2hhciA9ICh0ZXh0TGVuZ3RoID4gMCkgPyBbW19hdHRyU3RyIHN0cmlu
Z10gY2hhcmFjdGVyQXRJbmRleDp0ZXh0TGVuZ3RoIC0gMV0gOiAnXG4nOwogICAgIEJPT0wgc3Vw
cHJlc3NMZWFkaW5nU3BhY2UgPSAoKF9mbGFncy5pc1NvZnQgJiYgbGFzdENoYXIgPT0gJyAnKSB8
fCBsYXN0Q2hhciA9PSAnXG4nIHx8IGxhc3RDaGFyID09ICdccicgfHwgbGFzdENoYXIgPT0gJ1x0
JyB8fCBsYXN0Q2hhciA9PSBOU1BhcmFncmFwaFNlcGFyYXRvckNoYXJhY3RlciB8fCBsYXN0Q2hh
ciA9PSBOU0xpbmVTZXBhcmF0b3JDaGFyYWN0ZXIgfHwgbGFzdENoYXIgPT0gTlNGb3JtRmVlZENo
YXJhY3RlciB8fCBsYXN0Q2hhciA9PSBXZWJOZXh0TGluZUNoYXJhY3Rlcik7CiAgICAgTlNSYW5n
ZSByYW5nZVRvUmVwbGFjZSA9IE5TTWFrZVJhbmdlKHRleHRMZW5ndGgsIDApOwotICAgIENGTXV0
YWJsZVN0cmluZ1JlZiBtdXRzdHIgPSBOVUxMOwogCiAgICAgU3RyaW5nIG9yaWdpbmFsU3RyaW5n
ID0gY2hhcmFjdGVyRGF0YS5kYXRhKCk7CiAgICAgdW5zaWduZWQgc3RhcnRPZmZzZXQgPSAwOwpA
QCAtMjE2MCw4ICsyMTU5LDYgQEAgdm9pZCBIVE1MQ29udmVydGVyOjpfcHJvY2Vzc1RleHQoQ2hh
cmFjdGVyRGF0YSYgY2hhcmFjdGVyRGF0YSkKICAgICAgICAgICAgIFtfYXR0clN0ciBzZXRBdHRy
aWJ1dGVzOmFnZ3JlZ2F0ZWRBdHRyaWJ1dGVzRm9yQW5jZXN0b3JzKGNoYXJhY3RlckRhdGEpIHJh
bmdlOnJhbmdlVG9SZXBsYWNlXTsKICAgICAgICAgX2ZsYWdzLmlzU29mdCA9IHdhc1NwYWNlOwog
ICAgIH0KLSAgICBpZiAobXV0c3RyKQotICAgICAgICBDRlJlbGVhc2UobXV0c3RyKTsKIH0KIAog
dm9pZCBIVE1MQ29udmVydGVyOjpfdHJhdmVyc2VOb2RlKE5vZGUmIG5vZGUsIHVuc2lnbmVkIGRl
cHRoLCBib29sIGVtYmVkZGVkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nv
Y29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jb2Nv
YS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EubW0KaW5kZXggOTZmNDZjNGNjMDJlODlhODJhNmRmNjUz
Njc0ZDA5NzM0MzE4MDU0Zi4uZmE0YjkwM2JlZjkzOTQ4MWMyMmVhN2RmNTUxZThiNTVlN2UwZTUy
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0
b3JDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY29jb2EvRGlza0NhY2hlTW9u
aXRvckNvY29hLm1tCkBAIC0xMDIsMTAgKzEwMiw5IEBAIERpc2tDYWNoZU1vbml0b3I6OkRpc2tD
YWNoZU1vbml0b3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBQQUw6OlNlc3Npb25J
CiAKICNpZiBVU0UoV0VCX1RIUkVBRCkKICAgICBhdXRvIGJsb2NrVG9SdW4gPSBeKENGQ2FjaGVk
VVJMUmVzcG9uc2VSZWYgcmVzcG9uc2UpIHsKLSAgICAgICAgQ0ZSZXRhaW4ocmVzcG9uc2UpOwor
ICAgICAgICBhdXRvIHN0cm9uZ1Jlc3BvbnNlID0gcmV0YWluUHRyKHJlc3BvbnNlKTsKICAgICAg
ICAgV2ViVGhyZWFkUnVuKF57Ci0gICAgICAgICAgICBibG9jayhyZXNwb25zZSk7Ci0gICAgICAg
ICAgICBDRlJlbGVhc2UocmVzcG9uc2UpOworICAgICAgICAgICAgYmxvY2soc3Ryb25nUmVzcG9u
c2UuZ2V0KCkpOwogICAgICAgICB9KTsKICAgICB9OwogI2Vsc2UKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvbWFjL0V2ZW50SGFuZGxlck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvbWFjL0V2ZW50SGFuZGxlck1hYy5tbQppbmRleCBiMjQ5ZTRmNGZkOTkyYjRlNjFhZTdmZWY5
MDAwOGY1NjhmOTEwZTliLi45ZDEwYTlmYTdmMTlkNDAyMWMxNDg3ZDVlYmNhNjUwM2FlY2FjNDJl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9FdmVudEhhbmRsZXJNYWMubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvRXZlbnRIYW5kbGVyTWFjLm1tCkBAIC00Njgs
MTMgKzQ2OCwxMiBAQCBzdGF0aWMgdm9pZCBzZXROU1Njcm9sbFZpZXdTY3JvbGxXaGVlbFNob3Vs
ZFJldGFpblNlbGYoYm9vbCBzaG91bGRSZXRhaW4pCiAKIHN0YXRpYyB2b2lkIHNlbGZSZXRhaW5p
bmdOU1Njcm9sbFZpZXdTY3JvbGxXaGVlbChOU1Njcm9sbFZpZXcgKnNlbGYsIFNFTCBzZWxlY3Rv
ciwgTlNFdmVudCAqZXZlbnQpCiB7CisgICAgUmV0YWluUHRyPE5TU2Nyb2xsVmlldz4gc3Ryb25n
U2VsZjsKICAgICBib29sIHNob3VsZFJldGFpblNlbGYgPSBpc01haW5UaHJlYWQoKSAmJiBuc1Nj
cm9sbFZpZXdTY3JvbGxXaGVlbFNob3VsZFJldGFpblNlbGYoKTsKLQogICAgIGlmIChzaG91bGRS
ZXRhaW5TZWxmKQotICAgICAgICBDRlJldGFpbigoX19icmlkZ2UgQ0ZUeXBlUmVmKXNlbGYpOwor
ICAgICAgICBzdHJvbmdTZWxmID0gcmV0YWluUHRyKHNlbGYpOworCiAgICAgd3RmQ2FsbElNUDx2
b2lkPihvcmlnaW5hbE5TU2Nyb2xsVmlld1Njcm9sbFdoZWVsLCBzZWxmLCBzZWxlY3RvciwgZXZl
bnQpOwotICAgIGlmIChzaG91bGRSZXRhaW5TZWxmKQotICAgICAgICBDRlJlbGVhc2UoKF9fYnJp
ZGdlIENGVHlwZVJlZilzZWxmKTsKIH0KIAogYm9vbCBFdmVudEhhbmRsZXI6OnBhc3NXaGVlbEV2
ZW50VG9XaWRnZXQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50LCBXaWRnZXQm
IHdpZGdldCwgT3B0aW9uU2V0PFdoZWVsRXZlbnRQcm9jZXNzaW5nU3RlcHM+IHByb2Nlc3NpbmdT
dGVwcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvd2luL0ZyYW1lQ0dXaW4uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGFnZS93aW4vRnJhbWVDR1dpbi5jcHAKaW5kZXggZjA1NTZhM2Rh
YjJhOTI5ZmZiZGNjM2EyMGE2MTk2NzU2YjY2N2EyMS4uNzNkOGI0OWNlYTdjYTY1OGQ1NTQ2ZDNl
YjE1MjJhZDM0YzBhZWMxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS93aW4vRnJh
bWVDR1dpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS93aW4vRnJhbWVDR1dpbi5jcHAK
QEAgLTY4LDE1ICs2OCwxNCBAQCBHRElPYmplY3Q8SEJJVE1BUD4gaW1hZ2VGcm9tUmVjdChjb25z
dCBGcmFtZSogZnJhbWUsIEludFJlY3QmIGlyKQogICAgICAgICByZXR1cm4gaGJtcDsKIAogICAg
IEhHRElPQkogaGJtcE9sZCA9IFNlbGVjdE9iamVjdChoZGMuZ2V0KCksIGhibXAuZ2V0KCkpOwot
ICAgIENHQ29udGV4dFJlZiBjb250ZXh0ID0gQ0dCaXRtYXBDb250ZXh0Q3JlYXRlKHN0YXRpY19j
YXN0PHZvaWQqPihiaXRzKSwgdywgaCwKLSAgICAgICAgOCwgdyAqIHNpemVvZihSR0JRVUFEKSwg
c1JHQkNvbG9yU3BhY2VSZWYoKSwga0NHQml0bWFwQnl0ZU9yZGVyMzJMaXR0bGUgfCBrQ0dJbWFn
ZUFscGhhUHJlbXVsdGlwbGllZEZpcnN0KTsKLSAgICBDR0NvbnRleHRTYXZlR1N0YXRlKGNvbnRl
eHQpOworICAgIGF1dG8gY29udGV4dCA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlKHN0
YXRpY19jYXN0PHZvaWQqPihiaXRzKSwgdywgaCwKKyAgICAgICAgOCwgdyAqIHNpemVvZihSR0JR
VUFEKSwgc1JHQkNvbG9yU3BhY2VSZWYoKSwga0NHQml0bWFwQnl0ZU9yZGVyMzJMaXR0bGUgfCBr
Q0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZEZpcnN0KSk7CisgICAgQ0dDb250ZXh0U2F2ZUdTdGF0
ZShjb250ZXh0LmdldCgpKTsKIAotICAgIEdyYXBoaWNzQ29udGV4dCBnYyhjb250ZXh0KTsKKyAg
ICBHcmFwaGljc0NvbnRleHQgZ2MoY29udGV4dC5nZXQoKSk7CiAKICAgICBkcmF3UmVjdEludG9D
b250ZXh0KGlyLCBmcmFtZS0+dmlldygpLCBnYyk7CiAKLSAgICBDR0NvbnRleHRSZWxlYXNlKGNv
bnRleHQpOwogICAgIFNlbGVjdE9iamVjdChoZGMuZ2V0KCksIGhibXBPbGQpOwogCiAgICAgZnJh
bWUtPnZpZXcoKS0+c2V0UGFpbnRCZWhhdmlvcihvbGRQYWludEJlaGF2aW9yKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL01haW5UaHJlYWRTaGFyZWRUaW1lckNGLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL01haW5UaHJlYWRTaGFyZWRUaW1lckNGLmNw
cAppbmRleCAyOGNkOWI3M2ZlNmI4YTg4YTk0NGEyMDIwOWQ3YTdhMGUwNWUwMTA0Li41NDIwYTVh
ODU5ZmJjYmNjMDRmNWQ1Zjk4NWYwODcyYTU0MDUxM2I4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jZi9NYWluVGhyZWFkU2hhcmVkVGltZXJDRi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY2YvTWFpblRocmVhZFNoYXJlZFRpbWVyQ0YuY3BwCkBAIC0zNyw3
ICszNywxMSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBDRlJ1bkxvb3BUaW1l
clJlZiBzaGFyZWRUaW1lcjsKK3N0YXRpYyBSZXRhaW5QdHI8Q0ZSdW5Mb29wVGltZXJSZWY+JiBz
aGFyZWRUaW1lcigpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxDRlJ1
bkxvb3BUaW1lclJlZj4+IHNoYXJlZFRpbWVyOworICAgIHJldHVybiBzaGFyZWRUaW1lcjsKK30K
IHN0YXRpYyB2b2lkIHRpbWVyRmlyZWQoQ0ZSdW5Mb29wVGltZXJSZWYsIHZvaWQqKTsKIAogc3Rh
dGljIGNvbnN0IENGVGltZUludGVydmFsIGtDRlRpbWVJbnRlcnZhbERpc3RhbnRGdXR1cmUgPSBz
dGQ6Om51bWVyaWNfbGltaXRzPENGVGltZUludGVydmFsPjo6bWF4KCk7CkBAIC04Myw3ICs4Nyw3
IEBAIHN0YXRpYyB2b2lkIHRpbWVyRmlyZWQoQ0ZSdW5Mb29wVGltZXJSZWYsIHZvaWQqKQogCiB2
b2lkIE1haW5UaHJlYWRTaGFyZWRUaW1lcjo6cmVzdGFydFNoYXJlZFRpbWVyKCkKIHsKLSAgICBp
ZiAoIXNoYXJlZFRpbWVyKQorICAgIGlmICghc2hhcmVkVGltZXIoKSkKICAgICAgICAgcmV0dXJu
OwogCiAgICAgTWFpblRocmVhZFNoYXJlZFRpbWVyOjpzaW5nbGV0b24oKS5zdG9wKCk7CkBAIC05
MiwxMiArOTYsMTEgQEAgdm9pZCBNYWluVGhyZWFkU2hhcmVkVGltZXI6OnJlc3RhcnRTaGFyZWRU
aW1lcigpCiAKIHZvaWQgTWFpblRocmVhZFNoYXJlZFRpbWVyOjppbnZhbGlkYXRlKCkKIHsKLSAg
ICBpZiAoIXNoYXJlZFRpbWVyKQorICAgIGlmICghc2hhcmVkVGltZXIoKSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgQ0ZSdW5Mb29wVGltZXJJbnZhbGlkYXRlKHNoYXJlZFRpbWVyKTsKLSAgICBD
RlJlbGVhc2Uoc2hhcmVkVGltZXIpOwotICAgIHNoYXJlZFRpbWVyID0gbnVsbHB0cjsKKyAgICBD
RlJ1bkxvb3BUaW1lckludmFsaWRhdGUoc2hhcmVkVGltZXIoKS5nZXQoKSk7CisgICAgc2hhcmVk
VGltZXIoKSA9IG51bGxwdHI7CiB9CiAKIHZvaWQgTWFpblRocmVhZFNoYXJlZFRpbWVyOjpzZXRG
aXJlSW50ZXJ2YWwoU2Vjb25kcyBpbnRlcnZhbCkKQEAgLTEwNSwxMiArMTA4LDEyIEBAIHZvaWQg
TWFpblRocmVhZFNoYXJlZFRpbWVyOjpzZXRGaXJlSW50ZXJ2YWwoU2Vjb25kcyBpbnRlcnZhbCkK
ICAgICBBU1NFUlQobV9maXJlZEZ1bmN0aW9uKTsKIAogICAgIENGQWJzb2x1dGVUaW1lIGZpcmVE
YXRlID0gQ0ZBYnNvbHV0ZVRpbWVHZXRDdXJyZW50KCkgKyBpbnRlcnZhbC52YWx1ZSgpOwotICAg
IGlmICghc2hhcmVkVGltZXIpIHsKLSAgICAgICAgc2hhcmVkVGltZXIgPSBDRlJ1bkxvb3BUaW1l
ckNyZWF0ZShudWxscHRyLCBmaXJlRGF0ZSwga0NGVGltZUludGVydmFsRGlzdGFudEZ1dHVyZSwg
MCwgMCwgdGltZXJGaXJlZCwgbnVsbHB0cik7CisgICAgaWYgKCFzaGFyZWRUaW1lcigpKSB7Cisg
ICAgICAgIHNoYXJlZFRpbWVyKCkgPSBhZG9wdENGKENGUnVuTG9vcFRpbWVyQ3JlYXRlKG51bGxw
dHIsIGZpcmVEYXRlLCBrQ0ZUaW1lSW50ZXJ2YWxEaXN0YW50RnV0dXJlLCAwLCAwLCB0aW1lckZp
cmVkLCBudWxscHRyKSk7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICAgICAgQ0ZSdW5M
b29wQWRkVGltZXIoV2ViVGhyZWFkUnVuTG9vcCgpLCBzaGFyZWRUaW1lciwga0NGUnVuTG9vcENv
bW1vbk1vZGVzKTsKKyAgICAgICAgQ0ZSdW5Mb29wQWRkVGltZXIoV2ViVGhyZWFkUnVuTG9vcCgp
LCBzaGFyZWRUaW1lcigpLmdldCgpLCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMpOwogI2Vsc2UKLSAg
ICAgICAgQ0ZSdW5Mb29wQWRkVGltZXIoQ0ZSdW5Mb29wR2V0Q3VycmVudCgpLCBzaGFyZWRUaW1l
ciwga0NGUnVuTG9vcENvbW1vbk1vZGVzKTsKKyAgICAgICAgQ0ZSdW5Mb29wQWRkVGltZXIoQ0ZS
dW5Mb29wR2V0Q3VycmVudCgpLCBzaGFyZWRUaW1lcigpLmdldCgpLCBrQ0ZSdW5Mb29wQ29tbW9u
TW9kZXMpOwogI2VuZGlmCiAKICAgICAgICAgc2V0dXBQb3dlck9ic2VydmVyKCk7CkBAIC0xMTgs
MTUgKzEyMSwxNSBAQCB2b2lkIE1haW5UaHJlYWRTaGFyZWRUaW1lcjo6c2V0RmlyZUludGVydmFs
KFNlY29uZHMgaW50ZXJ2YWwpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBDRlJ1bkxv
b3BUaW1lclNldE5leHRGaXJlRGF0ZShzaGFyZWRUaW1lciwgZmlyZURhdGUpOworICAgIENGUnVu
TG9vcFRpbWVyU2V0TmV4dEZpcmVEYXRlKHNoYXJlZFRpbWVyKCkuZ2V0KCksIGZpcmVEYXRlKTsK
IH0KIAogdm9pZCBNYWluVGhyZWFkU2hhcmVkVGltZXI6OnN0b3AoKQogewotICAgIGlmICghc2hh
cmVkVGltZXIpCisgICAgaWYgKCFzaGFyZWRUaW1lcigpKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBDRlJ1bkxvb3BUaW1lclNldE5leHRGaXJlRGF0ZShzaGFyZWRUaW1lciwga0NGVGltZUludGVy
dmFsRGlzdGFudEZ1dHVyZSk7CisgICAgQ0ZSdW5Mb29wVGltZXJTZXROZXh0RmlyZURhdGUoc2hh
cmVkVGltZXIoKS5nZXQoKSwga0NGVGltZUludGVydmFsRGlzdGFudEZ1dHVyZSk7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCmluZGV4IDU3NjFjMDk5
YjFmMTk0ZmExZjBkODAzYzY5NWQwNDJmYmU0NDgzYTkuLmVlNGRlY2U3YjJjNDkyZmVjNzViOThk
MmFiZDAyZTEwYjdhNDk3ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQpAQCAtMjgxMCwxMiAr
MjgxMCwxMiBAQCBzdGF0aWMgTlNTdHJpbmcgKmV4ZXJuYWxEZXZpY2VEaXNwbGF5TmFtZUZvclBs
YXllcihBVlBsYXllciAqcGxheWVyKQogICAgIGlmIChwbGF5ZXIuZXh0ZXJuYWxQbGF5YmFja1R5
cGUgIT0gQVZQbGF5ZXJFeHRlcm5hbFBsYXliYWNrVHlwZUFpclBsYXkpCiAgICAgICAgIHJldHVy
biBuaWw7CiAKLSAgICBOU0FycmF5ICpwaWNrYWJsZVJvdXRlcyA9IENGQnJpZGdpbmdSZWxlYXNl
KE1STWVkaWFSZW1vdGVDb3B5UGlja2FibGVSb3V0ZXMoKSk7Ci0gICAgaWYgKCFwaWNrYWJsZVJv
dXRlcy5jb3VudCkKKyAgICBhdXRvIHBpY2thYmxlUm91dGVzID0gYWRvcHRDRihNUk1lZGlhUmVt
b3RlQ29weVBpY2thYmxlUm91dGVzKCkpOworICAgIGlmICghcGlja2FibGVSb3V0ZXMgfHwgIUNG
QXJyYXlHZXRDb3VudChwaWNrYWJsZVJvdXRlcy5nZXQoKSkpCiAgICAgICAgIHJldHVybiBuaWw7
CiAKICAgICBOU1N0cmluZyAqZGlzcGxheU5hbWUgPSBuaWw7Ci0gICAgZm9yIChOU0RpY3Rpb25h
cnkgKnBpY2thYmxlUm91dGUgaW4gcGlja2FibGVSb3V0ZXMpIHsKKyAgICBmb3IgKE5TRGljdGlv
bmFyeSAqcGlja2FibGVSb3V0ZSBpbiAoX19icmlkZ2UgTlNBcnJheSAqKXBpY2thYmxlUm91dGVz
LmdldCgpKSB7CiAgICAgICAgIGlmICghW3BpY2thYmxlUm91dGVbQVZDb250cm9sbGVyX1JvdXRl
RGVzY3JpcHRpb25LZXlfUm91dGVDdXJyZW50bHlQaWNrZWRdIGJvb2xWYWx1ZV0pCiAgICAgICAg
ICAgICBjb250aW51ZTsKIApAQCAtMjgzMCw3ICsyODMwLDcgQEAgc3RhdGljIE5TU3RyaW5nICpl
eGVybmFsRGV2aWNlRGlzcGxheU5hbWVGb3JQbGF5ZXIoQVZQbGF5ZXIgKnBsYXllcikKIAogICAg
ICAgICAvLyBJbiBjYXNlcyB3aGVyZSBhIHJvdXRlIHdpdGggdGhhdCBuYW1lIGFscmVhZHkgZXhp
c3RzLCBwcmVmaXggdGhlIG5hbWUgd2l0aCB0aGUgbW9kZWwuCiAgICAgICAgIEJPT0wgaW5jbHVk
ZUxvY2FsaXplZERldmljZU1vZGVsTmFtZSA9IE5POwotICAgICAgICBmb3IgKE5TRGljdGlvbmFy
eSAqb3RoZXJSb3V0ZSBpbiBwaWNrYWJsZVJvdXRlcykgeworICAgICAgICBmb3IgKE5TRGljdGlv
bmFyeSAqb3RoZXJSb3V0ZSBpbiAoX19icmlkZ2UgTlNBcnJheSAqKXBpY2thYmxlUm91dGVzLmdl
dCgpKSB7CiAgICAgICAgICAgICBpZiAob3RoZXJSb3V0ZSA9PSBwaWNrYWJsZVJvdXRlKQogICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYS93aW4vQ0FDRkxheWVyVHJlZUhvc3QuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL0NBQ0ZMYXllclRyZWVIb3N0LmNwcAppbmRleCAx
MjlkZGEwZGRhYmEwODBhNTkwMTYzMDRmYWQ0ZWNmZjNlNDdjZWMwLi5hNmI3NjgzZGVlNWI2ZTE1
ZDE1ODY0MzVmYjM3MTFhMTU5ZDQyY2E1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYS93aW4vQ0FDRkxheWVyVHJlZUhvc3QuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9DQUNGTGF5ZXJUcmVlSG9zdC5jcHAKQEAg
LTE1OSw5ICsxNTksOCBAQCB2b2lkIENBQ0ZMYXllclRyZWVIb3N0Ojppbml0aWFsaXplKCkKICAg
ICBtX3Jvb3RMYXllci0+c2V0R2VvbWV0cnlGbGlwcGVkKHRydWUpOwogCiAjaWZuZGVmIE5ERUJV
RwotICAgIENHQ29sb3JSZWYgZGVidWdDb2xvciA9IENHQ29sb3JDcmVhdGVHZW5lcmljUkdCKDEs
IDAsIDAsIDAuOCk7Ci0gICAgbV9yb290TGF5ZXItPnNldEJhY2tncm91bmRDb2xvcihkZWJ1Z0Nv
bG9yKTsKLSAgICBDR0NvbG9yUmVsZWFzZShkZWJ1Z0NvbG9yKTsKKyAgICBhdXRvIGRlYnVnQ29s
b3IgPSBhZG9wdENGKENHQ29sb3JDcmVhdGVHZW5lcmljUkdCKDEsIDAsIDAsIDAuOCkpOworICAg
IG1fcm9vdExheWVyLT5zZXRCYWNrZ3JvdW5kQ29sb3IoZGVidWdDb2xvci5nZXQoKSk7CiAjZW5k
aWYKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
R3JhcGhpY3NDb250ZXh0Q0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCmluZGV4IDlkYjkwOWNkYThlZjE3NjEwZjI5NGE5ODUw
OTE4YmMxOWFlNzk3YTkuLjY0NDNhNzE1NzU4ZDY3NTg0ZWUzZGY0MTQ5NTNlNGZlNzU4N2MxYmIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNz
Q29udGV4dENHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9H
cmFwaGljc0NvbnRleHRDRy5jcHAKQEAgLTM0Niw5ICszNDYsNyBAQCBzdGF0aWMgdm9pZCBkcmF3
UGF0dGVybkNhbGxiYWNrKHZvaWQqIGluZm8sIENHQ29udGV4dFJlZiBjb250ZXh0KQogCiBzdGF0
aWMgdm9pZCBwYXR0ZXJuUmVsZWFzZUNhbGxiYWNrKHZvaWQqIGluZm8pCiB7Ci0gICAgY2FsbE9u
TWFpblRocmVhZChbaW1hZ2UgPSBzdGF0aWNfY2FzdDxDR0ltYWdlUmVmPihpbmZvKV0gewotICAg
ICAgICBDR0ltYWdlUmVsZWFzZShpbWFnZSk7Ci0gICAgfSk7CisgICAgY2FsbE9uTWFpblRocmVh
ZChbaW1hZ2UgPSBhZG9wdENGKHN0YXRpY19jYXN0PENHSW1hZ2VSZWY+KGluZm8pKV0geyB9KTsK
IH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdQbGF0Zm9ybVBhdHRlcm4oY29uc3QgUGxh
dGZvcm1JbWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdCBBZmZp
bmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBj
b25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRp
b25zKQpAQCAtNjc1LDggKzY3Myw4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUGF0aChj
b25zdCBQYXRoJiBwYXRoKQogICAgICAgICAgICAgRmxvYXRSZWN0IHJlY3QgPSBwYXRoLmZhc3RC
b3VuZGluZ1JlY3QoKTsKICAgICAgICAgICAgIEZsb2F0U2l6ZSBsYXllclNpemUgPSBnZXRDVE0o
KS5tYXBTaXplKHJlY3Quc2l6ZSgpKTsKIAotICAgICAgICAgICAgQ0dMYXllclJlZiBsYXllciA9
IENHTGF5ZXJDcmVhdGVXaXRoQ29udGV4dChjb250ZXh0LCBsYXllclNpemUsIDApOwotICAgICAg
ICAgICAgQ0dDb250ZXh0UmVmIGxheWVyQ29udGV4dCA9IENHTGF5ZXJHZXRDb250ZXh0KGxheWVy
KTsKKyAgICAgICAgICAgIGF1dG8gbGF5ZXIgPSBhZG9wdENGKENHTGF5ZXJDcmVhdGVXaXRoQ29u
dGV4dChjb250ZXh0LCBsYXllclNpemUsIDApKTsKKyAgICAgICAgICAgIENHQ29udGV4dFJlZiBs
YXllckNvbnRleHQgPSBDR0xheWVyR2V0Q29udGV4dChsYXllci5nZXQoKSk7CiAKICAgICAgICAg
ICAgIENHQ29udGV4dFNjYWxlQ1RNKGxheWVyQ29udGV4dCwgbGF5ZXJTaXplLndpZHRoKCkgLyBy
ZWN0LndpZHRoKCksIGxheWVyU2l6ZS5oZWlnaHQoKSAvIHJlY3QuaGVpZ2h0KCkpOwogICAgICAg
ICAgICAgQ0dDb250ZXh0VHJhbnNsYXRlQ1RNKGxheWVyQ29udGV4dCwgLXJlY3QueCgpLCAtcmVj
dC55KCkpOwpAQCAtNjkwLDggKzY4OCw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUGF0
aChjb25zdCBQYXRoJiBwYXRoKQogICAgICAgICAgICAgICAgIENHQ29udGV4dENsaXAobGF5ZXJD
b250ZXh0KTsKIAogICAgICAgICAgICAgbV9zdGF0ZS5maWxsR3JhZGllbnQtPnBhaW50KGxheWVy
Q29udGV4dCk7Ci0gICAgICAgICAgICBDR0NvbnRleHREcmF3TGF5ZXJJblJlY3QoY29udGV4dCwg
cmVjdCwgbGF5ZXIpOwotICAgICAgICAgICAgQ0dMYXllclJlbGVhc2UobGF5ZXIpOworICAgICAg
ICAgICAgQ0dDb250ZXh0RHJhd0xheWVySW5SZWN0KGNvbnRleHQsIHJlY3QsIGxheWVyLmdldCgp
KTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIENHQ29udGV4dEJlZ2luUGF0aChjb250
ZXh0KTsKICAgICAgICAgICAgIENHQ29udGV4dEFkZFBhdGgoY29udGV4dCwgcGF0aC5wbGF0Zm9y
bVBhdGgoKSk7CkBAIC03NDUsOCArNzQyLDggQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnN0cm9r
ZVBhdGgoY29uc3QgUGF0aCYgcGF0aCkKIAogICAgICAgICAgICAgRmxvYXRTaXplIGxheWVyU2l6
ZSA9IGdldENUTSgpLm1hcFNpemUoRmxvYXRTaXplKGFkanVzdGVkV2lkdGgsIGFkanVzdGVkSGVp
Z2h0KSk7CiAKLSAgICAgICAgICAgIENHTGF5ZXJSZWYgbGF5ZXIgPSBDR0xheWVyQ3JlYXRlV2l0
aENvbnRleHQoY29udGV4dCwgbGF5ZXJTaXplLCAwKTsKLSAgICAgICAgICAgIENHQ29udGV4dFJl
ZiBsYXllckNvbnRleHQgPSBDR0xheWVyR2V0Q29udGV4dChsYXllcik7CisgICAgICAgICAgICBh
dXRvIGxheWVyID0gYWRvcHRDRihDR0xheWVyQ3JlYXRlV2l0aENvbnRleHQoY29udGV4dCwgbGF5
ZXJTaXplLCAwKSk7CisgICAgICAgICAgICBDR0NvbnRleHRSZWYgbGF5ZXJDb250ZXh0ID0gQ0dM
YXllckdldENvbnRleHQobGF5ZXIuZ2V0KCkpOwogICAgICAgICAgICAgQ0dDb250ZXh0U2V0TGlu
ZVdpZHRoKGxheWVyQ29udGV4dCwgbGluZVdpZHRoKTsKIAogICAgICAgICAgICAgLy8gQ29tcGVu
c2F0ZSBmb3IgdGhlIGxpbmUgd2lkdGgsIG90aGVyd2lzZSB0aGUgbGF5ZXIncyB0b3AtbGVmdCBj
b3JuZXIgd291bGQgYmUKQEAgLTc2NSw4ICs3NjIsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6
c3Ryb2tlUGF0aChjb25zdCBQYXRoJiBwYXRoKQogCiAgICAgICAgICAgICBmbG9hdCBkZXN0aW5h
dGlvblggPSByb3VuZGYocmVjdC54KCkgLSBsaW5lV2lkdGgpOwogICAgICAgICAgICAgZmxvYXQg
ZGVzdGluYXRpb25ZID0gcm91bmRmKHJlY3QueSgpIC0gbGluZVdpZHRoKTsKLSAgICAgICAgICAg
IENHQ29udGV4dERyYXdMYXllckluUmVjdChjb250ZXh0LCBDR1JlY3RNYWtlKGRlc3RpbmF0aW9u
WCwgZGVzdGluYXRpb25ZLCBhZGp1c3RlZFdpZHRoLCBhZGp1c3RlZEhlaWdodCksIGxheWVyKTsK
LSAgICAgICAgICAgIENHTGF5ZXJSZWxlYXNlKGxheWVyKTsKKyAgICAgICAgICAgIENHQ29udGV4
dERyYXdMYXllckluUmVjdChjb250ZXh0LCBDR1JlY3RNYWtlKGRlc3RpbmF0aW9uWCwgZGVzdGlu
YXRpb25ZLCBhZGp1c3RlZFdpZHRoLCBhZGp1c3RlZEhlaWdodCksIGxheWVyLmdldCgpKTsKICAg
ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIENHQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZl
cihjb250ZXh0KTsKICAgICAgICAgICAgIENHQ29udGV4dEJlZ2luUGF0aChjb250ZXh0KTsKQEAg
LTgxNyw4ICs4MTMsOCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3QoY29uc3QgRmxv
YXRSZWN0JiByZWN0KQogICAgICAgICBpZiAoaGFzU2hhZG93KCkpIHsKICAgICAgICAgICAgIEZs
b2F0U2l6ZSBsYXllclNpemUgPSBnZXRDVE0oKS5tYXBTaXplKHJlY3Quc2l6ZSgpKTsKIAotICAg
ICAgICAgICAgQ0dMYXllclJlZiBsYXllciA9IENHTGF5ZXJDcmVhdGVXaXRoQ29udGV4dChjb250
ZXh0LCBsYXllclNpemUsIDApOwotICAgICAgICAgICAgQ0dDb250ZXh0UmVmIGxheWVyQ29udGV4
dCA9IENHTGF5ZXJHZXRDb250ZXh0KGxheWVyKTsKKyAgICAgICAgICAgIGF1dG8gbGF5ZXIgPSBh
ZG9wdENGKENHTGF5ZXJDcmVhdGVXaXRoQ29udGV4dChjb250ZXh0LCBsYXllclNpemUsIDApKTsK
KyAgICAgICAgICAgIENHQ29udGV4dFJlZiBsYXllckNvbnRleHQgPSBDR0xheWVyR2V0Q29udGV4
dChsYXllci5nZXQoKSk7CiAKICAgICAgICAgICAgIENHQ29udGV4dFNjYWxlQ1RNKGxheWVyQ29u
dGV4dCwgbGF5ZXJTaXplLndpZHRoKCkgLyByZWN0LndpZHRoKCksIGxheWVyU2l6ZS5oZWlnaHQo
KSAvIHJlY3QuaGVpZ2h0KCkpOwogICAgICAgICAgICAgQ0dDb250ZXh0VHJhbnNsYXRlQ1RNKGxh
eWVyQ29udGV4dCwgLXJlY3QueCgpLCAtcmVjdC55KCkpOwpAQCAtODI3LDggKzgyMyw3IEBAIHZv
aWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiAKICAg
ICAgICAgICAgIENHQ29udGV4dENvbmNhdENUTShsYXllckNvbnRleHQsIG1fc3RhdGUuZmlsbEdy
YWRpZW50U3BhY2VUcmFuc2Zvcm0pOwogICAgICAgICAgICAgbV9zdGF0ZS5maWxsR3JhZGllbnQt
PnBhaW50KGxheWVyQ29udGV4dCk7Ci0gICAgICAgICAgICBDR0NvbnRleHREcmF3TGF5ZXJJblJl
Y3QoY29udGV4dCwgcmVjdCwgbGF5ZXIpOwotICAgICAgICAgICAgQ0dMYXllclJlbGVhc2UobGF5
ZXIpOworICAgICAgICAgICAgQ0dDb250ZXh0RHJhd0xheWVySW5SZWN0KGNvbnRleHQsIHJlY3Qs
IGxheWVyLmdldCgpKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIENHQ29udGV4dENs
aXBUb1JlY3QoY29udGV4dCwgcmVjdCk7CiAgICAgICAgICAgICBDR0NvbnRleHRDb25jYXRDVE0o
Y29udGV4dCwgbV9zdGF0ZS5maWxsR3JhZGllbnRTcGFjZVRyYW5zZm9ybSk7CkBAIC0xMjI2LDkg
KzEyMjEsOSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c3Ryb2tlUmVjdChjb25zdCBGbG9hdFJl
Y3QmIHJlY3QsIGZsb2F0IGxpbmVXaWR0aCkKICAgICAgICAgICAgIGZsb2F0IGFkanVzdGVkSGVp
Z2h0ID0gY2VpbGYocmVjdC5oZWlnaHQoKSArIGRvdWJsZUxpbmVXaWR0aCk7CiAgICAgICAgICAg
ICBGbG9hdFNpemUgbGF5ZXJTaXplID0gZ2V0Q1RNKCkubWFwU2l6ZShGbG9hdFNpemUoYWRqdXN0
ZWRXaWR0aCwgYWRqdXN0ZWRIZWlnaHQpKTsKIAotICAgICAgICAgICAgQ0dMYXllclJlZiBsYXll
ciA9IENHTGF5ZXJDcmVhdGVXaXRoQ29udGV4dChjb250ZXh0LCBsYXllclNpemUsIDApOworICAg
ICAgICAgICAgYXV0byBsYXllciA9IGFkb3B0Q0YoQ0dMYXllckNyZWF0ZVdpdGhDb250ZXh0KGNv
bnRleHQsIGxheWVyU2l6ZSwgMCkpOwogCi0gICAgICAgICAgICBDR0NvbnRleHRSZWYgbGF5ZXJD
b250ZXh0ID0gQ0dMYXllckdldENvbnRleHQobGF5ZXIpOworICAgICAgICAgICAgQ0dDb250ZXh0
UmVmIGxheWVyQ29udGV4dCA9IENHTGF5ZXJHZXRDb250ZXh0KGxheWVyLmdldCgpKTsKICAgICAg
ICAgICAgIG1fc3RhdGUuc3Ryb2tlVGhpY2tuZXNzID0gbGluZVdpZHRoOwogICAgICAgICAgICAg
Q0dDb250ZXh0U2V0TGluZVdpZHRoKGxheWVyQ29udGV4dCwgbGluZVdpZHRoKTsKIApAQCAtMTI0
OCw4ICsxMjQzLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnN0cm9rZVJlY3QoY29uc3QgRmxv
YXRSZWN0JiByZWN0LCBmbG9hdCBsaW5lV2lkdGgpCiAKICAgICAgICAgICAgIGNvbnN0IGZsb2F0
IGRlc3RpbmF0aW9uWCA9IHJvdW5kZihyZWN0LngoKSAtIGxpbmVXaWR0aCk7CiAgICAgICAgICAg
ICBjb25zdCBmbG9hdCBkZXN0aW5hdGlvblkgPSByb3VuZGYocmVjdC55KCkgLSBsaW5lV2lkdGgp
OwotICAgICAgICAgICAgQ0dDb250ZXh0RHJhd0xheWVySW5SZWN0KGNvbnRleHQsIENHUmVjdE1h
a2UoZGVzdGluYXRpb25YLCBkZXN0aW5hdGlvblksIGFkanVzdGVkV2lkdGgsIGFkanVzdGVkSGVp
Z2h0KSwgbGF5ZXIpOwotICAgICAgICAgICAgQ0dMYXllclJlbGVhc2UobGF5ZXIpOworICAgICAg
ICAgICAgQ0dDb250ZXh0RHJhd0xheWVySW5SZWN0KGNvbnRleHQsIENHUmVjdE1ha2UoZGVzdGlu
YXRpb25YLCBkZXN0aW5hdGlvblksIGFkanVzdGVkV2lkdGgsIGFkanVzdGVkSGVpZ2h0KSwgbGF5
ZXIuZ2V0KCkpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgQ0dDb250ZXh0U3RhdGVT
YXZlciBzdGF0ZVNhdmVyKGNvbnRleHQpOwogICAgICAgICAgICAgc2V0U3Ryb2tlVGhpY2tuZXNz
KGxpbmVXaWR0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9QYXR0ZXJuQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
UGF0dGVybkNHLmNwcAppbmRleCBmMWI5ZTNhN2MwNTU2OWE5ODkxYjY5OGQyODNhYjUzOTdjNzI1
ZjU0Li4zYWVjNzc1NmRiOGNkMjUwYWZlZjEwZDgzZmRlYjFkY2M5M2NmOWMzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXR0ZXJuQ0cuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdHRlcm5DRy5jcHAKQEAgLTUw
LDkgKzUwLDcgQEAgc3RhdGljIHZvaWQgcGF0dGVybkNhbGxiYWNrKHZvaWQqIGluZm8sIENHQ29u
dGV4dFJlZiBjb250ZXh0KQogCiBzdGF0aWMgdm9pZCBwYXR0ZXJuUmVsZWFzZUNhbGxiYWNrKHZv
aWQqIGluZm8pCiB7Ci0gICAgY2FsbE9uTWFpblRocmVhZChbaW1hZ2UgPSBzdGF0aWNfY2FzdDxD
R0ltYWdlUmVmPihpbmZvKV0gewotICAgICAgICBDR0ltYWdlUmVsZWFzZShpbWFnZSk7Ci0gICAg
fSk7CisgICAgY2FsbE9uTWFpblRocmVhZChbaW1hZ2UgPSBhZG9wdENGKHN0YXRpY19jYXN0PENH
SW1hZ2VSZWY+KGluZm8pKV0geyB9KTsKIH0KIAogQ0dQYXR0ZXJuUmVmIFBhdHRlcm46OmNyZWF0
ZVBsYXRmb3JtUGF0dGVybihjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHVzZXJTcGFjZVRyYW5zZm9y
bSkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcAppbmRleCA5OWNiY2ZkMGI2ZGExNWNlMzIw
ODc3NWQxNWI1ZGRiYjZhYWM4ZjBlLi5mYTc3YjM5OTc3ZGI5NzhhMDU5NzFiNmMyNWM0MWYzNzJk
ZTUyNGIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9Gb250Q2FjaGVDb3JlVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwCkBAIC0xMjc5LDggKzEyNzksNyBAQCBz
dGF0aWMgdm9pZCBhdXRvQWN0aXZhdGVGb250KGNvbnN0IFN0cmluZyYgbmFtZSwgQ0dGbG9hdCBz
aXplKQogICAgIENGVHlwZVJlZiB2YWx1ZXNbXSA9IHsgZm9udE5hbWUuZ2V0KCkgfTsKICAgICBh
dXRvIGF0dHJpYnV0ZXMgPSBhZG9wdENGKENGRGljdGlvbmFyeUNyZWF0ZShrQ0ZBbGxvY2F0b3JE
ZWZhdWx0LCBrZXlzLCB2YWx1ZXMsIFdURl9BUlJBWV9MRU5HVEgoa2V5cyksICZrQ0ZUeXBlRGlj
dGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpKTsK
ICAgICBhdXRvIGRlc2NyaXB0b3IgPSBhZG9wdENGKENURm9udERlc2NyaXB0b3JDcmVhdGVXaXRo
QXR0cmlidXRlcyhhdHRyaWJ1dGVzLmdldCgpKSk7Ci0gICAgaWYgKGF1dG8gbmV3Rm9udCA9IENU
Rm9udENyZWF0ZVdpdGhGb250RGVzY3JpcHRvcihkZXNjcmlwdG9yLmdldCgpLCBzaXplLCBudWxs
cHRyKSkKLSAgICAgICAgQ0ZSZWxlYXNlKG5ld0ZvbnQpOworICAgIGF1dG8gbmV3Rm9udCA9IGFk
b3B0Q0YoQ1RGb250Q3JlYXRlV2l0aEZvbnREZXNjcmlwdG9yKGRlc2NyaXB0b3IuZ2V0KCksIHNp
emUsIG51bGxwdHIpKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udENHV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9Gb250Q0dXaW4uY3BwCmluZGV4IDUzYWM3ZTIwMDE4YTFiOGE5NTBk
Yzc0OTI2ODVkMjc1ZjhhYmIxNmUuLmMxOWU3NDE1NTdjMzA4Yzk0MWU0ZWY3MTVlM2RiNDY1OTRk
MTg1YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9G
b250Q0dXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9G
b250Q0dXaW4uY3BwCkBAIC00MDksNTAgKzQwOSwzNiBAQCB2b2lkIEZvbnRDYXNjYWRlOjpnZXRQ
bGF0Zm9ybUdseXBoQWR2YW5jZXMoQ0dGb250UmVmIGZvbnQsIGNvbnN0IENHQWZmaW5lVHJhbnNm
bwogCiAgICAgLy8gPHJkYXI6Ly9wcm9ibGVtLzc3NjExNjU+IFRoZSBHREkgYmFjayBlbmQgaW4g
Q29yZSBHcmFwaGljcyBzb21ldGltZXMgcmV0dXJucyBhZHZhbmNlcyB0aGF0CiAgICAgLy8gZGlm
ZmVyIGZyb20gd2hhdCB0aGUgZm9udCdzIGhtdHggdGFibGUgc3BlY2lmaWVzLiBUaGUgZm9sbG93
aW5nIGNvZGUgY29ycmVjdHMgdGhhdC4KLSAgICBDRkRhdGFSZWYgaG10eFRhYmxlID0gQ0dGb250
Q29weVRhYmxlRm9yVGFnKGZvbnQsICdobXR4Jyk7CisgICAgYXV0byBobXR4VGFibGUgPSBhZG9w
dENGKENHRm9udENvcHlUYWJsZUZvclRhZyhmb250LCAnaG10eCcpKTsKICAgICBpZiAoIWhtdHhU
YWJsZSkKICAgICAgICAgcmV0dXJuOwotICAgIENGRGF0YVJlZiBoaGVhVGFibGUgPSBDR0ZvbnRD
b3B5VGFibGVGb3JUYWcoZm9udCwgJ2hoZWEnKTsKLSAgICBpZiAoIWhoZWFUYWJsZSkgewotICAg
ICAgICBDRlJlbGVhc2UoaG10eFRhYmxlKTsKKyAgICBhdXRvIGhoZWFUYWJsZSA9IGFkb3B0Q0Yo
Q0dGb250Q29weVRhYmxlRm9yVGFnKGZvbnQsICdoaGVhJykpOworICAgIGlmICghaGhlYVRhYmxl
KQogICAgICAgICByZXR1cm47Ci0gICAgfQogCiAgICAgY29uc3QgQ0ZJbmRleCBoaGVhVGFibGVT
aXplID0gMzY7CiAgICAgY29uc3QgcHRyZGlmZl90IGhoZWFUYWJsZU51bWJlck9mSE1ldHJpY3NP
ZmZzZXQgPSAzNDsKLSAgICBpZiAoQ0ZEYXRhR2V0TGVuZ3RoKGhoZWFUYWJsZSkgPCBoaGVhVGFi
bGVTaXplKSB7Ci0gICAgICAgIENGUmVsZWFzZShobXR4VGFibGUpOwotICAgICAgICBDRlJlbGVh
c2UoaGhlYVRhYmxlKTsKKyAgICBpZiAoQ0ZEYXRhR2V0TGVuZ3RoKGhoZWFUYWJsZS5nZXQoKSkg
PCBoaGVhVGFibGVTaXplKQogICAgICAgICByZXR1cm47Ci0gICAgfQogCi0gICAgdW5zaWduZWQg
c2hvcnQgbnVtYmVyT2ZITWV0cmljcyA9ICpyZWludGVycHJldF9jYXN0PGNvbnN0IHVuc2lnbmVk
IHNob3J0Kj4oQ0ZEYXRhR2V0Qnl0ZVB0cihoaGVhVGFibGUpICsgaGhlYVRhYmxlTnVtYmVyT2ZI
TWV0cmljc09mZnNldCk7CisgICAgdW5zaWduZWQgc2hvcnQgbnVtYmVyT2ZITWV0cmljcyA9ICpy
ZWludGVycHJldF9jYXN0PGNvbnN0IHVuc2lnbmVkIHNob3J0Kj4oQ0ZEYXRhR2V0Qnl0ZVB0ciho
aGVhVGFibGUuZ2V0KCkpICsgaGhlYVRhYmxlTnVtYmVyT2ZITWV0cmljc09mZnNldCk7CiAgICAg
bnVtYmVyT2ZITWV0cmljcyA9ICgobnVtYmVyT2ZITWV0cmljcyAmIDB4RkYpIDw8IDgpIHwgKG51
bWJlck9mSE1ldHJpY3MgPj4gOCk7Ci0gICAgaWYgKCFudW1iZXJPZkhNZXRyaWNzKSB7Ci0gICAg
ICAgIENGUmVsZWFzZShobXR4VGFibGUpOwotICAgICAgICBDRlJlbGVhc2UoaGhlYVRhYmxlKTsK
KyAgICBpZiAoIW51bWJlck9mSE1ldHJpY3MpCiAgICAgICAgIHJldHVybjsKLSAgICB9CiAKICAg
ICBpZiAoZ2x5cGggPj0gbnVtYmVyT2ZITWV0cmljcykKICAgICAgICAgZ2x5cGggPSBudW1iZXJP
ZkhNZXRyaWNzIC0gMTsKIAotICAgIGlmIChDRkRhdGFHZXRMZW5ndGgoaG10eFRhYmxlKSA8IDQg
KiAoZ2x5cGggKyAxKSkgewotICAgICAgICBDRlJlbGVhc2UoaG10eFRhYmxlKTsKLSAgICAgICAg
Q0ZSZWxlYXNlKGhoZWFUYWJsZSk7CisgICAgaWYgKENGRGF0YUdldExlbmd0aChobXR4VGFibGUu
Z2V0KCkpIDwgNCAqIChnbHlwaCArIDEpKQogICAgICAgICByZXR1cm47Ci0gICAgfQogCi0gICAg
dW5zaWduZWQgc2hvcnQgYWR2YW5jZUluRGVzaWduVW5pdHMgPSAqcmVpbnRlcnByZXRfY2FzdDxj
b25zdCB1bnNpZ25lZCBzaG9ydCo+KENGRGF0YUdldEJ5dGVQdHIoaG10eFRhYmxlKSArIDQgKiBn
bHlwaCk7CisgICAgdW5zaWduZWQgc2hvcnQgYWR2YW5jZUluRGVzaWduVW5pdHMgPSAqcmVpbnRl
cnByZXRfY2FzdDxjb25zdCB1bnNpZ25lZCBzaG9ydCo+KENGRGF0YUdldEJ5dGVQdHIoaG10eFRh
YmxlLmdldCgpKSArIDQgKiBnbHlwaCk7CiAgICAgYWR2YW5jZUluRGVzaWduVW5pdHMgPSAoKGFk
dmFuY2VJbkRlc2lnblVuaXRzICYgMHhGRikgPDwgOCkgfCAoYWR2YW5jZUluRGVzaWduVW5pdHMg
Pj4gOCk7CiAgICAgQ0dTaXplIGhvcml6b250YWxBZHZhbmNlID0gQ0dTaXplTWFrZShzdGF0aWNf
Y2FzdDxDR0Zsb2F0PihhZHZhbmNlSW5EZXNpZ25Vbml0cykgLyBDR0ZvbnRHZXRVbml0c1BlckVt
KGZvbnQpLCAwKTsKICAgICBob3Jpem9udGFsQWR2YW5jZSA9IENHU2l6ZUFwcGx5QWZmaW5lVHJh
bnNmb3JtKGhvcml6b250YWxBZHZhbmNlLCBtKTsKICAgICBhZHZhbmNlLndpZHRoID0gaG9yaXpv
bnRhbEFkdmFuY2Uud2lkdGg7CiAgICAgaWYgKCEoc3R5bGUgJiBrQ0dGb250UmVuZGVyaW5nU3R5
bGVTdWJwaXhlbFBvc2l0aW9uaW5nKSkKICAgICAgICAgYWR2YW5jZS53aWR0aCA9IHJvdW5kZihh
ZHZhbmNlLndpZHRoKTsKLQotICAgIENGUmVsZWFzZShoaGVhVGFibGUpOwotICAgIENGUmVsZWFz
ZShobXR4VGFibGUpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0Q0dXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dENHV2luLmNwcAppbmRleCAzMTdm
OGQwNDVkMzI5M2E3OGM3YTFiNzU1NDQ2ZDA1ZGU0OWEyN2MzLi5jZWRiMDJlYjllMWY5NWJmOTAz
MzExM2JhNjA1ZDljY2ZmZjg2OWU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0Q0dXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRDR1dpbi5jcHAKQEAgLTEw
NywxNiArMTA3LDE0IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpyZWxlYXNlV2luZG93c0NvbnRl
eHQoSERDIGhkYywgY29uc3QgSW50UmVjdCYgZHN0UmVjdCwgYm9vCiAKICAgICBBU1NFUlQocGl4
ZWxEYXRhLmJpdHNQZXJQaXhlbCgpID09IDMyKTsKIAotICAgIENHQ29udGV4dFJlZiBiaXRtYXBD
b250ZXh0ID0gQ0dCaXRtYXBDb250ZXh0Q3JlYXRlKHBpeGVsRGF0YS5idWZmZXIoKSwgcGl4ZWxE
YXRhLnNpemUoKS53aWR0aCgpLCBwaXhlbERhdGEuc2l6ZSgpLmhlaWdodCgpLCA4LAorICAgIGF1
dG8gYml0bWFwQ29udGV4dCA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlKHBpeGVsRGF0
YS5idWZmZXIoKSwgcGl4ZWxEYXRhLnNpemUoKS53aWR0aCgpLCBwaXhlbERhdGEuc2l6ZSgpLmhl
aWdodCgpLCA4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHBpeGVsRGF0YS5ieXRlc1BlclJvdygpLCBzUkdCQ29sb3JTcGFjZVJlZigpLCBr
Q0dCaXRtYXBCeXRlT3JkZXIzMkxpdHRsZSB8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN1cHBvcnRBbHBoYUJsZW5kID8ga0NHSW1hZ2VB
bHBoYVByZW11bHRpcGxpZWRGaXJzdCA6IGtDR0ltYWdlQWxwaGFOb25lU2tpcEZpcnN0KSk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN1
cHBvcnRBbHBoYUJsZW5kID8ga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRGaXJzdCA6IGtDR0lt
YWdlQWxwaGFOb25lU2tpcEZpcnN0KSkpOwogCi0gICAgQ0dJbWFnZVJlZiBpbWFnZSA9IENHQml0
bWFwQ29udGV4dENyZWF0ZUltYWdlKGJpdG1hcENvbnRleHQpOwotICAgIENHQ29udGV4dERyYXdJ
bWFnZShtX2RhdGEtPm1fY2dDb250ZXh0LmdldCgpLCBkc3RSZWN0LCBpbWFnZSk7CisgICAgYXV0
byBpbWFnZSA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlSW1hZ2UoYml0bWFwQ29udGV4
dC5nZXQoKSkpOworICAgIENHQ29udGV4dERyYXdJbWFnZShtX2RhdGEtPm1fY2dDb250ZXh0Lmdl
dCgpLCBkc3RSZWN0LCBpbWFnZS5nZXQoKSk7CiAgICAgCiAgICAgLy8gRGVsZXRlIGFsbCBvdXIg
anVuay4KLSAgICBDR0ltYWdlUmVsZWFzZShpbWFnZSk7Ci0gICAgQ0dDb250ZXh0UmVsZWFzZShi
aXRtYXBDb250ZXh0KTsKICAgICA6OkRlbGV0ZURDKGhkYyk7CiB9CiAKQEAgLTE0NywxNiArMTQ1
LDE2IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3Rm9jdXNSaW5nKGNvbnN0IFZlY3RvcjxG
bG9hdFJlY3Q+JiByZWN0cywgZmxvYXQgd2lkdGgsCiAgICAgb2Zmc2V0ICs9IHJhZGl1czsKICAg
ICBDR0NvbG9yUmVmIGNvbG9yUmVmID0gY29sb3IuaXNWYWxpZCgpID8gY2FjaGVkQ0dDb2xvcihj
b2xvcikgOiBudWxscHRyOwogCi0gICAgQ0dNdXRhYmxlUGF0aFJlZiBmb2N1c1JpbmdQYXRoID0g
Q0dQYXRoQ3JlYXRlTXV0YWJsZSgpOworICAgIGF1dG8gZm9jdXNSaW5nUGF0aCA9IGFkb3B0Q0Yo
Q0dQYXRoQ3JlYXRlTXV0YWJsZSgpKTsKICAgICB1bnNpZ25lZCByZWN0Q291bnQgPSByZWN0cy5z
aXplKCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHJlY3RDb3VudDsgaSsrKQotICAg
ICAgICBDR1BhdGhBZGRSZWN0KGZvY3VzUmluZ1BhdGgsIDAsIENHUmVjdEluc2V0KHJlY3RzW2ld
LCAtb2Zmc2V0LCAtb2Zmc2V0KSk7CisgICAgICAgIENHUGF0aEFkZFJlY3QoZm9jdXNSaW5nUGF0
aC5nZXQoKSwgMCwgQ0dSZWN0SW5zZXQocmVjdHNbaV0sIC1vZmZzZXQsIC1vZmZzZXQpKTsKIAog
ICAgIENHQ29udGV4dFJlZiBjb250ZXh0ID0gcGxhdGZvcm1Db250ZXh0KCk7CiAgICAgQ0dDb250
ZXh0U2F2ZUdTdGF0ZShjb250ZXh0KTsKIAogICAgIENHQ29udGV4dEJlZ2luUGF0aChjb250ZXh0
KTsKLSAgICBDR0NvbnRleHRBZGRQYXRoKGNvbnRleHQsIGZvY3VzUmluZ1BhdGgpOworICAgIENH
Q29udGV4dEFkZFBhdGgoY29udGV4dCwgZm9jdXNSaW5nUGF0aC5nZXQoKSk7CiAKICAgICAvLyBG
SVhNRTogV2UgY2xlYXIgdGhlIGZpbGwgY29sb3IgaGVyZSB0byBhdm9pZCBnZXR0aW5nIGEgYmxh
Y2sgZmlsbCB3aGVuIGRyYXdpbmcgdGhlIGZvY3VzIHJpbmcuCiAgICAgLy8gRmluZCBvdXQgZnJv
bSBDRyBpZiB0aGlzIGlzIHRoZWlyIGJ1Zy4KQEAgLTE2NSw4ICsxNjMsNiBAQCB2b2lkIEdyYXBo
aWNzQ29udGV4dDo6ZHJhd0ZvY3VzUmluZyhjb25zdCBWZWN0b3I8RmxvYXRSZWN0PiYgcmVjdHMs
IGZsb2F0IHdpZHRoLAogICAgIENHQ29udGV4dFNldEZvY3VzUmluZ1dpdGhDb2xvcihjb250ZXh0
LCByYWRpdXMsIGNvbG9yUmVmLCAwLCAoQ0ZEaWN0aW9uYXJ5UmVmKTApOwogICAgIENHQ29udGV4
dEZpbGxQYXRoKGNvbnRleHQpOwogCi0gICAgQ0dQYXRoUmVsZWFzZShmb2N1c1JpbmdQYXRoKTsK
LQogICAgIENHQ29udGV4dFJlc3RvcmVHU3RhdGUoY29udGV4dCk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNHV2luLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNHV2luLmNwcAppbmRleCA2
ZGFiZjI0MTNmZWQzNTc1OWFiMDM5NTNkYTQzNzIyYzhkNDE2ZmQ2Li5mOGExMGQ1YzQzNmU3MDYw
ODk4NzA3YmE4YjY1NDY0MWNlMmJkZjU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VDR1dpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQ0dXaW4uY3BwCkBAIC03MCwxMCArNzAsMTAgQEAgYm9v
bCBCaXRtYXBJbWFnZTo6Z2V0SEJJVE1BUE9mU2l6ZShIQklUTUFQIGJtcCwgY29uc3QgSW50U2l6
ZSogc2l6ZSkKICAgICBBU1NFUlQoYm1wSW5mby5ibUJpdHNQaXhlbCA9PSAzMik7CiAgICAgaW50
IGJ1ZmZlclNpemUgPSBibXBJbmZvLmJtV2lkdGhCeXRlcyAqIGJtcEluZm8uYm1IZWlnaHQ7CiAg
ICAgCi0gICAgQ0dDb250ZXh0UmVmIGNnQ29udGV4dCA9IENHQml0bWFwQ29udGV4dENyZWF0ZShi
bXBJbmZvLmJtQml0cywgYm1wSW5mby5ibVdpZHRoLCBibXBJbmZvLmJtSGVpZ2h0LAotICAgICAg
ICA4LCBibXBJbmZvLmJtV2lkdGhCeXRlcywgc1JHQkNvbG9yU3BhY2VSZWYoKSwga0NHQml0bWFw
Qnl0ZU9yZGVyMzJMaXR0bGUgfCBrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZEZpcnN0KTsKKyAg
ICBhdXRvIGNnQ29udGV4dCA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlKGJtcEluZm8u
Ym1CaXRzLCBibXBJbmZvLmJtV2lkdGgsIGJtcEluZm8uYm1IZWlnaHQsCisgICAgICAgIDgsIGJt
cEluZm8uYm1XaWR0aEJ5dGVzLCBzUkdCQ29sb3JTcGFjZVJlZigpLCBrQ0dCaXRtYXBCeXRlT3Jk
ZXIzMkxpdHRsZSB8IGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkRmlyc3QpKTsKICAgCi0gICAg
R3JhcGhpY3NDb250ZXh0IGdjKGNnQ29udGV4dCk7CisgICAgR3JhcGhpY3NDb250ZXh0IGdjKGNn
Q29udGV4dC5nZXQoKSk7CiAKICAgICBGbG9hdFNpemUgaW1hZ2VTaXplID0gQml0bWFwSW1hZ2U6
OnNpemUoKTsKICAgICBpZiAoc2l6ZSkKQEAgLTgxLDkgKzgxLDYgQEAgYm9vbCBCaXRtYXBJbWFn
ZTo6Z2V0SEJJVE1BUE9mU2l6ZShIQklUTUFQIGJtcCwgY29uc3QgSW50U2l6ZSogc2l6ZSkKICAg
ICBlbHNlCiAgICAgICAgIGRyYXcoZ2MsIEZsb2F0UmVjdCgwLjBmLCAwLjBmLCBibXBJbmZvLmJt
V2lkdGgsIGJtcEluZm8uYm1IZWlnaHQpLCBGbG9hdFJlY3QoMC4wZiwgMC4wZiwgaW1hZ2VTaXpl
LndpZHRoKCksIGltYWdlU2l6ZS5oZWlnaHQoKSksIHsgQ29tcG9zaXRlT3BlcmF0b3I6OkNvcHkg
fSk7CiAKLSAgICAvLyBEbyBjbGVhbnVwCi0gICAgQ0dDb250ZXh0UmVsZWFzZShjZ0NvbnRleHQp
OwotCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy9Vc2VyQWdlbnRJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
VXNlckFnZW50SU9TLm1tCmluZGV4IDNhNjM0NGNlZjQzN2Y0MzU1MTJlNGI5NDA1NTc0OTcxNDkz
MWUyYmEuLjNiNmRlMWVjMGYzZmM1ZDE0MmRjZWM2YTVhYTZkMzFjYzhkODBlNTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9Vc2VyQWdlbnRJT1MubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1VzZXJBZ2VudElPUy5tbQpAQCAtODksMTEgKzg5LDEw
IEBAIFN0cmluZyBzdGFuZGFyZFVzZXJBZ2VudFdpdGhBcHBsaWNhdGlvbk5hbWUoY29uc3QgU3Ry
aW5nJiBhcHBsaWNhdGlvbk5hbWUsIGNvbnN0CiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBkZXBy
ZWNhdGUgYW5kIGV2ZW50dWFsbHkgcmVtb3ZlIHRoaXMgb2Jzb2xldGUgVUEgb3ZlcnJpZGU7CiAg
ICAgLy8gc2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTc5Mjcg
Zm9yIGRldGFpbHMuCiAgICAgLy8gQ2hlY2sgdG8gc2VlIGlmIHRoZXJlIGlzIGEgdXNlciBhZ2Vu
dCBvdmVycmlkZSBmb3IgYWxsIFdlYktpdCBjbGllbnRzLgotICAgIENGUHJvcGVydHlMaXN0UmVm
IG92ZXJyaWRlID0gQ0ZQcmVmZXJlbmNlc0NvcHlBcHBWYWx1ZShDRlNUUigiVXNlckFnZW50Iiks
IENGU1RSKCJjb20uYXBwbGUuV2ViRm91bmRhdGlvbiIpKTsKKyAgICBhdXRvIG92ZXJyaWRlID0g
YWRvcHRDRihDRlByZWZlcmVuY2VzQ29weUFwcFZhbHVlKENGU1RSKCJVc2VyQWdlbnQiKSwgQ0ZT
VFIoImNvbS5hcHBsZS5XZWJGb3VuZGF0aW9uIikpKTsKICAgICBpZiAob3ZlcnJpZGUpIHsKLSAg
ICAgICAgaWYgKENGR2V0VHlwZUlEKG92ZXJyaWRlKSA9PSBDRlN0cmluZ0dldFR5cGVJRCgpKQot
ICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PE5TU3RyaW5nICo+KENGQnJpZGdpbmdSZWxl
YXNlKG92ZXJyaWRlKSk7Ci0gICAgICAgIENGUmVsZWFzZShvdmVycmlkZSk7CisgICAgICAgIGlm
IChDRkdldFR5cGVJRChvdmVycmlkZS5nZXQoKSkgPT0gQ0ZTdHJpbmdHZXRUeXBlSUQoKSkKKyAg
ICAgICAgICAgIHJldHVybiAoX19icmlkZ2UgTlNTdHJpbmcgKilvdmVycmlkZS5nZXQoKTsKICAg
ICB9CiAKICAgICBTdHJpbmcgb3NWZXJzaW9uID0gdXNlckFnZW50T1NWZXJzaW9uLmlzRW1wdHko
KSAgPyBzeXN0ZW1NYXJrZXRpbmdWZXJzaW9uRm9yVXNlckFnZW50U3RyaW5nKCkgOiB1c2VyQWdl
bnRPU1ZlcnNpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2Fr
L1dlYkNvcmVUaHJlYWQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dlYkNv
cmVUaHJlYWQubW0KaW5kZXggNjYwMDc2YWRmNzY2Mzc0ZjQ5ZDVlZTVhOWIyOTNlOTlkNjRmY2Rk
Yy4uOTMyYzc4MmM2YmNiM2IyZDY3ZTkzNDAyZWM0MjFhMzQyZDM2YmY0MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV2ViQ29yZVRocmVhZC5tbQpAQCAtMjY2LDEw
ICsyNjYsOCBAQCBzdGF0aWMgdm9pZCBTZW5kRGVsZWdhdGVNZXNzYWdlKFJldGFpblB0cjxOU0lu
dm9jYXRpb24+JiYgaW52b2NhdGlvbikKICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAg
ICAgICAgICAgIGRlbGVnYXRlSW5mb3JtYXRpb24gPSBOU1N0cmluZ0Zyb21TZWxlY3RvcihbZGVs
ZWdhdGVJbnZvY2F0aW9uKCkgc2VsZWN0b3JdKTsKICAgICAKLSAgICAgICAgICAgICAgICBDRlN0
cmluZ1JlZiBtb2RlID0gQ0ZSdW5Mb29wQ29weUN1cnJlbnRNb2RlKENGUnVuTG9vcEdldE1haW4o
KSk7Ci0gICAgICAgICAgICAgICAgTlNMb2coQCIlczogZGVsZWdhdGUgKCVAKSBmYWlsZWQgdG8g
cmV0dXJuIGFmdGVyIHdhaXRpbmcgJWYgc2Vjb25kcy4gbWFpbiBydW4gbG9vcCBtb2RlOiAlQCIs
IF9fUFJFVFRZX0ZVTkNUSU9OX18sIGRlbGVnYXRlSW5mb3JtYXRpb24sIERlbGVnYXRlV2FpdElu
dGVydmFsLnNlY29uZHMoKSwgbW9kZSk7Ci0gICAgICAgICAgICAgICAgaWYgKG1vZGUpCi0gICAg
ICAgICAgICAgICAgICAgIENGUmVsZWFzZShtb2RlKTsKKyAgICAgICAgICAgICAgICBhdXRvIG1v
ZGUgPSBhZG9wdENGKENGUnVuTG9vcENvcHlDdXJyZW50TW9kZShDRlJ1bkxvb3BHZXRNYWluKCkp
KTsKKyAgICAgICAgICAgICAgICBOU0xvZyhAIiVzOiBkZWxlZ2F0ZSAoJUApIGZhaWxlZCB0byBy
ZXR1cm4gYWZ0ZXIgd2FpdGluZyAlZiBzZWNvbmRzLiBtYWluIHJ1biBsb29wIG1vZGU6ICVAIiwg
X19QUkVUVFlfRlVOQ1RJT05fXywgZGVsZWdhdGVJbmZvcm1hdGlvbiwgRGVsZWdhdGVXYWl0SW50
ZXJ2YWwuc2Vjb25kcygpLCBtb2RlLmdldCgpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQog
ICAgICAgICBkZWxlZ2F0ZUxvY2sudW5sb2NrKCk7CkBAIC02MzQsMTYgKzYzMiwxNCBAQCBzdGF0
aWMgdm9pZCogUnVuV2ViVGhyZWFkKHZvaWQqKQogICAgIHdlYlRocmVhZFJ1bkxvb3AgPSBDRlJ1
bkxvb3BHZXRDdXJyZW50KCk7CiAgICAgd2ViVGhyZWFkTlNSdW5Mb29wKCkgPSBbTlNSdW5Mb29w
IGN1cnJlbnRSdW5Mb29wXTsKIAotICAgIENGUnVuTG9vcE9ic2VydmVyUmVmIHdlYlJ1bkxvb3BM
b2NrT2JzZXJ2ZXJSZWYgPSBDRlJ1bkxvb3BPYnNlcnZlckNyZWF0ZShudWxscHRyLCBrQ0ZSdW5M
b29wQmVmb3JlVGltZXJzIHwga0NGUnVuTG9vcEJlZm9yZVNvdXJjZXMgfCBrQ0ZSdW5Mb29wQWZ0
ZXJXYWl0aW5nLCBZRVMsIDAsIFdlYlJ1bkxvb3BMb2NrLCBudWxscHRyKTsKLSAgICBDRlJ1bkxv
b3BBZGRPYnNlcnZlcih3ZWJUaHJlYWRSdW5Mb29wLCB3ZWJSdW5Mb29wTG9ja09ic2VydmVyUmVm
LCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMpOwotICAgIENGUmVsZWFzZSh3ZWJSdW5Mb29wTG9ja09i
c2VydmVyUmVmKTsKKyAgICBhdXRvIHdlYlJ1bkxvb3BMb2NrT2JzZXJ2ZXJSZWYgPSBhZG9wdENG
KENGUnVuTG9vcE9ic2VydmVyQ3JlYXRlKG51bGxwdHIsIGtDRlJ1bkxvb3BCZWZvcmVUaW1lcnMg
fCBrQ0ZSdW5Mb29wQmVmb3JlU291cmNlcyB8IGtDRlJ1bkxvb3BBZnRlcldhaXRpbmcsIFlFUywg
MCwgV2ViUnVuTG9vcExvY2ssIG51bGxwdHIpKTsKKyAgICBDRlJ1bkxvb3BBZGRPYnNlcnZlcih3
ZWJUaHJlYWRSdW5Mb29wLCB3ZWJSdW5Mb29wTG9ja09ic2VydmVyUmVmLmdldCgpLCBrQ0ZSdW5M
b29wQ29tbW9uTW9kZXMpOwogICAgIAogICAgIFdlYlRocmVhZEluaXRSdW5RdWV1ZSgpOwogCiAg
ICAgLy8gV2UgbXVzdCBoYXZlIHRoZSBsb2NrIHdoZW4gQ0EgcGFpbnRzIGluIHRoZSB3ZWIgdGhy
ZWFkLiBDQSBjb21taXRzIGF0IDIwMDAwMDAgc28gd2UgdXNlIGxhcmdlciBvcmRlciBudW1iZXIg
dGhhbiB0aGF0IHRvIGZyZWUgdGhlIGxvY2suCi0gICAgQ0ZSdW5Mb29wT2JzZXJ2ZXJSZWYgd2Vi
UnVuTG9vcFVubG9ja09ic2VydmVyUmVmID0gQ0ZSdW5Mb29wT2JzZXJ2ZXJDcmVhdGUobnVsbHB0
ciwga0NGUnVuTG9vcEJlZm9yZVdhaXRpbmcgfCBrQ0ZSdW5Mb29wRXhpdCwgWUVTLCAyNTAwMDAw
LCBXZWJSdW5Mb29wVW5sb2NrLCBudWxscHRyKTsgICAgCi0gICAgQ0ZSdW5Mb29wQWRkT2JzZXJ2
ZXIod2ViVGhyZWFkUnVuTG9vcCwgd2ViUnVuTG9vcFVubG9ja09ic2VydmVyUmVmLCBrQ0ZSdW5M
b29wQ29tbW9uTW9kZXMpOwotICAgIENGUmVsZWFzZSh3ZWJSdW5Mb29wVW5sb2NrT2JzZXJ2ZXJS
ZWYpOyAgICAKKyAgICBhdXRvIHdlYlJ1bkxvb3BVbmxvY2tPYnNlcnZlclJlZiA9IGFkb3B0Q0Yo
Q0ZSdW5Mb29wT2JzZXJ2ZXJDcmVhdGUobnVsbHB0ciwga0NGUnVuTG9vcEJlZm9yZVdhaXRpbmcg
fCBrQ0ZSdW5Mb29wRXhpdCwgWUVTLCAyNTAwMDAwLCBXZWJSdW5Mb29wVW5sb2NrLCBudWxscHRy
KSk7CisgICAgQ0ZSdW5Mb29wQWRkT2JzZXJ2ZXIod2ViVGhyZWFkUnVuTG9vcCwgd2ViUnVuTG9v
cFVubG9ja09ic2VydmVyUmVmLmdldCgpLCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMpOwogCiAgICAg
Q0ZSdW5Mb29wU291cmNlQ29udGV4dCBSZWxlYXNlU291cmNlQ29udGV4dCA9IHswLCBudWxscHRy
LCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBu
dWxscHRyLCBIYW5kbGVXZWJUaHJlYWRSZWxlYXNlU291cmNlfTsKICAgICBXZWJUaHJlYWRSZWxl
YXNlU291cmNlID0gQ0ZSdW5Mb29wU291cmNlQ3JlYXRlKG51bGxwdHIsIC0xLCAmUmVsZWFzZVNv
dXJjZUNvbnRleHQpOwpAQCAtODIzLDkgKzgxOSw4IEBAIHZvaWQgV2ViVGhyZWFkVW5sb2NrR3Vh
cmRGb3JNYWlsKHZvaWQpCiB7CiAgICAgQVNTRVJUKCFXZWJUaHJlYWRJc0N1cnJlbnQoKSk7CiAK
LSAgICBDRlJ1bkxvb3BPYnNlcnZlclJlZiBtYWluUnVuTG9vcFVubG9ja0d1YXJkT2JzZXJ2ZXIg
PSBDRlJ1bkxvb3BPYnNlcnZlckNyZWF0ZShudWxscHRyLCBrQ0ZSdW5Mb29wRW50cnksIFlFUywg
MCwgTWFpblJ1bkxvb3BVbmxvY2tHdWFyZCwgbnVsbHB0cik7Ci0gICAgQ0ZSdW5Mb29wQWRkT2Jz
ZXJ2ZXIoQ0ZSdW5Mb29wR2V0TWFpbigpLCBtYWluUnVuTG9vcFVubG9ja0d1YXJkT2JzZXJ2ZXIs
IGtDRlJ1bkxvb3BDb21tb25Nb2Rlcyk7Ci0gICAgQ0ZSZWxlYXNlKG1haW5SdW5Mb29wVW5sb2Nr
R3VhcmRPYnNlcnZlcik7CisgICAgYXV0byBtYWluUnVuTG9vcFVubG9ja0d1YXJkT2JzZXJ2ZXIg
PSBhZG9wdENGKENGUnVuTG9vcE9ic2VydmVyQ3JlYXRlKG51bGxwdHIsIGtDRlJ1bkxvb3BFbnRy
eSwgWUVTLCAwLCBNYWluUnVuTG9vcFVubG9ja0d1YXJkLCBudWxscHRyKSk7CisgICAgQ0ZSdW5M
b29wQWRkT2JzZXJ2ZXIoQ0ZSdW5Mb29wR2V0TWFpbigpLCBtYWluUnVuTG9vcFVubG9ja0d1YXJk
T2JzZXJ2ZXIuZ2V0KCksIGtDRlJ1bkxvb3BDb21tb25Nb2Rlcyk7CiB9CiAKIHZvaWQgX1dlYlRo
cmVhZFVubG9jaygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxh
dGZvcm1TcGVlY2hTeW50aGVzaXplck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTWFjLm1tCmluZGV4IDI5NThmMWJjZTM5ZWNlYzk4
NmRiODg1MjlmMTU4ZDcyMmZhZDY2Y2EuLmEyODVjMjJiMjIxMWNmYTY5MWE4ZTI4YjJkOTEwOTY5
ZDk5MDZlOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9y
bVNwZWVjaFN5bnRoZXNpemVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTWFjLm1tCkBAIC0yMTQsMTIgKzIxNCwxMiBAQCBQ
bGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyOjp+UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcigpCiAg
ICAgW21fcGxhdGZvcm1TcGVlY2hXcmFwcGVyLmdldCgpIGludmFsaWRhdGVdOwogfQogCi1zdGF0
aWMgTlNBcnJheSAqc3BlZWNoU3ludGhlc2lzR2V0Vm9pY2VJZGVudGlmaWVycygpCitzdGF0aWMg
UmV0YWluUHRyPENGQXJyYXlSZWY+IHNwZWVjaFN5bnRoZXNpc0dldFZvaWNlSWRlbnRpZmllcnMo
KQogewogICAgIC8vIEdldCBhbGwgdGhlIHZvaWNlcyBvZmZlcmVkIGJ5IFRUUy4KICAgICAvLyBC
eSBkZWZhdWx0IHNwZWVjaCBvbmx5IHJldHVybnMgInByZW1pdW0iIHZvaWNlcywgd2hpY2ggZG9l
cyBub3QgaW5jbHVkZSBhbGwgdGhlCiAgICAgLy8gaW50ZXJuYXRpb25hbCB2b2ljZXMuIFRoaXMg
YWxsb3dzIHVzIHRvIG9mZmVyIHNwZWVjaCBzeW50aGVzaXMgZm9yIGFsbCBzdXBwb3J0ZWQgbGFu
Z3VhZ2VzLgotICAgIHJldHVybiBDRkJyaWRnaW5nUmVsZWFzZShDb3B5U3BlZWNoU3ludGhlc2lz
Vm9pY2VzRm9yTW9kZSgoX19icmlkZ2UgQ0ZBcnJheVJlZilAWyBAIlZvaWNlR3JvdXBEZWZhdWx0
IiwgQCJWb2ljZUdyb3VwQ29tcGFjdCIgXSkpOworICAgIHJldHVybiBhZG9wdENGKENvcHlTcGVl
Y2hTeW50aGVzaXNWb2ljZXNGb3JNb2RlKChfX2JyaWRnZSBDRkFycmF5UmVmKUBbIEAiVm9pY2VH
cm91cERlZmF1bHQiLCBAIlZvaWNlR3JvdXBDb21wYWN0IiBdKSk7CiB9CiAKIHN0YXRpYyBOU1N0
cmluZyAqc3BlZWNoU3ludGhlc2lzR2V0RGVmYXVsdFZvaWNlSWRlbnRpZmllckZvckxvY2FsZShO
U0xvY2FsZSAqdXNlckxvY2FsZSkKQEAgLTIyNywxNSArMjI3LDE1IEBAIHN0YXRpYyBOU1N0cmlu
ZyAqc3BlZWNoU3ludGhlc2lzR2V0RGVmYXVsdFZvaWNlSWRlbnRpZmllckZvckxvY2FsZShOU0xv
Y2FsZSAqdXNlCiAgICAgaWYgKCF1c2VyTG9jYWxlKQogICAgICAgICByZXR1cm4gbmlsOwogCi0g
ICAgcmV0dXJuIChfX2JyaWRnZSBOU1N0cmluZyAqKUdldElkZW50aWZpZXJTdHJpbmdGb3JQcmVm
ZXJyZWRWb2ljZUluTGlzdFdpdGhMb2NhbGUoKF9fYnJpZGdlIENGQXJyYXlSZWYpc3BlZWNoU3lu
dGhlc2lzR2V0Vm9pY2VJZGVudGlmaWVycygpLCAoX19icmlkZ2UgQ0ZMb2NhbGVSZWYpdXNlckxv
Y2FsZSk7CisgICAgcmV0dXJuIChfX2JyaWRnZSBOU1N0cmluZyAqKUdldElkZW50aWZpZXJTdHJp
bmdGb3JQcmVmZXJyZWRWb2ljZUluTGlzdFdpdGhMb2NhbGUoc3BlZWNoU3ludGhlc2lzR2V0Vm9p
Y2VJZGVudGlmaWVycygpLmdldCgpLCAoX19icmlkZ2UgQ0ZMb2NhbGVSZWYpdXNlckxvY2FsZSk7
CiB9CiAKIHZvaWQgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcjo6aW5pdGlhbGl6ZVZvaWNlTGlz
dCgpCiB7Ci0gICAgTlNBcnJheSAqYXZhaWxhYmxlVm9pY2VzID0gc3BlZWNoU3ludGhlc2lzR2V0
Vm9pY2VJZGVudGlmaWVycygpOwotICAgIE5TVUludGVnZXIgY291bnQgPSBbYXZhaWxhYmxlVm9p
Y2VzIGNvdW50XTsKKyAgICBhdXRvIGF2YWlsYWJsZVZvaWNlcyA9IHNwZWVjaFN5bnRoZXNpc0dl
dFZvaWNlSWRlbnRpZmllcnMoKTsKKyAgICBOU1VJbnRlZ2VyIGNvdW50ID0gWyhfX2JyaWRnZSBO
U0FycmF5ICopYXZhaWxhYmxlVm9pY2VzLmdldCgpIGNvdW50XTsKICAgICBmb3IgKE5TVUludGVn
ZXIgayA9IDA7IGsgPCBjb3VudDsgaysrKSB7Ci0gICAgICAgIE5TU3RyaW5nICp2b2ljZU5hbWUg
PSBbYXZhaWxhYmxlVm9pY2VzIG9iamVjdEF0SW5kZXg6a107CisgICAgICAgIE5TU3RyaW5nICp2
b2ljZU5hbWUgPSBbKF9fYnJpZGdlIE5TQXJyYXkgKilhdmFpbGFibGVWb2ljZXMuZ2V0KCkgb2Jq
ZWN0QXRJbmRleDprXTsKICAgICAgICAgTlNEaWN0aW9uYXJ5ICphdHRyaWJ1dGVzID0gW05TU3Bl
ZWNoU3ludGhlc2l6ZXIgYXR0cmlidXRlc0ZvclZvaWNlOnZvaWNlTmFtZV07CiAKICAgICAgICAg
TlNTdHJpbmcgKnZvaWNlVVJJID0gW2F0dHJpYnV0ZXMgb2JqZWN0Rm9yS2V5Ok5TVm9pY2VJZGVu
dGlmaWVyXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbHVnaW5C
bG9ja2xpc3QubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGx1Z2luQmxvY2tsaXN0
Lm1tCmluZGV4IGE4MGI0YWZlYzc2MWQ4Nzk4N2ZmOTEyMDczNDYwYjkzOWU0MGY3NGYuLjEzNmY2
ZWRmNjliNGRjNmRkNzkyYmExM2M0YzhmY2RlYzhkOGU0MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9QbHVnaW5CbG9ja2xpc3QubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL1BsdWdpbkJsb2NrbGlzdC5tbQpAQCAtNjksOCArNjksOCBAQCBib29s
IFBsdWdpbkJsb2NrbGlzdDo6aXNQbHVnaW5VcGRhdGVBdmFpbGFibGUoTlNTdHJpbmcgKmJ1bmRs
ZUlkZW50aWZpZXIpCiAKIHN0ZDo6dW5pcXVlX3B0cjxQbHVnaW5CbG9ja2xpc3Q+IFBsdWdpbkJs
b2NrbGlzdDo6Y3JlYXRlKE5TRGljdGlvbmFyeSAqcHJvcGVydHlMaXN0KQogewotICAgIENGRGlj
dGlvbmFyeVJlZiBzeXN0ZW1WZXJzaW9uRGljdGlvbmFyeSA9IF9DRkNvcHlTeXN0ZW1WZXJzaW9u
RGljdGlvbmFyeSgpOwotICAgIENGU3RyaW5nUmVmIG9zVmVyc2lvbiA9IHN0YXRpY19jYXN0PENG
U3RyaW5nUmVmPihDRkRpY3Rpb25hcnlHZXRWYWx1ZShzeXN0ZW1WZXJzaW9uRGljdGlvbmFyeSwg
X2tDRlN5c3RlbVZlcnNpb25Qcm9kdWN0VmVyc2lvbktleSkpOworICAgIGF1dG8gc3lzdGVtVmVy
c2lvbkRpY3Rpb25hcnkgPSBhZG9wdENGKF9DRkNvcHlTeXN0ZW1WZXJzaW9uRGljdGlvbmFyeSgp
KTsKKyAgICBDRlN0cmluZ1JlZiBvc1ZlcnNpb24gPSBzdGF0aWNfY2FzdDxDRlN0cmluZ1JlZj4o
Q0ZEaWN0aW9uYXJ5R2V0VmFsdWUoc3lzdGVtVmVyc2lvbkRpY3Rpb25hcnkuZ2V0KCksIF9rQ0ZT
eXN0ZW1WZXJzaW9uUHJvZHVjdFZlcnNpb25LZXkpKTsKIAogICAgIE5TRGljdGlvbmFyeSAqZGlj
dGlvbmFyeSA9IFtwcm9wZXJ0eUxpc3Qgb2JqZWN0Rm9yS2V5OkAiUGx1Z0luQmxvY2tsaXN0Il07
CiAKQEAgLTExMiw4ICsxMTIsNiBAQCBzdGQ6OnVuaXF1ZV9wdHI8UGx1Z2luQmxvY2tsaXN0PiBQ
bHVnaW5CbG9ja2xpc3Q6OmNyZWF0ZShOU0RpY3Rpb25hcnkgKnByb3BlcnR5TAogICAgICAgICB9
CiAgICAgfQogCi0gICAgQ0ZSZWxlYXNlKHN5c3RlbVZlcnNpb25EaWN0aW9uYXJ5KTsKLQogICAg
IHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8UGx1Z2luQmxvY2tsaXN0PihuZXcgUGx1Z2luQmxvY2ts
aXN0KGJ1bmRsZUlEVG9NaW5pbXVtU2VjdXJlVmVyc2lvbiwgYnVuZGxlSURUb01pbmltdW1Db21w
YXRpYmxlVmVyc2lvbiwgYnVuZGxlSURUb0Jsb2NrZWRWZXJzaW9ucywgYnVuZGxlSURzV2l0aEF2
YWlsYWJsZVVwZGF0ZXMpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL1dlYkdMQmxvY2tsaXN0Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dl
YkdMQmxvY2tsaXN0Lm1tCmluZGV4IDZjMWQyNmU0NzlhMDI4MTdiZGQ1YjE4NmZhYTJhYTc2YTVl
Y2JkYmMuLmQwNGVlMjE3NGQxZGJjNzdkN2NhZTg1YTNmYWEyNWIwMTgxNTc4NDUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJHTEJsb2NrbGlzdC5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViR0xCbG9ja2xpc3QubW0KQEAgLTE2OCwxMCAr
MTY4LDkgQEAgc3RhdGljIGJvb2wgbWF0Y2hlc0J1aWxkSW5mbyhPU0J1aWxkSW5mbyBtYWNoaW5l
SW5mbywgT1NCdWlsZEluZm8gYmxvY2tJbmZvLCBXZWIKIAogc3RkOjp1bmlxdWVfcHRyPFdlYkdM
QmxvY2tsaXN0PiBXZWJHTEJsb2NrbGlzdDo6Y3JlYXRlKE5TRGljdGlvbmFyeSAqcHJvcGVydHlM
aXN0KQogewotICAgIENGRGljdGlvbmFyeVJlZiBzeXN0ZW1WZXJzaW9uRGljdGlvbmFyeSA9IF9D
RkNvcHlTeXN0ZW1WZXJzaW9uRGljdGlvbmFyeSgpOwotICAgIENGU3RyaW5nUmVmIG9zQnVpbGQg
PSBzdGF0aWNfY2FzdDxDRlN0cmluZ1JlZj4oQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoc3lzdGVtVmVy
c2lvbkRpY3Rpb25hcnksIF9rQ0ZTeXN0ZW1WZXJzaW9uQnVpbGRWZXJzaW9uS2V5KSk7CisgICAg
YXV0byBzeXN0ZW1WZXJzaW9uRGljdGlvbmFyeSA9IGFkb3B0Q0YoX0NGQ29weVN5c3RlbVZlcnNp
b25EaWN0aW9uYXJ5KCkpOworICAgIENGU3RyaW5nUmVmIG9zQnVpbGQgPSBzdGF0aWNfY2FzdDxD
RlN0cmluZ1JlZj4oQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoc3lzdGVtVmVyc2lvbkRpY3Rpb25hcnku
Z2V0KCksIF9rQ0ZTeXN0ZW1WZXJzaW9uQnVpbGRWZXJzaW9uS2V5KSk7CiAgICAgT1NCdWlsZElu
Zm8gYnVpbGRJbmZvID0gYnVpbGRJbmZvRnJvbU9TQnVpbGRTdHJpbmcoKF9fYnJpZGdlIE5TU3Ry
aW5nICopb3NCdWlsZCk7Ci0gICAgQ0ZSZWxlYXNlKHN5c3RlbVZlcnNpb25EaWN0aW9uYXJ5KTsK
IAogICAgIGlmICghYnVpbGRJbmZvLm1ham9yKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvQXVk
aW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFyZWNvcmRlci9jb2NvYS9BdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IubW0KaW5kZXggN2Uy
ZjZhYTUyZGNkZTMyMTQ3MDE1OTE2NmU1NDhhMGNjOWFmNGY1My4uYzc5YTQ3OTYyNDAyYmIxMzI5
MzNjODdiZmU5OGQyMzdmNTZlZTA2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFyZWNvcmRlci9jb2NvYS9BdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9BdWRpb1NhbXBs
ZUJ1ZmZlckNvbXByZXNzb3IubW0KQEAgLTIyNyw5ICsyMjcsOCBAQCB2b2lkIEF1ZGlvU2FtcGxl
QnVmZmVyQ29tcHJlc3Nvcjo6YXR0YWNoUHJpbWluZ1RyaW1zSWZOZWVkZWQoQ01TYW1wbGVCdWZm
ZXJSZWYgYgogICAgIGlmIChDTVRJTUVfQ09NUEFSRV9JTkxJTkUoa0NNVGltZVplcm8sIDwsIG1f
cmVtYWluaW5nUHJpbWVEdXJhdGlvbikpIHsKICAgICAgICAgQ01UaW1lIHNhbXBsZUR1cmF0aW9u
ID0gQ01TYW1wbGVCdWZmZXJHZXREdXJhdGlvbihidWZmZXIpOwogICAgICAgICBDTVRpbWUgdHJp
bUR1cmF0aW9uID0gQ01UaW1lTWluaW11bShzYW1wbGVEdXJhdGlvbiwgbV9yZW1haW5pbmdQcmlt
ZUR1cmF0aW9uKTsKLSAgICAgICAgQ0ZEaWN0aW9uYXJ5UmVmIHRyaW1BdFN0YXJ0RGljdCA9IENN
VGltZUNvcHlBc0RpY3Rpb25hcnkodHJpbUR1cmF0aW9uLCBrQ0ZBbGxvY2F0b3JEZWZhdWx0KTsK
LSAgICAgICAgQ01TZXRBdHRhY2htZW50KGJ1ZmZlciwga0NNU2FtcGxlQnVmZmVyQXR0YWNobWVu
dEtleV9UcmltRHVyYXRpb25BdFN0YXJ0LCB0cmltQXRTdGFydERpY3QsIGtDTUF0dGFjaG1lbnRN
b2RlX1Nob3VsZFByb3BhZ2F0ZSk7Ci0gICAgICAgIENGUmVsZWFzZSh0cmltQXRTdGFydERpY3Qp
OworICAgICAgICBhdXRvIHRyaW1BdFN0YXJ0RGljdCA9IGFkb3B0Q0YoQ01UaW1lQ29weUFzRGlj
dGlvbmFyeSh0cmltRHVyYXRpb24sIGtDRkFsbG9jYXRvckRlZmF1bHQpKTsKKyAgICAgICAgQ01T
ZXRBdHRhY2htZW50KGJ1ZmZlciwga0NNU2FtcGxlQnVmZmVyQXR0YWNobWVudEtleV9UcmltRHVy
YXRpb25BdFN0YXJ0LCB0cmltQXRTdGFydERpY3QuZ2V0KCksIGtDTUF0dGFjaG1lbnRNb2RlX1No
b3VsZFByb3BhZ2F0ZSk7CiAgICAgICAgIG1fcmVtYWluaW5nUHJpbWVEdXJhdGlvbiA9IENNVGlt
ZVN1YnRyYWN0KG1fcmVtYWluaW5nUHJpbWVEdXJhdGlvbiwgdHJpbUR1cmF0aW9uKTsKICAgICB9
CiB9CkBAIC0zNDcsNyArMzQ2LDcgQEAgT1NTdGF0dXMgQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVz
c29yOjpwcm92aWRlU291cmNlRGF0YU51bU91dHB1dFBhY2tldHMoVUludDMyKgogICAgICAgICAg
ICAgICAgICAgICBicmVhazsKIAogICAgICAgICAgICAgICAgIGF1dG8gc2FtcGxlQnVmZmVyID0g
YWRvcHRDRigoQ01TYW1wbGVCdWZmZXJSZWYpKGNvbnN0X2Nhc3Q8dm9pZCo+KENNQnVmZmVyUXVl
dWVEZXF1ZXVlQW5kUmV0YWluKG1faW5wdXRCdWZmZXJRdWV1ZS5nZXQoKSkpKSk7Ci0gICAgICAg
ICAgICAgICAgbV9zYW1wbGVCbG9ja0J1ZmZlciA9IGFkb3B0Q0YoKENNQmxvY2tCdWZmZXJSZWYp
KGNvbnN0X2Nhc3Q8dm9pZCo+KENGUmV0YWluKENNU2FtcGxlQnVmZmVyR2V0RGF0YUJ1ZmZlcihz
YW1wbGVCdWZmZXIuZ2V0KCkpKSkpKTsKKyAgICAgICAgICAgICAgICBtX3NhbXBsZUJsb2NrQnVm
ZmVyID0gQ01TYW1wbGVCdWZmZXJHZXREYXRhQnVmZmVyKHNhbXBsZUJ1ZmZlci5nZXQoKSk7CiAg
ICAgICAgICAgICAgICAgaWYgKCFtX3NhbXBsZUJsb2NrQnVmZmVyKSB7CiAgICAgICAgICAgICAg
ICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAiQXVkaW9TYW1wbGVCdWZmZXJD
b21wcmVzc29yIENNU2FtcGxlQnVmZmVyR2V0RGF0YUJ1ZmZlciBmYWlsZWQiKTsKICAgICAgICAg
ICAgICAgICAgICAgbV9zYW1wbGVCbG9ja0J1ZmZlclNpemUgPSAwOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9WaWRlb1NhbXBsZUJ1ZmZl
ckNvbXByZXNzb3IubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2Nv
Y29hL1ZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5tbQppbmRleCAyODcxNTEzODA3Y2FkNjhj
YmRmYzNmYmU0ZWViMTdmNDA2MzM5MTkzLi5lMDNlNzcwZjBjYWE5YmRjNmIxNmQ1YWM3NGJiMzc4
NmRmOGY0YWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29y
ZGVyL2NvY29hL1ZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL1ZpZGVvU2FtcGxlQnVmZmVyQ29tcHJl
c3Nvci5tbQpAQCAtMTA5LDkgKzEwOSw4IEBAIHZvaWQgVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVz
c29yOjp2aWRlb0NvbXByZXNzaW9uQ2FsbGJhY2sodm9pZCAqcmVmQ29uLCB2b2lkKiwKIHN0YXRp
YyBpbmxpbmUgT1NTdGF0dXMgc2V0Q29tcHJlc3Npb25TZXNzaW9uUHJvcGVydHkoVlRDb21wcmVz
c2lvblNlc3Npb25SZWYgdnRTZXNzaW9uLCBDRlN0cmluZ1JlZiBrZXksIHVpbnQzMl90IHZhbHVl
KQogewogICAgIGludDY0X3QgdmFsdWU2NCA9IHZhbHVlOwotICAgIENGTnVtYmVyUmVmIGNmVmFs
dWUgPSBDRk51bWJlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrQ0ZOdW1iZXJTSW50NjRU
eXBlLCAmdmFsdWU2NCk7Ci0gICAgT1NTdGF0dXMgc3RhdHVzID0gVlRTZXNzaW9uU2V0UHJvcGVy
dHkodnRTZXNzaW9uLCBrZXksIGNmVmFsdWUpOwotICAgIENGUmVsZWFzZShjZlZhbHVlKTsKKyAg
ICBhdXRvIGNmVmFsdWUgPSBhZG9wdENGKENGTnVtYmVyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1
bHQsIGtDRk51bWJlclNJbnQ2NFR5cGUsICZ2YWx1ZTY0KSk7CisgICAgT1NTdGF0dXMgc3RhdHVz
ID0gVlRTZXNzaW9uU2V0UHJvcGVydHkodnRTZXNzaW9uLCBrZXksIGNmVmFsdWUuZ2V0KCkpOwog
ICAgIHJldHVybiBzdGF0dXM7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY2YvRm9ybURhdGFTdHJlYW1DRk5ldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NmL0Zvcm1EYXRhU3RyZWFtQ0ZOZXQuY3BwCmluZGV4IDNmNjhlYWQz
NDEyNjJmNTZiZmUyMjEyMDMyYmU2ODM3NmU4YzgwN2YuLmQ3ZGQ2M2ZlYWJmYjAzYzAxOTJmMjQ5
Zjg2OGEzNDEwMDNjYTQ1ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY2YvRm9ybURhdGFTdHJlYW1DRk5ldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jZi9Gb3JtRGF0YVN0cmVhbUNGTmV0LmNwcApAQCAtMTAzLDcgKzEwMyw3
IEBAIHN0cnVjdCBGb3JtU3RyZWFtRmllbGRzIHsKICAgICBGb3JtRGF0YUZvclVwbG9hZCBkYXRh
OwogICAgIFNjaGVkdWxlUGFpckhhc2hTZXQgc2NoZWR1bGVkUnVuTG9vcFBhaXJzOwogICAgIFZl
Y3RvcjxGb3JtRGF0YUVsZW1lbnQ+IHJlbWFpbmluZ0VsZW1lbnRzOyAvLyBpbiByZXZlcnNlIG9y
ZGVyCi0gICAgQ0ZSZWFkU3RyZWFtUmVmIGN1cnJlbnRTdHJlYW0geyBudWxscHRyIH07CisgICAg
UmV0YWluUHRyPENGUmVhZFN0cmVhbVJlZj4gY3VycmVudFN0cmVhbTsKICAgICBsb25nIGxvbmcg
Y3VycmVudFN0cmVhbVJhbmdlTGVuZ3RoIHsgQmxvYkRhdGFJdGVtOjp0b0VuZE9mRmlsZSB9Owog
ICAgIE1hbGxvY1B0cjxjaGFyLCBXVEY6OlZlY3Rvck1hbGxvYz4gY3VycmVudERhdGE7CiAgICAg
Q0ZSZWFkU3RyZWFtUmVmIGZvcm1TdHJlYW0geyBudWxscHRyIH07CkBAIC0xMTcsMTAgKzExNyw5
IEBAIHN0YXRpYyB2b2lkIGNsb3NlQ3VycmVudFN0cmVhbShGb3JtU3RyZWFtRmllbGRzKiBmb3Jt
KQogICAgIEFTU0VSVChmb3JtLT5zdHJlYW1Jc0JlaW5nT3BlbmVkT3JDbG9zZWRMb2NrLmlzSGVs
ZCgpKTsKIAogICAgIGlmIChmb3JtLT5jdXJyZW50U3RyZWFtKSB7Ci0gICAgICAgIENGUmVhZFN0
cmVhbUNsb3NlKGZvcm0tPmN1cnJlbnRTdHJlYW0pOwotICAgICAgICBDRlJlYWRTdHJlYW1TZXRD
bGllbnQoZm9ybS0+Y3VycmVudFN0cmVhbSwga0NGU3RyZWFtRXZlbnROb25lLCAwLCAwKTsKLSAg
ICAgICAgQ0ZSZWxlYXNlKGZvcm0tPmN1cnJlbnRTdHJlYW0pOwotICAgICAgICBmb3JtLT5jdXJy
ZW50U3RyZWFtID0gMDsKKyAgICAgICAgQ0ZSZWFkU3RyZWFtQ2xvc2UoZm9ybS0+Y3VycmVudFN0
cmVhbS5nZXQoKSk7CisgICAgICAgIENGUmVhZFN0cmVhbVNldENsaWVudChmb3JtLT5jdXJyZW50
U3RyZWFtLmdldCgpLCBrQ0ZTdHJlYW1FdmVudE5vbmUsIDAsIDApOworICAgICAgICBmb3JtLT5j
dXJyZW50U3RyZWFtID0gbnVsbHB0cjsKICAgICAgICAgZm9ybS0+Y3VycmVudFN0cmVhbVJhbmdl
TGVuZ3RoID0gQmxvYkRhdGFJdGVtOjp0b0VuZE9mRmlsZTsKICAgICB9CiAgICAgZm9ybS0+Y3Vy
cmVudERhdGEgPSBudWxscHRyOwpAQCAtMTQzLDcgKzE0Miw3IEBAIHN0YXRpYyBib29sIGFkdmFu
Y2VDdXJyZW50U3RyZWFtKEZvcm1TdHJlYW1GaWVsZHMqIGZvcm0pCiAgICAgICAgIFtmb3JtXSAo
VmVjdG9yPGNoYXI+JiBieXRlcykgewogICAgICAgICAgICAgc2l6ZV90IHNpemUgPSBieXRlcy5z
aXplKCk7CiAgICAgICAgICAgICBNYWxsb2NQdHI8Y2hhciwgV1RGOjpWZWN0b3JNYWxsb2M+IGRh
dGEgPSBieXRlcy5yZWxlYXNlQnVmZmVyKCk7Ci0gICAgICAgICAgICBmb3JtLT5jdXJyZW50U3Ry
ZWFtID0gQ0ZSZWFkU3RyZWFtQ3JlYXRlV2l0aEJ5dGVzTm9Db3B5KDAsIHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgVUludDgqPihkYXRhLmdldCgpKSwgc2l6ZSwga0NGQWxsb2NhdG9yTnVsbCk7Cisg
ICAgICAgICAgICBmb3JtLT5jdXJyZW50U3RyZWFtID0gYWRvcHRDRihDRlJlYWRTdHJlYW1DcmVh
dGVXaXRoQnl0ZXNOb0NvcHkoMCwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBVSW50OCo+KGRhdGEu
Z2V0KCkpLCBzaXplLCBrQ0ZBbGxvY2F0b3JOdWxsKSk7CiAgICAgICAgICAgICBmb3JtLT5jdXJy
ZW50RGF0YSA9IFdURk1vdmUoZGF0YSk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAg
ICAgfSwgW2Zvcm1dIChjb25zdCBGb3JtRGF0YUVsZW1lbnQ6OkVuY29kZWRGaWxlRGF0YSYgZmls
ZURhdGEpIHsKQEAgLTE1MiwxNCArMTUxLDE0IEBAIHN0YXRpYyBib29sIGFkdmFuY2VDdXJyZW50
U3RyZWFtKEZvcm1TdHJlYW1GaWVsZHMqIGZvcm0pCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCiAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIHBhdGggPSBmaWxlRGF0YS5maWxlbmFt
ZTsKLSAgICAgICAgICAgIGZvcm0tPmN1cnJlbnRTdHJlYW0gPSBDRlJlYWRTdHJlYW1DcmVhdGVX
aXRoRmlsZSgwLCBGaWxlU3lzdGVtOjpwYXRoQXNVUkwocGF0aCkuZ2V0KCkpOworICAgICAgICAg
ICAgZm9ybS0+Y3VycmVudFN0cmVhbSA9IGFkb3B0Q0YoQ0ZSZWFkU3RyZWFtQ3JlYXRlV2l0aEZp
bGUoMCwgRmlsZVN5c3RlbTo6cGF0aEFzVVJMKHBhdGgpLmdldCgpKSk7CiAgICAgICAgICAgICBp
ZiAoIWZvcm0tPmN1cnJlbnRTdHJlYW0pIHsKICAgICAgICAgICAgICAgICAvLyBUaGUgZmlsZSBt
dXN0IGhhdmUgYmVlbiByZW1vdmVkIG9yIGJlY29tZSB1bnJlYWRhYmxlLgogICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChmaWxlRGF0
YS5maWxlU3RhcnQgPiAwKSB7CiAgICAgICAgICAgICAgICAgUmV0YWluUHRyPENGTnVtYmVyUmVm
PiBwb3NpdGlvbiA9IGFkb3B0Q0YoQ0ZOdW1iZXJDcmVhdGUoMCwga0NGTnVtYmVyTG9uZ0xvbmdU
eXBlLCAmZmlsZURhdGEuZmlsZVN0YXJ0KSk7Ci0gICAgICAgICAgICAgICAgQ0ZSZWFkU3RyZWFt
U2V0UHJvcGVydHkoZm9ybS0+Y3VycmVudFN0cmVhbSwga0NGU3RyZWFtUHJvcGVydHlGaWxlQ3Vy
cmVudE9mZnNldCwgcG9zaXRpb24uZ2V0KCkpOworICAgICAgICAgICAgICAgIENGUmVhZFN0cmVh
bVNldFByb3BlcnR5KGZvcm0tPmN1cnJlbnRTdHJlYW0uZ2V0KCksIGtDRlN0cmVhbVByb3BlcnR5
RmlsZUN1cnJlbnRPZmZzZXQsIHBvc2l0aW9uLmdldCgpKTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIGZvcm0tPmN1cnJlbnRTdHJlYW1SYW5nZUxlbmd0aCA9IGZpbGVEYXRhLmZpbGVMZW5n
dGg7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTE3NiwxMyArMTc1LDEzIEBAIHN0YXRp
YyBib29sIGFkdmFuY2VDdXJyZW50U3RyZWFtKEZvcm1TdHJlYW1GaWVsZHMqIGZvcm0pCiAKICAg
ICAvLyBTZXQgdXAgdGhlIGNhbGxiYWNrLgogICAgIENGU3RyZWFtQ2xpZW50Q29udGV4dCBjb250
ZXh0ID0geyAwLCBmb3JtLCAwLCAwLCAwIH07Ci0gICAgQ0ZSZWFkU3RyZWFtU2V0Q2xpZW50KGZv
cm0tPmN1cnJlbnRTdHJlYW0sIGtDRlN0cmVhbUV2ZW50SGFzQnl0ZXNBdmFpbGFibGUgfCBrQ0ZT
dHJlYW1FdmVudEVycm9yT2NjdXJyZWQgfCBrQ0ZTdHJlYW1FdmVudEVuZEVuY291bnRlcmVkLAor
ICAgIENGUmVhZFN0cmVhbVNldENsaWVudChmb3JtLT5jdXJyZW50U3RyZWFtLmdldCgpLCBrQ0ZT
dHJlYW1FdmVudEhhc0J5dGVzQXZhaWxhYmxlIHwga0NGU3RyZWFtRXZlbnRFcnJvck9jY3VycmVk
IHwga0NGU3RyZWFtRXZlbnRFbmRFbmNvdW50ZXJlZCwKICAgICAgICAgZm9ybUV2ZW50Q2FsbGJh
Y2ssICZjb250ZXh0KTsKIAogICAgIC8vIFNjaGVkdWxlIHdpdGggdGhlIGN1cnJlbnQgc2V0IG9m
IHJ1biBsb29wcy4KICAgICBTY2hlZHVsZVBhaXJIYXNoU2V0OjppdGVyYXRvciBlbmQgPSBmb3Jt
LT5zY2hlZHVsZWRSdW5Mb29wUGFpcnMuZW5kKCk7CiAgICAgZm9yIChTY2hlZHVsZVBhaXJIYXNo
U2V0OjppdGVyYXRvciBpdCA9IGZvcm0tPnNjaGVkdWxlZFJ1bkxvb3BQYWlycy5iZWdpbigpOyBp
dCAhPSBlbmQ7ICsraXQpCi0gICAgICAgIENGUmVhZFN0cmVhbVNjaGVkdWxlV2l0aFJ1bkxvb3Ao
Zm9ybS0+Y3VycmVudFN0cmVhbSwgKCppdCktPnJ1bkxvb3AoKSwgKCppdCktPm1vZGUoKSk7Cisg
ICAgICAgIENGUmVhZFN0cmVhbVNjaGVkdWxlV2l0aFJ1bkxvb3AoZm9ybS0+Y3VycmVudFN0cmVh
bS5nZXQoKSwgKCppdCktPnJ1bkxvb3AoKSwgKCppdCktPm1vZGUoKSk7CiAKICAgICByZXR1cm4g
dHJ1ZTsKIH0KQEAgLTE5Niw3ICsxOTUsNyBAQCBzdGF0aWMgYm9vbCBvcGVuTmV4dFN0cmVhbShG
b3JtU3RyZWFtRmllbGRzKiBmb3JtKQogICAgIC8vIFNraXAgb3ZlciBhbnkgc3RyZWFtcyB3ZSBj
YW4ndCBvcGVuLgogICAgIGlmICghYWR2YW5jZUN1cnJlbnRTdHJlYW0oZm9ybSkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICB3aGlsZSAoZm9ybS0+Y3VycmVudFN0cmVhbSAmJiAhQ0ZSZWFk
U3RyZWFtT3Blbihmb3JtLT5jdXJyZW50U3RyZWFtKSkgeworICAgIHdoaWxlIChmb3JtLT5jdXJy
ZW50U3RyZWFtICYmICFDRlJlYWRTdHJlYW1PcGVuKGZvcm0tPmN1cnJlbnRTdHJlYW0uZ2V0KCkp
KSB7CiAgICAgICAgIGlmICghYWR2YW5jZUN1cnJlbnRTdHJlYW0oZm9ybSkpCiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfQpAQCAtMjYyLDkgKzI2MSw5IEBAIHN0YXRpYyBDRkluZGV4
IGZvcm1SZWFkKENGUmVhZFN0cmVhbVJlZiwgVUludDgqIGJ1ZmZlciwgQ0ZJbmRleCBidWZmZXJM
ZW5ndGgsIENGCiAgICAgICAgIENGSW5kZXggYnl0ZXNUb1JlYWQgPSBidWZmZXJMZW5ndGg7CiAg
ICAgICAgIGlmIChmb3JtLT5jdXJyZW50U3RyZWFtUmFuZ2VMZW5ndGggIT0gQmxvYkRhdGFJdGVt
Ojp0b0VuZE9mRmlsZSAmJiBmb3JtLT5jdXJyZW50U3RyZWFtUmFuZ2VMZW5ndGggPCBieXRlc1Rv
UmVhZCkKICAgICAgICAgICAgIGJ5dGVzVG9SZWFkID0gc3RhdGljX2Nhc3Q8Q0ZJbmRleD4oZm9y
bS0+Y3VycmVudFN0cmVhbVJhbmdlTGVuZ3RoKTsKLSAgICAgICAgQ0ZJbmRleCBieXRlc1JlYWQg
PSBDRlJlYWRTdHJlYW1SZWFkKGZvcm0tPmN1cnJlbnRTdHJlYW0sIGJ1ZmZlciwgYnl0ZXNUb1Jl
YWQpOworICAgICAgICBDRkluZGV4IGJ5dGVzUmVhZCA9IENGUmVhZFN0cmVhbVJlYWQoZm9ybS0+
Y3VycmVudFN0cmVhbS5nZXQoKSwgYnVmZmVyLCBieXRlc1RvUmVhZCk7CiAgICAgICAgIGlmIChi
eXRlc1JlYWQgPCAwKSB7Ci0gICAgICAgICAgICAqZXJyb3IgPSBDRlJlYWRTdHJlYW1HZXRFcnJv
cihmb3JtLT5jdXJyZW50U3RyZWFtKTsKKyAgICAgICAgICAgICplcnJvciA9IENGUmVhZFN0cmVh
bUdldEVycm9yKGZvcm0tPmN1cnJlbnRTdHJlYW0uZ2V0KCkpOwogICAgICAgICAgICAgcmV0dXJu
IC0xOwogICAgICAgICB9CiAgICAgICAgIGlmIChieXRlc1JlYWQgPiAwKSB7CkBAIC0yODgsMTQg
KzI4NywxNCBAQCBzdGF0aWMgQm9vbGVhbiBmb3JtQ2FuUmVhZChDRlJlYWRTdHJlYW1SZWYgc3Ry
ZWFtLCB2b2lkKiBjb250ZXh0KQogewogICAgIEZvcm1TdHJlYW1GaWVsZHMqIGZvcm0gPSBzdGF0
aWNfY2FzdDxGb3JtU3RyZWFtRmllbGRzKj4oY29udGV4dCk7CiAKLSAgICB3aGlsZSAoZm9ybS0+
Y3VycmVudFN0cmVhbSAmJiBDRlJlYWRTdHJlYW1HZXRTdGF0dXMoZm9ybS0+Y3VycmVudFN0cmVh
bSkgPT0ga0NGU3RyZWFtU3RhdHVzQXRFbmQpCisgICAgd2hpbGUgKGZvcm0tPmN1cnJlbnRTdHJl
YW0gJiYgQ0ZSZWFkU3RyZWFtR2V0U3RhdHVzKGZvcm0tPmN1cnJlbnRTdHJlYW0uZ2V0KCkpID09
IGtDRlN0cmVhbVN0YXR1c0F0RW5kKQogICAgICAgICBvcGVuTmV4dFN0cmVhbShmb3JtKTsKIAog
ICAgIGlmICghZm9ybS0+Y3VycmVudFN0cmVhbSkgewogICAgICAgICBDRlJlYWRTdHJlYW1TaWdu
YWxFdmVudChzdHJlYW0sIGtDRlN0cmVhbUV2ZW50RW5kRW5jb3VudGVyZWQsIDApOwogICAgICAg
ICByZXR1cm4gRkFMU0U7CiAgICAgfQotICAgIHJldHVybiBDRlJlYWRTdHJlYW1IYXNCeXRlc0F2
YWlsYWJsZShmb3JtLT5jdXJyZW50U3RyZWFtKTsKKyAgICByZXR1cm4gQ0ZSZWFkU3RyZWFtSGFz
Qnl0ZXNBdmFpbGFibGUoZm9ybS0+Y3VycmVudFN0cmVhbS5nZXQoKSk7CiB9CiAKIHN0YXRpYyB2
b2lkIGZvcm1DbG9zZShDRlJlYWRTdHJlYW1SZWYsIHZvaWQqIGNvbnRleHQpCkBAIC0zMjYsNyAr
MzI1LDcgQEAgc3RhdGljIHZvaWQgZm9ybVNjaGVkdWxlKENGUmVhZFN0cmVhbVJlZiwgQ0ZSdW5M
b29wUmVmIHJ1bkxvb3AsIENGU3RyaW5nUmVmIHJ1bkwKICAgICBGb3JtU3RyZWFtRmllbGRzKiBm
b3JtID0gc3RhdGljX2Nhc3Q8Rm9ybVN0cmVhbUZpZWxkcyo+KGNvbnRleHQpOwogCiAgICAgaWYg
KGZvcm0tPmN1cnJlbnRTdHJlYW0pCi0gICAgICAgIENGUmVhZFN0cmVhbVNjaGVkdWxlV2l0aFJ1
bkxvb3AoZm9ybS0+Y3VycmVudFN0cmVhbSwgcnVuTG9vcCwgcnVuTG9vcE1vZGUpOworICAgICAg
ICBDRlJlYWRTdHJlYW1TY2hlZHVsZVdpdGhSdW5Mb29wKGZvcm0tPmN1cnJlbnRTdHJlYW0uZ2V0
KCksIHJ1bkxvb3AsIHJ1bkxvb3BNb2RlKTsKICAgICBmb3JtLT5zY2hlZHVsZWRSdW5Mb29wUGFp
cnMuYWRkKFNjaGVkdWxlUGFpcjo6Y3JlYXRlKHJ1bkxvb3AsIHJ1bkxvb3BNb2RlKSk7CiB9CiAK
QEAgLTMzNSw3ICszMzQsNyBAQCBzdGF0aWMgdm9pZCBmb3JtVW5zY2hlZHVsZShDRlJlYWRTdHJl
YW1SZWYsIENGUnVuTG9vcFJlZiBydW5Mb29wLCBDRlN0cmluZ1JlZiBydQogICAgIEZvcm1TdHJl
YW1GaWVsZHMqIGZvcm0gPSBzdGF0aWNfY2FzdDxGb3JtU3RyZWFtRmllbGRzKj4oY29udGV4dCk7
CiAKICAgICBpZiAoZm9ybS0+Y3VycmVudFN0cmVhbSkKLSAgICAgICAgQ0ZSZWFkU3RyZWFtVW5z
Y2hlZHVsZUZyb21SdW5Mb29wKGZvcm0tPmN1cnJlbnRTdHJlYW0sIHJ1bkxvb3AsIHJ1bkxvb3BN
b2RlKTsKKyAgICAgICAgQ0ZSZWFkU3RyZWFtVW5zY2hlZHVsZUZyb21SdW5Mb29wKGZvcm0tPmN1
cnJlbnRTdHJlYW0uZ2V0KCksIHJ1bkxvb3AsIHJ1bkxvb3BNb2RlKTsKICAgICBmb3JtLT5zY2hl
ZHVsZWRSdW5Mb29wUGFpcnMucmVtb3ZlKFNjaGVkdWxlUGFpcjo6Y3JlYXRlKHJ1bkxvb3AsIHJ1
bkxvb3BNb2RlKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY2YvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ0ZOZXRXaW4uY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jZi9OZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldFdpbi5jcHAK
aW5kZXggMDViMGVjOTJiOWVhNzI2NjZiNjljMDdiZTAyZjYwNjZiZDVmN2QxNS4uNWQ3ZDc5NjE0
NDY1ZmNhYjViZDZiNjQxOGUwNjBmNjhlYjA5NGE0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jZi9OZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldFdpbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9OZXR3b3JrU3RvcmFnZVNl
c3Npb25DRk5ldFdpbi5jcHAKQEAgLTg4LDEyICs4OCwxMCBAQCBDRlVSTFN0b3JhZ2VTZXNzaW9u
UmVmIGNyZWF0ZVByaXZhdGVTdG9yYWdlU2Vzc2lvbihDRlN0cmluZ1JlZiBpZGVudGlmaWVyLCBP
cHRpbwogICAgIAogICAgIC8vIFRoZSBwcml2YXRlIHN0b3JhZ2Ugc2Vzc2lvbiBzaG91bGQgaGF2
ZSB0aGUgc2FtZSBwcm9wZXJ0aWVzIGFzIHRoZSBkZWZhdWx0IHN0b3JhZ2Ugc2Vzc2lvbiwKICAg
ICAvLyB3aXRoIHRoZSBleGNlcHRpb24gdGhhdCBpdCBzaG91bGQgYmUgaW4tbWVtb3J5IG9ubHkg
c3RvcmFnZS4KLSAgICBDRlVSTENhY2hlUmVmIGNhY2hlID0gX0NGVVJMU3RvcmFnZVNlc3Npb25D
b3B5Q2FjaGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgc3RvcmFnZVNlc3Npb24pOwotICAgIENGVVJM
Q2FjaGVTZXREaXNrQ2FwYWNpdHkoY2FjaGUsIDApOwotICAgIENGVVJMQ2FjaGVSZWYgZGVmYXVs
dENhY2hlID0gQ0ZVUkxDYWNoZUNvcHlTaGFyZWRVUkxDYWNoZSgpOwotICAgIENGVVJMQ2FjaGVT
ZXRNZW1vcnlDYXBhY2l0eShjYWNoZSwgQ0ZVUkxDYWNoZU1lbW9yeUNhcGFjaXR5KGRlZmF1bHRD
YWNoZSkpOwotICAgIENGUmVsZWFzZShkZWZhdWx0Q2FjaGUpOwotICAgIENGUmVsZWFzZShjYWNo
ZSk7CisgICAgYXV0byBjYWNoZSA9IGFkb3B0Q0YoX0NGVVJMU3RvcmFnZVNlc3Npb25Db3B5Q2Fj
aGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgc3RvcmFnZVNlc3Npb24pKTsKKyAgICBDRlVSTENhY2hl
U2V0RGlza0NhcGFjaXR5KGNhY2hlLmdldCgpLCAwKTsKKyAgICBhdXRvIGRlZmF1bHRDYWNoZSA9
IGFkb3B0Q0YoQ0ZVUkxDYWNoZUNvcHlTaGFyZWRVUkxDYWNoZSgpKTsKKyAgICBDRlVSTENhY2hl
U2V0TWVtb3J5Q2FwYWNpdHkoY2FjaGUuZ2V0KCksIENGVVJMQ2FjaGVNZW1vcnlDYXBhY2l0eShk
ZWZhdWx0Q2FjaGUuZ2V0KCkpKTsKICAgICAKICAgICBDRkhUVFBDb29raWVTdG9yYWdlQWNjZXB0
UG9saWN5IGNmQ29va2llQWNjZXB0UG9saWN5OwogICAgIGlmIChjb29raWVBY2NlcHRQb2xpY3kp
CkBAIC0xMDMsOSArMTAxLDggQEAgQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZiBjcmVhdGVQcml2YXRl
U3RvcmFnZVNlc3Npb24oQ0ZTdHJpbmdSZWYgaWRlbnRpZmllciwgT3B0aW8KICAgICAgICAgY2ZD
b29raWVBY2NlcHRQb2xpY3kgPSBDRkhUVFBDb29raWVTdG9yYWdlR2V0Q29va2llQWNjZXB0UG9s
aWN5KGRlZmF1bHRDb29raWVTdG9yYWdlKTsKICAgICB9CiAKLSAgICBDRkhUVFBDb29raWVTdG9y
YWdlUmVmIGNvb2tpZVN0b3JhZ2UgPSBfQ0ZVUkxTdG9yYWdlU2Vzc2lvbkNvcHlDb29raWVTdG9y
YWdlKGtDRkFsbG9jYXRvckRlZmF1bHQsIHN0b3JhZ2VTZXNzaW9uKTsKLSAgICBDRkhUVFBDb29r
aWVTdG9yYWdlU2V0Q29va2llQWNjZXB0UG9saWN5KGNvb2tpZVN0b3JhZ2UsIGNmQ29va2llQWNj
ZXB0UG9saWN5KTsKLSAgICBDRlJlbGVhc2UoY29va2llU3RvcmFnZSk7CisgICAgYXV0byBjb29r
aWVTdG9yYWdlID0gYWRvcHRDRihfQ0ZVUkxTdG9yYWdlU2Vzc2lvbkNvcHlDb29raWVTdG9yYWdl
KGtDRkFsbG9jYXRvckRlZmF1bHQsIHN0b3JhZ2VTZXNzaW9uKSk7CisgICAgQ0ZIVFRQQ29va2ll
U3RvcmFnZVNldENvb2tpZUFjY2VwdFBvbGljeShjb29raWVTdG9yYWdlLmdldCgpLCBjZkNvb2tp
ZUFjY2VwdFBvbGljeSk7CiAgICAgCiAgICAgcmV0dXJuIHN0b3JhZ2VTZXNzaW9uOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRs
ZUNGTmV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VI
YW5kbGVDRk5ldC5jcHAKaW5kZXggY2U0ZWRiNDliNzM4NzAzYzFjM2EwYjM4NjVjMDhkNzkyNGE0
NjMzNy4uM2MxN2FkYzQxOGI4MDRjYTRlZjU0YTk5MzVmZWMzNTU3NDIzYmM4MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFu
ZGxlQ0ZOZXQuY3BwCkBAIC0xMjAsMTIgKzEyMCwxMSBAQCBzdGF0aWMgdm9pZCBzZXRDbGllbnRD
ZXJ0aWZpY2F0ZUluU1NMUHJvcGVydGllcyhDRk11dGFibGVEaWN0aW9uYXJ5UmVmIHNzbFByb3Bz
LAogewogICAgIGlmICghc3NsUHJvcHMgfHwgIWNlcnREYXRhKQogICAgICAgICByZXR1cm47Ci0g
ICAgQ0ZNdXRhYmxlRGljdGlvbmFyeVJlZiBjZXJ0RGljdCA9IENGRGljdGlvbmFyeUNyZWF0ZU11
dGFibGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgMCwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJh
Y2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcyk7CisgICAgYXV0byBjZXJ0RGlj
dCA9IGFkb3B0Q0YoQ0ZEaWN0aW9uYXJ5Q3JlYXRlTXV0YWJsZShrQ0ZBbGxvY2F0b3JEZWZhdWx0
LCAwLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZh
bHVlQ2FsbEJhY2tzKSk7CiAgICAgaWYgKCFjZXJ0RGljdCkKICAgICAgICAgcmV0dXJuOwotICAg
IENGRGljdGlvbmFyeVNldFZhbHVlKGNlcnREaWN0LCBfa0NGV2luZG93c1NTTExvY2FsQ2VydCwg
Y2VydERhdGEpOwotICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHNzbFByb3BzLCBfa0NGU3RyZWFt
UHJvcGVydHlXaW5kb3dzU1NMQ2VydEluZm8sIGNlcnREaWN0KTsKLSAgICBDRlJlbGVhc2UoY2Vy
dERpY3QpOworICAgIENGRGljdGlvbmFyeVNldFZhbHVlKGNlcnREaWN0LmdldCgpLCBfa0NGV2lu
ZG93c1NTTExvY2FsQ2VydCwgY2VydERhdGEpOworICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHNz
bFByb3BzLCBfa0NGU3RyZWFtUHJvcGVydHlXaW5kb3dzU1NMQ2VydEluZm8sIGNlcnREaWN0Lmdl
dCgpKTsKIH0KICNlbmRpZgogCkBAIC0yMDUsMTEgKzIwNCwxMSBAQCB2b2lkIFJlc291cmNlSGFu
ZGxlOjpjcmVhdGVDRlVSTENvbm5lY3Rpb24oYm9vbCBzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFn
ZSwgYm9vbAogICAgIGlmIChzc2xQcm9wcykKICAgICAgICAgQ0ZVUkxSZXF1ZXN0U2V0U1NMUHJv
cGVydGllcyhyZXF1ZXN0LmdldCgpLCBzc2xQcm9wcy5nZXQoKSk7CiAKLSAgICBDRk11dGFibGVE
aWN0aW9uYXJ5UmVmIHN0cmVhbVByb3BlcnRpZXMgID0gQ0ZEaWN0aW9uYXJ5Q3JlYXRlTXV0YWJs
ZSgwLCAwLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFy
eVZhbHVlQ2FsbEJhY2tzKTsKKyAgICBhdXRvIHN0cmVhbVByb3BlcnRpZXMgID0gYWRvcHRDRihD
RkRpY3Rpb25hcnlDcmVhdGVNdXRhYmxlKDAsIDAsICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxC
YWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpKTsKIAogICAgIGlmICghc2hv
dWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UpIHsKICAgICAgICAgLy8gQXZvaWQgdXNpbmcgZXhpc3Rp
bmcgY29ubmVjdGlvbnMsIGJlY2F1c2UgdGhleSBtYXkgYmUgYWxyZWFkeSBhdXRoZW50aWNhdGVk
LgotICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShzdHJlYW1Qcm9wZXJ0aWVzLCBDRlNUUigi
X2tDRlVSTENvbm5lY3Rpb25TZXNzaW9uSUQiKSwgQ0ZTVFIoIldlYktpdFByaXZhdGVTZXNzaW9u
IikpOworICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShzdHJlYW1Qcm9wZXJ0aWVzLmdldCgp
LCBDRlNUUigiX2tDRlVSTENvbm5lY3Rpb25TZXNzaW9uSUQiKSwgQ0ZTVFIoIldlYktpdFByaXZh
dGVTZXNzaW9uIikpOwogICAgIH0KIAogICAgIHN0YXRpYyBjb25zdCBDRlN0cmluZ1JlZiBrQ0ZV
UkxDb25uZWN0aW9uU29ja2V0U3RyZWFtUHJvcGVydGllcyA9IENGU1RSKCJrQ0ZVUkxDb25uZWN0
aW9uU29ja2V0U3RyZWFtUHJvcGVydGllcyIpOwpAQCAtMjI4LDggKzIyNyw3IEBAIHZvaWQgUmVz
b3VyY2VIYW5kbGU6OmNyZWF0ZUNGVVJMQ29ubmVjdGlvbihib29sIHNob3VsZFVzZUNyZWRlbnRp
YWxTdG9yYWdlLCBib29sCiAjZW5kaWYKIAogICAgIC8vIEZJWE1FOiBUaGlzIGNvZGUgaXMgZGlm
ZmVyZW50IGZyb20gaU9TIGNvZGUgaW4gUmVzb3VyY2VIYW5kbGVNYWMubW0gaW4gdGhhdCBoZXJl
IHdlIGlnbm9yZSBzdHJlYW0gcHJvcGVydGllcyB0aGF0IHdlcmUgcHJlc2VudCBpbiBjbGllbnQg
cHJvcGVydGllcy4KLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShwcm9wZXJ0aWVzRGljdGlvbmFy
eS5nZXQoKSwga0NGVVJMQ29ubmVjdGlvblNvY2tldFN0cmVhbVByb3BlcnRpZXMsIHN0cmVhbVBy
b3BlcnRpZXMpOwotICAgIENGUmVsZWFzZShzdHJlYW1Qcm9wZXJ0aWVzKTsKKyAgICBDRkRpY3Rp
b25hcnlBZGRWYWx1ZShwcm9wZXJ0aWVzRGljdGlvbmFyeS5nZXQoKSwga0NGVVJMQ29ubmVjdGlv
blNvY2tldFN0cmVhbVByb3BlcnRpZXMsIHN0cmVhbVByb3BlcnRpZXMuZ2V0KCkpOwogCiAgICAg
ZC0+bV9jb25uZWN0aW9uRGVsZWdhdGUgPSBhZG9wdFJlZihuZXcgUmVzb3VyY2VIYW5kbGVDRlVS
TENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZSh0aGlzLCBXVEZNb3ZlKG1lc3Nh
Z2VRdWV1ZSkpKTsKICAgICBkLT5tX2Nvbm5lY3Rpb25EZWxlZ2F0ZS0+c2V0dXBSZXF1ZXN0KHJl
cXVlc3QuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1
ZXVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5k
bGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZS5jcHAKaW5kZXggMjY0
NjYzODhiN2NhNWE2NjU2ZDBlZTI2MWU3NTZlZTIyZmEwNDAzMS4uOGU4YzNhYTdhNmJlNGNlZTM2
YWE4ZTlmM2RhM2U2YTIyYTE1ZWM3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9w
ZXJhdGlvblF1ZXVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nm
L1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWUu
Y3BwCkBAIC0xMzcsOCArMTM3LDcgQEAgQ0ZVUkxSZXF1ZXN0UmVmIFJlc291cmNlSGFuZGxlQ0ZV
UkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6OndpbGxTZW4KICAgICBpZiAo
IW9yaWdpbmFsUmVkaXJlY3RSZXNwb25zZSkgewogICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdS
ZWY+IG5ld1NjaGVtZSA9IGFkb3B0Q0YoQ0ZVUkxDb3B5U2NoZW1lKENGVVJMUmVxdWVzdEdldFVS
TChjZlJlcXVlc3QpKSk7CiAgICAgICAgIGlmIChDRlN0cmluZ0NvbXBhcmUobmV3U2NoZW1lLmdl
dCgpLCBtX29yaWdpbmFsU2NoZW1lLmdldCgpLCBrQ0ZDb21wYXJlQ2FzZUluc2Vuc2l0aXZlKSA9
PSBrQ0ZDb21wYXJlRXF1YWxUbykgewotICAgICAgICAgICAgQ0ZSZXRhaW4oY2ZSZXF1ZXN0KTsK
LSAgICAgICAgICAgIHJldHVybiBjZlJlcXVlc3Q7CisgICAgICAgICAgICByZXR1cm4gY2ZSZXF1
ZXN0LmxlYWtSZWYoKTsKICAgICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3RDRk5ldC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVxdWVzdENGTmV0LmNwcApp
bmRleCBkMmQwOTNjM2MzMjAwNzNiNmE1YWFiZTkzZDBjZmZmYTkxZTk1MmJiLi5mNmUxYjliNWQz
YTViYTdhZTM1YTc3OTIzZDU2ZDUzZWFlMzI3MTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVxdWVzdENGTmV0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVxdWVzdENGTmV0LmNwcApA
QCAtMjgyLDEwICsyODIsOCBAQCB2b2lkIFJlc291cmNlUmVxdWVzdDo6ZG9VcGRhdGVSZXNvdXJj
ZVJlcXVlc3QoKQogICAgICAgICBtX2NhY2hlUG9saWN5ID0gZnJvbVBsYXRmb3JtUmVxdWVzdENh
Y2hlUG9saWN5KENGVVJMUmVxdWVzdEdldENhY2hlUG9saWN5KG1fY2ZSZXF1ZXN0LmdldCgpKSk7
CiAgICAgbV90aW1lb3V0SW50ZXJ2YWwgPSBDRlVSTFJlcXVlc3RHZXRUaW1lb3V0SW50ZXJ2YWwo
bV9jZlJlcXVlc3QuZ2V0KCkpOwogICAgIG1fZmlyc3RQYXJ0eUZvckNvb2tpZXMgPSBDRlVSTFJl
cXVlc3RHZXRNYWluRG9jdW1lbnRVUkwobV9jZlJlcXVlc3QuZ2V0KCkpOwotICAgIGlmIChDRlN0
cmluZ1JlZiBtZXRob2QgPSBDRlVSTFJlcXVlc3RDb3B5SFRUUFJlcXVlc3RNZXRob2QobV9jZlJl
cXVlc3QuZ2V0KCkpKSB7Ci0gICAgICAgIG1faHR0cE1ldGhvZCA9IG1ldGhvZDsKLSAgICAgICAg
Q0ZSZWxlYXNlKG1ldGhvZCk7Ci0gICAgfQorICAgIGlmIChhdXRvIG1ldGhvZCA9IGFkb3B0Q0Yo
Q0ZVUkxSZXF1ZXN0Q29weUhUVFBSZXF1ZXN0TWV0aG9kKG1fY2ZSZXF1ZXN0LmdldCgpKSkpCisg
ICAgICAgIG1faHR0cE1ldGhvZCA9IG1ldGhvZC5nZXQoKTsKICAgICBtX2FsbG93Q29va2llcyA9
IENGVVJMUmVxdWVzdFNob3VsZEhhbmRsZUhUVFBDb29raWVzKG1fY2ZSZXF1ZXN0LmdldCgpKTsK
IAogICAgIGlmIChyZXNvdXJjZVByaW9yaXRpZXNFbmFibGVkKCkpCkBAIC0zMDYsMTQgKzMwNCwx
MyBAQCB2b2lkIFJlc291cmNlUmVxdWVzdDo6ZG9VcGRhdGVSZXNvdXJjZVJlcXVlc3QoKQogI2Vu
ZGlmCiAKICAgICBtX2h0dHBIZWFkZXJGaWVsZHMuY2xlYXIoKTsKLSAgICBpZiAoQ0ZEaWN0aW9u
YXJ5UmVmIGhlYWRlcnMgPSBDRlVSTFJlcXVlc3RDb3B5QWxsSFRUUEhlYWRlckZpZWxkcyhtX2Nm
UmVxdWVzdC5nZXQoKSkpIHsKLSAgICAgICAgQ0ZJbmRleCBoZWFkZXJDb3VudCA9IENGRGljdGlv
bmFyeUdldENvdW50KGhlYWRlcnMpOworICAgIGlmIChhdXRvIGhlYWRlcnMgPSBhZG9wdENGKENG
VVJMUmVxdWVzdENvcHlBbGxIVFRQSGVhZGVyRmllbGRzKG1fY2ZSZXF1ZXN0LmdldCgpKSkpIHsK
KyAgICAgICAgQ0ZJbmRleCBoZWFkZXJDb3VudCA9IENGRGljdGlvbmFyeUdldENvdW50KGhlYWRl
cnMuZ2V0KCkpOwogICAgICAgICBWZWN0b3I8Y29uc3Qgdm9pZCosIDEyOD4ga2V5cyhoZWFkZXJD
b3VudCk7CiAgICAgICAgIFZlY3Rvcjxjb25zdCB2b2lkKiwgMTI4PiB2YWx1ZXMoaGVhZGVyQ291
bnQpOwotICAgICAgICBDRkRpY3Rpb25hcnlHZXRLZXlzQW5kVmFsdWVzKGhlYWRlcnMsIGtleXMu
ZGF0YSgpLCB2YWx1ZXMuZGF0YSgpKTsKKyAgICAgICAgQ0ZEaWN0aW9uYXJ5R2V0S2V5c0FuZFZh
bHVlcyhoZWFkZXJzLmdldCgpLCBrZXlzLmRhdGEoKSwgdmFsdWVzLmRhdGEoKSk7CiAgICAgICAg
IGZvciAoaW50IGkgPSAwOyBpIDwgaGVhZGVyQ291bnQ7ICsraSkKICAgICAgICAgICAgIG1faHR0
cEhlYWRlckZpZWxkcy5zZXQoKENGU3RyaW5nUmVmKWtleXNbaV0sIChDRlN0cmluZ1JlZil2YWx1
ZXNbaV0pOwotICAgICAgICBDRlJlbGVhc2UoaGVhZGVycyk7CiAgICAgfQogCiAgICAgbV9yZXNw
b25zZUNvbnRlbnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tBcnJheS5jbGVhcigpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdJbWFnZUNHV2luLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnSW1hZ2VDR1dpbi5jcHAKaW5kZXggMzRl
ZDllZjhjZjRmODY2Y2EwM2ZkY2E5MzA0YTk2MDk2YmM2NWI5ZS4uYjQ1ZTRkNGEwYTI1ZGZjYzQ3
NmY5YWFiZjc1N2M3MGFlMjJjOTk1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vd2luL0RyYWdJbWFnZUNHV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93
aW4vRHJhZ0ltYWdlQ0dXaW4uY3BwCkBAIC02NywxNSArNjcsMTMgQEAgR0RJT2JqZWN0PEhCSVRN
QVA+IGFsbG9jSW1hZ2UoSERDIGRjLCBJbnRTaXplIHNpemUsIENHQ29udGV4dFJlZiAqdGFyZ2V0
UmVmKQogICAgIHJldHVybiBoYm1wOwogfQogCi1zdGF0aWMgQ0dDb250ZXh0UmVmIGNyZWF0ZUNn
Q29udGV4dEZyb21CaXRtYXAoSEJJVE1BUCBiaXRtYXApCitzdGF0aWMgUmV0YWluUHRyPENHQ29u
dGV4dFJlZj4gY3JlYXRlQ2dDb250ZXh0RnJvbUJpdG1hcChIQklUTUFQIGJpdG1hcCkKIHsKICAg
ICBCSVRNQVAgaW5mbzsKICAgICBHZXRPYmplY3QoYml0bWFwLCBzaXplb2YoaW5mbyksICZpbmZv
KTsKICAgICBBU1NFUlQoaW5mby5ibUJpdHNQaXhlbCA9PSAzMik7CiAKLSAgICBDR0NvbnRleHRS
ZWYgYml0bWFwQ29udGV4dCA9IENHQml0bWFwQ29udGV4dENyZWF0ZShpbmZvLmJtQml0cywgaW5m
by5ibVdpZHRoLCBpbmZvLmJtSGVpZ2h0LCA4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZm8uYm1XaWR0aEJ5dGVzLCBzUkdCQ29sb3JT
cGFjZVJlZigpLCBrQ0dCaXRtYXBCeXRlT3JkZXIzMkxpdHRsZSB8IGtDR0ltYWdlQWxwaGFOb25l
U2tpcEZpcnN0KTsKLSAgICByZXR1cm4gYml0bWFwQ29udGV4dDsKKyAgICByZXR1cm4gYWRvcHRD
RihDR0JpdG1hcENvbnRleHRDcmVhdGUoaW5mby5ibUJpdHMsIGluZm8uYm1XaWR0aCwgaW5mby5i
bUhlaWdodCwgOCwgaW5mby5ibVdpZHRoQnl0ZXMsIHNSR0JDb2xvclNwYWNlUmVmKCksIGtDR0Jp
dG1hcEJ5dGVPcmRlcjMyTGl0dGxlIHwga0NHSW1hZ2VBbHBoYU5vbmVTa2lwRmlyc3QpKTsKIH0K
IAogRHJhZ0ltYWdlUmVmIHNjYWxlRHJhZ0ltYWdlKERyYWdJbWFnZVJlZiBpbWFnZVJlZiwgRmxv
YXRTaXplIHNjYWxlKQpAQCAtMTAxLDE1ICs5OSwxMyBAQCBEcmFnSW1hZ2VSZWYgc2NhbGVEcmFn
SW1hZ2UoRHJhZ0ltYWdlUmVmIGltYWdlUmVmLCBGbG9hdFNpemUgc2NhbGUpCiAgICAgaWYgKCFo
Ym1wKQogICAgICAgICBnb3RvIGV4aXQ7CiAKLSAgICBDR0NvbnRleHRSZWYgc3JjQ29udGV4dCA9
IGNyZWF0ZUNnQ29udGV4dEZyb21CaXRtYXAoaW1hZ2UuZ2V0KCkpOwotICAgIENHSW1hZ2VSZWYg
c3JjSW1hZ2UgPSBDR0JpdG1hcENvbnRleHRDcmVhdGVJbWFnZShzcmNDb250ZXh0KTsKKyAgICBh
dXRvIHNyY0NvbnRleHQgPSBjcmVhdGVDZ0NvbnRleHRGcm9tQml0bWFwKGltYWdlLmdldCgpKTsK
KyAgICBhdXRvIHNyY0ltYWdlID0gYWRvcHRDRihDR0JpdG1hcENvbnRleHRDcmVhdGVJbWFnZShz
cmNDb250ZXh0KSk7CiAgICAgQ0dSZWN0IHJlY3Q7CiAgICAgcmVjdC5vcmlnaW4ueCA9IDA7CiAg
ICAgcmVjdC5vcmlnaW4ueSA9IDA7CiAgICAgcmVjdC5zaXplID0gZHN0U2l6ZTsKLSAgICBDR0Nv
bnRleHREcmF3SW1hZ2UodGFyZ2V0Q29udGV4dCwgcmVjdCwgc3JjSW1hZ2UpOwotICAgIENHSW1h
Z2VSZWxlYXNlKHNyY0ltYWdlKTsKLSAgICBDR0NvbnRleHRSZWxlYXNlKHNyY0NvbnRleHQpOwor
ICAgIENHQ29udGV4dERyYXdJbWFnZSh0YXJnZXRDb250ZXh0LCByZWN0LCBzcmNJbWFnZS5nZXQo
KSk7CiAgICAgQ0dDb250ZXh0UmVsZWFzZSh0YXJnZXRDb250ZXh0KTsKIAogZXhpdDoKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9XZWJDb3JlQnVuZGxlV2luLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9XZWJDb3JlQnVuZGxlV2luLmNwcAppbmRleCAz
YjdjOGUxYTIwYTQ1MWFkN2NiMzg0OGViNjE2MjJlOTdmZDAyNGM3Li45NDkzMmZiYzk2YTUyOTg0
MGYyZTZiYjQ4ZWI2ZDQ0ZTE3Y2U1ZTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS93aW4vV2ViQ29yZUJ1bmRsZVdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vd2luL1dlYkNvcmVCdW5kbGVXaW4uY3BwCkBAIC0zMSwxNiArMzEsMTUgQEAKICNpbmNsdWRl
ICJXZWJDb3JlSW5zdGFuY2VIYW5kbGUuaCIKICNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9DRkJ1
bmRsZS5oPgogI2luY2x1ZGUgPHdpbmRvd3MuaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95
ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotc3RhdGljIENGQnVuZGxlUmVmIGNyZWF0ZVdlYktpdEJ1bmRsZSgpCitzdGF0aWMgUmV0YWlu
UHRyPENGQnVuZGxlUmVmPiBjcmVhdGVXZWJLaXRCdW5kbGUoKQogewotICAgIGlmIChDRkJ1bmRs
ZVJlZiBleGlzdGluZ0J1bmRsZSA9IENGQnVuZGxlR2V0QnVuZGxlV2l0aElkZW50aWZpZXIoQ0ZT
VFIoImNvbS5hcHBsZS5XZWJLaXQiKSkpIHsKLSAgICAgICAgQ0ZSZXRhaW4oZXhpc3RpbmdCdW5k
bGUpOworICAgIGlmIChDRkJ1bmRsZVJlZiBleGlzdGluZ0J1bmRsZSA9IENGQnVuZGxlR2V0QnVu
ZGxlV2l0aElkZW50aWZpZXIoQ0ZTVFIoImNvbS5hcHBsZS5XZWJLaXQiKSkpCiAgICAgICAgIHJl
dHVybiBleGlzdGluZ0J1bmRsZTsKLSAgICB9CiAKICAgICB3Y2hhcl90IGRsbFBhdGhCdWZmZXJb
TUFYX1BBVEhdOwogICAgIERXT1JEIGxlbmd0aCA9IDo6R2V0TW9kdWxlRmlsZU5hbWVXKFdlYkNv
cmU6Omluc3RhbmNlSGFuZGxlKCksIGRsbFBhdGhCdWZmZXIsIFdURl9BUlJBWV9MRU5HVEgoZGxs
UGF0aEJ1ZmZlcikpOwpAQCAtNTIsMTQgKzUxLDE0IEBAIHN0YXRpYyBDRkJ1bmRsZVJlZiBjcmVh
dGVXZWJLaXRCdW5kbGUoKQogICAgIFJldGFpblB0cjxDRlVSTFJlZj4gZGxsRGlyZWN0b3J5VVJM
ID0gYWRvcHRDRihDRlVSTENyZWF0ZUNvcHlEZWxldGluZ0xhc3RQYXRoQ29tcG9uZW50KDAsIGRs
bFVSTC5nZXQoKSkpOwogICAgIFJldGFpblB0cjxDRlVSTFJlZj4gcmVzb3VyY2VzRGlyZWN0b3J5
VVJMID0gYWRvcHRDRihDRlVSTENyZWF0ZUNvcHlBcHBlbmRpbmdQYXRoQ29tcG9uZW50KDAsIGRs
bERpcmVjdG9yeVVSTC5nZXQoKSwgQ0ZTVFIoIldlYktpdC5yZXNvdXJjZXMiKSwgdHJ1ZSkpOwog
Ci0gICAgcmV0dXJuIENGQnVuZGxlQ3JlYXRlKDAsIHJlc291cmNlc0RpcmVjdG9yeVVSTC5nZXQo
KSk7CisgICAgcmV0dXJuIGFkb3B0Q0YoQ0ZCdW5kbGVDcmVhdGUoMCwgcmVzb3VyY2VzRGlyZWN0
b3J5VVJMLmdldCgpKSk7CiB9CiAKIENGQnVuZGxlUmVmIHdlYktpdEJ1bmRsZSgpCiB7Ci0gICAg
c3RhdGljIENGQnVuZGxlUmVmIGJ1bmRsZSA9IGNyZWF0ZVdlYktpdEJ1bmRsZSgpOwotICAgIEFT
U0VSVChidW5kbGUpOwotICAgIHJldHVybiBidW5kbGU7CisgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPFJldGFpblB0cjxDRkJ1bmRsZVJlZj4+IGJ1bmRsZSA9IGNyZWF0ZVdlYktpdEJ1bmRsZSgp
OworICAgIEFTU0VSVChidW5kbGUuZ2V0KCkpOworICAgIHJldHVybiBidW5kbGUuZ2V0KCkuZ2V0
KCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUaGVtZU1hYy5tbQppbmRleCBhM2I3NDA2ZGE0OTEyNzFiMDE2ODkyMmI2NjJmZTIy
YmFiMzc5YTI5Li40NjNlYmEwNmNkMjk5MWZhZmYxN2EzNGMxZWQwOTdiMWQ3MWUxYmY4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCkBAIC0xNTMsMTAgKzE1
Myw5IEBAIC0gKENGRGljdGlvbmFyeVJlZilfYWRqdXN0ZWRDb3JlVUlEcmF3T3B0aW9uc0ZvckRy
YXdpbmdCb3JkZXJzT25seTooQ0ZEaWN0aW9uYXJ5CiAKICAgICAvLyBGSVhNRTogVGhpcyBpcyBh
IHdvcmthcm91bmQgZm9yIDxyZGFyOi8vcHJvYmxlbS8xMTM4NTQ2MT4uIFdoZW4gdGhhdCBidWcg
aXMgcmVzb2x2ZWQsIHdlIHNob3VsZCByZW1vdmUgdGhpcyBjb2RlLAogICAgIC8vIGFzIHdlbGwg
YXMgdGhlIGludGVybmFsIG1ldGhvZCBvdmVycmlkZXMgYmVsb3cuCi0gICAgQ0ZNdXRhYmxlRGlj
dGlvbmFyeVJlZiBjb3JlVUlEcmF3T3B0aW9ucyA9IENGRGljdGlvbmFyeUNyZWF0ZU11dGFibGVD
b3B5KE5VTEwsIDAsIGRlZmF1bHRPcHRpb25zKTsKLSAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShj
b3JlVUlEcmF3T3B0aW9ucywgQ0ZTVFIoImJvcmRlcnMgb25seSIpLCBrQ0ZCb29sZWFuVHJ1ZSk7
Ci0gICAgQ0ZBdXRvcmVsZWFzZShjb3JlVUlEcmF3T3B0aW9ucyk7Ci0gICAgcmV0dXJuIGNvcmVV
SURyYXdPcHRpb25zOworICAgIGF1dG8gY29yZVVJRHJhd09wdGlvbnMgPSBhZG9wdENGKENGRGlj
dGlvbmFyeUNyZWF0ZU11dGFibGVDb3B5KE5VTEwsIDAsIGRlZmF1bHRPcHRpb25zKSk7CisgICAg
Q0ZEaWN0aW9uYXJ5U2V0VmFsdWUoY29yZVVJRHJhd09wdGlvbnMuZ2V0KCksIENGU1RSKCJib3Jk
ZXJzIG9ubHkiKSwga0NGQm9vbGVhblRydWUpOworICAgIHJldHVybiBjb3JlVUlEcmF3T3B0aW9u
cy5hdXRvcmVsZWFzZSgpOwogfQogCiAtIChDRkRpY3Rpb25hcnlSZWYpX2NvcmVVSURyYXdPcHRp
b25zV2l0aEZyYW1lOihOU1JlY3QpY2VsbEZyYW1lIGluVmlldzooTlNWaWV3ICopY29udHJvbFZp
ZXcgaW5jbHVkZUZvY3VzOihCT09MKWluY2x1ZGVGb2N1cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9jb2NvYS9XZWJBcmNoaXZlRHVtcFN1cHBvcnQuaCBiL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvY29jb2EvV2ViQXJjaGl2ZUR1bXBTdXBwb3J0LmgKaW5kZXggMmQwM2VmM2Yy
OTg2ZDhiMjcxYWI3MzcwODMzOTYxZWE3NDZhODE5ZS4uMjA5YTcxMTg1N2ViZDc3NjZhMTk5MTg2
MjkwYjY0MWMwN2MxNWEyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9jb2Nv
YS9XZWJBcmNoaXZlRHVtcFN1cHBvcnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL2Nv
Y29hL1dlYkFyY2hpdmVEdW1wU3VwcG9ydC5oCkBAIC0yNiw5ICsyNiwxMCBAQAogI3ByYWdtYSBv
bmNlCiAKICNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9Db3JlRm91bmRhdGlvbi5oPgorI2luY2x1
ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmVUZXN0U3VwcG9ydCB7CiAK
LUNGU3RyaW5nUmVmIGNyZWF0ZVhNTFN0cmluZ0Zyb21XZWJBcmNoaXZlRGF0YShDRkRhdGFSZWYg
d2ViQXJjaGl2ZURhdGEpIFdURl9FWFBPUlRfUFJJVkFURTsKK1JldGFpblB0cjxDRlN0cmluZ1Jl
Zj4gY3JlYXRlWE1MU3RyaW5nRnJvbVdlYkFyY2hpdmVEYXRhKENGRGF0YVJlZiB3ZWJBcmNoaXZl
RGF0YSkgV1RGX0VYUE9SVF9QUklWQVRFOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlVGVzdFN1
cHBvcnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvY29jb2EvV2ViQXJjaGl2
ZUR1bXBTdXBwb3J0Lm1tIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9jb2NvYS9XZWJBcmNoaXZl
RHVtcFN1cHBvcnQubW0KaW5kZXggNWU3ZDhlMTZhOThmYjcwMWY0N2M1ZTQ5N2ZiYTkxMjNkZWI3
OWRjMS4uYmU2NjA3OGE4M2QwY2E0OWI3MWExZmI1M2MyM2E4YzZiODFkNzY3ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9jb2NvYS9XZWJBcmNoaXZlRHVtcFN1cHBvcnQubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9jb2NvYS9XZWJBcmNoaXZlRHVtcFN1cHBvcnQu
bW0KQEAgLTIwMCw3ICsyMDAsNyBAQCBzdGF0aWMgQ0ZDb21wYXJpc29uUmVzdWx0IGNvbXBhcmVS
ZXNvdXJjZVVSTHMoY29uc3Qgdm9pZCAqdmFsMSwgY29uc3Qgdm9pZCAqdmFsMgogICAgIHJldHVy
biBDRlN0cmluZ0NvbXBhcmUodXJsMSwgdXJsMiwga0NGQ29tcGFyZUFuY2hvcmVkKTsKIH0KIAot
Q0ZTdHJpbmdSZWYgY3JlYXRlWE1MU3RyaW5nRnJvbVdlYkFyY2hpdmVEYXRhKENGRGF0YVJlZiB3
ZWJBcmNoaXZlRGF0YSkKK1JldGFpblB0cjxDRlN0cmluZ1JlZj4gY3JlYXRlWE1MU3RyaW5nRnJv
bVdlYkFyY2hpdmVEYXRhKENGRGF0YVJlZiB3ZWJBcmNoaXZlRGF0YSkKIHsKICAgICBDRkVycm9y
UmVmIGVycm9yID0gMDsKICAgICBDRlByb3BlcnR5TGlzdEZvcm1hdCBmb3JtYXQgPSBrQ0ZQcm9w
ZXJ0eUxpc3RCaW5hcnlGb3JtYXRfdjFfMDsKQEAgLTIwOCw4ICsyMDgsOCBAQCBDRlN0cmluZ1Jl
ZiBjcmVhdGVYTUxTdHJpbmdGcm9tV2ViQXJjaGl2ZURhdGEoQ0ZEYXRhUmVmIHdlYkFyY2hpdmVE
YXRhKQogCiAgICAgaWYgKCFwcm9wZXJ0eUxpc3QpIHsKICAgICAgICAgaWYgKGVycm9yKQotICAg
ICAgICAgICAgcmV0dXJuIENGRXJyb3JDb3B5RGVzY3JpcHRpb24oZXJyb3IpOwotICAgICAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8Q0ZTdHJpbmdSZWY+KENGUmV0YWluKENGU1RSKCJBbiB1bmtub3du
IGVycm9yIG9jY3VycmVkIGNvbnZlcnRpbmcgZGF0YSB0byBwcm9wZXJ0eSBsaXN0LiIpKSk7Cisg
ICAgICAgICAgICByZXR1cm4gYWRvcHRDRihDRkVycm9yQ29weURlc2NyaXB0aW9uKGVycm9yKSk7
CisgICAgICAgIHJldHVybiBDRlNUUigiQW4gdW5rbm93biBlcnJvciBvY2N1cnJlZCBjb252ZXJ0
aW5nIGRhdGEgdG8gcHJvcGVydHkgbGlzdC4iKTsKICAgICB9CiAKICAgICBSZXRhaW5QdHI8Q0ZN
dXRhYmxlQXJyYXlSZWY+IHJlc291cmNlcyA9IGFkb3B0Q0YoQ0ZBcnJheUNyZWF0ZU11dGFibGUo
a0NGQWxsb2NhdG9yRGVmYXVsdCwgMCwgJmtDRlR5cGVBcnJheUNhbGxCYWNrcykpOwpAQCAtMjUw
LDggKzI1MCw4IEBAIENGU3RyaW5nUmVmIGNyZWF0ZVhNTFN0cmluZ0Zyb21XZWJBcmNoaXZlRGF0
YShDRkRhdGFSZWYgd2ViQXJjaGl2ZURhdGEpCiAKICAgICBpZiAoIXhtbERhdGEpIHsKICAgICAg
ICAgaWYgKGVycm9yKQotICAgICAgICAgICAgcmV0dXJuIENGRXJyb3JDb3B5RGVzY3JpcHRpb24o
ZXJyb3IpOwotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q0ZTdHJpbmdSZWY+KENGUmV0YWlu
KENGU1RSKCJBbiB1bmtub3duIGVycm9yIG9jY3VycmVkIGNvbnZlcnRpbmcgcHJvcGVydHkgbGlz
dCB0byBkYXRhLiIpKSk7CisgICAgICAgICAgICByZXR1cm4gYWRvcHRDRihDRkVycm9yQ29weURl
c2NyaXB0aW9uKGVycm9yKSk7CisgICAgICAgIHJldHVybiBDRlNUUigiQW4gdW5rbm93biBlcnJv
ciBvY2N1cnJlZCBjb252ZXJ0aW5nIHByb3BlcnR5IGxpc3QgdG8gZGF0YS4iKTsKICAgICB9CiAK
ICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHhtbFN0cmluZyA9IGFkb3B0Q0YoQ0ZTdHJpbmdD
cmVhdGVGcm9tRXh0ZXJuYWxSZXByZXNlbnRhdGlvbihrQ0ZBbGxvY2F0b3JEZWZhdWx0LCB4bWxE
YXRhLmdldCgpLCBrQ0ZTdHJpbmdFbmNvZGluZ1VURjgpKTsKQEAgLTI2Niw3ICsyNjYsNyBAQCBD
RlN0cmluZ1JlZiBjcmVhdGVYTUxTdHJpbmdGcm9tV2ViQXJjaGl2ZURhdGEoQ0ZEYXRhUmVmIHdl
YkFyY2hpdmVEYXRhKQogICAgIHF1aWNrTG9va1VSTFJlcGxhY2VtZW50cygpLmNsZWFyKCk7CiAj
ZW5kaWYKIAotICAgIHJldHVybiBzdHJpbmcubGVha1JlZigpOworICAgIHJldHVybiBzdHJpbmc7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmVUZXN0U3VwcG9ydApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9jb2NvYS9XZWJWaWV3VmlzdWFsSWRlbnRpZmljYXRpb25PdmVy
bGF5Lm1tIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9jb2NvYS9XZWJWaWV3VmlzdWFsSWRlbnRp
ZmljYXRpb25PdmVybGF5Lm1tCmluZGV4IDFmN2E2MmFhM2ZjZjQ3Y2MyMzEwOWIzZmJiMzkzZWFi
YjgzMzNmNDIuLjlkYTg4MzBiYTJiOGUwN2M1ZjY3ZjBlMzQ2ZGJiZTkxYjljZWUzN2UgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvY29jb2EvV2ViVmlld1Zpc3VhbElkZW50aWZp
Y2F0aW9uT3ZlcmxheS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL2NvY29hL1dlYlZp
ZXdWaXN1YWxJZGVudGlmaWNhdGlvbk92ZXJsYXkubW0KQEAgLTEyNCw3ICsxMjQsNyBAQCAtICh2
b2lkKW9ic2VydmVWYWx1ZUZvcktleVBhdGg6KE5TU3RyaW5nICopa2V5UGF0aCBvZk9iamVjdDoo
aWQpb2JqZWN0IGNoYW5nZTooTgogc3RhdGljIENURm9udFJlZiBpZGVudGlmaWNhdGlvbkZvbnQo
KQogewogICAgIGF1dG8gbWF0cml4ID0gQ0dBZmZpbmVUcmFuc2Zvcm1JZGVudGl0eTsKLSAgICBy
ZXR1cm4gKENURm9udFJlZilDRkF1dG9yZWxlYXNlKENURm9udENyZWF0ZVdpdGhOYW1lKENGU1RS
KCJIZWx2ZXRpY2EiKSwgMjAsICZtYXRyaXgpKTsKKyAgICByZXR1cm4gYWRvcHRDRihDVEZvbnRD
cmVhdGVXaXRoTmFtZShDRlNUUigiSGVsdmV0aWNhIiksIDIwLCAmbWF0cml4KSkuYXV0b3JlbGVh
c2UoKTsKIH0KIAogY29uc3RleHByIENHRmxvYXQgaG9yaXpvbnRhbE1hcmdpbiA9IDE1OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9tYWMvU3RyaW5nVXRpbGl0aWVzLm1tIGIv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9tYWMvU3RyaW5nVXRpbGl0aWVzLm1tCmluZGV4IDY4NGZk
ODg3OTc2NTNmNDhjYjM2YzQ1ZGIyMDgxN2Y0YzJhZTg0M2IuLjZlMmVlNmUzYjMwYjZmZDRjZjkw
NDJiNDliZGJlNWRmNzJjMTA3MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
bWFjL1N0cmluZ1V0aWxpdGllcy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL21hYy9T
dHJpbmdVdGlsaXRpZXMubW0KQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAK
IE5TU3RyaW5nICpuc1N0cmluZ0Zyb21XZWJDb3JlU3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyaW5n
KQogewotICAgIHJldHVybiBzdHJpbmcuaXNFbXB0eSgpID8gQCIiIDogQ0ZCcmlkZ2luZ1JlbGVh
c2UoV0tTdHJpbmdDb3B5Q0ZTdHJpbmcoMCwgdG9BUEkoc3RyaW5nLmltcGwoKSkpKTsKKyAgICBy
ZXR1cm4gc3RyaW5nLmlzRW1wdHkoKSA/IEAiIiA6IGFkb3B0Q0YoV0tTdHJpbmdDb3B5Q0ZTdHJp
bmcoMCwgdG9BUEkoc3RyaW5nLmltcGwoKSkpKS5icmlkZ2luZ0F1dG9yZWxlYXNlKCk7CiB9CiAK
ICNpZiBFTkFCTEUoVEVMRVBIT05FX05VTUJFUl9ERVRFQ1RJT04pICYmIFBMQVRGT1JNKE1BQykK
QEAgLTY1LDExICs2NSwxMSBAQCBOU1N0cmluZyAqZm9ybWF0dGVkUGhvbmVOdW1iZXJTdHJpbmco
TlNTdHJpbmcgKm9yaWdpbmFsUGhvbmVOdW1iZXIpCiAgICAgaWYgKCFwaG9uZU51bWJlcikKICAg
ICAgICAgcmV0dXJuIG9yaWdpbmFsUGhvbmVOdW1iZXI7CiAKLSAgICBDRlN0cmluZ1JlZiBwaG9u
ZU51bWJlclN0cmluZyA9IENGUGhvbmVOdW1iZXJDb3B5Rm9ybWF0dGVkUmVwcmVzZW50YXRpb24o
cGhvbmVOdW1iZXIuZ2V0KCkpOworICAgIGF1dG8gcGhvbmVOdW1iZXJTdHJpbmcgPSBhZG9wdENG
KENGUGhvbmVOdW1iZXJDb3B5Rm9ybWF0dGVkUmVwcmVzZW50YXRpb24ocGhvbmVOdW1iZXIuZ2V0
KCkpKTsKICAgICBpZiAoIXBob25lTnVtYmVyU3RyaW5nKQotICAgICAgICBwaG9uZU51bWJlclN0
cmluZyA9IENGUGhvbmVOdW1iZXJDb3B5VW5mb3JtYXR0ZWRSZXByZXNlbnRhdGlvbihwaG9uZU51
bWJlci5nZXQoKSk7CisgICAgICAgIHBob25lTnVtYmVyU3RyaW5nID0gYWRvcHRDRihDRlBob25l
TnVtYmVyQ29weVVuZm9ybWF0dGVkUmVwcmVzZW50YXRpb24ocGhvbmVOdW1iZXIuZ2V0KCkpKTsK
IAotICAgIHJldHVybiBDRkJyaWRnaW5nUmVsZWFzZShwaG9uZU51bWJlclN0cmluZyk7CisgICAg
cmV0dXJuIHBob25lTnVtYmVyU3RyaW5nLmJyaWRnaW5nQXV0b3JlbGVhc2UoKTsKIH0KIAogI2Vs
c2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9tYWMvUGx1Z2luUHJv
Y2Vzc01hYy5tbSBiL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9tYWMvUGx1Z2luUHJvY2Vz
c01hYy5tbQppbmRleCAzMWU5Y2Y5MmYwMmVlMGNjZjEwN2FmZmU1NmMwNTM0OGZiYzVjNGYwLi5j
ZmE2NmE0ZTJmMjYxMzdiM2M5ZjcyNTdmNjU5M2Y0OGYxNDFhNDk3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvbWFjL1BsdWdpblByb2Nlc3NNYWMubW0KKysrIGIvU291
cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL21hYy9QbHVnaW5Qcm9jZXNzTWFjLm1tCkBAIC0zMTEs
MjAgKzMxMSwyMCBAQCBzdGF0aWMgdm9pZCBpbml0aWFsaXplQ29jb2FPdmVycmlkZXMoKQogCiAg
ICAgTlNOb3RpZmljYXRpb25DZW50ZXIgKmRlZmF1bHRDZW50ZXIgPSBbTlNOb3RpZmljYXRpb25D
ZW50ZXIgZGVmYXVsdENlbnRlcl07CiAKKyAgICAvLyBXZSBsZWFrIHRoZSB0d28gb2JzZXJ2ZXJz
IHNvIHRoYXQgdGhleSBvYnNlcnZlIG5vdGlmaWNhdGlvbnMgZm9yIHRoZSBsaWZldGltZSBvZiB0
aGUgcHJvY2Vzcy4KICAgICAvLyBUcmFjayB3aGVuIGFueSBDb2NvYSB3aW5kb3cgaXMgYWJvdXQg
dG8gYmUgYmUgc2hvd24uCi0gICAgaWQgb3JkZXJPblNjcmVlbk9ic2VydmVyID0gW2RlZmF1bHRD
ZW50ZXIgYWRkT2JzZXJ2ZXJGb3JOYW1lOk5TV2luZG93V2lsbE9yZGVyT25TY3JlZW5Ob3RpZmlj
YXRpb24KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBvYmplY3Q6bmlsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHF1ZXVlOm5pbAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2luZ0Jsb2NrOl4oTlNOb3RpZmlj
YXRpb24gKm5vdGlmaWNhdGlvbikgeyBmdWxsc2NyZWVuV2luZG93VHJhY2tlcigpLndpbmRvd1No
b3duKFtub3RpZmljYXRpb24gb2JqZWN0XSk7IH1dOworICAgIGlkIG9yZGVyT25TY3JlZW5PYnNl
cnZlciA9IHJldGFpblB0cihbZGVmYXVsdENlbnRlciBhZGRPYnNlcnZlckZvck5hbWU6TlNXaW5k
b3dXaWxsT3JkZXJPblNjcmVlbk5vdGlmaWNhdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYmplY3Q6bmlsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBxdWV1ZTpuaWwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2luZ0Jsb2NrOl4oTlNOb3RpZmljYXRpb24g
Km5vdGlmaWNhdGlvbikgeyBmdWxsc2NyZWVuV2luZG93VHJhY2tlcigpLndpbmRvd1Nob3duKFtu
b3RpZmljYXRpb24gb2JqZWN0XSk7IH1dKS5sZWFrUmVmKCk7CisgICAgVU5VU0VEX1BBUkFNKG9y
ZGVyT25TY3JlZW5PYnNlcnZlcik7CiAgICAgLy8gVHJhY2sgd2hlbiBhbnkgQ29jb2Egd2luZG93
IGlzIGFib3V0IHRvIGJlIGhpZGRlbi4KLSAgICBpZCBvcmRlck9mZlNjcmVlbk9ic2VydmVyID0g
W2RlZmF1bHRDZW50ZXIgYWRkT2JzZXJ2ZXJGb3JOYW1lOk5TV2luZG93V2lsbE9yZGVyT2ZmU2Ny
ZWVuTm90aWZpY2F0aW9uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG9iamVjdDpuaWwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1ZXVlOm5pbAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzaW5nQmxvY2s6XihO
U05vdGlmaWNhdGlvbiAqbm90aWZpY2F0aW9uKSB7IGZ1bGxzY3JlZW5XaW5kb3dUcmFja2VyKCku
d2luZG93SGlkZGVuKFtub3RpZmljYXRpb24gb2JqZWN0XSk7IH1dOwotCi0gICAgLy8gTGVhayB0
aGUgdHdvIG9ic2VydmVycyBzbyB0aGF0IHRoZXkgb2JzZXJ2ZSBub3RpZmljYXRpb25zIGZvciB0
aGUgbGlmZXRpbWUgb2YgdGhlIHByb2Nlc3MuCi0gICAgQ0ZSZXRhaW4oKF9fYnJpZGdlIENGVHlw
ZVJlZilvcmRlck9uU2NyZWVuT2JzZXJ2ZXIpOwotICAgIENGUmV0YWluKChfX2JyaWRnZSBDRlR5
cGVSZWYpb3JkZXJPZmZTY3JlZW5PYnNlcnZlcik7CisgICAgaWQgb3JkZXJPZmZTY3JlZW5PYnNl
cnZlciA9IHJldGFpblB0cihbZGVmYXVsdENlbnRlciBhZGRPYnNlcnZlckZvck5hbWU6TlNXaW5k
b3dXaWxsT3JkZXJPZmZTY3JlZW5Ob3RpZmljYXRpb24KKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9iamVjdDpuaWwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBxdWV1ZTpuaWwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNpbmdCbG9jazpeKE5TTm90aWZpY2F0
aW9uICpub3RpZmljYXRpb24pIHsgZnVsbHNjcmVlbldpbmRvd1RyYWNrZXIoKS53aW5kb3dIaWRk
ZW4oW25vdGlmaWNhdGlvbiBvYmplY3RdKTsgfV0pLmxlYWtSZWYoKTsKKyAgICBVTlVTRURfUEFS
QU0ob3JkZXJPZmZTY3JlZW5PYnNlcnZlcik7CisKIH0KIAogdm9pZCBQbHVnaW5Qcm9jZXNzOjpz
ZXRNb2RhbFdpbmRvd0lzU2hvd2luZyhib29sIG1vZGFsV2luZG93SXNTaG93aW5nKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL1Bhc3RlYm9hcmRUeXBlcy5tbSBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL21hYy9QYXN0ZWJvYXJkVHlwZXMubW0KaW5kZXggNTNmOThjMTM3NGY5
NGQ1N2IyNmU0NmE2ZGIyNmI4YWQyNGU3OTc1ZS4uZWQ0YzdiOWI4ODE5NmYyYTlhYTBjYTYyMzg0
ODEwNGM4OTg4MzEzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL1Bhc3Rl
Ym9hcmRUeXBlcy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvUGFzdGVib2FyZFR5
cGVzLm1tCkBAIC0zNyw0NiArMzcsNDAgQEAgTlNTdHJpbmcgKiBjb25zdCBQYXN0ZWJvYXJkVHlw
ZXM6OldlYlVSTHNXaXRoVGl0bGVzUGJvYXJkVHlwZSA9IEAiV2ViVVJMc1dpdGhUaXQKIE5TU3Ry
aW5nICogY29uc3QgUGFzdGVib2FyZFR5cGVzOjpXZWJVUkxQYm9hcmRUeXBlID0gQCJwdWJsaWMu
dXJsIjsKIE5TU3RyaW5nICogY29uc3QgUGFzdGVib2FyZFR5cGVzOjpXZWJVUkxOYW1lUGJvYXJk
VHlwZSA9IEAicHVibGljLnVybC1uYW1lIjsKIE5TU3RyaW5nICogY29uc3QgUGFzdGVib2FyZFR5
cGVzOjpXZWJEdW1teVBib2FyZFR5cGUgPSBAIkFwcGxlIFdlYktpdCBkdW1teSBwYXN0ZWJvYXJk
IHR5cGUiOwotCi1zdGF0aWMgaW5saW5lIE5TQXJyYXkgKnJldGFpbihOU0FycmF5ICphcnJheSkK
LXsKLSAgICBDRlJldGFpbihhcnJheSk7Ci0gICAgcmV0dXJuIGFycmF5OwotfQogICAgIAogTlNB
cnJheSogUGFzdGVib2FyZFR5cGVzOjpmb3JFZGl0aW5nKCkKIHsKIEFMTE9XX0RFUFJFQ0FURURf
REVDTEFSQVRJT05TX0JFR0lOIAotICAgIHN0YXRpYyBOU0FycmF5ICp0eXBlcyA9IHJldGFpbihA
W1dlYkFyY2hpdmVQYm9hcmRUeXBlLCAoX19icmlkZ2UgTlNTdHJpbmcgKilrVVRUeXBlV2ViQXJj
aGl2ZSwgV2ViQ29yZTo6bGVnYWN5SFRNTFBhc3RlYm9hcmRUeXBlKCksIFdlYkNvcmU6OmxlZ2Fj
eUZpbGVuYW1lc1Bhc3RlYm9hcmRUeXBlKCksIFdlYkNvcmU6OmxlZ2FjeVRJRkZQYXN0ZWJvYXJk
VHlwZSgpLCBXZWJDb3JlOjpsZWdhY3lQREZQYXN0ZWJvYXJkVHlwZSgpLAotICAgICAgICBXZWJD
b3JlOjpsZWdhY3lVUkxQYXN0ZWJvYXJkVHlwZSgpLCBXZWJDb3JlOjpsZWdhY3lSVEZEUGFzdGVi
b2FyZFR5cGUoKSwgV2ViQ29yZTo6bGVnYWN5UlRGUGFzdGVib2FyZFR5cGUoKSwgV2ViQ29yZTo6
bGVnYWN5U3RyaW5nUGFzdGVib2FyZFR5cGUoKSwgV2ViQ29yZTo6bGVnYWN5Q29sb3JQYXN0ZWJv
YXJkVHlwZSgpLCAoX19icmlkZ2UgTlNTdHJpbmcgKilrVVRUeXBlUE5HXSk7CisgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxOU0FycmF5Pj4gdHlwZXMgPSBAW1dlYkFyY2hpdmVQ
Ym9hcmRUeXBlLCAoX19icmlkZ2UgTlNTdHJpbmcgKilrVVRUeXBlV2ViQXJjaGl2ZSwgV2ViQ29y
ZTo6bGVnYWN5SFRNTFBhc3RlYm9hcmRUeXBlKCksIFdlYkNvcmU6OmxlZ2FjeUZpbGVuYW1lc1Bh
c3RlYm9hcmRUeXBlKCksIFdlYkNvcmU6OmxlZ2FjeVRJRkZQYXN0ZWJvYXJkVHlwZSgpLCBXZWJD
b3JlOjpsZWdhY3lQREZQYXN0ZWJvYXJkVHlwZSgpLAorICAgICAgICBXZWJDb3JlOjpsZWdhY3lV
UkxQYXN0ZWJvYXJkVHlwZSgpLCBXZWJDb3JlOjpsZWdhY3lSVEZEUGFzdGVib2FyZFR5cGUoKSwg
V2ViQ29yZTo6bGVnYWN5UlRGUGFzdGVib2FyZFR5cGUoKSwgV2ViQ29yZTo6bGVnYWN5U3RyaW5n
UGFzdGVib2FyZFR5cGUoKSwgV2ViQ29yZTo6bGVnYWN5Q29sb3JQYXN0ZWJvYXJkVHlwZSgpLCAo
X19icmlkZ2UgTlNTdHJpbmcgKilrVVRUeXBlUE5HXTsKIEFMTE9XX0RFUFJFQ0FURURfREVDTEFS
QVRJT05TX0VORAotICAgIHJldHVybiB0eXBlczsKKyAgICByZXR1cm4gdHlwZXMuZ2V0KCkuZ2V0
KCk7CiB9CiAKIE5TQXJyYXkqIFBhc3RlYm9hcmRUeXBlczo6Zm9yVVJMKCkKIHsKLSAgICBzdGF0
aWMgTlNBcnJheSAqdHlwZXMgPSByZXRhaW4oQFtXZWJVUkxzV2l0aFRpdGxlc1Bib2FyZFR5cGUs
IFdlYkNvcmU6OmxlZ2FjeVVSTFBhc3RlYm9hcmRUeXBlKCksIFdlYlVSTFBib2FyZFR5cGUsICBX
ZWJVUkxOYW1lUGJvYXJkVHlwZSwgV2ViQ29yZTo6bGVnYWN5U3RyaW5nUGFzdGVib2FyZFR5cGUo
KSwgV2ViQ29yZTo6bGVnYWN5RmlsZW5hbWVzUGFzdGVib2FyZFR5cGUoKSwgV2ViQ29yZTo6bGVn
YWN5RmlsZXNQcm9taXNlUGFzdGVib2FyZFR5cGUoKV0pOwotICAgIHJldHVybiB0eXBlczsKKyAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPE5TQXJyYXk+PiB0eXBlcyA9IEBbV2Vi
VVJMc1dpdGhUaXRsZXNQYm9hcmRUeXBlLCBXZWJDb3JlOjpsZWdhY3lVUkxQYXN0ZWJvYXJkVHlw
ZSgpLCBXZWJVUkxQYm9hcmRUeXBlLCAgV2ViVVJMTmFtZVBib2FyZFR5cGUsIFdlYkNvcmU6Omxl
Z2FjeVN0cmluZ1Bhc3RlYm9hcmRUeXBlKCksIFdlYkNvcmU6OmxlZ2FjeUZpbGVuYW1lc1Bhc3Rl
Ym9hcmRUeXBlKCksIFdlYkNvcmU6OmxlZ2FjeUZpbGVzUHJvbWlzZVBhc3RlYm9hcmRUeXBlKCld
OworICAgIHJldHVybiB0eXBlcy5nZXQoKS5nZXQoKTsKIH0KIAogTlNBcnJheSogUGFzdGVib2Fy
ZFR5cGVzOjpmb3JJbWFnZXMoKQogewotICAgIHN0YXRpYyBOU0FycmF5ICp0eXBlcyA9IHJldGFp
bihAW1dlYkNvcmU6OmxlZ2FjeVRJRkZQYXN0ZWJvYXJkVHlwZSgpLCBXZWJVUkxzV2l0aFRpdGxl
c1Bib2FyZFR5cGUsIFdlYkNvcmU6OmxlZ2FjeVVSTFBhc3RlYm9hcmRUeXBlKCksIFdlYlVSTFBi
b2FyZFR5cGUsIFdlYlVSTE5hbWVQYm9hcmRUeXBlLCBXZWJDb3JlOjpsZWdhY3lTdHJpbmdQYXN0
ZWJvYXJkVHlwZSgpXSk7Ci0gICAgcmV0dXJuIHR5cGVzOworICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxSZXRhaW5QdHI8TlNBcnJheT4+IHR5cGVzID0gQFtXZWJDb3JlOjpsZWdhY3lUSUZGUGFz
dGVib2FyZFR5cGUoKSwgV2ViVVJMc1dpdGhUaXRsZXNQYm9hcmRUeXBlLCBXZWJDb3JlOjpsZWdh
Y3lVUkxQYXN0ZWJvYXJkVHlwZSgpLCBXZWJVUkxQYm9hcmRUeXBlLCBXZWJVUkxOYW1lUGJvYXJk
VHlwZSwgV2ViQ29yZTo6bGVnYWN5U3RyaW5nUGFzdGVib2FyZFR5cGUoKV07CisgICAgcmV0dXJu
IHR5cGVzLmdldCgpLmdldCgpOwogfQogCiBOU0FycmF5KiBQYXN0ZWJvYXJkVHlwZXM6OmZvcklt
YWdlc1dpdGhBcmNoaXZlKCkKIHsKLSAgICBzdGF0aWMgTlNBcnJheSAqdHlwZXMgPSByZXRhaW4o
QFtXZWJDb3JlOjpsZWdhY3lUSUZGUGFzdGVib2FyZFR5cGUoKSwgV2ViVVJMc1dpdGhUaXRsZXNQ
Ym9hcmRUeXBlLCBXZWJDb3JlOjpsZWdhY3lVUkxQYXN0ZWJvYXJkVHlwZSgpLCBXZWJVUkxQYm9h
cmRUeXBlLCBXZWJVUkxOYW1lUGJvYXJkVHlwZSwgV2ViQ29yZTo6bGVnYWN5U3RyaW5nUGFzdGVi
b2FyZFR5cGUoKSwgV2ViQ29yZTo6bGVnYWN5UlRGRFBhc3RlYm9hcmRUeXBlKCksIFdlYkFyY2hp
dmVQYm9hcmRUeXBlXSk7Ci0gICAgcmV0dXJuIHR5cGVzOworICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxSZXRhaW5QdHI8TlNBcnJheT4+IHR5cGVzID0gQFtXZWJDb3JlOjpsZWdhY3lUSUZGUGFz
dGVib2FyZFR5cGUoKSwgV2ViVVJMc1dpdGhUaXRsZXNQYm9hcmRUeXBlLCBXZWJDb3JlOjpsZWdh
Y3lVUkxQYXN0ZWJvYXJkVHlwZSgpLCBXZWJVUkxQYm9hcmRUeXBlLCBXZWJVUkxOYW1lUGJvYXJk
VHlwZSwgV2ViQ29yZTo6bGVnYWN5U3RyaW5nUGFzdGVib2FyZFR5cGUoKSwgV2ViQ29yZTo6bGVn
YWN5UlRGRFBhc3RlYm9hcmRUeXBlKCksIFdlYkFyY2hpdmVQYm9hcmRUeXBlXTsKKyAgICByZXR1
cm4gdHlwZXMuZ2V0KCkuZ2V0KCk7CiB9CiAKIE5TQXJyYXkqIFBhc3RlYm9hcmRUeXBlczo6Zm9y
U2VsZWN0aW9uKCkKIHsKIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOIAotICAg
IHN0YXRpYyBOU0FycmF5ICp0eXBlcyA9IHJldGFpbihAW1dlYkFyY2hpdmVQYm9hcmRUeXBlLCAo
X19icmlkZ2UgTlNTdHJpbmcgKilrVVRUeXBlV2ViQXJjaGl2ZSwgV2ViQ29yZTo6bGVnYWN5UlRG
RFBhc3RlYm9hcmRUeXBlKCksIFdlYkNvcmU6OmxlZ2FjeVJURlBhc3RlYm9hcmRUeXBlKCksIFdl
YkNvcmU6OmxlZ2FjeVN0cmluZ1Bhc3RlYm9hcmRUeXBlKCldKTsKKyAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8UmV0YWluUHRyPE5TQXJyYXk+PiB0eXBlcyA9IEBbV2ViQXJjaGl2ZVBib2FyZFR5
cGUsIChfX2JyaWRnZSBOU1N0cmluZyAqKWtVVFR5cGVXZWJBcmNoaXZlLCBXZWJDb3JlOjpsZWdh
Y3lSVEZEUGFzdGVib2FyZFR5cGUoKSwgV2ViQ29yZTo6bGVnYWN5UlRGUGFzdGVib2FyZFR5cGUo
KSwgV2ViQ29yZTo6bGVnYWN5U3RyaW5nUGFzdGVib2FyZFR5cGUoKV07CiBBTExPV19ERVBSRUNB
VEVEX0RFQ0xBUkFUSU9OU19FTkQKLSAgICByZXR1cm4gdHlwZXM7CisgICAgcmV0dXJuIHR5cGVz
LmdldCgpLmdldCgpOwogfQogICAgIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbSBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCmluZGV4IGE1YzZiYmMwY2NmZTRm
YjJlYjMwOTc3N2NlOGY3ZTdjYTZiYjM5OWMuLmU2ZmI3ODEwZjk2NTc4ZWUyM2YxZjliYTIzMWFh
MTQzNjk5OWQ4OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dl
YlZpZXdJbXBsLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJ
bXBsLm1tCkBAIC0yMjU5LDggKzIyNTksNyBAQCBib29sIFdlYlZpZXdJbXBsOjphY2NlcHRzRmly
c3RNb3VzZShOU0V2ZW50ICpldmVudCkKICAgICAvLyBUaGVyZSdzIGEgY2hhbmNlIHRoYXQgcmVz
cG9uZGluZyB0byB0aGlzIGV2ZW50IHdpbGwgcnVuIGEgbmVzdGVkIGV2ZW50IGxvb3AsIGFuZAog
ICAgIC8vIGZldGNoaW5nIGEgbmV3IGV2ZW50IG1pZ2h0IHJlbGVhc2UgdGhlIG9sZCBvbmUuIFJl
dGFpbmluZyBhbmQgdGhlbiBhdXRvcmVsZWFzaW5nCiAgICAgLy8gdGhlIGN1cnJlbnQgZXZlbnQg
cHJldmVudHMgdGhhdCBmcm9tIGNhdXNpbmcgYSBwcm9ibGVtIGluc2lkZSBXZWJLaXQgb3IgQXBw
S2l0IGNvZGUuCi0gICAgQ0ZSZXRhaW4oKF9fYnJpZGdlIENGVHlwZVJlZilldmVudCk7Ci0gICAg
Q0ZBdXRvcmVsZWFzZSgoX19icmlkZ2UgQ0ZUeXBlUmVmKWV2ZW50KTsKKyAgICByZXRhaW5QdHIo
ZXZlbnQpLmF1dG9yZWxlYXNlKCk7CiAKICAgICBpZiAoIVttX3ZpZXcgaGl0VGVzdDpldmVudC5s
b2NhdGlvbkluV2luZG93XSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjI3OSw4ICsyMjc4
LDcgQEAgYm9vbCBXZWJWaWV3SW1wbDo6c2hvdWxkRGVsYXlXaW5kb3dPcmRlcmluZ0ZvckV2ZW50
KE5TRXZlbnQgKmV2ZW50KQogICAgIC8vIFRoZXJlJ3MgYSBjaGFuY2UgdGhhdCByZXNwb25kaW5n
IHRvIHRoaXMgZXZlbnQgd2lsbCBydW4gYSBuZXN0ZWQgZXZlbnQgbG9vcCwgYW5kCiAgICAgLy8g
ZmV0Y2hpbmcgYSBuZXcgZXZlbnQgbWlnaHQgcmVsZWFzZSB0aGUgb2xkIG9uZS4gUmV0YWluaW5n
IGFuZCB0aGVuIGF1dG9yZWxlYXNpbmcKICAgICAvLyB0aGUgY3VycmVudCBldmVudCBwcmV2ZW50
cyB0aGF0IGZyb20gY2F1c2luZyBhIHByb2JsZW0gaW5zaWRlIFdlYktpdCBvciBBcHBLaXQgY29k
ZS4KLSAgICBDRlJldGFpbigoX19icmlkZ2UgQ0ZUeXBlUmVmKWV2ZW50KTsKLSAgICBDRkF1dG9y
ZWxlYXNlKChfX2JyaWRnZSBDRlR5cGVSZWYpZXZlbnQpOworICAgIHJldGFpblB0cihldmVudCku
YXV0b3JlbGVhc2UoKTsKIAogICAgIGlmICghW21fdmlldyBoaXRUZXN0OmV2ZW50LmxvY2F0aW9u
SW5XaW5kb3ddKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC00ODExLDI0ICs0ODA5LDIwIEBA
IHZvaWQgV2ViVmlld0ltcGw6OmRvbmVXaXRoS2V5RXZlbnQoTlNFdmVudCAqZXZlbnQsIGJvb2wg
ZXZlbnRXYXNIYW5kbGVkKQogCiBOU0FycmF5ICpXZWJWaWV3SW1wbDo6dmFsaWRBdHRyaWJ1dGVz
Rm9yTWFya2VkVGV4dCgpCiB7Ci0gICAgc3RhdGljIE5TQXJyYXkgKnZhbGlkQXR0cmlidXRlczsK
LSAgICBpZiAoIXZhbGlkQXR0cmlidXRlcykgewotICAgICAgICB2YWxpZEF0dHJpYnV0ZXMgPSBA
WwotICAgICAgICAgICAgTlNVbmRlcmxpbmVTdHlsZUF0dHJpYnV0ZU5hbWUsCi0gICAgICAgICAg
ICBOU1VuZGVybGluZUNvbG9yQXR0cmlidXRlTmFtZSwKLSAgICAgICAgICAgIE5TTWFya2VkQ2xh
dXNlU2VnbWVudEF0dHJpYnV0ZU5hbWUsCi0gICAgICAgICAgICBOU1RleHRBbHRlcm5hdGl2ZXNB
dHRyaWJ1dGVOYW1lLAotICAgICAgICAgICAgTlNUZXh0SW5zZXJ0aW9uVW5kb2FibGVBdHRyaWJ1
dGVOYW1lLAotICAgICAgICBdOwotICAgICAgICAvLyBOU1RleHQgYWxzbyBzdXBwb3J0cyB0aGUg
Zm9sbG93aW5nIGF0dHJpYnV0ZXMsIGJ1dCBpdCdzCi0gICAgICAgIC8vIGhhcmQgdG8gdGVsbCB3
aGljaCBhcmUgcmVhbGx5IHJlcXVpcmVkIGZvciB0ZXh0IGlucHV0IHRvCi0gICAgICAgIC8vIHdv
cmsgd2VsbDsgSSBoYXZlIG5vdCBzZWVuIGFueSBpbnB1dCBtZXRob2QgbWFrZSB1c2Ugb2YgdGhl
bSB5ZXQuCi0gICAgICAgIC8vICAgICBOU0ZvbnRBdHRyaWJ1dGVOYW1lLCBOU0ZvcmVncm91bmRD
b2xvckF0dHJpYnV0ZU5hbWUsCi0gICAgICAgIC8vICAgICBOU0JhY2tncm91bmRDb2xvckF0dHJp
YnV0ZU5hbWUsIE5TTGFuZ3VhZ2VBdHRyaWJ1dGVOYW1lLgotICAgICAgICBDRlJldGFpbih2YWxp
ZEF0dHJpYnV0ZXMpOwotICAgIH0KKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRy
PE5TQXJyYXk+PiB2YWxpZEF0dHJpYnV0ZXMgPSBAWworICAgICAgICBOU1VuZGVybGluZVN0eWxl
QXR0cmlidXRlTmFtZSwKKyAgICAgICAgTlNVbmRlcmxpbmVDb2xvckF0dHJpYnV0ZU5hbWUsCisg
ICAgICAgIE5TTWFya2VkQ2xhdXNlU2VnbWVudEF0dHJpYnV0ZU5hbWUsCisgICAgICAgIE5TVGV4
dEFsdGVybmF0aXZlc0F0dHJpYnV0ZU5hbWUsCisgICAgICAgIE5TVGV4dEluc2VydGlvblVuZG9h
YmxlQXR0cmlidXRlTmFtZSwKKyAgICBdOworICAgIC8vIE5TVGV4dCBhbHNvIHN1cHBvcnRzIHRo
ZSBmb2xsb3dpbmcgYXR0cmlidXRlcywgYnV0IGl0J3MKKyAgICAvLyBoYXJkIHRvIHRlbGwgd2hp
Y2ggYXJlIHJlYWxseSByZXF1aXJlZCBmb3IgdGV4dCBpbnB1dCB0bworICAgIC8vIHdvcmsgd2Vs
bDsgSSBoYXZlIG5vdCBzZWVuIGFueSBpbnB1dCBtZXRob2QgbWFrZSB1c2Ugb2YgdGhlbSB5ZXQu
CisgICAgLy8gICAgIE5TRm9udEF0dHJpYnV0ZU5hbWUsIE5TRm9yZWdyb3VuZENvbG9yQXR0cmli
dXRlTmFtZSwKKyAgICAvLyAgICAgTlNCYWNrZ3JvdW5kQ29sb3JBdHRyaWJ1dGVOYW1lLCBOU0xh
bmd1YWdlQXR0cmlidXRlTmFtZS4KICAgICBMT0coVGV4dElucHV0LCAidmFsaWRBdHRyaWJ1dGVz
Rm9yTWFya2VkVGV4dCAtPiAoLi4uKSIpOwotICAgIHJldHVybiB2YWxpZEF0dHJpYnV0ZXM7Cisg
ICAgcmV0dXJuIHZhbGlkQXR0cmlidXRlcy5nZXQoKS5nZXQoKTsKIH0KIAogc3RhdGljIFZlY3Rv
cjxXZWJDb3JlOjpDb21wb3NpdGlvblVuZGVybGluZT4gZXh0cmFjdFVuZGVybGluZXMoTlNBdHRy
aWJ1dGVkU3RyaW5nICpzdHJpbmcpCkBAIC01MjAyLDggKzUxOTYsNyBAQCBib29sIFdlYlZpZXdJ
bXBsOjpwZXJmb3JtS2V5RXF1aXZhbGVudChOU0V2ZW50ICpldmVudCkKICAgICAvLyBUaGVyZSdz
IGEgY2hhbmNlIHRoYXQgcmVzcG9uZGluZyB0byB0aGlzIGV2ZW50IHdpbGwgcnVuIGEgbmVzdGVk
IGV2ZW50IGxvb3AsIGFuZAogICAgIC8vIGZldGNoaW5nIGEgbmV3IGV2ZW50IG1pZ2h0IHJlbGVh
c2UgdGhlIG9sZCBvbmUuIFJldGFpbmluZyBhbmQgdGhlbiBhdXRvcmVsZWFzaW5nCiAgICAgLy8g
dGhlIGN1cnJlbnQgZXZlbnQgcHJldmVudHMgdGhhdCBmcm9tIGNhdXNpbmcgYSBwcm9ibGVtIGlu
c2lkZSBXZWJLaXQgb3IgQXBwS2l0IGNvZGUuCi0gICAgQ0ZSZXRhaW4oKF9fYnJpZGdlIENGVHlw
ZVJlZilldmVudCk7Ci0gICAgQ0ZBdXRvcmVsZWFzZSgoX19icmlkZ2UgQ0ZUeXBlUmVmKWV2ZW50
KTsKKyAgICByZXRhaW5QdHIoZXZlbnQpLmF1dG9yZWxlYXNlKCk7CiAKICAgICAvLyBXZSBnZXQg
RXNjIGtleSBoZXJlIGFmdGVyIHByb2Nlc3NpbmcgZWl0aGVyIEVzYyBvciBDbWQrcGVyaW9kLiBU
aGUgZm9ybWVyIHN0YXJ0cyBhcyBhIGtleURvd24sIGFuZCB0aGUgbGF0dGVyIHN0YXJ0cyBhcyBh
IGtleSBlcXVpdmFsZW50LAogICAgIC8vIGJ1dCBib3RoIGdldCB0cmFuc2Zvcm1lZCB0byBhIGNh
bmNlbE9wZXJhdGlvbjogY29tbWFuZCwgZXhlY3V0aW5nIHdoaWNoIHBhc3NlcyBhbiBFc2Mga2V5
IGV2ZW50IHRvIC1wZXJmb3JtS2V5RXF1aXZhbGVudDouCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvaW9zL1dLSW5zcGVjdG9ySGlnaGxpZ2h0Vmlldy5tbSBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9pb3MvV0tJbnNwZWN0b3JIaWdobGln
aHRWaWV3Lm1tCmluZGV4IDQ0MTI0NDM3YzI0MzQyNWMzZWRkYjk5Mzc2Y2Q2MjI0ZjJmYzE2YTMu
LmIxYjBiZTM0YmYzMzBjMGVlNTU1ZWQ4ZGM3NDFmYzY0MmIxMDlhZjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9pb3MvV0tJbnNwZWN0b3JIaWdobGlnaHRW
aWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9pb3MvV0tJbnNw
ZWN0b3JIaWdobGlnaHRWaWV3Lm1tCkBAIC0xODMsMjggKzE4MywyNiBAQCBzdGF0aWMgdm9pZCBs
YXllclBhdGhXaXRoSG9sZShDQVNoYXBlTGF5ZXIgKmxheWVyLCBjb25zdCBXZWJDb3JlOjpGbG9h
dFF1YWQmIG91dAogICAgICAgICBpbm5lckhvbGUgPSBxdWFkSW50ZXJzZWN0aW9uKG91dGVyUXVh
ZCwgaG9sZVF1YWQpOwogCiAgICAgLy8gQ2xvY2t3aXNlIGluc2lkZSByZWN0IChob2xlKSwgQ291
bnRlci1DbG9ja3dpc2Ugb3V0c2lkZSByZWN0IChmaWxsKS4KLSAgICBDR011dGFibGVQYXRoUmVm
IHBhdGggPSBDR1BhdGhDcmVhdGVNdXRhYmxlKCk7Ci0gICAgQ0dQYXRoTW92ZVRvUG9pbnQocGF0
aCwgMCwgaW5uZXJIb2xlLnAxKCkueCgpLCBpbm5lckhvbGUucDEoKS55KCkpOwotICAgIENHUGF0
aEFkZExpbmVUb1BvaW50KHBhdGgsIDAsIGlubmVySG9sZS5wMigpLngoKSwgaW5uZXJIb2xlLnAy
KCkueSgpKTsKLSAgICBDR1BhdGhBZGRMaW5lVG9Qb2ludChwYXRoLCAwLCBpbm5lckhvbGUucDMo
KS54KCksIGlubmVySG9sZS5wMygpLnkoKSk7Ci0gICAgQ0dQYXRoQWRkTGluZVRvUG9pbnQocGF0
aCwgMCwgaW5uZXJIb2xlLnA0KCkueCgpLCBpbm5lckhvbGUucDQoKS55KCkpOwotICAgIENHUGF0
aE1vdmVUb1BvaW50KHBhdGgsIDAsIG91dGVyUXVhZC5wMSgpLngoKSwgb3V0ZXJRdWFkLnAxKCku
eSgpKTsKLSAgICBDR1BhdGhBZGRMaW5lVG9Qb2ludChwYXRoLCAwLCBvdXRlclF1YWQucDQoKS54
KCksIG91dGVyUXVhZC5wNCgpLnkoKSk7Ci0gICAgQ0dQYXRoQWRkTGluZVRvUG9pbnQocGF0aCwg
MCwgb3V0ZXJRdWFkLnAzKCkueCgpLCBvdXRlclF1YWQucDMoKS55KCkpOwotICAgIENHUGF0aEFk
ZExpbmVUb1BvaW50KHBhdGgsIDAsIG91dGVyUXVhZC5wMigpLngoKSwgb3V0ZXJRdWFkLnAyKCku
eSgpKTsKLSAgICBsYXllci5wYXRoID0gcGF0aDsKLSAgICBDR1BhdGhSZWxlYXNlKHBhdGgpOwor
ICAgIGF1dG8gcGF0aCA9IGFkb3B0Q0YoQ0dQYXRoQ3JlYXRlTXV0YWJsZSgpKTsKKyAgICBDR1Bh
dGhNb3ZlVG9Qb2ludChwYXRoLmdldCgpLCAwLCBpbm5lckhvbGUucDEoKS54KCksIGlubmVySG9s
ZS5wMSgpLnkoKSk7CisgICAgQ0dQYXRoQWRkTGluZVRvUG9pbnQocGF0aC5nZXQoKSwgMCwgaW5u
ZXJIb2xlLnAyKCkueCgpLCBpbm5lckhvbGUucDIoKS55KCkpOworICAgIENHUGF0aEFkZExpbmVU
b1BvaW50KHBhdGguZ2V0KCksIDAsIGlubmVySG9sZS5wMygpLngoKSwgaW5uZXJIb2xlLnAzKCku
eSgpKTsKKyAgICBDR1BhdGhBZGRMaW5lVG9Qb2ludChwYXRoLmdldCgpLCAwLCBpbm5lckhvbGUu
cDQoKS54KCksIGlubmVySG9sZS5wNCgpLnkoKSk7CisgICAgQ0dQYXRoTW92ZVRvUG9pbnQocGF0
aC5nZXQoKSwgMCwgb3V0ZXJRdWFkLnAxKCkueCgpLCBvdXRlclF1YWQucDEoKS55KCkpOworICAg
IENHUGF0aEFkZExpbmVUb1BvaW50KHBhdGguZ2V0KCksIDAsIG91dGVyUXVhZC5wNCgpLngoKSwg
b3V0ZXJRdWFkLnA0KCkueSgpKTsKKyAgICBDR1BhdGhBZGRMaW5lVG9Qb2ludChwYXRoLmdldCgp
LCAwLCBvdXRlclF1YWQucDMoKS54KCksIG91dGVyUXVhZC5wMygpLnkoKSk7CisgICAgQ0dQYXRo
QWRkTGluZVRvUG9pbnQocGF0aC5nZXQoKSwgMCwgb3V0ZXJRdWFkLnAyKCkueCgpLCBvdXRlclF1
YWQucDIoKS55KCkpOworICAgIGxheWVyLnBhdGggPSBwYXRoLmdldCgpOwogfQogCiBzdGF0aWMg
dm9pZCBsYXllclBhdGgoQ0FTaGFwZUxheWVyICpsYXllciwgY29uc3QgV2ViQ29yZTo6RmxvYXRR
dWFkJiBvdXRlclF1YWQpCiB7Ci0gICAgQ0dNdXRhYmxlUGF0aFJlZiBwYXRoID0gQ0dQYXRoQ3Jl
YXRlTXV0YWJsZSgpOwotICAgIENHUGF0aE1vdmVUb1BvaW50KHBhdGgsIDAsIG91dGVyUXVhZC5w
MSgpLngoKSwgb3V0ZXJRdWFkLnAxKCkueSgpKTsKLSAgICBDR1BhdGhBZGRMaW5lVG9Qb2ludChw
YXRoLCAwLCBvdXRlclF1YWQucDQoKS54KCksIG91dGVyUXVhZC5wNCgpLnkoKSk7Ci0gICAgQ0dQ
YXRoQWRkTGluZVRvUG9pbnQocGF0aCwgMCwgb3V0ZXJRdWFkLnAzKCkueCgpLCBvdXRlclF1YWQu
cDMoKS55KCkpOwotICAgIENHUGF0aEFkZExpbmVUb1BvaW50KHBhdGgsIDAsIG91dGVyUXVhZC5w
MigpLngoKSwgb3V0ZXJRdWFkLnAyKCkueSgpKTsKLSAgICBsYXllci5wYXRoID0gcGF0aDsKLSAg
ICBDR1BhdGhSZWxlYXNlKHBhdGgpOworICAgIGF1dG8gcGF0aCA9IGFkb3B0Q0YoQ0dQYXRoQ3Jl
YXRlTXV0YWJsZSgpKTsKKyAgICBDR1BhdGhNb3ZlVG9Qb2ludChwYXRoLmdldCgpLCAwLCBvdXRl
clF1YWQucDEoKS54KCksIG91dGVyUXVhZC5wMSgpLnkoKSk7CisgICAgQ0dQYXRoQWRkTGluZVRv
UG9pbnQocGF0aC5nZXQoKSwgMCwgb3V0ZXJRdWFkLnA0KCkueCgpLCBvdXRlclF1YWQucDQoKS55
KCkpOworICAgIENHUGF0aEFkZExpbmVUb1BvaW50KHBhdGguZ2V0KCksIDAsIG91dGVyUXVhZC5w
MygpLngoKSwgb3V0ZXJRdWFkLnAzKCkueSgpKTsKKyAgICBDR1BhdGhBZGRMaW5lVG9Qb2ludChw
YXRoLmdldCgpLCAwLCBvdXRlclF1YWQucDIoKS54KCksIG91dGVyUXVhZC5wMigpLnkoKSk7Cisg
ICAgbGF5ZXIucGF0aCA9IHBhdGguZ2V0KCk7CiB9CiAKIC0gKHZvaWQpX2xheW91dEZvck5vZGVI
aWdobGlnaHQ6KGNvbnN0IFdlYkNvcmU6Okluc3BlY3Rvck92ZXJsYXk6OkhpZ2hsaWdodCYpaGln
aGxpZ2h0IG9mZnNldDoodW5zaWduZWQpb2Zmc2V0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9fV0tUb3VjaEV2ZW50R2VuZXJhdG9yLm1tIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvX1dLVG91Y2hFdmVudEdlbmVyYXRvci5tbQppbmRleCBlMmM3MTgxMTE0ZjljYzlhOWQx
Mzg5MGI5NzEyNTYwMjNkNmE4MzU4Li4yMTlkYmE1N2VmMGY1MDQ0OTMwNThjNjBjYjRkZWNjZTgy
YWY4NGM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9fV0tUb3VjaEV2ZW50
R2VuZXJhdG9yLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL19XS1RvdWNoRXZlbnRH
ZW5lcmF0b3IubW0KQEAgLTk4LDcgKzk4LDcgQEAgQHByb3BlcnR5IChub25hdG9taWMsIHN0cm9u
ZykgTlNNdXRhYmxlRGljdGlvbmFyeSAqZXZlbnRDYWxsYmFja3M7CiBAZW5kCiAKIEBpbXBsZW1l
bnRhdGlvbiBfV0tUb3VjaEV2ZW50R2VuZXJhdG9yIHsKLSAgICBJT0hJREV2ZW50U3lzdGVtQ2xp
ZW50UmVmIF9pb1N5c3RlbUNsaWVudDsKKyAgICBSZXRhaW5QdHI8SU9ISURFdmVudFN5c3RlbUNs
aWVudFJlZj4gX2lvU3lzdGVtQ2xpZW50OwogICAgIFN5bnRoZXRpY0V2ZW50RGlnaXRpemVySW5m
byBfYWN0aXZlUG9pbnRzW0hJRE1heFRvdWNoQ291bnRdOwogICAgIE5TVUludGVnZXIgX2FjdGl2
ZVBvaW50Q291bnQ7CiB9CkBAIC0xMzEsOSArMTMxLDYgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXQK
IAogLSAodm9pZClkZWFsbG9jCiB7Ci0gIGlmIChfaW9TeXN0ZW1DbGllbnQpCi0gICAgICAgIENG
UmVsZWFzZShfaW9TeXN0ZW1DbGllbnQpOwotCiAgICAgW19ldmVudENhbGxiYWNrcyByZWxlYXNl
XTsKICAgICBbc3VwZXIgZGVhbGxvY107CiB9CkBAIC0yMTAsNyArMjA3LDcgQEAgLSAoSU9ISURF
dmVudFJlZilfY3JlYXRlSU9ISURFdmVudFR5cGU6KEhhbmRFdmVudFR5cGUpZXZlbnRUeXBlCiAt
IChCT09MKV9zZW5kSElERXZlbnQ6KElPSElERXZlbnRSZWYpZXZlbnRSZWYKIHsKICAgICBpZiAo
IV9pb1N5c3RlbUNsaWVudCkKLSAgICAgICAgX2lvU3lzdGVtQ2xpZW50ID0gSU9ISURFdmVudFN5
c3RlbUNsaWVudENyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0KTsKKyAgICAgICAgX2lvU3lzdGVt
Q2xpZW50ID0gYWRvcHRDRihJT0hJREV2ZW50U3lzdGVtQ2xpZW50Q3JlYXRlKGtDRkFsbG9jYXRv
ckRlZmF1bHQpKTsKIAogICAgIGlmIChldmVudFJlZikgewogICAgICAgICBSdW5Mb29wOjptYWlu
KCkuZGlzcGF0Y2goW3N0cm9uZ0V2ZW50ID0gcmV0YWluUHRyKGV2ZW50UmVmKV0gewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Z1bGxzY3JlZW4vV0tGdWxsU2NyZWVu
V2luZG93Q29udHJvbGxlcklPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mdWxs
c2NyZWVuL1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXJJT1MubW0KaW5kZXggMDMzY2VlZmZi
MzQ0YjRjN2FhMzEwZDhjMzc0OWE5MGVmYzQ2YzExMi4uNmFlNDU4YTI2OWY1NTQ0ODk1OWM4NmI3
YTg5ZTBmYTE3ZDdlZDFlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L2Z1bGxzY3JlZW4vV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlcklPUy5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZnVsbHNjcmVlbi9XS0Z1bGxTY3JlZW5XaW5kb3dDb250
cm9sbGVySU9TLm1tCkBAIC0xMDMwLDI4ICsxMDMwLDI4IEBAIC0gKE5TU3RyaW5nICopX0VWT3Jn
YW5pemF0aW9uTmFtZQogICAgIGlmICghdHJ1c3QpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAg
ICBOU0RpY3Rpb25hcnkgKmluZm9EaWN0aW9uYXJ5ID0gQ0ZCcmlkZ2luZ1JlbGVhc2UoU2VjVHJ1
c3RDb3B5SW5mbyh0cnVzdCkpOworICAgIGF1dG8gaW5mb0RpY3Rpb25hcnkgPSBhZG9wdENGKFNl
Y1RydXN0Q29weUluZm8odHJ1c3QpKTsKICAgICAvLyBJZiBTZWNUcnVzdENvcHlJbmZvIHJldHVy
bmVkIE5VTEwgdGhlbiBpdCdzIGxpa2VseSB0aGF0IHRoZSBTZWNUcnVzdFJlZiBoYXMgbm90IGJl
ZW4gZXZhbHVhdGVkCiAgICAgLy8gYW5kIHRoZSBvbmx5IHdheSB0byBnZXQgdGhlIGluZm9ybWF0
aW9uIHdlIG5lZWQgaXMgdG8gY2FsbCBTZWNUcnVzdEV2YWx1YXRlIG91cnNlbHZlcy4KICAgICBp
ZiAoIWluZm9EaWN0aW9uYXJ5KSB7CiAgICAgICAgIGlmICghU2VjVHJ1c3RFdmFsdWF0ZVdpdGhF
cnJvcih0cnVzdCwgbnVsbHB0cikpCiAgICAgICAgICAgICByZXR1cm4gbmlsOwotICAgICAgICBp
bmZvRGljdGlvbmFyeSA9IENGQnJpZGdpbmdSZWxlYXNlKFNlY1RydXN0Q29weUluZm8odHJ1c3Qp
KTsKKyAgICAgICAgaW5mb0RpY3Rpb25hcnkgPSBhZG9wdENGKFNlY1RydXN0Q29weUluZm8odHJ1
c3QpKTsKICAgICAgICAgaWYgKCFpbmZvRGljdGlvbmFyeSkKICAgICAgICAgICAgIHJldHVybiBu
aWw7CiAgICAgfQogCiAgICAgLy8gTWFrZSBzdXJlIHRoYXQgdGhlIEVWIGNlcnRpZmljYXRlIGlz
IHZhbGlkIGFnYWluc3Qgb3VyIGNlcnRpZmljYXRlIGNoYWluLgotICAgIGlkIGhhc0VWID0gW2lu
Zm9EaWN0aW9uYXJ5IG9iamVjdEZvcktleTooX19icmlkZ2UgTlNTdHJpbmcgKilrU2VjVHJ1c3RJ
bmZvRXh0ZW5kZWRWYWxpZGF0aW9uS2V5XTsKKyAgICBpZCBoYXNFViA9IFsoX19icmlkZ2UgTlNE
aWN0aW9uYXJ5ICopaW5mb0RpY3Rpb25hcnkuZ2V0KCkgb2JqZWN0Rm9yS2V5OihfX2JyaWRnZSBO
U1N0cmluZyAqKWtTZWNUcnVzdEluZm9FeHRlbmRlZFZhbGlkYXRpb25LZXldOwogICAgIGlmICgh
W2hhc0VWIGlzS2luZE9mQ2xhc3M6W05TVmFsdWUgY2xhc3NdXSB8fCAhW2hhc0VWIGJvb2xWYWx1
ZV0pCiAgICAgICAgIHJldHVybiBuaWw7CiAKICAgICAvLyBNYWtlIHN1cmUgdGhhdCB3ZSBjb3Vs
ZCBjb250YWN0IHJldm9jYXRpb24gc2VydmVyIGFuZCBpdCBpcyBzdGlsbCB2YWxpZC4KLSAgICBp
ZCBpc05vdFJldm9rZWQgPSBbaW5mb0RpY3Rpb25hcnkgb2JqZWN0Rm9yS2V5OihfX2JyaWRnZSBO
U1N0cmluZyAqKWtTZWNUcnVzdEluZm9SZXZvY2F0aW9uS2V5XTsKKyAgICBpZCBpc05vdFJldm9r
ZWQgPSBbKF9fYnJpZGdlIE5TRGljdGlvbmFyeSAqKWluZm9EaWN0aW9uYXJ5LmdldCgpIG9iamVj
dEZvcktleTooX19icmlkZ2UgTlNTdHJpbmcgKilrU2VjVHJ1c3RJbmZvUmV2b2NhdGlvbktleV07
CiAgICAgaWYgKCFbaXNOb3RSZXZva2VkIGlzS2luZE9mQ2xhc3M6W05TVmFsdWUgY2xhc3NdXSB8
fCAhW2lzTm90UmV2b2tlZCBib29sVmFsdWVdKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAg
X0VWT3JnYW5pemF0aW9uTmFtZSA9IFtpbmZvRGljdGlvbmFyeSBvYmplY3RGb3JLZXk6KF9fYnJp
ZGdlIE5TU3RyaW5nICopa1NlY1RydXN0SW5mb0NvbXBhbnlOYW1lS2V5XTsKKyAgICBfRVZPcmdh
bml6YXRpb25OYW1lID0gWyhfX2JyaWRnZSBOU0RpY3Rpb25hcnkgKilpbmZvRGljdGlvbmFyeS5n
ZXQoKSBvYmplY3RGb3JLZXk6KF9fYnJpZGdlIE5TU3RyaW5nICopa1NlY1RydXN0SW5mb0NvbXBh
bnlOYW1lS2V5XTsKICAgICByZXR1cm4gX0VWT3JnYW5pemF0aW9uTmFtZS5nZXQoKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2Nv
YS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0K
aW5kZXggMzA5MjE1MmMwZmM0N2FkYjA3OTU1YjdkNDg3MmM4ZjE2YTljYmUyNS4uNTUyYWFkMzg4
NDU3ZjcxNDIwNDhhMjYxZmYyNmYyOWM0YmExOTFlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCkBAIC01MjgsNyArNTI4LDcgQEAg
dm9pZCBXZWJQcm9jZXNzOjp1cGRhdGVQcm9jZXNzTmFtZShJc0luUHJvY2Vzc0luaXRpYWxpemF0
aW9uIGlzSW5Qcm9jZXNzSW5pdGlhbGkKIHN0YXRpYyBOU1N0cmluZyAqd2ViUHJvY2Vzc0xvYWRl
ckFjY2Vzc2liaWxpdHlCdW5kbGVQYXRoKCkKIHsKICNpZiBIQVZFKEFDQ0VTU0lCSUxJVFlfQlVO
RExFU19QQVRIKQotICAgIHJldHVybiAoX19icmlkZ2UgTlNTdHJpbmcgKilDRkF1dG9yZWxlYXNl
KF9BWFNDb3B5UGF0aEZvckFjY2Vzc2liaWxpdHlCdW5kbGUoQ0ZTVFIoIldlYlByb2Nlc3NMb2Fk
ZXIiKSkpOworICAgIHJldHVybiBhZG9wdENGKF9BWFNDb3B5UGF0aEZvckFjY2Vzc2liaWxpdHlC
dW5kbGUoQ0ZTVFIoIldlYlByb2Nlc3NMb2FkZXIiKSkpLmJyaWRnaW5nQXV0b3JlbGVhc2UoKTsK
ICNlbHNlCiAgICAgTlNTdHJpbmcgKnBhdGggPSAoX19icmlkZ2UgTlNTdHJpbmcgKilHU1N5c3Rl
bVJvb3REaXJlY3RvcnkoKTsKICNpZiBQTEFURk9STShNQUNDQVRBTFlTVCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL01pc2MvV2ViVUlLaXRTdXBwb3J0Lm1tIGIvU291cmNl
L1dlYktpdExlZ2FjeS9pb3MvTWlzYy9XZWJVSUtpdFN1cHBvcnQubW0KaW5kZXggNTkzMTQ2YzAz
MzJlYmQ1Y2QxYzE5YmMxNTc1NzMyYzMxMTI0OTY5MS4uOThhNmNmZmU1NzVhODEzYjczYWUxMDFl
OGMyYzMzODZjZGFkZTNjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvTWlz
Yy9XZWJVSUtpdFN1cHBvcnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvTWlzYy9X
ZWJVSUtpdFN1cHBvcnQubW0KQEAgLTU1LDkgKzU1LDggQEAgc3RhdGljIHZvaWQgTG9hZFdlYkxv
Y2FsaXplZFN0cmluZ3NUaW1lckNhbGxiYWNrKENGUnVuTG9vcFRpbWVyUmVmIHRpbWVyLCB2b2lk
ICoKIAogc3RhdGljIHZvaWQgTG9hZFdlYkxvY2FsaXplZFN0cmluZ3MoKQogewotICAgIENGUnVu
TG9vcFRpbWVyUmVmIHRpbWVyID0gQ0ZSdW5Mb29wVGltZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVm
YXVsdCwgQ0ZBYnNvbHV0ZVRpbWVHZXRDdXJyZW50KCksIDAsIDAsIDAsICZMb2FkV2ViTG9jYWxp
emVkU3RyaW5nc1RpbWVyQ2FsbGJhY2ssIE5VTEwpOwotICAgIENGUnVuTG9vcEFkZFRpbWVyKENG
UnVuTG9vcEdldEN1cnJlbnQoKSwgdGltZXIsIGtDRlJ1bkxvb3BDb21tb25Nb2Rlcyk7Ci0gICAg
Q0ZSZWxlYXNlKHRpbWVyKTsKKyAgICBhdXRvIHRpbWVyID0gYWRvcHRDRihDRlJ1bkxvb3BUaW1l
ckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBDRkFic29sdXRlVGltZUdldEN1cnJlbnQoKSwg
MCwgMCwgMCwgJkxvYWRXZWJMb2NhbGl6ZWRTdHJpbmdzVGltZXJDYWxsYmFjaywgTlVMTCkpOwor
ICAgIENGUnVuTG9vcEFkZFRpbWVyKENGUnVuTG9vcEdldEN1cnJlbnQoKSwgdGltZXIuZ2V0KCks
IGtDRlJ1bkxvb3BDb21tb25Nb2Rlcyk7CiB9CiAKIHZvaWQgV2ViS2l0SW5pdGlhbGl6ZSh2b2lk
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViVmlldy9XZWJQREZWaWV3
SU9TLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViVmlldy9XZWJQREZWaWV3SU9TLm1t
CmluZGV4IGFhODc3ZGEwMjliMDZkYTlhMmY4YTZkNmFjYzAwOTAxOTBlNzM3YWQuLmNiZDUwYjZm
Y2E4NTU3MTVjMmM3Y2MzZDYwMTJhYmQxODJlNDAyODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvaW9zL1dlYlZpZXcvV2ViUERGVmlld0lPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L2lvcy9XZWJWaWV3L1dlYlBERlZpZXdJT1MubW0KQEAgLTMwMiwxNCArMzAyLDExIEBA
IC0gKHZvaWQpX2NoZWNrUERGVGl0bGUKIAogLSAodm9pZClmaW5pc2hlZExvYWRpbmdXaXRoRGF0
YVNvdXJjZTooV2ViRGF0YVNvdXJjZSAqKWRhdGFTb3VyY2UKIHsKLSAgICBDR0RhdGFQcm92aWRl
clJlZiBwcm92aWRlciA9IENHRGF0YVByb3ZpZGVyQ3JlYXRlV2l0aENGRGF0YSgoQ0ZEYXRhUmVm
KVtkYXRhU291cmNlIGRhdGFdKTsKLQorICAgIGF1dG8gcHJvdmlkZXIgPSBhZG9wdENGKENHRGF0
YVByb3ZpZGVyQ3JlYXRlV2l0aENGRGF0YSgoQ0ZEYXRhUmVmKVtkYXRhU291cmNlIGRhdGFdKSk7
CiAgICAgaWYgKCFwcm92aWRlcikgCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBfUERGRG9j
dW1lbnQgPSBDR1BERkRvY3VtZW50Q3JlYXRlV2l0aFByb3ZpZGVyKHByb3ZpZGVyKTsKLSAgICBD
R0RhdGFQcm92aWRlclJlbGVhc2UocHJvdmlkZXIpOwotICAgICAgICAKKyAgICBfUERGRG9jdW1l
bnQgPSBDR1BERkRvY3VtZW50Q3JlYXRlV2l0aFByb3ZpZGVyKHByb3ZpZGVyLmdldCgpKTsKICAg
ICBpZiAoIV9QREZEb2N1bWVudCkKICAgICAgICAgcmV0dXJuOwogICAgIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViVmlldy9XZWJQREZWaWV3UGxhY2Vob2xkZXIubW0g
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJWaWV3L1dlYlBERlZpZXdQbGFjZWhvbGRlci5t
bQppbmRleCA3MjU0ZDBjNWFjYzZhYTFhODc5YjYyYWQwYTQ4ODk5ZjNjZTdkYmExLi45YmIwOTBh
YmE4NjNkODJiNjU1MjM2NTQ2OWQwOTNiOTk5YTYwYjlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L2lvcy9XZWJWaWV3L1dlYlBERlZpZXdQbGFjZWhvbGRlci5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJWaWV3L1dlYlBERlZpZXdQbGFjZWhvbGRlci5tbQpAQCAt
Mjc0LDEzICsyNzQsMTEgQEAgLSAodm9pZClmaW5pc2hlZExvYWRpbmdXaXRoRGF0YVNvdXJjZToo
V2ViRGF0YVNvdXJjZSAqKWRhdGFTb3VyY2UKICAgICBbc2VsZiBkYXRhU291cmNlVXBkYXRlZDpk
YXRhU291cmNlXTsKIAogICAgIF9kaWRGaW5pc2hMb2FkID0gWUVTOwotICAgIENHRGF0YVByb3Zp
ZGVyUmVmIHByb3ZpZGVyID0gQ0dEYXRhUHJvdmlkZXJDcmVhdGVXaXRoQ0ZEYXRhKChDRkRhdGFS
ZWYpW2RhdGFTb3VyY2UgZGF0YV0pOworICAgIGF1dG8gcHJvdmlkZXIgPSBhZG9wdENGKENHRGF0
YVByb3ZpZGVyQ3JlYXRlV2l0aENGRGF0YSgoQ0ZEYXRhUmVmKVtkYXRhU291cmNlIGRhdGFdKSk7
CiAgICAgaWYgKCFwcm92aWRlcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgX2RvY3VtZW50ID0g
Q0dQREZEb2N1bWVudENyZWF0ZVdpdGhQcm92aWRlcihwcm92aWRlcik7Ci0KLSAgICBDR0RhdGFQ
cm92aWRlclJlbGVhc2UocHJvdmlkZXIpOworICAgIF9kb2N1bWVudCA9IENHUERGRG9jdW1lbnRD
cmVhdGVXaXRoUHJvdmlkZXIocHJvdmlkZXIuZ2V0KCkpOwogCiAgICAgW3NlbGYgX2RvUG9zdExv
YWRPclVubG9ja1Rhc2tzXTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L01pc2MvV2ViTG9jYWxpemFibGVTdHJpbmdzLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
TWlzYy9XZWJMb2NhbGl6YWJsZVN0cmluZ3MubW0KaW5kZXggNGVlMDAzNjQxOWU3YWZjYmY4NTM4
MjJkYzViZTk2NDUxOGQwMjk3OS4uMjk0MGQ0YWI2ZjIwOTgzZWM4NmI5MmFhYTJmNjE3MmMyMTk1
MzBmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJMb2NhbGl6
YWJsZVN0cmluZ3MubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJMb2Nh
bGl6YWJsZVN0cmluZ3MubW0KQEAgLTMwLDYgKzMwLDggQEAKIAogI2ltcG9ydCA8d3RmL0Fzc2Vy
dGlvbnMuaD4KICNpbXBvcnQgPHd0Zi9NYWluVGhyZWFkLmg+CisjaW1wb3J0IDx3dGYvTmV2ZXJE
ZXN0cm95ZWQuaD4KKyNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KIAogV2ViTG9jYWxpemFibGVT
dHJpbmdzQnVuZGxlIFdlYktpdExvY2FsaXphYmxlU3RyaW5nc0J1bmRsZSA9IHsgImNvbS5hcHBs
ZS5XZWJLaXQiLCAwIH07CiAKQEAgLTQ1LDEzICs0Nyw5IEBAIE5TU3RyaW5nICpXZWJMb2NhbGl6
ZWRTdHJpbmcoV2ViTG9jYWxpemFibGVTdHJpbmdzQnVuZGxlICpzdHJpbmdzQnVuZGxlLCBjb25z
dCBjCiAKICAgICBOU0J1bmRsZSAqYnVuZGxlOwogICAgIGlmIChzdHJpbmdzQnVuZGxlID09IE5V
TEwpIHsKLSAgICAgICAgc3RhdGljIE5TQnVuZGxlICptYWluQnVuZGxlOwotICAgICAgICBpZiAo
bWFpbkJ1bmRsZSA9PSBuaWwpIHsKLSAgICAgICAgICAgIG1haW5CdW5kbGUgPSBbTlNCdW5kbGUg
bWFpbkJ1bmRsZV07Ci0gICAgICAgICAgICBBU1NFUlQobWFpbkJ1bmRsZSk7Ci0gICAgICAgICAg
ICBDRlJldGFpbihtYWluQnVuZGxlKTsKLSAgICAgICAgfQotICAgICAgICBidW5kbGUgPSBtYWlu
QnVuZGxlOworICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPE5TQnVuZGxl
Pj4gbWFpbkJ1bmRsZSA9IFtOU0J1bmRsZSBtYWluQnVuZGxlXTsKKyAgICAgICAgQVNTRVJUKG1h
aW5CdW5kbGUuZ2V0KCkpOworICAgICAgICBidW5kbGUgPSBtYWluQnVuZGxlLmdldCgpLmdldCgp
OwogICAgIH0gZWxzZSB7CiAgICAgICAgIGJ1bmRsZSA9IHN0cmluZ3NCdW5kbGUtPmJ1bmRsZTsK
ICAgICAgICAgaWYgKGJ1bmRsZSA9PSBuaWwpIHsKQEAgLTYxLDkgKzU5LDggQEAgTlNTdHJpbmcg
KldlYkxvY2FsaXplZFN0cmluZyhXZWJMb2NhbGl6YWJsZVN0cmluZ3NCdW5kbGUgKnN0cmluZ3NC
dW5kbGUsIGNvbnN0IGMKICAgICAgICAgfQogICAgIH0KICAgICBOU1N0cmluZyAqbm90Rm91bmQg
PSBAImxvY2FsaXplZCBzdHJpbmcgbm90IGZvdW5kIjsKLSAgICBDRlN0cmluZ1JlZiBrZXlTdHJp
bmcgPSBDRlN0cmluZ0NyZWF0ZVdpdGhDU3RyaW5nTm9Db3B5KE5VTEwsIGtleSwga0NGU3RyaW5n
RW5jb2RpbmdVVEY4LCBrQ0ZBbGxvY2F0b3JOdWxsKTsKLSAgICBOU1N0cmluZyAqcmVzdWx0ID0g
W2J1bmRsZSBsb2NhbGl6ZWRTdHJpbmdGb3JLZXk6KF9fYnJpZGdlIE5TU3RyaW5nICopa2V5U3Ry
aW5nIHZhbHVlOm5vdEZvdW5kIHRhYmxlOm5pbF07Ci0gICAgQ0ZSZWxlYXNlKGtleVN0cmluZyk7
CisgICAgYXV0byBrZXlTdHJpbmcgPSBhZG9wdENGKENGU3RyaW5nQ3JlYXRlV2l0aENTdHJpbmdO
b0NvcHkoTlVMTCwga2V5LCBrQ0ZTdHJpbmdFbmNvZGluZ1VURjgsIGtDRkFsbG9jYXRvck51bGwp
KTsKKyAgICBOU1N0cmluZyAqcmVzdWx0ID0gW2J1bmRsZSBsb2NhbGl6ZWRTdHJpbmdGb3JLZXk6
KF9fYnJpZGdlIE5TU3RyaW5nICopa2V5U3RyaW5nLmdldCgpIHZhbHVlOm5vdEZvdW5kIHRhYmxl
Om5pbF07CiAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShyZXN1bHQgIT0gbm90Rm91bmQsICJjb3Vs
ZCBub3QgZmluZCBsb2NhbGl6YWJsZSBzdHJpbmcgJXMgaW4gYnVuZGxlIiwga2V5KTsKICAgICBy
ZXR1cm4gcmVzdWx0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlz
Yy9XZWJOU0RhdGFFeHRyYXMubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYk5T
RGF0YUV4dHJhcy5tbQppbmRleCA2ZWM3Y2MwZGIyMjcyY2U0YmQzZGExNzRlYTMyOTQ1ODZkZGZk
MTdlLi44ZDUwNmEyM2ZjNjRhMGU5NjI5MmI2ZTFmMTBlM2YyNDgwNjhlNDAzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYk5TRGF0YUV4dHJhcy5tbQorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYk5TRGF0YUV4dHJhcy5tbQpAQCAtODMsOSAr
ODMsOSBAQCAtIChOU1N0cmluZyAqKV93ZWJfY2FwaXRhbGl6ZVJGQzgyMkhlYWRlckZpZWxkTmFt
ZQogICAgIH0KICAgICBpZiAoc29tZXRoaW5nQ2hhbmdlZCkgewogICAgICAgICBpZiAodXNlVW5p
Q2hhclB0cikKLSAgICAgICAgICAgIHJlc3VsdCA9IENGQnJpZGdpbmdSZWxlYXNlKENGU3RyaW5n
Q3JlYXRlV2l0aENoYXJhY3RlcnNOb0NvcHkoa0NGQWxsb2NhdG9yRGVmYXVsdCwgdW5pQ2hhclB0
ciwgbGVuLCBudWxscHRyKSk7CisgICAgICAgICAgICByZXN1bHQgPSBhZG9wdENGKENGU3RyaW5n
Q3JlYXRlV2l0aENoYXJhY3RlcnNOb0NvcHkoa0NGQWxsb2NhdG9yRGVmYXVsdCwgdW5pQ2hhclB0
ciwgbGVuLCBudWxscHRyKSkuYnJpZGdpbmdBdXRvcmVsZWFzZSgpOwogICAgICAgICBlbHNlCi0g
ICAgICAgICAgICByZXN1bHQgPSBDRkJyaWRnaW5nUmVsZWFzZShDRlN0cmluZ0NyZWF0ZVdpdGhD
U3RyaW5nTm9Db3B5KGtDRkFsbG9jYXRvckRlZmF1bHQsIGNoYXJQdHIsIGtDRlN0cmluZ0VuY29k
aW5nSVNPTGF0aW4xLCBudWxscHRyKSk7CisgICAgICAgICAgICByZXN1bHQgPSBhZG9wdENGKENG
U3RyaW5nQ3JlYXRlV2l0aENTdHJpbmdOb0NvcHkoa0NGQWxsb2NhdG9yRGVmYXVsdCwgY2hhclB0
ciwga0NGU3RyaW5nRW5jb2RpbmdJU09MYXRpbjEsIG51bGxwdHIpKS5icmlkZ2luZ0F1dG9yZWxl
YXNlKCk7CiAgICAgfSBlbHNlCiAgICAgICAgIHJlc3VsdCA9IHNlbGY7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSG9z
dE1hbmFnZXIubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRz
Y2FwZVBsdWdpbkhvc3RNYW5hZ2VyLm1tCmluZGV4IGY2MzkzZjg5YmZiYTRmNjlmZDAzOGYyMTU2
NWVmMTdkMDJmYmYzMzcuLjVmZGEzZmM3MTdmMzEzYTRkYjY1ZTIyYjgzNjk1ZDgzM2M5OWVmOGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNj
YXBlUGx1Z2luSG9zdE1hbmFnZXIubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1
Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5Ib3N0TWFuYWdlci5tbQpAQCAtMTIxLDcgKzEyMSw3
IEBAIHN0YXRpYyBOU1N0cmluZyAqcHJlZmVycmVkQnVuZGxlTG9jYWxpemF0aW9uTmFtZSgpCiAg
ICAgaWYgKCFzdWNjZXNzKQogICAgICAgICByZXR1cm4gQCJlbl9VUyI7CiAKLSAgICByZXR1cm4g
Q0ZCcmlkZ2luZ1JlbGVhc2UoQ0ZMb2NhbGVDcmVhdGVDYW5vbmljYWxMb2NhbGVJZGVudGlmaWVy
RnJvbVNjcmlwdE1hbmFnZXJDb2RlcygwLCBsYW5ndWFnZUNvZGUsIHJlZ2lvbkNvZGUpKTsKKyAg
ICByZXR1cm4gYWRvcHRDRihDRkxvY2FsZUNyZWF0ZUNhbm9uaWNhbExvY2FsZUlkZW50aWZpZXJG
cm9tU2NyaXB0TWFuYWdlckNvZGVzKDAsIGxhbmd1YWdlQ29kZSwgcmVnaW9uQ29kZSkpLmJyaWRn
aW5nQXV0b3JlbGVhc2UoKTsKIH0KIAogYm9vbCBOZXRzY2FwZVBsdWdpbkhvc3RNYW5hZ2VyOjpz
cGF3blBsdWdpbkhvc3QoY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoLCBjcHVfdHlwZV90IHBsdWdp
bkFyY2hpdGVjdHVyZSwgbWFjaF9wb3J0X3QgY2xpZW50UG9ydCwgbWFjaF9wb3J0X3QmIHBsdWdp
bkhvc3RQb3J0LCBQcm9jZXNzU2VyaWFsTnVtYmVyJiBwbHVnaW5Ib3N0UFNOKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblZpZXcu
bW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luVmll
dy5tbQppbmRleCAxMmFhYTNkMDhmNzdjOGNmOGQ0MWQ0NDNlMTJhYjZkMmUyNzEyM2IyLi44ZmZm
MjQ1ZTE2OGQzNGFkYmVkYjAyZDQ3NDhmOWNiODcxMTA3N2I2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luVmlldy5tbQorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luVmlldy5tbQpA
QCAtMTQ1MywxNiArMTQ1MywxNSBAQCAtIChjb25zdCBjaGFyICopdXNlckFnZW50CiAKIC0odm9p
ZClzdGF0dXM6KGNvbnN0IGNoYXIgKiltZXNzYWdlCiB7ICAgIAotICAgIENGU3RyaW5nUmVmIHN0
YXR1cyA9IENGU3RyaW5nQ3JlYXRlV2l0aENTdHJpbmcoTlVMTCwgbWVzc2FnZSA/IG1lc3NhZ2Ug
OiAiIiwga0NGU3RyaW5nRW5jb2RpbmdVVEY4KTsKKyAgICBhdXRvIHN0YXR1cyA9IGFkb3B0Q0Yo
Q0ZTdHJpbmdDcmVhdGVXaXRoQ1N0cmluZyhOVUxMLCBtZXNzYWdlID8gbWVzc2FnZSA6ICIiLCBr
Q0ZTdHJpbmdFbmNvZGluZ1VURjgpKTsKICAgICBpZiAoIXN0YXR1cykgewogICAgICAgICBMT0df
RVJST1IoIk5QTl9TdGF0dXM6IHRoZSBtZXNzYWdlIHdhcyBub3QgdmFsaWQgVVRGLTgiKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAgICBMT0coUGx1Z2lucywgIk5QTl9TdGF0dXM6
ICVAIiwgc3RhdHVzKTsKKyAgICBMT0coUGx1Z2lucywgIk5QTl9TdGF0dXM6ICVAIiwgc3RhdHVz
LmdldCgpKTsKICAgICBXZWJWaWV3ICp3diA9IFtzZWxmIHdlYlZpZXddOwotICAgIFtbd3YgX1VJ
RGVsZWdhdGVGb3J3YXJkZXJdIHdlYlZpZXc6d3Ygc2V0U3RhdHVzVGV4dDooX19icmlkZ2UgTlNT
dHJpbmcgKilzdGF0dXNdOwotICAgIENGUmVsZWFzZShzdGF0dXMpOworICAgIFtbd3YgX1VJRGVs
ZWdhdGVGb3J3YXJkZXJdIHdlYlZpZXc6d3Ygc2V0U3RhdHVzVGV4dDooX19icmlkZ2UgTlNTdHJp
bmcgKilzdGF0dXMuZ2V0KCldOwogfQogCiAtKHZvaWQpaW52YWxpZGF0ZVJlY3Q6KE5QUmVjdCAq
KWludmFsaWRSZWN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJQcm9ncmVzc1RyYWNrZXJDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQcm9ncmVzc1RyYWNrZXJDbGllbnQubW0KaW5kZXggY2Mz
OGVmMTYxZTc1M2Q1MTkxNjRmZWQzMGRkNTg3NjUxODA4YmYxNi4uOGY0NzgzY2IzMDhhNjRkZGNh
NWIxMzQ0MzU1MDgyMzYwNDE3ZTA1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViUHJvZ3Jlc3NUcmFja2VyQ2xpZW50Lm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlByb2dyZXNzVHJhY2tlckNsaWVu
dC5tbQpAQCAtNzAsMTMgKzcwLDEyIEBAIHZvaWQgV2ViUHJvZ3Jlc3NUcmFja2VyQ2xpZW50Ojpw
cm9ncmVzc0VzdGltYXRlQ2hhbmdlZChXZWJDb3JlOjpGcmFtZSYpCiAgICAgCiAgICAgLy8gVXNl
IGEgQ0ZEaWN0aW9uYXJ5IHNvIHdlIGNhbiBhZGQgdGhlIENHQ29sb3JSZWYgd2l0aG91dCBjb21w
aWxlIGVycm9ycy4gQW5kIHRoZW4gdGhhbmtzIHRvCiAgICAgLy8gdG9sbC1mcmVlIGJyaWRnaW5n
IHdlIGNhbiBwYXNzIHRoZSBDRkRpY3Rpb25hcnkgYXMgYW4gTlNEaWN0aW9uYXJ5IHRvIHBvc3RO
b3RpZmljYXRpb24uCi0gICAgQ0ZNdXRhYmxlRGljdGlvbmFyeVJlZiB1c2VySW5mbyA9IENGRGlj
dGlvbmFyeUNyZWF0ZU11dGFibGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgMiwgJmtDRlR5cGVEaWN0
aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcyk7Ci0g
ICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUodXNlckluZm8sIFdlYlZpZXdQcm9ncmVzc0VzdGltYXRl
ZFByb2dyZXNzS2V5LCBwcm9ncmVzcyk7CisgICAgYXV0byB1c2VySW5mbyA9IGFkb3B0Q0YoQ0ZE
aWN0aW9uYXJ5Q3JlYXRlTXV0YWJsZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAyLCAma0NGVHlwZURp
Y3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7
CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUodXNlckluZm8uZ2V0KCksIFdlYlZpZXdQcm9ncmVz
c0VzdGltYXRlZFByb2dyZXNzS2V5LCBwcm9ncmVzcyk7CiAgICAgaWYgKGJvZHlCYWNrZ3JvdW5k
Q29sb3IpCi0gICAgICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKHVzZXJJbmZvLCBXZWJWaWV3UHJv
Z3Jlc3NCYWNrZ3JvdW5kQ29sb3JLZXksIGJvZHlCYWNrZ3JvdW5kQ29sb3IpOworICAgICAgICBD
RkRpY3Rpb25hcnlBZGRWYWx1ZSh1c2VySW5mby5nZXQoKSwgV2ViVmlld1Byb2dyZXNzQmFja2dy
b3VuZENvbG9yS2V5LCBib2R5QmFja2dyb3VuZENvbG9yKTsKICAgICAKLSAgICBXZWJUaHJlYWRQ
b3N0Tm90aWZpY2F0aW9uKFdlYlZpZXdQcm9ncmVzc0VzdGltYXRlQ2hhbmdlZE5vdGlmaWNhdGlv
biwgbV93ZWJWaWV3LCAoTlNEaWN0aW9uYXJ5ICopIHVzZXJJbmZvKTsKLSAgICBDRlJlbGVhc2Uo
dXNlckluZm8pOworICAgIFdlYlRocmVhZFBvc3ROb3RpZmljYXRpb24oV2ViVmlld1Byb2dyZXNz
RXN0aW1hdGVDaGFuZ2VkTm90aWZpY2F0aW9uLCBtX3dlYlZpZXcsIChOU0RpY3Rpb25hcnkgKil1
c2VySW5mby5nZXQoKSk7CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViSW5zcGVjdG9yL1dlYk5vZGVIaWdobGlnaHRWaWV3Lm1tIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViSW5zcGVjdG9yL1dlYk5vZGVIaWdobGlnaHRWaWV3Lm1tCmluZGV4
IDIwZjE5ZjBiYzRiYjQ4ZGQyZGU1OTA2ZDllMjdlM2IzYzM0YzI1M2YuLmQzOTczZTI5NDQ1OWVj
ZjFkYmRlZjQ0OWVmMmNmZDJjYWNiOGVkMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYkluc3BlY3Rvci9XZWJOb2RlSGlnaGxpZ2h0Vmlldy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJJbnNwZWN0b3IvV2ViTm9kZUhpZ2hsaWdodFZpZXcubW0KQEAg
LTIzNiwyOCArMjM2LDI2IEBAIHN0YXRpYyB2b2lkIGxheWVyUGF0aFdpdGhIb2xlKENBU2hhcGVM
YXllciAqbGF5ZXIsIGNvbnN0IEZsb2F0UXVhZCYgb3V0ZXJRdWFkLCBjCiAgICAgICAgIGlubmVy
SG9sZSA9IHF1YWRJbnRlcnNlY3Rpb24ob3V0ZXJRdWFkLCBob2xlUXVhZCk7CiAKICAgICAvLyBD
bG9ja3dpc2UgaW5zaWRlIHJlY3QgKGhvbGUpLCBDb3VudGVyLUNsb2Nrd2lzZSBvdXRzaWRlIHJl
Y3QgKGZpbGwpLgotICAgIENHTXV0YWJsZVBhdGhSZWYgcGF0aCA9IENHUGF0aENyZWF0ZU11dGFi
bGUoKTsKLSAgICBDR1BhdGhNb3ZlVG9Qb2ludChwYXRoLCAwLCBpbm5lckhvbGUucDEoKS54KCks
IGlubmVySG9sZS5wMSgpLnkoKSk7Ci0gICAgQ0dQYXRoQWRkTGluZVRvUG9pbnQocGF0aCwgMCwg
aW5uZXJIb2xlLnAyKCkueCgpLCBpbm5lckhvbGUucDIoKS55KCkpOwotICAgIENHUGF0aEFkZExp
bmVUb1BvaW50KHBhdGgsIDAsIGlubmVySG9sZS5wMygpLngoKSwgaW5uZXJIb2xlLnAzKCkueSgp
KTsKLSAgICBDR1BhdGhBZGRMaW5lVG9Qb2ludChwYXRoLCAwLCBpbm5lckhvbGUucDQoKS54KCks
IGlubmVySG9sZS5wNCgpLnkoKSk7Ci0gICAgQ0dQYXRoTW92ZVRvUG9pbnQocGF0aCwgMCwgb3V0
ZXJRdWFkLnAxKCkueCgpLCBvdXRlclF1YWQucDEoKS55KCkpOwotICAgIENHUGF0aEFkZExpbmVU
b1BvaW50KHBhdGgsIDAsIG91dGVyUXVhZC5wNCgpLngoKSwgb3V0ZXJRdWFkLnA0KCkueSgpKTsK
LSAgICBDR1BhdGhBZGRMaW5lVG9Qb2ludChwYXRoLCAwLCBvdXRlclF1YWQucDMoKS54KCksIG91
dGVyUXVhZC5wMygpLnkoKSk7Ci0gICAgQ0dQYXRoQWRkTGluZVRvUG9pbnQocGF0aCwgMCwgb3V0
ZXJRdWFkLnAyKCkueCgpLCBvdXRlclF1YWQucDIoKS55KCkpOwotICAgIGxheWVyLnBhdGggPSBw
YXRoOwotICAgIENHUGF0aFJlbGVhc2UocGF0aCk7CisgICAgYXV0byBwYXRoID0gYWRvcHRDRihD
R1BhdGhDcmVhdGVNdXRhYmxlKCkpOworICAgIENHUGF0aE1vdmVUb1BvaW50KHBhdGguZ2V0KCks
IDAsIGlubmVySG9sZS5wMSgpLngoKSwgaW5uZXJIb2xlLnAxKCkueSgpKTsKKyAgICBDR1BhdGhB
ZGRMaW5lVG9Qb2ludChwYXRoLmdldCgpLCAwLCBpbm5lckhvbGUucDIoKS54KCksIGlubmVySG9s
ZS5wMigpLnkoKSk7CisgICAgQ0dQYXRoQWRkTGluZVRvUG9pbnQocGF0aC5nZXQoKSwgMCwgaW5u
ZXJIb2xlLnAzKCkueCgpLCBpbm5lckhvbGUucDMoKS55KCkpOworICAgIENHUGF0aEFkZExpbmVU
b1BvaW50KHBhdGguZ2V0KCksIDAsIGlubmVySG9sZS5wNCgpLngoKSwgaW5uZXJIb2xlLnA0KCku
eSgpKTsKKyAgICBDR1BhdGhNb3ZlVG9Qb2ludChwYXRoLmdldCgpLCAwLCBvdXRlclF1YWQucDEo
KS54KCksIG91dGVyUXVhZC5wMSgpLnkoKSk7CisgICAgQ0dQYXRoQWRkTGluZVRvUG9pbnQocGF0
aC5nZXQoKSwgMCwgb3V0ZXJRdWFkLnA0KCkueCgpLCBvdXRlclF1YWQucDQoKS55KCkpOworICAg
IENHUGF0aEFkZExpbmVUb1BvaW50KHBhdGguZ2V0KCksIDAsIG91dGVyUXVhZC5wMygpLngoKSwg
b3V0ZXJRdWFkLnAzKCkueSgpKTsKKyAgICBDR1BhdGhBZGRMaW5lVG9Qb2ludChwYXRoLmdldCgp
LCAwLCBvdXRlclF1YWQucDIoKS54KCksIG91dGVyUXVhZC5wMigpLnkoKSk7CisgICAgbGF5ZXIu
cGF0aCA9IHBhdGguZ2V0KCk7CiB9CiAKIHN0YXRpYyB2b2lkIGxheWVyUGF0aChDQVNoYXBlTGF5
ZXIgKmxheWVyLCBjb25zdCBGbG9hdFF1YWQmIG91dGVyUXVhZCkKIHsKLSAgICBDR011dGFibGVQ
YXRoUmVmIHBhdGggPSBDR1BhdGhDcmVhdGVNdXRhYmxlKCk7Ci0gICAgQ0dQYXRoTW92ZVRvUG9p
bnQocGF0aCwgMCwgb3V0ZXJRdWFkLnAxKCkueCgpLCBvdXRlclF1YWQucDEoKS55KCkpOwotICAg
IENHUGF0aEFkZExpbmVUb1BvaW50KHBhdGgsIDAsIG91dGVyUXVhZC5wNCgpLngoKSwgb3V0ZXJR
dWFkLnA0KCkueSgpKTsKLSAgICBDR1BhdGhBZGRMaW5lVG9Qb2ludChwYXRoLCAwLCBvdXRlclF1
YWQucDMoKS54KCksIG91dGVyUXVhZC5wMygpLnkoKSk7Ci0gICAgQ0dQYXRoQWRkTGluZVRvUG9p
bnQocGF0aCwgMCwgb3V0ZXJRdWFkLnAyKCkueCgpLCBvdXRlclF1YWQucDIoKS55KCkpOwotICAg
IGxheWVyLnBhdGggPSBwYXRoOwotICAgIENHUGF0aFJlbGVhc2UocGF0aCk7CisgICAgYXV0byBw
YXRoID0gYWRvcHRDRihDR1BhdGhDcmVhdGVNdXRhYmxlKCkpOworICAgIENHUGF0aE1vdmVUb1Bv
aW50KHBhdGguZ2V0KCksIDAsIG91dGVyUXVhZC5wMSgpLngoKSwgb3V0ZXJRdWFkLnAxKCkueSgp
KTsKKyAgICBDR1BhdGhBZGRMaW5lVG9Qb2ludChwYXRoLmdldCgpLCAwLCBvdXRlclF1YWQucDQo
KS54KCksIG91dGVyUXVhZC5wNCgpLnkoKSk7CisgICAgQ0dQYXRoQWRkTGluZVRvUG9pbnQocGF0
aC5nZXQoKSwgMCwgb3V0ZXJRdWFkLnAzKCkueCgpLCBvdXRlclF1YWQucDMoKS55KCkpOworICAg
IENHUGF0aEFkZExpbmVUb1BvaW50KHBhdGguZ2V0KCksIDAsIG91dGVyUXVhZC5wMigpLngoKSwg
b3V0ZXJRdWFkLnAyKCkueSgpKTsKKyAgICBsYXllci5wYXRoID0gcGF0aC5nZXQoKTsKIH0KIAog
LSAodm9pZClfbGF5b3V0Rm9yTm9kZUhpZ2hsaWdodDooSW5zcGVjdG9yT3ZlcmxheTo6SGlnaGxp
Z2h0KiloaWdobGlnaHQgcGFyZW50OihDQUxheWVyICopcGFyZW50TGF5ZXIKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0gYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCmluZGV4IGI5YmU3ZDk5MDVkYWY1MGVl
OWZkNTMwOGU5N2ZmM2M5ZGVjYTllMWIuLjNhYmM2MDFiODBiYWQ0MzAzNTQyNWI0OTI5ODQ5ZjEz
ZWYxNDg3NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2Vi
RnJhbWUubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5t
bQpAQCAtMjQ2MSwxMiArMjQ2MSw5IEBAIC0gKHZvaWQpbG9hZFJlcXVlc3Q6KE5TVVJMUmVxdWVz
dCAqKXJlcXVlc3QKIAogc3RhdGljIE5TVVJMICpjcmVhdGVVbmlxdWVXZWJEYXRhVVJMKCkKIHsK
LSAgICBDRlVVSURSZWYgVVVJRFJlZiA9IENGVVVJRENyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0
KTsKLSAgICBOU1N0cmluZyAqVVVJRFN0cmluZyA9IChOU1N0cmluZyAqKUNGVVVJRENyZWF0ZVN0
cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBVVUlEUmVmKTsKLSAgICBDRlJlbGVhc2UoVVVJRFJl
Zik7Ci0gICAgTlNVUkwgKlVSTCA9IFtOU1VSTCBVUkxXaXRoU3RyaW5nOltOU1N0cmluZyBzdHJp
bmdXaXRoRm9ybWF0OkAiYXBwbGV3ZWJkYXRhOi8vJUAiLCBVVUlEU3RyaW5nXV07Ci0gICAgQ0ZS
ZWxlYXNlKFVVSURTdHJpbmcpOwotICAgIHJldHVybiBVUkw7CisgICAgYXV0byBVVUlEUmVmID0g
YWRvcHRDRihDRlVVSURDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCkpOworICAgIGF1dG8gVVVJ
RFN0cmluZyA9IGFkb3B0Q0YoQ0ZVVUlEQ3JlYXRlU3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQs
IFVVSURSZWYuZ2V0KCkpKTsKKyAgICByZXR1cm4gW05TVVJMIFVSTFdpdGhTdHJpbmc6W05TU3Ry
aW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJhcHBsZXdlYmRhdGE6Ly8lQCIsIChfX2JyaWRnZSBOU1N0
cmluZyAqKVVVSURTdHJpbmcuZ2V0KCldXTsKIH0KIAogLSAodm9pZClfbG9hZERhdGE6KE5TRGF0
YSAqKWRhdGEgTUlNRVR5cGU6KE5TU3RyaW5nICopTUlNRVR5cGUgdGV4dEVuY29kaW5nTmFtZToo
TlNTdHJpbmcgKillbmNvZGluZ05hbWUgYmFzZVVSTDooTlNVUkwgKiliYXNlVVJMIHVucmVhY2hh
YmxlVVJMOihOU1VSTCAqKXVucmVhY2hhYmxlVVJMCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJWaWV3L1dlYlZpZXcubW0KaW5kZXggNjg1NjEwYzI1ZWMyYWU1ZmQ1ZjUxM2JiOTMxNjJjNGUy
ZTYxZmI5Mi4uZTMzM2Q2ZTBmOWIzYzI1Y2JiY2RmYjliNmNhZWM0YWUxNDQyYzlkMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtODQwMyw3ICs4NDAz
LDcgQEAgKyAodm9pZClfc2V0Q2FjaGVNb2RlbDooV2ViQ2FjaGVNb2RlbCljYWNoZU1vZGVsCiAg
ICAgaWYgKHNfZGlkU2V0Q2FjaGVNb2RlbCAmJiBjYWNoZU1vZGVsID09IHNfY2FjaGVNb2RlbCkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgTlNTdHJpbmcgKm5zdXJsQ2FjaGVEaXJlY3RvcnkgPSBD
RkJyaWRnaW5nUmVsZWFzZShfQ0ZVUkxDYWNoZUNvcHlDYWNoZURpcmVjdG9yeShbW05TVVJMQ2Fj
aGUgc2hhcmVkVVJMQ2FjaGVdIF9DRlVSTENhY2hlXSkpOworICAgIE5TU3RyaW5nICpuc3VybENh
Y2hlRGlyZWN0b3J5ID0gYWRvcHRDRihfQ0ZVUkxDYWNoZUNvcHlDYWNoZURpcmVjdG9yeShbW05T
VVJMQ2FjaGUgc2hhcmVkVVJMQ2FjaGVdIF9DRlVSTENhY2hlXSkpLmJyaWRnaW5nQXV0b3JlbGVh
c2UoKTsKICAgICBpZiAoIW5zdXJsQ2FjaGVEaXJlY3RvcnkpCiAgICAgICAgIG5zdXJsQ2FjaGVE
aXJlY3RvcnkgPSBOU0hvbWVEaXJlY3RvcnkoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vQ0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWcuY3BwIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vQ0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWcuY3BwCmluZGV4IGJjOWU2NTk0ZTc3N2Jm
MDA4NjgzNjJiNzUxYzI3NTE5ZDdiZWE3M2IuLjlhMWYwMTEyMjFiYzIxNDAwYmVlODg3ZWQxMTE5
YjM2OWZmZTYwMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NGRGljdGlv
bmFyeVByb3BlcnR5QmFnLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DRkRpY3Rp
b25hcnlQcm9wZXJ0eUJhZy5jcHAKQEAgLTEzOCwyMCArMTM4LDIwIEBAIHN0YXRpYyBib29sIENv
bnZlcnRWYXJpYW50VG9DRlR5cGUoVkFSSUFOVCogcFZhciwgdm9pZCoqIGNmT2JqKQogICAgIGVs
c2UgewogICAgICAgICAvLyBpZiBjYWxsZXIgZXhwZWN0cyBhIHN0cmluZywgcmV0cmlldmUgQlNU
UiBmcm9tIENGU3RyaW5nUmVmCiAgICAgICAgIGlmIChWX1ZUKHBWYXIpID09IFZUX0JTVFIpIHsK
LSAgICAgICAgICAgICpjZk9iaiA9ICh2b2lkKikgTWFyc2hhbGxpbmdIZWxwZXJzOjpCU1RSVG9D
RlN0cmluZ1JlZihWX0JTVFIocFZhcikpOworICAgICAgICAgICAgKmNmT2JqID0gKHZvaWQqKSBN
YXJzaGFsbGluZ0hlbHBlcnM6OkJTVFJUb0NGU3RyaW5nUmVmKFZfQlNUUihwVmFyKSkubGVha1Jl
ZigpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0gZWxzZSBpZiAoVl9WVChw
VmFyKSA9PSBWVF9JNCkgewotICAgICAgICAgICAgKmNmT2JqID0gKHZvaWQqKSBNYXJzaGFsbGlu
Z0hlbHBlcnM6OmludFRvQ0ZOdW1iZXJSZWYoVl9JNChwVmFyKSk7CisgICAgICAgICAgICAqY2ZP
YmogPSAodm9pZCopIE1hcnNoYWxsaW5nSGVscGVyczo6aW50VG9DRk51bWJlclJlZihWX0k0KHBW
YXIpKS5sZWFrUmVmKCk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfSBlbHNl
IGlmICghIShWX1ZUKHBWYXIpJlZUX0FSUkFZKSkgewogICAgICAgICAgICAgaWYgKChWX1ZUKHBW
YXIpJn5WVF9BUlJBWSkgPT0gVlRfQlNUUikgewotICAgICAgICAgICAgICAgICpjZk9iaiA9ICh2
b2lkKikgTWFyc2hhbGxpbmdIZWxwZXJzOjpzYWZlQXJyYXlUb1N0cmluZ0FycmF5KFZfQVJSQVko
cFZhcikpOworICAgICAgICAgICAgICAgICpjZk9iaiA9ICh2b2lkKikgTWFyc2hhbGxpbmdIZWxw
ZXJzOjpzYWZlQXJyYXlUb1N0cmluZ0FycmF5KFZfQVJSQVkocFZhcikpLmxlYWtSZWYoKTsKICAg
ICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIH0gZWxzZSBpZiAoKFZfVlQo
cFZhcikmflZUX0FSUkFZKSA9PSBWVF9JNCkgewotICAgICAgICAgICAgICAgICpjZk9iaiA9ICh2
b2lkKikgTWFyc2hhbGxpbmdIZWxwZXJzOjpzYWZlQXJyYXlUb0ludEFycmF5KFZfQVJSQVkocFZh
cikpOworICAgICAgICAgICAgICAgICpjZk9iaiA9ICh2b2lkKikgTWFyc2hhbGxpbmdIZWxwZXJz
OjpzYWZlQXJyYXlUb0ludEFycmF5KFZfQVJSQVkocFZhcikpLmxlYWtSZWYoKTsKICAgICAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIH0gZWxzZSBpZiAoKFZfVlQocFZhcikm
flZUX0FSUkFZKSA9PSBWVF9VTktOT1dOKSB7Ci0gICAgICAgICAgICAgICAgKmNmT2JqID0gKHZv
aWQqKSBNYXJzaGFsbGluZ0hlbHBlcnM6OnNhZmVBcnJheVRvSVVua25vd25BcnJheShWX0FSUkFZ
KHBWYXIpKTsKKyAgICAgICAgICAgICAgICAqY2ZPYmogPSAodm9pZCopIE1hcnNoYWxsaW5nSGVs
cGVyczo6c2FmZUFycmF5VG9JVW5rbm93bkFycmF5KFZfQVJSQVkocFZhcikpLmxlYWtSZWYoKTsK
ICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpA
QCAtMTY3LDE0ICsxNjcsMTMgQEAgSFJFU1VMVCBDRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZzo6UmVh
ZChMUENPTEVTVFIgcHN6UHJvcE5hbWUsIFZBUklBTlQgKnBWYXIsIElFcnIKICNpZiBVU0UoQ0Yp
CiAgICAgaWYgKG1fZGljdGlvbmFyeSkgewogICAgICAgICB2b2lkKiB2YWx1ZTsKLSAgICAgICAg
Q0ZTdHJpbmdSZWYga2V5ID0gTWFyc2hhbGxpbmdIZWxwZXJzOjpMUENPTEVTVFJUb0NGU3RyaW5n
UmVmKHBzelByb3BOYW1lKTsKKyAgICAgICAgYXV0byBrZXkgPSBNYXJzaGFsbGluZ0hlbHBlcnM6
OkxQQ09MRVNUUlRvQ0ZTdHJpbmdSZWYocHN6UHJvcE5hbWUpOwogICAgICAgICBIUkVTVUxUIGhy
ID0gRV9GQUlMOwotICAgICAgICBpZiAoQ0ZEaWN0aW9uYXJ5R2V0VmFsdWVJZlByZXNlbnQobV9k
aWN0aW9uYXJ5LmdldCgpLCBrZXksIChjb25zdCB2b2lkKiopICZ2YWx1ZSkpIHsKKyAgICAgICAg
aWYgKENGRGljdGlvbmFyeUdldFZhbHVlSWZQcmVzZW50KG1fZGljdGlvbmFyeS5nZXQoKSwga2V5
LmdldCgpLCAoY29uc3Qgdm9pZCoqKSAmdmFsdWUpKSB7CiAgICAgICAgICAgICBpZiAoQ29udmVy
dENGVHlwZVRvVmFyaWFudChwVmFyLCB2YWx1ZSkpCiAgICAgICAgICAgICAgICAgaHIgPSBTX09L
OwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIGhyID0gRV9JTlZBTElEQVJHOwotICAgICAg
ICBDRlJlbGVhc2Uoa2V5KTsKICAgICAgICAgcmV0dXJuIGhyOwogICAgIH0KICNlbmRpZgpAQCAt
MTkxLDEwICsxOTAsOSBAQCBIUkVTVUxUIENGRGljdGlvbmFyeVByb3BlcnR5QmFnOjpXcml0ZShf
SW5fIExQQ09MRVNUUiBwc3pQcm9wTmFtZSwgX0luXyBWQVJJQU5UKgogICAgIH0KICAgICB2b2lk
KiBjZk9iajsKICAgICBpZiAoQ29udmVydFZhcmlhbnRUb0NGVHlwZShwVmFyLCAmY2ZPYmopKSB7
Ci0gICAgICAgIENGU3RyaW5nUmVmIGtleSA9IE1hcnNoYWxsaW5nSGVscGVyczo6TFBDT0xFU1RS
VG9DRlN0cmluZ1JlZihwc3pQcm9wTmFtZSk7Ci0gICAgICAgIENGRGljdGlvbmFyeUFkZFZhbHVl
KG1fZGljdGlvbmFyeS5nZXQoKSwga2V5LCBjZk9iaik7CisgICAgICAgIGF1dG8ga2V5ID0gTWFy
c2hhbGxpbmdIZWxwZXJzOjpMUENPTEVTVFJUb0NGU3RyaW5nUmVmKHBzelByb3BOYW1lKTsKKyAg
ICAgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUobV9kaWN0aW9uYXJ5LmdldCgpLCBrZXkuZ2V0KCks
IGNmT2JqKTsKICAgICAgICAgLy8gQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUgc2hvdWxkIGF1dG9tYXRp
Y2FsbHkgcmV0YWluIHRoZSBDRiBvYmplY3RzIHBhc3NlZCBpbiwgc28gcmVsZWFzZSB0aGVtIGhl
cmUKLSAgICAgICAgQ0ZSZWxlYXNlKGtleSk7CiAgICAgICAgIENGUmVsZWFzZShjZk9iaik7CiAg
ICAgICAgIHJldHVybiBTX09LOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL01hcnNoYWxsaW5nSGVscGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9N
YXJzaGFsbGluZ0hlbHBlcnMuY3BwCmluZGV4IDI1NjA4OTMxOTA0NTc0NmE5Mzk1ZTVkZWQ2YzZh
NzNjZGNkYmY4YWUuLmFiNmQ4NWJmZjc5N2E5OWI4ZTlmOGIyMmJjY2RjYzQ1ZDI3MDllNzAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01hcnNoYWxsaW5nSGVscGVycy5jcHAK
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vTWFyc2hhbGxpbmdIZWxwZXJzLmNwcApAQCAt
NTMsMzkgKzUzLDMzIEBAIEJTVFIgTWFyc2hhbGxpbmdIZWxwZXJzOjpVUkxUb0JTVFIoY29uc3Qg
VVJMJiB1cmwpCiB9CiAKICNpZiBVU0UoQ0YpCi1DRlVSTFJlZiBNYXJzaGFsbGluZ0hlbHBlcnM6
OlBhdGhTdHJpbmdUb0ZpbGVDRlVSTFJlZihjb25zdCBTdHJpbmcmIHN0cmluZykKK1JldGFpblB0
cjxDRlVSTFJlZj4gTWFyc2hhbGxpbmdIZWxwZXJzOjpQYXRoU3RyaW5nVG9GaWxlQ0ZVUkxSZWYo
Y29uc3QgU3RyaW5nJiBzdHJpbmcpCiB7Ci0gICAgcmV0dXJuIENGVVJMQ3JlYXRlV2l0aEZpbGVT
eXN0ZW1QYXRoKDAsIHN0cmluZy5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBrQ0ZVUkxXaW5kb3dz
UGF0aFN0eWxlLCBmYWxzZSk7CisgICAgcmV0dXJuIGFkb3B0Q0YoQ0ZVUkxDcmVhdGVXaXRoRmls
ZVN5c3RlbVBhdGgoMCwgc3RyaW5nLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGtDRlVSTFdpbmRv
d3NQYXRoU3R5bGUsIGZhbHNlKSk7CiB9CiAKIFN0cmluZyBNYXJzaGFsbGluZ0hlbHBlcnM6OkZp
bGVDRlVSTFJlZlRvUGF0aFN0cmluZyhDRlVSTFJlZiBmaWxlVVJMKQogewotICAgIENGU3RyaW5n
UmVmIHN0cmluZyA9IENGVVJMQ29weUZpbGVTeXN0ZW1QYXRoKGZpbGVVUkwsIGtDRlVSTFdpbmRv
d3NQYXRoU3R5bGUpOwotICAgIFN0cmluZyByZXN1bHQoc3RyaW5nKTsKLSAgICBDRlJlbGVhc2Uo
c3RyaW5nKTsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiBhZG9wdENGKENGVVJMQ29w
eUZpbGVTeXN0ZW1QYXRoKGZpbGVVUkwsIGtDRlVSTFdpbmRvd3NQYXRoU3R5bGUpKS5nZXQoKTsK
IH0KIAotQ0ZVUkxSZWYgTWFyc2hhbGxpbmdIZWxwZXJzOjpCU1RSVG9DRlVSTFJlZihCU1RSIHVy
bFN0cikKK1JldGFpblB0cjxDRlVSTFJlZj4gTWFyc2hhbGxpbmdIZWxwZXJzOjpCU1RSVG9DRlVS
TFJlZihCU1RSIHVybFN0cikKIHsKLSAgICBDRlN0cmluZ1JlZiB1cmxDRlN0cmluZyA9IEJTVFJU
b0NGU3RyaW5nUmVmKHVybFN0cik7CisgICAgYXV0byB1cmxDRlN0cmluZyA9IEJTVFJUb0NGU3Ry
aW5nUmVmKHVybFN0cik7CiAgICAgaWYgKCF1cmxDRlN0cmluZykKLSAgICAgICAgcmV0dXJuIDA7
Ci0KLSAgICBDRlVSTFJlZiB1cmxSZWYgPSBDRlVSTENyZWF0ZVdpdGhTdHJpbmcoMCwgdXJsQ0ZT
dHJpbmcsIDApOwotICAgIENGUmVsZWFzZSh1cmxDRlN0cmluZyk7CisgICAgICAgIHJldHVybiBu
dWxscHRyOwogCi0gICAgcmV0dXJuIHVybFJlZjsKKyAgICByZXR1cm4gYWRvcHRDRihDRlVSTENy
ZWF0ZVdpdGhTdHJpbmcobnVsbHB0ciwgdXJsQ0ZTdHJpbmcuZ2V0KCksIG51bGxwdHIpKTsKIH0K
IAotQ0ZTdHJpbmdSZWYgTWFyc2hhbGxpbmdIZWxwZXJzOjpCU1RSVG9DRlN0cmluZ1JlZihCU1RS
IHN0cikKK1JldGFpblB0cjxDRlN0cmluZ1JlZj4gTWFyc2hhbGxpbmdIZWxwZXJzOjpCU1RSVG9D
RlN0cmluZ1JlZihCU1RSIHN0cikKIHsKLSAgICByZXR1cm4gQ0ZTdHJpbmdDcmVhdGVXaXRoQ2hh
cmFjdGVycygwLCAoY29uc3QgVW5pQ2hhciopKHN0ciA/IHN0ciA6IFRFWFQoIiIpKSwgU3lzU3Ry
aW5nTGVuKHN0cikpOworICAgIHJldHVybiBhZG9wdENGKENGU3RyaW5nQ3JlYXRlV2l0aENoYXJh
Y3RlcnMoMCwgKGNvbnN0IFVuaUNoYXIqKShzdHIgPyBzdHIgOiBURVhUKCIiKSksIFN5c1N0cmlu
Z0xlbihzdHIpKSk7CiB9CiAKLUNGU3RyaW5nUmVmIE1hcnNoYWxsaW5nSGVscGVyczo6TFBDT0xF
U1RSVG9DRlN0cmluZ1JlZihMUENPTEVTVFIgc3RyKQorUmV0YWluUHRyPENGU3RyaW5nUmVmPiBN
YXJzaGFsbGluZ0hlbHBlcnM6OkxQQ09MRVNUUlRvQ0ZTdHJpbmdSZWYoTFBDT0xFU1RSIHN0cikK
IHsKLSAgICByZXR1cm4gQ0ZTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycygwLCAoY29uc3QgVW5p
Q2hhciopKHN0ciA/IHN0ciA6IFRFWFQoIiIpKSwgKENGSW5kZXgpKHN0ciA/IHdjc2xlbihzdHIp
IDogMCkpOworICAgIHJldHVybiBhZG9wdENGKENGU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMo
MCwgKGNvbnN0IFVuaUNoYXIqKShzdHIgPyBzdHIgOiBURVhUKCIiKSksIChDRkluZGV4KShzdHIg
PyB3Y3NsZW4oc3RyKSA6IDApKSk7CiB9CiAKIEJTVFIgTWFyc2hhbGxpbmdIZWxwZXJzOjpDRlN0
cmluZ1JlZlRvQlNUUihDRlN0cmluZ1JlZiBzdHIpCkBAIC0xMDAsOSArOTQsOSBAQCBpbnQgTWFy
c2hhbGxpbmdIZWxwZXJzOjpDRk51bWJlclJlZlRvSW50KENGTnVtYmVyUmVmIG51bSkKICAgICBy
ZXR1cm4gbnVtYmVyOwogfQogCi1DRk51bWJlclJlZiBNYXJzaGFsbGluZ0hlbHBlcnM6OmludFRv
Q0ZOdW1iZXJSZWYoaW50IG51bSkKK1JldGFpblB0cjxDRk51bWJlclJlZj4gTWFyc2hhbGxpbmdI
ZWxwZXJzOjppbnRUb0NGTnVtYmVyUmVmKGludCBudW0pCiB7Ci0gICAgcmV0dXJuIENGTnVtYmVy
Q3JlYXRlKDAsIGtDRk51bWJlclNJbnQzMlR5cGUsICZudW0pOworICAgIHJldHVybiBhZG9wdENG
KENGTnVtYmVyQ3JlYXRlKDAsIGtDRk51bWJlclNJbnQzMlR5cGUsICZudW0pKTsKIH0KICNlbmRp
ZgogCkBAIC0yNDQsNyArMjM4LDcgQEAgU0FGRUFSUkFZKiBNYXJzaGFsbGluZ0hlbHBlcnM6Oml1
bmtub3duQXJyYXlUb1NhZmVBcnJheShDRkFycmF5UmVmIGluQXJyYXkpCiAgICAgcmV0dXJuIHNh
OwogfQogCi1DRkFycmF5UmVmIE1hcnNoYWxsaW5nSGVscGVyczo6c2FmZUFycmF5VG9TdHJpbmdB
cnJheShTQUZFQVJSQVkqIGluQXJyYXkpCitSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gTWFyc2hhbGxp
bmdIZWxwZXJzOjpzYWZlQXJyYXlUb1N0cmluZ0FycmF5KFNBRkVBUlJBWSogaW5BcnJheSkKIHsK
ICAgICBsb25nIGxCb3VuZD0wLCB1Qm91bmQ9LTE7CiAgICAgSFJFU1VMVCBociA9IDo6U2FmZUFy
cmF5R2V0TEJvdW5kKGluQXJyYXksIDEsICZsQm91bmQpOwpAQCAtMjU3LDE0ICsyNTEsMTMgQEAg
Q0ZBcnJheVJlZiBNYXJzaGFsbGluZ0hlbHBlcnM6OnNhZmVBcnJheVRvU3RyaW5nQXJyYXkoU0FG
RUFSUkFZKiBpbkFycmF5KQogICAgICAgICBmb3IgKDsgbEJvdW5kIDw9IHVCb3VuZDsgbEJvdW5k
KyspIHsKICAgICAgICAgICAgIEJTdHJpbmcgc3RyOwogICAgICAgICAgICAgaHIgPSA6OlNhZmVB
cnJheUdldEVsZW1lbnQoaW5BcnJheSwgJmxCb3VuZCwgJnN0cik7Ci0gICAgICAgICAgICBpdGVt
c1tsQm91bmRdID0gQlNUUlRvQ0ZTdHJpbmdSZWYoc3RyKTsKKyAgICAgICAgICAgIGl0ZW1zW2xC
b3VuZF0gPSBCU1RSVG9DRlN0cmluZ1JlZihzdHIpLmxlYWtSZWYoKTsKICAgICAgICAgfQogICAg
IH0KLSAgICBDRkFycmF5UmVmIHJlc3VsdCA9IENGQXJyYXlDcmVhdGUoMCwgKGNvbnN0IHZvaWQq
KilpdGVtcy5kYXRhKCksIGxlbiwgJmtDRlR5cGVBcnJheUNhbGxCYWNrcyk7Ci0gICAgcmV0dXJu
IHJlc3VsdDsKKyAgICByZXR1cm4gYWRvcHRDRihDRkFycmF5Q3JlYXRlKDAsIChjb25zdCB2b2lk
KiopaXRlbXMuZGF0YSgpLCBsZW4sICZrQ0ZUeXBlQXJyYXlDYWxsQmFja3MpKTsKIH0KIAotQ0ZB
cnJheVJlZiBNYXJzaGFsbGluZ0hlbHBlcnM6OnNhZmVBcnJheVRvSW50QXJyYXkoU0FGRUFSUkFZ
KiBpbkFycmF5KQorUmV0YWluUHRyPENGQXJyYXlSZWY+IE1hcnNoYWxsaW5nSGVscGVyczo6c2Fm
ZUFycmF5VG9JbnRBcnJheShTQUZFQVJSQVkqIGluQXJyYXkpCiB7CiAgICAgbG9uZyBsQm91bmQ9
MCwgdUJvdW5kPS0xOwogICAgIEhSRVNVTFQgaHIgPSA6OlNhZmVBcnJheUdldExCb3VuZChpbkFy
cmF5LCAxLCAmbEJvdW5kKTsKQEAgLTI3NywxNCArMjcwLDEzIEBAIENGQXJyYXlSZWYgTWFyc2hh
bGxpbmdIZWxwZXJzOjpzYWZlQXJyYXlUb0ludEFycmF5KFNBRkVBUlJBWSogaW5BcnJheSkKICAg
ICAgICAgZm9yICg7IGxCb3VuZCA8PSB1Qm91bmQ7IGxCb3VuZCsrKSB7CiAgICAgICAgICAgICBp
bnQgbnVtID0gMDsKICAgICAgICAgICAgIGhyID0gOjpTYWZlQXJyYXlHZXRFbGVtZW50KGluQXJy
YXksICZsQm91bmQsICZudW0pOwotICAgICAgICAgICAgaXRlbXNbbEJvdW5kXSA9IFNVQ0NFRURF
RChocikgPyBpbnRUb0NGTnVtYmVyUmVmKG51bSkgOiBrQ0ZOdW1iZXJOYU47CisgICAgICAgICAg
ICBpdGVtc1tsQm91bmRdID0gU1VDQ0VFREVEKGhyKSA/IGludFRvQ0ZOdW1iZXJSZWYobnVtKS5s
ZWFrUmVmKCkgOiBrQ0ZOdW1iZXJOYU47CiAgICAgICAgIH0KICAgICB9Ci0gICAgQ0ZBcnJheVJl
ZiByZXN1bHQgPSBDRkFycmF5Q3JlYXRlKDAsIChjb25zdCB2b2lkKiopaXRlbXMuZGF0YSgpLCBs
ZW4sICZrQ0ZUeXBlQXJyYXlDYWxsQmFja3MpOwotICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0
dXJuIGFkb3B0Q0YoQ0ZBcnJheUNyZWF0ZSgwLCAoY29uc3Qgdm9pZCoqKWl0ZW1zLmRhdGEoKSwg
bGVuLCAma0NGVHlwZUFycmF5Q2FsbEJhY2tzKSk7CiB9CiAKLUNGQXJyYXlSZWYgTWFyc2hhbGxp
bmdIZWxwZXJzOjpzYWZlQXJyYXlUb0lVbmtub3duQXJyYXkoU0FGRUFSUkFZKiBpbkFycmF5KQor
UmV0YWluUHRyPENGQXJyYXlSZWY+IE1hcnNoYWxsaW5nSGVscGVyczo6c2FmZUFycmF5VG9JVW5r
bm93bkFycmF5KFNBRkVBUlJBWSogaW5BcnJheSkKIHsKICAgICBsb25nIGxCb3VuZD0wLCB1Qm91
bmQ9LTE7CiAgICAgSFJFU1VMVCBociA9IDo6U2FmZUFycmF5R2V0TEJvdW5kKGluQXJyYXksIDEs
ICZsQm91bmQpOwpAQCAtMjkzLDcgKzI4NSw3IEBAIENGQXJyYXlSZWYgTWFyc2hhbGxpbmdIZWxw
ZXJzOjpzYWZlQXJyYXlUb0lVbmtub3duQXJyYXkoU0FGRUFSUkFZKiBpbkFycmF5KQogICAgIGxv
bmcgbGVuID0gKFNVQ0NFRURFRChocikpID8gKHVCb3VuZC1sQm91bmQrMSkgOiAwOwogICAgIHZv
aWQqIGl0ZW1zID0gbnVsbHB0cjsKICAgICBociA9IDo6U2FmZUFycmF5QWNjZXNzRGF0YShpbkFy
cmF5LCAmaXRlbXMpOwotICAgIENGQXJyYXlSZWYgcmVzdWx0ID0gU1VDQ0VFREVEKGhyKSA/IENG
QXJyYXlDcmVhdGUoMCwgKGNvbnN0IHZvaWQqKikgaXRlbXMsIGxlbiwgJmtJVW5rbm93bkFycmF5
Q2FsbEJhY2tzKSA6IG51bGxwdHI7CisgICAgYXV0byByZXN1bHQgPSBTVUNDRUVERUQoaHIpID8g
YWRvcHRDRihDRkFycmF5Q3JlYXRlKDAsIChjb25zdCB2b2lkKiopIGl0ZW1zLCBsZW4sICZrSVVu
a25vd25BcnJheUNhbGxCYWNrcykpIDogbnVsbHB0cjsKICAgICBociA9IDo6U2FmZUFycmF5VW5h
Y2Nlc3NEYXRhKGluQXJyYXkpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9NYXJzaGFsbGluZ0hlbHBlcnMuaCBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL01hcnNoYWxsaW5nSGVscGVycy5oCmluZGV4IDJjNDg2MDM2YTBjYzcwMTVj
NjA4YzhhMDdhNmQwMTVkNDE3OTExNTQuLjk0MWE0Mjg5ODE0MWFlNTkwMzM1MTAzMGM0ZTI5Yzgz
MzY0OGIyYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01hcnNoYWxsaW5n
SGVscGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01hcnNoYWxsaW5nSGVscGVy
cy5oCkBAIC0yOSw2ICsyOSw3IEBACiAKICNpZiBVU0UoQ0YpCiAjaW5jbHVkZSA8Q29yZUZvdW5k
YXRpb24vQ29yZUZvdW5kYXRpb24uaD4KKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAjZW5k
aWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDIsMTQgKzQzLDE0IEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgQlNUUiBVUkxUb0JTVFIoY29uc3QgVVJMJik7CiAKICNpZiBVU0UoQ0YpCi0gICAg
c3RhdGljIENGVVJMUmVmIFBhdGhTdHJpbmdUb0ZpbGVDRlVSTFJlZihjb25zdCBXVEY6OlN0cmlu
ZyYpOworICAgIHN0YXRpYyBSZXRhaW5QdHI8Q0ZVUkxSZWY+IFBhdGhTdHJpbmdUb0ZpbGVDRlVS
TFJlZihjb25zdCBXVEY6OlN0cmluZyYpOwogICAgIHN0YXRpYyBXVEY6OlN0cmluZyBGaWxlQ0ZV
UkxSZWZUb1BhdGhTdHJpbmcoQ0ZVUkxSZWYgZmlsZVVSTCk7Ci0gICAgc3RhdGljIENGVVJMUmVm
IEJTVFJUb0NGVVJMUmVmKEJTVFIpOwotICAgIHN0YXRpYyBDRlN0cmluZ1JlZiBCU1RSVG9DRlN0
cmluZ1JlZihCU1RSKTsKLSAgICBzdGF0aWMgQ0ZTdHJpbmdSZWYgTFBDT0xFU1RSVG9DRlN0cmlu
Z1JlZihMUENPTEVTVFIpOworICAgIHN0YXRpYyBSZXRhaW5QdHI8Q0ZVUkxSZWY+IEJTVFJUb0NG
VVJMUmVmKEJTVFIpOworICAgIHN0YXRpYyBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IEJTVFJUb0NG
U3RyaW5nUmVmKEJTVFIpOworICAgIHN0YXRpYyBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IExQQ09M
RVNUUlRvQ0ZTdHJpbmdSZWYoTFBDT0xFU1RSKTsKICAgICBzdGF0aWMgQlNUUiBDRlN0cmluZ1Jl
ZlRvQlNUUihDRlN0cmluZ1JlZik7CiAgICAgc3RhdGljIGludCBDRk51bWJlclJlZlRvSW50KENG
TnVtYmVyUmVmKTsKLSAgICBzdGF0aWMgQ0ZOdW1iZXJSZWYgaW50VG9DRk51bWJlclJlZihpbnQp
OworICAgIHN0YXRpYyBSZXRhaW5QdHI8Q0ZOdW1iZXJSZWY+IGludFRvQ0ZOdW1iZXJSZWYoaW50
KTsKICAgICBzdGF0aWMgQ0ZBYnNvbHV0ZVRpbWUgREFURVRvQ0ZBYnNvbHV0ZVRpbWUoREFURSk7
CiAgICAgc3RhdGljIERBVEUgQ0ZBYnNvbHV0ZVRpbWVUb0RBVEUoQ0ZBYnNvbHV0ZVRpbWUpOwog
ICAgIHN0YXRpYyBTQUZFQVJSQVkqIHN0cmluZ0FycmF5VG9TYWZlQXJyYXkoQ0ZBcnJheVJlZik7
CkBAIC02Myw5ICs2NCw5IEBAIHB1YmxpYzoKIAogI2lmIFVTRShDRikKICAgICBzdGF0aWMgU0FG
RUFSUkFZKiBpdW5rbm93bkFycmF5VG9TYWZlQXJyYXkoQ0ZBcnJheVJlZik7Ci0gICAgc3RhdGlj
IENGQXJyYXlSZWYgc2FmZUFycmF5VG9TdHJpbmdBcnJheShTQUZFQVJSQVkqKTsKLSAgICBzdGF0
aWMgQ0ZBcnJheVJlZiBzYWZlQXJyYXlUb0ludEFycmF5KFNBRkVBUlJBWSopOwotICAgIHN0YXRp
YyBDRkFycmF5UmVmIHNhZmVBcnJheVRvSVVua25vd25BcnJheShTQUZFQVJSQVkqKTsKKyAgICBz
dGF0aWMgUmV0YWluUHRyPENGQXJyYXlSZWY+IHNhZmVBcnJheVRvU3RyaW5nQXJyYXkoU0FGRUFS
UkFZKik7CisgICAgc3RhdGljIFJldGFpblB0cjxDRkFycmF5UmVmPiBzYWZlQXJyYXlUb0ludEFy
cmF5KFNBRkVBUlJBWSopOworICAgIHN0YXRpYyBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gc2FmZUFy
cmF5VG9JVW5rbm93bkFycmF5KFNBRkVBUlJBWSopOwogICAgIHN0YXRpYyBjb25zdCB2b2lkKiBJ
VW5rbm93blJldGFpbkNhbGxiYWNrKENGQWxsb2NhdG9yUmVmLCBjb25zdCB2b2lkKik7CiAgICAg
c3RhdGljIHZvaWQgSVVua25vd25SZWxlYXNlQ2FsbGJhY2soQ0ZBbGxvY2F0b3JSZWYsIGNvbnN0
IHZvaWQqKTsKICAgICBzdGF0aWMgQ0ZBcnJheUNhbGxCYWNrcyBrSVVua25vd25BcnJheUNhbGxC
YWNrczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkFwcGxpY2F0aW9u
Q2FjaGUuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQXBwbGljYXRpb25DYWNoZS5j
cHAKaW5kZXggZGUxMjUwZWNkZTk3NmE2MmYyMjU4YzdkYzc0ZjZlOGVjMzc0YjJjOC4uMDhkZDQw
MWViNzNkODVlMGYzY2U1ZjIzNmM5YzA2ZmY2YTRkNmM1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViQXBwbGljYXRpb25DYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViQXBwbGljYXRpb25DYWNoZS5jcHAKQEAgLTIwMCw3ICsyMDAsNyBAQCBI
UkVTVUxUIFdlYkFwcGxpY2F0aW9uQ2FjaGU6Om9yaWdpbnNXaXRoQ2FjaGUoSVByb3BlcnR5QmFn
Kiogb3JpZ2lucykKICAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlRGljdGlvbmFyeVJlZj4gZGljdGlv
bmFyeSA9IGFkb3B0Q0YoCiAgICAgICAgIENGRGljdGlvbmFyeUNyZWF0ZU11dGFibGUoMCwgMCwg
JmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNh
bGxCYWNrcykpOwogCi0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBrZXkgPSBhZG9wdENGKE1h
cnNoYWxsaW5nSGVscGVyczo6QlNUUlRvQ0ZTdHJpbmdSZWYoX2JzdHJfdChMIm9yaWdpbnMiKSkp
OworICAgIGF1dG8ga2V5ID0gTWFyc2hhbGxpbmdIZWxwZXJzOjpCU1RSVG9DRlN0cmluZ1JlZihf
YnN0cl90KEwib3JpZ2lucyIpKTsKICAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkaWN0aW9uYXJ5
LmdldCgpLCBrZXkuZ2V0KCksIGFycmF5SXRlbS5nZXQoKSk7CiAKICAgICBDT01QdHI8Q0ZEaWN0
aW9uYXJ5UHJvcGVydHlCYWc+IHJlc3VsdCA9IENGRGljdGlvbmFyeVByb3BlcnR5QmFnOjpjcmVh
dGVJbnN0YW5jZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCmluZGV4IDliODZhYTQ1
YWQ0MzlmNGZiOWI4MmQ0MTQzMDcxZDVkYmNmMzgyNjMuLjBlNjY5MDgyN2Y4MGFiMTdlM2UzMGI3
ZTJhODkyNWQxMzdjNjZkMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKQEAgLTEw
MzgsMjEgKzEwMzgsMjEgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRG
YWlsVG9TdGFydFBsdWdpbihjb25zdCBQbHVnaW5WaWV3JiBwbHVnaW4KICAgICBpZiAoIXBsdWdp
blZpZXcucGx1Z2luc1BhZ2UoKS5pc051bGwoKSkgewogICAgICAgICBVUkwgcGx1Z2luUGFnZVVS
TCA9IGZyYW1lLT5kb2N1bWVudCgpLT5jb21wbGV0ZVVSTChzdHJpcExlYWRpbmdBbmRUcmFpbGlu
Z0hUTUxTcGFjZXMocGx1Z2luVmlldy5wbHVnaW5zUGFnZSgpKSk7CiAgICAgICAgIGlmIChwbHVn
aW5QYWdlVVJMLnByb3RvY29sSXNJbkhUVFBGYW1pbHkoKSkgewotICAgICAgICAgICAgc3RhdGlj
IENGU3RyaW5nUmVmIGtleSA9IE1hcnNoYWxsaW5nSGVscGVyczo6TFBDT0xFU1RSVG9DRlN0cmlu
Z1JlZihXZWJLaXRFcnJvclBsdWdJblBhZ2VVUkxTdHJpbmdLZXkpOwotICAgICAgICAgICAgQ0ZE
aWN0aW9uYXJ5U2V0VmFsdWUodXNlckluZm8uZ2V0KCksIGtleSwgcGx1Z2luUGFnZVVSTC5zdHJp
bmcoKS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKKyAgICAgICAgICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+PiBrZXkgPSBNYXJzaGFsbGluZ0hlbHBlcnM6
OkxQQ09MRVNUUlRvQ0ZTdHJpbmdSZWYoV2ViS2l0RXJyb3JQbHVnSW5QYWdlVVJMU3RyaW5nS2V5
KTsKKyAgICAgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHVzZXJJbmZvLmdldCgpLCBrZXku
Z2V0KCkuZ2V0KCksIHBsdWdpblBhZ2VVUkwuc3RyaW5nKCkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQo
KSk7CiAgICAgICAgIH0KICAgICB9CiAKICAgICBpZiAoIXBsdWdpblZpZXcubWltZVR5cGUoKS5p
c051bGwoKSkgewotICAgICAgICBzdGF0aWMgQ0ZTdHJpbmdSZWYga2V5ID0gTWFyc2hhbGxpbmdI
ZWxwZXJzOjpMUENPTEVTVFJUb0NGU3RyaW5nUmVmKFdlYktpdEVycm9yTUlNRVR5cGVLZXkpOwot
ICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZSh1c2VySW5mby5nZXQoKSwga2V5LCBwbHVnaW5W
aWV3Lm1pbWVUeXBlKCkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CisgICAgICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+PiBrZXkgPSBNYXJzaGFsbGluZ0hl
bHBlcnM6OkxQQ09MRVNUUlRvQ0ZTdHJpbmdSZWYoV2ViS2l0RXJyb3JNSU1FVHlwZUtleSk7Cisg
ICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHVzZXJJbmZvLmdldCgpLCBrZXkuZ2V0KCkuZ2V0
KCksIHBsdWdpblZpZXcubWltZVR5cGUoKS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKICAgICB9
CiAKICAgICBpZiAocGx1Z2luVmlldy5wbHVnaW4oKSkgewogICAgICAgICBTdHJpbmcgcGx1Z2lu
TmFtZSA9IHBsdWdpblZpZXcucGx1Z2luKCktPm5hbWUoKTsKICAgICAgICAgaWYgKCFwbHVnaW5O
YW1lLmlzTnVsbCgpKSB7Ci0gICAgICAgICAgICBzdGF0aWMgQ0ZTdHJpbmdSZWYga2V5ID0gTWFy
c2hhbGxpbmdIZWxwZXJzOjpMUENPTEVTVFJUb0NGU3RyaW5nUmVmKFdlYktpdEVycm9yUGx1Z0lu
TmFtZUtleSk7Ci0gICAgICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZSh1c2VySW5mby5nZXQo
KSwga2V5LCBwbHVnaW5OYW1lLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOworICAgICAgICAgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxDRlN0cmluZ1JlZj4+IGtleSA9IE1hcnNo
YWxsaW5nSGVscGVyczo6TFBDT0xFU1RSVG9DRlN0cmluZ1JlZihXZWJLaXRFcnJvclBsdWdJbk5h
bWVLZXkpOworICAgICAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUodXNlckluZm8uZ2V0KCks
IGtleS5nZXQoKS5nZXQoKSwgcGx1Z2luTmFtZS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKICAg
ICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
RG93bmxvYWRDRk5ldC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEb3dubG9hZENG
TmV0LmNwcAppbmRleCBhMzMzYTJmNjI3NjdlYmJhZWMzYzgzYjZiMDc2ZjBjMzVkMDNkNTBjLi5l
YTBiNjc1MWM1NTRlODI3ZGM5ODI1NWNkNGE3MTU3ZjFkNWFkMmIyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEb3dubG9hZENGTmV0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJEb3dubG9hZENGTmV0LmNwcApAQCAtMTc4LDcgKzE3OCw3IEBAIEhS
RVNVTFQgV2ViRG93bmxvYWQ6OmluaXRUb1Jlc3VtZVdpdGhCdW5kbGUoX0luXyBCU1RSIGJ1bmRs
ZVBhdGgsIF9Jbl9vcHRfIElXZWJECiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZGlkUmVjZWl2ZVJlc3BvbnNlQ2FsbGJhY2ssIHdpbGxSZXN1bWVXaXRoUmVzcG9uc2VDYWxsYmFj
aywgZGlkUmVjZWl2ZURhdGFDYWxsYmFjaywgc2hvdWxkRGVjb2RlRGF0YU9mTUlNRVR5cGVDYWxs
YmFjaywgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVjaWRlRGVzdGluYXRp
b25XaXRoU3VnZ2VzdGVkT2JqZWN0TmFtZUNhbGxiYWNrLCBkaWRDcmVhdGVEZXN0aW5hdGlvbkNh
bGxiYWNrLCBkaWRGaW5pc2hDYWxsYmFjaywgZGlkRmFpbENhbGxiYWNrfTsKICAgICAKLSAgICBS
ZXRhaW5QdHI8Q0ZVUkxSZWY+IHBhdGhVUkwgPSBhZG9wdENGKE1hcnNoYWxsaW5nSGVscGVyczo6
UGF0aFN0cmluZ1RvRmlsZUNGVVJMUmVmKFN0cmluZyhidW5kbGVQYXRoLCBTeXNTdHJpbmdMZW4o
YnVuZGxlUGF0aCkpKSk7CisgICAgYXV0byBwYXRoVVJMID0gTWFyc2hhbGxpbmdIZWxwZXJzOjpQ
YXRoU3RyaW5nVG9GaWxlQ0ZVUkxSZWYoU3RyaW5nKGJ1bmRsZVBhdGgsIFN5c1N0cmluZ0xlbihi
dW5kbGVQYXRoKSkpOwogICAgIEFTU0VSVChwYXRoVVJMKTsKIAogICAgIG1fZG93bmxvYWQgPSBh
ZG9wdENGKENGVVJMRG93bmxvYWRDcmVhdGVXaXRoUmVzdW1lRGF0YSgwLCByZXN1bWVEYXRhLmdl
dCgpLCBwYXRoVVJMLmdldCgpLCAmY2xpZW50KSk7CkBAIC0yODgsOSArMjg4LDggQEAgSFJFU1VM
VCBXZWJEb3dubG9hZDo6c2V0RGVzdGluYXRpb24oX0luXyBCU1RSIHBhdGgsIEJPT0wgYWxsb3dP
dmVyd3JpdGUpCiAgICAgbV9kZXN0aW5hdGlvbiA9IFN0cmluZyhwYXRoLCBTeXNTdHJpbmdMZW4o
cGF0aCkpOwogICAgIG1fYnVuZGxlUGF0aCA9IG1fZGVzdGluYXRpb24gKyBEb3dubG9hZEJ1bmRs
ZTo6ZmlsZUV4dGVuc2lvbigpOwogCi0gICAgQ0ZVUkxSZWYgcGF0aFVSTCA9IE1hcnNoYWxsaW5n
SGVscGVyczo6UGF0aFN0cmluZ1RvRmlsZUNGVVJMUmVmKG1fYnVuZGxlUGF0aCk7Ci0gICAgQ0ZV
UkxEb3dubG9hZFNldERlc3RpbmF0aW9uKG1fZG93bmxvYWQuZ2V0KCksIHBhdGhVUkwsICEhYWxs
b3dPdmVyd3JpdGUpOwotICAgIENGUmVsZWFzZShwYXRoVVJMKTsKKyAgICBhdXRvIHBhdGhVUkwg
PSBNYXJzaGFsbGluZ0hlbHBlcnM6OlBhdGhTdHJpbmdUb0ZpbGVDRlVSTFJlZihtX2J1bmRsZVBh
dGgpOworICAgIENGVVJMRG93bmxvYWRTZXREZXN0aW5hdGlvbihtX2Rvd25sb2FkLmdldCgpLCBw
YXRoVVJMLmdldCgpLCAhIWFsbG93T3ZlcndyaXRlKTsKIAogICAgIExPRyhEb3dubG9hZCwgIldl
YkRvd25sb2FkIC0gU2V0IGRlc3RpbmF0aW9uIHRvICVzIiwgbV9idW5kbGVQYXRoLmFzY2lpKCku
ZGF0YSgpKTsKIApAQCAtMzY4LDkgKzM2Nyw3IEBAIENGVVJMUmVxdWVzdFJlZiBXZWJEb3dubG9h
ZDo6d2lsbFNlbmRSZXF1ZXN0KENGVVJMUmVxdWVzdFJlZiByZXF1ZXN0LCBDRlVSTFJlc3BvCiAK
ICAgICBDT01QdHI8V2ViTXV0YWJsZVVSTFJlcXVlc3Q+IGZpbmFsV2ViUmVxdWVzdChBZG9wdENP
TSwgV2ViTXV0YWJsZVVSTFJlcXVlc3Q6OmNyZWF0ZUluc3RhbmNlKGZpbmFsUmVxdWVzdC5nZXQo
KSkpOwogICAgIG1fcmVxdWVzdCA9IGZpbmFsV2ViUmVxdWVzdC5nZXQoKTsKLSAgICBDRlVSTFJl
cXVlc3RSZWYgcmVzdWx0ID0gZmluYWxXZWJSZXF1ZXN0LT5yZXNvdXJjZVJlcXVlc3QoKS5jZlVS
TFJlcXVlc3QoVXBkYXRlSFRUUEJvZHkpOwotICAgIENGUmV0YWluKHJlc3VsdCk7Ci0gICAgcmV0
dXJuIHJlc3VsdDsKKyAgICByZXR1cm4gcmV0YWluUHRyKGZpbmFsV2ViUmVxdWVzdC0+cmVzb3Vy
Y2VSZXF1ZXN0KCkuY2ZVUkxSZXF1ZXN0KFVwZGF0ZUhUVFBCb2R5KSkubGVha1JlZigpOwogfQog
CiB2b2lkIFdlYkRvd25sb2FkOjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoQ0ZV
UkxBdXRoQ2hhbGxlbmdlUmVmIGNoYWxsZW5nZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYkhpc3RvcnkuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSGlz
dG9yeS5jcHAKaW5kZXggNjFjMDI2YjdhZTAwZDgyOGIwMmRlYzNlYTNlNGI0ZDc5MDg4YWExMS4u
OWVmYWUyMjc5M2M3MGQwODYyOGNjOWNlY2U5MjNlYmM0YzI5N2RmNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSGlzdG9yeS5jcHAKKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViSGlzdG9yeS5jcHAKQEAgLTYxLDcgKzYxLDcgQEAgc3RhdGljIENPTVB0cjxJ
UHJvcGVydHlCYWc+IGNyZWF0ZVVzZXJJbmZvRnJvbUFycmF5KEJTVFIgbm90aWZpY2F0aW9uU3Ry
LCBJV2ViSGkKICAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlRGljdGlvbmFyeVJlZj4gZGljdGlvbmFy
eSA9IGFkb3B0Q0YoCiAgICAgICAgIENGRGljdGlvbmFyeUNyZWF0ZU11dGFibGUoMCwgMCwgJmtD
RlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxC
YWNrcykpOwogCi0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBrZXkgPSBhZG9wdENGKE1hcnNo
YWxsaW5nSGVscGVyczo6QlNUUlRvQ0ZTdHJpbmdSZWYobm90aWZpY2F0aW9uU3RyKSk7CisgICAg
YXV0byBrZXkgPSBNYXJzaGFsbGluZ0hlbHBlcnM6OkJTVFJUb0NGU3RyaW5nUmVmKG5vdGlmaWNh
dGlvblN0cik7CiAgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGljdGlvbmFyeS5nZXQoKSwga2V5
LmdldCgpLCBhcnJheUl0ZW0uZ2V0KCkpOwogCiAgICAgQ09NUHRyPENGRGljdGlvbmFyeVByb3Bl
cnR5QmFnPiByZXN1bHQgPSBDRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZzo6Y3JlYXRlSW5zdGFuY2Uo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkxvY2FsaXphYmxlU3Ry
aW5ncy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJMb2NhbGl6YWJsZVN0cmluZ3Mu
Y3BwCmluZGV4IGZjODBmZTk2ZjI5NDI2ZGZlMTVmZWRkNTJiNTRjNTQ0ZWQ1ZGUwZmEuLmU1OGQx
Yjk2ZTYwNzU3NTMxMzYyMDQ1OGMyMTExODhhNWU5OWUzMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYkxvY2FsaXphYmxlU3RyaW5ncy5jcHAKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViTG9jYWxpemFibGVTdHJpbmdzLmNwcApAQCAtOTUsMTkgKzk1LDE5
IEBAIExvY2FsaXplZFN0cmluZzo6b3BlcmF0b3IgTFBDVFNUUigpIGNvbnN0CiAgICAgcmV0dXJu
IG1fc3RyaW5nLndpZGVDaGFyYWN0ZXJzKCkuZGF0YSgpOwogfQogCi1zdGF0aWMgQ0ZCdW5kbGVS
ZWYgY3JlYXRlV2ViS2l0QnVuZGxlKCkKK3N0YXRpYyB2b2lkIGNyZWF0ZVdlYktpdEJ1bmRsZSgp
CiB7Ci0gICAgc3RhdGljIENGQnVuZGxlUmVmIGJ1bmRsZTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8UmV0YWluUHRyPENGQnVuZGxlUmVmPj4gYnVuZGxlOwogICAgIHN0YXRpYyBib29sIGlu
aXRpYWxpemVkOwogCiAgICAgaWYgKGluaXRpYWxpemVkKQotICAgICAgICByZXR1cm4gYnVuZGxl
OworICAgICAgICByZXR1cm47CiAgICAgaW5pdGlhbGl6ZWQgPSB0cnVlOwogCiAgICAgV0NIQVIg
cGF0aFN0cltNQVhfUEFUSF07CiAgICAgRFdPUkQgbGVuZ3RoID0gOjpHZXRNb2R1bGVGaWxlTmFt
ZVcoZ0luc3RhbmNlLCBwYXRoU3RyLCBNQVhfUEFUSCk7CiAgICAgaWYgKCFsZW5ndGggfHwgKGxl
bmd0aCA9PSBNQVhfUEFUSCAmJiBHZXRMYXN0RXJyb3IoKSA9PSBFUlJPUl9JTlNVRkZJQ0lFTlRf
QlVGRkVSKSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAg
ICAgYm9vbCBmb3VuZCA9IGZhbHNlOwogICAgIGZvciAoaW50IGkgPSBsZW5ndGggLSAxOyBpID49
IDA7IGktLSkgewpAQCAtMTIyLDIyICsxMjIsMjAgQEAgc3RhdGljIENGQnVuZGxlUmVmIGNyZWF0
ZVdlYktpdEJ1bmRsZSgpCiAgICAgICAgIH0KICAgICB9CiAgICAgaWYgKCFmb3VuZCkKLSAgICAg
ICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgaWYgKHdjc2NhdF9z
KHBhdGhTdHIsIE1BWF9QQVRILCBMIlxcV2ViS2l0LnJlc291cmNlcyIpKQotICAgICAgICByZXR1
cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBTdHJpbmcgYnVuZGxlUGF0aFN0
cmluZyhwYXRoU3RyKTsKICAgICBpZiAoIWJ1bmRsZVBhdGhTdHJpbmcpCi0gICAgICAgIHJldHVy
biAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIENGVVJMUmVmIGJ1bmRsZVVSTFJl
ZiA9IENGVVJMQ3JlYXRlV2l0aEZpbGVTeXN0ZW1QYXRoKDAsIGJ1bmRsZVBhdGhTdHJpbmcuY3Jl
YXRlQ0ZTdHJpbmcoKS5nZXQoKSwga0NGVVJMV2luZG93c1BhdGhTdHlsZSwgdHJ1ZSk7CisgICAg
YXV0byBidW5kbGVVUkxSZWYgPSBhZG9wdENGKENGVVJMQ3JlYXRlV2l0aEZpbGVTeXN0ZW1QYXRo
KDAsIGJ1bmRsZVBhdGhTdHJpbmcuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwga0NGVVJMV2luZG93
c1BhdGhTdHlsZSwgdHJ1ZSkpOwogICAgIGlmICghYnVuZGxlVVJMUmVmKQotICAgICAgICByZXR1
cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBidW5kbGUgPSBDRkJ1bmRsZUNy
ZWF0ZSgwLCBidW5kbGVVUkxSZWYpOwotICAgIENGUmVsZWFzZShidW5kbGVVUkxSZWYpOwotICAg
IHJldHVybiBidW5kbGU7CisgICAgYnVuZGxlLmdldCgpID0gYWRvcHRDRihDRkJ1bmRsZUNyZWF0
ZSgwLCBidW5kbGVVUkxSZWYuZ2V0KCkpKTsKIH0KIAogc3RhdGljIENGQnVuZGxlUmVmIGNmQnVu
ZGxlRm9yU3RyaW5nc0J1bmRsZShXZWJMb2NhbGl6YWJsZVN0cmluZ3NCdW5kbGUqIHN0cmluZ3NC
dW5kbGUpCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5k
ZXggMmY5MmIxODBjZmUxZmJmOWIwYWJlNmM0Y2U4OTY0YTNjZGU2YjU0OC4uZjNmNTg0ZjBmMmE1
N2I4ZThkYjhjN2FhNjFkYWRmMWU0YmUwYzc3NiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9n
CisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0IEBACisyMDIxLTAzLTA0ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgUmVkdWNlIHVzZSBvZiBDRlJl
dGFpbigpIC8gQ0ZSZWxlYXNlKCkgLyBDRkF1dG9SZWxlYXNlKCkgaW4gV2ViS2l0CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjI3NjAKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWR1Y2UgdXNlIG9mIENG
UmV0YWluKCkgLyBDRlJlbGVhc2UoKSAvIENGQXV0b1JlbGVhc2UoKSBpbiBXZWJLaXQgYnkgdXNp
bmcgUmV0YWluUHRyPD4uCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9UZXN0TmV0c2NhcGVQ
bHVnSW4vUGx1Z2luT2JqZWN0TWFjLm1tOgorICAgICAgICAoY3JlYXRlQ29yZUFuaW1hdGlvbkxh
eWVyKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvQWNjZXNzaWJpbGl0eUNvbW1vbk1h
Yy5tbToKKyAgICAgICAgKCtbTlNTdHJpbmcgc3RyaW5nV2l0aEpTU3RyaW5nUmVmOl0pOgorICAg
ICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbToKKyAgICAgICAgKGFj
dGl2YXRlRm9udElPUyk6CisgICAgICAgIChkdW1wUmVuZGVyVHJlZSk6CisgICAgICAgIChpbnZh
bGlkYXRlQW55UHJldmlvdXNXYWl0VG9EdW1wV2F0Y2hkb2cpOgorICAgICAgICAoc2V0V2FpdFRv
RHVtcFdhdGNoZG9nKToKKyAgICAgICAgKGR1bXApOgorICAgICAgICAocnVuVGVzdCk6CisgICAg
ICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlTWFjLmg6CisgICAgICAgICog
RHVtcFJlbmRlclRyZWUvbWFjL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIubW06CisgICAgICAgICgt
W0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIgbW91c2VTY3JvbGxCeVg6YW5kWTpjb250aW51b3VzbHk6
XSk6CisgICAgICAgICgtW0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIgbW91c2VTY3JvbGxCeVg6YW5k
WTp3aXRoV2hlZWw6YW5kTW9tZW50dW1QaGFzZXM6XSk6CisgICAgICAgICogRHVtcFJlbmRlclRy
ZWUvbWFjL1BpeGVsRHVtcFN1cHBvcnRNYWMubW06CisgICAgICAgICh0YWtlV2luZG93U25hcHNo
b3QpOgorICAgICAgICAoY3JlYXRlQml0bWFwQ29udGV4dEZyb21XZWJWaWV3KToKKyAgICAgICAg
KiBEdW1wUmVuZGVyVHJlZS9tYWMvUmVzb3VyY2VMb2FkRGVsZWdhdGUubW06CisgICAgICAgICgt
W1Jlc291cmNlTG9hZERlbGVnYXRlIHdlYlZpZXc6cmVzb3VyY2U6d2lsbFNlbmRSZXF1ZXN0OnJl
ZGlyZWN0UmVzcG9uc2U6ZnJvbURhdGFTb3VyY2U6XSk6CisgICAgICAgICogRHVtcFJlbmRlclRy
ZWUvbWFjL1Rlc3RSdW5uZXJNYWMubW06CisgICAgICAgIChUZXN0UnVubmVyOjphZGREaXNhbGxv
d2VkVVJMKToKKyAgICAgICAgKFRlc3RSdW5uZXI6OnNldFdhaXRUb0R1bXApOgorICAgICAgICAq
IEZvbnRXaXRoRmVhdHVyZXMvRm9udFdpdGhGZWF0dXJlcy9tYWluLmNwcDoKKyAgICAgICAgKGNv
bnN0cnVjdEZvbnRXaXRoVHJ1ZVR5cGVGZWF0dXJlKToKKyAgICAgICAgKGNvbnN0cnVjdEZvbnRX
aXRoT3BlblR5cGVGZWF0dXJlKToKKyAgICAgICAgKGRyYXdUZXh0KToKKyAgICAgICAgKG1haW4p
OgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5k
bGVQYWdlLmNwcDoKKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGVQYWdlOjpkdW1wRE9NQXNX
ZWJBcmNoaXZlKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2lv
cy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50SU9TLm1tOgorICAgICAgICAoK1tOU1N0cmluZyBzdHJp
bmdXaXRoSlNTdHJpbmdSZWY6XSk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9tYWMvQWNjZXNzaWJpbGl0eUNvbW1vbk1hYy5tbToKKyAgICAgICAgKCtbTlNTdHJp
bmcgc3RyaW5nV2l0aEpTU3RyaW5nUmVmOl0pOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIv
aW9zL0hJREV2ZW50R2VuZXJhdG9yLm1tOgorICAgICAgICAoLVtISURFdmVudEdlbmVyYXRvciBf
Y3JlYXRlSU9ISURFdmVudFdpdGhJbmZvOl0pOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIv
bWFjL0V2ZW50U2VuZGVyUHJveHkubW06CisgICAgICAgICgtW0V2ZW50U2VuZGVyU3ludGhldGlj
RXZlbnQgaW5pdFByZXNzdXJlRXZlbnRBdExvY2F0aW9uOmdsb2JhbExvY2F0aW9uOnN0YWdlOnBy
ZXNzdXJlOnN0YWdlVHJhbnNpdGlvbjpwaGFzZTp0aW1lOmV2ZW50TnVtYmVyOndpbmRvdzpdKToK
KyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL21hYy9VSVNjcmlwdENvbnRyb2xsZXJNYWMubW06
CisgICAgICAgIChXVFI6OmNmU3RyaW5nKToKKyAgICAgICAgKFdUUjo6VUlTY3JpcHRDb250cm9s
bGVyTWFjOjpyZXBsYWNlVGV4dEF0UmFuZ2UpOgorCiAyMDIxLTAzLTA0ICBNYXR0IExld2lzICA8
amxld2lzM0BhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIEFwcGxlIFNpbGljb24gRGV2aWNlcyB0
byBCaWcgU3VyIGJ1aWxkZXJzIGFuZCB0ZXN0ZXJzLgpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJl
bmRlclRyZWUvVGVzdE5ldHNjYXBlUGx1Z0luL1BsdWdpbk9iamVjdE1hYy5tbSBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL1Rlc3ROZXRzY2FwZVBsdWdJbi9QbHVnaW5PYmplY3RNYWMubW0KaW5kZXgg
NTlmNjU3ZmQzZTRjNTk5MzAzYzdmNDA0MDQxMjJjYjQ0Yjc5Y2YxNC4uMmYyNmQ4NGNmNmY0ODdi
NGI5NjdlM2I4ZmYyNDE2MDJmN2JlMGNjNCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvVGVzdE5ldHNjYXBlUGx1Z0luL1BsdWdpbk9iamVjdE1hYy5tbQorKysgYi9Ub29scy9EdW1w
UmVuZGVyVHJlZS9UZXN0TmV0c2NhcGVQbHVnSW4vUGx1Z2luT2JqZWN0TWFjLm1tCkBAIC02NCwy
MyArNjQsMTUgQEAgQ0ZUeXBlUmVmIGNyZWF0ZUNvcmVBbmltYXRpb25MYXllcigpCiAgICAgLy8g
VHVybiBvZmYgZGVmYXVsdCBhbmltYXRpb25zLgogICAgIFtjYUxheWVyIHNldFN0eWxlOkB7IEAi
YWN0aW9ucyI6IGFjdGlvbnMgfV07CiAgICAgW2NhTGF5ZXIgc2V0TmVlZHNEaXNwbGF5T25Cb3Vu
ZHNDaGFuZ2U6WUVTXTsKLQogICAgIFtjYUxheWVyIHNldEJvdW5kczpDR1JlY3RNYWtlKDAsIDAs
IDIwMCwgMTAwKV07CiAgICAgW2NhTGF5ZXIgc2V0QW5jaG9yUG9pbnQ6Q0dQb2ludFplcm9dOwot
ICAgIAotICAgIENHQ29sb3JSZWYgY29sb3IgPSBDR0NvbG9yQ3JlYXRlR2VuZXJpY1JHQigwLjUs
IDAuNSwgMSwgMSk7Ci0gICAgW2NhTGF5ZXIgc2V0QmFja2dyb3VuZENvbG9yOmNvbG9yXTsKLSAg
ICBDR0NvbG9yUmVsZWFzZShjb2xvcik7Ci0gICAgCisgICAgW2NhTGF5ZXIgc2V0QmFja2dyb3Vu
ZENvbG9yOmFkb3B0Q0YoQ0dDb2xvckNyZWF0ZUdlbmVyaWNSR0IoMC41LCAwLjUsIDEsIDEpKS5n
ZXQoKV07CiAgICAgW2NhTGF5ZXIgc2V0TGF5b3V0TWFuYWdlcjpbQ0FDb25zdHJhaW50TGF5b3V0
TWFuYWdlciBsYXlvdXRNYW5hZ2VyXV07CiAKICAgICBDQUxheWVyICpzdWJsYXllciA9IFtDQUxh
eWVyIGxheWVyXTsKICAgICAvLyBUdXJuIG9mZiBkZWZhdWx0IGFuaW1hdGlvbnMuCiAgICAgW3N1
YmxheWVyIHNldFN0eWxlOkB7IEAiYWN0aW9ucyI6IGFjdGlvbnMgfV07Ci0KLSAgICBjb2xvciA9
IENHQ29sb3JDcmVhdGVHZW5lcmljUkdCKDAsIDAsIDAsIDAuNzUpOwotICAgIFtzdWJsYXllciBz
ZXRCYWNrZ3JvdW5kQ29sb3I6Y29sb3JdOwotICAgIENHQ29sb3JSZWxlYXNlKGNvbG9yKTsKKyAg
ICBbc3VibGF5ZXIgc2V0QmFja2dyb3VuZENvbG9yOmFkb3B0Q0YoQ0dDb2xvckNyZWF0ZUdlbmVy
aWNSR0IoMCwgMCwgMCwgMC43NSkpLmdldCgpXTsKICAgICBbc3VibGF5ZXIgc2V0Qm91bmRzOkNH
UmVjdE1ha2UoMCwgMCwgMTgwLCAyMCldOwogCiAgICAgW3N1YmxheWVyIGFkZENvbnN0cmFpbnQ6
W0NBQ29uc3RyYWludCBjb25zdHJhaW50V2l0aEF0dHJpYnV0ZTprQ0FDb25zdHJhaW50TWluWQpk
aWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0FjY2Vzc2liaWxpdHlDb21tb25N
YWMubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvQWNjZXNzaWJpbGl0eUNvbW1vbk1hYy5t
bQppbmRleCAwMzA2N2UyZDA4OTIxNGZiZTg0NjY3YjI4MjRmOGNlMzE0ODBmOTg3Li41ODhjOGIx
OWJmNDA0YzIyMTEwMzk5Y2M0YThjMjkwZmIwNmRiMjdiIDEwMDY0NAotLS0gYS9Ub29scy9EdW1w
UmVuZGVyVHJlZS9tYWMvQWNjZXNzaWJpbGl0eUNvbW1vbk1hYy5tbQorKysgYi9Ub29scy9EdW1w
UmVuZGVyVHJlZS9tYWMvQWNjZXNzaWJpbGl0eUNvbW1vbk1hYy5tbQpAQCAtNDEsNyArNDEsNyBA
QCArIChOU1N0cmluZyAqKXN0cmluZ1dpdGhKU1N0cmluZ1JlZjooSlNTdHJpbmdSZWYpanNTdHJp
bmdSZWYKICAgICBpZiAoIWpzU3RyaW5nUmVmKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAg
cmV0dXJuIENGQnJpZGdpbmdSZWxlYXNlKEpTU3RyaW5nQ29weUNGU3RyaW5nKGtDRkFsbG9jYXRv
ckRlZmF1bHQsIGpzU3RyaW5nUmVmKSk7CisgICAgcmV0dXJuIGFkb3B0Q0YoSlNTdHJpbmdDb3B5
Q0ZTdHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwganNTdHJpbmdSZWYpKS5icmlkZ2luZ0F1dG9y
ZWxlYXNlKCk7CiB9CiAKIC0gKEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiljcmVhdGVKU1N0cmlu
Z1JlZgpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVl
Lm1tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tCmluZGV4IDE0
YmQxZTgwZDZlZjA5MzI4ODk5MzhjYmQ0NWJhNDMxYTdmZDU2MDcuLjczNTEwMzk2YTU4MGM5ZWJi
YmM2NGE3ZmUxYmVjMjk4MmM5ZjdjY2UgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L21hYy9EdW1wUmVuZGVyVHJlZS5tbQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVt
cFJlbmRlclRyZWUubW0KQEAgLTIwOCw4ICsyMDgsOCBAQCBXZWJGcmFtZSAqdG9wTG9hZGluZ0Zy
YW1lID0gbmlsOyAvLyAhbmlsIGlmZiBhIGxvYWQgaXMgaW4gcHJvZ3Jlc3MKIFJldGFpblB0cjxO
U1dpbmRvdz4gbWFpbldpbmRvdzsKICNlbmRpZgogCi1DRk11dGFibGVTZXRSZWYgZGlzYWxsb3dl
ZFVSTHM9IG51bGxwdHI7Ci1zdGF0aWMgQ0ZSdW5Mb29wVGltZXJSZWYgd2FpdFRvRHVtcFdhdGNo
ZG9nOworUmV0YWluUHRyPENGTXV0YWJsZVNldFJlZj4gZGlzYWxsb3dlZFVSTHMgPSBudWxscHRy
Oworc3RhdGljIFJldGFpblB0cjxDRlJ1bkxvb3BUaW1lclJlZj4gd2FpdFRvRHVtcFdhdGNoZG9n
OwogCiBzdGF0aWMgUmV0YWluUHRyPFdlYlZpZXc+JiBnbG9iYWxXZWJWaWV3KCkKIHsKQEAgLTU1
MCwyNiArNTUwLDI0IEBAIHN0YXRpYyB2b2lkIGFkanVzdEZvbnRzKCkKIAogc3RhdGljIHZvaWQg
YWN0aXZhdGVGb250SU9TKGNvbnN0IHVpbnQ4X3QqIGZvbnREYXRhLCB1bnNpZ25lZCBsb25nIGxl
bmd0aCwgc3RkOjpzdHJpbmcgc2VjdGlvbk5hbWUpCiB7Ci0gICAgQ0dEYXRhUHJvdmlkZXJSZWYg
ZGF0YSA9IENHRGF0YVByb3ZpZGVyQ3JlYXRlV2l0aERhdGEobnVsbHB0ciwgZm9udERhdGEsIGxl
bmd0aCwgbnVsbHB0cik7CisgICAgYXV0byBkYXRhID0gYWRvcHRDRihDR0RhdGFQcm92aWRlckNy
ZWF0ZVdpdGhEYXRhKG51bGxwdHIsIGZvbnREYXRhLCBsZW5ndGgsIG51bGxwdHIpKTsKICAgICBp
ZiAoIWRhdGEpIHsKICAgICAgICAgZnByaW50ZihzdGRlcnIsICJGYWlsZWQgdG8gY3JlYXRlIENH
RGF0YVByb3ZpZGVyUmVmIGZvciB0aGUgJXMgZm9udC5cbiIsIHNlY3Rpb25OYW1lLmNfc3RyKCkp
OwogICAgICAgICBleGl0KDEpOwogICAgIH0KIAotICAgIENHRm9udFJlZiBjZ0ZvbnQgPSBDR0Zv
bnRDcmVhdGVXaXRoRGF0YVByb3ZpZGVyKGRhdGEpOwotICAgIENHRGF0YVByb3ZpZGVyUmVsZWFz
ZShkYXRhKTsKKyAgICBhdXRvIGNnRm9udCA9IGFkb3B0Q0YoQ0dGb250Q3JlYXRlV2l0aERhdGFQ
cm92aWRlcihkYXRhLmdldCgpKSk7CiAgICAgaWYgKCFjZ0ZvbnQpIHsKICAgICAgICAgZnByaW50
ZihzdGRlcnIsICJGYWlsZWQgdG8gY3JlYXRlIENHRm9udFJlZiBmb3IgdGhlICVzIGZvbnQuXG4i
LCBzZWN0aW9uTmFtZS5jX3N0cigpKTsKICAgICAgICAgZXhpdCgxKTsKICAgICB9CiAKICAgICBD
RkVycm9yUmVmIGVycm9yID0gbnVsbHB0cjsKLSAgICBDVEZvbnRNYW5hZ2VyUmVnaXN0ZXJHcmFw
aGljc0ZvbnQoY2dGb250LCAmZXJyb3IpOworICAgIENURm9udE1hbmFnZXJSZWdpc3RlckdyYXBo
aWNzRm9udChjZ0ZvbnQuZ2V0KCksICZlcnJvcik7CiAgICAgaWYgKGVycm9yKSB7CiAgICAgICAg
IGZwcmludGYoc3RkZXJyLCAiRmFpbGVkIHRvIGFkZCBDR0ZvbnQgdG8gQ29yZVRleHQgZm9yIHRo
ZSAlcyBmb250OiAlcy5cbiIsIHNlY3Rpb25OYW1lLmNfc3RyKCksIENGU3RyaW5nR2V0Q1N0cmlu
Z1B0cihDRkVycm9yQ29weURlc2NyaXB0aW9uKGVycm9yKSwga0NGU3RyaW5nRW5jb2RpbmdVVEY4
KSk7CiAgICAgICAgIGV4aXQoMSk7CiAgICAgfQotICAgIENHRm9udFJlbGVhc2UoY2dGb250KTsK
IH0KIAogc3RhdGljIHZvaWQgYWN0aXZhdGVGb250c0lPUygpCkBAIC0xMjY1LDEwICsxMjYzLDcg
QEAgdm9pZCBkdW1wUmVuZGVyVHJlZShpbnQgYXJnYywgY29uc3QgY2hhciAqYXJndltdKQogI2Vu
ZGlmCiAKICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgbW92ZWQgb250byBUZXN0UnVubmVy
IGFuZCBtYWRlIGludG8gYSBIYXNoU2V0Ci0gICAgaWYgKGRpc2FsbG93ZWRVUkxzKSB7Ci0gICAg
ICAgIENGUmVsZWFzZShkaXNhbGxvd2VkVVJMcyk7Ci0gICAgICAgIGRpc2FsbG93ZWRVUkxzID0g
MDsKLSAgICB9CisgICAgZGlzYWxsb3dlZFVSTHMgPSBudWxscHRyOwogCiAjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKICAgICB0ZWFyRG93bklPU0xheW91dFRlc3RDb21tdW5pY2F0aW9uKCk7CkBA
IC0xNjE1LDE4ICsxNjEwLDE3IEBAIHN0YXRpYyB2b2lkIGR1bXBCYWNrRm9yd2FyZExpc3RGb3JB
bGxXaW5kb3dzKCkKIHN0YXRpYyB2b2lkIGludmFsaWRhdGVBbnlQcmV2aW91c1dhaXRUb0R1bXBX
YXRjaGRvZygpCiB7CiAgICAgaWYgKHdhaXRUb0R1bXBXYXRjaGRvZykgewotICAgICAgICBDRlJ1
bkxvb3BUaW1lckludmFsaWRhdGUod2FpdFRvRHVtcFdhdGNoZG9nKTsKLSAgICAgICAgQ0ZSZWxl
YXNlKHdhaXRUb0R1bXBXYXRjaGRvZyk7Ci0gICAgICAgIHdhaXRUb0R1bXBXYXRjaGRvZyA9IE5V
TEw7CisgICAgICAgIENGUnVuTG9vcFRpbWVySW52YWxpZGF0ZSh3YWl0VG9EdW1wV2F0Y2hkb2cu
Z2V0KCkpOworICAgICAgICB3YWl0VG9EdW1wV2F0Y2hkb2cgPSBudWxscHRyOwogICAgIH0KIH0K
IAotdm9pZCBzZXRXYWl0VG9EdW1wV2F0Y2hkb2coQ0ZSdW5Mb29wVGltZXJSZWYgdGltZXIpCit2
b2lkIHNldFdhaXRUb0R1bXBXYXRjaGRvZyhSZXRhaW5QdHI8Q0ZSdW5Mb29wVGltZXJSZWY+JiYg
dGltZXIpCiB7CiAgICAgQVNTRVJUKHRpbWVyKTsKICAgICBBU1NFUlQoc2hvdWxkU2V0V2FpdFRv
RHVtcFdhdGNoZG9nKCkpOwotICAgIHdhaXRUb0R1bXBXYXRjaGRvZyA9IHRpbWVyOwotICAgIENG
UnVuTG9vcEFkZFRpbWVyKENGUnVuTG9vcEdldEN1cnJlbnQoKSwgd2FpdFRvRHVtcFdhdGNoZG9n
LCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMpOworICAgIHdhaXRUb0R1bXBXYXRjaGRvZyA9IFdURk1v
dmUodGltZXIpOworICAgIENGUnVuTG9vcEFkZFRpbWVyKENGUnVuTG9vcEdldEN1cnJlbnQoKSwg
d2FpdFRvRHVtcFdhdGNoZG9nLmdldCgpLCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMpOwogfQogCiBi
b29sIHNob3VsZFNldFdhaXRUb0R1bXBXYXRjaGRvZygpCkBAIC0xNjgzLDExICsxNjc3LDExIEBA
IHZvaWQgZHVtcCgpCiAgICAgICAgICAgICByZXN1bHRNaW1lVHlwZSA9IEAiYXBwbGljYXRpb24v
cGRmIjsKICAgICAgICAgfSBlbHNlIGlmIChnVGVzdFJ1bm5lci0+ZHVtcERPTUFzV2ViQXJjaGl2
ZSgpKSB7CiAgICAgICAgICAgICBXZWJBcmNoaXZlICp3ZWJBcmNoaXZlID0gW1ttYWluRnJhbWUg
RE9NRG9jdW1lbnRdIHdlYkFyY2hpdmVdOwotICAgICAgICAgICAgcmVzdWx0U3RyaW5nID0gQ0ZC
cmlkZ2luZ1JlbGVhc2UoV2ViQ29yZVRlc3RTdXBwb3J0OjpjcmVhdGVYTUxTdHJpbmdGcm9tV2Vi
QXJjaGl2ZURhdGEoKF9fYnJpZGdlIENGRGF0YVJlZilbd2ViQXJjaGl2ZSBkYXRhXSkpOworICAg
ICAgICAgICAgcmVzdWx0U3RyaW5nID0gV2ViQ29yZVRlc3RTdXBwb3J0OjpjcmVhdGVYTUxTdHJp
bmdGcm9tV2ViQXJjaGl2ZURhdGEoKF9fYnJpZGdlIENGRGF0YVJlZilbd2ViQXJjaGl2ZSBkYXRh
XSk7CiAgICAgICAgICAgICByZXN1bHRNaW1lVHlwZSA9IEAiYXBwbGljYXRpb24veC13ZWJhcmNo
aXZlIjsKICAgICAgICAgfSBlbHNlIGlmIChnVGVzdFJ1bm5lci0+ZHVtcFNvdXJjZUFzV2ViQXJj
aGl2ZSgpKSB7CiAgICAgICAgICAgICBXZWJBcmNoaXZlICp3ZWJBcmNoaXZlID0gW1ttYWluRnJh
bWUgZGF0YVNvdXJjZV0gd2ViQXJjaGl2ZV07Ci0gICAgICAgICAgICByZXN1bHRTdHJpbmcgPSBD
RkJyaWRnaW5nUmVsZWFzZShXZWJDb3JlVGVzdFN1cHBvcnQ6OmNyZWF0ZVhNTFN0cmluZ0Zyb21X
ZWJBcmNoaXZlRGF0YSgoX19icmlkZ2UgQ0ZEYXRhUmVmKVt3ZWJBcmNoaXZlIGRhdGFdKSk7Cisg
ICAgICAgICAgICByZXN1bHRTdHJpbmcgPSBXZWJDb3JlVGVzdFN1cHBvcnQ6OmNyZWF0ZVhNTFN0
cmluZ0Zyb21XZWJBcmNoaXZlRGF0YSgoX19icmlkZ2UgQ0ZEYXRhUmVmKVt3ZWJBcmNoaXZlIGRh
dGFdKTsKICAgICAgICAgICAgIHJlc3VsdE1pbWVUeXBlID0gQCJhcHBsaWNhdGlvbi94LXdlYmFy
Y2hpdmUiOwogICAgICAgICB9IGVsc2UgaWYgKGdUZXN0UnVubmVyLT5pc1ByaW50aW5nKCkpCiAg
ICAgICAgICAgICByZXN1bHRTdHJpbmcgPSBbbWFpbkZyYW1lIHJlbmRlclRyZWVBc0V4dGVybmFs
UmVwcmVzZW50YXRpb25Gb3JQcmludGluZ107CkBAIC0xOTgyLDcgKzE5NzYsNyBAQCBzdGF0aWMg
dm9pZCBydW5UZXN0KGNvbnN0IHN0ZDo6c3RyaW5nJiBpbnB1dExpbmUpCiAgICAgZ1Rlc3RSdW5u
ZXItPmNsZWFyQWxsRGF0YWJhc2VzKCk7CiAKICAgICBpZiAoZGlzYWxsb3dlZFVSTHMpCi0gICAg
ICAgIENGU2V0UmVtb3ZlQWxsVmFsdWVzKGRpc2FsbG93ZWRVUkxzKTsKKyAgICAgICAgQ0ZTZXRS
ZW1vdmVBbGxWYWx1ZXMoZGlzYWxsb3dlZFVSTHMuZ2V0KCkpOwogICAgIGlmIChzaG91bGRMb2dG
cmFtZUxvYWREZWxlZ2F0ZXMocGF0aE9yVVJMLmNfc3RyKCkpKQogICAgICAgICBnVGVzdFJ1bm5l
ci0+c2V0RHVtcEZyYW1lTG9hZENhbGxiYWNrcyh0cnVlKTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMv
RHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlTWFjLmggYi9Ub29scy9EdW1wUmVuZGVy
VHJlZS9tYWMvRHVtcFJlbmRlclRyZWVNYWMuaAppbmRleCAzZDQxYjViNzRiYjcyOGE1MTJkZTk2
N2Q5OTU4ZjA2ODgyZDg1NjNjLi40ZDlkMWQyZDcwNzM3ZTBhMTlkM2M0NDkzZTc5ZmM0ODUzZDE2
YjljIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWVN
YWMuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWVNYWMuaApA
QCAtNDQsMTAgKzQ0LDEwIEBAIE9CSkNfQ0xBU1MgV2ViU2NyaXB0V29ybGQ7CiBPQkpDX0NMQVNT
IFdlYlZpZXc7CiAKIGV4dGVybiBDRk11dGFibGVBcnJheVJlZiBvcGVuV2luZG93c1JlZjsKLWV4
dGVybiBDRk11dGFibGVTZXRSZWYgZGlzYWxsb3dlZFVSTHM7CiBleHRlcm4gV2ViRnJhbWUqIG1h
aW5GcmFtZTsKIGV4dGVybiBXZWJGcmFtZSogdG9wTG9hZGluZ0ZyYW1lOwogI2lmZGVmIF9fY3Bs
dXNwbHVzCitleHRlcm4gUmV0YWluUHRyPENGTXV0YWJsZVNldFJlZj4gZGlzYWxsb3dlZFVSTHM7
CiBleHRlcm4gUmV0YWluUHRyPER1bXBSZW5kZXJUcmVlRHJhZ2dpbmdJbmZvPiBkcmFnZ2luZ0lu
Zm87CiBleHRlcm4gUmV0YWluUHRyPE5hdmlnYXRpb25Db250cm9sbGVyPiBnTmF2aWdhdGlvbkNv
bnRyb2xsZXI7CiBleHRlcm4gUmV0YWluUHRyPFBvbGljeURlbGVnYXRlPiBwb2xpY3lEZWxlZ2F0
ZTsKQEAgLTYwLDkgKzYwLDEwIEBAIGV4dGVybiBSZXRhaW5QdHI8VUlXaW5kb3c+IG1haW5XaW5k
b3c7CiBPQkpDX0NMQVNTIE5TV2luZG93OwogZXh0ZXJuIFJldGFpblB0cjxOU1dpbmRvdz4gbWFp
bldpbmRvdzsKICNlbmRpZgotI2VuZGlmCiAKLXZvaWQgc2V0V2FpdFRvRHVtcFdhdGNoZG9nKENG
UnVuTG9vcFRpbWVyUmVmKTsKK3ZvaWQgc2V0V2FpdFRvRHVtcFdhdGNoZG9nKFJldGFpblB0cjxD
RlJ1bkxvb3BUaW1lclJlZj4mJik7CisjZW5kaWYgLy8gX19jcGx1c3BsdXMKKwogYm9vbCBzaG91
bGRTZXRXYWl0VG9EdW1wV2F0Y2hkb2codm9pZCk7CiAKICNpZmRlZiBfX2NwbHVzcGx1cwpkaWZm
IC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIu
bW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5tbQpp
bmRleCAxNmE2MDUxYmI3ZmI2NGI5ZGYwYWE5ZTM3MzIyYjg5YjAxMWQ3NTcwLi5iODc5NDJiM2M2
YzkyNWY0MzU1ZjVlNTM3M2E1ZjZkZWVmMGZmMDYxIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9tYWMvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5tbQorKysgYi9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9tYWMvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5tbQpAQCAtODA5LDE2ICs4MDksMTUg
QEAgLSAodm9pZCltb3VzZVNjcm9sbEJ5WDooaW50KXggYW5kWTooaW50KXkgY29udGludW91c2x5
OihCT09MKWNvbnRpbnVvdXNseQogewogI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIENH
U2Nyb2xsRXZlbnRVbml0IHVuaXQgPSBjb250aW51b3VzbHkgPyBrQ0dTY3JvbGxFdmVudFVuaXRQ
aXhlbCA6IGtDR1Njcm9sbEV2ZW50VW5pdExpbmU7Ci0gICAgQ0dFdmVudFJlZiBjZ1Njcm9sbEV2
ZW50ID0gQ0dFdmVudENyZWF0ZVNjcm9sbFdoZWVsRXZlbnQyKE5VTEwsIHVuaXQsIDIsIHksIHgs
IDApOworICAgIGF1dG8gY2dTY3JvbGxFdmVudCA9IGFkb3B0Q0YoQ0dFdmVudENyZWF0ZVNjcm9s
bFdoZWVsRXZlbnQyKE5VTEwsIHVuaXQsIDIsIHksIHgsIDApKTsKICAgICAKICAgICAvLyBTZXQg
dGhlIENHRXZlbnQgbG9jYXRpb24gaW4gZmxpcHBlZCBjb29yZHMgcmVsYXRpdmUgdG8gdGhlIGZp
cnN0IHNjcmVlbiwgd2hpY2gKICAgICAvLyBjb21wZW5zYXRlcyBmb3IgdGhlIGJlaGF2aW9yIG9m
ICtbTlNFdmVudCBldmVudFdpdGhDR0V2ZW50Ol0gd2hlbiB0aGUgZXZlbnQgaGFzCiAgICAgLy8g
bm8gYXNzb2NpYXRlZCB3aW5kb3cuIFNlZSA8cmRhcjovL3Byb2JsZW0vMTcxODA1OTE+LgogICAg
IENHUG9pbnQgbGFzdEdsb2JhbE1vdXNlUG9zaXRpb24gPSBDR1BvaW50TWFrZShsYXN0TW91c2VQ
b3NpdGlvbi54LCBbW1tOU1NjcmVlbiBzY3JlZW5zXSBvYmplY3RBdEluZGV4OjBdIGZyYW1lXS5z
aXplLmhlaWdodCAtIGxhc3RNb3VzZVBvc2l0aW9uLnkpOwotICAgIENHRXZlbnRTZXRMb2NhdGlv
bihjZ1Njcm9sbEV2ZW50LCBsYXN0R2xvYmFsTW91c2VQb3NpdGlvbik7CisgICAgQ0dFdmVudFNl
dExvY2F0aW9uKGNnU2Nyb2xsRXZlbnQuZ2V0KCksIGxhc3RHbG9iYWxNb3VzZVBvc2l0aW9uKTsK
IAotICAgIE5TRXZlbnQgKnNjcm9sbEV2ZW50ID0gW05TRXZlbnQgZXZlbnRXaXRoQ0dFdmVudDpj
Z1Njcm9sbEV2ZW50XTsKLSAgICBDRlJlbGVhc2UoY2dTY3JvbGxFdmVudCk7CisgICAgTlNFdmVu
dCAqc2Nyb2xsRXZlbnQgPSBbTlNFdmVudCBldmVudFdpdGhDR0V2ZW50OmNnU2Nyb2xsRXZlbnQu
Z2V0KCldOwogCiAgICAgTlNWaWV3ICpzdWJWaWV3ID0gW1ttYWluRnJhbWUgd2ViVmlld10gaGl0
VGVzdDpbc2Nyb2xsRXZlbnQgbG9jYXRpb25JbldpbmRvd11dOwogICAgIGlmIChzdWJWaWV3KSB7
CkBAIC04NzUsMTkgKzg3NCwxOCBAQCAtICh2b2lkKW1vdXNlU2Nyb2xsQnlYOihpbnQpeCBhbmRZ
OihpbnQpeSB3aXRoV2hlZWw6KE5TU3RyaW5nKilwaGFzZU5hbWUgYW5kTW9tZQogICAgIGlmICht
b21lbnR1bSA9PSBrQ0dNb21lbnR1bVNjcm9sbFBoYXNlRW5kKQogICAgICAgICBfc2VudE1vbWVu
dHVtUGhhc2VFbmQgPSBZRVM7CiAKLSAgICBDR0V2ZW50UmVmIGNnU2Nyb2xsRXZlbnQgPSBDR0V2
ZW50Q3JlYXRlU2Nyb2xsV2hlZWxFdmVudDIoTlVMTCwga0NHU2Nyb2xsRXZlbnRVbml0TGluZSwg
MiwgeSwgeCwgMCk7CisgICAgYXV0byBjZ1Njcm9sbEV2ZW50ID0gYWRvcHRDRihDR0V2ZW50Q3Jl
YXRlU2Nyb2xsV2hlZWxFdmVudDIoTlVMTCwga0NHU2Nyb2xsRXZlbnRVbml0TGluZSwgMiwgeSwg
eCwgMCkpOwogCiAgICAgLy8gU2V0IHRoZSBDR0V2ZW50IGxvY2F0aW9uIGluIGZsaXBwZWQgY29v
cmRzIHJlbGF0aXZlIHRvIHRoZSBmaXJzdCBzY3JlZW4sIHdoaWNoCiAgICAgLy8gY29tcGVuc2F0
ZXMgZm9yIHRoZSBiZWhhdmlvciBvZiArW05TRXZlbnQgZXZlbnRXaXRoQ0dFdmVudDpdIHdoZW4g
dGhlIGV2ZW50IGhhcwogICAgIC8vIG5vIGFzc29jaWF0ZWQgd2luZG93LiBTZWUgPHJkYXI6Ly9w
cm9ibGVtLzE3MTgwNTkxPi4KICAgICBDR1BvaW50IGxhc3RHbG9iYWxNb3VzZVBvc2l0aW9uID0g
Q0dQb2ludE1ha2UobGFzdE1vdXNlUG9zaXRpb24ueCwgW1tbTlNTY3JlZW4gc2NyZWVuc10gb2Jq
ZWN0QXRJbmRleDowXSBmcmFtZV0uc2l6ZS5oZWlnaHQgLSBsYXN0TW91c2VQb3NpdGlvbi55KTsK
LSAgICBDR0V2ZW50U2V0TG9jYXRpb24oY2dTY3JvbGxFdmVudCwgbGFzdEdsb2JhbE1vdXNlUG9z
aXRpb24pOwotICAgIENHRXZlbnRTZXRJbnRlZ2VyVmFsdWVGaWVsZChjZ1Njcm9sbEV2ZW50LCBr
Q0dTY3JvbGxXaGVlbEV2ZW50SXNDb250aW51b3VzLCAxKTsKLSAgICBDR0V2ZW50U2V0SW50ZWdl
clZhbHVlRmllbGQoY2dTY3JvbGxFdmVudCwga0NHU2Nyb2xsV2hlZWxFdmVudFNjcm9sbFBoYXNl
LCBwaGFzZSk7Ci0gICAgQ0dFdmVudFNldEludGVnZXJWYWx1ZUZpZWxkKGNnU2Nyb2xsRXZlbnQs
IGtDR1Njcm9sbFdoZWVsRXZlbnRNb21lbnR1bVBoYXNlLCBtb21lbnR1bSk7CisgICAgQ0dFdmVu
dFNldExvY2F0aW9uKGNnU2Nyb2xsRXZlbnQuZ2V0KCksIGxhc3RHbG9iYWxNb3VzZVBvc2l0aW9u
KTsKKyAgICBDR0V2ZW50U2V0SW50ZWdlclZhbHVlRmllbGQoY2dTY3JvbGxFdmVudC5nZXQoKSwg
a0NHU2Nyb2xsV2hlZWxFdmVudElzQ29udGludW91cywgMSk7CisgICAgQ0dFdmVudFNldEludGVn
ZXJWYWx1ZUZpZWxkKGNnU2Nyb2xsRXZlbnQuZ2V0KCksIGtDR1Njcm9sbFdoZWVsRXZlbnRTY3Jv
bGxQaGFzZSwgcGhhc2UpOworICAgIENHRXZlbnRTZXRJbnRlZ2VyVmFsdWVGaWVsZChjZ1Njcm9s
bEV2ZW50LmdldCgpLCBrQ0dTY3JvbGxXaGVlbEV2ZW50TW9tZW50dW1QaGFzZSwgbW9tZW50dW0p
OwogICAgIAotICAgIE5TRXZlbnQqIHNjcm9sbEV2ZW50ID0gW05TRXZlbnQgZXZlbnRXaXRoQ0dF
dmVudDpjZ1Njcm9sbEV2ZW50XTsKLSAgICBDRlJlbGVhc2UoY2dTY3JvbGxFdmVudCk7CisgICAg
TlNFdmVudCogc2Nyb2xsRXZlbnQgPSBbTlNFdmVudCBldmVudFdpdGhDR0V2ZW50OmNnU2Nyb2xs
RXZlbnQuZ2V0KCldOwogCiAgICAgaWYgKE5TVmlldyogdGFyZ2V0VmlldyA9IFtbbWFpbkZyYW1l
IHdlYlZpZXddIGhpdFRlc3Q6W3Njcm9sbEV2ZW50IGxvY2F0aW9uSW5XaW5kb3ddXSkgewogICAg
ICAgICBbTlNBcHAgX3NldEN1cnJlbnRFdmVudDpzY3JvbGxFdmVudF07CmRpZmYgLS1naXQgYS9U
b29scy9EdW1wUmVuZGVyVHJlZS9tYWMvUGl4ZWxEdW1wU3VwcG9ydE1hYy5tbSBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL21hYy9QaXhlbER1bXBTdXBwb3J0TWFjLm1tCmluZGV4IGFjMzI4MWE0ZGYz
ZTAyMzU2NzE4ODA3ZjBhZDc4MmJmMWQ3NDRiYjcuLjRhMjZhYTUzMTY1MDYyYzBiODAyYjgwYzM1
NTlhNmZhZGUxMGQ0ZWYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9QaXhl
bER1bXBTdXBwb3J0TWFjLm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9QaXhlbER1
bXBTdXBwb3J0TWFjLm1tCkBAIC03OSwxMCArNzksMTAgQEAgc3RhdGljIHZvaWQgcGFpbnRSZXBh
aW50UmVjdE92ZXJsYXkoV2ViVmlldyogd2ViVmlldywgQ0dDb250ZXh0UmVmIGNvbnRleHQpCiAg
ICAgQ0dDb250ZXh0UmVzdG9yZUdTdGF0ZShjb250ZXh0KTsKIH0KIAotc3RhdGljIENHSW1hZ2VS
ZWYgdGFrZVdpbmRvd1NuYXBzaG90KENHU1dpbmRvd0lEIHdpbmRvd0lELCBDR1dpbmRvd0ltYWdl
T3B0aW9uIGltYWdlT3B0aW9ucykgQ0ZfUkVUVVJOU19SRVRBSU5FRAorc3RhdGljIFJldGFpblB0
cjxDR0ltYWdlUmVmPiB0YWtlV2luZG93U25hcHNob3QoQ0dTV2luZG93SUQgd2luZG93SUQsIENH
V2luZG93SW1hZ2VPcHRpb24gaW1hZ2VPcHRpb25zKQogewogICAgIGltYWdlT3B0aW9ucyB8PSBr
Q0dXaW5kb3dJbWFnZUJvdW5kc0lnbm9yZUZyYW1pbmcgfCBrQ0dXaW5kb3dJbWFnZVNob3VsZEJl
T3BhcXVlOwotICAgIHJldHVybiBDR1dpbmRvd0xpc3RDcmVhdGVJbWFnZShDR1JlY3ROdWxsLCBr
Q0dXaW5kb3dMaXN0T3B0aW9uSW5jbHVkaW5nV2luZG93LCB3aW5kb3dJRCwgaW1hZ2VPcHRpb25z
KTsKKyAgICByZXR1cm4gYWRvcHRDRihDR1dpbmRvd0xpc3RDcmVhdGVJbWFnZShDR1JlY3ROdWxs
LCBrQ0dXaW5kb3dMaXN0T3B0aW9uSW5jbHVkaW5nV2luZG93LCB3aW5kb3dJRCwgaW1hZ2VPcHRp
b25zKSk7CiB9CiAKIFJlZlB0cjxCaXRtYXBDb250ZXh0PiBjcmVhdGVCaXRtYXBDb250ZXh0RnJv
bVdlYlZpZXcoYm9vbCBvbnNjcmVlbiwgYm9vbCBpbmNyZW1lbnRhbFJlcGFpbnQsIGJvb2wgc3dl
ZXBIb3Jpem9udGFsbHksIGJvb2wgZHJhd1NlbGVjdGlvblJlY3QpCkBAIC0xMzIsMjIgKzEzMiwx
OSBAQCBSZWZQdHI8Qml0bWFwQ29udGV4dD4gY3JlYXRlQml0bWFwQ29udGV4dEZyb21XZWJWaWV3
KGJvb2wgb25zY3JlZW4sIGJvb2wgaW5jcmVtZQogICAgICAgICAgICAgLy8gQXNrIHRoZSB3aW5k
b3cgc2VydmVyIHRvIHByb3ZpZGUgdXMgYSBjb21wb3NpdGVkIHZlcnNpb24gb2YgdGhlICpyZWFs
KiB3aW5kb3cgY29udGVudCBpbmNsdWRpbmcgc3VyZmFjZXMgKGkuZS4gT3BlbkdMIGNvbnRlbnQp
CiAgICAgICAgICAgICAvLyBOb3RlIHRoYXQgdGhlIHJldHVybmVkIGltYWdlIG1pZ2h0IGRpZmZl
ciB2ZXJ5IHNsaWdodGx5IGZyb20gdGhlIHdpbmRvdyBiYWNraW5nIGJlY2F1c2Ugb2YgZGl0aGVy
aW5nIGFydGlmYWN0cyBpbiB0aGUgd2luZG93IHNlcnZlciBjb21wb3NpdG9yLgogICAgICAgICAg
ICAgTlNXaW5kb3cgKndpbmRvdyA9IFt2aWV3IHdpbmRvd107Ci0gICAgICAgICAgICBDR0ltYWdl
UmVmIGltYWdlID0gdGFrZVdpbmRvd1NuYXBzaG90KFt3aW5kb3cgd2luZG93TnVtYmVyXSwga0NH
V2luZG93SW1hZ2VEZWZhdWx0KTsKKyAgICAgICAgICAgIGF1dG8gaW1hZ2UgPSB0YWtlV2luZG93
U25hcHNob3QoW3dpbmRvdyB3aW5kb3dOdW1iZXJdLCBrQ0dXaW5kb3dJbWFnZURlZmF1bHQpOwog
CiAgICAgICAgICAgICBpZiAoaW1hZ2UpIHsKICAgICAgICAgICAgICAgICAvLyBXb3JrIGFyb3Vu
ZCA8cmRhcjovL3Byb2JsZW0vMTcwODQ5OTM+OyByZS1yZXF1ZXN0IHRoZSBzbmFwc2hvdCBhdCBr
Q0dXaW5kb3dJbWFnZU5vbWluYWxSZXNvbHV0aW9uIGlmIGl0IHdhcyBjYXB0dXJlZCBhdCB0aGUg
d3Jvbmcgc2NhbGUuCiAgICAgICAgICAgICAgICAgQ0dGbG9hdCBkZXNpcmVkU25hcHNob3RXaWR0
aCA9IHdpbmRvdy5mcmFtZS5zaXplLndpZHRoICogZGV2aWNlU2NhbGVGYWN0b3I7Ci0gICAgICAg
ICAgICAgICAgaWYgKENHSW1hZ2VHZXRXaWR0aChpbWFnZSkgIT0gZGVzaXJlZFNuYXBzaG90V2lk
dGgpIHsKLSAgICAgICAgICAgICAgICAgICAgQ0dJbWFnZVJlbGVhc2UoaW1hZ2UpOworICAgICAg
ICAgICAgICAgIGlmIChDR0ltYWdlR2V0V2lkdGgoaW1hZ2UuZ2V0KCkpICE9IGRlc2lyZWRTbmFw
c2hvdFdpZHRoKQogICAgICAgICAgICAgICAgICAgICBpbWFnZSA9IHRha2VXaW5kb3dTbmFwc2hv
dChbd2luZG93IHdpbmRvd051bWJlcl0sIGtDR1dpbmRvd0ltYWdlTm9taW5hbFJlc29sdXRpb24p
OwotICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKCFp
bWFnZSkKICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgICAgICAgICAgQ0dD
b250ZXh0RHJhd0ltYWdlKGNvbnRleHQsIENHUmVjdE1ha2UoMCwgMCwgQ0dJbWFnZUdldFdpZHRo
KGltYWdlKSwgQ0dJbWFnZUdldEhlaWdodChpbWFnZSkpLCBpbWFnZSk7Ci0gICAgICAgICAgICBD
R0ltYWdlUmVsZWFzZShpbWFnZSk7CisgICAgICAgICAgICBDR0NvbnRleHREcmF3SW1hZ2UoY29u
dGV4dCwgQ0dSZWN0TWFrZSgwLCAwLCBDR0ltYWdlR2V0V2lkdGgoaW1hZ2UuZ2V0KCkpLCBDR0lt
YWdlR2V0SGVpZ2h0KGltYWdlLmdldCgpKSksIGltYWdlLmdldCgpKTsKIAogICAgICAgICAgICAg
aWYgKFt2aWV3IGlzVHJhY2tpbmdSZXBhaW50c10pCiAgICAgICAgICAgICAgICAgcGFpbnRSZXBh
aW50UmVjdE92ZXJsYXkodmlldywgY29udGV4dCk7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9tYWMvUmVzb3VyY2VMb2FkRGVsZWdhdGUubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9tYWMvUmVzb3VyY2VMb2FkRGVsZWdhdGUubW0KaW5kZXggNTM5ZDE2YThhMGNmYmJhZmEwZTM0
MDFmNjQ4MzllMDI5YmFmMzI5MC4uMGE4MzJhOWRkNjA1OWI2NjVkZjc4OTU1OTM4MzI0Njg4YTkz
OTI4MyAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1Jlc291cmNlTG9hZERl
bGVnYXRlLm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9SZXNvdXJjZUxvYWREZWxl
Z2F0ZS5tbQpAQCAtMTcyLDcgKzE3Miw3IEBAIC0oTlNVUkxSZXF1ZXN0ICopd2ViVmlldzogKFdl
YlZpZXcgKil3diByZXNvdXJjZTppZGVudGlmaWVyIHdpbGxTZW5kUmVxdWVzdDogKE5TCiAgICAg
ICAgIH0KICAgICB9CiAKLSAgICBpZiAoZGlzYWxsb3dlZFVSTHMgJiYgQ0ZTZXRDb250YWluc1Zh
bHVlKGRpc2FsbG93ZWRVUkxzLCAoX19icmlkZ2UgQ0ZVUkxSZWYpdXJsKSkKKyAgICBpZiAoZGlz
YWxsb3dlZFVSTHMgJiYgQ0ZTZXRDb250YWluc1ZhbHVlKGRpc2FsbG93ZWRVUkxzLmdldCgpLCAo
X19icmlkZ2UgQ0ZVUkxSZWYpdXJsKSkKICAgICAgICAgcmV0dXJuIG5pbDsKIAogICAgIGF1dG8g
bmV3UmVxdWVzdCA9IGFkb3B0TlMoW3JlcXVlc3QgbXV0YWJsZUNvcHldKTsKZGlmZiAtLWdpdCBh
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9UZXN0UnVubmVyTWFjLm1tIGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvbWFjL1Rlc3RSdW5uZXJNYWMubW0KaW5kZXggMjRjZTIyZjdmZGE3NmQ1NWY4NmU2
YTVkNGExZmJiYmE4ZWMyYjYwZi4uMDlkYzJjNDU1ODVmMDA3ZjA1NjE2NTFkMTcwZWM0MzRlNWRm
ZWVmNyAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1Rlc3RSdW5uZXJNYWMu
bW0KKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1Rlc3RSdW5uZXJNYWMubW0KQEAgLTEz
NywxMyArMTM3LDEzIEBAIHZvaWQgVGVzdFJ1bm5lcjo6YWRkRGlzYWxsb3dlZFVSTChKU1N0cmlu
Z1JlZiB1cmwpCiAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB1cmxDRiA9IGFkb3B0Q0YoSlNT
dHJpbmdDb3B5Q0ZTdHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwgdXJsKSk7CiAKICAgICBpZiAo
IWRpc2FsbG93ZWRVUkxzKQotICAgICAgICBkaXNhbGxvd2VkVVJMcyA9IENGU2V0Q3JlYXRlTXV0
YWJsZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAwLCBOVUxMKTsKKyAgICAgICAgZGlzYWxsb3dlZFVS
THMgPSBhZG9wdENGKENGU2V0Q3JlYXRlTXV0YWJsZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAwLCBO
VUxMKSk7CiAKICAgICAvLyBDYW5vbmljYWxpemUgdGhlIFVSTAogICAgIE5TVVJMUmVxdWVzdCAq
cmVxdWVzdCA9IFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJp
bmc6KF9fYnJpZGdlIE5TU3RyaW5nICopdXJsQ0YuZ2V0KCldXTsKICAgICByZXF1ZXN0ID0gW05T
VVJMUHJvdG9jb2wgY2Fub25pY2FsUmVxdWVzdEZvclJlcXVlc3Q6cmVxdWVzdF07CiAKLSAgICBD
RlNldEFkZFZhbHVlKGRpc2FsbG93ZWRVUkxzLCAoX19icmlkZ2UgQ0ZVUkxSZWYpW3JlcXVlc3Qg
VVJMXSk7CisgICAgQ0ZTZXRBZGRWYWx1ZShkaXNhbGxvd2VkVVJMcy5nZXQoKSwgKF9fYnJpZGdl
IENGVVJMUmVmKVtyZXF1ZXN0IFVSTF0pOwogfQogCiBib29sIFRlc3RSdW5uZXI6OmNhbGxTaG91
bGRDbG9zZU9uV2ViVmlldygpCkBAIC01NzcsNyArNTc3LDcgQEAgdm9pZCBUZXN0UnVubmVyOjpz
ZXRXYWl0VG9EdW1wKGJvb2wgd2FpdFVudGlsRG9uZSkKIHsKICAgICBtX3dhaXRUb0R1bXAgPSB3
YWl0VW50aWxEb25lOwogICAgIGlmIChtX3dhaXRUb0R1bXAgJiYgbV90aW1lb3V0ICYmIHNob3Vs
ZFNldFdhaXRUb0R1bXBXYXRjaGRvZygpKQotICAgICAgICBzZXRXYWl0VG9EdW1wV2F0Y2hkb2co
Q0ZSdW5Mb29wVGltZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgQ0ZBYnNvbHV0ZVRpbWVH
ZXRDdXJyZW50KCkgKyBtX3RpbWVvdXQgLyAxMDAwLjAsIDAsIDAsIDAsIHdhaXRVbnRpbERvbmVX
YXRjaGRvZ0ZpcmVkLCBOVUxMKSk7CisgICAgICAgIHNldFdhaXRUb0R1bXBXYXRjaGRvZyhhZG9w
dENGKENGUnVuTG9vcFRpbWVyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIENGQWJzb2x1dGVU
aW1lR2V0Q3VycmVudCgpICsgbV90aW1lb3V0IC8gMTAwMC4wLCAwLCAwLCAwLCB3YWl0VW50aWxE
b25lV2F0Y2hkb2dGaXJlZCwgTlVMTCkpKTsKIH0KIAogaW50IFRlc3RSdW5uZXI6OndpbmRvd0Nv
dW50KCkKZGlmZiAtLWdpdCBhL1Rvb2xzL0ZvbnRXaXRoRmVhdHVyZXMvRm9udFdpdGhGZWF0dXJl
cy9tYWluLmNwcCBiL1Rvb2xzL0ZvbnRXaXRoRmVhdHVyZXMvRm9udFdpdGhGZWF0dXJlcy9tYWlu
LmNwcAppbmRleCBjNGVjZDc2NTg0YjhlN2E3YjE3ZjdkYzRiNDIwMTA1NGJhNWZiMWFkLi4wZDhj
ODk1YzY4ZWIwMGRiN2UwZTVhZmQ1ZTM4YTE1Y2NhMmVmZWE4IDEwMDY0NAotLS0gYS9Ub29scy9G
b250V2l0aEZlYXR1cmVzL0ZvbnRXaXRoRmVhdHVyZXMvbWFpbi5jcHAKKysrIGIvVG9vbHMvRm9u
dFdpdGhGZWF0dXJlcy9Gb250V2l0aEZlYXR1cmVzL21haW4uY3BwCkBAIC0zMiw1MCArMzIsMzkg
QEAKICNpbmNsdWRlIDxJbWFnZUlPL0ltYWdlSU8uaD4KICNpbmNsdWRlIDxmc3RyZWFtPgogCi1z
dGF0aWMgQ1RGb250RGVzY3JpcHRvclJlZiBjb25zdHJ1Y3RGb250V2l0aFRydWVUeXBlRmVhdHVy
ZShDVEZvbnREZXNjcmlwdG9yUmVmIGZvbnREZXNjcmlwdG9yLCBpbnQgdHlwZSwgaW50IHNlbGVj
dG9yKQorc3RhdGljIFJldGFpblB0cjxDVEZvbnREZXNjcmlwdG9yUmVmPiBjb25zdHJ1Y3RGb250
V2l0aFRydWVUeXBlRmVhdHVyZShDVEZvbnREZXNjcmlwdG9yUmVmIGZvbnREZXNjcmlwdG9yLCBp
bnQgdHlwZSwgaW50IHNlbGVjdG9yKQogewotICAgIENGTnVtYmVyUmVmIHR5cGVWYWx1ZSA9IENG
TnVtYmVyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGtDRk51bWJlckludFR5cGUsICZ0eXBl
KTsKLSAgICBDRk51bWJlclJlZiBzZWxlY3RvclZhbHVlID0gQ0ZOdW1iZXJDcmVhdGUoa0NGQWxs
b2NhdG9yRGVmYXVsdCwga0NGTnVtYmVySW50VHlwZSwgJnNlbGVjdG9yKTsKKyAgICBhdXRvIHR5
cGVWYWx1ZSA9IGFkb3B0Q0YoQ0ZOdW1iZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwga0NG
TnVtYmVySW50VHlwZSwgJnR5cGUpKTsKKyAgICBhdXRvIHNlbGVjdG9yVmFsdWUgPSBhZG9wdENG
KENGTnVtYmVyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGtDRk51bWJlckludFR5cGUsICZz
ZWxlY3RvcikpOwogICAgIENGVHlwZVJlZiBmZWF0dXJlRGljdGlvbmFyeUtleXNbXSA9IHsga0NU
Rm9udEZlYXR1cmVUeXBlSWRlbnRpZmllcktleSwga0NURm9udEZlYXR1cmVTZWxlY3RvcklkZW50
aWZpZXJLZXkgfTsKLSAgICBDRlR5cGVSZWYgZmVhdHVyZURpY3Rpb25hcnlWYWx1ZXNbXSA9IHsg
dHlwZVZhbHVlLCBzZWxlY3RvclZhbHVlIH07Ci0gICAgQ0ZEaWN0aW9uYXJ5UmVmIGZlYXR1cmVE
aWN0aW9uYXJ5ID0gQ0ZEaWN0aW9uYXJ5Q3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGZlYXR1
cmVEaWN0aW9uYXJ5S2V5cywgZmVhdHVyZURpY3Rpb25hcnlWYWx1ZXMsIDIsICZrQ0ZUeXBlRGlj
dGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpOwot
ICAgIENGUmVsZWFzZSh0eXBlVmFsdWUpOwotICAgIENGUmVsZWFzZShzZWxlY3RvclZhbHVlKTsK
KyAgICBDRlR5cGVSZWYgZmVhdHVyZURpY3Rpb25hcnlWYWx1ZXNbXSA9IHsgdHlwZVZhbHVlLmdl
dCgpLCBzZWxlY3RvclZhbHVlLmdldCgpIH07CisgICAgYXV0byBmZWF0dXJlRGljdGlvbmFyeSA9
IGFkb3B0Q0YoQ0ZEaWN0aW9uYXJ5Q3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGZlYXR1cmVE
aWN0aW9uYXJ5S2V5cywgZmVhdHVyZURpY3Rpb25hcnlWYWx1ZXMsIDIsICZrQ0ZUeXBlRGljdGlv
bmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpKTsKIAot
ICAgIENGVHlwZVJlZiBmZWF0dXJlU2V0dGluZ3NWYWx1ZXNbXSA9IHsgZmVhdHVyZURpY3Rpb25h
cnkgfTsKLSAgICBDRkFycmF5UmVmIGZvbnRGZWF0dXJlU2V0dGluZ3MgPSBDRkFycmF5Q3JlYXRl
KGtDRkFsbG9jYXRvckRlZmF1bHQsIGZlYXR1cmVTZXR0aW5nc1ZhbHVlcywgMSwgJmtDRlR5cGVB
cnJheUNhbGxCYWNrcyk7Ci0gICAgQ0ZSZWxlYXNlKGZlYXR1cmVEaWN0aW9uYXJ5KTsKKyAgICBD
RlR5cGVSZWYgZmVhdHVyZVNldHRpbmdzVmFsdWVzW10gPSB7IGZlYXR1cmVEaWN0aW9uYXJ5Lmdl
dCgpIH07CisgICAgYXV0byBmb250RmVhdHVyZVNldHRpbmdzID0gYWRvcHRDRihDRkFycmF5Q3Jl
YXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGZlYXR1cmVTZXR0aW5nc1ZhbHVlcywgMSwgJmtDRlR5
cGVBcnJheUNhbGxCYWNrcykpOwogCiAgICAgQ0ZUeXBlUmVmIGZvbnREZXNjcmlwdG9yS2V5c1td
ID0geyBrQ1RGb250RmVhdHVyZVNldHRpbmdzQXR0cmlidXRlIH07Ci0gICAgQ0ZUeXBlUmVmIGZv
bnREZXNjcmlwdG9yVmFsdWVzW10gPSB7IGZvbnRGZWF0dXJlU2V0dGluZ3MgfTsKLSAgICBDRkRp
Y3Rpb25hcnlSZWYgZm9udERlc2NyaXB0b3JBdHRyaWJ1dGVzID0gQ0ZEaWN0aW9uYXJ5Q3JlYXRl
KGtDRkFsbG9jYXRvckRlZmF1bHQsIGZvbnREZXNjcmlwdG9yS2V5cywgZm9udERlc2NyaXB0b3JW
YWx1ZXMsIDEsICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9u
YXJ5VmFsdWVDYWxsQmFja3MpOwotICAgIENGUmVsZWFzZShmb250RmVhdHVyZVNldHRpbmdzKTsK
KyAgICBDRlR5cGVSZWYgZm9udERlc2NyaXB0b3JWYWx1ZXNbXSA9IHsgZm9udEZlYXR1cmVTZXR0
aW5ncy5nZXQoKSB9OworICAgIGF1dG8gZm9udERlc2NyaXB0b3JBdHRyaWJ1dGVzID0gYWRvcHRD
RihDRkRpY3Rpb25hcnlDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgZm9udERlc2NyaXB0b3JL
ZXlzLCBmb250RGVzY3JpcHRvclZhbHVlcywgMSwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJh
Y2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcykpOwogCi0gICAgQ1RGb250RGVz
Y3JpcHRvclJlZiBtb2RpZmllZEZvbnREZXNjcmlwdG9yID0gQ1RGb250RGVzY3JpcHRvckNyZWF0
ZUNvcHlXaXRoQXR0cmlidXRlcyhmb250RGVzY3JpcHRvciwgZm9udERlc2NyaXB0b3JBdHRyaWJ1
dGVzKTsKLSAgICBDRlJlbGVhc2UoZm9udERlc2NyaXB0b3JBdHRyaWJ1dGVzKTsKLSAgICByZXR1
cm4gbW9kaWZpZWRGb250RGVzY3JpcHRvcjsKKyAgICByZXR1cm4gYWRvcHRDRihDVEZvbnREZXNj
cmlwdG9yQ3JlYXRlQ29weVdpdGhBdHRyaWJ1dGVzKGZvbnREZXNjcmlwdG9yLCBmb250RGVzY3Jp
cHRvckF0dHJpYnV0ZXMuZ2V0KCkpKTsKIH0KIAotc3RhdGljIENURm9udERlc2NyaXB0b3JSZWYg
Y29uc3RydWN0Rm9udFdpdGhPcGVuVHlwZUZlYXR1cmUoQ1RGb250RGVzY3JpcHRvclJlZiBmb250
RGVzY3JpcHRvciwgQ0ZTdHJpbmdSZWYgZmVhdHVyZSwgaW50IHZhbHVlKQorc3RhdGljIFJldGFp
blB0cjxDVEZvbnREZXNjcmlwdG9yUmVmPiBjb25zdHJ1Y3RGb250V2l0aE9wZW5UeXBlRmVhdHVy
ZShDVEZvbnREZXNjcmlwdG9yUmVmIGZvbnREZXNjcmlwdG9yLCBDRlN0cmluZ1JlZiBmZWF0dXJl
LCBpbnQgdmFsdWUpCiB7Ci0gICAgQ0ZOdW1iZXJSZWYgZmVhdHVyZVZhbHVlID0gQ0ZOdW1iZXJD
cmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwga0NGTnVtYmVySW50VHlwZSwgJnZhbHVlKTsKKyAg
ICBhdXRvIGZlYXR1cmVWYWx1ZSA9IGFkb3B0Q0YoQ0ZOdW1iZXJDcmVhdGUoa0NGQWxsb2NhdG9y
RGVmYXVsdCwga0NGTnVtYmVySW50VHlwZSwgJnZhbHVlKSk7CiAgICAgQ0ZUeXBlUmVmIGZlYXR1
cmVEaWN0aW9uYXJ5S2V5c1tdID0geyBrQ1RGb250T3BlblR5cGVGZWF0dXJlVGFnLCBrQ1RGb250
T3BlblR5cGVGZWF0dXJlVmFsdWUgfTsKLSAgICBDRlR5cGVSZWYgZmVhdHVyZURpY3Rpb25hcnlW
YWx1ZXNbXSA9IHsgZmVhdHVyZSwgZmVhdHVyZVZhbHVlIH07Ci0gICAgQ0ZEaWN0aW9uYXJ5UmVm
IGZlYXR1cmVEaWN0aW9uYXJ5ID0gQ0ZEaWN0aW9uYXJ5Q3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1
bHQsIGZlYXR1cmVEaWN0aW9uYXJ5S2V5cywgZmVhdHVyZURpY3Rpb25hcnlWYWx1ZXMsIDIsICZr
Q0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxs
QmFja3MpOwotICAgIENGUmVsZWFzZShmZWF0dXJlVmFsdWUpOworICAgIENGVHlwZVJlZiBmZWF0
dXJlRGljdGlvbmFyeVZhbHVlc1tdID0geyBmZWF0dXJlLCBmZWF0dXJlVmFsdWUuZ2V0KCkgfTsK
KyAgICBhdXRvIGZlYXR1cmVEaWN0aW9uYXJ5ID0gYWRvcHRDRihDRkRpY3Rpb25hcnlDcmVhdGUo
a0NGQWxsb2NhdG9yRGVmYXVsdCwgZmVhdHVyZURpY3Rpb25hcnlLZXlzLCBmZWF0dXJlRGljdGlv
bmFyeVZhbHVlcywgMiwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURp
Y3Rpb25hcnlWYWx1ZUNhbGxCYWNrcykpOwogCi0gICAgQ0ZUeXBlUmVmIGZlYXR1cmVTZXR0aW5n
c1ZhbHVlc1tdID0geyBmZWF0dXJlRGljdGlvbmFyeSB9OwotICAgIENGQXJyYXlSZWYgZm9udEZl
YXR1cmVTZXR0aW5ncyA9IENGQXJyYXlDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgZmVhdHVy
ZVNldHRpbmdzVmFsdWVzLCAxLCAma0NGVHlwZUFycmF5Q2FsbEJhY2tzKTsKLSAgICBDRlJlbGVh
c2UoZmVhdHVyZURpY3Rpb25hcnkpOworICAgIENGVHlwZVJlZiBmZWF0dXJlU2V0dGluZ3NWYWx1
ZXNbXSA9IHsgZmVhdHVyZURpY3Rpb25hcnkuZ2V0KCkgfTsKKyAgICBhdXRvIGZvbnRGZWF0dXJl
U2V0dGluZ3MgPSBhZG9wdENGKENGQXJyYXlDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgZmVh
dHVyZVNldHRpbmdzVmFsdWVzLCAxLCAma0NGVHlwZUFycmF5Q2FsbEJhY2tzKSk7CiAKICAgICBD
RlR5cGVSZWYgZm9udERlc2NyaXB0b3JLZXlzW10gPSB7IGtDVEZvbnRGZWF0dXJlU2V0dGluZ3NB
dHRyaWJ1dGUgfTsKLSAgICBDRlR5cGVSZWYgZm9udERlc2NyaXB0b3JWYWx1ZXNbXSA9IHsgZm9u
dEZlYXR1cmVTZXR0aW5ncyB9OwotICAgIENGRGljdGlvbmFyeVJlZiBmb250RGVzY3JpcHRvckF0
dHJpYnV0ZXMgPSBDRkRpY3Rpb25hcnlDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgZm9udERl
c2NyaXB0b3JLZXlzLCBmb250RGVzY3JpcHRvclZhbHVlcywgMSwgJmtDRlR5cGVEaWN0aW9uYXJ5
S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcyk7Ci0gICAgQ0ZS
ZWxlYXNlKGZvbnRGZWF0dXJlU2V0dGluZ3MpOworICAgIENGVHlwZVJlZiBmb250RGVzY3JpcHRv
clZhbHVlc1tdID0geyBmb250RmVhdHVyZVNldHRpbmdzLmdldCgpIH07CisgICAgYXV0byBmb250
RGVzY3JpcHRvckF0dHJpYnV0ZXMgPSBhZG9wdENGKENGRGljdGlvbmFyeUNyZWF0ZShrQ0ZBbGxv
Y2F0b3JEZWZhdWx0LCBmb250RGVzY3JpcHRvcktleXMsIGZvbnREZXNjcmlwdG9yVmFsdWVzLCAx
LCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVl
Q2FsbEJhY2tzKSk7CiAKLSAgICBDVEZvbnREZXNjcmlwdG9yUmVmIG1vZGlmaWVkRm9udERlc2Ny
aXB0b3IgPSBDVEZvbnREZXNjcmlwdG9yQ3JlYXRlQ29weVdpdGhBdHRyaWJ1dGVzKGZvbnREZXNj
cmlwdG9yLCBmb250RGVzY3JpcHRvckF0dHJpYnV0ZXMpOwotICAgIENGUmVsZWFzZShmb250RGVz
Y3JpcHRvckF0dHJpYnV0ZXMpOwotICAgIHJldHVybiBtb2RpZmllZEZvbnREZXNjcmlwdG9yOwor
ICAgIHJldHVybiBhZG9wdENGKENURm9udERlc2NyaXB0b3JDcmVhdGVDb3B5V2l0aEF0dHJpYnV0
ZXMoZm9udERlc2NyaXB0b3IsIGZvbnREZXNjcmlwdG9yQXR0cmlidXRlcy5nZXQoKSkpOwogfQog
CiBzdGF0aWMgdm9pZCBkcmF3VGV4dChDR0NvbnRleHRSZWYgY29udGV4dCwgQ1RGb250RGVzY3Jp
cHRvclJlZiBmb250RGVzY3JpcHRvciwgQ0ZTdHJpbmdSZWYgcHJlZml4LCBDR1BvaW50IGxvY2F0
aW9uKQpAQCAtODQsMzcgKzczLDI5IEBAIHN0YXRpYyB2b2lkIGRyYXdUZXh0KENHQ29udGV4dFJl
ZiBjb250ZXh0LCBDVEZvbnREZXNjcmlwdG9yUmVmIGZvbnREZXNjcmlwdG9yLCBDCiAgICAgQ0dD
b250ZXh0U2V0VGV4dFBvc2l0aW9uKGNvbnRleHQsIGxvY2F0aW9uLngsIGxvY2F0aW9uLnkpOwog
CiAgICAgQ0dGbG9hdCBmb250U2l6ZSA9IDI1OwotICAgIENURm9udFJlZiBmb250ID0gQ1RGb250
Q3JlYXRlV2l0aEZvbnREZXNjcmlwdG9yKGZvbnREZXNjcmlwdG9yLCBmb250U2l6ZSwgbnVsbHB0
cik7CisgICAgYXV0byBmb250ID0gYWRvcHRDRihDVEZvbnRDcmVhdGVXaXRoRm9udERlc2NyaXB0
b3IoZm9udERlc2NyaXB0b3IsIGZvbnRTaXplLCBudWxscHRyKSk7CiAKLSAgICBDRk11dGFibGVT
dHJpbmdSZWYgc3RyaW5nID0gQ0ZTdHJpbmdDcmVhdGVNdXRhYmxlKGtDRkFsbG9jYXRvckRlZmF1
bHQsIDApOwotICAgIENGU3RyaW5nQXBwZW5kKHN0cmluZywgcHJlZml4KTsKLSAgICBDRlN0cmlu
Z0FwcGVuZChzdHJpbmcsIENGU1RSKCJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdo
aWprbG1ub3BxcnN0dXZ3eHl6IikpOworICAgIGF1dG8gc3RyaW5nID0gYWRvcHRDRihDRlN0cmlu
Z0NyZWF0ZU11dGFibGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgMCkpOworICAgIENGU3RyaW5nQXBw
ZW5kKHN0cmluZy5nZXQoKSwgcHJlZml4KTsKKyAgICBDRlN0cmluZ0FwcGVuZChzdHJpbmcuZ2V0
KCksIENGU1RSKCJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0
dXZ3eHl6IikpOwogCi0gICAgQ0dDb2xvclJlZiByZWQgPSBDR0NvbG9yQ3JlYXRlR2VuZXJpY1JH
QigxLCAwLCAwLCAxKTsKKyAgICBhdXRvIHJlZCA9IGFkb3B0Q0YoQ0dDb2xvckNyZWF0ZUdlbmVy
aWNSR0IoMSwgMCwgMCwgMSkpOwogICAgIENGVHlwZVJlZiBsaW5lS2V5c1tdID0geyBrQ1RGb3Jl
Z3JvdW5kQ29sb3JBdHRyaWJ1dGVOYW1lIH07Ci0gICAgQ0ZUeXBlUmVmIGxpbmVWYWx1ZXNbXSA9
IHsgcmVkIH07Ci0gICAgQ0ZEaWN0aW9uYXJ5UmVmIGxpbmVBdHRyaWJ1dGVzID0gQ0ZEaWN0aW9u
YXJ5Q3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGxpbmVLZXlzLCBsaW5lVmFsdWVzLCAxLCAm
a0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2Fs
bEJhY2tzKTsKLSAgICBDR0NvbG9yUmVsZWFzZShyZWQpOworICAgIENGVHlwZVJlZiBsaW5lVmFs
dWVzW10gPSB7IHJlZC5nZXQoKSB9OworICAgIGF1dG8gbGluZUF0dHJpYnV0ZXMgPSBhZG9wdENG
KENGRGljdGlvbmFyeUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBsaW5lS2V5cywgbGluZVZh
bHVlcywgMSwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25h
cnlWYWx1ZUNhbGxCYWNrcykpOwogCi0gICAgQ0ZBdHRyaWJ1dGVkU3RyaW5nUmVmIGF0dHJpYnV0
ZWRTdHJpbmcgPSBDRkF0dHJpYnV0ZWRTdHJpbmdDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwg
c3RyaW5nLCBsaW5lQXR0cmlidXRlcyk7Ci0gICAgQ0ZSZWxlYXNlKGxpbmVBdHRyaWJ1dGVzKTsK
KyAgICBhdXRvIGF0dHJpYnV0ZWRTdHJpbmcgPSBhZG9wdENGKENGQXR0cmlidXRlZFN0cmluZ0Ny
ZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBzdHJpbmcuZ2V0KCksIGxpbmVBdHRyaWJ1dGVzLmdl
dCgpKSk7CiAKLSAgICBDRk11dGFibGVBdHRyaWJ1dGVkU3RyaW5nUmVmIG11dGFibGVBdHRyaWJ1
dGVkU3RyaW5nID0gQ0ZBdHRyaWJ1dGVkU3RyaW5nQ3JlYXRlTXV0YWJsZUNvcHkoa0NGQWxsb2Nh
dG9yRGVmYXVsdCwgMCwgYXR0cmlidXRlZFN0cmluZyk7Ci0gICAgQ0ZSZWxlYXNlKGF0dHJpYnV0
ZWRTdHJpbmcpOworICAgIGF1dG8gbXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcgPSBhZG9wdENGKENG
QXR0cmlidXRlZFN0cmluZ0NyZWF0ZU11dGFibGVDb3B5KGtDRkFsbG9jYXRvckRlZmF1bHQsIDAs
IGF0dHJpYnV0ZWRTdHJpbmcuZ2V0KCkpKTsKIAotICAgIENURm9udFJlZiBtb25vc3BhY2VGb250
ID0gQ1RGb250Q3JlYXRlV2l0aE5hbWUoQ0ZTVFIoIkNvdXJpZXIiKSwgZm9udFNpemUsIG51bGxw
dHIpOwotICAgIENGQXR0cmlidXRlZFN0cmluZ1NldEF0dHJpYnV0ZShtdXRhYmxlQXR0cmlidXRl
ZFN0cmluZywgQ0ZSYW5nZU1ha2UoMCwgQ0ZTdHJpbmdHZXRMZW5ndGgocHJlZml4KSksIGtDVEZv
bnRBdHRyaWJ1dGVOYW1lLCBtb25vc3BhY2VGb250KTsKLSAgICBDRlJlbGVhc2UobW9ub3NwYWNl
Rm9udCk7CisgICAgYXV0byBtb25vc3BhY2VGb250ID0gYWRvcHRDRihDVEZvbnRDcmVhdGVXaXRo
TmFtZShDRlNUUigiQ291cmllciIpLCBmb250U2l6ZSwgbnVsbHB0cikpOworICAgIENGQXR0cmli
dXRlZFN0cmluZ1NldEF0dHJpYnV0ZShtdXRhYmxlQXR0cmlidXRlZFN0cmluZy5nZXQoKSwgQ0ZS
YW5nZU1ha2UoMCwgQ0ZTdHJpbmdHZXRMZW5ndGgocHJlZml4KSksIGtDVEZvbnRBdHRyaWJ1dGVO
YW1lLCBtb25vc3BhY2VGb250LmdldCgpKTsKIAotICAgIENGQXR0cmlidXRlZFN0cmluZ1NldEF0
dHJpYnV0ZShtdXRhYmxlQXR0cmlidXRlZFN0cmluZywgQ0ZSYW5nZU1ha2UoQ0ZTdHJpbmdHZXRM
ZW5ndGgocHJlZml4KSwgQ0ZTdHJpbmdHZXRMZW5ndGgoc3RyaW5nKSAtIENGU3RyaW5nR2V0TGVu
Z3RoKHByZWZpeCkpLCBrQ1RGb250QXR0cmlidXRlTmFtZSwgZm9udCk7Ci0gICAgQ0ZSZWxlYXNl
KHN0cmluZyk7Ci0gICAgQ0ZSZWxlYXNlKGZvbnQpOworICAgIENGQXR0cmlidXRlZFN0cmluZ1Nl
dEF0dHJpYnV0ZShtdXRhYmxlQXR0cmlidXRlZFN0cmluZy5nZXQoKSwgQ0ZSYW5nZU1ha2UoQ0ZT
dHJpbmdHZXRMZW5ndGgocHJlZml4KSwgQ0ZTdHJpbmdHZXRMZW5ndGgoc3RyaW5nLmdldCgpKSAt
IENGU3RyaW5nR2V0TGVuZ3RoKHByZWZpeCkpLCBrQ1RGb250QXR0cmlidXRlTmFtZSwgZm9udC5n
ZXQoKSk7CiAKLSAgICBDVExpbmVSZWYgbGluZSA9IENUTGluZUNyZWF0ZVdpdGhBdHRyaWJ1dGVk
U3RyaW5nKG11dGFibGVBdHRyaWJ1dGVkU3RyaW5nKTsKLSAgICBDRlJlbGVhc2UobXV0YWJsZUF0
dHJpYnV0ZWRTdHJpbmcpOworICAgIGF1dG8gbGluZSA9IGFkb3B0Q0YoQ1RMaW5lQ3JlYXRlV2l0
aEF0dHJpYnV0ZWRTdHJpbmcobXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcuZ2V0KCkpKTsKIAotICAg
IENUTGluZURyYXcobGluZSwgY29udGV4dCk7Ci0gICAgQ0ZSZWxlYXNlKGxpbmUpOworICAgIENU
TGluZURyYXcobGluZS5nZXQoKSwgY29udGV4dCk7CiB9CiAKIGludCBtYWluKGludCBhcmdjLCBj
b25zdCBjaGFyICogYXJndltdKQpAQCAtMTIyLDcgKzEwMyw3IEBAIGludCBtYWluKGludCBhcmdj
LCBjb25zdCBjaGFyICogYXJndltdKQogICAgIHNpemVfdCB3aWR0aCA9IDI1MDA7CiAgICAgc2l6
ZV90IGhlaWdodCA9IDIwMDA7CiAgICAgQ0dDb2xvclNwYWNlUmVmIGNvbG9yU3BhY2UgPSBDR0Nv
bG9yU3BhY2VDcmVhdGVEZXZpY2VSR0IoKTsKLSAgICBDR0NvbnRleHRSZWYgY29udGV4dCA9IENH
Qml0bWFwQ29udGV4dENyZWF0ZShudWxscHRyLCB3aWR0aCwgaGVpZ2h0LCA4LCB3aWR0aCAqIDQs
IGNvbG9yU3BhY2UsIGtDR0ltYWdlQWxwaGFOb25lU2tpcExhc3QpOworICAgIGF1dG8gY29udGV4
dCA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlKG51bGxwdHIsIHdpZHRoLCBoZWlnaHQs
IDgsIHdpZHRoICogNCwgY29sb3JTcGFjZSwga0NHSW1hZ2VBbHBoYU5vbmVTa2lwTGFzdCkpOwog
ICAgIENHQ29sb3JTcGFjZVJlbGVhc2UoY29sb3JTcGFjZSk7CiAgICAgVHlwZSB0eXBlID0gVHlw
ZTo6VHJ1ZVR5cGU7CiAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8dWludDhfdD4gZm9udFZlY3RvciA9
IGdlbmVyYXRlRm9udCh0eXBlKTsKQEAgLTEzMSw0OSArMTEyLDQwIEBAIGludCBtYWluKGludCBh
cmdjLCBjb25zdCBjaGFyICogYXJndltdKQogICAgICAgICBvdXRwdXRGaWxlIDw8IGI7CiAgICAg
b3V0cHV0RmlsZS5jbG9zZSgpOwogICAgIAotICAgIENGRGF0YVJlZiBmb250RGF0YSA9IENGRGF0
YUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBmb250VmVjdG9yLmRhdGEoKSwgZm9udFZlY3Rv
ci5zaXplKCkpOwotICAgIENURm9udERlc2NyaXB0b3JSZWYgZm9udERlc2NyaXB0b3IgPSBDVEZv
bnRNYW5hZ2VyQ3JlYXRlRm9udERlc2NyaXB0b3JGcm9tRGF0YShmb250RGF0YSk7Ci0gICAgQ0ZS
ZWxlYXNlKGZvbnREYXRhKTsKKyAgICBhdXRvIGZvbnREYXRhID0gYWRvcHRDRihDRkRhdGFDcmVh
dGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgZm9udFZlY3Rvci5kYXRhKCksIGZvbnRWZWN0b3Iuc2l6
ZSgpKSk7CisgICAgYXV0byBmb250RGVzY3JpcHRvciA9IGFkb3B0Q0YoQ1RGb250TWFuYWdlckNy
ZWF0ZUZvbnREZXNjcmlwdG9yRnJvbURhdGEoZm9udERhdGEuZ2V0KCkpKTsKIAogICAgIGlmICh0
eXBlID09IFR5cGU6Ok9wZW5UeXBlKSB7CiAgICAgICAgIENGVHlwZVJlZiBmZWF0dXJlVmFsdWVz
T3BlblR5cGVbXSA9IHsgQ0ZTVFIoImxpZ2EiKSwgQ0ZTVFIoImNsaWciKSwgQ0ZTVFIoImRsaWci
KSwgQ0ZTVFIoImhsaWciKSwgQ0ZTVFIoImNhbHQiKSwgQ0ZTVFIoInN1YnMiKSwgQ0ZTVFIoInN1
cHMiKSwgQ0ZTVFIoInNtY3AiKSwgQ0ZTVFIoImMyc2MiKSwgQ0ZTVFIoInBjYXAiKSwgQ0ZTVFIo
ImMycGMiKSwgQ0ZTVFIoInVuaWMiKSwgQ0ZTVFIoInRpdGwiKSwgQ0ZTVFIoIm9udW0iKSwgQ0ZT
VFIoInBudW0iKSwgQ0ZTVFIoInRudW0iKSwgQ0ZTVFIoImZyYWMiKSwgQ0ZTVFIoImFmcmMiKSwg
Q0ZTVFIoIm9yZG4iKSwgQ0ZTVFIoInplcm8iKSwgQ0ZTVFIoImhpc3QiKSwgQ0ZTVFIoImpwNzgi
KSwgQ0ZTVFIoImpwODMiKSwgQ0ZTVFIoImpwOTAiKSwgQ0ZTVFIoImpwMDQiKSwgQ0ZTVFIoInNt
cGwiKSwgQ0ZTVFIoInRyYWQiKSwgQ0ZTVFIoImZ3aWQiKSwgQ0ZTVFIoInB3aWQiKSwgQ0ZTVFIo
InJ1YnkiKSB9OwotICAgICAgICBDRkFycmF5UmVmIGZlYXR1cmVzID0gQ0ZBcnJheUNyZWF0ZShr
Q0ZBbGxvY2F0b3JEZWZhdWx0LCBmZWF0dXJlVmFsdWVzT3BlblR5cGUsIDMwLCAma0NGVHlwZUFy
cmF5Q2FsbEJhY2tzKTsKLQotICAgICAgICBmb3IgKENGSW5kZXggaSA9IDA7IGkgPCBDRkFycmF5
R2V0Q291bnQoZmVhdHVyZXMpOyArK2kpIHsKLSAgICAgICAgICAgIENGU3RyaW5nUmVmIGZlYXR1
cmUgPSBzdGF0aWNfY2FzdDxDRlN0cmluZ1JlZj4oQ0ZBcnJheUdldFZhbHVlQXRJbmRleChmZWF0
dXJlcywgaSkpOwotICAgICAgICAgICAgQ1RGb250RGVzY3JpcHRvclJlZiBtb2RpZmllZEZvbnRE
ZXNjcmlwdG9yID0gY29uc3RydWN0Rm9udFdpdGhPcGVuVHlwZUZlYXR1cmUoZm9udERlc2NyaXB0
b3IsIGZlYXR1cmUsIDEpOwotICAgICAgICAgICAgQ0ZNdXRhYmxlU3RyaW5nUmVmIHByZWZpeCA9
IENGU3RyaW5nQ3JlYXRlTXV0YWJsZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAwKTsKLSAgICAgICAg
ICAgIENGU3RyaW5nQXBwZW5kKHByZWZpeCwgZmVhdHVyZSk7Ci0gICAgICAgICAgICBDRlN0cmlu
Z0FwcGVuZChwcmVmaXgsIENGU1RSKCIgIChvbik6ICIpKTsKLSAgICAgICAgICAgIGRyYXdUZXh0
KGNvbnRleHQsIG1vZGlmaWVkRm9udERlc2NyaXB0b3IsIHByZWZpeCwgQ0dQb2ludE1ha2UoMjUs
IDE5NTAgLSA1MCAqIGkpKTsKLSAgICAgICAgICAgIENGUmVsZWFzZShwcmVmaXgpOwotICAgICAg
ICAgICAgQ0ZSZWxlYXNlKG1vZGlmaWVkRm9udERlc2NyaXB0b3IpOwotCi0gICAgICAgICAgICBt
b2RpZmllZEZvbnREZXNjcmlwdG9yID0gY29uc3RydWN0Rm9udFdpdGhPcGVuVHlwZUZlYXR1cmUo
Zm9udERlc2NyaXB0b3IsIGZlYXR1cmUsIDApOwotICAgICAgICAgICAgcHJlZml4ID0gQ0ZTdHJp
bmdDcmVhdGVNdXRhYmxlKGtDRkFsbG9jYXRvckRlZmF1bHQsIDApOwotICAgICAgICAgICAgQ0ZT
dHJpbmdBcHBlbmQocHJlZml4LCBmZWF0dXJlKTsKLSAgICAgICAgICAgIENGU3RyaW5nQXBwZW5k
KHByZWZpeCwgQ0ZTVFIoIiAob2ZmKTogIikpOwotICAgICAgICAgICAgZHJhd1RleHQoY29udGV4
dCwgbW9kaWZpZWRGb250RGVzY3JpcHRvciwgcHJlZml4LCBDR1BvaW50TWFrZSgyNSwgMTkyNSAt
IDUwICogaSkpOwotICAgICAgICAgICAgQ0ZSZWxlYXNlKHByZWZpeCk7Ci0gICAgICAgICAgICBD
RlJlbGVhc2UobW9kaWZpZWRGb250RGVzY3JpcHRvcik7CisgICAgICAgIGF1dG8gZmVhdHVyZXMg
PSBhZG9wdENGKENGQXJyYXlDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgZmVhdHVyZVZhbHVl
c09wZW5UeXBlLCAzMCwgJmtDRlR5cGVBcnJheUNhbGxCYWNrcykpOworCisgICAgICAgIGZvciAo
Q0ZJbmRleCBpID0gMDsgaSA8IENGQXJyYXlHZXRDb3VudChmZWF0dXJlcy5nZXQoKSk7ICsraSkg
eworICAgICAgICAgICAgQ0ZTdHJpbmdSZWYgZmVhdHVyZSA9IHN0YXRpY19jYXN0PENGU3RyaW5n
UmVmPihDRkFycmF5R2V0VmFsdWVBdEluZGV4KGZlYXR1cmVzLmdldCgpLCBpKSk7CisgICAgICAg
ICAgICBhdXRvIG1vZGlmaWVkRm9udERlc2NyaXB0b3IgPSBjb25zdHJ1Y3RGb250V2l0aE9wZW5U
eXBlRmVhdHVyZShmb250RGVzY3JpcHRvci5nZXQoKSwgZmVhdHVyZSwgMSk7CisgICAgICAgICAg
ICBhdXRvIHByZWZpeCA9IGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVNdXRhYmxlKGtDRkFsbG9jYXRv
ckRlZmF1bHQsIDApKTsKKyAgICAgICAgICAgIENGU3RyaW5nQXBwZW5kKHByZWZpeC5nZXQoKSwg
ZmVhdHVyZSk7CisgICAgICAgICAgICBDRlN0cmluZ0FwcGVuZChwcmVmaXguZ2V0KCksIENGU1RS
KCIgIChvbik6ICIpKTsKKyAgICAgICAgICAgIGRyYXdUZXh0KGNvbnRleHQuZ2V0KCksIG1vZGlm
aWVkRm9udERlc2NyaXB0b3IuZ2V0KCksIHByZWZpeC5nZXQoKSwgQ0dQb2ludE1ha2UoMjUsIDE5
NTAgLSA1MCAqIGkpKTsKKworICAgICAgICAgICAgbW9kaWZpZWRGb250RGVzY3JpcHRvciA9IGNv
bnN0cnVjdEZvbnRXaXRoT3BlblR5cGVGZWF0dXJlKGZvbnREZXNjcmlwdG9yLmdldCgpLCBmZWF0
dXJlLCAwKTsKKyAgICAgICAgICAgIHByZWZpeCA9IGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVNdXRh
YmxlKGtDRkFsbG9jYXRvckRlZmF1bHQsIDApKTsKKyAgICAgICAgICAgIENGU3RyaW5nQXBwZW5k
KHByZWZpeC5nZXQoKSwgZmVhdHVyZSk7CisgICAgICAgICAgICBDRlN0cmluZ0FwcGVuZChwcmVm
aXguZ2V0KCksIENGU1RSKCIgKG9mZik6ICIpKTsKKyAgICAgICAgICAgIGRyYXdUZXh0KGNvbnRl
eHQuZ2V0KCksIG1vZGlmaWVkRm9udERlc2NyaXB0b3IuZ2V0KCksIHByZWZpeC5nZXQoKSwgQ0dQ
b2ludE1ha2UoMjUsIDE5MjUgLSA1MCAqIGkpKTsKICAgICAgICAgfQotCi0gICAgICAgIENGUmVs
ZWFzZShmZWF0dXJlcyk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgX19ibG9jayBpbnQgaSA9IDA7
CiAgICAgICAgIHZvaWQgKF5oYW5kbGVyKSh1aW50MTZfdCB0eXBlLCBDRlN0cmluZ1JlZiB0eXBl
U3RyaW5nLCB1aW50MTZfdCBzZWxlY3RvciwgQ0ZTdHJpbmdSZWYgc2VsZWN0b3JTdHJpbmcpID0g
Xih1aW50MTZfdCB0eXBlLCBDRlN0cmluZ1JlZiB0eXBlU3RyaW5nLCB1aW50MTZfdCBzZWxlY3Rv
ciwgQ0ZTdHJpbmdSZWYgc2VsZWN0b3JTdHJpbmcpCiAgICAgICAgIHsKLSAgICAgICAgICAgIENU
Rm9udERlc2NyaXB0b3JSZWYgbW9kaWZpZWRGb250RGVzY3JpcHRvciA9IGNvbnN0cnVjdEZvbnRX
aXRoVHJ1ZVR5cGVGZWF0dXJlKGZvbnREZXNjcmlwdG9yLCB0eXBlLCBzZWxlY3Rvcik7Ci0gICAg
ICAgICAgICBDRk11dGFibGVTdHJpbmdSZWYgcHJlZml4ID0gQ0ZTdHJpbmdDcmVhdGVNdXRhYmxl
KGtDRkFsbG9jYXRvckRlZmF1bHQsIDApOwotICAgICAgICAgICAgQ0ZTdHJpbmdBcHBlbmQocHJl
Zml4LCB0eXBlU3RyaW5nKTsKLSAgICAgICAgICAgIENGU3RyaW5nQXBwZW5kKHByZWZpeCwgQ0ZT
VFIoIjogIikpOwotICAgICAgICAgICAgQ0ZTdHJpbmdBcHBlbmQocHJlZml4LCBzZWxlY3RvclN0
cmluZyk7Ci0gICAgICAgICAgICBDRlN0cmluZ0FwcGVuZChwcmVmaXgsIENGU1RSKCI6ICIpKTsK
LSAgICAgICAgICAgIHdoaWxlIChDRlN0cmluZ0dldExlbmd0aChwcmVmaXgpIDwgNjUpCi0gICAg
ICAgICAgICAgICAgQ0ZTdHJpbmdBcHBlbmQocHJlZml4LCBDRlNUUigiICIpKTsKLSAgICAgICAg
ICAgIGRyYXdUZXh0KGNvbnRleHQsIG1vZGlmaWVkRm9udERlc2NyaXB0b3IsIHByZWZpeCwgQ0dQ
b2ludE1ha2UoMjUsIDE5NTAgLSA0MCAqIGkpKTsKLSAgICAgICAgICAgIENGUmVsZWFzZShwcmVm
aXgpOwotICAgICAgICAgICAgQ0ZSZWxlYXNlKG1vZGlmaWVkRm9udERlc2NyaXB0b3IpOworICAg
ICAgICAgICAgYXV0byBtb2RpZmllZEZvbnREZXNjcmlwdG9yID0gY29uc3RydWN0Rm9udFdpdGhU
cnVlVHlwZUZlYXR1cmUoZm9udERlc2NyaXB0b3IuZ2V0KCksIHR5cGUsIHNlbGVjdG9yKTsKKyAg
ICAgICAgICAgIGF1dG8gcHJlZml4ID0gYWRvcHRDRihDRlN0cmluZ0NyZWF0ZU11dGFibGUoa0NG
QWxsb2NhdG9yRGVmYXVsdCwgMCkpOworICAgICAgICAgICAgQ0ZTdHJpbmdBcHBlbmQocHJlZml4
LmdldCgpLCB0eXBlU3RyaW5nKTsKKyAgICAgICAgICAgIENGU3RyaW5nQXBwZW5kKHByZWZpeC5n
ZXQoKSwgQ0ZTVFIoIjogIikpOworICAgICAgICAgICAgQ0ZTdHJpbmdBcHBlbmQocHJlZml4Lmdl
dCgpLCBzZWxlY3RvclN0cmluZyk7CisgICAgICAgICAgICBDRlN0cmluZ0FwcGVuZChwcmVmaXgu
Z2V0KCksIENGU1RSKCI6ICIpKTsKKyAgICAgICAgICAgIHdoaWxlIChDRlN0cmluZ0dldExlbmd0
aChwcmVmaXguZ2V0KCkpIDwgNjUpCisgICAgICAgICAgICAgICAgQ0ZTdHJpbmdBcHBlbmQocHJl
Zml4LmdldCgpLCBDRlNUUigiICIpKTsKKyAgICAgICAgICAgIGRyYXdUZXh0KGNvbnRleHQuZ2V0
KCksIG1vZGlmaWVkRm9udERlc2NyaXB0b3IuZ2V0KCksIHByZWZpeC5nZXQoKSwgQ0dQb2ludE1h
a2UoMjUsIDE5NTAgLSA0MCAqIGkpKTsKICAgICAgICAgICAgICsraTsKICAgICAgICAgfTsKICAg
ICAgICAgaGFuZGxlcihrTGlnYXR1cmVzVHlwZSwgQ0ZTVFIoImtMaWdhdHVyZXNUeXBlIiksIGtD
b21tb25MaWdhdHVyZXNPblNlbGVjdG9yLCBDRlNUUigia0NvbW1vbkxpZ2F0dXJlc09uU2VsZWN0
b3IiKSk7CkBAIC0yMTQsMTUgKzE4NiwxMCBAQCBpbnQgbWFpbihpbnQgYXJnYywgY29uc3QgY2hh
ciAqIGFyZ3ZbXSkKICAgICAgICAgaGFuZGxlcihrUnVieUthbmFUeXBlLCBDRlNUUigia1J1YnlL
YW5hVHlwZSIpLCBrUnVieUthbmFPblNlbGVjdG9yLCBDRlNUUigia1J1YnlLYW5hT25TZWxlY3Rv
ciIpKTsKICAgICB9CiAKLSAgICBDRlJlbGVhc2UoZm9udERlc2NyaXB0b3IpOwotICAgIENHSW1h
Z2VSZWYgaW1hZ2UgPSBDR0JpdG1hcENvbnRleHRDcmVhdGVJbWFnZShjb250ZXh0KTsKLSAgICBD
R0NvbnRleHRSZWxlYXNlKGNvbnRleHQpOwotICAgIENGVVJMUmVmIHVybCA9IENGVVJMQ3JlYXRl
V2l0aEZpbGVTeXN0ZW1QYXRoKGtDRkFsbG9jYXRvckRlZmF1bHQsIENGU1RSKCIvVm9sdW1lcy9E
YXRhL2hvbWUvbW1heGZpZWxkL3RtcC9vdXRwdXQucG5nIiksIGtDRlVSTFBPU0lYUGF0aFN0eWxl
LCBGQUxTRSk7Ci0gICAgQ0dJbWFnZURlc3RpbmF0aW9uUmVmIGltYWdlRGVzdGluYXRpb24gPSBD
R0ltYWdlRGVzdGluYXRpb25DcmVhdGVXaXRoVVJMKHVybCwga1VUVHlwZVBORywgMSwgbnVsbHB0
cik7Ci0gICAgQ0ZSZWxlYXNlKHVybCk7Ci0gICAgQ0dJbWFnZURlc3RpbmF0aW9uQWRkSW1hZ2Uo
aW1hZ2VEZXN0aW5hdGlvbiwgaW1hZ2UsIG51bGxwdHIpOwotICAgIENHSW1hZ2VSZWxlYXNlKGlt
YWdlKTsKLSAgICBDR0ltYWdlRGVzdGluYXRpb25GaW5hbGl6ZShpbWFnZURlc3RpbmF0aW9uKTsK
LSAgICBDRlJlbGVhc2UoaW1hZ2VEZXN0aW5hdGlvbik7CisgICAgYXV0byBpbWFnZSA9IGFkb3B0
Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlSW1hZ2UoY29udGV4dC5nZXQoKSkpOworICAgIGF1dG8g
dXJsID0gYWRvcHRDRihDRlVSTENyZWF0ZVdpdGhGaWxlU3lzdGVtUGF0aChrQ0ZBbGxvY2F0b3JE
ZWZhdWx0LCBDRlNUUigiL1ZvbHVtZXMvRGF0YS9ob21lL21tYXhmaWVsZC90bXAvb3V0cHV0LnBu
ZyIpLCBrQ0ZVUkxQT1NJWFBhdGhTdHlsZSwgRkFMU0UpKTsKKyAgICBhdXRvIGltYWdlRGVzdGlu
YXRpb24gPSBhZG9wdENGKENHSW1hZ2VEZXN0aW5hdGlvbkNyZWF0ZVdpdGhVUkwodXJsLmdldCgp
LCBrVVRUeXBlUE5HLCAxLCBudWxscHRyKSk7CisgICAgQ0dJbWFnZURlc3RpbmF0aW9uQWRkSW1h
Z2UoaW1hZ2VEZXN0aW5hdGlvbi5nZXQoKSwgaW1hZ2UuZ2V0KCksIG51bGxwdHIpOworICAgIENH
SW1hZ2VEZXN0aW5hdGlvbkZpbmFsaXplKGltYWdlRGVzdGluYXRpb24uZ2V0KCkpOwogICAgIHJl
dHVybiAwOwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3BwCmluZGV4IDNkYjAyMzQ5MzQxNTM5ZWQ0
Mzg3MGU2NDUwNmQ5MzMwNzU0MmMyODkuLjc0NWM0Y2U4MzVlZGNjMWIzMjBlOTAzZDM2N2Y3NzZh
NzVlNDU3MzggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHAKQEAgLTc5Niw3ICs3OTYsNyBAQCB2
b2lkIEluamVjdGVkQnVuZGxlUGFnZTo6ZHVtcERPTUFzV2ViQXJjaGl2ZShXS0J1bmRsZUZyYW1l
UmVmIGZyYW1lLCBTdHJpbmdCdWlsZAogI2lmIFVTRShDRikgJiYgIVBMQVRGT1JNKFdJTl9DQUlS
TykgJiYgIVVTRShESVJFQ1QyRCkKICAgICBhdXRvIHdrRGF0YSA9IGFkb3B0V0soV0tCdW5kbGVG
cmFtZUNvcHlXZWJBcmNoaXZlKGZyYW1lKSk7CiAgICAgYXV0byBjZkRhdGEgPSBhZG9wdENGKENG
RGF0YUNyZWF0ZSgwLCBXS0RhdGFHZXRCeXRlcyh3a0RhdGEuZ2V0KCkpLCBXS0RhdGFHZXRTaXpl
KHdrRGF0YS5nZXQoKSkpKTsKLSAgICBhdXRvIGNmU3RyaW5nID0gYWRvcHRDRihXZWJDb3JlVGVz
dFN1cHBvcnQ6OmNyZWF0ZVhNTFN0cmluZ0Zyb21XZWJBcmNoaXZlRGF0YShjZkRhdGEuZ2V0KCkp
KTsKKyAgICBhdXRvIGNmU3RyaW5nID0gV2ViQ29yZVRlc3RTdXBwb3J0OjpjcmVhdGVYTUxTdHJp
bmdGcm9tV2ViQXJjaGl2ZURhdGEoY2ZEYXRhLmdldCgpKTsKICAgICBzdHJpbmdCdWlsZGVyLmFw
cGVuZChjZlN0cmluZy5nZXQoKSk7CiAjZW5kaWYKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvaW9zL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRJT1Mu
bW0gYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2lvcy9BY2Nlc3NpYmls
aXR5VUlFbGVtZW50SU9TLm1tCmluZGV4IDQ2YTE1NzgwZGM1OGQzN2Y5YWRhYmU3MDA5MDFkOTEw
ZGU5N2QxZjQuLmYwZjliMzg3ZDA2YzQzMDhhZTEzNjFmMTFkYzkwN2Q0OGJkZjcyNTMgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvaW9zL0FjY2Vzc2li
aWxpdHlVSUVsZW1lbnRJT1MubW0KKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9pb3MvQWNjZXNzaWJpbGl0eVVJRWxlbWVudElPUy5tbQpAQCAtMTMwLDcgKzEzMCw3
IEBAICsgKE5TU3RyaW5nICopc3RyaW5nV2l0aEpTU3RyaW5nUmVmOihKU1N0cmluZ1JlZilqc1N0
cmluZ1JlZgogICAgIGlmICghanNTdHJpbmdSZWYpCiAgICAgICAgIHJldHVybiBuaWw7CiAgICAg
Ci0gICAgcmV0dXJuIENGQnJpZGdpbmdSZWxlYXNlKEpTU3RyaW5nQ29weUNGU3RyaW5nKGtDRkFs
bG9jYXRvckRlZmF1bHQsIGpzU3RyaW5nUmVmKSk7CisgICAgcmV0dXJuIGFkb3B0Q0YoSlNTdHJp
bmdDb3B5Q0ZTdHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwganNTdHJpbmdSZWYpKS5icmlkZ2lu
Z0F1dG9yZWxlYXNlKCk7CiB9CiAKIC0gKEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiljcmVhdGVK
U1N0cmluZ1JlZgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9tYWMvQWNjZXNzaWJpbGl0eUNvbW1vbk1hYy5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0FjY2Vzc2liaWxpdHlDb21tb25NYWMubW0KaW5kZXggMzU0
YThmNjU1NWM2YzAwMjY1ZjU2ODFhNmIzNzE1MmE4NGE1NjJjMC4uZjhlMmRjZTIyMTAyNzJhZjY2
ZGU4YzI3MWZmNDVkM2I3YjU3YzYwZiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9tYWMvQWNjZXNzaWJpbGl0eUNvbW1vbk1hYy5tbQorKysgYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5Q29tbW9u
TWFjLm1tCkBAIC00Myw3ICs0Myw3IEBAICsgKE5TU3RyaW5nICopc3RyaW5nV2l0aEpTU3RyaW5n
UmVmOihKU1N0cmluZ1JlZilqc1N0cmluZ1JlZgogICAgIGlmICghanNTdHJpbmdSZWYpCiAgICAg
ICAgIHJldHVybiBuaWw7CiAKLSAgICByZXR1cm4gQ0ZCcmlkZ2luZ1JlbGVhc2UoSlNTdHJpbmdD
b3B5Q0ZTdHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwganNTdHJpbmdSZWYpKTsKKyAgICByZXR1
cm4gYWRvcHRDRihKU1N0cmluZ0NvcHlDRlN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBqc1N0
cmluZ1JlZikpLmJyaWRnaW5nQXV0b3JlbGVhc2UoKTsKIH0KIAogLSAoSlNSZXRhaW5QdHI8SlNT
dHJpbmdSZWY+KWNyZWF0ZUpTU3RyaW5nUmVmCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL2lvcy9ISURFdmVudEdlbmVyYXRvci5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
aW9zL0hJREV2ZW50R2VuZXJhdG9yLm1tCmluZGV4IDMxYjQ2NTBlMzU2MTE5YzAyNDAxNjY0Y2Uw
Mjc2OTQ4ZGEwMzVlZDguLmY2ODJjYTI5ODc1YjM2NmViMTZiNWU3OWYwNmRkMGUwYTUxZmJkMDcg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL0hJREV2ZW50R2VuZXJhdG9y
Lm1tCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL0hJREV2ZW50R2VuZXJhdG9yLm1t
CkBAIC0zMTksNyArMzE5LDcgQEAgLSAoSU9ISURFdmVudFJlZilfY3JlYXRlSU9ISURFdmVudFdp
dGhJbmZvOihOU0RpY3Rpb25hcnkgKilpbmZvCiAgICAgICAgIGlmIChbdG91Y2hJbmZvW0hJREV2
ZW50UHJlc3N1cmVLZXldIGZsb2F0VmFsdWVdKQogICAgICAgICAgICAgY2hpbGRFdmVudE1hc2sg
fD0ga0lPSElERGlnaXRpemVyRXZlbnRBdHRyaWJ1dGU7CiAKLSAgICAgICAgSU9ISURFdmVudFJl
ZiBzdWJFdmVudCA9IElPSElERXZlbnRDcmVhdGVEaWdpdGl6ZXJGaW5nZXJFdmVudChrQ0ZBbGxv
Y2F0b3JEZWZhdWx0LCBtYWNoVGltZSwKKyAgICAgICAgYXV0byBzdWJFdmVudCA9IGFkb3B0Q0Yo
SU9ISURFdmVudENyZWF0ZURpZ2l0aXplckZpbmdlckV2ZW50KGtDRkFsbG9jYXRvckRlZmF1bHQs
IG1hY2hUaW1lLAogICAgICAgICAgICAgW3RvdWNoSW5mb1tISURFdmVudFRvdWNoSURLZXldIGlu
dFZhbHVlXSwgICAgICAgICAgICAgICAvLyBpbmRleAogICAgICAgICAgICAgMiwgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpZGVudGlmaWVy
ICh3aGljaCBmaW5nZXIgd2UgdGhpbmsgaXQgaXMpLiBGSVhNRTogdGhpcyBzaG91bGQgY29tZSBm
cm9tIHRoZSBkYXRhLgogICAgICAgICAgICAgY2hpbGRFdmVudE1hc2ssCkBAIC0zMzAsMTMgKzMz
MCwxMiBAQCAtIChJT0hJREV2ZW50UmVmKV9jcmVhdGVJT0hJREV2ZW50V2l0aEluZm86KE5TRGlj
dGlvbmFyeSAqKWluZm8KICAgICAgICAgICAgIFt0b3VjaEluZm9bSElERXZlbnRUd2lzdEtleV0g
ZmxvYXRWYWx1ZV0sCiAgICAgICAgICAgICB0b3VjaCwgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJhbmdlCiAgICAgICAgICAgICB0b3VjaCwgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRvdWNoCi0g
ICAgICAgICAgICBrSU9ISURFdmVudE9wdGlvbk5vbmUpOworICAgICAgICAgICAga0lPSElERXZl
bnRPcHRpb25Ob25lKSk7CiAKLSAgICAgICAgSU9ISURFdmVudFNldEZsb2F0VmFsdWUoc3ViRXZl
bnQsIGtJT0hJREV2ZW50RmllbGREaWdpdGl6ZXJNYWpvclJhZGl1cywgW3RvdWNoSW5mb1tISURF
dmVudE1ham9yUmFkaXVzS2V5XSBmbG9hdFZhbHVlXSk7Ci0gICAgICAgIElPSElERXZlbnRTZXRG
bG9hdFZhbHVlKHN1YkV2ZW50LCBrSU9ISURFdmVudEZpZWxkRGlnaXRpemVyTWlub3JSYWRpdXMs
IFt0b3VjaEluZm9bSElERXZlbnRNaW5vclJhZGl1c0tleV0gZmxvYXRWYWx1ZV0pOworICAgICAg
ICBJT0hJREV2ZW50U2V0RmxvYXRWYWx1ZShzdWJFdmVudC5nZXQoKSwga0lPSElERXZlbnRGaWVs
ZERpZ2l0aXplck1ham9yUmFkaXVzLCBbdG91Y2hJbmZvW0hJREV2ZW50TWFqb3JSYWRpdXNLZXld
IGZsb2F0VmFsdWVdKTsKKyAgICAgICAgSU9ISURFdmVudFNldEZsb2F0VmFsdWUoc3ViRXZlbnQu
Z2V0KCksIGtJT0hJREV2ZW50RmllbGREaWdpdGl6ZXJNaW5vclJhZGl1cywgW3RvdWNoSW5mb1tI
SURFdmVudE1pbm9yUmFkaXVzS2V5XSBmbG9hdFZhbHVlXSk7CiAKLSAgICAgICAgSU9ISURFdmVu
dEFwcGVuZEV2ZW50KGV2ZW50UmVmLCBzdWJFdmVudCwgMCk7Ci0gICAgICAgIENGUmVsZWFzZShz
dWJFdmVudCk7CisgICAgICAgIElPSElERXZlbnRBcHBlbmRFdmVudChldmVudFJlZiwgc3ViRXZl
bnQuZ2V0KCksIDApOwogICAgIH0KIAogICAgIHJldHVybiBldmVudFJlZjsKZGlmZiAtLWdpdCBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL0V2ZW50U2VuZGVyUHJveHkubW0gYi9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL21hYy9FdmVudFNlbmRlclByb3h5Lm1tCmluZGV4IGJhY2MxNDExNTQz
MzFiNzlkMWEzY2VkNjgxYzdmOTQ4OTg4YjkwNjYuLjhlOTk0N2IwYjMyNDBmM2ZjMDliM2M2YWRi
NjVlOGYyZTAyY2ZlZDQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL0V2
ZW50U2VuZGVyUHJveHkubW0KKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvRXZlbnRT
ZW5kZXJQcm94eS5tbQpAQCAtOTUsMTcgKzk1LDE2IEBAIC0gKGluc3RhbmNldHlwZSlpbml0UHJl
c3N1cmVFdmVudEF0TG9jYXRpb246KE5TUG9pbnQpbG9jYXRpb24gZ2xvYmFsTG9jYXRpb246KE5T
CiAgICAgICAgIGJyZWFrOwogICAgIH0KIAotICAgIENHRXZlbnRSZWYgY2dFdmVudCA9IENHRXZl
bnRDcmVhdGUobnVsbHB0cik7Ci0gICAgQ0dFdmVudFNldFR5cGUoY2dFdmVudCwgKENHRXZlbnRU
eXBlKWtDR1NFdmVudEdlc3R1cmUpOwotICAgIENHRXZlbnRTZXRJbnRlZ2VyVmFsdWVGaWVsZChj
Z0V2ZW50LCBrQ0dFdmVudEdlc3R1cmVISURUeXBlLCAzMik7Ci0gICAgQ0dFdmVudFNldEludGVn
ZXJWYWx1ZUZpZWxkKGNnRXZlbnQsIGtDR0V2ZW50R2VzdHVyZVBoYXNlLCBnZXN0dXJlUGhhc2Up
OwotICAgIENHRXZlbnRTZXREb3VibGVWYWx1ZUZpZWxkKGNnRXZlbnQsIGtDR0V2ZW50U3RhZ2VQ
cmVzc3VyZSwgcHJlc3N1cmUpOwotICAgIENHRXZlbnRTZXREb3VibGVWYWx1ZUZpZWxkKGNnRXZl
bnQsIGtDR0V2ZW50VHJhbnNpdGlvblByb2dyZXNzLCBwcmVzc3VyZSk7Ci0gICAgQ0dFdmVudFNl
dEludGVnZXJWYWx1ZUZpZWxkKGNnRXZlbnQsIGtDR0V2ZW50R2VzdHVyZVN0YWdlLCBzdGFnZVRy
YW5zaXRpb24pOwotICAgIENHRXZlbnRTZXRJbnRlZ2VyVmFsdWVGaWVsZChjZ0V2ZW50LCBrQ0dF
dmVudEdlc3R1cmVCZWhhdmlvciwga0NHU0dlc3R1cmVCZWhhdmlvckRlZXBQcmVzcyk7Ci0KLSAg
ICBzZWxmID0gW3N1cGVyIF9pbml0V2l0aENHRXZlbnQ6Y2dFdmVudCBldmVudFJlZjpudWxscHRy
XTsKLSAgICBDRlJlbGVhc2UoY2dFdmVudCk7CisgICAgYXV0byBjZ0V2ZW50ID0gYWRvcHRDRihD
R0V2ZW50Q3JlYXRlKG51bGxwdHIpKTsKKyAgICBDR0V2ZW50U2V0VHlwZShjZ0V2ZW50LmdldCgp
LCAoQ0dFdmVudFR5cGUpa0NHU0V2ZW50R2VzdHVyZSk7CisgICAgQ0dFdmVudFNldEludGVnZXJW
YWx1ZUZpZWxkKGNnRXZlbnQuZ2V0KCksIGtDR0V2ZW50R2VzdHVyZUhJRFR5cGUsIDMyKTsKKyAg
ICBDR0V2ZW50U2V0SW50ZWdlclZhbHVlRmllbGQoY2dFdmVudC5nZXQoKSwga0NHRXZlbnRHZXN0
dXJlUGhhc2UsIGdlc3R1cmVQaGFzZSk7CisgICAgQ0dFdmVudFNldERvdWJsZVZhbHVlRmllbGQo
Y2dFdmVudC5nZXQoKSwga0NHRXZlbnRTdGFnZVByZXNzdXJlLCBwcmVzc3VyZSk7CisgICAgQ0dF
dmVudFNldERvdWJsZVZhbHVlRmllbGQoY2dFdmVudC5nZXQoKSwga0NHRXZlbnRUcmFuc2l0aW9u
UHJvZ3Jlc3MsIHByZXNzdXJlKTsKKyAgICBDR0V2ZW50U2V0SW50ZWdlclZhbHVlRmllbGQoY2dF
dmVudC5nZXQoKSwga0NHRXZlbnRHZXN0dXJlU3RhZ2UsIHN0YWdlVHJhbnNpdGlvbik7CisgICAg
Q0dFdmVudFNldEludGVnZXJWYWx1ZUZpZWxkKGNnRXZlbnQuZ2V0KCksIGtDR0V2ZW50R2VzdHVy
ZUJlaGF2aW9yLCBrQ0dTR2VzdHVyZUJlaGF2aW9yRGVlcFByZXNzKTsKKworICAgIHNlbGYgPSBb
c3VwZXIgX2luaXRXaXRoQ0dFdmVudDpjZ0V2ZW50LmdldCgpIGV2ZW50UmVmOm51bGxwdHJdOwog
CiAgICAgaWYgKCFzZWxmKQogICAgICAgICByZXR1cm4gbmlsOwpkaWZmIC0tZ2l0IGEvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9tYWMvVUlTY3JpcHRDb250cm9sbGVyTWFjLm1tIGIvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9tYWMvVUlTY3JpcHRDb250cm9sbGVyTWFjLm1tCmluZGV4IDYwYmU5NTdl
MDU3ZTI0YmUwZmJhZmZhZjJjMzgyMTU3NGE3NjQxNTMuLmJhYmU5NTdkMTFiMjA0NmQ1ZjM2ZWQ0
ZGRjNzFiYmQ3ZDZlNjA2MWIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFj
L1VJU2NyaXB0Q29udHJvbGxlck1hYy5tbQorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL21h
Yy9VSVNjcmlwdENvbnRyb2xsZXJNYWMubW0KQEAgLTUzLDE0ICs1MywxNCBAQCBSZWY8VUlTY3Jp
cHRDb250cm9sbGVyPiBVSVNjcmlwdENvbnRyb2xsZXI6OmNyZWF0ZShVSVNjcmlwdENvbnRleHQm
IGNvbnRleHQpCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVUlTY3JpcHRDb250cm9sbGVyTWFj
KGNvbnRleHQpKTsKIH0KIAotc3RhdGljIE5TU3RyaW5nICpuc1N0cmluZyhKU1N0cmluZ1JlZiBz
dHJpbmcpCitzdGF0aWMgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBjZlN0cmluZyhKU1N0cmluZ1Jl
ZiBzdHJpbmcpCiB7Ci0gICAgcmV0dXJuIENGQnJpZGdpbmdSZWxlYXNlKEpTU3RyaW5nQ29weUNG
U3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIHN0cmluZykpOworICAgIHJldHVybiBhZG9wdENG
KEpTU3RyaW5nQ29weUNGU3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIHN0cmluZykpOwogfQog
CiB2b2lkIFVJU2NyaXB0Q29udHJvbGxlck1hYzo6cmVwbGFjZVRleHRBdFJhbmdlKEpTU3RyaW5n
UmVmIHRleHQsIGludCBsb2NhdGlvbiwgaW50IGxlbmd0aCkKIHsKLSAgICBbd2ViVmlldygpIF9p
bnNlcnRUZXh0Om5zU3RyaW5nKHRleHQpIHJlcGxhY2VtZW50UmFuZ2U6TlNNYWtlUmFuZ2UobG9j
YXRpb24gPT0gLTEgPyBOU05vdEZvdW5kIDogbG9jYXRpb24sIGxlbmd0aCldOworICAgIFt3ZWJW
aWV3KCkgX2luc2VydFRleHQ6KF9fYnJpZGdlIE5TU3RyaW5nICopY2ZTdHJpbmcodGV4dCkuZ2V0
KCkgcmVwbGFjZW1lbnRSYW5nZTpOU01ha2VSYW5nZShsb2NhdGlvbiA9PSAtMSA/IE5TTm90Rm91
bmQgOiBsb2NhdGlvbiwgbGVuZ3RoKV07CiB9CiAKIHZvaWQgVUlTY3JpcHRDb250cm9sbGVyTWFj
Ojp6b29tVG9TY2FsZShkb3VibGUgc2NhbGUsIEpTVmFsdWVSZWYgY2FsbGJhY2spCg==
</data>
<flag name="commit-queue"
          id="441380"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>422310</attachid>
            <date>2021-03-04 16:30:47 -0800</date>
            <delta_ts>2021-03-04 20:18:58 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222760-20210304163046.patch</filename>
            <type>text/plain</type>
            <size>187482</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjczOTI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
MWU0YmQxNzg0NzU1ZmE4ODU2YjFlODQ0NDExYzg3OWE4YjMyNzg5Li4xNGJhNDI4MjIxY2M0MjQ3
M2E0YzJlYjNkYmM0OTE5OTk1N2E1MTI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMCBAQAorMjAyMS0wMy0wNCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIFJlZHVjZSB1c2Ugb2YgQ0ZSZXRhaW4oKSAvIENGUmVsZWFzZSgpIC8gQ0ZBdXRv
UmVsZWFzZSgpIGluIFdlYktpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjIyNzYwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgUmVkdWNlIHVzZSBvZiBDRlJldGFpbigpIC8gQ0ZSZWxlYXNlKCkgLyBDRkF1
dG9SZWxlYXNlKCkgaW4gV2ViS2l0IGJ5IHVzaW5nIFJldGFpblB0cjw+LgorCisgICAgICAgICog
QVBJL0pTQ29udGV4dC5tbToKKyAgICAgICAgKC1bSlNDb250ZXh0IG5hbWVdKToKKyAgICAgICAg
KiBBUEkvSlNWYWx1ZS5tbToKKyAgICAgICAgKHZhbHVlVG9PYmplY3RXaXRob3V0Q29weSk6Cisg
ICAgICAgICh2YWx1ZVRvU3RyaW5nKToKKyAgICAgICAgKiBpbnNwZWN0b3IvcmVtb3RlL2NvY29h
L1JlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24ubW06CisgICAgICAgIChJbnNwZWN0b3I6OlJl
bW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb246OmRlc2VyaWFsaXplTWVzc2FnZSk6CisKIDIwMjEt
MDMtMDQgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAg
ICAgICBVbnJldmlld2VkLCByZXZlcnRpbmcgcjI3MzkwNi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggNGE4YmZkMjA1NmExZmVi
ZWRmYzBiYzhiMGI0OWYzYzIzOWMwN2I0My4uNmVmNDBhMTY5OTY0ODk2MDU4OWMwMWMxZjA1MDYx
YTU4YjFhNzNhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAyMS0wMy0wNCAgQ2hyaXMgRHVtZXog
IDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFJlZHVjZSB1c2Ugb2YgQ0ZSZXRhaW4oKSAv
IENGUmVsZWFzZSgpIC8gQ0ZBdXRvUmVsZWFzZSgpIGluIFdlYktpdAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIyNzYwCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVkdWNlIHVzZSBvZiBDRlJldGFpbigp
IC8gQ0ZSZWxlYXNlKCkgLyBDRkF1dG9SZWxlYXNlKCkgaW4gV2ViS2l0IGJ5IHVzaW5nIFJldGFp
blB0cjw+LgorCisgICAgICAgICogd3RmL2NvY29hL05TVVJMRXh0cmFzLm1tOgorICAgICAgICAo
V1RGOjpkZWNvZGVQZXJjZW50RXNjYXBlcyk6CisgICAgICAgIChXVEY6OlVSTEJ5VHJ1bmNhdGlu
Z09uZUNoYXJhY3RlckJlZm9yZUNvbXBvbmVudCk6CisgICAgICAgIChXVEY6OlVSTFdpdGhEYXRh
KToKKyAgICAgICAgKFdURjo6VVJMQnlSZW1vdmluZ0NvbXBvbmVudEFuZFN1YnNlcXVlbnRDaGFy
YWN0ZXIpOgorCiAyMDIxLTAzLTA0ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdl
YmtpdC5vcmc+CiAKICAgICAgICAgUmVtb3ZlIHRoZSBIVFRQU1VwZ3JhZGVFbmFibGVkIGV4cGVy
aW1lbnRhbCBmZWF0dXJlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTdmYjczNjIyYWJkNTdiYjA3Y2M4OGE3N2Zj
YmNjMWEyMzFlZTliNC4uYTFmMThlY2VhZjBiYjZmYjY2MzlmNWVhMjM4ODFiNjI5MTgzZDExMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDExMiBAQAorMjAyMS0wMy0wNCAgQ2hyaXMgRHVtZXogIDxj
ZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFJlZHVjZSB1c2Ugb2YgQ0ZSZXRhaW4oKSAvIENG
UmVsZWFzZSgpIC8gQ0ZBdXRvUmVsZWFzZSgpIGluIFdlYktpdAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIyNzYwCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVkdWNlIHVzZSBvZiBDRlJldGFpbigpIC8g
Q0ZSZWxlYXNlKCkgLyBDRkF1dG9SZWxlYXNlKCkgaW4gV2ViS2l0IGJ5IHVzaW5nIFJldGFpblB0
cjw+LgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9tYWMvQVhPYmplY3RDYWNoZU1hYy5tbToK
KyAgICAgICAgKFdlYkNvcmU6OkFYVGV4dE1hcmtlclJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6
OkFYVGV4dE1hcmtlclJhbmdlU3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6QVhUZXh0TWFya2Vy
UmFuZ2VFbmQpOgorICAgICAgICAoV2ViQ29yZTo6dGV4dE1hcmtlckZvclZpc2libGVQb3NpdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjp0ZXh0TWFya2VyRm9yQ2hhcmFjdGVyT2Zmc2V0KToKKyAg
ICAgICAgKFdlYkNvcmU6OnN0YXJ0T3JFbmRUZXh0TWFya2VyRm9yUmFuZ2UpOgorICAgICAgICAq
IGFjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5tbToK
KyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlIHVwZGF0ZU9iamVj
dEJhY2tpbmdTdG9yZV0pOgorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBl
ckJhc2UgY29udmVydFBhdGhUb1NjcmVlblNwYWNlOl0pOgorICAgICAgICAqIGFjY2Vzc2liaWxp
dHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tOgorICAgICAgICAobmV4
dFRleHRNYXJrZXJGb3JDaGFyYWN0ZXJPZmZzZXQpOgorICAgICAgICAocHJldmlvdXNUZXh0TWFy
a2VyRm9yQ2hhcmFjdGVyT2Zmc2V0KToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVj
dFdyYXBwZXIgdGV4dE1hcmtlckZvckZpcnN0UG9zaXRpb25JblRleHRDb250cm9sOl0pOgorICAg
ICAgICAoQVhBdHRyaWJ1dGVTdHJpbmdTZXRFbGVtZW50KToKKyAgICAgICAgKiBlZGl0aW5nL2Nv
Y29hL0hUTUxDb252ZXJ0ZXIubW06CisgICAgICAgIChIVE1MQ29udmVydGVyOjpfcHJvY2Vzc1Rl
eHQpOgorICAgICAgICAqIGxvYWRlci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EubW06Cisg
ICAgICAgIChXZWJDb3JlOjpEaXNrQ2FjaGVNb25pdG9yOjpEaXNrQ2FjaGVNb25pdG9yKToKKyAg
ICAgICAgKiBwYWdlL21hYy9FdmVudEhhbmRsZXJNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpz
ZWxmUmV0YWluaW5nTlNTY3JvbGxWaWV3U2Nyb2xsV2hlZWwpOgorICAgICAgICAqIHBhZ2Uvd2lu
L0ZyYW1lQ0dXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6aW1hZ2VGcm9tUmVjdCk6CisgICAg
ICAgICogcGxhdGZvcm0vY2YvTWFpblRocmVhZFNoYXJlZFRpbWVyQ0YuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6c2hhcmVkVGltZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWFpblRocmVhZFNoYXJl
ZFRpbWVyOjpyZXN0YXJ0U2hhcmVkVGltZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWFpblRocmVh
ZFNoYXJlZFRpbWVyOjppbnZhbGlkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1haW5UaHJlYWRT
aGFyZWRUaW1lcjo6c2V0RmlyZUludGVydmFsKToKKyAgICAgICAgKFdlYkNvcmU6Ok1haW5UaHJl
YWRTaGFyZWRUaW1lcjo6c3RvcCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OmV4ZXJuYWxEZXZpY2VEaXNwbGF5TmFtZUZvclBsYXllcik6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL0NBQ0ZMYXllclRyZWVIb3N0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNBQ0ZMYXllclRyZWVIb3N0Ojppbml0aWFsaXplKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpwYXR0ZXJuUmVsZWFzZUNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDo6ZmlsbFBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Ojpz
dHJva2VQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3Qp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzdHJva2VSZWN0KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXR0ZXJuQ0cuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6cGF0dGVyblJlbGVhc2VDYWxsYmFjayk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YXV0b0FjdGl2
YXRlRm9udCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDR1dpbi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZTo6Z2V0UGxhdGZvcm1HbHlwaEFkdmFuY2Vz
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0Q0dXaW4u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpyZWxlYXNlV2luZG93c0Nv
bnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3Rm9jdXNSaW5n
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VDR1dpbi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Z2V0SEJJVE1BUE9mU2l6ZSk6CisgICAgICAgICog
cGxhdGZvcm0vaW9zL1VzZXJBZ2VudElPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OnN0YW5kYXJk
VXNlckFnZW50V2l0aEFwcGxpY2F0aW9uTmFtZSk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL3dh
ay9XZWJDb3JlVGhyZWFkLm1tOgorICAgICAgICAoU2VuZERlbGVnYXRlTWVzc2FnZSk6CisgICAg
ICAgIChSdW5XZWJUaHJlYWQpOgorICAgICAgICAoV2ViVGhyZWFkVW5sb2NrR3VhcmRGb3JNYWls
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplck1hYy5t
bToKKyAgICAgICAgKFdlYkNvcmU6OnNwZWVjaFN5bnRoZXNpc0dldFZvaWNlSWRlbnRpZmllcnMp
OgorICAgICAgICAoV2ViQ29yZTo6c3BlZWNoU3ludGhlc2lzR2V0RGVmYXVsdFZvaWNlSWRlbnRp
ZmllckZvckxvY2FsZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNp
emVyOjppbml0aWFsaXplVm9pY2VMaXN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvUGx1Z2lu
QmxvY2tsaXN0Lm1tOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luQmxvY2tsaXN0OjpjcmVhdGUp
OgorICAgICAgICAqIHBsYXRmb3JtL21hYy9XZWJHTEJsb2NrbGlzdC5tbToKKyAgICAgICAgKFdl
YkNvcmU6OldlYkdMQmxvY2tsaXN0OjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlh
cmVjb3JkZXIvY29jb2EvQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tOgorICAgICAgICAo
V2ViQ29yZTo6QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjphdHRhY2hQcmltaW5nVHJpbXNJ
Zk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6
OnByb3ZpZGVTb3VyY2VEYXRhTnVtT3V0cHV0UGFja2V0cyk6CisgICAgICAgICogcGxhdGZvcm0v
bWVkaWFyZWNvcmRlci9jb2NvYS9WaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IubW06CisgICAg
ICAgIChXZWJDb3JlOjpzZXRDb21wcmVzc2lvblNlc3Npb25Qcm9wZXJ0eSk6CisgICAgICAgICog
cGxhdGZvcm0vbmV0d29yay9jZi9Gb3JtRGF0YVN0cmVhbUNGTmV0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmNsb3NlQ3VycmVudFN0cmVhbSk6CisgICAgICAgIChXZWJDb3JlOjphZHZhbmNlQ3Vy
cmVudFN0cmVhbSk6CisgICAgICAgIChXZWJDb3JlOjpvcGVuTmV4dFN0cmVhbSk6CisgICAgICAg
IChXZWJDb3JlOjpmb3JtUmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpmb3JtQ2FuUmVhZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpmb3JtU2NoZWR1bGUpOgorICAgICAgICAoV2ViQ29yZTo6Zm9ybVVu
c2NoZWR1bGUpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uQ0ZOZXRXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlUHJpdmF0ZVN0b3Jh
Z2VTZXNzaW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxl
Q0ZOZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2V0Q2xpZW50Q2VydGlmaWNhdGVJblNTTFBy
b3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OmNyZWF0ZUNGVVJM
Q29ubmVjdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRs
ZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0
aW9uUXVldWU6OndpbGxTZW5kUmVxdWVzdCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9j
Zi9SZXNvdXJjZVJlcXVlc3RDRk5ldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3Q6OmRvVXBkYXRlUmVzb3VyY2VSZXF1ZXN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4v
RHJhZ0ltYWdlQ0dXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlQ2dDb250ZXh0RnJv
bUJpdG1hcCk6CisgICAgICAgIChXZWJDb3JlOjpzY2FsZURyYWdJbWFnZSk6CisgICAgICAgICog
cGxhdGZvcm0vd2luL1dlYkNvcmVCdW5kbGVXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3Jl
YXRlV2ViS2l0QnVuZGxlKToKKyAgICAgICAgKFdlYkNvcmU6OndlYktpdEJ1bmRsZSk6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tOgorICAgICAgICAoLVtXZWJDb3JlVGV4
dEZpZWxkQ2VsbCBfYWRqdXN0ZWRDb3JlVUlEcmF3T3B0aW9uc0ZvckRyYXdpbmdCb3JkZXJzT25s
eTpdKToKKyAgICAgICAgKiB0ZXN0aW5nL2NvY29hL1dlYkFyY2hpdmVEdW1wU3VwcG9ydC5oOgor
ICAgICAgICAqIHRlc3RpbmcvY29jb2EvV2ViQXJjaGl2ZUR1bXBTdXBwb3J0Lm1tOgorICAgICAg
ICAoV2ViQ29yZVRlc3RTdXBwb3J0OjpjcmVhdGVYTUxTdHJpbmdGcm9tV2ViQXJjaGl2ZURhdGEp
OgorICAgICAgICAqIHRlc3RpbmcvY29jb2EvV2ViVmlld1Zpc3VhbElkZW50aWZpY2F0aW9uT3Zl
cmxheS5tbToKKyAgICAgICAgKGlkZW50aWZpY2F0aW9uRm9udCk6CisKIDIwMjEtMDMtMDQgIERl
dmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgogCiAgICAgICAgIFtQYXltZW50IFJlcXVl
c3RdIGluY3JlbWVudCB0aGUgY3VycmVudCB2ZXJzaW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDI2OTAwNzI1MzI2
ODAzOTBkZGU1NzNjZTUyYmVjNWRmYzNmYTdlYzkuLjdmNmY0YjgzNzYxNmZjMjFhZTg2MWZhMjc0
MjI0MjIzYzFlZGMyNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzkgQEAKKzIwMjEtMDMtMDQgIENo
cmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBSZWR1Y2UgdXNlIG9mIENG
UmV0YWluKCkgLyBDRlJlbGVhc2UoKSAvIENGQXV0b1JlbGVhc2UoKSBpbiBXZWJLaXQKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMjc2MAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlZHVjZSB1c2Ugb2Yg
Q0ZSZXRhaW4oKSAvIENGUmVsZWFzZSgpIC8gQ0ZBdXRvUmVsZWFzZSgpIGluIFdlYktpdCBieSB1
c2luZyBSZXRhaW5QdHI8Pi4KKworICAgICAgICAqIFBsYXRmb3JtL21hYy9TdHJpbmdVdGlsaXRp
ZXMubW06CisgICAgICAgIChXZWJLaXQ6Om5zU3RyaW5nRnJvbVdlYkNvcmVTdHJpbmcpOgorICAg
ICAgICAoV2ViS2l0Ojpmb3JtYXR0ZWRQaG9uZU51bWJlclN0cmluZyk6CisgICAgICAgICogUGx1
Z2luUHJvY2Vzcy9tYWMvUGx1Z2luUHJvY2Vzc01hYy5tbToKKyAgICAgICAgKFdlYktpdDo6aW5p
dGlhbGl6ZUNvY29hT3ZlcnJpZGVzKToKKyAgICAgICAgKiBTaGFyZWQvbWFjL1Bhc3RlYm9hcmRU
eXBlcy5tbToKKyAgICAgICAgKFdlYktpdDo6UGFzdGVib2FyZFR5cGVzOjpmb3JFZGl0aW5nKToK
KyAgICAgICAgKFdlYktpdDo6UGFzdGVib2FyZFR5cGVzOjpmb3JVUkwpOgorICAgICAgICAoV2Vi
S2l0OjpQYXN0ZWJvYXJkVHlwZXM6OmZvckltYWdlcyk6CisgICAgICAgIChXZWJLaXQ6OlBhc3Rl
Ym9hcmRUeXBlczo6Zm9ySW1hZ2VzV2l0aEFyY2hpdmUpOgorICAgICAgICAoV2ViS2l0OjpQYXN0
ZWJvYXJkVHlwZXM6OmZvclNlbGVjdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dl
YlZpZXdJbXBsLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6YWNjZXB0c0ZpcnN0
TW91c2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6c2hvdWxkRGVsYXlXaW5kb3dP
cmRlcmluZ0ZvckV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnZhbGlkQXR0
cmlidXRlc0Zvck1hcmtlZFRleHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6cGVy
Zm9ybUtleUVxdWl2YWxlbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9JbnNwZWN0b3IvaW9zL1dL
SW5zcGVjdG9ySGlnaGxpZ2h0Vmlldy5tbToKKyAgICAgICAgKGxheWVyUGF0aFdpdGhIb2xlKToK
KyAgICAgICAgKGxheWVyUGF0aCk6CisgICAgICAgICogVUlQcm9jZXNzL19XS1RvdWNoRXZlbnRH
ZW5lcmF0b3IubW06CisgICAgICAgICgtW19XS1RvdWNoRXZlbnRHZW5lcmF0b3IgZGVhbGxvY10p
OgorICAgICAgICAoLVtfV0tUb3VjaEV2ZW50R2VuZXJhdG9yIF9zZW5kSElERXZlbnQ6XSk6Cisg
ICAgICAgICogVUlQcm9jZXNzL2lvcy9mdWxsc2NyZWVuL1dLRnVsbFNjcmVlbldpbmRvd0NvbnRy
b2xsZXJJT1MubW06CisgICAgICAgICgtW1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIgX0VW
T3JnYW5pemF0aW9uTmFtZV0pOgorICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vz
c0NvY29hLm1tOgorICAgICAgICAoV2ViS2l0Ojp3ZWJQcm9jZXNzTG9hZGVyQWNjZXNzaWJpbGl0
eUJ1bmRsZVBhdGgpOgorCiAyMDIxLTAzLTA0ICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25A
YXBwbGUuY29tPgogCiAgICAgICAgIEZpeCB0aGUgYnVpbGQgYWZ0ZXIgcjI3MzkwNApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExl
Z2FjeS9pb3MvQ2hhbmdlTG9nCmluZGV4IGNhZDE4OWQwMWVjMjc0MTNmODc1MmY4MDY1Yzk1YTIy
ZDVjYzM2YjQuLmY3YzE0NGYxNmIyOGNlMTFhZDdhNWI2YmIzNDljMzZlYmQ5OGI4YTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L2lvcy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAyMS0wMy0wNCAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFJlZHVjZSB1c2Ugb2YgQ0ZS
ZXRhaW4oKSAvIENGUmVsZWFzZSgpIC8gQ0ZBdXRvUmVsZWFzZSgpIGluIFdlYktpdAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIyNzYwCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVkdWNlIHVzZSBvZiBD
RlJldGFpbigpIC8gQ0ZSZWxlYXNlKCkgLyBDRkF1dG9SZWxlYXNlKCkgaW4gV2ViS2l0IGJ5IHVz
aW5nIFJldGFpblB0cjw+LgorCisgICAgICAgICogTWlzYy9XZWJVSUtpdFN1cHBvcnQubW06Cisg
ICAgICAgIChMb2FkV2ViTG9jYWxpemVkU3RyaW5ncyk6CisgICAgICAgICogV2ViVmlldy9XZWJQ
REZWaWV3SU9TLm1tOgorICAgICAgICAoLVtXZWJQREZWaWV3IGZpbmlzaGVkTG9hZGluZ1dpdGhE
YXRhU291cmNlOl0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViUERGVmlld1BsYWNlaG9sZGVyLm1t
OgorICAgICAgICAoLVtXZWJQREZWaWV3UGxhY2Vob2xkZXIgZmluaXNoZWRMb2FkaW5nV2l0aERh
dGFTb3VyY2U6XSk6CisKIDIwMjEtMDItMjIgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNv
bT4KIAogICAgICAgICBVc2UgYWRvcHROUygpIGFzIHNvb24gYXMgd2UgW1tPYmpjQ2xhc3MgYWxs
b2NdIGluaXRdIHRvIGF2b2lkIGxlYWtzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXgg
N2MxMmQxNWFmYWU1OGFlMDVjZTZiMzQwNDU5MDBiODU5ZWQxNDZiMy4uYWRhYTY0MzZmMjM4M2I1
NDkzYjg0YjExMzI3YTZhMWU4OWM2MzVmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDI5IEBACisyMDIxLTAzLTA0ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5j
b20+CisKKyAgICAgICAgUmVkdWNlIHVzZSBvZiBDRlJldGFpbigpIC8gQ0ZSZWxlYXNlKCkgLyBD
RkF1dG9SZWxlYXNlKCkgaW4gV2ViS2l0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMjI3NjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBSZWR1Y2UgdXNlIG9mIENGUmV0YWluKCkgLyBDRlJlbGVhc2UoKSAv
IENGQXV0b1JlbGVhc2UoKSBpbiBXZWJLaXQgYnkgdXNpbmcgUmV0YWluUHRyPD4uCisKKyAgICAg
ICAgKiBNaXNjL1dlYkxvY2FsaXphYmxlU3RyaW5ncy5tbToKKyAgICAgICAgKiBNaXNjL1dlYk5T
RGF0YUV4dHJhcy5tbToKKyAgICAgICAgKC1bTlNTdHJpbmcgX3dlYl9jYXBpdGFsaXplUkZDODIy
SGVhZGVyRmllbGROYW1lXSk6CisgICAgICAgICogUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVn
aW5Ib3N0TWFuYWdlci5tbToKKyAgICAgICAgKFdlYktpdDo6cHJlZmVycmVkQnVuZGxlTG9jYWxp
emF0aW9uTmFtZSk6CisgICAgICAgICogUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblZpZXcubW06
CisgICAgICAgICgtW1dlYk5ldHNjYXBlUGx1Z2luVmlldyBzdGF0dXM6XSk6CisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvV2ViUHJvZ3Jlc3NUcmFja2VyQ2xpZW50Lm1tOgorICAgICAgICAoV2Vi
UHJvZ3Jlc3NUcmFja2VyQ2xpZW50Ojpwcm9ncmVzc0VzdGltYXRlQ2hhbmdlZCk6CisgICAgICAg
ICogV2ViSW5zcGVjdG9yL1dlYk5vZGVIaWdobGlnaHRWaWV3Lm1tOgorICAgICAgICAobGF5ZXJQ
YXRoV2l0aEhvbGUpOgorICAgICAgICAobGF5ZXJQYXRoKToKKyAgICAgICAgKiBXZWJWaWV3L1dl
YkZyYW1lLm1tOgorICAgICAgICAoY3JlYXRlVW5pcXVlV2ViRGF0YVVSTCk6CisgICAgICAgICog
V2ViVmlldy9XZWJWaWV3Lm1tOgorICAgICAgICAoK1tXZWJWaWV3IF9zZXRDYWNoZU1vZGVsOl0p
OgorCiAyMDIxLTAzLTA0ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAg
ICAgW21hY09TXVtXSzJdIENoYW5naW5nIHRoZSBzeXN0ZW0gbGFuZ3VhZ2UgZG9lcyBub3QgdXBk
YXRlIG5hdmlnYXRvci5sYW5ndWFnZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCmluZGV4IDU4
MTM0MDI5NmQ4NWFkNGE4Njk5NGRkMzRjZGU0ZTU1NzFjYWJhYTcuLmMwODhiYjJmMTVmOTQzMTkx
ZjI4MDE3YTkzODFhNjRiOGM4Y2MxMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKQEAg
LTEsMyArMSw0MCBAQAorMjAyMS0wMy0wNCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29t
PgorCisgICAgICAgIFJlZHVjZSB1c2Ugb2YgQ0ZSZXRhaW4oKSAvIENGUmVsZWFzZSgpIC8gQ0ZB
dXRvUmVsZWFzZSgpIGluIFdlYktpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjIyNzYwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgUmVkdWNlIHVzZSBvZiBDRlJldGFpbigpIC8gQ0ZSZWxlYXNlKCkgLyBD
RkF1dG9SZWxlYXNlKCkgaW4gV2ViS2l0IGJ5IHVzaW5nIFJldGFpblB0cjw+LgorCisgICAgICAg
ICogQ0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWcuY3BwOgorICAgICAgICAoQ29udmVydFZhcmlhbnRU
b0NGVHlwZSk6CisgICAgICAgIChDRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZzo6UmVhZCk6CisgICAg
ICAgIChDRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZzo6V3JpdGUpOgorICAgICAgICAqIE1hcnNoYWxs
aW5nSGVscGVycy5jcHA6CisgICAgICAgIChNYXJzaGFsbGluZ0hlbHBlcnM6OlBhdGhTdHJpbmdU
b0ZpbGVDRlVSTFJlZik6CisgICAgICAgIChNYXJzaGFsbGluZ0hlbHBlcnM6OkZpbGVDRlVSTFJl
ZlRvUGF0aFN0cmluZyk6CisgICAgICAgIChNYXJzaGFsbGluZ0hlbHBlcnM6OkJTVFJUb0NGVVJM
UmVmKToKKyAgICAgICAgKE1hcnNoYWxsaW5nSGVscGVyczo6QlNUUlRvQ0ZTdHJpbmdSZWYpOgor
ICAgICAgICAoTWFyc2hhbGxpbmdIZWxwZXJzOjpMUENPTEVTVFJUb0NGU3RyaW5nUmVmKToKKyAg
ICAgICAgKE1hcnNoYWxsaW5nSGVscGVyczo6aW50VG9DRk51bWJlclJlZik6CisgICAgICAgIChN
YXJzaGFsbGluZ0hlbHBlcnM6OnNhZmVBcnJheVRvU3RyaW5nQXJyYXkpOgorICAgICAgICAoTWFy
c2hhbGxpbmdIZWxwZXJzOjpzYWZlQXJyYXlUb0ludEFycmF5KToKKyAgICAgICAgKE1hcnNoYWxs
aW5nSGVscGVyczo6c2FmZUFycmF5VG9JVW5rbm93bkFycmF5KToKKyAgICAgICAgKiBNYXJzaGFs
bGluZ0hlbHBlcnMuaDoKKyAgICAgICAgKiBXZWJBcHBsaWNhdGlvbkNhY2hlLmNwcDoKKyAgICAg
ICAgKFdlYkFwcGxpY2F0aW9uQ2FjaGU6Om9yaWdpbnNXaXRoQ2FjaGUpOgorICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkZyYW1l
TG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZEZhaWxUb1N0YXJ0UGx1Z2luIGNvbnN0KToKKyAgICAg
ICAgKiBXZWJEb3dubG9hZENGTmV0LmNwcDoKKyAgICAgICAgKFdlYkRvd25sb2FkOjppbml0VG9S
ZXN1bWVXaXRoQnVuZGxlKToKKyAgICAgICAgKFdlYkRvd25sb2FkOjpzZXREZXN0aW5hdGlvbik6
CisgICAgICAgIChXZWJEb3dubG9hZDo6d2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKiBXZWJI
aXN0b3J5LmNwcDoKKyAgICAgICAgKGNyZWF0ZVVzZXJJbmZvRnJvbUFycmF5KToKKyAgICAgICAg
KiBXZWJMb2NhbGl6YWJsZVN0cmluZ3MuY3BwOgorICAgICAgICAoY3JlYXRlV2ViS2l0QnVuZGxl
KToKKwogMjAyMS0wMi0xMCAgUm9iIEJ1aXMgIDxyYnVpc0BpZ2FsaWEuY29tPgogCiAgICAgICAg
IFVzZSBldmVudCBsb29wIHRvIHNldCB0aXRsZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS9KU0NvbnRleHQubW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29u
dGV4dC5tbQppbmRleCAwYmE3OTkxZWY3YjI3ZGFlMjU1MWQ2MDRlZmMzZGM3YjMzMmMzYmRhLi5i
ZWIxNDNkMGFmNTQxYjkzZTliZDNiNTU0ZjdkMDVlM2U2OThhOTA5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dC5tbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL0pTQ29udGV4dC5tbQpAQCAtMjYyLDcgKzI2Miw3IEBAIC0gKE5TU3RyaW5nICop
bmFtZQogICAgIGlmICghbmFtZSkKICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAgIHJldHVybiBD
RkJyaWRnaW5nUmVsZWFzZShKU1N0cmluZ0NvcHlDRlN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0
LCBuYW1lKSk7CisgICAgcmV0dXJuIGFkb3B0Q0YoSlNTdHJpbmdDb3B5Q0ZTdHJpbmcoa0NGQWxs
b2NhdG9yRGVmYXVsdCwgbmFtZSkpLmJyaWRnaW5nQXV0b3JlbGVhc2UoKTsKIH0KIAogLSAodm9p
ZClzZXROYW1lOihOU1N0cmluZyAqKW5hbWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNWYWx1ZS5tbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZS5t
bQppbmRleCAxODQ0YjA2MTMyNTUxY2U5YmJhY2U0MjQyNDFmMTZiOWJkZGQ5NGUyLi5hYzA5ZjY1
NDUwN2MzZGJkNDk2MGZkNjcxMzMyYmIzZjExZjkwNjI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0pTVmFsdWUubW0KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS9KU1ZhbHVlLm1tCkBAIC03NzMsNyArNzczLDcgQEAgc3RhdGljIEpTQ29udGFpbmVyQ29udmVy
dG9yOjpUYXNrIHZhbHVlVG9PYmplY3RXaXRob3V0Q29weShKU0dsb2JhbENvbnRleHRSZWYgY28K
ICAgICAgICAgfSBlbHNlIGlmIChKU1ZhbHVlSXNTdHJpbmcoY29udGV4dCwgdmFsdWUpKSB7CiAg
ICAgICAgICAgICAvLyBXb3VsZCBiZSBuaWNlIHRvIHVuaXF1ZSBzdHJpbmdzLCB0b28uCiAgICAg
ICAgICAgICBhdXRvIGpzc3RyaW5nID0gYWRvcHRSZWYoSlNWYWx1ZVRvU3RyaW5nQ29weShjb250
ZXh0LCB2YWx1ZSwgMCkpOwotICAgICAgICAgICAgcHJpbWl0aXZlID0gQ0ZCcmlkZ2luZ1JlbGVh
c2UoSlNTdHJpbmdDb3B5Q0ZTdHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwganNzdHJpbmcuZ2V0
KCkpKTsKKyAgICAgICAgICAgIHByaW1pdGl2ZSA9IGFkb3B0Q0YoSlNTdHJpbmdDb3B5Q0ZTdHJp
bmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwganNzdHJpbmcuZ2V0KCkpKS5icmlkZ2luZ0F1dG9yZWxl
YXNlKCk7CiAgICAgICAgIH0gZWxzZSBpZiAoSlNWYWx1ZUlzTnVsbChjb250ZXh0LCB2YWx1ZSkp
CiAgICAgICAgICAgICBwcmltaXRpdmUgPSBbTlNOdWxsIG51bGxdOwogICAgICAgICBlbHNlIHsK
QEAgLTg4MSw3ICs4ODEsNyBAQCBpZCB2YWx1ZVRvU3RyaW5nKEpTR2xvYmFsQ29udGV4dFJlZiBj
b250ZXh0LCBKU1ZhbHVlUmVmIHZhbHVlLCBKU1ZhbHVlUmVmKiBleGNlcAogICAgICAgICByZXR1
cm4gbmlsOwogICAgIH0KIAotICAgIHJldHVybiBDRkJyaWRnaW5nUmVsZWFzZShKU1N0cmluZ0Nv
cHlDRlN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBqc3N0cmluZy5nZXQoKSkpOworICAgIHJl
dHVybiBhZG9wdENGKEpTU3RyaW5nQ29weUNGU3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIGpz
c3RyaW5nLmdldCgpKSkuYnJpZGdpbmdBdXRvcmVsZWFzZSgpOwogfQogCiBpZCB2YWx1ZVRvRGF0
ZShKU0dsb2JhbENvbnRleHRSZWYgY29udGV4dCwgSlNWYWx1ZVJlZiB2YWx1ZSwgSlNWYWx1ZVJl
ZiogZXhjZXB0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9yZW1vdGUvY29jb2EvUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5tbSBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL2NvY29hL1JlbW90ZUluc3BlY3RvclhQQ0Nv
bm5lY3Rpb24ubW0KaW5kZXggNzIzMTAzYTAzODczYjM3YjlhZWI5YzdjZmU0ZDQwOTY3ODRmM2Yz
Ni4uODEzYzE2MzBlM2Q2YTBjYmIxNjhiMjc2YzY1MGUwNTcxNzIzYmU3MCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvY29jb2EvUmVtb3RlSW5zcGVj
dG9yWFBDQ29ubmVjdGlvbi5tbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L3JlbW90ZS9jb2NvYS9SZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uLm1tCkBAIC0xMTcsMTAg
KzExNywxMCBAQCBOU0RpY3Rpb25hcnkgKlJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb246OmRl
c2VyaWFsaXplTWVzc2FnZSh4cGNfb2JqZWN0X3Qgb2JqZQogICAgICAgICByZXR1cm4gbmlsOwog
ICAgIH0KIAotICAgIGF1dG8gZGljdGlvbmFyeSA9IF9DRlhQQ0NyZWF0ZUNGT2JqZWN0RnJvbVhQ
Q01lc3NhZ2UoeHBjRGljdGlvbmFyeSk7CisgICAgYXV0byBkaWN0aW9uYXJ5ID0gYWRvcHRDRihf
Q0ZYUENDcmVhdGVDRk9iamVjdEZyb21YUENNZXNzYWdlKHhwY0RpY3Rpb25hcnkpKTsKICAgICBB
U1NFUlRfV0lUSF9NRVNTQUdFKGRpY3Rpb25hcnksICJVbmFibGUgdG8gZGVzZXJpYWxpemUgeHBj
IG1lc3NhZ2UiKTsKLSAgICBBU1NFUlQoQ0ZHZXRUeXBlSUQoZGljdGlvbmFyeSkgPT0gQ0ZEaWN0
aW9uYXJ5R2V0VHlwZUlEKCkpOwotICAgIHJldHVybiBDRkJyaWRnaW5nUmVsZWFzZShkaWN0aW9u
YXJ5KTsKKyAgICBBU1NFUlQoQ0ZHZXRUeXBlSUQoZGljdGlvbmFyeS5nZXQoKSkgPT0gQ0ZEaWN0
aW9uYXJ5R2V0VHlwZUlEKCkpOworICAgIHJldHVybiBkaWN0aW9uYXJ5LmJyaWRnaW5nQXV0b3Jl
bGVhc2UoKTsKIH0KIAogdm9pZCBSZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uOjpoYW5kbGVF
dmVudCh4cGNfb2JqZWN0X3Qgb2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvY29j
b2EvTlNVUkxFeHRyYXMubW0gYi9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9OU1VSTEV4dHJhcy5tbQpp
bmRleCAyMDllYTViODY2NGExYmEzMTkyZjllYzIzNTM5ZTMwY2UyYzk3YTgyLi43NTA4ZjJmNGYy
ZGM0MmU4MmFmODFmNjM0ODIwYzVkZDc2MDY1ZDBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0
Zi9jb2NvYS9OU1VSTEV4dHJhcy5tbQorKysgYi9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9OU1VSTEV4
dHJhcy5tbQpAQCAtOTIsMTAgKzkyLDEwIEBAIHZvaWQgbG9hZElETkFsbG93ZWRTY3JpcHRMaXN0
KCkKICAgICAKIHN0YXRpYyBTdHJpbmcgZGVjb2RlUGVyY2VudEVzY2FwZXMoY29uc3QgU3RyaW5n
JiBzdHJpbmcpCiB7Ci0gICAgTlNTdHJpbmcgKnN1YnN0cmluZyA9IENGQnJpZGdpbmdSZWxlYXNl
KENGVVJMQ3JlYXRlU3RyaW5nQnlSZXBsYWNpbmdQZXJjZW50RXNjYXBlcyhudWxscHRyLCBzdHJp
bmcuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgQ0ZTVFIoIiIpKSk7CisgICAgYXV0byBzdWJzdHJp
bmcgPSBhZG9wdENGKENGVVJMQ3JlYXRlU3RyaW5nQnlSZXBsYWNpbmdQZXJjZW50RXNjYXBlcyhu
dWxscHRyLCBzdHJpbmcuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgQ0ZTVFIoIiIpKSk7CiAgICAg
aWYgKCFzdWJzdHJpbmcpCiAgICAgICAgIHJldHVybiBzdHJpbmc7Ci0gICAgcmV0dXJuIHN1YnN0
cmluZzsKKyAgICByZXR1cm4gc3Vic3RyaW5nLmdldCgpOwogfQogCiBOU1N0cmluZyAqZGVjb2Rl
SG9zdE5hbWUoTlNTdHJpbmcgKnN0cmluZykKQEAgLTEzOCwxMSArMTM4LDExIEBAIE5TVVJMICpV
UkxCeVRydW5jYXRpbmdPbmVDaGFyYWN0ZXJCZWZvcmVDb21wb25lbnQoTlNVUkwgKlVSTCwgQ0ZV
UkxDb21wb25lbnRUeXBlCiAgICAgICAgIENGVVJMR2V0Qnl0ZXMoKF9fYnJpZGdlIENGVVJMUmVm
KVVSTCwgdXJsQnl0ZXMuZGF0YSgpLCBudW1CeXRlcyk7CiAgICAgfQogCi0gICAgQ0ZVUkxSZWYg
cmVzdWx0ID0gQ0ZVUkxDcmVhdGVXaXRoQnl0ZXMobnVsbHB0ciwgdXJsQnl0ZXMuZGF0YSgpLCBm
cmFnUmcubG9jYXRpb24gLSAxLCBrQ0ZTdHJpbmdFbmNvZGluZ1VURjgsIG51bGxwdHIpOworICAg
IGF1dG8gcmVzdWx0ID0gYWRvcHRDRihDRlVSTENyZWF0ZVdpdGhCeXRlcyhudWxscHRyLCB1cmxC
eXRlcy5kYXRhKCksIGZyYWdSZy5sb2NhdGlvbiAtIDEsIGtDRlN0cmluZ0VuY29kaW5nVVRGOCwg
bnVsbHB0cikpOwogICAgIGlmICghcmVzdWx0KQotICAgICAgICByZXN1bHQgPSBDRlVSTENyZWF0
ZVdpdGhCeXRlcyhudWxscHRyLCB1cmxCeXRlcy5kYXRhKCksIGZyYWdSZy5sb2NhdGlvbiAtIDEs
IGtDRlN0cmluZ0VuY29kaW5nSVNPTGF0aW4xLCBudWxscHRyKTsKKyAgICAgICAgcmVzdWx0ID0g
YWRvcHRDRihDRlVSTENyZWF0ZVdpdGhCeXRlcyhudWxscHRyLCB1cmxCeXRlcy5kYXRhKCksIGZy
YWdSZy5sb2NhdGlvbiAtIDEsIGtDRlN0cmluZ0VuY29kaW5nSVNPTGF0aW4xLCBudWxscHRyKSk7
CiAgICAgICAgIAotICAgIHJldHVybiByZXN1bHQgPyBDRkJyaWRnaW5nUmVsZWFzZShyZXN1bHQp
IDogVVJMOworICAgIHJldHVybiByZXN1bHQgPyByZXN1bHQuYnJpZGdpbmdBdXRvcmVsZWFzZSgp
IDogVVJMOwogfQogCiBzdGF0aWMgTlNVUkwgKlVSTEJ5UmVtb3ZpbmdSZXNvdXJjZVNwZWNpZmll
cihOU1VSTCAqVVJMKQpAQCAtMTU1LDcgKzE1NSw2IEBAIE5TVVJMICpVUkxXaXRoRGF0YShOU0Rh
dGEgKmRhdGEsIE5TVVJMICpiYXNlVVJMKQogICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJu
IG5pbDsKICAgICAKLSAgICBOU1VSTCAqcmVzdWx0ID0gbmlsOwogICAgIHNpemVfdCBsZW5ndGgg
PSBbZGF0YSBsZW5ndGhdOwogICAgIGlmIChsZW5ndGggPiAwKSB7CiAgICAgICAgIC8vIHdvcmsg
YXJvdW5kIDxyZGFyOi8vNDQ3MDc3MT46IENGVVJMQ3JlYXRlQWJzb2x1dGVVUkxXaXRoQnl0ZXMo
Li4sIFRSVUUpIGRvZXNuJ3QgcmVtb3ZlIG5vbi1wYXRoIGNvbXBvbmVudHMuCkBAIC0xNzEsMTMg
KzE3MCwxMiBAQCBOU1VSTCAqVVJMV2l0aERhdGEoTlNEYXRhICpkYXRhLCBOU1VSTCAqYmFzZVVS
TCkKICAgICAgICAgLy8gKGUuZyBjYWxscyB0byBOU1VSTCAtcGF0aCkuIEhvd2V2ZXIsIHRoaXMg
ZnVuY3Rpb24gaXMgbm90IHRvbGVyYW50IG9mIGlsbGVnYWwgVVRGLTggc2VxdWVuY2VzLCB3aGlj
aAogICAgICAgICAvLyBjb3VsZCBlaXRoZXIgYmUgYSBtYWxmb3JtZWQgc3RyaW5nIG9yIGJ5dGVz
IGluIGEgZGlmZmVyZW50IGVuY29kaW5nLCBsaWtlIHNoaWZ0LWppcywgc28gd2UgZmFsbCBiYWNr
CiAgICAgICAgIC8vIG9udG8gdXNpbmcgSVNPIExhdGluIDEgaW4gdGhvc2UgY2FzZXMuCi0gICAg
ICAgIHJlc3VsdCA9IENGQnJpZGdpbmdSZWxlYXNlKENGVVJMQ3JlYXRlQWJzb2x1dGVVUkxXaXRo
Qnl0ZXMobnVsbHB0ciwgYnl0ZXMsIGxlbmd0aCwga0NGU3RyaW5nRW5jb2RpbmdVVEY4LCAoX19i
cmlkZ2UgQ0ZVUkxSZWYpYmFzZVVSTCwgWUVTKSk7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gYWRv
cHRDRihDRlVSTENyZWF0ZUFic29sdXRlVVJMV2l0aEJ5dGVzKG51bGxwdHIsIGJ5dGVzLCBsZW5n
dGgsIGtDRlN0cmluZ0VuY29kaW5nVVRGOCwgKF9fYnJpZGdlIENGVVJMUmVmKWJhc2VVUkwsIFlF
UykpOwogICAgICAgICBpZiAoIXJlc3VsdCkKLSAgICAgICAgICAgIHJlc3VsdCA9IENGQnJpZGdp
bmdSZWxlYXNlKENGVVJMQ3JlYXRlQWJzb2x1dGVVUkxXaXRoQnl0ZXMobnVsbHB0ciwgYnl0ZXMs
IGxlbmd0aCwga0NGU3RyaW5nRW5jb2RpbmdJU09MYXRpbjEsIChfX2JyaWRnZSBDRlVSTFJlZili
YXNlVVJMLCBZRVMpKTsKLSAgICB9IGVsc2UKLSAgICAgICAgcmVzdWx0ID0gW05TVVJMIFVSTFdp
dGhTdHJpbmc6QCIiXTsKLQotICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgICAgICByZXN1bHQg
PSBhZG9wdENGKENGVVJMQ3JlYXRlQWJzb2x1dGVVUkxXaXRoQnl0ZXMobnVsbHB0ciwgYnl0ZXMs
IGxlbmd0aCwga0NGU3RyaW5nRW5jb2RpbmdJU09MYXRpbjEsIChfX2JyaWRnZSBDRlVSTFJlZili
YXNlVVJMLCBZRVMpKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdC5icmlkZ2luZ0F1dG9yZWxlYXNl
KCk7CisgICAgfQorICAgIHJldHVybiBbTlNVUkwgVVJMV2l0aFN0cmluZzpAIiJdOwogfQogc3Rh
dGljIE5TRGF0YSAqZGF0YVdpdGhVc2VyVHlwZWRTdHJpbmcoTlNTdHJpbmcgKnN0cmluZykKIHsK
QEAgLTMzNiwxMSArMzM0LDExIEBAIHN0YXRpYyBOU1VSTCAqVVJMQnlSZW1vdmluZ0NvbXBvbmVu
dEFuZFN1YnNlcXVlbnRDaGFyYWN0ZXIoTlNVUkwgKlVSTCwgQ0ZVUkxDb21wCiAgICAgICAgIAog
ICAgIG1lbW1vdmUodXJsQnl0ZXMgKyByYW5nZS5sb2NhdGlvbiwgdXJsQnl0ZXMgKyByYW5nZS5s
b2NhdGlvbiArIHJhbmdlLmxlbmd0aCwgbnVtQnl0ZXMgLSByYW5nZS5sb2NhdGlvbiArIHJhbmdl
Lmxlbmd0aCk7CiAgICAgCi0gICAgQ0ZVUkxSZWYgcmVzdWx0ID0gQ0ZVUkxDcmVhdGVXaXRoQnl0
ZXMobnVsbHB0ciwgdXJsQnl0ZXMsIG51bUJ5dGVzIC0gcmFuZ2UubGVuZ3RoLCBrQ0ZTdHJpbmdF
bmNvZGluZ1VURjgsIG51bGxwdHIpOworICAgIGF1dG8gcmVzdWx0ID0gYWRvcHRDRihDRlVSTENy
ZWF0ZVdpdGhCeXRlcyhudWxscHRyLCB1cmxCeXRlcywgbnVtQnl0ZXMgLSByYW5nZS5sZW5ndGgs
IGtDRlN0cmluZ0VuY29kaW5nVVRGOCwgbnVsbHB0cikpOwogICAgIGlmICghcmVzdWx0KQotICAg
ICAgICByZXN1bHQgPSBDRlVSTENyZWF0ZVdpdGhCeXRlcyhudWxscHRyLCB1cmxCeXRlcywgbnVt
Qnl0ZXMgLSByYW5nZS5sZW5ndGgsIGtDRlN0cmluZ0VuY29kaW5nSVNPTGF0aW4xLCBudWxscHRy
KTsKKyAgICAgICAgcmVzdWx0ID0gYWRvcHRDRihDRlVSTENyZWF0ZVdpdGhCeXRlcyhudWxscHRy
LCB1cmxCeXRlcywgbnVtQnl0ZXMgLSByYW5nZS5sZW5ndGgsIGtDRlN0cmluZ0VuY29kaW5nSVNP
TGF0aW4xLCBudWxscHRyKSk7CiAgICAgICAgICAgICAgICAgCi0gICAgcmV0dXJuIHJlc3VsdCA/
IENGQnJpZGdpbmdSZWxlYXNlKHJlc3VsdCkgOiBVUkw7CisgICAgcmV0dXJuIHJlc3VsdCA/IHJl
c3VsdC5icmlkZ2luZ0F1dG9yZWxlYXNlKCkgOiBVUkw7CiB9CiAKIE5TVVJMICpVUkxCeVJlbW92
aW5nVXNlckluZm8oTlNVUkwgKlVSTCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvbWFjL0FYT2JqZWN0Q2FjaGVNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L21hYy9BWE9iamVjdENhY2hlTWFjLm1tCmluZGV4IGI3Y2ZmNzRlNzYyYTI4ZTA0NTU3
NDY0MTYxMmRlODRiNTY5NDFmMjUuLjY5Y2VlMjg1ZTY2M2ZhNTY4ZWJmYzdjYTdmNWY5ZWNkM2Y1
MmZjZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL0FYT2Jq
ZWN0Q2FjaGVNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvQVhP
YmplY3RDYWNoZU1hYy5tbQpAQCAtNjAzLDcgKzYwMyw3IEBAIHN0YXRpYyBBWFRleHRNYXJrZXJS
YW5nZVJlZiBBWFRleHRNYXJrZXJSYW5nZShBWFRleHRNYXJrZXJSZWYgc3RhcnRNYXJrZXIsIEFY
VGV4CiAgICAgQVNTRVJUKGVuZE1hcmtlcik7CiAgICAgQVNTRVJUKENGR2V0VHlwZUlEKChfX2Jy
aWRnZSBDRlR5cGVSZWYpc3RhcnRNYXJrZXIpID09IEFYVGV4dE1hcmtlckdldFR5cGVJRCgpKTsK
ICAgICBBU1NFUlQoQ0ZHZXRUeXBlSUQoKF9fYnJpZGdlIENGVHlwZVJlZillbmRNYXJrZXIpID09
IEFYVGV4dE1hcmtlckdldFR5cGVJRCgpKTsKLSAgICByZXR1cm4gKEFYVGV4dE1hcmtlclJhbmdl
UmVmKUNGQnJpZGdpbmdSZWxlYXNlKEFYVGV4dE1hcmtlclJhbmdlQ3JlYXRlKGtDRkFsbG9jYXRv
ckRlZmF1bHQsIHN0YXJ0TWFya2VyLCBlbmRNYXJrZXIpKTsKKyAgICByZXR1cm4gKEFYVGV4dE1h
cmtlclJhbmdlUmVmKWFkb3B0Q0YoQVhUZXh0TWFya2VyUmFuZ2VDcmVhdGUoa0NGQWxsb2NhdG9y
RGVmYXVsdCwgc3RhcnRNYXJrZXIsIGVuZE1hcmtlcikpLmJyaWRnaW5nQXV0b3JlbGVhc2UoKTsK
IH0KIAogc3RhdGljIEFYVGV4dE1hcmtlclJhbmdlUmVmIHRleHRNYXJrZXJSYW5nZUZyb21NYXJr
ZXJzKEFYVGV4dE1hcmtlclJlZiB0ZXh0TWFya2VyMSwgQVhUZXh0TWFya2VyUmVmIHRleHRNYXJr
ZXIyKQpAQCAtNjE4LDE0ICs2MTgsMTQgQEAgc3RhdGljIEFYVGV4dE1hcmtlclJlZiBBWFRleHRN
YXJrZXJSYW5nZVN0YXJ0KEFYVGV4dE1hcmtlclJhbmdlUmVmIHRleHRNYXJrZXJSYW4KIHsKICAg
ICBBU1NFUlQodGV4dE1hcmtlclJhbmdlKTsKICAgICBBU1NFUlQoQ0ZHZXRUeXBlSUQoKF9fYnJp
ZGdlIENGVHlwZVJlZil0ZXh0TWFya2VyUmFuZ2UpID09IEFYVGV4dE1hcmtlclJhbmdlR2V0VHlw
ZUlEKCkpOwotICAgIHJldHVybiAoQVhUZXh0TWFya2VyUmVmKUNGQnJpZGdpbmdSZWxlYXNlKEFY
VGV4dE1hcmtlclJhbmdlQ29weVN0YXJ0TWFya2VyKHRleHRNYXJrZXJSYW5nZSkpOworICAgIHJl
dHVybiAoQVhUZXh0TWFya2VyUmVmKWFkb3B0Q0YoQVhUZXh0TWFya2VyUmFuZ2VDb3B5U3RhcnRN
YXJrZXIodGV4dE1hcmtlclJhbmdlKSkuYnJpZGdpbmdBdXRvcmVsZWFzZSgpOwogfQogCiBzdGF0
aWMgQVhUZXh0TWFya2VyUmVmIEFYVGV4dE1hcmtlclJhbmdlRW5kKEFYVGV4dE1hcmtlclJhbmdl
UmVmIHRleHRNYXJrZXJSYW5nZSkKIHsKICAgICBBU1NFUlQodGV4dE1hcmtlclJhbmdlKTsKICAg
ICBBU1NFUlQoQ0ZHZXRUeXBlSUQoKF9fYnJpZGdlIENGVHlwZVJlZil0ZXh0TWFya2VyUmFuZ2Up
ID09IEFYVGV4dE1hcmtlclJhbmdlR2V0VHlwZUlEKCkpOwotICAgIHJldHVybiAoQVhUZXh0TWFy
a2VyUmVmKUNGQnJpZGdpbmdSZWxlYXNlKEFYVGV4dE1hcmtlclJhbmdlQ29weUVuZE1hcmtlcih0
ZXh0TWFya2VyUmFuZ2UpKTsKKyAgICByZXR1cm4gKEFYVGV4dE1hcmtlclJlZilhZG9wdENGKEFY
VGV4dE1hcmtlclJhbmdlQ29weUVuZE1hcmtlcih0ZXh0TWFya2VyUmFuZ2UpKS5icmlkZ2luZ0F1
dG9yZWxlYXNlKCk7CiB9CiAKIHN0YXRpYyBUZXh0TWFya2VyRGF0YSBnZXRCeXRlc0Zyb21BWFRl
eHRNYXJrZXIoQVhUZXh0TWFya2VyUmVmIHRleHRNYXJrZXIpCkBAIC02NzEsNyArNjcxLDcgQEAg
QVhUZXh0TWFya2VyUmVmIHRleHRNYXJrZXJGb3JWaXNpYmxlUG9zaXRpb24oQVhPYmplY3RDYWNo
ZSogY2FjaGUsIGNvbnN0IFZpc2libGUKICAgICBpZiAoIXRleHRNYXJrZXJEYXRhKQogICAgICAg
ICByZXR1cm4gbmlsOwogCi0gICAgcmV0dXJuIChBWFRleHRNYXJrZXJSZWYpQ0ZCcmlkZ2luZ1Jl
bGVhc2UoQVhUZXh0TWFya2VyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIChjb25zdCBVSW50
OCopJnRleHRNYXJrZXJEYXRhLnZhbHVlKCksIHNpemVvZih0ZXh0TWFya2VyRGF0YS52YWx1ZSgp
KSkpOworICAgIHJldHVybiAoQVhUZXh0TWFya2VyUmVmKWFkb3B0Q0YoQVhUZXh0TWFya2VyQ3Jl
YXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIChjb25zdCBVSW50OCopJnRleHRNYXJrZXJEYXRhLnZh
bHVlKCksIHNpemVvZih0ZXh0TWFya2VyRGF0YS52YWx1ZSgpKSkpLmJyaWRnaW5nQXV0b3JlbGVh
c2UoKTsKIH0KIAogVmlzaWJsZVBvc2l0aW9uIHZpc2libGVQb3NpdGlvbkZvclRleHRNYXJrZXIo
QVhPYmplY3RDYWNoZSogY2FjaGUsIEFYVGV4dE1hcmtlclJlZiB0ZXh0TWFya2VyKQpAQCAtNzIx
LDcgKzcyMSw3IEBAIEFYVGV4dE1hcmtlclJlZiB0ZXh0TWFya2VyRm9yQ2hhcmFjdGVyT2Zmc2V0
KEFYT2JqZWN0Q2FjaGUqIGNhY2hlLCBjb25zdCBDaGFyYWN0CiAgICAgaWYgKCF0ZXh0TWFya2Vy
RGF0YS5heElEIHx8IHRleHRNYXJrZXJEYXRhLmlnbm9yZWQpCiAgICAgICAgIHJldHVybiBuaWw7
CiAKLSAgICByZXR1cm4gKEFYVGV4dE1hcmtlclJlZilDRkJyaWRnaW5nUmVsZWFzZShBWFRleHRN
YXJrZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgKGNvbnN0IFVJbnQ4KikmdGV4dE1hcmtl
ckRhdGEsIHNpemVvZih0ZXh0TWFya2VyRGF0YSkpKTsKKyAgICByZXR1cm4gKEFYVGV4dE1hcmtl
clJlZilhZG9wdENGKEFYVGV4dE1hcmtlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAoY29u
c3QgVUludDgqKSZ0ZXh0TWFya2VyRGF0YSwgc2l6ZW9mKHRleHRNYXJrZXJEYXRhKSkpLmJyaWRn
aW5nQXV0b3JlbGVhc2UoKTsKIH0KIAogQ2hhcmFjdGVyT2Zmc2V0IGNoYXJhY3Rlck9mZnNldEZv
clRleHRNYXJrZXIoQVhPYmplY3RDYWNoZSogY2FjaGUsIEFYVGV4dE1hcmtlclJlZiB0ZXh0TWFy
a2VyKQpAQCAtNzQ3LDcgKzc0Nyw3IEBAIEFYVGV4dE1hcmtlclJlZiBzdGFydE9yRW5kVGV4dE1h
cmtlckZvclJhbmdlKEFYT2JqZWN0Q2FjaGUqIGNhY2hlLCBjb25zdCBPcHRpb25hCiAgICAgaWYg
KCF0ZXh0TWFya2VyRGF0YS5heElEKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgcmV0dXJu
IChBWFRleHRNYXJrZXJSZWYpQ0ZCcmlkZ2luZ1JlbGVhc2UoQVhUZXh0TWFya2VyQ3JlYXRlKGtD
RkFsbG9jYXRvckRlZmF1bHQsIChjb25zdCBVSW50OCopJnRleHRNYXJrZXJEYXRhLCBzaXplb2Yo
dGV4dE1hcmtlckRhdGEpKSk7CisgICAgcmV0dXJuIChBWFRleHRNYXJrZXJSZWYpYWRvcHRDRihB
WFRleHRNYXJrZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgKGNvbnN0IFVJbnQ4KikmdGV4
dE1hcmtlckRhdGEsIHNpemVvZih0ZXh0TWFya2VyRGF0YSkpKS5icmlkZ2luZ0F1dG9yZWxlYXNl
KCk7CiB9CiAKIEFYVGV4dE1hcmtlclJhbmdlUmVmIHRleHRNYXJrZXJSYW5nZUZyb21SYW5nZShB
WE9iamVjdENhY2hlKiBjYWNoZSwgY29uc3QgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiByYW5nZSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyQmFzZS5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
bWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5tbQppbmRleCA5MzA3Njg3Yjdm
ODA3ZGI1YWJhNDY3NzUwODZjNGE1Y2M4ZGU3MGMxLi4wZmM4Mjg4NDZkYjMxZmE4YjA1NjViMWNi
N2ZmYzA5ODA2ZjQwODQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNl
Lm1tCkBAIC0zMjQsOCArMzI0LDcgQEAgLSAoV2ViQ29yZTo6QVhDb3JlT2JqZWN0Kil1cGRhdGVP
YmplY3RCYWNraW5nU3RvcmUKIHsKICAgICAvLyBDYWxsaW5nIHVwZGF0ZUJhY2tpbmdTdG9yZSgp
IGNhbiBpbnZhbGlkYXRlIHRoaXMgZWxlbWVudCBzbyBzZWxmIG11c3QgYmUgcmV0YWluZWQuCiAg
ICAgLy8gSWYgaXQgZG9lcyBiZWNvbWUgaW52YWxpZGF0ZWQsIHNlbGYuYXhCYWNraW5nT2JqZWN0
IHdpbGwgYmUgbmlsLgotICAgIENGUmV0YWluKChfX2JyaWRnZSBDRlR5cGVSZWYpc2VsZik7Ci0g
ICAgQ0ZBdXRvcmVsZWFzZSgoX19icmlkZ2UgQ0ZUeXBlUmVmKXNlbGYpOworICAgIHJldGFpblB0
cihzZWxmKS5hdXRvcmVsZWFzZSgpOwogCiAgICAgYXV0byogYmFja2luZ09iamVjdCA9IHNlbGYu
YXhCYWNraW5nT2JqZWN0OwogICAgIGlmICghYmFja2luZ09iamVjdCkKQEAgLTQzMywxMSArNDMy
LDEwIEBAIHN0YXRpYyB2b2lkIGNvbnZlcnRQYXRoVG9TY3JlZW5TcGFjZUZ1bmN0aW9uKFBhdGhD
b252ZXJzaW9uSW5mbyYgY29udmVyc2lvbiwgY29uCiAKIC0gKENHUGF0aFJlZiljb252ZXJ0UGF0
aFRvU2NyZWVuU3BhY2U6KGNvbnN0IFBhdGgmKXBhdGgKIHsKLSAgICBQYXRoQ29udmVyc2lvbklu
Zm8gY29udmVyc2lvbiA9IHsgc2VsZiwgQ0dQYXRoQ3JlYXRlTXV0YWJsZSgpIH07CisgICAgUGF0
aENvbnZlcnNpb25JbmZvIGNvbnZlcnNpb24gPSB7IHNlbGYsIGFkb3B0Q0YoQ0dQYXRoQ3JlYXRl
TXV0YWJsZSgpKS5hdXRvcmVsZWFzZSgpIH07CiAgICAgcGF0aC5hcHBseShbJmNvbnZlcnNpb25d
KGNvbnN0IFBhdGhFbGVtZW50JiBwYXRoRWxlbWVudCkgewogICAgICAgICBjb252ZXJ0UGF0aFRv
U2NyZWVuU3BhY2VGdW5jdGlvbihjb252ZXJzaW9uLCBwYXRoRWxlbWVudCk7CiAgICAgfSk7Ci0g
ICAgQ0ZBdXRvcmVsZWFzZShjb252ZXJzaW9uLnBhdGgpOwogICAgIHJldHVybiBjb252ZXJzaW9u
LnBhdGg7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFj
L1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KaW5kZXgg
ODNlZjI0YzE1OGFlNzBjMzYyNGY5MzUzYzc2OWZkZTBjYzI3NTY2ZS4uMmIwMDVjZTY3NTkwOTQ2
NzQwY2NiZWMzNjA5MzAyZWRkOGNmOWY4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdy
YXBwZXJNYWMubW0KQEAgLTc0Miw3ICs3NDIsNyBAQCBzdGF0aWMgaWQgbmV4dFRleHRNYXJrZXJG
b3JDaGFyYWN0ZXJPZmZzZXQoQVhPYmplY3RDYWNoZSogY2FjaGUsIENoYXJhY3Rlck9mZnNldAog
ICAgIGNhY2hlLT50ZXh0TWFya2VyRGF0YUZvck5leHRDaGFyYWN0ZXJPZmZzZXQodGV4dE1hcmtl
ckRhdGEsIGNoYXJhY3Rlck9mZnNldCk7CiAgICAgaWYgKCF0ZXh0TWFya2VyRGF0YS5heElEKQog
ICAgICAgICByZXR1cm4gbmlsOwotICAgIHJldHVybiBDRkJyaWRnaW5nUmVsZWFzZShBWFRleHRN
YXJrZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgKGNvbnN0IFVJbnQ4KikmdGV4dE1hcmtl
ckRhdGEsIHNpemVvZih0ZXh0TWFya2VyRGF0YSkpKTsKKyAgICByZXR1cm4gYWRvcHRDRihBWFRl
eHRNYXJrZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgKGNvbnN0IFVJbnQ4KikmdGV4dE1h
cmtlckRhdGEsIHNpemVvZih0ZXh0TWFya2VyRGF0YSkpKS5icmlkZ2luZ0F1dG9yZWxlYXNlKCk7
CiB9CiAKIHN0YXRpYyBpZCBwcmV2aW91c1RleHRNYXJrZXJGb3JDaGFyYWN0ZXJPZmZzZXQoQVhP
YmplY3RDYWNoZSogY2FjaGUsIENoYXJhY3Rlck9mZnNldCYgY2hhcmFjdGVyT2Zmc2V0KQpAQCAt
NzU0LDcgKzc1NCw3IEBAIHN0YXRpYyBpZCBwcmV2aW91c1RleHRNYXJrZXJGb3JDaGFyYWN0ZXJP
ZmZzZXQoQVhPYmplY3RDYWNoZSogY2FjaGUsIENoYXJhY3Rlck9mCiAgICAgY2FjaGUtPnRleHRN
YXJrZXJEYXRhRm9yUHJldmlvdXNDaGFyYWN0ZXJPZmZzZXQodGV4dE1hcmtlckRhdGEsIGNoYXJh
Y3Rlck9mZnNldCk7CiAgICAgaWYgKCF0ZXh0TWFya2VyRGF0YS5heElEKQogICAgICAgICByZXR1
cm4gbmlsOwotICAgIHJldHVybiBDRkJyaWRnaW5nUmVsZWFzZShBWFRleHRNYXJrZXJDcmVhdGUo
a0NGQWxsb2NhdG9yRGVmYXVsdCwgKGNvbnN0IFVJbnQ4KikmdGV4dE1hcmtlckRhdGEsIHNpemVv
Zih0ZXh0TWFya2VyRGF0YSkpKTsKKyAgICByZXR1cm4gYWRvcHRDRihBWFRleHRNYXJrZXJDcmVh
dGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgKGNvbnN0IFVJbnQ4KikmdGV4dE1hcmtlckRhdGEsIHNp
emVvZih0ZXh0TWFya2VyRGF0YSkpKS5icmlkZ2luZ0F1dG9yZWxlYXNlKCk7CiB9CiAKIC0gKGlk
KW5leHRUZXh0TWFya2VyRm9yQ2hhcmFjdGVyT2Zmc2V0OihDaGFyYWN0ZXJPZmZzZXQmKWNoYXJh
Y3Rlck9mZnNldApAQCAtNzkyLDcgKzc5Miw3IEBAIC0gKGlkKXRleHRNYXJrZXJGb3JGaXJzdFBv
c2l0aW9uSW5UZXh0Q29udHJvbDooSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQgJil0ZXh0CiAg
ICAgaWYgKCF0ZXh0TWFya2VyRGF0YSkKICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAgIHJldHVy
biBDRkJyaWRnaW5nUmVsZWFzZShBWFRleHRNYXJrZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVs
dCwgKGNvbnN0IFVJbnQ4KikmdGV4dE1hcmtlckRhdGEudmFsdWUoKSwgc2l6ZW9mKHRleHRNYXJr
ZXJEYXRhLnZhbHVlKCkpKSk7CisgICAgcmV0dXJuIGFkb3B0Q0YoQVhUZXh0TWFya2VyQ3JlYXRl
KGtDRkFsbG9jYXRvckRlZmF1bHQsIChjb25zdCBVSW50OCopJnRleHRNYXJrZXJEYXRhLnZhbHVl
KCksIHNpemVvZih0ZXh0TWFya2VyRGF0YS52YWx1ZSgpKSkpLmJyaWRnaW5nQXV0b3JlbGVhc2Uo
KTsKIH0KIAogLy8gV2hlbiBtb2RpZnlpbmcgYXR0cmlidXRlZCBzdHJpbmdzLCB0aGUgcmFuZ2Ug
Y2FuIGNvbWUgZnJvbSBhIHNvdXJjZSB3aGljaCBtYXkgcHJvdmlkZSBmYXVsdHkgaW5mb3JtYXRp
b24gKGUuZy4gdGhlIHNwZWxsIGNoZWNrZXIpLgpAQCAtMTAxOCwxMSArMTAxOCw4IEBAIHN0YXRp
YyB2b2lkIEFYQXR0cmlidXRlU3RyaW5nU2V0RWxlbWVudChOU011dGFibGVBdHRyaWJ1dGVkU3Ry
aW5nKiBhdHRyU3RyaW5nLCBOCiAgICAgICAgIGlmIChbYXR0cmlidXRlIGlzRXF1YWxUb1N0cmlu
ZzpOU0FjY2Vzc2liaWxpdHlBdHRhY2htZW50VGV4dEF0dHJpYnV0ZV0gJiYgb2JqZWN0LT5pc0F0
dGFjaG1lbnQoKSAmJiBbb2JqZWN0V3JhcHBlciBhdHRhY2htZW50Vmlld10pCiAgICAgICAgICAg
ICBvYmplY3RXcmFwcGVyID0gW29iamVjdFdyYXBwZXIgYXR0YWNobWVudFZpZXddOwogICAgICAg
ICAKLSAgICAgICAgQVhVSUVsZW1lbnRSZWYgYXhFbGVtZW50ID0gTlNBY2Nlc3NpYmlsaXR5Q3Jl
YXRlQVhVSUVsZW1lbnRSZWYob2JqZWN0V3JhcHBlcik7Ci0gICAgICAgIGlmIChheEVsZW1lbnQp
IHsKLSAgICAgICAgICAgIFthdHRyU3RyaW5nIGFkZEF0dHJpYnV0ZTphdHRyaWJ1dGUgdmFsdWU6
KF9fYnJpZGdlIGlkKWF4RWxlbWVudCByYW5nZTpyYW5nZV07Ci0gICAgICAgICAgICBDRlJlbGVh
c2UoYXhFbGVtZW50KTsKLSAgICAgICAgfQorICAgICAgICBpZiAoYXV0byBheEVsZW1lbnQgPSBh
ZG9wdENGKE5TQWNjZXNzaWJpbGl0eUNyZWF0ZUFYVUlFbGVtZW50UmVmKG9iamVjdFdyYXBwZXIp
KSkKKyAgICAgICAgICAgIFthdHRyU3RyaW5nIGFkZEF0dHJpYnV0ZTphdHRyaWJ1dGUgdmFsdWU6
KF9fYnJpZGdlIGlkKWF4RWxlbWVudC5nZXQoKSByYW5nZTpyYW5nZV07CiAgICAgfSBlbHNlCiAg
ICAgICAgIFthdHRyU3RyaW5nIHJlbW92ZUF0dHJpYnV0ZTphdHRyaWJ1dGUgcmFuZ2U6cmFuZ2Vd
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVy
dGVyLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCmlu
ZGV4IDY1ZTg1NTI1MjUwZDQwYmFjMGMzZjM4NTZiNzgzOTgzNjBjMGI5MjQuLjhjYWZhN2MzNmU2
ZGQ2MDUwOTI3N2RlMGFjZmQyYzAzMTU2OGQwYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW0KQEAgLTIwOTAsNyArMjA5MCw2IEBAIHZvaWQgSFRN
TENvbnZlcnRlcjo6X3Byb2Nlc3NUZXh0KENoYXJhY3RlckRhdGEmIGNoYXJhY3RlckRhdGEpCiAg
ICAgdW5pY2hhciBsYXN0Q2hhciA9ICh0ZXh0TGVuZ3RoID4gMCkgPyBbW19hdHRyU3RyIHN0cmlu
Z10gY2hhcmFjdGVyQXRJbmRleDp0ZXh0TGVuZ3RoIC0gMV0gOiAnXG4nOwogICAgIEJPT0wgc3Vw
cHJlc3NMZWFkaW5nU3BhY2UgPSAoKF9mbGFncy5pc1NvZnQgJiYgbGFzdENoYXIgPT0gJyAnKSB8
fCBsYXN0Q2hhciA9PSAnXG4nIHx8IGxhc3RDaGFyID09ICdccicgfHwgbGFzdENoYXIgPT0gJ1x0
JyB8fCBsYXN0Q2hhciA9PSBOU1BhcmFncmFwaFNlcGFyYXRvckNoYXJhY3RlciB8fCBsYXN0Q2hh
ciA9PSBOU0xpbmVTZXBhcmF0b3JDaGFyYWN0ZXIgfHwgbGFzdENoYXIgPT0gTlNGb3JtRmVlZENo
YXJhY3RlciB8fCBsYXN0Q2hhciA9PSBXZWJOZXh0TGluZUNoYXJhY3Rlcik7CiAgICAgTlNSYW5n
ZSByYW5nZVRvUmVwbGFjZSA9IE5TTWFrZVJhbmdlKHRleHRMZW5ndGgsIDApOwotICAgIENGTXV0
YWJsZVN0cmluZ1JlZiBtdXRzdHIgPSBOVUxMOwogCiAgICAgU3RyaW5nIG9yaWdpbmFsU3RyaW5n
ID0gY2hhcmFjdGVyRGF0YS5kYXRhKCk7CiAgICAgdW5zaWduZWQgc3RhcnRPZmZzZXQgPSAwOwpA
QCAtMjE2MCw4ICsyMTU5LDYgQEAgdm9pZCBIVE1MQ29udmVydGVyOjpfcHJvY2Vzc1RleHQoQ2hh
cmFjdGVyRGF0YSYgY2hhcmFjdGVyRGF0YSkKICAgICAgICAgICAgIFtfYXR0clN0ciBzZXRBdHRy
aWJ1dGVzOmFnZ3JlZ2F0ZWRBdHRyaWJ1dGVzRm9yQW5jZXN0b3JzKGNoYXJhY3RlckRhdGEpIHJh
bmdlOnJhbmdlVG9SZXBsYWNlXTsKICAgICAgICAgX2ZsYWdzLmlzU29mdCA9IHdhc1NwYWNlOwog
ICAgIH0KLSAgICBpZiAobXV0c3RyKQotICAgICAgICBDRlJlbGVhc2UobXV0c3RyKTsKIH0KIAog
dm9pZCBIVE1MQ29udmVydGVyOjpfdHJhdmVyc2VOb2RlKE5vZGUmIG5vZGUsIHVuc2lnbmVkIGRl
cHRoLCBib29sIGVtYmVkZGVkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nv
Y29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jb2Nv
YS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EubW0KaW5kZXggOTZmNDZjNGNjMDJlODlhODJhNmRmNjUz
Njc0ZDA5NzM0MzE4MDU0Zi4uZmE0YjkwM2JlZjkzOTQ4MWMyMmVhN2RmNTUxZThiNTVlN2UwZTUy
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0
b3JDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY29jb2EvRGlza0NhY2hlTW9u
aXRvckNvY29hLm1tCkBAIC0xMDIsMTAgKzEwMiw5IEBAIERpc2tDYWNoZU1vbml0b3I6OkRpc2tD
YWNoZU1vbml0b3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBQQUw6OlNlc3Npb25J
CiAKICNpZiBVU0UoV0VCX1RIUkVBRCkKICAgICBhdXRvIGJsb2NrVG9SdW4gPSBeKENGQ2FjaGVk
VVJMUmVzcG9uc2VSZWYgcmVzcG9uc2UpIHsKLSAgICAgICAgQ0ZSZXRhaW4ocmVzcG9uc2UpOwor
ICAgICAgICBhdXRvIHN0cm9uZ1Jlc3BvbnNlID0gcmV0YWluUHRyKHJlc3BvbnNlKTsKICAgICAg
ICAgV2ViVGhyZWFkUnVuKF57Ci0gICAgICAgICAgICBibG9jayhyZXNwb25zZSk7Ci0gICAgICAg
ICAgICBDRlJlbGVhc2UocmVzcG9uc2UpOworICAgICAgICAgICAgYmxvY2soc3Ryb25nUmVzcG9u
c2UuZ2V0KCkpOwogICAgICAgICB9KTsKICAgICB9OwogI2Vsc2UKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvbWFjL0V2ZW50SGFuZGxlck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvbWFjL0V2ZW50SGFuZGxlck1hYy5tbQppbmRleCBiMjQ5ZTRmNGZkOTkyYjRlNjFhZTdmZWY5
MDAwOGY1NjhmOTEwZTliLi45ZDEwYTlmYTdmMTlkNDAyMWMxNDg3ZDVlYmNhNjUwM2FlY2FjNDJl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9FdmVudEhhbmRsZXJNYWMubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvRXZlbnRIYW5kbGVyTWFjLm1tCkBAIC00Njgs
MTMgKzQ2OCwxMiBAQCBzdGF0aWMgdm9pZCBzZXROU1Njcm9sbFZpZXdTY3JvbGxXaGVlbFNob3Vs
ZFJldGFpblNlbGYoYm9vbCBzaG91bGRSZXRhaW4pCiAKIHN0YXRpYyB2b2lkIHNlbGZSZXRhaW5p
bmdOU1Njcm9sbFZpZXdTY3JvbGxXaGVlbChOU1Njcm9sbFZpZXcgKnNlbGYsIFNFTCBzZWxlY3Rv
ciwgTlNFdmVudCAqZXZlbnQpCiB7CisgICAgUmV0YWluUHRyPE5TU2Nyb2xsVmlldz4gc3Ryb25n
U2VsZjsKICAgICBib29sIHNob3VsZFJldGFpblNlbGYgPSBpc01haW5UaHJlYWQoKSAmJiBuc1Nj
cm9sbFZpZXdTY3JvbGxXaGVlbFNob3VsZFJldGFpblNlbGYoKTsKLQogICAgIGlmIChzaG91bGRS
ZXRhaW5TZWxmKQotICAgICAgICBDRlJldGFpbigoX19icmlkZ2UgQ0ZUeXBlUmVmKXNlbGYpOwor
ICAgICAgICBzdHJvbmdTZWxmID0gcmV0YWluUHRyKHNlbGYpOworCiAgICAgd3RmQ2FsbElNUDx2
b2lkPihvcmlnaW5hbE5TU2Nyb2xsVmlld1Njcm9sbFdoZWVsLCBzZWxmLCBzZWxlY3RvciwgZXZl
bnQpOwotICAgIGlmIChzaG91bGRSZXRhaW5TZWxmKQotICAgICAgICBDRlJlbGVhc2UoKF9fYnJp
ZGdlIENGVHlwZVJlZilzZWxmKTsKIH0KIAogYm9vbCBFdmVudEhhbmRsZXI6OnBhc3NXaGVlbEV2
ZW50VG9XaWRnZXQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50LCBXaWRnZXQm
IHdpZGdldCwgT3B0aW9uU2V0PFdoZWVsRXZlbnRQcm9jZXNzaW5nU3RlcHM+IHByb2Nlc3NpbmdT
dGVwcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvd2luL0ZyYW1lQ0dXaW4uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGFnZS93aW4vRnJhbWVDR1dpbi5jcHAKaW5kZXggZjA1NTZhM2Rh
YjJhOTI5ZmZiZGNjM2EyMGE2MTk2NzU2YjY2N2EyMS4uNzNkOGI0OWNlYTdjYTY1OGQ1NTQ2ZDNl
YjE1MjJhZDM0YzBhZWMxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS93aW4vRnJh
bWVDR1dpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS93aW4vRnJhbWVDR1dpbi5jcHAK
QEAgLTY4LDE1ICs2OCwxNCBAQCBHRElPYmplY3Q8SEJJVE1BUD4gaW1hZ2VGcm9tUmVjdChjb25z
dCBGcmFtZSogZnJhbWUsIEludFJlY3QmIGlyKQogICAgICAgICByZXR1cm4gaGJtcDsKIAogICAg
IEhHRElPQkogaGJtcE9sZCA9IFNlbGVjdE9iamVjdChoZGMuZ2V0KCksIGhibXAuZ2V0KCkpOwot
ICAgIENHQ29udGV4dFJlZiBjb250ZXh0ID0gQ0dCaXRtYXBDb250ZXh0Q3JlYXRlKHN0YXRpY19j
YXN0PHZvaWQqPihiaXRzKSwgdywgaCwKLSAgICAgICAgOCwgdyAqIHNpemVvZihSR0JRVUFEKSwg
c1JHQkNvbG9yU3BhY2VSZWYoKSwga0NHQml0bWFwQnl0ZU9yZGVyMzJMaXR0bGUgfCBrQ0dJbWFn
ZUFscGhhUHJlbXVsdGlwbGllZEZpcnN0KTsKLSAgICBDR0NvbnRleHRTYXZlR1N0YXRlKGNvbnRl
eHQpOworICAgIGF1dG8gY29udGV4dCA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlKHN0
YXRpY19jYXN0PHZvaWQqPihiaXRzKSwgdywgaCwKKyAgICAgICAgOCwgdyAqIHNpemVvZihSR0JR
VUFEKSwgc1JHQkNvbG9yU3BhY2VSZWYoKSwga0NHQml0bWFwQnl0ZU9yZGVyMzJMaXR0bGUgfCBr
Q0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZEZpcnN0KSk7CisgICAgQ0dDb250ZXh0U2F2ZUdTdGF0
ZShjb250ZXh0LmdldCgpKTsKIAotICAgIEdyYXBoaWNzQ29udGV4dCBnYyhjb250ZXh0KTsKKyAg
ICBHcmFwaGljc0NvbnRleHQgZ2MoY29udGV4dC5nZXQoKSk7CiAKICAgICBkcmF3UmVjdEludG9D
b250ZXh0KGlyLCBmcmFtZS0+dmlldygpLCBnYyk7CiAKLSAgICBDR0NvbnRleHRSZWxlYXNlKGNv
bnRleHQpOwogICAgIFNlbGVjdE9iamVjdChoZGMuZ2V0KCksIGhibXBPbGQpOwogCiAgICAgZnJh
bWUtPnZpZXcoKS0+c2V0UGFpbnRCZWhhdmlvcihvbGRQYWludEJlaGF2aW9yKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL01haW5UaHJlYWRTaGFyZWRUaW1lckNGLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL01haW5UaHJlYWRTaGFyZWRUaW1lckNGLmNw
cAppbmRleCAyOGNkOWI3M2ZlNmI4YTg4YTk0NGEyMDIwOWQ3YTdhMGUwNWUwMTA0Li41NDIwYTVh
ODU5ZmJjYmNjMDRmNWQ1Zjk4NWYwODcyYTU0MDUxM2I4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jZi9NYWluVGhyZWFkU2hhcmVkVGltZXJDRi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY2YvTWFpblRocmVhZFNoYXJlZFRpbWVyQ0YuY3BwCkBAIC0zNyw3
ICszNywxMSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBDRlJ1bkxvb3BUaW1l
clJlZiBzaGFyZWRUaW1lcjsKK3N0YXRpYyBSZXRhaW5QdHI8Q0ZSdW5Mb29wVGltZXJSZWY+JiBz
aGFyZWRUaW1lcigpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxDRlJ1
bkxvb3BUaW1lclJlZj4+IHNoYXJlZFRpbWVyOworICAgIHJldHVybiBzaGFyZWRUaW1lcjsKK30K
IHN0YXRpYyB2b2lkIHRpbWVyRmlyZWQoQ0ZSdW5Mb29wVGltZXJSZWYsIHZvaWQqKTsKIAogc3Rh
dGljIGNvbnN0IENGVGltZUludGVydmFsIGtDRlRpbWVJbnRlcnZhbERpc3RhbnRGdXR1cmUgPSBz
dGQ6Om51bWVyaWNfbGltaXRzPENGVGltZUludGVydmFsPjo6bWF4KCk7CkBAIC04Myw3ICs4Nyw3
IEBAIHN0YXRpYyB2b2lkIHRpbWVyRmlyZWQoQ0ZSdW5Mb29wVGltZXJSZWYsIHZvaWQqKQogCiB2
b2lkIE1haW5UaHJlYWRTaGFyZWRUaW1lcjo6cmVzdGFydFNoYXJlZFRpbWVyKCkKIHsKLSAgICBp
ZiAoIXNoYXJlZFRpbWVyKQorICAgIGlmICghc2hhcmVkVGltZXIoKSkKICAgICAgICAgcmV0dXJu
OwogCiAgICAgTWFpblRocmVhZFNoYXJlZFRpbWVyOjpzaW5nbGV0b24oKS5zdG9wKCk7CkBAIC05
MiwxMiArOTYsMTEgQEAgdm9pZCBNYWluVGhyZWFkU2hhcmVkVGltZXI6OnJlc3RhcnRTaGFyZWRU
aW1lcigpCiAKIHZvaWQgTWFpblRocmVhZFNoYXJlZFRpbWVyOjppbnZhbGlkYXRlKCkKIHsKLSAg
ICBpZiAoIXNoYXJlZFRpbWVyKQorICAgIGlmICghc2hhcmVkVGltZXIoKSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgQ0ZSdW5Mb29wVGltZXJJbnZhbGlkYXRlKHNoYXJlZFRpbWVyKTsKLSAgICBD
RlJlbGVhc2Uoc2hhcmVkVGltZXIpOwotICAgIHNoYXJlZFRpbWVyID0gbnVsbHB0cjsKKyAgICBD
RlJ1bkxvb3BUaW1lckludmFsaWRhdGUoc2hhcmVkVGltZXIoKS5nZXQoKSk7CisgICAgc2hhcmVk
VGltZXIoKSA9IG51bGxwdHI7CiB9CiAKIHZvaWQgTWFpblRocmVhZFNoYXJlZFRpbWVyOjpzZXRG
aXJlSW50ZXJ2YWwoU2Vjb25kcyBpbnRlcnZhbCkKQEAgLTEwNSwxMiArMTA4LDEyIEBAIHZvaWQg
TWFpblRocmVhZFNoYXJlZFRpbWVyOjpzZXRGaXJlSW50ZXJ2YWwoU2Vjb25kcyBpbnRlcnZhbCkK
ICAgICBBU1NFUlQobV9maXJlZEZ1bmN0aW9uKTsKIAogICAgIENGQWJzb2x1dGVUaW1lIGZpcmVE
YXRlID0gQ0ZBYnNvbHV0ZVRpbWVHZXRDdXJyZW50KCkgKyBpbnRlcnZhbC52YWx1ZSgpOwotICAg
IGlmICghc2hhcmVkVGltZXIpIHsKLSAgICAgICAgc2hhcmVkVGltZXIgPSBDRlJ1bkxvb3BUaW1l
ckNyZWF0ZShudWxscHRyLCBmaXJlRGF0ZSwga0NGVGltZUludGVydmFsRGlzdGFudEZ1dHVyZSwg
MCwgMCwgdGltZXJGaXJlZCwgbnVsbHB0cik7CisgICAgaWYgKCFzaGFyZWRUaW1lcigpKSB7Cisg
ICAgICAgIHNoYXJlZFRpbWVyKCkgPSBhZG9wdENGKENGUnVuTG9vcFRpbWVyQ3JlYXRlKG51bGxw
dHIsIGZpcmVEYXRlLCBrQ0ZUaW1lSW50ZXJ2YWxEaXN0YW50RnV0dXJlLCAwLCAwLCB0aW1lckZp
cmVkLCBudWxscHRyKSk7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICAgICAgQ0ZSdW5M
b29wQWRkVGltZXIoV2ViVGhyZWFkUnVuTG9vcCgpLCBzaGFyZWRUaW1lciwga0NGUnVuTG9vcENv
bW1vbk1vZGVzKTsKKyAgICAgICAgQ0ZSdW5Mb29wQWRkVGltZXIoV2ViVGhyZWFkUnVuTG9vcCgp
LCBzaGFyZWRUaW1lcigpLmdldCgpLCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMpOwogI2Vsc2UKLSAg
ICAgICAgQ0ZSdW5Mb29wQWRkVGltZXIoQ0ZSdW5Mb29wR2V0Q3VycmVudCgpLCBzaGFyZWRUaW1l
ciwga0NGUnVuTG9vcENvbW1vbk1vZGVzKTsKKyAgICAgICAgQ0ZSdW5Mb29wQWRkVGltZXIoQ0ZS
dW5Mb29wR2V0Q3VycmVudCgpLCBzaGFyZWRUaW1lcigpLmdldCgpLCBrQ0ZSdW5Mb29wQ29tbW9u
TW9kZXMpOwogI2VuZGlmCiAKICAgICAgICAgc2V0dXBQb3dlck9ic2VydmVyKCk7CkBAIC0xMTgs
MTUgKzEyMSwxNSBAQCB2b2lkIE1haW5UaHJlYWRTaGFyZWRUaW1lcjo6c2V0RmlyZUludGVydmFs
KFNlY29uZHMgaW50ZXJ2YWwpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBDRlJ1bkxv
b3BUaW1lclNldE5leHRGaXJlRGF0ZShzaGFyZWRUaW1lciwgZmlyZURhdGUpOworICAgIENGUnVu
TG9vcFRpbWVyU2V0TmV4dEZpcmVEYXRlKHNoYXJlZFRpbWVyKCkuZ2V0KCksIGZpcmVEYXRlKTsK
IH0KIAogdm9pZCBNYWluVGhyZWFkU2hhcmVkVGltZXI6OnN0b3AoKQogewotICAgIGlmICghc2hh
cmVkVGltZXIpCisgICAgaWYgKCFzaGFyZWRUaW1lcigpKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBDRlJ1bkxvb3BUaW1lclNldE5leHRGaXJlRGF0ZShzaGFyZWRUaW1lciwga0NGVGltZUludGVy
dmFsRGlzdGFudEZ1dHVyZSk7CisgICAgQ0ZSdW5Mb29wVGltZXJTZXROZXh0RmlyZURhdGUoc2hh
cmVkVGltZXIoKS5nZXQoKSwga0NGVGltZUludGVydmFsRGlzdGFudEZ1dHVyZSk7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCmluZGV4IDU3NjFjMDk5
YjFmMTk0ZmExZjBkODAzYzY5NWQwNDJmYmU0NDgzYTkuLmVlNGRlY2U3YjJjNDkyZmVjNzViOThk
MmFiZDAyZTEwYjdhNDk3ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQpAQCAtMjgxMCwxMiAr
MjgxMCwxMiBAQCBzdGF0aWMgTlNTdHJpbmcgKmV4ZXJuYWxEZXZpY2VEaXNwbGF5TmFtZUZvclBs
YXllcihBVlBsYXllciAqcGxheWVyKQogICAgIGlmIChwbGF5ZXIuZXh0ZXJuYWxQbGF5YmFja1R5
cGUgIT0gQVZQbGF5ZXJFeHRlcm5hbFBsYXliYWNrVHlwZUFpclBsYXkpCiAgICAgICAgIHJldHVy
biBuaWw7CiAKLSAgICBOU0FycmF5ICpwaWNrYWJsZVJvdXRlcyA9IENGQnJpZGdpbmdSZWxlYXNl
KE1STWVkaWFSZW1vdGVDb3B5UGlja2FibGVSb3V0ZXMoKSk7Ci0gICAgaWYgKCFwaWNrYWJsZVJv
dXRlcy5jb3VudCkKKyAgICBhdXRvIHBpY2thYmxlUm91dGVzID0gYWRvcHRDRihNUk1lZGlhUmVt
b3RlQ29weVBpY2thYmxlUm91dGVzKCkpOworICAgIGlmICghcGlja2FibGVSb3V0ZXMgfHwgIUNG
QXJyYXlHZXRDb3VudChwaWNrYWJsZVJvdXRlcy5nZXQoKSkpCiAgICAgICAgIHJldHVybiBuaWw7
CiAKICAgICBOU1N0cmluZyAqZGlzcGxheU5hbWUgPSBuaWw7Ci0gICAgZm9yIChOU0RpY3Rpb25h
cnkgKnBpY2thYmxlUm91dGUgaW4gcGlja2FibGVSb3V0ZXMpIHsKKyAgICBmb3IgKE5TRGljdGlv
bmFyeSAqcGlja2FibGVSb3V0ZSBpbiAoX19icmlkZ2UgTlNBcnJheSAqKXBpY2thYmxlUm91dGVz
LmdldCgpKSB7CiAgICAgICAgIGlmICghW3BpY2thYmxlUm91dGVbQVZDb250cm9sbGVyX1JvdXRl
RGVzY3JpcHRpb25LZXlfUm91dGVDdXJyZW50bHlQaWNrZWRdIGJvb2xWYWx1ZV0pCiAgICAgICAg
ICAgICBjb250aW51ZTsKIApAQCAtMjgzMCw3ICsyODMwLDcgQEAgc3RhdGljIE5TU3RyaW5nICpl
eGVybmFsRGV2aWNlRGlzcGxheU5hbWVGb3JQbGF5ZXIoQVZQbGF5ZXIgKnBsYXllcikKIAogICAg
ICAgICAvLyBJbiBjYXNlcyB3aGVyZSBhIHJvdXRlIHdpdGggdGhhdCBuYW1lIGFscmVhZHkgZXhp
c3RzLCBwcmVmaXggdGhlIG5hbWUgd2l0aCB0aGUgbW9kZWwuCiAgICAgICAgIEJPT0wgaW5jbHVk
ZUxvY2FsaXplZERldmljZU1vZGVsTmFtZSA9IE5POwotICAgICAgICBmb3IgKE5TRGljdGlvbmFy
eSAqb3RoZXJSb3V0ZSBpbiBwaWNrYWJsZVJvdXRlcykgeworICAgICAgICBmb3IgKE5TRGljdGlv
bmFyeSAqb3RoZXJSb3V0ZSBpbiAoX19icmlkZ2UgTlNBcnJheSAqKXBpY2thYmxlUm91dGVzLmdl
dCgpKSB7CiAgICAgICAgICAgICBpZiAob3RoZXJSb3V0ZSA9PSBwaWNrYWJsZVJvdXRlKQogICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYS93aW4vQ0FDRkxheWVyVHJlZUhvc3QuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL0NBQ0ZMYXllclRyZWVIb3N0LmNwcAppbmRleCAx
MjlkZGEwZGRhYmEwODBhNTkwMTYzMDRmYWQ0ZWNmZjNlNDdjZWMwLi5hNmI3NjgzZGVlNWI2ZTE1
ZDE1ODY0MzVmYjM3MTFhMTU5ZDQyY2E1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYS93aW4vQ0FDRkxheWVyVHJlZUhvc3QuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9DQUNGTGF5ZXJUcmVlSG9zdC5jcHAKQEAg
LTE1OSw5ICsxNTksOCBAQCB2b2lkIENBQ0ZMYXllclRyZWVIb3N0Ojppbml0aWFsaXplKCkKICAg
ICBtX3Jvb3RMYXllci0+c2V0R2VvbWV0cnlGbGlwcGVkKHRydWUpOwogCiAjaWZuZGVmIE5ERUJV
RwotICAgIENHQ29sb3JSZWYgZGVidWdDb2xvciA9IENHQ29sb3JDcmVhdGVHZW5lcmljUkdCKDEs
IDAsIDAsIDAuOCk7Ci0gICAgbV9yb290TGF5ZXItPnNldEJhY2tncm91bmRDb2xvcihkZWJ1Z0Nv
bG9yKTsKLSAgICBDR0NvbG9yUmVsZWFzZShkZWJ1Z0NvbG9yKTsKKyAgICBhdXRvIGRlYnVnQ29s
b3IgPSBhZG9wdENGKENHQ29sb3JDcmVhdGVHZW5lcmljUkdCKDEsIDAsIDAsIDAuOCkpOworICAg
IG1fcm9vdExheWVyLT5zZXRCYWNrZ3JvdW5kQ29sb3IoZGVidWdDb2xvci5nZXQoKSk7CiAjZW5k
aWYKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
R3JhcGhpY3NDb250ZXh0Q0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCmluZGV4IDlkYjkwOWNkYThlZjE3NjEwZjI5NGE5ODUw
OTE4YmMxOWFlNzk3YTkuLjY0NDNhNzE1NzU4ZDY3NTg0ZWUzZGY0MTQ5NTNlNGZlNzU4N2MxYmIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNz
Q29udGV4dENHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9H
cmFwaGljc0NvbnRleHRDRy5jcHAKQEAgLTM0Niw5ICszNDYsNyBAQCBzdGF0aWMgdm9pZCBkcmF3
UGF0dGVybkNhbGxiYWNrKHZvaWQqIGluZm8sIENHQ29udGV4dFJlZiBjb250ZXh0KQogCiBzdGF0
aWMgdm9pZCBwYXR0ZXJuUmVsZWFzZUNhbGxiYWNrKHZvaWQqIGluZm8pCiB7Ci0gICAgY2FsbE9u
TWFpblRocmVhZChbaW1hZ2UgPSBzdGF0aWNfY2FzdDxDR0ltYWdlUmVmPihpbmZvKV0gewotICAg
ICAgICBDR0ltYWdlUmVsZWFzZShpbWFnZSk7Ci0gICAgfSk7CisgICAgY2FsbE9uTWFpblRocmVh
ZChbaW1hZ2UgPSBhZG9wdENGKHN0YXRpY19jYXN0PENHSW1hZ2VSZWY+KGluZm8pKV0geyB9KTsK
IH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdQbGF0Zm9ybVBhdHRlcm4oY29uc3QgUGxh
dGZvcm1JbWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdCBBZmZp
bmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBj
b25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRp
b25zKQpAQCAtNjc1LDggKzY3Myw4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUGF0aChj
b25zdCBQYXRoJiBwYXRoKQogICAgICAgICAgICAgRmxvYXRSZWN0IHJlY3QgPSBwYXRoLmZhc3RC
b3VuZGluZ1JlY3QoKTsKICAgICAgICAgICAgIEZsb2F0U2l6ZSBsYXllclNpemUgPSBnZXRDVE0o
KS5tYXBTaXplKHJlY3Quc2l6ZSgpKTsKIAotICAgICAgICAgICAgQ0dMYXllclJlZiBsYXllciA9
IENHTGF5ZXJDcmVhdGVXaXRoQ29udGV4dChjb250ZXh0LCBsYXllclNpemUsIDApOwotICAgICAg
ICAgICAgQ0dDb250ZXh0UmVmIGxheWVyQ29udGV4dCA9IENHTGF5ZXJHZXRDb250ZXh0KGxheWVy
KTsKKyAgICAgICAgICAgIGF1dG8gbGF5ZXIgPSBhZG9wdENGKENHTGF5ZXJDcmVhdGVXaXRoQ29u
dGV4dChjb250ZXh0LCBsYXllclNpemUsIDApKTsKKyAgICAgICAgICAgIENHQ29udGV4dFJlZiBs
YXllckNvbnRleHQgPSBDR0xheWVyR2V0Q29udGV4dChsYXllci5nZXQoKSk7CiAKICAgICAgICAg
ICAgIENHQ29udGV4dFNjYWxlQ1RNKGxheWVyQ29udGV4dCwgbGF5ZXJTaXplLndpZHRoKCkgLyBy
ZWN0LndpZHRoKCksIGxheWVyU2l6ZS5oZWlnaHQoKSAvIHJlY3QuaGVpZ2h0KCkpOwogICAgICAg
ICAgICAgQ0dDb250ZXh0VHJhbnNsYXRlQ1RNKGxheWVyQ29udGV4dCwgLXJlY3QueCgpLCAtcmVj
dC55KCkpOwpAQCAtNjkwLDggKzY4OCw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUGF0
aChjb25zdCBQYXRoJiBwYXRoKQogICAgICAgICAgICAgICAgIENHQ29udGV4dENsaXAobGF5ZXJD
b250ZXh0KTsKIAogICAgICAgICAgICAgbV9zdGF0ZS5maWxsR3JhZGllbnQtPnBhaW50KGxheWVy
Q29udGV4dCk7Ci0gICAgICAgICAgICBDR0NvbnRleHREcmF3TGF5ZXJJblJlY3QoY29udGV4dCwg
cmVjdCwgbGF5ZXIpOwotICAgICAgICAgICAgQ0dMYXllclJlbGVhc2UobGF5ZXIpOworICAgICAg
ICAgICAgQ0dDb250ZXh0RHJhd0xheWVySW5SZWN0KGNvbnRleHQsIHJlY3QsIGxheWVyLmdldCgp
KTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIENHQ29udGV4dEJlZ2luUGF0aChjb250
ZXh0KTsKICAgICAgICAgICAgIENHQ29udGV4dEFkZFBhdGgoY29udGV4dCwgcGF0aC5wbGF0Zm9y
bVBhdGgoKSk7CkBAIC03NDUsOCArNzQyLDggQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnN0cm9r
ZVBhdGgoY29uc3QgUGF0aCYgcGF0aCkKIAogICAgICAgICAgICAgRmxvYXRTaXplIGxheWVyU2l6
ZSA9IGdldENUTSgpLm1hcFNpemUoRmxvYXRTaXplKGFkanVzdGVkV2lkdGgsIGFkanVzdGVkSGVp
Z2h0KSk7CiAKLSAgICAgICAgICAgIENHTGF5ZXJSZWYgbGF5ZXIgPSBDR0xheWVyQ3JlYXRlV2l0
aENvbnRleHQoY29udGV4dCwgbGF5ZXJTaXplLCAwKTsKLSAgICAgICAgICAgIENHQ29udGV4dFJl
ZiBsYXllckNvbnRleHQgPSBDR0xheWVyR2V0Q29udGV4dChsYXllcik7CisgICAgICAgICAgICBh
dXRvIGxheWVyID0gYWRvcHRDRihDR0xheWVyQ3JlYXRlV2l0aENvbnRleHQoY29udGV4dCwgbGF5
ZXJTaXplLCAwKSk7CisgICAgICAgICAgICBDR0NvbnRleHRSZWYgbGF5ZXJDb250ZXh0ID0gQ0dM
YXllckdldENvbnRleHQobGF5ZXIuZ2V0KCkpOwogICAgICAgICAgICAgQ0dDb250ZXh0U2V0TGlu
ZVdpZHRoKGxheWVyQ29udGV4dCwgbGluZVdpZHRoKTsKIAogICAgICAgICAgICAgLy8gQ29tcGVu
c2F0ZSBmb3IgdGhlIGxpbmUgd2lkdGgsIG90aGVyd2lzZSB0aGUgbGF5ZXIncyB0b3AtbGVmdCBj
b3JuZXIgd291bGQgYmUKQEAgLTc2NSw4ICs3NjIsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6
c3Ryb2tlUGF0aChjb25zdCBQYXRoJiBwYXRoKQogCiAgICAgICAgICAgICBmbG9hdCBkZXN0aW5h
dGlvblggPSByb3VuZGYocmVjdC54KCkgLSBsaW5lV2lkdGgpOwogICAgICAgICAgICAgZmxvYXQg
ZGVzdGluYXRpb25ZID0gcm91bmRmKHJlY3QueSgpIC0gbGluZVdpZHRoKTsKLSAgICAgICAgICAg
IENHQ29udGV4dERyYXdMYXllckluUmVjdChjb250ZXh0LCBDR1JlY3RNYWtlKGRlc3RpbmF0aW9u
WCwgZGVzdGluYXRpb25ZLCBhZGp1c3RlZFdpZHRoLCBhZGp1c3RlZEhlaWdodCksIGxheWVyKTsK
LSAgICAgICAgICAgIENHTGF5ZXJSZWxlYXNlKGxheWVyKTsKKyAgICAgICAgICAgIENHQ29udGV4
dERyYXdMYXllckluUmVjdChjb250ZXh0LCBDR1JlY3RNYWtlKGRlc3RpbmF0aW9uWCwgZGVzdGlu
YXRpb25ZLCBhZGp1c3RlZFdpZHRoLCBhZGp1c3RlZEhlaWdodCksIGxheWVyLmdldCgpKTsKICAg
ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIENHQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZl
cihjb250ZXh0KTsKICAgICAgICAgICAgIENHQ29udGV4dEJlZ2luUGF0aChjb250ZXh0KTsKQEAg
LTgxNyw4ICs4MTMsOCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3QoY29uc3QgRmxv
YXRSZWN0JiByZWN0KQogICAgICAgICBpZiAoaGFzU2hhZG93KCkpIHsKICAgICAgICAgICAgIEZs
b2F0U2l6ZSBsYXllclNpemUgPSBnZXRDVE0oKS5tYXBTaXplKHJlY3Quc2l6ZSgpKTsKIAotICAg
ICAgICAgICAgQ0dMYXllclJlZiBsYXllciA9IENHTGF5ZXJDcmVhdGVXaXRoQ29udGV4dChjb250
ZXh0LCBsYXllclNpemUsIDApOwotICAgICAgICAgICAgQ0dDb250ZXh0UmVmIGxheWVyQ29udGV4
dCA9IENHTGF5ZXJHZXRDb250ZXh0KGxheWVyKTsKKyAgICAgICAgICAgIGF1dG8gbGF5ZXIgPSBh
ZG9wdENGKENHTGF5ZXJDcmVhdGVXaXRoQ29udGV4dChjb250ZXh0LCBsYXllclNpemUsIDApKTsK
KyAgICAgICAgICAgIENHQ29udGV4dFJlZiBsYXllckNvbnRleHQgPSBDR0xheWVyR2V0Q29udGV4
dChsYXllci5nZXQoKSk7CiAKICAgICAgICAgICAgIENHQ29udGV4dFNjYWxlQ1RNKGxheWVyQ29u
dGV4dCwgbGF5ZXJTaXplLndpZHRoKCkgLyByZWN0LndpZHRoKCksIGxheWVyU2l6ZS5oZWlnaHQo
KSAvIHJlY3QuaGVpZ2h0KCkpOwogICAgICAgICAgICAgQ0dDb250ZXh0VHJhbnNsYXRlQ1RNKGxh
eWVyQ29udGV4dCwgLXJlY3QueCgpLCAtcmVjdC55KCkpOwpAQCAtODI3LDggKzgyMyw3IEBAIHZv
aWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiAKICAg
ICAgICAgICAgIENHQ29udGV4dENvbmNhdENUTShsYXllckNvbnRleHQsIG1fc3RhdGUuZmlsbEdy
YWRpZW50U3BhY2VUcmFuc2Zvcm0pOwogICAgICAgICAgICAgbV9zdGF0ZS5maWxsR3JhZGllbnQt
PnBhaW50KGxheWVyQ29udGV4dCk7Ci0gICAgICAgICAgICBDR0NvbnRleHREcmF3TGF5ZXJJblJl
Y3QoY29udGV4dCwgcmVjdCwgbGF5ZXIpOwotICAgICAgICAgICAgQ0dMYXllclJlbGVhc2UobGF5
ZXIpOworICAgICAgICAgICAgQ0dDb250ZXh0RHJhd0xheWVySW5SZWN0KGNvbnRleHQsIHJlY3Qs
IGxheWVyLmdldCgpKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIENHQ29udGV4dENs
aXBUb1JlY3QoY29udGV4dCwgcmVjdCk7CiAgICAgICAgICAgICBDR0NvbnRleHRDb25jYXRDVE0o
Y29udGV4dCwgbV9zdGF0ZS5maWxsR3JhZGllbnRTcGFjZVRyYW5zZm9ybSk7CkBAIC0xMjI2LDkg
KzEyMjEsOSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c3Ryb2tlUmVjdChjb25zdCBGbG9hdFJl
Y3QmIHJlY3QsIGZsb2F0IGxpbmVXaWR0aCkKICAgICAgICAgICAgIGZsb2F0IGFkanVzdGVkSGVp
Z2h0ID0gY2VpbGYocmVjdC5oZWlnaHQoKSArIGRvdWJsZUxpbmVXaWR0aCk7CiAgICAgICAgICAg
ICBGbG9hdFNpemUgbGF5ZXJTaXplID0gZ2V0Q1RNKCkubWFwU2l6ZShGbG9hdFNpemUoYWRqdXN0
ZWRXaWR0aCwgYWRqdXN0ZWRIZWlnaHQpKTsKIAotICAgICAgICAgICAgQ0dMYXllclJlZiBsYXll
ciA9IENHTGF5ZXJDcmVhdGVXaXRoQ29udGV4dChjb250ZXh0LCBsYXllclNpemUsIDApOworICAg
ICAgICAgICAgYXV0byBsYXllciA9IGFkb3B0Q0YoQ0dMYXllckNyZWF0ZVdpdGhDb250ZXh0KGNv
bnRleHQsIGxheWVyU2l6ZSwgMCkpOwogCi0gICAgICAgICAgICBDR0NvbnRleHRSZWYgbGF5ZXJD
b250ZXh0ID0gQ0dMYXllckdldENvbnRleHQobGF5ZXIpOworICAgICAgICAgICAgQ0dDb250ZXh0
UmVmIGxheWVyQ29udGV4dCA9IENHTGF5ZXJHZXRDb250ZXh0KGxheWVyLmdldCgpKTsKICAgICAg
ICAgICAgIG1fc3RhdGUuc3Ryb2tlVGhpY2tuZXNzID0gbGluZVdpZHRoOwogICAgICAgICAgICAg
Q0dDb250ZXh0U2V0TGluZVdpZHRoKGxheWVyQ29udGV4dCwgbGluZVdpZHRoKTsKIApAQCAtMTI0
OCw4ICsxMjQzLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnN0cm9rZVJlY3QoY29uc3QgRmxv
YXRSZWN0JiByZWN0LCBmbG9hdCBsaW5lV2lkdGgpCiAKICAgICAgICAgICAgIGNvbnN0IGZsb2F0
IGRlc3RpbmF0aW9uWCA9IHJvdW5kZihyZWN0LngoKSAtIGxpbmVXaWR0aCk7CiAgICAgICAgICAg
ICBjb25zdCBmbG9hdCBkZXN0aW5hdGlvblkgPSByb3VuZGYocmVjdC55KCkgLSBsaW5lV2lkdGgp
OwotICAgICAgICAgICAgQ0dDb250ZXh0RHJhd0xheWVySW5SZWN0KGNvbnRleHQsIENHUmVjdE1h
a2UoZGVzdGluYXRpb25YLCBkZXN0aW5hdGlvblksIGFkanVzdGVkV2lkdGgsIGFkanVzdGVkSGVp
Z2h0KSwgbGF5ZXIpOwotICAgICAgICAgICAgQ0dMYXllclJlbGVhc2UobGF5ZXIpOworICAgICAg
ICAgICAgQ0dDb250ZXh0RHJhd0xheWVySW5SZWN0KGNvbnRleHQsIENHUmVjdE1ha2UoZGVzdGlu
YXRpb25YLCBkZXN0aW5hdGlvblksIGFkanVzdGVkV2lkdGgsIGFkanVzdGVkSGVpZ2h0KSwgbGF5
ZXIuZ2V0KCkpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgQ0dDb250ZXh0U3RhdGVT
YXZlciBzdGF0ZVNhdmVyKGNvbnRleHQpOwogICAgICAgICAgICAgc2V0U3Ryb2tlVGhpY2tuZXNz
KGxpbmVXaWR0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9QYXR0ZXJuQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
UGF0dGVybkNHLmNwcAppbmRleCBmMWI5ZTNhN2MwNTU2OWE5ODkxYjY5OGQyODNhYjUzOTdjNzI1
ZjU0Li4zYWVjNzc1NmRiOGNkMjUwYWZlZjEwZDgzZmRlYjFkY2M5M2NmOWMzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXR0ZXJuQ0cuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdHRlcm5DRy5jcHAKQEAgLTUw
LDkgKzUwLDcgQEAgc3RhdGljIHZvaWQgcGF0dGVybkNhbGxiYWNrKHZvaWQqIGluZm8sIENHQ29u
dGV4dFJlZiBjb250ZXh0KQogCiBzdGF0aWMgdm9pZCBwYXR0ZXJuUmVsZWFzZUNhbGxiYWNrKHZv
aWQqIGluZm8pCiB7Ci0gICAgY2FsbE9uTWFpblRocmVhZChbaW1hZ2UgPSBzdGF0aWNfY2FzdDxD
R0ltYWdlUmVmPihpbmZvKV0gewotICAgICAgICBDR0ltYWdlUmVsZWFzZShpbWFnZSk7Ci0gICAg
fSk7CisgICAgY2FsbE9uTWFpblRocmVhZChbaW1hZ2UgPSBhZG9wdENGKHN0YXRpY19jYXN0PENH
SW1hZ2VSZWY+KGluZm8pKV0geyB9KTsKIH0KIAogQ0dQYXR0ZXJuUmVmIFBhdHRlcm46OmNyZWF0
ZVBsYXRmb3JtUGF0dGVybihjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHVzZXJTcGFjZVRyYW5zZm9y
bSkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcAppbmRleCA5OWNiY2ZkMGI2ZGExNWNlMzIw
ODc3NWQxNWI1ZGRiYjZhYWM4ZjBlLi5mYTc3YjM5OTc3ZGI5NzhhMDU5NzFiNmMyNWM0MWYzNzJk
ZTUyNGIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9Gb250Q2FjaGVDb3JlVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwCkBAIC0xMjc5LDggKzEyNzksNyBAQCBz
dGF0aWMgdm9pZCBhdXRvQWN0aXZhdGVGb250KGNvbnN0IFN0cmluZyYgbmFtZSwgQ0dGbG9hdCBz
aXplKQogICAgIENGVHlwZVJlZiB2YWx1ZXNbXSA9IHsgZm9udE5hbWUuZ2V0KCkgfTsKICAgICBh
dXRvIGF0dHJpYnV0ZXMgPSBhZG9wdENGKENGRGljdGlvbmFyeUNyZWF0ZShrQ0ZBbGxvY2F0b3JE
ZWZhdWx0LCBrZXlzLCB2YWx1ZXMsIFdURl9BUlJBWV9MRU5HVEgoa2V5cyksICZrQ0ZUeXBlRGlj
dGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpKTsK
ICAgICBhdXRvIGRlc2NyaXB0b3IgPSBhZG9wdENGKENURm9udERlc2NyaXB0b3JDcmVhdGVXaXRo
QXR0cmlidXRlcyhhdHRyaWJ1dGVzLmdldCgpKSk7Ci0gICAgaWYgKGF1dG8gbmV3Rm9udCA9IENU
Rm9udENyZWF0ZVdpdGhGb250RGVzY3JpcHRvcihkZXNjcmlwdG9yLmdldCgpLCBzaXplLCBudWxs
cHRyKSkKLSAgICAgICAgQ0ZSZWxlYXNlKG5ld0ZvbnQpOworICAgIGF1dG8gbmV3Rm9udCA9IGFk
b3B0Q0YoQ1RGb250Q3JlYXRlV2l0aEZvbnREZXNjcmlwdG9yKGRlc2NyaXB0b3IuZ2V0KCksIHNp
emUsIG51bGxwdHIpKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udENHV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9Gb250Q0dXaW4uY3BwCmluZGV4IDUzYWM3ZTIwMDE4YTFiOGE5NTBk
Yzc0OTI2ODVkMjc1ZjhhYmIxNmUuLmMxOWU3NDE1NTdjMzA4Yzk0MWU0ZWY3MTVlM2RiNDY1OTRk
MTg1YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9G
b250Q0dXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9G
b250Q0dXaW4uY3BwCkBAIC00MDksNTAgKzQwOSwzNiBAQCB2b2lkIEZvbnRDYXNjYWRlOjpnZXRQ
bGF0Zm9ybUdseXBoQWR2YW5jZXMoQ0dGb250UmVmIGZvbnQsIGNvbnN0IENHQWZmaW5lVHJhbnNm
bwogCiAgICAgLy8gPHJkYXI6Ly9wcm9ibGVtLzc3NjExNjU+IFRoZSBHREkgYmFjayBlbmQgaW4g
Q29yZSBHcmFwaGljcyBzb21ldGltZXMgcmV0dXJucyBhZHZhbmNlcyB0aGF0CiAgICAgLy8gZGlm
ZmVyIGZyb20gd2hhdCB0aGUgZm9udCdzIGhtdHggdGFibGUgc3BlY2lmaWVzLiBUaGUgZm9sbG93
aW5nIGNvZGUgY29ycmVjdHMgdGhhdC4KLSAgICBDRkRhdGFSZWYgaG10eFRhYmxlID0gQ0dGb250
Q29weVRhYmxlRm9yVGFnKGZvbnQsICdobXR4Jyk7CisgICAgYXV0byBobXR4VGFibGUgPSBhZG9w
dENGKENHRm9udENvcHlUYWJsZUZvclRhZyhmb250LCAnaG10eCcpKTsKICAgICBpZiAoIWhtdHhU
YWJsZSkKICAgICAgICAgcmV0dXJuOwotICAgIENGRGF0YVJlZiBoaGVhVGFibGUgPSBDR0ZvbnRD
b3B5VGFibGVGb3JUYWcoZm9udCwgJ2hoZWEnKTsKLSAgICBpZiAoIWhoZWFUYWJsZSkgewotICAg
ICAgICBDRlJlbGVhc2UoaG10eFRhYmxlKTsKKyAgICBhdXRvIGhoZWFUYWJsZSA9IGFkb3B0Q0Yo
Q0dGb250Q29weVRhYmxlRm9yVGFnKGZvbnQsICdoaGVhJykpOworICAgIGlmICghaGhlYVRhYmxl
KQogICAgICAgICByZXR1cm47Ci0gICAgfQogCiAgICAgY29uc3QgQ0ZJbmRleCBoaGVhVGFibGVT
aXplID0gMzY7CiAgICAgY29uc3QgcHRyZGlmZl90IGhoZWFUYWJsZU51bWJlck9mSE1ldHJpY3NP
ZmZzZXQgPSAzNDsKLSAgICBpZiAoQ0ZEYXRhR2V0TGVuZ3RoKGhoZWFUYWJsZSkgPCBoaGVhVGFi
bGVTaXplKSB7Ci0gICAgICAgIENGUmVsZWFzZShobXR4VGFibGUpOwotICAgICAgICBDRlJlbGVh
c2UoaGhlYVRhYmxlKTsKKyAgICBpZiAoQ0ZEYXRhR2V0TGVuZ3RoKGhoZWFUYWJsZS5nZXQoKSkg
PCBoaGVhVGFibGVTaXplKQogICAgICAgICByZXR1cm47Ci0gICAgfQogCi0gICAgdW5zaWduZWQg
c2hvcnQgbnVtYmVyT2ZITWV0cmljcyA9ICpyZWludGVycHJldF9jYXN0PGNvbnN0IHVuc2lnbmVk
IHNob3J0Kj4oQ0ZEYXRhR2V0Qnl0ZVB0cihoaGVhVGFibGUpICsgaGhlYVRhYmxlTnVtYmVyT2ZI
TWV0cmljc09mZnNldCk7CisgICAgdW5zaWduZWQgc2hvcnQgbnVtYmVyT2ZITWV0cmljcyA9ICpy
ZWludGVycHJldF9jYXN0PGNvbnN0IHVuc2lnbmVkIHNob3J0Kj4oQ0ZEYXRhR2V0Qnl0ZVB0ciho
aGVhVGFibGUuZ2V0KCkpICsgaGhlYVRhYmxlTnVtYmVyT2ZITWV0cmljc09mZnNldCk7CiAgICAg
bnVtYmVyT2ZITWV0cmljcyA9ICgobnVtYmVyT2ZITWV0cmljcyAmIDB4RkYpIDw8IDgpIHwgKG51
bWJlck9mSE1ldHJpY3MgPj4gOCk7Ci0gICAgaWYgKCFudW1iZXJPZkhNZXRyaWNzKSB7Ci0gICAg
ICAgIENGUmVsZWFzZShobXR4VGFibGUpOwotICAgICAgICBDRlJlbGVhc2UoaGhlYVRhYmxlKTsK
KyAgICBpZiAoIW51bWJlck9mSE1ldHJpY3MpCiAgICAgICAgIHJldHVybjsKLSAgICB9CiAKICAg
ICBpZiAoZ2x5cGggPj0gbnVtYmVyT2ZITWV0cmljcykKICAgICAgICAgZ2x5cGggPSBudW1iZXJP
ZkhNZXRyaWNzIC0gMTsKIAotICAgIGlmIChDRkRhdGFHZXRMZW5ndGgoaG10eFRhYmxlKSA8IDQg
KiAoZ2x5cGggKyAxKSkgewotICAgICAgICBDRlJlbGVhc2UoaG10eFRhYmxlKTsKLSAgICAgICAg
Q0ZSZWxlYXNlKGhoZWFUYWJsZSk7CisgICAgaWYgKENGRGF0YUdldExlbmd0aChobXR4VGFibGUu
Z2V0KCkpIDwgNCAqIChnbHlwaCArIDEpKQogICAgICAgICByZXR1cm47Ci0gICAgfQogCi0gICAg
dW5zaWduZWQgc2hvcnQgYWR2YW5jZUluRGVzaWduVW5pdHMgPSAqcmVpbnRlcnByZXRfY2FzdDxj
b25zdCB1bnNpZ25lZCBzaG9ydCo+KENGRGF0YUdldEJ5dGVQdHIoaG10eFRhYmxlKSArIDQgKiBn
bHlwaCk7CisgICAgdW5zaWduZWQgc2hvcnQgYWR2YW5jZUluRGVzaWduVW5pdHMgPSAqcmVpbnRl
cnByZXRfY2FzdDxjb25zdCB1bnNpZ25lZCBzaG9ydCo+KENGRGF0YUdldEJ5dGVQdHIoaG10eFRh
YmxlLmdldCgpKSArIDQgKiBnbHlwaCk7CiAgICAgYWR2YW5jZUluRGVzaWduVW5pdHMgPSAoKGFk
dmFuY2VJbkRlc2lnblVuaXRzICYgMHhGRikgPDwgOCkgfCAoYWR2YW5jZUluRGVzaWduVW5pdHMg
Pj4gOCk7CiAgICAgQ0dTaXplIGhvcml6b250YWxBZHZhbmNlID0gQ0dTaXplTWFrZShzdGF0aWNf
Y2FzdDxDR0Zsb2F0PihhZHZhbmNlSW5EZXNpZ25Vbml0cykgLyBDR0ZvbnRHZXRVbml0c1BlckVt
KGZvbnQpLCAwKTsKICAgICBob3Jpem9udGFsQWR2YW5jZSA9IENHU2l6ZUFwcGx5QWZmaW5lVHJh
bnNmb3JtKGhvcml6b250YWxBZHZhbmNlLCBtKTsKICAgICBhZHZhbmNlLndpZHRoID0gaG9yaXpv
bnRhbEFkdmFuY2Uud2lkdGg7CiAgICAgaWYgKCEoc3R5bGUgJiBrQ0dGb250UmVuZGVyaW5nU3R5
bGVTdWJwaXhlbFBvc2l0aW9uaW5nKSkKICAgICAgICAgYWR2YW5jZS53aWR0aCA9IHJvdW5kZihh
ZHZhbmNlLndpZHRoKTsKLQotICAgIENGUmVsZWFzZShoaGVhVGFibGUpOwotICAgIENGUmVsZWFz
ZShobXR4VGFibGUpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0Q0dXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dENHV2luLmNwcAppbmRleCAzMTdm
OGQwNDVkMzI5M2E3OGM3YTFiNzU1NDQ2ZDA1ZGU0OWEyN2MzLi5jZWRiMDJlYjllMWY5NWJmOTAz
MzExM2JhNjA1ZDljY2ZmZjg2OWU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0Q0dXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRDR1dpbi5jcHAKQEAgLTEw
NywxNiArMTA3LDE0IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpyZWxlYXNlV2luZG93c0NvbnRl
eHQoSERDIGhkYywgY29uc3QgSW50UmVjdCYgZHN0UmVjdCwgYm9vCiAKICAgICBBU1NFUlQocGl4
ZWxEYXRhLmJpdHNQZXJQaXhlbCgpID09IDMyKTsKIAotICAgIENHQ29udGV4dFJlZiBiaXRtYXBD
b250ZXh0ID0gQ0dCaXRtYXBDb250ZXh0Q3JlYXRlKHBpeGVsRGF0YS5idWZmZXIoKSwgcGl4ZWxE
YXRhLnNpemUoKS53aWR0aCgpLCBwaXhlbERhdGEuc2l6ZSgpLmhlaWdodCgpLCA4LAorICAgIGF1
dG8gYml0bWFwQ29udGV4dCA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlKHBpeGVsRGF0
YS5idWZmZXIoKSwgcGl4ZWxEYXRhLnNpemUoKS53aWR0aCgpLCBwaXhlbERhdGEuc2l6ZSgpLmhl
aWdodCgpLCA4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHBpeGVsRGF0YS5ieXRlc1BlclJvdygpLCBzUkdCQ29sb3JTcGFjZVJlZigpLCBr
Q0dCaXRtYXBCeXRlT3JkZXIzMkxpdHRsZSB8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN1cHBvcnRBbHBoYUJsZW5kID8ga0NHSW1hZ2VB
bHBoYVByZW11bHRpcGxpZWRGaXJzdCA6IGtDR0ltYWdlQWxwaGFOb25lU2tpcEZpcnN0KSk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN1
cHBvcnRBbHBoYUJsZW5kID8ga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRGaXJzdCA6IGtDR0lt
YWdlQWxwaGFOb25lU2tpcEZpcnN0KSkpOwogCi0gICAgQ0dJbWFnZVJlZiBpbWFnZSA9IENHQml0
bWFwQ29udGV4dENyZWF0ZUltYWdlKGJpdG1hcENvbnRleHQpOwotICAgIENHQ29udGV4dERyYXdJ
bWFnZShtX2RhdGEtPm1fY2dDb250ZXh0LmdldCgpLCBkc3RSZWN0LCBpbWFnZSk7CisgICAgYXV0
byBpbWFnZSA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlSW1hZ2UoYml0bWFwQ29udGV4
dC5nZXQoKSkpOworICAgIENHQ29udGV4dERyYXdJbWFnZShtX2RhdGEtPm1fY2dDb250ZXh0Lmdl
dCgpLCBkc3RSZWN0LCBpbWFnZS5nZXQoKSk7CiAgICAgCiAgICAgLy8gRGVsZXRlIGFsbCBvdXIg
anVuay4KLSAgICBDR0ltYWdlUmVsZWFzZShpbWFnZSk7Ci0gICAgQ0dDb250ZXh0UmVsZWFzZShi
aXRtYXBDb250ZXh0KTsKICAgICA6OkRlbGV0ZURDKGhkYyk7CiB9CiAKQEAgLTE0NywxNiArMTQ1
LDE2IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3Rm9jdXNSaW5nKGNvbnN0IFZlY3RvcjxG
bG9hdFJlY3Q+JiByZWN0cywgZmxvYXQgd2lkdGgsCiAgICAgb2Zmc2V0ICs9IHJhZGl1czsKICAg
ICBDR0NvbG9yUmVmIGNvbG9yUmVmID0gY29sb3IuaXNWYWxpZCgpID8gY2FjaGVkQ0dDb2xvcihj
b2xvcikgOiBudWxscHRyOwogCi0gICAgQ0dNdXRhYmxlUGF0aFJlZiBmb2N1c1JpbmdQYXRoID0g
Q0dQYXRoQ3JlYXRlTXV0YWJsZSgpOworICAgIGF1dG8gZm9jdXNSaW5nUGF0aCA9IGFkb3B0Q0Yo
Q0dQYXRoQ3JlYXRlTXV0YWJsZSgpKTsKICAgICB1bnNpZ25lZCByZWN0Q291bnQgPSByZWN0cy5z
aXplKCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHJlY3RDb3VudDsgaSsrKQotICAg
ICAgICBDR1BhdGhBZGRSZWN0KGZvY3VzUmluZ1BhdGgsIDAsIENHUmVjdEluc2V0KHJlY3RzW2ld
LCAtb2Zmc2V0LCAtb2Zmc2V0KSk7CisgICAgICAgIENHUGF0aEFkZFJlY3QoZm9jdXNSaW5nUGF0
aC5nZXQoKSwgMCwgQ0dSZWN0SW5zZXQocmVjdHNbaV0sIC1vZmZzZXQsIC1vZmZzZXQpKTsKIAog
ICAgIENHQ29udGV4dFJlZiBjb250ZXh0ID0gcGxhdGZvcm1Db250ZXh0KCk7CiAgICAgQ0dDb250
ZXh0U2F2ZUdTdGF0ZShjb250ZXh0KTsKIAogICAgIENHQ29udGV4dEJlZ2luUGF0aChjb250ZXh0
KTsKLSAgICBDR0NvbnRleHRBZGRQYXRoKGNvbnRleHQsIGZvY3VzUmluZ1BhdGgpOworICAgIENH
Q29udGV4dEFkZFBhdGgoY29udGV4dCwgZm9jdXNSaW5nUGF0aC5nZXQoKSk7CiAKICAgICAvLyBG
SVhNRTogV2UgY2xlYXIgdGhlIGZpbGwgY29sb3IgaGVyZSB0byBhdm9pZCBnZXR0aW5nIGEgYmxh
Y2sgZmlsbCB3aGVuIGRyYXdpbmcgdGhlIGZvY3VzIHJpbmcuCiAgICAgLy8gRmluZCBvdXQgZnJv
bSBDRyBpZiB0aGlzIGlzIHRoZWlyIGJ1Zy4KQEAgLTE2NSw4ICsxNjMsNiBAQCB2b2lkIEdyYXBo
aWNzQ29udGV4dDo6ZHJhd0ZvY3VzUmluZyhjb25zdCBWZWN0b3I8RmxvYXRSZWN0PiYgcmVjdHMs
IGZsb2F0IHdpZHRoLAogICAgIENHQ29udGV4dFNldEZvY3VzUmluZ1dpdGhDb2xvcihjb250ZXh0
LCByYWRpdXMsIGNvbG9yUmVmLCAwLCAoQ0ZEaWN0aW9uYXJ5UmVmKTApOwogICAgIENHQ29udGV4
dEZpbGxQYXRoKGNvbnRleHQpOwogCi0gICAgQ0dQYXRoUmVsZWFzZShmb2N1c1JpbmdQYXRoKTsK
LQogICAgIENHQ29udGV4dFJlc3RvcmVHU3RhdGUoY29udGV4dCk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNHV2luLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNHV2luLmNwcAppbmRleCA2
ZGFiZjI0MTNmZWQzNTc1OWFiMDM5NTNkYTQzNzIyYzhkNDE2ZmQ2Li5mOGExMGQ1YzQzNmU3MDYw
ODk4NzA3YmE4YjY1NDY0MWNlMmJkZjU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VDR1dpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQ0dXaW4uY3BwCkBAIC03MCwxMCArNzAsMTAgQEAgYm9v
bCBCaXRtYXBJbWFnZTo6Z2V0SEJJVE1BUE9mU2l6ZShIQklUTUFQIGJtcCwgY29uc3QgSW50U2l6
ZSogc2l6ZSkKICAgICBBU1NFUlQoYm1wSW5mby5ibUJpdHNQaXhlbCA9PSAzMik7CiAgICAgaW50
IGJ1ZmZlclNpemUgPSBibXBJbmZvLmJtV2lkdGhCeXRlcyAqIGJtcEluZm8uYm1IZWlnaHQ7CiAg
ICAgCi0gICAgQ0dDb250ZXh0UmVmIGNnQ29udGV4dCA9IENHQml0bWFwQ29udGV4dENyZWF0ZShi
bXBJbmZvLmJtQml0cywgYm1wSW5mby5ibVdpZHRoLCBibXBJbmZvLmJtSGVpZ2h0LAotICAgICAg
ICA4LCBibXBJbmZvLmJtV2lkdGhCeXRlcywgc1JHQkNvbG9yU3BhY2VSZWYoKSwga0NHQml0bWFw
Qnl0ZU9yZGVyMzJMaXR0bGUgfCBrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZEZpcnN0KTsKKyAg
ICBhdXRvIGNnQ29udGV4dCA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlKGJtcEluZm8u
Ym1CaXRzLCBibXBJbmZvLmJtV2lkdGgsIGJtcEluZm8uYm1IZWlnaHQsCisgICAgICAgIDgsIGJt
cEluZm8uYm1XaWR0aEJ5dGVzLCBzUkdCQ29sb3JTcGFjZVJlZigpLCBrQ0dCaXRtYXBCeXRlT3Jk
ZXIzMkxpdHRsZSB8IGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkRmlyc3QpKTsKICAgCi0gICAg
R3JhcGhpY3NDb250ZXh0IGdjKGNnQ29udGV4dCk7CisgICAgR3JhcGhpY3NDb250ZXh0IGdjKGNn
Q29udGV4dC5nZXQoKSk7CiAKICAgICBGbG9hdFNpemUgaW1hZ2VTaXplID0gQml0bWFwSW1hZ2U6
OnNpemUoKTsKICAgICBpZiAoc2l6ZSkKQEAgLTgxLDkgKzgxLDYgQEAgYm9vbCBCaXRtYXBJbWFn
ZTo6Z2V0SEJJVE1BUE9mU2l6ZShIQklUTUFQIGJtcCwgY29uc3QgSW50U2l6ZSogc2l6ZSkKICAg
ICBlbHNlCiAgICAgICAgIGRyYXcoZ2MsIEZsb2F0UmVjdCgwLjBmLCAwLjBmLCBibXBJbmZvLmJt
V2lkdGgsIGJtcEluZm8uYm1IZWlnaHQpLCBGbG9hdFJlY3QoMC4wZiwgMC4wZiwgaW1hZ2VTaXpl
LndpZHRoKCksIGltYWdlU2l6ZS5oZWlnaHQoKSksIHsgQ29tcG9zaXRlT3BlcmF0b3I6OkNvcHkg
fSk7CiAKLSAgICAvLyBEbyBjbGVhbnVwCi0gICAgQ0dDb250ZXh0UmVsZWFzZShjZ0NvbnRleHQp
OwotCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy9Vc2VyQWdlbnRJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
VXNlckFnZW50SU9TLm1tCmluZGV4IDNhNjM0NGNlZjQzN2Y0MzU1MTJlNGI5NDA1NTc0OTcxNDkz
MWUyYmEuLjNiNmRlMWVjMGYzZmM1ZDE0MmRjZWM2YTVhYTZkMzFjYzhkODBlNTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9Vc2VyQWdlbnRJT1MubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1VzZXJBZ2VudElPUy5tbQpAQCAtODksMTEgKzg5LDEw
IEBAIFN0cmluZyBzdGFuZGFyZFVzZXJBZ2VudFdpdGhBcHBsaWNhdGlvbk5hbWUoY29uc3QgU3Ry
aW5nJiBhcHBsaWNhdGlvbk5hbWUsIGNvbnN0CiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBkZXBy
ZWNhdGUgYW5kIGV2ZW50dWFsbHkgcmVtb3ZlIHRoaXMgb2Jzb2xldGUgVUEgb3ZlcnJpZGU7CiAg
ICAgLy8gc2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTc5Mjcg
Zm9yIGRldGFpbHMuCiAgICAgLy8gQ2hlY2sgdG8gc2VlIGlmIHRoZXJlIGlzIGEgdXNlciBhZ2Vu
dCBvdmVycmlkZSBmb3IgYWxsIFdlYktpdCBjbGllbnRzLgotICAgIENGUHJvcGVydHlMaXN0UmVm
IG92ZXJyaWRlID0gQ0ZQcmVmZXJlbmNlc0NvcHlBcHBWYWx1ZShDRlNUUigiVXNlckFnZW50Iiks
IENGU1RSKCJjb20uYXBwbGUuV2ViRm91bmRhdGlvbiIpKTsKKyAgICBhdXRvIG92ZXJyaWRlID0g
YWRvcHRDRihDRlByZWZlcmVuY2VzQ29weUFwcFZhbHVlKENGU1RSKCJVc2VyQWdlbnQiKSwgQ0ZT
VFIoImNvbS5hcHBsZS5XZWJGb3VuZGF0aW9uIikpKTsKICAgICBpZiAob3ZlcnJpZGUpIHsKLSAg
ICAgICAgaWYgKENGR2V0VHlwZUlEKG92ZXJyaWRlKSA9PSBDRlN0cmluZ0dldFR5cGVJRCgpKQot
ICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PE5TU3RyaW5nICo+KENGQnJpZGdpbmdSZWxl
YXNlKG92ZXJyaWRlKSk7Ci0gICAgICAgIENGUmVsZWFzZShvdmVycmlkZSk7CisgICAgICAgIGlm
IChDRkdldFR5cGVJRChvdmVycmlkZS5nZXQoKSkgPT0gQ0ZTdHJpbmdHZXRUeXBlSUQoKSkKKyAg
ICAgICAgICAgIHJldHVybiAoX19icmlkZ2UgTlNTdHJpbmcgKilvdmVycmlkZS5nZXQoKTsKICAg
ICB9CiAKICAgICBTdHJpbmcgb3NWZXJzaW9uID0gdXNlckFnZW50T1NWZXJzaW9uLmlzRW1wdHko
KSAgPyBzeXN0ZW1NYXJrZXRpbmdWZXJzaW9uRm9yVXNlckFnZW50U3RyaW5nKCkgOiB1c2VyQWdl
bnRPU1ZlcnNpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2Fr
L1dlYkNvcmVUaHJlYWQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dlYkNv
cmVUaHJlYWQubW0KaW5kZXggNjYwMDc2YWRmNzY2Mzc0ZjQ5ZDVlZTVhOWIyOTNlOTlkNjRmY2Rk
Yy4uOTMyYzc4MmM2YmNiM2IyZDY3ZTkzNDAyZWM0MjFhMzQyZDM2YmY0MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV2ViQ29yZVRocmVhZC5tbQpAQCAtMjY2LDEw
ICsyNjYsOCBAQCBzdGF0aWMgdm9pZCBTZW5kRGVsZWdhdGVNZXNzYWdlKFJldGFpblB0cjxOU0lu
dm9jYXRpb24+JiYgaW52b2NhdGlvbikKICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAg
ICAgICAgICAgIGRlbGVnYXRlSW5mb3JtYXRpb24gPSBOU1N0cmluZ0Zyb21TZWxlY3RvcihbZGVs
ZWdhdGVJbnZvY2F0aW9uKCkgc2VsZWN0b3JdKTsKICAgICAKLSAgICAgICAgICAgICAgICBDRlN0
cmluZ1JlZiBtb2RlID0gQ0ZSdW5Mb29wQ29weUN1cnJlbnRNb2RlKENGUnVuTG9vcEdldE1haW4o
KSk7Ci0gICAgICAgICAgICAgICAgTlNMb2coQCIlczogZGVsZWdhdGUgKCVAKSBmYWlsZWQgdG8g
cmV0dXJuIGFmdGVyIHdhaXRpbmcgJWYgc2Vjb25kcy4gbWFpbiBydW4gbG9vcCBtb2RlOiAlQCIs
IF9fUFJFVFRZX0ZVTkNUSU9OX18sIGRlbGVnYXRlSW5mb3JtYXRpb24sIERlbGVnYXRlV2FpdElu
dGVydmFsLnNlY29uZHMoKSwgbW9kZSk7Ci0gICAgICAgICAgICAgICAgaWYgKG1vZGUpCi0gICAg
ICAgICAgICAgICAgICAgIENGUmVsZWFzZShtb2RlKTsKKyAgICAgICAgICAgICAgICBhdXRvIG1v
ZGUgPSBhZG9wdENGKENGUnVuTG9vcENvcHlDdXJyZW50TW9kZShDRlJ1bkxvb3BHZXRNYWluKCkp
KTsKKyAgICAgICAgICAgICAgICBOU0xvZyhAIiVzOiBkZWxlZ2F0ZSAoJUApIGZhaWxlZCB0byBy
ZXR1cm4gYWZ0ZXIgd2FpdGluZyAlZiBzZWNvbmRzLiBtYWluIHJ1biBsb29wIG1vZGU6ICVAIiwg
X19QUkVUVFlfRlVOQ1RJT05fXywgZGVsZWdhdGVJbmZvcm1hdGlvbiwgRGVsZWdhdGVXYWl0SW50
ZXJ2YWwuc2Vjb25kcygpLCBtb2RlLmdldCgpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQog
ICAgICAgICBkZWxlZ2F0ZUxvY2sudW5sb2NrKCk7CkBAIC02MzQsMTYgKzYzMiwxNCBAQCBzdGF0
aWMgdm9pZCogUnVuV2ViVGhyZWFkKHZvaWQqKQogICAgIHdlYlRocmVhZFJ1bkxvb3AgPSBDRlJ1
bkxvb3BHZXRDdXJyZW50KCk7CiAgICAgd2ViVGhyZWFkTlNSdW5Mb29wKCkgPSBbTlNSdW5Mb29w
IGN1cnJlbnRSdW5Mb29wXTsKIAotICAgIENGUnVuTG9vcE9ic2VydmVyUmVmIHdlYlJ1bkxvb3BM
b2NrT2JzZXJ2ZXJSZWYgPSBDRlJ1bkxvb3BPYnNlcnZlckNyZWF0ZShudWxscHRyLCBrQ0ZSdW5M
b29wQmVmb3JlVGltZXJzIHwga0NGUnVuTG9vcEJlZm9yZVNvdXJjZXMgfCBrQ0ZSdW5Mb29wQWZ0
ZXJXYWl0aW5nLCBZRVMsIDAsIFdlYlJ1bkxvb3BMb2NrLCBudWxscHRyKTsKLSAgICBDRlJ1bkxv
b3BBZGRPYnNlcnZlcih3ZWJUaHJlYWRSdW5Mb29wLCB3ZWJSdW5Mb29wTG9ja09ic2VydmVyUmVm
LCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMpOwotICAgIENGUmVsZWFzZSh3ZWJSdW5Mb29wTG9ja09i
c2VydmVyUmVmKTsKKyAgICBhdXRvIHdlYlJ1bkxvb3BMb2NrT2JzZXJ2ZXJSZWYgPSBhZG9wdENG
KENGUnVuTG9vcE9ic2VydmVyQ3JlYXRlKG51bGxwdHIsIGtDRlJ1bkxvb3BCZWZvcmVUaW1lcnMg
fCBrQ0ZSdW5Mb29wQmVmb3JlU291cmNlcyB8IGtDRlJ1bkxvb3BBZnRlcldhaXRpbmcsIFlFUywg
MCwgV2ViUnVuTG9vcExvY2ssIG51bGxwdHIpKTsKKyAgICBDRlJ1bkxvb3BBZGRPYnNlcnZlcih3
ZWJUaHJlYWRSdW5Mb29wLCB3ZWJSdW5Mb29wTG9ja09ic2VydmVyUmVmLmdldCgpLCBrQ0ZSdW5M
b29wQ29tbW9uTW9kZXMpOwogICAgIAogICAgIFdlYlRocmVhZEluaXRSdW5RdWV1ZSgpOwogCiAg
ICAgLy8gV2UgbXVzdCBoYXZlIHRoZSBsb2NrIHdoZW4gQ0EgcGFpbnRzIGluIHRoZSB3ZWIgdGhy
ZWFkLiBDQSBjb21taXRzIGF0IDIwMDAwMDAgc28gd2UgdXNlIGxhcmdlciBvcmRlciBudW1iZXIg
dGhhbiB0aGF0IHRvIGZyZWUgdGhlIGxvY2suCi0gICAgQ0ZSdW5Mb29wT2JzZXJ2ZXJSZWYgd2Vi
UnVuTG9vcFVubG9ja09ic2VydmVyUmVmID0gQ0ZSdW5Mb29wT2JzZXJ2ZXJDcmVhdGUobnVsbHB0
ciwga0NGUnVuTG9vcEJlZm9yZVdhaXRpbmcgfCBrQ0ZSdW5Mb29wRXhpdCwgWUVTLCAyNTAwMDAw
LCBXZWJSdW5Mb29wVW5sb2NrLCBudWxscHRyKTsgICAgCi0gICAgQ0ZSdW5Mb29wQWRkT2JzZXJ2
ZXIod2ViVGhyZWFkUnVuTG9vcCwgd2ViUnVuTG9vcFVubG9ja09ic2VydmVyUmVmLCBrQ0ZSdW5M
b29wQ29tbW9uTW9kZXMpOwotICAgIENGUmVsZWFzZSh3ZWJSdW5Mb29wVW5sb2NrT2JzZXJ2ZXJS
ZWYpOyAgICAKKyAgICBhdXRvIHdlYlJ1bkxvb3BVbmxvY2tPYnNlcnZlclJlZiA9IGFkb3B0Q0Yo
Q0ZSdW5Mb29wT2JzZXJ2ZXJDcmVhdGUobnVsbHB0ciwga0NGUnVuTG9vcEJlZm9yZVdhaXRpbmcg
fCBrQ0ZSdW5Mb29wRXhpdCwgWUVTLCAyNTAwMDAwLCBXZWJSdW5Mb29wVW5sb2NrLCBudWxscHRy
KSk7CisgICAgQ0ZSdW5Mb29wQWRkT2JzZXJ2ZXIod2ViVGhyZWFkUnVuTG9vcCwgd2ViUnVuTG9v
cFVubG9ja09ic2VydmVyUmVmLmdldCgpLCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMpOwogCiAgICAg
Q0ZSdW5Mb29wU291cmNlQ29udGV4dCBSZWxlYXNlU291cmNlQ29udGV4dCA9IHswLCBudWxscHRy
LCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBu
dWxscHRyLCBIYW5kbGVXZWJUaHJlYWRSZWxlYXNlU291cmNlfTsKICAgICBXZWJUaHJlYWRSZWxl
YXNlU291cmNlID0gQ0ZSdW5Mb29wU291cmNlQ3JlYXRlKG51bGxwdHIsIC0xLCAmUmVsZWFzZVNv
dXJjZUNvbnRleHQpOwpAQCAtODIzLDkgKzgxOSw4IEBAIHZvaWQgV2ViVGhyZWFkVW5sb2NrR3Vh
cmRGb3JNYWlsKHZvaWQpCiB7CiAgICAgQVNTRVJUKCFXZWJUaHJlYWRJc0N1cnJlbnQoKSk7CiAK
LSAgICBDRlJ1bkxvb3BPYnNlcnZlclJlZiBtYWluUnVuTG9vcFVubG9ja0d1YXJkT2JzZXJ2ZXIg
PSBDRlJ1bkxvb3BPYnNlcnZlckNyZWF0ZShudWxscHRyLCBrQ0ZSdW5Mb29wRW50cnksIFlFUywg
MCwgTWFpblJ1bkxvb3BVbmxvY2tHdWFyZCwgbnVsbHB0cik7Ci0gICAgQ0ZSdW5Mb29wQWRkT2Jz
ZXJ2ZXIoQ0ZSdW5Mb29wR2V0TWFpbigpLCBtYWluUnVuTG9vcFVubG9ja0d1YXJkT2JzZXJ2ZXIs
IGtDRlJ1bkxvb3BDb21tb25Nb2Rlcyk7Ci0gICAgQ0ZSZWxlYXNlKG1haW5SdW5Mb29wVW5sb2Nr
R3VhcmRPYnNlcnZlcik7CisgICAgYXV0byBtYWluUnVuTG9vcFVubG9ja0d1YXJkT2JzZXJ2ZXIg
PSBhZG9wdENGKENGUnVuTG9vcE9ic2VydmVyQ3JlYXRlKG51bGxwdHIsIGtDRlJ1bkxvb3BFbnRy
eSwgWUVTLCAwLCBNYWluUnVuTG9vcFVubG9ja0d1YXJkLCBudWxscHRyKSk7CisgICAgQ0ZSdW5M
b29wQWRkT2JzZXJ2ZXIoQ0ZSdW5Mb29wR2V0TWFpbigpLCBtYWluUnVuTG9vcFVubG9ja0d1YXJk
T2JzZXJ2ZXIuZ2V0KCksIGtDRlJ1bkxvb3BDb21tb25Nb2Rlcyk7CiB9CiAKIHZvaWQgX1dlYlRo
cmVhZFVubG9jaygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxh
dGZvcm1TcGVlY2hTeW50aGVzaXplck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTWFjLm1tCmluZGV4IDI5NThmMWJjZTM5ZWNlYzk4
NmRiODg1MjlmMTU4ZDcyMmZhZDY2Y2EuLmEyODVjMjJiMjIxMWNmYTY5MWE4ZTI4YjJkOTEwOTY5
ZDk5MDZlOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9y
bVNwZWVjaFN5bnRoZXNpemVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTWFjLm1tCkBAIC0yMTQsMTIgKzIxNCwxMiBAQCBQ
bGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyOjp+UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcigpCiAg
ICAgW21fcGxhdGZvcm1TcGVlY2hXcmFwcGVyLmdldCgpIGludmFsaWRhdGVdOwogfQogCi1zdGF0
aWMgTlNBcnJheSAqc3BlZWNoU3ludGhlc2lzR2V0Vm9pY2VJZGVudGlmaWVycygpCitzdGF0aWMg
UmV0YWluUHRyPENGQXJyYXlSZWY+IHNwZWVjaFN5bnRoZXNpc0dldFZvaWNlSWRlbnRpZmllcnMo
KQogewogICAgIC8vIEdldCBhbGwgdGhlIHZvaWNlcyBvZmZlcmVkIGJ5IFRUUy4KICAgICAvLyBC
eSBkZWZhdWx0IHNwZWVjaCBvbmx5IHJldHVybnMgInByZW1pdW0iIHZvaWNlcywgd2hpY2ggZG9l
cyBub3QgaW5jbHVkZSBhbGwgdGhlCiAgICAgLy8gaW50ZXJuYXRpb25hbCB2b2ljZXMuIFRoaXMg
YWxsb3dzIHVzIHRvIG9mZmVyIHNwZWVjaCBzeW50aGVzaXMgZm9yIGFsbCBzdXBwb3J0ZWQgbGFu
Z3VhZ2VzLgotICAgIHJldHVybiBDRkJyaWRnaW5nUmVsZWFzZShDb3B5U3BlZWNoU3ludGhlc2lz
Vm9pY2VzRm9yTW9kZSgoX19icmlkZ2UgQ0ZBcnJheVJlZilAWyBAIlZvaWNlR3JvdXBEZWZhdWx0
IiwgQCJWb2ljZUdyb3VwQ29tcGFjdCIgXSkpOworICAgIHJldHVybiBhZG9wdENGKENvcHlTcGVl
Y2hTeW50aGVzaXNWb2ljZXNGb3JNb2RlKChfX2JyaWRnZSBDRkFycmF5UmVmKUBbIEAiVm9pY2VH
cm91cERlZmF1bHQiLCBAIlZvaWNlR3JvdXBDb21wYWN0IiBdKSk7CiB9CiAKIHN0YXRpYyBOU1N0
cmluZyAqc3BlZWNoU3ludGhlc2lzR2V0RGVmYXVsdFZvaWNlSWRlbnRpZmllckZvckxvY2FsZShO
U0xvY2FsZSAqdXNlckxvY2FsZSkKQEAgLTIyNywxNSArMjI3LDE1IEBAIHN0YXRpYyBOU1N0cmlu
ZyAqc3BlZWNoU3ludGhlc2lzR2V0RGVmYXVsdFZvaWNlSWRlbnRpZmllckZvckxvY2FsZShOU0xv
Y2FsZSAqdXNlCiAgICAgaWYgKCF1c2VyTG9jYWxlKQogICAgICAgICByZXR1cm4gbmlsOwogCi0g
ICAgcmV0dXJuIChfX2JyaWRnZSBOU1N0cmluZyAqKUdldElkZW50aWZpZXJTdHJpbmdGb3JQcmVm
ZXJyZWRWb2ljZUluTGlzdFdpdGhMb2NhbGUoKF9fYnJpZGdlIENGQXJyYXlSZWYpc3BlZWNoU3lu
dGhlc2lzR2V0Vm9pY2VJZGVudGlmaWVycygpLCAoX19icmlkZ2UgQ0ZMb2NhbGVSZWYpdXNlckxv
Y2FsZSk7CisgICAgcmV0dXJuIChfX2JyaWRnZSBOU1N0cmluZyAqKUdldElkZW50aWZpZXJTdHJp
bmdGb3JQcmVmZXJyZWRWb2ljZUluTGlzdFdpdGhMb2NhbGUoc3BlZWNoU3ludGhlc2lzR2V0Vm9p
Y2VJZGVudGlmaWVycygpLmdldCgpLCAoX19icmlkZ2UgQ0ZMb2NhbGVSZWYpdXNlckxvY2FsZSk7
CiB9CiAKIHZvaWQgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcjo6aW5pdGlhbGl6ZVZvaWNlTGlz
dCgpCiB7Ci0gICAgTlNBcnJheSAqYXZhaWxhYmxlVm9pY2VzID0gc3BlZWNoU3ludGhlc2lzR2V0
Vm9pY2VJZGVudGlmaWVycygpOwotICAgIE5TVUludGVnZXIgY291bnQgPSBbYXZhaWxhYmxlVm9p
Y2VzIGNvdW50XTsKKyAgICBhdXRvIGF2YWlsYWJsZVZvaWNlcyA9IHNwZWVjaFN5bnRoZXNpc0dl
dFZvaWNlSWRlbnRpZmllcnMoKTsKKyAgICBOU1VJbnRlZ2VyIGNvdW50ID0gWyhfX2JyaWRnZSBO
U0FycmF5ICopYXZhaWxhYmxlVm9pY2VzLmdldCgpIGNvdW50XTsKICAgICBmb3IgKE5TVUludGVn
ZXIgayA9IDA7IGsgPCBjb3VudDsgaysrKSB7Ci0gICAgICAgIE5TU3RyaW5nICp2b2ljZU5hbWUg
PSBbYXZhaWxhYmxlVm9pY2VzIG9iamVjdEF0SW5kZXg6a107CisgICAgICAgIE5TU3RyaW5nICp2
b2ljZU5hbWUgPSBbKF9fYnJpZGdlIE5TQXJyYXkgKilhdmFpbGFibGVWb2ljZXMuZ2V0KCkgb2Jq
ZWN0QXRJbmRleDprXTsKICAgICAgICAgTlNEaWN0aW9uYXJ5ICphdHRyaWJ1dGVzID0gW05TU3Bl
ZWNoU3ludGhlc2l6ZXIgYXR0cmlidXRlc0ZvclZvaWNlOnZvaWNlTmFtZV07CiAKICAgICAgICAg
TlNTdHJpbmcgKnZvaWNlVVJJID0gW2F0dHJpYnV0ZXMgb2JqZWN0Rm9yS2V5Ok5TVm9pY2VJZGVu
dGlmaWVyXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbHVnaW5C
bG9ja2xpc3QubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGx1Z2luQmxvY2tsaXN0
Lm1tCmluZGV4IGE4MGI0YWZlYzc2MWQ4Nzk4N2ZmOTEyMDczNDYwYjkzOWU0MGY3NGYuLjEzNmY2
ZWRmNjliNGRjNmRkNzkyYmExM2M0YzhmY2RlYzhkOGU0MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9QbHVnaW5CbG9ja2xpc3QubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL1BsdWdpbkJsb2NrbGlzdC5tbQpAQCAtNjksOCArNjksOCBAQCBib29s
IFBsdWdpbkJsb2NrbGlzdDo6aXNQbHVnaW5VcGRhdGVBdmFpbGFibGUoTlNTdHJpbmcgKmJ1bmRs
ZUlkZW50aWZpZXIpCiAKIHN0ZDo6dW5pcXVlX3B0cjxQbHVnaW5CbG9ja2xpc3Q+IFBsdWdpbkJs
b2NrbGlzdDo6Y3JlYXRlKE5TRGljdGlvbmFyeSAqcHJvcGVydHlMaXN0KQogewotICAgIENGRGlj
dGlvbmFyeVJlZiBzeXN0ZW1WZXJzaW9uRGljdGlvbmFyeSA9IF9DRkNvcHlTeXN0ZW1WZXJzaW9u
RGljdGlvbmFyeSgpOwotICAgIENGU3RyaW5nUmVmIG9zVmVyc2lvbiA9IHN0YXRpY19jYXN0PENG
U3RyaW5nUmVmPihDRkRpY3Rpb25hcnlHZXRWYWx1ZShzeXN0ZW1WZXJzaW9uRGljdGlvbmFyeSwg
X2tDRlN5c3RlbVZlcnNpb25Qcm9kdWN0VmVyc2lvbktleSkpOworICAgIGF1dG8gc3lzdGVtVmVy
c2lvbkRpY3Rpb25hcnkgPSBhZG9wdENGKF9DRkNvcHlTeXN0ZW1WZXJzaW9uRGljdGlvbmFyeSgp
KTsKKyAgICBDRlN0cmluZ1JlZiBvc1ZlcnNpb24gPSBzdGF0aWNfY2FzdDxDRlN0cmluZ1JlZj4o
Q0ZEaWN0aW9uYXJ5R2V0VmFsdWUoc3lzdGVtVmVyc2lvbkRpY3Rpb25hcnkuZ2V0KCksIF9rQ0ZT
eXN0ZW1WZXJzaW9uUHJvZHVjdFZlcnNpb25LZXkpKTsKIAogICAgIE5TRGljdGlvbmFyeSAqZGlj
dGlvbmFyeSA9IFtwcm9wZXJ0eUxpc3Qgb2JqZWN0Rm9yS2V5OkAiUGx1Z0luQmxvY2tsaXN0Il07
CiAKQEAgLTExMiw4ICsxMTIsNiBAQCBzdGQ6OnVuaXF1ZV9wdHI8UGx1Z2luQmxvY2tsaXN0PiBQ
bHVnaW5CbG9ja2xpc3Q6OmNyZWF0ZShOU0RpY3Rpb25hcnkgKnByb3BlcnR5TAogICAgICAgICB9
CiAgICAgfQogCi0gICAgQ0ZSZWxlYXNlKHN5c3RlbVZlcnNpb25EaWN0aW9uYXJ5KTsKLQogICAg
IHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8UGx1Z2luQmxvY2tsaXN0PihuZXcgUGx1Z2luQmxvY2ts
aXN0KGJ1bmRsZUlEVG9NaW5pbXVtU2VjdXJlVmVyc2lvbiwgYnVuZGxlSURUb01pbmltdW1Db21w
YXRpYmxlVmVyc2lvbiwgYnVuZGxlSURUb0Jsb2NrZWRWZXJzaW9ucywgYnVuZGxlSURzV2l0aEF2
YWlsYWJsZVVwZGF0ZXMpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL1dlYkdMQmxvY2tsaXN0Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dl
YkdMQmxvY2tsaXN0Lm1tCmluZGV4IDZjMWQyNmU0NzlhMDI4MTdiZGQ1YjE4NmZhYTJhYTc2YTVl
Y2JkYmMuLmQwNGVlMjE3NGQxZGJjNzdkN2NhZTg1YTNmYWEyNWIwMTgxNTc4NDUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJHTEJsb2NrbGlzdC5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViR0xCbG9ja2xpc3QubW0KQEAgLTE2OCwxMCAr
MTY4LDkgQEAgc3RhdGljIGJvb2wgbWF0Y2hlc0J1aWxkSW5mbyhPU0J1aWxkSW5mbyBtYWNoaW5l
SW5mbywgT1NCdWlsZEluZm8gYmxvY2tJbmZvLCBXZWIKIAogc3RkOjp1bmlxdWVfcHRyPFdlYkdM
QmxvY2tsaXN0PiBXZWJHTEJsb2NrbGlzdDo6Y3JlYXRlKE5TRGljdGlvbmFyeSAqcHJvcGVydHlM
aXN0KQogewotICAgIENGRGljdGlvbmFyeVJlZiBzeXN0ZW1WZXJzaW9uRGljdGlvbmFyeSA9IF9D
RkNvcHlTeXN0ZW1WZXJzaW9uRGljdGlvbmFyeSgpOwotICAgIENGU3RyaW5nUmVmIG9zQnVpbGQg
PSBzdGF0aWNfY2FzdDxDRlN0cmluZ1JlZj4oQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoc3lzdGVtVmVy
c2lvbkRpY3Rpb25hcnksIF9rQ0ZTeXN0ZW1WZXJzaW9uQnVpbGRWZXJzaW9uS2V5KSk7CisgICAg
YXV0byBzeXN0ZW1WZXJzaW9uRGljdGlvbmFyeSA9IGFkb3B0Q0YoX0NGQ29weVN5c3RlbVZlcnNp
b25EaWN0aW9uYXJ5KCkpOworICAgIENGU3RyaW5nUmVmIG9zQnVpbGQgPSBzdGF0aWNfY2FzdDxD
RlN0cmluZ1JlZj4oQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoc3lzdGVtVmVyc2lvbkRpY3Rpb25hcnku
Z2V0KCksIF9rQ0ZTeXN0ZW1WZXJzaW9uQnVpbGRWZXJzaW9uS2V5KSk7CiAgICAgT1NCdWlsZElu
Zm8gYnVpbGRJbmZvID0gYnVpbGRJbmZvRnJvbU9TQnVpbGRTdHJpbmcoKF9fYnJpZGdlIE5TU3Ry
aW5nICopb3NCdWlsZCk7Ci0gICAgQ0ZSZWxlYXNlKHN5c3RlbVZlcnNpb25EaWN0aW9uYXJ5KTsK
IAogICAgIGlmICghYnVpbGRJbmZvLm1ham9yKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvQXVk
aW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFyZWNvcmRlci9jb2NvYS9BdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IubW0KaW5kZXggN2Uy
ZjZhYTUyZGNkZTMyMTQ3MDE1OTE2NmU1NDhhMGNjOWFmNGY1My4uYzc5YTQ3OTYyNDAyYmIxMzI5
MzNjODdiZmU5OGQyMzdmNTZlZTA2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFyZWNvcmRlci9jb2NvYS9BdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9BdWRpb1NhbXBs
ZUJ1ZmZlckNvbXByZXNzb3IubW0KQEAgLTIyNyw5ICsyMjcsOCBAQCB2b2lkIEF1ZGlvU2FtcGxl
QnVmZmVyQ29tcHJlc3Nvcjo6YXR0YWNoUHJpbWluZ1RyaW1zSWZOZWVkZWQoQ01TYW1wbGVCdWZm
ZXJSZWYgYgogICAgIGlmIChDTVRJTUVfQ09NUEFSRV9JTkxJTkUoa0NNVGltZVplcm8sIDwsIG1f
cmVtYWluaW5nUHJpbWVEdXJhdGlvbikpIHsKICAgICAgICAgQ01UaW1lIHNhbXBsZUR1cmF0aW9u
ID0gQ01TYW1wbGVCdWZmZXJHZXREdXJhdGlvbihidWZmZXIpOwogICAgICAgICBDTVRpbWUgdHJp
bUR1cmF0aW9uID0gQ01UaW1lTWluaW11bShzYW1wbGVEdXJhdGlvbiwgbV9yZW1haW5pbmdQcmlt
ZUR1cmF0aW9uKTsKLSAgICAgICAgQ0ZEaWN0aW9uYXJ5UmVmIHRyaW1BdFN0YXJ0RGljdCA9IENN
VGltZUNvcHlBc0RpY3Rpb25hcnkodHJpbUR1cmF0aW9uLCBrQ0ZBbGxvY2F0b3JEZWZhdWx0KTsK
LSAgICAgICAgQ01TZXRBdHRhY2htZW50KGJ1ZmZlciwga0NNU2FtcGxlQnVmZmVyQXR0YWNobWVu
dEtleV9UcmltRHVyYXRpb25BdFN0YXJ0LCB0cmltQXRTdGFydERpY3QsIGtDTUF0dGFjaG1lbnRN
b2RlX1Nob3VsZFByb3BhZ2F0ZSk7Ci0gICAgICAgIENGUmVsZWFzZSh0cmltQXRTdGFydERpY3Qp
OworICAgICAgICBhdXRvIHRyaW1BdFN0YXJ0RGljdCA9IGFkb3B0Q0YoQ01UaW1lQ29weUFzRGlj
dGlvbmFyeSh0cmltRHVyYXRpb24sIGtDRkFsbG9jYXRvckRlZmF1bHQpKTsKKyAgICAgICAgQ01T
ZXRBdHRhY2htZW50KGJ1ZmZlciwga0NNU2FtcGxlQnVmZmVyQXR0YWNobWVudEtleV9UcmltRHVy
YXRpb25BdFN0YXJ0LCB0cmltQXRTdGFydERpY3QuZ2V0KCksIGtDTUF0dGFjaG1lbnRNb2RlX1No
b3VsZFByb3BhZ2F0ZSk7CiAgICAgICAgIG1fcmVtYWluaW5nUHJpbWVEdXJhdGlvbiA9IENNVGlt
ZVN1YnRyYWN0KG1fcmVtYWluaW5nUHJpbWVEdXJhdGlvbiwgdHJpbUR1cmF0aW9uKTsKICAgICB9
CiB9CkBAIC0zNDcsNyArMzQ2LDcgQEAgT1NTdGF0dXMgQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVz
c29yOjpwcm92aWRlU291cmNlRGF0YU51bU91dHB1dFBhY2tldHMoVUludDMyKgogICAgICAgICAg
ICAgICAgICAgICBicmVhazsKIAogICAgICAgICAgICAgICAgIGF1dG8gc2FtcGxlQnVmZmVyID0g
YWRvcHRDRigoQ01TYW1wbGVCdWZmZXJSZWYpKGNvbnN0X2Nhc3Q8dm9pZCo+KENNQnVmZmVyUXVl
dWVEZXF1ZXVlQW5kUmV0YWluKG1faW5wdXRCdWZmZXJRdWV1ZS5nZXQoKSkpKSk7Ci0gICAgICAg
ICAgICAgICAgbV9zYW1wbGVCbG9ja0J1ZmZlciA9IGFkb3B0Q0YoKENNQmxvY2tCdWZmZXJSZWYp
KGNvbnN0X2Nhc3Q8dm9pZCo+KENGUmV0YWluKENNU2FtcGxlQnVmZmVyR2V0RGF0YUJ1ZmZlcihz
YW1wbGVCdWZmZXIuZ2V0KCkpKSkpKTsKKyAgICAgICAgICAgICAgICBtX3NhbXBsZUJsb2NrQnVm
ZmVyID0gQ01TYW1wbGVCdWZmZXJHZXREYXRhQnVmZmVyKHNhbXBsZUJ1ZmZlci5nZXQoKSk7CiAg
ICAgICAgICAgICAgICAgaWYgKCFtX3NhbXBsZUJsb2NrQnVmZmVyKSB7CiAgICAgICAgICAgICAg
ICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAiQXVkaW9TYW1wbGVCdWZmZXJD
b21wcmVzc29yIENNU2FtcGxlQnVmZmVyR2V0RGF0YUJ1ZmZlciBmYWlsZWQiKTsKICAgICAgICAg
ICAgICAgICAgICAgbV9zYW1wbGVCbG9ja0J1ZmZlclNpemUgPSAwOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9WaWRlb1NhbXBsZUJ1ZmZl
ckNvbXByZXNzb3IubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2Nv
Y29hL1ZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5tbQppbmRleCAyODcxNTEzODA3Y2FkNjhj
YmRmYzNmYmU0ZWViMTdmNDA2MzM5MTkzLi5lMDNlNzcwZjBjYWE5YmRjNmIxNmQ1YWM3NGJiMzc4
NmRmOGY0YWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29y
ZGVyL2NvY29hL1ZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL1ZpZGVvU2FtcGxlQnVmZmVyQ29tcHJl
c3Nvci5tbQpAQCAtMTA5LDkgKzEwOSw4IEBAIHZvaWQgVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVz
c29yOjp2aWRlb0NvbXByZXNzaW9uQ2FsbGJhY2sodm9pZCAqcmVmQ29uLCB2b2lkKiwKIHN0YXRp
YyBpbmxpbmUgT1NTdGF0dXMgc2V0Q29tcHJlc3Npb25TZXNzaW9uUHJvcGVydHkoVlRDb21wcmVz
c2lvblNlc3Npb25SZWYgdnRTZXNzaW9uLCBDRlN0cmluZ1JlZiBrZXksIHVpbnQzMl90IHZhbHVl
KQogewogICAgIGludDY0X3QgdmFsdWU2NCA9IHZhbHVlOwotICAgIENGTnVtYmVyUmVmIGNmVmFs
dWUgPSBDRk51bWJlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrQ0ZOdW1iZXJTSW50NjRU
eXBlLCAmdmFsdWU2NCk7Ci0gICAgT1NTdGF0dXMgc3RhdHVzID0gVlRTZXNzaW9uU2V0UHJvcGVy
dHkodnRTZXNzaW9uLCBrZXksIGNmVmFsdWUpOwotICAgIENGUmVsZWFzZShjZlZhbHVlKTsKKyAg
ICBhdXRvIGNmVmFsdWUgPSBhZG9wdENGKENGTnVtYmVyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1
bHQsIGtDRk51bWJlclNJbnQ2NFR5cGUsICZ2YWx1ZTY0KSk7CisgICAgT1NTdGF0dXMgc3RhdHVz
ID0gVlRTZXNzaW9uU2V0UHJvcGVydHkodnRTZXNzaW9uLCBrZXksIGNmVmFsdWUuZ2V0KCkpOwog
ICAgIHJldHVybiBzdGF0dXM7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY2YvRm9ybURhdGFTdHJlYW1DRk5ldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NmL0Zvcm1EYXRhU3RyZWFtQ0ZOZXQuY3BwCmluZGV4IDNmNjhlYWQz
NDEyNjJmNTZiZmUyMjEyMDMyYmU2ODM3NmU4YzgwN2YuLmQ3ZGQ2M2ZlYWJmYjAzYzAxOTJmMjQ5
Zjg2OGEzNDEwMDNjYTQ1ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY2YvRm9ybURhdGFTdHJlYW1DRk5ldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jZi9Gb3JtRGF0YVN0cmVhbUNGTmV0LmNwcApAQCAtMTAzLDcgKzEwMyw3
IEBAIHN0cnVjdCBGb3JtU3RyZWFtRmllbGRzIHsKICAgICBGb3JtRGF0YUZvclVwbG9hZCBkYXRh
OwogICAgIFNjaGVkdWxlUGFpckhhc2hTZXQgc2NoZWR1bGVkUnVuTG9vcFBhaXJzOwogICAgIFZl
Y3RvcjxGb3JtRGF0YUVsZW1lbnQ+IHJlbWFpbmluZ0VsZW1lbnRzOyAvLyBpbiByZXZlcnNlIG9y
ZGVyCi0gICAgQ0ZSZWFkU3RyZWFtUmVmIGN1cnJlbnRTdHJlYW0geyBudWxscHRyIH07CisgICAg
UmV0YWluUHRyPENGUmVhZFN0cmVhbVJlZj4gY3VycmVudFN0cmVhbTsKICAgICBsb25nIGxvbmcg
Y3VycmVudFN0cmVhbVJhbmdlTGVuZ3RoIHsgQmxvYkRhdGFJdGVtOjp0b0VuZE9mRmlsZSB9Owog
ICAgIE1hbGxvY1B0cjxjaGFyLCBXVEY6OlZlY3Rvck1hbGxvYz4gY3VycmVudERhdGE7CiAgICAg
Q0ZSZWFkU3RyZWFtUmVmIGZvcm1TdHJlYW0geyBudWxscHRyIH07CkBAIC0xMTcsMTAgKzExNyw5
IEBAIHN0YXRpYyB2b2lkIGNsb3NlQ3VycmVudFN0cmVhbShGb3JtU3RyZWFtRmllbGRzKiBmb3Jt
KQogICAgIEFTU0VSVChmb3JtLT5zdHJlYW1Jc0JlaW5nT3BlbmVkT3JDbG9zZWRMb2NrLmlzSGVs
ZCgpKTsKIAogICAgIGlmIChmb3JtLT5jdXJyZW50U3RyZWFtKSB7Ci0gICAgICAgIENGUmVhZFN0
cmVhbUNsb3NlKGZvcm0tPmN1cnJlbnRTdHJlYW0pOwotICAgICAgICBDRlJlYWRTdHJlYW1TZXRD
bGllbnQoZm9ybS0+Y3VycmVudFN0cmVhbSwga0NGU3RyZWFtRXZlbnROb25lLCAwLCAwKTsKLSAg
ICAgICAgQ0ZSZWxlYXNlKGZvcm0tPmN1cnJlbnRTdHJlYW0pOwotICAgICAgICBmb3JtLT5jdXJy
ZW50U3RyZWFtID0gMDsKKyAgICAgICAgQ0ZSZWFkU3RyZWFtQ2xvc2UoZm9ybS0+Y3VycmVudFN0
cmVhbS5nZXQoKSk7CisgICAgICAgIENGUmVhZFN0cmVhbVNldENsaWVudChmb3JtLT5jdXJyZW50
U3RyZWFtLmdldCgpLCBrQ0ZTdHJlYW1FdmVudE5vbmUsIDAsIDApOworICAgICAgICBmb3JtLT5j
dXJyZW50U3RyZWFtID0gbnVsbHB0cjsKICAgICAgICAgZm9ybS0+Y3VycmVudFN0cmVhbVJhbmdl
TGVuZ3RoID0gQmxvYkRhdGFJdGVtOjp0b0VuZE9mRmlsZTsKICAgICB9CiAgICAgZm9ybS0+Y3Vy
cmVudERhdGEgPSBudWxscHRyOwpAQCAtMTQzLDcgKzE0Miw3IEBAIHN0YXRpYyBib29sIGFkdmFu
Y2VDdXJyZW50U3RyZWFtKEZvcm1TdHJlYW1GaWVsZHMqIGZvcm0pCiAgICAgICAgIFtmb3JtXSAo
VmVjdG9yPGNoYXI+JiBieXRlcykgewogICAgICAgICAgICAgc2l6ZV90IHNpemUgPSBieXRlcy5z
aXplKCk7CiAgICAgICAgICAgICBNYWxsb2NQdHI8Y2hhciwgV1RGOjpWZWN0b3JNYWxsb2M+IGRh
dGEgPSBieXRlcy5yZWxlYXNlQnVmZmVyKCk7Ci0gICAgICAgICAgICBmb3JtLT5jdXJyZW50U3Ry
ZWFtID0gQ0ZSZWFkU3RyZWFtQ3JlYXRlV2l0aEJ5dGVzTm9Db3B5KDAsIHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgVUludDgqPihkYXRhLmdldCgpKSwgc2l6ZSwga0NGQWxsb2NhdG9yTnVsbCk7Cisg
ICAgICAgICAgICBmb3JtLT5jdXJyZW50U3RyZWFtID0gYWRvcHRDRihDRlJlYWRTdHJlYW1DcmVh
dGVXaXRoQnl0ZXNOb0NvcHkoMCwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBVSW50OCo+KGRhdGEu
Z2V0KCkpLCBzaXplLCBrQ0ZBbGxvY2F0b3JOdWxsKSk7CiAgICAgICAgICAgICBmb3JtLT5jdXJy
ZW50RGF0YSA9IFdURk1vdmUoZGF0YSk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAg
ICAgfSwgW2Zvcm1dIChjb25zdCBGb3JtRGF0YUVsZW1lbnQ6OkVuY29kZWRGaWxlRGF0YSYgZmls
ZURhdGEpIHsKQEAgLTE1MiwxNCArMTUxLDE0IEBAIHN0YXRpYyBib29sIGFkdmFuY2VDdXJyZW50
U3RyZWFtKEZvcm1TdHJlYW1GaWVsZHMqIGZvcm0pCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCiAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIHBhdGggPSBmaWxlRGF0YS5maWxlbmFt
ZTsKLSAgICAgICAgICAgIGZvcm0tPmN1cnJlbnRTdHJlYW0gPSBDRlJlYWRTdHJlYW1DcmVhdGVX
aXRoRmlsZSgwLCBGaWxlU3lzdGVtOjpwYXRoQXNVUkwocGF0aCkuZ2V0KCkpOworICAgICAgICAg
ICAgZm9ybS0+Y3VycmVudFN0cmVhbSA9IGFkb3B0Q0YoQ0ZSZWFkU3RyZWFtQ3JlYXRlV2l0aEZp
bGUoMCwgRmlsZVN5c3RlbTo6cGF0aEFzVVJMKHBhdGgpLmdldCgpKSk7CiAgICAgICAgICAgICBp
ZiAoIWZvcm0tPmN1cnJlbnRTdHJlYW0pIHsKICAgICAgICAgICAgICAgICAvLyBUaGUgZmlsZSBt
dXN0IGhhdmUgYmVlbiByZW1vdmVkIG9yIGJlY29tZSB1bnJlYWRhYmxlLgogICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChmaWxlRGF0
YS5maWxlU3RhcnQgPiAwKSB7CiAgICAgICAgICAgICAgICAgUmV0YWluUHRyPENGTnVtYmVyUmVm
PiBwb3NpdGlvbiA9IGFkb3B0Q0YoQ0ZOdW1iZXJDcmVhdGUoMCwga0NGTnVtYmVyTG9uZ0xvbmdU
eXBlLCAmZmlsZURhdGEuZmlsZVN0YXJ0KSk7Ci0gICAgICAgICAgICAgICAgQ0ZSZWFkU3RyZWFt
U2V0UHJvcGVydHkoZm9ybS0+Y3VycmVudFN0cmVhbSwga0NGU3RyZWFtUHJvcGVydHlGaWxlQ3Vy
cmVudE9mZnNldCwgcG9zaXRpb24uZ2V0KCkpOworICAgICAgICAgICAgICAgIENGUmVhZFN0cmVh
bVNldFByb3BlcnR5KGZvcm0tPmN1cnJlbnRTdHJlYW0uZ2V0KCksIGtDRlN0cmVhbVByb3BlcnR5
RmlsZUN1cnJlbnRPZmZzZXQsIHBvc2l0aW9uLmdldCgpKTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIGZvcm0tPmN1cnJlbnRTdHJlYW1SYW5nZUxlbmd0aCA9IGZpbGVEYXRhLmZpbGVMZW5n
dGg7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTE3NiwxMyArMTc1LDEzIEBAIHN0YXRp
YyBib29sIGFkdmFuY2VDdXJyZW50U3RyZWFtKEZvcm1TdHJlYW1GaWVsZHMqIGZvcm0pCiAKICAg
ICAvLyBTZXQgdXAgdGhlIGNhbGxiYWNrLgogICAgIENGU3RyZWFtQ2xpZW50Q29udGV4dCBjb250
ZXh0ID0geyAwLCBmb3JtLCAwLCAwLCAwIH07Ci0gICAgQ0ZSZWFkU3RyZWFtU2V0Q2xpZW50KGZv
cm0tPmN1cnJlbnRTdHJlYW0sIGtDRlN0cmVhbUV2ZW50SGFzQnl0ZXNBdmFpbGFibGUgfCBrQ0ZT
dHJlYW1FdmVudEVycm9yT2NjdXJyZWQgfCBrQ0ZTdHJlYW1FdmVudEVuZEVuY291bnRlcmVkLAor
ICAgIENGUmVhZFN0cmVhbVNldENsaWVudChmb3JtLT5jdXJyZW50U3RyZWFtLmdldCgpLCBrQ0ZT
dHJlYW1FdmVudEhhc0J5dGVzQXZhaWxhYmxlIHwga0NGU3RyZWFtRXZlbnRFcnJvck9jY3VycmVk
IHwga0NGU3RyZWFtRXZlbnRFbmRFbmNvdW50ZXJlZCwKICAgICAgICAgZm9ybUV2ZW50Q2FsbGJh
Y2ssICZjb250ZXh0KTsKIAogICAgIC8vIFNjaGVkdWxlIHdpdGggdGhlIGN1cnJlbnQgc2V0IG9m
IHJ1biBsb29wcy4KICAgICBTY2hlZHVsZVBhaXJIYXNoU2V0OjppdGVyYXRvciBlbmQgPSBmb3Jt
LT5zY2hlZHVsZWRSdW5Mb29wUGFpcnMuZW5kKCk7CiAgICAgZm9yIChTY2hlZHVsZVBhaXJIYXNo
U2V0OjppdGVyYXRvciBpdCA9IGZvcm0tPnNjaGVkdWxlZFJ1bkxvb3BQYWlycy5iZWdpbigpOyBp
dCAhPSBlbmQ7ICsraXQpCi0gICAgICAgIENGUmVhZFN0cmVhbVNjaGVkdWxlV2l0aFJ1bkxvb3Ao
Zm9ybS0+Y3VycmVudFN0cmVhbSwgKCppdCktPnJ1bkxvb3AoKSwgKCppdCktPm1vZGUoKSk7Cisg
ICAgICAgIENGUmVhZFN0cmVhbVNjaGVkdWxlV2l0aFJ1bkxvb3AoZm9ybS0+Y3VycmVudFN0cmVh
bS5nZXQoKSwgKCppdCktPnJ1bkxvb3AoKSwgKCppdCktPm1vZGUoKSk7CiAKICAgICByZXR1cm4g
dHJ1ZTsKIH0KQEAgLTE5Niw3ICsxOTUsNyBAQCBzdGF0aWMgYm9vbCBvcGVuTmV4dFN0cmVhbShG
b3JtU3RyZWFtRmllbGRzKiBmb3JtKQogICAgIC8vIFNraXAgb3ZlciBhbnkgc3RyZWFtcyB3ZSBj
YW4ndCBvcGVuLgogICAgIGlmICghYWR2YW5jZUN1cnJlbnRTdHJlYW0oZm9ybSkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICB3aGlsZSAoZm9ybS0+Y3VycmVudFN0cmVhbSAmJiAhQ0ZSZWFk
U3RyZWFtT3Blbihmb3JtLT5jdXJyZW50U3RyZWFtKSkgeworICAgIHdoaWxlIChmb3JtLT5jdXJy
ZW50U3RyZWFtICYmICFDRlJlYWRTdHJlYW1PcGVuKGZvcm0tPmN1cnJlbnRTdHJlYW0uZ2V0KCkp
KSB7CiAgICAgICAgIGlmICghYWR2YW5jZUN1cnJlbnRTdHJlYW0oZm9ybSkpCiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfQpAQCAtMjYyLDkgKzI2MSw5IEBAIHN0YXRpYyBDRkluZGV4
IGZvcm1SZWFkKENGUmVhZFN0cmVhbVJlZiwgVUludDgqIGJ1ZmZlciwgQ0ZJbmRleCBidWZmZXJM
ZW5ndGgsIENGCiAgICAgICAgIENGSW5kZXggYnl0ZXNUb1JlYWQgPSBidWZmZXJMZW5ndGg7CiAg
ICAgICAgIGlmIChmb3JtLT5jdXJyZW50U3RyZWFtUmFuZ2VMZW5ndGggIT0gQmxvYkRhdGFJdGVt
Ojp0b0VuZE9mRmlsZSAmJiBmb3JtLT5jdXJyZW50U3RyZWFtUmFuZ2VMZW5ndGggPCBieXRlc1Rv
UmVhZCkKICAgICAgICAgICAgIGJ5dGVzVG9SZWFkID0gc3RhdGljX2Nhc3Q8Q0ZJbmRleD4oZm9y
bS0+Y3VycmVudFN0cmVhbVJhbmdlTGVuZ3RoKTsKLSAgICAgICAgQ0ZJbmRleCBieXRlc1JlYWQg
PSBDRlJlYWRTdHJlYW1SZWFkKGZvcm0tPmN1cnJlbnRTdHJlYW0sIGJ1ZmZlciwgYnl0ZXNUb1Jl
YWQpOworICAgICAgICBDRkluZGV4IGJ5dGVzUmVhZCA9IENGUmVhZFN0cmVhbVJlYWQoZm9ybS0+
Y3VycmVudFN0cmVhbS5nZXQoKSwgYnVmZmVyLCBieXRlc1RvUmVhZCk7CiAgICAgICAgIGlmIChi
eXRlc1JlYWQgPCAwKSB7Ci0gICAgICAgICAgICAqZXJyb3IgPSBDRlJlYWRTdHJlYW1HZXRFcnJv
cihmb3JtLT5jdXJyZW50U3RyZWFtKTsKKyAgICAgICAgICAgICplcnJvciA9IENGUmVhZFN0cmVh
bUdldEVycm9yKGZvcm0tPmN1cnJlbnRTdHJlYW0uZ2V0KCkpOwogICAgICAgICAgICAgcmV0dXJu
IC0xOwogICAgICAgICB9CiAgICAgICAgIGlmIChieXRlc1JlYWQgPiAwKSB7CkBAIC0yODgsMTQg
KzI4NywxNCBAQCBzdGF0aWMgQm9vbGVhbiBmb3JtQ2FuUmVhZChDRlJlYWRTdHJlYW1SZWYgc3Ry
ZWFtLCB2b2lkKiBjb250ZXh0KQogewogICAgIEZvcm1TdHJlYW1GaWVsZHMqIGZvcm0gPSBzdGF0
aWNfY2FzdDxGb3JtU3RyZWFtRmllbGRzKj4oY29udGV4dCk7CiAKLSAgICB3aGlsZSAoZm9ybS0+
Y3VycmVudFN0cmVhbSAmJiBDRlJlYWRTdHJlYW1HZXRTdGF0dXMoZm9ybS0+Y3VycmVudFN0cmVh
bSkgPT0ga0NGU3RyZWFtU3RhdHVzQXRFbmQpCisgICAgd2hpbGUgKGZvcm0tPmN1cnJlbnRTdHJl
YW0gJiYgQ0ZSZWFkU3RyZWFtR2V0U3RhdHVzKGZvcm0tPmN1cnJlbnRTdHJlYW0uZ2V0KCkpID09
IGtDRlN0cmVhbVN0YXR1c0F0RW5kKQogICAgICAgICBvcGVuTmV4dFN0cmVhbShmb3JtKTsKIAog
ICAgIGlmICghZm9ybS0+Y3VycmVudFN0cmVhbSkgewogICAgICAgICBDRlJlYWRTdHJlYW1TaWdu
YWxFdmVudChzdHJlYW0sIGtDRlN0cmVhbUV2ZW50RW5kRW5jb3VudGVyZWQsIDApOwogICAgICAg
ICByZXR1cm4gRkFMU0U7CiAgICAgfQotICAgIHJldHVybiBDRlJlYWRTdHJlYW1IYXNCeXRlc0F2
YWlsYWJsZShmb3JtLT5jdXJyZW50U3RyZWFtKTsKKyAgICByZXR1cm4gQ0ZSZWFkU3RyZWFtSGFz
Qnl0ZXNBdmFpbGFibGUoZm9ybS0+Y3VycmVudFN0cmVhbS5nZXQoKSk7CiB9CiAKIHN0YXRpYyB2
b2lkIGZvcm1DbG9zZShDRlJlYWRTdHJlYW1SZWYsIHZvaWQqIGNvbnRleHQpCkBAIC0zMjYsNyAr
MzI1LDcgQEAgc3RhdGljIHZvaWQgZm9ybVNjaGVkdWxlKENGUmVhZFN0cmVhbVJlZiwgQ0ZSdW5M
b29wUmVmIHJ1bkxvb3AsIENGU3RyaW5nUmVmIHJ1bkwKICAgICBGb3JtU3RyZWFtRmllbGRzKiBm
b3JtID0gc3RhdGljX2Nhc3Q8Rm9ybVN0cmVhbUZpZWxkcyo+KGNvbnRleHQpOwogCiAgICAgaWYg
KGZvcm0tPmN1cnJlbnRTdHJlYW0pCi0gICAgICAgIENGUmVhZFN0cmVhbVNjaGVkdWxlV2l0aFJ1
bkxvb3AoZm9ybS0+Y3VycmVudFN0cmVhbSwgcnVuTG9vcCwgcnVuTG9vcE1vZGUpOworICAgICAg
ICBDRlJlYWRTdHJlYW1TY2hlZHVsZVdpdGhSdW5Mb29wKGZvcm0tPmN1cnJlbnRTdHJlYW0uZ2V0
KCksIHJ1bkxvb3AsIHJ1bkxvb3BNb2RlKTsKICAgICBmb3JtLT5zY2hlZHVsZWRSdW5Mb29wUGFp
cnMuYWRkKFNjaGVkdWxlUGFpcjo6Y3JlYXRlKHJ1bkxvb3AsIHJ1bkxvb3BNb2RlKSk7CiB9CiAK
QEAgLTMzNSw3ICszMzQsNyBAQCBzdGF0aWMgdm9pZCBmb3JtVW5zY2hlZHVsZShDRlJlYWRTdHJl
YW1SZWYsIENGUnVuTG9vcFJlZiBydW5Mb29wLCBDRlN0cmluZ1JlZiBydQogICAgIEZvcm1TdHJl
YW1GaWVsZHMqIGZvcm0gPSBzdGF0aWNfY2FzdDxGb3JtU3RyZWFtRmllbGRzKj4oY29udGV4dCk7
CiAKICAgICBpZiAoZm9ybS0+Y3VycmVudFN0cmVhbSkKLSAgICAgICAgQ0ZSZWFkU3RyZWFtVW5z
Y2hlZHVsZUZyb21SdW5Mb29wKGZvcm0tPmN1cnJlbnRTdHJlYW0sIHJ1bkxvb3AsIHJ1bkxvb3BN
b2RlKTsKKyAgICAgICAgQ0ZSZWFkU3RyZWFtVW5zY2hlZHVsZUZyb21SdW5Mb29wKGZvcm0tPmN1
cnJlbnRTdHJlYW0uZ2V0KCksIHJ1bkxvb3AsIHJ1bkxvb3BNb2RlKTsKICAgICBmb3JtLT5zY2hl
ZHVsZWRSdW5Mb29wUGFpcnMucmVtb3ZlKFNjaGVkdWxlUGFpcjo6Y3JlYXRlKHJ1bkxvb3AsIHJ1
bkxvb3BNb2RlKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY2YvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ0ZOZXRXaW4uY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jZi9OZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldFdpbi5jcHAK
aW5kZXggMDViMGVjOTJiOWVhNzI2NjZiNjljMDdiZTAyZjYwNjZiZDVmN2QxNS4uNWQ3ZDc5NjE0
NDY1ZmNhYjViZDZiNjQxOGUwNjBmNjhlYjA5NGE0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jZi9OZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldFdpbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9OZXR3b3JrU3RvcmFnZVNl
c3Npb25DRk5ldFdpbi5jcHAKQEAgLTg4LDEyICs4OCwxMCBAQCBDRlVSTFN0b3JhZ2VTZXNzaW9u
UmVmIGNyZWF0ZVByaXZhdGVTdG9yYWdlU2Vzc2lvbihDRlN0cmluZ1JlZiBpZGVudGlmaWVyLCBP
cHRpbwogICAgIAogICAgIC8vIFRoZSBwcml2YXRlIHN0b3JhZ2Ugc2Vzc2lvbiBzaG91bGQgaGF2
ZSB0aGUgc2FtZSBwcm9wZXJ0aWVzIGFzIHRoZSBkZWZhdWx0IHN0b3JhZ2Ugc2Vzc2lvbiwKICAg
ICAvLyB3aXRoIHRoZSBleGNlcHRpb24gdGhhdCBpdCBzaG91bGQgYmUgaW4tbWVtb3J5IG9ubHkg
c3RvcmFnZS4KLSAgICBDRlVSTENhY2hlUmVmIGNhY2hlID0gX0NGVVJMU3RvcmFnZVNlc3Npb25D
b3B5Q2FjaGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgc3RvcmFnZVNlc3Npb24pOwotICAgIENGVVJM
Q2FjaGVTZXREaXNrQ2FwYWNpdHkoY2FjaGUsIDApOwotICAgIENGVVJMQ2FjaGVSZWYgZGVmYXVs
dENhY2hlID0gQ0ZVUkxDYWNoZUNvcHlTaGFyZWRVUkxDYWNoZSgpOwotICAgIENGVVJMQ2FjaGVT
ZXRNZW1vcnlDYXBhY2l0eShjYWNoZSwgQ0ZVUkxDYWNoZU1lbW9yeUNhcGFjaXR5KGRlZmF1bHRD
YWNoZSkpOwotICAgIENGUmVsZWFzZShkZWZhdWx0Q2FjaGUpOwotICAgIENGUmVsZWFzZShjYWNo
ZSk7CisgICAgYXV0byBjYWNoZSA9IGFkb3B0Q0YoX0NGVVJMU3RvcmFnZVNlc3Npb25Db3B5Q2Fj
aGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgc3RvcmFnZVNlc3Npb24pKTsKKyAgICBDRlVSTENhY2hl
U2V0RGlza0NhcGFjaXR5KGNhY2hlLmdldCgpLCAwKTsKKyAgICBhdXRvIGRlZmF1bHRDYWNoZSA9
IGFkb3B0Q0YoQ0ZVUkxDYWNoZUNvcHlTaGFyZWRVUkxDYWNoZSgpKTsKKyAgICBDRlVSTENhY2hl
U2V0TWVtb3J5Q2FwYWNpdHkoY2FjaGUuZ2V0KCksIENGVVJMQ2FjaGVNZW1vcnlDYXBhY2l0eShk
ZWZhdWx0Q2FjaGUuZ2V0KCkpKTsKICAgICAKICAgICBDRkhUVFBDb29raWVTdG9yYWdlQWNjZXB0
UG9saWN5IGNmQ29va2llQWNjZXB0UG9saWN5OwogICAgIGlmIChjb29raWVBY2NlcHRQb2xpY3kp
CkBAIC0xMDMsOSArMTAxLDggQEAgQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZiBjcmVhdGVQcml2YXRl
U3RvcmFnZVNlc3Npb24oQ0ZTdHJpbmdSZWYgaWRlbnRpZmllciwgT3B0aW8KICAgICAgICAgY2ZD
b29raWVBY2NlcHRQb2xpY3kgPSBDRkhUVFBDb29raWVTdG9yYWdlR2V0Q29va2llQWNjZXB0UG9s
aWN5KGRlZmF1bHRDb29raWVTdG9yYWdlKTsKICAgICB9CiAKLSAgICBDRkhUVFBDb29raWVTdG9y
YWdlUmVmIGNvb2tpZVN0b3JhZ2UgPSBfQ0ZVUkxTdG9yYWdlU2Vzc2lvbkNvcHlDb29raWVTdG9y
YWdlKGtDRkFsbG9jYXRvckRlZmF1bHQsIHN0b3JhZ2VTZXNzaW9uKTsKLSAgICBDRkhUVFBDb29r
aWVTdG9yYWdlU2V0Q29va2llQWNjZXB0UG9saWN5KGNvb2tpZVN0b3JhZ2UsIGNmQ29va2llQWNj
ZXB0UG9saWN5KTsKLSAgICBDRlJlbGVhc2UoY29va2llU3RvcmFnZSk7CisgICAgYXV0byBjb29r
aWVTdG9yYWdlID0gYWRvcHRDRihfQ0ZVUkxTdG9yYWdlU2Vzc2lvbkNvcHlDb29raWVTdG9yYWdl
KGtDRkFsbG9jYXRvckRlZmF1bHQsIHN0b3JhZ2VTZXNzaW9uKSk7CisgICAgQ0ZIVFRQQ29va2ll
U3RvcmFnZVNldENvb2tpZUFjY2VwdFBvbGljeShjb29raWVTdG9yYWdlLmdldCgpLCBjZkNvb2tp
ZUFjY2VwdFBvbGljeSk7CiAgICAgCiAgICAgcmV0dXJuIHN0b3JhZ2VTZXNzaW9uOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRs
ZUNGTmV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VI
YW5kbGVDRk5ldC5jcHAKaW5kZXggY2U0ZWRiNDliNzM4NzAzYzFjM2EwYjM4NjVjMDhkNzkyNGE0
NjMzNy4uM2MxN2FkYzQxOGI4MDRjYTRlZjU0YTk5MzVmZWMzNTU3NDIzYmM4MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFu
ZGxlQ0ZOZXQuY3BwCkBAIC0xMjAsMTIgKzEyMCwxMSBAQCBzdGF0aWMgdm9pZCBzZXRDbGllbnRD
ZXJ0aWZpY2F0ZUluU1NMUHJvcGVydGllcyhDRk11dGFibGVEaWN0aW9uYXJ5UmVmIHNzbFByb3Bz
LAogewogICAgIGlmICghc3NsUHJvcHMgfHwgIWNlcnREYXRhKQogICAgICAgICByZXR1cm47Ci0g
ICAgQ0ZNdXRhYmxlRGljdGlvbmFyeVJlZiBjZXJ0RGljdCA9IENGRGljdGlvbmFyeUNyZWF0ZU11
dGFibGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgMCwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJh
Y2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcyk7CisgICAgYXV0byBjZXJ0RGlj
dCA9IGFkb3B0Q0YoQ0ZEaWN0aW9uYXJ5Q3JlYXRlTXV0YWJsZShrQ0ZBbGxvY2F0b3JEZWZhdWx0
LCAwLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZh
bHVlQ2FsbEJhY2tzKSk7CiAgICAgaWYgKCFjZXJ0RGljdCkKICAgICAgICAgcmV0dXJuOwotICAg
IENGRGljdGlvbmFyeVNldFZhbHVlKGNlcnREaWN0LCBfa0NGV2luZG93c1NTTExvY2FsQ2VydCwg
Y2VydERhdGEpOwotICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHNzbFByb3BzLCBfa0NGU3RyZWFt
UHJvcGVydHlXaW5kb3dzU1NMQ2VydEluZm8sIGNlcnREaWN0KTsKLSAgICBDRlJlbGVhc2UoY2Vy
dERpY3QpOworICAgIENGRGljdGlvbmFyeVNldFZhbHVlKGNlcnREaWN0LmdldCgpLCBfa0NGV2lu
ZG93c1NTTExvY2FsQ2VydCwgY2VydERhdGEpOworICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHNz
bFByb3BzLCBfa0NGU3RyZWFtUHJvcGVydHlXaW5kb3dzU1NMQ2VydEluZm8sIGNlcnREaWN0Lmdl
dCgpKTsKIH0KICNlbmRpZgogCkBAIC0yMDUsMTEgKzIwNCwxMSBAQCB2b2lkIFJlc291cmNlSGFu
ZGxlOjpjcmVhdGVDRlVSTENvbm5lY3Rpb24oYm9vbCBzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFn
ZSwgYm9vbAogICAgIGlmIChzc2xQcm9wcykKICAgICAgICAgQ0ZVUkxSZXF1ZXN0U2V0U1NMUHJv
cGVydGllcyhyZXF1ZXN0LmdldCgpLCBzc2xQcm9wcy5nZXQoKSk7CiAKLSAgICBDRk11dGFibGVE
aWN0aW9uYXJ5UmVmIHN0cmVhbVByb3BlcnRpZXMgID0gQ0ZEaWN0aW9uYXJ5Q3JlYXRlTXV0YWJs
ZSgwLCAwLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFy
eVZhbHVlQ2FsbEJhY2tzKTsKKyAgICBhdXRvIHN0cmVhbVByb3BlcnRpZXMgID0gYWRvcHRDRihD
RkRpY3Rpb25hcnlDcmVhdGVNdXRhYmxlKDAsIDAsICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxC
YWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpKTsKIAogICAgIGlmICghc2hv
dWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UpIHsKICAgICAgICAgLy8gQXZvaWQgdXNpbmcgZXhpc3Rp
bmcgY29ubmVjdGlvbnMsIGJlY2F1c2UgdGhleSBtYXkgYmUgYWxyZWFkeSBhdXRoZW50aWNhdGVk
LgotICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShzdHJlYW1Qcm9wZXJ0aWVzLCBDRlNUUigi
X2tDRlVSTENvbm5lY3Rpb25TZXNzaW9uSUQiKSwgQ0ZTVFIoIldlYktpdFByaXZhdGVTZXNzaW9u
IikpOworICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShzdHJlYW1Qcm9wZXJ0aWVzLmdldCgp
LCBDRlNUUigiX2tDRlVSTENvbm5lY3Rpb25TZXNzaW9uSUQiKSwgQ0ZTVFIoIldlYktpdFByaXZh
dGVTZXNzaW9uIikpOwogICAgIH0KIAogICAgIHN0YXRpYyBjb25zdCBDRlN0cmluZ1JlZiBrQ0ZV
UkxDb25uZWN0aW9uU29ja2V0U3RyZWFtUHJvcGVydGllcyA9IENGU1RSKCJrQ0ZVUkxDb25uZWN0
aW9uU29ja2V0U3RyZWFtUHJvcGVydGllcyIpOwpAQCAtMjI4LDggKzIyNyw3IEBAIHZvaWQgUmVz
b3VyY2VIYW5kbGU6OmNyZWF0ZUNGVVJMQ29ubmVjdGlvbihib29sIHNob3VsZFVzZUNyZWRlbnRp
YWxTdG9yYWdlLCBib29sCiAjZW5kaWYKIAogICAgIC8vIEZJWE1FOiBUaGlzIGNvZGUgaXMgZGlm
ZmVyZW50IGZyb20gaU9TIGNvZGUgaW4gUmVzb3VyY2VIYW5kbGVNYWMubW0gaW4gdGhhdCBoZXJl
IHdlIGlnbm9yZSBzdHJlYW0gcHJvcGVydGllcyB0aGF0IHdlcmUgcHJlc2VudCBpbiBjbGllbnQg
cHJvcGVydGllcy4KLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShwcm9wZXJ0aWVzRGljdGlvbmFy
eS5nZXQoKSwga0NGVVJMQ29ubmVjdGlvblNvY2tldFN0cmVhbVByb3BlcnRpZXMsIHN0cmVhbVBy
b3BlcnRpZXMpOwotICAgIENGUmVsZWFzZShzdHJlYW1Qcm9wZXJ0aWVzKTsKKyAgICBDRkRpY3Rp
b25hcnlBZGRWYWx1ZShwcm9wZXJ0aWVzRGljdGlvbmFyeS5nZXQoKSwga0NGVVJMQ29ubmVjdGlv
blNvY2tldFN0cmVhbVByb3BlcnRpZXMsIHN0cmVhbVByb3BlcnRpZXMuZ2V0KCkpOwogCiAgICAg
ZC0+bV9jb25uZWN0aW9uRGVsZWdhdGUgPSBhZG9wdFJlZihuZXcgUmVzb3VyY2VIYW5kbGVDRlVS
TENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZSh0aGlzLCBXVEZNb3ZlKG1lc3Nh
Z2VRdWV1ZSkpKTsKICAgICBkLT5tX2Nvbm5lY3Rpb25EZWxlZ2F0ZS0+c2V0dXBSZXF1ZXN0KHJl
cXVlc3QuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1
ZXVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5k
bGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZS5jcHAKaW5kZXggMjY0
NjYzODhiN2NhNWE2NjU2ZDBlZTI2MWU3NTZlZTIyZmEwNDAzMS4uOGU4YzNhYTdhNmJlNGNlZTM2
YWE4ZTlmM2RhM2U2YTIyYTE1ZWM3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9w
ZXJhdGlvblF1ZXVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nm
L1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWUu
Y3BwCkBAIC0xMzcsOCArMTM3LDcgQEAgQ0ZVUkxSZXF1ZXN0UmVmIFJlc291cmNlSGFuZGxlQ0ZV
UkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6OndpbGxTZW4KICAgICBpZiAo
IW9yaWdpbmFsUmVkaXJlY3RSZXNwb25zZSkgewogICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdS
ZWY+IG5ld1NjaGVtZSA9IGFkb3B0Q0YoQ0ZVUkxDb3B5U2NoZW1lKENGVVJMUmVxdWVzdEdldFVS
TChjZlJlcXVlc3QpKSk7CiAgICAgICAgIGlmIChDRlN0cmluZ0NvbXBhcmUobmV3U2NoZW1lLmdl
dCgpLCBtX29yaWdpbmFsU2NoZW1lLmdldCgpLCBrQ0ZDb21wYXJlQ2FzZUluc2Vuc2l0aXZlKSA9
PSBrQ0ZDb21wYXJlRXF1YWxUbykgewotICAgICAgICAgICAgQ0ZSZXRhaW4oY2ZSZXF1ZXN0KTsK
LSAgICAgICAgICAgIHJldHVybiBjZlJlcXVlc3Q7CisgICAgICAgICAgICByZXR1cm4gY2ZSZXF1
ZXN0LmxlYWtSZWYoKTsKICAgICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3RDRk5ldC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVxdWVzdENGTmV0LmNwcApp
bmRleCBkMmQwOTNjM2MzMjAwNzNiNmE1YWFiZTkzZDBjZmZmYTkxZTk1MmJiLi5mNmUxYjliNWQz
YTViYTdhZTM1YTc3OTIzZDU2ZDUzZWFlMzI3MTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVxdWVzdENGTmV0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVxdWVzdENGTmV0LmNwcApA
QCAtMjgyLDEwICsyODIsOCBAQCB2b2lkIFJlc291cmNlUmVxdWVzdDo6ZG9VcGRhdGVSZXNvdXJj
ZVJlcXVlc3QoKQogICAgICAgICBtX2NhY2hlUG9saWN5ID0gZnJvbVBsYXRmb3JtUmVxdWVzdENh
Y2hlUG9saWN5KENGVVJMUmVxdWVzdEdldENhY2hlUG9saWN5KG1fY2ZSZXF1ZXN0LmdldCgpKSk7
CiAgICAgbV90aW1lb3V0SW50ZXJ2YWwgPSBDRlVSTFJlcXVlc3RHZXRUaW1lb3V0SW50ZXJ2YWwo
bV9jZlJlcXVlc3QuZ2V0KCkpOwogICAgIG1fZmlyc3RQYXJ0eUZvckNvb2tpZXMgPSBDRlVSTFJl
cXVlc3RHZXRNYWluRG9jdW1lbnRVUkwobV9jZlJlcXVlc3QuZ2V0KCkpOwotICAgIGlmIChDRlN0
cmluZ1JlZiBtZXRob2QgPSBDRlVSTFJlcXVlc3RDb3B5SFRUUFJlcXVlc3RNZXRob2QobV9jZlJl
cXVlc3QuZ2V0KCkpKSB7Ci0gICAgICAgIG1faHR0cE1ldGhvZCA9IG1ldGhvZDsKLSAgICAgICAg
Q0ZSZWxlYXNlKG1ldGhvZCk7Ci0gICAgfQorICAgIGlmIChhdXRvIG1ldGhvZCA9IGFkb3B0Q0Yo
Q0ZVUkxSZXF1ZXN0Q29weUhUVFBSZXF1ZXN0TWV0aG9kKG1fY2ZSZXF1ZXN0LmdldCgpKSkpCisg
ICAgICAgIG1faHR0cE1ldGhvZCA9IG1ldGhvZC5nZXQoKTsKICAgICBtX2FsbG93Q29va2llcyA9
IENGVVJMUmVxdWVzdFNob3VsZEhhbmRsZUhUVFBDb29raWVzKG1fY2ZSZXF1ZXN0LmdldCgpKTsK
IAogICAgIGlmIChyZXNvdXJjZVByaW9yaXRpZXNFbmFibGVkKCkpCkBAIC0zMDYsMTQgKzMwNCwx
MyBAQCB2b2lkIFJlc291cmNlUmVxdWVzdDo6ZG9VcGRhdGVSZXNvdXJjZVJlcXVlc3QoKQogI2Vu
ZGlmCiAKICAgICBtX2h0dHBIZWFkZXJGaWVsZHMuY2xlYXIoKTsKLSAgICBpZiAoQ0ZEaWN0aW9u
YXJ5UmVmIGhlYWRlcnMgPSBDRlVSTFJlcXVlc3RDb3B5QWxsSFRUUEhlYWRlckZpZWxkcyhtX2Nm
UmVxdWVzdC5nZXQoKSkpIHsKLSAgICAgICAgQ0ZJbmRleCBoZWFkZXJDb3VudCA9IENGRGljdGlv
bmFyeUdldENvdW50KGhlYWRlcnMpOworICAgIGlmIChhdXRvIGhlYWRlcnMgPSBhZG9wdENGKENG
VVJMUmVxdWVzdENvcHlBbGxIVFRQSGVhZGVyRmllbGRzKG1fY2ZSZXF1ZXN0LmdldCgpKSkpIHsK
KyAgICAgICAgQ0ZJbmRleCBoZWFkZXJDb3VudCA9IENGRGljdGlvbmFyeUdldENvdW50KGhlYWRl
cnMuZ2V0KCkpOwogICAgICAgICBWZWN0b3I8Y29uc3Qgdm9pZCosIDEyOD4ga2V5cyhoZWFkZXJD
b3VudCk7CiAgICAgICAgIFZlY3Rvcjxjb25zdCB2b2lkKiwgMTI4PiB2YWx1ZXMoaGVhZGVyQ291
bnQpOwotICAgICAgICBDRkRpY3Rpb25hcnlHZXRLZXlzQW5kVmFsdWVzKGhlYWRlcnMsIGtleXMu
ZGF0YSgpLCB2YWx1ZXMuZGF0YSgpKTsKKyAgICAgICAgQ0ZEaWN0aW9uYXJ5R2V0S2V5c0FuZFZh
bHVlcyhoZWFkZXJzLmdldCgpLCBrZXlzLmRhdGEoKSwgdmFsdWVzLmRhdGEoKSk7CiAgICAgICAg
IGZvciAoaW50IGkgPSAwOyBpIDwgaGVhZGVyQ291bnQ7ICsraSkKICAgICAgICAgICAgIG1faHR0
cEhlYWRlckZpZWxkcy5zZXQoKENGU3RyaW5nUmVmKWtleXNbaV0sIChDRlN0cmluZ1JlZil2YWx1
ZXNbaV0pOwotICAgICAgICBDRlJlbGVhc2UoaGVhZGVycyk7CiAgICAgfQogCiAgICAgbV9yZXNw
b25zZUNvbnRlbnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tBcnJheS5jbGVhcigpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdJbWFnZUNHV2luLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnSW1hZ2VDR1dpbi5jcHAKaW5kZXggMzRl
ZDllZjhjZjRmODY2Y2EwM2ZkY2E5MzA0YTk2MDk2YmM2NWI5ZS4uYjQ1ZTRkNGEwYTI1ZGZjYzQ3
NmY5YWFiZjc1N2M3MGFlMjJjOTk1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vd2luL0RyYWdJbWFnZUNHV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93
aW4vRHJhZ0ltYWdlQ0dXaW4uY3BwCkBAIC02NywxNSArNjcsMTMgQEAgR0RJT2JqZWN0PEhCSVRN
QVA+IGFsbG9jSW1hZ2UoSERDIGRjLCBJbnRTaXplIHNpemUsIENHQ29udGV4dFJlZiAqdGFyZ2V0
UmVmKQogICAgIHJldHVybiBoYm1wOwogfQogCi1zdGF0aWMgQ0dDb250ZXh0UmVmIGNyZWF0ZUNn
Q29udGV4dEZyb21CaXRtYXAoSEJJVE1BUCBiaXRtYXApCitzdGF0aWMgUmV0YWluUHRyPENHQ29u
dGV4dFJlZj4gY3JlYXRlQ2dDb250ZXh0RnJvbUJpdG1hcChIQklUTUFQIGJpdG1hcCkKIHsKICAg
ICBCSVRNQVAgaW5mbzsKICAgICBHZXRPYmplY3QoYml0bWFwLCBzaXplb2YoaW5mbyksICZpbmZv
KTsKICAgICBBU1NFUlQoaW5mby5ibUJpdHNQaXhlbCA9PSAzMik7CiAKLSAgICBDR0NvbnRleHRS
ZWYgYml0bWFwQ29udGV4dCA9IENHQml0bWFwQ29udGV4dENyZWF0ZShpbmZvLmJtQml0cywgaW5m
by5ibVdpZHRoLCBpbmZvLmJtSGVpZ2h0LCA4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZm8uYm1XaWR0aEJ5dGVzLCBzUkdCQ29sb3JT
cGFjZVJlZigpLCBrQ0dCaXRtYXBCeXRlT3JkZXIzMkxpdHRsZSB8IGtDR0ltYWdlQWxwaGFOb25l
U2tpcEZpcnN0KTsKLSAgICByZXR1cm4gYml0bWFwQ29udGV4dDsKKyAgICByZXR1cm4gYWRvcHRD
RihDR0JpdG1hcENvbnRleHRDcmVhdGUoaW5mby5ibUJpdHMsIGluZm8uYm1XaWR0aCwgaW5mby5i
bUhlaWdodCwgOCwgaW5mby5ibVdpZHRoQnl0ZXMsIHNSR0JDb2xvclNwYWNlUmVmKCksIGtDR0Jp
dG1hcEJ5dGVPcmRlcjMyTGl0dGxlIHwga0NHSW1hZ2VBbHBoYU5vbmVTa2lwRmlyc3QpKTsKIH0K
IAogRHJhZ0ltYWdlUmVmIHNjYWxlRHJhZ0ltYWdlKERyYWdJbWFnZVJlZiBpbWFnZVJlZiwgRmxv
YXRTaXplIHNjYWxlKQpAQCAtMTAxLDE1ICs5OSwxMyBAQCBEcmFnSW1hZ2VSZWYgc2NhbGVEcmFn
SW1hZ2UoRHJhZ0ltYWdlUmVmIGltYWdlUmVmLCBGbG9hdFNpemUgc2NhbGUpCiAgICAgaWYgKCFo
Ym1wKQogICAgICAgICBnb3RvIGV4aXQ7CiAKLSAgICBDR0NvbnRleHRSZWYgc3JjQ29udGV4dCA9
IGNyZWF0ZUNnQ29udGV4dEZyb21CaXRtYXAoaW1hZ2UuZ2V0KCkpOwotICAgIENHSW1hZ2VSZWYg
c3JjSW1hZ2UgPSBDR0JpdG1hcENvbnRleHRDcmVhdGVJbWFnZShzcmNDb250ZXh0KTsKKyAgICBh
dXRvIHNyY0NvbnRleHQgPSBjcmVhdGVDZ0NvbnRleHRGcm9tQml0bWFwKGltYWdlLmdldCgpKTsK
KyAgICBhdXRvIHNyY0ltYWdlID0gYWRvcHRDRihDR0JpdG1hcENvbnRleHRDcmVhdGVJbWFnZShz
cmNDb250ZXh0KSk7CiAgICAgQ0dSZWN0IHJlY3Q7CiAgICAgcmVjdC5vcmlnaW4ueCA9IDA7CiAg
ICAgcmVjdC5vcmlnaW4ueSA9IDA7CiAgICAgcmVjdC5zaXplID0gZHN0U2l6ZTsKLSAgICBDR0Nv
bnRleHREcmF3SW1hZ2UodGFyZ2V0Q29udGV4dCwgcmVjdCwgc3JjSW1hZ2UpOwotICAgIENHSW1h
Z2VSZWxlYXNlKHNyY0ltYWdlKTsKLSAgICBDR0NvbnRleHRSZWxlYXNlKHNyY0NvbnRleHQpOwor
ICAgIENHQ29udGV4dERyYXdJbWFnZSh0YXJnZXRDb250ZXh0LCByZWN0LCBzcmNJbWFnZS5nZXQo
KSk7CiAgICAgQ0dDb250ZXh0UmVsZWFzZSh0YXJnZXRDb250ZXh0KTsKIAogZXhpdDoKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9XZWJDb3JlQnVuZGxlV2luLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9XZWJDb3JlQnVuZGxlV2luLmNwcAppbmRleCAz
YjdjOGUxYTIwYTQ1MWFkN2NiMzg0OGViNjE2MjJlOTdmZDAyNGM3Li45NDkzMmZiYzk2YTUyOTg0
MGYyZTZiYjQ4ZWI2ZDQ0ZTE3Y2U1ZTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS93aW4vV2ViQ29yZUJ1bmRsZVdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vd2luL1dlYkNvcmVCdW5kbGVXaW4uY3BwCkBAIC0zMSwxNiArMzEsMTUgQEAKICNpbmNsdWRl
ICJXZWJDb3JlSW5zdGFuY2VIYW5kbGUuaCIKICNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9DRkJ1
bmRsZS5oPgogI2luY2x1ZGUgPHdpbmRvd3MuaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95
ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotc3RhdGljIENGQnVuZGxlUmVmIGNyZWF0ZVdlYktpdEJ1bmRsZSgpCitzdGF0aWMgUmV0YWlu
UHRyPENGQnVuZGxlUmVmPiBjcmVhdGVXZWJLaXRCdW5kbGUoKQogewotICAgIGlmIChDRkJ1bmRs
ZVJlZiBleGlzdGluZ0J1bmRsZSA9IENGQnVuZGxlR2V0QnVuZGxlV2l0aElkZW50aWZpZXIoQ0ZT
VFIoImNvbS5hcHBsZS5XZWJLaXQiKSkpIHsKLSAgICAgICAgQ0ZSZXRhaW4oZXhpc3RpbmdCdW5k
bGUpOworICAgIGlmIChDRkJ1bmRsZVJlZiBleGlzdGluZ0J1bmRsZSA9IENGQnVuZGxlR2V0QnVu
ZGxlV2l0aElkZW50aWZpZXIoQ0ZTVFIoImNvbS5hcHBsZS5XZWJLaXQiKSkpCiAgICAgICAgIHJl
dHVybiBleGlzdGluZ0J1bmRsZTsKLSAgICB9CiAKICAgICB3Y2hhcl90IGRsbFBhdGhCdWZmZXJb
TUFYX1BBVEhdOwogICAgIERXT1JEIGxlbmd0aCA9IDo6R2V0TW9kdWxlRmlsZU5hbWVXKFdlYkNv
cmU6Omluc3RhbmNlSGFuZGxlKCksIGRsbFBhdGhCdWZmZXIsIFdURl9BUlJBWV9MRU5HVEgoZGxs
UGF0aEJ1ZmZlcikpOwpAQCAtNTIsMTQgKzUxLDE0IEBAIHN0YXRpYyBDRkJ1bmRsZVJlZiBjcmVh
dGVXZWJLaXRCdW5kbGUoKQogICAgIFJldGFpblB0cjxDRlVSTFJlZj4gZGxsRGlyZWN0b3J5VVJM
ID0gYWRvcHRDRihDRlVSTENyZWF0ZUNvcHlEZWxldGluZ0xhc3RQYXRoQ29tcG9uZW50KDAsIGRs
bFVSTC5nZXQoKSkpOwogICAgIFJldGFpblB0cjxDRlVSTFJlZj4gcmVzb3VyY2VzRGlyZWN0b3J5
VVJMID0gYWRvcHRDRihDRlVSTENyZWF0ZUNvcHlBcHBlbmRpbmdQYXRoQ29tcG9uZW50KDAsIGRs
bERpcmVjdG9yeVVSTC5nZXQoKSwgQ0ZTVFIoIldlYktpdC5yZXNvdXJjZXMiKSwgdHJ1ZSkpOwog
Ci0gICAgcmV0dXJuIENGQnVuZGxlQ3JlYXRlKDAsIHJlc291cmNlc0RpcmVjdG9yeVVSTC5nZXQo
KSk7CisgICAgcmV0dXJuIGFkb3B0Q0YoQ0ZCdW5kbGVDcmVhdGUoMCwgcmVzb3VyY2VzRGlyZWN0
b3J5VVJMLmdldCgpKSk7CiB9CiAKIENGQnVuZGxlUmVmIHdlYktpdEJ1bmRsZSgpCiB7Ci0gICAg
c3RhdGljIENGQnVuZGxlUmVmIGJ1bmRsZSA9IGNyZWF0ZVdlYktpdEJ1bmRsZSgpOwotICAgIEFT
U0VSVChidW5kbGUpOwotICAgIHJldHVybiBidW5kbGU7CisgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPFJldGFpblB0cjxDRkJ1bmRsZVJlZj4+IGJ1bmRsZSA9IGNyZWF0ZVdlYktpdEJ1bmRsZSgp
OworICAgIEFTU0VSVChidW5kbGUuZ2V0KCkpOworICAgIHJldHVybiBidW5kbGUuZ2V0KCkuZ2V0
KCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUaGVtZU1hYy5tbQppbmRleCBhM2I3NDA2ZGE0OTEyNzFiMDE2ODkyMmI2NjJmZTIy
YmFiMzc5YTI5Li40NjNlYmEwNmNkMjk5MWZhZmYxN2EzNGMxZWQwOTdiMWQ3MWUxYmY4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCkBAIC0xNTMsMTAgKzE1
Myw5IEBAIC0gKENGRGljdGlvbmFyeVJlZilfYWRqdXN0ZWRDb3JlVUlEcmF3T3B0aW9uc0ZvckRy
YXdpbmdCb3JkZXJzT25seTooQ0ZEaWN0aW9uYXJ5CiAKICAgICAvLyBGSVhNRTogVGhpcyBpcyBh
IHdvcmthcm91bmQgZm9yIDxyZGFyOi8vcHJvYmxlbS8xMTM4NTQ2MT4uIFdoZW4gdGhhdCBidWcg
aXMgcmVzb2x2ZWQsIHdlIHNob3VsZCByZW1vdmUgdGhpcyBjb2RlLAogICAgIC8vIGFzIHdlbGwg
YXMgdGhlIGludGVybmFsIG1ldGhvZCBvdmVycmlkZXMgYmVsb3cuCi0gICAgQ0ZNdXRhYmxlRGlj
dGlvbmFyeVJlZiBjb3JlVUlEcmF3T3B0aW9ucyA9IENGRGljdGlvbmFyeUNyZWF0ZU11dGFibGVD
b3B5KE5VTEwsIDAsIGRlZmF1bHRPcHRpb25zKTsKLSAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShj
b3JlVUlEcmF3T3B0aW9ucywgQ0ZTVFIoImJvcmRlcnMgb25seSIpLCBrQ0ZCb29sZWFuVHJ1ZSk7
Ci0gICAgQ0ZBdXRvcmVsZWFzZShjb3JlVUlEcmF3T3B0aW9ucyk7Ci0gICAgcmV0dXJuIGNvcmVV
SURyYXdPcHRpb25zOworICAgIGF1dG8gY29yZVVJRHJhd09wdGlvbnMgPSBhZG9wdENGKENGRGlj
dGlvbmFyeUNyZWF0ZU11dGFibGVDb3B5KE5VTEwsIDAsIGRlZmF1bHRPcHRpb25zKSk7CisgICAg
Q0ZEaWN0aW9uYXJ5U2V0VmFsdWUoY29yZVVJRHJhd09wdGlvbnMuZ2V0KCksIENGU1RSKCJib3Jk
ZXJzIG9ubHkiKSwga0NGQm9vbGVhblRydWUpOworICAgIHJldHVybiBjb3JlVUlEcmF3T3B0aW9u
cy5hdXRvcmVsZWFzZSgpOwogfQogCiAtIChDRkRpY3Rpb25hcnlSZWYpX2NvcmVVSURyYXdPcHRp
b25zV2l0aEZyYW1lOihOU1JlY3QpY2VsbEZyYW1lIGluVmlldzooTlNWaWV3ICopY29udHJvbFZp
ZXcgaW5jbHVkZUZvY3VzOihCT09MKWluY2x1ZGVGb2N1cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9jb2NvYS9XZWJBcmNoaXZlRHVtcFN1cHBvcnQuaCBiL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvY29jb2EvV2ViQXJjaGl2ZUR1bXBTdXBwb3J0LmgKaW5kZXggMmQwM2VmM2Yy
OTg2ZDhiMjcxYWI3MzcwODMzOTYxZWE3NDZhODE5ZS4uMjA5YTcxMTg1N2ViZDc3NjZhMTk5MTg2
MjkwYjY0MWMwN2MxNWEyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9jb2Nv
YS9XZWJBcmNoaXZlRHVtcFN1cHBvcnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL2Nv
Y29hL1dlYkFyY2hpdmVEdW1wU3VwcG9ydC5oCkBAIC0yNiw5ICsyNiwxMCBAQAogI3ByYWdtYSBv
bmNlCiAKICNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9Db3JlRm91bmRhdGlvbi5oPgorI2luY2x1
ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmVUZXN0U3VwcG9ydCB7CiAK
LUNGU3RyaW5nUmVmIGNyZWF0ZVhNTFN0cmluZ0Zyb21XZWJBcmNoaXZlRGF0YShDRkRhdGFSZWYg
d2ViQXJjaGl2ZURhdGEpIFdURl9FWFBPUlRfUFJJVkFURTsKK1JldGFpblB0cjxDRlN0cmluZ1Jl
Zj4gY3JlYXRlWE1MU3RyaW5nRnJvbVdlYkFyY2hpdmVEYXRhKENGRGF0YVJlZiB3ZWJBcmNoaXZl
RGF0YSkgV1RGX0VYUE9SVF9QUklWQVRFOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlVGVzdFN1
cHBvcnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvY29jb2EvV2ViQXJjaGl2
ZUR1bXBTdXBwb3J0Lm1tIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9jb2NvYS9XZWJBcmNoaXZl
RHVtcFN1cHBvcnQubW0KaW5kZXggNWU3ZDhlMTZhOThmYjcwMWY0N2M1ZTQ5N2ZiYTkxMjNkZWI3
OWRjMS4uYmU2NjA3OGE4M2QwY2E0OWI3MWExZmI1M2MyM2E4YzZiODFkNzY3ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9jb2NvYS9XZWJBcmNoaXZlRHVtcFN1cHBvcnQubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9jb2NvYS9XZWJBcmNoaXZlRHVtcFN1cHBvcnQu
bW0KQEAgLTIwMCw3ICsyMDAsNyBAQCBzdGF0aWMgQ0ZDb21wYXJpc29uUmVzdWx0IGNvbXBhcmVS
ZXNvdXJjZVVSTHMoY29uc3Qgdm9pZCAqdmFsMSwgY29uc3Qgdm9pZCAqdmFsMgogICAgIHJldHVy
biBDRlN0cmluZ0NvbXBhcmUodXJsMSwgdXJsMiwga0NGQ29tcGFyZUFuY2hvcmVkKTsKIH0KIAot
Q0ZTdHJpbmdSZWYgY3JlYXRlWE1MU3RyaW5nRnJvbVdlYkFyY2hpdmVEYXRhKENGRGF0YVJlZiB3
ZWJBcmNoaXZlRGF0YSkKK1JldGFpblB0cjxDRlN0cmluZ1JlZj4gY3JlYXRlWE1MU3RyaW5nRnJv
bVdlYkFyY2hpdmVEYXRhKENGRGF0YVJlZiB3ZWJBcmNoaXZlRGF0YSkKIHsKICAgICBDRkVycm9y
UmVmIGVycm9yID0gMDsKICAgICBDRlByb3BlcnR5TGlzdEZvcm1hdCBmb3JtYXQgPSBrQ0ZQcm9w
ZXJ0eUxpc3RCaW5hcnlGb3JtYXRfdjFfMDsKQEAgLTIwOCw4ICsyMDgsOCBAQCBDRlN0cmluZ1Jl
ZiBjcmVhdGVYTUxTdHJpbmdGcm9tV2ViQXJjaGl2ZURhdGEoQ0ZEYXRhUmVmIHdlYkFyY2hpdmVE
YXRhKQogCiAgICAgaWYgKCFwcm9wZXJ0eUxpc3QpIHsKICAgICAgICAgaWYgKGVycm9yKQotICAg
ICAgICAgICAgcmV0dXJuIENGRXJyb3JDb3B5RGVzY3JpcHRpb24oZXJyb3IpOwotICAgICAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8Q0ZTdHJpbmdSZWY+KENGUmV0YWluKENGU1RSKCJBbiB1bmtub3du
IGVycm9yIG9jY3VycmVkIGNvbnZlcnRpbmcgZGF0YSB0byBwcm9wZXJ0eSBsaXN0LiIpKSk7Cisg
ICAgICAgICAgICByZXR1cm4gYWRvcHRDRihDRkVycm9yQ29weURlc2NyaXB0aW9uKGVycm9yKSk7
CisgICAgICAgIHJldHVybiBDRlNUUigiQW4gdW5rbm93biBlcnJvciBvY2N1cnJlZCBjb252ZXJ0
aW5nIGRhdGEgdG8gcHJvcGVydHkgbGlzdC4iKTsKICAgICB9CiAKICAgICBSZXRhaW5QdHI8Q0ZN
dXRhYmxlQXJyYXlSZWY+IHJlc291cmNlcyA9IGFkb3B0Q0YoQ0ZBcnJheUNyZWF0ZU11dGFibGUo
a0NGQWxsb2NhdG9yRGVmYXVsdCwgMCwgJmtDRlR5cGVBcnJheUNhbGxCYWNrcykpOwpAQCAtMjUw
LDggKzI1MCw4IEBAIENGU3RyaW5nUmVmIGNyZWF0ZVhNTFN0cmluZ0Zyb21XZWJBcmNoaXZlRGF0
YShDRkRhdGFSZWYgd2ViQXJjaGl2ZURhdGEpCiAKICAgICBpZiAoIXhtbERhdGEpIHsKICAgICAg
ICAgaWYgKGVycm9yKQotICAgICAgICAgICAgcmV0dXJuIENGRXJyb3JDb3B5RGVzY3JpcHRpb24o
ZXJyb3IpOwotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q0ZTdHJpbmdSZWY+KENGUmV0YWlu
KENGU1RSKCJBbiB1bmtub3duIGVycm9yIG9jY3VycmVkIGNvbnZlcnRpbmcgcHJvcGVydHkgbGlz
dCB0byBkYXRhLiIpKSk7CisgICAgICAgICAgICByZXR1cm4gYWRvcHRDRihDRkVycm9yQ29weURl
c2NyaXB0aW9uKGVycm9yKSk7CisgICAgICAgIHJldHVybiBDRlNUUigiQW4gdW5rbm93biBlcnJv
ciBvY2N1cnJlZCBjb252ZXJ0aW5nIHByb3BlcnR5IGxpc3QgdG8gZGF0YS4iKTsKICAgICB9CiAK
ICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHhtbFN0cmluZyA9IGFkb3B0Q0YoQ0ZTdHJpbmdD
cmVhdGVGcm9tRXh0ZXJuYWxSZXByZXNlbnRhdGlvbihrQ0ZBbGxvY2F0b3JEZWZhdWx0LCB4bWxE
YXRhLmdldCgpLCBrQ0ZTdHJpbmdFbmNvZGluZ1VURjgpKTsKQEAgLTI2Niw3ICsyNjYsNyBAQCBD
RlN0cmluZ1JlZiBjcmVhdGVYTUxTdHJpbmdGcm9tV2ViQXJjaGl2ZURhdGEoQ0ZEYXRhUmVmIHdl
YkFyY2hpdmVEYXRhKQogICAgIHF1aWNrTG9va1VSTFJlcGxhY2VtZW50cygpLmNsZWFyKCk7CiAj
ZW5kaWYKIAotICAgIHJldHVybiBzdHJpbmcubGVha1JlZigpOworICAgIHJldHVybiBzdHJpbmc7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmVUZXN0U3VwcG9ydApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9jb2NvYS9XZWJWaWV3VmlzdWFsSWRlbnRpZmljYXRpb25PdmVy
bGF5Lm1tIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9jb2NvYS9XZWJWaWV3VmlzdWFsSWRlbnRp
ZmljYXRpb25PdmVybGF5Lm1tCmluZGV4IDFmN2E2MmFhM2ZjZjQ3Y2MyMzEwOWIzZmJiMzkzZWFi
YjgzMzNmNDIuLjlkYTg4MzBiYTJiOGUwN2M1ZjY3ZjBlMzQ2ZGJiZTkxYjljZWUzN2UgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvY29jb2EvV2ViVmlld1Zpc3VhbElkZW50aWZp
Y2F0aW9uT3ZlcmxheS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL2NvY29hL1dlYlZp
ZXdWaXN1YWxJZGVudGlmaWNhdGlvbk92ZXJsYXkubW0KQEAgLTEyNCw3ICsxMjQsNyBAQCAtICh2
b2lkKW9ic2VydmVWYWx1ZUZvcktleVBhdGg6KE5TU3RyaW5nICopa2V5UGF0aCBvZk9iamVjdDoo
aWQpb2JqZWN0IGNoYW5nZTooTgogc3RhdGljIENURm9udFJlZiBpZGVudGlmaWNhdGlvbkZvbnQo
KQogewogICAgIGF1dG8gbWF0cml4ID0gQ0dBZmZpbmVUcmFuc2Zvcm1JZGVudGl0eTsKLSAgICBy
ZXR1cm4gKENURm9udFJlZilDRkF1dG9yZWxlYXNlKENURm9udENyZWF0ZVdpdGhOYW1lKENGU1RS
KCJIZWx2ZXRpY2EiKSwgMjAsICZtYXRyaXgpKTsKKyAgICByZXR1cm4gYWRvcHRDRihDVEZvbnRD
cmVhdGVXaXRoTmFtZShDRlNUUigiSGVsdmV0aWNhIiksIDIwLCAmbWF0cml4KSkuYXV0b3JlbGVh
c2UoKTsKIH0KIAogY29uc3RleHByIENHRmxvYXQgaG9yaXpvbnRhbE1hcmdpbiA9IDE1OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9tYWMvU3RyaW5nVXRpbGl0aWVzLm1tIGIv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9tYWMvU3RyaW5nVXRpbGl0aWVzLm1tCmluZGV4IDY4NGZk
ODg3OTc2NTNmNDhjYjM2YzQ1ZGIyMDgxN2Y0YzJhZTg0M2IuLjZlMmVlNmUzYjMwYjZmZDRjZjkw
NDJiNDliZGJlNWRmNzJjMTA3MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
bWFjL1N0cmluZ1V0aWxpdGllcy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL21hYy9T
dHJpbmdVdGlsaXRpZXMubW0KQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAK
IE5TU3RyaW5nICpuc1N0cmluZ0Zyb21XZWJDb3JlU3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyaW5n
KQogewotICAgIHJldHVybiBzdHJpbmcuaXNFbXB0eSgpID8gQCIiIDogQ0ZCcmlkZ2luZ1JlbGVh
c2UoV0tTdHJpbmdDb3B5Q0ZTdHJpbmcoMCwgdG9BUEkoc3RyaW5nLmltcGwoKSkpKTsKKyAgICBy
ZXR1cm4gc3RyaW5nLmlzRW1wdHkoKSA/IEAiIiA6IGFkb3B0Q0YoV0tTdHJpbmdDb3B5Q0ZTdHJp
bmcoMCwgdG9BUEkoc3RyaW5nLmltcGwoKSkpKS5icmlkZ2luZ0F1dG9yZWxlYXNlKCk7CiB9CiAK
ICNpZiBFTkFCTEUoVEVMRVBIT05FX05VTUJFUl9ERVRFQ1RJT04pICYmIFBMQVRGT1JNKE1BQykK
QEAgLTY1LDExICs2NSwxMSBAQCBOU1N0cmluZyAqZm9ybWF0dGVkUGhvbmVOdW1iZXJTdHJpbmco
TlNTdHJpbmcgKm9yaWdpbmFsUGhvbmVOdW1iZXIpCiAgICAgaWYgKCFwaG9uZU51bWJlcikKICAg
ICAgICAgcmV0dXJuIG9yaWdpbmFsUGhvbmVOdW1iZXI7CiAKLSAgICBDRlN0cmluZ1JlZiBwaG9u
ZU51bWJlclN0cmluZyA9IENGUGhvbmVOdW1iZXJDb3B5Rm9ybWF0dGVkUmVwcmVzZW50YXRpb24o
cGhvbmVOdW1iZXIuZ2V0KCkpOworICAgIGF1dG8gcGhvbmVOdW1iZXJTdHJpbmcgPSBhZG9wdENG
KENGUGhvbmVOdW1iZXJDb3B5Rm9ybWF0dGVkUmVwcmVzZW50YXRpb24ocGhvbmVOdW1iZXIuZ2V0
KCkpKTsKICAgICBpZiAoIXBob25lTnVtYmVyU3RyaW5nKQotICAgICAgICBwaG9uZU51bWJlclN0
cmluZyA9IENGUGhvbmVOdW1iZXJDb3B5VW5mb3JtYXR0ZWRSZXByZXNlbnRhdGlvbihwaG9uZU51
bWJlci5nZXQoKSk7CisgICAgICAgIHBob25lTnVtYmVyU3RyaW5nID0gYWRvcHRDRihDRlBob25l
TnVtYmVyQ29weVVuZm9ybWF0dGVkUmVwcmVzZW50YXRpb24ocGhvbmVOdW1iZXIuZ2V0KCkpKTsK
IAotICAgIHJldHVybiBDRkJyaWRnaW5nUmVsZWFzZShwaG9uZU51bWJlclN0cmluZyk7CisgICAg
cmV0dXJuIHBob25lTnVtYmVyU3RyaW5nLmJyaWRnaW5nQXV0b3JlbGVhc2UoKTsKIH0KIAogI2Vs
c2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9tYWMvUGx1Z2luUHJv
Y2Vzc01hYy5tbSBiL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9tYWMvUGx1Z2luUHJvY2Vz
c01hYy5tbQppbmRleCAzMWU5Y2Y5MmYwMmVlMGNjZjEwN2FmZmU1NmMwNTM0OGZiYzVjNGYwLi5j
ZmE2NmE0ZTJmMjYxMzdiM2M5ZjcyNTdmNjU5M2Y0OGYxNDFhNDk3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvbWFjL1BsdWdpblByb2Nlc3NNYWMubW0KKysrIGIvU291
cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL21hYy9QbHVnaW5Qcm9jZXNzTWFjLm1tCkBAIC0zMTEs
MjAgKzMxMSwyMCBAQCBzdGF0aWMgdm9pZCBpbml0aWFsaXplQ29jb2FPdmVycmlkZXMoKQogCiAg
ICAgTlNOb3RpZmljYXRpb25DZW50ZXIgKmRlZmF1bHRDZW50ZXIgPSBbTlNOb3RpZmljYXRpb25D
ZW50ZXIgZGVmYXVsdENlbnRlcl07CiAKKyAgICAvLyBXZSBsZWFrIHRoZSB0d28gb2JzZXJ2ZXJz
IHNvIHRoYXQgdGhleSBvYnNlcnZlIG5vdGlmaWNhdGlvbnMgZm9yIHRoZSBsaWZldGltZSBvZiB0
aGUgcHJvY2Vzcy4KICAgICAvLyBUcmFjayB3aGVuIGFueSBDb2NvYSB3aW5kb3cgaXMgYWJvdXQg
dG8gYmUgYmUgc2hvd24uCi0gICAgaWQgb3JkZXJPblNjcmVlbk9ic2VydmVyID0gW2RlZmF1bHRD
ZW50ZXIgYWRkT2JzZXJ2ZXJGb3JOYW1lOk5TV2luZG93V2lsbE9yZGVyT25TY3JlZW5Ob3RpZmlj
YXRpb24KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBvYmplY3Q6bmlsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHF1ZXVlOm5pbAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2luZ0Jsb2NrOl4oTlNOb3RpZmlj
YXRpb24gKm5vdGlmaWNhdGlvbikgeyBmdWxsc2NyZWVuV2luZG93VHJhY2tlcigpLndpbmRvd1No
b3duKFtub3RpZmljYXRpb24gb2JqZWN0XSk7IH1dOworICAgIGlkIG9yZGVyT25TY3JlZW5PYnNl
cnZlciA9IHJldGFpblB0cihbZGVmYXVsdENlbnRlciBhZGRPYnNlcnZlckZvck5hbWU6TlNXaW5k
b3dXaWxsT3JkZXJPblNjcmVlbk5vdGlmaWNhdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYmplY3Q6bmlsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBxdWV1ZTpuaWwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2luZ0Jsb2NrOl4oTlNOb3RpZmljYXRpb24g
Km5vdGlmaWNhdGlvbikgeyBmdWxsc2NyZWVuV2luZG93VHJhY2tlcigpLndpbmRvd1Nob3duKFtu
b3RpZmljYXRpb24gb2JqZWN0XSk7IH1dKS5sZWFrUmVmKCk7CisgICAgVU5VU0VEX1BBUkFNKG9y
ZGVyT25TY3JlZW5PYnNlcnZlcik7CiAgICAgLy8gVHJhY2sgd2hlbiBhbnkgQ29jb2Egd2luZG93
IGlzIGFib3V0IHRvIGJlIGhpZGRlbi4KLSAgICBpZCBvcmRlck9mZlNjcmVlbk9ic2VydmVyID0g
W2RlZmF1bHRDZW50ZXIgYWRkT2JzZXJ2ZXJGb3JOYW1lOk5TV2luZG93V2lsbE9yZGVyT2ZmU2Ny
ZWVuTm90aWZpY2F0aW9uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG9iamVjdDpuaWwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1ZXVlOm5pbAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzaW5nQmxvY2s6XihO
U05vdGlmaWNhdGlvbiAqbm90aWZpY2F0aW9uKSB7IGZ1bGxzY3JlZW5XaW5kb3dUcmFja2VyKCku
d2luZG93SGlkZGVuKFtub3RpZmljYXRpb24gb2JqZWN0XSk7IH1dOwotCi0gICAgLy8gTGVhayB0
aGUgdHdvIG9ic2VydmVycyBzbyB0aGF0IHRoZXkgb2JzZXJ2ZSBub3RpZmljYXRpb25zIGZvciB0
aGUgbGlmZXRpbWUgb2YgdGhlIHByb2Nlc3MuCi0gICAgQ0ZSZXRhaW4oKF9fYnJpZGdlIENGVHlw
ZVJlZilvcmRlck9uU2NyZWVuT2JzZXJ2ZXIpOwotICAgIENGUmV0YWluKChfX2JyaWRnZSBDRlR5
cGVSZWYpb3JkZXJPZmZTY3JlZW5PYnNlcnZlcik7CisgICAgaWQgb3JkZXJPZmZTY3JlZW5PYnNl
cnZlciA9IHJldGFpblB0cihbZGVmYXVsdENlbnRlciBhZGRPYnNlcnZlckZvck5hbWU6TlNXaW5k
b3dXaWxsT3JkZXJPZmZTY3JlZW5Ob3RpZmljYXRpb24KKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9iamVjdDpuaWwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBxdWV1ZTpuaWwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNpbmdCbG9jazpeKE5TTm90aWZpY2F0
aW9uICpub3RpZmljYXRpb24pIHsgZnVsbHNjcmVlbldpbmRvd1RyYWNrZXIoKS53aW5kb3dIaWRk
ZW4oW25vdGlmaWNhdGlvbiBvYmplY3RdKTsgfV0pLmxlYWtSZWYoKTsKKyAgICBVTlVTRURfUEFS
QU0ob3JkZXJPZmZTY3JlZW5PYnNlcnZlcik7CisKIH0KIAogdm9pZCBQbHVnaW5Qcm9jZXNzOjpz
ZXRNb2RhbFdpbmRvd0lzU2hvd2luZyhib29sIG1vZGFsV2luZG93SXNTaG93aW5nKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL1Bhc3RlYm9hcmRUeXBlcy5tbSBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL21hYy9QYXN0ZWJvYXJkVHlwZXMubW0KaW5kZXggNTNmOThjMTM3NGY5
NGQ1N2IyNmU0NmE2ZGIyNmI4YWQyNGU3OTc1ZS4uZWQ0YzdiOWI4ODE5NmYyYTlhYTBjYTYyMzg0
ODEwNGM4OTg4MzEzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL1Bhc3Rl
Ym9hcmRUeXBlcy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvUGFzdGVib2FyZFR5
cGVzLm1tCkBAIC0zNyw0NiArMzcsNDAgQEAgTlNTdHJpbmcgKiBjb25zdCBQYXN0ZWJvYXJkVHlw
ZXM6OldlYlVSTHNXaXRoVGl0bGVzUGJvYXJkVHlwZSA9IEAiV2ViVVJMc1dpdGhUaXQKIE5TU3Ry
aW5nICogY29uc3QgUGFzdGVib2FyZFR5cGVzOjpXZWJVUkxQYm9hcmRUeXBlID0gQCJwdWJsaWMu
dXJsIjsKIE5TU3RyaW5nICogY29uc3QgUGFzdGVib2FyZFR5cGVzOjpXZWJVUkxOYW1lUGJvYXJk
VHlwZSA9IEAicHVibGljLnVybC1uYW1lIjsKIE5TU3RyaW5nICogY29uc3QgUGFzdGVib2FyZFR5
cGVzOjpXZWJEdW1teVBib2FyZFR5cGUgPSBAIkFwcGxlIFdlYktpdCBkdW1teSBwYXN0ZWJvYXJk
IHR5cGUiOwotCi1zdGF0aWMgaW5saW5lIE5TQXJyYXkgKnJldGFpbihOU0FycmF5ICphcnJheSkK
LXsKLSAgICBDRlJldGFpbihhcnJheSk7Ci0gICAgcmV0dXJuIGFycmF5OwotfQogICAgIAogTlNB
cnJheSogUGFzdGVib2FyZFR5cGVzOjpmb3JFZGl0aW5nKCkKIHsKIEFMTE9XX0RFUFJFQ0FURURf
REVDTEFSQVRJT05TX0JFR0lOIAotICAgIHN0YXRpYyBOU0FycmF5ICp0eXBlcyA9IHJldGFpbihA
W1dlYkFyY2hpdmVQYm9hcmRUeXBlLCAoX19icmlkZ2UgTlNTdHJpbmcgKilrVVRUeXBlV2ViQXJj
aGl2ZSwgV2ViQ29yZTo6bGVnYWN5SFRNTFBhc3RlYm9hcmRUeXBlKCksIFdlYkNvcmU6OmxlZ2Fj
eUZpbGVuYW1lc1Bhc3RlYm9hcmRUeXBlKCksIFdlYkNvcmU6OmxlZ2FjeVRJRkZQYXN0ZWJvYXJk
VHlwZSgpLCBXZWJDb3JlOjpsZWdhY3lQREZQYXN0ZWJvYXJkVHlwZSgpLAotICAgICAgICBXZWJD
b3JlOjpsZWdhY3lVUkxQYXN0ZWJvYXJkVHlwZSgpLCBXZWJDb3JlOjpsZWdhY3lSVEZEUGFzdGVi
b2FyZFR5cGUoKSwgV2ViQ29yZTo6bGVnYWN5UlRGUGFzdGVib2FyZFR5cGUoKSwgV2ViQ29yZTo6
bGVnYWN5U3RyaW5nUGFzdGVib2FyZFR5cGUoKSwgV2ViQ29yZTo6bGVnYWN5Q29sb3JQYXN0ZWJv
YXJkVHlwZSgpLCAoX19icmlkZ2UgTlNTdHJpbmcgKilrVVRUeXBlUE5HXSk7CisgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxOU0FycmF5Pj4gdHlwZXMgPSBAW1dlYkFyY2hpdmVQ
Ym9hcmRUeXBlLCAoX19icmlkZ2UgTlNTdHJpbmcgKilrVVRUeXBlV2ViQXJjaGl2ZSwgV2ViQ29y
ZTo6bGVnYWN5SFRNTFBhc3RlYm9hcmRUeXBlKCksIFdlYkNvcmU6OmxlZ2FjeUZpbGVuYW1lc1Bh
c3RlYm9hcmRUeXBlKCksIFdlYkNvcmU6OmxlZ2FjeVRJRkZQYXN0ZWJvYXJkVHlwZSgpLCBXZWJD
b3JlOjpsZWdhY3lQREZQYXN0ZWJvYXJkVHlwZSgpLAorICAgICAgICBXZWJDb3JlOjpsZWdhY3lV
UkxQYXN0ZWJvYXJkVHlwZSgpLCBXZWJDb3JlOjpsZWdhY3lSVEZEUGFzdGVib2FyZFR5cGUoKSwg
V2ViQ29yZTo6bGVnYWN5UlRGUGFzdGVib2FyZFR5cGUoKSwgV2ViQ29yZTo6bGVnYWN5U3RyaW5n
UGFzdGVib2FyZFR5cGUoKSwgV2ViQ29yZTo6bGVnYWN5Q29sb3JQYXN0ZWJvYXJkVHlwZSgpLCAo
X19icmlkZ2UgTlNTdHJpbmcgKilrVVRUeXBlUE5HXTsKIEFMTE9XX0RFUFJFQ0FURURfREVDTEFS
QVRJT05TX0VORAotICAgIHJldHVybiB0eXBlczsKKyAgICByZXR1cm4gdHlwZXMuZ2V0KCkuZ2V0
KCk7CiB9CiAKIE5TQXJyYXkqIFBhc3RlYm9hcmRUeXBlczo6Zm9yVVJMKCkKIHsKLSAgICBzdGF0
aWMgTlNBcnJheSAqdHlwZXMgPSByZXRhaW4oQFtXZWJVUkxzV2l0aFRpdGxlc1Bib2FyZFR5cGUs
IFdlYkNvcmU6OmxlZ2FjeVVSTFBhc3RlYm9hcmRUeXBlKCksIFdlYlVSTFBib2FyZFR5cGUsICBX
ZWJVUkxOYW1lUGJvYXJkVHlwZSwgV2ViQ29yZTo6bGVnYWN5U3RyaW5nUGFzdGVib2FyZFR5cGUo
KSwgV2ViQ29yZTo6bGVnYWN5RmlsZW5hbWVzUGFzdGVib2FyZFR5cGUoKSwgV2ViQ29yZTo6bGVn
YWN5RmlsZXNQcm9taXNlUGFzdGVib2FyZFR5cGUoKV0pOwotICAgIHJldHVybiB0eXBlczsKKyAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPE5TQXJyYXk+PiB0eXBlcyA9IEBbV2Vi
VVJMc1dpdGhUaXRsZXNQYm9hcmRUeXBlLCBXZWJDb3JlOjpsZWdhY3lVUkxQYXN0ZWJvYXJkVHlw
ZSgpLCBXZWJVUkxQYm9hcmRUeXBlLCAgV2ViVVJMTmFtZVBib2FyZFR5cGUsIFdlYkNvcmU6Omxl
Z2FjeVN0cmluZ1Bhc3RlYm9hcmRUeXBlKCksIFdlYkNvcmU6OmxlZ2FjeUZpbGVuYW1lc1Bhc3Rl
Ym9hcmRUeXBlKCksIFdlYkNvcmU6OmxlZ2FjeUZpbGVzUHJvbWlzZVBhc3RlYm9hcmRUeXBlKCld
OworICAgIHJldHVybiB0eXBlcy5nZXQoKS5nZXQoKTsKIH0KIAogTlNBcnJheSogUGFzdGVib2Fy
ZFR5cGVzOjpmb3JJbWFnZXMoKQogewotICAgIHN0YXRpYyBOU0FycmF5ICp0eXBlcyA9IHJldGFp
bihAW1dlYkNvcmU6OmxlZ2FjeVRJRkZQYXN0ZWJvYXJkVHlwZSgpLCBXZWJVUkxzV2l0aFRpdGxl
c1Bib2FyZFR5cGUsIFdlYkNvcmU6OmxlZ2FjeVVSTFBhc3RlYm9hcmRUeXBlKCksIFdlYlVSTFBi
b2FyZFR5cGUsIFdlYlVSTE5hbWVQYm9hcmRUeXBlLCBXZWJDb3JlOjpsZWdhY3lTdHJpbmdQYXN0
ZWJvYXJkVHlwZSgpXSk7Ci0gICAgcmV0dXJuIHR5cGVzOworICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxSZXRhaW5QdHI8TlNBcnJheT4+IHR5cGVzID0gQFtXZWJDb3JlOjpsZWdhY3lUSUZGUGFz
dGVib2FyZFR5cGUoKSwgV2ViVVJMc1dpdGhUaXRsZXNQYm9hcmRUeXBlLCBXZWJDb3JlOjpsZWdh
Y3lVUkxQYXN0ZWJvYXJkVHlwZSgpLCBXZWJVUkxQYm9hcmRUeXBlLCBXZWJVUkxOYW1lUGJvYXJk
VHlwZSwgV2ViQ29yZTo6bGVnYWN5U3RyaW5nUGFzdGVib2FyZFR5cGUoKV07CisgICAgcmV0dXJu
IHR5cGVzLmdldCgpLmdldCgpOwogfQogCiBOU0FycmF5KiBQYXN0ZWJvYXJkVHlwZXM6OmZvcklt
YWdlc1dpdGhBcmNoaXZlKCkKIHsKLSAgICBzdGF0aWMgTlNBcnJheSAqdHlwZXMgPSByZXRhaW4o
QFtXZWJDb3JlOjpsZWdhY3lUSUZGUGFzdGVib2FyZFR5cGUoKSwgV2ViVVJMc1dpdGhUaXRsZXNQ
Ym9hcmRUeXBlLCBXZWJDb3JlOjpsZWdhY3lVUkxQYXN0ZWJvYXJkVHlwZSgpLCBXZWJVUkxQYm9h
cmRUeXBlLCBXZWJVUkxOYW1lUGJvYXJkVHlwZSwgV2ViQ29yZTo6bGVnYWN5U3RyaW5nUGFzdGVi
b2FyZFR5cGUoKSwgV2ViQ29yZTo6bGVnYWN5UlRGRFBhc3RlYm9hcmRUeXBlKCksIFdlYkFyY2hp
dmVQYm9hcmRUeXBlXSk7Ci0gICAgcmV0dXJuIHR5cGVzOworICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxSZXRhaW5QdHI8TlNBcnJheT4+IHR5cGVzID0gQFtXZWJDb3JlOjpsZWdhY3lUSUZGUGFz
dGVib2FyZFR5cGUoKSwgV2ViVVJMc1dpdGhUaXRsZXNQYm9hcmRUeXBlLCBXZWJDb3JlOjpsZWdh
Y3lVUkxQYXN0ZWJvYXJkVHlwZSgpLCBXZWJVUkxQYm9hcmRUeXBlLCBXZWJVUkxOYW1lUGJvYXJk
VHlwZSwgV2ViQ29yZTo6bGVnYWN5U3RyaW5nUGFzdGVib2FyZFR5cGUoKSwgV2ViQ29yZTo6bGVn
YWN5UlRGRFBhc3RlYm9hcmRUeXBlKCksIFdlYkFyY2hpdmVQYm9hcmRUeXBlXTsKKyAgICByZXR1
cm4gdHlwZXMuZ2V0KCkuZ2V0KCk7CiB9CiAKIE5TQXJyYXkqIFBhc3RlYm9hcmRUeXBlczo6Zm9y
U2VsZWN0aW9uKCkKIHsKIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOIAotICAg
IHN0YXRpYyBOU0FycmF5ICp0eXBlcyA9IHJldGFpbihAW1dlYkFyY2hpdmVQYm9hcmRUeXBlLCAo
X19icmlkZ2UgTlNTdHJpbmcgKilrVVRUeXBlV2ViQXJjaGl2ZSwgV2ViQ29yZTo6bGVnYWN5UlRG
RFBhc3RlYm9hcmRUeXBlKCksIFdlYkNvcmU6OmxlZ2FjeVJURlBhc3RlYm9hcmRUeXBlKCksIFdl
YkNvcmU6OmxlZ2FjeVN0cmluZ1Bhc3RlYm9hcmRUeXBlKCldKTsKKyAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8UmV0YWluUHRyPE5TQXJyYXk+PiB0eXBlcyA9IEBbV2ViQXJjaGl2ZVBib2FyZFR5
cGUsIChfX2JyaWRnZSBOU1N0cmluZyAqKWtVVFR5cGVXZWJBcmNoaXZlLCBXZWJDb3JlOjpsZWdh
Y3lSVEZEUGFzdGVib2FyZFR5cGUoKSwgV2ViQ29yZTo6bGVnYWN5UlRGUGFzdGVib2FyZFR5cGUo
KSwgV2ViQ29yZTo6bGVnYWN5U3RyaW5nUGFzdGVib2FyZFR5cGUoKV07CiBBTExPV19ERVBSRUNB
VEVEX0RFQ0xBUkFUSU9OU19FTkQKLSAgICByZXR1cm4gdHlwZXM7CisgICAgcmV0dXJuIHR5cGVz
LmdldCgpLmdldCgpOwogfQogICAgIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbSBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCmluZGV4IGE1YzZiYmMwY2NmZTRm
YjJlYjMwOTc3N2NlOGY3ZTdjYTZiYjM5OWMuLmU2ZmI3ODEwZjk2NTc4ZWUyM2YxZjliYTIzMWFh
MTQzNjk5OWQ4OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dl
YlZpZXdJbXBsLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJ
bXBsLm1tCkBAIC0yMjU5LDggKzIyNTksNyBAQCBib29sIFdlYlZpZXdJbXBsOjphY2NlcHRzRmly
c3RNb3VzZShOU0V2ZW50ICpldmVudCkKICAgICAvLyBUaGVyZSdzIGEgY2hhbmNlIHRoYXQgcmVz
cG9uZGluZyB0byB0aGlzIGV2ZW50IHdpbGwgcnVuIGEgbmVzdGVkIGV2ZW50IGxvb3AsIGFuZAog
ICAgIC8vIGZldGNoaW5nIGEgbmV3IGV2ZW50IG1pZ2h0IHJlbGVhc2UgdGhlIG9sZCBvbmUuIFJl
dGFpbmluZyBhbmQgdGhlbiBhdXRvcmVsZWFzaW5nCiAgICAgLy8gdGhlIGN1cnJlbnQgZXZlbnQg
cHJldmVudHMgdGhhdCBmcm9tIGNhdXNpbmcgYSBwcm9ibGVtIGluc2lkZSBXZWJLaXQgb3IgQXBw
S2l0IGNvZGUuCi0gICAgQ0ZSZXRhaW4oKF9fYnJpZGdlIENGVHlwZVJlZilldmVudCk7Ci0gICAg
Q0ZBdXRvcmVsZWFzZSgoX19icmlkZ2UgQ0ZUeXBlUmVmKWV2ZW50KTsKKyAgICByZXRhaW5QdHIo
ZXZlbnQpLmF1dG9yZWxlYXNlKCk7CiAKICAgICBpZiAoIVttX3ZpZXcgaGl0VGVzdDpldmVudC5s
b2NhdGlvbkluV2luZG93XSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjI3OSw4ICsyMjc4
LDcgQEAgYm9vbCBXZWJWaWV3SW1wbDo6c2hvdWxkRGVsYXlXaW5kb3dPcmRlcmluZ0ZvckV2ZW50
KE5TRXZlbnQgKmV2ZW50KQogICAgIC8vIFRoZXJlJ3MgYSBjaGFuY2UgdGhhdCByZXNwb25kaW5n
IHRvIHRoaXMgZXZlbnQgd2lsbCBydW4gYSBuZXN0ZWQgZXZlbnQgbG9vcCwgYW5kCiAgICAgLy8g
ZmV0Y2hpbmcgYSBuZXcgZXZlbnQgbWlnaHQgcmVsZWFzZSB0aGUgb2xkIG9uZS4gUmV0YWluaW5n
IGFuZCB0aGVuIGF1dG9yZWxlYXNpbmcKICAgICAvLyB0aGUgY3VycmVudCBldmVudCBwcmV2ZW50
cyB0aGF0IGZyb20gY2F1c2luZyBhIHByb2JsZW0gaW5zaWRlIFdlYktpdCBvciBBcHBLaXQgY29k
ZS4KLSAgICBDRlJldGFpbigoX19icmlkZ2UgQ0ZUeXBlUmVmKWV2ZW50KTsKLSAgICBDRkF1dG9y
ZWxlYXNlKChfX2JyaWRnZSBDRlR5cGVSZWYpZXZlbnQpOworICAgIHJldGFpblB0cihldmVudCku
YXV0b3JlbGVhc2UoKTsKIAogICAgIGlmICghW21fdmlldyBoaXRUZXN0OmV2ZW50LmxvY2F0aW9u
SW5XaW5kb3ddKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC00ODExLDI0ICs0ODA5LDIwIEBA
IHZvaWQgV2ViVmlld0ltcGw6OmRvbmVXaXRoS2V5RXZlbnQoTlNFdmVudCAqZXZlbnQsIGJvb2wg
ZXZlbnRXYXNIYW5kbGVkKQogCiBOU0FycmF5ICpXZWJWaWV3SW1wbDo6dmFsaWRBdHRyaWJ1dGVz
Rm9yTWFya2VkVGV4dCgpCiB7Ci0gICAgc3RhdGljIE5TQXJyYXkgKnZhbGlkQXR0cmlidXRlczsK
LSAgICBpZiAoIXZhbGlkQXR0cmlidXRlcykgewotICAgICAgICB2YWxpZEF0dHJpYnV0ZXMgPSBA
WwotICAgICAgICAgICAgTlNVbmRlcmxpbmVTdHlsZUF0dHJpYnV0ZU5hbWUsCi0gICAgICAgICAg
ICBOU1VuZGVybGluZUNvbG9yQXR0cmlidXRlTmFtZSwKLSAgICAgICAgICAgIE5TTWFya2VkQ2xh
dXNlU2VnbWVudEF0dHJpYnV0ZU5hbWUsCi0gICAgICAgICAgICBOU1RleHRBbHRlcm5hdGl2ZXNB
dHRyaWJ1dGVOYW1lLAotICAgICAgICAgICAgTlNUZXh0SW5zZXJ0aW9uVW5kb2FibGVBdHRyaWJ1
dGVOYW1lLAotICAgICAgICBdOwotICAgICAgICAvLyBOU1RleHQgYWxzbyBzdXBwb3J0cyB0aGUg
Zm9sbG93aW5nIGF0dHJpYnV0ZXMsIGJ1dCBpdCdzCi0gICAgICAgIC8vIGhhcmQgdG8gdGVsbCB3
aGljaCBhcmUgcmVhbGx5IHJlcXVpcmVkIGZvciB0ZXh0IGlucHV0IHRvCi0gICAgICAgIC8vIHdv
cmsgd2VsbDsgSSBoYXZlIG5vdCBzZWVuIGFueSBpbnB1dCBtZXRob2QgbWFrZSB1c2Ugb2YgdGhl
bSB5ZXQuCi0gICAgICAgIC8vICAgICBOU0ZvbnRBdHRyaWJ1dGVOYW1lLCBOU0ZvcmVncm91bmRD
b2xvckF0dHJpYnV0ZU5hbWUsCi0gICAgICAgIC8vICAgICBOU0JhY2tncm91bmRDb2xvckF0dHJp
YnV0ZU5hbWUsIE5TTGFuZ3VhZ2VBdHRyaWJ1dGVOYW1lLgotICAgICAgICBDRlJldGFpbih2YWxp
ZEF0dHJpYnV0ZXMpOwotICAgIH0KKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRy
PE5TQXJyYXk+PiB2YWxpZEF0dHJpYnV0ZXMgPSBAWworICAgICAgICBOU1VuZGVybGluZVN0eWxl
QXR0cmlidXRlTmFtZSwKKyAgICAgICAgTlNVbmRlcmxpbmVDb2xvckF0dHJpYnV0ZU5hbWUsCisg
ICAgICAgIE5TTWFya2VkQ2xhdXNlU2VnbWVudEF0dHJpYnV0ZU5hbWUsCisgICAgICAgIE5TVGV4
dEFsdGVybmF0aXZlc0F0dHJpYnV0ZU5hbWUsCisgICAgICAgIE5TVGV4dEluc2VydGlvblVuZG9h
YmxlQXR0cmlidXRlTmFtZSwKKyAgICBdOworICAgIC8vIE5TVGV4dCBhbHNvIHN1cHBvcnRzIHRo
ZSBmb2xsb3dpbmcgYXR0cmlidXRlcywgYnV0IGl0J3MKKyAgICAvLyBoYXJkIHRvIHRlbGwgd2hp
Y2ggYXJlIHJlYWxseSByZXF1aXJlZCBmb3IgdGV4dCBpbnB1dCB0bworICAgIC8vIHdvcmsgd2Vs
bDsgSSBoYXZlIG5vdCBzZWVuIGFueSBpbnB1dCBtZXRob2QgbWFrZSB1c2Ugb2YgdGhlbSB5ZXQu
CisgICAgLy8gICAgIE5TRm9udEF0dHJpYnV0ZU5hbWUsIE5TRm9yZWdyb3VuZENvbG9yQXR0cmli
dXRlTmFtZSwKKyAgICAvLyAgICAgTlNCYWNrZ3JvdW5kQ29sb3JBdHRyaWJ1dGVOYW1lLCBOU0xh
bmd1YWdlQXR0cmlidXRlTmFtZS4KICAgICBMT0coVGV4dElucHV0LCAidmFsaWRBdHRyaWJ1dGVz
Rm9yTWFya2VkVGV4dCAtPiAoLi4uKSIpOwotICAgIHJldHVybiB2YWxpZEF0dHJpYnV0ZXM7Cisg
ICAgcmV0dXJuIHZhbGlkQXR0cmlidXRlcy5nZXQoKS5nZXQoKTsKIH0KIAogc3RhdGljIFZlY3Rv
cjxXZWJDb3JlOjpDb21wb3NpdGlvblVuZGVybGluZT4gZXh0cmFjdFVuZGVybGluZXMoTlNBdHRy
aWJ1dGVkU3RyaW5nICpzdHJpbmcpCkBAIC01MjAyLDggKzUxOTYsNyBAQCBib29sIFdlYlZpZXdJ
bXBsOjpwZXJmb3JtS2V5RXF1aXZhbGVudChOU0V2ZW50ICpldmVudCkKICAgICAvLyBUaGVyZSdz
IGEgY2hhbmNlIHRoYXQgcmVzcG9uZGluZyB0byB0aGlzIGV2ZW50IHdpbGwgcnVuIGEgbmVzdGVk
IGV2ZW50IGxvb3AsIGFuZAogICAgIC8vIGZldGNoaW5nIGEgbmV3IGV2ZW50IG1pZ2h0IHJlbGVh
c2UgdGhlIG9sZCBvbmUuIFJldGFpbmluZyBhbmQgdGhlbiBhdXRvcmVsZWFzaW5nCiAgICAgLy8g
dGhlIGN1cnJlbnQgZXZlbnQgcHJldmVudHMgdGhhdCBmcm9tIGNhdXNpbmcgYSBwcm9ibGVtIGlu
c2lkZSBXZWJLaXQgb3IgQXBwS2l0IGNvZGUuCi0gICAgQ0ZSZXRhaW4oKF9fYnJpZGdlIENGVHlw
ZVJlZilldmVudCk7Ci0gICAgQ0ZBdXRvcmVsZWFzZSgoX19icmlkZ2UgQ0ZUeXBlUmVmKWV2ZW50
KTsKKyAgICByZXRhaW5QdHIoZXZlbnQpLmF1dG9yZWxlYXNlKCk7CiAKICAgICAvLyBXZSBnZXQg
RXNjIGtleSBoZXJlIGFmdGVyIHByb2Nlc3NpbmcgZWl0aGVyIEVzYyBvciBDbWQrcGVyaW9kLiBU
aGUgZm9ybWVyIHN0YXJ0cyBhcyBhIGtleURvd24sIGFuZCB0aGUgbGF0dGVyIHN0YXJ0cyBhcyBh
IGtleSBlcXVpdmFsZW50LAogICAgIC8vIGJ1dCBib3RoIGdldCB0cmFuc2Zvcm1lZCB0byBhIGNh
bmNlbE9wZXJhdGlvbjogY29tbWFuZCwgZXhlY3V0aW5nIHdoaWNoIHBhc3NlcyBhbiBFc2Mga2V5
IGV2ZW50IHRvIC1wZXJmb3JtS2V5RXF1aXZhbGVudDouCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvaW9zL1dLSW5zcGVjdG9ySGlnaGxpZ2h0Vmlldy5tbSBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9pb3MvV0tJbnNwZWN0b3JIaWdobGln
aHRWaWV3Lm1tCmluZGV4IDQ0MTI0NDM3YzI0MzQyNWMzZWRkYjk5Mzc2Y2Q2MjI0ZjJmYzE2YTMu
LmIxYjBiZTM0YmYzMzBjMGVlNTU1ZWQ4ZGM3NDFmYzY0MmIxMDlhZjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9pb3MvV0tJbnNwZWN0b3JIaWdobGlnaHRW
aWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9pb3MvV0tJbnNw
ZWN0b3JIaWdobGlnaHRWaWV3Lm1tCkBAIC0xODMsMjggKzE4MywyNiBAQCBzdGF0aWMgdm9pZCBs
YXllclBhdGhXaXRoSG9sZShDQVNoYXBlTGF5ZXIgKmxheWVyLCBjb25zdCBXZWJDb3JlOjpGbG9h
dFF1YWQmIG91dAogICAgICAgICBpbm5lckhvbGUgPSBxdWFkSW50ZXJzZWN0aW9uKG91dGVyUXVh
ZCwgaG9sZVF1YWQpOwogCiAgICAgLy8gQ2xvY2t3aXNlIGluc2lkZSByZWN0IChob2xlKSwgQ291
bnRlci1DbG9ja3dpc2Ugb3V0c2lkZSByZWN0IChmaWxsKS4KLSAgICBDR011dGFibGVQYXRoUmVm
IHBhdGggPSBDR1BhdGhDcmVhdGVNdXRhYmxlKCk7Ci0gICAgQ0dQYXRoTW92ZVRvUG9pbnQocGF0
aCwgMCwgaW5uZXJIb2xlLnAxKCkueCgpLCBpbm5lckhvbGUucDEoKS55KCkpOwotICAgIENHUGF0
aEFkZExpbmVUb1BvaW50KHBhdGgsIDAsIGlubmVySG9sZS5wMigpLngoKSwgaW5uZXJIb2xlLnAy
KCkueSgpKTsKLSAgICBDR1BhdGhBZGRMaW5lVG9Qb2ludChwYXRoLCAwLCBpbm5lckhvbGUucDMo
KS54KCksIGlubmVySG9sZS5wMygpLnkoKSk7Ci0gICAgQ0dQYXRoQWRkTGluZVRvUG9pbnQocGF0
aCwgMCwgaW5uZXJIb2xlLnA0KCkueCgpLCBpbm5lckhvbGUucDQoKS55KCkpOwotICAgIENHUGF0
aE1vdmVUb1BvaW50KHBhdGgsIDAsIG91dGVyUXVhZC5wMSgpLngoKSwgb3V0ZXJRdWFkLnAxKCku
eSgpKTsKLSAgICBDR1BhdGhBZGRMaW5lVG9Qb2ludChwYXRoLCAwLCBvdXRlclF1YWQucDQoKS54
KCksIG91dGVyUXVhZC5wNCgpLnkoKSk7Ci0gICAgQ0dQYXRoQWRkTGluZVRvUG9pbnQocGF0aCwg
MCwgb3V0ZXJRdWFkLnAzKCkueCgpLCBvdXRlclF1YWQucDMoKS55KCkpOwotICAgIENHUGF0aEFk
ZExpbmVUb1BvaW50KHBhdGgsIDAsIG91dGVyUXVhZC5wMigpLngoKSwgb3V0ZXJRdWFkLnAyKCku
eSgpKTsKLSAgICBsYXllci5wYXRoID0gcGF0aDsKLSAgICBDR1BhdGhSZWxlYXNlKHBhdGgpOwor
ICAgIGF1dG8gcGF0aCA9IGFkb3B0Q0YoQ0dQYXRoQ3JlYXRlTXV0YWJsZSgpKTsKKyAgICBDR1Bh
dGhNb3ZlVG9Qb2ludChwYXRoLmdldCgpLCAwLCBpbm5lckhvbGUucDEoKS54KCksIGlubmVySG9s
ZS5wMSgpLnkoKSk7CisgICAgQ0dQYXRoQWRkTGluZVRvUG9pbnQocGF0aC5nZXQoKSwgMCwgaW5u
ZXJIb2xlLnAyKCkueCgpLCBpbm5lckhvbGUucDIoKS55KCkpOworICAgIENHUGF0aEFkZExpbmVU
b1BvaW50KHBhdGguZ2V0KCksIDAsIGlubmVySG9sZS5wMygpLngoKSwgaW5uZXJIb2xlLnAzKCku
eSgpKTsKKyAgICBDR1BhdGhBZGRMaW5lVG9Qb2ludChwYXRoLmdldCgpLCAwLCBpbm5lckhvbGUu
cDQoKS54KCksIGlubmVySG9sZS5wNCgpLnkoKSk7CisgICAgQ0dQYXRoTW92ZVRvUG9pbnQocGF0
aC5nZXQoKSwgMCwgb3V0ZXJRdWFkLnAxKCkueCgpLCBvdXRlclF1YWQucDEoKS55KCkpOworICAg
IENHUGF0aEFkZExpbmVUb1BvaW50KHBhdGguZ2V0KCksIDAsIG91dGVyUXVhZC5wNCgpLngoKSwg
b3V0ZXJRdWFkLnA0KCkueSgpKTsKKyAgICBDR1BhdGhBZGRMaW5lVG9Qb2ludChwYXRoLmdldCgp
LCAwLCBvdXRlclF1YWQucDMoKS54KCksIG91dGVyUXVhZC5wMygpLnkoKSk7CisgICAgQ0dQYXRo
QWRkTGluZVRvUG9pbnQocGF0aC5nZXQoKSwgMCwgb3V0ZXJRdWFkLnAyKCkueCgpLCBvdXRlclF1
YWQucDIoKS55KCkpOworICAgIGxheWVyLnBhdGggPSBwYXRoLmdldCgpOwogfQogCiBzdGF0aWMg
dm9pZCBsYXllclBhdGgoQ0FTaGFwZUxheWVyICpsYXllciwgY29uc3QgV2ViQ29yZTo6RmxvYXRR
dWFkJiBvdXRlclF1YWQpCiB7Ci0gICAgQ0dNdXRhYmxlUGF0aFJlZiBwYXRoID0gQ0dQYXRoQ3Jl
YXRlTXV0YWJsZSgpOwotICAgIENHUGF0aE1vdmVUb1BvaW50KHBhdGgsIDAsIG91dGVyUXVhZC5w
MSgpLngoKSwgb3V0ZXJRdWFkLnAxKCkueSgpKTsKLSAgICBDR1BhdGhBZGRMaW5lVG9Qb2ludChw
YXRoLCAwLCBvdXRlclF1YWQucDQoKS54KCksIG91dGVyUXVhZC5wNCgpLnkoKSk7Ci0gICAgQ0dQ
YXRoQWRkTGluZVRvUG9pbnQocGF0aCwgMCwgb3V0ZXJRdWFkLnAzKCkueCgpLCBvdXRlclF1YWQu
cDMoKS55KCkpOwotICAgIENHUGF0aEFkZExpbmVUb1BvaW50KHBhdGgsIDAsIG91dGVyUXVhZC5w
MigpLngoKSwgb3V0ZXJRdWFkLnAyKCkueSgpKTsKLSAgICBsYXllci5wYXRoID0gcGF0aDsKLSAg
ICBDR1BhdGhSZWxlYXNlKHBhdGgpOworICAgIGF1dG8gcGF0aCA9IGFkb3B0Q0YoQ0dQYXRoQ3Jl
YXRlTXV0YWJsZSgpKTsKKyAgICBDR1BhdGhNb3ZlVG9Qb2ludChwYXRoLmdldCgpLCAwLCBvdXRl
clF1YWQucDEoKS54KCksIG91dGVyUXVhZC5wMSgpLnkoKSk7CisgICAgQ0dQYXRoQWRkTGluZVRv
UG9pbnQocGF0aC5nZXQoKSwgMCwgb3V0ZXJRdWFkLnA0KCkueCgpLCBvdXRlclF1YWQucDQoKS55
KCkpOworICAgIENHUGF0aEFkZExpbmVUb1BvaW50KHBhdGguZ2V0KCksIDAsIG91dGVyUXVhZC5w
MygpLngoKSwgb3V0ZXJRdWFkLnAzKCkueSgpKTsKKyAgICBDR1BhdGhBZGRMaW5lVG9Qb2ludChw
YXRoLmdldCgpLCAwLCBvdXRlclF1YWQucDIoKS54KCksIG91dGVyUXVhZC5wMigpLnkoKSk7Cisg
ICAgbGF5ZXIucGF0aCA9IHBhdGguZ2V0KCk7CiB9CiAKIC0gKHZvaWQpX2xheW91dEZvck5vZGVI
aWdobGlnaHQ6KGNvbnN0IFdlYkNvcmU6Okluc3BlY3Rvck92ZXJsYXk6OkhpZ2hsaWdodCYpaGln
aGxpZ2h0IG9mZnNldDoodW5zaWduZWQpb2Zmc2V0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9fV0tUb3VjaEV2ZW50R2VuZXJhdG9yLm1tIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvX1dLVG91Y2hFdmVudEdlbmVyYXRvci5tbQppbmRleCBlMmM3MTgxMTE0ZjljYzlhOWQx
Mzg5MGI5NzEyNTYwMjNkNmE4MzU4Li4yMTlkYmE1N2VmMGY1MDQ0OTMwNThjNjBjYjRkZWNjZTgy
YWY4NGM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9fV0tUb3VjaEV2ZW50
R2VuZXJhdG9yLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL19XS1RvdWNoRXZlbnRH
ZW5lcmF0b3IubW0KQEAgLTk4LDcgKzk4LDcgQEAgQHByb3BlcnR5IChub25hdG9taWMsIHN0cm9u
ZykgTlNNdXRhYmxlRGljdGlvbmFyeSAqZXZlbnRDYWxsYmFja3M7CiBAZW5kCiAKIEBpbXBsZW1l
bnRhdGlvbiBfV0tUb3VjaEV2ZW50R2VuZXJhdG9yIHsKLSAgICBJT0hJREV2ZW50U3lzdGVtQ2xp
ZW50UmVmIF9pb1N5c3RlbUNsaWVudDsKKyAgICBSZXRhaW5QdHI8SU9ISURFdmVudFN5c3RlbUNs
aWVudFJlZj4gX2lvU3lzdGVtQ2xpZW50OwogICAgIFN5bnRoZXRpY0V2ZW50RGlnaXRpemVySW5m
byBfYWN0aXZlUG9pbnRzW0hJRE1heFRvdWNoQ291bnRdOwogICAgIE5TVUludGVnZXIgX2FjdGl2
ZVBvaW50Q291bnQ7CiB9CkBAIC0xMzEsOSArMTMxLDYgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXQK
IAogLSAodm9pZClkZWFsbG9jCiB7Ci0gIGlmIChfaW9TeXN0ZW1DbGllbnQpCi0gICAgICAgIENG
UmVsZWFzZShfaW9TeXN0ZW1DbGllbnQpOwotCiAgICAgW19ldmVudENhbGxiYWNrcyByZWxlYXNl
XTsKICAgICBbc3VwZXIgZGVhbGxvY107CiB9CkBAIC0yMTAsNyArMjA3LDcgQEAgLSAoSU9ISURF
dmVudFJlZilfY3JlYXRlSU9ISURFdmVudFR5cGU6KEhhbmRFdmVudFR5cGUpZXZlbnRUeXBlCiAt
IChCT09MKV9zZW5kSElERXZlbnQ6KElPSElERXZlbnRSZWYpZXZlbnRSZWYKIHsKICAgICBpZiAo
IV9pb1N5c3RlbUNsaWVudCkKLSAgICAgICAgX2lvU3lzdGVtQ2xpZW50ID0gSU9ISURFdmVudFN5
c3RlbUNsaWVudENyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0KTsKKyAgICAgICAgX2lvU3lzdGVt
Q2xpZW50ID0gYWRvcHRDRihJT0hJREV2ZW50U3lzdGVtQ2xpZW50Q3JlYXRlKGtDRkFsbG9jYXRv
ckRlZmF1bHQpKTsKIAogICAgIGlmIChldmVudFJlZikgewogICAgICAgICBSdW5Mb29wOjptYWlu
KCkuZGlzcGF0Y2goW3N0cm9uZ0V2ZW50ID0gcmV0YWluUHRyKGV2ZW50UmVmKV0gewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Z1bGxzY3JlZW4vV0tGdWxsU2NyZWVu
V2luZG93Q29udHJvbGxlcklPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mdWxs
c2NyZWVuL1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXJJT1MubW0KaW5kZXggMDMzY2VlZmZi
MzQ0YjRjN2FhMzEwZDhjMzc0OWE5MGVmYzQ2YzExMi4uNmFlNDU4YTI2OWY1NTQ0ODk1OWM4NmI3
YTg5ZTBmYTE3ZDdlZDFlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L2Z1bGxzY3JlZW4vV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlcklPUy5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZnVsbHNjcmVlbi9XS0Z1bGxTY3JlZW5XaW5kb3dDb250
cm9sbGVySU9TLm1tCkBAIC0xMDMwLDI4ICsxMDMwLDI4IEBAIC0gKE5TU3RyaW5nICopX0VWT3Jn
YW5pemF0aW9uTmFtZQogICAgIGlmICghdHJ1c3QpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAg
ICBOU0RpY3Rpb25hcnkgKmluZm9EaWN0aW9uYXJ5ID0gQ0ZCcmlkZ2luZ1JlbGVhc2UoU2VjVHJ1
c3RDb3B5SW5mbyh0cnVzdCkpOworICAgIGF1dG8gaW5mb0RpY3Rpb25hcnkgPSBhZG9wdENGKFNl
Y1RydXN0Q29weUluZm8odHJ1c3QpKTsKICAgICAvLyBJZiBTZWNUcnVzdENvcHlJbmZvIHJldHVy
bmVkIE5VTEwgdGhlbiBpdCdzIGxpa2VseSB0aGF0IHRoZSBTZWNUcnVzdFJlZiBoYXMgbm90IGJl
ZW4gZXZhbHVhdGVkCiAgICAgLy8gYW5kIHRoZSBvbmx5IHdheSB0byBnZXQgdGhlIGluZm9ybWF0
aW9uIHdlIG5lZWQgaXMgdG8gY2FsbCBTZWNUcnVzdEV2YWx1YXRlIG91cnNlbHZlcy4KICAgICBp
ZiAoIWluZm9EaWN0aW9uYXJ5KSB7CiAgICAgICAgIGlmICghU2VjVHJ1c3RFdmFsdWF0ZVdpdGhF
cnJvcih0cnVzdCwgbnVsbHB0cikpCiAgICAgICAgICAgICByZXR1cm4gbmlsOwotICAgICAgICBp
bmZvRGljdGlvbmFyeSA9IENGQnJpZGdpbmdSZWxlYXNlKFNlY1RydXN0Q29weUluZm8odHJ1c3Qp
KTsKKyAgICAgICAgaW5mb0RpY3Rpb25hcnkgPSBhZG9wdENGKFNlY1RydXN0Q29weUluZm8odHJ1
c3QpKTsKICAgICAgICAgaWYgKCFpbmZvRGljdGlvbmFyeSkKICAgICAgICAgICAgIHJldHVybiBu
aWw7CiAgICAgfQogCiAgICAgLy8gTWFrZSBzdXJlIHRoYXQgdGhlIEVWIGNlcnRpZmljYXRlIGlz
IHZhbGlkIGFnYWluc3Qgb3VyIGNlcnRpZmljYXRlIGNoYWluLgotICAgIGlkIGhhc0VWID0gW2lu
Zm9EaWN0aW9uYXJ5IG9iamVjdEZvcktleTooX19icmlkZ2UgTlNTdHJpbmcgKilrU2VjVHJ1c3RJ
bmZvRXh0ZW5kZWRWYWxpZGF0aW9uS2V5XTsKKyAgICBpZCBoYXNFViA9IFsoX19icmlkZ2UgTlNE
aWN0aW9uYXJ5ICopaW5mb0RpY3Rpb25hcnkuZ2V0KCkgb2JqZWN0Rm9yS2V5OihfX2JyaWRnZSBO
U1N0cmluZyAqKWtTZWNUcnVzdEluZm9FeHRlbmRlZFZhbGlkYXRpb25LZXldOwogICAgIGlmICgh
W2hhc0VWIGlzS2luZE9mQ2xhc3M6W05TVmFsdWUgY2xhc3NdXSB8fCAhW2hhc0VWIGJvb2xWYWx1
ZV0pCiAgICAgICAgIHJldHVybiBuaWw7CiAKICAgICAvLyBNYWtlIHN1cmUgdGhhdCB3ZSBjb3Vs
ZCBjb250YWN0IHJldm9jYXRpb24gc2VydmVyIGFuZCBpdCBpcyBzdGlsbCB2YWxpZC4KLSAgICBp
ZCBpc05vdFJldm9rZWQgPSBbaW5mb0RpY3Rpb25hcnkgb2JqZWN0Rm9yS2V5OihfX2JyaWRnZSBO
U1N0cmluZyAqKWtTZWNUcnVzdEluZm9SZXZvY2F0aW9uS2V5XTsKKyAgICBpZCBpc05vdFJldm9r
ZWQgPSBbKF9fYnJpZGdlIE5TRGljdGlvbmFyeSAqKWluZm9EaWN0aW9uYXJ5LmdldCgpIG9iamVj
dEZvcktleTooX19icmlkZ2UgTlNTdHJpbmcgKilrU2VjVHJ1c3RJbmZvUmV2b2NhdGlvbktleV07
CiAgICAgaWYgKCFbaXNOb3RSZXZva2VkIGlzS2luZE9mQ2xhc3M6W05TVmFsdWUgY2xhc3NdXSB8
fCAhW2lzTm90UmV2b2tlZCBib29sVmFsdWVdKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAg
X0VWT3JnYW5pemF0aW9uTmFtZSA9IFtpbmZvRGljdGlvbmFyeSBvYmplY3RGb3JLZXk6KF9fYnJp
ZGdlIE5TU3RyaW5nICopa1NlY1RydXN0SW5mb0NvbXBhbnlOYW1lS2V5XTsKKyAgICBfRVZPcmdh
bml6YXRpb25OYW1lID0gWyhfX2JyaWRnZSBOU0RpY3Rpb25hcnkgKilpbmZvRGljdGlvbmFyeS5n
ZXQoKSBvYmplY3RGb3JLZXk6KF9fYnJpZGdlIE5TU3RyaW5nICopa1NlY1RydXN0SW5mb0NvbXBh
bnlOYW1lS2V5XTsKICAgICByZXR1cm4gX0VWT3JnYW5pemF0aW9uTmFtZS5nZXQoKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2Nv
YS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0K
aW5kZXggMzA5MjE1MmMwZmM0N2FkYjA3OTU1YjdkNDg3MmM4ZjE2YTljYmUyNS4uNTUyYWFkMzg4
NDU3ZjcxNDIwNDhhMjYxZmYyNmYyOWM0YmExOTFlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCkBAIC01MjgsNyArNTI4LDcgQEAg
dm9pZCBXZWJQcm9jZXNzOjp1cGRhdGVQcm9jZXNzTmFtZShJc0luUHJvY2Vzc0luaXRpYWxpemF0
aW9uIGlzSW5Qcm9jZXNzSW5pdGlhbGkKIHN0YXRpYyBOU1N0cmluZyAqd2ViUHJvY2Vzc0xvYWRl
ckFjY2Vzc2liaWxpdHlCdW5kbGVQYXRoKCkKIHsKICNpZiBIQVZFKEFDQ0VTU0lCSUxJVFlfQlVO
RExFU19QQVRIKQotICAgIHJldHVybiAoX19icmlkZ2UgTlNTdHJpbmcgKilDRkF1dG9yZWxlYXNl
KF9BWFNDb3B5UGF0aEZvckFjY2Vzc2liaWxpdHlCdW5kbGUoQ0ZTVFIoIldlYlByb2Nlc3NMb2Fk
ZXIiKSkpOworICAgIHJldHVybiBhZG9wdENGKF9BWFNDb3B5UGF0aEZvckFjY2Vzc2liaWxpdHlC
dW5kbGUoQ0ZTVFIoIldlYlByb2Nlc3NMb2FkZXIiKSkpLmJyaWRnaW5nQXV0b3JlbGVhc2UoKTsK
ICNlbHNlCiAgICAgTlNTdHJpbmcgKnBhdGggPSAoX19icmlkZ2UgTlNTdHJpbmcgKilHU1N5c3Rl
bVJvb3REaXJlY3RvcnkoKTsKICNpZiBQTEFURk9STShNQUNDQVRBTFlTVCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL01pc2MvV2ViVUlLaXRTdXBwb3J0Lm1tIGIvU291cmNl
L1dlYktpdExlZ2FjeS9pb3MvTWlzYy9XZWJVSUtpdFN1cHBvcnQubW0KaW5kZXggNTkzMTQ2YzAz
MzJlYmQ1Y2QxYzE5YmMxNTc1NzMyYzMxMTI0OTY5MS4uOThhNmNmZmU1NzVhODEzYjczYWUxMDFl
OGMyYzMzODZjZGFkZTNjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvTWlz
Yy9XZWJVSUtpdFN1cHBvcnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvTWlzYy9X
ZWJVSUtpdFN1cHBvcnQubW0KQEAgLTU1LDkgKzU1LDggQEAgc3RhdGljIHZvaWQgTG9hZFdlYkxv
Y2FsaXplZFN0cmluZ3NUaW1lckNhbGxiYWNrKENGUnVuTG9vcFRpbWVyUmVmIHRpbWVyLCB2b2lk
ICoKIAogc3RhdGljIHZvaWQgTG9hZFdlYkxvY2FsaXplZFN0cmluZ3MoKQogewotICAgIENGUnVu
TG9vcFRpbWVyUmVmIHRpbWVyID0gQ0ZSdW5Mb29wVGltZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVm
YXVsdCwgQ0ZBYnNvbHV0ZVRpbWVHZXRDdXJyZW50KCksIDAsIDAsIDAsICZMb2FkV2ViTG9jYWxp
emVkU3RyaW5nc1RpbWVyQ2FsbGJhY2ssIE5VTEwpOwotICAgIENGUnVuTG9vcEFkZFRpbWVyKENG
UnVuTG9vcEdldEN1cnJlbnQoKSwgdGltZXIsIGtDRlJ1bkxvb3BDb21tb25Nb2Rlcyk7Ci0gICAg
Q0ZSZWxlYXNlKHRpbWVyKTsKKyAgICBhdXRvIHRpbWVyID0gYWRvcHRDRihDRlJ1bkxvb3BUaW1l
ckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBDRkFic29sdXRlVGltZUdldEN1cnJlbnQoKSwg
MCwgMCwgMCwgJkxvYWRXZWJMb2NhbGl6ZWRTdHJpbmdzVGltZXJDYWxsYmFjaywgTlVMTCkpOwor
ICAgIENGUnVuTG9vcEFkZFRpbWVyKENGUnVuTG9vcEdldEN1cnJlbnQoKSwgdGltZXIuZ2V0KCks
IGtDRlJ1bkxvb3BDb21tb25Nb2Rlcyk7CiB9CiAKIHZvaWQgV2ViS2l0SW5pdGlhbGl6ZSh2b2lk
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViVmlldy9XZWJQREZWaWV3
SU9TLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViVmlldy9XZWJQREZWaWV3SU9TLm1t
CmluZGV4IGFhODc3ZGEwMjliMDZkYTlhMmY4YTZkNmFjYzAwOTAxOTBlNzM3YWQuLmNiZDUwYjZm
Y2E4NTU3MTVjMmM3Y2MzZDYwMTJhYmQxODJlNDAyODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvaW9zL1dlYlZpZXcvV2ViUERGVmlld0lPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L2lvcy9XZWJWaWV3L1dlYlBERlZpZXdJT1MubW0KQEAgLTMwMiwxNCArMzAyLDExIEBA
IC0gKHZvaWQpX2NoZWNrUERGVGl0bGUKIAogLSAodm9pZClmaW5pc2hlZExvYWRpbmdXaXRoRGF0
YVNvdXJjZTooV2ViRGF0YVNvdXJjZSAqKWRhdGFTb3VyY2UKIHsKLSAgICBDR0RhdGFQcm92aWRl
clJlZiBwcm92aWRlciA9IENHRGF0YVByb3ZpZGVyQ3JlYXRlV2l0aENGRGF0YSgoQ0ZEYXRhUmVm
KVtkYXRhU291cmNlIGRhdGFdKTsKLQorICAgIGF1dG8gcHJvdmlkZXIgPSBhZG9wdENGKENHRGF0
YVByb3ZpZGVyQ3JlYXRlV2l0aENGRGF0YSgoQ0ZEYXRhUmVmKVtkYXRhU291cmNlIGRhdGFdKSk7
CiAgICAgaWYgKCFwcm92aWRlcikgCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBfUERGRG9j
dW1lbnQgPSBDR1BERkRvY3VtZW50Q3JlYXRlV2l0aFByb3ZpZGVyKHByb3ZpZGVyKTsKLSAgICBD
R0RhdGFQcm92aWRlclJlbGVhc2UocHJvdmlkZXIpOwotICAgICAgICAKKyAgICBfUERGRG9jdW1l
bnQgPSBDR1BERkRvY3VtZW50Q3JlYXRlV2l0aFByb3ZpZGVyKHByb3ZpZGVyLmdldCgpKTsKICAg
ICBpZiAoIV9QREZEb2N1bWVudCkKICAgICAgICAgcmV0dXJuOwogICAgIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViVmlldy9XZWJQREZWaWV3UGxhY2Vob2xkZXIubW0g
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJWaWV3L1dlYlBERlZpZXdQbGFjZWhvbGRlci5t
bQppbmRleCA3MjU0ZDBjNWFjYzZhYTFhODc5YjYyYWQwYTQ4ODk5ZjNjZTdkYmExLi45YmIwOTBh
YmE4NjNkODJiNjU1MjM2NTQ2OWQwOTNiOTk5YTYwYjlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L2lvcy9XZWJWaWV3L1dlYlBERlZpZXdQbGFjZWhvbGRlci5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJWaWV3L1dlYlBERlZpZXdQbGFjZWhvbGRlci5tbQpAQCAt
Mjc0LDEzICsyNzQsMTEgQEAgLSAodm9pZClmaW5pc2hlZExvYWRpbmdXaXRoRGF0YVNvdXJjZToo
V2ViRGF0YVNvdXJjZSAqKWRhdGFTb3VyY2UKICAgICBbc2VsZiBkYXRhU291cmNlVXBkYXRlZDpk
YXRhU291cmNlXTsKIAogICAgIF9kaWRGaW5pc2hMb2FkID0gWUVTOwotICAgIENHRGF0YVByb3Zp
ZGVyUmVmIHByb3ZpZGVyID0gQ0dEYXRhUHJvdmlkZXJDcmVhdGVXaXRoQ0ZEYXRhKChDRkRhdGFS
ZWYpW2RhdGFTb3VyY2UgZGF0YV0pOworICAgIGF1dG8gcHJvdmlkZXIgPSBhZG9wdENGKENHRGF0
YVByb3ZpZGVyQ3JlYXRlV2l0aENGRGF0YSgoQ0ZEYXRhUmVmKVtkYXRhU291cmNlIGRhdGFdKSk7
CiAgICAgaWYgKCFwcm92aWRlcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgX2RvY3VtZW50ID0g
Q0dQREZEb2N1bWVudENyZWF0ZVdpdGhQcm92aWRlcihwcm92aWRlcik7Ci0KLSAgICBDR0RhdGFQ
cm92aWRlclJlbGVhc2UocHJvdmlkZXIpOworICAgIF9kb2N1bWVudCA9IENHUERGRG9jdW1lbnRD
cmVhdGVXaXRoUHJvdmlkZXIocHJvdmlkZXIuZ2V0KCkpOwogCiAgICAgW3NlbGYgX2RvUG9zdExv
YWRPclVubG9ja1Rhc2tzXTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L01pc2MvV2ViTG9jYWxpemFibGVTdHJpbmdzLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
TWlzYy9XZWJMb2NhbGl6YWJsZVN0cmluZ3MubW0KaW5kZXggNGVlMDAzNjQxOWU3YWZjYmY4NTM4
MjJkYzViZTk2NDUxOGQwMjk3OS4uMjk0MGQ0YWI2ZjIwOTgzZWM4NmI5MmFhYTJmNjE3MmMyMTk1
MzBmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJMb2NhbGl6
YWJsZVN0cmluZ3MubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJMb2Nh
bGl6YWJsZVN0cmluZ3MubW0KQEAgLTMwLDYgKzMwLDggQEAKIAogI2ltcG9ydCA8d3RmL0Fzc2Vy
dGlvbnMuaD4KICNpbXBvcnQgPHd0Zi9NYWluVGhyZWFkLmg+CisjaW1wb3J0IDx3dGYvTmV2ZXJE
ZXN0cm95ZWQuaD4KKyNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KIAogV2ViTG9jYWxpemFibGVT
dHJpbmdzQnVuZGxlIFdlYktpdExvY2FsaXphYmxlU3RyaW5nc0J1bmRsZSA9IHsgImNvbS5hcHBs
ZS5XZWJLaXQiLCAwIH07CiAKQEAgLTQ1LDEzICs0Nyw5IEBAIE5TU3RyaW5nICpXZWJMb2NhbGl6
ZWRTdHJpbmcoV2ViTG9jYWxpemFibGVTdHJpbmdzQnVuZGxlICpzdHJpbmdzQnVuZGxlLCBjb25z
dCBjCiAKICAgICBOU0J1bmRsZSAqYnVuZGxlOwogICAgIGlmIChzdHJpbmdzQnVuZGxlID09IE5V
TEwpIHsKLSAgICAgICAgc3RhdGljIE5TQnVuZGxlICptYWluQnVuZGxlOwotICAgICAgICBpZiAo
bWFpbkJ1bmRsZSA9PSBuaWwpIHsKLSAgICAgICAgICAgIG1haW5CdW5kbGUgPSBbTlNCdW5kbGUg
bWFpbkJ1bmRsZV07Ci0gICAgICAgICAgICBBU1NFUlQobWFpbkJ1bmRsZSk7Ci0gICAgICAgICAg
ICBDRlJldGFpbihtYWluQnVuZGxlKTsKLSAgICAgICAgfQotICAgICAgICBidW5kbGUgPSBtYWlu
QnVuZGxlOworICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPE5TQnVuZGxl
Pj4gbWFpbkJ1bmRsZSA9IFtOU0J1bmRsZSBtYWluQnVuZGxlXTsKKyAgICAgICAgQVNTRVJUKG1h
aW5CdW5kbGUuZ2V0KCkpOworICAgICAgICBidW5kbGUgPSBtYWluQnVuZGxlLmdldCgpLmdldCgp
OwogICAgIH0gZWxzZSB7CiAgICAgICAgIGJ1bmRsZSA9IHN0cmluZ3NCdW5kbGUtPmJ1bmRsZTsK
ICAgICAgICAgaWYgKGJ1bmRsZSA9PSBuaWwpIHsKQEAgLTYxLDkgKzU5LDggQEAgTlNTdHJpbmcg
KldlYkxvY2FsaXplZFN0cmluZyhXZWJMb2NhbGl6YWJsZVN0cmluZ3NCdW5kbGUgKnN0cmluZ3NC
dW5kbGUsIGNvbnN0IGMKICAgICAgICAgfQogICAgIH0KICAgICBOU1N0cmluZyAqbm90Rm91bmQg
PSBAImxvY2FsaXplZCBzdHJpbmcgbm90IGZvdW5kIjsKLSAgICBDRlN0cmluZ1JlZiBrZXlTdHJp
bmcgPSBDRlN0cmluZ0NyZWF0ZVdpdGhDU3RyaW5nTm9Db3B5KE5VTEwsIGtleSwga0NGU3RyaW5n
RW5jb2RpbmdVVEY4LCBrQ0ZBbGxvY2F0b3JOdWxsKTsKLSAgICBOU1N0cmluZyAqcmVzdWx0ID0g
W2J1bmRsZSBsb2NhbGl6ZWRTdHJpbmdGb3JLZXk6KF9fYnJpZGdlIE5TU3RyaW5nICopa2V5U3Ry
aW5nIHZhbHVlOm5vdEZvdW5kIHRhYmxlOm5pbF07Ci0gICAgQ0ZSZWxlYXNlKGtleVN0cmluZyk7
CisgICAgYXV0byBrZXlTdHJpbmcgPSBhZG9wdENGKENGU3RyaW5nQ3JlYXRlV2l0aENTdHJpbmdO
b0NvcHkoTlVMTCwga2V5LCBrQ0ZTdHJpbmdFbmNvZGluZ1VURjgsIGtDRkFsbG9jYXRvck51bGwp
KTsKKyAgICBOU1N0cmluZyAqcmVzdWx0ID0gW2J1bmRsZSBsb2NhbGl6ZWRTdHJpbmdGb3JLZXk6
KF9fYnJpZGdlIE5TU3RyaW5nICopa2V5U3RyaW5nLmdldCgpIHZhbHVlOm5vdEZvdW5kIHRhYmxl
Om5pbF07CiAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShyZXN1bHQgIT0gbm90Rm91bmQsICJjb3Vs
ZCBub3QgZmluZCBsb2NhbGl6YWJsZSBzdHJpbmcgJXMgaW4gYnVuZGxlIiwga2V5KTsKICAgICBy
ZXR1cm4gcmVzdWx0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlz
Yy9XZWJOU0RhdGFFeHRyYXMubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYk5T
RGF0YUV4dHJhcy5tbQppbmRleCA2ZWM3Y2MwZGIyMjcyY2U0YmQzZGExNzRlYTMyOTQ1ODZkZGZk
MTdlLi44ZDUwNmEyM2ZjNjRhMGU5NjI5MmI2ZTFmMTBlM2YyNDgwNjhlNDAzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYk5TRGF0YUV4dHJhcy5tbQorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYk5TRGF0YUV4dHJhcy5tbQpAQCAtODMsOSAr
ODMsOSBAQCAtIChOU1N0cmluZyAqKV93ZWJfY2FwaXRhbGl6ZVJGQzgyMkhlYWRlckZpZWxkTmFt
ZQogICAgIH0KICAgICBpZiAoc29tZXRoaW5nQ2hhbmdlZCkgewogICAgICAgICBpZiAodXNlVW5p
Q2hhclB0cikKLSAgICAgICAgICAgIHJlc3VsdCA9IENGQnJpZGdpbmdSZWxlYXNlKENGU3RyaW5n
Q3JlYXRlV2l0aENoYXJhY3RlcnNOb0NvcHkoa0NGQWxsb2NhdG9yRGVmYXVsdCwgdW5pQ2hhclB0
ciwgbGVuLCBudWxscHRyKSk7CisgICAgICAgICAgICByZXN1bHQgPSBhZG9wdENGKENGU3RyaW5n
Q3JlYXRlV2l0aENoYXJhY3RlcnNOb0NvcHkoa0NGQWxsb2NhdG9yRGVmYXVsdCwgdW5pQ2hhclB0
ciwgbGVuLCBudWxscHRyKSkuYnJpZGdpbmdBdXRvcmVsZWFzZSgpOwogICAgICAgICBlbHNlCi0g
ICAgICAgICAgICByZXN1bHQgPSBDRkJyaWRnaW5nUmVsZWFzZShDRlN0cmluZ0NyZWF0ZVdpdGhD
U3RyaW5nTm9Db3B5KGtDRkFsbG9jYXRvckRlZmF1bHQsIGNoYXJQdHIsIGtDRlN0cmluZ0VuY29k
aW5nSVNPTGF0aW4xLCBudWxscHRyKSk7CisgICAgICAgICAgICByZXN1bHQgPSBhZG9wdENGKENG
U3RyaW5nQ3JlYXRlV2l0aENTdHJpbmdOb0NvcHkoa0NGQWxsb2NhdG9yRGVmYXVsdCwgY2hhclB0
ciwga0NGU3RyaW5nRW5jb2RpbmdJU09MYXRpbjEsIG51bGxwdHIpKS5icmlkZ2luZ0F1dG9yZWxl
YXNlKCk7CiAgICAgfSBlbHNlCiAgICAgICAgIHJlc3VsdCA9IHNlbGY7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSG9z
dE1hbmFnZXIubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRz
Y2FwZVBsdWdpbkhvc3RNYW5hZ2VyLm1tCmluZGV4IGY2MzkzZjg5YmZiYTRmNjlmZDAzOGYyMTU2
NWVmMTdkMDJmYmYzMzcuLjVmZGEzZmM3MTdmMzEzYTRkYjY1ZTIyYjgzNjk1ZDgzM2M5OWVmOGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNj
YXBlUGx1Z2luSG9zdE1hbmFnZXIubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1
Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5Ib3N0TWFuYWdlci5tbQpAQCAtMTIxLDcgKzEyMSw3
IEBAIHN0YXRpYyBOU1N0cmluZyAqcHJlZmVycmVkQnVuZGxlTG9jYWxpemF0aW9uTmFtZSgpCiAg
ICAgaWYgKCFzdWNjZXNzKQogICAgICAgICByZXR1cm4gQCJlbl9VUyI7CiAKLSAgICByZXR1cm4g
Q0ZCcmlkZ2luZ1JlbGVhc2UoQ0ZMb2NhbGVDcmVhdGVDYW5vbmljYWxMb2NhbGVJZGVudGlmaWVy
RnJvbVNjcmlwdE1hbmFnZXJDb2RlcygwLCBsYW5ndWFnZUNvZGUsIHJlZ2lvbkNvZGUpKTsKKyAg
ICByZXR1cm4gYWRvcHRDRihDRkxvY2FsZUNyZWF0ZUNhbm9uaWNhbExvY2FsZUlkZW50aWZpZXJG
cm9tU2NyaXB0TWFuYWdlckNvZGVzKDAsIGxhbmd1YWdlQ29kZSwgcmVnaW9uQ29kZSkpLmJyaWRn
aW5nQXV0b3JlbGVhc2UoKTsKIH0KIAogYm9vbCBOZXRzY2FwZVBsdWdpbkhvc3RNYW5hZ2VyOjpz
cGF3blBsdWdpbkhvc3QoY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoLCBjcHVfdHlwZV90IHBsdWdp
bkFyY2hpdGVjdHVyZSwgbWFjaF9wb3J0X3QgY2xpZW50UG9ydCwgbWFjaF9wb3J0X3QmIHBsdWdp
bkhvc3RQb3J0LCBQcm9jZXNzU2VyaWFsTnVtYmVyJiBwbHVnaW5Ib3N0UFNOKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblZpZXcu
bW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luVmll
dy5tbQppbmRleCAxMmFhYTNkMDhmNzdjOGNmOGQ0MWQ0NDNlMTJhYjZkMmUyNzEyM2IyLi44ZmZm
MjQ1ZTE2OGQzNGFkYmVkYjAyZDQ3NDhmOWNiODcxMTA3N2I2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luVmlldy5tbQorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luVmlldy5tbQpA
QCAtMTQ1MywxNiArMTQ1MywxNSBAQCAtIChjb25zdCBjaGFyICopdXNlckFnZW50CiAKIC0odm9p
ZClzdGF0dXM6KGNvbnN0IGNoYXIgKiltZXNzYWdlCiB7ICAgIAotICAgIENGU3RyaW5nUmVmIHN0
YXR1cyA9IENGU3RyaW5nQ3JlYXRlV2l0aENTdHJpbmcoTlVMTCwgbWVzc2FnZSA/IG1lc3NhZ2Ug
OiAiIiwga0NGU3RyaW5nRW5jb2RpbmdVVEY4KTsKKyAgICBhdXRvIHN0YXR1cyA9IGFkb3B0Q0Yo
Q0ZTdHJpbmdDcmVhdGVXaXRoQ1N0cmluZyhOVUxMLCBtZXNzYWdlID8gbWVzc2FnZSA6ICIiLCBr
Q0ZTdHJpbmdFbmNvZGluZ1VURjgpKTsKICAgICBpZiAoIXN0YXR1cykgewogICAgICAgICBMT0df
RVJST1IoIk5QTl9TdGF0dXM6IHRoZSBtZXNzYWdlIHdhcyBub3QgdmFsaWQgVVRGLTgiKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAgICBMT0coUGx1Z2lucywgIk5QTl9TdGF0dXM6
ICVAIiwgc3RhdHVzKTsKKyAgICBMT0coUGx1Z2lucywgIk5QTl9TdGF0dXM6ICVAIiwgc3RhdHVz
LmdldCgpKTsKICAgICBXZWJWaWV3ICp3diA9IFtzZWxmIHdlYlZpZXddOwotICAgIFtbd3YgX1VJ
RGVsZWdhdGVGb3J3YXJkZXJdIHdlYlZpZXc6d3Ygc2V0U3RhdHVzVGV4dDooX19icmlkZ2UgTlNT
dHJpbmcgKilzdGF0dXNdOwotICAgIENGUmVsZWFzZShzdGF0dXMpOworICAgIFtbd3YgX1VJRGVs
ZWdhdGVGb3J3YXJkZXJdIHdlYlZpZXc6d3Ygc2V0U3RhdHVzVGV4dDooX19icmlkZ2UgTlNTdHJp
bmcgKilzdGF0dXMuZ2V0KCldOwogfQogCiAtKHZvaWQpaW52YWxpZGF0ZVJlY3Q6KE5QUmVjdCAq
KWludmFsaWRSZWN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJQcm9ncmVzc1RyYWNrZXJDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQcm9ncmVzc1RyYWNrZXJDbGllbnQubW0KaW5kZXggY2Mz
OGVmMTYxZTc1M2Q1MTkxNjRmZWQzMGRkNTg3NjUxODA4YmYxNi4uOGY0NzgzY2IzMDhhNjRkZGNh
NWIxMzQ0MzU1MDgyMzYwNDE3ZTA1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViUHJvZ3Jlc3NUcmFja2VyQ2xpZW50Lm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlByb2dyZXNzVHJhY2tlckNsaWVu
dC5tbQpAQCAtNzAsMTMgKzcwLDEyIEBAIHZvaWQgV2ViUHJvZ3Jlc3NUcmFja2VyQ2xpZW50Ojpw
cm9ncmVzc0VzdGltYXRlQ2hhbmdlZChXZWJDb3JlOjpGcmFtZSYpCiAgICAgCiAgICAgLy8gVXNl
IGEgQ0ZEaWN0aW9uYXJ5IHNvIHdlIGNhbiBhZGQgdGhlIENHQ29sb3JSZWYgd2l0aG91dCBjb21w
aWxlIGVycm9ycy4gQW5kIHRoZW4gdGhhbmtzIHRvCiAgICAgLy8gdG9sbC1mcmVlIGJyaWRnaW5n
IHdlIGNhbiBwYXNzIHRoZSBDRkRpY3Rpb25hcnkgYXMgYW4gTlNEaWN0aW9uYXJ5IHRvIHBvc3RO
b3RpZmljYXRpb24uCi0gICAgQ0ZNdXRhYmxlRGljdGlvbmFyeVJlZiB1c2VySW5mbyA9IENGRGlj
dGlvbmFyeUNyZWF0ZU11dGFibGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgMiwgJmtDRlR5cGVEaWN0
aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcyk7Ci0g
ICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUodXNlckluZm8sIFdlYlZpZXdQcm9ncmVzc0VzdGltYXRl
ZFByb2dyZXNzS2V5LCBwcm9ncmVzcyk7CisgICAgYXV0byB1c2VySW5mbyA9IGFkb3B0Q0YoQ0ZE
aWN0aW9uYXJ5Q3JlYXRlTXV0YWJsZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAyLCAma0NGVHlwZURp
Y3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7
CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUodXNlckluZm8uZ2V0KCksIFdlYlZpZXdQcm9ncmVz
c0VzdGltYXRlZFByb2dyZXNzS2V5LCBwcm9ncmVzcyk7CiAgICAgaWYgKGJvZHlCYWNrZ3JvdW5k
Q29sb3IpCi0gICAgICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKHVzZXJJbmZvLCBXZWJWaWV3UHJv
Z3Jlc3NCYWNrZ3JvdW5kQ29sb3JLZXksIGJvZHlCYWNrZ3JvdW5kQ29sb3IpOworICAgICAgICBD
RkRpY3Rpb25hcnlBZGRWYWx1ZSh1c2VySW5mby5nZXQoKSwgV2ViVmlld1Byb2dyZXNzQmFja2dy
b3VuZENvbG9yS2V5LCBib2R5QmFja2dyb3VuZENvbG9yKTsKICAgICAKLSAgICBXZWJUaHJlYWRQ
b3N0Tm90aWZpY2F0aW9uKFdlYlZpZXdQcm9ncmVzc0VzdGltYXRlQ2hhbmdlZE5vdGlmaWNhdGlv
biwgbV93ZWJWaWV3LCAoTlNEaWN0aW9uYXJ5ICopIHVzZXJJbmZvKTsKLSAgICBDRlJlbGVhc2Uo
dXNlckluZm8pOworICAgIFdlYlRocmVhZFBvc3ROb3RpZmljYXRpb24oV2ViVmlld1Byb2dyZXNz
RXN0aW1hdGVDaGFuZ2VkTm90aWZpY2F0aW9uLCBtX3dlYlZpZXcsIChOU0RpY3Rpb25hcnkgKil1
c2VySW5mby5nZXQoKSk7CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViSW5zcGVjdG9yL1dlYk5vZGVIaWdobGlnaHRWaWV3Lm1tIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViSW5zcGVjdG9yL1dlYk5vZGVIaWdobGlnaHRWaWV3Lm1tCmluZGV4
IDIwZjE5ZjBiYzRiYjQ4ZGQyZGU1OTA2ZDllMjdlM2IzYzM0YzI1M2YuLmQzOTczZTI5NDQ1OWVj
ZjFkYmRlZjQ0OWVmMmNmZDJjYWNiOGVkMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYkluc3BlY3Rvci9XZWJOb2RlSGlnaGxpZ2h0Vmlldy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJJbnNwZWN0b3IvV2ViTm9kZUhpZ2hsaWdodFZpZXcubW0KQEAg
LTIzNiwyOCArMjM2LDI2IEBAIHN0YXRpYyB2b2lkIGxheWVyUGF0aFdpdGhIb2xlKENBU2hhcGVM
YXllciAqbGF5ZXIsIGNvbnN0IEZsb2F0UXVhZCYgb3V0ZXJRdWFkLCBjCiAgICAgICAgIGlubmVy
SG9sZSA9IHF1YWRJbnRlcnNlY3Rpb24ob3V0ZXJRdWFkLCBob2xlUXVhZCk7CiAKICAgICAvLyBD
bG9ja3dpc2UgaW5zaWRlIHJlY3QgKGhvbGUpLCBDb3VudGVyLUNsb2Nrd2lzZSBvdXRzaWRlIHJl
Y3QgKGZpbGwpLgotICAgIENHTXV0YWJsZVBhdGhSZWYgcGF0aCA9IENHUGF0aENyZWF0ZU11dGFi
bGUoKTsKLSAgICBDR1BhdGhNb3ZlVG9Qb2ludChwYXRoLCAwLCBpbm5lckhvbGUucDEoKS54KCks
IGlubmVySG9sZS5wMSgpLnkoKSk7Ci0gICAgQ0dQYXRoQWRkTGluZVRvUG9pbnQocGF0aCwgMCwg
aW5uZXJIb2xlLnAyKCkueCgpLCBpbm5lckhvbGUucDIoKS55KCkpOwotICAgIENHUGF0aEFkZExp
bmVUb1BvaW50KHBhdGgsIDAsIGlubmVySG9sZS5wMygpLngoKSwgaW5uZXJIb2xlLnAzKCkueSgp
KTsKLSAgICBDR1BhdGhBZGRMaW5lVG9Qb2ludChwYXRoLCAwLCBpbm5lckhvbGUucDQoKS54KCks
IGlubmVySG9sZS5wNCgpLnkoKSk7Ci0gICAgQ0dQYXRoTW92ZVRvUG9pbnQocGF0aCwgMCwgb3V0
ZXJRdWFkLnAxKCkueCgpLCBvdXRlclF1YWQucDEoKS55KCkpOwotICAgIENHUGF0aEFkZExpbmVU
b1BvaW50KHBhdGgsIDAsIG91dGVyUXVhZC5wNCgpLngoKSwgb3V0ZXJRdWFkLnA0KCkueSgpKTsK
LSAgICBDR1BhdGhBZGRMaW5lVG9Qb2ludChwYXRoLCAwLCBvdXRlclF1YWQucDMoKS54KCksIG91
dGVyUXVhZC5wMygpLnkoKSk7Ci0gICAgQ0dQYXRoQWRkTGluZVRvUG9pbnQocGF0aCwgMCwgb3V0
ZXJRdWFkLnAyKCkueCgpLCBvdXRlclF1YWQucDIoKS55KCkpOwotICAgIGxheWVyLnBhdGggPSBw
YXRoOwotICAgIENHUGF0aFJlbGVhc2UocGF0aCk7CisgICAgYXV0byBwYXRoID0gYWRvcHRDRihD
R1BhdGhDcmVhdGVNdXRhYmxlKCkpOworICAgIENHUGF0aE1vdmVUb1BvaW50KHBhdGguZ2V0KCks
IDAsIGlubmVySG9sZS5wMSgpLngoKSwgaW5uZXJIb2xlLnAxKCkueSgpKTsKKyAgICBDR1BhdGhB
ZGRMaW5lVG9Qb2ludChwYXRoLmdldCgpLCAwLCBpbm5lckhvbGUucDIoKS54KCksIGlubmVySG9s
ZS5wMigpLnkoKSk7CisgICAgQ0dQYXRoQWRkTGluZVRvUG9pbnQocGF0aC5nZXQoKSwgMCwgaW5u
ZXJIb2xlLnAzKCkueCgpLCBpbm5lckhvbGUucDMoKS55KCkpOworICAgIENHUGF0aEFkZExpbmVU
b1BvaW50KHBhdGguZ2V0KCksIDAsIGlubmVySG9sZS5wNCgpLngoKSwgaW5uZXJIb2xlLnA0KCku
eSgpKTsKKyAgICBDR1BhdGhNb3ZlVG9Qb2ludChwYXRoLmdldCgpLCAwLCBvdXRlclF1YWQucDEo
KS54KCksIG91dGVyUXVhZC5wMSgpLnkoKSk7CisgICAgQ0dQYXRoQWRkTGluZVRvUG9pbnQocGF0
aC5nZXQoKSwgMCwgb3V0ZXJRdWFkLnA0KCkueCgpLCBvdXRlclF1YWQucDQoKS55KCkpOworICAg
IENHUGF0aEFkZExpbmVUb1BvaW50KHBhdGguZ2V0KCksIDAsIG91dGVyUXVhZC5wMygpLngoKSwg
b3V0ZXJRdWFkLnAzKCkueSgpKTsKKyAgICBDR1BhdGhBZGRMaW5lVG9Qb2ludChwYXRoLmdldCgp
LCAwLCBvdXRlclF1YWQucDIoKS54KCksIG91dGVyUXVhZC5wMigpLnkoKSk7CisgICAgbGF5ZXIu
cGF0aCA9IHBhdGguZ2V0KCk7CiB9CiAKIHN0YXRpYyB2b2lkIGxheWVyUGF0aChDQVNoYXBlTGF5
ZXIgKmxheWVyLCBjb25zdCBGbG9hdFF1YWQmIG91dGVyUXVhZCkKIHsKLSAgICBDR011dGFibGVQ
YXRoUmVmIHBhdGggPSBDR1BhdGhDcmVhdGVNdXRhYmxlKCk7Ci0gICAgQ0dQYXRoTW92ZVRvUG9p
bnQocGF0aCwgMCwgb3V0ZXJRdWFkLnAxKCkueCgpLCBvdXRlclF1YWQucDEoKS55KCkpOwotICAg
IENHUGF0aEFkZExpbmVUb1BvaW50KHBhdGgsIDAsIG91dGVyUXVhZC5wNCgpLngoKSwgb3V0ZXJR
dWFkLnA0KCkueSgpKTsKLSAgICBDR1BhdGhBZGRMaW5lVG9Qb2ludChwYXRoLCAwLCBvdXRlclF1
YWQucDMoKS54KCksIG91dGVyUXVhZC5wMygpLnkoKSk7Ci0gICAgQ0dQYXRoQWRkTGluZVRvUG9p
bnQocGF0aCwgMCwgb3V0ZXJRdWFkLnAyKCkueCgpLCBvdXRlclF1YWQucDIoKS55KCkpOwotICAg
IGxheWVyLnBhdGggPSBwYXRoOwotICAgIENHUGF0aFJlbGVhc2UocGF0aCk7CisgICAgYXV0byBw
YXRoID0gYWRvcHRDRihDR1BhdGhDcmVhdGVNdXRhYmxlKCkpOworICAgIENHUGF0aE1vdmVUb1Bv
aW50KHBhdGguZ2V0KCksIDAsIG91dGVyUXVhZC5wMSgpLngoKSwgb3V0ZXJRdWFkLnAxKCkueSgp
KTsKKyAgICBDR1BhdGhBZGRMaW5lVG9Qb2ludChwYXRoLmdldCgpLCAwLCBvdXRlclF1YWQucDQo
KS54KCksIG91dGVyUXVhZC5wNCgpLnkoKSk7CisgICAgQ0dQYXRoQWRkTGluZVRvUG9pbnQocGF0
aC5nZXQoKSwgMCwgb3V0ZXJRdWFkLnAzKCkueCgpLCBvdXRlclF1YWQucDMoKS55KCkpOworICAg
IENHUGF0aEFkZExpbmVUb1BvaW50KHBhdGguZ2V0KCksIDAsIG91dGVyUXVhZC5wMigpLngoKSwg
b3V0ZXJRdWFkLnAyKCkueSgpKTsKKyAgICBsYXllci5wYXRoID0gcGF0aC5nZXQoKTsKIH0KIAog
LSAodm9pZClfbGF5b3V0Rm9yTm9kZUhpZ2hsaWdodDooSW5zcGVjdG9yT3ZlcmxheTo6SGlnaGxp
Z2h0KiloaWdobGlnaHQgcGFyZW50OihDQUxheWVyICopcGFyZW50TGF5ZXIKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0gYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCmluZGV4IGI5YmU3ZDk5MDVkYWY1MGVl
OWZkNTMwOGU5N2ZmM2M5ZGVjYTllMWIuLjNhYmM2MDFiODBiYWQ0MzAzNTQyNWI0OTI5ODQ5ZjEz
ZWYxNDg3NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2Vi
RnJhbWUubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5t
bQpAQCAtMjQ2MSwxMiArMjQ2MSw5IEBAIC0gKHZvaWQpbG9hZFJlcXVlc3Q6KE5TVVJMUmVxdWVz
dCAqKXJlcXVlc3QKIAogc3RhdGljIE5TVVJMICpjcmVhdGVVbmlxdWVXZWJEYXRhVVJMKCkKIHsK
LSAgICBDRlVVSURSZWYgVVVJRFJlZiA9IENGVVVJRENyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0
KTsKLSAgICBOU1N0cmluZyAqVVVJRFN0cmluZyA9IChOU1N0cmluZyAqKUNGVVVJRENyZWF0ZVN0
cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBVVUlEUmVmKTsKLSAgICBDRlJlbGVhc2UoVVVJRFJl
Zik7Ci0gICAgTlNVUkwgKlVSTCA9IFtOU1VSTCBVUkxXaXRoU3RyaW5nOltOU1N0cmluZyBzdHJp
bmdXaXRoRm9ybWF0OkAiYXBwbGV3ZWJkYXRhOi8vJUAiLCBVVUlEU3RyaW5nXV07Ci0gICAgQ0ZS
ZWxlYXNlKFVVSURTdHJpbmcpOwotICAgIHJldHVybiBVUkw7CisgICAgYXV0byBVVUlEUmVmID0g
YWRvcHRDRihDRlVVSURDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCkpOworICAgIGF1dG8gVVVJ
RFN0cmluZyA9IGFkb3B0Q0YoQ0ZVVUlEQ3JlYXRlU3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQs
IFVVSURSZWYuZ2V0KCkpKTsKKyAgICByZXR1cm4gW05TVVJMIFVSTFdpdGhTdHJpbmc6W05TU3Ry
aW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJhcHBsZXdlYmRhdGE6Ly8lQCIsIChfX2JyaWRnZSBOU1N0
cmluZyAqKVVVSURTdHJpbmcuZ2V0KCldXTsKIH0KIAogLSAodm9pZClfbG9hZERhdGE6KE5TRGF0
YSAqKWRhdGEgTUlNRVR5cGU6KE5TU3RyaW5nICopTUlNRVR5cGUgdGV4dEVuY29kaW5nTmFtZToo
TlNTdHJpbmcgKillbmNvZGluZ05hbWUgYmFzZVVSTDooTlNVUkwgKiliYXNlVVJMIHVucmVhY2hh
YmxlVVJMOihOU1VSTCAqKXVucmVhY2hhYmxlVVJMCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJWaWV3L1dlYlZpZXcubW0KaW5kZXggNjg1NjEwYzI1ZWMyYWU1ZmQ1ZjUxM2JiOTMxNjJjNGUy
ZTYxZmI5Mi4uZTMzM2Q2ZTBmOWIzYzI1Y2JiY2RmYjliNmNhZWM0YWUxNDQyYzlkMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtODQwMyw3ICs4NDAz
LDcgQEAgKyAodm9pZClfc2V0Q2FjaGVNb2RlbDooV2ViQ2FjaGVNb2RlbCljYWNoZU1vZGVsCiAg
ICAgaWYgKHNfZGlkU2V0Q2FjaGVNb2RlbCAmJiBjYWNoZU1vZGVsID09IHNfY2FjaGVNb2RlbCkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgTlNTdHJpbmcgKm5zdXJsQ2FjaGVEaXJlY3RvcnkgPSBD
RkJyaWRnaW5nUmVsZWFzZShfQ0ZVUkxDYWNoZUNvcHlDYWNoZURpcmVjdG9yeShbW05TVVJMQ2Fj
aGUgc2hhcmVkVVJMQ2FjaGVdIF9DRlVSTENhY2hlXSkpOworICAgIE5TU3RyaW5nICpuc3VybENh
Y2hlRGlyZWN0b3J5ID0gYWRvcHRDRihfQ0ZVUkxDYWNoZUNvcHlDYWNoZURpcmVjdG9yeShbW05T
VVJMQ2FjaGUgc2hhcmVkVVJMQ2FjaGVdIF9DRlVSTENhY2hlXSkpLmJyaWRnaW5nQXV0b3JlbGVh
c2UoKTsKICAgICBpZiAoIW5zdXJsQ2FjaGVEaXJlY3RvcnkpCiAgICAgICAgIG5zdXJsQ2FjaGVE
aXJlY3RvcnkgPSBOU0hvbWVEaXJlY3RvcnkoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vQ0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWcuY3BwIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vQ0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWcuY3BwCmluZGV4IGJjOWU2NTk0ZTc3N2Jm
MDA4NjgzNjJiNzUxYzI3NTE5ZDdiZWE3M2IuLjlhMWYwMTEyMjFiYzIxNDAwYmVlODg3ZWQxMTE5
YjM2OWZmZTYwMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NGRGljdGlv
bmFyeVByb3BlcnR5QmFnLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DRkRpY3Rp
b25hcnlQcm9wZXJ0eUJhZy5jcHAKQEAgLTEzOCwyMCArMTM4LDIwIEBAIHN0YXRpYyBib29sIENv
bnZlcnRWYXJpYW50VG9DRlR5cGUoVkFSSUFOVCogcFZhciwgdm9pZCoqIGNmT2JqKQogICAgIGVs
c2UgewogICAgICAgICAvLyBpZiBjYWxsZXIgZXhwZWN0cyBhIHN0cmluZywgcmV0cmlldmUgQlNU
UiBmcm9tIENGU3RyaW5nUmVmCiAgICAgICAgIGlmIChWX1ZUKHBWYXIpID09IFZUX0JTVFIpIHsK
LSAgICAgICAgICAgICpjZk9iaiA9ICh2b2lkKikgTWFyc2hhbGxpbmdIZWxwZXJzOjpCU1RSVG9D
RlN0cmluZ1JlZihWX0JTVFIocFZhcikpOworICAgICAgICAgICAgKmNmT2JqID0gKHZvaWQqKSBN
YXJzaGFsbGluZ0hlbHBlcnM6OkJTVFJUb0NGU3RyaW5nUmVmKFZfQlNUUihwVmFyKSkubGVha1Jl
ZigpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0gZWxzZSBpZiAoVl9WVChw
VmFyKSA9PSBWVF9JNCkgewotICAgICAgICAgICAgKmNmT2JqID0gKHZvaWQqKSBNYXJzaGFsbGlu
Z0hlbHBlcnM6OmludFRvQ0ZOdW1iZXJSZWYoVl9JNChwVmFyKSk7CisgICAgICAgICAgICAqY2ZP
YmogPSAodm9pZCopIE1hcnNoYWxsaW5nSGVscGVyczo6aW50VG9DRk51bWJlclJlZihWX0k0KHBW
YXIpKS5sZWFrUmVmKCk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfSBlbHNl
IGlmICghIShWX1ZUKHBWYXIpJlZUX0FSUkFZKSkgewogICAgICAgICAgICAgaWYgKChWX1ZUKHBW
YXIpJn5WVF9BUlJBWSkgPT0gVlRfQlNUUikgewotICAgICAgICAgICAgICAgICpjZk9iaiA9ICh2
b2lkKikgTWFyc2hhbGxpbmdIZWxwZXJzOjpzYWZlQXJyYXlUb1N0cmluZ0FycmF5KFZfQVJSQVko
cFZhcikpOworICAgICAgICAgICAgICAgICpjZk9iaiA9ICh2b2lkKikgTWFyc2hhbGxpbmdIZWxw
ZXJzOjpzYWZlQXJyYXlUb1N0cmluZ0FycmF5KFZfQVJSQVkocFZhcikpLmxlYWtSZWYoKTsKICAg
ICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIH0gZWxzZSBpZiAoKFZfVlQo
cFZhcikmflZUX0FSUkFZKSA9PSBWVF9JNCkgewotICAgICAgICAgICAgICAgICpjZk9iaiA9ICh2
b2lkKikgTWFyc2hhbGxpbmdIZWxwZXJzOjpzYWZlQXJyYXlUb0ludEFycmF5KFZfQVJSQVkocFZh
cikpOworICAgICAgICAgICAgICAgICpjZk9iaiA9ICh2b2lkKikgTWFyc2hhbGxpbmdIZWxwZXJz
OjpzYWZlQXJyYXlUb0ludEFycmF5KFZfQVJSQVkocFZhcikpLmxlYWtSZWYoKTsKICAgICAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIH0gZWxzZSBpZiAoKFZfVlQocFZhcikm
flZUX0FSUkFZKSA9PSBWVF9VTktOT1dOKSB7Ci0gICAgICAgICAgICAgICAgKmNmT2JqID0gKHZv
aWQqKSBNYXJzaGFsbGluZ0hlbHBlcnM6OnNhZmVBcnJheVRvSVVua25vd25BcnJheShWX0FSUkFZ
KHBWYXIpKTsKKyAgICAgICAgICAgICAgICAqY2ZPYmogPSAodm9pZCopIE1hcnNoYWxsaW5nSGVs
cGVyczo6c2FmZUFycmF5VG9JVW5rbm93bkFycmF5KFZfQVJSQVkocFZhcikpLmxlYWtSZWYoKTsK
ICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpA
QCAtMTY3LDE0ICsxNjcsMTMgQEAgSFJFU1VMVCBDRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZzo6UmVh
ZChMUENPTEVTVFIgcHN6UHJvcE5hbWUsIFZBUklBTlQgKnBWYXIsIElFcnIKICNpZiBVU0UoQ0Yp
CiAgICAgaWYgKG1fZGljdGlvbmFyeSkgewogICAgICAgICB2b2lkKiB2YWx1ZTsKLSAgICAgICAg
Q0ZTdHJpbmdSZWYga2V5ID0gTWFyc2hhbGxpbmdIZWxwZXJzOjpMUENPTEVTVFJUb0NGU3RyaW5n
UmVmKHBzelByb3BOYW1lKTsKKyAgICAgICAgYXV0byBrZXkgPSBNYXJzaGFsbGluZ0hlbHBlcnM6
OkxQQ09MRVNUUlRvQ0ZTdHJpbmdSZWYocHN6UHJvcE5hbWUpOwogICAgICAgICBIUkVTVUxUIGhy
ID0gRV9GQUlMOwotICAgICAgICBpZiAoQ0ZEaWN0aW9uYXJ5R2V0VmFsdWVJZlByZXNlbnQobV9k
aWN0aW9uYXJ5LmdldCgpLCBrZXksIChjb25zdCB2b2lkKiopICZ2YWx1ZSkpIHsKKyAgICAgICAg
aWYgKENGRGljdGlvbmFyeUdldFZhbHVlSWZQcmVzZW50KG1fZGljdGlvbmFyeS5nZXQoKSwga2V5
LmdldCgpLCAoY29uc3Qgdm9pZCoqKSAmdmFsdWUpKSB7CiAgICAgICAgICAgICBpZiAoQ29udmVy
dENGVHlwZVRvVmFyaWFudChwVmFyLCB2YWx1ZSkpCiAgICAgICAgICAgICAgICAgaHIgPSBTX09L
OwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIGhyID0gRV9JTlZBTElEQVJHOwotICAgICAg
ICBDRlJlbGVhc2Uoa2V5KTsKICAgICAgICAgcmV0dXJuIGhyOwogICAgIH0KICNlbmRpZgpAQCAt
MTkxLDEwICsxOTAsOSBAQCBIUkVTVUxUIENGRGljdGlvbmFyeVByb3BlcnR5QmFnOjpXcml0ZShf
SW5fIExQQ09MRVNUUiBwc3pQcm9wTmFtZSwgX0luXyBWQVJJQU5UKgogICAgIH0KICAgICB2b2lk
KiBjZk9iajsKICAgICBpZiAoQ29udmVydFZhcmlhbnRUb0NGVHlwZShwVmFyLCAmY2ZPYmopKSB7
Ci0gICAgICAgIENGU3RyaW5nUmVmIGtleSA9IE1hcnNoYWxsaW5nSGVscGVyczo6TFBDT0xFU1RS
VG9DRlN0cmluZ1JlZihwc3pQcm9wTmFtZSk7Ci0gICAgICAgIENGRGljdGlvbmFyeUFkZFZhbHVl
KG1fZGljdGlvbmFyeS5nZXQoKSwga2V5LCBjZk9iaik7CisgICAgICAgIGF1dG8ga2V5ID0gTWFy
c2hhbGxpbmdIZWxwZXJzOjpMUENPTEVTVFJUb0NGU3RyaW5nUmVmKHBzelByb3BOYW1lKTsKKyAg
ICAgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUobV9kaWN0aW9uYXJ5LmdldCgpLCBrZXkuZ2V0KCks
IGNmT2JqKTsKICAgICAgICAgLy8gQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUgc2hvdWxkIGF1dG9tYXRp
Y2FsbHkgcmV0YWluIHRoZSBDRiBvYmplY3RzIHBhc3NlZCBpbiwgc28gcmVsZWFzZSB0aGVtIGhl
cmUKLSAgICAgICAgQ0ZSZWxlYXNlKGtleSk7CiAgICAgICAgIENGUmVsZWFzZShjZk9iaik7CiAg
ICAgICAgIHJldHVybiBTX09LOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL01hcnNoYWxsaW5nSGVscGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9N
YXJzaGFsbGluZ0hlbHBlcnMuY3BwCmluZGV4IDI1NjA4OTMxOTA0NTc0NmE5Mzk1ZTVkZWQ2YzZh
NzNjZGNkYmY4YWUuLmFiNmQ4NWJmZjc5N2E5OWI4ZTlmOGIyMmJjY2RjYzQ1ZDI3MDllNzAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01hcnNoYWxsaW5nSGVscGVycy5jcHAK
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vTWFyc2hhbGxpbmdIZWxwZXJzLmNwcApAQCAt
NTMsMzkgKzUzLDMzIEBAIEJTVFIgTWFyc2hhbGxpbmdIZWxwZXJzOjpVUkxUb0JTVFIoY29uc3Qg
VVJMJiB1cmwpCiB9CiAKICNpZiBVU0UoQ0YpCi1DRlVSTFJlZiBNYXJzaGFsbGluZ0hlbHBlcnM6
OlBhdGhTdHJpbmdUb0ZpbGVDRlVSTFJlZihjb25zdCBTdHJpbmcmIHN0cmluZykKK1JldGFpblB0
cjxDRlVSTFJlZj4gTWFyc2hhbGxpbmdIZWxwZXJzOjpQYXRoU3RyaW5nVG9GaWxlQ0ZVUkxSZWYo
Y29uc3QgU3RyaW5nJiBzdHJpbmcpCiB7Ci0gICAgcmV0dXJuIENGVVJMQ3JlYXRlV2l0aEZpbGVT
eXN0ZW1QYXRoKDAsIHN0cmluZy5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBrQ0ZVUkxXaW5kb3dz
UGF0aFN0eWxlLCBmYWxzZSk7CisgICAgcmV0dXJuIGFkb3B0Q0YoQ0ZVUkxDcmVhdGVXaXRoRmls
ZVN5c3RlbVBhdGgoMCwgc3RyaW5nLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGtDRlVSTFdpbmRv
d3NQYXRoU3R5bGUsIGZhbHNlKSk7CiB9CiAKIFN0cmluZyBNYXJzaGFsbGluZ0hlbHBlcnM6OkZp
bGVDRlVSTFJlZlRvUGF0aFN0cmluZyhDRlVSTFJlZiBmaWxlVVJMKQogewotICAgIENGU3RyaW5n
UmVmIHN0cmluZyA9IENGVVJMQ29weUZpbGVTeXN0ZW1QYXRoKGZpbGVVUkwsIGtDRlVSTFdpbmRv
d3NQYXRoU3R5bGUpOwotICAgIFN0cmluZyByZXN1bHQoc3RyaW5nKTsKLSAgICBDRlJlbGVhc2Uo
c3RyaW5nKTsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiBhZG9wdENGKENGVVJMQ29w
eUZpbGVTeXN0ZW1QYXRoKGZpbGVVUkwsIGtDRlVSTFdpbmRvd3NQYXRoU3R5bGUpKS5nZXQoKTsK
IH0KIAotQ0ZVUkxSZWYgTWFyc2hhbGxpbmdIZWxwZXJzOjpCU1RSVG9DRlVSTFJlZihCU1RSIHVy
bFN0cikKK1JldGFpblB0cjxDRlVSTFJlZj4gTWFyc2hhbGxpbmdIZWxwZXJzOjpCU1RSVG9DRlVS
TFJlZihCU1RSIHVybFN0cikKIHsKLSAgICBDRlN0cmluZ1JlZiB1cmxDRlN0cmluZyA9IEJTVFJU
b0NGU3RyaW5nUmVmKHVybFN0cik7CisgICAgYXV0byB1cmxDRlN0cmluZyA9IEJTVFJUb0NGU3Ry
aW5nUmVmKHVybFN0cik7CiAgICAgaWYgKCF1cmxDRlN0cmluZykKLSAgICAgICAgcmV0dXJuIDA7
Ci0KLSAgICBDRlVSTFJlZiB1cmxSZWYgPSBDRlVSTENyZWF0ZVdpdGhTdHJpbmcoMCwgdXJsQ0ZT
dHJpbmcsIDApOwotICAgIENGUmVsZWFzZSh1cmxDRlN0cmluZyk7CisgICAgICAgIHJldHVybiBu
dWxscHRyOwogCi0gICAgcmV0dXJuIHVybFJlZjsKKyAgICByZXR1cm4gYWRvcHRDRihDRlVSTENy
ZWF0ZVdpdGhTdHJpbmcobnVsbHB0ciwgdXJsQ0ZTdHJpbmcuZ2V0KCksIG51bGxwdHIpKTsKIH0K
IAotQ0ZTdHJpbmdSZWYgTWFyc2hhbGxpbmdIZWxwZXJzOjpCU1RSVG9DRlN0cmluZ1JlZihCU1RS
IHN0cikKK1JldGFpblB0cjxDRlN0cmluZ1JlZj4gTWFyc2hhbGxpbmdIZWxwZXJzOjpCU1RSVG9D
RlN0cmluZ1JlZihCU1RSIHN0cikKIHsKLSAgICByZXR1cm4gQ0ZTdHJpbmdDcmVhdGVXaXRoQ2hh
cmFjdGVycygwLCAoY29uc3QgVW5pQ2hhciopKHN0ciA/IHN0ciA6IFRFWFQoIiIpKSwgU3lzU3Ry
aW5nTGVuKHN0cikpOworICAgIHJldHVybiBhZG9wdENGKENGU3RyaW5nQ3JlYXRlV2l0aENoYXJh
Y3RlcnMoMCwgKGNvbnN0IFVuaUNoYXIqKShzdHIgPyBzdHIgOiBURVhUKCIiKSksIFN5c1N0cmlu
Z0xlbihzdHIpKSk7CiB9CiAKLUNGU3RyaW5nUmVmIE1hcnNoYWxsaW5nSGVscGVyczo6TFBDT0xF
U1RSVG9DRlN0cmluZ1JlZihMUENPTEVTVFIgc3RyKQorUmV0YWluUHRyPENGU3RyaW5nUmVmPiBN
YXJzaGFsbGluZ0hlbHBlcnM6OkxQQ09MRVNUUlRvQ0ZTdHJpbmdSZWYoTFBDT0xFU1RSIHN0cikK
IHsKLSAgICByZXR1cm4gQ0ZTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycygwLCAoY29uc3QgVW5p
Q2hhciopKHN0ciA/IHN0ciA6IFRFWFQoIiIpKSwgKENGSW5kZXgpKHN0ciA/IHdjc2xlbihzdHIp
IDogMCkpOworICAgIHJldHVybiBhZG9wdENGKENGU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMo
MCwgKGNvbnN0IFVuaUNoYXIqKShzdHIgPyBzdHIgOiBURVhUKCIiKSksIChDRkluZGV4KShzdHIg
PyB3Y3NsZW4oc3RyKSA6IDApKSk7CiB9CiAKIEJTVFIgTWFyc2hhbGxpbmdIZWxwZXJzOjpDRlN0
cmluZ1JlZlRvQlNUUihDRlN0cmluZ1JlZiBzdHIpCkBAIC0xMDAsOSArOTQsOSBAQCBpbnQgTWFy
c2hhbGxpbmdIZWxwZXJzOjpDRk51bWJlclJlZlRvSW50KENGTnVtYmVyUmVmIG51bSkKICAgICBy
ZXR1cm4gbnVtYmVyOwogfQogCi1DRk51bWJlclJlZiBNYXJzaGFsbGluZ0hlbHBlcnM6OmludFRv
Q0ZOdW1iZXJSZWYoaW50IG51bSkKK1JldGFpblB0cjxDRk51bWJlclJlZj4gTWFyc2hhbGxpbmdI
ZWxwZXJzOjppbnRUb0NGTnVtYmVyUmVmKGludCBudW0pCiB7Ci0gICAgcmV0dXJuIENGTnVtYmVy
Q3JlYXRlKDAsIGtDRk51bWJlclNJbnQzMlR5cGUsICZudW0pOworICAgIHJldHVybiBhZG9wdENG
KENGTnVtYmVyQ3JlYXRlKDAsIGtDRk51bWJlclNJbnQzMlR5cGUsICZudW0pKTsKIH0KICNlbmRp
ZgogCkBAIC0yNDQsNyArMjM4LDcgQEAgU0FGRUFSUkFZKiBNYXJzaGFsbGluZ0hlbHBlcnM6Oml1
bmtub3duQXJyYXlUb1NhZmVBcnJheShDRkFycmF5UmVmIGluQXJyYXkpCiAgICAgcmV0dXJuIHNh
OwogfQogCi1DRkFycmF5UmVmIE1hcnNoYWxsaW5nSGVscGVyczo6c2FmZUFycmF5VG9TdHJpbmdB
cnJheShTQUZFQVJSQVkqIGluQXJyYXkpCitSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gTWFyc2hhbGxp
bmdIZWxwZXJzOjpzYWZlQXJyYXlUb1N0cmluZ0FycmF5KFNBRkVBUlJBWSogaW5BcnJheSkKIHsK
ICAgICBsb25nIGxCb3VuZD0wLCB1Qm91bmQ9LTE7CiAgICAgSFJFU1VMVCBociA9IDo6U2FmZUFy
cmF5R2V0TEJvdW5kKGluQXJyYXksIDEsICZsQm91bmQpOwpAQCAtMjU3LDE0ICsyNTEsMTMgQEAg
Q0ZBcnJheVJlZiBNYXJzaGFsbGluZ0hlbHBlcnM6OnNhZmVBcnJheVRvU3RyaW5nQXJyYXkoU0FG
RUFSUkFZKiBpbkFycmF5KQogICAgICAgICBmb3IgKDsgbEJvdW5kIDw9IHVCb3VuZDsgbEJvdW5k
KyspIHsKICAgICAgICAgICAgIEJTdHJpbmcgc3RyOwogICAgICAgICAgICAgaHIgPSA6OlNhZmVB
cnJheUdldEVsZW1lbnQoaW5BcnJheSwgJmxCb3VuZCwgJnN0cik7Ci0gICAgICAgICAgICBpdGVt
c1tsQm91bmRdID0gQlNUUlRvQ0ZTdHJpbmdSZWYoc3RyKTsKKyAgICAgICAgICAgIGl0ZW1zW2xC
b3VuZF0gPSBCU1RSVG9DRlN0cmluZ1JlZihzdHIpLmxlYWtSZWYoKTsKICAgICAgICAgfQogICAg
IH0KLSAgICBDRkFycmF5UmVmIHJlc3VsdCA9IENGQXJyYXlDcmVhdGUoMCwgKGNvbnN0IHZvaWQq
KilpdGVtcy5kYXRhKCksIGxlbiwgJmtDRlR5cGVBcnJheUNhbGxCYWNrcyk7Ci0gICAgcmV0dXJu
IHJlc3VsdDsKKyAgICByZXR1cm4gYWRvcHRDRihDRkFycmF5Q3JlYXRlKDAsIChjb25zdCB2b2lk
KiopaXRlbXMuZGF0YSgpLCBsZW4sICZrQ0ZUeXBlQXJyYXlDYWxsQmFja3MpKTsKIH0KIAotQ0ZB
cnJheVJlZiBNYXJzaGFsbGluZ0hlbHBlcnM6OnNhZmVBcnJheVRvSW50QXJyYXkoU0FGRUFSUkFZ
KiBpbkFycmF5KQorUmV0YWluUHRyPENGQXJyYXlSZWY+IE1hcnNoYWxsaW5nSGVscGVyczo6c2Fm
ZUFycmF5VG9JbnRBcnJheShTQUZFQVJSQVkqIGluQXJyYXkpCiB7CiAgICAgbG9uZyBsQm91bmQ9
MCwgdUJvdW5kPS0xOwogICAgIEhSRVNVTFQgaHIgPSA6OlNhZmVBcnJheUdldExCb3VuZChpbkFy
cmF5LCAxLCAmbEJvdW5kKTsKQEAgLTI3NywxNCArMjcwLDEzIEBAIENGQXJyYXlSZWYgTWFyc2hh
bGxpbmdIZWxwZXJzOjpzYWZlQXJyYXlUb0ludEFycmF5KFNBRkVBUlJBWSogaW5BcnJheSkKICAg
ICAgICAgZm9yICg7IGxCb3VuZCA8PSB1Qm91bmQ7IGxCb3VuZCsrKSB7CiAgICAgICAgICAgICBp
bnQgbnVtID0gMDsKICAgICAgICAgICAgIGhyID0gOjpTYWZlQXJyYXlHZXRFbGVtZW50KGluQXJy
YXksICZsQm91bmQsICZudW0pOwotICAgICAgICAgICAgaXRlbXNbbEJvdW5kXSA9IFNVQ0NFRURF
RChocikgPyBpbnRUb0NGTnVtYmVyUmVmKG51bSkgOiBrQ0ZOdW1iZXJOYU47CisgICAgICAgICAg
ICBpdGVtc1tsQm91bmRdID0gU1VDQ0VFREVEKGhyKSA/IGludFRvQ0ZOdW1iZXJSZWYobnVtKS5s
ZWFrUmVmKCkgOiBrQ0ZOdW1iZXJOYU47CiAgICAgICAgIH0KICAgICB9Ci0gICAgQ0ZBcnJheVJl
ZiByZXN1bHQgPSBDRkFycmF5Q3JlYXRlKDAsIChjb25zdCB2b2lkKiopaXRlbXMuZGF0YSgpLCBs
ZW4sICZrQ0ZUeXBlQXJyYXlDYWxsQmFja3MpOwotICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0
dXJuIGFkb3B0Q0YoQ0ZBcnJheUNyZWF0ZSgwLCAoY29uc3Qgdm9pZCoqKWl0ZW1zLmRhdGEoKSwg
bGVuLCAma0NGVHlwZUFycmF5Q2FsbEJhY2tzKSk7CiB9CiAKLUNGQXJyYXlSZWYgTWFyc2hhbGxp
bmdIZWxwZXJzOjpzYWZlQXJyYXlUb0lVbmtub3duQXJyYXkoU0FGRUFSUkFZKiBpbkFycmF5KQor
UmV0YWluUHRyPENGQXJyYXlSZWY+IE1hcnNoYWxsaW5nSGVscGVyczo6c2FmZUFycmF5VG9JVW5r
bm93bkFycmF5KFNBRkVBUlJBWSogaW5BcnJheSkKIHsKICAgICBsb25nIGxCb3VuZD0wLCB1Qm91
bmQ9LTE7CiAgICAgSFJFU1VMVCBociA9IDo6U2FmZUFycmF5R2V0TEJvdW5kKGluQXJyYXksIDEs
ICZsQm91bmQpOwpAQCAtMjkzLDcgKzI4NSw3IEBAIENGQXJyYXlSZWYgTWFyc2hhbGxpbmdIZWxw
ZXJzOjpzYWZlQXJyYXlUb0lVbmtub3duQXJyYXkoU0FGRUFSUkFZKiBpbkFycmF5KQogICAgIGxv
bmcgbGVuID0gKFNVQ0NFRURFRChocikpID8gKHVCb3VuZC1sQm91bmQrMSkgOiAwOwogICAgIHZv
aWQqIGl0ZW1zID0gbnVsbHB0cjsKICAgICBociA9IDo6U2FmZUFycmF5QWNjZXNzRGF0YShpbkFy
cmF5LCAmaXRlbXMpOwotICAgIENGQXJyYXlSZWYgcmVzdWx0ID0gU1VDQ0VFREVEKGhyKSA/IENG
QXJyYXlDcmVhdGUoMCwgKGNvbnN0IHZvaWQqKikgaXRlbXMsIGxlbiwgJmtJVW5rbm93bkFycmF5
Q2FsbEJhY2tzKSA6IG51bGxwdHI7CisgICAgYXV0byByZXN1bHQgPSBTVUNDRUVERUQoaHIpID8g
YWRvcHRDRihDRkFycmF5Q3JlYXRlKDAsIChjb25zdCB2b2lkKiopIGl0ZW1zLCBsZW4sICZrSVVu
a25vd25BcnJheUNhbGxCYWNrcykpIDogbnVsbHB0cjsKICAgICBociA9IDo6U2FmZUFycmF5VW5h
Y2Nlc3NEYXRhKGluQXJyYXkpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9NYXJzaGFsbGluZ0hlbHBlcnMuaCBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL01hcnNoYWxsaW5nSGVscGVycy5oCmluZGV4IDJjNDg2MDM2YTBjYzcwMTVj
NjA4YzhhMDdhNmQwMTVkNDE3OTExNTQuLjk0MWE0Mjg5ODE0MWFlNTkwMzM1MTAzMGM0ZTI5Yzgz
MzY0OGIyYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01hcnNoYWxsaW5n
SGVscGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01hcnNoYWxsaW5nSGVscGVy
cy5oCkBAIC0yOSw2ICsyOSw3IEBACiAKICNpZiBVU0UoQ0YpCiAjaW5jbHVkZSA8Q29yZUZvdW5k
YXRpb24vQ29yZUZvdW5kYXRpb24uaD4KKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAjZW5k
aWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDIsMTQgKzQzLDE0IEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgQlNUUiBVUkxUb0JTVFIoY29uc3QgVVJMJik7CiAKICNpZiBVU0UoQ0YpCi0gICAg
c3RhdGljIENGVVJMUmVmIFBhdGhTdHJpbmdUb0ZpbGVDRlVSTFJlZihjb25zdCBXVEY6OlN0cmlu
ZyYpOworICAgIHN0YXRpYyBSZXRhaW5QdHI8Q0ZVUkxSZWY+IFBhdGhTdHJpbmdUb0ZpbGVDRlVS
TFJlZihjb25zdCBXVEY6OlN0cmluZyYpOwogICAgIHN0YXRpYyBXVEY6OlN0cmluZyBGaWxlQ0ZV
UkxSZWZUb1BhdGhTdHJpbmcoQ0ZVUkxSZWYgZmlsZVVSTCk7Ci0gICAgc3RhdGljIENGVVJMUmVm
IEJTVFJUb0NGVVJMUmVmKEJTVFIpOwotICAgIHN0YXRpYyBDRlN0cmluZ1JlZiBCU1RSVG9DRlN0
cmluZ1JlZihCU1RSKTsKLSAgICBzdGF0aWMgQ0ZTdHJpbmdSZWYgTFBDT0xFU1RSVG9DRlN0cmlu
Z1JlZihMUENPTEVTVFIpOworICAgIHN0YXRpYyBSZXRhaW5QdHI8Q0ZVUkxSZWY+IEJTVFJUb0NG
VVJMUmVmKEJTVFIpOworICAgIHN0YXRpYyBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IEJTVFJUb0NG
U3RyaW5nUmVmKEJTVFIpOworICAgIHN0YXRpYyBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IExQQ09M
RVNUUlRvQ0ZTdHJpbmdSZWYoTFBDT0xFU1RSKTsKICAgICBzdGF0aWMgQlNUUiBDRlN0cmluZ1Jl
ZlRvQlNUUihDRlN0cmluZ1JlZik7CiAgICAgc3RhdGljIGludCBDRk51bWJlclJlZlRvSW50KENG
TnVtYmVyUmVmKTsKLSAgICBzdGF0aWMgQ0ZOdW1iZXJSZWYgaW50VG9DRk51bWJlclJlZihpbnQp
OworICAgIHN0YXRpYyBSZXRhaW5QdHI8Q0ZOdW1iZXJSZWY+IGludFRvQ0ZOdW1iZXJSZWYoaW50
KTsKICAgICBzdGF0aWMgQ0ZBYnNvbHV0ZVRpbWUgREFURVRvQ0ZBYnNvbHV0ZVRpbWUoREFURSk7
CiAgICAgc3RhdGljIERBVEUgQ0ZBYnNvbHV0ZVRpbWVUb0RBVEUoQ0ZBYnNvbHV0ZVRpbWUpOwog
ICAgIHN0YXRpYyBTQUZFQVJSQVkqIHN0cmluZ0FycmF5VG9TYWZlQXJyYXkoQ0ZBcnJheVJlZik7
CkBAIC02Myw5ICs2NCw5IEBAIHB1YmxpYzoKIAogI2lmIFVTRShDRikKICAgICBzdGF0aWMgU0FG
RUFSUkFZKiBpdW5rbm93bkFycmF5VG9TYWZlQXJyYXkoQ0ZBcnJheVJlZik7Ci0gICAgc3RhdGlj
IENGQXJyYXlSZWYgc2FmZUFycmF5VG9TdHJpbmdBcnJheShTQUZFQVJSQVkqKTsKLSAgICBzdGF0
aWMgQ0ZBcnJheVJlZiBzYWZlQXJyYXlUb0ludEFycmF5KFNBRkVBUlJBWSopOwotICAgIHN0YXRp
YyBDRkFycmF5UmVmIHNhZmVBcnJheVRvSVVua25vd25BcnJheShTQUZFQVJSQVkqKTsKKyAgICBz
dGF0aWMgUmV0YWluUHRyPENGQXJyYXlSZWY+IHNhZmVBcnJheVRvU3RyaW5nQXJyYXkoU0FGRUFS
UkFZKik7CisgICAgc3RhdGljIFJldGFpblB0cjxDRkFycmF5UmVmPiBzYWZlQXJyYXlUb0ludEFy
cmF5KFNBRkVBUlJBWSopOworICAgIHN0YXRpYyBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gc2FmZUFy
cmF5VG9JVW5rbm93bkFycmF5KFNBRkVBUlJBWSopOwogICAgIHN0YXRpYyBjb25zdCB2b2lkKiBJ
VW5rbm93blJldGFpbkNhbGxiYWNrKENGQWxsb2NhdG9yUmVmLCBjb25zdCB2b2lkKik7CiAgICAg
c3RhdGljIHZvaWQgSVVua25vd25SZWxlYXNlQ2FsbGJhY2soQ0ZBbGxvY2F0b3JSZWYsIGNvbnN0
IHZvaWQqKTsKICAgICBzdGF0aWMgQ0ZBcnJheUNhbGxCYWNrcyBrSVVua25vd25BcnJheUNhbGxC
YWNrczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkFwcGxpY2F0aW9u
Q2FjaGUuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQXBwbGljYXRpb25DYWNoZS5j
cHAKaW5kZXggZGUxMjUwZWNkZTk3NmE2MmYyMjU4YzdkYzc0ZjZlOGVjMzc0YjJjOC4uMDhkZDQw
MWViNzNkODVlMGYzY2U1ZjIzNmM5YzA2ZmY2YTRkNmM1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViQXBwbGljYXRpb25DYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViQXBwbGljYXRpb25DYWNoZS5jcHAKQEAgLTIwMCw3ICsyMDAsNyBAQCBI
UkVTVUxUIFdlYkFwcGxpY2F0aW9uQ2FjaGU6Om9yaWdpbnNXaXRoQ2FjaGUoSVByb3BlcnR5QmFn
Kiogb3JpZ2lucykKICAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlRGljdGlvbmFyeVJlZj4gZGljdGlv
bmFyeSA9IGFkb3B0Q0YoCiAgICAgICAgIENGRGljdGlvbmFyeUNyZWF0ZU11dGFibGUoMCwgMCwg
JmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNh
bGxCYWNrcykpOwogCi0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBrZXkgPSBhZG9wdENGKE1h
cnNoYWxsaW5nSGVscGVyczo6QlNUUlRvQ0ZTdHJpbmdSZWYoX2JzdHJfdChMIm9yaWdpbnMiKSkp
OworICAgIGF1dG8ga2V5ID0gTWFyc2hhbGxpbmdIZWxwZXJzOjpCU1RSVG9DRlN0cmluZ1JlZihf
YnN0cl90KEwib3JpZ2lucyIpKTsKICAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkaWN0aW9uYXJ5
LmdldCgpLCBrZXkuZ2V0KCksIGFycmF5SXRlbS5nZXQoKSk7CiAKICAgICBDT01QdHI8Q0ZEaWN0
aW9uYXJ5UHJvcGVydHlCYWc+IHJlc3VsdCA9IENGRGljdGlvbmFyeVByb3BlcnR5QmFnOjpjcmVh
dGVJbnN0YW5jZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCmluZGV4IDliODZhYTQ1
YWQ0MzlmNGZiOWI4MmQ0MTQzMDcxZDVkYmNmMzgyNjMuLjBlNjY5MDgyN2Y4MGFiMTdlM2UzMGI3
ZTJhODkyNWQxMzdjNjZkMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKQEAgLTEw
MzgsMjEgKzEwMzgsMjEgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRG
YWlsVG9TdGFydFBsdWdpbihjb25zdCBQbHVnaW5WaWV3JiBwbHVnaW4KICAgICBpZiAoIXBsdWdp
blZpZXcucGx1Z2luc1BhZ2UoKS5pc051bGwoKSkgewogICAgICAgICBVUkwgcGx1Z2luUGFnZVVS
TCA9IGZyYW1lLT5kb2N1bWVudCgpLT5jb21wbGV0ZVVSTChzdHJpcExlYWRpbmdBbmRUcmFpbGlu
Z0hUTUxTcGFjZXMocGx1Z2luVmlldy5wbHVnaW5zUGFnZSgpKSk7CiAgICAgICAgIGlmIChwbHVn
aW5QYWdlVVJMLnByb3RvY29sSXNJbkhUVFBGYW1pbHkoKSkgewotICAgICAgICAgICAgc3RhdGlj
IENGU3RyaW5nUmVmIGtleSA9IE1hcnNoYWxsaW5nSGVscGVyczo6TFBDT0xFU1RSVG9DRlN0cmlu
Z1JlZihXZWJLaXRFcnJvclBsdWdJblBhZ2VVUkxTdHJpbmdLZXkpOwotICAgICAgICAgICAgQ0ZE
aWN0aW9uYXJ5U2V0VmFsdWUodXNlckluZm8uZ2V0KCksIGtleSwgcGx1Z2luUGFnZVVSTC5zdHJp
bmcoKS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKKyAgICAgICAgICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+PiBrZXkgPSBNYXJzaGFsbGluZ0hlbHBlcnM6
OkxQQ09MRVNUUlRvQ0ZTdHJpbmdSZWYoV2ViS2l0RXJyb3JQbHVnSW5QYWdlVVJMU3RyaW5nS2V5
KTsKKyAgICAgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHVzZXJJbmZvLmdldCgpLCBrZXku
Z2V0KCkuZ2V0KCksIHBsdWdpblBhZ2VVUkwuc3RyaW5nKCkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQo
KSk7CiAgICAgICAgIH0KICAgICB9CiAKICAgICBpZiAoIXBsdWdpblZpZXcubWltZVR5cGUoKS5p
c051bGwoKSkgewotICAgICAgICBzdGF0aWMgQ0ZTdHJpbmdSZWYga2V5ID0gTWFyc2hhbGxpbmdI
ZWxwZXJzOjpMUENPTEVTVFJUb0NGU3RyaW5nUmVmKFdlYktpdEVycm9yTUlNRVR5cGVLZXkpOwot
ICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZSh1c2VySW5mby5nZXQoKSwga2V5LCBwbHVnaW5W
aWV3Lm1pbWVUeXBlKCkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CisgICAgICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+PiBrZXkgPSBNYXJzaGFsbGluZ0hl
bHBlcnM6OkxQQ09MRVNUUlRvQ0ZTdHJpbmdSZWYoV2ViS2l0RXJyb3JNSU1FVHlwZUtleSk7Cisg
ICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHVzZXJJbmZvLmdldCgpLCBrZXkuZ2V0KCkuZ2V0
KCksIHBsdWdpblZpZXcubWltZVR5cGUoKS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKICAgICB9
CiAKICAgICBpZiAocGx1Z2luVmlldy5wbHVnaW4oKSkgewogICAgICAgICBTdHJpbmcgcGx1Z2lu
TmFtZSA9IHBsdWdpblZpZXcucGx1Z2luKCktPm5hbWUoKTsKICAgICAgICAgaWYgKCFwbHVnaW5O
YW1lLmlzTnVsbCgpKSB7Ci0gICAgICAgICAgICBzdGF0aWMgQ0ZTdHJpbmdSZWYga2V5ID0gTWFy
c2hhbGxpbmdIZWxwZXJzOjpMUENPTEVTVFJUb0NGU3RyaW5nUmVmKFdlYktpdEVycm9yUGx1Z0lu
TmFtZUtleSk7Ci0gICAgICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZSh1c2VySW5mby5nZXQo
KSwga2V5LCBwbHVnaW5OYW1lLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOworICAgICAgICAgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxDRlN0cmluZ1JlZj4+IGtleSA9IE1hcnNo
YWxsaW5nSGVscGVyczo6TFBDT0xFU1RSVG9DRlN0cmluZ1JlZihXZWJLaXRFcnJvclBsdWdJbk5h
bWVLZXkpOworICAgICAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUodXNlckluZm8uZ2V0KCks
IGtleS5nZXQoKS5nZXQoKSwgcGx1Z2luTmFtZS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKICAg
ICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
RG93bmxvYWRDRk5ldC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEb3dubG9hZENG
TmV0LmNwcAppbmRleCBhMzMzYTJmNjI3NjdlYmJhZWMzYzgzYjZiMDc2ZjBjMzVkMDNkNTBjLi5l
YTBiNjc1MWM1NTRlODI3ZGM5ODI1NWNkNGE3MTU3ZjFkNWFkMmIyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEb3dubG9hZENGTmV0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJEb3dubG9hZENGTmV0LmNwcApAQCAtMTc4LDcgKzE3OCw3IEBAIEhS
RVNVTFQgV2ViRG93bmxvYWQ6OmluaXRUb1Jlc3VtZVdpdGhCdW5kbGUoX0luXyBCU1RSIGJ1bmRs
ZVBhdGgsIF9Jbl9vcHRfIElXZWJECiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZGlkUmVjZWl2ZVJlc3BvbnNlQ2FsbGJhY2ssIHdpbGxSZXN1bWVXaXRoUmVzcG9uc2VDYWxsYmFj
aywgZGlkUmVjZWl2ZURhdGFDYWxsYmFjaywgc2hvdWxkRGVjb2RlRGF0YU9mTUlNRVR5cGVDYWxs
YmFjaywgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVjaWRlRGVzdGluYXRp
b25XaXRoU3VnZ2VzdGVkT2JqZWN0TmFtZUNhbGxiYWNrLCBkaWRDcmVhdGVEZXN0aW5hdGlvbkNh
bGxiYWNrLCBkaWRGaW5pc2hDYWxsYmFjaywgZGlkRmFpbENhbGxiYWNrfTsKICAgICAKLSAgICBS
ZXRhaW5QdHI8Q0ZVUkxSZWY+IHBhdGhVUkwgPSBhZG9wdENGKE1hcnNoYWxsaW5nSGVscGVyczo6
UGF0aFN0cmluZ1RvRmlsZUNGVVJMUmVmKFN0cmluZyhidW5kbGVQYXRoLCBTeXNTdHJpbmdMZW4o
YnVuZGxlUGF0aCkpKSk7CisgICAgYXV0byBwYXRoVVJMID0gTWFyc2hhbGxpbmdIZWxwZXJzOjpQ
YXRoU3RyaW5nVG9GaWxlQ0ZVUkxSZWYoU3RyaW5nKGJ1bmRsZVBhdGgsIFN5c1N0cmluZ0xlbihi
dW5kbGVQYXRoKSkpOwogICAgIEFTU0VSVChwYXRoVVJMKTsKIAogICAgIG1fZG93bmxvYWQgPSBh
ZG9wdENGKENGVVJMRG93bmxvYWRDcmVhdGVXaXRoUmVzdW1lRGF0YSgwLCByZXN1bWVEYXRhLmdl
dCgpLCBwYXRoVVJMLmdldCgpLCAmY2xpZW50KSk7CkBAIC0yODgsOSArMjg4LDggQEAgSFJFU1VM
VCBXZWJEb3dubG9hZDo6c2V0RGVzdGluYXRpb24oX0luXyBCU1RSIHBhdGgsIEJPT0wgYWxsb3dP
dmVyd3JpdGUpCiAgICAgbV9kZXN0aW5hdGlvbiA9IFN0cmluZyhwYXRoLCBTeXNTdHJpbmdMZW4o
cGF0aCkpOwogICAgIG1fYnVuZGxlUGF0aCA9IG1fZGVzdGluYXRpb24gKyBEb3dubG9hZEJ1bmRs
ZTo6ZmlsZUV4dGVuc2lvbigpOwogCi0gICAgQ0ZVUkxSZWYgcGF0aFVSTCA9IE1hcnNoYWxsaW5n
SGVscGVyczo6UGF0aFN0cmluZ1RvRmlsZUNGVVJMUmVmKG1fYnVuZGxlUGF0aCk7Ci0gICAgQ0ZV
UkxEb3dubG9hZFNldERlc3RpbmF0aW9uKG1fZG93bmxvYWQuZ2V0KCksIHBhdGhVUkwsICEhYWxs
b3dPdmVyd3JpdGUpOwotICAgIENGUmVsZWFzZShwYXRoVVJMKTsKKyAgICBhdXRvIHBhdGhVUkwg
PSBNYXJzaGFsbGluZ0hlbHBlcnM6OlBhdGhTdHJpbmdUb0ZpbGVDRlVSTFJlZihtX2J1bmRsZVBh
dGgpOworICAgIENGVVJMRG93bmxvYWRTZXREZXN0aW5hdGlvbihtX2Rvd25sb2FkLmdldCgpLCBw
YXRoVVJMLmdldCgpLCAhIWFsbG93T3ZlcndyaXRlKTsKIAogICAgIExPRyhEb3dubG9hZCwgIldl
YkRvd25sb2FkIC0gU2V0IGRlc3RpbmF0aW9uIHRvICVzIiwgbV9idW5kbGVQYXRoLmFzY2lpKCku
ZGF0YSgpKTsKIApAQCAtMzY4LDkgKzM2Nyw3IEBAIENGVVJMUmVxdWVzdFJlZiBXZWJEb3dubG9h
ZDo6d2lsbFNlbmRSZXF1ZXN0KENGVVJMUmVxdWVzdFJlZiByZXF1ZXN0LCBDRlVSTFJlc3BvCiAK
ICAgICBDT01QdHI8V2ViTXV0YWJsZVVSTFJlcXVlc3Q+IGZpbmFsV2ViUmVxdWVzdChBZG9wdENP
TSwgV2ViTXV0YWJsZVVSTFJlcXVlc3Q6OmNyZWF0ZUluc3RhbmNlKGZpbmFsUmVxdWVzdC5nZXQo
KSkpOwogICAgIG1fcmVxdWVzdCA9IGZpbmFsV2ViUmVxdWVzdC5nZXQoKTsKLSAgICBDRlVSTFJl
cXVlc3RSZWYgcmVzdWx0ID0gZmluYWxXZWJSZXF1ZXN0LT5yZXNvdXJjZVJlcXVlc3QoKS5jZlVS
TFJlcXVlc3QoVXBkYXRlSFRUUEJvZHkpOwotICAgIENGUmV0YWluKHJlc3VsdCk7Ci0gICAgcmV0
dXJuIHJlc3VsdDsKKyAgICByZXR1cm4gcmV0YWluUHRyKGZpbmFsV2ViUmVxdWVzdC0+cmVzb3Vy
Y2VSZXF1ZXN0KCkuY2ZVUkxSZXF1ZXN0KFVwZGF0ZUhUVFBCb2R5KSkubGVha1JlZigpOwogfQog
CiB2b2lkIFdlYkRvd25sb2FkOjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoQ0ZV
UkxBdXRoQ2hhbGxlbmdlUmVmIGNoYWxsZW5nZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYkhpc3RvcnkuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSGlz
dG9yeS5jcHAKaW5kZXggNjFjMDI2YjdhZTAwZDgyOGIwMmRlYzNlYTNlNGI0ZDc5MDg4YWExMS4u
OWVmYWUyMjc5M2M3MGQwODYyOGNjOWNlY2U5MjNlYmM0YzI5N2RmNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSGlzdG9yeS5jcHAKKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViSGlzdG9yeS5jcHAKQEAgLTYxLDcgKzYxLDcgQEAgc3RhdGljIENPTVB0cjxJ
UHJvcGVydHlCYWc+IGNyZWF0ZVVzZXJJbmZvRnJvbUFycmF5KEJTVFIgbm90aWZpY2F0aW9uU3Ry
LCBJV2ViSGkKICAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlRGljdGlvbmFyeVJlZj4gZGljdGlvbmFy
eSA9IGFkb3B0Q0YoCiAgICAgICAgIENGRGljdGlvbmFyeUNyZWF0ZU11dGFibGUoMCwgMCwgJmtD
RlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxC
YWNrcykpOwogCi0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBrZXkgPSBhZG9wdENGKE1hcnNo
YWxsaW5nSGVscGVyczo6QlNUUlRvQ0ZTdHJpbmdSZWYobm90aWZpY2F0aW9uU3RyKSk7CisgICAg
YXV0byBrZXkgPSBNYXJzaGFsbGluZ0hlbHBlcnM6OkJTVFJUb0NGU3RyaW5nUmVmKG5vdGlmaWNh
dGlvblN0cik7CiAgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGljdGlvbmFyeS5nZXQoKSwga2V5
LmdldCgpLCBhcnJheUl0ZW0uZ2V0KCkpOwogCiAgICAgQ09NUHRyPENGRGljdGlvbmFyeVByb3Bl
cnR5QmFnPiByZXN1bHQgPSBDRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZzo6Y3JlYXRlSW5zdGFuY2Uo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkxvY2FsaXphYmxlU3Ry
aW5ncy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJMb2NhbGl6YWJsZVN0cmluZ3Mu
Y3BwCmluZGV4IGZjODBmZTk2ZjI5NDI2ZGZlMTVmZWRkNTJiNTRjNTQ0ZWQ1ZGUwZmEuLmI0MTY4
YmY4NDE5MWU4YTExNDM5ZDkwMDMyZmU4OWVhNGQyNmY3MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYkxvY2FsaXphYmxlU3RyaW5ncy5jcHAKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViTG9jYWxpemFibGVTdHJpbmdzLmNwcApAQCAtOTUsMTkgKzk1LDE5
IEBAIExvY2FsaXplZFN0cmluZzo6b3BlcmF0b3IgTFBDVFNUUigpIGNvbnN0CiAgICAgcmV0dXJu
IG1fc3RyaW5nLndpZGVDaGFyYWN0ZXJzKCkuZGF0YSgpOwogfQogCi1zdGF0aWMgQ0ZCdW5kbGVS
ZWYgY3JlYXRlV2ViS2l0QnVuZGxlKCkKK3N0YXRpYyB2b2lkIGNyZWF0ZVdlYktpdEJ1bmRsZSgp
CiB7Ci0gICAgc3RhdGljIENGQnVuZGxlUmVmIGJ1bmRsZTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8UmV0YWluUHRyPENGQnVuZGxlUmVmPj4gYnVuZGxlOwogICAgIHN0YXRpYyBib29sIGlu
aXRpYWxpemVkOwogCiAgICAgaWYgKGluaXRpYWxpemVkKQotICAgICAgICByZXR1cm4gYnVuZGxl
OworICAgICAgICByZXR1cm47CiAgICAgaW5pdGlhbGl6ZWQgPSB0cnVlOwogCiAgICAgV0NIQVIg
cGF0aFN0cltNQVhfUEFUSF07CiAgICAgRFdPUkQgbGVuZ3RoID0gOjpHZXRNb2R1bGVGaWxlTmFt
ZVcoZ0luc3RhbmNlLCBwYXRoU3RyLCBNQVhfUEFUSCk7CiAgICAgaWYgKCFsZW5ndGggfHwgKGxl
bmd0aCA9PSBNQVhfUEFUSCAmJiBHZXRMYXN0RXJyb3IoKSA9PSBFUlJPUl9JTlNVRkZJQ0lFTlRf
QlVGRkVSKSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybjsKIAogICAgIGJvb2wg
Zm91bmQgPSBmYWxzZTsKICAgICBmb3IgKGludCBpID0gbGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0p
IHsKQEAgLTEyMiwyMiArMTIyLDIwIEBAIHN0YXRpYyBDRkJ1bmRsZVJlZiBjcmVhdGVXZWJLaXRC
dW5kbGUoKQogICAgICAgICB9CiAgICAgfQogICAgIGlmICghZm91bmQpCi0gICAgICAgIHJldHVy
biAwOworICAgICAgICByZXR1cm47CiAKICAgICBpZiAod2NzY2F0X3MocGF0aFN0ciwgTUFYX1BB
VEgsIEwiXFxXZWJLaXQucmVzb3VyY2VzIikpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICBy
ZXR1cm47CiAKICAgICBTdHJpbmcgYnVuZGxlUGF0aFN0cmluZyhwYXRoU3RyKTsKICAgICBpZiAo
IWJ1bmRsZVBhdGhTdHJpbmcpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm47CiAK
LSAgICBDRlVSTFJlZiBidW5kbGVVUkxSZWYgPSBDRlVSTENyZWF0ZVdpdGhGaWxlU3lzdGVtUGF0
aCgwLCBidW5kbGVQYXRoU3RyaW5nLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGtDRlVSTFdpbmRv
d3NQYXRoU3R5bGUsIHRydWUpOworICAgIGF1dG8gYnVuZGxlVVJMUmVmID0gYWRvcHRDRihDRlVS
TENyZWF0ZVdpdGhGaWxlU3lzdGVtUGF0aCgwLCBidW5kbGVQYXRoU3RyaW5nLmNyZWF0ZUNGU3Ry
aW5nKCkuZ2V0KCksIGtDRlVSTFdpbmRvd3NQYXRoU3R5bGUsIHRydWUpKTsKICAgICBpZiAoIWJ1
bmRsZVVSTFJlZikKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybjsKIAotICAgIGJ1
bmRsZSA9IENGQnVuZGxlQ3JlYXRlKDAsIGJ1bmRsZVVSTFJlZik7Ci0gICAgQ0ZSZWxlYXNlKGJ1
bmRsZVVSTFJlZik7Ci0gICAgcmV0dXJuIGJ1bmRsZTsKKyAgICBidW5kbGUuZ2V0KCkgPSBhZG9w
dENGKENGQnVuZGxlQ3JlYXRlKDAsIGJ1bmRsZVVSTFJlZi5nZXQoKSkpOwogfQogCiBzdGF0aWMg
Q0ZCdW5kbGVSZWYgY2ZCdW5kbGVGb3JTdHJpbmdzQnVuZGxlKFdlYkxvY2FsaXphYmxlU3RyaW5n
c0J1bmRsZSogc3RyaW5nc0J1bmRsZSkKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rv
b2xzL0NoYW5nZUxvZwppbmRleCAyZjkyYjE4MGNmZTFmYmY5YjBhYmU2YzRjZTg5NjRhM2NkZTZi
NTQ4Li5mM2Y1ODRmMGYyYTU3YjhlOGRiOGM3YWE2MWRhZGYxZTRiZTBjNzc2IDEwMDY0NAotLS0g
YS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTQgQEAK
KzIwMjEtMDMtMDQgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBS
ZWR1Y2UgdXNlIG9mIENGUmV0YWluKCkgLyBDRlJlbGVhc2UoKSAvIENGQXV0b1JlbGVhc2UoKSBp
biBXZWJLaXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIyMjc2MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFJlZHVjZSB1c2Ugb2YgQ0ZSZXRhaW4oKSAvIENGUmVsZWFzZSgpIC8gQ0ZBdXRvUmVsZWFzZSgp
IGluIFdlYktpdCBieSB1c2luZyBSZXRhaW5QdHI8Pi4KKworICAgICAgICAqIER1bXBSZW5kZXJU
cmVlL1Rlc3ROZXRzY2FwZVBsdWdJbi9QbHVnaW5PYmplY3RNYWMubW06CisgICAgICAgIChjcmVh
dGVDb3JlQW5pbWF0aW9uTGF5ZXIpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9BY2Nl
c3NpYmlsaXR5Q29tbW9uTWFjLm1tOgorICAgICAgICAoK1tOU1N0cmluZyBzdHJpbmdXaXRoSlNT
dHJpbmdSZWY6XSk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVl
Lm1tOgorICAgICAgICAoYWN0aXZhdGVGb250SU9TKToKKyAgICAgICAgKGR1bXBSZW5kZXJUcmVl
KToKKyAgICAgICAgKGludmFsaWRhdGVBbnlQcmV2aW91c1dhaXRUb0R1bXBXYXRjaGRvZyk6Cisg
ICAgICAgIChzZXRXYWl0VG9EdW1wV2F0Y2hkb2cpOgorICAgICAgICAoZHVtcCk6CisgICAgICAg
IChydW5UZXN0KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWVN
YWMuaDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvRXZlbnRTZW5kaW5nQ29udHJvbGxl
ci5tbToKKyAgICAgICAgKC1bRXZlbnRTZW5kaW5nQ29udHJvbGxlciBtb3VzZVNjcm9sbEJ5WDph
bmRZOmNvbnRpbnVvdXNseTpdKToKKyAgICAgICAgKC1bRXZlbnRTZW5kaW5nQ29udHJvbGxlciBt
b3VzZVNjcm9sbEJ5WDphbmRZOndpdGhXaGVlbDphbmRNb21lbnR1bVBoYXNlczpdKToKKyAgICAg
ICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvUGl4ZWxEdW1wU3VwcG9ydE1hYy5tbToKKyAgICAgICAg
KHRha2VXaW5kb3dTbmFwc2hvdCk6CisgICAgICAgIChjcmVhdGVCaXRtYXBDb250ZXh0RnJvbVdl
YlZpZXcpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9SZXNvdXJjZUxvYWREZWxlZ2F0
ZS5tbToKKyAgICAgICAgKC1bUmVzb3VyY2VMb2FkRGVsZWdhdGUgd2ViVmlldzpyZXNvdXJjZTp3
aWxsU2VuZFJlcXVlc3Q6cmVkaXJlY3RSZXNwb25zZTpmcm9tRGF0YVNvdXJjZTpdKToKKyAgICAg
ICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvVGVzdFJ1bm5lck1hYy5tbToKKyAgICAgICAgKFRlc3RS
dW5uZXI6OmFkZERpc2FsbG93ZWRVUkwpOgorICAgICAgICAoVGVzdFJ1bm5lcjo6c2V0V2FpdFRv
RHVtcCk6CisgICAgICAgICogRm9udFdpdGhGZWF0dXJlcy9Gb250V2l0aEZlYXR1cmVzL21haW4u
Y3BwOgorICAgICAgICAoY29uc3RydWN0Rm9udFdpdGhUcnVlVHlwZUZlYXR1cmUpOgorICAgICAg
ICAoY29uc3RydWN0Rm9udFdpdGhPcGVuVHlwZUZlYXR1cmUpOgorICAgICAgICAoZHJhd1RleHQp
OgorICAgICAgICAobWFpbik6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3BwOgorICAgICAgICAoV1RSOjpJbmplY3RlZEJ1bmRs
ZVBhZ2U6OmR1bXBET01Bc1dlYkFyY2hpdmUpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvaW9zL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRJT1MubW06CisgICAgICAg
ICgrW05TU3RyaW5nIHN0cmluZ1dpdGhKU1N0cmluZ1JlZjpdKToKKyAgICAgICAgKiBXZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5Q29tbW9uTWFjLm1tOgor
ICAgICAgICAoK1tOU1N0cmluZyBzdHJpbmdXaXRoSlNTdHJpbmdSZWY6XSk6CisgICAgICAgICog
V2ViS2l0VGVzdFJ1bm5lci9pb3MvSElERXZlbnRHZW5lcmF0b3IubW06CisgICAgICAgICgtW0hJ
REV2ZW50R2VuZXJhdG9yIF9jcmVhdGVJT0hJREV2ZW50V2l0aEluZm86XSk6CisgICAgICAgICog
V2ViS2l0VGVzdFJ1bm5lci9tYWMvRXZlbnRTZW5kZXJQcm94eS5tbToKKyAgICAgICAgKC1bRXZl
bnRTZW5kZXJTeW50aGV0aWNFdmVudCBpbml0UHJlc3N1cmVFdmVudEF0TG9jYXRpb246Z2xvYmFs
TG9jYXRpb246c3RhZ2U6cHJlc3N1cmU6c3RhZ2VUcmFuc2l0aW9uOnBoYXNlOnRpbWU6ZXZlbnRO
dW1iZXI6d2luZG93Ol0pOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvbWFjL1VJU2NyaXB0
Q29udHJvbGxlck1hYy5tbToKKyAgICAgICAgKFdUUjo6Y2ZTdHJpbmcpOgorICAgICAgICAoV1RS
OjpVSVNjcmlwdENvbnRyb2xsZXJNYWM6OnJlcGxhY2VUZXh0QXRSYW5nZSk6CisKIDIwMjEtMDMt
MDQgIE1hdHQgTGV3aXMgIDxqbGV3aXMzQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgQXBwbGUg
U2lsaWNvbiBEZXZpY2VzIHRvIEJpZyBTdXIgYnVpbGRlcnMgYW5kIHRlc3RlcnMuCmRpZmYgLS1n
aXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0TmV0c2NhcGVQbHVnSW4vUGx1Z2luT2JqZWN0
TWFjLm1tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdE5ldHNjYXBlUGx1Z0luL1BsdWdpbk9i
amVjdE1hYy5tbQppbmRleCA1OWY2NTdmZDNlNGM1OTkzMDNjN2Y0MDQwNDEyMmNiNDRiNzljZjE0
Li4yZjI2ZDg0Y2Y2ZjQ4N2I0Yjk2N2UzYjhmZjI0MTYwMmY3YmUwY2M0IDEwMDY0NAotLS0gYS9U
b29scy9EdW1wUmVuZGVyVHJlZS9UZXN0TmV0c2NhcGVQbHVnSW4vUGx1Z2luT2JqZWN0TWFjLm1t
CisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3ROZXRzY2FwZVBsdWdJbi9QbHVnaW5PYmpl
Y3RNYWMubW0KQEAgLTY0LDIzICs2NCwxNSBAQCBDRlR5cGVSZWYgY3JlYXRlQ29yZUFuaW1hdGlv
bkxheWVyKCkKICAgICAvLyBUdXJuIG9mZiBkZWZhdWx0IGFuaW1hdGlvbnMuCiAgICAgW2NhTGF5
ZXIgc2V0U3R5bGU6QHsgQCJhY3Rpb25zIjogYWN0aW9ucyB9XTsKICAgICBbY2FMYXllciBzZXRO
ZWVkc0Rpc3BsYXlPbkJvdW5kc0NoYW5nZTpZRVNdOwotCiAgICAgW2NhTGF5ZXIgc2V0Qm91bmRz
OkNHUmVjdE1ha2UoMCwgMCwgMjAwLCAxMDApXTsKICAgICBbY2FMYXllciBzZXRBbmNob3JQb2lu
dDpDR1BvaW50WmVyb107Ci0gICAgCi0gICAgQ0dDb2xvclJlZiBjb2xvciA9IENHQ29sb3JDcmVh
dGVHZW5lcmljUkdCKDAuNSwgMC41LCAxLCAxKTsKLSAgICBbY2FMYXllciBzZXRCYWNrZ3JvdW5k
Q29sb3I6Y29sb3JdOwotICAgIENHQ29sb3JSZWxlYXNlKGNvbG9yKTsKLSAgICAKKyAgICBbY2FM
YXllciBzZXRCYWNrZ3JvdW5kQ29sb3I6YWRvcHRDRihDR0NvbG9yQ3JlYXRlR2VuZXJpY1JHQigw
LjUsIDAuNSwgMSwgMSkpLmdldCgpXTsKICAgICBbY2FMYXllciBzZXRMYXlvdXRNYW5hZ2VyOltD
QUNvbnN0cmFpbnRMYXlvdXRNYW5hZ2VyIGxheW91dE1hbmFnZXJdXTsKIAogICAgIENBTGF5ZXIg
KnN1YmxheWVyID0gW0NBTGF5ZXIgbGF5ZXJdOwogICAgIC8vIFR1cm4gb2ZmIGRlZmF1bHQgYW5p
bWF0aW9ucy4KICAgICBbc3VibGF5ZXIgc2V0U3R5bGU6QHsgQCJhY3Rpb25zIjogYWN0aW9ucyB9
XTsKLQotICAgIGNvbG9yID0gQ0dDb2xvckNyZWF0ZUdlbmVyaWNSR0IoMCwgMCwgMCwgMC43NSk7
Ci0gICAgW3N1YmxheWVyIHNldEJhY2tncm91bmRDb2xvcjpjb2xvcl07Ci0gICAgQ0dDb2xvclJl
bGVhc2UoY29sb3IpOworICAgIFtzdWJsYXllciBzZXRCYWNrZ3JvdW5kQ29sb3I6YWRvcHRDRihD
R0NvbG9yQ3JlYXRlR2VuZXJpY1JHQigwLCAwLCAwLCAwLjc1KSkuZ2V0KCldOwogICAgIFtzdWJs
YXllciBzZXRCb3VuZHM6Q0dSZWN0TWFrZSgwLCAwLCAxODAsIDIwKV07CiAKICAgICBbc3VibGF5
ZXIgYWRkQ29uc3RyYWludDpbQ0FDb25zdHJhaW50IGNvbnN0cmFpbnRXaXRoQXR0cmlidXRlOmtD
QUNvbnN0cmFpbnRNaW5ZCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvQWNj
ZXNzaWJpbGl0eUNvbW1vbk1hYy5tbSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9BY2Nlc3Np
YmlsaXR5Q29tbW9uTWFjLm1tCmluZGV4IDAzMDY3ZTJkMDg5MjE0ZmJlODQ2NjdiMjgyNGY4Y2Uz
MTQ4MGY5ODcuLjU4OGM4YjE5YmY0MDRjMjIxMTAzOTljYzRhOGMyOTBmYjA2ZGIyN2IgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9BY2Nlc3NpYmlsaXR5Q29tbW9uTWFjLm1t
CisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9BY2Nlc3NpYmlsaXR5Q29tbW9uTWFjLm1t
CkBAIC00MSw3ICs0MSw3IEBAICsgKE5TU3RyaW5nICopc3RyaW5nV2l0aEpTU3RyaW5nUmVmOihK
U1N0cmluZ1JlZilqc1N0cmluZ1JlZgogICAgIGlmICghanNTdHJpbmdSZWYpCiAgICAgICAgIHJl
dHVybiBuaWw7CiAKLSAgICByZXR1cm4gQ0ZCcmlkZ2luZ1JlbGVhc2UoSlNTdHJpbmdDb3B5Q0ZT
dHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwganNTdHJpbmdSZWYpKTsKKyAgICByZXR1cm4gYWRv
cHRDRihKU1N0cmluZ0NvcHlDRlN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBqc1N0cmluZ1Jl
ZikpLmJyaWRnaW5nQXV0b3JlbGVhc2UoKTsKIH0KIAogLSAoSlNSZXRhaW5QdHI8SlNTdHJpbmdS
ZWY+KWNyZWF0ZUpTU3RyaW5nUmVmCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9t
YWMvRHVtcFJlbmRlclRyZWUubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRl
clRyZWUubW0KaW5kZXggMTRiZDFlODBkNmVmMDkzMjg4OTkzOGNiZDQ1YmE0MzFhN2ZkNTYwNy4u
NzM1MTAzOTZhNTgwYzllYmJiYzY0YTdmZTFiZWMyOTgyYzlmN2NjZSAxMDA2NDQKLS0tIGEvVG9v
bHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tCisrKyBiL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQpAQCAtMjA4LDggKzIwOCw4IEBAIFdlYkZy
YW1lICp0b3BMb2FkaW5nRnJhbWUgPSBuaWw7IC8vICFuaWwgaWZmIGEgbG9hZCBpcyBpbiBwcm9n
cmVzcwogUmV0YWluUHRyPE5TV2luZG93PiBtYWluV2luZG93OwogI2VuZGlmCiAKLUNGTXV0YWJs
ZVNldFJlZiBkaXNhbGxvd2VkVVJMcz0gbnVsbHB0cjsKLXN0YXRpYyBDRlJ1bkxvb3BUaW1lclJl
ZiB3YWl0VG9EdW1wV2F0Y2hkb2c7CitSZXRhaW5QdHI8Q0ZNdXRhYmxlU2V0UmVmPiBkaXNhbGxv
d2VkVVJMcyA9IG51bGxwdHI7CitzdGF0aWMgUmV0YWluUHRyPENGUnVuTG9vcFRpbWVyUmVmPiB3
YWl0VG9EdW1wV2F0Y2hkb2c7CiAKIHN0YXRpYyBSZXRhaW5QdHI8V2ViVmlldz4mIGdsb2JhbFdl
YlZpZXcoKQogewpAQCAtNTUwLDI2ICs1NTAsMjQgQEAgc3RhdGljIHZvaWQgYWRqdXN0Rm9udHMo
KQogCiBzdGF0aWMgdm9pZCBhY3RpdmF0ZUZvbnRJT1MoY29uc3QgdWludDhfdCogZm9udERhdGEs
IHVuc2lnbmVkIGxvbmcgbGVuZ3RoLCBzdGQ6OnN0cmluZyBzZWN0aW9uTmFtZSkKIHsKLSAgICBD
R0RhdGFQcm92aWRlclJlZiBkYXRhID0gQ0dEYXRhUHJvdmlkZXJDcmVhdGVXaXRoRGF0YShudWxs
cHRyLCBmb250RGF0YSwgbGVuZ3RoLCBudWxscHRyKTsKKyAgICBhdXRvIGRhdGEgPSBhZG9wdENG
KENHRGF0YVByb3ZpZGVyQ3JlYXRlV2l0aERhdGEobnVsbHB0ciwgZm9udERhdGEsIGxlbmd0aCwg
bnVsbHB0cikpOwogICAgIGlmICghZGF0YSkgewogICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkZh
aWxlZCB0byBjcmVhdGUgQ0dEYXRhUHJvdmlkZXJSZWYgZm9yIHRoZSAlcyBmb250LlxuIiwgc2Vj
dGlvbk5hbWUuY19zdHIoKSk7CiAgICAgICAgIGV4aXQoMSk7CiAgICAgfQogCi0gICAgQ0dGb250
UmVmIGNnRm9udCA9IENHRm9udENyZWF0ZVdpdGhEYXRhUHJvdmlkZXIoZGF0YSk7Ci0gICAgQ0dE
YXRhUHJvdmlkZXJSZWxlYXNlKGRhdGEpOworICAgIGF1dG8gY2dGb250ID0gYWRvcHRDRihDR0Zv
bnRDcmVhdGVXaXRoRGF0YVByb3ZpZGVyKGRhdGEuZ2V0KCkpKTsKICAgICBpZiAoIWNnRm9udCkg
ewogICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkZhaWxlZCB0byBjcmVhdGUgQ0dGb250UmVmIGZv
ciB0aGUgJXMgZm9udC5cbiIsIHNlY3Rpb25OYW1lLmNfc3RyKCkpOwogICAgICAgICBleGl0KDEp
OwogICAgIH0KIAogICAgIENGRXJyb3JSZWYgZXJyb3IgPSBudWxscHRyOwotICAgIENURm9udE1h
bmFnZXJSZWdpc3RlckdyYXBoaWNzRm9udChjZ0ZvbnQsICZlcnJvcik7CisgICAgQ1RGb250TWFu
YWdlclJlZ2lzdGVyR3JhcGhpY3NGb250KGNnRm9udC5nZXQoKSwgJmVycm9yKTsKICAgICBpZiAo
ZXJyb3IpIHsKICAgICAgICAgZnByaW50ZihzdGRlcnIsICJGYWlsZWQgdG8gYWRkIENHRm9udCB0
byBDb3JlVGV4dCBmb3IgdGhlICVzIGZvbnQ6ICVzLlxuIiwgc2VjdGlvbk5hbWUuY19zdHIoKSwg
Q0ZTdHJpbmdHZXRDU3RyaW5nUHRyKENGRXJyb3JDb3B5RGVzY3JpcHRpb24oZXJyb3IpLCBrQ0ZT
dHJpbmdFbmNvZGluZ1VURjgpKTsKICAgICAgICAgZXhpdCgxKTsKICAgICB9Ci0gICAgQ0dGb250
UmVsZWFzZShjZ0ZvbnQpOwogfQogCiBzdGF0aWMgdm9pZCBhY3RpdmF0ZUZvbnRzSU9TKCkKQEAg
LTEyNjUsMTAgKzEyNjMsNyBAQCB2b2lkIGR1bXBSZW5kZXJUcmVlKGludCBhcmdjLCBjb25zdCBj
aGFyICphcmd2W10pCiAjZW5kaWYKIAogICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSBtb3Zl
ZCBvbnRvIFRlc3RSdW5uZXIgYW5kIG1hZGUgaW50byBhIEhhc2hTZXQKLSAgICBpZiAoZGlzYWxs
b3dlZFVSTHMpIHsKLSAgICAgICAgQ0ZSZWxlYXNlKGRpc2FsbG93ZWRVUkxzKTsKLSAgICAgICAg
ZGlzYWxsb3dlZFVSTHMgPSAwOwotICAgIH0KKyAgICBkaXNhbGxvd2VkVVJMcyA9IG51bGxwdHI7
CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIHRlYXJEb3duSU9TTGF5b3V0VGVzdENv
bW11bmljYXRpb24oKTsKQEAgLTE2MTUsMTggKzE2MTAsMTcgQEAgc3RhdGljIHZvaWQgZHVtcEJh
Y2tGb3J3YXJkTGlzdEZvckFsbFdpbmRvd3MoKQogc3RhdGljIHZvaWQgaW52YWxpZGF0ZUFueVBy
ZXZpb3VzV2FpdFRvRHVtcFdhdGNoZG9nKCkKIHsKICAgICBpZiAod2FpdFRvRHVtcFdhdGNoZG9n
KSB7Ci0gICAgICAgIENGUnVuTG9vcFRpbWVySW52YWxpZGF0ZSh3YWl0VG9EdW1wV2F0Y2hkb2cp
OwotICAgICAgICBDRlJlbGVhc2Uod2FpdFRvRHVtcFdhdGNoZG9nKTsKLSAgICAgICAgd2FpdFRv
RHVtcFdhdGNoZG9nID0gTlVMTDsKKyAgICAgICAgQ0ZSdW5Mb29wVGltZXJJbnZhbGlkYXRlKHdh
aXRUb0R1bXBXYXRjaGRvZy5nZXQoKSk7CisgICAgICAgIHdhaXRUb0R1bXBXYXRjaGRvZyA9IG51
bGxwdHI7CiAgICAgfQogfQogCi12b2lkIHNldFdhaXRUb0R1bXBXYXRjaGRvZyhDRlJ1bkxvb3BU
aW1lclJlZiB0aW1lcikKK3ZvaWQgc2V0V2FpdFRvRHVtcFdhdGNoZG9nKFJldGFpblB0cjxDRlJ1
bkxvb3BUaW1lclJlZj4mJiB0aW1lcikKIHsKICAgICBBU1NFUlQodGltZXIpOwogICAgIEFTU0VS
VChzaG91bGRTZXRXYWl0VG9EdW1wV2F0Y2hkb2coKSk7Ci0gICAgd2FpdFRvRHVtcFdhdGNoZG9n
ID0gdGltZXI7Ci0gICAgQ0ZSdW5Mb29wQWRkVGltZXIoQ0ZSdW5Mb29wR2V0Q3VycmVudCgpLCB3
YWl0VG9EdW1wV2F0Y2hkb2csIGtDRlJ1bkxvb3BDb21tb25Nb2Rlcyk7CisgICAgd2FpdFRvRHVt
cFdhdGNoZG9nID0gV1RGTW92ZSh0aW1lcik7CisgICAgQ0ZSdW5Mb29wQWRkVGltZXIoQ0ZSdW5M
b29wR2V0Q3VycmVudCgpLCB3YWl0VG9EdW1wV2F0Y2hkb2cuZ2V0KCksIGtDRlJ1bkxvb3BDb21t
b25Nb2Rlcyk7CiB9CiAKIGJvb2wgc2hvdWxkU2V0V2FpdFRvRHVtcFdhdGNoZG9nKCkKQEAgLTE2
ODMsMTEgKzE2NzcsMTEgQEAgdm9pZCBkdW1wKCkKICAgICAgICAgICAgIHJlc3VsdE1pbWVUeXBl
ID0gQCJhcHBsaWNhdGlvbi9wZGYiOwogICAgICAgICB9IGVsc2UgaWYgKGdUZXN0UnVubmVyLT5k
dW1wRE9NQXNXZWJBcmNoaXZlKCkpIHsKICAgICAgICAgICAgIFdlYkFyY2hpdmUgKndlYkFyY2hp
dmUgPSBbW21haW5GcmFtZSBET01Eb2N1bWVudF0gd2ViQXJjaGl2ZV07Ci0gICAgICAgICAgICBy
ZXN1bHRTdHJpbmcgPSBDRkJyaWRnaW5nUmVsZWFzZShXZWJDb3JlVGVzdFN1cHBvcnQ6OmNyZWF0
ZVhNTFN0cmluZ0Zyb21XZWJBcmNoaXZlRGF0YSgoX19icmlkZ2UgQ0ZEYXRhUmVmKVt3ZWJBcmNo
aXZlIGRhdGFdKSk7CisgICAgICAgICAgICByZXN1bHRTdHJpbmcgPSBXZWJDb3JlVGVzdFN1cHBv
cnQ6OmNyZWF0ZVhNTFN0cmluZ0Zyb21XZWJBcmNoaXZlRGF0YSgoX19icmlkZ2UgQ0ZEYXRhUmVm
KVt3ZWJBcmNoaXZlIGRhdGFdKTsKICAgICAgICAgICAgIHJlc3VsdE1pbWVUeXBlID0gQCJhcHBs
aWNhdGlvbi94LXdlYmFyY2hpdmUiOwogICAgICAgICB9IGVsc2UgaWYgKGdUZXN0UnVubmVyLT5k
dW1wU291cmNlQXNXZWJBcmNoaXZlKCkpIHsKICAgICAgICAgICAgIFdlYkFyY2hpdmUgKndlYkFy
Y2hpdmUgPSBbW21haW5GcmFtZSBkYXRhU291cmNlXSB3ZWJBcmNoaXZlXTsKLSAgICAgICAgICAg
IHJlc3VsdFN0cmluZyA9IENGQnJpZGdpbmdSZWxlYXNlKFdlYkNvcmVUZXN0U3VwcG9ydDo6Y3Jl
YXRlWE1MU3RyaW5nRnJvbVdlYkFyY2hpdmVEYXRhKChfX2JyaWRnZSBDRkRhdGFSZWYpW3dlYkFy
Y2hpdmUgZGF0YV0pKTsKKyAgICAgICAgICAgIHJlc3VsdFN0cmluZyA9IFdlYkNvcmVUZXN0U3Vw
cG9ydDo6Y3JlYXRlWE1MU3RyaW5nRnJvbVdlYkFyY2hpdmVEYXRhKChfX2JyaWRnZSBDRkRhdGFS
ZWYpW3dlYkFyY2hpdmUgZGF0YV0pOwogICAgICAgICAgICAgcmVzdWx0TWltZVR5cGUgPSBAImFw
cGxpY2F0aW9uL3gtd2ViYXJjaGl2ZSI7CiAgICAgICAgIH0gZWxzZSBpZiAoZ1Rlc3RSdW5uZXIt
PmlzUHJpbnRpbmcoKSkKICAgICAgICAgICAgIHJlc3VsdFN0cmluZyA9IFttYWluRnJhbWUgcmVu
ZGVyVHJlZUFzRXh0ZXJuYWxSZXByZXNlbnRhdGlvbkZvclByaW50aW5nXTsKQEAgLTE5ODIsNyAr
MTk3Niw3IEBAIHN0YXRpYyB2b2lkIHJ1blRlc3QoY29uc3Qgc3RkOjpzdHJpbmcmIGlucHV0TGlu
ZSkKICAgICBnVGVzdFJ1bm5lci0+Y2xlYXJBbGxEYXRhYmFzZXMoKTsKIAogICAgIGlmIChkaXNh
bGxvd2VkVVJMcykKLSAgICAgICAgQ0ZTZXRSZW1vdmVBbGxWYWx1ZXMoZGlzYWxsb3dlZFVSTHMp
OworICAgICAgICBDRlNldFJlbW92ZUFsbFZhbHVlcyhkaXNhbGxvd2VkVVJMcy5nZXQoKSk7CiAg
ICAgaWYgKHNob3VsZExvZ0ZyYW1lTG9hZERlbGVnYXRlcyhwYXRoT3JVUkwuY19zdHIoKSkpCiAg
ICAgICAgIGdUZXN0UnVubmVyLT5zZXREdW1wRnJhbWVMb2FkQ2FsbGJhY2tzKHRydWUpOwogCmRp
ZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWVNYWMuaCBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZU1hYy5oCmluZGV4IDNkNDFi
NWI3NGJiNzI4YTUxMmRlOTY3ZDk5NThmMDY4ODJkODU2M2MuLjRkOWQxZDJkNzA3MzdlMGExOWQz
YzQ0OTNlNzlmYzQ4NTNkMTZiOWMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21h
Yy9EdW1wUmVuZGVyVHJlZU1hYy5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1w
UmVuZGVyVHJlZU1hYy5oCkBAIC00NCwxMCArNDQsMTAgQEAgT0JKQ19DTEFTUyBXZWJTY3JpcHRX
b3JsZDsKIE9CSkNfQ0xBU1MgV2ViVmlldzsKIAogZXh0ZXJuIENGTXV0YWJsZUFycmF5UmVmIG9w
ZW5XaW5kb3dzUmVmOwotZXh0ZXJuIENGTXV0YWJsZVNldFJlZiBkaXNhbGxvd2VkVVJMczsKIGV4
dGVybiBXZWJGcmFtZSogbWFpbkZyYW1lOwogZXh0ZXJuIFdlYkZyYW1lKiB0b3BMb2FkaW5nRnJh
bWU7CiAjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiBSZXRhaW5QdHI8Q0ZNdXRhYmxlU2V0UmVm
PiBkaXNhbGxvd2VkVVJMczsKIGV4dGVybiBSZXRhaW5QdHI8RHVtcFJlbmRlclRyZWVEcmFnZ2lu
Z0luZm8+IGRyYWdnaW5nSW5mbzsKIGV4dGVybiBSZXRhaW5QdHI8TmF2aWdhdGlvbkNvbnRyb2xs
ZXI+IGdOYXZpZ2F0aW9uQ29udHJvbGxlcjsKIGV4dGVybiBSZXRhaW5QdHI8UG9saWN5RGVsZWdh
dGU+IHBvbGljeURlbGVnYXRlOwpAQCAtNjAsOSArNjAsMTAgQEAgZXh0ZXJuIFJldGFpblB0cjxV
SVdpbmRvdz4gbWFpbldpbmRvdzsKIE9CSkNfQ0xBU1MgTlNXaW5kb3c7CiBleHRlcm4gUmV0YWlu
UHRyPE5TV2luZG93PiBtYWluV2luZG93OwogI2VuZGlmCi0jZW5kaWYKIAotdm9pZCBzZXRXYWl0
VG9EdW1wV2F0Y2hkb2coQ0ZSdW5Mb29wVGltZXJSZWYpOwordm9pZCBzZXRXYWl0VG9EdW1wV2F0
Y2hkb2coUmV0YWluUHRyPENGUnVuTG9vcFRpbWVyUmVmPiYmKTsKKyNlbmRpZiAvLyBfX2NwbHVz
cGx1cworCiBib29sIHNob3VsZFNldFdhaXRUb0R1bXBXYXRjaGRvZyh2b2lkKTsKIAogI2lmZGVm
IF9fY3BsdXNwbHVzCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRXZlbnRT
ZW5kaW5nQ29udHJvbGxlci5tbSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9FdmVudFNlbmRp
bmdDb250cm9sbGVyLm1tCmluZGV4IDE2YTYwNTFiYjdmYjY0YjlkZjBhYTllMzczMjJiODliMDEx
ZDc1NzAuLmI4Nzk0MmIzYzZjOTI1ZjQzNTVmNWU1MzczYTVmNmRlZWYwZmYwNjEgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9FdmVudFNlbmRpbmdDb250cm9sbGVyLm1tCisr
KyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9FdmVudFNlbmRpbmdDb250cm9sbGVyLm1tCkBA
IC04MDksMTYgKzgwOSwxNSBAQCAtICh2b2lkKW1vdXNlU2Nyb2xsQnlYOihpbnQpeCBhbmRZOihp
bnQpeSBjb250aW51b3VzbHk6KEJPT0wpY29udGludW91c2x5CiB7CiAjaWYgIVBMQVRGT1JNKElP
U19GQU1JTFkpCiAgICAgQ0dTY3JvbGxFdmVudFVuaXQgdW5pdCA9IGNvbnRpbnVvdXNseSA/IGtD
R1Njcm9sbEV2ZW50VW5pdFBpeGVsIDoga0NHU2Nyb2xsRXZlbnRVbml0TGluZTsKLSAgICBDR0V2
ZW50UmVmIGNnU2Nyb2xsRXZlbnQgPSBDR0V2ZW50Q3JlYXRlU2Nyb2xsV2hlZWxFdmVudDIoTlVM
TCwgdW5pdCwgMiwgeSwgeCwgMCk7CisgICAgYXV0byBjZ1Njcm9sbEV2ZW50ID0gYWRvcHRDRihD
R0V2ZW50Q3JlYXRlU2Nyb2xsV2hlZWxFdmVudDIoTlVMTCwgdW5pdCwgMiwgeSwgeCwgMCkpOwog
ICAgIAogICAgIC8vIFNldCB0aGUgQ0dFdmVudCBsb2NhdGlvbiBpbiBmbGlwcGVkIGNvb3JkcyBy
ZWxhdGl2ZSB0byB0aGUgZmlyc3Qgc2NyZWVuLCB3aGljaAogICAgIC8vIGNvbXBlbnNhdGVzIGZv
ciB0aGUgYmVoYXZpb3Igb2YgK1tOU0V2ZW50IGV2ZW50V2l0aENHRXZlbnQ6XSB3aGVuIHRoZSBl
dmVudCBoYXMKICAgICAvLyBubyBhc3NvY2lhdGVkIHdpbmRvdy4gU2VlIDxyZGFyOi8vcHJvYmxl
bS8xNzE4MDU5MT4uCiAgICAgQ0dQb2ludCBsYXN0R2xvYmFsTW91c2VQb3NpdGlvbiA9IENHUG9p
bnRNYWtlKGxhc3RNb3VzZVBvc2l0aW9uLngsIFtbW05TU2NyZWVuIHNjcmVlbnNdIG9iamVjdEF0
SW5kZXg6MF0gZnJhbWVdLnNpemUuaGVpZ2h0IC0gbGFzdE1vdXNlUG9zaXRpb24ueSk7Ci0gICAg
Q0dFdmVudFNldExvY2F0aW9uKGNnU2Nyb2xsRXZlbnQsIGxhc3RHbG9iYWxNb3VzZVBvc2l0aW9u
KTsKKyAgICBDR0V2ZW50U2V0TG9jYXRpb24oY2dTY3JvbGxFdmVudC5nZXQoKSwgbGFzdEdsb2Jh
bE1vdXNlUG9zaXRpb24pOwogCi0gICAgTlNFdmVudCAqc2Nyb2xsRXZlbnQgPSBbTlNFdmVudCBl
dmVudFdpdGhDR0V2ZW50OmNnU2Nyb2xsRXZlbnRdOwotICAgIENGUmVsZWFzZShjZ1Njcm9sbEV2
ZW50KTsKKyAgICBOU0V2ZW50ICpzY3JvbGxFdmVudCA9IFtOU0V2ZW50IGV2ZW50V2l0aENHRXZl
bnQ6Y2dTY3JvbGxFdmVudC5nZXQoKV07CiAKICAgICBOU1ZpZXcgKnN1YlZpZXcgPSBbW21haW5G
cmFtZSB3ZWJWaWV3XSBoaXRUZXN0OltzY3JvbGxFdmVudCBsb2NhdGlvbkluV2luZG93XV07CiAg
ICAgaWYgKHN1YlZpZXcpIHsKQEAgLTg3NSwxOSArODc0LDE4IEBAIC0gKHZvaWQpbW91c2VTY3Jv
bGxCeVg6KGludCl4IGFuZFk6KGludCl5IHdpdGhXaGVlbDooTlNTdHJpbmcqKXBoYXNlTmFtZSBh
bmRNb21lCiAgICAgaWYgKG1vbWVudHVtID09IGtDR01vbWVudHVtU2Nyb2xsUGhhc2VFbmQpCiAg
ICAgICAgIF9zZW50TW9tZW50dW1QaGFzZUVuZCA9IFlFUzsKIAotICAgIENHRXZlbnRSZWYgY2dT
Y3JvbGxFdmVudCA9IENHRXZlbnRDcmVhdGVTY3JvbGxXaGVlbEV2ZW50MihOVUxMLCBrQ0dTY3Jv
bGxFdmVudFVuaXRMaW5lLCAyLCB5LCB4LCAwKTsKKyAgICBhdXRvIGNnU2Nyb2xsRXZlbnQgPSBh
ZG9wdENGKENHRXZlbnRDcmVhdGVTY3JvbGxXaGVlbEV2ZW50MihOVUxMLCBrQ0dTY3JvbGxFdmVu
dFVuaXRMaW5lLCAyLCB5LCB4LCAwKSk7CiAKICAgICAvLyBTZXQgdGhlIENHRXZlbnQgbG9jYXRp
b24gaW4gZmxpcHBlZCBjb29yZHMgcmVsYXRpdmUgdG8gdGhlIGZpcnN0IHNjcmVlbiwgd2hpY2gK
ICAgICAvLyBjb21wZW5zYXRlcyBmb3IgdGhlIGJlaGF2aW9yIG9mICtbTlNFdmVudCBldmVudFdp
dGhDR0V2ZW50Ol0gd2hlbiB0aGUgZXZlbnQgaGFzCiAgICAgLy8gbm8gYXNzb2NpYXRlZCB3aW5k
b3cuIFNlZSA8cmRhcjovL3Byb2JsZW0vMTcxODA1OTE+LgogICAgIENHUG9pbnQgbGFzdEdsb2Jh
bE1vdXNlUG9zaXRpb24gPSBDR1BvaW50TWFrZShsYXN0TW91c2VQb3NpdGlvbi54LCBbW1tOU1Nj
cmVlbiBzY3JlZW5zXSBvYmplY3RBdEluZGV4OjBdIGZyYW1lXS5zaXplLmhlaWdodCAtIGxhc3RN
b3VzZVBvc2l0aW9uLnkpOwotICAgIENHRXZlbnRTZXRMb2NhdGlvbihjZ1Njcm9sbEV2ZW50LCBs
YXN0R2xvYmFsTW91c2VQb3NpdGlvbik7Ci0gICAgQ0dFdmVudFNldEludGVnZXJWYWx1ZUZpZWxk
KGNnU2Nyb2xsRXZlbnQsIGtDR1Njcm9sbFdoZWVsRXZlbnRJc0NvbnRpbnVvdXMsIDEpOwotICAg
IENHRXZlbnRTZXRJbnRlZ2VyVmFsdWVGaWVsZChjZ1Njcm9sbEV2ZW50LCBrQ0dTY3JvbGxXaGVl
bEV2ZW50U2Nyb2xsUGhhc2UsIHBoYXNlKTsKLSAgICBDR0V2ZW50U2V0SW50ZWdlclZhbHVlRmll
bGQoY2dTY3JvbGxFdmVudCwga0NHU2Nyb2xsV2hlZWxFdmVudE1vbWVudHVtUGhhc2UsIG1vbWVu
dHVtKTsKKyAgICBDR0V2ZW50U2V0TG9jYXRpb24oY2dTY3JvbGxFdmVudC5nZXQoKSwgbGFzdEds
b2JhbE1vdXNlUG9zaXRpb24pOworICAgIENHRXZlbnRTZXRJbnRlZ2VyVmFsdWVGaWVsZChjZ1Nj
cm9sbEV2ZW50LmdldCgpLCBrQ0dTY3JvbGxXaGVlbEV2ZW50SXNDb250aW51b3VzLCAxKTsKKyAg
ICBDR0V2ZW50U2V0SW50ZWdlclZhbHVlRmllbGQoY2dTY3JvbGxFdmVudC5nZXQoKSwga0NHU2Ny
b2xsV2hlZWxFdmVudFNjcm9sbFBoYXNlLCBwaGFzZSk7CisgICAgQ0dFdmVudFNldEludGVnZXJW
YWx1ZUZpZWxkKGNnU2Nyb2xsRXZlbnQuZ2V0KCksIGtDR1Njcm9sbFdoZWVsRXZlbnRNb21lbnR1
bVBoYXNlLCBtb21lbnR1bSk7CiAgICAgCi0gICAgTlNFdmVudCogc2Nyb2xsRXZlbnQgPSBbTlNF
dmVudCBldmVudFdpdGhDR0V2ZW50OmNnU2Nyb2xsRXZlbnRdOwotICAgIENGUmVsZWFzZShjZ1Nj
cm9sbEV2ZW50KTsKKyAgICBOU0V2ZW50KiBzY3JvbGxFdmVudCA9IFtOU0V2ZW50IGV2ZW50V2l0
aENHRXZlbnQ6Y2dTY3JvbGxFdmVudC5nZXQoKV07CiAKICAgICBpZiAoTlNWaWV3KiB0YXJnZXRW
aWV3ID0gW1ttYWluRnJhbWUgd2ViVmlld10gaGl0VGVzdDpbc2Nyb2xsRXZlbnQgbG9jYXRpb25J
bldpbmRvd11dKSB7CiAgICAgICAgIFtOU0FwcCBfc2V0Q3VycmVudEV2ZW50OnNjcm9sbEV2ZW50
XTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9QaXhlbER1bXBTdXBwb3J0
TWFjLm1tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1BpeGVsRHVtcFN1cHBvcnRNYWMubW0K
aW5kZXggYWMzMjgxYTRkZjNlMDIzNTY3MTg4MDdmMGFkNzgyYmYxZDc0NGJiNy4uNGEyNmFhNTMx
NjUwNjJjMGI4MDJiODBjMzU1OWE2ZmFkZTEwZDRlZiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJl
bmRlclRyZWUvbWFjL1BpeGVsRHVtcFN1cHBvcnRNYWMubW0KKysrIGIvVG9vbHMvRHVtcFJlbmRl
clRyZWUvbWFjL1BpeGVsRHVtcFN1cHBvcnRNYWMubW0KQEAgLTc5LDEwICs3OSwxMCBAQCBzdGF0
aWMgdm9pZCBwYWludFJlcGFpbnRSZWN0T3ZlcmxheShXZWJWaWV3KiB3ZWJWaWV3LCBDR0NvbnRl
eHRSZWYgY29udGV4dCkKICAgICBDR0NvbnRleHRSZXN0b3JlR1N0YXRlKGNvbnRleHQpOwogfQog
Ci1zdGF0aWMgQ0dJbWFnZVJlZiB0YWtlV2luZG93U25hcHNob3QoQ0dTV2luZG93SUQgd2luZG93
SUQsIENHV2luZG93SW1hZ2VPcHRpb24gaW1hZ2VPcHRpb25zKSBDRl9SRVRVUk5TX1JFVEFJTkVE
CitzdGF0aWMgUmV0YWluUHRyPENHSW1hZ2VSZWY+IHRha2VXaW5kb3dTbmFwc2hvdChDR1NXaW5k
b3dJRCB3aW5kb3dJRCwgQ0dXaW5kb3dJbWFnZU9wdGlvbiBpbWFnZU9wdGlvbnMpCiB7CiAgICAg
aW1hZ2VPcHRpb25zIHw9IGtDR1dpbmRvd0ltYWdlQm91bmRzSWdub3JlRnJhbWluZyB8IGtDR1dp
bmRvd0ltYWdlU2hvdWxkQmVPcGFxdWU7Ci0gICAgcmV0dXJuIENHV2luZG93TGlzdENyZWF0ZUlt
YWdlKENHUmVjdE51bGwsIGtDR1dpbmRvd0xpc3RPcHRpb25JbmNsdWRpbmdXaW5kb3csIHdpbmRv
d0lELCBpbWFnZU9wdGlvbnMpOworICAgIHJldHVybiBhZG9wdENGKENHV2luZG93TGlzdENyZWF0
ZUltYWdlKENHUmVjdE51bGwsIGtDR1dpbmRvd0xpc3RPcHRpb25JbmNsdWRpbmdXaW5kb3csIHdp
bmRvd0lELCBpbWFnZU9wdGlvbnMpKTsKIH0KIAogUmVmUHRyPEJpdG1hcENvbnRleHQ+IGNyZWF0
ZUJpdG1hcENvbnRleHRGcm9tV2ViVmlldyhib29sIG9uc2NyZWVuLCBib29sIGluY3JlbWVudGFs
UmVwYWludCwgYm9vbCBzd2VlcEhvcml6b250YWxseSwgYm9vbCBkcmF3U2VsZWN0aW9uUmVjdCkK
QEAgLTEzMiwyMiArMTMyLDE5IEBAIFJlZlB0cjxCaXRtYXBDb250ZXh0PiBjcmVhdGVCaXRtYXBD
b250ZXh0RnJvbVdlYlZpZXcoYm9vbCBvbnNjcmVlbiwgYm9vbCBpbmNyZW1lCiAgICAgICAgICAg
ICAvLyBBc2sgdGhlIHdpbmRvdyBzZXJ2ZXIgdG8gcHJvdmlkZSB1cyBhIGNvbXBvc2l0ZWQgdmVy
c2lvbiBvZiB0aGUgKnJlYWwqIHdpbmRvdyBjb250ZW50IGluY2x1ZGluZyBzdXJmYWNlcyAoaS5l
LiBPcGVuR0wgY29udGVudCkKICAgICAgICAgICAgIC8vIE5vdGUgdGhhdCB0aGUgcmV0dXJuZWQg
aW1hZ2UgbWlnaHQgZGlmZmVyIHZlcnkgc2xpZ2h0bHkgZnJvbSB0aGUgd2luZG93IGJhY2tpbmcg
YmVjYXVzZSBvZiBkaXRoZXJpbmcgYXJ0aWZhY3RzIGluIHRoZSB3aW5kb3cgc2VydmVyIGNvbXBv
c2l0b3IuCiAgICAgICAgICAgICBOU1dpbmRvdyAqd2luZG93ID0gW3ZpZXcgd2luZG93XTsKLSAg
ICAgICAgICAgIENHSW1hZ2VSZWYgaW1hZ2UgPSB0YWtlV2luZG93U25hcHNob3QoW3dpbmRvdyB3
aW5kb3dOdW1iZXJdLCBrQ0dXaW5kb3dJbWFnZURlZmF1bHQpOworICAgICAgICAgICAgYXV0byBp
bWFnZSA9IHRha2VXaW5kb3dTbmFwc2hvdChbd2luZG93IHdpbmRvd051bWJlcl0sIGtDR1dpbmRv
d0ltYWdlRGVmYXVsdCk7CiAKICAgICAgICAgICAgIGlmIChpbWFnZSkgewogICAgICAgICAgICAg
ICAgIC8vIFdvcmsgYXJvdW5kIDxyZGFyOi8vcHJvYmxlbS8xNzA4NDk5Mz47IHJlLXJlcXVlc3Qg
dGhlIHNuYXBzaG90IGF0IGtDR1dpbmRvd0ltYWdlTm9taW5hbFJlc29sdXRpb24gaWYgaXQgd2Fz
IGNhcHR1cmVkIGF0IHRoZSB3cm9uZyBzY2FsZS4KICAgICAgICAgICAgICAgICBDR0Zsb2F0IGRl
c2lyZWRTbmFwc2hvdFdpZHRoID0gd2luZG93LmZyYW1lLnNpemUud2lkdGggKiBkZXZpY2VTY2Fs
ZUZhY3RvcjsKLSAgICAgICAgICAgICAgICBpZiAoQ0dJbWFnZUdldFdpZHRoKGltYWdlKSAhPSBk
ZXNpcmVkU25hcHNob3RXaWR0aCkgewotICAgICAgICAgICAgICAgICAgICBDR0ltYWdlUmVsZWFz
ZShpbWFnZSk7CisgICAgICAgICAgICAgICAgaWYgKENHSW1hZ2VHZXRXaWR0aChpbWFnZS5nZXQo
KSkgIT0gZGVzaXJlZFNuYXBzaG90V2lkdGgpCiAgICAgICAgICAgICAgICAgICAgIGltYWdlID0g
dGFrZVdpbmRvd1NuYXBzaG90KFt3aW5kb3cgd2luZG93TnVtYmVyXSwga0NHV2luZG93SW1hZ2VO
b21pbmFsUmVzb2x1dGlvbik7Ci0gICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogCiAg
ICAgICAgICAgICBpZiAoIWltYWdlKQogICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwog
Ci0gICAgICAgICAgICBDR0NvbnRleHREcmF3SW1hZ2UoY29udGV4dCwgQ0dSZWN0TWFrZSgwLCAw
LCBDR0ltYWdlR2V0V2lkdGgoaW1hZ2UpLCBDR0ltYWdlR2V0SGVpZ2h0KGltYWdlKSksIGltYWdl
KTsKLSAgICAgICAgICAgIENHSW1hZ2VSZWxlYXNlKGltYWdlKTsKKyAgICAgICAgICAgIENHQ29u
dGV4dERyYXdJbWFnZShjb250ZXh0LCBDR1JlY3RNYWtlKDAsIDAsIENHSW1hZ2VHZXRXaWR0aChp
bWFnZS5nZXQoKSksIENHSW1hZ2VHZXRIZWlnaHQoaW1hZ2UuZ2V0KCkpKSwgaW1hZ2UuZ2V0KCkp
OwogCiAgICAgICAgICAgICBpZiAoW3ZpZXcgaXNUcmFja2luZ1JlcGFpbnRzXSkKICAgICAgICAg
ICAgICAgICBwYWludFJlcGFpbnRSZWN0T3ZlcmxheSh2aWV3LCBjb250ZXh0KTsKZGlmZiAtLWdp
dCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9SZXNvdXJjZUxvYWREZWxlZ2F0ZS5tbSBiL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL21hYy9SZXNvdXJjZUxvYWREZWxlZ2F0ZS5tbQppbmRleCA1Mzlk
MTZhOGEwY2ZiYmFmYTBlMzQwMWY2NDgzOWUwMjliYWYzMjkwLi4wYTgzMmE5ZGQ2MDU5YjY2NWRm
Nzg5NTU5MzgzMjQ2ODhhOTM5MjgzIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9t
YWMvUmVzb3VyY2VMb2FkRGVsZWdhdGUubW0KKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFj
L1Jlc291cmNlTG9hZERlbGVnYXRlLm1tCkBAIC0xNzIsNyArMTcyLDcgQEAgLShOU1VSTFJlcXVl
c3QgKil3ZWJWaWV3OiAoV2ViVmlldyAqKXd2IHJlc291cmNlOmlkZW50aWZpZXIgd2lsbFNlbmRS
ZXF1ZXN0OiAoTlMKICAgICAgICAgfQogICAgIH0KIAotICAgIGlmIChkaXNhbGxvd2VkVVJMcyAm
JiBDRlNldENvbnRhaW5zVmFsdWUoZGlzYWxsb3dlZFVSTHMsIChfX2JyaWRnZSBDRlVSTFJlZil1
cmwpKQorICAgIGlmIChkaXNhbGxvd2VkVVJMcyAmJiBDRlNldENvbnRhaW5zVmFsdWUoZGlzYWxs
b3dlZFVSTHMuZ2V0KCksIChfX2JyaWRnZSBDRlVSTFJlZil1cmwpKQogICAgICAgICByZXR1cm4g
bmlsOwogCiAgICAgYXV0byBuZXdSZXF1ZXN0ID0gYWRvcHROUyhbcmVxdWVzdCBtdXRhYmxlQ29w
eV0pOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1Rlc3RSdW5uZXJNYWMu
bW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVGVzdFJ1bm5lck1hYy5tbQppbmRleCAyNGNl
MjJmN2ZkYTc2ZDU1Zjg2ZTZhNWQ0YTFmYmJiYThlYzJiNjBmLi4wOWRjMmM0NTU4NWYwMDdmMDU2
MTY1MWQxNzBlYzQzNGU1ZGZlZWY3IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9t
YWMvVGVzdFJ1bm5lck1hYy5tbQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVGVzdFJ1
bm5lck1hYy5tbQpAQCAtMTM3LDEzICsxMzcsMTMgQEAgdm9pZCBUZXN0UnVubmVyOjphZGREaXNh
bGxvd2VkVVJMKEpTU3RyaW5nUmVmIHVybCkKICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHVy
bENGID0gYWRvcHRDRihKU1N0cmluZ0NvcHlDRlN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCB1
cmwpKTsKIAogICAgIGlmICghZGlzYWxsb3dlZFVSTHMpCi0gICAgICAgIGRpc2FsbG93ZWRVUkxz
ID0gQ0ZTZXRDcmVhdGVNdXRhYmxlKGtDRkFsbG9jYXRvckRlZmF1bHQsIDAsIE5VTEwpOworICAg
ICAgICBkaXNhbGxvd2VkVVJMcyA9IGFkb3B0Q0YoQ0ZTZXRDcmVhdGVNdXRhYmxlKGtDRkFsbG9j
YXRvckRlZmF1bHQsIDAsIE5VTEwpKTsKIAogICAgIC8vIENhbm9uaWNhbGl6ZSB0aGUgVVJMCiAg
ICAgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0ID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpb
TlNVUkwgVVJMV2l0aFN0cmluZzooX19icmlkZ2UgTlNTdHJpbmcgKil1cmxDRi5nZXQoKV1dOwog
ICAgIHJlcXVlc3QgPSBbTlNVUkxQcm90b2NvbCBjYW5vbmljYWxSZXF1ZXN0Rm9yUmVxdWVzdDpy
ZXF1ZXN0XTsKIAotICAgIENGU2V0QWRkVmFsdWUoZGlzYWxsb3dlZFVSTHMsIChfX2JyaWRnZSBD
RlVSTFJlZilbcmVxdWVzdCBVUkxdKTsKKyAgICBDRlNldEFkZFZhbHVlKGRpc2FsbG93ZWRVUkxz
LmdldCgpLCAoX19icmlkZ2UgQ0ZVUkxSZWYpW3JlcXVlc3QgVVJMXSk7CiB9CiAKIGJvb2wgVGVz
dFJ1bm5lcjo6Y2FsbFNob3VsZENsb3NlT25XZWJWaWV3KCkKQEAgLTU3Nyw3ICs1NzcsNyBAQCB2
b2lkIFRlc3RSdW5uZXI6OnNldFdhaXRUb0R1bXAoYm9vbCB3YWl0VW50aWxEb25lKQogewogICAg
IG1fd2FpdFRvRHVtcCA9IHdhaXRVbnRpbERvbmU7CiAgICAgaWYgKG1fd2FpdFRvRHVtcCAmJiBt
X3RpbWVvdXQgJiYgc2hvdWxkU2V0V2FpdFRvRHVtcFdhdGNoZG9nKCkpCi0gICAgICAgIHNldFdh
aXRUb0R1bXBXYXRjaGRvZyhDRlJ1bkxvb3BUaW1lckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0
LCBDRkFic29sdXRlVGltZUdldEN1cnJlbnQoKSArIG1fdGltZW91dCAvIDEwMDAuMCwgMCwgMCwg
MCwgd2FpdFVudGlsRG9uZVdhdGNoZG9nRmlyZWQsIE5VTEwpKTsKKyAgICAgICAgc2V0V2FpdFRv
RHVtcFdhdGNoZG9nKGFkb3B0Q0YoQ0ZSdW5Mb29wVGltZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVm
YXVsdCwgQ0ZBYnNvbHV0ZVRpbWVHZXRDdXJyZW50KCkgKyBtX3RpbWVvdXQgLyAxMDAwLjAsIDAs
IDAsIDAsIHdhaXRVbnRpbERvbmVXYXRjaGRvZ0ZpcmVkLCBOVUxMKSkpOwogfQogCiBpbnQgVGVz
dFJ1bm5lcjo6d2luZG93Q291bnQoKQpkaWZmIC0tZ2l0IGEvVG9vbHMvRm9udFdpdGhGZWF0dXJl
cy9Gb250V2l0aEZlYXR1cmVzL21haW4uY3BwIGIvVG9vbHMvRm9udFdpdGhGZWF0dXJlcy9Gb250
V2l0aEZlYXR1cmVzL21haW4uY3BwCmluZGV4IGM0ZWNkNzY1ODRiOGU3YTdiMTdmN2RjNGI0MjAx
MDU0YmE1ZmIxYWQuLjBkOGM4OTVjNjhlYjAwZGI3ZTBlNWFmZDVlMzhhMTVjY2EyZWZlYTggMTAw
NjQ0Ci0tLSBhL1Rvb2xzL0ZvbnRXaXRoRmVhdHVyZXMvRm9udFdpdGhGZWF0dXJlcy9tYWluLmNw
cAorKysgYi9Ub29scy9Gb250V2l0aEZlYXR1cmVzL0ZvbnRXaXRoRmVhdHVyZXMvbWFpbi5jcHAK
QEAgLTMyLDUwICszMiwzOSBAQAogI2luY2x1ZGUgPEltYWdlSU8vSW1hZ2VJTy5oPgogI2luY2x1
ZGUgPGZzdHJlYW0+CiAKLXN0YXRpYyBDVEZvbnREZXNjcmlwdG9yUmVmIGNvbnN0cnVjdEZvbnRX
aXRoVHJ1ZVR5cGVGZWF0dXJlKENURm9udERlc2NyaXB0b3JSZWYgZm9udERlc2NyaXB0b3IsIGlu
dCB0eXBlLCBpbnQgc2VsZWN0b3IpCitzdGF0aWMgUmV0YWluUHRyPENURm9udERlc2NyaXB0b3JS
ZWY+IGNvbnN0cnVjdEZvbnRXaXRoVHJ1ZVR5cGVGZWF0dXJlKENURm9udERlc2NyaXB0b3JSZWYg
Zm9udERlc2NyaXB0b3IsIGludCB0eXBlLCBpbnQgc2VsZWN0b3IpCiB7Ci0gICAgQ0ZOdW1iZXJS
ZWYgdHlwZVZhbHVlID0gQ0ZOdW1iZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwga0NGTnVt
YmVySW50VHlwZSwgJnR5cGUpOwotICAgIENGTnVtYmVyUmVmIHNlbGVjdG9yVmFsdWUgPSBDRk51
bWJlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrQ0ZOdW1iZXJJbnRUeXBlLCAmc2VsZWN0
b3IpOworICAgIGF1dG8gdHlwZVZhbHVlID0gYWRvcHRDRihDRk51bWJlckNyZWF0ZShrQ0ZBbGxv
Y2F0b3JEZWZhdWx0LCBrQ0ZOdW1iZXJJbnRUeXBlLCAmdHlwZSkpOworICAgIGF1dG8gc2VsZWN0
b3JWYWx1ZSA9IGFkb3B0Q0YoQ0ZOdW1iZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwga0NG
TnVtYmVySW50VHlwZSwgJnNlbGVjdG9yKSk7CiAgICAgQ0ZUeXBlUmVmIGZlYXR1cmVEaWN0aW9u
YXJ5S2V5c1tdID0geyBrQ1RGb250RmVhdHVyZVR5cGVJZGVudGlmaWVyS2V5LCBrQ1RGb250RmVh
dHVyZVNlbGVjdG9ySWRlbnRpZmllcktleSB9OwotICAgIENGVHlwZVJlZiBmZWF0dXJlRGljdGlv
bmFyeVZhbHVlc1tdID0geyB0eXBlVmFsdWUsIHNlbGVjdG9yVmFsdWUgfTsKLSAgICBDRkRpY3Rp
b25hcnlSZWYgZmVhdHVyZURpY3Rpb25hcnkgPSBDRkRpY3Rpb25hcnlDcmVhdGUoa0NGQWxsb2Nh
dG9yRGVmYXVsdCwgZmVhdHVyZURpY3Rpb25hcnlLZXlzLCBmZWF0dXJlRGljdGlvbmFyeVZhbHVl
cywgMiwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlW
YWx1ZUNhbGxCYWNrcyk7Ci0gICAgQ0ZSZWxlYXNlKHR5cGVWYWx1ZSk7Ci0gICAgQ0ZSZWxlYXNl
KHNlbGVjdG9yVmFsdWUpOworICAgIENGVHlwZVJlZiBmZWF0dXJlRGljdGlvbmFyeVZhbHVlc1td
ID0geyB0eXBlVmFsdWUuZ2V0KCksIHNlbGVjdG9yVmFsdWUuZ2V0KCkgfTsKKyAgICBhdXRvIGZl
YXR1cmVEaWN0aW9uYXJ5ID0gYWRvcHRDRihDRkRpY3Rpb25hcnlDcmVhdGUoa0NGQWxsb2NhdG9y
RGVmYXVsdCwgZmVhdHVyZURpY3Rpb25hcnlLZXlzLCBmZWF0dXJlRGljdGlvbmFyeVZhbHVlcywg
MiwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1
ZUNhbGxCYWNrcykpOwogCi0gICAgQ0ZUeXBlUmVmIGZlYXR1cmVTZXR0aW5nc1ZhbHVlc1tdID0g
eyBmZWF0dXJlRGljdGlvbmFyeSB9OwotICAgIENGQXJyYXlSZWYgZm9udEZlYXR1cmVTZXR0aW5n
cyA9IENGQXJyYXlDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgZmVhdHVyZVNldHRpbmdzVmFs
dWVzLCAxLCAma0NGVHlwZUFycmF5Q2FsbEJhY2tzKTsKLSAgICBDRlJlbGVhc2UoZmVhdHVyZURp
Y3Rpb25hcnkpOworICAgIENGVHlwZVJlZiBmZWF0dXJlU2V0dGluZ3NWYWx1ZXNbXSA9IHsgZmVh
dHVyZURpY3Rpb25hcnkuZ2V0KCkgfTsKKyAgICBhdXRvIGZvbnRGZWF0dXJlU2V0dGluZ3MgPSBh
ZG9wdENGKENGQXJyYXlDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgZmVhdHVyZVNldHRpbmdz
VmFsdWVzLCAxLCAma0NGVHlwZUFycmF5Q2FsbEJhY2tzKSk7CiAKICAgICBDRlR5cGVSZWYgZm9u
dERlc2NyaXB0b3JLZXlzW10gPSB7IGtDVEZvbnRGZWF0dXJlU2V0dGluZ3NBdHRyaWJ1dGUgfTsK
LSAgICBDRlR5cGVSZWYgZm9udERlc2NyaXB0b3JWYWx1ZXNbXSA9IHsgZm9udEZlYXR1cmVTZXR0
aW5ncyB9OwotICAgIENGRGljdGlvbmFyeVJlZiBmb250RGVzY3JpcHRvckF0dHJpYnV0ZXMgPSBD
RkRpY3Rpb25hcnlDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgZm9udERlc2NyaXB0b3JLZXlz
LCBmb250RGVzY3JpcHRvclZhbHVlcywgMSwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tz
LCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcyk7Ci0gICAgQ0ZSZWxlYXNlKGZvbnRG
ZWF0dXJlU2V0dGluZ3MpOworICAgIENGVHlwZVJlZiBmb250RGVzY3JpcHRvclZhbHVlc1tdID0g
eyBmb250RmVhdHVyZVNldHRpbmdzLmdldCgpIH07CisgICAgYXV0byBmb250RGVzY3JpcHRvckF0
dHJpYnV0ZXMgPSBhZG9wdENGKENGRGljdGlvbmFyeUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0
LCBmb250RGVzY3JpcHRvcktleXMsIGZvbnREZXNjcmlwdG9yVmFsdWVzLCAxLCAma0NGVHlwZURp
Y3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7
CiAKLSAgICBDVEZvbnREZXNjcmlwdG9yUmVmIG1vZGlmaWVkRm9udERlc2NyaXB0b3IgPSBDVEZv
bnREZXNjcmlwdG9yQ3JlYXRlQ29weVdpdGhBdHRyaWJ1dGVzKGZvbnREZXNjcmlwdG9yLCBmb250
RGVzY3JpcHRvckF0dHJpYnV0ZXMpOwotICAgIENGUmVsZWFzZShmb250RGVzY3JpcHRvckF0dHJp
YnV0ZXMpOwotICAgIHJldHVybiBtb2RpZmllZEZvbnREZXNjcmlwdG9yOworICAgIHJldHVybiBh
ZG9wdENGKENURm9udERlc2NyaXB0b3JDcmVhdGVDb3B5V2l0aEF0dHJpYnV0ZXMoZm9udERlc2Ny
aXB0b3IsIGZvbnREZXNjcmlwdG9yQXR0cmlidXRlcy5nZXQoKSkpOwogfQogCi1zdGF0aWMgQ1RG
b250RGVzY3JpcHRvclJlZiBjb25zdHJ1Y3RGb250V2l0aE9wZW5UeXBlRmVhdHVyZShDVEZvbnRE
ZXNjcmlwdG9yUmVmIGZvbnREZXNjcmlwdG9yLCBDRlN0cmluZ1JlZiBmZWF0dXJlLCBpbnQgdmFs
dWUpCitzdGF0aWMgUmV0YWluUHRyPENURm9udERlc2NyaXB0b3JSZWY+IGNvbnN0cnVjdEZvbnRX
aXRoT3BlblR5cGVGZWF0dXJlKENURm9udERlc2NyaXB0b3JSZWYgZm9udERlc2NyaXB0b3IsIENG
U3RyaW5nUmVmIGZlYXR1cmUsIGludCB2YWx1ZSkKIHsKLSAgICBDRk51bWJlclJlZiBmZWF0dXJl
VmFsdWUgPSBDRk51bWJlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrQ0ZOdW1iZXJJbnRU
eXBlLCAmdmFsdWUpOworICAgIGF1dG8gZmVhdHVyZVZhbHVlID0gYWRvcHRDRihDRk51bWJlckNy
ZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrQ0ZOdW1iZXJJbnRUeXBlLCAmdmFsdWUpKTsKICAg
ICBDRlR5cGVSZWYgZmVhdHVyZURpY3Rpb25hcnlLZXlzW10gPSB7IGtDVEZvbnRPcGVuVHlwZUZl
YXR1cmVUYWcsIGtDVEZvbnRPcGVuVHlwZUZlYXR1cmVWYWx1ZSB9OwotICAgIENGVHlwZVJlZiBm
ZWF0dXJlRGljdGlvbmFyeVZhbHVlc1tdID0geyBmZWF0dXJlLCBmZWF0dXJlVmFsdWUgfTsKLSAg
ICBDRkRpY3Rpb25hcnlSZWYgZmVhdHVyZURpY3Rpb25hcnkgPSBDRkRpY3Rpb25hcnlDcmVhdGUo
a0NGQWxsb2NhdG9yRGVmYXVsdCwgZmVhdHVyZURpY3Rpb25hcnlLZXlzLCBmZWF0dXJlRGljdGlv
bmFyeVZhbHVlcywgMiwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURp
Y3Rpb25hcnlWYWx1ZUNhbGxCYWNrcyk7Ci0gICAgQ0ZSZWxlYXNlKGZlYXR1cmVWYWx1ZSk7Cisg
ICAgQ0ZUeXBlUmVmIGZlYXR1cmVEaWN0aW9uYXJ5VmFsdWVzW10gPSB7IGZlYXR1cmUsIGZlYXR1
cmVWYWx1ZS5nZXQoKSB9OworICAgIGF1dG8gZmVhdHVyZURpY3Rpb25hcnkgPSBhZG9wdENGKENG
RGljdGlvbmFyeUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBmZWF0dXJlRGljdGlvbmFyeUtl
eXMsIGZlYXR1cmVEaWN0aW9uYXJ5VmFsdWVzLCAyLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxs
QmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7CiAKLSAgICBDRlR5cGVS
ZWYgZmVhdHVyZVNldHRpbmdzVmFsdWVzW10gPSB7IGZlYXR1cmVEaWN0aW9uYXJ5IH07Ci0gICAg
Q0ZBcnJheVJlZiBmb250RmVhdHVyZVNldHRpbmdzID0gQ0ZBcnJheUNyZWF0ZShrQ0ZBbGxvY2F0
b3JEZWZhdWx0LCBmZWF0dXJlU2V0dGluZ3NWYWx1ZXMsIDEsICZrQ0ZUeXBlQXJyYXlDYWxsQmFj
a3MpOwotICAgIENGUmVsZWFzZShmZWF0dXJlRGljdGlvbmFyeSk7CisgICAgQ0ZUeXBlUmVmIGZl
YXR1cmVTZXR0aW5nc1ZhbHVlc1tdID0geyBmZWF0dXJlRGljdGlvbmFyeS5nZXQoKSB9OworICAg
IGF1dG8gZm9udEZlYXR1cmVTZXR0aW5ncyA9IGFkb3B0Q0YoQ0ZBcnJheUNyZWF0ZShrQ0ZBbGxv
Y2F0b3JEZWZhdWx0LCBmZWF0dXJlU2V0dGluZ3NWYWx1ZXMsIDEsICZrQ0ZUeXBlQXJyYXlDYWxs
QmFja3MpKTsKIAogICAgIENGVHlwZVJlZiBmb250RGVzY3JpcHRvcktleXNbXSA9IHsga0NURm9u
dEZlYXR1cmVTZXR0aW5nc0F0dHJpYnV0ZSB9OwotICAgIENGVHlwZVJlZiBmb250RGVzY3JpcHRv
clZhbHVlc1tdID0geyBmb250RmVhdHVyZVNldHRpbmdzIH07Ci0gICAgQ0ZEaWN0aW9uYXJ5UmVm
IGZvbnREZXNjcmlwdG9yQXR0cmlidXRlcyA9IENGRGljdGlvbmFyeUNyZWF0ZShrQ0ZBbGxvY2F0
b3JEZWZhdWx0LCBmb250RGVzY3JpcHRvcktleXMsIGZvbnREZXNjcmlwdG9yVmFsdWVzLCAxLCAm
a0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2Fs
bEJhY2tzKTsKLSAgICBDRlJlbGVhc2UoZm9udEZlYXR1cmVTZXR0aW5ncyk7CisgICAgQ0ZUeXBl
UmVmIGZvbnREZXNjcmlwdG9yVmFsdWVzW10gPSB7IGZvbnRGZWF0dXJlU2V0dGluZ3MuZ2V0KCkg
fTsKKyAgICBhdXRvIGZvbnREZXNjcmlwdG9yQXR0cmlidXRlcyA9IGFkb3B0Q0YoQ0ZEaWN0aW9u
YXJ5Q3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGZvbnREZXNjcmlwdG9yS2V5cywgZm9udERl
c2NyaXB0b3JWYWx1ZXMsIDEsICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5
cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpKTsKIAotICAgIENURm9udERlc2NyaXB0b3JSZWYg
bW9kaWZpZWRGb250RGVzY3JpcHRvciA9IENURm9udERlc2NyaXB0b3JDcmVhdGVDb3B5V2l0aEF0
dHJpYnV0ZXMoZm9udERlc2NyaXB0b3IsIGZvbnREZXNjcmlwdG9yQXR0cmlidXRlcyk7Ci0gICAg
Q0ZSZWxlYXNlKGZvbnREZXNjcmlwdG9yQXR0cmlidXRlcyk7Ci0gICAgcmV0dXJuIG1vZGlmaWVk
Rm9udERlc2NyaXB0b3I7CisgICAgcmV0dXJuIGFkb3B0Q0YoQ1RGb250RGVzY3JpcHRvckNyZWF0
ZUNvcHlXaXRoQXR0cmlidXRlcyhmb250RGVzY3JpcHRvciwgZm9udERlc2NyaXB0b3JBdHRyaWJ1
dGVzLmdldCgpKSk7CiB9CiAKIHN0YXRpYyB2b2lkIGRyYXdUZXh0KENHQ29udGV4dFJlZiBjb250
ZXh0LCBDVEZvbnREZXNjcmlwdG9yUmVmIGZvbnREZXNjcmlwdG9yLCBDRlN0cmluZ1JlZiBwcmVm
aXgsIENHUG9pbnQgbG9jYXRpb24pCkBAIC04NCwzNyArNzMsMjkgQEAgc3RhdGljIHZvaWQgZHJh
d1RleHQoQ0dDb250ZXh0UmVmIGNvbnRleHQsIENURm9udERlc2NyaXB0b3JSZWYgZm9udERlc2Ny
aXB0b3IsIEMKICAgICBDR0NvbnRleHRTZXRUZXh0UG9zaXRpb24oY29udGV4dCwgbG9jYXRpb24u
eCwgbG9jYXRpb24ueSk7CiAKICAgICBDR0Zsb2F0IGZvbnRTaXplID0gMjU7Ci0gICAgQ1RGb250
UmVmIGZvbnQgPSBDVEZvbnRDcmVhdGVXaXRoRm9udERlc2NyaXB0b3IoZm9udERlc2NyaXB0b3Is
IGZvbnRTaXplLCBudWxscHRyKTsKKyAgICBhdXRvIGZvbnQgPSBhZG9wdENGKENURm9udENyZWF0
ZVdpdGhGb250RGVzY3JpcHRvcihmb250RGVzY3JpcHRvciwgZm9udFNpemUsIG51bGxwdHIpKTsK
IAotICAgIENGTXV0YWJsZVN0cmluZ1JlZiBzdHJpbmcgPSBDRlN0cmluZ0NyZWF0ZU11dGFibGUo
a0NGQWxsb2NhdG9yRGVmYXVsdCwgMCk7Ci0gICAgQ0ZTdHJpbmdBcHBlbmQoc3RyaW5nLCBwcmVm
aXgpOwotICAgIENGU3RyaW5nQXBwZW5kKHN0cmluZywgQ0ZTVFIoIkFCQ0RFRkdISUpLTE1OT1BR
UlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXoiKSk7CisgICAgYXV0byBzdHJpbmcg
PSBhZG9wdENGKENGU3RyaW5nQ3JlYXRlTXV0YWJsZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAwKSk7
CisgICAgQ0ZTdHJpbmdBcHBlbmQoc3RyaW5nLmdldCgpLCBwcmVmaXgpOworICAgIENGU3RyaW5n
QXBwZW5kKHN0cmluZy5nZXQoKSwgQ0ZTVFIoIkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJj
ZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXoiKSk7CiAKLSAgICBDR0NvbG9yUmVmIHJlZCA9IENHQ29s
b3JDcmVhdGVHZW5lcmljUkdCKDEsIDAsIDAsIDEpOworICAgIGF1dG8gcmVkID0gYWRvcHRDRihD
R0NvbG9yQ3JlYXRlR2VuZXJpY1JHQigxLCAwLCAwLCAxKSk7CiAgICAgQ0ZUeXBlUmVmIGxpbmVL
ZXlzW10gPSB7IGtDVEZvcmVncm91bmRDb2xvckF0dHJpYnV0ZU5hbWUgfTsKLSAgICBDRlR5cGVS
ZWYgbGluZVZhbHVlc1tdID0geyByZWQgfTsKLSAgICBDRkRpY3Rpb25hcnlSZWYgbGluZUF0dHJp
YnV0ZXMgPSBDRkRpY3Rpb25hcnlDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgbGluZUtleXMs
IGxpbmVWYWx1ZXMsIDEsICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVE
aWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpOwotICAgIENHQ29sb3JSZWxlYXNlKHJlZCk7CisgICAg
Q0ZUeXBlUmVmIGxpbmVWYWx1ZXNbXSA9IHsgcmVkLmdldCgpIH07CisgICAgYXV0byBsaW5lQXR0
cmlidXRlcyA9IGFkb3B0Q0YoQ0ZEaWN0aW9uYXJ5Q3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQs
IGxpbmVLZXlzLCBsaW5lVmFsdWVzLCAxLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3Ms
ICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7CiAKLSAgICBDRkF0dHJpYnV0ZWRT
dHJpbmdSZWYgYXR0cmlidXRlZFN0cmluZyA9IENGQXR0cmlidXRlZFN0cmluZ0NyZWF0ZShrQ0ZB
bGxvY2F0b3JEZWZhdWx0LCBzdHJpbmcsIGxpbmVBdHRyaWJ1dGVzKTsKLSAgICBDRlJlbGVhc2Uo
bGluZUF0dHJpYnV0ZXMpOworICAgIGF1dG8gYXR0cmlidXRlZFN0cmluZyA9IGFkb3B0Q0YoQ0ZB
dHRyaWJ1dGVkU3RyaW5nQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIHN0cmluZy5nZXQoKSwg
bGluZUF0dHJpYnV0ZXMuZ2V0KCkpKTsKIAotICAgIENGTXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmdS
ZWYgbXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcgPSBDRkF0dHJpYnV0ZWRTdHJpbmdDcmVhdGVNdXRh
YmxlQ29weShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAwLCBhdHRyaWJ1dGVkU3RyaW5nKTsKLSAgICBD
RlJlbGVhc2UoYXR0cmlidXRlZFN0cmluZyk7CisgICAgYXV0byBtdXRhYmxlQXR0cmlidXRlZFN0
cmluZyA9IGFkb3B0Q0YoQ0ZBdHRyaWJ1dGVkU3RyaW5nQ3JlYXRlTXV0YWJsZUNvcHkoa0NGQWxs
b2NhdG9yRGVmYXVsdCwgMCwgYXR0cmlidXRlZFN0cmluZy5nZXQoKSkpOwogCi0gICAgQ1RGb250
UmVmIG1vbm9zcGFjZUZvbnQgPSBDVEZvbnRDcmVhdGVXaXRoTmFtZShDRlNUUigiQ291cmllciIp
LCBmb250U2l6ZSwgbnVsbHB0cik7Ci0gICAgQ0ZBdHRyaWJ1dGVkU3RyaW5nU2V0QXR0cmlidXRl
KG11dGFibGVBdHRyaWJ1dGVkU3RyaW5nLCBDRlJhbmdlTWFrZSgwLCBDRlN0cmluZ0dldExlbmd0
aChwcmVmaXgpKSwga0NURm9udEF0dHJpYnV0ZU5hbWUsIG1vbm9zcGFjZUZvbnQpOwotICAgIENG
UmVsZWFzZShtb25vc3BhY2VGb250KTsKKyAgICBhdXRvIG1vbm9zcGFjZUZvbnQgPSBhZG9wdENG
KENURm9udENyZWF0ZVdpdGhOYW1lKENGU1RSKCJDb3VyaWVyIiksIGZvbnRTaXplLCBudWxscHRy
KSk7CisgICAgQ0ZBdHRyaWJ1dGVkU3RyaW5nU2V0QXR0cmlidXRlKG11dGFibGVBdHRyaWJ1dGVk
U3RyaW5nLmdldCgpLCBDRlJhbmdlTWFrZSgwLCBDRlN0cmluZ0dldExlbmd0aChwcmVmaXgpKSwg
a0NURm9udEF0dHJpYnV0ZU5hbWUsIG1vbm9zcGFjZUZvbnQuZ2V0KCkpOwogCi0gICAgQ0ZBdHRy
aWJ1dGVkU3RyaW5nU2V0QXR0cmlidXRlKG11dGFibGVBdHRyaWJ1dGVkU3RyaW5nLCBDRlJhbmdl
TWFrZShDRlN0cmluZ0dldExlbmd0aChwcmVmaXgpLCBDRlN0cmluZ0dldExlbmd0aChzdHJpbmcp
IC0gQ0ZTdHJpbmdHZXRMZW5ndGgocHJlZml4KSksIGtDVEZvbnRBdHRyaWJ1dGVOYW1lLCBmb250
KTsKLSAgICBDRlJlbGVhc2Uoc3RyaW5nKTsKLSAgICBDRlJlbGVhc2UoZm9udCk7CisgICAgQ0ZB
dHRyaWJ1dGVkU3RyaW5nU2V0QXR0cmlidXRlKG11dGFibGVBdHRyaWJ1dGVkU3RyaW5nLmdldCgp
LCBDRlJhbmdlTWFrZShDRlN0cmluZ0dldExlbmd0aChwcmVmaXgpLCBDRlN0cmluZ0dldExlbmd0
aChzdHJpbmcuZ2V0KCkpIC0gQ0ZTdHJpbmdHZXRMZW5ndGgocHJlZml4KSksIGtDVEZvbnRBdHRy
aWJ1dGVOYW1lLCBmb250LmdldCgpKTsKIAotICAgIENUTGluZVJlZiBsaW5lID0gQ1RMaW5lQ3Jl
YXRlV2l0aEF0dHJpYnV0ZWRTdHJpbmcobXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcpOwotICAgIENG
UmVsZWFzZShtdXRhYmxlQXR0cmlidXRlZFN0cmluZyk7CisgICAgYXV0byBsaW5lID0gYWRvcHRD
RihDVExpbmVDcmVhdGVXaXRoQXR0cmlidXRlZFN0cmluZyhtdXRhYmxlQXR0cmlidXRlZFN0cmlu
Zy5nZXQoKSkpOwogCi0gICAgQ1RMaW5lRHJhdyhsaW5lLCBjb250ZXh0KTsKLSAgICBDRlJlbGVh
c2UobGluZSk7CisgICAgQ1RMaW5lRHJhdyhsaW5lLmdldCgpLCBjb250ZXh0KTsKIH0KIAogaW50
IG1haW4oaW50IGFyZ2MsIGNvbnN0IGNoYXIgKiBhcmd2W10pCkBAIC0xMjIsNyArMTAzLDcgQEAg
aW50IG1haW4oaW50IGFyZ2MsIGNvbnN0IGNoYXIgKiBhcmd2W10pCiAgICAgc2l6ZV90IHdpZHRo
ID0gMjUwMDsKICAgICBzaXplX3QgaGVpZ2h0ID0gMjAwMDsKICAgICBDR0NvbG9yU3BhY2VSZWYg
Y29sb3JTcGFjZSA9IENHQ29sb3JTcGFjZUNyZWF0ZURldmljZVJHQigpOwotICAgIENHQ29udGV4
dFJlZiBjb250ZXh0ID0gQ0dCaXRtYXBDb250ZXh0Q3JlYXRlKG51bGxwdHIsIHdpZHRoLCBoZWln
aHQsIDgsIHdpZHRoICogNCwgY29sb3JTcGFjZSwga0NHSW1hZ2VBbHBoYU5vbmVTa2lwTGFzdCk7
CisgICAgYXV0byBjb250ZXh0ID0gYWRvcHRDRihDR0JpdG1hcENvbnRleHRDcmVhdGUobnVsbHB0
ciwgd2lkdGgsIGhlaWdodCwgOCwgd2lkdGggKiA0LCBjb2xvclNwYWNlLCBrQ0dJbWFnZUFscGhh
Tm9uZVNraXBMYXN0KSk7CiAgICAgQ0dDb2xvclNwYWNlUmVsZWFzZShjb2xvclNwYWNlKTsKICAg
ICBUeXBlIHR5cGUgPSBUeXBlOjpUcnVlVHlwZTsKICAgICBjb25zdCBzdGQ6OnZlY3Rvcjx1aW50
OF90PiBmb250VmVjdG9yID0gZ2VuZXJhdGVGb250KHR5cGUpOwpAQCAtMTMxLDQ5ICsxMTIsNDAg
QEAgaW50IG1haW4oaW50IGFyZ2MsIGNvbnN0IGNoYXIgKiBhcmd2W10pCiAgICAgICAgIG91dHB1
dEZpbGUgPDwgYjsKICAgICBvdXRwdXRGaWxlLmNsb3NlKCk7CiAgICAgCi0gICAgQ0ZEYXRhUmVm
IGZvbnREYXRhID0gQ0ZEYXRhQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGZvbnRWZWN0b3Iu
ZGF0YSgpLCBmb250VmVjdG9yLnNpemUoKSk7Ci0gICAgQ1RGb250RGVzY3JpcHRvclJlZiBmb250
RGVzY3JpcHRvciA9IENURm9udE1hbmFnZXJDcmVhdGVGb250RGVzY3JpcHRvckZyb21EYXRhKGZv
bnREYXRhKTsKLSAgICBDRlJlbGVhc2UoZm9udERhdGEpOworICAgIGF1dG8gZm9udERhdGEgPSBh
ZG9wdENGKENGRGF0YUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBmb250VmVjdG9yLmRhdGEo
KSwgZm9udFZlY3Rvci5zaXplKCkpKTsKKyAgICBhdXRvIGZvbnREZXNjcmlwdG9yID0gYWRvcHRD
RihDVEZvbnRNYW5hZ2VyQ3JlYXRlRm9udERlc2NyaXB0b3JGcm9tRGF0YShmb250RGF0YS5nZXQo
KSkpOwogCiAgICAgaWYgKHR5cGUgPT0gVHlwZTo6T3BlblR5cGUpIHsKICAgICAgICAgQ0ZUeXBl
UmVmIGZlYXR1cmVWYWx1ZXNPcGVuVHlwZVtdID0geyBDRlNUUigibGlnYSIpLCBDRlNUUigiY2xp
ZyIpLCBDRlNUUigiZGxpZyIpLCBDRlNUUigiaGxpZyIpLCBDRlNUUigiY2FsdCIpLCBDRlNUUigi
c3VicyIpLCBDRlNUUigic3VwcyIpLCBDRlNUUigic21jcCIpLCBDRlNUUigiYzJzYyIpLCBDRlNU
UigicGNhcCIpLCBDRlNUUigiYzJwYyIpLCBDRlNUUigidW5pYyIpLCBDRlNUUigidGl0bCIpLCBD
RlNUUigib251bSIpLCBDRlNUUigicG51bSIpLCBDRlNUUigidG51bSIpLCBDRlNUUigiZnJhYyIp
LCBDRlNUUigiYWZyYyIpLCBDRlNUUigib3JkbiIpLCBDRlNUUigiemVybyIpLCBDRlNUUigiaGlz
dCIpLCBDRlNUUigianA3OCIpLCBDRlNUUigianA4MyIpLCBDRlNUUigianA5MCIpLCBDRlNUUigi
anAwNCIpLCBDRlNUUigic21wbCIpLCBDRlNUUigidHJhZCIpLCBDRlNUUigiZndpZCIpLCBDRlNU
UigicHdpZCIpLCBDRlNUUigicnVieSIpIH07Ci0gICAgICAgIENGQXJyYXlSZWYgZmVhdHVyZXMg
PSBDRkFycmF5Q3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGZlYXR1cmVWYWx1ZXNPcGVuVHlw
ZSwgMzAsICZrQ0ZUeXBlQXJyYXlDYWxsQmFja3MpOwotCi0gICAgICAgIGZvciAoQ0ZJbmRleCBp
ID0gMDsgaSA8IENGQXJyYXlHZXRDb3VudChmZWF0dXJlcyk7ICsraSkgewotICAgICAgICAgICAg
Q0ZTdHJpbmdSZWYgZmVhdHVyZSA9IHN0YXRpY19jYXN0PENGU3RyaW5nUmVmPihDRkFycmF5R2V0
VmFsdWVBdEluZGV4KGZlYXR1cmVzLCBpKSk7Ci0gICAgICAgICAgICBDVEZvbnREZXNjcmlwdG9y
UmVmIG1vZGlmaWVkRm9udERlc2NyaXB0b3IgPSBjb25zdHJ1Y3RGb250V2l0aE9wZW5UeXBlRmVh
dHVyZShmb250RGVzY3JpcHRvciwgZmVhdHVyZSwgMSk7Ci0gICAgICAgICAgICBDRk11dGFibGVT
dHJpbmdSZWYgcHJlZml4ID0gQ0ZTdHJpbmdDcmVhdGVNdXRhYmxlKGtDRkFsbG9jYXRvckRlZmF1
bHQsIDApOwotICAgICAgICAgICAgQ0ZTdHJpbmdBcHBlbmQocHJlZml4LCBmZWF0dXJlKTsKLSAg
ICAgICAgICAgIENGU3RyaW5nQXBwZW5kKHByZWZpeCwgQ0ZTVFIoIiAgKG9uKTogIikpOwotICAg
ICAgICAgICAgZHJhd1RleHQoY29udGV4dCwgbW9kaWZpZWRGb250RGVzY3JpcHRvciwgcHJlZml4
LCBDR1BvaW50TWFrZSgyNSwgMTk1MCAtIDUwICogaSkpOwotICAgICAgICAgICAgQ0ZSZWxlYXNl
KHByZWZpeCk7Ci0gICAgICAgICAgICBDRlJlbGVhc2UobW9kaWZpZWRGb250RGVzY3JpcHRvcik7
Ci0KLSAgICAgICAgICAgIG1vZGlmaWVkRm9udERlc2NyaXB0b3IgPSBjb25zdHJ1Y3RGb250V2l0
aE9wZW5UeXBlRmVhdHVyZShmb250RGVzY3JpcHRvciwgZmVhdHVyZSwgMCk7Ci0gICAgICAgICAg
ICBwcmVmaXggPSBDRlN0cmluZ0NyZWF0ZU11dGFibGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgMCk7
Ci0gICAgICAgICAgICBDRlN0cmluZ0FwcGVuZChwcmVmaXgsIGZlYXR1cmUpOwotICAgICAgICAg
ICAgQ0ZTdHJpbmdBcHBlbmQocHJlZml4LCBDRlNUUigiIChvZmYpOiAiKSk7Ci0gICAgICAgICAg
ICBkcmF3VGV4dChjb250ZXh0LCBtb2RpZmllZEZvbnREZXNjcmlwdG9yLCBwcmVmaXgsIENHUG9p
bnRNYWtlKDI1LCAxOTI1IC0gNTAgKiBpKSk7Ci0gICAgICAgICAgICBDRlJlbGVhc2UocHJlZml4
KTsKLSAgICAgICAgICAgIENGUmVsZWFzZShtb2RpZmllZEZvbnREZXNjcmlwdG9yKTsKKyAgICAg
ICAgYXV0byBmZWF0dXJlcyA9IGFkb3B0Q0YoQ0ZBcnJheUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZh
dWx0LCBmZWF0dXJlVmFsdWVzT3BlblR5cGUsIDMwLCAma0NGVHlwZUFycmF5Q2FsbEJhY2tzKSk7
CisKKyAgICAgICAgZm9yIChDRkluZGV4IGkgPSAwOyBpIDwgQ0ZBcnJheUdldENvdW50KGZlYXR1
cmVzLmdldCgpKTsgKytpKSB7CisgICAgICAgICAgICBDRlN0cmluZ1JlZiBmZWF0dXJlID0gc3Rh
dGljX2Nhc3Q8Q0ZTdHJpbmdSZWY+KENGQXJyYXlHZXRWYWx1ZUF0SW5kZXgoZmVhdHVyZXMuZ2V0
KCksIGkpKTsKKyAgICAgICAgICAgIGF1dG8gbW9kaWZpZWRGb250RGVzY3JpcHRvciA9IGNvbnN0
cnVjdEZvbnRXaXRoT3BlblR5cGVGZWF0dXJlKGZvbnREZXNjcmlwdG9yLmdldCgpLCBmZWF0dXJl
LCAxKTsKKyAgICAgICAgICAgIGF1dG8gcHJlZml4ID0gYWRvcHRDRihDRlN0cmluZ0NyZWF0ZU11
dGFibGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgMCkpOworICAgICAgICAgICAgQ0ZTdHJpbmdBcHBl
bmQocHJlZml4LmdldCgpLCBmZWF0dXJlKTsKKyAgICAgICAgICAgIENGU3RyaW5nQXBwZW5kKHBy
ZWZpeC5nZXQoKSwgQ0ZTVFIoIiAgKG9uKTogIikpOworICAgICAgICAgICAgZHJhd1RleHQoY29u
dGV4dC5nZXQoKSwgbW9kaWZpZWRGb250RGVzY3JpcHRvci5nZXQoKSwgcHJlZml4LmdldCgpLCBD
R1BvaW50TWFrZSgyNSwgMTk1MCAtIDUwICogaSkpOworCisgICAgICAgICAgICBtb2RpZmllZEZv
bnREZXNjcmlwdG9yID0gY29uc3RydWN0Rm9udFdpdGhPcGVuVHlwZUZlYXR1cmUoZm9udERlc2Ny
aXB0b3IuZ2V0KCksIGZlYXR1cmUsIDApOworICAgICAgICAgICAgcHJlZml4ID0gYWRvcHRDRihD
RlN0cmluZ0NyZWF0ZU11dGFibGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgMCkpOworICAgICAgICAg
ICAgQ0ZTdHJpbmdBcHBlbmQocHJlZml4LmdldCgpLCBmZWF0dXJlKTsKKyAgICAgICAgICAgIENG
U3RyaW5nQXBwZW5kKHByZWZpeC5nZXQoKSwgQ0ZTVFIoIiAob2ZmKTogIikpOworICAgICAgICAg
ICAgZHJhd1RleHQoY29udGV4dC5nZXQoKSwgbW9kaWZpZWRGb250RGVzY3JpcHRvci5nZXQoKSwg
cHJlZml4LmdldCgpLCBDR1BvaW50TWFrZSgyNSwgMTkyNSAtIDUwICogaSkpOwogICAgICAgICB9
Ci0KLSAgICAgICAgQ0ZSZWxlYXNlKGZlYXR1cmVzKTsKICAgICB9IGVsc2UgewogICAgICAgICBf
X2Jsb2NrIGludCBpID0gMDsKICAgICAgICAgdm9pZCAoXmhhbmRsZXIpKHVpbnQxNl90IHR5cGUs
IENGU3RyaW5nUmVmIHR5cGVTdHJpbmcsIHVpbnQxNl90IHNlbGVjdG9yLCBDRlN0cmluZ1JlZiBz
ZWxlY3RvclN0cmluZykgPSBeKHVpbnQxNl90IHR5cGUsIENGU3RyaW5nUmVmIHR5cGVTdHJpbmcs
IHVpbnQxNl90IHNlbGVjdG9yLCBDRlN0cmluZ1JlZiBzZWxlY3RvclN0cmluZykKICAgICAgICAg
ewotICAgICAgICAgICAgQ1RGb250RGVzY3JpcHRvclJlZiBtb2RpZmllZEZvbnREZXNjcmlwdG9y
ID0gY29uc3RydWN0Rm9udFdpdGhUcnVlVHlwZUZlYXR1cmUoZm9udERlc2NyaXB0b3IsIHR5cGUs
IHNlbGVjdG9yKTsKLSAgICAgICAgICAgIENGTXV0YWJsZVN0cmluZ1JlZiBwcmVmaXggPSBDRlN0
cmluZ0NyZWF0ZU11dGFibGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgMCk7Ci0gICAgICAgICAgICBD
RlN0cmluZ0FwcGVuZChwcmVmaXgsIHR5cGVTdHJpbmcpOwotICAgICAgICAgICAgQ0ZTdHJpbmdB
cHBlbmQocHJlZml4LCBDRlNUUigiOiAiKSk7Ci0gICAgICAgICAgICBDRlN0cmluZ0FwcGVuZChw
cmVmaXgsIHNlbGVjdG9yU3RyaW5nKTsKLSAgICAgICAgICAgIENGU3RyaW5nQXBwZW5kKHByZWZp
eCwgQ0ZTVFIoIjogIikpOwotICAgICAgICAgICAgd2hpbGUgKENGU3RyaW5nR2V0TGVuZ3RoKHBy
ZWZpeCkgPCA2NSkKLSAgICAgICAgICAgICAgICBDRlN0cmluZ0FwcGVuZChwcmVmaXgsIENGU1RS
KCIgIikpOwotICAgICAgICAgICAgZHJhd1RleHQoY29udGV4dCwgbW9kaWZpZWRGb250RGVzY3Jp
cHRvciwgcHJlZml4LCBDR1BvaW50TWFrZSgyNSwgMTk1MCAtIDQwICogaSkpOwotICAgICAgICAg
ICAgQ0ZSZWxlYXNlKHByZWZpeCk7Ci0gICAgICAgICAgICBDRlJlbGVhc2UobW9kaWZpZWRGb250
RGVzY3JpcHRvcik7CisgICAgICAgICAgICBhdXRvIG1vZGlmaWVkRm9udERlc2NyaXB0b3IgPSBj
b25zdHJ1Y3RGb250V2l0aFRydWVUeXBlRmVhdHVyZShmb250RGVzY3JpcHRvci5nZXQoKSwgdHlw
ZSwgc2VsZWN0b3IpOworICAgICAgICAgICAgYXV0byBwcmVmaXggPSBhZG9wdENGKENGU3RyaW5n
Q3JlYXRlTXV0YWJsZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAwKSk7CisgICAgICAgICAgICBDRlN0
cmluZ0FwcGVuZChwcmVmaXguZ2V0KCksIHR5cGVTdHJpbmcpOworICAgICAgICAgICAgQ0ZTdHJp
bmdBcHBlbmQocHJlZml4LmdldCgpLCBDRlNUUigiOiAiKSk7CisgICAgICAgICAgICBDRlN0cmlu
Z0FwcGVuZChwcmVmaXguZ2V0KCksIHNlbGVjdG9yU3RyaW5nKTsKKyAgICAgICAgICAgIENGU3Ry
aW5nQXBwZW5kKHByZWZpeC5nZXQoKSwgQ0ZTVFIoIjogIikpOworICAgICAgICAgICAgd2hpbGUg
KENGU3RyaW5nR2V0TGVuZ3RoKHByZWZpeC5nZXQoKSkgPCA2NSkKKyAgICAgICAgICAgICAgICBD
RlN0cmluZ0FwcGVuZChwcmVmaXguZ2V0KCksIENGU1RSKCIgIikpOworICAgICAgICAgICAgZHJh
d1RleHQoY29udGV4dC5nZXQoKSwgbW9kaWZpZWRGb250RGVzY3JpcHRvci5nZXQoKSwgcHJlZml4
LmdldCgpLCBDR1BvaW50TWFrZSgyNSwgMTk1MCAtIDQwICogaSkpOwogICAgICAgICAgICAgKytp
OwogICAgICAgICB9OwogICAgICAgICBoYW5kbGVyKGtMaWdhdHVyZXNUeXBlLCBDRlNUUigia0xp
Z2F0dXJlc1R5cGUiKSwga0NvbW1vbkxpZ2F0dXJlc09uU2VsZWN0b3IsIENGU1RSKCJrQ29tbW9u
TGlnYXR1cmVzT25TZWxlY3RvciIpKTsKQEAgLTIxNCwxNSArMTg2LDEwIEBAIGludCBtYWluKGlu
dCBhcmdjLCBjb25zdCBjaGFyICogYXJndltdKQogICAgICAgICBoYW5kbGVyKGtSdWJ5S2FuYVR5
cGUsIENGU1RSKCJrUnVieUthbmFUeXBlIiksIGtSdWJ5S2FuYU9uU2VsZWN0b3IsIENGU1RSKCJr
UnVieUthbmFPblNlbGVjdG9yIikpOwogICAgIH0KIAotICAgIENGUmVsZWFzZShmb250RGVzY3Jp
cHRvcik7Ci0gICAgQ0dJbWFnZVJlZiBpbWFnZSA9IENHQml0bWFwQ29udGV4dENyZWF0ZUltYWdl
KGNvbnRleHQpOwotICAgIENHQ29udGV4dFJlbGVhc2UoY29udGV4dCk7Ci0gICAgQ0ZVUkxSZWYg
dXJsID0gQ0ZVUkxDcmVhdGVXaXRoRmlsZVN5c3RlbVBhdGgoa0NGQWxsb2NhdG9yRGVmYXVsdCwg
Q0ZTVFIoIi9Wb2x1bWVzL0RhdGEvaG9tZS9tbWF4ZmllbGQvdG1wL291dHB1dC5wbmciKSwga0NG
VVJMUE9TSVhQYXRoU3R5bGUsIEZBTFNFKTsKLSAgICBDR0ltYWdlRGVzdGluYXRpb25SZWYgaW1h
Z2VEZXN0aW5hdGlvbiA9IENHSW1hZ2VEZXN0aW5hdGlvbkNyZWF0ZVdpdGhVUkwodXJsLCBrVVRU
eXBlUE5HLCAxLCBudWxscHRyKTsKLSAgICBDRlJlbGVhc2UodXJsKTsKLSAgICBDR0ltYWdlRGVz
dGluYXRpb25BZGRJbWFnZShpbWFnZURlc3RpbmF0aW9uLCBpbWFnZSwgbnVsbHB0cik7Ci0gICAg
Q0dJbWFnZVJlbGVhc2UoaW1hZ2UpOwotICAgIENHSW1hZ2VEZXN0aW5hdGlvbkZpbmFsaXplKGlt
YWdlRGVzdGluYXRpb24pOwotICAgIENGUmVsZWFzZShpbWFnZURlc3RpbmF0aW9uKTsKKyAgICBh
dXRvIGltYWdlID0gYWRvcHRDRihDR0JpdG1hcENvbnRleHRDcmVhdGVJbWFnZShjb250ZXh0Lmdl
dCgpKSk7CisgICAgYXV0byB1cmwgPSBhZG9wdENGKENGVVJMQ3JlYXRlV2l0aEZpbGVTeXN0ZW1Q
YXRoKGtDRkFsbG9jYXRvckRlZmF1bHQsIENGU1RSKCIvVm9sdW1lcy9EYXRhL2hvbWUvbW1heGZp
ZWxkL3RtcC9vdXRwdXQucG5nIiksIGtDRlVSTFBPU0lYUGF0aFN0eWxlLCBGQUxTRSkpOworICAg
IGF1dG8gaW1hZ2VEZXN0aW5hdGlvbiA9IGFkb3B0Q0YoQ0dJbWFnZURlc3RpbmF0aW9uQ3JlYXRl
V2l0aFVSTCh1cmwuZ2V0KCksIGtVVFR5cGVQTkcsIDEsIG51bGxwdHIpKTsKKyAgICBDR0ltYWdl
RGVzdGluYXRpb25BZGRJbWFnZShpbWFnZURlc3RpbmF0aW9uLmdldCgpLCBpbWFnZS5nZXQoKSwg
bnVsbHB0cik7CisgICAgQ0dJbWFnZURlc3RpbmF0aW9uRmluYWxpemUoaW1hZ2VEZXN0aW5hdGlv
bi5nZXQoKSk7CiAgICAgcmV0dXJuIDA7CiB9CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHAgYi9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHAKaW5kZXgg
M2RiMDIzNDkzNDE1MzllZDQzODcwZTY0NTA2ZDkzMzA3NTQyYzI4OS4uNzQ1YzRjZTgzNWVkY2Mx
YjMyMGU5MDNkMzY3Zjc3NmE3NWU0NTczOCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3BwCisrKyBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcApAQCAt
Nzk2LDcgKzc5Niw3IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlOjpkdW1wRE9NQXNXZWJBcmNo
aXZlKFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUsIFN0cmluZ0J1aWxkCiAjaWYgVVNFKENGKSAmJiAh
UExBVEZPUk0oV0lOX0NBSVJPKSAmJiAhVVNFKERJUkVDVDJEKQogICAgIGF1dG8gd2tEYXRhID0g
YWRvcHRXSyhXS0J1bmRsZUZyYW1lQ29weVdlYkFyY2hpdmUoZnJhbWUpKTsKICAgICBhdXRvIGNm
RGF0YSA9IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlKDAsIFdLRGF0YUdldEJ5dGVzKHdrRGF0YS5nZXQo
KSksIFdLRGF0YUdldFNpemUod2tEYXRhLmdldCgpKSkpOwotICAgIGF1dG8gY2ZTdHJpbmcgPSBh
ZG9wdENGKFdlYkNvcmVUZXN0U3VwcG9ydDo6Y3JlYXRlWE1MU3RyaW5nRnJvbVdlYkFyY2hpdmVE
YXRhKGNmRGF0YS5nZXQoKSkpOworICAgIGF1dG8gY2ZTdHJpbmcgPSBXZWJDb3JlVGVzdFN1cHBv
cnQ6OmNyZWF0ZVhNTFN0cmluZ0Zyb21XZWJBcmNoaXZlRGF0YShjZkRhdGEuZ2V0KCkpOwogICAg
IHN0cmluZ0J1aWxkZXIuYXBwZW5kKGNmU3RyaW5nLmdldCgpKTsKICNlbmRpZgogfQpkaWZmIC0t
Z2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9pb3MvQWNjZXNzaWJp
bGl0eVVJRWxlbWVudElPUy5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvaW9zL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRJT1MubW0KaW5kZXggNDZhMTU3ODBkYzU4ZDM3
ZjlhZGFiZTcwMDkwMWQ5MTBkZTk3ZDFmNC4uZjBmOWIzODdkMDZjNDMwOGFlMTM2MWYxMWRjOTA3
ZDQ4YmRmNzI1MyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9pb3MvQWNjZXNzaWJpbGl0eVVJRWxlbWVudElPUy5tbQorKysgYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2lvcy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50SU9TLm1t
CkBAIC0xMzAsNyArMTMwLDcgQEAgKyAoTlNTdHJpbmcgKilzdHJpbmdXaXRoSlNTdHJpbmdSZWY6
KEpTU3RyaW5nUmVmKWpzU3RyaW5nUmVmCiAgICAgaWYgKCFqc1N0cmluZ1JlZikKICAgICAgICAg
cmV0dXJuIG5pbDsKICAgICAKLSAgICByZXR1cm4gQ0ZCcmlkZ2luZ1JlbGVhc2UoSlNTdHJpbmdD
b3B5Q0ZTdHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwganNTdHJpbmdSZWYpKTsKKyAgICByZXR1
cm4gYWRvcHRDRihKU1N0cmluZ0NvcHlDRlN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBqc1N0
cmluZ1JlZikpLmJyaWRnaW5nQXV0b3JlbGVhc2UoKTsKIH0KIAogLSAoSlNSZXRhaW5QdHI8SlNT
dHJpbmdSZWY+KWNyZWF0ZUpTU3RyaW5nUmVmCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5Q29tbW9uTWFjLm1tIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvQWNjZXNzaWJpbGl0eUNvbW1v
bk1hYy5tbQppbmRleCAzNTRhOGY2NTU1YzZjMDAyNjVmNTY4MWE2YjM3MTUyYTg0YTU2MmMwLi5m
OGUyZGNlMjIxMDI3MmFmNjZkZThjMjcxZmY0NWQzYjdiNTdjNjBmIDEwMDY0NAotLS0gYS9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5Q29tbW9u
TWFjLm1tCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0Fj
Y2Vzc2liaWxpdHlDb21tb25NYWMubW0KQEAgLTQzLDcgKzQzLDcgQEAgKyAoTlNTdHJpbmcgKilz
dHJpbmdXaXRoSlNTdHJpbmdSZWY6KEpTU3RyaW5nUmVmKWpzU3RyaW5nUmVmCiAgICAgaWYgKCFq
c1N0cmluZ1JlZikKICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAgIHJldHVybiBDRkJyaWRnaW5n
UmVsZWFzZShKU1N0cmluZ0NvcHlDRlN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBqc1N0cmlu
Z1JlZikpOworICAgIHJldHVybiBhZG9wdENGKEpTU3RyaW5nQ29weUNGU3RyaW5nKGtDRkFsbG9j
YXRvckRlZmF1bHQsIGpzU3RyaW5nUmVmKSkuYnJpZGdpbmdBdXRvcmVsZWFzZSgpOwogfQogCiAt
IChKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4pY3JlYXRlSlNTdHJpbmdSZWYKZGlmZiAtLWdpdCBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL0hJREV2ZW50R2VuZXJhdG9yLm1tIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9pb3MvSElERXZlbnRHZW5lcmF0b3IubW0KaW5kZXggMzFiNDY1MGUz
NTYxMTljMDI0MDE2NjRjZTAyNzY5NDhkYTAzNWVkOC4uZjY4MmNhMjk4NzViMzY2ZWIxNmI1ZTc5
ZjA2ZGQwZTBhNTFmYmQwNyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3Mv
SElERXZlbnRHZW5lcmF0b3IubW0KKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvSElE
RXZlbnRHZW5lcmF0b3IubW0KQEAgLTMxOSw3ICszMTksNyBAQCAtIChJT0hJREV2ZW50UmVmKV9j
cmVhdGVJT0hJREV2ZW50V2l0aEluZm86KE5TRGljdGlvbmFyeSAqKWluZm8KICAgICAgICAgaWYg
KFt0b3VjaEluZm9bSElERXZlbnRQcmVzc3VyZUtleV0gZmxvYXRWYWx1ZV0pCiAgICAgICAgICAg
ICBjaGlsZEV2ZW50TWFzayB8PSBrSU9ISUREaWdpdGl6ZXJFdmVudEF0dHJpYnV0ZTsKIAotICAg
ICAgICBJT0hJREV2ZW50UmVmIHN1YkV2ZW50ID0gSU9ISURFdmVudENyZWF0ZURpZ2l0aXplckZp
bmdlckV2ZW50KGtDRkFsbG9jYXRvckRlZmF1bHQsIG1hY2hUaW1lLAorICAgICAgICBhdXRvIHN1
YkV2ZW50ID0gYWRvcHRDRihJT0hJREV2ZW50Q3JlYXRlRGlnaXRpemVyRmluZ2VyRXZlbnQoa0NG
QWxsb2NhdG9yRGVmYXVsdCwgbWFjaFRpbWUsCiAgICAgICAgICAgICBbdG91Y2hJbmZvW0hJREV2
ZW50VG91Y2hJREtleV0gaW50VmFsdWVdLCAgICAgICAgICAgICAgIC8vIGluZGV4CiAgICAgICAg
ICAgICAyLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIGlkZW50aWZpZXIgKHdoaWNoIGZpbmdlciB3ZSB0aGluayBpdCBpcykuIEZJWE1FOiB0
aGlzIHNob3VsZCBjb21lIGZyb20gdGhlIGRhdGEuCiAgICAgICAgICAgICBjaGlsZEV2ZW50TWFz
aywKQEAgLTMzMCwxMyArMzMwLDEyIEBAIC0gKElPSElERXZlbnRSZWYpX2NyZWF0ZUlPSElERXZl
bnRXaXRoSW5mbzooTlNEaWN0aW9uYXJ5ICopaW5mbwogICAgICAgICAgICAgW3RvdWNoSW5mb1tI
SURFdmVudFR3aXN0S2V5XSBmbG9hdFZhbHVlXSwKICAgICAgICAgICAgIHRvdWNoLCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmFuZ2UKICAgICAg
ICAgICAgIHRvdWNoLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gdG91Y2gKLSAgICAgICAgICAgIGtJT0hJREV2ZW50T3B0aW9uTm9uZSk7CisgICAg
ICAgICAgICBrSU9ISURFdmVudE9wdGlvbk5vbmUpKTsKIAotICAgICAgICBJT0hJREV2ZW50U2V0
RmxvYXRWYWx1ZShzdWJFdmVudCwga0lPSElERXZlbnRGaWVsZERpZ2l0aXplck1ham9yUmFkaXVz
LCBbdG91Y2hJbmZvW0hJREV2ZW50TWFqb3JSYWRpdXNLZXldIGZsb2F0VmFsdWVdKTsKLSAgICAg
ICAgSU9ISURFdmVudFNldEZsb2F0VmFsdWUoc3ViRXZlbnQsIGtJT0hJREV2ZW50RmllbGREaWdp
dGl6ZXJNaW5vclJhZGl1cywgW3RvdWNoSW5mb1tISURFdmVudE1pbm9yUmFkaXVzS2V5XSBmbG9h
dFZhbHVlXSk7CisgICAgICAgIElPSElERXZlbnRTZXRGbG9hdFZhbHVlKHN1YkV2ZW50LmdldCgp
LCBrSU9ISURFdmVudEZpZWxkRGlnaXRpemVyTWFqb3JSYWRpdXMsIFt0b3VjaEluZm9bSElERXZl
bnRNYWpvclJhZGl1c0tleV0gZmxvYXRWYWx1ZV0pOworICAgICAgICBJT0hJREV2ZW50U2V0Rmxv
YXRWYWx1ZShzdWJFdmVudC5nZXQoKSwga0lPSElERXZlbnRGaWVsZERpZ2l0aXplck1pbm9yUmFk
aXVzLCBbdG91Y2hJbmZvW0hJREV2ZW50TWlub3JSYWRpdXNLZXldIGZsb2F0VmFsdWVdKTsKIAot
ICAgICAgICBJT0hJREV2ZW50QXBwZW5kRXZlbnQoZXZlbnRSZWYsIHN1YkV2ZW50LCAwKTsKLSAg
ICAgICAgQ0ZSZWxlYXNlKHN1YkV2ZW50KTsKKyAgICAgICAgSU9ISURFdmVudEFwcGVuZEV2ZW50
KGV2ZW50UmVmLCBzdWJFdmVudC5nZXQoKSwgMCk7CiAgICAgfQogCiAgICAgcmV0dXJuIGV2ZW50
UmVmOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvRXZlbnRTZW5kZXJQ
cm94eS5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL0V2ZW50U2VuZGVyUHJveHkubW0K
aW5kZXggYmFjYzE0MTE1NDMzMWI3OWQxYTNjZWQ2ODFjN2Y5NDg5ODhiOTA2Ni4uOGU5OTQ3YjBi
MzI0MGYzZmMwOWIzYzZhZGI2NWU4ZjJlMDJjZmVkNCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9tYWMvRXZlbnRTZW5kZXJQcm94eS5tbQorKysgYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL21hYy9FdmVudFNlbmRlclByb3h5Lm1tCkBAIC05NSwxNyArOTUsMTYgQEAgLSAoaW5z
dGFuY2V0eXBlKWluaXRQcmVzc3VyZUV2ZW50QXRMb2NhdGlvbjooTlNQb2ludClsb2NhdGlvbiBn
bG9iYWxMb2NhdGlvbjooTlMKICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgQ0dFdmVudFJl
ZiBjZ0V2ZW50ID0gQ0dFdmVudENyZWF0ZShudWxscHRyKTsKLSAgICBDR0V2ZW50U2V0VHlwZShj
Z0V2ZW50LCAoQ0dFdmVudFR5cGUpa0NHU0V2ZW50R2VzdHVyZSk7Ci0gICAgQ0dFdmVudFNldElu
dGVnZXJWYWx1ZUZpZWxkKGNnRXZlbnQsIGtDR0V2ZW50R2VzdHVyZUhJRFR5cGUsIDMyKTsKLSAg
ICBDR0V2ZW50U2V0SW50ZWdlclZhbHVlRmllbGQoY2dFdmVudCwga0NHRXZlbnRHZXN0dXJlUGhh
c2UsIGdlc3R1cmVQaGFzZSk7Ci0gICAgQ0dFdmVudFNldERvdWJsZVZhbHVlRmllbGQoY2dFdmVu
dCwga0NHRXZlbnRTdGFnZVByZXNzdXJlLCBwcmVzc3VyZSk7Ci0gICAgQ0dFdmVudFNldERvdWJs
ZVZhbHVlRmllbGQoY2dFdmVudCwga0NHRXZlbnRUcmFuc2l0aW9uUHJvZ3Jlc3MsIHByZXNzdXJl
KTsKLSAgICBDR0V2ZW50U2V0SW50ZWdlclZhbHVlRmllbGQoY2dFdmVudCwga0NHRXZlbnRHZXN0
dXJlU3RhZ2UsIHN0YWdlVHJhbnNpdGlvbik7Ci0gICAgQ0dFdmVudFNldEludGVnZXJWYWx1ZUZp
ZWxkKGNnRXZlbnQsIGtDR0V2ZW50R2VzdHVyZUJlaGF2aW9yLCBrQ0dTR2VzdHVyZUJlaGF2aW9y
RGVlcFByZXNzKTsKLQotICAgIHNlbGYgPSBbc3VwZXIgX2luaXRXaXRoQ0dFdmVudDpjZ0V2ZW50
IGV2ZW50UmVmOm51bGxwdHJdOwotICAgIENGUmVsZWFzZShjZ0V2ZW50KTsKKyAgICBhdXRvIGNn
RXZlbnQgPSBhZG9wdENGKENHRXZlbnRDcmVhdGUobnVsbHB0cikpOworICAgIENHRXZlbnRTZXRU
eXBlKGNnRXZlbnQuZ2V0KCksIChDR0V2ZW50VHlwZSlrQ0dTRXZlbnRHZXN0dXJlKTsKKyAgICBD
R0V2ZW50U2V0SW50ZWdlclZhbHVlRmllbGQoY2dFdmVudC5nZXQoKSwga0NHRXZlbnRHZXN0dXJl
SElEVHlwZSwgMzIpOworICAgIENHRXZlbnRTZXRJbnRlZ2VyVmFsdWVGaWVsZChjZ0V2ZW50Lmdl
dCgpLCBrQ0dFdmVudEdlc3R1cmVQaGFzZSwgZ2VzdHVyZVBoYXNlKTsKKyAgICBDR0V2ZW50U2V0
RG91YmxlVmFsdWVGaWVsZChjZ0V2ZW50LmdldCgpLCBrQ0dFdmVudFN0YWdlUHJlc3N1cmUsIHBy
ZXNzdXJlKTsKKyAgICBDR0V2ZW50U2V0RG91YmxlVmFsdWVGaWVsZChjZ0V2ZW50LmdldCgpLCBr
Q0dFdmVudFRyYW5zaXRpb25Qcm9ncmVzcywgcHJlc3N1cmUpOworICAgIENHRXZlbnRTZXRJbnRl
Z2VyVmFsdWVGaWVsZChjZ0V2ZW50LmdldCgpLCBrQ0dFdmVudEdlc3R1cmVTdGFnZSwgc3RhZ2VU
cmFuc2l0aW9uKTsKKyAgICBDR0V2ZW50U2V0SW50ZWdlclZhbHVlRmllbGQoY2dFdmVudC5nZXQo
KSwga0NHRXZlbnRHZXN0dXJlQmVoYXZpb3IsIGtDR1NHZXN0dXJlQmVoYXZpb3JEZWVwUHJlc3Mp
OworCisgICAgc2VsZiA9IFtzdXBlciBfaW5pdFdpdGhDR0V2ZW50OmNnRXZlbnQuZ2V0KCkgZXZl
bnRSZWY6bnVsbHB0cl07CiAKICAgICBpZiAoIXNlbGYpCiAgICAgICAgIHJldHVybiBuaWw7CmRp
ZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9VSVNjcmlwdENvbnRyb2xsZXJN
YWMubW0gYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9VSVNjcmlwdENvbnRyb2xsZXJNYWMu
bW0KaW5kZXggNjBiZTk1N2UwNTdlMjRiZTBmYmFmZmFmMmMzODIxNTc0YTc2NDE1My4uYmFiZTk1
N2QxMWIyMDQ2ZDVmMzZlZDRkZGM3MWJiZDdkNmU2MDYxYiAxMDA2NDQKLS0tIGEvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9tYWMvVUlTY3JpcHRDb250cm9sbGVyTWFjLm1tCisrKyBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvbWFjL1VJU2NyaXB0Q29udHJvbGxlck1hYy5tbQpAQCAtNTMsMTQgKzUz
LDE0IEBAIFJlZjxVSVNjcmlwdENvbnRyb2xsZXI+IFVJU2NyaXB0Q29udHJvbGxlcjo6Y3JlYXRl
KFVJU2NyaXB0Q29udGV4dCYgY29udGV4dCkKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBVSVNj
cmlwdENvbnRyb2xsZXJNYWMoY29udGV4dCkpOwogfQogCi1zdGF0aWMgTlNTdHJpbmcgKm5zU3Ry
aW5nKEpTU3RyaW5nUmVmIHN0cmluZykKK3N0YXRpYyBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGNm
U3RyaW5nKEpTU3RyaW5nUmVmIHN0cmluZykKIHsKLSAgICByZXR1cm4gQ0ZCcmlkZ2luZ1JlbGVh
c2UoSlNTdHJpbmdDb3B5Q0ZTdHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwgc3RyaW5nKSk7Cisg
ICAgcmV0dXJuIGFkb3B0Q0YoSlNTdHJpbmdDb3B5Q0ZTdHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVs
dCwgc3RyaW5nKSk7CiB9CiAKIHZvaWQgVUlTY3JpcHRDb250cm9sbGVyTWFjOjpyZXBsYWNlVGV4
dEF0UmFuZ2UoSlNTdHJpbmdSZWYgdGV4dCwgaW50IGxvY2F0aW9uLCBpbnQgbGVuZ3RoKQogewot
ICAgIFt3ZWJWaWV3KCkgX2luc2VydFRleHQ6bnNTdHJpbmcodGV4dCkgcmVwbGFjZW1lbnRSYW5n
ZTpOU01ha2VSYW5nZShsb2NhdGlvbiA9PSAtMSA/IE5TTm90Rm91bmQgOiBsb2NhdGlvbiwgbGVu
Z3RoKV07CisgICAgW3dlYlZpZXcoKSBfaW5zZXJ0VGV4dDooX19icmlkZ2UgTlNTdHJpbmcgKilj
ZlN0cmluZyh0ZXh0KS5nZXQoKSByZXBsYWNlbWVudFJhbmdlOk5TTWFrZVJhbmdlKGxvY2F0aW9u
ID09IC0xID8gTlNOb3RGb3VuZCA6IGxvY2F0aW9uLCBsZW5ndGgpXTsKIH0KIAogdm9pZCBVSVNj
cmlwdENvbnRyb2xsZXJNYWM6Onpvb21Ub1NjYWxlKGRvdWJsZSBzY2FsZSwgSlNWYWx1ZVJlZiBj
YWxsYmFjaykK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>422328</attachid>
            <date>2021-03-04 20:19:02 -0800</date>
            <delta_ts>2021-03-05 07:44:56 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222760-20210304201902.patch</filename>
            <type>text/plain</type>
            <size>200660</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjczOTI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
MWU0YmQxNzg0NzU1ZmE4ODU2YjFlODQ0NDExYzg3OWE4YjMyNzg5Li4yMmE0NjIzZTRjZmYwZTRk
OTc3YzgzMjk1OWY4ODA0OTYwYzQ1NDc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMCBAQAorMjAyMS0wMy0wNCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIFJlZHVjZSB1c2Ugb2YgQ0ZSZXRhaW4oKSAvIENGUmVsZWFzZSgpIC8gQ0ZBdXRv
UmVsZWFzZSgpIGluIFdlYktpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjIyNzYwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisK
KyAgICAgICAgUmVkdWNlIHVzZSBvZiBDRlJldGFpbigpIC8gQ0ZSZWxlYXNlKCkgLyBDRkF1dG9S
ZWxlYXNlKCkgaW4gV2ViS2l0IGJ5IHVzaW5nIFJldGFpblB0cjw+LgorCisgICAgICAgICogQVBJ
L0pTQ29udGV4dC5tbToKKyAgICAgICAgKC1bSlNDb250ZXh0IG5hbWVdKToKKyAgICAgICAgKiBB
UEkvSlNWYWx1ZS5tbToKKyAgICAgICAgKHZhbHVlVG9PYmplY3RXaXRob3V0Q29weSk6CisgICAg
ICAgICh2YWx1ZVRvU3RyaW5nKToKKyAgICAgICAgKiBpbnNwZWN0b3IvcmVtb3RlL2NvY29hL1Jl
bW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24ubW06CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90
ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb246OmRlc2VyaWFsaXplTWVzc2FnZSk6CisKIDIwMjEtMDMt
MDQgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAg
ICBVbnJldmlld2VkLCByZXZlcnRpbmcgcjI3MzkwNi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
Q2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggNGE4YmZkMjA1NmExZmViZWRm
YzBiYzhiMGI0OWYzYzIzOWMwN2I0My4uNzA5NTgyNjlkODRmNmQzNDliNjgxZmM1N2QyZTQ4MGYw
YTkzMDE3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dU
Ri9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAyMS0wMy0wNCAgQ2hyaXMgRHVtZXogIDxj
ZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFJlZHVjZSB1c2Ugb2YgQ0ZSZXRhaW4oKSAvIENG
UmVsZWFzZSgpIC8gQ0ZBdXRvUmVsZWFzZSgpIGluIFdlYktpdAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIyNzYwCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgUmVkdWNlIHVzZSBvZiBDRlJldGFpbigpIC8gQ0ZS
ZWxlYXNlKCkgLyBDRkF1dG9SZWxlYXNlKCkgaW4gV2ViS2l0IGJ5IHVzaW5nIFJldGFpblB0cjw+
LgorCisgICAgICAgICogd3RmL2NvY29hL05TVVJMRXh0cmFzLm1tOgorICAgICAgICAoV1RGOjpk
ZWNvZGVQZXJjZW50RXNjYXBlcyk6CisgICAgICAgIChXVEY6OlVSTEJ5VHJ1bmNhdGluZ09uZUNo
YXJhY3RlckJlZm9yZUNvbXBvbmVudCk6CisgICAgICAgIChXVEY6OlVSTFdpdGhEYXRhKToKKyAg
ICAgICAgKFdURjo6VVJMQnlSZW1vdmluZ0NvbXBvbmVudEFuZFN1YnNlcXVlbnRDaGFyYWN0ZXIp
OgorCiAyMDIxLTAzLTA0ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5v
cmc+CiAKICAgICAgICAgUmVtb3ZlIHRoZSBIVFRQU1VwZ3JhZGVFbmFibGVkIGV4cGVyaW1lbnRh
bCBmZWF0dXJlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTdmYjczNjIyYWJkNTdiYjA3Y2M4OGE3N2ZjYmNjMWEy
MzFlZTliNC4uMTJmYzUyZDZlOGE4NzgyOGMxNjQ4NDQxMzM1YjkzMmM3MmRlMGFkNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDExMiBAQAorMjAyMS0wMy0wNCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpA
YXBwbGUuY29tPgorCisgICAgICAgIFJlZHVjZSB1c2Ugb2YgQ0ZSZXRhaW4oKSAvIENGUmVsZWFz
ZSgpIC8gQ0ZBdXRvUmVsZWFzZSgpIGluIFdlYktpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIyNzYwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFy
aW4gQWRsZXIuCisKKyAgICAgICAgUmVkdWNlIHVzZSBvZiBDRlJldGFpbigpIC8gQ0ZSZWxlYXNl
KCkgLyBDRkF1dG9SZWxlYXNlKCkgaW4gV2ViS2l0IGJ5IHVzaW5nIFJldGFpblB0cjw+LgorCisg
ICAgICAgICogYWNjZXNzaWJpbGl0eS9tYWMvQVhPYmplY3RDYWNoZU1hYy5tbToKKyAgICAgICAg
KFdlYkNvcmU6OkFYVGV4dE1hcmtlclJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OkFYVGV4dE1h
cmtlclJhbmdlU3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6QVhUZXh0TWFya2VyUmFuZ2VFbmQp
OgorICAgICAgICAoV2ViQ29yZTo6dGV4dE1hcmtlckZvclZpc2libGVQb3NpdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjp0ZXh0TWFya2VyRm9yQ2hhcmFjdGVyT2Zmc2V0KToKKyAgICAgICAgKFdl
YkNvcmU6OnN0YXJ0T3JFbmRUZXh0TWFya2VyRm9yUmFuZ2UpOgorICAgICAgICAqIGFjY2Vzc2li
aWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5tbToKKyAgICAgICAg
KC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlIHVwZGF0ZU9iamVjdEJhY2tpbmdT
dG9yZV0pOgorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UgY29u
dmVydFBhdGhUb1NjcmVlblNwYWNlOl0pOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvbWFjL1dl
YkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tOgorICAgICAgICAobmV4dFRleHRNYXJr
ZXJGb3JDaGFyYWN0ZXJPZmZzZXQpOgorICAgICAgICAocHJldmlvdXNUZXh0TWFya2VyRm9yQ2hh
cmFjdGVyT2Zmc2V0KToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIg
dGV4dE1hcmtlckZvckZpcnN0UG9zaXRpb25JblRleHRDb250cm9sOl0pOgorICAgICAgICAoQVhB
dHRyaWJ1dGVTdHJpbmdTZXRFbGVtZW50KToKKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL0hUTUxD
b252ZXJ0ZXIubW06CisgICAgICAgIChIVE1MQ29udmVydGVyOjpfcHJvY2Vzc1RleHQpOgorICAg
ICAgICAqIGxvYWRlci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9yQ29jb2EubW06CisgICAgICAgIChX
ZWJDb3JlOjpEaXNrQ2FjaGVNb25pdG9yOjpEaXNrQ2FjaGVNb25pdG9yKToKKyAgICAgICAgKiBw
YWdlL21hYy9FdmVudEhhbmRsZXJNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpzZWxmUmV0YWlu
aW5nTlNTY3JvbGxWaWV3U2Nyb2xsV2hlZWwpOgorICAgICAgICAqIHBhZ2Uvd2luL0ZyYW1lQ0dX
aW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6aW1hZ2VGcm9tUmVjdCk6CisgICAgICAgICogcGxh
dGZvcm0vY2YvTWFpblRocmVhZFNoYXJlZFRpbWVyQ0YuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
c2hhcmVkVGltZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWFpblRocmVhZFNoYXJlZFRpbWVyOjpy
ZXN0YXJ0U2hhcmVkVGltZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWFpblRocmVhZFNoYXJlZFRp
bWVyOjppbnZhbGlkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1haW5UaHJlYWRTaGFyZWRUaW1l
cjo6c2V0RmlyZUludGVydmFsKToKKyAgICAgICAgKFdlYkNvcmU6Ok1haW5UaHJlYWRTaGFyZWRU
aW1lcjo6c3RvcCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbToKKyAgICAgICAgKFdlYkNv
cmU6OmV4ZXJuYWxEZXZpY2VEaXNwbGF5TmFtZUZvclBsYXllcik6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2Evd2luL0NBQ0ZMYXllclRyZWVIb3N0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNBQ0ZMYXllclRyZWVIb3N0Ojppbml0aWFsaXplKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYXR0
ZXJuUmVsZWFzZUNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6
ZmlsbFBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzdHJva2VQYXRo
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3QpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzdHJva2VSZWN0KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jZy9QYXR0ZXJuQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGF0dGVy
blJlbGVhc2VDYWxsYmFjayk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9u
dENhY2hlQ29yZVRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YXV0b0FjdGl2YXRlRm9udCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDR1dpbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGb250Q2FzY2FkZTo6Z2V0UGxhdGZvcm1HbHlwaEFkdmFuY2VzKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0Q0dXaW4uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpyZWxlYXNlV2luZG93c0NvbnRleHQpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3Rm9jdXNSaW5nKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VDR1dpbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpCaXRtYXBJbWFnZTo6Z2V0SEJJVE1BUE9mU2l6ZSk6CisgICAgICAgICogcGxhdGZvcm0v
aW9zL1VzZXJBZ2VudElPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OnN0YW5kYXJkVXNlckFnZW50
V2l0aEFwcGxpY2F0aW9uTmFtZSk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL3dhay9XZWJDb3Jl
VGhyZWFkLm1tOgorICAgICAgICAoU2VuZERlbGVnYXRlTWVzc2FnZSk6CisgICAgICAgIChSdW5X
ZWJUaHJlYWQpOgorICAgICAgICAoV2ViVGhyZWFkVW5sb2NrR3VhcmRGb3JNYWlsKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9tYWMvUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplck1hYy5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OnNwZWVjaFN5bnRoZXNpc0dldFZvaWNlSWRlbnRpZmllcnMpOgorICAgICAg
ICAoV2ViQ29yZTo6c3BlZWNoU3ludGhlc2lzR2V0RGVmYXVsdFZvaWNlSWRlbnRpZmllckZvckxv
Y2FsZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyOjppbml0
aWFsaXplVm9pY2VMaXN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvUGx1Z2luQmxvY2tsaXN0
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luQmxvY2tsaXN0OjpjcmVhdGUpOgorICAgICAg
ICAqIHBsYXRmb3JtL21hYy9XZWJHTEJsb2NrbGlzdC5tbToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkdMQmxvY2tsaXN0OjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhcmVjb3JkZXIv
Y29jb2EvQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tOgorICAgICAgICAoV2ViQ29yZTo6
QXVkaW9TYW1wbGVCdWZmZXJDb21wcmVzc29yOjphdHRhY2hQcmltaW5nVHJpbXNJZk5lZWRlZCk6
CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3I6OnByb3ZpZGVT
b3VyY2VEYXRhTnVtT3V0cHV0UGFja2V0cyk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFyZWNv
cmRlci9jb2NvYS9WaWRlb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IubW06CisgICAgICAgIChXZWJD
b3JlOjpzZXRDb21wcmVzc2lvblNlc3Npb25Qcm9wZXJ0eSk6CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9jZi9Gb3JtRGF0YVN0cmVhbUNGTmV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNs
b3NlQ3VycmVudFN0cmVhbSk6CisgICAgICAgIChXZWJDb3JlOjphZHZhbmNlQ3VycmVudFN0cmVh
bSk6CisgICAgICAgIChXZWJDb3JlOjpvcGVuTmV4dFN0cmVhbSk6CisgICAgICAgIChXZWJDb3Jl
Ojpmb3JtUmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpmb3JtQ2FuUmVhZCk6CisgICAgICAgIChX
ZWJDb3JlOjpmb3JtU2NoZWR1bGUpOgorICAgICAgICAoV2ViQ29yZTo6Zm9ybVVuc2NoZWR1bGUp
OgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ0ZO
ZXRXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlUHJpdmF0ZVN0b3JhZ2VTZXNzaW9u
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6c2V0Q2xpZW50Q2VydGlmaWNhdGVJblNTTFByb3BlcnRpZXMp
OgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OmNyZWF0ZUNGVVJMQ29ubmVjdGlv
bik6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29u
bmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6
OndpbGxTZW5kUmVxdWVzdCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJj
ZVJlcXVlc3RDRk5ldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q6OmRv
VXBkYXRlUmVzb3VyY2VSZXF1ZXN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vRHJhZ0ltYWdl
Q0dXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlQ2dDb250ZXh0RnJvbUJpdG1hcCk6
CisgICAgICAgIChXZWJDb3JlOjpzY2FsZURyYWdJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0v
d2luL1dlYkNvcmVCdW5kbGVXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlV2ViS2l0
QnVuZGxlKToKKyAgICAgICAgKFdlYkNvcmU6OndlYktpdEJ1bmRsZSk6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tOgorICAgICAgICAoLVtXZWJDb3JlVGV4dEZpZWxkQ2Vs
bCBfYWRqdXN0ZWRDb3JlVUlEcmF3T3B0aW9uc0ZvckRyYXdpbmdCb3JkZXJzT25seTpdKToKKyAg
ICAgICAgKiB0ZXN0aW5nL2NvY29hL1dlYkFyY2hpdmVEdW1wU3VwcG9ydC5oOgorICAgICAgICAq
IHRlc3RpbmcvY29jb2EvV2ViQXJjaGl2ZUR1bXBTdXBwb3J0Lm1tOgorICAgICAgICAoV2ViQ29y
ZVRlc3RTdXBwb3J0OjpjcmVhdGVYTUxTdHJpbmdGcm9tV2ViQXJjaGl2ZURhdGEpOgorICAgICAg
ICAqIHRlc3RpbmcvY29jb2EvV2ViVmlld1Zpc3VhbElkZW50aWZpY2F0aW9uT3ZlcmxheS5tbToK
KyAgICAgICAgKGlkZW50aWZpY2F0aW9uRm9udCk6CisKIDIwMjEtMDMtMDQgIERldmluIFJvdXNz
byAgPGRyb3Vzc29AYXBwbGUuY29tPgogCiAgICAgICAgIFtQYXltZW50IFJlcXVlc3RdIGluY3Jl
bWVudCB0aGUgY3VycmVudCB2ZXJzaW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDI2OTAwNzI1MzI2ODAzOTBkZGU1
NzNjZTUyYmVjNWRmYzNmYTdlYzkuLjkyZjAyYmYzOGM4YmQ0MDljNTk3MDBjYjQwMmZkOTE2YzYw
NzBkMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzkgQEAKKzIwMjEtMDMtMDQgIENocmlzIER1bWV6
ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBSZWR1Y2UgdXNlIG9mIENGUmV0YWluKCkg
LyBDRlJlbGVhc2UoKSAvIENGQXV0b1JlbGVhc2UoKSBpbiBXZWJLaXQKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMjc2MAorCisgICAgICAgIFJldmll
d2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIFJlZHVjZSB1c2Ugb2YgQ0ZSZXRhaW4oKSAv
IENGUmVsZWFzZSgpIC8gQ0ZBdXRvUmVsZWFzZSgpIGluIFdlYktpdCBieSB1c2luZyBSZXRhaW5Q
dHI8Pi4KKworICAgICAgICAqIFBsYXRmb3JtL21hYy9TdHJpbmdVdGlsaXRpZXMubW06CisgICAg
ICAgIChXZWJLaXQ6Om5zU3RyaW5nRnJvbVdlYkNvcmVTdHJpbmcpOgorICAgICAgICAoV2ViS2l0
Ojpmb3JtYXR0ZWRQaG9uZU51bWJlclN0cmluZyk6CisgICAgICAgICogUGx1Z2luUHJvY2Vzcy9t
YWMvUGx1Z2luUHJvY2Vzc01hYy5tbToKKyAgICAgICAgKFdlYktpdDo6aW5pdGlhbGl6ZUNvY29h
T3ZlcnJpZGVzKToKKyAgICAgICAgKiBTaGFyZWQvbWFjL1Bhc3RlYm9hcmRUeXBlcy5tbToKKyAg
ICAgICAgKFdlYktpdDo6UGFzdGVib2FyZFR5cGVzOjpmb3JFZGl0aW5nKToKKyAgICAgICAgKFdl
YktpdDo6UGFzdGVib2FyZFR5cGVzOjpmb3JVUkwpOgorICAgICAgICAoV2ViS2l0OjpQYXN0ZWJv
YXJkVHlwZXM6OmZvckltYWdlcyk6CisgICAgICAgIChXZWJLaXQ6OlBhc3RlYm9hcmRUeXBlczo6
Zm9ySW1hZ2VzV2l0aEFyY2hpdmUpOgorICAgICAgICAoV2ViS2l0OjpQYXN0ZWJvYXJkVHlwZXM6
OmZvclNlbGVjdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1t
OgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6YWNjZXB0c0ZpcnN0TW91c2UpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6c2hvdWxkRGVsYXlXaW5kb3dPcmRlcmluZ0ZvckV2
ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnZhbGlkQXR0cmlidXRlc0Zvck1h
cmtlZFRleHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6cGVyZm9ybUtleUVxdWl2
YWxlbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9JbnNwZWN0b3IvaW9zL1dLSW5zcGVjdG9ySGln
aGxpZ2h0Vmlldy5tbToKKyAgICAgICAgKGxheWVyUGF0aFdpdGhIb2xlKToKKyAgICAgICAgKGxh
eWVyUGF0aCk6CisgICAgICAgICogVUlQcm9jZXNzL19XS1RvdWNoRXZlbnRHZW5lcmF0b3IubW06
CisgICAgICAgICgtW19XS1RvdWNoRXZlbnRHZW5lcmF0b3IgZGVhbGxvY10pOgorICAgICAgICAo
LVtfV0tUb3VjaEV2ZW50R2VuZXJhdG9yIF9zZW5kSElERXZlbnQ6XSk6CisgICAgICAgICogVUlQ
cm9jZXNzL2lvcy9mdWxsc2NyZWVuL1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXJJT1MubW06
CisgICAgICAgICgtW1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIgX0VWT3JnYW5pemF0aW9u
TmFtZV0pOgorICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tOgor
ICAgICAgICAoV2ViS2l0Ojp3ZWJQcm9jZXNzTG9hZGVyQWNjZXNzaWJpbGl0eUJ1bmRsZVBhdGgp
OgorCiAyMDIxLTAzLTA0ICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgog
CiAgICAgICAgIEZpeCB0aGUgYnVpbGQgYWZ0ZXIgcjI3MzkwNApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS9pb3MvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvQ2hh
bmdlTG9nCmluZGV4IGNhZDE4OWQwMWVjMjc0MTNmODc1MmY4MDY1Yzk1YTIyZDVjYzM2YjQuLjdl
ODY5ZmI1NTU5NGIzZmRkYzY5YTc3YzUwZjRmMjE3YmIxYjdiYWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvaW9zL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lv
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAyMS0wMy0wNCAgQ2hyaXMgRHVtZXogIDxj
ZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFJlZHVjZSB1c2Ugb2YgQ0ZSZXRhaW4oKSAvIENG
UmVsZWFzZSgpIC8gQ0ZBdXRvUmVsZWFzZSgpIGluIFdlYktpdAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIyNzYwCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgUmVkdWNlIHVzZSBvZiBDRlJldGFpbigpIC8gQ0ZS
ZWxlYXNlKCkgLyBDRkF1dG9SZWxlYXNlKCkgaW4gV2ViS2l0IGJ5IHVzaW5nIFJldGFpblB0cjw+
LgorCisgICAgICAgICogTWlzYy9XZWJVSUtpdFN1cHBvcnQubW06CisgICAgICAgIChMb2FkV2Vi
TG9jYWxpemVkU3RyaW5ncyk6CisgICAgICAgICogV2ViVmlldy9XZWJQREZWaWV3SU9TLm1tOgor
ICAgICAgICAoLVtXZWJQREZWaWV3IGZpbmlzaGVkTG9hZGluZ1dpdGhEYXRhU291cmNlOl0pOgor
ICAgICAgICAqIFdlYlZpZXcvV2ViUERGVmlld1BsYWNlaG9sZGVyLm1tOgorICAgICAgICAoLVtX
ZWJQREZWaWV3UGxhY2Vob2xkZXIgZmluaXNoZWRMb2FkaW5nV2l0aERhdGFTb3VyY2U6XSk6CisK
IDIwMjEtMDItMjIgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBV
c2UgYWRvcHROUygpIGFzIHNvb24gYXMgd2UgW1tPYmpjQ2xhc3MgYWxsb2NdIGluaXRdIHRvIGF2
b2lkIGxlYWtzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggN2MxMmQxNWFmYWU1OGFl
MDVjZTZiMzQwNDU5MDBiODU5ZWQxNDZiMy4uZDY1NTViYTQ5NTU0ZDE4NjFmNDNjYmQ1MDk1N2I3
NGFhOWVlOTRkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBA
CisyMDIxLTAzLTA0ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAg
UmVkdWNlIHVzZSBvZiBDRlJldGFpbigpIC8gQ0ZSZWxlYXNlKCkgLyBDRkF1dG9SZWxlYXNlKCkg
aW4gV2ViS2l0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMjI3NjAKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBS
ZWR1Y2UgdXNlIG9mIENGUmV0YWluKCkgLyBDRlJlbGVhc2UoKSAvIENGQXV0b1JlbGVhc2UoKSBp
biBXZWJLaXQgYnkgdXNpbmcgUmV0YWluUHRyPD4uCisKKyAgICAgICAgKiBNaXNjL1dlYkxvY2Fs
aXphYmxlU3RyaW5ncy5tbToKKyAgICAgICAgKiBNaXNjL1dlYk5TRGF0YUV4dHJhcy5tbToKKyAg
ICAgICAgKC1bTlNTdHJpbmcgX3dlYl9jYXBpdGFsaXplUkZDODIySGVhZGVyRmllbGROYW1lXSk6
CisgICAgICAgICogUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5Ib3N0TWFuYWdlci5tbToK
KyAgICAgICAgKFdlYktpdDo6cHJlZmVycmVkQnVuZGxlTG9jYWxpemF0aW9uTmFtZSk6CisgICAg
ICAgICogUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblZpZXcubW06CisgICAgICAgICgtW1dlYk5l
dHNjYXBlUGx1Z2luVmlldyBzdGF0dXM6XSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2Vi
UHJvZ3Jlc3NUcmFja2VyQ2xpZW50Lm1tOgorICAgICAgICAoV2ViUHJvZ3Jlc3NUcmFja2VyQ2xp
ZW50Ojpwcm9ncmVzc0VzdGltYXRlQ2hhbmdlZCk6CisgICAgICAgICogV2ViSW5zcGVjdG9yL1dl
Yk5vZGVIaWdobGlnaHRWaWV3Lm1tOgorICAgICAgICAobGF5ZXJQYXRoV2l0aEhvbGUpOgorICAg
ICAgICAobGF5ZXJQYXRoKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkZyYW1lLm1tOgorICAgICAg
ICAoY3JlYXRlVW5pcXVlV2ViRGF0YVVSTCk6CisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1t
OgorICAgICAgICAoK1tXZWJWaWV3IF9zZXRDYWNoZU1vZGVsOl0pOgorCiAyMDIxLTAzLTA0ICBD
aHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgW21hY09TXVtXSzJdIENo
YW5naW5nIHRoZSBzeXN0ZW0gbGFuZ3VhZ2UgZG9lcyBub3QgdXBkYXRlIG5hdmlnYXRvci5sYW5n
dWFnZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCmluZGV4IDU4MTM0MDI5NmQ4NWFkNGE4Njk5
NGRkMzRjZGU0ZTU1NzFjYWJhYTcuLmRlMTAxYjc3Y2Q2ODgzZDA2YjU1NDRmMjUzNjUyODgwZDRh
ZWViMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MCBAQAorMjAy
MS0wMy0wNCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFJlZHVj
ZSB1c2Ugb2YgQ0ZSZXRhaW4oKSAvIENGUmVsZWFzZSgpIC8gQ0ZBdXRvUmVsZWFzZSgpIGluIFdl
YktpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIy
NzYwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgUmVkdWNl
IHVzZSBvZiBDRlJldGFpbigpIC8gQ0ZSZWxlYXNlKCkgLyBDRkF1dG9SZWxlYXNlKCkgaW4gV2Vi
S2l0IGJ5IHVzaW5nIFJldGFpblB0cjw+LgorCisgICAgICAgICogQ0ZEaWN0aW9uYXJ5UHJvcGVy
dHlCYWcuY3BwOgorICAgICAgICAoQ29udmVydFZhcmlhbnRUb0NGVHlwZSk6CisgICAgICAgIChD
RkRpY3Rpb25hcnlQcm9wZXJ0eUJhZzo6UmVhZCk6CisgICAgICAgIChDRkRpY3Rpb25hcnlQcm9w
ZXJ0eUJhZzo6V3JpdGUpOgorICAgICAgICAqIE1hcnNoYWxsaW5nSGVscGVycy5jcHA6CisgICAg
ICAgIChNYXJzaGFsbGluZ0hlbHBlcnM6OlBhdGhTdHJpbmdUb0ZpbGVDRlVSTFJlZik6CisgICAg
ICAgIChNYXJzaGFsbGluZ0hlbHBlcnM6OkZpbGVDRlVSTFJlZlRvUGF0aFN0cmluZyk6CisgICAg
ICAgIChNYXJzaGFsbGluZ0hlbHBlcnM6OkJTVFJUb0NGVVJMUmVmKToKKyAgICAgICAgKE1hcnNo
YWxsaW5nSGVscGVyczo6QlNUUlRvQ0ZTdHJpbmdSZWYpOgorICAgICAgICAoTWFyc2hhbGxpbmdI
ZWxwZXJzOjpMUENPTEVTVFJUb0NGU3RyaW5nUmVmKToKKyAgICAgICAgKE1hcnNoYWxsaW5nSGVs
cGVyczo6aW50VG9DRk51bWJlclJlZik6CisgICAgICAgIChNYXJzaGFsbGluZ0hlbHBlcnM6OnNh
ZmVBcnJheVRvU3RyaW5nQXJyYXkpOgorICAgICAgICAoTWFyc2hhbGxpbmdIZWxwZXJzOjpzYWZl
QXJyYXlUb0ludEFycmF5KToKKyAgICAgICAgKE1hcnNoYWxsaW5nSGVscGVyczo6c2FmZUFycmF5
VG9JVW5rbm93bkFycmF5KToKKyAgICAgICAgKiBNYXJzaGFsbGluZ0hlbHBlcnMuaDoKKyAgICAg
ICAgKiBXZWJBcHBsaWNhdGlvbkNhY2hlLmNwcDoKKyAgICAgICAgKFdlYkFwcGxpY2F0aW9uQ2Fj
aGU6Om9yaWdpbnNXaXRoQ2FjaGUpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRj
aERpZEZhaWxUb1N0YXJ0UGx1Z2luIGNvbnN0KToKKyAgICAgICAgKiBXZWJEb3dubG9hZENGTmV0
LmNwcDoKKyAgICAgICAgKFdlYkRvd25sb2FkOjppbml0VG9SZXN1bWVXaXRoQnVuZGxlKToKKyAg
ICAgICAgKFdlYkRvd25sb2FkOjpzZXREZXN0aW5hdGlvbik6CisgICAgICAgIChXZWJEb3dubG9h
ZDo6d2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKiBXZWJIaXN0b3J5LmNwcDoKKyAgICAgICAg
KGNyZWF0ZVVzZXJJbmZvRnJvbUFycmF5KToKKyAgICAgICAgKiBXZWJMb2NhbGl6YWJsZVN0cmlu
Z3MuY3BwOgorICAgICAgICAoY3JlYXRlV2ViS2l0QnVuZGxlKToKKwogMjAyMS0wMi0xMCAgUm9i
IEJ1aXMgIDxyYnVpc0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFVzZSBldmVudCBsb29wIHRvIHNl
dCB0aXRsZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHQu
bW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dC5tbQppbmRleCAwYmE3OTkx
ZWY3YjI3ZGFlMjU1MWQ2MDRlZmMzZGM3YjMzMmMzYmRhLi5iZWIxNDNkMGFmNTQxYjkzZTliZDNi
NTU0ZjdkMDVlM2U2OThhOTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTQ29udGV4dC5tbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dC5t
bQpAQCAtMjYyLDcgKzI2Miw3IEBAIC0gKE5TU3RyaW5nICopbmFtZQogICAgIGlmICghbmFtZSkK
ICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAgIHJldHVybiBDRkJyaWRnaW5nUmVsZWFzZShKU1N0
cmluZ0NvcHlDRlN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBuYW1lKSk7CisgICAgcmV0dXJu
IGFkb3B0Q0YoSlNTdHJpbmdDb3B5Q0ZTdHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwgbmFtZSkp
LmJyaWRnaW5nQXV0b3JlbGVhc2UoKTsKIH0KIAogLSAodm9pZClzZXROYW1lOihOU1N0cmluZyAq
KW5hbWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZS5tbSBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZS5tbQppbmRleCAxODQ0YjA2MTMyNTUx
Y2U5YmJhY2U0MjQyNDFmMTZiOWJkZGQ5NGUyLi5hYzA5ZjY1NDUwN2MzZGJkNDk2MGZkNjcxMzMy
YmIzZjExZjkwNjI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmFs
dWUubW0KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlLm1tCkBAIC03NzMs
NyArNzczLDcgQEAgc3RhdGljIEpTQ29udGFpbmVyQ29udmVydG9yOjpUYXNrIHZhbHVlVG9PYmpl
Y3RXaXRob3V0Q29weShKU0dsb2JhbENvbnRleHRSZWYgY28KICAgICAgICAgfSBlbHNlIGlmIChK
U1ZhbHVlSXNTdHJpbmcoY29udGV4dCwgdmFsdWUpKSB7CiAgICAgICAgICAgICAvLyBXb3VsZCBi
ZSBuaWNlIHRvIHVuaXF1ZSBzdHJpbmdzLCB0b28uCiAgICAgICAgICAgICBhdXRvIGpzc3RyaW5n
ID0gYWRvcHRSZWYoSlNWYWx1ZVRvU3RyaW5nQ29weShjb250ZXh0LCB2YWx1ZSwgMCkpOwotICAg
ICAgICAgICAgcHJpbWl0aXZlID0gQ0ZCcmlkZ2luZ1JlbGVhc2UoSlNTdHJpbmdDb3B5Q0ZTdHJp
bmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwganNzdHJpbmcuZ2V0KCkpKTsKKyAgICAgICAgICAgIHBy
aW1pdGl2ZSA9IGFkb3B0Q0YoSlNTdHJpbmdDb3B5Q0ZTdHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVs
dCwganNzdHJpbmcuZ2V0KCkpKS5icmlkZ2luZ0F1dG9yZWxlYXNlKCk7CiAgICAgICAgIH0gZWxz
ZSBpZiAoSlNWYWx1ZUlzTnVsbChjb250ZXh0LCB2YWx1ZSkpCiAgICAgICAgICAgICBwcmltaXRp
dmUgPSBbTlNOdWxsIG51bGxdOwogICAgICAgICBlbHNlIHsKQEAgLTg4MSw3ICs4ODEsNyBAQCBp
ZCB2YWx1ZVRvU3RyaW5nKEpTR2xvYmFsQ29udGV4dFJlZiBjb250ZXh0LCBKU1ZhbHVlUmVmIHZh
bHVlLCBKU1ZhbHVlUmVmKiBleGNlcAogICAgICAgICByZXR1cm4gbmlsOwogICAgIH0KIAotICAg
IHJldHVybiBDRkJyaWRnaW5nUmVsZWFzZShKU1N0cmluZ0NvcHlDRlN0cmluZyhrQ0ZBbGxvY2F0
b3JEZWZhdWx0LCBqc3N0cmluZy5nZXQoKSkpOworICAgIHJldHVybiBhZG9wdENGKEpTU3RyaW5n
Q29weUNGU3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIGpzc3RyaW5nLmdldCgpKSkuYnJpZGdp
bmdBdXRvcmVsZWFzZSgpOwogfQogCiBpZCB2YWx1ZVRvRGF0ZShKU0dsb2JhbENvbnRleHRSZWYg
Y29udGV4dCwgSlNWYWx1ZVJlZiB2YWx1ZSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvY29jb2EvUmVtb3Rl
SW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5tbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvcmVtb3RlL2NvY29hL1JlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24ubW0KaW5kZXggNzIz
MTAzYTAzODczYjM3YjlhZWI5YzdjZmU0ZDQwOTY3ODRmM2YzNi4uODEzYzE2MzBlM2Q2YTBjYmIx
NjhiMjc2YzY1MGUwNTcxNzIzYmU3MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9yZW1vdGUvY29jb2EvUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5tbQor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9jb2NvYS9SZW1vdGVJ
bnNwZWN0b3JYUENDb25uZWN0aW9uLm1tCkBAIC0xMTcsMTAgKzExNywxMCBAQCBOU0RpY3Rpb25h
cnkgKlJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb246OmRlc2VyaWFsaXplTWVzc2FnZSh4cGNf
b2JqZWN0X3Qgb2JqZQogICAgICAgICByZXR1cm4gbmlsOwogICAgIH0KIAotICAgIGF1dG8gZGlj
dGlvbmFyeSA9IF9DRlhQQ0NyZWF0ZUNGT2JqZWN0RnJvbVhQQ01lc3NhZ2UoeHBjRGljdGlvbmFy
eSk7CisgICAgYXV0byBkaWN0aW9uYXJ5ID0gYWRvcHRDRihfQ0ZYUENDcmVhdGVDRk9iamVjdEZy
b21YUENNZXNzYWdlKHhwY0RpY3Rpb25hcnkpKTsKICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKGRp
Y3Rpb25hcnksICJVbmFibGUgdG8gZGVzZXJpYWxpemUgeHBjIG1lc3NhZ2UiKTsKLSAgICBBU1NF
UlQoQ0ZHZXRUeXBlSUQoZGljdGlvbmFyeSkgPT0gQ0ZEaWN0aW9uYXJ5R2V0VHlwZUlEKCkpOwot
ICAgIHJldHVybiBDRkJyaWRnaW5nUmVsZWFzZShkaWN0aW9uYXJ5KTsKKyAgICBBU1NFUlQoQ0ZH
ZXRUeXBlSUQoZGljdGlvbmFyeS5nZXQoKSkgPT0gQ0ZEaWN0aW9uYXJ5R2V0VHlwZUlEKCkpOwor
ICAgIHJldHVybiBkaWN0aW9uYXJ5LmJyaWRnaW5nQXV0b3JlbGVhc2UoKTsKIH0KIAogdm9pZCBS
ZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uOjpoYW5kbGVFdmVudCh4cGNfb2JqZWN0X3Qgb2Jq
ZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvY29jb2EvTlNVUkxFeHRyYXMubW0gYi9T
b3VyY2UvV1RGL3d0Zi9jb2NvYS9OU1VSTEV4dHJhcy5tbQppbmRleCAyMDllYTViODY2NGExYmEz
MTkyZjllYzIzNTM5ZTMwY2UyYzk3YTgyLi43NTA4ZjJmNGYyZGM0MmU4MmFmODFmNjM0ODIwYzVk
ZDc2MDY1ZDBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9OU1VSTEV4dHJhcy5t
bQorKysgYi9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9OU1VSTEV4dHJhcy5tbQpAQCAtOTIsMTAgKzky
LDEwIEBAIHZvaWQgbG9hZElETkFsbG93ZWRTY3JpcHRMaXN0KCkKICAgICAKIHN0YXRpYyBTdHJp
bmcgZGVjb2RlUGVyY2VudEVzY2FwZXMoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiB7Ci0gICAgTlNT
dHJpbmcgKnN1YnN0cmluZyA9IENGQnJpZGdpbmdSZWxlYXNlKENGVVJMQ3JlYXRlU3RyaW5nQnlS
ZXBsYWNpbmdQZXJjZW50RXNjYXBlcyhudWxscHRyLCBzdHJpbmcuY3JlYXRlQ0ZTdHJpbmcoKS5n
ZXQoKSwgQ0ZTVFIoIiIpKSk7CisgICAgYXV0byBzdWJzdHJpbmcgPSBhZG9wdENGKENGVVJMQ3Jl
YXRlU3RyaW5nQnlSZXBsYWNpbmdQZXJjZW50RXNjYXBlcyhudWxscHRyLCBzdHJpbmcuY3JlYXRl
Q0ZTdHJpbmcoKS5nZXQoKSwgQ0ZTVFIoIiIpKSk7CiAgICAgaWYgKCFzdWJzdHJpbmcpCiAgICAg
ICAgIHJldHVybiBzdHJpbmc7Ci0gICAgcmV0dXJuIHN1YnN0cmluZzsKKyAgICByZXR1cm4gc3Vi
c3RyaW5nLmdldCgpOwogfQogCiBOU1N0cmluZyAqZGVjb2RlSG9zdE5hbWUoTlNTdHJpbmcgKnN0
cmluZykKQEAgLTEzOCwxMSArMTM4LDExIEBAIE5TVVJMICpVUkxCeVRydW5jYXRpbmdPbmVDaGFy
YWN0ZXJCZWZvcmVDb21wb25lbnQoTlNVUkwgKlVSTCwgQ0ZVUkxDb21wb25lbnRUeXBlCiAgICAg
ICAgIENGVVJMR2V0Qnl0ZXMoKF9fYnJpZGdlIENGVVJMUmVmKVVSTCwgdXJsQnl0ZXMuZGF0YSgp
LCBudW1CeXRlcyk7CiAgICAgfQogCi0gICAgQ0ZVUkxSZWYgcmVzdWx0ID0gQ0ZVUkxDcmVhdGVX
aXRoQnl0ZXMobnVsbHB0ciwgdXJsQnl0ZXMuZGF0YSgpLCBmcmFnUmcubG9jYXRpb24gLSAxLCBr
Q0ZTdHJpbmdFbmNvZGluZ1VURjgsIG51bGxwdHIpOworICAgIGF1dG8gcmVzdWx0ID0gYWRvcHRD
RihDRlVSTENyZWF0ZVdpdGhCeXRlcyhudWxscHRyLCB1cmxCeXRlcy5kYXRhKCksIGZyYWdSZy5s
b2NhdGlvbiAtIDEsIGtDRlN0cmluZ0VuY29kaW5nVVRGOCwgbnVsbHB0cikpOwogICAgIGlmICgh
cmVzdWx0KQotICAgICAgICByZXN1bHQgPSBDRlVSTENyZWF0ZVdpdGhCeXRlcyhudWxscHRyLCB1
cmxCeXRlcy5kYXRhKCksIGZyYWdSZy5sb2NhdGlvbiAtIDEsIGtDRlN0cmluZ0VuY29kaW5nSVNP
TGF0aW4xLCBudWxscHRyKTsKKyAgICAgICAgcmVzdWx0ID0gYWRvcHRDRihDRlVSTENyZWF0ZVdp
dGhCeXRlcyhudWxscHRyLCB1cmxCeXRlcy5kYXRhKCksIGZyYWdSZy5sb2NhdGlvbiAtIDEsIGtD
RlN0cmluZ0VuY29kaW5nSVNPTGF0aW4xLCBudWxscHRyKSk7CiAgICAgICAgIAotICAgIHJldHVy
biByZXN1bHQgPyBDRkJyaWRnaW5nUmVsZWFzZShyZXN1bHQpIDogVVJMOworICAgIHJldHVybiBy
ZXN1bHQgPyByZXN1bHQuYnJpZGdpbmdBdXRvcmVsZWFzZSgpIDogVVJMOwogfQogCiBzdGF0aWMg
TlNVUkwgKlVSTEJ5UmVtb3ZpbmdSZXNvdXJjZVNwZWNpZmllcihOU1VSTCAqVVJMKQpAQCAtMTU1
LDcgKzE1NSw2IEBAIE5TVVJMICpVUkxXaXRoRGF0YShOU0RhdGEgKmRhdGEsIE5TVVJMICpiYXNl
VVJMKQogICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuIG5pbDsKICAgICAKLSAgICBOU1VS
TCAqcmVzdWx0ID0gbmlsOwogICAgIHNpemVfdCBsZW5ndGggPSBbZGF0YSBsZW5ndGhdOwogICAg
IGlmIChsZW5ndGggPiAwKSB7CiAgICAgICAgIC8vIHdvcmsgYXJvdW5kIDxyZGFyOi8vNDQ3MDc3
MT46IENGVVJMQ3JlYXRlQWJzb2x1dGVVUkxXaXRoQnl0ZXMoLi4sIFRSVUUpIGRvZXNuJ3QgcmVt
b3ZlIG5vbi1wYXRoIGNvbXBvbmVudHMuCkBAIC0xNzEsMTMgKzE3MCwxMiBAQCBOU1VSTCAqVVJM
V2l0aERhdGEoTlNEYXRhICpkYXRhLCBOU1VSTCAqYmFzZVVSTCkKICAgICAgICAgLy8gKGUuZyBj
YWxscyB0byBOU1VSTCAtcGF0aCkuIEhvd2V2ZXIsIHRoaXMgZnVuY3Rpb24gaXMgbm90IHRvbGVy
YW50IG9mIGlsbGVnYWwgVVRGLTggc2VxdWVuY2VzLCB3aGljaAogICAgICAgICAvLyBjb3VsZCBl
aXRoZXIgYmUgYSBtYWxmb3JtZWQgc3RyaW5nIG9yIGJ5dGVzIGluIGEgZGlmZmVyZW50IGVuY29k
aW5nLCBsaWtlIHNoaWZ0LWppcywgc28gd2UgZmFsbCBiYWNrCiAgICAgICAgIC8vIG9udG8gdXNp
bmcgSVNPIExhdGluIDEgaW4gdGhvc2UgY2FzZXMuCi0gICAgICAgIHJlc3VsdCA9IENGQnJpZGdp
bmdSZWxlYXNlKENGVVJMQ3JlYXRlQWJzb2x1dGVVUkxXaXRoQnl0ZXMobnVsbHB0ciwgYnl0ZXMs
IGxlbmd0aCwga0NGU3RyaW5nRW5jb2RpbmdVVEY4LCAoX19icmlkZ2UgQ0ZVUkxSZWYpYmFzZVVS
TCwgWUVTKSk7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gYWRvcHRDRihDRlVSTENyZWF0ZUFic29s
dXRlVVJMV2l0aEJ5dGVzKG51bGxwdHIsIGJ5dGVzLCBsZW5ndGgsIGtDRlN0cmluZ0VuY29kaW5n
VVRGOCwgKF9fYnJpZGdlIENGVVJMUmVmKWJhc2VVUkwsIFlFUykpOwogICAgICAgICBpZiAoIXJl
c3VsdCkKLSAgICAgICAgICAgIHJlc3VsdCA9IENGQnJpZGdpbmdSZWxlYXNlKENGVVJMQ3JlYXRl
QWJzb2x1dGVVUkxXaXRoQnl0ZXMobnVsbHB0ciwgYnl0ZXMsIGxlbmd0aCwga0NGU3RyaW5nRW5j
b2RpbmdJU09MYXRpbjEsIChfX2JyaWRnZSBDRlVSTFJlZiliYXNlVVJMLCBZRVMpKTsKLSAgICB9
IGVsc2UKLSAgICAgICAgcmVzdWx0ID0gW05TVVJMIFVSTFdpdGhTdHJpbmc6QCIiXTsKLQotICAg
IHJldHVybiByZXN1bHQ7CisgICAgICAgICAgICByZXN1bHQgPSBhZG9wdENGKENGVVJMQ3JlYXRl
QWJzb2x1dGVVUkxXaXRoQnl0ZXMobnVsbHB0ciwgYnl0ZXMsIGxlbmd0aCwga0NGU3RyaW5nRW5j
b2RpbmdJU09MYXRpbjEsIChfX2JyaWRnZSBDRlVSTFJlZiliYXNlVVJMLCBZRVMpKTsKKyAgICAg
ICAgcmV0dXJuIHJlc3VsdC5icmlkZ2luZ0F1dG9yZWxlYXNlKCk7CisgICAgfQorICAgIHJldHVy
biBbTlNVUkwgVVJMV2l0aFN0cmluZzpAIiJdOwogfQogc3RhdGljIE5TRGF0YSAqZGF0YVdpdGhV
c2VyVHlwZWRTdHJpbmcoTlNTdHJpbmcgKnN0cmluZykKIHsKQEAgLTMzNiwxMSArMzM0LDExIEBA
IHN0YXRpYyBOU1VSTCAqVVJMQnlSZW1vdmluZ0NvbXBvbmVudEFuZFN1YnNlcXVlbnRDaGFyYWN0
ZXIoTlNVUkwgKlVSTCwgQ0ZVUkxDb21wCiAgICAgICAgIAogICAgIG1lbW1vdmUodXJsQnl0ZXMg
KyByYW5nZS5sb2NhdGlvbiwgdXJsQnl0ZXMgKyByYW5nZS5sb2NhdGlvbiArIHJhbmdlLmxlbmd0
aCwgbnVtQnl0ZXMgLSByYW5nZS5sb2NhdGlvbiArIHJhbmdlLmxlbmd0aCk7CiAgICAgCi0gICAg
Q0ZVUkxSZWYgcmVzdWx0ID0gQ0ZVUkxDcmVhdGVXaXRoQnl0ZXMobnVsbHB0ciwgdXJsQnl0ZXMs
IG51bUJ5dGVzIC0gcmFuZ2UubGVuZ3RoLCBrQ0ZTdHJpbmdFbmNvZGluZ1VURjgsIG51bGxwdHIp
OworICAgIGF1dG8gcmVzdWx0ID0gYWRvcHRDRihDRlVSTENyZWF0ZVdpdGhCeXRlcyhudWxscHRy
LCB1cmxCeXRlcywgbnVtQnl0ZXMgLSByYW5nZS5sZW5ndGgsIGtDRlN0cmluZ0VuY29kaW5nVVRG
OCwgbnVsbHB0cikpOwogICAgIGlmICghcmVzdWx0KQotICAgICAgICByZXN1bHQgPSBDRlVSTENy
ZWF0ZVdpdGhCeXRlcyhudWxscHRyLCB1cmxCeXRlcywgbnVtQnl0ZXMgLSByYW5nZS5sZW5ndGgs
IGtDRlN0cmluZ0VuY29kaW5nSVNPTGF0aW4xLCBudWxscHRyKTsKKyAgICAgICAgcmVzdWx0ID0g
YWRvcHRDRihDRlVSTENyZWF0ZVdpdGhCeXRlcyhudWxscHRyLCB1cmxCeXRlcywgbnVtQnl0ZXMg
LSByYW5nZS5sZW5ndGgsIGtDRlN0cmluZ0VuY29kaW5nSVNPTGF0aW4xLCBudWxscHRyKSk7CiAg
ICAgICAgICAgICAgICAgCi0gICAgcmV0dXJuIHJlc3VsdCA/IENGQnJpZGdpbmdSZWxlYXNlKHJl
c3VsdCkgOiBVUkw7CisgICAgcmV0dXJuIHJlc3VsdCA/IHJlc3VsdC5icmlkZ2luZ0F1dG9yZWxl
YXNlKCkgOiBVUkw7CiB9CiAKIE5TVVJMICpVUkxCeVJlbW92aW5nVXNlckluZm8oTlNVUkwgKlVS
TCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL0FYT2JqZWN0
Q2FjaGVNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9BWE9iamVjdENh
Y2hlTWFjLm1tCmluZGV4IGI3Y2ZmNzRlNzYyYTI4ZTA0NTU3NDY0MTYxMmRlODRiNTY5NDFmMjUu
LjNjZjRhMmE4YjI2MzExMmFhZGJkYWZlZGQwMjk5YzJlNDQxY2QwYjYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL0FYT2JqZWN0Q2FjaGVNYWMubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvQVhPYmplY3RDYWNoZU1hYy5tbQpAQCAt
NDc4LDggKzQ3OCw4IEBAIHN0YXRpYyB2b2lkIGFkZFRleHRNYXJrZXJGb3IoTlNNdXRhYmxlRGlj
dGlvbmFyeSogY2hhbmdlLCBBWENvcmVPYmplY3QmIG9iamVjdCwKIAogc3RhdGljIHZvaWQgYWRk
VGV4dE1hcmtlckZvcihOU011dGFibGVEaWN0aW9uYXJ5KiBjaGFuZ2UsIEFYQ29yZU9iamVjdCYg
b2JqZWN0LCBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudCYgdGV4dENvbnRyb2wpCiB7Ci0gICAg
aWYgKGlkIHRleHRNYXJrZXIgPSBbb2JqZWN0LndyYXBwZXIoKSB0ZXh0TWFya2VyRm9yRmlyc3RQ
b3NpdGlvbkluVGV4dENvbnRyb2w6dGV4dENvbnRyb2xdKQotICAgICAgICBbY2hhbmdlIHNldE9i
amVjdDp0ZXh0TWFya2VyIGZvcktleTpOU0FjY2Vzc2liaWxpdHlUZXh0Q2hhbmdlVmFsdWVTdGFy
dE1hcmtlcl07CisgICAgaWYgKGF1dG8gdGV4dE1hcmtlciA9IFtvYmplY3Qud3JhcHBlcigpIHRl
eHRNYXJrZXJGb3JGaXJzdFBvc2l0aW9uSW5UZXh0Q29udHJvbDp0ZXh0Q29udHJvbF0pCisgICAg
ICAgIFtjaGFuZ2Ugc2V0T2JqZWN0OnRleHRNYXJrZXIuYnJpZGdpbmdBdXRvcmVsZWFzZSgpIGZv
cktleTpOU0FjY2Vzc2liaWxpdHlUZXh0Q2hhbmdlVmFsdWVTdGFydE1hcmtlcl07CiB9CiAKIHRl
bXBsYXRlIDx0eXBlbmFtZSBUZXh0TWFya2VyVGFyZ2V0VHlwZT4KQEAgLTU5NywxNiArNTk3LDE2
IEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6cGxhdGZvcm1QZXJmb3JtRGVmZXJyZWRDYWNoZVVwZGF0
ZSgpCiAvLyBUZXh0TWFya2VyIGFuZCBUZXh0TWFya2VyUmFuZ2UgZnVuY3N0aW9ucy4KIC8vIEZJ
WE1FOiBUZXh0TWFya2VyIGFuZCBUZXh0TWFya2VyUmFuZ2Ugc2hvdWxkIGJlY29tZSBjbGFzc2Vz
IHdyYXBwaW5nIHRoZSBzeXN0ZW0gb2JqZWN0cy4KIAotc3RhdGljIEFYVGV4dE1hcmtlclJhbmdl
UmVmIEFYVGV4dE1hcmtlclJhbmdlKEFYVGV4dE1hcmtlclJlZiBzdGFydE1hcmtlciwgQVhUZXh0
TWFya2VyUmVmIGVuZE1hcmtlcikKK3N0YXRpYyBSZXRhaW5QdHI8QVhUZXh0TWFya2VyUmFuZ2VS
ZWY+IEFYVGV4dE1hcmtlclJhbmdlKEFYVGV4dE1hcmtlclJlZiBzdGFydE1hcmtlciwgQVhUZXh0
TWFya2VyUmVmIGVuZE1hcmtlcikKIHsKICAgICBBU1NFUlQoc3RhcnRNYXJrZXIpOwogICAgIEFT
U0VSVChlbmRNYXJrZXIpOwogICAgIEFTU0VSVChDRkdldFR5cGVJRCgoX19icmlkZ2UgQ0ZUeXBl
UmVmKXN0YXJ0TWFya2VyKSA9PSBBWFRleHRNYXJrZXJHZXRUeXBlSUQoKSk7CiAgICAgQVNTRVJU
KENGR2V0VHlwZUlEKChfX2JyaWRnZSBDRlR5cGVSZWYpZW5kTWFya2VyKSA9PSBBWFRleHRNYXJr
ZXJHZXRUeXBlSUQoKSk7Ci0gICAgcmV0dXJuIChBWFRleHRNYXJrZXJSYW5nZVJlZilDRkJyaWRn
aW5nUmVsZWFzZShBWFRleHRNYXJrZXJSYW5nZUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBz
dGFydE1hcmtlciwgZW5kTWFya2VyKSk7CisgICAgcmV0dXJuIGFkb3B0Q0YoQVhUZXh0TWFya2Vy
UmFuZ2VDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgc3RhcnRNYXJrZXIsIGVuZE1hcmtlcikp
OwogfQogCi1zdGF0aWMgQVhUZXh0TWFya2VyUmFuZ2VSZWYgdGV4dE1hcmtlclJhbmdlRnJvbU1h
cmtlcnMoQVhUZXh0TWFya2VyUmVmIHRleHRNYXJrZXIxLCBBWFRleHRNYXJrZXJSZWYgdGV4dE1h
cmtlcjIpCitzdGF0aWMgUmV0YWluUHRyPEFYVGV4dE1hcmtlclJhbmdlUmVmPiB0ZXh0TWFya2Vy
UmFuZ2VGcm9tTWFya2VycyhBWFRleHRNYXJrZXJSZWYgdGV4dE1hcmtlcjEsIEFYVGV4dE1hcmtl
clJlZiB0ZXh0TWFya2VyMikKIHsKICAgICBpZiAoIXRleHRNYXJrZXIxIHx8ICF0ZXh0TWFya2Vy
MikKICAgICAgICAgcmV0dXJuIG5pbDsKQEAgLTYxNCwxOCArNjE0LDE4IEBAIHN0YXRpYyBBWFRl
eHRNYXJrZXJSYW5nZVJlZiB0ZXh0TWFya2VyUmFuZ2VGcm9tTWFya2VycyhBWFRleHRNYXJrZXJS
ZWYgdGV4dE1hcmtlCiAgICAgcmV0dXJuIEFYVGV4dE1hcmtlclJhbmdlKHRleHRNYXJrZXIxLCB0
ZXh0TWFya2VyMik7CiB9CiAKLXN0YXRpYyBBWFRleHRNYXJrZXJSZWYgQVhUZXh0TWFya2VyUmFu
Z2VTdGFydChBWFRleHRNYXJrZXJSYW5nZVJlZiB0ZXh0TWFya2VyUmFuZ2UpCitzdGF0aWMgUmV0
YWluUHRyPEFYVGV4dE1hcmtlclJlZj4gQVhUZXh0TWFya2VyUmFuZ2VTdGFydChBWFRleHRNYXJr
ZXJSYW5nZVJlZiB0ZXh0TWFya2VyUmFuZ2UpCiB7CiAgICAgQVNTRVJUKHRleHRNYXJrZXJSYW5n
ZSk7CiAgICAgQVNTRVJUKENGR2V0VHlwZUlEKChfX2JyaWRnZSBDRlR5cGVSZWYpdGV4dE1hcmtl
clJhbmdlKSA9PSBBWFRleHRNYXJrZXJSYW5nZUdldFR5cGVJRCgpKTsKLSAgICByZXR1cm4gKEFY
VGV4dE1hcmtlclJlZilDRkJyaWRnaW5nUmVsZWFzZShBWFRleHRNYXJrZXJSYW5nZUNvcHlTdGFy
dE1hcmtlcih0ZXh0TWFya2VyUmFuZ2UpKTsKKyAgICByZXR1cm4gYWRvcHRDRihBWFRleHRNYXJr
ZXJSYW5nZUNvcHlTdGFydE1hcmtlcih0ZXh0TWFya2VyUmFuZ2UpKTsKIH0KIAotc3RhdGljIEFY
VGV4dE1hcmtlclJlZiBBWFRleHRNYXJrZXJSYW5nZUVuZChBWFRleHRNYXJrZXJSYW5nZVJlZiB0
ZXh0TWFya2VyUmFuZ2UpCitzdGF0aWMgUmV0YWluUHRyPEFYVGV4dE1hcmtlclJlZj4gQVhUZXh0
TWFya2VyUmFuZ2VFbmQoQVhUZXh0TWFya2VyUmFuZ2VSZWYgdGV4dE1hcmtlclJhbmdlKQogewog
ICAgIEFTU0VSVCh0ZXh0TWFya2VyUmFuZ2UpOwogICAgIEFTU0VSVChDRkdldFR5cGVJRCgoX19i
cmlkZ2UgQ0ZUeXBlUmVmKXRleHRNYXJrZXJSYW5nZSkgPT0gQVhUZXh0TWFya2VyUmFuZ2VHZXRU
eXBlSUQoKSk7Ci0gICAgcmV0dXJuIChBWFRleHRNYXJrZXJSZWYpQ0ZCcmlkZ2luZ1JlbGVhc2Uo
QVhUZXh0TWFya2VyUmFuZ2VDb3B5RW5kTWFya2VyKHRleHRNYXJrZXJSYW5nZSkpOworICAgIHJl
dHVybiBhZG9wdENGKEFYVGV4dE1hcmtlclJhbmdlQ29weUVuZE1hcmtlcih0ZXh0TWFya2VyUmFu
Z2UpKTsKIH0KIAogc3RhdGljIFRleHRNYXJrZXJEYXRhIGdldEJ5dGVzRnJvbUFYVGV4dE1hcmtl
cihBWFRleHRNYXJrZXJSZWYgdGV4dE1hcmtlcikKQEAgLTY3MSw3ICs2NzEsNyBAQCBBWFRleHRN
YXJrZXJSZWYgdGV4dE1hcmtlckZvclZpc2libGVQb3NpdGlvbihBWE9iamVjdENhY2hlKiBjYWNo
ZSwgY29uc3QgVmlzaWJsZQogICAgIGlmICghdGV4dE1hcmtlckRhdGEpCiAgICAgICAgIHJldHVy
biBuaWw7CiAKLSAgICByZXR1cm4gKEFYVGV4dE1hcmtlclJlZilDRkJyaWRnaW5nUmVsZWFzZShB
WFRleHRNYXJrZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgKGNvbnN0IFVJbnQ4KikmdGV4
dE1hcmtlckRhdGEudmFsdWUoKSwgc2l6ZW9mKHRleHRNYXJrZXJEYXRhLnZhbHVlKCkpKSk7Cisg
ICAgcmV0dXJuIGFkb3B0Q0YoQVhUZXh0TWFya2VyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQs
IChjb25zdCBVSW50OCopJnRleHRNYXJrZXJEYXRhLnZhbHVlKCksIHNpemVvZih0ZXh0TWFya2Vy
RGF0YS52YWx1ZSgpKSkpLmF1dG9yZWxlYXNlKCk7CiB9CiAKIFZpc2libGVQb3NpdGlvbiB2aXNp
YmxlUG9zaXRpb25Gb3JUZXh0TWFya2VyKEFYT2JqZWN0Q2FjaGUqIGNhY2hlLCBBWFRleHRNYXJr
ZXJSZWYgdGV4dE1hcmtlcikKQEAgLTY5NCw3ICs2OTQsNyBAQCBBWFRleHRNYXJrZXJSYW5nZVJl
ZiB0ZXh0TWFya2VyUmFuZ2VGcm9tVmlzaWJsZVBvc2l0aW9ucyhBWE9iamVjdENhY2hlKiBjYWNo
ZSwgYwogCiAgICAgYXV0byBzdGFydFRleHRNYXJrZXIgPSB0ZXh0TWFya2VyRm9yVmlzaWJsZVBv
c2l0aW9uKGNhY2hlLCBzdGFydFBvc2l0aW9uKTsKICAgICBhdXRvIGVuZFRleHRNYXJrZXIgPSB0
ZXh0TWFya2VyRm9yVmlzaWJsZVBvc2l0aW9uKGNhY2hlLCBlbmRQb3NpdGlvbik7Ci0gICAgcmV0
dXJuIHRleHRNYXJrZXJSYW5nZUZyb21NYXJrZXJzKHN0YXJ0VGV4dE1hcmtlciwgZW5kVGV4dE1h
cmtlcik7CisgICAgcmV0dXJuIHRleHRNYXJrZXJSYW5nZUZyb21NYXJrZXJzKHN0YXJ0VGV4dE1h
cmtlciwgZW5kVGV4dE1hcmtlcikuYXV0b3JlbGVhc2UoKTsKIH0KIAogVmlzaWJsZVBvc2l0aW9u
UmFuZ2UgdmlzaWJsZVBvc2l0aW9uUmFuZ2VGb3JUZXh0TWFya2VyUmFuZ2UoQVhPYmplY3RDYWNo
ZSogY2FjaGUsIEFYVGV4dE1hcmtlclJhbmdlUmVmIHRleHRNYXJrZXJSYW5nZSkKQEAgLTcwMiw4
ICs3MDIsOCBAQCBWaXNpYmxlUG9zaXRpb25SYW5nZSB2aXNpYmxlUG9zaXRpb25SYW5nZUZvclRl
eHRNYXJrZXJSYW5nZShBWE9iamVjdENhY2hlKiBjYWNoZQogICAgIEFTU0VSVChpc01haW5UaHJl
YWQoKSk7CiAKICAgICByZXR1cm4gewotICAgICAgICB2aXNpYmxlUG9zaXRpb25Gb3JUZXh0TWFy
a2VyKGNhY2hlLCBBWFRleHRNYXJrZXJSYW5nZVN0YXJ0KHRleHRNYXJrZXJSYW5nZSkpLAotICAg
ICAgICB2aXNpYmxlUG9zaXRpb25Gb3JUZXh0TWFya2VyKGNhY2hlLCBBWFRleHRNYXJrZXJSYW5n
ZUVuZCh0ZXh0TWFya2VyUmFuZ2UpKQorICAgICAgICB2aXNpYmxlUG9zaXRpb25Gb3JUZXh0TWFy
a2VyKGNhY2hlLCBBWFRleHRNYXJrZXJSYW5nZVN0YXJ0KHRleHRNYXJrZXJSYW5nZSkuZ2V0KCkp
LAorICAgICAgICB2aXNpYmxlUG9zaXRpb25Gb3JUZXh0TWFya2VyKGNhY2hlLCBBWFRleHRNYXJr
ZXJSYW5nZUVuZCh0ZXh0TWFya2VyUmFuZ2UpLmdldCgpKQogICAgIH07CiB9CiAKQEAgLTcyMSw3
ICs3MjEsNyBAQCBBWFRleHRNYXJrZXJSZWYgdGV4dE1hcmtlckZvckNoYXJhY3Rlck9mZnNldChB
WE9iamVjdENhY2hlKiBjYWNoZSwgY29uc3QgQ2hhcmFjdAogICAgIGlmICghdGV4dE1hcmtlckRh
dGEuYXhJRCB8fCB0ZXh0TWFya2VyRGF0YS5pZ25vcmVkKQogICAgICAgICByZXR1cm4gbmlsOwog
Ci0gICAgcmV0dXJuIChBWFRleHRNYXJrZXJSZWYpQ0ZCcmlkZ2luZ1JlbGVhc2UoQVhUZXh0TWFy
a2VyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIChjb25zdCBVSW50OCopJnRleHRNYXJrZXJE
YXRhLCBzaXplb2YodGV4dE1hcmtlckRhdGEpKSk7CisgICAgcmV0dXJuIGFkb3B0Q0YoQVhUZXh0
TWFya2VyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIChjb25zdCBVSW50OCopJnRleHRNYXJr
ZXJEYXRhLCBzaXplb2YodGV4dE1hcmtlckRhdGEpKSkuYXV0b3JlbGVhc2UoKTsKIH0KIAogQ2hh
cmFjdGVyT2Zmc2V0IGNoYXJhY3Rlck9mZnNldEZvclRleHRNYXJrZXIoQVhPYmplY3RDYWNoZSog
Y2FjaGUsIEFYVGV4dE1hcmtlclJlZiB0ZXh0TWFya2VyKQpAQCAtNzQ3LDcgKzc0Nyw3IEBAIEFY
VGV4dE1hcmtlclJlZiBzdGFydE9yRW5kVGV4dE1hcmtlckZvclJhbmdlKEFYT2JqZWN0Q2FjaGUq
IGNhY2hlLCBjb25zdCBPcHRpb25hCiAgICAgaWYgKCF0ZXh0TWFya2VyRGF0YS5heElEKQogICAg
ICAgICByZXR1cm4gbmlsOwogCi0gICAgcmV0dXJuIChBWFRleHRNYXJrZXJSZWYpQ0ZCcmlkZ2lu
Z1JlbGVhc2UoQVhUZXh0TWFya2VyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIChjb25zdCBV
SW50OCopJnRleHRNYXJrZXJEYXRhLCBzaXplb2YodGV4dE1hcmtlckRhdGEpKSk7CisgICAgcmV0
dXJuIGFkb3B0Q0YoQVhUZXh0TWFya2VyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIChjb25z
dCBVSW50OCopJnRleHRNYXJrZXJEYXRhLCBzaXplb2YodGV4dE1hcmtlckRhdGEpKSkuYXV0b3Jl
bGVhc2UoKTsKIH0KIAogQVhUZXh0TWFya2VyUmFuZ2VSZWYgdGV4dE1hcmtlclJhbmdlRnJvbVJh
bmdlKEFYT2JqZWN0Q2FjaGUqIGNhY2hlLCBjb25zdCBPcHRpb25hbDxTaW1wbGVSYW5nZT4mIHJh
bmdlKQpAQCAtNzU4LDcgKzc1OCw3IEBAIEFYVGV4dE1hcmtlclJhbmdlUmVmIHRleHRNYXJrZXJS
YW5nZUZyb21SYW5nZShBWE9iamVjdENhY2hlKiBjYWNoZSwgY29uc3QgT3B0aW9uCiAKICAgICBh
dXRvIHN0YXJ0VGV4dE1hcmtlciA9IHN0YXJ0T3JFbmRUZXh0TWFya2VyRm9yUmFuZ2UoY2FjaGUs
IHJhbmdlLCB0cnVlKTsKICAgICBhdXRvIGVuZFRleHRNYXJrZXIgPSBzdGFydE9yRW5kVGV4dE1h
cmtlckZvclJhbmdlKGNhY2hlLCByYW5nZSwgZmFsc2UpOwotICAgIHJldHVybiB0ZXh0TWFya2Vy
UmFuZ2VGcm9tTWFya2VycyhzdGFydFRleHRNYXJrZXIsIGVuZFRleHRNYXJrZXIpOworICAgIHJl
dHVybiB0ZXh0TWFya2VyUmFuZ2VGcm9tTWFya2VycyhzdGFydFRleHRNYXJrZXIsIGVuZFRleHRN
YXJrZXIpLmF1dG9yZWxlYXNlKCk7CiB9CiAKIE9wdGlvbmFsPFNpbXBsZVJhbmdlPiByYW5nZUZv
clRleHRNYXJrZXJSYW5nZShBWE9iamVjdENhY2hlKiBjYWNoZSwgQVhUZXh0TWFya2VyUmFuZ2VS
ZWYgdGV4dE1hcmtlclJhbmdlKQpAQCAtNzcyLDggKzc3Miw4IEBAIE9wdGlvbmFsPFNpbXBsZVJh
bmdlPiByYW5nZUZvclRleHRNYXJrZXJSYW5nZShBWE9iamVjdENhY2hlKiBjYWNoZSwgQVhUZXh0
TWFya2VyCiAgICAgaWYgKCFzdGFydFRleHRNYXJrZXIgfHwgIWVuZFRleHRNYXJrZXIpCiAgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKLSAgICBDaGFyYWN0ZXJPZmZzZXQgc3RhcnRDaGFy
YWN0ZXJPZmZzZXQgPSBjaGFyYWN0ZXJPZmZzZXRGb3JUZXh0TWFya2VyKGNhY2hlLCBzdGFydFRl
eHRNYXJrZXIpOwotICAgIENoYXJhY3Rlck9mZnNldCBlbmRDaGFyYWN0ZXJPZmZzZXQgPSBjaGFy
YWN0ZXJPZmZzZXRGb3JUZXh0TWFya2VyKGNhY2hlLCBlbmRUZXh0TWFya2VyKTsKKyAgICBDaGFy
YWN0ZXJPZmZzZXQgc3RhcnRDaGFyYWN0ZXJPZmZzZXQgPSBjaGFyYWN0ZXJPZmZzZXRGb3JUZXh0
TWFya2VyKGNhY2hlLCBzdGFydFRleHRNYXJrZXIuZ2V0KCkpOworICAgIENoYXJhY3Rlck9mZnNl
dCBlbmRDaGFyYWN0ZXJPZmZzZXQgPSBjaGFyYWN0ZXJPZmZzZXRGb3JUZXh0TWFya2VyKGNhY2hl
LCBlbmRUZXh0TWFya2VyLmdldCgpKTsKICAgICByZXR1cm4gY2FjaGUtPnJhbmdlRm9yVW5vcmRl
cmVkQ2hhcmFjdGVyT2Zmc2V0cyhzdGFydENoYXJhY3Rlck9mZnNldCwgZW5kQ2hhcmFjdGVyT2Zm
c2V0KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMv
V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlLm1tIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlLm1tCmluZGV4
IDkzMDc2ODdiN2Y4MDdkYjVhYmE0Njc3NTA4NmM0YTVjYzhkZTcwYzEuLjQ0ODU4N2RhOGJjOGI0
NTZmNWYxY2RmODNhMmJjNmVjOGI5N2I5NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0
V3JhcHBlckJhc2UubW0KQEAgLTMyNCw4ICszMjQsNyBAQCAtIChXZWJDb3JlOjpBWENvcmVPYmpl
Y3QqKXVwZGF0ZU9iamVjdEJhY2tpbmdTdG9yZQogewogICAgIC8vIENhbGxpbmcgdXBkYXRlQmFj
a2luZ1N0b3JlKCkgY2FuIGludmFsaWRhdGUgdGhpcyBlbGVtZW50IHNvIHNlbGYgbXVzdCBiZSBy
ZXRhaW5lZC4KICAgICAvLyBJZiBpdCBkb2VzIGJlY29tZSBpbnZhbGlkYXRlZCwgc2VsZi5heEJh
Y2tpbmdPYmplY3Qgd2lsbCBiZSBuaWwuCi0gICAgQ0ZSZXRhaW4oKF9fYnJpZGdlIENGVHlwZVJl
ZilzZWxmKTsKLSAgICBDRkF1dG9yZWxlYXNlKChfX2JyaWRnZSBDRlR5cGVSZWYpc2VsZik7Cisg
ICAgcmV0YWluUHRyKHNlbGYpLmF1dG9yZWxlYXNlKCk7CiAKICAgICBhdXRvKiBiYWNraW5nT2Jq
ZWN0ID0gc2VsZi5heEJhY2tpbmdPYmplY3Q7CiAgICAgaWYgKCFiYWNraW5nT2JqZWN0KQpAQCAt
NDMzLDEyICs0MzIsMTIgQEAgc3RhdGljIHZvaWQgY29udmVydFBhdGhUb1NjcmVlblNwYWNlRnVu
Y3Rpb24oUGF0aENvbnZlcnNpb25JbmZvJiBjb252ZXJzaW9uLCBjb24KIAogLSAoQ0dQYXRoUmVm
KWNvbnZlcnRQYXRoVG9TY3JlZW5TcGFjZTooY29uc3QgUGF0aCYpcGF0aAogewotICAgIFBhdGhD
b252ZXJzaW9uSW5mbyBjb252ZXJzaW9uID0geyBzZWxmLCBDR1BhdGhDcmVhdGVNdXRhYmxlKCkg
fTsKKyAgICBhdXRvIGNvbnZlcnRlZFBhdGggPSBhZG9wdENGKENHUGF0aENyZWF0ZU11dGFibGUo
KSk7CisgICAgUGF0aENvbnZlcnNpb25JbmZvIGNvbnZlcnNpb24gPSB7IHNlbGYsIGNvbnZlcnRl
ZFBhdGguZ2V0KCkgfTsKICAgICBwYXRoLmFwcGx5KFsmY29udmVyc2lvbl0oY29uc3QgUGF0aEVs
ZW1lbnQmIHBhdGhFbGVtZW50KSB7CiAgICAgICAgIGNvbnZlcnRQYXRoVG9TY3JlZW5TcGFjZUZ1
bmN0aW9uKGNvbnZlcnNpb24sIHBhdGhFbGVtZW50KTsKICAgICB9KTsKLSAgICBDRkF1dG9yZWxl
YXNlKGNvbnZlcnNpb24ucGF0aCk7Ci0gICAgcmV0dXJuIGNvbnZlcnNpb24ucGF0aDsKKyAgICBy
ZXR1cm4gY29udmVydGVkUGF0aC5hdXRvcmVsZWFzZSgpOwogfQogCiAtIChpZClfYWNjZXNzaWJp
bGl0eVdlYkRvY3VtZW50VmlldwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMuaCBiL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLmgK
aW5kZXggMDdiYjhlNTFlYzEyYzhiZWIyYTM4ZmJiNjAwZjE2NTdkYzU1Nzc5ZC4uYjMwNTI1NGM0
NWE4ZTdhZmIzN2MwNzk0ZDg4ZWE5OWM4NzM0MTEyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2Jq
ZWN0V3JhcHBlck1hYy5oCkBAIC0zMSw2ICszMSw3IEBACiAjaWYgUExBVEZPUk0oTUFDKQogCiAj
aW1wb3J0IDxwYWwvc3BpL21hYy9ISVNlcnZpY2VzU1BJLmg+CisjaW1wb3J0IDx3dGYvUmV0YWlu
UHRyLmg+CiAKICNpZm5kZWYgTlNBY2Nlc3NpYmlsaXR5UHJpbWFyeVNjcmVlbkhlaWdodEF0dHJp
YnV0ZQogI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlQcmltYXJ5U2NyZWVuSGVpZ2h0QXR0cmlidXRl
IEAiX0FYUHJpbWFyeVNjcmVlbkhlaWdodCIKQEAgLTQyLDcgKzQzLDcgQEAKIC8vIEluc2lkZSBX
ZWJDb3JlLCB1c2UgdGhlIFdlYkNvcmUgaG9tb255bW91cyBkZWNsYXJlZCBiZWxvdyBpbnN0ZWFk
LgogLSAoaWQpdGV4dE1hcmtlclJhbmdlRnJvbVZpc2libGVQb3NpdGlvbnM6KGNvbnN0IFdlYkNv
cmU6OlZpc2libGVQb3NpdGlvbiYpc3RhcnRQb3NpdGlvbiBlbmRQb3NpdGlvbjooY29uc3QgV2Vi
Q29yZTo6VmlzaWJsZVBvc2l0aW9uJillbmRQb3NpdGlvbjsKIC0gKGlkKXRleHRNYXJrZXJGb3JW
aXNpYmxlUG9zaXRpb246KGNvbnN0IFdlYkNvcmU6OlZpc2libGVQb3NpdGlvbiYpdmlzaWJsZVBv
czsKLS0gKGlkKXRleHRNYXJrZXJGb3JGaXJzdFBvc2l0aW9uSW5UZXh0Q29udHJvbDooV2ViQ29y
ZTo6SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQmKXRleHRDb250cm9sOworLSAoUmV0YWluUHRy
PEFYVGV4dE1hcmtlclJlZj4pdGV4dE1hcmtlckZvckZpcnN0UG9zaXRpb25JblRleHRDb250cm9s
OihXZWJDb3JlOjpIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudCYpdGV4dENvbnRyb2w7CiAKIC8v
IFdoZW4gYSBwbHVnaW4gdXNlcyBhIFdlYktpdCBjb250cm9sIHRvIGFjdCBhcyBhIHN1cnJvZ2F0
ZSB2aWV3IChlLmcuIFBERiB1c2UgV2ViS2l0IHRvIGNyZWF0ZSB0ZXh0IGZpZWxkcykuCiAtIChp
ZClhc3NvY2lhdGVkUGx1Z2luUGFyZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBl
ck1hYy5tbQppbmRleCA4M2VmMjRjMTU4YWU3MGMzNjI0ZjkzNTNjNzY5ZmRlMGNjMjc1NjZlLi5j
M2EwN2U2YWNhMmZjOTRkZWQ3OTQ0MWNjZDBkNWY2ZmJiZDAzOTFiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBl
ck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3Np
YmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQpAQCAtNzMzLDcgKzczMyw3IEBAIHN0YXRpYyBzdGQ6
OnBhaXI8T3B0aW9uYWw8U2ltcGxlUmFuZ2U+LCBBY2Nlc3NpYmlsaXR5U2VhcmNoRGlyZWN0aW9u
PiBhY2Nlc3NpYmlsCiAKICNwcmFnbWEgbWFyayBUZXh0IE1hcmtlciBoZWxwZXJzCiAKLXN0YXRp
YyBpZCBuZXh0VGV4dE1hcmtlckZvckNoYXJhY3Rlck9mZnNldChBWE9iamVjdENhY2hlKiBjYWNo
ZSwgQ2hhcmFjdGVyT2Zmc2V0JiBjaGFyYWN0ZXJPZmZzZXQpCitzdGF0aWMgUmV0YWluUHRyPEFY
VGV4dE1hcmtlclJlZj4gbmV4dFRleHRNYXJrZXJGb3JDaGFyYWN0ZXJPZmZzZXQoQVhPYmplY3RD
YWNoZSogY2FjaGUsIENoYXJhY3Rlck9mZnNldCYgY2hhcmFjdGVyT2Zmc2V0KQogewogICAgIGlm
ICghY2FjaGUpCiAgICAgICAgIHJldHVybiBuaWw7CkBAIC03NDIsMTAgKzc0MiwxMCBAQCBzdGF0
aWMgaWQgbmV4dFRleHRNYXJrZXJGb3JDaGFyYWN0ZXJPZmZzZXQoQVhPYmplY3RDYWNoZSogY2Fj
aGUsIENoYXJhY3Rlck9mZnNldAogICAgIGNhY2hlLT50ZXh0TWFya2VyRGF0YUZvck5leHRDaGFy
YWN0ZXJPZmZzZXQodGV4dE1hcmtlckRhdGEsIGNoYXJhY3Rlck9mZnNldCk7CiAgICAgaWYgKCF0
ZXh0TWFya2VyRGF0YS5heElEKQogICAgICAgICByZXR1cm4gbmlsOwotICAgIHJldHVybiBDRkJy
aWRnaW5nUmVsZWFzZShBWFRleHRNYXJrZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgKGNv
bnN0IFVJbnQ4KikmdGV4dE1hcmtlckRhdGEsIHNpemVvZih0ZXh0TWFya2VyRGF0YSkpKTsKKyAg
ICByZXR1cm4gYWRvcHRDRihBWFRleHRNYXJrZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwg
KGNvbnN0IFVJbnQ4KikmdGV4dE1hcmtlckRhdGEsIHNpemVvZih0ZXh0TWFya2VyRGF0YSkpKTsK
IH0KIAotc3RhdGljIGlkIHByZXZpb3VzVGV4dE1hcmtlckZvckNoYXJhY3Rlck9mZnNldChBWE9i
amVjdENhY2hlKiBjYWNoZSwgQ2hhcmFjdGVyT2Zmc2V0JiBjaGFyYWN0ZXJPZmZzZXQpCitzdGF0
aWMgUmV0YWluUHRyPEFYVGV4dE1hcmtlclJlZj4gcHJldmlvdXNUZXh0TWFya2VyRm9yQ2hhcmFj
dGVyT2Zmc2V0KEFYT2JqZWN0Q2FjaGUqIGNhY2hlLCBDaGFyYWN0ZXJPZmZzZXQmIGNoYXJhY3Rl
ck9mZnNldCkKIHsKICAgICBpZiAoIWNhY2hlKQogICAgICAgICByZXR1cm4gbmlsOwpAQCAtNzU0
LDE1ICs3NTQsMTUgQEAgc3RhdGljIGlkIHByZXZpb3VzVGV4dE1hcmtlckZvckNoYXJhY3Rlck9m
ZnNldChBWE9iamVjdENhY2hlKiBjYWNoZSwgQ2hhcmFjdGVyT2YKICAgICBjYWNoZS0+dGV4dE1h
cmtlckRhdGFGb3JQcmV2aW91c0NoYXJhY3Rlck9mZnNldCh0ZXh0TWFya2VyRGF0YSwgY2hhcmFj
dGVyT2Zmc2V0KTsKICAgICBpZiAoIXRleHRNYXJrZXJEYXRhLmF4SUQpCiAgICAgICAgIHJldHVy
biBuaWw7Ci0gICAgcmV0dXJuIENGQnJpZGdpbmdSZWxlYXNlKEFYVGV4dE1hcmtlckNyZWF0ZShr
Q0ZBbGxvY2F0b3JEZWZhdWx0LCAoY29uc3QgVUludDgqKSZ0ZXh0TWFya2VyRGF0YSwgc2l6ZW9m
KHRleHRNYXJrZXJEYXRhKSkpOworICAgIHJldHVybiBhZG9wdENGKEFYVGV4dE1hcmtlckNyZWF0
ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAoY29uc3QgVUludDgqKSZ0ZXh0TWFya2VyRGF0YSwgc2l6
ZW9mKHRleHRNYXJrZXJEYXRhKSkpOwogfQogCi0tIChpZCluZXh0VGV4dE1hcmtlckZvckNoYXJh
Y3Rlck9mZnNldDooQ2hhcmFjdGVyT2Zmc2V0JiljaGFyYWN0ZXJPZmZzZXQKKy0gKFJldGFpblB0
cjxBWFRleHRNYXJrZXJSZWY+KW5leHRUZXh0TWFya2VyRm9yQ2hhcmFjdGVyT2Zmc2V0OihDaGFy
YWN0ZXJPZmZzZXQmKWNoYXJhY3Rlck9mZnNldAogewogICAgIHJldHVybiBuZXh0VGV4dE1hcmtl
ckZvckNoYXJhY3Rlck9mZnNldChzZWxmLmF4QmFja2luZ09iamVjdC0+YXhPYmplY3RDYWNoZSgp
LCBjaGFyYWN0ZXJPZmZzZXQpOwogfQogCi0tIChpZClwcmV2aW91c1RleHRNYXJrZXJGb3JDaGFy
YWN0ZXJPZmZzZXQ6KENoYXJhY3Rlck9mZnNldCYpY2hhcmFjdGVyT2Zmc2V0CistIChSZXRhaW5Q
dHI8QVhUZXh0TWFya2VyUmVmPilwcmV2aW91c1RleHRNYXJrZXJGb3JDaGFyYWN0ZXJPZmZzZXQ6
KENoYXJhY3Rlck9mZnNldCYpY2hhcmFjdGVyT2Zmc2V0CiB7CiAgICAgcmV0dXJuIHByZXZpb3Vz
VGV4dE1hcmtlckZvckNoYXJhY3Rlck9mZnNldChzZWxmLmF4QmFja2luZ09iamVjdC0+YXhPYmpl
Y3RDYWNoZSgpLCBjaGFyYWN0ZXJPZmZzZXQpOwogfQpAQCAtNzc2LDcgKzc3Niw3IEBAIC0gKGlk
KXRleHRNYXJrZXJGb3JWaXNpYmxlUG9zaXRpb246KGNvbnN0IFZpc2libGVQb3NpdGlvbiYpcG9z
aXRpb24KICAgICByZXR1cm4gYmFja2luZ09iamVjdCA/IChpZCl0ZXh0TWFya2VyRm9yVmlzaWJs
ZVBvc2l0aW9uKGJhY2tpbmdPYmplY3QtPmF4T2JqZWN0Q2FjaGUoKSwgcG9zaXRpb24pIDogbmls
OwogfQogCi0tIChpZCl0ZXh0TWFya2VyRm9yRmlyc3RQb3NpdGlvbkluVGV4dENvbnRyb2w6KEhU
TUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50ICYpdGV4dENvbnRyb2wKKy0gKFJldGFpblB0cjxBWFRl
eHRNYXJrZXJSZWY+KXRleHRNYXJrZXJGb3JGaXJzdFBvc2l0aW9uSW5UZXh0Q29udHJvbDooSFRN
TFRleHRGb3JtQ29udHJvbEVsZW1lbnQgJil0ZXh0Q29udHJvbAogewogICAgIEFTU0VSVChpc01h
aW5UaHJlYWQoKSk7CiAKQEAgLTc5Miw3ICs3OTIsNyBAQCAtIChpZCl0ZXh0TWFya2VyRm9yRmly
c3RQb3NpdGlvbkluVGV4dENvbnRyb2w6KEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50ICYpdGV4
dAogICAgIGlmICghdGV4dE1hcmtlckRhdGEpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBy
ZXR1cm4gQ0ZCcmlkZ2luZ1JlbGVhc2UoQVhUZXh0TWFya2VyQ3JlYXRlKGtDRkFsbG9jYXRvckRl
ZmF1bHQsIChjb25zdCBVSW50OCopJnRleHRNYXJrZXJEYXRhLnZhbHVlKCksIHNpemVvZih0ZXh0
TWFya2VyRGF0YS52YWx1ZSgpKSkpOworICAgIHJldHVybiBhZG9wdENGKEFYVGV4dE1hcmtlckNy
ZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAoY29uc3QgVUludDgqKSZ0ZXh0TWFya2VyRGF0YS52
YWx1ZSgpLCBzaXplb2YodGV4dE1hcmtlckRhdGEudmFsdWUoKSkpKTsKIH0KIAogLy8gV2hlbiBt
b2RpZnlpbmcgYXR0cmlidXRlZCBzdHJpbmdzLCB0aGUgcmFuZ2UgY2FuIGNvbWUgZnJvbSBhIHNv
dXJjZSB3aGljaCBtYXkgcHJvdmlkZSBmYXVsdHkgaW5mb3JtYXRpb24gKGUuZy4gdGhlIHNwZWxs
IGNoZWNrZXIpLgpAQCAtMTAxOCwxMSArMTAxOCw4IEBAIHN0YXRpYyB2b2lkIEFYQXR0cmlidXRl
U3RyaW5nU2V0RWxlbWVudChOU011dGFibGVBdHRyaWJ1dGVkU3RyaW5nKiBhdHRyU3RyaW5nLCBO
CiAgICAgICAgIGlmIChbYXR0cmlidXRlIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlB
dHRhY2htZW50VGV4dEF0dHJpYnV0ZV0gJiYgb2JqZWN0LT5pc0F0dGFjaG1lbnQoKSAmJiBbb2Jq
ZWN0V3JhcHBlciBhdHRhY2htZW50Vmlld10pCiAgICAgICAgICAgICBvYmplY3RXcmFwcGVyID0g
W29iamVjdFdyYXBwZXIgYXR0YWNobWVudFZpZXddOwogICAgICAgICAKLSAgICAgICAgQVhVSUVs
ZW1lbnRSZWYgYXhFbGVtZW50ID0gTlNBY2Nlc3NpYmlsaXR5Q3JlYXRlQVhVSUVsZW1lbnRSZWYo
b2JqZWN0V3JhcHBlcik7Ci0gICAgICAgIGlmIChheEVsZW1lbnQpIHsKLSAgICAgICAgICAgIFth
dHRyU3RyaW5nIGFkZEF0dHJpYnV0ZTphdHRyaWJ1dGUgdmFsdWU6KF9fYnJpZGdlIGlkKWF4RWxl
bWVudCByYW5nZTpyYW5nZV07Ci0gICAgICAgICAgICBDRlJlbGVhc2UoYXhFbGVtZW50KTsKLSAg
ICAgICAgfQorICAgICAgICBpZiAoYXV0byBheEVsZW1lbnQgPSBhZG9wdENGKE5TQWNjZXNzaWJp
bGl0eUNyZWF0ZUFYVUlFbGVtZW50UmVmKG9iamVjdFdyYXBwZXIpKSkKKyAgICAgICAgICAgIFth
dHRyU3RyaW5nIGFkZEF0dHJpYnV0ZTphdHRyaWJ1dGUgdmFsdWU6KF9fYnJpZGdlIGlkKWF4RWxl
bWVudC5nZXQoKSByYW5nZTpyYW5nZV07CiAgICAgfSBlbHNlCiAgICAgICAgIFthdHRyU3RyaW5n
IHJlbW92ZUF0dHJpYnV0ZTphdHRyaWJ1dGUgcmFuZ2U6cmFuZ2VdOwogfQpAQCAtNDA5OSw3ICs0
MDk2LDcgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiAgICAgICAgICAg
ICAgICAgcmV0dXJuIG5pbDsKIAogICAgICAgICAgICAgQ2hhcmFjdGVyT2Zmc2V0IGNoYXJhY3Rl
ck9mZnNldCA9IGNoYXJhY3Rlck9mZnNldEZvclRleHRNYXJrZXIoY2FjaGUsIHRleHRNYXJrZXIp
OwotICAgICAgICAgICAgcmV0dXJuIFtwcm90ZWN0ZWRTZWxmIG5leHRUZXh0TWFya2VyRm9yQ2hh
cmFjdGVyT2Zmc2V0OmNoYXJhY3Rlck9mZnNldF07CisgICAgICAgICAgICByZXR1cm4gW3Byb3Rl
Y3RlZFNlbGYgbmV4dFRleHRNYXJrZXJGb3JDaGFyYWN0ZXJPZmZzZXQ6Y2hhcmFjdGVyT2Zmc2V0
XS5icmlkZ2luZ0F1dG9yZWxlYXNlKCk7CiAgICAgICAgIH0pOwogICAgIH0KIApAQCAtNDExNCw3
ICs0MTExLDcgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiAgICAgICAg
ICAgICAgICAgcmV0dXJuIG5pbDsKIAogICAgICAgICAgICAgQ2hhcmFjdGVyT2Zmc2V0IGNoYXJh
Y3Rlck9mZnNldCA9IGNoYXJhY3Rlck9mZnNldEZvclRleHRNYXJrZXIoY2FjaGUsIHRleHRNYXJr
ZXIpOwotICAgICAgICAgICAgcmV0dXJuIFtwcm90ZWN0ZWRTZWxmIHByZXZpb3VzVGV4dE1hcmtl
ckZvckNoYXJhY3Rlck9mZnNldDpjaGFyYWN0ZXJPZmZzZXRdOworICAgICAgICAgICAgcmV0dXJu
IFtwcm90ZWN0ZWRTZWxmIHByZXZpb3VzVGV4dE1hcmtlckZvckNoYXJhY3Rlck9mZnNldDpjaGFy
YWN0ZXJPZmZzZXRdLmJyaWRnaW5nQXV0b3JlbGVhc2UoKTsKICAgICAgICAgfSk7CiAgICAgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW0KaW5kZXgg
NjVlODU1MjUyNTBkNDBiYWMwYzNmMzg1NmI3ODM5ODM2MGMwYjkyNC4uOGNhZmE3YzM2ZTZkZDYw
NTA5Mjc3ZGUwYWNmZDJjMDMxNTY4ZDBjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
Y29jb2EvSFRNTENvbnZlcnRlci5tbQpAQCAtMjA5MCw3ICsyMDkwLDYgQEAgdm9pZCBIVE1MQ29u
dmVydGVyOjpfcHJvY2Vzc1RleHQoQ2hhcmFjdGVyRGF0YSYgY2hhcmFjdGVyRGF0YSkKICAgICB1
bmljaGFyIGxhc3RDaGFyID0gKHRleHRMZW5ndGggPiAwKSA/IFtbX2F0dHJTdHIgc3RyaW5nXSBj
aGFyYWN0ZXJBdEluZGV4OnRleHRMZW5ndGggLSAxXSA6ICdcbic7CiAgICAgQk9PTCBzdXBwcmVz
c0xlYWRpbmdTcGFjZSA9ICgoX2ZsYWdzLmlzU29mdCAmJiBsYXN0Q2hhciA9PSAnICcpIHx8IGxh
c3RDaGFyID09ICdcbicgfHwgbGFzdENoYXIgPT0gJ1xyJyB8fCBsYXN0Q2hhciA9PSAnXHQnIHx8
IGxhc3RDaGFyID09IE5TUGFyYWdyYXBoU2VwYXJhdG9yQ2hhcmFjdGVyIHx8IGxhc3RDaGFyID09
IE5TTGluZVNlcGFyYXRvckNoYXJhY3RlciB8fCBsYXN0Q2hhciA9PSBOU0Zvcm1GZWVkQ2hhcmFj
dGVyIHx8IGxhc3RDaGFyID09IFdlYk5leHRMaW5lQ2hhcmFjdGVyKTsKICAgICBOU1JhbmdlIHJh
bmdlVG9SZXBsYWNlID0gTlNNYWtlUmFuZ2UodGV4dExlbmd0aCwgMCk7Ci0gICAgQ0ZNdXRhYmxl
U3RyaW5nUmVmIG11dHN0ciA9IE5VTEw7CiAKICAgICBTdHJpbmcgb3JpZ2luYWxTdHJpbmcgPSBj
aGFyYWN0ZXJEYXRhLmRhdGEoKTsKICAgICB1bnNpZ25lZCBzdGFydE9mZnNldCA9IDA7CkBAIC0y
MTYwLDggKzIxNTksNiBAQCB2b2lkIEhUTUxDb252ZXJ0ZXI6Ol9wcm9jZXNzVGV4dChDaGFyYWN0
ZXJEYXRhJiBjaGFyYWN0ZXJEYXRhKQogICAgICAgICAgICAgW19hdHRyU3RyIHNldEF0dHJpYnV0
ZXM6YWdncmVnYXRlZEF0dHJpYnV0ZXNGb3JBbmNlc3RvcnMoY2hhcmFjdGVyRGF0YSkgcmFuZ2U6
cmFuZ2VUb1JlcGxhY2VdOwogICAgICAgICBfZmxhZ3MuaXNTb2Z0ID0gd2FzU3BhY2U7CiAgICAg
fQotICAgIGlmIChtdXRzdHIpCi0gICAgICAgIENGUmVsZWFzZShtdXRzdHIpOwogfQogCiB2b2lk
IEhUTUxDb252ZXJ0ZXI6Ol90cmF2ZXJzZU5vZGUoTm9kZSYgbm9kZSwgdW5zaWduZWQgZGVwdGgs
IGJvb2wgZW1iZWRkZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY29jb2Ev
RGlza0NhY2hlTW9uaXRvckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NvY29hL0Rp
c2tDYWNoZU1vbml0b3JDb2NvYS5tbQppbmRleCA5NmY0NmM0Y2MwMmU4OWE4MmE2ZGY2NTM2NzRk
MDk3MzQzMTgwNTRmLi5mYTRiOTAzYmVmOTM5NDgxYzIyZWE3ZGY1NTFlOGI1NWU3ZTBlNTJkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY29jb2EvRGlza0NhY2hlTW9uaXRvckNv
Y29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9y
Q29jb2EubW0KQEAgLTEwMiwxMCArMTAyLDkgQEAgRGlza0NhY2hlTW9uaXRvcjo6RGlza0NhY2hl
TW9uaXRvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFBBTDo6U2Vzc2lvbkkKIAog
I2lmIFVTRShXRUJfVEhSRUFEKQogICAgIGF1dG8gYmxvY2tUb1J1biA9IF4oQ0ZDYWNoZWRVUkxS
ZXNwb25zZVJlZiByZXNwb25zZSkgewotICAgICAgICBDRlJldGFpbihyZXNwb25zZSk7CisgICAg
ICAgIGF1dG8gc3Ryb25nUmVzcG9uc2UgPSByZXRhaW5QdHIocmVzcG9uc2UpOwogICAgICAgICBX
ZWJUaHJlYWRSdW4oXnsKLSAgICAgICAgICAgIGJsb2NrKHJlc3BvbnNlKTsKLSAgICAgICAgICAg
IENGUmVsZWFzZShyZXNwb25zZSk7CisgICAgICAgICAgICBibG9jayhzdHJvbmdSZXNwb25zZS5n
ZXQoKSk7CiAgICAgICAgIH0pOwogICAgIH07CiAjZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9tYWMvRXZlbnRIYW5kbGVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGFnZS9t
YWMvRXZlbnRIYW5kbGVyTWFjLm1tCmluZGV4IGIyNDllNGY0ZmQ5OTJiNGU2MWFlN2ZlZjkwMDA4
ZjU2OGY5MTBlOWIuLjg2NDY1ZjgwNWUyMDUzNTY4NzA2NGMyZmY3NjA0ZDViODlhNDI0N2QgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0V2ZW50SGFuZGxlck1hYy5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9FdmVudEhhbmRsZXJNYWMubW0KQEAgLTQ2OCwxMyAr
NDY4LDExIEBAIHN0YXRpYyB2b2lkIHNldE5TU2Nyb2xsVmlld1Njcm9sbFdoZWVsU2hvdWxkUmV0
YWluU2VsZihib29sIHNob3VsZFJldGFpbikKIAogc3RhdGljIHZvaWQgc2VsZlJldGFpbmluZ05T
U2Nyb2xsVmlld1Njcm9sbFdoZWVsKE5TU2Nyb2xsVmlldyAqc2VsZiwgU0VMIHNlbGVjdG9yLCBO
U0V2ZW50ICpldmVudCkKIHsKLSAgICBib29sIHNob3VsZFJldGFpblNlbGYgPSBpc01haW5UaHJl
YWQoKSAmJiBuc1Njcm9sbFZpZXdTY3JvbGxXaGVlbFNob3VsZFJldGFpblNlbGYoKTsKKyAgICBS
ZXRhaW5QdHI8TlNTY3JvbGxWaWV3PiByZXRhaW5lZFNlbGY7CisgICAgaWYgKGlzTWFpblRocmVh
ZCgpICYmIG5zU2Nyb2xsVmlld1Njcm9sbFdoZWVsU2hvdWxkUmV0YWluU2VsZigpKQorICAgICAg
ICByZXRhaW5lZFNlbGYgPSBzZWxmOwogCi0gICAgaWYgKHNob3VsZFJldGFpblNlbGYpCi0gICAg
ICAgIENGUmV0YWluKChfX2JyaWRnZSBDRlR5cGVSZWYpc2VsZik7CiAgICAgd3RmQ2FsbElNUDx2
b2lkPihvcmlnaW5hbE5TU2Nyb2xsVmlld1Njcm9sbFdoZWVsLCBzZWxmLCBzZWxlY3RvciwgZXZl
bnQpOwotICAgIGlmIChzaG91bGRSZXRhaW5TZWxmKQotICAgICAgICBDRlJlbGVhc2UoKF9fYnJp
ZGdlIENGVHlwZVJlZilzZWxmKTsKIH0KIAogYm9vbCBFdmVudEhhbmRsZXI6OnBhc3NXaGVlbEV2
ZW50VG9XaWRnZXQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50LCBXaWRnZXQm
IHdpZGdldCwgT3B0aW9uU2V0PFdoZWVsRXZlbnRQcm9jZXNzaW5nU3RlcHM+IHByb2Nlc3NpbmdT
dGVwcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvd2luL0ZyYW1lQ0dXaW4uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGFnZS93aW4vRnJhbWVDR1dpbi5jcHAKaW5kZXggZjA1NTZhM2Rh
YjJhOTI5ZmZiZGNjM2EyMGE2MTk2NzU2YjY2N2EyMS4uNzNkOGI0OWNlYTdjYTY1OGQ1NTQ2ZDNl
YjE1MjJhZDM0YzBhZWMxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS93aW4vRnJh
bWVDR1dpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS93aW4vRnJhbWVDR1dpbi5jcHAK
QEAgLTY4LDE1ICs2OCwxNCBAQCBHRElPYmplY3Q8SEJJVE1BUD4gaW1hZ2VGcm9tUmVjdChjb25z
dCBGcmFtZSogZnJhbWUsIEludFJlY3QmIGlyKQogICAgICAgICByZXR1cm4gaGJtcDsKIAogICAg
IEhHRElPQkogaGJtcE9sZCA9IFNlbGVjdE9iamVjdChoZGMuZ2V0KCksIGhibXAuZ2V0KCkpOwot
ICAgIENHQ29udGV4dFJlZiBjb250ZXh0ID0gQ0dCaXRtYXBDb250ZXh0Q3JlYXRlKHN0YXRpY19j
YXN0PHZvaWQqPihiaXRzKSwgdywgaCwKLSAgICAgICAgOCwgdyAqIHNpemVvZihSR0JRVUFEKSwg
c1JHQkNvbG9yU3BhY2VSZWYoKSwga0NHQml0bWFwQnl0ZU9yZGVyMzJMaXR0bGUgfCBrQ0dJbWFn
ZUFscGhhUHJlbXVsdGlwbGllZEZpcnN0KTsKLSAgICBDR0NvbnRleHRTYXZlR1N0YXRlKGNvbnRl
eHQpOworICAgIGF1dG8gY29udGV4dCA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlKHN0
YXRpY19jYXN0PHZvaWQqPihiaXRzKSwgdywgaCwKKyAgICAgICAgOCwgdyAqIHNpemVvZihSR0JR
VUFEKSwgc1JHQkNvbG9yU3BhY2VSZWYoKSwga0NHQml0bWFwQnl0ZU9yZGVyMzJMaXR0bGUgfCBr
Q0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZEZpcnN0KSk7CisgICAgQ0dDb250ZXh0U2F2ZUdTdGF0
ZShjb250ZXh0LmdldCgpKTsKIAotICAgIEdyYXBoaWNzQ29udGV4dCBnYyhjb250ZXh0KTsKKyAg
ICBHcmFwaGljc0NvbnRleHQgZ2MoY29udGV4dC5nZXQoKSk7CiAKICAgICBkcmF3UmVjdEludG9D
b250ZXh0KGlyLCBmcmFtZS0+dmlldygpLCBnYyk7CiAKLSAgICBDR0NvbnRleHRSZWxlYXNlKGNv
bnRleHQpOwogICAgIFNlbGVjdE9iamVjdChoZGMuZ2V0KCksIGhibXBPbGQpOwogCiAgICAgZnJh
bWUtPnZpZXcoKS0+c2V0UGFpbnRCZWhhdmlvcihvbGRQYWludEJlaGF2aW9yKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL01haW5UaHJlYWRTaGFyZWRUaW1lckNGLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL01haW5UaHJlYWRTaGFyZWRUaW1lckNGLmNw
cAppbmRleCAyOGNkOWI3M2ZlNmI4YTg4YTk0NGEyMDIwOWQ3YTdhMGUwNWUwMTA0Li41NDIwYTVh
ODU5ZmJjYmNjMDRmNWQ1Zjk4NWYwODcyYTU0MDUxM2I4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jZi9NYWluVGhyZWFkU2hhcmVkVGltZXJDRi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY2YvTWFpblRocmVhZFNoYXJlZFRpbWVyQ0YuY3BwCkBAIC0zNyw3
ICszNywxMSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBDRlJ1bkxvb3BUaW1l
clJlZiBzaGFyZWRUaW1lcjsKK3N0YXRpYyBSZXRhaW5QdHI8Q0ZSdW5Mb29wVGltZXJSZWY+JiBz
aGFyZWRUaW1lcigpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxDRlJ1
bkxvb3BUaW1lclJlZj4+IHNoYXJlZFRpbWVyOworICAgIHJldHVybiBzaGFyZWRUaW1lcjsKK30K
IHN0YXRpYyB2b2lkIHRpbWVyRmlyZWQoQ0ZSdW5Mb29wVGltZXJSZWYsIHZvaWQqKTsKIAogc3Rh
dGljIGNvbnN0IENGVGltZUludGVydmFsIGtDRlRpbWVJbnRlcnZhbERpc3RhbnRGdXR1cmUgPSBz
dGQ6Om51bWVyaWNfbGltaXRzPENGVGltZUludGVydmFsPjo6bWF4KCk7CkBAIC04Myw3ICs4Nyw3
IEBAIHN0YXRpYyB2b2lkIHRpbWVyRmlyZWQoQ0ZSdW5Mb29wVGltZXJSZWYsIHZvaWQqKQogCiB2
b2lkIE1haW5UaHJlYWRTaGFyZWRUaW1lcjo6cmVzdGFydFNoYXJlZFRpbWVyKCkKIHsKLSAgICBp
ZiAoIXNoYXJlZFRpbWVyKQorICAgIGlmICghc2hhcmVkVGltZXIoKSkKICAgICAgICAgcmV0dXJu
OwogCiAgICAgTWFpblRocmVhZFNoYXJlZFRpbWVyOjpzaW5nbGV0b24oKS5zdG9wKCk7CkBAIC05
MiwxMiArOTYsMTEgQEAgdm9pZCBNYWluVGhyZWFkU2hhcmVkVGltZXI6OnJlc3RhcnRTaGFyZWRU
aW1lcigpCiAKIHZvaWQgTWFpblRocmVhZFNoYXJlZFRpbWVyOjppbnZhbGlkYXRlKCkKIHsKLSAg
ICBpZiAoIXNoYXJlZFRpbWVyKQorICAgIGlmICghc2hhcmVkVGltZXIoKSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgQ0ZSdW5Mb29wVGltZXJJbnZhbGlkYXRlKHNoYXJlZFRpbWVyKTsKLSAgICBD
RlJlbGVhc2Uoc2hhcmVkVGltZXIpOwotICAgIHNoYXJlZFRpbWVyID0gbnVsbHB0cjsKKyAgICBD
RlJ1bkxvb3BUaW1lckludmFsaWRhdGUoc2hhcmVkVGltZXIoKS5nZXQoKSk7CisgICAgc2hhcmVk
VGltZXIoKSA9IG51bGxwdHI7CiB9CiAKIHZvaWQgTWFpblRocmVhZFNoYXJlZFRpbWVyOjpzZXRG
aXJlSW50ZXJ2YWwoU2Vjb25kcyBpbnRlcnZhbCkKQEAgLTEwNSwxMiArMTA4LDEyIEBAIHZvaWQg
TWFpblRocmVhZFNoYXJlZFRpbWVyOjpzZXRGaXJlSW50ZXJ2YWwoU2Vjb25kcyBpbnRlcnZhbCkK
ICAgICBBU1NFUlQobV9maXJlZEZ1bmN0aW9uKTsKIAogICAgIENGQWJzb2x1dGVUaW1lIGZpcmVE
YXRlID0gQ0ZBYnNvbHV0ZVRpbWVHZXRDdXJyZW50KCkgKyBpbnRlcnZhbC52YWx1ZSgpOwotICAg
IGlmICghc2hhcmVkVGltZXIpIHsKLSAgICAgICAgc2hhcmVkVGltZXIgPSBDRlJ1bkxvb3BUaW1l
ckNyZWF0ZShudWxscHRyLCBmaXJlRGF0ZSwga0NGVGltZUludGVydmFsRGlzdGFudEZ1dHVyZSwg
MCwgMCwgdGltZXJGaXJlZCwgbnVsbHB0cik7CisgICAgaWYgKCFzaGFyZWRUaW1lcigpKSB7Cisg
ICAgICAgIHNoYXJlZFRpbWVyKCkgPSBhZG9wdENGKENGUnVuTG9vcFRpbWVyQ3JlYXRlKG51bGxw
dHIsIGZpcmVEYXRlLCBrQ0ZUaW1lSW50ZXJ2YWxEaXN0YW50RnV0dXJlLCAwLCAwLCB0aW1lckZp
cmVkLCBudWxscHRyKSk7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICAgICAgQ0ZSdW5M
b29wQWRkVGltZXIoV2ViVGhyZWFkUnVuTG9vcCgpLCBzaGFyZWRUaW1lciwga0NGUnVuTG9vcENv
bW1vbk1vZGVzKTsKKyAgICAgICAgQ0ZSdW5Mb29wQWRkVGltZXIoV2ViVGhyZWFkUnVuTG9vcCgp
LCBzaGFyZWRUaW1lcigpLmdldCgpLCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMpOwogI2Vsc2UKLSAg
ICAgICAgQ0ZSdW5Mb29wQWRkVGltZXIoQ0ZSdW5Mb29wR2V0Q3VycmVudCgpLCBzaGFyZWRUaW1l
ciwga0NGUnVuTG9vcENvbW1vbk1vZGVzKTsKKyAgICAgICAgQ0ZSdW5Mb29wQWRkVGltZXIoQ0ZS
dW5Mb29wR2V0Q3VycmVudCgpLCBzaGFyZWRUaW1lcigpLmdldCgpLCBrQ0ZSdW5Mb29wQ29tbW9u
TW9kZXMpOwogI2VuZGlmCiAKICAgICAgICAgc2V0dXBQb3dlck9ic2VydmVyKCk7CkBAIC0xMTgs
MTUgKzEyMSwxNSBAQCB2b2lkIE1haW5UaHJlYWRTaGFyZWRUaW1lcjo6c2V0RmlyZUludGVydmFs
KFNlY29uZHMgaW50ZXJ2YWwpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBDRlJ1bkxv
b3BUaW1lclNldE5leHRGaXJlRGF0ZShzaGFyZWRUaW1lciwgZmlyZURhdGUpOworICAgIENGUnVu
TG9vcFRpbWVyU2V0TmV4dEZpcmVEYXRlKHNoYXJlZFRpbWVyKCkuZ2V0KCksIGZpcmVEYXRlKTsK
IH0KIAogdm9pZCBNYWluVGhyZWFkU2hhcmVkVGltZXI6OnN0b3AoKQogewotICAgIGlmICghc2hh
cmVkVGltZXIpCisgICAgaWYgKCFzaGFyZWRUaW1lcigpKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBDRlJ1bkxvb3BUaW1lclNldE5leHRGaXJlRGF0ZShzaGFyZWRUaW1lciwga0NGVGltZUludGVy
dmFsRGlzdGFudEZ1dHVyZSk7CisgICAgQ0ZSdW5Mb29wVGltZXJTZXROZXh0RmlyZURhdGUoc2hh
cmVkVGltZXIoKS5nZXQoKSwga0NGVGltZUludGVydmFsRGlzdGFudEZ1dHVyZSk7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCmluZGV4IDU3NjFjMDk5
YjFmMTk0ZmExZjBkODAzYzY5NWQwNDJmYmU0NDgzYTkuLmVlNGRlY2U3YjJjNDkyZmVjNzViOThk
MmFiZDAyZTEwYjdhNDk3ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQpAQCAtMjgxMCwxMiAr
MjgxMCwxMiBAQCBzdGF0aWMgTlNTdHJpbmcgKmV4ZXJuYWxEZXZpY2VEaXNwbGF5TmFtZUZvclBs
YXllcihBVlBsYXllciAqcGxheWVyKQogICAgIGlmIChwbGF5ZXIuZXh0ZXJuYWxQbGF5YmFja1R5
cGUgIT0gQVZQbGF5ZXJFeHRlcm5hbFBsYXliYWNrVHlwZUFpclBsYXkpCiAgICAgICAgIHJldHVy
biBuaWw7CiAKLSAgICBOU0FycmF5ICpwaWNrYWJsZVJvdXRlcyA9IENGQnJpZGdpbmdSZWxlYXNl
KE1STWVkaWFSZW1vdGVDb3B5UGlja2FibGVSb3V0ZXMoKSk7Ci0gICAgaWYgKCFwaWNrYWJsZVJv
dXRlcy5jb3VudCkKKyAgICBhdXRvIHBpY2thYmxlUm91dGVzID0gYWRvcHRDRihNUk1lZGlhUmVt
b3RlQ29weVBpY2thYmxlUm91dGVzKCkpOworICAgIGlmICghcGlja2FibGVSb3V0ZXMgfHwgIUNG
QXJyYXlHZXRDb3VudChwaWNrYWJsZVJvdXRlcy5nZXQoKSkpCiAgICAgICAgIHJldHVybiBuaWw7
CiAKICAgICBOU1N0cmluZyAqZGlzcGxheU5hbWUgPSBuaWw7Ci0gICAgZm9yIChOU0RpY3Rpb25h
cnkgKnBpY2thYmxlUm91dGUgaW4gcGlja2FibGVSb3V0ZXMpIHsKKyAgICBmb3IgKE5TRGljdGlv
bmFyeSAqcGlja2FibGVSb3V0ZSBpbiAoX19icmlkZ2UgTlNBcnJheSAqKXBpY2thYmxlUm91dGVz
LmdldCgpKSB7CiAgICAgICAgIGlmICghW3BpY2thYmxlUm91dGVbQVZDb250cm9sbGVyX1JvdXRl
RGVzY3JpcHRpb25LZXlfUm91dGVDdXJyZW50bHlQaWNrZWRdIGJvb2xWYWx1ZV0pCiAgICAgICAg
ICAgICBjb250aW51ZTsKIApAQCAtMjgzMCw3ICsyODMwLDcgQEAgc3RhdGljIE5TU3RyaW5nICpl
eGVybmFsRGV2aWNlRGlzcGxheU5hbWVGb3JQbGF5ZXIoQVZQbGF5ZXIgKnBsYXllcikKIAogICAg
ICAgICAvLyBJbiBjYXNlcyB3aGVyZSBhIHJvdXRlIHdpdGggdGhhdCBuYW1lIGFscmVhZHkgZXhp
c3RzLCBwcmVmaXggdGhlIG5hbWUgd2l0aCB0aGUgbW9kZWwuCiAgICAgICAgIEJPT0wgaW5jbHVk
ZUxvY2FsaXplZERldmljZU1vZGVsTmFtZSA9IE5POwotICAgICAgICBmb3IgKE5TRGljdGlvbmFy
eSAqb3RoZXJSb3V0ZSBpbiBwaWNrYWJsZVJvdXRlcykgeworICAgICAgICBmb3IgKE5TRGljdGlv
bmFyeSAqb3RoZXJSb3V0ZSBpbiAoX19icmlkZ2UgTlNBcnJheSAqKXBpY2thYmxlUm91dGVzLmdl
dCgpKSB7CiAgICAgICAgICAgICBpZiAob3RoZXJSb3V0ZSA9PSBwaWNrYWJsZVJvdXRlKQogICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYS93aW4vQ0FDRkxheWVyVHJlZUhvc3QuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL0NBQ0ZMYXllclRyZWVIb3N0LmNwcAppbmRleCAx
MjlkZGEwZGRhYmEwODBhNTkwMTYzMDRmYWQ0ZWNmZjNlNDdjZWMwLi5hNmI3NjgzZGVlNWI2ZTE1
ZDE1ODY0MzVmYjM3MTFhMTU5ZDQyY2E1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYS93aW4vQ0FDRkxheWVyVHJlZUhvc3QuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9DQUNGTGF5ZXJUcmVlSG9zdC5jcHAKQEAg
LTE1OSw5ICsxNTksOCBAQCB2b2lkIENBQ0ZMYXllclRyZWVIb3N0Ojppbml0aWFsaXplKCkKICAg
ICBtX3Jvb3RMYXllci0+c2V0R2VvbWV0cnlGbGlwcGVkKHRydWUpOwogCiAjaWZuZGVmIE5ERUJV
RwotICAgIENHQ29sb3JSZWYgZGVidWdDb2xvciA9IENHQ29sb3JDcmVhdGVHZW5lcmljUkdCKDEs
IDAsIDAsIDAuOCk7Ci0gICAgbV9yb290TGF5ZXItPnNldEJhY2tncm91bmRDb2xvcihkZWJ1Z0Nv
bG9yKTsKLSAgICBDR0NvbG9yUmVsZWFzZShkZWJ1Z0NvbG9yKTsKKyAgICBhdXRvIGRlYnVnQ29s
b3IgPSBhZG9wdENGKENHQ29sb3JDcmVhdGVHZW5lcmljUkdCKDEsIDAsIDAsIDAuOCkpOworICAg
IG1fcm9vdExheWVyLT5zZXRCYWNrZ3JvdW5kQ29sb3IoZGVidWdDb2xvci5nZXQoKSk7CiAjZW5k
aWYKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
R3JhcGhpY3NDb250ZXh0Q0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCmluZGV4IDlkYjkwOWNkYThlZjE3NjEwZjI5NGE5ODUw
OTE4YmMxOWFlNzk3YTkuLjY0NDNhNzE1NzU4ZDY3NTg0ZWUzZGY0MTQ5NTNlNGZlNzU4N2MxYmIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNz
Q29udGV4dENHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9H
cmFwaGljc0NvbnRleHRDRy5jcHAKQEAgLTM0Niw5ICszNDYsNyBAQCBzdGF0aWMgdm9pZCBkcmF3
UGF0dGVybkNhbGxiYWNrKHZvaWQqIGluZm8sIENHQ29udGV4dFJlZiBjb250ZXh0KQogCiBzdGF0
aWMgdm9pZCBwYXR0ZXJuUmVsZWFzZUNhbGxiYWNrKHZvaWQqIGluZm8pCiB7Ci0gICAgY2FsbE9u
TWFpblRocmVhZChbaW1hZ2UgPSBzdGF0aWNfY2FzdDxDR0ltYWdlUmVmPihpbmZvKV0gewotICAg
ICAgICBDR0ltYWdlUmVsZWFzZShpbWFnZSk7Ci0gICAgfSk7CisgICAgY2FsbE9uTWFpblRocmVh
ZChbaW1hZ2UgPSBhZG9wdENGKHN0YXRpY19jYXN0PENHSW1hZ2VSZWY+KGluZm8pKV0geyB9KTsK
IH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdQbGF0Zm9ybVBhdHRlcm4oY29uc3QgUGxh
dGZvcm1JbWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdCBBZmZp
bmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBj
b25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRp
b25zKQpAQCAtNjc1LDggKzY3Myw4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUGF0aChj
b25zdCBQYXRoJiBwYXRoKQogICAgICAgICAgICAgRmxvYXRSZWN0IHJlY3QgPSBwYXRoLmZhc3RC
b3VuZGluZ1JlY3QoKTsKICAgICAgICAgICAgIEZsb2F0U2l6ZSBsYXllclNpemUgPSBnZXRDVE0o
KS5tYXBTaXplKHJlY3Quc2l6ZSgpKTsKIAotICAgICAgICAgICAgQ0dMYXllclJlZiBsYXllciA9
IENHTGF5ZXJDcmVhdGVXaXRoQ29udGV4dChjb250ZXh0LCBsYXllclNpemUsIDApOwotICAgICAg
ICAgICAgQ0dDb250ZXh0UmVmIGxheWVyQ29udGV4dCA9IENHTGF5ZXJHZXRDb250ZXh0KGxheWVy
KTsKKyAgICAgICAgICAgIGF1dG8gbGF5ZXIgPSBhZG9wdENGKENHTGF5ZXJDcmVhdGVXaXRoQ29u
dGV4dChjb250ZXh0LCBsYXllclNpemUsIDApKTsKKyAgICAgICAgICAgIENHQ29udGV4dFJlZiBs
YXllckNvbnRleHQgPSBDR0xheWVyR2V0Q29udGV4dChsYXllci5nZXQoKSk7CiAKICAgICAgICAg
ICAgIENHQ29udGV4dFNjYWxlQ1RNKGxheWVyQ29udGV4dCwgbGF5ZXJTaXplLndpZHRoKCkgLyBy
ZWN0LndpZHRoKCksIGxheWVyU2l6ZS5oZWlnaHQoKSAvIHJlY3QuaGVpZ2h0KCkpOwogICAgICAg
ICAgICAgQ0dDb250ZXh0VHJhbnNsYXRlQ1RNKGxheWVyQ29udGV4dCwgLXJlY3QueCgpLCAtcmVj
dC55KCkpOwpAQCAtNjkwLDggKzY4OCw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUGF0
aChjb25zdCBQYXRoJiBwYXRoKQogICAgICAgICAgICAgICAgIENHQ29udGV4dENsaXAobGF5ZXJD
b250ZXh0KTsKIAogICAgICAgICAgICAgbV9zdGF0ZS5maWxsR3JhZGllbnQtPnBhaW50KGxheWVy
Q29udGV4dCk7Ci0gICAgICAgICAgICBDR0NvbnRleHREcmF3TGF5ZXJJblJlY3QoY29udGV4dCwg
cmVjdCwgbGF5ZXIpOwotICAgICAgICAgICAgQ0dMYXllclJlbGVhc2UobGF5ZXIpOworICAgICAg
ICAgICAgQ0dDb250ZXh0RHJhd0xheWVySW5SZWN0KGNvbnRleHQsIHJlY3QsIGxheWVyLmdldCgp
KTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIENHQ29udGV4dEJlZ2luUGF0aChjb250
ZXh0KTsKICAgICAgICAgICAgIENHQ29udGV4dEFkZFBhdGgoY29udGV4dCwgcGF0aC5wbGF0Zm9y
bVBhdGgoKSk7CkBAIC03NDUsOCArNzQyLDggQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnN0cm9r
ZVBhdGgoY29uc3QgUGF0aCYgcGF0aCkKIAogICAgICAgICAgICAgRmxvYXRTaXplIGxheWVyU2l6
ZSA9IGdldENUTSgpLm1hcFNpemUoRmxvYXRTaXplKGFkanVzdGVkV2lkdGgsIGFkanVzdGVkSGVp
Z2h0KSk7CiAKLSAgICAgICAgICAgIENHTGF5ZXJSZWYgbGF5ZXIgPSBDR0xheWVyQ3JlYXRlV2l0
aENvbnRleHQoY29udGV4dCwgbGF5ZXJTaXplLCAwKTsKLSAgICAgICAgICAgIENHQ29udGV4dFJl
ZiBsYXllckNvbnRleHQgPSBDR0xheWVyR2V0Q29udGV4dChsYXllcik7CisgICAgICAgICAgICBh
dXRvIGxheWVyID0gYWRvcHRDRihDR0xheWVyQ3JlYXRlV2l0aENvbnRleHQoY29udGV4dCwgbGF5
ZXJTaXplLCAwKSk7CisgICAgICAgICAgICBDR0NvbnRleHRSZWYgbGF5ZXJDb250ZXh0ID0gQ0dM
YXllckdldENvbnRleHQobGF5ZXIuZ2V0KCkpOwogICAgICAgICAgICAgQ0dDb250ZXh0U2V0TGlu
ZVdpZHRoKGxheWVyQ29udGV4dCwgbGluZVdpZHRoKTsKIAogICAgICAgICAgICAgLy8gQ29tcGVu
c2F0ZSBmb3IgdGhlIGxpbmUgd2lkdGgsIG90aGVyd2lzZSB0aGUgbGF5ZXIncyB0b3AtbGVmdCBj
b3JuZXIgd291bGQgYmUKQEAgLTc2NSw4ICs3NjIsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6
c3Ryb2tlUGF0aChjb25zdCBQYXRoJiBwYXRoKQogCiAgICAgICAgICAgICBmbG9hdCBkZXN0aW5h
dGlvblggPSByb3VuZGYocmVjdC54KCkgLSBsaW5lV2lkdGgpOwogICAgICAgICAgICAgZmxvYXQg
ZGVzdGluYXRpb25ZID0gcm91bmRmKHJlY3QueSgpIC0gbGluZVdpZHRoKTsKLSAgICAgICAgICAg
IENHQ29udGV4dERyYXdMYXllckluUmVjdChjb250ZXh0LCBDR1JlY3RNYWtlKGRlc3RpbmF0aW9u
WCwgZGVzdGluYXRpb25ZLCBhZGp1c3RlZFdpZHRoLCBhZGp1c3RlZEhlaWdodCksIGxheWVyKTsK
LSAgICAgICAgICAgIENHTGF5ZXJSZWxlYXNlKGxheWVyKTsKKyAgICAgICAgICAgIENHQ29udGV4
dERyYXdMYXllckluUmVjdChjb250ZXh0LCBDR1JlY3RNYWtlKGRlc3RpbmF0aW9uWCwgZGVzdGlu
YXRpb25ZLCBhZGp1c3RlZFdpZHRoLCBhZGp1c3RlZEhlaWdodCksIGxheWVyLmdldCgpKTsKICAg
ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIENHQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZl
cihjb250ZXh0KTsKICAgICAgICAgICAgIENHQ29udGV4dEJlZ2luUGF0aChjb250ZXh0KTsKQEAg
LTgxNyw4ICs4MTMsOCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3QoY29uc3QgRmxv
YXRSZWN0JiByZWN0KQogICAgICAgICBpZiAoaGFzU2hhZG93KCkpIHsKICAgICAgICAgICAgIEZs
b2F0U2l6ZSBsYXllclNpemUgPSBnZXRDVE0oKS5tYXBTaXplKHJlY3Quc2l6ZSgpKTsKIAotICAg
ICAgICAgICAgQ0dMYXllclJlZiBsYXllciA9IENHTGF5ZXJDcmVhdGVXaXRoQ29udGV4dChjb250
ZXh0LCBsYXllclNpemUsIDApOwotICAgICAgICAgICAgQ0dDb250ZXh0UmVmIGxheWVyQ29udGV4
dCA9IENHTGF5ZXJHZXRDb250ZXh0KGxheWVyKTsKKyAgICAgICAgICAgIGF1dG8gbGF5ZXIgPSBh
ZG9wdENGKENHTGF5ZXJDcmVhdGVXaXRoQ29udGV4dChjb250ZXh0LCBsYXllclNpemUsIDApKTsK
KyAgICAgICAgICAgIENHQ29udGV4dFJlZiBsYXllckNvbnRleHQgPSBDR0xheWVyR2V0Q29udGV4
dChsYXllci5nZXQoKSk7CiAKICAgICAgICAgICAgIENHQ29udGV4dFNjYWxlQ1RNKGxheWVyQ29u
dGV4dCwgbGF5ZXJTaXplLndpZHRoKCkgLyByZWN0LndpZHRoKCksIGxheWVyU2l6ZS5oZWlnaHQo
KSAvIHJlY3QuaGVpZ2h0KCkpOwogICAgICAgICAgICAgQ0dDb250ZXh0VHJhbnNsYXRlQ1RNKGxh
eWVyQ29udGV4dCwgLXJlY3QueCgpLCAtcmVjdC55KCkpOwpAQCAtODI3LDggKzgyMyw3IEBAIHZv
aWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiAKICAg
ICAgICAgICAgIENHQ29udGV4dENvbmNhdENUTShsYXllckNvbnRleHQsIG1fc3RhdGUuZmlsbEdy
YWRpZW50U3BhY2VUcmFuc2Zvcm0pOwogICAgICAgICAgICAgbV9zdGF0ZS5maWxsR3JhZGllbnQt
PnBhaW50KGxheWVyQ29udGV4dCk7Ci0gICAgICAgICAgICBDR0NvbnRleHREcmF3TGF5ZXJJblJl
Y3QoY29udGV4dCwgcmVjdCwgbGF5ZXIpOwotICAgICAgICAgICAgQ0dMYXllclJlbGVhc2UobGF5
ZXIpOworICAgICAgICAgICAgQ0dDb250ZXh0RHJhd0xheWVySW5SZWN0KGNvbnRleHQsIHJlY3Qs
IGxheWVyLmdldCgpKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIENHQ29udGV4dENs
aXBUb1JlY3QoY29udGV4dCwgcmVjdCk7CiAgICAgICAgICAgICBDR0NvbnRleHRDb25jYXRDVE0o
Y29udGV4dCwgbV9zdGF0ZS5maWxsR3JhZGllbnRTcGFjZVRyYW5zZm9ybSk7CkBAIC0xMjI2LDkg
KzEyMjEsOSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c3Ryb2tlUmVjdChjb25zdCBGbG9hdFJl
Y3QmIHJlY3QsIGZsb2F0IGxpbmVXaWR0aCkKICAgICAgICAgICAgIGZsb2F0IGFkanVzdGVkSGVp
Z2h0ID0gY2VpbGYocmVjdC5oZWlnaHQoKSArIGRvdWJsZUxpbmVXaWR0aCk7CiAgICAgICAgICAg
ICBGbG9hdFNpemUgbGF5ZXJTaXplID0gZ2V0Q1RNKCkubWFwU2l6ZShGbG9hdFNpemUoYWRqdXN0
ZWRXaWR0aCwgYWRqdXN0ZWRIZWlnaHQpKTsKIAotICAgICAgICAgICAgQ0dMYXllclJlZiBsYXll
ciA9IENHTGF5ZXJDcmVhdGVXaXRoQ29udGV4dChjb250ZXh0LCBsYXllclNpemUsIDApOworICAg
ICAgICAgICAgYXV0byBsYXllciA9IGFkb3B0Q0YoQ0dMYXllckNyZWF0ZVdpdGhDb250ZXh0KGNv
bnRleHQsIGxheWVyU2l6ZSwgMCkpOwogCi0gICAgICAgICAgICBDR0NvbnRleHRSZWYgbGF5ZXJD
b250ZXh0ID0gQ0dMYXllckdldENvbnRleHQobGF5ZXIpOworICAgICAgICAgICAgQ0dDb250ZXh0
UmVmIGxheWVyQ29udGV4dCA9IENHTGF5ZXJHZXRDb250ZXh0KGxheWVyLmdldCgpKTsKICAgICAg
ICAgICAgIG1fc3RhdGUuc3Ryb2tlVGhpY2tuZXNzID0gbGluZVdpZHRoOwogICAgICAgICAgICAg
Q0dDb250ZXh0U2V0TGluZVdpZHRoKGxheWVyQ29udGV4dCwgbGluZVdpZHRoKTsKIApAQCAtMTI0
OCw4ICsxMjQzLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnN0cm9rZVJlY3QoY29uc3QgRmxv
YXRSZWN0JiByZWN0LCBmbG9hdCBsaW5lV2lkdGgpCiAKICAgICAgICAgICAgIGNvbnN0IGZsb2F0
IGRlc3RpbmF0aW9uWCA9IHJvdW5kZihyZWN0LngoKSAtIGxpbmVXaWR0aCk7CiAgICAgICAgICAg
ICBjb25zdCBmbG9hdCBkZXN0aW5hdGlvblkgPSByb3VuZGYocmVjdC55KCkgLSBsaW5lV2lkdGgp
OwotICAgICAgICAgICAgQ0dDb250ZXh0RHJhd0xheWVySW5SZWN0KGNvbnRleHQsIENHUmVjdE1h
a2UoZGVzdGluYXRpb25YLCBkZXN0aW5hdGlvblksIGFkanVzdGVkV2lkdGgsIGFkanVzdGVkSGVp
Z2h0KSwgbGF5ZXIpOwotICAgICAgICAgICAgQ0dMYXllclJlbGVhc2UobGF5ZXIpOworICAgICAg
ICAgICAgQ0dDb250ZXh0RHJhd0xheWVySW5SZWN0KGNvbnRleHQsIENHUmVjdE1ha2UoZGVzdGlu
YXRpb25YLCBkZXN0aW5hdGlvblksIGFkanVzdGVkV2lkdGgsIGFkanVzdGVkSGVpZ2h0KSwgbGF5
ZXIuZ2V0KCkpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgQ0dDb250ZXh0U3RhdGVT
YXZlciBzdGF0ZVNhdmVyKGNvbnRleHQpOwogICAgICAgICAgICAgc2V0U3Ryb2tlVGhpY2tuZXNz
KGxpbmVXaWR0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9QYXR0ZXJuQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
UGF0dGVybkNHLmNwcAppbmRleCBmMWI5ZTNhN2MwNTU2OWE5ODkxYjY5OGQyODNhYjUzOTdjNzI1
ZjU0Li4zYWVjNzc1NmRiOGNkMjUwYWZlZjEwZDgzZmRlYjFkY2M5M2NmOWMzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXR0ZXJuQ0cuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdHRlcm5DRy5jcHAKQEAgLTUw
LDkgKzUwLDcgQEAgc3RhdGljIHZvaWQgcGF0dGVybkNhbGxiYWNrKHZvaWQqIGluZm8sIENHQ29u
dGV4dFJlZiBjb250ZXh0KQogCiBzdGF0aWMgdm9pZCBwYXR0ZXJuUmVsZWFzZUNhbGxiYWNrKHZv
aWQqIGluZm8pCiB7Ci0gICAgY2FsbE9uTWFpblRocmVhZChbaW1hZ2UgPSBzdGF0aWNfY2FzdDxD
R0ltYWdlUmVmPihpbmZvKV0gewotICAgICAgICBDR0ltYWdlUmVsZWFzZShpbWFnZSk7Ci0gICAg
fSk7CisgICAgY2FsbE9uTWFpblRocmVhZChbaW1hZ2UgPSBhZG9wdENGKHN0YXRpY19jYXN0PENH
SW1hZ2VSZWY+KGluZm8pKV0geyB9KTsKIH0KIAogQ0dQYXR0ZXJuUmVmIFBhdHRlcm46OmNyZWF0
ZVBsYXRmb3JtUGF0dGVybihjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHVzZXJTcGFjZVRyYW5zZm9y
bSkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcAppbmRleCA5OWNiY2ZkMGI2ZGExNWNlMzIw
ODc3NWQxNWI1ZGRiYjZhYWM4ZjBlLi5mYTc3YjM5OTc3ZGI5NzhhMDU5NzFiNmMyNWM0MWYzNzJk
ZTUyNGIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9Gb250Q2FjaGVDb3JlVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwCkBAIC0xMjc5LDggKzEyNzksNyBAQCBz
dGF0aWMgdm9pZCBhdXRvQWN0aXZhdGVGb250KGNvbnN0IFN0cmluZyYgbmFtZSwgQ0dGbG9hdCBz
aXplKQogICAgIENGVHlwZVJlZiB2YWx1ZXNbXSA9IHsgZm9udE5hbWUuZ2V0KCkgfTsKICAgICBh
dXRvIGF0dHJpYnV0ZXMgPSBhZG9wdENGKENGRGljdGlvbmFyeUNyZWF0ZShrQ0ZBbGxvY2F0b3JE
ZWZhdWx0LCBrZXlzLCB2YWx1ZXMsIFdURl9BUlJBWV9MRU5HVEgoa2V5cyksICZrQ0ZUeXBlRGlj
dGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpKTsK
ICAgICBhdXRvIGRlc2NyaXB0b3IgPSBhZG9wdENGKENURm9udERlc2NyaXB0b3JDcmVhdGVXaXRo
QXR0cmlidXRlcyhhdHRyaWJ1dGVzLmdldCgpKSk7Ci0gICAgaWYgKGF1dG8gbmV3Rm9udCA9IENU
Rm9udENyZWF0ZVdpdGhGb250RGVzY3JpcHRvcihkZXNjcmlwdG9yLmdldCgpLCBzaXplLCBudWxs
cHRyKSkKLSAgICAgICAgQ0ZSZWxlYXNlKG5ld0ZvbnQpOworICAgIGF1dG8gbmV3Rm9udCA9IGFk
b3B0Q0YoQ1RGb250Q3JlYXRlV2l0aEZvbnREZXNjcmlwdG9yKGRlc2NyaXB0b3IuZ2V0KCksIHNp
emUsIG51bGxwdHIpKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udENHV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9Gb250Q0dXaW4uY3BwCmluZGV4IDUzYWM3ZTIwMDE4YTFiOGE5NTBk
Yzc0OTI2ODVkMjc1ZjhhYmIxNmUuLmMxOWU3NDE1NTdjMzA4Yzk0MWU0ZWY3MTVlM2RiNDY1OTRk
MTg1YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9G
b250Q0dXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9G
b250Q0dXaW4uY3BwCkBAIC00MDksNTAgKzQwOSwzNiBAQCB2b2lkIEZvbnRDYXNjYWRlOjpnZXRQ
bGF0Zm9ybUdseXBoQWR2YW5jZXMoQ0dGb250UmVmIGZvbnQsIGNvbnN0IENHQWZmaW5lVHJhbnNm
bwogCiAgICAgLy8gPHJkYXI6Ly9wcm9ibGVtLzc3NjExNjU+IFRoZSBHREkgYmFjayBlbmQgaW4g
Q29yZSBHcmFwaGljcyBzb21ldGltZXMgcmV0dXJucyBhZHZhbmNlcyB0aGF0CiAgICAgLy8gZGlm
ZmVyIGZyb20gd2hhdCB0aGUgZm9udCdzIGhtdHggdGFibGUgc3BlY2lmaWVzLiBUaGUgZm9sbG93
aW5nIGNvZGUgY29ycmVjdHMgdGhhdC4KLSAgICBDRkRhdGFSZWYgaG10eFRhYmxlID0gQ0dGb250
Q29weVRhYmxlRm9yVGFnKGZvbnQsICdobXR4Jyk7CisgICAgYXV0byBobXR4VGFibGUgPSBhZG9w
dENGKENHRm9udENvcHlUYWJsZUZvclRhZyhmb250LCAnaG10eCcpKTsKICAgICBpZiAoIWhtdHhU
YWJsZSkKICAgICAgICAgcmV0dXJuOwotICAgIENGRGF0YVJlZiBoaGVhVGFibGUgPSBDR0ZvbnRD
b3B5VGFibGVGb3JUYWcoZm9udCwgJ2hoZWEnKTsKLSAgICBpZiAoIWhoZWFUYWJsZSkgewotICAg
ICAgICBDRlJlbGVhc2UoaG10eFRhYmxlKTsKKyAgICBhdXRvIGhoZWFUYWJsZSA9IGFkb3B0Q0Yo
Q0dGb250Q29weVRhYmxlRm9yVGFnKGZvbnQsICdoaGVhJykpOworICAgIGlmICghaGhlYVRhYmxl
KQogICAgICAgICByZXR1cm47Ci0gICAgfQogCiAgICAgY29uc3QgQ0ZJbmRleCBoaGVhVGFibGVT
aXplID0gMzY7CiAgICAgY29uc3QgcHRyZGlmZl90IGhoZWFUYWJsZU51bWJlck9mSE1ldHJpY3NP
ZmZzZXQgPSAzNDsKLSAgICBpZiAoQ0ZEYXRhR2V0TGVuZ3RoKGhoZWFUYWJsZSkgPCBoaGVhVGFi
bGVTaXplKSB7Ci0gICAgICAgIENGUmVsZWFzZShobXR4VGFibGUpOwotICAgICAgICBDRlJlbGVh
c2UoaGhlYVRhYmxlKTsKKyAgICBpZiAoQ0ZEYXRhR2V0TGVuZ3RoKGhoZWFUYWJsZS5nZXQoKSkg
PCBoaGVhVGFibGVTaXplKQogICAgICAgICByZXR1cm47Ci0gICAgfQogCi0gICAgdW5zaWduZWQg
c2hvcnQgbnVtYmVyT2ZITWV0cmljcyA9ICpyZWludGVycHJldF9jYXN0PGNvbnN0IHVuc2lnbmVk
IHNob3J0Kj4oQ0ZEYXRhR2V0Qnl0ZVB0cihoaGVhVGFibGUpICsgaGhlYVRhYmxlTnVtYmVyT2ZI
TWV0cmljc09mZnNldCk7CisgICAgdW5zaWduZWQgc2hvcnQgbnVtYmVyT2ZITWV0cmljcyA9ICpy
ZWludGVycHJldF9jYXN0PGNvbnN0IHVuc2lnbmVkIHNob3J0Kj4oQ0ZEYXRhR2V0Qnl0ZVB0ciho
aGVhVGFibGUuZ2V0KCkpICsgaGhlYVRhYmxlTnVtYmVyT2ZITWV0cmljc09mZnNldCk7CiAgICAg
bnVtYmVyT2ZITWV0cmljcyA9ICgobnVtYmVyT2ZITWV0cmljcyAmIDB4RkYpIDw8IDgpIHwgKG51
bWJlck9mSE1ldHJpY3MgPj4gOCk7Ci0gICAgaWYgKCFudW1iZXJPZkhNZXRyaWNzKSB7Ci0gICAg
ICAgIENGUmVsZWFzZShobXR4VGFibGUpOwotICAgICAgICBDRlJlbGVhc2UoaGhlYVRhYmxlKTsK
KyAgICBpZiAoIW51bWJlck9mSE1ldHJpY3MpCiAgICAgICAgIHJldHVybjsKLSAgICB9CiAKICAg
ICBpZiAoZ2x5cGggPj0gbnVtYmVyT2ZITWV0cmljcykKICAgICAgICAgZ2x5cGggPSBudW1iZXJP
ZkhNZXRyaWNzIC0gMTsKIAotICAgIGlmIChDRkRhdGFHZXRMZW5ndGgoaG10eFRhYmxlKSA8IDQg
KiAoZ2x5cGggKyAxKSkgewotICAgICAgICBDRlJlbGVhc2UoaG10eFRhYmxlKTsKLSAgICAgICAg
Q0ZSZWxlYXNlKGhoZWFUYWJsZSk7CisgICAgaWYgKENGRGF0YUdldExlbmd0aChobXR4VGFibGUu
Z2V0KCkpIDwgNCAqIChnbHlwaCArIDEpKQogICAgICAgICByZXR1cm47Ci0gICAgfQogCi0gICAg
dW5zaWduZWQgc2hvcnQgYWR2YW5jZUluRGVzaWduVW5pdHMgPSAqcmVpbnRlcnByZXRfY2FzdDxj
b25zdCB1bnNpZ25lZCBzaG9ydCo+KENGRGF0YUdldEJ5dGVQdHIoaG10eFRhYmxlKSArIDQgKiBn
bHlwaCk7CisgICAgdW5zaWduZWQgc2hvcnQgYWR2YW5jZUluRGVzaWduVW5pdHMgPSAqcmVpbnRl
cnByZXRfY2FzdDxjb25zdCB1bnNpZ25lZCBzaG9ydCo+KENGRGF0YUdldEJ5dGVQdHIoaG10eFRh
YmxlLmdldCgpKSArIDQgKiBnbHlwaCk7CiAgICAgYWR2YW5jZUluRGVzaWduVW5pdHMgPSAoKGFk
dmFuY2VJbkRlc2lnblVuaXRzICYgMHhGRikgPDwgOCkgfCAoYWR2YW5jZUluRGVzaWduVW5pdHMg
Pj4gOCk7CiAgICAgQ0dTaXplIGhvcml6b250YWxBZHZhbmNlID0gQ0dTaXplTWFrZShzdGF0aWNf
Y2FzdDxDR0Zsb2F0PihhZHZhbmNlSW5EZXNpZ25Vbml0cykgLyBDR0ZvbnRHZXRVbml0c1BlckVt
KGZvbnQpLCAwKTsKICAgICBob3Jpem9udGFsQWR2YW5jZSA9IENHU2l6ZUFwcGx5QWZmaW5lVHJh
bnNmb3JtKGhvcml6b250YWxBZHZhbmNlLCBtKTsKICAgICBhZHZhbmNlLndpZHRoID0gaG9yaXpv
bnRhbEFkdmFuY2Uud2lkdGg7CiAgICAgaWYgKCEoc3R5bGUgJiBrQ0dGb250UmVuZGVyaW5nU3R5
bGVTdWJwaXhlbFBvc2l0aW9uaW5nKSkKICAgICAgICAgYWR2YW5jZS53aWR0aCA9IHJvdW5kZihh
ZHZhbmNlLndpZHRoKTsKLQotICAgIENGUmVsZWFzZShoaGVhVGFibGUpOwotICAgIENGUmVsZWFz
ZShobXR4VGFibGUpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0Q0dXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dENHV2luLmNwcAppbmRleCAzMTdm
OGQwNDVkMzI5M2E3OGM3YTFiNzU1NDQ2ZDA1ZGU0OWEyN2MzLi5jZWRiMDJlYjllMWY5NWJmOTAz
MzExM2JhNjA1ZDljY2ZmZjg2OWU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0Q0dXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRDR1dpbi5jcHAKQEAgLTEw
NywxNiArMTA3LDE0IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpyZWxlYXNlV2luZG93c0NvbnRl
eHQoSERDIGhkYywgY29uc3QgSW50UmVjdCYgZHN0UmVjdCwgYm9vCiAKICAgICBBU1NFUlQocGl4
ZWxEYXRhLmJpdHNQZXJQaXhlbCgpID09IDMyKTsKIAotICAgIENHQ29udGV4dFJlZiBiaXRtYXBD
b250ZXh0ID0gQ0dCaXRtYXBDb250ZXh0Q3JlYXRlKHBpeGVsRGF0YS5idWZmZXIoKSwgcGl4ZWxE
YXRhLnNpemUoKS53aWR0aCgpLCBwaXhlbERhdGEuc2l6ZSgpLmhlaWdodCgpLCA4LAorICAgIGF1
dG8gYml0bWFwQ29udGV4dCA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlKHBpeGVsRGF0
YS5idWZmZXIoKSwgcGl4ZWxEYXRhLnNpemUoKS53aWR0aCgpLCBwaXhlbERhdGEuc2l6ZSgpLmhl
aWdodCgpLCA4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHBpeGVsRGF0YS5ieXRlc1BlclJvdygpLCBzUkdCQ29sb3JTcGFjZVJlZigpLCBr
Q0dCaXRtYXBCeXRlT3JkZXIzMkxpdHRsZSB8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN1cHBvcnRBbHBoYUJsZW5kID8ga0NHSW1hZ2VB
bHBoYVByZW11bHRpcGxpZWRGaXJzdCA6IGtDR0ltYWdlQWxwaGFOb25lU2tpcEZpcnN0KSk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN1
cHBvcnRBbHBoYUJsZW5kID8ga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRGaXJzdCA6IGtDR0lt
YWdlQWxwaGFOb25lU2tpcEZpcnN0KSkpOwogCi0gICAgQ0dJbWFnZVJlZiBpbWFnZSA9IENHQml0
bWFwQ29udGV4dENyZWF0ZUltYWdlKGJpdG1hcENvbnRleHQpOwotICAgIENHQ29udGV4dERyYXdJ
bWFnZShtX2RhdGEtPm1fY2dDb250ZXh0LmdldCgpLCBkc3RSZWN0LCBpbWFnZSk7CisgICAgYXV0
byBpbWFnZSA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlSW1hZ2UoYml0bWFwQ29udGV4
dC5nZXQoKSkpOworICAgIENHQ29udGV4dERyYXdJbWFnZShtX2RhdGEtPm1fY2dDb250ZXh0Lmdl
dCgpLCBkc3RSZWN0LCBpbWFnZS5nZXQoKSk7CiAgICAgCiAgICAgLy8gRGVsZXRlIGFsbCBvdXIg
anVuay4KLSAgICBDR0ltYWdlUmVsZWFzZShpbWFnZSk7Ci0gICAgQ0dDb250ZXh0UmVsZWFzZShi
aXRtYXBDb250ZXh0KTsKICAgICA6OkRlbGV0ZURDKGhkYyk7CiB9CiAKQEAgLTE0NywxNiArMTQ1
LDE2IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3Rm9jdXNSaW5nKGNvbnN0IFZlY3RvcjxG
bG9hdFJlY3Q+JiByZWN0cywgZmxvYXQgd2lkdGgsCiAgICAgb2Zmc2V0ICs9IHJhZGl1czsKICAg
ICBDR0NvbG9yUmVmIGNvbG9yUmVmID0gY29sb3IuaXNWYWxpZCgpID8gY2FjaGVkQ0dDb2xvcihj
b2xvcikgOiBudWxscHRyOwogCi0gICAgQ0dNdXRhYmxlUGF0aFJlZiBmb2N1c1JpbmdQYXRoID0g
Q0dQYXRoQ3JlYXRlTXV0YWJsZSgpOworICAgIGF1dG8gZm9jdXNSaW5nUGF0aCA9IGFkb3B0Q0Yo
Q0dQYXRoQ3JlYXRlTXV0YWJsZSgpKTsKICAgICB1bnNpZ25lZCByZWN0Q291bnQgPSByZWN0cy5z
aXplKCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHJlY3RDb3VudDsgaSsrKQotICAg
ICAgICBDR1BhdGhBZGRSZWN0KGZvY3VzUmluZ1BhdGgsIDAsIENHUmVjdEluc2V0KHJlY3RzW2ld
LCAtb2Zmc2V0LCAtb2Zmc2V0KSk7CisgICAgICAgIENHUGF0aEFkZFJlY3QoZm9jdXNSaW5nUGF0
aC5nZXQoKSwgMCwgQ0dSZWN0SW5zZXQocmVjdHNbaV0sIC1vZmZzZXQsIC1vZmZzZXQpKTsKIAog
ICAgIENHQ29udGV4dFJlZiBjb250ZXh0ID0gcGxhdGZvcm1Db250ZXh0KCk7CiAgICAgQ0dDb250
ZXh0U2F2ZUdTdGF0ZShjb250ZXh0KTsKIAogICAgIENHQ29udGV4dEJlZ2luUGF0aChjb250ZXh0
KTsKLSAgICBDR0NvbnRleHRBZGRQYXRoKGNvbnRleHQsIGZvY3VzUmluZ1BhdGgpOworICAgIENH
Q29udGV4dEFkZFBhdGgoY29udGV4dCwgZm9jdXNSaW5nUGF0aC5nZXQoKSk7CiAKICAgICAvLyBG
SVhNRTogV2UgY2xlYXIgdGhlIGZpbGwgY29sb3IgaGVyZSB0byBhdm9pZCBnZXR0aW5nIGEgYmxh
Y2sgZmlsbCB3aGVuIGRyYXdpbmcgdGhlIGZvY3VzIHJpbmcuCiAgICAgLy8gRmluZCBvdXQgZnJv
bSBDRyBpZiB0aGlzIGlzIHRoZWlyIGJ1Zy4KQEAgLTE2NSw4ICsxNjMsNiBAQCB2b2lkIEdyYXBo
aWNzQ29udGV4dDo6ZHJhd0ZvY3VzUmluZyhjb25zdCBWZWN0b3I8RmxvYXRSZWN0PiYgcmVjdHMs
IGZsb2F0IHdpZHRoLAogICAgIENHQ29udGV4dFNldEZvY3VzUmluZ1dpdGhDb2xvcihjb250ZXh0
LCByYWRpdXMsIGNvbG9yUmVmLCAwLCAoQ0ZEaWN0aW9uYXJ5UmVmKTApOwogICAgIENHQ29udGV4
dEZpbGxQYXRoKGNvbnRleHQpOwogCi0gICAgQ0dQYXRoUmVsZWFzZShmb2N1c1JpbmdQYXRoKTsK
LQogICAgIENHQ29udGV4dFJlc3RvcmVHU3RhdGUoY29udGV4dCk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNHV2luLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNHV2luLmNwcAppbmRleCA2
ZGFiZjI0MTNmZWQzNTc1OWFiMDM5NTNkYTQzNzIyYzhkNDE2ZmQ2Li5mOGExMGQ1YzQzNmU3MDYw
ODk4NzA3YmE4YjY1NDY0MWNlMmJkZjU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VDR1dpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQ0dXaW4uY3BwCkBAIC03MCwxMCArNzAsMTAgQEAgYm9v
bCBCaXRtYXBJbWFnZTo6Z2V0SEJJVE1BUE9mU2l6ZShIQklUTUFQIGJtcCwgY29uc3QgSW50U2l6
ZSogc2l6ZSkKICAgICBBU1NFUlQoYm1wSW5mby5ibUJpdHNQaXhlbCA9PSAzMik7CiAgICAgaW50
IGJ1ZmZlclNpemUgPSBibXBJbmZvLmJtV2lkdGhCeXRlcyAqIGJtcEluZm8uYm1IZWlnaHQ7CiAg
ICAgCi0gICAgQ0dDb250ZXh0UmVmIGNnQ29udGV4dCA9IENHQml0bWFwQ29udGV4dENyZWF0ZShi
bXBJbmZvLmJtQml0cywgYm1wSW5mby5ibVdpZHRoLCBibXBJbmZvLmJtSGVpZ2h0LAotICAgICAg
ICA4LCBibXBJbmZvLmJtV2lkdGhCeXRlcywgc1JHQkNvbG9yU3BhY2VSZWYoKSwga0NHQml0bWFw
Qnl0ZU9yZGVyMzJMaXR0bGUgfCBrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZEZpcnN0KTsKKyAg
ICBhdXRvIGNnQ29udGV4dCA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlKGJtcEluZm8u
Ym1CaXRzLCBibXBJbmZvLmJtV2lkdGgsIGJtcEluZm8uYm1IZWlnaHQsCisgICAgICAgIDgsIGJt
cEluZm8uYm1XaWR0aEJ5dGVzLCBzUkdCQ29sb3JTcGFjZVJlZigpLCBrQ0dCaXRtYXBCeXRlT3Jk
ZXIzMkxpdHRsZSB8IGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkRmlyc3QpKTsKICAgCi0gICAg
R3JhcGhpY3NDb250ZXh0IGdjKGNnQ29udGV4dCk7CisgICAgR3JhcGhpY3NDb250ZXh0IGdjKGNn
Q29udGV4dC5nZXQoKSk7CiAKICAgICBGbG9hdFNpemUgaW1hZ2VTaXplID0gQml0bWFwSW1hZ2U6
OnNpemUoKTsKICAgICBpZiAoc2l6ZSkKQEAgLTgxLDkgKzgxLDYgQEAgYm9vbCBCaXRtYXBJbWFn
ZTo6Z2V0SEJJVE1BUE9mU2l6ZShIQklUTUFQIGJtcCwgY29uc3QgSW50U2l6ZSogc2l6ZSkKICAg
ICBlbHNlCiAgICAgICAgIGRyYXcoZ2MsIEZsb2F0UmVjdCgwLjBmLCAwLjBmLCBibXBJbmZvLmJt
V2lkdGgsIGJtcEluZm8uYm1IZWlnaHQpLCBGbG9hdFJlY3QoMC4wZiwgMC4wZiwgaW1hZ2VTaXpl
LndpZHRoKCksIGltYWdlU2l6ZS5oZWlnaHQoKSksIHsgQ29tcG9zaXRlT3BlcmF0b3I6OkNvcHkg
fSk7CiAKLSAgICAvLyBEbyBjbGVhbnVwCi0gICAgQ0dDb250ZXh0UmVsZWFzZShjZ0NvbnRleHQp
OwotCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy9Vc2VyQWdlbnRJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
VXNlckFnZW50SU9TLm1tCmluZGV4IDNhNjM0NGNlZjQzN2Y0MzU1MTJlNGI5NDA1NTc0OTcxNDkz
MWUyYmEuLjNiNmRlMWVjMGYzZmM1ZDE0MmRjZWM2YTVhYTZkMzFjYzhkODBlNTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9Vc2VyQWdlbnRJT1MubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1VzZXJBZ2VudElPUy5tbQpAQCAtODksMTEgKzg5LDEw
IEBAIFN0cmluZyBzdGFuZGFyZFVzZXJBZ2VudFdpdGhBcHBsaWNhdGlvbk5hbWUoY29uc3QgU3Ry
aW5nJiBhcHBsaWNhdGlvbk5hbWUsIGNvbnN0CiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBkZXBy
ZWNhdGUgYW5kIGV2ZW50dWFsbHkgcmVtb3ZlIHRoaXMgb2Jzb2xldGUgVUEgb3ZlcnJpZGU7CiAg
ICAgLy8gc2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTc5Mjcg
Zm9yIGRldGFpbHMuCiAgICAgLy8gQ2hlY2sgdG8gc2VlIGlmIHRoZXJlIGlzIGEgdXNlciBhZ2Vu
dCBvdmVycmlkZSBmb3IgYWxsIFdlYktpdCBjbGllbnRzLgotICAgIENGUHJvcGVydHlMaXN0UmVm
IG92ZXJyaWRlID0gQ0ZQcmVmZXJlbmNlc0NvcHlBcHBWYWx1ZShDRlNUUigiVXNlckFnZW50Iiks
IENGU1RSKCJjb20uYXBwbGUuV2ViRm91bmRhdGlvbiIpKTsKKyAgICBhdXRvIG92ZXJyaWRlID0g
YWRvcHRDRihDRlByZWZlcmVuY2VzQ29weUFwcFZhbHVlKENGU1RSKCJVc2VyQWdlbnQiKSwgQ0ZT
VFIoImNvbS5hcHBsZS5XZWJGb3VuZGF0aW9uIikpKTsKICAgICBpZiAob3ZlcnJpZGUpIHsKLSAg
ICAgICAgaWYgKENGR2V0VHlwZUlEKG92ZXJyaWRlKSA9PSBDRlN0cmluZ0dldFR5cGVJRCgpKQot
ICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PE5TU3RyaW5nICo+KENGQnJpZGdpbmdSZWxl
YXNlKG92ZXJyaWRlKSk7Ci0gICAgICAgIENGUmVsZWFzZShvdmVycmlkZSk7CisgICAgICAgIGlm
IChDRkdldFR5cGVJRChvdmVycmlkZS5nZXQoKSkgPT0gQ0ZTdHJpbmdHZXRUeXBlSUQoKSkKKyAg
ICAgICAgICAgIHJldHVybiAoX19icmlkZ2UgTlNTdHJpbmcgKilvdmVycmlkZS5nZXQoKTsKICAg
ICB9CiAKICAgICBTdHJpbmcgb3NWZXJzaW9uID0gdXNlckFnZW50T1NWZXJzaW9uLmlzRW1wdHko
KSAgPyBzeXN0ZW1NYXJrZXRpbmdWZXJzaW9uRm9yVXNlckFnZW50U3RyaW5nKCkgOiB1c2VyQWdl
bnRPU1ZlcnNpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2Fr
L1dlYkNvcmVUaHJlYWQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dlYkNv
cmVUaHJlYWQubW0KaW5kZXggNjYwMDc2YWRmNzY2Mzc0ZjQ5ZDVlZTVhOWIyOTNlOTlkNjRmY2Rk
Yy4uOTMyYzc4MmM2YmNiM2IyZDY3ZTkzNDAyZWM0MjFhMzQyZDM2YmY0MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV2ViQ29yZVRocmVhZC5tbQpAQCAtMjY2LDEw
ICsyNjYsOCBAQCBzdGF0aWMgdm9pZCBTZW5kRGVsZWdhdGVNZXNzYWdlKFJldGFpblB0cjxOU0lu
dm9jYXRpb24+JiYgaW52b2NhdGlvbikKICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAg
ICAgICAgICAgIGRlbGVnYXRlSW5mb3JtYXRpb24gPSBOU1N0cmluZ0Zyb21TZWxlY3RvcihbZGVs
ZWdhdGVJbnZvY2F0aW9uKCkgc2VsZWN0b3JdKTsKICAgICAKLSAgICAgICAgICAgICAgICBDRlN0
cmluZ1JlZiBtb2RlID0gQ0ZSdW5Mb29wQ29weUN1cnJlbnRNb2RlKENGUnVuTG9vcEdldE1haW4o
KSk7Ci0gICAgICAgICAgICAgICAgTlNMb2coQCIlczogZGVsZWdhdGUgKCVAKSBmYWlsZWQgdG8g
cmV0dXJuIGFmdGVyIHdhaXRpbmcgJWYgc2Vjb25kcy4gbWFpbiBydW4gbG9vcCBtb2RlOiAlQCIs
IF9fUFJFVFRZX0ZVTkNUSU9OX18sIGRlbGVnYXRlSW5mb3JtYXRpb24sIERlbGVnYXRlV2FpdElu
dGVydmFsLnNlY29uZHMoKSwgbW9kZSk7Ci0gICAgICAgICAgICAgICAgaWYgKG1vZGUpCi0gICAg
ICAgICAgICAgICAgICAgIENGUmVsZWFzZShtb2RlKTsKKyAgICAgICAgICAgICAgICBhdXRvIG1v
ZGUgPSBhZG9wdENGKENGUnVuTG9vcENvcHlDdXJyZW50TW9kZShDRlJ1bkxvb3BHZXRNYWluKCkp
KTsKKyAgICAgICAgICAgICAgICBOU0xvZyhAIiVzOiBkZWxlZ2F0ZSAoJUApIGZhaWxlZCB0byBy
ZXR1cm4gYWZ0ZXIgd2FpdGluZyAlZiBzZWNvbmRzLiBtYWluIHJ1biBsb29wIG1vZGU6ICVAIiwg
X19QUkVUVFlfRlVOQ1RJT05fXywgZGVsZWdhdGVJbmZvcm1hdGlvbiwgRGVsZWdhdGVXYWl0SW50
ZXJ2YWwuc2Vjb25kcygpLCBtb2RlLmdldCgpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQog
ICAgICAgICBkZWxlZ2F0ZUxvY2sudW5sb2NrKCk7CkBAIC02MzQsMTYgKzYzMiwxNCBAQCBzdGF0
aWMgdm9pZCogUnVuV2ViVGhyZWFkKHZvaWQqKQogICAgIHdlYlRocmVhZFJ1bkxvb3AgPSBDRlJ1
bkxvb3BHZXRDdXJyZW50KCk7CiAgICAgd2ViVGhyZWFkTlNSdW5Mb29wKCkgPSBbTlNSdW5Mb29w
IGN1cnJlbnRSdW5Mb29wXTsKIAotICAgIENGUnVuTG9vcE9ic2VydmVyUmVmIHdlYlJ1bkxvb3BM
b2NrT2JzZXJ2ZXJSZWYgPSBDRlJ1bkxvb3BPYnNlcnZlckNyZWF0ZShudWxscHRyLCBrQ0ZSdW5M
b29wQmVmb3JlVGltZXJzIHwga0NGUnVuTG9vcEJlZm9yZVNvdXJjZXMgfCBrQ0ZSdW5Mb29wQWZ0
ZXJXYWl0aW5nLCBZRVMsIDAsIFdlYlJ1bkxvb3BMb2NrLCBudWxscHRyKTsKLSAgICBDRlJ1bkxv
b3BBZGRPYnNlcnZlcih3ZWJUaHJlYWRSdW5Mb29wLCB3ZWJSdW5Mb29wTG9ja09ic2VydmVyUmVm
LCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMpOwotICAgIENGUmVsZWFzZSh3ZWJSdW5Mb29wTG9ja09i
c2VydmVyUmVmKTsKKyAgICBhdXRvIHdlYlJ1bkxvb3BMb2NrT2JzZXJ2ZXJSZWYgPSBhZG9wdENG
KENGUnVuTG9vcE9ic2VydmVyQ3JlYXRlKG51bGxwdHIsIGtDRlJ1bkxvb3BCZWZvcmVUaW1lcnMg
fCBrQ0ZSdW5Mb29wQmVmb3JlU291cmNlcyB8IGtDRlJ1bkxvb3BBZnRlcldhaXRpbmcsIFlFUywg
MCwgV2ViUnVuTG9vcExvY2ssIG51bGxwdHIpKTsKKyAgICBDRlJ1bkxvb3BBZGRPYnNlcnZlcih3
ZWJUaHJlYWRSdW5Mb29wLCB3ZWJSdW5Mb29wTG9ja09ic2VydmVyUmVmLmdldCgpLCBrQ0ZSdW5M
b29wQ29tbW9uTW9kZXMpOwogICAgIAogICAgIFdlYlRocmVhZEluaXRSdW5RdWV1ZSgpOwogCiAg
ICAgLy8gV2UgbXVzdCBoYXZlIHRoZSBsb2NrIHdoZW4gQ0EgcGFpbnRzIGluIHRoZSB3ZWIgdGhy
ZWFkLiBDQSBjb21taXRzIGF0IDIwMDAwMDAgc28gd2UgdXNlIGxhcmdlciBvcmRlciBudW1iZXIg
dGhhbiB0aGF0IHRvIGZyZWUgdGhlIGxvY2suCi0gICAgQ0ZSdW5Mb29wT2JzZXJ2ZXJSZWYgd2Vi
UnVuTG9vcFVubG9ja09ic2VydmVyUmVmID0gQ0ZSdW5Mb29wT2JzZXJ2ZXJDcmVhdGUobnVsbHB0
ciwga0NGUnVuTG9vcEJlZm9yZVdhaXRpbmcgfCBrQ0ZSdW5Mb29wRXhpdCwgWUVTLCAyNTAwMDAw
LCBXZWJSdW5Mb29wVW5sb2NrLCBudWxscHRyKTsgICAgCi0gICAgQ0ZSdW5Mb29wQWRkT2JzZXJ2
ZXIod2ViVGhyZWFkUnVuTG9vcCwgd2ViUnVuTG9vcFVubG9ja09ic2VydmVyUmVmLCBrQ0ZSdW5M
b29wQ29tbW9uTW9kZXMpOwotICAgIENGUmVsZWFzZSh3ZWJSdW5Mb29wVW5sb2NrT2JzZXJ2ZXJS
ZWYpOyAgICAKKyAgICBhdXRvIHdlYlJ1bkxvb3BVbmxvY2tPYnNlcnZlclJlZiA9IGFkb3B0Q0Yo
Q0ZSdW5Mb29wT2JzZXJ2ZXJDcmVhdGUobnVsbHB0ciwga0NGUnVuTG9vcEJlZm9yZVdhaXRpbmcg
fCBrQ0ZSdW5Mb29wRXhpdCwgWUVTLCAyNTAwMDAwLCBXZWJSdW5Mb29wVW5sb2NrLCBudWxscHRy
KSk7CisgICAgQ0ZSdW5Mb29wQWRkT2JzZXJ2ZXIod2ViVGhyZWFkUnVuTG9vcCwgd2ViUnVuTG9v
cFVubG9ja09ic2VydmVyUmVmLmdldCgpLCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMpOwogCiAgICAg
Q0ZSdW5Mb29wU291cmNlQ29udGV4dCBSZWxlYXNlU291cmNlQ29udGV4dCA9IHswLCBudWxscHRy
LCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBu
dWxscHRyLCBIYW5kbGVXZWJUaHJlYWRSZWxlYXNlU291cmNlfTsKICAgICBXZWJUaHJlYWRSZWxl
YXNlU291cmNlID0gQ0ZSdW5Mb29wU291cmNlQ3JlYXRlKG51bGxwdHIsIC0xLCAmUmVsZWFzZVNv
dXJjZUNvbnRleHQpOwpAQCAtODIzLDkgKzgxOSw4IEBAIHZvaWQgV2ViVGhyZWFkVW5sb2NrR3Vh
cmRGb3JNYWlsKHZvaWQpCiB7CiAgICAgQVNTRVJUKCFXZWJUaHJlYWRJc0N1cnJlbnQoKSk7CiAK
LSAgICBDRlJ1bkxvb3BPYnNlcnZlclJlZiBtYWluUnVuTG9vcFVubG9ja0d1YXJkT2JzZXJ2ZXIg
PSBDRlJ1bkxvb3BPYnNlcnZlckNyZWF0ZShudWxscHRyLCBrQ0ZSdW5Mb29wRW50cnksIFlFUywg
MCwgTWFpblJ1bkxvb3BVbmxvY2tHdWFyZCwgbnVsbHB0cik7Ci0gICAgQ0ZSdW5Mb29wQWRkT2Jz
ZXJ2ZXIoQ0ZSdW5Mb29wR2V0TWFpbigpLCBtYWluUnVuTG9vcFVubG9ja0d1YXJkT2JzZXJ2ZXIs
IGtDRlJ1bkxvb3BDb21tb25Nb2Rlcyk7Ci0gICAgQ0ZSZWxlYXNlKG1haW5SdW5Mb29wVW5sb2Nr
R3VhcmRPYnNlcnZlcik7CisgICAgYXV0byBtYWluUnVuTG9vcFVubG9ja0d1YXJkT2JzZXJ2ZXIg
PSBhZG9wdENGKENGUnVuTG9vcE9ic2VydmVyQ3JlYXRlKG51bGxwdHIsIGtDRlJ1bkxvb3BFbnRy
eSwgWUVTLCAwLCBNYWluUnVuTG9vcFVubG9ja0d1YXJkLCBudWxscHRyKSk7CisgICAgQ0ZSdW5M
b29wQWRkT2JzZXJ2ZXIoQ0ZSdW5Mb29wR2V0TWFpbigpLCBtYWluUnVuTG9vcFVubG9ja0d1YXJk
T2JzZXJ2ZXIuZ2V0KCksIGtDRlJ1bkxvb3BDb21tb25Nb2Rlcyk7CiB9CiAKIHZvaWQgX1dlYlRo
cmVhZFVubG9jaygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxh
dGZvcm1TcGVlY2hTeW50aGVzaXplck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTWFjLm1tCmluZGV4IDI5NThmMWJjZTM5ZWNlYzk4
NmRiODg1MjlmMTU4ZDcyMmZhZDY2Y2EuLmEyODVjMjJiMjIxMWNmYTY5MWE4ZTI4YjJkOTEwOTY5
ZDk5MDZlOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9y
bVNwZWVjaFN5bnRoZXNpemVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTWFjLm1tCkBAIC0yMTQsMTIgKzIxNCwxMiBAQCBQ
bGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyOjp+UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcigpCiAg
ICAgW21fcGxhdGZvcm1TcGVlY2hXcmFwcGVyLmdldCgpIGludmFsaWRhdGVdOwogfQogCi1zdGF0
aWMgTlNBcnJheSAqc3BlZWNoU3ludGhlc2lzR2V0Vm9pY2VJZGVudGlmaWVycygpCitzdGF0aWMg
UmV0YWluUHRyPENGQXJyYXlSZWY+IHNwZWVjaFN5bnRoZXNpc0dldFZvaWNlSWRlbnRpZmllcnMo
KQogewogICAgIC8vIEdldCBhbGwgdGhlIHZvaWNlcyBvZmZlcmVkIGJ5IFRUUy4KICAgICAvLyBC
eSBkZWZhdWx0IHNwZWVjaCBvbmx5IHJldHVybnMgInByZW1pdW0iIHZvaWNlcywgd2hpY2ggZG9l
cyBub3QgaW5jbHVkZSBhbGwgdGhlCiAgICAgLy8gaW50ZXJuYXRpb25hbCB2b2ljZXMuIFRoaXMg
YWxsb3dzIHVzIHRvIG9mZmVyIHNwZWVjaCBzeW50aGVzaXMgZm9yIGFsbCBzdXBwb3J0ZWQgbGFu
Z3VhZ2VzLgotICAgIHJldHVybiBDRkJyaWRnaW5nUmVsZWFzZShDb3B5U3BlZWNoU3ludGhlc2lz
Vm9pY2VzRm9yTW9kZSgoX19icmlkZ2UgQ0ZBcnJheVJlZilAWyBAIlZvaWNlR3JvdXBEZWZhdWx0
IiwgQCJWb2ljZUdyb3VwQ29tcGFjdCIgXSkpOworICAgIHJldHVybiBhZG9wdENGKENvcHlTcGVl
Y2hTeW50aGVzaXNWb2ljZXNGb3JNb2RlKChfX2JyaWRnZSBDRkFycmF5UmVmKUBbIEAiVm9pY2VH
cm91cERlZmF1bHQiLCBAIlZvaWNlR3JvdXBDb21wYWN0IiBdKSk7CiB9CiAKIHN0YXRpYyBOU1N0
cmluZyAqc3BlZWNoU3ludGhlc2lzR2V0RGVmYXVsdFZvaWNlSWRlbnRpZmllckZvckxvY2FsZShO
U0xvY2FsZSAqdXNlckxvY2FsZSkKQEAgLTIyNywxNSArMjI3LDE1IEBAIHN0YXRpYyBOU1N0cmlu
ZyAqc3BlZWNoU3ludGhlc2lzR2V0RGVmYXVsdFZvaWNlSWRlbnRpZmllckZvckxvY2FsZShOU0xv
Y2FsZSAqdXNlCiAgICAgaWYgKCF1c2VyTG9jYWxlKQogICAgICAgICByZXR1cm4gbmlsOwogCi0g
ICAgcmV0dXJuIChfX2JyaWRnZSBOU1N0cmluZyAqKUdldElkZW50aWZpZXJTdHJpbmdGb3JQcmVm
ZXJyZWRWb2ljZUluTGlzdFdpdGhMb2NhbGUoKF9fYnJpZGdlIENGQXJyYXlSZWYpc3BlZWNoU3lu
dGhlc2lzR2V0Vm9pY2VJZGVudGlmaWVycygpLCAoX19icmlkZ2UgQ0ZMb2NhbGVSZWYpdXNlckxv
Y2FsZSk7CisgICAgcmV0dXJuIChfX2JyaWRnZSBOU1N0cmluZyAqKUdldElkZW50aWZpZXJTdHJp
bmdGb3JQcmVmZXJyZWRWb2ljZUluTGlzdFdpdGhMb2NhbGUoc3BlZWNoU3ludGhlc2lzR2V0Vm9p
Y2VJZGVudGlmaWVycygpLmdldCgpLCAoX19icmlkZ2UgQ0ZMb2NhbGVSZWYpdXNlckxvY2FsZSk7
CiB9CiAKIHZvaWQgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcjo6aW5pdGlhbGl6ZVZvaWNlTGlz
dCgpCiB7Ci0gICAgTlNBcnJheSAqYXZhaWxhYmxlVm9pY2VzID0gc3BlZWNoU3ludGhlc2lzR2V0
Vm9pY2VJZGVudGlmaWVycygpOwotICAgIE5TVUludGVnZXIgY291bnQgPSBbYXZhaWxhYmxlVm9p
Y2VzIGNvdW50XTsKKyAgICBhdXRvIGF2YWlsYWJsZVZvaWNlcyA9IHNwZWVjaFN5bnRoZXNpc0dl
dFZvaWNlSWRlbnRpZmllcnMoKTsKKyAgICBOU1VJbnRlZ2VyIGNvdW50ID0gWyhfX2JyaWRnZSBO
U0FycmF5ICopYXZhaWxhYmxlVm9pY2VzLmdldCgpIGNvdW50XTsKICAgICBmb3IgKE5TVUludGVn
ZXIgayA9IDA7IGsgPCBjb3VudDsgaysrKSB7Ci0gICAgICAgIE5TU3RyaW5nICp2b2ljZU5hbWUg
PSBbYXZhaWxhYmxlVm9pY2VzIG9iamVjdEF0SW5kZXg6a107CisgICAgICAgIE5TU3RyaW5nICp2
b2ljZU5hbWUgPSBbKF9fYnJpZGdlIE5TQXJyYXkgKilhdmFpbGFibGVWb2ljZXMuZ2V0KCkgb2Jq
ZWN0QXRJbmRleDprXTsKICAgICAgICAgTlNEaWN0aW9uYXJ5ICphdHRyaWJ1dGVzID0gW05TU3Bl
ZWNoU3ludGhlc2l6ZXIgYXR0cmlidXRlc0ZvclZvaWNlOnZvaWNlTmFtZV07CiAKICAgICAgICAg
TlNTdHJpbmcgKnZvaWNlVVJJID0gW2F0dHJpYnV0ZXMgb2JqZWN0Rm9yS2V5Ok5TVm9pY2VJZGVu
dGlmaWVyXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbHVnaW5C
bG9ja2xpc3QubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGx1Z2luQmxvY2tsaXN0
Lm1tCmluZGV4IGE4MGI0YWZlYzc2MWQ4Nzk4N2ZmOTEyMDczNDYwYjkzOWU0MGY3NGYuLjEzNmY2
ZWRmNjliNGRjNmRkNzkyYmExM2M0YzhmY2RlYzhkOGU0MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9QbHVnaW5CbG9ja2xpc3QubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL1BsdWdpbkJsb2NrbGlzdC5tbQpAQCAtNjksOCArNjksOCBAQCBib29s
IFBsdWdpbkJsb2NrbGlzdDo6aXNQbHVnaW5VcGRhdGVBdmFpbGFibGUoTlNTdHJpbmcgKmJ1bmRs
ZUlkZW50aWZpZXIpCiAKIHN0ZDo6dW5pcXVlX3B0cjxQbHVnaW5CbG9ja2xpc3Q+IFBsdWdpbkJs
b2NrbGlzdDo6Y3JlYXRlKE5TRGljdGlvbmFyeSAqcHJvcGVydHlMaXN0KQogewotICAgIENGRGlj
dGlvbmFyeVJlZiBzeXN0ZW1WZXJzaW9uRGljdGlvbmFyeSA9IF9DRkNvcHlTeXN0ZW1WZXJzaW9u
RGljdGlvbmFyeSgpOwotICAgIENGU3RyaW5nUmVmIG9zVmVyc2lvbiA9IHN0YXRpY19jYXN0PENG
U3RyaW5nUmVmPihDRkRpY3Rpb25hcnlHZXRWYWx1ZShzeXN0ZW1WZXJzaW9uRGljdGlvbmFyeSwg
X2tDRlN5c3RlbVZlcnNpb25Qcm9kdWN0VmVyc2lvbktleSkpOworICAgIGF1dG8gc3lzdGVtVmVy
c2lvbkRpY3Rpb25hcnkgPSBhZG9wdENGKF9DRkNvcHlTeXN0ZW1WZXJzaW9uRGljdGlvbmFyeSgp
KTsKKyAgICBDRlN0cmluZ1JlZiBvc1ZlcnNpb24gPSBzdGF0aWNfY2FzdDxDRlN0cmluZ1JlZj4o
Q0ZEaWN0aW9uYXJ5R2V0VmFsdWUoc3lzdGVtVmVyc2lvbkRpY3Rpb25hcnkuZ2V0KCksIF9rQ0ZT
eXN0ZW1WZXJzaW9uUHJvZHVjdFZlcnNpb25LZXkpKTsKIAogICAgIE5TRGljdGlvbmFyeSAqZGlj
dGlvbmFyeSA9IFtwcm9wZXJ0eUxpc3Qgb2JqZWN0Rm9yS2V5OkAiUGx1Z0luQmxvY2tsaXN0Il07
CiAKQEAgLTExMiw4ICsxMTIsNiBAQCBzdGQ6OnVuaXF1ZV9wdHI8UGx1Z2luQmxvY2tsaXN0PiBQ
bHVnaW5CbG9ja2xpc3Q6OmNyZWF0ZShOU0RpY3Rpb25hcnkgKnByb3BlcnR5TAogICAgICAgICB9
CiAgICAgfQogCi0gICAgQ0ZSZWxlYXNlKHN5c3RlbVZlcnNpb25EaWN0aW9uYXJ5KTsKLQogICAg
IHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8UGx1Z2luQmxvY2tsaXN0PihuZXcgUGx1Z2luQmxvY2ts
aXN0KGJ1bmRsZUlEVG9NaW5pbXVtU2VjdXJlVmVyc2lvbiwgYnVuZGxlSURUb01pbmltdW1Db21w
YXRpYmxlVmVyc2lvbiwgYnVuZGxlSURUb0Jsb2NrZWRWZXJzaW9ucywgYnVuZGxlSURzV2l0aEF2
YWlsYWJsZVVwZGF0ZXMpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL1dlYkdMQmxvY2tsaXN0Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dl
YkdMQmxvY2tsaXN0Lm1tCmluZGV4IDZjMWQyNmU0NzlhMDI4MTdiZGQ1YjE4NmZhYTJhYTc2YTVl
Y2JkYmMuLmQwNGVlMjE3NGQxZGJjNzdkN2NhZTg1YTNmYWEyNWIwMTgxNTc4NDUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJHTEJsb2NrbGlzdC5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViR0xCbG9ja2xpc3QubW0KQEAgLTE2OCwxMCAr
MTY4LDkgQEAgc3RhdGljIGJvb2wgbWF0Y2hlc0J1aWxkSW5mbyhPU0J1aWxkSW5mbyBtYWNoaW5l
SW5mbywgT1NCdWlsZEluZm8gYmxvY2tJbmZvLCBXZWIKIAogc3RkOjp1bmlxdWVfcHRyPFdlYkdM
QmxvY2tsaXN0PiBXZWJHTEJsb2NrbGlzdDo6Y3JlYXRlKE5TRGljdGlvbmFyeSAqcHJvcGVydHlM
aXN0KQogewotICAgIENGRGljdGlvbmFyeVJlZiBzeXN0ZW1WZXJzaW9uRGljdGlvbmFyeSA9IF9D
RkNvcHlTeXN0ZW1WZXJzaW9uRGljdGlvbmFyeSgpOwotICAgIENGU3RyaW5nUmVmIG9zQnVpbGQg
PSBzdGF0aWNfY2FzdDxDRlN0cmluZ1JlZj4oQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoc3lzdGVtVmVy
c2lvbkRpY3Rpb25hcnksIF9rQ0ZTeXN0ZW1WZXJzaW9uQnVpbGRWZXJzaW9uS2V5KSk7CisgICAg
YXV0byBzeXN0ZW1WZXJzaW9uRGljdGlvbmFyeSA9IGFkb3B0Q0YoX0NGQ29weVN5c3RlbVZlcnNp
b25EaWN0aW9uYXJ5KCkpOworICAgIENGU3RyaW5nUmVmIG9zQnVpbGQgPSBzdGF0aWNfY2FzdDxD
RlN0cmluZ1JlZj4oQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoc3lzdGVtVmVyc2lvbkRpY3Rpb25hcnku
Z2V0KCksIF9rQ0ZTeXN0ZW1WZXJzaW9uQnVpbGRWZXJzaW9uS2V5KSk7CiAgICAgT1NCdWlsZElu
Zm8gYnVpbGRJbmZvID0gYnVpbGRJbmZvRnJvbU9TQnVpbGRTdHJpbmcoKF9fYnJpZGdlIE5TU3Ry
aW5nICopb3NCdWlsZCk7Ci0gICAgQ0ZSZWxlYXNlKHN5c3RlbVZlcnNpb25EaWN0aW9uYXJ5KTsK
IAogICAgIGlmICghYnVpbGRJbmZvLm1ham9yKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvQXVk
aW9TYW1wbGVCdWZmZXJDb21wcmVzc29yLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFyZWNvcmRlci9jb2NvYS9BdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IubW0KaW5kZXggN2Uy
ZjZhYTUyZGNkZTMyMTQ3MDE1OTE2NmU1NDhhMGNjOWFmNGY1My4uYzc5YTQ3OTYyNDAyYmIxMzI5
MzNjODdiZmU5OGQyMzdmNTZlZTA2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFyZWNvcmRlci9jb2NvYS9BdWRpb1NhbXBsZUJ1ZmZlckNvbXByZXNzb3IubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9BdWRpb1NhbXBs
ZUJ1ZmZlckNvbXByZXNzb3IubW0KQEAgLTIyNyw5ICsyMjcsOCBAQCB2b2lkIEF1ZGlvU2FtcGxl
QnVmZmVyQ29tcHJlc3Nvcjo6YXR0YWNoUHJpbWluZ1RyaW1zSWZOZWVkZWQoQ01TYW1wbGVCdWZm
ZXJSZWYgYgogICAgIGlmIChDTVRJTUVfQ09NUEFSRV9JTkxJTkUoa0NNVGltZVplcm8sIDwsIG1f
cmVtYWluaW5nUHJpbWVEdXJhdGlvbikpIHsKICAgICAgICAgQ01UaW1lIHNhbXBsZUR1cmF0aW9u
ID0gQ01TYW1wbGVCdWZmZXJHZXREdXJhdGlvbihidWZmZXIpOwogICAgICAgICBDTVRpbWUgdHJp
bUR1cmF0aW9uID0gQ01UaW1lTWluaW11bShzYW1wbGVEdXJhdGlvbiwgbV9yZW1haW5pbmdQcmlt
ZUR1cmF0aW9uKTsKLSAgICAgICAgQ0ZEaWN0aW9uYXJ5UmVmIHRyaW1BdFN0YXJ0RGljdCA9IENN
VGltZUNvcHlBc0RpY3Rpb25hcnkodHJpbUR1cmF0aW9uLCBrQ0ZBbGxvY2F0b3JEZWZhdWx0KTsK
LSAgICAgICAgQ01TZXRBdHRhY2htZW50KGJ1ZmZlciwga0NNU2FtcGxlQnVmZmVyQXR0YWNobWVu
dEtleV9UcmltRHVyYXRpb25BdFN0YXJ0LCB0cmltQXRTdGFydERpY3QsIGtDTUF0dGFjaG1lbnRN
b2RlX1Nob3VsZFByb3BhZ2F0ZSk7Ci0gICAgICAgIENGUmVsZWFzZSh0cmltQXRTdGFydERpY3Qp
OworICAgICAgICBhdXRvIHRyaW1BdFN0YXJ0RGljdCA9IGFkb3B0Q0YoQ01UaW1lQ29weUFzRGlj
dGlvbmFyeSh0cmltRHVyYXRpb24sIGtDRkFsbG9jYXRvckRlZmF1bHQpKTsKKyAgICAgICAgQ01T
ZXRBdHRhY2htZW50KGJ1ZmZlciwga0NNU2FtcGxlQnVmZmVyQXR0YWNobWVudEtleV9UcmltRHVy
YXRpb25BdFN0YXJ0LCB0cmltQXRTdGFydERpY3QuZ2V0KCksIGtDTUF0dGFjaG1lbnRNb2RlX1No
b3VsZFByb3BhZ2F0ZSk7CiAgICAgICAgIG1fcmVtYWluaW5nUHJpbWVEdXJhdGlvbiA9IENNVGlt
ZVN1YnRyYWN0KG1fcmVtYWluaW5nUHJpbWVEdXJhdGlvbiwgdHJpbUR1cmF0aW9uKTsKICAgICB9
CiB9CkBAIC0zNDcsNyArMzQ2LDcgQEAgT1NTdGF0dXMgQXVkaW9TYW1wbGVCdWZmZXJDb21wcmVz
c29yOjpwcm92aWRlU291cmNlRGF0YU51bU91dHB1dFBhY2tldHMoVUludDMyKgogICAgICAgICAg
ICAgICAgICAgICBicmVhazsKIAogICAgICAgICAgICAgICAgIGF1dG8gc2FtcGxlQnVmZmVyID0g
YWRvcHRDRigoQ01TYW1wbGVCdWZmZXJSZWYpKGNvbnN0X2Nhc3Q8dm9pZCo+KENNQnVmZmVyUXVl
dWVEZXF1ZXVlQW5kUmV0YWluKG1faW5wdXRCdWZmZXJRdWV1ZS5nZXQoKSkpKSk7Ci0gICAgICAg
ICAgICAgICAgbV9zYW1wbGVCbG9ja0J1ZmZlciA9IGFkb3B0Q0YoKENNQmxvY2tCdWZmZXJSZWYp
KGNvbnN0X2Nhc3Q8dm9pZCo+KENGUmV0YWluKENNU2FtcGxlQnVmZmVyR2V0RGF0YUJ1ZmZlcihz
YW1wbGVCdWZmZXIuZ2V0KCkpKSkpKTsKKyAgICAgICAgICAgICAgICBtX3NhbXBsZUJsb2NrQnVm
ZmVyID0gQ01TYW1wbGVCdWZmZXJHZXREYXRhQnVmZmVyKHNhbXBsZUJ1ZmZlci5nZXQoKSk7CiAg
ICAgICAgICAgICAgICAgaWYgKCFtX3NhbXBsZUJsb2NrQnVmZmVyKSB7CiAgICAgICAgICAgICAg
ICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhU3RyZWFtLCAiQXVkaW9TYW1wbGVCdWZmZXJD
b21wcmVzc29yIENNU2FtcGxlQnVmZmVyR2V0RGF0YUJ1ZmZlciBmYWlsZWQiKTsKICAgICAgICAg
ICAgICAgICAgICAgbV9zYW1wbGVCbG9ja0J1ZmZlclNpemUgPSAwOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9WaWRlb1NhbXBsZUJ1ZmZl
ckNvbXByZXNzb3IubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2Nv
Y29hL1ZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5tbQppbmRleCAyODcxNTEzODA3Y2FkNjhj
YmRmYzNmYmU0ZWViMTdmNDA2MzM5MTkzLi5lMDNlNzcwZjBjYWE5YmRjNmIxNmQ1YWM3NGJiMzc4
NmRmOGY0YWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29y
ZGVyL2NvY29hL1ZpZGVvU2FtcGxlQnVmZmVyQ29tcHJlc3Nvci5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL1ZpZGVvU2FtcGxlQnVmZmVyQ29tcHJl
c3Nvci5tbQpAQCAtMTA5LDkgKzEwOSw4IEBAIHZvaWQgVmlkZW9TYW1wbGVCdWZmZXJDb21wcmVz
c29yOjp2aWRlb0NvbXByZXNzaW9uQ2FsbGJhY2sodm9pZCAqcmVmQ29uLCB2b2lkKiwKIHN0YXRp
YyBpbmxpbmUgT1NTdGF0dXMgc2V0Q29tcHJlc3Npb25TZXNzaW9uUHJvcGVydHkoVlRDb21wcmVz
c2lvblNlc3Npb25SZWYgdnRTZXNzaW9uLCBDRlN0cmluZ1JlZiBrZXksIHVpbnQzMl90IHZhbHVl
KQogewogICAgIGludDY0X3QgdmFsdWU2NCA9IHZhbHVlOwotICAgIENGTnVtYmVyUmVmIGNmVmFs
dWUgPSBDRk51bWJlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrQ0ZOdW1iZXJTSW50NjRU
eXBlLCAmdmFsdWU2NCk7Ci0gICAgT1NTdGF0dXMgc3RhdHVzID0gVlRTZXNzaW9uU2V0UHJvcGVy
dHkodnRTZXNzaW9uLCBrZXksIGNmVmFsdWUpOwotICAgIENGUmVsZWFzZShjZlZhbHVlKTsKKyAg
ICBhdXRvIGNmVmFsdWUgPSBhZG9wdENGKENGTnVtYmVyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1
bHQsIGtDRk51bWJlclNJbnQ2NFR5cGUsICZ2YWx1ZTY0KSk7CisgICAgT1NTdGF0dXMgc3RhdHVz
ID0gVlRTZXNzaW9uU2V0UHJvcGVydHkodnRTZXNzaW9uLCBrZXksIGNmVmFsdWUuZ2V0KCkpOwog
ICAgIHJldHVybiBzdGF0dXM7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY2YvRm9ybURhdGFTdHJlYW1DRk5ldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NmL0Zvcm1EYXRhU3RyZWFtQ0ZOZXQuY3BwCmluZGV4IDNmNjhlYWQz
NDEyNjJmNTZiZmUyMjEyMDMyYmU2ODM3NmU4YzgwN2YuLmQ3ZGQ2M2ZlYWJmYjAzYzAxOTJmMjQ5
Zjg2OGEzNDEwMDNjYTQ1ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY2YvRm9ybURhdGFTdHJlYW1DRk5ldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jZi9Gb3JtRGF0YVN0cmVhbUNGTmV0LmNwcApAQCAtMTAzLDcgKzEwMyw3
IEBAIHN0cnVjdCBGb3JtU3RyZWFtRmllbGRzIHsKICAgICBGb3JtRGF0YUZvclVwbG9hZCBkYXRh
OwogICAgIFNjaGVkdWxlUGFpckhhc2hTZXQgc2NoZWR1bGVkUnVuTG9vcFBhaXJzOwogICAgIFZl
Y3RvcjxGb3JtRGF0YUVsZW1lbnQ+IHJlbWFpbmluZ0VsZW1lbnRzOyAvLyBpbiByZXZlcnNlIG9y
ZGVyCi0gICAgQ0ZSZWFkU3RyZWFtUmVmIGN1cnJlbnRTdHJlYW0geyBudWxscHRyIH07CisgICAg
UmV0YWluUHRyPENGUmVhZFN0cmVhbVJlZj4gY3VycmVudFN0cmVhbTsKICAgICBsb25nIGxvbmcg
Y3VycmVudFN0cmVhbVJhbmdlTGVuZ3RoIHsgQmxvYkRhdGFJdGVtOjp0b0VuZE9mRmlsZSB9Owog
ICAgIE1hbGxvY1B0cjxjaGFyLCBXVEY6OlZlY3Rvck1hbGxvYz4gY3VycmVudERhdGE7CiAgICAg
Q0ZSZWFkU3RyZWFtUmVmIGZvcm1TdHJlYW0geyBudWxscHRyIH07CkBAIC0xMTcsMTAgKzExNyw5
IEBAIHN0YXRpYyB2b2lkIGNsb3NlQ3VycmVudFN0cmVhbShGb3JtU3RyZWFtRmllbGRzKiBmb3Jt
KQogICAgIEFTU0VSVChmb3JtLT5zdHJlYW1Jc0JlaW5nT3BlbmVkT3JDbG9zZWRMb2NrLmlzSGVs
ZCgpKTsKIAogICAgIGlmIChmb3JtLT5jdXJyZW50U3RyZWFtKSB7Ci0gICAgICAgIENGUmVhZFN0
cmVhbUNsb3NlKGZvcm0tPmN1cnJlbnRTdHJlYW0pOwotICAgICAgICBDRlJlYWRTdHJlYW1TZXRD
bGllbnQoZm9ybS0+Y3VycmVudFN0cmVhbSwga0NGU3RyZWFtRXZlbnROb25lLCAwLCAwKTsKLSAg
ICAgICAgQ0ZSZWxlYXNlKGZvcm0tPmN1cnJlbnRTdHJlYW0pOwotICAgICAgICBmb3JtLT5jdXJy
ZW50U3RyZWFtID0gMDsKKyAgICAgICAgQ0ZSZWFkU3RyZWFtQ2xvc2UoZm9ybS0+Y3VycmVudFN0
cmVhbS5nZXQoKSk7CisgICAgICAgIENGUmVhZFN0cmVhbVNldENsaWVudChmb3JtLT5jdXJyZW50
U3RyZWFtLmdldCgpLCBrQ0ZTdHJlYW1FdmVudE5vbmUsIDAsIDApOworICAgICAgICBmb3JtLT5j
dXJyZW50U3RyZWFtID0gbnVsbHB0cjsKICAgICAgICAgZm9ybS0+Y3VycmVudFN0cmVhbVJhbmdl
TGVuZ3RoID0gQmxvYkRhdGFJdGVtOjp0b0VuZE9mRmlsZTsKICAgICB9CiAgICAgZm9ybS0+Y3Vy
cmVudERhdGEgPSBudWxscHRyOwpAQCAtMTQzLDcgKzE0Miw3IEBAIHN0YXRpYyBib29sIGFkdmFu
Y2VDdXJyZW50U3RyZWFtKEZvcm1TdHJlYW1GaWVsZHMqIGZvcm0pCiAgICAgICAgIFtmb3JtXSAo
VmVjdG9yPGNoYXI+JiBieXRlcykgewogICAgICAgICAgICAgc2l6ZV90IHNpemUgPSBieXRlcy5z
aXplKCk7CiAgICAgICAgICAgICBNYWxsb2NQdHI8Y2hhciwgV1RGOjpWZWN0b3JNYWxsb2M+IGRh
dGEgPSBieXRlcy5yZWxlYXNlQnVmZmVyKCk7Ci0gICAgICAgICAgICBmb3JtLT5jdXJyZW50U3Ry
ZWFtID0gQ0ZSZWFkU3RyZWFtQ3JlYXRlV2l0aEJ5dGVzTm9Db3B5KDAsIHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgVUludDgqPihkYXRhLmdldCgpKSwgc2l6ZSwga0NGQWxsb2NhdG9yTnVsbCk7Cisg
ICAgICAgICAgICBmb3JtLT5jdXJyZW50U3RyZWFtID0gYWRvcHRDRihDRlJlYWRTdHJlYW1DcmVh
dGVXaXRoQnl0ZXNOb0NvcHkoMCwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBVSW50OCo+KGRhdGEu
Z2V0KCkpLCBzaXplLCBrQ0ZBbGxvY2F0b3JOdWxsKSk7CiAgICAgICAgICAgICBmb3JtLT5jdXJy
ZW50RGF0YSA9IFdURk1vdmUoZGF0YSk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAg
ICAgfSwgW2Zvcm1dIChjb25zdCBGb3JtRGF0YUVsZW1lbnQ6OkVuY29kZWRGaWxlRGF0YSYgZmls
ZURhdGEpIHsKQEAgLTE1MiwxNCArMTUxLDE0IEBAIHN0YXRpYyBib29sIGFkdmFuY2VDdXJyZW50
U3RyZWFtKEZvcm1TdHJlYW1GaWVsZHMqIGZvcm0pCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCiAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIHBhdGggPSBmaWxlRGF0YS5maWxlbmFt
ZTsKLSAgICAgICAgICAgIGZvcm0tPmN1cnJlbnRTdHJlYW0gPSBDRlJlYWRTdHJlYW1DcmVhdGVX
aXRoRmlsZSgwLCBGaWxlU3lzdGVtOjpwYXRoQXNVUkwocGF0aCkuZ2V0KCkpOworICAgICAgICAg
ICAgZm9ybS0+Y3VycmVudFN0cmVhbSA9IGFkb3B0Q0YoQ0ZSZWFkU3RyZWFtQ3JlYXRlV2l0aEZp
bGUoMCwgRmlsZVN5c3RlbTo6cGF0aEFzVVJMKHBhdGgpLmdldCgpKSk7CiAgICAgICAgICAgICBp
ZiAoIWZvcm0tPmN1cnJlbnRTdHJlYW0pIHsKICAgICAgICAgICAgICAgICAvLyBUaGUgZmlsZSBt
dXN0IGhhdmUgYmVlbiByZW1vdmVkIG9yIGJlY29tZSB1bnJlYWRhYmxlLgogICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChmaWxlRGF0
YS5maWxlU3RhcnQgPiAwKSB7CiAgICAgICAgICAgICAgICAgUmV0YWluUHRyPENGTnVtYmVyUmVm
PiBwb3NpdGlvbiA9IGFkb3B0Q0YoQ0ZOdW1iZXJDcmVhdGUoMCwga0NGTnVtYmVyTG9uZ0xvbmdU
eXBlLCAmZmlsZURhdGEuZmlsZVN0YXJ0KSk7Ci0gICAgICAgICAgICAgICAgQ0ZSZWFkU3RyZWFt
U2V0UHJvcGVydHkoZm9ybS0+Y3VycmVudFN0cmVhbSwga0NGU3RyZWFtUHJvcGVydHlGaWxlQ3Vy
cmVudE9mZnNldCwgcG9zaXRpb24uZ2V0KCkpOworICAgICAgICAgICAgICAgIENGUmVhZFN0cmVh
bVNldFByb3BlcnR5KGZvcm0tPmN1cnJlbnRTdHJlYW0uZ2V0KCksIGtDRlN0cmVhbVByb3BlcnR5
RmlsZUN1cnJlbnRPZmZzZXQsIHBvc2l0aW9uLmdldCgpKTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIGZvcm0tPmN1cnJlbnRTdHJlYW1SYW5nZUxlbmd0aCA9IGZpbGVEYXRhLmZpbGVMZW5n
dGg7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTE3NiwxMyArMTc1LDEzIEBAIHN0YXRp
YyBib29sIGFkdmFuY2VDdXJyZW50U3RyZWFtKEZvcm1TdHJlYW1GaWVsZHMqIGZvcm0pCiAKICAg
ICAvLyBTZXQgdXAgdGhlIGNhbGxiYWNrLgogICAgIENGU3RyZWFtQ2xpZW50Q29udGV4dCBjb250
ZXh0ID0geyAwLCBmb3JtLCAwLCAwLCAwIH07Ci0gICAgQ0ZSZWFkU3RyZWFtU2V0Q2xpZW50KGZv
cm0tPmN1cnJlbnRTdHJlYW0sIGtDRlN0cmVhbUV2ZW50SGFzQnl0ZXNBdmFpbGFibGUgfCBrQ0ZT
dHJlYW1FdmVudEVycm9yT2NjdXJyZWQgfCBrQ0ZTdHJlYW1FdmVudEVuZEVuY291bnRlcmVkLAor
ICAgIENGUmVhZFN0cmVhbVNldENsaWVudChmb3JtLT5jdXJyZW50U3RyZWFtLmdldCgpLCBrQ0ZT
dHJlYW1FdmVudEhhc0J5dGVzQXZhaWxhYmxlIHwga0NGU3RyZWFtRXZlbnRFcnJvck9jY3VycmVk
IHwga0NGU3RyZWFtRXZlbnRFbmRFbmNvdW50ZXJlZCwKICAgICAgICAgZm9ybUV2ZW50Q2FsbGJh
Y2ssICZjb250ZXh0KTsKIAogICAgIC8vIFNjaGVkdWxlIHdpdGggdGhlIGN1cnJlbnQgc2V0IG9m
IHJ1biBsb29wcy4KICAgICBTY2hlZHVsZVBhaXJIYXNoU2V0OjppdGVyYXRvciBlbmQgPSBmb3Jt
LT5zY2hlZHVsZWRSdW5Mb29wUGFpcnMuZW5kKCk7CiAgICAgZm9yIChTY2hlZHVsZVBhaXJIYXNo
U2V0OjppdGVyYXRvciBpdCA9IGZvcm0tPnNjaGVkdWxlZFJ1bkxvb3BQYWlycy5iZWdpbigpOyBp
dCAhPSBlbmQ7ICsraXQpCi0gICAgICAgIENGUmVhZFN0cmVhbVNjaGVkdWxlV2l0aFJ1bkxvb3Ao
Zm9ybS0+Y3VycmVudFN0cmVhbSwgKCppdCktPnJ1bkxvb3AoKSwgKCppdCktPm1vZGUoKSk7Cisg
ICAgICAgIENGUmVhZFN0cmVhbVNjaGVkdWxlV2l0aFJ1bkxvb3AoZm9ybS0+Y3VycmVudFN0cmVh
bS5nZXQoKSwgKCppdCktPnJ1bkxvb3AoKSwgKCppdCktPm1vZGUoKSk7CiAKICAgICByZXR1cm4g
dHJ1ZTsKIH0KQEAgLTE5Niw3ICsxOTUsNyBAQCBzdGF0aWMgYm9vbCBvcGVuTmV4dFN0cmVhbShG
b3JtU3RyZWFtRmllbGRzKiBmb3JtKQogICAgIC8vIFNraXAgb3ZlciBhbnkgc3RyZWFtcyB3ZSBj
YW4ndCBvcGVuLgogICAgIGlmICghYWR2YW5jZUN1cnJlbnRTdHJlYW0oZm9ybSkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICB3aGlsZSAoZm9ybS0+Y3VycmVudFN0cmVhbSAmJiAhQ0ZSZWFk
U3RyZWFtT3Blbihmb3JtLT5jdXJyZW50U3RyZWFtKSkgeworICAgIHdoaWxlIChmb3JtLT5jdXJy
ZW50U3RyZWFtICYmICFDRlJlYWRTdHJlYW1PcGVuKGZvcm0tPmN1cnJlbnRTdHJlYW0uZ2V0KCkp
KSB7CiAgICAgICAgIGlmICghYWR2YW5jZUN1cnJlbnRTdHJlYW0oZm9ybSkpCiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfQpAQCAtMjYyLDkgKzI2MSw5IEBAIHN0YXRpYyBDRkluZGV4
IGZvcm1SZWFkKENGUmVhZFN0cmVhbVJlZiwgVUludDgqIGJ1ZmZlciwgQ0ZJbmRleCBidWZmZXJM
ZW5ndGgsIENGCiAgICAgICAgIENGSW5kZXggYnl0ZXNUb1JlYWQgPSBidWZmZXJMZW5ndGg7CiAg
ICAgICAgIGlmIChmb3JtLT5jdXJyZW50U3RyZWFtUmFuZ2VMZW5ndGggIT0gQmxvYkRhdGFJdGVt
Ojp0b0VuZE9mRmlsZSAmJiBmb3JtLT5jdXJyZW50U3RyZWFtUmFuZ2VMZW5ndGggPCBieXRlc1Rv
UmVhZCkKICAgICAgICAgICAgIGJ5dGVzVG9SZWFkID0gc3RhdGljX2Nhc3Q8Q0ZJbmRleD4oZm9y
bS0+Y3VycmVudFN0cmVhbVJhbmdlTGVuZ3RoKTsKLSAgICAgICAgQ0ZJbmRleCBieXRlc1JlYWQg
PSBDRlJlYWRTdHJlYW1SZWFkKGZvcm0tPmN1cnJlbnRTdHJlYW0sIGJ1ZmZlciwgYnl0ZXNUb1Jl
YWQpOworICAgICAgICBDRkluZGV4IGJ5dGVzUmVhZCA9IENGUmVhZFN0cmVhbVJlYWQoZm9ybS0+
Y3VycmVudFN0cmVhbS5nZXQoKSwgYnVmZmVyLCBieXRlc1RvUmVhZCk7CiAgICAgICAgIGlmIChi
eXRlc1JlYWQgPCAwKSB7Ci0gICAgICAgICAgICAqZXJyb3IgPSBDRlJlYWRTdHJlYW1HZXRFcnJv
cihmb3JtLT5jdXJyZW50U3RyZWFtKTsKKyAgICAgICAgICAgICplcnJvciA9IENGUmVhZFN0cmVh
bUdldEVycm9yKGZvcm0tPmN1cnJlbnRTdHJlYW0uZ2V0KCkpOwogICAgICAgICAgICAgcmV0dXJu
IC0xOwogICAgICAgICB9CiAgICAgICAgIGlmIChieXRlc1JlYWQgPiAwKSB7CkBAIC0yODgsMTQg
KzI4NywxNCBAQCBzdGF0aWMgQm9vbGVhbiBmb3JtQ2FuUmVhZChDRlJlYWRTdHJlYW1SZWYgc3Ry
ZWFtLCB2b2lkKiBjb250ZXh0KQogewogICAgIEZvcm1TdHJlYW1GaWVsZHMqIGZvcm0gPSBzdGF0
aWNfY2FzdDxGb3JtU3RyZWFtRmllbGRzKj4oY29udGV4dCk7CiAKLSAgICB3aGlsZSAoZm9ybS0+
Y3VycmVudFN0cmVhbSAmJiBDRlJlYWRTdHJlYW1HZXRTdGF0dXMoZm9ybS0+Y3VycmVudFN0cmVh
bSkgPT0ga0NGU3RyZWFtU3RhdHVzQXRFbmQpCisgICAgd2hpbGUgKGZvcm0tPmN1cnJlbnRTdHJl
YW0gJiYgQ0ZSZWFkU3RyZWFtR2V0U3RhdHVzKGZvcm0tPmN1cnJlbnRTdHJlYW0uZ2V0KCkpID09
IGtDRlN0cmVhbVN0YXR1c0F0RW5kKQogICAgICAgICBvcGVuTmV4dFN0cmVhbShmb3JtKTsKIAog
ICAgIGlmICghZm9ybS0+Y3VycmVudFN0cmVhbSkgewogICAgICAgICBDRlJlYWRTdHJlYW1TaWdu
YWxFdmVudChzdHJlYW0sIGtDRlN0cmVhbUV2ZW50RW5kRW5jb3VudGVyZWQsIDApOwogICAgICAg
ICByZXR1cm4gRkFMU0U7CiAgICAgfQotICAgIHJldHVybiBDRlJlYWRTdHJlYW1IYXNCeXRlc0F2
YWlsYWJsZShmb3JtLT5jdXJyZW50U3RyZWFtKTsKKyAgICByZXR1cm4gQ0ZSZWFkU3RyZWFtSGFz
Qnl0ZXNBdmFpbGFibGUoZm9ybS0+Y3VycmVudFN0cmVhbS5nZXQoKSk7CiB9CiAKIHN0YXRpYyB2
b2lkIGZvcm1DbG9zZShDRlJlYWRTdHJlYW1SZWYsIHZvaWQqIGNvbnRleHQpCkBAIC0zMjYsNyAr
MzI1LDcgQEAgc3RhdGljIHZvaWQgZm9ybVNjaGVkdWxlKENGUmVhZFN0cmVhbVJlZiwgQ0ZSdW5M
b29wUmVmIHJ1bkxvb3AsIENGU3RyaW5nUmVmIHJ1bkwKICAgICBGb3JtU3RyZWFtRmllbGRzKiBm
b3JtID0gc3RhdGljX2Nhc3Q8Rm9ybVN0cmVhbUZpZWxkcyo+KGNvbnRleHQpOwogCiAgICAgaWYg
KGZvcm0tPmN1cnJlbnRTdHJlYW0pCi0gICAgICAgIENGUmVhZFN0cmVhbVNjaGVkdWxlV2l0aFJ1
bkxvb3AoZm9ybS0+Y3VycmVudFN0cmVhbSwgcnVuTG9vcCwgcnVuTG9vcE1vZGUpOworICAgICAg
ICBDRlJlYWRTdHJlYW1TY2hlZHVsZVdpdGhSdW5Mb29wKGZvcm0tPmN1cnJlbnRTdHJlYW0uZ2V0
KCksIHJ1bkxvb3AsIHJ1bkxvb3BNb2RlKTsKICAgICBmb3JtLT5zY2hlZHVsZWRSdW5Mb29wUGFp
cnMuYWRkKFNjaGVkdWxlUGFpcjo6Y3JlYXRlKHJ1bkxvb3AsIHJ1bkxvb3BNb2RlKSk7CiB9CiAK
QEAgLTMzNSw3ICszMzQsNyBAQCBzdGF0aWMgdm9pZCBmb3JtVW5zY2hlZHVsZShDRlJlYWRTdHJl
YW1SZWYsIENGUnVuTG9vcFJlZiBydW5Mb29wLCBDRlN0cmluZ1JlZiBydQogICAgIEZvcm1TdHJl
YW1GaWVsZHMqIGZvcm0gPSBzdGF0aWNfY2FzdDxGb3JtU3RyZWFtRmllbGRzKj4oY29udGV4dCk7
CiAKICAgICBpZiAoZm9ybS0+Y3VycmVudFN0cmVhbSkKLSAgICAgICAgQ0ZSZWFkU3RyZWFtVW5z
Y2hlZHVsZUZyb21SdW5Mb29wKGZvcm0tPmN1cnJlbnRTdHJlYW0sIHJ1bkxvb3AsIHJ1bkxvb3BN
b2RlKTsKKyAgICAgICAgQ0ZSZWFkU3RyZWFtVW5zY2hlZHVsZUZyb21SdW5Mb29wKGZvcm0tPmN1
cnJlbnRTdHJlYW0uZ2V0KCksIHJ1bkxvb3AsIHJ1bkxvb3BNb2RlKTsKICAgICBmb3JtLT5zY2hl
ZHVsZWRSdW5Mb29wUGFpcnMucmVtb3ZlKFNjaGVkdWxlUGFpcjo6Y3JlYXRlKHJ1bkxvb3AsIHJ1
bkxvb3BNb2RlKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY2YvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ0ZOZXRXaW4uY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jZi9OZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldFdpbi5jcHAK
aW5kZXggMDViMGVjOTJiOWVhNzI2NjZiNjljMDdiZTAyZjYwNjZiZDVmN2QxNS4uNWQ3ZDc5NjE0
NDY1ZmNhYjViZDZiNjQxOGUwNjBmNjhlYjA5NGE0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jZi9OZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldFdpbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9OZXR3b3JrU3RvcmFnZVNl
c3Npb25DRk5ldFdpbi5jcHAKQEAgLTg4LDEyICs4OCwxMCBAQCBDRlVSTFN0b3JhZ2VTZXNzaW9u
UmVmIGNyZWF0ZVByaXZhdGVTdG9yYWdlU2Vzc2lvbihDRlN0cmluZ1JlZiBpZGVudGlmaWVyLCBP
cHRpbwogICAgIAogICAgIC8vIFRoZSBwcml2YXRlIHN0b3JhZ2Ugc2Vzc2lvbiBzaG91bGQgaGF2
ZSB0aGUgc2FtZSBwcm9wZXJ0aWVzIGFzIHRoZSBkZWZhdWx0IHN0b3JhZ2Ugc2Vzc2lvbiwKICAg
ICAvLyB3aXRoIHRoZSBleGNlcHRpb24gdGhhdCBpdCBzaG91bGQgYmUgaW4tbWVtb3J5IG9ubHkg
c3RvcmFnZS4KLSAgICBDRlVSTENhY2hlUmVmIGNhY2hlID0gX0NGVVJMU3RvcmFnZVNlc3Npb25D
b3B5Q2FjaGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgc3RvcmFnZVNlc3Npb24pOwotICAgIENGVVJM
Q2FjaGVTZXREaXNrQ2FwYWNpdHkoY2FjaGUsIDApOwotICAgIENGVVJMQ2FjaGVSZWYgZGVmYXVs
dENhY2hlID0gQ0ZVUkxDYWNoZUNvcHlTaGFyZWRVUkxDYWNoZSgpOwotICAgIENGVVJMQ2FjaGVT
ZXRNZW1vcnlDYXBhY2l0eShjYWNoZSwgQ0ZVUkxDYWNoZU1lbW9yeUNhcGFjaXR5KGRlZmF1bHRD
YWNoZSkpOwotICAgIENGUmVsZWFzZShkZWZhdWx0Q2FjaGUpOwotICAgIENGUmVsZWFzZShjYWNo
ZSk7CisgICAgYXV0byBjYWNoZSA9IGFkb3B0Q0YoX0NGVVJMU3RvcmFnZVNlc3Npb25Db3B5Q2Fj
aGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgc3RvcmFnZVNlc3Npb24pKTsKKyAgICBDRlVSTENhY2hl
U2V0RGlza0NhcGFjaXR5KGNhY2hlLmdldCgpLCAwKTsKKyAgICBhdXRvIGRlZmF1bHRDYWNoZSA9
IGFkb3B0Q0YoQ0ZVUkxDYWNoZUNvcHlTaGFyZWRVUkxDYWNoZSgpKTsKKyAgICBDRlVSTENhY2hl
U2V0TWVtb3J5Q2FwYWNpdHkoY2FjaGUuZ2V0KCksIENGVVJMQ2FjaGVNZW1vcnlDYXBhY2l0eShk
ZWZhdWx0Q2FjaGUuZ2V0KCkpKTsKICAgICAKICAgICBDRkhUVFBDb29raWVTdG9yYWdlQWNjZXB0
UG9saWN5IGNmQ29va2llQWNjZXB0UG9saWN5OwogICAgIGlmIChjb29raWVBY2NlcHRQb2xpY3kp
CkBAIC0xMDMsOSArMTAxLDggQEAgQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZiBjcmVhdGVQcml2YXRl
U3RvcmFnZVNlc3Npb24oQ0ZTdHJpbmdSZWYgaWRlbnRpZmllciwgT3B0aW8KICAgICAgICAgY2ZD
b29raWVBY2NlcHRQb2xpY3kgPSBDRkhUVFBDb29raWVTdG9yYWdlR2V0Q29va2llQWNjZXB0UG9s
aWN5KGRlZmF1bHRDb29raWVTdG9yYWdlKTsKICAgICB9CiAKLSAgICBDRkhUVFBDb29raWVTdG9y
YWdlUmVmIGNvb2tpZVN0b3JhZ2UgPSBfQ0ZVUkxTdG9yYWdlU2Vzc2lvbkNvcHlDb29raWVTdG9y
YWdlKGtDRkFsbG9jYXRvckRlZmF1bHQsIHN0b3JhZ2VTZXNzaW9uKTsKLSAgICBDRkhUVFBDb29r
aWVTdG9yYWdlU2V0Q29va2llQWNjZXB0UG9saWN5KGNvb2tpZVN0b3JhZ2UsIGNmQ29va2llQWNj
ZXB0UG9saWN5KTsKLSAgICBDRlJlbGVhc2UoY29va2llU3RvcmFnZSk7CisgICAgYXV0byBjb29r
aWVTdG9yYWdlID0gYWRvcHRDRihfQ0ZVUkxTdG9yYWdlU2Vzc2lvbkNvcHlDb29raWVTdG9yYWdl
KGtDRkFsbG9jYXRvckRlZmF1bHQsIHN0b3JhZ2VTZXNzaW9uKSk7CisgICAgQ0ZIVFRQQ29va2ll
U3RvcmFnZVNldENvb2tpZUFjY2VwdFBvbGljeShjb29raWVTdG9yYWdlLmdldCgpLCBjZkNvb2tp
ZUFjY2VwdFBvbGljeSk7CiAgICAgCiAgICAgcmV0dXJuIHN0b3JhZ2VTZXNzaW9uOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRs
ZUNGTmV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VI
YW5kbGVDRk5ldC5jcHAKaW5kZXggY2U0ZWRiNDliNzM4NzAzYzFjM2EwYjM4NjVjMDhkNzkyNGE0
NjMzNy4uMmQ0ZWZmNTA1Y2M0MTNhMGNkNjUyM2NiMDljMDQ0YzRiNDllODU1ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFu
ZGxlQ0ZOZXQuY3BwCkBAIC0xMjAsMTIgKzEyMCwxMSBAQCBzdGF0aWMgdm9pZCBzZXRDbGllbnRD
ZXJ0aWZpY2F0ZUluU1NMUHJvcGVydGllcyhDRk11dGFibGVEaWN0aW9uYXJ5UmVmIHNzbFByb3Bz
LAogewogICAgIGlmICghc3NsUHJvcHMgfHwgIWNlcnREYXRhKQogICAgICAgICByZXR1cm47Ci0g
ICAgQ0ZNdXRhYmxlRGljdGlvbmFyeVJlZiBjZXJ0RGljdCA9IENGRGljdGlvbmFyeUNyZWF0ZU11
dGFibGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgMCwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJh
Y2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcyk7CisgICAgYXV0byBjZXJ0RGlj
dCA9IGFkb3B0Q0YoQ0ZEaWN0aW9uYXJ5Q3JlYXRlTXV0YWJsZShrQ0ZBbGxvY2F0b3JEZWZhdWx0
LCAwLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZh
bHVlQ2FsbEJhY2tzKSk7CiAgICAgaWYgKCFjZXJ0RGljdCkKICAgICAgICAgcmV0dXJuOwotICAg
IENGRGljdGlvbmFyeVNldFZhbHVlKGNlcnREaWN0LCBfa0NGV2luZG93c1NTTExvY2FsQ2VydCwg
Y2VydERhdGEpOwotICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHNzbFByb3BzLCBfa0NGU3RyZWFt
UHJvcGVydHlXaW5kb3dzU1NMQ2VydEluZm8sIGNlcnREaWN0KTsKLSAgICBDRlJlbGVhc2UoY2Vy
dERpY3QpOworICAgIENGRGljdGlvbmFyeVNldFZhbHVlKGNlcnREaWN0LmdldCgpLCBfa0NGV2lu
ZG93c1NTTExvY2FsQ2VydCwgY2VydERhdGEpOworICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHNz
bFByb3BzLCBfa0NGU3RyZWFtUHJvcGVydHlXaW5kb3dzU1NMQ2VydEluZm8sIGNlcnREaWN0Lmdl
dCgpKTsKIH0KICNlbmRpZgogCkBAIC0yMDUsMTEgKzIwNCwxMSBAQCB2b2lkIFJlc291cmNlSGFu
ZGxlOjpjcmVhdGVDRlVSTENvbm5lY3Rpb24oYm9vbCBzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFn
ZSwgYm9vbAogICAgIGlmIChzc2xQcm9wcykKICAgICAgICAgQ0ZVUkxSZXF1ZXN0U2V0U1NMUHJv
cGVydGllcyhyZXF1ZXN0LmdldCgpLCBzc2xQcm9wcy5nZXQoKSk7CiAKLSAgICBDRk11dGFibGVE
aWN0aW9uYXJ5UmVmIHN0cmVhbVByb3BlcnRpZXMgID0gQ0ZEaWN0aW9uYXJ5Q3JlYXRlTXV0YWJs
ZSgwLCAwLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFy
eVZhbHVlQ2FsbEJhY2tzKTsKKyAgICBhdXRvIHN0cmVhbVByb3BlcnRpZXMgPSBhZG9wdENGKENG
RGljdGlvbmFyeUNyZWF0ZU11dGFibGUoMCwgMCwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJh
Y2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcykpOwogCiAgICAgaWYgKCFzaG91
bGRVc2VDcmVkZW50aWFsU3RvcmFnZSkgewogICAgICAgICAvLyBBdm9pZCB1c2luZyBleGlzdGlu
ZyBjb25uZWN0aW9ucywgYmVjYXVzZSB0aGV5IG1heSBiZSBhbHJlYWR5IGF1dGhlbnRpY2F0ZWQu
Ci0gICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHN0cmVhbVByb3BlcnRpZXMsIENGU1RSKCJf
a0NGVVJMQ29ubmVjdGlvblNlc3Npb25JRCIpLCBDRlNUUigiV2ViS2l0UHJpdmF0ZVNlc3Npb24i
KSk7CisgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHN0cmVhbVByb3BlcnRpZXMuZ2V0KCks
IENGU1RSKCJfa0NGVVJMQ29ubmVjdGlvblNlc3Npb25JRCIpLCBDRlNUUigiV2ViS2l0UHJpdmF0
ZVNlc3Npb24iKSk7CiAgICAgfQogCiAgICAgc3RhdGljIGNvbnN0IENGU3RyaW5nUmVmIGtDRlVS
TENvbm5lY3Rpb25Tb2NrZXRTdHJlYW1Qcm9wZXJ0aWVzID0gQ0ZTVFIoImtDRlVSTENvbm5lY3Rp
b25Tb2NrZXRTdHJlYW1Qcm9wZXJ0aWVzIik7CkBAIC0yMjgsOCArMjI3LDcgQEAgdm9pZCBSZXNv
dXJjZUhhbmRsZTo6Y3JlYXRlQ0ZVUkxDb25uZWN0aW9uKGJvb2wgc2hvdWxkVXNlQ3JlZGVudGlh
bFN0b3JhZ2UsIGJvb2wKICNlbmRpZgogCiAgICAgLy8gRklYTUU6IFRoaXMgY29kZSBpcyBkaWZm
ZXJlbnQgZnJvbSBpT1MgY29kZSBpbiBSZXNvdXJjZUhhbmRsZU1hYy5tbSBpbiB0aGF0IGhlcmUg
d2UgaWdub3JlIHN0cmVhbSBwcm9wZXJ0aWVzIHRoYXQgd2VyZSBwcmVzZW50IGluIGNsaWVudCBw
cm9wZXJ0aWVzLgotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKHByb3BlcnRpZXNEaWN0aW9uYXJ5
LmdldCgpLCBrQ0ZVUkxDb25uZWN0aW9uU29ja2V0U3RyZWFtUHJvcGVydGllcywgc3RyZWFtUHJv
cGVydGllcyk7Ci0gICAgQ0ZSZWxlYXNlKHN0cmVhbVByb3BlcnRpZXMpOworICAgIENGRGljdGlv
bmFyeUFkZFZhbHVlKHByb3BlcnRpZXNEaWN0aW9uYXJ5LmdldCgpLCBrQ0ZVUkxDb25uZWN0aW9u
U29ja2V0U3RyZWFtUHJvcGVydGllcywgc3RyZWFtUHJvcGVydGllcy5nZXQoKSk7CiAKICAgICBk
LT5tX2Nvbm5lY3Rpb25EZWxlZ2F0ZSA9IGFkb3B0UmVmKG5ldyBSZXNvdXJjZUhhbmRsZUNGVVJM
Q29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlKHRoaXMsIFdURk1vdmUobWVzc2Fn
ZVF1ZXVlKSkpOwogICAgIGQtPm1fY29ubmVjdGlvbkRlbGVnYXRlLT5zZXR1cFJlcXVlc3QocmVx
dWVzdC5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRl
bGVnYXRlLmNwcAppbmRleCAwMWEyMjE3YzZjMTVhZWY2NzNjMjVjYTI4Nzg1YThlY2RjY2JmZThm
Li44NGIxMzk4NzhjYWNjYzQ5OGZhNWEwZDg2MmQ0ZWEzNTY4Y2M4ZTc5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25u
ZWN0aW9uRGVsZWdhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y2YvUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5jcHAKQEAgLTYwLDcgKzYw
LDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlOjpyZWxlYXNl
KGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCiAKIENGVVJMUmVxdWVzdFJlZiBSZXNvdXJjZUhhbmRs
ZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlOjp3aWxsU2VuZFJlcXVlc3RDYWxsYmFjayhDRlVSTENv
bm5lY3Rpb25SZWYsIENGVVJMUmVxdWVzdFJlZiBjZlJlcXVlc3QsIENGVVJMUmVzcG9uc2VSZWYg
b3JpZ2luYWxSZWRpcmVjdFJlc3BvbnNlLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQogewotICAg
IHJldHVybiBzdGF0aWNfY2FzdDxSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRl
Kj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykpLT53aWxsU2VuZFJlcXVlc3QoY2ZSZXF1
ZXN0LCBvcmlnaW5hbFJlZGlyZWN0UmVzcG9uc2UpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxS
ZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlKj4oY29uc3RfY2FzdDx2b2lkKj4o
Y2xpZW50SW5mbykpLT53aWxsU2VuZFJlcXVlc3QoY2ZSZXF1ZXN0LCBvcmlnaW5hbFJlZGlyZWN0
UmVzcG9uc2UpLmxlYWtSZWYoKTsKIH0KIAogdm9pZCBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVj
dGlvbkRlbGVnYXRlOjpkaWRSZWNlaXZlUmVzcG9uc2VDYWxsYmFjayhDRlVSTENvbm5lY3Rpb25S
ZWYgY29ubmVjdGlvbiwgQ0ZVUkxSZXNwb25zZVJlZiBjZlJlc3BvbnNlLCBjb25zdCB2b2lkKiBj
bGllbnRJbmZvKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
Zi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdh
dGUuaAppbmRleCA0Nzc4YzI3NTBhODA0YTczOWIwM2FkMWRkNzQwZDI3OTU5MGJhNjlmLi5iNDI3
MjU0YTRiYWY5NDRjNjZiNzM1ZTE2OTAxY2JiNzNkMGRkZjA4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9u
RGVsZWdhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291
cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuaApAQCAtNjYsNyArNjYsNyBAQCBwcml2
YXRlOgogICAgIHN0YXRpYyBCb29sZWFuIGNhblJlc3BvbmRUb1Byb3RlY3Rpb25TcGFjZUNhbGxi
YWNrKENGVVJMQ29ubmVjdGlvblJlZiwgQ0ZVUkxQcm90ZWN0aW9uU3BhY2VSZWYsIGNvbnN0IHZv
aWQqIGNsaWVudEluZm8pOwogI2VuZGlmIC8vIFVTRShQUk9URUNUSU9OX1NQQUNFX0FVVEhfQ0FM
TEJBQ0spCiAKLSAgICB2aXJ0dWFsIENGVVJMUmVxdWVzdFJlZiB3aWxsU2VuZFJlcXVlc3QoQ0ZV
UkxSZXF1ZXN0UmVmLCBDRlVSTFJlc3BvbnNlUmVmKSA9IDA7CisgICAgdmlydHVhbCBSZXRhaW5Q
dHI8Q0ZVUkxSZXF1ZXN0UmVmPiB3aWxsU2VuZFJlcXVlc3QoQ0ZVUkxSZXF1ZXN0UmVmLCBDRlVS
TFJlc3BvbnNlUmVmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShD
RlVSTENvbm5lY3Rpb25SZWYsIENGVVJMUmVzcG9uc2VSZWYpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgZGlkUmVjZWl2ZURhdGEoQ0ZEYXRhUmVmLCBDRkluZGV4IG9yaWdpbmFsTGVuZ3RoKSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmcoKSA9IDA7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25u
ZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0
aE9wZXJhdGlvblF1ZXVlLmNwcAppbmRleCAyNjQ2NjM4OGI3Y2E1YTY2NTZkMGVlMjYxZTc1NmVl
MjJmYTA0MDMxLi4xZmU2OTAyNGJjYmZiOGQ3N2JhYjk4YTkxYTNjYTgxNTlmYmE0ZTAzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxl
Q0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rp
b25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZS5jcHAKQEAgLTEzMSwxNSArMTMxLDEzIEBAIHZv
aWQgUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1
ZTo6c2V0dXBDb25uZWN0aW9uU2NoCiAgICAgQ0ZVUkxDb25uZWN0aW9uU2NoZWR1bGVEb3dubG9h
ZFdpdGhSdW5Mb29wKGNvbm5lY3Rpb24sIHJ1bkxvb3AsIGtDRlJ1bkxvb3BEZWZhdWx0TW9kZSk7
CiB9CiAKLUNGVVJMUmVxdWVzdFJlZiBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVn
YXRlV2l0aE9wZXJhdGlvblF1ZXVlOjp3aWxsU2VuZFJlcXVlc3QoQ0ZVUkxSZXF1ZXN0UmVmIGNm
UmVxdWVzdCwgQ0ZVUkxSZXNwb25zZVJlZiBvcmlnaW5hbFJlZGlyZWN0UmVzcG9uc2UpCitSZXRh
aW5QdHI8Q0ZVUkxSZXF1ZXN0UmVmPiBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVn
YXRlV2l0aE9wZXJhdGlvblF1ZXVlOjp3aWxsU2VuZFJlcXVlc3QoQ0ZVUkxSZXF1ZXN0UmVmIGNm
UmVxdWVzdCwgQ0ZVUkxSZXNwb25zZVJlZiBvcmlnaW5hbFJlZGlyZWN0UmVzcG9uc2UpCiB7CiAg
ICAgLy8gSWYgdGhlIHByb3RvY29scyBvZiB0aGUgbmV3IHJlcXVlc3QgYW5kIHRoZSBjdXJyZW50
IHJlcXVlc3QgbWF0Y2gsIHRoaXMgaXMgbm90IGFuIEhTVFMgcmVkaXJlY3QgYW5kIHdlIGRvbid0
IG5lZWQgdG8gc3ludGhlc2l6ZSBhIHJlZGlyZWN0IHJlc3BvbnNlLgogICAgIGlmICghb3JpZ2lu
YWxSZWRpcmVjdFJlc3BvbnNlKSB7CiAgICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gbmV3
U2NoZW1lID0gYWRvcHRDRihDRlVSTENvcHlTY2hlbWUoQ0ZVUkxSZXF1ZXN0R2V0VVJMKGNmUmVx
dWVzdCkpKTsKLSAgICAgICAgaWYgKENGU3RyaW5nQ29tcGFyZShuZXdTY2hlbWUuZ2V0KCksIG1f
b3JpZ2luYWxTY2hlbWUuZ2V0KCksIGtDRkNvbXBhcmVDYXNlSW5zZW5zaXRpdmUpID09IGtDRkNv
bXBhcmVFcXVhbFRvKSB7Ci0gICAgICAgICAgICBDRlJldGFpbihjZlJlcXVlc3QpOworICAgICAg
ICBpZiAoQ0ZTdHJpbmdDb21wYXJlKG5ld1NjaGVtZS5nZXQoKSwgbV9vcmlnaW5hbFNjaGVtZS5n
ZXQoKSwga0NGQ29tcGFyZUNhc2VJbnNlbnNpdGl2ZSkgPT0ga0NGQ29tcGFyZUVxdWFsVG8pCiAg
ICAgICAgICAgICByZXR1cm4gY2ZSZXF1ZXN0OwotICAgICAgICB9CiAgICAgfQogCiAgICAgQVNT
RVJUKCFpc01haW5UaHJlYWQoKSk7CkBAIC0xNzIsNyArMTcwLDcgQEAgQ0ZVUkxSZXF1ZXN0UmVm
IFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6
OndpbGxTZW4KICAgICAgICAgY2FsbE9uTWFpblRocmVhZChXVEZNb3ZlKHdvcmspKTsKICAgICBt
X3NlbWFwaG9yZS53YWl0KCk7CiAKLSAgICByZXR1cm4gbV9yZXF1ZXN0UmVzdWx0LmxlYWtSZWYo
KTsKKyAgICByZXR1cm4gc3RkOjpleGNoYW5nZShtX3JlcXVlc3RSZXN1bHQsIG51bGxwdHIpOwog
fQogCiB2b2lkIFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0
aW9uUXVldWU6OmRpZFJlY2VpdmVSZXNwb25zZShDRlVSTENvbm5lY3Rpb25SZWYgY29ubmVjdGlv
biwgQ0ZVUkxSZXNwb25zZVJlZiBjZlJlc3BvbnNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVn
YXRlV2l0aE9wZXJhdGlvblF1ZXVlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVl
dWUuaAppbmRleCBkZmQ3NDZmZmM2OWExOGQ1ZGJlMmRkODMyNDRlZjc3MmFlODc2ZTc1Li4zNDYw
YTY5ZTkxN2ZmMDRkMjkyMWFmZDJmYmY2YjkxYmY0OWZiMTBkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9u
RGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3Bl
cmF0aW9uUXVldWUuaApAQCAtNTAsNyArNTAsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0dXBD
b25uZWN0aW9uU2NoZWR1bGluZyhDRlVSTENvbm5lY3Rpb25SZWYpIG92ZXJyaWRlOwogICAgIHZv
aWQgcmVsZWFzZUhhbmRsZSgpIG92ZXJyaWRlOwogCi0gICAgQ0ZVUkxSZXF1ZXN0UmVmIHdpbGxT
ZW5kUmVxdWVzdChDRlVSTFJlcXVlc3RSZWYsIENGVVJMUmVzcG9uc2VSZWYpIG92ZXJyaWRlOwor
ICAgIFJldGFpblB0cjxDRlVSTFJlcXVlc3RSZWY+IHdpbGxTZW5kUmVxdWVzdChDRlVSTFJlcXVl
c3RSZWYsIENGVVJMUmVzcG9uc2VSZWYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJl
c3BvbnNlKENGVVJMQ29ubmVjdGlvblJlZiwgQ0ZVUkxSZXNwb25zZVJlZikgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBkaWRSZWNlaXZlRGF0YShDRkRhdGFSZWYsIENGSW5kZXggb3JpZ2luYWxMZW5ndGgp
IG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZygpIG92ZXJyaWRlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3RD
Rk5ldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVx
dWVzdENGTmV0LmNwcAppbmRleCBkMmQwOTNjM2MzMjAwNzNiNmE1YWFiZTkzZDBjZmZmYTkxZTk1
MmJiLi5mNmUxYjliNWQzYTViYTdhZTM1YTc3OTIzZDU2ZDUzZWFlMzI3MTk5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVxdWVzdENGTmV0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVx
dWVzdENGTmV0LmNwcApAQCAtMjgyLDEwICsyODIsOCBAQCB2b2lkIFJlc291cmNlUmVxdWVzdDo6
ZG9VcGRhdGVSZXNvdXJjZVJlcXVlc3QoKQogICAgICAgICBtX2NhY2hlUG9saWN5ID0gZnJvbVBs
YXRmb3JtUmVxdWVzdENhY2hlUG9saWN5KENGVVJMUmVxdWVzdEdldENhY2hlUG9saWN5KG1fY2ZS
ZXF1ZXN0LmdldCgpKSk7CiAgICAgbV90aW1lb3V0SW50ZXJ2YWwgPSBDRlVSTFJlcXVlc3RHZXRU
aW1lb3V0SW50ZXJ2YWwobV9jZlJlcXVlc3QuZ2V0KCkpOwogICAgIG1fZmlyc3RQYXJ0eUZvckNv
b2tpZXMgPSBDRlVSTFJlcXVlc3RHZXRNYWluRG9jdW1lbnRVUkwobV9jZlJlcXVlc3QuZ2V0KCkp
OwotICAgIGlmIChDRlN0cmluZ1JlZiBtZXRob2QgPSBDRlVSTFJlcXVlc3RDb3B5SFRUUFJlcXVl
c3RNZXRob2QobV9jZlJlcXVlc3QuZ2V0KCkpKSB7Ci0gICAgICAgIG1faHR0cE1ldGhvZCA9IG1l
dGhvZDsKLSAgICAgICAgQ0ZSZWxlYXNlKG1ldGhvZCk7Ci0gICAgfQorICAgIGlmIChhdXRvIG1l
dGhvZCA9IGFkb3B0Q0YoQ0ZVUkxSZXF1ZXN0Q29weUhUVFBSZXF1ZXN0TWV0aG9kKG1fY2ZSZXF1
ZXN0LmdldCgpKSkpCisgICAgICAgIG1faHR0cE1ldGhvZCA9IG1ldGhvZC5nZXQoKTsKICAgICBt
X2FsbG93Q29va2llcyA9IENGVVJMUmVxdWVzdFNob3VsZEhhbmRsZUhUVFBDb29raWVzKG1fY2ZS
ZXF1ZXN0LmdldCgpKTsKIAogICAgIGlmIChyZXNvdXJjZVByaW9yaXRpZXNFbmFibGVkKCkpCkBA
IC0zMDYsMTQgKzMwNCwxMyBAQCB2b2lkIFJlc291cmNlUmVxdWVzdDo6ZG9VcGRhdGVSZXNvdXJj
ZVJlcXVlc3QoKQogI2VuZGlmCiAKICAgICBtX2h0dHBIZWFkZXJGaWVsZHMuY2xlYXIoKTsKLSAg
ICBpZiAoQ0ZEaWN0aW9uYXJ5UmVmIGhlYWRlcnMgPSBDRlVSTFJlcXVlc3RDb3B5QWxsSFRUUEhl
YWRlckZpZWxkcyhtX2NmUmVxdWVzdC5nZXQoKSkpIHsKLSAgICAgICAgQ0ZJbmRleCBoZWFkZXJD
b3VudCA9IENGRGljdGlvbmFyeUdldENvdW50KGhlYWRlcnMpOworICAgIGlmIChhdXRvIGhlYWRl
cnMgPSBhZG9wdENGKENGVVJMUmVxdWVzdENvcHlBbGxIVFRQSGVhZGVyRmllbGRzKG1fY2ZSZXF1
ZXN0LmdldCgpKSkpIHsKKyAgICAgICAgQ0ZJbmRleCBoZWFkZXJDb3VudCA9IENGRGljdGlvbmFy
eUdldENvdW50KGhlYWRlcnMuZ2V0KCkpOwogICAgICAgICBWZWN0b3I8Y29uc3Qgdm9pZCosIDEy
OD4ga2V5cyhoZWFkZXJDb3VudCk7CiAgICAgICAgIFZlY3Rvcjxjb25zdCB2b2lkKiwgMTI4PiB2
YWx1ZXMoaGVhZGVyQ291bnQpOwotICAgICAgICBDRkRpY3Rpb25hcnlHZXRLZXlzQW5kVmFsdWVz
KGhlYWRlcnMsIGtleXMuZGF0YSgpLCB2YWx1ZXMuZGF0YSgpKTsKKyAgICAgICAgQ0ZEaWN0aW9u
YXJ5R2V0S2V5c0FuZFZhbHVlcyhoZWFkZXJzLmdldCgpLCBrZXlzLmRhdGEoKSwgdmFsdWVzLmRh
dGEoKSk7CiAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgaGVhZGVyQ291bnQ7ICsraSkKICAg
ICAgICAgICAgIG1faHR0cEhlYWRlckZpZWxkcy5zZXQoKENGU3RyaW5nUmVmKWtleXNbaV0sIChD
RlN0cmluZ1JlZil2YWx1ZXNbaV0pOwotICAgICAgICBDRlJlbGVhc2UoaGVhZGVycyk7CiAgICAg
fQogCiAgICAgbV9yZXNwb25zZUNvbnRlbnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tBcnJh
eS5jbGVhcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdJ
bWFnZUNHV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnSW1hZ2VDR1dp
bi5jcHAKaW5kZXggMzRlZDllZjhjZjRmODY2Y2EwM2ZkY2E5MzA0YTk2MDk2YmM2NWI5ZS4uYjQ1
ZTRkNGEwYTI1ZGZjYzQ3NmY5YWFiZjc1N2M3MGFlMjJjOTk1ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdJbWFnZUNHV2luLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdlQ0dXaW4uY3BwCkBAIC02NywxNSArNjcsMTMgQEAg
R0RJT2JqZWN0PEhCSVRNQVA+IGFsbG9jSW1hZ2UoSERDIGRjLCBJbnRTaXplIHNpemUsIENHQ29u
dGV4dFJlZiAqdGFyZ2V0UmVmKQogICAgIHJldHVybiBoYm1wOwogfQogCi1zdGF0aWMgQ0dDb250
ZXh0UmVmIGNyZWF0ZUNnQ29udGV4dEZyb21CaXRtYXAoSEJJVE1BUCBiaXRtYXApCitzdGF0aWMg
UmV0YWluUHRyPENHQ29udGV4dFJlZj4gY3JlYXRlQ2dDb250ZXh0RnJvbUJpdG1hcChIQklUTUFQ
IGJpdG1hcCkKIHsKICAgICBCSVRNQVAgaW5mbzsKICAgICBHZXRPYmplY3QoYml0bWFwLCBzaXpl
b2YoaW5mbyksICZpbmZvKTsKICAgICBBU1NFUlQoaW5mby5ibUJpdHNQaXhlbCA9PSAzMik7CiAK
LSAgICBDR0NvbnRleHRSZWYgYml0bWFwQ29udGV4dCA9IENHQml0bWFwQ29udGV4dENyZWF0ZShp
bmZvLmJtQml0cywgaW5mby5ibVdpZHRoLCBpbmZvLmJtSGVpZ2h0LCA4LAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZm8uYm1XaWR0aEJ5
dGVzLCBzUkdCQ29sb3JTcGFjZVJlZigpLCBrQ0dCaXRtYXBCeXRlT3JkZXIzMkxpdHRsZSB8IGtD
R0ltYWdlQWxwaGFOb25lU2tpcEZpcnN0KTsKLSAgICByZXR1cm4gYml0bWFwQ29udGV4dDsKKyAg
ICByZXR1cm4gYWRvcHRDRihDR0JpdG1hcENvbnRleHRDcmVhdGUoaW5mby5ibUJpdHMsIGluZm8u
Ym1XaWR0aCwgaW5mby5ibUhlaWdodCwgOCwgaW5mby5ibVdpZHRoQnl0ZXMsIHNSR0JDb2xvclNw
YWNlUmVmKCksIGtDR0JpdG1hcEJ5dGVPcmRlcjMyTGl0dGxlIHwga0NHSW1hZ2VBbHBoYU5vbmVT
a2lwRmlyc3QpKTsKIH0KIAogRHJhZ0ltYWdlUmVmIHNjYWxlRHJhZ0ltYWdlKERyYWdJbWFnZVJl
ZiBpbWFnZVJlZiwgRmxvYXRTaXplIHNjYWxlKQpAQCAtMTAxLDE1ICs5OSwxMyBAQCBEcmFnSW1h
Z2VSZWYgc2NhbGVEcmFnSW1hZ2UoRHJhZ0ltYWdlUmVmIGltYWdlUmVmLCBGbG9hdFNpemUgc2Nh
bGUpCiAgICAgaWYgKCFoYm1wKQogICAgICAgICBnb3RvIGV4aXQ7CiAKLSAgICBDR0NvbnRleHRS
ZWYgc3JjQ29udGV4dCA9IGNyZWF0ZUNnQ29udGV4dEZyb21CaXRtYXAoaW1hZ2UuZ2V0KCkpOwot
ICAgIENHSW1hZ2VSZWYgc3JjSW1hZ2UgPSBDR0JpdG1hcENvbnRleHRDcmVhdGVJbWFnZShzcmND
b250ZXh0KTsKKyAgICBhdXRvIHNyY0NvbnRleHQgPSBjcmVhdGVDZ0NvbnRleHRGcm9tQml0bWFw
KGltYWdlLmdldCgpKTsKKyAgICBhdXRvIHNyY0ltYWdlID0gYWRvcHRDRihDR0JpdG1hcENvbnRl
eHRDcmVhdGVJbWFnZShzcmNDb250ZXh0KSk7CiAgICAgQ0dSZWN0IHJlY3Q7CiAgICAgcmVjdC5v
cmlnaW4ueCA9IDA7CiAgICAgcmVjdC5vcmlnaW4ueSA9IDA7CiAgICAgcmVjdC5zaXplID0gZHN0
U2l6ZTsKLSAgICBDR0NvbnRleHREcmF3SW1hZ2UodGFyZ2V0Q29udGV4dCwgcmVjdCwgc3JjSW1h
Z2UpOwotICAgIENHSW1hZ2VSZWxlYXNlKHNyY0ltYWdlKTsKLSAgICBDR0NvbnRleHRSZWxlYXNl
KHNyY0NvbnRleHQpOworICAgIENHQ29udGV4dERyYXdJbWFnZSh0YXJnZXRDb250ZXh0LCByZWN0
LCBzcmNJbWFnZS5nZXQoKSk7CiAgICAgQ0dDb250ZXh0UmVsZWFzZSh0YXJnZXRDb250ZXh0KTsK
IAogZXhpdDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9XZWJDb3Jl
QnVuZGxlV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9XZWJDb3JlQnVuZGxl
V2luLmNwcAppbmRleCAzYjdjOGUxYTIwYTQ1MWFkN2NiMzg0OGViNjE2MjJlOTdmZDAyNGM3Li45
NDkzMmZiYzk2YTUyOTg0MGYyZTZiYjQ4ZWI2ZDQ0ZTE3Y2U1ZTVmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vV2ViQ29yZUJ1bmRsZVdpbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vd2luL1dlYkNvcmVCdW5kbGVXaW4uY3BwCkBAIC0zMSwxNiArMzEs
MTUgQEAKICNpbmNsdWRlICJXZWJDb3JlSW5zdGFuY2VIYW5kbGUuaCIKICNpbmNsdWRlIDxDb3Jl
Rm91bmRhdGlvbi9DRkJ1bmRsZS5oPgogI2luY2x1ZGUgPHdpbmRvd3MuaD4KKyNpbmNsdWRlIDx3
dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIENGQnVuZGxlUmVmIGNyZWF0ZVdlYktpdEJ1bmRsZSgp
CitzdGF0aWMgUmV0YWluUHRyPENGQnVuZGxlUmVmPiBjcmVhdGVXZWJLaXRCdW5kbGUoKQogewot
ICAgIGlmIChDRkJ1bmRsZVJlZiBleGlzdGluZ0J1bmRsZSA9IENGQnVuZGxlR2V0QnVuZGxlV2l0
aElkZW50aWZpZXIoQ0ZTVFIoImNvbS5hcHBsZS5XZWJLaXQiKSkpIHsKLSAgICAgICAgQ0ZSZXRh
aW4oZXhpc3RpbmdCdW5kbGUpOworICAgIGlmIChDRkJ1bmRsZVJlZiBleGlzdGluZ0J1bmRsZSA9
IENGQnVuZGxlR2V0QnVuZGxlV2l0aElkZW50aWZpZXIoQ0ZTVFIoImNvbS5hcHBsZS5XZWJLaXQi
KSkpCiAgICAgICAgIHJldHVybiBleGlzdGluZ0J1bmRsZTsKLSAgICB9CiAKICAgICB3Y2hhcl90
IGRsbFBhdGhCdWZmZXJbTUFYX1BBVEhdOwogICAgIERXT1JEIGxlbmd0aCA9IDo6R2V0TW9kdWxl
RmlsZU5hbWVXKFdlYkNvcmU6Omluc3RhbmNlSGFuZGxlKCksIGRsbFBhdGhCdWZmZXIsIFdURl9B
UlJBWV9MRU5HVEgoZGxsUGF0aEJ1ZmZlcikpOwpAQCAtNTIsMTQgKzUxLDE0IEBAIHN0YXRpYyBD
RkJ1bmRsZVJlZiBjcmVhdGVXZWJLaXRCdW5kbGUoKQogICAgIFJldGFpblB0cjxDRlVSTFJlZj4g
ZGxsRGlyZWN0b3J5VVJMID0gYWRvcHRDRihDRlVSTENyZWF0ZUNvcHlEZWxldGluZ0xhc3RQYXRo
Q29tcG9uZW50KDAsIGRsbFVSTC5nZXQoKSkpOwogICAgIFJldGFpblB0cjxDRlVSTFJlZj4gcmVz
b3VyY2VzRGlyZWN0b3J5VVJMID0gYWRvcHRDRihDRlVSTENyZWF0ZUNvcHlBcHBlbmRpbmdQYXRo
Q29tcG9uZW50KDAsIGRsbERpcmVjdG9yeVVSTC5nZXQoKSwgQ0ZTVFIoIldlYktpdC5yZXNvdXJj
ZXMiKSwgdHJ1ZSkpOwogCi0gICAgcmV0dXJuIENGQnVuZGxlQ3JlYXRlKDAsIHJlc291cmNlc0Rp
cmVjdG9yeVVSTC5nZXQoKSk7CisgICAgcmV0dXJuIGFkb3B0Q0YoQ0ZCdW5kbGVDcmVhdGUoMCwg
cmVzb3VyY2VzRGlyZWN0b3J5VVJMLmdldCgpKSk7CiB9CiAKIENGQnVuZGxlUmVmIHdlYktpdEJ1
bmRsZSgpCiB7Ci0gICAgc3RhdGljIENGQnVuZGxlUmVmIGJ1bmRsZSA9IGNyZWF0ZVdlYktpdEJ1
bmRsZSgpOwotICAgIEFTU0VSVChidW5kbGUpOwotICAgIHJldHVybiBidW5kbGU7CisgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxDRkJ1bmRsZVJlZj4+IGJ1bmRsZSA9IGNyZWF0
ZVdlYktpdEJ1bmRsZSgpOworICAgIEFTU0VSVChidW5kbGUuZ2V0KCkpOworICAgIHJldHVybiBi
dW5kbGUuZ2V0KCkuZ2V0KCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbQppbmRleCBhM2I3NDA2ZGE0OTEyNzFi
MDE2ODkyMmI2NjJmZTIyYmFiMzc5YTI5Li40NjNlYmEwNmNkMjk5MWZhZmYxN2EzNGMxZWQwOTdi
MWQ3MWUxYmY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhl
bWVNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1t
CkBAIC0xNTMsMTAgKzE1Myw5IEBAIC0gKENGRGljdGlvbmFyeVJlZilfYWRqdXN0ZWRDb3JlVUlE
cmF3T3B0aW9uc0ZvckRyYXdpbmdCb3JkZXJzT25seTooQ0ZEaWN0aW9uYXJ5CiAKICAgICAvLyBG
SVhNRTogVGhpcyBpcyBhIHdvcmthcm91bmQgZm9yIDxyZGFyOi8vcHJvYmxlbS8xMTM4NTQ2MT4u
IFdoZW4gdGhhdCBidWcgaXMgcmVzb2x2ZWQsIHdlIHNob3VsZCByZW1vdmUgdGhpcyBjb2RlLAog
ICAgIC8vIGFzIHdlbGwgYXMgdGhlIGludGVybmFsIG1ldGhvZCBvdmVycmlkZXMgYmVsb3cuCi0g
ICAgQ0ZNdXRhYmxlRGljdGlvbmFyeVJlZiBjb3JlVUlEcmF3T3B0aW9ucyA9IENGRGljdGlvbmFy
eUNyZWF0ZU11dGFibGVDb3B5KE5VTEwsIDAsIGRlZmF1bHRPcHRpb25zKTsKLSAgICBDRkRpY3Rp
b25hcnlTZXRWYWx1ZShjb3JlVUlEcmF3T3B0aW9ucywgQ0ZTVFIoImJvcmRlcnMgb25seSIpLCBr
Q0ZCb29sZWFuVHJ1ZSk7Ci0gICAgQ0ZBdXRvcmVsZWFzZShjb3JlVUlEcmF3T3B0aW9ucyk7Ci0g
ICAgcmV0dXJuIGNvcmVVSURyYXdPcHRpb25zOworICAgIGF1dG8gY29yZVVJRHJhd09wdGlvbnMg
PSBhZG9wdENGKENGRGljdGlvbmFyeUNyZWF0ZU11dGFibGVDb3B5KE5VTEwsIDAsIGRlZmF1bHRP
cHRpb25zKSk7CisgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUoY29yZVVJRHJhd09wdGlvbnMuZ2V0
KCksIENGU1RSKCJib3JkZXJzIG9ubHkiKSwga0NGQm9vbGVhblRydWUpOworICAgIHJldHVybiBj
b3JlVUlEcmF3T3B0aW9ucy5hdXRvcmVsZWFzZSgpOwogfQogCiAtIChDRkRpY3Rpb25hcnlSZWYp
X2NvcmVVSURyYXdPcHRpb25zV2l0aEZyYW1lOihOU1JlY3QpY2VsbEZyYW1lIGluVmlldzooTlNW
aWV3ICopY29udHJvbFZpZXcgaW5jbHVkZUZvY3VzOihCT09MKWluY2x1ZGVGb2N1cwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9jb2NvYS9XZWJBcmNoaXZlRHVtcFN1cHBvcnQu
aCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvY29jb2EvV2ViQXJjaGl2ZUR1bXBTdXBwb3J0LmgK
aW5kZXggMmQwM2VmM2YyOTg2ZDhiMjcxYWI3MzcwODMzOTYxZWE3NDZhODE5ZS4uMjA5YTcxMTg1
N2ViZDc3NjZhMTk5MTg2MjkwYjY0MWMwN2MxNWEyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9jb2NvYS9XZWJBcmNoaXZlRHVtcFN1cHBvcnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL2NvY29hL1dlYkFyY2hpdmVEdW1wU3VwcG9ydC5oCkBAIC0yNiw5ICsyNiwx
MCBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9Db3JlRm91bmRh
dGlvbi5oPgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmVU
ZXN0U3VwcG9ydCB7CiAKLUNGU3RyaW5nUmVmIGNyZWF0ZVhNTFN0cmluZ0Zyb21XZWJBcmNoaXZl
RGF0YShDRkRhdGFSZWYgd2ViQXJjaGl2ZURhdGEpIFdURl9FWFBPUlRfUFJJVkFURTsKK1JldGFp
blB0cjxDRlN0cmluZ1JlZj4gY3JlYXRlWE1MU3RyaW5nRnJvbVdlYkFyY2hpdmVEYXRhKENGRGF0
YVJlZiB3ZWJBcmNoaXZlRGF0YSkgV1RGX0VYUE9SVF9QUklWQVRFOwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlVGVzdFN1cHBvcnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
Y29jb2EvV2ViQXJjaGl2ZUR1bXBTdXBwb3J0Lm1tIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9j
b2NvYS9XZWJBcmNoaXZlRHVtcFN1cHBvcnQubW0KaW5kZXggNWU3ZDhlMTZhOThmYjcwMWY0N2M1
ZTQ5N2ZiYTkxMjNkZWI3OWRjMS4uYmU2NjA3OGE4M2QwY2E0OWI3MWExZmI1M2MyM2E4YzZiODFk
NzY3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9jb2NvYS9XZWJBcmNoaXZl
RHVtcFN1cHBvcnQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9jb2NvYS9XZWJBcmNo
aXZlRHVtcFN1cHBvcnQubW0KQEAgLTIwMCw3ICsyMDAsNyBAQCBzdGF0aWMgQ0ZDb21wYXJpc29u
UmVzdWx0IGNvbXBhcmVSZXNvdXJjZVVSTHMoY29uc3Qgdm9pZCAqdmFsMSwgY29uc3Qgdm9pZCAq
dmFsMgogICAgIHJldHVybiBDRlN0cmluZ0NvbXBhcmUodXJsMSwgdXJsMiwga0NGQ29tcGFyZUFu
Y2hvcmVkKTsKIH0KIAotQ0ZTdHJpbmdSZWYgY3JlYXRlWE1MU3RyaW5nRnJvbVdlYkFyY2hpdmVE
YXRhKENGRGF0YVJlZiB3ZWJBcmNoaXZlRGF0YSkKK1JldGFpblB0cjxDRlN0cmluZ1JlZj4gY3Jl
YXRlWE1MU3RyaW5nRnJvbVdlYkFyY2hpdmVEYXRhKENGRGF0YVJlZiB3ZWJBcmNoaXZlRGF0YSkK
IHsKICAgICBDRkVycm9yUmVmIGVycm9yID0gMDsKICAgICBDRlByb3BlcnR5TGlzdEZvcm1hdCBm
b3JtYXQgPSBrQ0ZQcm9wZXJ0eUxpc3RCaW5hcnlGb3JtYXRfdjFfMDsKQEAgLTIwOCw4ICsyMDgs
OCBAQCBDRlN0cmluZ1JlZiBjcmVhdGVYTUxTdHJpbmdGcm9tV2ViQXJjaGl2ZURhdGEoQ0ZEYXRh
UmVmIHdlYkFyY2hpdmVEYXRhKQogCiAgICAgaWYgKCFwcm9wZXJ0eUxpc3QpIHsKICAgICAgICAg
aWYgKGVycm9yKQotICAgICAgICAgICAgcmV0dXJuIENGRXJyb3JDb3B5RGVzY3JpcHRpb24oZXJy
b3IpOwotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q0ZTdHJpbmdSZWY+KENGUmV0YWluKENG
U1RSKCJBbiB1bmtub3duIGVycm9yIG9jY3VycmVkIGNvbnZlcnRpbmcgZGF0YSB0byBwcm9wZXJ0
eSBsaXN0LiIpKSk7CisgICAgICAgICAgICByZXR1cm4gYWRvcHRDRihDRkVycm9yQ29weURlc2Ny
aXB0aW9uKGVycm9yKSk7CisgICAgICAgIHJldHVybiBDRlNUUigiQW4gdW5rbm93biBlcnJvciBv
Y2N1cnJlZCBjb252ZXJ0aW5nIGRhdGEgdG8gcHJvcGVydHkgbGlzdC4iKTsKICAgICB9CiAKICAg
ICBSZXRhaW5QdHI8Q0ZNdXRhYmxlQXJyYXlSZWY+IHJlc291cmNlcyA9IGFkb3B0Q0YoQ0ZBcnJh
eUNyZWF0ZU11dGFibGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgMCwgJmtDRlR5cGVBcnJheUNhbGxC
YWNrcykpOwpAQCAtMjUwLDggKzI1MCw4IEBAIENGU3RyaW5nUmVmIGNyZWF0ZVhNTFN0cmluZ0Zy
b21XZWJBcmNoaXZlRGF0YShDRkRhdGFSZWYgd2ViQXJjaGl2ZURhdGEpCiAKICAgICBpZiAoIXht
bERhdGEpIHsKICAgICAgICAgaWYgKGVycm9yKQotICAgICAgICAgICAgcmV0dXJuIENGRXJyb3JD
b3B5RGVzY3JpcHRpb24oZXJyb3IpOwotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q0ZTdHJp
bmdSZWY+KENGUmV0YWluKENGU1RSKCJBbiB1bmtub3duIGVycm9yIG9jY3VycmVkIGNvbnZlcnRp
bmcgcHJvcGVydHkgbGlzdCB0byBkYXRhLiIpKSk7CisgICAgICAgICAgICByZXR1cm4gYWRvcHRD
RihDRkVycm9yQ29weURlc2NyaXB0aW9uKGVycm9yKSk7CisgICAgICAgIHJldHVybiBDRlNUUigi
QW4gdW5rbm93biBlcnJvciBvY2N1cnJlZCBjb252ZXJ0aW5nIHByb3BlcnR5IGxpc3QgdG8gZGF0
YS4iKTsKICAgICB9CiAKICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHhtbFN0cmluZyA9IGFk
b3B0Q0YoQ0ZTdHJpbmdDcmVhdGVGcm9tRXh0ZXJuYWxSZXByZXNlbnRhdGlvbihrQ0ZBbGxvY2F0
b3JEZWZhdWx0LCB4bWxEYXRhLmdldCgpLCBrQ0ZTdHJpbmdFbmNvZGluZ1VURjgpKTsKQEAgLTI2
Niw3ICsyNjYsNyBAQCBDRlN0cmluZ1JlZiBjcmVhdGVYTUxTdHJpbmdGcm9tV2ViQXJjaGl2ZURh
dGEoQ0ZEYXRhUmVmIHdlYkFyY2hpdmVEYXRhKQogICAgIHF1aWNrTG9va1VSTFJlcGxhY2VtZW50
cygpLmNsZWFyKCk7CiAjZW5kaWYKIAotICAgIHJldHVybiBzdHJpbmcubGVha1JlZigpOworICAg
IHJldHVybiBzdHJpbmc7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmVUZXN0U3VwcG9ydApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9jb2NvYS9XZWJWaWV3VmlzdWFsSWRl
bnRpZmljYXRpb25PdmVybGF5Lm1tIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9jb2NvYS9XZWJW
aWV3VmlzdWFsSWRlbnRpZmljYXRpb25PdmVybGF5Lm1tCmluZGV4IDFmN2E2MmFhM2ZjZjQ3Y2My
MzEwOWIzZmJiMzkzZWFiYjgzMzNmNDIuLmQ5Njk0NTEwNmNjMWVkYmVhZGEwM2U4ZmZkNTExNDc5
N2NmYzc0ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvY29jb2EvV2ViVmll
d1Zpc3VhbElkZW50aWZpY2F0aW9uT3ZlcmxheS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL2NvY29hL1dlYlZpZXdWaXN1YWxJZGVudGlmaWNhdGlvbk92ZXJsYXkubW0KQEAgLTEyMSwx
MCArMTIxLDEwIEBAIC0gKHZvaWQpb2JzZXJ2ZVZhbHVlRm9yS2V5UGF0aDooTlNTdHJpbmcgKilr
ZXlQYXRoIG9mT2JqZWN0OihpZClvYmplY3QgY2hhbmdlOihOCiAgICAgfQogfQogCi1zdGF0aWMg
Q1RGb250UmVmIGlkZW50aWZpY2F0aW9uRm9udCgpCitzdGF0aWMgUmV0YWluUHRyPENURm9udFJl
Zj4gY3JlYXRlSWRlbnRpZmljYXRpb25Gb250KCkKIHsKICAgICBhdXRvIG1hdHJpeCA9IENHQWZm
aW5lVHJhbnNmb3JtSWRlbnRpdHk7Ci0gICAgcmV0dXJuIChDVEZvbnRSZWYpQ0ZBdXRvcmVsZWFz
ZShDVEZvbnRDcmVhdGVXaXRoTmFtZShDRlNUUigiSGVsdmV0aWNhIiksIDIwLCAmbWF0cml4KSk7
CisgICAgcmV0dXJuIGFkb3B0Q0YoQ1RGb250Q3JlYXRlV2l0aE5hbWUoQ0ZTVFIoIkhlbHZldGlj
YSIpLCAyMCwgJm1hdHJpeCkpOwogfQogCiBjb25zdGV4cHIgQ0dGbG9hdCBob3Jpem9udGFsTWFy
Z2luID0gMTU7CkBAIC0xMzUsNyArMTM1LDcgQEAgc3RhdGljIHZvaWQgZHJhd1BhdHRlcm4odm9p
ZCAqb3ZlcmxheVB0ciwgQ0dDb250ZXh0UmVmIGN0eCkKICAgICBXZWJWaWV3VmlzdWFsSWRlbnRp
ZmljYXRpb25PdmVybGF5ICpvdmVybGF5ID0gKFdlYlZpZXdWaXN1YWxJZGVudGlmaWNhdGlvbk92
ZXJsYXkgKilvdmVybGF5UHRyOwogCiAgICAgYXV0byBhdHRyaWJ1dGVzID0gQHsKLSAgICAgICAg
KGlkKWtDVEZvbnRBdHRyaWJ1dGVOYW1lIDogKGlkKWlkZW50aWZpY2F0aW9uRm9udCgpLAorICAg
ICAgICAoaWQpa0NURm9udEF0dHJpYnV0ZU5hbWUgOiAoaWQpY3JlYXRlSWRlbnRpZmljYXRpb25G
b250KCkuZ2V0KCksCiAgICAgICAgIChpZClrQ1RGb3JlZ3JvdW5kQ29sb3JGcm9tQ29udGV4dEF0
dHJpYnV0ZU5hbWUgOiBAWUVTCiAgICAgfTsKICAgICBhdXRvIGF0dHJpYnV0ZWRTdHJpbmcgPSBh
ZG9wdENGKENGQXR0cmlidXRlZFN0cmluZ0NyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAoX19i
cmlkZ2UgQ0ZTdHJpbmdSZWYpb3ZlcmxheS0+X2tpbmQuZ2V0KCksIChfX2JyaWRnZSBDRkRpY3Rp
b25hcnlSZWYpYXR0cmlidXRlcykpOwpAQCAtMTY1LDcgKzE2NSw3IEBAIC0gKHZvaWQpZHJhd0xh
eWVyOihDQUxheWVyICopbGF5ZXIgaW5Db250ZXh0OihDR0NvbnRleHRSZWYpY3R4CiAgICAgYXV0
byBwYXR0ZXJuU3BhY2UgPSBhZG9wdENGKENHQ29sb3JTcGFjZUNyZWF0ZVBhdHRlcm4obnVsbHB0
cikpOwogICAgIENHQ29udGV4dFNldEZpbGxDb2xvclNwYWNlKGN0eCwgcGF0dGVyblNwYWNlLmdl
dCgpKTsKIAotICAgIENHU2l6ZSB0ZXh0U2l6ZSA9IFtfa2luZCBzaXplV2l0aEF0dHJpYnV0ZXM6
QHsgKGlkKWtDVEZvbnRBdHRyaWJ1dGVOYW1lIDogKGlkKWlkZW50aWZpY2F0aW9uRm9udCgpIH1d
OworICAgIENHU2l6ZSB0ZXh0U2l6ZSA9IFtfa2luZCBzaXplV2l0aEF0dHJpYnV0ZXM6QHsgKGlk
KWtDVEZvbnRBdHRyaWJ1dGVOYW1lIDogKGlkKWNyZWF0ZUlkZW50aWZpY2F0aW9uRm9udCgpLmdl
dCgpIH1dOwogICAgIENHU2l6ZSBwYXR0ZXJuU2l6ZSA9IENHU2l6ZU1ha2UodGV4dFNpemUud2lk
dGggKyBob3Jpem9udGFsTWFyZ2luLCAodGV4dFNpemUuaGVpZ2h0ICsgdmVydGljYWxNYXJnaW4p
ICogMik7CiAgICAgYXV0byBwYXR0ZXJuID0gYWRvcHRDRihDR1BhdHRlcm5DcmVhdGUoc2VsZiwg
bGF5ZXIuYm91bmRzLCBDR0FmZmluZVRyYW5zZm9ybU1ha2VSb3RhdGlvbihNX1BJXzQpLCBwYXR0
ZXJuU2l6ZS53aWR0aCwgcGF0dGVyblNpemUuaGVpZ2h0LCBrQ0dQYXR0ZXJuVGlsaW5nTm9EaXN0
b3J0aW9uLCB0cnVlLCAmY2FsbGJhY2tzKSk7CiAgICAgQ0dGbG9hdCBhbHBoYSA9IDAuNTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vbWFjL1N0cmluZ1V0aWxpdGllcy5tbSBi
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vbWFjL1N0cmluZ1V0aWxpdGllcy5tbQppbmRleCA2ODRm
ZDg4Nzk3NjUzZjQ4Y2IzNmM0NWRiMjA4MTdmNGMyYWU4NDNiLi42ZTJlZTZlM2IzMGI2ZmQ0Y2Y5
MDQyYjQ5YmRiZTVkZjcyYzEwNzFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L21hYy9TdHJpbmdVdGlsaXRpZXMubW0KKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9tYWMv
U3RyaW5nVXRpbGl0aWVzLm1tCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewog
CiBOU1N0cmluZyAqbnNTdHJpbmdGcm9tV2ViQ29yZVN0cmluZyhjb25zdCBTdHJpbmcmIHN0cmlu
ZykKIHsKLSAgICByZXR1cm4gc3RyaW5nLmlzRW1wdHkoKSA/IEAiIiA6IENGQnJpZGdpbmdSZWxl
YXNlKFdLU3RyaW5nQ29weUNGU3RyaW5nKDAsIHRvQVBJKHN0cmluZy5pbXBsKCkpKSk7CisgICAg
cmV0dXJuIHN0cmluZy5pc0VtcHR5KCkgPyBAIiIgOiBhZG9wdENGKFdLU3RyaW5nQ29weUNGU3Ry
aW5nKDAsIHRvQVBJKHN0cmluZy5pbXBsKCkpKSkuYnJpZGdpbmdBdXRvcmVsZWFzZSgpOwogfQog
CiAjaWYgRU5BQkxFKFRFTEVQSE9ORV9OVU1CRVJfREVURUNUSU9OKSAmJiBQTEFURk9STShNQUMp
CkBAIC02NSwxMSArNjUsMTEgQEAgTlNTdHJpbmcgKmZvcm1hdHRlZFBob25lTnVtYmVyU3RyaW5n
KE5TU3RyaW5nICpvcmlnaW5hbFBob25lTnVtYmVyKQogICAgIGlmICghcGhvbmVOdW1iZXIpCiAg
ICAgICAgIHJldHVybiBvcmlnaW5hbFBob25lTnVtYmVyOwogCi0gICAgQ0ZTdHJpbmdSZWYgcGhv
bmVOdW1iZXJTdHJpbmcgPSBDRlBob25lTnVtYmVyQ29weUZvcm1hdHRlZFJlcHJlc2VudGF0aW9u
KHBob25lTnVtYmVyLmdldCgpKTsKKyAgICBhdXRvIHBob25lTnVtYmVyU3RyaW5nID0gYWRvcHRD
RihDRlBob25lTnVtYmVyQ29weUZvcm1hdHRlZFJlcHJlc2VudGF0aW9uKHBob25lTnVtYmVyLmdl
dCgpKSk7CiAgICAgaWYgKCFwaG9uZU51bWJlclN0cmluZykKLSAgICAgICAgcGhvbmVOdW1iZXJT
dHJpbmcgPSBDRlBob25lTnVtYmVyQ29weVVuZm9ybWF0dGVkUmVwcmVzZW50YXRpb24ocGhvbmVO
dW1iZXIuZ2V0KCkpOworICAgICAgICBwaG9uZU51bWJlclN0cmluZyA9IGFkb3B0Q0YoQ0ZQaG9u
ZU51bWJlckNvcHlVbmZvcm1hdHRlZFJlcHJlc2VudGF0aW9uKHBob25lTnVtYmVyLmdldCgpKSk7
CiAKLSAgICByZXR1cm4gQ0ZCcmlkZ2luZ1JlbGVhc2UocGhvbmVOdW1iZXJTdHJpbmcpOworICAg
IHJldHVybiBwaG9uZU51bWJlclN0cmluZy5icmlkZ2luZ0F1dG9yZWxlYXNlKCk7CiB9CiAKICNl
bHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvbWFjL1BsdWdpblBy
b2Nlc3NNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvbWFjL1BsdWdpblByb2Nl
c3NNYWMubW0KaW5kZXggMzFlOWNmOTJmMDJlZTBjY2YxMDdhZmZlNTZjMDUzNDhmYmM1YzRmMC4u
MTk0OTJmN2ViYmUzZmQ5Zjc2ZDFjZmI4MjMzYTcxN2E2OTc1ZDc1ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL21hYy9QbHVnaW5Qcm9jZXNzTWFjLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9tYWMvUGx1Z2luUHJvY2Vzc01hYy5tbQpAQCAtMzEy
LDE5ICszMTIsMTYgQEAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZUNvY29hT3ZlcnJpZGVzKCkKICAg
ICBOU05vdGlmaWNhdGlvbkNlbnRlciAqZGVmYXVsdENlbnRlciA9IFtOU05vdGlmaWNhdGlvbkNl
bnRlciBkZWZhdWx0Q2VudGVyXTsKIAogICAgIC8vIFRyYWNrIHdoZW4gYW55IENvY29hIHdpbmRv
dyBpcyBhYm91dCB0byBiZSBiZSBzaG93bi4KLSAgICBpZCBvcmRlck9uU2NyZWVuT2JzZXJ2ZXIg
PSBbZGVmYXVsdENlbnRlciBhZGRPYnNlcnZlckZvck5hbWU6TlNXaW5kb3dXaWxsT3JkZXJPblNj
cmVlbk5vdGlmaWNhdGlvbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG9iamVjdDpuaWwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcXVldWU6bmlsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzaW5nQmxvY2s6
XihOU05vdGlmaWNhdGlvbiAqbm90aWZpY2F0aW9uKSB7IGZ1bGxzY3JlZW5XaW5kb3dUcmFja2Vy
KCkud2luZG93U2hvd24oW25vdGlmaWNhdGlvbiBvYmplY3RdKTsgfV07CisgICAgW2RlZmF1bHRD
ZW50ZXIgYWRkT2JzZXJ2ZXJGb3JOYW1lOk5TV2luZG93V2lsbE9yZGVyT25TY3JlZW5Ob3RpZmlj
YXRpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYmplY3Q6bmlsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHF1ZXVlOm5pbAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdXNpbmdCbG9jazpeKE5TTm90aWZpY2F0aW9uICpub3RpZmljYXRpb24pIHsgZnVsbHNj
cmVlbldpbmRvd1RyYWNrZXIoKS53aW5kb3dTaG93bihbbm90aWZpY2F0aW9uIG9iamVjdF0pOyB9
XTsKICAgICAvLyBUcmFjayB3aGVuIGFueSBDb2NvYSB3aW5kb3cgaXMgYWJvdXQgdG8gYmUgaGlk
ZGVuLgotICAgIGlkIG9yZGVyT2ZmU2NyZWVuT2JzZXJ2ZXIgPSBbZGVmYXVsdENlbnRlciBhZGRP
YnNlcnZlckZvck5hbWU6TlNXaW5kb3dXaWxsT3JkZXJPZmZTY3JlZW5Ob3RpZmljYXRpb24KLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
b2JqZWN0Om5pbAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcXVldWU6bmlsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdXNpbmdCbG9jazpeKE5TTm90aWZpY2F0aW9uICpub3Rp
ZmljYXRpb24pIHsgZnVsbHNjcmVlbldpbmRvd1RyYWNrZXIoKS53aW5kb3dIaWRkZW4oW25vdGlm
aWNhdGlvbiBvYmplY3RdKTsgfV07Ci0KLSAgICAvLyBMZWFrIHRoZSB0d28gb2JzZXJ2ZXJzIHNv
IHRoYXQgdGhleSBvYnNlcnZlIG5vdGlmaWNhdGlvbnMgZm9yIHRoZSBsaWZldGltZSBvZiB0aGUg
cHJvY2Vzcy4KLSAgICBDRlJldGFpbigoX19icmlkZ2UgQ0ZUeXBlUmVmKW9yZGVyT25TY3JlZW5P
YnNlcnZlcik7Ci0gICAgQ0ZSZXRhaW4oKF9fYnJpZGdlIENGVHlwZVJlZilvcmRlck9mZlNjcmVl
bk9ic2VydmVyKTsKKyAgICBbZGVmYXVsdENlbnRlciBhZGRPYnNlcnZlckZvck5hbWU6TlNXaW5k
b3dXaWxsT3JkZXJPZmZTY3JlZW5Ob3RpZmljYXRpb24KKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBvYmplY3Q6bmlsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1ZXVl
Om5pbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNpbmdCbG9jazpeKE5TTm90aWZpY2F0
aW9uICpub3RpZmljYXRpb24pIHsgZnVsbHNjcmVlbldpbmRvd1RyYWNrZXIoKS53aW5kb3dIaWRk
ZW4oW25vdGlmaWNhdGlvbiBvYmplY3RdKTsgfV07CisKIH0KIAogdm9pZCBQbHVnaW5Qcm9jZXNz
OjpzZXRNb2RhbFdpbmRvd0lzU2hvd2luZyhib29sIG1vZGFsV2luZG93SXNTaG93aW5nKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL1Bhc3RlYm9hcmRUeXBlcy5tbSBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL21hYy9QYXN0ZWJvYXJkVHlwZXMubW0KaW5kZXggNTNmOThjMTM3
NGY5NGQ1N2IyNmU0NmE2ZGIyNmI4YWQyNGU3OTc1ZS4uZWQ0YzdiOWI4ODE5NmYyYTlhYTBjYTYy
Mzg0ODEwNGM4OTg4MzEzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL1Bh
c3RlYm9hcmRUeXBlcy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvUGFzdGVib2Fy
ZFR5cGVzLm1tCkBAIC0zNyw0NiArMzcsNDAgQEAgTlNTdHJpbmcgKiBjb25zdCBQYXN0ZWJvYXJk
VHlwZXM6OldlYlVSTHNXaXRoVGl0bGVzUGJvYXJkVHlwZSA9IEAiV2ViVVJMc1dpdGhUaXQKIE5T
U3RyaW5nICogY29uc3QgUGFzdGVib2FyZFR5cGVzOjpXZWJVUkxQYm9hcmRUeXBlID0gQCJwdWJs
aWMudXJsIjsKIE5TU3RyaW5nICogY29uc3QgUGFzdGVib2FyZFR5cGVzOjpXZWJVUkxOYW1lUGJv
YXJkVHlwZSA9IEAicHVibGljLnVybC1uYW1lIjsKIE5TU3RyaW5nICogY29uc3QgUGFzdGVib2Fy
ZFR5cGVzOjpXZWJEdW1teVBib2FyZFR5cGUgPSBAIkFwcGxlIFdlYktpdCBkdW1teSBwYXN0ZWJv
YXJkIHR5cGUiOwotCi1zdGF0aWMgaW5saW5lIE5TQXJyYXkgKnJldGFpbihOU0FycmF5ICphcnJh
eSkKLXsKLSAgICBDRlJldGFpbihhcnJheSk7Ci0gICAgcmV0dXJuIGFycmF5OwotfQogICAgIAog
TlNBcnJheSogUGFzdGVib2FyZFR5cGVzOjpmb3JFZGl0aW5nKCkKIHsKIEFMTE9XX0RFUFJFQ0FU
RURfREVDTEFSQVRJT05TX0JFR0lOIAotICAgIHN0YXRpYyBOU0FycmF5ICp0eXBlcyA9IHJldGFp
bihAW1dlYkFyY2hpdmVQYm9hcmRUeXBlLCAoX19icmlkZ2UgTlNTdHJpbmcgKilrVVRUeXBlV2Vi
QXJjaGl2ZSwgV2ViQ29yZTo6bGVnYWN5SFRNTFBhc3RlYm9hcmRUeXBlKCksIFdlYkNvcmU6Omxl
Z2FjeUZpbGVuYW1lc1Bhc3RlYm9hcmRUeXBlKCksIFdlYkNvcmU6OmxlZ2FjeVRJRkZQYXN0ZWJv
YXJkVHlwZSgpLCBXZWJDb3JlOjpsZWdhY3lQREZQYXN0ZWJvYXJkVHlwZSgpLAotICAgICAgICBX
ZWJDb3JlOjpsZWdhY3lVUkxQYXN0ZWJvYXJkVHlwZSgpLCBXZWJDb3JlOjpsZWdhY3lSVEZEUGFz
dGVib2FyZFR5cGUoKSwgV2ViQ29yZTo6bGVnYWN5UlRGUGFzdGVib2FyZFR5cGUoKSwgV2ViQ29y
ZTo6bGVnYWN5U3RyaW5nUGFzdGVib2FyZFR5cGUoKSwgV2ViQ29yZTo6bGVnYWN5Q29sb3JQYXN0
ZWJvYXJkVHlwZSgpLCAoX19icmlkZ2UgTlNTdHJpbmcgKilrVVRUeXBlUE5HXSk7CisgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxOU0FycmF5Pj4gdHlwZXMgPSBAW1dlYkFyY2hp
dmVQYm9hcmRUeXBlLCAoX19icmlkZ2UgTlNTdHJpbmcgKilrVVRUeXBlV2ViQXJjaGl2ZSwgV2Vi
Q29yZTo6bGVnYWN5SFRNTFBhc3RlYm9hcmRUeXBlKCksIFdlYkNvcmU6OmxlZ2FjeUZpbGVuYW1l
c1Bhc3RlYm9hcmRUeXBlKCksIFdlYkNvcmU6OmxlZ2FjeVRJRkZQYXN0ZWJvYXJkVHlwZSgpLCBX
ZWJDb3JlOjpsZWdhY3lQREZQYXN0ZWJvYXJkVHlwZSgpLAorICAgICAgICBXZWJDb3JlOjpsZWdh
Y3lVUkxQYXN0ZWJvYXJkVHlwZSgpLCBXZWJDb3JlOjpsZWdhY3lSVEZEUGFzdGVib2FyZFR5cGUo
KSwgV2ViQ29yZTo6bGVnYWN5UlRGUGFzdGVib2FyZFR5cGUoKSwgV2ViQ29yZTo6bGVnYWN5U3Ry
aW5nUGFzdGVib2FyZFR5cGUoKSwgV2ViQ29yZTo6bGVnYWN5Q29sb3JQYXN0ZWJvYXJkVHlwZSgp
LCAoX19icmlkZ2UgTlNTdHJpbmcgKilrVVRUeXBlUE5HXTsKIEFMTE9XX0RFUFJFQ0FURURfREVD
TEFSQVRJT05TX0VORAotICAgIHJldHVybiB0eXBlczsKKyAgICByZXR1cm4gdHlwZXMuZ2V0KCku
Z2V0KCk7CiB9CiAKIE5TQXJyYXkqIFBhc3RlYm9hcmRUeXBlczo6Zm9yVVJMKCkKIHsKLSAgICBz
dGF0aWMgTlNBcnJheSAqdHlwZXMgPSByZXRhaW4oQFtXZWJVUkxzV2l0aFRpdGxlc1Bib2FyZFR5
cGUsIFdlYkNvcmU6OmxlZ2FjeVVSTFBhc3RlYm9hcmRUeXBlKCksIFdlYlVSTFBib2FyZFR5cGUs
ICBXZWJVUkxOYW1lUGJvYXJkVHlwZSwgV2ViQ29yZTo6bGVnYWN5U3RyaW5nUGFzdGVib2FyZFR5
cGUoKSwgV2ViQ29yZTo6bGVnYWN5RmlsZW5hbWVzUGFzdGVib2FyZFR5cGUoKSwgV2ViQ29yZTo6
bGVnYWN5RmlsZXNQcm9taXNlUGFzdGVib2FyZFR5cGUoKV0pOwotICAgIHJldHVybiB0eXBlczsK
KyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPE5TQXJyYXk+PiB0eXBlcyA9IEBb
V2ViVVJMc1dpdGhUaXRsZXNQYm9hcmRUeXBlLCBXZWJDb3JlOjpsZWdhY3lVUkxQYXN0ZWJvYXJk
VHlwZSgpLCBXZWJVUkxQYm9hcmRUeXBlLCAgV2ViVVJMTmFtZVBib2FyZFR5cGUsIFdlYkNvcmU6
OmxlZ2FjeVN0cmluZ1Bhc3RlYm9hcmRUeXBlKCksIFdlYkNvcmU6OmxlZ2FjeUZpbGVuYW1lc1Bh
c3RlYm9hcmRUeXBlKCksIFdlYkNvcmU6OmxlZ2FjeUZpbGVzUHJvbWlzZVBhc3RlYm9hcmRUeXBl
KCldOworICAgIHJldHVybiB0eXBlcy5nZXQoKS5nZXQoKTsKIH0KIAogTlNBcnJheSogUGFzdGVi
b2FyZFR5cGVzOjpmb3JJbWFnZXMoKQogewotICAgIHN0YXRpYyBOU0FycmF5ICp0eXBlcyA9IHJl
dGFpbihAW1dlYkNvcmU6OmxlZ2FjeVRJRkZQYXN0ZWJvYXJkVHlwZSgpLCBXZWJVUkxzV2l0aFRp
dGxlc1Bib2FyZFR5cGUsIFdlYkNvcmU6OmxlZ2FjeVVSTFBhc3RlYm9hcmRUeXBlKCksIFdlYlVS
TFBib2FyZFR5cGUsIFdlYlVSTE5hbWVQYm9hcmRUeXBlLCBXZWJDb3JlOjpsZWdhY3lTdHJpbmdQ
YXN0ZWJvYXJkVHlwZSgpXSk7Ci0gICAgcmV0dXJuIHR5cGVzOworICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxSZXRhaW5QdHI8TlNBcnJheT4+IHR5cGVzID0gQFtXZWJDb3JlOjpsZWdhY3lUSUZG
UGFzdGVib2FyZFR5cGUoKSwgV2ViVVJMc1dpdGhUaXRsZXNQYm9hcmRUeXBlLCBXZWJDb3JlOjps
ZWdhY3lVUkxQYXN0ZWJvYXJkVHlwZSgpLCBXZWJVUkxQYm9hcmRUeXBlLCBXZWJVUkxOYW1lUGJv
YXJkVHlwZSwgV2ViQ29yZTo6bGVnYWN5U3RyaW5nUGFzdGVib2FyZFR5cGUoKV07CisgICAgcmV0
dXJuIHR5cGVzLmdldCgpLmdldCgpOwogfQogCiBOU0FycmF5KiBQYXN0ZWJvYXJkVHlwZXM6OmZv
ckltYWdlc1dpdGhBcmNoaXZlKCkKIHsKLSAgICBzdGF0aWMgTlNBcnJheSAqdHlwZXMgPSByZXRh
aW4oQFtXZWJDb3JlOjpsZWdhY3lUSUZGUGFzdGVib2FyZFR5cGUoKSwgV2ViVVJMc1dpdGhUaXRs
ZXNQYm9hcmRUeXBlLCBXZWJDb3JlOjpsZWdhY3lVUkxQYXN0ZWJvYXJkVHlwZSgpLCBXZWJVUkxQ
Ym9hcmRUeXBlLCBXZWJVUkxOYW1lUGJvYXJkVHlwZSwgV2ViQ29yZTo6bGVnYWN5U3RyaW5nUGFz
dGVib2FyZFR5cGUoKSwgV2ViQ29yZTo6bGVnYWN5UlRGRFBhc3RlYm9hcmRUeXBlKCksIFdlYkFy
Y2hpdmVQYm9hcmRUeXBlXSk7Ci0gICAgcmV0dXJuIHR5cGVzOworICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxSZXRhaW5QdHI8TlNBcnJheT4+IHR5cGVzID0gQFtXZWJDb3JlOjpsZWdhY3lUSUZG
UGFzdGVib2FyZFR5cGUoKSwgV2ViVVJMc1dpdGhUaXRsZXNQYm9hcmRUeXBlLCBXZWJDb3JlOjps
ZWdhY3lVUkxQYXN0ZWJvYXJkVHlwZSgpLCBXZWJVUkxQYm9hcmRUeXBlLCBXZWJVUkxOYW1lUGJv
YXJkVHlwZSwgV2ViQ29yZTo6bGVnYWN5U3RyaW5nUGFzdGVib2FyZFR5cGUoKSwgV2ViQ29yZTo6
bGVnYWN5UlRGRFBhc3RlYm9hcmRUeXBlKCksIFdlYkFyY2hpdmVQYm9hcmRUeXBlXTsKKyAgICBy
ZXR1cm4gdHlwZXMuZ2V0KCkuZ2V0KCk7CiB9CiAKIE5TQXJyYXkqIFBhc3RlYm9hcmRUeXBlczo6
Zm9yU2VsZWN0aW9uKCkKIHsKIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOIAot
ICAgIHN0YXRpYyBOU0FycmF5ICp0eXBlcyA9IHJldGFpbihAW1dlYkFyY2hpdmVQYm9hcmRUeXBl
LCAoX19icmlkZ2UgTlNTdHJpbmcgKilrVVRUeXBlV2ViQXJjaGl2ZSwgV2ViQ29yZTo6bGVnYWN5
UlRGRFBhc3RlYm9hcmRUeXBlKCksIFdlYkNvcmU6OmxlZ2FjeVJURlBhc3RlYm9hcmRUeXBlKCks
IFdlYkNvcmU6OmxlZ2FjeVN0cmluZ1Bhc3RlYm9hcmRUeXBlKCldKTsKKyAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPE5TQXJyYXk+PiB0eXBlcyA9IEBbV2ViQXJjaGl2ZVBib2Fy
ZFR5cGUsIChfX2JyaWRnZSBOU1N0cmluZyAqKWtVVFR5cGVXZWJBcmNoaXZlLCBXZWJDb3JlOjps
ZWdhY3lSVEZEUGFzdGVib2FyZFR5cGUoKSwgV2ViQ29yZTo6bGVnYWN5UlRGUGFzdGVib2FyZFR5
cGUoKSwgV2ViQ29yZTo6bGVnYWN5U3RyaW5nUGFzdGVib2FyZFR5cGUoKV07CiBBTExPV19ERVBS
RUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKLSAgICByZXR1cm4gdHlwZXM7CisgICAgcmV0dXJuIHR5
cGVzLmdldCgpLmdldCgpOwogfQogICAgIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbSBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCmluZGV4IGE1YzZiYmMwY2Nm
ZTRmYjJlYjMwOTc3N2NlOGY3ZTdjYTZiYjM5OWMuLmU2ZmI3ODEwZjk2NTc4ZWUyM2YxZjliYTIz
MWFhMTQzNjk5OWQ4OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1dlYlZpZXdJbXBsLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZp
ZXdJbXBsLm1tCkBAIC0yMjU5LDggKzIyNTksNyBAQCBib29sIFdlYlZpZXdJbXBsOjphY2NlcHRz
Rmlyc3RNb3VzZShOU0V2ZW50ICpldmVudCkKICAgICAvLyBUaGVyZSdzIGEgY2hhbmNlIHRoYXQg
cmVzcG9uZGluZyB0byB0aGlzIGV2ZW50IHdpbGwgcnVuIGEgbmVzdGVkIGV2ZW50IGxvb3AsIGFu
ZAogICAgIC8vIGZldGNoaW5nIGEgbmV3IGV2ZW50IG1pZ2h0IHJlbGVhc2UgdGhlIG9sZCBvbmUu
IFJldGFpbmluZyBhbmQgdGhlbiBhdXRvcmVsZWFzaW5nCiAgICAgLy8gdGhlIGN1cnJlbnQgZXZl
bnQgcHJldmVudHMgdGhhdCBmcm9tIGNhdXNpbmcgYSBwcm9ibGVtIGluc2lkZSBXZWJLaXQgb3Ig
QXBwS2l0IGNvZGUuCi0gICAgQ0ZSZXRhaW4oKF9fYnJpZGdlIENGVHlwZVJlZilldmVudCk7Ci0g
ICAgQ0ZBdXRvcmVsZWFzZSgoX19icmlkZ2UgQ0ZUeXBlUmVmKWV2ZW50KTsKKyAgICByZXRhaW5Q
dHIoZXZlbnQpLmF1dG9yZWxlYXNlKCk7CiAKICAgICBpZiAoIVttX3ZpZXcgaGl0VGVzdDpldmVu
dC5sb2NhdGlvbkluV2luZG93XSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjI3OSw4ICsy
Mjc4LDcgQEAgYm9vbCBXZWJWaWV3SW1wbDo6c2hvdWxkRGVsYXlXaW5kb3dPcmRlcmluZ0ZvckV2
ZW50KE5TRXZlbnQgKmV2ZW50KQogICAgIC8vIFRoZXJlJ3MgYSBjaGFuY2UgdGhhdCByZXNwb25k
aW5nIHRvIHRoaXMgZXZlbnQgd2lsbCBydW4gYSBuZXN0ZWQgZXZlbnQgbG9vcCwgYW5kCiAgICAg
Ly8gZmV0Y2hpbmcgYSBuZXcgZXZlbnQgbWlnaHQgcmVsZWFzZSB0aGUgb2xkIG9uZS4gUmV0YWlu
aW5nIGFuZCB0aGVuIGF1dG9yZWxlYXNpbmcKICAgICAvLyB0aGUgY3VycmVudCBldmVudCBwcmV2
ZW50cyB0aGF0IGZyb20gY2F1c2luZyBhIHByb2JsZW0gaW5zaWRlIFdlYktpdCBvciBBcHBLaXQg
Y29kZS4KLSAgICBDRlJldGFpbigoX19icmlkZ2UgQ0ZUeXBlUmVmKWV2ZW50KTsKLSAgICBDRkF1
dG9yZWxlYXNlKChfX2JyaWRnZSBDRlR5cGVSZWYpZXZlbnQpOworICAgIHJldGFpblB0cihldmVu
dCkuYXV0b3JlbGVhc2UoKTsKIAogICAgIGlmICghW21fdmlldyBoaXRUZXN0OmV2ZW50LmxvY2F0
aW9uSW5XaW5kb3ddKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC00ODExLDI0ICs0ODA5LDIw
IEBAIHZvaWQgV2ViVmlld0ltcGw6OmRvbmVXaXRoS2V5RXZlbnQoTlNFdmVudCAqZXZlbnQsIGJv
b2wgZXZlbnRXYXNIYW5kbGVkKQogCiBOU0FycmF5ICpXZWJWaWV3SW1wbDo6dmFsaWRBdHRyaWJ1
dGVzRm9yTWFya2VkVGV4dCgpCiB7Ci0gICAgc3RhdGljIE5TQXJyYXkgKnZhbGlkQXR0cmlidXRl
czsKLSAgICBpZiAoIXZhbGlkQXR0cmlidXRlcykgewotICAgICAgICB2YWxpZEF0dHJpYnV0ZXMg
PSBAWwotICAgICAgICAgICAgTlNVbmRlcmxpbmVTdHlsZUF0dHJpYnV0ZU5hbWUsCi0gICAgICAg
ICAgICBOU1VuZGVybGluZUNvbG9yQXR0cmlidXRlTmFtZSwKLSAgICAgICAgICAgIE5TTWFya2Vk
Q2xhdXNlU2VnbWVudEF0dHJpYnV0ZU5hbWUsCi0gICAgICAgICAgICBOU1RleHRBbHRlcm5hdGl2
ZXNBdHRyaWJ1dGVOYW1lLAotICAgICAgICAgICAgTlNUZXh0SW5zZXJ0aW9uVW5kb2FibGVBdHRy
aWJ1dGVOYW1lLAotICAgICAgICBdOwotICAgICAgICAvLyBOU1RleHQgYWxzbyBzdXBwb3J0cyB0
aGUgZm9sbG93aW5nIGF0dHJpYnV0ZXMsIGJ1dCBpdCdzCi0gICAgICAgIC8vIGhhcmQgdG8gdGVs
bCB3aGljaCBhcmUgcmVhbGx5IHJlcXVpcmVkIGZvciB0ZXh0IGlucHV0IHRvCi0gICAgICAgIC8v
IHdvcmsgd2VsbDsgSSBoYXZlIG5vdCBzZWVuIGFueSBpbnB1dCBtZXRob2QgbWFrZSB1c2Ugb2Yg
dGhlbSB5ZXQuCi0gICAgICAgIC8vICAgICBOU0ZvbnRBdHRyaWJ1dGVOYW1lLCBOU0ZvcmVncm91
bmRDb2xvckF0dHJpYnV0ZU5hbWUsCi0gICAgICAgIC8vICAgICBOU0JhY2tncm91bmRDb2xvckF0
dHJpYnV0ZU5hbWUsIE5TTGFuZ3VhZ2VBdHRyaWJ1dGVOYW1lLgotICAgICAgICBDRlJldGFpbih2
YWxpZEF0dHJpYnV0ZXMpOwotICAgIH0KKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWlu
UHRyPE5TQXJyYXk+PiB2YWxpZEF0dHJpYnV0ZXMgPSBAWworICAgICAgICBOU1VuZGVybGluZVN0
eWxlQXR0cmlidXRlTmFtZSwKKyAgICAgICAgTlNVbmRlcmxpbmVDb2xvckF0dHJpYnV0ZU5hbWUs
CisgICAgICAgIE5TTWFya2VkQ2xhdXNlU2VnbWVudEF0dHJpYnV0ZU5hbWUsCisgICAgICAgIE5T
VGV4dEFsdGVybmF0aXZlc0F0dHJpYnV0ZU5hbWUsCisgICAgICAgIE5TVGV4dEluc2VydGlvblVu
ZG9hYmxlQXR0cmlidXRlTmFtZSwKKyAgICBdOworICAgIC8vIE5TVGV4dCBhbHNvIHN1cHBvcnRz
IHRoZSBmb2xsb3dpbmcgYXR0cmlidXRlcywgYnV0IGl0J3MKKyAgICAvLyBoYXJkIHRvIHRlbGwg
d2hpY2ggYXJlIHJlYWxseSByZXF1aXJlZCBmb3IgdGV4dCBpbnB1dCB0bworICAgIC8vIHdvcmsg
d2VsbDsgSSBoYXZlIG5vdCBzZWVuIGFueSBpbnB1dCBtZXRob2QgbWFrZSB1c2Ugb2YgdGhlbSB5
ZXQuCisgICAgLy8gICAgIE5TRm9udEF0dHJpYnV0ZU5hbWUsIE5TRm9yZWdyb3VuZENvbG9yQXR0
cmlidXRlTmFtZSwKKyAgICAvLyAgICAgTlNCYWNrZ3JvdW5kQ29sb3JBdHRyaWJ1dGVOYW1lLCBO
U0xhbmd1YWdlQXR0cmlidXRlTmFtZS4KICAgICBMT0coVGV4dElucHV0LCAidmFsaWRBdHRyaWJ1
dGVzRm9yTWFya2VkVGV4dCAtPiAoLi4uKSIpOwotICAgIHJldHVybiB2YWxpZEF0dHJpYnV0ZXM7
CisgICAgcmV0dXJuIHZhbGlkQXR0cmlidXRlcy5nZXQoKS5nZXQoKTsKIH0KIAogc3RhdGljIFZl
Y3RvcjxXZWJDb3JlOjpDb21wb3NpdGlvblVuZGVybGluZT4gZXh0cmFjdFVuZGVybGluZXMoTlNB
dHRyaWJ1dGVkU3RyaW5nICpzdHJpbmcpCkBAIC01MjAyLDggKzUxOTYsNyBAQCBib29sIFdlYlZp
ZXdJbXBsOjpwZXJmb3JtS2V5RXF1aXZhbGVudChOU0V2ZW50ICpldmVudCkKICAgICAvLyBUaGVy
ZSdzIGEgY2hhbmNlIHRoYXQgcmVzcG9uZGluZyB0byB0aGlzIGV2ZW50IHdpbGwgcnVuIGEgbmVz
dGVkIGV2ZW50IGxvb3AsIGFuZAogICAgIC8vIGZldGNoaW5nIGEgbmV3IGV2ZW50IG1pZ2h0IHJl
bGVhc2UgdGhlIG9sZCBvbmUuIFJldGFpbmluZyBhbmQgdGhlbiBhdXRvcmVsZWFzaW5nCiAgICAg
Ly8gdGhlIGN1cnJlbnQgZXZlbnQgcHJldmVudHMgdGhhdCBmcm9tIGNhdXNpbmcgYSBwcm9ibGVt
IGluc2lkZSBXZWJLaXQgb3IgQXBwS2l0IGNvZGUuCi0gICAgQ0ZSZXRhaW4oKF9fYnJpZGdlIENG
VHlwZVJlZilldmVudCk7Ci0gICAgQ0ZBdXRvcmVsZWFzZSgoX19icmlkZ2UgQ0ZUeXBlUmVmKWV2
ZW50KTsKKyAgICByZXRhaW5QdHIoZXZlbnQpLmF1dG9yZWxlYXNlKCk7CiAKICAgICAvLyBXZSBn
ZXQgRXNjIGtleSBoZXJlIGFmdGVyIHByb2Nlc3NpbmcgZWl0aGVyIEVzYyBvciBDbWQrcGVyaW9k
LiBUaGUgZm9ybWVyIHN0YXJ0cyBhcyBhIGtleURvd24sIGFuZCB0aGUgbGF0dGVyIHN0YXJ0cyBh
cyBhIGtleSBlcXVpdmFsZW50LAogICAgIC8vIGJ1dCBib3RoIGdldCB0cmFuc2Zvcm1lZCB0byBh
IGNhbmNlbE9wZXJhdGlvbjogY29tbWFuZCwgZXhlY3V0aW5nIHdoaWNoIHBhc3NlcyBhbiBFc2Mg
a2V5IGV2ZW50IHRvIC1wZXJmb3JtS2V5RXF1aXZhbGVudDouCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvaW9zL1dLSW5zcGVjdG9ySGlnaGxpZ2h0Vmlldy5t
bSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9pb3MvV0tJbnNwZWN0b3JIaWdo
bGlnaHRWaWV3Lm1tCmluZGV4IDQ0MTI0NDM3YzI0MzQyNWMzZWRkYjk5Mzc2Y2Q2MjI0ZjJmYzE2
YTMuLmIxYjBiZTM0YmYzMzBjMGVlNTU1ZWQ4ZGM3NDFmYzY0MmIxMDlhZjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9pb3MvV0tJbnNwZWN0b3JIaWdobGln
aHRWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9pb3MvV0tJ
bnNwZWN0b3JIaWdobGlnaHRWaWV3Lm1tCkBAIC0xODMsMjggKzE4MywyNiBAQCBzdGF0aWMgdm9p
ZCBsYXllclBhdGhXaXRoSG9sZShDQVNoYXBlTGF5ZXIgKmxheWVyLCBjb25zdCBXZWJDb3JlOjpG
bG9hdFF1YWQmIG91dAogICAgICAgICBpbm5lckhvbGUgPSBxdWFkSW50ZXJzZWN0aW9uKG91dGVy
UXVhZCwgaG9sZVF1YWQpOwogCiAgICAgLy8gQ2xvY2t3aXNlIGluc2lkZSByZWN0IChob2xlKSwg
Q291bnRlci1DbG9ja3dpc2Ugb3V0c2lkZSByZWN0IChmaWxsKS4KLSAgICBDR011dGFibGVQYXRo
UmVmIHBhdGggPSBDR1BhdGhDcmVhdGVNdXRhYmxlKCk7Ci0gICAgQ0dQYXRoTW92ZVRvUG9pbnQo
cGF0aCwgMCwgaW5uZXJIb2xlLnAxKCkueCgpLCBpbm5lckhvbGUucDEoKS55KCkpOwotICAgIENH
UGF0aEFkZExpbmVUb1BvaW50KHBhdGgsIDAsIGlubmVySG9sZS5wMigpLngoKSwgaW5uZXJIb2xl
LnAyKCkueSgpKTsKLSAgICBDR1BhdGhBZGRMaW5lVG9Qb2ludChwYXRoLCAwLCBpbm5lckhvbGUu
cDMoKS54KCksIGlubmVySG9sZS5wMygpLnkoKSk7Ci0gICAgQ0dQYXRoQWRkTGluZVRvUG9pbnQo
cGF0aCwgMCwgaW5uZXJIb2xlLnA0KCkueCgpLCBpbm5lckhvbGUucDQoKS55KCkpOwotICAgIENH
UGF0aE1vdmVUb1BvaW50KHBhdGgsIDAsIG91dGVyUXVhZC5wMSgpLngoKSwgb3V0ZXJRdWFkLnAx
KCkueSgpKTsKLSAgICBDR1BhdGhBZGRMaW5lVG9Qb2ludChwYXRoLCAwLCBvdXRlclF1YWQucDQo
KS54KCksIG91dGVyUXVhZC5wNCgpLnkoKSk7Ci0gICAgQ0dQYXRoQWRkTGluZVRvUG9pbnQocGF0
aCwgMCwgb3V0ZXJRdWFkLnAzKCkueCgpLCBvdXRlclF1YWQucDMoKS55KCkpOwotICAgIENHUGF0
aEFkZExpbmVUb1BvaW50KHBhdGgsIDAsIG91dGVyUXVhZC5wMigpLngoKSwgb3V0ZXJRdWFkLnAy
KCkueSgpKTsKLSAgICBsYXllci5wYXRoID0gcGF0aDsKLSAgICBDR1BhdGhSZWxlYXNlKHBhdGgp
OworICAgIGF1dG8gcGF0aCA9IGFkb3B0Q0YoQ0dQYXRoQ3JlYXRlTXV0YWJsZSgpKTsKKyAgICBD
R1BhdGhNb3ZlVG9Qb2ludChwYXRoLmdldCgpLCAwLCBpbm5lckhvbGUucDEoKS54KCksIGlubmVy
SG9sZS5wMSgpLnkoKSk7CisgICAgQ0dQYXRoQWRkTGluZVRvUG9pbnQocGF0aC5nZXQoKSwgMCwg
aW5uZXJIb2xlLnAyKCkueCgpLCBpbm5lckhvbGUucDIoKS55KCkpOworICAgIENHUGF0aEFkZExp
bmVUb1BvaW50KHBhdGguZ2V0KCksIDAsIGlubmVySG9sZS5wMygpLngoKSwgaW5uZXJIb2xlLnAz
KCkueSgpKTsKKyAgICBDR1BhdGhBZGRMaW5lVG9Qb2ludChwYXRoLmdldCgpLCAwLCBpbm5lckhv
bGUucDQoKS54KCksIGlubmVySG9sZS5wNCgpLnkoKSk7CisgICAgQ0dQYXRoTW92ZVRvUG9pbnQo
cGF0aC5nZXQoKSwgMCwgb3V0ZXJRdWFkLnAxKCkueCgpLCBvdXRlclF1YWQucDEoKS55KCkpOwor
ICAgIENHUGF0aEFkZExpbmVUb1BvaW50KHBhdGguZ2V0KCksIDAsIG91dGVyUXVhZC5wNCgpLngo
KSwgb3V0ZXJRdWFkLnA0KCkueSgpKTsKKyAgICBDR1BhdGhBZGRMaW5lVG9Qb2ludChwYXRoLmdl
dCgpLCAwLCBvdXRlclF1YWQucDMoKS54KCksIG91dGVyUXVhZC5wMygpLnkoKSk7CisgICAgQ0dQ
YXRoQWRkTGluZVRvUG9pbnQocGF0aC5nZXQoKSwgMCwgb3V0ZXJRdWFkLnAyKCkueCgpLCBvdXRl
clF1YWQucDIoKS55KCkpOworICAgIGxheWVyLnBhdGggPSBwYXRoLmdldCgpOwogfQogCiBzdGF0
aWMgdm9pZCBsYXllclBhdGgoQ0FTaGFwZUxheWVyICpsYXllciwgY29uc3QgV2ViQ29yZTo6Rmxv
YXRRdWFkJiBvdXRlclF1YWQpCiB7Ci0gICAgQ0dNdXRhYmxlUGF0aFJlZiBwYXRoID0gQ0dQYXRo
Q3JlYXRlTXV0YWJsZSgpOwotICAgIENHUGF0aE1vdmVUb1BvaW50KHBhdGgsIDAsIG91dGVyUXVh
ZC5wMSgpLngoKSwgb3V0ZXJRdWFkLnAxKCkueSgpKTsKLSAgICBDR1BhdGhBZGRMaW5lVG9Qb2lu
dChwYXRoLCAwLCBvdXRlclF1YWQucDQoKS54KCksIG91dGVyUXVhZC5wNCgpLnkoKSk7Ci0gICAg
Q0dQYXRoQWRkTGluZVRvUG9pbnQocGF0aCwgMCwgb3V0ZXJRdWFkLnAzKCkueCgpLCBvdXRlclF1
YWQucDMoKS55KCkpOwotICAgIENHUGF0aEFkZExpbmVUb1BvaW50KHBhdGgsIDAsIG91dGVyUXVh
ZC5wMigpLngoKSwgb3V0ZXJRdWFkLnAyKCkueSgpKTsKLSAgICBsYXllci5wYXRoID0gcGF0aDsK
LSAgICBDR1BhdGhSZWxlYXNlKHBhdGgpOworICAgIGF1dG8gcGF0aCA9IGFkb3B0Q0YoQ0dQYXRo
Q3JlYXRlTXV0YWJsZSgpKTsKKyAgICBDR1BhdGhNb3ZlVG9Qb2ludChwYXRoLmdldCgpLCAwLCBv
dXRlclF1YWQucDEoKS54KCksIG91dGVyUXVhZC5wMSgpLnkoKSk7CisgICAgQ0dQYXRoQWRkTGlu
ZVRvUG9pbnQocGF0aC5nZXQoKSwgMCwgb3V0ZXJRdWFkLnA0KCkueCgpLCBvdXRlclF1YWQucDQo
KS55KCkpOworICAgIENHUGF0aEFkZExpbmVUb1BvaW50KHBhdGguZ2V0KCksIDAsIG91dGVyUXVh
ZC5wMygpLngoKSwgb3V0ZXJRdWFkLnAzKCkueSgpKTsKKyAgICBDR1BhdGhBZGRMaW5lVG9Qb2lu
dChwYXRoLmdldCgpLCAwLCBvdXRlclF1YWQucDIoKS54KCksIG91dGVyUXVhZC5wMigpLnkoKSk7
CisgICAgbGF5ZXIucGF0aCA9IHBhdGguZ2V0KCk7CiB9CiAKIC0gKHZvaWQpX2xheW91dEZvck5v
ZGVIaWdobGlnaHQ6KGNvbnN0IFdlYkNvcmU6Okluc3BlY3Rvck92ZXJsYXk6OkhpZ2hsaWdodCYp
aGlnaGxpZ2h0IG9mZnNldDoodW5zaWduZWQpb2Zmc2V0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9fV0tUb3VjaEV2ZW50R2VuZXJhdG9yLm1tIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvX1dLVG91Y2hFdmVudEdlbmVyYXRvci5tbQppbmRleCBlMmM3MTgxMTE0ZjljYzlh
OWQxMzg5MGI5NzEyNTYwMjNkNmE4MzU4Li4yMTlkYmE1N2VmMGY1MDQ0OTMwNThjNjBjYjRkZWNj
ZTgyYWY4NGM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9fV0tUb3VjaEV2
ZW50R2VuZXJhdG9yLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL19XS1RvdWNoRXZl
bnRHZW5lcmF0b3IubW0KQEAgLTk4LDcgKzk4LDcgQEAgQHByb3BlcnR5IChub25hdG9taWMsIHN0
cm9uZykgTlNNdXRhYmxlRGljdGlvbmFyeSAqZXZlbnRDYWxsYmFja3M7CiBAZW5kCiAKIEBpbXBs
ZW1lbnRhdGlvbiBfV0tUb3VjaEV2ZW50R2VuZXJhdG9yIHsKLSAgICBJT0hJREV2ZW50U3lzdGVt
Q2xpZW50UmVmIF9pb1N5c3RlbUNsaWVudDsKKyAgICBSZXRhaW5QdHI8SU9ISURFdmVudFN5c3Rl
bUNsaWVudFJlZj4gX2lvU3lzdGVtQ2xpZW50OwogICAgIFN5bnRoZXRpY0V2ZW50RGlnaXRpemVy
SW5mbyBfYWN0aXZlUG9pbnRzW0hJRE1heFRvdWNoQ291bnRdOwogICAgIE5TVUludGVnZXIgX2Fj
dGl2ZVBvaW50Q291bnQ7CiB9CkBAIC0xMzEsOSArMTMxLDYgQEAgLSAoaW5zdGFuY2V0eXBlKWlu
aXQKIAogLSAodm9pZClkZWFsbG9jCiB7Ci0gIGlmIChfaW9TeXN0ZW1DbGllbnQpCi0gICAgICAg
IENGUmVsZWFzZShfaW9TeXN0ZW1DbGllbnQpOwotCiAgICAgW19ldmVudENhbGxiYWNrcyByZWxl
YXNlXTsKICAgICBbc3VwZXIgZGVhbGxvY107CiB9CkBAIC0yMTAsNyArMjA3LDcgQEAgLSAoSU9I
SURFdmVudFJlZilfY3JlYXRlSU9ISURFdmVudFR5cGU6KEhhbmRFdmVudFR5cGUpZXZlbnRUeXBl
CiAtIChCT09MKV9zZW5kSElERXZlbnQ6KElPSElERXZlbnRSZWYpZXZlbnRSZWYKIHsKICAgICBp
ZiAoIV9pb1N5c3RlbUNsaWVudCkKLSAgICAgICAgX2lvU3lzdGVtQ2xpZW50ID0gSU9ISURFdmVu
dFN5c3RlbUNsaWVudENyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0KTsKKyAgICAgICAgX2lvU3lz
dGVtQ2xpZW50ID0gYWRvcHRDRihJT0hJREV2ZW50U3lzdGVtQ2xpZW50Q3JlYXRlKGtDRkFsbG9j
YXRvckRlZmF1bHQpKTsKIAogICAgIGlmIChldmVudFJlZikgewogICAgICAgICBSdW5Mb29wOjpt
YWluKCkuZGlzcGF0Y2goW3N0cm9uZ0V2ZW50ID0gcmV0YWluUHRyKGV2ZW50UmVmKV0gewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Z1bGxzY3JlZW4vV0tGdWxsU2Ny
ZWVuV2luZG93Q29udHJvbGxlcklPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9m
dWxsc2NyZWVuL1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXJJT1MubW0KaW5kZXggMDMzY2Vl
ZmZiMzQ0YjRjN2FhMzEwZDhjMzc0OWE5MGVmYzQ2YzExMi4uNmFlNDU4YTI2OWY1NTQ0ODk1OWM4
NmI3YTg5ZTBmYTE3ZDdlZDFlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL2Z1bGxzY3JlZW4vV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlcklPUy5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZnVsbHNjcmVlbi9XS0Z1bGxTY3JlZW5XaW5kb3dD
b250cm9sbGVySU9TLm1tCkBAIC0xMDMwLDI4ICsxMDMwLDI4IEBAIC0gKE5TU3RyaW5nICopX0VW
T3JnYW5pemF0aW9uTmFtZQogICAgIGlmICghdHJ1c3QpCiAgICAgICAgIHJldHVybiBuaWw7CiAK
LSAgICBOU0RpY3Rpb25hcnkgKmluZm9EaWN0aW9uYXJ5ID0gQ0ZCcmlkZ2luZ1JlbGVhc2UoU2Vj
VHJ1c3RDb3B5SW5mbyh0cnVzdCkpOworICAgIGF1dG8gaW5mb0RpY3Rpb25hcnkgPSBhZG9wdENG
KFNlY1RydXN0Q29weUluZm8odHJ1c3QpKTsKICAgICAvLyBJZiBTZWNUcnVzdENvcHlJbmZvIHJl
dHVybmVkIE5VTEwgdGhlbiBpdCdzIGxpa2VseSB0aGF0IHRoZSBTZWNUcnVzdFJlZiBoYXMgbm90
IGJlZW4gZXZhbHVhdGVkCiAgICAgLy8gYW5kIHRoZSBvbmx5IHdheSB0byBnZXQgdGhlIGluZm9y
bWF0aW9uIHdlIG5lZWQgaXMgdG8gY2FsbCBTZWNUcnVzdEV2YWx1YXRlIG91cnNlbHZlcy4KICAg
ICBpZiAoIWluZm9EaWN0aW9uYXJ5KSB7CiAgICAgICAgIGlmICghU2VjVHJ1c3RFdmFsdWF0ZVdp
dGhFcnJvcih0cnVzdCwgbnVsbHB0cikpCiAgICAgICAgICAgICByZXR1cm4gbmlsOwotICAgICAg
ICBpbmZvRGljdGlvbmFyeSA9IENGQnJpZGdpbmdSZWxlYXNlKFNlY1RydXN0Q29weUluZm8odHJ1
c3QpKTsKKyAgICAgICAgaW5mb0RpY3Rpb25hcnkgPSBhZG9wdENGKFNlY1RydXN0Q29weUluZm8o
dHJ1c3QpKTsKICAgICAgICAgaWYgKCFpbmZvRGljdGlvbmFyeSkKICAgICAgICAgICAgIHJldHVy
biBuaWw7CiAgICAgfQogCiAgICAgLy8gTWFrZSBzdXJlIHRoYXQgdGhlIEVWIGNlcnRpZmljYXRl
IGlzIHZhbGlkIGFnYWluc3Qgb3VyIGNlcnRpZmljYXRlIGNoYWluLgotICAgIGlkIGhhc0VWID0g
W2luZm9EaWN0aW9uYXJ5IG9iamVjdEZvcktleTooX19icmlkZ2UgTlNTdHJpbmcgKilrU2VjVHJ1
c3RJbmZvRXh0ZW5kZWRWYWxpZGF0aW9uS2V5XTsKKyAgICBpZCBoYXNFViA9IFsoX19icmlkZ2Ug
TlNEaWN0aW9uYXJ5ICopaW5mb0RpY3Rpb25hcnkuZ2V0KCkgb2JqZWN0Rm9yS2V5OihfX2JyaWRn
ZSBOU1N0cmluZyAqKWtTZWNUcnVzdEluZm9FeHRlbmRlZFZhbGlkYXRpb25LZXldOwogICAgIGlm
ICghW2hhc0VWIGlzS2luZE9mQ2xhc3M6W05TVmFsdWUgY2xhc3NdXSB8fCAhW2hhc0VWIGJvb2xW
YWx1ZV0pCiAgICAgICAgIHJldHVybiBuaWw7CiAKICAgICAvLyBNYWtlIHN1cmUgdGhhdCB3ZSBj
b3VsZCBjb250YWN0IHJldm9jYXRpb24gc2VydmVyIGFuZCBpdCBpcyBzdGlsbCB2YWxpZC4KLSAg
ICBpZCBpc05vdFJldm9rZWQgPSBbaW5mb0RpY3Rpb25hcnkgb2JqZWN0Rm9yS2V5OihfX2JyaWRn
ZSBOU1N0cmluZyAqKWtTZWNUcnVzdEluZm9SZXZvY2F0aW9uS2V5XTsKKyAgICBpZCBpc05vdFJl
dm9rZWQgPSBbKF9fYnJpZGdlIE5TRGljdGlvbmFyeSAqKWluZm9EaWN0aW9uYXJ5LmdldCgpIG9i
amVjdEZvcktleTooX19icmlkZ2UgTlNTdHJpbmcgKilrU2VjVHJ1c3RJbmZvUmV2b2NhdGlvbktl
eV07CiAgICAgaWYgKCFbaXNOb3RSZXZva2VkIGlzS2luZE9mQ2xhc3M6W05TVmFsdWUgY2xhc3Nd
XSB8fCAhW2lzTm90UmV2b2tlZCBib29sVmFsdWVdKQogICAgICAgICByZXR1cm4gbmlsOwogCi0g
ICAgX0VWT3JnYW5pemF0aW9uTmFtZSA9IFtpbmZvRGljdGlvbmFyeSBvYmplY3RGb3JLZXk6KF9f
YnJpZGdlIE5TU3RyaW5nICopa1NlY1RydXN0SW5mb0NvbXBhbnlOYW1lS2V5XTsKKyAgICBfRVZP
cmdhbml6YXRpb25OYW1lID0gWyhfX2JyaWRnZSBOU0RpY3Rpb25hcnkgKilpbmZvRGljdGlvbmFy
eS5nZXQoKSBvYmplY3RGb3JLZXk6KF9fYnJpZGdlIE5TU3RyaW5nICopa1NlY1RydXN0SW5mb0Nv
bXBhbnlOYW1lS2V5XTsKICAgICByZXR1cm4gX0VWT3JnYW5pemF0aW9uTmFtZS5nZXQoKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3ND
b2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2Eu
bW0KaW5kZXggMzA5MjE1MmMwZmM0N2FkYjA3OTU1YjdkNDg3MmM4ZjE2YTljYmUyNS4uNTUyYWFk
Mzg4NDU3ZjcxNDIwNDhhMjYxZmYyNmYyOWM0YmExOTFlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCkBAIC01MjgsNyArNTI4LDcg
QEAgdm9pZCBXZWJQcm9jZXNzOjp1cGRhdGVQcm9jZXNzTmFtZShJc0luUHJvY2Vzc0luaXRpYWxp
emF0aW9uIGlzSW5Qcm9jZXNzSW5pdGlhbGkKIHN0YXRpYyBOU1N0cmluZyAqd2ViUHJvY2Vzc0xv
YWRlckFjY2Vzc2liaWxpdHlCdW5kbGVQYXRoKCkKIHsKICNpZiBIQVZFKEFDQ0VTU0lCSUxJVFlf
QlVORExFU19QQVRIKQotICAgIHJldHVybiAoX19icmlkZ2UgTlNTdHJpbmcgKilDRkF1dG9yZWxl
YXNlKF9BWFNDb3B5UGF0aEZvckFjY2Vzc2liaWxpdHlCdW5kbGUoQ0ZTVFIoIldlYlByb2Nlc3NM
b2FkZXIiKSkpOworICAgIHJldHVybiBhZG9wdENGKF9BWFNDb3B5UGF0aEZvckFjY2Vzc2liaWxp
dHlCdW5kbGUoQ0ZTVFIoIldlYlByb2Nlc3NMb2FkZXIiKSkpLmJyaWRnaW5nQXV0b3JlbGVhc2Uo
KTsKICNlbHNlCiAgICAgTlNTdHJpbmcgKnBhdGggPSAoX19icmlkZ2UgTlNTdHJpbmcgKilHU1N5
c3RlbVJvb3REaXJlY3RvcnkoKTsKICNpZiBQTEFURk9STShNQUNDQVRBTFlTVCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL01pc2MvV2ViVUlLaXRTdXBwb3J0Lm1tIGIvU291
cmNlL1dlYktpdExlZ2FjeS9pb3MvTWlzYy9XZWJVSUtpdFN1cHBvcnQubW0KaW5kZXggNTkzMTQ2
YzAzMzJlYmQ1Y2QxYzE5YmMxNTc1NzMyYzMxMTI0OTY5MS4uOThhNmNmZmU1NzVhODEzYjczYWUx
MDFlOGMyYzMzODZjZGFkZTNjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3Mv
TWlzYy9XZWJVSUtpdFN1cHBvcnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvTWlz
Yy9XZWJVSUtpdFN1cHBvcnQubW0KQEAgLTU1LDkgKzU1LDggQEAgc3RhdGljIHZvaWQgTG9hZFdl
YkxvY2FsaXplZFN0cmluZ3NUaW1lckNhbGxiYWNrKENGUnVuTG9vcFRpbWVyUmVmIHRpbWVyLCB2
b2lkICoKIAogc3RhdGljIHZvaWQgTG9hZFdlYkxvY2FsaXplZFN0cmluZ3MoKQogewotICAgIENG
UnVuTG9vcFRpbWVyUmVmIHRpbWVyID0gQ0ZSdW5Mb29wVGltZXJDcmVhdGUoa0NGQWxsb2NhdG9y
RGVmYXVsdCwgQ0ZBYnNvbHV0ZVRpbWVHZXRDdXJyZW50KCksIDAsIDAsIDAsICZMb2FkV2ViTG9j
YWxpemVkU3RyaW5nc1RpbWVyQ2FsbGJhY2ssIE5VTEwpOwotICAgIENGUnVuTG9vcEFkZFRpbWVy
KENGUnVuTG9vcEdldEN1cnJlbnQoKSwgdGltZXIsIGtDRlJ1bkxvb3BDb21tb25Nb2Rlcyk7Ci0g
ICAgQ0ZSZWxlYXNlKHRpbWVyKTsKKyAgICBhdXRvIHRpbWVyID0gYWRvcHRDRihDRlJ1bkxvb3BU
aW1lckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBDRkFic29sdXRlVGltZUdldEN1cnJlbnQo
KSwgMCwgMCwgMCwgJkxvYWRXZWJMb2NhbGl6ZWRTdHJpbmdzVGltZXJDYWxsYmFjaywgTlVMTCkp
OworICAgIENGUnVuTG9vcEFkZFRpbWVyKENGUnVuTG9vcEdldEN1cnJlbnQoKSwgdGltZXIuZ2V0
KCksIGtDRlJ1bkxvb3BDb21tb25Nb2Rlcyk7CiB9CiAKIHZvaWQgV2ViS2l0SW5pdGlhbGl6ZSh2
b2lkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViVmlldy9XZWJQREZW
aWV3SU9TLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViVmlldy9XZWJQREZWaWV3SU9T
Lm1tCmluZGV4IGFhODc3ZGEwMjliMDZkYTlhMmY4YTZkNmFjYzAwOTAxOTBlNzM3YWQuLmNiZDUw
YjZmY2E4NTU3MTVjMmM3Y2MzZDYwMTJhYmQxODJlNDAyODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvaW9zL1dlYlZpZXcvV2ViUERGVmlld0lPUy5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L2lvcy9XZWJWaWV3L1dlYlBERlZpZXdJT1MubW0KQEAgLTMwMiwxNCArMzAyLDEx
IEBAIC0gKHZvaWQpX2NoZWNrUERGVGl0bGUKIAogLSAodm9pZClmaW5pc2hlZExvYWRpbmdXaXRo
RGF0YVNvdXJjZTooV2ViRGF0YVNvdXJjZSAqKWRhdGFTb3VyY2UKIHsKLSAgICBDR0RhdGFQcm92
aWRlclJlZiBwcm92aWRlciA9IENHRGF0YVByb3ZpZGVyQ3JlYXRlV2l0aENGRGF0YSgoQ0ZEYXRh
UmVmKVtkYXRhU291cmNlIGRhdGFdKTsKLQorICAgIGF1dG8gcHJvdmlkZXIgPSBhZG9wdENGKENH
RGF0YVByb3ZpZGVyQ3JlYXRlV2l0aENGRGF0YSgoQ0ZEYXRhUmVmKVtkYXRhU291cmNlIGRhdGFd
KSk7CiAgICAgaWYgKCFwcm92aWRlcikgCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBfUERG
RG9jdW1lbnQgPSBDR1BERkRvY3VtZW50Q3JlYXRlV2l0aFByb3ZpZGVyKHByb3ZpZGVyKTsKLSAg
ICBDR0RhdGFQcm92aWRlclJlbGVhc2UocHJvdmlkZXIpOwotICAgICAgICAKKyAgICBfUERGRG9j
dW1lbnQgPSBDR1BERkRvY3VtZW50Q3JlYXRlV2l0aFByb3ZpZGVyKHByb3ZpZGVyLmdldCgpKTsK
ICAgICBpZiAoIV9QREZEb2N1bWVudCkKICAgICAgICAgcmV0dXJuOwogICAgIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViVmlldy9XZWJQREZWaWV3UGxhY2Vob2xkZXIu
bW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJWaWV3L1dlYlBERlZpZXdQbGFjZWhvbGRl
ci5tbQppbmRleCA3MjU0ZDBjNWFjYzZhYTFhODc5YjYyYWQwYTQ4ODk5ZjNjZTdkYmExLi45YmIw
OTBhYmE4NjNkODJiNjU1MjM2NTQ2OWQwOTNiOTk5YTYwYjlhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L2lvcy9XZWJWaWV3L1dlYlBERlZpZXdQbGFjZWhvbGRlci5tbQorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJWaWV3L1dlYlBERlZpZXdQbGFjZWhvbGRlci5tbQpA
QCAtMjc0LDEzICsyNzQsMTEgQEAgLSAodm9pZClmaW5pc2hlZExvYWRpbmdXaXRoRGF0YVNvdXJj
ZTooV2ViRGF0YVNvdXJjZSAqKWRhdGFTb3VyY2UKICAgICBbc2VsZiBkYXRhU291cmNlVXBkYXRl
ZDpkYXRhU291cmNlXTsKIAogICAgIF9kaWRGaW5pc2hMb2FkID0gWUVTOwotICAgIENHRGF0YVBy
b3ZpZGVyUmVmIHByb3ZpZGVyID0gQ0dEYXRhUHJvdmlkZXJDcmVhdGVXaXRoQ0ZEYXRhKChDRkRh
dGFSZWYpW2RhdGFTb3VyY2UgZGF0YV0pOworICAgIGF1dG8gcHJvdmlkZXIgPSBhZG9wdENGKENH
RGF0YVByb3ZpZGVyQ3JlYXRlV2l0aENGRGF0YSgoQ0ZEYXRhUmVmKVtkYXRhU291cmNlIGRhdGFd
KSk7CiAgICAgaWYgKCFwcm92aWRlcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgX2RvY3VtZW50
ID0gQ0dQREZEb2N1bWVudENyZWF0ZVdpdGhQcm92aWRlcihwcm92aWRlcik7Ci0KLSAgICBDR0Rh
dGFQcm92aWRlclJlbGVhc2UocHJvdmlkZXIpOworICAgIF9kb2N1bWVudCA9IENHUERGRG9jdW1l
bnRDcmVhdGVXaXRoUHJvdmlkZXIocHJvdmlkZXIuZ2V0KCkpOwogCiAgICAgW3NlbGYgX2RvUG9z
dExvYWRPclVubG9ja1Rhc2tzXTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL01pc2MvV2ViTG9jYWxpemFibGVTdHJpbmdzLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvTWlzYy9XZWJMb2NhbGl6YWJsZVN0cmluZ3MubW0KaW5kZXggNGVlMDAzNjQxOWU3YWZjYmY4
NTM4MjJkYzViZTk2NDUxOGQwMjk3OS4uMjk0MGQ0YWI2ZjIwOTgzZWM4NmI5MmFhYTJmNjE3MmMy
MTk1MzBmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJMb2Nh
bGl6YWJsZVN0cmluZ3MubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJM
b2NhbGl6YWJsZVN0cmluZ3MubW0KQEAgLTMwLDYgKzMwLDggQEAKIAogI2ltcG9ydCA8d3RmL0Fz
c2VydGlvbnMuaD4KICNpbXBvcnQgPHd0Zi9NYWluVGhyZWFkLmg+CisjaW1wb3J0IDx3dGYvTmV2
ZXJEZXN0cm95ZWQuaD4KKyNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KIAogV2ViTG9jYWxpemFi
bGVTdHJpbmdzQnVuZGxlIFdlYktpdExvY2FsaXphYmxlU3RyaW5nc0J1bmRsZSA9IHsgImNvbS5h
cHBsZS5XZWJLaXQiLCAwIH07CiAKQEAgLTQ1LDEzICs0Nyw5IEBAIE5TU3RyaW5nICpXZWJMb2Nh
bGl6ZWRTdHJpbmcoV2ViTG9jYWxpemFibGVTdHJpbmdzQnVuZGxlICpzdHJpbmdzQnVuZGxlLCBj
b25zdCBjCiAKICAgICBOU0J1bmRsZSAqYnVuZGxlOwogICAgIGlmIChzdHJpbmdzQnVuZGxlID09
IE5VTEwpIHsKLSAgICAgICAgc3RhdGljIE5TQnVuZGxlICptYWluQnVuZGxlOwotICAgICAgICBp
ZiAobWFpbkJ1bmRsZSA9PSBuaWwpIHsKLSAgICAgICAgICAgIG1haW5CdW5kbGUgPSBbTlNCdW5k
bGUgbWFpbkJ1bmRsZV07Ci0gICAgICAgICAgICBBU1NFUlQobWFpbkJ1bmRsZSk7Ci0gICAgICAg
ICAgICBDRlJldGFpbihtYWluQnVuZGxlKTsKLSAgICAgICAgfQotICAgICAgICBidW5kbGUgPSBt
YWluQnVuZGxlOworICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPE5TQnVu
ZGxlPj4gbWFpbkJ1bmRsZSA9IFtOU0J1bmRsZSBtYWluQnVuZGxlXTsKKyAgICAgICAgQVNTRVJU
KG1haW5CdW5kbGUuZ2V0KCkpOworICAgICAgICBidW5kbGUgPSBtYWluQnVuZGxlLmdldCgpLmdl
dCgpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGJ1bmRsZSA9IHN0cmluZ3NCdW5kbGUtPmJ1bmRs
ZTsKICAgICAgICAgaWYgKGJ1bmRsZSA9PSBuaWwpIHsKQEAgLTYxLDkgKzU5LDggQEAgTlNTdHJp
bmcgKldlYkxvY2FsaXplZFN0cmluZyhXZWJMb2NhbGl6YWJsZVN0cmluZ3NCdW5kbGUgKnN0cmlu
Z3NCdW5kbGUsIGNvbnN0IGMKICAgICAgICAgfQogICAgIH0KICAgICBOU1N0cmluZyAqbm90Rm91
bmQgPSBAImxvY2FsaXplZCBzdHJpbmcgbm90IGZvdW5kIjsKLSAgICBDRlN0cmluZ1JlZiBrZXlT
dHJpbmcgPSBDRlN0cmluZ0NyZWF0ZVdpdGhDU3RyaW5nTm9Db3B5KE5VTEwsIGtleSwga0NGU3Ry
aW5nRW5jb2RpbmdVVEY4LCBrQ0ZBbGxvY2F0b3JOdWxsKTsKLSAgICBOU1N0cmluZyAqcmVzdWx0
ID0gW2J1bmRsZSBsb2NhbGl6ZWRTdHJpbmdGb3JLZXk6KF9fYnJpZGdlIE5TU3RyaW5nICopa2V5
U3RyaW5nIHZhbHVlOm5vdEZvdW5kIHRhYmxlOm5pbF07Ci0gICAgQ0ZSZWxlYXNlKGtleVN0cmlu
Zyk7CisgICAgYXV0byBrZXlTdHJpbmcgPSBhZG9wdENGKENGU3RyaW5nQ3JlYXRlV2l0aENTdHJp
bmdOb0NvcHkoTlVMTCwga2V5LCBrQ0ZTdHJpbmdFbmNvZGluZ1VURjgsIGtDRkFsbG9jYXRvck51
bGwpKTsKKyAgICBOU1N0cmluZyAqcmVzdWx0ID0gW2J1bmRsZSBsb2NhbGl6ZWRTdHJpbmdGb3JL
ZXk6KF9fYnJpZGdlIE5TU3RyaW5nICopa2V5U3RyaW5nLmdldCgpIHZhbHVlOm5vdEZvdW5kIHRh
YmxlOm5pbF07CiAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShyZXN1bHQgIT0gbm90Rm91bmQsICJj
b3VsZCBub3QgZmluZCBsb2NhbGl6YWJsZSBzdHJpbmcgJXMgaW4gYnVuZGxlIiwga2V5KTsKICAg
ICByZXR1cm4gcmVzdWx0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
TWlzYy9XZWJOU0RhdGFFeHRyYXMubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dl
Yk5TRGF0YUV4dHJhcy5tbQppbmRleCA2ZWM3Y2MwZGIyMjcyY2U0YmQzZGExNzRlYTMyOTQ1ODZk
ZGZkMTdlLi44ZDUwNmEyM2ZjNjRhMGU5NjI5MmI2ZTFmMTBlM2YyNDgwNjhlNDAzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYk5TRGF0YUV4dHJhcy5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYk5TRGF0YUV4dHJhcy5tbQpAQCAtODMs
OSArODMsOSBAQCAtIChOU1N0cmluZyAqKV93ZWJfY2FwaXRhbGl6ZVJGQzgyMkhlYWRlckZpZWxk
TmFtZQogICAgIH0KICAgICBpZiAoc29tZXRoaW5nQ2hhbmdlZCkgewogICAgICAgICBpZiAodXNl
VW5pQ2hhclB0cikKLSAgICAgICAgICAgIHJlc3VsdCA9IENGQnJpZGdpbmdSZWxlYXNlKENGU3Ry
aW5nQ3JlYXRlV2l0aENoYXJhY3RlcnNOb0NvcHkoa0NGQWxsb2NhdG9yRGVmYXVsdCwgdW5pQ2hh
clB0ciwgbGVuLCBudWxscHRyKSk7CisgICAgICAgICAgICByZXN1bHQgPSBhZG9wdENGKENGU3Ry
aW5nQ3JlYXRlV2l0aENoYXJhY3RlcnNOb0NvcHkoa0NGQWxsb2NhdG9yRGVmYXVsdCwgdW5pQ2hh
clB0ciwgbGVuLCBudWxscHRyKSkuYnJpZGdpbmdBdXRvcmVsZWFzZSgpOwogICAgICAgICBlbHNl
Ci0gICAgICAgICAgICByZXN1bHQgPSBDRkJyaWRnaW5nUmVsZWFzZShDRlN0cmluZ0NyZWF0ZVdp
dGhDU3RyaW5nTm9Db3B5KGtDRkFsbG9jYXRvckRlZmF1bHQsIGNoYXJQdHIsIGtDRlN0cmluZ0Vu
Y29kaW5nSVNPTGF0aW4xLCBudWxscHRyKSk7CisgICAgICAgICAgICByZXN1bHQgPSBhZG9wdENG
KENGU3RyaW5nQ3JlYXRlV2l0aENTdHJpbmdOb0NvcHkoa0NGQWxsb2NhdG9yRGVmYXVsdCwgY2hh
clB0ciwga0NGU3RyaW5nRW5jb2RpbmdJU09MYXRpbjEsIG51bGxwdHIpKS5icmlkZ2luZ0F1dG9y
ZWxlYXNlKCk7CiAgICAgfSBlbHNlCiAgICAgICAgIHJlc3VsdCA9IHNlbGY7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2lu
SG9zdE1hbmFnZXIubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL0hvc3RlZC9O
ZXRzY2FwZVBsdWdpbkhvc3RNYW5hZ2VyLm1tCmluZGV4IGY2MzkzZjg5YmZiYTRmNjlmZDAzOGYy
MTU2NWVmMTdkMDJmYmYzMzcuLjVmZGEzZmM3MTdmMzEzYTRkYjY1ZTIyYjgzNjk1ZDgzM2M5OWVm
OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvSG9zdGVkL05l
dHNjYXBlUGx1Z2luSG9zdE1hbmFnZXIubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
UGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5Ib3N0TWFuYWdlci5tbQpAQCAtMTIxLDcgKzEy
MSw3IEBAIHN0YXRpYyBOU1N0cmluZyAqcHJlZmVycmVkQnVuZGxlTG9jYWxpemF0aW9uTmFtZSgp
CiAgICAgaWYgKCFzdWNjZXNzKQogICAgICAgICByZXR1cm4gQCJlbl9VUyI7CiAKLSAgICByZXR1
cm4gQ0ZCcmlkZ2luZ1JlbGVhc2UoQ0ZMb2NhbGVDcmVhdGVDYW5vbmljYWxMb2NhbGVJZGVudGlm
aWVyRnJvbVNjcmlwdE1hbmFnZXJDb2RlcygwLCBsYW5ndWFnZUNvZGUsIHJlZ2lvbkNvZGUpKTsK
KyAgICByZXR1cm4gYWRvcHRDRihDRkxvY2FsZUNyZWF0ZUNhbm9uaWNhbExvY2FsZUlkZW50aWZp
ZXJGcm9tU2NyaXB0TWFuYWdlckNvZGVzKDAsIGxhbmd1YWdlQ29kZSwgcmVnaW9uQ29kZSkpLmJy
aWRnaW5nQXV0b3JlbGVhc2UoKTsKIH0KIAogYm9vbCBOZXRzY2FwZVBsdWdpbkhvc3RNYW5hZ2Vy
OjpzcGF3blBsdWdpbkhvc3QoY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoLCBjcHVfdHlwZV90IHBs
dWdpbkFyY2hpdGVjdHVyZSwgbWFjaF9wb3J0X3QgY2xpZW50UG9ydCwgbWFjaF9wb3J0X3QmIHBs
dWdpbkhvc3RQb3J0LCBQcm9jZXNzU2VyaWFsTnVtYmVyJiBwbHVnaW5Ib3N0UFNOKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblZp
ZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2lu
Vmlldy5tbQppbmRleCAxMmFhYTNkMDhmNzdjOGNmOGQ0MWQ0NDNlMTJhYjZkMmUyNzEyM2IyLi44
ZmZmMjQ1ZTE2OGQzNGFkYmVkYjAyZDQ3NDhmOWNiODcxMTA3N2I2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luVmlldy5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luVmlldy5t
bQpAQCAtMTQ1MywxNiArMTQ1MywxNSBAQCAtIChjb25zdCBjaGFyICopdXNlckFnZW50CiAKIC0o
dm9pZClzdGF0dXM6KGNvbnN0IGNoYXIgKiltZXNzYWdlCiB7ICAgIAotICAgIENGU3RyaW5nUmVm
IHN0YXR1cyA9IENGU3RyaW5nQ3JlYXRlV2l0aENTdHJpbmcoTlVMTCwgbWVzc2FnZSA/IG1lc3Nh
Z2UgOiAiIiwga0NGU3RyaW5nRW5jb2RpbmdVVEY4KTsKKyAgICBhdXRvIHN0YXR1cyA9IGFkb3B0
Q0YoQ0ZTdHJpbmdDcmVhdGVXaXRoQ1N0cmluZyhOVUxMLCBtZXNzYWdlID8gbWVzc2FnZSA6ICIi
LCBrQ0ZTdHJpbmdFbmNvZGluZ1VURjgpKTsKICAgICBpZiAoIXN0YXR1cykgewogICAgICAgICBM
T0dfRVJST1IoIk5QTl9TdGF0dXM6IHRoZSBtZXNzYWdlIHdhcyBub3QgdmFsaWQgVVRGLTgiKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAgICBMT0coUGx1Z2lucywgIk5QTl9TdGF0
dXM6ICVAIiwgc3RhdHVzKTsKKyAgICBMT0coUGx1Z2lucywgIk5QTl9TdGF0dXM6ICVAIiwgc3Rh
dHVzLmdldCgpKTsKICAgICBXZWJWaWV3ICp3diA9IFtzZWxmIHdlYlZpZXddOwotICAgIFtbd3Yg
X1VJRGVsZWdhdGVGb3J3YXJkZXJdIHdlYlZpZXc6d3Ygc2V0U3RhdHVzVGV4dDooX19icmlkZ2Ug
TlNTdHJpbmcgKilzdGF0dXNdOwotICAgIENGUmVsZWFzZShzdGF0dXMpOworICAgIFtbd3YgX1VJ
RGVsZWdhdGVGb3J3YXJkZXJdIHdlYlZpZXc6d3Ygc2V0U3RhdHVzVGV4dDooX19icmlkZ2UgTlNT
dHJpbmcgKilzdGF0dXMuZ2V0KCldOwogfQogCiAtKHZvaWQpaW52YWxpZGF0ZVJlY3Q6KE5QUmVj
dCAqKWludmFsaWRSZWN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJQcm9ncmVzc1RyYWNrZXJDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQcm9ncmVzc1RyYWNrZXJDbGllbnQubW0KaW5kZXgg
Y2MzOGVmMTYxZTc1M2Q1MTkxNjRmZWQzMGRkNTg3NjUxODA4YmYxNi4uOGY0NzgzY2IzMDhhNjRk
ZGNhNWIxMzQ0MzU1MDgyMzYwNDE3ZTA1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUHJvZ3Jlc3NUcmFja2VyQ2xpZW50Lm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlByb2dyZXNzVHJhY2tlckNs
aWVudC5tbQpAQCAtNzAsMTMgKzcwLDEyIEBAIHZvaWQgV2ViUHJvZ3Jlc3NUcmFja2VyQ2xpZW50
Ojpwcm9ncmVzc0VzdGltYXRlQ2hhbmdlZChXZWJDb3JlOjpGcmFtZSYpCiAgICAgCiAgICAgLy8g
VXNlIGEgQ0ZEaWN0aW9uYXJ5IHNvIHdlIGNhbiBhZGQgdGhlIENHQ29sb3JSZWYgd2l0aG91dCBj
b21waWxlIGVycm9ycy4gQW5kIHRoZW4gdGhhbmtzIHRvCiAgICAgLy8gdG9sbC1mcmVlIGJyaWRn
aW5nIHdlIGNhbiBwYXNzIHRoZSBDRkRpY3Rpb25hcnkgYXMgYW4gTlNEaWN0aW9uYXJ5IHRvIHBv
c3ROb3RpZmljYXRpb24uCi0gICAgQ0ZNdXRhYmxlRGljdGlvbmFyeVJlZiB1c2VySW5mbyA9IENG
RGljdGlvbmFyeUNyZWF0ZU11dGFibGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgMiwgJmtDRlR5cGVE
aWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcyk7
Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUodXNlckluZm8sIFdlYlZpZXdQcm9ncmVzc0VzdGlt
YXRlZFByb2dyZXNzS2V5LCBwcm9ncmVzcyk7CisgICAgYXV0byB1c2VySW5mbyA9IGFkb3B0Q0Yo
Q0ZEaWN0aW9uYXJ5Q3JlYXRlTXV0YWJsZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAyLCAma0NGVHlw
ZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tz
KSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUodXNlckluZm8uZ2V0KCksIFdlYlZpZXdQcm9n
cmVzc0VzdGltYXRlZFByb2dyZXNzS2V5LCBwcm9ncmVzcyk7CiAgICAgaWYgKGJvZHlCYWNrZ3Jv
dW5kQ29sb3IpCi0gICAgICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKHVzZXJJbmZvLCBXZWJWaWV3
UHJvZ3Jlc3NCYWNrZ3JvdW5kQ29sb3JLZXksIGJvZHlCYWNrZ3JvdW5kQ29sb3IpOworICAgICAg
ICBDRkRpY3Rpb25hcnlBZGRWYWx1ZSh1c2VySW5mby5nZXQoKSwgV2ViVmlld1Byb2dyZXNzQmFj
a2dyb3VuZENvbG9yS2V5LCBib2R5QmFja2dyb3VuZENvbG9yKTsKICAgICAKLSAgICBXZWJUaHJl
YWRQb3N0Tm90aWZpY2F0aW9uKFdlYlZpZXdQcm9ncmVzc0VzdGltYXRlQ2hhbmdlZE5vdGlmaWNh
dGlvbiwgbV93ZWJWaWV3LCAoTlNEaWN0aW9uYXJ5ICopIHVzZXJJbmZvKTsKLSAgICBDRlJlbGVh
c2UodXNlckluZm8pOworICAgIFdlYlRocmVhZFBvc3ROb3RpZmljYXRpb24oV2ViVmlld1Byb2dy
ZXNzRXN0aW1hdGVDaGFuZ2VkTm90aWZpY2F0aW9uLCBtX3dlYlZpZXcsIChOU0RpY3Rpb25hcnkg
Kil1c2VySW5mby5nZXQoKSk7CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViSW5zcGVjdG9yL1dlYk5vZGVIaWdobGlnaHRWaWV3Lm1tIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViSW5zcGVjdG9yL1dlYk5vZGVIaWdobGlnaHRWaWV3Lm1tCmlu
ZGV4IDIwZjE5ZjBiYzRiYjQ4ZGQyZGU1OTA2ZDllMjdlM2IzYzM0YzI1M2YuLmQzOTczZTI5NDQ1
OWVjZjFkYmRlZjQ0OWVmMmNmZDJjYWNiOGVkMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYkluc3BlY3Rvci9XZWJOb2RlSGlnaGxpZ2h0Vmlldy5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJJbnNwZWN0b3IvV2ViTm9kZUhpZ2hsaWdodFZpZXcubW0K
QEAgLTIzNiwyOCArMjM2LDI2IEBAIHN0YXRpYyB2b2lkIGxheWVyUGF0aFdpdGhIb2xlKENBU2hh
cGVMYXllciAqbGF5ZXIsIGNvbnN0IEZsb2F0UXVhZCYgb3V0ZXJRdWFkLCBjCiAgICAgICAgIGlu
bmVySG9sZSA9IHF1YWRJbnRlcnNlY3Rpb24ob3V0ZXJRdWFkLCBob2xlUXVhZCk7CiAKICAgICAv
LyBDbG9ja3dpc2UgaW5zaWRlIHJlY3QgKGhvbGUpLCBDb3VudGVyLUNsb2Nrd2lzZSBvdXRzaWRl
IHJlY3QgKGZpbGwpLgotICAgIENHTXV0YWJsZVBhdGhSZWYgcGF0aCA9IENHUGF0aENyZWF0ZU11
dGFibGUoKTsKLSAgICBDR1BhdGhNb3ZlVG9Qb2ludChwYXRoLCAwLCBpbm5lckhvbGUucDEoKS54
KCksIGlubmVySG9sZS5wMSgpLnkoKSk7Ci0gICAgQ0dQYXRoQWRkTGluZVRvUG9pbnQocGF0aCwg
MCwgaW5uZXJIb2xlLnAyKCkueCgpLCBpbm5lckhvbGUucDIoKS55KCkpOwotICAgIENHUGF0aEFk
ZExpbmVUb1BvaW50KHBhdGgsIDAsIGlubmVySG9sZS5wMygpLngoKSwgaW5uZXJIb2xlLnAzKCku
eSgpKTsKLSAgICBDR1BhdGhBZGRMaW5lVG9Qb2ludChwYXRoLCAwLCBpbm5lckhvbGUucDQoKS54
KCksIGlubmVySG9sZS5wNCgpLnkoKSk7Ci0gICAgQ0dQYXRoTW92ZVRvUG9pbnQocGF0aCwgMCwg
b3V0ZXJRdWFkLnAxKCkueCgpLCBvdXRlclF1YWQucDEoKS55KCkpOwotICAgIENHUGF0aEFkZExp
bmVUb1BvaW50KHBhdGgsIDAsIG91dGVyUXVhZC5wNCgpLngoKSwgb3V0ZXJRdWFkLnA0KCkueSgp
KTsKLSAgICBDR1BhdGhBZGRMaW5lVG9Qb2ludChwYXRoLCAwLCBvdXRlclF1YWQucDMoKS54KCks
IG91dGVyUXVhZC5wMygpLnkoKSk7Ci0gICAgQ0dQYXRoQWRkTGluZVRvUG9pbnQocGF0aCwgMCwg
b3V0ZXJRdWFkLnAyKCkueCgpLCBvdXRlclF1YWQucDIoKS55KCkpOwotICAgIGxheWVyLnBhdGgg
PSBwYXRoOwotICAgIENHUGF0aFJlbGVhc2UocGF0aCk7CisgICAgYXV0byBwYXRoID0gYWRvcHRD
RihDR1BhdGhDcmVhdGVNdXRhYmxlKCkpOworICAgIENHUGF0aE1vdmVUb1BvaW50KHBhdGguZ2V0
KCksIDAsIGlubmVySG9sZS5wMSgpLngoKSwgaW5uZXJIb2xlLnAxKCkueSgpKTsKKyAgICBDR1Bh
dGhBZGRMaW5lVG9Qb2ludChwYXRoLmdldCgpLCAwLCBpbm5lckhvbGUucDIoKS54KCksIGlubmVy
SG9sZS5wMigpLnkoKSk7CisgICAgQ0dQYXRoQWRkTGluZVRvUG9pbnQocGF0aC5nZXQoKSwgMCwg
aW5uZXJIb2xlLnAzKCkueCgpLCBpbm5lckhvbGUucDMoKS55KCkpOworICAgIENHUGF0aEFkZExp
bmVUb1BvaW50KHBhdGguZ2V0KCksIDAsIGlubmVySG9sZS5wNCgpLngoKSwgaW5uZXJIb2xlLnA0
KCkueSgpKTsKKyAgICBDR1BhdGhNb3ZlVG9Qb2ludChwYXRoLmdldCgpLCAwLCBvdXRlclF1YWQu
cDEoKS54KCksIG91dGVyUXVhZC5wMSgpLnkoKSk7CisgICAgQ0dQYXRoQWRkTGluZVRvUG9pbnQo
cGF0aC5nZXQoKSwgMCwgb3V0ZXJRdWFkLnA0KCkueCgpLCBvdXRlclF1YWQucDQoKS55KCkpOwor
ICAgIENHUGF0aEFkZExpbmVUb1BvaW50KHBhdGguZ2V0KCksIDAsIG91dGVyUXVhZC5wMygpLngo
KSwgb3V0ZXJRdWFkLnAzKCkueSgpKTsKKyAgICBDR1BhdGhBZGRMaW5lVG9Qb2ludChwYXRoLmdl
dCgpLCAwLCBvdXRlclF1YWQucDIoKS54KCksIG91dGVyUXVhZC5wMigpLnkoKSk7CisgICAgbGF5
ZXIucGF0aCA9IHBhdGguZ2V0KCk7CiB9CiAKIHN0YXRpYyB2b2lkIGxheWVyUGF0aChDQVNoYXBl
TGF5ZXIgKmxheWVyLCBjb25zdCBGbG9hdFF1YWQmIG91dGVyUXVhZCkKIHsKLSAgICBDR011dGFi
bGVQYXRoUmVmIHBhdGggPSBDR1BhdGhDcmVhdGVNdXRhYmxlKCk7Ci0gICAgQ0dQYXRoTW92ZVRv
UG9pbnQocGF0aCwgMCwgb3V0ZXJRdWFkLnAxKCkueCgpLCBvdXRlclF1YWQucDEoKS55KCkpOwot
ICAgIENHUGF0aEFkZExpbmVUb1BvaW50KHBhdGgsIDAsIG91dGVyUXVhZC5wNCgpLngoKSwgb3V0
ZXJRdWFkLnA0KCkueSgpKTsKLSAgICBDR1BhdGhBZGRMaW5lVG9Qb2ludChwYXRoLCAwLCBvdXRl
clF1YWQucDMoKS54KCksIG91dGVyUXVhZC5wMygpLnkoKSk7Ci0gICAgQ0dQYXRoQWRkTGluZVRv
UG9pbnQocGF0aCwgMCwgb3V0ZXJRdWFkLnAyKCkueCgpLCBvdXRlclF1YWQucDIoKS55KCkpOwot
ICAgIGxheWVyLnBhdGggPSBwYXRoOwotICAgIENHUGF0aFJlbGVhc2UocGF0aCk7CisgICAgYXV0
byBwYXRoID0gYWRvcHRDRihDR1BhdGhDcmVhdGVNdXRhYmxlKCkpOworICAgIENHUGF0aE1vdmVU
b1BvaW50KHBhdGguZ2V0KCksIDAsIG91dGVyUXVhZC5wMSgpLngoKSwgb3V0ZXJRdWFkLnAxKCku
eSgpKTsKKyAgICBDR1BhdGhBZGRMaW5lVG9Qb2ludChwYXRoLmdldCgpLCAwLCBvdXRlclF1YWQu
cDQoKS54KCksIG91dGVyUXVhZC5wNCgpLnkoKSk7CisgICAgQ0dQYXRoQWRkTGluZVRvUG9pbnQo
cGF0aC5nZXQoKSwgMCwgb3V0ZXJRdWFkLnAzKCkueCgpLCBvdXRlclF1YWQucDMoKS55KCkpOwor
ICAgIENHUGF0aEFkZExpbmVUb1BvaW50KHBhdGguZ2V0KCksIDAsIG91dGVyUXVhZC5wMigpLngo
KSwgb3V0ZXJRdWFkLnAyKCkueSgpKTsKKyAgICBsYXllci5wYXRoID0gcGF0aC5nZXQoKTsKIH0K
IAogLSAodm9pZClfbGF5b3V0Rm9yTm9kZUhpZ2hsaWdodDooSW5zcGVjdG9yT3ZlcmxheTo6SGln
aGxpZ2h0KiloaWdobGlnaHQgcGFyZW50OihDQUxheWVyICopcGFyZW50TGF5ZXIKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0gYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCmluZGV4IGI5YmU3ZDk5MDVkYWY1
MGVlOWZkNTMwOGU5N2ZmM2M5ZGVjYTllMWIuLjNhYmM2MDFiODBiYWQ0MzAzNTQyNWI0OTI5ODQ5
ZjEzZWYxNDg3NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcv
V2ViRnJhbWUubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFt
ZS5tbQpAQCAtMjQ2MSwxMiArMjQ2MSw5IEBAIC0gKHZvaWQpbG9hZFJlcXVlc3Q6KE5TVVJMUmVx
dWVzdCAqKXJlcXVlc3QKIAogc3RhdGljIE5TVVJMICpjcmVhdGVVbmlxdWVXZWJEYXRhVVJMKCkK
IHsKLSAgICBDRlVVSURSZWYgVVVJRFJlZiA9IENGVVVJRENyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZh
dWx0KTsKLSAgICBOU1N0cmluZyAqVVVJRFN0cmluZyA9IChOU1N0cmluZyAqKUNGVVVJRENyZWF0
ZVN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBVVUlEUmVmKTsKLSAgICBDRlJlbGVhc2UoVVVJ
RFJlZik7Ci0gICAgTlNVUkwgKlVSTCA9IFtOU1VSTCBVUkxXaXRoU3RyaW5nOltOU1N0cmluZyBz
dHJpbmdXaXRoRm9ybWF0OkAiYXBwbGV3ZWJkYXRhOi8vJUAiLCBVVUlEU3RyaW5nXV07Ci0gICAg
Q0ZSZWxlYXNlKFVVSURTdHJpbmcpOwotICAgIHJldHVybiBVUkw7CisgICAgYXV0byBVVUlEUmVm
ID0gYWRvcHRDRihDRlVVSURDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCkpOworICAgIGF1dG8g
VVVJRFN0cmluZyA9IGFkb3B0Q0YoQ0ZVVUlEQ3JlYXRlU3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1
bHQsIFVVSURSZWYuZ2V0KCkpKTsKKyAgICByZXR1cm4gW05TVVJMIFVSTFdpdGhTdHJpbmc6W05T
U3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJhcHBsZXdlYmRhdGE6Ly8lQCIsIChfX2JyaWRnZSBO
U1N0cmluZyAqKVVVSURTdHJpbmcuZ2V0KCldXTsKIH0KIAogLSAodm9pZClfbG9hZERhdGE6KE5T
RGF0YSAqKWRhdGEgTUlNRVR5cGU6KE5TU3RyaW5nICopTUlNRVR5cGUgdGV4dEVuY29kaW5nTmFt
ZTooTlNTdHJpbmcgKillbmNvZGluZ05hbWUgYmFzZVVSTDooTlNVUkwgKiliYXNlVVJMIHVucmVh
Y2hhYmxlVVJMOihOU1VSTCAqKXVucmVhY2hhYmxlVVJMCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJWaWV3L1dlYlZpZXcubW0KaW5kZXggNjg1NjEwYzI1ZWMyYWU1ZmQ1ZjUxM2JiOTMxNjJj
NGUyZTYxZmI5Mi4uNWYwZmNkMzY5ZDllZmNkMDgyZGMzYWJiYzk5NzMwMzIwZDMxZWY1NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtODQwMywxMyAr
ODQwMywxMyBAQCArICh2b2lkKV9zZXRDYWNoZU1vZGVsOihXZWJDYWNoZU1vZGVsKWNhY2hlTW9k
ZWwKICAgICBpZiAoc19kaWRTZXRDYWNoZU1vZGVsICYmIGNhY2hlTW9kZWwgPT0gc19jYWNoZU1v
ZGVsKQogICAgICAgICByZXR1cm47CiAKLSAgICBOU1N0cmluZyAqbnN1cmxDYWNoZURpcmVjdG9y
eSA9IENGQnJpZGdpbmdSZWxlYXNlKF9DRlVSTENhY2hlQ29weUNhY2hlRGlyZWN0b3J5KFtbTlNV
UkxDYWNoZSBzaGFyZWRVUkxDYWNoZV0gX0NGVVJMQ2FjaGVdKSk7CisgICAgYXV0byBuc3VybENh
Y2hlRGlyZWN0b3J5ID0gYWRvcHRDRihfQ0ZVUkxDYWNoZUNvcHlDYWNoZURpcmVjdG9yeShbW05T
VVJMQ2FjaGUgc2hhcmVkVVJMQ2FjaGVdIF9DRlVSTENhY2hlXSkpOwogICAgIGlmICghbnN1cmxD
YWNoZURpcmVjdG9yeSkKLSAgICAgICAgbnN1cmxDYWNoZURpcmVjdG9yeSA9IE5TSG9tZURpcmVj
dG9yeSgpOworICAgICAgICBuc3VybENhY2hlRGlyZWN0b3J5ID0gKF9fYnJpZGdlIENGU3RyaW5n
UmVmKU5TSG9tZURpcmVjdG9yeSgpOwogCiAgICAgc3RhdGljIHVpbnQ2NF90IG1lbVNpemUgPSBy
YW1TaXplKCkgLyAxMDI0IC8gMTAyNDsKIAotICAgIE5TRGljdGlvbmFyeSAqZmlsZVN5c3RlbUF0
dHJpYnV0ZXNEaWN0aW9uYXJ5ID0gW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBhdHRy
aWJ1dGVzT2ZGaWxlU3lzdGVtRm9yUGF0aDpuc3VybENhY2hlRGlyZWN0b3J5IGVycm9yOm51bGxw
dHJdOworICAgIE5TRGljdGlvbmFyeSAqZmlsZVN5c3RlbUF0dHJpYnV0ZXNEaWN0aW9uYXJ5ID0g
W1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBhdHRyaWJ1dGVzT2ZGaWxlU3lzdGVtRm9y
UGF0aDooX19icmlkZ2UgTlNTdHJpbmcgKiluc3VybENhY2hlRGlyZWN0b3J5LmdldCgpIGVycm9y
Om51bGxwdHJdOwogICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBkaXNrRnJlZVNpemUgPSBbW2ZpbGVT
eXN0ZW1BdHRyaWJ1dGVzRGljdGlvbmFyeSBvYmplY3RGb3JLZXk6TlNGaWxlU3lzdGVtRnJlZVNp
emVdIHVuc2lnbmVkTG9uZ0xvbmdWYWx1ZV0gLyAxMDI0IC8gMTAwMDsKIAogICAgIE5TVVJMQ2Fj
aGUgKm5zdXJsQ2FjaGUgPSBbTlNVUkxDYWNoZSBzaGFyZWRVUkxDYWNoZV07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZy5jcHAgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZy5jcHAKaW5kZXgg
YmM5ZTY1OTRlNzc3YmYwMDg2ODM2MmI3NTFjMjc1MTlkN2JlYTczYi4uOWExZjAxMTIyMWJjMjE0
MDBiZWU4ODdlZDExMTliMzY5ZmZlNjAwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vQ0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL0NGRGljdGlvbmFyeVByb3BlcnR5QmFnLmNwcApAQCAtMTM4LDIwICsxMzgsMjAgQEAg
c3RhdGljIGJvb2wgQ29udmVydFZhcmlhbnRUb0NGVHlwZShWQVJJQU5UKiBwVmFyLCB2b2lkKiog
Y2ZPYmopCiAgICAgZWxzZSB7CiAgICAgICAgIC8vIGlmIGNhbGxlciBleHBlY3RzIGEgc3RyaW5n
LCByZXRyaWV2ZSBCU1RSIGZyb20gQ0ZTdHJpbmdSZWYKICAgICAgICAgaWYgKFZfVlQocFZhcikg
PT0gVlRfQlNUUikgewotICAgICAgICAgICAgKmNmT2JqID0gKHZvaWQqKSBNYXJzaGFsbGluZ0hl
bHBlcnM6OkJTVFJUb0NGU3RyaW5nUmVmKFZfQlNUUihwVmFyKSk7CisgICAgICAgICAgICAqY2ZP
YmogPSAodm9pZCopIE1hcnNoYWxsaW5nSGVscGVyczo6QlNUUlRvQ0ZTdHJpbmdSZWYoVl9CU1RS
KHBWYXIpKS5sZWFrUmVmKCk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfSBl
bHNlIGlmIChWX1ZUKHBWYXIpID09IFZUX0k0KSB7Ci0gICAgICAgICAgICAqY2ZPYmogPSAodm9p
ZCopIE1hcnNoYWxsaW5nSGVscGVyczo6aW50VG9DRk51bWJlclJlZihWX0k0KHBWYXIpKTsKKyAg
ICAgICAgICAgICpjZk9iaiA9ICh2b2lkKikgTWFyc2hhbGxpbmdIZWxwZXJzOjppbnRUb0NGTnVt
YmVyUmVmKFZfSTQocFZhcikpLmxlYWtSZWYoKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgICAgICB9IGVsc2UgaWYgKCEhKFZfVlQocFZhcikmVlRfQVJSQVkpKSB7CiAgICAgICAgICAg
ICBpZiAoKFZfVlQocFZhcikmflZUX0FSUkFZKSA9PSBWVF9CU1RSKSB7Ci0gICAgICAgICAgICAg
ICAgKmNmT2JqID0gKHZvaWQqKSBNYXJzaGFsbGluZ0hlbHBlcnM6OnNhZmVBcnJheVRvU3RyaW5n
QXJyYXkoVl9BUlJBWShwVmFyKSk7CisgICAgICAgICAgICAgICAgKmNmT2JqID0gKHZvaWQqKSBN
YXJzaGFsbGluZ0hlbHBlcnM6OnNhZmVBcnJheVRvU3RyaW5nQXJyYXkoVl9BUlJBWShwVmFyKSku
bGVha1JlZigpOwogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgfSBl
bHNlIGlmICgoVl9WVChwVmFyKSZ+VlRfQVJSQVkpID09IFZUX0k0KSB7Ci0gICAgICAgICAgICAg
ICAgKmNmT2JqID0gKHZvaWQqKSBNYXJzaGFsbGluZ0hlbHBlcnM6OnNhZmVBcnJheVRvSW50QXJy
YXkoVl9BUlJBWShwVmFyKSk7CisgICAgICAgICAgICAgICAgKmNmT2JqID0gKHZvaWQqKSBNYXJz
aGFsbGluZ0hlbHBlcnM6OnNhZmVBcnJheVRvSW50QXJyYXkoVl9BUlJBWShwVmFyKSkubGVha1Jl
ZigpOwogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgfSBlbHNlIGlm
ICgoVl9WVChwVmFyKSZ+VlRfQVJSQVkpID09IFZUX1VOS05PV04pIHsKLSAgICAgICAgICAgICAg
ICAqY2ZPYmogPSAodm9pZCopIE1hcnNoYWxsaW5nSGVscGVyczo6c2FmZUFycmF5VG9JVW5rbm93
bkFycmF5KFZfQVJSQVkocFZhcikpOworICAgICAgICAgICAgICAgICpjZk9iaiA9ICh2b2lkKikg
TWFyc2hhbGxpbmdIZWxwZXJzOjpzYWZlQXJyYXlUb0lVbmtub3duQXJyYXkoVl9BUlJBWShwVmFy
KSkubGVha1JlZigpOwogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAg
fQogICAgICAgICB9CkBAIC0xNjcsMTQgKzE2NywxMyBAQCBIUkVTVUxUIENGRGljdGlvbmFyeVBy
b3BlcnR5QmFnOjpSZWFkKExQQ09MRVNUUiBwc3pQcm9wTmFtZSwgVkFSSUFOVCAqcFZhciwgSUVy
cgogI2lmIFVTRShDRikKICAgICBpZiAobV9kaWN0aW9uYXJ5KSB7CiAgICAgICAgIHZvaWQqIHZh
bHVlOwotICAgICAgICBDRlN0cmluZ1JlZiBrZXkgPSBNYXJzaGFsbGluZ0hlbHBlcnM6OkxQQ09M
RVNUUlRvQ0ZTdHJpbmdSZWYocHN6UHJvcE5hbWUpOworICAgICAgICBhdXRvIGtleSA9IE1hcnNo
YWxsaW5nSGVscGVyczo6TFBDT0xFU1RSVG9DRlN0cmluZ1JlZihwc3pQcm9wTmFtZSk7CiAgICAg
ICAgIEhSRVNVTFQgaHIgPSBFX0ZBSUw7Ci0gICAgICAgIGlmIChDRkRpY3Rpb25hcnlHZXRWYWx1
ZUlmUHJlc2VudChtX2RpY3Rpb25hcnkuZ2V0KCksIGtleSwgKGNvbnN0IHZvaWQqKikgJnZhbHVl
KSkgeworICAgICAgICBpZiAoQ0ZEaWN0aW9uYXJ5R2V0VmFsdWVJZlByZXNlbnQobV9kaWN0aW9u
YXJ5LmdldCgpLCBrZXkuZ2V0KCksIChjb25zdCB2b2lkKiopICZ2YWx1ZSkpIHsKICAgICAgICAg
ICAgIGlmIChDb252ZXJ0Q0ZUeXBlVG9WYXJpYW50KHBWYXIsIHZhbHVlKSkKICAgICAgICAgICAg
ICAgICBociA9IFNfT0s7CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgaHIgPSBFX0lOVkFM
SURBUkc7Ci0gICAgICAgIENGUmVsZWFzZShrZXkpOwogICAgICAgICByZXR1cm4gaHI7CiAgICAg
fQogI2VuZGlmCkBAIC0xOTEsMTAgKzE5MCw5IEBAIEhSRVNVTFQgQ0ZEaWN0aW9uYXJ5UHJvcGVy
dHlCYWc6OldyaXRlKF9Jbl8gTFBDT0xFU1RSIHBzelByb3BOYW1lLCBfSW5fIFZBUklBTlQqCiAg
ICAgfQogICAgIHZvaWQqIGNmT2JqOwogICAgIGlmIChDb252ZXJ0VmFyaWFudFRvQ0ZUeXBlKHBW
YXIsICZjZk9iaikpIHsKLSAgICAgICAgQ0ZTdHJpbmdSZWYga2V5ID0gTWFyc2hhbGxpbmdIZWxw
ZXJzOjpMUENPTEVTVFJUb0NGU3RyaW5nUmVmKHBzelByb3BOYW1lKTsKLSAgICAgICAgQ0ZEaWN0
aW9uYXJ5QWRkVmFsdWUobV9kaWN0aW9uYXJ5LmdldCgpLCBrZXksIGNmT2JqKTsKKyAgICAgICAg
YXV0byBrZXkgPSBNYXJzaGFsbGluZ0hlbHBlcnM6OkxQQ09MRVNUUlRvQ0ZTdHJpbmdSZWYocHN6
UHJvcE5hbWUpOworICAgICAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShtX2RpY3Rpb25hcnkuZ2V0
KCksIGtleS5nZXQoKSwgY2ZPYmopOwogICAgICAgICAvLyBDRkRpY3Rpb25hcnlBZGRWYWx1ZSBz
aG91bGQgYXV0b21hdGljYWxseSByZXRhaW4gdGhlIENGIG9iamVjdHMgcGFzc2VkIGluLCBzbyBy
ZWxlYXNlIHRoZW0gaGVyZQotICAgICAgICBDRlJlbGVhc2Uoa2V5KTsKICAgICAgICAgQ0ZSZWxl
YXNlKGNmT2JqKTsKICAgICAgICAgcmV0dXJuIFNfT0s7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vTWFyc2hhbGxpbmdIZWxwZXJzLmNwcCBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL01hcnNoYWxsaW5nSGVscGVycy5jcHAKaW5kZXggMjU2MDg5MzE5MDQ1NzQ2
YTkzOTVlNWRlZDZjNmE3M2NkY2RiZjhhZS4uYWI2ZDg1YmZmNzk3YTk5YjhlOWY4YjIyYmNjZGNj
NDVkMjcwOWU3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vTWFyc2hhbGxp
bmdIZWxwZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9NYXJzaGFsbGluZ0hl
bHBlcnMuY3BwCkBAIC01MywzOSArNTMsMzMgQEAgQlNUUiBNYXJzaGFsbGluZ0hlbHBlcnM6OlVS
TFRvQlNUUihjb25zdCBVUkwmIHVybCkKIH0KIAogI2lmIFVTRShDRikKLUNGVVJMUmVmIE1hcnNo
YWxsaW5nSGVscGVyczo6UGF0aFN0cmluZ1RvRmlsZUNGVVJMUmVmKGNvbnN0IFN0cmluZyYgc3Ry
aW5nKQorUmV0YWluUHRyPENGVVJMUmVmPiBNYXJzaGFsbGluZ0hlbHBlcnM6OlBhdGhTdHJpbmdU
b0ZpbGVDRlVSTFJlZihjb25zdCBTdHJpbmcmIHN0cmluZykKIHsKLSAgICByZXR1cm4gQ0ZVUkxD
cmVhdGVXaXRoRmlsZVN5c3RlbVBhdGgoMCwgc3RyaW5nLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCks
IGtDRlVSTFdpbmRvd3NQYXRoU3R5bGUsIGZhbHNlKTsKKyAgICByZXR1cm4gYWRvcHRDRihDRlVS
TENyZWF0ZVdpdGhGaWxlU3lzdGVtUGF0aCgwLCBzdHJpbmcuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQo
KSwga0NGVVJMV2luZG93c1BhdGhTdHlsZSwgZmFsc2UpKTsKIH0KIAogU3RyaW5nIE1hcnNoYWxs
aW5nSGVscGVyczo6RmlsZUNGVVJMUmVmVG9QYXRoU3RyaW5nKENGVVJMUmVmIGZpbGVVUkwpCiB7
Ci0gICAgQ0ZTdHJpbmdSZWYgc3RyaW5nID0gQ0ZVUkxDb3B5RmlsZVN5c3RlbVBhdGgoZmlsZVVS
TCwga0NGVVJMV2luZG93c1BhdGhTdHlsZSk7Ci0gICAgU3RyaW5nIHJlc3VsdChzdHJpbmcpOwot
ICAgIENGUmVsZWFzZShzdHJpbmcpOwotICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJuIGFk
b3B0Q0YoQ0ZVUkxDb3B5RmlsZVN5c3RlbVBhdGgoZmlsZVVSTCwga0NGVVJMV2luZG93c1BhdGhT
dHlsZSkpLmdldCgpOwogfQogCi1DRlVSTFJlZiBNYXJzaGFsbGluZ0hlbHBlcnM6OkJTVFJUb0NG
VVJMUmVmKEJTVFIgdXJsU3RyKQorUmV0YWluUHRyPENGVVJMUmVmPiBNYXJzaGFsbGluZ0hlbHBl
cnM6OkJTVFJUb0NGVVJMUmVmKEJTVFIgdXJsU3RyKQogewotICAgIENGU3RyaW5nUmVmIHVybENG
U3RyaW5nID0gQlNUUlRvQ0ZTdHJpbmdSZWYodXJsU3RyKTsKKyAgICBhdXRvIHVybENGU3RyaW5n
ID0gQlNUUlRvQ0ZTdHJpbmdSZWYodXJsU3RyKTsKICAgICBpZiAoIXVybENGU3RyaW5nKQotICAg
ICAgICByZXR1cm4gMDsKLQotICAgIENGVVJMUmVmIHVybFJlZiA9IENGVVJMQ3JlYXRlV2l0aFN0
cmluZygwLCB1cmxDRlN0cmluZywgMCk7Ci0gICAgQ0ZSZWxlYXNlKHVybENGU3RyaW5nKTsKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gdXJsUmVmOworICAgIHJldHVybiBh
ZG9wdENGKENGVVJMQ3JlYXRlV2l0aFN0cmluZyhudWxscHRyLCB1cmxDRlN0cmluZy5nZXQoKSwg
bnVsbHB0cikpOwogfQogCi1DRlN0cmluZ1JlZiBNYXJzaGFsbGluZ0hlbHBlcnM6OkJTVFJUb0NG
U3RyaW5nUmVmKEJTVFIgc3RyKQorUmV0YWluUHRyPENGU3RyaW5nUmVmPiBNYXJzaGFsbGluZ0hl
bHBlcnM6OkJTVFJUb0NGU3RyaW5nUmVmKEJTVFIgc3RyKQogewotICAgIHJldHVybiBDRlN0cmlu
Z0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKDAsIChjb25zdCBVbmlDaGFyKikoc3RyID8gc3RyIDogVEVY
VCgiIikpLCBTeXNTdHJpbmdMZW4oc3RyKSk7CisgICAgcmV0dXJuIGFkb3B0Q0YoQ0ZTdHJpbmdD
cmVhdGVXaXRoQ2hhcmFjdGVycygwLCAoY29uc3QgVW5pQ2hhciopKHN0ciA/IHN0ciA6IFRFWFQo
IiIpKSwgU3lzU3RyaW5nTGVuKHN0cikpKTsKIH0KIAotQ0ZTdHJpbmdSZWYgTWFyc2hhbGxpbmdI
ZWxwZXJzOjpMUENPTEVTVFJUb0NGU3RyaW5nUmVmKExQQ09MRVNUUiBzdHIpCitSZXRhaW5QdHI8
Q0ZTdHJpbmdSZWY+IE1hcnNoYWxsaW5nSGVscGVyczo6TFBDT0xFU1RSVG9DRlN0cmluZ1JlZihM
UENPTEVTVFIgc3RyKQogewotICAgIHJldHVybiBDRlN0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJz
KDAsIChjb25zdCBVbmlDaGFyKikoc3RyID8gc3RyIDogVEVYVCgiIikpLCAoQ0ZJbmRleCkoc3Ry
ID8gd2NzbGVuKHN0cikgOiAwKSk7CisgICAgcmV0dXJuIGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVX
aXRoQ2hhcmFjdGVycygwLCAoY29uc3QgVW5pQ2hhciopKHN0ciA/IHN0ciA6IFRFWFQoIiIpKSwg
KENGSW5kZXgpKHN0ciA/IHdjc2xlbihzdHIpIDogMCkpKTsKIH0KIAogQlNUUiBNYXJzaGFsbGlu
Z0hlbHBlcnM6OkNGU3RyaW5nUmVmVG9CU1RSKENGU3RyaW5nUmVmIHN0cikKQEAgLTEwMCw5ICs5
NCw5IEBAIGludCBNYXJzaGFsbGluZ0hlbHBlcnM6OkNGTnVtYmVyUmVmVG9JbnQoQ0ZOdW1iZXJS
ZWYgbnVtKQogICAgIHJldHVybiBudW1iZXI7CiB9CiAKLUNGTnVtYmVyUmVmIE1hcnNoYWxsaW5n
SGVscGVyczo6aW50VG9DRk51bWJlclJlZihpbnQgbnVtKQorUmV0YWluUHRyPENGTnVtYmVyUmVm
PiBNYXJzaGFsbGluZ0hlbHBlcnM6OmludFRvQ0ZOdW1iZXJSZWYoaW50IG51bSkKIHsKLSAgICBy
ZXR1cm4gQ0ZOdW1iZXJDcmVhdGUoMCwga0NGTnVtYmVyU0ludDMyVHlwZSwgJm51bSk7CisgICAg
cmV0dXJuIGFkb3B0Q0YoQ0ZOdW1iZXJDcmVhdGUoMCwga0NGTnVtYmVyU0ludDMyVHlwZSwgJm51
bSkpOwogfQogI2VuZGlmCiAKQEAgLTI0NCw3ICsyMzgsNyBAQCBTQUZFQVJSQVkqIE1hcnNoYWxs
aW5nSGVscGVyczo6aXVua25vd25BcnJheVRvU2FmZUFycmF5KENGQXJyYXlSZWYgaW5BcnJheSkK
ICAgICByZXR1cm4gc2E7CiB9CiAKLUNGQXJyYXlSZWYgTWFyc2hhbGxpbmdIZWxwZXJzOjpzYWZl
QXJyYXlUb1N0cmluZ0FycmF5KFNBRkVBUlJBWSogaW5BcnJheSkKK1JldGFpblB0cjxDRkFycmF5
UmVmPiBNYXJzaGFsbGluZ0hlbHBlcnM6OnNhZmVBcnJheVRvU3RyaW5nQXJyYXkoU0FGRUFSUkFZ
KiBpbkFycmF5KQogewogICAgIGxvbmcgbEJvdW5kPTAsIHVCb3VuZD0tMTsKICAgICBIUkVTVUxU
IGhyID0gOjpTYWZlQXJyYXlHZXRMQm91bmQoaW5BcnJheSwgMSwgJmxCb3VuZCk7CkBAIC0yNTcs
MTQgKzI1MSwxMyBAQCBDRkFycmF5UmVmIE1hcnNoYWxsaW5nSGVscGVyczo6c2FmZUFycmF5VG9T
dHJpbmdBcnJheShTQUZFQVJSQVkqIGluQXJyYXkpCiAgICAgICAgIGZvciAoOyBsQm91bmQgPD0g
dUJvdW5kOyBsQm91bmQrKykgewogICAgICAgICAgICAgQlN0cmluZyBzdHI7CiAgICAgICAgICAg
ICBociA9IDo6U2FmZUFycmF5R2V0RWxlbWVudChpbkFycmF5LCAmbEJvdW5kLCAmc3RyKTsKLSAg
ICAgICAgICAgIGl0ZW1zW2xCb3VuZF0gPSBCU1RSVG9DRlN0cmluZ1JlZihzdHIpOworICAgICAg
ICAgICAgaXRlbXNbbEJvdW5kXSA9IEJTVFJUb0NGU3RyaW5nUmVmKHN0cikubGVha1JlZigpOwog
ICAgICAgICB9CiAgICAgfQotICAgIENGQXJyYXlSZWYgcmVzdWx0ID0gQ0ZBcnJheUNyZWF0ZSgw
LCAoY29uc3Qgdm9pZCoqKWl0ZW1zLmRhdGEoKSwgbGVuLCAma0NGVHlwZUFycmF5Q2FsbEJhY2tz
KTsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiBhZG9wdENGKENGQXJyYXlDcmVhdGUo
MCwgKGNvbnN0IHZvaWQqKilpdGVtcy5kYXRhKCksIGxlbiwgJmtDRlR5cGVBcnJheUNhbGxCYWNr
cykpOwogfQogCi1DRkFycmF5UmVmIE1hcnNoYWxsaW5nSGVscGVyczo6c2FmZUFycmF5VG9JbnRB
cnJheShTQUZFQVJSQVkqIGluQXJyYXkpCitSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gTWFyc2hhbGxp
bmdIZWxwZXJzOjpzYWZlQXJyYXlUb0ludEFycmF5KFNBRkVBUlJBWSogaW5BcnJheSkKIHsKICAg
ICBsb25nIGxCb3VuZD0wLCB1Qm91bmQ9LTE7CiAgICAgSFJFU1VMVCBociA9IDo6U2FmZUFycmF5
R2V0TEJvdW5kKGluQXJyYXksIDEsICZsQm91bmQpOwpAQCAtMjc3LDE0ICsyNzAsMTMgQEAgQ0ZB
cnJheVJlZiBNYXJzaGFsbGluZ0hlbHBlcnM6OnNhZmVBcnJheVRvSW50QXJyYXkoU0FGRUFSUkFZ
KiBpbkFycmF5KQogICAgICAgICBmb3IgKDsgbEJvdW5kIDw9IHVCb3VuZDsgbEJvdW5kKyspIHsK
ICAgICAgICAgICAgIGludCBudW0gPSAwOwogICAgICAgICAgICAgaHIgPSA6OlNhZmVBcnJheUdl
dEVsZW1lbnQoaW5BcnJheSwgJmxCb3VuZCwgJm51bSk7Ci0gICAgICAgICAgICBpdGVtc1tsQm91
bmRdID0gU1VDQ0VFREVEKGhyKSA/IGludFRvQ0ZOdW1iZXJSZWYobnVtKSA6IGtDRk51bWJlck5h
TjsKKyAgICAgICAgICAgIGl0ZW1zW2xCb3VuZF0gPSBTVUNDRUVERUQoaHIpID8gaW50VG9DRk51
bWJlclJlZihudW0pLmxlYWtSZWYoKSA6IGtDRk51bWJlck5hTjsKICAgICAgICAgfQogICAgIH0K
LSAgICBDRkFycmF5UmVmIHJlc3VsdCA9IENGQXJyYXlDcmVhdGUoMCwgKGNvbnN0IHZvaWQqKilp
dGVtcy5kYXRhKCksIGxlbiwgJmtDRlR5cGVBcnJheUNhbGxCYWNrcyk7Ci0gICAgcmV0dXJuIHJl
c3VsdDsKKyAgICByZXR1cm4gYWRvcHRDRihDRkFycmF5Q3JlYXRlKDAsIChjb25zdCB2b2lkKiop
aXRlbXMuZGF0YSgpLCBsZW4sICZrQ0ZUeXBlQXJyYXlDYWxsQmFja3MpKTsKIH0KIAotQ0ZBcnJh
eVJlZiBNYXJzaGFsbGluZ0hlbHBlcnM6OnNhZmVBcnJheVRvSVVua25vd25BcnJheShTQUZFQVJS
QVkqIGluQXJyYXkpCitSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gTWFyc2hhbGxpbmdIZWxwZXJzOjpz
YWZlQXJyYXlUb0lVbmtub3duQXJyYXkoU0FGRUFSUkFZKiBpbkFycmF5KQogewogICAgIGxvbmcg
bEJvdW5kPTAsIHVCb3VuZD0tMTsKICAgICBIUkVTVUxUIGhyID0gOjpTYWZlQXJyYXlHZXRMQm91
bmQoaW5BcnJheSwgMSwgJmxCb3VuZCk7CkBAIC0yOTMsNyArMjg1LDcgQEAgQ0ZBcnJheVJlZiBN
YXJzaGFsbGluZ0hlbHBlcnM6OnNhZmVBcnJheVRvSVVua25vd25BcnJheShTQUZFQVJSQVkqIGlu
QXJyYXkpCiAgICAgbG9uZyBsZW4gPSAoU1VDQ0VFREVEKGhyKSkgPyAodUJvdW5kLWxCb3VuZCsx
KSA6IDA7CiAgICAgdm9pZCogaXRlbXMgPSBudWxscHRyOwogICAgIGhyID0gOjpTYWZlQXJyYXlB
Y2Nlc3NEYXRhKGluQXJyYXksICZpdGVtcyk7Ci0gICAgQ0ZBcnJheVJlZiByZXN1bHQgPSBTVUND
RUVERUQoaHIpID8gQ0ZBcnJheUNyZWF0ZSgwLCAoY29uc3Qgdm9pZCoqKSBpdGVtcywgbGVuLCAm
a0lVbmtub3duQXJyYXlDYWxsQmFja3MpIDogbnVsbHB0cjsKKyAgICBhdXRvIHJlc3VsdCA9IFNV
Q0NFRURFRChocikgPyBhZG9wdENGKENGQXJyYXlDcmVhdGUoMCwgKGNvbnN0IHZvaWQqKikgaXRl
bXMsIGxlbiwgJmtJVW5rbm93bkFycmF5Q2FsbEJhY2tzKSkgOiBudWxscHRyOwogICAgIGhyID0g
OjpTYWZlQXJyYXlVbmFjY2Vzc0RhdGEoaW5BcnJheSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01hcnNoYWxsaW5nSGVscGVycy5o
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vTWFyc2hhbGxpbmdIZWxwZXJzLmgKaW5kZXggMmM0
ODYwMzZhMGNjNzAxNWM2MDhjOGEwN2E2ZDAxNWQ0MTc5MTE1NC4uOTQxYTQyODk4MTQxYWU1OTAz
MzUxMDMwYzRlMjljODMzNjQ4YjJjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vTWFyc2hhbGxpbmdIZWxwZXJzLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vTWFy
c2hhbGxpbmdIZWxwZXJzLmgKQEAgLTI5LDYgKzI5LDcgQEAKIAogI2lmIFVTRShDRikKICNpbmNs
dWRlIDxDb3JlRm91bmRhdGlvbi9Db3JlRm91bmRhdGlvbi5oPgorI2luY2x1ZGUgPHd0Zi9SZXRh
aW5QdHIuaD4KICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00MiwxNCArNDMsMTQg
QEAgcHVibGljOgogICAgIHN0YXRpYyBCU1RSIFVSTFRvQlNUUihjb25zdCBVUkwmKTsKIAogI2lm
IFVTRShDRikKLSAgICBzdGF0aWMgQ0ZVUkxSZWYgUGF0aFN0cmluZ1RvRmlsZUNGVVJMUmVmKGNv
bnN0IFdURjo6U3RyaW5nJik7CisgICAgc3RhdGljIFJldGFpblB0cjxDRlVSTFJlZj4gUGF0aFN0
cmluZ1RvRmlsZUNGVVJMUmVmKGNvbnN0IFdURjo6U3RyaW5nJik7CiAgICAgc3RhdGljIFdURjo6
U3RyaW5nIEZpbGVDRlVSTFJlZlRvUGF0aFN0cmluZyhDRlVSTFJlZiBmaWxlVVJMKTsKLSAgICBz
dGF0aWMgQ0ZVUkxSZWYgQlNUUlRvQ0ZVUkxSZWYoQlNUUik7Ci0gICAgc3RhdGljIENGU3RyaW5n
UmVmIEJTVFJUb0NGU3RyaW5nUmVmKEJTVFIpOwotICAgIHN0YXRpYyBDRlN0cmluZ1JlZiBMUENP
TEVTVFJUb0NGU3RyaW5nUmVmKExQQ09MRVNUUik7CisgICAgc3RhdGljIFJldGFpblB0cjxDRlVS
TFJlZj4gQlNUUlRvQ0ZVUkxSZWYoQlNUUik7CisgICAgc3RhdGljIFJldGFpblB0cjxDRlN0cmlu
Z1JlZj4gQlNUUlRvQ0ZTdHJpbmdSZWYoQlNUUik7CisgICAgc3RhdGljIFJldGFpblB0cjxDRlN0
cmluZ1JlZj4gTFBDT0xFU1RSVG9DRlN0cmluZ1JlZihMUENPTEVTVFIpOwogICAgIHN0YXRpYyBC
U1RSIENGU3RyaW5nUmVmVG9CU1RSKENGU3RyaW5nUmVmKTsKICAgICBzdGF0aWMgaW50IENGTnVt
YmVyUmVmVG9JbnQoQ0ZOdW1iZXJSZWYpOwotICAgIHN0YXRpYyBDRk51bWJlclJlZiBpbnRUb0NG
TnVtYmVyUmVmKGludCk7CisgICAgc3RhdGljIFJldGFpblB0cjxDRk51bWJlclJlZj4gaW50VG9D
Rk51bWJlclJlZihpbnQpOwogICAgIHN0YXRpYyBDRkFic29sdXRlVGltZSBEQVRFVG9DRkFic29s
dXRlVGltZShEQVRFKTsKICAgICBzdGF0aWMgREFURSBDRkFic29sdXRlVGltZVRvREFURShDRkFi
c29sdXRlVGltZSk7CiAgICAgc3RhdGljIFNBRkVBUlJBWSogc3RyaW5nQXJyYXlUb1NhZmVBcnJh
eShDRkFycmF5UmVmKTsKQEAgLTYzLDkgKzY0LDkgQEAgcHVibGljOgogCiAjaWYgVVNFKENGKQog
ICAgIHN0YXRpYyBTQUZFQVJSQVkqIGl1bmtub3duQXJyYXlUb1NhZmVBcnJheShDRkFycmF5UmVm
KTsKLSAgICBzdGF0aWMgQ0ZBcnJheVJlZiBzYWZlQXJyYXlUb1N0cmluZ0FycmF5KFNBRkVBUlJB
WSopOwotICAgIHN0YXRpYyBDRkFycmF5UmVmIHNhZmVBcnJheVRvSW50QXJyYXkoU0FGRUFSUkFZ
Kik7Ci0gICAgc3RhdGljIENGQXJyYXlSZWYgc2FmZUFycmF5VG9JVW5rbm93bkFycmF5KFNBRkVB
UlJBWSopOworICAgIHN0YXRpYyBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gc2FmZUFycmF5VG9TdHJp
bmdBcnJheShTQUZFQVJSQVkqKTsKKyAgICBzdGF0aWMgUmV0YWluUHRyPENGQXJyYXlSZWY+IHNh
ZmVBcnJheVRvSW50QXJyYXkoU0FGRUFSUkFZKik7CisgICAgc3RhdGljIFJldGFpblB0cjxDRkFy
cmF5UmVmPiBzYWZlQXJyYXlUb0lVbmtub3duQXJyYXkoU0FGRUFSUkFZKik7CiAgICAgc3RhdGlj
IGNvbnN0IHZvaWQqIElVbmtub3duUmV0YWluQ2FsbGJhY2soQ0ZBbGxvY2F0b3JSZWYsIGNvbnN0
IHZvaWQqKTsKICAgICBzdGF0aWMgdm9pZCBJVW5rbm93blJlbGVhc2VDYWxsYmFjayhDRkFsbG9j
YXRvclJlZiwgY29uc3Qgdm9pZCopOwogICAgIHN0YXRpYyBDRkFycmF5Q2FsbEJhY2tzIGtJVW5r
bm93bkFycmF5Q2FsbEJhY2tzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViQXBwbGljYXRpb25DYWNoZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJBcHBs
aWNhdGlvbkNhY2hlLmNwcAppbmRleCBkZTEyNTBlY2RlOTc2YTYyZjIyNThjN2RjNzRmNmU4ZWMz
NzRiMmM4Li4wOGRkNDAxZWI3M2Q4NWUwZjNjZTVmMjM2YzljMDZmZjZhNGQ2YzU5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJBcHBsaWNhdGlvbkNhY2hlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJBcHBsaWNhdGlvbkNhY2hlLmNwcApAQCAtMjAw
LDcgKzIwMCw3IEBAIEhSRVNVTFQgV2ViQXBwbGljYXRpb25DYWNoZTo6b3JpZ2luc1dpdGhDYWNo
ZShJUHJvcGVydHlCYWcqKiBvcmlnaW5zKQogICAgIFJldGFpblB0cjxDRk11dGFibGVEaWN0aW9u
YXJ5UmVmPiBkaWN0aW9uYXJ5ID0gYWRvcHRDRigKICAgICAgICAgQ0ZEaWN0aW9uYXJ5Q3JlYXRl
TXV0YWJsZSgwLCAwLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGlj
dGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7CiAKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGtl
eSA9IGFkb3B0Q0YoTWFyc2hhbGxpbmdIZWxwZXJzOjpCU1RSVG9DRlN0cmluZ1JlZihfYnN0cl90
KEwib3JpZ2lucyIpKSk7CisgICAgYXV0byBrZXkgPSBNYXJzaGFsbGluZ0hlbHBlcnM6OkJTVFJU
b0NGU3RyaW5nUmVmKF9ic3RyX3QoTCJvcmlnaW5zIikpOwogICAgIENGRGljdGlvbmFyeUFkZFZh
bHVlKGRpY3Rpb25hcnkuZ2V0KCksIGtleS5nZXQoKSwgYXJyYXlJdGVtLmdldCgpKTsKIAogICAg
IENPTVB0cjxDRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZz4gcmVzdWx0ID0gQ0ZEaWN0aW9uYXJ5UHJv
cGVydHlCYWc6OmNyZWF0ZUluc3RhbmNlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAK
aW5kZXggOWI4NmFhNDVhZDQzOWY0ZmI5YjgyZDQxNDMwNzFkNWRiY2YzODI2My4uMGU2NjkwODI3
ZjgwYWIxN2UzZTMwYjdlMmE4OTI1ZDEzN2M2NmQzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50LmNwcApAQCAtMTAzOCwyMSArMTAzOCwyMSBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50
OjpkaXNwYXRjaERpZEZhaWxUb1N0YXJ0UGx1Z2luKGNvbnN0IFBsdWdpblZpZXcmIHBsdWdpbgog
ICAgIGlmICghcGx1Z2luVmlldy5wbHVnaW5zUGFnZSgpLmlzTnVsbCgpKSB7CiAgICAgICAgIFVS
TCBwbHVnaW5QYWdlVVJMID0gZnJhbWUtPmRvY3VtZW50KCktPmNvbXBsZXRlVVJMKHN0cmlwTGVh
ZGluZ0FuZFRyYWlsaW5nSFRNTFNwYWNlcyhwbHVnaW5WaWV3LnBsdWdpbnNQYWdlKCkpKTsKICAg
ICAgICAgaWYgKHBsdWdpblBhZ2VVUkwucHJvdG9jb2xJc0luSFRUUEZhbWlseSgpKSB7Ci0gICAg
ICAgICAgICBzdGF0aWMgQ0ZTdHJpbmdSZWYga2V5ID0gTWFyc2hhbGxpbmdIZWxwZXJzOjpMUENP
TEVTVFJUb0NGU3RyaW5nUmVmKFdlYktpdEVycm9yUGx1Z0luUGFnZVVSTFN0cmluZ0tleSk7Ci0g
ICAgICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZSh1c2VySW5mby5nZXQoKSwga2V5LCBwbHVn
aW5QYWdlVVJMLnN0cmluZygpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOworICAgICAgICAgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxDRlN0cmluZ1JlZj4+IGtleSA9IE1hcnNo
YWxsaW5nSGVscGVyczo6TFBDT0xFU1RSVG9DRlN0cmluZ1JlZihXZWJLaXRFcnJvclBsdWdJblBh
Z2VVUkxTdHJpbmdLZXkpOworICAgICAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUodXNlcklu
Zm8uZ2V0KCksIGtleS5nZXQoKS5nZXQoKSwgcGx1Z2luUGFnZVVSTC5zdHJpbmcoKS5jcmVhdGVD
RlN0cmluZygpLmdldCgpKTsKICAgICAgICAgfQogICAgIH0KIAogICAgIGlmICghcGx1Z2luVmll
dy5taW1lVHlwZSgpLmlzTnVsbCgpKSB7Ci0gICAgICAgIHN0YXRpYyBDRlN0cmluZ1JlZiBrZXkg
PSBNYXJzaGFsbGluZ0hlbHBlcnM6OkxQQ09MRVNUUlRvQ0ZTdHJpbmdSZWYoV2ViS2l0RXJyb3JN
SU1FVHlwZUtleSk7Ci0gICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHVzZXJJbmZvLmdldCgp
LCBrZXksIHBsdWdpblZpZXcubWltZVR5cGUoKS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKKyAg
ICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxDRlN0cmluZ1JlZj4+IGtleSA9
IE1hcnNoYWxsaW5nSGVscGVyczo6TFBDT0xFU1RSVG9DRlN0cmluZ1JlZihXZWJLaXRFcnJvck1J
TUVUeXBlS2V5KTsKKyAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUodXNlckluZm8uZ2V0KCks
IGtleS5nZXQoKS5nZXQoKSwgcGx1Z2luVmlldy5taW1lVHlwZSgpLmNyZWF0ZUNGU3RyaW5nKCku
Z2V0KCkpOwogICAgIH0KIAogICAgIGlmIChwbHVnaW5WaWV3LnBsdWdpbigpKSB7CiAgICAgICAg
IFN0cmluZyBwbHVnaW5OYW1lID0gcGx1Z2luVmlldy5wbHVnaW4oKS0+bmFtZSgpOwogICAgICAg
ICBpZiAoIXBsdWdpbk5hbWUuaXNOdWxsKCkpIHsKLSAgICAgICAgICAgIHN0YXRpYyBDRlN0cmlu
Z1JlZiBrZXkgPSBNYXJzaGFsbGluZ0hlbHBlcnM6OkxQQ09MRVNUUlRvQ0ZTdHJpbmdSZWYoV2Vi
S2l0RXJyb3JQbHVnSW5OYW1lS2V5KTsKLSAgICAgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVl
KHVzZXJJbmZvLmdldCgpLCBrZXksIHBsdWdpbk5hbWUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7
CisgICAgICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPENGU3RyaW5nUmVm
Pj4ga2V5ID0gTWFyc2hhbGxpbmdIZWxwZXJzOjpMUENPTEVTVFJUb0NGU3RyaW5nUmVmKFdlYktp
dEVycm9yUGx1Z0luTmFtZUtleSk7CisgICAgICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZSh1
c2VySW5mby5nZXQoKSwga2V5LmdldCgpLmdldCgpLCBwbHVnaW5OYW1lLmNyZWF0ZUNGU3RyaW5n
KCkuZ2V0KCkpOwogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJEb3dubG9hZENGTmV0LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkRvd25sb2FkQ0ZOZXQuY3BwCmluZGV4IGEzMzNhMmY2Mjc2N2ViYmFlYzNjODNiNmIwNzZm
MGMzNWQwM2Q1MGMuLmVhMGI2NzUxYzU1NGU4MjdkYzk4MjU1Y2Q0YTcxNTdmMWQ1YWQyYjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRvd25sb2FkQ0ZOZXQuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRvd25sb2FkQ0ZOZXQuY3BwCkBAIC0xNzgs
NyArMTc4LDcgQEAgSFJFU1VMVCBXZWJEb3dubG9hZDo6aW5pdFRvUmVzdW1lV2l0aEJ1bmRsZShf
SW5fIEJTVFIgYnVuZGxlUGF0aCwgX0luX29wdF8gSVdlYkQKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBkaWRSZWNlaXZlUmVzcG9uc2VDYWxsYmFjaywgd2lsbFJlc3VtZVdpdGhS
ZXNwb25zZUNhbGxiYWNrLCBkaWRSZWNlaXZlRGF0YUNhbGxiYWNrLCBzaG91bGREZWNvZGVEYXRh
T2ZNSU1FVHlwZUNhbGxiYWNrLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBk
ZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRPYmplY3ROYW1lQ2FsbGJhY2ssIGRpZENyZWF0
ZURlc3RpbmF0aW9uQ2FsbGJhY2ssIGRpZEZpbmlzaENhbGxiYWNrLCBkaWRGYWlsQ2FsbGJhY2t9
OwogICAgIAotICAgIFJldGFpblB0cjxDRlVSTFJlZj4gcGF0aFVSTCA9IGFkb3B0Q0YoTWFyc2hh
bGxpbmdIZWxwZXJzOjpQYXRoU3RyaW5nVG9GaWxlQ0ZVUkxSZWYoU3RyaW5nKGJ1bmRsZVBhdGgs
IFN5c1N0cmluZ0xlbihidW5kbGVQYXRoKSkpKTsKKyAgICBhdXRvIHBhdGhVUkwgPSBNYXJzaGFs
bGluZ0hlbHBlcnM6OlBhdGhTdHJpbmdUb0ZpbGVDRlVSTFJlZihTdHJpbmcoYnVuZGxlUGF0aCwg
U3lzU3RyaW5nTGVuKGJ1bmRsZVBhdGgpKSk7CiAgICAgQVNTRVJUKHBhdGhVUkwpOwogCiAgICAg
bV9kb3dubG9hZCA9IGFkb3B0Q0YoQ0ZVUkxEb3dubG9hZENyZWF0ZVdpdGhSZXN1bWVEYXRhKDAs
IHJlc3VtZURhdGEuZ2V0KCksIHBhdGhVUkwuZ2V0KCksICZjbGllbnQpKTsKQEAgLTI4OCw5ICsy
ODgsOCBAQCBIUkVTVUxUIFdlYkRvd25sb2FkOjpzZXREZXN0aW5hdGlvbihfSW5fIEJTVFIgcGF0
aCwgQk9PTCBhbGxvd092ZXJ3cml0ZSkKICAgICBtX2Rlc3RpbmF0aW9uID0gU3RyaW5nKHBhdGgs
IFN5c1N0cmluZ0xlbihwYXRoKSk7CiAgICAgbV9idW5kbGVQYXRoID0gbV9kZXN0aW5hdGlvbiAr
IERvd25sb2FkQnVuZGxlOjpmaWxlRXh0ZW5zaW9uKCk7CiAKLSAgICBDRlVSTFJlZiBwYXRoVVJM
ID0gTWFyc2hhbGxpbmdIZWxwZXJzOjpQYXRoU3RyaW5nVG9GaWxlQ0ZVUkxSZWYobV9idW5kbGVQ
YXRoKTsKLSAgICBDRlVSTERvd25sb2FkU2V0RGVzdGluYXRpb24obV9kb3dubG9hZC5nZXQoKSwg
cGF0aFVSTCwgISFhbGxvd092ZXJ3cml0ZSk7Ci0gICAgQ0ZSZWxlYXNlKHBhdGhVUkwpOworICAg
IGF1dG8gcGF0aFVSTCA9IE1hcnNoYWxsaW5nSGVscGVyczo6UGF0aFN0cmluZ1RvRmlsZUNGVVJM
UmVmKG1fYnVuZGxlUGF0aCk7CisgICAgQ0ZVUkxEb3dubG9hZFNldERlc3RpbmF0aW9uKG1fZG93
bmxvYWQuZ2V0KCksIHBhdGhVUkwuZ2V0KCksICEhYWxsb3dPdmVyd3JpdGUpOwogCiAgICAgTE9H
KERvd25sb2FkLCAiV2ViRG93bmxvYWQgLSBTZXQgZGVzdGluYXRpb24gdG8gJXMiLCBtX2J1bmRs
ZVBhdGguYXNjaWkoKS5kYXRhKCkpOwogCkBAIC0zNjgsOSArMzY3LDcgQEAgQ0ZVUkxSZXF1ZXN0
UmVmIFdlYkRvd25sb2FkOjp3aWxsU2VuZFJlcXVlc3QoQ0ZVUkxSZXF1ZXN0UmVmIHJlcXVlc3Qs
IENGVVJMUmVzcG8KIAogICAgIENPTVB0cjxXZWJNdXRhYmxlVVJMUmVxdWVzdD4gZmluYWxXZWJS
ZXF1ZXN0KEFkb3B0Q09NLCBXZWJNdXRhYmxlVVJMUmVxdWVzdDo6Y3JlYXRlSW5zdGFuY2UoZmlu
YWxSZXF1ZXN0LmdldCgpKSk7CiAgICAgbV9yZXF1ZXN0ID0gZmluYWxXZWJSZXF1ZXN0LmdldCgp
OwotICAgIENGVVJMUmVxdWVzdFJlZiByZXN1bHQgPSBmaW5hbFdlYlJlcXVlc3QtPnJlc291cmNl
UmVxdWVzdCgpLmNmVVJMUmVxdWVzdChVcGRhdGVIVFRQQm9keSk7Ci0gICAgQ0ZSZXRhaW4ocmVz
dWx0KTsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiByZXRhaW5QdHIoZmluYWxXZWJS
ZXF1ZXN0LT5yZXNvdXJjZVJlcXVlc3QoKS5jZlVSTFJlcXVlc3QoVXBkYXRlSFRUUEJvZHkpKS5s
ZWFrUmVmKCk7CiB9CiAKIHZvaWQgV2ViRG93bmxvYWQ6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZShDRlVSTEF1dGhDaGFsbGVuZ2VSZWYgY2hhbGxlbmdlKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSGlzdG9yeS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJIaXN0b3J5LmNwcAppbmRleCA2MWMwMjZiN2FlMDBkODI4YjAyZGVjM2VhM2U0
YjRkNzkwODhhYTExLi45ZWZhZTIyNzkzYzcwZDA4NjI4Y2M5Y2VjZTkyM2ViYzRjMjk3ZGY1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJIaXN0b3J5LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJIaXN0b3J5LmNwcApAQCAtNjEsNyArNjEsNyBAQCBz
dGF0aWMgQ09NUHRyPElQcm9wZXJ0eUJhZz4gY3JlYXRlVXNlckluZm9Gcm9tQXJyYXkoQlNUUiBu
b3RpZmljYXRpb25TdHIsIElXZWJIaQogICAgIFJldGFpblB0cjxDRk11dGFibGVEaWN0aW9uYXJ5
UmVmPiBkaWN0aW9uYXJ5ID0gYWRvcHRDRigKICAgICAgICAgQ0ZEaWN0aW9uYXJ5Q3JlYXRlTXV0
YWJsZSgwLCAwLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlv
bmFyeVZhbHVlQ2FsbEJhY2tzKSk7CiAKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGtleSA9
IGFkb3B0Q0YoTWFyc2hhbGxpbmdIZWxwZXJzOjpCU1RSVG9DRlN0cmluZ1JlZihub3RpZmljYXRp
b25TdHIpKTsKKyAgICBhdXRvIGtleSA9IE1hcnNoYWxsaW5nSGVscGVyczo6QlNUUlRvQ0ZTdHJp
bmdSZWYobm90aWZpY2F0aW9uU3RyKTsKICAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkaWN0aW9u
YXJ5LmdldCgpLCBrZXkuZ2V0KCksIGFycmF5SXRlbS5nZXQoKSk7CiAKICAgICBDT01QdHI8Q0ZE
aWN0aW9uYXJ5UHJvcGVydHlCYWc+IHJlc3VsdCA9IENGRGljdGlvbmFyeVByb3BlcnR5QmFnOjpj
cmVhdGVJbnN0YW5jZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
TG9jYWxpemFibGVTdHJpbmdzLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkxvY2Fs
aXphYmxlU3RyaW5ncy5jcHAKaW5kZXggZmM4MGZlOTZmMjk0MjZkZmUxNWZlZGQ1MmI1NGM1NDRl
ZDVkZTBmYS4uYjQxNjhiZjg0MTkxZThhMTE0MzlkOTAwMzJmZTg5ZWE0ZDI2ZjcwNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTG9jYWxpemFibGVTdHJpbmdzLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJMb2NhbGl6YWJsZVN0cmluZ3MuY3BwCkBA
IC05NSwxOSArOTUsMTkgQEAgTG9jYWxpemVkU3RyaW5nOjpvcGVyYXRvciBMUENUU1RSKCkgY29u
c3QKICAgICByZXR1cm4gbV9zdHJpbmcud2lkZUNoYXJhY3RlcnMoKS5kYXRhKCk7CiB9CiAKLXN0
YXRpYyBDRkJ1bmRsZVJlZiBjcmVhdGVXZWJLaXRCdW5kbGUoKQorc3RhdGljIHZvaWQgY3JlYXRl
V2ViS2l0QnVuZGxlKCkKIHsKLSAgICBzdGF0aWMgQ0ZCdW5kbGVSZWYgYnVuZGxlOworICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8Q0ZCdW5kbGVSZWY+PiBidW5kbGU7CiAgICAg
c3RhdGljIGJvb2wgaW5pdGlhbGl6ZWQ7CiAKICAgICBpZiAoaW5pdGlhbGl6ZWQpCi0gICAgICAg
IHJldHVybiBidW5kbGU7CisgICAgICAgIHJldHVybjsKICAgICBpbml0aWFsaXplZCA9IHRydWU7
CiAKICAgICBXQ0hBUiBwYXRoU3RyW01BWF9QQVRIXTsKICAgICBEV09SRCBsZW5ndGggPSA6Okdl
dE1vZHVsZUZpbGVOYW1lVyhnSW5zdGFuY2UsIHBhdGhTdHIsIE1BWF9QQVRIKTsKICAgICBpZiAo
IWxlbmd0aCB8fCAobGVuZ3RoID09IE1BWF9QQVRIICYmIEdldExhc3RFcnJvcigpID09IEVSUk9S
X0lOU1VGRklDSUVOVF9CVUZGRVIpKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJu
OwogCiAgICAgYm9vbCBmb3VuZCA9IGZhbHNlOwogICAgIGZvciAoaW50IGkgPSBsZW5ndGggLSAx
OyBpID49IDA7IGktLSkgewpAQCAtMTIyLDIyICsxMjIsMjAgQEAgc3RhdGljIENGQnVuZGxlUmVm
IGNyZWF0ZVdlYktpdEJ1bmRsZSgpCiAgICAgICAgIH0KICAgICB9CiAgICAgaWYgKCFmb3VuZCkK
LSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybjsKIAogICAgIGlmICh3Y3NjYXRfcyhw
YXRoU3RyLCBNQVhfUEFUSCwgTCJcXFdlYktpdC5yZXNvdXJjZXMiKSkKLSAgICAgICAgcmV0dXJu
IDA7CisgICAgICAgIHJldHVybjsKIAogICAgIFN0cmluZyBidW5kbGVQYXRoU3RyaW5nKHBhdGhT
dHIpOwogICAgIGlmICghYnVuZGxlUGF0aFN0cmluZykKLSAgICAgICAgcmV0dXJuIDA7CisgICAg
ICAgIHJldHVybjsKIAotICAgIENGVVJMUmVmIGJ1bmRsZVVSTFJlZiA9IENGVVJMQ3JlYXRlV2l0
aEZpbGVTeXN0ZW1QYXRoKDAsIGJ1bmRsZVBhdGhTdHJpbmcuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQo
KSwga0NGVVJMV2luZG93c1BhdGhTdHlsZSwgdHJ1ZSk7CisgICAgYXV0byBidW5kbGVVUkxSZWYg
PSBhZG9wdENGKENGVVJMQ3JlYXRlV2l0aEZpbGVTeXN0ZW1QYXRoKDAsIGJ1bmRsZVBhdGhTdHJp
bmcuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwga0NGVVJMV2luZG93c1BhdGhTdHlsZSwgdHJ1ZSkp
OwogICAgIGlmICghYnVuZGxlVVJMUmVmKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0
dXJuOwogCi0gICAgYnVuZGxlID0gQ0ZCdW5kbGVDcmVhdGUoMCwgYnVuZGxlVVJMUmVmKTsKLSAg
ICBDRlJlbGVhc2UoYnVuZGxlVVJMUmVmKTsKLSAgICByZXR1cm4gYnVuZGxlOworICAgIGJ1bmRs
ZS5nZXQoKSA9IGFkb3B0Q0YoQ0ZCdW5kbGVDcmVhdGUoMCwgYnVuZGxlVVJMUmVmLmdldCgpKSk7
CiB9CiAKIHN0YXRpYyBDRkJ1bmRsZVJlZiBjZkJ1bmRsZUZvclN0cmluZ3NCdW5kbGUoV2ViTG9j
YWxpemFibGVTdHJpbmdzQnVuZGxlKiBzdHJpbmdzQnVuZGxlKQpkaWZmIC0tZ2l0IGEvVG9vbHMv
Q2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDJmOTJiMTgwY2ZlMWZiZjliMGFiZTZj
NGNlODk2NGEzY2RlNmI1NDguLjg3NDg2ZmVmYzJhZWRjZDlhZmUxNjZiNTZmYmE0YTE3NGM0ZDZk
Y2IgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSw1NCBAQAorMjAyMS0wMy0wNCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29t
PgorCisgICAgICAgIFJlZHVjZSB1c2Ugb2YgQ0ZSZXRhaW4oKSAvIENGUmVsZWFzZSgpIC8gQ0ZB
dXRvUmVsZWFzZSgpIGluIFdlYktpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjIyNzYwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIu
CisKKyAgICAgICAgUmVkdWNlIHVzZSBvZiBDRlJldGFpbigpIC8gQ0ZSZWxlYXNlKCkgLyBDRkF1
dG9SZWxlYXNlKCkgaW4gV2ViS2l0IGJ5IHVzaW5nIFJldGFpblB0cjw+LgorCisgICAgICAgICog
RHVtcFJlbmRlclRyZWUvVGVzdE5ldHNjYXBlUGx1Z0luL1BsdWdpbk9iamVjdE1hYy5tbToKKyAg
ICAgICAgKGNyZWF0ZUNvcmVBbmltYXRpb25MYXllcik6CisgICAgICAgICogRHVtcFJlbmRlclRy
ZWUvbWFjL0FjY2Vzc2liaWxpdHlDb21tb25NYWMubW06CisgICAgICAgICgrW05TU3RyaW5nIHN0
cmluZ1dpdGhKU1N0cmluZ1JlZjpdKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvRHVt
cFJlbmRlclRyZWUubW06CisgICAgICAgIChhY3RpdmF0ZUZvbnRJT1MpOgorICAgICAgICAoZHVt
cFJlbmRlclRyZWUpOgorICAgICAgICAoaW52YWxpZGF0ZUFueVByZXZpb3VzV2FpdFRvRHVtcFdh
dGNoZG9nKToKKyAgICAgICAgKHNldFdhaXRUb0R1bXBXYXRjaGRvZyk6CisgICAgICAgIChkdW1w
KToKKyAgICAgICAgKHJ1blRlc3QpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9EdW1w
UmVuZGVyVHJlZU1hYy5oOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9FdmVudFNlbmRp
bmdDb250cm9sbGVyLm1tOgorICAgICAgICAoLVtFdmVudFNlbmRpbmdDb250cm9sbGVyIG1vdXNl
U2Nyb2xsQnlYOmFuZFk6Y29udGludW91c2x5Ol0pOgorICAgICAgICAoLVtFdmVudFNlbmRpbmdD
b250cm9sbGVyIG1vdXNlU2Nyb2xsQnlYOmFuZFk6d2l0aFdoZWVsOmFuZE1vbWVudHVtUGhhc2Vz
Ol0pOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9QaXhlbER1bXBTdXBwb3J0TWFjLm1t
OgorICAgICAgICAodGFrZVdpbmRvd1NuYXBzaG90KToKKyAgICAgICAgKGNyZWF0ZUJpdG1hcENv
bnRleHRGcm9tV2ViVmlldyk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL1Jlc291cmNl
TG9hZERlbGVnYXRlLm1tOgorICAgICAgICAoLVtSZXNvdXJjZUxvYWREZWxlZ2F0ZSB3ZWJWaWV3
OnJlc291cmNlOndpbGxTZW5kUmVxdWVzdDpyZWRpcmVjdFJlc3BvbnNlOmZyb21EYXRhU291cmNl
Ol0pOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9UZXN0UnVubmVyTWFjLm1tOgorICAg
ICAgICAoVGVzdFJ1bm5lcjo6YWRkRGlzYWxsb3dlZFVSTCk6CisgICAgICAgIChUZXN0UnVubmVy
OjpzZXRXYWl0VG9EdW1wKToKKyAgICAgICAgKiBGb250V2l0aEZlYXR1cmVzL0ZvbnRXaXRoRmVh
dHVyZXMvbWFpbi5jcHA6CisgICAgICAgIChjb25zdHJ1Y3RGb250V2l0aFRydWVUeXBlRmVhdHVy
ZSk6CisgICAgICAgIChjb25zdHJ1Y3RGb250V2l0aE9wZW5UeXBlRmVhdHVyZSk6CisgICAgICAg
IChkcmF3VGV4dCk6CisgICAgICAgIChtYWluKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHA6CisgICAgICAgIChXVFI6Oklu
amVjdGVkQnVuZGxlUGFnZTo6ZHVtcERPTUFzV2ViQXJjaGl2ZSk6CisgICAgICAgICogV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9pb3MvQWNjZXNzaWJpbGl0eVVJRWxlbWVudElPUy5t
bToKKyAgICAgICAgKCtbTlNTdHJpbmcgc3RyaW5nV2l0aEpTU3RyaW5nUmVmOl0pOgorICAgICAg
ICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0FjY2Vzc2liaWxpdHlDb21t
b25NYWMubW06CisgICAgICAgICgrW05TU3RyaW5nIHN0cmluZ1dpdGhKU1N0cmluZ1JlZjpdKToK
KyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL2lvcy9ISURFdmVudEdlbmVyYXRvci5tbToKKyAg
ICAgICAgKC1bSElERXZlbnRHZW5lcmF0b3IgX2NyZWF0ZUlPSElERXZlbnRXaXRoSW5mbzpdKToK
KyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL21hYy9FdmVudFNlbmRlclByb3h5Lm1tOgorICAg
ICAgICAoLVtFdmVudFNlbmRlclN5bnRoZXRpY0V2ZW50IGluaXRQcmVzc3VyZUV2ZW50QXRMb2Nh
dGlvbjpnbG9iYWxMb2NhdGlvbjpzdGFnZTpwcmVzc3VyZTpzdGFnZVRyYW5zaXRpb246cGhhc2U6
dGltZTpldmVudE51bWJlcjp3aW5kb3c6XSk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9t
YWMvVUlTY3JpcHRDb250cm9sbGVyTWFjLm1tOgorICAgICAgICAoV1RSOjpjZlN0cmluZyk6Cisg
ICAgICAgIChXVFI6OlVJU2NyaXB0Q29udHJvbGxlck1hYzo6cmVwbGFjZVRleHRBdFJhbmdlKToK
KwogMjAyMS0wMy0wNCAgTWF0dCBMZXdpcyAgPGpsZXdpczNAYXBwbGUuY29tPgogCiAgICAgICAg
IEFkZCBBcHBsZSBTaWxpY29uIERldmljZXMgdG8gQmlnIFN1ciBidWlsZGVycyBhbmQgdGVzdGVy
cy4KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3ROZXRzY2FwZVBsdWdJbi9Q
bHVnaW5PYmplY3RNYWMubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0TmV0c2NhcGVQbHVn
SW4vUGx1Z2luT2JqZWN0TWFjLm1tCmluZGV4IDU5ZjY1N2ZkM2U0YzU5OTMwM2M3ZjQwNDA0MTIy
Y2I0NGI3OWNmMTQuLjJmMjZkODRjZjZmNDg3YjRiOTY3ZTNiOGZmMjQxNjAyZjdiZTBjYzQgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3ROZXRzY2FwZVBsdWdJbi9QbHVnaW5P
YmplY3RNYWMubW0KKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdE5ldHNjYXBlUGx1Z0lu
L1BsdWdpbk9iamVjdE1hYy5tbQpAQCAtNjQsMjMgKzY0LDE1IEBAIENGVHlwZVJlZiBjcmVhdGVD
b3JlQW5pbWF0aW9uTGF5ZXIoKQogICAgIC8vIFR1cm4gb2ZmIGRlZmF1bHQgYW5pbWF0aW9ucy4K
ICAgICBbY2FMYXllciBzZXRTdHlsZTpAeyBAImFjdGlvbnMiOiBhY3Rpb25zIH1dOwogICAgIFtj
YUxheWVyIHNldE5lZWRzRGlzcGxheU9uQm91bmRzQ2hhbmdlOllFU107Ci0KICAgICBbY2FMYXll
ciBzZXRCb3VuZHM6Q0dSZWN0TWFrZSgwLCAwLCAyMDAsIDEwMCldOwogICAgIFtjYUxheWVyIHNl
dEFuY2hvclBvaW50OkNHUG9pbnRaZXJvXTsKLSAgICAKLSAgICBDR0NvbG9yUmVmIGNvbG9yID0g
Q0dDb2xvckNyZWF0ZUdlbmVyaWNSR0IoMC41LCAwLjUsIDEsIDEpOwotICAgIFtjYUxheWVyIHNl
dEJhY2tncm91bmRDb2xvcjpjb2xvcl07Ci0gICAgQ0dDb2xvclJlbGVhc2UoY29sb3IpOwotICAg
IAorICAgIFtjYUxheWVyIHNldEJhY2tncm91bmRDb2xvcjphZG9wdENGKENHQ29sb3JDcmVhdGVH
ZW5lcmljUkdCKDAuNSwgMC41LCAxLCAxKSkuZ2V0KCldOwogICAgIFtjYUxheWVyIHNldExheW91
dE1hbmFnZXI6W0NBQ29uc3RyYWludExheW91dE1hbmFnZXIgbGF5b3V0TWFuYWdlcl1dOwogCiAg
ICAgQ0FMYXllciAqc3VibGF5ZXIgPSBbQ0FMYXllciBsYXllcl07CiAgICAgLy8gVHVybiBvZmYg
ZGVmYXVsdCBhbmltYXRpb25zLgogICAgIFtzdWJsYXllciBzZXRTdHlsZTpAeyBAImFjdGlvbnMi
OiBhY3Rpb25zIH1dOwotCi0gICAgY29sb3IgPSBDR0NvbG9yQ3JlYXRlR2VuZXJpY1JHQigwLCAw
LCAwLCAwLjc1KTsKLSAgICBbc3VibGF5ZXIgc2V0QmFja2dyb3VuZENvbG9yOmNvbG9yXTsKLSAg
ICBDR0NvbG9yUmVsZWFzZShjb2xvcik7CisgICAgW3N1YmxheWVyIHNldEJhY2tncm91bmRDb2xv
cjphZG9wdENGKENHQ29sb3JDcmVhdGVHZW5lcmljUkdCKDAsIDAsIDAsIDAuNzUpKS5nZXQoKV07
CiAgICAgW3N1YmxheWVyIHNldEJvdW5kczpDR1JlY3RNYWtlKDAsIDAsIDE4MCwgMjApXTsKIAog
ICAgIFtzdWJsYXllciBhZGRDb25zdHJhaW50OltDQUNvbnN0cmFpbnQgY29uc3RyYWludFdpdGhB
dHRyaWJ1dGU6a0NBQ29uc3RyYWludE1pblkKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL21hYy9BY2Nlc3NpYmlsaXR5Q29tbW9uTWFjLm1tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUv
bWFjL0FjY2Vzc2liaWxpdHlDb21tb25NYWMubW0KaW5kZXggMDMwNjdlMmQwODkyMTRmYmU4NDY2
N2IyODI0ZjhjZTMxNDgwZjk4Ny4uNTg4YzhiMTliZjQwNGMyMjExMDM5OWNjNGE4YzI5MGZiMDZk
YjI3YiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0FjY2Vzc2liaWxpdHlD
b21tb25NYWMubW0KKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0FjY2Vzc2liaWxpdHlD
b21tb25NYWMubW0KQEAgLTQxLDcgKzQxLDcgQEAgKyAoTlNTdHJpbmcgKilzdHJpbmdXaXRoSlNT
dHJpbmdSZWY6KEpTU3RyaW5nUmVmKWpzU3RyaW5nUmVmCiAgICAgaWYgKCFqc1N0cmluZ1JlZikK
ICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAgIHJldHVybiBDRkJyaWRnaW5nUmVsZWFzZShKU1N0
cmluZ0NvcHlDRlN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBqc1N0cmluZ1JlZikpOworICAg
IHJldHVybiBhZG9wdENGKEpTU3RyaW5nQ29weUNGU3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQs
IGpzU3RyaW5nUmVmKSkuYnJpZGdpbmdBdXRvcmVsZWFzZSgpOwogfQogCiAtIChKU1JldGFpblB0
cjxKU1N0cmluZ1JlZj4pY3JlYXRlSlNTdHJpbmdSZWYKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21h
Yy9EdW1wUmVuZGVyVHJlZS5tbQppbmRleCAxNGJkMWU4MGQ2ZWYwOTMyODg5OTM4Y2JkNDViYTQz
MWE3ZmQ1NjA3Li43MzUxMDM5NmE1ODBjOWViYmJjNjRhN2ZlMWJlYzI5ODJjOWY3Y2NlIDEwMDY0
NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0KKysrIGIv
VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tCkBAIC0yMDgsOCArMjA4
LDggQEAgV2ViRnJhbWUgKnRvcExvYWRpbmdGcmFtZSA9IG5pbDsgLy8gIW5pbCBpZmYgYSBsb2Fk
IGlzIGluIHByb2dyZXNzCiBSZXRhaW5QdHI8TlNXaW5kb3c+IG1haW5XaW5kb3c7CiAjZW5kaWYK
IAotQ0ZNdXRhYmxlU2V0UmVmIGRpc2FsbG93ZWRVUkxzPSBudWxscHRyOwotc3RhdGljIENGUnVu
TG9vcFRpbWVyUmVmIHdhaXRUb0R1bXBXYXRjaGRvZzsKK1JldGFpblB0cjxDRk11dGFibGVTZXRS
ZWY+IGRpc2FsbG93ZWRVUkxzID0gbnVsbHB0cjsKK3N0YXRpYyBSZXRhaW5QdHI8Q0ZSdW5Mb29w
VGltZXJSZWY+IHdhaXRUb0R1bXBXYXRjaGRvZzsKIAogc3RhdGljIFJldGFpblB0cjxXZWJWaWV3
PiYgZ2xvYmFsV2ViVmlldygpCiB7CkBAIC01NTAsMjYgKzU1MCwyNCBAQCBzdGF0aWMgdm9pZCBh
ZGp1c3RGb250cygpCiAKIHN0YXRpYyB2b2lkIGFjdGl2YXRlRm9udElPUyhjb25zdCB1aW50OF90
KiBmb250RGF0YSwgdW5zaWduZWQgbG9uZyBsZW5ndGgsIHN0ZDo6c3RyaW5nIHNlY3Rpb25OYW1l
KQogewotICAgIENHRGF0YVByb3ZpZGVyUmVmIGRhdGEgPSBDR0RhdGFQcm92aWRlckNyZWF0ZVdp
dGhEYXRhKG51bGxwdHIsIGZvbnREYXRhLCBsZW5ndGgsIG51bGxwdHIpOworICAgIGF1dG8gZGF0
YSA9IGFkb3B0Q0YoQ0dEYXRhUHJvdmlkZXJDcmVhdGVXaXRoRGF0YShudWxscHRyLCBmb250RGF0
YSwgbGVuZ3RoLCBudWxscHRyKSk7CiAgICAgaWYgKCFkYXRhKSB7CiAgICAgICAgIGZwcmludGYo
c3RkZXJyLCAiRmFpbGVkIHRvIGNyZWF0ZSBDR0RhdGFQcm92aWRlclJlZiBmb3IgdGhlICVzIGZv
bnQuXG4iLCBzZWN0aW9uTmFtZS5jX3N0cigpKTsKICAgICAgICAgZXhpdCgxKTsKICAgICB9CiAK
LSAgICBDR0ZvbnRSZWYgY2dGb250ID0gQ0dGb250Q3JlYXRlV2l0aERhdGFQcm92aWRlcihkYXRh
KTsKLSAgICBDR0RhdGFQcm92aWRlclJlbGVhc2UoZGF0YSk7CisgICAgYXV0byBjZ0ZvbnQgPSBh
ZG9wdENGKENHRm9udENyZWF0ZVdpdGhEYXRhUHJvdmlkZXIoZGF0YS5nZXQoKSkpOwogICAgIGlm
ICghY2dGb250KSB7CiAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiRmFpbGVkIHRvIGNyZWF0ZSBD
R0ZvbnRSZWYgZm9yIHRoZSAlcyBmb250LlxuIiwgc2VjdGlvbk5hbWUuY19zdHIoKSk7CiAgICAg
ICAgIGV4aXQoMSk7CiAgICAgfQogCiAgICAgQ0ZFcnJvclJlZiBlcnJvciA9IG51bGxwdHI7Ci0g
ICAgQ1RGb250TWFuYWdlclJlZ2lzdGVyR3JhcGhpY3NGb250KGNnRm9udCwgJmVycm9yKTsKKyAg
ICBDVEZvbnRNYW5hZ2VyUmVnaXN0ZXJHcmFwaGljc0ZvbnQoY2dGb250LmdldCgpLCAmZXJyb3Ip
OwogICAgIGlmIChlcnJvcikgewogICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkZhaWxlZCB0byBh
ZGQgQ0dGb250IHRvIENvcmVUZXh0IGZvciB0aGUgJXMgZm9udDogJXMuXG4iLCBzZWN0aW9uTmFt
ZS5jX3N0cigpLCBDRlN0cmluZ0dldENTdHJpbmdQdHIoQ0ZFcnJvckNvcHlEZXNjcmlwdGlvbihl
cnJvciksIGtDRlN0cmluZ0VuY29kaW5nVVRGOCkpOwogICAgICAgICBleGl0KDEpOwogICAgIH0K
LSAgICBDR0ZvbnRSZWxlYXNlKGNnRm9udCk7CiB9CiAKIHN0YXRpYyB2b2lkIGFjdGl2YXRlRm9u
dHNJT1MoKQpAQCAtMTI2NSwxMCArMTI2Myw3IEBAIHZvaWQgZHVtcFJlbmRlclRyZWUoaW50IGFy
Z2MsIGNvbnN0IGNoYXIgKmFyZ3ZbXSkKICNlbmRpZgogCiAgICAgLy8gRklYTUU6IFRoaXMgc2hv
dWxkIGJlIG1vdmVkIG9udG8gVGVzdFJ1bm5lciBhbmQgbWFkZSBpbnRvIGEgSGFzaFNldAotICAg
IGlmIChkaXNhbGxvd2VkVVJMcykgewotICAgICAgICBDRlJlbGVhc2UoZGlzYWxsb3dlZFVSTHMp
OwotICAgICAgICBkaXNhbGxvd2VkVVJMcyA9IDA7Ci0gICAgfQorICAgIGRpc2FsbG93ZWRVUkxz
ID0gbnVsbHB0cjsKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgdGVhckRvd25JT1NM
YXlvdXRUZXN0Q29tbXVuaWNhdGlvbigpOwpAQCAtMTYxNSwxOCArMTYxMCwxNyBAQCBzdGF0aWMg
dm9pZCBkdW1wQmFja0ZvcndhcmRMaXN0Rm9yQWxsV2luZG93cygpCiBzdGF0aWMgdm9pZCBpbnZh
bGlkYXRlQW55UHJldmlvdXNXYWl0VG9EdW1wV2F0Y2hkb2coKQogewogICAgIGlmICh3YWl0VG9E
dW1wV2F0Y2hkb2cpIHsKLSAgICAgICAgQ0ZSdW5Mb29wVGltZXJJbnZhbGlkYXRlKHdhaXRUb0R1
bXBXYXRjaGRvZyk7Ci0gICAgICAgIENGUmVsZWFzZSh3YWl0VG9EdW1wV2F0Y2hkb2cpOwotICAg
ICAgICB3YWl0VG9EdW1wV2F0Y2hkb2cgPSBOVUxMOworICAgICAgICBDRlJ1bkxvb3BUaW1lcklu
dmFsaWRhdGUod2FpdFRvRHVtcFdhdGNoZG9nLmdldCgpKTsKKyAgICAgICAgd2FpdFRvRHVtcFdh
dGNoZG9nID0gbnVsbHB0cjsKICAgICB9CiB9CiAKLXZvaWQgc2V0V2FpdFRvRHVtcFdhdGNoZG9n
KENGUnVuTG9vcFRpbWVyUmVmIHRpbWVyKQordm9pZCBzZXRXYWl0VG9EdW1wV2F0Y2hkb2coUmV0
YWluUHRyPENGUnVuTG9vcFRpbWVyUmVmPiYmIHRpbWVyKQogewogICAgIEFTU0VSVCh0aW1lcik7
CiAgICAgQVNTRVJUKHNob3VsZFNldFdhaXRUb0R1bXBXYXRjaGRvZygpKTsKLSAgICB3YWl0VG9E
dW1wV2F0Y2hkb2cgPSB0aW1lcjsKLSAgICBDRlJ1bkxvb3BBZGRUaW1lcihDRlJ1bkxvb3BHZXRD
dXJyZW50KCksIHdhaXRUb0R1bXBXYXRjaGRvZywga0NGUnVuTG9vcENvbW1vbk1vZGVzKTsKKyAg
ICB3YWl0VG9EdW1wV2F0Y2hkb2cgPSBXVEZNb3ZlKHRpbWVyKTsKKyAgICBDRlJ1bkxvb3BBZGRU
aW1lcihDRlJ1bkxvb3BHZXRDdXJyZW50KCksIHdhaXRUb0R1bXBXYXRjaGRvZy5nZXQoKSwga0NG
UnVuTG9vcENvbW1vbk1vZGVzKTsKIH0KIAogYm9vbCBzaG91bGRTZXRXYWl0VG9EdW1wV2F0Y2hk
b2coKQpAQCAtMTY4MywxMSArMTY3NywxMSBAQCB2b2lkIGR1bXAoKQogICAgICAgICAgICAgcmVz
dWx0TWltZVR5cGUgPSBAImFwcGxpY2F0aW9uL3BkZiI7CiAgICAgICAgIH0gZWxzZSBpZiAoZ1Rl
c3RSdW5uZXItPmR1bXBET01Bc1dlYkFyY2hpdmUoKSkgewogICAgICAgICAgICAgV2ViQXJjaGl2
ZSAqd2ViQXJjaGl2ZSA9IFtbbWFpbkZyYW1lIERPTURvY3VtZW50XSB3ZWJBcmNoaXZlXTsKLSAg
ICAgICAgICAgIHJlc3VsdFN0cmluZyA9IENGQnJpZGdpbmdSZWxlYXNlKFdlYkNvcmVUZXN0U3Vw
cG9ydDo6Y3JlYXRlWE1MU3RyaW5nRnJvbVdlYkFyY2hpdmVEYXRhKChfX2JyaWRnZSBDRkRhdGFS
ZWYpW3dlYkFyY2hpdmUgZGF0YV0pKTsKKyAgICAgICAgICAgIHJlc3VsdFN0cmluZyA9IFdlYkNv
cmVUZXN0U3VwcG9ydDo6Y3JlYXRlWE1MU3RyaW5nRnJvbVdlYkFyY2hpdmVEYXRhKChfX2JyaWRn
ZSBDRkRhdGFSZWYpW3dlYkFyY2hpdmUgZGF0YV0pOwogICAgICAgICAgICAgcmVzdWx0TWltZVR5
cGUgPSBAImFwcGxpY2F0aW9uL3gtd2ViYXJjaGl2ZSI7CiAgICAgICAgIH0gZWxzZSBpZiAoZ1Rl
c3RSdW5uZXItPmR1bXBTb3VyY2VBc1dlYkFyY2hpdmUoKSkgewogICAgICAgICAgICAgV2ViQXJj
aGl2ZSAqd2ViQXJjaGl2ZSA9IFtbbWFpbkZyYW1lIGRhdGFTb3VyY2VdIHdlYkFyY2hpdmVdOwot
ICAgICAgICAgICAgcmVzdWx0U3RyaW5nID0gQ0ZCcmlkZ2luZ1JlbGVhc2UoV2ViQ29yZVRlc3RT
dXBwb3J0OjpjcmVhdGVYTUxTdHJpbmdGcm9tV2ViQXJjaGl2ZURhdGEoKF9fYnJpZGdlIENGRGF0
YVJlZilbd2ViQXJjaGl2ZSBkYXRhXSkpOworICAgICAgICAgICAgcmVzdWx0U3RyaW5nID0gV2Vi
Q29yZVRlc3RTdXBwb3J0OjpjcmVhdGVYTUxTdHJpbmdGcm9tV2ViQXJjaGl2ZURhdGEoKF9fYnJp
ZGdlIENGRGF0YVJlZilbd2ViQXJjaGl2ZSBkYXRhXSk7CiAgICAgICAgICAgICByZXN1bHRNaW1l
VHlwZSA9IEAiYXBwbGljYXRpb24veC13ZWJhcmNoaXZlIjsKICAgICAgICAgfSBlbHNlIGlmIChn
VGVzdFJ1bm5lci0+aXNQcmludGluZygpKQogICAgICAgICAgICAgcmVzdWx0U3RyaW5nID0gW21h
aW5GcmFtZSByZW5kZXJUcmVlQXNFeHRlcm5hbFJlcHJlc2VudGF0aW9uRm9yUHJpbnRpbmddOwpA
QCAtMTk4Miw3ICsxOTc2LDcgQEAgc3RhdGljIHZvaWQgcnVuVGVzdChjb25zdCBzdGQ6OnN0cmlu
ZyYgaW5wdXRMaW5lKQogICAgIGdUZXN0UnVubmVyLT5jbGVhckFsbERhdGFiYXNlcygpOwogCiAg
ICAgaWYgKGRpc2FsbG93ZWRVUkxzKQotICAgICAgICBDRlNldFJlbW92ZUFsbFZhbHVlcyhkaXNh
bGxvd2VkVVJMcyk7CisgICAgICAgIENGU2V0UmVtb3ZlQWxsVmFsdWVzKGRpc2FsbG93ZWRVUkxz
LmdldCgpKTsKICAgICBpZiAoc2hvdWxkTG9nRnJhbWVMb2FkRGVsZWdhdGVzKHBhdGhPclVSTC5j
X3N0cigpKSkKICAgICAgICAgZ1Rlc3RSdW5uZXItPnNldER1bXBGcmFtZUxvYWRDYWxsYmFja3Mo
dHJ1ZSk7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVy
VHJlZU1hYy5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlTWFjLmgK
aW5kZXggM2Q0MWI1Yjc0YmI3MjhhNTEyZGU5NjdkOTk1OGYwNjg4MmQ4NTYzYy4uNGQ5ZDFkMmQ3
MDczN2UwYTE5ZDNjNDQ5M2U3OWZjNDg1M2QxNmI5YyAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJl
bmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlTWFjLmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvbWFjL0R1bXBSZW5kZXJUcmVlTWFjLmgKQEAgLTQ0LDEwICs0NCwxMCBAQCBPQkpDX0NMQVNT
IFdlYlNjcmlwdFdvcmxkOwogT0JKQ19DTEFTUyBXZWJWaWV3OwogCiBleHRlcm4gQ0ZNdXRhYmxl
QXJyYXlSZWYgb3BlbldpbmRvd3NSZWY7Ci1leHRlcm4gQ0ZNdXRhYmxlU2V0UmVmIGRpc2FsbG93
ZWRVUkxzOwogZXh0ZXJuIFdlYkZyYW1lKiBtYWluRnJhbWU7CiBleHRlcm4gV2ViRnJhbWUqIHRv
cExvYWRpbmdGcmFtZTsKICNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuIFJldGFpblB0cjxDRk11
dGFibGVTZXRSZWY+IGRpc2FsbG93ZWRVUkxzOwogZXh0ZXJuIFJldGFpblB0cjxEdW1wUmVuZGVy
VHJlZURyYWdnaW5nSW5mbz4gZHJhZ2dpbmdJbmZvOwogZXh0ZXJuIFJldGFpblB0cjxOYXZpZ2F0
aW9uQ29udHJvbGxlcj4gZ05hdmlnYXRpb25Db250cm9sbGVyOwogZXh0ZXJuIFJldGFpblB0cjxQ
b2xpY3lEZWxlZ2F0ZT4gcG9saWN5RGVsZWdhdGU7CkBAIC02MCw5ICs2MCwxMCBAQCBleHRlcm4g
UmV0YWluUHRyPFVJV2luZG93PiBtYWluV2luZG93OwogT0JKQ19DTEFTUyBOU1dpbmRvdzsKIGV4
dGVybiBSZXRhaW5QdHI8TlNXaW5kb3c+IG1haW5XaW5kb3c7CiAjZW5kaWYKLSNlbmRpZgogCi12
b2lkIHNldFdhaXRUb0R1bXBXYXRjaGRvZyhDRlJ1bkxvb3BUaW1lclJlZik7Cit2b2lkIHNldFdh
aXRUb0R1bXBXYXRjaGRvZyhSZXRhaW5QdHI8Q0ZSdW5Mb29wVGltZXJSZWY+JiYpOworI2VuZGlm
IC8vIF9fY3BsdXNwbHVzCisKIGJvb2wgc2hvdWxkU2V0V2FpdFRvRHVtcFdhdGNoZG9nKHZvaWQp
OwogCiAjaWZkZWYgX19jcGx1c3BsdXMKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L21hYy9FdmVudFNlbmRpbmdDb250cm9sbGVyLm1tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFj
L0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIubW0KaW5kZXggMTZhNjA1MWJiN2ZiNjRiOWRmMGFhOWUz
NzMyMmI4OWIwMTFkNzU3MC4uYjg3OTQyYjNjNmM5MjVmNDM1NWY1ZTUzNzNhNWY2ZGVlZjBmZjA2
MSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0V2ZW50U2VuZGluZ0NvbnRy
b2xsZXIubW0KKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0V2ZW50U2VuZGluZ0NvbnRy
b2xsZXIubW0KQEAgLTgwOSwxNiArODA5LDE1IEBAIC0gKHZvaWQpbW91c2VTY3JvbGxCeVg6KGlu
dCl4IGFuZFk6KGludCl5IGNvbnRpbnVvdXNseTooQk9PTCljb250aW51b3VzbHkKIHsKICNpZiAh
UExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBDR1Njcm9sbEV2ZW50VW5pdCB1bml0ID0gY29udGlu
dW91c2x5ID8ga0NHU2Nyb2xsRXZlbnRVbml0UGl4ZWwgOiBrQ0dTY3JvbGxFdmVudFVuaXRMaW5l
OwotICAgIENHRXZlbnRSZWYgY2dTY3JvbGxFdmVudCA9IENHRXZlbnRDcmVhdGVTY3JvbGxXaGVl
bEV2ZW50MihOVUxMLCB1bml0LCAyLCB5LCB4LCAwKTsKKyAgICBhdXRvIGNnU2Nyb2xsRXZlbnQg
PSBhZG9wdENGKENHRXZlbnRDcmVhdGVTY3JvbGxXaGVlbEV2ZW50MihOVUxMLCB1bml0LCAyLCB5
LCB4LCAwKSk7CiAgICAgCiAgICAgLy8gU2V0IHRoZSBDR0V2ZW50IGxvY2F0aW9uIGluIGZsaXBw
ZWQgY29vcmRzIHJlbGF0aXZlIHRvIHRoZSBmaXJzdCBzY3JlZW4sIHdoaWNoCiAgICAgLy8gY29t
cGVuc2F0ZXMgZm9yIHRoZSBiZWhhdmlvciBvZiArW05TRXZlbnQgZXZlbnRXaXRoQ0dFdmVudDpd
IHdoZW4gdGhlIGV2ZW50IGhhcwogICAgIC8vIG5vIGFzc29jaWF0ZWQgd2luZG93LiBTZWUgPHJk
YXI6Ly9wcm9ibGVtLzE3MTgwNTkxPi4KICAgICBDR1BvaW50IGxhc3RHbG9iYWxNb3VzZVBvc2l0
aW9uID0gQ0dQb2ludE1ha2UobGFzdE1vdXNlUG9zaXRpb24ueCwgW1tbTlNTY3JlZW4gc2NyZWVu
c10gb2JqZWN0QXRJbmRleDowXSBmcmFtZV0uc2l6ZS5oZWlnaHQgLSBsYXN0TW91c2VQb3NpdGlv
bi55KTsKLSAgICBDR0V2ZW50U2V0TG9jYXRpb24oY2dTY3JvbGxFdmVudCwgbGFzdEdsb2JhbE1v
dXNlUG9zaXRpb24pOworICAgIENHRXZlbnRTZXRMb2NhdGlvbihjZ1Njcm9sbEV2ZW50LmdldCgp
LCBsYXN0R2xvYmFsTW91c2VQb3NpdGlvbik7CiAKLSAgICBOU0V2ZW50ICpzY3JvbGxFdmVudCA9
IFtOU0V2ZW50IGV2ZW50V2l0aENHRXZlbnQ6Y2dTY3JvbGxFdmVudF07Ci0gICAgQ0ZSZWxlYXNl
KGNnU2Nyb2xsRXZlbnQpOworICAgIE5TRXZlbnQgKnNjcm9sbEV2ZW50ID0gW05TRXZlbnQgZXZl
bnRXaXRoQ0dFdmVudDpjZ1Njcm9sbEV2ZW50LmdldCgpXTsKIAogICAgIE5TVmlldyAqc3ViVmll
dyA9IFtbbWFpbkZyYW1lIHdlYlZpZXddIGhpdFRlc3Q6W3Njcm9sbEV2ZW50IGxvY2F0aW9uSW5X
aW5kb3ddXTsKICAgICBpZiAoc3ViVmlldykgewpAQCAtODc1LDE5ICs4NzQsMTggQEAgLSAodm9p
ZCltb3VzZVNjcm9sbEJ5WDooaW50KXggYW5kWTooaW50KXkgd2l0aFdoZWVsOihOU1N0cmluZyop
cGhhc2VOYW1lIGFuZE1vbWUKICAgICBpZiAobW9tZW50dW0gPT0ga0NHTW9tZW50dW1TY3JvbGxQ
aGFzZUVuZCkKICAgICAgICAgX3NlbnRNb21lbnR1bVBoYXNlRW5kID0gWUVTOwogCi0gICAgQ0dF
dmVudFJlZiBjZ1Njcm9sbEV2ZW50ID0gQ0dFdmVudENyZWF0ZVNjcm9sbFdoZWVsRXZlbnQyKE5V
TEwsIGtDR1Njcm9sbEV2ZW50VW5pdExpbmUsIDIsIHksIHgsIDApOworICAgIGF1dG8gY2dTY3Jv
bGxFdmVudCA9IGFkb3B0Q0YoQ0dFdmVudENyZWF0ZVNjcm9sbFdoZWVsRXZlbnQyKE5VTEwsIGtD
R1Njcm9sbEV2ZW50VW5pdExpbmUsIDIsIHksIHgsIDApKTsKIAogICAgIC8vIFNldCB0aGUgQ0dF
dmVudCBsb2NhdGlvbiBpbiBmbGlwcGVkIGNvb3JkcyByZWxhdGl2ZSB0byB0aGUgZmlyc3Qgc2Ny
ZWVuLCB3aGljaAogICAgIC8vIGNvbXBlbnNhdGVzIGZvciB0aGUgYmVoYXZpb3Igb2YgK1tOU0V2
ZW50IGV2ZW50V2l0aENHRXZlbnQ6XSB3aGVuIHRoZSBldmVudCBoYXMKICAgICAvLyBubyBhc3Nv
Y2lhdGVkIHdpbmRvdy4gU2VlIDxyZGFyOi8vcHJvYmxlbS8xNzE4MDU5MT4uCiAgICAgQ0dQb2lu
dCBsYXN0R2xvYmFsTW91c2VQb3NpdGlvbiA9IENHUG9pbnRNYWtlKGxhc3RNb3VzZVBvc2l0aW9u
LngsIFtbW05TU2NyZWVuIHNjcmVlbnNdIG9iamVjdEF0SW5kZXg6MF0gZnJhbWVdLnNpemUuaGVp
Z2h0IC0gbGFzdE1vdXNlUG9zaXRpb24ueSk7Ci0gICAgQ0dFdmVudFNldExvY2F0aW9uKGNnU2Ny
b2xsRXZlbnQsIGxhc3RHbG9iYWxNb3VzZVBvc2l0aW9uKTsKLSAgICBDR0V2ZW50U2V0SW50ZWdl
clZhbHVlRmllbGQoY2dTY3JvbGxFdmVudCwga0NHU2Nyb2xsV2hlZWxFdmVudElzQ29udGludW91
cywgMSk7Ci0gICAgQ0dFdmVudFNldEludGVnZXJWYWx1ZUZpZWxkKGNnU2Nyb2xsRXZlbnQsIGtD
R1Njcm9sbFdoZWVsRXZlbnRTY3JvbGxQaGFzZSwgcGhhc2UpOwotICAgIENHRXZlbnRTZXRJbnRl
Z2VyVmFsdWVGaWVsZChjZ1Njcm9sbEV2ZW50LCBrQ0dTY3JvbGxXaGVlbEV2ZW50TW9tZW50dW1Q
aGFzZSwgbW9tZW50dW0pOworICAgIENHRXZlbnRTZXRMb2NhdGlvbihjZ1Njcm9sbEV2ZW50Lmdl
dCgpLCBsYXN0R2xvYmFsTW91c2VQb3NpdGlvbik7CisgICAgQ0dFdmVudFNldEludGVnZXJWYWx1
ZUZpZWxkKGNnU2Nyb2xsRXZlbnQuZ2V0KCksIGtDR1Njcm9sbFdoZWVsRXZlbnRJc0NvbnRpbnVv
dXMsIDEpOworICAgIENHRXZlbnRTZXRJbnRlZ2VyVmFsdWVGaWVsZChjZ1Njcm9sbEV2ZW50Lmdl
dCgpLCBrQ0dTY3JvbGxXaGVlbEV2ZW50U2Nyb2xsUGhhc2UsIHBoYXNlKTsKKyAgICBDR0V2ZW50
U2V0SW50ZWdlclZhbHVlRmllbGQoY2dTY3JvbGxFdmVudC5nZXQoKSwga0NHU2Nyb2xsV2hlZWxF
dmVudE1vbWVudHVtUGhhc2UsIG1vbWVudHVtKTsKICAgICAKLSAgICBOU0V2ZW50KiBzY3JvbGxF
dmVudCA9IFtOU0V2ZW50IGV2ZW50V2l0aENHRXZlbnQ6Y2dTY3JvbGxFdmVudF07Ci0gICAgQ0ZS
ZWxlYXNlKGNnU2Nyb2xsRXZlbnQpOworICAgIE5TRXZlbnQqIHNjcm9sbEV2ZW50ID0gW05TRXZl
bnQgZXZlbnRXaXRoQ0dFdmVudDpjZ1Njcm9sbEV2ZW50LmdldCgpXTsKIAogICAgIGlmIChOU1Zp
ZXcqIHRhcmdldFZpZXcgPSBbW21haW5GcmFtZSB3ZWJWaWV3XSBoaXRUZXN0OltzY3JvbGxFdmVu
dCBsb2NhdGlvbkluV2luZG93XV0pIHsKICAgICAgICAgW05TQXBwIF9zZXRDdXJyZW50RXZlbnQ6
c2Nyb2xsRXZlbnRdOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1BpeGVs
RHVtcFN1cHBvcnRNYWMubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvUGl4ZWxEdW1wU3Vw
cG9ydE1hYy5tbQppbmRleCBhYzMyODFhNGRmM2UwMjM1NjcxODgwN2YwYWQ3ODJiZjFkNzQ0YmI3
Li40YTI2YWE1MzE2NTA2MmMwYjgwMmI4MGMzNTU5YTZmYWRlMTBkNGVmIDEwMDY0NAotLS0gYS9U
b29scy9EdW1wUmVuZGVyVHJlZS9tYWMvUGl4ZWxEdW1wU3VwcG9ydE1hYy5tbQorKysgYi9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9tYWMvUGl4ZWxEdW1wU3VwcG9ydE1hYy5tbQpAQCAtNzksMTAgKzc5
LDEwIEBAIHN0YXRpYyB2b2lkIHBhaW50UmVwYWludFJlY3RPdmVybGF5KFdlYlZpZXcqIHdlYlZp
ZXcsIENHQ29udGV4dFJlZiBjb250ZXh0KQogICAgIENHQ29udGV4dFJlc3RvcmVHU3RhdGUoY29u
dGV4dCk7CiB9CiAKLXN0YXRpYyBDR0ltYWdlUmVmIHRha2VXaW5kb3dTbmFwc2hvdChDR1NXaW5k
b3dJRCB3aW5kb3dJRCwgQ0dXaW5kb3dJbWFnZU9wdGlvbiBpbWFnZU9wdGlvbnMpIENGX1JFVFVS
TlNfUkVUQUlORUQKK3N0YXRpYyBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gdGFrZVdpbmRvd1NuYXBz
aG90KENHU1dpbmRvd0lEIHdpbmRvd0lELCBDR1dpbmRvd0ltYWdlT3B0aW9uIGltYWdlT3B0aW9u
cykKIHsKICAgICBpbWFnZU9wdGlvbnMgfD0ga0NHV2luZG93SW1hZ2VCb3VuZHNJZ25vcmVGcmFt
aW5nIHwga0NHV2luZG93SW1hZ2VTaG91bGRCZU9wYXF1ZTsKLSAgICByZXR1cm4gQ0dXaW5kb3dM
aXN0Q3JlYXRlSW1hZ2UoQ0dSZWN0TnVsbCwga0NHV2luZG93TGlzdE9wdGlvbkluY2x1ZGluZ1dp
bmRvdywgd2luZG93SUQsIGltYWdlT3B0aW9ucyk7CisgICAgcmV0dXJuIGFkb3B0Q0YoQ0dXaW5k
b3dMaXN0Q3JlYXRlSW1hZ2UoQ0dSZWN0TnVsbCwga0NHV2luZG93TGlzdE9wdGlvbkluY2x1ZGlu
Z1dpbmRvdywgd2luZG93SUQsIGltYWdlT3B0aW9ucykpOwogfQogCiBSZWZQdHI8Qml0bWFwQ29u
dGV4dD4gY3JlYXRlQml0bWFwQ29udGV4dEZyb21XZWJWaWV3KGJvb2wgb25zY3JlZW4sIGJvb2wg
aW5jcmVtZW50YWxSZXBhaW50LCBib29sIHN3ZWVwSG9yaXpvbnRhbGx5LCBib29sIGRyYXdTZWxl
Y3Rpb25SZWN0KQpAQCAtMTMyLDIyICsxMzIsMTkgQEAgUmVmUHRyPEJpdG1hcENvbnRleHQ+IGNy
ZWF0ZUJpdG1hcENvbnRleHRGcm9tV2ViVmlldyhib29sIG9uc2NyZWVuLCBib29sIGluY3JlbWUK
ICAgICAgICAgICAgIC8vIEFzayB0aGUgd2luZG93IHNlcnZlciB0byBwcm92aWRlIHVzIGEgY29t
cG9zaXRlZCB2ZXJzaW9uIG9mIHRoZSAqcmVhbCogd2luZG93IGNvbnRlbnQgaW5jbHVkaW5nIHN1
cmZhY2VzIChpLmUuIE9wZW5HTCBjb250ZW50KQogICAgICAgICAgICAgLy8gTm90ZSB0aGF0IHRo
ZSByZXR1cm5lZCBpbWFnZSBtaWdodCBkaWZmZXIgdmVyeSBzbGlnaHRseSBmcm9tIHRoZSB3aW5k
b3cgYmFja2luZyBiZWNhdXNlIG9mIGRpdGhlcmluZyBhcnRpZmFjdHMgaW4gdGhlIHdpbmRvdyBz
ZXJ2ZXIgY29tcG9zaXRvci4KICAgICAgICAgICAgIE5TV2luZG93ICp3aW5kb3cgPSBbdmlldyB3
aW5kb3ddOwotICAgICAgICAgICAgQ0dJbWFnZVJlZiBpbWFnZSA9IHRha2VXaW5kb3dTbmFwc2hv
dChbd2luZG93IHdpbmRvd051bWJlcl0sIGtDR1dpbmRvd0ltYWdlRGVmYXVsdCk7CisgICAgICAg
ICAgICBhdXRvIGltYWdlID0gdGFrZVdpbmRvd1NuYXBzaG90KFt3aW5kb3cgd2luZG93TnVtYmVy
XSwga0NHV2luZG93SW1hZ2VEZWZhdWx0KTsKIAogICAgICAgICAgICAgaWYgKGltYWdlKSB7CiAg
ICAgICAgICAgICAgICAgLy8gV29yayBhcm91bmQgPHJkYXI6Ly9wcm9ibGVtLzE3MDg0OTkzPjsg
cmUtcmVxdWVzdCB0aGUgc25hcHNob3QgYXQga0NHV2luZG93SW1hZ2VOb21pbmFsUmVzb2x1dGlv
biBpZiBpdCB3YXMgY2FwdHVyZWQgYXQgdGhlIHdyb25nIHNjYWxlLgogICAgICAgICAgICAgICAg
IENHRmxvYXQgZGVzaXJlZFNuYXBzaG90V2lkdGggPSB3aW5kb3cuZnJhbWUuc2l6ZS53aWR0aCAq
IGRldmljZVNjYWxlRmFjdG9yOwotICAgICAgICAgICAgICAgIGlmIChDR0ltYWdlR2V0V2lkdGgo
aW1hZ2UpICE9IGRlc2lyZWRTbmFwc2hvdFdpZHRoKSB7Ci0gICAgICAgICAgICAgICAgICAgIENH
SW1hZ2VSZWxlYXNlKGltYWdlKTsKKyAgICAgICAgICAgICAgICBpZiAoQ0dJbWFnZUdldFdpZHRo
KGltYWdlLmdldCgpKSAhPSBkZXNpcmVkU25hcHNob3RXaWR0aCkKICAgICAgICAgICAgICAgICAg
ICAgaW1hZ2UgPSB0YWtlV2luZG93U25hcHNob3QoW3dpbmRvdyB3aW5kb3dOdW1iZXJdLCBrQ0dX
aW5kb3dJbWFnZU5vbWluYWxSZXNvbHV0aW9uKTsKLSAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICB9CiAKICAgICAgICAgICAgIGlmICghaW1hZ2UpCiAgICAgICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKLSAgICAgICAgICAgIENHQ29udGV4dERyYXdJbWFnZShjb250ZXh0LCBDR1Jl
Y3RNYWtlKDAsIDAsIENHSW1hZ2VHZXRXaWR0aChpbWFnZSksIENHSW1hZ2VHZXRIZWlnaHQoaW1h
Z2UpKSwgaW1hZ2UpOwotICAgICAgICAgICAgQ0dJbWFnZVJlbGVhc2UoaW1hZ2UpOworICAgICAg
ICAgICAgQ0dDb250ZXh0RHJhd0ltYWdlKGNvbnRleHQsIENHUmVjdE1ha2UoMCwgMCwgQ0dJbWFn
ZUdldFdpZHRoKGltYWdlLmdldCgpKSwgQ0dJbWFnZUdldEhlaWdodChpbWFnZS5nZXQoKSkpLCBp
bWFnZS5nZXQoKSk7CiAKICAgICAgICAgICAgIGlmIChbdmlldyBpc1RyYWNraW5nUmVwYWludHNd
KQogICAgICAgICAgICAgICAgIHBhaW50UmVwYWludFJlY3RPdmVybGF5KHZpZXcsIGNvbnRleHQp
OwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1Jlc291cmNlTG9hZERlbGVn
YXRlLm1tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1Jlc291cmNlTG9hZERlbGVnYXRlLm1t
CmluZGV4IDUzOWQxNmE4YTBjZmJiYWZhMGUzNDAxZjY0ODM5ZTAyOWJhZjMyOTAuLjBhODMyYTlk
ZDYwNTliNjY1ZGY3ODk1NTkzODMyNDY4OGE5MzkyODMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL21hYy9SZXNvdXJjZUxvYWREZWxlZ2F0ZS5tbQorKysgYi9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9tYWMvUmVzb3VyY2VMb2FkRGVsZWdhdGUubW0KQEAgLTE3Miw3ICsxNzIsNyBAQCAt
KE5TVVJMUmVxdWVzdCAqKXdlYlZpZXc6IChXZWJWaWV3ICopd3YgcmVzb3VyY2U6aWRlbnRpZmll
ciB3aWxsU2VuZFJlcXVlc3Q6IChOUwogICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKGRpc2Fs
bG93ZWRVUkxzICYmIENGU2V0Q29udGFpbnNWYWx1ZShkaXNhbGxvd2VkVVJMcywgKF9fYnJpZGdl
IENGVVJMUmVmKXVybCkpCisgICAgaWYgKGRpc2FsbG93ZWRVUkxzICYmIENGU2V0Q29udGFpbnNW
YWx1ZShkaXNhbGxvd2VkVVJMcy5nZXQoKSwgKF9fYnJpZGdlIENGVVJMUmVmKXVybCkpCiAgICAg
ICAgIHJldHVybiBuaWw7CiAKICAgICBhdXRvIG5ld1JlcXVlc3QgPSBhZG9wdE5TKFtyZXF1ZXN0
IG11dGFibGVDb3B5XSk7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVGVz
dFJ1bm5lck1hYy5tbSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9UZXN0UnVubmVyTWFjLm1t
CmluZGV4IDI0Y2UyMmY3ZmRhNzZkNTVmODZlNmE1ZDRhMWZiYmJhOGVjMmI2MGYuLjA5ZGMyYzQ1
NTg1ZjAwN2YwNTYxNjUxZDE3MGVjNDM0ZTVkZmVlZjcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL21hYy9UZXN0UnVubmVyTWFjLm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L21hYy9UZXN0UnVubmVyTWFjLm1tCkBAIC0xMzcsMTMgKzEzNywxMyBAQCB2b2lkIFRlc3RSdW5u
ZXI6OmFkZERpc2FsbG93ZWRVUkwoSlNTdHJpbmdSZWYgdXJsKQogICAgIFJldGFpblB0cjxDRlN0
cmluZ1JlZj4gdXJsQ0YgPSBhZG9wdENGKEpTU3RyaW5nQ29weUNGU3RyaW5nKGtDRkFsbG9jYXRv
ckRlZmF1bHQsIHVybCkpOwogCiAgICAgaWYgKCFkaXNhbGxvd2VkVVJMcykKLSAgICAgICAgZGlz
YWxsb3dlZFVSTHMgPSBDRlNldENyZWF0ZU11dGFibGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgMCwg
TlVMTCk7CisgICAgICAgIGRpc2FsbG93ZWRVUkxzID0gYWRvcHRDRihDRlNldENyZWF0ZU11dGFi
bGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgMCwgTlVMTCkpOwogCiAgICAgLy8gQ2Fub25pY2FsaXpl
IHRoZSBVUkwKICAgICBOU1VSTFJlcXVlc3QgKnJlcXVlc3QgPSBbTlNVUkxSZXF1ZXN0IHJlcXVl
c3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOihfX2JyaWRnZSBOU1N0cmluZyAqKXVybENG
LmdldCgpXV07CiAgICAgcmVxdWVzdCA9IFtOU1VSTFByb3RvY29sIGNhbm9uaWNhbFJlcXVlc3RG
b3JSZXF1ZXN0OnJlcXVlc3RdOwogCi0gICAgQ0ZTZXRBZGRWYWx1ZShkaXNhbGxvd2VkVVJMcywg
KF9fYnJpZGdlIENGVVJMUmVmKVtyZXF1ZXN0IFVSTF0pOworICAgIENGU2V0QWRkVmFsdWUoZGlz
YWxsb3dlZFVSTHMuZ2V0KCksIChfX2JyaWRnZSBDRlVSTFJlZilbcmVxdWVzdCBVUkxdKTsKIH0K
IAogYm9vbCBUZXN0UnVubmVyOjpjYWxsU2hvdWxkQ2xvc2VPbldlYlZpZXcoKQpAQCAtNTc3LDcg
KzU3Nyw3IEBAIHZvaWQgVGVzdFJ1bm5lcjo6c2V0V2FpdFRvRHVtcChib29sIHdhaXRVbnRpbERv
bmUpCiB7CiAgICAgbV93YWl0VG9EdW1wID0gd2FpdFVudGlsRG9uZTsKICAgICBpZiAobV93YWl0
VG9EdW1wICYmIG1fdGltZW91dCAmJiBzaG91bGRTZXRXYWl0VG9EdW1wV2F0Y2hkb2coKSkKLSAg
ICAgICAgc2V0V2FpdFRvRHVtcFdhdGNoZG9nKENGUnVuTG9vcFRpbWVyQ3JlYXRlKGtDRkFsbG9j
YXRvckRlZmF1bHQsIENGQWJzb2x1dGVUaW1lR2V0Q3VycmVudCgpICsgbV90aW1lb3V0IC8gMTAw
MC4wLCAwLCAwLCAwLCB3YWl0VW50aWxEb25lV2F0Y2hkb2dGaXJlZCwgTlVMTCkpOworICAgICAg
ICBzZXRXYWl0VG9EdW1wV2F0Y2hkb2coYWRvcHRDRihDRlJ1bkxvb3BUaW1lckNyZWF0ZShrQ0ZB
bGxvY2F0b3JEZWZhdWx0LCBDRkFic29sdXRlVGltZUdldEN1cnJlbnQoKSArIG1fdGltZW91dCAv
IDEwMDAuMCwgMCwgMCwgMCwgd2FpdFVudGlsRG9uZVdhdGNoZG9nRmlyZWQsIE5VTEwpKSk7CiB9
CiAKIGludCBUZXN0UnVubmVyOjp3aW5kb3dDb3VudCgpCmRpZmYgLS1naXQgYS9Ub29scy9Gb250
V2l0aEZlYXR1cmVzL0ZvbnRXaXRoRmVhdHVyZXMvbWFpbi5jcHAgYi9Ub29scy9Gb250V2l0aEZl
YXR1cmVzL0ZvbnRXaXRoRmVhdHVyZXMvbWFpbi5jcHAKaW5kZXggYzRlY2Q3NjU4NGI4ZTdhN2Ix
N2Y3ZGM0YjQyMDEwNTRiYTVmYjFhZC4uMGQ4Yzg5NWM2OGViMDBkYjdlMGU1YWZkNWUzOGExNWNj
YTJlZmVhOCAxMDA2NDQKLS0tIGEvVG9vbHMvRm9udFdpdGhGZWF0dXJlcy9Gb250V2l0aEZlYXR1
cmVzL21haW4uY3BwCisrKyBiL1Rvb2xzL0ZvbnRXaXRoRmVhdHVyZXMvRm9udFdpdGhGZWF0dXJl
cy9tYWluLmNwcApAQCAtMzIsNTAgKzMyLDM5IEBACiAjaW5jbHVkZSA8SW1hZ2VJTy9JbWFnZUlP
Lmg+CiAjaW5jbHVkZSA8ZnN0cmVhbT4KIAotc3RhdGljIENURm9udERlc2NyaXB0b3JSZWYgY29u
c3RydWN0Rm9udFdpdGhUcnVlVHlwZUZlYXR1cmUoQ1RGb250RGVzY3JpcHRvclJlZiBmb250RGVz
Y3JpcHRvciwgaW50IHR5cGUsIGludCBzZWxlY3RvcikKK3N0YXRpYyBSZXRhaW5QdHI8Q1RGb250
RGVzY3JpcHRvclJlZj4gY29uc3RydWN0Rm9udFdpdGhUcnVlVHlwZUZlYXR1cmUoQ1RGb250RGVz
Y3JpcHRvclJlZiBmb250RGVzY3JpcHRvciwgaW50IHR5cGUsIGludCBzZWxlY3RvcikKIHsKLSAg
ICBDRk51bWJlclJlZiB0eXBlVmFsdWUgPSBDRk51bWJlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZh
dWx0LCBrQ0ZOdW1iZXJJbnRUeXBlLCAmdHlwZSk7Ci0gICAgQ0ZOdW1iZXJSZWYgc2VsZWN0b3JW
YWx1ZSA9IENGTnVtYmVyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGtDRk51bWJlckludFR5
cGUsICZzZWxlY3Rvcik7CisgICAgYXV0byB0eXBlVmFsdWUgPSBhZG9wdENGKENGTnVtYmVyQ3Jl
YXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGtDRk51bWJlckludFR5cGUsICZ0eXBlKSk7CisgICAg
YXV0byBzZWxlY3RvclZhbHVlID0gYWRvcHRDRihDRk51bWJlckNyZWF0ZShrQ0ZBbGxvY2F0b3JE
ZWZhdWx0LCBrQ0ZOdW1iZXJJbnRUeXBlLCAmc2VsZWN0b3IpKTsKICAgICBDRlR5cGVSZWYgZmVh
dHVyZURpY3Rpb25hcnlLZXlzW10gPSB7IGtDVEZvbnRGZWF0dXJlVHlwZUlkZW50aWZpZXJLZXks
IGtDVEZvbnRGZWF0dXJlU2VsZWN0b3JJZGVudGlmaWVyS2V5IH07Ci0gICAgQ0ZUeXBlUmVmIGZl
YXR1cmVEaWN0aW9uYXJ5VmFsdWVzW10gPSB7IHR5cGVWYWx1ZSwgc2VsZWN0b3JWYWx1ZSB9Owot
ICAgIENGRGljdGlvbmFyeVJlZiBmZWF0dXJlRGljdGlvbmFyeSA9IENGRGljdGlvbmFyeUNyZWF0
ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBmZWF0dXJlRGljdGlvbmFyeUtleXMsIGZlYXR1cmVEaWN0
aW9uYXJ5VmFsdWVzLCAyLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBl
RGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKTsKLSAgICBDRlJlbGVhc2UodHlwZVZhbHVlKTsKLSAg
ICBDRlJlbGVhc2Uoc2VsZWN0b3JWYWx1ZSk7CisgICAgQ0ZUeXBlUmVmIGZlYXR1cmVEaWN0aW9u
YXJ5VmFsdWVzW10gPSB7IHR5cGVWYWx1ZS5nZXQoKSwgc2VsZWN0b3JWYWx1ZS5nZXQoKSB9Owor
ICAgIGF1dG8gZmVhdHVyZURpY3Rpb25hcnkgPSBhZG9wdENGKENGRGljdGlvbmFyeUNyZWF0ZShr
Q0ZBbGxvY2F0b3JEZWZhdWx0LCBmZWF0dXJlRGljdGlvbmFyeUtleXMsIGZlYXR1cmVEaWN0aW9u
YXJ5VmFsdWVzLCAyLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGlj
dGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7CiAKLSAgICBDRlR5cGVSZWYgZmVhdHVyZVNldHRpbmdz
VmFsdWVzW10gPSB7IGZlYXR1cmVEaWN0aW9uYXJ5IH07Ci0gICAgQ0ZBcnJheVJlZiBmb250RmVh
dHVyZVNldHRpbmdzID0gQ0ZBcnJheUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBmZWF0dXJl
U2V0dGluZ3NWYWx1ZXMsIDEsICZrQ0ZUeXBlQXJyYXlDYWxsQmFja3MpOwotICAgIENGUmVsZWFz
ZShmZWF0dXJlRGljdGlvbmFyeSk7CisgICAgQ0ZUeXBlUmVmIGZlYXR1cmVTZXR0aW5nc1ZhbHVl
c1tdID0geyBmZWF0dXJlRGljdGlvbmFyeS5nZXQoKSB9OworICAgIGF1dG8gZm9udEZlYXR1cmVT
ZXR0aW5ncyA9IGFkb3B0Q0YoQ0ZBcnJheUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBmZWF0
dXJlU2V0dGluZ3NWYWx1ZXMsIDEsICZrQ0ZUeXBlQXJyYXlDYWxsQmFja3MpKTsKIAogICAgIENG
VHlwZVJlZiBmb250RGVzY3JpcHRvcktleXNbXSA9IHsga0NURm9udEZlYXR1cmVTZXR0aW5nc0F0
dHJpYnV0ZSB9OwotICAgIENGVHlwZVJlZiBmb250RGVzY3JpcHRvclZhbHVlc1tdID0geyBmb250
RmVhdHVyZVNldHRpbmdzIH07Ci0gICAgQ0ZEaWN0aW9uYXJ5UmVmIGZvbnREZXNjcmlwdG9yQXR0
cmlidXRlcyA9IENGRGljdGlvbmFyeUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBmb250RGVz
Y3JpcHRvcktleXMsIGZvbnREZXNjcmlwdG9yVmFsdWVzLCAxLCAma0NGVHlwZURpY3Rpb25hcnlL
ZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKTsKLSAgICBDRlJl
bGVhc2UoZm9udEZlYXR1cmVTZXR0aW5ncyk7CisgICAgQ0ZUeXBlUmVmIGZvbnREZXNjcmlwdG9y
VmFsdWVzW10gPSB7IGZvbnRGZWF0dXJlU2V0dGluZ3MuZ2V0KCkgfTsKKyAgICBhdXRvIGZvbnRE
ZXNjcmlwdG9yQXR0cmlidXRlcyA9IGFkb3B0Q0YoQ0ZEaWN0aW9uYXJ5Q3JlYXRlKGtDRkFsbG9j
YXRvckRlZmF1bHQsIGZvbnREZXNjcmlwdG9yS2V5cywgZm9udERlc2NyaXB0b3JWYWx1ZXMsIDEs
ICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVD
YWxsQmFja3MpKTsKIAotICAgIENURm9udERlc2NyaXB0b3JSZWYgbW9kaWZpZWRGb250RGVzY3Jp
cHRvciA9IENURm9udERlc2NyaXB0b3JDcmVhdGVDb3B5V2l0aEF0dHJpYnV0ZXMoZm9udERlc2Ny
aXB0b3IsIGZvbnREZXNjcmlwdG9yQXR0cmlidXRlcyk7Ci0gICAgQ0ZSZWxlYXNlKGZvbnREZXNj
cmlwdG9yQXR0cmlidXRlcyk7Ci0gICAgcmV0dXJuIG1vZGlmaWVkRm9udERlc2NyaXB0b3I7Cisg
ICAgcmV0dXJuIGFkb3B0Q0YoQ1RGb250RGVzY3JpcHRvckNyZWF0ZUNvcHlXaXRoQXR0cmlidXRl
cyhmb250RGVzY3JpcHRvciwgZm9udERlc2NyaXB0b3JBdHRyaWJ1dGVzLmdldCgpKSk7CiB9CiAK
LXN0YXRpYyBDVEZvbnREZXNjcmlwdG9yUmVmIGNvbnN0cnVjdEZvbnRXaXRoT3BlblR5cGVGZWF0
dXJlKENURm9udERlc2NyaXB0b3JSZWYgZm9udERlc2NyaXB0b3IsIENGU3RyaW5nUmVmIGZlYXR1
cmUsIGludCB2YWx1ZSkKK3N0YXRpYyBSZXRhaW5QdHI8Q1RGb250RGVzY3JpcHRvclJlZj4gY29u
c3RydWN0Rm9udFdpdGhPcGVuVHlwZUZlYXR1cmUoQ1RGb250RGVzY3JpcHRvclJlZiBmb250RGVz
Y3JpcHRvciwgQ0ZTdHJpbmdSZWYgZmVhdHVyZSwgaW50IHZhbHVlKQogewotICAgIENGTnVtYmVy
UmVmIGZlYXR1cmVWYWx1ZSA9IENGTnVtYmVyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGtD
Rk51bWJlckludFR5cGUsICZ2YWx1ZSk7CisgICAgYXV0byBmZWF0dXJlVmFsdWUgPSBhZG9wdENG
KENGTnVtYmVyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGtDRk51bWJlckludFR5cGUsICZ2
YWx1ZSkpOwogICAgIENGVHlwZVJlZiBmZWF0dXJlRGljdGlvbmFyeUtleXNbXSA9IHsga0NURm9u
dE9wZW5UeXBlRmVhdHVyZVRhZywga0NURm9udE9wZW5UeXBlRmVhdHVyZVZhbHVlIH07Ci0gICAg
Q0ZUeXBlUmVmIGZlYXR1cmVEaWN0aW9uYXJ5VmFsdWVzW10gPSB7IGZlYXR1cmUsIGZlYXR1cmVW
YWx1ZSB9OwotICAgIENGRGljdGlvbmFyeVJlZiBmZWF0dXJlRGljdGlvbmFyeSA9IENGRGljdGlv
bmFyeUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBmZWF0dXJlRGljdGlvbmFyeUtleXMsIGZl
YXR1cmVEaWN0aW9uYXJ5VmFsdWVzLCAyLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3Ms
ICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKTsKLSAgICBDRlJlbGVhc2UoZmVhdHVy
ZVZhbHVlKTsKKyAgICBDRlR5cGVSZWYgZmVhdHVyZURpY3Rpb25hcnlWYWx1ZXNbXSA9IHsgZmVh
dHVyZSwgZmVhdHVyZVZhbHVlLmdldCgpIH07CisgICAgYXV0byBmZWF0dXJlRGljdGlvbmFyeSA9
IGFkb3B0Q0YoQ0ZEaWN0aW9uYXJ5Q3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGZlYXR1cmVE
aWN0aW9uYXJ5S2V5cywgZmVhdHVyZURpY3Rpb25hcnlWYWx1ZXMsIDIsICZrQ0ZUeXBlRGljdGlv
bmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpKTsKIAot
ICAgIENGVHlwZVJlZiBmZWF0dXJlU2V0dGluZ3NWYWx1ZXNbXSA9IHsgZmVhdHVyZURpY3Rpb25h
cnkgfTsKLSAgICBDRkFycmF5UmVmIGZvbnRGZWF0dXJlU2V0dGluZ3MgPSBDRkFycmF5Q3JlYXRl
KGtDRkFsbG9jYXRvckRlZmF1bHQsIGZlYXR1cmVTZXR0aW5nc1ZhbHVlcywgMSwgJmtDRlR5cGVB
cnJheUNhbGxCYWNrcyk7Ci0gICAgQ0ZSZWxlYXNlKGZlYXR1cmVEaWN0aW9uYXJ5KTsKKyAgICBD
RlR5cGVSZWYgZmVhdHVyZVNldHRpbmdzVmFsdWVzW10gPSB7IGZlYXR1cmVEaWN0aW9uYXJ5Lmdl
dCgpIH07CisgICAgYXV0byBmb250RmVhdHVyZVNldHRpbmdzID0gYWRvcHRDRihDRkFycmF5Q3Jl
YXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGZlYXR1cmVTZXR0aW5nc1ZhbHVlcywgMSwgJmtDRlR5
cGVBcnJheUNhbGxCYWNrcykpOwogCiAgICAgQ0ZUeXBlUmVmIGZvbnREZXNjcmlwdG9yS2V5c1td
ID0geyBrQ1RGb250RmVhdHVyZVNldHRpbmdzQXR0cmlidXRlIH07Ci0gICAgQ0ZUeXBlUmVmIGZv
bnREZXNjcmlwdG9yVmFsdWVzW10gPSB7IGZvbnRGZWF0dXJlU2V0dGluZ3MgfTsKLSAgICBDRkRp
Y3Rpb25hcnlSZWYgZm9udERlc2NyaXB0b3JBdHRyaWJ1dGVzID0gQ0ZEaWN0aW9uYXJ5Q3JlYXRl
KGtDRkFsbG9jYXRvckRlZmF1bHQsIGZvbnREZXNjcmlwdG9yS2V5cywgZm9udERlc2NyaXB0b3JW
YWx1ZXMsIDEsICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9u
YXJ5VmFsdWVDYWxsQmFja3MpOwotICAgIENGUmVsZWFzZShmb250RmVhdHVyZVNldHRpbmdzKTsK
KyAgICBDRlR5cGVSZWYgZm9udERlc2NyaXB0b3JWYWx1ZXNbXSA9IHsgZm9udEZlYXR1cmVTZXR0
aW5ncy5nZXQoKSB9OworICAgIGF1dG8gZm9udERlc2NyaXB0b3JBdHRyaWJ1dGVzID0gYWRvcHRD
RihDRkRpY3Rpb25hcnlDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgZm9udERlc2NyaXB0b3JL
ZXlzLCBmb250RGVzY3JpcHRvclZhbHVlcywgMSwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJh
Y2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcykpOwogCi0gICAgQ1RGb250RGVz
Y3JpcHRvclJlZiBtb2RpZmllZEZvbnREZXNjcmlwdG9yID0gQ1RGb250RGVzY3JpcHRvckNyZWF0
ZUNvcHlXaXRoQXR0cmlidXRlcyhmb250RGVzY3JpcHRvciwgZm9udERlc2NyaXB0b3JBdHRyaWJ1
dGVzKTsKLSAgICBDRlJlbGVhc2UoZm9udERlc2NyaXB0b3JBdHRyaWJ1dGVzKTsKLSAgICByZXR1
cm4gbW9kaWZpZWRGb250RGVzY3JpcHRvcjsKKyAgICByZXR1cm4gYWRvcHRDRihDVEZvbnREZXNj
cmlwdG9yQ3JlYXRlQ29weVdpdGhBdHRyaWJ1dGVzKGZvbnREZXNjcmlwdG9yLCBmb250RGVzY3Jp
cHRvckF0dHJpYnV0ZXMuZ2V0KCkpKTsKIH0KIAogc3RhdGljIHZvaWQgZHJhd1RleHQoQ0dDb250
ZXh0UmVmIGNvbnRleHQsIENURm9udERlc2NyaXB0b3JSZWYgZm9udERlc2NyaXB0b3IsIENGU3Ry
aW5nUmVmIHByZWZpeCwgQ0dQb2ludCBsb2NhdGlvbikKQEAgLTg0LDM3ICs3MywyOSBAQCBzdGF0
aWMgdm9pZCBkcmF3VGV4dChDR0NvbnRleHRSZWYgY29udGV4dCwgQ1RGb250RGVzY3JpcHRvclJl
ZiBmb250RGVzY3JpcHRvciwgQwogICAgIENHQ29udGV4dFNldFRleHRQb3NpdGlvbihjb250ZXh0
LCBsb2NhdGlvbi54LCBsb2NhdGlvbi55KTsKIAogICAgIENHRmxvYXQgZm9udFNpemUgPSAyNTsK
LSAgICBDVEZvbnRSZWYgZm9udCA9IENURm9udENyZWF0ZVdpdGhGb250RGVzY3JpcHRvcihmb250
RGVzY3JpcHRvciwgZm9udFNpemUsIG51bGxwdHIpOworICAgIGF1dG8gZm9udCA9IGFkb3B0Q0Yo
Q1RGb250Q3JlYXRlV2l0aEZvbnREZXNjcmlwdG9yKGZvbnREZXNjcmlwdG9yLCBmb250U2l6ZSwg
bnVsbHB0cikpOwogCi0gICAgQ0ZNdXRhYmxlU3RyaW5nUmVmIHN0cmluZyA9IENGU3RyaW5nQ3Jl
YXRlTXV0YWJsZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAwKTsKLSAgICBDRlN0cmluZ0FwcGVuZChz
dHJpbmcsIHByZWZpeCk7Ci0gICAgQ0ZTdHJpbmdBcHBlbmQoc3RyaW5nLCBDRlNUUigiQUJDREVG
R0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eiIpKTsKKyAgICBh
dXRvIHN0cmluZyA9IGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVNdXRhYmxlKGtDRkFsbG9jYXRvckRl
ZmF1bHQsIDApKTsKKyAgICBDRlN0cmluZ0FwcGVuZChzdHJpbmcuZ2V0KCksIHByZWZpeCk7Cisg
ICAgQ0ZTdHJpbmdBcHBlbmQoc3RyaW5nLmdldCgpLCBDRlNUUigiQUJDREVGR0hJSktMTU5PUFFS
U1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eiIpKTsKIAotICAgIENHQ29sb3JSZWYg
cmVkID0gQ0dDb2xvckNyZWF0ZUdlbmVyaWNSR0IoMSwgMCwgMCwgMSk7CisgICAgYXV0byByZWQg
PSBhZG9wdENGKENHQ29sb3JDcmVhdGVHZW5lcmljUkdCKDEsIDAsIDAsIDEpKTsKICAgICBDRlR5
cGVSZWYgbGluZUtleXNbXSA9IHsga0NURm9yZWdyb3VuZENvbG9yQXR0cmlidXRlTmFtZSB9Owot
ICAgIENGVHlwZVJlZiBsaW5lVmFsdWVzW10gPSB7IHJlZCB9OwotICAgIENGRGljdGlvbmFyeVJl
ZiBsaW5lQXR0cmlidXRlcyA9IENGRGljdGlvbmFyeUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0
LCBsaW5lS2V5cywgbGluZVZhbHVlcywgMSwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tz
LCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcyk7Ci0gICAgQ0dDb2xvclJlbGVhc2Uo
cmVkKTsKKyAgICBDRlR5cGVSZWYgbGluZVZhbHVlc1tdID0geyByZWQuZ2V0KCkgfTsKKyAgICBh
dXRvIGxpbmVBdHRyaWJ1dGVzID0gYWRvcHRDRihDRkRpY3Rpb25hcnlDcmVhdGUoa0NGQWxsb2Nh
dG9yRGVmYXVsdCwgbGluZUtleXMsIGxpbmVWYWx1ZXMsIDEsICZrQ0ZUeXBlRGljdGlvbmFyeUtl
eUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpKTsKIAotICAgIENG
QXR0cmlidXRlZFN0cmluZ1JlZiBhdHRyaWJ1dGVkU3RyaW5nID0gQ0ZBdHRyaWJ1dGVkU3RyaW5n
Q3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIHN0cmluZywgbGluZUF0dHJpYnV0ZXMpOwotICAg
IENGUmVsZWFzZShsaW5lQXR0cmlidXRlcyk7CisgICAgYXV0byBhdHRyaWJ1dGVkU3RyaW5nID0g
YWRvcHRDRihDRkF0dHJpYnV0ZWRTdHJpbmdDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgc3Ry
aW5nLmdldCgpLCBsaW5lQXR0cmlidXRlcy5nZXQoKSkpOwogCi0gICAgQ0ZNdXRhYmxlQXR0cmli
dXRlZFN0cmluZ1JlZiBtdXRhYmxlQXR0cmlidXRlZFN0cmluZyA9IENGQXR0cmlidXRlZFN0cmlu
Z0NyZWF0ZU11dGFibGVDb3B5KGtDRkFsbG9jYXRvckRlZmF1bHQsIDAsIGF0dHJpYnV0ZWRTdHJp
bmcpOwotICAgIENGUmVsZWFzZShhdHRyaWJ1dGVkU3RyaW5nKTsKKyAgICBhdXRvIG11dGFibGVB
dHRyaWJ1dGVkU3RyaW5nID0gYWRvcHRDRihDRkF0dHJpYnV0ZWRTdHJpbmdDcmVhdGVNdXRhYmxl
Q29weShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAwLCBhdHRyaWJ1dGVkU3RyaW5nLmdldCgpKSk7CiAK
LSAgICBDVEZvbnRSZWYgbW9ub3NwYWNlRm9udCA9IENURm9udENyZWF0ZVdpdGhOYW1lKENGU1RS
KCJDb3VyaWVyIiksIGZvbnRTaXplLCBudWxscHRyKTsKLSAgICBDRkF0dHJpYnV0ZWRTdHJpbmdT
ZXRBdHRyaWJ1dGUobXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcsIENGUmFuZ2VNYWtlKDAsIENGU3Ry
aW5nR2V0TGVuZ3RoKHByZWZpeCkpLCBrQ1RGb250QXR0cmlidXRlTmFtZSwgbW9ub3NwYWNlRm9u
dCk7Ci0gICAgQ0ZSZWxlYXNlKG1vbm9zcGFjZUZvbnQpOworICAgIGF1dG8gbW9ub3NwYWNlRm9u
dCA9IGFkb3B0Q0YoQ1RGb250Q3JlYXRlV2l0aE5hbWUoQ0ZTVFIoIkNvdXJpZXIiKSwgZm9udFNp
emUsIG51bGxwdHIpKTsKKyAgICBDRkF0dHJpYnV0ZWRTdHJpbmdTZXRBdHRyaWJ1dGUobXV0YWJs
ZUF0dHJpYnV0ZWRTdHJpbmcuZ2V0KCksIENGUmFuZ2VNYWtlKDAsIENGU3RyaW5nR2V0TGVuZ3Ro
KHByZWZpeCkpLCBrQ1RGb250QXR0cmlidXRlTmFtZSwgbW9ub3NwYWNlRm9udC5nZXQoKSk7CiAK
LSAgICBDRkF0dHJpYnV0ZWRTdHJpbmdTZXRBdHRyaWJ1dGUobXV0YWJsZUF0dHJpYnV0ZWRTdHJp
bmcsIENGUmFuZ2VNYWtlKENGU3RyaW5nR2V0TGVuZ3RoKHByZWZpeCksIENGU3RyaW5nR2V0TGVu
Z3RoKHN0cmluZykgLSBDRlN0cmluZ0dldExlbmd0aChwcmVmaXgpKSwga0NURm9udEF0dHJpYnV0
ZU5hbWUsIGZvbnQpOwotICAgIENGUmVsZWFzZShzdHJpbmcpOwotICAgIENGUmVsZWFzZShmb250
KTsKKyAgICBDRkF0dHJpYnV0ZWRTdHJpbmdTZXRBdHRyaWJ1dGUobXV0YWJsZUF0dHJpYnV0ZWRT
dHJpbmcuZ2V0KCksIENGUmFuZ2VNYWtlKENGU3RyaW5nR2V0TGVuZ3RoKHByZWZpeCksIENGU3Ry
aW5nR2V0TGVuZ3RoKHN0cmluZy5nZXQoKSkgLSBDRlN0cmluZ0dldExlbmd0aChwcmVmaXgpKSwg
a0NURm9udEF0dHJpYnV0ZU5hbWUsIGZvbnQuZ2V0KCkpOwogCi0gICAgQ1RMaW5lUmVmIGxpbmUg
PSBDVExpbmVDcmVhdGVXaXRoQXR0cmlidXRlZFN0cmluZyhtdXRhYmxlQXR0cmlidXRlZFN0cmlu
Zyk7Ci0gICAgQ0ZSZWxlYXNlKG11dGFibGVBdHRyaWJ1dGVkU3RyaW5nKTsKKyAgICBhdXRvIGxp
bmUgPSBhZG9wdENGKENUTGluZUNyZWF0ZVdpdGhBdHRyaWJ1dGVkU3RyaW5nKG11dGFibGVBdHRy
aWJ1dGVkU3RyaW5nLmdldCgpKSk7CiAKLSAgICBDVExpbmVEcmF3KGxpbmUsIGNvbnRleHQpOwot
ICAgIENGUmVsZWFzZShsaW5lKTsKKyAgICBDVExpbmVEcmF3KGxpbmUuZ2V0KCksIGNvbnRleHQp
OwogfQogCiBpbnQgbWFpbihpbnQgYXJnYywgY29uc3QgY2hhciAqIGFyZ3ZbXSkKQEAgLTEyMiw3
ICsxMDMsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY29uc3QgY2hhciAqIGFyZ3ZbXSkKICAgICBz
aXplX3Qgd2lkdGggPSAyNTAwOwogICAgIHNpemVfdCBoZWlnaHQgPSAyMDAwOwogICAgIENHQ29s
b3JTcGFjZVJlZiBjb2xvclNwYWNlID0gQ0dDb2xvclNwYWNlQ3JlYXRlRGV2aWNlUkdCKCk7Ci0g
ICAgQ0dDb250ZXh0UmVmIGNvbnRleHQgPSBDR0JpdG1hcENvbnRleHRDcmVhdGUobnVsbHB0ciwg
d2lkdGgsIGhlaWdodCwgOCwgd2lkdGggKiA0LCBjb2xvclNwYWNlLCBrQ0dJbWFnZUFscGhhTm9u
ZVNraXBMYXN0KTsKKyAgICBhdXRvIGNvbnRleHQgPSBhZG9wdENGKENHQml0bWFwQ29udGV4dENy
ZWF0ZShudWxscHRyLCB3aWR0aCwgaGVpZ2h0LCA4LCB3aWR0aCAqIDQsIGNvbG9yU3BhY2UsIGtD
R0ltYWdlQWxwaGFOb25lU2tpcExhc3QpKTsKICAgICBDR0NvbG9yU3BhY2VSZWxlYXNlKGNvbG9y
U3BhY2UpOwogICAgIFR5cGUgdHlwZSA9IFR5cGU6OlRydWVUeXBlOwogICAgIGNvbnN0IHN0ZDo6
dmVjdG9yPHVpbnQ4X3Q+IGZvbnRWZWN0b3IgPSBnZW5lcmF0ZUZvbnQodHlwZSk7CkBAIC0xMzEs
NDkgKzExMiw0MCBAQCBpbnQgbWFpbihpbnQgYXJnYywgY29uc3QgY2hhciAqIGFyZ3ZbXSkKICAg
ICAgICAgb3V0cHV0RmlsZSA8PCBiOwogICAgIG91dHB1dEZpbGUuY2xvc2UoKTsKICAgICAKLSAg
ICBDRkRhdGFSZWYgZm9udERhdGEgPSBDRkRhdGFDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwg
Zm9udFZlY3Rvci5kYXRhKCksIGZvbnRWZWN0b3Iuc2l6ZSgpKTsKLSAgICBDVEZvbnREZXNjcmlw
dG9yUmVmIGZvbnREZXNjcmlwdG9yID0gQ1RGb250TWFuYWdlckNyZWF0ZUZvbnREZXNjcmlwdG9y
RnJvbURhdGEoZm9udERhdGEpOwotICAgIENGUmVsZWFzZShmb250RGF0YSk7CisgICAgYXV0byBm
b250RGF0YSA9IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGZvbnRW
ZWN0b3IuZGF0YSgpLCBmb250VmVjdG9yLnNpemUoKSkpOworICAgIGF1dG8gZm9udERlc2NyaXB0
b3IgPSBhZG9wdENGKENURm9udE1hbmFnZXJDcmVhdGVGb250RGVzY3JpcHRvckZyb21EYXRhKGZv
bnREYXRhLmdldCgpKSk7CiAKICAgICBpZiAodHlwZSA9PSBUeXBlOjpPcGVuVHlwZSkgewogICAg
ICAgICBDRlR5cGVSZWYgZmVhdHVyZVZhbHVlc09wZW5UeXBlW10gPSB7IENGU1RSKCJsaWdhIiks
IENGU1RSKCJjbGlnIiksIENGU1RSKCJkbGlnIiksIENGU1RSKCJobGlnIiksIENGU1RSKCJjYWx0
IiksIENGU1RSKCJzdWJzIiksIENGU1RSKCJzdXBzIiksIENGU1RSKCJzbWNwIiksIENGU1RSKCJj
MnNjIiksIENGU1RSKCJwY2FwIiksIENGU1RSKCJjMnBjIiksIENGU1RSKCJ1bmljIiksIENGU1RS
KCJ0aXRsIiksIENGU1RSKCJvbnVtIiksIENGU1RSKCJwbnVtIiksIENGU1RSKCJ0bnVtIiksIENG
U1RSKCJmcmFjIiksIENGU1RSKCJhZnJjIiksIENGU1RSKCJvcmRuIiksIENGU1RSKCJ6ZXJvIiks
IENGU1RSKCJoaXN0IiksIENGU1RSKCJqcDc4IiksIENGU1RSKCJqcDgzIiksIENGU1RSKCJqcDkw
IiksIENGU1RSKCJqcDA0IiksIENGU1RSKCJzbXBsIiksIENGU1RSKCJ0cmFkIiksIENGU1RSKCJm
d2lkIiksIENGU1RSKCJwd2lkIiksIENGU1RSKCJydWJ5IikgfTsKLSAgICAgICAgQ0ZBcnJheVJl
ZiBmZWF0dXJlcyA9IENGQXJyYXlDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgZmVhdHVyZVZh
bHVlc09wZW5UeXBlLCAzMCwgJmtDRlR5cGVBcnJheUNhbGxCYWNrcyk7Ci0KLSAgICAgICAgZm9y
IChDRkluZGV4IGkgPSAwOyBpIDwgQ0ZBcnJheUdldENvdW50KGZlYXR1cmVzKTsgKytpKSB7Ci0g
ICAgICAgICAgICBDRlN0cmluZ1JlZiBmZWF0dXJlID0gc3RhdGljX2Nhc3Q8Q0ZTdHJpbmdSZWY+
KENGQXJyYXlHZXRWYWx1ZUF0SW5kZXgoZmVhdHVyZXMsIGkpKTsKLSAgICAgICAgICAgIENURm9u
dERlc2NyaXB0b3JSZWYgbW9kaWZpZWRGb250RGVzY3JpcHRvciA9IGNvbnN0cnVjdEZvbnRXaXRo
T3BlblR5cGVGZWF0dXJlKGZvbnREZXNjcmlwdG9yLCBmZWF0dXJlLCAxKTsKLSAgICAgICAgICAg
IENGTXV0YWJsZVN0cmluZ1JlZiBwcmVmaXggPSBDRlN0cmluZ0NyZWF0ZU11dGFibGUoa0NGQWxs
b2NhdG9yRGVmYXVsdCwgMCk7Ci0gICAgICAgICAgICBDRlN0cmluZ0FwcGVuZChwcmVmaXgsIGZl
YXR1cmUpOwotICAgICAgICAgICAgQ0ZTdHJpbmdBcHBlbmQocHJlZml4LCBDRlNUUigiICAob24p
OiAiKSk7Ci0gICAgICAgICAgICBkcmF3VGV4dChjb250ZXh0LCBtb2RpZmllZEZvbnREZXNjcmlw
dG9yLCBwcmVmaXgsIENHUG9pbnRNYWtlKDI1LCAxOTUwIC0gNTAgKiBpKSk7Ci0gICAgICAgICAg
ICBDRlJlbGVhc2UocHJlZml4KTsKLSAgICAgICAgICAgIENGUmVsZWFzZShtb2RpZmllZEZvbnRE
ZXNjcmlwdG9yKTsKLQotICAgICAgICAgICAgbW9kaWZpZWRGb250RGVzY3JpcHRvciA9IGNvbnN0
cnVjdEZvbnRXaXRoT3BlblR5cGVGZWF0dXJlKGZvbnREZXNjcmlwdG9yLCBmZWF0dXJlLCAwKTsK
LSAgICAgICAgICAgIHByZWZpeCA9IENGU3RyaW5nQ3JlYXRlTXV0YWJsZShrQ0ZBbGxvY2F0b3JE
ZWZhdWx0LCAwKTsKLSAgICAgICAgICAgIENGU3RyaW5nQXBwZW5kKHByZWZpeCwgZmVhdHVyZSk7
Ci0gICAgICAgICAgICBDRlN0cmluZ0FwcGVuZChwcmVmaXgsIENGU1RSKCIgKG9mZik6ICIpKTsK
LSAgICAgICAgICAgIGRyYXdUZXh0KGNvbnRleHQsIG1vZGlmaWVkRm9udERlc2NyaXB0b3IsIHBy
ZWZpeCwgQ0dQb2ludE1ha2UoMjUsIDE5MjUgLSA1MCAqIGkpKTsKLSAgICAgICAgICAgIENGUmVs
ZWFzZShwcmVmaXgpOwotICAgICAgICAgICAgQ0ZSZWxlYXNlKG1vZGlmaWVkRm9udERlc2NyaXB0
b3IpOworICAgICAgICBhdXRvIGZlYXR1cmVzID0gYWRvcHRDRihDRkFycmF5Q3JlYXRlKGtDRkFs
bG9jYXRvckRlZmF1bHQsIGZlYXR1cmVWYWx1ZXNPcGVuVHlwZSwgMzAsICZrQ0ZUeXBlQXJyYXlD
YWxsQmFja3MpKTsKKworICAgICAgICBmb3IgKENGSW5kZXggaSA9IDA7IGkgPCBDRkFycmF5R2V0
Q291bnQoZmVhdHVyZXMuZ2V0KCkpOyArK2kpIHsKKyAgICAgICAgICAgIENGU3RyaW5nUmVmIGZl
YXR1cmUgPSBzdGF0aWNfY2FzdDxDRlN0cmluZ1JlZj4oQ0ZBcnJheUdldFZhbHVlQXRJbmRleChm
ZWF0dXJlcy5nZXQoKSwgaSkpOworICAgICAgICAgICAgYXV0byBtb2RpZmllZEZvbnREZXNjcmlw
dG9yID0gY29uc3RydWN0Rm9udFdpdGhPcGVuVHlwZUZlYXR1cmUoZm9udERlc2NyaXB0b3IuZ2V0
KCksIGZlYXR1cmUsIDEpOworICAgICAgICAgICAgYXV0byBwcmVmaXggPSBhZG9wdENGKENGU3Ry
aW5nQ3JlYXRlTXV0YWJsZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAwKSk7CisgICAgICAgICAgICBD
RlN0cmluZ0FwcGVuZChwcmVmaXguZ2V0KCksIGZlYXR1cmUpOworICAgICAgICAgICAgQ0ZTdHJp
bmdBcHBlbmQocHJlZml4LmdldCgpLCBDRlNUUigiICAob24pOiAiKSk7CisgICAgICAgICAgICBk
cmF3VGV4dChjb250ZXh0LmdldCgpLCBtb2RpZmllZEZvbnREZXNjcmlwdG9yLmdldCgpLCBwcmVm
aXguZ2V0KCksIENHUG9pbnRNYWtlKDI1LCAxOTUwIC0gNTAgKiBpKSk7CisKKyAgICAgICAgICAg
IG1vZGlmaWVkRm9udERlc2NyaXB0b3IgPSBjb25zdHJ1Y3RGb250V2l0aE9wZW5UeXBlRmVhdHVy
ZShmb250RGVzY3JpcHRvci5nZXQoKSwgZmVhdHVyZSwgMCk7CisgICAgICAgICAgICBwcmVmaXgg
PSBhZG9wdENGKENGU3RyaW5nQ3JlYXRlTXV0YWJsZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAwKSk7
CisgICAgICAgICAgICBDRlN0cmluZ0FwcGVuZChwcmVmaXguZ2V0KCksIGZlYXR1cmUpOworICAg
ICAgICAgICAgQ0ZTdHJpbmdBcHBlbmQocHJlZml4LmdldCgpLCBDRlNUUigiIChvZmYpOiAiKSk7
CisgICAgICAgICAgICBkcmF3VGV4dChjb250ZXh0LmdldCgpLCBtb2RpZmllZEZvbnREZXNjcmlw
dG9yLmdldCgpLCBwcmVmaXguZ2V0KCksIENHUG9pbnRNYWtlKDI1LCAxOTI1IC0gNTAgKiBpKSk7
CiAgICAgICAgIH0KLQotICAgICAgICBDRlJlbGVhc2UoZmVhdHVyZXMpOwogICAgIH0gZWxzZSB7
CiAgICAgICAgIF9fYmxvY2sgaW50IGkgPSAwOwogICAgICAgICB2b2lkICheaGFuZGxlcikodWlu
dDE2X3QgdHlwZSwgQ0ZTdHJpbmdSZWYgdHlwZVN0cmluZywgdWludDE2X3Qgc2VsZWN0b3IsIENG
U3RyaW5nUmVmIHNlbGVjdG9yU3RyaW5nKSA9IF4odWludDE2X3QgdHlwZSwgQ0ZTdHJpbmdSZWYg
dHlwZVN0cmluZywgdWludDE2X3Qgc2VsZWN0b3IsIENGU3RyaW5nUmVmIHNlbGVjdG9yU3RyaW5n
KQogICAgICAgICB7Ci0gICAgICAgICAgICBDVEZvbnREZXNjcmlwdG9yUmVmIG1vZGlmaWVkRm9u
dERlc2NyaXB0b3IgPSBjb25zdHJ1Y3RGb250V2l0aFRydWVUeXBlRmVhdHVyZShmb250RGVzY3Jp
cHRvciwgdHlwZSwgc2VsZWN0b3IpOwotICAgICAgICAgICAgQ0ZNdXRhYmxlU3RyaW5nUmVmIHBy
ZWZpeCA9IENGU3RyaW5nQ3JlYXRlTXV0YWJsZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAwKTsKLSAg
ICAgICAgICAgIENGU3RyaW5nQXBwZW5kKHByZWZpeCwgdHlwZVN0cmluZyk7Ci0gICAgICAgICAg
ICBDRlN0cmluZ0FwcGVuZChwcmVmaXgsIENGU1RSKCI6ICIpKTsKLSAgICAgICAgICAgIENGU3Ry
aW5nQXBwZW5kKHByZWZpeCwgc2VsZWN0b3JTdHJpbmcpOwotICAgICAgICAgICAgQ0ZTdHJpbmdB
cHBlbmQocHJlZml4LCBDRlNUUigiOiAiKSk7Ci0gICAgICAgICAgICB3aGlsZSAoQ0ZTdHJpbmdH
ZXRMZW5ndGgocHJlZml4KSA8IDY1KQotICAgICAgICAgICAgICAgIENGU3RyaW5nQXBwZW5kKHBy
ZWZpeCwgQ0ZTVFIoIiAiKSk7Ci0gICAgICAgICAgICBkcmF3VGV4dChjb250ZXh0LCBtb2RpZmll
ZEZvbnREZXNjcmlwdG9yLCBwcmVmaXgsIENHUG9pbnRNYWtlKDI1LCAxOTUwIC0gNDAgKiBpKSk7
Ci0gICAgICAgICAgICBDRlJlbGVhc2UocHJlZml4KTsKLSAgICAgICAgICAgIENGUmVsZWFzZSht
b2RpZmllZEZvbnREZXNjcmlwdG9yKTsKKyAgICAgICAgICAgIGF1dG8gbW9kaWZpZWRGb250RGVz
Y3JpcHRvciA9IGNvbnN0cnVjdEZvbnRXaXRoVHJ1ZVR5cGVGZWF0dXJlKGZvbnREZXNjcmlwdG9y
LmdldCgpLCB0eXBlLCBzZWxlY3Rvcik7CisgICAgICAgICAgICBhdXRvIHByZWZpeCA9IGFkb3B0
Q0YoQ0ZTdHJpbmdDcmVhdGVNdXRhYmxlKGtDRkFsbG9jYXRvckRlZmF1bHQsIDApKTsKKyAgICAg
ICAgICAgIENGU3RyaW5nQXBwZW5kKHByZWZpeC5nZXQoKSwgdHlwZVN0cmluZyk7CisgICAgICAg
ICAgICBDRlN0cmluZ0FwcGVuZChwcmVmaXguZ2V0KCksIENGU1RSKCI6ICIpKTsKKyAgICAgICAg
ICAgIENGU3RyaW5nQXBwZW5kKHByZWZpeC5nZXQoKSwgc2VsZWN0b3JTdHJpbmcpOworICAgICAg
ICAgICAgQ0ZTdHJpbmdBcHBlbmQocHJlZml4LmdldCgpLCBDRlNUUigiOiAiKSk7CisgICAgICAg
ICAgICB3aGlsZSAoQ0ZTdHJpbmdHZXRMZW5ndGgocHJlZml4LmdldCgpKSA8IDY1KQorICAgICAg
ICAgICAgICAgIENGU3RyaW5nQXBwZW5kKHByZWZpeC5nZXQoKSwgQ0ZTVFIoIiAiKSk7CisgICAg
ICAgICAgICBkcmF3VGV4dChjb250ZXh0LmdldCgpLCBtb2RpZmllZEZvbnREZXNjcmlwdG9yLmdl
dCgpLCBwcmVmaXguZ2V0KCksIENHUG9pbnRNYWtlKDI1LCAxOTUwIC0gNDAgKiBpKSk7CiAgICAg
ICAgICAgICArK2k7CiAgICAgICAgIH07CiAgICAgICAgIGhhbmRsZXIoa0xpZ2F0dXJlc1R5cGUs
IENGU1RSKCJrTGlnYXR1cmVzVHlwZSIpLCBrQ29tbW9uTGlnYXR1cmVzT25TZWxlY3RvciwgQ0ZT
VFIoImtDb21tb25MaWdhdHVyZXNPblNlbGVjdG9yIikpOwpAQCAtMjE0LDE1ICsxODYsMTAgQEAg
aW50IG1haW4oaW50IGFyZ2MsIGNvbnN0IGNoYXIgKiBhcmd2W10pCiAgICAgICAgIGhhbmRsZXIo
a1J1YnlLYW5hVHlwZSwgQ0ZTVFIoImtSdWJ5S2FuYVR5cGUiKSwga1J1YnlLYW5hT25TZWxlY3Rv
ciwgQ0ZTVFIoImtSdWJ5S2FuYU9uU2VsZWN0b3IiKSk7CiAgICAgfQogCi0gICAgQ0ZSZWxlYXNl
KGZvbnREZXNjcmlwdG9yKTsKLSAgICBDR0ltYWdlUmVmIGltYWdlID0gQ0dCaXRtYXBDb250ZXh0
Q3JlYXRlSW1hZ2UoY29udGV4dCk7Ci0gICAgQ0dDb250ZXh0UmVsZWFzZShjb250ZXh0KTsKLSAg
ICBDRlVSTFJlZiB1cmwgPSBDRlVSTENyZWF0ZVdpdGhGaWxlU3lzdGVtUGF0aChrQ0ZBbGxvY2F0
b3JEZWZhdWx0LCBDRlNUUigiL1ZvbHVtZXMvRGF0YS9ob21lL21tYXhmaWVsZC90bXAvb3V0cHV0
LnBuZyIpLCBrQ0ZVUkxQT1NJWFBhdGhTdHlsZSwgRkFMU0UpOwotICAgIENHSW1hZ2VEZXN0aW5h
dGlvblJlZiBpbWFnZURlc3RpbmF0aW9uID0gQ0dJbWFnZURlc3RpbmF0aW9uQ3JlYXRlV2l0aFVS
TCh1cmwsIGtVVFR5cGVQTkcsIDEsIG51bGxwdHIpOwotICAgIENGUmVsZWFzZSh1cmwpOwotICAg
IENHSW1hZ2VEZXN0aW5hdGlvbkFkZEltYWdlKGltYWdlRGVzdGluYXRpb24sIGltYWdlLCBudWxs
cHRyKTsKLSAgICBDR0ltYWdlUmVsZWFzZShpbWFnZSk7Ci0gICAgQ0dJbWFnZURlc3RpbmF0aW9u
RmluYWxpemUoaW1hZ2VEZXN0aW5hdGlvbik7Ci0gICAgQ0ZSZWxlYXNlKGltYWdlRGVzdGluYXRp
b24pOworICAgIGF1dG8gaW1hZ2UgPSBhZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0ZUltYWdl
KGNvbnRleHQuZ2V0KCkpKTsKKyAgICBhdXRvIHVybCA9IGFkb3B0Q0YoQ0ZVUkxDcmVhdGVXaXRo
RmlsZVN5c3RlbVBhdGgoa0NGQWxsb2NhdG9yRGVmYXVsdCwgQ0ZTVFIoIi9Wb2x1bWVzL0RhdGEv
aG9tZS9tbWF4ZmllbGQvdG1wL291dHB1dC5wbmciKSwga0NGVVJMUE9TSVhQYXRoU3R5bGUsIEZB
TFNFKSk7CisgICAgYXV0byBpbWFnZURlc3RpbmF0aW9uID0gYWRvcHRDRihDR0ltYWdlRGVzdGlu
YXRpb25DcmVhdGVXaXRoVVJMKHVybC5nZXQoKSwga1VUVHlwZVBORywgMSwgbnVsbHB0cikpOwor
ICAgIENHSW1hZ2VEZXN0aW5hdGlvbkFkZEltYWdlKGltYWdlRGVzdGluYXRpb24uZ2V0KCksIGlt
YWdlLmdldCgpLCBudWxscHRyKTsKKyAgICBDR0ltYWdlRGVzdGluYXRpb25GaW5hbGl6ZShpbWFn
ZURlc3RpbmF0aW9uLmdldCgpKTsKICAgICByZXR1cm4gMDsKIH0KZGlmZiAtLWdpdCBhL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcCBi
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdl
LmNwcAppbmRleCAzZGIwMjM0OTM0MTUzOWVkNDM4NzBlNjQ1MDZkOTMzMDc1NDJjMjg5Li43NDVj
NGNlODM1ZWRjYzFiMzIwZTkwM2QzNjdmNzc2YTc1ZTQ1NzM4IDEwMDY0NAotLS0gYS9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHAKKysr
IGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBh
Z2UuY3BwCkBAIC03OTYsNyArNzk2LDcgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2U6OmR1bXBE
T01Bc1dlYkFyY2hpdmUoV0tCdW5kbGVGcmFtZVJlZiBmcmFtZSwgU3RyaW5nQnVpbGQKICNpZiBV
U0UoQ0YpICYmICFQTEFURk9STShXSU5fQ0FJUk8pICYmICFVU0UoRElSRUNUMkQpCiAgICAgYXV0
byB3a0RhdGEgPSBhZG9wdFdLKFdLQnVuZGxlRnJhbWVDb3B5V2ViQXJjaGl2ZShmcmFtZSkpOwog
ICAgIGF1dG8gY2ZEYXRhID0gYWRvcHRDRihDRkRhdGFDcmVhdGUoMCwgV0tEYXRhR2V0Qnl0ZXMo
d2tEYXRhLmdldCgpKSwgV0tEYXRhR2V0U2l6ZSh3a0RhdGEuZ2V0KCkpKSk7Ci0gICAgYXV0byBj
ZlN0cmluZyA9IGFkb3B0Q0YoV2ViQ29yZVRlc3RTdXBwb3J0OjpjcmVhdGVYTUxTdHJpbmdGcm9t
V2ViQXJjaGl2ZURhdGEoY2ZEYXRhLmdldCgpKSk7CisgICAgYXV0byBjZlN0cmluZyA9IFdlYkNv
cmVUZXN0U3VwcG9ydDo6Y3JlYXRlWE1MU3RyaW5nRnJvbVdlYkFyY2hpdmVEYXRhKGNmRGF0YS5n
ZXQoKSk7CiAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoY2ZTdHJpbmcuZ2V0KCkpOwogI2VuZGlm
CiB9CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2lv
cy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50SU9TLm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9pb3MvQWNjZXNzaWJpbGl0eVVJRWxlbWVudElPUy5tbQppbmRleCA0NmEx
NTc4MGRjNThkMzdmOWFkYWJlNzAwOTAxZDkxMGRlOTdkMWY0Li5mMGY5YjM4N2QwNmM0MzA4YWUx
MzYxZjExZGM5MDdkNDhiZGY3MjUzIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL2lvcy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50SU9TLm1tCisrKyBiL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvaW9zL0FjY2Vzc2liaWxpdHlVSUVs
ZW1lbnRJT1MubW0KQEAgLTEzMCw3ICsxMzAsNyBAQCArIChOU1N0cmluZyAqKXN0cmluZ1dpdGhK
U1N0cmluZ1JlZjooSlNTdHJpbmdSZWYpanNTdHJpbmdSZWYKICAgICBpZiAoIWpzU3RyaW5nUmVm
KQogICAgICAgICByZXR1cm4gbmlsOwogICAgIAotICAgIHJldHVybiBDRkJyaWRnaW5nUmVsZWFz
ZShKU1N0cmluZ0NvcHlDRlN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBqc1N0cmluZ1JlZikp
OworICAgIHJldHVybiBhZG9wdENGKEpTU3RyaW5nQ29weUNGU3RyaW5nKGtDRkFsbG9jYXRvckRl
ZmF1bHQsIGpzU3RyaW5nUmVmKSkuYnJpZGdpbmdBdXRvcmVsZWFzZSgpOwogfQogCiAtIChKU1Jl
dGFpblB0cjxKU1N0cmluZ1JlZj4pY3JlYXRlSlNTdHJpbmdSZWYKZGlmZiAtLWdpdCBhL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0FjY2Vzc2liaWxpdHlDb21tb25N
YWMubW0gYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9BY2Nlc3Np
YmlsaXR5Q29tbW9uTWFjLm1tCmluZGV4IDM1NGE4ZjY1NTVjNmMwMDI2NWY1NjgxYTZiMzcxNTJh
ODRhNTYyYzAuLmY4ZTJkY2UyMjEwMjcyYWY2NmRlOGMyNzFmZjQ1ZDNiN2I1N2M2MGYgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0FjY2Vzc2li
aWxpdHlDb21tb25NYWMubW0KKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9tYWMvQWNjZXNzaWJpbGl0eUNvbW1vbk1hYy5tbQpAQCAtNDMsNyArNDMsNyBAQCArIChO
U1N0cmluZyAqKXN0cmluZ1dpdGhKU1N0cmluZ1JlZjooSlNTdHJpbmdSZWYpanNTdHJpbmdSZWYK
ICAgICBpZiAoIWpzU3RyaW5nUmVmKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgcmV0dXJu
IENGQnJpZGdpbmdSZWxlYXNlKEpTU3RyaW5nQ29weUNGU3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1
bHQsIGpzU3RyaW5nUmVmKSk7CisgICAgcmV0dXJuIGFkb3B0Q0YoSlNTdHJpbmdDb3B5Q0ZTdHJp
bmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwganNTdHJpbmdSZWYpKS5icmlkZ2luZ0F1dG9yZWxlYXNl
KCk7CiB9CiAKIC0gKEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiljcmVhdGVKU1N0cmluZ1JlZgpk
aWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvSElERXZlbnRHZW5lcmF0b3Iu
bW0gYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9ISURFdmVudEdlbmVyYXRvci5tbQppbmRl
eCAzMWI0NjUwZTM1NjExOWMwMjQwMTY2NGNlMDI3Njk0OGRhMDM1ZWQ4Li5mNjgyY2EyOTg3NWIz
NjZlYjE2YjVlNzlmMDZkZDBlMGE1MWZiZDA3IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL2lvcy9ISURFdmVudEdlbmVyYXRvci5tbQorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL2lvcy9ISURFdmVudEdlbmVyYXRvci5tbQpAQCAtMzE5LDcgKzMxOSw3IEBAIC0gKElPSElE
RXZlbnRSZWYpX2NyZWF0ZUlPSElERXZlbnRXaXRoSW5mbzooTlNEaWN0aW9uYXJ5ICopaW5mbwog
ICAgICAgICBpZiAoW3RvdWNoSW5mb1tISURFdmVudFByZXNzdXJlS2V5XSBmbG9hdFZhbHVlXSkK
ICAgICAgICAgICAgIGNoaWxkRXZlbnRNYXNrIHw9IGtJT0hJRERpZ2l0aXplckV2ZW50QXR0cmli
dXRlOwogCi0gICAgICAgIElPSElERXZlbnRSZWYgc3ViRXZlbnQgPSBJT0hJREV2ZW50Q3JlYXRl
RGlnaXRpemVyRmluZ2VyRXZlbnQoa0NGQWxsb2NhdG9yRGVmYXVsdCwgbWFjaFRpbWUsCisgICAg
ICAgIGF1dG8gc3ViRXZlbnQgPSBhZG9wdENGKElPSElERXZlbnRDcmVhdGVEaWdpdGl6ZXJGaW5n
ZXJFdmVudChrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBtYWNoVGltZSwKICAgICAgICAgICAgIFt0b3Vj
aEluZm9bSElERXZlbnRUb3VjaElES2V5XSBpbnRWYWx1ZV0sICAgICAgICAgICAgICAgLy8gaW5k
ZXgKICAgICAgICAgICAgIDIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gaWRlbnRpZmllciAod2hpY2ggZmluZ2VyIHdlIHRoaW5rIGl0IGlz
KS4gRklYTUU6IHRoaXMgc2hvdWxkIGNvbWUgZnJvbSB0aGUgZGF0YS4KICAgICAgICAgICAgIGNo
aWxkRXZlbnRNYXNrLApAQCAtMzMwLDEzICszMzAsMTIgQEAgLSAoSU9ISURFdmVudFJlZilfY3Jl
YXRlSU9ISURFdmVudFdpdGhJbmZvOihOU0RpY3Rpb25hcnkgKilpbmZvCiAgICAgICAgICAgICBb
dG91Y2hJbmZvW0hJREV2ZW50VHdpc3RLZXldIGZsb2F0VmFsdWVdLAogICAgICAgICAgICAgdG91
Y2gsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBy
YW5nZQogICAgICAgICAgICAgdG91Y2gsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvLyB0b3VjaAotICAgICAgICAgICAga0lPSElERXZlbnRPcHRpb25O
b25lKTsKKyAgICAgICAgICAgIGtJT0hJREV2ZW50T3B0aW9uTm9uZSkpOwogCi0gICAgICAgIElP
SElERXZlbnRTZXRGbG9hdFZhbHVlKHN1YkV2ZW50LCBrSU9ISURFdmVudEZpZWxkRGlnaXRpemVy
TWFqb3JSYWRpdXMsIFt0b3VjaEluZm9bSElERXZlbnRNYWpvclJhZGl1c0tleV0gZmxvYXRWYWx1
ZV0pOwotICAgICAgICBJT0hJREV2ZW50U2V0RmxvYXRWYWx1ZShzdWJFdmVudCwga0lPSElERXZl
bnRGaWVsZERpZ2l0aXplck1pbm9yUmFkaXVzLCBbdG91Y2hJbmZvW0hJREV2ZW50TWlub3JSYWRp
dXNLZXldIGZsb2F0VmFsdWVdKTsKKyAgICAgICAgSU9ISURFdmVudFNldEZsb2F0VmFsdWUoc3Vi
RXZlbnQuZ2V0KCksIGtJT0hJREV2ZW50RmllbGREaWdpdGl6ZXJNYWpvclJhZGl1cywgW3RvdWNo
SW5mb1tISURFdmVudE1ham9yUmFkaXVzS2V5XSBmbG9hdFZhbHVlXSk7CisgICAgICAgIElPSElE
RXZlbnRTZXRGbG9hdFZhbHVlKHN1YkV2ZW50LmdldCgpLCBrSU9ISURFdmVudEZpZWxkRGlnaXRp
emVyTWlub3JSYWRpdXMsIFt0b3VjaEluZm9bSElERXZlbnRNaW5vclJhZGl1c0tleV0gZmxvYXRW
YWx1ZV0pOwogCi0gICAgICAgIElPSElERXZlbnRBcHBlbmRFdmVudChldmVudFJlZiwgc3ViRXZl
bnQsIDApOwotICAgICAgICBDRlJlbGVhc2Uoc3ViRXZlbnQpOworICAgICAgICBJT0hJREV2ZW50
QXBwZW5kRXZlbnQoZXZlbnRSZWYsIHN1YkV2ZW50LmdldCgpLCAwKTsKICAgICB9CiAKICAgICBy
ZXR1cm4gZXZlbnRSZWY7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9F
dmVudFNlbmRlclByb3h5Lm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvRXZlbnRTZW5k
ZXJQcm94eS5tbQppbmRleCBiYWNjMTQxMTU0MzMxYjc5ZDFhM2NlZDY4MWM3Zjk0ODk4OGI5MDY2
Li44ZTk5NDdiMGIzMjQwZjNmYzA5YjNjNmFkYjY1ZThmMmUwMmNmZWQ0IDEwMDY0NAotLS0gYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9FdmVudFNlbmRlclByb3h5Lm1tCisrKyBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvbWFjL0V2ZW50U2VuZGVyUHJveHkubW0KQEAgLTk1LDE3ICs5NSwx
NiBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdFByZXNzdXJlRXZlbnRBdExvY2F0aW9uOihOU1BvaW50
KWxvY2F0aW9uIGdsb2JhbExvY2F0aW9uOihOUwogICAgICAgICBicmVhazsKICAgICB9CiAKLSAg
ICBDR0V2ZW50UmVmIGNnRXZlbnQgPSBDR0V2ZW50Q3JlYXRlKG51bGxwdHIpOwotICAgIENHRXZl
bnRTZXRUeXBlKGNnRXZlbnQsIChDR0V2ZW50VHlwZSlrQ0dTRXZlbnRHZXN0dXJlKTsKLSAgICBD
R0V2ZW50U2V0SW50ZWdlclZhbHVlRmllbGQoY2dFdmVudCwga0NHRXZlbnRHZXN0dXJlSElEVHlw
ZSwgMzIpOwotICAgIENHRXZlbnRTZXRJbnRlZ2VyVmFsdWVGaWVsZChjZ0V2ZW50LCBrQ0dFdmVu
dEdlc3R1cmVQaGFzZSwgZ2VzdHVyZVBoYXNlKTsKLSAgICBDR0V2ZW50U2V0RG91YmxlVmFsdWVG
aWVsZChjZ0V2ZW50LCBrQ0dFdmVudFN0YWdlUHJlc3N1cmUsIHByZXNzdXJlKTsKLSAgICBDR0V2
ZW50U2V0RG91YmxlVmFsdWVGaWVsZChjZ0V2ZW50LCBrQ0dFdmVudFRyYW5zaXRpb25Qcm9ncmVz
cywgcHJlc3N1cmUpOwotICAgIENHRXZlbnRTZXRJbnRlZ2VyVmFsdWVGaWVsZChjZ0V2ZW50LCBr
Q0dFdmVudEdlc3R1cmVTdGFnZSwgc3RhZ2VUcmFuc2l0aW9uKTsKLSAgICBDR0V2ZW50U2V0SW50
ZWdlclZhbHVlRmllbGQoY2dFdmVudCwga0NHRXZlbnRHZXN0dXJlQmVoYXZpb3IsIGtDR1NHZXN0
dXJlQmVoYXZpb3JEZWVwUHJlc3MpOwotCi0gICAgc2VsZiA9IFtzdXBlciBfaW5pdFdpdGhDR0V2
ZW50OmNnRXZlbnQgZXZlbnRSZWY6bnVsbHB0cl07Ci0gICAgQ0ZSZWxlYXNlKGNnRXZlbnQpOwor
ICAgIGF1dG8gY2dFdmVudCA9IGFkb3B0Q0YoQ0dFdmVudENyZWF0ZShudWxscHRyKSk7CisgICAg
Q0dFdmVudFNldFR5cGUoY2dFdmVudC5nZXQoKSwgKENHRXZlbnRUeXBlKWtDR1NFdmVudEdlc3R1
cmUpOworICAgIENHRXZlbnRTZXRJbnRlZ2VyVmFsdWVGaWVsZChjZ0V2ZW50LmdldCgpLCBrQ0dF
dmVudEdlc3R1cmVISURUeXBlLCAzMik7CisgICAgQ0dFdmVudFNldEludGVnZXJWYWx1ZUZpZWxk
KGNnRXZlbnQuZ2V0KCksIGtDR0V2ZW50R2VzdHVyZVBoYXNlLCBnZXN0dXJlUGhhc2UpOworICAg
IENHRXZlbnRTZXREb3VibGVWYWx1ZUZpZWxkKGNnRXZlbnQuZ2V0KCksIGtDR0V2ZW50U3RhZ2VQ
cmVzc3VyZSwgcHJlc3N1cmUpOworICAgIENHRXZlbnRTZXREb3VibGVWYWx1ZUZpZWxkKGNnRXZl
bnQuZ2V0KCksIGtDR0V2ZW50VHJhbnNpdGlvblByb2dyZXNzLCBwcmVzc3VyZSk7CisgICAgQ0dF
dmVudFNldEludGVnZXJWYWx1ZUZpZWxkKGNnRXZlbnQuZ2V0KCksIGtDR0V2ZW50R2VzdHVyZVN0
YWdlLCBzdGFnZVRyYW5zaXRpb24pOworICAgIENHRXZlbnRTZXRJbnRlZ2VyVmFsdWVGaWVsZChj
Z0V2ZW50LmdldCgpLCBrQ0dFdmVudEdlc3R1cmVCZWhhdmlvciwga0NHU0dlc3R1cmVCZWhhdmlv
ckRlZXBQcmVzcyk7CisKKyAgICBzZWxmID0gW3N1cGVyIF9pbml0V2l0aENHRXZlbnQ6Y2dFdmVu
dC5nZXQoKSBldmVudFJlZjpudWxscHRyXTsKIAogICAgIGlmICghc2VsZikKICAgICAgICAgcmV0
dXJuIG5pbDsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL1VJU2NyaXB0
Q29udHJvbGxlck1hYy5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL1VJU2NyaXB0Q29u
dHJvbGxlck1hYy5tbQppbmRleCA2MGJlOTU3ZTA1N2UyNGJlMGZiYWZmYWYyYzM4MjE1NzRhNzY0
MTUzLi5iYWJlOTU3ZDExYjIwNDZkNWYzNmVkNGRkYzcxYmJkN2Q2ZTYwNjFiIDEwMDY0NAotLS0g
YS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9VSVNjcmlwdENvbnRyb2xsZXJNYWMubW0KKysr
IGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvVUlTY3JpcHRDb250cm9sbGVyTWFjLm1tCkBA
IC01MywxNCArNTMsMTQgQEAgUmVmPFVJU2NyaXB0Q29udHJvbGxlcj4gVUlTY3JpcHRDb250cm9s
bGVyOjpjcmVhdGUoVUlTY3JpcHRDb250ZXh0JiBjb250ZXh0KQogICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFVJU2NyaXB0Q29udHJvbGxlck1hYyhjb250ZXh0KSk7CiB9CiAKLXN0YXRpYyBOU1N0
cmluZyAqbnNTdHJpbmcoSlNTdHJpbmdSZWYgc3RyaW5nKQorc3RhdGljIFJldGFpblB0cjxDRlN0
cmluZ1JlZj4gY2ZTdHJpbmcoSlNTdHJpbmdSZWYgc3RyaW5nKQogewotICAgIHJldHVybiBDRkJy
aWRnaW5nUmVsZWFzZShKU1N0cmluZ0NvcHlDRlN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBz
dHJpbmcpKTsKKyAgICByZXR1cm4gYWRvcHRDRihKU1N0cmluZ0NvcHlDRlN0cmluZyhrQ0ZBbGxv
Y2F0b3JEZWZhdWx0LCBzdHJpbmcpKTsKIH0KIAogdm9pZCBVSVNjcmlwdENvbnRyb2xsZXJNYWM6
OnJlcGxhY2VUZXh0QXRSYW5nZShKU1N0cmluZ1JlZiB0ZXh0LCBpbnQgbG9jYXRpb24sIGludCBs
ZW5ndGgpCiB7Ci0gICAgW3dlYlZpZXcoKSBfaW5zZXJ0VGV4dDpuc1N0cmluZyh0ZXh0KSByZXBs
YWNlbWVudFJhbmdlOk5TTWFrZVJhbmdlKGxvY2F0aW9uID09IC0xID8gTlNOb3RGb3VuZCA6IGxv
Y2F0aW9uLCBsZW5ndGgpXTsKKyAgICBbd2ViVmlldygpIF9pbnNlcnRUZXh0OihfX2JyaWRnZSBO
U1N0cmluZyAqKWNmU3RyaW5nKHRleHQpLmdldCgpIHJlcGxhY2VtZW50UmFuZ2U6TlNNYWtlUmFu
Z2UobG9jYXRpb24gPT0gLTEgPyBOU05vdEZvdW5kIDogbG9jYXRpb24sIGxlbmd0aCldOwogfQog
CiB2b2lkIFVJU2NyaXB0Q29udHJvbGxlck1hYzo6em9vbVRvU2NhbGUoZG91YmxlIHNjYWxlLCBK
U1ZhbHVlUmVmIGNhbGxiYWNrKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>