<?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>221932</bug_id>
          
          <creation_ts>2021-02-15 15:10:20 -0800</creation_ts>
          <short_desc>Reduce explicit usage of [objC autorelease] in WebKit</short_desc>
          <delta_ts>2021-02-18 22:12:44 -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>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=221914</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=222060</see_also>
          <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>
          <dependson>221914</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>aboxhall</cc>
    
    <cc>apinheiro</cc>
    
    <cc>bburg</cc>
    
    <cc>cfleizach</cc>
    
    <cc>darin</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>eric.carlson</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>mark.lam</cc>
    
    <cc>mifenton</cc>
    
    <cc>msaboff</cc>
    
    <cc>philipj</cc>
    
    <cc>saam</cc>
    
    <cc>samuel_white</cc>
    
    <cc>sergio</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1729416</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-02-15 15:10:20 -0800</bug_when>
    <thetext>Reduce explicit usage of [objC autorelease] in WebKit by using RetainPtr&lt;&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1729449</commentid>
    <comment_count>1</comment_count>
      <attachid>420390</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-02-15 16:28:37 -0800</bug_when>
    <thetext>Created attachment 420390
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1729482</commentid>
    <comment_count>2</comment_count>
      <attachid>420404</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-02-15 17:28:33 -0800</bug_when>
    <thetext>Created attachment 420404
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1729837</commentid>
    <comment_count>3</comment_count>
      <attachid>420513</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-02-16 11:48:23 -0800</bug_when>
    <thetext>Created attachment 420513
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1729838</commentid>
    <comment_count>4</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2021-02-16 11:49:08 -0800</bug_when>
    <thetext>This patch modifies the inspector protocol generator. Please ensure that you have rebaselined any generator test results (i.e., by running `Tools/Scripts/run-inspector-generator-tests --reset-results`)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1729894</commentid>
    <comment_count>5</comment_count>
      <attachid>420513</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2021-02-16 13:20:39 -0800</bug_when>
    <thetext>Comment on attachment 420513
Patch

r=me -- note the style bot comment about test results</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1729896</commentid>
    <comment_count>6</comment_count>
      <attachid>420530</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-02-16 13:23:07 -0800</bug_when>
    <thetext>Created attachment 420530
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1730007</commentid>
    <comment_count>7</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-02-16 16:00:08 -0800</bug_when>
    <thetext>Committed r272936: &lt;https://commits.webkit.org/r272936&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 420530.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1730008</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-02-16 16:02:44 -0800</bug_when>
    <thetext>&lt;rdar://problem/74410900&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1731016</commentid>
    <comment_count>9</comment_count>
      <attachid>420530</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-02-18 13:51:39 -0800</bug_when>
    <thetext>Comment on attachment 420530
Patch

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

Looking back at this to see where we have opportunity to use a little less autorelease.

&gt; Source/JavaScriptCore/API/JSContext.mm:71
&gt; +    return [self initWithVirtualMachine:adoptNS([[JSVirtualMachine alloc] init]).autorelease()];

get()

&gt; Source/JavaScriptCore/API/JSWrapperMap.mm:638
&gt; +    return m_classMap.get()[(id)cls] = adoptNS([[JSObjCClassInfo alloc] initForClass:cls]).autorelease();

get()

&gt; Source/JavaScriptCore/inspector/scripts/codegen/objc_generator.py:408
&gt; +            return &apos;adoptNS([[%s alloc] initWithJSONObject:%s]).autorelease()&apos; % (objc_class, var_name)

This should be changed to use RetainPtr instead of autorelease.

&gt; Source/WebCore/accessibility/ios/WebAccessibilityObjectWrapperIOS.mm:2550
&gt; +            object = adoptNS([[NSMutableAttributedString alloc] initWithString:[NSString stringWithCharacters:&amp;attachmentChar length:1] attributes:@{ UIAccessibilityTokenAttachment : object }]).autorelease();

Seems like we could use RetainPtr instead of autorelease here.

&gt; Source/WebCore/editing/cocoa/WebContentReaderCocoa.mm:131
&gt; +        @&quot;WebResourceHandler&quot;: adoptNS([WebArchiveResourceWebResourceHandler new]).autorelease(),

get()

&gt; Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:923
&gt; +            resourceLoader.URLSession = (NSURLSession *)adoptNS([[WebCoreNSURLSession alloc] initWithResourceLoader:*mediaResourceLoader delegate:resourceLoader.URLSessionDataDelegate delegateQueue:resourceLoader.URLSessionDataDelegateQueue]).autorelease();

get()

&gt; Source/WebCore/platform/ios/WebAVPlayerController.mm:72
&gt; +    self.playerControllerProxy = adoptNS([allocAVPlayerControllerInstance() init]).autorelease();

get()

&gt; Source/WebCore/platform/ios/wak/WAKView.mm:241
&gt; +    [adoptNS([subviewReferences copy]).autorelease() makeObjectsPerformSelector:@selector(removeFromSuperview)];

get()

&gt; Source/WebCore/platform/network/cocoa/WebCoreNSURLSession.mm:666
&gt; +        request = mutableRequest.autorelease();

I think we can use a local RetainPtr instead.

&gt; Source/WebCore/platform/network/mac/ResourceHandleMac.mm:176
&gt; +        nsRequest = copyRequestWithStorageSession(d-&gt;m_storageSession.get(), nsRequest).autorelease();

I think we can use a local RetainPtr instead.

&gt; Source/WebCore/platform/network/mac/ResourceHandleMac.mm:183
&gt; +    NSMutableDictionary *streamProperties = streamPropertiesFromClient ? adoptNS([streamPropertiesFromClient mutableCopy]).autorelease() : [NSMutableDictionary dictionary];

I think we can use RetainPtr instead.

&gt; Source/WebKit/UIProcess/API/Cocoa/NSAttributedString.mm:313
&gt; +                finish(retainPtr(attributedString).autorelease(), retainPtr(documentAttributes).autorelease(), nil);

I don’t think we need retain/autorelease here at all.

&gt; Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm:1219
&gt; +        completionHandler(adoptNS([[WKFindResult alloc] _initWithMatchFound:NO]).autorelease());

get()

&gt; Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm:1224
&gt; +        handler(adoptNS([[WKFindResult alloc] _initWithMatchFound:found]).autorelease());

get()

&gt; Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm:1713
&gt; +        completionHandler(node.autorelease());

I don’t think we need retain/autorelease at all here.

&gt; Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm:2580
&gt; +            handler(retainPtr(attributedString.string.get()).autorelease(), retainPtr(attributedString.documentAttributes.get()).autorelease(), nil);

I don’t think we need retain/autorelease here at all.

&gt; Source/WebKit/UIProcess/API/Cocoa/_WKAutomationSession.mm:44
&gt; +    return [self initWithConfiguration:adoptNS([[_WKAutomationSessionConfiguration alloc] init]).autorelease()];

get()

&gt; Source/WebKit/UIProcess/API/Cocoa/_WKInspector.mm:191
&gt; +        capturedBlock(nil, retainPtr(wrapper(API::InspectorExtension::create(protectedExtensionID.get(), protectedSelf-&gt;_inspector-&gt;extensionController()))).autorelease());

I don’t think we need retain/autorelease at all here.

&gt; Source/WebKit/UIProcess/API/Cocoa/_WKRemoteWebInspectorViewController.mm:171
&gt; +        capturedBlock(nil, retainPtr(wrapper(API::InspectorExtension::create(protectedExtensionID.get(), protectedSelf-&gt;m_remoteInspectorProxy-&gt;extensionController()))).autorelease());

I don’t think we need retain/autorelease at all here.

&gt; Source/WebKit/UIProcess/API/Cocoa/_WKUserContentExtensionStore.mm:75
&gt; +        completionHandler(contentFilter.autorelease(), toUserContentRuleListStoreError(error));

get()

&gt; Source/WebKit/UIProcess/API/Cocoa/_WKUserContentExtensionStore.mm:83
&gt; +        completionHandler(contentFilter.autorelease(), toUserContentRuleListStoreError(error));

get()

&gt; Source/WebKit/UIProcess/Automation/ios/WebAutomationSessionIOS.mm:135
&gt; +        [eventsToBeSent addObject:adoptNS([[::WebEvent alloc] initWithKeyEventType:WebEventKeyDown timeStamp:CFAbsoluteTimeGetCurrent() characters:characters charactersIgnoringModifiers:unmodifiedCharacters modifiers:m_currentModifiers isRepeating:NO withFlags:inputFlags withInputManagerHint:nil keyCode:keyCode isTabKey:isTabKey]).autorelease()];

get()

&gt; Source/WebKit/UIProcess/Automation/ios/WebAutomationSessionIOS.mm:141
&gt; +        [eventsToBeSent addObject:adoptNS([[::WebEvent alloc] initWithKeyEventType:WebEventKeyUp timeStamp:CFAbsoluteTimeGetCurrent() characters:characters charactersIgnoringModifiers:unmodifiedCharacters modifiers:m_currentModifiers isRepeating:NO withFlags:inputFlags withInputManagerHint:nil keyCode:keyCode isTabKey:isTabKey]).autorelease()];

get()

&gt; Source/WebKit/UIProcess/Automation/ios/WebAutomationSessionIOS.mm:146
&gt; +        [eventsToBeSent addObject:adoptNS([[::WebEvent alloc] initWithKeyEventType:WebEventKeyDown timeStamp:CFAbsoluteTimeGetCurrent() characters:characters charactersIgnoringModifiers:unmodifiedCharacters modifiers:m_currentModifiers isRepeating:NO withFlags:inputFlags withInputManagerHint:nil keyCode:keyCode isTabKey:isTabKey]).autorelease()];

get()

&gt; Source/WebKit/UIProcess/Automation/ios/WebAutomationSessionIOS.mm:147
&gt; +        [eventsToBeSent addObject:adoptNS([[::WebEvent alloc] initWithKeyEventType:WebEventKeyUp timeStamp:CFAbsoluteTimeGetCurrent() characters:characters charactersIgnoringModifiers:unmodifiedCharacters modifiers:m_currentModifiers isRepeating:NO withFlags:inputFlags withInputManagerHint:nil keyCode:keyCode isTabKey:isTabKey]).autorelease()];

get()

&gt; Source/WebKit/UIProcess/Cocoa/WKContactPicker.mm:294
&gt; +        [contacts addObject:contact.autorelease()];

get()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1731025</commentid>
    <comment_count>10</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-02-18 14:25:08 -0800</bug_when>
    <thetext>Reopening to attach new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1731026</commentid>
    <comment_count>11</comment_count>
      <attachid>420872</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-02-18 14:25:11 -0800</bug_when>
    <thetext>Created attachment 420872
Follow-up</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1731033</commentid>
    <comment_count>12</comment_count>
      <attachid>420874</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-02-18 14:44:36 -0800</bug_when>
    <thetext>Created attachment 420874
Follow up</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1731222</commentid>
    <comment_count>13</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-02-18 22:12:39 -0800</bug_when>
    <thetext>Committed r273128: &lt;https://commits.webkit.org/r273128&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 420874.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>420390</attachid>
            <date>2021-02-15 16:28:37 -0800</date>
            <delta_ts>2021-02-15 17:28:31 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221932-20210215162836.patch</filename>
            <type>text/plain</type>
            <size>144502</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyODcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
MWE0NDIyOWVlMWRmNDkwMDA1MDVkNDVjOWRiMzAxZWIyNjdmYmY1Li44ODBkMDU3YjM2NzdiNWVk
M2Y1MWVmYTY2ZWZhZDQ1MmVlZDRlNjE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMiBAQAorMjAyMS0wMi0xNSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIFJlZHVjZSBleHBsaWNpdCB1c2FnZSBvZiBbb2JqQyBhdXRvcmVsZWFzZV0gaW4g
V2ViS2l0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MjE5MzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBS
ZWR1Y2UgZXhwbGljaXQgdXNhZ2Ugb2YgW29iakMgYXV0b3JlbGVhc2VdIGluIFdlYktpdCBieSB1
c2luZyBSZXRhaW5QdHI8Pi4KKworICAgICAgICAqIEFQSS9KU0NvbnRleHQubW06CisgICAgICAg
ICgtW0pTQ29udGV4dCBpbml0XSk6CisgICAgICAgICgrW0pTQ29udGV4dCBjb250ZXh0V2l0aEpT
R2xvYmFsQ29udGV4dFJlZjpdKToKKyAgICAgICAgKiBBUEkvSlNNYW5hZ2VkVmFsdWUubW06Cisg
ICAgICAgICgrW0pTTWFuYWdlZFZhbHVlIG1hbmFnZWRWYWx1ZVdpdGhWYWx1ZTpdKToKKyAgICAg
ICAgKCtbSlNNYW5hZ2VkVmFsdWUgbWFuYWdlZFZhbHVlV2l0aFZhbHVlOmFuZE93bmVyOl0pOgor
ICAgICAgICAqIEFQSS9KU1NjcmlwdC5tbToKKyAgICAgICAgKCtbSlNTY3JpcHQgc2NyaXB0T2ZU
eXBlOndpdGhTb3VyY2U6YW5kU291cmNlVVJMOmFuZEJ5dGVjb2RlQ2FjaGU6aW5WaXJ0dWFsTWFj
aGluZTplcnJvcjpdKToKKyAgICAgICAgKCtbSlNTY3JpcHQgc2NyaXB0T2ZUeXBlOm1lbW9yeU1h
cHBlZEZyb21BU0NJSUZpbGU6d2l0aFNvdXJjZVVSTDphbmRCeXRlY29kZUNhY2hlOmluVmlydHVh
bE1hY2hpbmU6ZXJyb3I6XSk6CisgICAgICAgICogQVBJL0pTVmlydHVhbE1hY2hpbmUubW06Cisg
ICAgICAgICgrW0pTVmlydHVhbE1hY2hpbmUgdmlydHVhbE1hY2hpbmVXaXRoQ29udGV4dEdyb3Vw
UmVmOl0pOgorICAgICAgICAqIEFQSS9KU1dyYXBwZXJNYXAubW06CisgICAgICAgICgtW0pTV3Jh
cHBlck1hcCBjbGFzc0luZm9Gb3JDbGFzczpdKToKKyAgICAgICAgKC1bSlNXcmFwcGVyTWFwIG9i
amNXcmFwcGVyRm9ySlNWYWx1ZVJlZjppbkNvbnRleHQ6XSk6CisgICAgICAgICogaW5zcGVjdG9y
L3JlbW90ZS9jb2NvYS9SZW1vdGVDb25uZWN0aW9uVG9UYXJnZXRDb2NvYS5tbToKKyAgICAgICAg
KEluc3BlY3Rvcjo6UmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0Ojpjb25uZWN0aW9uSWRlbnRpZmll
ciBjb25zdCk6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldDo6
ZGVzdGluYXRpb24gY29uc3QpOgorICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4v
b2JqY19nZW5lcmF0b3IucHk6CisgICAgICAgIChPYmpDR2VuZXJhdG9yLm9iamNfcHJvdG9jb2xf
aW1wb3J0X2V4cHJlc3Npb25fZm9yX3ZhcmlhYmxlKToKKwogMjAyMS0wMi0xNSAgQ2hyaXMgRHVt
ZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFJlZHVjZSBleHBsaWNpdCB1c2FnZSBv
ZiBbb2JqQyByZWxlYXNlXSBpbiBXZWJLaXQgZXZlbiBtb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTVmN2Ez
MjU2OWJlYTViMDRkMzU0MGY5ZmI0ODFjNmQyNGIwODQ2Ny4uMWVhMmVkM2Y4MWNlZTYxZmRiY2I3
NGM0MWViMDQ3MDhmZmRmYzdlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkxIEBACisyMDIxLTAy
LTE1ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgUmVkdWNlIGV4
cGxpY2l0IHVzYWdlIG9mIFtvYmpDIGF1dG9yZWxlYXNlXSBpbiBXZWJLaXQKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMTkzMgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlZHVjZSBleHBsaWNpdCB1c2Fn
ZSBvZiBbb2JqQyBhdXRvcmVsZWFzZV0gaW4gV2ViS2l0IGJ5IHVzaW5nIFJldGFpblB0cjw+Lgor
CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBw
ZXJJT1MubW06CisgICAgICAgICgrW1dlYkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyIHRleHRNYXJr
ZXJXaXRoVmlzaWJsZVBvc2l0aW9uOmNhY2hlOl0pOgorICAgICAgICAoK1tXZWJBY2Nlc3NpYmls
aXR5VGV4dE1hcmtlciB0ZXh0TWFya2VyV2l0aENoYXJhY3Rlck9mZnNldDpjYWNoZTpdKToKKyAg
ICAgICAgKCtbV2ViQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIgc3RhcnRPckVuZFRleHRNYXJrZXJG
b3JSYW5nZTppc1N0YXJ0OmNhY2hlOl0pOgorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2Jq
ZWN0V3JhcHBlciBfcHJlcGFyZUFjY2Vzc2liaWxpdHlDYWxsXSk6CisgICAgICAgICgtW1dlYkFj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFycmF5T2ZUZXh0Rm9yVGV4dE1hcmtlcnM6YXR0cmli
dXRlZDpdKToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgX3N0cmlu
Z0Zyb21TdGFydE1hcmtlcjp0b0VuZE1hcmtlcjphdHRyaWJ1dGVkOl0pOgorICAgICAgICAoLVtX
ZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBuZXh0TWFya2VyRm9yQ2hhcmFjdGVyT2Zmc2V0
Ol0pOgorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBwcmV2aW91c01h
cmtlckZvckNoYXJhY3Rlck9mZnNldDpdKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L21hYy9B
WE9iamVjdENhY2hlTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6dGV4dFJlcGxhY2VtZW50Q2hh
bmdlRGljdGlvbmFyeSk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJp
bGl0eU9iamVjdFdyYXBwZXJCYXNlLm1tOgorICAgICAgICAoYXJyYXlSZW1vdmluZ05vblN1cHBv
cnRlZFR5cGVzKToKKyAgICAgICAgKGRpY3Rpb25hcnlSZW1vdmluZ05vblN1cHBvcnRlZFR5cGVz
KToKKyAgICAgICAgKiBicmlkZ2Uvb2JqYy9XZWJTY3JpcHRPYmplY3QubW06CisgICAgICAgIChX
ZWJDb3JlOjpnZXRKU1dyYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlSlNXcmFwcGVy
KToKKyAgICAgICAgKCtbV2ViVW5kZWZpbmVkIHVuZGVmaW5lZF0pOgorICAgICAgICAqIGJyaWRn
ZS90ZXN0YmluZGluZ3MubW06CisgICAgICAgICgtW015Rmlyc3RJbnRlcmZhY2Ugc2V0SlNPYmpl
Y3Q6XSk6CisgICAgICAgICgtW015Rmlyc3RJbnRlcmZhY2UgY2FsbEpTT2JqZWN0OjpdKToKKyAg
ICAgICAgKiBlZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW06CisgICAgICAgIChfc2hhZG93
Rm9yU2hhZG93U3R5bGUpOgorICAgICAgICAoSFRNTENvbnZlcnRlcjo6X2FkZEF0dGFjaG1lbnRG
b3JFbGVtZW50KToKKyAgICAgICAgKF9kYXRlRm9yU3RyaW5nKToKKyAgICAgICAgKGZpbGVXcmFw
cGVyRm9yVVJMKToKKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL1dlYkFyY2hpdmVSZXNvdXJjZVdl
YlJlc291cmNlSGFuZGxlci5tbToKKyAgICAgICAgKC1bV2ViQXJjaGl2ZVJlc291cmNlV2ViUmVz
b3VyY2VIYW5kbGVyIHJlc291cmNlRm9yRGF0YTpVUkw6TUlNRVR5cGU6dGV4dEVuY29kaW5nTmFt
ZTpmcmFtZU5hbWU6XSk6CisgICAgICAgICogZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVy
Q29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjphdHRyaWJ1dGVzRm9yQXR0cmlidXRlZFN0cmlu
Z0NvbnZlcnNpb24pOgorICAgICAgICAqIGxvYWRlci9tYWMvTG9hZGVyTlNVUkxFeHRyYXMubW06
CisgICAgICAgIChmaWxlbmFtZUJ5Rml4aW5nSWxsZWdhbENoYXJhY3RlcnMpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25PYmpDOjpjcmVhdGVBVkFzc2V0Rm9yVVJMKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9pb3MvV2ViQVZQbGF5ZXJDb250cm9sbGVyLm1tOgorICAgICAgICAoLVtXZWJBVlBsYXllckNv
bnRyb2xsZXIgaW5pdF0pOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9XZWJFdmVudC5tbToKKyAg
ICAgICAgKC1bV2ViRXZlbnQgY2hhcmFjdGVyc10pOgorICAgICAgICAoLVtXZWJFdmVudCBjaGFy
YWN0ZXJzSWdub3JpbmdNb2RpZmllcnNdKToKKyAgICAgICAgKC1bV2ViRXZlbnQgaW5wdXRNYW5h
Z2VySGludF0pOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9XZWJJdGVtUHJvdmlkZXJQYXN0ZWJv
YXJkLm1tOgorICAgICAgICAoK1tXZWJJdGVtUHJvdmlkZXJMb2FkUmVzdWx0IGxvYWRSZXN1bHRX
aXRoSXRlbVByb3ZpZGVyOnR5cGVzVG9Mb2FkOl0pOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9X
ZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQubW06CisgICAgICAgICgtW1dlYlZpZGVv
RnVsbHNjcmVlbkNvbnRyb2xsZXIgZGlkRmluaXNoRnVsbHNjcmVlbjpdKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9pb3Mvd2FrL1dBS1ZpZXcubW06CisgICAgICAgICgrW1dBS1ZpZXcgX3dyYXBwZXJG
b3JWaWV3UmVmOl0pOgorICAgICAgICAoLVtXQUtWaWV3IGRlYWxsb2NdKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OmZpbGVXcmFw
cGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvV2ViQ29yZU5TVVJMRXh0cmFzLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6VVJMQnlDYW5vbmljYWxpemluZ1VSTCk6CisgICAgICAgICogcGxhdGZv
cm0vbWFjL1dlYk5TQXR0cmlidXRlZFN0cmluZ0V4dHJhcy5tbToKKyAgICAgICAgKFdlYkNvcmU6
OmF0dHJpYnV0ZWRTdHJpbmdCeVN0cmlwcGluZ0F0dGFjaG1lbnRDaGFyYWN0ZXJzKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVxdWVzdC5oOgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ29jb2EubW06CisgICAg
ICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246Om5zQ29va2llU3RvcmFnZSBjb25z
dCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RDb2Nv
YS5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdDo6bnNVUkxSZXF1ZXN0IGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdDo6c2V0U3RvcmFnZVNlc3Np
b24pOgorICAgICAgICAoV2ViQ29yZTo6Y29weVJlcXVlc3RXaXRoU3RvcmFnZVNlc3Npb24pOgor
ICAgICAgICAoV2ViQ29yZTo6Y2FjaGVkUmVzcG9uc2VGb3JSZXF1ZXN0KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW06CisgICAgICAgICgt
W1dlYkNvcmVOU1VSTFNlc3Npb24gZGF0YVRhc2tXaXRoUmVxdWVzdDpdKToKKyAgICAgICAgKC1b
V2ViQ29yZU5TVVJMU2Vzc2lvbiBkYXRhVGFza1dpdGhVUkw6XSk6CisgICAgICAgICgtW1dlYkNv
cmVOU1VSTFNlc3Npb25EYXRhVGFzayBpbml0V2l0aFNlc3Npb246aWRlbnRpZmllcjpyZXF1ZXN0
Ol0pOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL0F1dGhlbnRpY2F0aW9uTWFjLm1t
OgorICAgICAgICAoV2ViQ29yZTo6bWFjKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21h
Yy9SZXNvdXJjZUVycm9yTWFjLm1tOgorICAgICAgICAoZGljdGlvbmFyeVRoYXRDYW5Db2RlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUhhbmRsZU1hYy5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpjcmVhdGVOU1VSTENvbm5lY3Rpb24pOgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVVUkxSZXNwb25zZS5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OnN5bnRoZXNpemVSZWRpcmVjdFJlc3BvbnNlSWZOZWNlc3NhcnkpOgor
ICAgICAgICAqIHBsYXRmb3JtL3RleHQvaW9zL0xvY2FsaXplZERhdGVDYWNoZS5oOgorICAgICAg
ICAqIHBsYXRmb3JtL3RleHQvaW9zL0xvY2FsaXplZERhdGVDYWNoZS5tbToKKyAgICAgICAgKFdl
YkNvcmU6OkxvY2FsaXplZERhdGVDYWNoZTo6Zm9ybWF0dGVyRm9yRGF0ZVR5cGUpOgorICAgICAg
ICAoV2ViQ29yZTo6TG9jYWxpemVkRGF0ZUNhY2hlOjpjcmVhdGVGb3JtYXR0ZXJGb3JUeXBlKToK
KyAgICAgICAgKFdlYkNvcmU6OkxvY2FsaXplZERhdGVDYWNoZTo6Y2FsY3VsYXRlTWF4aW11bVdp
ZHRoKToKKwogMjAyMS0wMi0xNSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAg
ICAgICAgIFJlZHVjZSBleHBsaWNpdCB1c2FnZSBvZiBbb2JqQyByZWxlYXNlXSBpbiBXZWJLaXQg
ZXZlbiBtb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDRkZDZmZjFkMmRmY2VjYjc0MGY2YjJiYjhiNWQ3NzYyZTRi
NTM5YzkuLjIyZTY2YzQ3ZmIyYzRkMTU2NTQ5ZTMzMjBmN2Q4NzgyZTM1MjVlMzEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTE3IEBACisyMDIxLTAyLTE1ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBs
ZS5jb20+CisKKyAgICAgICAgUmVkdWNlIGV4cGxpY2l0IHVzYWdlIG9mIFtvYmpDIGF1dG9yZWxl
YXNlXSBpbiBXZWJLaXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIyMTkzMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFJlZHVjZSBleHBsaWNpdCB1c2FnZSBvZiBbb2JqQyBhdXRvcmVsZWFzZV0gaW4gV2Vi
S2l0IGJ5IHVzaW5nIFJldGFpblB0cjw+LgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29j
b2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbToKKyAgICAgICAgKGRvd25ncmFkZVJlcXVlc3QpOgor
ICAgICAgICAodXBkYXRlSWdub3JlU3RyaWN0VHJhbnNwb3J0U2VjdXJpdHlTZXR0aW5nSWZOZWNl
c3NhcnkpOgorICAgICAgICAoV2ViS2l0Ojpwcm94eURpY3Rpb25hcnkpOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrU2Vzc2lvbkNvY29hOjpOZXR3b3JrU2Vzc2lvbkNvY29hKToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1Nlc3Npb25Db2NvYTo6Y3JlYXRlV2ViU29ja2V0VGFzayk6CisgICAg
ICAgICogUGxhdGZvcm0vY29jb2EvV0tQYXltZW50QXV0aG9yaXphdGlvbkRlbGVnYXRlLm1tOgor
ICAgICAgICAoLVtXS1BheW1lbnRBdXRob3JpemF0aW9uRGVsZWdhdGUgY29tcGxldGVQYXltZW50
TWV0aG9kU2VsZWN0aW9uOl0pOgorICAgICAgICAoLVtXS1BheW1lbnRBdXRob3JpemF0aW9uRGVs
ZWdhdGUgY29tcGxldGVTaGlwcGluZ0NvbnRhY3RTZWxlY3Rpb246XSk6CisgICAgICAgICgtW1dL
UGF5bWVudEF1dGhvcml6YXRpb25EZWxlZ2F0ZSBjb21wbGV0ZVNoaXBwaW5nTWV0aG9kU2VsZWN0
aW9uOl0pOgorICAgICAgICAqIFNoYXJlZC9BUEkvQ29jb2EvV0tSZW1vdGVPYmplY3RDb2Rlci5t
bToKKyAgICAgICAgKGVuY29kZU9iamVjdCk6CisgICAgICAgICogU2hhcmVkL0FQSS9Db2NvYS9f
V0tSZW1vdGVPYmplY3RJbnRlcmZhY2UubW06CisgICAgICAgICgrW19XS1JlbW90ZU9iamVjdElu
dGVyZmFjZSByZW1vdGVPYmplY3RJbnRlcmZhY2VXaXRoUHJvdG9jb2w6XSk6CisgICAgICAgICog
U2hhcmVkL0NvY29hL1dLT2JqZWN0Lmg6CisgICAgICAgIChXZWJLaXQ6OndyYXBwZXIpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvTlNBdHRyaWJ1dGVkU3RyaW5nLm1tOgorICAgICAg
ICAoK1tfV0tBdHRyaWJ1dGVkU3RyaW5nV2ViVmlld0NhY2hlIGNvbmZpZ3VyYXRpb25dKToKKyAg
ICAgICAgKCtbTlNBdHRyaWJ1dGVkU3RyaW5nIF9sb2FkRnJvbUhUTUxXaXRoT3B0aW9uczpjb250
ZW50TG9hZGVyOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyLm1tOgorICAgICAgICAobWFrZVBvbGlj
eURlY2lzaW9uQmxvY2spOgorICAgICAgICAoc2V0VXBQYWdlUG9saWN5Q2xpZW50KToKKyAgICAg
ICAgKC1bV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyIGhhbmRsZV0pOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tDb250ZW50V29ybGQubW06CisgICAgICAgICgtW1dLQ29udGVu
dFdvcmxkIF91c2VyQ29udGVudFdvcmxkXSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS0ZyYW1lSW5mby5tbToKKyAgICAgICAgKC1bV0tGcmFtZUluZm8gc2VjdXJpdHlPcmlnaW5d
KToKKyAgICAgICAgKC1bV0tGcmFtZUluZm8gd2ViVmlld10pOgorICAgICAgICAoLVtXS0ZyYW1l
SW5mbyBfaGFuZGxlXSk6CisgICAgICAgICgtW1dLRnJhbWVJbmZvIF9wYXJlbnRGcmFtZUhhbmRs
ZV0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2VyU2NyaXB0Lm1tOgorICAg
ICAgICAoLVtXS1VzZXJTY3JpcHQgX3VzZXJDb250ZW50V29ybGRdKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IGNvbmZp
Z3VyYXRpb25dKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IGZpbmRTdHJpbmc6d2l0aENvbmZpZ3Vy
YXRpb246Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfZnJhbWVz
Ol0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2hhbmRsZV0pOgorICAgICAgICAoLVtXS1dlYlZp
ZXcgX3Rha2VQREZTbmFwc2hvdFdpdGhDb25maWd1cmF0aW9uOmNvbXBsZXRpb25IYW5kbGVyOl0p
OgorICAgICAgICAoLVtXS1dlYlZpZXcgX3Nlc3Npb25TdGF0ZV0pOgorICAgICAgICAoLVtXS1dl
YlZpZXcgX3Nlc3Npb25TdGF0ZVdpdGhGaWx0ZXI6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBf
Z2V0Q29udGVudHNBc0F0dHJpYnV0ZWRTdHJpbmdXaXRoQ29tcGxldGlvbkhhbmRsZXI6XSk6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnBhZ2VQcmVmZXJlbmNlcy5tbToKKyAg
ICAgICAgKCtbV0tXZWJwYWdlUHJlZmVyZW5jZXMgZGVmYXVsdFByZWZlcmVuY2VzXSk6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVjb3JkLm1tOgorICAgICAg
ICAoLVtXS1dlYnNpdGVEYXRhUmVjb3JkIF9kYXRhU2l6ZV0pOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQ29jb2EvX1dLQWN0aXZhdGVkRWxlbWVudEluZm8ubW06CisgICAgICAgICgrW19XS0Fj
dGl2YXRlZEVsZW1lbnRJbmZvIGFjdGl2YXRlZEVsZW1lbnRJbmZvV2l0aEludGVyYWN0aW9uSW5m
b3JtYXRpb25BdFBvc2l0aW9uOnVzZXJJbmZvOl0pOgorICAgICAgICAoLVtfV0tBY3RpdmF0ZWRF
bGVtZW50SW5mbyBpbWFnZV0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXR0
YWNobWVudC5tbToKKyAgICAgICAgKC1bX1dLQXR0YWNobWVudCBpbmZvXSk6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdXRvbWF0aW9uU2Vzc2lvbi5tbToKKyAgICAgICAgKC1b
X1dLQXV0b21hdGlvblNlc3Npb24gaW5pdF0pOgorICAgICAgICAoLVtfV0tBdXRvbWF0aW9uU2Vz
c2lvbiBjb25maWd1cmF0aW9uXSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tE
b3dubG9hZC5tbToKKyAgICAgICAgKCtbX1dLRG93bmxvYWQgZG93bmxvYWRXaXRoRG93bmxvYWQ6
XSk6CisgICAgICAgICgtW19XS0Rvd25sb2FkIG9yaWdpbmF0aW5nV2ViVmlld10pOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRWxlbWVudEFjdGlvbi5tbToKKyAgICAgICAgKCtb
X1dLRWxlbWVudEFjdGlvbiBlbGVtZW50QWN0aW9uV2l0aFRpdGxlOmFjdGlvbkhhbmRsZXI6XSk6
CisgICAgICAgICgrW19XS0VsZW1lbnRBY3Rpb24gX2VsZW1lbnRBY3Rpb25XaXRoVHlwZTp0aXRs
ZTphY3Rpb25IYW5kbGVyOl0pOgorICAgICAgICAoK1tfV0tFbGVtZW50QWN0aW9uIF9lbGVtZW50
QWN0aW9uV2l0aFR5cGU6Y3VzdG9tVGl0bGU6YXNzaXN0YW50Ol0pOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQ29jb2EvX1dLRnJhbWVUcmVlTm9kZS5tbToKKyAgICAgICAgKC1bX1dLRnJhbWVU
cmVlTm9kZSBzZWN1cml0eU9yaWdpbl0pOgorICAgICAgICAoLVtfV0tGcmFtZVRyZWVOb2RlIHdl
YlZpZXddKToKKyAgICAgICAgKC1bX1dLRnJhbWVUcmVlTm9kZSBfaGFuZGxlXSk6CisgICAgICAg
ICgtW19XS0ZyYW1lVHJlZU5vZGUgX3BhcmVudEZyYW1lSGFuZGxlXSk6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3IubW06CisgICAgICAgICgtW19XS0luc3BlY3Rv
ciByZWdpc3RlckV4dGVuc2lvbldpdGhJRDpkaXNwbGF5TmFtZTpjb21wbGV0aW9uSGFuZGxlcjpd
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS1Byb2Nlc3NQb29sQ29uZmlndXJh
dGlvbi5tbToKKyAgICAgICAgKC1bX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIGN1c3RvbUNs
YXNzZXNGb3JQYXJhbWV0ZXJDb2Rlcl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLUmVtb3RlV2ViSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIubW06CisgICAgICAgICgtW19XS1Jl
bW90ZVdlYkluc3BlY3RvclZpZXdDb250cm9sbGVyIHJlZ2lzdGVyRXh0ZW5zaW9uV2l0aElEOmRp
c3BsYXlOYW1lOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Q29jb2EvX1dLVGV4dE1hbmlwdWxhdGlvblRva2VuLm1tOgorICAgICAgICAoLVtfV0tUZXh0TWFu
aXB1bGF0aW9uVG9rZW4gX2Rlc2NyaXB0aW9uUHJlc2VydmluZ1ByaXZhY3k6XSk6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tVc2VyQ29udGVudEV4dGVuc2lvblN0b3JlLm1tOgor
ICAgICAgICAoK1tfV0tVc2VyQ29udGVudEV4dGVuc2lvblN0b3JlIGRlZmF1bHRTdG9yZV0pOgor
ICAgICAgICAoK1tfV0tVc2VyQ29udGVudEV4dGVuc2lvblN0b3JlIHN0b3JlV2l0aFVSTDpdKToK
KyAgICAgICAgKC1bX1dLVXNlckNvbnRlbnRFeHRlbnNpb25TdG9yZSBjb21waWxlQ29udGVudEV4
dGVuc2lvbkZvcklkZW50aWZpZXI6ZW5jb2RlZENvbnRlbnRFeHRlbnNpb246Y29tcGxldGlvbkhh
bmRsZXI6XSk6CisgICAgICAgICgtW19XS1VzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmUgbG9va3Vw
Q29udGVudEV4dGVuc2lvbkZvcklkZW50aWZpZXI6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tVc2VyQ29udGVudFdvcmxkLm1tOgorICAgICAg
ICAoK1tfV0tVc2VyQ29udGVudFdvcmxkIHdvcmxkV2l0aE5hbWU6XSk6CisgICAgICAgICgrW19X
S1VzZXJDb250ZW50V29ybGQgbm9ybWFsV29ybGRdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L2lvcy9XS1dlYlZpZXdJT1MubW06CisgICAgICAgICgtW1dLV2ViVmlldyBfdWlFdmVudEF0dHJp
YnV0aW9uXSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfcmV0YWluQWN0aXZlRm9jdXNlZFN0YXRl
XSk6CisgICAgICAgICogVUlQcm9jZXNzL0F1dG9tYXRpb24vaW9zL1dlYkF1dG9tYXRpb25TZXNz
aW9uSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cGxhdGZv
cm1TaW11bGF0ZUtleWJvYXJkSW50ZXJhY3Rpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2Nv
YS9BdXRvbWF0aW9uQ2xpZW50Lm1tOgorICAgICAgICAoV2ViS2l0OjpBdXRvbWF0aW9uQ2xpZW50
OjpyZXF1ZXN0QXV0b21hdGlvblNlc3Npb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9T
YWZlQnJvd3NpbmdXYXJuaW5nQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OmFkZExpbmtBbmRS
ZXBsYWNlKToKKyAgICAgICAgKFdlYktpdDo6c2FmZUJyb3dzaW5nRGV0YWlsc1RleHQpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9TeXN0ZW1QcmV2aWV3Q29udHJvbGxlckNvY29hLm1tOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkubW06
CisgICAgICAgICgtW1dLTGF5ZXJIb3N0VmlldyBtYWtlQmFja2luZ0xheWVyXSk6CisgICAgICAg
ICogVUlQcm9jZXNzL0NvY29hL1dLQ29udGFjdFBpY2tlci5tbToKKyAgICAgICAgKC1bV0tDb250
YWN0UGlja2VyIF9jb250YWN0c0Zyb21KU0NvbnRhY3RzOl0pOgorICAgICAgICAqIFVJUHJvY2Vz
cy9Db2NvYS9XS1NhZmVCcm93c2luZ1dhcm5pbmcubW06CisgICAgICAgIChtYWtlQnV0dG9uKToK
KyAgICAgICAgKG1ha2VMYWJlbCk6CisgICAgICAgICgtW1dLU2FmZUJyb3dzaW5nV2FybmluZyBh
ZGRDb250ZW50XSk6CisgICAgICAgICgtW1dLU2FmZUJyb3dzaW5nV2FybmluZyBzaG93RGV0YWls
c0NsaWNrZWRdKToKKyAgICAgICAgKC1bV0tTYWZlQnJvd3NpbmdUZXh0VmlldyBpbml0V2l0aEF0
dHJpYnV0ZWRTdHJpbmc6Zm9yV2FybmluZzpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2Ev
V2ViVmlld0ltcGwubW06CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpmdWxsU2NyZWVu
V2luZG93KToKKwogMjAyMS0wMi0xNSAgRnVqaWkgSGlyb25vcmkgIDxIaXJvbm9yaS5GdWppaUBz
b255LmNvbT4KIAogICAgICAgICBQYWdlIHNjcm9sbGluZyBieSB3aGVlbCBldmVudHMgZG9lc24n
dCB3b3JrIGluIG5vbi1BQyBtb2RlIHBhZ2VzIGlmIEhhcmR3YXJlIEFjY2VsZXJhdGlvbiBQb2xp
Y3kgaXMgY2hhbmdlZCBkeW5hbWljYWxseSBmcm9tICJhbHdheXMiIHRvICJuZXZlciIKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0Lm1tIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHQubW0KaW5kZXggNzRiMjM0NDllNjlhOWMzOWUxODcy
MjdkYzhjNjk3YWZiNDkyNjBiZC4uNmJlYjI1YmY2YWVlZDc1OGEyMDYxMTdjYWU3MThiNzhhMDAy
M2EzNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHQubW0K
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHQubW0KQEAgLTY4LDcgKzY4
LDcgQEAgLSAodm9pZCllbnN1cmVXcmFwcGVyTWFwCiAKIC0gKGluc3RhbmNldHlwZSlpbml0CiB7
Ci0gICAgcmV0dXJuIFtzZWxmIGluaXRXaXRoVmlydHVhbE1hY2hpbmU6W1tbSlNWaXJ0dWFsTWFj
aGluZSBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdXTsKKyAgICByZXR1cm4gW3NlbGYgaW5pdFdp
dGhWaXJ0dWFsTWFjaGluZTphZG9wdE5TKFtbSlNWaXJ0dWFsTWFjaGluZSBhbGxvY10gaW5pdF0p
LmF1dG9yZWxlYXNlKCldOwogfQogCiAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhWaXJ0dWFsTWFj
aGluZTooSlNWaXJ0dWFsTWFjaGluZSAqKXZpcnR1YWxNYWNoaW5lCkBAIC00MDgsNyArNDA4LDcg
QEAgKyAoSlNDb250ZXh0ICopY29udGV4dFdpdGhKU0dsb2JhbENvbnRleHRSZWY6KEpTR2xvYmFs
Q29udGV4dFJlZilnbG9iYWxDb250ZXh0CiAgICAgSlNWaXJ0dWFsTWFjaGluZSAqdmlydHVhbE1h
Y2hpbmUgPSBbSlNWaXJ0dWFsTWFjaGluZSB2aXJ0dWFsTWFjaGluZVdpdGhDb250ZXh0R3JvdXBS
ZWY6dG9SZWYoJnRvSlMoZ2xvYmFsQ29udGV4dCktPnZtKCkpXTsKICAgICBKU0NvbnRleHQgKmNv
bnRleHQgPSBbdmlydHVhbE1hY2hpbmUgY29udGV4dEZvckdsb2JhbENvbnRleHRSZWY6Z2xvYmFs
Q29udGV4dF07CiAgICAgaWYgKCFjb250ZXh0KQotICAgICAgICBjb250ZXh0ID0gW1tbSlNDb250
ZXh0IGFsbG9jXSBpbml0V2l0aEdsb2JhbENvbnRleHRSZWY6Z2xvYmFsQ29udGV4dF0gYXV0b3Jl
bGVhc2VdOworICAgICAgICBjb250ZXh0ID0gYWRvcHROUyhbW0pTQ29udGV4dCBhbGxvY10gaW5p
dFdpdGhHbG9iYWxDb250ZXh0UmVmOmdsb2JhbENvbnRleHRdKS5hdXRvcmVsZWFzZSgpOwogICAg
IHJldHVybiBjb250ZXh0OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL0pTTWFuYWdlZFZhbHVlLm1tIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU01hbmFn
ZWRWYWx1ZS5tbQppbmRleCA2Mzg2OWEwMzQxNDAwM2RjODcwMWY1MjNjNTA5Y2JlYmVjZGQ5NmFj
Li44NTBmYWJjNmIzOWVlZWZhMGUyNDA1ZDkzN2QzOTQyNTRhOTZiMjNlIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTTWFuYWdlZFZhbHVlLm1tCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvSlNNYW5hZ2VkVmFsdWUubW0KQEAgLTYxLDE0ICs2MSwxNCBAQCBA
aW1wbGVtZW50YXRpb24gSlNNYW5hZ2VkVmFsdWUgewogCiArIChKU01hbmFnZWRWYWx1ZSAqKW1h
bmFnZWRWYWx1ZVdpdGhWYWx1ZTooSlNWYWx1ZSAqKXZhbHVlCiB7Ci0gICAgcmV0dXJuIFtbW3Nl
bGYgYWxsb2NdIGluaXRXaXRoVmFsdWU6dmFsdWVdIGF1dG9yZWxlYXNlXTsKKyAgICByZXR1cm4g
YWRvcHROUyhbW3NlbGYgYWxsb2NdIGluaXRXaXRoVmFsdWU6dmFsdWVdKS5hdXRvcmVsZWFzZSgp
OwogfQogCiArIChKU01hbmFnZWRWYWx1ZSAqKW1hbmFnZWRWYWx1ZVdpdGhWYWx1ZTooSlNWYWx1
ZSAqKXZhbHVlIGFuZE93bmVyOihpZClvd25lcgogewotICAgIEpTTWFuYWdlZFZhbHVlICptYW5h
Z2VkVmFsdWUgPSBbW3NlbGYgYWxsb2NdIGluaXRXaXRoVmFsdWU6dmFsdWVdOwotICAgIFt2YWx1
ZS5jb250ZXh0LnZpcnR1YWxNYWNoaW5lIGFkZE1hbmFnZWRSZWZlcmVuY2U6bWFuYWdlZFZhbHVl
IHdpdGhPd25lcjpvd25lcl07Ci0gICAgcmV0dXJuIFttYW5hZ2VkVmFsdWUgYXV0b3JlbGVhc2Vd
OworICAgIGF1dG8gbWFuYWdlZFZhbHVlID0gYWRvcHROUyhbW3NlbGYgYWxsb2NdIGluaXRXaXRo
VmFsdWU6dmFsdWVdKTsKKyAgICBbdmFsdWUuY29udGV4dC52aXJ0dWFsTWFjaGluZSBhZGRNYW5h
Z2VkUmVmZXJlbmNlOm1hbmFnZWRWYWx1ZS5nZXQoKSB3aXRoT3duZXI6b3duZXJdOworICAgIHJl
dHVybiBtYW5hZ2VkVmFsdWUuYXV0b3JlbGVhc2UoKTsKIH0KIAogLSAoaW5zdGFuY2V0eXBlKWlu
aXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNTY3JpcHQubW0gYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTU2NyaXB0Lm1tCmluZGV4IDllNDE0NTcxMjRiZjE0
M2VhNDE3NjE1YzQ5ODJhNTE5YzFkOTNhN2UuLjIzZjU5MTQzM2ViN2UyMjc4MDkxMmM0ODBjNDQ4
NmI2MzQ3OWMzZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNTY3Jp
cHQubW0KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1NjcmlwdC5tbQpAQCAtMTEw
LDE0ICsxMTAsMTQgQEAgKyAoaW5zdGFuY2V0eXBlKXNjcmlwdE9mVHlwZTooSlNTY3JpcHRUeXBl
KXR5cGUgd2l0aFNvdXJjZTooTlNTdHJpbmcgKilzb3VyY2UgYW4KICAgICBpZiAoIXZhbGlkYXRl
Qnl0ZWNvZGVDYWNoZVBhdGgoY2FjaGVQYXRoLCBlcnJvcikpCiAgICAgICAgIHJldHVybiBuaWw7
CiAKLSAgICBKU1NjcmlwdCAqcmVzdWx0ID0gW1tbSlNTY3JpcHQgYWxsb2NdIGluaXRdIGF1dG9y
ZWxlYXNlXTsKKyAgICBhdXRvIHJlc3VsdCA9IGFkb3B0TlMoW1tKU1NjcmlwdCBhbGxvY10gaW5p
dF0pOwogICAgIHJlc3VsdC0+bV92aXJ0dWFsTWFjaGluZSA9IHZtOwogICAgIHJlc3VsdC0+bV90
eXBlID0gdHlwZTsKICAgICByZXN1bHQtPm1fc291cmNlID0gc291cmNlOwogICAgIHJlc3VsdC0+
bV9zb3VyY2VVUkwgPSBzb3VyY2VVUkw7CiAgICAgcmVzdWx0LT5tX2NhY2hlUGF0aCA9IGNhY2hl
UGF0aDsKICAgICBbcmVzdWx0IHJlYWRDYWNoZV07Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICBy
ZXR1cm4gcmVzdWx0LmF1dG9yZWxlYXNlKCk7CiB9CiAKICsgKGluc3RhbmNldHlwZSlzY3JpcHRP
ZlR5cGU6KEpTU2NyaXB0VHlwZSl0eXBlIG1lbW9yeU1hcHBlZEZyb21BU0NJSUZpbGU6KE5TVVJM
ICopZmlsZVBhdGggd2l0aFNvdXJjZVVSTDooTlNVUkwgKilzb3VyY2VVUkwgYW5kQnl0ZWNvZGVD
YWNoZTooTlNVUkwgKiljYWNoZVBhdGggaW5WaXJ0dWFsTWFjaGluZTooSlNWaXJ0dWFsTWFjaGlu
ZSAqKXZtIGVycm9yOihvdXQgTlNFcnJvciAqKillcnJvcgpAQCAtMTM4LDcgKzEzOCw3IEBAICsg
KGluc3RhbmNldHlwZSlzY3JpcHRPZlR5cGU6KEpTU2NyaXB0VHlwZSl0eXBlIG1lbW9yeU1hcHBl
ZEZyb21BU0NJSUZpbGU6KE5TVVJMCiAgICAgaWYgKCFjaGFyYWN0ZXJzQXJlQWxsQVNDSUkocmVp
bnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KGZpbGVEYXRhLmRhdGEoKSksIGZpbGVEYXRhLnNp
emUoKSkpCiAgICAgICAgIHJldHVybiBjcmVhdGVFcnJvcihbTlNTdHJpbmcgc3RyaW5nV2l0aEZv
cm1hdDpAIk5vdCBhbGwgY2hhcmFjdGVycyBpbiBmaWxlIGF0ICVAIGFyZSBBU0NJSS4iLCBzdGF0
aWNfY2FzdDxOU1N0cmluZyAqPihzeXN0ZW1QYXRoKV0sIGVycm9yKTsKIAotICAgIEpTU2NyaXB0
ICpyZXN1bHQgPSBbW1tKU1NjcmlwdCBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOworICAgIGF1
dG8gcmVzdWx0ID0gYWRvcHROUyhbW0pTU2NyaXB0IGFsbG9jXSBpbml0XSk7CiAgICAgcmVzdWx0
LT5tX3ZpcnR1YWxNYWNoaW5lID0gdm07CiAgICAgcmVzdWx0LT5tX3R5cGUgPSB0eXBlOwogICAg
IHJlc3VsdC0+bV9zb3VyY2UgPSBTdHJpbmcoU3RyaW5nSW1wbDo6Y3JlYXRlV2l0aG91dENvcHlp
bmcoYml0d2lzZV9jYXN0PGNvbnN0IExDaGFyKj4oZmlsZURhdGEuZGF0YSgpKSwgZmlsZURhdGEu
c2l6ZSgpKSk7CkBAIC0xNDYsNyArMTQ2LDcgQEAgKyAoaW5zdGFuY2V0eXBlKXNjcmlwdE9mVHlw
ZTooSlNTY3JpcHRUeXBlKXR5cGUgbWVtb3J5TWFwcGVkRnJvbUFTQ0lJRmlsZTooTlNVUkwKICAg
ICByZXN1bHQtPm1fc291cmNlVVJMID0gc291cmNlVVJMOwogICAgIHJlc3VsdC0+bV9jYWNoZVBh
dGggPSBjYWNoZVBhdGg7CiAgICAgW3Jlc3VsdCByZWFkQ2FjaGVdOwotICAgIHJldHVybiByZXN1
bHQ7CisgICAgcmV0dXJuIHJlc3VsdC5hdXRvcmVsZWFzZSgpOwogfQogCiAtICh2b2lkKXJlYWRD
YWNoZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZpcnR1YWxNYWNo
aW5lLm1tIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZpcnR1YWxNYWNoaW5lLm1tCmlu
ZGV4IDE3YjMyYTY2NjcwYjAwNTQ2MWRhZjdhZjE3YWExNzFjZTViOGE5OTEuLmFkMmIwNWJjNzVh
YzNlMGM5ODRlMWE2N2VlZGUyZTVkNzEzNzViMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvSlNWaXJ0dWFsTWFjaGluZS5tbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTVmlydHVhbE1hY2hpbmUubW0KQEAgLTIzNiw3ICsyMzYsNyBAQCArIChKU1ZpcnR1
YWxNYWNoaW5lICopdmlydHVhbE1hY2hpbmVXaXRoQ29udGV4dEdyb3VwUmVmOihKU0NvbnRleHRH
cm91cFJlZilncm91cAogewogICAgIEpTVmlydHVhbE1hY2hpbmUgKnZpcnR1YWxNYWNoaW5lID0g
W0pTVk1XcmFwcGVyQ2FjaGUgd3JhcHBlckZvckpTQ29udGV4dEdyb3VwUmVmOmdyb3VwXTsKICAg
ICBpZiAoIXZpcnR1YWxNYWNoaW5lKQotICAgICAgICB2aXJ0dWFsTWFjaGluZSA9IFtbW0pTVmly
dHVhbE1hY2hpbmUgYWxsb2NdIGluaXRXaXRoQ29udGV4dEdyb3VwUmVmOmdyb3VwXSBhdXRvcmVs
ZWFzZV07CisgICAgICAgIHZpcnR1YWxNYWNoaW5lID0gYWRvcHROUyhbW0pTVmlydHVhbE1hY2hp
bmUgYWxsb2NdIGluaXRXaXRoQ29udGV4dEdyb3VwUmVmOmdyb3VwXSkuYXV0b3JlbGVhc2UoKTsK
ICAgICByZXR1cm4gdmlydHVhbE1hY2hpbmU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvSlNXcmFwcGVyTWFwLm1tIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS9KU1dyYXBwZXJNYXAubW0KaW5kZXggMTQ1NTZiNTc3MTNlNzMwYWU1MmJkZjk1MmU2NjkxNDIw
ODU5ZWIxOC4uODUyZmI5MjkzZjYwYmQ5YjdlNDZjM2VjNzUwZjMyMjkxMTVjZWQxNCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1dyYXBwZXJNYXAubW0KKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1dyYXBwZXJNYXAubW0KQEAgLTYzNSw3ICs2MzUsNyBA
QCAtIChKU09iakNDbGFzc0luZm8qKWNsYXNzSW5mb0ZvckNsYXNzOihDbGFzcyljbHMKICAgICAg
ICAgICAgIHJldHVybiBtX2NsYXNzTWFwLmdldCgpWyhpZCljbHNdID0gW3NlbGYgY2xhc3NJbmZv
Rm9yQ2xhc3M6Y2xhc3NfZ2V0U3VwZXJjbGFzcyhjbHMpXTsKICAgICB9CiAKLSAgICByZXR1cm4g
bV9jbGFzc01hcC5nZXQoKVsoaWQpY2xzXSA9IFtbW0pTT2JqQ0NsYXNzSW5mbyBhbGxvY10gaW5p
dEZvckNsYXNzOmNsc10gYXV0b3JlbGVhc2VdOworICAgIHJldHVybiBtX2NsYXNzTWFwLmdldCgp
WyhpZCljbHNdID0gYWRvcHROUyhbW0pTT2JqQ0NsYXNzSW5mbyBhbGxvY10gaW5pdEZvckNsYXNz
OmNsc10pLmF1dG9yZWxlYXNlKCk7CiB9CiAKIC0gKEpTVmFsdWUgKilqc1dyYXBwZXJGb3JPYmpl
Y3Q6KGlkKW9iamVjdCBpbkNvbnRleHQ6KEpTQ29udGV4dCAqKWNvbnRleHQKQEAgLTY2Niw3ICs2
NjYsNyBAQCAtIChKU1ZhbHVlICopb2JqY1dyYXBwZXJGb3JKU1ZhbHVlUmVmOihKU1ZhbHVlUmVm
KXZhbHVlIGluQ29udGV4dDpjb250ZXh0CiAgICAgQVNTRVJUKHRvSlNHbG9iYWxPYmplY3QoW2Nv
bnRleHQgSlNHbG9iYWxDb250ZXh0UmVmXSktPndyYXBwZXJNYXAoKSA9PSBzZWxmKTsKICAgICBK
U1ZhbHVlICp3cmFwcGVyID0gKF9fYnJpZGdlIEpTVmFsdWUgKilOU01hcEdldChtX2NhY2hlZE9i
akNXcmFwcGVycy5nZXQoKSwgdmFsdWUpOwogICAgIGlmICghd3JhcHBlcikgewotICAgICAgICB3
cmFwcGVyID0gW1tbSlNWYWx1ZSBhbGxvY10gaW5pdFdpdGhWYWx1ZTp2YWx1ZSBpbkNvbnRleHQ6
Y29udGV4dF0gYXV0b3JlbGVhc2VdOworICAgICAgICB3cmFwcGVyID0gYWRvcHROUyhbW0pTVmFs
dWUgYWxsb2NdIGluaXRXaXRoVmFsdWU6dmFsdWUgaW5Db250ZXh0OmNvbnRleHRdKS5hdXRvcmVs
ZWFzZSgpOwogICAgICAgICBOU01hcEluc2VydChtX2NhY2hlZE9iakNXcmFwcGVycy5nZXQoKSwg
dmFsdWUsIChfX2JyaWRnZSB2b2lkKil3cmFwcGVyKTsKICAgICB9CiAgICAgcmV0dXJuIHdyYXBw
ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9j
b2NvYS9SZW1vdGVDb25uZWN0aW9uVG9UYXJnZXRDb2NvYS5tbSBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvcmVtb3RlL2NvY29hL1JlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldENvY29h
Lm1tCmluZGV4IDEyMjExOTAzMTg5ODE3OTNkODExMDBjMGRhNmFkOGI5MmI0ZDMwYzIuLjUxMGY0
OWI2ZDc0ZTcyYjkyMTMyNmY1NmYzNmFlN2JkN2E5YjU3MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL2NvY29hL1JlbW90ZUNvbm5lY3Rpb25Ub1Rh
cmdldENvY29hLm1tCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3Rl
L2NvY29hL1JlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldENvY29hLm1tCkBAIC0xMjgsMTIgKzEyOCwx
MiBAQCBPcHRpb25hbDxUYXJnZXRJRD4gUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0Ojp0YXJnZXRJ
ZGVudGlmaWVyKCkgY29uc3QKIAogTlNTdHJpbmcgKlJlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldDo6
Y29ubmVjdGlvbklkZW50aWZpZXIoKSBjb25zdAogewotICAgIHJldHVybiBbW21fY29ubmVjdGlv
bklkZW50aWZpZXIgY29weV0gYXV0b3JlbGVhc2VdOworICAgIHJldHVybiBhZG9wdE5TKFttX2Nv
bm5lY3Rpb25JZGVudGlmaWVyIGNvcHldKS5hdXRvcmVsZWFzZSgpOwogfQogCiBOU1N0cmluZyAq
UmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0OjpkZXN0aW5hdGlvbigpIGNvbnN0CiB7Ci0gICAgcmV0
dXJuIFtbbV9kZXN0aW5hdGlvbiBjb3B5XSBhdXRvcmVsZWFzZV07CisgICAgcmV0dXJuIGFkb3B0
TlMoW21fZGVzdGluYXRpb24gY29weV0pLmF1dG9yZWxlYXNlKCk7CiB9CiAKIHZvaWQgUmVtb3Rl
Q29ubmVjdGlvblRvVGFyZ2V0OjpkaXNwYXRjaEFzeW5jT25UYXJnZXQoRnVuY3Rpb248dm9pZCAo
KT4mJiBjYWxsYmFjaykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3Ivc2NyaXB0cy9jb2RlZ2VuL29iamNfZ2VuZXJhdG9yLnB5IGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vb2JqY19nZW5lcmF0b3IucHkKaW5kZXggYTJk
Mzc2ZGYzYjk0M2RkYzkxNjc4YmJiYTVhMmVkM2YwMmUzNzBjMC4uNDk2NDM0MjA1MTQ3OGViYjI5
M2EzYTE4ODg1MDE0YmQxMTcyY2IwYyAxMDA3NTUKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vb2JqY19nZW5lcmF0b3IucHkKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vb2JqY19nZW5lcmF0b3Iu
cHkKQEAgLTQwNSw3ICs0MDUsNyBAQCBjbGFzcyBPYmpDR2VuZXJhdG9yKEdlbmVyYXRvcik6CiAg
ICAgICAgICAgICByZXR1cm4gdmFyX25hbWUKICAgICAgICAgaWYgY2F0ZWdvcnkgPT0gT2JqQ1R5
cGVDYXRlZ29yeS5PYmplY3Q6CiAgICAgICAgICAgICBvYmpjX2NsYXNzID0gc2VsZi5vYmpjX2Ns
YXNzX2Zvcl90eXBlKHZhcl90eXBlKQotICAgICAgICAgICAgcmV0dXJuICdbW1slcyBhbGxvY10g
aW5pdFdpdGhKU09OT2JqZWN0OiVzXSBhdXRvcmVsZWFzZV0nICUgKG9iamNfY2xhc3MsIHZhcl9u
YW1lKQorICAgICAgICAgICAgcmV0dXJuICdhZG9wdE5TKFtbJXMgYWxsb2NdIGluaXRXaXRoSlNP
Tk9iamVjdDolc10pLmF1dG9yZWxlYXNlKCknICUgKG9iamNfY2xhc3MsIHZhcl9uYW1lKQogICAg
ICAgICBpZiBjYXRlZ29yeSA9PSBPYmpDVHlwZUNhdGVnb3J5LkFycmF5OgogICAgICAgICAgICAg
b2JqY19jbGFzcyA9IHNlbGYub2JqY19jbGFzc19mb3JfdHlwZSh2YXJfdHlwZS5lbGVtZW50X3R5
cGUpCiAgICAgICAgICAgICBpZiBvYmpjX2NsYXNzID09ICdOU1N0cmluZyc6CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0
V3JhcHBlcklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vz
c2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tCmluZGV4IGQ0NzI5MDdmNjM1MzNlNDg2Yjk0NTQ4
MTdiOTM0ZjJiMjJjYmMzMTYuLmQxZjgyZGQ0NGY2YjEwMDVlZDA2ZWExOTM0Zjc1MjI4YjUwZThm
YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vz
c2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tCkBAIC0xODksNyAr
MTg5LDcgQEAgKyAoV2ViQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIgKil0ZXh0TWFya2VyV2l0aFZp
c2libGVQb3NpdGlvbjooVmlzaWJsZVBvc2l0aW9uJikKICAgICBhdXRvIHRleHRNYXJrZXJEYXRh
ID0gY2FjaGUtPnRleHRNYXJrZXJEYXRhRm9yVmlzaWJsZVBvc2l0aW9uKHZpc2libGVQb3MpOwog
ICAgIGlmICghdGV4dE1hcmtlckRhdGEpCiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgcmV0dXJu
IFtbW1dlYkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyIGFsbG9jXSBpbml0V2l0aFRleHRNYXJrZXI6
JnRleHRNYXJrZXJEYXRhLnZhbHVlKCkgY2FjaGU6Y2FjaGVdIGF1dG9yZWxlYXNlXTsKKyAgICBy
ZXR1cm4gYWRvcHROUyhbW1dlYkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyIGFsbG9jXSBpbml0V2l0
aFRleHRNYXJrZXI6JnRleHRNYXJrZXJEYXRhLnZhbHVlKCkgY2FjaGU6Y2FjaGVdKS5hdXRvcmVs
ZWFzZSgpOwogfQogCiArIChXZWJBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciAqKXRleHRNYXJrZXJX
aXRoQ2hhcmFjdGVyT2Zmc2V0OihDaGFyYWN0ZXJPZmZzZXQmKWNoYXJhY3Rlck9mZnNldCBjYWNo
ZTooQVhPYmplY3RDYWNoZSopY2FjaGUKQEAgLTIwNCw3ICsyMDQsNyBAQCArIChXZWJBY2Nlc3Np
YmlsaXR5VGV4dE1hcmtlciAqKXRleHRNYXJrZXJXaXRoQ2hhcmFjdGVyT2Zmc2V0OihDaGFyYWN0
ZXJPZmZzZXQmKQogICAgIGNhY2hlLT50ZXh0TWFya2VyRGF0YUZvckNoYXJhY3Rlck9mZnNldCh0
ZXh0TWFya2VyRGF0YSwgY2hhcmFjdGVyT2Zmc2V0KTsKICAgICBpZiAoIXRleHRNYXJrZXJEYXRh
LmF4SUQgJiYgIXRleHRNYXJrZXJEYXRhLmlnbm9yZWQpCiAgICAgICAgIHJldHVybiBuaWw7Ci0g
ICAgcmV0dXJuIFtbW1dlYkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyIGFsbG9jXSBpbml0V2l0aFRl
eHRNYXJrZXI6JnRleHRNYXJrZXJEYXRhIGNhY2hlOmNhY2hlXSBhdXRvcmVsZWFzZV07CisgICAg
cmV0dXJuIGFkb3B0TlMoW1tXZWJBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciBhbGxvY10gaW5pdFdp
dGhUZXh0TWFya2VyOiZ0ZXh0TWFya2VyRGF0YSBjYWNoZTpjYWNoZV0pLmF1dG9yZWxlYXNlKCk7
CiB9CiAKICsgKFdlYkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyICopc3RhcnRPckVuZFRleHRNYXJr
ZXJGb3JSYW5nZTooY29uc3QgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+JilyYW5nZSBpc1N0YXJ0OihC
T09MKWlzU3RhcnQgY2FjaGU6KEFYT2JqZWN0Q2FjaGUqKWNhY2hlCkBAIC0yMTcsNyArMjE3LDcg
QEAgKyAoV2ViQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIgKilzdGFydE9yRW5kVGV4dE1hcmtlckZv
clJhbmdlOihjb25zdCBPcHRpb25hbDxTaW0KICAgICBjYWNoZS0+c3RhcnRPckVuZFRleHRNYXJr
ZXJEYXRhRm9yUmFuZ2UodGV4dE1hcmtlckRhdGEsICpyYW5nZSwgaXNTdGFydCk7CiAgICAgaWYg
KCF0ZXh0TWFya2VyRGF0YS5heElEKQogICAgICAgICByZXR1cm4gbmlsOwotICAgIHJldHVybiBb
W1tXZWJBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciBhbGxvY10gaW5pdFdpdGhUZXh0TWFya2VyOiZ0
ZXh0TWFya2VyRGF0YSBjYWNoZTpjYWNoZV0gYXV0b3JlbGVhc2VdOworICAgIHJldHVybiBhZG9w
dE5TKFtbV2ViQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIgYWxsb2NdIGluaXRXaXRoVGV4dE1hcmtl
cjomdGV4dE1hcmtlckRhdGEgY2FjaGU6Y2FjaGVdKS5hdXRvcmVsZWFzZSgpOwogfQogCiAtIChO
U0RhdGEgKilkYXRhUmVwcmVzZW50YXRpb24KQEAgLTI5MCw3ICsyOTAsNyBAQCAtIChCT09MKV9w
cmVwYXJlQWNjZXNzaWJpbGl0eUNhbGwKIHsKICAgICAvLyByZGFyOi8vNzk4MDMxOCBpZiB3ZSBz
dGFydCBhIGNhbGwsIHRoZW4gYmxvY2sgaW4gV2ViVGhyZWFkTG9jaygpLCB0aGVuIHdlJ3JlIGRl
YWxsb2NlZCBvbiBhbm90aGVyLCB0aHJlYWQsIHdlIGNvdWxkCiAgICAgLy8gY3Jhc2gsIHNvIHdl
IHNob3VsZCByZXRhaW4gb3Vyc2VsZiBmb3IgdGhlIGR1cmF0aW9uIG9mIHVzYWdlIGhlcmUuCi0g
ICAgW1tzZWxmIHJldGFpbl0gYXV0b3JlbGVhc2VdOworICAgIHJldGFpblB0cih0aGlzKS5hdXRv
cmVsZWFzZSgpOwogCiAgICAgV2ViVGhyZWFkTG9jaygpOwogICAgIApAQCAtMjMzMyw3ICsyMzMz
LDcgQEAgLSAoTlNBcnJheSAqKWFycmF5T2ZUZXh0Rm9yVGV4dE1hcmtlcnM6KE5TQXJyYXkgKilt
YXJrZXJzIGF0dHJpYnV0ZWQ6KEJPT0wpYXR0cmkKICAgICAgICAgcmV0dXJuIG5pbDsKIAogICAg
IC8vIGl0ZXJhdGUgb3ZlciB0aGUgcmFuZ2UgdG8gYnVpbGQgdGhlIEFYIGF0dHJpYnV0ZWQgc3Ry
aW5nCi0gICAgTlNNdXRhYmxlQXJyYXkqIGFycmF5ID0gW1tOU011dGFibGVBcnJheSBhbGxvY10g
aW5pdF07CisgICAgYXV0byBhcnJheSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10g
aW5pdF0pOwogICAgIFRleHRJdGVyYXRvciBpdCgqcmFuZ2UpOwogICAgIGZvciAoOyAhaXQuYXRF
bmQoKTsgaXQuYWR2YW5jZSgpKSB7CiAgICAgICAgIE5vZGUmIG5vZGUgPSBpdC5yYW5nZSgpLnN0
YXJ0LmNvbnRhaW5lcjsKQEAgLTIzNDMsMTIgKzIzNDMsMTIgQEAgLSAoTlNBcnJheSAqKWFycmF5
T2ZUZXh0Rm9yVGV4dE1hcmtlcnM6KE5TQXJyYXkgKiltYXJrZXJzIGF0dHJpYnV0ZWQ6KEJPT0wp
YXR0cmkKICAgICAgICAgICAgIGlmICghYXR0cmlidXRlZCkgewogICAgICAgICAgICAgICAgIC8v
IEZpcnN0IGNoZWNrIGlmIHRoaXMgaXMgcmVwcmVzZW50ZWQgYnkgYSBsaW5rLgogICAgICAgICAg
ICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGxpbmtPYmplY3QgPSBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0OjphbmNob3JFbGVtZW50Rm9yTm9kZSgmbm9kZSk7Ci0gICAgICAgICAgICAgICAgaWYgKFtz
ZWxmIF9hZGRBY2Nlc3NpYmlsaXR5T2JqZWN0OmxpbmtPYmplY3QgdG9UZXh0TWFya2VyQXJyYXk6
YXJyYXldKQorICAgICAgICAgICAgICAgIGlmIChbc2VsZiBfYWRkQWNjZXNzaWJpbGl0eU9iamVj
dDpsaW5rT2JqZWN0IHRvVGV4dE1hcmtlckFycmF5OmFycmF5LmdldCgpXSkKICAgICAgICAgICAg
ICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgICAgICAgICAvLyBOZXh0IGNoZWNrIGlmIHRo
aXMgcmVnaW9uIGlzIHJlcHJlc2VudGVkIGJ5IGEgaGVhZGluZy4KICAgICAgICAgICAgICAgICBB
Y2Nlc3NpYmlsaXR5T2JqZWN0KiBoZWFkaW5nT2JqZWN0ID0gQWNjZXNzaWJpbGl0eU9iamVjdDo6
aGVhZGluZ0VsZW1lbnRGb3JOb2RlKCZub2RlKTsKLSAgICAgICAgICAgICAgICBpZiAoW3NlbGYg
X2FkZEFjY2Vzc2liaWxpdHlPYmplY3Q6aGVhZGluZ09iamVjdCB0b1RleHRNYXJrZXJBcnJheTph
cnJheV0pCisgICAgICAgICAgICAgICAgaWYgKFtzZWxmIF9hZGRBY2Nlc3NpYmlsaXR5T2JqZWN0
OmhlYWRpbmdPYmplY3QgdG9UZXh0TWFya2VyQXJyYXk6YXJyYXkuZ2V0KCldKQogICAgICAgICAg
ICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICAgICAgICAgIFN0cmluZyBsaXN0TWFya2Vy
VGV4dCA9IEFjY2Vzc2liaWxpdHlPYmplY3Q6Omxpc3RNYXJrZXJUZXh0Rm9yTm9kZUFuZFBvc2l0
aW9uKCZub2RlLCBtYWtlQ29udGFpbmVyT2Zmc2V0UG9zaXRpb24oaXQucmFuZ2UoKS5zdGFydCkp
OwpAQCAtMjM3NSwxMiArMjM3NSwxMiBAQCAtIChOU0FycmF5ICopYXJyYXlPZlRleHRGb3JUZXh0
TWFya2VyczooTlNBcnJheSAqKW1hcmtlcnMgYXR0cmlidXRlZDooQk9PTClhdHRyaQogICAgICAg
ICAgICAgaWYgKHJlcGxhY2VkTm9kZSkgewogICAgICAgICAgICAgICAgIEFjY2Vzc2liaWxpdHlP
YmplY3QqIG9iaiA9IHNlbGYuYXhCYWNraW5nT2JqZWN0LT5heE9iamVjdENhY2hlKCktPmdldE9y
Q3JlYXRlKHJlcGxhY2VkTm9kZS0+cmVuZGVyZXIoKSk7CiAgICAgICAgICAgICAgICAgaWYgKG9i
aiAmJiAhb2JqLT5hY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkpCi0gICAgICAgICAgICAgICAgICAg
IFtzZWxmIF9hZGRBY2Nlc3NpYmlsaXR5T2JqZWN0Om9iaiB0b1RleHRNYXJrZXJBcnJheTphcnJh
eV07CisgICAgICAgICAgICAgICAgICAgIFtzZWxmIF9hZGRBY2Nlc3NpYmlsaXR5T2JqZWN0Om9i
aiB0b1RleHRNYXJrZXJBcnJheTphcnJheS5nZXQoKV07CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0KICAgICB9CiAKLSAgICByZXR1cm4gW2FycmF5IGF1dG9yZWxlYXNlXTsKKyAgICByZXR1cm4g
YXJyYXkuYXV0b3JlbGVhc2UoKTsKIH0KIAogLy8gRklYTUU6IE5vIHJlYXNvbiBmb3IgdGhpcyB0
byBiZSBhIG1ldGhvZCBpbnN0ZWFkIG9mIGEgZnVuY3Rpb24uCkBAIC0yNTM5LDcgKzI1MzksNyBA
QCAtIChpZClfc3RyaW5nRnJvbVN0YXJ0TWFya2VyOihXZWJBY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
ciopc3RhcnRNYXJrZXIgdG9FbmRNYXJrZQogICAgIAogICAgIE5TQXJyYXkqIGFycmF5ID0gW3Nl
bGYgYXJyYXlPZlRleHRGb3JUZXh0TWFya2VyczpAW3N0YXJ0TWFya2VyLCBlbmRNYXJrZXJdIGF0
dHJpYnV0ZWQ6YXR0cmlidXRlZF07CiAgICAgQ2xhc3MgcmV0dXJuQ2xhc3MgPSBhdHRyaWJ1dGVk
ID8gW05TTXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcgY2xhc3NdIDogW05TTXV0YWJsZVN0cmluZyBj
bGFzc107Ci0gICAgaWQgcmV0dXJuVmFsdWUgPSBbWyhOU1N0cmluZyAqKVtyZXR1cm5DbGFzcyBh
bGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOworICAgIGF1dG8gcmV0dXJuVmFsdWUgPSBhZG9wdE5T
KFsoTlNTdHJpbmcgKilbcmV0dXJuQ2xhc3MgYWxsb2NdIGluaXRdKTsKICAgICAKICAgICBjb25z
dCB1bmljaGFyIGF0dGFjaG1lbnRDaGFyID0gTlNBdHRhY2htZW50Q2hhcmFjdGVyOwogICAgIE5T
SW50ZWdlciBjb3VudCA9IFthcnJheSBjb3VudF07CkBAIC0yNTQ3LDE3ICsyNTQ3LDE3IEBAIC0g
KGlkKV9zdHJpbmdGcm9tU3RhcnRNYXJrZXI6KFdlYkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKilz
dGFydE1hcmtlciB0b0VuZE1hcmtlCiAgICAgICAgIGlkIG9iamVjdCA9IFthcnJheSBvYmplY3RB
dEluZGV4OmtdOwogCiAgICAgICAgIGlmIChhdHRyaWJ1dGVkICYmIFtvYmplY3QgaXNLaW5kT2ZD
bGFzczpbV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgY2xhc3NdXSkKLSAgICAgICAgICAg
IG9iamVjdCA9IFtbW05TTXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoU3Ry
aW5nOltOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomYXR0YWNobWVudENoYXIgbGVuZ3Ro
OjFdIGF0dHJpYnV0ZXM6QHsgVUlBY2Nlc3NpYmlsaXR5VG9rZW5BdHRhY2htZW50IDogb2JqZWN0
IH1dIGF1dG9yZWxlYXNlXTsKKyAgICAgICAgICAgIG9iamVjdCA9IGFkb3B0TlMoW1tOU011dGFi
bGVBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFN0cmluZzpbTlNTdHJpbmcgc3RyaW5n
V2l0aENoYXJhY3RlcnM6JmF0dGFjaG1lbnRDaGFyIGxlbmd0aDoxXSBhdHRyaWJ1dGVzOkB7IFVJ
QWNjZXNzaWJpbGl0eVRva2VuQXR0YWNobWVudCA6IG9iamVjdCB9XSkuYXV0b3JlbGVhc2UoKTsK
ICAgICAgICAgCiAgICAgICAgIGlmICghW29iamVjdCBpc0tpbmRPZkNsYXNzOnJldHVybkNsYXNz
XSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAKICAgICAgICAgaWYgKGF0dHJpYnV0
ZWQpCi0gICAgICAgICAgICBbKE5TTXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcgKilyZXR1cm5WYWx1
ZSBhcHBlbmRBdHRyaWJ1dGVkU3RyaW5nOm9iamVjdF07CisgICAgICAgICAgICBbKE5TTXV0YWJs
ZUF0dHJpYnV0ZWRTdHJpbmcgKilyZXR1cm5WYWx1ZS5nZXQoKSBhcHBlbmRBdHRyaWJ1dGVkU3Ry
aW5nOm9iamVjdF07CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIFsoTlNNdXRhYmxlU3RyaW5n
ICopcmV0dXJuVmFsdWUgYXBwZW5kU3RyaW5nOm9iamVjdF07CisgICAgICAgICAgICBbKE5TTXV0
YWJsZVN0cmluZyAqKXJldHVyblZhbHVlLmdldCgpIGFwcGVuZFN0cmluZzpvYmplY3RdOwogICAg
IH0KLSAgICByZXR1cm4gcmV0dXJuVmFsdWU7CisgICAgcmV0dXJuIHJldHVyblZhbHVlLmF1dG9y
ZWxlYXNlKCk7CiB9CiAKIC0gKGlkKV9zdHJpbmdGb3JSYW5nZTooTlNSYW5nZSlyYW5nZSBhdHRy
aWJ1dGVkOihCT09MKWF0dHJpYnV0ZWQKQEAgLTI4NDcsNyArMjg0Nyw3IEBAIC0gKFdlYkFjY2Vz
c2liaWxpdHlUZXh0TWFya2VyICopbmV4dE1hcmtlckZvckNoYXJhY3Rlck9mZnNldDooQ2hhcmFj
dGVyT2Zmc2V0JiljCiAgICAgY2FjaGUtPnRleHRNYXJrZXJEYXRhRm9yTmV4dENoYXJhY3Rlck9m
ZnNldCh0ZXh0TWFya2VyRGF0YSwgY2hhcmFjdGVyT2Zmc2V0KTsKICAgICBpZiAoIXRleHRNYXJr
ZXJEYXRhLmF4SUQpCiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgcmV0dXJuIFtbW1dlYkFjY2Vz
c2liaWxpdHlUZXh0TWFya2VyIGFsbG9jXSBpbml0V2l0aFRleHRNYXJrZXI6JnRleHRNYXJrZXJE
YXRhIGNhY2hlOmNhY2hlXSBhdXRvcmVsZWFzZV07CisgICAgcmV0dXJuIGFkb3B0TlMoW1tXZWJB
Y2Nlc3NpYmlsaXR5VGV4dE1hcmtlciBhbGxvY10gaW5pdFdpdGhUZXh0TWFya2VyOiZ0ZXh0TWFy
a2VyRGF0YSBjYWNoZTpjYWNoZV0pLmF1dG9yZWxlYXNlKCk7CiB9CiAKIC0gKFdlYkFjY2Vzc2li
aWxpdHlUZXh0TWFya2VyICopcHJldmlvdXNNYXJrZXJGb3JDaGFyYWN0ZXJPZmZzZXQ6KENoYXJh
Y3Rlck9mZnNldCYpY2hhcmFjdGVyT2Zmc2V0CkBAIC0yODYwLDcgKzI4NjAsNyBAQCAtIChXZWJB
Y2Nlc3NpYmlsaXR5VGV4dE1hcmtlciAqKXByZXZpb3VzTWFya2VyRm9yQ2hhcmFjdGVyT2Zmc2V0
OihDaGFyYWN0ZXJPZmZzZQogICAgIGNhY2hlLT50ZXh0TWFya2VyRGF0YUZvclByZXZpb3VzQ2hh
cmFjdGVyT2Zmc2V0KHRleHRNYXJrZXJEYXRhLCBjaGFyYWN0ZXJPZmZzZXQpOwogICAgIGlmICgh
dGV4dE1hcmtlckRhdGEuYXhJRCkKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICByZXR1cm4gW1tb
V2ViQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIgYWxsb2NdIGluaXRXaXRoVGV4dE1hcmtlcjomdGV4
dE1hcmtlckRhdGEgY2FjaGU6Y2FjaGVdIGF1dG9yZWxlYXNlXTsKKyAgICByZXR1cm4gYWRvcHRO
UyhbW1dlYkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyIGFsbG9jXSBpbml0V2l0aFRleHRNYXJrZXI6
JnRleHRNYXJrZXJEYXRhIGNhY2hlOmNhY2hlXSkuYXV0b3JlbGVhc2UoKTsKIH0KIAogLSAoT3B0
aW9uYWw8U2ltcGxlUmFuZ2U+KXJhbmdlRm9yVGV4dE1hcmtlcnM6KE5TQXJyYXkgKil0ZXh0TWFy
a2VycwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvQVhPYmpl
Y3RDYWNoZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL0FYT2JqZWN0
Q2FjaGVNYWMubW0KaW5kZXggZGM0Y2QxMzA5MzAxZTJjNjk2NTMwYTY1NmYwNjI1Mjk5OTliMmNk
Yi4uYjdjZmY3NGU3NjJhMjhlMDQ1NTc0NjQxNjEyZGU4NGI1Njk0MWYyNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvQVhPYmplY3RDYWNoZU1hYy5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9BWE9iamVjdENhY2hlTWFjLm1tCkBA
IC00ODksMTUgKzQ4OSwxNSBAQCBzdGF0aWMgTlNEaWN0aW9uYXJ5ICp0ZXh0UmVwbGFjZW1lbnRD
aGFuZ2VEaWN0aW9uYXJ5KEFYQ29yZU9iamVjdCYgb2JqZWN0LCBBWFRleAogICAgIE5TVUludGVn
ZXIgbGVuZ3RoID0gW3RleHQgbGVuZ3RoXTsKICAgICBpZiAoIWxlbmd0aCkKICAgICAgICAgcmV0
dXJuIG5pbDsKLSAgICBOU011dGFibGVEaWN0aW9uYXJ5ICpjaGFuZ2UgPSBbW05TTXV0YWJsZURp
Y3Rpb25hcnkgYWxsb2NdIGluaXRXaXRoQ2FwYWNpdHk6NF07CisgICAgYXV0byBjaGFuZ2UgPSBh
ZG9wdE5TKFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdFdpdGhDYXBhY2l0eTo0XSk7
CiAgICAgW2NoYW5nZSBzZXRPYmplY3Q6QChwbGF0Zm9ybUVkaXRUeXBlRm9yV2ViQ29yZUVkaXRU
eXBlKHR5cGUpKSBmb3JLZXk6TlNBY2Nlc3NpYmlsaXR5VGV4dEVkaXRUeXBlXTsKICAgICBpZiAo
bGVuZ3RoID4gQVhWYWx1ZUNoYW5nZVRydW5jYXRpb25MZW5ndGgpIHsKICAgICAgICAgW2NoYW5n
ZSBzZXRPYmplY3Q6QChsZW5ndGgpIGZvcktleTpOU0FjY2Vzc2liaWxpdHlUZXh0Q2hhbmdlVmFs
dWVMZW5ndGhdOwogICAgICAgICB0ZXh0ID0gW3RleHQgc3Vic3RyaW5nVG9JbmRleDpBWFZhbHVl
Q2hhbmdlVHJ1bmNhdGlvbkxlbmd0aF07CiAgICAgfQogICAgIFtjaGFuZ2Ugc2V0T2JqZWN0OnRl
eHQgZm9yS2V5Ok5TQWNjZXNzaWJpbGl0eVRleHRDaGFuZ2VWYWx1ZV07Ci0gICAgYWRkVGV4dE1h
cmtlckZvcihjaGFuZ2UsIG9iamVjdCwgbWFya2VyVGFyZ2V0KTsKLSAgICByZXR1cm4gW2NoYW5n
ZSBhdXRvcmVsZWFzZV07CisgICAgYWRkVGV4dE1hcmtlckZvcihjaGFuZ2UuZ2V0KCksIG9iamVj
dCwgbWFya2VyVGFyZ2V0KTsKKyAgICByZXR1cm4gY2hhbmdlLmF1dG9yZWxlYXNlKCk7CiB9CiAK
IHZvaWQgQVhPYmplY3RDYWNoZTo6cG9zdFRleHRTdGF0ZUNoYW5nZVBsYXRmb3JtTm90aWZpY2F0
aW9uKEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iamVjdCwgQVhUZXh0RWRpdFR5cGUgdHlwZSwgY29u
c3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBWaXNpYmxlUG9zaXRpb24mIHBvc2l0aW9uKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9i
amVjdFdyYXBwZXJCYXNlLm1tIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2Vi
QWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlLm1tCmluZGV4IGFjYWJmYTJjNDdiYTBjMmQx
MWE4MjdiMjk2MDdkY2ZlZjc2ZGVjMDkuLjI0ZmM4YzVlYzNmMzIzM2Y2ZmY1Nzc3ZjE1ZTM5Yzdm
YmExMzljZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dl
YkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UubW0KQEAg
LTUyNyw3ICs1MjcsNyBAQCBzdGF0aWMgYm9vbCBpc1ZhbHVlVHlwZVN1cHBvcnRlZChpZCB2YWx1
ZSkKIHN0YXRpYyBOU0FycmF5ICphcnJheVJlbW92aW5nTm9uU3VwcG9ydGVkVHlwZXMoTlNBcnJh
eSAqYXJyYXkpCiB7CiAgICAgQVNTRVJUKFthcnJheSBpc0tpbmRPZkNsYXNzOltOU0FycmF5IGNs
YXNzXV0pOwotICAgIE5TTXV0YWJsZUFycmF5ICptdXRhYmxlQXJyYXkgPSBbYXJyYXkgbXV0YWJs
ZUNvcHldOworICAgIGF1dG8gbXV0YWJsZUFycmF5ID0gYWRvcHROUyhbYXJyYXkgbXV0YWJsZUNv
cHldKTsKICAgICBmb3IgKE5TVUludGVnZXIgaSA9IDA7IGkgPCBbbXV0YWJsZUFycmF5IGNvdW50
XTspIHsKICAgICAgICAgaWQgdmFsdWUgPSBbbXV0YWJsZUFycmF5IG9iamVjdEF0SW5kZXg6aV07
CiAgICAgICAgIGlmIChbdmFsdWUgaXNLaW5kT2ZDbGFzczpbTlNEaWN0aW9uYXJ5IGNsYXNzXV0p
CkBAIC01NDAsNyArNTQwLDcgQEAgc3RhdGljIE5TQXJyYXkgKmFycmF5UmVtb3ZpbmdOb25TdXBw
b3J0ZWRUeXBlcyhOU0FycmF5ICphcnJheSkKICAgICAgICAgfQogICAgICAgICBpKys7CiAgICAg
fQotICAgIHJldHVybiBbbXV0YWJsZUFycmF5IGF1dG9yZWxlYXNlXTsKKyAgICByZXR1cm4gbXV0
YWJsZUFycmF5LmF1dG9yZWxlYXNlKCk7CiB9CiAKIHN0YXRpYyBOU0RpY3Rpb25hcnkgKmRpY3Rp
b25hcnlSZW1vdmluZ05vblN1cHBvcnRlZFR5cGVzKE5TRGljdGlvbmFyeSAqZGljdGlvbmFyeSkK
QEAgLTU0OCw3ICs1NDgsNyBAQCBzdGF0aWMgTlNEaWN0aW9uYXJ5ICpkaWN0aW9uYXJ5UmVtb3Zp
bmdOb25TdXBwb3J0ZWRUeXBlcyhOU0RpY3Rpb25hcnkgKmRpY3Rpb25hcgogICAgIGlmICghZGlj
dGlvbmFyeSkKICAgICAgICAgcmV0dXJuIG5pbDsKICAgICBBU1NFUlQoW2RpY3Rpb25hcnkgaXNL
aW5kT2ZDbGFzczpbTlNEaWN0aW9uYXJ5IGNsYXNzXV0pOwotICAgIE5TTXV0YWJsZURpY3Rpb25h
cnkgKm11dGFibGVEaWN0aW9uYXJ5ID0gW2RpY3Rpb25hcnkgbXV0YWJsZUNvcHldOworICAgIGF1
dG8gbXV0YWJsZURpY3Rpb25hcnkgPSBhZG9wdE5TKFtkaWN0aW9uYXJ5IG11dGFibGVDb3B5XSk7
CiAgICAgZm9yIChOU1N0cmluZyAqa2V5IGluIGRpY3Rpb25hcnkpIHsKICAgICAgICAgaWQgdmFs
dWUgPSBbZGljdGlvbmFyeSBvYmplY3RGb3JLZXk6a2V5XTsKICAgICAgICAgaWYgKFt2YWx1ZSBp
c0tpbmRPZkNsYXNzOltOU0RpY3Rpb25hcnkgY2xhc3NdXSkKQEAgLTU1OCw3ICs1NTgsNyBAQCBz
dGF0aWMgTlNEaWN0aW9uYXJ5ICpkaWN0aW9uYXJ5UmVtb3ZpbmdOb25TdXBwb3J0ZWRUeXBlcyhO
U0RpY3Rpb25hcnkgKmRpY3Rpb25hcgogICAgICAgICBlbHNlIGlmICghaXNWYWx1ZVR5cGVTdXBw
b3J0ZWQodmFsdWUpKQogICAgICAgICAgICAgW211dGFibGVEaWN0aW9uYXJ5IHJlbW92ZU9iamVj
dEZvcktleTprZXldOwogICAgIH0KLSAgICByZXR1cm4gW211dGFibGVEaWN0aW9uYXJ5IGF1dG9y
ZWxlYXNlXTsKKyAgICByZXR1cm4gbXV0YWJsZURpY3Rpb25hcnkuYXV0b3JlbGVhc2UoKTsKIH0K
IAogLSAodm9pZClhY2Nlc3NpYmlsaXR5UG9zdGVkTm90aWZpY2F0aW9uOihOU1N0cmluZyAqKW5v
dGlmaWNhdGlvbk5hbWUgdXNlckluZm86KE5TRGljdGlvbmFyeSAqKXVzZXJJbmZvCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9XZWJTY3JpcHRPYmplY3QubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9XZWJTY3JpcHRPYmplY3QubW0KaW5kZXggM2ExMDYyYTEz
MTZhYTQ5ZTc1YmE5MmQzYjNlYjZjNzcxOWFjYmExMS4uYmQ1MmNiNDkxODg2YmVlNGNkNjM5ODdm
MjIwM2Q0MmI3YjQ1YTljZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMv
V2ViU2NyaXB0T2JqZWN0Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL1dlYlNj
cmlwdE9iamVjdC5tbQpAQCAtODYsNyArODYsNyBAQCBOU09iamVjdCAqZ2V0SlNXcmFwcGVyKEpT
T2JqZWN0KiBpbXBsKQogICAgIExvY2tIb2xkZXIgaG9sZGVyKCZzcGluTG9jayk7CiAKICAgICBO
U09iamVjdCogd3JhcHBlciA9IHdyYXBwZXJDYWNoZSgpLmdldChpbXBsKTsKLSAgICByZXR1cm4g
d3JhcHBlciA/IFtbd3JhcHBlciByZXRhaW5dIGF1dG9yZWxlYXNlXSA6IG5pbDsKKyAgICByZXR1
cm4gd3JhcHBlciA/IHJldGFpblB0cih3cmFwcGVyKS5hdXRvcmVsZWFzZSgpIDogbmlsOwogfQog
CiB2b2lkIGFkZEpTV3JhcHBlcihOU09iamVjdCAqd3JhcHBlciwgSlNPYmplY3QqIGltcGwpCkBA
IC0xMTYsNyArMTE2LDcgQEAgaWQgY3JlYXRlSlNXcmFwcGVyKEpTQzo6SlNPYmplY3QqIG9iamVj
dCwgUmVmUHRyPEpTQzo6QmluZGluZ3M6OlJvb3RPYmplY3Q+JiYgb3IKIHsKICAgICBpZiAoaWQg
d3JhcHBlciA9IGdldEpTV3JhcHBlcihvYmplY3QpKQogICAgICAgICByZXR1cm4gd3JhcHBlcjsK
LSAgICByZXR1cm4gW1tbV2ViU2NyaXB0T2JqZWN0IGFsbG9jXSBfaW5pdFdpdGhKU09iamVjdDpv
YmplY3Qgb3JpZ2luUm9vdE9iamVjdDpXVEZNb3ZlKG9yaWdpbikgcm9vdE9iamVjdDpXVEZNb3Zl
KHJvb3QpXSBhdXRvcmVsZWFzZV07CisgICAgcmV0dXJuIGFkb3B0TlMoW1tXZWJTY3JpcHRPYmpl
Y3QgYWxsb2NdIF9pbml0V2l0aEpTT2JqZWN0Om9iamVjdCBvcmlnaW5Sb290T2JqZWN0OldURk1v
dmUob3JpZ2luKSByb290T2JqZWN0OldURk1vdmUocm9vdCldKS5hdXRvcmVsZWFzZSgpOwogfQog
CiBzdGF0aWMgdm9pZCBhZGRFeGNlcHRpb25Ub0NvbnNvbGUoSlNDOjpKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpFeGNlcHRpb24qIGV4Y2VwdGlvbikKQEAgLTcxNCw3
ICs3MTQsNyBAQCBJR05PUkVfV0FSTklOR1NfRU5ECiAKICsgKFdlYlVuZGVmaW5lZCAqKXVuZGVm
aW5lZAogewotICAgIHJldHVybiBbW1tXZWJVbmRlZmluZWQgYWxsb2NdIGluaXRdIGF1dG9yZWxl
YXNlXTsKKyAgICByZXR1cm4gYWRvcHROUyhbW1dlYlVuZGVmaW5lZCBhbGxvY10gaW5pdF0pLmF1
dG9yZWxlYXNlKCk7CiB9CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRn
ZS90ZXN0YmluZGluZ3MubW0gYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvdGVzdGJpbmRpbmdzLm1t
CmluZGV4IDRhYzg1NDBiNmZhNzYxMzQ2OTM1ODA4MWExNWExOGE4YjAyMmIxMzcuLjIwYTA2YTNh
MWZhMDg2YzAwOGI0ZDk3OWQ2NzQwM2Q1OGNhNmUzMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JyaWRnZS90ZXN0YmluZGluZ3MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3Rl
c3RiaW5kaW5ncy5tbQpAQCAtNjUsNyArNjUsNyBAQCBAaW50ZXJmYWNlIE15Rmlyc3RJbnRlcmZh
Y2UgOiBOU09iamVjdAogewogICAgIGludCBteUludDsKICAgICBSZXRhaW5QdHI8TXlTZWNvbmRJ
bnRlcmZhY2U+IG15U2Vjb25kSW50ZXJmYWNlOwotICAgIGlkIGpzb2JqZWN0OworICAgIFJldGFp
blB0cjxpZD4ganNvYmplY3Q7CiAgICAgTlNTdHJpbmcgKnN0cmluZzsKIH0KIApAQCAtMTc0LDE1
ICsxNzQsMTQgQEAgLSAodm9pZClsb2dNZXNzYWdlOihOU1N0cmluZyAqKW1lc3NhZ2UgcHJlZml4
OihOU1N0cmluZyAqKXByZWZpeAogCiAtICh2b2lkKXNldEpTT2JqZWN0OihpZClqc28KIHsKLSAg
ICBbanNvYmplY3QgYXV0b3JlbGVhc2VdOwotICAgIGpzb2JqZWN0ID0gW2pzbyByZXRhaW5dOwor
ICAgIGpzb2JqZWN0ID0ganNvOwogfQogCiAtICh2b2lkKWNhbGxKU09iamVjdDooaW50KWFyZzEg
OihpbnQpYXJnMgogewotICAgIGlkIGZvbzEgPSBbanNvYmplY3QgY2FsbFdlYlNjcmlwdE1ldGhv
ZDpAImNhbGwiIHdpdGhBcmd1bWVudHM6W05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0czpqc29iamVj
dCwgW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6YXJnMV0sIFtOU051bWJlciBudW1iZXJXaXRoSW50
OmFyZzJdLCBuaWxdXTsKKyAgICBpZCBmb28xID0gW2pzb2JqZWN0IGNhbGxXZWJTY3JpcHRNZXRo
b2Q6QCJjYWxsIiB3aXRoQXJndW1lbnRzOltOU0FycmF5IGFycmF5V2l0aE9iamVjdHM6anNvYmpl
Y3QuZ2V0KCksIFtOU051bWJlciBudW1iZXJXaXRoSW50OmFyZzFdLCBbTlNOdW1iZXIgbnVtYmVy
V2l0aEludDphcmcyXSwgbmlsXV07CiAgICAgcHJpbnRmICgiZm9vICh2aWEgY2FsbCkgPSAlc1xu
IiwgW1tmb28xIGRlc2NyaXB0aW9uXSBsb3NzeUNTdHJpbmddICk7Ci0gICAgaWQgZm9vMiA9IFtq
c29iamVjdCBjYWxsV2ViU2NyaXB0TWV0aG9kOkAiYXBwbHkiIHdpdGhBcmd1bWVudHM6W05TQXJy
YXkgYXJyYXlXaXRoT2JqZWN0czpqc29iamVjdCwgW05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0czpb
TlNOdW1iZXIgbnVtYmVyV2l0aEludDphcmcxXSwgW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6YXJn
Ml0sIG5pbF0sIG5pbF1dOworICAgIGlkIGZvbzIgPSBbanNvYmplY3QgY2FsbFdlYlNjcmlwdE1l
dGhvZDpAImFwcGx5IiB3aXRoQXJndW1lbnRzOltOU0FycmF5IGFycmF5V2l0aE9iamVjdHM6anNv
YmplY3QuZ2V0KCksIFtOU0FycmF5IGFycmF5V2l0aE9iamVjdHM6W05TTnVtYmVyIG51bWJlcldp
dGhJbnQ6YXJnMV0sIFtOU051bWJlciBudW1iZXJXaXRoSW50OmFyZzJdLCBuaWxdLCBuaWxdXTsK
ICAgICBwcmludGYgKCJmb28gKHZpYSBhcHBseSkgPSAlc1xuIiwgW1tmb28yIGRlc2NyaXB0aW9u
XSBsb3NzeUNTdHJpbmddICk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvY29jb2EvSFRNTENvbnZlcnRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2Ev
SFRNTENvbnZlcnRlci5tbQppbmRleCA2OWZhNjE1MTUyMDNlZWRkYjFiNzc2Y2E4NmNkNTU5ODBm
MTYyY2RmLi4wM2JkMmQ2ZWJhM2IzNWZlNmRjMzk1MzIyNmZiZDhkNTYwYmVjZmU5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCkBAIC0yMjYsNyAr
MjI2LDcgQEAgLSAoTlNJbnRlZ2VyKXJvd1NwYW47CiBAZW5kCiAKICNlbHNlCi1zdGF0aWMgTlNG
aWxlV3JhcHBlciAqZmlsZVdyYXBwZXJGb3JVUkwoRG9jdW1lbnRMb2FkZXIgKiwgTlNVUkwgKik7
CitzdGF0aWMgUmV0YWluUHRyPE5TRmlsZVdyYXBwZXI+IGZpbGVXcmFwcGVyRm9yVVJMKERvY3Vt
ZW50TG9hZGVyICosIE5TVVJMICopOwogc3RhdGljIFJldGFpblB0cjxOU0ZpbGVXcmFwcGVyPiBm
aWxlV3JhcHBlckZvckVsZW1lbnQoSFRNTEltYWdlRWxlbWVudCYpOwogCiBAaW50ZXJmYWNlIE5T
VGV4dEF0dGFjaG1lbnQgKFdlYkNvcmVOU1RleHRBdHRhY2htZW50KQpAQCAtNzY0LDcgKzc2NCw3
IEBAIGJvb2wgSFRNTENvbnZlcnRlckNhY2hlczo6ZmxvYXRQcm9wZXJ0eVZhbHVlRm9yTm9kZShO
b2RlJiBub2RlLCBDU1NQcm9wZXJ0eUlEIHByCiAKIHN0YXRpYyBpbmxpbmUgTlNTaGFkb3cgKl9z
aGFkb3dGb3JTaGFkb3dTdHlsZShOU1N0cmluZyAqc2hhZG93U3R5bGUpCiB7Ci0gICAgTlNTaGFk
b3cgKnNoYWRvdyA9IG5pbDsKKyAgICBSZXRhaW5QdHI8TlNTaGFkb3c+IHNoYWRvdzsKICAgICBO
U1VJbnRlZ2VyIHNoYWRvd1N0eWxlTGVuZ3RoID0gW3NoYWRvd1N0eWxlIGxlbmd0aF07CiAgICAg
TlNSYW5nZSBvcGVuUGFyZW5SYW5nZSA9IFtzaGFkb3dTdHlsZSByYW5nZU9mU3RyaW5nOkAiKCJd
OwogICAgIE5TUmFuZ2UgY2xvc2VQYXJlblJhbmdlID0gW3NoYWRvd1N0eWxlIHJhbmdlT2ZTdHJp
bmc6QCIpIl07CkBAIC04MDYsMTQgKzgwNiwxNCBAQCBzdGF0aWMgaW5saW5lIE5TU2hhZG93ICpf
c2hhZG93Rm9yU2hhZG93U3R5bGUoTlNTdHJpbmcgKnNoYWRvd1N0eWxlKQogICAgICAgICAgICAg
ICAgIGlmICghc3BhY2VSYW5nZS5sZW5ndGgpCiAgICAgICAgICAgICAgICAgICAgIHNwYWNlUmFu
Z2UgPSBOU01ha2VSYW5nZSgwLCAwKTsKICAgICAgICAgICAgICAgICBzaGFkb3dCbHVyUmFkaXVz
ID0gW1tzaGFkb3dTdHlsZSBzdWJzdHJpbmdXaXRoUmFuZ2U6TlNNYWtlUmFuZ2UoTlNNYXhSYW5n
ZShzcGFjZVJhbmdlKSwgdGhpcmRSYW5nZS5sb2NhdGlvbiAtIE5TTWF4UmFuZ2Uoc3BhY2VSYW5n
ZSkpXSBmbG9hdFZhbHVlXTsKLSAgICAgICAgICAgICAgICBzaGFkb3cgPSBbWyhOU1NoYWRvdyAq
KVtQbGF0Zm9ybU5TU2hhZG93IGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07CisgICAgICAgICAg
ICAgICAgc2hhZG93ID0gYWRvcHROUyhbKE5TU2hhZG93ICopW1BsYXRmb3JtTlNTaGFkb3cgYWxs
b2NdIGluaXRdKTsKICAgICAgICAgICAgICAgICBbc2hhZG93IHNldFNoYWRvd0NvbG9yOnNoYWRv
d0NvbG9yXTsKICAgICAgICAgICAgICAgICBbc2hhZG93IHNldFNoYWRvd09mZnNldDpzaGFkb3dP
ZmZzZXRdOwogICAgICAgICAgICAgICAgIFtzaGFkb3cgc2V0U2hhZG93Qmx1clJhZGl1czpzaGFk
b3dCbHVyUmFkaXVzXTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KLSAgICByZXR1
cm4gc2hhZG93OworICAgIHJldHVybiBzaGFkb3cuYXV0b3JlbGVhc2UoKTsKIH0KIAogYm9vbCBI
VE1MQ29udmVydGVyQ2FjaGVzOjppc0Jsb2NrRWxlbWVudChFbGVtZW50JiBlbGVtZW50KQpAQCAt
MTI2Myw3ICsxMjYzLDcgQEAgQk9PTCBIVE1MQ29udmVydGVyOjpfYWRkQXR0YWNobWVudEZvckVs
ZW1lbnQoRWxlbWVudCYgZWxlbWVudCwgTlNVUkwgKnVybCwgQk9PTAogewogICAgIEJPT0wgcmV0
dmFsID0gTk87CiAgICAgQk9PTCBub3RGb3VuZCA9IE5POwotICAgIE5TRmlsZVdyYXBwZXIgKmZp
bGVXcmFwcGVyID0gbmlsOworICAgIFJldGFpblB0cjxOU0ZpbGVXcmFwcGVyPiBmaWxlV3JhcHBl
cjsKICAgICBGcmFtZSogZnJhbWUgPSBlbGVtZW50LmRvY3VtZW50KCkuZnJhbWUoKTsKICAgICBE
b2N1bWVudExvYWRlciAqZGF0YVNvdXJjZSA9IGZyYW1lLT5sb2FkZXIoKS5mcmFtZUhhc0xvYWRl
ZCgpID8gZnJhbWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCkgOiAwOwogICAgIEJPT0wgaWdu
b3JlT3JpZW50YXRpb24gPSBZRVM7CkBAIC0xMjcxLDcgKzEyNzEsNyBAQCBCT09MIEhUTUxDb252
ZXJ0ZXI6Ol9hZGRBdHRhY2htZW50Rm9yRWxlbWVudChFbGVtZW50JiBlbGVtZW50LCBOU1VSTCAq
dXJsLCBCT09MCiAgICAgaWYgKFt1cmwgaXNGaWxlVVJMXSkgewogICAgICAgICBOU1N0cmluZyAq
cGF0aCA9IFtbdXJsIHBhdGhdIHN0cmluZ0J5U3RhbmRhcmRpemluZ1BhdGhdOwogICAgICAgICBp
ZiAocGF0aCkKLSAgICAgICAgICAgIGZpbGVXcmFwcGVyID0gW1tbTlNGaWxlV3JhcHBlciBhbGxv
Y10gaW5pdFdpdGhVUkw6dXJsIG9wdGlvbnM6MCBlcnJvcjpOVUxMXSBhdXRvcmVsZWFzZV07Cisg
ICAgICAgICAgICBmaWxlV3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBp
bml0V2l0aFVSTDp1cmwgb3B0aW9uczowIGVycm9yOk5VTExdKTsKICAgICB9CiAgICAgaWYgKCFm
aWxlV3JhcHBlciAmJiBkYXRhU291cmNlKSB7CiAgICAgICAgIFJlZlB0cjxBcmNoaXZlUmVzb3Vy
Y2U+IHJlc291cmNlID0gZGF0YVNvdXJjZS0+c3VicmVzb3VyY2UodXJsKTsKQEAgLTEyODIsNyAr
MTI4Miw3IEBAIEJPT0wgSFRNTENvbnZlcnRlcjo6X2FkZEF0dGFjaG1lbnRGb3JFbGVtZW50KEVs
ZW1lbnQmIGVsZW1lbnQsIE5TVVJMICp1cmwsIEJPT0wKICAgICAgICAgaWYgKHVzZVBsYWNlaG9s
ZGVyICYmIHJlc291cmNlICYmIG1pbWVUeXBlID09ICJ0ZXh0L2h0bWwiKQogICAgICAgICAgICAg
bm90Rm91bmQgPSBZRVM7CiAgICAgICAgIGlmIChyZXNvdXJjZSAmJiAhbm90Rm91bmQpIHsKLSAg
ICAgICAgICAgIGZpbGVXcmFwcGVyID0gW1tbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3Vs
YXJGaWxlV2l0aENvbnRlbnRzOnJlc291cmNlLT5kYXRhKCkuY3JlYXRlTlNEYXRhKCkuZ2V0KCld
IGF1dG9yZWxlYXNlXTsKKyAgICAgICAgICAgIGZpbGVXcmFwcGVyID0gYWRvcHROUyhbW05TRmls
ZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpyZXNvdXJjZS0+ZGF0
YSgpLmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CiAgICAgICAgICAgICBbZmlsZVdyYXBwZXIgc2V0
UHJlZmVycmVkRmlsZW5hbWU6c3VnZ2VzdGVkRmlsZW5hbWVXaXRoTUlNRVR5cGUodXJsLCBtaW1l
VHlwZSldOwogICAgICAgICB9CiAgICAgfQpAQCAtMTMxNiw3ICsxMzE2LDcgQEAgQk9PTCBIVE1M
Q29udmVydGVyOjpfYWRkQXR0YWNobWVudEZvckVsZW1lbnQoRWxlbWVudCYgZWxlbWVudCwgTlNV
UkwgKnVybCwgQk9PTAogICAgIH0KICAgICBpZiAoZmlsZVdyYXBwZXIgfHwgdXNlUGxhY2Vob2xk
ZXIpIHsKICAgICAgICAgTlNVSW50ZWdlciB0ZXh0TGVuZ3RoID0gW19hdHRyU3RyIGxlbmd0aF07
Ci0gICAgICAgIFJldGFpblB0cjxOU1RleHRBdHRhY2htZW50PiBhdHRhY2htZW50ID0gYWRvcHRO
UyhbW1BsYXRmb3JtTlNUZXh0QXR0YWNobWVudCBhbGxvY10gaW5pdFdpdGhGaWxlV3JhcHBlcjpm
aWxlV3JhcHBlcl0pOworICAgICAgICBSZXRhaW5QdHI8TlNUZXh0QXR0YWNobWVudD4gYXR0YWNo
bWVudCA9IGFkb3B0TlMoW1tQbGF0Zm9ybU5TVGV4dEF0dGFjaG1lbnQgYWxsb2NdIGluaXRXaXRo
RmlsZVdyYXBwZXI6ZmlsZVdyYXBwZXIuZ2V0KCldKTsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KQogICAgICAgICBmbG9hdCB2ZXJ0aWNhbEFsaWduID0gMC4wOwogICAgICAgICBfY2FjaGVzLT5m
bG9hdFByb3BlcnR5VmFsdWVGb3JOb2RlKGVsZW1lbnQsIENTU1Byb3BlcnR5VmVydGljYWxBbGln
biwgdmVydGljYWxBbGlnbik7CkBAIC0xNTIyLDcgKzE1MjIsOCBAQCBzdGF0aWMgaW5saW5lIE5T
RGF0ZSAqX2RhdGVGb3JTdHJpbmcoTlNTdHJpbmcgKnN0cmluZykKICAgICAgICAgcmV0dXJuIG5p
bDsKICAgICBbZGF0ZUNvbXBvbmVudHMgc2V0U2Vjb25kOmNvbXBvbmVudF07CiAgICAgCi0gICAg
cmV0dXJuIFtbW1tOU0NhbGVuZGFyIGFsbG9jXSBpbml0V2l0aENhbGVuZGFySWRlbnRpZmllcjpO
U0NhbGVuZGFySWRlbnRpZmllckdyZWdvcmlhbl0gYXV0b3JlbGVhc2VdIGRhdGVGcm9tQ29tcG9u
ZW50czpkYXRlQ29tcG9uZW50cy5nZXQoKV07CisgICAgYXV0byBjYWxlbmRhciA9IGFkb3B0TlMo
W1tOU0NhbGVuZGFyIGFsbG9jXSBpbml0V2l0aENhbGVuZGFySWRlbnRpZmllcjpOU0NhbGVuZGFy
SWRlbnRpZmllckdyZWdvcmlhbl0pOworICAgIHJldHVybiBbY2FsZW5kYXIgZGF0ZUZyb21Db21w
b25lbnRzOmRhdGVDb21wb25lbnRzLmdldCgpXTsKIH0KIAogc3RhdGljIE5TSW50ZWdlciBfY29s
Q29tcGFyZShpZCBibG9jazEsIGlkIGJsb2NrMiwgdm9pZCAqKQpAQCAtMjMwMiwxNCArMjMwMywx
NCBAQCBOb2RlKiBIVE1MQ29udmVydGVyQ2FjaGVzOjpjYWNoZUFuY2VzdG9yc09mU3RhcnRUb0Jl
Q29udmVydGVkKGNvbnN0IFBvc2l0aW9uJiBzdAogCiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkp
CiAKLXN0YXRpYyBOU0ZpbGVXcmFwcGVyICpmaWxlV3JhcHBlckZvclVSTChEb2N1bWVudExvYWRl
ciogZGF0YVNvdXJjZSwgTlNVUkwgKlVSTCkKK3N0YXRpYyBSZXRhaW5QdHI8TlNGaWxlV3JhcHBl
cj4gZmlsZVdyYXBwZXJGb3JVUkwoRG9jdW1lbnRMb2FkZXIqIGRhdGFTb3VyY2UsIE5TVVJMICpV
UkwpCiB7CiAgICAgaWYgKFtVUkwgaXNGaWxlVVJMXSkKLSAgICAgICAgcmV0dXJuIFtbW05TRmls
ZVdyYXBwZXIgYWxsb2NdIGluaXRXaXRoVVJMOltVUkwgVVJMQnlSZXNvbHZpbmdTeW1saW5rc0lu
UGF0aF0gb3B0aW9uczowIGVycm9yOm51bGxwdHJdIGF1dG9yZWxlYXNlXTsKKyAgICAgICAgcmV0
dXJuIGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0V2l0aFVSTDpbVVJMIFVSTEJ5
UmVzb2x2aW5nU3ltbGlua3NJblBhdGhdIG9wdGlvbnM6MCBlcnJvcjpudWxscHRyXSk7CiAKICAg
ICBpZiAoZGF0YVNvdXJjZSkgewogICAgICAgICBpZiAoUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4g
cmVzb3VyY2UgPSBkYXRhU291cmNlLT5zdWJyZXNvdXJjZShVUkwpKSB7Ci0gICAgICAgICAgICBO
U0ZpbGVXcmFwcGVyICp3cmFwcGVyID0gW1tbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3Vs
YXJGaWxlV2l0aENvbnRlbnRzOnJlc291cmNlLT5kYXRhKCkuY3JlYXRlTlNEYXRhKCkuZ2V0KCld
IGF1dG9yZWxlYXNlXTsKKyAgICAgICAgICAgIGF1dG8gd3JhcHBlciA9IGFkb3B0TlMoW1tOU0Zp
bGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6cmVzb3VyY2UtPmRh
dGEoKS5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogICAgICAgICAgICAgTlNTdHJpbmcgKmZpbGVu
YW1lID0gcmVzb3VyY2UtPnJlc3BvbnNlKCkuc3VnZ2VzdGVkRmlsZW5hbWUoKTsKICAgICAgICAg
ICAgIGlmICghZmlsZW5hbWUgfHwgIVtmaWxlbmFtZSBsZW5ndGhdKQogICAgICAgICAgICAgICAg
IGZpbGVuYW1lID0gc3VnZ2VzdGVkRmlsZW5hbWVXaXRoTUlNRVR5cGUocmVzb3VyY2UtPnVybCgp
LCByZXNvdXJjZS0+bWltZVR5cGUoKSk7CkBAIC0yMzIwLDcgKzIzMjEsNyBAQCBzdGF0aWMgTlNG
aWxlV3JhcHBlciAqZmlsZVdyYXBwZXJGb3JVUkwoRG9jdW1lbnRMb2FkZXIqIGRhdGFTb3VyY2Us
IE5TVVJMICpVUkwpCiAKICAgICBOU0NhY2hlZFVSTFJlc3BvbnNlICpjYWNoZWRSZXNwb25zZSA9
IFtbTlNVUkxDYWNoZSBzaGFyZWRVUkxDYWNoZV0gY2FjaGVkUmVzcG9uc2VGb3JSZXF1ZXN0OmFk
b3B0TlMoW1tOU011dGFibGVVUkxSZXF1ZXN0IGFsbG9jXSBpbml0V2l0aFVSTDpVUkxdKS5nZXQo
KV07CiAgICAgaWYgKGNhY2hlZFJlc3BvbnNlKSB7Ci0gICAgICAgIE5TRmlsZVdyYXBwZXIgKndy
YXBwZXIgPSBbW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVu
dHM6W2NhY2hlZFJlc3BvbnNlIGRhdGFdXSBhdXRvcmVsZWFzZV07CisgICAgICAgIGF1dG8gd3Jh
cHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRo
Q29udGVudHM6W2NhY2hlZFJlc3BvbnNlIGRhdGFdXSk7CiAgICAgICAgIFt3cmFwcGVyIHNldFBy
ZWZlcnJlZEZpbGVuYW1lOltbY2FjaGVkUmVzcG9uc2UgcmVzcG9uc2VdIHN1Z2dlc3RlZEZpbGVu
YW1lXV07CiAgICAgICAgIHJldHVybiB3cmFwcGVyOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQXJjaGl2ZVJlc291cmNlV2ViUmVzb3VyY2VIYW5k
bGVyLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJBcmNoaXZlUmVzb3VyY2VX
ZWJSZXNvdXJjZUhhbmRsZXIubW0KaW5kZXggMmQzM2I4NWZkMzVmMGE4ZWQ4M2I0NjBhMDcyOWY3
OTg4OGFjMjE3ZC4uNzhlNDRlYWExYjlhNjZmM2U2NmE4MWNiZTY0ODA4ZDE5MzJlODJmYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJBcmNoaXZlUmVzb3VyY2VX
ZWJSZXNvdXJjZUhhbmRsZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9X
ZWJBcmNoaXZlUmVzb3VyY2VXZWJSZXNvdXJjZUhhbmRsZXIubW0KQEAgLTMzLDcgKzMzLDcgQEAg
QGltcGxlbWVudGF0aW9uIFdlYkFyY2hpdmVSZXNvdXJjZVdlYlJlc291cmNlSGFuZGxlcgogCiAt
IChpZClyZXNvdXJjZUZvckRhdGE6KE5TRGF0YSAqKWRhdGEgVVJMOihOU1VSTCAqKXVybCBNSU1F
VHlwZTooTlNTdHJpbmcgKiltaW1lVHlwZSB0ZXh0RW5jb2RpbmdOYW1lOihOU1N0cmluZyAqKXRl
eHRFbmNvZGluZ05hbWUgZnJhbWVOYW1lOihOU1N0cmluZyAqKWZyYW1lTmFtZQogewotICAgIHJl
dHVybiBbW1tXZWJBcmNoaXZlUmVzb3VyY2VGcm9tTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBp
bml0V2l0aERhdGE6ZGF0YSBVUkw6dXJsIE1JTUVUeXBlOm1pbWVUeXBlIHRleHRFbmNvZGluZ05h
bWU6dGV4dEVuY29kaW5nTmFtZSBmcmFtZU5hbWU6ZnJhbWVOYW1lXSBhdXRvcmVsZWFzZV07Cisg
ICAgcmV0dXJuIGFkb3B0TlMoW1tXZWJBcmNoaXZlUmVzb3VyY2VGcm9tTlNBdHRyaWJ1dGVkU3Ry
aW5nIGFsbG9jXSBpbml0V2l0aERhdGE6ZGF0YSBVUkw6dXJsIE1JTUVUeXBlOm1pbWVUeXBlIHRl
eHRFbmNvZGluZ05hbWU6dGV4dEVuY29kaW5nTmFtZSBmcmFtZU5hbWU6ZnJhbWVOYW1lXSkuYXV0
b3JlbGVhc2UoKTsKIH0KIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbQppbmRleCBiOTkyZDdhMDM3ZTUzNDRkYzhi
OTRkYzFjYjFkYWRmODRmODkwNmQ4Li5kNTg5NmZkOTQwMjM5ODQyYTA2Mzk1MTAxN2I3MmViZDFh
NjRlMmU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRl
bnRSZWFkZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNv
bnRlbnRSZWFkZXJDb2NvYS5tbQpAQCAtMTI4LDcgKzEyOCw3IEBAIHN0YXRpYyBOU0RpY3Rpb25h
cnkgKmF0dHJpYnV0ZXNGb3JBdHRyaWJ1dGVkU3RyaW5nQ29udmVyc2lvbigpCiAgICAgICAgIEAi
SW50ZXJjaGFuZ2VOZXdsaW5lIjogQFlFUywKICAgICAgICAgQCJDb2FsZXNjZVRhYlNwYW5zIjog
QFlFUywKICAgICAgICAgQCJPdXRwdXRCYXNlVVJMIjogYmFzZVVSTCwKLSAgICAgICAgQCJXZWJS
ZXNvdXJjZUhhbmRsZXIiOiBbW1dlYkFyY2hpdmVSZXNvdXJjZVdlYlJlc291cmNlSGFuZGxlciBu
ZXddIGF1dG9yZWxlYXNlXSwKKyAgICAgICAgQCJXZWJSZXNvdXJjZUhhbmRsZXIiOiBhZG9wdE5T
KFtXZWJBcmNoaXZlUmVzb3VyY2VXZWJSZXNvdXJjZUhhbmRsZXIgbmV3XSkuYXV0b3JlbGVhc2Uo
KSwKICAgICB9OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvbWFjL0xv
YWRlck5TVVJMRXh0cmFzLm1tIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL21hYy9Mb2FkZXJOU1VS
TEV4dHJhcy5tbQppbmRleCAwMWI1MDczYmRmMTE0ZGRmZjA0NmNjMWY2N2UwMDg0ZTI1MWZkYWFh
Li41NTBkYWI4MGVlM2FhNDYwNzIxZGViNmMzMGM4NWE4ZTZkZjBhMDQ3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvbWFjL0xvYWRlck5TVVJMRXh0cmFzLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9tYWMvTG9hZGVyTlNVUkxFeHRyYXMubW0KQEAgLTg4LDcgKzg4LDcg
QEAgTlNTdHJpbmcgKnN1Z2dlc3RlZEZpbGVuYW1lV2l0aE1JTUVUeXBlKE5TVVJMICp1cmwsIGNv
bnN0IFN0cmluZyYgbWltZVR5cGUpCiAKIE5TU3RyaW5nICpmaWxlbmFtZUJ5Rml4aW5nSWxsZWdh
bENoYXJhY3RlcnMoTlNTdHJpbmcgKnN0cmluZykKIHsKLSAgICBOU011dGFibGVTdHJpbmcgKmZp
bGVuYW1lID0gW1tzdHJpbmcgbXV0YWJsZUNvcHldIGF1dG9yZWxlYXNlXTsKKyAgICBhdXRvIGZp
bGVuYW1lID0gYWRvcHROUyhbc3RyaW5nIG11dGFibGVDb3B5XSk7CiAKICAgICAvLyBTdHJpcCBu
dWxsIGNoYXJhY3RlcnMuCiAgICAgdW5pY2hhciBudWxsQ2hhciA9IDA7CkBAIC0xMDQsNSArMTA0
LDUgQEAgTlNTdHJpbmcgKmZpbGVuYW1lQnlGaXhpbmdJbGxlZ2FsQ2hhcmFjdGVycyhOU1N0cmlu
ZyAqc3RyaW5nKQogICAgIHdoaWxlIChbZmlsZW5hbWUgaGFzUHJlZml4OkAiLiJdKQogICAgICAg
ICBbZmlsZW5hbWUgZGVsZXRlQ2hhcmFjdGVyc0luUmFuZ2U6TlNNYWtlUmFuZ2UoMCwgMSldOwog
Ci0gICAgcmV0dXJuIGZpbGVuYW1lOworICAgIHJldHVybiBmaWxlbmFtZS5hdXRvcmVsZWFzZSgp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KaW5kZXggMzI5ODZlN2RhOWU1NzFhODUxYjFkNTMy
NGE4MWRjMGY4M2FmYWI2YS4uYTc5MTM0YTRlN2JlYTZmMDU3N2JhNTIwM2I5NmVlY2MxMGQwMjc1
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCkBAIC05MjAsNyArOTIwLDcgQEAgdm9pZCBNZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjcmVhdGVBVkFzc2V0Rm9yVVJMKGNvbnN0
IFVSTCYgdXJsLCBSZXQKICAgICAgICAgJiYgW3Jlc291cmNlTG9hZGVyIHJlc3BvbmRzVG9TZWxl
Y3RvcjpAc2VsZWN0b3IoVVJMU2Vzc2lvbkRhdGFEZWxlZ2F0ZVF1ZXVlKV0pIHsKICAgICAgICAg
UmVmUHRyPFBsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlcj4gbWVkaWFSZXNvdXJjZUxvYWRlciA9
IHBsYXllcigpLT5jcmVhdGVSZXNvdXJjZUxvYWRlcigpOwogICAgICAgICBpZiAobWVkaWFSZXNv
dXJjZUxvYWRlcikKLSAgICAgICAgICAgIHJlc291cmNlTG9hZGVyLlVSTFNlc3Npb24gPSAoTlNV
UkxTZXNzaW9uICopW1tbV2ViQ29yZU5TVVJMU2Vzc2lvbiBhbGxvY10gaW5pdFdpdGhSZXNvdXJj
ZUxvYWRlcjoqbWVkaWFSZXNvdXJjZUxvYWRlciBkZWxlZ2F0ZTpyZXNvdXJjZUxvYWRlci5VUkxT
ZXNzaW9uRGF0YURlbGVnYXRlIGRlbGVnYXRlUXVldWU6cmVzb3VyY2VMb2FkZXIuVVJMU2Vzc2lv
bkRhdGFEZWxlZ2F0ZVF1ZXVlXSBhdXRvcmVsZWFzZV07CisgICAgICAgICAgICByZXNvdXJjZUxv
YWRlci5VUkxTZXNzaW9uID0gKE5TVVJMU2Vzc2lvbiAqKWFkb3B0TlMoW1tXZWJDb3JlTlNVUkxT
ZXNzaW9uIGFsbG9jXSBpbml0V2l0aFJlc291cmNlTG9hZGVyOiptZWRpYVJlc291cmNlTG9hZGVy
IGRlbGVnYXRlOnJlc291cmNlTG9hZGVyLlVSTFNlc3Npb25EYXRhRGVsZWdhdGUgZGVsZWdhdGVR
dWV1ZTpyZXNvdXJjZUxvYWRlci5VUkxTZXNzaW9uRGF0YURlbGVnYXRlUXVldWVdKS5hdXRvcmVs
ZWFzZSgpOwogICAgIH0KIAogICAgIG1faGF2ZUNoZWNrZWRQbGF5YWJpbGl0eSA9IGZhbHNlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkFWUGxheWVyQ29udHJv
bGxlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJBVlBsYXllckNvbnRyb2xs
ZXIubW0KaW5kZXggNjZjOTIxMjRmZTg2NzU0NmE3N2YyNGMzZTMyMjk3ZGIyM2U3ZWYyMy4uOTY4
YTQxMWQ5ZmQyZTJhYTljNDBkOWNhZGNiOTFmOTEzYTJjZTIyMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkFWUGxheWVyQ29udHJvbGxlci5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViQVZQbGF5ZXJDb250cm9sbGVyLm1tCkBAIC02OSw3
ICs2OSw3IEBAIC0gKGluc3RhbmNldHlwZSlpbml0CiAgICAgICAgIHJldHVybiBzZWxmOwogCiAg
ICAgaW5pdEFWUGxheWVyQ29udHJvbGxlcigpOwotICAgIHNlbGYucGxheWVyQ29udHJvbGxlclBy
b3h5ID0gW1thbGxvY0FWUGxheWVyQ29udHJvbGxlckluc3RhbmNlKCkgaW5pdF0gYXV0b3JlbGVh
c2VdOworICAgIHNlbGYucGxheWVyQ29udHJvbGxlclByb3h5ID0gYWRvcHROUyhbYWxsb2NBVlBs
YXllckNvbnRyb2xsZXJJbnN0YW5jZSgpIGluaXRdKS5hdXRvcmVsZWFzZSgpOwogICAgIF9saXZl
U3RyZWFtRXZlbnRNb2RlUG9zc2libGUgPSBZRVM7CiAKICAgICBbc2VsZiBhZGRPYnNlcnZlcjpz
ZWxmIGZvcktleVBhdGg6QCJzZWVrYWJsZVRpbWVSYW5nZXMiIG9wdGlvbnM6KE5TS2V5VmFsdWVP
YnNlcnZpbmdPcHRpb25PbGQgfCBOU0tleVZhbHVlT2JzZXJ2aW5nT3B0aW9uTmV3IHwgTlNLZXlW
YWx1ZU9ic2VydmluZ09wdGlvbkluaXRpYWwpIGNvbnRleHQ6V2ViQVZQbGF5ZXJDb250cm9sbGVy
U2Vla2FibGVUaW1lUmFuZ2VzT2JzZXJ2ZXJDb250ZXh0XTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJFdmVudC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2lvcy9XZWJFdmVudC5tbQppbmRleCBmODQzYzU0YTQ2YTJmMmNmNDc5ZjM4NmNiODRhY2RjZDVi
NTFmZjY4Li45Nzg4NzJmMjBlOWNjNThlNjMwYzkwNTc5NTQwNWIwYWMxMmM5ZmQzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViRXZlbnQubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkV2ZW50Lm1tCkBAIC0zODAsMTkgKzM4MCwxOSBAQCAt
IChOU1N0cmluZyAqKWNoYXJhY3RlcnMKIHsKICAgICBBU1NFUlQoX3R5cGUgPT0gV2ViRXZlbnRL
ZXlEb3duIHx8IF90eXBlID09IFdlYkV2ZW50S2V5VXApOwogICAgIEFTU0VSVCghKF9rZXlib2Fy
ZEZsYWdzICYgV2ViRXZlbnRLZXlib2FyZElucHV0TW9kaWZpZXJGbGFnc0NoYW5nZWQpKTsKLSAg
ICByZXR1cm4gW1tfY2hhcmFjdGVycyByZXRhaW5dIGF1dG9yZWxlYXNlXTsKKyAgICByZXR1cm4g
cmV0YWluUHRyKF9jaGFyYWN0ZXJzKS5hdXRvcmVsZWFzZSgpOwogfQogCiAtIChOU1N0cmluZyAq
KWNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVycwogewogICAgIEFTU0VSVChfdHlwZSA9PSBXZWJF
dmVudEtleURvd24gfHwgX3R5cGUgPT0gV2ViRXZlbnRLZXlVcCk7CiAgICAgQVNTRVJUKCEoX2tl
eWJvYXJkRmxhZ3MgJiBXZWJFdmVudEtleWJvYXJkSW5wdXRNb2RpZmllckZsYWdzQ2hhbmdlZCkp
OwotICAgIHJldHVybiBbW19jaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnMgcmV0YWluXSBhdXRv
cmVsZWFzZV07CisgICAgcmV0dXJuIHJldGFpblB0cihfY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZp
ZXJzKS5hdXRvcmVsZWFzZSgpOwogfQogCiAtIChOU1N0cmluZyAqKWlucHV0TWFuYWdlckhpbnQK
IHsKLSAgICByZXR1cm4gW1tfaW5wdXRNYW5hZ2VySGludCByZXRhaW5dIGF1dG9yZWxlYXNlXTsK
KyAgICByZXR1cm4gcmV0YWluUHRyKFtfaW5wdXRNYW5hZ2VySGludCkuYXV0b3JlbGVhc2UoKTsK
IH0KIAogLSAoV2ViRXZlbnRGbGFncyltb2RpZmllckZsYWdzCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZC5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkLm1tCmluZGV4
IDFlYTY2MjU5OWMwNDU5NDU3ODA2ODYxZjI1MTcwODBkM2Y5MzU0YjQuLjQ3ZDc3NzI2MTAwZWQw
MzU5YTljYTY0NzdjMmY5YzNkYTcyMDg2OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy9XZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy9XZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkLm1tCkBAIC0zNjksNyAr
MzY5LDcgQEAgQGltcGxlbWVudGF0aW9uIFdlYkl0ZW1Qcm92aWRlckxvYWRSZXN1bHQgewogCiAr
IChpbnN0YW5jZXR5cGUpbG9hZFJlc3VsdFdpdGhJdGVtUHJvdmlkZXI6KE5TSXRlbVByb3ZpZGVy
ICopaXRlbVByb3ZpZGVyIHR5cGVzVG9Mb2FkOihOU0FycmF5PE5TU3RyaW5nICo+ICopdHlwZXNU
b0xvYWQKIHsKLSAgICByZXR1cm4gW1tbc2VsZiBhbGxvY10gaW5pdFdpdGhJdGVtUHJvdmlkZXI6
aXRlbVByb3ZpZGVyIHR5cGVzVG9Mb2FkOnR5cGVzVG9Mb2FkXSBhdXRvcmVsZWFzZV07CisgICAg
cmV0dXJuIGFkb3B0TlMoW1tzZWxmIGFsbG9jXSBpbml0V2l0aEl0ZW1Qcm92aWRlcjppdGVtUHJv
dmlkZXIgdHlwZXNUb0xvYWQ6dHlwZXNUb0xvYWRdKS5hdXRvcmVsZWFzZSgpOwogfQogCiAtIChp
bnN0YW5jZXR5cGUpaW5pdFdpdGhJdGVtUHJvdmlkZXI6KE5TSXRlbVByb3ZpZGVyICopaXRlbVBy
b3ZpZGVyIHR5cGVzVG9Mb2FkOihOU0FycmF5PE5TU3RyaW5nICo+ICopdHlwZXNUb0xvYWQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5D
b250cm9sbGVyQVZLaXQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9G
dWxsc2NyZWVuQ29udHJvbGxlckFWS2l0Lm1tCmluZGV4IDRiOGEwM2I2NzVjZGUxMWRkZWZjODI2
OWRmN2JlYzY5NWMzOTQ3OWIuLjQ3ZWY2MjU1YjVjYzc2NTAyNjlmMmZkZDkwMmZkMjM5NWJkMGY2
ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxz
Y3JlZW5Db250cm9sbGVyQVZLaXQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9z
L1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5tbQpAQCAtMTA2Miw3ICsxMDYyLDcg
QEAgLSAodm9pZClkaWRGaW5pc2hGdWxsc2NyZWVuOihWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVy
Q29udGV4dCopY29udGV4dAogewogICAgIEFTU0VSVChXZWJUaHJlYWRJc0N1cnJlbnQoKSk7CiAg
ICAgQVNTRVJUX1VOVVNFRChjb250ZXh0LCBjb250ZXh0ID09IF9jb250ZXh0KTsKLSAgICBbW3Nl
bGYgcmV0YWluXSBhdXRvcmVsZWFzZV07IC8vIHJldGFpbiBzZWxmIGJlZm9yZSBicmVha2luZyBh
IHJldGFpbiBjeWNsZS4KKyAgICByZXRhaW5QdHIodGhpcykuYXV0b3JlbGVhc2UoKTsgLy8gcmV0
YWluIHNlbGYgYmVmb3JlIGJyZWFraW5nIGEgcmV0YWluIGN5Y2xlLgogICAgIF9jb250ZXh0LT5z
ZXRDb250cm9sbGVyKG5pbCk7CiAgICAgX2NvbnRleHQgPSBudWxscHRyOwogICAgIF92aWRlb0Vs
ZW1lbnQgPSBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9z
L3dhay9XQUtWaWV3Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XQUtWaWV3
Lm1tCmluZGV4IDczNmYwOTExNzZlODM0NjdmZGYwNmI3OWFkMGU3OTdjNmNjY2Q3OGEuLjUxYmM2
YzZhYjVmNDcyNTg0NTMyMmQ0ZmUyZGUxMzY3YTQ1NGVjMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV0FLVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3Mvd2FrL1dBS1ZpZXcubW0KQEAgLTE5Niw3ICsxOTYsNyBAQCArIChXQUtWaWV3
ICopX3dyYXBwZXJGb3JWaWV3UmVmOihXS1ZpZXdSZWYpX3ZpZXdSZWYKIHsKICAgICBBU1NFUlQo
X3ZpZXdSZWYpOwogICAgIGlmIChfdmlld1JlZi0+aXNhLmNsYXNzSW5mbyA9PSAmV0tWaWV3Q2xh
c3NJbmZvKQotICAgICAgICByZXR1cm4gW1tbV0FLVmlldyBhbGxvY10gX2luaXRXaXRoVmlld1Jl
Zjpfdmlld1JlZl0gYXV0b3JlbGVhc2VdOworICAgICAgICByZXR1cm4gYWRvcHROUyhbW1dBS1Zp
ZXcgYWxsb2NdIF9pbml0V2l0aFZpZXdSZWY6X3ZpZXdSZWZdKS5hdXRvcmVsZWFzZSgpOwogICAg
IFdLRXJyb3IgKCJ1bmFibGUgdG8gY3JlYXRlIHdyYXBwZXIgZm9yICVzXG4iLCBfdmlld1JlZi0+
aXNhLmNsYXNzSW5mby0+bmFtZSk7CiAgICAgcmV0dXJuIG5pbDsKIH0KQEAgLTIzNiw3ICsyMzYs
NyBAQCAtIChpZClpbml0V2l0aEZyYW1lOihDR1JlY3QpcmVjdAogCiAtICh2b2lkKWRlYWxsb2MK
IHsKLSAgICBbW1tzdWJ2aWV3UmVmZXJlbmNlcyBjb3B5XSBhdXRvcmVsZWFzZV0gbWFrZU9iamVj
dHNQZXJmb3JtU2VsZWN0b3I6QHNlbGVjdG9yKHJlbW92ZUZyb21TdXBlcnZpZXcpXTsKKyAgICBb
YWRvcHROUyhbc3Vidmlld1JlZmVyZW5jZXMgY29weV0pLmF1dG9yZWxlYXNlKCkgbWFrZU9iamVj
dHNQZXJmb3JtU2VsZWN0b3I6QHNlbGVjdG9yKHJlbW92ZUZyb21TdXBlcnZpZXcpXTsKIAogICAg
IGlmICh2aWV3UmVmKSB7CiAgICAgICAgIF9XS1ZpZXdTZXRWaWV3Q29udGV4dCAodmlld1JlZiwg
MCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1h
Yy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCmluZGV4
IGYzMjZhNjlmOTU2MGZjMzQxZmRiYzQ2MDc1ODlhYzAwN2E2ODYyZjUuLjEyYmMzZDZhZThlMmNm
MWJjNTJhM2EwZDZkZTFiOTI3MTljN2ViZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9QYXN0ZWJvYXJkTWFjLm1tCkBAIC0yNDgsOSArMjQ4LDkgQEAgdm9pZCBQYXN0ZWJvYXJk
Ojp3cml0ZShjb25zdCBDb2xvciYgY29sb3IpCiAKIHN0YXRpYyBOU0ZpbGVXcmFwcGVyKiBmaWxl
V3JhcHBlcihjb25zdCBQYXN0ZWJvYXJkSW1hZ2UmIHBhc3RlYm9hcmRJbWFnZSkKIHsKLSAgICBO
U0ZpbGVXcmFwcGVyICp3cmFwcGVyID0gW1tbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3Vs
YXJGaWxlV2l0aENvbnRlbnRzOnBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZURhdGEtPmNyZWF0ZU5T
RGF0YSgpLmdldCgpXSBhdXRvcmVsZWFzZV07CisgICAgYXV0byB3cmFwcGVyID0gYWRvcHROUyhb
W05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpwYXN0ZWJv
YXJkSW1hZ2UucmVzb3VyY2VEYXRhLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogICAgIFt3cmFw
cGVyIHNldFByZWZlcnJlZEZpbGVuYW1lOnN1Z2dlc3RlZEZpbGVuYW1lV2l0aE1JTUVUeXBlKHBh
c3RlYm9hcmRJbWFnZS51cmwudXJsLCBwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VNSU1FVHlwZSld
OwotICAgIHJldHVybiB3cmFwcGVyOworICAgIHJldHVybiB3cmFwcGVyLmF1dG9yZWxlYXNlKCk7
CiB9CiAKIHN0YXRpYyB2b2lkIHdyaXRlRmlsZVdyYXBwZXJBc1JURkRBdHRhY2htZW50KE5TRmls
ZVdyYXBwZXIgKndyYXBwZXIsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGludDY0X3Qm
IG5ld0NoYW5nZUNvdW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L1dlYkNvcmVOU1VSTEV4dHJhcy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJD
b3JlTlNVUkxFeHRyYXMubW0KaW5kZXggYzc1ZDIwZjBmNzc1NjE3OWQ0ZjlkODAyODFlY2E0NDhl
ZDIwMGI4Zi4uMTNjODJiMjZhNmIwODNlYThjMzdjOTI4NGY3YzQ4ZWI5NTNhYTlmOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVOU1VSTEV4dHJhcy5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZU5TVVJMRXh0cmFzLm1tCkBA
IC01Miw4ICs1Miw3IEBAIE5TVVJMICpVUkxCeUNhbm9uaWNhbGl6aW5nVVJMKE5TVVJMICpVUkwp
CiAgICAgLy8gKHNlZSA1MzE1OTI2KS4gSXQgbWlnaHQgbWFrZSBzZW5zZSB0byBhcHBseSBvbmx5
IHRoZSBVUkwgY29uY2VwdCBhbmQgbm90IHRoZSBOU1VSTAogICAgIC8vIGNvbmNlcHQsIGJ1dCBp
dCdzIHRvbyByaXNreSB0byBtYWtlIHRoYXQgY2hhbmdlIGZvciBXZWJLaXQgMy4wLgogICAgIE5T
VVJMUmVxdWVzdCAqbmV3UmVxdWVzdCA9IFtjb25jcmV0ZUNsYXNzIGNhbm9uaWNhbFJlcXVlc3RG
b3JSZXF1ZXN0OnJlcXVlc3QuZ2V0KCldOwotICAgIE5TVVJMICpuZXdVUkwgPSBbbmV3UmVxdWVz
dCBVUkxdOyAKLSAgICByZXR1cm4gW1tuZXdVUkwgcmV0YWluXSBhdXRvcmVsZWFzZV07CisgICAg
cmV0dXJuIHJldGFpblB0cihbbmV3UmVxdWVzdCBVUkxdKS5hdXRvcmVsZWFzZSgpOwogfQogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvV2ViTlNBdHRyaWJ1dGVkU3RyaW5nRXh0cmFzLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL1dlYk5TQXR0cmlidXRlZFN0cmluZ0V4dHJhcy5tbQppbmRleCA1NzJjMzVmMTgz
MDY0YzhhODg4YjFjOWRhNjRhMTE2MmRkZGRjZjA0Li5kZmYwNjc4MjgwNzQ5OTFjYzM2OGYxM2Vi
NDk5Mzk4MGI0YjlhOTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
V2ViTlNBdHRyaWJ1dGVkU3RyaW5nRXh0cmFzLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9XZWJOU0F0dHJpYnV0ZWRTdHJpbmdFeHRyYXMubW0KQEAgLTU1LDEzICs1NSwxMyBA
QCBOU0F0dHJpYnV0ZWRTdHJpbmcgKmF0dHJpYnV0ZWRTdHJpbmdCeVN0cmlwcGluZ0F0dGFjaG1l
bnRDaGFyYWN0ZXJzKE5TQXR0cmlidXRlZAogICAgIAogICAgIGF0dGFjaG1lbnRSYW5nZSA9IFtv
cmlnaW5hbFN0cmluZyByYW5nZU9mU3RyaW5nOmF0dGFjaG1lbnRDaGFyU3RyaW5nXTsKICAgICBp
ZiAoYXR0YWNobWVudFJhbmdlLmxvY2F0aW9uICE9IE5TTm90Rm91bmQgJiYgYXR0YWNobWVudFJh
bmdlLmxlbmd0aCA+IDApIHsKLSAgICAgICAgTlNNdXRhYmxlQXR0cmlidXRlZFN0cmluZyAqbmV3
QXR0cmlidXRlZFN0cmluZyA9IFtbYXR0cmlidXRlZFN0cmluZyBtdXRhYmxlQ29weVdpdGhab25l
Ok5VTExdIGF1dG9yZWxlYXNlXTsKKyAgICAgICAgYXV0byBuZXdBdHRyaWJ1dGVkU3RyaW5nID0g
YWRvcHROUyhbYXR0cmlidXRlZFN0cmluZyBtdXRhYmxlQ29weVdpdGhab25lOk5VTExdKTsKICAg
ICAgICAgCiAgICAgICAgIHdoaWxlIChhdHRhY2htZW50UmFuZ2UubG9jYXRpb24gIT0gTlNOb3RG
b3VuZCAmJiBhdHRhY2htZW50UmFuZ2UubGVuZ3RoID4gMCkgewogICAgICAgICAgICAgW25ld0F0
dHJpYnV0ZWRTdHJpbmcgcmVwbGFjZUNoYXJhY3RlcnNJblJhbmdlOmF0dGFjaG1lbnRSYW5nZSB3
aXRoU3RyaW5nOkAiIl07CiAgICAgICAgICAgICBhdHRhY2htZW50UmFuZ2UgPSBbW25ld0F0dHJp
YnV0ZWRTdHJpbmcgc3RyaW5nXSByYW5nZU9mU3RyaW5nOmF0dGFjaG1lbnRDaGFyU3RyaW5nXTsK
ICAgICAgICAgfQotICAgICAgICByZXR1cm4gbmV3QXR0cmlidXRlZFN0cmluZzsKKyAgICAgICAg
cmV0dXJuIG5ld0F0dHJpYnV0ZWRTdHJpbmcuYXV0b3JlbGVhc2UoKTsKICAgICB9CiAgICAgCiAg
ICAgcmV0dXJuIGF0dHJpYnV0ZWRTdHJpbmc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3QuaAppbmRleCA3MWE5MjJmMzEyMzQ5Mjdj
ZmE4YmNkMWVjNzQ4YjdmNDQ3ZGUzNTcwLi43Mzg1Njk4NmZlMzUzZTk0MmI4MzBlNGVjMjg1ZTJk
NWRkM2Y4ZmMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nm
L1Jlc291cmNlUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y2YvUmVzb3VyY2VSZXF1ZXN0LmgKQEAgLTEyNyw3ICsxMjcsNyBAQCBpbmxpbmUgYm9vbCBSZXNv
dXJjZVJlcXVlc3Q6OnJlc291cmNlUHJpb3JpdGllc0VuYWJsZWQoKQogfQogCiAjaWYgUExBVEZP
Uk0oQ09DT0EpCi1OU1VSTFJlcXVlc3QgKmNvcHlSZXF1ZXN0V2l0aFN0b3JhZ2VTZXNzaW9uKENG
VVJMU3RvcmFnZVNlc3Npb25SZWYsIE5TVVJMUmVxdWVzdCAqKTsKK1JldGFpblB0cjxOU1VSTFJl
cXVlc3Q+IGNvcHlSZXF1ZXN0V2l0aFN0b3JhZ2VTZXNzaW9uKENGVVJMU3RvcmFnZVNlc3Npb25S
ZWYsIE5TVVJMUmVxdWVzdCAqKTsKIFdFQkNPUkVfRVhQT1JUIE5TQ2FjaGVkVVJMUmVzcG9uc2Ug
KmNhY2hlZFJlc3BvbnNlRm9yUmVxdWVzdChDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmLCBOU1VSTFJl
cXVlc3QgKik7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jb2NvYS9OZXR3b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ29jb2EubW0K
aW5kZXggOTUwYTNhZThkODc0OWI1ZDUzNGFkMmRjZTMwYTY3Y2Y1MjdhMTgxNi4uODBiZDY2ZDc4
ZDQxYTc1MGEyNjBlZWJjOWY2N2Y0YmNiNmZiZTIxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9OZXR3b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdvcmtTdG9yYWdl
U2Vzc2lvbkNvY29hLm1tCkBAIC0xNjIsNyArMTYyLDcgQEAgTlNIVFRQQ29va2llU3RvcmFnZSAq
TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpuc0Nvb2tpZVN0b3JhZ2UoKSBjb25zdAogICAgIGlmICgh
Y2ZDb29raWVTdG9yYWdlIHx8IFtOU0hUVFBDb29raWVTdG9yYWdlIHNoYXJlZEhUVFBDb29raWVT
dG9yYWdlXS5fY29va2llU3RvcmFnZSA9PSBjZkNvb2tpZVN0b3JhZ2UpCiAgICAgICAgIHJldHVy
biBbTlNIVFRQQ29va2llU3RvcmFnZSBzaGFyZWRIVFRQQ29va2llU3RvcmFnZV07CiAKLSAgICBy
ZXR1cm4gW1tbTlNIVFRQQ29va2llU3RvcmFnZSBhbGxvY10gX2luaXRXaXRoQ0ZIVFRQQ29va2ll
U3RvcmFnZTpjZkNvb2tpZVN0b3JhZ2UuZ2V0KCldIGF1dG9yZWxlYXNlXTsKKyAgICByZXR1cm4g
YWRvcHROUyhbW05TSFRUUENvb2tpZVN0b3JhZ2UgYWxsb2NdIF9pbml0V2l0aENGSFRUUENvb2tp
ZVN0b3JhZ2U6Y2ZDb29raWVTdG9yYWdlLmdldCgpXSkuYXV0b3JlbGVhc2UoKTsKIH0KIAogQ29v
a2llU3RvcmFnZU9ic2VydmVyJiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZVN0b3JhZ2VP
YnNlcnZlcigpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NvY29hL1Jlc291cmNlUmVxdWVzdENvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RDb2NvYS5tbQppbmRleCBkODZmNGM5MDVl
YmZlMjdjNzNiMjVhN2Y2M2I2MzA1YjlmZWJmNmEwLi40MTk5OWI3MjFjOTc4ODU2NDk5NDE0MjZi
ZTIzOGVjNjhlYmJjY2I2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NvY29hL1Jlc291cmNlUmVxdWVzdENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0KQEAgLTQ0LDcgKzQ0
LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogTlNVUkxSZXF1ZXN0ICpSZXNvdXJjZVJlcXVlc3Q6
Om5zVVJMUmVxdWVzdChIVFRQQm9keVVwZGF0ZVBvbGljeSBib2R5UG9saWN5KSBjb25zdAogewog
ICAgIHVwZGF0ZVBsYXRmb3JtUmVxdWVzdChib2R5UG9saWN5KTsKLSAgICByZXR1cm4gW1ttX25z
UmVxdWVzdC5nZXQoKSByZXRhaW5dIGF1dG9yZWxlYXNlXTsKKyAgICBhdXRvIHJlcXVlc3RDb3B5
ID0gbV9uc1JlcXVlc3Q7CisgICAgcmV0dXJuIHJlcXVlc3RDb3B5LmF1dG9yZWxlYXNlKCk7CiB9
CiAKIENGVVJMUmVxdWVzdFJlZiBSZXNvdXJjZVJlcXVlc3Q6OmNmVVJMUmVxdWVzdChIVFRQQm9k
eVVwZGF0ZVBvbGljeSBib2R5UG9saWN5KSBjb25zdApAQCAtMjYwLDE3ICsyNjEsMTcgQEAgdm9p
ZCBSZXNvdXJjZVJlcXVlc3Q6OmRvVXBkYXRlUGxhdGZvcm1IVFRQQm9keSgpCiB2b2lkIFJlc291
cmNlUmVxdWVzdDo6c2V0U3RvcmFnZVNlc3Npb24oQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZiBzdG9y
YWdlU2Vzc2lvbikKIHsKICAgICB1cGRhdGVQbGF0Zm9ybVJlcXVlc3QoKTsKLSAgICBtX25zUmVx
dWVzdCA9IGFkb3B0TlMoY29weVJlcXVlc3RXaXRoU3RvcmFnZVNlc3Npb24oc3RvcmFnZVNlc3Np
b24sIG1fbnNSZXF1ZXN0LmdldCgpKSk7CisgICAgbV9uc1JlcXVlc3QgPSBjb3B5UmVxdWVzdFdp
dGhTdG9yYWdlU2Vzc2lvbihzdG9yYWdlU2Vzc2lvbiwgbV9uc1JlcXVlc3QuZ2V0KCkpOwogfQog
Ci1OU1VSTFJlcXVlc3QgKmNvcHlSZXF1ZXN0V2l0aFN0b3JhZ2VTZXNzaW9uKENGVVJMU3RvcmFn
ZVNlc3Npb25SZWYgc3RvcmFnZVNlc3Npb24sIE5TVVJMUmVxdWVzdCAqcmVxdWVzdCkKK1JldGFp
blB0cjxOU1VSTFJlcXVlc3Q+IGNvcHlSZXF1ZXN0V2l0aFN0b3JhZ2VTZXNzaW9uKENGVVJMU3Rv
cmFnZVNlc3Npb25SZWYgc3RvcmFnZVNlc3Npb24sIE5TVVJMUmVxdWVzdCAqcmVxdWVzdCkKIHsK
ICAgICBpZiAoIXN0b3JhZ2VTZXNzaW9uIHx8ICFyZXF1ZXN0KQotICAgICAgICByZXR1cm4gW3Jl
cXVlc3QgY29weV07CisgICAgICAgIHJldHVybiBhZG9wdE5TKFtyZXF1ZXN0IGNvcHldKTsKIAog
ICAgIGF1dG8gY2ZSZXF1ZXN0ID0gYWRvcHRDRihDRlVSTFJlcXVlc3RDcmVhdGVNdXRhYmxlQ29w
eShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBbcmVxdWVzdCBfQ0ZVUkxSZXF1ZXN0XSkpOwogICAgIF9D
RlVSTFJlcXVlc3RTZXRTdG9yYWdlU2Vzc2lvbihjZlJlcXVlc3QuZ2V0KCksIHN0b3JhZ2VTZXNz
aW9uKTsKLSAgICByZXR1cm4gW1tOU1VSTFJlcXVlc3QgYWxsb2NdIF9pbml0V2l0aENGVVJMUmVx
dWVzdDpjZlJlcXVlc3QuZ2V0KCldOworICAgIHJldHVybiBhZG9wdE5TKFtbTlNVUkxSZXF1ZXN0
IGFsbG9jXSBfaW5pdFdpdGhDRlVSTFJlcXVlc3Q6Y2ZSZXF1ZXN0LmdldCgpXSk7CiB9CiAKIE5T
Q2FjaGVkVVJMUmVzcG9uc2UgKmNhY2hlZFJlc3BvbnNlRm9yUmVxdWVzdChDRlVSTFN0b3JhZ2VT
ZXNzaW9uUmVmIHN0b3JhZ2VTZXNzaW9uLCBOU1VSTFJlcXVlc3QgKnJlcXVlc3QpCkBAIC0yODMs
NyArMjg0LDcgQEAgTlNDYWNoZWRVUkxSZXNwb25zZSAqY2FjaGVkUmVzcG9uc2VGb3JSZXF1ZXN0
KENGVVJMU3RvcmFnZVNlc3Npb25SZWYgc3RvcmFnZVNlc3MKICAgICBpZiAoIWNhY2hlZFJlc3Bv
bnNlKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgcmV0dXJuIFtbW05TQ2FjaGVkVVJMUmVz
cG9uc2UgYWxsb2NdIF9pbml0V2l0aENGQ2FjaGVkVVJMUmVzcG9uc2U6Y2FjaGVkUmVzcG9uc2Uu
Z2V0KCldIGF1dG9yZWxlYXNlXTsKKyAgICByZXR1cm4gYWRvcHROUyhbW05TQ2FjaGVkVVJMUmVz
cG9uc2UgYWxsb2NdIF9pbml0V2l0aENGQ2FjaGVkVVJMUmVzcG9uc2U6Y2FjaGVkUmVzcG9uc2Uu
Z2V0KCldKS5hdXRvcmVsZWFzZSgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VS
TFNlc3Npb24ubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNv
cmVOU1VSTFNlc3Npb24ubW0KaW5kZXggYmUxMTg3MDkzYjU5MjM2NjUzYTI2NzNlZjQ2MjZhNjE3
NWMzMTA2Yy4uNzY2MTdkYTdkMzVjNmMwMmIyMWE1OWM0NDk4NTA4YzYzMGE4NWUyYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxT
ZXNzaW9uLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2Vi
Q29yZU5TVVJMU2Vzc2lvbi5tbQpAQCAtNDQ1LDEyICs0NDUsMTIgQEAgLSAoTlNVUkxTZXNzaW9u
RGF0YVRhc2sgKilkYXRhVGFza1dpdGhSZXF1ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0CiAg
ICAgaWYgKF9pbnZhbGlkYXRlZCkKICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAgIFdlYkNvcmVO
U1VSTFNlc3Npb25EYXRhVGFzayAqdGFzayA9IFtbV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNr
IGFsbG9jXSBpbml0V2l0aFNlc3Npb246c2VsZiBpZGVudGlmaWVyOl9uZXh0VGFza0lkZW50aWZp
ZXIrKyByZXF1ZXN0OnJlcXVlc3RdOworICAgIGF1dG8gdGFzayA9IGFkb3B0TlMoW1tXZWJDb3Jl
TlNVUkxTZXNzaW9uRGF0YVRhc2sgYWxsb2NdIGluaXRXaXRoU2Vzc2lvbjpzZWxmIGlkZW50aWZp
ZXI6X25leHRUYXNrSWRlbnRpZmllcisrIHJlcXVlc3Q6cmVxdWVzdF0pOwogICAgIHsKICAgICAg
ICAgTG9ja2VyPExvY2s+IGxvY2tlcihfZGF0YVRhc2tzTG9jayk7Ci0gICAgICAgIF9kYXRhVGFz
a3MuYWRkKHRhc2spOworICAgICAgICBfZGF0YVRhc2tzLmFkZCh0YXNrLmdldCgpKTsKICAgICB9
Ci0gICAgcmV0dXJuIChOU1VSTFNlc3Npb25EYXRhVGFzayAqKVt0YXNrIGF1dG9yZWxlYXNlXTsK
KyAgICByZXR1cm4gKE5TVVJMU2Vzc2lvbkRhdGFUYXNrICopdGFzay5hdXRvcmVsZWFzZSgpOwog
fQogCiAtIChOU1VSTFNlc3Npb25EYXRhVGFzayAqKWRhdGFUYXNrV2l0aFVSTDooTlNVUkwgKil1
cmwKQEAgLTQ1OCwxMiArNDU4LDEyIEBAIC0gKE5TVVJMU2Vzc2lvbkRhdGFUYXNrICopZGF0YVRh
c2tXaXRoVVJMOihOU1VSTCAqKXVybAogICAgIGlmIChfaW52YWxpZGF0ZWQpCiAgICAgICAgIHJl
dHVybiBuaWw7CiAKLSAgICBXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2sgKnRhc2sgPSBbW1dl
YkNvcmVOU1VSTFNlc3Npb25EYXRhVGFzayBhbGxvY10gaW5pdFdpdGhTZXNzaW9uOnNlbGYgaWRl
bnRpZmllcjpfbmV4dFRhc2tJZGVudGlmaWVyKysgVVJMOnVybF07CisgICAgYXV0byB0YXNrID0g
YWRvcHROUyhbW1dlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFzayBhbGxvY10gaW5pdFdpdGhTZXNz
aW9uOnNlbGYgaWRlbnRpZmllcjpfbmV4dFRhc2tJZGVudGlmaWVyKysgVVJMOnVybF0pOwogICAg
IHsKICAgICAgICAgTG9ja2VyPExvY2s+IGxvY2tlcihfZGF0YVRhc2tzTG9jayk7Ci0gICAgICAg
IF9kYXRhVGFza3MuYWRkKHRhc2spOworICAgICAgICBfZGF0YVRhc2tzLmFkZCh0YXNrLmdldCgp
KTsKICAgICB9Ci0gICAgcmV0dXJuIChOU1VSTFNlc3Npb25EYXRhVGFzayAqKVt0YXNrIGF1dG9y
ZWxlYXNlXTsKKyAgICByZXR1cm4gKE5TVVJMU2Vzc2lvbkRhdGFUYXNrICopdGFzay5hdXRvcmVs
ZWFzZSgpOwogfQogCiAtICh2b2lkKXNlbmRIMlBpbmc6KE5TVVJMICopdXJsIHBvbmdIYW5kbGVy
Oih2b2lkICheKShOU0Vycm9yICplcnJvciwgTlNUaW1lSW50ZXJ2YWwgaW50ZXJ2YWwpKXBvbmdI
YW5kbGVyCkBAIC02ODEsOSArNjgxLDkgQEAgLSAoaWQpaW5pdFdpdGhTZXNzaW9uOihXZWJDb3Jl
TlNVUkxTZXNzaW9uICopc2Vzc2lvbiBpZGVudGlmaWVyOihOU1VJbnRlZ2VyKWlkZW4KIAogICAg
IC8vIENvcmVNZWRpYSB3aWxsIGV4cGxpY2l0bHkgYWRkIGEgdXNlciBhZ2VudCBoZWFkZXIuIFJl
bW92ZSBpZiBwcmVzZW50LgogICAgIGlmIChhdXRvKiB1c2VyQWdlbnRWYWx1ZSA9IFtyZXF1ZXN0
IHZhbHVlRm9ySFRUUEhlYWRlckZpZWxkOkAiVXNlci1BZ2VudCJdKSB7Ci0gICAgICAgIE5TTXV0
YWJsZVVSTFJlcXVlc3QqIG11dGFibGVSZXF1ZXN0ID0gW3JlcXVlc3QgbXV0YWJsZUNvcHlXaXRo
Wm9uZTpuaWxdOworICAgICAgICBhdXRvIG11dGFibGVSZXF1ZXN0ID0gYWRvcHROUyhbcmVxdWVz
dCBtdXRhYmxlQ29weVdpdGhab25lOm5pbF0pOwogICAgICAgICBbbXV0YWJsZVJlcXVlc3Qgc2V0
VmFsdWU6bmlsIGZvckhUVFBIZWFkZXJGaWVsZDpAIlVzZXItQWdlbnQiXTsKLSAgICAgICAgcmVx
dWVzdCA9IFttdXRhYmxlUmVxdWVzdCBhdXRvcmVsZWFzZV07CisgICAgICAgIHJlcXVlc3QgPSBt
dXRhYmxlUmVxdWVzdC5hdXRvcmVsZWFzZSgpOwogICAgIH0KIAogICAgIHNlbGYub3JpZ2luYWxS
ZXF1ZXN0ID0gc2VsZi5jdXJyZW50UmVxdWVzdCA9IHJlcXVlc3Q7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9BdXRoZW50aWNhdGlvbk1hYy5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0F1dGhlbnRpY2F0aW9uTWFjLm1tCmlu
ZGV4IGZiNGRlNzIwODZjOTczMDA3ZGJkOTBiZDA0MTM1NDY3ZjA5ODU2ZTMuLmNmY2YxMGZjYWYy
MTk4Y2IxZTg5MjQyOWU5NjZiY2EyMzI2OTNkOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvbWFjL0F1dGhlbnRpY2F0aW9uTWFjLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0F1dGhlbnRpY2F0aW9uTWFjLm1tCkBAIC0xNTcs
NyArMTU3LDcgQEAgTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqbWFjKGNvbnN0IEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlJiBjb3JlQ2hhbGxlbmdlKQogICAgIGlmIChjb3JlQ2hhbGxlbmdl
Lm5zVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoKSkKICAgICAgICAgcmV0dXJuIGNvcmVDaGFs
bGVuZ2UubnNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSgpOwogICAgICAgICAKLSAgICByZXR1
cm4gW1tbTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSBhbGxvY10gaW5pdFdpdGhQcm90ZWN0
aW9uU3BhY2U6Y29yZUNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2UoKS5uc1NwYWNlKCkgcHJvcG9z
ZWRDcmVkZW50aWFsOmNvcmVDaGFsbGVuZ2UucHJvcG9zZWRDcmVkZW50aWFsKCkubnNDcmVkZW50
aWFsKCkgcHJldmlvdXNGYWlsdXJlQ291bnQ6Y29yZUNoYWxsZW5nZS5wcmV2aW91c0ZhaWx1cmVD
b3VudCgpIGZhaWx1cmVSZXNwb25zZTpjb3JlQ2hhbGxlbmdlLmZhaWx1cmVSZXNwb25zZSgpLm5z
VVJMUmVzcG9uc2UoKSBlcnJvcjpjb3JlQ2hhbGxlbmdlLmVycm9yKCkgc2VuZGVyOmNvcmVDaGFs
bGVuZ2Uuc2VuZGVyKCldIGF1dG9yZWxlYXNlXTsKKyAgICByZXR1cm4gYWRvcHROUyhbW05TVVJM
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UgYWxsb2NdIGluaXRXaXRoUHJvdGVjdGlvblNwYWNlOmNv
cmVDaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlKCkubnNTcGFjZSgpIHByb3Bvc2VkQ3JlZGVudGlh
bDpjb3JlQ2hhbGxlbmdlLnByb3Bvc2VkQ3JlZGVudGlhbCgpLm5zQ3JlZGVudGlhbCgpIHByZXZp
b3VzRmFpbHVyZUNvdW50OmNvcmVDaGFsbGVuZ2UucHJldmlvdXNGYWlsdXJlQ291bnQoKSBmYWls
dXJlUmVzcG9uc2U6Y29yZUNoYWxsZW5nZS5mYWlsdXJlUmVzcG9uc2UoKS5uc1VSTFJlc3BvbnNl
KCkgZXJyb3I6Y29yZUNoYWxsZW5nZS5lcnJvcigpIHNlbmRlcjpjb3JlQ2hhbGxlbmdlLnNlbmRl
cigpXSkuYXV0b3JlbGVhc2UoKTsKIH0KIAogQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgY29yZShO
U1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICptYWNDaGFsbGVuZ2UpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUVycm9yTWFjLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VFcnJvck1hYy5tbQpp
bmRleCAzNzFlZGQ2MGJhYTk5MzdiYmQ5ZDUyZGVhMjdkZWIzODUyYjIwMGJmLi5hZDY5YTVmMDdi
YTQ3OGNhOTdmNDgzYTEyYzMwNTg1YjY1YThlZTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUVycm9yTWFjLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlRXJyb3JNYWMubW0KQEAgLTU2LDcg
KzU2LDcgQEAgc3RhdGljIE5TRGljdGlvbmFyeSogZGljdGlvbmFyeVRoYXRDYW5Db2RlKE5TRGlj
dGlvbmFyeSogc3JjKQogICAgIC8vIFRoaXMgZnVuY3Rpb24gbWFrZXMgYSBjb3B5IG9mIGlucHV0
IGRpY3Rpb25hcnksIG1vZGlmaWVzIGl0IHN1Y2ggdGhhdCBpdCAic2hvdWxkIiAoYXMgbXVjaCBh
cyB3ZSBjYW4gaGVscCBpdCkKICAgICAvLyBub3QgY29udGFpbiBhbnkgb2JqZWN0cyB0aGF0IGRv
IG5vdCBjb25mb3JtIHRvIE5TQ29kaW5nIHByb3RvY29sLCBhbmQgcmV0dXJucyBpdCBhdXRvcmVs
ZWFzZWQuCiAKLSAgICBOU011dGFibGVEaWN0aW9uYXJ5KiBkc3QgPSBbc3JjIG11dGFibGVDb3B5
XTsKKyAgICBhdXRvIGRzdCA9IGFkb3B0TlMoW3NyYyBtdXRhYmxlQ29weV0pOwogCiAgICAgLy8g
S2lsbCB0aGUga25vd24gcHJvYmxlbSBlbnRyaWVzLgogICAgIFtkc3QgcmVtb3ZlT2JqZWN0Rm9y
S2V5OkAiTlNFcnJvclBlZXJDZXJ0aWZpY2F0ZUNoYWluS2V5Il07IC8vIE5TQXJyYXkgd2l0aCBT
ZWNDZXJ0aWZpY2F0ZVJlZiBvYmplY3RzCkBAIC03Nyw3ICs3Nyw3IEBAIHN0YXRpYyBOU0RpY3Rp
b25hcnkqIGRpY3Rpb25hcnlUaGF0Q2FuQ29kZShOU0RpY3Rpb25hcnkqIHNyYykKICAgICAgICAg
Ly8gRklYTUU6IFdlIGNvdWxkIGRyaWxsIGRvd24gaW50byBzdWJkaWN0aW9uYXJpZXMsIGJ1dCBp
dCBzZWVtcyBtb3JlIHRyb3VibGUgdGhhbiBpdCdzIHdvcnRoCiAgICAgfV07CiAKLSAgICByZXR1
cm4gW2RzdCBhdXRvcmVsZWFzZV07CisgICAgcmV0dXJuIGRzdC5hdXRvcmVsZWFzZSgpOwogfQog
CiAtICh2b2lkKWVuY29kZVdpdGhDb2RlcjooTlNDb2RlciAqKWNvZGVyCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUhhbmRsZU1hYy5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlSGFuZGxlTWFjLm1t
CmluZGV4IGIyY2JhYjdjOGFjZjJjMzk1Zjk4NDcwYTUwYmYwNzgyZDkxMmNhNWEuLjMxMzU1NGRk
ZmNjYTg4MzdmODhmYWEzNmExNGQ3YWUzMmEwYzAzOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlSGFuZGxlTWFjLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlSGFuZGxlTWFjLm1tCkBAIC0x
NzMsMTQgKzE3MywxNCBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpjcmVhdGVOU1VSTENvbm5lY3Rp
b24oaWQgZGVsZWdhdGUsIGJvb2wgc2hvdWxkVXNlQ3JlZGVudGlhbAogICAgIG5zUmVxdWVzdCA9
IGFwcGx5U25pZmZpbmdQb2xpY2llc0lmTmVlZGVkKG5zUmVxdWVzdCwgc2hvdWxkQ29udGVudFNu
aWZmLCBzaG91bGRDb250ZW50RW5jb2RpbmdTbmlmZik7CiAKICAgICBpZiAoZC0+bV9zdG9yYWdl
U2Vzc2lvbikKLSAgICAgICAgbnNSZXF1ZXN0ID0gW2NvcHlSZXF1ZXN0V2l0aFN0b3JhZ2VTZXNz
aW9uKGQtPm1fc3RvcmFnZVNlc3Npb24uZ2V0KCksIG5zUmVxdWVzdCkgYXV0b3JlbGVhc2VdOwor
ICAgICAgICBuc1JlcXVlc3QgPSBjb3B5UmVxdWVzdFdpdGhTdG9yYWdlU2Vzc2lvbihkLT5tX3N0
b3JhZ2VTZXNzaW9uLmdldCgpLCBuc1JlcXVlc3QpLmF1dG9yZWxlYXNlKCk7CiAKICAgICBBU1NF
UlQoW05TVVJMQ29ubmVjdGlvbiBpbnN0YW5jZXNSZXNwb25kVG9TZWxlY3RvcjpAc2VsZWN0b3Io
X2luaXRXaXRoUmVxdWVzdDpkZWxlZ2F0ZTp1c2VzQ2FjaGU6bWF4Q29udGVudExlbmd0aDpzdGFy
dEltbWVkaWF0ZWx5OmNvbm5lY3Rpb25Qcm9wZXJ0aWVzOildKTsKIAogI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCiAgICAgLy8gRklYTUU6IFRoaXMgY29kZSBpcyBkaWZmZXJlbnQgZnJvbSBpT1Mg
Y29kZSBpbiBSZXNvdXJjZUhhbmRsZUNGTmV0LmNwcCBpbiB0aGF0IGhlcmUgd2UgcmVzcGVjdCBz
dHJlYW0gcHJvcGVydGllcyB0aGF0IHdlcmUgcHJlc2VudCBpbiBjbGllbnQgcHJvcGVydGllcy4K
ICAgICBOU0RpY3Rpb25hcnkgKnN0cmVhbVByb3BlcnRpZXNGcm9tQ2xpZW50ID0gW2Nvbm5lY3Rp
b25Qcm9wZXJ0aWVzIG9iamVjdEZvcktleTpAImtDRlVSTENvbm5lY3Rpb25Tb2NrZXRTdHJlYW1Q
cm9wZXJ0aWVzIl07Ci0gICAgTlNNdXRhYmxlRGljdGlvbmFyeSAqc3RyZWFtUHJvcGVydGllcyA9
IHN0cmVhbVByb3BlcnRpZXNGcm9tQ2xpZW50ID8gW1tzdHJlYW1Qcm9wZXJ0aWVzRnJvbUNsaWVu
dCBtdXRhYmxlQ29weV0gYXV0b3JlbGVhc2VdIDogW05TTXV0YWJsZURpY3Rpb25hcnkgZGljdGlv
bmFyeV07CisgICAgTlNNdXRhYmxlRGljdGlvbmFyeSAqc3RyZWFtUHJvcGVydGllcyA9IHN0cmVh
bVByb3BlcnRpZXNGcm9tQ2xpZW50ID8gYWRvcHROUyhbc3RyZWFtUHJvcGVydGllc0Zyb21DbGll
bnQgbXV0YWJsZUNvcHldKS5hdXRvcmVsZWFzZSgpIDogW05TTXV0YWJsZURpY3Rpb25hcnkgZGlj
dGlvbmFyeV07CiAjZWxzZQogICAgIE5TTXV0YWJsZURpY3Rpb25hcnkgKnN0cmVhbVByb3BlcnRp
ZXMgPSBbTlNNdXRhYmxlRGljdGlvbmFyeSBkaWN0aW9uYXJ5XTsKICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVVSTFJlc3BvbnNl
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVVSTFJlc3Bv
bnNlLm1tCmluZGV4IGQyMDc4N2JjYjFiOGY5YWQ3YWNiYmUzODFiOWM0OTRhZjVjMTBhOTEuLmJi
MTE2YTlkZmYzZTgwMjQ5ZTNjMWZmMTBlZTkxMjljNzA1NmZkMTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVVUkxSZXNwb25zZS5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlVVJMUmVzcG9uc2Uu
bW0KQEAgLTM0Miw3ICszNDIsNyBAQCBOU1VSTFJlc3BvbnNlICpzeW50aGVzaXplUmVkaXJlY3RS
ZXNwb25zZUlmTmVjZXNzYXJ5KE5TVVJMUmVxdWVzdCAqY3VycmVudFJlcXVlcwogICAgIGlmIChb
W1tuZXdSZXF1ZXN0IFVSTF0gc2NoZW1lXSBpc0VxdWFsVG9TdHJpbmc6W1tjdXJyZW50UmVxdWVz
dCBVUkxdIHNjaGVtZV1dICYmICFbbmV3UmVxdWVzdCBfc2NoZW1lV2FzVXBncmFkZWREdWVUb0R5
bmFtaWNIU1RTXSkKICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAgIHJldHVybiBbW1Jlc291cmNl
UmVzcG9uc2U6OnN5bnRoZXRpY1JlZGlyZWN0UmVzcG9uc2UoVVJMKFtjdXJyZW50UmVxdWVzdCBV
UkxdKSwgVVJMKFtuZXdSZXF1ZXN0IFVSTF0pKS5uc1VSTFJlc3BvbnNlKCkgcmV0YWluXSBhdXRv
cmVsZWFzZV07CisgICAgcmV0dXJuIHJldGFpblB0cihSZXNvdXJjZVJlc3BvbnNlOjpzeW50aGV0
aWNSZWRpcmVjdFJlc3BvbnNlKFVSTChbY3VycmVudFJlcXVlc3QgVVJMXSksIFVSTChbbmV3UmVx
dWVzdCBVUkxdKSkubnNVUkxSZXNwb25zZSgpKS5hdXRvcmVsZWFzZSgpOwogfQogCiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2lvcy9Mb2NhbGl6ZWREYXRlQ2Fj
aGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvaW9zL0xvY2FsaXplZERhdGVDYWNo
ZS5oCmluZGV4IDlhZTVlYzVkYTNjMzBmM2M5MzNhMmQ2NzkwMTVlNTYxNzdjODAxN2UuLmMxOGY4
YzU5MmRjOGMzNzcyMjI5YTExYjEyMDMxZjFmZjA4YjNhM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3RleHQvaW9zL0xvY2FsaXplZERhdGVDYWNoZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvaW9zL0xvY2FsaXplZERhdGVDYWNoZS5oCkBAIC00OSw3
ICs0OSw3IEBAIHByaXZhdGU6CiAgICAgTG9jYWxpemVkRGF0ZUNhY2hlKCk7CiAgICAgfkxvY2Fs
aXplZERhdGVDYWNoZSgpOwogCi0gICAgTlNEYXRlRm9ybWF0dGVyICpjcmVhdGVGb3JtYXR0ZXJG
b3JUeXBlKERhdGVDb21wb25lbnRzVHlwZSk7CisgICAgUmV0YWluUHRyPE5TRGF0ZUZvcm1hdHRl
cj4gY3JlYXRlRm9ybWF0dGVyRm9yVHlwZShEYXRlQ29tcG9uZW50c1R5cGUpOwogICAgIGZsb2F0
IGNhbGN1bGF0ZU1heGltdW1XaWR0aChEYXRlQ29tcG9uZW50c1R5cGUsIGNvbnN0IE1lYXN1cmVU
ZXh0Q2xpZW50Jik7CiAKICAgICAvLyBVc2luZyBpbnQgaW5zdGVhZCBvZiBEYXRlQ29tcG9uZW50
c1R5cGUgZm9yIHRoZSBrZXkgYmVjYXVzZSB0aGUgZW51bQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vdGV4dC9pb3MvTG9jYWxpemVkRGF0ZUNhY2hlLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vdGV4dC9pb3MvTG9jYWxpemVkRGF0ZUNhY2hlLm1tCmluZGV4IGE5MzMz
YjliYjAwOTJlOTFiNDEyNmUyN2Q4YmY3YWFjNGM0MWZhZWEuLjkyZjU1NzA2Nzg4YTk2ODVjNzU1
MTg0ZGI1ZDNjMzY4MGEzN2I3NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3RleHQvaW9zL0xvY2FsaXplZERhdGVDYWNoZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS90ZXh0L2lvcy9Mb2NhbGl6ZWREYXRlQ2FjaGUubW0KQEAgLTc2LDkgKzc2LDkgQEAgTlNE
YXRlRm9ybWF0dGVyICpMb2NhbGl6ZWREYXRlQ2FjaGU6OmZvcm1hdHRlckZvckRhdGVUeXBlKERh
dGVDb21wb25lbnRzVHlwZSB0eXAKICAgICBpZiAobV9mb3JtYXR0ZXJNYXAuY29udGFpbnMoa2V5
KSkKICAgICAgICAgcmV0dXJuIG1fZm9ybWF0dGVyTWFwLmdldChrZXkpLmdldCgpOwogCi0gICAg
TlNEYXRlRm9ybWF0dGVyICpkYXRlRm9ybWF0dGVyID0gW2NyZWF0ZUZvcm1hdHRlckZvclR5cGUo
dHlwZSkgYXV0b3JlbGVhc2VdOwotICAgIG1fZm9ybWF0dGVyTWFwLnNldChrZXksIGRhdGVGb3Jt
YXR0ZXIpOwotICAgIHJldHVybiBkYXRlRm9ybWF0dGVyOworICAgIGF1dG8gZGF0ZUZvcm1hdHRl
ciA9IGNyZWF0ZUZvcm1hdHRlckZvclR5cGUodHlwZSk7CisgICAgbV9mb3JtYXR0ZXJNYXAuc2V0
KGtleSwgZGF0ZUZvcm1hdHRlci5nZXQoKSk7CisgICAgcmV0dXJuIGRhdGVGb3JtYXR0ZXIuYXV0
b3JlbGVhc2UoKTsKIH0KIAogZmxvYXQgTG9jYWxpemVkRGF0ZUNhY2hlOjptYXhpbXVtV2lkdGhG
b3JEYXRlVHlwZShEYXRlQ29tcG9uZW50c1R5cGUgdHlwZSwgY29uc3QgRm9udENhc2NhZGUmIGZv
bnQsIGNvbnN0IE1lYXN1cmVUZXh0Q2xpZW50JiBtZWFzdXJlcikKQEAgLTk3LDkgKzk3LDkgQEAg
ZmxvYXQgTG9jYWxpemVkRGF0ZUNhY2hlOjptYXhpbXVtV2lkdGhGb3JEYXRlVHlwZShEYXRlQ29t
cG9uZW50c1R5cGUgdHlwZSwgY29uc3QKICAgICByZXR1cm4gY2FsY3VsYXRlZE1heGltdW07CiB9
CiAKLU5TRGF0ZUZvcm1hdHRlciAqTG9jYWxpemVkRGF0ZUNhY2hlOjpjcmVhdGVGb3JtYXR0ZXJG
b3JUeXBlKERhdGVDb21wb25lbnRzVHlwZSB0eXBlKQorUmV0YWluUHRyPE5TRGF0ZUZvcm1hdHRl
cj4gTG9jYWxpemVkRGF0ZUNhY2hlOjpjcmVhdGVGb3JtYXR0ZXJGb3JUeXBlKERhdGVDb21wb25l
bnRzVHlwZSB0eXBlKQogewotICAgIE5TRGF0ZUZvcm1hdHRlciAqZGF0ZUZvcm1hdHRlciA9IFtb
TlNEYXRlRm9ybWF0dGVyIGFsbG9jXSBpbml0XTsKKyAgICBhdXRvIGRhdGVGb3JtYXR0ZXIgPSBh
ZG9wdE5TKFtbTlNEYXRlRm9ybWF0dGVyIGFsbG9jXSBpbml0XSk7CiAgICAgTlNMb2NhbGUgKmN1
cnJlbnRMb2NhbGUgPSBbTlNMb2NhbGUgY3VycmVudExvY2FsZV07CiAgICAgW2RhdGVGb3JtYXR0
ZXIgc2V0TG9jYWxlOmN1cnJlbnRMb2NhbGVdOwogCkBAIC0xNDEsNyArMTQxLDcgQEAgZmxvYXQg
TG9jYWxpemVkRGF0ZUNhY2hlOjpjYWxjdWxhdGVNYXhpbXVtV2lkdGgoRGF0ZUNvbXBvbmVudHNU
eXBlIHR5cGUsIGNvbnN0IE0KICAgICBmbG9hdCBtYXhpbXVtV2lkdGggPSAwOwogCiAgICAgLy8g
R2V0IHRoZSBmb3JtYXR0ZXIgd2Ugd291bGQgdXNlLCBjb3B5IGl0IGJlY2F1c2Ugd2Ugd2lsbCBm
b3JjZSBpdHMgdGltZSB6b25lIHRvIGJlIFVUQy4KLSAgICBOU0RhdGVGb3JtYXR0ZXIgKmRhdGVG
b3JtYXR0ZXIgPSBbW2Zvcm1hdHRlckZvckRhdGVUeXBlKHR5cGUpIGNvcHldIGF1dG9yZWxlYXNl
XTsKKyAgICBhdXRvIGRhdGVGb3JtYXR0ZXIgPSBhZG9wdE5TKFtmb3JtYXR0ZXJGb3JEYXRlVHlw
ZSh0eXBlKSBjb3B5XSk7CiAgICAgW2RhdGVGb3JtYXR0ZXIgc2V0VGltZVpvbmU6W05TVGltZVpv
bmUgdGltZVpvbmVGb3JTZWNvbmRzRnJvbUdNVDowXV07CiAKICAgICAvLyBTYW1wbGUgZGF0ZSB3
aXRoIGEgNCBkaWdpdCB5ZWFyIGFuZCAyIGRpZ2l0IGRheSwgaG91ciwgYW5kIG1pbnV0ZS4gRGln
aXRzIGFyZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9O
ZXR3b3JrU2Vzc2lvbkNvY29hLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2Nv
YS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCmluZGV4IDI5ZTBhODMwZTQxZDU1ZTZiZjM1YmJiMzk2
YWU4MWZiOWIyMGYxOGMuLjZlNTQ1NmU5M2RkYmQ4ZThiYTFhOTBjNmMyODQ3YzAzNGNlNzIzMjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nl
c3Npb25Db2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05l
dHdvcmtTZXNzaW9uQ29jb2EubW0KQEAgLTQ3NywxMyArNDc3LDEzIEBAIC0gKHZvaWQpVVJMU2Vz
c2lvbjooTlNVUkxTZXNzaW9uICopc2Vzc2lvbiB0YXNrOihOU1VSTFNlc3Npb25UYXNrICopdGFz
ayBuZWVkTmV3CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKIHN0YXRpYyBO
U1VSTFJlcXVlc3QqIGRvd25ncmFkZVJlcXVlc3QoTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0KQogewot
ICAgIE5TTXV0YWJsZVVSTFJlcXVlc3QgKm5zTXV0YWJsZVJlcXVlc3QgPSBbW3JlcXVlc3QgbXV0
YWJsZUNvcHldIGF1dG9yZWxlYXNlXTsKLSAgICBpZiAoW25zTXV0YWJsZVJlcXVlc3QuVVJMLnNj
aGVtZSBpc0VxdWFsVG9TdHJpbmc6QCJodHRwcyJdKSB7Ci0gICAgICAgIE5TVVJMQ29tcG9uZW50
cyAqY29tcG9uZW50cyA9IFtOU1VSTENvbXBvbmVudHMgY29tcG9uZW50c1dpdGhVUkw6bnNNdXRh
YmxlUmVxdWVzdC5VUkwgcmVzb2x2aW5nQWdhaW5zdEJhc2VVUkw6Tk9dOworICAgIGF1dG8gbnNN
dXRhYmxlUmVxdWVzdCA9IGFkb3B0TlMoW3JlcXVlc3QgbXV0YWJsZUNvcHldKTsKKyAgICBpZiAo
W1tuc011dGFibGVSZXF1ZXN0IFVSTF0uc2NoZW1lIGlzRXF1YWxUb1N0cmluZzpAImh0dHBzIl0p
IHsKKyAgICAgICAgTlNVUkxDb21wb25lbnRzICpjb21wb25lbnRzID0gW05TVVJMQ29tcG9uZW50
cyBjb21wb25lbnRzV2l0aFVSTDpbbnNNdXRhYmxlUmVxdWVzdCBVUkxdIHJlc29sdmluZ0FnYWlu
c3RCYXNlVVJMOk5PXTsKICAgICAgICAgY29tcG9uZW50cy5zY2hlbWUgPSBAImh0dHAiOwogICAg
ICAgICBbbnNNdXRhYmxlUmVxdWVzdCBzZXRVUkw6Y29tcG9uZW50cy5VUkxdOwotICAgICAgICBB
U1NFUlQoW25zTXV0YWJsZVJlcXVlc3QuVVJMLnNjaGVtZSBpc0VxdWFsVG9TdHJpbmc6QCJodHRw
Il0pOwotICAgICAgICByZXR1cm4gbnNNdXRhYmxlUmVxdWVzdDsKKyAgICAgICAgQVNTRVJUKFtb
bnNNdXRhYmxlUmVxdWVzdCBVUkxdLnNjaGVtZSBpc0VxdWFsVG9TdHJpbmc6QCJodHRwIl0pOwor
ICAgICAgICByZXR1cm4gbnNNdXRhYmxlUmVxdWVzdC5hdXRvcmVsZWFzZSgpOwogICAgIH0KIAog
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtNTE0LDE1ICs1MTQsMTUgQEAgc3RhdGljIE5T
VVJMUmVxdWVzdCogdXBkYXRlSWdub3JlU3RyaWN0VHJhbnNwb3J0U2VjdXJpdHlTZXR0aW5nSWZO
ZWNlc3NhcnkoTlNVUkwKICAgICBpZiAoW3JlcXVlc3QuVVJMLnNjaGVtZSBpc0VxdWFsVG9TdHJp
bmc6QCJodHRwcyJdICYmIHNob3VsZElnbm9yZUhTVFMgJiYgaWdub3JlSFNUUyhyZXF1ZXN0KSkg
ewogICAgICAgICAvLyBUaGUgcmVxdWVzdCB3YXMgdXBncmFkZWQgZm9yIHNvbWUgb3RoZXIgcmVh
c29uIHRoYW4gSFNUUy4KICAgICAgICAgLy8gRG9uJ3QgaWdub3JlIEhTVFMgdG8gYXZvaWQgdGhl
IHJpc2sgb2YgYW5vdGhlciBkb3duZ3JhZGUuCi0gICAgICAgIE5TTXV0YWJsZVVSTFJlcXVlc3Qg
Km5zTXV0YWJsZVJlcXVlc3QgPSBbW3JlcXVlc3QgbXV0YWJsZUNvcHldIGF1dG9yZWxlYXNlXTsK
LSAgICAgICAgc2V0SWdub3JlSFNUUyhuc011dGFibGVSZXF1ZXN0LCBmYWxzZSk7Ci0gICAgICAg
IHJldHVybiBuc011dGFibGVSZXF1ZXN0OworICAgICAgICBhdXRvIG5zTXV0YWJsZVJlcXVlc3Qg
PSBhZG9wdE5TKFtyZXF1ZXN0IG11dGFibGVDb3B5XSk7CisgICAgICAgIHNldElnbm9yZUhTVFMo
bnNNdXRhYmxlUmVxdWVzdC5nZXQoKSwgZmFsc2UpOworICAgICAgICByZXR1cm4gbnNNdXRhYmxl
UmVxdWVzdC5hdXRvcmVsZWFzZSgpOwogICAgIH0KICAgICAKICAgICBpZiAoW3JlcXVlc3QuVVJM
LnNjaGVtZSBpc0VxdWFsVG9TdHJpbmc6QCJodHRwIl0gJiYgaWdub3JlSFNUUyhyZXF1ZXN0KSAh
PSBzaG91bGRJZ25vcmVIU1RTKSB7Ci0gICAgICAgIE5TTXV0YWJsZVVSTFJlcXVlc3QgKm5zTXV0
YWJsZVJlcXVlc3QgPSBbW3JlcXVlc3QgbXV0YWJsZUNvcHldIGF1dG9yZWxlYXNlXTsKLSAgICAg
ICAgc2V0SWdub3JlSFNUUyhuc011dGFibGVSZXF1ZXN0LCBzaG91bGRJZ25vcmVIU1RTKTsKLSAg
ICAgICAgcmV0dXJuIG5zTXV0YWJsZVJlcXVlc3Q7CisgICAgICAgIGF1dG8gbnNNdXRhYmxlUmVx
dWVzdCA9IGFkb3B0TlMoW3JlcXVlc3QgbXV0YWJsZUNvcHldKTsKKyAgICAgICAgc2V0SWdub3Jl
SFNUUyhuc011dGFibGVSZXF1ZXN0LmdldCgpLCBzaG91bGRJZ25vcmVIU1RTKTsKKyAgICAgICAg
cmV0dXJuIG5zTXV0YWJsZVJlcXVlc3QuYXV0b3JlbGVhc2UoKTsKICAgICB9CiAKICAgICByZXR1
cm4gcmVxdWVzdDsKQEAgLTExNTgsNyArMTE1OCw3IEBAIHN0YXRpYyBOU0RpY3Rpb25hcnkgKnBy
b3h5RGljdGlvbmFyeShjb25zdCBVUkwmIGh0dHBQcm94eSwgY29uc3QgVVJMJiBodHRwc1Byb3h5
CiAKICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogCi0gICAgTlNNdXRh
YmxlRGljdGlvbmFyeSAqZGljdGlvbmFyeSA9IFtbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2Nd
IGluaXRdIGF1dG9yZWxlYXNlXTsKKyAgICBhdXRvIGRpY3Rpb25hcnkgPSBhZG9wdE5TKFtbTlNN
dXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdF0pOwogICAgIGlmIChodHRwUHJveHkuaXNWYWxp
ZCgpKSB7CiAgICAgICAgIFtkaWN0aW9uYXJ5IHNldE9iamVjdDpodHRwUHJveHkuaG9zdCgpLnRv
U3RyaW5nKCkgZm9yS2V5OihOU1N0cmluZyAqKWtDRlN0cmVhbVByb3BlcnR5SFRUUFByb3h5SG9z
dF07CiAgICAgICAgIGlmIChhdXRvIHBvcnQgPSBodHRwUHJveHkucG9ydCgpKQpAQCAtMTE2OSw3
ICsxMTY5LDcgQEAgc3RhdGljIE5TRGljdGlvbmFyeSAqcHJveHlEaWN0aW9uYXJ5KGNvbnN0IFVS
TCYgaHR0cFByb3h5LCBjb25zdCBVUkwmIGh0dHBzUHJveHkKICAgICAgICAgaWYgKGF1dG8gcG9y
dCA9IGh0dHBzUHJveHkucG9ydCgpKQogICAgICAgICAgICAgW2RpY3Rpb25hcnkgc2V0T2JqZWN0
OkAoKnBvcnQpIGZvcktleTooTlNTdHJpbmcgKilrQ0ZTdHJlYW1Qcm9wZXJ0eUhUVFBTUHJveHlQ
b3J0XTsKICAgICB9Ci0gICAgcmV0dXJuIGRpY3Rpb25hcnk7CisgICAgcmV0dXJuIGRpY3Rpb25h
cnkuYXV0b3JlbGVhc2UoKTsKIAogICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VO
RAogfQpAQCAtMTIzMiw3ICsxMjMyLDcgQEAgTmV0d29ya1Nlc3Npb25Db2NvYTo6TmV0d29ya1Nl
c3Npb25Db2NvYShOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nlc3MsIE5ldHdvcmsKICAgICAg
ICAgU2FuZGJveEV4dGVuc2lvbjo6Y29uc3VtZVBlcm1hbmVudGx5KHBhcmFtZXRlcnMuaHN0c1N0
b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwogICAgICAgICAvLyBGSVhNRTogUmVtb3Zl
IHRoaXMgcmVzcG9uZHNUb1NlbGVjdG9yIGNoZWNrIG9uY2UgcmRhcjovL3Byb2JsZW0vNTAxMDk2
MzEgaXMgaW4gYSBidWlsZCBhbmQgYm90cyBhcmUgdXBkYXRlZC4KICAgICAgICAgaWYgKFtjb25m
aWd1cmF0aW9uIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX2hzdHNTdG9yYWdlKV0pCi0g
ICAgICAgICAgICBjb25maWd1cmF0aW9uLl9oc3RzU3RvcmFnZSA9IFtbYWxsb2NfTlNIU1RTU3Rv
cmFnZUluc3RhbmNlKCkgaW5pdFBlcnNpc3RlbnRTdG9yZVdpdGhVUkw6W05TVVJMIGZpbGVVUkxX
aXRoUGF0aDpwYXJhbWV0ZXJzLmhzdHNTdG9yYWdlRGlyZWN0b3J5IGlzRGlyZWN0b3J5OllFU11d
IGF1dG9yZWxlYXNlXTsKKyAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24uX2hzdHNTdG9yYWdlID0g
YWRvcHROUyhbYWxsb2NfTlNIU1RTU3RvcmFnZUluc3RhbmNlKCkgaW5pdFBlcnNpc3RlbnRTdG9y
ZVdpdGhVUkw6W05TVVJMIGZpbGVVUkxXaXRoUGF0aDpwYXJhbWV0ZXJzLmhzdHNTdG9yYWdlRGly
ZWN0b3J5IGlzRGlyZWN0b3J5OllFU11dKS5hdXRvcmVsZWFzZSgpOwogICAgIH0KICNlbmRpZgog
CkBAIC0xMjY3LDcgKzEyNjcsNyBAQCBOZXR3b3JrU2Vzc2lvbkNvY29hOjpOZXR3b3JrU2Vzc2lv
bkNvY29hKE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcywgTmV0d29yawogI2lmIEhBVkUo
Q0ZORVRXT1JLX0FMVEVSTkFUSVZFX1NFUlZJQ0UpCiAgICAgaWYgKCFwYXJhbWV0ZXJzLmFsdGVy
bmF0aXZlU2VydmljZURpcmVjdG9yeS5pc0VtcHR5KCkpIHsKICAgICAgICAgU2FuZGJveEV4dGVu
c2lvbjo6Y29uc3VtZVBlcm1hbmVudGx5KHBhcmFtZXRlcnMuYWx0ZXJuYXRpdmVTZXJ2aWNlRGly
ZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKLSAgICAgICAgY29uZmlndXJhdGlvbi5fYWx0ZXJuYXRp
dmVTZXJ2aWNlc1N0b3JhZ2UgPSBbW1tfTlNIVFRQQWx0ZXJuYXRpdmVTZXJ2aWNlc1N0b3JhZ2Ug
YWxsb2NdIGluaXRQZXJzaXN0ZW50U3RvcmVXaXRoVVJMOltbTlNVUkwgZmlsZVVSTFdpdGhQYXRo
OnBhcmFtZXRlcnMuYWx0ZXJuYXRpdmVTZXJ2aWNlRGlyZWN0b3J5IGlzRGlyZWN0b3J5OllFU10g
VVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiQWx0ZXJuYXRpdmVTZXJ2aWNlLnNxbGl0ZSJd
XSBhdXRvcmVsZWFzZV07CisgICAgICAgIGNvbmZpZ3VyYXRpb24uX2FsdGVybmF0aXZlU2Vydmlj
ZXNTdG9yYWdlID0gYWRvcHROUyhbW19OU0hUVFBBbHRlcm5hdGl2ZVNlcnZpY2VzU3RvcmFnZSBh
bGxvY10gaW5pdFBlcnNpc3RlbnRTdG9yZVdpdGhVUkw6W1tOU1VSTCBmaWxlVVJMV2l0aFBhdGg6
cGFyYW1ldGVycy5hbHRlcm5hdGl2ZVNlcnZpY2VEaXJlY3RvcnkgaXNEaXJlY3Rvcnk6WUVTXSBV
UkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJBbHRlcm5hdGl2ZVNlcnZpY2Uuc3FsaXRlIl1d
KS5hdXRvcmVsZWFzZSgpOwogICAgIH0KICAgICBpZiAocGFyYW1ldGVycy5odHRwM0VuYWJsZWQp
CiAgICAgICAgIGNvbmZpZ3VyYXRpb24uX2FsbG93c0hUVFAzID0gWUVTOwpAQCAtMTI5OSwxMCAr
MTI5OSwxMCBAQCBOZXR3b3JrU2Vzc2lvbkNvY29hOjpOZXR3b3JrU2Vzc2lvbkNvY29hKE5ldHdv
cmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcywgTmV0d29yawogICAgIGF1dG8qIHN0b3JhZ2VTZXNz
aW9uID0gbmV0d29ya1Byb2Nlc3Muc3RvcmFnZVNlc3Npb24ocGFyYW1ldGVycy5zZXNzaW9uSUQp
OwogICAgIFJFTEVBU0VfQVNTRVJUKHN0b3JhZ2VTZXNzaW9uKTsKIAotICAgIE5TSFRUUENvb2tp
ZVN0b3JhZ2UqIGNvb2tpZVN0b3JhZ2U7CisgICAgUmV0YWluUHRyPE5TSFRUUENvb2tpZVN0b3Jh
Z2U+IGNvb2tpZVN0b3JhZ2U7CiAgICAgaWYgKENGSFRUUENvb2tpZVN0b3JhZ2VSZWYgc3RvcmFn
ZSA9IHN0b3JhZ2VTZXNzaW9uLT5jb29raWVTdG9yYWdlKCkuZ2V0KCkpIHsKLSAgICAgICAgY29v
a2llU3RvcmFnZSA9IFtbW05TSFRUUENvb2tpZVN0b3JhZ2UgYWxsb2NdIF9pbml0V2l0aENGSFRU
UENvb2tpZVN0b3JhZ2U6c3RvcmFnZV0gYXV0b3JlbGVhc2VdOwotICAgICAgICBjb25maWd1cmF0
aW9uLkhUVFBDb29raWVTdG9yYWdlID0gY29va2llU3RvcmFnZTsKKyAgICAgICAgY29va2llU3Rv
cmFnZSA9IGFkb3B0TlMoW1tOU0hUVFBDb29raWVTdG9yYWdlIGFsbG9jXSBfaW5pdFdpdGhDRkhU
VFBDb29raWVTdG9yYWdlOnN0b3JhZ2VdKTsKKyAgICAgICAgY29uZmlndXJhdGlvbi5IVFRQQ29v
a2llU3RvcmFnZSA9IGNvb2tpZVN0b3JhZ2UuZ2V0KCk7CiAgICAgfSBlbHNlCiAgICAgICAgIGNv
b2tpZVN0b3JhZ2UgPSBzdG9yYWdlU2Vzc2lvbi0+bnNDb29raWVTdG9yYWdlKCk7CiAKQEAgLTEz
MTAsNyArMTMxMCw3IEBAIE5ldHdvcmtTZXNzaW9uQ29jb2E6Ok5ldHdvcmtTZXNzaW9uQ29jb2Eo
TmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBOZXR3b3JrCiAgICAgLy8gV2Ugc3RpbGwg
bmVlZCB0byBjaGVjayB0aGUgc2VsZWN0b3Igc2luY2UgQ0ZOZXR3b3JrIHVwZGF0ZXMgYW5kIFdl
YktpdCB1cGRhdGVzIGFyZSBzZXBhcmF0ZQogICAgIC8vIG9uIG9sZGVyIG1hY09TLgogICAgIGlm
IChbY29va2llU3RvcmFnZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF9vdmVycmlkZVNl
c3Npb25Db29raWVBY2NlcHRQb2xpY3kpXSkKLSAgICAgICAgY29va2llU3RvcmFnZS5fb3ZlcnJp
ZGVTZXNzaW9uQ29va2llQWNjZXB0UG9saWN5ID0gWUVTOworICAgICAgICBjb29raWVTdG9yYWdl
LmdldCgpLl9vdmVycmlkZVNlc3Npb25Db29raWVBY2NlcHRQb2xpY3kgPSBZRVM7CiAjZW5kaWYK
IAogICAgIG1fc2Vzc2lvbldpdGhDcmVkZW50aWFsU3RvcmFnZS5pbml0aWFsaXplKGNvbmZpZ3Vy
YXRpb24sICp0aGlzLCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeTo6VXNlLCBOYXZp
Z2F0aW5nVG9BcHBCb3VuZERvbWFpbjo6Tm8pOwpAQCAtMTYyMCwxNiArMTYyMCwxNiBAQCBETUZX
ZWJzaXRlUG9saWN5TW9uaXRvciAqTmV0d29ya1Nlc3Npb25Db2NvYTo6ZGV2aWNlTWFuYWdlbWVu
dFBvbGljeU1vbml0b3IoKQogc3RkOjp1bmlxdWVfcHRyPFdlYlNvY2tldFRhc2s+IE5ldHdvcmtT
ZXNzaW9uQ29jb2E6OmNyZWF0ZVdlYlNvY2tldFRhc2soTmV0d29ya1NvY2tldENoYW5uZWwmIGNo
YW5uZWwsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgU3Ry
aW5nJiBwcm90b2NvbCkKIHsKICAgICBBU1NFUlQoIXJlcXVlc3QuaGFzSFRUUEhlYWRlckZpZWxk
KFdlYkNvcmU6OkhUVFBIZWFkZXJOYW1lOjpTZWNXZWJTb2NrZXRQcm90b2NvbCkpOwotICAgIGF1
dG8gKm5zUmVxdWVzdCA9IHJlcXVlc3QubnNVUkxSZXF1ZXN0KFdlYkNvcmU6OkhUVFBCb2R5VXBk
YXRlUG9saWN5OjpEb05vdFVwZGF0ZUhUVFBCb2R5KTsKKyAgICBhdXRvIG5zUmVxdWVzdCA9IHJl
dGFpblB0cihyZXF1ZXN0Lm5zVVJMUmVxdWVzdChXZWJDb3JlOjpIVFRQQm9keVVwZGF0ZVBvbGlj
eTo6RG9Ob3RVcGRhdGVIVFRQQm9keSkpOwogICAgIGlmICghcHJvdG9jb2wuaXNOdWxsKCkpIHsK
LSAgICAgICAgTlNNdXRhYmxlVVJMUmVxdWVzdCAqcmVxdWVzdFdpdGhQcm90b2NvbHMgPSBbW25z
UmVxdWVzdCBtdXRhYmxlQ29weV0gYXV0b3JlbGVhc2VdOworICAgICAgICBhdXRvIHJlcXVlc3RX
aXRoUHJvdG9jb2xzID0gYWRvcHROUyhbbnNSZXF1ZXN0IG11dGFibGVDb3B5XSk7CiAgICAgICAg
IFtyZXF1ZXN0V2l0aFByb3RvY29scyBhZGRWYWx1ZTogU3RyaW5nVmlldyhwcm90b2NvbCkuY3Jl
YXRlTlNTdHJpbmcoKS5nZXQoKSBmb3JIVFRQSGVhZGVyRmllbGQ6QCJTZWMtV2ViU29ja2V0LVBy
b3RvY29sIl07Ci0gICAgICAgIG5zUmVxdWVzdCA9IHJlcXVlc3RXaXRoUHJvdG9jb2xzOworICAg
ICAgICBuc1JlcXVlc3QgPSBXVEZNb3ZlKHJlcXVlc3RXaXRoUHJvdG9jb2xzKTsKICAgICB9CiAg
ICAgLy8gcmRhcjovL3Byb2JsZW0vNjgwNTcwMzE6IGV4cGxpY2l0bHkgZGlzYWJsZSBzbmlmZmlu
ZyBmb3IgV2ViU29ja2V0IGhhbmRzaGFrZXMuCiAgICAgW25zUmVxdWVzdCBfc2V0UHJvcGVydHk6
QE5PIGZvcktleTooTlNTdHJpbmcgKilfa0NGVVJMQ29ubmVjdGlvblByb3BlcnR5U2hvdWxkU25p
ZmZdOwogCi0gICAgUmV0YWluUHRyPE5TVVJMU2Vzc2lvbldlYlNvY2tldFRhc2s+IHRhc2sgPSBb
bV9zZXNzaW9uV2l0aENyZWRlbnRpYWxTdG9yYWdlLnNlc3Npb24gd2ViU29ja2V0VGFza1dpdGhS
ZXF1ZXN0Om5zUmVxdWVzdF07CisgICAgUmV0YWluUHRyPE5TVVJMU2Vzc2lvbldlYlNvY2tldFRh
c2s+IHRhc2sgPSBbbV9zZXNzaW9uV2l0aENyZWRlbnRpYWxTdG9yYWdlLnNlc3Npb24gd2ViU29j
a2V0VGFza1dpdGhSZXF1ZXN0Om5zUmVxdWVzdC5nZXQoKV07CiAgICAgcmV0dXJuIG1ha2VVbmlx
dWU8V2ViU29ja2V0VGFzaz4oY2hhbm5lbCwgV1RGTW92ZSh0YXNrKSk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY29jb2EvV0tQYXltZW50QXV0aG9yaXphdGlvbkRl
bGVnYXRlLm1tIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9jb2NvYS9XS1BheW1lbnRBdXRob3Jp
emF0aW9uRGVsZWdhdGUubW0KaW5kZXggMzE2YWE1NmVjMTI3NGZlY2E3MjE1MjkyY2QzZTI1OWYz
ZDliMTNlYy4uY2YzNGE0OGVkMmZlZTFlYTc5ZjJlZDI3ZGJmMTI4NWFlMmNhMjMzNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9jb2NvYS9XS1BheW1lbnRBdXRob3JpemF0aW9u
RGVsZWdhdGUubW0KKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9jb2NvYS9XS1BheW1lbnRB
dXRob3JpemF0aW9uRGVsZWdhdGUubW0KQEAgLTYxLDcgKzYxLDcgQEAgLSAodm9pZCljb21wbGV0
ZU1lcmNoYW50VmFsaWRhdGlvbjooUEtQYXltZW50TWVyY2hhbnRTZXNzaW9uICopc2Vzc2lvbiBl
cnJvcjooTlMKIAogLSAodm9pZCljb21wbGV0ZVBheW1lbnRNZXRob2RTZWxlY3Rpb246KFBLUGF5
bWVudFJlcXVlc3RQYXltZW50TWV0aG9kVXBkYXRlICopcGF5bWVudE1ldGhvZFVwZGF0ZQogewot
ICAgIFBLUGF5bWVudFJlcXVlc3RQYXltZW50TWV0aG9kVXBkYXRlICp1cGRhdGUgPSBwYXltZW50
TWV0aG9kVXBkYXRlID86IFtbUEFMOjphbGxvY1BLUGF5bWVudFJlcXVlc3RQYXltZW50TWV0aG9k
VXBkYXRlSW5zdGFuY2UoKSBpbml0V2l0aFBheW1lbnRTdW1tYXJ5SXRlbXM6X3N1bW1hcnlJdGVt
cy5nZXQoKV0gYXV0b3JlbGVhc2VdOworICAgIFBLUGF5bWVudFJlcXVlc3RQYXltZW50TWV0aG9k
VXBkYXRlICp1cGRhdGUgPSBwYXltZW50TWV0aG9kVXBkYXRlID86IGFkb3B0TlMoW1BBTDo6YWxs
b2NQS1BheW1lbnRSZXF1ZXN0UGF5bWVudE1ldGhvZFVwZGF0ZUluc3RhbmNlKCkgaW5pdFdpdGhQ
YXltZW50U3VtbWFyeUl0ZW1zOl9zdW1tYXJ5SXRlbXMuZ2V0KCldKS5hdXRvcmVsZWFzZSgpOwog
ICAgIF9zdW1tYXJ5SXRlbXMgPSBhZG9wdE5TKFt1cGRhdGUucGF5bWVudFN1bW1hcnlJdGVtcyBj
b3B5XSk7CiAgICAgc3RkOjpleGNoYW5nZShfZGlkU2VsZWN0UGF5bWVudE1ldGhvZENvbXBsZXRp
b24sIG5pbCkodXBkYXRlKTsKIH0KQEAgLTczLDcgKzczLDcgQEAgLSAodm9pZCljb21wbGV0ZVBh
eW1lbnRTZXNzaW9uOihQS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzKXN0YXR1cyBlcnJvcnM6
KE5TQXIKIH0KIC0gKHZvaWQpY29tcGxldGVTaGlwcGluZ0NvbnRhY3RTZWxlY3Rpb246KFBLUGF5
bWVudFJlcXVlc3RTaGlwcGluZ0NvbnRhY3RVcGRhdGUgKilzaGlwcGluZ0NvbnRhY3RVcGRhdGUK
IHsKLSAgICBQS1BheW1lbnRSZXF1ZXN0U2hpcHBpbmdDb250YWN0VXBkYXRlICp1cGRhdGUgPSBz
aGlwcGluZ0NvbnRhY3RVcGRhdGUgPzogW1tQQUw6OmFsbG9jUEtQYXltZW50UmVxdWVzdFNoaXBw
aW5nQ29udGFjdFVwZGF0ZUluc3RhbmNlKCkgaW5pdFdpdGhFcnJvcnM6QFtdIHBheW1lbnRTdW1t
YXJ5SXRlbXM6X3N1bW1hcnlJdGVtcy5nZXQoKSBzaGlwcGluZ01ldGhvZHM6X3NoaXBwaW5nTWV0
aG9kcy5nZXQoKV0gYXV0b3JlbGVhc2VdOworICAgIFBLUGF5bWVudFJlcXVlc3RTaGlwcGluZ0Nv
bnRhY3RVcGRhdGUgKnVwZGF0ZSA9IHNoaXBwaW5nQ29udGFjdFVwZGF0ZSA/OiBhZG9wdE5TKFtQ
QUw6OmFsbG9jUEtQYXltZW50UmVxdWVzdFNoaXBwaW5nQ29udGFjdFVwZGF0ZUluc3RhbmNlKCkg
aW5pdFdpdGhFcnJvcnM6QFtdIHBheW1lbnRTdW1tYXJ5SXRlbXM6X3N1bW1hcnlJdGVtcy5nZXQo
KSBzaGlwcGluZ01ldGhvZHM6X3NoaXBwaW5nTWV0aG9kcy5nZXQoKV0pLmF1dG9yZWxlYXNlKCk7
CiAgICAgX3N1bW1hcnlJdGVtcyA9IGFkb3B0TlMoW3VwZGF0ZS5wYXltZW50U3VtbWFyeUl0ZW1z
IGNvcHldKTsKICAgICBfc2hpcHBpbmdNZXRob2RzID0gYWRvcHROUyhbdXBkYXRlLnNoaXBwaW5n
TWV0aG9kcyBjb3B5XSk7CiAgICAgc3RkOjpleGNoYW5nZShfZGlkU2VsZWN0U2hpcHBpbmdDb250
YWN0Q29tcGxldGlvbiwgbmlsKSh1cGRhdGUpOwpAQCAtODEsNyArODEsNyBAQCAtICh2b2lkKWNv
bXBsZXRlU2hpcHBpbmdDb250YWN0U2VsZWN0aW9uOihQS1BheW1lbnRSZXF1ZXN0U2hpcHBpbmdD
b250YWN0VXBkYXRlCiAKIC0gKHZvaWQpY29tcGxldGVTaGlwcGluZ01ldGhvZFNlbGVjdGlvbjoo
UEtQYXltZW50UmVxdWVzdFNoaXBwaW5nTWV0aG9kVXBkYXRlICopc2hpcHBpbmdNZXRob2RVcGRh
dGUKIHsKLSAgICBQS1BheW1lbnRSZXF1ZXN0U2hpcHBpbmdNZXRob2RVcGRhdGUgKnVwZGF0ZSA9
IHNoaXBwaW5nTWV0aG9kVXBkYXRlID86IFtbUEFMOjphbGxvY1BLUGF5bWVudFJlcXVlc3RTaGlw
cGluZ01ldGhvZFVwZGF0ZUluc3RhbmNlKCkgaW5pdFdpdGhQYXltZW50U3VtbWFyeUl0ZW1zOl9z
dW1tYXJ5SXRlbXMuZ2V0KCldIGF1dG9yZWxlYXNlXTsKKyAgICBQS1BheW1lbnRSZXF1ZXN0U2hp
cHBpbmdNZXRob2RVcGRhdGUgKnVwZGF0ZSA9IHNoaXBwaW5nTWV0aG9kVXBkYXRlID86IGFkb3B0
TlMoW1BBTDo6YWxsb2NQS1BheW1lbnRSZXF1ZXN0U2hpcHBpbmdNZXRob2RVcGRhdGVJbnN0YW5j
ZSgpIGluaXRXaXRoUGF5bWVudFN1bW1hcnlJdGVtczpfc3VtbWFyeUl0ZW1zLmdldCgpXSkuYXV0
b3JlbGVhc2UoKTsKICAgICBfc3VtbWFyeUl0ZW1zID0gYWRvcHROUyhbdXBkYXRlLnBheW1lbnRT
dW1tYXJ5SXRlbXMgY29weV0pOwogICAgIHN0ZDo6ZXhjaGFuZ2UoX2RpZFNlbGVjdFNoaXBwaW5n
TWV0aG9kQ29tcGxldGlvbiwgbmlsKSh1cGRhdGUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvQVBJL0NvY29hL1dLUmVtb3RlT2JqZWN0Q29kZXIubW0gYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tSZW1vdGVPYmplY3RDb2Rlci5tbQppbmRleCA4YmQyNDQ4
NWUwNjJmNzNiMWI2ODYyYzA1NTMwNzRmZWQ5MTA1MzM0Li43NDAyMzkyMDM4NWZhNjFmYTIxMzU3
NzlmZDI1NzJiMzJkMjFjYmE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkv
Q29jb2EvV0tSZW1vdGVPYmplY3RDb2Rlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9B
UEkvQ29jb2EvV0tSZW1vdGVPYmplY3RDb2Rlci5tbQpAQCAtMzEzLDggKzMxMyw3IEBAIHN0YXRp
YyB2b2lkIGVuY29kZU9iamVjdChXS1JlbW90ZU9iamVjdEVuY29kZXIgKmVuY29kZXIsIGlkIG9i
amVjdCkKICAgICAgICAgUkVMRUFTRV9MT0dfRkFVTFQoSVBDLCAiV0tSZW1vdGVPYmplY3RDb2Rl
OjplbmNvZGVPYmplY3Q6IE9iamVjdCBvZiB0eXBlICcle3ByaXZhdGV9cycgY29udGFpbnMgYSBj
eWNsZSIsIGNsYXNzX2dldE5hbWUob2JqZWN0X2dldENsYXNzKG9iamVjdCkpKTsKICAgICAgICAg
QHRyeSB7CiAgICAgICAgICAgICAvLyBUcnkgdG8gZW5jb2RlIGEgbmV3bHkgaW5pdGlhbGl6ZWQg
b2JqZWN0IGluc3RlYWQuCi0gICAgICAgICAgICBpZCBuZXdPYmplY3QgPSBbW1tbb2JqZWN0IGNs
YXNzXSBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOwotICAgICAgICAgICAgb2JqZWN0ID0gbmV3
T2JqZWN0OworICAgICAgICAgICAgb2JqZWN0ID0gYWRvcHROUyhbW1tvYmplY3QgY2xhc3NdIGFs
bG9jXSBpbml0XSkuYXV0b3JlbGVhc2UoKTsKICAgICAgICAgfSBAY2F0Y2ggKE5TRXhjZXB0aW9u
ICplKSB7CiAgICAgICAgICAgICBbTlNFeGNlcHRpb24gcmFpc2U6TlNJbnZhbGlkQXJndW1lbnRF
eGNlcHRpb24gZm9ybWF0OkAiT2JqZWN0IG9mIHR5cGUgJyVzJyBjb250YWlucyBhIGN5Y2xlIiwg
Y2xhc3NfZ2V0TmFtZShvYmplY3RfZ2V0Q2xhc3Mob2JqZWN0KSldOwogICAgICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvX1dLUmVtb3RlT2JqZWN0SW50
ZXJmYWNlLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL19XS1JlbW90ZU9iamVj
dEludGVyZmFjZS5tbQppbmRleCAyM2YxNjc2MzVlMmNlNTcxNjNjNDY2ZjZmNDUwNjZkOGZmYWJk
NTIxLi5lNWFkNGIzMDhmZGQ2NTEyMjEyYjVmMWZjMmMyMzE0MmQ2ZjQwYThmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvX1dLUmVtb3RlT2JqZWN0SW50ZXJmYWNl
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9fV0tSZW1vdGVPYmplY3RJ
bnRlcmZhY2UubW0KQEAgLTE5Myw3ICsxOTMsNyBAQCAtIChpZClpbml0V2l0aFByb3RvY29sOihQ
cm90b2NvbCAqKXByb3RvY29sIGlkZW50aWZpZXI6KE5TU3RyaW5nICopaWRlbnRpZmllcgogCiAr
IChpbnN0YW5jZXR5cGUpcmVtb3RlT2JqZWN0SW50ZXJmYWNlV2l0aFByb3RvY29sOihQcm90b2Nv
bCAqKXByb3RvY29sCiB7Ci0gICAgcmV0dXJuIFtbW3NlbGYgYWxsb2NdIGluaXRXaXRoUHJvdG9j
b2w6cHJvdG9jb2wgaWRlbnRpZmllcjpOU1N0cmluZ0Zyb21Qcm90b2NvbChwcm90b2NvbCldIGF1
dG9yZWxlYXNlXTsKKyAgICByZXR1cm4gYWRvcHROUyhbW3NlbGYgYWxsb2NdIGluaXRXaXRoUHJv
dG9jb2w6cHJvdG9jb2wgaWRlbnRpZmllcjpOU1N0cmluZ0Zyb21Qcm90b2NvbChwcm90b2NvbCld
KS5hdXRvcmVsZWFzZSgpOwogfQogCiAtIChOU1N0cmluZyAqKWlkZW50aWZpZXIKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dLT2JqZWN0LmggYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9Db2NvYS9XS09iamVjdC5oCmluZGV4IDBlMWIxYzYwNDU1MmI1OTBlMzBkOTk1YzRh
ZmU4MzU5NzQwZWJhNzMuLmI5MTQ0NjllZTllMDg1MDI1NTU3YTA2MDVkNzYyZTdkOTNmNjcxMmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dLT2JqZWN0LmgKKysrIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV0tPYmplY3QuaApAQCAtNzcsNyArNzcsNyBAQCB0
ZW1wbGF0ZTx0eXBlbmFtZSBPYmplY3RDbGFzcz4gaW5saW5lIHR5cGVuYW1lIFdyYXBwZXJUcmFp
dHM8T2JqZWN0Q2xhc3M+OjpXcmFwcAogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBPYmplY3RDbGFzcz4g
aW5saW5lIHR5cGVuYW1lIFdyYXBwZXJUcmFpdHM8T2JqZWN0Q2xhc3M+OjpXcmFwcGVyQ2xhc3Mg
KndyYXBwZXIoUmVmPE9iamVjdENsYXNzPiYmIG9iamVjdCkKIHsKLSAgICByZXR1cm4gW3dyYXBw
ZXIob2JqZWN0LmxlYWtSZWYoKSkgYXV0b3JlbGVhc2VdOworICAgIHJldHVybiBhZG9wdE5TKHdy
YXBwZXIob2JqZWN0LmxlYWtSZWYoKSkpLmF1dG9yZWxlYXNlKCk7CiB9CiAKIHRlbXBsYXRlPHR5
cGVuYW1lIE9iamVjdENsYXNzPiBpbmxpbmUgdHlwZW5hbWUgV3JhcHBlclRyYWl0czxPYmplY3RD
bGFzcz46OldyYXBwZXJDbGFzcyAqd3JhcHBlcihSZWZQdHI8T2JqZWN0Q2xhc3M+JiYgb2JqZWN0
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL05TQXR0cmli
dXRlZFN0cmluZy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9OU0F0dHJp
YnV0ZWRTdHJpbmcubW0KaW5kZXggY2M5NDE0MGZlOWI2NjZhZTczN2Y1YjQzZjY4YjEzM2IwNTk3
OWI5Ny4uODZkNjViZDFjOTVhYWNjNTE1MTZkYWQyZTY5OWM2Yzc1ZWNjNzc2YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL05TQXR0cmlidXRlZFN0cmluZy5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvTlNBdHRyaWJ1dGVkU3Ry
aW5nLm1tCkBAIC0xMzMsNyArMTMzLDcgQEAgKyAoV0tXZWJWaWV3Q29uZmlndXJhdGlvbiAqKWNv
bmZpZ3VyYXRpb24KIHsKICAgICBpZiAoIWNvbmZpZ3VyYXRpb24pIHsKICAgICAgICAgY29uZmln
dXJhdGlvbiA9IFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF07Ci0gICAgICAg
IGNvbmZpZ3VyYXRpb24ucHJvY2Vzc1Bvb2wgPSBbW1tXS1Byb2Nlc3NQb29sIGFsbG9jXSBpbml0
XSBhdXRvcmVsZWFzZV07CisgICAgICAgIGNvbmZpZ3VyYXRpb24ucHJvY2Vzc1Bvb2wgPSBhZG9w
dE5TKFtbV0tQcm9jZXNzUG9vbCBhbGxvY10gaW5pdF0pLmF1dG9yZWxlYXNlKCk7CiAgICAgICAg
IGNvbmZpZ3VyYXRpb24ud2Vic2l0ZURhdGFTdG9yZSA9IFtXS1dlYnNpdGVEYXRhU3RvcmUgbm9u
UGVyc2lzdGVudERhdGFTdG9yZV07CiAgICAgICAgIGNvbmZpZ3VyYXRpb24ubWVkaWFUeXBlc1Jl
cXVpcmluZ1VzZXJBY3Rpb25Gb3JQbGF5YmFjayA9IFdLQXVkaW92aXN1YWxNZWRpYVR5cGVBbGw7
CiAgICAgICAgIGNvbmZpZ3VyYXRpb24uX2FsbG93c0phdmFTY3JpcHRNYXJrdXAgPSBOTzsKQEAg
LTI3MCwxMSArMjcwLDExIEBAICsgKHZvaWQpX2xvYWRGcm9tSFRNTFdpdGhPcHRpb25zOihOU0Rp
Y3Rpb25hcnk8TlNBdHRyaWJ1dGVkU3RyaW5nRG9jdW1lbnRSZWFkaW5nCiAKICAgICAgICAgICAg
IC8vIE1ha2UgdGhlIHN0cmluZyBiZSBhbiBpbnN0YW5jZSBvZiB0aGUgcmVjZWl2ZXIgY2xhc3Mu
CiAgICAgICAgICAgICBpZiAoYXR0cmlidXRlZFN0cmluZyAmJiBzZWxmICE9IGF0dHJpYnV0ZWRT
dHJpbmcuY2xhc3MpCi0gICAgICAgICAgICAgICAgYXR0cmlidXRlZFN0cmluZyA9IFtbW3NlbGYg
YWxsb2NdIGluaXRXaXRoQXR0cmlidXRlZFN0cmluZzphdHRyaWJ1dGVkU3RyaW5nXSBhdXRvcmVs
ZWFzZV07CisgICAgICAgICAgICAgICAgYXR0cmlidXRlZFN0cmluZyA9IGFkb3B0TlMoW1tzZWxm
IGFsbG9jXSBpbml0V2l0aEF0dHJpYnV0ZWRTdHJpbmc6YXR0cmlidXRlZFN0cmluZ10pLmF1dG9y
ZWxlYXNlKCk7CiAKICAgICAgICAgICAgIC8vIE1ha2UgdGhlIGRvY3VtZW50IGF0dHJpYnV0ZXMg
aW1tdXRhYmxlLgogICAgICAgICAgICAgaWYgKFthdHRyaWJ1dGVzIGlzS2luZE9mQ2xhc3M6TlNN
dXRhYmxlRGljdGlvbmFyeS5jbGFzc10pCi0gICAgICAgICAgICAgICAgYXR0cmlidXRlcyA9IFtb
W05TRGljdGlvbmFyeSBhbGxvY10gaW5pdFdpdGhEaWN0aW9uYXJ5OmF0dHJpYnV0ZXNdIGF1dG9y
ZWxlYXNlXTsKKyAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzID0gYWRvcHROUyhbW05TRGljdGlv
bmFyeSBhbGxvY10gaW5pdFdpdGhEaWN0aW9uYXJ5OmF0dHJpYnV0ZXNdKS5hdXRvcmVsZWFzZSgp
OwogCiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihhdHRyaWJ1dGVkU3RyaW5nLCBhdHRy
aWJ1dGVzLCBlcnJvcik7CiAgICAgICAgIH07CkBAIC0zMTAsNyArMzEwLDcgQEAgKyAodm9pZClf
bG9hZEZyb21IVE1MV2l0aE9wdGlvbnM6KE5TRGljdGlvbmFyeTxOU0F0dHJpYnV0ZWRTdHJpbmdE
b2N1bWVudFJlYWRpbmcKICAgICAgICAgICAgIFt3ZWJWaWV3IF9nZXRDb250ZW50c0FzQXR0cmli
dXRlZFN0cmluZ1dpdGhDb21wbGV0aW9uSGFuZGxlcjpeKE5TQXR0cmlidXRlZFN0cmluZyAqYXR0
cmlidXRlZFN0cmluZywgTlNEaWN0aW9uYXJ5PE5TQXR0cmlidXRlZFN0cmluZ0RvY3VtZW50QXR0
cmlidXRlS2V5LCBpZD4gKmRvY3VtZW50QXR0cmlidXRlcywgTlNFcnJvciAqZXJyb3IpIHsKICAg
ICAgICAgICAgICAgICBpZiAoZXJyb3IpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjYW5j
ZWwoV0tFcnJvclVua25vd24sIGVycm9yKTsKLSAgICAgICAgICAgICAgICBmaW5pc2goW1thdHRy
aWJ1dGVkU3RyaW5nIHJldGFpbl0gYXV0b3JlbGVhc2VdLCBbW2RvY3VtZW50QXR0cmlidXRlcyBy
ZXRhaW5dIGF1dG9yZWxlYXNlXSwgbmlsKTsKKyAgICAgICAgICAgICAgICBmaW5pc2gocmV0YWlu
UHRyKGF0dHJpYnV0ZWRTdHJpbmcpLmF1dG9yZWxlYXNlKCksIHJldGFpblB0cihkb2N1bWVudEF0
dHJpYnV0ZXMpLmF1dG9yZWxlYXNlKCksIG5pbCk7CiAgICAgICAgICAgICB9XTsKICAgICAgICAg
fTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLQnJv
d3NpbmdDb250ZXh0Q29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIubW0KaW5kZXggOTM2NDViZTliZjc0YzA0
NjdkNDEzNWU4Y2MyMDVlNjUwYjlhMzAyMS4uZWFkN2E3ZGQ2Y2ZkYmRlMjEzZGMxOTMyNjcyYTMw
NzZjZGQxYzIyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyLm1tCkBAIC00NTksNyAr
NDU5LDcgQEAgc3RhdGljIFdLUG9saWN5RGVjaXNpb25IYW5kbGVyIG1ha2VQb2xpY3lEZWNpc2lv
bkJsb2NrKFdLRnJhbWVQb2xpY3lMaXN0ZW5lclJlZgogewogICAgIFdLUmV0YWluKGxpc3RlbmVy
KTsgLy8gUmVsZWFzZWQgaW4gdGhlIGRlY2lzaW9uIGhhbmRsZXIgYmVsb3cuCiAKLSAgICByZXR1
cm4gW1teKFdLUG9saWN5RGVjaXNpb24gZGVjaXNpb24pIHsKKyAgICByZXR1cm4gYWRvcHROUyhb
XihXS1BvbGljeURlY2lzaW9uIGRlY2lzaW9uKSB7CiAgICAgICAgIHN3aXRjaCAoZGVjaXNpb24p
IHsKICAgICAgICAgY2FzZSBXS1BvbGljeURlY2lzaW9uQ2FuY2VsOgogICAgICAgICAgICAgV0tG
cmFtZVBvbGljeUxpc3RlbmVySWdub3JlKGxpc3RlbmVyKTsgICAgICAgICAgICAgICAgICAgIApA
QCAtNDc1LDcgKzQ3NSw3IEBAIHN0YXRpYyBXS1BvbGljeURlY2lzaW9uSGFuZGxlciBtYWtlUG9s
aWN5RGVjaXNpb25CbG9jayhXS0ZyYW1lUG9saWN5TGlzdGVuZXJSZWYKICAgICAgICAgfTsKIAog
ICAgICAgICBXS1JlbGVhc2UobGlzdGVuZXIpOyAvLyBSZXRhaW5lZCBpbiB0aGUgY29udGV4dCBh
Ym92ZS4KLSAgICB9IGNvcHldIGF1dG9yZWxlYXNlXTsKKyAgICB9IGNvcHldKS5hdXRvcmVsZWFz
ZSgpOwogfQogCiBzdGF0aWMgdm9pZCBzZXRVcFBhZ2VQb2xpY3lDbGllbnQoV0tCcm93c2luZ0Nv
bnRleHRDb250cm9sbGVyICpicm93c2luZ0NvbnRleHQsIFdlYktpdDo6V2ViUGFnZVByb3h5JiBw
YWdlKQpAQCAtNTA0LDcgKzUwNCw3IEBAIHN0YXRpYyB2b2lkIHNldFVwUGFnZVBvbGljeUNsaWVu
dChXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgKmJyb3dzaW5nQ29udGV4dCwKICAgICAgICAg
ICAgIH07CiAKICAgICAgICAgICAgIGlmIChvcmlnaW5hdGluZ0ZyYW1lKSB7Ci0gICAgICAgICAg
ICAgICAgYWN0aW9uRGljdGlvbmFyeSA9IFtbYWN0aW9uRGljdGlvbmFyeSBtdXRhYmxlQ29weV0g
YXV0b3JlbGVhc2VdOworICAgICAgICAgICAgICAgIGFjdGlvbkRpY3Rpb25hcnkgPSBhZG9wdE5T
KFthY3Rpb25EaWN0aW9uYXJ5IG11dGFibGVDb3B5XSkuYXV0b3JlbGVhc2UoKTsKICAgICAgICAg
ICAgICAgICBbKE5TTXV0YWJsZURpY3Rpb25hcnkgKilhY3Rpb25EaWN0aW9uYXJ5IHNldE9iamVj
dDpbTlNVUkwgX3dlYl9VUkxXaXRoV1RGU3RyaW5nOldlYktpdDo6dG9JbXBsKG9yaWdpbmF0aW5n
RnJhbWUpLT51cmwoKS5zdHJpbmcoKV0gZm9yS2V5OldLQWN0aW9uT3JpZ2luYXRpbmdGcmFtZVVS
TEtleV07CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAKQEAgLTczNCw3ICs3MzQsNyBAQCAt
IChOU1VJbnRlZ2VyKXBhZ2VDb3VudAogCiAtIChXS0Jyb3dzaW5nQ29udGV4dEhhbmRsZSAqKWhh
bmRsZQogewotICAgIHJldHVybiBbW1tXS0Jyb3dzaW5nQ29udGV4dEhhbmRsZSBhbGxvY10gX2lu
aXRXaXRoUGFnZVByb3h5OipfcGFnZV0gYXV0b3JlbGVhc2VdOworICAgIHJldHVybiBhZG9wdE5T
KFtbV0tCcm93c2luZ0NvbnRleHRIYW5kbGUgYWxsb2NdIF9pbml0V2l0aFBhZ2VQcm94eToqX3Bh
Z2VdKS5hdXRvcmVsZWFzZSgpOwogfQogCiAtIChfV0tSZW1vdGVPYmplY3RSZWdpc3RyeSAqKV9y
ZW1vdGVPYmplY3RSZWdpc3RyeQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLQ29udGVudFdvcmxkLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLQ29udGVudFdvcmxkLm1tCmluZGV4IDM4MTZhMWU2ZjU4YzU2NDQ2NmEwZDkwOGFk
YjM1NGQ4NDdlZDQ5NjUuLjBiNDVkZTU1ODgwMDg3YWFkYTVjZTdlZDU4NjdhNDBiMmU4Yzc2NjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0NvbnRlbnRX
b3JsZC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tDb250ZW50
V29ybGQubW0KQEAgLTc0LDcgKzc0LDcgQEAgQGltcGxlbWVudGF0aW9uIFdLQ29udGVudFdvcmxk
IChXS1ByaXZhdGUpCiBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogLSAoX1dL
VXNlckNvbnRlbnRXb3JsZCAqKV91c2VyQ29udGVudFdvcmxkCiB7Ci0gICAgcmV0dXJuIFtbW19X
S1VzZXJDb250ZW50V29ybGQgYWxsb2NdIF9pbml0V2l0aENvbnRlbnRXb3JsZDpzZWxmXSBhdXRv
cmVsZWFzZV07CisgICAgcmV0dXJuIGFkb3B0TlMoW1tfV0tVc2VyQ29udGVudFdvcmxkIGFsbG9j
XSBfaW5pdFdpdGhDb250ZW50V29ybGQ6c2VsZl0pLmF1dG9yZWxlYXNlKCk7CiB9CiBBTExPV19E
RVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLRnJhbWVJbmZvLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLRnJhbWVJbmZvLm1tCmluZGV4IDFjNjMyYjI0M2E3ZGVjYzkxNzNjMDZl
OWZmMDc2ZDAzYTlmM2QyYmYuLjJiZmZlZGI1ODVhMmU2NDM4YTAyYzYyOTZiM2Q0YjZhZWEwNmFh
ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0ZyYW1l
SW5mby5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tGcmFtZUlu
Zm8ubW0KQEAgLTU4LDEzICs1OCwxMyBAQCAtIChXS1NlY3VyaXR5T3JpZ2luICopc2VjdXJpdHlP
cmlnaW4KIHsKICAgICBhdXRvJiBkYXRhID0gX2ZyYW1lSW5mby0+c2VjdXJpdHlPcmlnaW4oKTsK
ICAgICBhdXRvIGFwaU9yaWdpbiA9IEFQSTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZShkYXRhLnBy
b3RvY29sLCBkYXRhLmhvc3QsIGRhdGEucG9ydCk7Ci0gICAgcmV0dXJuIFtbd3JhcHBlcihhcGlP
cmlnaW4uZ2V0KCkpIHJldGFpbl0gYXV0b3JlbGVhc2VdOworICAgIHJldHVybiByZXRhaW5QdHIo
d3JhcHBlcihhcGlPcmlnaW4uZ2V0KCkpKS5hdXRvcmVsZWFzZSgpOwogfQogCiAtIChXS1dlYlZp
ZXcgKil3ZWJWaWV3CiB7CiAgICAgaWYgKFdlYktpdDo6V2ViUGFnZVByb3h5KiBwYWdlID0gX2Zy
YW1lSW5mby0+cGFnZSgpKQotICAgICAgICByZXR1cm4gW1tmcm9tV2ViUGFnZVByb3h5KCpwYWdl
KSByZXRhaW5dIGF1dG9yZWxlYXNlXTsKKyAgICAgICAgcmV0dXJuIHJldGFpblB0cihmcm9tV2Vi
UGFnZVByb3h5KCpwYWdlKSkuYXV0b3JlbGVhc2UoKTsKICAgICByZXR1cm4gbmlsOwogfQogCkBA
IC04NiwxMiArODYsMTIgQEAgQGltcGxlbWVudGF0aW9uIFdLRnJhbWVJbmZvIChXS1ByaXZhdGUp
CiAKIC0gKF9XS0ZyYW1lSGFuZGxlICopX2hhbmRsZQogewotICAgIHJldHVybiBbW3dyYXBwZXIo
X2ZyYW1lSW5mby0+aGFuZGxlKCkpIHJldGFpbl0gYXV0b3JlbGVhc2VdOworICAgIHJldHVybiBy
ZXRhaW5QdHIod3JhcHBlcihfZnJhbWVJbmZvLT5oYW5kbGUoKSkpLmF1dG9yZWxlYXNlKCk7CiB9
CiAKIC0gKF9XS0ZyYW1lSGFuZGxlICopX3BhcmVudEZyYW1lSGFuZGxlCiB7Ci0gICAgcmV0dXJu
IFtbd3JhcHBlcihfZnJhbWVJbmZvLT5wYXJlbnRGcmFtZUhhbmRsZSgpKSByZXRhaW5dIGF1dG9y
ZWxlYXNlXTsKKyAgICByZXR1cm4gcmV0YWluUHRyKHdyYXBwZXIoX2ZyYW1lSW5mby0+cGFyZW50
RnJhbWVIYW5kbGUoKSkuYXV0b3JlbGVhc2UoKSk7CiB9CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJTY3JpcHQubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2VyU2NyaXB0Lm1tCmluZGV4IGI3NjI4OGEz
MTE2NGFjMjBmYmE4YjA3ODIxMjBiY2Q2MGFjZDVjNzYuLjg5MzgwMGQ1NDc3MzA3ZGU4ZDBlZGJm
YTU0YTdmNDVhOGVhYjI3OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1VzZXJTY3JpcHQubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLVXNlclNjcmlwdC5tbQpAQCAtODgsNyArODgsNyBAQCBAaW1wbGVtZW50YXRpb24g
V0tVc2VyU2NyaXB0IChXS1ByaXZhdGUpCiBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19C
RUdJTgogLSAoX1dLVXNlckNvbnRlbnRXb3JsZCAqKV91c2VyQ29udGVudFdvcmxkCiB7Ci0gICAg
cmV0dXJuIFtbW19XS1VzZXJDb250ZW50V29ybGQgYWxsb2NdIF9pbml0V2l0aENvbnRlbnRXb3Js
ZDp3cmFwcGVyKF91c2VyU2NyaXB0LT5jb250ZW50V29ybGQoKSldIGF1dG9yZWxlYXNlXTsKKyAg
ICByZXR1cm4gYWRvcHROUyhbW19XS1VzZXJDb250ZW50V29ybGQgYWxsb2NdIF9pbml0V2l0aENv
bnRlbnRXb3JsZDp3cmFwcGVyKF91c2VyU2NyaXB0LT5jb250ZW50V29ybGQoKSldKS5hdXRvcmVs
ZWFzZSgpOwogfQogQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCmluZGV4IDQ5NDYxNmU5
MjYwNGZkYzY5M2Q0NWExYjlmZmJlYjlhMWFkZmJlMzQuLjMwNjY3OWI1MWQzNzEyYjg3ZTI3YWYw
NWUzMGM1NDlmMGQ1MDI3YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlldy5tbQpAQCAtNjU1LDcgKzY1NSw3IEBAIC0gKGlkKXZhbHVlRm9yVW5kZWZp
bmVkS2V5OihOU1N0cmluZyAqKWtleQogCiAtIChXS1dlYlZpZXdDb25maWd1cmF0aW9uICopY29u
ZmlndXJhdGlvbgogewotICAgIHJldHVybiBbW19jb25maWd1cmF0aW9uIGNvcHldIGF1dG9yZWxl
YXNlXTsKKyAgICByZXR1cm4gYWRvcHROUyhbX2NvbmZpZ3VyYXRpb24gY29weV0pLmF1dG9yZWxl
YXNlKCk7CiB9CiAKIC0gKFdLQmFja0ZvcndhcmRMaXN0ICopYmFja0ZvcndhcmRMaXN0CkBAIC0x
MjE2LDEyICsxMjE2LDEyIEBAIGlubGluZSBPcHRpb25TZXQ8V2ViS2l0OjpGaW5kT3B0aW9ucz4g
dG9GaW5kT3B0aW9ucyhXS0ZpbmRDb25maWd1cmF0aW9uICpjb25maWd1CiAtICh2b2lkKWZpbmRT
dHJpbmc6KE5TU3RyaW5nICopc3RyaW5nIHdpdGhDb25maWd1cmF0aW9uOihXS0ZpbmRDb25maWd1
cmF0aW9uICopY29uZmlndXJhdGlvbiBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoV0tGaW5k
UmVzdWx0ICpyZXN1bHQpKWNvbXBsZXRpb25IYW5kbGVyCiB7CiAgICAgaWYgKCFzdHJpbmcubGVu
Z3RoKSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFtbW1dLRmluZFJlc3VsdCBhbGxvY10g
X2luaXRXaXRoTWF0Y2hGb3VuZDpOT10gYXV0b3JlbGVhc2VdKTsKKyAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoYWRvcHROUyhbW1dLRmluZFJlc3VsdCBhbGxvY10gX2luaXRXaXRoTWF0Y2hGb3Vu
ZDpOT10pLmF1dG9yZWxlYXNlKCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgX3Bh
Z2UtPmZpbmRTdHJpbmcoc3RyaW5nLCB0b0ZpbmRPcHRpb25zKGNvbmZpZ3VyYXRpb24pLCAxLCBb
aGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildKGJvb2wgZm91bmQpIHsK
LSAgICAgICAgaGFuZGxlcihbW1tXS0ZpbmRSZXN1bHQgYWxsb2NdIF9pbml0V2l0aE1hdGNoRm91
bmQ6Zm91bmRdIGF1dG9yZWxlYXNlXSk7CisgICAgICAgIGhhbmRsZXIoYWRvcHROUyhbW1dLRmlu
ZFJlc3VsdCBhbGxvY10gX2luaXRXaXRoTWF0Y2hGb3VuZDpmb3VuZF0pLmF1dG9yZWxlYXNlKCkp
OwogICAgIH0pOwogfQogCkBAIC0xNzA5LDggKzE3MDksOCBAQCAtIChCT09MKV9uZWdvdGlhdGVk
TGVnYWN5VExTCiAtICh2b2lkKV9mcmFtZXM6KHZvaWQgKF4pKF9XS0ZyYW1lVHJlZU5vZGUgKikp
Y29tcGxldGlvbkhhbmRsZXIKIHsKICAgICBfcGFnZS0+Z2V0QWxsRnJhbWVzKFtjb21wbGV0aW9u
SGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlciksIHBhZ2UgPSBtYWtlUmVm
KCpfcGFnZS5nZXQoKSldIChXZWJLaXQ6OkZyYW1lVHJlZU5vZGVEYXRhJiYgZGF0YSkgewotICAg
ICAgICBfV0tGcmFtZVRyZWVOb2RlICpub2RlID0gW1t3cmFwcGVyKEFQSTo6RnJhbWVUcmVlTm9k
ZTo6Y3JlYXRlKFdURk1vdmUoZGF0YSksIHBhZ2UuZ2V0KCkpKSByZXRhaW5dIGF1dG9yZWxlYXNl
XTsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobm9kZSk7CisgICAgICAgIGF1dG8gbm9kZSA9
IHJldGFpblB0cih3cmFwcGVyKEFQSTo6RnJhbWVUcmVlTm9kZTo6Y3JlYXRlKFdURk1vdmUoZGF0
YSksIHBhZ2UuZ2V0KCkpKSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG5vZGUuYXV0b3Jl
bGVhc2UoKSk7CiAgICAgfSk7CiB9CiAKQEAgLTE5NTQsNyArMTk1NCw3IEBAIC0gKF9XS1JlbW90
ZU9iamVjdFJlZ2lzdHJ5ICopX3JlbW90ZU9iamVjdFJlZ2lzdHJ5CiAKIC0gKFdLQnJvd3NpbmdD
b250ZXh0SGFuZGxlICopX2hhbmRsZQogewotICAgIHJldHVybiBbW1tXS0Jyb3dzaW5nQ29udGV4
dEhhbmRsZSBhbGxvY10gX2luaXRXaXRoUGFnZVByb3h5OipfcGFnZV0gYXV0b3JlbGVhc2VdOwor
ICAgIHJldHVybiBhZG9wdE5TKFtbV0tCcm93c2luZ0NvbnRleHRIYW5kbGUgYWxsb2NdIF9pbml0
V2l0aFBhZ2VQcm94eToqX3BhZ2VdKS5hdXRvcmVsZWFzZSgpOwogfQogCiAtIChfV0tSZW5kZXJp
bmdQcm9ncmVzc0V2ZW50cylfb2JzZXJ2ZWRSZW5kZXJpbmdQcm9ncmVzc0V2ZW50cwpAQCAtMjIz
MCwxMyArMjIzMCwxMyBAQCAtICh2b2lkKV9raWxsV2ViQ29udGVudFByb2Nlc3NBbmRSZXNldFN0
YXRlCiAKIC0gKHZvaWQpX3Rha2VQREZTbmFwc2hvdFdpdGhDb25maWd1cmF0aW9uOihXS1NuYXBz
aG90Q29uZmlndXJhdGlvbiAqKXNuYXBzaG90Q29uZmlndXJhdGlvbiBjb21wbGV0aW9uSGFuZGxl
cjoodm9pZCAoXikoTlNEYXRhICosIE5TRXJyb3IgKikpY29tcGxldGlvbkhhbmRsZXIKIHsKLSAg
ICBXS1BERkNvbmZpZ3VyYXRpb24gKnBkZkNvbmZpZ3VyYXRpb24gPSBuaWw7CisgICAgUmV0YWlu
UHRyPFdLUERGQ29uZmlndXJhdGlvbj4gcGRmQ29uZmlndXJhdGlvbjsKICAgICBpZiAoc25hcHNo
b3RDb25maWd1cmF0aW9uKSB7Ci0gICAgICAgIHBkZkNvbmZpZ3VyYXRpb24gPSBbW1tXS1BERkNv
bmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdIGF1dG9yZWxlYXNlXTsKLSAgICAgICAgcGRmQ29uZmln
dXJhdGlvbi5yZWN0ID0gc25hcHNob3RDb25maWd1cmF0aW9uLnJlY3Q7CisgICAgICAgIHBkZkNv
bmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tQREZDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7
CisgICAgICAgIFtwZGZDb25maWd1cmF0aW9uIHNldFJlY3Q6c25hcHNob3RDb25maWd1cmF0aW9u
LnJlY3RdOwogICAgIH0KIAotICAgIFtzZWxmIGNyZWF0ZVBERldpdGhDb25maWd1cmF0aW9uOnBk
ZkNvbmZpZ3VyYXRpb24gY29tcGxldGlvbkhhbmRsZXI6Y29tcGxldGlvbkhhbmRsZXJdOworICAg
IFtzZWxmIGNyZWF0ZVBERldpdGhDb25maWd1cmF0aW9uOnBkZkNvbmZpZ3VyYXRpb24uYXV0b3Jl
bGVhc2UoKSBjb21wbGV0aW9uSGFuZGxlcjpjb21wbGV0aW9uSGFuZGxlcl07CiB9CiAKIC0gKE5T
RGF0YSAqKV9zZXNzaW9uU3RhdGVEYXRhCkBAIC0yMjQ3LDcgKzIyNDcsNyBAQCAtIChOU0RhdGEg
Kilfc2Vzc2lvblN0YXRlRGF0YQogCiAtIChfV0tTZXNzaW9uU3RhdGUgKilfc2Vzc2lvblN0YXRl
CiB7Ci0gICAgcmV0dXJuIFtbW19XS1Nlc3Npb25TdGF0ZSBhbGxvY10gX2luaXRXaXRoU2Vzc2lv
blN0YXRlOl9wYWdlLT5zZXNzaW9uU3RhdGUoKV0gYXV0b3JlbGVhc2VdOworICAgIHJldHVybiBh
ZG9wdE5TKFtbX1dLU2Vzc2lvblN0YXRlIGFsbG9jXSBfaW5pdFdpdGhTZXNzaW9uU3RhdGU6X3Bh
Z2UtPnNlc3Npb25TdGF0ZSgpXSkuYXV0b3JlbGVhc2UoKTsKIH0KIAogLSAoX1dLU2Vzc2lvblN0
YXRlICopX3Nlc3Npb25TdGF0ZVdpdGhGaWx0ZXI6KEJPT0wgKF4pKFdLQmFja0ZvcndhcmRMaXN0
SXRlbSAqaXRlbSkpZmlsdGVyCkBAIC0yMjU5LDcgKzIyNTksNyBAQCAtIChfV0tTZXNzaW9uU3Rh
dGUgKilfc2Vzc2lvblN0YXRlV2l0aEZpbHRlcjooQk9PTCAoXikoV0tCYWNrRm9yd2FyZExpc3RJ
dGVtICppdAogICAgICAgICByZXR1cm4gKGJvb2wpZmlsdGVyKHdyYXBwZXIoaXRlbSkpOwogICAg
IH0pOwogCi0gICAgcmV0dXJuIFtbW19XS1Nlc3Npb25TdGF0ZSBhbGxvY10gX2luaXRXaXRoU2Vz
c2lvblN0YXRlOnNlc3Npb25TdGF0ZV0gYXV0b3JlbGVhc2VdOworICAgIHJldHVybiBhZG9wdE5T
KFtbX1dLU2Vzc2lvblN0YXRlIGFsbG9jXSBfaW5pdFdpdGhTZXNzaW9uU3RhdGU6c2Vzc2lvblN0
YXRlXSkuYXV0b3JlbGVhc2UoKTsKIH0KIAogLSAodm9pZClfcmVzdG9yZUZyb21TZXNzaW9uU3Rh
dGVEYXRhOihOU0RhdGEgKilzZXNzaW9uU3RhdGVEYXRhCkBAIC0yNTc3LDcgKzI1NzcsNyBAQCAt
ICh2b2lkKV9nZXRDb250ZW50c0FzQXR0cmlidXRlZFN0cmluZ1dpdGhDb21wbGV0aW9uSGFuZGxl
cjoodm9pZCAoXikoTlNBdHRyaWJ1dAogewogICAgIF9wYWdlLT5nZXRDb250ZW50c0FzQXR0cmli
dXRlZFN0cmluZyhbaGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildKGF1
dG8mIGF0dHJpYnV0ZWRTdHJpbmcpIHsKICAgICAgICAgaWYgKGF0dHJpYnV0ZWRTdHJpbmcuc3Ry
aW5nKQotICAgICAgICAgICAgaGFuZGxlcihbW2F0dHJpYnV0ZWRTdHJpbmcuc3RyaW5nLmdldCgp
IHJldGFpbl0gYXV0b3JlbGVhc2VdLCBbW2F0dHJpYnV0ZWRTdHJpbmcuZG9jdW1lbnRBdHRyaWJ1
dGVzLmdldCgpIHJldGFpbl0gYXV0b3JlbGVhc2VdLCBuaWwpOworICAgICAgICAgICAgaGFuZGxl
cihyZXRhaW5QdHIoYXR0cmlidXRlZFN0cmluZy5zdHJpbmcuZ2V0KCkpLmF1dG9yZWxlYXNlKCks
IHJldGFpblB0cihhdHRyaWJ1dGVkU3RyaW5nLmRvY3VtZW50QXR0cmlidXRlcy5nZXQoKSkuYXV0
b3JlbGVhc2UoKSwgbmlsKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgaGFuZGxlcihuaWws
IG5pbCwgY3JlYXRlTlNFcnJvcihXS0Vycm9yVW5rbm93bikuZ2V0KCkpOwogICAgIH0pOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2VicGFnZVByZWZl
cmVuY2VzLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2VicGFnZVBy
ZWZlcmVuY2VzLm1tCmluZGV4IDNkYzdmYTZlNGUxMDIzZjJlMmZhNjU1NWIzOWJmZWU5YjM5YWVl
MGEuLmNiNTY0ZGNkYjI2MGRlMmY4NmY3NGIyODRiZGUxMzE3Zjc5ZWU4Y2EgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnBhZ2VQcmVmZXJlbmNlcy5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJwYWdlUHJlZmVy
ZW5jZXMubW0KQEAgLTEwNCw3ICsxMDQsNyBAQCBAaW1wbGVtZW50YXRpb24gV0tXZWJwYWdlUHJl
ZmVyZW5jZXMKIAogKyAoaW5zdGFuY2V0eXBlKWRlZmF1bHRQcmVmZXJlbmNlcwogewotICAgIHJl
dHVybiBbW1tzZWxmIGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07CisgICAgcmV0dXJuIGFkb3B0
TlMoW1tzZWxmIGFsbG9jXSBpbml0XSkuYXV0b3JlbGVhc2UoKTsKIH0KIAogLSAodm9pZClkZWFs
bG9jCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJz
aXRlRGF0YVJlY29yZC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YnNpdGVEYXRhUmVjb3JkLm1tCmluZGV4IDYzZWU3NjFjZGVjMDRhMmQ0YTQ1ZGExYmI0MzI4OWUy
ZGEwNzUwZjYuLmYzOTVhNzE4YTE1OGE1NDQzY2NhNTJjMGQyODZhODliNWVkZDIzMWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVj
b3JkLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVE
YXRhUmVjb3JkLm1tCkBAIC0xNTAsNyArMTUwLDcgQEAgLSAoX1dLV2Vic2l0ZURhdGFTaXplICop
X2RhdGFTaXplCiAgICAgaWYgKCFzaXplKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgcmV0
dXJuIFtbW19XS1dlYnNpdGVEYXRhU2l6ZSBhbGxvY10gaW5pdFdpdGhTaXplOipzaXplXSBhdXRv
cmVsZWFzZV07CisgICAgcmV0dXJuIGFkb3B0TlMoW1tfV0tXZWJzaXRlRGF0YVNpemUgYWxsb2Nd
IGluaXRXaXRoU2l6ZToqc2l6ZV0pLmF1dG9yZWxlYXNlKCk7CiB9CiAKIC0gKE5TQXJyYXk8TlNT
dHJpbmcgKj4gKilfb3JpZ2luc1N0cmluZ3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9fV0tBY3RpdmF0ZWRFbGVtZW50SW5mby5tbSBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBY3RpdmF0ZWRFbGVtZW50SW5mby5tbQppbmRleCBm
NTYyNDU4MzhmZDc5MTIxMzQ5MzMyYTNjNzUwZDI0ZmQ5NjVmODY0Li42ZmU1OTNjNGI0NjRjZTli
NjA2NTA3ZTYyN2M5N2UwMDI1MzkxYjM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvX1dLQWN0aXZhdGVkRWxlbWVudEluZm8ubW0KKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0FjdGl2YXRlZEVsZW1lbnRJbmZvLm1tCkBAIC01
Myw3ICs1Myw3IEBAIEBpbXBsZW1lbnRhdGlvbiBfV0tBY3RpdmF0ZWRFbGVtZW50SW5mbyAgewog
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiArIChpbnN0YW5jZXR5cGUpYWN0aXZhdGVkRWxlbWVu
dEluZm9XaXRoSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb246KGNvbnN0IFdlYktpdDo6
SW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24mKWluZm9ybWF0aW9uIHVzZXJJbmZvOihO
U0RpY3Rpb25hcnkgKil1c2VySW5mbwogewotICAgIHJldHVybiBbW1tzZWxmIGFsbG9jXSBfaW5p
dFdpdGhJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbjppbmZvcm1hdGlvbiB1c2VySW5m
bzp1c2VySW5mb10gYXV0b3JlbGVhc2VdOworICAgIHJldHVybiBhZG9wdE5TKFtbc2VsZiBhbGxv
Y10gX2luaXRXaXRoSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb246aW5mb3JtYXRpb24g
dXNlckluZm86dXNlckluZm9dKS5hdXRvcmVsZWFzZSgpOwogfQogCiAtIChpbnN0YW5jZXR5cGUp
X2luaXRXaXRoSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb246KGNvbnN0IFdlYktpdDo6
SW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24mKWluZm9ybWF0aW9uIHVzZXJJbmZvOihO
U0RpY3Rpb25hcnkgKil1c2VySW5mbwpAQCAtMTUxLDcgKzE1MSw3IEBAIC0gKE5TRGljdGlvbmFy
eSAqKXVzZXJJbmZvCiAtIChDb2NvYUltYWdlICopaW1hZ2UKIHsKICAgICBpZiAoX2NvY29hSW1h
Z2UpCi0gICAgICAgIHJldHVybiBbW19jb2NvYUltYWdlIGNvcHldIGF1dG9yZWxlYXNlXTsKKyAg
ICAgICAgcmV0dXJuIGFkb3B0TlMoW19jb2NvYUltYWdlIGNvcHldKS5hdXRvcmVsZWFzZSgpOwog
CiAgICAgaWYgKCFfaW1hZ2UpCiAgICAgICAgIHJldHVybiBuaWw7CkBAIC0xNjMsNyArMTYzLDcg
QEAgLSAoQ29jb2FJbWFnZSAqKWltYWdlCiAjZW5kaWYKICAgICBfaW1hZ2UgPSBudWxscHRyOwog
Ci0gICAgcmV0dXJuIFtbX2NvY29hSW1hZ2UgY29weV0gYXV0b3JlbGVhc2VdOworICAgIHJldHVy
biBhZG9wdE5TKFtfY29jb2FJbWFnZSBjb3B5XSkuYXV0b3JlbGVhc2UoKTsKIH0KIAogQGVuZApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0F0dGFjaG1l
bnQubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXR0YWNobWVudC5t
bQppbmRleCA1ZThiOGJiYmJkZmJhNjQwN2Y5ZmYzN2ZiYTgyZjI2OGQ0OWYyYjFjLi5lZmM2YjNh
OTA3M2VmZWE3MDhmOWE2NzA2ZjZiM2I2M2FjMTViNjdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXR0YWNobWVudC5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXR0YWNobWVudC5tbQpAQCAtMTIwLDcgKzEyMCw3
IEBAIC0gKF9XS0F0dGFjaG1lbnRJbmZvICopaW5mbwogICAgIGlmICghX2F0dGFjaG1lbnQtPmlz
VmFsaWQoKSkKICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAgIHJldHVybiBbW1tfV0tBdHRhY2ht
ZW50SW5mbyBhbGxvY10gaW5pdFdpdGhGaWxlV3JhcHBlcjpfYXR0YWNobWVudC0+ZmlsZVdyYXBw
ZXIoKSBmaWxlUGF0aDpfYXR0YWNobWVudC0+ZmlsZVBhdGgoKSBtaW1lVHlwZTpfYXR0YWNobWVu
dC0+bWltZVR5cGUoKSB1dGlUeXBlOl9hdHRhY2htZW50LT51dGlUeXBlKCldIGF1dG9yZWxlYXNl
XTsKKyAgICByZXR1cm4gYWRvcHROUyhbW19XS0F0dGFjaG1lbnRJbmZvIGFsbG9jXSBpbml0V2l0
aEZpbGVXcmFwcGVyOl9hdHRhY2htZW50LT5maWxlV3JhcHBlcigpIGZpbGVQYXRoOl9hdHRhY2ht
ZW50LT5maWxlUGF0aCgpIG1pbWVUeXBlOl9hdHRhY2htZW50LT5taW1lVHlwZSgpIHV0aVR5cGU6
X2F0dGFjaG1lbnQtPnV0aVR5cGUoKV0pLmF1dG9yZWxlYXNlKCk7CiB9CiAKIC0gKHZvaWQpcmVx
dWVzdEluZm86KHZvaWQoXikoX1dLQXR0YWNobWVudEluZm8gKiwgTlNFcnJvciAqKSljb21wbGV0
aW9uSGFuZGxlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L19XS0F1dG9tYXRpb25TZXNzaW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL19XS0F1dG9tYXRpb25TZXNzaW9uLm1tCmluZGV4IDJhZGVlYTc2MGM2OThiMThhZTU5MWU1
NzA1NzEzMjk1ZjI0YzU2ZDcuLjExMGQ0ZTgwYzRmOThhZDdlYzIyZWZiY2JhODYxNmQxOGMwZmVh
MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdXRv
bWF0aW9uU2Vzc2lvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLQXV0b21hdGlvblNlc3Npb24ubW0KQEAgLTQxLDcgKzQxLDcgQEAgQGltcGxlbWVudGF0aW9u
IF9XS0F1dG9tYXRpb25TZXNzaW9uIHsKIAogLSAoaW5zdGFuY2V0eXBlKWluaXQKIHsKLSAgICBy
ZXR1cm4gW3NlbGYgaW5pdFdpdGhDb25maWd1cmF0aW9uOltbW19XS0F1dG9tYXRpb25TZXNzaW9u
Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdXTsKKyAgICByZXR1cm4gW3Nl
bGYgaW5pdFdpdGhDb25maWd1cmF0aW9uOmFkb3B0TlMoW1tfV0tBdXRvbWF0aW9uU2Vzc2lvbkNv
bmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKS5hdXRvcmVsZWFzZSgpXTsKIH0KIAogLSAoaW5zdGFu
Y2V0eXBlKWluaXRXaXRoQ29uZmlndXJhdGlvbjooX1dLQXV0b21hdGlvblNlc3Npb25Db25maWd1
cmF0aW9uICopY29uZmlndXJhdGlvbgpAQCAtODcsNyArODcsNyBAQCAtICh2b2lkKXNldFNlc3Np
b25JZGVudGlmaWVyOihOU1N0cmluZyAqKXNlc3Npb25JZGVudGlmaWVyCiAKIC0gKF9XS0F1dG9t
YXRpb25TZXNzaW9uQ29uZmlndXJhdGlvbiAqKWNvbmZpZ3VyYXRpb24KIHsKLSAgICByZXR1cm4g
W1tfY29uZmlndXJhdGlvbiBjb3B5XSBhdXRvcmVsZWFzZV07CisgICAgcmV0dXJuIGFkb3B0TlMo
W19jb25maWd1cmF0aW9uIGNvcHldKS5hdXRvcmVsZWFzZSgpOwogfQogCiAtIChCT09MKWlzUGFp
cmVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93
bmxvYWQubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxvYWQu
bW0KaW5kZXggZDVlMTFhZDY5NDU0ZWQ4ZGVhYjM1NTZiMDkyN2Y1MGQ4YjMyZTA4NC4uOTEzZjUz
YTU0MTE4OTRjMjllYmZlMGQ3ZjA3ZmI3YjYwMjA3YWYwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0Rvd25sb2FkLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZC5tbQpAQCAtNjAsOSArNjAsOSBAQCAr
IChpbnN0YW5jZXR5cGUpZG93bmxvYWRXaXRoRG93bmxvYWQ6KFdLRG93bmxvYWQgKilkb3dubG9h
ZAogewogICAgIGlmIChfV0tEb3dubG9hZCAqd3JhcHBlciA9IFtkb3dubG9hZFdyYXBwZXJNYXAo
KSBvYmplY3RGb3JLZXk6ZG93bmxvYWRdKQogICAgICAgICByZXR1cm4gd3JhcHBlcjsKLSAgICBf
V0tEb3dubG9hZCAqd3JhcHBlciA9IFtbW19XS0Rvd25sb2FkIGFsbG9jXSBpbml0V2l0aERvd25s
b2FkMjpkb3dubG9hZF0gYXV0b3JlbGVhc2VdOwotICAgIFtkb3dubG9hZFdyYXBwZXJNYXAoKSBz
ZXRPYmplY3Q6d3JhcHBlciBmb3JLZXk6ZG93bmxvYWRdOwotICAgIHJldHVybiB3cmFwcGVyOwor
ICAgIGF1dG8gd3JhcHBlciA9IGFkb3B0TlMoW1tfV0tEb3dubG9hZCBhbGxvY10gaW5pdFdpdGhE
b3dubG9hZDI6ZG93bmxvYWRdKTsKKyAgICBbZG93bmxvYWRXcmFwcGVyTWFwKCkgc2V0T2JqZWN0
OndyYXBwZXIuZ2V0KCkgZm9yS2V5OmRvd25sb2FkXTsKKyAgICByZXR1cm4gd3JhcHBlci5hdXRv
cmVsZWFzZSgpOwogfQogCiAtICh2b2lkKWNhbmNlbApAQCAtODUsNyArODUsNyBAQCAtIChOU1VS
TFJlcXVlc3QgKilyZXF1ZXN0CiAtIChXS1dlYlZpZXcgKilvcmlnaW5hdGluZ1dlYlZpZXcKIHsK
ICAgICBpZiAoYXV0byogb3JpZ2luYXRpbmdQYWdlID0gX2Rvd25sb2FkLT5fZG93bmxvYWQtPm9y
aWdpbmF0aW5nUGFnZSgpKQotICAgICAgICByZXR1cm4gW1tmcm9tV2ViUGFnZVByb3h5KCpvcmln
aW5hdGluZ1BhZ2UpIHJldGFpbl0gYXV0b3JlbGVhc2VdOworICAgICAgICByZXR1cm4gcmV0YWlu
UHRyKGZyb21XZWJQYWdlUHJveHkoKm9yaWdpbmF0aW5nUGFnZSkpLmF1dG9yZWxlYXNlKCk7CiAg
ICAgcmV0dXJuIG5pbDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL19XS0VsZW1lbnRBY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvX1dLRWxlbWVudEFjdGlvbi5tbQppbmRleCBhMTQyODY5ZTYzZWY2ZGZjNjUzYWY0
OTNjNTZjOWY3MGM1OGM2MjBjLi41MTUwZTI4OTRiNDVhNmY2YmRlYTY4NjU4YTIwZmNmYzkyYjg2
NmMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRWxl
bWVudEFjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dL
RWxlbWVudEFjdGlvbi5tbQpAQCAtOTYsOCArOTYsOCBAQCAtICh2b2lkKWRlYWxsb2MKIAogKyAo
aW5zdGFuY2V0eXBlKWVsZW1lbnRBY3Rpb25XaXRoVGl0bGU6KE5TU3RyaW5nICopdGl0bGUgYWN0
aW9uSGFuZGxlcjooV0tFbGVtZW50QWN0aW9uSGFuZGxlciloYW5kbGVyCiB7Ci0gICAgcmV0dXJu
IFtbW3NlbGYgYWxsb2NdIF9pbml0V2l0aFRpdGxlOnRpdGxlIGFjdGlvbkhhbmRsZXI6XihXS0Fj
dGlvblNoZWV0QXNzaXN0YW50ICosIF9XS0FjdGl2YXRlZEVsZW1lbnRJbmZvICphY3Rpb25JbmZv
KSB7IGhhbmRsZXIoYWN0aW9uSW5mbyk7IH0KLSAgICAgICAgdHlwZTpfV0tFbGVtZW50QWN0aW9u
VHlwZUN1c3RvbSBhc3Npc3RhbnQ6bmlsXSBhdXRvcmVsZWFzZV07CisgICAgcmV0dXJuIGFkb3B0
TlMoW1tzZWxmIGFsbG9jXSBfaW5pdFdpdGhUaXRsZTp0aXRsZSBhY3Rpb25IYW5kbGVyOl4oV0tB
Y3Rpb25TaGVldEFzc2lzdGFudCAqLCBfV0tBY3RpdmF0ZWRFbGVtZW50SW5mbyAqYWN0aW9uSW5m
bykgeyBoYW5kbGVyKGFjdGlvbkluZm8pOyB9CisgICAgICAgIHR5cGU6X1dLRWxlbWVudEFjdGlv
blR5cGVDdXN0b20gYXNzaXN0YW50Om5pbF0pLmF1dG9yZWxlYXNlKCk7CiB9CiAKICNpZiBIQVZF
KFNBRkFSSV9TRVJWSUNFU19GUkFNRVdPUkspCkBAIC0xMTgsNyArMTE4LDcgQEAgKyAoaW5zdGFu
Y2V0eXBlKWVsZW1lbnRBY3Rpb25XaXRoVHlwZTooX1dLRWxlbWVudEFjdGlvblR5cGUpdHlwZSB0
aXRsZTooTlNTdHJpbmcKICsgKGluc3RhbmNldHlwZSlfZWxlbWVudEFjdGlvbldpdGhUeXBlOihf
V0tFbGVtZW50QWN0aW9uVHlwZSl0eXBlIHRpdGxlOihOU1N0cmluZyAqKXRpdGxlIGFjdGlvbkhh
bmRsZXI6KFdLRWxlbWVudEFjdGlvbkhhbmRsZXIpYWN0aW9uSGFuZGxlcgogewogICAgIFdLRWxl
bWVudEFjdGlvbkhhbmRsZXJJbnRlcm5hbCBoYW5kbGVyID0gXihXS0FjdGlvblNoZWV0QXNzaXN0
YW50ICosIF9XS0FjdGl2YXRlZEVsZW1lbnRJbmZvICphY3Rpb25JbmZvKSB7IGFjdGlvbkhhbmRs
ZXIoYWN0aW9uSW5mbyk7IH07Ci0gICAgcmV0dXJuIFtbW3NlbGYgYWxsb2NdIF9pbml0V2l0aFRp
dGxlOnRpdGxlIGFjdGlvbkhhbmRsZXI6aGFuZGxlciB0eXBlOnR5cGUgYXNzaXN0YW50Om5pbF0g
YXV0b3JlbGVhc2VdOworICAgIHJldHVybiBhZG9wdE5TKFtbc2VsZiBhbGxvY10gX2luaXRXaXRo
VGl0bGU6dGl0bGUgYWN0aW9uSGFuZGxlcjpoYW5kbGVyIHR5cGU6dHlwZSBhc3Npc3RhbnQ6bmls
XSkuYXV0b3JlbGVhc2UoKTsKIH0KIAogKyAoaW5zdGFuY2V0eXBlKV9lbGVtZW50QWN0aW9uV2l0
aFR5cGU6KF9XS0VsZW1lbnRBY3Rpb25UeXBlKXR5cGUgY3VzdG9tVGl0bGU6KE5TU3RyaW5nICop
Y3VzdG9tVGl0bGUgYXNzaXN0YW50OihXS0FjdGlvblNoZWV0QXNzaXN0YW50ICopYXNzaXN0YW50
CkBAIC0xODIsNyArMTgyLDcgQEAgKyAoaW5zdGFuY2V0eXBlKV9lbGVtZW50QWN0aW9uV2l0aFR5
cGU6KF9XS0VsZW1lbnRBY3Rpb25UeXBlKXR5cGUgY3VzdG9tVGl0bGU6KE4KICAgICAgICAgcmV0
dXJuIG5pbDsKICAgICB9CiAKLSAgICByZXR1cm4gW1tbc2VsZiBhbGxvY10gX2luaXRXaXRoVGl0
bGU6KGN1c3RvbVRpdGxlID8gY3VzdG9tVGl0bGUgOiB0aXRsZSkgYWN0aW9uSGFuZGxlcjpoYW5k
bGVyIHR5cGU6dHlwZSBhc3Npc3RhbnQ6YXNzaXN0YW50XSBhdXRvcmVsZWFzZV07CisgICAgcmV0
dXJuIGFkb3B0TlMoW1tzZWxmIGFsbG9jXSBfaW5pdFdpdGhUaXRsZTooY3VzdG9tVGl0bGUgPyBj
dXN0b21UaXRsZSA6IHRpdGxlKSBhY3Rpb25IYW5kbGVyOmhhbmRsZXIgdHlwZTp0eXBlIGFzc2lz
dGFudDphc3Npc3RhbnRdKS5hdXRvcmVsZWFzZSgpOwogfQogCiArIChpbnN0YW5jZXR5cGUpX2Vs
ZW1lbnRBY3Rpb25XaXRoVHlwZTooX1dLRWxlbWVudEFjdGlvblR5cGUpdHlwZSBhc3Npc3RhbnQ6
KFdLQWN0aW9uU2hlZXRBc3Npc3RhbnQgKilhc3Npc3RhbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tGcmFtZVRyZWVOb2RlLm1tIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0ZyYW1lVHJlZU5vZGUubW0KaW5kZXggNGQzOWUy
MTU4MjE2N2JjODUxYjkwZGM0YTE4NTYyNGU2YmYwYzIyOC4uNTcyOTU4YWRjMjEzODliYWVjOWZh
OWQzNjlmMDc3ODVkN2VmMTMyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL19XS0ZyYW1lVHJlZU5vZGUubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL19XS0ZyYW1lVHJlZU5vZGUubW0KQEAgLTUzLDEyICs1MywxMiBAQCAtIChX
S1NlY3VyaXR5T3JpZ2luICopc2VjdXJpdHlPcmlnaW4KIHsKICAgICBhdXRvJiBkYXRhID0gX25v
ZGUtPnNlY3VyaXR5T3JpZ2luKCk7CiAgICAgYXV0byBhcGlPcmlnaW4gPSBBUEk6OlNlY3VyaXR5
T3JpZ2luOjpjcmVhdGUoZGF0YS5wcm90b2NvbCwgZGF0YS5ob3N0LCBkYXRhLnBvcnQpOwotICAg
IHJldHVybiBbW3dyYXBwZXIoYXBpT3JpZ2luLmdldCgpKSByZXRhaW5dIGF1dG9yZWxlYXNlXTsK
KyAgICByZXR1cm4gcmV0YWluUHRyKHdyYXBwZXIoYXBpT3JpZ2luLmdldCgpKSkuYXV0b3JlbGVh
c2UoKTsKIH0KIAogLSAoV0tXZWJWaWV3ICopd2ViVmlldwogewotICAgIHJldHVybiBbW2Zyb21X
ZWJQYWdlUHJveHkoX25vZGUtPnBhZ2UoKSkgcmV0YWluXSBhdXRvcmVsZWFzZV07CisgICAgcmV0
dXJuIHJldGFpblB0cihmcm9tV2ViUGFnZVByb3h5KF9ub2RlLT5wYWdlKCkpKS5hdXRvcmVsZWFz
ZSgpOwogfQogCiAtIChOU0FycmF5PF9XS0ZyYW1lVHJlZU5vZGUgKj4gKiljaGlsZEZyYW1lcwpA
QCAtNzUsMTIgKzc1LDEyIEBAIC0gKGlkKWNvcHlXaXRoWm9uZTooTlNab25lICopem9uZQogCiAt
IChfV0tGcmFtZUhhbmRsZSAqKV9oYW5kbGUKIHsKLSAgICByZXR1cm4gW1t3cmFwcGVyKF9ub2Rl
LT5oYW5kbGUoKSkgcmV0YWluXSBhdXRvcmVsZWFzZV07CisgICAgcmV0dXJuIHJldGFpblB0cih3
cmFwcGVyKF9ub2RlLT5oYW5kbGUoKSkpLmF1dG9yZWxlYXNlKCk7CiB9CiAKIC0gKF9XS0ZyYW1l
SGFuZGxlICopX3BhcmVudEZyYW1lSGFuZGxlCiB7Ci0gICAgcmV0dXJuIFtbd3JhcHBlcihfbm9k
ZS0+cGFyZW50RnJhbWVIYW5kbGUoKSkgcmV0YWluXSBhdXRvcmVsZWFzZV07CisgICAgcmV0dXJu
IHJldGFpblB0cih3cmFwcGVyKF9ub2RlLT5wYXJlbnRGcmFtZUhhbmRsZSgpKSkuYXV0b3JlbGVh
c2UoKTsKIH0KIAogLSAoQVBJOjpPYmplY3QmKV9hcGlPYmplY3QKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3IubW0gYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yLm1tCmluZGV4IDZiZWI0NWU4NDY1
OTgxZjllMDkyNDcyZWE0YjMxNzg2NjcyNmJlMTEuLjI2Y2E4Zjc4MTYzZTU0ODY0YWE4ZjhlNGZi
ODI1NTIyOTUyM2M0YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9fV0tJbnNwZWN0b3IubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL19XS0luc3BlY3Rvci5tbQpAQCAtMTg4LDcgKzE4OCw3IEBAIC0gKHZvaWQpcmVnaXN0ZXJF
eHRlbnNpb25XaXRoSUQ6KE5TU3RyaW5nICopZXh0ZW5zaW9uSUQgZGlzcGxheU5hbWU6KE5TU3Ry
aW5nICopCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBjYXB0dXJl
ZEJsb2NrKG5pbCwgW1t3cmFwcGVyKEFQSTo6SW5zcGVjdG9yRXh0ZW5zaW9uOjpjcmVhdGUocHJv
dGVjdGVkRXh0ZW5zaW9uSUQuZ2V0KCksIHByb3RlY3RlZFNlbGYtPl9pbnNwZWN0b3ItPmV4dGVu
c2lvbkNvbnRyb2xsZXIoKSkpIHJldGFpbl0gYXV0b3JlbGVhc2VdKTsKKyAgICAgICAgY2FwdHVy
ZWRCbG9jayhuaWwsIHJldGFpblB0cih3cmFwcGVyKEFQSTo6SW5zcGVjdG9yRXh0ZW5zaW9uOjpj
cmVhdGUocHJvdGVjdGVkRXh0ZW5zaW9uSUQuZ2V0KCksIHByb3RlY3RlZFNlbGYtPl9pbnNwZWN0
b3ItPmV4dGVuc2lvbkNvbnRyb2xsZXIoKSkpKS5hdXRvcmVsZWFzZSgpKTsKICAgICB9KTsKICNl
bHNlCiAgICAgY29tcGxldGlvbkhhbmRsZXIoW05TRXJyb3IgZXJyb3JXaXRoRG9tYWluOldLRXJy
b3JEb21haW4gY29kZTpXS0Vycm9yVW5rbm93biB1c2VySW5mbzpuaWxdLCBuaWwpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1Byb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tQcm9j
ZXNzUG9vbENvbmZpZ3VyYXRpb24ubW0KaW5kZXggYjRjMzVlODg1NGM2MTA1NTY1NWFlZmYyYmZi
OTA5Y2RjNTQyODM5Yy4uNDU1ZDVhOTIzNGQ1OTkyNzdjNjI4ODIwOWVkYTJjNzZjMDZmMTc3YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1Byb2Nlc3NQ
b29sQ29uZmlndXJhdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLm1tCkBAIC02OSwxMSArNjksMTEgQEAgLSAo
TlNTZXQ8Q2xhc3M+ICopY3VzdG9tQ2xhc3Nlc0ZvclBhcmFtZXRlckNvZGVyCiAgICAgaWYgKGNs
YXNzZXMuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gW05TU2V0IHNldF07CiAKLSAgICBOU011
dGFibGVTZXQgKnJlc3VsdCA9IFtbTlNNdXRhYmxlU2V0IGFsbG9jXSBpbml0V2l0aENhcGFjaXR5
OmNsYXNzZXMuc2l6ZSgpXTsKKyAgICBhdXRvIHJlc3VsdCA9IGFkb3B0TlMoW1tOU011dGFibGVT
ZXQgYWxsb2NdIGluaXRXaXRoQ2FwYWNpdHk6Y2xhc3Nlcy5zaXplKCldKTsKICAgICBmb3IgKGNv
bnN0IGF1dG8mIHZhbHVlIDogY2xhc3NlcykKICAgICAgICAgW3Jlc3VsdCBhZGRPYmplY3Q6IG9i
amNfbG9va1VwQ2xhc3ModmFsdWUudXRmOCgpLmRhdGEoKSldOwogCi0gICAgcmV0dXJuIFtyZXN1
bHQgYXV0b3JlbGVhc2VdOworICAgIHJldHVybiByZXN1bHQuYXV0b3JlbGVhc2UoKTsKIH0KIAog
LSAodm9pZClzZXRDdXN0b21DbGFzc2VzRm9yUGFyYW1ldGVyQ29kZXI6KE5TU2V0PENsYXNzPiAq
KWNsYXNzZXNGb3JDb2RlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL19XS1JlbW90ZVdlYkluc3BlY3RvclZpZXdDb250cm9sbGVyLm1tIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1JlbW90ZVdlYkluc3BlY3RvclZpZXdDb250cm9s
bGVyLm1tCmluZGV4IDkxYzRlM2NhYzgxZWQxYjc5MDM0MjFkNmJlNjQ5NTcwZThkNDcwMDQuLjlm
MzE5Y2ZjZDVkMzUyNWNlNjFkYTQyZGEwZDI2YTNlNTYyNDY2YmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tSZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29u
dHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUmVt
b3RlV2ViSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIubW0KQEAgLTE2OCw3ICsxNjgsNyBAQCAtICh2
b2lkKXJlZ2lzdGVyRXh0ZW5zaW9uV2l0aElEOihOU1N0cmluZyAqKWV4dGVuc2lvbklEIGRpc3Bs
YXlOYW1lOihOU1N0cmluZyAqKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAg
ICAgICAgY2FwdHVyZWRCbG9jayhuaWwsIFtbd3JhcHBlcihBUEk6Okluc3BlY3RvckV4dGVuc2lv
bjo6Y3JlYXRlKHByb3RlY3RlZEV4dGVuc2lvbklELmdldCgpLCBwcm90ZWN0ZWRTZWxmLT5tX3Jl
bW90ZUluc3BlY3RvclByb3h5LT5leHRlbnNpb25Db250cm9sbGVyKCkpKSByZXRhaW5dIGF1dG9y
ZWxlYXNlXSk7CisgICAgICAgIGNhcHR1cmVkQmxvY2sobmlsLCByZXRhaW5QdHIod3JhcHBlcihB
UEk6Okluc3BlY3RvckV4dGVuc2lvbjo6Y3JlYXRlKHByb3RlY3RlZEV4dGVuc2lvbklELmdldCgp
LCBwcm90ZWN0ZWRTZWxmLT5tX3JlbW90ZUluc3BlY3RvclByb3h5LT5leHRlbnNpb25Db250cm9s
bGVyKCkpKSkuYXV0b3JlbGVhc2UoKSk7CiAgICAgfSk7CiAjZWxzZQogICAgIGNvbXBsZXRpb25I
YW5kbGVyKFtOU0Vycm9yIGVycm9yV2l0aERvbWFpbjpXS0Vycm9yRG9tYWluIGNvZGU6V0tFcnJv
clVua25vd24gdXNlckluZm86bmlsXSwgbmlsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tUZXh0TWFuaXB1bGF0aW9uVG9rZW4ubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVGV4dE1hbmlwdWxhdGlvblRva2VuLm1tCmlu
ZGV4IGM4ZmQyMmE3YjUyM2ZlYTM5Y2FmYzFlMGVhYjdkOTE5ZTBkZmVkYzUuLjgxOWZlMWI5ZTlj
NjA1ZTQ3Nzc5YmRiOTE2OWVlZDc0MGI4M2M5ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tUZXh0TWFuaXB1bGF0aW9uVG9rZW4ubW0KKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1RleHRNYW5pcHVsYXRpb25Ub2tlbi5t
bQpAQCAtMTEyLDcgKzExMiw3IEBAIC0gKE5TU3RyaW5nICopX2Rlc2NyaXB0aW9uUHJlc2Vydmlu
Z1ByaXZhY3k6KEJPT0wpcHJlc2VydmVQcml2YWN5CiAKICAgICBbZGVzY3JpcHRpb24gYXBwZW5k
U3RyaW5nOkAiPiJdOwogCi0gICAgcmV0dXJuIFtbZGVzY3JpcHRpb24gY29weV0gYXV0b3JlbGVh
c2VdOworICAgIHJldHVybiBhZG9wdE5TKFtkZXNjcmlwdGlvbiBjb3B5XSkuYXV0b3JlbGVhc2Uo
KTsKIH0KIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL19XS1VzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmUubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvX1dLVXNlckNvbnRlbnRFeHRlbnNpb25TdG9yZS5tbQppbmRleCA4NDQ5
MmE1NjYxM2IxYTYxZmJiOTUxYjFjMDgwNWJlMzY2NmIyZDVjLi4yZWU4ZDdhMDYxMDc5ZjY5NzU2
MDQyZTNhNTE4ODljMjkwYWM3MDcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvX1dLVXNlckNvbnRlbnRFeHRlbnNpb25TdG9yZS5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVXNlckNvbnRlbnRFeHRlbnNpb25TdG9yZS5t
bQpAQCAtNjAsMjcgKzYwLDI3IEBAIEBpbXBsZW1lbnRhdGlvbiBfV0tVc2VyQ29udGVudEV4dGVu
c2lvblN0b3JlCiAKICsgKGluc3RhbmNldHlwZSlkZWZhdWx0U3RvcmUKIHsKLSAgICByZXR1cm4g
W1tbX1dLVXNlckNvbnRlbnRFeHRlbnNpb25TdG9yZSBhbGxvY10gX2luaXRXaXRoV0tDb250ZW50
UnVsZUxpc3RTdG9yZTpbV0tDb250ZW50UnVsZUxpc3RTdG9yZSBkZWZhdWx0U3RvcmVXaXRoTGVn
YWN5RmlsZW5hbWVdXSBhdXRvcmVsZWFzZV07CisgICAgcmV0dXJuIGFkb3B0TlMoW1tfV0tVc2Vy
Q29udGVudEV4dGVuc2lvblN0b3JlIGFsbG9jXSBfaW5pdFdpdGhXS0NvbnRlbnRSdWxlTGlzdFN0
b3JlOltXS0NvbnRlbnRSdWxlTGlzdFN0b3JlIGRlZmF1bHRTdG9yZVdpdGhMZWdhY3lGaWxlbmFt
ZV1dKS5hdXRvcmVsZWFzZSgpOwogfQogCiArIChpbnN0YW5jZXR5cGUpc3RvcmVXaXRoVVJMOihO
U1VSTCAqKXVybAogewotICAgIHJldHVybiBbW1tfV0tVc2VyQ29udGVudEV4dGVuc2lvblN0b3Jl
IGFsbG9jXSBfaW5pdFdpdGhXS0NvbnRlbnRSdWxlTGlzdFN0b3JlOltXS0NvbnRlbnRSdWxlTGlz
dFN0b3JlIHN0b3JlV2l0aFVSTEFuZExlZ2FjeUZpbGVuYW1lOnVybF1dIGF1dG9yZWxlYXNlXTsK
KyAgICByZXR1cm4gYWRvcHROUyhbW19XS1VzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmUgYWxsb2Nd
IF9pbml0V2l0aFdLQ29udGVudFJ1bGVMaXN0U3RvcmU6W1dLQ29udGVudFJ1bGVMaXN0U3RvcmUg
c3RvcmVXaXRoVVJMQW5kTGVnYWN5RmlsZW5hbWU6dXJsXV0pLmF1dG9yZWxlYXNlKCk7CiB9CiAK
IC0gKHZvaWQpY29tcGlsZUNvbnRlbnRFeHRlbnNpb25Gb3JJZGVudGlmaWVyOihOU1N0cmluZyAq
KWlkZW50aWZpZXIgZW5jb2RlZENvbnRlbnRFeHRlbnNpb246KE5TU3RyaW5nICopZW5jb2RlZENv
bnRlbnRSdWxlTGlzdCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoX1dLVXNlckNvbnRlbnRG
aWx0ZXIgKiwgTlNFcnJvciAqKSljb21wbGV0aW9uSGFuZGxlcgogewogICAgIFtfY29udGVudFJ1
bGVMaXN0U3RvcmUgX2NvbXBpbGVDb250ZW50UnVsZUxpc3RGb3JJZGVudGlmaWVyOmlkZW50aWZp
ZXIgZW5jb2RlZENvbnRlbnRSdWxlTGlzdDplbmNvZGVkQ29udGVudFJ1bGVMaXN0IGNvbXBsZXRp
b25IYW5kbGVyOl4oV0tDb250ZW50UnVsZUxpc3QgKmNvbnRlbnRSdWxlTGlzdCwgTlNFcnJvciAq
ZXJyb3IpIHsKLSAgICAgICAgX1dLVXNlckNvbnRlbnRGaWx0ZXIgKmNvbnRlbnRGaWx0ZXIgPSBj
b250ZW50UnVsZUxpc3QgPyBbW1tfV0tVc2VyQ29udGVudEZpbHRlciBhbGxvY10gX2luaXRXaXRo
V0tDb250ZW50UnVsZUxpc3Q6Y29udGVudFJ1bGVMaXN0XSBhdXRvcmVsZWFzZV0gOiBuaWw7Ci0g
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGNvbnRlbnRGaWx0ZXIsIHRvVXNlckNvbnRlbnRSdWxl
TGlzdFN0b3JlRXJyb3IoZXJyb3IpKTsKKyAgICAgICAgYXV0byBjb250ZW50RmlsdGVyID0gY29u
dGVudFJ1bGVMaXN0ID8gYWRvcHROUyhbW19XS1VzZXJDb250ZW50RmlsdGVyIGFsbG9jXSBfaW5p
dFdpdGhXS0NvbnRlbnRSdWxlTGlzdDpjb250ZW50UnVsZUxpc3RdKSA6IG5pbDsKKyAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoY29udGVudEZpbHRlci5hdXRvcmVsZWFzZSgpLCB0b1VzZXJDb250
ZW50UnVsZUxpc3RTdG9yZUVycm9yKGVycm9yKSk7CiAgICAgfV07CiB9CiAKIC0gKHZvaWQpbG9v
a3VwQ29udGVudEV4dGVuc2lvbkZvcklkZW50aWZpZXI6KE5TU3RyaW5nICopaWRlbnRpZmllciBj
b21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoX1dLVXNlckNvbnRlbnRGaWx0ZXIgKiwgTlNFcnJv
ciAqKSljb21wbGV0aW9uSGFuZGxlcgogewogICAgIFtfY29udGVudFJ1bGVMaXN0U3RvcmUgbG9v
a1VwQ29udGVudFJ1bGVMaXN0Rm9ySWRlbnRpZmllcjppZGVudGlmaWVyIGNvbXBsZXRpb25IYW5k
bGVyOl4oV0tDb250ZW50UnVsZUxpc3QgKmNvbnRlbnRSdWxlTGlzdCwgTlNFcnJvciAqZXJyb3Ip
IHsKLSAgICAgICAgX1dLVXNlckNvbnRlbnRGaWx0ZXIgKmNvbnRlbnRGaWx0ZXIgPSBjb250ZW50
UnVsZUxpc3QgPyBbW1tfV0tVc2VyQ29udGVudEZpbHRlciBhbGxvY10gX2luaXRXaXRoV0tDb250
ZW50UnVsZUxpc3Q6Y29udGVudFJ1bGVMaXN0XSBhdXRvcmVsZWFzZV0gOiBuaWw7Ci0gICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKGNvbnRlbnRGaWx0ZXIsIHRvVXNlckNvbnRlbnRSdWxlTGlzdFN0
b3JlRXJyb3IoZXJyb3IpKTsKKyAgICAgICAgYXV0byBjb250ZW50RmlsdGVyID0gY29udGVudFJ1
bGVMaXN0ID8gYWRvcHROUyhbW19XS1VzZXJDb250ZW50RmlsdGVyIGFsbG9jXSBfaW5pdFdpdGhX
S0NvbnRlbnRSdWxlTGlzdDpjb250ZW50UnVsZUxpc3RdKSA6IG5pbDsKKyAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoY29udGVudEZpbHRlci5hdXRvcmVsZWFzZSgpLCB0b1VzZXJDb250ZW50UnVs
ZUxpc3RTdG9yZUVycm9yKGVycm9yKSk7CiAgICAgfV07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tVc2VyQ29udGVudFdvcmxkLm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1VzZXJDb250ZW50V29ybGQubW0KaW5k
ZXggZGYxNThmMGQyMzkzNGUwN2ZiMjkxZTY2YjMxNjMwYTk1OTcwYzc0Ni4uOTBmMWI3OTY0NmM4
NTNhZjhmNWVmMjM4Mzg5NzQwNTQyMDliM2FhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL19XS1VzZXJDb250ZW50V29ybGQubW0KKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1VzZXJDb250ZW50V29ybGQubW0KQEAgLTYwLDEy
ICs2MCwxMiBAQCAtIChpbnN0YW5jZXR5cGUpX2luaXRXaXRoQ29udGVudFdvcmxkOihXS0NvbnRl
bnRXb3JsZCAqKXdvcmxkCiAKICsgKF9XS1VzZXJDb250ZW50V29ybGQgKil3b3JsZFdpdGhOYW1l
OihOU1N0cmluZyAqKW5hbWUKIHsKLSAgICByZXR1cm4gW1tbX1dLVXNlckNvbnRlbnRXb3JsZCBh
bGxvY10gX2luaXRXaXRoTmFtZTpuYW1lXSBhdXRvcmVsZWFzZV07CisgICAgcmV0dXJuIGFkb3B0
TlMoW1tfV0tVc2VyQ29udGVudFdvcmxkIGFsbG9jXSBfaW5pdFdpdGhOYW1lOm5hbWVdKS5hdXRv
cmVsZWFzZSgpOwogfQogCiArIChfV0tVc2VyQ29udGVudFdvcmxkICopbm9ybWFsV29ybGQKIHsK
LSAgICByZXR1cm4gW1tbX1dLVXNlckNvbnRlbnRXb3JsZCBhbGxvY10gX2luaXRdIGF1dG9yZWxl
YXNlXTsKKyAgICByZXR1cm4gYWRvcHROUyhbW19XS1VzZXJDb250ZW50V29ybGQgYWxsb2NdIF9p
bml0XSkuYXV0b3JlbGVhc2UoKTsKIH0KIAogLSAoTlNTdHJpbmcgKiluYW1lCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld0lPUy5tbSBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3SU9TLm1tCmluZGV4IDBmNjk0YmE4
ZGNmNmVmZjI1YzBkN2Y2NWYzN2ZjNDNjNzk1ZTczOGMuLjU5ZDQ0NjI2ZWE0NWQ4ZTg0OWNmMTUz
YjU1ZjhhMmIyMzMyYzc3Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9pb3MvV0tXZWJWaWV3SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9p
b3MvV0tXZWJWaWV3SU9TLm1tCkBAIC0yNTUxLDcgKzI1NTEsNyBAQCAtIChVSUV2ZW50QXR0cmli
dXRpb24gKilfdWlFdmVudEF0dHJpYnV0aW9uCiAgICAgICAgIHJldHVybiBuaWw7CiAKICAgICBh
dXRvIGF0dHJpYnV0ZU9uVVJMID0gVVJMKFVSTCgpLCBtYWtlU3RyaW5nKCJodHRwczovLyIsIG1l
YXN1cmVtZW50LT5hdHRyaWJ1dGVPblNpdGUoKS5yZWdpc3RyYWJsZURvbWFpbi5zdHJpbmcoKSkp
OwotICAgIHJldHVybiBbW1tVSUV2ZW50QXR0cmlidXRpb24gYWxsb2NdIGluaXRXaXRoU291cmNl
SWRlbnRpZmllcjptZWFzdXJlbWVudC0+c291cmNlSUQoKS5pZCBkZXN0aW5hdGlvblVSTDphdHRy
aWJ1dGVPblVSTCBzb3VyY2VEZXNjcmlwdGlvbjptZWFzdXJlbWVudC0+c291cmNlRGVzY3JpcHRp
b24oKSBwdXJjaGFzZXI6bWVhc3VyZW1lbnQtPnB1cmNoYXNlcigpXSBhdXRvcmVsZWFzZV07Cisg
ICAgcmV0dXJuIGFkb3B0TlMoW1tVSUV2ZW50QXR0cmlidXRpb24gYWxsb2NdIGluaXRXaXRoU291
cmNlSWRlbnRpZmllcjptZWFzdXJlbWVudC0+c291cmNlSUQoKS5pZCBkZXN0aW5hdGlvblVSTDph
dHRyaWJ1dGVPblVSTCBzb3VyY2VEZXNjcmlwdGlvbjptZWFzdXJlbWVudC0+c291cmNlRGVzY3Jp
cHRpb24oKSBwdXJjaGFzZXI6bWVhc3VyZW1lbnQtPnB1cmNoYXNlcigpXSkuYXV0b3JlbGVhc2Uo
KTsKICNlbHNlCiAgICAgcmV0dXJuIG5pbDsKICNlbmRpZgpAQCAtMzE1OSw5ICszMTU5LDkgQEAg
LSAodm9pZCAoXikodm9pZCkpX3JldGFpbkFjdGl2ZUZvY3VzZWRTdGF0ZQogICAgICsrX2FjdGl2
ZUZvY3VzZWRTdGF0ZVJldGFpbkNvdW50OwogCiAgICAgLy8gRklYTUU6IFVzZSBzb21ldGhpbmcg
bGlrZSBDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2VyIHRvIGVuc3VyZSB0aGF0IHRoZSByZXR1
cm5lZCBibG9jayBpcyBjYWxsZWQgYmVmb3JlIGl0J3MgcmVsZWFzZWQuCi0gICAgcmV0dXJuIFtb
W3NlbGZdIHsKKyAgICByZXR1cm4gYWRvcHROUyhbW3NlbGZdIHsKICAgICAgICAgLS1fYWN0aXZl
Rm9jdXNlZFN0YXRlUmV0YWluQ291bnQ7Ci0gICAgfSBjb3B5XSBhdXRvcmVsZWFzZV07CisgICAg
fSBjb3B5XSkuYXV0b3JlbGVhc2UoKTsKIH0KIAogLSAodm9pZClfYmVjb21lRmlyc3RSZXNwb25k
ZXJXaXRoU2VsZWN0aW9uTW92aW5nRm9yd2FyZDooQk9PTClzZWxlY3RpbmdGb3J3YXJkIGNvbXBs
ZXRpb25IYW5kbGVyOih2b2lkICheKShCT09MIGRpZEJlY29tZUZpcnN0UmVzcG9uZGVyKSljb21w
bGV0aW9uSGFuZGxlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21h
dGlvbi9pb3MvV2ViQXV0b21hdGlvblNlc3Npb25JT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BdXRvbWF0aW9uL2lvcy9XZWJBdXRvbWF0aW9uU2Vzc2lvbklPUy5tbQppbmRleCA3MjI4
YWZmYWRiY2FhMjViZjM1ZGM0MThhMDE2OGQ2OTgwODBkNTQ4Li5iOGYxY2RkYjQ5ZGIyYWY3YTI4
YTY5M2QzMGY5ZjhhNWViMjgyOTJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BdXRvbWF0aW9uL2lvcy9XZWJBdXRvbWF0aW9uU2Vzc2lvbklPUy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL2lvcy9XZWJBdXRvbWF0aW9uU2Vzc2lvbklPUy5t
bQpAQCAtMTMyLDE5ICsxMzIsMTkgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cGxhdGZv
cm1TaW11bGF0ZUtleWJvYXJkSW50ZXJhY3Rpb24oV2ViUGFnZVByb3h5JiBwYWcKICAgICBjYXNl
IEtleWJvYXJkSW50ZXJhY3Rpb246OktleVByZXNzOiB7CiAgICAgICAgIG1fY3VycmVudE1vZGlm
aWVycyB8PSBjaGFuZ2VkTW9kaWZpZXJzOwogCi0gICAgICAgIFtldmVudHNUb0JlU2VudCBhZGRP
YmplY3Q6W1tbOjpXZWJFdmVudCBhbGxvY10gaW5pdFdpdGhLZXlFdmVudFR5cGU6V2ViRXZlbnRL
ZXlEb3duIHRpbWVTdGFtcDpDRkFic29sdXRlVGltZUdldEN1cnJlbnQoKSBjaGFyYWN0ZXJzOmNo
YXJhY3RlcnMgY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzOnVubW9kaWZpZWRDaGFyYWN0ZXJz
IG1vZGlmaWVyczptX2N1cnJlbnRNb2RpZmllcnMgaXNSZXBlYXRpbmc6Tk8gd2l0aEZsYWdzOmlu
cHV0RmxhZ3Mgd2l0aElucHV0TWFuYWdlckhpbnQ6bmlsIGtleUNvZGU6a2V5Q29kZSBpc1RhYktl
eTppc1RhYktleV0gYXV0b3JlbGVhc2VdXTsKKyAgICAgICAgW2V2ZW50c1RvQmVTZW50IGFkZE9i
amVjdDphZG9wdE5TKFtbOjpXZWJFdmVudCBhbGxvY10gaW5pdFdpdGhLZXlFdmVudFR5cGU6V2Vi
RXZlbnRLZXlEb3duIHRpbWVTdGFtcDpDRkFic29sdXRlVGltZUdldEN1cnJlbnQoKSBjaGFyYWN0
ZXJzOmNoYXJhY3RlcnMgY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzOnVubW9kaWZpZWRDaGFy
YWN0ZXJzIG1vZGlmaWVyczptX2N1cnJlbnRNb2RpZmllcnMgaXNSZXBlYXRpbmc6Tk8gd2l0aEZs
YWdzOmlucHV0RmxhZ3Mgd2l0aElucHV0TWFuYWdlckhpbnQ6bmlsIGtleUNvZGU6a2V5Q29kZSBp
c1RhYktleTppc1RhYktleV0pLmF1dG9yZWxlYXNlKCldOwogICAgICAgICBicmVhazsKICAgICB9
CiAgICAgY2FzZSBLZXlib2FyZEludGVyYWN0aW9uOjpLZXlSZWxlYXNlOiB7CiAgICAgICAgIG1f
Y3VycmVudE1vZGlmaWVycyAmPSB+Y2hhbmdlZE1vZGlmaWVyczsKIAotICAgICAgICBbZXZlbnRz
VG9CZVNlbnQgYWRkT2JqZWN0OltbWzo6V2ViRXZlbnQgYWxsb2NdIGluaXRXaXRoS2V5RXZlbnRU
eXBlOldlYkV2ZW50S2V5VXAgdGltZVN0YW1wOkNGQWJzb2x1dGVUaW1lR2V0Q3VycmVudCgpIGNo
YXJhY3RlcnM6Y2hhcmFjdGVycyBjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnM6dW5tb2RpZmll
ZENoYXJhY3RlcnMgbW9kaWZpZXJzOm1fY3VycmVudE1vZGlmaWVycyBpc1JlcGVhdGluZzpOTyB3
aXRoRmxhZ3M6aW5wdXRGbGFncyB3aXRoSW5wdXRNYW5hZ2VySGludDpuaWwga2V5Q29kZTprZXlD
b2RlIGlzVGFiS2V5OmlzVGFiS2V5XSBhdXRvcmVsZWFzZV1dOworICAgICAgICBbZXZlbnRzVG9C
ZVNlbnQgYWRkT2JqZWN0OmFkb3B0TlMoW1s6OldlYkV2ZW50IGFsbG9jXSBpbml0V2l0aEtleUV2
ZW50VHlwZTpXZWJFdmVudEtleVVwIHRpbWVTdGFtcDpDRkFic29sdXRlVGltZUdldEN1cnJlbnQo
KSBjaGFyYWN0ZXJzOmNoYXJhY3RlcnMgY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzOnVubW9k
aWZpZWRDaGFyYWN0ZXJzIG1vZGlmaWVyczptX2N1cnJlbnRNb2RpZmllcnMgaXNSZXBlYXRpbmc6
Tk8gd2l0aEZsYWdzOmlucHV0RmxhZ3Mgd2l0aElucHV0TWFuYWdlckhpbnQ6bmlsIGtleUNvZGU6
a2V5Q29kZSBpc1RhYktleTppc1RhYktleV0pLmF1dG9yZWxlYXNlKCldOwogICAgICAgICBicmVh
azsKICAgICB9CiAgICAgY2FzZSBLZXlib2FyZEludGVyYWN0aW9uOjpJbnNlcnRCeUtleTogewog
ICAgICAgICAvLyBNb2RpZmllcnMgb25seSBjaGFuZ2Ugd2l0aCBLZXlQcmVzcyBvciBLZXlSZWxl
YXNlLCB0aGlzIGNvZGUgcGF0aCBpcyBmb3Igc2luZ2xlIGNoYXJhY3RlcnMuCi0gICAgICAgIFtl
dmVudHNUb0JlU2VudCBhZGRPYmplY3Q6W1tbOjpXZWJFdmVudCBhbGxvY10gaW5pdFdpdGhLZXlF
dmVudFR5cGU6V2ViRXZlbnRLZXlEb3duIHRpbWVTdGFtcDpDRkFic29sdXRlVGltZUdldEN1cnJl
bnQoKSBjaGFyYWN0ZXJzOmNoYXJhY3RlcnMgY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzOnVu
bW9kaWZpZWRDaGFyYWN0ZXJzIG1vZGlmaWVyczptX2N1cnJlbnRNb2RpZmllcnMgaXNSZXBlYXRp
bmc6Tk8gd2l0aEZsYWdzOmlucHV0RmxhZ3Mgd2l0aElucHV0TWFuYWdlckhpbnQ6bmlsIGtleUNv
ZGU6a2V5Q29kZSBpc1RhYktleTppc1RhYktleV0gYXV0b3JlbGVhc2VdXTsKLSAgICAgICAgW2V2
ZW50c1RvQmVTZW50IGFkZE9iamVjdDpbW1s6OldlYkV2ZW50IGFsbG9jXSBpbml0V2l0aEtleUV2
ZW50VHlwZTpXZWJFdmVudEtleVVwIHRpbWVTdGFtcDpDRkFic29sdXRlVGltZUdldEN1cnJlbnQo
KSBjaGFyYWN0ZXJzOmNoYXJhY3RlcnMgY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzOnVubW9k
aWZpZWRDaGFyYWN0ZXJzIG1vZGlmaWVyczptX2N1cnJlbnRNb2RpZmllcnMgaXNSZXBlYXRpbmc6
Tk8gd2l0aEZsYWdzOmlucHV0RmxhZ3Mgd2l0aElucHV0TWFuYWdlckhpbnQ6bmlsIGtleUNvZGU6
a2V5Q29kZSBpc1RhYktleTppc1RhYktleV0gYXV0b3JlbGVhc2VdXTsKKyAgICAgICAgW2V2ZW50
c1RvQmVTZW50IGFkZE9iamVjdDphZG9wdE5TKFtbOjpXZWJFdmVudCBhbGxvY10gaW5pdFdpdGhL
ZXlFdmVudFR5cGU6V2ViRXZlbnRLZXlEb3duIHRpbWVTdGFtcDpDRkFic29sdXRlVGltZUdldEN1
cnJlbnQoKSBjaGFyYWN0ZXJzOmNoYXJhY3RlcnMgY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJz
OnVubW9kaWZpZWRDaGFyYWN0ZXJzIG1vZGlmaWVyczptX2N1cnJlbnRNb2RpZmllcnMgaXNSZXBl
YXRpbmc6Tk8gd2l0aEZsYWdzOmlucHV0RmxhZ3Mgd2l0aElucHV0TWFuYWdlckhpbnQ6bmlsIGtl
eUNvZGU6a2V5Q29kZSBpc1RhYktleTppc1RhYktleV0pLmF1dG9yZWxlYXNlKCldOworICAgICAg
ICBbZXZlbnRzVG9CZVNlbnQgYWRkT2JqZWN0OmFkb3B0TlMoW1s6OldlYkV2ZW50IGFsbG9jXSBp
bml0V2l0aEtleUV2ZW50VHlwZTpXZWJFdmVudEtleVVwIHRpbWVTdGFtcDpDRkFic29sdXRlVGlt
ZUdldEN1cnJlbnQoKSBjaGFyYWN0ZXJzOmNoYXJhY3RlcnMgY2hhcmFjdGVyc0lnbm9yaW5nTW9k
aWZpZXJzOnVubW9kaWZpZWRDaGFyYWN0ZXJzIG1vZGlmaWVyczptX2N1cnJlbnRNb2RpZmllcnMg
aXNSZXBlYXRpbmc6Tk8gd2l0aEZsYWdzOmlucHV0RmxhZ3Mgd2l0aElucHV0TWFuYWdlckhpbnQ6
bmlsIGtleUNvZGU6a2V5Q29kZSBpc1RhYktleTppc1RhYktleV0pLmF1dG9yZWxlYXNlKCldOwog
ICAgICAgICBicmVhazsKICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvQXV0b21hdGlvbkNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL0F1dG9tYXRpb25DbGllbnQubW0KaW5kZXggYzJmYjlkMDAwZDhlNDczYmE3Zjgw
MmE3YTUzNDVhNDQyM2YyYmEyYy4uZGVhMDIzZWUzMWNmM2ZiYjQyM2E0ZDYxMWMxOTE0MTc0OTNj
NjY2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvQXV0b21hdGlv
bkNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9BdXRvbWF0aW9u
Q2xpZW50Lm1tCkBAIC03NiwxNyArNzYsMTcgQEAgYm9vbCBBdXRvbWF0aW9uQ2xpZW50OjpyZW1v
dGVBdXRvbWF0aW9uQWxsb3dlZCgpIGNvbnN0CiAKIHZvaWQgQXV0b21hdGlvbkNsaWVudDo6cmVx
dWVzdEF1dG9tYXRpb25TZXNzaW9uKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkZW50aWZpZXIsIGNv
bnN0IFJlbW90ZUluc3BlY3Rvcjo6Q2xpZW50OjpTZXNzaW9uQ2FwYWJpbGl0aWVzJiBzZXNzaW9u
Q2FwYWJpbGl0aWVzKQogewotICAgIF9XS0F1dG9tYXRpb25TZXNzaW9uQ29uZmlndXJhdGlvbiAq
Y29uZmlndXJhdGlvbiA9IFtbW19XS0F1dG9tYXRpb25TZXNzaW9uQ29uZmlndXJhdGlvbiBhbGxv
Y10gaW5pdF0gYXV0b3JlbGVhc2VdOworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMo
W1tfV0tBdXRvbWF0aW9uU2Vzc2lvbkNvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKICAgICBp
ZiAoc2Vzc2lvbkNhcGFiaWxpdGllcy5hbGxvd0luc2VjdXJlTWVkaWFDYXB0dXJlKQotICAgICAg
ICBjb25maWd1cmF0aW9uLmFsbG93c0luc2VjdXJlTWVkaWFDYXB0dXJlID0gc2Vzc2lvbkNhcGFi
aWxpdGllcy5hbGxvd0luc2VjdXJlTWVkaWFDYXB0dXJlLnZhbHVlKCk7CisgICAgICAgIFtjb25m
aWd1cmF0aW9uIHNldEFsbG93c0luc2VjdXJlTWVkaWFDYXB0dXJlOnNlc3Npb25DYXBhYmlsaXRp
ZXMuYWxsb3dJbnNlY3VyZU1lZGlhQ2FwdHVyZS52YWx1ZSgpXTsKICAgICBpZiAoc2Vzc2lvbkNh
cGFiaWxpdGllcy5zdXBwcmVzc0lDRUNhbmRpZGF0ZUZpbHRlcmluZykKLSAgICAgICAgY29uZmln
dXJhdGlvbi5zdXBwcmVzc2VzSUNFQ2FuZGlkYXRlRmlsdGVyaW5nID0gc2Vzc2lvbkNhcGFiaWxp
dGllcy5zdXBwcmVzc0lDRUNhbmRpZGF0ZUZpbHRlcmluZy52YWx1ZSgpOworICAgICAgICBbY29u
ZmlndXJhdGlvbiBzZXRTdXBwcmVzc2VzSUNFQ2FuZGlkYXRlRmlsdGVyaW5nOnNlc3Npb25DYXBh
YmlsaXRpZXMuc3VwcHJlc3NJQ0VDYW5kaWRhdGVGaWx0ZXJpbmcudmFsdWUoKV07CiAKICAgICAv
LyBGb3JjZSBjbGllbnRzIHRvIGNyZWF0ZSBhbmQgcmVnaXN0ZXIgYSBzZXNzaW9uIGFzeW5jaHJv
bm91c2x5LiBPdGhlcndpc2UsCiAgICAgLy8gUmVtb3RlSW5zcGVjdG9yIHdpbGwgdHJ5IHRvIGFj
cXVpcmUgaXRzIGxvY2sgdG8gcmVnaXN0ZXIgdGhlIG5ldyBzZXNzaW9uIGFuZAogICAgIC8vIGRl
YWRsb2NrIGJlY2F1c2UgaXQncyBhbHJlYWR5IHRha2VuIHdoaWxlIGhhbmRsaW5nIFhQQyBtZXNz
YWdlcy4KICAgICBOU1N0cmluZyAqcmVxdWVzdGVkU2Vzc2lvbklkZW50aWZpZXIgPSBzZXNzaW9u
SWRlbnRpZmllcjsKLSAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3RoaXMsIHJlcXVlc3Rl
ZFNlc3Npb25JZGVudGlmaWVyID0gcmV0YWluUHRyKHJlcXVlc3RlZFNlc3Npb25JZGVudGlmaWVy
KSwgY29uZmlndXJhdGlvbiA9IHJldGFpblB0cihjb25maWd1cmF0aW9uKV0geworICAgIFJ1bkxv
b3A6Om1haW4oKS5kaXNwYXRjaChbdGhpcywgcmVxdWVzdGVkU2Vzc2lvbklkZW50aWZpZXIgPSBy
ZXRhaW5QdHIocmVxdWVzdGVkU2Vzc2lvbklkZW50aWZpZXIpLCBjb25maWd1cmF0aW9uID0gV1RG
TW92ZShjb25maWd1cmF0aW9uKV0gewogICAgICAgICBpZiAobV9kZWxlZ2F0ZU1ldGhvZHMucmVx
dWVzdEF1dG9tYXRpb25TZXNzaW9uKQogICAgICAgICAgICAgW21fZGVsZWdhdGUuZ2V0KCkgX3By
b2Nlc3NQb29sOm1fcHJvY2Vzc1Bvb2wgZGlkUmVxdWVzdEF1dG9tYXRpb25TZXNzaW9uV2l0aElk
ZW50aWZpZXI6cmVxdWVzdGVkU2Vzc2lvbklkZW50aWZpZXIuZ2V0KCkgY29uZmlndXJhdGlvbjpj
b25maWd1cmF0aW9uLmdldCgpXTsKICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL1NhZmVCcm93c2luZ1dhcm5pbmdDb2NvYS5tbSBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1NhZmVCcm93c2luZ1dhcm5pbmdDb2NvYS5tbQppbmRleCA4YTk5
ZWM0ZDE3OGRiMGViYmY0YTNmYzBkOWI2ZjAzYTgxYjU1NzIyLi5mMWVmYTQxNzBkNjM3M2IxZWYy
NzY1NTY4ZGYyMTM5Yjk2MjhhYmM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9TYWZlQnJvd3NpbmdXYXJuaW5nQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvU2FmZUJyb3dzaW5nV2FybmluZ0NvY29hLm1tCkBAIC03MywxMiArNzMs
MTIgQEAgc3RhdGljIHZvaWQgcmVwbGFjZShOU011dGFibGVBdHRyaWJ1dGVkU3RyaW5nICpzdHJp
bmcsIE5TU3RyaW5nICp0b1JlcGxhY2UsIE5TU3QKIAogc3RhdGljIHZvaWQgYWRkTGlua0FuZFJl
cGxhY2UoTlNNdXRhYmxlQXR0cmlidXRlZFN0cmluZyAqc3RyaW5nLCBOU1N0cmluZyAqdG9SZXBs
YWNlLCBOU1N0cmluZyAqcmVwbGFjZVdpdGgsIE5TVVJMICpsaW5rVGFyZ2V0KQogewotICAgIE5T
TXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcgKnN0cmluZ1dpdGhMaW5rID0gW1tbTlNNdXRhYmxlQXR0
cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhTdHJpbmc6cmVwbGFjZVdpdGhdIGF1dG9yZWxl
YXNlXTsKKyAgICBhdXRvIHN0cmluZ1dpdGhMaW5rID0gYWRvcHROUyhbW05TTXV0YWJsZUF0dHJp
YnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoU3RyaW5nOnJlcGxhY2VXaXRoXSk7CiAgICAgW3N0
cmluZ1dpdGhMaW5rIGFkZEF0dHJpYnV0ZXM6QHsKICAgICAgICAgTlNMaW5rQXR0cmlidXRlTmFt
ZTogbGlua1RhcmdldCwKICAgICAgICAgTlNVbmRlcmxpbmVTdHlsZUF0dHJpYnV0ZU5hbWU6IEAx
CiAgICAgfSByYW5nZTpOU01ha2VSYW5nZSgwLCByZXBsYWNlV2l0aC5sZW5ndGgpXTsKLSAgICBb
c3RyaW5nIHJlcGxhY2VDaGFyYWN0ZXJzSW5SYW5nZTpbc3RyaW5nLnN0cmluZyByYW5nZU9mU3Ry
aW5nOnRvUmVwbGFjZV0gd2l0aEF0dHJpYnV0ZWRTdHJpbmc6c3RyaW5nV2l0aExpbmtdOworICAg
IFtzdHJpbmcgcmVwbGFjZUNoYXJhY3RlcnNJblJhbmdlOltzdHJpbmcuc3RyaW5nIHJhbmdlT2ZT
dHJpbmc6dG9SZXBsYWNlXSB3aXRoQXR0cmlidXRlZFN0cmluZzpzdHJpbmdXaXRoTGluay5nZXQo
KV07CiB9CiAKIHN0YXRpYyBOU1VSTCAqcmVwb3J0QW5FcnJvclVSTChjb25zdCBVUkwmIHVybCwg
U1NCU2VydmljZUxvb2t1cFJlc3VsdCAqcmVzdWx0KQpAQCAtMTIxLDI2ICsxMjEsMjYgQEAgc3Rh
dGljIE5TTXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcgKnNhZmVCcm93c2luZ0RldGFpbHNUZXh0KGNv
bnN0IFVSTCYgdXJsLCBTU0JTZXIKICAgICAgICAgTlNTdHJpbmcgKnJlcG9ydEFuRXJyb3IgPSBX
RUJfVUlfTlNTVFJJTkcoQCJyZXBvcnQgYW4gZXJyb3IiLCAiQWN0aW9uIGZyb20gc2FmZSBicm93
c2luZyB3YXJuaW5nIik7CiAgICAgICAgIE5TU3RyaW5nICp2aXNpdFVuc2FmZVdlYnNpdGUgPSBX
RUJfVUlfTlNTVFJJTkcoQCJ2aXNpdCB0aGlzIHVuc2FmZSB3ZWJzaXRlIiwgIkFjdGlvbiBmcm9t
IHNhZmUgYnJvd3Npbmcgd2FybmluZyIpOwogCi0gICAgICAgIE5TTXV0YWJsZUF0dHJpYnV0ZWRT
dHJpbmcgKmF0dHJpYnV0ZWRTdHJpbmcgPSBbW1tOU011dGFibGVBdHRyaWJ1dGVkU3RyaW5nIGFs
bG9jXSBpbml0V2l0aFN0cmluZzpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIiVAICVAXG5c
biVAIiwgcGhpc2hpbmdEZXNjcmlwdGlvbiwgbGVhcm5Nb3JlLCBwaGlzaGluZ0FjdGlvbnNdXSBh
dXRvcmVsZWFzZV07Ci0gICAgICAgIGFkZExpbmtBbmRSZXBsYWNlKGF0dHJpYnV0ZWRTdHJpbmcs
IGxlYXJuTW9yZSwgbGVhcm5Nb3JlLCBsZWFybk1vcmVVUkwocmVzdWx0KSk7Ci0gICAgICAgIGFk
ZExpbmtBbmRSZXBsYWNlKGF0dHJpYnV0ZWRTdHJpbmcsIEAiJXJlcG9ydC1hbi1lcnJvciUiLCBy
ZXBvcnRBbkVycm9yLCByZXBvcnRBbkVycm9yVVJMKHVybCwgcmVzdWx0KSk7Ci0gICAgICAgIGFk
ZExpbmtBbmRSZXBsYWNlKGF0dHJpYnV0ZWRTdHJpbmcsIEAiJWJ5cGFzcy1saW5rJSIsIHZpc2l0
VW5zYWZlV2Vic2l0ZSwgU2FmZUJyb3dzaW5nV2FybmluZzo6dmlzaXRVbnNhZmVXZWJzaXRlU2Vu
dGluZWwoKSk7Ci0gICAgICAgIHJldHVybiBhdHRyaWJ1dGVkU3RyaW5nOworICAgICAgICBhdXRv
IGF0dHJpYnV0ZWRTdHJpbmcgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXR0cmlidXRlZFN0cmluZyBh
bGxvY10gaW5pdFdpdGhTdHJpbmc6W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIlQCAlQFxu
XG4lQCIsIHBoaXNoaW5nRGVzY3JpcHRpb24sIGxlYXJuTW9yZSwgcGhpc2hpbmdBY3Rpb25zXV0p
OworICAgICAgICBhZGRMaW5rQW5kUmVwbGFjZShhdHRyaWJ1dGVkU3RyaW5nLmdldCgpLCBsZWFy
bk1vcmUsIGxlYXJuTW9yZSwgbGVhcm5Nb3JlVVJMKHJlc3VsdCkpOworICAgICAgICBhZGRMaW5r
QW5kUmVwbGFjZShhdHRyaWJ1dGVkU3RyaW5nLmdldCgpLCBAIiVyZXBvcnQtYW4tZXJyb3IlIiwg
cmVwb3J0QW5FcnJvciwgcmVwb3J0QW5FcnJvclVSTCh1cmwsIHJlc3VsdCkpOworICAgICAgICBh
ZGRMaW5rQW5kUmVwbGFjZShhdHRyaWJ1dGVkU3RyaW5nLmdldCgpLCBAIiVieXBhc3MtbGluayUi
LCB2aXNpdFVuc2FmZVdlYnNpdGUsIFNhZmVCcm93c2luZ1dhcm5pbmc6OnZpc2l0VW5zYWZlV2Vi
c2l0ZVNlbnRpbmVsKCkpOworICAgICAgICByZXR1cm4gYXR0cmlidXRlZFN0cmluZy5hdXRvcmVs
ZWFzZSgpOwogICAgIH0KIAogICAgIGF1dG8gbWFsd2FyZU9yVW53YW50ZWRTb2Z0d2FyZURldGFp
bHMgPSBbJl0gKE5TU3RyaW5nICpkZXNjcmlwdGlvbiwgTlNTdHJpbmcgKnN0YXR1c1N0cmluZ1Rv
UmVwbGFjZSwgYm9vbCBjb25maXJtTWFsd2FyZSkgewotICAgICAgICBOU011dGFibGVBdHRyaWJ1
dGVkU3RyaW5nICptYWx3YXJlRGVzY3JpcHRpb24gPSBbW1tOU011dGFibGVBdHRyaWJ1dGVkU3Ry
aW5nIGFsbG9jXSBpbml0V2l0aFN0cmluZzpkZXNjcmlwdGlvbl0gYXV0b3JlbGVhc2VdOwotICAg
ICAgICByZXBsYWNlKG1hbHdhcmVEZXNjcmlwdGlvbiwgQCIlc2FmZUJyb3dzaW5nUHJvdmlkZXIl
IiwgbG9jYWxpemVkUHJvdmlkZXIocmVzdWx0KSk7CisgICAgICAgIGF1dG8gbWFsd2FyZURlc2Ny
aXB0aW9uID0gYWRvcHROUyhbW05TTXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRX
aXRoU3RyaW5nOmRlc2NyaXB0aW9uXSk7CisgICAgICAgIHJlcGxhY2UobWFsd2FyZURlc2NyaXB0
aW9uLmdldCgpLCBAIiVzYWZlQnJvd3NpbmdQcm92aWRlciUiLCBsb2NhbGl6ZWRQcm92aWRlcihy
ZXN1bHQpKTsKICAgICAgICAgTlNNdXRhYmxlQXR0cmlidXRlZFN0cmluZyAqc3RhdHVzTGluayA9
IFtbW05TTXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoU3RyaW5nOldFQl9V
SV9OU1NUUklORyhAInRoZSBzdGF0dXMgb2Yg4oCcJXNpdGUl4oCdIiwgIlBhcnQgb2YgbWFsd2Fy
ZSBkZXNjcmlwdGlvbiIpXSBhdXRvcmVsZWFzZV07CiAgICAgICAgIHJlcGxhY2Uoc3RhdHVzTGlu
aywgQCIlc2l0ZSUiLCB1cmwuaG9zdCgpLnRvU3RyaW5nKCkpOwotICAgICAgICBhZGRMaW5rQW5k
UmVwbGFjZShtYWx3YXJlRGVzY3JpcHRpb24sIHN0YXR1c1N0cmluZ1RvUmVwbGFjZSwgc3RhdHVz
TGluay5zdHJpbmcsIG1hbHdhcmVEZXRhaWxzVVJMKHVybCwgcmVzdWx0KSk7CisgICAgICAgIGFk
ZExpbmtBbmRSZXBsYWNlKG1hbHdhcmVEZXNjcmlwdGlvbi5nZXQoKSwgc3RhdHVzU3RyaW5nVG9S
ZXBsYWNlLCBzdGF0dXNMaW5rLnN0cmluZywgbWFsd2FyZURldGFpbHNVUkwodXJsLCByZXN1bHQp
KTsKIAotICAgICAgICBOU011dGFibGVBdHRyaWJ1dGVkU3RyaW5nICppZllvdVVuZGVyc3RhbmQg
PSBbW1tOU011dGFibGVBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFN0cmluZzpXRUJf
VUlfTlNTVFJJTkcoQCJJZiB5b3UgdW5kZXJzdGFuZCB0aGUgcmlza3MgaW52b2x2ZWQsIHlvdSBj
YW4gJXZpc2l0LXRoaXMtdW5zYWZlLXNpdGUtbGluayUuIiwgIkFjdGlvbiBmcm9tIHNhZmUgYnJv
d3Npbmcgd2FybmluZyIpXSBhdXRvcmVsZWFzZV07Ci0gICAgICAgIGFkZExpbmtBbmRSZXBsYWNl
KGlmWW91VW5kZXJzdGFuZCwgQCIldmlzaXQtdGhpcy11bnNhZmUtc2l0ZS1saW5rJSIsIFdFQl9V
SV9OU1NUUklORyhAInZpc2l0IHRoaXMgdW5zYWZlIHdlYnNpdGUiLCAiQWN0aW9uIGZyb20gc2Fm
ZSBicm93c2luZyB3YXJuaW5nIiksIGNvbmZpcm1NYWx3YXJlID8gU2FmZUJyb3dzaW5nV2Fybmlu
Zzo6Y29uZmlybU1hbHdhcmVTZW50aW5lbCgpIDogU2FmZUJyb3dzaW5nV2FybmluZzo6dmlzaXRV
bnNhZmVXZWJzaXRlU2VudGluZWwoKSk7CisgICAgICAgIGF1dG8gaWZZb3VVbmRlcnN0YW5kID0g
YWRvcHROUyhbW05TTXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoU3RyaW5n
OldFQl9VSV9OU1NUUklORyhAIklmIHlvdSB1bmRlcnN0YW5kIHRoZSByaXNrcyBpbnZvbHZlZCwg
eW91IGNhbiAldmlzaXQtdGhpcy11bnNhZmUtc2l0ZS1saW5rJS4iLCAiQWN0aW9uIGZyb20gc2Fm
ZSBicm93c2luZyB3YXJuaW5nIildKTsKKyAgICAgICAgYWRkTGlua0FuZFJlcGxhY2UoaWZZb3VV
bmRlcnN0YW5kLmdldCgpLCBAIiV2aXNpdC10aGlzLXVuc2FmZS1zaXRlLWxpbmslIiwgV0VCX1VJ
X05TU1RSSU5HKEAidmlzaXQgdGhpcyB1bnNhZmUgd2Vic2l0ZSIsICJBY3Rpb24gZnJvbSBzYWZl
IGJyb3dzaW5nIHdhcm5pbmciKSwgY29uZmlybU1hbHdhcmUgPyBTYWZlQnJvd3NpbmdXYXJuaW5n
Ojpjb25maXJtTWFsd2FyZVNlbnRpbmVsKCkgOiBTYWZlQnJvd3NpbmdXYXJuaW5nOjp2aXNpdFVu
c2FmZVdlYnNpdGVTZW50aW5lbCgpKTsKIAotICAgICAgICBbbWFsd2FyZURlc2NyaXB0aW9uIGFw
cGVuZEF0dHJpYnV0ZWRTdHJpbmc6W1tbTlNNdXRhYmxlQXR0cmlidXRlZFN0cmluZyBhbGxvY10g
aW5pdFdpdGhTdHJpbmc6QCJcblxuIl0gYXV0b3JlbGVhc2VdXTsKLSAgICAgICAgW21hbHdhcmVE
ZXNjcmlwdGlvbiBhcHBlbmRBdHRyaWJ1dGVkU3RyaW5nOmlmWW91VW5kZXJzdGFuZF07Ci0gICAg
ICAgIHJldHVybiBtYWx3YXJlRGVzY3JpcHRpb247CisgICAgICAgIFttYWx3YXJlRGVzY3JpcHRp
b24gYXBwZW5kQXR0cmlidXRlZFN0cmluZzphZG9wdE5TKFtbTlNNdXRhYmxlQXR0cmlidXRlZFN0
cmluZyBhbGxvY10gaW5pdFdpdGhTdHJpbmc6QCJcblxuIl0pLmdldCgpXTsKKyAgICAgICAgW21h
bHdhcmVEZXNjcmlwdGlvbiBhcHBlbmRBdHRyaWJ1dGVkU3RyaW5nOmlmWW91VW5kZXJzdGFuZC5n
ZXQoKV07CisgICAgICAgIHJldHVybiBtYWx3YXJlRGVzY3JpcHRpb24uYXV0b3JlbGVhc2UoKTsK
ICAgICB9OwogCiAgICAgaWYgKHJlc3VsdC5pc01hbHdhcmUpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TeXN0ZW1QcmV2aWV3Q29udHJvbGxlckNvY29hLm1tIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU3lzdGVtUHJldmlld0NvbnRyb2xsZXJDb2Nv
YS5tbQppbmRleCAzNzA1YTQ3NWI3M2QyNTgwMTc0ZmQ2YmE0MTRlZTY0NzU4NTExZTQzLi5iZDRl
NmJmYjczMTg1MDc1OTVhYzRmODEwNWYwM2U3NTliNmQxZGE3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TeXN0ZW1QcmV2aWV3Q29udHJvbGxlckNvY29hLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1N5c3RlbVByZXZpZXdDb250cm9sbGVy
Q29jb2EubW0KQEAgLTIzNyw3ICsyMzcsNyBAQCAtIChVSUltYWdlICopcHJldmlld0NvbnRyb2xs
ZXI6KFFMUHJldmlld0NvbnRyb2xsZXIgKiljb250cm9sbGVyIHRyYW5zaXRpb25JbWFnZQogICAg
ICAgICB9CiAgICAgfQogCi0gICAgcmV0dXJuIFtbVUlJbWFnZSBuZXddIGF1dG9yZWxlYXNlXTsK
KyAgICByZXR1cm4gYWRvcHROUyhbVUlJbWFnZSBuZXddKS5hdXRvcmVsZWFzZSgpOwogfQogCiBA
ZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxz
Y3JlZW5NYW5hZ2VyUHJveHkubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9WaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkubW0KaW5kZXggNWM5ZjAzNTc3ZTEzMGI0OTE4ZDQ4M2Yw
YTQ1NjgzZTU0YjlkYTE1MC4uMzgxYmIxYjA0NzJkMTUzYjQ4YWFkMjhmNGMwMmI3ZGQyYjM5OTMx
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlclByb3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1Zp
ZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5tbQpAQCAtNjEsNyArNjEsNyBAQCArIChDbGFzcyls
YXllckNsYXNzIHsKICNlbHNlCiAtIChDQUxheWVyICopbWFrZUJhY2tpbmdMYXllcgogewotICAg
IHJldHVybiBbW1tDQUxheWVySG9zdCBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOworICAgIHJl
dHVybiBhZG9wdE5TKFtbQ0FMYXllckhvc3QgYWxsb2NdIGluaXRdKS5hdXRvcmVsZWFzZSgpOwog
fQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dL
Q29udGFjdFBpY2tlci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dLQ29udGFj
dFBpY2tlci5tbQppbmRleCBlZjM1ZGEyOTkyM2EwZGE2ODkwNmNkNDI1ZTAxMTZjN2ZlZTU5ZDIx
Li45MGQ3ZWE0ZDVhZmQ3MzM2MGMzNmVlNzVlOGRkYjk4ZGI4NDE4NDhlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XS0NvbnRhY3RQaWNrZXIubW0KKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV0tDb250YWN0UGlja2VyLm1tCkBAIC0yNjAsMTIg
KzI2MCwxMiBAQCAtIChOU0FycmF5PENOQ29udGFjdCo+ICopX2NvbnRhY3RzRnJvbUpTQ29udGFj
dHM6KE5TQXJyYXkgKilqc0NvbnRhY3RzCiAgICAgICAgIGlmICghW2pzQ29udGFjdCBpc0tpbmRP
ZkNsYXNzOltOU0RpY3Rpb25hcnkgY2xhc3NdXSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0g
ICAgICAgIENOTXV0YWJsZUNvbnRhY3QgKmNvbnRhY3QgPSBbW2FsbG9jQ05NdXRhYmxlQ29udGFj
dEluc3RhbmNlKCkgaW5pdF0gYXV0b3JlbGVhc2VdOworICAgICAgICBhdXRvIGNvbnRhY3QgPSBh
ZG9wdE5TKFthbGxvY0NOTXV0YWJsZUNvbnRhY3RJbnN0YW5jZSgpIGluaXRdKTsKIAogICAgICAg
ICBpZCBuYW1lcyA9IFsoTlNEaWN0aW9uYXJ5ICopanNDb250YWN0IG9iamVjdEZvcktleTpAIm5h
bWUiXTsKICAgICAgICAgaWYgKFtuYW1lcyBpc0tpbmRPZkNsYXNzOltOU0FycmF5IGNsYXNzXV0p
IHsKICAgICAgICAgICAgIGZvciAoTlNTdHJpbmcgKm5hbWUgaW4gW25hbWVzIGZpbHRlcmVkQXJy
YXlVc2luZ1ByZWRpY2F0ZTpzdHJpbmdWYWx1ZVByZWRpY2F0ZV0pIHsKLSAgICAgICAgICAgICAg
ICBjb250YWN0LmdpdmVuTmFtZSA9IG5hbWU7CisgICAgICAgICAgICAgICAgW2NvbnRhY3Qgc2V0
R2l2ZW5OYW1lOm5hbWVdOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQog
ICAgICAgICB9CkBAIC0yNzcsNyArMjc3LDcgQEAgLSAoTlNBcnJheTxDTkNvbnRhY3QqPiAqKV9j
b250YWN0c0Zyb21KU0NvbnRhY3RzOihOU0FycmF5ICopanNDb250YWN0cwogICAgICAgICAgICAg
ICAgIENOTGFiZWxlZFZhbHVlPE5TU3RyaW5nKj4gKmxhYmVsZWRWYWx1ZSA9IFtnZXRDTkxhYmVs
ZWRWYWx1ZUNsYXNzKCkgbGFiZWxlZFZhbHVlV2l0aExhYmVsOm5pbCB2YWx1ZTplbWFpbF07CiAg
ICAgICAgICAgICAgICAgW2VtYWlsQWRkcmVzc2VzIGFkZE9iamVjdDpsYWJlbGVkVmFsdWVdOwog
ICAgICAgICAgICAgfQotICAgICAgICAgICAgY29udGFjdC5lbWFpbEFkZHJlc3NlcyA9IGVtYWls
QWRkcmVzc2VzOworICAgICAgICAgICAgW2NvbnRhY3Qgc2V0RW1haWxBZGRyZXNzZXM6ZW1haWxB
ZGRyZXNzZXNdOwogICAgICAgICB9CiAKICAgICAgICAgaWQgcGhvbmVOdW1iZXJzID0gWyhOU0Rp
Y3Rpb25hcnkgKilqc0NvbnRhY3Qgb2JqZWN0Rm9yS2V5OkAidGVsIl07CkBAIC0yODgsMTAgKzI4
OCwxMCBAQCAtIChOU0FycmF5PENOQ29udGFjdCo+ICopX2NvbnRhY3RzRnJvbUpTQ29udGFjdHM6
KE5TQXJyYXkgKilqc0NvbnRhY3RzCiAgICAgICAgICAgICAgICAgQ05MYWJlbGVkVmFsdWU8Q05Q
aG9uZU51bWJlcio+ICpsYWJlbGVkVmFsdWUgPSBbZ2V0Q05MYWJlbGVkVmFsdWVDbGFzcygpIGxh
YmVsZWRWYWx1ZVdpdGhMYWJlbDpuaWwgdmFsdWU6Y25QaG9uZU51bWJlcl07CiAgICAgICAgICAg
ICAgICAgW251bWJlcnMgYWRkT2JqZWN0OmxhYmVsZWRWYWx1ZV07CiAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICBjb250YWN0LnBob25lTnVtYmVycyA9IG51bWJlcnM7CisgICAgICAgICAgICBb
Y29udGFjdCBzZXRQaG9uZU51bWJlcnM6bnVtYmVyc107CiAgICAgICAgIH0KIAotICAgICAgICBb
Y29udGFjdHMgYWRkT2JqZWN0OmNvbnRhY3RdOworICAgICAgICBbY29udGFjdHMgYWRkT2JqZWN0
OmNvbnRhY3QuYXV0b3JlbGVhc2UoKV07CiAgICAgfQogCiAgICAgcmV0dXJuIGNvbnRhY3RzOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV0tTYWZlQnJvd3NpbmdX
YXJuaW5nLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV0tTYWZlQnJvd3NpbmdX
YXJuaW5nLm1tCmluZGV4IDcyMTZjOTgxMDQwNDllZjAyYTU0Zjg2M2NhMzZlYzljZjc1ZTc0MmEu
LmY2YmMzYTQ2MGI1ODc4NjIzZmI3ZTlmMTA3YTcwMmU1N2Q1NTVjZjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dLU2FmZUJyb3dzaW5nV2FybmluZy5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XS1NhZmVCcm93c2luZ1dhcm5pbmcubW0K
QEAgLTIyMSwxMyArMjIxLDEzIEBAIHN0YXRpYyBCdXR0b25UeXBlICptYWtlQnV0dG9uKFdhcm5p
bmdJdGVtIGl0ZW0sIFdLU2FmZUJyb3dzaW5nV2FybmluZyAqd2FybmluZywKICAgICByZXR1cm4g
W05TQnV0dG9uIGJ1dHRvbldpdGhUaXRsZTp0aXRsZSB0YXJnZXQ6d2FybmluZyBhY3Rpb246YWN0
aW9uXTsKICNlbHNlCiAgICAgVUlCdXR0b24gKmJ1dHRvbiA9IFtVSUJ1dHRvbiBidXR0b25XaXRo
VHlwZTpVSUJ1dHRvblR5cGVTeXN0ZW1dOwotICAgIE5TQXR0cmlidXRlZFN0cmluZyAqYXR0cmli
dXRlZFRpdGxlID0gW1tbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFN0cmluZzp0
aXRsZSBhdHRyaWJ1dGVzOkB7CisgICAgYXV0byBhdHRyaWJ1dGVkVGl0bGUgPSBhZG9wdE5TKFtb
TlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFN0cmluZzp0aXRsZSBhdHRyaWJ1dGVz
OkB7CiAgICAgICAgIE5TVW5kZXJsaW5lU3R5bGVBdHRyaWJ1dGVOYW1lOkAoTlNVbmRlcmxpbmVT
dHlsZVNpbmdsZSksCiAgICAgICAgIE5TVW5kZXJsaW5lQ29sb3JBdHRyaWJ1dGVOYW1lOltVSUNv
bG9yIHdoaXRlQ29sb3JdLAogICAgICAgICBOU0ZvcmVncm91bmRDb2xvckF0dHJpYnV0ZU5hbWU6
Y29sb3JGb3JJdGVtKGl0ZW0sIHdhcm5pbmcpLAogICAgICAgICBOU0ZvbnRBdHRyaWJ1dGVOYW1l
OmZvbnRPZlNpemUoV2FybmluZ1RleHRTaXplOjpCb2R5KQotICAgIH1dIGF1dG9yZWxlYXNlXTsK
LSAgICBbYnV0dG9uIHNldEF0dHJpYnV0ZWRUaXRsZTphdHRyaWJ1dGVkVGl0bGUgZm9yU3RhdGU6
VUlDb250cm9sU3RhdGVOb3JtYWxdOworICAgIH1dKTsKKyAgICBbYnV0dG9uIHNldEF0dHJpYnV0
ZWRUaXRsZTphdHRyaWJ1dGVkVGl0bGUuZ2V0KCkgZm9yU3RhdGU6VUlDb250cm9sU3RhdGVOb3Jt
YWxdOwogICAgIFtidXR0b24gYWRkVGFyZ2V0Ondhcm5pbmcgYWN0aW9uOmFjdGlvbiBmb3JDb250
cm9sRXZlbnRzOlVJQ29udHJvbEV2ZW50VG91Y2hVcEluc2lkZV07CiAgICAgcmV0dXJuIGJ1dHRv
bjsKICNlbmRpZgpAQCAtMjQ0LDE2ICsyNDQsMTYgQEAgc3RhdGljIENHU2l6ZSBidXR0b25TaXpl
KEJ1dHRvblR5cGUgKmJ1dHRvbikKIH0KICNlbmRpZgogCi1zdGF0aWMgVmlld1R5cGUgKm1ha2VM
YWJlbChOU0F0dHJpYnV0ZWRTdHJpbmcgKmF0dHJpYnV0ZWRTdHJpbmcpCitzdGF0aWMgUmV0YWlu
UHRyPFZpZXdUeXBlPiBtYWtlTGFiZWwoTlNBdHRyaWJ1dGVkU3RyaW5nICphdHRyaWJ1dGVkU3Ry
aW5nKQogewogI2lmIFBMQVRGT1JNKE1BQykKICAgICByZXR1cm4gW05TVGV4dEZpZWxkIGxhYmVs
V2l0aEF0dHJpYnV0ZWRTdHJpbmc6YXR0cmlidXRlZFN0cmluZ107CiAjZWxzZQotICAgIGF1dG8g
bGFiZWwgPSBbW1VJTGFiZWwgbmV3XSBhdXRvcmVsZWFzZV07Ci0gICAgbGFiZWwuYXR0cmlidXRl
ZFRleHQgPSBhdHRyaWJ1dGVkU3RyaW5nOwotICAgIGxhYmVsLmxpbmVCcmVha01vZGUgPSBOU0xp
bmVCcmVha0J5V29yZFdyYXBwaW5nOwotICAgIGxhYmVsLm51bWJlck9mTGluZXMgPSAwOwotICAg
IGxhYmVsLmFjY2Vzc2liaWxpdHlUcmFpdHMgPSBVSUFjY2Vzc2liaWxpdHlUcmFpdEhlYWRlcjsK
KyAgICBhdXRvIGxhYmVsID0gYWRvcHROUyhbVUlMYWJlbCBuZXddKTsKKyAgICBbbGFiZWwgc2V0
QXR0cmlidXRlZFRleHQ6YXR0cmlidXRlZFN0cmluZ107CisgICAgW2xhYmVsIHNldExpbmVCcmVh
a01vZGU6TlNMaW5lQnJlYWtCeVdvcmRXcmFwcGluZ107CisgICAgW2xhYmVsIHNldE51bWJlck9m
TGluZXM6MF07CisgICAgW2xhYmVsIHNldEFjY2Vzc2liaWxpdHlUcmFpdHM6VUlBY2Nlc3NpYmls
aXR5VHJhaXRIZWFkZXJdOwogICAgIHJldHVybiBsYWJlbDsKICNlbmRpZgogfQpAQCAtMzE3LDgz
ICszMTcsODMgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRnJhbWU6KFJlY3RUeXBlKWZyYW1l
IHNhZmVCcm93c2luZ1dhcm5pbmc6KGNvbnN0IFdlYktpdDoKIAogLSAodm9pZClhZGRDb250ZW50
CiB7Ci0gICAgYXV0byBleGNsYW1hdGlvblBvaW50ID0gW1tXS1NhZmVCcm93c2luZ0V4Y2xhbWF0
aW9uUG9pbnQgbmV3XSBhdXRvcmVsZWFzZV07Ci0gICAgYXV0byB0aXRsZSA9IG1ha2VMYWJlbChb
W1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoU3RyaW5nOl93YXJuaW5nLT50aXRs
ZSgpIGF0dHJpYnV0ZXM6QHsKKyAgICBhdXRvIGV4Y2xhbWF0aW9uUG9pbnQgPSBhZG9wdE5TKFtX
S1NhZmVCcm93c2luZ0V4Y2xhbWF0aW9uUG9pbnQgbmV3XSk7CisgICAgYXV0byB0aXRsZSA9IG1h
a2VMYWJlbChhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFN0cmlu
Zzpfd2FybmluZy0+dGl0bGUoKSBhdHRyaWJ1dGVzOkB7CiAgICAgICAgIE5TRm9udEF0dHJpYnV0
ZU5hbWU6Zm9udE9mU2l6ZShXYXJuaW5nVGV4dFNpemU6OlRpdGxlKSwKICAgICAgICAgTlNGb3Jl
Z3JvdW5kQ29sb3JBdHRyaWJ1dGVOYW1lOmNvbG9yRm9ySXRlbShXYXJuaW5nSXRlbTo6VGl0bGVU
ZXh0LCBzZWxmKQogI2lmIFBMQVRGT1JNKFdBVENIT1MpCiAgICAgICAgICwgTlNIeXBoZW5hdGlv
bkZhY3RvckRvY3VtZW50QXR0cmlidXRlOkAxCiAjZW5kaWYKLSAgICB9XSBhdXRvcmVsZWFzZV0p
OwotICAgIGF1dG8gd2FybmluZyA9IG1ha2VMYWJlbChbW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxs
b2NdIGluaXRXaXRoU3RyaW5nOl93YXJuaW5nLT53YXJuaW5nKCkgYXR0cmlidXRlczpAeworICAg
IH1dKS5nZXQoKSk7CisgICAgYXV0byB3YXJuaW5nID0gbWFrZUxhYmVsKGFkb3B0TlMoW1tOU0F0
dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoU3RyaW5nOl93YXJuaW5nLT53YXJuaW5nKCkg
YXR0cmlidXRlczpAewogICAgICAgICBOU0ZvbnRBdHRyaWJ1dGVOYW1lOmZvbnRPZlNpemUoV2Fy
bmluZ1RleHRTaXplOjpCb2R5KSwKICAgICAgICAgTlNGb3JlZ3JvdW5kQ29sb3JBdHRyaWJ1dGVO
YW1lOmNvbG9yRm9ySXRlbShXYXJuaW5nSXRlbTo6TWVzc2FnZVRleHQsIHNlbGYpCiAjaWYgUExB
VEZPUk0oV0FUQ0hPUykKICAgICAgICAgLCBOU0h5cGhlbmF0aW9uRmFjdG9yRG9jdW1lbnRBdHRy
aWJ1dGU6QDEKICNlbmRpZgotICAgIH1dIGF1dG9yZWxlYXNlXSk7CisgICAgfV0pLmdldCgpKTsK
ICAgICBhdXRvIHNob3dEZXRhaWxzID0gbWFrZUJ1dHRvbihXYXJuaW5nSXRlbTo6U2hvd0RldGFp
bHNCdXR0b24sIHNlbGYsIEBzZWxlY3RvcihzaG93RGV0YWlsc0NsaWNrZWQpKTsKICAgICBhdXRv
IGdvQmFjayA9IG1ha2VCdXR0b24oV2FybmluZ0l0ZW06OkdvQmFja0J1dHRvbiwgc2VsZiwgQHNl
bGVjdG9yKGdvQmFja0NsaWNrZWQpKTsKLSAgICBhdXRvIGJveCA9IFtbV0tTYWZlQnJvd3NpbmdC
b3ggbmV3XSBhdXRvcmVsZWFzZV07Ci0gICAgX2JveCA9IGJveDsKKyAgICBhdXRvIGJveCA9IGFk
b3B0TlMoW1dLU2FmZUJyb3dzaW5nQm94IG5ld10pOworICAgIF9ib3ggPSBib3guZ2V0KCk7CiAg
ICAgW2JveCBzZXRTYWZlQnJvd3NpbmdCYWNrZ3JvdW5kQ29sb3I6Y29sb3JGb3JJdGVtKFdhcm5p
bmdJdGVtOjpCb3hCYWNrZ3JvdW5kLCBzZWxmKV07Ci0gICAgYm94LmxheWVyLmNvcm5lclJhZGl1
cyA9IGJveENvcm5lclJhZGl1czsKKyAgICBbYm94IGxheWVyXS5jb3JuZXJSYWRpdXMgPSBib3hD
b3JuZXJSYWRpdXM7CiAKLSAgICBmb3IgKFZpZXdUeXBlICp2aWV3IGluIEBbZXhjbGFtYXRpb25Q
b2ludCwgdGl0bGUsIHdhcm5pbmcsIGdvQmFjaywgc2hvd0RldGFpbHNdKSB7CisgICAgZm9yIChW
aWV3VHlwZSAqdmlldyBpbiBAW2V4Y2xhbWF0aW9uUG9pbnQuZ2V0KCksIHRpdGxlLmdldCgpLCB3
YXJuaW5nLmdldCgpLCBnb0JhY2ssIHNob3dEZXRhaWxzXSkgewogICAgICAgICB2aWV3LnRyYW5z
bGF0ZXNBdXRvcmVzaXppbmdNYXNrSW50b0NvbnN0cmFpbnRzID0gTk87CiAgICAgICAgIFtib3gg
YWRkU3Vidmlldzp2aWV3XTsKICAgICB9Ci0gICAgYm94LnRyYW5zbGF0ZXNBdXRvcmVzaXppbmdN
YXNrSW50b0NvbnN0cmFpbnRzID0gTk87Ci0gICAgW3NlbGYgYWRkU3Vidmlldzpib3hdOworICAg
IFtib3ggc2V0VHJhbnNsYXRlc0F1dG9yZXNpemluZ01hc2tJbnRvQ29uc3RyYWludHM6Tk9dOwor
ICAgIFtzZWxmIGFkZFN1YnZpZXc6Ym94LmdldCgpXTsKIAogI2lmIFBMQVRGT1JNKFdBVENIT1Mp
CiAgICAgW05TTGF5b3V0Q29uc3RyYWludCBhY3RpdmF0ZUNvbnN0cmFpbnRzOkBbCi0gICAgICAg
IFtbYm94LmxlYWRpbmdBbmNob3IgYW5jaG9yV2l0aE9mZnNldFRvQW5jaG9yOmV4Y2xhbWF0aW9u
UG9pbnQubGVhZGluZ0FuY2hvcl0gY29uc3RyYWludEVxdWFsVG9BbmNob3I6W2V4Y2xhbWF0aW9u
UG9pbnQudHJhaWxpbmdBbmNob3IgYW5jaG9yV2l0aE9mZnNldFRvQW5jaG9yOmJveC50cmFpbGlu
Z0FuY2hvcl1dLAotICAgICAgICBbW2JveC5sZWFkaW5nQW5jaG9yIGFuY2hvcldpdGhPZmZzZXRU
b0FuY2hvcjp0aXRsZS5sZWFkaW5nQW5jaG9yXSBjb25zdHJhaW50RXF1YWxUb0NvbnN0YW50Om1h
cmdpblNpemVdLAotICAgICAgICBbW3RpdGxlLmJvdHRvbUFuY2hvciBhbmNob3JXaXRoT2Zmc2V0
VG9BbmNob3I6d2FybmluZy50b3BBbmNob3JdIGNvbnN0cmFpbnRFcXVhbFRvQ29uc3RhbnQ6bWFy
Z2luU2l6ZV0sCi0gICAgICAgIFtbZXhjbGFtYXRpb25Qb2ludC5ib3R0b21BbmNob3IgYW5jaG9y
V2l0aE9mZnNldFRvQW5jaG9yOnRpdGxlLnRvcEFuY2hvcl0gY29uc3RyYWludEVxdWFsVG9Db25z
dGFudDptYXJnaW5TaXplXSwKLSAgICAgICAgW1tib3gudG9wQW5jaG9yIGFuY2hvcldpdGhPZmZz
ZXRUb0FuY2hvcjpleGNsYW1hdGlvblBvaW50LnRvcEFuY2hvcl0gY29uc3RyYWludEVxdWFsVG9D
b25zdGFudDptYXJnaW5TaXplICsgc2VsZi5mcmFtZS5zaXplLmhlaWdodCAvIDJdLAotICAgICAg
ICBbW3NlbGYudG9wQW5jaG9yIGFuY2hvcldpdGhPZmZzZXRUb0FuY2hvcjpib3gudG9wQW5jaG9y
XSBjb25zdHJhaW50RXF1YWxUb0FuY2hvcjpbYm94LmJvdHRvbUFuY2hvciBhbmNob3JXaXRoT2Zm
c2V0VG9BbmNob3I6c2VsZi5ib3R0b21BbmNob3JdIG11bHRpcGxpZXI6MC4yXSwKKyAgICAgICAg
W1tbYm94IGxlYWRpbmdBbmNob3JdIGFuY2hvcldpdGhPZmZzZXRUb0FuY2hvcjpbZXhjbGFtYXRp
b25Qb2ludCBsZWFkaW5nQW5jaG9yXV0gY29uc3RyYWludEVxdWFsVG9BbmNob3I6W1tleGNsYW1h
dGlvblBvaW50IHRyYWlsaW5nQW5jaG9yXSBhbmNob3JXaXRoT2Zmc2V0VG9BbmNob3I6W2JveCB0
cmFpbGluZ0FuY2hvcl1dXSwKKyAgICAgICAgW1tbYm94IGxlYWRpbmdBbmNob3JdIGFuY2hvcldp
dGhPZmZzZXRUb0FuY2hvcjpbdGl0bGUgbGVhZGluZ0FuY2hvcl1dIGNvbnN0cmFpbnRFcXVhbFRv
Q29uc3RhbnQ6bWFyZ2luU2l6ZV0sCisgICAgICAgIFtbW3RpdGxlIGJvdHRvbUFuY2hvcl0gYW5j
aG9yV2l0aE9mZnNldFRvQW5jaG9yOlt3YXJuaW5nIHRvcEFuY2hvcl1dIGNvbnN0cmFpbnRFcXVh
bFRvQ29uc3RhbnQ6bWFyZ2luU2l6ZV0sCisgICAgICAgIFtbW2V4Y2xhbWF0aW9uUG9pbnQgYm90
dG9tQW5jaG9yXSBhbmNob3JXaXRoT2Zmc2V0VG9BbmNob3I6W3RpdGxlIHRvcEFuY2hvcl1dIGNv
bnN0cmFpbnRFcXVhbFRvQ29uc3RhbnQ6bWFyZ2luU2l6ZV0sCisgICAgICAgIFtbW2JveCB0b3BB
bmNob3JdIGFuY2hvcldpdGhPZmZzZXRUb0FuY2hvcjpbZXhjbGFtYXRpb25Qb2ludCB0b3BBbmNo
b3JdXSBjb25zdHJhaW50RXF1YWxUb0NvbnN0YW50Om1hcmdpblNpemUgKyBzZWxmLmZyYW1lLnNp
emUuaGVpZ2h0IC8gMl0sCisgICAgICAgIFtbc2VsZi50b3BBbmNob3IgYW5jaG9yV2l0aE9mZnNl
dFRvQW5jaG9yOltib3ggdG9wQW5jaG9yXV0gY29uc3RyYWludEVxdWFsVG9BbmNob3I6W1tib3gg
Ym90dG9tQW5jaG9yXSBhbmNob3JXaXRoT2Zmc2V0VG9BbmNob3I6c2VsZi5ib3R0b21BbmNob3Jd
IG11bHRpcGxpZXI6MC4yXSwKICAgICBdXTsKICNlbGlmIEhBVkUoU0FGRV9CUk9XU0lORykKICAg
ICBbTlNMYXlvdXRDb25zdHJhaW50IGFjdGl2YXRlQ29uc3RyYWludHM6QFsKLSAgICAgICAgW1ti
b3gubGVhZGluZ0FuY2hvciBhbmNob3JXaXRoT2Zmc2V0VG9BbmNob3I6ZXhjbGFtYXRpb25Qb2lu
dC5sZWFkaW5nQW5jaG9yXSBjb25zdHJhaW50RXF1YWxUb0NvbnN0YW50Om1hcmdpblNpemVdLAot
ICAgICAgICBbW2JveC5sZWFkaW5nQW5jaG9yIGFuY2hvcldpdGhPZmZzZXRUb0FuY2hvcjp0aXRs
ZS5sZWFkaW5nQW5jaG9yXSBjb25zdHJhaW50RXF1YWxUb0NvbnN0YW50Om1hcmdpblNpemUgKiAx
LjUgKyBleGNsYW1hdGlvblBvaW50U2l6ZV0sCi0gICAgICAgIFtbdGl0bGUudG9wQW5jaG9yIGFu
Y2hvcldpdGhPZmZzZXRUb0FuY2hvcjpleGNsYW1hdGlvblBvaW50LnRvcEFuY2hvcl0gY29uc3Ry
YWludEVxdWFsVG9BbmNob3I6W2V4Y2xhbWF0aW9uUG9pbnQuYm90dG9tQW5jaG9yIGFuY2hvcldp
dGhPZmZzZXRUb0FuY2hvcjp0aXRsZS5ib3R0b21BbmNob3JdXSwKLSAgICAgICAgW1t0aXRsZS5i
b3R0b21BbmNob3IgYW5jaG9yV2l0aE9mZnNldFRvQW5jaG9yOndhcm5pbmcudG9wQW5jaG9yXSBj
b25zdHJhaW50RXF1YWxUb0NvbnN0YW50Om1hcmdpblNpemVdLAotICAgICAgICBbW2JveC50b3BB
bmNob3IgYW5jaG9yV2l0aE9mZnNldFRvQW5jaG9yOnRpdGxlLnRvcEFuY2hvcl0gY29uc3RyYWlu
dEVxdWFsVG9Db25zdGFudDptYXJnaW5TaXplXSwKLSAgICAgICAgW1tzZWxmLnRvcEFuY2hvciBh
bmNob3JXaXRoT2Zmc2V0VG9BbmNob3I6Ym94LnRvcEFuY2hvcl0gY29uc3RyYWludEVxdWFsVG9B
bmNob3I6W2JveC5ib3R0b21BbmNob3IgYW5jaG9yV2l0aE9mZnNldFRvQW5jaG9yOnNlbGYuYm90
dG9tQW5jaG9yXSBtdWx0aXBsaWVyOjAuNV0sCisgICAgICAgIFtbW2JveCBsZWFkaW5nQW5jaG9y
XSBhbmNob3JXaXRoT2Zmc2V0VG9BbmNob3I6W2V4Y2xhbWF0aW9uUG9pbnQgbGVhZGluZ0FuY2hv
cl1dIGNvbnN0cmFpbnRFcXVhbFRvQ29uc3RhbnQ6bWFyZ2luU2l6ZV0sCisgICAgICAgIFtbW2Jv
eCBsZWFkaW5nQW5jaG9yXSBhbmNob3JXaXRoT2Zmc2V0VG9BbmNob3I6W3RpdGxlIGxlYWRpbmdB
bmNob3JdXSBjb25zdHJhaW50RXF1YWxUb0NvbnN0YW50Om1hcmdpblNpemUgKiAxLjUgKyBleGNs
YW1hdGlvblBvaW50U2l6ZV0sCisgICAgICAgIFtbW3RpdGxlIHRvcEFuY2hvcl0gYW5jaG9yV2l0
aE9mZnNldFRvQW5jaG9yOltleGNsYW1hdGlvblBvaW50IHRvcEFuY2hvcl1dIGNvbnN0cmFpbnRF
cXVhbFRvQW5jaG9yOltbZXhjbGFtYXRpb25Qb2ludCBib3R0b21BbmNob3JdIGFuY2hvcldpdGhP
ZmZzZXRUb0FuY2hvcjpbdGl0bGUgYm90dG9tQW5jaG9yXV1dLAorICAgICAgICBbW1t0aXRsZSBi
b3R0b21BbmNob3JdIGFuY2hvcldpdGhPZmZzZXRUb0FuY2hvcjpbd2FybmluZyB0b3BBbmNob3Jd
XSBjb25zdHJhaW50RXF1YWxUb0NvbnN0YW50Om1hcmdpblNpemVdLAorICAgICAgICBbW1tib3gg
dG9wQW5jaG9yXSBhbmNob3JXaXRoT2Zmc2V0VG9BbmNob3I6W3RpdGxlIHRvcEFuY2hvcl1dIGNv
bnN0cmFpbnRFcXVhbFRvQ29uc3RhbnQ6bWFyZ2luU2l6ZV0sCisgICAgICAgIFtbc2VsZi50b3BB
bmNob3IgYW5jaG9yV2l0aE9mZnNldFRvQW5jaG9yOltib3ggdG9wQW5jaG9yXV0gY29uc3RyYWlu
dEVxdWFsVG9BbmNob3I6W1tib3ggYm90dG9tQW5jaG9yXSBhbmNob3JXaXRoT2Zmc2V0VG9BbmNo
b3I6c2VsZi5ib3R0b21BbmNob3JdIG11bHRpcGxpZXI6MC41XSwKICAgICBdXTsKICNlbmRpZgog
CiAjaWYgSEFWRShTQUZFX0JST1dTSU5HKQogICAgIFtOU0xheW91dENvbnN0cmFpbnQgYWN0aXZh
dGVDb25zdHJhaW50czpAWwotICAgICAgICBbW3NlbGYubGVmdEFuY2hvciBhbmNob3JXaXRoT2Zm
c2V0VG9BbmNob3I6Ym94LmxlZnRBbmNob3JdIGNvbnN0cmFpbnRFcXVhbFRvQW5jaG9yOltib3gu
cmlnaHRBbmNob3IgYW5jaG9yV2l0aE9mZnNldFRvQW5jaG9yOnNlbGYucmlnaHRBbmNob3JdXSwK
KyAgICAgICAgW1tzZWxmLmxlZnRBbmNob3IgYW5jaG9yV2l0aE9mZnNldFRvQW5jaG9yOltib3gg
bGVmdEFuY2hvcl1dIGNvbnN0cmFpbnRFcXVhbFRvQW5jaG9yOltbYm94IHJpZ2h0QW5jaG9yXSBh
bmNob3JXaXRoT2Zmc2V0VG9BbmNob3I6c2VsZi5yaWdodEFuY2hvcl1dLAogCi0gICAgICAgIFti
b3gud2lkdGhBbmNob3IgY29uc3RyYWludExlc3NUaGFuT3JFcXVhbFRvQ29uc3RhbnQ6bWF4V2lk
dGhdLAotICAgICAgICBbYm94LndpZHRoQW5jaG9yIGNvbnN0cmFpbnRMZXNzVGhhbk9yRXF1YWxU
b0FuY2hvcjpzZWxmLndpZHRoQW5jaG9yXSwKKyAgICAgICAgW1tib3ggd2lkdGhBbmNob3JdIGNv
bnN0cmFpbnRMZXNzVGhhbk9yRXF1YWxUb0NvbnN0YW50Om1heFdpZHRoXSwKKyAgICAgICAgW1ti
b3ggd2lkdGhBbmNob3JdIGNvbnN0cmFpbnRMZXNzVGhhbk9yRXF1YWxUb0FuY2hvcjpzZWxmLndp
ZHRoQW5jaG9yXSwKIAotICAgICAgICBbW2JveC5sZWFkaW5nQW5jaG9yIGFuY2hvcldpdGhPZmZz
ZXRUb0FuY2hvcjp3YXJuaW5nLmxlYWRpbmdBbmNob3JdIGNvbnN0cmFpbnRFcXVhbFRvQ29uc3Rh
bnQ6bWFyZ2luU2l6ZV0sCisgICAgICAgIFtbW2JveCBsZWFkaW5nQW5jaG9yXSBhbmNob3JXaXRo
T2Zmc2V0VG9BbmNob3I6W3dhcm5pbmcgbGVhZGluZ0FuY2hvcl1dIGNvbnN0cmFpbnRFcXVhbFRv
Q29uc3RhbnQ6bWFyZ2luU2l6ZV0sCiAKLSAgICAgICAgW1t0aXRsZS50cmFpbGluZ0FuY2hvciBh
bmNob3JXaXRoT2Zmc2V0VG9BbmNob3I6Ym94LnRyYWlsaW5nQW5jaG9yXSBjb25zdHJhaW50R3Jl
YXRlclRoYW5PckVxdWFsVG9Db25zdGFudDptYXJnaW5TaXplXSwKLSAgICAgICAgW1t3YXJuaW5n
LnRyYWlsaW5nQW5jaG9yIGFuY2hvcldpdGhPZmZzZXRUb0FuY2hvcjpib3gudHJhaWxpbmdBbmNo
b3JdIGNvbnN0cmFpbnRHcmVhdGVyVGhhbk9yRXF1YWxUb0NvbnN0YW50Om1hcmdpblNpemVdLAot
ICAgICAgICBbW2dvQmFjay50cmFpbGluZ0FuY2hvciBhbmNob3JXaXRoT2Zmc2V0VG9BbmNob3I6
Ym94LnRyYWlsaW5nQW5jaG9yXSBjb25zdHJhaW50RXF1YWxUb0NvbnN0YW50Om1hcmdpblNpemVd
LAorICAgICAgICBbW1t0aXRsZSB0cmFpbGluZ0FuY2hvcl0gYW5jaG9yV2l0aE9mZnNldFRvQW5j
aG9yOltib3ggdHJhaWxpbmdBbmNob3JdXSBjb25zdHJhaW50R3JlYXRlclRoYW5PckVxdWFsVG9D
b25zdGFudDptYXJnaW5TaXplXSwKKyAgICAgICAgW1tbd2FybmluZyB0cmFpbGluZ0FuY2hvcl0g
YW5jaG9yV2l0aE9mZnNldFRvQW5jaG9yOltib3ggdHJhaWxpbmdBbmNob3JdXSBjb25zdHJhaW50
R3JlYXRlclRoYW5PckVxdWFsVG9Db25zdGFudDptYXJnaW5TaXplXSwKKyAgICAgICAgW1tnb0Jh
Y2sudHJhaWxpbmdBbmNob3IgYW5jaG9yV2l0aE9mZnNldFRvQW5jaG9yOltib3ggdHJhaWxpbmdB
bmNob3JdXSBjb25zdHJhaW50RXF1YWxUb0NvbnN0YW50Om1hcmdpblNpemVdLAogCi0gICAgICAg
IFtbd2FybmluZy5ib3R0b21BbmNob3IgYW5jaG9yV2l0aE9mZnNldFRvQW5jaG9yOmdvQmFjay50
b3BBbmNob3JdIGNvbnN0cmFpbnRFcXVhbFRvQ29uc3RhbnQ6bWFyZ2luU2l6ZV0sCisgICAgICAg
IFtbW3dhcm5pbmcgYm90dG9tQW5jaG9yXSBhbmNob3JXaXRoT2Zmc2V0VG9BbmNob3I6Z29CYWNr
LnRvcEFuY2hvcl0gY29uc3RyYWludEVxdWFsVG9Db25zdGFudDptYXJnaW5TaXplXSwKICAgICBd
XTsKICAgICAKICAgICBib29sIG5lZWRzVmVydGljYWxCdXR0b25MYXlvdXQgPSBidXR0b25TaXpl
KHNob3dEZXRhaWxzKS53aWR0aCArIGJ1dHRvblNpemUoZ29CYWNrKS53aWR0aCArIDMgKiBtYXJn
aW5TaXplID4gc2VsZi5mcmFtZS5zaXplLndpZHRoOwogICAgIGlmIChuZWVkc1ZlcnRpY2FsQnV0
dG9uTGF5b3V0KSB7CiAgICAgICAgIFtOU0xheW91dENvbnN0cmFpbnQgYWN0aXZhdGVDb25zdHJh
aW50czpAWwotICAgICAgICAgICAgW1tzaG93RGV0YWlscy50cmFpbGluZ0FuY2hvciBhbmNob3JX
aXRoT2Zmc2V0VG9BbmNob3I6Ym94LnRyYWlsaW5nQW5jaG9yXSBjb25zdHJhaW50RXF1YWxUb0Nv
bnN0YW50Om1hcmdpblNpemVdLAorICAgICAgICAgICAgW1tzaG93RGV0YWlscy50cmFpbGluZ0Fu
Y2hvciBhbmNob3JXaXRoT2Zmc2V0VG9BbmNob3I6W2JveCB0cmFpbGluZ0FuY2hvcl1dIGNvbnN0
cmFpbnRFcXVhbFRvQ29uc3RhbnQ6bWFyZ2luU2l6ZV0sCiAgICAgICAgICAgICBbW2dvQmFjay5i
b3R0b21BbmNob3IgYW5jaG9yV2l0aE9mZnNldFRvQW5jaG9yOnNob3dEZXRhaWxzLnRvcEFuY2hv
cl0gY29uc3RyYWludEVxdWFsVG9Db25zdGFudDptYXJnaW5TaXplXSwKLSAgICAgICAgICAgIFtb
Z29CYWNrLmJvdHRvbUFuY2hvciBhbmNob3JXaXRoT2Zmc2V0VG9BbmNob3I6Ym94LmJvdHRvbUFu
Y2hvcl0gY29uc3RyYWludEVxdWFsVG9Db25zdGFudDptYXJnaW5TaXplICogMiArIGJ1dHRvblNp
emUoc2hvd0RldGFpbHMpLmhlaWdodF0sCisgICAgICAgICAgICBbW2dvQmFjay5ib3R0b21BbmNo
b3IgYW5jaG9yV2l0aE9mZnNldFRvQW5jaG9yOltib3ggYm90dG9tQW5jaG9yXV0gY29uc3RyYWlu
dEVxdWFsVG9Db25zdGFudDptYXJnaW5TaXplICogMiArIGJ1dHRvblNpemUoc2hvd0RldGFpbHMp
LmhlaWdodF0sCiAgICAgICAgIF1dOwogICAgIH0gZWxzZSB7CiAgICAgICAgIFtOU0xheW91dENv
bnN0cmFpbnQgYWN0aXZhdGVDb25zdHJhaW50czpAWwogICAgICAgICAgICAgW1tzaG93RGV0YWls
cy50cmFpbGluZ0FuY2hvciBhbmNob3JXaXRoT2Zmc2V0VG9BbmNob3I6Z29CYWNrLmxlYWRpbmdB
bmNob3JdIGNvbnN0cmFpbnRFcXVhbFRvQ29uc3RhbnQ6bWFyZ2luU2l6ZV0sCiAgICAgICAgICAg
ICBbZ29CYWNrLnRvcEFuY2hvciBjb25zdHJhaW50RXF1YWxUb0FuY2hvcjpzaG93RGV0YWlscy50
b3BBbmNob3JdLAotICAgICAgICAgICAgW1tnb0JhY2suYm90dG9tQW5jaG9yIGFuY2hvcldpdGhP
ZmZzZXRUb0FuY2hvcjpib3guYm90dG9tQW5jaG9yXSBjb25zdHJhaW50RXF1YWxUb0NvbnN0YW50
Om1hcmdpblNpemVdLAorICAgICAgICAgICAgW1tnb0JhY2suYm90dG9tQW5jaG9yIGFuY2hvcldp
dGhPZmZzZXRUb0FuY2hvcjpbYm94IGJvdHRvbUFuY2hvcl1dIGNvbnN0cmFpbnRFcXVhbFRvQ29u
c3RhbnQ6bWFyZ2luU2l6ZV0sCiAgICAgICAgIF1dOwogICAgIH0KICNpZiAhUExBVEZPUk0oTUFD
KQpAQCAtNDEzLDQ3ICs0MTMsNDcgQEAgLSAodm9pZClzaG93RGV0YWlsc0NsaWNrZWQKICAgICBC
dXR0b25UeXBlICpzaG93RGV0YWlscyA9IGJveC5zdWJ2aWV3cy5sYXN0T2JqZWN0OwogICAgIFtz
aG93RGV0YWlscyByZW1vdmVGcm9tU3VwZXJ2aWV3XTsKIAotICAgIE5TTXV0YWJsZUF0dHJpYnV0
ZWRTdHJpbmcgKnRleHQgPSBbW193YXJuaW5nLT5kZXRhaWxzKCkgbXV0YWJsZUNvcHldIGF1dG9y
ZWxlYXNlXTsKLSAgICBbdGV4dCBhZGRBdHRyaWJ1dGVzOkB7IE5TRm9udEF0dHJpYnV0ZU5hbWU6
Zm9udE9mU2l6ZShXYXJuaW5nVGV4dFNpemU6OkJvZHkpIH0gcmFuZ2U6TlNNYWtlUmFuZ2UoMCwg
dGV4dC5sZW5ndGgpXTsKLSAgICBXS1NhZmVCcm93c2luZ1RleHRWaWV3ICpkZXRhaWxzID0gW1tb
V0tTYWZlQnJvd3NpbmdUZXh0VmlldyBhbGxvY10gaW5pdFdpdGhBdHRyaWJ1dGVkU3RyaW5nOnRl
eHQgZm9yV2FybmluZzpzZWxmXSBhdXRvcmVsZWFzZV07Ci0gICAgX2RldGFpbHMgPSBkZXRhaWxz
OwotICAgIFdLU2FmZUJyb3dzaW5nQm94ICpib3R0b20gPSBbW1dLU2FmZUJyb3dzaW5nQm94IG5l
d10gYXV0b3JlbGVhc2VdOworICAgIGF1dG8gdGV4dCA9IGFkb3B0TlMoW193YXJuaW5nLT5kZXRh
aWxzKCkgbXV0YWJsZUNvcHldKTsKKyAgICBbdGV4dCBhZGRBdHRyaWJ1dGVzOkB7IE5TRm9udEF0
dHJpYnV0ZU5hbWU6Zm9udE9mU2l6ZShXYXJuaW5nVGV4dFNpemU6OkJvZHkpIH0gcmFuZ2U6TlNN
YWtlUmFuZ2UoMCwgW3RleHQgbGVuZ3RoXSldOworICAgIGF1dG8gZGV0YWlscyA9IGFkb3B0TlMo
W1tXS1NhZmVCcm93c2luZ1RleHRWaWV3IGFsbG9jXSBpbml0V2l0aEF0dHJpYnV0ZWRTdHJpbmc6
dGV4dC5nZXQoKSBmb3JXYXJuaW5nOnNlbGZdKTsKKyAgICBfZGV0YWlscyA9IGRldGFpbHMuZ2V0
KCk7CisgICAgYXV0byBib3R0b20gPSBhZG9wdE5TKFtXS1NhZmVCcm93c2luZ0JveCBuZXddKTsK
ICAgICBbYm90dG9tIHNldFNhZmVCcm93c2luZ0JhY2tncm91bmRDb2xvcjpjb2xvckZvckl0ZW0o
V2FybmluZ0l0ZW06OkJveEJhY2tncm91bmQsIHNlbGYpXTsKLSAgICBib3R0b20ubGF5ZXIuY29y
bmVyUmFkaXVzID0gYm94Q29ybmVyUmFkaXVzOworICAgIFtib3R0b20gbGF5ZXJdLmNvcm5lclJh
ZGl1cyA9IGJveENvcm5lclJhZGl1czsKIAogI2lmIEhBVkUoU0FGRV9CUk9XU0lORykKICAgICBj
b25zdGV4cHIgYXV0byBtYXhZID0ga0NBTGF5ZXJNaW5YTWF4WUNvcm5lciB8IGtDQUxheWVyTWF4
WE1heFlDb3JuZXI7CiAgICAgY29uc3RleHByIGF1dG8gbWluWSA9IGtDQUxheWVyTWluWE1pbllD
b3JuZXIgfCBrQ0FMYXllck1heFhNaW5ZQ29ybmVyOwogI2lmIFBMQVRGT1JNKE1BQykKICAgICBi
b3gubGF5ZXIubWFza2VkQ29ybmVycyA9IG1heFk7Ci0gICAgYm90dG9tLmxheWVyLm1hc2tlZENv
cm5lcnMgPSBtaW5ZOworICAgIFtib3R0b20gbGF5ZXJdLm1hc2tlZENvcm5lcnMgPSBtaW5ZOwog
I2Vsc2UKICAgICBib3gubGF5ZXIubWFza2VkQ29ybmVycyA9IG1pblk7Ci0gICAgYm90dG9tLmxh
eWVyLm1hc2tlZENvcm5lcnMgPSBtYXhZOworICAgIFtib3R0b20gbGF5ZXJdLm1hc2tlZENvcm5l
cnMgPSBtYXhZOwogI2VuZGlmCiAjZW5kaWYKIAotICAgIFdLU2FmZUJyb3dzaW5nQm94ICpsaW5l
ID0gW1tXS1NhZmVCcm93c2luZ0JveCBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICBhdXRvIGxpbmUg
PSBhZG9wdE5TKFtXS1NhZmVCcm93c2luZ0JveCBuZXddKTsKICAgICBbbGluZSBzZXRTYWZlQnJv
d3NpbmdCYWNrZ3JvdW5kQ29sb3I6W0NvY29hQ29sb3IgbGlnaHRHcmF5Q29sb3JdXTsKLSAgICBm
b3IgKFZpZXdUeXBlICp2aWV3IGluIEBbZGV0YWlscywgYm90dG9tLCBsaW5lXSkKKyAgICBmb3Ig
KFZpZXdUeXBlICp2aWV3IGluIEBbZGV0YWlscy5nZXQoKSwgYm90dG9tLmdldCgpLCBsaW5lLmdl
dCgpXSkKICAgICAgICAgdmlldy50cmFuc2xhdGVzQXV0b3Jlc2l6aW5nTWFza0ludG9Db25zdHJh
aW50cyA9IE5POwogCi0gICAgW3NlbGYgYWRkU3Vidmlldzpib3R0b21dOwotICAgIFtib3R0b20g
YWRkU3VidmlldzpsaW5lXTsKLSAgICBbYm90dG9tIGFkZFN1YnZpZXc6ZGV0YWlsc107CisgICAg
W3NlbGYgYWRkU3Vidmlldzpib3R0b20uZ2V0KCldOworICAgIFtib3R0b20gYWRkU3Vidmlldzps
aW5lLmdldCgpXTsKKyAgICBbYm90dG9tIGFkZFN1YnZpZXc6ZGV0YWlscy5nZXQoKV07CiAjaWYg
SEFWRShTQUZFX0JST1dTSU5HKQogICAgIFtOU0xheW91dENvbnN0cmFpbnQgYWN0aXZhdGVDb25z
dHJhaW50czpAWwotICAgICAgICBbYm94LndpZHRoQW5jaG9yIGNvbnN0cmFpbnRFcXVhbFRvQW5j
aG9yOmJvdHRvbS53aWR0aEFuY2hvcl0sCi0gICAgICAgIFtib3guYm90dG9tQW5jaG9yIGNvbnN0
cmFpbnRFcXVhbFRvQW5jaG9yOmJvdHRvbS50b3BBbmNob3JdLAotICAgICAgICBbYm94LmxlYWRp
bmdBbmNob3IgY29uc3RyYWludEVxdWFsVG9BbmNob3I6Ym90dG9tLmxlYWRpbmdBbmNob3JdLAot
ICAgICAgICBbbGluZS53aWR0aEFuY2hvciBjb25zdHJhaW50RXF1YWxUb0FuY2hvcjpib3R0b20u
d2lkdGhBbmNob3JdLAotICAgICAgICBbbGluZS5sZWFkaW5nQW5jaG9yIGNvbnN0cmFpbnRFcXVh
bFRvQW5jaG9yOmJvdHRvbS5sZWFkaW5nQW5jaG9yXSwKLSAgICAgICAgW2xpbmUudG9wQW5jaG9y
IGNvbnN0cmFpbnRFcXVhbFRvQW5jaG9yOmJvdHRvbS50b3BBbmNob3JdLAotICAgICAgICBbbGlu
ZS5oZWlnaHRBbmNob3IgY29uc3RyYWludEVxdWFsVG9Db25zdGFudDoxXSwKLSAgICAgICAgW1ti
b3R0b20udG9wQW5jaG9yIGFuY2hvcldpdGhPZmZzZXRUb0FuY2hvcjpkZXRhaWxzLnRvcEFuY2hv
cl0gY29uc3RyYWludEVxdWFsVG9Db25zdGFudDptYXJnaW5TaXplXSwKLSAgICAgICAgW1tkZXRh
aWxzLmJvdHRvbUFuY2hvciBhbmNob3JXaXRoT2Zmc2V0VG9BbmNob3I6Ym90dG9tLmJvdHRvbUFu
Y2hvcl0gY29uc3RyYWludEVxdWFsVG9Db25zdGFudDptYXJnaW5TaXplXSwKLSAgICAgICAgW1ti
b3R0b20ubGVhZGluZ0FuY2hvciBhbmNob3JXaXRoT2Zmc2V0VG9BbmNob3I6ZGV0YWlscy5sZWFk
aW5nQW5jaG9yXSBjb25zdHJhaW50RXF1YWxUb0NvbnN0YW50Om1hcmdpblNpemVdLAotICAgICAg
ICBbW2RldGFpbHMudHJhaWxpbmdBbmNob3IgYW5jaG9yV2l0aE9mZnNldFRvQW5jaG9yOmJvdHRv
bS50cmFpbGluZ0FuY2hvcl0gY29uc3RyYWludEVxdWFsVG9Db25zdGFudDptYXJnaW5TaXplXSwK
KyAgICAgICAgW2JveC53aWR0aEFuY2hvciBjb25zdHJhaW50RXF1YWxUb0FuY2hvcjpbYm90dG9t
IHdpZHRoQW5jaG9yXV0sCisgICAgICAgIFtib3guYm90dG9tQW5jaG9yIGNvbnN0cmFpbnRFcXVh
bFRvQW5jaG9yOltib3R0b20gdG9wQW5jaG9yXV0sCisgICAgICAgIFtib3gubGVhZGluZ0FuY2hv
ciBjb25zdHJhaW50RXF1YWxUb0FuY2hvcjpbYm90dG9tIGxlYWRpbmdBbmNob3JdXSwKKyAgICAg
ICAgW1tsaW5lIHdpZHRoQW5jaG9yXSBjb25zdHJhaW50RXF1YWxUb0FuY2hvcjpbYm90dG9tIHdp
ZHRoQW5jaG9yXV0sCisgICAgICAgIFtbbGluZSBsZWFkaW5nQW5jaG9yXSBjb25zdHJhaW50RXF1
YWxUb0FuY2hvcjpbYm90dG9tIGxlYWRpbmdBbmNob3JdXSwKKyAgICAgICAgW1tsaW5lIHRvcEFu
Y2hvcl0gY29uc3RyYWludEVxdWFsVG9BbmNob3I6W2JvdHRvbSB0b3BBbmNob3JdXSwKKyAgICAg
ICAgW1tsaW5lIGhlaWdodEFuY2hvcl0gY29uc3RyYWludEVxdWFsVG9Db25zdGFudDoxXSwKKyAg
ICAgICAgW1tbYm90dG9tIHRvcEFuY2hvcl0gYW5jaG9yV2l0aE9mZnNldFRvQW5jaG9yOltkZXRh
aWxzIHRvcEFuY2hvcl1dIGNvbnN0cmFpbnRFcXVhbFRvQ29uc3RhbnQ6bWFyZ2luU2l6ZV0sCisg
ICAgICAgIFtbW2RldGFpbHMgYm90dG9tQW5jaG9yXSBhbmNob3JXaXRoT2Zmc2V0VG9BbmNob3I6
W2JvdHRvbSBib3R0b21BbmNob3JdXSBjb25zdHJhaW50RXF1YWxUb0NvbnN0YW50Om1hcmdpblNp
emVdLAorICAgICAgICBbW1tib3R0b20gbGVhZGluZ0FuY2hvcl0gYW5jaG9yV2l0aE9mZnNldFRv
QW5jaG9yOltkZXRhaWxzIGxlYWRpbmdBbmNob3JdXSBjb25zdHJhaW50RXF1YWxUb0NvbnN0YW50
Om1hcmdpblNpemVdLAorICAgICAgICBbW1tkZXRhaWxzIHRyYWlsaW5nQW5jaG9yXSBhbmNob3JX
aXRoT2Zmc2V0VG9BbmNob3I6W2JvdHRvbSB0cmFpbGluZ0FuY2hvcl1dIGNvbnN0cmFpbnRFcXVh
bFRvQ29uc3RhbnQ6bWFyZ2luU2l6ZV0sCiAgICAgXV07CiAjZW5kaWYKICAgICBbc2VsZiBsYXlv
dXRUZXh0XTsKQEAgLTU3MCwxMSArNTcwLDExIEBAIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aEF0
dHJpYnV0ZWRTdHJpbmc6KE5TQXR0cmlidXRlZFN0cmluZyAqKWF0dHJpYnV0ZWRTdHJpbmcKICAg
ICBzZWxmLmRlbGVnYXRlID0gd2FybmluZzsKIAogICAgIENvY29hQ29sb3IgKmZvcmVncm91bmRD
b2xvciA9IGNvbG9yRm9ySXRlbShXYXJuaW5nSXRlbTo6TWVzc2FnZVRleHQsIHdhcm5pbmcpOwot
ICAgIE5TTXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcgKnN0cmluZyA9IFtbYXR0cmlidXRlZFN0cmlu
ZyBtdXRhYmxlQ29weV0gYXV0b3JlbGVhc2VdOwotICAgIFtzdHJpbmcgYWRkQXR0cmlidXRlczpA
eyBOU0ZvcmVncm91bmRDb2xvckF0dHJpYnV0ZU5hbWUgOiBmb3JlZ3JvdW5kQ29sb3IgfSByYW5n
ZTpOU01ha2VSYW5nZSgwLCBzdHJpbmcubGVuZ3RoKV07CisgICAgYXV0byBzdHJpbmcgPSBhZG9w
dE5TKFthdHRyaWJ1dGVkU3RyaW5nIG11dGFibGVDb3B5XSk7CisgICAgW3N0cmluZyBhZGRBdHRy
aWJ1dGVzOkB7IE5TRm9yZWdyb3VuZENvbG9yQXR0cmlidXRlTmFtZSA6IGZvcmVncm91bmRDb2xv
ciB9IHJhbmdlOk5TTWFrZVJhbmdlKDAsIFtzdHJpbmcgbGVuZ3RoXSldOwogICAgIFtzZWxmIHNl
dEJhY2tncm91bmRDb2xvcjpjb2xvckZvckl0ZW0oV2FybmluZ0l0ZW06OkJveEJhY2tncm91bmQs
IHdhcm5pbmcpXTsKICAgICBbc2VsZiBzZXRMaW5rVGV4dEF0dHJpYnV0ZXM6QHsgTlNGb3JlZ3Jv
dW5kQ29sb3JBdHRyaWJ1dGVOYW1lIDogZm9yZWdyb3VuZENvbG9yIH1dOwotICAgIFtzZWxmLnRl
eHRTdG9yYWdlIGFwcGVuZEF0dHJpYnV0ZWRTdHJpbmc6c3RyaW5nXTsKKyAgICBbc2VsZi50ZXh0
U3RvcmFnZSBhcHBlbmRBdHRyaWJ1dGVkU3RyaW5nOnN0cmluZy5nZXQoKV07CiAgICAgc2VsZi5l
ZGl0YWJsZSA9IE5POwogI2lmICFQTEFURk9STShNQUMpCiAgICAgc2VsZi5zY3JvbGxFbmFibGVk
ID0gTk87CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3
SW1wbC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCmlu
ZGV4IDFiZjkwODRjNTNmZWQ1ZWI2MzE5Njg0NjY3YjNhYjgyNzRiN2I4ZGQuLjkwZWI0ZGJkZGMw
ZmE3ODMzZTI4YThmM2YxMjZkY2Y5MDc4MzFlOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCkBAIC0yNzU5LDcgKzI3NTksNyBAQCBOU1ZpZXcgKldl
YlZpZXdJbXBsOjpmdWxsU2NyZWVuUGxhY2Vob2xkZXJWaWV3KCkKIE5TV2luZG93ICpXZWJWaWV3
SW1wbDo6ZnVsbFNjcmVlbldpbmRvdygpCiB7CiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQot
ICAgIHJldHVybiBbW1tXZWJDb3JlRnVsbFNjcmVlbldpbmRvdyBhbGxvY10gaW5pdFdpdGhDb250
ZW50UmVjdDpbW05TU2NyZWVuIG1haW5TY3JlZW5dIGZyYW1lXSBzdHlsZU1hc2s6KE5TV2luZG93
U3R5bGVNYXNrVGl0bGVkIHwgTlNXaW5kb3dTdHlsZU1hc2tVbmlmaWVkVGl0bGVBbmRUb29sYmFy
IHwgTlNXaW5kb3dTdHlsZU1hc2tGdWxsU2l6ZUNvbnRlbnRWaWV3IHwgTlNXaW5kb3dTdHlsZU1h
c2tSZXNpemFibGUpIGJhY2tpbmc6TlNCYWNraW5nU3RvcmVCdWZmZXJlZCBkZWZlcjpOT10gYXV0
b3JlbGVhc2VdOworICAgIHJldHVybiBhZG9wdE5TKFtbV2ViQ29yZUZ1bGxTY3JlZW5XaW5kb3cg
YWxsb2NdIGluaXRXaXRoQ29udGVudFJlY3Q6W1tOU1NjcmVlbiBtYWluU2NyZWVuXSBmcmFtZV0g
c3R5bGVNYXNrOihOU1dpbmRvd1N0eWxlTWFza1RpdGxlZCB8IE5TV2luZG93U3R5bGVNYXNrVW5p
ZmllZFRpdGxlQW5kVG9vbGJhciB8IE5TV2luZG93U3R5bGVNYXNrRnVsbFNpemVDb250ZW50Vmll
dyB8IE5TV2luZG93U3R5bGVNYXNrUmVzaXphYmxlKSBiYWNraW5nOk5TQmFja2luZ1N0b3JlQnVm
ZmVyZWQgZGVmZXI6Tk9dKS5hdXRvcmVsZWFzZSgpOwogI2Vsc2UKICAgICByZXR1cm4gbmlsOwog
I2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>420404</attachid>
            <date>2021-02-15 17:28:33 -0800</date>
            <delta_ts>2021-02-16 11:48:21 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221932-20210215172832.patch</filename>
            <type>text/plain</type>
            <size>144501</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyODcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
MWE0NDIyOWVlMWRmNDkwMDA1MDVkNDVjOWRiMzAxZWIyNjdmYmY1Li44ODBkMDU3YjM2NzdiNWVk
M2Y1MWVmYTY2ZWZhZDQ1MmVlZDRlNjE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMiBAQAorMjAyMS0wMi0xNSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIFJlZHVjZSBleHBsaWNpdCB1c2FnZSBvZiBbb2JqQyBhdXRvcmVsZWFzZV0gaW4g
V2ViS2l0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MjE5MzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBS
ZWR1Y2UgZXhwbGljaXQgdXNhZ2Ugb2YgW29iakMgYXV0b3JlbGVhc2VdIGluIFdlYktpdCBieSB1
c2luZyBSZXRhaW5QdHI8Pi4KKworICAgICAgICAqIEFQSS9KU0NvbnRleHQubW06CisgICAgICAg
ICgtW0pTQ29udGV4dCBpbml0XSk6CisgICAgICAgICgrW0pTQ29udGV4dCBjb250ZXh0V2l0aEpT
R2xvYmFsQ29udGV4dFJlZjpdKToKKyAgICAgICAgKiBBUEkvSlNNYW5hZ2VkVmFsdWUubW06Cisg
ICAgICAgICgrW0pTTWFuYWdlZFZhbHVlIG1hbmFnZWRWYWx1ZVdpdGhWYWx1ZTpdKToKKyAgICAg
ICAgKCtbSlNNYW5hZ2VkVmFsdWUgbWFuYWdlZFZhbHVlV2l0aFZhbHVlOmFuZE93bmVyOl0pOgor
ICAgICAgICAqIEFQSS9KU1NjcmlwdC5tbToKKyAgICAgICAgKCtbSlNTY3JpcHQgc2NyaXB0T2ZU
eXBlOndpdGhTb3VyY2U6YW5kU291cmNlVVJMOmFuZEJ5dGVjb2RlQ2FjaGU6aW5WaXJ0dWFsTWFj
aGluZTplcnJvcjpdKToKKyAgICAgICAgKCtbSlNTY3JpcHQgc2NyaXB0T2ZUeXBlOm1lbW9yeU1h
cHBlZEZyb21BU0NJSUZpbGU6d2l0aFNvdXJjZVVSTDphbmRCeXRlY29kZUNhY2hlOmluVmlydHVh
bE1hY2hpbmU6ZXJyb3I6XSk6CisgICAgICAgICogQVBJL0pTVmlydHVhbE1hY2hpbmUubW06Cisg
ICAgICAgICgrW0pTVmlydHVhbE1hY2hpbmUgdmlydHVhbE1hY2hpbmVXaXRoQ29udGV4dEdyb3Vw
UmVmOl0pOgorICAgICAgICAqIEFQSS9KU1dyYXBwZXJNYXAubW06CisgICAgICAgICgtW0pTV3Jh
cHBlck1hcCBjbGFzc0luZm9Gb3JDbGFzczpdKToKKyAgICAgICAgKC1bSlNXcmFwcGVyTWFwIG9i
amNXcmFwcGVyRm9ySlNWYWx1ZVJlZjppbkNvbnRleHQ6XSk6CisgICAgICAgICogaW5zcGVjdG9y
L3JlbW90ZS9jb2NvYS9SZW1vdGVDb25uZWN0aW9uVG9UYXJnZXRDb2NvYS5tbToKKyAgICAgICAg
KEluc3BlY3Rvcjo6UmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0Ojpjb25uZWN0aW9uSWRlbnRpZmll
ciBjb25zdCk6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldDo6
ZGVzdGluYXRpb24gY29uc3QpOgorICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4v
b2JqY19nZW5lcmF0b3IucHk6CisgICAgICAgIChPYmpDR2VuZXJhdG9yLm9iamNfcHJvdG9jb2xf
aW1wb3J0X2V4cHJlc3Npb25fZm9yX3ZhcmlhYmxlKToKKwogMjAyMS0wMi0xNSAgQ2hyaXMgRHVt
ZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFJlZHVjZSBleHBsaWNpdCB1c2FnZSBv
ZiBbb2JqQyByZWxlYXNlXSBpbiBXZWJLaXQgZXZlbiBtb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTVmN2Ez
MjU2OWJlYTViMDRkMzU0MGY5ZmI0ODFjNmQyNGIwODQ2Ny4uMWVhMmVkM2Y4MWNlZTYxZmRiY2I3
NGM0MWViMDQ3MDhmZmRmYzdlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkxIEBACisyMDIxLTAy
LTE1ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgUmVkdWNlIGV4
cGxpY2l0IHVzYWdlIG9mIFtvYmpDIGF1dG9yZWxlYXNlXSBpbiBXZWJLaXQKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMTkzMgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlZHVjZSBleHBsaWNpdCB1c2Fn
ZSBvZiBbb2JqQyBhdXRvcmVsZWFzZV0gaW4gV2ViS2l0IGJ5IHVzaW5nIFJldGFpblB0cjw+Lgor
CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBw
ZXJJT1MubW06CisgICAgICAgICgrW1dlYkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyIHRleHRNYXJr
ZXJXaXRoVmlzaWJsZVBvc2l0aW9uOmNhY2hlOl0pOgorICAgICAgICAoK1tXZWJBY2Nlc3NpYmls
aXR5VGV4dE1hcmtlciB0ZXh0TWFya2VyV2l0aENoYXJhY3Rlck9mZnNldDpjYWNoZTpdKToKKyAg
ICAgICAgKCtbV2ViQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIgc3RhcnRPckVuZFRleHRNYXJrZXJG
b3JSYW5nZTppc1N0YXJ0OmNhY2hlOl0pOgorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2Jq
ZWN0V3JhcHBlciBfcHJlcGFyZUFjY2Vzc2liaWxpdHlDYWxsXSk6CisgICAgICAgICgtW1dlYkFj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFycmF5T2ZUZXh0Rm9yVGV4dE1hcmtlcnM6YXR0cmli
dXRlZDpdKToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgX3N0cmlu
Z0Zyb21TdGFydE1hcmtlcjp0b0VuZE1hcmtlcjphdHRyaWJ1dGVkOl0pOgorICAgICAgICAoLVtX
ZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBuZXh0TWFya2VyRm9yQ2hhcmFjdGVyT2Zmc2V0
Ol0pOgorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBwcmV2aW91c01h
cmtlckZvckNoYXJhY3Rlck9mZnNldDpdKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L21hYy9B
WE9iamVjdENhY2hlTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6dGV4dFJlcGxhY2VtZW50Q2hh
bmdlRGljdGlvbmFyeSk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJp
bGl0eU9iamVjdFdyYXBwZXJCYXNlLm1tOgorICAgICAgICAoYXJyYXlSZW1vdmluZ05vblN1cHBv
cnRlZFR5cGVzKToKKyAgICAgICAgKGRpY3Rpb25hcnlSZW1vdmluZ05vblN1cHBvcnRlZFR5cGVz
KToKKyAgICAgICAgKiBicmlkZ2Uvb2JqYy9XZWJTY3JpcHRPYmplY3QubW06CisgICAgICAgIChX
ZWJDb3JlOjpnZXRKU1dyYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlSlNXcmFwcGVy
KToKKyAgICAgICAgKCtbV2ViVW5kZWZpbmVkIHVuZGVmaW5lZF0pOgorICAgICAgICAqIGJyaWRn
ZS90ZXN0YmluZGluZ3MubW06CisgICAgICAgICgtW015Rmlyc3RJbnRlcmZhY2Ugc2V0SlNPYmpl
Y3Q6XSk6CisgICAgICAgICgtW015Rmlyc3RJbnRlcmZhY2UgY2FsbEpTT2JqZWN0OjpdKToKKyAg
ICAgICAgKiBlZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW06CisgICAgICAgIChfc2hhZG93
Rm9yU2hhZG93U3R5bGUpOgorICAgICAgICAoSFRNTENvbnZlcnRlcjo6X2FkZEF0dGFjaG1lbnRG
b3JFbGVtZW50KToKKyAgICAgICAgKF9kYXRlRm9yU3RyaW5nKToKKyAgICAgICAgKGZpbGVXcmFw
cGVyRm9yVVJMKToKKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL1dlYkFyY2hpdmVSZXNvdXJjZVdl
YlJlc291cmNlSGFuZGxlci5tbToKKyAgICAgICAgKC1bV2ViQXJjaGl2ZVJlc291cmNlV2ViUmVz
b3VyY2VIYW5kbGVyIHJlc291cmNlRm9yRGF0YTpVUkw6TUlNRVR5cGU6dGV4dEVuY29kaW5nTmFt
ZTpmcmFtZU5hbWU6XSk6CisgICAgICAgICogZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVy
Q29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjphdHRyaWJ1dGVzRm9yQXR0cmlidXRlZFN0cmlu
Z0NvbnZlcnNpb24pOgorICAgICAgICAqIGxvYWRlci9tYWMvTG9hZGVyTlNVUkxFeHRyYXMubW06
CisgICAgICAgIChmaWxlbmFtZUJ5Rml4aW5nSWxsZWdhbENoYXJhY3RlcnMpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25PYmpDOjpjcmVhdGVBVkFzc2V0Rm9yVVJMKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9pb3MvV2ViQVZQbGF5ZXJDb250cm9sbGVyLm1tOgorICAgICAgICAoLVtXZWJBVlBsYXllckNv
bnRyb2xsZXIgaW5pdF0pOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9XZWJFdmVudC5tbToKKyAg
ICAgICAgKC1bV2ViRXZlbnQgY2hhcmFjdGVyc10pOgorICAgICAgICAoLVtXZWJFdmVudCBjaGFy
YWN0ZXJzSWdub3JpbmdNb2RpZmllcnNdKToKKyAgICAgICAgKC1bV2ViRXZlbnQgaW5wdXRNYW5h
Z2VySGludF0pOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9XZWJJdGVtUHJvdmlkZXJQYXN0ZWJv
YXJkLm1tOgorICAgICAgICAoK1tXZWJJdGVtUHJvdmlkZXJMb2FkUmVzdWx0IGxvYWRSZXN1bHRX
aXRoSXRlbVByb3ZpZGVyOnR5cGVzVG9Mb2FkOl0pOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9X
ZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQubW06CisgICAgICAgICgtW1dlYlZpZGVv
RnVsbHNjcmVlbkNvbnRyb2xsZXIgZGlkRmluaXNoRnVsbHNjcmVlbjpdKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9pb3Mvd2FrL1dBS1ZpZXcubW06CisgICAgICAgICgrW1dBS1ZpZXcgX3dyYXBwZXJG
b3JWaWV3UmVmOl0pOgorICAgICAgICAoLVtXQUtWaWV3IGRlYWxsb2NdKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OmZpbGVXcmFw
cGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvV2ViQ29yZU5TVVJMRXh0cmFzLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6VVJMQnlDYW5vbmljYWxpemluZ1VSTCk6CisgICAgICAgICogcGxhdGZv
cm0vbWFjL1dlYk5TQXR0cmlidXRlZFN0cmluZ0V4dHJhcy5tbToKKyAgICAgICAgKFdlYkNvcmU6
OmF0dHJpYnV0ZWRTdHJpbmdCeVN0cmlwcGluZ0F0dGFjaG1lbnRDaGFyYWN0ZXJzKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVxdWVzdC5oOgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ29jb2EubW06CisgICAg
ICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246Om5zQ29va2llU3RvcmFnZSBjb25z
dCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RDb2Nv
YS5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdDo6bnNVUkxSZXF1ZXN0IGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdDo6c2V0U3RvcmFnZVNlc3Np
b24pOgorICAgICAgICAoV2ViQ29yZTo6Y29weVJlcXVlc3RXaXRoU3RvcmFnZVNlc3Npb24pOgor
ICAgICAgICAoV2ViQ29yZTo6Y2FjaGVkUmVzcG9uc2VGb3JSZXF1ZXN0KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW06CisgICAgICAgICgt
W1dlYkNvcmVOU1VSTFNlc3Npb24gZGF0YVRhc2tXaXRoUmVxdWVzdDpdKToKKyAgICAgICAgKC1b
V2ViQ29yZU5TVVJMU2Vzc2lvbiBkYXRhVGFza1dpdGhVUkw6XSk6CisgICAgICAgICgtW1dlYkNv
cmVOU1VSTFNlc3Npb25EYXRhVGFzayBpbml0V2l0aFNlc3Npb246aWRlbnRpZmllcjpyZXF1ZXN0
Ol0pOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL0F1dGhlbnRpY2F0aW9uTWFjLm1t
OgorICAgICAgICAoV2ViQ29yZTo6bWFjKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21h
Yy9SZXNvdXJjZUVycm9yTWFjLm1tOgorICAgICAgICAoZGljdGlvbmFyeVRoYXRDYW5Db2RlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUhhbmRsZU1hYy5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpjcmVhdGVOU1VSTENvbm5lY3Rpb24pOgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVVUkxSZXNwb25zZS5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OnN5bnRoZXNpemVSZWRpcmVjdFJlc3BvbnNlSWZOZWNlc3NhcnkpOgor
ICAgICAgICAqIHBsYXRmb3JtL3RleHQvaW9zL0xvY2FsaXplZERhdGVDYWNoZS5oOgorICAgICAg
ICAqIHBsYXRmb3JtL3RleHQvaW9zL0xvY2FsaXplZERhdGVDYWNoZS5tbToKKyAgICAgICAgKFdl
YkNvcmU6OkxvY2FsaXplZERhdGVDYWNoZTo6Zm9ybWF0dGVyRm9yRGF0ZVR5cGUpOgorICAgICAg
ICAoV2ViQ29yZTo6TG9jYWxpemVkRGF0ZUNhY2hlOjpjcmVhdGVGb3JtYXR0ZXJGb3JUeXBlKToK
KyAgICAgICAgKFdlYkNvcmU6OkxvY2FsaXplZERhdGVDYWNoZTo6Y2FsY3VsYXRlTWF4aW11bVdp
ZHRoKToKKwogMjAyMS0wMi0xNSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAg
ICAgICAgIFJlZHVjZSBleHBsaWNpdCB1c2FnZSBvZiBbb2JqQyByZWxlYXNlXSBpbiBXZWJLaXQg
ZXZlbiBtb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDRkZDZmZjFkMmRmY2VjYjc0MGY2YjJiYjhiNWQ3NzYyZTRi
NTM5YzkuLjIyZTY2YzQ3ZmIyYzRkMTU2NTQ5ZTMzMjBmN2Q4NzgyZTM1MjVlMzEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTE3IEBACisyMDIxLTAyLTE1ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBs
ZS5jb20+CisKKyAgICAgICAgUmVkdWNlIGV4cGxpY2l0IHVzYWdlIG9mIFtvYmpDIGF1dG9yZWxl
YXNlXSBpbiBXZWJLaXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIyMTkzMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFJlZHVjZSBleHBsaWNpdCB1c2FnZSBvZiBbb2JqQyBhdXRvcmVsZWFzZV0gaW4gV2Vi
S2l0IGJ5IHVzaW5nIFJldGFpblB0cjw+LgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29j
b2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbToKKyAgICAgICAgKGRvd25ncmFkZVJlcXVlc3QpOgor
ICAgICAgICAodXBkYXRlSWdub3JlU3RyaWN0VHJhbnNwb3J0U2VjdXJpdHlTZXR0aW5nSWZOZWNl
c3NhcnkpOgorICAgICAgICAoV2ViS2l0Ojpwcm94eURpY3Rpb25hcnkpOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrU2Vzc2lvbkNvY29hOjpOZXR3b3JrU2Vzc2lvbkNvY29hKToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1Nlc3Npb25Db2NvYTo6Y3JlYXRlV2ViU29ja2V0VGFzayk6CisgICAg
ICAgICogUGxhdGZvcm0vY29jb2EvV0tQYXltZW50QXV0aG9yaXphdGlvbkRlbGVnYXRlLm1tOgor
ICAgICAgICAoLVtXS1BheW1lbnRBdXRob3JpemF0aW9uRGVsZWdhdGUgY29tcGxldGVQYXltZW50
TWV0aG9kU2VsZWN0aW9uOl0pOgorICAgICAgICAoLVtXS1BheW1lbnRBdXRob3JpemF0aW9uRGVs
ZWdhdGUgY29tcGxldGVTaGlwcGluZ0NvbnRhY3RTZWxlY3Rpb246XSk6CisgICAgICAgICgtW1dL
UGF5bWVudEF1dGhvcml6YXRpb25EZWxlZ2F0ZSBjb21wbGV0ZVNoaXBwaW5nTWV0aG9kU2VsZWN0
aW9uOl0pOgorICAgICAgICAqIFNoYXJlZC9BUEkvQ29jb2EvV0tSZW1vdGVPYmplY3RDb2Rlci5t
bToKKyAgICAgICAgKGVuY29kZU9iamVjdCk6CisgICAgICAgICogU2hhcmVkL0FQSS9Db2NvYS9f
V0tSZW1vdGVPYmplY3RJbnRlcmZhY2UubW06CisgICAgICAgICgrW19XS1JlbW90ZU9iamVjdElu
dGVyZmFjZSByZW1vdGVPYmplY3RJbnRlcmZhY2VXaXRoUHJvdG9jb2w6XSk6CisgICAgICAgICog
U2hhcmVkL0NvY29hL1dLT2JqZWN0Lmg6CisgICAgICAgIChXZWJLaXQ6OndyYXBwZXIpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvTlNBdHRyaWJ1dGVkU3RyaW5nLm1tOgorICAgICAg
ICAoK1tfV0tBdHRyaWJ1dGVkU3RyaW5nV2ViVmlld0NhY2hlIGNvbmZpZ3VyYXRpb25dKToKKyAg
ICAgICAgKCtbTlNBdHRyaWJ1dGVkU3RyaW5nIF9sb2FkRnJvbUhUTUxXaXRoT3B0aW9uczpjb250
ZW50TG9hZGVyOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyLm1tOgorICAgICAgICAobWFrZVBvbGlj
eURlY2lzaW9uQmxvY2spOgorICAgICAgICAoc2V0VXBQYWdlUG9saWN5Q2xpZW50KToKKyAgICAg
ICAgKC1bV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyIGhhbmRsZV0pOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tDb250ZW50V29ybGQubW06CisgICAgICAgICgtW1dLQ29udGVu
dFdvcmxkIF91c2VyQ29udGVudFdvcmxkXSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS0ZyYW1lSW5mby5tbToKKyAgICAgICAgKC1bV0tGcmFtZUluZm8gc2VjdXJpdHlPcmlnaW5d
KToKKyAgICAgICAgKC1bV0tGcmFtZUluZm8gd2ViVmlld10pOgorICAgICAgICAoLVtXS0ZyYW1l
SW5mbyBfaGFuZGxlXSk6CisgICAgICAgICgtW1dLRnJhbWVJbmZvIF9wYXJlbnRGcmFtZUhhbmRs
ZV0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2VyU2NyaXB0Lm1tOgorICAg
ICAgICAoLVtXS1VzZXJTY3JpcHQgX3VzZXJDb250ZW50V29ybGRdKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IGNvbmZp
Z3VyYXRpb25dKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IGZpbmRTdHJpbmc6d2l0aENvbmZpZ3Vy
YXRpb246Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfZnJhbWVz
Ol0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2hhbmRsZV0pOgorICAgICAgICAoLVtXS1dlYlZp
ZXcgX3Rha2VQREZTbmFwc2hvdFdpdGhDb25maWd1cmF0aW9uOmNvbXBsZXRpb25IYW5kbGVyOl0p
OgorICAgICAgICAoLVtXS1dlYlZpZXcgX3Nlc3Npb25TdGF0ZV0pOgorICAgICAgICAoLVtXS1dl
YlZpZXcgX3Nlc3Npb25TdGF0ZVdpdGhGaWx0ZXI6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBf
Z2V0Q29udGVudHNBc0F0dHJpYnV0ZWRTdHJpbmdXaXRoQ29tcGxldGlvbkhhbmRsZXI6XSk6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnBhZ2VQcmVmZXJlbmNlcy5tbToKKyAg
ICAgICAgKCtbV0tXZWJwYWdlUHJlZmVyZW5jZXMgZGVmYXVsdFByZWZlcmVuY2VzXSk6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVjb3JkLm1tOgorICAgICAg
ICAoLVtXS1dlYnNpdGVEYXRhUmVjb3JkIF9kYXRhU2l6ZV0pOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQ29jb2EvX1dLQWN0aXZhdGVkRWxlbWVudEluZm8ubW06CisgICAgICAgICgrW19XS0Fj
dGl2YXRlZEVsZW1lbnRJbmZvIGFjdGl2YXRlZEVsZW1lbnRJbmZvV2l0aEludGVyYWN0aW9uSW5m
b3JtYXRpb25BdFBvc2l0aW9uOnVzZXJJbmZvOl0pOgorICAgICAgICAoLVtfV0tBY3RpdmF0ZWRF
bGVtZW50SW5mbyBpbWFnZV0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXR0
YWNobWVudC5tbToKKyAgICAgICAgKC1bX1dLQXR0YWNobWVudCBpbmZvXSk6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdXRvbWF0aW9uU2Vzc2lvbi5tbToKKyAgICAgICAgKC1b
X1dLQXV0b21hdGlvblNlc3Npb24gaW5pdF0pOgorICAgICAgICAoLVtfV0tBdXRvbWF0aW9uU2Vz
c2lvbiBjb25maWd1cmF0aW9uXSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tE
b3dubG9hZC5tbToKKyAgICAgICAgKCtbX1dLRG93bmxvYWQgZG93bmxvYWRXaXRoRG93bmxvYWQ6
XSk6CisgICAgICAgICgtW19XS0Rvd25sb2FkIG9yaWdpbmF0aW5nV2ViVmlld10pOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRWxlbWVudEFjdGlvbi5tbToKKyAgICAgICAgKCtb
X1dLRWxlbWVudEFjdGlvbiBlbGVtZW50QWN0aW9uV2l0aFRpdGxlOmFjdGlvbkhhbmRsZXI6XSk6
CisgICAgICAgICgrW19XS0VsZW1lbnRBY3Rpb24gX2VsZW1lbnRBY3Rpb25XaXRoVHlwZTp0aXRs
ZTphY3Rpb25IYW5kbGVyOl0pOgorICAgICAgICAoK1tfV0tFbGVtZW50QWN0aW9uIF9lbGVtZW50
QWN0aW9uV2l0aFR5cGU6Y3VzdG9tVGl0bGU6YXNzaXN0YW50Ol0pOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQ29jb2EvX1dLRnJhbWVUcmVlTm9kZS5tbToKKyAgICAgICAgKC1bX1dLRnJhbWVU
cmVlTm9kZSBzZWN1cml0eU9yaWdpbl0pOgorICAgICAgICAoLVtfV0tGcmFtZVRyZWVOb2RlIHdl
YlZpZXddKToKKyAgICAgICAgKC1bX1dLRnJhbWVUcmVlTm9kZSBfaGFuZGxlXSk6CisgICAgICAg
ICgtW19XS0ZyYW1lVHJlZU5vZGUgX3BhcmVudEZyYW1lSGFuZGxlXSk6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3IubW06CisgICAgICAgICgtW19XS0luc3BlY3Rv
ciByZWdpc3RlckV4dGVuc2lvbldpdGhJRDpkaXNwbGF5TmFtZTpjb21wbGV0aW9uSGFuZGxlcjpd
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS1Byb2Nlc3NQb29sQ29uZmlndXJh
dGlvbi5tbToKKyAgICAgICAgKC1bX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIGN1c3RvbUNs
YXNzZXNGb3JQYXJhbWV0ZXJDb2Rlcl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLUmVtb3RlV2ViSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIubW06CisgICAgICAgICgtW19XS1Jl
bW90ZVdlYkluc3BlY3RvclZpZXdDb250cm9sbGVyIHJlZ2lzdGVyRXh0ZW5zaW9uV2l0aElEOmRp
c3BsYXlOYW1lOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Q29jb2EvX1dLVGV4dE1hbmlwdWxhdGlvblRva2VuLm1tOgorICAgICAgICAoLVtfV0tUZXh0TWFu
aXB1bGF0aW9uVG9rZW4gX2Rlc2NyaXB0aW9uUHJlc2VydmluZ1ByaXZhY3k6XSk6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tVc2VyQ29udGVudEV4dGVuc2lvblN0b3JlLm1tOgor
ICAgICAgICAoK1tfV0tVc2VyQ29udGVudEV4dGVuc2lvblN0b3JlIGRlZmF1bHRTdG9yZV0pOgor
ICAgICAgICAoK1tfV0tVc2VyQ29udGVudEV4dGVuc2lvblN0b3JlIHN0b3JlV2l0aFVSTDpdKToK
KyAgICAgICAgKC1bX1dLVXNlckNvbnRlbnRFeHRlbnNpb25TdG9yZSBjb21waWxlQ29udGVudEV4
dGVuc2lvbkZvcklkZW50aWZpZXI6ZW5jb2RlZENvbnRlbnRFeHRlbnNpb246Y29tcGxldGlvbkhh
bmRsZXI6XSk6CisgICAgICAgICgtW19XS1VzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmUgbG9va3Vw
Q29udGVudEV4dGVuc2lvbkZvcklkZW50aWZpZXI6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tVc2VyQ29udGVudFdvcmxkLm1tOgorICAgICAg
ICAoK1tfV0tVc2VyQ29udGVudFdvcmxkIHdvcmxkV2l0aE5hbWU6XSk6CisgICAgICAgICgrW19X
S1VzZXJDb250ZW50V29ybGQgbm9ybWFsV29ybGRdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L2lvcy9XS1dlYlZpZXdJT1MubW06CisgICAgICAgICgtW1dLV2ViVmlldyBfdWlFdmVudEF0dHJp
YnV0aW9uXSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfcmV0YWluQWN0aXZlRm9jdXNlZFN0YXRl
XSk6CisgICAgICAgICogVUlQcm9jZXNzL0F1dG9tYXRpb24vaW9zL1dlYkF1dG9tYXRpb25TZXNz
aW9uSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cGxhdGZv
cm1TaW11bGF0ZUtleWJvYXJkSW50ZXJhY3Rpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2Nv
YS9BdXRvbWF0aW9uQ2xpZW50Lm1tOgorICAgICAgICAoV2ViS2l0OjpBdXRvbWF0aW9uQ2xpZW50
OjpyZXF1ZXN0QXV0b21hdGlvblNlc3Npb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9T
YWZlQnJvd3NpbmdXYXJuaW5nQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OmFkZExpbmtBbmRS
ZXBsYWNlKToKKyAgICAgICAgKFdlYktpdDo6c2FmZUJyb3dzaW5nRGV0YWlsc1RleHQpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9TeXN0ZW1QcmV2aWV3Q29udHJvbGxlckNvY29hLm1tOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkubW06
CisgICAgICAgICgtW1dLTGF5ZXJIb3N0VmlldyBtYWtlQmFja2luZ0xheWVyXSk6CisgICAgICAg
ICogVUlQcm9jZXNzL0NvY29hL1dLQ29udGFjdFBpY2tlci5tbToKKyAgICAgICAgKC1bV0tDb250
YWN0UGlja2VyIF9jb250YWN0c0Zyb21KU0NvbnRhY3RzOl0pOgorICAgICAgICAqIFVJUHJvY2Vz
cy9Db2NvYS9XS1NhZmVCcm93c2luZ1dhcm5pbmcubW06CisgICAgICAgIChtYWtlQnV0dG9uKToK
KyAgICAgICAgKG1ha2VMYWJlbCk6CisgICAgICAgICgtW1dLU2FmZUJyb3dzaW5nV2FybmluZyBh
ZGRDb250ZW50XSk6CisgICAgICAgICgtW1dLU2FmZUJyb3dzaW5nV2FybmluZyBzaG93RGV0YWls
c0NsaWNrZWRdKToKKyAgICAgICAgKC1bV0tTYWZlQnJvd3NpbmdUZXh0VmlldyBpbml0V2l0aEF0
dHJpYnV0ZWRTdHJpbmc6Zm9yV2FybmluZzpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2Ev
V2ViVmlld0ltcGwubW06CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpmdWxsU2NyZWVu
V2luZG93KToKKwogMjAyMS0wMi0xNSAgRnVqaWkgSGlyb25vcmkgIDxIaXJvbm9yaS5GdWppaUBz
b255LmNvbT4KIAogICAgICAgICBQYWdlIHNjcm9sbGluZyBieSB3aGVlbCBldmVudHMgZG9lc24n
dCB3b3JrIGluIG5vbi1BQyBtb2RlIHBhZ2VzIGlmIEhhcmR3YXJlIEFjY2VsZXJhdGlvbiBQb2xp
Y3kgaXMgY2hhbmdlZCBkeW5hbWljYWxseSBmcm9tICJhbHdheXMiIHRvICJuZXZlciIKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0Lm1tIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHQubW0KaW5kZXggNzRiMjM0NDllNjlhOWMzOWUxODcy
MjdkYzhjNjk3YWZiNDkyNjBiZC4uNmJlYjI1YmY2YWVlZDc1OGEyMDYxMTdjYWU3MThiNzhhMDAy
M2EzNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHQubW0K
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHQubW0KQEAgLTY4LDcgKzY4
LDcgQEAgLSAodm9pZCllbnN1cmVXcmFwcGVyTWFwCiAKIC0gKGluc3RhbmNldHlwZSlpbml0CiB7
Ci0gICAgcmV0dXJuIFtzZWxmIGluaXRXaXRoVmlydHVhbE1hY2hpbmU6W1tbSlNWaXJ0dWFsTWFj
aGluZSBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdXTsKKyAgICByZXR1cm4gW3NlbGYgaW5pdFdp
dGhWaXJ0dWFsTWFjaGluZTphZG9wdE5TKFtbSlNWaXJ0dWFsTWFjaGluZSBhbGxvY10gaW5pdF0p
LmF1dG9yZWxlYXNlKCldOwogfQogCiAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhWaXJ0dWFsTWFj
aGluZTooSlNWaXJ0dWFsTWFjaGluZSAqKXZpcnR1YWxNYWNoaW5lCkBAIC00MDgsNyArNDA4LDcg
QEAgKyAoSlNDb250ZXh0ICopY29udGV4dFdpdGhKU0dsb2JhbENvbnRleHRSZWY6KEpTR2xvYmFs
Q29udGV4dFJlZilnbG9iYWxDb250ZXh0CiAgICAgSlNWaXJ0dWFsTWFjaGluZSAqdmlydHVhbE1h
Y2hpbmUgPSBbSlNWaXJ0dWFsTWFjaGluZSB2aXJ0dWFsTWFjaGluZVdpdGhDb250ZXh0R3JvdXBS
ZWY6dG9SZWYoJnRvSlMoZ2xvYmFsQ29udGV4dCktPnZtKCkpXTsKICAgICBKU0NvbnRleHQgKmNv
bnRleHQgPSBbdmlydHVhbE1hY2hpbmUgY29udGV4dEZvckdsb2JhbENvbnRleHRSZWY6Z2xvYmFs
Q29udGV4dF07CiAgICAgaWYgKCFjb250ZXh0KQotICAgICAgICBjb250ZXh0ID0gW1tbSlNDb250
ZXh0IGFsbG9jXSBpbml0V2l0aEdsb2JhbENvbnRleHRSZWY6Z2xvYmFsQ29udGV4dF0gYXV0b3Jl
bGVhc2VdOworICAgICAgICBjb250ZXh0ID0gYWRvcHROUyhbW0pTQ29udGV4dCBhbGxvY10gaW5p
dFdpdGhHbG9iYWxDb250ZXh0UmVmOmdsb2JhbENvbnRleHRdKS5hdXRvcmVsZWFzZSgpOwogICAg
IHJldHVybiBjb250ZXh0OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL0pTTWFuYWdlZFZhbHVlLm1tIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU01hbmFn
ZWRWYWx1ZS5tbQppbmRleCA2Mzg2OWEwMzQxNDAwM2RjODcwMWY1MjNjNTA5Y2JlYmVjZGQ5NmFj
Li44NTBmYWJjNmIzOWVlZWZhMGUyNDA1ZDkzN2QzOTQyNTRhOTZiMjNlIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTTWFuYWdlZFZhbHVlLm1tCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvSlNNYW5hZ2VkVmFsdWUubW0KQEAgLTYxLDE0ICs2MSwxNCBAQCBA
aW1wbGVtZW50YXRpb24gSlNNYW5hZ2VkVmFsdWUgewogCiArIChKU01hbmFnZWRWYWx1ZSAqKW1h
bmFnZWRWYWx1ZVdpdGhWYWx1ZTooSlNWYWx1ZSAqKXZhbHVlCiB7Ci0gICAgcmV0dXJuIFtbW3Nl
bGYgYWxsb2NdIGluaXRXaXRoVmFsdWU6dmFsdWVdIGF1dG9yZWxlYXNlXTsKKyAgICByZXR1cm4g
YWRvcHROUyhbW3NlbGYgYWxsb2NdIGluaXRXaXRoVmFsdWU6dmFsdWVdKS5hdXRvcmVsZWFzZSgp
OwogfQogCiArIChKU01hbmFnZWRWYWx1ZSAqKW1hbmFnZWRWYWx1ZVdpdGhWYWx1ZTooSlNWYWx1
ZSAqKXZhbHVlIGFuZE93bmVyOihpZClvd25lcgogewotICAgIEpTTWFuYWdlZFZhbHVlICptYW5h
Z2VkVmFsdWUgPSBbW3NlbGYgYWxsb2NdIGluaXRXaXRoVmFsdWU6dmFsdWVdOwotICAgIFt2YWx1
ZS5jb250ZXh0LnZpcnR1YWxNYWNoaW5lIGFkZE1hbmFnZWRSZWZlcmVuY2U6bWFuYWdlZFZhbHVl
IHdpdGhPd25lcjpvd25lcl07Ci0gICAgcmV0dXJuIFttYW5hZ2VkVmFsdWUgYXV0b3JlbGVhc2Vd
OworICAgIGF1dG8gbWFuYWdlZFZhbHVlID0gYWRvcHROUyhbW3NlbGYgYWxsb2NdIGluaXRXaXRo
VmFsdWU6dmFsdWVdKTsKKyAgICBbdmFsdWUuY29udGV4dC52aXJ0dWFsTWFjaGluZSBhZGRNYW5h
Z2VkUmVmZXJlbmNlOm1hbmFnZWRWYWx1ZS5nZXQoKSB3aXRoT3duZXI6b3duZXJdOworICAgIHJl
dHVybiBtYW5hZ2VkVmFsdWUuYXV0b3JlbGVhc2UoKTsKIH0KIAogLSAoaW5zdGFuY2V0eXBlKWlu
aXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNTY3JpcHQubW0gYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTU2NyaXB0Lm1tCmluZGV4IDllNDE0NTcxMjRiZjE0
M2VhNDE3NjE1YzQ5ODJhNTE5YzFkOTNhN2UuLjIzZjU5MTQzM2ViN2UyMjc4MDkxMmM0ODBjNDQ4
NmI2MzQ3OWMzZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNTY3Jp
cHQubW0KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1NjcmlwdC5tbQpAQCAtMTEw
LDE0ICsxMTAsMTQgQEAgKyAoaW5zdGFuY2V0eXBlKXNjcmlwdE9mVHlwZTooSlNTY3JpcHRUeXBl
KXR5cGUgd2l0aFNvdXJjZTooTlNTdHJpbmcgKilzb3VyY2UgYW4KICAgICBpZiAoIXZhbGlkYXRl
Qnl0ZWNvZGVDYWNoZVBhdGgoY2FjaGVQYXRoLCBlcnJvcikpCiAgICAgICAgIHJldHVybiBuaWw7
CiAKLSAgICBKU1NjcmlwdCAqcmVzdWx0ID0gW1tbSlNTY3JpcHQgYWxsb2NdIGluaXRdIGF1dG9y
ZWxlYXNlXTsKKyAgICBhdXRvIHJlc3VsdCA9IGFkb3B0TlMoW1tKU1NjcmlwdCBhbGxvY10gaW5p
dF0pOwogICAgIHJlc3VsdC0+bV92aXJ0dWFsTWFjaGluZSA9IHZtOwogICAgIHJlc3VsdC0+bV90
eXBlID0gdHlwZTsKICAgICByZXN1bHQtPm1fc291cmNlID0gc291cmNlOwogICAgIHJlc3VsdC0+
bV9zb3VyY2VVUkwgPSBzb3VyY2VVUkw7CiAgICAgcmVzdWx0LT5tX2NhY2hlUGF0aCA9IGNhY2hl
UGF0aDsKICAgICBbcmVzdWx0IHJlYWRDYWNoZV07Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICBy
ZXR1cm4gcmVzdWx0LmF1dG9yZWxlYXNlKCk7CiB9CiAKICsgKGluc3RhbmNldHlwZSlzY3JpcHRP
ZlR5cGU6KEpTU2NyaXB0VHlwZSl0eXBlIG1lbW9yeU1hcHBlZEZyb21BU0NJSUZpbGU6KE5TVVJM
ICopZmlsZVBhdGggd2l0aFNvdXJjZVVSTDooTlNVUkwgKilzb3VyY2VVUkwgYW5kQnl0ZWNvZGVD
YWNoZTooTlNVUkwgKiljYWNoZVBhdGggaW5WaXJ0dWFsTWFjaGluZTooSlNWaXJ0dWFsTWFjaGlu
ZSAqKXZtIGVycm9yOihvdXQgTlNFcnJvciAqKillcnJvcgpAQCAtMTM4LDcgKzEzOCw3IEBAICsg
KGluc3RhbmNldHlwZSlzY3JpcHRPZlR5cGU6KEpTU2NyaXB0VHlwZSl0eXBlIG1lbW9yeU1hcHBl
ZEZyb21BU0NJSUZpbGU6KE5TVVJMCiAgICAgaWYgKCFjaGFyYWN0ZXJzQXJlQWxsQVNDSUkocmVp
bnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KGZpbGVEYXRhLmRhdGEoKSksIGZpbGVEYXRhLnNp
emUoKSkpCiAgICAgICAgIHJldHVybiBjcmVhdGVFcnJvcihbTlNTdHJpbmcgc3RyaW5nV2l0aEZv
cm1hdDpAIk5vdCBhbGwgY2hhcmFjdGVycyBpbiBmaWxlIGF0ICVAIGFyZSBBU0NJSS4iLCBzdGF0
aWNfY2FzdDxOU1N0cmluZyAqPihzeXN0ZW1QYXRoKV0sIGVycm9yKTsKIAotICAgIEpTU2NyaXB0
ICpyZXN1bHQgPSBbW1tKU1NjcmlwdCBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOworICAgIGF1
dG8gcmVzdWx0ID0gYWRvcHROUyhbW0pTU2NyaXB0IGFsbG9jXSBpbml0XSk7CiAgICAgcmVzdWx0
LT5tX3ZpcnR1YWxNYWNoaW5lID0gdm07CiAgICAgcmVzdWx0LT5tX3R5cGUgPSB0eXBlOwogICAg
IHJlc3VsdC0+bV9zb3VyY2UgPSBTdHJpbmcoU3RyaW5nSW1wbDo6Y3JlYXRlV2l0aG91dENvcHlp
bmcoYml0d2lzZV9jYXN0PGNvbnN0IExDaGFyKj4oZmlsZURhdGEuZGF0YSgpKSwgZmlsZURhdGEu
c2l6ZSgpKSk7CkBAIC0xNDYsNyArMTQ2LDcgQEAgKyAoaW5zdGFuY2V0eXBlKXNjcmlwdE9mVHlw
ZTooSlNTY3JpcHRUeXBlKXR5cGUgbWVtb3J5TWFwcGVkRnJvbUFTQ0lJRmlsZTooTlNVUkwKICAg
ICByZXN1bHQtPm1fc291cmNlVVJMID0gc291cmNlVVJMOwogICAgIHJlc3VsdC0+bV9jYWNoZVBh
dGggPSBjYWNoZVBhdGg7CiAgICAgW3Jlc3VsdCByZWFkQ2FjaGVdOwotICAgIHJldHVybiByZXN1
bHQ7CisgICAgcmV0dXJuIHJlc3VsdC5hdXRvcmVsZWFzZSgpOwogfQogCiAtICh2b2lkKXJlYWRD
YWNoZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZpcnR1YWxNYWNo
aW5lLm1tIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZpcnR1YWxNYWNoaW5lLm1tCmlu
ZGV4IDE3YjMyYTY2NjcwYjAwNTQ2MWRhZjdhZjE3YWExNzFjZTViOGE5OTEuLmFkMmIwNWJjNzVh
YzNlMGM5ODRlMWE2N2VlZGUyZTVkNzEzNzViMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvSlNWaXJ0dWFsTWFjaGluZS5tbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTVmlydHVhbE1hY2hpbmUubW0KQEAgLTIzNiw3ICsyMzYsNyBAQCArIChKU1ZpcnR1
YWxNYWNoaW5lICopdmlydHVhbE1hY2hpbmVXaXRoQ29udGV4dEdyb3VwUmVmOihKU0NvbnRleHRH
cm91cFJlZilncm91cAogewogICAgIEpTVmlydHVhbE1hY2hpbmUgKnZpcnR1YWxNYWNoaW5lID0g
W0pTVk1XcmFwcGVyQ2FjaGUgd3JhcHBlckZvckpTQ29udGV4dEdyb3VwUmVmOmdyb3VwXTsKICAg
ICBpZiAoIXZpcnR1YWxNYWNoaW5lKQotICAgICAgICB2aXJ0dWFsTWFjaGluZSA9IFtbW0pTVmly
dHVhbE1hY2hpbmUgYWxsb2NdIGluaXRXaXRoQ29udGV4dEdyb3VwUmVmOmdyb3VwXSBhdXRvcmVs
ZWFzZV07CisgICAgICAgIHZpcnR1YWxNYWNoaW5lID0gYWRvcHROUyhbW0pTVmlydHVhbE1hY2hp
bmUgYWxsb2NdIGluaXRXaXRoQ29udGV4dEdyb3VwUmVmOmdyb3VwXSkuYXV0b3JlbGVhc2UoKTsK
ICAgICByZXR1cm4gdmlydHVhbE1hY2hpbmU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvSlNXcmFwcGVyTWFwLm1tIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS9KU1dyYXBwZXJNYXAubW0KaW5kZXggMTQ1NTZiNTc3MTNlNzMwYWU1MmJkZjk1MmU2NjkxNDIw
ODU5ZWIxOC4uODUyZmI5MjkzZjYwYmQ5YjdlNDZjM2VjNzUwZjMyMjkxMTVjZWQxNCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1dyYXBwZXJNYXAubW0KKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1dyYXBwZXJNYXAubW0KQEAgLTYzNSw3ICs2MzUsNyBA
QCAtIChKU09iakNDbGFzc0luZm8qKWNsYXNzSW5mb0ZvckNsYXNzOihDbGFzcyljbHMKICAgICAg
ICAgICAgIHJldHVybiBtX2NsYXNzTWFwLmdldCgpWyhpZCljbHNdID0gW3NlbGYgY2xhc3NJbmZv
Rm9yQ2xhc3M6Y2xhc3NfZ2V0U3VwZXJjbGFzcyhjbHMpXTsKICAgICB9CiAKLSAgICByZXR1cm4g
bV9jbGFzc01hcC5nZXQoKVsoaWQpY2xzXSA9IFtbW0pTT2JqQ0NsYXNzSW5mbyBhbGxvY10gaW5p
dEZvckNsYXNzOmNsc10gYXV0b3JlbGVhc2VdOworICAgIHJldHVybiBtX2NsYXNzTWFwLmdldCgp
WyhpZCljbHNdID0gYWRvcHROUyhbW0pTT2JqQ0NsYXNzSW5mbyBhbGxvY10gaW5pdEZvckNsYXNz
OmNsc10pLmF1dG9yZWxlYXNlKCk7CiB9CiAKIC0gKEpTVmFsdWUgKilqc1dyYXBwZXJGb3JPYmpl
Y3Q6KGlkKW9iamVjdCBpbkNvbnRleHQ6KEpTQ29udGV4dCAqKWNvbnRleHQKQEAgLTY2Niw3ICs2
NjYsNyBAQCAtIChKU1ZhbHVlICopb2JqY1dyYXBwZXJGb3JKU1ZhbHVlUmVmOihKU1ZhbHVlUmVm
KXZhbHVlIGluQ29udGV4dDpjb250ZXh0CiAgICAgQVNTRVJUKHRvSlNHbG9iYWxPYmplY3QoW2Nv
bnRleHQgSlNHbG9iYWxDb250ZXh0UmVmXSktPndyYXBwZXJNYXAoKSA9PSBzZWxmKTsKICAgICBK
U1ZhbHVlICp3cmFwcGVyID0gKF9fYnJpZGdlIEpTVmFsdWUgKilOU01hcEdldChtX2NhY2hlZE9i
akNXcmFwcGVycy5nZXQoKSwgdmFsdWUpOwogICAgIGlmICghd3JhcHBlcikgewotICAgICAgICB3
cmFwcGVyID0gW1tbSlNWYWx1ZSBhbGxvY10gaW5pdFdpdGhWYWx1ZTp2YWx1ZSBpbkNvbnRleHQ6
Y29udGV4dF0gYXV0b3JlbGVhc2VdOworICAgICAgICB3cmFwcGVyID0gYWRvcHROUyhbW0pTVmFs
dWUgYWxsb2NdIGluaXRXaXRoVmFsdWU6dmFsdWUgaW5Db250ZXh0OmNvbnRleHRdKS5hdXRvcmVs
ZWFzZSgpOwogICAgICAgICBOU01hcEluc2VydChtX2NhY2hlZE9iakNXcmFwcGVycy5nZXQoKSwg
dmFsdWUsIChfX2JyaWRnZSB2b2lkKil3cmFwcGVyKTsKICAgICB9CiAgICAgcmV0dXJuIHdyYXBw
ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9j
b2NvYS9SZW1vdGVDb25uZWN0aW9uVG9UYXJnZXRDb2NvYS5tbSBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvcmVtb3RlL2NvY29hL1JlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldENvY29h
Lm1tCmluZGV4IDEyMjExOTAzMTg5ODE3OTNkODExMDBjMGRhNmFkOGI5MmI0ZDMwYzIuLjUxMGY0
OWI2ZDc0ZTcyYjkyMTMyNmY1NmYzNmFlN2JkN2E5YjU3MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL2NvY29hL1JlbW90ZUNvbm5lY3Rpb25Ub1Rh
cmdldENvY29hLm1tCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3Rl
L2NvY29hL1JlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldENvY29hLm1tCkBAIC0xMjgsMTIgKzEyOCwx
MiBAQCBPcHRpb25hbDxUYXJnZXRJRD4gUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0Ojp0YXJnZXRJ
ZGVudGlmaWVyKCkgY29uc3QKIAogTlNTdHJpbmcgKlJlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldDo6
Y29ubmVjdGlvbklkZW50aWZpZXIoKSBjb25zdAogewotICAgIHJldHVybiBbW21fY29ubmVjdGlv
bklkZW50aWZpZXIgY29weV0gYXV0b3JlbGVhc2VdOworICAgIHJldHVybiBhZG9wdE5TKFttX2Nv
bm5lY3Rpb25JZGVudGlmaWVyIGNvcHldKS5hdXRvcmVsZWFzZSgpOwogfQogCiBOU1N0cmluZyAq
UmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0OjpkZXN0aW5hdGlvbigpIGNvbnN0CiB7Ci0gICAgcmV0
dXJuIFtbbV9kZXN0aW5hdGlvbiBjb3B5XSBhdXRvcmVsZWFzZV07CisgICAgcmV0dXJuIGFkb3B0
TlMoW21fZGVzdGluYXRpb24gY29weV0pLmF1dG9yZWxlYXNlKCk7CiB9CiAKIHZvaWQgUmVtb3Rl
Q29ubmVjdGlvblRvVGFyZ2V0OjpkaXNwYXRjaEFzeW5jT25UYXJnZXQoRnVuY3Rpb248dm9pZCAo
KT4mJiBjYWxsYmFjaykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3Ivc2NyaXB0cy9jb2RlZ2VuL29iamNfZ2VuZXJhdG9yLnB5IGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vb2JqY19nZW5lcmF0b3IucHkKaW5kZXggYTJk
Mzc2ZGYzYjk0M2RkYzkxNjc4YmJiYTVhMmVkM2YwMmUzNzBjMC4uNDk2NDM0MjA1MTQ3OGViYjI5
M2EzYTE4ODg1MDE0YmQxMTcyY2IwYyAxMDA3NTUKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vb2JqY19nZW5lcmF0b3IucHkKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vb2JqY19nZW5lcmF0b3Iu
cHkKQEAgLTQwNSw3ICs0MDUsNyBAQCBjbGFzcyBPYmpDR2VuZXJhdG9yKEdlbmVyYXRvcik6CiAg
ICAgICAgICAgICByZXR1cm4gdmFyX25hbWUKICAgICAgICAgaWYgY2F0ZWdvcnkgPT0gT2JqQ1R5
cGVDYXRlZ29yeS5PYmplY3Q6CiAgICAgICAgICAgICBvYmpjX2NsYXNzID0gc2VsZi5vYmpjX2Ns
YXNzX2Zvcl90eXBlKHZhcl90eXBlKQotICAgICAgICAgICAgcmV0dXJuICdbW1slcyBhbGxvY10g
aW5pdFdpdGhKU09OT2JqZWN0OiVzXSBhdXRvcmVsZWFzZV0nICUgKG9iamNfY2xhc3MsIHZhcl9u
YW1lKQorICAgICAgICAgICAgcmV0dXJuICdhZG9wdE5TKFtbJXMgYWxsb2NdIGluaXRXaXRoSlNP
Tk9iamVjdDolc10pLmF1dG9yZWxlYXNlKCknICUgKG9iamNfY2xhc3MsIHZhcl9uYW1lKQogICAg
ICAgICBpZiBjYXRlZ29yeSA9PSBPYmpDVHlwZUNhdGVnb3J5LkFycmF5OgogICAgICAgICAgICAg
b2JqY19jbGFzcyA9IHNlbGYub2JqY19jbGFzc19mb3JfdHlwZSh2YXJfdHlwZS5lbGVtZW50X3R5
cGUpCiAgICAgICAgICAgICBpZiBvYmpjX2NsYXNzID09ICdOU1N0cmluZyc6CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0
V3JhcHBlcklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vz
c2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tCmluZGV4IGQ0NzI5MDdmNjM1MzNlNDg2Yjk0NTQ4
MTdiOTM0ZjJiMjJjYmMzMTYuLjI5NmQ5M2QzMGNhMzllNjkzZTkyMDkyZmQzYTQ0NzM4NDJhZDhl
ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vz
c2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tCkBAIC0xODksNyAr
MTg5LDcgQEAgKyAoV2ViQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIgKil0ZXh0TWFya2VyV2l0aFZp
c2libGVQb3NpdGlvbjooVmlzaWJsZVBvc2l0aW9uJikKICAgICBhdXRvIHRleHRNYXJrZXJEYXRh
ID0gY2FjaGUtPnRleHRNYXJrZXJEYXRhRm9yVmlzaWJsZVBvc2l0aW9uKHZpc2libGVQb3MpOwog
ICAgIGlmICghdGV4dE1hcmtlckRhdGEpCiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgcmV0dXJu
IFtbW1dlYkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyIGFsbG9jXSBpbml0V2l0aFRleHRNYXJrZXI6
JnRleHRNYXJrZXJEYXRhLnZhbHVlKCkgY2FjaGU6Y2FjaGVdIGF1dG9yZWxlYXNlXTsKKyAgICBy
ZXR1cm4gYWRvcHROUyhbW1dlYkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyIGFsbG9jXSBpbml0V2l0
aFRleHRNYXJrZXI6JnRleHRNYXJrZXJEYXRhLnZhbHVlKCkgY2FjaGU6Y2FjaGVdKS5hdXRvcmVs
ZWFzZSgpOwogfQogCiArIChXZWJBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciAqKXRleHRNYXJrZXJX
aXRoQ2hhcmFjdGVyT2Zmc2V0OihDaGFyYWN0ZXJPZmZzZXQmKWNoYXJhY3Rlck9mZnNldCBjYWNo
ZTooQVhPYmplY3RDYWNoZSopY2FjaGUKQEAgLTIwNCw3ICsyMDQsNyBAQCArIChXZWJBY2Nlc3Np
YmlsaXR5VGV4dE1hcmtlciAqKXRleHRNYXJrZXJXaXRoQ2hhcmFjdGVyT2Zmc2V0OihDaGFyYWN0
ZXJPZmZzZXQmKQogICAgIGNhY2hlLT50ZXh0TWFya2VyRGF0YUZvckNoYXJhY3Rlck9mZnNldCh0
ZXh0TWFya2VyRGF0YSwgY2hhcmFjdGVyT2Zmc2V0KTsKICAgICBpZiAoIXRleHRNYXJrZXJEYXRh
LmF4SUQgJiYgIXRleHRNYXJrZXJEYXRhLmlnbm9yZWQpCiAgICAgICAgIHJldHVybiBuaWw7Ci0g
ICAgcmV0dXJuIFtbW1dlYkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyIGFsbG9jXSBpbml0V2l0aFRl
eHRNYXJrZXI6JnRleHRNYXJrZXJEYXRhIGNhY2hlOmNhY2hlXSBhdXRvcmVsZWFzZV07CisgICAg
cmV0dXJuIGFkb3B0TlMoW1tXZWJBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciBhbGxvY10gaW5pdFdp
dGhUZXh0TWFya2VyOiZ0ZXh0TWFya2VyRGF0YSBjYWNoZTpjYWNoZV0pLmF1dG9yZWxlYXNlKCk7
CiB9CiAKICsgKFdlYkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyICopc3RhcnRPckVuZFRleHRNYXJr
ZXJGb3JSYW5nZTooY29uc3QgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+JilyYW5nZSBpc1N0YXJ0OihC
T09MKWlzU3RhcnQgY2FjaGU6KEFYT2JqZWN0Q2FjaGUqKWNhY2hlCkBAIC0yMTcsNyArMjE3LDcg
QEAgKyAoV2ViQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIgKilzdGFydE9yRW5kVGV4dE1hcmtlckZv
clJhbmdlOihjb25zdCBPcHRpb25hbDxTaW0KICAgICBjYWNoZS0+c3RhcnRPckVuZFRleHRNYXJr
ZXJEYXRhRm9yUmFuZ2UodGV4dE1hcmtlckRhdGEsICpyYW5nZSwgaXNTdGFydCk7CiAgICAgaWYg
KCF0ZXh0TWFya2VyRGF0YS5heElEKQogICAgICAgICByZXR1cm4gbmlsOwotICAgIHJldHVybiBb
W1tXZWJBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciBhbGxvY10gaW5pdFdpdGhUZXh0TWFya2VyOiZ0
ZXh0TWFya2VyRGF0YSBjYWNoZTpjYWNoZV0gYXV0b3JlbGVhc2VdOworICAgIHJldHVybiBhZG9w
dE5TKFtbV2ViQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIgYWxsb2NdIGluaXRXaXRoVGV4dE1hcmtl
cjomdGV4dE1hcmtlckRhdGEgY2FjaGU6Y2FjaGVdKS5hdXRvcmVsZWFzZSgpOwogfQogCiAtIChO
U0RhdGEgKilkYXRhUmVwcmVzZW50YXRpb24KQEAgLTI5MCw3ICsyOTAsNyBAQCAtIChCT09MKV9w
cmVwYXJlQWNjZXNzaWJpbGl0eUNhbGwKIHsKICAgICAvLyByZGFyOi8vNzk4MDMxOCBpZiB3ZSBz
dGFydCBhIGNhbGwsIHRoZW4gYmxvY2sgaW4gV2ViVGhyZWFkTG9jaygpLCB0aGVuIHdlJ3JlIGRl
YWxsb2NlZCBvbiBhbm90aGVyLCB0aHJlYWQsIHdlIGNvdWxkCiAgICAgLy8gY3Jhc2gsIHNvIHdl
IHNob3VsZCByZXRhaW4gb3Vyc2VsZiBmb3IgdGhlIGR1cmF0aW9uIG9mIHVzYWdlIGhlcmUuCi0g
ICAgW1tzZWxmIHJldGFpbl0gYXV0b3JlbGVhc2VdOworICAgIHJldGFpblB0cihzZWxmKS5hdXRv
cmVsZWFzZSgpOwogCiAgICAgV2ViVGhyZWFkTG9jaygpOwogICAgIApAQCAtMjMzMyw3ICsyMzMz
LDcgQEAgLSAoTlNBcnJheSAqKWFycmF5T2ZUZXh0Rm9yVGV4dE1hcmtlcnM6KE5TQXJyYXkgKilt
YXJrZXJzIGF0dHJpYnV0ZWQ6KEJPT0wpYXR0cmkKICAgICAgICAgcmV0dXJuIG5pbDsKIAogICAg
IC8vIGl0ZXJhdGUgb3ZlciB0aGUgcmFuZ2UgdG8gYnVpbGQgdGhlIEFYIGF0dHJpYnV0ZWQgc3Ry
aW5nCi0gICAgTlNNdXRhYmxlQXJyYXkqIGFycmF5ID0gW1tOU011dGFibGVBcnJheSBhbGxvY10g
aW5pdF07CisgICAgYXV0byBhcnJheSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10g
aW5pdF0pOwogICAgIFRleHRJdGVyYXRvciBpdCgqcmFuZ2UpOwogICAgIGZvciAoOyAhaXQuYXRF
bmQoKTsgaXQuYWR2YW5jZSgpKSB7CiAgICAgICAgIE5vZGUmIG5vZGUgPSBpdC5yYW5nZSgpLnN0
YXJ0LmNvbnRhaW5lcjsKQEAgLTIzNDMsMTIgKzIzNDMsMTIgQEAgLSAoTlNBcnJheSAqKWFycmF5
T2ZUZXh0Rm9yVGV4dE1hcmtlcnM6KE5TQXJyYXkgKiltYXJrZXJzIGF0dHJpYnV0ZWQ6KEJPT0wp
YXR0cmkKICAgICAgICAgICAgIGlmICghYXR0cmlidXRlZCkgewogICAgICAgICAgICAgICAgIC8v
IEZpcnN0IGNoZWNrIGlmIHRoaXMgaXMgcmVwcmVzZW50ZWQgYnkgYSBsaW5rLgogICAgICAgICAg
ICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGxpbmtPYmplY3QgPSBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0OjphbmNob3JFbGVtZW50Rm9yTm9kZSgmbm9kZSk7Ci0gICAgICAgICAgICAgICAgaWYgKFtz
ZWxmIF9hZGRBY2Nlc3NpYmlsaXR5T2JqZWN0OmxpbmtPYmplY3QgdG9UZXh0TWFya2VyQXJyYXk6
YXJyYXldKQorICAgICAgICAgICAgICAgIGlmIChbc2VsZiBfYWRkQWNjZXNzaWJpbGl0eU9iamVj
dDpsaW5rT2JqZWN0IHRvVGV4dE1hcmtlckFycmF5OmFycmF5LmdldCgpXSkKICAgICAgICAgICAg
ICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgICAgICAgICAvLyBOZXh0IGNoZWNrIGlmIHRo
aXMgcmVnaW9uIGlzIHJlcHJlc2VudGVkIGJ5IGEgaGVhZGluZy4KICAgICAgICAgICAgICAgICBB
Y2Nlc3NpYmlsaXR5T2JqZWN0KiBoZWFkaW5nT2JqZWN0ID0gQWNjZXNzaWJpbGl0eU9iamVjdDo6
aGVhZGluZ0VsZW1lbnRGb3JOb2RlKCZub2RlKTsKLSAgICAgICAgICAgICAgICBpZiAoW3NlbGYg
X2FkZEFjY2Vzc2liaWxpdHlPYmplY3Q6aGVhZGluZ09iamVjdCB0b1RleHRNYXJrZXJBcnJheTph
cnJheV0pCisgICAgICAgICAgICAgICAgaWYgKFtzZWxmIF9hZGRBY2Nlc3NpYmlsaXR5T2JqZWN0
OmhlYWRpbmdPYmplY3QgdG9UZXh0TWFya2VyQXJyYXk6YXJyYXkuZ2V0KCldKQogICAgICAgICAg
ICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICAgICAgICAgIFN0cmluZyBsaXN0TWFya2Vy
VGV4dCA9IEFjY2Vzc2liaWxpdHlPYmplY3Q6Omxpc3RNYXJrZXJUZXh0Rm9yTm9kZUFuZFBvc2l0
aW9uKCZub2RlLCBtYWtlQ29udGFpbmVyT2Zmc2V0UG9zaXRpb24oaXQucmFuZ2UoKS5zdGFydCkp
OwpAQCAtMjM3NSwxMiArMjM3NSwxMiBAQCAtIChOU0FycmF5ICopYXJyYXlPZlRleHRGb3JUZXh0
TWFya2VyczooTlNBcnJheSAqKW1hcmtlcnMgYXR0cmlidXRlZDooQk9PTClhdHRyaQogICAgICAg
ICAgICAgaWYgKHJlcGxhY2VkTm9kZSkgewogICAgICAgICAgICAgICAgIEFjY2Vzc2liaWxpdHlP
YmplY3QqIG9iaiA9IHNlbGYuYXhCYWNraW5nT2JqZWN0LT5heE9iamVjdENhY2hlKCktPmdldE9y
Q3JlYXRlKHJlcGxhY2VkTm9kZS0+cmVuZGVyZXIoKSk7CiAgICAgICAgICAgICAgICAgaWYgKG9i
aiAmJiAhb2JqLT5hY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkpCi0gICAgICAgICAgICAgICAgICAg
IFtzZWxmIF9hZGRBY2Nlc3NpYmlsaXR5T2JqZWN0Om9iaiB0b1RleHRNYXJrZXJBcnJheTphcnJh
eV07CisgICAgICAgICAgICAgICAgICAgIFtzZWxmIF9hZGRBY2Nlc3NpYmlsaXR5T2JqZWN0Om9i
aiB0b1RleHRNYXJrZXJBcnJheTphcnJheS5nZXQoKV07CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0KICAgICB9CiAKLSAgICByZXR1cm4gW2FycmF5IGF1dG9yZWxlYXNlXTsKKyAgICByZXR1cm4g
YXJyYXkuYXV0b3JlbGVhc2UoKTsKIH0KIAogLy8gRklYTUU6IE5vIHJlYXNvbiBmb3IgdGhpcyB0
byBiZSBhIG1ldGhvZCBpbnN0ZWFkIG9mIGEgZnVuY3Rpb24uCkBAIC0yNTM5LDcgKzI1MzksNyBA
QCAtIChpZClfc3RyaW5nRnJvbVN0YXJ0TWFya2VyOihXZWJBY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
ciopc3RhcnRNYXJrZXIgdG9FbmRNYXJrZQogICAgIAogICAgIE5TQXJyYXkqIGFycmF5ID0gW3Nl
bGYgYXJyYXlPZlRleHRGb3JUZXh0TWFya2VyczpAW3N0YXJ0TWFya2VyLCBlbmRNYXJrZXJdIGF0
dHJpYnV0ZWQ6YXR0cmlidXRlZF07CiAgICAgQ2xhc3MgcmV0dXJuQ2xhc3MgPSBhdHRyaWJ1dGVk
ID8gW05TTXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcgY2xhc3NdIDogW05TTXV0YWJsZVN0cmluZyBj
bGFzc107Ci0gICAgaWQgcmV0dXJuVmFsdWUgPSBbWyhOU1N0cmluZyAqKVtyZXR1cm5DbGFzcyBh
bGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOworICAgIGF1dG8gcmV0dXJuVmFsdWUgPSBhZG9wdE5T
KFsoTlNTdHJpbmcgKilbcmV0dXJuQ2xhc3MgYWxsb2NdIGluaXRdKTsKICAgICAKICAgICBjb25z
dCB1bmljaGFyIGF0dGFjaG1lbnRDaGFyID0gTlNBdHRhY2htZW50Q2hhcmFjdGVyOwogICAgIE5T
SW50ZWdlciBjb3VudCA9IFthcnJheSBjb3VudF07CkBAIC0yNTQ3LDE3ICsyNTQ3LDE3IEBAIC0g
KGlkKV9zdHJpbmdGcm9tU3RhcnRNYXJrZXI6KFdlYkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKilz
dGFydE1hcmtlciB0b0VuZE1hcmtlCiAgICAgICAgIGlkIG9iamVjdCA9IFthcnJheSBvYmplY3RB
dEluZGV4OmtdOwogCiAgICAgICAgIGlmIChhdHRyaWJ1dGVkICYmIFtvYmplY3QgaXNLaW5kT2ZD
bGFzczpbV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgY2xhc3NdXSkKLSAgICAgICAgICAg
IG9iamVjdCA9IFtbW05TTXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoU3Ry
aW5nOltOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomYXR0YWNobWVudENoYXIgbGVuZ3Ro
OjFdIGF0dHJpYnV0ZXM6QHsgVUlBY2Nlc3NpYmlsaXR5VG9rZW5BdHRhY2htZW50IDogb2JqZWN0
IH1dIGF1dG9yZWxlYXNlXTsKKyAgICAgICAgICAgIG9iamVjdCA9IGFkb3B0TlMoW1tOU011dGFi
bGVBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFN0cmluZzpbTlNTdHJpbmcgc3RyaW5n
V2l0aENoYXJhY3RlcnM6JmF0dGFjaG1lbnRDaGFyIGxlbmd0aDoxXSBhdHRyaWJ1dGVzOkB7IFVJ
QWNjZXNzaWJpbGl0eVRva2VuQXR0YWNobWVudCA6IG9iamVjdCB9XSkuYXV0b3JlbGVhc2UoKTsK
ICAgICAgICAgCiAgICAgICAgIGlmICghW29iamVjdCBpc0tpbmRPZkNsYXNzOnJldHVybkNsYXNz
XSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAKICAgICAgICAgaWYgKGF0dHJpYnV0
ZWQpCi0gICAgICAgICAgICBbKE5TTXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcgKilyZXR1cm5WYWx1
ZSBhcHBlbmRBdHRyaWJ1dGVkU3RyaW5nOm9iamVjdF07CisgICAgICAgICAgICBbKE5TTXV0YWJs
ZUF0dHJpYnV0ZWRTdHJpbmcgKilyZXR1cm5WYWx1ZS5nZXQoKSBhcHBlbmRBdHRyaWJ1dGVkU3Ry
aW5nOm9iamVjdF07CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIFsoTlNNdXRhYmxlU3RyaW5n
ICopcmV0dXJuVmFsdWUgYXBwZW5kU3RyaW5nOm9iamVjdF07CisgICAgICAgICAgICBbKE5TTXV0
YWJsZVN0cmluZyAqKXJldHVyblZhbHVlLmdldCgpIGFwcGVuZFN0cmluZzpvYmplY3RdOwogICAg
IH0KLSAgICByZXR1cm4gcmV0dXJuVmFsdWU7CisgICAgcmV0dXJuIHJldHVyblZhbHVlLmF1dG9y
ZWxlYXNlKCk7CiB9CiAKIC0gKGlkKV9zdHJpbmdGb3JSYW5nZTooTlNSYW5nZSlyYW5nZSBhdHRy
aWJ1dGVkOihCT09MKWF0dHJpYnV0ZWQKQEAgLTI4NDcsNyArMjg0Nyw3IEBAIC0gKFdlYkFjY2Vz
c2liaWxpdHlUZXh0TWFya2VyICopbmV4dE1hcmtlckZvckNoYXJhY3Rlck9mZnNldDooQ2hhcmFj
dGVyT2Zmc2V0JiljCiAgICAgY2FjaGUtPnRleHRNYXJrZXJEYXRhRm9yTmV4dENoYXJhY3Rlck9m
ZnNldCh0ZXh0TWFya2VyRGF0YSwgY2hhcmFjdGVyT2Zmc2V0KTsKICAgICBpZiAoIXRleHRNYXJr
ZXJEYXRhLmF4SUQpCiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgcmV0dXJuIFtbW1dlYkFjY2Vz
c2liaWxpdHlUZXh0TWFya2VyIGFsbG9jXSBpbml0V2l0aFRleHRNYXJrZXI6JnRleHRNYXJrZXJE
YXRhIGNhY2hlOmNhY2hlXSBhdXRvcmVsZWFzZV07CisgICAgcmV0dXJuIGFkb3B0TlMoW1tXZWJB
Y2Nlc3NpYmlsaXR5VGV4dE1hcmtlciBhbGxvY10gaW5pdFdpdGhUZXh0TWFya2VyOiZ0ZXh0TWFy
a2VyRGF0YSBjYWNoZTpjYWNoZV0pLmF1dG9yZWxlYXNlKCk7CiB9CiAKIC0gKFdlYkFjY2Vzc2li
aWxpdHlUZXh0TWFya2VyICopcHJldmlvdXNNYXJrZXJGb3JDaGFyYWN0ZXJPZmZzZXQ6KENoYXJh
Y3Rlck9mZnNldCYpY2hhcmFjdGVyT2Zmc2V0CkBAIC0yODYwLDcgKzI4NjAsNyBAQCAtIChXZWJB
Y2Nlc3NpYmlsaXR5VGV4dE1hcmtlciAqKXByZXZpb3VzTWFya2VyRm9yQ2hhcmFjdGVyT2Zmc2V0
OihDaGFyYWN0ZXJPZmZzZQogICAgIGNhY2hlLT50ZXh0TWFya2VyRGF0YUZvclByZXZpb3VzQ2hh
cmFjdGVyT2Zmc2V0KHRleHRNYXJrZXJEYXRhLCBjaGFyYWN0ZXJPZmZzZXQpOwogICAgIGlmICgh
dGV4dE1hcmtlckRhdGEuYXhJRCkKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICByZXR1cm4gW1tb
V2ViQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIgYWxsb2NdIGluaXRXaXRoVGV4dE1hcmtlcjomdGV4
dE1hcmtlckRhdGEgY2FjaGU6Y2FjaGVdIGF1dG9yZWxlYXNlXTsKKyAgICByZXR1cm4gYWRvcHRO
UyhbW1dlYkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyIGFsbG9jXSBpbml0V2l0aFRleHRNYXJrZXI6
JnRleHRNYXJrZXJEYXRhIGNhY2hlOmNhY2hlXSkuYXV0b3JlbGVhc2UoKTsKIH0KIAogLSAoT3B0
aW9uYWw8U2ltcGxlUmFuZ2U+KXJhbmdlRm9yVGV4dE1hcmtlcnM6KE5TQXJyYXkgKil0ZXh0TWFy
a2VycwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvQVhPYmpl
Y3RDYWNoZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL0FYT2JqZWN0
Q2FjaGVNYWMubW0KaW5kZXggZGM0Y2QxMzA5MzAxZTJjNjk2NTMwYTY1NmYwNjI1Mjk5OTliMmNk
Yi4uYjdjZmY3NGU3NjJhMjhlMDQ1NTc0NjQxNjEyZGU4NGI1Njk0MWYyNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvQVhPYmplY3RDYWNoZU1hYy5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9BWE9iamVjdENhY2hlTWFjLm1tCkBA
IC00ODksMTUgKzQ4OSwxNSBAQCBzdGF0aWMgTlNEaWN0aW9uYXJ5ICp0ZXh0UmVwbGFjZW1lbnRD
aGFuZ2VEaWN0aW9uYXJ5KEFYQ29yZU9iamVjdCYgb2JqZWN0LCBBWFRleAogICAgIE5TVUludGVn
ZXIgbGVuZ3RoID0gW3RleHQgbGVuZ3RoXTsKICAgICBpZiAoIWxlbmd0aCkKICAgICAgICAgcmV0
dXJuIG5pbDsKLSAgICBOU011dGFibGVEaWN0aW9uYXJ5ICpjaGFuZ2UgPSBbW05TTXV0YWJsZURp
Y3Rpb25hcnkgYWxsb2NdIGluaXRXaXRoQ2FwYWNpdHk6NF07CisgICAgYXV0byBjaGFuZ2UgPSBh
ZG9wdE5TKFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdFdpdGhDYXBhY2l0eTo0XSk7
CiAgICAgW2NoYW5nZSBzZXRPYmplY3Q6QChwbGF0Zm9ybUVkaXRUeXBlRm9yV2ViQ29yZUVkaXRU
eXBlKHR5cGUpKSBmb3JLZXk6TlNBY2Nlc3NpYmlsaXR5VGV4dEVkaXRUeXBlXTsKICAgICBpZiAo
bGVuZ3RoID4gQVhWYWx1ZUNoYW5nZVRydW5jYXRpb25MZW5ndGgpIHsKICAgICAgICAgW2NoYW5n
ZSBzZXRPYmplY3Q6QChsZW5ndGgpIGZvcktleTpOU0FjY2Vzc2liaWxpdHlUZXh0Q2hhbmdlVmFs
dWVMZW5ndGhdOwogICAgICAgICB0ZXh0ID0gW3RleHQgc3Vic3RyaW5nVG9JbmRleDpBWFZhbHVl
Q2hhbmdlVHJ1bmNhdGlvbkxlbmd0aF07CiAgICAgfQogICAgIFtjaGFuZ2Ugc2V0T2JqZWN0OnRl
eHQgZm9yS2V5Ok5TQWNjZXNzaWJpbGl0eVRleHRDaGFuZ2VWYWx1ZV07Ci0gICAgYWRkVGV4dE1h
cmtlckZvcihjaGFuZ2UsIG9iamVjdCwgbWFya2VyVGFyZ2V0KTsKLSAgICByZXR1cm4gW2NoYW5n
ZSBhdXRvcmVsZWFzZV07CisgICAgYWRkVGV4dE1hcmtlckZvcihjaGFuZ2UuZ2V0KCksIG9iamVj
dCwgbWFya2VyVGFyZ2V0KTsKKyAgICByZXR1cm4gY2hhbmdlLmF1dG9yZWxlYXNlKCk7CiB9CiAK
IHZvaWQgQVhPYmplY3RDYWNoZTo6cG9zdFRleHRTdGF0ZUNoYW5nZVBsYXRmb3JtTm90aWZpY2F0
aW9uKEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iamVjdCwgQVhUZXh0RWRpdFR5cGUgdHlwZSwgY29u
c3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBWaXNpYmxlUG9zaXRpb24mIHBvc2l0aW9uKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9i
amVjdFdyYXBwZXJCYXNlLm1tIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2Vi
QWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlLm1tCmluZGV4IGFjYWJmYTJjNDdiYTBjMmQx
MWE4MjdiMjk2MDdkY2ZlZjc2ZGVjMDkuLjI0ZmM4YzVlYzNmMzIzM2Y2ZmY1Nzc3ZjE1ZTM5Yzdm
YmExMzljZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dl
YkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UubW0KQEAg
LTUyNyw3ICs1MjcsNyBAQCBzdGF0aWMgYm9vbCBpc1ZhbHVlVHlwZVN1cHBvcnRlZChpZCB2YWx1
ZSkKIHN0YXRpYyBOU0FycmF5ICphcnJheVJlbW92aW5nTm9uU3VwcG9ydGVkVHlwZXMoTlNBcnJh
eSAqYXJyYXkpCiB7CiAgICAgQVNTRVJUKFthcnJheSBpc0tpbmRPZkNsYXNzOltOU0FycmF5IGNs
YXNzXV0pOwotICAgIE5TTXV0YWJsZUFycmF5ICptdXRhYmxlQXJyYXkgPSBbYXJyYXkgbXV0YWJs
ZUNvcHldOworICAgIGF1dG8gbXV0YWJsZUFycmF5ID0gYWRvcHROUyhbYXJyYXkgbXV0YWJsZUNv
cHldKTsKICAgICBmb3IgKE5TVUludGVnZXIgaSA9IDA7IGkgPCBbbXV0YWJsZUFycmF5IGNvdW50
XTspIHsKICAgICAgICAgaWQgdmFsdWUgPSBbbXV0YWJsZUFycmF5IG9iamVjdEF0SW5kZXg6aV07
CiAgICAgICAgIGlmIChbdmFsdWUgaXNLaW5kT2ZDbGFzczpbTlNEaWN0aW9uYXJ5IGNsYXNzXV0p
CkBAIC01NDAsNyArNTQwLDcgQEAgc3RhdGljIE5TQXJyYXkgKmFycmF5UmVtb3ZpbmdOb25TdXBw
b3J0ZWRUeXBlcyhOU0FycmF5ICphcnJheSkKICAgICAgICAgfQogICAgICAgICBpKys7CiAgICAg
fQotICAgIHJldHVybiBbbXV0YWJsZUFycmF5IGF1dG9yZWxlYXNlXTsKKyAgICByZXR1cm4gbXV0
YWJsZUFycmF5LmF1dG9yZWxlYXNlKCk7CiB9CiAKIHN0YXRpYyBOU0RpY3Rpb25hcnkgKmRpY3Rp
b25hcnlSZW1vdmluZ05vblN1cHBvcnRlZFR5cGVzKE5TRGljdGlvbmFyeSAqZGljdGlvbmFyeSkK
QEAgLTU0OCw3ICs1NDgsNyBAQCBzdGF0aWMgTlNEaWN0aW9uYXJ5ICpkaWN0aW9uYXJ5UmVtb3Zp
bmdOb25TdXBwb3J0ZWRUeXBlcyhOU0RpY3Rpb25hcnkgKmRpY3Rpb25hcgogICAgIGlmICghZGlj
dGlvbmFyeSkKICAgICAgICAgcmV0dXJuIG5pbDsKICAgICBBU1NFUlQoW2RpY3Rpb25hcnkgaXNL
aW5kT2ZDbGFzczpbTlNEaWN0aW9uYXJ5IGNsYXNzXV0pOwotICAgIE5TTXV0YWJsZURpY3Rpb25h
cnkgKm11dGFibGVEaWN0aW9uYXJ5ID0gW2RpY3Rpb25hcnkgbXV0YWJsZUNvcHldOworICAgIGF1
dG8gbXV0YWJsZURpY3Rpb25hcnkgPSBhZG9wdE5TKFtkaWN0aW9uYXJ5IG11dGFibGVDb3B5XSk7
CiAgICAgZm9yIChOU1N0cmluZyAqa2V5IGluIGRpY3Rpb25hcnkpIHsKICAgICAgICAgaWQgdmFs
dWUgPSBbZGljdGlvbmFyeSBvYmplY3RGb3JLZXk6a2V5XTsKICAgICAgICAgaWYgKFt2YWx1ZSBp
c0tpbmRPZkNsYXNzOltOU0RpY3Rpb25hcnkgY2xhc3NdXSkKQEAgLTU1OCw3ICs1NTgsNyBAQCBz
dGF0aWMgTlNEaWN0aW9uYXJ5ICpkaWN0aW9uYXJ5UmVtb3ZpbmdOb25TdXBwb3J0ZWRUeXBlcyhO
U0RpY3Rpb25hcnkgKmRpY3Rpb25hcgogICAgICAgICBlbHNlIGlmICghaXNWYWx1ZVR5cGVTdXBw
b3J0ZWQodmFsdWUpKQogICAgICAgICAgICAgW211dGFibGVEaWN0aW9uYXJ5IHJlbW92ZU9iamVj
dEZvcktleTprZXldOwogICAgIH0KLSAgICByZXR1cm4gW211dGFibGVEaWN0aW9uYXJ5IGF1dG9y
ZWxlYXNlXTsKKyAgICByZXR1cm4gbXV0YWJsZURpY3Rpb25hcnkuYXV0b3JlbGVhc2UoKTsKIH0K
IAogLSAodm9pZClhY2Nlc3NpYmlsaXR5UG9zdGVkTm90aWZpY2F0aW9uOihOU1N0cmluZyAqKW5v
dGlmaWNhdGlvbk5hbWUgdXNlckluZm86KE5TRGljdGlvbmFyeSAqKXVzZXJJbmZvCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9XZWJTY3JpcHRPYmplY3QubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9XZWJTY3JpcHRPYmplY3QubW0KaW5kZXggM2ExMDYyYTEz
MTZhYTQ5ZTc1YmE5MmQzYjNlYjZjNzcxOWFjYmExMS4uYmQ1MmNiNDkxODg2YmVlNGNkNjM5ODdm
MjIwM2Q0MmI3YjQ1YTljZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMv
V2ViU2NyaXB0T2JqZWN0Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL1dlYlNj
cmlwdE9iamVjdC5tbQpAQCAtODYsNyArODYsNyBAQCBOU09iamVjdCAqZ2V0SlNXcmFwcGVyKEpT
T2JqZWN0KiBpbXBsKQogICAgIExvY2tIb2xkZXIgaG9sZGVyKCZzcGluTG9jayk7CiAKICAgICBO
U09iamVjdCogd3JhcHBlciA9IHdyYXBwZXJDYWNoZSgpLmdldChpbXBsKTsKLSAgICByZXR1cm4g
d3JhcHBlciA/IFtbd3JhcHBlciByZXRhaW5dIGF1dG9yZWxlYXNlXSA6IG5pbDsKKyAgICByZXR1
cm4gd3JhcHBlciA/IHJldGFpblB0cih3cmFwcGVyKS5hdXRvcmVsZWFzZSgpIDogbmlsOwogfQog
CiB2b2lkIGFkZEpTV3JhcHBlcihOU09iamVjdCAqd3JhcHBlciwgSlNPYmplY3QqIGltcGwpCkBA
IC0xMTYsNyArMTE2LDcgQEAgaWQgY3JlYXRlSlNXcmFwcGVyKEpTQzo6SlNPYmplY3QqIG9iamVj
dCwgUmVmUHRyPEpTQzo6QmluZGluZ3M6OlJvb3RPYmplY3Q+JiYgb3IKIHsKICAgICBpZiAoaWQg
d3JhcHBlciA9IGdldEpTV3JhcHBlcihvYmplY3QpKQogICAgICAgICByZXR1cm4gd3JhcHBlcjsK
LSAgICByZXR1cm4gW1tbV2ViU2NyaXB0T2JqZWN0IGFsbG9jXSBfaW5pdFdpdGhKU09iamVjdDpv
YmplY3Qgb3JpZ2luUm9vdE9iamVjdDpXVEZNb3ZlKG9yaWdpbikgcm9vdE9iamVjdDpXVEZNb3Zl
KHJvb3QpXSBhdXRvcmVsZWFzZV07CisgICAgcmV0dXJuIGFkb3B0TlMoW1tXZWJTY3JpcHRPYmpl
Y3QgYWxsb2NdIF9pbml0V2l0aEpTT2JqZWN0Om9iamVjdCBvcmlnaW5Sb290T2JqZWN0OldURk1v
dmUob3JpZ2luKSByb290T2JqZWN0OldURk1vdmUocm9vdCldKS5hdXRvcmVsZWFzZSgpOwogfQog
CiBzdGF0aWMgdm9pZCBhZGRFeGNlcHRpb25Ub0NvbnNvbGUoSlNDOjpKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpFeGNlcHRpb24qIGV4Y2VwdGlvbikKQEAgLTcxNCw3
ICs3MTQsNyBAQCBJR05PUkVfV0FSTklOR1NfRU5ECiAKICsgKFdlYlVuZGVmaW5lZCAqKXVuZGVm
aW5lZAogewotICAgIHJldHVybiBbW1tXZWJVbmRlZmluZWQgYWxsb2NdIGluaXRdIGF1dG9yZWxl
YXNlXTsKKyAgICByZXR1cm4gYWRvcHROUyhbW1dlYlVuZGVmaW5lZCBhbGxvY10gaW5pdF0pLmF1
dG9yZWxlYXNlKCk7CiB9CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRn
ZS90ZXN0YmluZGluZ3MubW0gYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvdGVzdGJpbmRpbmdzLm1t
CmluZGV4IDRhYzg1NDBiNmZhNzYxMzQ2OTM1ODA4MWExNWExOGE4YjAyMmIxMzcuLjIwYTA2YTNh
MWZhMDg2YzAwOGI0ZDk3OWQ2NzQwM2Q1OGNhNmUzMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JyaWRnZS90ZXN0YmluZGluZ3MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3Rl
c3RiaW5kaW5ncy5tbQpAQCAtNjUsNyArNjUsNyBAQCBAaW50ZXJmYWNlIE15Rmlyc3RJbnRlcmZh
Y2UgOiBOU09iamVjdAogewogICAgIGludCBteUludDsKICAgICBSZXRhaW5QdHI8TXlTZWNvbmRJ
bnRlcmZhY2U+IG15U2Vjb25kSW50ZXJmYWNlOwotICAgIGlkIGpzb2JqZWN0OworICAgIFJldGFp
blB0cjxpZD4ganNvYmplY3Q7CiAgICAgTlNTdHJpbmcgKnN0cmluZzsKIH0KIApAQCAtMTc0LDE1
ICsxNzQsMTQgQEAgLSAodm9pZClsb2dNZXNzYWdlOihOU1N0cmluZyAqKW1lc3NhZ2UgcHJlZml4
OihOU1N0cmluZyAqKXByZWZpeAogCiAtICh2b2lkKXNldEpTT2JqZWN0OihpZClqc28KIHsKLSAg
ICBbanNvYmplY3QgYXV0b3JlbGVhc2VdOwotICAgIGpzb2JqZWN0ID0gW2pzbyByZXRhaW5dOwor
ICAgIGpzb2JqZWN0ID0ganNvOwogfQogCiAtICh2b2lkKWNhbGxKU09iamVjdDooaW50KWFyZzEg
OihpbnQpYXJnMgogewotICAgIGlkIGZvbzEgPSBbanNvYmplY3QgY2FsbFdlYlNjcmlwdE1ldGhv
ZDpAImNhbGwiIHdpdGhBcmd1bWVudHM6W05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0czpqc29iamVj
dCwgW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6YXJnMV0sIFtOU051bWJlciBudW1iZXJXaXRoSW50
OmFyZzJdLCBuaWxdXTsKKyAgICBpZCBmb28xID0gW2pzb2JqZWN0IGNhbGxXZWJTY3JpcHRNZXRo
b2Q6QCJjYWxsIiB3aXRoQXJndW1lbnRzOltOU0FycmF5IGFycmF5V2l0aE9iamVjdHM6anNvYmpl
Y3QuZ2V0KCksIFtOU051bWJlciBudW1iZXJXaXRoSW50OmFyZzFdLCBbTlNOdW1iZXIgbnVtYmVy
V2l0aEludDphcmcyXSwgbmlsXV07CiAgICAgcHJpbnRmICgiZm9vICh2aWEgY2FsbCkgPSAlc1xu
IiwgW1tmb28xIGRlc2NyaXB0aW9uXSBsb3NzeUNTdHJpbmddICk7Ci0gICAgaWQgZm9vMiA9IFtq
c29iamVjdCBjYWxsV2ViU2NyaXB0TWV0aG9kOkAiYXBwbHkiIHdpdGhBcmd1bWVudHM6W05TQXJy
YXkgYXJyYXlXaXRoT2JqZWN0czpqc29iamVjdCwgW05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0czpb
TlNOdW1iZXIgbnVtYmVyV2l0aEludDphcmcxXSwgW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6YXJn
Ml0sIG5pbF0sIG5pbF1dOworICAgIGlkIGZvbzIgPSBbanNvYmplY3QgY2FsbFdlYlNjcmlwdE1l
dGhvZDpAImFwcGx5IiB3aXRoQXJndW1lbnRzOltOU0FycmF5IGFycmF5V2l0aE9iamVjdHM6anNv
YmplY3QuZ2V0KCksIFtOU0FycmF5IGFycmF5V2l0aE9iamVjdHM6W05TTnVtYmVyIG51bWJlcldp
dGhJbnQ6YXJnMV0sIFtOU051bWJlciBudW1iZXJXaXRoSW50OmFyZzJdLCBuaWxdLCBuaWxdXTsK
ICAgICBwcmludGYgKCJmb28gKHZpYSBhcHBseSkgPSAlc1xuIiwgW1tmb28yIGRlc2NyaXB0aW9u
XSBsb3NzeUNTdHJpbmddICk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvY29jb2EvSFRNTENvbnZlcnRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2Ev
SFRNTENvbnZlcnRlci5tbQppbmRleCA2OWZhNjE1MTUyMDNlZWRkYjFiNzc2Y2E4NmNkNTU5ODBm
MTYyY2RmLi4wM2JkMmQ2ZWJhM2IzNWZlNmRjMzk1MzIyNmZiZDhkNTYwYmVjZmU5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCkBAIC0yMjYsNyAr
MjI2LDcgQEAgLSAoTlNJbnRlZ2VyKXJvd1NwYW47CiBAZW5kCiAKICNlbHNlCi1zdGF0aWMgTlNG
aWxlV3JhcHBlciAqZmlsZVdyYXBwZXJGb3JVUkwoRG9jdW1lbnRMb2FkZXIgKiwgTlNVUkwgKik7
CitzdGF0aWMgUmV0YWluUHRyPE5TRmlsZVdyYXBwZXI+IGZpbGVXcmFwcGVyRm9yVVJMKERvY3Vt
ZW50TG9hZGVyICosIE5TVVJMICopOwogc3RhdGljIFJldGFpblB0cjxOU0ZpbGVXcmFwcGVyPiBm
aWxlV3JhcHBlckZvckVsZW1lbnQoSFRNTEltYWdlRWxlbWVudCYpOwogCiBAaW50ZXJmYWNlIE5T
VGV4dEF0dGFjaG1lbnQgKFdlYkNvcmVOU1RleHRBdHRhY2htZW50KQpAQCAtNzY0LDcgKzc2NCw3
IEBAIGJvb2wgSFRNTENvbnZlcnRlckNhY2hlczo6ZmxvYXRQcm9wZXJ0eVZhbHVlRm9yTm9kZShO
b2RlJiBub2RlLCBDU1NQcm9wZXJ0eUlEIHByCiAKIHN0YXRpYyBpbmxpbmUgTlNTaGFkb3cgKl9z
aGFkb3dGb3JTaGFkb3dTdHlsZShOU1N0cmluZyAqc2hhZG93U3R5bGUpCiB7Ci0gICAgTlNTaGFk
b3cgKnNoYWRvdyA9IG5pbDsKKyAgICBSZXRhaW5QdHI8TlNTaGFkb3c+IHNoYWRvdzsKICAgICBO
U1VJbnRlZ2VyIHNoYWRvd1N0eWxlTGVuZ3RoID0gW3NoYWRvd1N0eWxlIGxlbmd0aF07CiAgICAg
TlNSYW5nZSBvcGVuUGFyZW5SYW5nZSA9IFtzaGFkb3dTdHlsZSByYW5nZU9mU3RyaW5nOkAiKCJd
OwogICAgIE5TUmFuZ2UgY2xvc2VQYXJlblJhbmdlID0gW3NoYWRvd1N0eWxlIHJhbmdlT2ZTdHJp
bmc6QCIpIl07CkBAIC04MDYsMTQgKzgwNiwxNCBAQCBzdGF0aWMgaW5saW5lIE5TU2hhZG93ICpf
c2hhZG93Rm9yU2hhZG93U3R5bGUoTlNTdHJpbmcgKnNoYWRvd1N0eWxlKQogICAgICAgICAgICAg
ICAgIGlmICghc3BhY2VSYW5nZS5sZW5ndGgpCiAgICAgICAgICAgICAgICAgICAgIHNwYWNlUmFu
Z2UgPSBOU01ha2VSYW5nZSgwLCAwKTsKICAgICAgICAgICAgICAgICBzaGFkb3dCbHVyUmFkaXVz
ID0gW1tzaGFkb3dTdHlsZSBzdWJzdHJpbmdXaXRoUmFuZ2U6TlNNYWtlUmFuZ2UoTlNNYXhSYW5n
ZShzcGFjZVJhbmdlKSwgdGhpcmRSYW5nZS5sb2NhdGlvbiAtIE5TTWF4UmFuZ2Uoc3BhY2VSYW5n
ZSkpXSBmbG9hdFZhbHVlXTsKLSAgICAgICAgICAgICAgICBzaGFkb3cgPSBbWyhOU1NoYWRvdyAq
KVtQbGF0Zm9ybU5TU2hhZG93IGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07CisgICAgICAgICAg
ICAgICAgc2hhZG93ID0gYWRvcHROUyhbKE5TU2hhZG93ICopW1BsYXRmb3JtTlNTaGFkb3cgYWxs
b2NdIGluaXRdKTsKICAgICAgICAgICAgICAgICBbc2hhZG93IHNldFNoYWRvd0NvbG9yOnNoYWRv
d0NvbG9yXTsKICAgICAgICAgICAgICAgICBbc2hhZG93IHNldFNoYWRvd09mZnNldDpzaGFkb3dP
ZmZzZXRdOwogICAgICAgICAgICAgICAgIFtzaGFkb3cgc2V0U2hhZG93Qmx1clJhZGl1czpzaGFk
b3dCbHVyUmFkaXVzXTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KLSAgICByZXR1
cm4gc2hhZG93OworICAgIHJldHVybiBzaGFkb3cuYXV0b3JlbGVhc2UoKTsKIH0KIAogYm9vbCBI
VE1MQ29udmVydGVyQ2FjaGVzOjppc0Jsb2NrRWxlbWVudChFbGVtZW50JiBlbGVtZW50KQpAQCAt
MTI2Myw3ICsxMjYzLDcgQEAgQk9PTCBIVE1MQ29udmVydGVyOjpfYWRkQXR0YWNobWVudEZvckVs
ZW1lbnQoRWxlbWVudCYgZWxlbWVudCwgTlNVUkwgKnVybCwgQk9PTAogewogICAgIEJPT0wgcmV0
dmFsID0gTk87CiAgICAgQk9PTCBub3RGb3VuZCA9IE5POwotICAgIE5TRmlsZVdyYXBwZXIgKmZp
bGVXcmFwcGVyID0gbmlsOworICAgIFJldGFpblB0cjxOU0ZpbGVXcmFwcGVyPiBmaWxlV3JhcHBl
cjsKICAgICBGcmFtZSogZnJhbWUgPSBlbGVtZW50LmRvY3VtZW50KCkuZnJhbWUoKTsKICAgICBE
b2N1bWVudExvYWRlciAqZGF0YVNvdXJjZSA9IGZyYW1lLT5sb2FkZXIoKS5mcmFtZUhhc0xvYWRl
ZCgpID8gZnJhbWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCkgOiAwOwogICAgIEJPT0wgaWdu
b3JlT3JpZW50YXRpb24gPSBZRVM7CkBAIC0xMjcxLDcgKzEyNzEsNyBAQCBCT09MIEhUTUxDb252
ZXJ0ZXI6Ol9hZGRBdHRhY2htZW50Rm9yRWxlbWVudChFbGVtZW50JiBlbGVtZW50LCBOU1VSTCAq
dXJsLCBCT09MCiAgICAgaWYgKFt1cmwgaXNGaWxlVVJMXSkgewogICAgICAgICBOU1N0cmluZyAq
cGF0aCA9IFtbdXJsIHBhdGhdIHN0cmluZ0J5U3RhbmRhcmRpemluZ1BhdGhdOwogICAgICAgICBp
ZiAocGF0aCkKLSAgICAgICAgICAgIGZpbGVXcmFwcGVyID0gW1tbTlNGaWxlV3JhcHBlciBhbGxv
Y10gaW5pdFdpdGhVUkw6dXJsIG9wdGlvbnM6MCBlcnJvcjpOVUxMXSBhdXRvcmVsZWFzZV07Cisg
ICAgICAgICAgICBmaWxlV3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBp
bml0V2l0aFVSTDp1cmwgb3B0aW9uczowIGVycm9yOk5VTExdKTsKICAgICB9CiAgICAgaWYgKCFm
aWxlV3JhcHBlciAmJiBkYXRhU291cmNlKSB7CiAgICAgICAgIFJlZlB0cjxBcmNoaXZlUmVzb3Vy
Y2U+IHJlc291cmNlID0gZGF0YVNvdXJjZS0+c3VicmVzb3VyY2UodXJsKTsKQEAgLTEyODIsNyAr
MTI4Miw3IEBAIEJPT0wgSFRNTENvbnZlcnRlcjo6X2FkZEF0dGFjaG1lbnRGb3JFbGVtZW50KEVs
ZW1lbnQmIGVsZW1lbnQsIE5TVVJMICp1cmwsIEJPT0wKICAgICAgICAgaWYgKHVzZVBsYWNlaG9s
ZGVyICYmIHJlc291cmNlICYmIG1pbWVUeXBlID09ICJ0ZXh0L2h0bWwiKQogICAgICAgICAgICAg
bm90Rm91bmQgPSBZRVM7CiAgICAgICAgIGlmIChyZXNvdXJjZSAmJiAhbm90Rm91bmQpIHsKLSAg
ICAgICAgICAgIGZpbGVXcmFwcGVyID0gW1tbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3Vs
YXJGaWxlV2l0aENvbnRlbnRzOnJlc291cmNlLT5kYXRhKCkuY3JlYXRlTlNEYXRhKCkuZ2V0KCld
IGF1dG9yZWxlYXNlXTsKKyAgICAgICAgICAgIGZpbGVXcmFwcGVyID0gYWRvcHROUyhbW05TRmls
ZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpyZXNvdXJjZS0+ZGF0
YSgpLmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CiAgICAgICAgICAgICBbZmlsZVdyYXBwZXIgc2V0
UHJlZmVycmVkRmlsZW5hbWU6c3VnZ2VzdGVkRmlsZW5hbWVXaXRoTUlNRVR5cGUodXJsLCBtaW1l
VHlwZSldOwogICAgICAgICB9CiAgICAgfQpAQCAtMTMxNiw3ICsxMzE2LDcgQEAgQk9PTCBIVE1M
Q29udmVydGVyOjpfYWRkQXR0YWNobWVudEZvckVsZW1lbnQoRWxlbWVudCYgZWxlbWVudCwgTlNV
UkwgKnVybCwgQk9PTAogICAgIH0KICAgICBpZiAoZmlsZVdyYXBwZXIgfHwgdXNlUGxhY2Vob2xk
ZXIpIHsKICAgICAgICAgTlNVSW50ZWdlciB0ZXh0TGVuZ3RoID0gW19hdHRyU3RyIGxlbmd0aF07
Ci0gICAgICAgIFJldGFpblB0cjxOU1RleHRBdHRhY2htZW50PiBhdHRhY2htZW50ID0gYWRvcHRO
UyhbW1BsYXRmb3JtTlNUZXh0QXR0YWNobWVudCBhbGxvY10gaW5pdFdpdGhGaWxlV3JhcHBlcjpm
aWxlV3JhcHBlcl0pOworICAgICAgICBSZXRhaW5QdHI8TlNUZXh0QXR0YWNobWVudD4gYXR0YWNo
bWVudCA9IGFkb3B0TlMoW1tQbGF0Zm9ybU5TVGV4dEF0dGFjaG1lbnQgYWxsb2NdIGluaXRXaXRo
RmlsZVdyYXBwZXI6ZmlsZVdyYXBwZXIuZ2V0KCldKTsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KQogICAgICAgICBmbG9hdCB2ZXJ0aWNhbEFsaWduID0gMC4wOwogICAgICAgICBfY2FjaGVzLT5m
bG9hdFByb3BlcnR5VmFsdWVGb3JOb2RlKGVsZW1lbnQsIENTU1Byb3BlcnR5VmVydGljYWxBbGln
biwgdmVydGljYWxBbGlnbik7CkBAIC0xNTIyLDcgKzE1MjIsOCBAQCBzdGF0aWMgaW5saW5lIE5T
RGF0ZSAqX2RhdGVGb3JTdHJpbmcoTlNTdHJpbmcgKnN0cmluZykKICAgICAgICAgcmV0dXJuIG5p
bDsKICAgICBbZGF0ZUNvbXBvbmVudHMgc2V0U2Vjb25kOmNvbXBvbmVudF07CiAgICAgCi0gICAg
cmV0dXJuIFtbW1tOU0NhbGVuZGFyIGFsbG9jXSBpbml0V2l0aENhbGVuZGFySWRlbnRpZmllcjpO
U0NhbGVuZGFySWRlbnRpZmllckdyZWdvcmlhbl0gYXV0b3JlbGVhc2VdIGRhdGVGcm9tQ29tcG9u
ZW50czpkYXRlQ29tcG9uZW50cy5nZXQoKV07CisgICAgYXV0byBjYWxlbmRhciA9IGFkb3B0TlMo
W1tOU0NhbGVuZGFyIGFsbG9jXSBpbml0V2l0aENhbGVuZGFySWRlbnRpZmllcjpOU0NhbGVuZGFy
SWRlbnRpZmllckdyZWdvcmlhbl0pOworICAgIHJldHVybiBbY2FsZW5kYXIgZGF0ZUZyb21Db21w
b25lbnRzOmRhdGVDb21wb25lbnRzLmdldCgpXTsKIH0KIAogc3RhdGljIE5TSW50ZWdlciBfY29s
Q29tcGFyZShpZCBibG9jazEsIGlkIGJsb2NrMiwgdm9pZCAqKQpAQCAtMjMwMiwxNCArMjMwMywx
NCBAQCBOb2RlKiBIVE1MQ29udmVydGVyQ2FjaGVzOjpjYWNoZUFuY2VzdG9yc09mU3RhcnRUb0Jl
Q29udmVydGVkKGNvbnN0IFBvc2l0aW9uJiBzdAogCiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkp
CiAKLXN0YXRpYyBOU0ZpbGVXcmFwcGVyICpmaWxlV3JhcHBlckZvclVSTChEb2N1bWVudExvYWRl
ciogZGF0YVNvdXJjZSwgTlNVUkwgKlVSTCkKK3N0YXRpYyBSZXRhaW5QdHI8TlNGaWxlV3JhcHBl
cj4gZmlsZVdyYXBwZXJGb3JVUkwoRG9jdW1lbnRMb2FkZXIqIGRhdGFTb3VyY2UsIE5TVVJMICpV
UkwpCiB7CiAgICAgaWYgKFtVUkwgaXNGaWxlVVJMXSkKLSAgICAgICAgcmV0dXJuIFtbW05TRmls
ZVdyYXBwZXIgYWxsb2NdIGluaXRXaXRoVVJMOltVUkwgVVJMQnlSZXNvbHZpbmdTeW1saW5rc0lu
UGF0aF0gb3B0aW9uczowIGVycm9yOm51bGxwdHJdIGF1dG9yZWxlYXNlXTsKKyAgICAgICAgcmV0
dXJuIGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0V2l0aFVSTDpbVVJMIFVSTEJ5
UmVzb2x2aW5nU3ltbGlua3NJblBhdGhdIG9wdGlvbnM6MCBlcnJvcjpudWxscHRyXSk7CiAKICAg
ICBpZiAoZGF0YVNvdXJjZSkgewogICAgICAgICBpZiAoUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4g
cmVzb3VyY2UgPSBkYXRhU291cmNlLT5zdWJyZXNvdXJjZShVUkwpKSB7Ci0gICAgICAgICAgICBO
U0ZpbGVXcmFwcGVyICp3cmFwcGVyID0gW1tbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3Vs
YXJGaWxlV2l0aENvbnRlbnRzOnJlc291cmNlLT5kYXRhKCkuY3JlYXRlTlNEYXRhKCkuZ2V0KCld
IGF1dG9yZWxlYXNlXTsKKyAgICAgICAgICAgIGF1dG8gd3JhcHBlciA9IGFkb3B0TlMoW1tOU0Zp
bGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6cmVzb3VyY2UtPmRh
dGEoKS5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogICAgICAgICAgICAgTlNTdHJpbmcgKmZpbGVu
YW1lID0gcmVzb3VyY2UtPnJlc3BvbnNlKCkuc3VnZ2VzdGVkRmlsZW5hbWUoKTsKICAgICAgICAg
ICAgIGlmICghZmlsZW5hbWUgfHwgIVtmaWxlbmFtZSBsZW5ndGhdKQogICAgICAgICAgICAgICAg
IGZpbGVuYW1lID0gc3VnZ2VzdGVkRmlsZW5hbWVXaXRoTUlNRVR5cGUocmVzb3VyY2UtPnVybCgp
LCByZXNvdXJjZS0+bWltZVR5cGUoKSk7CkBAIC0yMzIwLDcgKzIzMjEsNyBAQCBzdGF0aWMgTlNG
aWxlV3JhcHBlciAqZmlsZVdyYXBwZXJGb3JVUkwoRG9jdW1lbnRMb2FkZXIqIGRhdGFTb3VyY2Us
IE5TVVJMICpVUkwpCiAKICAgICBOU0NhY2hlZFVSTFJlc3BvbnNlICpjYWNoZWRSZXNwb25zZSA9
IFtbTlNVUkxDYWNoZSBzaGFyZWRVUkxDYWNoZV0gY2FjaGVkUmVzcG9uc2VGb3JSZXF1ZXN0OmFk
b3B0TlMoW1tOU011dGFibGVVUkxSZXF1ZXN0IGFsbG9jXSBpbml0V2l0aFVSTDpVUkxdKS5nZXQo
KV07CiAgICAgaWYgKGNhY2hlZFJlc3BvbnNlKSB7Ci0gICAgICAgIE5TRmlsZVdyYXBwZXIgKndy
YXBwZXIgPSBbW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVu
dHM6W2NhY2hlZFJlc3BvbnNlIGRhdGFdXSBhdXRvcmVsZWFzZV07CisgICAgICAgIGF1dG8gd3Jh
cHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRo
Q29udGVudHM6W2NhY2hlZFJlc3BvbnNlIGRhdGFdXSk7CiAgICAgICAgIFt3cmFwcGVyIHNldFBy
ZWZlcnJlZEZpbGVuYW1lOltbY2FjaGVkUmVzcG9uc2UgcmVzcG9uc2VdIHN1Z2dlc3RlZEZpbGVu
YW1lXV07CiAgICAgICAgIHJldHVybiB3cmFwcGVyOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQXJjaGl2ZVJlc291cmNlV2ViUmVzb3VyY2VIYW5k
bGVyLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJBcmNoaXZlUmVzb3VyY2VX
ZWJSZXNvdXJjZUhhbmRsZXIubW0KaW5kZXggMmQzM2I4NWZkMzVmMGE4ZWQ4M2I0NjBhMDcyOWY3
OTg4OGFjMjE3ZC4uNzhlNDRlYWExYjlhNjZmM2U2NmE4MWNiZTY0ODA4ZDE5MzJlODJmYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJBcmNoaXZlUmVzb3VyY2VX
ZWJSZXNvdXJjZUhhbmRsZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9X
ZWJBcmNoaXZlUmVzb3VyY2VXZWJSZXNvdXJjZUhhbmRsZXIubW0KQEAgLTMzLDcgKzMzLDcgQEAg
QGltcGxlbWVudGF0aW9uIFdlYkFyY2hpdmVSZXNvdXJjZVdlYlJlc291cmNlSGFuZGxlcgogCiAt
IChpZClyZXNvdXJjZUZvckRhdGE6KE5TRGF0YSAqKWRhdGEgVVJMOihOU1VSTCAqKXVybCBNSU1F
VHlwZTooTlNTdHJpbmcgKiltaW1lVHlwZSB0ZXh0RW5jb2RpbmdOYW1lOihOU1N0cmluZyAqKXRl
eHRFbmNvZGluZ05hbWUgZnJhbWVOYW1lOihOU1N0cmluZyAqKWZyYW1lTmFtZQogewotICAgIHJl
dHVybiBbW1tXZWJBcmNoaXZlUmVzb3VyY2VGcm9tTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBp
bml0V2l0aERhdGE6ZGF0YSBVUkw6dXJsIE1JTUVUeXBlOm1pbWVUeXBlIHRleHRFbmNvZGluZ05h
bWU6dGV4dEVuY29kaW5nTmFtZSBmcmFtZU5hbWU6ZnJhbWVOYW1lXSBhdXRvcmVsZWFzZV07Cisg
ICAgcmV0dXJuIGFkb3B0TlMoW1tXZWJBcmNoaXZlUmVzb3VyY2VGcm9tTlNBdHRyaWJ1dGVkU3Ry
aW5nIGFsbG9jXSBpbml0V2l0aERhdGE6ZGF0YSBVUkw6dXJsIE1JTUVUeXBlOm1pbWVUeXBlIHRl
eHRFbmNvZGluZ05hbWU6dGV4dEVuY29kaW5nTmFtZSBmcmFtZU5hbWU6ZnJhbWVOYW1lXSkuYXV0
b3JlbGVhc2UoKTsKIH0KIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbQppbmRleCBiOTkyZDdhMDM3ZTUzNDRkYzhi
OTRkYzFjYjFkYWRmODRmODkwNmQ4Li5kNTg5NmZkOTQwMjM5ODQyYTA2Mzk1MTAxN2I3MmViZDFh
NjRlMmU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRl
bnRSZWFkZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNv
bnRlbnRSZWFkZXJDb2NvYS5tbQpAQCAtMTI4LDcgKzEyOCw3IEBAIHN0YXRpYyBOU0RpY3Rpb25h
cnkgKmF0dHJpYnV0ZXNGb3JBdHRyaWJ1dGVkU3RyaW5nQ29udmVyc2lvbigpCiAgICAgICAgIEAi
SW50ZXJjaGFuZ2VOZXdsaW5lIjogQFlFUywKICAgICAgICAgQCJDb2FsZXNjZVRhYlNwYW5zIjog
QFlFUywKICAgICAgICAgQCJPdXRwdXRCYXNlVVJMIjogYmFzZVVSTCwKLSAgICAgICAgQCJXZWJS
ZXNvdXJjZUhhbmRsZXIiOiBbW1dlYkFyY2hpdmVSZXNvdXJjZVdlYlJlc291cmNlSGFuZGxlciBu
ZXddIGF1dG9yZWxlYXNlXSwKKyAgICAgICAgQCJXZWJSZXNvdXJjZUhhbmRsZXIiOiBhZG9wdE5T
KFtXZWJBcmNoaXZlUmVzb3VyY2VXZWJSZXNvdXJjZUhhbmRsZXIgbmV3XSkuYXV0b3JlbGVhc2Uo
KSwKICAgICB9OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvbWFjL0xv
YWRlck5TVVJMRXh0cmFzLm1tIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL21hYy9Mb2FkZXJOU1VS
TEV4dHJhcy5tbQppbmRleCAwMWI1MDczYmRmMTE0ZGRmZjA0NmNjMWY2N2UwMDg0ZTI1MWZkYWFh
Li41NTBkYWI4MGVlM2FhNDYwNzIxZGViNmMzMGM4NWE4ZTZkZjBhMDQ3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvbWFjL0xvYWRlck5TVVJMRXh0cmFzLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9tYWMvTG9hZGVyTlNVUkxFeHRyYXMubW0KQEAgLTg4LDcgKzg4LDcg
QEAgTlNTdHJpbmcgKnN1Z2dlc3RlZEZpbGVuYW1lV2l0aE1JTUVUeXBlKE5TVVJMICp1cmwsIGNv
bnN0IFN0cmluZyYgbWltZVR5cGUpCiAKIE5TU3RyaW5nICpmaWxlbmFtZUJ5Rml4aW5nSWxsZWdh
bENoYXJhY3RlcnMoTlNTdHJpbmcgKnN0cmluZykKIHsKLSAgICBOU011dGFibGVTdHJpbmcgKmZp
bGVuYW1lID0gW1tzdHJpbmcgbXV0YWJsZUNvcHldIGF1dG9yZWxlYXNlXTsKKyAgICBhdXRvIGZp
bGVuYW1lID0gYWRvcHROUyhbc3RyaW5nIG11dGFibGVDb3B5XSk7CiAKICAgICAvLyBTdHJpcCBu
dWxsIGNoYXJhY3RlcnMuCiAgICAgdW5pY2hhciBudWxsQ2hhciA9IDA7CkBAIC0xMDQsNSArMTA0
LDUgQEAgTlNTdHJpbmcgKmZpbGVuYW1lQnlGaXhpbmdJbGxlZ2FsQ2hhcmFjdGVycyhOU1N0cmlu
ZyAqc3RyaW5nKQogICAgIHdoaWxlIChbZmlsZW5hbWUgaGFzUHJlZml4OkAiLiJdKQogICAgICAg
ICBbZmlsZW5hbWUgZGVsZXRlQ2hhcmFjdGVyc0luUmFuZ2U6TlNNYWtlUmFuZ2UoMCwgMSldOwog
Ci0gICAgcmV0dXJuIGZpbGVuYW1lOworICAgIHJldHVybiBmaWxlbmFtZS5hdXRvcmVsZWFzZSgp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KaW5kZXggMzI5ODZlN2RhOWU1NzFhODUxYjFkNTMy
NGE4MWRjMGY4M2FmYWI2YS4uYTc5MTM0YTRlN2JlYTZmMDU3N2JhNTIwM2I5NmVlY2MxMGQwMjc1
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCkBAIC05MjAsNyArOTIwLDcgQEAgdm9pZCBNZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjcmVhdGVBVkFzc2V0Rm9yVVJMKGNvbnN0
IFVSTCYgdXJsLCBSZXQKICAgICAgICAgJiYgW3Jlc291cmNlTG9hZGVyIHJlc3BvbmRzVG9TZWxl
Y3RvcjpAc2VsZWN0b3IoVVJMU2Vzc2lvbkRhdGFEZWxlZ2F0ZVF1ZXVlKV0pIHsKICAgICAgICAg
UmVmUHRyPFBsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlcj4gbWVkaWFSZXNvdXJjZUxvYWRlciA9
IHBsYXllcigpLT5jcmVhdGVSZXNvdXJjZUxvYWRlcigpOwogICAgICAgICBpZiAobWVkaWFSZXNv
dXJjZUxvYWRlcikKLSAgICAgICAgICAgIHJlc291cmNlTG9hZGVyLlVSTFNlc3Npb24gPSAoTlNV
UkxTZXNzaW9uICopW1tbV2ViQ29yZU5TVVJMU2Vzc2lvbiBhbGxvY10gaW5pdFdpdGhSZXNvdXJj
ZUxvYWRlcjoqbWVkaWFSZXNvdXJjZUxvYWRlciBkZWxlZ2F0ZTpyZXNvdXJjZUxvYWRlci5VUkxT
ZXNzaW9uRGF0YURlbGVnYXRlIGRlbGVnYXRlUXVldWU6cmVzb3VyY2VMb2FkZXIuVVJMU2Vzc2lv
bkRhdGFEZWxlZ2F0ZVF1ZXVlXSBhdXRvcmVsZWFzZV07CisgICAgICAgICAgICByZXNvdXJjZUxv
YWRlci5VUkxTZXNzaW9uID0gKE5TVVJMU2Vzc2lvbiAqKWFkb3B0TlMoW1tXZWJDb3JlTlNVUkxT
ZXNzaW9uIGFsbG9jXSBpbml0V2l0aFJlc291cmNlTG9hZGVyOiptZWRpYVJlc291cmNlTG9hZGVy
IGRlbGVnYXRlOnJlc291cmNlTG9hZGVyLlVSTFNlc3Npb25EYXRhRGVsZWdhdGUgZGVsZWdhdGVR
dWV1ZTpyZXNvdXJjZUxvYWRlci5VUkxTZXNzaW9uRGF0YURlbGVnYXRlUXVldWVdKS5hdXRvcmVs
ZWFzZSgpOwogICAgIH0KIAogICAgIG1faGF2ZUNoZWNrZWRQbGF5YWJpbGl0eSA9IGZhbHNlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkFWUGxheWVyQ29udHJv
bGxlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJBVlBsYXllckNvbnRyb2xs
ZXIubW0KaW5kZXggNjZjOTIxMjRmZTg2NzU0NmE3N2YyNGMzZTMyMjk3ZGIyM2U3ZWYyMy4uOTY4
YTQxMWQ5ZmQyZTJhYTljNDBkOWNhZGNiOTFmOTEzYTJjZTIyMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkFWUGxheWVyQ29udHJvbGxlci5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViQVZQbGF5ZXJDb250cm9sbGVyLm1tCkBAIC02OSw3
ICs2OSw3IEBAIC0gKGluc3RhbmNldHlwZSlpbml0CiAgICAgICAgIHJldHVybiBzZWxmOwogCiAg
ICAgaW5pdEFWUGxheWVyQ29udHJvbGxlcigpOwotICAgIHNlbGYucGxheWVyQ29udHJvbGxlclBy
b3h5ID0gW1thbGxvY0FWUGxheWVyQ29udHJvbGxlckluc3RhbmNlKCkgaW5pdF0gYXV0b3JlbGVh
c2VdOworICAgIHNlbGYucGxheWVyQ29udHJvbGxlclByb3h5ID0gYWRvcHROUyhbYWxsb2NBVlBs
YXllckNvbnRyb2xsZXJJbnN0YW5jZSgpIGluaXRdKS5hdXRvcmVsZWFzZSgpOwogICAgIF9saXZl
U3RyZWFtRXZlbnRNb2RlUG9zc2libGUgPSBZRVM7CiAKICAgICBbc2VsZiBhZGRPYnNlcnZlcjpz
ZWxmIGZvcktleVBhdGg6QCJzZWVrYWJsZVRpbWVSYW5nZXMiIG9wdGlvbnM6KE5TS2V5VmFsdWVP
YnNlcnZpbmdPcHRpb25PbGQgfCBOU0tleVZhbHVlT2JzZXJ2aW5nT3B0aW9uTmV3IHwgTlNLZXlW
YWx1ZU9ic2VydmluZ09wdGlvbkluaXRpYWwpIGNvbnRleHQ6V2ViQVZQbGF5ZXJDb250cm9sbGVy
U2Vla2FibGVUaW1lUmFuZ2VzT2JzZXJ2ZXJDb250ZXh0XTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJFdmVudC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2lvcy9XZWJFdmVudC5tbQppbmRleCBmODQzYzU0YTQ2YTJmMmNmNDc5ZjM4NmNiODRhY2RjZDVi
NTFmZjY4Li5mMjk5YTY1ZmUzYTZhYWU4NWQ4NjhjZmFiNDkyNjIyZmUzNTkzYmMzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViRXZlbnQubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkV2ZW50Lm1tCkBAIC0zODAsMTkgKzM4MCwxOSBAQCAt
IChOU1N0cmluZyAqKWNoYXJhY3RlcnMKIHsKICAgICBBU1NFUlQoX3R5cGUgPT0gV2ViRXZlbnRL
ZXlEb3duIHx8IF90eXBlID09IFdlYkV2ZW50S2V5VXApOwogICAgIEFTU0VSVCghKF9rZXlib2Fy
ZEZsYWdzICYgV2ViRXZlbnRLZXlib2FyZElucHV0TW9kaWZpZXJGbGFnc0NoYW5nZWQpKTsKLSAg
ICByZXR1cm4gW1tfY2hhcmFjdGVycyByZXRhaW5dIGF1dG9yZWxlYXNlXTsKKyAgICByZXR1cm4g
cmV0YWluUHRyKF9jaGFyYWN0ZXJzKS5hdXRvcmVsZWFzZSgpOwogfQogCiAtIChOU1N0cmluZyAq
KWNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVycwogewogICAgIEFTU0VSVChfdHlwZSA9PSBXZWJF
dmVudEtleURvd24gfHwgX3R5cGUgPT0gV2ViRXZlbnRLZXlVcCk7CiAgICAgQVNTRVJUKCEoX2tl
eWJvYXJkRmxhZ3MgJiBXZWJFdmVudEtleWJvYXJkSW5wdXRNb2RpZmllckZsYWdzQ2hhbmdlZCkp
OwotICAgIHJldHVybiBbW19jaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnMgcmV0YWluXSBhdXRv
cmVsZWFzZV07CisgICAgcmV0dXJuIHJldGFpblB0cihfY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZp
ZXJzKS5hdXRvcmVsZWFzZSgpOwogfQogCiAtIChOU1N0cmluZyAqKWlucHV0TWFuYWdlckhpbnQK
IHsKLSAgICByZXR1cm4gW1tfaW5wdXRNYW5hZ2VySGludCByZXRhaW5dIGF1dG9yZWxlYXNlXTsK
KyAgICByZXR1cm4gcmV0YWluUHRyKF9pbnB1dE1hbmFnZXJIaW50KS5hdXRvcmVsZWFzZSgpOwog
fQogCiAtIChXZWJFdmVudEZsYWdzKW1vZGlmaWVyRmxhZ3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQubW0KaW5kZXgg
MWVhNjYyNTk5YzA0NTk0NTc4MDY4NjFmMjUxNzA4MGQzZjkzNTRiNC4uNDdkNzc3MjYxMDBlZDAz
NTlhOWNhNjQ3N2MyZjljM2RhNzIwODY4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL1dlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL1dlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQubW0KQEAgLTM2OSw3ICsz
NjksNyBAQCBAaW1wbGVtZW50YXRpb24gV2ViSXRlbVByb3ZpZGVyTG9hZFJlc3VsdCB7CiAKICsg
KGluc3RhbmNldHlwZSlsb2FkUmVzdWx0V2l0aEl0ZW1Qcm92aWRlcjooTlNJdGVtUHJvdmlkZXIg
KilpdGVtUHJvdmlkZXIgdHlwZXNUb0xvYWQ6KE5TQXJyYXk8TlNTdHJpbmcgKj4gKil0eXBlc1Rv
TG9hZAogewotICAgIHJldHVybiBbW1tzZWxmIGFsbG9jXSBpbml0V2l0aEl0ZW1Qcm92aWRlcjpp
dGVtUHJvdmlkZXIgdHlwZXNUb0xvYWQ6dHlwZXNUb0xvYWRdIGF1dG9yZWxlYXNlXTsKKyAgICBy
ZXR1cm4gYWRvcHROUyhbW3NlbGYgYWxsb2NdIGluaXRXaXRoSXRlbVByb3ZpZGVyOml0ZW1Qcm92
aWRlciB0eXBlc1RvTG9hZDp0eXBlc1RvTG9hZF0pLmF1dG9yZWxlYXNlKCk7CiB9CiAKIC0gKGlu
c3RhbmNldHlwZSlpbml0V2l0aEl0ZW1Qcm92aWRlcjooTlNJdGVtUHJvdmlkZXIgKilpdGVtUHJv
dmlkZXIgdHlwZXNUb0xvYWQ6KE5TQXJyYXk8TlNTdHJpbmcgKj4gKil0eXBlc1RvTG9hZApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkNv
bnRyb2xsZXJBVktpdC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1
bGxzY3JlZW5Db250cm9sbGVyQVZLaXQubW0KaW5kZXggNGI4YTAzYjY3NWNkZTExZGRlZmM4MjY5
ZGY3YmVjNjk1YzM5NDc5Yi4uNjZiYzRkZmIyZmZkNmMxZDJkOGUyYzQyNTVlOTJjMGViM2UyZjEw
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNj
cmVlbkNvbnRyb2xsZXJBVktpdC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
V2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckFWS2l0Lm1tCkBAIC0xMDYyLDcgKzEwNjIsNyBA
QCAtICh2b2lkKWRpZEZpbmlzaEZ1bGxzY3JlZW46KFZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJD
b250ZXh0Kiljb250ZXh0CiB7CiAgICAgQVNTRVJUKFdlYlRocmVhZElzQ3VycmVudCgpKTsKICAg
ICBBU1NFUlRfVU5VU0VEKGNvbnRleHQsIGNvbnRleHQgPT0gX2NvbnRleHQpOwotICAgIFtbc2Vs
ZiByZXRhaW5dIGF1dG9yZWxlYXNlXTsgLy8gcmV0YWluIHNlbGYgYmVmb3JlIGJyZWFraW5nIGEg
cmV0YWluIGN5Y2xlLgorICAgIHJldGFpblB0cihzZWxmKS5hdXRvcmVsZWFzZSgpOyAvLyByZXRh
aW4gc2VsZiBiZWZvcmUgYnJlYWtpbmcgYSByZXRhaW4gY3ljbGUuCiAgICAgX2NvbnRleHQtPnNl
dENvbnRyb2xsZXIobmlsKTsKICAgICBfY29udGV4dCA9IG51bGxwdHI7CiAgICAgX3ZpZGVvRWxl
bWVudCA9IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
d2FrL1dBS1ZpZXcubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dBS1ZpZXcu
bW0KaW5kZXggNzM2ZjA5MTE3NmU4MzQ2N2ZkZjA2Yjc5YWQwZTc5N2M2Y2NjZDc4YS4uNTFiYzZj
NmFiNWY0NzI1ODQ1MzIyZDRmZTJkZTEzNjdhNDU0ZWMwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XQUtWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy93YWsvV0FLVmlldy5tbQpAQCAtMTk2LDcgKzE5Niw3IEBAICsgKFdBS1ZpZXcg
Kilfd3JhcHBlckZvclZpZXdSZWY6KFdLVmlld1JlZilfdmlld1JlZgogewogICAgIEFTU0VSVChf
dmlld1JlZik7CiAgICAgaWYgKF92aWV3UmVmLT5pc2EuY2xhc3NJbmZvID09ICZXS1ZpZXdDbGFz
c0luZm8pCi0gICAgICAgIHJldHVybiBbW1tXQUtWaWV3IGFsbG9jXSBfaW5pdFdpdGhWaWV3UmVm
Ol92aWV3UmVmXSBhdXRvcmVsZWFzZV07CisgICAgICAgIHJldHVybiBhZG9wdE5TKFtbV0FLVmll
dyBhbGxvY10gX2luaXRXaXRoVmlld1JlZjpfdmlld1JlZl0pLmF1dG9yZWxlYXNlKCk7CiAgICAg
V0tFcnJvciAoInVuYWJsZSB0byBjcmVhdGUgd3JhcHBlciBmb3IgJXNcbiIsIF92aWV3UmVmLT5p
c2EuY2xhc3NJbmZvLT5uYW1lKTsKICAgICByZXR1cm4gbmlsOwogfQpAQCAtMjM2LDcgKzIzNiw3
IEBAIC0gKGlkKWluaXRXaXRoRnJhbWU6KENHUmVjdClyZWN0CiAKIC0gKHZvaWQpZGVhbGxvYwog
ewotICAgIFtbW3N1YnZpZXdSZWZlcmVuY2VzIGNvcHldIGF1dG9yZWxlYXNlXSBtYWtlT2JqZWN0
c1BlcmZvcm1TZWxlY3RvcjpAc2VsZWN0b3IocmVtb3ZlRnJvbVN1cGVydmlldyldOworICAgIFth
ZG9wdE5TKFtzdWJ2aWV3UmVmZXJlbmNlcyBjb3B5XSkuYXV0b3JlbGVhc2UoKSBtYWtlT2JqZWN0
c1BlcmZvcm1TZWxlY3RvcjpAc2VsZWN0b3IocmVtb3ZlRnJvbVN1cGVydmlldyldOwogCiAgICAg
aWYgKHZpZXdSZWYpIHsKICAgICAgICAgX1dLVmlld1NldFZpZXdDb250ZXh0ICh2aWV3UmVmLCAw
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFj
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KaW5kZXgg
ZjMyNmE2OWY5NTYwZmMzNDFmZGJjNDYwNzU4OWFjMDA3YTY4NjJmNS4uMTJiYzNkNmFlOGUyY2Yx
YmM1MmEzYTBkNmRlMWI5MjcxOWM3ZWJkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1Bhc3RlYm9hcmRNYWMubW0KQEAgLTI0OCw5ICsyNDgsOSBAQCB2b2lkIFBhc3RlYm9hcmQ6
OndyaXRlKGNvbnN0IENvbG9yJiBjb2xvcikKIAogc3RhdGljIE5TRmlsZVdyYXBwZXIqIGZpbGVX
cmFwcGVyKGNvbnN0IFBhc3RlYm9hcmRJbWFnZSYgcGFzdGVib2FyZEltYWdlKQogewotICAgIE5T
RmlsZVdyYXBwZXIgKndyYXBwZXIgPSBbW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxh
ckZpbGVXaXRoQ29udGVudHM6cGFzdGVib2FyZEltYWdlLnJlc291cmNlRGF0YS0+Y3JlYXRlTlNE
YXRhKCkuZ2V0KCldIGF1dG9yZWxlYXNlXTsKKyAgICBhdXRvIHdyYXBwZXIgPSBhZG9wdE5TKFtb
TlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOnBhc3RlYm9h
cmRJbWFnZS5yZXNvdXJjZURhdGEtPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CiAgICAgW3dyYXBw
ZXIgc2V0UHJlZmVycmVkRmlsZW5hbWU6c3VnZ2VzdGVkRmlsZW5hbWVXaXRoTUlNRVR5cGUocGFz
dGVib2FyZEltYWdlLnVybC51cmwsIHBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZU1JTUVUeXBlKV07
Ci0gICAgcmV0dXJuIHdyYXBwZXI7CisgICAgcmV0dXJuIHdyYXBwZXIuYXV0b3JlbGVhc2UoKTsK
IH0KIAogc3RhdGljIHZvaWQgd3JpdGVGaWxlV3JhcHBlckFzUlRGREF0dGFjaG1lbnQoTlNGaWxl
V3JhcHBlciAqd3JhcHBlciwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgaW50NjRfdCYg
bmV3Q2hhbmdlQ291bnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
V2ViQ29yZU5TVVJMRXh0cmFzLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNv
cmVOU1VSTEV4dHJhcy5tbQppbmRleCBjNzVkMjBmMGY3NzU2MTc5ZDRmOWQ4MDI4MWVjYTQ0OGVk
MjAwYjhmLi4xM2M4MmIyNmE2YjA4M2VhOGMzN2M5Mjg0ZjdjNDhlYjk1M2FhOWY4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZU5TVVJMRXh0cmFzLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlTlNVUkxFeHRyYXMubW0KQEAg
LTUyLDggKzUyLDcgQEAgTlNVUkwgKlVSTEJ5Q2Fub25pY2FsaXppbmdVUkwoTlNVUkwgKlVSTCkK
ICAgICAvLyAoc2VlIDUzMTU5MjYpLiBJdCBtaWdodCBtYWtlIHNlbnNlIHRvIGFwcGx5IG9ubHkg
dGhlIFVSTCBjb25jZXB0IGFuZCBub3QgdGhlIE5TVVJMCiAgICAgLy8gY29uY2VwdCwgYnV0IGl0
J3MgdG9vIHJpc2t5IHRvIG1ha2UgdGhhdCBjaGFuZ2UgZm9yIFdlYktpdCAzLjAuCiAgICAgTlNV
UkxSZXF1ZXN0ICpuZXdSZXF1ZXN0ID0gW2NvbmNyZXRlQ2xhc3MgY2Fub25pY2FsUmVxdWVzdEZv
clJlcXVlc3Q6cmVxdWVzdC5nZXQoKV07Ci0gICAgTlNVUkwgKm5ld1VSTCA9IFtuZXdSZXF1ZXN0
IFVSTF07IAotICAgIHJldHVybiBbW25ld1VSTCByZXRhaW5dIGF1dG9yZWxlYXNlXTsKKyAgICBy
ZXR1cm4gcmV0YWluUHRyKFtuZXdSZXF1ZXN0IFVSTF0pLmF1dG9yZWxlYXNlKCk7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9XZWJOU0F0dHJpYnV0ZWRTdHJpbmdFeHRyYXMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvV2ViTlNBdHRyaWJ1dGVkU3RyaW5nRXh0cmFzLm1tCmluZGV4IDU3MmMzNWYxODMw
NjRjOGE4ODhiMWM5ZGE2NGExMTYyZGRkZGNmMDQuLmRmZjA2NzgyODA3NDk5MWNjMzY4ZjEzZWI0
OTkzOTgwYjRiOWE5MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9X
ZWJOU0F0dHJpYnV0ZWRTdHJpbmdFeHRyYXMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL1dlYk5TQXR0cmlidXRlZFN0cmluZ0V4dHJhcy5tbQpAQCAtNTUsMTMgKzU1LDEzIEBA
IE5TQXR0cmlidXRlZFN0cmluZyAqYXR0cmlidXRlZFN0cmluZ0J5U3RyaXBwaW5nQXR0YWNobWVu
dENoYXJhY3RlcnMoTlNBdHRyaWJ1dGVkCiAgICAgCiAgICAgYXR0YWNobWVudFJhbmdlID0gW29y
aWdpbmFsU3RyaW5nIHJhbmdlT2ZTdHJpbmc6YXR0YWNobWVudENoYXJTdHJpbmddOwogICAgIGlm
IChhdHRhY2htZW50UmFuZ2UubG9jYXRpb24gIT0gTlNOb3RGb3VuZCAmJiBhdHRhY2htZW50UmFu
Z2UubGVuZ3RoID4gMCkgewotICAgICAgICBOU011dGFibGVBdHRyaWJ1dGVkU3RyaW5nICpuZXdB
dHRyaWJ1dGVkU3RyaW5nID0gW1thdHRyaWJ1dGVkU3RyaW5nIG11dGFibGVDb3B5V2l0aFpvbmU6
TlVMTF0gYXV0b3JlbGVhc2VdOworICAgICAgICBhdXRvIG5ld0F0dHJpYnV0ZWRTdHJpbmcgPSBh
ZG9wdE5TKFthdHRyaWJ1dGVkU3RyaW5nIG11dGFibGVDb3B5V2l0aFpvbmU6TlVMTF0pOwogICAg
ICAgICAKICAgICAgICAgd2hpbGUgKGF0dGFjaG1lbnRSYW5nZS5sb2NhdGlvbiAhPSBOU05vdEZv
dW5kICYmIGF0dGFjaG1lbnRSYW5nZS5sZW5ndGggPiAwKSB7CiAgICAgICAgICAgICBbbmV3QXR0
cmlidXRlZFN0cmluZyByZXBsYWNlQ2hhcmFjdGVyc0luUmFuZ2U6YXR0YWNobWVudFJhbmdlIHdp
dGhTdHJpbmc6QCIiXTsKICAgICAgICAgICAgIGF0dGFjaG1lbnRSYW5nZSA9IFtbbmV3QXR0cmli
dXRlZFN0cmluZyBzdHJpbmddIHJhbmdlT2ZTdHJpbmc6YXR0YWNobWVudENoYXJTdHJpbmddOwog
ICAgICAgICB9Ci0gICAgICAgIHJldHVybiBuZXdBdHRyaWJ1dGVkU3RyaW5nOworICAgICAgICBy
ZXR1cm4gbmV3QXR0cmlidXRlZFN0cmluZy5hdXRvcmVsZWFzZSgpOwogICAgIH0KICAgICAKICAg
ICByZXR1cm4gYXR0cmlidXRlZFN0cmluZzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVxdWVzdC5oCmluZGV4IDcxYTkyMmYzMTIzNDkyN2Nm
YThiY2QxZWM3NDhiN2Y0NDdkZTM1NzAuLjczODU2OTg2ZmUzNTNlOTQyYjgzMGU0ZWMyODVlMmQ1
ZGQzZjhmYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2Yv
UmVzb3VyY2VSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
Zi9SZXNvdXJjZVJlcXVlc3QuaApAQCAtMTI3LDcgKzEyNyw3IEBAIGlubGluZSBib29sIFJlc291
cmNlUmVxdWVzdDo6cmVzb3VyY2VQcmlvcml0aWVzRW5hYmxlZCgpCiB9CiAKICNpZiBQTEFURk9S
TShDT0NPQSkKLU5TVVJMUmVxdWVzdCAqY29weVJlcXVlc3RXaXRoU3RvcmFnZVNlc3Npb24oQ0ZV
UkxTdG9yYWdlU2Vzc2lvblJlZiwgTlNVUkxSZXF1ZXN0ICopOworUmV0YWluUHRyPE5TVVJMUmVx
dWVzdD4gY29weVJlcXVlc3RXaXRoU3RvcmFnZVNlc3Npb24oQ0ZVUkxTdG9yYWdlU2Vzc2lvblJl
ZiwgTlNVUkxSZXF1ZXN0ICopOwogV0VCQ09SRV9FWFBPUlQgTlNDYWNoZWRVUkxSZXNwb25zZSAq
Y2FjaGVkUmVzcG9uc2VGb3JSZXF1ZXN0KENGVVJMU3RvcmFnZVNlc3Npb25SZWYsIE5TVVJMUmVx
dWVzdCAqKTsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NvY29hL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNvY29hLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9OZXR3b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbQpp
bmRleCA5NTBhM2FlOGQ4NzQ5YjVkNTM0YWQyZGNlMzBhNjdjZjUyN2ExODE2Li44MGJkNjZkNzhk
NDFhNzUwYTI2MGVlYmM5ZjY3ZjRiY2I2ZmJlMjExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNvY29hLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uQ29jb2EubW0KQEAgLTE2Miw3ICsxNjIsNyBAQCBOU0hUVFBDb29raWVTdG9yYWdlICpO
ZXR3b3JrU3RvcmFnZVNlc3Npb246Om5zQ29va2llU3RvcmFnZSgpIGNvbnN0CiAgICAgaWYgKCFj
ZkNvb2tpZVN0b3JhZ2UgfHwgW05TSFRUUENvb2tpZVN0b3JhZ2Ugc2hhcmVkSFRUUENvb2tpZVN0
b3JhZ2VdLl9jb29raWVTdG9yYWdlID09IGNmQ29va2llU3RvcmFnZSkKICAgICAgICAgcmV0dXJu
IFtOU0hUVFBDb29raWVTdG9yYWdlIHNoYXJlZEhUVFBDb29raWVTdG9yYWdlXTsKIAotICAgIHJl
dHVybiBbW1tOU0hUVFBDb29raWVTdG9yYWdlIGFsbG9jXSBfaW5pdFdpdGhDRkhUVFBDb29raWVT
dG9yYWdlOmNmQ29va2llU3RvcmFnZS5nZXQoKV0gYXV0b3JlbGVhc2VdOworICAgIHJldHVybiBh
ZG9wdE5TKFtbTlNIVFRQQ29va2llU3RvcmFnZSBhbGxvY10gX2luaXRXaXRoQ0ZIVFRQQ29va2ll
U3RvcmFnZTpjZkNvb2tpZVN0b3JhZ2UuZ2V0KCldKS5hdXRvcmVsZWFzZSgpOwogfQogCiBDb29r
aWVTdG9yYWdlT2JzZXJ2ZXImIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llU3RvcmFnZU9i
c2VydmVyKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY29jb2EvUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NvY29hL1Jlc291cmNlUmVxdWVzdENvY29hLm1tCmluZGV4IGQ4NmY0YzkwNWVi
ZmUyN2M3M2IyNWE3ZjYzYjYzMDViOWZlYmY2YTAuLjQxOTk5YjcyMWM5Nzg4NTY0OTk0MTQyNmJl
MjM4ZWM2OGViYmNjYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY29jb2EvUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RDb2NvYS5tbQpAQCAtNDQsNyArNDQs
OCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBOU1VSTFJlcXVlc3QgKlJlc291cmNlUmVxdWVzdDo6
bnNVUkxSZXF1ZXN0KEhUVFBCb2R5VXBkYXRlUG9saWN5IGJvZHlQb2xpY3kpIGNvbnN0CiB7CiAg
ICAgdXBkYXRlUGxhdGZvcm1SZXF1ZXN0KGJvZHlQb2xpY3kpOwotICAgIHJldHVybiBbW21fbnNS
ZXF1ZXN0LmdldCgpIHJldGFpbl0gYXV0b3JlbGVhc2VdOworICAgIGF1dG8gcmVxdWVzdENvcHkg
PSBtX25zUmVxdWVzdDsKKyAgICByZXR1cm4gcmVxdWVzdENvcHkuYXV0b3JlbGVhc2UoKTsKIH0K
IAogQ0ZVUkxSZXF1ZXN0UmVmIFJlc291cmNlUmVxdWVzdDo6Y2ZVUkxSZXF1ZXN0KEhUVFBCb2R5
VXBkYXRlUG9saWN5IGJvZHlQb2xpY3kpIGNvbnN0CkBAIC0yNjAsMTcgKzI2MSwxNyBAQCB2b2lk
IFJlc291cmNlUmVxdWVzdDo6ZG9VcGRhdGVQbGF0Zm9ybUhUVFBCb2R5KCkKIHZvaWQgUmVzb3Vy
Y2VSZXF1ZXN0OjpzZXRTdG9yYWdlU2Vzc2lvbihDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmIHN0b3Jh
Z2VTZXNzaW9uKQogewogICAgIHVwZGF0ZVBsYXRmb3JtUmVxdWVzdCgpOwotICAgIG1fbnNSZXF1
ZXN0ID0gYWRvcHROUyhjb3B5UmVxdWVzdFdpdGhTdG9yYWdlU2Vzc2lvbihzdG9yYWdlU2Vzc2lv
biwgbV9uc1JlcXVlc3QuZ2V0KCkpKTsKKyAgICBtX25zUmVxdWVzdCA9IGNvcHlSZXF1ZXN0V2l0
aFN0b3JhZ2VTZXNzaW9uKHN0b3JhZ2VTZXNzaW9uLCBtX25zUmVxdWVzdC5nZXQoKSk7CiB9CiAK
LU5TVVJMUmVxdWVzdCAqY29weVJlcXVlc3RXaXRoU3RvcmFnZVNlc3Npb24oQ0ZVUkxTdG9yYWdl
U2Vzc2lvblJlZiBzdG9yYWdlU2Vzc2lvbiwgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0KQorUmV0YWlu
UHRyPE5TVVJMUmVxdWVzdD4gY29weVJlcXVlc3RXaXRoU3RvcmFnZVNlc3Npb24oQ0ZVUkxTdG9y
YWdlU2Vzc2lvblJlZiBzdG9yYWdlU2Vzc2lvbiwgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0KQogewog
ICAgIGlmICghc3RvcmFnZVNlc3Npb24gfHwgIXJlcXVlc3QpCi0gICAgICAgIHJldHVybiBbcmVx
dWVzdCBjb3B5XTsKKyAgICAgICAgcmV0dXJuIGFkb3B0TlMoW3JlcXVlc3QgY29weV0pOwogCiAg
ICAgYXV0byBjZlJlcXVlc3QgPSBhZG9wdENGKENGVVJMUmVxdWVzdENyZWF0ZU11dGFibGVDb3B5
KGtDRkFsbG9jYXRvckRlZmF1bHQsIFtyZXF1ZXN0IF9DRlVSTFJlcXVlc3RdKSk7CiAgICAgX0NG
VVJMUmVxdWVzdFNldFN0b3JhZ2VTZXNzaW9uKGNmUmVxdWVzdC5nZXQoKSwgc3RvcmFnZVNlc3Np
b24pOwotICAgIHJldHVybiBbW05TVVJMUmVxdWVzdCBhbGxvY10gX2luaXRXaXRoQ0ZVUkxSZXF1
ZXN0OmNmUmVxdWVzdC5nZXQoKV07CisgICAgcmV0dXJuIGFkb3B0TlMoW1tOU1VSTFJlcXVlc3Qg
YWxsb2NdIF9pbml0V2l0aENGVVJMUmVxdWVzdDpjZlJlcXVlc3QuZ2V0KCldKTsKIH0KIAogTlND
YWNoZWRVUkxSZXNwb25zZSAqY2FjaGVkUmVzcG9uc2VGb3JSZXF1ZXN0KENGVVJMU3RvcmFnZVNl
c3Npb25SZWYgc3RvcmFnZVNlc3Npb24sIE5TVVJMUmVxdWVzdCAqcmVxdWVzdCkKQEAgLTI4Myw3
ICsyODQsNyBAQCBOU0NhY2hlZFVSTFJlc3BvbnNlICpjYWNoZWRSZXNwb25zZUZvclJlcXVlc3Qo
Q0ZVUkxTdG9yYWdlU2Vzc2lvblJlZiBzdG9yYWdlU2VzcwogICAgIGlmICghY2FjaGVkUmVzcG9u
c2UpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICByZXR1cm4gW1tbTlNDYWNoZWRVUkxSZXNw
b25zZSBhbGxvY10gX2luaXRXaXRoQ0ZDYWNoZWRVUkxSZXNwb25zZTpjYWNoZWRSZXNwb25zZS5n
ZXQoKV0gYXV0b3JlbGVhc2VdOworICAgIHJldHVybiBhZG9wdE5TKFtbTlNDYWNoZWRVUkxSZXNw
b25zZSBhbGxvY10gX2luaXRXaXRoQ0ZDYWNoZWRVUkxSZXNwb25zZTpjYWNoZWRSZXNwb25zZS5n
ZXQoKV0pLmF1dG9yZWxlYXNlKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJM
U2Vzc2lvbi5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29y
ZU5TVVJMU2Vzc2lvbi5tbQppbmRleCBiZTExODcwOTNiNTkyMzY2NTNhMjY3M2VmNDYyNmE2MTc1
YzMxMDZjLi43NjYxN2RhN2QzNWM2YzAyYjIxYTU5YzQ0OTg1MDhjNjMwYTg1ZTJhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNl
c3Npb24ubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJD
b3JlTlNVUkxTZXNzaW9uLm1tCkBAIC00NDUsMTIgKzQ0NSwxMiBAQCAtIChOU1VSTFNlc3Npb25E
YXRhVGFzayAqKWRhdGFUYXNrV2l0aFJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QKICAg
ICBpZiAoX2ludmFsaWRhdGVkKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgV2ViQ29yZU5T
VVJMU2Vzc2lvbkRhdGFUYXNrICp0YXNrID0gW1tXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2sg
YWxsb2NdIGluaXRXaXRoU2Vzc2lvbjpzZWxmIGlkZW50aWZpZXI6X25leHRUYXNrSWRlbnRpZmll
cisrIHJlcXVlc3Q6cmVxdWVzdF07CisgICAgYXV0byB0YXNrID0gYWRvcHROUyhbW1dlYkNvcmVO
U1VSTFNlc3Npb25EYXRhVGFzayBhbGxvY10gaW5pdFdpdGhTZXNzaW9uOnNlbGYgaWRlbnRpZmll
cjpfbmV4dFRhc2tJZGVudGlmaWVyKysgcmVxdWVzdDpyZXF1ZXN0XSk7CiAgICAgewogICAgICAg
ICBMb2NrZXI8TG9jaz4gbG9ja2VyKF9kYXRhVGFza3NMb2NrKTsKLSAgICAgICAgX2RhdGFUYXNr
cy5hZGQodGFzayk7CisgICAgICAgIF9kYXRhVGFza3MuYWRkKHRhc2suZ2V0KCkpOwogICAgIH0K
LSAgICByZXR1cm4gKE5TVVJMU2Vzc2lvbkRhdGFUYXNrICopW3Rhc2sgYXV0b3JlbGVhc2VdOwor
ICAgIHJldHVybiAoTlNVUkxTZXNzaW9uRGF0YVRhc2sgKil0YXNrLmF1dG9yZWxlYXNlKCk7CiB9
CiAKIC0gKE5TVVJMU2Vzc2lvbkRhdGFUYXNrICopZGF0YVRhc2tXaXRoVVJMOihOU1VSTCAqKXVy
bApAQCAtNDU4LDEyICs0NTgsMTIgQEAgLSAoTlNVUkxTZXNzaW9uRGF0YVRhc2sgKilkYXRhVGFz
a1dpdGhVUkw6KE5TVVJMICopdXJsCiAgICAgaWYgKF9pbnZhbGlkYXRlZCkKICAgICAgICAgcmV0
dXJuIG5pbDsKIAotICAgIFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFzayAqdGFzayA9IFtbV2Vi
Q29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrIGFsbG9jXSBpbml0V2l0aFNlc3Npb246c2VsZiBpZGVu
dGlmaWVyOl9uZXh0VGFza0lkZW50aWZpZXIrKyBVUkw6dXJsXTsKKyAgICBhdXRvIHRhc2sgPSBh
ZG9wdE5TKFtbV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrIGFsbG9jXSBpbml0V2l0aFNlc3Np
b246c2VsZiBpZGVudGlmaWVyOl9uZXh0VGFza0lkZW50aWZpZXIrKyBVUkw6dXJsXSk7CiAgICAg
ewogICAgICAgICBMb2NrZXI8TG9jaz4gbG9ja2VyKF9kYXRhVGFza3NMb2NrKTsKLSAgICAgICAg
X2RhdGFUYXNrcy5hZGQodGFzayk7CisgICAgICAgIF9kYXRhVGFza3MuYWRkKHRhc2suZ2V0KCkp
OwogICAgIH0KLSAgICByZXR1cm4gKE5TVVJMU2Vzc2lvbkRhdGFUYXNrICopW3Rhc2sgYXV0b3Jl
bGVhc2VdOworICAgIHJldHVybiAoTlNVUkxTZXNzaW9uRGF0YVRhc2sgKil0YXNrLmF1dG9yZWxl
YXNlKCk7CiB9CiAKIC0gKHZvaWQpc2VuZEgyUGluZzooTlNVUkwgKil1cmwgcG9uZ0hhbmRsZXI6
KHZvaWQgKF4pKE5TRXJyb3IgKmVycm9yLCBOU1RpbWVJbnRlcnZhbCBpbnRlcnZhbCkpcG9uZ0hh
bmRsZXIKQEAgLTY4MSw5ICs2ODEsOSBAQCAtIChpZClpbml0V2l0aFNlc3Npb246KFdlYkNvcmVO
U1VSTFNlc3Npb24gKilzZXNzaW9uIGlkZW50aWZpZXI6KE5TVUludGVnZXIpaWRlbgogCiAgICAg
Ly8gQ29yZU1lZGlhIHdpbGwgZXhwbGljaXRseSBhZGQgYSB1c2VyIGFnZW50IGhlYWRlci4gUmVt
b3ZlIGlmIHByZXNlbnQuCiAgICAgaWYgKGF1dG8qIHVzZXJBZ2VudFZhbHVlID0gW3JlcXVlc3Qg
dmFsdWVGb3JIVFRQSGVhZGVyRmllbGQ6QCJVc2VyLUFnZW50Il0pIHsKLSAgICAgICAgTlNNdXRh
YmxlVVJMUmVxdWVzdCogbXV0YWJsZVJlcXVlc3QgPSBbcmVxdWVzdCBtdXRhYmxlQ29weVdpdGha
b25lOm5pbF07CisgICAgICAgIGF1dG8gbXV0YWJsZVJlcXVlc3QgPSBhZG9wdE5TKFtyZXF1ZXN0
IG11dGFibGVDb3B5V2l0aFpvbmU6bmlsXSk7CiAgICAgICAgIFttdXRhYmxlUmVxdWVzdCBzZXRW
YWx1ZTpuaWwgZm9ySFRUUEhlYWRlckZpZWxkOkAiVXNlci1BZ2VudCJdOwotICAgICAgICByZXF1
ZXN0ID0gW211dGFibGVSZXF1ZXN0IGF1dG9yZWxlYXNlXTsKKyAgICAgICAgcmVxdWVzdCA9IG11
dGFibGVSZXF1ZXN0LmF1dG9yZWxlYXNlKCk7CiAgICAgfQogCiAgICAgc2VsZi5vcmlnaW5hbFJl
cXVlc3QgPSBzZWxmLmN1cnJlbnRSZXF1ZXN0ID0gcmVxdWVzdDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0F1dGhlbnRpY2F0aW9uTWFjLm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQXV0aGVudGljYXRpb25NYWMubW0KaW5k
ZXggZmI0ZGU3MjA4NmM5NzMwMDdkYmQ5MGJkMDQxMzU0NjdmMDk4NTZlMy4uY2ZjZjEwZmNhZjIx
OThjYjFlODkyNDI5ZTk2NmJjYTIzMjY5M2Q5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9tYWMvQXV0aGVudGljYXRpb25NYWMubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQXV0aGVudGljYXRpb25NYWMubW0KQEAgLTE1Nyw3
ICsxNTcsNyBAQCBOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICptYWMoY29uc3QgQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UmIGNvcmVDaGFsbGVuZ2UpCiAgICAgaWYgKGNvcmVDaGFsbGVuZ2Uu
bnNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSgpKQogICAgICAgICByZXR1cm4gY29yZUNoYWxs
ZW5nZS5uc1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCk7CiAgICAgICAgIAotICAgIHJldHVy
biBbW1tOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIGFsbG9jXSBpbml0V2l0aFByb3RlY3Rp
b25TcGFjZTpjb3JlQ2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZSgpLm5zU3BhY2UoKSBwcm9wb3Nl
ZENyZWRlbnRpYWw6Y29yZUNoYWxsZW5nZS5wcm9wb3NlZENyZWRlbnRpYWwoKS5uc0NyZWRlbnRp
YWwoKSBwcmV2aW91c0ZhaWx1cmVDb3VudDpjb3JlQ2hhbGxlbmdlLnByZXZpb3VzRmFpbHVyZUNv
dW50KCkgZmFpbHVyZVJlc3BvbnNlOmNvcmVDaGFsbGVuZ2UuZmFpbHVyZVJlc3BvbnNlKCkubnNV
UkxSZXNwb25zZSgpIGVycm9yOmNvcmVDaGFsbGVuZ2UuZXJyb3IoKSBzZW5kZXI6Y29yZUNoYWxs
ZW5nZS5zZW5kZXIoKV0gYXV0b3JlbGVhc2VdOworICAgIHJldHVybiBhZG9wdE5TKFtbTlNVUkxB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSBhbGxvY10gaW5pdFdpdGhQcm90ZWN0aW9uU3BhY2U6Y29y
ZUNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2UoKS5uc1NwYWNlKCkgcHJvcG9zZWRDcmVkZW50aWFs
OmNvcmVDaGFsbGVuZ2UucHJvcG9zZWRDcmVkZW50aWFsKCkubnNDcmVkZW50aWFsKCkgcHJldmlv
dXNGYWlsdXJlQ291bnQ6Y29yZUNoYWxsZW5nZS5wcmV2aW91c0ZhaWx1cmVDb3VudCgpIGZhaWx1
cmVSZXNwb25zZTpjb3JlQ2hhbGxlbmdlLmZhaWx1cmVSZXNwb25zZSgpLm5zVVJMUmVzcG9uc2Uo
KSBlcnJvcjpjb3JlQ2hhbGxlbmdlLmVycm9yKCkgc2VuZGVyOmNvcmVDaGFsbGVuZ2Uuc2VuZGVy
KCldKS5hdXRvcmVsZWFzZSgpOwogfQogCiBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSBjb3JlKE5T
VVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKm1hY0NoYWxsZW5nZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlRXJyb3JNYWMubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUVycm9yTWFjLm1tCmlu
ZGV4IDM3MWVkZDYwYmFhOTkzN2JiZDlkNTJkZWEyN2RlYjM4NTJiMjAwYmYuLmFkNjlhNWYwN2Jh
NDc4Y2E5N2Y0ODNhMTJjMzA1ODViNjVhOGVlODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlRXJyb3JNYWMubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VFcnJvck1hYy5tbQpAQCAtNTYsNyAr
NTYsNyBAQCBzdGF0aWMgTlNEaWN0aW9uYXJ5KiBkaWN0aW9uYXJ5VGhhdENhbkNvZGUoTlNEaWN0
aW9uYXJ5KiBzcmMpCiAgICAgLy8gVGhpcyBmdW5jdGlvbiBtYWtlcyBhIGNvcHkgb2YgaW5wdXQg
ZGljdGlvbmFyeSwgbW9kaWZpZXMgaXQgc3VjaCB0aGF0IGl0ICJzaG91bGQiIChhcyBtdWNoIGFz
IHdlIGNhbiBoZWxwIGl0KQogICAgIC8vIG5vdCBjb250YWluIGFueSBvYmplY3RzIHRoYXQgZG8g
bm90IGNvbmZvcm0gdG8gTlNDb2RpbmcgcHJvdG9jb2wsIGFuZCByZXR1cm5zIGl0IGF1dG9yZWxl
YXNlZC4KIAotICAgIE5TTXV0YWJsZURpY3Rpb25hcnkqIGRzdCA9IFtzcmMgbXV0YWJsZUNvcHld
OworICAgIGF1dG8gZHN0ID0gYWRvcHROUyhbc3JjIG11dGFibGVDb3B5XSk7CiAKICAgICAvLyBL
aWxsIHRoZSBrbm93biBwcm9ibGVtIGVudHJpZXMuCiAgICAgW2RzdCByZW1vdmVPYmplY3RGb3JL
ZXk6QCJOU0Vycm9yUGVlckNlcnRpZmljYXRlQ2hhaW5LZXkiXTsgLy8gTlNBcnJheSB3aXRoIFNl
Y0NlcnRpZmljYXRlUmVmIG9iamVjdHMKQEAgLTc3LDcgKzc3LDcgQEAgc3RhdGljIE5TRGljdGlv
bmFyeSogZGljdGlvbmFyeVRoYXRDYW5Db2RlKE5TRGljdGlvbmFyeSogc3JjKQogICAgICAgICAv
LyBGSVhNRTogV2UgY291bGQgZHJpbGwgZG93biBpbnRvIHN1YmRpY3Rpb25hcmllcywgYnV0IGl0
IHNlZW1zIG1vcmUgdHJvdWJsZSB0aGFuIGl0J3Mgd29ydGgKICAgICB9XTsKIAotICAgIHJldHVy
biBbZHN0IGF1dG9yZWxlYXNlXTsKKyAgICByZXR1cm4gZHN0LmF1dG9yZWxlYXNlKCk7CiB9CiAK
IC0gKHZvaWQpZW5jb2RlV2l0aENvZGVyOihOU0NvZGVyICopY29kZXIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlSGFuZGxlTWFjLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMubW0K
aW5kZXggYjJjYmFiN2M4YWNmMmMzOTVmOTg0NzBhNTBiZjA3ODJkOTEyY2E1YS4uMzEzNTU0ZGRm
Y2NhODgzN2Y4OGZhYTM2YTE0ZDdhZTMyYTBjMDM5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMubW0KQEAgLTE3
MywxNCArMTczLDE0IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OmNyZWF0ZU5TVVJMQ29ubmVjdGlv
bihpZCBkZWxlZ2F0ZSwgYm9vbCBzaG91bGRVc2VDcmVkZW50aWFsCiAgICAgbnNSZXF1ZXN0ID0g
YXBwbHlTbmlmZmluZ1BvbGljaWVzSWZOZWVkZWQobnNSZXF1ZXN0LCBzaG91bGRDb250ZW50U25p
ZmYsIHNob3VsZENvbnRlbnRFbmNvZGluZ1NuaWZmKTsKIAogICAgIGlmIChkLT5tX3N0b3JhZ2VT
ZXNzaW9uKQotICAgICAgICBuc1JlcXVlc3QgPSBbY29weVJlcXVlc3RXaXRoU3RvcmFnZVNlc3Np
b24oZC0+bV9zdG9yYWdlU2Vzc2lvbi5nZXQoKSwgbnNSZXF1ZXN0KSBhdXRvcmVsZWFzZV07Cisg
ICAgICAgIG5zUmVxdWVzdCA9IGNvcHlSZXF1ZXN0V2l0aFN0b3JhZ2VTZXNzaW9uKGQtPm1fc3Rv
cmFnZVNlc3Npb24uZ2V0KCksIG5zUmVxdWVzdCkuYXV0b3JlbGVhc2UoKTsKIAogICAgIEFTU0VS
VChbTlNVUkxDb25uZWN0aW9uIGluc3RhbmNlc1Jlc3BvbmRUb1NlbGVjdG9yOkBzZWxlY3Rvcihf
aW5pdFdpdGhSZXF1ZXN0OmRlbGVnYXRlOnVzZXNDYWNoZTptYXhDb250ZW50TGVuZ3RoOnN0YXJ0
SW1tZWRpYXRlbHk6Y29ubmVjdGlvblByb3BlcnRpZXM6KV0pOwogCiAjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKICAgICAvLyBGSVhNRTogVGhpcyBjb2RlIGlzIGRpZmZlcmVudCBmcm9tIGlPUyBj
b2RlIGluIFJlc291cmNlSGFuZGxlQ0ZOZXQuY3BwIGluIHRoYXQgaGVyZSB3ZSByZXNwZWN0IHN0
cmVhbSBwcm9wZXJ0aWVzIHRoYXQgd2VyZSBwcmVzZW50IGluIGNsaWVudCBwcm9wZXJ0aWVzLgog
ICAgIE5TRGljdGlvbmFyeSAqc3RyZWFtUHJvcGVydGllc0Zyb21DbGllbnQgPSBbY29ubmVjdGlv
blByb3BlcnRpZXMgb2JqZWN0Rm9yS2V5OkAia0NGVVJMQ29ubmVjdGlvblNvY2tldFN0cmVhbVBy
b3BlcnRpZXMiXTsKLSAgICBOU011dGFibGVEaWN0aW9uYXJ5ICpzdHJlYW1Qcm9wZXJ0aWVzID0g
c3RyZWFtUHJvcGVydGllc0Zyb21DbGllbnQgPyBbW3N0cmVhbVByb3BlcnRpZXNGcm9tQ2xpZW50
IG11dGFibGVDb3B5XSBhdXRvcmVsZWFzZV0gOiBbTlNNdXRhYmxlRGljdGlvbmFyeSBkaWN0aW9u
YXJ5XTsKKyAgICBOU011dGFibGVEaWN0aW9uYXJ5ICpzdHJlYW1Qcm9wZXJ0aWVzID0gc3RyZWFt
UHJvcGVydGllc0Zyb21DbGllbnQgPyBhZG9wdE5TKFtzdHJlYW1Qcm9wZXJ0aWVzRnJvbUNsaWVu
dCBtdXRhYmxlQ29weV0pLmF1dG9yZWxlYXNlKCkgOiBbTlNNdXRhYmxlRGljdGlvbmFyeSBkaWN0
aW9uYXJ5XTsKICNlbHNlCiAgICAgTlNNdXRhYmxlRGljdGlvbmFyeSAqc3RyZWFtUHJvcGVydGll
cyA9IFtOU011dGFibGVEaWN0aW9uYXJ5IGRpY3Rpb25hcnldOwogI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlVVJMUmVzcG9uc2Uu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlVVJMUmVzcG9u
c2UubW0KaW5kZXggZDIwNzg3YmNiMWI4ZjlhZDdhY2JiZTM4MWI5YzQ5NGFmNWMxMGE5MS4uYmIx
MTZhOWRmZjNlODAyNDllM2MxZmYxMGVlOTEyOWM3MDU2ZmQxNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVVSTFJlc3BvbnNlLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVVUkxSZXNwb25zZS5t
bQpAQCAtMzQyLDcgKzM0Miw3IEBAIE5TVVJMUmVzcG9uc2UgKnN5bnRoZXNpemVSZWRpcmVjdFJl
c3BvbnNlSWZOZWNlc3NhcnkoTlNVUkxSZXF1ZXN0ICpjdXJyZW50UmVxdWVzCiAgICAgaWYgKFtb
W25ld1JlcXVlc3QgVVJMXSBzY2hlbWVdIGlzRXF1YWxUb1N0cmluZzpbW2N1cnJlbnRSZXF1ZXN0
IFVSTF0gc2NoZW1lXV0gJiYgIVtuZXdSZXF1ZXN0IF9zY2hlbWVXYXNVcGdyYWRlZER1ZVRvRHlu
YW1pY0hTVFNdKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgcmV0dXJuIFtbUmVzb3VyY2VS
ZXNwb25zZTo6c3ludGhldGljUmVkaXJlY3RSZXNwb25zZShVUkwoW2N1cnJlbnRSZXF1ZXN0IFVS
TF0pLCBVUkwoW25ld1JlcXVlc3QgVVJMXSkpLm5zVVJMUmVzcG9uc2UoKSByZXRhaW5dIGF1dG9y
ZWxlYXNlXTsKKyAgICByZXR1cm4gcmV0YWluUHRyKFJlc291cmNlUmVzcG9uc2U6OnN5bnRoZXRp
Y1JlZGlyZWN0UmVzcG9uc2UoVVJMKFtjdXJyZW50UmVxdWVzdCBVUkxdKSwgVVJMKFtuZXdSZXF1
ZXN0IFVSTF0pKS5uc1VSTFJlc3BvbnNlKCkpLmF1dG9yZWxlYXNlKCk7CiB9CiAKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvaW9zL0xvY2FsaXplZERhdGVDYWNo
ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9pb3MvTG9jYWxpemVkRGF0ZUNhY2hl
LmgKaW5kZXggOWFlNWVjNWRhM2MzMGYzYzkzM2EyZDY3OTAxNWU1NjE3N2M4MDE3ZS4uYzE4Zjhj
NTkyZGM4YzM3NzIyMjlhMTFiMTIwMzFmMWZmMDhiM2EzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vdGV4dC9pb3MvTG9jYWxpemVkRGF0ZUNhY2hlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9pb3MvTG9jYWxpemVkRGF0ZUNhY2hlLmgKQEAgLTQ5LDcg
KzQ5LDcgQEAgcHJpdmF0ZToKICAgICBMb2NhbGl6ZWREYXRlQ2FjaGUoKTsKICAgICB+TG9jYWxp
emVkRGF0ZUNhY2hlKCk7CiAKLSAgICBOU0RhdGVGb3JtYXR0ZXIgKmNyZWF0ZUZvcm1hdHRlckZv
clR5cGUoRGF0ZUNvbXBvbmVudHNUeXBlKTsKKyAgICBSZXRhaW5QdHI8TlNEYXRlRm9ybWF0dGVy
PiBjcmVhdGVGb3JtYXR0ZXJGb3JUeXBlKERhdGVDb21wb25lbnRzVHlwZSk7CiAgICAgZmxvYXQg
Y2FsY3VsYXRlTWF4aW11bVdpZHRoKERhdGVDb21wb25lbnRzVHlwZSwgY29uc3QgTWVhc3VyZVRl
eHRDbGllbnQmKTsKIAogICAgIC8vIFVzaW5nIGludCBpbnN0ZWFkIG9mIERhdGVDb21wb25lbnRz
VHlwZSBmb3IgdGhlIGtleSBiZWNhdXNlIHRoZSBlbnVtCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS90ZXh0L2lvcy9Mb2NhbGl6ZWREYXRlQ2FjaGUubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS90ZXh0L2lvcy9Mb2NhbGl6ZWREYXRlQ2FjaGUubW0KaW5kZXggYTkzMzNi
OWJiMDA5MmU5MWI0MTI2ZTI3ZDhiZjdhYWM0YzQxZmFlYS4uOTJmNTU3MDY3ODhhOTY4NWM3NTUx
ODRkYjVkM2MzNjgwYTM3Yjc1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
dGV4dC9pb3MvTG9jYWxpemVkRGF0ZUNhY2hlLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3RleHQvaW9zL0xvY2FsaXplZERhdGVDYWNoZS5tbQpAQCAtNzYsOSArNzYsOSBAQCBOU0Rh
dGVGb3JtYXR0ZXIgKkxvY2FsaXplZERhdGVDYWNoZTo6Zm9ybWF0dGVyRm9yRGF0ZVR5cGUoRGF0
ZUNvbXBvbmVudHNUeXBlIHR5cAogICAgIGlmIChtX2Zvcm1hdHRlck1hcC5jb250YWlucyhrZXkp
KQogICAgICAgICByZXR1cm4gbV9mb3JtYXR0ZXJNYXAuZ2V0KGtleSkuZ2V0KCk7CiAKLSAgICBO
U0RhdGVGb3JtYXR0ZXIgKmRhdGVGb3JtYXR0ZXIgPSBbY3JlYXRlRm9ybWF0dGVyRm9yVHlwZSh0
eXBlKSBhdXRvcmVsZWFzZV07Ci0gICAgbV9mb3JtYXR0ZXJNYXAuc2V0KGtleSwgZGF0ZUZvcm1h
dHRlcik7Ci0gICAgcmV0dXJuIGRhdGVGb3JtYXR0ZXI7CisgICAgYXV0byBkYXRlRm9ybWF0dGVy
ID0gY3JlYXRlRm9ybWF0dGVyRm9yVHlwZSh0eXBlKTsKKyAgICBtX2Zvcm1hdHRlck1hcC5zZXQo
a2V5LCBkYXRlRm9ybWF0dGVyLmdldCgpKTsKKyAgICByZXR1cm4gZGF0ZUZvcm1hdHRlci5hdXRv
cmVsZWFzZSgpOwogfQogCiBmbG9hdCBMb2NhbGl6ZWREYXRlQ2FjaGU6Om1heGltdW1XaWR0aEZv
ckRhdGVUeXBlKERhdGVDb21wb25lbnRzVHlwZSB0eXBlLCBjb25zdCBGb250Q2FzY2FkZSYgZm9u
dCwgY29uc3QgTWVhc3VyZVRleHRDbGllbnQmIG1lYXN1cmVyKQpAQCAtOTcsOSArOTcsOSBAQCBm
bG9hdCBMb2NhbGl6ZWREYXRlQ2FjaGU6Om1heGltdW1XaWR0aEZvckRhdGVUeXBlKERhdGVDb21w
b25lbnRzVHlwZSB0eXBlLCBjb25zdAogICAgIHJldHVybiBjYWxjdWxhdGVkTWF4aW11bTsKIH0K
IAotTlNEYXRlRm9ybWF0dGVyICpMb2NhbGl6ZWREYXRlQ2FjaGU6OmNyZWF0ZUZvcm1hdHRlckZv
clR5cGUoRGF0ZUNvbXBvbmVudHNUeXBlIHR5cGUpCitSZXRhaW5QdHI8TlNEYXRlRm9ybWF0dGVy
PiBMb2NhbGl6ZWREYXRlQ2FjaGU6OmNyZWF0ZUZvcm1hdHRlckZvclR5cGUoRGF0ZUNvbXBvbmVu
dHNUeXBlIHR5cGUpCiB7Ci0gICAgTlNEYXRlRm9ybWF0dGVyICpkYXRlRm9ybWF0dGVyID0gW1tO
U0RhdGVGb3JtYXR0ZXIgYWxsb2NdIGluaXRdOworICAgIGF1dG8gZGF0ZUZvcm1hdHRlciA9IGFk
b3B0TlMoW1tOU0RhdGVGb3JtYXR0ZXIgYWxsb2NdIGluaXRdKTsKICAgICBOU0xvY2FsZSAqY3Vy
cmVudExvY2FsZSA9IFtOU0xvY2FsZSBjdXJyZW50TG9jYWxlXTsKICAgICBbZGF0ZUZvcm1hdHRl
ciBzZXRMb2NhbGU6Y3VycmVudExvY2FsZV07CiAKQEAgLTE0MSw3ICsxNDEsNyBAQCBmbG9hdCBM
b2NhbGl6ZWREYXRlQ2FjaGU6OmNhbGN1bGF0ZU1heGltdW1XaWR0aChEYXRlQ29tcG9uZW50c1R5
cGUgdHlwZSwgY29uc3QgTQogICAgIGZsb2F0IG1heGltdW1XaWR0aCA9IDA7CiAKICAgICAvLyBH
ZXQgdGhlIGZvcm1hdHRlciB3ZSB3b3VsZCB1c2UsIGNvcHkgaXQgYmVjYXVzZSB3ZSB3aWxsIGZv
cmNlIGl0cyB0aW1lIHpvbmUgdG8gYmUgVVRDLgotICAgIE5TRGF0ZUZvcm1hdHRlciAqZGF0ZUZv
cm1hdHRlciA9IFtbZm9ybWF0dGVyRm9yRGF0ZVR5cGUodHlwZSkgY29weV0gYXV0b3JlbGVhc2Vd
OworICAgIGF1dG8gZGF0ZUZvcm1hdHRlciA9IGFkb3B0TlMoW2Zvcm1hdHRlckZvckRhdGVUeXBl
KHR5cGUpIGNvcHldKTsKICAgICBbZGF0ZUZvcm1hdHRlciBzZXRUaW1lWm9uZTpbTlNUaW1lWm9u
ZSB0aW1lWm9uZUZvclNlY29uZHNGcm9tR01UOjBdXTsKIAogICAgIC8vIFNhbXBsZSBkYXRlIHdp
dGggYSA0IGRpZ2l0IHllYXIgYW5kIDIgZGlnaXQgZGF5LCBob3VyLCBhbmQgbWludXRlLiBEaWdp
dHMgYXJlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05l
dHdvcmtTZXNzaW9uQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29h
L05ldHdvcmtTZXNzaW9uQ29jb2EubW0KaW5kZXggMjllMGE4MzBlNDFkNTVlNmJmMzViYmIzOTZh
ZTgxZmI5YjIwZjE4Yy4uNmU1NDU2ZTkzZGRiZDhlOGJhMWE5MGM2YzI4NDdjMDM0Y2U3MjMyNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vz
c2lvbkNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0
d29ya1Nlc3Npb25Db2NvYS5tbQpAQCAtNDc3LDEzICs0NzcsMTMgQEAgLSAodm9pZClVUkxTZXNz
aW9uOihOU1VSTFNlc3Npb24gKilzZXNzaW9uIHRhc2s6KE5TVVJMU2Vzc2lvblRhc2sgKil0YXNr
IG5lZWROZXcKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogc3RhdGljIE5T
VVJMUmVxdWVzdCogZG93bmdyYWRlUmVxdWVzdChOU1VSTFJlcXVlc3QgKnJlcXVlc3QpCiB7Ci0g
ICAgTlNNdXRhYmxlVVJMUmVxdWVzdCAqbnNNdXRhYmxlUmVxdWVzdCA9IFtbcmVxdWVzdCBtdXRh
YmxlQ29weV0gYXV0b3JlbGVhc2VdOwotICAgIGlmIChbbnNNdXRhYmxlUmVxdWVzdC5VUkwuc2No
ZW1lIGlzRXF1YWxUb1N0cmluZzpAImh0dHBzIl0pIHsKLSAgICAgICAgTlNVUkxDb21wb25lbnRz
ICpjb21wb25lbnRzID0gW05TVVJMQ29tcG9uZW50cyBjb21wb25lbnRzV2l0aFVSTDpuc011dGFi
bGVSZXF1ZXN0LlVSTCByZXNvbHZpbmdBZ2FpbnN0QmFzZVVSTDpOT107CisgICAgYXV0byBuc011
dGFibGVSZXF1ZXN0ID0gYWRvcHROUyhbcmVxdWVzdCBtdXRhYmxlQ29weV0pOworICAgIGlmIChb
W25zTXV0YWJsZVJlcXVlc3QgVVJMXS5zY2hlbWUgaXNFcXVhbFRvU3RyaW5nOkAiaHR0cHMiXSkg
eworICAgICAgICBOU1VSTENvbXBvbmVudHMgKmNvbXBvbmVudHMgPSBbTlNVUkxDb21wb25lbnRz
IGNvbXBvbmVudHNXaXRoVVJMOltuc011dGFibGVSZXF1ZXN0IFVSTF0gcmVzb2x2aW5nQWdhaW5z
dEJhc2VVUkw6Tk9dOwogICAgICAgICBjb21wb25lbnRzLnNjaGVtZSA9IEAiaHR0cCI7CiAgICAg
ICAgIFtuc011dGFibGVSZXF1ZXN0IHNldFVSTDpjb21wb25lbnRzLlVSTF07Ci0gICAgICAgIEFT
U0VSVChbbnNNdXRhYmxlUmVxdWVzdC5VUkwuc2NoZW1lIGlzRXF1YWxUb1N0cmluZzpAImh0dHAi
XSk7Ci0gICAgICAgIHJldHVybiBuc011dGFibGVSZXF1ZXN0OworICAgICAgICBBU1NFUlQoW1tu
c011dGFibGVSZXF1ZXN0IFVSTF0uc2NoZW1lIGlzRXF1YWxUb1N0cmluZzpAImh0dHAiXSk7Cisg
ICAgICAgIHJldHVybiBuc011dGFibGVSZXF1ZXN0LmF1dG9yZWxlYXNlKCk7CiAgICAgfQogCiAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC01MTQsMTUgKzUxNCwxNSBAQCBzdGF0aWMgTlNV
UkxSZXF1ZXN0KiB1cGRhdGVJZ25vcmVTdHJpY3RUcmFuc3BvcnRTZWN1cml0eVNldHRpbmdJZk5l
Y2Vzc2FyeShOU1VSTAogICAgIGlmIChbcmVxdWVzdC5VUkwuc2NoZW1lIGlzRXF1YWxUb1N0cmlu
ZzpAImh0dHBzIl0gJiYgc2hvdWxkSWdub3JlSFNUUyAmJiBpZ25vcmVIU1RTKHJlcXVlc3QpKSB7
CiAgICAgICAgIC8vIFRoZSByZXF1ZXN0IHdhcyB1cGdyYWRlZCBmb3Igc29tZSBvdGhlciByZWFz
b24gdGhhbiBIU1RTLgogICAgICAgICAvLyBEb24ndCBpZ25vcmUgSFNUUyB0byBhdm9pZCB0aGUg
cmlzayBvZiBhbm90aGVyIGRvd25ncmFkZS4KLSAgICAgICAgTlNNdXRhYmxlVVJMUmVxdWVzdCAq
bnNNdXRhYmxlUmVxdWVzdCA9IFtbcmVxdWVzdCBtdXRhYmxlQ29weV0gYXV0b3JlbGVhc2VdOwot
ICAgICAgICBzZXRJZ25vcmVIU1RTKG5zTXV0YWJsZVJlcXVlc3QsIGZhbHNlKTsKLSAgICAgICAg
cmV0dXJuIG5zTXV0YWJsZVJlcXVlc3Q7CisgICAgICAgIGF1dG8gbnNNdXRhYmxlUmVxdWVzdCA9
IGFkb3B0TlMoW3JlcXVlc3QgbXV0YWJsZUNvcHldKTsKKyAgICAgICAgc2V0SWdub3JlSFNUUyhu
c011dGFibGVSZXF1ZXN0LmdldCgpLCBmYWxzZSk7CisgICAgICAgIHJldHVybiBuc011dGFibGVS
ZXF1ZXN0LmF1dG9yZWxlYXNlKCk7CiAgICAgfQogICAgIAogICAgIGlmIChbcmVxdWVzdC5VUkwu
c2NoZW1lIGlzRXF1YWxUb1N0cmluZzpAImh0dHAiXSAmJiBpZ25vcmVIU1RTKHJlcXVlc3QpICE9
IHNob3VsZElnbm9yZUhTVFMpIHsKLSAgICAgICAgTlNNdXRhYmxlVVJMUmVxdWVzdCAqbnNNdXRh
YmxlUmVxdWVzdCA9IFtbcmVxdWVzdCBtdXRhYmxlQ29weV0gYXV0b3JlbGVhc2VdOwotICAgICAg
ICBzZXRJZ25vcmVIU1RTKG5zTXV0YWJsZVJlcXVlc3QsIHNob3VsZElnbm9yZUhTVFMpOwotICAg
ICAgICByZXR1cm4gbnNNdXRhYmxlUmVxdWVzdDsKKyAgICAgICAgYXV0byBuc011dGFibGVSZXF1
ZXN0ID0gYWRvcHROUyhbcmVxdWVzdCBtdXRhYmxlQ29weV0pOworICAgICAgICBzZXRJZ25vcmVI
U1RTKG5zTXV0YWJsZVJlcXVlc3QuZ2V0KCksIHNob3VsZElnbm9yZUhTVFMpOworICAgICAgICBy
ZXR1cm4gbnNNdXRhYmxlUmVxdWVzdC5hdXRvcmVsZWFzZSgpOwogICAgIH0KIAogICAgIHJldHVy
biByZXF1ZXN0OwpAQCAtMTE1OCw3ICsxMTU4LDcgQEAgc3RhdGljIE5TRGljdGlvbmFyeSAqcHJv
eHlEaWN0aW9uYXJ5KGNvbnN0IFVSTCYgaHR0cFByb3h5LCBjb25zdCBVUkwmIGh0dHBzUHJveHkK
IAogICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCiAKLSAgICBOU011dGFi
bGVEaWN0aW9uYXJ5ICpkaWN0aW9uYXJ5ID0gW1tbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10g
aW5pdF0gYXV0b3JlbGVhc2VdOworICAgIGF1dG8gZGljdGlvbmFyeSA9IGFkb3B0TlMoW1tOU011
dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XSk7CiAgICAgaWYgKGh0dHBQcm94eS5pc1ZhbGlk
KCkpIHsKICAgICAgICAgW2RpY3Rpb25hcnkgc2V0T2JqZWN0Omh0dHBQcm94eS5ob3N0KCkudG9T
dHJpbmcoKSBmb3JLZXk6KE5TU3RyaW5nICopa0NGU3RyZWFtUHJvcGVydHlIVFRQUHJveHlIb3N0
XTsKICAgICAgICAgaWYgKGF1dG8gcG9ydCA9IGh0dHBQcm94eS5wb3J0KCkpCkBAIC0xMTY5LDcg
KzExNjksNyBAQCBzdGF0aWMgTlNEaWN0aW9uYXJ5ICpwcm94eURpY3Rpb25hcnkoY29uc3QgVVJM
JiBodHRwUHJveHksIGNvbnN0IFVSTCYgaHR0cHNQcm94eQogICAgICAgICBpZiAoYXV0byBwb3J0
ID0gaHR0cHNQcm94eS5wb3J0KCkpCiAgICAgICAgICAgICBbZGljdGlvbmFyeSBzZXRPYmplY3Q6
QCgqcG9ydCkgZm9yS2V5OihOU1N0cmluZyAqKWtDRlN0cmVhbVByb3BlcnR5SFRUUFNQcm94eVBv
cnRdOwogICAgIH0KLSAgICByZXR1cm4gZGljdGlvbmFyeTsKKyAgICByZXR1cm4gZGljdGlvbmFy
eS5hdXRvcmVsZWFzZSgpOwogCiAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5E
CiB9CkBAIC0xMjMyLDcgKzEyMzIsNyBAQCBOZXR3b3JrU2Vzc2lvbkNvY29hOjpOZXR3b3JrU2Vz
c2lvbkNvY29hKE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcywgTmV0d29yawogICAgICAg
ICBTYW5kYm94RXh0ZW5zaW9uOjpjb25zdW1lUGVybWFuZW50bHkocGFyYW1ldGVycy5oc3RzU3Rv
cmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CiAgICAgICAgIC8vIEZJWE1FOiBSZW1vdmUg
dGhpcyByZXNwb25kc1RvU2VsZWN0b3IgY2hlY2sgb25jZSByZGFyOi8vcHJvYmxlbS81MDEwOTYz
MSBpcyBpbiBhIGJ1aWxkIGFuZCBib3RzIGFyZSB1cGRhdGVkLgogICAgICAgICBpZiAoW2NvbmZp
Z3VyYXRpb24gcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihfaHN0c1N0b3JhZ2UpXSkKLSAg
ICAgICAgICAgIGNvbmZpZ3VyYXRpb24uX2hzdHNTdG9yYWdlID0gW1thbGxvY19OU0hTVFNTdG9y
YWdlSW5zdGFuY2UoKSBpbml0UGVyc2lzdGVudFN0b3JlV2l0aFVSTDpbTlNVUkwgZmlsZVVSTFdp
dGhQYXRoOnBhcmFtZXRlcnMuaHN0c1N0b3JhZ2VEaXJlY3RvcnkgaXNEaXJlY3Rvcnk6WUVTXV0g
YXV0b3JlbGVhc2VdOworICAgICAgICAgICAgY29uZmlndXJhdGlvbi5faHN0c1N0b3JhZ2UgPSBh
ZG9wdE5TKFthbGxvY19OU0hTVFNTdG9yYWdlSW5zdGFuY2UoKSBpbml0UGVyc2lzdGVudFN0b3Jl
V2l0aFVSTDpbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOnBhcmFtZXRlcnMuaHN0c1N0b3JhZ2VEaXJl
Y3RvcnkgaXNEaXJlY3Rvcnk6WUVTXV0pLmF1dG9yZWxlYXNlKCk7CiAgICAgfQogI2VuZGlmCiAK
QEAgLTEyNjcsNyArMTI2Nyw3IEBAIE5ldHdvcmtTZXNzaW9uQ29jb2E6Ok5ldHdvcmtTZXNzaW9u
Q29jb2EoTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBOZXR3b3JrCiAjaWYgSEFWRShD
Rk5FVFdPUktfQUxURVJOQVRJVkVfU0VSVklDRSkKICAgICBpZiAoIXBhcmFtZXRlcnMuYWx0ZXJu
YXRpdmVTZXJ2aWNlRGlyZWN0b3J5LmlzRW1wdHkoKSkgewogICAgICAgICBTYW5kYm94RXh0ZW5z
aW9uOjpjb25zdW1lUGVybWFuZW50bHkocGFyYW1ldGVycy5hbHRlcm5hdGl2ZVNlcnZpY2VEaXJl
Y3RvcnlFeHRlbnNpb25IYW5kbGUpOwotICAgICAgICBjb25maWd1cmF0aW9uLl9hbHRlcm5hdGl2
ZVNlcnZpY2VzU3RvcmFnZSA9IFtbW19OU0hUVFBBbHRlcm5hdGl2ZVNlcnZpY2VzU3RvcmFnZSBh
bGxvY10gaW5pdFBlcnNpc3RlbnRTdG9yZVdpdGhVUkw6W1tOU1VSTCBmaWxlVVJMV2l0aFBhdGg6
cGFyYW1ldGVycy5hbHRlcm5hdGl2ZVNlcnZpY2VEaXJlY3RvcnkgaXNEaXJlY3Rvcnk6WUVTXSBV
UkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJBbHRlcm5hdGl2ZVNlcnZpY2Uuc3FsaXRlIl1d
IGF1dG9yZWxlYXNlXTsKKyAgICAgICAgY29uZmlndXJhdGlvbi5fYWx0ZXJuYXRpdmVTZXJ2aWNl
c1N0b3JhZ2UgPSBhZG9wdE5TKFtbX05TSFRUUEFsdGVybmF0aXZlU2VydmljZXNTdG9yYWdlIGFs
bG9jXSBpbml0UGVyc2lzdGVudFN0b3JlV2l0aFVSTDpbW05TVVJMIGZpbGVVUkxXaXRoUGF0aDpw
YXJhbWV0ZXJzLmFsdGVybmF0aXZlU2VydmljZURpcmVjdG9yeSBpc0RpcmVjdG9yeTpZRVNdIFVS
TEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIkFsdGVybmF0aXZlU2VydmljZS5zcWxpdGUiXV0p
LmF1dG9yZWxlYXNlKCk7CiAgICAgfQogICAgIGlmIChwYXJhbWV0ZXJzLmh0dHAzRW5hYmxlZCkK
ICAgICAgICAgY29uZmlndXJhdGlvbi5fYWxsb3dzSFRUUDMgPSBZRVM7CkBAIC0xMjk5LDEwICsx
Mjk5LDEwIEBAIE5ldHdvcmtTZXNzaW9uQ29jb2E6Ok5ldHdvcmtTZXNzaW9uQ29jb2EoTmV0d29y
a1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBOZXR3b3JrCiAgICAgYXV0byogc3RvcmFnZVNlc3Np
b24gPSBuZXR3b3JrUHJvY2Vzcy5zdG9yYWdlU2Vzc2lvbihwYXJhbWV0ZXJzLnNlc3Npb25JRCk7
CiAgICAgUkVMRUFTRV9BU1NFUlQoc3RvcmFnZVNlc3Npb24pOwogCi0gICAgTlNIVFRQQ29va2ll
U3RvcmFnZSogY29va2llU3RvcmFnZTsKKyAgICBSZXRhaW5QdHI8TlNIVFRQQ29va2llU3RvcmFn
ZT4gY29va2llU3RvcmFnZTsKICAgICBpZiAoQ0ZIVFRQQ29va2llU3RvcmFnZVJlZiBzdG9yYWdl
ID0gc3RvcmFnZVNlc3Npb24tPmNvb2tpZVN0b3JhZ2UoKS5nZXQoKSkgewotICAgICAgICBjb29r
aWVTdG9yYWdlID0gW1tbTlNIVFRQQ29va2llU3RvcmFnZSBhbGxvY10gX2luaXRXaXRoQ0ZIVFRQ
Q29va2llU3RvcmFnZTpzdG9yYWdlXSBhdXRvcmVsZWFzZV07Ci0gICAgICAgIGNvbmZpZ3VyYXRp
b24uSFRUUENvb2tpZVN0b3JhZ2UgPSBjb29raWVTdG9yYWdlOworICAgICAgICBjb29raWVTdG9y
YWdlID0gYWRvcHROUyhbW05TSFRUUENvb2tpZVN0b3JhZ2UgYWxsb2NdIF9pbml0V2l0aENGSFRU
UENvb2tpZVN0b3JhZ2U6c3RvcmFnZV0pOworICAgICAgICBjb25maWd1cmF0aW9uLkhUVFBDb29r
aWVTdG9yYWdlID0gY29va2llU3RvcmFnZS5nZXQoKTsKICAgICB9IGVsc2UKICAgICAgICAgY29v
a2llU3RvcmFnZSA9IHN0b3JhZ2VTZXNzaW9uLT5uc0Nvb2tpZVN0b3JhZ2UoKTsKIApAQCAtMTMx
MCw3ICsxMzEwLDcgQEAgTmV0d29ya1Nlc3Npb25Db2NvYTo6TmV0d29ya1Nlc3Npb25Db2NvYShO
ZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nlc3MsIE5ldHdvcmsKICAgICAvLyBXZSBzdGlsbCBu
ZWVkIHRvIGNoZWNrIHRoZSBzZWxlY3RvciBzaW5jZSBDRk5ldHdvcmsgdXBkYXRlcyBhbmQgV2Vi
S2l0IHVwZGF0ZXMgYXJlIHNlcGFyYXRlCiAgICAgLy8gb24gb2xkZXIgbWFjT1MuCiAgICAgaWYg
KFtjb29raWVTdG9yYWdlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX292ZXJyaWRlU2Vz
c2lvbkNvb2tpZUFjY2VwdFBvbGljeSldKQotICAgICAgICBjb29raWVTdG9yYWdlLl9vdmVycmlk
ZVNlc3Npb25Db29raWVBY2NlcHRQb2xpY3kgPSBZRVM7CisgICAgICAgIGNvb2tpZVN0b3JhZ2Uu
Z2V0KCkuX292ZXJyaWRlU2Vzc2lvbkNvb2tpZUFjY2VwdFBvbGljeSA9IFlFUzsKICNlbmRpZgog
CiAgICAgbV9zZXNzaW9uV2l0aENyZWRlbnRpYWxTdG9yYWdlLmluaXRpYWxpemUoY29uZmlndXJh
dGlvbiwgKnRoaXMsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5OjpVc2UsIE5hdmln
YXRpbmdUb0FwcEJvdW5kRG9tYWluOjpObyk7CkBAIC0xNjIwLDE2ICsxNjIwLDE2IEBAIERNRldl
YnNpdGVQb2xpY3lNb25pdG9yICpOZXR3b3JrU2Vzc2lvbkNvY29hOjpkZXZpY2VNYW5hZ2VtZW50
UG9saWN5TW9uaXRvcigpCiBzdGQ6OnVuaXF1ZV9wdHI8V2ViU29ja2V0VGFzaz4gTmV0d29ya1Nl
c3Npb25Db2NvYTo6Y3JlYXRlV2ViU29ja2V0VGFzayhOZXR3b3JrU29ja2V0Q2hhbm5lbCYgY2hh
bm5lbCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBTdHJp
bmcmIHByb3RvY29sKQogewogICAgIEFTU0VSVCghcmVxdWVzdC5oYXNIVFRQSGVhZGVyRmllbGQo
V2ViQ29yZTo6SFRUUEhlYWRlck5hbWU6OlNlY1dlYlNvY2tldFByb3RvY29sKSk7Ci0gICAgYXV0
byAqbnNSZXF1ZXN0ID0gcmVxdWVzdC5uc1VSTFJlcXVlc3QoV2ViQ29yZTo6SFRUUEJvZHlVcGRh
dGVQb2xpY3k6OkRvTm90VXBkYXRlSFRUUEJvZHkpOworICAgIGF1dG8gbnNSZXF1ZXN0ID0gcmV0
YWluUHRyKHJlcXVlc3QubnNVUkxSZXF1ZXN0KFdlYkNvcmU6OkhUVFBCb2R5VXBkYXRlUG9saWN5
OjpEb05vdFVwZGF0ZUhUVFBCb2R5KSk7CiAgICAgaWYgKCFwcm90b2NvbC5pc051bGwoKSkgewot
ICAgICAgICBOU011dGFibGVVUkxSZXF1ZXN0ICpyZXF1ZXN0V2l0aFByb3RvY29scyA9IFtbbnNS
ZXF1ZXN0IG11dGFibGVDb3B5XSBhdXRvcmVsZWFzZV07CisgICAgICAgIGF1dG8gcmVxdWVzdFdp
dGhQcm90b2NvbHMgPSBhZG9wdE5TKFtuc1JlcXVlc3QgbXV0YWJsZUNvcHldKTsKICAgICAgICAg
W3JlcXVlc3RXaXRoUHJvdG9jb2xzIGFkZFZhbHVlOiBTdHJpbmdWaWV3KHByb3RvY29sKS5jcmVh
dGVOU1N0cmluZygpLmdldCgpIGZvckhUVFBIZWFkZXJGaWVsZDpAIlNlYy1XZWJTb2NrZXQtUHJv
dG9jb2wiXTsKLSAgICAgICAgbnNSZXF1ZXN0ID0gcmVxdWVzdFdpdGhQcm90b2NvbHM7CisgICAg
ICAgIG5zUmVxdWVzdCA9IFdURk1vdmUocmVxdWVzdFdpdGhQcm90b2NvbHMpOwogICAgIH0KICAg
ICAvLyByZGFyOi8vcHJvYmxlbS82ODA1NzAzMTogZXhwbGljaXRseSBkaXNhYmxlIHNuaWZmaW5n
IGZvciBXZWJTb2NrZXQgaGFuZHNoYWtlcy4KICAgICBbbnNSZXF1ZXN0IF9zZXRQcm9wZXJ0eTpA
Tk8gZm9yS2V5OihOU1N0cmluZyAqKV9rQ0ZVUkxDb25uZWN0aW9uUHJvcGVydHlTaG91bGRTbmlm
Zl07CiAKLSAgICBSZXRhaW5QdHI8TlNVUkxTZXNzaW9uV2ViU29ja2V0VGFzaz4gdGFzayA9IFtt
X3Nlc3Npb25XaXRoQ3JlZGVudGlhbFN0b3JhZ2Uuc2Vzc2lvbiB3ZWJTb2NrZXRUYXNrV2l0aFJl
cXVlc3Q6bnNSZXF1ZXN0XTsKKyAgICBSZXRhaW5QdHI8TlNVUkxTZXNzaW9uV2ViU29ja2V0VGFz
az4gdGFzayA9IFttX3Nlc3Npb25XaXRoQ3JlZGVudGlhbFN0b3JhZ2Uuc2Vzc2lvbiB3ZWJTb2Nr
ZXRUYXNrV2l0aFJlcXVlc3Q6bnNSZXF1ZXN0LmdldCgpXTsKICAgICByZXR1cm4gbWFrZVVuaXF1
ZTxXZWJTb2NrZXRUYXNrPihjaGFubmVsLCBXVEZNb3ZlKHRhc2spKTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9jb2NvYS9XS1BheW1lbnRBdXRob3JpemF0aW9uRGVs
ZWdhdGUubW0gYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL2NvY29hL1dLUGF5bWVudEF1dGhvcml6
YXRpb25EZWxlZ2F0ZS5tbQppbmRleCAzMTZhYTU2ZWMxMjc0ZmVjYTcyMTUyOTJjZDNlMjU5ZjNk
OWIxM2VjLi5jZjM0YTQ4ZWQyZmVlMWVhNzlmMmVkMjdkYmYxMjg1YWUyY2EyMzM0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL2NvY29hL1dLUGF5bWVudEF1dGhvcml6YXRpb25E
ZWxlZ2F0ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL2NvY29hL1dLUGF5bWVudEF1
dGhvcml6YXRpb25EZWxlZ2F0ZS5tbQpAQCAtNjEsNyArNjEsNyBAQCAtICh2b2lkKWNvbXBsZXRl
TWVyY2hhbnRWYWxpZGF0aW9uOihQS1BheW1lbnRNZXJjaGFudFNlc3Npb24gKilzZXNzaW9uIGVy
cm9yOihOUwogCiAtICh2b2lkKWNvbXBsZXRlUGF5bWVudE1ldGhvZFNlbGVjdGlvbjooUEtQYXlt
ZW50UmVxdWVzdFBheW1lbnRNZXRob2RVcGRhdGUgKilwYXltZW50TWV0aG9kVXBkYXRlCiB7Ci0g
ICAgUEtQYXltZW50UmVxdWVzdFBheW1lbnRNZXRob2RVcGRhdGUgKnVwZGF0ZSA9IHBheW1lbnRN
ZXRob2RVcGRhdGUgPzogW1tQQUw6OmFsbG9jUEtQYXltZW50UmVxdWVzdFBheW1lbnRNZXRob2RV
cGRhdGVJbnN0YW5jZSgpIGluaXRXaXRoUGF5bWVudFN1bW1hcnlJdGVtczpfc3VtbWFyeUl0ZW1z
LmdldCgpXSBhdXRvcmVsZWFzZV07CisgICAgUEtQYXltZW50UmVxdWVzdFBheW1lbnRNZXRob2RV
cGRhdGUgKnVwZGF0ZSA9IHBheW1lbnRNZXRob2RVcGRhdGUgPzogYWRvcHROUyhbUEFMOjphbGxv
Y1BLUGF5bWVudFJlcXVlc3RQYXltZW50TWV0aG9kVXBkYXRlSW5zdGFuY2UoKSBpbml0V2l0aFBh
eW1lbnRTdW1tYXJ5SXRlbXM6X3N1bW1hcnlJdGVtcy5nZXQoKV0pLmF1dG9yZWxlYXNlKCk7CiAg
ICAgX3N1bW1hcnlJdGVtcyA9IGFkb3B0TlMoW3VwZGF0ZS5wYXltZW50U3VtbWFyeUl0ZW1zIGNv
cHldKTsKICAgICBzdGQ6OmV4Y2hhbmdlKF9kaWRTZWxlY3RQYXltZW50TWV0aG9kQ29tcGxldGlv
biwgbmlsKSh1cGRhdGUpOwogfQpAQCAtNzMsNyArNzMsNyBAQCAtICh2b2lkKWNvbXBsZXRlUGF5
bWVudFNlc3Npb246KFBLUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXMpc3RhdHVzIGVycm9yczoo
TlNBcgogfQogLSAodm9pZCljb21wbGV0ZVNoaXBwaW5nQ29udGFjdFNlbGVjdGlvbjooUEtQYXlt
ZW50UmVxdWVzdFNoaXBwaW5nQ29udGFjdFVwZGF0ZSAqKXNoaXBwaW5nQ29udGFjdFVwZGF0ZQog
ewotICAgIFBLUGF5bWVudFJlcXVlc3RTaGlwcGluZ0NvbnRhY3RVcGRhdGUgKnVwZGF0ZSA9IHNo
aXBwaW5nQ29udGFjdFVwZGF0ZSA/OiBbW1BBTDo6YWxsb2NQS1BheW1lbnRSZXF1ZXN0U2hpcHBp
bmdDb250YWN0VXBkYXRlSW5zdGFuY2UoKSBpbml0V2l0aEVycm9yczpAW10gcGF5bWVudFN1bW1h
cnlJdGVtczpfc3VtbWFyeUl0ZW1zLmdldCgpIHNoaXBwaW5nTWV0aG9kczpfc2hpcHBpbmdNZXRo
b2RzLmdldCgpXSBhdXRvcmVsZWFzZV07CisgICAgUEtQYXltZW50UmVxdWVzdFNoaXBwaW5nQ29u
dGFjdFVwZGF0ZSAqdXBkYXRlID0gc2hpcHBpbmdDb250YWN0VXBkYXRlID86IGFkb3B0TlMoW1BB
TDo6YWxsb2NQS1BheW1lbnRSZXF1ZXN0U2hpcHBpbmdDb250YWN0VXBkYXRlSW5zdGFuY2UoKSBp
bml0V2l0aEVycm9yczpAW10gcGF5bWVudFN1bW1hcnlJdGVtczpfc3VtbWFyeUl0ZW1zLmdldCgp
IHNoaXBwaW5nTWV0aG9kczpfc2hpcHBpbmdNZXRob2RzLmdldCgpXSkuYXV0b3JlbGVhc2UoKTsK
ICAgICBfc3VtbWFyeUl0ZW1zID0gYWRvcHROUyhbdXBkYXRlLnBheW1lbnRTdW1tYXJ5SXRlbXMg
Y29weV0pOwogICAgIF9zaGlwcGluZ01ldGhvZHMgPSBhZG9wdE5TKFt1cGRhdGUuc2hpcHBpbmdN
ZXRob2RzIGNvcHldKTsKICAgICBzdGQ6OmV4Y2hhbmdlKF9kaWRTZWxlY3RTaGlwcGluZ0NvbnRh
Y3RDb21wbGV0aW9uLCBuaWwpKHVwZGF0ZSk7CkBAIC04MSw3ICs4MSw3IEBAIC0gKHZvaWQpY29t
cGxldGVTaGlwcGluZ0NvbnRhY3RTZWxlY3Rpb246KFBLUGF5bWVudFJlcXVlc3RTaGlwcGluZ0Nv
bnRhY3RVcGRhdGUKIAogLSAodm9pZCljb21wbGV0ZVNoaXBwaW5nTWV0aG9kU2VsZWN0aW9uOihQ
S1BheW1lbnRSZXF1ZXN0U2hpcHBpbmdNZXRob2RVcGRhdGUgKilzaGlwcGluZ01ldGhvZFVwZGF0
ZQogewotICAgIFBLUGF5bWVudFJlcXVlc3RTaGlwcGluZ01ldGhvZFVwZGF0ZSAqdXBkYXRlID0g
c2hpcHBpbmdNZXRob2RVcGRhdGUgPzogW1tQQUw6OmFsbG9jUEtQYXltZW50UmVxdWVzdFNoaXBw
aW5nTWV0aG9kVXBkYXRlSW5zdGFuY2UoKSBpbml0V2l0aFBheW1lbnRTdW1tYXJ5SXRlbXM6X3N1
bW1hcnlJdGVtcy5nZXQoKV0gYXV0b3JlbGVhc2VdOworICAgIFBLUGF5bWVudFJlcXVlc3RTaGlw
cGluZ01ldGhvZFVwZGF0ZSAqdXBkYXRlID0gc2hpcHBpbmdNZXRob2RVcGRhdGUgPzogYWRvcHRO
UyhbUEFMOjphbGxvY1BLUGF5bWVudFJlcXVlc3RTaGlwcGluZ01ldGhvZFVwZGF0ZUluc3RhbmNl
KCkgaW5pdFdpdGhQYXltZW50U3VtbWFyeUl0ZW1zOl9zdW1tYXJ5SXRlbXMuZ2V0KCldKS5hdXRv
cmVsZWFzZSgpOwogICAgIF9zdW1tYXJ5SXRlbXMgPSBhZG9wdE5TKFt1cGRhdGUucGF5bWVudFN1
bW1hcnlJdGVtcyBjb3B5XSk7CiAgICAgc3RkOjpleGNoYW5nZShfZGlkU2VsZWN0U2hpcHBpbmdN
ZXRob2RDb21wbGV0aW9uLCBuaWwpKHVwZGF0ZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tSZW1vdGVPYmplY3RDb2Rlci5tbSBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdENvZGVyLm1tCmluZGV4IDhiZDI0NDg1
ZTA2MmY3M2IxYjY4NjJjMDU1MzA3NGZlZDkxMDUzMzQuLjc0MDIzOTIwMzg1ZmE2MWZhMjEzNTc3
OWZkMjU3MmIzMmQyMWNiYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9D
b2NvYS9XS1JlbW90ZU9iamVjdENvZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQ
SS9Db2NvYS9XS1JlbW90ZU9iamVjdENvZGVyLm1tCkBAIC0zMTMsOCArMzEzLDcgQEAgc3RhdGlj
IHZvaWQgZW5jb2RlT2JqZWN0KFdLUmVtb3RlT2JqZWN0RW5jb2RlciAqZW5jb2RlciwgaWQgb2Jq
ZWN0KQogICAgICAgICBSRUxFQVNFX0xPR19GQVVMVChJUEMsICJXS1JlbW90ZU9iamVjdENvZGU6
OmVuY29kZU9iamVjdDogT2JqZWN0IG9mIHR5cGUgJyV7cHJpdmF0ZX1zJyBjb250YWlucyBhIGN5
Y2xlIiwgY2xhc3NfZ2V0TmFtZShvYmplY3RfZ2V0Q2xhc3Mob2JqZWN0KSkpOwogICAgICAgICBA
dHJ5IHsKICAgICAgICAgICAgIC8vIFRyeSB0byBlbmNvZGUgYSBuZXdseSBpbml0aWFsaXplZCBv
YmplY3QgaW5zdGVhZC4KLSAgICAgICAgICAgIGlkIG5ld09iamVjdCA9IFtbW1tvYmplY3QgY2xh
c3NdIGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07Ci0gICAgICAgICAgICBvYmplY3QgPSBuZXdP
YmplY3Q7CisgICAgICAgICAgICBvYmplY3QgPSBhZG9wdE5TKFtbW29iamVjdCBjbGFzc10gYWxs
b2NdIGluaXRdKS5hdXRvcmVsZWFzZSgpOwogICAgICAgICB9IEBjYXRjaCAoTlNFeGNlcHRpb24g
KmUpIHsKICAgICAgICAgICAgIFtOU0V4Y2VwdGlvbiByYWlzZTpOU0ludmFsaWRBcmd1bWVudEV4
Y2VwdGlvbiBmb3JtYXQ6QCJPYmplY3Qgb2YgdHlwZSAnJXMnIGNvbnRhaW5zIGEgY3ljbGUiLCBj
bGFzc19nZXROYW1lKG9iamVjdF9nZXRDbGFzcyhvYmplY3QpKV07CiAgICAgICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9fV0tSZW1vdGVPYmplY3RJbnRl
cmZhY2UubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvX1dLUmVtb3RlT2JqZWN0
SW50ZXJmYWNlLm1tCmluZGV4IDIzZjE2NzYzNWUyY2U1NzE2M2M0NjZmNmY0NTA2NmQ4ZmZhYmQ1
MjEuLmU1YWQ0YjMwOGZkZDY1MTIyMTJiNWYxZmMyYzIzMTQyZDZmNDBhOGYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9fV0tSZW1vdGVPYmplY3RJbnRlcmZhY2Uu
bW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL19XS1JlbW90ZU9iamVjdElu
dGVyZmFjZS5tbQpAQCAtMTkzLDcgKzE5Myw3IEBAIC0gKGlkKWluaXRXaXRoUHJvdG9jb2w6KFBy
b3RvY29sICopcHJvdG9jb2wgaWRlbnRpZmllcjooTlNTdHJpbmcgKilpZGVudGlmaWVyCiAKICsg
KGluc3RhbmNldHlwZSlyZW1vdGVPYmplY3RJbnRlcmZhY2VXaXRoUHJvdG9jb2w6KFByb3RvY29s
ICopcHJvdG9jb2wKIHsKLSAgICByZXR1cm4gW1tbc2VsZiBhbGxvY10gaW5pdFdpdGhQcm90b2Nv
bDpwcm90b2NvbCBpZGVudGlmaWVyOk5TU3RyaW5nRnJvbVByb3RvY29sKHByb3RvY29sKV0gYXV0
b3JlbGVhc2VdOworICAgIHJldHVybiBhZG9wdE5TKFtbc2VsZiBhbGxvY10gaW5pdFdpdGhQcm90
b2NvbDpwcm90b2NvbCBpZGVudGlmaWVyOk5TU3RyaW5nRnJvbVByb3RvY29sKHByb3RvY29sKV0p
LmF1dG9yZWxlYXNlKCk7CiB9CiAKIC0gKE5TU3RyaW5nICopaWRlbnRpZmllcgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV0tPYmplY3QuaCBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0NvY29hL1dLT2JqZWN0LmgKaW5kZXggMGUxYjFjNjA0NTUyYjU5MGUzMGQ5OTVjNGFm
ZTgzNTk3NDBlYmE3My4uYjkxNDQ2OWVlOWUwODUwMjU1NTdhMDYwNWQ3NjJlN2Q5M2Y2NzEyZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV0tPYmplY3QuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XS09iamVjdC5oCkBAIC03Nyw3ICs3Nyw3IEBAIHRl
bXBsYXRlPHR5cGVuYW1lIE9iamVjdENsYXNzPiBpbmxpbmUgdHlwZW5hbWUgV3JhcHBlclRyYWl0
czxPYmplY3RDbGFzcz46OldyYXBwCiAKIHRlbXBsYXRlPHR5cGVuYW1lIE9iamVjdENsYXNzPiBp
bmxpbmUgdHlwZW5hbWUgV3JhcHBlclRyYWl0czxPYmplY3RDbGFzcz46OldyYXBwZXJDbGFzcyAq
d3JhcHBlcihSZWY8T2JqZWN0Q2xhc3M+JiYgb2JqZWN0KQogewotICAgIHJldHVybiBbd3JhcHBl
cihvYmplY3QubGVha1JlZigpKSBhdXRvcmVsZWFzZV07CisgICAgcmV0dXJuIGFkb3B0TlMod3Jh
cHBlcihvYmplY3QubGVha1JlZigpKSkuYXV0b3JlbGVhc2UoKTsKIH0KIAogdGVtcGxhdGU8dHlw
ZW5hbWUgT2JqZWN0Q2xhc3M+IGlubGluZSB0eXBlbmFtZSBXcmFwcGVyVHJhaXRzPE9iamVjdENs
YXNzPjo6V3JhcHBlckNsYXNzICp3cmFwcGVyKFJlZlB0cjxPYmplY3RDbGFzcz4mJiBvYmplY3Qp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvTlNBdHRyaWJ1
dGVkU3RyaW5nLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL05TQXR0cmli
dXRlZFN0cmluZy5tbQppbmRleCBjYzk0MTQwZmU5YjY2NmFlNzM3ZjViNDNmNjhiMTMzYjA1OTc5
Yjk3Li44NmQ2NWJkMWM5NWFhY2M1MTUxNmRhZDJlNjk5YzZjNzVlY2M3NzZjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvTlNBdHRyaWJ1dGVkU3RyaW5nLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9OU0F0dHJpYnV0ZWRTdHJp
bmcubW0KQEAgLTEzMyw3ICsxMzMsNyBAQCArIChXS1dlYlZpZXdDb25maWd1cmF0aW9uICopY29u
ZmlndXJhdGlvbgogewogICAgIGlmICghY29uZmlndXJhdGlvbikgewogICAgICAgICBjb25maWd1
cmF0aW9uID0gW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XTsKLSAgICAgICAg
Y29uZmlndXJhdGlvbi5wcm9jZXNzUG9vbCA9IFtbW1dLUHJvY2Vzc1Bvb2wgYWxsb2NdIGluaXRd
IGF1dG9yZWxlYXNlXTsKKyAgICAgICAgY29uZmlndXJhdGlvbi5wcm9jZXNzUG9vbCA9IGFkb3B0
TlMoW1tXS1Byb2Nlc3NQb29sIGFsbG9jXSBpbml0XSkuYXV0b3JlbGVhc2UoKTsKICAgICAgICAg
Y29uZmlndXJhdGlvbi53ZWJzaXRlRGF0YVN0b3JlID0gW1dLV2Vic2l0ZURhdGFTdG9yZSBub25Q
ZXJzaXN0ZW50RGF0YVN0b3JlXTsKICAgICAgICAgY29uZmlndXJhdGlvbi5tZWRpYVR5cGVzUmVx
dWlyaW5nVXNlckFjdGlvbkZvclBsYXliYWNrID0gV0tBdWRpb3Zpc3VhbE1lZGlhVHlwZUFsbDsK
ICAgICAgICAgY29uZmlndXJhdGlvbi5fYWxsb3dzSmF2YVNjcmlwdE1hcmt1cCA9IE5POwpAQCAt
MjcwLDExICsyNzAsMTEgQEAgKyAodm9pZClfbG9hZEZyb21IVE1MV2l0aE9wdGlvbnM6KE5TRGlj
dGlvbmFyeTxOU0F0dHJpYnV0ZWRTdHJpbmdEb2N1bWVudFJlYWRpbmcKIAogICAgICAgICAgICAg
Ly8gTWFrZSB0aGUgc3RyaW5nIGJlIGFuIGluc3RhbmNlIG9mIHRoZSByZWNlaXZlciBjbGFzcy4K
ICAgICAgICAgICAgIGlmIChhdHRyaWJ1dGVkU3RyaW5nICYmIHNlbGYgIT0gYXR0cmlidXRlZFN0
cmluZy5jbGFzcykKLSAgICAgICAgICAgICAgICBhdHRyaWJ1dGVkU3RyaW5nID0gW1tbc2VsZiBh
bGxvY10gaW5pdFdpdGhBdHRyaWJ1dGVkU3RyaW5nOmF0dHJpYnV0ZWRTdHJpbmddIGF1dG9yZWxl
YXNlXTsKKyAgICAgICAgICAgICAgICBhdHRyaWJ1dGVkU3RyaW5nID0gYWRvcHROUyhbW3NlbGYg
YWxsb2NdIGluaXRXaXRoQXR0cmlidXRlZFN0cmluZzphdHRyaWJ1dGVkU3RyaW5nXSkuYXV0b3Jl
bGVhc2UoKTsKIAogICAgICAgICAgICAgLy8gTWFrZSB0aGUgZG9jdW1lbnQgYXR0cmlidXRlcyBp
bW11dGFibGUuCiAgICAgICAgICAgICBpZiAoW2F0dHJpYnV0ZXMgaXNLaW5kT2ZDbGFzczpOU011
dGFibGVEaWN0aW9uYXJ5LmNsYXNzXSkKLSAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzID0gW1tb
TlNEaWN0aW9uYXJ5IGFsbG9jXSBpbml0V2l0aERpY3Rpb25hcnk6YXR0cmlidXRlc10gYXV0b3Jl
bGVhc2VdOworICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXMgPSBhZG9wdE5TKFtbTlNEaWN0aW9u
YXJ5IGFsbG9jXSBpbml0V2l0aERpY3Rpb25hcnk6YXR0cmlidXRlc10pLmF1dG9yZWxlYXNlKCk7
CiAKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGF0dHJpYnV0ZWRTdHJpbmcsIGF0dHJp
YnV0ZXMsIGVycm9yKTsKICAgICAgICAgfTsKQEAgLTMxMCw3ICszMTAsNyBAQCArICh2b2lkKV9s
b2FkRnJvbUhUTUxXaXRoT3B0aW9uczooTlNEaWN0aW9uYXJ5PE5TQXR0cmlidXRlZFN0cmluZ0Rv
Y3VtZW50UmVhZGluZwogICAgICAgICAgICAgW3dlYlZpZXcgX2dldENvbnRlbnRzQXNBdHRyaWJ1
dGVkU3RyaW5nV2l0aENvbXBsZXRpb25IYW5kbGVyOl4oTlNBdHRyaWJ1dGVkU3RyaW5nICphdHRy
aWJ1dGVkU3RyaW5nLCBOU0RpY3Rpb25hcnk8TlNBdHRyaWJ1dGVkU3RyaW5nRG9jdW1lbnRBdHRy
aWJ1dGVLZXksIGlkPiAqZG9jdW1lbnRBdHRyaWJ1dGVzLCBOU0Vycm9yICplcnJvcikgewogICAg
ICAgICAgICAgICAgIGlmIChlcnJvcikKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNhbmNl
bChXS0Vycm9yVW5rbm93biwgZXJyb3IpOwotICAgICAgICAgICAgICAgIGZpbmlzaChbW2F0dHJp
YnV0ZWRTdHJpbmcgcmV0YWluXSBhdXRvcmVsZWFzZV0sIFtbZG9jdW1lbnRBdHRyaWJ1dGVzIHJl
dGFpbl0gYXV0b3JlbGVhc2VdLCBuaWwpOworICAgICAgICAgICAgICAgIGZpbmlzaChyZXRhaW5Q
dHIoYXR0cmlidXRlZFN0cmluZykuYXV0b3JlbGVhc2UoKSwgcmV0YWluUHRyKGRvY3VtZW50QXR0
cmlidXRlcykuYXV0b3JlbGVhc2UoKSwgbmlsKTsKICAgICAgICAgICAgIH1dOwogICAgICAgICB9
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tCcm93
c2luZ0NvbnRleHRDb250cm9sbGVyLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlci5tbQppbmRleCA5MzY0NWJlOWJmNzRjMDQ2
N2Q0MTM1ZThjYzIwNWU2NTBiOWEzMDIxLi5lYWQ3YTdkZDZjZmRiZGUyMTNkYzE5MzI2NzJhMzA3
NmNkZDFjMjI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIubW0KQEAgLTQ1OSw3ICs0
NTksNyBAQCBzdGF0aWMgV0tQb2xpY3lEZWNpc2lvbkhhbmRsZXIgbWFrZVBvbGljeURlY2lzaW9u
QmxvY2soV0tGcmFtZVBvbGljeUxpc3RlbmVyUmVmCiB7CiAgICAgV0tSZXRhaW4obGlzdGVuZXIp
OyAvLyBSZWxlYXNlZCBpbiB0aGUgZGVjaXNpb24gaGFuZGxlciBiZWxvdy4KIAotICAgIHJldHVy
biBbW14oV0tQb2xpY3lEZWNpc2lvbiBkZWNpc2lvbikgeworICAgIHJldHVybiBhZG9wdE5TKFte
KFdLUG9saWN5RGVjaXNpb24gZGVjaXNpb24pIHsKICAgICAgICAgc3dpdGNoIChkZWNpc2lvbikg
ewogICAgICAgICBjYXNlIFdLUG9saWN5RGVjaXNpb25DYW5jZWw6CiAgICAgICAgICAgICBXS0Zy
YW1lUG9saWN5TGlzdGVuZXJJZ25vcmUobGlzdGVuZXIpOyAgICAgICAgICAgICAgICAgICAgCkBA
IC00NzUsNyArNDc1LDcgQEAgc3RhdGljIFdLUG9saWN5RGVjaXNpb25IYW5kbGVyIG1ha2VQb2xp
Y3lEZWNpc2lvbkJsb2NrKFdLRnJhbWVQb2xpY3lMaXN0ZW5lclJlZgogICAgICAgICB9OwogCiAg
ICAgICAgIFdLUmVsZWFzZShsaXN0ZW5lcik7IC8vIFJldGFpbmVkIGluIHRoZSBjb250ZXh0IGFi
b3ZlLgotICAgIH0gY29weV0gYXV0b3JlbGVhc2VdOworICAgIH0gY29weV0pLmF1dG9yZWxlYXNl
KCk7CiB9CiAKIHN0YXRpYyB2b2lkIHNldFVwUGFnZVBvbGljeUNsaWVudChXS0Jyb3dzaW5nQ29u
dGV4dENvbnRyb2xsZXIgKmJyb3dzaW5nQ29udGV4dCwgV2ViS2l0OjpXZWJQYWdlUHJveHkmIHBh
Z2UpCkBAIC01MDQsNyArNTA0LDcgQEAgc3RhdGljIHZvaWQgc2V0VXBQYWdlUG9saWN5Q2xpZW50
KFdLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciAqYnJvd3NpbmdDb250ZXh0LAogICAgICAgICAg
ICAgfTsKIAogICAgICAgICAgICAgaWYgKG9yaWdpbmF0aW5nRnJhbWUpIHsKLSAgICAgICAgICAg
ICAgICBhY3Rpb25EaWN0aW9uYXJ5ID0gW1thY3Rpb25EaWN0aW9uYXJ5IG11dGFibGVDb3B5XSBh
dXRvcmVsZWFzZV07CisgICAgICAgICAgICAgICAgYWN0aW9uRGljdGlvbmFyeSA9IGFkb3B0TlMo
W2FjdGlvbkRpY3Rpb25hcnkgbXV0YWJsZUNvcHldKS5hdXRvcmVsZWFzZSgpOwogICAgICAgICAg
ICAgICAgIFsoTlNNdXRhYmxlRGljdGlvbmFyeSAqKWFjdGlvbkRpY3Rpb25hcnkgc2V0T2JqZWN0
OltOU1VSTCBfd2ViX1VSTFdpdGhXVEZTdHJpbmc6V2ViS2l0Ojp0b0ltcGwob3JpZ2luYXRpbmdG
cmFtZSktPnVybCgpLnN0cmluZygpXSBmb3JLZXk6V0tBY3Rpb25PcmlnaW5hdGluZ0ZyYW1lVVJM
S2V5XTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIApAQCAtNzM0LDcgKzczNCw3IEBAIC0g
KE5TVUludGVnZXIpcGFnZUNvdW50CiAKIC0gKFdLQnJvd3NpbmdDb250ZXh0SGFuZGxlICopaGFu
ZGxlCiB7Ci0gICAgcmV0dXJuIFtbW1dLQnJvd3NpbmdDb250ZXh0SGFuZGxlIGFsbG9jXSBfaW5p
dFdpdGhQYWdlUHJveHk6Kl9wYWdlXSBhdXRvcmVsZWFzZV07CisgICAgcmV0dXJuIGFkb3B0TlMo
W1tXS0Jyb3dzaW5nQ29udGV4dEhhbmRsZSBhbGxvY10gX2luaXRXaXRoUGFnZVByb3h5OipfcGFn
ZV0pLmF1dG9yZWxlYXNlKCk7CiB9CiAKIC0gKF9XS1JlbW90ZU9iamVjdFJlZ2lzdHJ5ICopX3Jl
bW90ZU9iamVjdFJlZ2lzdHJ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tDb250ZW50V29ybGQubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tDb250ZW50V29ybGQubW0KaW5kZXggMzgxNmExZTZmNThjNTY0NDY2YTBkOTA4YWRi
MzU0ZDg0N2VkNDk2NS4uMGI0NWRlNTU4ODAwODdhYWRhNWNlN2VkNTg2N2E0MGIyZThjNzY2MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLQ29udGVudFdv
cmxkLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0NvbnRlbnRX
b3JsZC5tbQpAQCAtNzQsNyArNzQsNyBAQCBAaW1wbGVtZW50YXRpb24gV0tDb250ZW50V29ybGQg
KFdLUHJpdmF0ZSkKIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCiAtIChfV0tV
c2VyQ29udGVudFdvcmxkICopX3VzZXJDb250ZW50V29ybGQKIHsKLSAgICByZXR1cm4gW1tbX1dL
VXNlckNvbnRlbnRXb3JsZCBhbGxvY10gX2luaXRXaXRoQ29udGVudFdvcmxkOnNlbGZdIGF1dG9y
ZWxlYXNlXTsKKyAgICByZXR1cm4gYWRvcHROUyhbW19XS1VzZXJDb250ZW50V29ybGQgYWxsb2Nd
IF9pbml0V2l0aENvbnRlbnRXb3JsZDpzZWxmXSkuYXV0b3JlbGVhc2UoKTsKIH0KIEFMTE9XX0RF
UFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tGcmFtZUluZm8ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tGcmFtZUluZm8ubW0KaW5kZXggMWM2MzJiMjQzYTdkZWNjOTE3M2MwNmU5
ZmYwNzZkMDNhOWYzZDJiZi4uZTM3ZTNmMmE5MDFiNjIzMmQ3ODY4MTFkNzIyODA0YWFiM2E5YTY4
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLRnJhbWVJ
bmZvLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0ZyYW1lSW5m
by5tbQpAQCAtNTgsMTMgKzU4LDEzIEBAIC0gKFdLU2VjdXJpdHlPcmlnaW4gKilzZWN1cml0eU9y
aWdpbgogewogICAgIGF1dG8mIGRhdGEgPSBfZnJhbWVJbmZvLT5zZWN1cml0eU9yaWdpbigpOwog
ICAgIGF1dG8gYXBpT3JpZ2luID0gQVBJOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKGRhdGEucHJv
dG9jb2wsIGRhdGEuaG9zdCwgZGF0YS5wb3J0KTsKLSAgICByZXR1cm4gW1t3cmFwcGVyKGFwaU9y
aWdpbi5nZXQoKSkgcmV0YWluXSBhdXRvcmVsZWFzZV07CisgICAgcmV0dXJuIHJldGFpblB0cih3
cmFwcGVyKGFwaU9yaWdpbi5nZXQoKSkpLmF1dG9yZWxlYXNlKCk7CiB9CiAKIC0gKFdLV2ViVmll
dyAqKXdlYlZpZXcKIHsKICAgICBpZiAoV2ViS2l0OjpXZWJQYWdlUHJveHkqIHBhZ2UgPSBfZnJh
bWVJbmZvLT5wYWdlKCkpCi0gICAgICAgIHJldHVybiBbW2Zyb21XZWJQYWdlUHJveHkoKnBhZ2Up
IHJldGFpbl0gYXV0b3JlbGVhc2VdOworICAgICAgICByZXR1cm4gcmV0YWluUHRyKGZyb21XZWJQ
YWdlUHJveHkoKnBhZ2UpKS5hdXRvcmVsZWFzZSgpOwogICAgIHJldHVybiBuaWw7CiB9CiAKQEAg
LTg2LDEyICs4NiwxMiBAQCBAaW1wbGVtZW50YXRpb24gV0tGcmFtZUluZm8gKFdLUHJpdmF0ZSkK
IAogLSAoX1dLRnJhbWVIYW5kbGUgKilfaGFuZGxlCiB7Ci0gICAgcmV0dXJuIFtbd3JhcHBlcihf
ZnJhbWVJbmZvLT5oYW5kbGUoKSkgcmV0YWluXSBhdXRvcmVsZWFzZV07CisgICAgcmV0dXJuIHJl
dGFpblB0cih3cmFwcGVyKF9mcmFtZUluZm8tPmhhbmRsZSgpKSkuYXV0b3JlbGVhc2UoKTsKIH0K
IAogLSAoX1dLRnJhbWVIYW5kbGUgKilfcGFyZW50RnJhbWVIYW5kbGUKIHsKLSAgICByZXR1cm4g
W1t3cmFwcGVyKF9mcmFtZUluZm8tPnBhcmVudEZyYW1lSGFuZGxlKCkpIHJldGFpbl0gYXV0b3Jl
bGVhc2VdOworICAgIHJldHVybiByZXRhaW5QdHIod3JhcHBlcihfZnJhbWVJbmZvLT5wYXJlbnRG
cmFtZUhhbmRsZSgpKSkuYXV0b3JlbGVhc2UoKTsKIH0KIAogQGVuZApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlclNjcmlwdC5tbSBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJTY3JpcHQubW0KaW5kZXggYjc2Mjg4YTMx
MTY0YWMyMGZiYThiMDc4MjEyMGJjZDYwYWNkNWM3Ni4uODkzODAwZDU0NzczMDdkZThkMGVkYmZh
NTRhN2Y0NWE4ZWFiMjc4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLVXNlclNjcmlwdC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tVc2VyU2NyaXB0Lm1tCkBAIC04OCw3ICs4OCw3IEBAIEBpbXBsZW1lbnRhdGlvbiBX
S1VzZXJTY3JpcHQgKFdLUHJpdmF0ZSkKIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JF
R0lOCiAtIChfV0tVc2VyQ29udGVudFdvcmxkICopX3VzZXJDb250ZW50V29ybGQKIHsKLSAgICBy
ZXR1cm4gW1tbX1dLVXNlckNvbnRlbnRXb3JsZCBhbGxvY10gX2luaXRXaXRoQ29udGVudFdvcmxk
OndyYXBwZXIoX3VzZXJTY3JpcHQtPmNvbnRlbnRXb3JsZCgpKV0gYXV0b3JlbGVhc2VdOworICAg
IHJldHVybiBhZG9wdE5TKFtbX1dLVXNlckNvbnRlbnRXb3JsZCBhbGxvY10gX2luaXRXaXRoQ29u
dGVudFdvcmxkOndyYXBwZXIoX3VzZXJTY3JpcHQtPmNvbnRlbnRXb3JsZCgpKV0pLmF1dG9yZWxl
YXNlKCk7CiB9CiBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbSBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KaW5kZXggNDk0NjE2ZTky
NjA0ZmRjNjkzZDQ1YTFiOWZmYmViOWExYWRmYmUzNC4uMzA2Njc5YjUxZDM3MTJiODdlMjdhZjA1
ZTMwYzU0OWYwZDUwMjdjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJWaWV3Lm1tCkBAIC02NTUsNyArNjU1LDcgQEAgLSAoaWQpdmFsdWVGb3JVbmRlZmlu
ZWRLZXk6KE5TU3RyaW5nICopa2V5CiAKIC0gKFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gKiljb25m
aWd1cmF0aW9uCiB7Ci0gICAgcmV0dXJuIFtbX2NvbmZpZ3VyYXRpb24gY29weV0gYXV0b3JlbGVh
c2VdOworICAgIHJldHVybiBhZG9wdE5TKFtfY29uZmlndXJhdGlvbiBjb3B5XSkuYXV0b3JlbGVh
c2UoKTsKIH0KIAogLSAoV0tCYWNrRm9yd2FyZExpc3QgKiliYWNrRm9yd2FyZExpc3QKQEAgLTEy
MTYsMTIgKzEyMTYsMTIgQEAgaW5saW5lIE9wdGlvblNldDxXZWJLaXQ6OkZpbmRPcHRpb25zPiB0
b0ZpbmRPcHRpb25zKFdLRmluZENvbmZpZ3VyYXRpb24gKmNvbmZpZ3UKIC0gKHZvaWQpZmluZFN0
cmluZzooTlNTdHJpbmcgKilzdHJpbmcgd2l0aENvbmZpZ3VyYXRpb246KFdLRmluZENvbmZpZ3Vy
YXRpb24gKiljb25maWd1cmF0aW9uIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShXS0ZpbmRS
ZXN1bHQgKnJlc3VsdCkpY29tcGxldGlvbkhhbmRsZXIKIHsKICAgICBpZiAoIXN0cmluZy5sZW5n
dGgpIHsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoW1tbV0tGaW5kUmVzdWx0IGFsbG9jXSBf
aW5pdFdpdGhNYXRjaEZvdW5kOk5PXSBhdXRvcmVsZWFzZV0pOworICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihhZG9wdE5TKFtbV0tGaW5kUmVzdWx0IGFsbG9jXSBfaW5pdFdpdGhNYXRjaEZvdW5k
Ok5PXSkuYXV0b3JlbGVhc2UoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBfcGFn
ZS0+ZmluZFN0cmluZyhzdHJpbmcsIHRvRmluZE9wdGlvbnMoY29uZmlndXJhdGlvbiksIDEsIFto
YW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0oYm9vbCBmb3VuZCkgewot
ICAgICAgICBoYW5kbGVyKFtbW1dLRmluZFJlc3VsdCBhbGxvY10gX2luaXRXaXRoTWF0Y2hGb3Vu
ZDpmb3VuZF0gYXV0b3JlbGVhc2VdKTsKKyAgICAgICAgaGFuZGxlcihhZG9wdE5TKFtbV0tGaW5k
UmVzdWx0IGFsbG9jXSBfaW5pdFdpdGhNYXRjaEZvdW5kOmZvdW5kXSkuYXV0b3JlbGVhc2UoKSk7
CiAgICAgfSk7CiB9CiAKQEAgLTE3MDksOCArMTcwOSw4IEBAIC0gKEJPT0wpX25lZ290aWF0ZWRM
ZWdhY3lUTFMKIC0gKHZvaWQpX2ZyYW1lczoodm9pZCAoXikoX1dLRnJhbWVUcmVlTm9kZSAqKSlj
b21wbGV0aW9uSGFuZGxlcgogewogICAgIF9wYWdlLT5nZXRBbGxGcmFtZXMoW2NvbXBsZXRpb25I
YW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKSwgcGFnZSA9IG1ha2VSZWYo
Kl9wYWdlLmdldCgpKV0gKFdlYktpdDo6RnJhbWVUcmVlTm9kZURhdGEmJiBkYXRhKSB7Ci0gICAg
ICAgIF9XS0ZyYW1lVHJlZU5vZGUgKm5vZGUgPSBbW3dyYXBwZXIoQVBJOjpGcmFtZVRyZWVOb2Rl
OjpjcmVhdGUoV1RGTW92ZShkYXRhKSwgcGFnZS5nZXQoKSkpIHJldGFpbl0gYXV0b3JlbGVhc2Vd
OwotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihub2RlKTsKKyAgICAgICAgYXV0byBub2RlID0g
cmV0YWluUHRyKHdyYXBwZXIoQVBJOjpGcmFtZVRyZWVOb2RlOjpjcmVhdGUoV1RGTW92ZShkYXRh
KSwgcGFnZS5nZXQoKSkpKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobm9kZS5hdXRvcmVs
ZWFzZSgpKTsKICAgICB9KTsKIH0KIApAQCAtMTk1NCw3ICsxOTU0LDcgQEAgLSAoX1dLUmVtb3Rl
T2JqZWN0UmVnaXN0cnkgKilfcmVtb3RlT2JqZWN0UmVnaXN0cnkKIAogLSAoV0tCcm93c2luZ0Nv
bnRleHRIYW5kbGUgKilfaGFuZGxlCiB7Ci0gICAgcmV0dXJuIFtbW1dLQnJvd3NpbmdDb250ZXh0
SGFuZGxlIGFsbG9jXSBfaW5pdFdpdGhQYWdlUHJveHk6Kl9wYWdlXSBhdXRvcmVsZWFzZV07Cisg
ICAgcmV0dXJuIGFkb3B0TlMoW1tXS0Jyb3dzaW5nQ29udGV4dEhhbmRsZSBhbGxvY10gX2luaXRX
aXRoUGFnZVByb3h5OipfcGFnZV0pLmF1dG9yZWxlYXNlKCk7CiB9CiAKIC0gKF9XS1JlbmRlcmlu
Z1Byb2dyZXNzRXZlbnRzKV9vYnNlcnZlZFJlbmRlcmluZ1Byb2dyZXNzRXZlbnRzCkBAIC0yMjMw
LDEzICsyMjMwLDEzIEBAIC0gKHZvaWQpX2tpbGxXZWJDb250ZW50UHJvY2Vzc0FuZFJlc2V0U3Rh
dGUKIAogLSAodm9pZClfdGFrZVBERlNuYXBzaG90V2l0aENvbmZpZ3VyYXRpb246KFdLU25hcHNo
b3RDb25maWd1cmF0aW9uICopc25hcHNob3RDb25maWd1cmF0aW9uIGNvbXBsZXRpb25IYW5kbGVy
Oih2b2lkICheKShOU0RhdGEgKiwgTlNFcnJvciAqKSljb21wbGV0aW9uSGFuZGxlcgogewotICAg
IFdLUERGQ29uZmlndXJhdGlvbiAqcGRmQ29uZmlndXJhdGlvbiA9IG5pbDsKKyAgICBSZXRhaW5Q
dHI8V0tQREZDb25maWd1cmF0aW9uPiBwZGZDb25maWd1cmF0aW9uOwogICAgIGlmIChzbmFwc2hv
dENvbmZpZ3VyYXRpb24pIHsKLSAgICAgICAgcGRmQ29uZmlndXJhdGlvbiA9IFtbW1dLUERGQ29u
ZmlndXJhdGlvbiBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOwotICAgICAgICBwZGZDb25maWd1
cmF0aW9uLnJlY3QgPSBzbmFwc2hvdENvbmZpZ3VyYXRpb24ucmVjdDsKKyAgICAgICAgcGRmQ29u
ZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1BERkNvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsK
KyAgICAgICAgW3BkZkNvbmZpZ3VyYXRpb24gc2V0UmVjdDpzbmFwc2hvdENvbmZpZ3VyYXRpb24u
cmVjdF07CiAgICAgfQogCi0gICAgW3NlbGYgY3JlYXRlUERGV2l0aENvbmZpZ3VyYXRpb246cGRm
Q29uZmlndXJhdGlvbiBjb21wbGV0aW9uSGFuZGxlcjpjb21wbGV0aW9uSGFuZGxlcl07CisgICAg
W3NlbGYgY3JlYXRlUERGV2l0aENvbmZpZ3VyYXRpb246cGRmQ29uZmlndXJhdGlvbi5hdXRvcmVs
ZWFzZSgpIGNvbXBsZXRpb25IYW5kbGVyOmNvbXBsZXRpb25IYW5kbGVyXTsKIH0KIAogLSAoTlNE
YXRhICopX3Nlc3Npb25TdGF0ZURhdGEKQEAgLTIyNDcsNyArMjI0Nyw3IEBAIC0gKE5TRGF0YSAq
KV9zZXNzaW9uU3RhdGVEYXRhCiAKIC0gKF9XS1Nlc3Npb25TdGF0ZSAqKV9zZXNzaW9uU3RhdGUK
IHsKLSAgICByZXR1cm4gW1tbX1dLU2Vzc2lvblN0YXRlIGFsbG9jXSBfaW5pdFdpdGhTZXNzaW9u
U3RhdGU6X3BhZ2UtPnNlc3Npb25TdGF0ZSgpXSBhdXRvcmVsZWFzZV07CisgICAgcmV0dXJuIGFk
b3B0TlMoW1tfV0tTZXNzaW9uU3RhdGUgYWxsb2NdIF9pbml0V2l0aFNlc3Npb25TdGF0ZTpfcGFn
ZS0+c2Vzc2lvblN0YXRlKCldKS5hdXRvcmVsZWFzZSgpOwogfQogCiAtIChfV0tTZXNzaW9uU3Rh
dGUgKilfc2Vzc2lvblN0YXRlV2l0aEZpbHRlcjooQk9PTCAoXikoV0tCYWNrRm9yd2FyZExpc3RJ
dGVtICppdGVtKSlmaWx0ZXIKQEAgLTIyNTksNyArMjI1OSw3IEBAIC0gKF9XS1Nlc3Npb25TdGF0
ZSAqKV9zZXNzaW9uU3RhdGVXaXRoRmlsdGVyOihCT09MICheKShXS0JhY2tGb3J3YXJkTGlzdEl0
ZW0gKml0CiAgICAgICAgIHJldHVybiAoYm9vbClmaWx0ZXIod3JhcHBlcihpdGVtKSk7CiAgICAg
fSk7CiAKLSAgICByZXR1cm4gW1tbX1dLU2Vzc2lvblN0YXRlIGFsbG9jXSBfaW5pdFdpdGhTZXNz
aW9uU3RhdGU6c2Vzc2lvblN0YXRlXSBhdXRvcmVsZWFzZV07CisgICAgcmV0dXJuIGFkb3B0TlMo
W1tfV0tTZXNzaW9uU3RhdGUgYWxsb2NdIF9pbml0V2l0aFNlc3Npb25TdGF0ZTpzZXNzaW9uU3Rh
dGVdKS5hdXRvcmVsZWFzZSgpOwogfQogCiAtICh2b2lkKV9yZXN0b3JlRnJvbVNlc3Npb25TdGF0
ZURhdGE6KE5TRGF0YSAqKXNlc3Npb25TdGF0ZURhdGEKQEAgLTI1NzcsNyArMjU3Nyw3IEBAIC0g
KHZvaWQpX2dldENvbnRlbnRzQXNBdHRyaWJ1dGVkU3RyaW5nV2l0aENvbXBsZXRpb25IYW5kbGVy
Oih2b2lkICheKShOU0F0dHJpYnV0CiB7CiAgICAgX3BhZ2UtPmdldENvbnRlbnRzQXNBdHRyaWJ1
dGVkU3RyaW5nKFtoYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0oYXV0
byYgYXR0cmlidXRlZFN0cmluZykgewogICAgICAgICBpZiAoYXR0cmlidXRlZFN0cmluZy5zdHJp
bmcpCi0gICAgICAgICAgICBoYW5kbGVyKFtbYXR0cmlidXRlZFN0cmluZy5zdHJpbmcuZ2V0KCkg
cmV0YWluXSBhdXRvcmVsZWFzZV0sIFtbYXR0cmlidXRlZFN0cmluZy5kb2N1bWVudEF0dHJpYnV0
ZXMuZ2V0KCkgcmV0YWluXSBhdXRvcmVsZWFzZV0sIG5pbCk7CisgICAgICAgICAgICBoYW5kbGVy
KHJldGFpblB0cihhdHRyaWJ1dGVkU3RyaW5nLnN0cmluZy5nZXQoKSkuYXV0b3JlbGVhc2UoKSwg
cmV0YWluUHRyKGF0dHJpYnV0ZWRTdHJpbmcuZG9jdW1lbnRBdHRyaWJ1dGVzLmdldCgpKS5hdXRv
cmVsZWFzZSgpLCBuaWwpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBoYW5kbGVyKG5pbCwg
bmlsLCBjcmVhdGVOU0Vycm9yKFdLRXJyb3JVbmtub3duKS5nZXQoKSk7CiAgICAgfSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJwYWdlUHJlZmVy
ZW5jZXMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJwYWdlUHJl
ZmVyZW5jZXMubW0KaW5kZXggM2RjN2ZhNmU0ZTEwMjNmMmUyZmE2NTU1YjM5YmZlZTliMzlhZWUw
YS4uY2I1NjRkY2RiMjYwZGUyZjg2Zjc0YjI4NGJkZTEzMTdmNzllZThjYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2VicGFnZVByZWZlcmVuY2VzLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnBhZ2VQcmVmZXJl
bmNlcy5tbQpAQCAtMTA0LDcgKzEwNCw3IEBAIEBpbXBsZW1lbnRhdGlvbiBXS1dlYnBhZ2VQcmVm
ZXJlbmNlcwogCiArIChpbnN0YW5jZXR5cGUpZGVmYXVsdFByZWZlcmVuY2VzCiB7Ci0gICAgcmV0
dXJuIFtbW3NlbGYgYWxsb2NdIGluaXRdIGF1dG9yZWxlYXNlXTsKKyAgICByZXR1cm4gYWRvcHRO
UyhbW3NlbGYgYWxsb2NdIGluaXRdKS5hdXRvcmVsZWFzZSgpOwogfQogCiAtICh2b2lkKWRlYWxs
b2MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNp
dGVEYXRhUmVjb3JkLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
c2l0ZURhdGFSZWNvcmQubW0KaW5kZXggNjNlZTc2MWNkZWMwNGEyZDRhNDVkYTFiYjQzMjg5ZTJk
YTA3NTBmNi4uZjM5NWE3MThhMTU4YTU0NDNjY2E1MmMwZDI4NmE4OWI1ZWRkMjMxYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFSZWNv
cmQubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURh
dGFSZWNvcmQubW0KQEAgLTE1MCw3ICsxNTAsNyBAQCAtIChfV0tXZWJzaXRlRGF0YVNpemUgKilf
ZGF0YVNpemUKICAgICBpZiAoIXNpemUpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICByZXR1
cm4gW1tbX1dLV2Vic2l0ZURhdGFTaXplIGFsbG9jXSBpbml0V2l0aFNpemU6KnNpemVdIGF1dG9y
ZWxlYXNlXTsKKyAgICByZXR1cm4gYWRvcHROUyhbW19XS1dlYnNpdGVEYXRhU2l6ZSBhbGxvY10g
aW5pdFdpdGhTaXplOipzaXplXSkuYXV0b3JlbGVhc2UoKTsKIH0KIAogLSAoTlNBcnJheTxOU1N0
cmluZyAqPiAqKV9vcmlnaW5zU3RyaW5ncwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL19XS0FjdGl2YXRlZEVsZW1lbnRJbmZvLm1tIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0FjdGl2YXRlZEVsZW1lbnRJbmZvLm1tCmluZGV4IGY1
NjI0NTgzOGZkNzkxMjEzNDkzMzJhM2M3NTBkMjRmZDk2NWY4NjQuLjZmZTU5M2M0YjQ2NGNlOWI2
MDY1MDdlNjI3Yzk3ZTAwMjUzOTFiMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9fV0tBY3RpdmF0ZWRFbGVtZW50SW5mby5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQWN0aXZhdGVkRWxlbWVudEluZm8ubW0KQEAgLTUz
LDcgKzUzLDcgQEAgQGltcGxlbWVudGF0aW9uIF9XS0FjdGl2YXRlZEVsZW1lbnRJbmZvICB7CiAj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICsgKGluc3RhbmNldHlwZSlhY3RpdmF0ZWRFbGVtZW50
SW5mb1dpdGhJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbjooY29uc3QgV2ViS2l0OjpJ
bnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbiYpaW5mb3JtYXRpb24gdXNlckluZm86KE5T
RGljdGlvbmFyeSAqKXVzZXJJbmZvCiB7Ci0gICAgcmV0dXJuIFtbW3NlbGYgYWxsb2NdIF9pbml0
V2l0aEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uOmluZm9ybWF0aW9uIHVzZXJJbmZv
OnVzZXJJbmZvXSBhdXRvcmVsZWFzZV07CisgICAgcmV0dXJuIGFkb3B0TlMoW1tzZWxmIGFsbG9j
XSBfaW5pdFdpdGhJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbjppbmZvcm1hdGlvbiB1
c2VySW5mbzp1c2VySW5mb10pLmF1dG9yZWxlYXNlKCk7CiB9CiAKIC0gKGluc3RhbmNldHlwZSlf
aW5pdFdpdGhJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbjooY29uc3QgV2ViS2l0OjpJ
bnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbiYpaW5mb3JtYXRpb24gdXNlckluZm86KE5T
RGljdGlvbmFyeSAqKXVzZXJJbmZvCkBAIC0xNTEsNyArMTUxLDcgQEAgLSAoTlNEaWN0aW9uYXJ5
ICopdXNlckluZm8KIC0gKENvY29hSW1hZ2UgKilpbWFnZQogewogICAgIGlmIChfY29jb2FJbWFn
ZSkKLSAgICAgICAgcmV0dXJuIFtbX2NvY29hSW1hZ2UgY29weV0gYXV0b3JlbGVhc2VdOworICAg
ICAgICByZXR1cm4gYWRvcHROUyhbX2NvY29hSW1hZ2UgY29weV0pLmF1dG9yZWxlYXNlKCk7CiAK
ICAgICBpZiAoIV9pbWFnZSkKICAgICAgICAgcmV0dXJuIG5pbDsKQEAgLTE2Myw3ICsxNjMsNyBA
QCAtIChDb2NvYUltYWdlICopaW1hZ2UKICNlbmRpZgogICAgIF9pbWFnZSA9IG51bGxwdHI7CiAK
LSAgICByZXR1cm4gW1tfY29jb2FJbWFnZSBjb3B5XSBhdXRvcmVsZWFzZV07CisgICAgcmV0dXJu
IGFkb3B0TlMoW19jb2NvYUltYWdlIGNvcHldKS5hdXRvcmVsZWFzZSgpOwogfQogCiBAZW5kCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXR0YWNobWVu
dC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdHRhY2htZW50Lm1t
CmluZGV4IDVlOGI4YmJiYmRmYmE2NDA3ZjlmZjM3ZmJhODJmMjY4ZDQ5ZjJiMWMuLmVmYzZiM2E5
MDczZWZlYTcwOGY5YTY3MDZmNmIzYjYzYWMxNWI2N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdHRhY2htZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdHRhY2htZW50Lm1tCkBAIC0xMjAsNyArMTIwLDcg
QEAgLSAoX1dLQXR0YWNobWVudEluZm8gKilpbmZvCiAgICAgaWYgKCFfYXR0YWNobWVudC0+aXNW
YWxpZCgpKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgcmV0dXJuIFtbW19XS0F0dGFjaG1l
bnRJbmZvIGFsbG9jXSBpbml0V2l0aEZpbGVXcmFwcGVyOl9hdHRhY2htZW50LT5maWxlV3JhcHBl
cigpIGZpbGVQYXRoOl9hdHRhY2htZW50LT5maWxlUGF0aCgpIG1pbWVUeXBlOl9hdHRhY2htZW50
LT5taW1lVHlwZSgpIHV0aVR5cGU6X2F0dGFjaG1lbnQtPnV0aVR5cGUoKV0gYXV0b3JlbGVhc2Vd
OworICAgIHJldHVybiBhZG9wdE5TKFtbX1dLQXR0YWNobWVudEluZm8gYWxsb2NdIGluaXRXaXRo
RmlsZVdyYXBwZXI6X2F0dGFjaG1lbnQtPmZpbGVXcmFwcGVyKCkgZmlsZVBhdGg6X2F0dGFjaG1l
bnQtPmZpbGVQYXRoKCkgbWltZVR5cGU6X2F0dGFjaG1lbnQtPm1pbWVUeXBlKCkgdXRpVHlwZTpf
YXR0YWNobWVudC0+dXRpVHlwZSgpXSkuYXV0b3JlbGVhc2UoKTsKIH0KIAogLSAodm9pZClyZXF1
ZXN0SW5mbzoodm9pZCheKShfV0tBdHRhY2htZW50SW5mbyAqLCBOU0Vycm9yICopKWNvbXBsZXRp
b25IYW5kbGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLQXV0b21hdGlvblNlc3Npb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvX1dLQXV0b21hdGlvblNlc3Npb24ubW0KaW5kZXggMmFkZWVhNzYwYzY5OGIxOGFlNTkxZTU3
MDU3MTMyOTVmMjRjNTZkNy4uMTEwZDRlODBjNGY5OGFkN2VjMjJlZmJjYmE4NjE2ZDE4YzBmZWEx
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0F1dG9t
YXRpb25TZXNzaW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9f
V0tBdXRvbWF0aW9uU2Vzc2lvbi5tbQpAQCAtNDEsNyArNDEsNyBAQCBAaW1wbGVtZW50YXRpb24g
X1dLQXV0b21hdGlvblNlc3Npb24gewogCiAtIChpbnN0YW5jZXR5cGUpaW5pdAogewotICAgIHJl
dHVybiBbc2VsZiBpbml0V2l0aENvbmZpZ3VyYXRpb246W1tbX1dLQXV0b21hdGlvblNlc3Npb25D
b25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV1dOworICAgIHJldHVybiBbc2Vs
ZiBpbml0V2l0aENvbmZpZ3VyYXRpb246YWRvcHROUyhbW19XS0F1dG9tYXRpb25TZXNzaW9uQ29u
ZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pLmF1dG9yZWxlYXNlKCldOwogfQogCiAtIChpbnN0YW5j
ZXR5cGUpaW5pdFdpdGhDb25maWd1cmF0aW9uOihfV0tBdXRvbWF0aW9uU2Vzc2lvbkNvbmZpZ3Vy
YXRpb24gKiljb25maWd1cmF0aW9uCkBAIC04Nyw3ICs4Nyw3IEBAIC0gKHZvaWQpc2V0U2Vzc2lv
bklkZW50aWZpZXI6KE5TU3RyaW5nICopc2Vzc2lvbklkZW50aWZpZXIKIAogLSAoX1dLQXV0b21h
dGlvblNlc3Npb25Db25maWd1cmF0aW9uICopY29uZmlndXJhdGlvbgogewotICAgIHJldHVybiBb
W19jb25maWd1cmF0aW9uIGNvcHldIGF1dG9yZWxlYXNlXTsKKyAgICByZXR1cm4gYWRvcHROUyhb
X2NvbmZpZ3VyYXRpb24gY29weV0pLmF1dG9yZWxlYXNlKCk7CiB9CiAKIC0gKEJPT0wpaXNQYWly
ZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3du
bG9hZC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZC5t
bQppbmRleCBkNWUxMWFkNjk0NTRlZDhkZWFiMzU1NmIwOTI3ZjUwZDhiMzJlMDg0Li45MTNmNTNh
NTQxMTg5NGMyOWViZmUwZDdmMDdmYjdiNjAyMDdhZjA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxvYWQubW0KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0Rvd25sb2FkLm1tCkBAIC02MCw5ICs2MCw5IEBAICsg
KGluc3RhbmNldHlwZSlkb3dubG9hZFdpdGhEb3dubG9hZDooV0tEb3dubG9hZCAqKWRvd25sb2Fk
CiB7CiAgICAgaWYgKF9XS0Rvd25sb2FkICp3cmFwcGVyID0gW2Rvd25sb2FkV3JhcHBlck1hcCgp
IG9iamVjdEZvcktleTpkb3dubG9hZF0pCiAgICAgICAgIHJldHVybiB3cmFwcGVyOwotICAgIF9X
S0Rvd25sb2FkICp3cmFwcGVyID0gW1tbX1dLRG93bmxvYWQgYWxsb2NdIGluaXRXaXRoRG93bmxv
YWQyOmRvd25sb2FkXSBhdXRvcmVsZWFzZV07Ci0gICAgW2Rvd25sb2FkV3JhcHBlck1hcCgpIHNl
dE9iamVjdDp3cmFwcGVyIGZvcktleTpkb3dubG9hZF07Ci0gICAgcmV0dXJuIHdyYXBwZXI7Cisg
ICAgYXV0byB3cmFwcGVyID0gYWRvcHROUyhbW19XS0Rvd25sb2FkIGFsbG9jXSBpbml0V2l0aERv
d25sb2FkMjpkb3dubG9hZF0pOworICAgIFtkb3dubG9hZFdyYXBwZXJNYXAoKSBzZXRPYmplY3Q6
d3JhcHBlci5nZXQoKSBmb3JLZXk6ZG93bmxvYWRdOworICAgIHJldHVybiB3cmFwcGVyLmF1dG9y
ZWxlYXNlKCk7CiB9CiAKIC0gKHZvaWQpY2FuY2VsCkBAIC04NSw3ICs4NSw3IEBAIC0gKE5TVVJM
UmVxdWVzdCAqKXJlcXVlc3QKIC0gKFdLV2ViVmlldyAqKW9yaWdpbmF0aW5nV2ViVmlldwogewog
ICAgIGlmIChhdXRvKiBvcmlnaW5hdGluZ1BhZ2UgPSBfZG93bmxvYWQtPl9kb3dubG9hZC0+b3Jp
Z2luYXRpbmdQYWdlKCkpCi0gICAgICAgIHJldHVybiBbW2Zyb21XZWJQYWdlUHJveHkoKm9yaWdp
bmF0aW5nUGFnZSkgcmV0YWluXSBhdXRvcmVsZWFzZV07CisgICAgICAgIHJldHVybiByZXRhaW5Q
dHIoZnJvbVdlYlBhZ2VQcm94eSgqb3JpZ2luYXRpbmdQYWdlKSkuYXV0b3JlbGVhc2UoKTsKICAg
ICByZXR1cm4gbmlsOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvX1dLRWxlbWVudEFjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9fV0tFbGVtZW50QWN0aW9uLm1tCmluZGV4IGExNDI4NjllNjNlZjZkZmM2NTNhZjQ5
M2M1NmM5ZjcwYzU4YzYyMGMuLjUxNTBlMjg5NGI0NWE2ZjZiZGVhNjg2NThhMjBmY2ZjOTJiODY2
YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tFbGVt
ZW50QWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tF
bGVtZW50QWN0aW9uLm1tCkBAIC05Niw4ICs5Niw4IEBAIC0gKHZvaWQpZGVhbGxvYwogCiArIChp
bnN0YW5jZXR5cGUpZWxlbWVudEFjdGlvbldpdGhUaXRsZTooTlNTdHJpbmcgKil0aXRsZSBhY3Rp
b25IYW5kbGVyOihXS0VsZW1lbnRBY3Rpb25IYW5kbGVyKWhhbmRsZXIKIHsKLSAgICByZXR1cm4g
W1tbc2VsZiBhbGxvY10gX2luaXRXaXRoVGl0bGU6dGl0bGUgYWN0aW9uSGFuZGxlcjpeKFdLQWN0
aW9uU2hlZXRBc3Npc3RhbnQgKiwgX1dLQWN0aXZhdGVkRWxlbWVudEluZm8gKmFjdGlvbkluZm8p
IHsgaGFuZGxlcihhY3Rpb25JbmZvKTsgfQotICAgICAgICB0eXBlOl9XS0VsZW1lbnRBY3Rpb25U
eXBlQ3VzdG9tIGFzc2lzdGFudDpuaWxdIGF1dG9yZWxlYXNlXTsKKyAgICByZXR1cm4gYWRvcHRO
UyhbW3NlbGYgYWxsb2NdIF9pbml0V2l0aFRpdGxlOnRpdGxlIGFjdGlvbkhhbmRsZXI6XihXS0Fj
dGlvblNoZWV0QXNzaXN0YW50ICosIF9XS0FjdGl2YXRlZEVsZW1lbnRJbmZvICphY3Rpb25JbmZv
KSB7IGhhbmRsZXIoYWN0aW9uSW5mbyk7IH0KKyAgICAgICAgdHlwZTpfV0tFbGVtZW50QWN0aW9u
VHlwZUN1c3RvbSBhc3Npc3RhbnQ6bmlsXSkuYXV0b3JlbGVhc2UoKTsKIH0KIAogI2lmIEhBVkUo
U0FGQVJJX1NFUlZJQ0VTX0ZSQU1FV09SSykKQEAgLTExOCw3ICsxMTgsNyBAQCArIChpbnN0YW5j
ZXR5cGUpZWxlbWVudEFjdGlvbldpdGhUeXBlOihfV0tFbGVtZW50QWN0aW9uVHlwZSl0eXBlIHRp
dGxlOihOU1N0cmluZwogKyAoaW5zdGFuY2V0eXBlKV9lbGVtZW50QWN0aW9uV2l0aFR5cGU6KF9X
S0VsZW1lbnRBY3Rpb25UeXBlKXR5cGUgdGl0bGU6KE5TU3RyaW5nICopdGl0bGUgYWN0aW9uSGFu
ZGxlcjooV0tFbGVtZW50QWN0aW9uSGFuZGxlcilhY3Rpb25IYW5kbGVyCiB7CiAgICAgV0tFbGVt
ZW50QWN0aW9uSGFuZGxlckludGVybmFsIGhhbmRsZXIgPSBeKFdLQWN0aW9uU2hlZXRBc3Npc3Rh
bnQgKiwgX1dLQWN0aXZhdGVkRWxlbWVudEluZm8gKmFjdGlvbkluZm8pIHsgYWN0aW9uSGFuZGxl
cihhY3Rpb25JbmZvKTsgfTsKLSAgICByZXR1cm4gW1tbc2VsZiBhbGxvY10gX2luaXRXaXRoVGl0
bGU6dGl0bGUgYWN0aW9uSGFuZGxlcjpoYW5kbGVyIHR5cGU6dHlwZSBhc3Npc3RhbnQ6bmlsXSBh
dXRvcmVsZWFzZV07CisgICAgcmV0dXJuIGFkb3B0TlMoW1tzZWxmIGFsbG9jXSBfaW5pdFdpdGhU
aXRsZTp0aXRsZSBhY3Rpb25IYW5kbGVyOmhhbmRsZXIgdHlwZTp0eXBlIGFzc2lzdGFudDpuaWxd
KS5hdXRvcmVsZWFzZSgpOwogfQogCiArIChpbnN0YW5jZXR5cGUpX2VsZW1lbnRBY3Rpb25XaXRo
VHlwZTooX1dLRWxlbWVudEFjdGlvblR5cGUpdHlwZSBjdXN0b21UaXRsZTooTlNTdHJpbmcgKilj
dXN0b21UaXRsZSBhc3Npc3RhbnQ6KFdLQWN0aW9uU2hlZXRBc3Npc3RhbnQgKilhc3Npc3RhbnQK
QEAgLTE4Miw3ICsxODIsNyBAQCArIChpbnN0YW5jZXR5cGUpX2VsZW1lbnRBY3Rpb25XaXRoVHlw
ZTooX1dLRWxlbWVudEFjdGlvblR5cGUpdHlwZSBjdXN0b21UaXRsZTooTgogICAgICAgICByZXR1
cm4gbmlsOwogICAgIH0KIAotICAgIHJldHVybiBbW1tzZWxmIGFsbG9jXSBfaW5pdFdpdGhUaXRs
ZTooY3VzdG9tVGl0bGUgPyBjdXN0b21UaXRsZSA6IHRpdGxlKSBhY3Rpb25IYW5kbGVyOmhhbmRs
ZXIgdHlwZTp0eXBlIGFzc2lzdGFudDphc3Npc3RhbnRdIGF1dG9yZWxlYXNlXTsKKyAgICByZXR1
cm4gYWRvcHROUyhbW3NlbGYgYWxsb2NdIF9pbml0V2l0aFRpdGxlOihjdXN0b21UaXRsZSA/IGN1
c3RvbVRpdGxlIDogdGl0bGUpIGFjdGlvbkhhbmRsZXI6aGFuZGxlciB0eXBlOnR5cGUgYXNzaXN0
YW50OmFzc2lzdGFudF0pLmF1dG9yZWxlYXNlKCk7CiB9CiAKICsgKGluc3RhbmNldHlwZSlfZWxl
bWVudEFjdGlvbldpdGhUeXBlOihfV0tFbGVtZW50QWN0aW9uVHlwZSl0eXBlIGFzc2lzdGFudDoo
V0tBY3Rpb25TaGVldEFzc2lzdGFudCAqKWFzc2lzdGFudApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0ZyYW1lVHJlZU5vZGUubW0gYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRnJhbWVUcmVlTm9kZS5tbQppbmRleCA0ZDM5ZTIx
NTgyMTY3YmM4NTFiOTBkYzRhMTg1NjI0ZTZiZjBjMjI4Li41NzI5NThhZGMyMTM4OWJhZWM5ZmE5
ZDM2OWYwNzc4NWQ3ZWYxMzIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvX1dLRnJhbWVUcmVlTm9kZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvX1dLRnJhbWVUcmVlTm9kZS5tbQpAQCAtNTMsMTIgKzUzLDEyIEBAIC0gKFdL
U2VjdXJpdHlPcmlnaW4gKilzZWN1cml0eU9yaWdpbgogewogICAgIGF1dG8mIGRhdGEgPSBfbm9k
ZS0+c2VjdXJpdHlPcmlnaW4oKTsKICAgICBhdXRvIGFwaU9yaWdpbiA9IEFQSTo6U2VjdXJpdHlP
cmlnaW46OmNyZWF0ZShkYXRhLnByb3RvY29sLCBkYXRhLmhvc3QsIGRhdGEucG9ydCk7Ci0gICAg
cmV0dXJuIFtbd3JhcHBlcihhcGlPcmlnaW4uZ2V0KCkpIHJldGFpbl0gYXV0b3JlbGVhc2VdOwor
ICAgIHJldHVybiByZXRhaW5QdHIod3JhcHBlcihhcGlPcmlnaW4uZ2V0KCkpKS5hdXRvcmVsZWFz
ZSgpOwogfQogCiAtIChXS1dlYlZpZXcgKil3ZWJWaWV3CiB7Ci0gICAgcmV0dXJuIFtbZnJvbVdl
YlBhZ2VQcm94eShfbm9kZS0+cGFnZSgpKSByZXRhaW5dIGF1dG9yZWxlYXNlXTsKKyAgICByZXR1
cm4gcmV0YWluUHRyKGZyb21XZWJQYWdlUHJveHkoX25vZGUtPnBhZ2UoKSkpLmF1dG9yZWxlYXNl
KCk7CiB9CiAKIC0gKE5TQXJyYXk8X1dLRnJhbWVUcmVlTm9kZSAqPiAqKWNoaWxkRnJhbWVzCkBA
IC03NSwxMiArNzUsMTIgQEAgLSAoaWQpY29weVdpdGhab25lOihOU1pvbmUgKil6b25lCiAKIC0g
KF9XS0ZyYW1lSGFuZGxlICopX2hhbmRsZQogewotICAgIHJldHVybiBbW3dyYXBwZXIoX25vZGUt
PmhhbmRsZSgpKSByZXRhaW5dIGF1dG9yZWxlYXNlXTsKKyAgICByZXR1cm4gcmV0YWluUHRyKHdy
YXBwZXIoX25vZGUtPmhhbmRsZSgpKSkuYXV0b3JlbGVhc2UoKTsKIH0KIAogLSAoX1dLRnJhbWVI
YW5kbGUgKilfcGFyZW50RnJhbWVIYW5kbGUKIHsKLSAgICByZXR1cm4gW1t3cmFwcGVyKF9ub2Rl
LT5wYXJlbnRGcmFtZUhhbmRsZSgpKSByZXRhaW5dIGF1dG9yZWxlYXNlXTsKKyAgICByZXR1cm4g
cmV0YWluUHRyKHdyYXBwZXIoX25vZGUtPnBhcmVudEZyYW1lSGFuZGxlKCkpKS5hdXRvcmVsZWFz
ZSgpOwogfQogCiAtIChBUEk6Ok9iamVjdCYpX2FwaU9iamVjdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3Rvci5tbSBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3IubW0KaW5kZXggNmJlYjQ1ZTg0NjU5
ODFmOWUwOTI0NzJlYTRiMzE3ODY2NzI2YmUxMS4uMjZjYThmNzgxNjNlNTQ4NjRhYThmOGU0ZmI4
MjU1MjI5NTIzYzRhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL19XS0luc3BlY3Rvci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvX1dLSW5zcGVjdG9yLm1tCkBAIC0xODgsNyArMTg4LDcgQEAgLSAodm9pZClyZWdpc3RlckV4
dGVuc2lvbldpdGhJRDooTlNTdHJpbmcgKilleHRlbnNpb25JRCBkaXNwbGF5TmFtZTooTlNTdHJp
bmcgKikKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIGNhcHR1cmVk
QmxvY2sobmlsLCBbW3dyYXBwZXIoQVBJOjpJbnNwZWN0b3JFeHRlbnNpb246OmNyZWF0ZShwcm90
ZWN0ZWRFeHRlbnNpb25JRC5nZXQoKSwgcHJvdGVjdGVkU2VsZi0+X2luc3BlY3Rvci0+ZXh0ZW5z
aW9uQ29udHJvbGxlcigpKSkgcmV0YWluXSBhdXRvcmVsZWFzZV0pOworICAgICAgICBjYXB0dXJl
ZEJsb2NrKG5pbCwgcmV0YWluUHRyKHdyYXBwZXIoQVBJOjpJbnNwZWN0b3JFeHRlbnNpb246OmNy
ZWF0ZShwcm90ZWN0ZWRFeHRlbnNpb25JRC5nZXQoKSwgcHJvdGVjdGVkU2VsZi0+X2luc3BlY3Rv
ci0+ZXh0ZW5zaW9uQ29udHJvbGxlcigpKSkpLmF1dG9yZWxlYXNlKCkpOwogICAgIH0pOwogI2Vs
c2UKICAgICBjb21wbGV0aW9uSGFuZGxlcihbTlNFcnJvciBlcnJvcldpdGhEb21haW46V0tFcnJv
ckRvbWFpbiBjb2RlOldLRXJyb3JVbmtub3duIHVzZXJJbmZvOm5pbF0sIG5pbCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUHJvY2Vzc1Bvb2xDb25m
aWd1cmF0aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1Byb2Nl
c3NQb29sQ29uZmlndXJhdGlvbi5tbQppbmRleCBiNGMzNWU4ODU0YzYxMDU1NjU1YWVmZjJiZmI5
MDljZGM1NDI4MzljLi40NTVkNWE5MjM0ZDU5OTI3N2M2Mjg4MjA5ZWRhMmM3NmMwNmYxNzdiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUHJvY2Vzc1Bv
b2xDb25maWd1cmF0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9fV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24ubW0KQEAgLTY5LDExICs2OSwxMSBAQCAtIChO
U1NldDxDbGFzcz4gKiljdXN0b21DbGFzc2VzRm9yUGFyYW1ldGVyQ29kZXIKICAgICBpZiAoY2xh
c3Nlcy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBbTlNTZXQgc2V0XTsKIAotICAgIE5TTXV0
YWJsZVNldCAqcmVzdWx0ID0gW1tOU011dGFibGVTZXQgYWxsb2NdIGluaXRXaXRoQ2FwYWNpdHk6
Y2xhc3Nlcy5zaXplKCldOworICAgIGF1dG8gcmVzdWx0ID0gYWRvcHROUyhbW05TTXV0YWJsZVNl
dCBhbGxvY10gaW5pdFdpdGhDYXBhY2l0eTpjbGFzc2VzLnNpemUoKV0pOwogICAgIGZvciAoY29u
c3QgYXV0byYgdmFsdWUgOiBjbGFzc2VzKQogICAgICAgICBbcmVzdWx0IGFkZE9iamVjdDogb2Jq
Y19sb29rVXBDbGFzcyh2YWx1ZS51dGY4KCkuZGF0YSgpKV07CiAKLSAgICByZXR1cm4gW3Jlc3Vs
dCBhdXRvcmVsZWFzZV07CisgICAgcmV0dXJuIHJlc3VsdC5hdXRvcmVsZWFzZSgpOwogfQogCiAt
ICh2b2lkKXNldEN1c3RvbUNsYXNzZXNGb3JQYXJhbWV0ZXJDb2RlcjooTlNTZXQ8Q2xhc3M+ICop
Y2xhc3Nlc0ZvckNvZGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvX1dLUmVtb3RlV2ViSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUmVtb3RlV2ViSW5zcGVjdG9yVmlld0NvbnRyb2xs
ZXIubW0KaW5kZXggOTFjNGUzY2FjODFlZDFiNzkwMzQyMWQ2YmU2NDk1NzBlOGQ0NzAwNC4uOWYz
MTljZmNkNWQzNTI1Y2U2MWRhNDJkYTBkMjZhM2U1NjI0NjZiYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1JlbW90ZVdlYkluc3BlY3RvclZpZXdDb250
cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tSZW1v
dGVXZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5tbQpAQCAtMTY4LDcgKzE2OCw3IEBAIC0gKHZv
aWQpcmVnaXN0ZXJFeHRlbnNpb25XaXRoSUQ6KE5TU3RyaW5nICopZXh0ZW5zaW9uSUQgZGlzcGxh
eU5hbWU6KE5TU3RyaW5nICopCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAg
ICAgICBjYXB0dXJlZEJsb2NrKG5pbCwgW1t3cmFwcGVyKEFQSTo6SW5zcGVjdG9yRXh0ZW5zaW9u
OjpjcmVhdGUocHJvdGVjdGVkRXh0ZW5zaW9uSUQuZ2V0KCksIHByb3RlY3RlZFNlbGYtPm1fcmVt
b3RlSW5zcGVjdG9yUHJveHktPmV4dGVuc2lvbkNvbnRyb2xsZXIoKSkpIHJldGFpbl0gYXV0b3Jl
bGVhc2VdKTsKKyAgICAgICAgY2FwdHVyZWRCbG9jayhuaWwsIHJldGFpblB0cih3cmFwcGVyKEFQ
STo6SW5zcGVjdG9yRXh0ZW5zaW9uOjpjcmVhdGUocHJvdGVjdGVkRXh0ZW5zaW9uSUQuZ2V0KCks
IHByb3RlY3RlZFNlbGYtPm1fcmVtb3RlSW5zcGVjdG9yUHJveHktPmV4dGVuc2lvbkNvbnRyb2xs
ZXIoKSkpKS5hdXRvcmVsZWFzZSgpKTsKICAgICB9KTsKICNlbHNlCiAgICAgY29tcGxldGlvbkhh
bmRsZXIoW05TRXJyb3IgZXJyb3JXaXRoRG9tYWluOldLRXJyb3JEb21haW4gY29kZTpXS0Vycm9y
VW5rbm93biB1c2VySW5mbzpuaWxdLCBuaWwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL19XS1RleHRNYW5pcHVsYXRpb25Ub2tlbi5tbSBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tUZXh0TWFuaXB1bGF0aW9uVG9rZW4ubW0KaW5k
ZXggYzhmZDIyYTdiNTIzZmVhMzljYWZjMWUwZWFiN2Q5MTllMGRmZWRjNS4uODE5ZmUxYjllOWM2
MDVlNDc3NzliZGI5MTY5ZWVkNzQwYjgzYzk4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL19XS1RleHRNYW5pcHVsYXRpb25Ub2tlbi5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVGV4dE1hbmlwdWxhdGlvblRva2VuLm1t
CkBAIC0xMTIsNyArMTEyLDcgQEAgLSAoTlNTdHJpbmcgKilfZGVzY3JpcHRpb25QcmVzZXJ2aW5n
UHJpdmFjeTooQk9PTClwcmVzZXJ2ZVByaXZhY3kKIAogICAgIFtkZXNjcmlwdGlvbiBhcHBlbmRT
dHJpbmc6QCI+Il07CiAKLSAgICByZXR1cm4gW1tkZXNjcmlwdGlvbiBjb3B5XSBhdXRvcmVsZWFz
ZV07CisgICAgcmV0dXJuIGFkb3B0TlMoW2Rlc2NyaXB0aW9uIGNvcHldKS5hdXRvcmVsZWFzZSgp
OwogfQogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvX1dLVXNlckNvbnRlbnRFeHRlbnNpb25TdG9yZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9fV0tVc2VyQ29udGVudEV4dGVuc2lvblN0b3JlLm1tCmluZGV4IDg0NDky
YTU2NjEzYjFhNjFmYmI5NTFiMWMwODA1YmUzNjY2YjJkNWMuLjJlZThkN2EwNjEwNzlmNjk3NTYw
NDJlM2E1MTg4OWMyOTBhYzcwNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tVc2VyQ29udGVudEV4dGVuc2lvblN0b3JlLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tVc2VyQ29udGVudEV4dGVuc2lvblN0b3JlLm1t
CkBAIC02MCwyNyArNjAsMjcgQEAgQGltcGxlbWVudGF0aW9uIF9XS1VzZXJDb250ZW50RXh0ZW5z
aW9uU3RvcmUKIAogKyAoaW5zdGFuY2V0eXBlKWRlZmF1bHRTdG9yZQogewotICAgIHJldHVybiBb
W1tfV0tVc2VyQ29udGVudEV4dGVuc2lvblN0b3JlIGFsbG9jXSBfaW5pdFdpdGhXS0NvbnRlbnRS
dWxlTGlzdFN0b3JlOltXS0NvbnRlbnRSdWxlTGlzdFN0b3JlIGRlZmF1bHRTdG9yZVdpdGhMZWdh
Y3lGaWxlbmFtZV1dIGF1dG9yZWxlYXNlXTsKKyAgICByZXR1cm4gYWRvcHROUyhbW19XS1VzZXJD
b250ZW50RXh0ZW5zaW9uU3RvcmUgYWxsb2NdIF9pbml0V2l0aFdLQ29udGVudFJ1bGVMaXN0U3Rv
cmU6W1dLQ29udGVudFJ1bGVMaXN0U3RvcmUgZGVmYXVsdFN0b3JlV2l0aExlZ2FjeUZpbGVuYW1l
XV0pLmF1dG9yZWxlYXNlKCk7CiB9CiAKICsgKGluc3RhbmNldHlwZSlzdG9yZVdpdGhVUkw6KE5T
VVJMICopdXJsCiB7Ci0gICAgcmV0dXJuIFtbW19XS1VzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmUg
YWxsb2NdIF9pbml0V2l0aFdLQ29udGVudFJ1bGVMaXN0U3RvcmU6W1dLQ29udGVudFJ1bGVMaXN0
U3RvcmUgc3RvcmVXaXRoVVJMQW5kTGVnYWN5RmlsZW5hbWU6dXJsXV0gYXV0b3JlbGVhc2VdOwor
ICAgIHJldHVybiBhZG9wdE5TKFtbX1dLVXNlckNvbnRlbnRFeHRlbnNpb25TdG9yZSBhbGxvY10g
X2luaXRXaXRoV0tDb250ZW50UnVsZUxpc3RTdG9yZTpbV0tDb250ZW50UnVsZUxpc3RTdG9yZSBz
dG9yZVdpdGhVUkxBbmRMZWdhY3lGaWxlbmFtZTp1cmxdXSkuYXV0b3JlbGVhc2UoKTsKIH0KIAog
LSAodm9pZCljb21waWxlQ29udGVudEV4dGVuc2lvbkZvcklkZW50aWZpZXI6KE5TU3RyaW5nICop
aWRlbnRpZmllciBlbmNvZGVkQ29udGVudEV4dGVuc2lvbjooTlNTdHJpbmcgKillbmNvZGVkQ29u
dGVudFJ1bGVMaXN0IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShfV0tVc2VyQ29udGVudEZp
bHRlciAqLCBOU0Vycm9yICopKWNvbXBsZXRpb25IYW5kbGVyCiB7CiAgICAgW19jb250ZW50UnVs
ZUxpc3RTdG9yZSBfY29tcGlsZUNvbnRlbnRSdWxlTGlzdEZvcklkZW50aWZpZXI6aWRlbnRpZmll
ciBlbmNvZGVkQ29udGVudFJ1bGVMaXN0OmVuY29kZWRDb250ZW50UnVsZUxpc3QgY29tcGxldGlv
bkhhbmRsZXI6XihXS0NvbnRlbnRSdWxlTGlzdCAqY29udGVudFJ1bGVMaXN0LCBOU0Vycm9yICpl
cnJvcikgewotICAgICAgICBfV0tVc2VyQ29udGVudEZpbHRlciAqY29udGVudEZpbHRlciA9IGNv
bnRlbnRSdWxlTGlzdCA/IFtbW19XS1VzZXJDb250ZW50RmlsdGVyIGFsbG9jXSBfaW5pdFdpdGhX
S0NvbnRlbnRSdWxlTGlzdDpjb250ZW50UnVsZUxpc3RdIGF1dG9yZWxlYXNlXSA6IG5pbDsKLSAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoY29udGVudEZpbHRlciwgdG9Vc2VyQ29udGVudFJ1bGVM
aXN0U3RvcmVFcnJvcihlcnJvcikpOworICAgICAgICBhdXRvIGNvbnRlbnRGaWx0ZXIgPSBjb250
ZW50UnVsZUxpc3QgPyBhZG9wdE5TKFtbX1dLVXNlckNvbnRlbnRGaWx0ZXIgYWxsb2NdIF9pbml0
V2l0aFdLQ29udGVudFJ1bGVMaXN0OmNvbnRlbnRSdWxlTGlzdF0pIDogbmlsOworICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihjb250ZW50RmlsdGVyLmF1dG9yZWxlYXNlKCksIHRvVXNlckNvbnRl
bnRSdWxlTGlzdFN0b3JlRXJyb3IoZXJyb3IpKTsKICAgICB9XTsKIH0KIAogLSAodm9pZClsb29r
dXBDb250ZW50RXh0ZW5zaW9uRm9ySWRlbnRpZmllcjooTlNTdHJpbmcgKilpZGVudGlmaWVyIGNv
bXBsZXRpb25IYW5kbGVyOih2b2lkICheKShfV0tVc2VyQ29udGVudEZpbHRlciAqLCBOU0Vycm9y
ICopKWNvbXBsZXRpb25IYW5kbGVyCiB7CiAgICAgW19jb250ZW50UnVsZUxpc3RTdG9yZSBsb29r
VXBDb250ZW50UnVsZUxpc3RGb3JJZGVudGlmaWVyOmlkZW50aWZpZXIgY29tcGxldGlvbkhhbmRs
ZXI6XihXS0NvbnRlbnRSdWxlTGlzdCAqY29udGVudFJ1bGVMaXN0LCBOU0Vycm9yICplcnJvcikg
ewotICAgICAgICBfV0tVc2VyQ29udGVudEZpbHRlciAqY29udGVudEZpbHRlciA9IGNvbnRlbnRS
dWxlTGlzdCA/IFtbW19XS1VzZXJDb250ZW50RmlsdGVyIGFsbG9jXSBfaW5pdFdpdGhXS0NvbnRl
bnRSdWxlTGlzdDpjb250ZW50UnVsZUxpc3RdIGF1dG9yZWxlYXNlXSA6IG5pbDsKLSAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoY29udGVudEZpbHRlciwgdG9Vc2VyQ29udGVudFJ1bGVMaXN0U3Rv
cmVFcnJvcihlcnJvcikpOworICAgICAgICBhdXRvIGNvbnRlbnRGaWx0ZXIgPSBjb250ZW50UnVs
ZUxpc3QgPyBhZG9wdE5TKFtbX1dLVXNlckNvbnRlbnRGaWx0ZXIgYWxsb2NdIF9pbml0V2l0aFdL
Q29udGVudFJ1bGVMaXN0OmNvbnRlbnRSdWxlTGlzdF0pIDogbmlsOworICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihjb250ZW50RmlsdGVyLmF1dG9yZWxlYXNlKCksIHRvVXNlckNvbnRlbnRSdWxl
TGlzdFN0b3JlRXJyb3IoZXJyb3IpKTsKICAgICB9XTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1VzZXJDb250ZW50V29ybGQubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVXNlckNvbnRlbnRXb3JsZC5tbQppbmRl
eCBkZjE1OGYwZDIzOTM0ZTA3ZmIyOTFlNjZiMzE2MzBhOTU5NzBjNzQ2Li45MGYxYjc5NjQ2Yzg1
M2FmOGY1ZWYyMzgzODk3NDA1NDIwOWIzYWE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvX1dLVXNlckNvbnRlbnRXb3JsZC5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVXNlckNvbnRlbnRXb3JsZC5tbQpAQCAtNjAsMTIg
KzYwLDEyIEBAIC0gKGluc3RhbmNldHlwZSlfaW5pdFdpdGhDb250ZW50V29ybGQ6KFdLQ29udGVu
dFdvcmxkICopd29ybGQKIAogKyAoX1dLVXNlckNvbnRlbnRXb3JsZCAqKXdvcmxkV2l0aE5hbWU6
KE5TU3RyaW5nICopbmFtZQogewotICAgIHJldHVybiBbW1tfV0tVc2VyQ29udGVudFdvcmxkIGFs
bG9jXSBfaW5pdFdpdGhOYW1lOm5hbWVdIGF1dG9yZWxlYXNlXTsKKyAgICByZXR1cm4gYWRvcHRO
UyhbW19XS1VzZXJDb250ZW50V29ybGQgYWxsb2NdIF9pbml0V2l0aE5hbWU6bmFtZV0pLmF1dG9y
ZWxlYXNlKCk7CiB9CiAKICsgKF9XS1VzZXJDb250ZW50V29ybGQgKilub3JtYWxXb3JsZAogewot
ICAgIHJldHVybiBbW1tfV0tVc2VyQ29udGVudFdvcmxkIGFsbG9jXSBfaW5pdF0gYXV0b3JlbGVh
c2VdOworICAgIHJldHVybiBhZG9wdE5TKFtbX1dLVXNlckNvbnRlbnRXb3JsZCBhbGxvY10gX2lu
aXRdKS5hdXRvcmVsZWFzZSgpOwogfQogCiAtIChOU1N0cmluZyAqKW5hbWUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3SU9TLm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdJT1MubW0KaW5kZXggMGY2OTRiYThk
Y2Y2ZWZmMjVjMGQ3ZjY1ZjM3ZmM0M2M3OTVlNzM4Yy4uNTlkNDQ2MjZlYTQ1ZDhlODQ5Y2YxNTNi
NTVmOGEyYjIzMzJjNzdjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2lvcy9XS1dlYlZpZXdJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2lv
cy9XS1dlYlZpZXdJT1MubW0KQEAgLTI1NTEsNyArMjU1MSw3IEBAIC0gKFVJRXZlbnRBdHRyaWJ1
dGlvbiAqKV91aUV2ZW50QXR0cmlidXRpb24KICAgICAgICAgcmV0dXJuIG5pbDsKIAogICAgIGF1
dG8gYXR0cmlidXRlT25VUkwgPSBVUkwoVVJMKCksIG1ha2VTdHJpbmcoImh0dHBzOi8vIiwgbWVh
c3VyZW1lbnQtPmF0dHJpYnV0ZU9uU2l0ZSgpLnJlZ2lzdHJhYmxlRG9tYWluLnN0cmluZygpKSk7
Ci0gICAgcmV0dXJuIFtbW1VJRXZlbnRBdHRyaWJ1dGlvbiBhbGxvY10gaW5pdFdpdGhTb3VyY2VJ
ZGVudGlmaWVyOm1lYXN1cmVtZW50LT5zb3VyY2VJRCgpLmlkIGRlc3RpbmF0aW9uVVJMOmF0dHJp
YnV0ZU9uVVJMIHNvdXJjZURlc2NyaXB0aW9uOm1lYXN1cmVtZW50LT5zb3VyY2VEZXNjcmlwdGlv
bigpIHB1cmNoYXNlcjptZWFzdXJlbWVudC0+cHVyY2hhc2VyKCldIGF1dG9yZWxlYXNlXTsKKyAg
ICByZXR1cm4gYWRvcHROUyhbW1VJRXZlbnRBdHRyaWJ1dGlvbiBhbGxvY10gaW5pdFdpdGhTb3Vy
Y2VJZGVudGlmaWVyOm1lYXN1cmVtZW50LT5zb3VyY2VJRCgpLmlkIGRlc3RpbmF0aW9uVVJMOmF0
dHJpYnV0ZU9uVVJMIHNvdXJjZURlc2NyaXB0aW9uOm1lYXN1cmVtZW50LT5zb3VyY2VEZXNjcmlw
dGlvbigpIHB1cmNoYXNlcjptZWFzdXJlbWVudC0+cHVyY2hhc2VyKCldKS5hdXRvcmVsZWFzZSgp
OwogI2Vsc2UKICAgICByZXR1cm4gbmlsOwogI2VuZGlmCkBAIC0zMTU5LDkgKzMxNTksOSBAQCAt
ICh2b2lkICheKSh2b2lkKSlfcmV0YWluQWN0aXZlRm9jdXNlZFN0YXRlCiAgICAgKytfYWN0aXZl
Rm9jdXNlZFN0YXRlUmV0YWluQ291bnQ7CiAKICAgICAvLyBGSVhNRTogVXNlIHNvbWV0aGluZyBs
aWtlIENvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXIgdG8gZW5zdXJlIHRoYXQgdGhlIHJldHVy
bmVkIGJsb2NrIGlzIGNhbGxlZCBiZWZvcmUgaXQncyByZWxlYXNlZC4KLSAgICByZXR1cm4gW1tb
c2VsZl0geworICAgIHJldHVybiBhZG9wdE5TKFtbc2VsZl0gewogICAgICAgICAtLV9hY3RpdmVG
b2N1c2VkU3RhdGVSZXRhaW5Db3VudDsKLSAgICB9IGNvcHldIGF1dG9yZWxlYXNlXTsKKyAgICB9
IGNvcHldKS5hdXRvcmVsZWFzZSgpOwogfQogCiAtICh2b2lkKV9iZWNvbWVGaXJzdFJlc3BvbmRl
cldpdGhTZWxlY3Rpb25Nb3ZpbmdGb3J3YXJkOihCT09MKXNlbGVjdGluZ0ZvcndhcmQgY29tcGxl
dGlvbkhhbmRsZXI6KHZvaWQgKF4pKEJPT0wgZGlkQmVjb21lRmlyc3RSZXNwb25kZXIpKWNvbXBs
ZXRpb25IYW5kbGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0
aW9uL2lvcy9XZWJBdXRvbWF0aW9uU2Vzc2lvbklPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0F1dG9tYXRpb24vaW9zL1dlYkF1dG9tYXRpb25TZXNzaW9uSU9TLm1tCmluZGV4IDcyMjhh
ZmZhZGJjYWEyNWJmMzVkYzQxOGEwMTY4ZDY5ODA4MGQ1NDguLmI4ZjFjZGRiNDlkYjJhZjdhMjhh
NjkzZDMwZjlmOGE1ZWIyODI5MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0F1dG9tYXRpb24vaW9zL1dlYkF1dG9tYXRpb25TZXNzaW9uSU9TLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vaW9zL1dlYkF1dG9tYXRpb25TZXNzaW9uSU9TLm1t
CkBAIC0xMzIsMTkgKzEzMiwxOSBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpwbGF0Zm9y
bVNpbXVsYXRlS2V5Ym9hcmRJbnRlcmFjdGlvbihXZWJQYWdlUHJveHkmIHBhZwogICAgIGNhc2Ug
S2V5Ym9hcmRJbnRlcmFjdGlvbjo6S2V5UHJlc3M6IHsKICAgICAgICAgbV9jdXJyZW50TW9kaWZp
ZXJzIHw9IGNoYW5nZWRNb2RpZmllcnM7CiAKLSAgICAgICAgW2V2ZW50c1RvQmVTZW50IGFkZE9i
amVjdDpbW1s6OldlYkV2ZW50IGFsbG9jXSBpbml0V2l0aEtleUV2ZW50VHlwZTpXZWJFdmVudEtl
eURvd24gdGltZVN0YW1wOkNGQWJzb2x1dGVUaW1lR2V0Q3VycmVudCgpIGNoYXJhY3RlcnM6Y2hh
cmFjdGVycyBjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnM6dW5tb2RpZmllZENoYXJhY3RlcnMg
bW9kaWZpZXJzOm1fY3VycmVudE1vZGlmaWVycyBpc1JlcGVhdGluZzpOTyB3aXRoRmxhZ3M6aW5w
dXRGbGFncyB3aXRoSW5wdXRNYW5hZ2VySGludDpuaWwga2V5Q29kZTprZXlDb2RlIGlzVGFiS2V5
OmlzVGFiS2V5XSBhdXRvcmVsZWFzZV1dOworICAgICAgICBbZXZlbnRzVG9CZVNlbnQgYWRkT2Jq
ZWN0OmFkb3B0TlMoW1s6OldlYkV2ZW50IGFsbG9jXSBpbml0V2l0aEtleUV2ZW50VHlwZTpXZWJF
dmVudEtleURvd24gdGltZVN0YW1wOkNGQWJzb2x1dGVUaW1lR2V0Q3VycmVudCgpIGNoYXJhY3Rl
cnM6Y2hhcmFjdGVycyBjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnM6dW5tb2RpZmllZENoYXJh
Y3RlcnMgbW9kaWZpZXJzOm1fY3VycmVudE1vZGlmaWVycyBpc1JlcGVhdGluZzpOTyB3aXRoRmxh
Z3M6aW5wdXRGbGFncyB3aXRoSW5wdXRNYW5hZ2VySGludDpuaWwga2V5Q29kZTprZXlDb2RlIGlz
VGFiS2V5OmlzVGFiS2V5XSkuYXV0b3JlbGVhc2UoKV07CiAgICAgICAgIGJyZWFrOwogICAgIH0K
ICAgICBjYXNlIEtleWJvYXJkSW50ZXJhY3Rpb246OktleVJlbGVhc2U6IHsKICAgICAgICAgbV9j
dXJyZW50TW9kaWZpZXJzICY9IH5jaGFuZ2VkTW9kaWZpZXJzOwogCi0gICAgICAgIFtldmVudHNU
b0JlU2VudCBhZGRPYmplY3Q6W1tbOjpXZWJFdmVudCBhbGxvY10gaW5pdFdpdGhLZXlFdmVudFR5
cGU6V2ViRXZlbnRLZXlVcCB0aW1lU3RhbXA6Q0ZBYnNvbHV0ZVRpbWVHZXRDdXJyZW50KCkgY2hh
cmFjdGVyczpjaGFyYWN0ZXJzIGNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVyczp1bm1vZGlmaWVk
Q2hhcmFjdGVycyBtb2RpZmllcnM6bV9jdXJyZW50TW9kaWZpZXJzIGlzUmVwZWF0aW5nOk5PIHdp
dGhGbGFnczppbnB1dEZsYWdzIHdpdGhJbnB1dE1hbmFnZXJIaW50Om5pbCBrZXlDb2RlOmtleUNv
ZGUgaXNUYWJLZXk6aXNUYWJLZXldIGF1dG9yZWxlYXNlXV07CisgICAgICAgIFtldmVudHNUb0Jl
U2VudCBhZGRPYmplY3Q6YWRvcHROUyhbWzo6V2ViRXZlbnQgYWxsb2NdIGluaXRXaXRoS2V5RXZl
bnRUeXBlOldlYkV2ZW50S2V5VXAgdGltZVN0YW1wOkNGQWJzb2x1dGVUaW1lR2V0Q3VycmVudCgp
IGNoYXJhY3RlcnM6Y2hhcmFjdGVycyBjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnM6dW5tb2Rp
ZmllZENoYXJhY3RlcnMgbW9kaWZpZXJzOm1fY3VycmVudE1vZGlmaWVycyBpc1JlcGVhdGluZzpO
TyB3aXRoRmxhZ3M6aW5wdXRGbGFncyB3aXRoSW5wdXRNYW5hZ2VySGludDpuaWwga2V5Q29kZTpr
ZXlDb2RlIGlzVGFiS2V5OmlzVGFiS2V5XSkuYXV0b3JlbGVhc2UoKV07CiAgICAgICAgIGJyZWFr
OwogICAgIH0KICAgICBjYXNlIEtleWJvYXJkSW50ZXJhY3Rpb246Okluc2VydEJ5S2V5OiB7CiAg
ICAgICAgIC8vIE1vZGlmaWVycyBvbmx5IGNoYW5nZSB3aXRoIEtleVByZXNzIG9yIEtleVJlbGVh
c2UsIHRoaXMgY29kZSBwYXRoIGlzIGZvciBzaW5nbGUgY2hhcmFjdGVycy4KLSAgICAgICAgW2V2
ZW50c1RvQmVTZW50IGFkZE9iamVjdDpbW1s6OldlYkV2ZW50IGFsbG9jXSBpbml0V2l0aEtleUV2
ZW50VHlwZTpXZWJFdmVudEtleURvd24gdGltZVN0YW1wOkNGQWJzb2x1dGVUaW1lR2V0Q3VycmVu
dCgpIGNoYXJhY3RlcnM6Y2hhcmFjdGVycyBjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnM6dW5t
b2RpZmllZENoYXJhY3RlcnMgbW9kaWZpZXJzOm1fY3VycmVudE1vZGlmaWVycyBpc1JlcGVhdGlu
ZzpOTyB3aXRoRmxhZ3M6aW5wdXRGbGFncyB3aXRoSW5wdXRNYW5hZ2VySGludDpuaWwga2V5Q29k
ZTprZXlDb2RlIGlzVGFiS2V5OmlzVGFiS2V5XSBhdXRvcmVsZWFzZV1dOwotICAgICAgICBbZXZl
bnRzVG9CZVNlbnQgYWRkT2JqZWN0OltbWzo6V2ViRXZlbnQgYWxsb2NdIGluaXRXaXRoS2V5RXZl
bnRUeXBlOldlYkV2ZW50S2V5VXAgdGltZVN0YW1wOkNGQWJzb2x1dGVUaW1lR2V0Q3VycmVudCgp
IGNoYXJhY3RlcnM6Y2hhcmFjdGVycyBjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnM6dW5tb2Rp
ZmllZENoYXJhY3RlcnMgbW9kaWZpZXJzOm1fY3VycmVudE1vZGlmaWVycyBpc1JlcGVhdGluZzpO
TyB3aXRoRmxhZ3M6aW5wdXRGbGFncyB3aXRoSW5wdXRNYW5hZ2VySGludDpuaWwga2V5Q29kZTpr
ZXlDb2RlIGlzVGFiS2V5OmlzVGFiS2V5XSBhdXRvcmVsZWFzZV1dOworICAgICAgICBbZXZlbnRz
VG9CZVNlbnQgYWRkT2JqZWN0OmFkb3B0TlMoW1s6OldlYkV2ZW50IGFsbG9jXSBpbml0V2l0aEtl
eUV2ZW50VHlwZTpXZWJFdmVudEtleURvd24gdGltZVN0YW1wOkNGQWJzb2x1dGVUaW1lR2V0Q3Vy
cmVudCgpIGNoYXJhY3RlcnM6Y2hhcmFjdGVycyBjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnM6
dW5tb2RpZmllZENoYXJhY3RlcnMgbW9kaWZpZXJzOm1fY3VycmVudE1vZGlmaWVycyBpc1JlcGVh
dGluZzpOTyB3aXRoRmxhZ3M6aW5wdXRGbGFncyB3aXRoSW5wdXRNYW5hZ2VySGludDpuaWwga2V5
Q29kZTprZXlDb2RlIGlzVGFiS2V5OmlzVGFiS2V5XSkuYXV0b3JlbGVhc2UoKV07CisgICAgICAg
IFtldmVudHNUb0JlU2VudCBhZGRPYmplY3Q6YWRvcHROUyhbWzo6V2ViRXZlbnQgYWxsb2NdIGlu
aXRXaXRoS2V5RXZlbnRUeXBlOldlYkV2ZW50S2V5VXAgdGltZVN0YW1wOkNGQWJzb2x1dGVUaW1l
R2V0Q3VycmVudCgpIGNoYXJhY3RlcnM6Y2hhcmFjdGVycyBjaGFyYWN0ZXJzSWdub3JpbmdNb2Rp
ZmllcnM6dW5tb2RpZmllZENoYXJhY3RlcnMgbW9kaWZpZXJzOm1fY3VycmVudE1vZGlmaWVycyBp
c1JlcGVhdGluZzpOTyB3aXRoRmxhZ3M6aW5wdXRGbGFncyB3aXRoSW5wdXRNYW5hZ2VySGludDpu
aWwga2V5Q29kZTprZXlDb2RlIGlzVGFiS2V5OmlzVGFiS2V5XSkuYXV0b3JlbGVhc2UoKV07CiAg
ICAgICAgIGJyZWFrOwogICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9BdXRvbWF0aW9uQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvQXV0b21hdGlvbkNsaWVudC5tbQppbmRleCBjMmZiOWQwMDBkOGU0NzNiYTdmODAy
YTdhNTM0NWE0NDIzZjJiYTJjLi5kZWEwMjNlZTMxY2YzZmJiNDIzYTRkNjExYzE5MTQxNzQ5M2M2
NjZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9BdXRvbWF0aW9u
Q2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0F1dG9tYXRpb25D
bGllbnQubW0KQEAgLTc2LDE3ICs3NiwxNyBAQCBib29sIEF1dG9tYXRpb25DbGllbnQ6OnJlbW90
ZUF1dG9tYXRpb25BbGxvd2VkKCkgY29uc3QKIAogdm9pZCBBdXRvbWF0aW9uQ2xpZW50OjpyZXF1
ZXN0QXV0b21hdGlvblNlc3Npb24oY29uc3QgU3RyaW5nJiBzZXNzaW9uSWRlbnRpZmllciwgY29u
c3QgUmVtb3RlSW5zcGVjdG9yOjpDbGllbnQ6OlNlc3Npb25DYXBhYmlsaXRpZXMmIHNlc3Npb25D
YXBhYmlsaXRpZXMpCiB7Ci0gICAgX1dLQXV0b21hdGlvblNlc3Npb25Db25maWd1cmF0aW9uICpj
b25maWd1cmF0aW9uID0gW1tbX1dLQXV0b21hdGlvblNlc3Npb25Db25maWd1cmF0aW9uIGFsbG9j
XSBpbml0XSBhdXRvcmVsZWFzZV07CisgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhb
W19XS0F1dG9tYXRpb25TZXNzaW9uQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwogICAgIGlm
IChzZXNzaW9uQ2FwYWJpbGl0aWVzLmFsbG93SW5zZWN1cmVNZWRpYUNhcHR1cmUpCi0gICAgICAg
IGNvbmZpZ3VyYXRpb24uYWxsb3dzSW5zZWN1cmVNZWRpYUNhcHR1cmUgPSBzZXNzaW9uQ2FwYWJp
bGl0aWVzLmFsbG93SW5zZWN1cmVNZWRpYUNhcHR1cmUudmFsdWUoKTsKKyAgICAgICAgW2NvbmZp
Z3VyYXRpb24gc2V0QWxsb3dzSW5zZWN1cmVNZWRpYUNhcHR1cmU6c2Vzc2lvbkNhcGFiaWxpdGll
cy5hbGxvd0luc2VjdXJlTWVkaWFDYXB0dXJlLnZhbHVlKCldOwogICAgIGlmIChzZXNzaW9uQ2Fw
YWJpbGl0aWVzLnN1cHByZXNzSUNFQ2FuZGlkYXRlRmlsdGVyaW5nKQotICAgICAgICBjb25maWd1
cmF0aW9uLnN1cHByZXNzZXNJQ0VDYW5kaWRhdGVGaWx0ZXJpbmcgPSBzZXNzaW9uQ2FwYWJpbGl0
aWVzLnN1cHByZXNzSUNFQ2FuZGlkYXRlRmlsdGVyaW5nLnZhbHVlKCk7CisgICAgICAgIFtjb25m
aWd1cmF0aW9uIHNldFN1cHByZXNzZXNJQ0VDYW5kaWRhdGVGaWx0ZXJpbmc6c2Vzc2lvbkNhcGFi
aWxpdGllcy5zdXBwcmVzc0lDRUNhbmRpZGF0ZUZpbHRlcmluZy52YWx1ZSgpXTsKIAogICAgIC8v
IEZvcmNlIGNsaWVudHMgdG8gY3JlYXRlIGFuZCByZWdpc3RlciBhIHNlc3Npb24gYXN5bmNocm9u
b3VzbHkuIE90aGVyd2lzZSwKICAgICAvLyBSZW1vdGVJbnNwZWN0b3Igd2lsbCB0cnkgdG8gYWNx
dWlyZSBpdHMgbG9jayB0byByZWdpc3RlciB0aGUgbmV3IHNlc3Npb24gYW5kCiAgICAgLy8gZGVh
ZGxvY2sgYmVjYXVzZSBpdCdzIGFscmVhZHkgdGFrZW4gd2hpbGUgaGFuZGxpbmcgWFBDIG1lc3Nh
Z2VzLgogICAgIE5TU3RyaW5nICpyZXF1ZXN0ZWRTZXNzaW9uSWRlbnRpZmllciA9IHNlc3Npb25J
ZGVudGlmaWVyOwotICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbdGhpcywgcmVxdWVzdGVk
U2Vzc2lvbklkZW50aWZpZXIgPSByZXRhaW5QdHIocmVxdWVzdGVkU2Vzc2lvbklkZW50aWZpZXIp
LCBjb25maWd1cmF0aW9uID0gcmV0YWluUHRyKGNvbmZpZ3VyYXRpb24pXSB7CisgICAgUnVuTG9v
cDo6bWFpbigpLmRpc3BhdGNoKFt0aGlzLCByZXF1ZXN0ZWRTZXNzaW9uSWRlbnRpZmllciA9IHJl
dGFpblB0cihyZXF1ZXN0ZWRTZXNzaW9uSWRlbnRpZmllciksIGNvbmZpZ3VyYXRpb24gPSBXVEZN
b3ZlKGNvbmZpZ3VyYXRpb24pXSB7CiAgICAgICAgIGlmIChtX2RlbGVnYXRlTWV0aG9kcy5yZXF1
ZXN0QXV0b21hdGlvblNlc3Npb24pCiAgICAgICAgICAgICBbbV9kZWxlZ2F0ZS5nZXQoKSBfcHJv
Y2Vzc1Bvb2w6bV9wcm9jZXNzUG9vbCBkaWRSZXF1ZXN0QXV0b21hdGlvblNlc3Npb25XaXRoSWRl
bnRpZmllcjpyZXF1ZXN0ZWRTZXNzaW9uSWRlbnRpZmllci5nZXQoKSBjb25maWd1cmF0aW9uOmNv
bmZpZ3VyYXRpb24uZ2V0KCldOwogICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvU2FmZUJyb3dzaW5nV2FybmluZ0NvY29hLm1tIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvU2FmZUJyb3dzaW5nV2FybmluZ0NvY29hLm1tCmluZGV4IDhhOTll
YzRkMTc4ZGIwZWJiZjRhM2ZjMGQ5YjZmMDNhODFiNTU3MjIuLmYxZWZhNDE3MGQ2MzczYjFlZjI3
NjU1NjhkZjIxMzliOTYyOGFiYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1NhZmVCcm93c2luZ1dhcm5pbmdDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9TYWZlQnJvd3NpbmdXYXJuaW5nQ29jb2EubW0KQEAgLTczLDEyICs3Mywx
MiBAQCBzdGF0aWMgdm9pZCByZXBsYWNlKE5TTXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcgKnN0cmlu
ZywgTlNTdHJpbmcgKnRvUmVwbGFjZSwgTlNTdAogCiBzdGF0aWMgdm9pZCBhZGRMaW5rQW5kUmVw
bGFjZShOU011dGFibGVBdHRyaWJ1dGVkU3RyaW5nICpzdHJpbmcsIE5TU3RyaW5nICp0b1JlcGxh
Y2UsIE5TU3RyaW5nICpyZXBsYWNlV2l0aCwgTlNVUkwgKmxpbmtUYXJnZXQpCiB7Ci0gICAgTlNN
dXRhYmxlQXR0cmlidXRlZFN0cmluZyAqc3RyaW5nV2l0aExpbmsgPSBbW1tOU011dGFibGVBdHRy
aWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFN0cmluZzpyZXBsYWNlV2l0aF0gYXV0b3JlbGVh
c2VdOworICAgIGF1dG8gc3RyaW5nV2l0aExpbmsgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXR0cmli
dXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhTdHJpbmc6cmVwbGFjZVdpdGhdKTsKICAgICBbc3Ry
aW5nV2l0aExpbmsgYWRkQXR0cmlidXRlczpAewogICAgICAgICBOU0xpbmtBdHRyaWJ1dGVOYW1l
OiBsaW5rVGFyZ2V0LAogICAgICAgICBOU1VuZGVybGluZVN0eWxlQXR0cmlidXRlTmFtZTogQDEK
ICAgICB9IHJhbmdlOk5TTWFrZVJhbmdlKDAsIHJlcGxhY2VXaXRoLmxlbmd0aCldOwotICAgIFtz
dHJpbmcgcmVwbGFjZUNoYXJhY3RlcnNJblJhbmdlOltzdHJpbmcuc3RyaW5nIHJhbmdlT2ZTdHJp
bmc6dG9SZXBsYWNlXSB3aXRoQXR0cmlidXRlZFN0cmluZzpzdHJpbmdXaXRoTGlua107CisgICAg
W3N0cmluZyByZXBsYWNlQ2hhcmFjdGVyc0luUmFuZ2U6W3N0cmluZy5zdHJpbmcgcmFuZ2VPZlN0
cmluZzp0b1JlcGxhY2VdIHdpdGhBdHRyaWJ1dGVkU3RyaW5nOnN0cmluZ1dpdGhMaW5rLmdldCgp
XTsKIH0KIAogc3RhdGljIE5TVVJMICpyZXBvcnRBbkVycm9yVVJMKGNvbnN0IFVSTCYgdXJsLCBT
U0JTZXJ2aWNlTG9va3VwUmVzdWx0ICpyZXN1bHQpCkBAIC0xMjEsMjYgKzEyMSwyNiBAQCBzdGF0
aWMgTlNNdXRhYmxlQXR0cmlidXRlZFN0cmluZyAqc2FmZUJyb3dzaW5nRGV0YWlsc1RleHQoY29u
c3QgVVJMJiB1cmwsIFNTQlNlcgogICAgICAgICBOU1N0cmluZyAqcmVwb3J0QW5FcnJvciA9IFdF
Ql9VSV9OU1NUUklORyhAInJlcG9ydCBhbiBlcnJvciIsICJBY3Rpb24gZnJvbSBzYWZlIGJyb3dz
aW5nIHdhcm5pbmciKTsKICAgICAgICAgTlNTdHJpbmcgKnZpc2l0VW5zYWZlV2Vic2l0ZSA9IFdF
Ql9VSV9OU1NUUklORyhAInZpc2l0IHRoaXMgdW5zYWZlIHdlYnNpdGUiLCAiQWN0aW9uIGZyb20g
c2FmZSBicm93c2luZyB3YXJuaW5nIik7CiAKLSAgICAgICAgTlNNdXRhYmxlQXR0cmlidXRlZFN0
cmluZyAqYXR0cmlidXRlZFN0cmluZyA9IFtbW05TTXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcgYWxs
b2NdIGluaXRXaXRoU3RyaW5nOltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJUAgJUBcblxu
JUAiLCBwaGlzaGluZ0Rlc2NyaXB0aW9uLCBsZWFybk1vcmUsIHBoaXNoaW5nQWN0aW9uc11dIGF1
dG9yZWxlYXNlXTsKLSAgICAgICAgYWRkTGlua0FuZFJlcGxhY2UoYXR0cmlidXRlZFN0cmluZywg
bGVhcm5Nb3JlLCBsZWFybk1vcmUsIGxlYXJuTW9yZVVSTChyZXN1bHQpKTsKLSAgICAgICAgYWRk
TGlua0FuZFJlcGxhY2UoYXR0cmlidXRlZFN0cmluZywgQCIlcmVwb3J0LWFuLWVycm9yJSIsIHJl
cG9ydEFuRXJyb3IsIHJlcG9ydEFuRXJyb3JVUkwodXJsLCByZXN1bHQpKTsKLSAgICAgICAgYWRk
TGlua0FuZFJlcGxhY2UoYXR0cmlidXRlZFN0cmluZywgQCIlYnlwYXNzLWxpbmslIiwgdmlzaXRV
bnNhZmVXZWJzaXRlLCBTYWZlQnJvd3NpbmdXYXJuaW5nOjp2aXNpdFVuc2FmZVdlYnNpdGVTZW50
aW5lbCgpKTsKLSAgICAgICAgcmV0dXJuIGF0dHJpYnV0ZWRTdHJpbmc7CisgICAgICAgIGF1dG8g
YXR0cmlidXRlZFN0cmluZyA9IGFkb3B0TlMoW1tOU011dGFibGVBdHRyaWJ1dGVkU3RyaW5nIGFs
bG9jXSBpbml0V2l0aFN0cmluZzpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIiVAICVAXG5c
biVAIiwgcGhpc2hpbmdEZXNjcmlwdGlvbiwgbGVhcm5Nb3JlLCBwaGlzaGluZ0FjdGlvbnNdXSk7
CisgICAgICAgIGFkZExpbmtBbmRSZXBsYWNlKGF0dHJpYnV0ZWRTdHJpbmcuZ2V0KCksIGxlYXJu
TW9yZSwgbGVhcm5Nb3JlLCBsZWFybk1vcmVVUkwocmVzdWx0KSk7CisgICAgICAgIGFkZExpbmtB
bmRSZXBsYWNlKGF0dHJpYnV0ZWRTdHJpbmcuZ2V0KCksIEAiJXJlcG9ydC1hbi1lcnJvciUiLCBy
ZXBvcnRBbkVycm9yLCByZXBvcnRBbkVycm9yVVJMKHVybCwgcmVzdWx0KSk7CisgICAgICAgIGFk
ZExpbmtBbmRSZXBsYWNlKGF0dHJpYnV0ZWRTdHJpbmcuZ2V0KCksIEAiJWJ5cGFzcy1saW5rJSIs
IHZpc2l0VW5zYWZlV2Vic2l0ZSwgU2FmZUJyb3dzaW5nV2FybmluZzo6dmlzaXRVbnNhZmVXZWJz
aXRlU2VudGluZWwoKSk7CisgICAgICAgIHJldHVybiBhdHRyaWJ1dGVkU3RyaW5nLmF1dG9yZWxl
YXNlKCk7CiAgICAgfQogCiAgICAgYXV0byBtYWx3YXJlT3JVbndhbnRlZFNvZnR3YXJlRGV0YWls
cyA9IFsmXSAoTlNTdHJpbmcgKmRlc2NyaXB0aW9uLCBOU1N0cmluZyAqc3RhdHVzU3RyaW5nVG9S
ZXBsYWNlLCBib29sIGNvbmZpcm1NYWx3YXJlKSB7Ci0gICAgICAgIE5TTXV0YWJsZUF0dHJpYnV0
ZWRTdHJpbmcgKm1hbHdhcmVEZXNjcmlwdGlvbiA9IFtbW05TTXV0YWJsZUF0dHJpYnV0ZWRTdHJp
bmcgYWxsb2NdIGluaXRXaXRoU3RyaW5nOmRlc2NyaXB0aW9uXSBhdXRvcmVsZWFzZV07Ci0gICAg
ICAgIHJlcGxhY2UobWFsd2FyZURlc2NyaXB0aW9uLCBAIiVzYWZlQnJvd3NpbmdQcm92aWRlciUi
LCBsb2NhbGl6ZWRQcm92aWRlcihyZXN1bHQpKTsKKyAgICAgICAgYXV0byBtYWx3YXJlRGVzY3Jp
cHRpb24gPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdp
dGhTdHJpbmc6ZGVzY3JpcHRpb25dKTsKKyAgICAgICAgcmVwbGFjZShtYWx3YXJlRGVzY3JpcHRp
b24uZ2V0KCksIEAiJXNhZmVCcm93c2luZ1Byb3ZpZGVyJSIsIGxvY2FsaXplZFByb3ZpZGVyKHJl
c3VsdCkpOwogICAgICAgICBOU011dGFibGVBdHRyaWJ1dGVkU3RyaW5nICpzdGF0dXNMaW5rID0g
W1tbTlNNdXRhYmxlQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhTdHJpbmc6V0VCX1VJ
X05TU1RSSU5HKEAidGhlIHN0YXR1cyBvZiDigJwlc2l0ZSXigJ0iLCAiUGFydCBvZiBtYWx3YXJl
IGRlc2NyaXB0aW9uIildIGF1dG9yZWxlYXNlXTsKICAgICAgICAgcmVwbGFjZShzdGF0dXNMaW5r
LCBAIiVzaXRlJSIsIHVybC5ob3N0KCkudG9TdHJpbmcoKSk7Ci0gICAgICAgIGFkZExpbmtBbmRS
ZXBsYWNlKG1hbHdhcmVEZXNjcmlwdGlvbiwgc3RhdHVzU3RyaW5nVG9SZXBsYWNlLCBzdGF0dXNM
aW5rLnN0cmluZywgbWFsd2FyZURldGFpbHNVUkwodXJsLCByZXN1bHQpKTsKKyAgICAgICAgYWRk
TGlua0FuZFJlcGxhY2UobWFsd2FyZURlc2NyaXB0aW9uLmdldCgpLCBzdGF0dXNTdHJpbmdUb1Jl
cGxhY2UsIHN0YXR1c0xpbmsuc3RyaW5nLCBtYWx3YXJlRGV0YWlsc1VSTCh1cmwsIHJlc3VsdCkp
OwogCi0gICAgICAgIE5TTXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcgKmlmWW91VW5kZXJzdGFuZCA9
IFtbW05TTXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoU3RyaW5nOldFQl9V
SV9OU1NUUklORyhAIklmIHlvdSB1bmRlcnN0YW5kIHRoZSByaXNrcyBpbnZvbHZlZCwgeW91IGNh
biAldmlzaXQtdGhpcy11bnNhZmUtc2l0ZS1saW5rJS4iLCAiQWN0aW9uIGZyb20gc2FmZSBicm93
c2luZyB3YXJuaW5nIildIGF1dG9yZWxlYXNlXTsKLSAgICAgICAgYWRkTGlua0FuZFJlcGxhY2Uo
aWZZb3VVbmRlcnN0YW5kLCBAIiV2aXNpdC10aGlzLXVuc2FmZS1zaXRlLWxpbmslIiwgV0VCX1VJ
X05TU1RSSU5HKEAidmlzaXQgdGhpcyB1bnNhZmUgd2Vic2l0ZSIsICJBY3Rpb24gZnJvbSBzYWZl
IGJyb3dzaW5nIHdhcm5pbmciKSwgY29uZmlybU1hbHdhcmUgPyBTYWZlQnJvd3NpbmdXYXJuaW5n
Ojpjb25maXJtTWFsd2FyZVNlbnRpbmVsKCkgOiBTYWZlQnJvd3NpbmdXYXJuaW5nOjp2aXNpdFVu
c2FmZVdlYnNpdGVTZW50aW5lbCgpKTsKKyAgICAgICAgYXV0byBpZllvdVVuZGVyc3RhbmQgPSBh
ZG9wdE5TKFtbTlNNdXRhYmxlQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhTdHJpbmc6
V0VCX1VJX05TU1RSSU5HKEAiSWYgeW91IHVuZGVyc3RhbmQgdGhlIHJpc2tzIGludm9sdmVkLCB5
b3UgY2FuICV2aXNpdC10aGlzLXVuc2FmZS1zaXRlLWxpbmslLiIsICJBY3Rpb24gZnJvbSBzYWZl
IGJyb3dzaW5nIHdhcm5pbmciKV0pOworICAgICAgICBhZGRMaW5rQW5kUmVwbGFjZShpZllvdVVu
ZGVyc3RhbmQuZ2V0KCksIEAiJXZpc2l0LXRoaXMtdW5zYWZlLXNpdGUtbGluayUiLCBXRUJfVUlf
TlNTVFJJTkcoQCJ2aXNpdCB0aGlzIHVuc2FmZSB3ZWJzaXRlIiwgIkFjdGlvbiBmcm9tIHNhZmUg
YnJvd3Npbmcgd2FybmluZyIpLCBjb25maXJtTWFsd2FyZSA/IFNhZmVCcm93c2luZ1dhcm5pbmc6
OmNvbmZpcm1NYWx3YXJlU2VudGluZWwoKSA6IFNhZmVCcm93c2luZ1dhcm5pbmc6OnZpc2l0VW5z
YWZlV2Vic2l0ZVNlbnRpbmVsKCkpOwogCi0gICAgICAgIFttYWx3YXJlRGVzY3JpcHRpb24gYXBw
ZW5kQXR0cmlidXRlZFN0cmluZzpbW1tOU011dGFibGVBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBp
bml0V2l0aFN0cmluZzpAIlxuXG4iXSBhdXRvcmVsZWFzZV1dOwotICAgICAgICBbbWFsd2FyZURl
c2NyaXB0aW9uIGFwcGVuZEF0dHJpYnV0ZWRTdHJpbmc6aWZZb3VVbmRlcnN0YW5kXTsKLSAgICAg
ICAgcmV0dXJuIG1hbHdhcmVEZXNjcmlwdGlvbjsKKyAgICAgICAgW21hbHdhcmVEZXNjcmlwdGlv
biBhcHBlbmRBdHRyaWJ1dGVkU3RyaW5nOmFkb3B0TlMoW1tOU011dGFibGVBdHRyaWJ1dGVkU3Ry
aW5nIGFsbG9jXSBpbml0V2l0aFN0cmluZzpAIlxuXG4iXSkuZ2V0KCldOworICAgICAgICBbbWFs
d2FyZURlc2NyaXB0aW9uIGFwcGVuZEF0dHJpYnV0ZWRTdHJpbmc6aWZZb3VVbmRlcnN0YW5kLmdl
dCgpXTsKKyAgICAgICAgcmV0dXJuIG1hbHdhcmVEZXNjcmlwdGlvbi5hdXRvcmVsZWFzZSgpOwog
ICAgIH07CiAKICAgICBpZiAocmVzdWx0LmlzTWFsd2FyZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1N5c3RlbVByZXZpZXdDb250cm9sbGVyQ29jb2EubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TeXN0ZW1QcmV2aWV3Q29udHJvbGxlckNvY29h
Lm1tCmluZGV4IDM3MDVhNDc1YjczZDI1ODAxNzRmZDZiYTQxNGVlNjQ3NTg1MTFlNDMuLmJkNGU2
YmZiNzMxODUwNzU5NWFjNGY4MTA1ZjAzZTc1OWI2ZDFkYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1N5c3RlbVByZXZpZXdDb250cm9sbGVyQ29jb2EubW0KKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU3lzdGVtUHJldmlld0NvbnRyb2xsZXJD
b2NvYS5tbQpAQCAtMjM3LDcgKzIzNyw3IEBAIC0gKFVJSW1hZ2UgKilwcmV2aWV3Q29udHJvbGxl
cjooUUxQcmV2aWV3Q29udHJvbGxlciAqKWNvbnRyb2xsZXIgdHJhbnNpdGlvbkltYWdlCiAgICAg
ICAgIH0KICAgICB9CiAKLSAgICByZXR1cm4gW1tVSUltYWdlIG5ld10gYXV0b3JlbGVhc2VdOwor
ICAgIHJldHVybiBhZG9wdE5TKFtVSUltYWdlIG5ld10pLmF1dG9yZWxlYXNlKCk7CiB9CiAKIEBl
bmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1ZpZGVvRnVsbHNj
cmVlbk1hbmFnZXJQcm94eS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1ZpZGVv
RnVsbHNjcmVlbk1hbmFnZXJQcm94eS5tbQppbmRleCA1YzlmMDM1NzdlMTMwYjQ5MThkNDgzZjBh
NDU2ODNlNTRiOWRhMTUwLi4zODFiYjFiMDQ3MmQxNTNiNDhhYWQyOGY0YzAyYjdkZDJiMzk5MzFk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyUHJveHkubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVmlk
ZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1tCkBAIC02MSw3ICs2MSw3IEBAICsgKENsYXNzKWxh
eWVyQ2xhc3MgewogI2Vsc2UKIC0gKENBTGF5ZXIgKiltYWtlQmFja2luZ0xheWVyCiB7Ci0gICAg
cmV0dXJuIFtbW0NBTGF5ZXJIb3N0IGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07CisgICAgcmV0
dXJuIGFkb3B0TlMoW1tDQUxheWVySG9zdCBhbGxvY10gaW5pdF0pLmF1dG9yZWxlYXNlKCk7CiB9
CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV0tD
b250YWN0UGlja2VyLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV0tDb250YWN0
UGlja2VyLm1tCmluZGV4IGVmMzVkYTI5OTIzYTBkYTY4OTA2Y2Q0MjVlMDExNmM3ZmVlNTlkMjEu
LjkwZDdlYTRkNWFmZDczMzYwYzM2ZWU3NWU4ZGRiOThkYjg0MTg0OGUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dLQ29udGFjdFBpY2tlci5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XS0NvbnRhY3RQaWNrZXIubW0KQEAgLTI2MCwxMiAr
MjYwLDEyIEBAIC0gKE5TQXJyYXk8Q05Db250YWN0Kj4gKilfY29udGFjdHNGcm9tSlNDb250YWN0
czooTlNBcnJheSAqKWpzQ29udGFjdHMKICAgICAgICAgaWYgKCFbanNDb250YWN0IGlzS2luZE9m
Q2xhc3M6W05TRGljdGlvbmFyeSBjbGFzc11dKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAg
ICAgICAgQ05NdXRhYmxlQ29udGFjdCAqY29udGFjdCA9IFtbYWxsb2NDTk11dGFibGVDb250YWN0
SW5zdGFuY2UoKSBpbml0XSBhdXRvcmVsZWFzZV07CisgICAgICAgIGF1dG8gY29udGFjdCA9IGFk
b3B0TlMoW2FsbG9jQ05NdXRhYmxlQ29udGFjdEluc3RhbmNlKCkgaW5pdF0pOwogCiAgICAgICAg
IGlkIG5hbWVzID0gWyhOU0RpY3Rpb25hcnkgKilqc0NvbnRhY3Qgb2JqZWN0Rm9yS2V5OkAibmFt
ZSJdOwogICAgICAgICBpZiAoW25hbWVzIGlzS2luZE9mQ2xhc3M6W05TQXJyYXkgY2xhc3NdXSkg
ewogICAgICAgICAgICAgZm9yIChOU1N0cmluZyAqbmFtZSBpbiBbbmFtZXMgZmlsdGVyZWRBcnJh
eVVzaW5nUHJlZGljYXRlOnN0cmluZ1ZhbHVlUHJlZGljYXRlXSkgewotICAgICAgICAgICAgICAg
IGNvbnRhY3QuZ2l2ZW5OYW1lID0gbmFtZTsKKyAgICAgICAgICAgICAgICBbY29udGFjdCBzZXRH
aXZlbk5hbWU6bmFtZV07CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAg
ICAgICAgIH0KQEAgLTI3Nyw3ICsyNzcsNyBAQCAtIChOU0FycmF5PENOQ29udGFjdCo+ICopX2Nv
bnRhY3RzRnJvbUpTQ29udGFjdHM6KE5TQXJyYXkgKilqc0NvbnRhY3RzCiAgICAgICAgICAgICAg
ICAgQ05MYWJlbGVkVmFsdWU8TlNTdHJpbmcqPiAqbGFiZWxlZFZhbHVlID0gW2dldENOTGFiZWxl
ZFZhbHVlQ2xhc3MoKSBsYWJlbGVkVmFsdWVXaXRoTGFiZWw6bmlsIHZhbHVlOmVtYWlsXTsKICAg
ICAgICAgICAgICAgICBbZW1haWxBZGRyZXNzZXMgYWRkT2JqZWN0OmxhYmVsZWRWYWx1ZV07CiAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICBjb250YWN0LmVtYWlsQWRkcmVzc2VzID0gZW1haWxB
ZGRyZXNzZXM7CisgICAgICAgICAgICBbY29udGFjdCBzZXRFbWFpbEFkZHJlc3NlczplbWFpbEFk
ZHJlc3Nlc107CiAgICAgICAgIH0KIAogICAgICAgICBpZCBwaG9uZU51bWJlcnMgPSBbKE5TRGlj
dGlvbmFyeSAqKWpzQ29udGFjdCBvYmplY3RGb3JLZXk6QCJ0ZWwiXTsKQEAgLTI4OCwxMCArMjg4
LDEwIEBAIC0gKE5TQXJyYXk8Q05Db250YWN0Kj4gKilfY29udGFjdHNGcm9tSlNDb250YWN0czoo
TlNBcnJheSAqKWpzQ29udGFjdHMKICAgICAgICAgICAgICAgICBDTkxhYmVsZWRWYWx1ZTxDTlBo
b25lTnVtYmVyKj4gKmxhYmVsZWRWYWx1ZSA9IFtnZXRDTkxhYmVsZWRWYWx1ZUNsYXNzKCkgbGFi
ZWxlZFZhbHVlV2l0aExhYmVsOm5pbCB2YWx1ZTpjblBob25lTnVtYmVyXTsKICAgICAgICAgICAg
ICAgICBbbnVtYmVycyBhZGRPYmplY3Q6bGFiZWxlZFZhbHVlXTsKICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIGNvbnRhY3QucGhvbmVOdW1iZXJzID0gbnVtYmVyczsKKyAgICAgICAgICAgIFtj
b250YWN0IHNldFBob25lTnVtYmVyczpudW1iZXJzXTsKICAgICAgICAgfQogCi0gICAgICAgIFtj
b250YWN0cyBhZGRPYmplY3Q6Y29udGFjdF07CisgICAgICAgIFtjb250YWN0cyBhZGRPYmplY3Q6
Y29udGFjdC5hdXRvcmVsZWFzZSgpXTsKICAgICB9CiAKICAgICByZXR1cm4gY29udGFjdHM7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XS1NhZmVCcm93c2luZ1dh
cm5pbmcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XS1NhZmVCcm93c2luZ1dh
cm5pbmcubW0KaW5kZXggNzIxNmM5ODEwNDA0OWVmMDJhNTRmODYzY2EzNmVjOWNmNzVlNzQyYS4u
ZjZiYzNhNDYwYjU4Nzg2MjNmYjdlOWYxMDdhNzAyZTU3ZDU1NWNmMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV0tTYWZlQnJvd3NpbmdXYXJuaW5nLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dLU2FmZUJyb3dzaW5nV2FybmluZy5tbQpA
QCAtMjIxLDEzICsyMjEsMTMgQEAgc3RhdGljIEJ1dHRvblR5cGUgKm1ha2VCdXR0b24oV2Fybmlu
Z0l0ZW0gaXRlbSwgV0tTYWZlQnJvd3NpbmdXYXJuaW5nICp3YXJuaW5nLAogICAgIHJldHVybiBb
TlNCdXR0b24gYnV0dG9uV2l0aFRpdGxlOnRpdGxlIHRhcmdldDp3YXJuaW5nIGFjdGlvbjphY3Rp
b25dOwogI2Vsc2UKICAgICBVSUJ1dHRvbiAqYnV0dG9uID0gW1VJQnV0dG9uIGJ1dHRvbldpdGhU
eXBlOlVJQnV0dG9uVHlwZVN5c3RlbV07Ci0gICAgTlNBdHRyaWJ1dGVkU3RyaW5nICphdHRyaWJ1
dGVkVGl0bGUgPSBbW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoU3RyaW5nOnRp
dGxlIGF0dHJpYnV0ZXM6QHsKKyAgICBhdXRvIGF0dHJpYnV0ZWRUaXRsZSA9IGFkb3B0TlMoW1tO
U0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoU3RyaW5nOnRpdGxlIGF0dHJpYnV0ZXM6
QHsKICAgICAgICAgTlNVbmRlcmxpbmVTdHlsZUF0dHJpYnV0ZU5hbWU6QChOU1VuZGVybGluZVN0
eWxlU2luZ2xlKSwKICAgICAgICAgTlNVbmRlcmxpbmVDb2xvckF0dHJpYnV0ZU5hbWU6W1VJQ29s
b3Igd2hpdGVDb2xvcl0sCiAgICAgICAgIE5TRm9yZWdyb3VuZENvbG9yQXR0cmlidXRlTmFtZTpj
b2xvckZvckl0ZW0oaXRlbSwgd2FybmluZyksCiAgICAgICAgIE5TRm9udEF0dHJpYnV0ZU5hbWU6
Zm9udE9mU2l6ZShXYXJuaW5nVGV4dFNpemU6OkJvZHkpCi0gICAgfV0gYXV0b3JlbGVhc2VdOwot
ICAgIFtidXR0b24gc2V0QXR0cmlidXRlZFRpdGxlOmF0dHJpYnV0ZWRUaXRsZSBmb3JTdGF0ZTpV
SUNvbnRyb2xTdGF0ZU5vcm1hbF07CisgICAgfV0pOworICAgIFtidXR0b24gc2V0QXR0cmlidXRl
ZFRpdGxlOmF0dHJpYnV0ZWRUaXRsZS5nZXQoKSBmb3JTdGF0ZTpVSUNvbnRyb2xTdGF0ZU5vcm1h
bF07CiAgICAgW2J1dHRvbiBhZGRUYXJnZXQ6d2FybmluZyBhY3Rpb246YWN0aW9uIGZvckNvbnRy
b2xFdmVudHM6VUlDb250cm9sRXZlbnRUb3VjaFVwSW5zaWRlXTsKICAgICByZXR1cm4gYnV0dG9u
OwogI2VuZGlmCkBAIC0yNDQsMTYgKzI0NCwxNiBAQCBzdGF0aWMgQ0dTaXplIGJ1dHRvblNpemUo
QnV0dG9uVHlwZSAqYnV0dG9uKQogfQogI2VuZGlmCiAKLXN0YXRpYyBWaWV3VHlwZSAqbWFrZUxh
YmVsKE5TQXR0cmlidXRlZFN0cmluZyAqYXR0cmlidXRlZFN0cmluZykKK3N0YXRpYyBSZXRhaW5Q
dHI8Vmlld1R5cGU+IG1ha2VMYWJlbChOU0F0dHJpYnV0ZWRTdHJpbmcgKmF0dHJpYnV0ZWRTdHJp
bmcpCiB7CiAjaWYgUExBVEZPUk0oTUFDKQogICAgIHJldHVybiBbTlNUZXh0RmllbGQgbGFiZWxX
aXRoQXR0cmlidXRlZFN0cmluZzphdHRyaWJ1dGVkU3RyaW5nXTsKICNlbHNlCi0gICAgYXV0byBs
YWJlbCA9IFtbVUlMYWJlbCBuZXddIGF1dG9yZWxlYXNlXTsKLSAgICBsYWJlbC5hdHRyaWJ1dGVk
VGV4dCA9IGF0dHJpYnV0ZWRTdHJpbmc7Ci0gICAgbGFiZWwubGluZUJyZWFrTW9kZSA9IE5TTGlu
ZUJyZWFrQnlXb3JkV3JhcHBpbmc7Ci0gICAgbGFiZWwubnVtYmVyT2ZMaW5lcyA9IDA7Ci0gICAg
bGFiZWwuYWNjZXNzaWJpbGl0eVRyYWl0cyA9IFVJQWNjZXNzaWJpbGl0eVRyYWl0SGVhZGVyOwor
ICAgIGF1dG8gbGFiZWwgPSBhZG9wdE5TKFtVSUxhYmVsIG5ld10pOworICAgIFtsYWJlbCBzZXRB
dHRyaWJ1dGVkVGV4dDphdHRyaWJ1dGVkU3RyaW5nXTsKKyAgICBbbGFiZWwgc2V0TGluZUJyZWFr
TW9kZTpOU0xpbmVCcmVha0J5V29yZFdyYXBwaW5nXTsKKyAgICBbbGFiZWwgc2V0TnVtYmVyT2ZM
aW5lczowXTsKKyAgICBbbGFiZWwgc2V0QWNjZXNzaWJpbGl0eVRyYWl0czpVSUFjY2Vzc2liaWxp
dHlUcmFpdEhlYWRlcl07CiAgICAgcmV0dXJuIGxhYmVsOwogI2VuZGlmCiB9CkBAIC0zMTcsODMg
KzMxNyw4MyBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhGcmFtZTooUmVjdFR5cGUpZnJhbWUg
c2FmZUJyb3dzaW5nV2FybmluZzooY29uc3QgV2ViS2l0OgogCiAtICh2b2lkKWFkZENvbnRlbnQK
IHsKLSAgICBhdXRvIGV4Y2xhbWF0aW9uUG9pbnQgPSBbW1dLU2FmZUJyb3dzaW5nRXhjbGFtYXRp
b25Qb2ludCBuZXddIGF1dG9yZWxlYXNlXTsKLSAgICBhdXRvIHRpdGxlID0gbWFrZUxhYmVsKFtb
W05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhTdHJpbmc6X3dhcm5pbmctPnRpdGxl
KCkgYXR0cmlidXRlczpAeworICAgIGF1dG8gZXhjbGFtYXRpb25Qb2ludCA9IGFkb3B0TlMoW1dL
U2FmZUJyb3dzaW5nRXhjbGFtYXRpb25Qb2ludCBuZXddKTsKKyAgICBhdXRvIHRpdGxlID0gbWFr
ZUxhYmVsKGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoU3RyaW5n
Ol93YXJuaW5nLT50aXRsZSgpIGF0dHJpYnV0ZXM6QHsKICAgICAgICAgTlNGb250QXR0cmlidXRl
TmFtZTpmb250T2ZTaXplKFdhcm5pbmdUZXh0U2l6ZTo6VGl0bGUpLAogICAgICAgICBOU0ZvcmVn
cm91bmRDb2xvckF0dHJpYnV0ZU5hbWU6Y29sb3JGb3JJdGVtKFdhcm5pbmdJdGVtOjpUaXRsZVRl
eHQsIHNlbGYpCiAjaWYgUExBVEZPUk0oV0FUQ0hPUykKICAgICAgICAgLCBOU0h5cGhlbmF0aW9u
RmFjdG9yRG9jdW1lbnRBdHRyaWJ1dGU6QDEKICNlbmRpZgotICAgIH1dIGF1dG9yZWxlYXNlXSk7
Ci0gICAgYXV0byB3YXJuaW5nID0gbWFrZUxhYmVsKFtbW05TQXR0cmlidXRlZFN0cmluZyBhbGxv
Y10gaW5pdFdpdGhTdHJpbmc6X3dhcm5pbmctPndhcm5pbmcoKSBhdHRyaWJ1dGVzOkB7CisgICAg
fV0pLmdldCgpKTsKKyAgICBhdXRvIHdhcm5pbmcgPSBtYWtlTGFiZWwoYWRvcHROUyhbW05TQXR0
cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhTdHJpbmc6X3dhcm5pbmctPndhcm5pbmcoKSBh
dHRyaWJ1dGVzOkB7CiAgICAgICAgIE5TRm9udEF0dHJpYnV0ZU5hbWU6Zm9udE9mU2l6ZShXYXJu
aW5nVGV4dFNpemU6OkJvZHkpLAogICAgICAgICBOU0ZvcmVncm91bmRDb2xvckF0dHJpYnV0ZU5h
bWU6Y29sb3JGb3JJdGVtKFdhcm5pbmdJdGVtOjpNZXNzYWdlVGV4dCwgc2VsZikKICNpZiBQTEFU
Rk9STShXQVRDSE9TKQogICAgICAgICAsIE5TSHlwaGVuYXRpb25GYWN0b3JEb2N1bWVudEF0dHJp
YnV0ZTpAMQogI2VuZGlmCi0gICAgfV0gYXV0b3JlbGVhc2VdKTsKKyAgICB9XSkuZ2V0KCkpOwog
ICAgIGF1dG8gc2hvd0RldGFpbHMgPSBtYWtlQnV0dG9uKFdhcm5pbmdJdGVtOjpTaG93RGV0YWls
c0J1dHRvbiwgc2VsZiwgQHNlbGVjdG9yKHNob3dEZXRhaWxzQ2xpY2tlZCkpOwogICAgIGF1dG8g
Z29CYWNrID0gbWFrZUJ1dHRvbihXYXJuaW5nSXRlbTo6R29CYWNrQnV0dG9uLCBzZWxmLCBAc2Vs
ZWN0b3IoZ29CYWNrQ2xpY2tlZCkpOwotICAgIGF1dG8gYm94ID0gW1tXS1NhZmVCcm93c2luZ0Jv
eCBuZXddIGF1dG9yZWxlYXNlXTsKLSAgICBfYm94ID0gYm94OworICAgIGF1dG8gYm94ID0gYWRv
cHROUyhbV0tTYWZlQnJvd3NpbmdCb3ggbmV3XSk7CisgICAgX2JveCA9IGJveC5nZXQoKTsKICAg
ICBbYm94IHNldFNhZmVCcm93c2luZ0JhY2tncm91bmRDb2xvcjpjb2xvckZvckl0ZW0oV2Fybmlu
Z0l0ZW06OkJveEJhY2tncm91bmQsIHNlbGYpXTsKLSAgICBib3gubGF5ZXIuY29ybmVyUmFkaXVz
ID0gYm94Q29ybmVyUmFkaXVzOworICAgIFtib3ggbGF5ZXJdLmNvcm5lclJhZGl1cyA9IGJveENv
cm5lclJhZGl1czsKIAotICAgIGZvciAoVmlld1R5cGUgKnZpZXcgaW4gQFtleGNsYW1hdGlvblBv
aW50LCB0aXRsZSwgd2FybmluZywgZ29CYWNrLCBzaG93RGV0YWlsc10pIHsKKyAgICBmb3IgKFZp
ZXdUeXBlICp2aWV3IGluIEBbZXhjbGFtYXRpb25Qb2ludC5nZXQoKSwgdGl0bGUuZ2V0KCksIHdh
cm5pbmcuZ2V0KCksIGdvQmFjaywgc2hvd0RldGFpbHNdKSB7CiAgICAgICAgIHZpZXcudHJhbnNs
YXRlc0F1dG9yZXNpemluZ01hc2tJbnRvQ29uc3RyYWludHMgPSBOTzsKICAgICAgICAgW2JveCBh
ZGRTdWJ2aWV3OnZpZXddOwogICAgIH0KLSAgICBib3gudHJhbnNsYXRlc0F1dG9yZXNpemluZ01h
c2tJbnRvQ29uc3RyYWludHMgPSBOTzsKLSAgICBbc2VsZiBhZGRTdWJ2aWV3OmJveF07CisgICAg
W2JveCBzZXRUcmFuc2xhdGVzQXV0b3Jlc2l6aW5nTWFza0ludG9Db25zdHJhaW50czpOT107Cisg
ICAgW3NlbGYgYWRkU3Vidmlldzpib3guZ2V0KCldOwogCiAjaWYgUExBVEZPUk0oV0FUQ0hPUykK
ICAgICBbTlNMYXlvdXRDb25zdHJhaW50IGFjdGl2YXRlQ29uc3RyYWludHM6QFsKLSAgICAgICAg
W1tib3gubGVhZGluZ0FuY2hvciBhbmNob3JXaXRoT2Zmc2V0VG9BbmNob3I6ZXhjbGFtYXRpb25Q
b2ludC5sZWFkaW5nQW5jaG9yXSBjb25zdHJhaW50RXF1YWxUb0FuY2hvcjpbZXhjbGFtYXRpb25Q
b2ludC50cmFpbGluZ0FuY2hvciBhbmNob3JXaXRoT2Zmc2V0VG9BbmNob3I6Ym94LnRyYWlsaW5n
QW5jaG9yXV0sCi0gICAgICAgIFtbYm94LmxlYWRpbmdBbmNob3IgYW5jaG9yV2l0aE9mZnNldFRv
QW5jaG9yOnRpdGxlLmxlYWRpbmdBbmNob3JdIGNvbnN0cmFpbnRFcXVhbFRvQ29uc3RhbnQ6bWFy
Z2luU2l6ZV0sCi0gICAgICAgIFtbdGl0bGUuYm90dG9tQW5jaG9yIGFuY2hvcldpdGhPZmZzZXRU
b0FuY2hvcjp3YXJuaW5nLnRvcEFuY2hvcl0gY29uc3RyYWludEVxdWFsVG9Db25zdGFudDptYXJn
aW5TaXplXSwKLSAgICAgICAgW1tleGNsYW1hdGlvblBvaW50LmJvdHRvbUFuY2hvciBhbmNob3JX
aXRoT2Zmc2V0VG9BbmNob3I6dGl0bGUudG9wQW5jaG9yXSBjb25zdHJhaW50RXF1YWxUb0NvbnN0
YW50Om1hcmdpblNpemVdLAotICAgICAgICBbW2JveC50b3BBbmNob3IgYW5jaG9yV2l0aE9mZnNl
dFRvQW5jaG9yOmV4Y2xhbWF0aW9uUG9pbnQudG9wQW5jaG9yXSBjb25zdHJhaW50RXF1YWxUb0Nv
bnN0YW50Om1hcmdpblNpemUgKyBzZWxmLmZyYW1lLnNpemUuaGVpZ2h0IC8gMl0sCi0gICAgICAg
IFtbc2VsZi50b3BBbmNob3IgYW5jaG9yV2l0aE9mZnNldFRvQW5jaG9yOmJveC50b3BBbmNob3Jd
IGNvbnN0cmFpbnRFcXVhbFRvQW5jaG9yOltib3guYm90dG9tQW5jaG9yIGFuY2hvcldpdGhPZmZz
ZXRUb0FuY2hvcjpzZWxmLmJvdHRvbUFuY2hvcl0gbXVsdGlwbGllcjowLjJdLAorICAgICAgICBb
W1tib3ggbGVhZGluZ0FuY2hvcl0gYW5jaG9yV2l0aE9mZnNldFRvQW5jaG9yOltleGNsYW1hdGlv
blBvaW50IGxlYWRpbmdBbmNob3JdXSBjb25zdHJhaW50RXF1YWxUb0FuY2hvcjpbW2V4Y2xhbWF0
aW9uUG9pbnQgdHJhaWxpbmdBbmNob3JdIGFuY2hvcldpdGhPZmZzZXRUb0FuY2hvcjpbYm94IHRy
YWlsaW5nQW5jaG9yXV1dLAorICAgICAgICBbW1tib3ggbGVhZGluZ0FuY2hvcl0gYW5jaG9yV2l0
aE9mZnNldFRvQW5jaG9yOlt0aXRsZSBsZWFkaW5nQW5jaG9yXV0gY29uc3RyYWludEVxdWFsVG9D
b25zdGFudDptYXJnaW5TaXplXSwKKyAgICAgICAgW1tbdGl0bGUgYm90dG9tQW5jaG9yXSBhbmNo
b3JXaXRoT2Zmc2V0VG9BbmNob3I6W3dhcm5pbmcgdG9wQW5jaG9yXV0gY29uc3RyYWludEVxdWFs
VG9Db25zdGFudDptYXJnaW5TaXplXSwKKyAgICAgICAgW1tbZXhjbGFtYXRpb25Qb2ludCBib3R0
b21BbmNob3JdIGFuY2hvcldpdGhPZmZzZXRUb0FuY2hvcjpbdGl0bGUgdG9wQW5jaG9yXV0gY29u
c3RyYWludEVxdWFsVG9Db25zdGFudDptYXJnaW5TaXplXSwKKyAgICAgICAgW1tbYm94IHRvcEFu
Y2hvcl0gYW5jaG9yV2l0aE9mZnNldFRvQW5jaG9yOltleGNsYW1hdGlvblBvaW50IHRvcEFuY2hv
cl1dIGNvbnN0cmFpbnRFcXVhbFRvQ29uc3RhbnQ6bWFyZ2luU2l6ZSArIHNlbGYuZnJhbWUuc2l6
ZS5oZWlnaHQgLyAyXSwKKyAgICAgICAgW1tzZWxmLnRvcEFuY2hvciBhbmNob3JXaXRoT2Zmc2V0
VG9BbmNob3I6W2JveCB0b3BBbmNob3JdXSBjb25zdHJhaW50RXF1YWxUb0FuY2hvcjpbW2JveCBi
b3R0b21BbmNob3JdIGFuY2hvcldpdGhPZmZzZXRUb0FuY2hvcjpzZWxmLmJvdHRvbUFuY2hvcl0g
bXVsdGlwbGllcjowLjJdLAogICAgIF1dOwogI2VsaWYgSEFWRShTQUZFX0JST1dTSU5HKQogICAg
IFtOU0xheW91dENvbnN0cmFpbnQgYWN0aXZhdGVDb25zdHJhaW50czpAWwotICAgICAgICBbW2Jv
eC5sZWFkaW5nQW5jaG9yIGFuY2hvcldpdGhPZmZzZXRUb0FuY2hvcjpleGNsYW1hdGlvblBvaW50
LmxlYWRpbmdBbmNob3JdIGNvbnN0cmFpbnRFcXVhbFRvQ29uc3RhbnQ6bWFyZ2luU2l6ZV0sCi0g
ICAgICAgIFtbYm94LmxlYWRpbmdBbmNob3IgYW5jaG9yV2l0aE9mZnNldFRvQW5jaG9yOnRpdGxl
LmxlYWRpbmdBbmNob3JdIGNvbnN0cmFpbnRFcXVhbFRvQ29uc3RhbnQ6bWFyZ2luU2l6ZSAqIDEu
NSArIGV4Y2xhbWF0aW9uUG9pbnRTaXplXSwKLSAgICAgICAgW1t0aXRsZS50b3BBbmNob3IgYW5j
aG9yV2l0aE9mZnNldFRvQW5jaG9yOmV4Y2xhbWF0aW9uUG9pbnQudG9wQW5jaG9yXSBjb25zdHJh
aW50RXF1YWxUb0FuY2hvcjpbZXhjbGFtYXRpb25Qb2ludC5ib3R0b21BbmNob3IgYW5jaG9yV2l0
aE9mZnNldFRvQW5jaG9yOnRpdGxlLmJvdHRvbUFuY2hvcl1dLAotICAgICAgICBbW3RpdGxlLmJv
dHRvbUFuY2hvciBhbmNob3JXaXRoT2Zmc2V0VG9BbmNob3I6d2FybmluZy50b3BBbmNob3JdIGNv
bnN0cmFpbnRFcXVhbFRvQ29uc3RhbnQ6bWFyZ2luU2l6ZV0sCi0gICAgICAgIFtbYm94LnRvcEFu
Y2hvciBhbmNob3JXaXRoT2Zmc2V0VG9BbmNob3I6dGl0bGUudG9wQW5jaG9yXSBjb25zdHJhaW50
RXF1YWxUb0NvbnN0YW50Om1hcmdpblNpemVdLAotICAgICAgICBbW3NlbGYudG9wQW5jaG9yIGFu
Y2hvcldpdGhPZmZzZXRUb0FuY2hvcjpib3gudG9wQW5jaG9yXSBjb25zdHJhaW50RXF1YWxUb0Fu
Y2hvcjpbYm94LmJvdHRvbUFuY2hvciBhbmNob3JXaXRoT2Zmc2V0VG9BbmNob3I6c2VsZi5ib3R0
b21BbmNob3JdIG11bHRpcGxpZXI6MC41XSwKKyAgICAgICAgW1tbYm94IGxlYWRpbmdBbmNob3Jd
IGFuY2hvcldpdGhPZmZzZXRUb0FuY2hvcjpbZXhjbGFtYXRpb25Qb2ludCBsZWFkaW5nQW5jaG9y
XV0gY29uc3RyYWludEVxdWFsVG9Db25zdGFudDptYXJnaW5TaXplXSwKKyAgICAgICAgW1tbYm94
IGxlYWRpbmdBbmNob3JdIGFuY2hvcldpdGhPZmZzZXRUb0FuY2hvcjpbdGl0bGUgbGVhZGluZ0Fu
Y2hvcl1dIGNvbnN0cmFpbnRFcXVhbFRvQ29uc3RhbnQ6bWFyZ2luU2l6ZSAqIDEuNSArIGV4Y2xh
bWF0aW9uUG9pbnRTaXplXSwKKyAgICAgICAgW1tbdGl0bGUgdG9wQW5jaG9yXSBhbmNob3JXaXRo
T2Zmc2V0VG9BbmNob3I6W2V4Y2xhbWF0aW9uUG9pbnQgdG9wQW5jaG9yXV0gY29uc3RyYWludEVx
dWFsVG9BbmNob3I6W1tleGNsYW1hdGlvblBvaW50IGJvdHRvbUFuY2hvcl0gYW5jaG9yV2l0aE9m
ZnNldFRvQW5jaG9yOlt0aXRsZSBib3R0b21BbmNob3JdXV0sCisgICAgICAgIFtbW3RpdGxlIGJv
dHRvbUFuY2hvcl0gYW5jaG9yV2l0aE9mZnNldFRvQW5jaG9yOlt3YXJuaW5nIHRvcEFuY2hvcl1d
IGNvbnN0cmFpbnRFcXVhbFRvQ29uc3RhbnQ6bWFyZ2luU2l6ZV0sCisgICAgICAgIFtbW2JveCB0
b3BBbmNob3JdIGFuY2hvcldpdGhPZmZzZXRUb0FuY2hvcjpbdGl0bGUgdG9wQW5jaG9yXV0gY29u
c3RyYWludEVxdWFsVG9Db25zdGFudDptYXJnaW5TaXplXSwKKyAgICAgICAgW1tzZWxmLnRvcEFu
Y2hvciBhbmNob3JXaXRoT2Zmc2V0VG9BbmNob3I6W2JveCB0b3BBbmNob3JdXSBjb25zdHJhaW50
RXF1YWxUb0FuY2hvcjpbW2JveCBib3R0b21BbmNob3JdIGFuY2hvcldpdGhPZmZzZXRUb0FuY2hv
cjpzZWxmLmJvdHRvbUFuY2hvcl0gbXVsdGlwbGllcjowLjVdLAogICAgIF1dOwogI2VuZGlmCiAK
ICNpZiBIQVZFKFNBRkVfQlJPV1NJTkcpCiAgICAgW05TTGF5b3V0Q29uc3RyYWludCBhY3RpdmF0
ZUNvbnN0cmFpbnRzOkBbCi0gICAgICAgIFtbc2VsZi5sZWZ0QW5jaG9yIGFuY2hvcldpdGhPZmZz
ZXRUb0FuY2hvcjpib3gubGVmdEFuY2hvcl0gY29uc3RyYWludEVxdWFsVG9BbmNob3I6W2JveC5y
aWdodEFuY2hvciBhbmNob3JXaXRoT2Zmc2V0VG9BbmNob3I6c2VsZi5yaWdodEFuY2hvcl1dLAor
ICAgICAgICBbW3NlbGYubGVmdEFuY2hvciBhbmNob3JXaXRoT2Zmc2V0VG9BbmNob3I6W2JveCBs
ZWZ0QW5jaG9yXV0gY29uc3RyYWludEVxdWFsVG9BbmNob3I6W1tib3ggcmlnaHRBbmNob3JdIGFu
Y2hvcldpdGhPZmZzZXRUb0FuY2hvcjpzZWxmLnJpZ2h0QW5jaG9yXV0sCiAKLSAgICAgICAgW2Jv
eC53aWR0aEFuY2hvciBjb25zdHJhaW50TGVzc1RoYW5PckVxdWFsVG9Db25zdGFudDptYXhXaWR0
aF0sCi0gICAgICAgIFtib3gud2lkdGhBbmNob3IgY29uc3RyYWludExlc3NUaGFuT3JFcXVhbFRv
QW5jaG9yOnNlbGYud2lkdGhBbmNob3JdLAorICAgICAgICBbW2JveCB3aWR0aEFuY2hvcl0gY29u
c3RyYWludExlc3NUaGFuT3JFcXVhbFRvQ29uc3RhbnQ6bWF4V2lkdGhdLAorICAgICAgICBbW2Jv
eCB3aWR0aEFuY2hvcl0gY29uc3RyYWludExlc3NUaGFuT3JFcXVhbFRvQW5jaG9yOnNlbGYud2lk
dGhBbmNob3JdLAogCi0gICAgICAgIFtbYm94LmxlYWRpbmdBbmNob3IgYW5jaG9yV2l0aE9mZnNl
dFRvQW5jaG9yOndhcm5pbmcubGVhZGluZ0FuY2hvcl0gY29uc3RyYWludEVxdWFsVG9Db25zdGFu
dDptYXJnaW5TaXplXSwKKyAgICAgICAgW1tbYm94IGxlYWRpbmdBbmNob3JdIGFuY2hvcldpdGhP
ZmZzZXRUb0FuY2hvcjpbd2FybmluZyBsZWFkaW5nQW5jaG9yXV0gY29uc3RyYWludEVxdWFsVG9D
b25zdGFudDptYXJnaW5TaXplXSwKIAotICAgICAgICBbW3RpdGxlLnRyYWlsaW5nQW5jaG9yIGFu
Y2hvcldpdGhPZmZzZXRUb0FuY2hvcjpib3gudHJhaWxpbmdBbmNob3JdIGNvbnN0cmFpbnRHcmVh
dGVyVGhhbk9yRXF1YWxUb0NvbnN0YW50Om1hcmdpblNpemVdLAotICAgICAgICBbW3dhcm5pbmcu
dHJhaWxpbmdBbmNob3IgYW5jaG9yV2l0aE9mZnNldFRvQW5jaG9yOmJveC50cmFpbGluZ0FuY2hv
cl0gY29uc3RyYWludEdyZWF0ZXJUaGFuT3JFcXVhbFRvQ29uc3RhbnQ6bWFyZ2luU2l6ZV0sCi0g
ICAgICAgIFtbZ29CYWNrLnRyYWlsaW5nQW5jaG9yIGFuY2hvcldpdGhPZmZzZXRUb0FuY2hvcjpi
b3gudHJhaWxpbmdBbmNob3JdIGNvbnN0cmFpbnRFcXVhbFRvQ29uc3RhbnQ6bWFyZ2luU2l6ZV0s
CisgICAgICAgIFtbW3RpdGxlIHRyYWlsaW5nQW5jaG9yXSBhbmNob3JXaXRoT2Zmc2V0VG9BbmNo
b3I6W2JveCB0cmFpbGluZ0FuY2hvcl1dIGNvbnN0cmFpbnRHcmVhdGVyVGhhbk9yRXF1YWxUb0Nv
bnN0YW50Om1hcmdpblNpemVdLAorICAgICAgICBbW1t3YXJuaW5nIHRyYWlsaW5nQW5jaG9yXSBh
bmNob3JXaXRoT2Zmc2V0VG9BbmNob3I6W2JveCB0cmFpbGluZ0FuY2hvcl1dIGNvbnN0cmFpbnRH
cmVhdGVyVGhhbk9yRXF1YWxUb0NvbnN0YW50Om1hcmdpblNpemVdLAorICAgICAgICBbW2dvQmFj
ay50cmFpbGluZ0FuY2hvciBhbmNob3JXaXRoT2Zmc2V0VG9BbmNob3I6W2JveCB0cmFpbGluZ0Fu
Y2hvcl1dIGNvbnN0cmFpbnRFcXVhbFRvQ29uc3RhbnQ6bWFyZ2luU2l6ZV0sCiAKLSAgICAgICAg
W1t3YXJuaW5nLmJvdHRvbUFuY2hvciBhbmNob3JXaXRoT2Zmc2V0VG9BbmNob3I6Z29CYWNrLnRv
cEFuY2hvcl0gY29uc3RyYWludEVxdWFsVG9Db25zdGFudDptYXJnaW5TaXplXSwKKyAgICAgICAg
W1tbd2FybmluZyBib3R0b21BbmNob3JdIGFuY2hvcldpdGhPZmZzZXRUb0FuY2hvcjpnb0JhY2su
dG9wQW5jaG9yXSBjb25zdHJhaW50RXF1YWxUb0NvbnN0YW50Om1hcmdpblNpemVdLAogICAgIF1d
OwogICAgIAogICAgIGJvb2wgbmVlZHNWZXJ0aWNhbEJ1dHRvbkxheW91dCA9IGJ1dHRvblNpemUo
c2hvd0RldGFpbHMpLndpZHRoICsgYnV0dG9uU2l6ZShnb0JhY2spLndpZHRoICsgMyAqIG1hcmdp
blNpemUgPiBzZWxmLmZyYW1lLnNpemUud2lkdGg7CiAgICAgaWYgKG5lZWRzVmVydGljYWxCdXR0
b25MYXlvdXQpIHsKICAgICAgICAgW05TTGF5b3V0Q29uc3RyYWludCBhY3RpdmF0ZUNvbnN0cmFp
bnRzOkBbCi0gICAgICAgICAgICBbW3Nob3dEZXRhaWxzLnRyYWlsaW5nQW5jaG9yIGFuY2hvcldp
dGhPZmZzZXRUb0FuY2hvcjpib3gudHJhaWxpbmdBbmNob3JdIGNvbnN0cmFpbnRFcXVhbFRvQ29u
c3RhbnQ6bWFyZ2luU2l6ZV0sCisgICAgICAgICAgICBbW3Nob3dEZXRhaWxzLnRyYWlsaW5nQW5j
aG9yIGFuY2hvcldpdGhPZmZzZXRUb0FuY2hvcjpbYm94IHRyYWlsaW5nQW5jaG9yXV0gY29uc3Ry
YWludEVxdWFsVG9Db25zdGFudDptYXJnaW5TaXplXSwKICAgICAgICAgICAgIFtbZ29CYWNrLmJv
dHRvbUFuY2hvciBhbmNob3JXaXRoT2Zmc2V0VG9BbmNob3I6c2hvd0RldGFpbHMudG9wQW5jaG9y
XSBjb25zdHJhaW50RXF1YWxUb0NvbnN0YW50Om1hcmdpblNpemVdLAotICAgICAgICAgICAgW1tn
b0JhY2suYm90dG9tQW5jaG9yIGFuY2hvcldpdGhPZmZzZXRUb0FuY2hvcjpib3guYm90dG9tQW5j
aG9yXSBjb25zdHJhaW50RXF1YWxUb0NvbnN0YW50Om1hcmdpblNpemUgKiAyICsgYnV0dG9uU2l6
ZShzaG93RGV0YWlscykuaGVpZ2h0XSwKKyAgICAgICAgICAgIFtbZ29CYWNrLmJvdHRvbUFuY2hv
ciBhbmNob3JXaXRoT2Zmc2V0VG9BbmNob3I6W2JveCBib3R0b21BbmNob3JdXSBjb25zdHJhaW50
RXF1YWxUb0NvbnN0YW50Om1hcmdpblNpemUgKiAyICsgYnV0dG9uU2l6ZShzaG93RGV0YWlscyku
aGVpZ2h0XSwKICAgICAgICAgXV07CiAgICAgfSBlbHNlIHsKICAgICAgICAgW05TTGF5b3V0Q29u
c3RyYWludCBhY3RpdmF0ZUNvbnN0cmFpbnRzOkBbCiAgICAgICAgICAgICBbW3Nob3dEZXRhaWxz
LnRyYWlsaW5nQW5jaG9yIGFuY2hvcldpdGhPZmZzZXRUb0FuY2hvcjpnb0JhY2subGVhZGluZ0Fu
Y2hvcl0gY29uc3RyYWludEVxdWFsVG9Db25zdGFudDptYXJnaW5TaXplXSwKICAgICAgICAgICAg
IFtnb0JhY2sudG9wQW5jaG9yIGNvbnN0cmFpbnRFcXVhbFRvQW5jaG9yOnNob3dEZXRhaWxzLnRv
cEFuY2hvcl0sCi0gICAgICAgICAgICBbW2dvQmFjay5ib3R0b21BbmNob3IgYW5jaG9yV2l0aE9m
ZnNldFRvQW5jaG9yOmJveC5ib3R0b21BbmNob3JdIGNvbnN0cmFpbnRFcXVhbFRvQ29uc3RhbnQ6
bWFyZ2luU2l6ZV0sCisgICAgICAgICAgICBbW2dvQmFjay5ib3R0b21BbmNob3IgYW5jaG9yV2l0
aE9mZnNldFRvQW5jaG9yOltib3ggYm90dG9tQW5jaG9yXV0gY29uc3RyYWludEVxdWFsVG9Db25z
dGFudDptYXJnaW5TaXplXSwKICAgICAgICAgXV07CiAgICAgfQogI2lmICFQTEFURk9STShNQUMp
CkBAIC00MTMsNDcgKzQxMyw0NyBAQCAtICh2b2lkKXNob3dEZXRhaWxzQ2xpY2tlZAogICAgIEJ1
dHRvblR5cGUgKnNob3dEZXRhaWxzID0gYm94LnN1YnZpZXdzLmxhc3RPYmplY3Q7CiAgICAgW3No
b3dEZXRhaWxzIHJlbW92ZUZyb21TdXBlcnZpZXddOwogCi0gICAgTlNNdXRhYmxlQXR0cmlidXRl
ZFN0cmluZyAqdGV4dCA9IFtbX3dhcm5pbmctPmRldGFpbHMoKSBtdXRhYmxlQ29weV0gYXV0b3Jl
bGVhc2VdOwotICAgIFt0ZXh0IGFkZEF0dHJpYnV0ZXM6QHsgTlNGb250QXR0cmlidXRlTmFtZTpm
b250T2ZTaXplKFdhcm5pbmdUZXh0U2l6ZTo6Qm9keSkgfSByYW5nZTpOU01ha2VSYW5nZSgwLCB0
ZXh0Lmxlbmd0aCldOwotICAgIFdLU2FmZUJyb3dzaW5nVGV4dFZpZXcgKmRldGFpbHMgPSBbW1tX
S1NhZmVCcm93c2luZ1RleHRWaWV3IGFsbG9jXSBpbml0V2l0aEF0dHJpYnV0ZWRTdHJpbmc6dGV4
dCBmb3JXYXJuaW5nOnNlbGZdIGF1dG9yZWxlYXNlXTsKLSAgICBfZGV0YWlscyA9IGRldGFpbHM7
Ci0gICAgV0tTYWZlQnJvd3NpbmdCb3ggKmJvdHRvbSA9IFtbV0tTYWZlQnJvd3NpbmdCb3ggbmV3
XSBhdXRvcmVsZWFzZV07CisgICAgYXV0byB0ZXh0ID0gYWRvcHROUyhbX3dhcm5pbmctPmRldGFp
bHMoKSBtdXRhYmxlQ29weV0pOworICAgIFt0ZXh0IGFkZEF0dHJpYnV0ZXM6QHsgTlNGb250QXR0
cmlidXRlTmFtZTpmb250T2ZTaXplKFdhcm5pbmdUZXh0U2l6ZTo6Qm9keSkgfSByYW5nZTpOU01h
a2VSYW5nZSgwLCBbdGV4dCBsZW5ndGhdKV07CisgICAgYXV0byBkZXRhaWxzID0gYWRvcHROUyhb
W1dLU2FmZUJyb3dzaW5nVGV4dFZpZXcgYWxsb2NdIGluaXRXaXRoQXR0cmlidXRlZFN0cmluZzp0
ZXh0LmdldCgpIGZvcldhcm5pbmc6c2VsZl0pOworICAgIF9kZXRhaWxzID0gZGV0YWlscy5nZXQo
KTsKKyAgICBhdXRvIGJvdHRvbSA9IGFkb3B0TlMoW1dLU2FmZUJyb3dzaW5nQm94IG5ld10pOwog
ICAgIFtib3R0b20gc2V0U2FmZUJyb3dzaW5nQmFja2dyb3VuZENvbG9yOmNvbG9yRm9ySXRlbShX
YXJuaW5nSXRlbTo6Qm94QmFja2dyb3VuZCwgc2VsZildOwotICAgIGJvdHRvbS5sYXllci5jb3Ju
ZXJSYWRpdXMgPSBib3hDb3JuZXJSYWRpdXM7CisgICAgW2JvdHRvbSBsYXllcl0uY29ybmVyUmFk
aXVzID0gYm94Q29ybmVyUmFkaXVzOwogCiAjaWYgSEFWRShTQUZFX0JST1dTSU5HKQogICAgIGNv
bnN0ZXhwciBhdXRvIG1heFkgPSBrQ0FMYXllck1pblhNYXhZQ29ybmVyIHwga0NBTGF5ZXJNYXhY
TWF4WUNvcm5lcjsKICAgICBjb25zdGV4cHIgYXV0byBtaW5ZID0ga0NBTGF5ZXJNaW5YTWluWUNv
cm5lciB8IGtDQUxheWVyTWF4WE1pbllDb3JuZXI7CiAjaWYgUExBVEZPUk0oTUFDKQogICAgIGJv
eC5sYXllci5tYXNrZWRDb3JuZXJzID0gbWF4WTsKLSAgICBib3R0b20ubGF5ZXIubWFza2VkQ29y
bmVycyA9IG1pblk7CisgICAgW2JvdHRvbSBsYXllcl0ubWFza2VkQ29ybmVycyA9IG1pblk7CiAj
ZWxzZQogICAgIGJveC5sYXllci5tYXNrZWRDb3JuZXJzID0gbWluWTsKLSAgICBib3R0b20ubGF5
ZXIubWFza2VkQ29ybmVycyA9IG1heFk7CisgICAgW2JvdHRvbSBsYXllcl0ubWFza2VkQ29ybmVy
cyA9IG1heFk7CiAjZW5kaWYKICNlbmRpZgogCi0gICAgV0tTYWZlQnJvd3NpbmdCb3ggKmxpbmUg
PSBbW1dLU2FmZUJyb3dzaW5nQm94IG5ld10gYXV0b3JlbGVhc2VdOworICAgIGF1dG8gbGluZSA9
IGFkb3B0TlMoW1dLU2FmZUJyb3dzaW5nQm94IG5ld10pOwogICAgIFtsaW5lIHNldFNhZmVCcm93
c2luZ0JhY2tncm91bmRDb2xvcjpbQ29jb2FDb2xvciBsaWdodEdyYXlDb2xvcl1dOwotICAgIGZv
ciAoVmlld1R5cGUgKnZpZXcgaW4gQFtkZXRhaWxzLCBib3R0b20sIGxpbmVdKQorICAgIGZvciAo
Vmlld1R5cGUgKnZpZXcgaW4gQFtkZXRhaWxzLmdldCgpLCBib3R0b20uZ2V0KCksIGxpbmUuZ2V0
KCldKQogICAgICAgICB2aWV3LnRyYW5zbGF0ZXNBdXRvcmVzaXppbmdNYXNrSW50b0NvbnN0cmFp
bnRzID0gTk87CiAKLSAgICBbc2VsZiBhZGRTdWJ2aWV3OmJvdHRvbV07Ci0gICAgW2JvdHRvbSBh
ZGRTdWJ2aWV3OmxpbmVdOwotICAgIFtib3R0b20gYWRkU3VidmlldzpkZXRhaWxzXTsKKyAgICBb
c2VsZiBhZGRTdWJ2aWV3OmJvdHRvbS5nZXQoKV07CisgICAgW2JvdHRvbSBhZGRTdWJ2aWV3Omxp
bmUuZ2V0KCldOworICAgIFtib3R0b20gYWRkU3VidmlldzpkZXRhaWxzLmdldCgpXTsKICNpZiBI
QVZFKFNBRkVfQlJPV1NJTkcpCiAgICAgW05TTGF5b3V0Q29uc3RyYWludCBhY3RpdmF0ZUNvbnN0
cmFpbnRzOkBbCi0gICAgICAgIFtib3gud2lkdGhBbmNob3IgY29uc3RyYWludEVxdWFsVG9BbmNo
b3I6Ym90dG9tLndpZHRoQW5jaG9yXSwKLSAgICAgICAgW2JveC5ib3R0b21BbmNob3IgY29uc3Ry
YWludEVxdWFsVG9BbmNob3I6Ym90dG9tLnRvcEFuY2hvcl0sCi0gICAgICAgIFtib3gubGVhZGlu
Z0FuY2hvciBjb25zdHJhaW50RXF1YWxUb0FuY2hvcjpib3R0b20ubGVhZGluZ0FuY2hvcl0sCi0g
ICAgICAgIFtsaW5lLndpZHRoQW5jaG9yIGNvbnN0cmFpbnRFcXVhbFRvQW5jaG9yOmJvdHRvbS53
aWR0aEFuY2hvcl0sCi0gICAgICAgIFtsaW5lLmxlYWRpbmdBbmNob3IgY29uc3RyYWludEVxdWFs
VG9BbmNob3I6Ym90dG9tLmxlYWRpbmdBbmNob3JdLAotICAgICAgICBbbGluZS50b3BBbmNob3Ig
Y29uc3RyYWludEVxdWFsVG9BbmNob3I6Ym90dG9tLnRvcEFuY2hvcl0sCi0gICAgICAgIFtsaW5l
LmhlaWdodEFuY2hvciBjb25zdHJhaW50RXF1YWxUb0NvbnN0YW50OjFdLAotICAgICAgICBbW2Jv
dHRvbS50b3BBbmNob3IgYW5jaG9yV2l0aE9mZnNldFRvQW5jaG9yOmRldGFpbHMudG9wQW5jaG9y
XSBjb25zdHJhaW50RXF1YWxUb0NvbnN0YW50Om1hcmdpblNpemVdLAotICAgICAgICBbW2RldGFp
bHMuYm90dG9tQW5jaG9yIGFuY2hvcldpdGhPZmZzZXRUb0FuY2hvcjpib3R0b20uYm90dG9tQW5j
aG9yXSBjb25zdHJhaW50RXF1YWxUb0NvbnN0YW50Om1hcmdpblNpemVdLAotICAgICAgICBbW2Jv
dHRvbS5sZWFkaW5nQW5jaG9yIGFuY2hvcldpdGhPZmZzZXRUb0FuY2hvcjpkZXRhaWxzLmxlYWRp
bmdBbmNob3JdIGNvbnN0cmFpbnRFcXVhbFRvQ29uc3RhbnQ6bWFyZ2luU2l6ZV0sCi0gICAgICAg
IFtbZGV0YWlscy50cmFpbGluZ0FuY2hvciBhbmNob3JXaXRoT2Zmc2V0VG9BbmNob3I6Ym90dG9t
LnRyYWlsaW5nQW5jaG9yXSBjb25zdHJhaW50RXF1YWxUb0NvbnN0YW50Om1hcmdpblNpemVdLAor
ICAgICAgICBbYm94LndpZHRoQW5jaG9yIGNvbnN0cmFpbnRFcXVhbFRvQW5jaG9yOltib3R0b20g
d2lkdGhBbmNob3JdXSwKKyAgICAgICAgW2JveC5ib3R0b21BbmNob3IgY29uc3RyYWludEVxdWFs
VG9BbmNob3I6W2JvdHRvbSB0b3BBbmNob3JdXSwKKyAgICAgICAgW2JveC5sZWFkaW5nQW5jaG9y
IGNvbnN0cmFpbnRFcXVhbFRvQW5jaG9yOltib3R0b20gbGVhZGluZ0FuY2hvcl1dLAorICAgICAg
ICBbW2xpbmUgd2lkdGhBbmNob3JdIGNvbnN0cmFpbnRFcXVhbFRvQW5jaG9yOltib3R0b20gd2lk
dGhBbmNob3JdXSwKKyAgICAgICAgW1tsaW5lIGxlYWRpbmdBbmNob3JdIGNvbnN0cmFpbnRFcXVh
bFRvQW5jaG9yOltib3R0b20gbGVhZGluZ0FuY2hvcl1dLAorICAgICAgICBbW2xpbmUgdG9wQW5j
aG9yXSBjb25zdHJhaW50RXF1YWxUb0FuY2hvcjpbYm90dG9tIHRvcEFuY2hvcl1dLAorICAgICAg
ICBbW2xpbmUgaGVpZ2h0QW5jaG9yXSBjb25zdHJhaW50RXF1YWxUb0NvbnN0YW50OjFdLAorICAg
ICAgICBbW1tib3R0b20gdG9wQW5jaG9yXSBhbmNob3JXaXRoT2Zmc2V0VG9BbmNob3I6W2RldGFp
bHMgdG9wQW5jaG9yXV0gY29uc3RyYWludEVxdWFsVG9Db25zdGFudDptYXJnaW5TaXplXSwKKyAg
ICAgICAgW1tbZGV0YWlscyBib3R0b21BbmNob3JdIGFuY2hvcldpdGhPZmZzZXRUb0FuY2hvcjpb
Ym90dG9tIGJvdHRvbUFuY2hvcl1dIGNvbnN0cmFpbnRFcXVhbFRvQ29uc3RhbnQ6bWFyZ2luU2l6
ZV0sCisgICAgICAgIFtbW2JvdHRvbSBsZWFkaW5nQW5jaG9yXSBhbmNob3JXaXRoT2Zmc2V0VG9B
bmNob3I6W2RldGFpbHMgbGVhZGluZ0FuY2hvcl1dIGNvbnN0cmFpbnRFcXVhbFRvQ29uc3RhbnQ6
bWFyZ2luU2l6ZV0sCisgICAgICAgIFtbW2RldGFpbHMgdHJhaWxpbmdBbmNob3JdIGFuY2hvcldp
dGhPZmZzZXRUb0FuY2hvcjpbYm90dG9tIHRyYWlsaW5nQW5jaG9yXV0gY29uc3RyYWludEVxdWFs
VG9Db25zdGFudDptYXJnaW5TaXplXSwKICAgICBdXTsKICNlbmRpZgogICAgIFtzZWxmIGxheW91
dFRleHRdOwpAQCAtNTcwLDExICs1NzAsMTEgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoQXR0
cmlidXRlZFN0cmluZzooTlNBdHRyaWJ1dGVkU3RyaW5nICopYXR0cmlidXRlZFN0cmluZwogICAg
IHNlbGYuZGVsZWdhdGUgPSB3YXJuaW5nOwogCiAgICAgQ29jb2FDb2xvciAqZm9yZWdyb3VuZENv
bG9yID0gY29sb3JGb3JJdGVtKFdhcm5pbmdJdGVtOjpNZXNzYWdlVGV4dCwgd2FybmluZyk7Ci0g
ICAgTlNNdXRhYmxlQXR0cmlidXRlZFN0cmluZyAqc3RyaW5nID0gW1thdHRyaWJ1dGVkU3RyaW5n
IG11dGFibGVDb3B5XSBhdXRvcmVsZWFzZV07Ci0gICAgW3N0cmluZyBhZGRBdHRyaWJ1dGVzOkB7
IE5TRm9yZWdyb3VuZENvbG9yQXR0cmlidXRlTmFtZSA6IGZvcmVncm91bmRDb2xvciB9IHJhbmdl
Ok5TTWFrZVJhbmdlKDAsIHN0cmluZy5sZW5ndGgpXTsKKyAgICBhdXRvIHN0cmluZyA9IGFkb3B0
TlMoW2F0dHJpYnV0ZWRTdHJpbmcgbXV0YWJsZUNvcHldKTsKKyAgICBbc3RyaW5nIGFkZEF0dHJp
YnV0ZXM6QHsgTlNGb3JlZ3JvdW5kQ29sb3JBdHRyaWJ1dGVOYW1lIDogZm9yZWdyb3VuZENvbG9y
IH0gcmFuZ2U6TlNNYWtlUmFuZ2UoMCwgW3N0cmluZyBsZW5ndGhdKV07CiAgICAgW3NlbGYgc2V0
QmFja2dyb3VuZENvbG9yOmNvbG9yRm9ySXRlbShXYXJuaW5nSXRlbTo6Qm94QmFja2dyb3VuZCwg
d2FybmluZyldOwogICAgIFtzZWxmIHNldExpbmtUZXh0QXR0cmlidXRlczpAeyBOU0ZvcmVncm91
bmRDb2xvckF0dHJpYnV0ZU5hbWUgOiBmb3JlZ3JvdW5kQ29sb3IgfV07Ci0gICAgW3NlbGYudGV4
dFN0b3JhZ2UgYXBwZW5kQXR0cmlidXRlZFN0cmluZzpzdHJpbmddOworICAgIFtzZWxmLnRleHRT
dG9yYWdlIGFwcGVuZEF0dHJpYnV0ZWRTdHJpbmc6c3RyaW5nLmdldCgpXTsKICAgICBzZWxmLmVk
aXRhYmxlID0gTk87CiAjaWYgIVBMQVRGT1JNKE1BQykKICAgICBzZWxmLnNjcm9sbEVuYWJsZWQg
PSBOTzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJ
bXBsLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KaW5k
ZXggMWJmOTA4NGM1M2ZlZDVlYjYzMTk2ODQ2NjdiM2FiODI3NGI3YjhkZC4uOTBlYjRkYmRkYzBm
YTc4MzNlMjhhOGYzZjEyNmRjZjkwNzgzMWU5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvV2ViVmlld0ltcGwubW0KQEAgLTI3NTksNyArMjc1OSw3IEBAIE5TVmlldyAqV2Vi
Vmlld0ltcGw6OmZ1bGxTY3JlZW5QbGFjZWhvbGRlclZpZXcoKQogTlNXaW5kb3cgKldlYlZpZXdJ
bXBsOjpmdWxsU2NyZWVuV2luZG93KCkKIHsKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCi0g
ICAgcmV0dXJuIFtbW1dlYkNvcmVGdWxsU2NyZWVuV2luZG93IGFsbG9jXSBpbml0V2l0aENvbnRl
bnRSZWN0OltbTlNTY3JlZW4gbWFpblNjcmVlbl0gZnJhbWVdIHN0eWxlTWFzazooTlNXaW5kb3dT
dHlsZU1hc2tUaXRsZWQgfCBOU1dpbmRvd1N0eWxlTWFza1VuaWZpZWRUaXRsZUFuZFRvb2xiYXIg
fCBOU1dpbmRvd1N0eWxlTWFza0Z1bGxTaXplQ29udGVudFZpZXcgfCBOU1dpbmRvd1N0eWxlTWFz
a1Jlc2l6YWJsZSkgYmFja2luZzpOU0JhY2tpbmdTdG9yZUJ1ZmZlcmVkIGRlZmVyOk5PXSBhdXRv
cmVsZWFzZV07CisgICAgcmV0dXJuIGFkb3B0TlMoW1tXZWJDb3JlRnVsbFNjcmVlbldpbmRvdyBh
bGxvY10gaW5pdFdpdGhDb250ZW50UmVjdDpbW05TU2NyZWVuIG1haW5TY3JlZW5dIGZyYW1lXSBz
dHlsZU1hc2s6KE5TV2luZG93U3R5bGVNYXNrVGl0bGVkIHwgTlNXaW5kb3dTdHlsZU1hc2tVbmlm
aWVkVGl0bGVBbmRUb29sYmFyIHwgTlNXaW5kb3dTdHlsZU1hc2tGdWxsU2l6ZUNvbnRlbnRWaWV3
IHwgTlNXaW5kb3dTdHlsZU1hc2tSZXNpemFibGUpIGJhY2tpbmc6TlNCYWNraW5nU3RvcmVCdWZm
ZXJlZCBkZWZlcjpOT10pLmF1dG9yZWxlYXNlKCk7CiAjZWxzZQogICAgIHJldHVybiBuaWw7CiAj
ZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>420513</attachid>
            <date>2021-02-16 11:48:23 -0800</date>
            <delta_ts>2021-02-16 13:23:04 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221932-20210216114822.patch</filename>
            <type>text/plain</type>
            <size>143631</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyOTIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
OTQzNmU3ODQzMzFiMmZmNTk2ZjJkMjFiNWViMmM3Y2RmYjFhZTdjLi5hNjlhZmE5OTVlMTk0NzUw
ZTkzMjYyZjM4MzNjNDVhMmRiM2U0NGU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMiBAQAorMjAyMS0wMi0xNSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIFJlZHVjZSBleHBsaWNpdCB1c2FnZSBvZiBbb2JqQyBhdXRvcmVsZWFzZV0gaW4g
V2ViS2l0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MjE5MzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBS
ZWR1Y2UgZXhwbGljaXQgdXNhZ2Ugb2YgW29iakMgYXV0b3JlbGVhc2VdIGluIFdlYktpdCBieSB1
c2luZyBSZXRhaW5QdHI8Pi4KKworICAgICAgICAqIEFQSS9KU0NvbnRleHQubW06CisgICAgICAg
ICgtW0pTQ29udGV4dCBpbml0XSk6CisgICAgICAgICgrW0pTQ29udGV4dCBjb250ZXh0V2l0aEpT
R2xvYmFsQ29udGV4dFJlZjpdKToKKyAgICAgICAgKiBBUEkvSlNNYW5hZ2VkVmFsdWUubW06Cisg
ICAgICAgICgrW0pTTWFuYWdlZFZhbHVlIG1hbmFnZWRWYWx1ZVdpdGhWYWx1ZTpdKToKKyAgICAg
ICAgKCtbSlNNYW5hZ2VkVmFsdWUgbWFuYWdlZFZhbHVlV2l0aFZhbHVlOmFuZE93bmVyOl0pOgor
ICAgICAgICAqIEFQSS9KU1NjcmlwdC5tbToKKyAgICAgICAgKCtbSlNTY3JpcHQgc2NyaXB0T2ZU
eXBlOndpdGhTb3VyY2U6YW5kU291cmNlVVJMOmFuZEJ5dGVjb2RlQ2FjaGU6aW5WaXJ0dWFsTWFj
aGluZTplcnJvcjpdKToKKyAgICAgICAgKCtbSlNTY3JpcHQgc2NyaXB0T2ZUeXBlOm1lbW9yeU1h
cHBlZEZyb21BU0NJSUZpbGU6d2l0aFNvdXJjZVVSTDphbmRCeXRlY29kZUNhY2hlOmluVmlydHVh
bE1hY2hpbmU6ZXJyb3I6XSk6CisgICAgICAgICogQVBJL0pTVmlydHVhbE1hY2hpbmUubW06Cisg
ICAgICAgICgrW0pTVmlydHVhbE1hY2hpbmUgdmlydHVhbE1hY2hpbmVXaXRoQ29udGV4dEdyb3Vw
UmVmOl0pOgorICAgICAgICAqIEFQSS9KU1dyYXBwZXJNYXAubW06CisgICAgICAgICgtW0pTV3Jh
cHBlck1hcCBjbGFzc0luZm9Gb3JDbGFzczpdKToKKyAgICAgICAgKC1bSlNXcmFwcGVyTWFwIG9i
amNXcmFwcGVyRm9ySlNWYWx1ZVJlZjppbkNvbnRleHQ6XSk6CisgICAgICAgICogaW5zcGVjdG9y
L3JlbW90ZS9jb2NvYS9SZW1vdGVDb25uZWN0aW9uVG9UYXJnZXRDb2NvYS5tbToKKyAgICAgICAg
KEluc3BlY3Rvcjo6UmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0Ojpjb25uZWN0aW9uSWRlbnRpZmll
ciBjb25zdCk6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldDo6
ZGVzdGluYXRpb24gY29uc3QpOgorICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4v
b2JqY19nZW5lcmF0b3IucHk6CisgICAgICAgIChPYmpDR2VuZXJhdG9yLm9iamNfcHJvdG9jb2xf
aW1wb3J0X2V4cHJlc3Npb25fZm9yX3ZhcmlhYmxlKToKKwogMjAyMS0wMi0xNiAgQ2hyaXMgRHVt
ZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFJlZHVjZSBleHBsaWNpdCB1c2FnZSBv
ZiBbb2JqQyByZWxlYXNlXSBpbiBXZWJLaXQgZXZlbiBtb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjUwNTA2
MDUwMDllNTBkNDY5ZjA2MWY2Y2I0NGUxNDc3OGVlMzE0ZC4uN2UxYjE1MWQwMTVhNTk4NzBhOTFi
ZTU3MDA3Y2RjNzNmODUxOTBiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkxIEBACisyMDIxLTAy
LTE1ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgUmVkdWNlIGV4
cGxpY2l0IHVzYWdlIG9mIFtvYmpDIGF1dG9yZWxlYXNlXSBpbiBXZWJLaXQKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMTkzMgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlZHVjZSBleHBsaWNpdCB1c2Fn
ZSBvZiBbb2JqQyBhdXRvcmVsZWFzZV0gaW4gV2ViS2l0IGJ5IHVzaW5nIFJldGFpblB0cjw+Lgor
CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBw
ZXJJT1MubW06CisgICAgICAgICgrW1dlYkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyIHRleHRNYXJr
ZXJXaXRoVmlzaWJsZVBvc2l0aW9uOmNhY2hlOl0pOgorICAgICAgICAoK1tXZWJBY2Nlc3NpYmls
aXR5VGV4dE1hcmtlciB0ZXh0TWFya2VyV2l0aENoYXJhY3Rlck9mZnNldDpjYWNoZTpdKToKKyAg
ICAgICAgKCtbV2ViQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIgc3RhcnRPckVuZFRleHRNYXJrZXJG
b3JSYW5nZTppc1N0YXJ0OmNhY2hlOl0pOgorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2Jq
ZWN0V3JhcHBlciBfcHJlcGFyZUFjY2Vzc2liaWxpdHlDYWxsXSk6CisgICAgICAgICgtW1dlYkFj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFycmF5T2ZUZXh0Rm9yVGV4dE1hcmtlcnM6YXR0cmli
dXRlZDpdKToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgX3N0cmlu
Z0Zyb21TdGFydE1hcmtlcjp0b0VuZE1hcmtlcjphdHRyaWJ1dGVkOl0pOgorICAgICAgICAoLVtX
ZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBuZXh0TWFya2VyRm9yQ2hhcmFjdGVyT2Zmc2V0
Ol0pOgorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBwcmV2aW91c01h
cmtlckZvckNoYXJhY3Rlck9mZnNldDpdKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L21hYy9B
WE9iamVjdENhY2hlTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6dGV4dFJlcGxhY2VtZW50Q2hh
bmdlRGljdGlvbmFyeSk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJp
bGl0eU9iamVjdFdyYXBwZXJCYXNlLm1tOgorICAgICAgICAoYXJyYXlSZW1vdmluZ05vblN1cHBv
cnRlZFR5cGVzKToKKyAgICAgICAgKGRpY3Rpb25hcnlSZW1vdmluZ05vblN1cHBvcnRlZFR5cGVz
KToKKyAgICAgICAgKiBicmlkZ2Uvb2JqYy9XZWJTY3JpcHRPYmplY3QubW06CisgICAgICAgIChX
ZWJDb3JlOjpnZXRKU1dyYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlSlNXcmFwcGVy
KToKKyAgICAgICAgKCtbV2ViVW5kZWZpbmVkIHVuZGVmaW5lZF0pOgorICAgICAgICAqIGJyaWRn
ZS90ZXN0YmluZGluZ3MubW06CisgICAgICAgICgtW015Rmlyc3RJbnRlcmZhY2Ugc2V0SlNPYmpl
Y3Q6XSk6CisgICAgICAgICgtW015Rmlyc3RJbnRlcmZhY2UgY2FsbEpTT2JqZWN0OjpdKToKKyAg
ICAgICAgKiBlZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW06CisgICAgICAgIChfc2hhZG93
Rm9yU2hhZG93U3R5bGUpOgorICAgICAgICAoSFRNTENvbnZlcnRlcjo6X2FkZEF0dGFjaG1lbnRG
b3JFbGVtZW50KToKKyAgICAgICAgKF9kYXRlRm9yU3RyaW5nKToKKyAgICAgICAgKGZpbGVXcmFw
cGVyRm9yVVJMKToKKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL1dlYkFyY2hpdmVSZXNvdXJjZVdl
YlJlc291cmNlSGFuZGxlci5tbToKKyAgICAgICAgKC1bV2ViQXJjaGl2ZVJlc291cmNlV2ViUmVz
b3VyY2VIYW5kbGVyIHJlc291cmNlRm9yRGF0YTpVUkw6TUlNRVR5cGU6dGV4dEVuY29kaW5nTmFt
ZTpmcmFtZU5hbWU6XSk6CisgICAgICAgICogZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVy
Q29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjphdHRyaWJ1dGVzRm9yQXR0cmlidXRlZFN0cmlu
Z0NvbnZlcnNpb24pOgorICAgICAgICAqIGxvYWRlci9tYWMvTG9hZGVyTlNVUkxFeHRyYXMubW06
CisgICAgICAgIChmaWxlbmFtZUJ5Rml4aW5nSWxsZWdhbENoYXJhY3RlcnMpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25PYmpDOjpjcmVhdGVBVkFzc2V0Rm9yVVJMKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9pb3MvV2ViQVZQbGF5ZXJDb250cm9sbGVyLm1tOgorICAgICAgICAoLVtXZWJBVlBsYXllckNv
bnRyb2xsZXIgaW5pdF0pOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9XZWJFdmVudC5tbToKKyAg
ICAgICAgKC1bV2ViRXZlbnQgY2hhcmFjdGVyc10pOgorICAgICAgICAoLVtXZWJFdmVudCBjaGFy
YWN0ZXJzSWdub3JpbmdNb2RpZmllcnNdKToKKyAgICAgICAgKC1bV2ViRXZlbnQgaW5wdXRNYW5h
Z2VySGludF0pOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9XZWJJdGVtUHJvdmlkZXJQYXN0ZWJv
YXJkLm1tOgorICAgICAgICAoK1tXZWJJdGVtUHJvdmlkZXJMb2FkUmVzdWx0IGxvYWRSZXN1bHRX
aXRoSXRlbVByb3ZpZGVyOnR5cGVzVG9Mb2FkOl0pOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9X
ZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQubW06CisgICAgICAgICgtW1dlYlZpZGVv
RnVsbHNjcmVlbkNvbnRyb2xsZXIgZGlkRmluaXNoRnVsbHNjcmVlbjpdKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9pb3Mvd2FrL1dBS1ZpZXcubW06CisgICAgICAgICgrW1dBS1ZpZXcgX3dyYXBwZXJG
b3JWaWV3UmVmOl0pOgorICAgICAgICAoLVtXQUtWaWV3IGRlYWxsb2NdKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OmZpbGVXcmFw
cGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvV2ViQ29yZU5TVVJMRXh0cmFzLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6VVJMQnlDYW5vbmljYWxpemluZ1VSTCk6CisgICAgICAgICogcGxhdGZv
cm0vbWFjL1dlYk5TQXR0cmlidXRlZFN0cmluZ0V4dHJhcy5tbToKKyAgICAgICAgKFdlYkNvcmU6
OmF0dHJpYnV0ZWRTdHJpbmdCeVN0cmlwcGluZ0F0dGFjaG1lbnRDaGFyYWN0ZXJzKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVxdWVzdC5oOgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ29jb2EubW06CisgICAg
ICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246Om5zQ29va2llU3RvcmFnZSBjb25z
dCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RDb2Nv
YS5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdDo6bnNVUkxSZXF1ZXN0IGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdDo6c2V0U3RvcmFnZVNlc3Np
b24pOgorICAgICAgICAoV2ViQ29yZTo6Y29weVJlcXVlc3RXaXRoU3RvcmFnZVNlc3Npb24pOgor
ICAgICAgICAoV2ViQ29yZTo6Y2FjaGVkUmVzcG9uc2VGb3JSZXF1ZXN0KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW06CisgICAgICAgICgt
W1dlYkNvcmVOU1VSTFNlc3Npb24gZGF0YVRhc2tXaXRoUmVxdWVzdDpdKToKKyAgICAgICAgKC1b
V2ViQ29yZU5TVVJMU2Vzc2lvbiBkYXRhVGFza1dpdGhVUkw6XSk6CisgICAgICAgICgtW1dlYkNv
cmVOU1VSTFNlc3Npb25EYXRhVGFzayBpbml0V2l0aFNlc3Npb246aWRlbnRpZmllcjpyZXF1ZXN0
Ol0pOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL0F1dGhlbnRpY2F0aW9uTWFjLm1t
OgorICAgICAgICAoV2ViQ29yZTo6bWFjKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21h
Yy9SZXNvdXJjZUVycm9yTWFjLm1tOgorICAgICAgICAoZGljdGlvbmFyeVRoYXRDYW5Db2RlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUhhbmRsZU1hYy5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpjcmVhdGVOU1VSTENvbm5lY3Rpb24pOgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVVUkxSZXNwb25zZS5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OnN5bnRoZXNpemVSZWRpcmVjdFJlc3BvbnNlSWZOZWNlc3NhcnkpOgor
ICAgICAgICAqIHBsYXRmb3JtL3RleHQvaW9zL0xvY2FsaXplZERhdGVDYWNoZS5oOgorICAgICAg
ICAqIHBsYXRmb3JtL3RleHQvaW9zL0xvY2FsaXplZERhdGVDYWNoZS5tbToKKyAgICAgICAgKFdl
YkNvcmU6OkxvY2FsaXplZERhdGVDYWNoZTo6Zm9ybWF0dGVyRm9yRGF0ZVR5cGUpOgorICAgICAg
ICAoV2ViQ29yZTo6TG9jYWxpemVkRGF0ZUNhY2hlOjpjcmVhdGVGb3JtYXR0ZXJGb3JUeXBlKToK
KyAgICAgICAgKFdlYkNvcmU6OkxvY2FsaXplZERhdGVDYWNoZTo6Y2FsY3VsYXRlTWF4aW11bVdp
ZHRoKToKKwogMjAyMS0wMi0xNiAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJr
aXQub3JnPgogCiAgICAgICAgIEFkZCBBUEkgdG8gZGlzYWJsZSBIVFRQUyB1cGdyYWRlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CmluZGV4IGViYjNkMzE1ODA5OTc2YzhkY2JkNDZjYzBhNDAwOTM4M2Q1NjNjM2EuLmZmY2Q1YzMz
MTdlYTBkMjhiN2FkNWY2OGJiMDY4OTEyYzc5YWQ0ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTE3
IEBACisyMDIxLTAyLTE1ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAg
ICAgUmVkdWNlIGV4cGxpY2l0IHVzYWdlIG9mIFtvYmpDIGF1dG9yZWxlYXNlXSBpbiBXZWJLaXQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMTkzMgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlZHVjZSBl
eHBsaWNpdCB1c2FnZSBvZiBbb2JqQyBhdXRvcmVsZWFzZV0gaW4gV2ViS2l0IGJ5IHVzaW5nIFJl
dGFpblB0cjw+LgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Np
b25Db2NvYS5tbToKKyAgICAgICAgKGRvd25ncmFkZVJlcXVlc3QpOgorICAgICAgICAodXBkYXRl
SWdub3JlU3RyaWN0VHJhbnNwb3J0U2VjdXJpdHlTZXR0aW5nSWZOZWNlc3NhcnkpOgorICAgICAg
ICAoV2ViS2l0Ojpwcm94eURpY3Rpb25hcnkpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vz
c2lvbkNvY29hOjpOZXR3b3JrU2Vzc2lvbkNvY29hKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Nlc3Npb25Db2NvYTo6Y3JlYXRlV2ViU29ja2V0VGFzayk6CisgICAgICAgICogUGxhdGZvcm0v
Y29jb2EvV0tQYXltZW50QXV0aG9yaXphdGlvbkRlbGVnYXRlLm1tOgorICAgICAgICAoLVtXS1Bh
eW1lbnRBdXRob3JpemF0aW9uRGVsZWdhdGUgY29tcGxldGVQYXltZW50TWV0aG9kU2VsZWN0aW9u
Ol0pOgorICAgICAgICAoLVtXS1BheW1lbnRBdXRob3JpemF0aW9uRGVsZWdhdGUgY29tcGxldGVT
aGlwcGluZ0NvbnRhY3RTZWxlY3Rpb246XSk6CisgICAgICAgICgtW1dLUGF5bWVudEF1dGhvcml6
YXRpb25EZWxlZ2F0ZSBjb21wbGV0ZVNoaXBwaW5nTWV0aG9kU2VsZWN0aW9uOl0pOgorICAgICAg
ICAqIFNoYXJlZC9BUEkvQ29jb2EvV0tSZW1vdGVPYmplY3RDb2Rlci5tbToKKyAgICAgICAgKGVu
Y29kZU9iamVjdCk6CisgICAgICAgICogU2hhcmVkL0FQSS9Db2NvYS9fV0tSZW1vdGVPYmplY3RJ
bnRlcmZhY2UubW06CisgICAgICAgICgrW19XS1JlbW90ZU9iamVjdEludGVyZmFjZSByZW1vdGVP
YmplY3RJbnRlcmZhY2VXaXRoUHJvdG9jb2w6XSk6CisgICAgICAgICogU2hhcmVkL0NvY29hL1dL
T2JqZWN0Lmg6CisgICAgICAgIChXZWJLaXQ6OndyYXBwZXIpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQ29jb2EvTlNBdHRyaWJ1dGVkU3RyaW5nLm1tOgorICAgICAgICAoK1tfV0tBdHRyaWJ1
dGVkU3RyaW5nV2ViVmlld0NhY2hlIGNvbmZpZ3VyYXRpb25dKToKKyAgICAgICAgKCtbTlNBdHRy
aWJ1dGVkU3RyaW5nIF9sb2FkRnJvbUhUTUxXaXRoT3B0aW9uczpjb250ZW50TG9hZGVyOmNvbXBs
ZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tCcm93c2lu
Z0NvbnRleHRDb250cm9sbGVyLm1tOgorICAgICAgICAobWFrZVBvbGljeURlY2lzaW9uQmxvY2sp
OgorICAgICAgICAoc2V0VXBQYWdlUG9saWN5Q2xpZW50KToKKyAgICAgICAgKC1bV0tCcm93c2lu
Z0NvbnRleHRDb250cm9sbGVyIGhhbmRsZV0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tDb250ZW50V29ybGQubW06CisgICAgICAgICgtW1dLQ29udGVudFdvcmxkIF91c2VyQ29u
dGVudFdvcmxkXSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0ZyYW1lSW5mby5t
bToKKyAgICAgICAgKC1bV0tGcmFtZUluZm8gc2VjdXJpdHlPcmlnaW5dKToKKyAgICAgICAgKC1b
V0tGcmFtZUluZm8gd2ViVmlld10pOgorICAgICAgICAoLVtXS0ZyYW1lSW5mbyBfaGFuZGxlXSk6
CisgICAgICAgICgtW1dLRnJhbWVJbmZvIF9wYXJlbnRGcmFtZUhhbmRsZV0pOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2VyU2NyaXB0Lm1tOgorICAgICAgICAoLVtXS1VzZXJT
Y3JpcHQgX3VzZXJDb250ZW50V29ybGRdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IGNvbmZpZ3VyYXRpb25dKToKKyAg
ICAgICAgKC1bV0tXZWJWaWV3IGZpbmRTdHJpbmc6d2l0aENvbmZpZ3VyYXRpb246Y29tcGxldGlv
bkhhbmRsZXI6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfZnJhbWVzOl0pOgorICAgICAgICAo
LVtXS1dlYlZpZXcgX2hhbmRsZV0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3Rha2VQREZTbmFw
c2hvdFdpdGhDb25maWd1cmF0aW9uOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtX
S1dlYlZpZXcgX3Nlc3Npb25TdGF0ZV0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3Nlc3Npb25T
dGF0ZVdpdGhGaWx0ZXI6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfZ2V0Q29udGVudHNBc0F0
dHJpYnV0ZWRTdHJpbmdXaXRoQ29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYnBhZ2VQcmVmZXJlbmNlcy5tbToKKyAgICAgICAgKCtbV0tXZWJw
YWdlUHJlZmVyZW5jZXMgZGVmYXVsdFByZWZlcmVuY2VzXSk6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVjb3JkLm1tOgorICAgICAgICAoLVtXS1dlYnNpdGVE
YXRhUmVjb3JkIF9kYXRhU2l6ZV0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dL
QWN0aXZhdGVkRWxlbWVudEluZm8ubW06CisgICAgICAgICgrW19XS0FjdGl2YXRlZEVsZW1lbnRJ
bmZvIGFjdGl2YXRlZEVsZW1lbnRJbmZvV2l0aEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0
aW9uOnVzZXJJbmZvOl0pOgorICAgICAgICAoLVtfV0tBY3RpdmF0ZWRFbGVtZW50SW5mbyBpbWFn
ZV0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXR0YWNobWVudC5tbToKKyAg
ICAgICAgKC1bX1dLQXR0YWNobWVudCBpbmZvXSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9D
b2NvYS9fV0tBdXRvbWF0aW9uU2Vzc2lvbi5tbToKKyAgICAgICAgKC1bX1dLQXV0b21hdGlvblNl
c3Npb24gaW5pdF0pOgorICAgICAgICAoLVtfV0tBdXRvbWF0aW9uU2Vzc2lvbiBjb25maWd1cmF0
aW9uXSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZC5tbToKKyAg
ICAgICAgKCtbX1dLRG93bmxvYWQgZG93bmxvYWRXaXRoRG93bmxvYWQ6XSk6CisgICAgICAgICgt
W19XS0Rvd25sb2FkIG9yaWdpbmF0aW5nV2ViVmlld10pOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQ29jb2EvX1dLRWxlbWVudEFjdGlvbi5tbToKKyAgICAgICAgKCtbX1dLRWxlbWVudEFjdGlv
biBlbGVtZW50QWN0aW9uV2l0aFRpdGxlOmFjdGlvbkhhbmRsZXI6XSk6CisgICAgICAgICgrW19X
S0VsZW1lbnRBY3Rpb24gX2VsZW1lbnRBY3Rpb25XaXRoVHlwZTp0aXRsZTphY3Rpb25IYW5kbGVy
Ol0pOgorICAgICAgICAoK1tfV0tFbGVtZW50QWN0aW9uIF9lbGVtZW50QWN0aW9uV2l0aFR5cGU6
Y3VzdG9tVGl0bGU6YXNzaXN0YW50Ol0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLRnJhbWVUcmVlTm9kZS5tbToKKyAgICAgICAgKC1bX1dLRnJhbWVUcmVlTm9kZSBzZWN1cml0
eU9yaWdpbl0pOgorICAgICAgICAoLVtfV0tGcmFtZVRyZWVOb2RlIHdlYlZpZXddKToKKyAgICAg
ICAgKC1bX1dLRnJhbWVUcmVlTm9kZSBfaGFuZGxlXSk6CisgICAgICAgICgtW19XS0ZyYW1lVHJl
ZU5vZGUgX3BhcmVudEZyYW1lSGFuZGxlXSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2Nv
YS9fV0tJbnNwZWN0b3IubW06CisgICAgICAgICgtW19XS0luc3BlY3RvciByZWdpc3RlckV4dGVu
c2lvbldpdGhJRDpkaXNwbGF5TmFtZTpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0NvY29hL19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5tbToKKyAgICAg
ICAgKC1bX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIGN1c3RvbUNsYXNzZXNGb3JQYXJhbWV0
ZXJDb2Rlcl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUmVtb3RlV2ViSW5z
cGVjdG9yVmlld0NvbnRyb2xsZXIubW06CisgICAgICAgICgtW19XS1JlbW90ZVdlYkluc3BlY3Rv
clZpZXdDb250cm9sbGVyIHJlZ2lzdGVyRXh0ZW5zaW9uV2l0aElEOmRpc3BsYXlOYW1lOmNvbXBs
ZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVGV4dE1h
bmlwdWxhdGlvblRva2VuLm1tOgorICAgICAgICAoLVtfV0tUZXh0TWFuaXB1bGF0aW9uVG9rZW4g
X2Rlc2NyaXB0aW9uUHJlc2VydmluZ1ByaXZhY3k6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9Db2NvYS9fV0tVc2VyQ29udGVudEV4dGVuc2lvblN0b3JlLm1tOgorICAgICAgICAoK1tfV0tV
c2VyQ29udGVudEV4dGVuc2lvblN0b3JlIGRlZmF1bHRTdG9yZV0pOgorICAgICAgICAoK1tfV0tV
c2VyQ29udGVudEV4dGVuc2lvblN0b3JlIHN0b3JlV2l0aFVSTDpdKToKKyAgICAgICAgKC1bX1dL
VXNlckNvbnRlbnRFeHRlbnNpb25TdG9yZSBjb21waWxlQ29udGVudEV4dGVuc2lvbkZvcklkZW50
aWZpZXI6ZW5jb2RlZENvbnRlbnRFeHRlbnNpb246Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAg
ICAgICgtW19XS1VzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmUgbG9va3VwQ29udGVudEV4dGVuc2lv
bkZvcklkZW50aWZpZXI6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tVc2VyQ29udGVudFdvcmxkLm1tOgorICAgICAgICAoK1tfV0tVc2VyQ29u
dGVudFdvcmxkIHdvcmxkV2l0aE5hbWU6XSk6CisgICAgICAgICgrW19XS1VzZXJDb250ZW50V29y
bGQgbm9ybWFsV29ybGRdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdJ
T1MubW06CisgICAgICAgICgtW1dLV2ViVmlldyBfdWlFdmVudEF0dHJpYnV0aW9uXSk6CisgICAg
ICAgICgtW1dLV2ViVmlldyBfcmV0YWluQWN0aXZlRm9jdXNlZFN0YXRlXSk6CisgICAgICAgICog
VUlQcm9jZXNzL0F1dG9tYXRpb24vaW9zL1dlYkF1dG9tYXRpb25TZXNzaW9uSU9TLm1tOgorICAg
ICAgICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cGxhdGZvcm1TaW11bGF0ZUtleWJv
YXJkSW50ZXJhY3Rpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9BdXRvbWF0aW9uQ2xp
ZW50Lm1tOgorICAgICAgICAoV2ViS2l0OjpBdXRvbWF0aW9uQ2xpZW50OjpyZXF1ZXN0QXV0b21h
dGlvblNlc3Npb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9TYWZlQnJvd3NpbmdXYXJu
aW5nQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OmFkZExpbmtBbmRSZXBsYWNlKToKKyAgICAg
ICAgKFdlYktpdDo6c2FmZUJyb3dzaW5nRGV0YWlsc1RleHQpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9Db2NvYS9TeXN0ZW1QcmV2aWV3Q29udHJvbGxlckNvY29hLm1tOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkubW06CisgICAgICAgICgtW1dL
TGF5ZXJIb3N0VmlldyBtYWtlQmFja2luZ0xheWVyXSk6CisgICAgICAgICogVUlQcm9jZXNzL0Nv
Y29hL1dLQ29udGFjdFBpY2tlci5tbToKKyAgICAgICAgKC1bV0tDb250YWN0UGlja2VyIF9jb250
YWN0c0Zyb21KU0NvbnRhY3RzOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XS1NhZmVC
cm93c2luZ1dhcm5pbmcubW06CisgICAgICAgIChtYWtlQnV0dG9uKToKKyAgICAgICAgKG1ha2VM
YWJlbCk6CisgICAgICAgICgtW1dLU2FmZUJyb3dzaW5nV2FybmluZyBhZGRDb250ZW50XSk6Cisg
ICAgICAgICgtW1dLU2FmZUJyb3dzaW5nV2FybmluZyBzaG93RGV0YWlsc0NsaWNrZWRdKToKKyAg
ICAgICAgKC1bV0tTYWZlQnJvd3NpbmdUZXh0VmlldyBpbml0V2l0aEF0dHJpYnV0ZWRTdHJpbmc6
Zm9yV2FybmluZzpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW06
CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpmdWxsU2NyZWVuV2luZG93KToKKwogMjAy
MS0wMi0xNiAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAg
ICAgICAgIEFkZCBBUEkgdG8gZGlzYWJsZSBIVFRQUyB1cGdyYWRlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dC5tbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvSlNDb250ZXh0Lm1tCmluZGV4IDc0YjIzNDQ5ZTY5YTljMzllMTg3MjI3ZGM4YzY5N2Fm
YjQ5MjYwYmQuLjZiZWIyNWJmNmFlZWQ3NThhMjA2MTE3Y2FlNzE4Yjc4YTAwMjNhMzcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0Lm1tCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0Lm1tCkBAIC02OCw3ICs2OCw3IEBAIC0gKHZv
aWQpZW5zdXJlV3JhcHBlck1hcAogCiAtIChpbnN0YW5jZXR5cGUpaW5pdAogewotICAgIHJldHVy
biBbc2VsZiBpbml0V2l0aFZpcnR1YWxNYWNoaW5lOltbW0pTVmlydHVhbE1hY2hpbmUgYWxsb2Nd
IGluaXRdIGF1dG9yZWxlYXNlXV07CisgICAgcmV0dXJuIFtzZWxmIGluaXRXaXRoVmlydHVhbE1h
Y2hpbmU6YWRvcHROUyhbW0pTVmlydHVhbE1hY2hpbmUgYWxsb2NdIGluaXRdKS5hdXRvcmVsZWFz
ZSgpXTsKIH0KIAogLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoVmlydHVhbE1hY2hpbmU6KEpTVmly
dHVhbE1hY2hpbmUgKil2aXJ0dWFsTWFjaGluZQpAQCAtNDA4LDcgKzQwOCw3IEBAICsgKEpTQ29u
dGV4dCAqKWNvbnRleHRXaXRoSlNHbG9iYWxDb250ZXh0UmVmOihKU0dsb2JhbENvbnRleHRSZWYp
Z2xvYmFsQ29udGV4dAogICAgIEpTVmlydHVhbE1hY2hpbmUgKnZpcnR1YWxNYWNoaW5lID0gW0pT
VmlydHVhbE1hY2hpbmUgdmlydHVhbE1hY2hpbmVXaXRoQ29udGV4dEdyb3VwUmVmOnRvUmVmKCZ0
b0pTKGdsb2JhbENvbnRleHQpLT52bSgpKV07CiAgICAgSlNDb250ZXh0ICpjb250ZXh0ID0gW3Zp
cnR1YWxNYWNoaW5lIGNvbnRleHRGb3JHbG9iYWxDb250ZXh0UmVmOmdsb2JhbENvbnRleHRdOwog
ICAgIGlmICghY29udGV4dCkKLSAgICAgICAgY29udGV4dCA9IFtbW0pTQ29udGV4dCBhbGxvY10g
aW5pdFdpdGhHbG9iYWxDb250ZXh0UmVmOmdsb2JhbENvbnRleHRdIGF1dG9yZWxlYXNlXTsKKyAg
ICAgICAgY29udGV4dCA9IGFkb3B0TlMoW1tKU0NvbnRleHQgYWxsb2NdIGluaXRXaXRoR2xvYmFs
Q29udGV4dFJlZjpnbG9iYWxDb250ZXh0XSkuYXV0b3JlbGVhc2UoKTsKICAgICByZXR1cm4gY29u
dGV4dDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU01hbmFn
ZWRWYWx1ZS5tbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNNYW5hZ2VkVmFsdWUubW0K
aW5kZXggNjM4NjlhMDM0MTQwMDNkYzg3MDFmNTIzYzUwOWNiZWJlY2RkOTZhYy4uODUwZmFiYzZi
MzllZWVmYTBlMjQwNWQ5MzdkMzk0MjU0YTk2YjIzZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU01hbmFnZWRWYWx1ZS5tbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTTWFuYWdlZFZhbHVlLm1tCkBAIC02MSwxNCArNjEsMTQgQEAgQGltcGxlbWVudGF0
aW9uIEpTTWFuYWdlZFZhbHVlIHsKIAogKyAoSlNNYW5hZ2VkVmFsdWUgKiltYW5hZ2VkVmFsdWVX
aXRoVmFsdWU6KEpTVmFsdWUgKil2YWx1ZQogewotICAgIHJldHVybiBbW1tzZWxmIGFsbG9jXSBp
bml0V2l0aFZhbHVlOnZhbHVlXSBhdXRvcmVsZWFzZV07CisgICAgcmV0dXJuIGFkb3B0TlMoW1tz
ZWxmIGFsbG9jXSBpbml0V2l0aFZhbHVlOnZhbHVlXSkuYXV0b3JlbGVhc2UoKTsKIH0KIAogKyAo
SlNNYW5hZ2VkVmFsdWUgKiltYW5hZ2VkVmFsdWVXaXRoVmFsdWU6KEpTVmFsdWUgKil2YWx1ZSBh
bmRPd25lcjooaWQpb3duZXIKIHsKLSAgICBKU01hbmFnZWRWYWx1ZSAqbWFuYWdlZFZhbHVlID0g
W1tzZWxmIGFsbG9jXSBpbml0V2l0aFZhbHVlOnZhbHVlXTsKLSAgICBbdmFsdWUuY29udGV4dC52
aXJ0dWFsTWFjaGluZSBhZGRNYW5hZ2VkUmVmZXJlbmNlOm1hbmFnZWRWYWx1ZSB3aXRoT3duZXI6
b3duZXJdOwotICAgIHJldHVybiBbbWFuYWdlZFZhbHVlIGF1dG9yZWxlYXNlXTsKKyAgICBhdXRv
IG1hbmFnZWRWYWx1ZSA9IGFkb3B0TlMoW1tzZWxmIGFsbG9jXSBpbml0V2l0aFZhbHVlOnZhbHVl
XSk7CisgICAgW3ZhbHVlLmNvbnRleHQudmlydHVhbE1hY2hpbmUgYWRkTWFuYWdlZFJlZmVyZW5j
ZTptYW5hZ2VkVmFsdWUuZ2V0KCkgd2l0aE93bmVyOm93bmVyXTsKKyAgICByZXR1cm4gbWFuYWdl
ZFZhbHVlLmF1dG9yZWxlYXNlKCk7CiB9CiAKIC0gKGluc3RhbmNldHlwZSlpbml0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTU2NyaXB0Lm1tIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU1NjcmlwdC5tbQppbmRleCA5ZTQxNDU3MTI0YmYxNDNlYTQxNzYxNWM0
OTgyYTUxOWMxZDkzYTdlLi4yM2Y1OTE0MzNlYjdlMjI3ODA5MTJjNDgwYzQ0ODZiNjM0NzljM2Qw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTU2NyaXB0Lm1tCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNTY3JpcHQubW0KQEAgLTExMCwxNCArMTEwLDE0
IEBAICsgKGluc3RhbmNldHlwZSlzY3JpcHRPZlR5cGU6KEpTU2NyaXB0VHlwZSl0eXBlIHdpdGhT
b3VyY2U6KE5TU3RyaW5nICopc291cmNlIGFuCiAgICAgaWYgKCF2YWxpZGF0ZUJ5dGVjb2RlQ2Fj
aGVQYXRoKGNhY2hlUGF0aCwgZXJyb3IpKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgSlNT
Y3JpcHQgKnJlc3VsdCA9IFtbW0pTU2NyaXB0IGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07Cisg
ICAgYXV0byByZXN1bHQgPSBhZG9wdE5TKFtbSlNTY3JpcHQgYWxsb2NdIGluaXRdKTsKICAgICBy
ZXN1bHQtPm1fdmlydHVhbE1hY2hpbmUgPSB2bTsKICAgICByZXN1bHQtPm1fdHlwZSA9IHR5cGU7
CiAgICAgcmVzdWx0LT5tX3NvdXJjZSA9IHNvdXJjZTsKICAgICByZXN1bHQtPm1fc291cmNlVVJM
ID0gc291cmNlVVJMOwogICAgIHJlc3VsdC0+bV9jYWNoZVBhdGggPSBjYWNoZVBhdGg7CiAgICAg
W3Jlc3VsdCByZWFkQ2FjaGVdOwotICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJuIHJlc3Vs
dC5hdXRvcmVsZWFzZSgpOwogfQogCiArIChpbnN0YW5jZXR5cGUpc2NyaXB0T2ZUeXBlOihKU1Nj
cmlwdFR5cGUpdHlwZSBtZW1vcnlNYXBwZWRGcm9tQVNDSUlGaWxlOihOU1VSTCAqKWZpbGVQYXRo
IHdpdGhTb3VyY2VVUkw6KE5TVVJMICopc291cmNlVVJMIGFuZEJ5dGVjb2RlQ2FjaGU6KE5TVVJM
ICopY2FjaGVQYXRoIGluVmlydHVhbE1hY2hpbmU6KEpTVmlydHVhbE1hY2hpbmUgKil2bSBlcnJv
cjoob3V0IE5TRXJyb3IgKiopZXJyb3IKQEAgLTEzOCw3ICsxMzgsNyBAQCArIChpbnN0YW5jZXR5
cGUpc2NyaXB0T2ZUeXBlOihKU1NjcmlwdFR5cGUpdHlwZSBtZW1vcnlNYXBwZWRGcm9tQVNDSUlG
aWxlOihOU1VSTAogICAgIGlmICghY2hhcmFjdGVyc0FyZUFsbEFTQ0lJKHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgTENoYXIqPihmaWxlRGF0YS5kYXRhKCkpLCBmaWxlRGF0YS5zaXplKCkpKQogICAg
ICAgICByZXR1cm4gY3JlYXRlRXJyb3IoW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJOb3Qg
YWxsIGNoYXJhY3RlcnMgaW4gZmlsZSBhdCAlQCBhcmUgQVNDSUkuIiwgc3RhdGljX2Nhc3Q8TlNT
dHJpbmcgKj4oc3lzdGVtUGF0aCldLCBlcnJvcik7CiAKLSAgICBKU1NjcmlwdCAqcmVzdWx0ID0g
W1tbSlNTY3JpcHQgYWxsb2NdIGluaXRdIGF1dG9yZWxlYXNlXTsKKyAgICBhdXRvIHJlc3VsdCA9
IGFkb3B0TlMoW1tKU1NjcmlwdCBhbGxvY10gaW5pdF0pOwogICAgIHJlc3VsdC0+bV92aXJ0dWFs
TWFjaGluZSA9IHZtOwogICAgIHJlc3VsdC0+bV90eXBlID0gdHlwZTsKICAgICByZXN1bHQtPm1f
c291cmNlID0gU3RyaW5nKFN0cmluZ0ltcGw6OmNyZWF0ZVdpdGhvdXRDb3B5aW5nKGJpdHdpc2Vf
Y2FzdDxjb25zdCBMQ2hhcio+KGZpbGVEYXRhLmRhdGEoKSksIGZpbGVEYXRhLnNpemUoKSkpOwpA
QCAtMTQ2LDcgKzE0Niw3IEBAICsgKGluc3RhbmNldHlwZSlzY3JpcHRPZlR5cGU6KEpTU2NyaXB0
VHlwZSl0eXBlIG1lbW9yeU1hcHBlZEZyb21BU0NJSUZpbGU6KE5TVVJMCiAgICAgcmVzdWx0LT5t
X3NvdXJjZVVSTCA9IHNvdXJjZVVSTDsKICAgICByZXN1bHQtPm1fY2FjaGVQYXRoID0gY2FjaGVQ
YXRoOwogICAgIFtyZXN1bHQgcmVhZENhY2hlXTsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJl
dHVybiByZXN1bHQuYXV0b3JlbGVhc2UoKTsKIH0KIAogLSAodm9pZClyZWFkQ2FjaGUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWaXJ0dWFsTWFjaGluZS5tbSBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWaXJ0dWFsTWFjaGluZS5tbQppbmRleCAxN2IzMmE2
NjY3MGIwMDU0NjFkYWY3YWYxN2FhMTcxY2U1YjhhOTkxLi5hZDJiMDViYzc1YWMzZTBjOTg0ZTFh
NjdlZWRlMmU1ZDcxMzc1YjM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTVmlydHVhbE1hY2hpbmUubW0KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1Zp
cnR1YWxNYWNoaW5lLm1tCkBAIC0yMzYsNyArMjM2LDcgQEAgKyAoSlNWaXJ0dWFsTWFjaGluZSAq
KXZpcnR1YWxNYWNoaW5lV2l0aENvbnRleHRHcm91cFJlZjooSlNDb250ZXh0R3JvdXBSZWYpZ3Jv
dXAKIHsKICAgICBKU1ZpcnR1YWxNYWNoaW5lICp2aXJ0dWFsTWFjaGluZSA9IFtKU1ZNV3JhcHBl
ckNhY2hlIHdyYXBwZXJGb3JKU0NvbnRleHRHcm91cFJlZjpncm91cF07CiAgICAgaWYgKCF2aXJ0
dWFsTWFjaGluZSkKLSAgICAgICAgdmlydHVhbE1hY2hpbmUgPSBbW1tKU1ZpcnR1YWxNYWNoaW5l
IGFsbG9jXSBpbml0V2l0aENvbnRleHRHcm91cFJlZjpncm91cF0gYXV0b3JlbGVhc2VdOworICAg
ICAgICB2aXJ0dWFsTWFjaGluZSA9IGFkb3B0TlMoW1tKU1ZpcnR1YWxNYWNoaW5lIGFsbG9jXSBp
bml0V2l0aENvbnRleHRHcm91cFJlZjpncm91cF0pLmF1dG9yZWxlYXNlKCk7CiAgICAgcmV0dXJu
IHZpcnR1YWxNYWNoaW5lOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL0pTV3JhcHBlck1hcC5tbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNXcmFwcGVy
TWFwLm1tCmluZGV4IDE0NTU2YjU3NzEzZTczMGFlNTJiZGY5NTJlNjY5MTQyMDg1OWViMTguLjg1
MmZiOTI5M2Y2MGJkOWI3ZTQ2YzNlYzc1MGYzMjI5MTE1Y2VkMTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNXcmFwcGVyTWFwLm1tCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvSlNXcmFwcGVyTWFwLm1tCkBAIC02MzUsNyArNjM1LDcgQEAgLSAoSlNPYmpD
Q2xhc3NJbmZvKiljbGFzc0luZm9Gb3JDbGFzczooQ2xhc3MpY2xzCiAgICAgICAgICAgICByZXR1
cm4gbV9jbGFzc01hcC5nZXQoKVsoaWQpY2xzXSA9IFtzZWxmIGNsYXNzSW5mb0ZvckNsYXNzOmNs
YXNzX2dldFN1cGVyY2xhc3MoY2xzKV07CiAgICAgfQogCi0gICAgcmV0dXJuIG1fY2xhc3NNYXAu
Z2V0KClbKGlkKWNsc10gPSBbW1tKU09iakNDbGFzc0luZm8gYWxsb2NdIGluaXRGb3JDbGFzczpj
bHNdIGF1dG9yZWxlYXNlXTsKKyAgICByZXR1cm4gbV9jbGFzc01hcC5nZXQoKVsoaWQpY2xzXSA9
IGFkb3B0TlMoW1tKU09iakNDbGFzc0luZm8gYWxsb2NdIGluaXRGb3JDbGFzczpjbHNdKS5hdXRv
cmVsZWFzZSgpOwogfQogCiAtIChKU1ZhbHVlICopanNXcmFwcGVyRm9yT2JqZWN0OihpZClvYmpl
Y3QgaW5Db250ZXh0OihKU0NvbnRleHQgKiljb250ZXh0CkBAIC02NjYsNyArNjY2LDcgQEAgLSAo
SlNWYWx1ZSAqKW9iamNXcmFwcGVyRm9ySlNWYWx1ZVJlZjooSlNWYWx1ZVJlZil2YWx1ZSBpbkNv
bnRleHQ6Y29udGV4dAogICAgIEFTU0VSVCh0b0pTR2xvYmFsT2JqZWN0KFtjb250ZXh0IEpTR2xv
YmFsQ29udGV4dFJlZl0pLT53cmFwcGVyTWFwKCkgPT0gc2VsZik7CiAgICAgSlNWYWx1ZSAqd3Jh
cHBlciA9IChfX2JyaWRnZSBKU1ZhbHVlICopTlNNYXBHZXQobV9jYWNoZWRPYmpDV3JhcHBlcnMu
Z2V0KCksIHZhbHVlKTsKICAgICBpZiAoIXdyYXBwZXIpIHsKLSAgICAgICAgd3JhcHBlciA9IFtb
W0pTVmFsdWUgYWxsb2NdIGluaXRXaXRoVmFsdWU6dmFsdWUgaW5Db250ZXh0OmNvbnRleHRdIGF1
dG9yZWxlYXNlXTsKKyAgICAgICAgd3JhcHBlciA9IGFkb3B0TlMoW1tKU1ZhbHVlIGFsbG9jXSBp
bml0V2l0aFZhbHVlOnZhbHVlIGluQ29udGV4dDpjb250ZXh0XSkuYXV0b3JlbGVhc2UoKTsKICAg
ICAgICAgTlNNYXBJbnNlcnQobV9jYWNoZWRPYmpDV3JhcHBlcnMuZ2V0KCksIHZhbHVlLCAoX19i
cmlkZ2Ugdm9pZCopd3JhcHBlcik7CiAgICAgfQogICAgIHJldHVybiB3cmFwcGVyOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvY29jb2EvUmVtb3Rl
Q29ubmVjdGlvblRvVGFyZ2V0Q29jb2EubW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3JlbW90ZS9jb2NvYS9SZW1vdGVDb25uZWN0aW9uVG9UYXJnZXRDb2NvYS5tbQppbmRleCAx
MjIxMTkwMzE4OTgxNzkzZDgxMTAwYzBkYTZhZDhiOTJiNGQzMGMyLi41MTBmNDliNmQ3NGU3MmI5
MjEzMjZmNTZmMzZhZTdiZDdhOWI1NzIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3JlbW90ZS9jb2NvYS9SZW1vdGVDb25uZWN0aW9uVG9UYXJnZXRDb2NvYS5t
bQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9jb2NvYS9SZW1v
dGVDb25uZWN0aW9uVG9UYXJnZXRDb2NvYS5tbQpAQCAtMTI4LDEyICsxMjgsMTIgQEAgT3B0aW9u
YWw8VGFyZ2V0SUQ+IFJlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldDo6dGFyZ2V0SWRlbnRpZmllcigp
IGNvbnN0CiAKIE5TU3RyaW5nICpSZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQ6OmNvbm5lY3Rpb25J
ZGVudGlmaWVyKCkgY29uc3QKIHsKLSAgICByZXR1cm4gW1ttX2Nvbm5lY3Rpb25JZGVudGlmaWVy
IGNvcHldIGF1dG9yZWxlYXNlXTsKKyAgICByZXR1cm4gYWRvcHROUyhbbV9jb25uZWN0aW9uSWRl
bnRpZmllciBjb3B5XSkuYXV0b3JlbGVhc2UoKTsKIH0KIAogTlNTdHJpbmcgKlJlbW90ZUNvbm5l
Y3Rpb25Ub1RhcmdldDo6ZGVzdGluYXRpb24oKSBjb25zdAogewotICAgIHJldHVybiBbW21fZGVz
dGluYXRpb24gY29weV0gYXV0b3JlbGVhc2VdOworICAgIHJldHVybiBhZG9wdE5TKFttX2Rlc3Rp
bmF0aW9uIGNvcHldKS5hdXRvcmVsZWFzZSgpOwogfQogCiB2b2lkIFJlbW90ZUNvbm5lY3Rpb25U
b1RhcmdldDo6ZGlzcGF0Y2hBc3luY09uVGFyZ2V0KEZ1bmN0aW9uPHZvaWQgKCk+JiYgY2FsbGJh
Y2spCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMv
Y29kZWdlbi9vYmpjX2dlbmVyYXRvci5weSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3Ivc2NyaXB0cy9jb2RlZ2VuL29iamNfZ2VuZXJhdG9yLnB5CmluZGV4IGEyZDM3NmRmM2I5NDNk
ZGM5MTY3OGJiYmE1YTJlZDNmMDJlMzcwYzAuLjQ5NjQzNDIwNTE0NzhlYmIyOTNhM2ExODg4NTAx
NGJkMTE3MmNiMGMgMTAwNzU1Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
c2NyaXB0cy9jb2RlZ2VuL29iamNfZ2VuZXJhdG9yLnB5CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL29iamNfZ2VuZXJhdG9yLnB5CkBAIC00MDUs
NyArNDA1LDcgQEAgY2xhc3MgT2JqQ0dlbmVyYXRvcihHZW5lcmF0b3IpOgogICAgICAgICAgICAg
cmV0dXJuIHZhcl9uYW1lCiAgICAgICAgIGlmIGNhdGVnb3J5ID09IE9iakNUeXBlQ2F0ZWdvcnku
T2JqZWN0OgogICAgICAgICAgICAgb2JqY19jbGFzcyA9IHNlbGYub2JqY19jbGFzc19mb3JfdHlw
ZSh2YXJfdHlwZSkKLSAgICAgICAgICAgIHJldHVybiAnW1tbJXMgYWxsb2NdIGluaXRXaXRoSlNP
Tk9iamVjdDolc10gYXV0b3JlbGVhc2VdJyAlIChvYmpjX2NsYXNzLCB2YXJfbmFtZSkKKyAgICAg
ICAgICAgIHJldHVybiAnYWRvcHROUyhbWyVzIGFsbG9jXSBpbml0V2l0aEpTT05PYmplY3Q6JXNd
KS5hdXRvcmVsZWFzZSgpJyAlIChvYmpjX2NsYXNzLCB2YXJfbmFtZSkKICAgICAgICAgaWYgY2F0
ZWdvcnkgPT0gT2JqQ1R5cGVDYXRlZ29yeS5BcnJheToKICAgICAgICAgICAgIG9iamNfY2xhc3Mg
PSBzZWxmLm9iamNfY2xhc3NfZm9yX3R5cGUodmFyX3R5cGUuZWxlbWVudF90eXBlKQogICAgICAg
ICAgICAgaWYgb2JqY19jbGFzcyA9PSAnTlNTdHJpbmcnOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1Mu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2Jq
ZWN0V3JhcHBlcklPUy5tbQppbmRleCBkNDcyOTA3ZjYzNTMzZTQ4NmI5NDU0ODE3YjkzNGYyYjIy
Y2JjMzE2Li4yOTZkOTNkMzBjYTM5ZTY5M2U5MjA5MmZkM2E0NDczODQyYWQ4ZTg4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2Jq
ZWN0V3JhcHBlcklPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9X
ZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbQpAQCAtMTg5LDcgKzE4OSw3IEBAICsg
KFdlYkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyICopdGV4dE1hcmtlcldpdGhWaXNpYmxlUG9zaXRp
b246KFZpc2libGVQb3NpdGlvbiYpCiAgICAgYXV0byB0ZXh0TWFya2VyRGF0YSA9IGNhY2hlLT50
ZXh0TWFya2VyRGF0YUZvclZpc2libGVQb3NpdGlvbih2aXNpYmxlUG9zKTsKICAgICBpZiAoIXRl
eHRNYXJrZXJEYXRhKQogICAgICAgICByZXR1cm4gbmlsOwotICAgIHJldHVybiBbW1tXZWJBY2Nl
c3NpYmlsaXR5VGV4dE1hcmtlciBhbGxvY10gaW5pdFdpdGhUZXh0TWFya2VyOiZ0ZXh0TWFya2Vy
RGF0YS52YWx1ZSgpIGNhY2hlOmNhY2hlXSBhdXRvcmVsZWFzZV07CisgICAgcmV0dXJuIGFkb3B0
TlMoW1tXZWJBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciBhbGxvY10gaW5pdFdpdGhUZXh0TWFya2Vy
OiZ0ZXh0TWFya2VyRGF0YS52YWx1ZSgpIGNhY2hlOmNhY2hlXSkuYXV0b3JlbGVhc2UoKTsKIH0K
IAogKyAoV2ViQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIgKil0ZXh0TWFya2VyV2l0aENoYXJhY3Rl
ck9mZnNldDooQ2hhcmFjdGVyT2Zmc2V0JiljaGFyYWN0ZXJPZmZzZXQgY2FjaGU6KEFYT2JqZWN0
Q2FjaGUqKWNhY2hlCkBAIC0yMDQsNyArMjA0LDcgQEAgKyAoV2ViQWNjZXNzaWJpbGl0eVRleHRN
YXJrZXIgKil0ZXh0TWFya2VyV2l0aENoYXJhY3Rlck9mZnNldDooQ2hhcmFjdGVyT2Zmc2V0JikK
ICAgICBjYWNoZS0+dGV4dE1hcmtlckRhdGFGb3JDaGFyYWN0ZXJPZmZzZXQodGV4dE1hcmtlckRh
dGEsIGNoYXJhY3Rlck9mZnNldCk7CiAgICAgaWYgKCF0ZXh0TWFya2VyRGF0YS5heElEICYmICF0
ZXh0TWFya2VyRGF0YS5pZ25vcmVkKQogICAgICAgICByZXR1cm4gbmlsOwotICAgIHJldHVybiBb
W1tXZWJBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciBhbGxvY10gaW5pdFdpdGhUZXh0TWFya2VyOiZ0
ZXh0TWFya2VyRGF0YSBjYWNoZTpjYWNoZV0gYXV0b3JlbGVhc2VdOworICAgIHJldHVybiBhZG9w
dE5TKFtbV2ViQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIgYWxsb2NdIGluaXRXaXRoVGV4dE1hcmtl
cjomdGV4dE1hcmtlckRhdGEgY2FjaGU6Y2FjaGVdKS5hdXRvcmVsZWFzZSgpOwogfQogCiArIChX
ZWJBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciAqKXN0YXJ0T3JFbmRUZXh0TWFya2VyRm9yUmFuZ2U6
KGNvbnN0IE9wdGlvbmFsPFNpbXBsZVJhbmdlPiYpcmFuZ2UgaXNTdGFydDooQk9PTClpc1N0YXJ0
IGNhY2hlOihBWE9iamVjdENhY2hlKiljYWNoZQpAQCAtMjE3LDcgKzIxNyw3IEBAICsgKFdlYkFj
Y2Vzc2liaWxpdHlUZXh0TWFya2VyICopc3RhcnRPckVuZFRleHRNYXJrZXJGb3JSYW5nZTooY29u
c3QgT3B0aW9uYWw8U2ltCiAgICAgY2FjaGUtPnN0YXJ0T3JFbmRUZXh0TWFya2VyRGF0YUZvclJh
bmdlKHRleHRNYXJrZXJEYXRhLCAqcmFuZ2UsIGlzU3RhcnQpOwogICAgIGlmICghdGV4dE1hcmtl
ckRhdGEuYXhJRCkKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICByZXR1cm4gW1tbV2ViQWNjZXNz
aWJpbGl0eVRleHRNYXJrZXIgYWxsb2NdIGluaXRXaXRoVGV4dE1hcmtlcjomdGV4dE1hcmtlckRh
dGEgY2FjaGU6Y2FjaGVdIGF1dG9yZWxlYXNlXTsKKyAgICByZXR1cm4gYWRvcHROUyhbW1dlYkFj
Y2Vzc2liaWxpdHlUZXh0TWFya2VyIGFsbG9jXSBpbml0V2l0aFRleHRNYXJrZXI6JnRleHRNYXJr
ZXJEYXRhIGNhY2hlOmNhY2hlXSkuYXV0b3JlbGVhc2UoKTsKIH0KIAogLSAoTlNEYXRhICopZGF0
YVJlcHJlc2VudGF0aW9uCkBAIC0yOTAsNyArMjkwLDcgQEAgLSAoQk9PTClfcHJlcGFyZUFjY2Vz
c2liaWxpdHlDYWxsCiB7CiAgICAgLy8gcmRhcjovLzc5ODAzMTggaWYgd2Ugc3RhcnQgYSBjYWxs
LCB0aGVuIGJsb2NrIGluIFdlYlRocmVhZExvY2soKSwgdGhlbiB3ZSdyZSBkZWFsbG9jZWQgb24g
YW5vdGhlciwgdGhyZWFkLCB3ZSBjb3VsZAogICAgIC8vIGNyYXNoLCBzbyB3ZSBzaG91bGQgcmV0
YWluIG91cnNlbGYgZm9yIHRoZSBkdXJhdGlvbiBvZiB1c2FnZSBoZXJlLgotICAgIFtbc2VsZiBy
ZXRhaW5dIGF1dG9yZWxlYXNlXTsKKyAgICByZXRhaW5QdHIoc2VsZikuYXV0b3JlbGVhc2UoKTsK
IAogICAgIFdlYlRocmVhZExvY2soKTsKICAgICAKQEAgLTIzMzMsNyArMjMzMyw3IEBAIC0gKE5T
QXJyYXkgKilhcnJheU9mVGV4dEZvclRleHRNYXJrZXJzOihOU0FycmF5ICopbWFya2VycyBhdHRy
aWJ1dGVkOihCT09MKWF0dHJpCiAgICAgICAgIHJldHVybiBuaWw7CiAKICAgICAvLyBpdGVyYXRl
IG92ZXIgdGhlIHJhbmdlIHRvIGJ1aWxkIHRoZSBBWCBhdHRyaWJ1dGVkIHN0cmluZwotICAgIE5T
TXV0YWJsZUFycmF5KiBhcnJheSA9IFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdOworICAg
IGF1dG8gYXJyYXkgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKICAg
ICBUZXh0SXRlcmF0b3IgaXQoKnJhbmdlKTsKICAgICBmb3IgKDsgIWl0LmF0RW5kKCk7IGl0LmFk
dmFuY2UoKSkgewogICAgICAgICBOb2RlJiBub2RlID0gaXQucmFuZ2UoKS5zdGFydC5jb250YWlu
ZXI7CkBAIC0yMzQzLDEyICsyMzQzLDEyIEBAIC0gKE5TQXJyYXkgKilhcnJheU9mVGV4dEZvclRl
eHRNYXJrZXJzOihOU0FycmF5ICopbWFya2VycyBhdHRyaWJ1dGVkOihCT09MKWF0dHJpCiAgICAg
ICAgICAgICBpZiAoIWF0dHJpYnV0ZWQpIHsKICAgICAgICAgICAgICAgICAvLyBGaXJzdCBjaGVj
ayBpZiB0aGlzIGlzIHJlcHJlc2VudGVkIGJ5IGEgbGluay4KICAgICAgICAgICAgICAgICBBY2Nl
c3NpYmlsaXR5T2JqZWN0KiBsaW5rT2JqZWN0ID0gQWNjZXNzaWJpbGl0eU9iamVjdDo6YW5jaG9y
RWxlbWVudEZvck5vZGUoJm5vZGUpOwotICAgICAgICAgICAgICAgIGlmIChbc2VsZiBfYWRkQWNj
ZXNzaWJpbGl0eU9iamVjdDpsaW5rT2JqZWN0IHRvVGV4dE1hcmtlckFycmF5OmFycmF5XSkKKyAg
ICAgICAgICAgICAgICBpZiAoW3NlbGYgX2FkZEFjY2Vzc2liaWxpdHlPYmplY3Q6bGlua09iamVj
dCB0b1RleHRNYXJrZXJBcnJheTphcnJheS5nZXQoKV0pCiAgICAgICAgICAgICAgICAgICAgIGNv
bnRpbnVlOwogCiAgICAgICAgICAgICAgICAgLy8gTmV4dCBjaGVjayBpZiB0aGlzIHJlZ2lvbiBp
cyByZXByZXNlbnRlZCBieSBhIGhlYWRpbmcuCiAgICAgICAgICAgICAgICAgQWNjZXNzaWJpbGl0
eU9iamVjdCogaGVhZGluZ09iamVjdCA9IEFjY2Vzc2liaWxpdHlPYmplY3Q6OmhlYWRpbmdFbGVt
ZW50Rm9yTm9kZSgmbm9kZSk7Ci0gICAgICAgICAgICAgICAgaWYgKFtzZWxmIF9hZGRBY2Nlc3Np
YmlsaXR5T2JqZWN0OmhlYWRpbmdPYmplY3QgdG9UZXh0TWFya2VyQXJyYXk6YXJyYXldKQorICAg
ICAgICAgICAgICAgIGlmIChbc2VsZiBfYWRkQWNjZXNzaWJpbGl0eU9iamVjdDpoZWFkaW5nT2Jq
ZWN0IHRvVGV4dE1hcmtlckFycmF5OmFycmF5LmdldCgpXSkKICAgICAgICAgICAgICAgICAgICAg
Y29udGludWU7CiAKICAgICAgICAgICAgICAgICBTdHJpbmcgbGlzdE1hcmtlclRleHQgPSBBY2Nl
c3NpYmlsaXR5T2JqZWN0OjpsaXN0TWFya2VyVGV4dEZvck5vZGVBbmRQb3NpdGlvbigmbm9kZSwg
bWFrZUNvbnRhaW5lck9mZnNldFBvc2l0aW9uKGl0LnJhbmdlKCkuc3RhcnQpKTsKQEAgLTIzNzUs
MTIgKzIzNzUsMTIgQEAgLSAoTlNBcnJheSAqKWFycmF5T2ZUZXh0Rm9yVGV4dE1hcmtlcnM6KE5T
QXJyYXkgKiltYXJrZXJzIGF0dHJpYnV0ZWQ6KEJPT0wpYXR0cmkKICAgICAgICAgICAgIGlmIChy
ZXBsYWNlZE5vZGUpIHsKICAgICAgICAgICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmog
PSBzZWxmLmF4QmFja2luZ09iamVjdC0+YXhPYmplY3RDYWNoZSgpLT5nZXRPckNyZWF0ZShyZXBs
YWNlZE5vZGUtPnJlbmRlcmVyKCkpOwogICAgICAgICAgICAgICAgIGlmIChvYmogJiYgIW9iai0+
YWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpKQotICAgICAgICAgICAgICAgICAgICBbc2VsZiBfYWRk
QWNjZXNzaWJpbGl0eU9iamVjdDpvYmogdG9UZXh0TWFya2VyQXJyYXk6YXJyYXldOworICAgICAg
ICAgICAgICAgICAgICBbc2VsZiBfYWRkQWNjZXNzaWJpbGl0eU9iamVjdDpvYmogdG9UZXh0TWFy
a2VyQXJyYXk6YXJyYXkuZ2V0KCldOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQog
Ci0gICAgcmV0dXJuIFthcnJheSBhdXRvcmVsZWFzZV07CisgICAgcmV0dXJuIGFycmF5LmF1dG9y
ZWxlYXNlKCk7CiB9CiAKIC8vIEZJWE1FOiBObyByZWFzb24gZm9yIHRoaXMgdG8gYmUgYSBtZXRo
b2QgaW5zdGVhZCBvZiBhIGZ1bmN0aW9uLgpAQCAtMjUzOSw3ICsyNTM5LDcgQEAgLSAoaWQpX3N0
cmluZ0Zyb21TdGFydE1hcmtlcjooV2ViQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqKXN0YXJ0TWFy
a2VyIHRvRW5kTWFya2UKICAgICAKICAgICBOU0FycmF5KiBhcnJheSA9IFtzZWxmIGFycmF5T2ZU
ZXh0Rm9yVGV4dE1hcmtlcnM6QFtzdGFydE1hcmtlciwgZW5kTWFya2VyXSBhdHRyaWJ1dGVkOmF0
dHJpYnV0ZWRdOwogICAgIENsYXNzIHJldHVybkNsYXNzID0gYXR0cmlidXRlZCA/IFtOU011dGFi
bGVBdHRyaWJ1dGVkU3RyaW5nIGNsYXNzXSA6IFtOU011dGFibGVTdHJpbmcgY2xhc3NdOwotICAg
IGlkIHJldHVyblZhbHVlID0gW1soTlNTdHJpbmcgKilbcmV0dXJuQ2xhc3MgYWxsb2NdIGluaXRd
IGF1dG9yZWxlYXNlXTsKKyAgICBhdXRvIHJldHVyblZhbHVlID0gYWRvcHROUyhbKE5TU3RyaW5n
ICopW3JldHVybkNsYXNzIGFsbG9jXSBpbml0XSk7CiAgICAgCiAgICAgY29uc3QgdW5pY2hhciBh
dHRhY2htZW50Q2hhciA9IE5TQXR0YWNobWVudENoYXJhY3RlcjsKICAgICBOU0ludGVnZXIgY291
bnQgPSBbYXJyYXkgY291bnRdOwpAQCAtMjU0NywxNyArMjU0NywxNyBAQCAtIChpZClfc3RyaW5n
RnJvbVN0YXJ0TWFya2VyOihXZWJBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciopc3RhcnRNYXJrZXIg
dG9FbmRNYXJrZQogICAgICAgICBpZCBvYmplY3QgPSBbYXJyYXkgb2JqZWN0QXRJbmRleDprXTsK
IAogICAgICAgICBpZiAoYXR0cmlidXRlZCAmJiBbb2JqZWN0IGlzS2luZE9mQ2xhc3M6W1dlYkFj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGNsYXNzXV0pCi0gICAgICAgICAgICBvYmplY3QgPSBb
W1tOU011dGFibGVBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFN0cmluZzpbTlNTdHJp
bmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmF0dGFjaG1lbnRDaGFyIGxlbmd0aDoxXSBhdHRyaWJ1
dGVzOkB7IFVJQWNjZXNzaWJpbGl0eVRva2VuQXR0YWNobWVudCA6IG9iamVjdCB9XSBhdXRvcmVs
ZWFzZV07CisgICAgICAgICAgICBvYmplY3QgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXR0cmlidXRl
ZFN0cmluZyBhbGxvY10gaW5pdFdpdGhTdHJpbmc6W05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0
ZXJzOiZhdHRhY2htZW50Q2hhciBsZW5ndGg6MV0gYXR0cmlidXRlczpAeyBVSUFjY2Vzc2liaWxp
dHlUb2tlbkF0dGFjaG1lbnQgOiBvYmplY3QgfV0pLmF1dG9yZWxlYXNlKCk7CiAgICAgICAgIAog
ICAgICAgICBpZiAoIVtvYmplY3QgaXNLaW5kT2ZDbGFzczpyZXR1cm5DbGFzc10pCiAgICAgICAg
ICAgICBjb250aW51ZTsKICAgICAgICAgCiAgICAgICAgIGlmIChhdHRyaWJ1dGVkKQotICAgICAg
ICAgICAgWyhOU011dGFibGVBdHRyaWJ1dGVkU3RyaW5nICopcmV0dXJuVmFsdWUgYXBwZW5kQXR0
cmlidXRlZFN0cmluZzpvYmplY3RdOworICAgICAgICAgICAgWyhOU011dGFibGVBdHRyaWJ1dGVk
U3RyaW5nICopcmV0dXJuVmFsdWUuZ2V0KCkgYXBwZW5kQXR0cmlidXRlZFN0cmluZzpvYmplY3Rd
OwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBbKE5TTXV0YWJsZVN0cmluZyAqKXJldHVyblZh
bHVlIGFwcGVuZFN0cmluZzpvYmplY3RdOworICAgICAgICAgICAgWyhOU011dGFibGVTdHJpbmcg
KilyZXR1cm5WYWx1ZS5nZXQoKSBhcHBlbmRTdHJpbmc6b2JqZWN0XTsKICAgICB9Ci0gICAgcmV0
dXJuIHJldHVyblZhbHVlOworICAgIHJldHVybiByZXR1cm5WYWx1ZS5hdXRvcmVsZWFzZSgpOwog
fQogCiAtIChpZClfc3RyaW5nRm9yUmFuZ2U6KE5TUmFuZ2UpcmFuZ2UgYXR0cmlidXRlZDooQk9P
TClhdHRyaWJ1dGVkCkBAIC0yODQ3LDcgKzI4NDcsNyBAQCAtIChXZWJBY2Nlc3NpYmlsaXR5VGV4
dE1hcmtlciAqKW5leHRNYXJrZXJGb3JDaGFyYWN0ZXJPZmZzZXQ6KENoYXJhY3Rlck9mZnNldCYp
YwogICAgIGNhY2hlLT50ZXh0TWFya2VyRGF0YUZvck5leHRDaGFyYWN0ZXJPZmZzZXQodGV4dE1h
cmtlckRhdGEsIGNoYXJhY3Rlck9mZnNldCk7CiAgICAgaWYgKCF0ZXh0TWFya2VyRGF0YS5heElE
KQogICAgICAgICByZXR1cm4gbmlsOwotICAgIHJldHVybiBbW1tXZWJBY2Nlc3NpYmlsaXR5VGV4
dE1hcmtlciBhbGxvY10gaW5pdFdpdGhUZXh0TWFya2VyOiZ0ZXh0TWFya2VyRGF0YSBjYWNoZTpj
YWNoZV0gYXV0b3JlbGVhc2VdOworICAgIHJldHVybiBhZG9wdE5TKFtbV2ViQWNjZXNzaWJpbGl0
eVRleHRNYXJrZXIgYWxsb2NdIGluaXRXaXRoVGV4dE1hcmtlcjomdGV4dE1hcmtlckRhdGEgY2Fj
aGU6Y2FjaGVdKS5hdXRvcmVsZWFzZSgpOwogfQogCiAtIChXZWJBY2Nlc3NpYmlsaXR5VGV4dE1h
cmtlciAqKXByZXZpb3VzTWFya2VyRm9yQ2hhcmFjdGVyT2Zmc2V0OihDaGFyYWN0ZXJPZmZzZXQm
KWNoYXJhY3Rlck9mZnNldApAQCAtMjg2MCw3ICsyODYwLDcgQEAgLSAoV2ViQWNjZXNzaWJpbGl0
eVRleHRNYXJrZXIgKilwcmV2aW91c01hcmtlckZvckNoYXJhY3Rlck9mZnNldDooQ2hhcmFjdGVy
T2Zmc2UKICAgICBjYWNoZS0+dGV4dE1hcmtlckRhdGFGb3JQcmV2aW91c0NoYXJhY3Rlck9mZnNl
dCh0ZXh0TWFya2VyRGF0YSwgY2hhcmFjdGVyT2Zmc2V0KTsKICAgICBpZiAoIXRleHRNYXJrZXJE
YXRhLmF4SUQpCiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgcmV0dXJuIFtbW1dlYkFjY2Vzc2li
aWxpdHlUZXh0TWFya2VyIGFsbG9jXSBpbml0V2l0aFRleHRNYXJrZXI6JnRleHRNYXJrZXJEYXRh
IGNhY2hlOmNhY2hlXSBhdXRvcmVsZWFzZV07CisgICAgcmV0dXJuIGFkb3B0TlMoW1tXZWJBY2Nl
c3NpYmlsaXR5VGV4dE1hcmtlciBhbGxvY10gaW5pdFdpdGhUZXh0TWFya2VyOiZ0ZXh0TWFya2Vy
RGF0YSBjYWNoZTpjYWNoZV0pLmF1dG9yZWxlYXNlKCk7CiB9CiAKIC0gKE9wdGlvbmFsPFNpbXBs
ZVJhbmdlPilyYW5nZUZvclRleHRNYXJrZXJzOihOU0FycmF5ICopdGV4dE1hcmtlcnMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL0FYT2JqZWN0Q2FjaGVNYWMu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9BWE9iamVjdENhY2hlTWFjLm1t
CmluZGV4IGRjNGNkMTMwOTMwMWUyYzY5NjUzMGE2NTZmMDYyNTI5OTk5YjJjZGIuLmI3Y2ZmNzRl
NzYyYTI4ZTA0NTU3NDY0MTYxMmRlODRiNTY5NDFmMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvbWFjL0FYT2JqZWN0Q2FjaGVNYWMubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvQVhPYmplY3RDYWNoZU1hYy5tbQpAQCAtNDg5LDE1ICs0
ODksMTUgQEAgc3RhdGljIE5TRGljdGlvbmFyeSAqdGV4dFJlcGxhY2VtZW50Q2hhbmdlRGljdGlv
bmFyeShBWENvcmVPYmplY3QmIG9iamVjdCwgQVhUZXgKICAgICBOU1VJbnRlZ2VyIGxlbmd0aCA9
IFt0ZXh0IGxlbmd0aF07CiAgICAgaWYgKCFsZW5ndGgpCiAgICAgICAgIHJldHVybiBuaWw7Ci0g
ICAgTlNNdXRhYmxlRGljdGlvbmFyeSAqY2hhbmdlID0gW1tOU011dGFibGVEaWN0aW9uYXJ5IGFs
bG9jXSBpbml0V2l0aENhcGFjaXR5OjRdOworICAgIGF1dG8gY2hhbmdlID0gYWRvcHROUyhbW05T
TXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRXaXRoQ2FwYWNpdHk6NF0pOwogICAgIFtjaGFu
Z2Ugc2V0T2JqZWN0OkAocGxhdGZvcm1FZGl0VHlwZUZvcldlYkNvcmVFZGl0VHlwZSh0eXBlKSkg
Zm9yS2V5Ok5TQWNjZXNzaWJpbGl0eVRleHRFZGl0VHlwZV07CiAgICAgaWYgKGxlbmd0aCA+IEFY
VmFsdWVDaGFuZ2VUcnVuY2F0aW9uTGVuZ3RoKSB7CiAgICAgICAgIFtjaGFuZ2Ugc2V0T2JqZWN0
OkAobGVuZ3RoKSBmb3JLZXk6TlNBY2Nlc3NpYmlsaXR5VGV4dENoYW5nZVZhbHVlTGVuZ3RoXTsK
ICAgICAgICAgdGV4dCA9IFt0ZXh0IHN1YnN0cmluZ1RvSW5kZXg6QVhWYWx1ZUNoYW5nZVRydW5j
YXRpb25MZW5ndGhdOwogICAgIH0KICAgICBbY2hhbmdlIHNldE9iamVjdDp0ZXh0IGZvcktleTpO
U0FjY2Vzc2liaWxpdHlUZXh0Q2hhbmdlVmFsdWVdOwotICAgIGFkZFRleHRNYXJrZXJGb3IoY2hh
bmdlLCBvYmplY3QsIG1hcmtlclRhcmdldCk7Ci0gICAgcmV0dXJuIFtjaGFuZ2UgYXV0b3JlbGVh
c2VdOworICAgIGFkZFRleHRNYXJrZXJGb3IoY2hhbmdlLmdldCgpLCBvYmplY3QsIG1hcmtlclRh
cmdldCk7CisgICAgcmV0dXJuIGNoYW5nZS5hdXRvcmVsZWFzZSgpOwogfQogCiB2b2lkIEFYT2Jq
ZWN0Q2FjaGU6OnBvc3RUZXh0U3RhdGVDaGFuZ2VQbGF0Zm9ybU5vdGlmaWNhdGlvbihBY2Nlc3Np
YmlsaXR5T2JqZWN0KiBvYmplY3QsIEFYVGV4dEVkaXRUeXBlIHR5cGUsIGNvbnN0IFN0cmluZyYg
dGV4dCwgY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBwb3NpdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
QmFzZS5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxp
dHlPYmplY3RXcmFwcGVyQmFzZS5tbQppbmRleCBhY2FiZmEyYzQ3YmEwYzJkMTFhODI3YjI5NjA3
ZGNmZWY3NmRlYzA5Li4yNGZjOGM1ZWMzZjMyMzNmNmZmNTc3N2YxNWUzOWM3ZmJhMTM5Y2Y5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmls
aXR5T2JqZWN0V3JhcHBlckJhc2UubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlLm1tCkBAIC01MjcsNyArNTI3
LDcgQEAgc3RhdGljIGJvb2wgaXNWYWx1ZVR5cGVTdXBwb3J0ZWQoaWQgdmFsdWUpCiBzdGF0aWMg
TlNBcnJheSAqYXJyYXlSZW1vdmluZ05vblN1cHBvcnRlZFR5cGVzKE5TQXJyYXkgKmFycmF5KQog
ewogICAgIEFTU0VSVChbYXJyYXkgaXNLaW5kT2ZDbGFzczpbTlNBcnJheSBjbGFzc11dKTsKLSAg
ICBOU011dGFibGVBcnJheSAqbXV0YWJsZUFycmF5ID0gW2FycmF5IG11dGFibGVDb3B5XTsKKyAg
ICBhdXRvIG11dGFibGVBcnJheSA9IGFkb3B0TlMoW2FycmF5IG11dGFibGVDb3B5XSk7CiAgICAg
Zm9yIChOU1VJbnRlZ2VyIGkgPSAwOyBpIDwgW211dGFibGVBcnJheSBjb3VudF07KSB7CiAgICAg
ICAgIGlkIHZhbHVlID0gW211dGFibGVBcnJheSBvYmplY3RBdEluZGV4OmldOwogICAgICAgICBp
ZiAoW3ZhbHVlIGlzS2luZE9mQ2xhc3M6W05TRGljdGlvbmFyeSBjbGFzc11dKQpAQCAtNTQwLDcg
KzU0MCw3IEBAIHN0YXRpYyBOU0FycmF5ICphcnJheVJlbW92aW5nTm9uU3VwcG9ydGVkVHlwZXMo
TlNBcnJheSAqYXJyYXkpCiAgICAgICAgIH0KICAgICAgICAgaSsrOwogICAgIH0KLSAgICByZXR1
cm4gW211dGFibGVBcnJheSBhdXRvcmVsZWFzZV07CisgICAgcmV0dXJuIG11dGFibGVBcnJheS5h
dXRvcmVsZWFzZSgpOwogfQogCiBzdGF0aWMgTlNEaWN0aW9uYXJ5ICpkaWN0aW9uYXJ5UmVtb3Zp
bmdOb25TdXBwb3J0ZWRUeXBlcyhOU0RpY3Rpb25hcnkgKmRpY3Rpb25hcnkpCkBAIC01NDgsNyAr
NTQ4LDcgQEAgc3RhdGljIE5TRGljdGlvbmFyeSAqZGljdGlvbmFyeVJlbW92aW5nTm9uU3VwcG9y
dGVkVHlwZXMoTlNEaWN0aW9uYXJ5ICpkaWN0aW9uYXIKICAgICBpZiAoIWRpY3Rpb25hcnkpCiAg
ICAgICAgIHJldHVybiBuaWw7CiAgICAgQVNTRVJUKFtkaWN0aW9uYXJ5IGlzS2luZE9mQ2xhc3M6
W05TRGljdGlvbmFyeSBjbGFzc11dKTsKLSAgICBOU011dGFibGVEaWN0aW9uYXJ5ICptdXRhYmxl
RGljdGlvbmFyeSA9IFtkaWN0aW9uYXJ5IG11dGFibGVDb3B5XTsKKyAgICBhdXRvIG11dGFibGVE
aWN0aW9uYXJ5ID0gYWRvcHROUyhbZGljdGlvbmFyeSBtdXRhYmxlQ29weV0pOwogICAgIGZvciAo
TlNTdHJpbmcgKmtleSBpbiBkaWN0aW9uYXJ5KSB7CiAgICAgICAgIGlkIHZhbHVlID0gW2RpY3Rp
b25hcnkgb2JqZWN0Rm9yS2V5OmtleV07CiAgICAgICAgIGlmIChbdmFsdWUgaXNLaW5kT2ZDbGFz
czpbTlNEaWN0aW9uYXJ5IGNsYXNzXV0pCkBAIC01NTgsNyArNTU4LDcgQEAgc3RhdGljIE5TRGlj
dGlvbmFyeSAqZGljdGlvbmFyeVJlbW92aW5nTm9uU3VwcG9ydGVkVHlwZXMoTlNEaWN0aW9uYXJ5
ICpkaWN0aW9uYXIKICAgICAgICAgZWxzZSBpZiAoIWlzVmFsdWVUeXBlU3VwcG9ydGVkKHZhbHVl
KSkKICAgICAgICAgICAgIFttdXRhYmxlRGljdGlvbmFyeSByZW1vdmVPYmplY3RGb3JLZXk6a2V5
XTsKICAgICB9Ci0gICAgcmV0dXJuIFttdXRhYmxlRGljdGlvbmFyeSBhdXRvcmVsZWFzZV07Cisg
ICAgcmV0dXJuIG11dGFibGVEaWN0aW9uYXJ5LmF1dG9yZWxlYXNlKCk7CiB9CiAKIC0gKHZvaWQp
YWNjZXNzaWJpbGl0eVBvc3RlZE5vdGlmaWNhdGlvbjooTlNTdHJpbmcgKilub3RpZmljYXRpb25O
YW1lIHVzZXJJbmZvOihOU0RpY3Rpb25hcnkgKil1c2VySW5mbwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYnJpZGdlL29iamMvV2ViU2NyaXB0T2JqZWN0Lm1tIGIvU291cmNlL1dlYkNvcmUv
YnJpZGdlL29iamMvV2ViU2NyaXB0T2JqZWN0Lm1tCmluZGV4IDNhMTA2MmExMzE2YWE0OWU3NWJh
OTJkM2IzZWI2Yzc3MTlhY2JhMTEuLmJkNTJjYjQ5MTg4NmJlZTRjZDYzOTg3ZjIyMDNkNDJiN2I0
NWE5Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL1dlYlNjcmlwdE9i
amVjdC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9XZWJTY3JpcHRPYmplY3Qu
bW0KQEAgLTg2LDcgKzg2LDcgQEAgTlNPYmplY3QgKmdldEpTV3JhcHBlcihKU09iamVjdCogaW1w
bCkKICAgICBMb2NrSG9sZGVyIGhvbGRlcigmc3BpbkxvY2spOwogCiAgICAgTlNPYmplY3QqIHdy
YXBwZXIgPSB3cmFwcGVyQ2FjaGUoKS5nZXQoaW1wbCk7Ci0gICAgcmV0dXJuIHdyYXBwZXIgPyBb
W3dyYXBwZXIgcmV0YWluXSBhdXRvcmVsZWFzZV0gOiBuaWw7CisgICAgcmV0dXJuIHdyYXBwZXIg
PyByZXRhaW5QdHIod3JhcHBlcikuYXV0b3JlbGVhc2UoKSA6IG5pbDsKIH0KIAogdm9pZCBhZGRK
U1dyYXBwZXIoTlNPYmplY3QgKndyYXBwZXIsIEpTT2JqZWN0KiBpbXBsKQpAQCAtMTE2LDcgKzEx
Niw3IEBAIGlkIGNyZWF0ZUpTV3JhcHBlcihKU0M6OkpTT2JqZWN0KiBvYmplY3QsIFJlZlB0cjxK
U0M6OkJpbmRpbmdzOjpSb290T2JqZWN0PiYmIG9yCiB7CiAgICAgaWYgKGlkIHdyYXBwZXIgPSBn
ZXRKU1dyYXBwZXIob2JqZWN0KSkKICAgICAgICAgcmV0dXJuIHdyYXBwZXI7Ci0gICAgcmV0dXJu
IFtbW1dlYlNjcmlwdE9iamVjdCBhbGxvY10gX2luaXRXaXRoSlNPYmplY3Q6b2JqZWN0IG9yaWdp
blJvb3RPYmplY3Q6V1RGTW92ZShvcmlnaW4pIHJvb3RPYmplY3Q6V1RGTW92ZShyb290KV0gYXV0
b3JlbGVhc2VdOworICAgIHJldHVybiBhZG9wdE5TKFtbV2ViU2NyaXB0T2JqZWN0IGFsbG9jXSBf
aW5pdFdpdGhKU09iamVjdDpvYmplY3Qgb3JpZ2luUm9vdE9iamVjdDpXVEZNb3ZlKG9yaWdpbikg
cm9vdE9iamVjdDpXVEZNb3ZlKHJvb3QpXSkuYXV0b3JlbGVhc2UoKTsKIH0KIAogc3RhdGljIHZv
aWQgYWRkRXhjZXB0aW9uVG9Db25zb2xlKEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QsIEpTQzo6RXhjZXB0aW9uKiBleGNlcHRpb24pCkBAIC03MTQsNyArNzE0LDcgQEAg
SUdOT1JFX1dBUk5JTkdTX0VORAogCiArIChXZWJVbmRlZmluZWQgKil1bmRlZmluZWQKIHsKLSAg
ICByZXR1cm4gW1tbV2ViVW5kZWZpbmVkIGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07CisgICAg
cmV0dXJuIGFkb3B0TlMoW1tXZWJVbmRlZmluZWQgYWxsb2NdIGluaXRdKS5hdXRvcmVsZWFzZSgp
OwogfQogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvdGVzdGJpbmRp
bmdzLm1tIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3Rlc3RiaW5kaW5ncy5tbQppbmRleCA0YWM4
NTQwYjZmYTc2MTM0NjkzNTgwODFhMTVhMThhOGIwMjJiMTM3Li4yMGEwNmEzYTFmYTA4NmMwMDhi
NGQ5NzlkNjc0MDNkNThjYTZlMzJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uv
dGVzdGJpbmRpbmdzLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS90ZXN0YmluZGluZ3Mu
bW0KQEAgLTY1LDcgKzY1LDcgQEAgQGludGVyZmFjZSBNeUZpcnN0SW50ZXJmYWNlIDogTlNPYmpl
Y3QKIHsKICAgICBpbnQgbXlJbnQ7CiAgICAgUmV0YWluUHRyPE15U2Vjb25kSW50ZXJmYWNlPiBt
eVNlY29uZEludGVyZmFjZTsKLSAgICBpZCBqc29iamVjdDsKKyAgICBSZXRhaW5QdHI8aWQ+IGpz
b2JqZWN0OwogICAgIE5TU3RyaW5nICpzdHJpbmc7CiB9CiAKQEAgLTE3NCwxNSArMTc0LDE0IEBA
IC0gKHZvaWQpbG9nTWVzc2FnZTooTlNTdHJpbmcgKiltZXNzYWdlIHByZWZpeDooTlNTdHJpbmcg
KilwcmVmaXgKIAogLSAodm9pZClzZXRKU09iamVjdDooaWQpanNvCiB7Ci0gICAgW2pzb2JqZWN0
IGF1dG9yZWxlYXNlXTsKLSAgICBqc29iamVjdCA9IFtqc28gcmV0YWluXTsKKyAgICBqc29iamVj
dCA9IGpzbzsKIH0KIAogLSAodm9pZCljYWxsSlNPYmplY3Q6KGludClhcmcxIDooaW50KWFyZzIK
IHsKLSAgICBpZCBmb28xID0gW2pzb2JqZWN0IGNhbGxXZWJTY3JpcHRNZXRob2Q6QCJjYWxsIiB3
aXRoQXJndW1lbnRzOltOU0FycmF5IGFycmF5V2l0aE9iamVjdHM6anNvYmplY3QsIFtOU051bWJl
ciBudW1iZXJXaXRoSW50OmFyZzFdLCBbTlNOdW1iZXIgbnVtYmVyV2l0aEludDphcmcyXSwgbmls
XV07CisgICAgaWQgZm9vMSA9IFtqc29iamVjdCBjYWxsV2ViU2NyaXB0TWV0aG9kOkAiY2FsbCIg
d2l0aEFyZ3VtZW50czpbTlNBcnJheSBhcnJheVdpdGhPYmplY3RzOmpzb2JqZWN0LmdldCgpLCBb
TlNOdW1iZXIgbnVtYmVyV2l0aEludDphcmcxXSwgW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6YXJn
Ml0sIG5pbF1dOwogICAgIHByaW50ZiAoImZvbyAodmlhIGNhbGwpID0gJXNcbiIsIFtbZm9vMSBk
ZXNjcmlwdGlvbl0gbG9zc3lDU3RyaW5nXSApOwotICAgIGlkIGZvbzIgPSBbanNvYmplY3QgY2Fs
bFdlYlNjcmlwdE1ldGhvZDpAImFwcGx5IiB3aXRoQXJndW1lbnRzOltOU0FycmF5IGFycmF5V2l0
aE9iamVjdHM6anNvYmplY3QsIFtOU0FycmF5IGFycmF5V2l0aE9iamVjdHM6W05TTnVtYmVyIG51
bWJlcldpdGhJbnQ6YXJnMV0sIFtOU051bWJlciBudW1iZXJXaXRoSW50OmFyZzJdLCBuaWxdLCBu
aWxdXTsKKyAgICBpZCBmb28yID0gW2pzb2JqZWN0IGNhbGxXZWJTY3JpcHRNZXRob2Q6QCJhcHBs
eSIgd2l0aEFyZ3VtZW50czpbTlNBcnJheSBhcnJheVdpdGhPYmplY3RzOmpzb2JqZWN0LmdldCgp
LCBbTlNBcnJheSBhcnJheVdpdGhPYmplY3RzOltOU051bWJlciBudW1iZXJXaXRoSW50OmFyZzFd
LCBbTlNOdW1iZXIgbnVtYmVyV2l0aEludDphcmcyXSwgbmlsXSwgbmlsXV07CiAgICAgcHJpbnRm
ICgiZm9vICh2aWEgYXBwbHkpID0gJXNcbiIsIFtbZm9vMiBkZXNjcmlwdGlvbl0gbG9zc3lDU3Ry
aW5nXSApOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hU
TUxDb252ZXJ0ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0
ZXIubW0KaW5kZXggNjlmYTYxNTE1MjAzZWVkZGIxYjc3NmNhODZjZDU1OTgwZjE2MmNkZi4uMDNi
ZDJkNmViYTNiMzVmZTZkYzM5NTMyMjZmYmQ4ZDU2MGJlY2ZlOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbQpAQCAtMjI2LDcgKzIyNiw3IEBAIC0g
KE5TSW50ZWdlcilyb3dTcGFuOwogQGVuZAogCiAjZWxzZQotc3RhdGljIE5TRmlsZVdyYXBwZXIg
KmZpbGVXcmFwcGVyRm9yVVJMKERvY3VtZW50TG9hZGVyICosIE5TVVJMICopOworc3RhdGljIFJl
dGFpblB0cjxOU0ZpbGVXcmFwcGVyPiBmaWxlV3JhcHBlckZvclVSTChEb2N1bWVudExvYWRlciAq
LCBOU1VSTCAqKTsKIHN0YXRpYyBSZXRhaW5QdHI8TlNGaWxlV3JhcHBlcj4gZmlsZVdyYXBwZXJG
b3JFbGVtZW50KEhUTUxJbWFnZUVsZW1lbnQmKTsKIAogQGludGVyZmFjZSBOU1RleHRBdHRhY2ht
ZW50IChXZWJDb3JlTlNUZXh0QXR0YWNobWVudCkKQEAgLTc2NCw3ICs3NjQsNyBAQCBib29sIEhU
TUxDb252ZXJ0ZXJDYWNoZXM6OmZsb2F0UHJvcGVydHlWYWx1ZUZvck5vZGUoTm9kZSYgbm9kZSwg
Q1NTUHJvcGVydHlJRCBwcgogCiBzdGF0aWMgaW5saW5lIE5TU2hhZG93ICpfc2hhZG93Rm9yU2hh
ZG93U3R5bGUoTlNTdHJpbmcgKnNoYWRvd1N0eWxlKQogewotICAgIE5TU2hhZG93ICpzaGFkb3cg
PSBuaWw7CisgICAgUmV0YWluUHRyPE5TU2hhZG93PiBzaGFkb3c7CiAgICAgTlNVSW50ZWdlciBz
aGFkb3dTdHlsZUxlbmd0aCA9IFtzaGFkb3dTdHlsZSBsZW5ndGhdOwogICAgIE5TUmFuZ2Ugb3Bl
blBhcmVuUmFuZ2UgPSBbc2hhZG93U3R5bGUgcmFuZ2VPZlN0cmluZzpAIigiXTsKICAgICBOU1Jh
bmdlIGNsb3NlUGFyZW5SYW5nZSA9IFtzaGFkb3dTdHlsZSByYW5nZU9mU3RyaW5nOkAiKSJdOwpA
QCAtODA2LDE0ICs4MDYsMTQgQEAgc3RhdGljIGlubGluZSBOU1NoYWRvdyAqX3NoYWRvd0ZvclNo
YWRvd1N0eWxlKE5TU3RyaW5nICpzaGFkb3dTdHlsZSkKICAgICAgICAgICAgICAgICBpZiAoIXNw
YWNlUmFuZ2UubGVuZ3RoKQogICAgICAgICAgICAgICAgICAgICBzcGFjZVJhbmdlID0gTlNNYWtl
UmFuZ2UoMCwgMCk7CiAgICAgICAgICAgICAgICAgc2hhZG93Qmx1clJhZGl1cyA9IFtbc2hhZG93
U3R5bGUgc3Vic3RyaW5nV2l0aFJhbmdlOk5TTWFrZVJhbmdlKE5TTWF4UmFuZ2Uoc3BhY2VSYW5n
ZSksIHRoaXJkUmFuZ2UubG9jYXRpb24gLSBOU01heFJhbmdlKHNwYWNlUmFuZ2UpKV0gZmxvYXRW
YWx1ZV07Ci0gICAgICAgICAgICAgICAgc2hhZG93ID0gW1soTlNTaGFkb3cgKilbUGxhdGZvcm1O
U1NoYWRvdyBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOworICAgICAgICAgICAgICAgIHNoYWRv
dyA9IGFkb3B0TlMoWyhOU1NoYWRvdyAqKVtQbGF0Zm9ybU5TU2hhZG93IGFsbG9jXSBpbml0XSk7
CiAgICAgICAgICAgICAgICAgW3NoYWRvdyBzZXRTaGFkb3dDb2xvcjpzaGFkb3dDb2xvcl07CiAg
ICAgICAgICAgICAgICAgW3NoYWRvdyBzZXRTaGFkb3dPZmZzZXQ6c2hhZG93T2Zmc2V0XTsKICAg
ICAgICAgICAgICAgICBbc2hhZG93IHNldFNoYWRvd0JsdXJSYWRpdXM6c2hhZG93Qmx1clJhZGl1
c107CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9Ci0gICAgcmV0dXJuIHNoYWRvdzsK
KyAgICByZXR1cm4gc2hhZG93LmF1dG9yZWxlYXNlKCk7CiB9CiAKIGJvb2wgSFRNTENvbnZlcnRl
ckNhY2hlczo6aXNCbG9ja0VsZW1lbnQoRWxlbWVudCYgZWxlbWVudCkKQEAgLTEyNjMsNyArMTI2
Myw3IEBAIEJPT0wgSFRNTENvbnZlcnRlcjo6X2FkZEF0dGFjaG1lbnRGb3JFbGVtZW50KEVsZW1l
bnQmIGVsZW1lbnQsIE5TVVJMICp1cmwsIEJPT0wKIHsKICAgICBCT09MIHJldHZhbCA9IE5POwog
ICAgIEJPT0wgbm90Rm91bmQgPSBOTzsKLSAgICBOU0ZpbGVXcmFwcGVyICpmaWxlV3JhcHBlciA9
IG5pbDsKKyAgICBSZXRhaW5QdHI8TlNGaWxlV3JhcHBlcj4gZmlsZVdyYXBwZXI7CiAgICAgRnJh
bWUqIGZyYW1lID0gZWxlbWVudC5kb2N1bWVudCgpLmZyYW1lKCk7CiAgICAgRG9jdW1lbnRMb2Fk
ZXIgKmRhdGFTb3VyY2UgPSBmcmFtZS0+bG9hZGVyKCkuZnJhbWVIYXNMb2FkZWQoKSA/IGZyYW1l
LT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpIDogMDsKICAgICBCT09MIGlnbm9yZU9yaWVudGF0
aW9uID0gWUVTOwpAQCAtMTI3MSw3ICsxMjcxLDcgQEAgQk9PTCBIVE1MQ29udmVydGVyOjpfYWRk
QXR0YWNobWVudEZvckVsZW1lbnQoRWxlbWVudCYgZWxlbWVudCwgTlNVUkwgKnVybCwgQk9PTAog
ICAgIGlmIChbdXJsIGlzRmlsZVVSTF0pIHsKICAgICAgICAgTlNTdHJpbmcgKnBhdGggPSBbW3Vy
bCBwYXRoXSBzdHJpbmdCeVN0YW5kYXJkaXppbmdQYXRoXTsKICAgICAgICAgaWYgKHBhdGgpCi0g
ICAgICAgICAgICBmaWxlV3JhcHBlciA9IFtbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRXaXRo
VVJMOnVybCBvcHRpb25zOjAgZXJyb3I6TlVMTF0gYXV0b3JlbGVhc2VdOworICAgICAgICAgICAg
ZmlsZVdyYXBwZXIgPSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFdpdGhVUkw6
dXJsIG9wdGlvbnM6MCBlcnJvcjpOVUxMXSk7CiAgICAgfQogICAgIGlmICghZmlsZVdyYXBwZXIg
JiYgZGF0YVNvdXJjZSkgewogICAgICAgICBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiByZXNvdXJj
ZSA9IGRhdGFTb3VyY2UtPnN1YnJlc291cmNlKHVybCk7CkBAIC0xMjgyLDcgKzEyODIsNyBAQCBC
T09MIEhUTUxDb252ZXJ0ZXI6Ol9hZGRBdHRhY2htZW50Rm9yRWxlbWVudChFbGVtZW50JiBlbGVt
ZW50LCBOU1VSTCAqdXJsLCBCT09MCiAgICAgICAgIGlmICh1c2VQbGFjZWhvbGRlciAmJiByZXNv
dXJjZSAmJiBtaW1lVHlwZSA9PSAidGV4dC9odG1sIikKICAgICAgICAgICAgIG5vdEZvdW5kID0g
WUVTOwogICAgICAgICBpZiAocmVzb3VyY2UgJiYgIW5vdEZvdW5kKSB7Ci0gICAgICAgICAgICBm
aWxlV3JhcHBlciA9IFtbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhD
b250ZW50czpyZXNvdXJjZS0+ZGF0YSgpLmNyZWF0ZU5TRGF0YSgpLmdldCgpXSBhdXRvcmVsZWFz
ZV07CisgICAgICAgICAgICBmaWxlV3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFs
bG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6cmVzb3VyY2UtPmRhdGEoKS5jcmVhdGVO
U0RhdGEoKS5nZXQoKV0pOwogICAgICAgICAgICAgW2ZpbGVXcmFwcGVyIHNldFByZWZlcnJlZEZp
bGVuYW1lOnN1Z2dlc3RlZEZpbGVuYW1lV2l0aE1JTUVUeXBlKHVybCwgbWltZVR5cGUpXTsKICAg
ICAgICAgfQogICAgIH0KQEAgLTEzMTYsNyArMTMxNiw3IEBAIEJPT0wgSFRNTENvbnZlcnRlcjo6
X2FkZEF0dGFjaG1lbnRGb3JFbGVtZW50KEVsZW1lbnQmIGVsZW1lbnQsIE5TVVJMICp1cmwsIEJP
T0wKICAgICB9CiAgICAgaWYgKGZpbGVXcmFwcGVyIHx8IHVzZVBsYWNlaG9sZGVyKSB7CiAgICAg
ICAgIE5TVUludGVnZXIgdGV4dExlbmd0aCA9IFtfYXR0clN0ciBsZW5ndGhdOwotICAgICAgICBS
ZXRhaW5QdHI8TlNUZXh0QXR0YWNobWVudD4gYXR0YWNobWVudCA9IGFkb3B0TlMoW1tQbGF0Zm9y
bU5TVGV4dEF0dGFjaG1lbnQgYWxsb2NdIGluaXRXaXRoRmlsZVdyYXBwZXI6ZmlsZVdyYXBwZXJd
KTsKKyAgICAgICAgUmV0YWluUHRyPE5TVGV4dEF0dGFjaG1lbnQ+IGF0dGFjaG1lbnQgPSBhZG9w
dE5TKFtbUGxhdGZvcm1OU1RleHRBdHRhY2htZW50IGFsbG9jXSBpbml0V2l0aEZpbGVXcmFwcGVy
OmZpbGVXcmFwcGVyLmdldCgpXSk7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAgICAg
ZmxvYXQgdmVydGljYWxBbGlnbiA9IDAuMDsKICAgICAgICAgX2NhY2hlcy0+ZmxvYXRQcm9wZXJ0
eVZhbHVlRm9yTm9kZShlbGVtZW50LCBDU1NQcm9wZXJ0eVZlcnRpY2FsQWxpZ24sIHZlcnRpY2Fs
QWxpZ24pOwpAQCAtMTUyMiw3ICsxNTIyLDggQEAgc3RhdGljIGlubGluZSBOU0RhdGUgKl9kYXRl
Rm9yU3RyaW5nKE5TU3RyaW5nICpzdHJpbmcpCiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgW2Rh
dGVDb21wb25lbnRzIHNldFNlY29uZDpjb21wb25lbnRdOwogICAgIAotICAgIHJldHVybiBbW1tb
TlNDYWxlbmRhciBhbGxvY10gaW5pdFdpdGhDYWxlbmRhcklkZW50aWZpZXI6TlNDYWxlbmRhcklk
ZW50aWZpZXJHcmVnb3JpYW5dIGF1dG9yZWxlYXNlXSBkYXRlRnJvbUNvbXBvbmVudHM6ZGF0ZUNv
bXBvbmVudHMuZ2V0KCldOworICAgIGF1dG8gY2FsZW5kYXIgPSBhZG9wdE5TKFtbTlNDYWxlbmRh
ciBhbGxvY10gaW5pdFdpdGhDYWxlbmRhcklkZW50aWZpZXI6TlNDYWxlbmRhcklkZW50aWZpZXJH
cmVnb3JpYW5dKTsKKyAgICByZXR1cm4gW2NhbGVuZGFyIGRhdGVGcm9tQ29tcG9uZW50czpkYXRl
Q29tcG9uZW50cy5nZXQoKV07CiB9CiAKIHN0YXRpYyBOU0ludGVnZXIgX2NvbENvbXBhcmUoaWQg
YmxvY2sxLCBpZCBibG9jazIsIHZvaWQgKikKQEAgLTIzMDIsMTQgKzIzMDMsMTQgQEAgTm9kZSog
SFRNTENvbnZlcnRlckNhY2hlczo6Y2FjaGVBbmNlc3RvcnNPZlN0YXJ0VG9CZUNvbnZlcnRlZChj
b25zdCBQb3NpdGlvbiYgc3QKIAogI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogCi1zdGF0aWMg
TlNGaWxlV3JhcHBlciAqZmlsZVdyYXBwZXJGb3JVUkwoRG9jdW1lbnRMb2FkZXIqIGRhdGFTb3Vy
Y2UsIE5TVVJMICpVUkwpCitzdGF0aWMgUmV0YWluUHRyPE5TRmlsZVdyYXBwZXI+IGZpbGVXcmFw
cGVyRm9yVVJMKERvY3VtZW50TG9hZGVyKiBkYXRhU291cmNlLCBOU1VSTCAqVVJMKQogewogICAg
IGlmIChbVVJMIGlzRmlsZVVSTF0pCi0gICAgICAgIHJldHVybiBbW1tOU0ZpbGVXcmFwcGVyIGFs
bG9jXSBpbml0V2l0aFVSTDpbVVJMIFVSTEJ5UmVzb2x2aW5nU3ltbGlua3NJblBhdGhdIG9wdGlv
bnM6MCBlcnJvcjpudWxscHRyXSBhdXRvcmVsZWFzZV07CisgICAgICAgIHJldHVybiBhZG9wdE5T
KFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFdpdGhVUkw6W1VSTCBVUkxCeVJlc29sdmluZ1N5
bWxpbmtzSW5QYXRoXSBvcHRpb25zOjAgZXJyb3I6bnVsbHB0cl0pOwogCiAgICAgaWYgKGRhdGFT
b3VyY2UpIHsKICAgICAgICAgaWYgKFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IHJlc291cmNlID0g
ZGF0YVNvdXJjZS0+c3VicmVzb3VyY2UoVVJMKSkgewotICAgICAgICAgICAgTlNGaWxlV3JhcHBl
ciAqd3JhcHBlciA9IFtbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhD
b250ZW50czpyZXNvdXJjZS0+ZGF0YSgpLmNyZWF0ZU5TRGF0YSgpLmdldCgpXSBhdXRvcmVsZWFz
ZV07CisgICAgICAgICAgICBhdXRvIHdyYXBwZXIgPSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBh
bGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOnJlc291cmNlLT5kYXRhKCkuY3JlYXRl
TlNEYXRhKCkuZ2V0KCldKTsKICAgICAgICAgICAgIE5TU3RyaW5nICpmaWxlbmFtZSA9IHJlc291
cmNlLT5yZXNwb25zZSgpLnN1Z2dlc3RlZEZpbGVuYW1lKCk7CiAgICAgICAgICAgICBpZiAoIWZp
bGVuYW1lIHx8ICFbZmlsZW5hbWUgbGVuZ3RoXSkKICAgICAgICAgICAgICAgICBmaWxlbmFtZSA9
IHN1Z2dlc3RlZEZpbGVuYW1lV2l0aE1JTUVUeXBlKHJlc291cmNlLT51cmwoKSwgcmVzb3VyY2Ut
Pm1pbWVUeXBlKCkpOwpAQCAtMjMyMCw3ICsyMzIxLDcgQEAgc3RhdGljIE5TRmlsZVdyYXBwZXIg
KmZpbGVXcmFwcGVyRm9yVVJMKERvY3VtZW50TG9hZGVyKiBkYXRhU291cmNlLCBOU1VSTCAqVVJM
KQogCiAgICAgTlNDYWNoZWRVUkxSZXNwb25zZSAqY2FjaGVkUmVzcG9uc2UgPSBbW05TVVJMQ2Fj
aGUgc2hhcmVkVVJMQ2FjaGVdIGNhY2hlZFJlc3BvbnNlRm9yUmVxdWVzdDphZG9wdE5TKFtbTlNN
dXRhYmxlVVJMUmVxdWVzdCBhbGxvY10gaW5pdFdpdGhVUkw6VVJMXSkuZ2V0KCldOwogICAgIGlm
IChjYWNoZWRSZXNwb25zZSkgewotICAgICAgICBOU0ZpbGVXcmFwcGVyICp3cmFwcGVyID0gW1tb
TlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOltjYWNoZWRS
ZXNwb25zZSBkYXRhXV0gYXV0b3JlbGVhc2VdOworICAgICAgICBhdXRvIHdyYXBwZXIgPSBhZG9w
dE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOltj
YWNoZWRSZXNwb25zZSBkYXRhXV0pOwogICAgICAgICBbd3JhcHBlciBzZXRQcmVmZXJyZWRGaWxl
bmFtZTpbW2NhY2hlZFJlc3BvbnNlIHJlc3BvbnNlXSBzdWdnZXN0ZWRGaWxlbmFtZV1dOwogICAg
ICAgICByZXR1cm4gd3JhcHBlcjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL2NvY29hL1dlYkFyY2hpdmVSZXNvdXJjZVdlYlJlc291cmNlSGFuZGxlci5tbSBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQXJjaGl2ZVJlc291cmNlV2ViUmVzb3VyY2VI
YW5kbGVyLm1tCmluZGV4IDJkMzNiODVmZDM1ZjBhOGVkODNiNDYwYTA3MjlmNzk4ODhhYzIxN2Qu
Ljc4ZTQ0ZWFhMWI5YTY2ZjNlNjZhODFjYmU2NDgwOGQxOTMyZTgyZmIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQXJjaGl2ZVJlc291cmNlV2ViUmVzb3VyY2VI
YW5kbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQXJjaGl2ZVJl
c291cmNlV2ViUmVzb3VyY2VIYW5kbGVyLm1tCkBAIC0zMyw3ICszMyw3IEBAIEBpbXBsZW1lbnRh
dGlvbiBXZWJBcmNoaXZlUmVzb3VyY2VXZWJSZXNvdXJjZUhhbmRsZXIKIAogLSAoaWQpcmVzb3Vy
Y2VGb3JEYXRhOihOU0RhdGEgKilkYXRhIFVSTDooTlNVUkwgKil1cmwgTUlNRVR5cGU6KE5TU3Ry
aW5nICopbWltZVR5cGUgdGV4dEVuY29kaW5nTmFtZTooTlNTdHJpbmcgKil0ZXh0RW5jb2RpbmdO
YW1lIGZyYW1lTmFtZTooTlNTdHJpbmcgKilmcmFtZU5hbWUKIHsKLSAgICByZXR1cm4gW1tbV2Vi
QXJjaGl2ZVJlc291cmNlRnJvbU5TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhEYXRh
OmRhdGEgVVJMOnVybCBNSU1FVHlwZTptaW1lVHlwZSB0ZXh0RW5jb2RpbmdOYW1lOnRleHRFbmNv
ZGluZ05hbWUgZnJhbWVOYW1lOmZyYW1lTmFtZV0gYXV0b3JlbGVhc2VdOworICAgIHJldHVybiBh
ZG9wdE5TKFtbV2ViQXJjaGl2ZVJlc291cmNlRnJvbU5TQXR0cmlidXRlZFN0cmluZyBhbGxvY10g
aW5pdFdpdGhEYXRhOmRhdGEgVVJMOnVybCBNSU1FVHlwZTptaW1lVHlwZSB0ZXh0RW5jb2RpbmdO
YW1lOnRleHRFbmNvZGluZ05hbWUgZnJhbWVOYW1lOmZyYW1lTmFtZV0pLmF1dG9yZWxlYXNlKCk7
CiB9CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2Vi
Q29udGVudFJlYWRlckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJD
b250ZW50UmVhZGVyQ29jb2EubW0KaW5kZXggYjk5MmQ3YTAzN2U1MzQ0ZGM4Yjk0ZGMxY2IxZGFk
Zjg0Zjg5MDZkOC4uZDU4OTZmZDk0MDIzOTg0MmEwNjM5NTEwMTdiNzJlYmQxYTY0ZTJlNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29j
b2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVy
Q29jb2EubW0KQEAgLTEyOCw3ICsxMjgsNyBAQCBzdGF0aWMgTlNEaWN0aW9uYXJ5ICphdHRyaWJ1
dGVzRm9yQXR0cmlidXRlZFN0cmluZ0NvbnZlcnNpb24oKQogICAgICAgICBAIkludGVyY2hhbmdl
TmV3bGluZSI6IEBZRVMsCiAgICAgICAgIEAiQ29hbGVzY2VUYWJTcGFucyI6IEBZRVMsCiAgICAg
ICAgIEAiT3V0cHV0QmFzZVVSTCI6IGJhc2VVUkwsCi0gICAgICAgIEAiV2ViUmVzb3VyY2VIYW5k
bGVyIjogW1tXZWJBcmNoaXZlUmVzb3VyY2VXZWJSZXNvdXJjZUhhbmRsZXIgbmV3XSBhdXRvcmVs
ZWFzZV0sCisgICAgICAgIEAiV2ViUmVzb3VyY2VIYW5kbGVyIjogYWRvcHROUyhbV2ViQXJjaGl2
ZVJlc291cmNlV2ViUmVzb3VyY2VIYW5kbGVyIG5ld10pLmF1dG9yZWxlYXNlKCksCiAgICAgfTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL21hYy9Mb2FkZXJOU1VSTEV4
dHJhcy5tbSBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9tYWMvTG9hZGVyTlNVUkxFeHRyYXMubW0K
aW5kZXggMDFiNTA3M2JkZjExNGRkZmYwNDZjYzFmNjdlMDA4NGUyNTFmZGFhYS4uNTUwZGFiODBl
ZTNhYTQ2MDcyMWRlYjZjMzBjODVhOGU2ZGYwYTA0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL21hYy9Mb2FkZXJOU1VSTEV4dHJhcy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvbWFjL0xvYWRlck5TVVJMRXh0cmFzLm1tCkBAIC04OCw3ICs4OCw3IEBAIE5TU3RyaW5n
ICpzdWdnZXN0ZWRGaWxlbmFtZVdpdGhNSU1FVHlwZShOU1VSTCAqdXJsLCBjb25zdCBTdHJpbmcm
IG1pbWVUeXBlKQogCiBOU1N0cmluZyAqZmlsZW5hbWVCeUZpeGluZ0lsbGVnYWxDaGFyYWN0ZXJz
KE5TU3RyaW5nICpzdHJpbmcpCiB7Ci0gICAgTlNNdXRhYmxlU3RyaW5nICpmaWxlbmFtZSA9IFtb
c3RyaW5nIG11dGFibGVDb3B5XSBhdXRvcmVsZWFzZV07CisgICAgYXV0byBmaWxlbmFtZSA9IGFk
b3B0TlMoW3N0cmluZyBtdXRhYmxlQ29weV0pOwogCiAgICAgLy8gU3RyaXAgbnVsbCBjaGFyYWN0
ZXJzLgogICAgIHVuaWNoYXIgbnVsbENoYXIgPSAwOwpAQCAtMTA0LDUgKzEwNCw1IEBAIE5TU3Ry
aW5nICpmaWxlbmFtZUJ5Rml4aW5nSWxsZWdhbENoYXJhY3RlcnMoTlNTdHJpbmcgKnN0cmluZykK
ICAgICB3aGlsZSAoW2ZpbGVuYW1lIGhhc1ByZWZpeDpAIi4iXSkKICAgICAgICAgW2ZpbGVuYW1l
IGRlbGV0ZUNoYXJhY3RlcnNJblJhbmdlOk5TTWFrZVJhbmdlKDAsIDEpXTsKIAotICAgIHJldHVy
biBmaWxlbmFtZTsKKyAgICByZXR1cm4gZmlsZW5hbWUuYXV0b3JlbGVhc2UoKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDLm1tCmluZGV4IDMyOTg2ZTdkYTllNTcxYTg1MWIxZDUzMjRhODFkYzBmODNh
ZmFiNmEuLmE3OTEzNGE0ZTdiZWE2ZjA1NzdiYTUyMDNiOTZlZWNjMTBkMDI3NWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQy5tbQpAQCAtOTIwLDcgKzkyMCw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y3JlYXRlQVZBc3NldEZvclVSTChjb25zdCBVUkwmIHVybCwg
UmV0CiAgICAgICAgICYmIFtyZXNvdXJjZUxvYWRlciByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVj
dG9yKFVSTFNlc3Npb25EYXRhRGVsZWdhdGVRdWV1ZSldKSB7CiAgICAgICAgIFJlZlB0cjxQbGF0
Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXI+IG1lZGlhUmVzb3VyY2VMb2FkZXIgPSBwbGF5ZXIoKS0+
Y3JlYXRlUmVzb3VyY2VMb2FkZXIoKTsKICAgICAgICAgaWYgKG1lZGlhUmVzb3VyY2VMb2FkZXIp
Ci0gICAgICAgICAgICByZXNvdXJjZUxvYWRlci5VUkxTZXNzaW9uID0gKE5TVVJMU2Vzc2lvbiAq
KVtbW1dlYkNvcmVOU1VSTFNlc3Npb24gYWxsb2NdIGluaXRXaXRoUmVzb3VyY2VMb2FkZXI6Km1l
ZGlhUmVzb3VyY2VMb2FkZXIgZGVsZWdhdGU6cmVzb3VyY2VMb2FkZXIuVVJMU2Vzc2lvbkRhdGFE
ZWxlZ2F0ZSBkZWxlZ2F0ZVF1ZXVlOnJlc291cmNlTG9hZGVyLlVSTFNlc3Npb25EYXRhRGVsZWdh
dGVRdWV1ZV0gYXV0b3JlbGVhc2VdOworICAgICAgICAgICAgcmVzb3VyY2VMb2FkZXIuVVJMU2Vz
c2lvbiA9IChOU1VSTFNlc3Npb24gKilhZG9wdE5TKFtbV2ViQ29yZU5TVVJMU2Vzc2lvbiBhbGxv
Y10gaW5pdFdpdGhSZXNvdXJjZUxvYWRlcjoqbWVkaWFSZXNvdXJjZUxvYWRlciBkZWxlZ2F0ZTpy
ZXNvdXJjZUxvYWRlci5VUkxTZXNzaW9uRGF0YURlbGVnYXRlIGRlbGVnYXRlUXVldWU6cmVzb3Vy
Y2VMb2FkZXIuVVJMU2Vzc2lvbkRhdGFEZWxlZ2F0ZVF1ZXVlXSkuYXV0b3JlbGVhc2UoKTsKICAg
ICB9CiAKICAgICBtX2hhdmVDaGVja2VkUGxheWFiaWxpdHkgPSBmYWxzZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJBVlBsYXllckNvbnRyb2xsZXIubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViQVZQbGF5ZXJDb250cm9sbGVyLm1tCmluZGV4
IDY2YzkyMTI0ZmU4Njc1NDZhNzdmMjRjM2UzMjI5N2RiMjNlN2VmMjMuLjk2OGE0MTFkOWZkMmUy
YWE5YzQwZDljYWRjYjkxZjkxM2EyY2UyMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy9XZWJBVlBsYXllckNvbnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW9zL1dlYkFWUGxheWVyQ29udHJvbGxlci5tbQpAQCAtNjksNyArNjksNyBAQCAt
IChpbnN0YW5jZXR5cGUpaW5pdAogICAgICAgICByZXR1cm4gc2VsZjsKIAogICAgIGluaXRBVlBs
YXllckNvbnRyb2xsZXIoKTsKLSAgICBzZWxmLnBsYXllckNvbnRyb2xsZXJQcm94eSA9IFtbYWxs
b2NBVlBsYXllckNvbnRyb2xsZXJJbnN0YW5jZSgpIGluaXRdIGF1dG9yZWxlYXNlXTsKKyAgICBz
ZWxmLnBsYXllckNvbnRyb2xsZXJQcm94eSA9IGFkb3B0TlMoW2FsbG9jQVZQbGF5ZXJDb250cm9s
bGVySW5zdGFuY2UoKSBpbml0XSkuYXV0b3JlbGVhc2UoKTsKICAgICBfbGl2ZVN0cmVhbUV2ZW50
TW9kZVBvc3NpYmxlID0gWUVTOwogCiAgICAgW3NlbGYgYWRkT2JzZXJ2ZXI6c2VsZiBmb3JLZXlQ
YXRoOkAic2Vla2FibGVUaW1lUmFuZ2VzIiBvcHRpb25zOihOU0tleVZhbHVlT2JzZXJ2aW5nT3B0
aW9uT2xkIHwgTlNLZXlWYWx1ZU9ic2VydmluZ09wdGlvbk5ldyB8IE5TS2V5VmFsdWVPYnNlcnZp
bmdPcHRpb25Jbml0aWFsKSBjb250ZXh0OldlYkFWUGxheWVyQ29udHJvbGxlclNlZWthYmxlVGlt
ZVJhbmdlc09ic2VydmVyQ29udGV4dF07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pb3MvV2ViRXZlbnQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViRXZl
bnQubW0KaW5kZXggZjg0M2M1NGE0NmEyZjJjZjQ3OWYzODZjYjg0YWNkY2Q1YjUxZmY2OC4uZjI5
OWE2NWZlM2E2YWFlODVkODY4Y2ZhYjQ5MjYyMmZlMzU5M2JjMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkV2ZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy9XZWJFdmVudC5tbQpAQCAtMzgwLDE5ICszODAsMTkgQEAgLSAoTlNTdHJpbmcg
KiljaGFyYWN0ZXJzCiB7CiAgICAgQVNTRVJUKF90eXBlID09IFdlYkV2ZW50S2V5RG93biB8fCBf
dHlwZSA9PSBXZWJFdmVudEtleVVwKTsKICAgICBBU1NFUlQoIShfa2V5Ym9hcmRGbGFncyAmIFdl
YkV2ZW50S2V5Ym9hcmRJbnB1dE1vZGlmaWVyRmxhZ3NDaGFuZ2VkKSk7Ci0gICAgcmV0dXJuIFtb
X2NoYXJhY3RlcnMgcmV0YWluXSBhdXRvcmVsZWFzZV07CisgICAgcmV0dXJuIHJldGFpblB0cihf
Y2hhcmFjdGVycykuYXV0b3JlbGVhc2UoKTsKIH0KIAogLSAoTlNTdHJpbmcgKiljaGFyYWN0ZXJz
SWdub3JpbmdNb2RpZmllcnMKIHsKICAgICBBU1NFUlQoX3R5cGUgPT0gV2ViRXZlbnRLZXlEb3du
IHx8IF90eXBlID09IFdlYkV2ZW50S2V5VXApOwogICAgIEFTU0VSVCghKF9rZXlib2FyZEZsYWdz
ICYgV2ViRXZlbnRLZXlib2FyZElucHV0TW9kaWZpZXJGbGFnc0NoYW5nZWQpKTsKLSAgICByZXR1
cm4gW1tfY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzIHJldGFpbl0gYXV0b3JlbGVhc2VdOwor
ICAgIHJldHVybiByZXRhaW5QdHIoX2NoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVycykuYXV0b3Jl
bGVhc2UoKTsKIH0KIAogLSAoTlNTdHJpbmcgKilpbnB1dE1hbmFnZXJIaW50CiB7Ci0gICAgcmV0
dXJuIFtbX2lucHV0TWFuYWdlckhpbnQgcmV0YWluXSBhdXRvcmVsZWFzZV07CisgICAgcmV0dXJu
IHJldGFpblB0cihfaW5wdXRNYW5hZ2VySGludCkuYXV0b3JlbGVhc2UoKTsKIH0KIAogLSAoV2Vi
RXZlbnRGbGFncyltb2RpZmllckZsYWdzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pb3MvV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZC5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy9XZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkLm1tCmluZGV4IDFlYTY2MjU5OWMw
NDU5NDU3ODA2ODYxZjI1MTcwODBkM2Y5MzU0YjQuLjQ3ZDc3NzI2MTAwZWQwMzU5YTljYTY0Nzdj
MmY5YzNkYTcyMDg2OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9X
ZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2lvcy9XZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkLm1tCkBAIC0zNjksNyArMzY5LDcgQEAgQGlt
cGxlbWVudGF0aW9uIFdlYkl0ZW1Qcm92aWRlckxvYWRSZXN1bHQgewogCiArIChpbnN0YW5jZXR5
cGUpbG9hZFJlc3VsdFdpdGhJdGVtUHJvdmlkZXI6KE5TSXRlbVByb3ZpZGVyICopaXRlbVByb3Zp
ZGVyIHR5cGVzVG9Mb2FkOihOU0FycmF5PE5TU3RyaW5nICo+ICopdHlwZXNUb0xvYWQKIHsKLSAg
ICByZXR1cm4gW1tbc2VsZiBhbGxvY10gaW5pdFdpdGhJdGVtUHJvdmlkZXI6aXRlbVByb3ZpZGVy
IHR5cGVzVG9Mb2FkOnR5cGVzVG9Mb2FkXSBhdXRvcmVsZWFzZV07CisgICAgcmV0dXJuIGFkb3B0
TlMoW1tzZWxmIGFsbG9jXSBpbml0V2l0aEl0ZW1Qcm92aWRlcjppdGVtUHJvdmlkZXIgdHlwZXNU
b0xvYWQ6dHlwZXNUb0xvYWRdKS5hdXRvcmVsZWFzZSgpOwogfQogCiAtIChpbnN0YW5jZXR5cGUp
aW5pdFdpdGhJdGVtUHJvdmlkZXI6KE5TSXRlbVByb3ZpZGVyICopaXRlbVByb3ZpZGVyIHR5cGVz
VG9Mb2FkOihOU0FycmF5PE5TU3RyaW5nICo+ICopdHlwZXNUb0xvYWQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQVZL
aXQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuQ29u
dHJvbGxlckFWS2l0Lm1tCmluZGV4IDRiOGEwM2I2NzVjZGUxMWRkZWZjODI2OWRmN2JlYzY5NWMz
OTQ3OWIuLjY2YmM0ZGZiMmZmZDZjMWQyZDhlMmM0MjU1ZTkyYzBlYjNlMmYxMDEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9s
bGVyQVZLaXQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVs
bHNjcmVlbkNvbnRyb2xsZXJBVktpdC5tbQpAQCAtMTA2Miw3ICsxMDYyLDcgQEAgLSAodm9pZClk
aWRGaW5pc2hGdWxsc2NyZWVuOihWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dCopY29u
dGV4dAogewogICAgIEFTU0VSVChXZWJUaHJlYWRJc0N1cnJlbnQoKSk7CiAgICAgQVNTRVJUX1VO
VVNFRChjb250ZXh0LCBjb250ZXh0ID09IF9jb250ZXh0KTsKLSAgICBbW3NlbGYgcmV0YWluXSBh
dXRvcmVsZWFzZV07IC8vIHJldGFpbiBzZWxmIGJlZm9yZSBicmVha2luZyBhIHJldGFpbiBjeWNs
ZS4KKyAgICByZXRhaW5QdHIoc2VsZikuYXV0b3JlbGVhc2UoKTsgLy8gcmV0YWluIHNlbGYgYmVm
b3JlIGJyZWFraW5nIGEgcmV0YWluIGN5Y2xlLgogICAgIF9jb250ZXh0LT5zZXRDb250cm9sbGVy
KG5pbCk7CiAgICAgX2NvbnRleHQgPSBudWxscHRyOwogICAgIF92aWRlb0VsZW1lbnQgPSBudWxs
cHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XQUtWaWV3
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XQUtWaWV3Lm1tCmluZGV4IGY2
YTc1NDU2N2Y1Y2FkYzg4MTc3NzI1N2JmMzJiZWU3MDQ1ZDk1NjEuLjVkNjI3MjY5YTcxN2M1ZTA4
MDkzNWFlMWNhZjE0ZjI4MDA2ZTQ0OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2lvcy93YWsvV0FLVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
d2FrL1dBS1ZpZXcubW0KQEAgLTE5OCw3ICsxOTgsNyBAQCArIChXQUtWaWV3ICopX3dyYXBwZXJG
b3JWaWV3UmVmOihXS1ZpZXdSZWYpX3ZpZXdSZWYKIHsKICAgICBBU1NFUlQoX3ZpZXdSZWYpOwog
ICAgIGlmIChfdmlld1JlZi0+aXNhLmNsYXNzSW5mbyA9PSAmV0tWaWV3Q2xhc3NJbmZvKQotICAg
ICAgICByZXR1cm4gW1tbV0FLVmlldyBhbGxvY10gX2luaXRXaXRoVmlld1JlZjpfdmlld1JlZl0g
YXV0b3JlbGVhc2VdOworICAgICAgICByZXR1cm4gYWRvcHROUyhbW1dBS1ZpZXcgYWxsb2NdIF9p
bml0V2l0aFZpZXdSZWY6X3ZpZXdSZWZdKS5hdXRvcmVsZWFzZSgpOwogICAgIFdLRXJyb3IgKCJ1
bmFibGUgdG8gY3JlYXRlIHdyYXBwZXIgZm9yICVzXG4iLCBfdmlld1JlZi0+aXNhLmNsYXNzSW5m
by0+bmFtZSk7CiAgICAgcmV0dXJuIG5pbDsKIH0KQEAgLTIzOCw3ICsyMzgsNyBAQCAtIChpZClp
bml0V2l0aEZyYW1lOihDR1JlY3QpcmVjdAogCiAtICh2b2lkKWRlYWxsb2MKIHsKLSAgICBbW1tz
dWJ2aWV3UmVmZXJlbmNlcyBjb3B5XSBhdXRvcmVsZWFzZV0gbWFrZU9iamVjdHNQZXJmb3JtU2Vs
ZWN0b3I6QHNlbGVjdG9yKHJlbW92ZUZyb21TdXBlcnZpZXcpXTsKKyAgICBbYWRvcHROUyhbc3Vi
dmlld1JlZmVyZW5jZXMgY29weV0pLmF1dG9yZWxlYXNlKCkgbWFrZU9iamVjdHNQZXJmb3JtU2Vs
ZWN0b3I6QHNlbGVjdG9yKHJlbW92ZUZyb21TdXBlcnZpZXcpXTsKIAogICAgIGlmICh2aWV3UmVm
KSB7CiAgICAgICAgIF9XS1ZpZXdTZXRWaWV3Q29udGV4dCAodmlld1JlZiwgMCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCmluZGV4IGYzMjZhNjlmOTU2
MGZjMzQxZmRiYzQ2MDc1ODlhYzAwN2E2ODYyZjUuLjEyYmMzZDZhZThlMmNmMWJjNTJhM2EwZDZk
ZTFiOTI3MTljN2ViZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Q
YXN0ZWJvYXJkTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJv
YXJkTWFjLm1tCkBAIC0yNDgsOSArMjQ4LDkgQEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZShjb25z
dCBDb2xvciYgY29sb3IpCiAKIHN0YXRpYyBOU0ZpbGVXcmFwcGVyKiBmaWxlV3JhcHBlcihjb25z
dCBQYXN0ZWJvYXJkSW1hZ2UmIHBhc3RlYm9hcmRJbWFnZSkKIHsKLSAgICBOU0ZpbGVXcmFwcGVy
ICp3cmFwcGVyID0gW1tbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENv
bnRlbnRzOnBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZURhdGEtPmNyZWF0ZU5TRGF0YSgpLmdldCgp
XSBhdXRvcmVsZWFzZV07CisgICAgYXV0byB3cmFwcGVyID0gYWRvcHROUyhbW05TRmlsZVdyYXBw
ZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpwYXN0ZWJvYXJkSW1hZ2UucmVz
b3VyY2VEYXRhLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogICAgIFt3cmFwcGVyIHNldFByZWZl
cnJlZEZpbGVuYW1lOnN1Z2dlc3RlZEZpbGVuYW1lV2l0aE1JTUVUeXBlKHBhc3RlYm9hcmRJbWFn
ZS51cmwudXJsLCBwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VNSU1FVHlwZSldOwotICAgIHJldHVy
biB3cmFwcGVyOworICAgIHJldHVybiB3cmFwcGVyLmF1dG9yZWxlYXNlKCk7CiB9CiAKIHN0YXRp
YyB2b2lkIHdyaXRlRmlsZVdyYXBwZXJBc1JURkRBdHRhY2htZW50KE5TRmlsZVdyYXBwZXIgKndy
YXBwZXIsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGludDY0X3QmIG5ld0NoYW5nZUNv
dW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVOU1VS
TEV4dHJhcy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlTlNVUkxFeHRy
YXMubW0KaW5kZXggYzc1ZDIwZjBmNzc1NjE3OWQ0ZjlkODAyODFlY2E0NDhlZDIwMGI4Zi4uMTNj
ODJiMjZhNmIwODNlYThjMzdjOTI4NGY3YzQ4ZWI5NTNhYTlmOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVOU1VSTEV4dHJhcy5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZU5TVVJMRXh0cmFzLm1tCkBAIC01Miw4ICs1Miw3
IEBAIE5TVVJMICpVUkxCeUNhbm9uaWNhbGl6aW5nVVJMKE5TVVJMICpVUkwpCiAgICAgLy8gKHNl
ZSA1MzE1OTI2KS4gSXQgbWlnaHQgbWFrZSBzZW5zZSB0byBhcHBseSBvbmx5IHRoZSBVUkwgY29u
Y2VwdCBhbmQgbm90IHRoZSBOU1VSTAogICAgIC8vIGNvbmNlcHQsIGJ1dCBpdCdzIHRvbyByaXNr
eSB0byBtYWtlIHRoYXQgY2hhbmdlIGZvciBXZWJLaXQgMy4wLgogICAgIE5TVVJMUmVxdWVzdCAq
bmV3UmVxdWVzdCA9IFtjb25jcmV0ZUNsYXNzIGNhbm9uaWNhbFJlcXVlc3RGb3JSZXF1ZXN0OnJl
cXVlc3QuZ2V0KCldOwotICAgIE5TVVJMICpuZXdVUkwgPSBbbmV3UmVxdWVzdCBVUkxdOyAKLSAg
ICByZXR1cm4gW1tuZXdVUkwgcmV0YWluXSBhdXRvcmVsZWFzZV07CisgICAgcmV0dXJuIHJldGFp
blB0cihbbmV3UmVxdWVzdCBVUkxdKS5hdXRvcmVsZWFzZSgpOwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViTlNB
dHRyaWJ1dGVkU3RyaW5nRXh0cmFzLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dl
Yk5TQXR0cmlidXRlZFN0cmluZ0V4dHJhcy5tbQppbmRleCA1NzJjMzVmMTgzMDY0YzhhODg4YjFj
OWRhNjRhMTE2MmRkZGRjZjA0Li5kZmYwNjc4MjgwNzQ5OTFjYzM2OGYxM2ViNDk5Mzk4MGI0Yjlh
OTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViTlNBdHRyaWJ1
dGVkU3RyaW5nRXh0cmFzLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJO
U0F0dHJpYnV0ZWRTdHJpbmdFeHRyYXMubW0KQEAgLTU1LDEzICs1NSwxMyBAQCBOU0F0dHJpYnV0
ZWRTdHJpbmcgKmF0dHJpYnV0ZWRTdHJpbmdCeVN0cmlwcGluZ0F0dGFjaG1lbnRDaGFyYWN0ZXJz
KE5TQXR0cmlidXRlZAogICAgIAogICAgIGF0dGFjaG1lbnRSYW5nZSA9IFtvcmlnaW5hbFN0cmlu
ZyByYW5nZU9mU3RyaW5nOmF0dGFjaG1lbnRDaGFyU3RyaW5nXTsKICAgICBpZiAoYXR0YWNobWVu
dFJhbmdlLmxvY2F0aW9uICE9IE5TTm90Rm91bmQgJiYgYXR0YWNobWVudFJhbmdlLmxlbmd0aCA+
IDApIHsKLSAgICAgICAgTlNNdXRhYmxlQXR0cmlidXRlZFN0cmluZyAqbmV3QXR0cmlidXRlZFN0
cmluZyA9IFtbYXR0cmlidXRlZFN0cmluZyBtdXRhYmxlQ29weVdpdGhab25lOk5VTExdIGF1dG9y
ZWxlYXNlXTsKKyAgICAgICAgYXV0byBuZXdBdHRyaWJ1dGVkU3RyaW5nID0gYWRvcHROUyhbYXR0
cmlidXRlZFN0cmluZyBtdXRhYmxlQ29weVdpdGhab25lOk5VTExdKTsKICAgICAgICAgCiAgICAg
ICAgIHdoaWxlIChhdHRhY2htZW50UmFuZ2UubG9jYXRpb24gIT0gTlNOb3RGb3VuZCAmJiBhdHRh
Y2htZW50UmFuZ2UubGVuZ3RoID4gMCkgewogICAgICAgICAgICAgW25ld0F0dHJpYnV0ZWRTdHJp
bmcgcmVwbGFjZUNoYXJhY3RlcnNJblJhbmdlOmF0dGFjaG1lbnRSYW5nZSB3aXRoU3RyaW5nOkAi
Il07CiAgICAgICAgICAgICBhdHRhY2htZW50UmFuZ2UgPSBbW25ld0F0dHJpYnV0ZWRTdHJpbmcg
c3RyaW5nXSByYW5nZU9mU3RyaW5nOmF0dGFjaG1lbnRDaGFyU3RyaW5nXTsKICAgICAgICAgfQot
ICAgICAgICByZXR1cm4gbmV3QXR0cmlidXRlZFN0cmluZzsKKyAgICAgICAgcmV0dXJuIG5ld0F0
dHJpYnV0ZWRTdHJpbmcuYXV0b3JlbGVhc2UoKTsKICAgICB9CiAgICAgCiAgICAgcmV0dXJuIGF0
dHJpYnV0ZWRTdHJpbmc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NmL1Jlc291cmNlUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jZi9SZXNvdXJjZVJlcXVlc3QuaAppbmRleCA3MWE5MjJmMzEyMzQ5MjdjZmE4YmNkMWVjNzQ4
YjdmNDQ3ZGUzNTcwLi43Mzg1Njk4NmZlMzUzZTk0MmI4MzBlNGVjMjg1ZTJkNWRkM2Y4ZmMyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVx
dWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VS
ZXF1ZXN0LmgKQEAgLTEyNyw3ICsxMjcsNyBAQCBpbmxpbmUgYm9vbCBSZXNvdXJjZVJlcXVlc3Q6
OnJlc291cmNlUHJpb3JpdGllc0VuYWJsZWQoKQogfQogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi1O
U1VSTFJlcXVlc3QgKmNvcHlSZXF1ZXN0V2l0aFN0b3JhZ2VTZXNzaW9uKENGVVJMU3RvcmFnZVNl
c3Npb25SZWYsIE5TVVJMUmVxdWVzdCAqKTsKK1JldGFpblB0cjxOU1VSTFJlcXVlc3Q+IGNvcHlS
ZXF1ZXN0V2l0aFN0b3JhZ2VTZXNzaW9uKENGVVJMU3RvcmFnZVNlc3Npb25SZWYsIE5TVVJMUmVx
dWVzdCAqKTsKIFdFQkNPUkVfRVhQT1JUIE5TQ2FjaGVkVVJMUmVzcG9uc2UgKmNhY2hlZFJlc3Bv
bnNlRm9yUmVxdWVzdChDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmLCBOU1VSTFJlcXVlc3QgKik7CiAj
ZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2Nv
YS9OZXR3b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY29jb2EvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ29jb2EubW0KaW5kZXggOTUwYTNh
ZThkODc0OWI1ZDUzNGFkMmRjZTMwYTY3Y2Y1MjdhMTgxNi4uODBiZDY2ZDc4ZDQxYTc1MGEyNjBl
ZWJjOWY2N2Y0YmNiNmZiZTIxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jb2NvYS9OZXR3b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNvY29h
Lm1tCkBAIC0xNjIsNyArMTYyLDcgQEAgTlNIVFRQQ29va2llU3RvcmFnZSAqTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uOjpuc0Nvb2tpZVN0b3JhZ2UoKSBjb25zdAogICAgIGlmICghY2ZDb29raWVTdG9y
YWdlIHx8IFtOU0hUVFBDb29raWVTdG9yYWdlIHNoYXJlZEhUVFBDb29raWVTdG9yYWdlXS5fY29v
a2llU3RvcmFnZSA9PSBjZkNvb2tpZVN0b3JhZ2UpCiAgICAgICAgIHJldHVybiBbTlNIVFRQQ29v
a2llU3RvcmFnZSBzaGFyZWRIVFRQQ29va2llU3RvcmFnZV07CiAKLSAgICByZXR1cm4gW1tbTlNI
VFRQQ29va2llU3RvcmFnZSBhbGxvY10gX2luaXRXaXRoQ0ZIVFRQQ29va2llU3RvcmFnZTpjZkNv
b2tpZVN0b3JhZ2UuZ2V0KCldIGF1dG9yZWxlYXNlXTsKKyAgICByZXR1cm4gYWRvcHROUyhbW05T
SFRUUENvb2tpZVN0b3JhZ2UgYWxsb2NdIF9pbml0V2l0aENGSFRUUENvb2tpZVN0b3JhZ2U6Y2ZD
b29raWVTdG9yYWdlLmdldCgpXSkuYXV0b3JlbGVhc2UoKTsKIH0KIAogQ29va2llU3RvcmFnZU9i
c2VydmVyJiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZVN0b3JhZ2VPYnNlcnZlcigpIGNv
bnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jl
c291cmNlUmVxdWVzdENvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
b2NvYS9SZXNvdXJjZVJlcXVlc3RDb2NvYS5tbQppbmRleCBkODZmNGM5MDVlYmZlMjdjNzNiMjVh
N2Y2M2I2MzA1YjlmZWJmNmEwLi40MTk5OWI3MjFjOTc4ODU2NDk5NDE0MjZiZTIzOGVjNjhlYmJj
Y2I2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jl
c291cmNlUmVxdWVzdENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY29jb2EvUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0KQEAgLTQ0LDcgKzQ0LDggQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogTlNVUkxSZXF1ZXN0ICpSZXNvdXJjZVJlcXVlc3Q6Om5zVVJMUmVxdWVz
dChIVFRQQm9keVVwZGF0ZVBvbGljeSBib2R5UG9saWN5KSBjb25zdAogewogICAgIHVwZGF0ZVBs
YXRmb3JtUmVxdWVzdChib2R5UG9saWN5KTsKLSAgICByZXR1cm4gW1ttX25zUmVxdWVzdC5nZXQo
KSByZXRhaW5dIGF1dG9yZWxlYXNlXTsKKyAgICBhdXRvIHJlcXVlc3RDb3B5ID0gbV9uc1JlcXVl
c3Q7CisgICAgcmV0dXJuIHJlcXVlc3RDb3B5LmF1dG9yZWxlYXNlKCk7CiB9CiAKIENGVVJMUmVx
dWVzdFJlZiBSZXNvdXJjZVJlcXVlc3Q6OmNmVVJMUmVxdWVzdChIVFRQQm9keVVwZGF0ZVBvbGlj
eSBib2R5UG9saWN5KSBjb25zdApAQCAtMjYwLDE3ICsyNjEsMTcgQEAgdm9pZCBSZXNvdXJjZVJl
cXVlc3Q6OmRvVXBkYXRlUGxhdGZvcm1IVFRQQm9keSgpCiB2b2lkIFJlc291cmNlUmVxdWVzdDo6
c2V0U3RvcmFnZVNlc3Npb24oQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZiBzdG9yYWdlU2Vzc2lvbikK
IHsKICAgICB1cGRhdGVQbGF0Zm9ybVJlcXVlc3QoKTsKLSAgICBtX25zUmVxdWVzdCA9IGFkb3B0
TlMoY29weVJlcXVlc3RXaXRoU3RvcmFnZVNlc3Npb24oc3RvcmFnZVNlc3Npb24sIG1fbnNSZXF1
ZXN0LmdldCgpKSk7CisgICAgbV9uc1JlcXVlc3QgPSBjb3B5UmVxdWVzdFdpdGhTdG9yYWdlU2Vz
c2lvbihzdG9yYWdlU2Vzc2lvbiwgbV9uc1JlcXVlc3QuZ2V0KCkpOwogfQogCi1OU1VSTFJlcXVl
c3QgKmNvcHlSZXF1ZXN0V2l0aFN0b3JhZ2VTZXNzaW9uKENGVVJMU3RvcmFnZVNlc3Npb25SZWYg
c3RvcmFnZVNlc3Npb24sIE5TVVJMUmVxdWVzdCAqcmVxdWVzdCkKK1JldGFpblB0cjxOU1VSTFJl
cXVlc3Q+IGNvcHlSZXF1ZXN0V2l0aFN0b3JhZ2VTZXNzaW9uKENGVVJMU3RvcmFnZVNlc3Npb25S
ZWYgc3RvcmFnZVNlc3Npb24sIE5TVVJMUmVxdWVzdCAqcmVxdWVzdCkKIHsKICAgICBpZiAoIXN0
b3JhZ2VTZXNzaW9uIHx8ICFyZXF1ZXN0KQotICAgICAgICByZXR1cm4gW3JlcXVlc3QgY29weV07
CisgICAgICAgIHJldHVybiBhZG9wdE5TKFtyZXF1ZXN0IGNvcHldKTsKIAogICAgIGF1dG8gY2ZS
ZXF1ZXN0ID0gYWRvcHRDRihDRlVSTFJlcXVlc3RDcmVhdGVNdXRhYmxlQ29weShrQ0ZBbGxvY2F0
b3JEZWZhdWx0LCBbcmVxdWVzdCBfQ0ZVUkxSZXF1ZXN0XSkpOwogICAgIF9DRlVSTFJlcXVlc3RT
ZXRTdG9yYWdlU2Vzc2lvbihjZlJlcXVlc3QuZ2V0KCksIHN0b3JhZ2VTZXNzaW9uKTsKLSAgICBy
ZXR1cm4gW1tOU1VSTFJlcXVlc3QgYWxsb2NdIF9pbml0V2l0aENGVVJMUmVxdWVzdDpjZlJlcXVl
c3QuZ2V0KCldOworICAgIHJldHVybiBhZG9wdE5TKFtbTlNVUkxSZXF1ZXN0IGFsbG9jXSBfaW5p
dFdpdGhDRlVSTFJlcXVlc3Q6Y2ZSZXF1ZXN0LmdldCgpXSk7CiB9CiAKIE5TQ2FjaGVkVVJMUmVz
cG9uc2UgKmNhY2hlZFJlc3BvbnNlRm9yUmVxdWVzdChDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmIHN0
b3JhZ2VTZXNzaW9uLCBOU1VSTFJlcXVlc3QgKnJlcXVlc3QpCkBAIC0yODMsNyArMjg0LDcgQEAg
TlNDYWNoZWRVUkxSZXNwb25zZSAqY2FjaGVkUmVzcG9uc2VGb3JSZXF1ZXN0KENGVVJMU3RvcmFn
ZVNlc3Npb25SZWYgc3RvcmFnZVNlc3MKICAgICBpZiAoIWNhY2hlZFJlc3BvbnNlKQogICAgICAg
ICByZXR1cm4gbmlsOwogCi0gICAgcmV0dXJuIFtbW05TQ2FjaGVkVVJMUmVzcG9uc2UgYWxsb2Nd
IF9pbml0V2l0aENGQ2FjaGVkVVJMUmVzcG9uc2U6Y2FjaGVkUmVzcG9uc2UuZ2V0KCldIGF1dG9y
ZWxlYXNlXTsKKyAgICByZXR1cm4gYWRvcHROUyhbW05TQ2FjaGVkVVJMUmVzcG9uc2UgYWxsb2Nd
IF9pbml0V2l0aENGQ2FjaGVkVVJMUmVzcG9uc2U6Y2FjaGVkUmVzcG9uc2UuZ2V0KCldKS5hdXRv
cmVsZWFzZSgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Np
b24ubW0KaW5kZXggYzIyZTg3ZDg2OGRkMzE3ZDlkZGY5OWRlNGVhMWYzNGZlN2M4ODM3Ni4uNjUz
YjhlZWUyN2Q0YzU2NjcyOTFiOGU3ZGJhMTU0Y2JiMjdjYTIyNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vz
c2lvbi5tbQpAQCAtNDQzLDEyICs0NDMsMTIgQEAgLSAoTlNVUkxTZXNzaW9uRGF0YVRhc2sgKilk
YXRhVGFza1dpdGhSZXF1ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0CiAgICAgaWYgKF9pbnZh
bGlkYXRlZCkKICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAgIFdlYkNvcmVOU1VSTFNlc3Npb25E
YXRhVGFzayAqdGFzayA9IFtbV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrIGFsbG9jXSBpbml0
V2l0aFNlc3Npb246c2VsZiBpZGVudGlmaWVyOl9uZXh0VGFza0lkZW50aWZpZXIrKyByZXF1ZXN0
OnJlcXVlc3RdOworICAgIGF1dG8gdGFzayA9IGFkb3B0TlMoW1tXZWJDb3JlTlNVUkxTZXNzaW9u
RGF0YVRhc2sgYWxsb2NdIGluaXRXaXRoU2Vzc2lvbjpzZWxmIGlkZW50aWZpZXI6X25leHRUYXNr
SWRlbnRpZmllcisrIHJlcXVlc3Q6cmVxdWVzdF0pOwogICAgIHsKICAgICAgICAgTG9ja2VyPExv
Y2s+IGxvY2tlcihfZGF0YVRhc2tzTG9jayk7Ci0gICAgICAgIF9kYXRhVGFza3MuYWRkKHRhc2sp
OworICAgICAgICBfZGF0YVRhc2tzLmFkZCh0YXNrLmdldCgpKTsKICAgICB9Ci0gICAgcmV0dXJu
IChOU1VSTFNlc3Npb25EYXRhVGFzayAqKVt0YXNrIGF1dG9yZWxlYXNlXTsKKyAgICByZXR1cm4g
KE5TVVJMU2Vzc2lvbkRhdGFUYXNrICopdGFzay5hdXRvcmVsZWFzZSgpOwogfQogCiAtIChOU1VS
TFNlc3Npb25EYXRhVGFzayAqKWRhdGFUYXNrV2l0aFVSTDooTlNVUkwgKil1cmwKQEAgLTY2MSw5
ICs2NjEsOSBAQCAtIChpZClpbml0V2l0aFNlc3Npb246KFdlYkNvcmVOU1VSTFNlc3Npb24gKilz
ZXNzaW9uIGlkZW50aWZpZXI6KE5TVUludGVnZXIpaWRlbgogCiAgICAgLy8gQ29yZU1lZGlhIHdp
bGwgZXhwbGljaXRseSBhZGQgYSB1c2VyIGFnZW50IGhlYWRlci4gUmVtb3ZlIGlmIHByZXNlbnQu
CiAgICAgaWYgKGF1dG8qIHVzZXJBZ2VudFZhbHVlID0gW3JlcXVlc3QgdmFsdWVGb3JIVFRQSGVh
ZGVyRmllbGQ6QCJVc2VyLUFnZW50Il0pIHsKLSAgICAgICAgTlNNdXRhYmxlVVJMUmVxdWVzdCog
bXV0YWJsZVJlcXVlc3QgPSBbcmVxdWVzdCBtdXRhYmxlQ29weVdpdGhab25lOm5pbF07CisgICAg
ICAgIGF1dG8gbXV0YWJsZVJlcXVlc3QgPSBhZG9wdE5TKFtyZXF1ZXN0IG11dGFibGVDb3B5V2l0
aFpvbmU6bmlsXSk7CiAgICAgICAgIFttdXRhYmxlUmVxdWVzdCBzZXRWYWx1ZTpuaWwgZm9ySFRU
UEhlYWRlckZpZWxkOkAiVXNlci1BZ2VudCJdOwotICAgICAgICByZXF1ZXN0ID0gW211dGFibGVS
ZXF1ZXN0IGF1dG9yZWxlYXNlXTsKKyAgICAgICAgcmVxdWVzdCA9IG11dGFibGVSZXF1ZXN0LmF1
dG9yZWxlYXNlKCk7CiAgICAgfQogCiAgICAgc2VsZi5vcmlnaW5hbFJlcXVlc3QgPSBzZWxmLmN1
cnJlbnRSZXF1ZXN0ID0gcmVxdWVzdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvbWFjL0F1dGhlbnRpY2F0aW9uTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9tYWMvQXV0aGVudGljYXRpb25NYWMubW0KaW5kZXggZmI0ZGU3MjA4NmM5
NzMwMDdkYmQ5MGJkMDQxMzU0NjdmMDk4NTZlMy4uY2ZjZjEwZmNhZjIxOThjYjFlODkyNDI5ZTk2
NmJjYTIzMjY5M2Q5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9tYWMvQXV0aGVudGljYXRpb25NYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9tYWMvQXV0aGVudGljYXRpb25NYWMubW0KQEAgLTE1Nyw3ICsxNTcsNyBAQCBOU1VS
TEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICptYWMoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UmIGNvcmVDaGFsbGVuZ2UpCiAgICAgaWYgKGNvcmVDaGFsbGVuZ2UubnNVUkxBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZSgpKQogICAgICAgICByZXR1cm4gY29yZUNoYWxsZW5nZS5uc1VSTEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlKCk7CiAgICAgICAgIAotICAgIHJldHVybiBbW1tOU1VSTEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlIGFsbG9jXSBpbml0V2l0aFByb3RlY3Rpb25TcGFjZTpjb3JlQ2hh
bGxlbmdlLnByb3RlY3Rpb25TcGFjZSgpLm5zU3BhY2UoKSBwcm9wb3NlZENyZWRlbnRpYWw6Y29y
ZUNoYWxsZW5nZS5wcm9wb3NlZENyZWRlbnRpYWwoKS5uc0NyZWRlbnRpYWwoKSBwcmV2aW91c0Zh
aWx1cmVDb3VudDpjb3JlQ2hhbGxlbmdlLnByZXZpb3VzRmFpbHVyZUNvdW50KCkgZmFpbHVyZVJl
c3BvbnNlOmNvcmVDaGFsbGVuZ2UuZmFpbHVyZVJlc3BvbnNlKCkubnNVUkxSZXNwb25zZSgpIGVy
cm9yOmNvcmVDaGFsbGVuZ2UuZXJyb3IoKSBzZW5kZXI6Y29yZUNoYWxsZW5nZS5zZW5kZXIoKV0g
YXV0b3JlbGVhc2VdOworICAgIHJldHVybiBhZG9wdE5TKFtbTlNVUkxBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSBhbGxvY10gaW5pdFdpdGhQcm90ZWN0aW9uU3BhY2U6Y29yZUNoYWxsZW5nZS5wcm90
ZWN0aW9uU3BhY2UoKS5uc1NwYWNlKCkgcHJvcG9zZWRDcmVkZW50aWFsOmNvcmVDaGFsbGVuZ2Uu
cHJvcG9zZWRDcmVkZW50aWFsKCkubnNDcmVkZW50aWFsKCkgcHJldmlvdXNGYWlsdXJlQ291bnQ6
Y29yZUNoYWxsZW5nZS5wcmV2aW91c0ZhaWx1cmVDb3VudCgpIGZhaWx1cmVSZXNwb25zZTpjb3Jl
Q2hhbGxlbmdlLmZhaWx1cmVSZXNwb25zZSgpLm5zVVJMUmVzcG9uc2UoKSBlcnJvcjpjb3JlQ2hh
bGxlbmdlLmVycm9yKCkgc2VuZGVyOmNvcmVDaGFsbGVuZ2Uuc2VuZGVyKCldKS5hdXRvcmVsZWFz
ZSgpOwogfQogCiBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSBjb3JlKE5TVVJMQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UgKm1hY0NoYWxsZW5nZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlRXJyb3JNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUVycm9yTWFjLm1tCmluZGV4IDM3MWVkZDYwYmFh
OTkzN2JiZDlkNTJkZWEyN2RlYjM4NTJiMjAwYmYuLmFkNjlhNWYwN2JhNDc4Y2E5N2Y0ODNhMTJj
MzA1ODViNjVhOGVlODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvbWFjL1Jlc291cmNlRXJyb3JNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9tYWMvUmVzb3VyY2VFcnJvck1hYy5tbQpAQCAtNTYsNyArNTYsNyBAQCBzdGF0aWMg
TlNEaWN0aW9uYXJ5KiBkaWN0aW9uYXJ5VGhhdENhbkNvZGUoTlNEaWN0aW9uYXJ5KiBzcmMpCiAg
ICAgLy8gVGhpcyBmdW5jdGlvbiBtYWtlcyBhIGNvcHkgb2YgaW5wdXQgZGljdGlvbmFyeSwgbW9k
aWZpZXMgaXQgc3VjaCB0aGF0IGl0ICJzaG91bGQiIChhcyBtdWNoIGFzIHdlIGNhbiBoZWxwIGl0
KQogICAgIC8vIG5vdCBjb250YWluIGFueSBvYmplY3RzIHRoYXQgZG8gbm90IGNvbmZvcm0gdG8g
TlNDb2RpbmcgcHJvdG9jb2wsIGFuZCByZXR1cm5zIGl0IGF1dG9yZWxlYXNlZC4KIAotICAgIE5T
TXV0YWJsZURpY3Rpb25hcnkqIGRzdCA9IFtzcmMgbXV0YWJsZUNvcHldOworICAgIGF1dG8gZHN0
ID0gYWRvcHROUyhbc3JjIG11dGFibGVDb3B5XSk7CiAKICAgICAvLyBLaWxsIHRoZSBrbm93biBw
cm9ibGVtIGVudHJpZXMuCiAgICAgW2RzdCByZW1vdmVPYmplY3RGb3JLZXk6QCJOU0Vycm9yUGVl
ckNlcnRpZmljYXRlQ2hhaW5LZXkiXTsgLy8gTlNBcnJheSB3aXRoIFNlY0NlcnRpZmljYXRlUmVm
IG9iamVjdHMKQEAgLTc3LDcgKzc3LDcgQEAgc3RhdGljIE5TRGljdGlvbmFyeSogZGljdGlvbmFy
eVRoYXRDYW5Db2RlKE5TRGljdGlvbmFyeSogc3JjKQogICAgICAgICAvLyBGSVhNRTogV2UgY291
bGQgZHJpbGwgZG93biBpbnRvIHN1YmRpY3Rpb25hcmllcywgYnV0IGl0IHNlZW1zIG1vcmUgdHJv
dWJsZSB0aGFuIGl0J3Mgd29ydGgKICAgICB9XTsKIAotICAgIHJldHVybiBbZHN0IGF1dG9yZWxl
YXNlXTsKKyAgICByZXR1cm4gZHN0LmF1dG9yZWxlYXNlKCk7CiB9CiAKIC0gKHZvaWQpZW5jb2Rl
V2l0aENvZGVyOihOU0NvZGVyICopY29kZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlSGFuZGxlTWFjLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMubW0KaW5kZXggYjJjYmFiN2M4
YWNmMmMzOTVmOTg0NzBhNTBiZjA3ODJkOTEyY2E1YS4uMzEzNTU0ZGRmY2NhODgzN2Y4OGZhYTM2
YTE0ZDdhZTMyYTBjMDM5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMubW0KQEAgLTE3MywxNCArMTczLDE0IEBA
IHZvaWQgUmVzb3VyY2VIYW5kbGU6OmNyZWF0ZU5TVVJMQ29ubmVjdGlvbihpZCBkZWxlZ2F0ZSwg
Ym9vbCBzaG91bGRVc2VDcmVkZW50aWFsCiAgICAgbnNSZXF1ZXN0ID0gYXBwbHlTbmlmZmluZ1Bv
bGljaWVzSWZOZWVkZWQobnNSZXF1ZXN0LCBzaG91bGRDb250ZW50U25pZmYsIHNob3VsZENvbnRl
bnRFbmNvZGluZ1NuaWZmKTsKIAogICAgIGlmIChkLT5tX3N0b3JhZ2VTZXNzaW9uKQotICAgICAg
ICBuc1JlcXVlc3QgPSBbY29weVJlcXVlc3RXaXRoU3RvcmFnZVNlc3Npb24oZC0+bV9zdG9yYWdl
U2Vzc2lvbi5nZXQoKSwgbnNSZXF1ZXN0KSBhdXRvcmVsZWFzZV07CisgICAgICAgIG5zUmVxdWVz
dCA9IGNvcHlSZXF1ZXN0V2l0aFN0b3JhZ2VTZXNzaW9uKGQtPm1fc3RvcmFnZVNlc3Npb24uZ2V0
KCksIG5zUmVxdWVzdCkuYXV0b3JlbGVhc2UoKTsKIAogICAgIEFTU0VSVChbTlNVUkxDb25uZWN0
aW9uIGluc3RhbmNlc1Jlc3BvbmRUb1NlbGVjdG9yOkBzZWxlY3RvcihfaW5pdFdpdGhSZXF1ZXN0
OmRlbGVnYXRlOnVzZXNDYWNoZTptYXhDb250ZW50TGVuZ3RoOnN0YXJ0SW1tZWRpYXRlbHk6Y29u
bmVjdGlvblByb3BlcnRpZXM6KV0pOwogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAv
LyBGSVhNRTogVGhpcyBjb2RlIGlzIGRpZmZlcmVudCBmcm9tIGlPUyBjb2RlIGluIFJlc291cmNl
SGFuZGxlQ0ZOZXQuY3BwIGluIHRoYXQgaGVyZSB3ZSByZXNwZWN0IHN0cmVhbSBwcm9wZXJ0aWVz
IHRoYXQgd2VyZSBwcmVzZW50IGluIGNsaWVudCBwcm9wZXJ0aWVzLgogICAgIE5TRGljdGlvbmFy
eSAqc3RyZWFtUHJvcGVydGllc0Zyb21DbGllbnQgPSBbY29ubmVjdGlvblByb3BlcnRpZXMgb2Jq
ZWN0Rm9yS2V5OkAia0NGVVJMQ29ubmVjdGlvblNvY2tldFN0cmVhbVByb3BlcnRpZXMiXTsKLSAg
ICBOU011dGFibGVEaWN0aW9uYXJ5ICpzdHJlYW1Qcm9wZXJ0aWVzID0gc3RyZWFtUHJvcGVydGll
c0Zyb21DbGllbnQgPyBbW3N0cmVhbVByb3BlcnRpZXNGcm9tQ2xpZW50IG11dGFibGVDb3B5XSBh
dXRvcmVsZWFzZV0gOiBbTlNNdXRhYmxlRGljdGlvbmFyeSBkaWN0aW9uYXJ5XTsKKyAgICBOU011
dGFibGVEaWN0aW9uYXJ5ICpzdHJlYW1Qcm9wZXJ0aWVzID0gc3RyZWFtUHJvcGVydGllc0Zyb21D
bGllbnQgPyBhZG9wdE5TKFtzdHJlYW1Qcm9wZXJ0aWVzRnJvbUNsaWVudCBtdXRhYmxlQ29weV0p
LmF1dG9yZWxlYXNlKCkgOiBbTlNNdXRhYmxlRGljdGlvbmFyeSBkaWN0aW9uYXJ5XTsKICNlbHNl
CiAgICAgTlNNdXRhYmxlRGljdGlvbmFyeSAqc3RyZWFtUHJvcGVydGllcyA9IFtOU011dGFibGVE
aWN0aW9uYXJ5IGRpY3Rpb25hcnldOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlVVJMUmVzcG9uc2UubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlVVJMUmVzcG9uc2UubW0KaW5kZXggZDIw
Nzg3YmNiMWI4ZjlhZDdhY2JiZTM4MWI5YzQ5NGFmNWMxMGE5MS4uYmIxMTZhOWRmZjNlODAyNDll
M2MxZmYxMGVlOTEyOWM3MDU2ZmQxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9tYWMvV2ViQ29yZVVSTFJlc3BvbnNlLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVVUkxSZXNwb25zZS5tbQpAQCAtMzQyLDcgKzM0
Miw3IEBAIE5TVVJMUmVzcG9uc2UgKnN5bnRoZXNpemVSZWRpcmVjdFJlc3BvbnNlSWZOZWNlc3Nh
cnkoTlNVUkxSZXF1ZXN0ICpjdXJyZW50UmVxdWVzCiAgICAgaWYgKFtbW25ld1JlcXVlc3QgVVJM
XSBzY2hlbWVdIGlzRXF1YWxUb1N0cmluZzpbW2N1cnJlbnRSZXF1ZXN0IFVSTF0gc2NoZW1lXV0g
JiYgIVtuZXdSZXF1ZXN0IF9zY2hlbWVXYXNVcGdyYWRlZER1ZVRvRHluYW1pY0hTVFNdKQogICAg
ICAgICByZXR1cm4gbmlsOwogCi0gICAgcmV0dXJuIFtbUmVzb3VyY2VSZXNwb25zZTo6c3ludGhl
dGljUmVkaXJlY3RSZXNwb25zZShVUkwoW2N1cnJlbnRSZXF1ZXN0IFVSTF0pLCBVUkwoW25ld1Jl
cXVlc3QgVVJMXSkpLm5zVVJMUmVzcG9uc2UoKSByZXRhaW5dIGF1dG9yZWxlYXNlXTsKKyAgICBy
ZXR1cm4gcmV0YWluUHRyKFJlc291cmNlUmVzcG9uc2U6OnN5bnRoZXRpY1JlZGlyZWN0UmVzcG9u
c2UoVVJMKFtjdXJyZW50UmVxdWVzdCBVUkxdKSwgVVJMKFtuZXdSZXF1ZXN0IFVSTF0pKS5uc1VS
TFJlc3BvbnNlKCkpLmF1dG9yZWxlYXNlKCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3RleHQvaW9zL0xvY2FsaXplZERhdGVDYWNoZS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vdGV4dC9pb3MvTG9jYWxpemVkRGF0ZUNhY2hlLmgKaW5kZXggOWFlNWVj
NWRhM2MzMGYzYzkzM2EyZDY3OTAxNWU1NjE3N2M4MDE3ZS4uYzE4ZjhjNTkyZGM4YzM3NzIyMjlh
MTFiMTIwMzFmMWZmMDhiM2EzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
dGV4dC9pb3MvTG9jYWxpemVkRGF0ZUNhY2hlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vdGV4dC9pb3MvTG9jYWxpemVkRGF0ZUNhY2hlLmgKQEAgLTQ5LDcgKzQ5LDcgQEAgcHJpdmF0
ZToKICAgICBMb2NhbGl6ZWREYXRlQ2FjaGUoKTsKICAgICB+TG9jYWxpemVkRGF0ZUNhY2hlKCk7
CiAKLSAgICBOU0RhdGVGb3JtYXR0ZXIgKmNyZWF0ZUZvcm1hdHRlckZvclR5cGUoRGF0ZUNvbXBv
bmVudHNUeXBlKTsKKyAgICBSZXRhaW5QdHI8TlNEYXRlRm9ybWF0dGVyPiBjcmVhdGVGb3JtYXR0
ZXJGb3JUeXBlKERhdGVDb21wb25lbnRzVHlwZSk7CiAgICAgZmxvYXQgY2FsY3VsYXRlTWF4aW11
bVdpZHRoKERhdGVDb21wb25lbnRzVHlwZSwgY29uc3QgTWVhc3VyZVRleHRDbGllbnQmKTsKIAog
ICAgIC8vIFVzaW5nIGludCBpbnN0ZWFkIG9mIERhdGVDb21wb25lbnRzVHlwZSBmb3IgdGhlIGtl
eSBiZWNhdXNlIHRoZSBlbnVtCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90
ZXh0L2lvcy9Mb2NhbGl6ZWREYXRlQ2FjaGUubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90
ZXh0L2lvcy9Mb2NhbGl6ZWREYXRlQ2FjaGUubW0KaW5kZXggYTkzMzNiOWJiMDA5MmU5MWI0MTI2
ZTI3ZDhiZjdhYWM0YzQxZmFlYS4uOTJmNTU3MDY3ODhhOTY4NWM3NTUxODRkYjVkM2MzNjgwYTM3
Yjc1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9pb3MvTG9jYWxp
emVkRGF0ZUNhY2hlLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvaW9zL0xv
Y2FsaXplZERhdGVDYWNoZS5tbQpAQCAtNzYsOSArNzYsOSBAQCBOU0RhdGVGb3JtYXR0ZXIgKkxv
Y2FsaXplZERhdGVDYWNoZTo6Zm9ybWF0dGVyRm9yRGF0ZVR5cGUoRGF0ZUNvbXBvbmVudHNUeXBl
IHR5cAogICAgIGlmIChtX2Zvcm1hdHRlck1hcC5jb250YWlucyhrZXkpKQogICAgICAgICByZXR1
cm4gbV9mb3JtYXR0ZXJNYXAuZ2V0KGtleSkuZ2V0KCk7CiAKLSAgICBOU0RhdGVGb3JtYXR0ZXIg
KmRhdGVGb3JtYXR0ZXIgPSBbY3JlYXRlRm9ybWF0dGVyRm9yVHlwZSh0eXBlKSBhdXRvcmVsZWFz
ZV07Ci0gICAgbV9mb3JtYXR0ZXJNYXAuc2V0KGtleSwgZGF0ZUZvcm1hdHRlcik7Ci0gICAgcmV0
dXJuIGRhdGVGb3JtYXR0ZXI7CisgICAgYXV0byBkYXRlRm9ybWF0dGVyID0gY3JlYXRlRm9ybWF0
dGVyRm9yVHlwZSh0eXBlKTsKKyAgICBtX2Zvcm1hdHRlck1hcC5zZXQoa2V5LCBkYXRlRm9ybWF0
dGVyLmdldCgpKTsKKyAgICByZXR1cm4gZGF0ZUZvcm1hdHRlci5hdXRvcmVsZWFzZSgpOwogfQog
CiBmbG9hdCBMb2NhbGl6ZWREYXRlQ2FjaGU6Om1heGltdW1XaWR0aEZvckRhdGVUeXBlKERhdGVD
b21wb25lbnRzVHlwZSB0eXBlLCBjb25zdCBGb250Q2FzY2FkZSYgZm9udCwgY29uc3QgTWVhc3Vy
ZVRleHRDbGllbnQmIG1lYXN1cmVyKQpAQCAtOTcsOSArOTcsOSBAQCBmbG9hdCBMb2NhbGl6ZWRE
YXRlQ2FjaGU6Om1heGltdW1XaWR0aEZvckRhdGVUeXBlKERhdGVDb21wb25lbnRzVHlwZSB0eXBl
LCBjb25zdAogICAgIHJldHVybiBjYWxjdWxhdGVkTWF4aW11bTsKIH0KIAotTlNEYXRlRm9ybWF0
dGVyICpMb2NhbGl6ZWREYXRlQ2FjaGU6OmNyZWF0ZUZvcm1hdHRlckZvclR5cGUoRGF0ZUNvbXBv
bmVudHNUeXBlIHR5cGUpCitSZXRhaW5QdHI8TlNEYXRlRm9ybWF0dGVyPiBMb2NhbGl6ZWREYXRl
Q2FjaGU6OmNyZWF0ZUZvcm1hdHRlckZvclR5cGUoRGF0ZUNvbXBvbmVudHNUeXBlIHR5cGUpCiB7
Ci0gICAgTlNEYXRlRm9ybWF0dGVyICpkYXRlRm9ybWF0dGVyID0gW1tOU0RhdGVGb3JtYXR0ZXIg
YWxsb2NdIGluaXRdOworICAgIGF1dG8gZGF0ZUZvcm1hdHRlciA9IGFkb3B0TlMoW1tOU0RhdGVG
b3JtYXR0ZXIgYWxsb2NdIGluaXRdKTsKICAgICBOU0xvY2FsZSAqY3VycmVudExvY2FsZSA9IFtO
U0xvY2FsZSBjdXJyZW50TG9jYWxlXTsKICAgICBbZGF0ZUZvcm1hdHRlciBzZXRMb2NhbGU6Y3Vy
cmVudExvY2FsZV07CiAKQEAgLTE0MSw3ICsxNDEsNyBAQCBmbG9hdCBMb2NhbGl6ZWREYXRlQ2Fj
aGU6OmNhbGN1bGF0ZU1heGltdW1XaWR0aChEYXRlQ29tcG9uZW50c1R5cGUgdHlwZSwgY29uc3Qg
TQogICAgIGZsb2F0IG1heGltdW1XaWR0aCA9IDA7CiAKICAgICAvLyBHZXQgdGhlIGZvcm1hdHRl
ciB3ZSB3b3VsZCB1c2UsIGNvcHkgaXQgYmVjYXVzZSB3ZSB3aWxsIGZvcmNlIGl0cyB0aW1lIHpv
bmUgdG8gYmUgVVRDLgotICAgIE5TRGF0ZUZvcm1hdHRlciAqZGF0ZUZvcm1hdHRlciA9IFtbZm9y
bWF0dGVyRm9yRGF0ZVR5cGUodHlwZSkgY29weV0gYXV0b3JlbGVhc2VdOworICAgIGF1dG8gZGF0
ZUZvcm1hdHRlciA9IGFkb3B0TlMoW2Zvcm1hdHRlckZvckRhdGVUeXBlKHR5cGUpIGNvcHldKTsK
ICAgICBbZGF0ZUZvcm1hdHRlciBzZXRUaW1lWm9uZTpbTlNUaW1lWm9uZSB0aW1lWm9uZUZvclNl
Y29uZHNGcm9tR01UOjBdXTsKIAogICAgIC8vIFNhbXBsZSBkYXRlIHdpdGggYSA0IGRpZ2l0IHll
YXIgYW5kIDIgZGlnaXQgZGF5LCBob3VyLCBhbmQgbWludXRlLiBEaWdpdHMgYXJlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29j
b2EubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9u
Q29jb2EubW0KaW5kZXggMjllMGE4MzBlNDFkNTVlNmJmMzViYmIzOTZhZTgxZmI5YjIwZjE4Yy4u
NmU1NDU2ZTkzZGRiZDhlOGJhMWE5MGM2YzI4NDdjMDM0Y2U3MjMyNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2Nv
YS5tbQpAQCAtNDc3LDEzICs0NzcsMTMgQEAgLSAodm9pZClVUkxTZXNzaW9uOihOU1VSTFNlc3Np
b24gKilzZXNzaW9uIHRhc2s6KE5TVVJMU2Vzc2lvblRhc2sgKil0YXNrIG5lZWROZXcKICNpZiBF
TkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogc3RhdGljIE5TVVJMUmVxdWVzdCogZG93
bmdyYWRlUmVxdWVzdChOU1VSTFJlcXVlc3QgKnJlcXVlc3QpCiB7Ci0gICAgTlNNdXRhYmxlVVJM
UmVxdWVzdCAqbnNNdXRhYmxlUmVxdWVzdCA9IFtbcmVxdWVzdCBtdXRhYmxlQ29weV0gYXV0b3Jl
bGVhc2VdOwotICAgIGlmIChbbnNNdXRhYmxlUmVxdWVzdC5VUkwuc2NoZW1lIGlzRXF1YWxUb1N0
cmluZzpAImh0dHBzIl0pIHsKLSAgICAgICAgTlNVUkxDb21wb25lbnRzICpjb21wb25lbnRzID0g
W05TVVJMQ29tcG9uZW50cyBjb21wb25lbnRzV2l0aFVSTDpuc011dGFibGVSZXF1ZXN0LlVSTCBy
ZXNvbHZpbmdBZ2FpbnN0QmFzZVVSTDpOT107CisgICAgYXV0byBuc011dGFibGVSZXF1ZXN0ID0g
YWRvcHROUyhbcmVxdWVzdCBtdXRhYmxlQ29weV0pOworICAgIGlmIChbW25zTXV0YWJsZVJlcXVl
c3QgVVJMXS5zY2hlbWUgaXNFcXVhbFRvU3RyaW5nOkAiaHR0cHMiXSkgeworICAgICAgICBOU1VS
TENvbXBvbmVudHMgKmNvbXBvbmVudHMgPSBbTlNVUkxDb21wb25lbnRzIGNvbXBvbmVudHNXaXRo
VVJMOltuc011dGFibGVSZXF1ZXN0IFVSTF0gcmVzb2x2aW5nQWdhaW5zdEJhc2VVUkw6Tk9dOwog
ICAgICAgICBjb21wb25lbnRzLnNjaGVtZSA9IEAiaHR0cCI7CiAgICAgICAgIFtuc011dGFibGVS
ZXF1ZXN0IHNldFVSTDpjb21wb25lbnRzLlVSTF07Ci0gICAgICAgIEFTU0VSVChbbnNNdXRhYmxl
UmVxdWVzdC5VUkwuc2NoZW1lIGlzRXF1YWxUb1N0cmluZzpAImh0dHAiXSk7Ci0gICAgICAgIHJl
dHVybiBuc011dGFibGVSZXF1ZXN0OworICAgICAgICBBU1NFUlQoW1tuc011dGFibGVSZXF1ZXN0
IFVSTF0uc2NoZW1lIGlzRXF1YWxUb1N0cmluZzpAImh0dHAiXSk7CisgICAgICAgIHJldHVybiBu
c011dGFibGVSZXF1ZXN0LmF1dG9yZWxlYXNlKCk7CiAgICAgfQogCiAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CkBAIC01MTQsMTUgKzUxNCwxNSBAQCBzdGF0aWMgTlNVUkxSZXF1ZXN0KiB1cGRh
dGVJZ25vcmVTdHJpY3RUcmFuc3BvcnRTZWN1cml0eVNldHRpbmdJZk5lY2Vzc2FyeShOU1VSTAog
ICAgIGlmIChbcmVxdWVzdC5VUkwuc2NoZW1lIGlzRXF1YWxUb1N0cmluZzpAImh0dHBzIl0gJiYg
c2hvdWxkSWdub3JlSFNUUyAmJiBpZ25vcmVIU1RTKHJlcXVlc3QpKSB7CiAgICAgICAgIC8vIFRo
ZSByZXF1ZXN0IHdhcyB1cGdyYWRlZCBmb3Igc29tZSBvdGhlciByZWFzb24gdGhhbiBIU1RTLgog
ICAgICAgICAvLyBEb24ndCBpZ25vcmUgSFNUUyB0byBhdm9pZCB0aGUgcmlzayBvZiBhbm90aGVy
IGRvd25ncmFkZS4KLSAgICAgICAgTlNNdXRhYmxlVVJMUmVxdWVzdCAqbnNNdXRhYmxlUmVxdWVz
dCA9IFtbcmVxdWVzdCBtdXRhYmxlQ29weV0gYXV0b3JlbGVhc2VdOwotICAgICAgICBzZXRJZ25v
cmVIU1RTKG5zTXV0YWJsZVJlcXVlc3QsIGZhbHNlKTsKLSAgICAgICAgcmV0dXJuIG5zTXV0YWJs
ZVJlcXVlc3Q7CisgICAgICAgIGF1dG8gbnNNdXRhYmxlUmVxdWVzdCA9IGFkb3B0TlMoW3JlcXVl
c3QgbXV0YWJsZUNvcHldKTsKKyAgICAgICAgc2V0SWdub3JlSFNUUyhuc011dGFibGVSZXF1ZXN0
LmdldCgpLCBmYWxzZSk7CisgICAgICAgIHJldHVybiBuc011dGFibGVSZXF1ZXN0LmF1dG9yZWxl
YXNlKCk7CiAgICAgfQogICAgIAogICAgIGlmIChbcmVxdWVzdC5VUkwuc2NoZW1lIGlzRXF1YWxU
b1N0cmluZzpAImh0dHAiXSAmJiBpZ25vcmVIU1RTKHJlcXVlc3QpICE9IHNob3VsZElnbm9yZUhT
VFMpIHsKLSAgICAgICAgTlNNdXRhYmxlVVJMUmVxdWVzdCAqbnNNdXRhYmxlUmVxdWVzdCA9IFtb
cmVxdWVzdCBtdXRhYmxlQ29weV0gYXV0b3JlbGVhc2VdOwotICAgICAgICBzZXRJZ25vcmVIU1RT
KG5zTXV0YWJsZVJlcXVlc3QsIHNob3VsZElnbm9yZUhTVFMpOwotICAgICAgICByZXR1cm4gbnNN
dXRhYmxlUmVxdWVzdDsKKyAgICAgICAgYXV0byBuc011dGFibGVSZXF1ZXN0ID0gYWRvcHROUyhb
cmVxdWVzdCBtdXRhYmxlQ29weV0pOworICAgICAgICBzZXRJZ25vcmVIU1RTKG5zTXV0YWJsZVJl
cXVlc3QuZ2V0KCksIHNob3VsZElnbm9yZUhTVFMpOworICAgICAgICByZXR1cm4gbnNNdXRhYmxl
UmVxdWVzdC5hdXRvcmVsZWFzZSgpOwogICAgIH0KIAogICAgIHJldHVybiByZXF1ZXN0OwpAQCAt
MTE1OCw3ICsxMTU4LDcgQEAgc3RhdGljIE5TRGljdGlvbmFyeSAqcHJveHlEaWN0aW9uYXJ5KGNv
bnN0IFVSTCYgaHR0cFByb3h5LCBjb25zdCBVUkwmIGh0dHBzUHJveHkKIAogICAgIEFMTE9XX0RF
UFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCiAKLSAgICBOU011dGFibGVEaWN0aW9uYXJ5ICpk
aWN0aW9uYXJ5ID0gW1tbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdF0gYXV0b3JlbGVh
c2VdOworICAgIGF1dG8gZGljdGlvbmFyeSA9IGFkb3B0TlMoW1tOU011dGFibGVEaWN0aW9uYXJ5
IGFsbG9jXSBpbml0XSk7CiAgICAgaWYgKGh0dHBQcm94eS5pc1ZhbGlkKCkpIHsKICAgICAgICAg
W2RpY3Rpb25hcnkgc2V0T2JqZWN0Omh0dHBQcm94eS5ob3N0KCkudG9TdHJpbmcoKSBmb3JLZXk6
KE5TU3RyaW5nICopa0NGU3RyZWFtUHJvcGVydHlIVFRQUHJveHlIb3N0XTsKICAgICAgICAgaWYg
KGF1dG8gcG9ydCA9IGh0dHBQcm94eS5wb3J0KCkpCkBAIC0xMTY5LDcgKzExNjksNyBAQCBzdGF0
aWMgTlNEaWN0aW9uYXJ5ICpwcm94eURpY3Rpb25hcnkoY29uc3QgVVJMJiBodHRwUHJveHksIGNv
bnN0IFVSTCYgaHR0cHNQcm94eQogICAgICAgICBpZiAoYXV0byBwb3J0ID0gaHR0cHNQcm94eS5w
b3J0KCkpCiAgICAgICAgICAgICBbZGljdGlvbmFyeSBzZXRPYmplY3Q6QCgqcG9ydCkgZm9yS2V5
OihOU1N0cmluZyAqKWtDRlN0cmVhbVByb3BlcnR5SFRUUFNQcm94eVBvcnRdOwogICAgIH0KLSAg
ICByZXR1cm4gZGljdGlvbmFyeTsKKyAgICByZXR1cm4gZGljdGlvbmFyeS5hdXRvcmVsZWFzZSgp
OwogCiAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiB9CkBAIC0xMjMyLDcg
KzEyMzIsNyBAQCBOZXR3b3JrU2Vzc2lvbkNvY29hOjpOZXR3b3JrU2Vzc2lvbkNvY29hKE5ldHdv
cmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcywgTmV0d29yawogICAgICAgICBTYW5kYm94RXh0ZW5z
aW9uOjpjb25zdW1lUGVybWFuZW50bHkocGFyYW1ldGVycy5oc3RzU3RvcmFnZURpcmVjdG9yeUV4
dGVuc2lvbkhhbmRsZSk7CiAgICAgICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyByZXNwb25kc1Rv
U2VsZWN0b3IgY2hlY2sgb25jZSByZGFyOi8vcHJvYmxlbS81MDEwOTYzMSBpcyBpbiBhIGJ1aWxk
IGFuZCBib3RzIGFyZSB1cGRhdGVkLgogICAgICAgICBpZiAoW2NvbmZpZ3VyYXRpb24gcmVzcG9u
ZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihfaHN0c1N0b3JhZ2UpXSkKLSAgICAgICAgICAgIGNvbmZp
Z3VyYXRpb24uX2hzdHNTdG9yYWdlID0gW1thbGxvY19OU0hTVFNTdG9yYWdlSW5zdGFuY2UoKSBp
bml0UGVyc2lzdGVudFN0b3JlV2l0aFVSTDpbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOnBhcmFtZXRl
cnMuaHN0c1N0b3JhZ2VEaXJlY3RvcnkgaXNEaXJlY3Rvcnk6WUVTXV0gYXV0b3JlbGVhc2VdOwor
ICAgICAgICAgICAgY29uZmlndXJhdGlvbi5faHN0c1N0b3JhZ2UgPSBhZG9wdE5TKFthbGxvY19O
U0hTVFNTdG9yYWdlSW5zdGFuY2UoKSBpbml0UGVyc2lzdGVudFN0b3JlV2l0aFVSTDpbTlNVUkwg
ZmlsZVVSTFdpdGhQYXRoOnBhcmFtZXRlcnMuaHN0c1N0b3JhZ2VEaXJlY3RvcnkgaXNEaXJlY3Rv
cnk6WUVTXV0pLmF1dG9yZWxlYXNlKCk7CiAgICAgfQogI2VuZGlmCiAKQEAgLTEyNjcsNyArMTI2
Nyw3IEBAIE5ldHdvcmtTZXNzaW9uQ29jb2E6Ok5ldHdvcmtTZXNzaW9uQ29jb2EoTmV0d29ya1By
b2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBOZXR3b3JrCiAjaWYgSEFWRShDRk5FVFdPUktfQUxURVJO
QVRJVkVfU0VSVklDRSkKICAgICBpZiAoIXBhcmFtZXRlcnMuYWx0ZXJuYXRpdmVTZXJ2aWNlRGly
ZWN0b3J5LmlzRW1wdHkoKSkgewogICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjb25zdW1lUGVy
bWFuZW50bHkocGFyYW1ldGVycy5hbHRlcm5hdGl2ZVNlcnZpY2VEaXJlY3RvcnlFeHRlbnNpb25I
YW5kbGUpOwotICAgICAgICBjb25maWd1cmF0aW9uLl9hbHRlcm5hdGl2ZVNlcnZpY2VzU3RvcmFn
ZSA9IFtbW19OU0hUVFBBbHRlcm5hdGl2ZVNlcnZpY2VzU3RvcmFnZSBhbGxvY10gaW5pdFBlcnNp
c3RlbnRTdG9yZVdpdGhVUkw6W1tOU1VSTCBmaWxlVVJMV2l0aFBhdGg6cGFyYW1ldGVycy5hbHRl
cm5hdGl2ZVNlcnZpY2VEaXJlY3RvcnkgaXNEaXJlY3Rvcnk6WUVTXSBVUkxCeUFwcGVuZGluZ1Bh
dGhDb21wb25lbnQ6QCJBbHRlcm5hdGl2ZVNlcnZpY2Uuc3FsaXRlIl1dIGF1dG9yZWxlYXNlXTsK
KyAgICAgICAgY29uZmlndXJhdGlvbi5fYWx0ZXJuYXRpdmVTZXJ2aWNlc1N0b3JhZ2UgPSBhZG9w
dE5TKFtbX05TSFRUUEFsdGVybmF0aXZlU2VydmljZXNTdG9yYWdlIGFsbG9jXSBpbml0UGVyc2lz
dGVudFN0b3JlV2l0aFVSTDpbW05TVVJMIGZpbGVVUkxXaXRoUGF0aDpwYXJhbWV0ZXJzLmFsdGVy
bmF0aXZlU2VydmljZURpcmVjdG9yeSBpc0RpcmVjdG9yeTpZRVNdIFVSTEJ5QXBwZW5kaW5nUGF0
aENvbXBvbmVudDpAIkFsdGVybmF0aXZlU2VydmljZS5zcWxpdGUiXV0pLmF1dG9yZWxlYXNlKCk7
CiAgICAgfQogICAgIGlmIChwYXJhbWV0ZXJzLmh0dHAzRW5hYmxlZCkKICAgICAgICAgY29uZmln
dXJhdGlvbi5fYWxsb3dzSFRUUDMgPSBZRVM7CkBAIC0xMjk5LDEwICsxMjk5LDEwIEBAIE5ldHdv
cmtTZXNzaW9uQ29jb2E6Ok5ldHdvcmtTZXNzaW9uQ29jb2EoTmV0d29ya1Byb2Nlc3MmIG5ldHdv
cmtQcm9jZXNzLCBOZXR3b3JrCiAgICAgYXV0byogc3RvcmFnZVNlc3Npb24gPSBuZXR3b3JrUHJv
Y2Vzcy5zdG9yYWdlU2Vzc2lvbihwYXJhbWV0ZXJzLnNlc3Npb25JRCk7CiAgICAgUkVMRUFTRV9B
U1NFUlQoc3RvcmFnZVNlc3Npb24pOwogCi0gICAgTlNIVFRQQ29va2llU3RvcmFnZSogY29va2ll
U3RvcmFnZTsKKyAgICBSZXRhaW5QdHI8TlNIVFRQQ29va2llU3RvcmFnZT4gY29va2llU3RvcmFn
ZTsKICAgICBpZiAoQ0ZIVFRQQ29va2llU3RvcmFnZVJlZiBzdG9yYWdlID0gc3RvcmFnZVNlc3Np
b24tPmNvb2tpZVN0b3JhZ2UoKS5nZXQoKSkgewotICAgICAgICBjb29raWVTdG9yYWdlID0gW1tb
TlNIVFRQQ29va2llU3RvcmFnZSBhbGxvY10gX2luaXRXaXRoQ0ZIVFRQQ29va2llU3RvcmFnZTpz
dG9yYWdlXSBhdXRvcmVsZWFzZV07Ci0gICAgICAgIGNvbmZpZ3VyYXRpb24uSFRUUENvb2tpZVN0
b3JhZ2UgPSBjb29raWVTdG9yYWdlOworICAgICAgICBjb29raWVTdG9yYWdlID0gYWRvcHROUyhb
W05TSFRUUENvb2tpZVN0b3JhZ2UgYWxsb2NdIF9pbml0V2l0aENGSFRUUENvb2tpZVN0b3JhZ2U6
c3RvcmFnZV0pOworICAgICAgICBjb25maWd1cmF0aW9uLkhUVFBDb29raWVTdG9yYWdlID0gY29v
a2llU3RvcmFnZS5nZXQoKTsKICAgICB9IGVsc2UKICAgICAgICAgY29va2llU3RvcmFnZSA9IHN0
b3JhZ2VTZXNzaW9uLT5uc0Nvb2tpZVN0b3JhZ2UoKTsKIApAQCAtMTMxMCw3ICsxMzEwLDcgQEAg
TmV0d29ya1Nlc3Npb25Db2NvYTo6TmV0d29ya1Nlc3Npb25Db2NvYShOZXR3b3JrUHJvY2VzcyYg
bmV0d29ya1Byb2Nlc3MsIE5ldHdvcmsKICAgICAvLyBXZSBzdGlsbCBuZWVkIHRvIGNoZWNrIHRo
ZSBzZWxlY3RvciBzaW5jZSBDRk5ldHdvcmsgdXBkYXRlcyBhbmQgV2ViS2l0IHVwZGF0ZXMgYXJl
IHNlcGFyYXRlCiAgICAgLy8gb24gb2xkZXIgbWFjT1MuCiAgICAgaWYgKFtjb29raWVTdG9yYWdl
IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX292ZXJyaWRlU2Vzc2lvbkNvb2tpZUFjY2Vw
dFBvbGljeSldKQotICAgICAgICBjb29raWVTdG9yYWdlLl9vdmVycmlkZVNlc3Npb25Db29raWVB
Y2NlcHRQb2xpY3kgPSBZRVM7CisgICAgICAgIGNvb2tpZVN0b3JhZ2UuZ2V0KCkuX292ZXJyaWRl
U2Vzc2lvbkNvb2tpZUFjY2VwdFBvbGljeSA9IFlFUzsKICNlbmRpZgogCiAgICAgbV9zZXNzaW9u
V2l0aENyZWRlbnRpYWxTdG9yYWdlLmluaXRpYWxpemUoY29uZmlndXJhdGlvbiwgKnRoaXMsIFdl
YkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5OjpVc2UsIE5hdmlnYXRpbmdUb0FwcEJvdW5k
RG9tYWluOjpObyk7CkBAIC0xNjIwLDE2ICsxNjIwLDE2IEBAIERNRldlYnNpdGVQb2xpY3lNb25p
dG9yICpOZXR3b3JrU2Vzc2lvbkNvY29hOjpkZXZpY2VNYW5hZ2VtZW50UG9saWN5TW9uaXRvcigp
CiBzdGQ6OnVuaXF1ZV9wdHI8V2ViU29ja2V0VGFzaz4gTmV0d29ya1Nlc3Npb25Db2NvYTo6Y3Jl
YXRlV2ViU29ja2V0VGFzayhOZXR3b3JrU29ja2V0Q2hhbm5lbCYgY2hhbm5lbCwgY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBTdHJpbmcmIHByb3RvY29sKQog
ewogICAgIEFTU0VSVCghcmVxdWVzdC5oYXNIVFRQSGVhZGVyRmllbGQoV2ViQ29yZTo6SFRUUEhl
YWRlck5hbWU6OlNlY1dlYlNvY2tldFByb3RvY29sKSk7Ci0gICAgYXV0byAqbnNSZXF1ZXN0ID0g
cmVxdWVzdC5uc1VSTFJlcXVlc3QoV2ViQ29yZTo6SFRUUEJvZHlVcGRhdGVQb2xpY3k6OkRvTm90
VXBkYXRlSFRUUEJvZHkpOworICAgIGF1dG8gbnNSZXF1ZXN0ID0gcmV0YWluUHRyKHJlcXVlc3Qu
bnNVUkxSZXF1ZXN0KFdlYkNvcmU6OkhUVFBCb2R5VXBkYXRlUG9saWN5OjpEb05vdFVwZGF0ZUhU
VFBCb2R5KSk7CiAgICAgaWYgKCFwcm90b2NvbC5pc051bGwoKSkgewotICAgICAgICBOU011dGFi
bGVVUkxSZXF1ZXN0ICpyZXF1ZXN0V2l0aFByb3RvY29scyA9IFtbbnNSZXF1ZXN0IG11dGFibGVD
b3B5XSBhdXRvcmVsZWFzZV07CisgICAgICAgIGF1dG8gcmVxdWVzdFdpdGhQcm90b2NvbHMgPSBh
ZG9wdE5TKFtuc1JlcXVlc3QgbXV0YWJsZUNvcHldKTsKICAgICAgICAgW3JlcXVlc3RXaXRoUHJv
dG9jb2xzIGFkZFZhbHVlOiBTdHJpbmdWaWV3KHByb3RvY29sKS5jcmVhdGVOU1N0cmluZygpLmdl
dCgpIGZvckhUVFBIZWFkZXJGaWVsZDpAIlNlYy1XZWJTb2NrZXQtUHJvdG9jb2wiXTsKLSAgICAg
ICAgbnNSZXF1ZXN0ID0gcmVxdWVzdFdpdGhQcm90b2NvbHM7CisgICAgICAgIG5zUmVxdWVzdCA9
IFdURk1vdmUocmVxdWVzdFdpdGhQcm90b2NvbHMpOwogICAgIH0KICAgICAvLyByZGFyOi8vcHJv
YmxlbS82ODA1NzAzMTogZXhwbGljaXRseSBkaXNhYmxlIHNuaWZmaW5nIGZvciBXZWJTb2NrZXQg
aGFuZHNoYWtlcy4KICAgICBbbnNSZXF1ZXN0IF9zZXRQcm9wZXJ0eTpATk8gZm9yS2V5OihOU1N0
cmluZyAqKV9rQ0ZVUkxDb25uZWN0aW9uUHJvcGVydHlTaG91bGRTbmlmZl07CiAKLSAgICBSZXRh
aW5QdHI8TlNVUkxTZXNzaW9uV2ViU29ja2V0VGFzaz4gdGFzayA9IFttX3Nlc3Npb25XaXRoQ3Jl
ZGVudGlhbFN0b3JhZ2Uuc2Vzc2lvbiB3ZWJTb2NrZXRUYXNrV2l0aFJlcXVlc3Q6bnNSZXF1ZXN0
XTsKKyAgICBSZXRhaW5QdHI8TlNVUkxTZXNzaW9uV2ViU29ja2V0VGFzaz4gdGFzayA9IFttX3Nl
c3Npb25XaXRoQ3JlZGVudGlhbFN0b3JhZ2Uuc2Vzc2lvbiB3ZWJTb2NrZXRUYXNrV2l0aFJlcXVl
c3Q6bnNSZXF1ZXN0LmdldCgpXTsKICAgICByZXR1cm4gbWFrZVVuaXF1ZTxXZWJTb2NrZXRUYXNr
PihjaGFubmVsLCBXVEZNb3ZlKHRhc2spKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9jb2NvYS9XS1BheW1lbnRBdXRob3JpemF0aW9uRGVsZWdhdGUubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL2NvY29hL1dLUGF5bWVudEF1dGhvcml6YXRpb25EZWxlZ2F0ZS5t
bQppbmRleCAzMTZhYTU2ZWMxMjc0ZmVjYTcyMTUyOTJjZDNlMjU5ZjNkOWIxM2VjLi5jZjM0YTQ4
ZWQyZmVlMWVhNzlmMmVkMjdkYmYxMjg1YWUyY2EyMzM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL2NvY29hL1dLUGF5bWVudEF1dGhvcml6YXRpb25EZWxlZ2F0ZS5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL2NvY29hL1dLUGF5bWVudEF1dGhvcml6YXRpb25EZWxl
Z2F0ZS5tbQpAQCAtNjEsNyArNjEsNyBAQCAtICh2b2lkKWNvbXBsZXRlTWVyY2hhbnRWYWxpZGF0
aW9uOihQS1BheW1lbnRNZXJjaGFudFNlc3Npb24gKilzZXNzaW9uIGVycm9yOihOUwogCiAtICh2
b2lkKWNvbXBsZXRlUGF5bWVudE1ldGhvZFNlbGVjdGlvbjooUEtQYXltZW50UmVxdWVzdFBheW1l
bnRNZXRob2RVcGRhdGUgKilwYXltZW50TWV0aG9kVXBkYXRlCiB7Ci0gICAgUEtQYXltZW50UmVx
dWVzdFBheW1lbnRNZXRob2RVcGRhdGUgKnVwZGF0ZSA9IHBheW1lbnRNZXRob2RVcGRhdGUgPzog
W1tQQUw6OmFsbG9jUEtQYXltZW50UmVxdWVzdFBheW1lbnRNZXRob2RVcGRhdGVJbnN0YW5jZSgp
IGluaXRXaXRoUGF5bWVudFN1bW1hcnlJdGVtczpfc3VtbWFyeUl0ZW1zLmdldCgpXSBhdXRvcmVs
ZWFzZV07CisgICAgUEtQYXltZW50UmVxdWVzdFBheW1lbnRNZXRob2RVcGRhdGUgKnVwZGF0ZSA9
IHBheW1lbnRNZXRob2RVcGRhdGUgPzogYWRvcHROUyhbUEFMOjphbGxvY1BLUGF5bWVudFJlcXVl
c3RQYXltZW50TWV0aG9kVXBkYXRlSW5zdGFuY2UoKSBpbml0V2l0aFBheW1lbnRTdW1tYXJ5SXRl
bXM6X3N1bW1hcnlJdGVtcy5nZXQoKV0pLmF1dG9yZWxlYXNlKCk7CiAgICAgX3N1bW1hcnlJdGVt
cyA9IGFkb3B0TlMoW3VwZGF0ZS5wYXltZW50U3VtbWFyeUl0ZW1zIGNvcHldKTsKICAgICBzdGQ6
OmV4Y2hhbmdlKF9kaWRTZWxlY3RQYXltZW50TWV0aG9kQ29tcGxldGlvbiwgbmlsKSh1cGRhdGUp
OwogfQpAQCAtNzMsNyArNzMsNyBAQCAtICh2b2lkKWNvbXBsZXRlUGF5bWVudFNlc3Npb246KFBL
UGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXMpc3RhdHVzIGVycm9yczooTlNBcgogfQogLSAodm9p
ZCljb21wbGV0ZVNoaXBwaW5nQ29udGFjdFNlbGVjdGlvbjooUEtQYXltZW50UmVxdWVzdFNoaXBw
aW5nQ29udGFjdFVwZGF0ZSAqKXNoaXBwaW5nQ29udGFjdFVwZGF0ZQogewotICAgIFBLUGF5bWVu
dFJlcXVlc3RTaGlwcGluZ0NvbnRhY3RVcGRhdGUgKnVwZGF0ZSA9IHNoaXBwaW5nQ29udGFjdFVw
ZGF0ZSA/OiBbW1BBTDo6YWxsb2NQS1BheW1lbnRSZXF1ZXN0U2hpcHBpbmdDb250YWN0VXBkYXRl
SW5zdGFuY2UoKSBpbml0V2l0aEVycm9yczpAW10gcGF5bWVudFN1bW1hcnlJdGVtczpfc3VtbWFy
eUl0ZW1zLmdldCgpIHNoaXBwaW5nTWV0aG9kczpfc2hpcHBpbmdNZXRob2RzLmdldCgpXSBhdXRv
cmVsZWFzZV07CisgICAgUEtQYXltZW50UmVxdWVzdFNoaXBwaW5nQ29udGFjdFVwZGF0ZSAqdXBk
YXRlID0gc2hpcHBpbmdDb250YWN0VXBkYXRlID86IGFkb3B0TlMoW1BBTDo6YWxsb2NQS1BheW1l
bnRSZXF1ZXN0U2hpcHBpbmdDb250YWN0VXBkYXRlSW5zdGFuY2UoKSBpbml0V2l0aEVycm9yczpA
W10gcGF5bWVudFN1bW1hcnlJdGVtczpfc3VtbWFyeUl0ZW1zLmdldCgpIHNoaXBwaW5nTWV0aG9k
czpfc2hpcHBpbmdNZXRob2RzLmdldCgpXSkuYXV0b3JlbGVhc2UoKTsKICAgICBfc3VtbWFyeUl0
ZW1zID0gYWRvcHROUyhbdXBkYXRlLnBheW1lbnRTdW1tYXJ5SXRlbXMgY29weV0pOwogICAgIF9z
aGlwcGluZ01ldGhvZHMgPSBhZG9wdE5TKFt1cGRhdGUuc2hpcHBpbmdNZXRob2RzIGNvcHldKTsK
ICAgICBzdGQ6OmV4Y2hhbmdlKF9kaWRTZWxlY3RTaGlwcGluZ0NvbnRhY3RDb21wbGV0aW9uLCBu
aWwpKHVwZGF0ZSk7CkBAIC04MSw3ICs4MSw3IEBAIC0gKHZvaWQpY29tcGxldGVTaGlwcGluZ0Nv
bnRhY3RTZWxlY3Rpb246KFBLUGF5bWVudFJlcXVlc3RTaGlwcGluZ0NvbnRhY3RVcGRhdGUKIAog
LSAodm9pZCljb21wbGV0ZVNoaXBwaW5nTWV0aG9kU2VsZWN0aW9uOihQS1BheW1lbnRSZXF1ZXN0
U2hpcHBpbmdNZXRob2RVcGRhdGUgKilzaGlwcGluZ01ldGhvZFVwZGF0ZQogewotICAgIFBLUGF5
bWVudFJlcXVlc3RTaGlwcGluZ01ldGhvZFVwZGF0ZSAqdXBkYXRlID0gc2hpcHBpbmdNZXRob2RV
cGRhdGUgPzogW1tQQUw6OmFsbG9jUEtQYXltZW50UmVxdWVzdFNoaXBwaW5nTWV0aG9kVXBkYXRl
SW5zdGFuY2UoKSBpbml0V2l0aFBheW1lbnRTdW1tYXJ5SXRlbXM6X3N1bW1hcnlJdGVtcy5nZXQo
KV0gYXV0b3JlbGVhc2VdOworICAgIFBLUGF5bWVudFJlcXVlc3RTaGlwcGluZ01ldGhvZFVwZGF0
ZSAqdXBkYXRlID0gc2hpcHBpbmdNZXRob2RVcGRhdGUgPzogYWRvcHROUyhbUEFMOjphbGxvY1BL
UGF5bWVudFJlcXVlc3RTaGlwcGluZ01ldGhvZFVwZGF0ZUluc3RhbmNlKCkgaW5pdFdpdGhQYXlt
ZW50U3VtbWFyeUl0ZW1zOl9zdW1tYXJ5SXRlbXMuZ2V0KCldKS5hdXRvcmVsZWFzZSgpOwogICAg
IF9zdW1tYXJ5SXRlbXMgPSBhZG9wdE5TKFt1cGRhdGUucGF5bWVudFN1bW1hcnlJdGVtcyBjb3B5
XSk7CiAgICAgc3RkOjpleGNoYW5nZShfZGlkU2VsZWN0U2hpcHBpbmdNZXRob2RDb21wbGV0aW9u
LCBuaWwpKHVwZGF0ZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkv
Q29jb2EvV0tSZW1vdGVPYmplY3RDb2Rlci5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9D
b2NvYS9XS1JlbW90ZU9iamVjdENvZGVyLm1tCmluZGV4IDhiZDI0NDg1ZTA2MmY3M2IxYjY4NjJj
MDU1MzA3NGZlZDkxMDUzMzQuLjc0MDIzOTIwMzg1ZmE2MWZhMjEzNTc3OWZkMjU3MmIzMmQyMWNi
YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9i
amVjdENvZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90
ZU9iamVjdENvZGVyLm1tCkBAIC0zMTMsOCArMzEzLDcgQEAgc3RhdGljIHZvaWQgZW5jb2RlT2Jq
ZWN0KFdLUmVtb3RlT2JqZWN0RW5jb2RlciAqZW5jb2RlciwgaWQgb2JqZWN0KQogICAgICAgICBS
RUxFQVNFX0xPR19GQVVMVChJUEMsICJXS1JlbW90ZU9iamVjdENvZGU6OmVuY29kZU9iamVjdDog
T2JqZWN0IG9mIHR5cGUgJyV7cHJpdmF0ZX1zJyBjb250YWlucyBhIGN5Y2xlIiwgY2xhc3NfZ2V0
TmFtZShvYmplY3RfZ2V0Q2xhc3Mob2JqZWN0KSkpOwogICAgICAgICBAdHJ5IHsKICAgICAgICAg
ICAgIC8vIFRyeSB0byBlbmNvZGUgYSBuZXdseSBpbml0aWFsaXplZCBvYmplY3QgaW5zdGVhZC4K
LSAgICAgICAgICAgIGlkIG5ld09iamVjdCA9IFtbW1tvYmplY3QgY2xhc3NdIGFsbG9jXSBpbml0
XSBhdXRvcmVsZWFzZV07Ci0gICAgICAgICAgICBvYmplY3QgPSBuZXdPYmplY3Q7CisgICAgICAg
ICAgICBvYmplY3QgPSBhZG9wdE5TKFtbW29iamVjdCBjbGFzc10gYWxsb2NdIGluaXRdKS5hdXRv
cmVsZWFzZSgpOwogICAgICAgICB9IEBjYXRjaCAoTlNFeGNlcHRpb24gKmUpIHsKICAgICAgICAg
ICAgIFtOU0V4Y2VwdGlvbiByYWlzZTpOU0ludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBmb3JtYXQ6
QCJPYmplY3Qgb2YgdHlwZSAnJXMnIGNvbnRhaW5zIGEgY3ljbGUiLCBjbGFzc19nZXROYW1lKG9i
amVjdF9nZXRDbGFzcyhvYmplY3QpKV07CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9fV0tSZW1vdGVPYmplY3RJbnRlcmZhY2UubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvX1dLUmVtb3RlT2JqZWN0SW50ZXJmYWNlLm1tCmlu
ZGV4IDIzZjE2NzYzNWUyY2U1NzE2M2M0NjZmNmY0NTA2NmQ4ZmZhYmQ1MjEuLmU1YWQ0YjMwOGZk
ZDY1MTIyMTJiNWYxZmMyYzIzMTQyZDZmNDBhOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0FQSS9Db2NvYS9fV0tSZW1vdGVPYmplY3RJbnRlcmZhY2UubW0KKysrIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL19XS1JlbW90ZU9iamVjdEludGVyZmFjZS5tbQpAQCAt
MTkzLDcgKzE5Myw3IEBAIC0gKGlkKWluaXRXaXRoUHJvdG9jb2w6KFByb3RvY29sICopcHJvdG9j
b2wgaWRlbnRpZmllcjooTlNTdHJpbmcgKilpZGVudGlmaWVyCiAKICsgKGluc3RhbmNldHlwZSly
ZW1vdGVPYmplY3RJbnRlcmZhY2VXaXRoUHJvdG9jb2w6KFByb3RvY29sICopcHJvdG9jb2wKIHsK
LSAgICByZXR1cm4gW1tbc2VsZiBhbGxvY10gaW5pdFdpdGhQcm90b2NvbDpwcm90b2NvbCBpZGVu
dGlmaWVyOk5TU3RyaW5nRnJvbVByb3RvY29sKHByb3RvY29sKV0gYXV0b3JlbGVhc2VdOworICAg
IHJldHVybiBhZG9wdE5TKFtbc2VsZiBhbGxvY10gaW5pdFdpdGhQcm90b2NvbDpwcm90b2NvbCBp
ZGVudGlmaWVyOk5TU3RyaW5nRnJvbVByb3RvY29sKHByb3RvY29sKV0pLmF1dG9yZWxlYXNlKCk7
CiB9CiAKIC0gKE5TU3RyaW5nICopaWRlbnRpZmllcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TaGFyZWQvQ29jb2EvV0tPYmplY3QuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dL
T2JqZWN0LmgKaW5kZXggMGUxYjFjNjA0NTUyYjU5MGUzMGQ5OTVjNGFmZTgzNTk3NDBlYmE3My4u
YjkxNDQ2OWVlOWUwODUwMjU1NTdhMDYwNWQ3NjJlN2Q5M2Y2NzEyZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV0tPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9Db2NvYS9XS09iamVjdC5oCkBAIC03Nyw3ICs3Nyw3IEBAIHRlbXBsYXRlPHR5cGVuYW1l
IE9iamVjdENsYXNzPiBpbmxpbmUgdHlwZW5hbWUgV3JhcHBlclRyYWl0czxPYmplY3RDbGFzcz46
OldyYXBwCiAKIHRlbXBsYXRlPHR5cGVuYW1lIE9iamVjdENsYXNzPiBpbmxpbmUgdHlwZW5hbWUg
V3JhcHBlclRyYWl0czxPYmplY3RDbGFzcz46OldyYXBwZXJDbGFzcyAqd3JhcHBlcihSZWY8T2Jq
ZWN0Q2xhc3M+JiYgb2JqZWN0KQogewotICAgIHJldHVybiBbd3JhcHBlcihvYmplY3QubGVha1Jl
ZigpKSBhdXRvcmVsZWFzZV07CisgICAgcmV0dXJuIGFkb3B0TlMod3JhcHBlcihvYmplY3QubGVh
a1JlZigpKSkuYXV0b3JlbGVhc2UoKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgT2JqZWN0Q2xh
c3M+IGlubGluZSB0eXBlbmFtZSBXcmFwcGVyVHJhaXRzPE9iamVjdENsYXNzPjo6V3JhcHBlckNs
YXNzICp3cmFwcGVyKFJlZlB0cjxPYmplY3RDbGFzcz4mJiBvYmplY3QpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvTlNBdHRyaWJ1dGVkU3RyaW5nLm1tIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL05TQXR0cmlidXRlZFN0cmluZy5tbQpp
bmRleCBjYzk0MTQwZmU5YjY2NmFlNzM3ZjViNDNmNjhiMTMzYjA1OTc5Yjk3Li44NmQ2NWJkMWM5
NWFhY2M1MTUxNmRhZDJlNjk5YzZjNzVlY2M3NzZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvTlNBdHRyaWJ1dGVkU3RyaW5nLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9OU0F0dHJpYnV0ZWRTdHJpbmcubW0KQEAgLTEzMyw3
ICsxMzMsNyBAQCArIChXS1dlYlZpZXdDb25maWd1cmF0aW9uICopY29uZmlndXJhdGlvbgogewog
ICAgIGlmICghY29uZmlndXJhdGlvbikgewogICAgICAgICBjb25maWd1cmF0aW9uID0gW1tXS1dl
YlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XTsKLSAgICAgICAgY29uZmlndXJhdGlvbi5w
cm9jZXNzUG9vbCA9IFtbW1dLUHJvY2Vzc1Bvb2wgYWxsb2NdIGluaXRdIGF1dG9yZWxlYXNlXTsK
KyAgICAgICAgY29uZmlndXJhdGlvbi5wcm9jZXNzUG9vbCA9IGFkb3B0TlMoW1tXS1Byb2Nlc3NQ
b29sIGFsbG9jXSBpbml0XSkuYXV0b3JlbGVhc2UoKTsKICAgICAgICAgY29uZmlndXJhdGlvbi53
ZWJzaXRlRGF0YVN0b3JlID0gW1dLV2Vic2l0ZURhdGFTdG9yZSBub25QZXJzaXN0ZW50RGF0YVN0
b3JlXTsKICAgICAgICAgY29uZmlndXJhdGlvbi5tZWRpYVR5cGVzUmVxdWlyaW5nVXNlckFjdGlv
bkZvclBsYXliYWNrID0gV0tBdWRpb3Zpc3VhbE1lZGlhVHlwZUFsbDsKICAgICAgICAgY29uZmln
dXJhdGlvbi5fYWxsb3dzSmF2YVNjcmlwdE1hcmt1cCA9IE5POwpAQCAtMjcwLDExICsyNzAsMTEg
QEAgKyAodm9pZClfbG9hZEZyb21IVE1MV2l0aE9wdGlvbnM6KE5TRGljdGlvbmFyeTxOU0F0dHJp
YnV0ZWRTdHJpbmdEb2N1bWVudFJlYWRpbmcKIAogICAgICAgICAgICAgLy8gTWFrZSB0aGUgc3Ry
aW5nIGJlIGFuIGluc3RhbmNlIG9mIHRoZSByZWNlaXZlciBjbGFzcy4KICAgICAgICAgICAgIGlm
IChhdHRyaWJ1dGVkU3RyaW5nICYmIHNlbGYgIT0gYXR0cmlidXRlZFN0cmluZy5jbGFzcykKLSAg
ICAgICAgICAgICAgICBhdHRyaWJ1dGVkU3RyaW5nID0gW1tbc2VsZiBhbGxvY10gaW5pdFdpdGhB
dHRyaWJ1dGVkU3RyaW5nOmF0dHJpYnV0ZWRTdHJpbmddIGF1dG9yZWxlYXNlXTsKKyAgICAgICAg
ICAgICAgICBhdHRyaWJ1dGVkU3RyaW5nID0gYWRvcHROUyhbW3NlbGYgYWxsb2NdIGluaXRXaXRo
QXR0cmlidXRlZFN0cmluZzphdHRyaWJ1dGVkU3RyaW5nXSkuYXV0b3JlbGVhc2UoKTsKIAogICAg
ICAgICAgICAgLy8gTWFrZSB0aGUgZG9jdW1lbnQgYXR0cmlidXRlcyBpbW11dGFibGUuCiAgICAg
ICAgICAgICBpZiAoW2F0dHJpYnV0ZXMgaXNLaW5kT2ZDbGFzczpOU011dGFibGVEaWN0aW9uYXJ5
LmNsYXNzXSkKLSAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzID0gW1tbTlNEaWN0aW9uYXJ5IGFs
bG9jXSBpbml0V2l0aERpY3Rpb25hcnk6YXR0cmlidXRlc10gYXV0b3JlbGVhc2VdOworICAgICAg
ICAgICAgICAgIGF0dHJpYnV0ZXMgPSBhZG9wdE5TKFtbTlNEaWN0aW9uYXJ5IGFsbG9jXSBpbml0
V2l0aERpY3Rpb25hcnk6YXR0cmlidXRlc10pLmF1dG9yZWxlYXNlKCk7CiAKICAgICAgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKGF0dHJpYnV0ZWRTdHJpbmcsIGF0dHJpYnV0ZXMsIGVycm9yKTsK
ICAgICAgICAgfTsKQEAgLTMxMCw3ICszMTAsNyBAQCArICh2b2lkKV9sb2FkRnJvbUhUTUxXaXRo
T3B0aW9uczooTlNEaWN0aW9uYXJ5PE5TQXR0cmlidXRlZFN0cmluZ0RvY3VtZW50UmVhZGluZwog
ICAgICAgICAgICAgW3dlYlZpZXcgX2dldENvbnRlbnRzQXNBdHRyaWJ1dGVkU3RyaW5nV2l0aENv
bXBsZXRpb25IYW5kbGVyOl4oTlNBdHRyaWJ1dGVkU3RyaW5nICphdHRyaWJ1dGVkU3RyaW5nLCBO
U0RpY3Rpb25hcnk8TlNBdHRyaWJ1dGVkU3RyaW5nRG9jdW1lbnRBdHRyaWJ1dGVLZXksIGlkPiAq
ZG9jdW1lbnRBdHRyaWJ1dGVzLCBOU0Vycm9yICplcnJvcikgewogICAgICAgICAgICAgICAgIGlm
IChlcnJvcikKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNhbmNlbChXS0Vycm9yVW5rbm93
biwgZXJyb3IpOwotICAgICAgICAgICAgICAgIGZpbmlzaChbW2F0dHJpYnV0ZWRTdHJpbmcgcmV0
YWluXSBhdXRvcmVsZWFzZV0sIFtbZG9jdW1lbnRBdHRyaWJ1dGVzIHJldGFpbl0gYXV0b3JlbGVh
c2VdLCBuaWwpOworICAgICAgICAgICAgICAgIGZpbmlzaChyZXRhaW5QdHIoYXR0cmlidXRlZFN0
cmluZykuYXV0b3JlbGVhc2UoKSwgcmV0YWluUHRyKGRvY3VtZW50QXR0cmlidXRlcykuYXV0b3Jl
bGVhc2UoKSwgbmlsKTsKICAgICAgICAgICAgIH1dOwogICAgICAgICB9OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tCcm93c2luZ0NvbnRleHRDb250
cm9sbGVyLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLQnJvd3NpbmdD
b250ZXh0Q29udHJvbGxlci5tbQppbmRleCA5MzY0NWJlOWJmNzRjMDQ2N2Q0MTM1ZThjYzIwNWU2
NTBiOWEzMDIxLi5lYWQ3YTdkZDZjZmRiZGUyMTNkYzE5MzI2NzJhMzA3NmNkZDFjMjI5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tCcm93c2luZ0NvbnRl
eHRDb250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIubW0KQEAgLTQ1OSw3ICs0NTksNyBAQCBzdGF0aWMg
V0tQb2xpY3lEZWNpc2lvbkhhbmRsZXIgbWFrZVBvbGljeURlY2lzaW9uQmxvY2soV0tGcmFtZVBv
bGljeUxpc3RlbmVyUmVmCiB7CiAgICAgV0tSZXRhaW4obGlzdGVuZXIpOyAvLyBSZWxlYXNlZCBp
biB0aGUgZGVjaXNpb24gaGFuZGxlciBiZWxvdy4KIAotICAgIHJldHVybiBbW14oV0tQb2xpY3lE
ZWNpc2lvbiBkZWNpc2lvbikgeworICAgIHJldHVybiBhZG9wdE5TKFteKFdLUG9saWN5RGVjaXNp
b24gZGVjaXNpb24pIHsKICAgICAgICAgc3dpdGNoIChkZWNpc2lvbikgewogICAgICAgICBjYXNl
IFdLUG9saWN5RGVjaXNpb25DYW5jZWw6CiAgICAgICAgICAgICBXS0ZyYW1lUG9saWN5TGlzdGVu
ZXJJZ25vcmUobGlzdGVuZXIpOyAgICAgICAgICAgICAgICAgICAgCkBAIC00NzUsNyArNDc1LDcg
QEAgc3RhdGljIFdLUG9saWN5RGVjaXNpb25IYW5kbGVyIG1ha2VQb2xpY3lEZWNpc2lvbkJsb2Nr
KFdLRnJhbWVQb2xpY3lMaXN0ZW5lclJlZgogICAgICAgICB9OwogCiAgICAgICAgIFdLUmVsZWFz
ZShsaXN0ZW5lcik7IC8vIFJldGFpbmVkIGluIHRoZSBjb250ZXh0IGFib3ZlLgotICAgIH0gY29w
eV0gYXV0b3JlbGVhc2VdOworICAgIH0gY29weV0pLmF1dG9yZWxlYXNlKCk7CiB9CiAKIHN0YXRp
YyB2b2lkIHNldFVwUGFnZVBvbGljeUNsaWVudChXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIg
KmJyb3dzaW5nQ29udGV4dCwgV2ViS2l0OjpXZWJQYWdlUHJveHkmIHBhZ2UpCkBAIC01MDQsNyAr
NTA0LDcgQEAgc3RhdGljIHZvaWQgc2V0VXBQYWdlUG9saWN5Q2xpZW50KFdLQnJvd3NpbmdDb250
ZXh0Q29udHJvbGxlciAqYnJvd3NpbmdDb250ZXh0LAogICAgICAgICAgICAgfTsKIAogICAgICAg
ICAgICAgaWYgKG9yaWdpbmF0aW5nRnJhbWUpIHsKLSAgICAgICAgICAgICAgICBhY3Rpb25EaWN0
aW9uYXJ5ID0gW1thY3Rpb25EaWN0aW9uYXJ5IG11dGFibGVDb3B5XSBhdXRvcmVsZWFzZV07Cisg
ICAgICAgICAgICAgICAgYWN0aW9uRGljdGlvbmFyeSA9IGFkb3B0TlMoW2FjdGlvbkRpY3Rpb25h
cnkgbXV0YWJsZUNvcHldKS5hdXRvcmVsZWFzZSgpOwogICAgICAgICAgICAgICAgIFsoTlNNdXRh
YmxlRGljdGlvbmFyeSAqKWFjdGlvbkRpY3Rpb25hcnkgc2V0T2JqZWN0OltOU1VSTCBfd2ViX1VS
TFdpdGhXVEZTdHJpbmc6V2ViS2l0Ojp0b0ltcGwob3JpZ2luYXRpbmdGcmFtZSktPnVybCgpLnN0
cmluZygpXSBmb3JLZXk6V0tBY3Rpb25PcmlnaW5hdGluZ0ZyYW1lVVJMS2V5XTsKICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIApAQCAtNzM0LDcgKzczNCw3IEBAIC0gKE5TVUludGVnZXIpcGFn
ZUNvdW50CiAKIC0gKFdLQnJvd3NpbmdDb250ZXh0SGFuZGxlICopaGFuZGxlCiB7Ci0gICAgcmV0
dXJuIFtbW1dLQnJvd3NpbmdDb250ZXh0SGFuZGxlIGFsbG9jXSBfaW5pdFdpdGhQYWdlUHJveHk6
Kl9wYWdlXSBhdXRvcmVsZWFzZV07CisgICAgcmV0dXJuIGFkb3B0TlMoW1tXS0Jyb3dzaW5nQ29u
dGV4dEhhbmRsZSBhbGxvY10gX2luaXRXaXRoUGFnZVByb3h5OipfcGFnZV0pLmF1dG9yZWxlYXNl
KCk7CiB9CiAKIC0gKF9XS1JlbW90ZU9iamVjdFJlZ2lzdHJ5ICopX3JlbW90ZU9iamVjdFJlZ2lz
dHJ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tDb250
ZW50V29ybGQubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tDb250ZW50
V29ybGQubW0KaW5kZXggMzgxNmExZTZmNThjNTY0NDY2YTBkOTA4YWRiMzU0ZDg0N2VkNDk2NS4u
MGI0NWRlNTU4ODAwODdhYWRhNWNlN2VkNTg2N2E0MGIyZThjNzY2MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLQ29udGVudFdvcmxkLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0NvbnRlbnRXb3JsZC5tbQpAQCAtNzQs
NyArNzQsNyBAQCBAaW1wbGVtZW50YXRpb24gV0tDb250ZW50V29ybGQgKFdLUHJpdmF0ZSkKIEFM
TE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCiAtIChfV0tVc2VyQ29udGVudFdvcmxk
ICopX3VzZXJDb250ZW50V29ybGQKIHsKLSAgICByZXR1cm4gW1tbX1dLVXNlckNvbnRlbnRXb3Js
ZCBhbGxvY10gX2luaXRXaXRoQ29udGVudFdvcmxkOnNlbGZdIGF1dG9yZWxlYXNlXTsKKyAgICBy
ZXR1cm4gYWRvcHROUyhbW19XS1VzZXJDb250ZW50V29ybGQgYWxsb2NdIF9pbml0V2l0aENvbnRl
bnRXb3JsZDpzZWxmXSkuYXV0b3JlbGVhc2UoKTsKIH0KIEFMTE9XX0RFUFJFQ0FURURfREVDTEFS
QVRJT05TX0VORAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tGcmFtZUluZm8ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tG
cmFtZUluZm8ubW0KaW5kZXggMWM2MzJiMjQzYTdkZWNjOTE3M2MwNmU5ZmYwNzZkMDNhOWYzZDJi
Zi4uZTM3ZTNmMmE5MDFiNjIzMmQ3ODY4MTFkNzIyODA0YWFiM2E5YTY4MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLRnJhbWVJbmZvLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0ZyYW1lSW5mby5tbQpAQCAtNTgsMTMg
KzU4LDEzIEBAIC0gKFdLU2VjdXJpdHlPcmlnaW4gKilzZWN1cml0eU9yaWdpbgogewogICAgIGF1
dG8mIGRhdGEgPSBfZnJhbWVJbmZvLT5zZWN1cml0eU9yaWdpbigpOwogICAgIGF1dG8gYXBpT3Jp
Z2luID0gQVBJOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKGRhdGEucHJvdG9jb2wsIGRhdGEuaG9z
dCwgZGF0YS5wb3J0KTsKLSAgICByZXR1cm4gW1t3cmFwcGVyKGFwaU9yaWdpbi5nZXQoKSkgcmV0
YWluXSBhdXRvcmVsZWFzZV07CisgICAgcmV0dXJuIHJldGFpblB0cih3cmFwcGVyKGFwaU9yaWdp
bi5nZXQoKSkpLmF1dG9yZWxlYXNlKCk7CiB9CiAKIC0gKFdLV2ViVmlldyAqKXdlYlZpZXcKIHsK
ICAgICBpZiAoV2ViS2l0OjpXZWJQYWdlUHJveHkqIHBhZ2UgPSBfZnJhbWVJbmZvLT5wYWdlKCkp
Ci0gICAgICAgIHJldHVybiBbW2Zyb21XZWJQYWdlUHJveHkoKnBhZ2UpIHJldGFpbl0gYXV0b3Jl
bGVhc2VdOworICAgICAgICByZXR1cm4gcmV0YWluUHRyKGZyb21XZWJQYWdlUHJveHkoKnBhZ2Up
KS5hdXRvcmVsZWFzZSgpOwogICAgIHJldHVybiBuaWw7CiB9CiAKQEAgLTg2LDEyICs4NiwxMiBA
QCBAaW1wbGVtZW50YXRpb24gV0tGcmFtZUluZm8gKFdLUHJpdmF0ZSkKIAogLSAoX1dLRnJhbWVI
YW5kbGUgKilfaGFuZGxlCiB7Ci0gICAgcmV0dXJuIFtbd3JhcHBlcihfZnJhbWVJbmZvLT5oYW5k
bGUoKSkgcmV0YWluXSBhdXRvcmVsZWFzZV07CisgICAgcmV0dXJuIHJldGFpblB0cih3cmFwcGVy
KF9mcmFtZUluZm8tPmhhbmRsZSgpKSkuYXV0b3JlbGVhc2UoKTsKIH0KIAogLSAoX1dLRnJhbWVI
YW5kbGUgKilfcGFyZW50RnJhbWVIYW5kbGUKIHsKLSAgICByZXR1cm4gW1t3cmFwcGVyKF9mcmFt
ZUluZm8tPnBhcmVudEZyYW1lSGFuZGxlKCkpIHJldGFpbl0gYXV0b3JlbGVhc2VdOworICAgIHJl
dHVybiByZXRhaW5QdHIod3JhcHBlcihfZnJhbWVJbmZvLT5wYXJlbnRGcmFtZUhhbmRsZSgpKSku
YXV0b3JlbGVhc2UoKTsKIH0KIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLVXNlclNjcmlwdC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1VzZXJTY3JpcHQubW0KaW5kZXggYjc2Mjg4YTMxMTY0YWMyMGZiYThiMDc4
MjEyMGJjZDYwYWNkNWM3Ni4uODkzODAwZDU0NzczMDdkZThkMGVkYmZhNTRhN2Y0NWE4ZWFiMjc4
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlclNj
cmlwdC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2VyU2Ny
aXB0Lm1tCkBAIC04OCw3ICs4OCw3IEBAIEBpbXBsZW1lbnRhdGlvbiBXS1VzZXJTY3JpcHQgKFdL
UHJpdmF0ZSkKIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCiAtIChfV0tVc2Vy
Q29udGVudFdvcmxkICopX3VzZXJDb250ZW50V29ybGQKIHsKLSAgICByZXR1cm4gW1tbX1dLVXNl
ckNvbnRlbnRXb3JsZCBhbGxvY10gX2luaXRXaXRoQ29udGVudFdvcmxkOndyYXBwZXIoX3VzZXJT
Y3JpcHQtPmNvbnRlbnRXb3JsZCgpKV0gYXV0b3JlbGVhc2VdOworICAgIHJldHVybiBhZG9wdE5T
KFtbX1dLVXNlckNvbnRlbnRXb3JsZCBhbGxvY10gX2luaXRXaXRoQ29udGVudFdvcmxkOndyYXBw
ZXIoX3VzZXJTY3JpcHQtPmNvbnRlbnRXb3JsZCgpKV0pLmF1dG9yZWxlYXNlKCk7CiB9CiBBTExP
V19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KaW5kZXggNDk0NjE2ZTkyNjA0ZmRjNjkzZDQ1YTFi
OWZmYmViOWExYWRmYmUzNC4uMzA2Njc5YjUxZDM3MTJiODdlMjdhZjA1ZTMwYzU0OWYwZDUwMjdj
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmll
dy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1t
CkBAIC02NTUsNyArNjU1LDcgQEAgLSAoaWQpdmFsdWVGb3JVbmRlZmluZWRLZXk6KE5TU3RyaW5n
ICopa2V5CiAKIC0gKFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gKiljb25maWd1cmF0aW9uCiB7Ci0g
ICAgcmV0dXJuIFtbX2NvbmZpZ3VyYXRpb24gY29weV0gYXV0b3JlbGVhc2VdOworICAgIHJldHVy
biBhZG9wdE5TKFtfY29uZmlndXJhdGlvbiBjb3B5XSkuYXV0b3JlbGVhc2UoKTsKIH0KIAogLSAo
V0tCYWNrRm9yd2FyZExpc3QgKiliYWNrRm9yd2FyZExpc3QKQEAgLTEyMTYsMTIgKzEyMTYsMTIg
QEAgaW5saW5lIE9wdGlvblNldDxXZWJLaXQ6OkZpbmRPcHRpb25zPiB0b0ZpbmRPcHRpb25zKFdL
RmluZENvbmZpZ3VyYXRpb24gKmNvbmZpZ3UKIC0gKHZvaWQpZmluZFN0cmluZzooTlNTdHJpbmcg
KilzdHJpbmcgd2l0aENvbmZpZ3VyYXRpb246KFdLRmluZENvbmZpZ3VyYXRpb24gKiljb25maWd1
cmF0aW9uIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShXS0ZpbmRSZXN1bHQgKnJlc3VsdCkp
Y29tcGxldGlvbkhhbmRsZXIKIHsKICAgICBpZiAoIXN0cmluZy5sZW5ndGgpIHsKLSAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoW1tbV0tGaW5kUmVzdWx0IGFsbG9jXSBfaW5pdFdpdGhNYXRjaEZv
dW5kOk5PXSBhdXRvcmVsZWFzZV0pOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihhZG9wdE5T
KFtbV0tGaW5kUmVzdWx0IGFsbG9jXSBfaW5pdFdpdGhNYXRjaEZvdW5kOk5PXSkuYXV0b3JlbGVh
c2UoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBfcGFnZS0+ZmluZFN0cmluZyhz
dHJpbmcsIHRvRmluZE9wdGlvbnMoY29uZmlndXJhdGlvbiksIDEsIFtoYW5kbGVyID0gbWFrZUJs
b2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0oYm9vbCBmb3VuZCkgewotICAgICAgICBoYW5kbGVy
KFtbW1dLRmluZFJlc3VsdCBhbGxvY10gX2luaXRXaXRoTWF0Y2hGb3VuZDpmb3VuZF0gYXV0b3Jl
bGVhc2VdKTsKKyAgICAgICAgaGFuZGxlcihhZG9wdE5TKFtbV0tGaW5kUmVzdWx0IGFsbG9jXSBf
aW5pdFdpdGhNYXRjaEZvdW5kOmZvdW5kXSkuYXV0b3JlbGVhc2UoKSk7CiAgICAgfSk7CiB9CiAK
QEAgLTE3MDksOCArMTcwOSw4IEBAIC0gKEJPT0wpX25lZ290aWF0ZWRMZWdhY3lUTFMKIC0gKHZv
aWQpX2ZyYW1lczoodm9pZCAoXikoX1dLRnJhbWVUcmVlTm9kZSAqKSljb21wbGV0aW9uSGFuZGxl
cgogewogICAgIF9wYWdlLT5nZXRBbGxGcmFtZXMoW2NvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJs
b2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKSwgcGFnZSA9IG1ha2VSZWYoKl9wYWdlLmdldCgpKV0g
KFdlYktpdDo6RnJhbWVUcmVlTm9kZURhdGEmJiBkYXRhKSB7Ci0gICAgICAgIF9XS0ZyYW1lVHJl
ZU5vZGUgKm5vZGUgPSBbW3dyYXBwZXIoQVBJOjpGcmFtZVRyZWVOb2RlOjpjcmVhdGUoV1RGTW92
ZShkYXRhKSwgcGFnZS5nZXQoKSkpIHJldGFpbl0gYXV0b3JlbGVhc2VdOwotICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihub2RlKTsKKyAgICAgICAgYXV0byBub2RlID0gcmV0YWluUHRyKHdyYXBw
ZXIoQVBJOjpGcmFtZVRyZWVOb2RlOjpjcmVhdGUoV1RGTW92ZShkYXRhKSwgcGFnZS5nZXQoKSkp
KTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobm9kZS5hdXRvcmVsZWFzZSgpKTsKICAgICB9
KTsKIH0KIApAQCAtMTk1NCw3ICsxOTU0LDcgQEAgLSAoX1dLUmVtb3RlT2JqZWN0UmVnaXN0cnkg
KilfcmVtb3RlT2JqZWN0UmVnaXN0cnkKIAogLSAoV0tCcm93c2luZ0NvbnRleHRIYW5kbGUgKilf
aGFuZGxlCiB7Ci0gICAgcmV0dXJuIFtbW1dLQnJvd3NpbmdDb250ZXh0SGFuZGxlIGFsbG9jXSBf
aW5pdFdpdGhQYWdlUHJveHk6Kl9wYWdlXSBhdXRvcmVsZWFzZV07CisgICAgcmV0dXJuIGFkb3B0
TlMoW1tXS0Jyb3dzaW5nQ29udGV4dEhhbmRsZSBhbGxvY10gX2luaXRXaXRoUGFnZVByb3h5Oipf
cGFnZV0pLmF1dG9yZWxlYXNlKCk7CiB9CiAKIC0gKF9XS1JlbmRlcmluZ1Byb2dyZXNzRXZlbnRz
KV9vYnNlcnZlZFJlbmRlcmluZ1Byb2dyZXNzRXZlbnRzCkBAIC0yMjMwLDEzICsyMjMwLDEzIEBA
IC0gKHZvaWQpX2tpbGxXZWJDb250ZW50UHJvY2Vzc0FuZFJlc2V0U3RhdGUKIAogLSAodm9pZClf
dGFrZVBERlNuYXBzaG90V2l0aENvbmZpZ3VyYXRpb246KFdLU25hcHNob3RDb25maWd1cmF0aW9u
ICopc25hcHNob3RDb25maWd1cmF0aW9uIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShOU0Rh
dGEgKiwgTlNFcnJvciAqKSljb21wbGV0aW9uSGFuZGxlcgogewotICAgIFdLUERGQ29uZmlndXJh
dGlvbiAqcGRmQ29uZmlndXJhdGlvbiA9IG5pbDsKKyAgICBSZXRhaW5QdHI8V0tQREZDb25maWd1
cmF0aW9uPiBwZGZDb25maWd1cmF0aW9uOwogICAgIGlmIChzbmFwc2hvdENvbmZpZ3VyYXRpb24p
IHsKLSAgICAgICAgcGRmQ29uZmlndXJhdGlvbiA9IFtbW1dLUERGQ29uZmlndXJhdGlvbiBhbGxv
Y10gaW5pdF0gYXV0b3JlbGVhc2VdOwotICAgICAgICBwZGZDb25maWd1cmF0aW9uLnJlY3QgPSBz
bmFwc2hvdENvbmZpZ3VyYXRpb24ucmVjdDsKKyAgICAgICAgcGRmQ29uZmlndXJhdGlvbiA9IGFk
b3B0TlMoW1tXS1BERkNvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICAgICAgW3BkZkNv
bmZpZ3VyYXRpb24gc2V0UmVjdDpzbmFwc2hvdENvbmZpZ3VyYXRpb24ucmVjdF07CiAgICAgfQog
Ci0gICAgW3NlbGYgY3JlYXRlUERGV2l0aENvbmZpZ3VyYXRpb246cGRmQ29uZmlndXJhdGlvbiBj
b21wbGV0aW9uSGFuZGxlcjpjb21wbGV0aW9uSGFuZGxlcl07CisgICAgW3NlbGYgY3JlYXRlUERG
V2l0aENvbmZpZ3VyYXRpb246cGRmQ29uZmlndXJhdGlvbi5hdXRvcmVsZWFzZSgpIGNvbXBsZXRp
b25IYW5kbGVyOmNvbXBsZXRpb25IYW5kbGVyXTsKIH0KIAogLSAoTlNEYXRhICopX3Nlc3Npb25T
dGF0ZURhdGEKQEAgLTIyNDcsNyArMjI0Nyw3IEBAIC0gKE5TRGF0YSAqKV9zZXNzaW9uU3RhdGVE
YXRhCiAKIC0gKF9XS1Nlc3Npb25TdGF0ZSAqKV9zZXNzaW9uU3RhdGUKIHsKLSAgICByZXR1cm4g
W1tbX1dLU2Vzc2lvblN0YXRlIGFsbG9jXSBfaW5pdFdpdGhTZXNzaW9uU3RhdGU6X3BhZ2UtPnNl
c3Npb25TdGF0ZSgpXSBhdXRvcmVsZWFzZV07CisgICAgcmV0dXJuIGFkb3B0TlMoW1tfV0tTZXNz
aW9uU3RhdGUgYWxsb2NdIF9pbml0V2l0aFNlc3Npb25TdGF0ZTpfcGFnZS0+c2Vzc2lvblN0YXRl
KCldKS5hdXRvcmVsZWFzZSgpOwogfQogCiAtIChfV0tTZXNzaW9uU3RhdGUgKilfc2Vzc2lvblN0
YXRlV2l0aEZpbHRlcjooQk9PTCAoXikoV0tCYWNrRm9yd2FyZExpc3RJdGVtICppdGVtKSlmaWx0
ZXIKQEAgLTIyNTksNyArMjI1OSw3IEBAIC0gKF9XS1Nlc3Npb25TdGF0ZSAqKV9zZXNzaW9uU3Rh
dGVXaXRoRmlsdGVyOihCT09MICheKShXS0JhY2tGb3J3YXJkTGlzdEl0ZW0gKml0CiAgICAgICAg
IHJldHVybiAoYm9vbClmaWx0ZXIod3JhcHBlcihpdGVtKSk7CiAgICAgfSk7CiAKLSAgICByZXR1
cm4gW1tbX1dLU2Vzc2lvblN0YXRlIGFsbG9jXSBfaW5pdFdpdGhTZXNzaW9uU3RhdGU6c2Vzc2lv
blN0YXRlXSBhdXRvcmVsZWFzZV07CisgICAgcmV0dXJuIGFkb3B0TlMoW1tfV0tTZXNzaW9uU3Rh
dGUgYWxsb2NdIF9pbml0V2l0aFNlc3Npb25TdGF0ZTpzZXNzaW9uU3RhdGVdKS5hdXRvcmVsZWFz
ZSgpOwogfQogCiAtICh2b2lkKV9yZXN0b3JlRnJvbVNlc3Npb25TdGF0ZURhdGE6KE5TRGF0YSAq
KXNlc3Npb25TdGF0ZURhdGEKQEAgLTI1NzcsNyArMjU3Nyw3IEBAIC0gKHZvaWQpX2dldENvbnRl
bnRzQXNBdHRyaWJ1dGVkU3RyaW5nV2l0aENvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShOU0F0
dHJpYnV0CiB7CiAgICAgX3BhZ2UtPmdldENvbnRlbnRzQXNBdHRyaWJ1dGVkU3RyaW5nKFtoYW5k
bGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0oYXV0byYgYXR0cmlidXRlZFN0
cmluZykgewogICAgICAgICBpZiAoYXR0cmlidXRlZFN0cmluZy5zdHJpbmcpCi0gICAgICAgICAg
ICBoYW5kbGVyKFtbYXR0cmlidXRlZFN0cmluZy5zdHJpbmcuZ2V0KCkgcmV0YWluXSBhdXRvcmVs
ZWFzZV0sIFtbYXR0cmlidXRlZFN0cmluZy5kb2N1bWVudEF0dHJpYnV0ZXMuZ2V0KCkgcmV0YWlu
XSBhdXRvcmVsZWFzZV0sIG5pbCk7CisgICAgICAgICAgICBoYW5kbGVyKHJldGFpblB0cihhdHRy
aWJ1dGVkU3RyaW5nLnN0cmluZy5nZXQoKSkuYXV0b3JlbGVhc2UoKSwgcmV0YWluUHRyKGF0dHJp
YnV0ZWRTdHJpbmcuZG9jdW1lbnRBdHRyaWJ1dGVzLmdldCgpKS5hdXRvcmVsZWFzZSgpLCBuaWwp
OwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBoYW5kbGVyKG5pbCwgbmlsLCBjcmVhdGVOU0Vy
cm9yKFdLRXJyb3JVbmtub3duKS5nZXQoKSk7CiAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJwYWdlUHJlZmVyZW5jZXMubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJwYWdlUHJlZmVyZW5jZXMubW0KaW5k
ZXggM2RjN2ZhNmU0ZTEwMjNmMmUyZmE2NTU1YjM5YmZlZTliMzlhZWUwYS4uY2I1NjRkY2RiMjYw
ZGUyZjg2Zjc0YjI4NGJkZTEzMTdmNzllZThjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2VicGFnZVByZWZlcmVuY2VzLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnBhZ2VQcmVmZXJlbmNlcy5tbQpAQCAtMTA0
LDcgKzEwNCw3IEBAIEBpbXBsZW1lbnRhdGlvbiBXS1dlYnBhZ2VQcmVmZXJlbmNlcwogCiArIChp
bnN0YW5jZXR5cGUpZGVmYXVsdFByZWZlcmVuY2VzCiB7Ci0gICAgcmV0dXJuIFtbW3NlbGYgYWxs
b2NdIGluaXRdIGF1dG9yZWxlYXNlXTsKKyAgICByZXR1cm4gYWRvcHROUyhbW3NlbGYgYWxsb2Nd
IGluaXRdKS5hdXRvcmVsZWFzZSgpOwogfQogCiAtICh2b2lkKWRlYWxsb2MKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVjb3JkLm1t
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFSZWNvcmQu
bW0KaW5kZXggNjNlZTc2MWNkZWMwNGEyZDRhNDVkYTFiYjQzMjg5ZTJkYTA3NTBmNi4uZjM5NWE3
MThhMTU4YTU0NDNjY2E1MmMwZDI4NmE4OWI1ZWRkMjMxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFSZWNvcmQubW0KKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFSZWNvcmQubW0KQEAg
LTE1MCw3ICsxNTAsNyBAQCAtIChfV0tXZWJzaXRlRGF0YVNpemUgKilfZGF0YVNpemUKICAgICBp
ZiAoIXNpemUpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICByZXR1cm4gW1tbX1dLV2Vic2l0
ZURhdGFTaXplIGFsbG9jXSBpbml0V2l0aFNpemU6KnNpemVdIGF1dG9yZWxlYXNlXTsKKyAgICBy
ZXR1cm4gYWRvcHROUyhbW19XS1dlYnNpdGVEYXRhU2l6ZSBhbGxvY10gaW5pdFdpdGhTaXplOipz
aXplXSkuYXV0b3JlbGVhc2UoKTsKIH0KIAogLSAoTlNBcnJheTxOU1N0cmluZyAqPiAqKV9vcmln
aW5zU3RyaW5ncwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L19XS0FjdGl2YXRlZEVsZW1lbnRJbmZvLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL19XS0FjdGl2YXRlZEVsZW1lbnRJbmZvLm1tCmluZGV4IGY1NjI0NTgzOGZkNzkxMjEz
NDkzMzJhM2M3NTBkMjRmZDk2NWY4NjQuLjZmZTU5M2M0YjQ2NGNlOWI2MDY1MDdlNjI3Yzk3ZTAw
MjUzOTFiMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9f
V0tBY3RpdmF0ZWRFbGVtZW50SW5mby5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvX1dLQWN0aXZhdGVkRWxlbWVudEluZm8ubW0KQEAgLTUzLDcgKzUzLDcgQEAgQGlt
cGxlbWVudGF0aW9uIF9XS0FjdGl2YXRlZEVsZW1lbnRJbmZvICB7CiAjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKICsgKGluc3RhbmNldHlwZSlhY3RpdmF0ZWRFbGVtZW50SW5mb1dpdGhJbnRlcmFj
dGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbjooY29uc3QgV2ViS2l0OjpJbnRlcmFjdGlvbkluZm9y
bWF0aW9uQXRQb3NpdGlvbiYpaW5mb3JtYXRpb24gdXNlckluZm86KE5TRGljdGlvbmFyeSAqKXVz
ZXJJbmZvCiB7Ci0gICAgcmV0dXJuIFtbW3NlbGYgYWxsb2NdIF9pbml0V2l0aEludGVyYWN0aW9u
SW5mb3JtYXRpb25BdFBvc2l0aW9uOmluZm9ybWF0aW9uIHVzZXJJbmZvOnVzZXJJbmZvXSBhdXRv
cmVsZWFzZV07CisgICAgcmV0dXJuIGFkb3B0TlMoW1tzZWxmIGFsbG9jXSBfaW5pdFdpdGhJbnRl
cmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbjppbmZvcm1hdGlvbiB1c2VySW5mbzp1c2VySW5m
b10pLmF1dG9yZWxlYXNlKCk7CiB9CiAKIC0gKGluc3RhbmNldHlwZSlfaW5pdFdpdGhJbnRlcmFj
dGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbjooY29uc3QgV2ViS2l0OjpJbnRlcmFjdGlvbkluZm9y
bWF0aW9uQXRQb3NpdGlvbiYpaW5mb3JtYXRpb24gdXNlckluZm86KE5TRGljdGlvbmFyeSAqKXVz
ZXJJbmZvCkBAIC0xNTEsNyArMTUxLDcgQEAgLSAoTlNEaWN0aW9uYXJ5ICopdXNlckluZm8KIC0g
KENvY29hSW1hZ2UgKilpbWFnZQogewogICAgIGlmIChfY29jb2FJbWFnZSkKLSAgICAgICAgcmV0
dXJuIFtbX2NvY29hSW1hZ2UgY29weV0gYXV0b3JlbGVhc2VdOworICAgICAgICByZXR1cm4gYWRv
cHROUyhbX2NvY29hSW1hZ2UgY29weV0pLmF1dG9yZWxlYXNlKCk7CiAKICAgICBpZiAoIV9pbWFn
ZSkKICAgICAgICAgcmV0dXJuIG5pbDsKQEAgLTE2Myw3ICsxNjMsNyBAQCAtIChDb2NvYUltYWdl
ICopaW1hZ2UKICNlbmRpZgogICAgIF9pbWFnZSA9IG51bGxwdHI7CiAKLSAgICByZXR1cm4gW1tf
Y29jb2FJbWFnZSBjb3B5XSBhdXRvcmVsZWFzZV07CisgICAgcmV0dXJuIGFkb3B0TlMoW19jb2Nv
YUltYWdlIGNvcHldKS5hdXRvcmVsZWFzZSgpOwogfQogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXR0YWNobWVudC5tbSBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdHRhY2htZW50Lm1tCmluZGV4IDVlOGI4YmJi
YmRmYmE2NDA3ZjlmZjM3ZmJhODJmMjY4ZDQ5ZjJiMWMuLmVmYzZiM2E5MDczZWZlYTcwOGY5YTY3
MDZmNmIzYjYzYWMxNWI2N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9fV0tBdHRhY2htZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9fV0tBdHRhY2htZW50Lm1tCkBAIC0xMjAsNyArMTIwLDcgQEAgLSAoX1dLQXR0YWNo
bWVudEluZm8gKilpbmZvCiAgICAgaWYgKCFfYXR0YWNobWVudC0+aXNWYWxpZCgpKQogICAgICAg
ICByZXR1cm4gbmlsOwogCi0gICAgcmV0dXJuIFtbW19XS0F0dGFjaG1lbnRJbmZvIGFsbG9jXSBp
bml0V2l0aEZpbGVXcmFwcGVyOl9hdHRhY2htZW50LT5maWxlV3JhcHBlcigpIGZpbGVQYXRoOl9h
dHRhY2htZW50LT5maWxlUGF0aCgpIG1pbWVUeXBlOl9hdHRhY2htZW50LT5taW1lVHlwZSgpIHV0
aVR5cGU6X2F0dGFjaG1lbnQtPnV0aVR5cGUoKV0gYXV0b3JlbGVhc2VdOworICAgIHJldHVybiBh
ZG9wdE5TKFtbX1dLQXR0YWNobWVudEluZm8gYWxsb2NdIGluaXRXaXRoRmlsZVdyYXBwZXI6X2F0
dGFjaG1lbnQtPmZpbGVXcmFwcGVyKCkgZmlsZVBhdGg6X2F0dGFjaG1lbnQtPmZpbGVQYXRoKCkg
bWltZVR5cGU6X2F0dGFjaG1lbnQtPm1pbWVUeXBlKCkgdXRpVHlwZTpfYXR0YWNobWVudC0+dXRp
VHlwZSgpXSkuYXV0b3JlbGVhc2UoKTsKIH0KIAogLSAodm9pZClyZXF1ZXN0SW5mbzoodm9pZChe
KShfV0tBdHRhY2htZW50SW5mbyAqLCBOU0Vycm9yICopKWNvbXBsZXRpb25IYW5kbGVyCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXV0b21hdGlvblNl
c3Npb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXV0b21hdGlv
blNlc3Npb24ubW0KaW5kZXggMmFkZWVhNzYwYzY5OGIxOGFlNTkxZTU3MDU3MTMyOTVmMjRjNTZk
Ny4uMTEwZDRlODBjNGY5OGFkN2VjMjJlZmJjYmE4NjE2ZDE4YzBmZWExNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0F1dG9tYXRpb25TZXNzaW9uLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdXRvbWF0aW9uU2Vz
c2lvbi5tbQpAQCAtNDEsNyArNDEsNyBAQCBAaW1wbGVtZW50YXRpb24gX1dLQXV0b21hdGlvblNl
c3Npb24gewogCiAtIChpbnN0YW5jZXR5cGUpaW5pdAogewotICAgIHJldHVybiBbc2VsZiBpbml0
V2l0aENvbmZpZ3VyYXRpb246W1tbX1dLQXV0b21hdGlvblNlc3Npb25Db25maWd1cmF0aW9uIGFs
bG9jXSBpbml0XSBhdXRvcmVsZWFzZV1dOworICAgIHJldHVybiBbc2VsZiBpbml0V2l0aENvbmZp
Z3VyYXRpb246YWRvcHROUyhbW19XS0F1dG9tYXRpb25TZXNzaW9uQ29uZmlndXJhdGlvbiBhbGxv
Y10gaW5pdF0pLmF1dG9yZWxlYXNlKCldOwogfQogCiAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhD
b25maWd1cmF0aW9uOihfV0tBdXRvbWF0aW9uU2Vzc2lvbkNvbmZpZ3VyYXRpb24gKiljb25maWd1
cmF0aW9uCkBAIC04Nyw3ICs4Nyw3IEBAIC0gKHZvaWQpc2V0U2Vzc2lvbklkZW50aWZpZXI6KE5T
U3RyaW5nICopc2Vzc2lvbklkZW50aWZpZXIKIAogLSAoX1dLQXV0b21hdGlvblNlc3Npb25Db25m
aWd1cmF0aW9uICopY29uZmlndXJhdGlvbgogewotICAgIHJldHVybiBbW19jb25maWd1cmF0aW9u
IGNvcHldIGF1dG9yZWxlYXNlXTsKKyAgICByZXR1cm4gYWRvcHROUyhbX2NvbmZpZ3VyYXRpb24g
Y29weV0pLmF1dG9yZWxlYXNlKCk7CiB9CiAKIC0gKEJPT0wpaXNQYWlyZWQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZC5tbSBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZC5tbQppbmRleCBkNWUxMWFk
Njk0NTRlZDhkZWFiMzU1NmIwOTI3ZjUwZDhiMzJlMDg0Li45MTNmNTNhNTQxMTg5NGMyOWViZmUw
ZDdmMDdmYjdiNjAyMDdhZjA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvX1dLRG93bmxvYWQubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL19XS0Rvd25sb2FkLm1tCkBAIC02MCw5ICs2MCw5IEBAICsgKGluc3RhbmNldHlwZSlk
b3dubG9hZFdpdGhEb3dubG9hZDooV0tEb3dubG9hZCAqKWRvd25sb2FkCiB7CiAgICAgaWYgKF9X
S0Rvd25sb2FkICp3cmFwcGVyID0gW2Rvd25sb2FkV3JhcHBlck1hcCgpIG9iamVjdEZvcktleTpk
b3dubG9hZF0pCiAgICAgICAgIHJldHVybiB3cmFwcGVyOwotICAgIF9XS0Rvd25sb2FkICp3cmFw
cGVyID0gW1tbX1dLRG93bmxvYWQgYWxsb2NdIGluaXRXaXRoRG93bmxvYWQyOmRvd25sb2FkXSBh
dXRvcmVsZWFzZV07Ci0gICAgW2Rvd25sb2FkV3JhcHBlck1hcCgpIHNldE9iamVjdDp3cmFwcGVy
IGZvcktleTpkb3dubG9hZF07Ci0gICAgcmV0dXJuIHdyYXBwZXI7CisgICAgYXV0byB3cmFwcGVy
ID0gYWRvcHROUyhbW19XS0Rvd25sb2FkIGFsbG9jXSBpbml0V2l0aERvd25sb2FkMjpkb3dubG9h
ZF0pOworICAgIFtkb3dubG9hZFdyYXBwZXJNYXAoKSBzZXRPYmplY3Q6d3JhcHBlci5nZXQoKSBm
b3JLZXk6ZG93bmxvYWRdOworICAgIHJldHVybiB3cmFwcGVyLmF1dG9yZWxlYXNlKCk7CiB9CiAK
IC0gKHZvaWQpY2FuY2VsCkBAIC04NSw3ICs4NSw3IEBAIC0gKE5TVVJMUmVxdWVzdCAqKXJlcXVl
c3QKIC0gKFdLV2ViVmlldyAqKW9yaWdpbmF0aW5nV2ViVmlldwogewogICAgIGlmIChhdXRvKiBv
cmlnaW5hdGluZ1BhZ2UgPSBfZG93bmxvYWQtPl9kb3dubG9hZC0+b3JpZ2luYXRpbmdQYWdlKCkp
Ci0gICAgICAgIHJldHVybiBbW2Zyb21XZWJQYWdlUHJveHkoKm9yaWdpbmF0aW5nUGFnZSkgcmV0
YWluXSBhdXRvcmVsZWFzZV07CisgICAgICAgIHJldHVybiByZXRhaW5QdHIoZnJvbVdlYlBhZ2VQ
cm94eSgqb3JpZ2luYXRpbmdQYWdlKSkuYXV0b3JlbGVhc2UoKTsKICAgICByZXR1cm4gbmlsOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRWxl
bWVudEFjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tFbGVt
ZW50QWN0aW9uLm1tCmluZGV4IGExNDI4NjllNjNlZjZkZmM2NTNhZjQ5M2M1NmM5ZjcwYzU4YzYy
MGMuLjUxNTBlMjg5NGI0NWE2ZjZiZGVhNjg2NThhMjBmY2ZjOTJiODY2YzIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tFbGVtZW50QWN0aW9uLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tFbGVtZW50QWN0aW9uLm1t
CkBAIC05Niw4ICs5Niw4IEBAIC0gKHZvaWQpZGVhbGxvYwogCiArIChpbnN0YW5jZXR5cGUpZWxl
bWVudEFjdGlvbldpdGhUaXRsZTooTlNTdHJpbmcgKil0aXRsZSBhY3Rpb25IYW5kbGVyOihXS0Vs
ZW1lbnRBY3Rpb25IYW5kbGVyKWhhbmRsZXIKIHsKLSAgICByZXR1cm4gW1tbc2VsZiBhbGxvY10g
X2luaXRXaXRoVGl0bGU6dGl0bGUgYWN0aW9uSGFuZGxlcjpeKFdLQWN0aW9uU2hlZXRBc3Npc3Rh
bnQgKiwgX1dLQWN0aXZhdGVkRWxlbWVudEluZm8gKmFjdGlvbkluZm8pIHsgaGFuZGxlcihhY3Rp
b25JbmZvKTsgfQotICAgICAgICB0eXBlOl9XS0VsZW1lbnRBY3Rpb25UeXBlQ3VzdG9tIGFzc2lz
dGFudDpuaWxdIGF1dG9yZWxlYXNlXTsKKyAgICByZXR1cm4gYWRvcHROUyhbW3NlbGYgYWxsb2Nd
IF9pbml0V2l0aFRpdGxlOnRpdGxlIGFjdGlvbkhhbmRsZXI6XihXS0FjdGlvblNoZWV0QXNzaXN0
YW50ICosIF9XS0FjdGl2YXRlZEVsZW1lbnRJbmZvICphY3Rpb25JbmZvKSB7IGhhbmRsZXIoYWN0
aW9uSW5mbyk7IH0KKyAgICAgICAgdHlwZTpfV0tFbGVtZW50QWN0aW9uVHlwZUN1c3RvbSBhc3Np
c3RhbnQ6bmlsXSkuYXV0b3JlbGVhc2UoKTsKIH0KIAogI2lmIEhBVkUoU0FGQVJJX1NFUlZJQ0VT
X0ZSQU1FV09SSykKQEAgLTExOCw3ICsxMTgsNyBAQCArIChpbnN0YW5jZXR5cGUpZWxlbWVudEFj
dGlvbldpdGhUeXBlOihfV0tFbGVtZW50QWN0aW9uVHlwZSl0eXBlIHRpdGxlOihOU1N0cmluZwog
KyAoaW5zdGFuY2V0eXBlKV9lbGVtZW50QWN0aW9uV2l0aFR5cGU6KF9XS0VsZW1lbnRBY3Rpb25U
eXBlKXR5cGUgdGl0bGU6KE5TU3RyaW5nICopdGl0bGUgYWN0aW9uSGFuZGxlcjooV0tFbGVtZW50
QWN0aW9uSGFuZGxlcilhY3Rpb25IYW5kbGVyCiB7CiAgICAgV0tFbGVtZW50QWN0aW9uSGFuZGxl
ckludGVybmFsIGhhbmRsZXIgPSBeKFdLQWN0aW9uU2hlZXRBc3Npc3RhbnQgKiwgX1dLQWN0aXZh
dGVkRWxlbWVudEluZm8gKmFjdGlvbkluZm8pIHsgYWN0aW9uSGFuZGxlcihhY3Rpb25JbmZvKTsg
fTsKLSAgICByZXR1cm4gW1tbc2VsZiBhbGxvY10gX2luaXRXaXRoVGl0bGU6dGl0bGUgYWN0aW9u
SGFuZGxlcjpoYW5kbGVyIHR5cGU6dHlwZSBhc3Npc3RhbnQ6bmlsXSBhdXRvcmVsZWFzZV07Cisg
ICAgcmV0dXJuIGFkb3B0TlMoW1tzZWxmIGFsbG9jXSBfaW5pdFdpdGhUaXRsZTp0aXRsZSBhY3Rp
b25IYW5kbGVyOmhhbmRsZXIgdHlwZTp0eXBlIGFzc2lzdGFudDpuaWxdKS5hdXRvcmVsZWFzZSgp
OwogfQogCiArIChpbnN0YW5jZXR5cGUpX2VsZW1lbnRBY3Rpb25XaXRoVHlwZTooX1dLRWxlbWVu
dEFjdGlvblR5cGUpdHlwZSBjdXN0b21UaXRsZTooTlNTdHJpbmcgKiljdXN0b21UaXRsZSBhc3Np
c3RhbnQ6KFdLQWN0aW9uU2hlZXRBc3Npc3RhbnQgKilhc3Npc3RhbnQKQEAgLTE4Miw3ICsxODIs
NyBAQCArIChpbnN0YW5jZXR5cGUpX2VsZW1lbnRBY3Rpb25XaXRoVHlwZTooX1dLRWxlbWVudEFj
dGlvblR5cGUpdHlwZSBjdXN0b21UaXRsZTooTgogICAgICAgICByZXR1cm4gbmlsOwogICAgIH0K
IAotICAgIHJldHVybiBbW1tzZWxmIGFsbG9jXSBfaW5pdFdpdGhUaXRsZTooY3VzdG9tVGl0bGUg
PyBjdXN0b21UaXRsZSA6IHRpdGxlKSBhY3Rpb25IYW5kbGVyOmhhbmRsZXIgdHlwZTp0eXBlIGFz
c2lzdGFudDphc3Npc3RhbnRdIGF1dG9yZWxlYXNlXTsKKyAgICByZXR1cm4gYWRvcHROUyhbW3Nl
bGYgYWxsb2NdIF9pbml0V2l0aFRpdGxlOihjdXN0b21UaXRsZSA/IGN1c3RvbVRpdGxlIDogdGl0
bGUpIGFjdGlvbkhhbmRsZXI6aGFuZGxlciB0eXBlOnR5cGUgYXNzaXN0YW50OmFzc2lzdGFudF0p
LmF1dG9yZWxlYXNlKCk7CiB9CiAKICsgKGluc3RhbmNldHlwZSlfZWxlbWVudEFjdGlvbldpdGhU
eXBlOihfV0tFbGVtZW50QWN0aW9uVHlwZSl0eXBlIGFzc2lzdGFudDooV0tBY3Rpb25TaGVldEFz
c2lzdGFudCAqKWFzc2lzdGFudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL19XS0ZyYW1lVHJlZU5vZGUubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvX1dLRnJhbWVUcmVlTm9kZS5tbQppbmRleCA0ZDM5ZTIxNTgyMTY3YmM4NTFiOTBk
YzRhMTg1NjI0ZTZiZjBjMjI4Li41NzI5NThhZGMyMTM4OWJhZWM5ZmE5ZDM2OWYwNzc4NWQ3ZWYx
MzIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRnJh
bWVUcmVlTm9kZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dL
RnJhbWVUcmVlTm9kZS5tbQpAQCAtNTMsMTIgKzUzLDEyIEBAIC0gKFdLU2VjdXJpdHlPcmlnaW4g
KilzZWN1cml0eU9yaWdpbgogewogICAgIGF1dG8mIGRhdGEgPSBfbm9kZS0+c2VjdXJpdHlPcmln
aW4oKTsKICAgICBhdXRvIGFwaU9yaWdpbiA9IEFQSTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZShk
YXRhLnByb3RvY29sLCBkYXRhLmhvc3QsIGRhdGEucG9ydCk7Ci0gICAgcmV0dXJuIFtbd3JhcHBl
cihhcGlPcmlnaW4uZ2V0KCkpIHJldGFpbl0gYXV0b3JlbGVhc2VdOworICAgIHJldHVybiByZXRh
aW5QdHIod3JhcHBlcihhcGlPcmlnaW4uZ2V0KCkpKS5hdXRvcmVsZWFzZSgpOwogfQogCiAtIChX
S1dlYlZpZXcgKil3ZWJWaWV3CiB7Ci0gICAgcmV0dXJuIFtbZnJvbVdlYlBhZ2VQcm94eShfbm9k
ZS0+cGFnZSgpKSByZXRhaW5dIGF1dG9yZWxlYXNlXTsKKyAgICByZXR1cm4gcmV0YWluUHRyKGZy
b21XZWJQYWdlUHJveHkoX25vZGUtPnBhZ2UoKSkpLmF1dG9yZWxlYXNlKCk7CiB9CiAKIC0gKE5T
QXJyYXk8X1dLRnJhbWVUcmVlTm9kZSAqPiAqKWNoaWxkRnJhbWVzCkBAIC03NSwxMiArNzUsMTIg
QEAgLSAoaWQpY29weVdpdGhab25lOihOU1pvbmUgKil6b25lCiAKIC0gKF9XS0ZyYW1lSGFuZGxl
ICopX2hhbmRsZQogewotICAgIHJldHVybiBbW3dyYXBwZXIoX25vZGUtPmhhbmRsZSgpKSByZXRh
aW5dIGF1dG9yZWxlYXNlXTsKKyAgICByZXR1cm4gcmV0YWluUHRyKHdyYXBwZXIoX25vZGUtPmhh
bmRsZSgpKSkuYXV0b3JlbGVhc2UoKTsKIH0KIAogLSAoX1dLRnJhbWVIYW5kbGUgKilfcGFyZW50
RnJhbWVIYW5kbGUKIHsKLSAgICByZXR1cm4gW1t3cmFwcGVyKF9ub2RlLT5wYXJlbnRGcmFtZUhh
bmRsZSgpKSByZXRhaW5dIGF1dG9yZWxlYXNlXTsKKyAgICByZXR1cm4gcmV0YWluUHRyKHdyYXBw
ZXIoX25vZGUtPnBhcmVudEZyYW1lSGFuZGxlKCkpKS5hdXRvcmVsZWFzZSgpOwogfQogCiAtIChB
UEk6Ok9iamVjdCYpX2FwaU9iamVjdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL19XS0luc3BlY3Rvci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9fV0tJbnNwZWN0b3IubW0KaW5kZXggNmJlYjQ1ZTg0NjU5ODFmOWUwOTI0NzJlYTRi
MzE3ODY2NzI2YmUxMS4uMjZjYThmNzgxNjNlNTQ4NjRhYThmOGU0ZmI4MjU1MjI5NTIzYzRhOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3Rv
ci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9y
Lm1tCkBAIC0xODgsNyArMTg4LDcgQEAgLSAodm9pZClyZWdpc3RlckV4dGVuc2lvbldpdGhJRDoo
TlNTdHJpbmcgKilleHRlbnNpb25JRCBkaXNwbGF5TmFtZTooTlNTdHJpbmcgKikKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIGNhcHR1cmVkQmxvY2sobmlsLCBbW3dy
YXBwZXIoQVBJOjpJbnNwZWN0b3JFeHRlbnNpb246OmNyZWF0ZShwcm90ZWN0ZWRFeHRlbnNpb25J
RC5nZXQoKSwgcHJvdGVjdGVkU2VsZi0+X2luc3BlY3Rvci0+ZXh0ZW5zaW9uQ29udHJvbGxlcigp
KSkgcmV0YWluXSBhdXRvcmVsZWFzZV0pOworICAgICAgICBjYXB0dXJlZEJsb2NrKG5pbCwgcmV0
YWluUHRyKHdyYXBwZXIoQVBJOjpJbnNwZWN0b3JFeHRlbnNpb246OmNyZWF0ZShwcm90ZWN0ZWRF
eHRlbnNpb25JRC5nZXQoKSwgcHJvdGVjdGVkU2VsZi0+X2luc3BlY3Rvci0+ZXh0ZW5zaW9uQ29u
dHJvbGxlcigpKSkpLmF1dG9yZWxlYXNlKCkpOwogICAgIH0pOwogI2Vsc2UKICAgICBjb21wbGV0
aW9uSGFuZGxlcihbTlNFcnJvciBlcnJvcldpdGhEb21haW46V0tFcnJvckRvbWFpbiBjb2RlOldL
RXJyb3JVbmtub3duIHVzZXJJbmZvOm5pbF0sIG5pbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLm1tIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1Byb2Nlc3NQb29sQ29uZmlndXJh
dGlvbi5tbQppbmRleCBiNGMzNWU4ODU0YzYxMDU1NjU1YWVmZjJiZmI5MDljZGM1NDI4MzljLi40
NTVkNWE5MjM0ZDU5OTI3N2M2Mjg4MjA5ZWRhMmM3NmMwNmYxNzdiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9u
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tQcm9jZXNzUG9v
bENvbmZpZ3VyYXRpb24ubW0KQEAgLTY5LDExICs2OSwxMSBAQCAtIChOU1NldDxDbGFzcz4gKilj
dXN0b21DbGFzc2VzRm9yUGFyYW1ldGVyQ29kZXIKICAgICBpZiAoY2xhc3Nlcy5pc0VtcHR5KCkp
CiAgICAgICAgIHJldHVybiBbTlNTZXQgc2V0XTsKIAotICAgIE5TTXV0YWJsZVNldCAqcmVzdWx0
ID0gW1tOU011dGFibGVTZXQgYWxsb2NdIGluaXRXaXRoQ2FwYWNpdHk6Y2xhc3Nlcy5zaXplKCld
OworICAgIGF1dG8gcmVzdWx0ID0gYWRvcHROUyhbW05TTXV0YWJsZVNldCBhbGxvY10gaW5pdFdp
dGhDYXBhY2l0eTpjbGFzc2VzLnNpemUoKV0pOwogICAgIGZvciAoY29uc3QgYXV0byYgdmFsdWUg
OiBjbGFzc2VzKQogICAgICAgICBbcmVzdWx0IGFkZE9iamVjdDogb2JqY19sb29rVXBDbGFzcyh2
YWx1ZS51dGY4KCkuZGF0YSgpKV07CiAKLSAgICByZXR1cm4gW3Jlc3VsdCBhdXRvcmVsZWFzZV07
CisgICAgcmV0dXJuIHJlc3VsdC5hdXRvcmVsZWFzZSgpOwogfQogCiAtICh2b2lkKXNldEN1c3Rv
bUNsYXNzZXNGb3JQYXJhbWV0ZXJDb2RlcjooTlNTZXQ8Q2xhc3M+ICopY2xhc3Nlc0ZvckNvZGVy
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUmVtb3Rl
V2ViSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvX1dLUmVtb3RlV2ViSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIubW0KaW5kZXggOTFj
NGUzY2FjODFlZDFiNzkwMzQyMWQ2YmU2NDk1NzBlOGQ0NzAwNC4uOWYzMTljZmNkNWQzNTI1Y2U2
MWRhNDJkYTBkMjZhM2U1NjI0NjZiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL19XS1JlbW90ZVdlYkluc3BlY3RvclZpZXdDb250cm9sbGVyLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tSZW1vdGVXZWJJbnNwZWN0b3JW
aWV3Q29udHJvbGxlci5tbQpAQCAtMTY4LDcgKzE2OCw3IEBAIC0gKHZvaWQpcmVnaXN0ZXJFeHRl
bnNpb25XaXRoSUQ6KE5TU3RyaW5nICopZXh0ZW5zaW9uSUQgZGlzcGxheU5hbWU6KE5TU3RyaW5n
ICopCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBjYXB0dXJlZEJs
b2NrKG5pbCwgW1t3cmFwcGVyKEFQSTo6SW5zcGVjdG9yRXh0ZW5zaW9uOjpjcmVhdGUocHJvdGVj
dGVkRXh0ZW5zaW9uSUQuZ2V0KCksIHByb3RlY3RlZFNlbGYtPm1fcmVtb3RlSW5zcGVjdG9yUHJv
eHktPmV4dGVuc2lvbkNvbnRyb2xsZXIoKSkpIHJldGFpbl0gYXV0b3JlbGVhc2VdKTsKKyAgICAg
ICAgY2FwdHVyZWRCbG9jayhuaWwsIHJldGFpblB0cih3cmFwcGVyKEFQSTo6SW5zcGVjdG9yRXh0
ZW5zaW9uOjpjcmVhdGUocHJvdGVjdGVkRXh0ZW5zaW9uSUQuZ2V0KCksIHByb3RlY3RlZFNlbGYt
Pm1fcmVtb3RlSW5zcGVjdG9yUHJveHktPmV4dGVuc2lvbkNvbnRyb2xsZXIoKSkpKS5hdXRvcmVs
ZWFzZSgpKTsKICAgICB9KTsKICNlbHNlCiAgICAgY29tcGxldGlvbkhhbmRsZXIoW05TRXJyb3Ig
ZXJyb3JXaXRoRG9tYWluOldLRXJyb3JEb21haW4gY29kZTpXS0Vycm9yVW5rbm93biB1c2VySW5m
bzpuaWxdLCBuaWwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL19XS1RleHRNYW5pcHVsYXRpb25Ub2tlbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tUZXh0TWFuaXB1bGF0aW9uVG9rZW4ubW0KaW5kZXggYzhmZDIyYTdiNTIz
ZmVhMzljYWZjMWUwZWFiN2Q5MTllMGRmZWRjNS4uODE5ZmUxYjllOWM2MDVlNDc3NzliZGI5MTY5
ZWVkNzQwYjgzYzk4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL19XS1RleHRNYW5pcHVsYXRpb25Ub2tlbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvX1dLVGV4dE1hbmlwdWxhdGlvblRva2VuLm1tCkBAIC0xMTIsNyArMTEy
LDcgQEAgLSAoTlNTdHJpbmcgKilfZGVzY3JpcHRpb25QcmVzZXJ2aW5nUHJpdmFjeTooQk9PTClw
cmVzZXJ2ZVByaXZhY3kKIAogICAgIFtkZXNjcmlwdGlvbiBhcHBlbmRTdHJpbmc6QCI+Il07CiAK
LSAgICByZXR1cm4gW1tkZXNjcmlwdGlvbiBjb3B5XSBhdXRvcmVsZWFzZV07CisgICAgcmV0dXJu
IGFkb3B0TlMoW2Rlc2NyaXB0aW9uIGNvcHldKS5hdXRvcmVsZWFzZSgpOwogfQogCiBAZW5kCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVXNlckNvbnRl
bnRFeHRlbnNpb25TdG9yZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9f
V0tVc2VyQ29udGVudEV4dGVuc2lvblN0b3JlLm1tCmluZGV4IDg0NDkyYTU2NjEzYjFhNjFmYmI5
NTFiMWMwODA1YmUzNjY2YjJkNWMuLjJlZThkN2EwNjEwNzlmNjk3NTYwNDJlM2E1MTg4OWMyOTBh
YzcwNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tV
c2VyQ29udGVudEV4dGVuc2lvblN0b3JlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tVc2VyQ29udGVudEV4dGVuc2lvblN0b3JlLm1tCkBAIC02MCwyNyArNjAs
MjcgQEAgQGltcGxlbWVudGF0aW9uIF9XS1VzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmUKIAogKyAo
aW5zdGFuY2V0eXBlKWRlZmF1bHRTdG9yZQogewotICAgIHJldHVybiBbW1tfV0tVc2VyQ29udGVu
dEV4dGVuc2lvblN0b3JlIGFsbG9jXSBfaW5pdFdpdGhXS0NvbnRlbnRSdWxlTGlzdFN0b3JlOltX
S0NvbnRlbnRSdWxlTGlzdFN0b3JlIGRlZmF1bHRTdG9yZVdpdGhMZWdhY3lGaWxlbmFtZV1dIGF1
dG9yZWxlYXNlXTsKKyAgICByZXR1cm4gYWRvcHROUyhbW19XS1VzZXJDb250ZW50RXh0ZW5zaW9u
U3RvcmUgYWxsb2NdIF9pbml0V2l0aFdLQ29udGVudFJ1bGVMaXN0U3RvcmU6W1dLQ29udGVudFJ1
bGVMaXN0U3RvcmUgZGVmYXVsdFN0b3JlV2l0aExlZ2FjeUZpbGVuYW1lXV0pLmF1dG9yZWxlYXNl
KCk7CiB9CiAKICsgKGluc3RhbmNldHlwZSlzdG9yZVdpdGhVUkw6KE5TVVJMICopdXJsCiB7Ci0g
ICAgcmV0dXJuIFtbW19XS1VzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmUgYWxsb2NdIF9pbml0V2l0
aFdLQ29udGVudFJ1bGVMaXN0U3RvcmU6W1dLQ29udGVudFJ1bGVMaXN0U3RvcmUgc3RvcmVXaXRo
VVJMQW5kTGVnYWN5RmlsZW5hbWU6dXJsXV0gYXV0b3JlbGVhc2VdOworICAgIHJldHVybiBhZG9w
dE5TKFtbX1dLVXNlckNvbnRlbnRFeHRlbnNpb25TdG9yZSBhbGxvY10gX2luaXRXaXRoV0tDb250
ZW50UnVsZUxpc3RTdG9yZTpbV0tDb250ZW50UnVsZUxpc3RTdG9yZSBzdG9yZVdpdGhVUkxBbmRM
ZWdhY3lGaWxlbmFtZTp1cmxdXSkuYXV0b3JlbGVhc2UoKTsKIH0KIAogLSAodm9pZCljb21waWxl
Q29udGVudEV4dGVuc2lvbkZvcklkZW50aWZpZXI6KE5TU3RyaW5nICopaWRlbnRpZmllciBlbmNv
ZGVkQ29udGVudEV4dGVuc2lvbjooTlNTdHJpbmcgKillbmNvZGVkQ29udGVudFJ1bGVMaXN0IGNv
bXBsZXRpb25IYW5kbGVyOih2b2lkICheKShfV0tVc2VyQ29udGVudEZpbHRlciAqLCBOU0Vycm9y
ICopKWNvbXBsZXRpb25IYW5kbGVyCiB7CiAgICAgW19jb250ZW50UnVsZUxpc3RTdG9yZSBfY29t
cGlsZUNvbnRlbnRSdWxlTGlzdEZvcklkZW50aWZpZXI6aWRlbnRpZmllciBlbmNvZGVkQ29udGVu
dFJ1bGVMaXN0OmVuY29kZWRDb250ZW50UnVsZUxpc3QgY29tcGxldGlvbkhhbmRsZXI6XihXS0Nv
bnRlbnRSdWxlTGlzdCAqY29udGVudFJ1bGVMaXN0LCBOU0Vycm9yICplcnJvcikgewotICAgICAg
ICBfV0tVc2VyQ29udGVudEZpbHRlciAqY29udGVudEZpbHRlciA9IGNvbnRlbnRSdWxlTGlzdCA/
IFtbW19XS1VzZXJDb250ZW50RmlsdGVyIGFsbG9jXSBfaW5pdFdpdGhXS0NvbnRlbnRSdWxlTGlz
dDpjb250ZW50UnVsZUxpc3RdIGF1dG9yZWxlYXNlXSA6IG5pbDsKLSAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoY29udGVudEZpbHRlciwgdG9Vc2VyQ29udGVudFJ1bGVMaXN0U3RvcmVFcnJvcihl
cnJvcikpOworICAgICAgICBhdXRvIGNvbnRlbnRGaWx0ZXIgPSBjb250ZW50UnVsZUxpc3QgPyBh
ZG9wdE5TKFtbX1dLVXNlckNvbnRlbnRGaWx0ZXIgYWxsb2NdIF9pbml0V2l0aFdLQ29udGVudFJ1
bGVMaXN0OmNvbnRlbnRSdWxlTGlzdF0pIDogbmlsOworICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihjb250ZW50RmlsdGVyLmF1dG9yZWxlYXNlKCksIHRvVXNlckNvbnRlbnRSdWxlTGlzdFN0b3Jl
RXJyb3IoZXJyb3IpKTsKICAgICB9XTsKIH0KIAogLSAodm9pZClsb29rdXBDb250ZW50RXh0ZW5z
aW9uRm9ySWRlbnRpZmllcjooTlNTdHJpbmcgKilpZGVudGlmaWVyIGNvbXBsZXRpb25IYW5kbGVy
Oih2b2lkICheKShfV0tVc2VyQ29udGVudEZpbHRlciAqLCBOU0Vycm9yICopKWNvbXBsZXRpb25I
YW5kbGVyCiB7CiAgICAgW19jb250ZW50UnVsZUxpc3RTdG9yZSBsb29rVXBDb250ZW50UnVsZUxp
c3RGb3JJZGVudGlmaWVyOmlkZW50aWZpZXIgY29tcGxldGlvbkhhbmRsZXI6XihXS0NvbnRlbnRS
dWxlTGlzdCAqY29udGVudFJ1bGVMaXN0LCBOU0Vycm9yICplcnJvcikgewotICAgICAgICBfV0tV
c2VyQ29udGVudEZpbHRlciAqY29udGVudEZpbHRlciA9IGNvbnRlbnRSdWxlTGlzdCA/IFtbW19X
S1VzZXJDb250ZW50RmlsdGVyIGFsbG9jXSBfaW5pdFdpdGhXS0NvbnRlbnRSdWxlTGlzdDpjb250
ZW50UnVsZUxpc3RdIGF1dG9yZWxlYXNlXSA6IG5pbDsKLSAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoY29udGVudEZpbHRlciwgdG9Vc2VyQ29udGVudFJ1bGVMaXN0U3RvcmVFcnJvcihlcnJvcikp
OworICAgICAgICBhdXRvIGNvbnRlbnRGaWx0ZXIgPSBjb250ZW50UnVsZUxpc3QgPyBhZG9wdE5T
KFtbX1dLVXNlckNvbnRlbnRGaWx0ZXIgYWxsb2NdIF9pbml0V2l0aFdLQ29udGVudFJ1bGVMaXN0
OmNvbnRlbnRSdWxlTGlzdF0pIDogbmlsOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihjb250
ZW50RmlsdGVyLmF1dG9yZWxlYXNlKCksIHRvVXNlckNvbnRlbnRSdWxlTGlzdFN0b3JlRXJyb3Io
ZXJyb3IpKTsKICAgICB9XTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL19XS1VzZXJDb250ZW50V29ybGQubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvX1dLVXNlckNvbnRlbnRXb3JsZC5tbQppbmRleCBkZjE1OGYwZDIzOTM0
ZTA3ZmIyOTFlNjZiMzE2MzBhOTU5NzBjNzQ2Li45MGYxYjc5NjQ2Yzg1M2FmOGY1ZWYyMzgzODk3
NDA1NDIwOWIzYWE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvX1dLVXNlckNvbnRlbnRXb3JsZC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvX1dLVXNlckNvbnRlbnRXb3JsZC5tbQpAQCAtNjAsMTIgKzYwLDEyIEBAIC0gKGlu
c3RhbmNldHlwZSlfaW5pdFdpdGhDb250ZW50V29ybGQ6KFdLQ29udGVudFdvcmxkICopd29ybGQK
IAogKyAoX1dLVXNlckNvbnRlbnRXb3JsZCAqKXdvcmxkV2l0aE5hbWU6KE5TU3RyaW5nICopbmFt
ZQogewotICAgIHJldHVybiBbW1tfV0tVc2VyQ29udGVudFdvcmxkIGFsbG9jXSBfaW5pdFdpdGhO
YW1lOm5hbWVdIGF1dG9yZWxlYXNlXTsKKyAgICByZXR1cm4gYWRvcHROUyhbW19XS1VzZXJDb250
ZW50V29ybGQgYWxsb2NdIF9pbml0V2l0aE5hbWU6bmFtZV0pLmF1dG9yZWxlYXNlKCk7CiB9CiAK
ICsgKF9XS1VzZXJDb250ZW50V29ybGQgKilub3JtYWxXb3JsZAogewotICAgIHJldHVybiBbW1tf
V0tVc2VyQ29udGVudFdvcmxkIGFsbG9jXSBfaW5pdF0gYXV0b3JlbGVhc2VdOworICAgIHJldHVy
biBhZG9wdE5TKFtbX1dLVXNlckNvbnRlbnRXb3JsZCBhbGxvY10gX2luaXRdKS5hdXRvcmVsZWFz
ZSgpOwogfQogCiAtIChOU1N0cmluZyAqKW5hbWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3SU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2lvcy9XS1dlYlZpZXdJT1MubW0KaW5kZXggMGY2OTRiYThkY2Y2ZWZmMjVjMGQ3ZjY1
ZjM3ZmM0M2M3OTVlNzM4Yy4uNTlkNDQ2MjZlYTQ1ZDhlODQ5Y2YxNTNiNTVmOGEyYjIzMzJjNzdj
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdJ
T1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdJT1Mu
bW0KQEAgLTI1NTEsNyArMjU1MSw3IEBAIC0gKFVJRXZlbnRBdHRyaWJ1dGlvbiAqKV91aUV2ZW50
QXR0cmlidXRpb24KICAgICAgICAgcmV0dXJuIG5pbDsKIAogICAgIGF1dG8gYXR0cmlidXRlT25V
UkwgPSBVUkwoVVJMKCksIG1ha2VTdHJpbmcoImh0dHBzOi8vIiwgbWVhc3VyZW1lbnQtPmF0dHJp
YnV0ZU9uU2l0ZSgpLnJlZ2lzdHJhYmxlRG9tYWluLnN0cmluZygpKSk7Ci0gICAgcmV0dXJuIFtb
W1VJRXZlbnRBdHRyaWJ1dGlvbiBhbGxvY10gaW5pdFdpdGhTb3VyY2VJZGVudGlmaWVyOm1lYXN1
cmVtZW50LT5zb3VyY2VJRCgpLmlkIGRlc3RpbmF0aW9uVVJMOmF0dHJpYnV0ZU9uVVJMIHNvdXJj
ZURlc2NyaXB0aW9uOm1lYXN1cmVtZW50LT5zb3VyY2VEZXNjcmlwdGlvbigpIHB1cmNoYXNlcjpt
ZWFzdXJlbWVudC0+cHVyY2hhc2VyKCldIGF1dG9yZWxlYXNlXTsKKyAgICByZXR1cm4gYWRvcHRO
UyhbW1VJRXZlbnRBdHRyaWJ1dGlvbiBhbGxvY10gaW5pdFdpdGhTb3VyY2VJZGVudGlmaWVyOm1l
YXN1cmVtZW50LT5zb3VyY2VJRCgpLmlkIGRlc3RpbmF0aW9uVVJMOmF0dHJpYnV0ZU9uVVJMIHNv
dXJjZURlc2NyaXB0aW9uOm1lYXN1cmVtZW50LT5zb3VyY2VEZXNjcmlwdGlvbigpIHB1cmNoYXNl
cjptZWFzdXJlbWVudC0+cHVyY2hhc2VyKCldKS5hdXRvcmVsZWFzZSgpOwogI2Vsc2UKICAgICBy
ZXR1cm4gbmlsOwogI2VuZGlmCkBAIC0zMTU5LDkgKzMxNTksOSBAQCAtICh2b2lkICheKSh2b2lk
KSlfcmV0YWluQWN0aXZlRm9jdXNlZFN0YXRlCiAgICAgKytfYWN0aXZlRm9jdXNlZFN0YXRlUmV0
YWluQ291bnQ7CiAKICAgICAvLyBGSVhNRTogVXNlIHNvbWV0aGluZyBsaWtlIENvbXBsZXRpb25I
YW5kbGVyQ2FsbENoZWNrZXIgdG8gZW5zdXJlIHRoYXQgdGhlIHJldHVybmVkIGJsb2NrIGlzIGNh
bGxlZCBiZWZvcmUgaXQncyByZWxlYXNlZC4KLSAgICByZXR1cm4gW1tbc2VsZl0geworICAgIHJl
dHVybiBhZG9wdE5TKFtbc2VsZl0gewogICAgICAgICAtLV9hY3RpdmVGb2N1c2VkU3RhdGVSZXRh
aW5Db3VudDsKLSAgICB9IGNvcHldIGF1dG9yZWxlYXNlXTsKKyAgICB9IGNvcHldKS5hdXRvcmVs
ZWFzZSgpOwogfQogCiAtICh2b2lkKV9iZWNvbWVGaXJzdFJlc3BvbmRlcldpdGhTZWxlY3Rpb25N
b3ZpbmdGb3J3YXJkOihCT09MKXNlbGVjdGluZ0ZvcndhcmQgY29tcGxldGlvbkhhbmRsZXI6KHZv
aWQgKF4pKEJPT0wgZGlkQmVjb21lRmlyc3RSZXNwb25kZXIpKWNvbXBsZXRpb25IYW5kbGVyCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL2lvcy9XZWJBdXRv
bWF0aW9uU2Vzc2lvbklPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24v
aW9zL1dlYkF1dG9tYXRpb25TZXNzaW9uSU9TLm1tCmluZGV4IDcyMjhhZmZhZGJjYWEyNWJmMzVk
YzQxOGEwMTY4ZDY5ODA4MGQ1NDguLmI4ZjFjZGRiNDlkYjJhZjdhMjhhNjkzZDMwZjlmOGE1ZWIy
ODI5MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vaW9z
L1dlYkF1dG9tYXRpb25TZXNzaW9uSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0F1dG9tYXRpb24vaW9zL1dlYkF1dG9tYXRpb25TZXNzaW9uSU9TLm1tCkBAIC0xMzIsMTkgKzEz
MiwxOSBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpwbGF0Zm9ybVNpbXVsYXRlS2V5Ym9h
cmRJbnRlcmFjdGlvbihXZWJQYWdlUHJveHkmIHBhZwogICAgIGNhc2UgS2V5Ym9hcmRJbnRlcmFj
dGlvbjo6S2V5UHJlc3M6IHsKICAgICAgICAgbV9jdXJyZW50TW9kaWZpZXJzIHw9IGNoYW5nZWRN
b2RpZmllcnM7CiAKLSAgICAgICAgW2V2ZW50c1RvQmVTZW50IGFkZE9iamVjdDpbW1s6OldlYkV2
ZW50IGFsbG9jXSBpbml0V2l0aEtleUV2ZW50VHlwZTpXZWJFdmVudEtleURvd24gdGltZVN0YW1w
OkNGQWJzb2x1dGVUaW1lR2V0Q3VycmVudCgpIGNoYXJhY3RlcnM6Y2hhcmFjdGVycyBjaGFyYWN0
ZXJzSWdub3JpbmdNb2RpZmllcnM6dW5tb2RpZmllZENoYXJhY3RlcnMgbW9kaWZpZXJzOm1fY3Vy
cmVudE1vZGlmaWVycyBpc1JlcGVhdGluZzpOTyB3aXRoRmxhZ3M6aW5wdXRGbGFncyB3aXRoSW5w
dXRNYW5hZ2VySGludDpuaWwga2V5Q29kZTprZXlDb2RlIGlzVGFiS2V5OmlzVGFiS2V5XSBhdXRv
cmVsZWFzZV1dOworICAgICAgICBbZXZlbnRzVG9CZVNlbnQgYWRkT2JqZWN0OmFkb3B0TlMoW1s6
OldlYkV2ZW50IGFsbG9jXSBpbml0V2l0aEtleUV2ZW50VHlwZTpXZWJFdmVudEtleURvd24gdGlt
ZVN0YW1wOkNGQWJzb2x1dGVUaW1lR2V0Q3VycmVudCgpIGNoYXJhY3RlcnM6Y2hhcmFjdGVycyBj
aGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnM6dW5tb2RpZmllZENoYXJhY3RlcnMgbW9kaWZpZXJz
Om1fY3VycmVudE1vZGlmaWVycyBpc1JlcGVhdGluZzpOTyB3aXRoRmxhZ3M6aW5wdXRGbGFncyB3
aXRoSW5wdXRNYW5hZ2VySGludDpuaWwga2V5Q29kZTprZXlDb2RlIGlzVGFiS2V5OmlzVGFiS2V5
XSkuYXV0b3JlbGVhc2UoKV07CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIEtleWJv
YXJkSW50ZXJhY3Rpb246OktleVJlbGVhc2U6IHsKICAgICAgICAgbV9jdXJyZW50TW9kaWZpZXJz
ICY9IH5jaGFuZ2VkTW9kaWZpZXJzOwogCi0gICAgICAgIFtldmVudHNUb0JlU2VudCBhZGRPYmpl
Y3Q6W1tbOjpXZWJFdmVudCBhbGxvY10gaW5pdFdpdGhLZXlFdmVudFR5cGU6V2ViRXZlbnRLZXlV
cCB0aW1lU3RhbXA6Q0ZBYnNvbHV0ZVRpbWVHZXRDdXJyZW50KCkgY2hhcmFjdGVyczpjaGFyYWN0
ZXJzIGNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVyczp1bm1vZGlmaWVkQ2hhcmFjdGVycyBtb2Rp
ZmllcnM6bV9jdXJyZW50TW9kaWZpZXJzIGlzUmVwZWF0aW5nOk5PIHdpdGhGbGFnczppbnB1dEZs
YWdzIHdpdGhJbnB1dE1hbmFnZXJIaW50Om5pbCBrZXlDb2RlOmtleUNvZGUgaXNUYWJLZXk6aXNU
YWJLZXldIGF1dG9yZWxlYXNlXV07CisgICAgICAgIFtldmVudHNUb0JlU2VudCBhZGRPYmplY3Q6
YWRvcHROUyhbWzo6V2ViRXZlbnQgYWxsb2NdIGluaXRXaXRoS2V5RXZlbnRUeXBlOldlYkV2ZW50
S2V5VXAgdGltZVN0YW1wOkNGQWJzb2x1dGVUaW1lR2V0Q3VycmVudCgpIGNoYXJhY3RlcnM6Y2hh
cmFjdGVycyBjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnM6dW5tb2RpZmllZENoYXJhY3RlcnMg
bW9kaWZpZXJzOm1fY3VycmVudE1vZGlmaWVycyBpc1JlcGVhdGluZzpOTyB3aXRoRmxhZ3M6aW5w
dXRGbGFncyB3aXRoSW5wdXRNYW5hZ2VySGludDpuaWwga2V5Q29kZTprZXlDb2RlIGlzVGFiS2V5
OmlzVGFiS2V5XSkuYXV0b3JlbGVhc2UoKV07CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBj
YXNlIEtleWJvYXJkSW50ZXJhY3Rpb246Okluc2VydEJ5S2V5OiB7CiAgICAgICAgIC8vIE1vZGlm
aWVycyBvbmx5IGNoYW5nZSB3aXRoIEtleVByZXNzIG9yIEtleVJlbGVhc2UsIHRoaXMgY29kZSBw
YXRoIGlzIGZvciBzaW5nbGUgY2hhcmFjdGVycy4KLSAgICAgICAgW2V2ZW50c1RvQmVTZW50IGFk
ZE9iamVjdDpbW1s6OldlYkV2ZW50IGFsbG9jXSBpbml0V2l0aEtleUV2ZW50VHlwZTpXZWJFdmVu
dEtleURvd24gdGltZVN0YW1wOkNGQWJzb2x1dGVUaW1lR2V0Q3VycmVudCgpIGNoYXJhY3RlcnM6
Y2hhcmFjdGVycyBjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnM6dW5tb2RpZmllZENoYXJhY3Rl
cnMgbW9kaWZpZXJzOm1fY3VycmVudE1vZGlmaWVycyBpc1JlcGVhdGluZzpOTyB3aXRoRmxhZ3M6
aW5wdXRGbGFncyB3aXRoSW5wdXRNYW5hZ2VySGludDpuaWwga2V5Q29kZTprZXlDb2RlIGlzVGFi
S2V5OmlzVGFiS2V5XSBhdXRvcmVsZWFzZV1dOwotICAgICAgICBbZXZlbnRzVG9CZVNlbnQgYWRk
T2JqZWN0OltbWzo6V2ViRXZlbnQgYWxsb2NdIGluaXRXaXRoS2V5RXZlbnRUeXBlOldlYkV2ZW50
S2V5VXAgdGltZVN0YW1wOkNGQWJzb2x1dGVUaW1lR2V0Q3VycmVudCgpIGNoYXJhY3RlcnM6Y2hh
cmFjdGVycyBjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnM6dW5tb2RpZmllZENoYXJhY3RlcnMg
bW9kaWZpZXJzOm1fY3VycmVudE1vZGlmaWVycyBpc1JlcGVhdGluZzpOTyB3aXRoRmxhZ3M6aW5w
dXRGbGFncyB3aXRoSW5wdXRNYW5hZ2VySGludDpuaWwga2V5Q29kZTprZXlDb2RlIGlzVGFiS2V5
OmlzVGFiS2V5XSBhdXRvcmVsZWFzZV1dOworICAgICAgICBbZXZlbnRzVG9CZVNlbnQgYWRkT2Jq
ZWN0OmFkb3B0TlMoW1s6OldlYkV2ZW50IGFsbG9jXSBpbml0V2l0aEtleUV2ZW50VHlwZTpXZWJF
dmVudEtleURvd24gdGltZVN0YW1wOkNGQWJzb2x1dGVUaW1lR2V0Q3VycmVudCgpIGNoYXJhY3Rl
cnM6Y2hhcmFjdGVycyBjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnM6dW5tb2RpZmllZENoYXJh
Y3RlcnMgbW9kaWZpZXJzOm1fY3VycmVudE1vZGlmaWVycyBpc1JlcGVhdGluZzpOTyB3aXRoRmxh
Z3M6aW5wdXRGbGFncyB3aXRoSW5wdXRNYW5hZ2VySGludDpuaWwga2V5Q29kZTprZXlDb2RlIGlz
VGFiS2V5OmlzVGFiS2V5XSkuYXV0b3JlbGVhc2UoKV07CisgICAgICAgIFtldmVudHNUb0JlU2Vu
dCBhZGRPYmplY3Q6YWRvcHROUyhbWzo6V2ViRXZlbnQgYWxsb2NdIGluaXRXaXRoS2V5RXZlbnRU
eXBlOldlYkV2ZW50S2V5VXAgdGltZVN0YW1wOkNGQWJzb2x1dGVUaW1lR2V0Q3VycmVudCgpIGNo
YXJhY3RlcnM6Y2hhcmFjdGVycyBjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnM6dW5tb2RpZmll
ZENoYXJhY3RlcnMgbW9kaWZpZXJzOm1fY3VycmVudE1vZGlmaWVycyBpc1JlcGVhdGluZzpOTyB3
aXRoRmxhZ3M6aW5wdXRGbGFncyB3aXRoSW5wdXRNYW5hZ2VySGludDpuaWwga2V5Q29kZTprZXlD
b2RlIGlzVGFiS2V5OmlzVGFiS2V5XSkuYXV0b3JlbGVhc2UoKV07CiAgICAgICAgIGJyZWFrOwog
ICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9B
dXRvbWF0aW9uQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvQXV0b21h
dGlvbkNsaWVudC5tbQppbmRleCA0ZTlhNzZiZDQyMTgwN2Y4NGI1ZjM3ZDRkY2RkNGMyZTJiZDdl
M2JkLi4wMmRhZGNjNGM4MTNhZDgyYzcxOGYxNmE1ODM2MTZlMDNlMzVhMTk1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9BdXRvbWF0aW9uQ2xpZW50Lm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0F1dG9tYXRpb25DbGllbnQubW0KQEAgLTc3
LDE3ICs3NywxNyBAQCBib29sIEF1dG9tYXRpb25DbGllbnQ6OnJlbW90ZUF1dG9tYXRpb25BbGxv
d2VkKCkgY29uc3QKIAogdm9pZCBBdXRvbWF0aW9uQ2xpZW50OjpyZXF1ZXN0QXV0b21hdGlvblNl
c3Npb24oY29uc3QgU3RyaW5nJiBzZXNzaW9uSWRlbnRpZmllciwgY29uc3QgUmVtb3RlSW5zcGVj
dG9yOjpDbGllbnQ6OlNlc3Npb25DYXBhYmlsaXRpZXMmIHNlc3Npb25DYXBhYmlsaXRpZXMpCiB7
Ci0gICAgX1dLQXV0b21hdGlvblNlc3Npb25Db25maWd1cmF0aW9uICpjb25maWd1cmF0aW9uID0g
W1tbX1dLQXV0b21hdGlvblNlc3Npb25Db25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSBhdXRvcmVs
ZWFzZV07CisgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW19XS0F1dG9tYXRpb25T
ZXNzaW9uQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwogICAgIGlmIChzZXNzaW9uQ2FwYWJp
bGl0aWVzLmFsbG93SW5zZWN1cmVNZWRpYUNhcHR1cmUpCi0gICAgICAgIGNvbmZpZ3VyYXRpb24u
YWxsb3dzSW5zZWN1cmVNZWRpYUNhcHR1cmUgPSBzZXNzaW9uQ2FwYWJpbGl0aWVzLmFsbG93SW5z
ZWN1cmVNZWRpYUNhcHR1cmUudmFsdWUoKTsKKyAgICAgICAgW2NvbmZpZ3VyYXRpb24gc2V0QWxs
b3dzSW5zZWN1cmVNZWRpYUNhcHR1cmU6c2Vzc2lvbkNhcGFiaWxpdGllcy5hbGxvd0luc2VjdXJl
TWVkaWFDYXB0dXJlLnZhbHVlKCldOwogICAgIGlmIChzZXNzaW9uQ2FwYWJpbGl0aWVzLnN1cHBy
ZXNzSUNFQ2FuZGlkYXRlRmlsdGVyaW5nKQotICAgICAgICBjb25maWd1cmF0aW9uLnN1cHByZXNz
ZXNJQ0VDYW5kaWRhdGVGaWx0ZXJpbmcgPSBzZXNzaW9uQ2FwYWJpbGl0aWVzLnN1cHByZXNzSUNF
Q2FuZGlkYXRlRmlsdGVyaW5nLnZhbHVlKCk7CisgICAgICAgIFtjb25maWd1cmF0aW9uIHNldFN1
cHByZXNzZXNJQ0VDYW5kaWRhdGVGaWx0ZXJpbmc6c2Vzc2lvbkNhcGFiaWxpdGllcy5zdXBwcmVz
c0lDRUNhbmRpZGF0ZUZpbHRlcmluZy52YWx1ZSgpXTsKIAogICAgIC8vIEZvcmNlIGNsaWVudHMg
dG8gY3JlYXRlIGFuZCByZWdpc3RlciBhIHNlc3Npb24gYXN5bmNocm9ub3VzbHkuIE90aGVyd2lz
ZSwKICAgICAvLyBSZW1vdGVJbnNwZWN0b3Igd2lsbCB0cnkgdG8gYWNxdWlyZSBpdHMgbG9jayB0
byByZWdpc3RlciB0aGUgbmV3IHNlc3Npb24gYW5kCiAgICAgLy8gZGVhZGxvY2sgYmVjYXVzZSBp
dCdzIGFscmVhZHkgdGFrZW4gd2hpbGUgaGFuZGxpbmcgWFBDIG1lc3NhZ2VzLgogICAgIE5TU3Ry
aW5nICpyZXF1ZXN0ZWRTZXNzaW9uSWRlbnRpZmllciA9IHNlc3Npb25JZGVudGlmaWVyOwotICAg
IFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbdGhpcywgcmVxdWVzdGVkU2Vzc2lvbklkZW50aWZp
ZXIgPSByZXRhaW5QdHIocmVxdWVzdGVkU2Vzc2lvbklkZW50aWZpZXIpLCBjb25maWd1cmF0aW9u
ID0gcmV0YWluUHRyKGNvbmZpZ3VyYXRpb24pXSB7CisgICAgUnVuTG9vcDo6bWFpbigpLmRpc3Bh
dGNoKFt0aGlzLCByZXF1ZXN0ZWRTZXNzaW9uSWRlbnRpZmllciA9IHJldGFpblB0cihyZXF1ZXN0
ZWRTZXNzaW9uSWRlbnRpZmllciksIGNvbmZpZ3VyYXRpb24gPSBXVEZNb3ZlKGNvbmZpZ3VyYXRp
b24pXSB7CiAgICAgICAgIGlmIChtX2RlbGVnYXRlTWV0aG9kcy5yZXF1ZXN0QXV0b21hdGlvblNl
c3Npb24pCiAgICAgICAgICAgICBbbV9kZWxlZ2F0ZS5nZXQoKSBfcHJvY2Vzc1Bvb2w6bV9wcm9j
ZXNzUG9vbCBkaWRSZXF1ZXN0QXV0b21hdGlvblNlc3Npb25XaXRoSWRlbnRpZmllcjpyZXF1ZXN0
ZWRTZXNzaW9uSWRlbnRpZmllci5nZXQoKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0
KCldOwogICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
U2FmZUJyb3dzaW5nV2FybmluZ0NvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvU2FmZUJyb3dzaW5nV2FybmluZ0NvY29hLm1tCmluZGV4IDhhOTllYzRkMTc4ZGIwZWJiZjRh
M2ZjMGQ5YjZmMDNhODFiNTU3MjIuLmYxZWZhNDE3MGQ2MzczYjFlZjI3NjU1NjhkZjIxMzliOTYy
OGFiYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NhZmVCcm93
c2luZ1dhcm5pbmdDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9T
YWZlQnJvd3NpbmdXYXJuaW5nQ29jb2EubW0KQEAgLTczLDEyICs3MywxMiBAQCBzdGF0aWMgdm9p
ZCByZXBsYWNlKE5TTXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcgKnN0cmluZywgTlNTdHJpbmcgKnRv
UmVwbGFjZSwgTlNTdAogCiBzdGF0aWMgdm9pZCBhZGRMaW5rQW5kUmVwbGFjZShOU011dGFibGVB
dHRyaWJ1dGVkU3RyaW5nICpzdHJpbmcsIE5TU3RyaW5nICp0b1JlcGxhY2UsIE5TU3RyaW5nICpy
ZXBsYWNlV2l0aCwgTlNVUkwgKmxpbmtUYXJnZXQpCiB7Ci0gICAgTlNNdXRhYmxlQXR0cmlidXRl
ZFN0cmluZyAqc3RyaW5nV2l0aExpbmsgPSBbW1tOU011dGFibGVBdHRyaWJ1dGVkU3RyaW5nIGFs
bG9jXSBpbml0V2l0aFN0cmluZzpyZXBsYWNlV2l0aF0gYXV0b3JlbGVhc2VdOworICAgIGF1dG8g
c3RyaW5nV2l0aExpbmsgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXR0cmlidXRlZFN0cmluZyBhbGxv
Y10gaW5pdFdpdGhTdHJpbmc6cmVwbGFjZVdpdGhdKTsKICAgICBbc3RyaW5nV2l0aExpbmsgYWRk
QXR0cmlidXRlczpAewogICAgICAgICBOU0xpbmtBdHRyaWJ1dGVOYW1lOiBsaW5rVGFyZ2V0LAog
ICAgICAgICBOU1VuZGVybGluZVN0eWxlQXR0cmlidXRlTmFtZTogQDEKICAgICB9IHJhbmdlOk5T
TWFrZVJhbmdlKDAsIHJlcGxhY2VXaXRoLmxlbmd0aCldOwotICAgIFtzdHJpbmcgcmVwbGFjZUNo
YXJhY3RlcnNJblJhbmdlOltzdHJpbmcuc3RyaW5nIHJhbmdlT2ZTdHJpbmc6dG9SZXBsYWNlXSB3
aXRoQXR0cmlidXRlZFN0cmluZzpzdHJpbmdXaXRoTGlua107CisgICAgW3N0cmluZyByZXBsYWNl
Q2hhcmFjdGVyc0luUmFuZ2U6W3N0cmluZy5zdHJpbmcgcmFuZ2VPZlN0cmluZzp0b1JlcGxhY2Vd
IHdpdGhBdHRyaWJ1dGVkU3RyaW5nOnN0cmluZ1dpdGhMaW5rLmdldCgpXTsKIH0KIAogc3RhdGlj
IE5TVVJMICpyZXBvcnRBbkVycm9yVVJMKGNvbnN0IFVSTCYgdXJsLCBTU0JTZXJ2aWNlTG9va3Vw
UmVzdWx0ICpyZXN1bHQpCkBAIC0xMjEsMjYgKzEyMSwyNiBAQCBzdGF0aWMgTlNNdXRhYmxlQXR0
cmlidXRlZFN0cmluZyAqc2FmZUJyb3dzaW5nRGV0YWlsc1RleHQoY29uc3QgVVJMJiB1cmwsIFNT
QlNlcgogICAgICAgICBOU1N0cmluZyAqcmVwb3J0QW5FcnJvciA9IFdFQl9VSV9OU1NUUklORyhA
InJlcG9ydCBhbiBlcnJvciIsICJBY3Rpb24gZnJvbSBzYWZlIGJyb3dzaW5nIHdhcm5pbmciKTsK
ICAgICAgICAgTlNTdHJpbmcgKnZpc2l0VW5zYWZlV2Vic2l0ZSA9IFdFQl9VSV9OU1NUUklORyhA
InZpc2l0IHRoaXMgdW5zYWZlIHdlYnNpdGUiLCAiQWN0aW9uIGZyb20gc2FmZSBicm93c2luZyB3
YXJuaW5nIik7CiAKLSAgICAgICAgTlNNdXRhYmxlQXR0cmlidXRlZFN0cmluZyAqYXR0cmlidXRl
ZFN0cmluZyA9IFtbW05TTXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoU3Ry
aW5nOltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJUAgJUBcblxuJUAiLCBwaGlzaGluZ0Rl
c2NyaXB0aW9uLCBsZWFybk1vcmUsIHBoaXNoaW5nQWN0aW9uc11dIGF1dG9yZWxlYXNlXTsKLSAg
ICAgICAgYWRkTGlua0FuZFJlcGxhY2UoYXR0cmlidXRlZFN0cmluZywgbGVhcm5Nb3JlLCBsZWFy
bk1vcmUsIGxlYXJuTW9yZVVSTChyZXN1bHQpKTsKLSAgICAgICAgYWRkTGlua0FuZFJlcGxhY2Uo
YXR0cmlidXRlZFN0cmluZywgQCIlcmVwb3J0LWFuLWVycm9yJSIsIHJlcG9ydEFuRXJyb3IsIHJl
cG9ydEFuRXJyb3JVUkwodXJsLCByZXN1bHQpKTsKLSAgICAgICAgYWRkTGlua0FuZFJlcGxhY2Uo
YXR0cmlidXRlZFN0cmluZywgQCIlYnlwYXNzLWxpbmslIiwgdmlzaXRVbnNhZmVXZWJzaXRlLCBT
YWZlQnJvd3NpbmdXYXJuaW5nOjp2aXNpdFVuc2FmZVdlYnNpdGVTZW50aW5lbCgpKTsKLSAgICAg
ICAgcmV0dXJuIGF0dHJpYnV0ZWRTdHJpbmc7CisgICAgICAgIGF1dG8gYXR0cmlidXRlZFN0cmlu
ZyA9IGFkb3B0TlMoW1tOU011dGFibGVBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFN0
cmluZzpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIiVAICVAXG5cbiVAIiwgcGhpc2hpbmdE
ZXNjcmlwdGlvbiwgbGVhcm5Nb3JlLCBwaGlzaGluZ0FjdGlvbnNdXSk7CisgICAgICAgIGFkZExp
bmtBbmRSZXBsYWNlKGF0dHJpYnV0ZWRTdHJpbmcuZ2V0KCksIGxlYXJuTW9yZSwgbGVhcm5Nb3Jl
LCBsZWFybk1vcmVVUkwocmVzdWx0KSk7CisgICAgICAgIGFkZExpbmtBbmRSZXBsYWNlKGF0dHJp
YnV0ZWRTdHJpbmcuZ2V0KCksIEAiJXJlcG9ydC1hbi1lcnJvciUiLCByZXBvcnRBbkVycm9yLCBy
ZXBvcnRBbkVycm9yVVJMKHVybCwgcmVzdWx0KSk7CisgICAgICAgIGFkZExpbmtBbmRSZXBsYWNl
KGF0dHJpYnV0ZWRTdHJpbmcuZ2V0KCksIEAiJWJ5cGFzcy1saW5rJSIsIHZpc2l0VW5zYWZlV2Vi
c2l0ZSwgU2FmZUJyb3dzaW5nV2FybmluZzo6dmlzaXRVbnNhZmVXZWJzaXRlU2VudGluZWwoKSk7
CisgICAgICAgIHJldHVybiBhdHRyaWJ1dGVkU3RyaW5nLmF1dG9yZWxlYXNlKCk7CiAgICAgfQog
CiAgICAgYXV0byBtYWx3YXJlT3JVbndhbnRlZFNvZnR3YXJlRGV0YWlscyA9IFsmXSAoTlNTdHJp
bmcgKmRlc2NyaXB0aW9uLCBOU1N0cmluZyAqc3RhdHVzU3RyaW5nVG9SZXBsYWNlLCBib29sIGNv
bmZpcm1NYWx3YXJlKSB7Ci0gICAgICAgIE5TTXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcgKm1hbHdh
cmVEZXNjcmlwdGlvbiA9IFtbW05TTXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRX
aXRoU3RyaW5nOmRlc2NyaXB0aW9uXSBhdXRvcmVsZWFzZV07Ci0gICAgICAgIHJlcGxhY2UobWFs
d2FyZURlc2NyaXB0aW9uLCBAIiVzYWZlQnJvd3NpbmdQcm92aWRlciUiLCBsb2NhbGl6ZWRQcm92
aWRlcihyZXN1bHQpKTsKKyAgICAgICAgYXV0byBtYWx3YXJlRGVzY3JpcHRpb24gPSBhZG9wdE5T
KFtbTlNNdXRhYmxlQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhTdHJpbmc6ZGVzY3Jp
cHRpb25dKTsKKyAgICAgICAgcmVwbGFjZShtYWx3YXJlRGVzY3JpcHRpb24uZ2V0KCksIEAiJXNh
ZmVCcm93c2luZ1Byb3ZpZGVyJSIsIGxvY2FsaXplZFByb3ZpZGVyKHJlc3VsdCkpOwogICAgICAg
ICBOU011dGFibGVBdHRyaWJ1dGVkU3RyaW5nICpzdGF0dXNMaW5rID0gW1tbTlNNdXRhYmxlQXR0
cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhTdHJpbmc6V0VCX1VJX05TU1RSSU5HKEAidGhl
IHN0YXR1cyBvZiDigJwlc2l0ZSXigJ0iLCAiUGFydCBvZiBtYWx3YXJlIGRlc2NyaXB0aW9uIild
IGF1dG9yZWxlYXNlXTsKICAgICAgICAgcmVwbGFjZShzdGF0dXNMaW5rLCBAIiVzaXRlJSIsIHVy
bC5ob3N0KCkudG9TdHJpbmcoKSk7Ci0gICAgICAgIGFkZExpbmtBbmRSZXBsYWNlKG1hbHdhcmVE
ZXNjcmlwdGlvbiwgc3RhdHVzU3RyaW5nVG9SZXBsYWNlLCBzdGF0dXNMaW5rLnN0cmluZywgbWFs
d2FyZURldGFpbHNVUkwodXJsLCByZXN1bHQpKTsKKyAgICAgICAgYWRkTGlua0FuZFJlcGxhY2Uo
bWFsd2FyZURlc2NyaXB0aW9uLmdldCgpLCBzdGF0dXNTdHJpbmdUb1JlcGxhY2UsIHN0YXR1c0xp
bmsuc3RyaW5nLCBtYWx3YXJlRGV0YWlsc1VSTCh1cmwsIHJlc3VsdCkpOwogCi0gICAgICAgIE5T
TXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcgKmlmWW91VW5kZXJzdGFuZCA9IFtbW05TTXV0YWJsZUF0
dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoU3RyaW5nOldFQl9VSV9OU1NUUklORyhAIklm
IHlvdSB1bmRlcnN0YW5kIHRoZSByaXNrcyBpbnZvbHZlZCwgeW91IGNhbiAldmlzaXQtdGhpcy11
bnNhZmUtc2l0ZS1saW5rJS4iLCAiQWN0aW9uIGZyb20gc2FmZSBicm93c2luZyB3YXJuaW5nIild
IGF1dG9yZWxlYXNlXTsKLSAgICAgICAgYWRkTGlua0FuZFJlcGxhY2UoaWZZb3VVbmRlcnN0YW5k
LCBAIiV2aXNpdC10aGlzLXVuc2FmZS1zaXRlLWxpbmslIiwgV0VCX1VJX05TU1RSSU5HKEAidmlz
aXQgdGhpcyB1bnNhZmUgd2Vic2l0ZSIsICJBY3Rpb24gZnJvbSBzYWZlIGJyb3dzaW5nIHdhcm5p
bmciKSwgY29uZmlybU1hbHdhcmUgPyBTYWZlQnJvd3NpbmdXYXJuaW5nOjpjb25maXJtTWFsd2Fy
ZVNlbnRpbmVsKCkgOiBTYWZlQnJvd3NpbmdXYXJuaW5nOjp2aXNpdFVuc2FmZVdlYnNpdGVTZW50
aW5lbCgpKTsKKyAgICAgICAgYXV0byBpZllvdVVuZGVyc3RhbmQgPSBhZG9wdE5TKFtbTlNNdXRh
YmxlQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhTdHJpbmc6V0VCX1VJX05TU1RSSU5H
KEAiSWYgeW91IHVuZGVyc3RhbmQgdGhlIHJpc2tzIGludm9sdmVkLCB5b3UgY2FuICV2aXNpdC10
aGlzLXVuc2FmZS1zaXRlLWxpbmslLiIsICJBY3Rpb24gZnJvbSBzYWZlIGJyb3dzaW5nIHdhcm5p
bmciKV0pOworICAgICAgICBhZGRMaW5rQW5kUmVwbGFjZShpZllvdVVuZGVyc3RhbmQuZ2V0KCks
IEAiJXZpc2l0LXRoaXMtdW5zYWZlLXNpdGUtbGluayUiLCBXRUJfVUlfTlNTVFJJTkcoQCJ2aXNp
dCB0aGlzIHVuc2FmZSB3ZWJzaXRlIiwgIkFjdGlvbiBmcm9tIHNhZmUgYnJvd3Npbmcgd2Fybmlu
ZyIpLCBjb25maXJtTWFsd2FyZSA/IFNhZmVCcm93c2luZ1dhcm5pbmc6OmNvbmZpcm1NYWx3YXJl
U2VudGluZWwoKSA6IFNhZmVCcm93c2luZ1dhcm5pbmc6OnZpc2l0VW5zYWZlV2Vic2l0ZVNlbnRp
bmVsKCkpOwogCi0gICAgICAgIFttYWx3YXJlRGVzY3JpcHRpb24gYXBwZW5kQXR0cmlidXRlZFN0
cmluZzpbW1tOU011dGFibGVBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFN0cmluZzpA
IlxuXG4iXSBhdXRvcmVsZWFzZV1dOwotICAgICAgICBbbWFsd2FyZURlc2NyaXB0aW9uIGFwcGVu
ZEF0dHJpYnV0ZWRTdHJpbmc6aWZZb3VVbmRlcnN0YW5kXTsKLSAgICAgICAgcmV0dXJuIG1hbHdh
cmVEZXNjcmlwdGlvbjsKKyAgICAgICAgW21hbHdhcmVEZXNjcmlwdGlvbiBhcHBlbmRBdHRyaWJ1
dGVkU3RyaW5nOmFkb3B0TlMoW1tOU011dGFibGVBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0
V2l0aFN0cmluZzpAIlxuXG4iXSkuZ2V0KCldOworICAgICAgICBbbWFsd2FyZURlc2NyaXB0aW9u
IGFwcGVuZEF0dHJpYnV0ZWRTdHJpbmc6aWZZb3VVbmRlcnN0YW5kLmdldCgpXTsKKyAgICAgICAg
cmV0dXJuIG1hbHdhcmVEZXNjcmlwdGlvbi5hdXRvcmVsZWFzZSgpOwogICAgIH07CiAKICAgICBp
ZiAocmVzdWx0LmlzTWFsd2FyZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1N5c3RlbVByZXZpZXdDb250cm9sbGVyQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9TeXN0ZW1QcmV2aWV3Q29udHJvbGxlckNvY29hLm1tCmluZGV4IDM3MDVh
NDc1YjczZDI1ODAxNzRmZDZiYTQxNGVlNjQ3NTg1MTFlNDMuLmJkNGU2YmZiNzMxODUwNzU5NWFj
NGY4MTA1ZjAzZTc1OWI2ZDFkYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1N5c3RlbVByZXZpZXdDb250cm9sbGVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvU3lzdGVtUHJldmlld0NvbnRyb2xsZXJDb2NvYS5tbQpAQCAtMjM3
LDcgKzIzNyw3IEBAIC0gKFVJSW1hZ2UgKilwcmV2aWV3Q29udHJvbGxlcjooUUxQcmV2aWV3Q29u
dHJvbGxlciAqKWNvbnRyb2xsZXIgdHJhbnNpdGlvbkltYWdlCiAgICAgICAgIH0KICAgICB9CiAK
LSAgICByZXR1cm4gW1tVSUltYWdlIG5ld10gYXV0b3JlbGVhc2VdOworICAgIHJldHVybiBhZG9w
dE5TKFtVSUltYWdlIG5ld10pLmF1dG9yZWxlYXNlKCk7CiB9CiAKIEBlbmQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94
eS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFn
ZXJQcm94eS5tbQppbmRleCA1YzlmMDM1NzdlMTMwYjQ5MThkNDgzZjBhNDU2ODNlNTRiOWRhMTUw
Li4zODFiYjFiMDQ3MmQxNTNiNDhhYWQyOGY0YzAyYjdkZDJiMzk5MzFkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHku
bW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVuTWFu
YWdlclByb3h5Lm1tCkBAIC02MSw3ICs2MSw3IEBAICsgKENsYXNzKWxheWVyQ2xhc3MgewogI2Vs
c2UKIC0gKENBTGF5ZXIgKiltYWtlQmFja2luZ0xheWVyCiB7Ci0gICAgcmV0dXJuIFtbW0NBTGF5
ZXJIb3N0IGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07CisgICAgcmV0dXJuIGFkb3B0TlMoW1tD
QUxheWVySG9zdCBhbGxvY10gaW5pdF0pLmF1dG9yZWxlYXNlKCk7CiB9CiAjZW5kaWYKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV0tDb250YWN0UGlja2VyLm1t
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV0tDb250YWN0UGlja2VyLm1tCmluZGV4
IGVmMzVkYTI5OTIzYTBkYTY4OTA2Y2Q0MjVlMDExNmM3ZmVlNTlkMjEuLjkwZDdlYTRkNWFmZDcz
MzYwYzM2ZWU3NWU4ZGRiOThkYjg0MTg0OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1dLQ29udGFjdFBpY2tlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9XS0NvbnRhY3RQaWNrZXIubW0KQEAgLTI2MCwxMiArMjYwLDEyIEBAIC0gKE5T
QXJyYXk8Q05Db250YWN0Kj4gKilfY29udGFjdHNGcm9tSlNDb250YWN0czooTlNBcnJheSAqKWpz
Q29udGFjdHMKICAgICAgICAgaWYgKCFbanNDb250YWN0IGlzS2luZE9mQ2xhc3M6W05TRGljdGlv
bmFyeSBjbGFzc11dKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgQ05NdXRhYmxl
Q29udGFjdCAqY29udGFjdCA9IFtbYWxsb2NDTk11dGFibGVDb250YWN0SW5zdGFuY2UoKSBpbml0
XSBhdXRvcmVsZWFzZV07CisgICAgICAgIGF1dG8gY29udGFjdCA9IGFkb3B0TlMoW2FsbG9jQ05N
dXRhYmxlQ29udGFjdEluc3RhbmNlKCkgaW5pdF0pOwogCiAgICAgICAgIGlkIG5hbWVzID0gWyhO
U0RpY3Rpb25hcnkgKilqc0NvbnRhY3Qgb2JqZWN0Rm9yS2V5OkAibmFtZSJdOwogICAgICAgICBp
ZiAoW25hbWVzIGlzS2luZE9mQ2xhc3M6W05TQXJyYXkgY2xhc3NdXSkgewogICAgICAgICAgICAg
Zm9yIChOU1N0cmluZyAqbmFtZSBpbiBbbmFtZXMgZmlsdGVyZWRBcnJheVVzaW5nUHJlZGljYXRl
OnN0cmluZ1ZhbHVlUHJlZGljYXRlXSkgewotICAgICAgICAgICAgICAgIGNvbnRhY3QuZ2l2ZW5O
YW1lID0gbmFtZTsKKyAgICAgICAgICAgICAgICBbY29udGFjdCBzZXRHaXZlbk5hbWU6bmFtZV07
CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTI3
Nyw3ICsyNzcsNyBAQCAtIChOU0FycmF5PENOQ29udGFjdCo+ICopX2NvbnRhY3RzRnJvbUpTQ29u
dGFjdHM6KE5TQXJyYXkgKilqc0NvbnRhY3RzCiAgICAgICAgICAgICAgICAgQ05MYWJlbGVkVmFs
dWU8TlNTdHJpbmcqPiAqbGFiZWxlZFZhbHVlID0gW2dldENOTGFiZWxlZFZhbHVlQ2xhc3MoKSBs
YWJlbGVkVmFsdWVXaXRoTGFiZWw6bmlsIHZhbHVlOmVtYWlsXTsKICAgICAgICAgICAgICAgICBb
ZW1haWxBZGRyZXNzZXMgYWRkT2JqZWN0OmxhYmVsZWRWYWx1ZV07CiAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICBjb250YWN0LmVtYWlsQWRkcmVzc2VzID0gZW1haWxBZGRyZXNzZXM7CisgICAg
ICAgICAgICBbY29udGFjdCBzZXRFbWFpbEFkZHJlc3NlczplbWFpbEFkZHJlc3Nlc107CiAgICAg
ICAgIH0KIAogICAgICAgICBpZCBwaG9uZU51bWJlcnMgPSBbKE5TRGljdGlvbmFyeSAqKWpzQ29u
dGFjdCBvYmplY3RGb3JLZXk6QCJ0ZWwiXTsKQEAgLTI4OCwxMCArMjg4LDEwIEBAIC0gKE5TQXJy
YXk8Q05Db250YWN0Kj4gKilfY29udGFjdHNGcm9tSlNDb250YWN0czooTlNBcnJheSAqKWpzQ29u
dGFjdHMKICAgICAgICAgICAgICAgICBDTkxhYmVsZWRWYWx1ZTxDTlBob25lTnVtYmVyKj4gKmxh
YmVsZWRWYWx1ZSA9IFtnZXRDTkxhYmVsZWRWYWx1ZUNsYXNzKCkgbGFiZWxlZFZhbHVlV2l0aExh
YmVsOm5pbCB2YWx1ZTpjblBob25lTnVtYmVyXTsKICAgICAgICAgICAgICAgICBbbnVtYmVycyBh
ZGRPYmplY3Q6bGFiZWxlZFZhbHVlXTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGNvbnRh
Y3QucGhvbmVOdW1iZXJzID0gbnVtYmVyczsKKyAgICAgICAgICAgIFtjb250YWN0IHNldFBob25l
TnVtYmVyczpudW1iZXJzXTsKICAgICAgICAgfQogCi0gICAgICAgIFtjb250YWN0cyBhZGRPYmpl
Y3Q6Y29udGFjdF07CisgICAgICAgIFtjb250YWN0cyBhZGRPYmplY3Q6Y29udGFjdC5hdXRvcmVs
ZWFzZSgpXTsKICAgICB9CiAKICAgICByZXR1cm4gY29udGFjdHM7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XS1NhZmVCcm93c2luZ1dhcm5pbmcubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XS1NhZmVCcm93c2luZ1dhcm5pbmcubW0KaW5kZXgg
NzIxNmM5ODEwNDA0OWVmMDJhNTRmODYzY2EzNmVjOWNmNzVlNzQyYS4uZjZiYzNhNDYwYjU4Nzg2
MjNmYjdlOWYxMDdhNzAyZTU3ZDU1NWNmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvV0tTYWZlQnJvd3NpbmdXYXJuaW5nLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL1dLU2FmZUJyb3dzaW5nV2FybmluZy5tbQpAQCAtMjIxLDEzICsyMjEs
MTMgQEAgc3RhdGljIEJ1dHRvblR5cGUgKm1ha2VCdXR0b24oV2FybmluZ0l0ZW0gaXRlbSwgV0tT
YWZlQnJvd3NpbmdXYXJuaW5nICp3YXJuaW5nLAogICAgIHJldHVybiBbTlNCdXR0b24gYnV0dG9u
V2l0aFRpdGxlOnRpdGxlIHRhcmdldDp3YXJuaW5nIGFjdGlvbjphY3Rpb25dOwogI2Vsc2UKICAg
ICBVSUJ1dHRvbiAqYnV0dG9uID0gW1VJQnV0dG9uIGJ1dHRvbldpdGhUeXBlOlVJQnV0dG9uVHlw
ZVN5c3RlbV07Ci0gICAgTlNBdHRyaWJ1dGVkU3RyaW5nICphdHRyaWJ1dGVkVGl0bGUgPSBbW1tO
U0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoU3RyaW5nOnRpdGxlIGF0dHJpYnV0ZXM6
QHsKKyAgICBhdXRvIGF0dHJpYnV0ZWRUaXRsZSA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJp
bmcgYWxsb2NdIGluaXRXaXRoU3RyaW5nOnRpdGxlIGF0dHJpYnV0ZXM6QHsKICAgICAgICAgTlNV
bmRlcmxpbmVTdHlsZUF0dHJpYnV0ZU5hbWU6QChOU1VuZGVybGluZVN0eWxlU2luZ2xlKSwKICAg
ICAgICAgTlNVbmRlcmxpbmVDb2xvckF0dHJpYnV0ZU5hbWU6W1VJQ29sb3Igd2hpdGVDb2xvcl0s
CiAgICAgICAgIE5TRm9yZWdyb3VuZENvbG9yQXR0cmlidXRlTmFtZTpjb2xvckZvckl0ZW0oaXRl
bSwgd2FybmluZyksCiAgICAgICAgIE5TRm9udEF0dHJpYnV0ZU5hbWU6Zm9udE9mU2l6ZShXYXJu
aW5nVGV4dFNpemU6OkJvZHkpCi0gICAgfV0gYXV0b3JlbGVhc2VdOwotICAgIFtidXR0b24gc2V0
QXR0cmlidXRlZFRpdGxlOmF0dHJpYnV0ZWRUaXRsZSBmb3JTdGF0ZTpVSUNvbnRyb2xTdGF0ZU5v
cm1hbF07CisgICAgfV0pOworICAgIFtidXR0b24gc2V0QXR0cmlidXRlZFRpdGxlOmF0dHJpYnV0
ZWRUaXRsZS5nZXQoKSBmb3JTdGF0ZTpVSUNvbnRyb2xTdGF0ZU5vcm1hbF07CiAgICAgW2J1dHRv
biBhZGRUYXJnZXQ6d2FybmluZyBhY3Rpb246YWN0aW9uIGZvckNvbnRyb2xFdmVudHM6VUlDb250
cm9sRXZlbnRUb3VjaFVwSW5zaWRlXTsKICAgICByZXR1cm4gYnV0dG9uOwogI2VuZGlmCkBAIC0y
NDQsMTYgKzI0NCwxNiBAQCBzdGF0aWMgQ0dTaXplIGJ1dHRvblNpemUoQnV0dG9uVHlwZSAqYnV0
dG9uKQogfQogI2VuZGlmCiAKLXN0YXRpYyBWaWV3VHlwZSAqbWFrZUxhYmVsKE5TQXR0cmlidXRl
ZFN0cmluZyAqYXR0cmlidXRlZFN0cmluZykKK3N0YXRpYyBSZXRhaW5QdHI8Vmlld1R5cGU+IG1h
a2VMYWJlbChOU0F0dHJpYnV0ZWRTdHJpbmcgKmF0dHJpYnV0ZWRTdHJpbmcpCiB7CiAjaWYgUExB
VEZPUk0oTUFDKQogICAgIHJldHVybiBbTlNUZXh0RmllbGQgbGFiZWxXaXRoQXR0cmlidXRlZFN0
cmluZzphdHRyaWJ1dGVkU3RyaW5nXTsKICNlbHNlCi0gICAgYXV0byBsYWJlbCA9IFtbVUlMYWJl
bCBuZXddIGF1dG9yZWxlYXNlXTsKLSAgICBsYWJlbC5hdHRyaWJ1dGVkVGV4dCA9IGF0dHJpYnV0
ZWRTdHJpbmc7Ci0gICAgbGFiZWwubGluZUJyZWFrTW9kZSA9IE5TTGluZUJyZWFrQnlXb3JkV3Jh
cHBpbmc7Ci0gICAgbGFiZWwubnVtYmVyT2ZMaW5lcyA9IDA7Ci0gICAgbGFiZWwuYWNjZXNzaWJp
bGl0eVRyYWl0cyA9IFVJQWNjZXNzaWJpbGl0eVRyYWl0SGVhZGVyOworICAgIGF1dG8gbGFiZWwg
PSBhZG9wdE5TKFtVSUxhYmVsIG5ld10pOworICAgIFtsYWJlbCBzZXRBdHRyaWJ1dGVkVGV4dDph
dHRyaWJ1dGVkU3RyaW5nXTsKKyAgICBbbGFiZWwgc2V0TGluZUJyZWFrTW9kZTpOU0xpbmVCcmVh
a0J5V29yZFdyYXBwaW5nXTsKKyAgICBbbGFiZWwgc2V0TnVtYmVyT2ZMaW5lczowXTsKKyAgICBb
bGFiZWwgc2V0QWNjZXNzaWJpbGl0eVRyYWl0czpVSUFjY2Vzc2liaWxpdHlUcmFpdEhlYWRlcl07
CiAgICAgcmV0dXJuIGxhYmVsOwogI2VuZGlmCiB9CkBAIC0zMTcsODMgKzMxNyw4MyBAQCAtIChp
bnN0YW5jZXR5cGUpaW5pdFdpdGhGcmFtZTooUmVjdFR5cGUpZnJhbWUgc2FmZUJyb3dzaW5nV2Fy
bmluZzooY29uc3QgV2ViS2l0OgogCiAtICh2b2lkKWFkZENvbnRlbnQKIHsKLSAgICBhdXRvIGV4
Y2xhbWF0aW9uUG9pbnQgPSBbW1dLU2FmZUJyb3dzaW5nRXhjbGFtYXRpb25Qb2ludCBuZXddIGF1
dG9yZWxlYXNlXTsKLSAgICBhdXRvIHRpdGxlID0gbWFrZUxhYmVsKFtbW05TQXR0cmlidXRlZFN0
cmluZyBhbGxvY10gaW5pdFdpdGhTdHJpbmc6X3dhcm5pbmctPnRpdGxlKCkgYXR0cmlidXRlczpA
eworICAgIGF1dG8gZXhjbGFtYXRpb25Qb2ludCA9IGFkb3B0TlMoW1dLU2FmZUJyb3dzaW5nRXhj
bGFtYXRpb25Qb2ludCBuZXddKTsKKyAgICBhdXRvIHRpdGxlID0gbWFrZUxhYmVsKGFkb3B0TlMo
W1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoU3RyaW5nOl93YXJuaW5nLT50aXRs
ZSgpIGF0dHJpYnV0ZXM6QHsKICAgICAgICAgTlNGb250QXR0cmlidXRlTmFtZTpmb250T2ZTaXpl
KFdhcm5pbmdUZXh0U2l6ZTo6VGl0bGUpLAogICAgICAgICBOU0ZvcmVncm91bmRDb2xvckF0dHJp
YnV0ZU5hbWU6Y29sb3JGb3JJdGVtKFdhcm5pbmdJdGVtOjpUaXRsZVRleHQsIHNlbGYpCiAjaWYg
UExBVEZPUk0oV0FUQ0hPUykKICAgICAgICAgLCBOU0h5cGhlbmF0aW9uRmFjdG9yRG9jdW1lbnRB
dHRyaWJ1dGU6QDEKICNlbmRpZgotICAgIH1dIGF1dG9yZWxlYXNlXSk7Ci0gICAgYXV0byB3YXJu
aW5nID0gbWFrZUxhYmVsKFtbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhTdHJp
bmc6X3dhcm5pbmctPndhcm5pbmcoKSBhdHRyaWJ1dGVzOkB7CisgICAgfV0pLmdldCgpKTsKKyAg
ICBhdXRvIHdhcm5pbmcgPSBtYWtlTGFiZWwoYWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBh
bGxvY10gaW5pdFdpdGhTdHJpbmc6X3dhcm5pbmctPndhcm5pbmcoKSBhdHRyaWJ1dGVzOkB7CiAg
ICAgICAgIE5TRm9udEF0dHJpYnV0ZU5hbWU6Zm9udE9mU2l6ZShXYXJuaW5nVGV4dFNpemU6OkJv
ZHkpLAogICAgICAgICBOU0ZvcmVncm91bmRDb2xvckF0dHJpYnV0ZU5hbWU6Y29sb3JGb3JJdGVt
KFdhcm5pbmdJdGVtOjpNZXNzYWdlVGV4dCwgc2VsZikKICNpZiBQTEFURk9STShXQVRDSE9TKQog
ICAgICAgICAsIE5TSHlwaGVuYXRpb25GYWN0b3JEb2N1bWVudEF0dHJpYnV0ZTpAMQogI2VuZGlm
Ci0gICAgfV0gYXV0b3JlbGVhc2VdKTsKKyAgICB9XSkuZ2V0KCkpOwogICAgIGF1dG8gc2hvd0Rl
dGFpbHMgPSBtYWtlQnV0dG9uKFdhcm5pbmdJdGVtOjpTaG93RGV0YWlsc0J1dHRvbiwgc2VsZiwg
QHNlbGVjdG9yKHNob3dEZXRhaWxzQ2xpY2tlZCkpOwogICAgIGF1dG8gZ29CYWNrID0gbWFrZUJ1
dHRvbihXYXJuaW5nSXRlbTo6R29CYWNrQnV0dG9uLCBzZWxmLCBAc2VsZWN0b3IoZ29CYWNrQ2xp
Y2tlZCkpOwotICAgIGF1dG8gYm94ID0gW1tXS1NhZmVCcm93c2luZ0JveCBuZXddIGF1dG9yZWxl
YXNlXTsKLSAgICBfYm94ID0gYm94OworICAgIGF1dG8gYm94ID0gYWRvcHROUyhbV0tTYWZlQnJv
d3NpbmdCb3ggbmV3XSk7CisgICAgX2JveCA9IGJveC5nZXQoKTsKICAgICBbYm94IHNldFNhZmVC
cm93c2luZ0JhY2tncm91bmRDb2xvcjpjb2xvckZvckl0ZW0oV2FybmluZ0l0ZW06OkJveEJhY2tn
cm91bmQsIHNlbGYpXTsKLSAgICBib3gubGF5ZXIuY29ybmVyUmFkaXVzID0gYm94Q29ybmVyUmFk
aXVzOworICAgIFtib3ggbGF5ZXJdLmNvcm5lclJhZGl1cyA9IGJveENvcm5lclJhZGl1czsKIAot
ICAgIGZvciAoVmlld1R5cGUgKnZpZXcgaW4gQFtleGNsYW1hdGlvblBvaW50LCB0aXRsZSwgd2Fy
bmluZywgZ29CYWNrLCBzaG93RGV0YWlsc10pIHsKKyAgICBmb3IgKFZpZXdUeXBlICp2aWV3IGlu
IEBbZXhjbGFtYXRpb25Qb2ludC5nZXQoKSwgdGl0bGUuZ2V0KCksIHdhcm5pbmcuZ2V0KCksIGdv
QmFjaywgc2hvd0RldGFpbHNdKSB7CiAgICAgICAgIHZpZXcudHJhbnNsYXRlc0F1dG9yZXNpemlu
Z01hc2tJbnRvQ29uc3RyYWludHMgPSBOTzsKICAgICAgICAgW2JveCBhZGRTdWJ2aWV3OnZpZXdd
OwogICAgIH0KLSAgICBib3gudHJhbnNsYXRlc0F1dG9yZXNpemluZ01hc2tJbnRvQ29uc3RyYWlu
dHMgPSBOTzsKLSAgICBbc2VsZiBhZGRTdWJ2aWV3OmJveF07CisgICAgW2JveCBzZXRUcmFuc2xh
dGVzQXV0b3Jlc2l6aW5nTWFza0ludG9Db25zdHJhaW50czpOT107CisgICAgW3NlbGYgYWRkU3Vi
dmlldzpib3guZ2V0KCldOwogCiAjaWYgUExBVEZPUk0oV0FUQ0hPUykKICAgICBbTlNMYXlvdXRD
b25zdHJhaW50IGFjdGl2YXRlQ29uc3RyYWludHM6QFsKLSAgICAgICAgW1tib3gubGVhZGluZ0Fu
Y2hvciBhbmNob3JXaXRoT2Zmc2V0VG9BbmNob3I6ZXhjbGFtYXRpb25Qb2ludC5sZWFkaW5nQW5j
aG9yXSBjb25zdHJhaW50RXF1YWxUb0FuY2hvcjpbZXhjbGFtYXRpb25Qb2ludC50cmFpbGluZ0Fu
Y2hvciBhbmNob3JXaXRoT2Zmc2V0VG9BbmNob3I6Ym94LnRyYWlsaW5nQW5jaG9yXV0sCi0gICAg
ICAgIFtbYm94LmxlYWRpbmdBbmNob3IgYW5jaG9yV2l0aE9mZnNldFRvQW5jaG9yOnRpdGxlLmxl
YWRpbmdBbmNob3JdIGNvbnN0cmFpbnRFcXVhbFRvQ29uc3RhbnQ6bWFyZ2luU2l6ZV0sCi0gICAg
ICAgIFtbdGl0bGUuYm90dG9tQW5jaG9yIGFuY2hvcldpdGhPZmZzZXRUb0FuY2hvcjp3YXJuaW5n
LnRvcEFuY2hvcl0gY29uc3RyYWludEVxdWFsVG9Db25zdGFudDptYXJnaW5TaXplXSwKLSAgICAg
ICAgW1tleGNsYW1hdGlvblBvaW50LmJvdHRvbUFuY2hvciBhbmNob3JXaXRoT2Zmc2V0VG9BbmNo
b3I6dGl0bGUudG9wQW5jaG9yXSBjb25zdHJhaW50RXF1YWxUb0NvbnN0YW50Om1hcmdpblNpemVd
LAotICAgICAgICBbW2JveC50b3BBbmNob3IgYW5jaG9yV2l0aE9mZnNldFRvQW5jaG9yOmV4Y2xh
bWF0aW9uUG9pbnQudG9wQW5jaG9yXSBjb25zdHJhaW50RXF1YWxUb0NvbnN0YW50Om1hcmdpblNp
emUgKyBzZWxmLmZyYW1lLnNpemUuaGVpZ2h0IC8gMl0sCi0gICAgICAgIFtbc2VsZi50b3BBbmNo
b3IgYW5jaG9yV2l0aE9mZnNldFRvQW5jaG9yOmJveC50b3BBbmNob3JdIGNvbnN0cmFpbnRFcXVh
bFRvQW5jaG9yOltib3guYm90dG9tQW5jaG9yIGFuY2hvcldpdGhPZmZzZXRUb0FuY2hvcjpzZWxm
LmJvdHRvbUFuY2hvcl0gbXVsdGlwbGllcjowLjJdLAorICAgICAgICBbW1tib3ggbGVhZGluZ0Fu
Y2hvcl0gYW5jaG9yV2l0aE9mZnNldFRvQW5jaG9yOltleGNsYW1hdGlvblBvaW50IGxlYWRpbmdB
bmNob3JdXSBjb25zdHJhaW50RXF1YWxUb0FuY2hvcjpbW2V4Y2xhbWF0aW9uUG9pbnQgdHJhaWxp
bmdBbmNob3JdIGFuY2hvcldpdGhPZmZzZXRUb0FuY2hvcjpbYm94IHRyYWlsaW5nQW5jaG9yXV1d
LAorICAgICAgICBbW1tib3ggbGVhZGluZ0FuY2hvcl0gYW5jaG9yV2l0aE9mZnNldFRvQW5jaG9y
Olt0aXRsZSBsZWFkaW5nQW5jaG9yXV0gY29uc3RyYWludEVxdWFsVG9Db25zdGFudDptYXJnaW5T
aXplXSwKKyAgICAgICAgW1tbdGl0bGUgYm90dG9tQW5jaG9yXSBhbmNob3JXaXRoT2Zmc2V0VG9B
bmNob3I6W3dhcm5pbmcgdG9wQW5jaG9yXV0gY29uc3RyYWludEVxdWFsVG9Db25zdGFudDptYXJn
aW5TaXplXSwKKyAgICAgICAgW1tbZXhjbGFtYXRpb25Qb2ludCBib3R0b21BbmNob3JdIGFuY2hv
cldpdGhPZmZzZXRUb0FuY2hvcjpbdGl0bGUgdG9wQW5jaG9yXV0gY29uc3RyYWludEVxdWFsVG9D
b25zdGFudDptYXJnaW5TaXplXSwKKyAgICAgICAgW1tbYm94IHRvcEFuY2hvcl0gYW5jaG9yV2l0
aE9mZnNldFRvQW5jaG9yOltleGNsYW1hdGlvblBvaW50IHRvcEFuY2hvcl1dIGNvbnN0cmFpbnRF
cXVhbFRvQ29uc3RhbnQ6bWFyZ2luU2l6ZSArIHNlbGYuZnJhbWUuc2l6ZS5oZWlnaHQgLyAyXSwK
KyAgICAgICAgW1tzZWxmLnRvcEFuY2hvciBhbmNob3JXaXRoT2Zmc2V0VG9BbmNob3I6W2JveCB0
b3BBbmNob3JdXSBjb25zdHJhaW50RXF1YWxUb0FuY2hvcjpbW2JveCBib3R0b21BbmNob3JdIGFu
Y2hvcldpdGhPZmZzZXRUb0FuY2hvcjpzZWxmLmJvdHRvbUFuY2hvcl0gbXVsdGlwbGllcjowLjJd
LAogICAgIF1dOwogI2VsaWYgSEFWRShTQUZFX0JST1dTSU5HKQogICAgIFtOU0xheW91dENvbnN0
cmFpbnQgYWN0aXZhdGVDb25zdHJhaW50czpAWwotICAgICAgICBbW2JveC5sZWFkaW5nQW5jaG9y
IGFuY2hvcldpdGhPZmZzZXRUb0FuY2hvcjpleGNsYW1hdGlvblBvaW50LmxlYWRpbmdBbmNob3Jd
IGNvbnN0cmFpbnRFcXVhbFRvQ29uc3RhbnQ6bWFyZ2luU2l6ZV0sCi0gICAgICAgIFtbYm94Lmxl
YWRpbmdBbmNob3IgYW5jaG9yV2l0aE9mZnNldFRvQW5jaG9yOnRpdGxlLmxlYWRpbmdBbmNob3Jd
IGNvbnN0cmFpbnRFcXVhbFRvQ29uc3RhbnQ6bWFyZ2luU2l6ZSAqIDEuNSArIGV4Y2xhbWF0aW9u
UG9pbnRTaXplXSwKLSAgICAgICAgW1t0aXRsZS50b3BBbmNob3IgYW5jaG9yV2l0aE9mZnNldFRv
QW5jaG9yOmV4Y2xhbWF0aW9uUG9pbnQudG9wQW5jaG9yXSBjb25zdHJhaW50RXF1YWxUb0FuY2hv
cjpbZXhjbGFtYXRpb25Qb2ludC5ib3R0b21BbmNob3IgYW5jaG9yV2l0aE9mZnNldFRvQW5jaG9y
OnRpdGxlLmJvdHRvbUFuY2hvcl1dLAotICAgICAgICBbW3RpdGxlLmJvdHRvbUFuY2hvciBhbmNo
b3JXaXRoT2Zmc2V0VG9BbmNob3I6d2FybmluZy50b3BBbmNob3JdIGNvbnN0cmFpbnRFcXVhbFRv
Q29uc3RhbnQ6bWFyZ2luU2l6ZV0sCi0gICAgICAgIFtbYm94LnRvcEFuY2hvciBhbmNob3JXaXRo
T2Zmc2V0VG9BbmNob3I6dGl0bGUudG9wQW5jaG9yXSBjb25zdHJhaW50RXF1YWxUb0NvbnN0YW50
Om1hcmdpblNpemVdLAotICAgICAgICBbW3NlbGYudG9wQW5jaG9yIGFuY2hvcldpdGhPZmZzZXRU
b0FuY2hvcjpib3gudG9wQW5jaG9yXSBjb25zdHJhaW50RXF1YWxUb0FuY2hvcjpbYm94LmJvdHRv
bUFuY2hvciBhbmNob3JXaXRoT2Zmc2V0VG9BbmNob3I6c2VsZi5ib3R0b21BbmNob3JdIG11bHRp
cGxpZXI6MC41XSwKKyAgICAgICAgW1tbYm94IGxlYWRpbmdBbmNob3JdIGFuY2hvcldpdGhPZmZz
ZXRUb0FuY2hvcjpbZXhjbGFtYXRpb25Qb2ludCBsZWFkaW5nQW5jaG9yXV0gY29uc3RyYWludEVx
dWFsVG9Db25zdGFudDptYXJnaW5TaXplXSwKKyAgICAgICAgW1tbYm94IGxlYWRpbmdBbmNob3Jd
IGFuY2hvcldpdGhPZmZzZXRUb0FuY2hvcjpbdGl0bGUgbGVhZGluZ0FuY2hvcl1dIGNvbnN0cmFp
bnRFcXVhbFRvQ29uc3RhbnQ6bWFyZ2luU2l6ZSAqIDEuNSArIGV4Y2xhbWF0aW9uUG9pbnRTaXpl
XSwKKyAgICAgICAgW1tbdGl0bGUgdG9wQW5jaG9yXSBhbmNob3JXaXRoT2Zmc2V0VG9BbmNob3I6
W2V4Y2xhbWF0aW9uUG9pbnQgdG9wQW5jaG9yXV0gY29uc3RyYWludEVxdWFsVG9BbmNob3I6W1tl
eGNsYW1hdGlvblBvaW50IGJvdHRvbUFuY2hvcl0gYW5jaG9yV2l0aE9mZnNldFRvQW5jaG9yOlt0
aXRsZSBib3R0b21BbmNob3JdXV0sCisgICAgICAgIFtbW3RpdGxlIGJvdHRvbUFuY2hvcl0gYW5j
aG9yV2l0aE9mZnNldFRvQW5jaG9yOlt3YXJuaW5nIHRvcEFuY2hvcl1dIGNvbnN0cmFpbnRFcXVh
bFRvQ29uc3RhbnQ6bWFyZ2luU2l6ZV0sCisgICAgICAgIFtbW2JveCB0b3BBbmNob3JdIGFuY2hv
cldpdGhPZmZzZXRUb0FuY2hvcjpbdGl0bGUgdG9wQW5jaG9yXV0gY29uc3RyYWludEVxdWFsVG9D
b25zdGFudDptYXJnaW5TaXplXSwKKyAgICAgICAgW1tzZWxmLnRvcEFuY2hvciBhbmNob3JXaXRo
T2Zmc2V0VG9BbmNob3I6W2JveCB0b3BBbmNob3JdXSBjb25zdHJhaW50RXF1YWxUb0FuY2hvcjpb
W2JveCBib3R0b21BbmNob3JdIGFuY2hvcldpdGhPZmZzZXRUb0FuY2hvcjpzZWxmLmJvdHRvbUFu
Y2hvcl0gbXVsdGlwbGllcjowLjVdLAogICAgIF1dOwogI2VuZGlmCiAKICNpZiBIQVZFKFNBRkVf
QlJPV1NJTkcpCiAgICAgW05TTGF5b3V0Q29uc3RyYWludCBhY3RpdmF0ZUNvbnN0cmFpbnRzOkBb
Ci0gICAgICAgIFtbc2VsZi5sZWZ0QW5jaG9yIGFuY2hvcldpdGhPZmZzZXRUb0FuY2hvcjpib3gu
bGVmdEFuY2hvcl0gY29uc3RyYWludEVxdWFsVG9BbmNob3I6W2JveC5yaWdodEFuY2hvciBhbmNo
b3JXaXRoT2Zmc2V0VG9BbmNob3I6c2VsZi5yaWdodEFuY2hvcl1dLAorICAgICAgICBbW3NlbGYu
bGVmdEFuY2hvciBhbmNob3JXaXRoT2Zmc2V0VG9BbmNob3I6W2JveCBsZWZ0QW5jaG9yXV0gY29u
c3RyYWludEVxdWFsVG9BbmNob3I6W1tib3ggcmlnaHRBbmNob3JdIGFuY2hvcldpdGhPZmZzZXRU
b0FuY2hvcjpzZWxmLnJpZ2h0QW5jaG9yXV0sCiAKLSAgICAgICAgW2JveC53aWR0aEFuY2hvciBj
b25zdHJhaW50TGVzc1RoYW5PckVxdWFsVG9Db25zdGFudDptYXhXaWR0aF0sCi0gICAgICAgIFti
b3gud2lkdGhBbmNob3IgY29uc3RyYWludExlc3NUaGFuT3JFcXVhbFRvQW5jaG9yOnNlbGYud2lk
dGhBbmNob3JdLAorICAgICAgICBbW2JveCB3aWR0aEFuY2hvcl0gY29uc3RyYWludExlc3NUaGFu
T3JFcXVhbFRvQ29uc3RhbnQ6bWF4V2lkdGhdLAorICAgICAgICBbW2JveCB3aWR0aEFuY2hvcl0g
Y29uc3RyYWludExlc3NUaGFuT3JFcXVhbFRvQW5jaG9yOnNlbGYud2lkdGhBbmNob3JdLAogCi0g
ICAgICAgIFtbYm94LmxlYWRpbmdBbmNob3IgYW5jaG9yV2l0aE9mZnNldFRvQW5jaG9yOndhcm5p
bmcubGVhZGluZ0FuY2hvcl0gY29uc3RyYWludEVxdWFsVG9Db25zdGFudDptYXJnaW5TaXplXSwK
KyAgICAgICAgW1tbYm94IGxlYWRpbmdBbmNob3JdIGFuY2hvcldpdGhPZmZzZXRUb0FuY2hvcjpb
d2FybmluZyBsZWFkaW5nQW5jaG9yXV0gY29uc3RyYWludEVxdWFsVG9Db25zdGFudDptYXJnaW5T
aXplXSwKIAotICAgICAgICBbW3RpdGxlLnRyYWlsaW5nQW5jaG9yIGFuY2hvcldpdGhPZmZzZXRU
b0FuY2hvcjpib3gudHJhaWxpbmdBbmNob3JdIGNvbnN0cmFpbnRHcmVhdGVyVGhhbk9yRXF1YWxU
b0NvbnN0YW50Om1hcmdpblNpemVdLAotICAgICAgICBbW3dhcm5pbmcudHJhaWxpbmdBbmNob3Ig
YW5jaG9yV2l0aE9mZnNldFRvQW5jaG9yOmJveC50cmFpbGluZ0FuY2hvcl0gY29uc3RyYWludEdy
ZWF0ZXJUaGFuT3JFcXVhbFRvQ29uc3RhbnQ6bWFyZ2luU2l6ZV0sCi0gICAgICAgIFtbZ29CYWNr
LnRyYWlsaW5nQW5jaG9yIGFuY2hvcldpdGhPZmZzZXRUb0FuY2hvcjpib3gudHJhaWxpbmdBbmNo
b3JdIGNvbnN0cmFpbnRFcXVhbFRvQ29uc3RhbnQ6bWFyZ2luU2l6ZV0sCisgICAgICAgIFtbW3Rp
dGxlIHRyYWlsaW5nQW5jaG9yXSBhbmNob3JXaXRoT2Zmc2V0VG9BbmNob3I6W2JveCB0cmFpbGlu
Z0FuY2hvcl1dIGNvbnN0cmFpbnRHcmVhdGVyVGhhbk9yRXF1YWxUb0NvbnN0YW50Om1hcmdpblNp
emVdLAorICAgICAgICBbW1t3YXJuaW5nIHRyYWlsaW5nQW5jaG9yXSBhbmNob3JXaXRoT2Zmc2V0
VG9BbmNob3I6W2JveCB0cmFpbGluZ0FuY2hvcl1dIGNvbnN0cmFpbnRHcmVhdGVyVGhhbk9yRXF1
YWxUb0NvbnN0YW50Om1hcmdpblNpemVdLAorICAgICAgICBbW2dvQmFjay50cmFpbGluZ0FuY2hv
ciBhbmNob3JXaXRoT2Zmc2V0VG9BbmNob3I6W2JveCB0cmFpbGluZ0FuY2hvcl1dIGNvbnN0cmFp
bnRFcXVhbFRvQ29uc3RhbnQ6bWFyZ2luU2l6ZV0sCiAKLSAgICAgICAgW1t3YXJuaW5nLmJvdHRv
bUFuY2hvciBhbmNob3JXaXRoT2Zmc2V0VG9BbmNob3I6Z29CYWNrLnRvcEFuY2hvcl0gY29uc3Ry
YWludEVxdWFsVG9Db25zdGFudDptYXJnaW5TaXplXSwKKyAgICAgICAgW1tbd2FybmluZyBib3R0
b21BbmNob3JdIGFuY2hvcldpdGhPZmZzZXRUb0FuY2hvcjpnb0JhY2sudG9wQW5jaG9yXSBjb25z
dHJhaW50RXF1YWxUb0NvbnN0YW50Om1hcmdpblNpemVdLAogICAgIF1dOwogICAgIAogICAgIGJv
b2wgbmVlZHNWZXJ0aWNhbEJ1dHRvbkxheW91dCA9IGJ1dHRvblNpemUoc2hvd0RldGFpbHMpLndp
ZHRoICsgYnV0dG9uU2l6ZShnb0JhY2spLndpZHRoICsgMyAqIG1hcmdpblNpemUgPiBzZWxmLmZy
YW1lLnNpemUud2lkdGg7CiAgICAgaWYgKG5lZWRzVmVydGljYWxCdXR0b25MYXlvdXQpIHsKICAg
ICAgICAgW05TTGF5b3V0Q29uc3RyYWludCBhY3RpdmF0ZUNvbnN0cmFpbnRzOkBbCi0gICAgICAg
ICAgICBbW3Nob3dEZXRhaWxzLnRyYWlsaW5nQW5jaG9yIGFuY2hvcldpdGhPZmZzZXRUb0FuY2hv
cjpib3gudHJhaWxpbmdBbmNob3JdIGNvbnN0cmFpbnRFcXVhbFRvQ29uc3RhbnQ6bWFyZ2luU2l6
ZV0sCisgICAgICAgICAgICBbW3Nob3dEZXRhaWxzLnRyYWlsaW5nQW5jaG9yIGFuY2hvcldpdGhP
ZmZzZXRUb0FuY2hvcjpbYm94IHRyYWlsaW5nQW5jaG9yXV0gY29uc3RyYWludEVxdWFsVG9Db25z
dGFudDptYXJnaW5TaXplXSwKICAgICAgICAgICAgIFtbZ29CYWNrLmJvdHRvbUFuY2hvciBhbmNo
b3JXaXRoT2Zmc2V0VG9BbmNob3I6c2hvd0RldGFpbHMudG9wQW5jaG9yXSBjb25zdHJhaW50RXF1
YWxUb0NvbnN0YW50Om1hcmdpblNpemVdLAotICAgICAgICAgICAgW1tnb0JhY2suYm90dG9tQW5j
aG9yIGFuY2hvcldpdGhPZmZzZXRUb0FuY2hvcjpib3guYm90dG9tQW5jaG9yXSBjb25zdHJhaW50
RXF1YWxUb0NvbnN0YW50Om1hcmdpblNpemUgKiAyICsgYnV0dG9uU2l6ZShzaG93RGV0YWlscyku
aGVpZ2h0XSwKKyAgICAgICAgICAgIFtbZ29CYWNrLmJvdHRvbUFuY2hvciBhbmNob3JXaXRoT2Zm
c2V0VG9BbmNob3I6W2JveCBib3R0b21BbmNob3JdXSBjb25zdHJhaW50RXF1YWxUb0NvbnN0YW50
Om1hcmdpblNpemUgKiAyICsgYnV0dG9uU2l6ZShzaG93RGV0YWlscykuaGVpZ2h0XSwKICAgICAg
ICAgXV07CiAgICAgfSBlbHNlIHsKICAgICAgICAgW05TTGF5b3V0Q29uc3RyYWludCBhY3RpdmF0
ZUNvbnN0cmFpbnRzOkBbCiAgICAgICAgICAgICBbW3Nob3dEZXRhaWxzLnRyYWlsaW5nQW5jaG9y
IGFuY2hvcldpdGhPZmZzZXRUb0FuY2hvcjpnb0JhY2subGVhZGluZ0FuY2hvcl0gY29uc3RyYWlu
dEVxdWFsVG9Db25zdGFudDptYXJnaW5TaXplXSwKICAgICAgICAgICAgIFtnb0JhY2sudG9wQW5j
aG9yIGNvbnN0cmFpbnRFcXVhbFRvQW5jaG9yOnNob3dEZXRhaWxzLnRvcEFuY2hvcl0sCi0gICAg
ICAgICAgICBbW2dvQmFjay5ib3R0b21BbmNob3IgYW5jaG9yV2l0aE9mZnNldFRvQW5jaG9yOmJv
eC5ib3R0b21BbmNob3JdIGNvbnN0cmFpbnRFcXVhbFRvQ29uc3RhbnQ6bWFyZ2luU2l6ZV0sCisg
ICAgICAgICAgICBbW2dvQmFjay5ib3R0b21BbmNob3IgYW5jaG9yV2l0aE9mZnNldFRvQW5jaG9y
Oltib3ggYm90dG9tQW5jaG9yXV0gY29uc3RyYWludEVxdWFsVG9Db25zdGFudDptYXJnaW5TaXpl
XSwKICAgICAgICAgXV07CiAgICAgfQogI2lmICFQTEFURk9STShNQUMpCkBAIC00MTMsNDcgKzQx
Myw0NyBAQCAtICh2b2lkKXNob3dEZXRhaWxzQ2xpY2tlZAogICAgIEJ1dHRvblR5cGUgKnNob3dE
ZXRhaWxzID0gYm94LnN1YnZpZXdzLmxhc3RPYmplY3Q7CiAgICAgW3Nob3dEZXRhaWxzIHJlbW92
ZUZyb21TdXBlcnZpZXddOwogCi0gICAgTlNNdXRhYmxlQXR0cmlidXRlZFN0cmluZyAqdGV4dCA9
IFtbX3dhcm5pbmctPmRldGFpbHMoKSBtdXRhYmxlQ29weV0gYXV0b3JlbGVhc2VdOwotICAgIFt0
ZXh0IGFkZEF0dHJpYnV0ZXM6QHsgTlNGb250QXR0cmlidXRlTmFtZTpmb250T2ZTaXplKFdhcm5p
bmdUZXh0U2l6ZTo6Qm9keSkgfSByYW5nZTpOU01ha2VSYW5nZSgwLCB0ZXh0Lmxlbmd0aCldOwot
ICAgIFdLU2FmZUJyb3dzaW5nVGV4dFZpZXcgKmRldGFpbHMgPSBbW1tXS1NhZmVCcm93c2luZ1Rl
eHRWaWV3IGFsbG9jXSBpbml0V2l0aEF0dHJpYnV0ZWRTdHJpbmc6dGV4dCBmb3JXYXJuaW5nOnNl
bGZdIGF1dG9yZWxlYXNlXTsKLSAgICBfZGV0YWlscyA9IGRldGFpbHM7Ci0gICAgV0tTYWZlQnJv
d3NpbmdCb3ggKmJvdHRvbSA9IFtbV0tTYWZlQnJvd3NpbmdCb3ggbmV3XSBhdXRvcmVsZWFzZV07
CisgICAgYXV0byB0ZXh0ID0gYWRvcHROUyhbX3dhcm5pbmctPmRldGFpbHMoKSBtdXRhYmxlQ29w
eV0pOworICAgIFt0ZXh0IGFkZEF0dHJpYnV0ZXM6QHsgTlNGb250QXR0cmlidXRlTmFtZTpmb250
T2ZTaXplKFdhcm5pbmdUZXh0U2l6ZTo6Qm9keSkgfSByYW5nZTpOU01ha2VSYW5nZSgwLCBbdGV4
dCBsZW5ndGhdKV07CisgICAgYXV0byBkZXRhaWxzID0gYWRvcHROUyhbW1dLU2FmZUJyb3dzaW5n
VGV4dFZpZXcgYWxsb2NdIGluaXRXaXRoQXR0cmlidXRlZFN0cmluZzp0ZXh0LmdldCgpIGZvcldh
cm5pbmc6c2VsZl0pOworICAgIF9kZXRhaWxzID0gZGV0YWlscy5nZXQoKTsKKyAgICBhdXRvIGJv
dHRvbSA9IGFkb3B0TlMoW1dLU2FmZUJyb3dzaW5nQm94IG5ld10pOwogICAgIFtib3R0b20gc2V0
U2FmZUJyb3dzaW5nQmFja2dyb3VuZENvbG9yOmNvbG9yRm9ySXRlbShXYXJuaW5nSXRlbTo6Qm94
QmFja2dyb3VuZCwgc2VsZildOwotICAgIGJvdHRvbS5sYXllci5jb3JuZXJSYWRpdXMgPSBib3hD
b3JuZXJSYWRpdXM7CisgICAgW2JvdHRvbSBsYXllcl0uY29ybmVyUmFkaXVzID0gYm94Q29ybmVy
UmFkaXVzOwogCiAjaWYgSEFWRShTQUZFX0JST1dTSU5HKQogICAgIGNvbnN0ZXhwciBhdXRvIG1h
eFkgPSBrQ0FMYXllck1pblhNYXhZQ29ybmVyIHwga0NBTGF5ZXJNYXhYTWF4WUNvcm5lcjsKICAg
ICBjb25zdGV4cHIgYXV0byBtaW5ZID0ga0NBTGF5ZXJNaW5YTWluWUNvcm5lciB8IGtDQUxheWVy
TWF4WE1pbllDb3JuZXI7CiAjaWYgUExBVEZPUk0oTUFDKQogICAgIGJveC5sYXllci5tYXNrZWRD
b3JuZXJzID0gbWF4WTsKLSAgICBib3R0b20ubGF5ZXIubWFza2VkQ29ybmVycyA9IG1pblk7Cisg
ICAgW2JvdHRvbSBsYXllcl0ubWFza2VkQ29ybmVycyA9IG1pblk7CiAjZWxzZQogICAgIGJveC5s
YXllci5tYXNrZWRDb3JuZXJzID0gbWluWTsKLSAgICBib3R0b20ubGF5ZXIubWFza2VkQ29ybmVy
cyA9IG1heFk7CisgICAgW2JvdHRvbSBsYXllcl0ubWFza2VkQ29ybmVycyA9IG1heFk7CiAjZW5k
aWYKICNlbmRpZgogCi0gICAgV0tTYWZlQnJvd3NpbmdCb3ggKmxpbmUgPSBbW1dLU2FmZUJyb3dz
aW5nQm94IG5ld10gYXV0b3JlbGVhc2VdOworICAgIGF1dG8gbGluZSA9IGFkb3B0TlMoW1dLU2Fm
ZUJyb3dzaW5nQm94IG5ld10pOwogICAgIFtsaW5lIHNldFNhZmVCcm93c2luZ0JhY2tncm91bmRD
b2xvcjpbQ29jb2FDb2xvciBsaWdodEdyYXlDb2xvcl1dOwotICAgIGZvciAoVmlld1R5cGUgKnZp
ZXcgaW4gQFtkZXRhaWxzLCBib3R0b20sIGxpbmVdKQorICAgIGZvciAoVmlld1R5cGUgKnZpZXcg
aW4gQFtkZXRhaWxzLmdldCgpLCBib3R0b20uZ2V0KCksIGxpbmUuZ2V0KCldKQogICAgICAgICB2
aWV3LnRyYW5zbGF0ZXNBdXRvcmVzaXppbmdNYXNrSW50b0NvbnN0cmFpbnRzID0gTk87CiAKLSAg
ICBbc2VsZiBhZGRTdWJ2aWV3OmJvdHRvbV07Ci0gICAgW2JvdHRvbSBhZGRTdWJ2aWV3OmxpbmVd
OwotICAgIFtib3R0b20gYWRkU3VidmlldzpkZXRhaWxzXTsKKyAgICBbc2VsZiBhZGRTdWJ2aWV3
OmJvdHRvbS5nZXQoKV07CisgICAgW2JvdHRvbSBhZGRTdWJ2aWV3OmxpbmUuZ2V0KCldOworICAg
IFtib3R0b20gYWRkU3VidmlldzpkZXRhaWxzLmdldCgpXTsKICNpZiBIQVZFKFNBRkVfQlJPV1NJ
TkcpCiAgICAgW05TTGF5b3V0Q29uc3RyYWludCBhY3RpdmF0ZUNvbnN0cmFpbnRzOkBbCi0gICAg
ICAgIFtib3gud2lkdGhBbmNob3IgY29uc3RyYWludEVxdWFsVG9BbmNob3I6Ym90dG9tLndpZHRo
QW5jaG9yXSwKLSAgICAgICAgW2JveC5ib3R0b21BbmNob3IgY29uc3RyYWludEVxdWFsVG9BbmNo
b3I6Ym90dG9tLnRvcEFuY2hvcl0sCi0gICAgICAgIFtib3gubGVhZGluZ0FuY2hvciBjb25zdHJh
aW50RXF1YWxUb0FuY2hvcjpib3R0b20ubGVhZGluZ0FuY2hvcl0sCi0gICAgICAgIFtsaW5lLndp
ZHRoQW5jaG9yIGNvbnN0cmFpbnRFcXVhbFRvQW5jaG9yOmJvdHRvbS53aWR0aEFuY2hvcl0sCi0g
ICAgICAgIFtsaW5lLmxlYWRpbmdBbmNob3IgY29uc3RyYWludEVxdWFsVG9BbmNob3I6Ym90dG9t
LmxlYWRpbmdBbmNob3JdLAotICAgICAgICBbbGluZS50b3BBbmNob3IgY29uc3RyYWludEVxdWFs
VG9BbmNob3I6Ym90dG9tLnRvcEFuY2hvcl0sCi0gICAgICAgIFtsaW5lLmhlaWdodEFuY2hvciBj
b25zdHJhaW50RXF1YWxUb0NvbnN0YW50OjFdLAotICAgICAgICBbW2JvdHRvbS50b3BBbmNob3Ig
YW5jaG9yV2l0aE9mZnNldFRvQW5jaG9yOmRldGFpbHMudG9wQW5jaG9yXSBjb25zdHJhaW50RXF1
YWxUb0NvbnN0YW50Om1hcmdpblNpemVdLAotICAgICAgICBbW2RldGFpbHMuYm90dG9tQW5jaG9y
IGFuY2hvcldpdGhPZmZzZXRUb0FuY2hvcjpib3R0b20uYm90dG9tQW5jaG9yXSBjb25zdHJhaW50
RXF1YWxUb0NvbnN0YW50Om1hcmdpblNpemVdLAotICAgICAgICBbW2JvdHRvbS5sZWFkaW5nQW5j
aG9yIGFuY2hvcldpdGhPZmZzZXRUb0FuY2hvcjpkZXRhaWxzLmxlYWRpbmdBbmNob3JdIGNvbnN0
cmFpbnRFcXVhbFRvQ29uc3RhbnQ6bWFyZ2luU2l6ZV0sCi0gICAgICAgIFtbZGV0YWlscy50cmFp
bGluZ0FuY2hvciBhbmNob3JXaXRoT2Zmc2V0VG9BbmNob3I6Ym90dG9tLnRyYWlsaW5nQW5jaG9y
XSBjb25zdHJhaW50RXF1YWxUb0NvbnN0YW50Om1hcmdpblNpemVdLAorICAgICAgICBbYm94Lndp
ZHRoQW5jaG9yIGNvbnN0cmFpbnRFcXVhbFRvQW5jaG9yOltib3R0b20gd2lkdGhBbmNob3JdXSwK
KyAgICAgICAgW2JveC5ib3R0b21BbmNob3IgY29uc3RyYWludEVxdWFsVG9BbmNob3I6W2JvdHRv
bSB0b3BBbmNob3JdXSwKKyAgICAgICAgW2JveC5sZWFkaW5nQW5jaG9yIGNvbnN0cmFpbnRFcXVh
bFRvQW5jaG9yOltib3R0b20gbGVhZGluZ0FuY2hvcl1dLAorICAgICAgICBbW2xpbmUgd2lkdGhB
bmNob3JdIGNvbnN0cmFpbnRFcXVhbFRvQW5jaG9yOltib3R0b20gd2lkdGhBbmNob3JdXSwKKyAg
ICAgICAgW1tsaW5lIGxlYWRpbmdBbmNob3JdIGNvbnN0cmFpbnRFcXVhbFRvQW5jaG9yOltib3R0
b20gbGVhZGluZ0FuY2hvcl1dLAorICAgICAgICBbW2xpbmUgdG9wQW5jaG9yXSBjb25zdHJhaW50
RXF1YWxUb0FuY2hvcjpbYm90dG9tIHRvcEFuY2hvcl1dLAorICAgICAgICBbW2xpbmUgaGVpZ2h0
QW5jaG9yXSBjb25zdHJhaW50RXF1YWxUb0NvbnN0YW50OjFdLAorICAgICAgICBbW1tib3R0b20g
dG9wQW5jaG9yXSBhbmNob3JXaXRoT2Zmc2V0VG9BbmNob3I6W2RldGFpbHMgdG9wQW5jaG9yXV0g
Y29uc3RyYWludEVxdWFsVG9Db25zdGFudDptYXJnaW5TaXplXSwKKyAgICAgICAgW1tbZGV0YWls
cyBib3R0b21BbmNob3JdIGFuY2hvcldpdGhPZmZzZXRUb0FuY2hvcjpbYm90dG9tIGJvdHRvbUFu
Y2hvcl1dIGNvbnN0cmFpbnRFcXVhbFRvQ29uc3RhbnQ6bWFyZ2luU2l6ZV0sCisgICAgICAgIFtb
W2JvdHRvbSBsZWFkaW5nQW5jaG9yXSBhbmNob3JXaXRoT2Zmc2V0VG9BbmNob3I6W2RldGFpbHMg
bGVhZGluZ0FuY2hvcl1dIGNvbnN0cmFpbnRFcXVhbFRvQ29uc3RhbnQ6bWFyZ2luU2l6ZV0sCisg
ICAgICAgIFtbW2RldGFpbHMgdHJhaWxpbmdBbmNob3JdIGFuY2hvcldpdGhPZmZzZXRUb0FuY2hv
cjpbYm90dG9tIHRyYWlsaW5nQW5jaG9yXV0gY29uc3RyYWludEVxdWFsVG9Db25zdGFudDptYXJn
aW5TaXplXSwKICAgICBdXTsKICNlbmRpZgogICAgIFtzZWxmIGxheW91dFRleHRdOwpAQCAtNTcw
LDExICs1NzAsMTEgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoQXR0cmlidXRlZFN0cmluZzoo
TlNBdHRyaWJ1dGVkU3RyaW5nICopYXR0cmlidXRlZFN0cmluZwogICAgIHNlbGYuZGVsZWdhdGUg
PSB3YXJuaW5nOwogCiAgICAgQ29jb2FDb2xvciAqZm9yZWdyb3VuZENvbG9yID0gY29sb3JGb3JJ
dGVtKFdhcm5pbmdJdGVtOjpNZXNzYWdlVGV4dCwgd2FybmluZyk7Ci0gICAgTlNNdXRhYmxlQXR0
cmlidXRlZFN0cmluZyAqc3RyaW5nID0gW1thdHRyaWJ1dGVkU3RyaW5nIG11dGFibGVDb3B5XSBh
dXRvcmVsZWFzZV07Ci0gICAgW3N0cmluZyBhZGRBdHRyaWJ1dGVzOkB7IE5TRm9yZWdyb3VuZENv
bG9yQXR0cmlidXRlTmFtZSA6IGZvcmVncm91bmRDb2xvciB9IHJhbmdlOk5TTWFrZVJhbmdlKDAs
IHN0cmluZy5sZW5ndGgpXTsKKyAgICBhdXRvIHN0cmluZyA9IGFkb3B0TlMoW2F0dHJpYnV0ZWRT
dHJpbmcgbXV0YWJsZUNvcHldKTsKKyAgICBbc3RyaW5nIGFkZEF0dHJpYnV0ZXM6QHsgTlNGb3Jl
Z3JvdW5kQ29sb3JBdHRyaWJ1dGVOYW1lIDogZm9yZWdyb3VuZENvbG9yIH0gcmFuZ2U6TlNNYWtl
UmFuZ2UoMCwgW3N0cmluZyBsZW5ndGhdKV07CiAgICAgW3NlbGYgc2V0QmFja2dyb3VuZENvbG9y
OmNvbG9yRm9ySXRlbShXYXJuaW5nSXRlbTo6Qm94QmFja2dyb3VuZCwgd2FybmluZyldOwogICAg
IFtzZWxmIHNldExpbmtUZXh0QXR0cmlidXRlczpAeyBOU0ZvcmVncm91bmRDb2xvckF0dHJpYnV0
ZU5hbWUgOiBmb3JlZ3JvdW5kQ29sb3IgfV07Ci0gICAgW3NlbGYudGV4dFN0b3JhZ2UgYXBwZW5k
QXR0cmlidXRlZFN0cmluZzpzdHJpbmddOworICAgIFtzZWxmLnRleHRTdG9yYWdlIGFwcGVuZEF0
dHJpYnV0ZWRTdHJpbmc6c3RyaW5nLmdldCgpXTsKICAgICBzZWxmLmVkaXRhYmxlID0gTk87CiAj
aWYgIVBMQVRGT1JNKE1BQykKICAgICBzZWxmLnNjcm9sbEVuYWJsZWQgPSBOTzsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KaW5kZXggMWJmOTA4NGM1M2Zl
ZDVlYjYzMTk2ODQ2NjdiM2FiODI3NGI3YjhkZC4uOTBlYjRkYmRkYzBmYTc4MzNlMjhhOGYzZjEy
NmRjZjkwNzgzMWU5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
V2ViVmlld0ltcGwubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmll
d0ltcGwubW0KQEAgLTI3NTksNyArMjc1OSw3IEBAIE5TVmlldyAqV2ViVmlld0ltcGw6OmZ1bGxT
Y3JlZW5QbGFjZWhvbGRlclZpZXcoKQogTlNXaW5kb3cgKldlYlZpZXdJbXBsOjpmdWxsU2NyZWVu
V2luZG93KCkKIHsKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCi0gICAgcmV0dXJuIFtbW1dl
YkNvcmVGdWxsU2NyZWVuV2luZG93IGFsbG9jXSBpbml0V2l0aENvbnRlbnRSZWN0OltbTlNTY3Jl
ZW4gbWFpblNjcmVlbl0gZnJhbWVdIHN0eWxlTWFzazooTlNXaW5kb3dTdHlsZU1hc2tUaXRsZWQg
fCBOU1dpbmRvd1N0eWxlTWFza1VuaWZpZWRUaXRsZUFuZFRvb2xiYXIgfCBOU1dpbmRvd1N0eWxl
TWFza0Z1bGxTaXplQ29udGVudFZpZXcgfCBOU1dpbmRvd1N0eWxlTWFza1Jlc2l6YWJsZSkgYmFj
a2luZzpOU0JhY2tpbmdTdG9yZUJ1ZmZlcmVkIGRlZmVyOk5PXSBhdXRvcmVsZWFzZV07CisgICAg
cmV0dXJuIGFkb3B0TlMoW1tXZWJDb3JlRnVsbFNjcmVlbldpbmRvdyBhbGxvY10gaW5pdFdpdGhD
b250ZW50UmVjdDpbW05TU2NyZWVuIG1haW5TY3JlZW5dIGZyYW1lXSBzdHlsZU1hc2s6KE5TV2lu
ZG93U3R5bGVNYXNrVGl0bGVkIHwgTlNXaW5kb3dTdHlsZU1hc2tVbmlmaWVkVGl0bGVBbmRUb29s
YmFyIHwgTlNXaW5kb3dTdHlsZU1hc2tGdWxsU2l6ZUNvbnRlbnRWaWV3IHwgTlNXaW5kb3dTdHls
ZU1hc2tSZXNpemFibGUpIGJhY2tpbmc6TlNCYWNraW5nU3RvcmVCdWZmZXJlZCBkZWZlcjpOT10p
LmF1dG9yZWxlYXNlKCk7CiAjZWxzZQogICAgIHJldHVybiBuaWw7CiAjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>420530</attachid>
            <date>2021-02-16 13:23:07 -0800</date>
            <delta_ts>2021-02-18 15:38:13 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221932-20210216132306.patch</filename>
            <type>text/plain</type>
            <size>179569</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyOTIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
OTQzNmU3ODQzMzFiMmZmNTk2ZjJkMjFiNWViMmM3Y2RmYjFhZTdjLi5iYzRiMGNlMTAzOGZjODlm
ODI5YWNjZWRhMGRkNjg1MDUwY2ZkZjIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMiBAQAorMjAyMS0wMi0xNSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIFJlZHVjZSBleHBsaWNpdCB1c2FnZSBvZiBbb2JqQyBhdXRvcmVsZWFzZV0gaW4g
V2ViS2l0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MjE5MzIKKworICAgICAgICBSZXZpZXdlZCBieSBHZW9mZiBHYXJlbi4KKworICAgICAgICBSZWR1
Y2UgZXhwbGljaXQgdXNhZ2Ugb2YgW29iakMgYXV0b3JlbGVhc2VdIGluIFdlYktpdCBieSB1c2lu
ZyBSZXRhaW5QdHI8Pi4KKworICAgICAgICAqIEFQSS9KU0NvbnRleHQubW06CisgICAgICAgICgt
W0pTQ29udGV4dCBpbml0XSk6CisgICAgICAgICgrW0pTQ29udGV4dCBjb250ZXh0V2l0aEpTR2xv
YmFsQ29udGV4dFJlZjpdKToKKyAgICAgICAgKiBBUEkvSlNNYW5hZ2VkVmFsdWUubW06CisgICAg
ICAgICgrW0pTTWFuYWdlZFZhbHVlIG1hbmFnZWRWYWx1ZVdpdGhWYWx1ZTpdKToKKyAgICAgICAg
KCtbSlNNYW5hZ2VkVmFsdWUgbWFuYWdlZFZhbHVlV2l0aFZhbHVlOmFuZE93bmVyOl0pOgorICAg
ICAgICAqIEFQSS9KU1NjcmlwdC5tbToKKyAgICAgICAgKCtbSlNTY3JpcHQgc2NyaXB0T2ZUeXBl
OndpdGhTb3VyY2U6YW5kU291cmNlVVJMOmFuZEJ5dGVjb2RlQ2FjaGU6aW5WaXJ0dWFsTWFjaGlu
ZTplcnJvcjpdKToKKyAgICAgICAgKCtbSlNTY3JpcHQgc2NyaXB0T2ZUeXBlOm1lbW9yeU1hcHBl
ZEZyb21BU0NJSUZpbGU6d2l0aFNvdXJjZVVSTDphbmRCeXRlY29kZUNhY2hlOmluVmlydHVhbE1h
Y2hpbmU6ZXJyb3I6XSk6CisgICAgICAgICogQVBJL0pTVmlydHVhbE1hY2hpbmUubW06CisgICAg
ICAgICgrW0pTVmlydHVhbE1hY2hpbmUgdmlydHVhbE1hY2hpbmVXaXRoQ29udGV4dEdyb3VwUmVm
Ol0pOgorICAgICAgICAqIEFQSS9KU1dyYXBwZXJNYXAubW06CisgICAgICAgICgtW0pTV3JhcHBl
ck1hcCBjbGFzc0luZm9Gb3JDbGFzczpdKToKKyAgICAgICAgKC1bSlNXcmFwcGVyTWFwIG9iamNX
cmFwcGVyRm9ySlNWYWx1ZVJlZjppbkNvbnRleHQ6XSk6CisgICAgICAgICogaW5zcGVjdG9yL3Jl
bW90ZS9jb2NvYS9SZW1vdGVDb25uZWN0aW9uVG9UYXJnZXRDb2NvYS5tbToKKyAgICAgICAgKElu
c3BlY3Rvcjo6UmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0Ojpjb25uZWN0aW9uSWRlbnRpZmllciBj
b25zdCk6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldDo6ZGVz
dGluYXRpb24gY29uc3QpOgorICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vb2Jq
Y19nZW5lcmF0b3IucHk6CisgICAgICAgIChPYmpDR2VuZXJhdG9yLm9iamNfcHJvdG9jb2xfaW1w
b3J0X2V4cHJlc3Npb25fZm9yX3ZhcmlhYmxlKToKKwogMjAyMS0wMi0xNiAgQ2hyaXMgRHVtZXog
IDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFJlZHVjZSBleHBsaWNpdCB1c2FnZSBvZiBb
b2JqQyByZWxlYXNlXSBpbiBXZWJLaXQgZXZlbiBtb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjUwNTA2MDUw
MDllNTBkNDY5ZjA2MWY2Y2I0NGUxNDc3OGVlMzE0ZC4uM2FlMzJkYTkwYzM3MzM5YWQxMTZjMDAz
MGI5ZTRmMDcwMGY2MGE4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkxIEBACisyMDIxLTAyLTE1
ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgUmVkdWNlIGV4cGxp
Y2l0IHVzYWdlIG9mIFtvYmpDIGF1dG9yZWxlYXNlXSBpbiBXZWJLaXQKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMTkzMgorCisgICAgICAgIFJldmll
d2VkIGJ5IEdlb2ZmIEdhcmVuLgorCisgICAgICAgIFJlZHVjZSBleHBsaWNpdCB1c2FnZSBvZiBb
b2JqQyBhdXRvcmVsZWFzZV0gaW4gV2ViS2l0IGJ5IHVzaW5nIFJldGFpblB0cjw+LgorCisgICAg
ICAgICogYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1Mu
bW06CisgICAgICAgICgrW1dlYkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyIHRleHRNYXJrZXJXaXRo
VmlzaWJsZVBvc2l0aW9uOmNhY2hlOl0pOgorICAgICAgICAoK1tXZWJBY2Nlc3NpYmlsaXR5VGV4
dE1hcmtlciB0ZXh0TWFya2VyV2l0aENoYXJhY3Rlck9mZnNldDpjYWNoZTpdKToKKyAgICAgICAg
KCtbV2ViQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIgc3RhcnRPckVuZFRleHRNYXJrZXJGb3JSYW5n
ZTppc1N0YXJ0OmNhY2hlOl0pOgorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3Jh
cHBlciBfcHJlcGFyZUFjY2Vzc2liaWxpdHlDYWxsXSk6CisgICAgICAgICgtW1dlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyIGFycmF5T2ZUZXh0Rm9yVGV4dE1hcmtlcnM6YXR0cmlidXRlZDpd
KToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgX3N0cmluZ0Zyb21T
dGFydE1hcmtlcjp0b0VuZE1hcmtlcjphdHRyaWJ1dGVkOl0pOgorICAgICAgICAoLVtXZWJBY2Nl
c3NpYmlsaXR5T2JqZWN0V3JhcHBlciBuZXh0TWFya2VyRm9yQ2hhcmFjdGVyT2Zmc2V0Ol0pOgor
ICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBwcmV2aW91c01hcmtlckZv
ckNoYXJhY3Rlck9mZnNldDpdKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L21hYy9BWE9iamVj
dENhY2hlTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6dGV4dFJlcGxhY2VtZW50Q2hhbmdlRGlj
dGlvbmFyeSk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9i
amVjdFdyYXBwZXJCYXNlLm1tOgorICAgICAgICAoYXJyYXlSZW1vdmluZ05vblN1cHBvcnRlZFR5
cGVzKToKKyAgICAgICAgKGRpY3Rpb25hcnlSZW1vdmluZ05vblN1cHBvcnRlZFR5cGVzKToKKyAg
ICAgICAgKiBicmlkZ2Uvb2JqYy9XZWJTY3JpcHRPYmplY3QubW06CisgICAgICAgIChXZWJDb3Jl
OjpnZXRKU1dyYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlSlNXcmFwcGVyKToKKyAg
ICAgICAgKCtbV2ViVW5kZWZpbmVkIHVuZGVmaW5lZF0pOgorICAgICAgICAqIGJyaWRnZS90ZXN0
YmluZGluZ3MubW06CisgICAgICAgICgtW015Rmlyc3RJbnRlcmZhY2Ugc2V0SlNPYmplY3Q6XSk6
CisgICAgICAgICgtW015Rmlyc3RJbnRlcmZhY2UgY2FsbEpTT2JqZWN0OjpdKToKKyAgICAgICAg
KiBlZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW06CisgICAgICAgIChfc2hhZG93Rm9yU2hh
ZG93U3R5bGUpOgorICAgICAgICAoSFRNTENvbnZlcnRlcjo6X2FkZEF0dGFjaG1lbnRGb3JFbGVt
ZW50KToKKyAgICAgICAgKF9kYXRlRm9yU3RyaW5nKToKKyAgICAgICAgKGZpbGVXcmFwcGVyRm9y
VVJMKToKKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL1dlYkFyY2hpdmVSZXNvdXJjZVdlYlJlc291
cmNlSGFuZGxlci5tbToKKyAgICAgICAgKC1bV2ViQXJjaGl2ZVJlc291cmNlV2ViUmVzb3VyY2VI
YW5kbGVyIHJlc291cmNlRm9yRGF0YTpVUkw6TUlNRVR5cGU6dGV4dEVuY29kaW5nTmFtZTpmcmFt
ZU5hbWU6XSk6CisgICAgICAgICogZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2Eu
bW06CisgICAgICAgIChXZWJDb3JlOjphdHRyaWJ1dGVzRm9yQXR0cmlidXRlZFN0cmluZ0NvbnZl
cnNpb24pOgorICAgICAgICAqIGxvYWRlci9tYWMvTG9hZGVyTlNVUkxFeHRyYXMubW06CisgICAg
ICAgIChmaWxlbmFtZUJ5Rml4aW5nSWxsZWdhbENoYXJhY3RlcnMpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25PYmpDOjpjcmVhdGVBVkFzc2V0Rm9yVVJMKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3Mv
V2ViQVZQbGF5ZXJDb250cm9sbGVyLm1tOgorICAgICAgICAoLVtXZWJBVlBsYXllckNvbnRyb2xs
ZXIgaW5pdF0pOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9XZWJFdmVudC5tbToKKyAgICAgICAg
KC1bV2ViRXZlbnQgY2hhcmFjdGVyc10pOgorICAgICAgICAoLVtXZWJFdmVudCBjaGFyYWN0ZXJz
SWdub3JpbmdNb2RpZmllcnNdKToKKyAgICAgICAgKC1bV2ViRXZlbnQgaW5wdXRNYW5hZ2VySGlu
dF0pOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9XZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkLm1t
OgorICAgICAgICAoK1tXZWJJdGVtUHJvdmlkZXJMb2FkUmVzdWx0IGxvYWRSZXN1bHRXaXRoSXRl
bVByb3ZpZGVyOnR5cGVzVG9Mb2FkOl0pOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9XZWJWaWRl
b0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQubW06CisgICAgICAgICgtW1dlYlZpZGVvRnVsbHNj
cmVlbkNvbnRyb2xsZXIgZGlkRmluaXNoRnVsbHNjcmVlbjpdKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9pb3Mvd2FrL1dBS1ZpZXcubW06CisgICAgICAgICgrW1dBS1ZpZXcgX3dyYXBwZXJGb3JWaWV3
UmVmOl0pOgorICAgICAgICAoLVtXQUtWaWV3IGRlYWxsb2NdKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9tYWMvUGFzdGVib2FyZE1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OmZpbGVXcmFwcGVyKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvV2ViQ29yZU5TVVJMRXh0cmFzLm1tOgorICAgICAgICAo
V2ViQ29yZTo6VVJMQnlDYW5vbmljYWxpemluZ1VSTCk6CisgICAgICAgICogcGxhdGZvcm0vbWFj
L1dlYk5TQXR0cmlidXRlZFN0cmluZ0V4dHJhcy5tbToKKyAgICAgICAgKFdlYkNvcmU6OmF0dHJp
YnV0ZWRTdHJpbmdCeVN0cmlwcGluZ0F0dGFjaG1lbnRDaGFyYWN0ZXJzKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVxdWVzdC5oOgorICAgICAgICAqIHBsYXRmb3Jt
L25ldHdvcmsvY29jb2EvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ29jb2EubW06CisgICAgICAgIChX
ZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246Om5zQ29va2llU3RvcmFnZSBjb25zdCk6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RDb2NvYS5tbToK
KyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdDo6bnNVUkxSZXF1ZXN0IGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdDo6c2V0U3RvcmFnZVNlc3Npb24pOgor
ICAgICAgICAoV2ViQ29yZTo6Y29weVJlcXVlc3RXaXRoU3RvcmFnZVNlc3Npb24pOgorICAgICAg
ICAoV2ViQ29yZTo6Y2FjaGVkUmVzcG9uc2VGb3JSZXF1ZXN0KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW06CisgICAgICAgICgtW1dlYkNv
cmVOU1VSTFNlc3Npb24gZGF0YVRhc2tXaXRoUmVxdWVzdDpdKToKKyAgICAgICAgKC1bV2ViQ29y
ZU5TVVJMU2Vzc2lvbiBkYXRhVGFza1dpdGhVUkw6XSk6CisgICAgICAgICgtW1dlYkNvcmVOU1VS
TFNlc3Npb25EYXRhVGFzayBpbml0V2l0aFNlc3Npb246aWRlbnRpZmllcjpyZXF1ZXN0Ol0pOgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL0F1dGhlbnRpY2F0aW9uTWFjLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6bWFjKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNv
dXJjZUVycm9yTWFjLm1tOgorICAgICAgICAoZGljdGlvbmFyeVRoYXRDYW5Db2RlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUhhbmRsZU1hYy5tbToKKyAgICAgICAg
KFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpjcmVhdGVOU1VSTENvbm5lY3Rpb24pOgorICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVVUkxSZXNwb25zZS5tbToKKyAgICAgICAg
KFdlYkNvcmU6OnN5bnRoZXNpemVSZWRpcmVjdFJlc3BvbnNlSWZOZWNlc3NhcnkpOgorICAgICAg
ICAqIHBsYXRmb3JtL3RleHQvaW9zL0xvY2FsaXplZERhdGVDYWNoZS5oOgorICAgICAgICAqIHBs
YXRmb3JtL3RleHQvaW9zL0xvY2FsaXplZERhdGVDYWNoZS5tbToKKyAgICAgICAgKFdlYkNvcmU6
OkxvY2FsaXplZERhdGVDYWNoZTo6Zm9ybWF0dGVyRm9yRGF0ZVR5cGUpOgorICAgICAgICAoV2Vi
Q29yZTo6TG9jYWxpemVkRGF0ZUNhY2hlOjpjcmVhdGVGb3JtYXR0ZXJGb3JUeXBlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkxvY2FsaXplZERhdGVDYWNoZTo6Y2FsY3VsYXRlTWF4aW11bVdpZHRoKToK
KwogMjAyMS0wMi0xNiAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3Jn
PgogCiAgICAgICAgIEFkZCBBUEkgdG8gZGlzYWJsZSBIVFRQUyB1cGdyYWRlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4
IGViYjNkMzE1ODA5OTc2YzhkY2JkNDZjYzBhNDAwOTM4M2Q1NjNjM2EuLjNiZTZjNzA3YzBhMDdl
MDEzNmQxMjE4YmRmN2M4ZDViMzZjZTU5MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTE3IEBACisy
MDIxLTAyLTE1ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgUmVk
dWNlIGV4cGxpY2l0IHVzYWdlIG9mIFtvYmpDIGF1dG9yZWxlYXNlXSBpbiBXZWJLaXQKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMTkzMgorCisgICAg
ICAgIFJldmlld2VkIGJ5IEdlb2ZmIEdhcmVuLgorCisgICAgICAgIFJlZHVjZSBleHBsaWNpdCB1
c2FnZSBvZiBbb2JqQyBhdXRvcmVsZWFzZV0gaW4gV2ViS2l0IGJ5IHVzaW5nIFJldGFpblB0cjw+
LgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5t
bToKKyAgICAgICAgKGRvd25ncmFkZVJlcXVlc3QpOgorICAgICAgICAodXBkYXRlSWdub3JlU3Ry
aWN0VHJhbnNwb3J0U2VjdXJpdHlTZXR0aW5nSWZOZWNlc3NhcnkpOgorICAgICAgICAoV2ViS2l0
Ojpwcm94eURpY3Rpb25hcnkpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbkNvY29h
OjpOZXR3b3JrU2Vzc2lvbkNvY29hKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb25D
b2NvYTo6Y3JlYXRlV2ViU29ja2V0VGFzayk6CisgICAgICAgICogUGxhdGZvcm0vY29jb2EvV0tQ
YXltZW50QXV0aG9yaXphdGlvbkRlbGVnYXRlLm1tOgorICAgICAgICAoLVtXS1BheW1lbnRBdXRo
b3JpemF0aW9uRGVsZWdhdGUgY29tcGxldGVQYXltZW50TWV0aG9kU2VsZWN0aW9uOl0pOgorICAg
ICAgICAoLVtXS1BheW1lbnRBdXRob3JpemF0aW9uRGVsZWdhdGUgY29tcGxldGVTaGlwcGluZ0Nv
bnRhY3RTZWxlY3Rpb246XSk6CisgICAgICAgICgtW1dLUGF5bWVudEF1dGhvcml6YXRpb25EZWxl
Z2F0ZSBjb21wbGV0ZVNoaXBwaW5nTWV0aG9kU2VsZWN0aW9uOl0pOgorICAgICAgICAqIFNoYXJl
ZC9BUEkvQ29jb2EvV0tSZW1vdGVPYmplY3RDb2Rlci5tbToKKyAgICAgICAgKGVuY29kZU9iamVj
dCk6CisgICAgICAgICogU2hhcmVkL0FQSS9Db2NvYS9fV0tSZW1vdGVPYmplY3RJbnRlcmZhY2Uu
bW06CisgICAgICAgICgrW19XS1JlbW90ZU9iamVjdEludGVyZmFjZSByZW1vdGVPYmplY3RJbnRl
cmZhY2VXaXRoUHJvdG9jb2w6XSk6CisgICAgICAgICogU2hhcmVkL0NvY29hL1dLT2JqZWN0Lmg6
CisgICAgICAgIChXZWJLaXQ6OndyYXBwZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29j
b2EvTlNBdHRyaWJ1dGVkU3RyaW5nLm1tOgorICAgICAgICAoK1tfV0tBdHRyaWJ1dGVkU3RyaW5n
V2ViVmlld0NhY2hlIGNvbmZpZ3VyYXRpb25dKToKKyAgICAgICAgKCtbTlNBdHRyaWJ1dGVkU3Ry
aW5nIF9sb2FkRnJvbUhUTUxXaXRoT3B0aW9uczpjb250ZW50TG9hZGVyOmNvbXBsZXRpb25IYW5k
bGVyOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tCcm93c2luZ0NvbnRleHRD
b250cm9sbGVyLm1tOgorICAgICAgICAobWFrZVBvbGljeURlY2lzaW9uQmxvY2spOgorICAgICAg
ICAoc2V0VXBQYWdlUG9saWN5Q2xpZW50KToKKyAgICAgICAgKC1bV0tCcm93c2luZ0NvbnRleHRD
b250cm9sbGVyIGhhbmRsZV0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tDb250
ZW50V29ybGQubW06CisgICAgICAgICgtW1dLQ29udGVudFdvcmxkIF91c2VyQ29udGVudFdvcmxk
XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0ZyYW1lSW5mby5tbToKKyAgICAg
ICAgKC1bV0tGcmFtZUluZm8gc2VjdXJpdHlPcmlnaW5dKToKKyAgICAgICAgKC1bV0tGcmFtZUlu
Zm8gd2ViVmlld10pOgorICAgICAgICAoLVtXS0ZyYW1lSW5mbyBfaGFuZGxlXSk6CisgICAgICAg
ICgtW1dLRnJhbWVJbmZvIF9wYXJlbnRGcmFtZUhhbmRsZV0pOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tVc2VyU2NyaXB0Lm1tOgorICAgICAgICAoLVtXS1VzZXJTY3JpcHQgX3Vz
ZXJDb250ZW50V29ybGRdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmll
dy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IGNvbmZpZ3VyYXRpb25dKToKKyAgICAgICAgKC1b
V0tXZWJWaWV3IGZpbmRTdHJpbmc6d2l0aENvbmZpZ3VyYXRpb246Y29tcGxldGlvbkhhbmRsZXI6
XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfZnJhbWVzOl0pOgorICAgICAgICAoLVtXS1dlYlZp
ZXcgX2hhbmRsZV0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3Rha2VQREZTbmFwc2hvdFdpdGhD
b25maWd1cmF0aW9uOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcg
X3Nlc3Npb25TdGF0ZV0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3Nlc3Npb25TdGF0ZVdpdGhG
aWx0ZXI6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfZ2V0Q29udGVudHNBc0F0dHJpYnV0ZWRT
dHJpbmdXaXRoQ29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYnBhZ2VQcmVmZXJlbmNlcy5tbToKKyAgICAgICAgKCtbV0tXZWJwYWdlUHJlZmVy
ZW5jZXMgZGVmYXVsdFByZWZlcmVuY2VzXSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYnNpdGVEYXRhUmVjb3JkLm1tOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhUmVjb3Jk
IF9kYXRhU2l6ZV0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQWN0aXZhdGVk
RWxlbWVudEluZm8ubW06CisgICAgICAgICgrW19XS0FjdGl2YXRlZEVsZW1lbnRJbmZvIGFjdGl2
YXRlZEVsZW1lbnRJbmZvV2l0aEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uOnVzZXJJ
bmZvOl0pOgorICAgICAgICAoLVtfV0tBY3RpdmF0ZWRFbGVtZW50SW5mbyBpbWFnZV0pOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXR0YWNobWVudC5tbToKKyAgICAgICAgKC1b
X1dLQXR0YWNobWVudCBpbmZvXSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tB
dXRvbWF0aW9uU2Vzc2lvbi5tbToKKyAgICAgICAgKC1bX1dLQXV0b21hdGlvblNlc3Npb24gaW5p
dF0pOgorICAgICAgICAoLVtfV0tBdXRvbWF0aW9uU2Vzc2lvbiBjb25maWd1cmF0aW9uXSk6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZC5tbToKKyAgICAgICAgKCtb
X1dLRG93bmxvYWQgZG93bmxvYWRXaXRoRG93bmxvYWQ6XSk6CisgICAgICAgICgtW19XS0Rvd25s
b2FkIG9yaWdpbmF0aW5nV2ViVmlld10pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLRWxlbWVudEFjdGlvbi5tbToKKyAgICAgICAgKCtbX1dLRWxlbWVudEFjdGlvbiBlbGVtZW50
QWN0aW9uV2l0aFRpdGxlOmFjdGlvbkhhbmRsZXI6XSk6CisgICAgICAgICgrW19XS0VsZW1lbnRB
Y3Rpb24gX2VsZW1lbnRBY3Rpb25XaXRoVHlwZTp0aXRsZTphY3Rpb25IYW5kbGVyOl0pOgorICAg
ICAgICAoK1tfV0tFbGVtZW50QWN0aW9uIF9lbGVtZW50QWN0aW9uV2l0aFR5cGU6Y3VzdG9tVGl0
bGU6YXNzaXN0YW50Ol0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRnJhbWVU
cmVlTm9kZS5tbToKKyAgICAgICAgKC1bX1dLRnJhbWVUcmVlTm9kZSBzZWN1cml0eU9yaWdpbl0p
OgorICAgICAgICAoLVtfV0tGcmFtZVRyZWVOb2RlIHdlYlZpZXddKToKKyAgICAgICAgKC1bX1dL
RnJhbWVUcmVlTm9kZSBfaGFuZGxlXSk6CisgICAgICAgICgtW19XS0ZyYW1lVHJlZU5vZGUgX3Bh
cmVudEZyYW1lSGFuZGxlXSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNw
ZWN0b3IubW06CisgICAgICAgICgtW19XS0luc3BlY3RvciByZWdpc3RlckV4dGVuc2lvbldpdGhJ
RDpkaXNwbGF5TmFtZTpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0NvY29hL19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5tbToKKyAgICAgICAgKC1bX1dL
UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIGN1c3RvbUNsYXNzZXNGb3JQYXJhbWV0ZXJDb2Rlcl0p
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUmVtb3RlV2ViSW5zcGVjdG9yVmll
d0NvbnRyb2xsZXIubW06CisgICAgICAgICgtW19XS1JlbW90ZVdlYkluc3BlY3RvclZpZXdDb250
cm9sbGVyIHJlZ2lzdGVyRXh0ZW5zaW9uV2l0aElEOmRpc3BsYXlOYW1lOmNvbXBsZXRpb25IYW5k
bGVyOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVGV4dE1hbmlwdWxhdGlv
blRva2VuLm1tOgorICAgICAgICAoLVtfV0tUZXh0TWFuaXB1bGF0aW9uVG9rZW4gX2Rlc2NyaXB0
aW9uUHJlc2VydmluZ1ByaXZhY3k6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9f
V0tVc2VyQ29udGVudEV4dGVuc2lvblN0b3JlLm1tOgorICAgICAgICAoK1tfV0tVc2VyQ29udGVu
dEV4dGVuc2lvblN0b3JlIGRlZmF1bHRTdG9yZV0pOgorICAgICAgICAoK1tfV0tVc2VyQ29udGVu
dEV4dGVuc2lvblN0b3JlIHN0b3JlV2l0aFVSTDpdKToKKyAgICAgICAgKC1bX1dLVXNlckNvbnRl
bnRFeHRlbnNpb25TdG9yZSBjb21waWxlQ29udGVudEV4dGVuc2lvbkZvcklkZW50aWZpZXI6ZW5j
b2RlZENvbnRlbnRFeHRlbnNpb246Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW19X
S1VzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmUgbG9va3VwQ29udGVudEV4dGVuc2lvbkZvcklkZW50
aWZpZXI6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2Nv
YS9fV0tVc2VyQ29udGVudFdvcmxkLm1tOgorICAgICAgICAoK1tfV0tVc2VyQ29udGVudFdvcmxk
IHdvcmxkV2l0aE5hbWU6XSk6CisgICAgICAgICgrW19XS1VzZXJDb250ZW50V29ybGQgbm9ybWFs
V29ybGRdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdJT1MubW06Cisg
ICAgICAgICgtW1dLV2ViVmlldyBfdWlFdmVudEF0dHJpYnV0aW9uXSk6CisgICAgICAgICgtW1dL
V2ViVmlldyBfcmV0YWluQWN0aXZlRm9jdXNlZFN0YXRlXSk6CisgICAgICAgICogVUlQcm9jZXNz
L0F1dG9tYXRpb24vaW9zL1dlYkF1dG9tYXRpb25TZXNzaW9uSU9TLm1tOgorICAgICAgICAoV2Vi
S2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cGxhdGZvcm1TaW11bGF0ZUtleWJvYXJkSW50ZXJh
Y3Rpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9BdXRvbWF0aW9uQ2xpZW50Lm1tOgor
ICAgICAgICAoV2ViS2l0OjpBdXRvbWF0aW9uQ2xpZW50OjpyZXF1ZXN0QXV0b21hdGlvblNlc3Np
b24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9TYWZlQnJvd3NpbmdXYXJuaW5nQ29jb2Eu
bW06CisgICAgICAgIChXZWJLaXQ6OmFkZExpbmtBbmRSZXBsYWNlKToKKyAgICAgICAgKFdlYktp
dDo6c2FmZUJyb3dzaW5nRGV0YWlsc1RleHQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9T
eXN0ZW1QcmV2aWV3Q29udHJvbGxlckNvY29hLm1tOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2Nv
YS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkubW06CisgICAgICAgICgtW1dLTGF5ZXJIb3N0
VmlldyBtYWtlQmFja2luZ0xheWVyXSk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dLQ29u
dGFjdFBpY2tlci5tbToKKyAgICAgICAgKC1bV0tDb250YWN0UGlja2VyIF9jb250YWN0c0Zyb21K
U0NvbnRhY3RzOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XS1NhZmVCcm93c2luZ1dh
cm5pbmcubW06CisgICAgICAgIChtYWtlQnV0dG9uKToKKyAgICAgICAgKG1ha2VMYWJlbCk6Cisg
ICAgICAgICgtW1dLU2FmZUJyb3dzaW5nV2FybmluZyBhZGRDb250ZW50XSk6CisgICAgICAgICgt
W1dLU2FmZUJyb3dzaW5nV2FybmluZyBzaG93RGV0YWlsc0NsaWNrZWRdKToKKyAgICAgICAgKC1b
V0tTYWZlQnJvd3NpbmdUZXh0VmlldyBpbml0V2l0aEF0dHJpYnV0ZWRTdHJpbmc6Zm9yV2Fybmlu
ZzpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW06CisgICAgICAg
IChXZWJLaXQ6OldlYlZpZXdJbXBsOjpmdWxsU2NyZWVuV2luZG93KToKKwogMjAyMS0wMi0xNiAg
QWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIEFk
ZCBBUEkgdG8gZGlzYWJsZSBIVFRQUyB1cGdyYWRlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL0pTQ29udGV4dC5tbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlND
b250ZXh0Lm1tCmluZGV4IDc0YjIzNDQ5ZTY5YTljMzllMTg3MjI3ZGM4YzY5N2FmYjQ5MjYwYmQu
LjZiZWIyNWJmNmFlZWQ3NThhMjA2MTE3Y2FlNzE4Yjc4YTAwMjNhMzcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0Lm1tCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvSlNDb250ZXh0Lm1tCkBAIC02OCw3ICs2OCw3IEBAIC0gKHZvaWQpZW5zdXJl
V3JhcHBlck1hcAogCiAtIChpbnN0YW5jZXR5cGUpaW5pdAogewotICAgIHJldHVybiBbc2VsZiBp
bml0V2l0aFZpcnR1YWxNYWNoaW5lOltbW0pTVmlydHVhbE1hY2hpbmUgYWxsb2NdIGluaXRdIGF1
dG9yZWxlYXNlXV07CisgICAgcmV0dXJuIFtzZWxmIGluaXRXaXRoVmlydHVhbE1hY2hpbmU6YWRv
cHROUyhbW0pTVmlydHVhbE1hY2hpbmUgYWxsb2NdIGluaXRdKS5hdXRvcmVsZWFzZSgpXTsKIH0K
IAogLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoVmlydHVhbE1hY2hpbmU6KEpTVmlydHVhbE1hY2hp
bmUgKil2aXJ0dWFsTWFjaGluZQpAQCAtNDA4LDcgKzQwOCw3IEBAICsgKEpTQ29udGV4dCAqKWNv
bnRleHRXaXRoSlNHbG9iYWxDb250ZXh0UmVmOihKU0dsb2JhbENvbnRleHRSZWYpZ2xvYmFsQ29u
dGV4dAogICAgIEpTVmlydHVhbE1hY2hpbmUgKnZpcnR1YWxNYWNoaW5lID0gW0pTVmlydHVhbE1h
Y2hpbmUgdmlydHVhbE1hY2hpbmVXaXRoQ29udGV4dEdyb3VwUmVmOnRvUmVmKCZ0b0pTKGdsb2Jh
bENvbnRleHQpLT52bSgpKV07CiAgICAgSlNDb250ZXh0ICpjb250ZXh0ID0gW3ZpcnR1YWxNYWNo
aW5lIGNvbnRleHRGb3JHbG9iYWxDb250ZXh0UmVmOmdsb2JhbENvbnRleHRdOwogICAgIGlmICgh
Y29udGV4dCkKLSAgICAgICAgY29udGV4dCA9IFtbW0pTQ29udGV4dCBhbGxvY10gaW5pdFdpdGhH
bG9iYWxDb250ZXh0UmVmOmdsb2JhbENvbnRleHRdIGF1dG9yZWxlYXNlXTsKKyAgICAgICAgY29u
dGV4dCA9IGFkb3B0TlMoW1tKU0NvbnRleHQgYWxsb2NdIGluaXRXaXRoR2xvYmFsQ29udGV4dFJl
ZjpnbG9iYWxDb250ZXh0XSkuYXV0b3JlbGVhc2UoKTsKICAgICByZXR1cm4gY29udGV4dDsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU01hbmFnZWRWYWx1ZS5t
bSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNNYW5hZ2VkVmFsdWUubW0KaW5kZXggNjM4
NjlhMDM0MTQwMDNkYzg3MDFmNTIzYzUwOWNiZWJlY2RkOTZhYy4uODUwZmFiYzZiMzllZWVmYTBl
MjQwNWQ5MzdkMzk0MjU0YTk2YjIzZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU01hbmFnZWRWYWx1ZS5tbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pT
TWFuYWdlZFZhbHVlLm1tCkBAIC02MSwxNCArNjEsMTQgQEAgQGltcGxlbWVudGF0aW9uIEpTTWFu
YWdlZFZhbHVlIHsKIAogKyAoSlNNYW5hZ2VkVmFsdWUgKiltYW5hZ2VkVmFsdWVXaXRoVmFsdWU6
KEpTVmFsdWUgKil2YWx1ZQogewotICAgIHJldHVybiBbW1tzZWxmIGFsbG9jXSBpbml0V2l0aFZh
bHVlOnZhbHVlXSBhdXRvcmVsZWFzZV07CisgICAgcmV0dXJuIGFkb3B0TlMoW1tzZWxmIGFsbG9j
XSBpbml0V2l0aFZhbHVlOnZhbHVlXSkuYXV0b3JlbGVhc2UoKTsKIH0KIAogKyAoSlNNYW5hZ2Vk
VmFsdWUgKiltYW5hZ2VkVmFsdWVXaXRoVmFsdWU6KEpTVmFsdWUgKil2YWx1ZSBhbmRPd25lcjoo
aWQpb3duZXIKIHsKLSAgICBKU01hbmFnZWRWYWx1ZSAqbWFuYWdlZFZhbHVlID0gW1tzZWxmIGFs
bG9jXSBpbml0V2l0aFZhbHVlOnZhbHVlXTsKLSAgICBbdmFsdWUuY29udGV4dC52aXJ0dWFsTWFj
aGluZSBhZGRNYW5hZ2VkUmVmZXJlbmNlOm1hbmFnZWRWYWx1ZSB3aXRoT3duZXI6b3duZXJdOwot
ICAgIHJldHVybiBbbWFuYWdlZFZhbHVlIGF1dG9yZWxlYXNlXTsKKyAgICBhdXRvIG1hbmFnZWRW
YWx1ZSA9IGFkb3B0TlMoW1tzZWxmIGFsbG9jXSBpbml0V2l0aFZhbHVlOnZhbHVlXSk7CisgICAg
W3ZhbHVlLmNvbnRleHQudmlydHVhbE1hY2hpbmUgYWRkTWFuYWdlZFJlZmVyZW5jZTptYW5hZ2Vk
VmFsdWUuZ2V0KCkgd2l0aE93bmVyOm93bmVyXTsKKyAgICByZXR1cm4gbWFuYWdlZFZhbHVlLmF1
dG9yZWxlYXNlKCk7CiB9CiAKIC0gKGluc3RhbmNldHlwZSlpbml0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTU2NyaXB0Lm1tIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU1NjcmlwdC5tbQppbmRleCA5ZTQxNDU3MTI0YmYxNDNlYTQxNzYxNWM0OTgyYTUxOWMx
ZDkzYTdlLi4yM2Y1OTE0MzNlYjdlMjI3ODA5MTJjNDgwYzQ0ODZiNjM0NzljM2QwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTU2NyaXB0Lm1tCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvSlNTY3JpcHQubW0KQEAgLTExMCwxNCArMTEwLDE0IEBAICsgKGlu
c3RhbmNldHlwZSlzY3JpcHRPZlR5cGU6KEpTU2NyaXB0VHlwZSl0eXBlIHdpdGhTb3VyY2U6KE5T
U3RyaW5nICopc291cmNlIGFuCiAgICAgaWYgKCF2YWxpZGF0ZUJ5dGVjb2RlQ2FjaGVQYXRoKGNh
Y2hlUGF0aCwgZXJyb3IpKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgSlNTY3JpcHQgKnJl
c3VsdCA9IFtbW0pTU2NyaXB0IGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07CisgICAgYXV0byBy
ZXN1bHQgPSBhZG9wdE5TKFtbSlNTY3JpcHQgYWxsb2NdIGluaXRdKTsKICAgICByZXN1bHQtPm1f
dmlydHVhbE1hY2hpbmUgPSB2bTsKICAgICByZXN1bHQtPm1fdHlwZSA9IHR5cGU7CiAgICAgcmVz
dWx0LT5tX3NvdXJjZSA9IHNvdXJjZTsKICAgICByZXN1bHQtPm1fc291cmNlVVJMID0gc291cmNl
VVJMOwogICAgIHJlc3VsdC0+bV9jYWNoZVBhdGggPSBjYWNoZVBhdGg7CiAgICAgW3Jlc3VsdCBy
ZWFkQ2FjaGVdOwotICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJuIHJlc3VsdC5hdXRvcmVs
ZWFzZSgpOwogfQogCiArIChpbnN0YW5jZXR5cGUpc2NyaXB0T2ZUeXBlOihKU1NjcmlwdFR5cGUp
dHlwZSBtZW1vcnlNYXBwZWRGcm9tQVNDSUlGaWxlOihOU1VSTCAqKWZpbGVQYXRoIHdpdGhTb3Vy
Y2VVUkw6KE5TVVJMICopc291cmNlVVJMIGFuZEJ5dGVjb2RlQ2FjaGU6KE5TVVJMICopY2FjaGVQ
YXRoIGluVmlydHVhbE1hY2hpbmU6KEpTVmlydHVhbE1hY2hpbmUgKil2bSBlcnJvcjoob3V0IE5T
RXJyb3IgKiopZXJyb3IKQEAgLTEzOCw3ICsxMzgsNyBAQCArIChpbnN0YW5jZXR5cGUpc2NyaXB0
T2ZUeXBlOihKU1NjcmlwdFR5cGUpdHlwZSBtZW1vcnlNYXBwZWRGcm9tQVNDSUlGaWxlOihOU1VS
TAogICAgIGlmICghY2hhcmFjdGVyc0FyZUFsbEFTQ0lJKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
TENoYXIqPihmaWxlRGF0YS5kYXRhKCkpLCBmaWxlRGF0YS5zaXplKCkpKQogICAgICAgICByZXR1
cm4gY3JlYXRlRXJyb3IoW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJOb3QgYWxsIGNoYXJh
Y3RlcnMgaW4gZmlsZSBhdCAlQCBhcmUgQVNDSUkuIiwgc3RhdGljX2Nhc3Q8TlNTdHJpbmcgKj4o
c3lzdGVtUGF0aCldLCBlcnJvcik7CiAKLSAgICBKU1NjcmlwdCAqcmVzdWx0ID0gW1tbSlNTY3Jp
cHQgYWxsb2NdIGluaXRdIGF1dG9yZWxlYXNlXTsKKyAgICBhdXRvIHJlc3VsdCA9IGFkb3B0TlMo
W1tKU1NjcmlwdCBhbGxvY10gaW5pdF0pOwogICAgIHJlc3VsdC0+bV92aXJ0dWFsTWFjaGluZSA9
IHZtOwogICAgIHJlc3VsdC0+bV90eXBlID0gdHlwZTsKICAgICByZXN1bHQtPm1fc291cmNlID0g
U3RyaW5nKFN0cmluZ0ltcGw6OmNyZWF0ZVdpdGhvdXRDb3B5aW5nKGJpdHdpc2VfY2FzdDxjb25z
dCBMQ2hhcio+KGZpbGVEYXRhLmRhdGEoKSksIGZpbGVEYXRhLnNpemUoKSkpOwpAQCAtMTQ2LDcg
KzE0Niw3IEBAICsgKGluc3RhbmNldHlwZSlzY3JpcHRPZlR5cGU6KEpTU2NyaXB0VHlwZSl0eXBl
IG1lbW9yeU1hcHBlZEZyb21BU0NJSUZpbGU6KE5TVVJMCiAgICAgcmVzdWx0LT5tX3NvdXJjZVVS
TCA9IHNvdXJjZVVSTDsKICAgICByZXN1bHQtPm1fY2FjaGVQYXRoID0gY2FjaGVQYXRoOwogICAg
IFtyZXN1bHQgcmVhZENhY2hlXTsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiByZXN1
bHQuYXV0b3JlbGVhc2UoKTsKIH0KIAogLSAodm9pZClyZWFkQ2FjaGUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWaXJ0dWFsTWFjaGluZS5tbSBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvSlNWaXJ0dWFsTWFjaGluZS5tbQppbmRleCAxN2IzMmE2NjY3MGIwMDU0
NjFkYWY3YWYxN2FhMTcxY2U1YjhhOTkxLi5hZDJiMDViYzc1YWMzZTBjOTg0ZTFhNjdlZWRlMmU1
ZDcxMzc1YjM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmlydHVh
bE1hY2hpbmUubW0KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZpcnR1YWxNYWNo
aW5lLm1tCkBAIC0yMzYsNyArMjM2LDcgQEAgKyAoSlNWaXJ0dWFsTWFjaGluZSAqKXZpcnR1YWxN
YWNoaW5lV2l0aENvbnRleHRHcm91cFJlZjooSlNDb250ZXh0R3JvdXBSZWYpZ3JvdXAKIHsKICAg
ICBKU1ZpcnR1YWxNYWNoaW5lICp2aXJ0dWFsTWFjaGluZSA9IFtKU1ZNV3JhcHBlckNhY2hlIHdy
YXBwZXJGb3JKU0NvbnRleHRHcm91cFJlZjpncm91cF07CiAgICAgaWYgKCF2aXJ0dWFsTWFjaGlu
ZSkKLSAgICAgICAgdmlydHVhbE1hY2hpbmUgPSBbW1tKU1ZpcnR1YWxNYWNoaW5lIGFsbG9jXSBp
bml0V2l0aENvbnRleHRHcm91cFJlZjpncm91cF0gYXV0b3JlbGVhc2VdOworICAgICAgICB2aXJ0
dWFsTWFjaGluZSA9IGFkb3B0TlMoW1tKU1ZpcnR1YWxNYWNoaW5lIGFsbG9jXSBpbml0V2l0aENv
bnRleHRHcm91cFJlZjpncm91cF0pLmF1dG9yZWxlYXNlKCk7CiAgICAgcmV0dXJuIHZpcnR1YWxN
YWNoaW5lOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTV3Jh
cHBlck1hcC5tbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNXcmFwcGVyTWFwLm1tCmlu
ZGV4IDE0NTU2YjU3NzEzZTczMGFlNTJiZGY5NTJlNjY5MTQyMDg1OWViMTguLjg1MmZiOTI5M2Y2
MGJkOWI3ZTQ2YzNlYzc1MGYzMjI5MTE1Y2VkMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvSlNXcmFwcGVyTWFwLm1tCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNXcmFwcGVyTWFwLm1tCkBAIC02MzUsNyArNjM1LDcgQEAgLSAoSlNPYmpDQ2xhc3NJbmZv
KiljbGFzc0luZm9Gb3JDbGFzczooQ2xhc3MpY2xzCiAgICAgICAgICAgICByZXR1cm4gbV9jbGFz
c01hcC5nZXQoKVsoaWQpY2xzXSA9IFtzZWxmIGNsYXNzSW5mb0ZvckNsYXNzOmNsYXNzX2dldFN1
cGVyY2xhc3MoY2xzKV07CiAgICAgfQogCi0gICAgcmV0dXJuIG1fY2xhc3NNYXAuZ2V0KClbKGlk
KWNsc10gPSBbW1tKU09iakNDbGFzc0luZm8gYWxsb2NdIGluaXRGb3JDbGFzczpjbHNdIGF1dG9y
ZWxlYXNlXTsKKyAgICByZXR1cm4gbV9jbGFzc01hcC5nZXQoKVsoaWQpY2xzXSA9IGFkb3B0TlMo
W1tKU09iakNDbGFzc0luZm8gYWxsb2NdIGluaXRGb3JDbGFzczpjbHNdKS5hdXRvcmVsZWFzZSgp
OwogfQogCiAtIChKU1ZhbHVlICopanNXcmFwcGVyRm9yT2JqZWN0OihpZClvYmplY3QgaW5Db250
ZXh0OihKU0NvbnRleHQgKiljb250ZXh0CkBAIC02NjYsNyArNjY2LDcgQEAgLSAoSlNWYWx1ZSAq
KW9iamNXcmFwcGVyRm9ySlNWYWx1ZVJlZjooSlNWYWx1ZVJlZil2YWx1ZSBpbkNvbnRleHQ6Y29u
dGV4dAogICAgIEFTU0VSVCh0b0pTR2xvYmFsT2JqZWN0KFtjb250ZXh0IEpTR2xvYmFsQ29udGV4
dFJlZl0pLT53cmFwcGVyTWFwKCkgPT0gc2VsZik7CiAgICAgSlNWYWx1ZSAqd3JhcHBlciA9IChf
X2JyaWRnZSBKU1ZhbHVlICopTlNNYXBHZXQobV9jYWNoZWRPYmpDV3JhcHBlcnMuZ2V0KCksIHZh
bHVlKTsKICAgICBpZiAoIXdyYXBwZXIpIHsKLSAgICAgICAgd3JhcHBlciA9IFtbW0pTVmFsdWUg
YWxsb2NdIGluaXRXaXRoVmFsdWU6dmFsdWUgaW5Db250ZXh0OmNvbnRleHRdIGF1dG9yZWxlYXNl
XTsKKyAgICAgICAgd3JhcHBlciA9IGFkb3B0TlMoW1tKU1ZhbHVlIGFsbG9jXSBpbml0V2l0aFZh
bHVlOnZhbHVlIGluQ29udGV4dDpjb250ZXh0XSkuYXV0b3JlbGVhc2UoKTsKICAgICAgICAgTlNN
YXBJbnNlcnQobV9jYWNoZWRPYmpDV3JhcHBlcnMuZ2V0KCksIHZhbHVlLCAoX19icmlkZ2Ugdm9p
ZCopd3JhcHBlcik7CiAgICAgfQogICAgIHJldHVybiB3cmFwcGVyOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvY29jb2EvUmVtb3RlQ29ubmVjdGlv
blRvVGFyZ2V0Q29jb2EubW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90
ZS9jb2NvYS9SZW1vdGVDb25uZWN0aW9uVG9UYXJnZXRDb2NvYS5tbQppbmRleCAxMjIxMTkwMzE4
OTgxNzkzZDgxMTAwYzBkYTZhZDhiOTJiNGQzMGMyLi41MTBmNDliNmQ3NGU3MmI5MjEzMjZmNTZm
MzZhZTdiZDdhOWI1NzIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3JlbW90ZS9jb2NvYS9SZW1vdGVDb25uZWN0aW9uVG9UYXJnZXRDb2NvYS5tbQorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9jb2NvYS9SZW1vdGVDb25uZWN0
aW9uVG9UYXJnZXRDb2NvYS5tbQpAQCAtMTI4LDEyICsxMjgsMTIgQEAgT3B0aW9uYWw8VGFyZ2V0
SUQ+IFJlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldDo6dGFyZ2V0SWRlbnRpZmllcigpIGNvbnN0CiAK
IE5TU3RyaW5nICpSZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQ6OmNvbm5lY3Rpb25JZGVudGlmaWVy
KCkgY29uc3QKIHsKLSAgICByZXR1cm4gW1ttX2Nvbm5lY3Rpb25JZGVudGlmaWVyIGNvcHldIGF1
dG9yZWxlYXNlXTsKKyAgICByZXR1cm4gYWRvcHROUyhbbV9jb25uZWN0aW9uSWRlbnRpZmllciBj
b3B5XSkuYXV0b3JlbGVhc2UoKTsKIH0KIAogTlNTdHJpbmcgKlJlbW90ZUNvbm5lY3Rpb25Ub1Rh
cmdldDo6ZGVzdGluYXRpb24oKSBjb25zdAogewotICAgIHJldHVybiBbW21fZGVzdGluYXRpb24g
Y29weV0gYXV0b3JlbGVhc2VdOworICAgIHJldHVybiBhZG9wdE5TKFttX2Rlc3RpbmF0aW9uIGNv
cHldKS5hdXRvcmVsZWFzZSgpOwogfQogCiB2b2lkIFJlbW90ZUNvbm5lY3Rpb25Ub1RhcmdldDo6
ZGlzcGF0Y2hBc3luY09uVGFyZ2V0KEZ1bmN0aW9uPHZvaWQgKCk+JiYgY2FsbGJhY2spCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9v
YmpjX2dlbmVyYXRvci5weSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0
cy9jb2RlZ2VuL29iamNfZ2VuZXJhdG9yLnB5CmluZGV4IGEyZDM3NmRmM2I5NDNkZGM5MTY3OGJi
YmE1YTJlZDNmMDJlMzcwYzAuLjQ5NjQzNDIwNTE0NzhlYmIyOTNhM2ExODg4NTAxNGJkMTE3MmNi
MGMgMTAwNzU1Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9j
b2RlZ2VuL29iamNfZ2VuZXJhdG9yLnB5CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL29iamNfZ2VuZXJhdG9yLnB5CkBAIC00MDUsNyArNDA1LDcg
QEAgY2xhc3MgT2JqQ0dlbmVyYXRvcihHZW5lcmF0b3IpOgogICAgICAgICAgICAgcmV0dXJuIHZh
cl9uYW1lCiAgICAgICAgIGlmIGNhdGVnb3J5ID09IE9iakNUeXBlQ2F0ZWdvcnkuT2JqZWN0Ogog
ICAgICAgICAgICAgb2JqY19jbGFzcyA9IHNlbGYub2JqY19jbGFzc19mb3JfdHlwZSh2YXJfdHlw
ZSkKLSAgICAgICAgICAgIHJldHVybiAnW1tbJXMgYWxsb2NdIGluaXRXaXRoSlNPTk9iamVjdDol
c10gYXV0b3JlbGVhc2VdJyAlIChvYmpjX2NsYXNzLCB2YXJfbmFtZSkKKyAgICAgICAgICAgIHJl
dHVybiAnYWRvcHROUyhbWyVzIGFsbG9jXSBpbml0V2l0aEpTT05PYmplY3Q6JXNdKS5hdXRvcmVs
ZWFzZSgpJyAlIChvYmpjX2NsYXNzLCB2YXJfbmFtZSkKICAgICAgICAgaWYgY2F0ZWdvcnkgPT0g
T2JqQ1R5cGVDYXRlZ29yeS5BcnJheToKICAgICAgICAgICAgIG9iamNfY2xhc3MgPSBzZWxmLm9i
amNfY2xhc3NfZm9yX3R5cGUodmFyX3R5cGUuZWxlbWVudF90eXBlKQogICAgICAgICAgICAgaWYg
b2JqY19jbGFzcyA9PSAnTlNTdHJpbmcnOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2NvbW1hbmQtdGFyZ2V0VHlwZS1t
YXRjaGluZy1kb21haW4tZGVidWdnYWJsZVR5cGUuanNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvY29tbWFuZC10YXJnZXRU
eXBlLW1hdGNoaW5nLWRvbWFpbi1kZWJ1Z2dhYmxlVHlwZS5qc29uLXJlc3VsdAppbmRleCAzMmVi
MzU0NzgzOWEzNDhlNjgyYjNlY2UxYmE2MGRlNjI0NzIwODg0Li40N2I3MTY4Njc4ZGJjYTc1NmMx
ZjYyM2E5OWE2YmJmYzgzODFlNDY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvY29tbWFuZC10YXJnZXRUeXBlLW1hdGNo
aW5nLWRvbWFpbi1kZWJ1Z2dhYmxlVHlwZS5qc29uLXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvY29tbWFuZC10YXJnZXRU
eXBlLW1hdGNoaW5nLWRvbWFpbi1kZWJ1Z2dhYmxlVHlwZS5qc29uLXJlc3VsdApAQCAtNjY5LDgg
KzY2OSw4IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiBAaW1wbGVtZW50YXRpb24gVGVz
dFByb3RvY29sQ29uZmlndXJhdGlvbgogewogICAgIEF1Z21lbnRhYmxlSW5zcGVjdG9yQ29udHJv
bGxlciogX2NvbnRyb2xsZXI7Ci0gICAgaWQ8VGVzdFByb3RvY29sRG9tYWluRG9tYWluSGFuZGxl
cj4gX2RvbWFpbkhhbmRsZXI7Ci0gICAgVGVzdFByb3RvY29sRG9tYWluRG9tYWluRXZlbnREaXNw
YXRjaGVyICpfZG9tYWluRXZlbnREaXNwYXRjaGVyOworICAgIFJldGFpblB0cjxpZDxUZXN0UHJv
dG9jb2xEb21haW5Eb21haW5IYW5kbGVyPj4gX2RvbWFpbkhhbmRsZXI7CisgICAgUmV0YWluUHRy
PFRlc3RQcm90b2NvbERvbWFpbkRvbWFpbkV2ZW50RGlzcGF0Y2hlcj4gX2RvbWFpbkV2ZW50RGlz
cGF0Y2hlcjsKIH0KIAogLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoQ29udHJvbGxlcjooQXVnbWVu
dGFibGVJbnNwZWN0b3JDb250cm9sbGVyKiljb250cm9sbGVyCkBAIC02ODMsMjAgKzY4MywxMiBA
QCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogICAgIHJldHVybiBzZWxmOwogfQogCi0tICh2
b2lkKWRlYWxsb2MKLXsKLSAgICBbX2RvbWFpbkhhbmRsZXIgcmVsZWFzZV07Ci0gICAgW19kb21h
aW5FdmVudERpc3BhdGNoZXIgcmVsZWFzZV07Ci0gICAgW3N1cGVyIGRlYWxsb2NdOwotfQotCiAt
ICh2b2lkKXNldERvbWFpbkhhbmRsZXI6KGlkPFRlc3RQcm90b2NvbERvbWFpbkRvbWFpbkhhbmRs
ZXI+KWhhbmRsZXIKIHsKICAgICBpZiAoaGFuZGxlciA9PSBfZG9tYWluSGFuZGxlcikKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgW19kb21haW5IYW5kbGVyIHJlbGVhc2VdOwotICAgIF9kb21haW5I
YW5kbGVyID0gW2hhbmRsZXIgcmV0YWluXTsKKyAgICBfZG9tYWluSGFuZGxlciA9IGhhbmRsZXI7
CiAKICAgICBhdXRvIGFsdGVybmF0ZURpc3BhdGNoZXIgPSBtYWtlVW5pcXVlPE9iakNJbnNwZWN0
b3JEb21haW5CYWNrZW5kRGlzcGF0Y2hlcj4oaGFuZGxlcik7CiAgICAgYXV0byBhbHRlcm5hdGVB
Z2VudCA9IG1ha2VVbmlxdWU8QWx0ZXJuYXRlRGlzcGF0Y2hhYmxlQWdlbnQ8RG9tYWluQmFja2Vu
ZERpc3BhdGNoZXIsIEFsdGVybmF0ZURvbWFpbkJhY2tlbmREaXNwYXRjaGVyPj4oIkRvbWFpbiJf
cywgKl9jb250cm9sbGVyLCBXVEZNb3ZlKGFsdGVybmF0ZURpc3BhdGNoZXIpKTsKQEAgLTcwNSwx
NCArNjk3LDE0IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKIC0gKGlkPFRlc3RQcm90
b2NvbERvbWFpbkRvbWFpbkhhbmRsZXI+KWRvbWFpbkhhbmRsZXIKIHsKLSAgICByZXR1cm4gX2Rv
bWFpbkhhbmRsZXI7CisgICAgcmV0dXJuIF9kb21haW5IYW5kbGVyLmdldCgpOwogfQogCiAtIChU
ZXN0UHJvdG9jb2xEb21haW5Eb21haW5FdmVudERpc3BhdGNoZXIgKilkb21haW5FdmVudERpc3Bh
dGNoZXIKIHsKICAgICBpZiAoIV9kb21haW5FdmVudERpc3BhdGNoZXIpCi0gICAgICAgIF9kb21h
aW5FdmVudERpc3BhdGNoZXIgPSBbW1Rlc3RQcm90b2NvbERvbWFpbkRvbWFpbkV2ZW50RGlzcGF0
Y2hlciBhbGxvY10gaW5pdFdpdGhDb250cm9sbGVyOl9jb250cm9sbGVyXTsKLSAgICByZXR1cm4g
X2RvbWFpbkV2ZW50RGlzcGF0Y2hlcjsKKyAgICAgICAgX2RvbWFpbkV2ZW50RGlzcGF0Y2hlciA9
IGFkb3B0TlMoW1tUZXN0UHJvdG9jb2xEb21haW5Eb21haW5FdmVudERpc3BhdGNoZXIgYWxsb2Nd
IGluaXRXaXRoQ29udHJvbGxlcjpfY29udHJvbGxlcl0pOworICAgIHJldHVybiBfZG9tYWluRXZl
bnREaXNwYXRjaGVyLmdldCgpOwogfQogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1h
c3luYy1hdHRyaWJ1dGUuanNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1hc3luYy1hdHRyaWJ1dGUu
anNvbi1yZXN1bHQKaW5kZXggZDhmYTk3NmM0MjA5M2U4ZmIwZjRiZWEyODAyYmQyMzdkOWY4MWJk
ZC4uNmQ5YjcxNDdjZDY2NDIzODk5MDQ0ZjcyNGE1YTA1MWYwOTc5YjhmNSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2Nv
bW1hbmRzLXdpdGgtYXN5bmMtYXR0cmlidXRlLmpzb24tcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9jb21tYW5kcy13aXRo
LWFzeW5jLWF0dHJpYnV0ZS5qc29uLXJlc3VsdApAQCAtMTE1MCw3ICsxMTUwLDcgQEAgdXNpbmcg
bmFtZXNwYWNlIEluc3BlY3RvcjsKIEBpbXBsZW1lbnRhdGlvbiBUZXN0UHJvdG9jb2xDb25maWd1
cmF0aW9uCiB7CiAgICAgQXVnbWVudGFibGVJbnNwZWN0b3JDb250cm9sbGVyKiBfY29udHJvbGxl
cjsKLSAgICBpZDxUZXN0UHJvdG9jb2xEYXRhYmFzZURvbWFpbkhhbmRsZXI+IF9kYXRhYmFzZUhh
bmRsZXI7CisgICAgUmV0YWluUHRyPGlkPFRlc3RQcm90b2NvbERhdGFiYXNlRG9tYWluSGFuZGxl
cj4+IF9kYXRhYmFzZUhhbmRsZXI7CiB9CiAKIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aENvbnRy
b2xsZXI6KEF1Z21lbnRhYmxlSW5zcGVjdG9yQ29udHJvbGxlciopY29udHJvbGxlcgpAQCAtMTE2
MywxOSArMTE2MywxMiBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogICAgIHJldHVybiBz
ZWxmOwogfQogCi0tICh2b2lkKWRlYWxsb2MKLXsKLSAgICBbX2RhdGFiYXNlSGFuZGxlciByZWxl
YXNlXTsKLSAgICBbc3VwZXIgZGVhbGxvY107Ci19Ci0KIC0gKHZvaWQpc2V0RGF0YWJhc2VIYW5k
bGVyOihpZDxUZXN0UHJvdG9jb2xEYXRhYmFzZURvbWFpbkhhbmRsZXI+KWhhbmRsZXIKIHsKICAg
ICBpZiAoaGFuZGxlciA9PSBfZGF0YWJhc2VIYW5kbGVyKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBbX2RhdGFiYXNlSGFuZGxlciByZWxlYXNlXTsKLSAgICBfZGF0YWJhc2VIYW5kbGVyID0gW2hh
bmRsZXIgcmV0YWluXTsKKyAgICBfZGF0YWJhc2VIYW5kbGVyID0gaGFuZGxlcjsKIAogICAgIGF1
dG8gYWx0ZXJuYXRlRGlzcGF0Y2hlciA9IG1ha2VVbmlxdWU8T2JqQ0luc3BlY3RvckRhdGFiYXNl
QmFja2VuZERpc3BhdGNoZXI+KGhhbmRsZXIpOwogICAgIGF1dG8gYWx0ZXJuYXRlQWdlbnQgPSBt
YWtlVW5pcXVlPEFsdGVybmF0ZURpc3BhdGNoYWJsZUFnZW50PERhdGFiYXNlQmFja2VuZERpc3Bh
dGNoZXIsIEFsdGVybmF0ZURhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI+PigiRGF0YWJhc2UiX3Ms
ICpfY29udHJvbGxlciwgV1RGTW92ZShhbHRlcm5hdGVEaXNwYXRjaGVyKSk7CkBAIC0xMTg0LDcg
KzExNzcsNyBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiAtIChpZDxUZXN0UHJvdG9j
b2xEYXRhYmFzZURvbWFpbkhhbmRsZXI+KWRhdGFiYXNlSGFuZGxlcgogewotICAgIHJldHVybiBf
ZGF0YWJhc2VIYW5kbGVyOworICAgIHJldHVybiBfZGF0YWJhc2VIYW5kbGVyLmdldCgpOwogfQog
CiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Njcmlw
dHMvdGVzdHMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1vcHRpb25hbC1jYWxsLXJldHVybi1wYXJh
bWV0ZXJzLmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3Jp
cHRzL3Rlc3RzL2V4cGVjdGVkL2NvbW1hbmRzLXdpdGgtb3B0aW9uYWwtY2FsbC1yZXR1cm4tcGFy
YW1ldGVycy5qc29uLXJlc3VsdAppbmRleCAxMTEzN2NiOTcwMmM5NGUyOTk4ZDBlYzBjYzI3ODUw
ODk1ZDNlMmQxLi4yZGMxMjVhMDk4MGFhYmExMzdmZDY3MGFhNGVkZTkxYzc2ZmFjZWFkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhw
ZWN0ZWQvY29tbWFuZHMtd2l0aC1vcHRpb25hbC1jYWxsLXJldHVybi1wYXJhbWV0ZXJzLmpzb24t
cmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0
cy9leHBlY3RlZC9jb21tYW5kcy13aXRoLW9wdGlvbmFsLWNhbGwtcmV0dXJuLXBhcmFtZXRlcnMu
anNvbi1yZXN1bHQKQEAgLTg1MiwxNiArODUyLDE2IEBAIHZvaWQgT2JqQ0luc3BlY3RvckRhdGFi
YXNlQmFja2VuZERpc3BhdGNoZXI6OmV4ZWN1dGVBbGxPcHRpb25hbFBhcmFtZXRlcnMobG9uZyBw
CiAgICAgICAgIG9faW5fb3B0X3RpbWVzdGFtcCA9ICppbl9vcHRfdGltZXN0YW1wOwogICAgIFJX
SVByb3RvY29sSlNPTk9iamVjdCAqb19pbl9vcHRfdmFsdWVzOwogICAgIGlmICghIWluX29wdF92
YWx1ZXMpCi0gICAgICAgIG9faW5fb3B0X3ZhbHVlcyA9IFtbW1JXSVByb3RvY29sSlNPTk9iamVj
dCBhbGxvY10gaW5pdFdpdGhKU09OT2JqZWN0OmluX29wdF92YWx1ZXMucmVsZWFzZU5vbk51bGwo
KV0gYXV0b3JlbGVhc2VdOworICAgICAgICBvX2luX29wdF92YWx1ZXMgPSBhZG9wdE5TKFtbUldJ
UHJvdG9jb2xKU09OT2JqZWN0IGFsbG9jXSBpbml0V2l0aEpTT05PYmplY3Q6aW5fb3B0X3ZhbHVl
cy5yZWxlYXNlTm9uTnVsbCgpXSkuYXV0b3JlbGVhc2UoKTsKICAgICBSV0lQcm90b2NvbEpTT05P
YmplY3QgKm9faW5fb3B0X3BheWxvYWQ7CiAgICAgaWYgKCEhaW5fb3B0X3BheWxvYWQpCi0gICAg
ICAgIG9faW5fb3B0X3BheWxvYWQgPSBbW1tSV0lQcm90b2NvbEpTT05PYmplY3QgYWxsb2NdIGlu
aXRXaXRoSlNPTk9iamVjdDppbl9vcHRfcGF5bG9hZC5yZWxlYXNlTm9uTnVsbCgpXSBhdXRvcmVs
ZWFzZV07CisgICAgICAgIG9faW5fb3B0X3BheWxvYWQgPSBhZG9wdE5TKFtbUldJUHJvdG9jb2xK
U09OT2JqZWN0IGFsbG9jXSBpbml0V2l0aEpTT05PYmplY3Q6aW5fb3B0X3BheWxvYWQucmVsZWFz
ZU5vbk51bGwoKV0pLmF1dG9yZWxlYXNlKCk7CiAgICAgaW50IG9faW5fb3B0X2RhdGFiYXNlSWQ7
CiAgICAgaWYgKCEhaW5fb3B0X2RhdGFiYXNlSWQpCiAgICAgICAgIG9faW5fb3B0X2RhdGFiYXNl
SWQgPSAqaW5fb3B0X2RhdGFiYXNlSWQ7CiAgICAgVGVzdFByb3RvY29sRGF0YWJhc2VFcnJvciAq
b19pbl9vcHRfc3FsRXJyb3I7CiAgICAgaWYgKCEhaW5fb3B0X3NxbEVycm9yKQotICAgICAgICBv
X2luX29wdF9zcWxFcnJvciA9IFtbW1Rlc3RQcm90b2NvbERhdGFiYXNlRXJyb3IgYWxsb2NdIGlu
aXRXaXRoSlNPTk9iamVjdDppbl9vcHRfc3FsRXJyb3IucmVsZWFzZU5vbk51bGwoKV0gYXV0b3Jl
bGVhc2VdOworICAgICAgICBvX2luX29wdF9zcWxFcnJvciA9IGFkb3B0TlMoW1tUZXN0UHJvdG9j
b2xEYXRhYmFzZUVycm9yIGFsbG9jXSBpbml0V2l0aEpTT05PYmplY3Q6aW5fb3B0X3NxbEVycm9y
LnJlbGVhc2VOb25OdWxsKCldKS5hdXRvcmVsZWFzZSgpOwogICAgIE9wdGlvbmFsPFRlc3RQcm90
b2NvbERhdGFiYXNlUHJpbWFyeUNvbG9ycz4gb19pbl9vcHRfc2NyZWVuQ29sb3I7CiAgICAgaWYg
KCEhaW5fb3B0X3NjcmVlbkNvbG9yKQogICAgICAgICBvX2luX29wdF9zY3JlZW5Db2xvciA9IGZy
b21Qcm90b2NvbFN0cmluZzxUZXN0UHJvdG9jb2xEYXRhYmFzZVByaW1hcnlDb2xvcnM+KGluX29w
dF9zY3JlZW5Db2xvcik7CkBAIC05MTEsMTAgKzkxMSwxMCBAQCB2b2lkIE9iakNJbnNwZWN0b3JE
YXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyOjpleGVjdXRlTm9PcHRpb25hbFBhcmFtZXRlcnMobG9u
ZyBwcgogICAgIE5TQXJyYXkvKjxOU1N0cmluZz4qLyAqb19pbl9jb2x1bW5OYW1lcyA9IHRvT2Jq
Q1N0cmluZ0FycmF5KFdURk1vdmUoaW5fY29sdW1uTmFtZXMpKTsKICAgICBOU1N0cmluZyAqb19p
bl9ub3RlcyA9IGluX25vdGVzOwogICAgIGRvdWJsZSBvX2luX3RpbWVzdGFtcCA9IGluX3RpbWVz
dGFtcDsKLSAgICBSV0lQcm90b2NvbEpTT05PYmplY3QgKm9faW5fdmFsdWVzID0gW1tbUldJUHJv
dG9jb2xKU09OT2JqZWN0IGFsbG9jXSBpbml0V2l0aEpTT05PYmplY3Q6V1RGTW92ZShpbl92YWx1
ZXMpXSBhdXRvcmVsZWFzZV07Ci0gICAgUldJUHJvdG9jb2xKU09OT2JqZWN0ICpvX2luX3BheWxv
YWQgPSBbW1tSV0lQcm90b2NvbEpTT05PYmplY3QgYWxsb2NdIGluaXRXaXRoSlNPTk9iamVjdDpX
VEZNb3ZlKGluX3BheWxvYWQpXSBhdXRvcmVsZWFzZV07CisgICAgUldJUHJvdG9jb2xKU09OT2Jq
ZWN0ICpvX2luX3ZhbHVlcyA9IGFkb3B0TlMoW1tSV0lQcm90b2NvbEpTT05PYmplY3QgYWxsb2Nd
IGluaXRXaXRoSlNPTk9iamVjdDpXVEZNb3ZlKGluX3ZhbHVlcyldKS5hdXRvcmVsZWFzZSgpOwor
ICAgIFJXSVByb3RvY29sSlNPTk9iamVjdCAqb19pbl9wYXlsb2FkID0gYWRvcHROUyhbW1JXSVBy
b3RvY29sSlNPTk9iamVjdCBhbGxvY10gaW5pdFdpdGhKU09OT2JqZWN0OldURk1vdmUoaW5fcGF5
bG9hZCldKS5hdXRvcmVsZWFzZSgpOwogICAgIGludCBvX2luX2RhdGFiYXNlSWQgPSBpbl9kYXRh
YmFzZUlkOwotICAgIFRlc3RQcm90b2NvbERhdGFiYXNlRXJyb3IgKm9faW5fc3FsRXJyb3IgPSBb
W1tUZXN0UHJvdG9jb2xEYXRhYmFzZUVycm9yIGFsbG9jXSBpbml0V2l0aEpTT05PYmplY3Q6V1RG
TW92ZShpbl9zcWxFcnJvcildIGF1dG9yZWxlYXNlXTsKKyAgICBUZXN0UHJvdG9jb2xEYXRhYmFz
ZUVycm9yICpvX2luX3NxbEVycm9yID0gYWRvcHROUyhbW1Rlc3RQcm90b2NvbERhdGFiYXNlRXJy
b3IgYWxsb2NdIGluaXRXaXRoSlNPTk9iamVjdDpXVEZNb3ZlKGluX3NxbEVycm9yKV0pLmF1dG9y
ZWxlYXNlKCk7CiAgICAgT3B0aW9uYWw8VGVzdFByb3RvY29sRGF0YWJhc2VQcmltYXJ5Q29sb3Jz
PiBvX2luX3NjcmVlbkNvbG9yID0gZnJvbVByb3RvY29sU3RyaW5nPFRlc3RQcm90b2NvbERhdGFi
YXNlUHJpbWFyeUNvbG9ycz4oaW5fc2NyZWVuQ29sb3IpOwogICAgIGlmICghb19pbl9zY3JlZW5D
b2xvcikgewogICAgICAgICBiYWNrZW5kRGlzcGF0Y2hlcigpLT5yZXBvcnRQcm90b2NvbEVycm9y
KEJhY2tlbmREaXNwYXRjaGVyOjpJbnZhbGlkUGFyYW1zLCAiUGFyYW1ldGVyICdzY3JlZW5Db2xv
cicgb2YgbWV0aG9kICdEYXRhYmFzZS5leGVjdXRlTm9PcHRpb25hbFBhcmFtZXRlcnMnIGNhbm5v
dCBiZSBwcm9jZXNzZWQiX3MpOwpAQCAtMTAxNyw3ICsxMDE3LDcgQEAgdXNpbmcgbmFtZXNwYWNl
IEluc3BlY3RvcjsKIEBpbXBsZW1lbnRhdGlvbiBUZXN0UHJvdG9jb2xDb25maWd1cmF0aW9uCiB7
CiAgICAgQXVnbWVudGFibGVJbnNwZWN0b3JDb250cm9sbGVyKiBfY29udHJvbGxlcjsKLSAgICBp
ZDxUZXN0UHJvdG9jb2xEYXRhYmFzZURvbWFpbkhhbmRsZXI+IF9kYXRhYmFzZUhhbmRsZXI7Cisg
ICAgUmV0YWluUHRyPGlkPFRlc3RQcm90b2NvbERhdGFiYXNlRG9tYWluSGFuZGxlcj4+IF9kYXRh
YmFzZUhhbmRsZXI7CiB9CiAKIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aENvbnRyb2xsZXI6KEF1
Z21lbnRhYmxlSW5zcGVjdG9yQ29udHJvbGxlciopY29udHJvbGxlcgpAQCAtMTAzMCwxOSArMTAz
MCwxMiBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogICAgIHJldHVybiBzZWxmOwogfQog
Ci0tICh2b2lkKWRlYWxsb2MKLXsKLSAgICBbX2RhdGFiYXNlSGFuZGxlciByZWxlYXNlXTsKLSAg
ICBbc3VwZXIgZGVhbGxvY107Ci19Ci0KIC0gKHZvaWQpc2V0RGF0YWJhc2VIYW5kbGVyOihpZDxU
ZXN0UHJvdG9jb2xEYXRhYmFzZURvbWFpbkhhbmRsZXI+KWhhbmRsZXIKIHsKICAgICBpZiAoaGFu
ZGxlciA9PSBfZGF0YWJhc2VIYW5kbGVyKQogICAgICAgICByZXR1cm47CiAKLSAgICBbX2RhdGFi
YXNlSGFuZGxlciByZWxlYXNlXTsKLSAgICBfZGF0YWJhc2VIYW5kbGVyID0gW2hhbmRsZXIgcmV0
YWluXTsKKyAgICBfZGF0YWJhc2VIYW5kbGVyID0gaGFuZGxlcjsKIAogICAgIGF1dG8gYWx0ZXJu
YXRlRGlzcGF0Y2hlciA9IG1ha2VVbmlxdWU8T2JqQ0luc3BlY3RvckRhdGFiYXNlQmFja2VuZERp
c3BhdGNoZXI+KGhhbmRsZXIpOwogICAgIGF1dG8gYWx0ZXJuYXRlQWdlbnQgPSBtYWtlVW5pcXVl
PEFsdGVybmF0ZURpc3BhdGNoYWJsZUFnZW50PERhdGFiYXNlQmFja2VuZERpc3BhdGNoZXIsIEFs
dGVybmF0ZURhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI+PigiRGF0YWJhc2UiX3MsICpfY29udHJv
bGxlciwgV1RGTW92ZShhbHRlcm5hdGVEaXNwYXRjaGVyKSk7CkBAIC0xMDUxLDcgKzEwNDQsNyBA
QCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiAtIChpZDxUZXN0UHJvdG9jb2xEYXRhYmFz
ZURvbWFpbkhhbmRsZXI+KWRhdGFiYXNlSGFuZGxlcgogewotICAgIHJldHVybiBfZGF0YWJhc2VI
YW5kbGVyOworICAgIHJldHVybiBfZGF0YWJhc2VIYW5kbGVyLmdldCgpOwogfQogCiBAZW5kCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMv
ZXhwZWN0ZWQvZGVmaW5pdGlvbnMtd2l0aC1tYWMtcGxhdGZvcm0uanNvbi1yZXN1bHQgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZGVmaW5p
dGlvbnMtd2l0aC1tYWMtcGxhdGZvcm0uanNvbi1yZXN1bHQKaW5kZXggNzk0Y2QzY2ZlMzlhNWNh
ZWZhODEwYTA0Zjg4MmY2MWFiNjEyZWRmMC4uMWZlNTliMzQwZjAwOTI1NjVmMWRmYmM0ZTAxZjZl
OTJiZTk1NGM2YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9z
Y3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2RlZmluaXRpb25zLXdpdGgtbWFjLXBsYXRmb3JtLmpzb24t
cmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0
cy9leHBlY3RlZC9kZWZpbml0aW9ucy13aXRoLW1hYy1wbGF0Zm9ybS5qc29uLXJlc3VsdApAQCAt
ODAwLDggKzgwMCw4IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiB7CiAgICAgQXVnbWVu
dGFibGVJbnNwZWN0b3JDb250cm9sbGVyKiBfY29udHJvbGxlcjsKICNpZiBET01BSU4tTUFDCi0g
ICAgaWQ8VGVzdFByb3RvY29sTmV0d29ya0RvbWFpbkhhbmRsZXI+IF9uZXR3b3JrSGFuZGxlcjsK
LSAgICBUZXN0UHJvdG9jb2xOZXR3b3JrRG9tYWluRXZlbnREaXNwYXRjaGVyICpfbmV0d29ya0V2
ZW50RGlzcGF0Y2hlcjsKKyAgICBSZXRhaW5QdHI8aWQ8VGVzdFByb3RvY29sTmV0d29ya0RvbWFp
bkhhbmRsZXI+PiBfbmV0d29ya0hhbmRsZXI7CisgICAgUmV0YWluUHRyPFRlc3RQcm90b2NvbE5l
dHdvcmtEb21haW5FdmVudERpc3BhdGNoZXI+IF9uZXR3b3JrRXZlbnREaXNwYXRjaGVyOwogI2Vu
ZGlmIC8vIERPTUFJTi1NQUMKIH0KIApAQCAtODE1LDIzICs4MTUsMTMgQEAgdXNpbmcgbmFtZXNw
YWNlIEluc3BlY3RvcjsKICAgICByZXR1cm4gc2VsZjsKIH0KIAotLSAodm9pZClkZWFsbG9jCi17
Ci0jaWYgRE9NQUlOLU1BQwotICAgIFtfbmV0d29ya0hhbmRsZXIgcmVsZWFzZV07Ci0gICAgW19u
ZXR3b3JrRXZlbnREaXNwYXRjaGVyIHJlbGVhc2VdOwotI2VuZGlmIC8vIERPTUFJTi1NQUMKLSAg
ICBbc3VwZXIgZGVhbGxvY107Ci19Ci0KICNpZiBET01BSU4tTUFDCiAtICh2b2lkKXNldE5ldHdv
cmtIYW5kbGVyOihpZDxUZXN0UHJvdG9jb2xOZXR3b3JrRG9tYWluSGFuZGxlcj4paGFuZGxlcgog
ewogICAgIGlmIChoYW5kbGVyID09IF9uZXR3b3JrSGFuZGxlcikKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgW19uZXR3b3JrSGFuZGxlciByZWxlYXNlXTsKLSAgICBfbmV0d29ya0hhbmRsZXIgPSBb
aGFuZGxlciByZXRhaW5dOworICAgIF9uZXR3b3JrSGFuZGxlciA9IGhhbmRsZXI7CiAKICAgICBh
dXRvIGFsdGVybmF0ZURpc3BhdGNoZXIgPSBtYWtlVW5pcXVlPE9iakNJbnNwZWN0b3JOZXR3b3Jr
QmFja2VuZERpc3BhdGNoZXI+KGhhbmRsZXIpOwogICAgIGF1dG8gYWx0ZXJuYXRlQWdlbnQgPSBt
YWtlVW5pcXVlPEFsdGVybmF0ZURpc3BhdGNoYWJsZUFnZW50PE5ldHdvcmtCYWNrZW5kRGlzcGF0
Y2hlciwgQWx0ZXJuYXRlTmV0d29ya0JhY2tlbmREaXNwYXRjaGVyPj4oIk5ldHdvcmsiX3MsICpf
Y29udHJvbGxlciwgV1RGTW92ZShhbHRlcm5hdGVEaXNwYXRjaGVyKSk7CkBAIC04NDAsMTQgKzgz
MCwxNCBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiAtIChpZDxUZXN0UHJvdG9jb2xO
ZXR3b3JrRG9tYWluSGFuZGxlcj4pbmV0d29ya0hhbmRsZXIKIHsKLSAgICByZXR1cm4gX25ldHdv
cmtIYW5kbGVyOworICAgIHJldHVybiBfbmV0d29ya0hhbmRsZXIuZ2V0KCk7CiB9CiAKIC0gKFRl
c3RQcm90b2NvbE5ldHdvcmtEb21haW5FdmVudERpc3BhdGNoZXIgKiluZXR3b3JrRXZlbnREaXNw
YXRjaGVyCiB7CiAgICAgaWYgKCFfbmV0d29ya0V2ZW50RGlzcGF0Y2hlcikKLSAgICAgICAgX25l
dHdvcmtFdmVudERpc3BhdGNoZXIgPSBbW1Rlc3RQcm90b2NvbE5ldHdvcmtEb21haW5FdmVudERp
c3BhdGNoZXIgYWxsb2NdIGluaXRXaXRoQ29udHJvbGxlcjpfY29udHJvbGxlcl07Ci0gICAgcmV0
dXJuIF9uZXR3b3JrRXZlbnREaXNwYXRjaGVyOworICAgICAgICBfbmV0d29ya0V2ZW50RGlzcGF0
Y2hlciA9IGFkb3B0TlMoW1tUZXN0UHJvdG9jb2xOZXR3b3JrRG9tYWluRXZlbnREaXNwYXRjaGVy
IGFsbG9jXSBpbml0V2l0aENvbnRyb2xsZXI6X2NvbnRyb2xsZXJdKTsKKyAgICByZXR1cm4gX25l
dHdvcmtFdmVudERpc3BhdGNoZXIuZ2V0KCk7CiB9CiAKICNlbmRpZiAvLyBET01BSU4tTUFDCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMv
ZXhwZWN0ZWQvZG9tYWluLWRlYnVnZ2FibGVUeXBlcy5qc29uLXJlc3VsdCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9kb21haW4tZGVidWdn
YWJsZVR5cGVzLmpzb24tcmVzdWx0CmluZGV4IDVmOTQ0ZDVhZTA5NWE4Y2Q5OWMyNTA1OTZjNmNj
ZjRkODY5NTI3ZDUuLmI5ZGVjYTJiY2U3YTFiY2YwMzMwZDhiOTE4YWI1YzZjYjMxMDk4ZTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9l
eHBlY3RlZC9kb21haW4tZGVidWdnYWJsZVR5cGVzLmpzb24tcmVzdWx0CisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9kb21haW4tZGVi
dWdnYWJsZVR5cGVzLmpzb24tcmVzdWx0CkBAIC02NjksOCArNjY5LDggQEAgdXNpbmcgbmFtZXNw
YWNlIEluc3BlY3RvcjsKIEBpbXBsZW1lbnRhdGlvbiBUZXN0UHJvdG9jb2xDb25maWd1cmF0aW9u
CiB7CiAgICAgQXVnbWVudGFibGVJbnNwZWN0b3JDb250cm9sbGVyKiBfY29udHJvbGxlcjsKLSAg
ICBpZDxUZXN0UHJvdG9jb2xEb21haW5Eb21haW5IYW5kbGVyPiBfZG9tYWluSGFuZGxlcjsKLSAg
ICBUZXN0UHJvdG9jb2xEb21haW5Eb21haW5FdmVudERpc3BhdGNoZXIgKl9kb21haW5FdmVudERp
c3BhdGNoZXI7CisgICAgUmV0YWluUHRyPGlkPFRlc3RQcm90b2NvbERvbWFpbkRvbWFpbkhhbmRs
ZXI+PiBfZG9tYWluSGFuZGxlcjsKKyAgICBSZXRhaW5QdHI8VGVzdFByb3RvY29sRG9tYWluRG9t
YWluRXZlbnREaXNwYXRjaGVyPiBfZG9tYWluRXZlbnREaXNwYXRjaGVyOwogfQogCiAtIChpbnN0
YW5jZXR5cGUpaW5pdFdpdGhDb250cm9sbGVyOihBdWdtZW50YWJsZUluc3BlY3RvckNvbnRyb2xs
ZXIqKWNvbnRyb2xsZXIKQEAgLTY4MywyMCArNjgzLDEyIEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNw
ZWN0b3I7CiAgICAgcmV0dXJuIHNlbGY7CiB9CiAKLS0gKHZvaWQpZGVhbGxvYwotewotICAgIFtf
ZG9tYWluSGFuZGxlciByZWxlYXNlXTsKLSAgICBbX2RvbWFpbkV2ZW50RGlzcGF0Y2hlciByZWxl
YXNlXTsKLSAgICBbc3VwZXIgZGVhbGxvY107Ci19Ci0KIC0gKHZvaWQpc2V0RG9tYWluSGFuZGxl
cjooaWQ8VGVzdFByb3RvY29sRG9tYWluRG9tYWluSGFuZGxlcj4paGFuZGxlcgogewogICAgIGlm
IChoYW5kbGVyID09IF9kb21haW5IYW5kbGVyKQogICAgICAgICByZXR1cm47CiAKLSAgICBbX2Rv
bWFpbkhhbmRsZXIgcmVsZWFzZV07Ci0gICAgX2RvbWFpbkhhbmRsZXIgPSBbaGFuZGxlciByZXRh
aW5dOworICAgIF9kb21haW5IYW5kbGVyID0gaGFuZGxlcjsKIAogICAgIGF1dG8gYWx0ZXJuYXRl
RGlzcGF0Y2hlciA9IG1ha2VVbmlxdWU8T2JqQ0luc3BlY3RvckRvbWFpbkJhY2tlbmREaXNwYXRj
aGVyPihoYW5kbGVyKTsKICAgICBhdXRvIGFsdGVybmF0ZUFnZW50ID0gbWFrZVVuaXF1ZTxBbHRl
cm5hdGVEaXNwYXRjaGFibGVBZ2VudDxEb21haW5CYWNrZW5kRGlzcGF0Y2hlciwgQWx0ZXJuYXRl
RG9tYWluQmFja2VuZERpc3BhdGNoZXI+PigiRG9tYWluIl9zLCAqX2NvbnRyb2xsZXIsIFdURk1v
dmUoYWx0ZXJuYXRlRGlzcGF0Y2hlcikpOwpAQCAtNzA1LDE0ICs2OTcsMTQgQEAgdXNpbmcgbmFt
ZXNwYWNlIEluc3BlY3RvcjsKIAogLSAoaWQ8VGVzdFByb3RvY29sRG9tYWluRG9tYWluSGFuZGxl
cj4pZG9tYWluSGFuZGxlcgogewotICAgIHJldHVybiBfZG9tYWluSGFuZGxlcjsKKyAgICByZXR1
cm4gX2RvbWFpbkhhbmRsZXIuZ2V0KCk7CiB9CiAKIC0gKFRlc3RQcm90b2NvbERvbWFpbkRvbWFp
bkV2ZW50RGlzcGF0Y2hlciAqKWRvbWFpbkV2ZW50RGlzcGF0Y2hlcgogewogICAgIGlmICghX2Rv
bWFpbkV2ZW50RGlzcGF0Y2hlcikKLSAgICAgICAgX2RvbWFpbkV2ZW50RGlzcGF0Y2hlciA9IFtb
VGVzdFByb3RvY29sRG9tYWluRG9tYWluRXZlbnREaXNwYXRjaGVyIGFsbG9jXSBpbml0V2l0aENv
bnRyb2xsZXI6X2NvbnRyb2xsZXJdOwotICAgIHJldHVybiBfZG9tYWluRXZlbnREaXNwYXRjaGVy
OworICAgICAgICBfZG9tYWluRXZlbnREaXNwYXRjaGVyID0gYWRvcHROUyhbW1Rlc3RQcm90b2Nv
bERvbWFpbkRvbWFpbkV2ZW50RGlzcGF0Y2hlciBhbGxvY10gaW5pdFdpdGhDb250cm9sbGVyOl9j
b250cm9sbGVyXSk7CisgICAgcmV0dXJuIF9kb21haW5FdmVudERpc3BhdGNoZXIuZ2V0KCk7CiB9
CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2Ny
aXB0cy90ZXN0cy9leHBlY3RlZC9kb21haW4tdGFyZ2V0VHlwZS1tYXRjaGluZy1kb21haW4tZGVi
dWdnYWJsZVR5cGUuanNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZG9tYWluLXRhcmdldFR5cGUtbWF0Y2hpbmctZG9tYWlu
LWRlYnVnZ2FibGVUeXBlLmpzb24tcmVzdWx0CmluZGV4IGI4ODg2MmI1MzI5ZGE3YzA5MTk0ZmQ2
NDEzZWYwOTNmZTExNzVjNjMuLjQ3ZWQyMzlmZDRmYzgzMjFhZjdkNjAyMDQ0MjU3ZDgzYjg4Y2Jj
ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90
ZXN0cy9leHBlY3RlZC9kb21haW4tdGFyZ2V0VHlwZS1tYXRjaGluZy1kb21haW4tZGVidWdnYWJs
ZVR5cGUuanNvbi1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9z
Y3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2RvbWFpbi10YXJnZXRUeXBlLW1hdGNoaW5nLWRvbWFpbi1k
ZWJ1Z2dhYmxlVHlwZS5qc29uLXJlc3VsdApAQCAtNjY5LDggKzY2OSw4IEBAIHVzaW5nIG5hbWVz
cGFjZSBJbnNwZWN0b3I7CiBAaW1wbGVtZW50YXRpb24gVGVzdFByb3RvY29sQ29uZmlndXJhdGlv
bgogewogICAgIEF1Z21lbnRhYmxlSW5zcGVjdG9yQ29udHJvbGxlciogX2NvbnRyb2xsZXI7Ci0g
ICAgaWQ8VGVzdFByb3RvY29sRG9tYWluRG9tYWluSGFuZGxlcj4gX2RvbWFpbkhhbmRsZXI7Ci0g
ICAgVGVzdFByb3RvY29sRG9tYWluRG9tYWluRXZlbnREaXNwYXRjaGVyICpfZG9tYWluRXZlbnRE
aXNwYXRjaGVyOworICAgIFJldGFpblB0cjxpZDxUZXN0UHJvdG9jb2xEb21haW5Eb21haW5IYW5k
bGVyPj4gX2RvbWFpbkhhbmRsZXI7CisgICAgUmV0YWluUHRyPFRlc3RQcm90b2NvbERvbWFpbkRv
bWFpbkV2ZW50RGlzcGF0Y2hlcj4gX2RvbWFpbkV2ZW50RGlzcGF0Y2hlcjsKIH0KIAogLSAoaW5z
dGFuY2V0eXBlKWluaXRXaXRoQ29udHJvbGxlcjooQXVnbWVudGFibGVJbnNwZWN0b3JDb250cm9s
bGVyKiljb250cm9sbGVyCkBAIC02ODMsMjAgKzY4MywxMiBAQCB1c2luZyBuYW1lc3BhY2UgSW5z
cGVjdG9yOwogICAgIHJldHVybiBzZWxmOwogfQogCi0tICh2b2lkKWRlYWxsb2MKLXsKLSAgICBb
X2RvbWFpbkhhbmRsZXIgcmVsZWFzZV07Ci0gICAgW19kb21haW5FdmVudERpc3BhdGNoZXIgcmVs
ZWFzZV07Ci0gICAgW3N1cGVyIGRlYWxsb2NdOwotfQotCiAtICh2b2lkKXNldERvbWFpbkhhbmRs
ZXI6KGlkPFRlc3RQcm90b2NvbERvbWFpbkRvbWFpbkhhbmRsZXI+KWhhbmRsZXIKIHsKICAgICBp
ZiAoaGFuZGxlciA9PSBfZG9tYWluSGFuZGxlcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgW19k
b21haW5IYW5kbGVyIHJlbGVhc2VdOwotICAgIF9kb21haW5IYW5kbGVyID0gW2hhbmRsZXIgcmV0
YWluXTsKKyAgICBfZG9tYWluSGFuZGxlciA9IGhhbmRsZXI7CiAKICAgICBhdXRvIGFsdGVybmF0
ZURpc3BhdGNoZXIgPSBtYWtlVW5pcXVlPE9iakNJbnNwZWN0b3JEb21haW5CYWNrZW5kRGlzcGF0
Y2hlcj4oaGFuZGxlcik7CiAgICAgYXV0byBhbHRlcm5hdGVBZ2VudCA9IG1ha2VVbmlxdWU8QWx0
ZXJuYXRlRGlzcGF0Y2hhYmxlQWdlbnQ8RG9tYWluQmFja2VuZERpc3BhdGNoZXIsIEFsdGVybmF0
ZURvbWFpbkJhY2tlbmREaXNwYXRjaGVyPj4oIkRvbWFpbiJfcywgKl9jb250cm9sbGVyLCBXVEZN
b3ZlKGFsdGVybmF0ZURpc3BhdGNoZXIpKTsKQEAgLTcwNSwxNCArNjk3LDE0IEBAIHVzaW5nIG5h
bWVzcGFjZSBJbnNwZWN0b3I7CiAKIC0gKGlkPFRlc3RQcm90b2NvbERvbWFpbkRvbWFpbkhhbmRs
ZXI+KWRvbWFpbkhhbmRsZXIKIHsKLSAgICByZXR1cm4gX2RvbWFpbkhhbmRsZXI7CisgICAgcmV0
dXJuIF9kb21haW5IYW5kbGVyLmdldCgpOwogfQogCiAtIChUZXN0UHJvdG9jb2xEb21haW5Eb21h
aW5FdmVudERpc3BhdGNoZXIgKilkb21haW5FdmVudERpc3BhdGNoZXIKIHsKICAgICBpZiAoIV9k
b21haW5FdmVudERpc3BhdGNoZXIpCi0gICAgICAgIF9kb21haW5FdmVudERpc3BhdGNoZXIgPSBb
W1Rlc3RQcm90b2NvbERvbWFpbkRvbWFpbkV2ZW50RGlzcGF0Y2hlciBhbGxvY10gaW5pdFdpdGhD
b250cm9sbGVyOl9jb250cm9sbGVyXTsKLSAgICByZXR1cm4gX2RvbWFpbkV2ZW50RGlzcGF0Y2hl
cjsKKyAgICAgICAgX2RvbWFpbkV2ZW50RGlzcGF0Y2hlciA9IGFkb3B0TlMoW1tUZXN0UHJvdG9j
b2xEb21haW5Eb21haW5FdmVudERpc3BhdGNoZXIgYWxsb2NdIGluaXRXaXRoQ29udHJvbGxlcjpf
Y29udHJvbGxlcl0pOworICAgIHJldHVybiBfZG9tYWluRXZlbnREaXNwYXRjaGVyLmdldCgpOwog
fQogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Nj
cmlwdHMvdGVzdHMvZXhwZWN0ZWQvZG9tYWluLXRhcmdldFR5cGVzLmpzb24tcmVzdWx0IGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2RvbWFp
bi10YXJnZXRUeXBlcy5qc29uLXJlc3VsdAppbmRleCAzOWMzMjVhMmM0OTY2ZTQyMGFjMmUxN2Nk
ODZhMzJjYjAyMGYwYzU3Li40N2U1Mjc5MTUxMjZjNGY1NjlkOTI5NTdkMThiYzgwYjcxYzZjYmJi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVz
dHMvZXhwZWN0ZWQvZG9tYWluLXRhcmdldFR5cGVzLmpzb24tcmVzdWx0CisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9kb21haW4tdGFy
Z2V0VHlwZXMuanNvbi1yZXN1bHQKQEAgLTY2OSw4ICs2NjksOCBAQCB1c2luZyBuYW1lc3BhY2Ug
SW5zcGVjdG9yOwogQGltcGxlbWVudGF0aW9uIFRlc3RQcm90b2NvbENvbmZpZ3VyYXRpb24KIHsK
ICAgICBBdWdtZW50YWJsZUluc3BlY3RvckNvbnRyb2xsZXIqIF9jb250cm9sbGVyOwotICAgIGlk
PFRlc3RQcm90b2NvbERvbWFpbkRvbWFpbkhhbmRsZXI+IF9kb21haW5IYW5kbGVyOwotICAgIFRl
c3RQcm90b2NvbERvbWFpbkRvbWFpbkV2ZW50RGlzcGF0Y2hlciAqX2RvbWFpbkV2ZW50RGlzcGF0
Y2hlcjsKKyAgICBSZXRhaW5QdHI8aWQ8VGVzdFByb3RvY29sRG9tYWluRG9tYWluSGFuZGxlcj4+
IF9kb21haW5IYW5kbGVyOworICAgIFJldGFpblB0cjxUZXN0UHJvdG9jb2xEb21haW5Eb21haW5F
dmVudERpc3BhdGNoZXI+IF9kb21haW5FdmVudERpc3BhdGNoZXI7CiB9CiAKIC0gKGluc3RhbmNl
dHlwZSlpbml0V2l0aENvbnRyb2xsZXI6KEF1Z21lbnRhYmxlSW5zcGVjdG9yQ29udHJvbGxlciop
Y29udHJvbGxlcgpAQCAtNjgzLDIwICs2ODMsMTIgQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3Rv
cjsKICAgICByZXR1cm4gc2VsZjsKIH0KIAotLSAodm9pZClkZWFsbG9jCi17Ci0gICAgW19kb21h
aW5IYW5kbGVyIHJlbGVhc2VdOwotICAgIFtfZG9tYWluRXZlbnREaXNwYXRjaGVyIHJlbGVhc2Vd
OwotICAgIFtzdXBlciBkZWFsbG9jXTsKLX0KLQogLSAodm9pZClzZXREb21haW5IYW5kbGVyOihp
ZDxUZXN0UHJvdG9jb2xEb21haW5Eb21haW5IYW5kbGVyPiloYW5kbGVyCiB7CiAgICAgaWYgKGhh
bmRsZXIgPT0gX2RvbWFpbkhhbmRsZXIpCiAgICAgICAgIHJldHVybjsKIAotICAgIFtfZG9tYWlu
SGFuZGxlciByZWxlYXNlXTsKLSAgICBfZG9tYWluSGFuZGxlciA9IFtoYW5kbGVyIHJldGFpbl07
CisgICAgX2RvbWFpbkhhbmRsZXIgPSBoYW5kbGVyOwogCiAgICAgYXV0byBhbHRlcm5hdGVEaXNw
YXRjaGVyID0gbWFrZVVuaXF1ZTxPYmpDSW5zcGVjdG9yRG9tYWluQmFja2VuZERpc3BhdGNoZXI+
KGhhbmRsZXIpOwogICAgIGF1dG8gYWx0ZXJuYXRlQWdlbnQgPSBtYWtlVW5pcXVlPEFsdGVybmF0
ZURpc3BhdGNoYWJsZUFnZW50PERvbWFpbkJhY2tlbmREaXNwYXRjaGVyLCBBbHRlcm5hdGVEb21h
aW5CYWNrZW5kRGlzcGF0Y2hlcj4+KCJEb21haW4iX3MsICpfY29udHJvbGxlciwgV1RGTW92ZShh
bHRlcm5hdGVEaXNwYXRjaGVyKSk7CkBAIC03MDUsMTQgKzY5NywxNCBAQCB1c2luZyBuYW1lc3Bh
Y2UgSW5zcGVjdG9yOwogCiAtIChpZDxUZXN0UHJvdG9jb2xEb21haW5Eb21haW5IYW5kbGVyPilk
b21haW5IYW5kbGVyCiB7Ci0gICAgcmV0dXJuIF9kb21haW5IYW5kbGVyOworICAgIHJldHVybiBf
ZG9tYWluSGFuZGxlci5nZXQoKTsKIH0KIAogLSAoVGVzdFByb3RvY29sRG9tYWluRG9tYWluRXZl
bnREaXNwYXRjaGVyICopZG9tYWluRXZlbnREaXNwYXRjaGVyCiB7CiAgICAgaWYgKCFfZG9tYWlu
RXZlbnREaXNwYXRjaGVyKQotICAgICAgICBfZG9tYWluRXZlbnREaXNwYXRjaGVyID0gW1tUZXN0
UHJvdG9jb2xEb21haW5Eb21haW5FdmVudERpc3BhdGNoZXIgYWxsb2NdIGluaXRXaXRoQ29udHJv
bGxlcjpfY29udHJvbGxlcl07Ci0gICAgcmV0dXJuIF9kb21haW5FdmVudERpc3BhdGNoZXI7Cisg
ICAgICAgIF9kb21haW5FdmVudERpc3BhdGNoZXIgPSBhZG9wdE5TKFtbVGVzdFByb3RvY29sRG9t
YWluRG9tYWluRXZlbnREaXNwYXRjaGVyIGFsbG9jXSBpbml0V2l0aENvbnRyb2xsZXI6X2NvbnRy
b2xsZXJdKTsKKyAgICByZXR1cm4gX2RvbWFpbkV2ZW50RGlzcGF0Y2hlci5nZXQoKTsKIH0KIAog
QGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRz
L3Rlc3RzL2V4cGVjdGVkL2RvbWFpbnMtd2l0aC12YXJ5aW5nLWNvbW1hbmQtc2l6ZXMuanNvbi1y
ZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhw
ZWN0ZWQvZG9tYWlucy13aXRoLXZhcnlpbmctY29tbWFuZC1zaXplcy5qc29uLXJlc3VsdAppbmRl
eCAwMjM0OTgzNzJjNmE5OTFhYzBmNzFjYjA5YmM2ZTQ5ZDEzNGU5OGI3Li4yOTYzZTk5MTM1OTA5
YzU1OTBjNjFjMDdjYjZkN2QxOGFjYmM4ZjBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZG9tYWlucy13aXRoLXZhcnlp
bmctY29tbWFuZC1zaXplcy5qc29uLXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZG9tYWlucy13aXRoLXZhcnlpbmctY29t
bWFuZC1zaXplcy5qc29uLXJlc3VsdApAQCAtMTA1OCw4ICsxMDU4LDggQEAgdXNpbmcgbmFtZXNw
YWNlIEluc3BlY3RvcjsKIEBpbXBsZW1lbnRhdGlvbiBUZXN0UHJvdG9jb2xDb25maWd1cmF0aW9u
CiB7CiAgICAgQXVnbWVudGFibGVJbnNwZWN0b3JDb250cm9sbGVyKiBfY29udHJvbGxlcjsKLSAg
ICBpZDxUZXN0UHJvdG9jb2xOZXR3b3JrMURvbWFpbkhhbmRsZXI+IF9uZXR3b3JrMUhhbmRsZXI7
Ci0gICAgaWQ8VGVzdFByb3RvY29sTmV0d29yazNEb21haW5IYW5kbGVyPiBfbmV0d29yazNIYW5k
bGVyOworICAgIFJldGFpblB0cjxpZDxUZXN0UHJvdG9jb2xOZXR3b3JrMURvbWFpbkhhbmRsZXI+
PiBfbmV0d29yazFIYW5kbGVyOworICAgIFJldGFpblB0cjxpZDxUZXN0UHJvdG9jb2xOZXR3b3Jr
M0RvbWFpbkhhbmRsZXI+PiBfbmV0d29yazNIYW5kbGVyOwogfQogCiAtIChpbnN0YW5jZXR5cGUp
aW5pdFdpdGhDb250cm9sbGVyOihBdWdtZW50YWJsZUluc3BlY3RvckNvbnRyb2xsZXIqKWNvbnRy
b2xsZXIKQEAgLTEwNzIsMjAgKzEwNzIsMTIgQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsK
ICAgICByZXR1cm4gc2VsZjsKIH0KIAotLSAodm9pZClkZWFsbG9jCi17Ci0gICAgW19uZXR3b3Jr
MUhhbmRsZXIgcmVsZWFzZV07Ci0gICAgW19uZXR3b3JrM0hhbmRsZXIgcmVsZWFzZV07Ci0gICAg
W3N1cGVyIGRlYWxsb2NdOwotfQotCiAtICh2b2lkKXNldE5ldHdvcmsxSGFuZGxlcjooaWQ8VGVz
dFByb3RvY29sTmV0d29yazFEb21haW5IYW5kbGVyPiloYW5kbGVyCiB7CiAgICAgaWYgKGhhbmRs
ZXIgPT0gX25ldHdvcmsxSGFuZGxlcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgW19uZXR3b3Jr
MUhhbmRsZXIgcmVsZWFzZV07Ci0gICAgX25ldHdvcmsxSGFuZGxlciA9IFtoYW5kbGVyIHJldGFp
bl07CisgICAgX25ldHdvcmsxSGFuZGxlciA9IGhhbmRsZXI7CiAKICAgICBhdXRvIGFsdGVybmF0
ZURpc3BhdGNoZXIgPSBtYWtlVW5pcXVlPE9iakNJbnNwZWN0b3JOZXR3b3JrMUJhY2tlbmREaXNw
YXRjaGVyPihoYW5kbGVyKTsKICAgICBhdXRvIGFsdGVybmF0ZUFnZW50ID0gbWFrZVVuaXF1ZTxB
bHRlcm5hdGVEaXNwYXRjaGFibGVBZ2VudDxOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyLCBBbHRl
cm5hdGVOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyPj4oIk5ldHdvcmsxIl9zLCAqX2NvbnRyb2xs
ZXIsIFdURk1vdmUoYWx0ZXJuYXRlRGlzcGF0Y2hlcikpOwpAQCAtMTA5NCw3ICsxMDg2LDcgQEAg
dXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIAogLSAoaWQ8VGVzdFByb3RvY29sTmV0d29yazFE
b21haW5IYW5kbGVyPiluZXR3b3JrMUhhbmRsZXIKIHsKLSAgICByZXR1cm4gX25ldHdvcmsxSGFu
ZGxlcjsKKyAgICByZXR1cm4gX25ldHdvcmsxSGFuZGxlci5nZXQoKTsKIH0KIAogLSAodm9pZClz
ZXROZXR3b3JrM0hhbmRsZXI6KGlkPFRlc3RQcm90b2NvbE5ldHdvcmszRG9tYWluSGFuZGxlcj4p
aGFuZGxlcgpAQCAtMTEwMiw4ICsxMDk0LDcgQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsK
ICAgICBpZiAoaGFuZGxlciA9PSBfbmV0d29yazNIYW5kbGVyKQogICAgICAgICByZXR1cm47CiAK
LSAgICBbX25ldHdvcmszSGFuZGxlciByZWxlYXNlXTsKLSAgICBfbmV0d29yazNIYW5kbGVyID0g
W2hhbmRsZXIgcmV0YWluXTsKKyAgICBfbmV0d29yazNIYW5kbGVyID0gaGFuZGxlcjsKIAogICAg
IGF1dG8gYWx0ZXJuYXRlRGlzcGF0Y2hlciA9IG1ha2VVbmlxdWU8T2JqQ0luc3BlY3Rvck5ldHdv
cmszQmFja2VuZERpc3BhdGNoZXI+KGhhbmRsZXIpOwogICAgIGF1dG8gYWx0ZXJuYXRlQWdlbnQg
PSBtYWtlVW5pcXVlPEFsdGVybmF0ZURpc3BhdGNoYWJsZUFnZW50PE5ldHdvcmszQmFja2VuZERp
c3BhdGNoZXIsIEFsdGVybmF0ZU5ldHdvcmszQmFja2VuZERpc3BhdGNoZXI+PigiTmV0d29yazMi
X3MsICpfY29udHJvbGxlciwgV1RGTW92ZShhbHRlcm5hdGVEaXNwYXRjaGVyKSk7CkBAIC0xMTEy
LDcgKzExMDMsNyBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiAtIChpZDxUZXN0UHJv
dG9jb2xOZXR3b3JrM0RvbWFpbkhhbmRsZXI+KW5ldHdvcmszSGFuZGxlcgogewotICAgIHJldHVy
biBfbmV0d29yazNIYW5kbGVyOworICAgIHJldHVybiBfbmV0d29yazNIYW5kbGVyLmdldCgpOwog
fQogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Nj
cmlwdHMvdGVzdHMvZXhwZWN0ZWQvZW51bS12YWx1ZXMuanNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZW51bS12YWx1ZXMu
anNvbi1yZXN1bHQKaW5kZXggNTljZTczYzRhOTc4YWRkNzA5ZjZmY2U3MzRjMjJkMDA3ZjExNzg0
NS4uOGZhZTFjNzkxZGFjZTU3OGQ5NTU2MWQ1ZThkOWJjMDc0NjE5Y2MwNSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2Vu
dW0tdmFsdWVzLmpzb24tcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9lbnVtLXZhbHVlcy5qc29uLXJlc3VsdApAQCAtODMz
LDggKzgzMyw4IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiBAaW1wbGVtZW50YXRpb24g
VGVzdFByb3RvY29sQ29uZmlndXJhdGlvbgogewogICAgIEF1Z21lbnRhYmxlSW5zcGVjdG9yQ29u
dHJvbGxlciogX2NvbnRyb2xsZXI7Ci0gICAgaWQ8VGVzdFByb3RvY29sQ29tbWFuZERvbWFpbkRv
bWFpbkhhbmRsZXI+IF9jb21tYW5kRG9tYWluSGFuZGxlcjsKLSAgICBUZXN0UHJvdG9jb2xFdmVu
dERvbWFpbkRvbWFpbkV2ZW50RGlzcGF0Y2hlciAqX2V2ZW50RG9tYWluRXZlbnREaXNwYXRjaGVy
OworICAgIFJldGFpblB0cjxpZDxUZXN0UHJvdG9jb2xDb21tYW5kRG9tYWluRG9tYWluSGFuZGxl
cj4+IF9jb21tYW5kRG9tYWluSGFuZGxlcjsKKyAgICBSZXRhaW5QdHI8VGVzdFByb3RvY29sRXZl
bnREb21haW5Eb21haW5FdmVudERpc3BhdGNoZXI+IF9ldmVudERvbWFpbkV2ZW50RGlzcGF0Y2hl
cjsKIH0KIAogLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoQ29udHJvbGxlcjooQXVnbWVudGFibGVJ
bnNwZWN0b3JDb250cm9sbGVyKiljb250cm9sbGVyCkBAIC04NDcsMjAgKzg0NywxMiBAQCB1c2lu
ZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogICAgIHJldHVybiBzZWxmOwogfQogCi0tICh2b2lkKWRl
YWxsb2MKLXsKLSAgICBbX2NvbW1hbmREb21haW5IYW5kbGVyIHJlbGVhc2VdOwotICAgIFtfZXZl
bnREb21haW5FdmVudERpc3BhdGNoZXIgcmVsZWFzZV07Ci0gICAgW3N1cGVyIGRlYWxsb2NdOwot
fQotCiAtICh2b2lkKXNldENvbW1hbmREb21haW5IYW5kbGVyOihpZDxUZXN0UHJvdG9jb2xDb21t
YW5kRG9tYWluRG9tYWluSGFuZGxlcj4paGFuZGxlcgogewogICAgIGlmIChoYW5kbGVyID09IF9j
b21tYW5kRG9tYWluSGFuZGxlcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgW19jb21tYW5kRG9t
YWluSGFuZGxlciByZWxlYXNlXTsKLSAgICBfY29tbWFuZERvbWFpbkhhbmRsZXIgPSBbaGFuZGxl
ciByZXRhaW5dOworICAgIF9jb21tYW5kRG9tYWluSGFuZGxlciA9IGhhbmRsZXI7CiAKICAgICBh
dXRvIGFsdGVybmF0ZURpc3BhdGNoZXIgPSBtYWtlVW5pcXVlPE9iakNJbnNwZWN0b3JDb21tYW5k
RG9tYWluQmFja2VuZERpc3BhdGNoZXI+KGhhbmRsZXIpOwogICAgIGF1dG8gYWx0ZXJuYXRlQWdl
bnQgPSBtYWtlVW5pcXVlPEFsdGVybmF0ZURpc3BhdGNoYWJsZUFnZW50PENvbW1hbmREb21haW5C
YWNrZW5kRGlzcGF0Y2hlciwgQWx0ZXJuYXRlQ29tbWFuZERvbWFpbkJhY2tlbmREaXNwYXRjaGVy
Pj4oIkNvbW1hbmREb21haW4iX3MsICpfY29udHJvbGxlciwgV1RGTW92ZShhbHRlcm5hdGVEaXNw
YXRjaGVyKSk7CkBAIC04NjksMTQgKzg2MSwxNCBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9y
OwogCiAtIChpZDxUZXN0UHJvdG9jb2xDb21tYW5kRG9tYWluRG9tYWluSGFuZGxlcj4pY29tbWFu
ZERvbWFpbkhhbmRsZXIKIHsKLSAgICByZXR1cm4gX2NvbW1hbmREb21haW5IYW5kbGVyOworICAg
IHJldHVybiBfY29tbWFuZERvbWFpbkhhbmRsZXIuZ2V0KCk7CiB9CiAKIC0gKFRlc3RQcm90b2Nv
bEV2ZW50RG9tYWluRG9tYWluRXZlbnREaXNwYXRjaGVyICopZXZlbnREb21haW5FdmVudERpc3Bh
dGNoZXIKIHsKICAgICBpZiAoIV9ldmVudERvbWFpbkV2ZW50RGlzcGF0Y2hlcikKLSAgICAgICAg
X2V2ZW50RG9tYWluRXZlbnREaXNwYXRjaGVyID0gW1tUZXN0UHJvdG9jb2xFdmVudERvbWFpbkRv
bWFpbkV2ZW50RGlzcGF0Y2hlciBhbGxvY10gaW5pdFdpdGhDb250cm9sbGVyOl9jb250cm9sbGVy
XTsKLSAgICByZXR1cm4gX2V2ZW50RG9tYWluRXZlbnREaXNwYXRjaGVyOworICAgICAgICBfZXZl
bnREb21haW5FdmVudERpc3BhdGNoZXIgPSBhZG9wdE5TKFtbVGVzdFByb3RvY29sRXZlbnREb21h
aW5Eb21haW5FdmVudERpc3BhdGNoZXIgYWxsb2NdIGluaXRXaXRoQ29udHJvbGxlcjpfY29udHJv
bGxlcl0pOworICAgIHJldHVybiBfZXZlbnREb21haW5FdmVudERpc3BhdGNoZXIuZ2V0KCk7CiB9
CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2Ny
aXB0cy90ZXN0cy9leHBlY3RlZC9ldmVudC10YXJnZXRUeXBlLW1hdGNoaW5nLWRvbWFpbi1kZWJ1
Z2dhYmxlVHlwZS5qc29uLXJlc3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
c2NyaXB0cy90ZXN0cy9leHBlY3RlZC9ldmVudC10YXJnZXRUeXBlLW1hdGNoaW5nLWRvbWFpbi1k
ZWJ1Z2dhYmxlVHlwZS5qc29uLXJlc3VsdAppbmRleCAwYWEyZDI2Yjc2NDk3MTYxOThiNDIwNjRk
YjhlODkzNDAyM2U3ZjRmLi45MjJmMjZlNDY3M2Q5ODc5ZjA5MjhhNTIxMTJmZTMyMGM1NjM2ZThm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVz
dHMvZXhwZWN0ZWQvZXZlbnQtdGFyZ2V0VHlwZS1tYXRjaGluZy1kb21haW4tZGVidWdnYWJsZVR5
cGUuanNvbi1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3Jp
cHRzL3Rlc3RzL2V4cGVjdGVkL2V2ZW50LXRhcmdldFR5cGUtbWF0Y2hpbmctZG9tYWluLWRlYnVn
Z2FibGVUeXBlLmpzb24tcmVzdWx0CkBAIC02NjksOCArNjY5LDggQEAgdXNpbmcgbmFtZXNwYWNl
IEluc3BlY3RvcjsKIEBpbXBsZW1lbnRhdGlvbiBUZXN0UHJvdG9jb2xDb25maWd1cmF0aW9uCiB7
CiAgICAgQXVnbWVudGFibGVJbnNwZWN0b3JDb250cm9sbGVyKiBfY29udHJvbGxlcjsKLSAgICBp
ZDxUZXN0UHJvdG9jb2xEb21haW5Eb21haW5IYW5kbGVyPiBfZG9tYWluSGFuZGxlcjsKLSAgICBU
ZXN0UHJvdG9jb2xEb21haW5Eb21haW5FdmVudERpc3BhdGNoZXIgKl9kb21haW5FdmVudERpc3Bh
dGNoZXI7CisgICAgUmV0YWluUHRyPGlkPFRlc3RQcm90b2NvbERvbWFpbkRvbWFpbkhhbmRsZXI+
PiBfZG9tYWluSGFuZGxlcjsKKyAgICBSZXRhaW5QdHI8VGVzdFByb3RvY29sRG9tYWluRG9tYWlu
RXZlbnREaXNwYXRjaGVyPiBfZG9tYWluRXZlbnREaXNwYXRjaGVyOwogfQogCiAtIChpbnN0YW5j
ZXR5cGUpaW5pdFdpdGhDb250cm9sbGVyOihBdWdtZW50YWJsZUluc3BlY3RvckNvbnRyb2xsZXIq
KWNvbnRyb2xsZXIKQEAgLTY4MywyMCArNjgzLDEyIEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0
b3I7CiAgICAgcmV0dXJuIHNlbGY7CiB9CiAKLS0gKHZvaWQpZGVhbGxvYwotewotICAgIFtfZG9t
YWluSGFuZGxlciByZWxlYXNlXTsKLSAgICBbX2RvbWFpbkV2ZW50RGlzcGF0Y2hlciByZWxlYXNl
XTsKLSAgICBbc3VwZXIgZGVhbGxvY107Ci19Ci0KIC0gKHZvaWQpc2V0RG9tYWluSGFuZGxlcjoo
aWQ8VGVzdFByb3RvY29sRG9tYWluRG9tYWluSGFuZGxlcj4paGFuZGxlcgogewogICAgIGlmICho
YW5kbGVyID09IF9kb21haW5IYW5kbGVyKQogICAgICAgICByZXR1cm47CiAKLSAgICBbX2RvbWFp
bkhhbmRsZXIgcmVsZWFzZV07Ci0gICAgX2RvbWFpbkhhbmRsZXIgPSBbaGFuZGxlciByZXRhaW5d
OworICAgIF9kb21haW5IYW5kbGVyID0gaGFuZGxlcjsKIAogICAgIGF1dG8gYWx0ZXJuYXRlRGlz
cGF0Y2hlciA9IG1ha2VVbmlxdWU8T2JqQ0luc3BlY3RvckRvbWFpbkJhY2tlbmREaXNwYXRjaGVy
PihoYW5kbGVyKTsKICAgICBhdXRvIGFsdGVybmF0ZUFnZW50ID0gbWFrZVVuaXF1ZTxBbHRlcm5h
dGVEaXNwYXRjaGFibGVBZ2VudDxEb21haW5CYWNrZW5kRGlzcGF0Y2hlciwgQWx0ZXJuYXRlRG9t
YWluQmFja2VuZERpc3BhdGNoZXI+PigiRG9tYWluIl9zLCAqX2NvbnRyb2xsZXIsIFdURk1vdmUo
YWx0ZXJuYXRlRGlzcGF0Y2hlcikpOwpAQCAtNzA1LDE0ICs2OTcsMTQgQEAgdXNpbmcgbmFtZXNw
YWNlIEluc3BlY3RvcjsKIAogLSAoaWQ8VGVzdFByb3RvY29sRG9tYWluRG9tYWluSGFuZGxlcj4p
ZG9tYWluSGFuZGxlcgogewotICAgIHJldHVybiBfZG9tYWluSGFuZGxlcjsKKyAgICByZXR1cm4g
X2RvbWFpbkhhbmRsZXIuZ2V0KCk7CiB9CiAKIC0gKFRlc3RQcm90b2NvbERvbWFpbkRvbWFpbkV2
ZW50RGlzcGF0Y2hlciAqKWRvbWFpbkV2ZW50RGlzcGF0Y2hlcgogewogICAgIGlmICghX2RvbWFp
bkV2ZW50RGlzcGF0Y2hlcikKLSAgICAgICAgX2RvbWFpbkV2ZW50RGlzcGF0Y2hlciA9IFtbVGVz
dFByb3RvY29sRG9tYWluRG9tYWluRXZlbnREaXNwYXRjaGVyIGFsbG9jXSBpbml0V2l0aENvbnRy
b2xsZXI6X2NvbnRyb2xsZXJdOwotICAgIHJldHVybiBfZG9tYWluRXZlbnREaXNwYXRjaGVyOwor
ICAgICAgICBfZG9tYWluRXZlbnREaXNwYXRjaGVyID0gYWRvcHROUyhbW1Rlc3RQcm90b2NvbERv
bWFpbkRvbWFpbkV2ZW50RGlzcGF0Y2hlciBhbGxvY10gaW5pdFdpdGhDb250cm9sbGVyOl9jb250
cm9sbGVyXSk7CisgICAgcmV0dXJuIF9kb21haW5FdmVudERpc3BhdGNoZXIuZ2V0KCk7CiB9CiAK
IEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0
cy90ZXN0cy9leHBlY3RlZC9ldmVudHMtd2l0aC1vcHRpb25hbC1wYXJhbWV0ZXJzLmpzb24tcmVz
dWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVj
dGVkL2V2ZW50cy13aXRoLW9wdGlvbmFsLXBhcmFtZXRlcnMuanNvbi1yZXN1bHQKaW5kZXggODQ3
YjQ5M2Y3MWM1N2U0MjczZDg0OTYyYmFlOWY2YzkyMGZkYzlkYS4uMzU0MmZlZWZkMWI5ZDMxNGRl
ZTgwNzRhZTM2ODQ3NDExYTMyYjAxNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2V2ZW50cy13aXRoLW9wdGlvbmFsLXBh
cmFtZXRlcnMuanNvbi1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2V2ZW50cy13aXRoLW9wdGlvbmFsLXBhcmFtZXRlcnMu
anNvbi1yZXN1bHQKQEAgLTY4NCw3ICs2ODQsNyBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9y
OwogQGltcGxlbWVudGF0aW9uIFRlc3RQcm90b2NvbENvbmZpZ3VyYXRpb24KIHsKICAgICBBdWdt
ZW50YWJsZUluc3BlY3RvckNvbnRyb2xsZXIqIF9jb250cm9sbGVyOwotICAgIFRlc3RQcm90b2Nv
bERhdGFiYXNlRG9tYWluRXZlbnREaXNwYXRjaGVyICpfZGF0YWJhc2VFdmVudERpc3BhdGNoZXI7
CisgICAgUmV0YWluUHRyPFRlc3RQcm90b2NvbERhdGFiYXNlRG9tYWluRXZlbnREaXNwYXRjaGVy
PiBfZGF0YWJhc2VFdmVudERpc3BhdGNoZXI7CiB9CiAKIC0gKGluc3RhbmNldHlwZSlpbml0V2l0
aENvbnRyb2xsZXI6KEF1Z21lbnRhYmxlSW5zcGVjdG9yQ29udHJvbGxlciopY29udHJvbGxlcgpA
QCAtNjk3LDE3ICs2OTcsMTEgQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKICAgICByZXR1
cm4gc2VsZjsKIH0KIAotLSAodm9pZClkZWFsbG9jCi17Ci0gICAgW19kYXRhYmFzZUV2ZW50RGlz
cGF0Y2hlciByZWxlYXNlXTsKLSAgICBbc3VwZXIgZGVhbGxvY107Ci19Ci0KIC0gKFRlc3RQcm90
b2NvbERhdGFiYXNlRG9tYWluRXZlbnREaXNwYXRjaGVyICopZGF0YWJhc2VFdmVudERpc3BhdGNo
ZXIKIHsKICAgICBpZiAoIV9kYXRhYmFzZUV2ZW50RGlzcGF0Y2hlcikKLSAgICAgICAgX2RhdGFi
YXNlRXZlbnREaXNwYXRjaGVyID0gW1tUZXN0UHJvdG9jb2xEYXRhYmFzZURvbWFpbkV2ZW50RGlz
cGF0Y2hlciBhbGxvY10gaW5pdFdpdGhDb250cm9sbGVyOl9jb250cm9sbGVyXTsKLSAgICByZXR1
cm4gX2RhdGFiYXNlRXZlbnREaXNwYXRjaGVyOworICAgICAgICBfZGF0YWJhc2VFdmVudERpc3Bh
dGNoZXIgPSBhZG9wdE5TKFtbVGVzdFByb3RvY29sRGF0YWJhc2VEb21haW5FdmVudERpc3BhdGNo
ZXIgYWxsb2NdIGluaXRXaXRoQ29udHJvbGxlcjpfY29udHJvbGxlcl0pOworICAgIHJldHVybiBf
ZGF0YWJhc2VFdmVudERpc3BhdGNoZXIuZ2V0KCk7CiB9CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9nZW5l
cmF0ZS1kb21haW5zLXdpdGgtZmVhdHVyZS1ndWFyZHMuanNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZ2VuZXJhdGUtZG9t
YWlucy13aXRoLWZlYXR1cmUtZ3VhcmRzLmpzb24tcmVzdWx0CmluZGV4IDEwNmZjZDc4YjYxMWEy
YzJhNjU5MDNkNzRiZWEzMTJiMzdhOWY2MmMuLjFkNDVjNmYyNzg2ODllYTBhMjAyNzkxZGZkNzE0
NGVmYmZkYjFiNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
c2NyaXB0cy90ZXN0cy9leHBlY3RlZC9nZW5lcmF0ZS1kb21haW5zLXdpdGgtZmVhdHVyZS1ndWFy
ZHMuanNvbi1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3Jp
cHRzL3Rlc3RzL2V4cGVjdGVkL2dlbmVyYXRlLWRvbWFpbnMtd2l0aC1mZWF0dXJlLWd1YXJkcy5q
c29uLXJlc3VsdApAQCAtNzQ3LDggKzc0Nyw4IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7
CiBAaW1wbGVtZW50YXRpb24gVGVzdFByb3RvY29sQ29uZmlndXJhdGlvbgogewogICAgIEF1Z21l
bnRhYmxlSW5zcGVjdG9yQ29udHJvbGxlciogX2NvbnRyb2xsZXI7Ci0gICAgaWQ8VGVzdFByb3Rv
Y29sTmV0d29yazFEb21haW5IYW5kbGVyPiBfbmV0d29yazFIYW5kbGVyOwotICAgIFRlc3RQcm90
b2NvbE5ldHdvcmszRG9tYWluRXZlbnREaXNwYXRjaGVyICpfbmV0d29yazNFdmVudERpc3BhdGNo
ZXI7CisgICAgUmV0YWluUHRyPGlkPFRlc3RQcm90b2NvbE5ldHdvcmsxRG9tYWluSGFuZGxlcj4+
IF9uZXR3b3JrMUhhbmRsZXI7CisgICAgUmV0YWluUHRyPFRlc3RQcm90b2NvbE5ldHdvcmszRG9t
YWluRXZlbnREaXNwYXRjaGVyPiBfbmV0d29yazNFdmVudERpc3BhdGNoZXI7CiB9CiAKIC0gKGlu
c3RhbmNldHlwZSlpbml0V2l0aENvbnRyb2xsZXI6KEF1Z21lbnRhYmxlSW5zcGVjdG9yQ29udHJv
bGxlciopY29udHJvbGxlcgpAQCAtNzYxLDIwICs3NjEsMTIgQEAgdXNpbmcgbmFtZXNwYWNlIElu
c3BlY3RvcjsKICAgICByZXR1cm4gc2VsZjsKIH0KIAotLSAodm9pZClkZWFsbG9jCi17Ci0gICAg
W19uZXR3b3JrMUhhbmRsZXIgcmVsZWFzZV07Ci0gICAgW19uZXR3b3JrM0V2ZW50RGlzcGF0Y2hl
ciByZWxlYXNlXTsKLSAgICBbc3VwZXIgZGVhbGxvY107Ci19Ci0KIC0gKHZvaWQpc2V0TmV0d29y
azFIYW5kbGVyOihpZDxUZXN0UHJvdG9jb2xOZXR3b3JrMURvbWFpbkhhbmRsZXI+KWhhbmRsZXIK
IHsKICAgICBpZiAoaGFuZGxlciA9PSBfbmV0d29yazFIYW5kbGVyKQogICAgICAgICByZXR1cm47
CiAKLSAgICBbX25ldHdvcmsxSGFuZGxlciByZWxlYXNlXTsKLSAgICBfbmV0d29yazFIYW5kbGVy
ID0gW2hhbmRsZXIgcmV0YWluXTsKKyAgICBfbmV0d29yazFIYW5kbGVyID0gaGFuZGxlcjsKIAog
ICAgIGF1dG8gYWx0ZXJuYXRlRGlzcGF0Y2hlciA9IG1ha2VVbmlxdWU8T2JqQ0luc3BlY3Rvck5l
dHdvcmsxQmFja2VuZERpc3BhdGNoZXI+KGhhbmRsZXIpOwogICAgIGF1dG8gYWx0ZXJuYXRlQWdl
bnQgPSBtYWtlVW5pcXVlPEFsdGVybmF0ZURpc3BhdGNoYWJsZUFnZW50PE5ldHdvcmsxQmFja2Vu
ZERpc3BhdGNoZXIsIEFsdGVybmF0ZU5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXI+PigiTmV0d29y
azEiX3MsICpfY29udHJvbGxlciwgV1RGTW92ZShhbHRlcm5hdGVEaXNwYXRjaGVyKSk7CkBAIC03
ODMsMTQgKzc3NSwxNCBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiAtIChpZDxUZXN0
UHJvdG9jb2xOZXR3b3JrMURvbWFpbkhhbmRsZXI+KW5ldHdvcmsxSGFuZGxlcgogewotICAgIHJl
dHVybiBfbmV0d29yazFIYW5kbGVyOworICAgIHJldHVybiBfbmV0d29yazFIYW5kbGVyLmdldCgp
OwogfQogCiAtIChUZXN0UHJvdG9jb2xOZXR3b3JrM0RvbWFpbkV2ZW50RGlzcGF0Y2hlciAqKW5l
dHdvcmszRXZlbnREaXNwYXRjaGVyCiB7CiAgICAgaWYgKCFfbmV0d29yazNFdmVudERpc3BhdGNo
ZXIpCi0gICAgICAgIF9uZXR3b3JrM0V2ZW50RGlzcGF0Y2hlciA9IFtbVGVzdFByb3RvY29sTmV0
d29yazNEb21haW5FdmVudERpc3BhdGNoZXIgYWxsb2NdIGluaXRXaXRoQ29udHJvbGxlcjpfY29u
dHJvbGxlcl07Ci0gICAgcmV0dXJuIF9uZXR3b3JrM0V2ZW50RGlzcGF0Y2hlcjsKKyAgICAgICAg
X25ldHdvcmszRXZlbnREaXNwYXRjaGVyID0gYWRvcHROUyhbW1Rlc3RQcm90b2NvbE5ldHdvcmsz
RG9tYWluRXZlbnREaXNwYXRjaGVyIGFsbG9jXSBpbml0V2l0aENvbnRyb2xsZXI6X2NvbnRyb2xs
ZXJdKTsKKyAgICByZXR1cm4gX25ldHdvcmszRXZlbnREaXNwYXRjaGVyLmdldCgpOwogfQogCiBA
ZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMv
dGVzdHMvZXhwZWN0ZWQvc2FtZS10eXBlLWlkLWRpZmZlcmVudC1kb21haW4uanNvbi1yZXN1bHQg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQv
c2FtZS10eXBlLWlkLWRpZmZlcmVudC1kb21haW4uanNvbi1yZXN1bHQKaW5kZXggNTZlZjYzNGRl
OTgwNjg1ODZkYmRjZDA4ODFiOTFkODQ5ZTJmYmExNi4uZDU1NWE3MzQ0MGZmMDljYmRiZDMyNmQw
Njc1ZmY3OTNlNzk3NDYwYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3NhbWUtdHlwZS1pZC1kaWZmZXJlbnQtZG9tYWlu
Lmpzb24tcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0
cy90ZXN0cy9leHBlY3RlZC9zYW1lLXR5cGUtaWQtZGlmZmVyZW50LWRvbWFpbi5qc29uLXJlc3Vs
dApAQCAtNTU5LDExICs1NTksNiBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogICAgIHJl
dHVybiBzZWxmOwogfQogCi0tICh2b2lkKWRlYWxsb2MKLXsKLSAgICBbc3VwZXIgZGVhbGxvY107
Ci19Ci0KIEBlbmQKIAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvc2hhZG93ZWQtb3B0aW9uYWwtdHlwZS1zZXR0ZXJz
Lmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rl
c3RzL2V4cGVjdGVkL3NoYWRvd2VkLW9wdGlvbmFsLXR5cGUtc2V0dGVycy5qc29uLXJlc3VsdApp
bmRleCAxODI0OTIxYTRjZWZjNmIzNDM3MjNjNGI1YWQ3NmE4MTAyMmM1M2FjLi5kZWEzYWM3MjRh
MWIxNThmOWVmZTVlYmZmODhlNGQzZjhhNjUwMDVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvc2hhZG93ZWQtb3B0aW9u
YWwtdHlwZS1zZXR0ZXJzLmpzb24tcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9zaGFkb3dlZC1vcHRpb25hbC10eXBlLXNl
dHRlcnMuanNvbi1yZXN1bHQKQEAgLTY4NSwxMSArNjg1LDYgQEAgdXNpbmcgbmFtZXNwYWNlIElu
c3BlY3RvcjsKICAgICByZXR1cm4gc2VsZjsKIH0KIAotLSAodm9pZClkZWFsbG9jCi17Ci0gICAg
W3N1cGVyIGRlYWxsb2NdOwotfQotCiBAZW5kCiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3Nob3VsZC1zdHJpcC1j
b21tZW50cy5qc29uLXJlc3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2Ny
aXB0cy90ZXN0cy9leHBlY3RlZC9zaG91bGQtc3RyaXAtY29tbWVudHMuanNvbi1yZXN1bHQKaW5k
ZXggMDBhYTM2ZmEzZDAyNDkxM2M1YjhkMjczODExZGE1YTAxNTQ4MzEyOC4uM2QxMjZmMzM5NjZl
Mzk0ZGM3NDg4NzBmZTk5ZGYzOTQ5NjA1NjhkNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3Nob3VsZC1zdHJpcC1jb21t
ZW50cy5qc29uLXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Nj
cmlwdHMvdGVzdHMvZXhwZWN0ZWQvc2hvdWxkLXN0cmlwLWNvbW1lbnRzLmpzb24tcmVzdWx0CkBA
IC01NDksMTEgKzU0OSw2IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAgICAgcmV0dXJu
IHNlbGY7CiB9CiAKLS0gKHZvaWQpZGVhbGxvYwotewotICAgIFtzdXBlciBkZWFsbG9jXTsKLX0K
LQogQGVuZAogCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
c2NyaXB0cy90ZXN0cy9leHBlY3RlZC90eXBlLWRlY2xhcmF0aW9uLWFsaWFzZWQtcHJpbWl0aXZl
LXR5cGUuanNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Njcmlw
dHMvdGVzdHMvZXhwZWN0ZWQvdHlwZS1kZWNsYXJhdGlvbi1hbGlhc2VkLXByaW1pdGl2ZS10eXBl
Lmpzb24tcmVzdWx0CmluZGV4IDM0YjFhY2JiY2FlYzgxMmQ4NGQxNjlmZTNiMmI4MjcyNTY3YWJk
NDEuLjI4ODA0ZDA2ZDRjM2E1ODBlN2NhZDgwNDFjYWJlOTkxZDg5ZTY4N2MgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC90
eXBlLWRlY2xhcmF0aW9uLWFsaWFzZWQtcHJpbWl0aXZlLXR5cGUuanNvbi1yZXN1bHQKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5
cGUtZGVjbGFyYXRpb24tYWxpYXNlZC1wcmltaXRpdmUtdHlwZS5qc29uLXJlc3VsdApAQCAtNTU0
LDExICs1NTQsNiBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogICAgIHJldHVybiBzZWxm
OwogfQogCi0tICh2b2lkKWRlYWxsb2MKLXsKLSAgICBbc3VwZXIgZGVhbGxvY107Ci19Ci0KIEBl
bmQKIAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Njcmlw
dHMvdGVzdHMvZXhwZWN0ZWQvdHlwZS1kZWNsYXJhdGlvbi1hcnJheS10eXBlLmpzb24tcmVzdWx0
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVk
L3R5cGUtZGVjbGFyYXRpb24tYXJyYXktdHlwZS5qc29uLXJlc3VsdAppbmRleCBhNWY0ODVmMTMy
ZGU2NjJmZmIzMDFmNTRiNDk4YzkyNjllZTc4OGM1Li44OTlkMmEwMmQxY2FmZWNjMzEzZWQ2ZDYy
MThjODhkODM2NGUwZjBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvdHlwZS1kZWNsYXJhdGlvbi1hcnJheS10eXBlLmpz
b24tcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90
ZXN0cy9leHBlY3RlZC90eXBlLWRlY2xhcmF0aW9uLWFycmF5LXR5cGUuanNvbi1yZXN1bHQKQEAg
LTY0NSwxMSArNjQ1LDYgQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKICAgICByZXR1cm4g
c2VsZjsKIH0KIAotLSAodm9pZClkZWFsbG9jCi17Ci0gICAgW3N1cGVyIGRlYWxsb2NdOwotfQot
CiBAZW5kCiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9z
Y3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5cGUtZGVjbGFyYXRpb24tZW51bS10eXBlLmpzb24tcmVz
dWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVj
dGVkL3R5cGUtZGVjbGFyYXRpb24tZW51bS10eXBlLmpzb24tcmVzdWx0CmluZGV4IGE3ZWNhZjQ1
ZDFlMmY2MjY1ZjI1MWVlZjJmNTJmMzMyMGFjMzE2NmEuLmZiOTMyZGE1MzJiNDc1NjhlOTYzNGMw
MjEzNDQzMTFlYjU1YThhMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC90eXBlLWRlY2xhcmF0aW9uLWVudW0tdHlwZS5q
c29uLXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMv
dGVzdHMvZXhwZWN0ZWQvdHlwZS1kZWNsYXJhdGlvbi1lbnVtLXR5cGUuanNvbi1yZXN1bHQKQEAg
LTY2NywxMSArNjY3LDYgQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKICAgICByZXR1cm4g
c2VsZjsKIH0KIAotLSAodm9pZClkZWFsbG9jCi17Ci0gICAgW3N1cGVyIGRlYWxsb2NdOwotfQot
CiBAZW5kCiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9z
Y3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5cGUtZGVjbGFyYXRpb24tb2JqZWN0LXR5cGUuanNvbi1y
ZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhw
ZWN0ZWQvdHlwZS1kZWNsYXJhdGlvbi1vYmplY3QtdHlwZS5qc29uLXJlc3VsdAppbmRleCA4ZWQ3
NjExNmE3MzQxMGNkMjdlZWZjMTMwNGM3MTBhMTczMzU3ZDNlLi43OTExMjdlMmZlMWM5YTNkMTBi
NGQyZGQyNGExN2NiNDg3MWQ3MmE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvdHlwZS1kZWNsYXJhdGlvbi1vYmplY3Qt
dHlwZS5qc29uLXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Nj
cmlwdHMvdGVzdHMvZXhwZWN0ZWQvdHlwZS1kZWNsYXJhdGlvbi1vYmplY3QtdHlwZS5qc29uLXJl
c3VsdApAQCAtMTI3MywxMSArMTI3Myw2IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAg
ICAgcmV0dXJuIHNlbGY7CiB9CiAKLS0gKHZvaWQpZGVhbGxvYwotewotICAgIFtzdXBlciBkZWFs
bG9jXTsKLX0KLQogQGVuZAogCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC90eXBlLXJlcXVpcmluZy1ydW50aW1lLWNh
c3RzLmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRz
L3Rlc3RzL2V4cGVjdGVkL3R5cGUtcmVxdWlyaW5nLXJ1bnRpbWUtY2FzdHMuanNvbi1yZXN1bHQK
aW5kZXggYmVhMjY0NmQxZWU0YTcxZjA3ODg5YTJkYmRkODA5OGYxMmFlNWJjYS4uM2E0NzdhNjdl
ZWExOTM3ZTVkZDE0NjM5YTgzZGU5M2VmNmYyYTEyYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5cGUtcmVxdWlyaW5n
LXJ1bnRpbWUtY2FzdHMuanNvbi1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5cGUtcmVxdWlyaW5nLXJ1bnRpbWUtY2Fz
dHMuanNvbi1yZXN1bHQKQEAgLTk4MSwxMSArOTgxLDYgQEAgdXNpbmcgbmFtZXNwYWNlIEluc3Bl
Y3RvcjsKICAgICByZXR1cm4gc2VsZjsKIH0KIAotLSAodm9pZClkZWFsbG9jCi17Ci0gICAgW3N1
cGVyIGRlYWxsb2NdOwotfQotCiBAZW5kCiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5cGUtd2l0aC1vcGVuLXBh
cmFtZXRlcnMuanNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Nj
cmlwdHMvdGVzdHMvZXhwZWN0ZWQvdHlwZS13aXRoLW9wZW4tcGFyYW1ldGVycy5qc29uLXJlc3Vs
dAppbmRleCA2YWRkYWIzNWRkZTYyOTdlM2Q3NTgxZWQ3NTJhNmFjYzk1MDhiZjNkLi5kZTk2NGU0
NTQ3MGRlN2JiOGZiYmYwYjY4MWQ5OTNlZDQzYWE0MWIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvdHlwZS13aXRoLW9w
ZW4tcGFyYW1ldGVycy5qc29uLXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvdHlwZS13aXRoLW9wZW4tcGFyYW1ldGVycy5q
c29uLXJlc3VsdApAQCAtNjkyLDExICs2OTIsNiBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9y
OwogICAgIHJldHVybiBzZWxmOwogfQogCi0tICh2b2lkKWRlYWxsb2MKLXsKLSAgICBbc3VwZXIg
ZGVhbGxvY107Ci19Ci0KIEBlbmQKIAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvdmVyc2lvbi5qc29uLXJlc3VsdCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC92
ZXJzaW9uLmpzb24tcmVzdWx0CmluZGV4IGMwNGFiNTk3M2U3NjYxMjFlNmJlODY5OTk4NTQxZDVh
NzEyNzJlOGQuLjVhZTIwZWU0OTJmYTYyMDRjMDA1MmFjZGZjMmM3MTA0ZThlMmY3YTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBl
Y3RlZC92ZXJzaW9uLmpzb24tcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC92ZXJzaW9uLmpzb24tcmVzdWx0CkBAIC01NTks
MTEgKzU1OSw2IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAgICAgcmV0dXJuIHNlbGY7
CiB9CiAKLS0gKHZvaWQpZGVhbGxvYwotewotICAgIFtzdXBlciBkZWFsbG9jXTsKLX0KLQogQGVu
ZAogCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0KaW5kZXggZDQ3Mjkw
N2Y2MzUzM2U0ODZiOTQ1NDgxN2I5MzRmMmIyMmNiYzMxNi4uMjk2ZDkzZDMwY2EzOWU2OTNlOTIw
OTJmZDNhNDQ3Mzg0MmFkOGU4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJ
T1MubW0KQEAgLTE4OSw3ICsxODksNyBAQCArIChXZWJBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciAq
KXRleHRNYXJrZXJXaXRoVmlzaWJsZVBvc2l0aW9uOihWaXNpYmxlUG9zaXRpb24mKQogICAgIGF1
dG8gdGV4dE1hcmtlckRhdGEgPSBjYWNoZS0+dGV4dE1hcmtlckRhdGFGb3JWaXNpYmxlUG9zaXRp
b24odmlzaWJsZVBvcyk7CiAgICAgaWYgKCF0ZXh0TWFya2VyRGF0YSkKICAgICAgICAgcmV0dXJu
IG5pbDsKLSAgICByZXR1cm4gW1tbV2ViQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIgYWxsb2NdIGlu
aXRXaXRoVGV4dE1hcmtlcjomdGV4dE1hcmtlckRhdGEudmFsdWUoKSBjYWNoZTpjYWNoZV0gYXV0
b3JlbGVhc2VdOworICAgIHJldHVybiBhZG9wdE5TKFtbV2ViQWNjZXNzaWJpbGl0eVRleHRNYXJr
ZXIgYWxsb2NdIGluaXRXaXRoVGV4dE1hcmtlcjomdGV4dE1hcmtlckRhdGEudmFsdWUoKSBjYWNo
ZTpjYWNoZV0pLmF1dG9yZWxlYXNlKCk7CiB9CiAKICsgKFdlYkFjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyICopdGV4dE1hcmtlcldpdGhDaGFyYWN0ZXJPZmZzZXQ6KENoYXJhY3Rlck9mZnNldCYpY2hh
cmFjdGVyT2Zmc2V0IGNhY2hlOihBWE9iamVjdENhY2hlKiljYWNoZQpAQCAtMjA0LDcgKzIwNCw3
IEBAICsgKFdlYkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyICopdGV4dE1hcmtlcldpdGhDaGFyYWN0
ZXJPZmZzZXQ6KENoYXJhY3Rlck9mZnNldCYpCiAgICAgY2FjaGUtPnRleHRNYXJrZXJEYXRhRm9y
Q2hhcmFjdGVyT2Zmc2V0KHRleHRNYXJrZXJEYXRhLCBjaGFyYWN0ZXJPZmZzZXQpOwogICAgIGlm
ICghdGV4dE1hcmtlckRhdGEuYXhJRCAmJiAhdGV4dE1hcmtlckRhdGEuaWdub3JlZCkKICAgICAg
ICAgcmV0dXJuIG5pbDsKLSAgICByZXR1cm4gW1tbV2ViQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIg
YWxsb2NdIGluaXRXaXRoVGV4dE1hcmtlcjomdGV4dE1hcmtlckRhdGEgY2FjaGU6Y2FjaGVdIGF1
dG9yZWxlYXNlXTsKKyAgICByZXR1cm4gYWRvcHROUyhbW1dlYkFjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyIGFsbG9jXSBpbml0V2l0aFRleHRNYXJrZXI6JnRleHRNYXJrZXJEYXRhIGNhY2hlOmNhY2hl
XSkuYXV0b3JlbGVhc2UoKTsKIH0KIAogKyAoV2ViQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIgKilz
dGFydE9yRW5kVGV4dE1hcmtlckZvclJhbmdlOihjb25zdCBPcHRpb25hbDxTaW1wbGVSYW5nZT4m
KXJhbmdlIGlzU3RhcnQ6KEJPT0wpaXNTdGFydCBjYWNoZTooQVhPYmplY3RDYWNoZSopY2FjaGUK
QEAgLTIxNyw3ICsyMTcsNyBAQCArIChXZWJBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciAqKXN0YXJ0
T3JFbmRUZXh0TWFya2VyRm9yUmFuZ2U6KGNvbnN0IE9wdGlvbmFsPFNpbQogICAgIGNhY2hlLT5z
dGFydE9yRW5kVGV4dE1hcmtlckRhdGFGb3JSYW5nZSh0ZXh0TWFya2VyRGF0YSwgKnJhbmdlLCBp
c1N0YXJ0KTsKICAgICBpZiAoIXRleHRNYXJrZXJEYXRhLmF4SUQpCiAgICAgICAgIHJldHVybiBu
aWw7Ci0gICAgcmV0dXJuIFtbW1dlYkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyIGFsbG9jXSBpbml0
V2l0aFRleHRNYXJrZXI6JnRleHRNYXJrZXJEYXRhIGNhY2hlOmNhY2hlXSBhdXRvcmVsZWFzZV07
CisgICAgcmV0dXJuIGFkb3B0TlMoW1tXZWJBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciBhbGxvY10g
aW5pdFdpdGhUZXh0TWFya2VyOiZ0ZXh0TWFya2VyRGF0YSBjYWNoZTpjYWNoZV0pLmF1dG9yZWxl
YXNlKCk7CiB9CiAKIC0gKE5TRGF0YSAqKWRhdGFSZXByZXNlbnRhdGlvbgpAQCAtMjkwLDcgKzI5
MCw3IEBAIC0gKEJPT0wpX3ByZXBhcmVBY2Nlc3NpYmlsaXR5Q2FsbAogewogICAgIC8vIHJkYXI6
Ly83OTgwMzE4IGlmIHdlIHN0YXJ0IGEgY2FsbCwgdGhlbiBibG9jayBpbiBXZWJUaHJlYWRMb2Nr
KCksIHRoZW4gd2UncmUgZGVhbGxvY2VkIG9uIGFub3RoZXIsIHRocmVhZCwgd2UgY291bGQKICAg
ICAvLyBjcmFzaCwgc28gd2Ugc2hvdWxkIHJldGFpbiBvdXJzZWxmIGZvciB0aGUgZHVyYXRpb24g
b2YgdXNhZ2UgaGVyZS4KLSAgICBbW3NlbGYgcmV0YWluXSBhdXRvcmVsZWFzZV07CisgICAgcmV0
YWluUHRyKHNlbGYpLmF1dG9yZWxlYXNlKCk7CiAKICAgICBXZWJUaHJlYWRMb2NrKCk7CiAgICAg
CkBAIC0yMzMzLDcgKzIzMzMsNyBAQCAtIChOU0FycmF5ICopYXJyYXlPZlRleHRGb3JUZXh0TWFy
a2VyczooTlNBcnJheSAqKW1hcmtlcnMgYXR0cmlidXRlZDooQk9PTClhdHRyaQogICAgICAgICBy
ZXR1cm4gbmlsOwogCiAgICAgLy8gaXRlcmF0ZSBvdmVyIHRoZSByYW5nZSB0byBidWlsZCB0aGUg
QVggYXR0cmlidXRlZCBzdHJpbmcKLSAgICBOU011dGFibGVBcnJheSogYXJyYXkgPSBbW05TTXV0
YWJsZUFycmF5IGFsbG9jXSBpbml0XTsKKyAgICBhdXRvIGFycmF5ID0gYWRvcHROUyhbW05TTXV0
YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7CiAgICAgVGV4dEl0ZXJhdG9yIGl0KCpyYW5nZSk7CiAg
ICAgZm9yICg7ICFpdC5hdEVuZCgpOyBpdC5hZHZhbmNlKCkpIHsKICAgICAgICAgTm9kZSYgbm9k
ZSA9IGl0LnJhbmdlKCkuc3RhcnQuY29udGFpbmVyOwpAQCAtMjM0MywxMiArMjM0MywxMiBAQCAt
IChOU0FycmF5ICopYXJyYXlPZlRleHRGb3JUZXh0TWFya2VyczooTlNBcnJheSAqKW1hcmtlcnMg
YXR0cmlidXRlZDooQk9PTClhdHRyaQogICAgICAgICAgICAgaWYgKCFhdHRyaWJ1dGVkKSB7CiAg
ICAgICAgICAgICAgICAgLy8gRmlyc3QgY2hlY2sgaWYgdGhpcyBpcyByZXByZXNlbnRlZCBieSBh
IGxpbmsuCiAgICAgICAgICAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogbGlua09iamVjdCA9
IEFjY2Vzc2liaWxpdHlPYmplY3Q6OmFuY2hvckVsZW1lbnRGb3JOb2RlKCZub2RlKTsKLSAgICAg
ICAgICAgICAgICBpZiAoW3NlbGYgX2FkZEFjY2Vzc2liaWxpdHlPYmplY3Q6bGlua09iamVjdCB0
b1RleHRNYXJrZXJBcnJheTphcnJheV0pCisgICAgICAgICAgICAgICAgaWYgKFtzZWxmIF9hZGRB
Y2Nlc3NpYmlsaXR5T2JqZWN0OmxpbmtPYmplY3QgdG9UZXh0TWFya2VyQXJyYXk6YXJyYXkuZ2V0
KCldKQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICAgICAgICAgIC8v
IE5leHQgY2hlY2sgaWYgdGhpcyByZWdpb24gaXMgcmVwcmVzZW50ZWQgYnkgYSBoZWFkaW5nLgog
ICAgICAgICAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGhlYWRpbmdPYmplY3QgPSBBY2Nl
c3NpYmlsaXR5T2JqZWN0OjpoZWFkaW5nRWxlbWVudEZvck5vZGUoJm5vZGUpOwotICAgICAgICAg
ICAgICAgIGlmIChbc2VsZiBfYWRkQWNjZXNzaWJpbGl0eU9iamVjdDpoZWFkaW5nT2JqZWN0IHRv
VGV4dE1hcmtlckFycmF5OmFycmF5XSkKKyAgICAgICAgICAgICAgICBpZiAoW3NlbGYgX2FkZEFj
Y2Vzc2liaWxpdHlPYmplY3Q6aGVhZGluZ09iamVjdCB0b1RleHRNYXJrZXJBcnJheTphcnJheS5n
ZXQoKV0pCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgICAgICAgICAg
U3RyaW5nIGxpc3RNYXJrZXJUZXh0ID0gQWNjZXNzaWJpbGl0eU9iamVjdDo6bGlzdE1hcmtlclRl
eHRGb3JOb2RlQW5kUG9zaXRpb24oJm5vZGUsIG1ha2VDb250YWluZXJPZmZzZXRQb3NpdGlvbihp
dC5yYW5nZSgpLnN0YXJ0KSk7CkBAIC0yMzc1LDEyICsyMzc1LDEyIEBAIC0gKE5TQXJyYXkgKilh
cnJheU9mVGV4dEZvclRleHRNYXJrZXJzOihOU0FycmF5ICopbWFya2VycyBhdHRyaWJ1dGVkOihC
T09MKWF0dHJpCiAgICAgICAgICAgICBpZiAocmVwbGFjZWROb2RlKSB7CiAgICAgICAgICAgICAg
ICAgQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqID0gc2VsZi5heEJhY2tpbmdPYmplY3QtPmF4T2Jq
ZWN0Q2FjaGUoKS0+Z2V0T3JDcmVhdGUocmVwbGFjZWROb2RlLT5yZW5kZXJlcigpKTsKICAgICAg
ICAgICAgICAgICBpZiAob2JqICYmICFvYmotPmFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSkKLSAg
ICAgICAgICAgICAgICAgICAgW3NlbGYgX2FkZEFjY2Vzc2liaWxpdHlPYmplY3Q6b2JqIHRvVGV4
dE1hcmtlckFycmF5OmFycmF5XTsKKyAgICAgICAgICAgICAgICAgICAgW3NlbGYgX2FkZEFjY2Vz
c2liaWxpdHlPYmplY3Q6b2JqIHRvVGV4dE1hcmtlckFycmF5OmFycmF5LmdldCgpXTsKICAgICAg
ICAgICAgIH0KICAgICAgICAgfQogICAgIH0KIAotICAgIHJldHVybiBbYXJyYXkgYXV0b3JlbGVh
c2VdOworICAgIHJldHVybiBhcnJheS5hdXRvcmVsZWFzZSgpOwogfQogCiAvLyBGSVhNRTogTm8g
cmVhc29uIGZvciB0aGlzIHRvIGJlIGEgbWV0aG9kIGluc3RlYWQgb2YgYSBmdW5jdGlvbi4KQEAg
LTI1MzksNyArMjUzOSw3IEBAIC0gKGlkKV9zdHJpbmdGcm9tU3RhcnRNYXJrZXI6KFdlYkFjY2Vz
c2liaWxpdHlUZXh0TWFya2VyKilzdGFydE1hcmtlciB0b0VuZE1hcmtlCiAgICAgCiAgICAgTlNB
cnJheSogYXJyYXkgPSBbc2VsZiBhcnJheU9mVGV4dEZvclRleHRNYXJrZXJzOkBbc3RhcnRNYXJr
ZXIsIGVuZE1hcmtlcl0gYXR0cmlidXRlZDphdHRyaWJ1dGVkXTsKICAgICBDbGFzcyByZXR1cm5D
bGFzcyA9IGF0dHJpYnV0ZWQgPyBbTlNNdXRhYmxlQXR0cmlidXRlZFN0cmluZyBjbGFzc10gOiBb
TlNNdXRhYmxlU3RyaW5nIGNsYXNzXTsKLSAgICBpZCByZXR1cm5WYWx1ZSA9IFtbKE5TU3RyaW5n
ICopW3JldHVybkNsYXNzIGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07CisgICAgYXV0byByZXR1
cm5WYWx1ZSA9IGFkb3B0TlMoWyhOU1N0cmluZyAqKVtyZXR1cm5DbGFzcyBhbGxvY10gaW5pdF0p
OwogICAgIAogICAgIGNvbnN0IHVuaWNoYXIgYXR0YWNobWVudENoYXIgPSBOU0F0dGFjaG1lbnRD
aGFyYWN0ZXI7CiAgICAgTlNJbnRlZ2VyIGNvdW50ID0gW2FycmF5IGNvdW50XTsKQEAgLTI1NDcs
MTcgKzI1NDcsMTcgQEAgLSAoaWQpX3N0cmluZ0Zyb21TdGFydE1hcmtlcjooV2ViQWNjZXNzaWJp
bGl0eVRleHRNYXJrZXIqKXN0YXJ0TWFya2VyIHRvRW5kTWFya2UKICAgICAgICAgaWQgb2JqZWN0
ID0gW2FycmF5IG9iamVjdEF0SW5kZXg6a107CiAKICAgICAgICAgaWYgKGF0dHJpYnV0ZWQgJiYg
W29iamVjdCBpc0tpbmRPZkNsYXNzOltXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBjbGFz
c11dKQotICAgICAgICAgICAgb2JqZWN0ID0gW1tbTlNNdXRhYmxlQXR0cmlidXRlZFN0cmluZyBh
bGxvY10gaW5pdFdpdGhTdHJpbmc6W05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZhdHRh
Y2htZW50Q2hhciBsZW5ndGg6MV0gYXR0cmlidXRlczpAeyBVSUFjY2Vzc2liaWxpdHlUb2tlbkF0
dGFjaG1lbnQgOiBvYmplY3QgfV0gYXV0b3JlbGVhc2VdOworICAgICAgICAgICAgb2JqZWN0ID0g
YWRvcHROUyhbW05TTXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoU3RyaW5n
OltOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomYXR0YWNobWVudENoYXIgbGVuZ3RoOjFd
IGF0dHJpYnV0ZXM6QHsgVUlBY2Nlc3NpYmlsaXR5VG9rZW5BdHRhY2htZW50IDogb2JqZWN0IH1d
KS5hdXRvcmVsZWFzZSgpOwogICAgICAgICAKICAgICAgICAgaWYgKCFbb2JqZWN0IGlzS2luZE9m
Q2xhc3M6cmV0dXJuQ2xhc3NdKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIAogICAg
ICAgICBpZiAoYXR0cmlidXRlZCkKLSAgICAgICAgICAgIFsoTlNNdXRhYmxlQXR0cmlidXRlZFN0
cmluZyAqKXJldHVyblZhbHVlIGFwcGVuZEF0dHJpYnV0ZWRTdHJpbmc6b2JqZWN0XTsKKyAgICAg
ICAgICAgIFsoTlNNdXRhYmxlQXR0cmlidXRlZFN0cmluZyAqKXJldHVyblZhbHVlLmdldCgpIGFw
cGVuZEF0dHJpYnV0ZWRTdHJpbmc6b2JqZWN0XTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAg
WyhOU011dGFibGVTdHJpbmcgKilyZXR1cm5WYWx1ZSBhcHBlbmRTdHJpbmc6b2JqZWN0XTsKKyAg
ICAgICAgICAgIFsoTlNNdXRhYmxlU3RyaW5nICopcmV0dXJuVmFsdWUuZ2V0KCkgYXBwZW5kU3Ry
aW5nOm9iamVjdF07CiAgICAgfQotICAgIHJldHVybiByZXR1cm5WYWx1ZTsKKyAgICByZXR1cm4g
cmV0dXJuVmFsdWUuYXV0b3JlbGVhc2UoKTsKIH0KIAogLSAoaWQpX3N0cmluZ0ZvclJhbmdlOihO
U1JhbmdlKXJhbmdlIGF0dHJpYnV0ZWQ6KEJPT0wpYXR0cmlidXRlZApAQCAtMjg0Nyw3ICsyODQ3
LDcgQEAgLSAoV2ViQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIgKiluZXh0TWFya2VyRm9yQ2hhcmFj
dGVyT2Zmc2V0OihDaGFyYWN0ZXJPZmZzZXQmKWMKICAgICBjYWNoZS0+dGV4dE1hcmtlckRhdGFG
b3JOZXh0Q2hhcmFjdGVyT2Zmc2V0KHRleHRNYXJrZXJEYXRhLCBjaGFyYWN0ZXJPZmZzZXQpOwog
ICAgIGlmICghdGV4dE1hcmtlckRhdGEuYXhJRCkKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICBy
ZXR1cm4gW1tbV2ViQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIgYWxsb2NdIGluaXRXaXRoVGV4dE1h
cmtlcjomdGV4dE1hcmtlckRhdGEgY2FjaGU6Y2FjaGVdIGF1dG9yZWxlYXNlXTsKKyAgICByZXR1
cm4gYWRvcHROUyhbW1dlYkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyIGFsbG9jXSBpbml0V2l0aFRl
eHRNYXJrZXI6JnRleHRNYXJrZXJEYXRhIGNhY2hlOmNhY2hlXSkuYXV0b3JlbGVhc2UoKTsKIH0K
IAogLSAoV2ViQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIgKilwcmV2aW91c01hcmtlckZvckNoYXJh
Y3Rlck9mZnNldDooQ2hhcmFjdGVyT2Zmc2V0JiljaGFyYWN0ZXJPZmZzZXQKQEAgLTI4NjAsNyAr
Mjg2MCw3IEBAIC0gKFdlYkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyICopcHJldmlvdXNNYXJrZXJG
b3JDaGFyYWN0ZXJPZmZzZXQ6KENoYXJhY3Rlck9mZnNlCiAgICAgY2FjaGUtPnRleHRNYXJrZXJE
YXRhRm9yUHJldmlvdXNDaGFyYWN0ZXJPZmZzZXQodGV4dE1hcmtlckRhdGEsIGNoYXJhY3Rlck9m
ZnNldCk7CiAgICAgaWYgKCF0ZXh0TWFya2VyRGF0YS5heElEKQogICAgICAgICByZXR1cm4gbmls
OwotICAgIHJldHVybiBbW1tXZWJBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciBhbGxvY10gaW5pdFdp
dGhUZXh0TWFya2VyOiZ0ZXh0TWFya2VyRGF0YSBjYWNoZTpjYWNoZV0gYXV0b3JlbGVhc2VdOwor
ICAgIHJldHVybiBhZG9wdE5TKFtbV2ViQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIgYWxsb2NdIGlu
aXRXaXRoVGV4dE1hcmtlcjomdGV4dE1hcmtlckRhdGEgY2FjaGU6Y2FjaGVdKS5hdXRvcmVsZWFz
ZSgpOwogfQogCiAtIChPcHRpb25hbDxTaW1wbGVSYW5nZT4pcmFuZ2VGb3JUZXh0TWFya2Vyczoo
TlNBcnJheSAqKXRleHRNYXJrZXJzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L21hYy9BWE9iamVjdENhY2hlTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9tYWMvQVhPYmplY3RDYWNoZU1hYy5tbQppbmRleCBkYzRjZDEzMDkzMDFlMmM2OTY1MzBh
NjU2ZjA2MjUyOTk5OWIyY2RiLi5iN2NmZjc0ZTc2MmEyOGUwNDU1NzQ2NDE2MTJkZTg0YjU2OTQx
ZjI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9BWE9iamVj
dENhY2hlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL0FYT2Jq
ZWN0Q2FjaGVNYWMubW0KQEAgLTQ4OSwxNSArNDg5LDE1IEBAIHN0YXRpYyBOU0RpY3Rpb25hcnkg
KnRleHRSZXBsYWNlbWVudENoYW5nZURpY3Rpb25hcnkoQVhDb3JlT2JqZWN0JiBvYmplY3QsIEFY
VGV4CiAgICAgTlNVSW50ZWdlciBsZW5ndGggPSBbdGV4dCBsZW5ndGhdOwogICAgIGlmICghbGVu
Z3RoKQogICAgICAgICByZXR1cm4gbmlsOwotICAgIE5TTXV0YWJsZURpY3Rpb25hcnkgKmNoYW5n
ZSA9IFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdFdpdGhDYXBhY2l0eTo0XTsKKyAg
ICBhdXRvIGNoYW5nZSA9IGFkb3B0TlMoW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0
V2l0aENhcGFjaXR5OjRdKTsKICAgICBbY2hhbmdlIHNldE9iamVjdDpAKHBsYXRmb3JtRWRpdFR5
cGVGb3JXZWJDb3JlRWRpdFR5cGUodHlwZSkpIGZvcktleTpOU0FjY2Vzc2liaWxpdHlUZXh0RWRp
dFR5cGVdOwogICAgIGlmIChsZW5ndGggPiBBWFZhbHVlQ2hhbmdlVHJ1bmNhdGlvbkxlbmd0aCkg
ewogICAgICAgICBbY2hhbmdlIHNldE9iamVjdDpAKGxlbmd0aCkgZm9yS2V5Ok5TQWNjZXNzaWJp
bGl0eVRleHRDaGFuZ2VWYWx1ZUxlbmd0aF07CiAgICAgICAgIHRleHQgPSBbdGV4dCBzdWJzdHJp
bmdUb0luZGV4OkFYVmFsdWVDaGFuZ2VUcnVuY2F0aW9uTGVuZ3RoXTsKICAgICB9CiAgICAgW2No
YW5nZSBzZXRPYmplY3Q6dGV4dCBmb3JLZXk6TlNBY2Nlc3NpYmlsaXR5VGV4dENoYW5nZVZhbHVl
XTsKLSAgICBhZGRUZXh0TWFya2VyRm9yKGNoYW5nZSwgb2JqZWN0LCBtYXJrZXJUYXJnZXQpOwot
ICAgIHJldHVybiBbY2hhbmdlIGF1dG9yZWxlYXNlXTsKKyAgICBhZGRUZXh0TWFya2VyRm9yKGNo
YW5nZS5nZXQoKSwgb2JqZWN0LCBtYXJrZXJUYXJnZXQpOworICAgIHJldHVybiBjaGFuZ2UuYXV0
b3JlbGVhc2UoKTsKIH0KIAogdm9pZCBBWE9iamVjdENhY2hlOjpwb3N0VGV4dFN0YXRlQ2hhbmdl
UGxhdGZvcm1Ob3RpZmljYXRpb24oQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqZWN0LCBBWFRleHRF
ZGl0VHlwZSB0eXBlLCBjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IFZpc2libGVQb3NpdGlvbiYg
cG9zaXRpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9X
ZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UubW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UubW0KaW5kZXgg
YWNhYmZhMmM0N2JhMGMyZDExYTgyN2IyOTYwN2RjZmVmNzZkZWMwOS4uMjRmYzhjNWVjM2YzMjMz
ZjZmZjU3NzdmMTVlMzljN2ZiYTEzOWNmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RX
cmFwcGVyQmFzZS5tbQpAQCAtNTI3LDcgKzUyNyw3IEBAIHN0YXRpYyBib29sIGlzVmFsdWVUeXBl
U3VwcG9ydGVkKGlkIHZhbHVlKQogc3RhdGljIE5TQXJyYXkgKmFycmF5UmVtb3ZpbmdOb25TdXBw
b3J0ZWRUeXBlcyhOU0FycmF5ICphcnJheSkKIHsKICAgICBBU1NFUlQoW2FycmF5IGlzS2luZE9m
Q2xhc3M6W05TQXJyYXkgY2xhc3NdXSk7Ci0gICAgTlNNdXRhYmxlQXJyYXkgKm11dGFibGVBcnJh
eSA9IFthcnJheSBtdXRhYmxlQ29weV07CisgICAgYXV0byBtdXRhYmxlQXJyYXkgPSBhZG9wdE5T
KFthcnJheSBtdXRhYmxlQ29weV0pOwogICAgIGZvciAoTlNVSW50ZWdlciBpID0gMDsgaSA8IFtt
dXRhYmxlQXJyYXkgY291bnRdOykgewogICAgICAgICBpZCB2YWx1ZSA9IFttdXRhYmxlQXJyYXkg
b2JqZWN0QXRJbmRleDppXTsKICAgICAgICAgaWYgKFt2YWx1ZSBpc0tpbmRPZkNsYXNzOltOU0Rp
Y3Rpb25hcnkgY2xhc3NdXSkKQEAgLTU0MCw3ICs1NDAsNyBAQCBzdGF0aWMgTlNBcnJheSAqYXJy
YXlSZW1vdmluZ05vblN1cHBvcnRlZFR5cGVzKE5TQXJyYXkgKmFycmF5KQogICAgICAgICB9CiAg
ICAgICAgIGkrKzsKICAgICB9Ci0gICAgcmV0dXJuIFttdXRhYmxlQXJyYXkgYXV0b3JlbGVhc2Vd
OworICAgIHJldHVybiBtdXRhYmxlQXJyYXkuYXV0b3JlbGVhc2UoKTsKIH0KIAogc3RhdGljIE5T
RGljdGlvbmFyeSAqZGljdGlvbmFyeVJlbW92aW5nTm9uU3VwcG9ydGVkVHlwZXMoTlNEaWN0aW9u
YXJ5ICpkaWN0aW9uYXJ5KQpAQCAtNTQ4LDcgKzU0OCw3IEBAIHN0YXRpYyBOU0RpY3Rpb25hcnkg
KmRpY3Rpb25hcnlSZW1vdmluZ05vblN1cHBvcnRlZFR5cGVzKE5TRGljdGlvbmFyeSAqZGljdGlv
bmFyCiAgICAgaWYgKCFkaWN0aW9uYXJ5KQogICAgICAgICByZXR1cm4gbmlsOwogICAgIEFTU0VS
VChbZGljdGlvbmFyeSBpc0tpbmRPZkNsYXNzOltOU0RpY3Rpb25hcnkgY2xhc3NdXSk7Ci0gICAg
TlNNdXRhYmxlRGljdGlvbmFyeSAqbXV0YWJsZURpY3Rpb25hcnkgPSBbZGljdGlvbmFyeSBtdXRh
YmxlQ29weV07CisgICAgYXV0byBtdXRhYmxlRGljdGlvbmFyeSA9IGFkb3B0TlMoW2RpY3Rpb25h
cnkgbXV0YWJsZUNvcHldKTsKICAgICBmb3IgKE5TU3RyaW5nICprZXkgaW4gZGljdGlvbmFyeSkg
ewogICAgICAgICBpZCB2YWx1ZSA9IFtkaWN0aW9uYXJ5IG9iamVjdEZvcktleTprZXldOwogICAg
ICAgICBpZiAoW3ZhbHVlIGlzS2luZE9mQ2xhc3M6W05TRGljdGlvbmFyeSBjbGFzc11dKQpAQCAt
NTU4LDcgKzU1OCw3IEBAIHN0YXRpYyBOU0RpY3Rpb25hcnkgKmRpY3Rpb25hcnlSZW1vdmluZ05v
blN1cHBvcnRlZFR5cGVzKE5TRGljdGlvbmFyeSAqZGljdGlvbmFyCiAgICAgICAgIGVsc2UgaWYg
KCFpc1ZhbHVlVHlwZVN1cHBvcnRlZCh2YWx1ZSkpCiAgICAgICAgICAgICBbbXV0YWJsZURpY3Rp
b25hcnkgcmVtb3ZlT2JqZWN0Rm9yS2V5OmtleV07CiAgICAgfQotICAgIHJldHVybiBbbXV0YWJs
ZURpY3Rpb25hcnkgYXV0b3JlbGVhc2VdOworICAgIHJldHVybiBtdXRhYmxlRGljdGlvbmFyeS5h
dXRvcmVsZWFzZSgpOwogfQogCiAtICh2b2lkKWFjY2Vzc2liaWxpdHlQb3N0ZWROb3RpZmljYXRp
b246KE5TU3RyaW5nICopbm90aWZpY2F0aW9uTmFtZSB1c2VySW5mbzooTlNEaWN0aW9uYXJ5ICop
dXNlckluZm8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL1dlYlNjcmlw
dE9iamVjdC5tbSBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL1dlYlNjcmlwdE9iamVjdC5t
bQppbmRleCAzYTEwNjJhMTMxNmFhNDllNzViYTkyZDNiM2ViNmM3NzE5YWNiYTExLi5iZDUyY2I0
OTE4ODZiZWU0Y2Q2Mzk4N2YyMjAzZDQyYjdiNDVhOWNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9icmlkZ2Uvb2JqYy9XZWJTY3JpcHRPYmplY3QubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
YnJpZGdlL29iamMvV2ViU2NyaXB0T2JqZWN0Lm1tCkBAIC04Niw3ICs4Niw3IEBAIE5TT2JqZWN0
ICpnZXRKU1dyYXBwZXIoSlNPYmplY3QqIGltcGwpCiAgICAgTG9ja0hvbGRlciBob2xkZXIoJnNw
aW5Mb2NrKTsKIAogICAgIE5TT2JqZWN0KiB3cmFwcGVyID0gd3JhcHBlckNhY2hlKCkuZ2V0KGlt
cGwpOwotICAgIHJldHVybiB3cmFwcGVyID8gW1t3cmFwcGVyIHJldGFpbl0gYXV0b3JlbGVhc2Vd
IDogbmlsOworICAgIHJldHVybiB3cmFwcGVyID8gcmV0YWluUHRyKHdyYXBwZXIpLmF1dG9yZWxl
YXNlKCkgOiBuaWw7CiB9CiAKIHZvaWQgYWRkSlNXcmFwcGVyKE5TT2JqZWN0ICp3cmFwcGVyLCBK
U09iamVjdCogaW1wbCkKQEAgLTExNiw3ICsxMTYsNyBAQCBpZCBjcmVhdGVKU1dyYXBwZXIoSlND
OjpKU09iamVjdCogb2JqZWN0LCBSZWZQdHI8SlNDOjpCaW5kaW5nczo6Um9vdE9iamVjdD4mJiBv
cgogewogICAgIGlmIChpZCB3cmFwcGVyID0gZ2V0SlNXcmFwcGVyKG9iamVjdCkpCiAgICAgICAg
IHJldHVybiB3cmFwcGVyOwotICAgIHJldHVybiBbW1tXZWJTY3JpcHRPYmplY3QgYWxsb2NdIF9p
bml0V2l0aEpTT2JqZWN0Om9iamVjdCBvcmlnaW5Sb290T2JqZWN0OldURk1vdmUob3JpZ2luKSBy
b290T2JqZWN0OldURk1vdmUocm9vdCldIGF1dG9yZWxlYXNlXTsKKyAgICByZXR1cm4gYWRvcHRO
UyhbW1dlYlNjcmlwdE9iamVjdCBhbGxvY10gX2luaXRXaXRoSlNPYmplY3Q6b2JqZWN0IG9yaWdp
blJvb3RPYmplY3Q6V1RGTW92ZShvcmlnaW4pIHJvb3RPYmplY3Q6V1RGTW92ZShyb290KV0pLmF1
dG9yZWxlYXNlKCk7CiB9CiAKIHN0YXRpYyB2b2lkIGFkZEV4Y2VwdGlvblRvQ29uc29sZShKU0M6
OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkV4Y2VwdGlvbiogZXhj
ZXB0aW9uKQpAQCAtNzE0LDcgKzcxNCw3IEBAIElHTk9SRV9XQVJOSU5HU19FTkQKIAogKyAoV2Vi
VW5kZWZpbmVkICopdW5kZWZpbmVkCiB7Ci0gICAgcmV0dXJuIFtbW1dlYlVuZGVmaW5lZCBhbGxv
Y10gaW5pdF0gYXV0b3JlbGVhc2VdOworICAgIHJldHVybiBhZG9wdE5TKFtbV2ViVW5kZWZpbmVk
IGFsbG9jXSBpbml0XSkuYXV0b3JlbGVhc2UoKTsKIH0KIAogQGVuZApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYnJpZGdlL3Rlc3RiaW5kaW5ncy5tbSBiL1NvdXJjZS9XZWJDb3JlL2JyaWRn
ZS90ZXN0YmluZGluZ3MubW0KaW5kZXggNGFjODU0MGI2ZmE3NjEzNDY5MzU4MDgxYTE1YTE4YThi
MDIyYjEzNy4uMjBhMDZhM2ExZmEwODZjMDA4YjRkOTc5ZDY3NDAzZDU4Y2E2ZTMyZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3Rlc3RiaW5kaW5ncy5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9icmlkZ2UvdGVzdGJpbmRpbmdzLm1tCkBAIC02NSw3ICs2NSw3IEBAIEBpbnRlcmZh
Y2UgTXlGaXJzdEludGVyZmFjZSA6IE5TT2JqZWN0CiB7CiAgICAgaW50IG15SW50OwogICAgIFJl
dGFpblB0cjxNeVNlY29uZEludGVyZmFjZT4gbXlTZWNvbmRJbnRlcmZhY2U7Ci0gICAgaWQganNv
YmplY3Q7CisgICAgUmV0YWluUHRyPGlkPiBqc29iamVjdDsKICAgICBOU1N0cmluZyAqc3RyaW5n
OwogfQogCkBAIC0xNzQsMTUgKzE3NCwxNCBAQCAtICh2b2lkKWxvZ01lc3NhZ2U6KE5TU3RyaW5n
ICopbWVzc2FnZSBwcmVmaXg6KE5TU3RyaW5nICopcHJlZml4CiAKIC0gKHZvaWQpc2V0SlNPYmpl
Y3Q6KGlkKWpzbwogewotICAgIFtqc29iamVjdCBhdXRvcmVsZWFzZV07Ci0gICAganNvYmplY3Qg
PSBbanNvIHJldGFpbl07CisgICAganNvYmplY3QgPSBqc287CiB9CiAKIC0gKHZvaWQpY2FsbEpT
T2JqZWN0OihpbnQpYXJnMSA6KGludClhcmcyCiB7Ci0gICAgaWQgZm9vMSA9IFtqc29iamVjdCBj
YWxsV2ViU2NyaXB0TWV0aG9kOkAiY2FsbCIgd2l0aEFyZ3VtZW50czpbTlNBcnJheSBhcnJheVdp
dGhPYmplY3RzOmpzb2JqZWN0LCBbTlNOdW1iZXIgbnVtYmVyV2l0aEludDphcmcxXSwgW05TTnVt
YmVyIG51bWJlcldpdGhJbnQ6YXJnMl0sIG5pbF1dOworICAgIGlkIGZvbzEgPSBbanNvYmplY3Qg
Y2FsbFdlYlNjcmlwdE1ldGhvZDpAImNhbGwiIHdpdGhBcmd1bWVudHM6W05TQXJyYXkgYXJyYXlX
aXRoT2JqZWN0czpqc29iamVjdC5nZXQoKSwgW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6YXJnMV0s
IFtOU051bWJlciBudW1iZXJXaXRoSW50OmFyZzJdLCBuaWxdXTsKICAgICBwcmludGYgKCJmb28g
KHZpYSBjYWxsKSA9ICVzXG4iLCBbW2ZvbzEgZGVzY3JpcHRpb25dIGxvc3N5Q1N0cmluZ10gKTsK
LSAgICBpZCBmb28yID0gW2pzb2JqZWN0IGNhbGxXZWJTY3JpcHRNZXRob2Q6QCJhcHBseSIgd2l0
aEFyZ3VtZW50czpbTlNBcnJheSBhcnJheVdpdGhPYmplY3RzOmpzb2JqZWN0LCBbTlNBcnJheSBh
cnJheVdpdGhPYmplY3RzOltOU051bWJlciBudW1iZXJXaXRoSW50OmFyZzFdLCBbTlNOdW1iZXIg
bnVtYmVyV2l0aEludDphcmcyXSwgbmlsXSwgbmlsXV07CisgICAgaWQgZm9vMiA9IFtqc29iamVj
dCBjYWxsV2ViU2NyaXB0TWV0aG9kOkAiYXBwbHkiIHdpdGhBcmd1bWVudHM6W05TQXJyYXkgYXJy
YXlXaXRoT2JqZWN0czpqc29iamVjdC5nZXQoKSwgW05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0czpb
TlNOdW1iZXIgbnVtYmVyV2l0aEludDphcmcxXSwgW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6YXJn
Ml0sIG5pbF0sIG5pbF1dOwogICAgIHByaW50ZiAoImZvbyAodmlhIGFwcGx5KSA9ICVzXG4iLCBb
W2ZvbzIgZGVzY3JpcHRpb25dIGxvc3N5Q1N0cmluZ10gKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCmluZGV4IDY5ZmE2MTUxNTIwM2VlZGRi
MWI3NzZjYTg2Y2Q1NTk4MGYxNjJjZGYuLjAzYmQyZDZlYmEzYjM1ZmU2ZGMzOTUzMjI2ZmJkOGQ1
NjBiZWNmZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENv
bnZlcnRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0
ZXIubW0KQEAgLTIyNiw3ICsyMjYsNyBAQCAtIChOU0ludGVnZXIpcm93U3BhbjsKIEBlbmQKIAog
I2Vsc2UKLXN0YXRpYyBOU0ZpbGVXcmFwcGVyICpmaWxlV3JhcHBlckZvclVSTChEb2N1bWVudExv
YWRlciAqLCBOU1VSTCAqKTsKK3N0YXRpYyBSZXRhaW5QdHI8TlNGaWxlV3JhcHBlcj4gZmlsZVdy
YXBwZXJGb3JVUkwoRG9jdW1lbnRMb2FkZXIgKiwgTlNVUkwgKik7CiBzdGF0aWMgUmV0YWluUHRy
PE5TRmlsZVdyYXBwZXI+IGZpbGVXcmFwcGVyRm9yRWxlbWVudChIVE1MSW1hZ2VFbGVtZW50Jik7
CiAKIEBpbnRlcmZhY2UgTlNUZXh0QXR0YWNobWVudCAoV2ViQ29yZU5TVGV4dEF0dGFjaG1lbnQp
CkBAIC03NjQsNyArNzY0LDcgQEAgYm9vbCBIVE1MQ29udmVydGVyQ2FjaGVzOjpmbG9hdFByb3Bl
cnR5VmFsdWVGb3JOb2RlKE5vZGUmIG5vZGUsIENTU1Byb3BlcnR5SUQgcHIKIAogc3RhdGljIGlu
bGluZSBOU1NoYWRvdyAqX3NoYWRvd0ZvclNoYWRvd1N0eWxlKE5TU3RyaW5nICpzaGFkb3dTdHls
ZSkKIHsKLSAgICBOU1NoYWRvdyAqc2hhZG93ID0gbmlsOworICAgIFJldGFpblB0cjxOU1NoYWRv
dz4gc2hhZG93OwogICAgIE5TVUludGVnZXIgc2hhZG93U3R5bGVMZW5ndGggPSBbc2hhZG93U3R5
bGUgbGVuZ3RoXTsKICAgICBOU1JhbmdlIG9wZW5QYXJlblJhbmdlID0gW3NoYWRvd1N0eWxlIHJh
bmdlT2ZTdHJpbmc6QCIoIl07CiAgICAgTlNSYW5nZSBjbG9zZVBhcmVuUmFuZ2UgPSBbc2hhZG93
U3R5bGUgcmFuZ2VPZlN0cmluZzpAIikiXTsKQEAgLTgwNiwxNCArODA2LDE0IEBAIHN0YXRpYyBp
bmxpbmUgTlNTaGFkb3cgKl9zaGFkb3dGb3JTaGFkb3dTdHlsZShOU1N0cmluZyAqc2hhZG93U3R5
bGUpCiAgICAgICAgICAgICAgICAgaWYgKCFzcGFjZVJhbmdlLmxlbmd0aCkKICAgICAgICAgICAg
ICAgICAgICAgc3BhY2VSYW5nZSA9IE5TTWFrZVJhbmdlKDAsIDApOwogICAgICAgICAgICAgICAg
IHNoYWRvd0JsdXJSYWRpdXMgPSBbW3NoYWRvd1N0eWxlIHN1YnN0cmluZ1dpdGhSYW5nZTpOU01h
a2VSYW5nZShOU01heFJhbmdlKHNwYWNlUmFuZ2UpLCB0aGlyZFJhbmdlLmxvY2F0aW9uIC0gTlNN
YXhSYW5nZShzcGFjZVJhbmdlKSldIGZsb2F0VmFsdWVdOwotICAgICAgICAgICAgICAgIHNoYWRv
dyA9IFtbKE5TU2hhZG93ICopW1BsYXRmb3JtTlNTaGFkb3cgYWxsb2NdIGluaXRdIGF1dG9yZWxl
YXNlXTsKKyAgICAgICAgICAgICAgICBzaGFkb3cgPSBhZG9wdE5TKFsoTlNTaGFkb3cgKilbUGxh
dGZvcm1OU1NoYWRvdyBhbGxvY10gaW5pdF0pOwogICAgICAgICAgICAgICAgIFtzaGFkb3cgc2V0
U2hhZG93Q29sb3I6c2hhZG93Q29sb3JdOwogICAgICAgICAgICAgICAgIFtzaGFkb3cgc2V0U2hh
ZG93T2Zmc2V0OnNoYWRvd09mZnNldF07CiAgICAgICAgICAgICAgICAgW3NoYWRvdyBzZXRTaGFk
b3dCbHVyUmFkaXVzOnNoYWRvd0JsdXJSYWRpdXNdOwogICAgICAgICAgICAgfQogICAgICAgICB9
CiAgICAgfQotICAgIHJldHVybiBzaGFkb3c7CisgICAgcmV0dXJuIHNoYWRvdy5hdXRvcmVsZWFz
ZSgpOwogfQogCiBib29sIEhUTUxDb252ZXJ0ZXJDYWNoZXM6OmlzQmxvY2tFbGVtZW50KEVsZW1l
bnQmIGVsZW1lbnQpCkBAIC0xMjYzLDcgKzEyNjMsNyBAQCBCT09MIEhUTUxDb252ZXJ0ZXI6Ol9h
ZGRBdHRhY2htZW50Rm9yRWxlbWVudChFbGVtZW50JiBlbGVtZW50LCBOU1VSTCAqdXJsLCBCT09M
CiB7CiAgICAgQk9PTCByZXR2YWwgPSBOTzsKICAgICBCT09MIG5vdEZvdW5kID0gTk87Ci0gICAg
TlNGaWxlV3JhcHBlciAqZmlsZVdyYXBwZXIgPSBuaWw7CisgICAgUmV0YWluUHRyPE5TRmlsZVdy
YXBwZXI+IGZpbGVXcmFwcGVyOwogICAgIEZyYW1lKiBmcmFtZSA9IGVsZW1lbnQuZG9jdW1lbnQo
KS5mcmFtZSgpOwogICAgIERvY3VtZW50TG9hZGVyICpkYXRhU291cmNlID0gZnJhbWUtPmxvYWRl
cigpLmZyYW1lSGFzTG9hZGVkKCkgPyBmcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKSA6
IDA7CiAgICAgQk9PTCBpZ25vcmVPcmllbnRhdGlvbiA9IFlFUzsKQEAgLTEyNzEsNyArMTI3MSw3
IEBAIEJPT0wgSFRNTENvbnZlcnRlcjo6X2FkZEF0dGFjaG1lbnRGb3JFbGVtZW50KEVsZW1lbnQm
IGVsZW1lbnQsIE5TVVJMICp1cmwsIEJPT0wKICAgICBpZiAoW3VybCBpc0ZpbGVVUkxdKSB7CiAg
ICAgICAgIE5TU3RyaW5nICpwYXRoID0gW1t1cmwgcGF0aF0gc3RyaW5nQnlTdGFuZGFyZGl6aW5n
UGF0aF07CiAgICAgICAgIGlmIChwYXRoKQotICAgICAgICAgICAgZmlsZVdyYXBwZXIgPSBbW1tO
U0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0V2l0aFVSTDp1cmwgb3B0aW9uczowIGVycm9yOk5VTExd
IGF1dG9yZWxlYXNlXTsKKyAgICAgICAgICAgIGZpbGVXcmFwcGVyID0gYWRvcHROUyhbW05TRmls
ZVdyYXBwZXIgYWxsb2NdIGluaXRXaXRoVVJMOnVybCBvcHRpb25zOjAgZXJyb3I6TlVMTF0pOwog
ICAgIH0KICAgICBpZiAoIWZpbGVXcmFwcGVyICYmIGRhdGFTb3VyY2UpIHsKICAgICAgICAgUmVm
UHRyPEFyY2hpdmVSZXNvdXJjZT4gcmVzb3VyY2UgPSBkYXRhU291cmNlLT5zdWJyZXNvdXJjZSh1
cmwpOwpAQCAtMTI4Miw3ICsxMjgyLDcgQEAgQk9PTCBIVE1MQ29udmVydGVyOjpfYWRkQXR0YWNo
bWVudEZvckVsZW1lbnQoRWxlbWVudCYgZWxlbWVudCwgTlNVUkwgKnVybCwgQk9PTAogICAgICAg
ICBpZiAodXNlUGxhY2Vob2xkZXIgJiYgcmVzb3VyY2UgJiYgbWltZVR5cGUgPT0gInRleHQvaHRt
bCIpCiAgICAgICAgICAgICBub3RGb3VuZCA9IFlFUzsKICAgICAgICAgaWYgKHJlc291cmNlICYm
ICFub3RGb3VuZCkgewotICAgICAgICAgICAgZmlsZVdyYXBwZXIgPSBbW1tOU0ZpbGVXcmFwcGVy
IGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6cmVzb3VyY2UtPmRhdGEoKS5jcmVh
dGVOU0RhdGEoKS5nZXQoKV0gYXV0b3JlbGVhc2VdOworICAgICAgICAgICAgZmlsZVdyYXBwZXIg
PSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRl
bnRzOnJlc291cmNlLT5kYXRhKCkuY3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKICAgICAgICAgICAg
IFtmaWxlV3JhcHBlciBzZXRQcmVmZXJyZWRGaWxlbmFtZTpzdWdnZXN0ZWRGaWxlbmFtZVdpdGhN
SU1FVHlwZSh1cmwsIG1pbWVUeXBlKV07CiAgICAgICAgIH0KICAgICB9CkBAIC0xMzE2LDcgKzEz
MTYsNyBAQCBCT09MIEhUTUxDb252ZXJ0ZXI6Ol9hZGRBdHRhY2htZW50Rm9yRWxlbWVudChFbGVt
ZW50JiBlbGVtZW50LCBOU1VSTCAqdXJsLCBCT09MCiAgICAgfQogICAgIGlmIChmaWxlV3JhcHBl
ciB8fCB1c2VQbGFjZWhvbGRlcikgewogICAgICAgICBOU1VJbnRlZ2VyIHRleHRMZW5ndGggPSBb
X2F0dHJTdHIgbGVuZ3RoXTsKLSAgICAgICAgUmV0YWluUHRyPE5TVGV4dEF0dGFjaG1lbnQ+IGF0
dGFjaG1lbnQgPSBhZG9wdE5TKFtbUGxhdGZvcm1OU1RleHRBdHRhY2htZW50IGFsbG9jXSBpbml0
V2l0aEZpbGVXcmFwcGVyOmZpbGVXcmFwcGVyXSk7CisgICAgICAgIFJldGFpblB0cjxOU1RleHRB
dHRhY2htZW50PiBhdHRhY2htZW50ID0gYWRvcHROUyhbW1BsYXRmb3JtTlNUZXh0QXR0YWNobWVu
dCBhbGxvY10gaW5pdFdpdGhGaWxlV3JhcHBlcjpmaWxlV3JhcHBlci5nZXQoKV0pOwogI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCiAgICAgICAgIGZsb2F0IHZlcnRpY2FsQWxpZ24gPSAwLjA7CiAg
ICAgICAgIF9jYWNoZXMtPmZsb2F0UHJvcGVydHlWYWx1ZUZvck5vZGUoZWxlbWVudCwgQ1NTUHJv
cGVydHlWZXJ0aWNhbEFsaWduLCB2ZXJ0aWNhbEFsaWduKTsKQEAgLTE1MjIsNyArMTUyMiw4IEBA
IHN0YXRpYyBpbmxpbmUgTlNEYXRlICpfZGF0ZUZvclN0cmluZyhOU1N0cmluZyAqc3RyaW5nKQog
ICAgICAgICByZXR1cm4gbmlsOwogICAgIFtkYXRlQ29tcG9uZW50cyBzZXRTZWNvbmQ6Y29tcG9u
ZW50XTsKICAgICAKLSAgICByZXR1cm4gW1tbW05TQ2FsZW5kYXIgYWxsb2NdIGluaXRXaXRoQ2Fs
ZW5kYXJJZGVudGlmaWVyOk5TQ2FsZW5kYXJJZGVudGlmaWVyR3JlZ29yaWFuXSBhdXRvcmVsZWFz
ZV0gZGF0ZUZyb21Db21wb25lbnRzOmRhdGVDb21wb25lbnRzLmdldCgpXTsKKyAgICBhdXRvIGNh
bGVuZGFyID0gYWRvcHROUyhbW05TQ2FsZW5kYXIgYWxsb2NdIGluaXRXaXRoQ2FsZW5kYXJJZGVu
dGlmaWVyOk5TQ2FsZW5kYXJJZGVudGlmaWVyR3JlZ29yaWFuXSk7CisgICAgcmV0dXJuIFtjYWxl
bmRhciBkYXRlRnJvbUNvbXBvbmVudHM6ZGF0ZUNvbXBvbmVudHMuZ2V0KCldOwogfQogCiBzdGF0
aWMgTlNJbnRlZ2VyIF9jb2xDb21wYXJlKGlkIGJsb2NrMSwgaWQgYmxvY2syLCB2b2lkICopCkBA
IC0yMzAyLDE0ICsyMzAzLDE0IEBAIE5vZGUqIEhUTUxDb252ZXJ0ZXJDYWNoZXM6OmNhY2hlQW5j
ZXN0b3JzT2ZTdGFydFRvQmVDb252ZXJ0ZWQoY29uc3QgUG9zaXRpb24mIHN0CiAKICNpZiAhUExB
VEZPUk0oSU9TX0ZBTUlMWSkKIAotc3RhdGljIE5TRmlsZVdyYXBwZXIgKmZpbGVXcmFwcGVyRm9y
VVJMKERvY3VtZW50TG9hZGVyKiBkYXRhU291cmNlLCBOU1VSTCAqVVJMKQorc3RhdGljIFJldGFp
blB0cjxOU0ZpbGVXcmFwcGVyPiBmaWxlV3JhcHBlckZvclVSTChEb2N1bWVudExvYWRlciogZGF0
YVNvdXJjZSwgTlNVUkwgKlVSTCkKIHsKICAgICBpZiAoW1VSTCBpc0ZpbGVVUkxdKQotICAgICAg
ICByZXR1cm4gW1tbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFdpdGhVUkw6W1VSTCBVUkxCeVJl
c29sdmluZ1N5bWxpbmtzSW5QYXRoXSBvcHRpb25zOjAgZXJyb3I6bnVsbHB0cl0gYXV0b3JlbGVh
c2VdOworICAgICAgICByZXR1cm4gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRX
aXRoVVJMOltVUkwgVVJMQnlSZXNvbHZpbmdTeW1saW5rc0luUGF0aF0gb3B0aW9uczowIGVycm9y
Om51bGxwdHJdKTsKIAogICAgIGlmIChkYXRhU291cmNlKSB7CiAgICAgICAgIGlmIChSZWZQdHI8
QXJjaGl2ZVJlc291cmNlPiByZXNvdXJjZSA9IGRhdGFTb3VyY2UtPnN1YnJlc291cmNlKFVSTCkp
IHsKLSAgICAgICAgICAgIE5TRmlsZVdyYXBwZXIgKndyYXBwZXIgPSBbW1tOU0ZpbGVXcmFwcGVy
IGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6cmVzb3VyY2UtPmRhdGEoKS5jcmVh
dGVOU0RhdGEoKS5nZXQoKV0gYXV0b3JlbGVhc2VdOworICAgICAgICAgICAgYXV0byB3cmFwcGVy
ID0gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250
ZW50czpyZXNvdXJjZS0+ZGF0YSgpLmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CiAgICAgICAgICAg
ICBOU1N0cmluZyAqZmlsZW5hbWUgPSByZXNvdXJjZS0+cmVzcG9uc2UoKS5zdWdnZXN0ZWRGaWxl
bmFtZSgpOwogICAgICAgICAgICAgaWYgKCFmaWxlbmFtZSB8fCAhW2ZpbGVuYW1lIGxlbmd0aF0p
CiAgICAgICAgICAgICAgICAgZmlsZW5hbWUgPSBzdWdnZXN0ZWRGaWxlbmFtZVdpdGhNSU1FVHlw
ZShyZXNvdXJjZS0+dXJsKCksIHJlc291cmNlLT5taW1lVHlwZSgpKTsKQEAgLTIzMjAsNyArMjMy
MSw3IEBAIHN0YXRpYyBOU0ZpbGVXcmFwcGVyICpmaWxlV3JhcHBlckZvclVSTChEb2N1bWVudExv
YWRlciogZGF0YVNvdXJjZSwgTlNVUkwgKlVSTCkKIAogICAgIE5TQ2FjaGVkVVJMUmVzcG9uc2Ug
KmNhY2hlZFJlc3BvbnNlID0gW1tOU1VSTENhY2hlIHNoYXJlZFVSTENhY2hlXSBjYWNoZWRSZXNw
b25zZUZvclJlcXVlc3Q6YWRvcHROUyhbW05TTXV0YWJsZVVSTFJlcXVlc3QgYWxsb2NdIGluaXRX
aXRoVVJMOlVSTF0pLmdldCgpXTsKICAgICBpZiAoY2FjaGVkUmVzcG9uc2UpIHsKLSAgICAgICAg
TlNGaWxlV3JhcHBlciAqd3JhcHBlciA9IFtbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGluaXRSZWd1
bGFyRmlsZVdpdGhDb250ZW50czpbY2FjaGVkUmVzcG9uc2UgZGF0YV1dIGF1dG9yZWxlYXNlXTsK
KyAgICAgICAgYXV0byB3cmFwcGVyID0gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIgYWxsb2NdIGlu
aXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpbY2FjaGVkUmVzcG9uc2UgZGF0YV1dKTsKICAgICAg
ICAgW3dyYXBwZXIgc2V0UHJlZmVycmVkRmlsZW5hbWU6W1tjYWNoZWRSZXNwb25zZSByZXNwb25z
ZV0gc3VnZ2VzdGVkRmlsZW5hbWVdXTsKICAgICAgICAgcmV0dXJuIHdyYXBwZXI7CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJBcmNoaXZlUmVzb3Vy
Y2VXZWJSZXNvdXJjZUhhbmRsZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL1dl
YkFyY2hpdmVSZXNvdXJjZVdlYlJlc291cmNlSGFuZGxlci5tbQppbmRleCAyZDMzYjg1ZmQzNWYw
YThlZDgzYjQ2MGEwNzI5Zjc5ODg4YWMyMTdkLi43OGU0NGVhYTFiOWE2NmYzZTY2YTgxY2JlNjQ4
MDhkMTkzMmU4MmZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL1dl
YkFyY2hpdmVSZXNvdXJjZVdlYlJlc291cmNlSGFuZGxlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL2NvY29hL1dlYkFyY2hpdmVSZXNvdXJjZVdlYlJlc291cmNlSGFuZGxlci5tbQpA
QCAtMzMsNyArMzMsNyBAQCBAaW1wbGVtZW50YXRpb24gV2ViQXJjaGl2ZVJlc291cmNlV2ViUmVz
b3VyY2VIYW5kbGVyCiAKIC0gKGlkKXJlc291cmNlRm9yRGF0YTooTlNEYXRhICopZGF0YSBVUkw6
KE5TVVJMICopdXJsIE1JTUVUeXBlOihOU1N0cmluZyAqKW1pbWVUeXBlIHRleHRFbmNvZGluZ05h
bWU6KE5TU3RyaW5nICopdGV4dEVuY29kaW5nTmFtZSBmcmFtZU5hbWU6KE5TU3RyaW5nICopZnJh
bWVOYW1lCiB7Ci0gICAgcmV0dXJuIFtbW1dlYkFyY2hpdmVSZXNvdXJjZUZyb21OU0F0dHJpYnV0
ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoRGF0YTpkYXRhIFVSTDp1cmwgTUlNRVR5cGU6bWltZVR5
cGUgdGV4dEVuY29kaW5nTmFtZTp0ZXh0RW5jb2RpbmdOYW1lIGZyYW1lTmFtZTpmcmFtZU5hbWVd
IGF1dG9yZWxlYXNlXTsKKyAgICByZXR1cm4gYWRvcHROUyhbW1dlYkFyY2hpdmVSZXNvdXJjZUZy
b21OU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoRGF0YTpkYXRhIFVSTDp1cmwgTUlN
RVR5cGU6bWltZVR5cGUgdGV4dEVuY29kaW5nTmFtZTp0ZXh0RW5jb2RpbmdOYW1lIGZyYW1lTmFt
ZTpmcmFtZU5hbWVdKS5hdXRvcmVsZWFzZSgpOwogfQogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbSBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tCmluZGV4IGI5
OTJkN2EwMzdlNTM0NGRjOGI5NGRjMWNiMWRhZGY4NGY4OTA2ZDguLmQ1ODk2ZmQ5NDAyMzk4NDJh
MDYzOTUxMDE3YjcyZWJkMWE2NGUyZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tCkBAIC0xMjgsNyArMTI4LDcgQEAg
c3RhdGljIE5TRGljdGlvbmFyeSAqYXR0cmlidXRlc0ZvckF0dHJpYnV0ZWRTdHJpbmdDb252ZXJz
aW9uKCkKICAgICAgICAgQCJJbnRlcmNoYW5nZU5ld2xpbmUiOiBAWUVTLAogICAgICAgICBAIkNv
YWxlc2NlVGFiU3BhbnMiOiBAWUVTLAogICAgICAgICBAIk91dHB1dEJhc2VVUkwiOiBiYXNlVVJM
LAotICAgICAgICBAIldlYlJlc291cmNlSGFuZGxlciI6IFtbV2ViQXJjaGl2ZVJlc291cmNlV2Vi
UmVzb3VyY2VIYW5kbGVyIG5ld10gYXV0b3JlbGVhc2VdLAorICAgICAgICBAIldlYlJlc291cmNl
SGFuZGxlciI6IGFkb3B0TlMoW1dlYkFyY2hpdmVSZXNvdXJjZVdlYlJlc291cmNlSGFuZGxlciBu
ZXddKS5hdXRvcmVsZWFzZSgpLAogICAgIH07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9tYWMvTG9hZGVyTlNVUkxFeHRyYXMubW0gYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvbWFjL0xvYWRlck5TVVJMRXh0cmFzLm1tCmluZGV4IDAxYjUwNzNiZGYxMTRkZGZmMDQ2Y2Mx
ZjY3ZTAwODRlMjUxZmRhYWEuLjU1MGRhYjgwZWUzYWE0NjA3MjFkZWI2YzMwYzg1YThlNmRmMGEw
NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9tYWMvTG9hZGVyTlNVUkxFeHRy
YXMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL21hYy9Mb2FkZXJOU1VSTEV4dHJhcy5t
bQpAQCAtODgsNyArODgsNyBAQCBOU1N0cmluZyAqc3VnZ2VzdGVkRmlsZW5hbWVXaXRoTUlNRVR5
cGUoTlNVUkwgKnVybCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKIAogTlNTdHJpbmcgKmZpbGVu
YW1lQnlGaXhpbmdJbGxlZ2FsQ2hhcmFjdGVycyhOU1N0cmluZyAqc3RyaW5nKQogewotICAgIE5T
TXV0YWJsZVN0cmluZyAqZmlsZW5hbWUgPSBbW3N0cmluZyBtdXRhYmxlQ29weV0gYXV0b3JlbGVh
c2VdOworICAgIGF1dG8gZmlsZW5hbWUgPSBhZG9wdE5TKFtzdHJpbmcgbXV0YWJsZUNvcHldKTsK
IAogICAgIC8vIFN0cmlwIG51bGwgY2hhcmFjdGVycy4KICAgICB1bmljaGFyIG51bGxDaGFyID0g
MDsKQEAgLTEwNCw1ICsxMDQsNSBAQCBOU1N0cmluZyAqZmlsZW5hbWVCeUZpeGluZ0lsbGVnYWxD
aGFyYWN0ZXJzKE5TU3RyaW5nICpzdHJpbmcpCiAgICAgd2hpbGUgKFtmaWxlbmFtZSBoYXNQcmVm
aXg6QCIuIl0pCiAgICAgICAgIFtmaWxlbmFtZSBkZWxldGVDaGFyYWN0ZXJzSW5SYW5nZTpOU01h
a2VSYW5nZSgwLCAxKV07CiAKLSAgICByZXR1cm4gZmlsZW5hbWU7CisgICAgcmV0dXJuIGZpbGVu
YW1lLmF1dG9yZWxlYXNlKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQppbmRleCAzMjk4NmU3
ZGE5ZTU3MWE4NTFiMWQ1MzI0YTgxZGMwZjgzYWZhYjZhLi5hNzkxMzRhNGU3YmVhNmYwNTc3YmE1
MjAzYjk2ZWVjYzEwZDAyNzViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KQEAgLTkyMCw3ICs5
MjAsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNyZWF0ZUFW
QXNzZXRGb3JVUkwoY29uc3QgVVJMJiB1cmwsIFJldAogICAgICAgICAmJiBbcmVzb3VyY2VMb2Fk
ZXIgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihVUkxTZXNzaW9uRGF0YURlbGVnYXRlUXVl
dWUpXSkgewogICAgICAgICBSZWZQdHI8UGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyPiBtZWRp
YVJlc291cmNlTG9hZGVyID0gcGxheWVyKCktPmNyZWF0ZVJlc291cmNlTG9hZGVyKCk7CiAgICAg
ICAgIGlmIChtZWRpYVJlc291cmNlTG9hZGVyKQotICAgICAgICAgICAgcmVzb3VyY2VMb2FkZXIu
VVJMU2Vzc2lvbiA9IChOU1VSTFNlc3Npb24gKilbW1tXZWJDb3JlTlNVUkxTZXNzaW9uIGFsbG9j
XSBpbml0V2l0aFJlc291cmNlTG9hZGVyOiptZWRpYVJlc291cmNlTG9hZGVyIGRlbGVnYXRlOnJl
c291cmNlTG9hZGVyLlVSTFNlc3Npb25EYXRhRGVsZWdhdGUgZGVsZWdhdGVRdWV1ZTpyZXNvdXJj
ZUxvYWRlci5VUkxTZXNzaW9uRGF0YURlbGVnYXRlUXVldWVdIGF1dG9yZWxlYXNlXTsKKyAgICAg
ICAgICAgIHJlc291cmNlTG9hZGVyLlVSTFNlc3Npb24gPSAoTlNVUkxTZXNzaW9uICopYWRvcHRO
UyhbW1dlYkNvcmVOU1VSTFNlc3Npb24gYWxsb2NdIGluaXRXaXRoUmVzb3VyY2VMb2FkZXI6Km1l
ZGlhUmVzb3VyY2VMb2FkZXIgZGVsZWdhdGU6cmVzb3VyY2VMb2FkZXIuVVJMU2Vzc2lvbkRhdGFE
ZWxlZ2F0ZSBkZWxlZ2F0ZVF1ZXVlOnJlc291cmNlTG9hZGVyLlVSTFNlc3Npb25EYXRhRGVsZWdh
dGVRdWV1ZV0pLmF1dG9yZWxlYXNlKCk7CiAgICAgfQogCiAgICAgbV9oYXZlQ2hlY2tlZFBsYXlh
YmlsaXR5ID0gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
V2ViQVZQbGF5ZXJDb250cm9sbGVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dl
YkFWUGxheWVyQ29udHJvbGxlci5tbQppbmRleCA2NmM5MjEyNGZlODY3NTQ2YTc3ZjI0YzNlMzIy
OTdkYjIzZTdlZjIzLi45NjhhNDExZDlmZDJlMmFhOWM0MGQ5Y2FkY2I5MWY5MTNhMmNlMjIzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViQVZQbGF5ZXJDb250cm9s
bGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJBVlBsYXllckNvbnRy
b2xsZXIubW0KQEAgLTY5LDcgKzY5LDcgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXQKICAgICAgICAg
cmV0dXJuIHNlbGY7CiAKICAgICBpbml0QVZQbGF5ZXJDb250cm9sbGVyKCk7Ci0gICAgc2VsZi5w
bGF5ZXJDb250cm9sbGVyUHJveHkgPSBbW2FsbG9jQVZQbGF5ZXJDb250cm9sbGVySW5zdGFuY2Uo
KSBpbml0XSBhdXRvcmVsZWFzZV07CisgICAgc2VsZi5wbGF5ZXJDb250cm9sbGVyUHJveHkgPSBh
ZG9wdE5TKFthbGxvY0FWUGxheWVyQ29udHJvbGxlckluc3RhbmNlKCkgaW5pdF0pLmF1dG9yZWxl
YXNlKCk7CiAgICAgX2xpdmVTdHJlYW1FdmVudE1vZGVQb3NzaWJsZSA9IFlFUzsKIAogICAgIFtz
ZWxmIGFkZE9ic2VydmVyOnNlbGYgZm9yS2V5UGF0aDpAInNlZWthYmxlVGltZVJhbmdlcyIgb3B0
aW9uczooTlNLZXlWYWx1ZU9ic2VydmluZ09wdGlvbk9sZCB8IE5TS2V5VmFsdWVPYnNlcnZpbmdP
cHRpb25OZXcgfCBOU0tleVZhbHVlT2JzZXJ2aW5nT3B0aW9uSW5pdGlhbCkgY29udGV4dDpXZWJB
VlBsYXllckNvbnRyb2xsZXJTZWVrYWJsZVRpbWVSYW5nZXNPYnNlcnZlckNvbnRleHRdOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkV2ZW50Lm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkV2ZW50Lm1tCmluZGV4IGY4NDNjNTRhNDZhMmYyY2Y0
NzlmMzg2Y2I4NGFjZGNkNWI1MWZmNjguLmYyOTlhNjVmZTNhNmFhZTg1ZDg2OGNmYWI0OTI2MjJm
ZTM1OTNiYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJFdmVu
dC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViRXZlbnQubW0KQEAgLTM4
MCwxOSArMzgwLDE5IEBAIC0gKE5TU3RyaW5nICopY2hhcmFjdGVycwogewogICAgIEFTU0VSVChf
dHlwZSA9PSBXZWJFdmVudEtleURvd24gfHwgX3R5cGUgPT0gV2ViRXZlbnRLZXlVcCk7CiAgICAg
QVNTRVJUKCEoX2tleWJvYXJkRmxhZ3MgJiBXZWJFdmVudEtleWJvYXJkSW5wdXRNb2RpZmllckZs
YWdzQ2hhbmdlZCkpOwotICAgIHJldHVybiBbW19jaGFyYWN0ZXJzIHJldGFpbl0gYXV0b3JlbGVh
c2VdOworICAgIHJldHVybiByZXRhaW5QdHIoX2NoYXJhY3RlcnMpLmF1dG9yZWxlYXNlKCk7CiB9
CiAKIC0gKE5TU3RyaW5nICopY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzCiB7CiAgICAgQVNT
RVJUKF90eXBlID09IFdlYkV2ZW50S2V5RG93biB8fCBfdHlwZSA9PSBXZWJFdmVudEtleVVwKTsK
ICAgICBBU1NFUlQoIShfa2V5Ym9hcmRGbGFncyAmIFdlYkV2ZW50S2V5Ym9hcmRJbnB1dE1vZGlm
aWVyRmxhZ3NDaGFuZ2VkKSk7Ci0gICAgcmV0dXJuIFtbX2NoYXJhY3RlcnNJZ25vcmluZ01vZGlm
aWVycyByZXRhaW5dIGF1dG9yZWxlYXNlXTsKKyAgICByZXR1cm4gcmV0YWluUHRyKF9jaGFyYWN0
ZXJzSWdub3JpbmdNb2RpZmllcnMpLmF1dG9yZWxlYXNlKCk7CiB9CiAKIC0gKE5TU3RyaW5nICop
aW5wdXRNYW5hZ2VySGludAogewotICAgIHJldHVybiBbW19pbnB1dE1hbmFnZXJIaW50IHJldGFp
bl0gYXV0b3JlbGVhc2VdOworICAgIHJldHVybiByZXRhaW5QdHIoX2lucHV0TWFuYWdlckhpbnQp
LmF1dG9yZWxlYXNlKCk7CiB9CiAKIC0gKFdlYkV2ZW50RmxhZ3MpbW9kaWZpZXJGbGFncwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkl0ZW1Qcm92aWRlclBhc3Rl
Ym9hcmQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViSXRlbVByb3ZpZGVyUGFz
dGVib2FyZC5tbQppbmRleCAxZWE2NjI1OTljMDQ1OTQ1NzgwNjg2MWYyNTE3MDgwZDNmOTM1NGI0
Li40N2Q3NzcyNjEwMGVkMDM1OWE5Y2E2NDc3YzJmOWMzZGE3MjA4NjhkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZC5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViSXRlbVByb3ZpZGVyUGFzdGVib2Fy
ZC5tbQpAQCAtMzY5LDcgKzM2OSw3IEBAIEBpbXBsZW1lbnRhdGlvbiBXZWJJdGVtUHJvdmlkZXJM
b2FkUmVzdWx0IHsKIAogKyAoaW5zdGFuY2V0eXBlKWxvYWRSZXN1bHRXaXRoSXRlbVByb3ZpZGVy
OihOU0l0ZW1Qcm92aWRlciAqKWl0ZW1Qcm92aWRlciB0eXBlc1RvTG9hZDooTlNBcnJheTxOU1N0
cmluZyAqPiAqKXR5cGVzVG9Mb2FkCiB7Ci0gICAgcmV0dXJuIFtbW3NlbGYgYWxsb2NdIGluaXRX
aXRoSXRlbVByb3ZpZGVyOml0ZW1Qcm92aWRlciB0eXBlc1RvTG9hZDp0eXBlc1RvTG9hZF0gYXV0
b3JlbGVhc2VdOworICAgIHJldHVybiBhZG9wdE5TKFtbc2VsZiBhbGxvY10gaW5pdFdpdGhJdGVt
UHJvdmlkZXI6aXRlbVByb3ZpZGVyIHR5cGVzVG9Mb2FkOnR5cGVzVG9Mb2FkXSkuYXV0b3JlbGVh
c2UoKTsKIH0KIAogLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoSXRlbVByb3ZpZGVyOihOU0l0ZW1Q
cm92aWRlciAqKWl0ZW1Qcm92aWRlciB0eXBlc1RvTG9hZDooTlNBcnJheTxOU1N0cmluZyAqPiAq
KXR5cGVzVG9Mb2FkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2Vi
VmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckFWS2l0Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5tbQppbmRleCA0YjhhMDNi
Njc1Y2RlMTFkZGVmYzgyNjlkZjdiZWM2OTVjMzk0NzliLi42NmJjNGRmYjJmZmQ2YzFkMmQ4ZTJj
NDI1NWU5MmMwZWIzZTJmMTAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
b3MvV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckFWS2l0Lm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQubW0KQEAg
LTEwNjIsNyArMTA2Miw3IEBAIC0gKHZvaWQpZGlkRmluaXNoRnVsbHNjcmVlbjooVmlkZW9GdWxs
c2NyZWVuQ29udHJvbGxlckNvbnRleHQqKWNvbnRleHQKIHsKICAgICBBU1NFUlQoV2ViVGhyZWFk
SXNDdXJyZW50KCkpOwogICAgIEFTU0VSVF9VTlVTRUQoY29udGV4dCwgY29udGV4dCA9PSBfY29u
dGV4dCk7Ci0gICAgW1tzZWxmIHJldGFpbl0gYXV0b3JlbGVhc2VdOyAvLyByZXRhaW4gc2VsZiBi
ZWZvcmUgYnJlYWtpbmcgYSByZXRhaW4gY3ljbGUuCisgICAgcmV0YWluUHRyKHNlbGYpLmF1dG9y
ZWxlYXNlKCk7IC8vIHJldGFpbiBzZWxmIGJlZm9yZSBicmVha2luZyBhIHJldGFpbiBjeWNsZS4K
ICAgICBfY29udGV4dC0+c2V0Q29udHJvbGxlcihuaWwpOwogICAgIF9jb250ZXh0ID0gbnVsbHB0
cjsKICAgICBfdmlkZW9FbGVtZW50ID0gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy93YWsvV0FLVmlldy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2lvcy93YWsvV0FLVmlldy5tbQppbmRleCBmNmE3NTQ1NjdmNWNhZGM4ODE3NzcyNTdiZjMyYmVl
NzA0NWQ5NTYxLi41ZDYyNzI2OWE3MTdjNWUwODA5MzVhZTFjYWYxNGYyODAwNmU0NDkxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dBS1ZpZXcubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XQUtWaWV3Lm1tCkBAIC0xOTgsNyArMTk4
LDcgQEAgKyAoV0FLVmlldyAqKV93cmFwcGVyRm9yVmlld1JlZjooV0tWaWV3UmVmKV92aWV3UmVm
CiB7CiAgICAgQVNTRVJUKF92aWV3UmVmKTsKICAgICBpZiAoX3ZpZXdSZWYtPmlzYS5jbGFzc0lu
Zm8gPT0gJldLVmlld0NsYXNzSW5mbykKLSAgICAgICAgcmV0dXJuIFtbW1dBS1ZpZXcgYWxsb2Nd
IF9pbml0V2l0aFZpZXdSZWY6X3ZpZXdSZWZdIGF1dG9yZWxlYXNlXTsKKyAgICAgICAgcmV0dXJu
IGFkb3B0TlMoW1tXQUtWaWV3IGFsbG9jXSBfaW5pdFdpdGhWaWV3UmVmOl92aWV3UmVmXSkuYXV0
b3JlbGVhc2UoKTsKICAgICBXS0Vycm9yICgidW5hYmxlIHRvIGNyZWF0ZSB3cmFwcGVyIGZvciAl
c1xuIiwgX3ZpZXdSZWYtPmlzYS5jbGFzc0luZm8tPm5hbWUpOwogICAgIHJldHVybiBuaWw7CiB9
CkBAIC0yMzgsNyArMjM4LDcgQEAgLSAoaWQpaW5pdFdpdGhGcmFtZTooQ0dSZWN0KXJlY3QKIAog
LSAodm9pZClkZWFsbG9jCiB7Ci0gICAgW1tbc3Vidmlld1JlZmVyZW5jZXMgY29weV0gYXV0b3Jl
bGVhc2VdIG1ha2VPYmplY3RzUGVyZm9ybVNlbGVjdG9yOkBzZWxlY3RvcihyZW1vdmVGcm9tU3Vw
ZXJ2aWV3KV07CisgICAgW2Fkb3B0TlMoW3N1YnZpZXdSZWZlcmVuY2VzIGNvcHldKS5hdXRvcmVs
ZWFzZSgpIG1ha2VPYmplY3RzUGVyZm9ybVNlbGVjdG9yOkBzZWxlY3RvcihyZW1vdmVGcm9tU3Vw
ZXJ2aWV3KV07CiAKICAgICBpZiAodmlld1JlZikgewogICAgICAgICBfV0tWaWV3U2V0Vmlld0Nv
bnRleHQgKHZpZXdSZWYsIDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1Bhc3RlYm9hcmRNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVi
b2FyZE1hYy5tbQppbmRleCBmMzI2YTY5Zjk1NjBmYzM0MWZkYmM0NjA3NTg5YWMwMDdhNjg2MmY1
Li4xMmJjM2Q2YWU4ZTJjZjFiYzUyYTNhMGQ2ZGUxYjkyNzE5YzdlYmQ0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbQpAQCAtMjQ4LDkgKzI0OCw5IEBA
IHZvaWQgUGFzdGVib2FyZDo6d3JpdGUoY29uc3QgQ29sb3ImIGNvbG9yKQogCiBzdGF0aWMgTlNG
aWxlV3JhcHBlciogZmlsZVdyYXBwZXIoY29uc3QgUGFzdGVib2FyZEltYWdlJiBwYXN0ZWJvYXJk
SW1hZ2UpCiB7Ci0gICAgTlNGaWxlV3JhcHBlciAqd3JhcHBlciA9IFtbW05TRmlsZVdyYXBwZXIg
YWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpwYXN0ZWJvYXJkSW1hZ2UucmVzb3Vy
Y2VEYXRhLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0gYXV0b3JlbGVhc2VdOworICAgIGF1dG8gd3Jh
cHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRo
Q29udGVudHM6cGFzdGVib2FyZEltYWdlLnJlc291cmNlRGF0YS0+Y3JlYXRlTlNEYXRhKCkuZ2V0
KCldKTsKICAgICBbd3JhcHBlciBzZXRQcmVmZXJyZWRGaWxlbmFtZTpzdWdnZXN0ZWRGaWxlbmFt
ZVdpdGhNSU1FVHlwZShwYXN0ZWJvYXJkSW1hZ2UudXJsLnVybCwgcGFzdGVib2FyZEltYWdlLnJl
c291cmNlTUlNRVR5cGUpXTsKLSAgICByZXR1cm4gd3JhcHBlcjsKKyAgICByZXR1cm4gd3JhcHBl
ci5hdXRvcmVsZWFzZSgpOwogfQogCiBzdGF0aWMgdm9pZCB3cml0ZUZpbGVXcmFwcGVyQXNSVEZE
QXR0YWNobWVudChOU0ZpbGVXcmFwcGVyICp3cmFwcGVyLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lLCBpbnQ2NF90JiBuZXdDaGFuZ2VDb3VudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlTlNVUkxFeHRyYXMubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvV2ViQ29yZU5TVVJMRXh0cmFzLm1tCmluZGV4IGM3NWQyMGYwZjc3NTYxNzlk
NGY5ZDgwMjgxZWNhNDQ4ZWQyMDBiOGYuLjEzYzgyYjI2YTZiMDgzZWE4YzM3YzkyODRmN2M0OGVi
OTUzYWE5ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3Jl
TlNVUkxFeHRyYXMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVO
U1VSTEV4dHJhcy5tbQpAQCAtNTIsOCArNTIsNyBAQCBOU1VSTCAqVVJMQnlDYW5vbmljYWxpemlu
Z1VSTChOU1VSTCAqVVJMKQogICAgIC8vIChzZWUgNTMxNTkyNikuIEl0IG1pZ2h0IG1ha2Ugc2Vu
c2UgdG8gYXBwbHkgb25seSB0aGUgVVJMIGNvbmNlcHQgYW5kIG5vdCB0aGUgTlNVUkwKICAgICAv
LyBjb25jZXB0LCBidXQgaXQncyB0b28gcmlza3kgdG8gbWFrZSB0aGF0IGNoYW5nZSBmb3IgV2Vi
S2l0IDMuMC4KICAgICBOU1VSTFJlcXVlc3QgKm5ld1JlcXVlc3QgPSBbY29uY3JldGVDbGFzcyBj
YW5vbmljYWxSZXF1ZXN0Rm9yUmVxdWVzdDpyZXF1ZXN0LmdldCgpXTsKLSAgICBOU1VSTCAqbmV3
VVJMID0gW25ld1JlcXVlc3QgVVJMXTsgCi0gICAgcmV0dXJuIFtbbmV3VVJMIHJldGFpbl0gYXV0
b3JlbGVhc2VdOworICAgIHJldHVybiByZXRhaW5QdHIoW25ld1JlcXVlc3QgVVJMXSkuYXV0b3Jl
bGVhc2UoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYk5TQXR0cmlidXRlZFN0cmluZ0V4dHJhcy5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJOU0F0dHJpYnV0ZWRTdHJpbmdFeHRyYXMubW0K
aW5kZXggNTcyYzM1ZjE4MzA2NGM4YTg4OGIxYzlkYTY0YTExNjJkZGRkY2YwNC4uZGZmMDY3ODI4
MDc0OTkxY2MzNjhmMTNlYjQ5OTM5ODBiNGI5YTkzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL1dlYk5TQXR0cmlidXRlZFN0cmluZ0V4dHJhcy5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViTlNBdHRyaWJ1dGVkU3RyaW5nRXh0cmFzLm1tCkBA
IC01NSwxMyArNTUsMTMgQEAgTlNBdHRyaWJ1dGVkU3RyaW5nICphdHRyaWJ1dGVkU3RyaW5nQnlT
dHJpcHBpbmdBdHRhY2htZW50Q2hhcmFjdGVycyhOU0F0dHJpYnV0ZWQKICAgICAKICAgICBhdHRh
Y2htZW50UmFuZ2UgPSBbb3JpZ2luYWxTdHJpbmcgcmFuZ2VPZlN0cmluZzphdHRhY2htZW50Q2hh
clN0cmluZ107CiAgICAgaWYgKGF0dGFjaG1lbnRSYW5nZS5sb2NhdGlvbiAhPSBOU05vdEZvdW5k
ICYmIGF0dGFjaG1lbnRSYW5nZS5sZW5ndGggPiAwKSB7Ci0gICAgICAgIE5TTXV0YWJsZUF0dHJp
YnV0ZWRTdHJpbmcgKm5ld0F0dHJpYnV0ZWRTdHJpbmcgPSBbW2F0dHJpYnV0ZWRTdHJpbmcgbXV0
YWJsZUNvcHlXaXRoWm9uZTpOVUxMXSBhdXRvcmVsZWFzZV07CisgICAgICAgIGF1dG8gbmV3QXR0
cmlidXRlZFN0cmluZyA9IGFkb3B0TlMoW2F0dHJpYnV0ZWRTdHJpbmcgbXV0YWJsZUNvcHlXaXRo
Wm9uZTpOVUxMXSk7CiAgICAgICAgIAogICAgICAgICB3aGlsZSAoYXR0YWNobWVudFJhbmdlLmxv
Y2F0aW9uICE9IE5TTm90Rm91bmQgJiYgYXR0YWNobWVudFJhbmdlLmxlbmd0aCA+IDApIHsKICAg
ICAgICAgICAgIFtuZXdBdHRyaWJ1dGVkU3RyaW5nIHJlcGxhY2VDaGFyYWN0ZXJzSW5SYW5nZTph
dHRhY2htZW50UmFuZ2Ugd2l0aFN0cmluZzpAIiJdOwogICAgICAgICAgICAgYXR0YWNobWVudFJh
bmdlID0gW1tuZXdBdHRyaWJ1dGVkU3RyaW5nIHN0cmluZ10gcmFuZ2VPZlN0cmluZzphdHRhY2ht
ZW50Q2hhclN0cmluZ107CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuIG5ld0F0dHJpYnV0ZWRT
dHJpbmc7CisgICAgICAgIHJldHVybiBuZXdBdHRyaWJ1dGVkU3RyaW5nLmF1dG9yZWxlYXNlKCk7
CiAgICAgfQogICAgIAogICAgIHJldHVybiBhdHRyaWJ1dGVkU3RyaW5nOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3QuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0LmgKaW5kZXgg
NzFhOTIyZjMxMjM0OTI3Y2ZhOGJjZDFlYzc0OGI3ZjQ0N2RlMzU3MC4uNzM4NTY5ODZmZTM1M2U5
NDJiODMwZTRlYzI4NWUyZDVkZDNmOGZjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVxdWVzdC5oCkBAIC0xMjcsNyArMTI3LDcgQEAg
aW5saW5lIGJvb2wgUmVzb3VyY2VSZXF1ZXN0OjpyZXNvdXJjZVByaW9yaXRpZXNFbmFibGVkKCkK
IH0KIAogI2lmIFBMQVRGT1JNKENPQ09BKQotTlNVUkxSZXF1ZXN0ICpjb3B5UmVxdWVzdFdpdGhT
dG9yYWdlU2Vzc2lvbihDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmLCBOU1VSTFJlcXVlc3QgKik7CitS
ZXRhaW5QdHI8TlNVUkxSZXF1ZXN0PiBjb3B5UmVxdWVzdFdpdGhTdG9yYWdlU2Vzc2lvbihDRlVS
TFN0b3JhZ2VTZXNzaW9uUmVmLCBOU1VSTFJlcXVlc3QgKik7CiBXRUJDT1JFX0VYUE9SVCBOU0Nh
Y2hlZFVSTFJlc3BvbnNlICpjYWNoZWRSZXNwb25zZUZvclJlcXVlc3QoQ0ZVUkxTdG9yYWdlU2Vz
c2lvblJlZiwgTlNVUkxSZXF1ZXN0ICopOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ29jb2Eu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdvcmtTdG9yYWdl
U2Vzc2lvbkNvY29hLm1tCmluZGV4IDk1MGEzYWU4ZDg3NDliNWQ1MzRhZDJkY2UzMGE2N2NmNTI3
YTE4MTYuLjgwYmQ2NmQ3OGQ0MWE3NTBhMjYwZWViYzlmNjdmNGJjYjZmYmUyMTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2Nv
YS9OZXR3b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbQpAQCAtMTYyLDcgKzE2Miw3IEBAIE5TSFRU
UENvb2tpZVN0b3JhZ2UgKk5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6bnNDb29raWVTdG9yYWdlKCkg
Y29uc3QKICAgICBpZiAoIWNmQ29va2llU3RvcmFnZSB8fCBbTlNIVFRQQ29va2llU3RvcmFnZSBz
aGFyZWRIVFRQQ29va2llU3RvcmFnZV0uX2Nvb2tpZVN0b3JhZ2UgPT0gY2ZDb29raWVTdG9yYWdl
KQogICAgICAgICByZXR1cm4gW05TSFRUUENvb2tpZVN0b3JhZ2Ugc2hhcmVkSFRUUENvb2tpZVN0
b3JhZ2VdOwogCi0gICAgcmV0dXJuIFtbW05TSFRUUENvb2tpZVN0b3JhZ2UgYWxsb2NdIF9pbml0
V2l0aENGSFRUUENvb2tpZVN0b3JhZ2U6Y2ZDb29raWVTdG9yYWdlLmdldCgpXSBhdXRvcmVsZWFz
ZV07CisgICAgcmV0dXJuIGFkb3B0TlMoW1tOU0hUVFBDb29raWVTdG9yYWdlIGFsbG9jXSBfaW5p
dFdpdGhDRkhUVFBDb29raWVTdG9yYWdlOmNmQ29va2llU3RvcmFnZS5nZXQoKV0pLmF1dG9yZWxl
YXNlKCk7CiB9CiAKIENvb2tpZVN0b3JhZ2VPYnNlcnZlciYgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
Ojpjb29raWVTdG9yYWdlT2JzZXJ2ZXIoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RDb2NvYS5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0K
aW5kZXggZDg2ZjRjOTA1ZWJmZTI3YzczYjI1YTdmNjNiNjMwNWI5ZmViZjZhMC4uNDE5OTliNzIx
Yzk3ODg1NjQ5OTQxNDI2YmUyMzhlYzY4ZWJiY2NiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RDb2NvYS5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jlc291cmNlUmVxdWVzdENvY29h
Lm1tCkBAIC00NCw3ICs0NCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIE5TVVJMUmVxdWVzdCAq
UmVzb3VyY2VSZXF1ZXN0Ojpuc1VSTFJlcXVlc3QoSFRUUEJvZHlVcGRhdGVQb2xpY3kgYm9keVBv
bGljeSkgY29uc3QKIHsKICAgICB1cGRhdGVQbGF0Zm9ybVJlcXVlc3QoYm9keVBvbGljeSk7Ci0g
ICAgcmV0dXJuIFtbbV9uc1JlcXVlc3QuZ2V0KCkgcmV0YWluXSBhdXRvcmVsZWFzZV07CisgICAg
YXV0byByZXF1ZXN0Q29weSA9IG1fbnNSZXF1ZXN0OworICAgIHJldHVybiByZXF1ZXN0Q29weS5h
dXRvcmVsZWFzZSgpOwogfQogCiBDRlVSTFJlcXVlc3RSZWYgUmVzb3VyY2VSZXF1ZXN0OjpjZlVS
TFJlcXVlc3QoSFRUUEJvZHlVcGRhdGVQb2xpY3kgYm9keVBvbGljeSkgY29uc3QKQEAgLTI2MCwx
NyArMjYxLDE3IEBAIHZvaWQgUmVzb3VyY2VSZXF1ZXN0Ojpkb1VwZGF0ZVBsYXRmb3JtSFRUUEJv
ZHkoKQogdm9pZCBSZXNvdXJjZVJlcXVlc3Q6OnNldFN0b3JhZ2VTZXNzaW9uKENGVVJMU3RvcmFn
ZVNlc3Npb25SZWYgc3RvcmFnZVNlc3Npb24pCiB7CiAgICAgdXBkYXRlUGxhdGZvcm1SZXF1ZXN0
KCk7Ci0gICAgbV9uc1JlcXVlc3QgPSBhZG9wdE5TKGNvcHlSZXF1ZXN0V2l0aFN0b3JhZ2VTZXNz
aW9uKHN0b3JhZ2VTZXNzaW9uLCBtX25zUmVxdWVzdC5nZXQoKSkpOworICAgIG1fbnNSZXF1ZXN0
ID0gY29weVJlcXVlc3RXaXRoU3RvcmFnZVNlc3Npb24oc3RvcmFnZVNlc3Npb24sIG1fbnNSZXF1
ZXN0LmdldCgpKTsKIH0KIAotTlNVUkxSZXF1ZXN0ICpjb3B5UmVxdWVzdFdpdGhTdG9yYWdlU2Vz
c2lvbihDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmIHN0b3JhZ2VTZXNzaW9uLCBOU1VSTFJlcXVlc3Qg
KnJlcXVlc3QpCitSZXRhaW5QdHI8TlNVUkxSZXF1ZXN0PiBjb3B5UmVxdWVzdFdpdGhTdG9yYWdl
U2Vzc2lvbihDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmIHN0b3JhZ2VTZXNzaW9uLCBOU1VSTFJlcXVl
c3QgKnJlcXVlc3QpCiB7CiAgICAgaWYgKCFzdG9yYWdlU2Vzc2lvbiB8fCAhcmVxdWVzdCkKLSAg
ICAgICAgcmV0dXJuIFtyZXF1ZXN0IGNvcHldOworICAgICAgICByZXR1cm4gYWRvcHROUyhbcmVx
dWVzdCBjb3B5XSk7CiAKICAgICBhdXRvIGNmUmVxdWVzdCA9IGFkb3B0Q0YoQ0ZVUkxSZXF1ZXN0
Q3JlYXRlTXV0YWJsZUNvcHkoa0NGQWxsb2NhdG9yRGVmYXVsdCwgW3JlcXVlc3QgX0NGVVJMUmVx
dWVzdF0pKTsKICAgICBfQ0ZVUkxSZXF1ZXN0U2V0U3RvcmFnZVNlc3Npb24oY2ZSZXF1ZXN0Lmdl
dCgpLCBzdG9yYWdlU2Vzc2lvbik7Ci0gICAgcmV0dXJuIFtbTlNVUkxSZXF1ZXN0IGFsbG9jXSBf
aW5pdFdpdGhDRlVSTFJlcXVlc3Q6Y2ZSZXF1ZXN0LmdldCgpXTsKKyAgICByZXR1cm4gYWRvcHRO
UyhbW05TVVJMUmVxdWVzdCBhbGxvY10gX2luaXRXaXRoQ0ZVUkxSZXF1ZXN0OmNmUmVxdWVzdC5n
ZXQoKV0pOwogfQogCiBOU0NhY2hlZFVSTFJlc3BvbnNlICpjYWNoZWRSZXNwb25zZUZvclJlcXVl
c3QoQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZiBzdG9yYWdlU2Vzc2lvbiwgTlNVUkxSZXF1ZXN0ICpy
ZXF1ZXN0KQpAQCAtMjgzLDcgKzI4NCw3IEBAIE5TQ2FjaGVkVVJMUmVzcG9uc2UgKmNhY2hlZFJl
c3BvbnNlRm9yUmVxdWVzdChDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmIHN0b3JhZ2VTZXNzCiAgICAg
aWYgKCFjYWNoZWRSZXNwb25zZSkKICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAgIHJldHVybiBb
W1tOU0NhY2hlZFVSTFJlc3BvbnNlIGFsbG9jXSBfaW5pdFdpdGhDRkNhY2hlZFVSTFJlc3BvbnNl
OmNhY2hlZFJlc3BvbnNlLmdldCgpXSBhdXRvcmVsZWFzZV07CisgICAgcmV0dXJuIGFkb3B0TlMo
W1tOU0NhY2hlZFVSTFJlc3BvbnNlIGFsbG9jXSBfaW5pdFdpdGhDRkNhY2hlZFVSTFJlc3BvbnNl
OmNhY2hlZFJlc3BvbnNlLmdldCgpXSkuYXV0b3JlbGVhc2UoKTsKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
b2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tCmluZGV4IGMyMmU4N2Q4NjhkZDMxN2Q5
ZGRmOTlkZTRlYTFmMzRmZTdjODgzNzYuLjY1M2I4ZWVlMjdkNGM1NjY3MjkxYjhlN2RiYTE1NGNi
YjI3Y2EyMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29j
b2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW0KQEAgLTQ0MywxMiArNDQzLDEyIEBA
IC0gKE5TVVJMU2Vzc2lvbkRhdGFUYXNrICopZGF0YVRhc2tXaXRoUmVxdWVzdDooTlNVUkxSZXF1
ZXN0ICopcmVxdWVzdAogICAgIGlmIChfaW52YWxpZGF0ZWQpCiAgICAgICAgIHJldHVybiBuaWw7
CiAKLSAgICBXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2sgKnRhc2sgPSBbW1dlYkNvcmVOU1VS
TFNlc3Npb25EYXRhVGFzayBhbGxvY10gaW5pdFdpdGhTZXNzaW9uOnNlbGYgaWRlbnRpZmllcjpf
bmV4dFRhc2tJZGVudGlmaWVyKysgcmVxdWVzdDpyZXF1ZXN0XTsKKyAgICBhdXRvIHRhc2sgPSBh
ZG9wdE5TKFtbV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrIGFsbG9jXSBpbml0V2l0aFNlc3Np
b246c2VsZiBpZGVudGlmaWVyOl9uZXh0VGFza0lkZW50aWZpZXIrKyByZXF1ZXN0OnJlcXVlc3Rd
KTsKICAgICB7CiAgICAgICAgIExvY2tlcjxMb2NrPiBsb2NrZXIoX2RhdGFUYXNrc0xvY2spOwot
ICAgICAgICBfZGF0YVRhc2tzLmFkZCh0YXNrKTsKKyAgICAgICAgX2RhdGFUYXNrcy5hZGQodGFz
ay5nZXQoKSk7CiAgICAgfQotICAgIHJldHVybiAoTlNVUkxTZXNzaW9uRGF0YVRhc2sgKilbdGFz
ayBhdXRvcmVsZWFzZV07CisgICAgcmV0dXJuIChOU1VSTFNlc3Npb25EYXRhVGFzayAqKXRhc2su
YXV0b3JlbGVhc2UoKTsKIH0KIAogLSAoTlNVUkxTZXNzaW9uRGF0YVRhc2sgKilkYXRhVGFza1dp
dGhVUkw6KE5TVVJMICopdXJsCkBAIC02NjEsOSArNjYxLDkgQEAgLSAoaWQpaW5pdFdpdGhTZXNz
aW9uOihXZWJDb3JlTlNVUkxTZXNzaW9uICopc2Vzc2lvbiBpZGVudGlmaWVyOihOU1VJbnRlZ2Vy
KWlkZW4KIAogICAgIC8vIENvcmVNZWRpYSB3aWxsIGV4cGxpY2l0bHkgYWRkIGEgdXNlciBhZ2Vu
dCBoZWFkZXIuIFJlbW92ZSBpZiBwcmVzZW50LgogICAgIGlmIChhdXRvKiB1c2VyQWdlbnRWYWx1
ZSA9IFtyZXF1ZXN0IHZhbHVlRm9ySFRUUEhlYWRlckZpZWxkOkAiVXNlci1BZ2VudCJdKSB7Ci0g
ICAgICAgIE5TTXV0YWJsZVVSTFJlcXVlc3QqIG11dGFibGVSZXF1ZXN0ID0gW3JlcXVlc3QgbXV0
YWJsZUNvcHlXaXRoWm9uZTpuaWxdOworICAgICAgICBhdXRvIG11dGFibGVSZXF1ZXN0ID0gYWRv
cHROUyhbcmVxdWVzdCBtdXRhYmxlQ29weVdpdGhab25lOm5pbF0pOwogICAgICAgICBbbXV0YWJs
ZVJlcXVlc3Qgc2V0VmFsdWU6bmlsIGZvckhUVFBIZWFkZXJGaWVsZDpAIlVzZXItQWdlbnQiXTsK
LSAgICAgICAgcmVxdWVzdCA9IFttdXRhYmxlUmVxdWVzdCBhdXRvcmVsZWFzZV07CisgICAgICAg
IHJlcXVlc3QgPSBtdXRhYmxlUmVxdWVzdC5hdXRvcmVsZWFzZSgpOwogICAgIH0KIAogICAgIHNl
bGYub3JpZ2luYWxSZXF1ZXN0ID0gc2VsZi5jdXJyZW50UmVxdWVzdCA9IHJlcXVlc3Q7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9BdXRoZW50aWNhdGlv
bk1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0F1dGhlbnRpY2F0
aW9uTWFjLm1tCmluZGV4IGZiNGRlNzIwODZjOTczMDA3ZGJkOTBiZDA0MTM1NDY3ZjA5ODU2ZTMu
LmNmY2YxMGZjYWYyMTk4Y2IxZTg5MjQyOWU5NjZiY2EyMzI2OTNkOWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0F1dGhlbnRpY2F0aW9uTWFjLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0F1dGhlbnRpY2F0aW9uTWFj
Lm1tCkBAIC0xNTcsNyArMTU3LDcgQEAgTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqbWFj
KGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBjb3JlQ2hhbGxlbmdlKQogICAgIGlmIChj
b3JlQ2hhbGxlbmdlLm5zVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoKSkKICAgICAgICAgcmV0
dXJuIGNvcmVDaGFsbGVuZ2UubnNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSgpOwogICAgICAg
ICAKLSAgICByZXR1cm4gW1tbTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSBhbGxvY10gaW5p
dFdpdGhQcm90ZWN0aW9uU3BhY2U6Y29yZUNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2UoKS5uc1Nw
YWNlKCkgcHJvcG9zZWRDcmVkZW50aWFsOmNvcmVDaGFsbGVuZ2UucHJvcG9zZWRDcmVkZW50aWFs
KCkubnNDcmVkZW50aWFsKCkgcHJldmlvdXNGYWlsdXJlQ291bnQ6Y29yZUNoYWxsZW5nZS5wcmV2
aW91c0ZhaWx1cmVDb3VudCgpIGZhaWx1cmVSZXNwb25zZTpjb3JlQ2hhbGxlbmdlLmZhaWx1cmVS
ZXNwb25zZSgpLm5zVVJMUmVzcG9uc2UoKSBlcnJvcjpjb3JlQ2hhbGxlbmdlLmVycm9yKCkgc2Vu
ZGVyOmNvcmVDaGFsbGVuZ2Uuc2VuZGVyKCldIGF1dG9yZWxlYXNlXTsKKyAgICByZXR1cm4gYWRv
cHROUyhbW05TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgYWxsb2NdIGluaXRXaXRoUHJvdGVj
dGlvblNwYWNlOmNvcmVDaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlKCkubnNTcGFjZSgpIHByb3Bv
c2VkQ3JlZGVudGlhbDpjb3JlQ2hhbGxlbmdlLnByb3Bvc2VkQ3JlZGVudGlhbCgpLm5zQ3JlZGVu
dGlhbCgpIHByZXZpb3VzRmFpbHVyZUNvdW50OmNvcmVDaGFsbGVuZ2UucHJldmlvdXNGYWlsdXJl
Q291bnQoKSBmYWlsdXJlUmVzcG9uc2U6Y29yZUNoYWxsZW5nZS5mYWlsdXJlUmVzcG9uc2UoKS5u
c1VSTFJlc3BvbnNlKCkgZXJyb3I6Y29yZUNoYWxsZW5nZS5lcnJvcigpIHNlbmRlcjpjb3JlQ2hh
bGxlbmdlLnNlbmRlcigpXSkuYXV0b3JlbGVhc2UoKTsKIH0KIAogQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UgY29yZShOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICptYWNDaGFsbGVuZ2UpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUVy
cm9yTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VF
cnJvck1hYy5tbQppbmRleCAzNzFlZGQ2MGJhYTk5MzdiYmQ5ZDUyZGVhMjdkZWIzODUyYjIwMGJm
Li5hZDY5YTVmMDdiYTQ3OGNhOTdmNDgzYTEyYzMwNTg1YjY1YThlZTg0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUVycm9yTWFjLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlRXJyb3JNYWMu
bW0KQEAgLTU2LDcgKzU2LDcgQEAgc3RhdGljIE5TRGljdGlvbmFyeSogZGljdGlvbmFyeVRoYXRD
YW5Db2RlKE5TRGljdGlvbmFyeSogc3JjKQogICAgIC8vIFRoaXMgZnVuY3Rpb24gbWFrZXMgYSBj
b3B5IG9mIGlucHV0IGRpY3Rpb25hcnksIG1vZGlmaWVzIGl0IHN1Y2ggdGhhdCBpdCAic2hvdWxk
IiAoYXMgbXVjaCBhcyB3ZSBjYW4gaGVscCBpdCkKICAgICAvLyBub3QgY29udGFpbiBhbnkgb2Jq
ZWN0cyB0aGF0IGRvIG5vdCBjb25mb3JtIHRvIE5TQ29kaW5nIHByb3RvY29sLCBhbmQgcmV0dXJu
cyBpdCBhdXRvcmVsZWFzZWQuCiAKLSAgICBOU011dGFibGVEaWN0aW9uYXJ5KiBkc3QgPSBbc3Jj
IG11dGFibGVDb3B5XTsKKyAgICBhdXRvIGRzdCA9IGFkb3B0TlMoW3NyYyBtdXRhYmxlQ29weV0p
OwogCiAgICAgLy8gS2lsbCB0aGUga25vd24gcHJvYmxlbSBlbnRyaWVzLgogICAgIFtkc3QgcmVt
b3ZlT2JqZWN0Rm9yS2V5OkAiTlNFcnJvclBlZXJDZXJ0aWZpY2F0ZUNoYWluS2V5Il07IC8vIE5T
QXJyYXkgd2l0aCBTZWNDZXJ0aWZpY2F0ZVJlZiBvYmplY3RzCkBAIC03Nyw3ICs3Nyw3IEBAIHN0
YXRpYyBOU0RpY3Rpb25hcnkqIGRpY3Rpb25hcnlUaGF0Q2FuQ29kZShOU0RpY3Rpb25hcnkqIHNy
YykKICAgICAgICAgLy8gRklYTUU6IFdlIGNvdWxkIGRyaWxsIGRvd24gaW50byBzdWJkaWN0aW9u
YXJpZXMsIGJ1dCBpdCBzZWVtcyBtb3JlIHRyb3VibGUgdGhhbiBpdCdzIHdvcnRoCiAgICAgfV07
CiAKLSAgICByZXR1cm4gW2RzdCBhdXRvcmVsZWFzZV07CisgICAgcmV0dXJuIGRzdC5hdXRvcmVs
ZWFzZSgpOwogfQogCiAtICh2b2lkKWVuY29kZVdpdGhDb2RlcjooTlNDb2RlciAqKWNvZGVyCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUhh
bmRsZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNl
SGFuZGxlTWFjLm1tCmluZGV4IGIyY2JhYjdjOGFjZjJjMzk1Zjk4NDcwYTUwYmYwNzgyZDkxMmNh
NWEuLjMxMzU1NGRkZmNjYTg4MzdmODhmYWEzNmExNGQ3YWUzMmEwYzAzOTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlSGFuZGxlTWFjLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlSGFuZGxl
TWFjLm1tCkBAIC0xNzMsMTQgKzE3MywxNCBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpjcmVhdGVO
U1VSTENvbm5lY3Rpb24oaWQgZGVsZWdhdGUsIGJvb2wgc2hvdWxkVXNlQ3JlZGVudGlhbAogICAg
IG5zUmVxdWVzdCA9IGFwcGx5U25pZmZpbmdQb2xpY2llc0lmTmVlZGVkKG5zUmVxdWVzdCwgc2hv
dWxkQ29udGVudFNuaWZmLCBzaG91bGRDb250ZW50RW5jb2RpbmdTbmlmZik7CiAKICAgICBpZiAo
ZC0+bV9zdG9yYWdlU2Vzc2lvbikKLSAgICAgICAgbnNSZXF1ZXN0ID0gW2NvcHlSZXF1ZXN0V2l0
aFN0b3JhZ2VTZXNzaW9uKGQtPm1fc3RvcmFnZVNlc3Npb24uZ2V0KCksIG5zUmVxdWVzdCkgYXV0
b3JlbGVhc2VdOworICAgICAgICBuc1JlcXVlc3QgPSBjb3B5UmVxdWVzdFdpdGhTdG9yYWdlU2Vz
c2lvbihkLT5tX3N0b3JhZ2VTZXNzaW9uLmdldCgpLCBuc1JlcXVlc3QpLmF1dG9yZWxlYXNlKCk7
CiAKICAgICBBU1NFUlQoW05TVVJMQ29ubmVjdGlvbiBpbnN0YW5jZXNSZXNwb25kVG9TZWxlY3Rv
cjpAc2VsZWN0b3IoX2luaXRXaXRoUmVxdWVzdDpkZWxlZ2F0ZTp1c2VzQ2FjaGU6bWF4Q29udGVu
dExlbmd0aDpzdGFydEltbWVkaWF0ZWx5OmNvbm5lY3Rpb25Qcm9wZXJ0aWVzOildKTsKIAogI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgLy8gRklYTUU6IFRoaXMgY29kZSBpcyBkaWZmZXJl
bnQgZnJvbSBpT1MgY29kZSBpbiBSZXNvdXJjZUhhbmRsZUNGTmV0LmNwcCBpbiB0aGF0IGhlcmUg
d2UgcmVzcGVjdCBzdHJlYW0gcHJvcGVydGllcyB0aGF0IHdlcmUgcHJlc2VudCBpbiBjbGllbnQg
cHJvcGVydGllcy4KICAgICBOU0RpY3Rpb25hcnkgKnN0cmVhbVByb3BlcnRpZXNGcm9tQ2xpZW50
ID0gW2Nvbm5lY3Rpb25Qcm9wZXJ0aWVzIG9iamVjdEZvcktleTpAImtDRlVSTENvbm5lY3Rpb25T
b2NrZXRTdHJlYW1Qcm9wZXJ0aWVzIl07Ci0gICAgTlNNdXRhYmxlRGljdGlvbmFyeSAqc3RyZWFt
UHJvcGVydGllcyA9IHN0cmVhbVByb3BlcnRpZXNGcm9tQ2xpZW50ID8gW1tzdHJlYW1Qcm9wZXJ0
aWVzRnJvbUNsaWVudCBtdXRhYmxlQ29weV0gYXV0b3JlbGVhc2VdIDogW05TTXV0YWJsZURpY3Rp
b25hcnkgZGljdGlvbmFyeV07CisgICAgTlNNdXRhYmxlRGljdGlvbmFyeSAqc3RyZWFtUHJvcGVy
dGllcyA9IHN0cmVhbVByb3BlcnRpZXNGcm9tQ2xpZW50ID8gYWRvcHROUyhbc3RyZWFtUHJvcGVy
dGllc0Zyb21DbGllbnQgbXV0YWJsZUNvcHldKS5hdXRvcmVsZWFzZSgpIDogW05TTXV0YWJsZURp
Y3Rpb25hcnkgZGljdGlvbmFyeV07CiAjZWxzZQogICAgIE5TTXV0YWJsZURpY3Rpb25hcnkgKnN0
cmVhbVByb3BlcnRpZXMgPSBbTlNNdXRhYmxlRGljdGlvbmFyeSBkaWN0aW9uYXJ5XTsKICNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29y
ZVVSTFJlc3BvbnNlLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2Vi
Q29yZVVSTFJlc3BvbnNlLm1tCmluZGV4IGQyMDc4N2JjYjFiOGY5YWQ3YWNiYmUzODFiOWM0OTRh
ZjVjMTBhOTEuLmJiMTE2YTlkZmYzZTgwMjQ5ZTNjMWZmMTBlZTkxMjljNzA1NmZkMTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVVUkxSZXNw
b25zZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3Jl
VVJMUmVzcG9uc2UubW0KQEAgLTM0Miw3ICszNDIsNyBAQCBOU1VSTFJlc3BvbnNlICpzeW50aGVz
aXplUmVkaXJlY3RSZXNwb25zZUlmTmVjZXNzYXJ5KE5TVVJMUmVxdWVzdCAqY3VycmVudFJlcXVl
cwogICAgIGlmIChbW1tuZXdSZXF1ZXN0IFVSTF0gc2NoZW1lXSBpc0VxdWFsVG9TdHJpbmc6W1tj
dXJyZW50UmVxdWVzdCBVUkxdIHNjaGVtZV1dICYmICFbbmV3UmVxdWVzdCBfc2NoZW1lV2FzVXBn
cmFkZWREdWVUb0R5bmFtaWNIU1RTXSkKICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAgIHJldHVy
biBbW1Jlc291cmNlUmVzcG9uc2U6OnN5bnRoZXRpY1JlZGlyZWN0UmVzcG9uc2UoVVJMKFtjdXJy
ZW50UmVxdWVzdCBVUkxdKSwgVVJMKFtuZXdSZXF1ZXN0IFVSTF0pKS5uc1VSTFJlc3BvbnNlKCkg
cmV0YWluXSBhdXRvcmVsZWFzZV07CisgICAgcmV0dXJuIHJldGFpblB0cihSZXNvdXJjZVJlc3Bv
bnNlOjpzeW50aGV0aWNSZWRpcmVjdFJlc3BvbnNlKFVSTChbY3VycmVudFJlcXVlc3QgVVJMXSks
IFVSTChbbmV3UmVxdWVzdCBVUkxdKSkubnNVUkxSZXNwb25zZSgpKS5hdXRvcmVsZWFzZSgpOwog
fQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2lvcy9Mb2Nh
bGl6ZWREYXRlQ2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvaW9zL0xvY2Fs
aXplZERhdGVDYWNoZS5oCmluZGV4IDlhZTVlYzVkYTNjMzBmM2M5MzNhMmQ2NzkwMTVlNTYxNzdj
ODAxN2UuLmMxOGY4YzU5MmRjOGMzNzcyMjI5YTExYjEyMDMxZjFmZjA4YjNhM2UgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvaW9zL0xvY2FsaXplZERhdGVDYWNoZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvaW9zL0xvY2FsaXplZERhdGVDYWNo
ZS5oCkBAIC00OSw3ICs0OSw3IEBAIHByaXZhdGU6CiAgICAgTG9jYWxpemVkRGF0ZUNhY2hlKCk7
CiAgICAgfkxvY2FsaXplZERhdGVDYWNoZSgpOwogCi0gICAgTlNEYXRlRm9ybWF0dGVyICpjcmVh
dGVGb3JtYXR0ZXJGb3JUeXBlKERhdGVDb21wb25lbnRzVHlwZSk7CisgICAgUmV0YWluUHRyPE5T
RGF0ZUZvcm1hdHRlcj4gY3JlYXRlRm9ybWF0dGVyRm9yVHlwZShEYXRlQ29tcG9uZW50c1R5cGUp
OwogICAgIGZsb2F0IGNhbGN1bGF0ZU1heGltdW1XaWR0aChEYXRlQ29tcG9uZW50c1R5cGUsIGNv
bnN0IE1lYXN1cmVUZXh0Q2xpZW50Jik7CiAKICAgICAvLyBVc2luZyBpbnQgaW5zdGVhZCBvZiBE
YXRlQ29tcG9uZW50c1R5cGUgZm9yIHRoZSBrZXkgYmVjYXVzZSB0aGUgZW51bQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9pb3MvTG9jYWxpemVkRGF0ZUNhY2hlLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9pb3MvTG9jYWxpemVkRGF0ZUNhY2hlLm1t
CmluZGV4IGE5MzMzYjliYjAwOTJlOTFiNDEyNmUyN2Q4YmY3YWFjNGM0MWZhZWEuLjkyZjU1NzA2
Nzg4YTk2ODVjNzU1MTg0ZGI1ZDNjMzY4MGEzN2I3NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3RleHQvaW9zL0xvY2FsaXplZERhdGVDYWNoZS5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2lvcy9Mb2NhbGl6ZWREYXRlQ2FjaGUubW0KQEAgLTc2LDkg
Kzc2LDkgQEAgTlNEYXRlRm9ybWF0dGVyICpMb2NhbGl6ZWREYXRlQ2FjaGU6OmZvcm1hdHRlckZv
ckRhdGVUeXBlKERhdGVDb21wb25lbnRzVHlwZSB0eXAKICAgICBpZiAobV9mb3JtYXR0ZXJNYXAu
Y29udGFpbnMoa2V5KSkKICAgICAgICAgcmV0dXJuIG1fZm9ybWF0dGVyTWFwLmdldChrZXkpLmdl
dCgpOwogCi0gICAgTlNEYXRlRm9ybWF0dGVyICpkYXRlRm9ybWF0dGVyID0gW2NyZWF0ZUZvcm1h
dHRlckZvclR5cGUodHlwZSkgYXV0b3JlbGVhc2VdOwotICAgIG1fZm9ybWF0dGVyTWFwLnNldChr
ZXksIGRhdGVGb3JtYXR0ZXIpOwotICAgIHJldHVybiBkYXRlRm9ybWF0dGVyOworICAgIGF1dG8g
ZGF0ZUZvcm1hdHRlciA9IGNyZWF0ZUZvcm1hdHRlckZvclR5cGUodHlwZSk7CisgICAgbV9mb3Jt
YXR0ZXJNYXAuc2V0KGtleSwgZGF0ZUZvcm1hdHRlci5nZXQoKSk7CisgICAgcmV0dXJuIGRhdGVG
b3JtYXR0ZXIuYXV0b3JlbGVhc2UoKTsKIH0KIAogZmxvYXQgTG9jYWxpemVkRGF0ZUNhY2hlOjpt
YXhpbXVtV2lkdGhGb3JEYXRlVHlwZShEYXRlQ29tcG9uZW50c1R5cGUgdHlwZSwgY29uc3QgRm9u
dENhc2NhZGUmIGZvbnQsIGNvbnN0IE1lYXN1cmVUZXh0Q2xpZW50JiBtZWFzdXJlcikKQEAgLTk3
LDkgKzk3LDkgQEAgZmxvYXQgTG9jYWxpemVkRGF0ZUNhY2hlOjptYXhpbXVtV2lkdGhGb3JEYXRl
VHlwZShEYXRlQ29tcG9uZW50c1R5cGUgdHlwZSwgY29uc3QKICAgICByZXR1cm4gY2FsY3VsYXRl
ZE1heGltdW07CiB9CiAKLU5TRGF0ZUZvcm1hdHRlciAqTG9jYWxpemVkRGF0ZUNhY2hlOjpjcmVh
dGVGb3JtYXR0ZXJGb3JUeXBlKERhdGVDb21wb25lbnRzVHlwZSB0eXBlKQorUmV0YWluUHRyPE5T
RGF0ZUZvcm1hdHRlcj4gTG9jYWxpemVkRGF0ZUNhY2hlOjpjcmVhdGVGb3JtYXR0ZXJGb3JUeXBl
KERhdGVDb21wb25lbnRzVHlwZSB0eXBlKQogewotICAgIE5TRGF0ZUZvcm1hdHRlciAqZGF0ZUZv
cm1hdHRlciA9IFtbTlNEYXRlRm9ybWF0dGVyIGFsbG9jXSBpbml0XTsKKyAgICBhdXRvIGRhdGVG
b3JtYXR0ZXIgPSBhZG9wdE5TKFtbTlNEYXRlRm9ybWF0dGVyIGFsbG9jXSBpbml0XSk7CiAgICAg
TlNMb2NhbGUgKmN1cnJlbnRMb2NhbGUgPSBbTlNMb2NhbGUgY3VycmVudExvY2FsZV07CiAgICAg
W2RhdGVGb3JtYXR0ZXIgc2V0TG9jYWxlOmN1cnJlbnRMb2NhbGVdOwogCkBAIC0xNDEsNyArMTQx
LDcgQEAgZmxvYXQgTG9jYWxpemVkRGF0ZUNhY2hlOjpjYWxjdWxhdGVNYXhpbXVtV2lkdGgoRGF0
ZUNvbXBvbmVudHNUeXBlIHR5cGUsIGNvbnN0IE0KICAgICBmbG9hdCBtYXhpbXVtV2lkdGggPSAw
OwogCiAgICAgLy8gR2V0IHRoZSBmb3JtYXR0ZXIgd2Ugd291bGQgdXNlLCBjb3B5IGl0IGJlY2F1
c2Ugd2Ugd2lsbCBmb3JjZSBpdHMgdGltZSB6b25lIHRvIGJlIFVUQy4KLSAgICBOU0RhdGVGb3Jt
YXR0ZXIgKmRhdGVGb3JtYXR0ZXIgPSBbW2Zvcm1hdHRlckZvckRhdGVUeXBlKHR5cGUpIGNvcHld
IGF1dG9yZWxlYXNlXTsKKyAgICBhdXRvIGRhdGVGb3JtYXR0ZXIgPSBhZG9wdE5TKFtmb3JtYXR0
ZXJGb3JEYXRlVHlwZSh0eXBlKSBjb3B5XSk7CiAgICAgW2RhdGVGb3JtYXR0ZXIgc2V0VGltZVpv
bmU6W05TVGltZVpvbmUgdGltZVpvbmVGb3JTZWNvbmRzRnJvbUdNVDowXV07CiAKICAgICAvLyBT
YW1wbGUgZGF0ZSB3aXRoIGEgNCBkaWdpdCB5ZWFyIGFuZCAyIGRpZ2l0IGRheSwgaG91ciwgYW5k
IG1pbnV0ZS4gRGlnaXRzIGFyZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCmluZGV4IDI5ZTBhODMwZTQxZDU1
ZTZiZjM1YmJiMzk2YWU4MWZiOWIyMGYxOGMuLjZlNTQ1NmU5M2RkYmQ4ZThiYTFhOTBjNmMyODQ3
YzAzNGNlNzIzMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29j
b2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0KQEAgLTQ3NywxMyArNDc3LDEzIEBAIC0g
KHZvaWQpVVJMU2Vzc2lvbjooTlNVUkxTZXNzaW9uICopc2Vzc2lvbiB0YXNrOihOU1VSTFNlc3Np
b25UYXNrICopdGFzayBuZWVkTmV3CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElD
UykKIHN0YXRpYyBOU1VSTFJlcXVlc3QqIGRvd25ncmFkZVJlcXVlc3QoTlNVUkxSZXF1ZXN0ICpy
ZXF1ZXN0KQogewotICAgIE5TTXV0YWJsZVVSTFJlcXVlc3QgKm5zTXV0YWJsZVJlcXVlc3QgPSBb
W3JlcXVlc3QgbXV0YWJsZUNvcHldIGF1dG9yZWxlYXNlXTsKLSAgICBpZiAoW25zTXV0YWJsZVJl
cXVlc3QuVVJMLnNjaGVtZSBpc0VxdWFsVG9TdHJpbmc6QCJodHRwcyJdKSB7Ci0gICAgICAgIE5T
VVJMQ29tcG9uZW50cyAqY29tcG9uZW50cyA9IFtOU1VSTENvbXBvbmVudHMgY29tcG9uZW50c1dp
dGhVUkw6bnNNdXRhYmxlUmVxdWVzdC5VUkwgcmVzb2x2aW5nQWdhaW5zdEJhc2VVUkw6Tk9dOwor
ICAgIGF1dG8gbnNNdXRhYmxlUmVxdWVzdCA9IGFkb3B0TlMoW3JlcXVlc3QgbXV0YWJsZUNvcHld
KTsKKyAgICBpZiAoW1tuc011dGFibGVSZXF1ZXN0IFVSTF0uc2NoZW1lIGlzRXF1YWxUb1N0cmlu
ZzpAImh0dHBzIl0pIHsKKyAgICAgICAgTlNVUkxDb21wb25lbnRzICpjb21wb25lbnRzID0gW05T
VVJMQ29tcG9uZW50cyBjb21wb25lbnRzV2l0aFVSTDpbbnNNdXRhYmxlUmVxdWVzdCBVUkxdIHJl
c29sdmluZ0FnYWluc3RCYXNlVVJMOk5PXTsKICAgICAgICAgY29tcG9uZW50cy5zY2hlbWUgPSBA
Imh0dHAiOwogICAgICAgICBbbnNNdXRhYmxlUmVxdWVzdCBzZXRVUkw6Y29tcG9uZW50cy5VUkxd
OwotICAgICAgICBBU1NFUlQoW25zTXV0YWJsZVJlcXVlc3QuVVJMLnNjaGVtZSBpc0VxdWFsVG9T
dHJpbmc6QCJodHRwIl0pOwotICAgICAgICByZXR1cm4gbnNNdXRhYmxlUmVxdWVzdDsKKyAgICAg
ICAgQVNTRVJUKFtbbnNNdXRhYmxlUmVxdWVzdCBVUkxdLnNjaGVtZSBpc0VxdWFsVG9TdHJpbmc6
QCJodHRwIl0pOworICAgICAgICByZXR1cm4gbnNNdXRhYmxlUmVxdWVzdC5hdXRvcmVsZWFzZSgp
OwogICAgIH0KIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtNTE0LDE1ICs1MTQsMTUg
QEAgc3RhdGljIE5TVVJMUmVxdWVzdCogdXBkYXRlSWdub3JlU3RyaWN0VHJhbnNwb3J0U2VjdXJp
dHlTZXR0aW5nSWZOZWNlc3NhcnkoTlNVUkwKICAgICBpZiAoW3JlcXVlc3QuVVJMLnNjaGVtZSBp
c0VxdWFsVG9TdHJpbmc6QCJodHRwcyJdICYmIHNob3VsZElnbm9yZUhTVFMgJiYgaWdub3JlSFNU
UyhyZXF1ZXN0KSkgewogICAgICAgICAvLyBUaGUgcmVxdWVzdCB3YXMgdXBncmFkZWQgZm9yIHNv
bWUgb3RoZXIgcmVhc29uIHRoYW4gSFNUUy4KICAgICAgICAgLy8gRG9uJ3QgaWdub3JlIEhTVFMg
dG8gYXZvaWQgdGhlIHJpc2sgb2YgYW5vdGhlciBkb3duZ3JhZGUuCi0gICAgICAgIE5TTXV0YWJs
ZVVSTFJlcXVlc3QgKm5zTXV0YWJsZVJlcXVlc3QgPSBbW3JlcXVlc3QgbXV0YWJsZUNvcHldIGF1
dG9yZWxlYXNlXTsKLSAgICAgICAgc2V0SWdub3JlSFNUUyhuc011dGFibGVSZXF1ZXN0LCBmYWxz
ZSk7Ci0gICAgICAgIHJldHVybiBuc011dGFibGVSZXF1ZXN0OworICAgICAgICBhdXRvIG5zTXV0
YWJsZVJlcXVlc3QgPSBhZG9wdE5TKFtyZXF1ZXN0IG11dGFibGVDb3B5XSk7CisgICAgICAgIHNl
dElnbm9yZUhTVFMobnNNdXRhYmxlUmVxdWVzdC5nZXQoKSwgZmFsc2UpOworICAgICAgICByZXR1
cm4gbnNNdXRhYmxlUmVxdWVzdC5hdXRvcmVsZWFzZSgpOwogICAgIH0KICAgICAKICAgICBpZiAo
W3JlcXVlc3QuVVJMLnNjaGVtZSBpc0VxdWFsVG9TdHJpbmc6QCJodHRwIl0gJiYgaWdub3JlSFNU
UyhyZXF1ZXN0KSAhPSBzaG91bGRJZ25vcmVIU1RTKSB7Ci0gICAgICAgIE5TTXV0YWJsZVVSTFJl
cXVlc3QgKm5zTXV0YWJsZVJlcXVlc3QgPSBbW3JlcXVlc3QgbXV0YWJsZUNvcHldIGF1dG9yZWxl
YXNlXTsKLSAgICAgICAgc2V0SWdub3JlSFNUUyhuc011dGFibGVSZXF1ZXN0LCBzaG91bGRJZ25v
cmVIU1RTKTsKLSAgICAgICAgcmV0dXJuIG5zTXV0YWJsZVJlcXVlc3Q7CisgICAgICAgIGF1dG8g
bnNNdXRhYmxlUmVxdWVzdCA9IGFkb3B0TlMoW3JlcXVlc3QgbXV0YWJsZUNvcHldKTsKKyAgICAg
ICAgc2V0SWdub3JlSFNUUyhuc011dGFibGVSZXF1ZXN0LmdldCgpLCBzaG91bGRJZ25vcmVIU1RT
KTsKKyAgICAgICAgcmV0dXJuIG5zTXV0YWJsZVJlcXVlc3QuYXV0b3JlbGVhc2UoKTsKICAgICB9
CiAKICAgICByZXR1cm4gcmVxdWVzdDsKQEAgLTExNTgsNyArMTE1OCw3IEBAIHN0YXRpYyBOU0Rp
Y3Rpb25hcnkgKnByb3h5RGljdGlvbmFyeShjb25zdCBVUkwmIGh0dHBQcm94eSwgY29uc3QgVVJM
JiBodHRwc1Byb3h5CiAKICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgog
Ci0gICAgTlNNdXRhYmxlRGljdGlvbmFyeSAqZGljdGlvbmFyeSA9IFtbW05TTXV0YWJsZURpY3Rp
b25hcnkgYWxsb2NdIGluaXRdIGF1dG9yZWxlYXNlXTsKKyAgICBhdXRvIGRpY3Rpb25hcnkgPSBh
ZG9wdE5TKFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdF0pOwogICAgIGlmIChodHRw
UHJveHkuaXNWYWxpZCgpKSB7CiAgICAgICAgIFtkaWN0aW9uYXJ5IHNldE9iamVjdDpodHRwUHJv
eHkuaG9zdCgpLnRvU3RyaW5nKCkgZm9yS2V5OihOU1N0cmluZyAqKWtDRlN0cmVhbVByb3BlcnR5
SFRUUFByb3h5SG9zdF07CiAgICAgICAgIGlmIChhdXRvIHBvcnQgPSBodHRwUHJveHkucG9ydCgp
KQpAQCAtMTE2OSw3ICsxMTY5LDcgQEAgc3RhdGljIE5TRGljdGlvbmFyeSAqcHJveHlEaWN0aW9u
YXJ5KGNvbnN0IFVSTCYgaHR0cFByb3h5LCBjb25zdCBVUkwmIGh0dHBzUHJveHkKICAgICAgICAg
aWYgKGF1dG8gcG9ydCA9IGh0dHBzUHJveHkucG9ydCgpKQogICAgICAgICAgICAgW2RpY3Rpb25h
cnkgc2V0T2JqZWN0OkAoKnBvcnQpIGZvcktleTooTlNTdHJpbmcgKilrQ0ZTdHJlYW1Qcm9wZXJ0
eUhUVFBTUHJveHlQb3J0XTsKICAgICB9Ci0gICAgcmV0dXJuIGRpY3Rpb25hcnk7CisgICAgcmV0
dXJuIGRpY3Rpb25hcnkuYXV0b3JlbGVhc2UoKTsKIAogICAgIEFMTE9XX0RFUFJFQ0FURURfREVD
TEFSQVRJT05TX0VORAogfQpAQCAtMTIzMiw3ICsxMjMyLDcgQEAgTmV0d29ya1Nlc3Npb25Db2Nv
YTo6TmV0d29ya1Nlc3Npb25Db2NvYShOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nlc3MsIE5l
dHdvcmsKICAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y29uc3VtZVBlcm1hbmVudGx5KHBhcmFt
ZXRlcnMuaHN0c1N0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwogICAgICAgICAvLyBG
SVhNRTogUmVtb3ZlIHRoaXMgcmVzcG9uZHNUb1NlbGVjdG9yIGNoZWNrIG9uY2UgcmRhcjovL3By
b2JsZW0vNTAxMDk2MzEgaXMgaW4gYSBidWlsZCBhbmQgYm90cyBhcmUgdXBkYXRlZC4KICAgICAg
ICAgaWYgKFtjb25maWd1cmF0aW9uIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX2hzdHNT
dG9yYWdlKV0pCi0gICAgICAgICAgICBjb25maWd1cmF0aW9uLl9oc3RzU3RvcmFnZSA9IFtbYWxs
b2NfTlNIU1RTU3RvcmFnZUluc3RhbmNlKCkgaW5pdFBlcnNpc3RlbnRTdG9yZVdpdGhVUkw6W05T
VVJMIGZpbGVVUkxXaXRoUGF0aDpwYXJhbWV0ZXJzLmhzdHNTdG9yYWdlRGlyZWN0b3J5IGlzRGly
ZWN0b3J5OllFU11dIGF1dG9yZWxlYXNlXTsKKyAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24uX2hz
dHNTdG9yYWdlID0gYWRvcHROUyhbYWxsb2NfTlNIU1RTU3RvcmFnZUluc3RhbmNlKCkgaW5pdFBl
cnNpc3RlbnRTdG9yZVdpdGhVUkw6W05TVVJMIGZpbGVVUkxXaXRoUGF0aDpwYXJhbWV0ZXJzLmhz
dHNTdG9yYWdlRGlyZWN0b3J5IGlzRGlyZWN0b3J5OllFU11dKS5hdXRvcmVsZWFzZSgpOwogICAg
IH0KICNlbmRpZgogCkBAIC0xMjY3LDcgKzEyNjcsNyBAQCBOZXR3b3JrU2Vzc2lvbkNvY29hOjpO
ZXR3b3JrU2Vzc2lvbkNvY29hKE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcywgTmV0d29y
awogI2lmIEhBVkUoQ0ZORVRXT1JLX0FMVEVSTkFUSVZFX1NFUlZJQ0UpCiAgICAgaWYgKCFwYXJh
bWV0ZXJzLmFsdGVybmF0aXZlU2VydmljZURpcmVjdG9yeS5pc0VtcHR5KCkpIHsKICAgICAgICAg
U2FuZGJveEV4dGVuc2lvbjo6Y29uc3VtZVBlcm1hbmVudGx5KHBhcmFtZXRlcnMuYWx0ZXJuYXRp
dmVTZXJ2aWNlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKLSAgICAgICAgY29uZmlndXJhdGlv
bi5fYWx0ZXJuYXRpdmVTZXJ2aWNlc1N0b3JhZ2UgPSBbW1tfTlNIVFRQQWx0ZXJuYXRpdmVTZXJ2
aWNlc1N0b3JhZ2UgYWxsb2NdIGluaXRQZXJzaXN0ZW50U3RvcmVXaXRoVVJMOltbTlNVUkwgZmls
ZVVSTFdpdGhQYXRoOnBhcmFtZXRlcnMuYWx0ZXJuYXRpdmVTZXJ2aWNlRGlyZWN0b3J5IGlzRGly
ZWN0b3J5OllFU10gVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiQWx0ZXJuYXRpdmVTZXJ2
aWNlLnNxbGl0ZSJdXSBhdXRvcmVsZWFzZV07CisgICAgICAgIGNvbmZpZ3VyYXRpb24uX2FsdGVy
bmF0aXZlU2VydmljZXNTdG9yYWdlID0gYWRvcHROUyhbW19OU0hUVFBBbHRlcm5hdGl2ZVNlcnZp
Y2VzU3RvcmFnZSBhbGxvY10gaW5pdFBlcnNpc3RlbnRTdG9yZVdpdGhVUkw6W1tOU1VSTCBmaWxl
VVJMV2l0aFBhdGg6cGFyYW1ldGVycy5hbHRlcm5hdGl2ZVNlcnZpY2VEaXJlY3RvcnkgaXNEaXJl
Y3Rvcnk6WUVTXSBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJBbHRlcm5hdGl2ZVNlcnZp
Y2Uuc3FsaXRlIl1dKS5hdXRvcmVsZWFzZSgpOwogICAgIH0KICAgICBpZiAocGFyYW1ldGVycy5o
dHRwM0VuYWJsZWQpCiAgICAgICAgIGNvbmZpZ3VyYXRpb24uX2FsbG93c0hUVFAzID0gWUVTOwpA
QCAtMTI5OSwxMCArMTI5OSwxMCBAQCBOZXR3b3JrU2Vzc2lvbkNvY29hOjpOZXR3b3JrU2Vzc2lv
bkNvY29hKE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcywgTmV0d29yawogICAgIGF1dG8q
IHN0b3JhZ2VTZXNzaW9uID0gbmV0d29ya1Byb2Nlc3Muc3RvcmFnZVNlc3Npb24ocGFyYW1ldGVy
cy5zZXNzaW9uSUQpOwogICAgIFJFTEVBU0VfQVNTRVJUKHN0b3JhZ2VTZXNzaW9uKTsKIAotICAg
IE5TSFRUUENvb2tpZVN0b3JhZ2UqIGNvb2tpZVN0b3JhZ2U7CisgICAgUmV0YWluUHRyPE5TSFRU
UENvb2tpZVN0b3JhZ2U+IGNvb2tpZVN0b3JhZ2U7CiAgICAgaWYgKENGSFRUUENvb2tpZVN0b3Jh
Z2VSZWYgc3RvcmFnZSA9IHN0b3JhZ2VTZXNzaW9uLT5jb29raWVTdG9yYWdlKCkuZ2V0KCkpIHsK
LSAgICAgICAgY29va2llU3RvcmFnZSA9IFtbW05TSFRUUENvb2tpZVN0b3JhZ2UgYWxsb2NdIF9p
bml0V2l0aENGSFRUUENvb2tpZVN0b3JhZ2U6c3RvcmFnZV0gYXV0b3JlbGVhc2VdOwotICAgICAg
ICBjb25maWd1cmF0aW9uLkhUVFBDb29raWVTdG9yYWdlID0gY29va2llU3RvcmFnZTsKKyAgICAg
ICAgY29va2llU3RvcmFnZSA9IGFkb3B0TlMoW1tOU0hUVFBDb29raWVTdG9yYWdlIGFsbG9jXSBf
aW5pdFdpdGhDRkhUVFBDb29raWVTdG9yYWdlOnN0b3JhZ2VdKTsKKyAgICAgICAgY29uZmlndXJh
dGlvbi5IVFRQQ29va2llU3RvcmFnZSA9IGNvb2tpZVN0b3JhZ2UuZ2V0KCk7CiAgICAgfSBlbHNl
CiAgICAgICAgIGNvb2tpZVN0b3JhZ2UgPSBzdG9yYWdlU2Vzc2lvbi0+bnNDb29raWVTdG9yYWdl
KCk7CiAKQEAgLTEzMTAsNyArMTMxMCw3IEBAIE5ldHdvcmtTZXNzaW9uQ29jb2E6Ok5ldHdvcmtT
ZXNzaW9uQ29jb2EoTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBOZXR3b3JrCiAgICAg
Ly8gV2Ugc3RpbGwgbmVlZCB0byBjaGVjayB0aGUgc2VsZWN0b3Igc2luY2UgQ0ZOZXR3b3JrIHVw
ZGF0ZXMgYW5kIFdlYktpdCB1cGRhdGVzIGFyZSBzZXBhcmF0ZQogICAgIC8vIG9uIG9sZGVyIG1h
Y09TLgogICAgIGlmIChbY29va2llU3RvcmFnZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9y
KF9vdmVycmlkZVNlc3Npb25Db29raWVBY2NlcHRQb2xpY3kpXSkKLSAgICAgICAgY29va2llU3Rv
cmFnZS5fb3ZlcnJpZGVTZXNzaW9uQ29va2llQWNjZXB0UG9saWN5ID0gWUVTOworICAgICAgICBj
b29raWVTdG9yYWdlLmdldCgpLl9vdmVycmlkZVNlc3Npb25Db29raWVBY2NlcHRQb2xpY3kgPSBZ
RVM7CiAjZW5kaWYKIAogICAgIG1fc2Vzc2lvbldpdGhDcmVkZW50aWFsU3RvcmFnZS5pbml0aWFs
aXplKGNvbmZpZ3VyYXRpb24sICp0aGlzLCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGlj
eTo6VXNlLCBOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbjo6Tm8pOwpAQCAtMTYyMCwxNiArMTYy
MCwxNiBAQCBETUZXZWJzaXRlUG9saWN5TW9uaXRvciAqTmV0d29ya1Nlc3Npb25Db2NvYTo6ZGV2
aWNlTWFuYWdlbWVudFBvbGljeU1vbml0b3IoKQogc3RkOjp1bmlxdWVfcHRyPFdlYlNvY2tldFRh
c2s+IE5ldHdvcmtTZXNzaW9uQ29jb2E6OmNyZWF0ZVdlYlNvY2tldFRhc2soTmV0d29ya1NvY2tl
dENoYW5uZWwmIGNoYW5uZWwsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCkKIHsKICAgICBBU1NFUlQoIXJlcXVlc3QuaGFzSFRU
UEhlYWRlckZpZWxkKFdlYkNvcmU6OkhUVFBIZWFkZXJOYW1lOjpTZWNXZWJTb2NrZXRQcm90b2Nv
bCkpOwotICAgIGF1dG8gKm5zUmVxdWVzdCA9IHJlcXVlc3QubnNVUkxSZXF1ZXN0KFdlYkNvcmU6
OkhUVFBCb2R5VXBkYXRlUG9saWN5OjpEb05vdFVwZGF0ZUhUVFBCb2R5KTsKKyAgICBhdXRvIG5z
UmVxdWVzdCA9IHJldGFpblB0cihyZXF1ZXN0Lm5zVVJMUmVxdWVzdChXZWJDb3JlOjpIVFRQQm9k
eVVwZGF0ZVBvbGljeTo6RG9Ob3RVcGRhdGVIVFRQQm9keSkpOwogICAgIGlmICghcHJvdG9jb2wu
aXNOdWxsKCkpIHsKLSAgICAgICAgTlNNdXRhYmxlVVJMUmVxdWVzdCAqcmVxdWVzdFdpdGhQcm90
b2NvbHMgPSBbW25zUmVxdWVzdCBtdXRhYmxlQ29weV0gYXV0b3JlbGVhc2VdOworICAgICAgICBh
dXRvIHJlcXVlc3RXaXRoUHJvdG9jb2xzID0gYWRvcHROUyhbbnNSZXF1ZXN0IG11dGFibGVDb3B5
XSk7CiAgICAgICAgIFtyZXF1ZXN0V2l0aFByb3RvY29scyBhZGRWYWx1ZTogU3RyaW5nVmlldyhw
cm90b2NvbCkuY3JlYXRlTlNTdHJpbmcoKS5nZXQoKSBmb3JIVFRQSGVhZGVyRmllbGQ6QCJTZWMt
V2ViU29ja2V0LVByb3RvY29sIl07Ci0gICAgICAgIG5zUmVxdWVzdCA9IHJlcXVlc3RXaXRoUHJv
dG9jb2xzOworICAgICAgICBuc1JlcXVlc3QgPSBXVEZNb3ZlKHJlcXVlc3RXaXRoUHJvdG9jb2xz
KTsKICAgICB9CiAgICAgLy8gcmRhcjovL3Byb2JsZW0vNjgwNTcwMzE6IGV4cGxpY2l0bHkgZGlz
YWJsZSBzbmlmZmluZyBmb3IgV2ViU29ja2V0IGhhbmRzaGFrZXMuCiAgICAgW25zUmVxdWVzdCBf
c2V0UHJvcGVydHk6QE5PIGZvcktleTooTlNTdHJpbmcgKilfa0NGVVJMQ29ubmVjdGlvblByb3Bl
cnR5U2hvdWxkU25pZmZdOwogCi0gICAgUmV0YWluUHRyPE5TVVJMU2Vzc2lvbldlYlNvY2tldFRh
c2s+IHRhc2sgPSBbbV9zZXNzaW9uV2l0aENyZWRlbnRpYWxTdG9yYWdlLnNlc3Npb24gd2ViU29j
a2V0VGFza1dpdGhSZXF1ZXN0Om5zUmVxdWVzdF07CisgICAgUmV0YWluUHRyPE5TVVJMU2Vzc2lv
bldlYlNvY2tldFRhc2s+IHRhc2sgPSBbbV9zZXNzaW9uV2l0aENyZWRlbnRpYWxTdG9yYWdlLnNl
c3Npb24gd2ViU29ja2V0VGFza1dpdGhSZXF1ZXN0Om5zUmVxdWVzdC5nZXQoKV07CiAgICAgcmV0
dXJuIG1ha2VVbmlxdWU8V2ViU29ja2V0VGFzaz4oY2hhbm5lbCwgV1RGTW92ZSh0YXNrKSk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY29jb2EvV0tQYXltZW50QXV0
aG9yaXphdGlvbkRlbGVnYXRlLm1tIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9jb2NvYS9XS1Bh
eW1lbnRBdXRob3JpemF0aW9uRGVsZWdhdGUubW0KaW5kZXggMzE2YWE1NmVjMTI3NGZlY2E3MjE1
MjkyY2QzZTI1OWYzZDliMTNlYy4uY2YzNGE0OGVkMmZlZTFlYTc5ZjJlZDI3ZGJmMTI4NWFlMmNh
MjMzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9jb2NvYS9XS1BheW1lbnRB
dXRob3JpemF0aW9uRGVsZWdhdGUubW0KKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9jb2Nv
YS9XS1BheW1lbnRBdXRob3JpemF0aW9uRGVsZWdhdGUubW0KQEAgLTYxLDcgKzYxLDcgQEAgLSAo
dm9pZCljb21wbGV0ZU1lcmNoYW50VmFsaWRhdGlvbjooUEtQYXltZW50TWVyY2hhbnRTZXNzaW9u
ICopc2Vzc2lvbiBlcnJvcjooTlMKIAogLSAodm9pZCljb21wbGV0ZVBheW1lbnRNZXRob2RTZWxl
Y3Rpb246KFBLUGF5bWVudFJlcXVlc3RQYXltZW50TWV0aG9kVXBkYXRlICopcGF5bWVudE1ldGhv
ZFVwZGF0ZQogewotICAgIFBLUGF5bWVudFJlcXVlc3RQYXltZW50TWV0aG9kVXBkYXRlICp1cGRh
dGUgPSBwYXltZW50TWV0aG9kVXBkYXRlID86IFtbUEFMOjphbGxvY1BLUGF5bWVudFJlcXVlc3RQ
YXltZW50TWV0aG9kVXBkYXRlSW5zdGFuY2UoKSBpbml0V2l0aFBheW1lbnRTdW1tYXJ5SXRlbXM6
X3N1bW1hcnlJdGVtcy5nZXQoKV0gYXV0b3JlbGVhc2VdOworICAgIFBLUGF5bWVudFJlcXVlc3RQ
YXltZW50TWV0aG9kVXBkYXRlICp1cGRhdGUgPSBwYXltZW50TWV0aG9kVXBkYXRlID86IGFkb3B0
TlMoW1BBTDo6YWxsb2NQS1BheW1lbnRSZXF1ZXN0UGF5bWVudE1ldGhvZFVwZGF0ZUluc3RhbmNl
KCkgaW5pdFdpdGhQYXltZW50U3VtbWFyeUl0ZW1zOl9zdW1tYXJ5SXRlbXMuZ2V0KCldKS5hdXRv
cmVsZWFzZSgpOwogICAgIF9zdW1tYXJ5SXRlbXMgPSBhZG9wdE5TKFt1cGRhdGUucGF5bWVudFN1
bW1hcnlJdGVtcyBjb3B5XSk7CiAgICAgc3RkOjpleGNoYW5nZShfZGlkU2VsZWN0UGF5bWVudE1l
dGhvZENvbXBsZXRpb24sIG5pbCkodXBkYXRlKTsKIH0KQEAgLTczLDcgKzczLDcgQEAgLSAodm9p
ZCljb21wbGV0ZVBheW1lbnRTZXNzaW9uOihQS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzKXN0
YXR1cyBlcnJvcnM6KE5TQXIKIH0KIC0gKHZvaWQpY29tcGxldGVTaGlwcGluZ0NvbnRhY3RTZWxl
Y3Rpb246KFBLUGF5bWVudFJlcXVlc3RTaGlwcGluZ0NvbnRhY3RVcGRhdGUgKilzaGlwcGluZ0Nv
bnRhY3RVcGRhdGUKIHsKLSAgICBQS1BheW1lbnRSZXF1ZXN0U2hpcHBpbmdDb250YWN0VXBkYXRl
ICp1cGRhdGUgPSBzaGlwcGluZ0NvbnRhY3RVcGRhdGUgPzogW1tQQUw6OmFsbG9jUEtQYXltZW50
UmVxdWVzdFNoaXBwaW5nQ29udGFjdFVwZGF0ZUluc3RhbmNlKCkgaW5pdFdpdGhFcnJvcnM6QFtd
IHBheW1lbnRTdW1tYXJ5SXRlbXM6X3N1bW1hcnlJdGVtcy5nZXQoKSBzaGlwcGluZ01ldGhvZHM6
X3NoaXBwaW5nTWV0aG9kcy5nZXQoKV0gYXV0b3JlbGVhc2VdOworICAgIFBLUGF5bWVudFJlcXVl
c3RTaGlwcGluZ0NvbnRhY3RVcGRhdGUgKnVwZGF0ZSA9IHNoaXBwaW5nQ29udGFjdFVwZGF0ZSA/
OiBhZG9wdE5TKFtQQUw6OmFsbG9jUEtQYXltZW50UmVxdWVzdFNoaXBwaW5nQ29udGFjdFVwZGF0
ZUluc3RhbmNlKCkgaW5pdFdpdGhFcnJvcnM6QFtdIHBheW1lbnRTdW1tYXJ5SXRlbXM6X3N1bW1h
cnlJdGVtcy5nZXQoKSBzaGlwcGluZ01ldGhvZHM6X3NoaXBwaW5nTWV0aG9kcy5nZXQoKV0pLmF1
dG9yZWxlYXNlKCk7CiAgICAgX3N1bW1hcnlJdGVtcyA9IGFkb3B0TlMoW3VwZGF0ZS5wYXltZW50
U3VtbWFyeUl0ZW1zIGNvcHldKTsKICAgICBfc2hpcHBpbmdNZXRob2RzID0gYWRvcHROUyhbdXBk
YXRlLnNoaXBwaW5nTWV0aG9kcyBjb3B5XSk7CiAgICAgc3RkOjpleGNoYW5nZShfZGlkU2VsZWN0
U2hpcHBpbmdDb250YWN0Q29tcGxldGlvbiwgbmlsKSh1cGRhdGUpOwpAQCAtODEsNyArODEsNyBA
QCAtICh2b2lkKWNvbXBsZXRlU2hpcHBpbmdDb250YWN0U2VsZWN0aW9uOihQS1BheW1lbnRSZXF1
ZXN0U2hpcHBpbmdDb250YWN0VXBkYXRlCiAKIC0gKHZvaWQpY29tcGxldGVTaGlwcGluZ01ldGhv
ZFNlbGVjdGlvbjooUEtQYXltZW50UmVxdWVzdFNoaXBwaW5nTWV0aG9kVXBkYXRlICopc2hpcHBp
bmdNZXRob2RVcGRhdGUKIHsKLSAgICBQS1BheW1lbnRSZXF1ZXN0U2hpcHBpbmdNZXRob2RVcGRh
dGUgKnVwZGF0ZSA9IHNoaXBwaW5nTWV0aG9kVXBkYXRlID86IFtbUEFMOjphbGxvY1BLUGF5bWVu
dFJlcXVlc3RTaGlwcGluZ01ldGhvZFVwZGF0ZUluc3RhbmNlKCkgaW5pdFdpdGhQYXltZW50U3Vt
bWFyeUl0ZW1zOl9zdW1tYXJ5SXRlbXMuZ2V0KCldIGF1dG9yZWxlYXNlXTsKKyAgICBQS1BheW1l
bnRSZXF1ZXN0U2hpcHBpbmdNZXRob2RVcGRhdGUgKnVwZGF0ZSA9IHNoaXBwaW5nTWV0aG9kVXBk
YXRlID86IGFkb3B0TlMoW1BBTDo6YWxsb2NQS1BheW1lbnRSZXF1ZXN0U2hpcHBpbmdNZXRob2RV
cGRhdGVJbnN0YW5jZSgpIGluaXRXaXRoUGF5bWVudFN1bW1hcnlJdGVtczpfc3VtbWFyeUl0ZW1z
LmdldCgpXSkuYXV0b3JlbGVhc2UoKTsKICAgICBfc3VtbWFyeUl0ZW1zID0gYWRvcHROUyhbdXBk
YXRlLnBheW1lbnRTdW1tYXJ5SXRlbXMgY29weV0pOwogICAgIHN0ZDo6ZXhjaGFuZ2UoX2RpZFNl
bGVjdFNoaXBwaW5nTWV0aG9kQ29tcGxldGlvbiwgbmlsKSh1cGRhdGUpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dLUmVtb3RlT2JqZWN0Q29kZXIubW0g
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tSZW1vdGVPYmplY3RDb2Rlci5tbQpp
bmRleCA4YmQyNDQ4NWUwNjJmNzNiMWI2ODYyYzA1NTMwNzRmZWQ5MTA1MzM0Li43NDAyMzkyMDM4
NWZhNjFmYTIxMzU3NzlmZDI1NzJiMzJkMjFjYmE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9BUEkvQ29jb2EvV0tSZW1vdGVPYmplY3RDb2Rlci5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tSZW1vdGVPYmplY3RDb2Rlci5tbQpAQCAtMzEzLDggKzMx
Myw3IEBAIHN0YXRpYyB2b2lkIGVuY29kZU9iamVjdChXS1JlbW90ZU9iamVjdEVuY29kZXIgKmVu
Y29kZXIsIGlkIG9iamVjdCkKICAgICAgICAgUkVMRUFTRV9MT0dfRkFVTFQoSVBDLCAiV0tSZW1v
dGVPYmplY3RDb2RlOjplbmNvZGVPYmplY3Q6IE9iamVjdCBvZiB0eXBlICcle3ByaXZhdGV9cycg
Y29udGFpbnMgYSBjeWNsZSIsIGNsYXNzX2dldE5hbWUob2JqZWN0X2dldENsYXNzKG9iamVjdCkp
KTsKICAgICAgICAgQHRyeSB7CiAgICAgICAgICAgICAvLyBUcnkgdG8gZW5jb2RlIGEgbmV3bHkg
aW5pdGlhbGl6ZWQgb2JqZWN0IGluc3RlYWQuCi0gICAgICAgICAgICBpZCBuZXdPYmplY3QgPSBb
W1tbb2JqZWN0IGNsYXNzXSBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOwotICAgICAgICAgICAg
b2JqZWN0ID0gbmV3T2JqZWN0OworICAgICAgICAgICAgb2JqZWN0ID0gYWRvcHROUyhbW1tvYmpl
Y3QgY2xhc3NdIGFsbG9jXSBpbml0XSkuYXV0b3JlbGVhc2UoKTsKICAgICAgICAgfSBAY2F0Y2gg
KE5TRXhjZXB0aW9uICplKSB7CiAgICAgICAgICAgICBbTlNFeGNlcHRpb24gcmFpc2U6TlNJbnZh
bGlkQXJndW1lbnRFeGNlcHRpb24gZm9ybWF0OkAiT2JqZWN0IG9mIHR5cGUgJyVzJyBjb250YWlu
cyBhIGN5Y2xlIiwgY2xhc3NfZ2V0TmFtZShvYmplY3RfZ2V0Q2xhc3Mob2JqZWN0KSldOwogICAg
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvX1dLUmVt
b3RlT2JqZWN0SW50ZXJmYWNlLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL19X
S1JlbW90ZU9iamVjdEludGVyZmFjZS5tbQppbmRleCAyM2YxNjc2MzVlMmNlNTcxNjNjNDY2ZjZm
NDUwNjZkOGZmYWJkNTIxLi5lNWFkNGIzMDhmZGQ2NTEyMjEyYjVmMWZjMmMyMzE0MmQ2ZjQwYThm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvX1dLUmVtb3RlT2Jq
ZWN0SW50ZXJmYWNlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9fV0tS
ZW1vdGVPYmplY3RJbnRlcmZhY2UubW0KQEAgLTE5Myw3ICsxOTMsNyBAQCAtIChpZClpbml0V2l0
aFByb3RvY29sOihQcm90b2NvbCAqKXByb3RvY29sIGlkZW50aWZpZXI6KE5TU3RyaW5nICopaWRl
bnRpZmllcgogCiArIChpbnN0YW5jZXR5cGUpcmVtb3RlT2JqZWN0SW50ZXJmYWNlV2l0aFByb3Rv
Y29sOihQcm90b2NvbCAqKXByb3RvY29sCiB7Ci0gICAgcmV0dXJuIFtbW3NlbGYgYWxsb2NdIGlu
aXRXaXRoUHJvdG9jb2w6cHJvdG9jb2wgaWRlbnRpZmllcjpOU1N0cmluZ0Zyb21Qcm90b2NvbChw
cm90b2NvbCldIGF1dG9yZWxlYXNlXTsKKyAgICByZXR1cm4gYWRvcHROUyhbW3NlbGYgYWxsb2Nd
IGluaXRXaXRoUHJvdG9jb2w6cHJvdG9jb2wgaWRlbnRpZmllcjpOU1N0cmluZ0Zyb21Qcm90b2Nv
bChwcm90b2NvbCldKS5hdXRvcmVsZWFzZSgpOwogfQogCiAtIChOU1N0cmluZyAqKWlkZW50aWZp
ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dLT2JqZWN0LmggYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XS09iamVjdC5oCmluZGV4IDBlMWIxYzYwNDU1MmI1
OTBlMzBkOTk1YzRhZmU4MzU5NzQwZWJhNzMuLmI5MTQ0NjllZTllMDg1MDI1NTU3YTA2MDVkNzYy
ZTdkOTNmNjcxMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dLT2Jq
ZWN0LmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV0tPYmplY3QuaApAQCAtNzcs
NyArNzcsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBPYmplY3RDbGFzcz4gaW5saW5lIHR5cGVuYW1l
IFdyYXBwZXJUcmFpdHM8T2JqZWN0Q2xhc3M+OjpXcmFwcAogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBP
YmplY3RDbGFzcz4gaW5saW5lIHR5cGVuYW1lIFdyYXBwZXJUcmFpdHM8T2JqZWN0Q2xhc3M+OjpX
cmFwcGVyQ2xhc3MgKndyYXBwZXIoUmVmPE9iamVjdENsYXNzPiYmIG9iamVjdCkKIHsKLSAgICBy
ZXR1cm4gW3dyYXBwZXIob2JqZWN0LmxlYWtSZWYoKSkgYXV0b3JlbGVhc2VdOworICAgIHJldHVy
biBhZG9wdE5TKHdyYXBwZXIob2JqZWN0LmxlYWtSZWYoKSkpLmF1dG9yZWxlYXNlKCk7CiB9CiAK
IHRlbXBsYXRlPHR5cGVuYW1lIE9iamVjdENsYXNzPiBpbmxpbmUgdHlwZW5hbWUgV3JhcHBlclRy
YWl0czxPYmplY3RDbGFzcz46OldyYXBwZXJDbGFzcyAqd3JhcHBlcihSZWZQdHI8T2JqZWN0Q2xh
c3M+JiYgb2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL05TQXR0cmlidXRlZFN0cmluZy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9OU0F0dHJpYnV0ZWRTdHJpbmcubW0KaW5kZXggY2M5NDE0MGZlOWI2NjZhZTczN2Y1YjQz
ZjY4YjEzM2IwNTk3OWI5Ny4uODZkNjViZDFjOTVhYWNjNTE1MTZkYWQyZTY5OWM2Yzc1ZWNjNzc2
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL05TQXR0cmli
dXRlZFN0cmluZy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvTlNB
dHRyaWJ1dGVkU3RyaW5nLm1tCkBAIC0xMzMsNyArMTMzLDcgQEAgKyAoV0tXZWJWaWV3Q29uZmln
dXJhdGlvbiAqKWNvbmZpZ3VyYXRpb24KIHsKICAgICBpZiAoIWNvbmZpZ3VyYXRpb24pIHsKICAg
ICAgICAgY29uZmlndXJhdGlvbiA9IFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5p
dF07Ci0gICAgICAgIGNvbmZpZ3VyYXRpb24ucHJvY2Vzc1Bvb2wgPSBbW1tXS1Byb2Nlc3NQb29s
IGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07CisgICAgICAgIGNvbmZpZ3VyYXRpb24ucHJvY2Vz
c1Bvb2wgPSBhZG9wdE5TKFtbV0tQcm9jZXNzUG9vbCBhbGxvY10gaW5pdF0pLmF1dG9yZWxlYXNl
KCk7CiAgICAgICAgIGNvbmZpZ3VyYXRpb24ud2Vic2l0ZURhdGFTdG9yZSA9IFtXS1dlYnNpdGVE
YXRhU3RvcmUgbm9uUGVyc2lzdGVudERhdGFTdG9yZV07CiAgICAgICAgIGNvbmZpZ3VyYXRpb24u
bWVkaWFUeXBlc1JlcXVpcmluZ1VzZXJBY3Rpb25Gb3JQbGF5YmFjayA9IFdLQXVkaW92aXN1YWxN
ZWRpYVR5cGVBbGw7CiAgICAgICAgIGNvbmZpZ3VyYXRpb24uX2FsbG93c0phdmFTY3JpcHRNYXJr
dXAgPSBOTzsKQEAgLTI3MCwxMSArMjcwLDExIEBAICsgKHZvaWQpX2xvYWRGcm9tSFRNTFdpdGhP
cHRpb25zOihOU0RpY3Rpb25hcnk8TlNBdHRyaWJ1dGVkU3RyaW5nRG9jdW1lbnRSZWFkaW5nCiAK
ICAgICAgICAgICAgIC8vIE1ha2UgdGhlIHN0cmluZyBiZSBhbiBpbnN0YW5jZSBvZiB0aGUgcmVj
ZWl2ZXIgY2xhc3MuCiAgICAgICAgICAgICBpZiAoYXR0cmlidXRlZFN0cmluZyAmJiBzZWxmICE9
IGF0dHJpYnV0ZWRTdHJpbmcuY2xhc3MpCi0gICAgICAgICAgICAgICAgYXR0cmlidXRlZFN0cmlu
ZyA9IFtbW3NlbGYgYWxsb2NdIGluaXRXaXRoQXR0cmlidXRlZFN0cmluZzphdHRyaWJ1dGVkU3Ry
aW5nXSBhdXRvcmVsZWFzZV07CisgICAgICAgICAgICAgICAgYXR0cmlidXRlZFN0cmluZyA9IGFk
b3B0TlMoW1tzZWxmIGFsbG9jXSBpbml0V2l0aEF0dHJpYnV0ZWRTdHJpbmc6YXR0cmlidXRlZFN0
cmluZ10pLmF1dG9yZWxlYXNlKCk7CiAKICAgICAgICAgICAgIC8vIE1ha2UgdGhlIGRvY3VtZW50
IGF0dHJpYnV0ZXMgaW1tdXRhYmxlLgogICAgICAgICAgICAgaWYgKFthdHRyaWJ1dGVzIGlzS2lu
ZE9mQ2xhc3M6TlNNdXRhYmxlRGljdGlvbmFyeS5jbGFzc10pCi0gICAgICAgICAgICAgICAgYXR0
cmlidXRlcyA9IFtbW05TRGljdGlvbmFyeSBhbGxvY10gaW5pdFdpdGhEaWN0aW9uYXJ5OmF0dHJp
YnV0ZXNdIGF1dG9yZWxlYXNlXTsKKyAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzID0gYWRvcHRO
UyhbW05TRGljdGlvbmFyeSBhbGxvY10gaW5pdFdpdGhEaWN0aW9uYXJ5OmF0dHJpYnV0ZXNdKS5h
dXRvcmVsZWFzZSgpOwogCiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihhdHRyaWJ1dGVk
U3RyaW5nLCBhdHRyaWJ1dGVzLCBlcnJvcik7CiAgICAgICAgIH07CkBAIC0zMTAsNyArMzEwLDcg
QEAgKyAodm9pZClfbG9hZEZyb21IVE1MV2l0aE9wdGlvbnM6KE5TRGljdGlvbmFyeTxOU0F0dHJp
YnV0ZWRTdHJpbmdEb2N1bWVudFJlYWRpbmcKICAgICAgICAgICAgIFt3ZWJWaWV3IF9nZXRDb250
ZW50c0FzQXR0cmlidXRlZFN0cmluZ1dpdGhDb21wbGV0aW9uSGFuZGxlcjpeKE5TQXR0cmlidXRl
ZFN0cmluZyAqYXR0cmlidXRlZFN0cmluZywgTlNEaWN0aW9uYXJ5PE5TQXR0cmlidXRlZFN0cmlu
Z0RvY3VtZW50QXR0cmlidXRlS2V5LCBpZD4gKmRvY3VtZW50QXR0cmlidXRlcywgTlNFcnJvciAq
ZXJyb3IpIHsKICAgICAgICAgICAgICAgICBpZiAoZXJyb3IpCiAgICAgICAgICAgICAgICAgICAg
IHJldHVybiBjYW5jZWwoV0tFcnJvclVua25vd24sIGVycm9yKTsKLSAgICAgICAgICAgICAgICBm
aW5pc2goW1thdHRyaWJ1dGVkU3RyaW5nIHJldGFpbl0gYXV0b3JlbGVhc2VdLCBbW2RvY3VtZW50
QXR0cmlidXRlcyByZXRhaW5dIGF1dG9yZWxlYXNlXSwgbmlsKTsKKyAgICAgICAgICAgICAgICBm
aW5pc2gocmV0YWluUHRyKGF0dHJpYnV0ZWRTdHJpbmcpLmF1dG9yZWxlYXNlKCksIHJldGFpblB0
cihkb2N1bWVudEF0dHJpYnV0ZXMpLmF1dG9yZWxlYXNlKCksIG5pbCk7CiAgICAgICAgICAgICB9
XTsKICAgICAgICAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIubW0KaW5kZXggOTM2
NDViZTliZjc0YzA0NjdkNDEzNWU4Y2MyMDVlNjUwYjlhMzAyMS4uZWFkN2E3ZGQ2Y2ZkYmRlMjEz
ZGMxOTMyNjcyYTMwNzZjZGQxYzIyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlci5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyLm1t
CkBAIC00NTksNyArNDU5LDcgQEAgc3RhdGljIFdLUG9saWN5RGVjaXNpb25IYW5kbGVyIG1ha2VQ
b2xpY3lEZWNpc2lvbkJsb2NrKFdLRnJhbWVQb2xpY3lMaXN0ZW5lclJlZgogewogICAgIFdLUmV0
YWluKGxpc3RlbmVyKTsgLy8gUmVsZWFzZWQgaW4gdGhlIGRlY2lzaW9uIGhhbmRsZXIgYmVsb3cu
CiAKLSAgICByZXR1cm4gW1teKFdLUG9saWN5RGVjaXNpb24gZGVjaXNpb24pIHsKKyAgICByZXR1
cm4gYWRvcHROUyhbXihXS1BvbGljeURlY2lzaW9uIGRlY2lzaW9uKSB7CiAgICAgICAgIHN3aXRj
aCAoZGVjaXNpb24pIHsKICAgICAgICAgY2FzZSBXS1BvbGljeURlY2lzaW9uQ2FuY2VsOgogICAg
ICAgICAgICAgV0tGcmFtZVBvbGljeUxpc3RlbmVySWdub3JlKGxpc3RlbmVyKTsgICAgICAgICAg
ICAgICAgICAgIApAQCAtNDc1LDcgKzQ3NSw3IEBAIHN0YXRpYyBXS1BvbGljeURlY2lzaW9uSGFu
ZGxlciBtYWtlUG9saWN5RGVjaXNpb25CbG9jayhXS0ZyYW1lUG9saWN5TGlzdGVuZXJSZWYKICAg
ICAgICAgfTsKIAogICAgICAgICBXS1JlbGVhc2UobGlzdGVuZXIpOyAvLyBSZXRhaW5lZCBpbiB0
aGUgY29udGV4dCBhYm92ZS4KLSAgICB9IGNvcHldIGF1dG9yZWxlYXNlXTsKKyAgICB9IGNvcHld
KS5hdXRvcmVsZWFzZSgpOwogfQogCiBzdGF0aWMgdm9pZCBzZXRVcFBhZ2VQb2xpY3lDbGllbnQo
V0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyICpicm93c2luZ0NvbnRleHQsIFdlYktpdDo6V2Vi
UGFnZVByb3h5JiBwYWdlKQpAQCAtNTA0LDcgKzUwNCw3IEBAIHN0YXRpYyB2b2lkIHNldFVwUGFn
ZVBvbGljeUNsaWVudChXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgKmJyb3dzaW5nQ29udGV4
dCwKICAgICAgICAgICAgIH07CiAKICAgICAgICAgICAgIGlmIChvcmlnaW5hdGluZ0ZyYW1lKSB7
Ci0gICAgICAgICAgICAgICAgYWN0aW9uRGljdGlvbmFyeSA9IFtbYWN0aW9uRGljdGlvbmFyeSBt
dXRhYmxlQ29weV0gYXV0b3JlbGVhc2VdOworICAgICAgICAgICAgICAgIGFjdGlvbkRpY3Rpb25h
cnkgPSBhZG9wdE5TKFthY3Rpb25EaWN0aW9uYXJ5IG11dGFibGVDb3B5XSkuYXV0b3JlbGVhc2Uo
KTsKICAgICAgICAgICAgICAgICBbKE5TTXV0YWJsZURpY3Rpb25hcnkgKilhY3Rpb25EaWN0aW9u
YXJ5IHNldE9iamVjdDpbTlNVUkwgX3dlYl9VUkxXaXRoV1RGU3RyaW5nOldlYktpdDo6dG9JbXBs
KG9yaWdpbmF0aW5nRnJhbWUpLT51cmwoKS5zdHJpbmcoKV0gZm9yS2V5OldLQWN0aW9uT3JpZ2lu
YXRpbmdGcmFtZVVSTEtleV07CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAKQEAgLTczNCw3
ICs3MzQsNyBAQCAtIChOU1VJbnRlZ2VyKXBhZ2VDb3VudAogCiAtIChXS0Jyb3dzaW5nQ29udGV4
dEhhbmRsZSAqKWhhbmRsZQogewotICAgIHJldHVybiBbW1tXS0Jyb3dzaW5nQ29udGV4dEhhbmRs
ZSBhbGxvY10gX2luaXRXaXRoUGFnZVByb3h5OipfcGFnZV0gYXV0b3JlbGVhc2VdOworICAgIHJl
dHVybiBhZG9wdE5TKFtbV0tCcm93c2luZ0NvbnRleHRIYW5kbGUgYWxsb2NdIF9pbml0V2l0aFBh
Z2VQcm94eToqX3BhZ2VdKS5hdXRvcmVsZWFzZSgpOwogfQogCiAtIChfV0tSZW1vdGVPYmplY3RS
ZWdpc3RyeSAqKV9yZW1vdGVPYmplY3RSZWdpc3RyeQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLQ29udGVudFdvcmxkLm1tIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLQ29udGVudFdvcmxkLm1tCmluZGV4IDM4MTZhMWU2ZjU4YzU2
NDQ2NmEwZDkwOGFkYjM1NGQ4NDdlZDQ5NjUuLjBiNDVkZTU1ODgwMDg3YWFkYTVjZTdlZDU4Njdh
NDBiMmU4Yzc2NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS0NvbnRlbnRXb3JsZC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tDb250ZW50V29ybGQubW0KQEAgLTc0LDcgKzc0LDcgQEAgQGltcGxlbWVudGF0aW9uIFdL
Q29udGVudFdvcmxkIChXS1ByaXZhdGUpCiBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19C
RUdJTgogLSAoX1dLVXNlckNvbnRlbnRXb3JsZCAqKV91c2VyQ29udGVudFdvcmxkCiB7Ci0gICAg
cmV0dXJuIFtbW19XS1VzZXJDb250ZW50V29ybGQgYWxsb2NdIF9pbml0V2l0aENvbnRlbnRXb3Js
ZDpzZWxmXSBhdXRvcmVsZWFzZV07CisgICAgcmV0dXJuIGFkb3B0TlMoW1tfV0tVc2VyQ29udGVu
dFdvcmxkIGFsbG9jXSBfaW5pdFdpdGhDb250ZW50V29ybGQ6c2VsZl0pLmF1dG9yZWxlYXNlKCk7
CiB9CiBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLRnJhbWVJbmZvLm1tIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLRnJhbWVJbmZvLm1tCmluZGV4IDFjNjMyYjI0M2E3
ZGVjYzkxNzNjMDZlOWZmMDc2ZDAzYTlmM2QyYmYuLmUzN2UzZjJhOTAxYjYyMzJkNzg2ODExZDcy
MjgwNGFhYjNhOWE2ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS0ZyYW1lSW5mby5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tGcmFtZUluZm8ubW0KQEAgLTU4LDEzICs1OCwxMyBAQCAtIChXS1NlY3VyaXR5T3JpZ2lu
ICopc2VjdXJpdHlPcmlnaW4KIHsKICAgICBhdXRvJiBkYXRhID0gX2ZyYW1lSW5mby0+c2VjdXJp
dHlPcmlnaW4oKTsKICAgICBhdXRvIGFwaU9yaWdpbiA9IEFQSTo6U2VjdXJpdHlPcmlnaW46OmNy
ZWF0ZShkYXRhLnByb3RvY29sLCBkYXRhLmhvc3QsIGRhdGEucG9ydCk7Ci0gICAgcmV0dXJuIFtb
d3JhcHBlcihhcGlPcmlnaW4uZ2V0KCkpIHJldGFpbl0gYXV0b3JlbGVhc2VdOworICAgIHJldHVy
biByZXRhaW5QdHIod3JhcHBlcihhcGlPcmlnaW4uZ2V0KCkpKS5hdXRvcmVsZWFzZSgpOwogfQog
CiAtIChXS1dlYlZpZXcgKil3ZWJWaWV3CiB7CiAgICAgaWYgKFdlYktpdDo6V2ViUGFnZVByb3h5
KiBwYWdlID0gX2ZyYW1lSW5mby0+cGFnZSgpKQotICAgICAgICByZXR1cm4gW1tmcm9tV2ViUGFn
ZVByb3h5KCpwYWdlKSByZXRhaW5dIGF1dG9yZWxlYXNlXTsKKyAgICAgICAgcmV0dXJuIHJldGFp
blB0cihmcm9tV2ViUGFnZVByb3h5KCpwYWdlKSkuYXV0b3JlbGVhc2UoKTsKICAgICByZXR1cm4g
bmlsOwogfQogCkBAIC04NiwxMiArODYsMTIgQEAgQGltcGxlbWVudGF0aW9uIFdLRnJhbWVJbmZv
IChXS1ByaXZhdGUpCiAKIC0gKF9XS0ZyYW1lSGFuZGxlICopX2hhbmRsZQogewotICAgIHJldHVy
biBbW3dyYXBwZXIoX2ZyYW1lSW5mby0+aGFuZGxlKCkpIHJldGFpbl0gYXV0b3JlbGVhc2VdOwor
ICAgIHJldHVybiByZXRhaW5QdHIod3JhcHBlcihfZnJhbWVJbmZvLT5oYW5kbGUoKSkpLmF1dG9y
ZWxlYXNlKCk7CiB9CiAKIC0gKF9XS0ZyYW1lSGFuZGxlICopX3BhcmVudEZyYW1lSGFuZGxlCiB7
Ci0gICAgcmV0dXJuIFtbd3JhcHBlcihfZnJhbWVJbmZvLT5wYXJlbnRGcmFtZUhhbmRsZSgpKSBy
ZXRhaW5dIGF1dG9yZWxlYXNlXTsKKyAgICByZXR1cm4gcmV0YWluUHRyKHdyYXBwZXIoX2ZyYW1l
SW5mby0+cGFyZW50RnJhbWVIYW5kbGUoKSkpLmF1dG9yZWxlYXNlKCk7CiB9CiAKIEBlbmQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJTY3JpcHQu
bW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2VyU2NyaXB0Lm1tCmlu
ZGV4IGI3NjI4OGEzMTE2NGFjMjBmYmE4YjA3ODIxMjBiY2Q2MGFjZDVjNzYuLjg5MzgwMGQ1NDc3
MzA3ZGU4ZDBlZGJmYTU0YTdmNDVhOGVhYjI3OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJTY3JpcHQubW0KKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlclNjcmlwdC5tbQpAQCAtODgsNyArODgsNyBAQCBAaW1w
bGVtZW50YXRpb24gV0tVc2VyU2NyaXB0IChXS1ByaXZhdGUpCiBBTExPV19ERVBSRUNBVEVEX0RF
Q0xBUkFUSU9OU19CRUdJTgogLSAoX1dLVXNlckNvbnRlbnRXb3JsZCAqKV91c2VyQ29udGVudFdv
cmxkCiB7Ci0gICAgcmV0dXJuIFtbW19XS1VzZXJDb250ZW50V29ybGQgYWxsb2NdIF9pbml0V2l0
aENvbnRlbnRXb3JsZDp3cmFwcGVyKF91c2VyU2NyaXB0LT5jb250ZW50V29ybGQoKSldIGF1dG9y
ZWxlYXNlXTsKKyAgICByZXR1cm4gYWRvcHROUyhbW19XS1VzZXJDb250ZW50V29ybGQgYWxsb2Nd
IF9pbml0V2l0aENvbnRlbnRXb3JsZDp3cmFwcGVyKF91c2VyU2NyaXB0LT5jb250ZW50V29ybGQo
KSldKS5hdXRvcmVsZWFzZSgpOwogfQogQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5E
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZp
ZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCmlu
ZGV4IDQ5NDYxNmU5MjYwNGZkYzY5M2Q0NWExYjlmZmJlYjlhMWFkZmJlMzQuLjMwNjY3OWI1MWQz
NzEyYjg3ZTI3YWYwNWUzMGM1NDlmMGQ1MDI3YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpAQCAtNjU1LDcgKzY1NSw3IEBAIC0gKGlkKXZh
bHVlRm9yVW5kZWZpbmVkS2V5OihOU1N0cmluZyAqKWtleQogCiAtIChXS1dlYlZpZXdDb25maWd1
cmF0aW9uICopY29uZmlndXJhdGlvbgogewotICAgIHJldHVybiBbW19jb25maWd1cmF0aW9uIGNv
cHldIGF1dG9yZWxlYXNlXTsKKyAgICByZXR1cm4gYWRvcHROUyhbX2NvbmZpZ3VyYXRpb24gY29w
eV0pLmF1dG9yZWxlYXNlKCk7CiB9CiAKIC0gKFdLQmFja0ZvcndhcmRMaXN0ICopYmFja0Zvcndh
cmRMaXN0CkBAIC0xMjE2LDEyICsxMjE2LDEyIEBAIGlubGluZSBPcHRpb25TZXQ8V2ViS2l0OjpG
aW5kT3B0aW9ucz4gdG9GaW5kT3B0aW9ucyhXS0ZpbmRDb25maWd1cmF0aW9uICpjb25maWd1CiAt
ICh2b2lkKWZpbmRTdHJpbmc6KE5TU3RyaW5nICopc3RyaW5nIHdpdGhDb25maWd1cmF0aW9uOihX
S0ZpbmRDb25maWd1cmF0aW9uICopY29uZmlndXJhdGlvbiBjb21wbGV0aW9uSGFuZGxlcjoodm9p
ZCAoXikoV0tGaW5kUmVzdWx0ICpyZXN1bHQpKWNvbXBsZXRpb25IYW5kbGVyCiB7CiAgICAgaWYg
KCFzdHJpbmcubGVuZ3RoKSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFtbW1dLRmluZFJl
c3VsdCBhbGxvY10gX2luaXRXaXRoTWF0Y2hGb3VuZDpOT10gYXV0b3JlbGVhc2VdKTsKKyAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoYWRvcHROUyhbW1dLRmluZFJlc3VsdCBhbGxvY10gX2luaXRX
aXRoTWF0Y2hGb3VuZDpOT10pLmF1dG9yZWxlYXNlKCkpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCiAgICAgX3BhZ2UtPmZpbmRTdHJpbmcoc3RyaW5nLCB0b0ZpbmRPcHRpb25zKGNvbmZpZ3Vy
YXRpb24pLCAxLCBbaGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildKGJv
b2wgZm91bmQpIHsKLSAgICAgICAgaGFuZGxlcihbW1tXS0ZpbmRSZXN1bHQgYWxsb2NdIF9pbml0
V2l0aE1hdGNoRm91bmQ6Zm91bmRdIGF1dG9yZWxlYXNlXSk7CisgICAgICAgIGhhbmRsZXIoYWRv
cHROUyhbW1dLRmluZFJlc3VsdCBhbGxvY10gX2luaXRXaXRoTWF0Y2hGb3VuZDpmb3VuZF0pLmF1
dG9yZWxlYXNlKCkpOwogICAgIH0pOwogfQogCkBAIC0xNzA5LDggKzE3MDksOCBAQCAtIChCT09M
KV9uZWdvdGlhdGVkTGVnYWN5VExTCiAtICh2b2lkKV9mcmFtZXM6KHZvaWQgKF4pKF9XS0ZyYW1l
VHJlZU5vZGUgKikpY29tcGxldGlvbkhhbmRsZXIKIHsKICAgICBfcGFnZS0+Z2V0QWxsRnJhbWVz
KFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlciksIHBh
Z2UgPSBtYWtlUmVmKCpfcGFnZS5nZXQoKSldIChXZWJLaXQ6OkZyYW1lVHJlZU5vZGVEYXRhJiYg
ZGF0YSkgewotICAgICAgICBfV0tGcmFtZVRyZWVOb2RlICpub2RlID0gW1t3cmFwcGVyKEFQSTo6
RnJhbWVUcmVlTm9kZTo6Y3JlYXRlKFdURk1vdmUoZGF0YSksIHBhZ2UuZ2V0KCkpKSByZXRhaW5d
IGF1dG9yZWxlYXNlXTsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobm9kZSk7CisgICAgICAg
IGF1dG8gbm9kZSA9IHJldGFpblB0cih3cmFwcGVyKEFQSTo6RnJhbWVUcmVlTm9kZTo6Y3JlYXRl
KFdURk1vdmUoZGF0YSksIHBhZ2UuZ2V0KCkpKSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KG5vZGUuYXV0b3JlbGVhc2UoKSk7CiAgICAgfSk7CiB9CiAKQEAgLTE5NTQsNyArMTk1NCw3IEBA
IC0gKF9XS1JlbW90ZU9iamVjdFJlZ2lzdHJ5ICopX3JlbW90ZU9iamVjdFJlZ2lzdHJ5CiAKIC0g
KFdLQnJvd3NpbmdDb250ZXh0SGFuZGxlICopX2hhbmRsZQogewotICAgIHJldHVybiBbW1tXS0Jy
b3dzaW5nQ29udGV4dEhhbmRsZSBhbGxvY10gX2luaXRXaXRoUGFnZVByb3h5OipfcGFnZV0gYXV0
b3JlbGVhc2VdOworICAgIHJldHVybiBhZG9wdE5TKFtbV0tCcm93c2luZ0NvbnRleHRIYW5kbGUg
YWxsb2NdIF9pbml0V2l0aFBhZ2VQcm94eToqX3BhZ2VdKS5hdXRvcmVsZWFzZSgpOwogfQogCiAt
IChfV0tSZW5kZXJpbmdQcm9ncmVzc0V2ZW50cylfb2JzZXJ2ZWRSZW5kZXJpbmdQcm9ncmVzc0V2
ZW50cwpAQCAtMjIzMCwxMyArMjIzMCwxMyBAQCAtICh2b2lkKV9raWxsV2ViQ29udGVudFByb2Nl
c3NBbmRSZXNldFN0YXRlCiAKIC0gKHZvaWQpX3Rha2VQREZTbmFwc2hvdFdpdGhDb25maWd1cmF0
aW9uOihXS1NuYXBzaG90Q29uZmlndXJhdGlvbiAqKXNuYXBzaG90Q29uZmlndXJhdGlvbiBjb21w
bGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNEYXRhICosIE5TRXJyb3IgKikpY29tcGxldGlvbkhh
bmRsZXIKIHsKLSAgICBXS1BERkNvbmZpZ3VyYXRpb24gKnBkZkNvbmZpZ3VyYXRpb24gPSBuaWw7
CisgICAgUmV0YWluUHRyPFdLUERGQ29uZmlndXJhdGlvbj4gcGRmQ29uZmlndXJhdGlvbjsKICAg
ICBpZiAoc25hcHNob3RDb25maWd1cmF0aW9uKSB7Ci0gICAgICAgIHBkZkNvbmZpZ3VyYXRpb24g
PSBbW1tXS1BERkNvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdIGF1dG9yZWxlYXNlXTsKLSAgICAg
ICAgcGRmQ29uZmlndXJhdGlvbi5yZWN0ID0gc25hcHNob3RDb25maWd1cmF0aW9uLnJlY3Q7Cisg
ICAgICAgIHBkZkNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tQREZDb25maWd1cmF0aW9uIGFs
bG9jXSBpbml0XSk7CisgICAgICAgIFtwZGZDb25maWd1cmF0aW9uIHNldFJlY3Q6c25hcHNob3RD
b25maWd1cmF0aW9uLnJlY3RdOwogICAgIH0KIAotICAgIFtzZWxmIGNyZWF0ZVBERldpdGhDb25m
aWd1cmF0aW9uOnBkZkNvbmZpZ3VyYXRpb24gY29tcGxldGlvbkhhbmRsZXI6Y29tcGxldGlvbkhh
bmRsZXJdOworICAgIFtzZWxmIGNyZWF0ZVBERldpdGhDb25maWd1cmF0aW9uOnBkZkNvbmZpZ3Vy
YXRpb24uYXV0b3JlbGVhc2UoKSBjb21wbGV0aW9uSGFuZGxlcjpjb21wbGV0aW9uSGFuZGxlcl07
CiB9CiAKIC0gKE5TRGF0YSAqKV9zZXNzaW9uU3RhdGVEYXRhCkBAIC0yMjQ3LDcgKzIyNDcsNyBA
QCAtIChOU0RhdGEgKilfc2Vzc2lvblN0YXRlRGF0YQogCiAtIChfV0tTZXNzaW9uU3RhdGUgKilf
c2Vzc2lvblN0YXRlCiB7Ci0gICAgcmV0dXJuIFtbW19XS1Nlc3Npb25TdGF0ZSBhbGxvY10gX2lu
aXRXaXRoU2Vzc2lvblN0YXRlOl9wYWdlLT5zZXNzaW9uU3RhdGUoKV0gYXV0b3JlbGVhc2VdOwor
ICAgIHJldHVybiBhZG9wdE5TKFtbX1dLU2Vzc2lvblN0YXRlIGFsbG9jXSBfaW5pdFdpdGhTZXNz
aW9uU3RhdGU6X3BhZ2UtPnNlc3Npb25TdGF0ZSgpXSkuYXV0b3JlbGVhc2UoKTsKIH0KIAogLSAo
X1dLU2Vzc2lvblN0YXRlICopX3Nlc3Npb25TdGF0ZVdpdGhGaWx0ZXI6KEJPT0wgKF4pKFdLQmFj
a0ZvcndhcmRMaXN0SXRlbSAqaXRlbSkpZmlsdGVyCkBAIC0yMjU5LDcgKzIyNTksNyBAQCAtIChf
V0tTZXNzaW9uU3RhdGUgKilfc2Vzc2lvblN0YXRlV2l0aEZpbHRlcjooQk9PTCAoXikoV0tCYWNr
Rm9yd2FyZExpc3RJdGVtICppdAogICAgICAgICByZXR1cm4gKGJvb2wpZmlsdGVyKHdyYXBwZXIo
aXRlbSkpOwogICAgIH0pOwogCi0gICAgcmV0dXJuIFtbW19XS1Nlc3Npb25TdGF0ZSBhbGxvY10g
X2luaXRXaXRoU2Vzc2lvblN0YXRlOnNlc3Npb25TdGF0ZV0gYXV0b3JlbGVhc2VdOworICAgIHJl
dHVybiBhZG9wdE5TKFtbX1dLU2Vzc2lvblN0YXRlIGFsbG9jXSBfaW5pdFdpdGhTZXNzaW9uU3Rh
dGU6c2Vzc2lvblN0YXRlXSkuYXV0b3JlbGVhc2UoKTsKIH0KIAogLSAodm9pZClfcmVzdG9yZUZy
b21TZXNzaW9uU3RhdGVEYXRhOihOU0RhdGEgKilzZXNzaW9uU3RhdGVEYXRhCkBAIC0yNTc3LDcg
KzI1NzcsNyBAQCAtICh2b2lkKV9nZXRDb250ZW50c0FzQXR0cmlidXRlZFN0cmluZ1dpdGhDb21w
bGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNBdHRyaWJ1dAogewogICAgIF9wYWdlLT5nZXRDb250
ZW50c0FzQXR0cmlidXRlZFN0cmluZyhbaGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9u
SGFuZGxlcildKGF1dG8mIGF0dHJpYnV0ZWRTdHJpbmcpIHsKICAgICAgICAgaWYgKGF0dHJpYnV0
ZWRTdHJpbmcuc3RyaW5nKQotICAgICAgICAgICAgaGFuZGxlcihbW2F0dHJpYnV0ZWRTdHJpbmcu
c3RyaW5nLmdldCgpIHJldGFpbl0gYXV0b3JlbGVhc2VdLCBbW2F0dHJpYnV0ZWRTdHJpbmcuZG9j
dW1lbnRBdHRyaWJ1dGVzLmdldCgpIHJldGFpbl0gYXV0b3JlbGVhc2VdLCBuaWwpOworICAgICAg
ICAgICAgaGFuZGxlcihyZXRhaW5QdHIoYXR0cmlidXRlZFN0cmluZy5zdHJpbmcuZ2V0KCkpLmF1
dG9yZWxlYXNlKCksIHJldGFpblB0cihhdHRyaWJ1dGVkU3RyaW5nLmRvY3VtZW50QXR0cmlidXRl
cy5nZXQoKSkuYXV0b3JlbGVhc2UoKSwgbmlsKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAg
aGFuZGxlcihuaWwsIG5pbCwgY3JlYXRlTlNFcnJvcihXS0Vycm9yVW5rbm93bikuZ2V0KCkpOwog
ICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2VicGFnZVByZWZlcmVuY2VzLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2VicGFnZVByZWZlcmVuY2VzLm1tCmluZGV4IDNkYzdmYTZlNGUxMDIzZjJlMmZhNjU1NWIz
OWJmZWU5YjM5YWVlMGEuLmNiNTY0ZGNkYjI2MGRlMmY4NmY3NGIyODRiZGUxMzE3Zjc5ZWU4Y2Eg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnBhZ2VQ
cmVmZXJlbmNlcy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJwYWdlUHJlZmVyZW5jZXMubW0KQEAgLTEwNCw3ICsxMDQsNyBAQCBAaW1wbGVtZW50YXRpb24g
V0tXZWJwYWdlUHJlZmVyZW5jZXMKIAogKyAoaW5zdGFuY2V0eXBlKWRlZmF1bHRQcmVmZXJlbmNl
cwogewotICAgIHJldHVybiBbW1tzZWxmIGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07CisgICAg
cmV0dXJuIGFkb3B0TlMoW1tzZWxmIGFsbG9jXSBpbml0XSkuYXV0b3JlbGVhc2UoKTsKIH0KIAog
LSAodm9pZClkZWFsbG9jCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJzaXRlRGF0YVJlY29yZC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVjb3JkLm1tCmluZGV4IDYzZWU3NjFjZGVjMDRhMmQ0YTQ1
ZGExYmI0MzI4OWUyZGEwNzUwZjYuLmYzOTVhNzE4YTE1OGE1NDQzY2NhNTJjMGQyODZhODliNWVk
ZDIzMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YnNpdGVEYXRhUmVjb3JkLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYnNpdGVEYXRhUmVjb3JkLm1tCkBAIC0xNTAsNyArMTUwLDcgQEAgLSAoX1dLV2Vic2l0
ZURhdGFTaXplICopX2RhdGFTaXplCiAgICAgaWYgKCFzaXplKQogICAgICAgICByZXR1cm4gbmls
OwogCi0gICAgcmV0dXJuIFtbW19XS1dlYnNpdGVEYXRhU2l6ZSBhbGxvY10gaW5pdFdpdGhTaXpl
OipzaXplXSBhdXRvcmVsZWFzZV07CisgICAgcmV0dXJuIGFkb3B0TlMoW1tfV0tXZWJzaXRlRGF0
YVNpemUgYWxsb2NdIGluaXRXaXRoU2l6ZToqc2l6ZV0pLmF1dG9yZWxlYXNlKCk7CiB9CiAKIC0g
KE5TQXJyYXk8TlNTdHJpbmcgKj4gKilfb3JpZ2luc1N0cmluZ3MKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBY3RpdmF0ZWRFbGVtZW50SW5mby5tbSBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBY3RpdmF0ZWRFbGVtZW50SW5m
by5tbQppbmRleCBmNTYyNDU4MzhmZDc5MTIxMzQ5MzMyYTNjNzUwZDI0ZmQ5NjVmODY0Li42ZmU1
OTNjNGI0NjRjZTliNjA2NTA3ZTYyN2M5N2UwMDI1MzkxYjM1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQWN0aXZhdGVkRWxlbWVudEluZm8ubW0KKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0FjdGl2YXRlZEVsZW1lbnRJ
bmZvLm1tCkBAIC01Myw3ICs1Myw3IEBAIEBpbXBsZW1lbnRhdGlvbiBfV0tBY3RpdmF0ZWRFbGVt
ZW50SW5mbyAgewogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiArIChpbnN0YW5jZXR5cGUpYWN0
aXZhdGVkRWxlbWVudEluZm9XaXRoSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb246KGNv
bnN0IFdlYktpdDo6SW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24mKWluZm9ybWF0aW9u
IHVzZXJJbmZvOihOU0RpY3Rpb25hcnkgKil1c2VySW5mbwogewotICAgIHJldHVybiBbW1tzZWxm
IGFsbG9jXSBfaW5pdFdpdGhJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbjppbmZvcm1h
dGlvbiB1c2VySW5mbzp1c2VySW5mb10gYXV0b3JlbGVhc2VdOworICAgIHJldHVybiBhZG9wdE5T
KFtbc2VsZiBhbGxvY10gX2luaXRXaXRoSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb246
aW5mb3JtYXRpb24gdXNlckluZm86dXNlckluZm9dKS5hdXRvcmVsZWFzZSgpOwogfQogCiAtIChp
bnN0YW5jZXR5cGUpX2luaXRXaXRoSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb246KGNv
bnN0IFdlYktpdDo6SW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24mKWluZm9ybWF0aW9u
IHVzZXJJbmZvOihOU0RpY3Rpb25hcnkgKil1c2VySW5mbwpAQCAtMTUxLDcgKzE1MSw3IEBAIC0g
KE5TRGljdGlvbmFyeSAqKXVzZXJJbmZvCiAtIChDb2NvYUltYWdlICopaW1hZ2UKIHsKICAgICBp
ZiAoX2NvY29hSW1hZ2UpCi0gICAgICAgIHJldHVybiBbW19jb2NvYUltYWdlIGNvcHldIGF1dG9y
ZWxlYXNlXTsKKyAgICAgICAgcmV0dXJuIGFkb3B0TlMoW19jb2NvYUltYWdlIGNvcHldKS5hdXRv
cmVsZWFzZSgpOwogCiAgICAgaWYgKCFfaW1hZ2UpCiAgICAgICAgIHJldHVybiBuaWw7CkBAIC0x
NjMsNyArMTYzLDcgQEAgLSAoQ29jb2FJbWFnZSAqKWltYWdlCiAjZW5kaWYKICAgICBfaW1hZ2Ug
PSBudWxscHRyOwogCi0gICAgcmV0dXJuIFtbX2NvY29hSW1hZ2UgY29weV0gYXV0b3JlbGVhc2Vd
OworICAgIHJldHVybiBhZG9wdE5TKFtfY29jb2FJbWFnZSBjb3B5XSkuYXV0b3JlbGVhc2UoKTsK
IH0KIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L19XS0F0dGFjaG1lbnQubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dL
QXR0YWNobWVudC5tbQppbmRleCA1ZThiOGJiYmJkZmJhNjQwN2Y5ZmYzN2ZiYTgyZjI2OGQ0OWYy
YjFjLi5lZmM2YjNhOTA3M2VmZWE3MDhmOWE2NzA2ZjZiM2I2M2FjMTViNjdkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXR0YWNobWVudC5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXR0YWNobWVudC5tbQpAQCAt
MTIwLDcgKzEyMCw3IEBAIC0gKF9XS0F0dGFjaG1lbnRJbmZvICopaW5mbwogICAgIGlmICghX2F0
dGFjaG1lbnQtPmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAgIHJldHVybiBb
W1tfV0tBdHRhY2htZW50SW5mbyBhbGxvY10gaW5pdFdpdGhGaWxlV3JhcHBlcjpfYXR0YWNobWVu
dC0+ZmlsZVdyYXBwZXIoKSBmaWxlUGF0aDpfYXR0YWNobWVudC0+ZmlsZVBhdGgoKSBtaW1lVHlw
ZTpfYXR0YWNobWVudC0+bWltZVR5cGUoKSB1dGlUeXBlOl9hdHRhY2htZW50LT51dGlUeXBlKCld
IGF1dG9yZWxlYXNlXTsKKyAgICByZXR1cm4gYWRvcHROUyhbW19XS0F0dGFjaG1lbnRJbmZvIGFs
bG9jXSBpbml0V2l0aEZpbGVXcmFwcGVyOl9hdHRhY2htZW50LT5maWxlV3JhcHBlcigpIGZpbGVQ
YXRoOl9hdHRhY2htZW50LT5maWxlUGF0aCgpIG1pbWVUeXBlOl9hdHRhY2htZW50LT5taW1lVHlw
ZSgpIHV0aVR5cGU6X2F0dGFjaG1lbnQtPnV0aVR5cGUoKV0pLmF1dG9yZWxlYXNlKCk7CiB9CiAK
IC0gKHZvaWQpcmVxdWVzdEluZm86KHZvaWQoXikoX1dLQXR0YWNobWVudEluZm8gKiwgTlNFcnJv
ciAqKSljb21wbGV0aW9uSGFuZGxlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL19XS0F1dG9tYXRpb25TZXNzaW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL19XS0F1dG9tYXRpb25TZXNzaW9uLm1tCmluZGV4IDJhZGVlYTc2MGM2
OThiMThhZTU5MWU1NzA1NzEzMjk1ZjI0YzU2ZDcuLjExMGQ0ZTgwYzRmOThhZDdlYzIyZWZiY2Jh
ODYxNmQxOGMwZmVhMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9fV0tBdXRvbWF0aW9uU2Vzc2lvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvX1dLQXV0b21hdGlvblNlc3Npb24ubW0KQEAgLTQxLDcgKzQxLDcgQEAgQGlt
cGxlbWVudGF0aW9uIF9XS0F1dG9tYXRpb25TZXNzaW9uIHsKIAogLSAoaW5zdGFuY2V0eXBlKWlu
aXQKIHsKLSAgICByZXR1cm4gW3NlbGYgaW5pdFdpdGhDb25maWd1cmF0aW9uOltbW19XS0F1dG9t
YXRpb25TZXNzaW9uQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdXTsKKyAg
ICByZXR1cm4gW3NlbGYgaW5pdFdpdGhDb25maWd1cmF0aW9uOmFkb3B0TlMoW1tfV0tBdXRvbWF0
aW9uU2Vzc2lvbkNvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKS5hdXRvcmVsZWFzZSgpXTsKIH0K
IAogLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoQ29uZmlndXJhdGlvbjooX1dLQXV0b21hdGlvblNl
c3Npb25Db25maWd1cmF0aW9uICopY29uZmlndXJhdGlvbgpAQCAtODcsNyArODcsNyBAQCAtICh2
b2lkKXNldFNlc3Npb25JZGVudGlmaWVyOihOU1N0cmluZyAqKXNlc3Npb25JZGVudGlmaWVyCiAK
IC0gKF9XS0F1dG9tYXRpb25TZXNzaW9uQ29uZmlndXJhdGlvbiAqKWNvbmZpZ3VyYXRpb24KIHsK
LSAgICByZXR1cm4gW1tfY29uZmlndXJhdGlvbiBjb3B5XSBhdXRvcmVsZWFzZV07CisgICAgcmV0
dXJuIGFkb3B0TlMoW19jb25maWd1cmF0aW9uIGNvcHldKS5hdXRvcmVsZWFzZSgpOwogfQogCiAt
IChCT09MKWlzUGFpcmVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvX1dLRG93bmxvYWQubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLRG93bmxvYWQubW0KaW5kZXggZDVlMTFhZDY5NDU0ZWQ4ZGVhYjM1NTZiMDkyN2Y1MGQ4YjMy
ZTA4NC4uOTEzZjUzYTU0MTE4OTRjMjllYmZlMGQ3ZjA3ZmI3YjYwMjA3YWYwOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0Rvd25sb2FkLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZC5tbQpAQCAtNjAs
OSArNjAsOSBAQCArIChpbnN0YW5jZXR5cGUpZG93bmxvYWRXaXRoRG93bmxvYWQ6KFdLRG93bmxv
YWQgKilkb3dubG9hZAogewogICAgIGlmIChfV0tEb3dubG9hZCAqd3JhcHBlciA9IFtkb3dubG9h
ZFdyYXBwZXJNYXAoKSBvYmplY3RGb3JLZXk6ZG93bmxvYWRdKQogICAgICAgICByZXR1cm4gd3Jh
cHBlcjsKLSAgICBfV0tEb3dubG9hZCAqd3JhcHBlciA9IFtbW19XS0Rvd25sb2FkIGFsbG9jXSBp
bml0V2l0aERvd25sb2FkMjpkb3dubG9hZF0gYXV0b3JlbGVhc2VdOwotICAgIFtkb3dubG9hZFdy
YXBwZXJNYXAoKSBzZXRPYmplY3Q6d3JhcHBlciBmb3JLZXk6ZG93bmxvYWRdOwotICAgIHJldHVy
biB3cmFwcGVyOworICAgIGF1dG8gd3JhcHBlciA9IGFkb3B0TlMoW1tfV0tEb3dubG9hZCBhbGxv
Y10gaW5pdFdpdGhEb3dubG9hZDI6ZG93bmxvYWRdKTsKKyAgICBbZG93bmxvYWRXcmFwcGVyTWFw
KCkgc2V0T2JqZWN0OndyYXBwZXIuZ2V0KCkgZm9yS2V5OmRvd25sb2FkXTsKKyAgICByZXR1cm4g
d3JhcHBlci5hdXRvcmVsZWFzZSgpOwogfQogCiAtICh2b2lkKWNhbmNlbApAQCAtODUsNyArODUs
NyBAQCAtIChOU1VSTFJlcXVlc3QgKilyZXF1ZXN0CiAtIChXS1dlYlZpZXcgKilvcmlnaW5hdGlu
Z1dlYlZpZXcKIHsKICAgICBpZiAoYXV0byogb3JpZ2luYXRpbmdQYWdlID0gX2Rvd25sb2FkLT5f
ZG93bmxvYWQtPm9yaWdpbmF0aW5nUGFnZSgpKQotICAgICAgICByZXR1cm4gW1tmcm9tV2ViUGFn
ZVByb3h5KCpvcmlnaW5hdGluZ1BhZ2UpIHJldGFpbl0gYXV0b3JlbGVhc2VdOworICAgICAgICBy
ZXR1cm4gcmV0YWluUHRyKGZyb21XZWJQYWdlUHJveHkoKm9yaWdpbmF0aW5nUGFnZSkpLmF1dG9y
ZWxlYXNlKCk7CiAgICAgcmV0dXJuIG5pbDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0VsZW1lbnRBY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRWxlbWVudEFjdGlvbi5tbQppbmRleCBhMTQyODY5ZTYz
ZWY2ZGZjNjUzYWY0OTNjNTZjOWY3MGM1OGM2MjBjLi41MTUwZTI4OTRiNDVhNmY2YmRlYTY4NjU4
YTIwZmNmYzkyYjg2NmMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvX1dLRWxlbWVudEFjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvX1dLRWxlbWVudEFjdGlvbi5tbQpAQCAtOTYsOCArOTYsOCBAQCAtICh2b2lkKWRl
YWxsb2MKIAogKyAoaW5zdGFuY2V0eXBlKWVsZW1lbnRBY3Rpb25XaXRoVGl0bGU6KE5TU3RyaW5n
ICopdGl0bGUgYWN0aW9uSGFuZGxlcjooV0tFbGVtZW50QWN0aW9uSGFuZGxlciloYW5kbGVyCiB7
Ci0gICAgcmV0dXJuIFtbW3NlbGYgYWxsb2NdIF9pbml0V2l0aFRpdGxlOnRpdGxlIGFjdGlvbkhh
bmRsZXI6XihXS0FjdGlvblNoZWV0QXNzaXN0YW50ICosIF9XS0FjdGl2YXRlZEVsZW1lbnRJbmZv
ICphY3Rpb25JbmZvKSB7IGhhbmRsZXIoYWN0aW9uSW5mbyk7IH0KLSAgICAgICAgdHlwZTpfV0tF
bGVtZW50QWN0aW9uVHlwZUN1c3RvbSBhc3Npc3RhbnQ6bmlsXSBhdXRvcmVsZWFzZV07CisgICAg
cmV0dXJuIGFkb3B0TlMoW1tzZWxmIGFsbG9jXSBfaW5pdFdpdGhUaXRsZTp0aXRsZSBhY3Rpb25I
YW5kbGVyOl4oV0tBY3Rpb25TaGVldEFzc2lzdGFudCAqLCBfV0tBY3RpdmF0ZWRFbGVtZW50SW5m
byAqYWN0aW9uSW5mbykgeyBoYW5kbGVyKGFjdGlvbkluZm8pOyB9CisgICAgICAgIHR5cGU6X1dL
RWxlbWVudEFjdGlvblR5cGVDdXN0b20gYXNzaXN0YW50Om5pbF0pLmF1dG9yZWxlYXNlKCk7CiB9
CiAKICNpZiBIQVZFKFNBRkFSSV9TRVJWSUNFU19GUkFNRVdPUkspCkBAIC0xMTgsNyArMTE4LDcg
QEAgKyAoaW5zdGFuY2V0eXBlKWVsZW1lbnRBY3Rpb25XaXRoVHlwZTooX1dLRWxlbWVudEFjdGlv
blR5cGUpdHlwZSB0aXRsZTooTlNTdHJpbmcKICsgKGluc3RhbmNldHlwZSlfZWxlbWVudEFjdGlv
bldpdGhUeXBlOihfV0tFbGVtZW50QWN0aW9uVHlwZSl0eXBlIHRpdGxlOihOU1N0cmluZyAqKXRp
dGxlIGFjdGlvbkhhbmRsZXI6KFdLRWxlbWVudEFjdGlvbkhhbmRsZXIpYWN0aW9uSGFuZGxlcgog
ewogICAgIFdLRWxlbWVudEFjdGlvbkhhbmRsZXJJbnRlcm5hbCBoYW5kbGVyID0gXihXS0FjdGlv
blNoZWV0QXNzaXN0YW50ICosIF9XS0FjdGl2YXRlZEVsZW1lbnRJbmZvICphY3Rpb25JbmZvKSB7
IGFjdGlvbkhhbmRsZXIoYWN0aW9uSW5mbyk7IH07Ci0gICAgcmV0dXJuIFtbW3NlbGYgYWxsb2Nd
IF9pbml0V2l0aFRpdGxlOnRpdGxlIGFjdGlvbkhhbmRsZXI6aGFuZGxlciB0eXBlOnR5cGUgYXNz
aXN0YW50Om5pbF0gYXV0b3JlbGVhc2VdOworICAgIHJldHVybiBhZG9wdE5TKFtbc2VsZiBhbGxv
Y10gX2luaXRXaXRoVGl0bGU6dGl0bGUgYWN0aW9uSGFuZGxlcjpoYW5kbGVyIHR5cGU6dHlwZSBh
c3Npc3RhbnQ6bmlsXSkuYXV0b3JlbGVhc2UoKTsKIH0KIAogKyAoaW5zdGFuY2V0eXBlKV9lbGVt
ZW50QWN0aW9uV2l0aFR5cGU6KF9XS0VsZW1lbnRBY3Rpb25UeXBlKXR5cGUgY3VzdG9tVGl0bGU6
KE5TU3RyaW5nICopY3VzdG9tVGl0bGUgYXNzaXN0YW50OihXS0FjdGlvblNoZWV0QXNzaXN0YW50
ICopYXNzaXN0YW50CkBAIC0xODIsNyArMTgyLDcgQEAgKyAoaW5zdGFuY2V0eXBlKV9lbGVtZW50
QWN0aW9uV2l0aFR5cGU6KF9XS0VsZW1lbnRBY3Rpb25UeXBlKXR5cGUgY3VzdG9tVGl0bGU6KE4K
ICAgICAgICAgcmV0dXJuIG5pbDsKICAgICB9CiAKLSAgICByZXR1cm4gW1tbc2VsZiBhbGxvY10g
X2luaXRXaXRoVGl0bGU6KGN1c3RvbVRpdGxlID8gY3VzdG9tVGl0bGUgOiB0aXRsZSkgYWN0aW9u
SGFuZGxlcjpoYW5kbGVyIHR5cGU6dHlwZSBhc3Npc3RhbnQ6YXNzaXN0YW50XSBhdXRvcmVsZWFz
ZV07CisgICAgcmV0dXJuIGFkb3B0TlMoW1tzZWxmIGFsbG9jXSBfaW5pdFdpdGhUaXRsZTooY3Vz
dG9tVGl0bGUgPyBjdXN0b21UaXRsZSA6IHRpdGxlKSBhY3Rpb25IYW5kbGVyOmhhbmRsZXIgdHlw
ZTp0eXBlIGFzc2lzdGFudDphc3Npc3RhbnRdKS5hdXRvcmVsZWFzZSgpOwogfQogCiArIChpbnN0
YW5jZXR5cGUpX2VsZW1lbnRBY3Rpb25XaXRoVHlwZTooX1dLRWxlbWVudEFjdGlvblR5cGUpdHlw
ZSBhc3Npc3RhbnQ6KFdLQWN0aW9uU2hlZXRBc3Npc3RhbnQgKilhc3Npc3RhbnQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tGcmFtZVRyZWVOb2RlLm1t
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0ZyYW1lVHJlZU5vZGUubW0K
aW5kZXggNGQzOWUyMTU4MjE2N2JjODUxYjkwZGM0YTE4NTYyNGU2YmYwYzIyOC4uNTcyOTU4YWRj
MjEzODliYWVjOWZhOWQzNjlmMDc3ODVkN2VmMTMyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0ZyYW1lVHJlZU5vZGUubW0KKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0ZyYW1lVHJlZU5vZGUubW0KQEAgLTUzLDEyICs1
MywxMiBAQCAtIChXS1NlY3VyaXR5T3JpZ2luICopc2VjdXJpdHlPcmlnaW4KIHsKICAgICBhdXRv
JiBkYXRhID0gX25vZGUtPnNlY3VyaXR5T3JpZ2luKCk7CiAgICAgYXV0byBhcGlPcmlnaW4gPSBB
UEk6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoZGF0YS5wcm90b2NvbCwgZGF0YS5ob3N0LCBkYXRh
LnBvcnQpOwotICAgIHJldHVybiBbW3dyYXBwZXIoYXBpT3JpZ2luLmdldCgpKSByZXRhaW5dIGF1
dG9yZWxlYXNlXTsKKyAgICByZXR1cm4gcmV0YWluUHRyKHdyYXBwZXIoYXBpT3JpZ2luLmdldCgp
KSkuYXV0b3JlbGVhc2UoKTsKIH0KIAogLSAoV0tXZWJWaWV3ICopd2ViVmlldwogewotICAgIHJl
dHVybiBbW2Zyb21XZWJQYWdlUHJveHkoX25vZGUtPnBhZ2UoKSkgcmV0YWluXSBhdXRvcmVsZWFz
ZV07CisgICAgcmV0dXJuIHJldGFpblB0cihmcm9tV2ViUGFnZVByb3h5KF9ub2RlLT5wYWdlKCkp
KS5hdXRvcmVsZWFzZSgpOwogfQogCiAtIChOU0FycmF5PF9XS0ZyYW1lVHJlZU5vZGUgKj4gKilj
aGlsZEZyYW1lcwpAQCAtNzUsMTIgKzc1LDEyIEBAIC0gKGlkKWNvcHlXaXRoWm9uZTooTlNab25l
ICopem9uZQogCiAtIChfV0tGcmFtZUhhbmRsZSAqKV9oYW5kbGUKIHsKLSAgICByZXR1cm4gW1t3
cmFwcGVyKF9ub2RlLT5oYW5kbGUoKSkgcmV0YWluXSBhdXRvcmVsZWFzZV07CisgICAgcmV0dXJu
IHJldGFpblB0cih3cmFwcGVyKF9ub2RlLT5oYW5kbGUoKSkpLmF1dG9yZWxlYXNlKCk7CiB9CiAK
IC0gKF9XS0ZyYW1lSGFuZGxlICopX3BhcmVudEZyYW1lSGFuZGxlCiB7Ci0gICAgcmV0dXJuIFtb
d3JhcHBlcihfbm9kZS0+cGFyZW50RnJhbWVIYW5kbGUoKSkgcmV0YWluXSBhdXRvcmVsZWFzZV07
CisgICAgcmV0dXJuIHJldGFpblB0cih3cmFwcGVyKF9ub2RlLT5wYXJlbnRGcmFtZUhhbmRsZSgp
KSkuYXV0b3JlbGVhc2UoKTsKIH0KIAogLSAoQVBJOjpPYmplY3QmKV9hcGlPYmplY3QKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3IubW0g
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yLm1tCmluZGV4
IDZiZWI0NWU4NDY1OTgxZjllMDkyNDcyZWE0YjMxNzg2NjcyNmJlMTEuLjI2Y2E4Zjc4MTYzZTU0
ODY0YWE4ZjhlNGZiODI1NTIyOTUyM2M0YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3IubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3Rvci5tbQpAQCAtMTg4LDcgKzE4OCw3IEBAIC0gKHZv
aWQpcmVnaXN0ZXJFeHRlbnNpb25XaXRoSUQ6KE5TU3RyaW5nICopZXh0ZW5zaW9uSUQgZGlzcGxh
eU5hbWU6KE5TU3RyaW5nICopCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAg
ICAgICBjYXB0dXJlZEJsb2NrKG5pbCwgW1t3cmFwcGVyKEFQSTo6SW5zcGVjdG9yRXh0ZW5zaW9u
OjpjcmVhdGUocHJvdGVjdGVkRXh0ZW5zaW9uSUQuZ2V0KCksIHByb3RlY3RlZFNlbGYtPl9pbnNw
ZWN0b3ItPmV4dGVuc2lvbkNvbnRyb2xsZXIoKSkpIHJldGFpbl0gYXV0b3JlbGVhc2VdKTsKKyAg
ICAgICAgY2FwdHVyZWRCbG9jayhuaWwsIHJldGFpblB0cih3cmFwcGVyKEFQSTo6SW5zcGVjdG9y
RXh0ZW5zaW9uOjpjcmVhdGUocHJvdGVjdGVkRXh0ZW5zaW9uSUQuZ2V0KCksIHByb3RlY3RlZFNl
bGYtPl9pbnNwZWN0b3ItPmV4dGVuc2lvbkNvbnRyb2xsZXIoKSkpKS5hdXRvcmVsZWFzZSgpKTsK
ICAgICB9KTsKICNlbHNlCiAgICAgY29tcGxldGlvbkhhbmRsZXIoW05TRXJyb3IgZXJyb3JXaXRo
RG9tYWluOldLRXJyb3JEb21haW4gY29kZTpXS0Vycm9yVW5rbm93biB1c2VySW5mbzpuaWxdLCBu
aWwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1By
b2Nlc3NQb29sQ29uZmlndXJhdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9fV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24ubW0KaW5kZXggYjRjMzVlODg1NGM2MTA1
NTY1NWFlZmYyYmZiOTA5Y2RjNTQyODM5Yy4uNDU1ZDVhOTIzNGQ1OTkyNzdjNjI4ODIwOWVkYTJj
NzZjMDZmMTc3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLm1tCkBAIC02OSwxMSAr
NjksMTEgQEAgLSAoTlNTZXQ8Q2xhc3M+ICopY3VzdG9tQ2xhc3Nlc0ZvclBhcmFtZXRlckNvZGVy
CiAgICAgaWYgKGNsYXNzZXMuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gW05TU2V0IHNldF07
CiAKLSAgICBOU011dGFibGVTZXQgKnJlc3VsdCA9IFtbTlNNdXRhYmxlU2V0IGFsbG9jXSBpbml0
V2l0aENhcGFjaXR5OmNsYXNzZXMuc2l6ZSgpXTsKKyAgICBhdXRvIHJlc3VsdCA9IGFkb3B0TlMo
W1tOU011dGFibGVTZXQgYWxsb2NdIGluaXRXaXRoQ2FwYWNpdHk6Y2xhc3Nlcy5zaXplKCldKTsK
ICAgICBmb3IgKGNvbnN0IGF1dG8mIHZhbHVlIDogY2xhc3NlcykKICAgICAgICAgW3Jlc3VsdCBh
ZGRPYmplY3Q6IG9iamNfbG9va1VwQ2xhc3ModmFsdWUudXRmOCgpLmRhdGEoKSldOwogCi0gICAg
cmV0dXJuIFtyZXN1bHQgYXV0b3JlbGVhc2VdOworICAgIHJldHVybiByZXN1bHQuYXV0b3JlbGVh
c2UoKTsKIH0KIAogLSAodm9pZClzZXRDdXN0b21DbGFzc2VzRm9yUGFyYW1ldGVyQ29kZXI6KE5T
U2V0PENsYXNzPiAqKWNsYXNzZXNGb3JDb2RlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL19XS1JlbW90ZVdlYkluc3BlY3RvclZpZXdDb250cm9sbGVyLm1t
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1JlbW90ZVdlYkluc3BlY3Rv
clZpZXdDb250cm9sbGVyLm1tCmluZGV4IDkxYzRlM2NhYzgxZWQxYjc5MDM0MjFkNmJlNjQ5NTcw
ZThkNDcwMDQuLjlmMzE5Y2ZjZDVkMzUyNWNlNjFkYTQyZGEwZDI2YTNlNTYyNDY2YmIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tSZW1vdGVXZWJJbnNw
ZWN0b3JWaWV3Q29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvX1dLUmVtb3RlV2ViSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIubW0KQEAgLTE2OCw3ICsx
NjgsNyBAQCAtICh2b2lkKXJlZ2lzdGVyRXh0ZW5zaW9uV2l0aElEOihOU1N0cmluZyAqKWV4dGVu
c2lvbklEIGRpc3BsYXlOYW1lOihOU1N0cmluZyAqKQogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CiAKLSAgICAgICAgY2FwdHVyZWRCbG9jayhuaWwsIFtbd3JhcHBlcihBUEk6Okluc3Bl
Y3RvckV4dGVuc2lvbjo6Y3JlYXRlKHByb3RlY3RlZEV4dGVuc2lvbklELmdldCgpLCBwcm90ZWN0
ZWRTZWxmLT5tX3JlbW90ZUluc3BlY3RvclByb3h5LT5leHRlbnNpb25Db250cm9sbGVyKCkpKSBy
ZXRhaW5dIGF1dG9yZWxlYXNlXSk7CisgICAgICAgIGNhcHR1cmVkQmxvY2sobmlsLCByZXRhaW5Q
dHIod3JhcHBlcihBUEk6Okluc3BlY3RvckV4dGVuc2lvbjo6Y3JlYXRlKHByb3RlY3RlZEV4dGVu
c2lvbklELmdldCgpLCBwcm90ZWN0ZWRTZWxmLT5tX3JlbW90ZUluc3BlY3RvclByb3h5LT5leHRl
bnNpb25Db250cm9sbGVyKCkpKSkuYXV0b3JlbGVhc2UoKSk7CiAgICAgfSk7CiAjZWxzZQogICAg
IGNvbXBsZXRpb25IYW5kbGVyKFtOU0Vycm9yIGVycm9yV2l0aERvbWFpbjpXS0Vycm9yRG9tYWlu
IGNvZGU6V0tFcnJvclVua25vd24gdXNlckluZm86bmlsXSwgbmlsKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tUZXh0TWFuaXB1bGF0aW9uVG9rZW4u
bW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVGV4dE1hbmlwdWxhdGlv
blRva2VuLm1tCmluZGV4IGM4ZmQyMmE3YjUyM2ZlYTM5Y2FmYzFlMGVhYjdkOTE5ZTBkZmVkYzUu
LjgxOWZlMWI5ZTljNjA1ZTQ3Nzc5YmRiOTE2OWVlZDc0MGI4M2M5ODkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tUZXh0TWFuaXB1bGF0aW9uVG9rZW4u
bW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1RleHRNYW5pcHVs
YXRpb25Ub2tlbi5tbQpAQCAtMTEyLDcgKzExMiw3IEBAIC0gKE5TU3RyaW5nICopX2Rlc2NyaXB0
aW9uUHJlc2VydmluZ1ByaXZhY3k6KEJPT0wpcHJlc2VydmVQcml2YWN5CiAKICAgICBbZGVzY3Jp
cHRpb24gYXBwZW5kU3RyaW5nOkAiPiJdOwogCi0gICAgcmV0dXJuIFtbZGVzY3JpcHRpb24gY29w
eV0gYXV0b3JlbGVhc2VdOworICAgIHJldHVybiBhZG9wdE5TKFtkZXNjcmlwdGlvbiBjb3B5XSku
YXV0b3JlbGVhc2UoKTsKIH0KIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL19XS1VzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmUubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVXNlckNvbnRlbnRFeHRlbnNpb25TdG9yZS5t
bQppbmRleCA4NDQ5MmE1NjYxM2IxYTYxZmJiOTUxYjFjMDgwNWJlMzY2NmIyZDVjLi4yZWU4ZDdh
MDYxMDc5ZjY5NzU2MDQyZTNhNTE4ODljMjkwYWM3MDcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVXNlckNvbnRlbnRFeHRlbnNpb25TdG9yZS5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVXNlckNvbnRlbnRFeHRl
bnNpb25TdG9yZS5tbQpAQCAtNjAsMjcgKzYwLDI3IEBAIEBpbXBsZW1lbnRhdGlvbiBfV0tVc2Vy
Q29udGVudEV4dGVuc2lvblN0b3JlCiAKICsgKGluc3RhbmNldHlwZSlkZWZhdWx0U3RvcmUKIHsK
LSAgICByZXR1cm4gW1tbX1dLVXNlckNvbnRlbnRFeHRlbnNpb25TdG9yZSBhbGxvY10gX2luaXRX
aXRoV0tDb250ZW50UnVsZUxpc3RTdG9yZTpbV0tDb250ZW50UnVsZUxpc3RTdG9yZSBkZWZhdWx0
U3RvcmVXaXRoTGVnYWN5RmlsZW5hbWVdXSBhdXRvcmVsZWFzZV07CisgICAgcmV0dXJuIGFkb3B0
TlMoW1tfV0tVc2VyQ29udGVudEV4dGVuc2lvblN0b3JlIGFsbG9jXSBfaW5pdFdpdGhXS0NvbnRl
bnRSdWxlTGlzdFN0b3JlOltXS0NvbnRlbnRSdWxlTGlzdFN0b3JlIGRlZmF1bHRTdG9yZVdpdGhM
ZWdhY3lGaWxlbmFtZV1dKS5hdXRvcmVsZWFzZSgpOwogfQogCiArIChpbnN0YW5jZXR5cGUpc3Rv
cmVXaXRoVVJMOihOU1VSTCAqKXVybAogewotICAgIHJldHVybiBbW1tfV0tVc2VyQ29udGVudEV4
dGVuc2lvblN0b3JlIGFsbG9jXSBfaW5pdFdpdGhXS0NvbnRlbnRSdWxlTGlzdFN0b3JlOltXS0Nv
bnRlbnRSdWxlTGlzdFN0b3JlIHN0b3JlV2l0aFVSTEFuZExlZ2FjeUZpbGVuYW1lOnVybF1dIGF1
dG9yZWxlYXNlXTsKKyAgICByZXR1cm4gYWRvcHROUyhbW19XS1VzZXJDb250ZW50RXh0ZW5zaW9u
U3RvcmUgYWxsb2NdIF9pbml0V2l0aFdLQ29udGVudFJ1bGVMaXN0U3RvcmU6W1dLQ29udGVudFJ1
bGVMaXN0U3RvcmUgc3RvcmVXaXRoVVJMQW5kTGVnYWN5RmlsZW5hbWU6dXJsXV0pLmF1dG9yZWxl
YXNlKCk7CiB9CiAKIC0gKHZvaWQpY29tcGlsZUNvbnRlbnRFeHRlbnNpb25Gb3JJZGVudGlmaWVy
OihOU1N0cmluZyAqKWlkZW50aWZpZXIgZW5jb2RlZENvbnRlbnRFeHRlbnNpb246KE5TU3RyaW5n
ICopZW5jb2RlZENvbnRlbnRSdWxlTGlzdCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoX1dL
VXNlckNvbnRlbnRGaWx0ZXIgKiwgTlNFcnJvciAqKSljb21wbGV0aW9uSGFuZGxlcgogewogICAg
IFtfY29udGVudFJ1bGVMaXN0U3RvcmUgX2NvbXBpbGVDb250ZW50UnVsZUxpc3RGb3JJZGVudGlm
aWVyOmlkZW50aWZpZXIgZW5jb2RlZENvbnRlbnRSdWxlTGlzdDplbmNvZGVkQ29udGVudFJ1bGVM
aXN0IGNvbXBsZXRpb25IYW5kbGVyOl4oV0tDb250ZW50UnVsZUxpc3QgKmNvbnRlbnRSdWxlTGlz
dCwgTlNFcnJvciAqZXJyb3IpIHsKLSAgICAgICAgX1dLVXNlckNvbnRlbnRGaWx0ZXIgKmNvbnRl
bnRGaWx0ZXIgPSBjb250ZW50UnVsZUxpc3QgPyBbW1tfV0tVc2VyQ29udGVudEZpbHRlciBhbGxv
Y10gX2luaXRXaXRoV0tDb250ZW50UnVsZUxpc3Q6Y29udGVudFJ1bGVMaXN0XSBhdXRvcmVsZWFz
ZV0gOiBuaWw7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGNvbnRlbnRGaWx0ZXIsIHRvVXNl
ckNvbnRlbnRSdWxlTGlzdFN0b3JlRXJyb3IoZXJyb3IpKTsKKyAgICAgICAgYXV0byBjb250ZW50
RmlsdGVyID0gY29udGVudFJ1bGVMaXN0ID8gYWRvcHROUyhbW19XS1VzZXJDb250ZW50RmlsdGVy
IGFsbG9jXSBfaW5pdFdpdGhXS0NvbnRlbnRSdWxlTGlzdDpjb250ZW50UnVsZUxpc3RdKSA6IG5p
bDsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoY29udGVudEZpbHRlci5hdXRvcmVsZWFzZSgp
LCB0b1VzZXJDb250ZW50UnVsZUxpc3RTdG9yZUVycm9yKGVycm9yKSk7CiAgICAgfV07CiB9CiAK
IC0gKHZvaWQpbG9va3VwQ29udGVudEV4dGVuc2lvbkZvcklkZW50aWZpZXI6KE5TU3RyaW5nICop
aWRlbnRpZmllciBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoX1dLVXNlckNvbnRlbnRGaWx0
ZXIgKiwgTlNFcnJvciAqKSljb21wbGV0aW9uSGFuZGxlcgogewogICAgIFtfY29udGVudFJ1bGVM
aXN0U3RvcmUgbG9va1VwQ29udGVudFJ1bGVMaXN0Rm9ySWRlbnRpZmllcjppZGVudGlmaWVyIGNv
bXBsZXRpb25IYW5kbGVyOl4oV0tDb250ZW50UnVsZUxpc3QgKmNvbnRlbnRSdWxlTGlzdCwgTlNF
cnJvciAqZXJyb3IpIHsKLSAgICAgICAgX1dLVXNlckNvbnRlbnRGaWx0ZXIgKmNvbnRlbnRGaWx0
ZXIgPSBjb250ZW50UnVsZUxpc3QgPyBbW1tfV0tVc2VyQ29udGVudEZpbHRlciBhbGxvY10gX2lu
aXRXaXRoV0tDb250ZW50UnVsZUxpc3Q6Y29udGVudFJ1bGVMaXN0XSBhdXRvcmVsZWFzZV0gOiBu
aWw7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGNvbnRlbnRGaWx0ZXIsIHRvVXNlckNvbnRl
bnRSdWxlTGlzdFN0b3JlRXJyb3IoZXJyb3IpKTsKKyAgICAgICAgYXV0byBjb250ZW50RmlsdGVy
ID0gY29udGVudFJ1bGVMaXN0ID8gYWRvcHROUyhbW19XS1VzZXJDb250ZW50RmlsdGVyIGFsbG9j
XSBfaW5pdFdpdGhXS0NvbnRlbnRSdWxlTGlzdDpjb250ZW50UnVsZUxpc3RdKSA6IG5pbDsKKyAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoY29udGVudEZpbHRlci5hdXRvcmVsZWFzZSgpLCB0b1Vz
ZXJDb250ZW50UnVsZUxpc3RTdG9yZUVycm9yKGVycm9yKSk7CiAgICAgfV07CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tVc2VyQ29udGVudFdv
cmxkLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1VzZXJDb250ZW50
V29ybGQubW0KaW5kZXggZGYxNThmMGQyMzkzNGUwN2ZiMjkxZTY2YjMxNjMwYTk1OTcwYzc0Ni4u
OTBmMWI3OTY0NmM4NTNhZjhmNWVmMjM4Mzg5NzQwNTQyMDliM2FhNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1VzZXJDb250ZW50V29ybGQubW0KKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1VzZXJDb250ZW50V29ybGQu
bW0KQEAgLTYwLDEyICs2MCwxMiBAQCAtIChpbnN0YW5jZXR5cGUpX2luaXRXaXRoQ29udGVudFdv
cmxkOihXS0NvbnRlbnRXb3JsZCAqKXdvcmxkCiAKICsgKF9XS1VzZXJDb250ZW50V29ybGQgKil3
b3JsZFdpdGhOYW1lOihOU1N0cmluZyAqKW5hbWUKIHsKLSAgICByZXR1cm4gW1tbX1dLVXNlckNv
bnRlbnRXb3JsZCBhbGxvY10gX2luaXRXaXRoTmFtZTpuYW1lXSBhdXRvcmVsZWFzZV07CisgICAg
cmV0dXJuIGFkb3B0TlMoW1tfV0tVc2VyQ29udGVudFdvcmxkIGFsbG9jXSBfaW5pdFdpdGhOYW1l
Om5hbWVdKS5hdXRvcmVsZWFzZSgpOwogfQogCiArIChfV0tVc2VyQ29udGVudFdvcmxkICopbm9y
bWFsV29ybGQKIHsKLSAgICByZXR1cm4gW1tbX1dLVXNlckNvbnRlbnRXb3JsZCBhbGxvY10gX2lu
aXRdIGF1dG9yZWxlYXNlXTsKKyAgICByZXR1cm4gYWRvcHROUyhbW19XS1VzZXJDb250ZW50V29y
bGQgYWxsb2NdIF9pbml0XSkuYXV0b3JlbGVhc2UoKTsKIH0KIAogLSAoTlNTdHJpbmcgKiluYW1l
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld0lP
Uy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3SU9TLm1tCmlu
ZGV4IDBmNjk0YmE4ZGNmNmVmZjI1YzBkN2Y2NWYzN2ZjNDNjNzk1ZTczOGMuLjU5ZDQ0NjI2ZWE0
NWQ4ZTg0OWNmMTUzYjU1ZjhhMmIyMzMyYzc3Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3SU9TLm1tCkBAIC0yNTUxLDcgKzI1NTEsNyBAQCAtIChV
SUV2ZW50QXR0cmlidXRpb24gKilfdWlFdmVudEF0dHJpYnV0aW9uCiAgICAgICAgIHJldHVybiBu
aWw7CiAKICAgICBhdXRvIGF0dHJpYnV0ZU9uVVJMID0gVVJMKFVSTCgpLCBtYWtlU3RyaW5nKCJo
dHRwczovLyIsIG1lYXN1cmVtZW50LT5hdHRyaWJ1dGVPblNpdGUoKS5yZWdpc3RyYWJsZURvbWFp
bi5zdHJpbmcoKSkpOwotICAgIHJldHVybiBbW1tVSUV2ZW50QXR0cmlidXRpb24gYWxsb2NdIGlu
aXRXaXRoU291cmNlSWRlbnRpZmllcjptZWFzdXJlbWVudC0+c291cmNlSUQoKS5pZCBkZXN0aW5h
dGlvblVSTDphdHRyaWJ1dGVPblVSTCBzb3VyY2VEZXNjcmlwdGlvbjptZWFzdXJlbWVudC0+c291
cmNlRGVzY3JpcHRpb24oKSBwdXJjaGFzZXI6bWVhc3VyZW1lbnQtPnB1cmNoYXNlcigpXSBhdXRv
cmVsZWFzZV07CisgICAgcmV0dXJuIGFkb3B0TlMoW1tVSUV2ZW50QXR0cmlidXRpb24gYWxsb2Nd
IGluaXRXaXRoU291cmNlSWRlbnRpZmllcjptZWFzdXJlbWVudC0+c291cmNlSUQoKS5pZCBkZXN0
aW5hdGlvblVSTDphdHRyaWJ1dGVPblVSTCBzb3VyY2VEZXNjcmlwdGlvbjptZWFzdXJlbWVudC0+
c291cmNlRGVzY3JpcHRpb24oKSBwdXJjaGFzZXI6bWVhc3VyZW1lbnQtPnB1cmNoYXNlcigpXSku
YXV0b3JlbGVhc2UoKTsKICNlbHNlCiAgICAgcmV0dXJuIG5pbDsKICNlbmRpZgpAQCAtMzE1OSw5
ICszMTU5LDkgQEAgLSAodm9pZCAoXikodm9pZCkpX3JldGFpbkFjdGl2ZUZvY3VzZWRTdGF0ZQog
ICAgICsrX2FjdGl2ZUZvY3VzZWRTdGF0ZVJldGFpbkNvdW50OwogCiAgICAgLy8gRklYTUU6IFVz
ZSBzb21ldGhpbmcgbGlrZSBDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2VyIHRvIGVuc3VyZSB0
aGF0IHRoZSByZXR1cm5lZCBibG9jayBpcyBjYWxsZWQgYmVmb3JlIGl0J3MgcmVsZWFzZWQuCi0g
ICAgcmV0dXJuIFtbW3NlbGZdIHsKKyAgICByZXR1cm4gYWRvcHROUyhbW3NlbGZdIHsKICAgICAg
ICAgLS1fYWN0aXZlRm9jdXNlZFN0YXRlUmV0YWluQ291bnQ7Ci0gICAgfSBjb3B5XSBhdXRvcmVs
ZWFzZV07CisgICAgfSBjb3B5XSkuYXV0b3JlbGVhc2UoKTsKIH0KIAogLSAodm9pZClfYmVjb21l
Rmlyc3RSZXNwb25kZXJXaXRoU2VsZWN0aW9uTW92aW5nRm9yd2FyZDooQk9PTClzZWxlY3RpbmdG
b3J3YXJkIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShCT09MIGRpZEJlY29tZUZpcnN0UmVz
cG9uZGVyKSljb21wbGV0aW9uSGFuZGxlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQXV0b21hdGlvbi9pb3MvV2ViQXV0b21hdGlvblNlc3Npb25JT1MubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL2lvcy9XZWJBdXRvbWF0aW9uU2Vzc2lvbklPUy5t
bQppbmRleCA3MjI4YWZmYWRiY2FhMjViZjM1ZGM0MThhMDE2OGQ2OTgwODBkNTQ4Li5iOGYxY2Rk
YjQ5ZGIyYWY3YTI4YTY5M2QzMGY5ZjhhNWViMjgyOTJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL2lvcy9XZWJBdXRvbWF0aW9uU2Vzc2lvbklPUy5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL2lvcy9XZWJBdXRvbWF0aW9u
U2Vzc2lvbklPUy5tbQpAQCAtMTMyLDE5ICsxMzIsMTkgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vz
c2lvbjo6cGxhdGZvcm1TaW11bGF0ZUtleWJvYXJkSW50ZXJhY3Rpb24oV2ViUGFnZVByb3h5JiBw
YWcKICAgICBjYXNlIEtleWJvYXJkSW50ZXJhY3Rpb246OktleVByZXNzOiB7CiAgICAgICAgIG1f
Y3VycmVudE1vZGlmaWVycyB8PSBjaGFuZ2VkTW9kaWZpZXJzOwogCi0gICAgICAgIFtldmVudHNU
b0JlU2VudCBhZGRPYmplY3Q6W1tbOjpXZWJFdmVudCBhbGxvY10gaW5pdFdpdGhLZXlFdmVudFR5
cGU6V2ViRXZlbnRLZXlEb3duIHRpbWVTdGFtcDpDRkFic29sdXRlVGltZUdldEN1cnJlbnQoKSBj
aGFyYWN0ZXJzOmNoYXJhY3RlcnMgY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzOnVubW9kaWZp
ZWRDaGFyYWN0ZXJzIG1vZGlmaWVyczptX2N1cnJlbnRNb2RpZmllcnMgaXNSZXBlYXRpbmc6Tk8g
d2l0aEZsYWdzOmlucHV0RmxhZ3Mgd2l0aElucHV0TWFuYWdlckhpbnQ6bmlsIGtleUNvZGU6a2V5
Q29kZSBpc1RhYktleTppc1RhYktleV0gYXV0b3JlbGVhc2VdXTsKKyAgICAgICAgW2V2ZW50c1Rv
QmVTZW50IGFkZE9iamVjdDphZG9wdE5TKFtbOjpXZWJFdmVudCBhbGxvY10gaW5pdFdpdGhLZXlF
dmVudFR5cGU6V2ViRXZlbnRLZXlEb3duIHRpbWVTdGFtcDpDRkFic29sdXRlVGltZUdldEN1cnJl
bnQoKSBjaGFyYWN0ZXJzOmNoYXJhY3RlcnMgY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzOnVu
bW9kaWZpZWRDaGFyYWN0ZXJzIG1vZGlmaWVyczptX2N1cnJlbnRNb2RpZmllcnMgaXNSZXBlYXRp
bmc6Tk8gd2l0aEZsYWdzOmlucHV0RmxhZ3Mgd2l0aElucHV0TWFuYWdlckhpbnQ6bmlsIGtleUNv
ZGU6a2V5Q29kZSBpc1RhYktleTppc1RhYktleV0pLmF1dG9yZWxlYXNlKCldOwogICAgICAgICBi
cmVhazsKICAgICB9CiAgICAgY2FzZSBLZXlib2FyZEludGVyYWN0aW9uOjpLZXlSZWxlYXNlOiB7
CiAgICAgICAgIG1fY3VycmVudE1vZGlmaWVycyAmPSB+Y2hhbmdlZE1vZGlmaWVyczsKIAotICAg
ICAgICBbZXZlbnRzVG9CZVNlbnQgYWRkT2JqZWN0OltbWzo6V2ViRXZlbnQgYWxsb2NdIGluaXRX
aXRoS2V5RXZlbnRUeXBlOldlYkV2ZW50S2V5VXAgdGltZVN0YW1wOkNGQWJzb2x1dGVUaW1lR2V0
Q3VycmVudCgpIGNoYXJhY3RlcnM6Y2hhcmFjdGVycyBjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmll
cnM6dW5tb2RpZmllZENoYXJhY3RlcnMgbW9kaWZpZXJzOm1fY3VycmVudE1vZGlmaWVycyBpc1Jl
cGVhdGluZzpOTyB3aXRoRmxhZ3M6aW5wdXRGbGFncyB3aXRoSW5wdXRNYW5hZ2VySGludDpuaWwg
a2V5Q29kZTprZXlDb2RlIGlzVGFiS2V5OmlzVGFiS2V5XSBhdXRvcmVsZWFzZV1dOworICAgICAg
ICBbZXZlbnRzVG9CZVNlbnQgYWRkT2JqZWN0OmFkb3B0TlMoW1s6OldlYkV2ZW50IGFsbG9jXSBp
bml0V2l0aEtleUV2ZW50VHlwZTpXZWJFdmVudEtleVVwIHRpbWVTdGFtcDpDRkFic29sdXRlVGlt
ZUdldEN1cnJlbnQoKSBjaGFyYWN0ZXJzOmNoYXJhY3RlcnMgY2hhcmFjdGVyc0lnbm9yaW5nTW9k
aWZpZXJzOnVubW9kaWZpZWRDaGFyYWN0ZXJzIG1vZGlmaWVyczptX2N1cnJlbnRNb2RpZmllcnMg
aXNSZXBlYXRpbmc6Tk8gd2l0aEZsYWdzOmlucHV0RmxhZ3Mgd2l0aElucHV0TWFuYWdlckhpbnQ6
bmlsIGtleUNvZGU6a2V5Q29kZSBpc1RhYktleTppc1RhYktleV0pLmF1dG9yZWxlYXNlKCldOwog
ICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBLZXlib2FyZEludGVyYWN0aW9uOjpJbnNl
cnRCeUtleTogewogICAgICAgICAvLyBNb2RpZmllcnMgb25seSBjaGFuZ2Ugd2l0aCBLZXlQcmVz
cyBvciBLZXlSZWxlYXNlLCB0aGlzIGNvZGUgcGF0aCBpcyBmb3Igc2luZ2xlIGNoYXJhY3RlcnMu
Ci0gICAgICAgIFtldmVudHNUb0JlU2VudCBhZGRPYmplY3Q6W1tbOjpXZWJFdmVudCBhbGxvY10g
aW5pdFdpdGhLZXlFdmVudFR5cGU6V2ViRXZlbnRLZXlEb3duIHRpbWVTdGFtcDpDRkFic29sdXRl
VGltZUdldEN1cnJlbnQoKSBjaGFyYWN0ZXJzOmNoYXJhY3RlcnMgY2hhcmFjdGVyc0lnbm9yaW5n
TW9kaWZpZXJzOnVubW9kaWZpZWRDaGFyYWN0ZXJzIG1vZGlmaWVyczptX2N1cnJlbnRNb2RpZmll
cnMgaXNSZXBlYXRpbmc6Tk8gd2l0aEZsYWdzOmlucHV0RmxhZ3Mgd2l0aElucHV0TWFuYWdlckhp
bnQ6bmlsIGtleUNvZGU6a2V5Q29kZSBpc1RhYktleTppc1RhYktleV0gYXV0b3JlbGVhc2VdXTsK
LSAgICAgICAgW2V2ZW50c1RvQmVTZW50IGFkZE9iamVjdDpbW1s6OldlYkV2ZW50IGFsbG9jXSBp
bml0V2l0aEtleUV2ZW50VHlwZTpXZWJFdmVudEtleVVwIHRpbWVTdGFtcDpDRkFic29sdXRlVGlt
ZUdldEN1cnJlbnQoKSBjaGFyYWN0ZXJzOmNoYXJhY3RlcnMgY2hhcmFjdGVyc0lnbm9yaW5nTW9k
aWZpZXJzOnVubW9kaWZpZWRDaGFyYWN0ZXJzIG1vZGlmaWVyczptX2N1cnJlbnRNb2RpZmllcnMg
aXNSZXBlYXRpbmc6Tk8gd2l0aEZsYWdzOmlucHV0RmxhZ3Mgd2l0aElucHV0TWFuYWdlckhpbnQ6
bmlsIGtleUNvZGU6a2V5Q29kZSBpc1RhYktleTppc1RhYktleV0gYXV0b3JlbGVhc2VdXTsKKyAg
ICAgICAgW2V2ZW50c1RvQmVTZW50IGFkZE9iamVjdDphZG9wdE5TKFtbOjpXZWJFdmVudCBhbGxv
Y10gaW5pdFdpdGhLZXlFdmVudFR5cGU6V2ViRXZlbnRLZXlEb3duIHRpbWVTdGFtcDpDRkFic29s
dXRlVGltZUdldEN1cnJlbnQoKSBjaGFyYWN0ZXJzOmNoYXJhY3RlcnMgY2hhcmFjdGVyc0lnbm9y
aW5nTW9kaWZpZXJzOnVubW9kaWZpZWRDaGFyYWN0ZXJzIG1vZGlmaWVyczptX2N1cnJlbnRNb2Rp
ZmllcnMgaXNSZXBlYXRpbmc6Tk8gd2l0aEZsYWdzOmlucHV0RmxhZ3Mgd2l0aElucHV0TWFuYWdl
ckhpbnQ6bmlsIGtleUNvZGU6a2V5Q29kZSBpc1RhYktleTppc1RhYktleV0pLmF1dG9yZWxlYXNl
KCldOworICAgICAgICBbZXZlbnRzVG9CZVNlbnQgYWRkT2JqZWN0OmFkb3B0TlMoW1s6OldlYkV2
ZW50IGFsbG9jXSBpbml0V2l0aEtleUV2ZW50VHlwZTpXZWJFdmVudEtleVVwIHRpbWVTdGFtcDpD
RkFic29sdXRlVGltZUdldEN1cnJlbnQoKSBjaGFyYWN0ZXJzOmNoYXJhY3RlcnMgY2hhcmFjdGVy
c0lnbm9yaW5nTW9kaWZpZXJzOnVubW9kaWZpZWRDaGFyYWN0ZXJzIG1vZGlmaWVyczptX2N1cnJl
bnRNb2RpZmllcnMgaXNSZXBlYXRpbmc6Tk8gd2l0aEZsYWdzOmlucHV0RmxhZ3Mgd2l0aElucHV0
TWFuYWdlckhpbnQ6bmlsIGtleUNvZGU6a2V5Q29kZSBpc1RhYktleTppc1RhYktleV0pLmF1dG9y
ZWxlYXNlKCldOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvQXV0b21hdGlvbkNsaWVudC5tbSBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL0F1dG9tYXRpb25DbGllbnQubW0KaW5kZXggNGU5YTc2YmQ0
MjE4MDdmODRiNWYzN2Q0ZGNkZDRjMmUyYmQ3ZTNiZC4uMDJkYWRjYzRjODEzYWQ4MmM3MThmMTZh
NTgzNjE2ZTAzZTM1YTE5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvQXV0b21hdGlvbkNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9BdXRvbWF0aW9uQ2xpZW50Lm1tCkBAIC03NywxNyArNzcsMTcgQEAgYm9vbCBBdXRvbWF0aW9u
Q2xpZW50OjpyZW1vdGVBdXRvbWF0aW9uQWxsb3dlZCgpIGNvbnN0CiAKIHZvaWQgQXV0b21hdGlv
bkNsaWVudDo6cmVxdWVzdEF1dG9tYXRpb25TZXNzaW9uKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklk
ZW50aWZpZXIsIGNvbnN0IFJlbW90ZUluc3BlY3Rvcjo6Q2xpZW50OjpTZXNzaW9uQ2FwYWJpbGl0
aWVzJiBzZXNzaW9uQ2FwYWJpbGl0aWVzKQogewotICAgIF9XS0F1dG9tYXRpb25TZXNzaW9uQ29u
ZmlndXJhdGlvbiAqY29uZmlndXJhdGlvbiA9IFtbW19XS0F1dG9tYXRpb25TZXNzaW9uQ29uZmln
dXJhdGlvbiBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOworICAgIGF1dG8gY29uZmlndXJhdGlv
biA9IGFkb3B0TlMoW1tfV0tBdXRvbWF0aW9uU2Vzc2lvbkNvbmZpZ3VyYXRpb24gYWxsb2NdIGlu
aXRdKTsKICAgICBpZiAoc2Vzc2lvbkNhcGFiaWxpdGllcy5hbGxvd0luc2VjdXJlTWVkaWFDYXB0
dXJlKQotICAgICAgICBjb25maWd1cmF0aW9uLmFsbG93c0luc2VjdXJlTWVkaWFDYXB0dXJlID0g
c2Vzc2lvbkNhcGFiaWxpdGllcy5hbGxvd0luc2VjdXJlTWVkaWFDYXB0dXJlLnZhbHVlKCk7Cisg
ICAgICAgIFtjb25maWd1cmF0aW9uIHNldEFsbG93c0luc2VjdXJlTWVkaWFDYXB0dXJlOnNlc3Np
b25DYXBhYmlsaXRpZXMuYWxsb3dJbnNlY3VyZU1lZGlhQ2FwdHVyZS52YWx1ZSgpXTsKICAgICBp
ZiAoc2Vzc2lvbkNhcGFiaWxpdGllcy5zdXBwcmVzc0lDRUNhbmRpZGF0ZUZpbHRlcmluZykKLSAg
ICAgICAgY29uZmlndXJhdGlvbi5zdXBwcmVzc2VzSUNFQ2FuZGlkYXRlRmlsdGVyaW5nID0gc2Vz
c2lvbkNhcGFiaWxpdGllcy5zdXBwcmVzc0lDRUNhbmRpZGF0ZUZpbHRlcmluZy52YWx1ZSgpOwor
ICAgICAgICBbY29uZmlndXJhdGlvbiBzZXRTdXBwcmVzc2VzSUNFQ2FuZGlkYXRlRmlsdGVyaW5n
OnNlc3Npb25DYXBhYmlsaXRpZXMuc3VwcHJlc3NJQ0VDYW5kaWRhdGVGaWx0ZXJpbmcudmFsdWUo
KV07CiAKICAgICAvLyBGb3JjZSBjbGllbnRzIHRvIGNyZWF0ZSBhbmQgcmVnaXN0ZXIgYSBzZXNz
aW9uIGFzeW5jaHJvbm91c2x5LiBPdGhlcndpc2UsCiAgICAgLy8gUmVtb3RlSW5zcGVjdG9yIHdp
bGwgdHJ5IHRvIGFjcXVpcmUgaXRzIGxvY2sgdG8gcmVnaXN0ZXIgdGhlIG5ldyBzZXNzaW9uIGFu
ZAogICAgIC8vIGRlYWRsb2NrIGJlY2F1c2UgaXQncyBhbHJlYWR5IHRha2VuIHdoaWxlIGhhbmRs
aW5nIFhQQyBtZXNzYWdlcy4KICAgICBOU1N0cmluZyAqcmVxdWVzdGVkU2Vzc2lvbklkZW50aWZp
ZXIgPSBzZXNzaW9uSWRlbnRpZmllcjsKLSAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3Ro
aXMsIHJlcXVlc3RlZFNlc3Npb25JZGVudGlmaWVyID0gcmV0YWluUHRyKHJlcXVlc3RlZFNlc3Np
b25JZGVudGlmaWVyKSwgY29uZmlndXJhdGlvbiA9IHJldGFpblB0cihjb25maWd1cmF0aW9uKV0g
eworICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbdGhpcywgcmVxdWVzdGVkU2Vzc2lvbklk
ZW50aWZpZXIgPSByZXRhaW5QdHIocmVxdWVzdGVkU2Vzc2lvbklkZW50aWZpZXIpLCBjb25maWd1
cmF0aW9uID0gV1RGTW92ZShjb25maWd1cmF0aW9uKV0gewogICAgICAgICBpZiAobV9kZWxlZ2F0
ZU1ldGhvZHMucmVxdWVzdEF1dG9tYXRpb25TZXNzaW9uKQogICAgICAgICAgICAgW21fZGVsZWdh
dGUuZ2V0KCkgX3Byb2Nlc3NQb29sOm1fcHJvY2Vzc1Bvb2wgZGlkUmVxdWVzdEF1dG9tYXRpb25T
ZXNzaW9uV2l0aElkZW50aWZpZXI6cmVxdWVzdGVkU2Vzc2lvbklkZW50aWZpZXIuZ2V0KCkgY29u
ZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXTsKICAgICB9KTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NhZmVCcm93c2luZ1dhcm5pbmdDb2NvYS5tbSBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NhZmVCcm93c2luZ1dhcm5pbmdDb2NvYS5t
bQppbmRleCA4YTk5ZWM0ZDE3OGRiMGViYmY0YTNmYzBkOWI2ZjAzYTgxYjU1NzIyLi5mMWVmYTQx
NzBkNjM3M2IxZWYyNzY1NTY4ZGYyMTM5Yjk2MjhhYmM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9TYWZlQnJvd3NpbmdXYXJuaW5nQ29jb2EubW0KKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU2FmZUJyb3dzaW5nV2FybmluZ0NvY29hLm1tCkBA
IC03MywxMiArNzMsMTIgQEAgc3RhdGljIHZvaWQgcmVwbGFjZShOU011dGFibGVBdHRyaWJ1dGVk
U3RyaW5nICpzdHJpbmcsIE5TU3RyaW5nICp0b1JlcGxhY2UsIE5TU3QKIAogc3RhdGljIHZvaWQg
YWRkTGlua0FuZFJlcGxhY2UoTlNNdXRhYmxlQXR0cmlidXRlZFN0cmluZyAqc3RyaW5nLCBOU1N0
cmluZyAqdG9SZXBsYWNlLCBOU1N0cmluZyAqcmVwbGFjZVdpdGgsIE5TVVJMICpsaW5rVGFyZ2V0
KQogewotICAgIE5TTXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcgKnN0cmluZ1dpdGhMaW5rID0gW1tb
TlNNdXRhYmxlQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhTdHJpbmc6cmVwbGFjZVdp
dGhdIGF1dG9yZWxlYXNlXTsKKyAgICBhdXRvIHN0cmluZ1dpdGhMaW5rID0gYWRvcHROUyhbW05T
TXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoU3RyaW5nOnJlcGxhY2VXaXRo
XSk7CiAgICAgW3N0cmluZ1dpdGhMaW5rIGFkZEF0dHJpYnV0ZXM6QHsKICAgICAgICAgTlNMaW5r
QXR0cmlidXRlTmFtZTogbGlua1RhcmdldCwKICAgICAgICAgTlNVbmRlcmxpbmVTdHlsZUF0dHJp
YnV0ZU5hbWU6IEAxCiAgICAgfSByYW5nZTpOU01ha2VSYW5nZSgwLCByZXBsYWNlV2l0aC5sZW5n
dGgpXTsKLSAgICBbc3RyaW5nIHJlcGxhY2VDaGFyYWN0ZXJzSW5SYW5nZTpbc3RyaW5nLnN0cmlu
ZyByYW5nZU9mU3RyaW5nOnRvUmVwbGFjZV0gd2l0aEF0dHJpYnV0ZWRTdHJpbmc6c3RyaW5nV2l0
aExpbmtdOworICAgIFtzdHJpbmcgcmVwbGFjZUNoYXJhY3RlcnNJblJhbmdlOltzdHJpbmcuc3Ry
aW5nIHJhbmdlT2ZTdHJpbmc6dG9SZXBsYWNlXSB3aXRoQXR0cmlidXRlZFN0cmluZzpzdHJpbmdX
aXRoTGluay5nZXQoKV07CiB9CiAKIHN0YXRpYyBOU1VSTCAqcmVwb3J0QW5FcnJvclVSTChjb25z
dCBVUkwmIHVybCwgU1NCU2VydmljZUxvb2t1cFJlc3VsdCAqcmVzdWx0KQpAQCAtMTIxLDI2ICsx
MjEsMjYgQEAgc3RhdGljIE5TTXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcgKnNhZmVCcm93c2luZ0Rl
dGFpbHNUZXh0KGNvbnN0IFVSTCYgdXJsLCBTU0JTZXIKICAgICAgICAgTlNTdHJpbmcgKnJlcG9y
dEFuRXJyb3IgPSBXRUJfVUlfTlNTVFJJTkcoQCJyZXBvcnQgYW4gZXJyb3IiLCAiQWN0aW9uIGZy
b20gc2FmZSBicm93c2luZyB3YXJuaW5nIik7CiAgICAgICAgIE5TU3RyaW5nICp2aXNpdFVuc2Fm
ZVdlYnNpdGUgPSBXRUJfVUlfTlNTVFJJTkcoQCJ2aXNpdCB0aGlzIHVuc2FmZSB3ZWJzaXRlIiwg
IkFjdGlvbiBmcm9tIHNhZmUgYnJvd3Npbmcgd2FybmluZyIpOwogCi0gICAgICAgIE5TTXV0YWJs
ZUF0dHJpYnV0ZWRTdHJpbmcgKmF0dHJpYnV0ZWRTdHJpbmcgPSBbW1tOU011dGFibGVBdHRyaWJ1
dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFN0cmluZzpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1h
dDpAIiVAICVAXG5cbiVAIiwgcGhpc2hpbmdEZXNjcmlwdGlvbiwgbGVhcm5Nb3JlLCBwaGlzaGlu
Z0FjdGlvbnNdXSBhdXRvcmVsZWFzZV07Ci0gICAgICAgIGFkZExpbmtBbmRSZXBsYWNlKGF0dHJp
YnV0ZWRTdHJpbmcsIGxlYXJuTW9yZSwgbGVhcm5Nb3JlLCBsZWFybk1vcmVVUkwocmVzdWx0KSk7
Ci0gICAgICAgIGFkZExpbmtBbmRSZXBsYWNlKGF0dHJpYnV0ZWRTdHJpbmcsIEAiJXJlcG9ydC1h
bi1lcnJvciUiLCByZXBvcnRBbkVycm9yLCByZXBvcnRBbkVycm9yVVJMKHVybCwgcmVzdWx0KSk7
Ci0gICAgICAgIGFkZExpbmtBbmRSZXBsYWNlKGF0dHJpYnV0ZWRTdHJpbmcsIEAiJWJ5cGFzcy1s
aW5rJSIsIHZpc2l0VW5zYWZlV2Vic2l0ZSwgU2FmZUJyb3dzaW5nV2FybmluZzo6dmlzaXRVbnNh
ZmVXZWJzaXRlU2VudGluZWwoKSk7Ci0gICAgICAgIHJldHVybiBhdHRyaWJ1dGVkU3RyaW5nOwor
ICAgICAgICBhdXRvIGF0dHJpYnV0ZWRTdHJpbmcgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXR0cmli
dXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhTdHJpbmc6W05TU3RyaW5nIHN0cmluZ1dpdGhGb3Jt
YXQ6QCIlQCAlQFxuXG4lQCIsIHBoaXNoaW5nRGVzY3JpcHRpb24sIGxlYXJuTW9yZSwgcGhpc2hp
bmdBY3Rpb25zXV0pOworICAgICAgICBhZGRMaW5rQW5kUmVwbGFjZShhdHRyaWJ1dGVkU3RyaW5n
LmdldCgpLCBsZWFybk1vcmUsIGxlYXJuTW9yZSwgbGVhcm5Nb3JlVVJMKHJlc3VsdCkpOworICAg
ICAgICBhZGRMaW5rQW5kUmVwbGFjZShhdHRyaWJ1dGVkU3RyaW5nLmdldCgpLCBAIiVyZXBvcnQt
YW4tZXJyb3IlIiwgcmVwb3J0QW5FcnJvciwgcmVwb3J0QW5FcnJvclVSTCh1cmwsIHJlc3VsdCkp
OworICAgICAgICBhZGRMaW5rQW5kUmVwbGFjZShhdHRyaWJ1dGVkU3RyaW5nLmdldCgpLCBAIiVi
eXBhc3MtbGluayUiLCB2aXNpdFVuc2FmZVdlYnNpdGUsIFNhZmVCcm93c2luZ1dhcm5pbmc6OnZp
c2l0VW5zYWZlV2Vic2l0ZVNlbnRpbmVsKCkpOworICAgICAgICByZXR1cm4gYXR0cmlidXRlZFN0
cmluZy5hdXRvcmVsZWFzZSgpOwogICAgIH0KIAogICAgIGF1dG8gbWFsd2FyZU9yVW53YW50ZWRT
b2Z0d2FyZURldGFpbHMgPSBbJl0gKE5TU3RyaW5nICpkZXNjcmlwdGlvbiwgTlNTdHJpbmcgKnN0
YXR1c1N0cmluZ1RvUmVwbGFjZSwgYm9vbCBjb25maXJtTWFsd2FyZSkgewotICAgICAgICBOU011
dGFibGVBdHRyaWJ1dGVkU3RyaW5nICptYWx3YXJlRGVzY3JpcHRpb24gPSBbW1tOU011dGFibGVB
dHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFN0cmluZzpkZXNjcmlwdGlvbl0gYXV0b3Jl
bGVhc2VdOwotICAgICAgICByZXBsYWNlKG1hbHdhcmVEZXNjcmlwdGlvbiwgQCIlc2FmZUJyb3dz
aW5nUHJvdmlkZXIlIiwgbG9jYWxpemVkUHJvdmlkZXIocmVzdWx0KSk7CisgICAgICAgIGF1dG8g
bWFsd2FyZURlc2NyaXB0aW9uID0gYWRvcHROUyhbW05TTXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcg
YWxsb2NdIGluaXRXaXRoU3RyaW5nOmRlc2NyaXB0aW9uXSk7CisgICAgICAgIHJlcGxhY2UobWFs
d2FyZURlc2NyaXB0aW9uLmdldCgpLCBAIiVzYWZlQnJvd3NpbmdQcm92aWRlciUiLCBsb2NhbGl6
ZWRQcm92aWRlcihyZXN1bHQpKTsKICAgICAgICAgTlNNdXRhYmxlQXR0cmlidXRlZFN0cmluZyAq
c3RhdHVzTGluayA9IFtbW05TTXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRo
U3RyaW5nOldFQl9VSV9OU1NUUklORyhAInRoZSBzdGF0dXMgb2Yg4oCcJXNpdGUl4oCdIiwgIlBh
cnQgb2YgbWFsd2FyZSBkZXNjcmlwdGlvbiIpXSBhdXRvcmVsZWFzZV07CiAgICAgICAgIHJlcGxh
Y2Uoc3RhdHVzTGluaywgQCIlc2l0ZSUiLCB1cmwuaG9zdCgpLnRvU3RyaW5nKCkpOwotICAgICAg
ICBhZGRMaW5rQW5kUmVwbGFjZShtYWx3YXJlRGVzY3JpcHRpb24sIHN0YXR1c1N0cmluZ1RvUmVw
bGFjZSwgc3RhdHVzTGluay5zdHJpbmcsIG1hbHdhcmVEZXRhaWxzVVJMKHVybCwgcmVzdWx0KSk7
CisgICAgICAgIGFkZExpbmtBbmRSZXBsYWNlKG1hbHdhcmVEZXNjcmlwdGlvbi5nZXQoKSwgc3Rh
dHVzU3RyaW5nVG9SZXBsYWNlLCBzdGF0dXNMaW5rLnN0cmluZywgbWFsd2FyZURldGFpbHNVUkwo
dXJsLCByZXN1bHQpKTsKIAotICAgICAgICBOU011dGFibGVBdHRyaWJ1dGVkU3RyaW5nICppZllv
dVVuZGVyc3RhbmQgPSBbW1tOU011dGFibGVBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0
aFN0cmluZzpXRUJfVUlfTlNTVFJJTkcoQCJJZiB5b3UgdW5kZXJzdGFuZCB0aGUgcmlza3MgaW52
b2x2ZWQsIHlvdSBjYW4gJXZpc2l0LXRoaXMtdW5zYWZlLXNpdGUtbGluayUuIiwgIkFjdGlvbiBm
cm9tIHNhZmUgYnJvd3Npbmcgd2FybmluZyIpXSBhdXRvcmVsZWFzZV07Ci0gICAgICAgIGFkZExp
bmtBbmRSZXBsYWNlKGlmWW91VW5kZXJzdGFuZCwgQCIldmlzaXQtdGhpcy11bnNhZmUtc2l0ZS1s
aW5rJSIsIFdFQl9VSV9OU1NUUklORyhAInZpc2l0IHRoaXMgdW5zYWZlIHdlYnNpdGUiLCAiQWN0
aW9uIGZyb20gc2FmZSBicm93c2luZyB3YXJuaW5nIiksIGNvbmZpcm1NYWx3YXJlID8gU2FmZUJy
b3dzaW5nV2FybmluZzo6Y29uZmlybU1hbHdhcmVTZW50aW5lbCgpIDogU2FmZUJyb3dzaW5nV2Fy
bmluZzo6dmlzaXRVbnNhZmVXZWJzaXRlU2VudGluZWwoKSk7CisgICAgICAgIGF1dG8gaWZZb3VV
bmRlcnN0YW5kID0gYWRvcHROUyhbW05TTXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGlu
aXRXaXRoU3RyaW5nOldFQl9VSV9OU1NUUklORyhAIklmIHlvdSB1bmRlcnN0YW5kIHRoZSByaXNr
cyBpbnZvbHZlZCwgeW91IGNhbiAldmlzaXQtdGhpcy11bnNhZmUtc2l0ZS1saW5rJS4iLCAiQWN0
aW9uIGZyb20gc2FmZSBicm93c2luZyB3YXJuaW5nIildKTsKKyAgICAgICAgYWRkTGlua0FuZFJl
cGxhY2UoaWZZb3VVbmRlcnN0YW5kLmdldCgpLCBAIiV2aXNpdC10aGlzLXVuc2FmZS1zaXRlLWxp
bmslIiwgV0VCX1VJX05TU1RSSU5HKEAidmlzaXQgdGhpcyB1bnNhZmUgd2Vic2l0ZSIsICJBY3Rp
b24gZnJvbSBzYWZlIGJyb3dzaW5nIHdhcm5pbmciKSwgY29uZmlybU1hbHdhcmUgPyBTYWZlQnJv
d3NpbmdXYXJuaW5nOjpjb25maXJtTWFsd2FyZVNlbnRpbmVsKCkgOiBTYWZlQnJvd3NpbmdXYXJu
aW5nOjp2aXNpdFVuc2FmZVdlYnNpdGVTZW50aW5lbCgpKTsKIAotICAgICAgICBbbWFsd2FyZURl
c2NyaXB0aW9uIGFwcGVuZEF0dHJpYnV0ZWRTdHJpbmc6W1tbTlNNdXRhYmxlQXR0cmlidXRlZFN0
cmluZyBhbGxvY10gaW5pdFdpdGhTdHJpbmc6QCJcblxuIl0gYXV0b3JlbGVhc2VdXTsKLSAgICAg
ICAgW21hbHdhcmVEZXNjcmlwdGlvbiBhcHBlbmRBdHRyaWJ1dGVkU3RyaW5nOmlmWW91VW5kZXJz
dGFuZF07Ci0gICAgICAgIHJldHVybiBtYWx3YXJlRGVzY3JpcHRpb247CisgICAgICAgIFttYWx3
YXJlRGVzY3JpcHRpb24gYXBwZW5kQXR0cmlidXRlZFN0cmluZzphZG9wdE5TKFtbTlNNdXRhYmxl
QXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhTdHJpbmc6QCJcblxuIl0pLmdldCgpXTsK
KyAgICAgICAgW21hbHdhcmVEZXNjcmlwdGlvbiBhcHBlbmRBdHRyaWJ1dGVkU3RyaW5nOmlmWW91
VW5kZXJzdGFuZC5nZXQoKV07CisgICAgICAgIHJldHVybiBtYWx3YXJlRGVzY3JpcHRpb24uYXV0
b3JlbGVhc2UoKTsKICAgICB9OwogCiAgICAgaWYgKHJlc3VsdC5pc01hbHdhcmUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TeXN0ZW1QcmV2aWV3Q29udHJvbGxl
ckNvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU3lzdGVtUHJldmlld0Nv
bnRyb2xsZXJDb2NvYS5tbQppbmRleCAzNzA1YTQ3NWI3M2QyNTgwMTc0ZmQ2YmE0MTRlZTY0NzU4
NTExZTQzLi5iZDRlNmJmYjczMTg1MDc1OTVhYzRmODEwNWYwM2U3NTliNmQxZGE3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TeXN0ZW1QcmV2aWV3Q29udHJvbGxl
ckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1N5c3RlbVByZXZp
ZXdDb250cm9sbGVyQ29jb2EubW0KQEAgLTIzNyw3ICsyMzcsNyBAQCAtIChVSUltYWdlICopcHJl
dmlld0NvbnRyb2xsZXI6KFFMUHJldmlld0NvbnRyb2xsZXIgKiljb250cm9sbGVyIHRyYW5zaXRp
b25JbWFnZQogICAgICAgICB9CiAgICAgfQogCi0gICAgcmV0dXJuIFtbVUlJbWFnZSBuZXddIGF1
dG9yZWxlYXNlXTsKKyAgICByZXR1cm4gYWRvcHROUyhbVUlJbWFnZSBuZXddKS5hdXRvcmVsZWFz
ZSgpOwogfQogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkubW0KaW5kZXggNWM5ZjAzNTc3ZTEz
MGI0OTE4ZDQ4M2YwYTQ1NjgzZTU0YjlkYTE1MC4uMzgxYmIxYjA0NzJkMTUzYjQ4YWFkMjhmNGMw
MmI3ZGQyYjM5OTMxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5tbQpAQCAtNjEsNyArNjEsNyBA
QCArIChDbGFzcylsYXllckNsYXNzIHsKICNlbHNlCiAtIChDQUxheWVyICopbWFrZUJhY2tpbmdM
YXllcgogewotICAgIHJldHVybiBbW1tDQUxheWVySG9zdCBhbGxvY10gaW5pdF0gYXV0b3JlbGVh
c2VdOworICAgIHJldHVybiBhZG9wdE5TKFtbQ0FMYXllckhvc3QgYWxsb2NdIGluaXRdKS5hdXRv
cmVsZWFzZSgpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1dLQ29udGFjdFBpY2tlci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1dLQ29udGFjdFBpY2tlci5tbQppbmRleCBlZjM1ZGEyOTkyM2EwZGE2ODkwNmNkNDI1ZTAx
MTZjN2ZlZTU5ZDIxLi45MGQ3ZWE0ZDVhZmQ3MzM2MGMzNmVlNzVlOGRkYjk4ZGI4NDE4NDhlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XS0NvbnRhY3RQaWNrZXIu
bW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV0tDb250YWN0UGlja2VyLm1t
CkBAIC0yNjAsMTIgKzI2MCwxMiBAQCAtIChOU0FycmF5PENOQ29udGFjdCo+ICopX2NvbnRhY3Rz
RnJvbUpTQ29udGFjdHM6KE5TQXJyYXkgKilqc0NvbnRhY3RzCiAgICAgICAgIGlmICghW2pzQ29u
dGFjdCBpc0tpbmRPZkNsYXNzOltOU0RpY3Rpb25hcnkgY2xhc3NdXSkKICAgICAgICAgICAgIGNv
bnRpbnVlOwogCi0gICAgICAgIENOTXV0YWJsZUNvbnRhY3QgKmNvbnRhY3QgPSBbW2FsbG9jQ05N
dXRhYmxlQ29udGFjdEluc3RhbmNlKCkgaW5pdF0gYXV0b3JlbGVhc2VdOworICAgICAgICBhdXRv
IGNvbnRhY3QgPSBhZG9wdE5TKFthbGxvY0NOTXV0YWJsZUNvbnRhY3RJbnN0YW5jZSgpIGluaXRd
KTsKIAogICAgICAgICBpZCBuYW1lcyA9IFsoTlNEaWN0aW9uYXJ5ICopanNDb250YWN0IG9iamVj
dEZvcktleTpAIm5hbWUiXTsKICAgICAgICAgaWYgKFtuYW1lcyBpc0tpbmRPZkNsYXNzOltOU0Fy
cmF5IGNsYXNzXV0pIHsKICAgICAgICAgICAgIGZvciAoTlNTdHJpbmcgKm5hbWUgaW4gW25hbWVz
IGZpbHRlcmVkQXJyYXlVc2luZ1ByZWRpY2F0ZTpzdHJpbmdWYWx1ZVByZWRpY2F0ZV0pIHsKLSAg
ICAgICAgICAgICAgICBjb250YWN0LmdpdmVuTmFtZSA9IG5hbWU7CisgICAgICAgICAgICAgICAg
W2NvbnRhY3Qgc2V0R2l2ZW5OYW1lOm5hbWVdOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgfQogICAgICAgICB9CkBAIC0yNzcsNyArMjc3LDcgQEAgLSAoTlNBcnJheTxDTkNv
bnRhY3QqPiAqKV9jb250YWN0c0Zyb21KU0NvbnRhY3RzOihOU0FycmF5ICopanNDb250YWN0cwog
ICAgICAgICAgICAgICAgIENOTGFiZWxlZFZhbHVlPE5TU3RyaW5nKj4gKmxhYmVsZWRWYWx1ZSA9
IFtnZXRDTkxhYmVsZWRWYWx1ZUNsYXNzKCkgbGFiZWxlZFZhbHVlV2l0aExhYmVsOm5pbCB2YWx1
ZTplbWFpbF07CiAgICAgICAgICAgICAgICAgW2VtYWlsQWRkcmVzc2VzIGFkZE9iamVjdDpsYWJl
bGVkVmFsdWVdOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgY29udGFjdC5lbWFpbEFkZHJl
c3NlcyA9IGVtYWlsQWRkcmVzc2VzOworICAgICAgICAgICAgW2NvbnRhY3Qgc2V0RW1haWxBZGRy
ZXNzZXM6ZW1haWxBZGRyZXNzZXNdOwogICAgICAgICB9CiAKICAgICAgICAgaWQgcGhvbmVOdW1i
ZXJzID0gWyhOU0RpY3Rpb25hcnkgKilqc0NvbnRhY3Qgb2JqZWN0Rm9yS2V5OkAidGVsIl07CkBA
IC0yODgsMTAgKzI4OCwxMCBAQCAtIChOU0FycmF5PENOQ29udGFjdCo+ICopX2NvbnRhY3RzRnJv
bUpTQ29udGFjdHM6KE5TQXJyYXkgKilqc0NvbnRhY3RzCiAgICAgICAgICAgICAgICAgQ05MYWJl
bGVkVmFsdWU8Q05QaG9uZU51bWJlcio+ICpsYWJlbGVkVmFsdWUgPSBbZ2V0Q05MYWJlbGVkVmFs
dWVDbGFzcygpIGxhYmVsZWRWYWx1ZVdpdGhMYWJlbDpuaWwgdmFsdWU6Y25QaG9uZU51bWJlcl07
CiAgICAgICAgICAgICAgICAgW251bWJlcnMgYWRkT2JqZWN0OmxhYmVsZWRWYWx1ZV07CiAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICBjb250YWN0LnBob25lTnVtYmVycyA9IG51bWJlcnM7Cisg
ICAgICAgICAgICBbY29udGFjdCBzZXRQaG9uZU51bWJlcnM6bnVtYmVyc107CiAgICAgICAgIH0K
IAotICAgICAgICBbY29udGFjdHMgYWRkT2JqZWN0OmNvbnRhY3RdOworICAgICAgICBbY29udGFj
dHMgYWRkT2JqZWN0OmNvbnRhY3QuYXV0b3JlbGVhc2UoKV07CiAgICAgfQogCiAgICAgcmV0dXJu
IGNvbnRhY3RzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV0tT
YWZlQnJvd3NpbmdXYXJuaW5nLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV0tT
YWZlQnJvd3NpbmdXYXJuaW5nLm1tCmluZGV4IDcyMTZjOTgxMDQwNDllZjAyYTU0Zjg2M2NhMzZl
YzljZjc1ZTc0MmEuLmY2YmMzYTQ2MGI1ODc4NjIzZmI3ZTlmMTA3YTcwMmU1N2Q1NTVjZjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dLU2FmZUJyb3dzaW5nV2Fy
bmluZy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XS1NhZmVCcm93c2lu
Z1dhcm5pbmcubW0KQEAgLTIyMSwxMyArMjIxLDEzIEBAIHN0YXRpYyBCdXR0b25UeXBlICptYWtl
QnV0dG9uKFdhcm5pbmdJdGVtIGl0ZW0sIFdLU2FmZUJyb3dzaW5nV2FybmluZyAqd2FybmluZywK
ICAgICByZXR1cm4gW05TQnV0dG9uIGJ1dHRvbldpdGhUaXRsZTp0aXRsZSB0YXJnZXQ6d2Fybmlu
ZyBhY3Rpb246YWN0aW9uXTsKICNlbHNlCiAgICAgVUlCdXR0b24gKmJ1dHRvbiA9IFtVSUJ1dHRv
biBidXR0b25XaXRoVHlwZTpVSUJ1dHRvblR5cGVTeXN0ZW1dOwotICAgIE5TQXR0cmlidXRlZFN0
cmluZyAqYXR0cmlidXRlZFRpdGxlID0gW1tbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0
V2l0aFN0cmluZzp0aXRsZSBhdHRyaWJ1dGVzOkB7CisgICAgYXV0byBhdHRyaWJ1dGVkVGl0bGUg
PSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFN0cmluZzp0aXRs
ZSBhdHRyaWJ1dGVzOkB7CiAgICAgICAgIE5TVW5kZXJsaW5lU3R5bGVBdHRyaWJ1dGVOYW1lOkAo
TlNVbmRlcmxpbmVTdHlsZVNpbmdsZSksCiAgICAgICAgIE5TVW5kZXJsaW5lQ29sb3JBdHRyaWJ1
dGVOYW1lOltVSUNvbG9yIHdoaXRlQ29sb3JdLAogICAgICAgICBOU0ZvcmVncm91bmRDb2xvckF0
dHJpYnV0ZU5hbWU6Y29sb3JGb3JJdGVtKGl0ZW0sIHdhcm5pbmcpLAogICAgICAgICBOU0ZvbnRB
dHRyaWJ1dGVOYW1lOmZvbnRPZlNpemUoV2FybmluZ1RleHRTaXplOjpCb2R5KQotICAgIH1dIGF1
dG9yZWxlYXNlXTsKLSAgICBbYnV0dG9uIHNldEF0dHJpYnV0ZWRUaXRsZTphdHRyaWJ1dGVkVGl0
bGUgZm9yU3RhdGU6VUlDb250cm9sU3RhdGVOb3JtYWxdOworICAgIH1dKTsKKyAgICBbYnV0dG9u
IHNldEF0dHJpYnV0ZWRUaXRsZTphdHRyaWJ1dGVkVGl0bGUuZ2V0KCkgZm9yU3RhdGU6VUlDb250
cm9sU3RhdGVOb3JtYWxdOwogICAgIFtidXR0b24gYWRkVGFyZ2V0Ondhcm5pbmcgYWN0aW9uOmFj
dGlvbiBmb3JDb250cm9sRXZlbnRzOlVJQ29udHJvbEV2ZW50VG91Y2hVcEluc2lkZV07CiAgICAg
cmV0dXJuIGJ1dHRvbjsKICNlbmRpZgpAQCAtMjQ0LDE2ICsyNDQsMTYgQEAgc3RhdGljIENHU2l6
ZSBidXR0b25TaXplKEJ1dHRvblR5cGUgKmJ1dHRvbikKIH0KICNlbmRpZgogCi1zdGF0aWMgVmll
d1R5cGUgKm1ha2VMYWJlbChOU0F0dHJpYnV0ZWRTdHJpbmcgKmF0dHJpYnV0ZWRTdHJpbmcpCitz
dGF0aWMgUmV0YWluUHRyPFZpZXdUeXBlPiBtYWtlTGFiZWwoTlNBdHRyaWJ1dGVkU3RyaW5nICph
dHRyaWJ1dGVkU3RyaW5nKQogewogI2lmIFBMQVRGT1JNKE1BQykKICAgICByZXR1cm4gW05TVGV4
dEZpZWxkIGxhYmVsV2l0aEF0dHJpYnV0ZWRTdHJpbmc6YXR0cmlidXRlZFN0cmluZ107CiAjZWxz
ZQotICAgIGF1dG8gbGFiZWwgPSBbW1VJTGFiZWwgbmV3XSBhdXRvcmVsZWFzZV07Ci0gICAgbGFi
ZWwuYXR0cmlidXRlZFRleHQgPSBhdHRyaWJ1dGVkU3RyaW5nOwotICAgIGxhYmVsLmxpbmVCcmVh
a01vZGUgPSBOU0xpbmVCcmVha0J5V29yZFdyYXBwaW5nOwotICAgIGxhYmVsLm51bWJlck9mTGlu
ZXMgPSAwOwotICAgIGxhYmVsLmFjY2Vzc2liaWxpdHlUcmFpdHMgPSBVSUFjY2Vzc2liaWxpdHlU
cmFpdEhlYWRlcjsKKyAgICBhdXRvIGxhYmVsID0gYWRvcHROUyhbVUlMYWJlbCBuZXddKTsKKyAg
ICBbbGFiZWwgc2V0QXR0cmlidXRlZFRleHQ6YXR0cmlidXRlZFN0cmluZ107CisgICAgW2xhYmVs
IHNldExpbmVCcmVha01vZGU6TlNMaW5lQnJlYWtCeVdvcmRXcmFwcGluZ107CisgICAgW2xhYmVs
IHNldE51bWJlck9mTGluZXM6MF07CisgICAgW2xhYmVsIHNldEFjY2Vzc2liaWxpdHlUcmFpdHM6
VUlBY2Nlc3NpYmlsaXR5VHJhaXRIZWFkZXJdOwogICAgIHJldHVybiBsYWJlbDsKICNlbmRpZgog
fQpAQCAtMzE3LDgzICszMTcsODMgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRnJhbWU6KFJl
Y3RUeXBlKWZyYW1lIHNhZmVCcm93c2luZ1dhcm5pbmc6KGNvbnN0IFdlYktpdDoKIAogLSAodm9p
ZClhZGRDb250ZW50CiB7Ci0gICAgYXV0byBleGNsYW1hdGlvblBvaW50ID0gW1tXS1NhZmVCcm93
c2luZ0V4Y2xhbWF0aW9uUG9pbnQgbmV3XSBhdXRvcmVsZWFzZV07Ci0gICAgYXV0byB0aXRsZSA9
IG1ha2VMYWJlbChbW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoU3RyaW5nOl93
YXJuaW5nLT50aXRsZSgpIGF0dHJpYnV0ZXM6QHsKKyAgICBhdXRvIGV4Y2xhbWF0aW9uUG9pbnQg
PSBhZG9wdE5TKFtXS1NhZmVCcm93c2luZ0V4Y2xhbWF0aW9uUG9pbnQgbmV3XSk7CisgICAgYXV0
byB0aXRsZSA9IG1ha2VMYWJlbChhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBp
bml0V2l0aFN0cmluZzpfd2FybmluZy0+dGl0bGUoKSBhdHRyaWJ1dGVzOkB7CiAgICAgICAgIE5T
Rm9udEF0dHJpYnV0ZU5hbWU6Zm9udE9mU2l6ZShXYXJuaW5nVGV4dFNpemU6OlRpdGxlKSwKICAg
ICAgICAgTlNGb3JlZ3JvdW5kQ29sb3JBdHRyaWJ1dGVOYW1lOmNvbG9yRm9ySXRlbShXYXJuaW5n
SXRlbTo6VGl0bGVUZXh0LCBzZWxmKQogI2lmIFBMQVRGT1JNKFdBVENIT1MpCiAgICAgICAgICwg
TlNIeXBoZW5hdGlvbkZhY3RvckRvY3VtZW50QXR0cmlidXRlOkAxCiAjZW5kaWYKLSAgICB9XSBh
dXRvcmVsZWFzZV0pOwotICAgIGF1dG8gd2FybmluZyA9IG1ha2VMYWJlbChbW1tOU0F0dHJpYnV0
ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoU3RyaW5nOl93YXJuaW5nLT53YXJuaW5nKCkgYXR0cmli
dXRlczpAeworICAgIH1dKS5nZXQoKSk7CisgICAgYXV0byB3YXJuaW5nID0gbWFrZUxhYmVsKGFk
b3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoU3RyaW5nOl93YXJuaW5n
LT53YXJuaW5nKCkgYXR0cmlidXRlczpAewogICAgICAgICBOU0ZvbnRBdHRyaWJ1dGVOYW1lOmZv
bnRPZlNpemUoV2FybmluZ1RleHRTaXplOjpCb2R5KSwKICAgICAgICAgTlNGb3JlZ3JvdW5kQ29s
b3JBdHRyaWJ1dGVOYW1lOmNvbG9yRm9ySXRlbShXYXJuaW5nSXRlbTo6TWVzc2FnZVRleHQsIHNl
bGYpCiAjaWYgUExBVEZPUk0oV0FUQ0hPUykKICAgICAgICAgLCBOU0h5cGhlbmF0aW9uRmFjdG9y
RG9jdW1lbnRBdHRyaWJ1dGU6QDEKICNlbmRpZgotICAgIH1dIGF1dG9yZWxlYXNlXSk7CisgICAg
fV0pLmdldCgpKTsKICAgICBhdXRvIHNob3dEZXRhaWxzID0gbWFrZUJ1dHRvbihXYXJuaW5nSXRl
bTo6U2hvd0RldGFpbHNCdXR0b24sIHNlbGYsIEBzZWxlY3RvcihzaG93RGV0YWlsc0NsaWNrZWQp
KTsKICAgICBhdXRvIGdvQmFjayA9IG1ha2VCdXR0b24oV2FybmluZ0l0ZW06OkdvQmFja0J1dHRv
biwgc2VsZiwgQHNlbGVjdG9yKGdvQmFja0NsaWNrZWQpKTsKLSAgICBhdXRvIGJveCA9IFtbV0tT
YWZlQnJvd3NpbmdCb3ggbmV3XSBhdXRvcmVsZWFzZV07Ci0gICAgX2JveCA9IGJveDsKKyAgICBh
dXRvIGJveCA9IGFkb3B0TlMoW1dLU2FmZUJyb3dzaW5nQm94IG5ld10pOworICAgIF9ib3ggPSBi
b3guZ2V0KCk7CiAgICAgW2JveCBzZXRTYWZlQnJvd3NpbmdCYWNrZ3JvdW5kQ29sb3I6Y29sb3JG
b3JJdGVtKFdhcm5pbmdJdGVtOjpCb3hCYWNrZ3JvdW5kLCBzZWxmKV07Ci0gICAgYm94LmxheWVy
LmNvcm5lclJhZGl1cyA9IGJveENvcm5lclJhZGl1czsKKyAgICBbYm94IGxheWVyXS5jb3JuZXJS
YWRpdXMgPSBib3hDb3JuZXJSYWRpdXM7CiAKLSAgICBmb3IgKFZpZXdUeXBlICp2aWV3IGluIEBb
ZXhjbGFtYXRpb25Qb2ludCwgdGl0bGUsIHdhcm5pbmcsIGdvQmFjaywgc2hvd0RldGFpbHNdKSB7
CisgICAgZm9yIChWaWV3VHlwZSAqdmlldyBpbiBAW2V4Y2xhbWF0aW9uUG9pbnQuZ2V0KCksIHRp
dGxlLmdldCgpLCB3YXJuaW5nLmdldCgpLCBnb0JhY2ssIHNob3dEZXRhaWxzXSkgewogICAgICAg
ICB2aWV3LnRyYW5zbGF0ZXNBdXRvcmVzaXppbmdNYXNrSW50b0NvbnN0cmFpbnRzID0gTk87CiAg
ICAgICAgIFtib3ggYWRkU3Vidmlldzp2aWV3XTsKICAgICB9Ci0gICAgYm94LnRyYW5zbGF0ZXNB
dXRvcmVzaXppbmdNYXNrSW50b0NvbnN0cmFpbnRzID0gTk87Ci0gICAgW3NlbGYgYWRkU3Vidmll
dzpib3hdOworICAgIFtib3ggc2V0VHJhbnNsYXRlc0F1dG9yZXNpemluZ01hc2tJbnRvQ29uc3Ry
YWludHM6Tk9dOworICAgIFtzZWxmIGFkZFN1YnZpZXc6Ym94LmdldCgpXTsKIAogI2lmIFBMQVRG
T1JNKFdBVENIT1MpCiAgICAgW05TTGF5b3V0Q29uc3RyYWludCBhY3RpdmF0ZUNvbnN0cmFpbnRz
OkBbCi0gICAgICAgIFtbYm94LmxlYWRpbmdBbmNob3IgYW5jaG9yV2l0aE9mZnNldFRvQW5jaG9y
OmV4Y2xhbWF0aW9uUG9pbnQubGVhZGluZ0FuY2hvcl0gY29uc3RyYWludEVxdWFsVG9BbmNob3I6
W2V4Y2xhbWF0aW9uUG9pbnQudHJhaWxpbmdBbmNob3IgYW5jaG9yV2l0aE9mZnNldFRvQW5jaG9y
OmJveC50cmFpbGluZ0FuY2hvcl1dLAotICAgICAgICBbW2JveC5sZWFkaW5nQW5jaG9yIGFuY2hv
cldpdGhPZmZzZXRUb0FuY2hvcjp0aXRsZS5sZWFkaW5nQW5jaG9yXSBjb25zdHJhaW50RXF1YWxU
b0NvbnN0YW50Om1hcmdpblNpemVdLAotICAgICAgICBbW3RpdGxlLmJvdHRvbUFuY2hvciBhbmNo
b3JXaXRoT2Zmc2V0VG9BbmNob3I6d2FybmluZy50b3BBbmNob3JdIGNvbnN0cmFpbnRFcXVhbFRv
Q29uc3RhbnQ6bWFyZ2luU2l6ZV0sCi0gICAgICAgIFtbZXhjbGFtYXRpb25Qb2ludC5ib3R0b21B
bmNob3IgYW5jaG9yV2l0aE9mZnNldFRvQW5jaG9yOnRpdGxlLnRvcEFuY2hvcl0gY29uc3RyYWlu
dEVxdWFsVG9Db25zdGFudDptYXJnaW5TaXplXSwKLSAgICAgICAgW1tib3gudG9wQW5jaG9yIGFu
Y2hvcldpdGhPZmZzZXRUb0FuY2hvcjpleGNsYW1hdGlvblBvaW50LnRvcEFuY2hvcl0gY29uc3Ry
YWludEVxdWFsVG9Db25zdGFudDptYXJnaW5TaXplICsgc2VsZi5mcmFtZS5zaXplLmhlaWdodCAv
IDJdLAotICAgICAgICBbW3NlbGYudG9wQW5jaG9yIGFuY2hvcldpdGhPZmZzZXRUb0FuY2hvcjpi
b3gudG9wQW5jaG9yXSBjb25zdHJhaW50RXF1YWxUb0FuY2hvcjpbYm94LmJvdHRvbUFuY2hvciBh
bmNob3JXaXRoT2Zmc2V0VG9BbmNob3I6c2VsZi5ib3R0b21BbmNob3JdIG11bHRpcGxpZXI6MC4y
XSwKKyAgICAgICAgW1tbYm94IGxlYWRpbmdBbmNob3JdIGFuY2hvcldpdGhPZmZzZXRUb0FuY2hv
cjpbZXhjbGFtYXRpb25Qb2ludCBsZWFkaW5nQW5jaG9yXV0gY29uc3RyYWludEVxdWFsVG9BbmNo
b3I6W1tleGNsYW1hdGlvblBvaW50IHRyYWlsaW5nQW5jaG9yXSBhbmNob3JXaXRoT2Zmc2V0VG9B
bmNob3I6W2JveCB0cmFpbGluZ0FuY2hvcl1dXSwKKyAgICAgICAgW1tbYm94IGxlYWRpbmdBbmNo
b3JdIGFuY2hvcldpdGhPZmZzZXRUb0FuY2hvcjpbdGl0bGUgbGVhZGluZ0FuY2hvcl1dIGNvbnN0
cmFpbnRFcXVhbFRvQ29uc3RhbnQ6bWFyZ2luU2l6ZV0sCisgICAgICAgIFtbW3RpdGxlIGJvdHRv
bUFuY2hvcl0gYW5jaG9yV2l0aE9mZnNldFRvQW5jaG9yOlt3YXJuaW5nIHRvcEFuY2hvcl1dIGNv
bnN0cmFpbnRFcXVhbFRvQ29uc3RhbnQ6bWFyZ2luU2l6ZV0sCisgICAgICAgIFtbW2V4Y2xhbWF0
aW9uUG9pbnQgYm90dG9tQW5jaG9yXSBhbmNob3JXaXRoT2Zmc2V0VG9BbmNob3I6W3RpdGxlIHRv
cEFuY2hvcl1dIGNvbnN0cmFpbnRFcXVhbFRvQ29uc3RhbnQ6bWFyZ2luU2l6ZV0sCisgICAgICAg
IFtbW2JveCB0b3BBbmNob3JdIGFuY2hvcldpdGhPZmZzZXRUb0FuY2hvcjpbZXhjbGFtYXRpb25Q
b2ludCB0b3BBbmNob3JdXSBjb25zdHJhaW50RXF1YWxUb0NvbnN0YW50Om1hcmdpblNpemUgKyBz
ZWxmLmZyYW1lLnNpemUuaGVpZ2h0IC8gMl0sCisgICAgICAgIFtbc2VsZi50b3BBbmNob3IgYW5j
aG9yV2l0aE9mZnNldFRvQW5jaG9yOltib3ggdG9wQW5jaG9yXV0gY29uc3RyYWludEVxdWFsVG9B
bmNob3I6W1tib3ggYm90dG9tQW5jaG9yXSBhbmNob3JXaXRoT2Zmc2V0VG9BbmNob3I6c2VsZi5i
b3R0b21BbmNob3JdIG11bHRpcGxpZXI6MC4yXSwKICAgICBdXTsKICNlbGlmIEhBVkUoU0FGRV9C
Uk9XU0lORykKICAgICBbTlNMYXlvdXRDb25zdHJhaW50IGFjdGl2YXRlQ29uc3RyYWludHM6QFsK
LSAgICAgICAgW1tib3gubGVhZGluZ0FuY2hvciBhbmNob3JXaXRoT2Zmc2V0VG9BbmNob3I6ZXhj
bGFtYXRpb25Qb2ludC5sZWFkaW5nQW5jaG9yXSBjb25zdHJhaW50RXF1YWxUb0NvbnN0YW50Om1h
cmdpblNpemVdLAotICAgICAgICBbW2JveC5sZWFkaW5nQW5jaG9yIGFuY2hvcldpdGhPZmZzZXRU
b0FuY2hvcjp0aXRsZS5sZWFkaW5nQW5jaG9yXSBjb25zdHJhaW50RXF1YWxUb0NvbnN0YW50Om1h
cmdpblNpemUgKiAxLjUgKyBleGNsYW1hdGlvblBvaW50U2l6ZV0sCi0gICAgICAgIFtbdGl0bGUu
dG9wQW5jaG9yIGFuY2hvcldpdGhPZmZzZXRUb0FuY2hvcjpleGNsYW1hdGlvblBvaW50LnRvcEFu
Y2hvcl0gY29uc3RyYWludEVxdWFsVG9BbmNob3I6W2V4Y2xhbWF0aW9uUG9pbnQuYm90dG9tQW5j
aG9yIGFuY2hvcldpdGhPZmZzZXRUb0FuY2hvcjp0aXRsZS5ib3R0b21BbmNob3JdXSwKLSAgICAg
ICAgW1t0aXRsZS5ib3R0b21BbmNob3IgYW5jaG9yV2l0aE9mZnNldFRvQW5jaG9yOndhcm5pbmcu
dG9wQW5jaG9yXSBjb25zdHJhaW50RXF1YWxUb0NvbnN0YW50Om1hcmdpblNpemVdLAotICAgICAg
ICBbW2JveC50b3BBbmNob3IgYW5jaG9yV2l0aE9mZnNldFRvQW5jaG9yOnRpdGxlLnRvcEFuY2hv
cl0gY29uc3RyYWludEVxdWFsVG9Db25zdGFudDptYXJnaW5TaXplXSwKLSAgICAgICAgW1tzZWxm
LnRvcEFuY2hvciBhbmNob3JXaXRoT2Zmc2V0VG9BbmNob3I6Ym94LnRvcEFuY2hvcl0gY29uc3Ry
YWludEVxdWFsVG9BbmNob3I6W2JveC5ib3R0b21BbmNob3IgYW5jaG9yV2l0aE9mZnNldFRvQW5j
aG9yOnNlbGYuYm90dG9tQW5jaG9yXSBtdWx0aXBsaWVyOjAuNV0sCisgICAgICAgIFtbW2JveCBs
ZWFkaW5nQW5jaG9yXSBhbmNob3JXaXRoT2Zmc2V0VG9BbmNob3I6W2V4Y2xhbWF0aW9uUG9pbnQg
bGVhZGluZ0FuY2hvcl1dIGNvbnN0cmFpbnRFcXVhbFRvQ29uc3RhbnQ6bWFyZ2luU2l6ZV0sCisg
ICAgICAgIFtbW2JveCBsZWFkaW5nQW5jaG9yXSBhbmNob3JXaXRoT2Zmc2V0VG9BbmNob3I6W3Rp
dGxlIGxlYWRpbmdBbmNob3JdXSBjb25zdHJhaW50RXF1YWxUb0NvbnN0YW50Om1hcmdpblNpemUg
KiAxLjUgKyBleGNsYW1hdGlvblBvaW50U2l6ZV0sCisgICAgICAgIFtbW3RpdGxlIHRvcEFuY2hv
cl0gYW5jaG9yV2l0aE9mZnNldFRvQW5jaG9yOltleGNsYW1hdGlvblBvaW50IHRvcEFuY2hvcl1d
IGNvbnN0cmFpbnRFcXVhbFRvQW5jaG9yOltbZXhjbGFtYXRpb25Qb2ludCBib3R0b21BbmNob3Jd
IGFuY2hvcldpdGhPZmZzZXRUb0FuY2hvcjpbdGl0bGUgYm90dG9tQW5jaG9yXV1dLAorICAgICAg
ICBbW1t0aXRsZSBib3R0b21BbmNob3JdIGFuY2hvcldpdGhPZmZzZXRUb0FuY2hvcjpbd2Fybmlu
ZyB0b3BBbmNob3JdXSBjb25zdHJhaW50RXF1YWxUb0NvbnN0YW50Om1hcmdpblNpemVdLAorICAg
ICAgICBbW1tib3ggdG9wQW5jaG9yXSBhbmNob3JXaXRoT2Zmc2V0VG9BbmNob3I6W3RpdGxlIHRv
cEFuY2hvcl1dIGNvbnN0cmFpbnRFcXVhbFRvQ29uc3RhbnQ6bWFyZ2luU2l6ZV0sCisgICAgICAg
IFtbc2VsZi50b3BBbmNob3IgYW5jaG9yV2l0aE9mZnNldFRvQW5jaG9yOltib3ggdG9wQW5jaG9y
XV0gY29uc3RyYWludEVxdWFsVG9BbmNob3I6W1tib3ggYm90dG9tQW5jaG9yXSBhbmNob3JXaXRo
T2Zmc2V0VG9BbmNob3I6c2VsZi5ib3R0b21BbmNob3JdIG11bHRpcGxpZXI6MC41XSwKICAgICBd
XTsKICNlbmRpZgogCiAjaWYgSEFWRShTQUZFX0JST1dTSU5HKQogICAgIFtOU0xheW91dENvbnN0
cmFpbnQgYWN0aXZhdGVDb25zdHJhaW50czpAWwotICAgICAgICBbW3NlbGYubGVmdEFuY2hvciBh
bmNob3JXaXRoT2Zmc2V0VG9BbmNob3I6Ym94LmxlZnRBbmNob3JdIGNvbnN0cmFpbnRFcXVhbFRv
QW5jaG9yOltib3gucmlnaHRBbmNob3IgYW5jaG9yV2l0aE9mZnNldFRvQW5jaG9yOnNlbGYucmln
aHRBbmNob3JdXSwKKyAgICAgICAgW1tzZWxmLmxlZnRBbmNob3IgYW5jaG9yV2l0aE9mZnNldFRv
QW5jaG9yOltib3ggbGVmdEFuY2hvcl1dIGNvbnN0cmFpbnRFcXVhbFRvQW5jaG9yOltbYm94IHJp
Z2h0QW5jaG9yXSBhbmNob3JXaXRoT2Zmc2V0VG9BbmNob3I6c2VsZi5yaWdodEFuY2hvcl1dLAog
Ci0gICAgICAgIFtib3gud2lkdGhBbmNob3IgY29uc3RyYWludExlc3NUaGFuT3JFcXVhbFRvQ29u
c3RhbnQ6bWF4V2lkdGhdLAotICAgICAgICBbYm94LndpZHRoQW5jaG9yIGNvbnN0cmFpbnRMZXNz
VGhhbk9yRXF1YWxUb0FuY2hvcjpzZWxmLndpZHRoQW5jaG9yXSwKKyAgICAgICAgW1tib3ggd2lk
dGhBbmNob3JdIGNvbnN0cmFpbnRMZXNzVGhhbk9yRXF1YWxUb0NvbnN0YW50Om1heFdpZHRoXSwK
KyAgICAgICAgW1tib3ggd2lkdGhBbmNob3JdIGNvbnN0cmFpbnRMZXNzVGhhbk9yRXF1YWxUb0Fu
Y2hvcjpzZWxmLndpZHRoQW5jaG9yXSwKIAotICAgICAgICBbW2JveC5sZWFkaW5nQW5jaG9yIGFu
Y2hvcldpdGhPZmZzZXRUb0FuY2hvcjp3YXJuaW5nLmxlYWRpbmdBbmNob3JdIGNvbnN0cmFpbnRF
cXVhbFRvQ29uc3RhbnQ6bWFyZ2luU2l6ZV0sCisgICAgICAgIFtbW2JveCBsZWFkaW5nQW5jaG9y
XSBhbmNob3JXaXRoT2Zmc2V0VG9BbmNob3I6W3dhcm5pbmcgbGVhZGluZ0FuY2hvcl1dIGNvbnN0
cmFpbnRFcXVhbFRvQ29uc3RhbnQ6bWFyZ2luU2l6ZV0sCiAKLSAgICAgICAgW1t0aXRsZS50cmFp
bGluZ0FuY2hvciBhbmNob3JXaXRoT2Zmc2V0VG9BbmNob3I6Ym94LnRyYWlsaW5nQW5jaG9yXSBj
b25zdHJhaW50R3JlYXRlclRoYW5PckVxdWFsVG9Db25zdGFudDptYXJnaW5TaXplXSwKLSAgICAg
ICAgW1t3YXJuaW5nLnRyYWlsaW5nQW5jaG9yIGFuY2hvcldpdGhPZmZzZXRUb0FuY2hvcjpib3gu
dHJhaWxpbmdBbmNob3JdIGNvbnN0cmFpbnRHcmVhdGVyVGhhbk9yRXF1YWxUb0NvbnN0YW50Om1h
cmdpblNpemVdLAotICAgICAgICBbW2dvQmFjay50cmFpbGluZ0FuY2hvciBhbmNob3JXaXRoT2Zm
c2V0VG9BbmNob3I6Ym94LnRyYWlsaW5nQW5jaG9yXSBjb25zdHJhaW50RXF1YWxUb0NvbnN0YW50
Om1hcmdpblNpemVdLAorICAgICAgICBbW1t0aXRsZSB0cmFpbGluZ0FuY2hvcl0gYW5jaG9yV2l0
aE9mZnNldFRvQW5jaG9yOltib3ggdHJhaWxpbmdBbmNob3JdXSBjb25zdHJhaW50R3JlYXRlclRo
YW5PckVxdWFsVG9Db25zdGFudDptYXJnaW5TaXplXSwKKyAgICAgICAgW1tbd2FybmluZyB0cmFp
bGluZ0FuY2hvcl0gYW5jaG9yV2l0aE9mZnNldFRvQW5jaG9yOltib3ggdHJhaWxpbmdBbmNob3Jd
XSBjb25zdHJhaW50R3JlYXRlclRoYW5PckVxdWFsVG9Db25zdGFudDptYXJnaW5TaXplXSwKKyAg
ICAgICAgW1tnb0JhY2sudHJhaWxpbmdBbmNob3IgYW5jaG9yV2l0aE9mZnNldFRvQW5jaG9yOlti
b3ggdHJhaWxpbmdBbmNob3JdXSBjb25zdHJhaW50RXF1YWxUb0NvbnN0YW50Om1hcmdpblNpemVd
LAogCi0gICAgICAgIFtbd2FybmluZy5ib3R0b21BbmNob3IgYW5jaG9yV2l0aE9mZnNldFRvQW5j
aG9yOmdvQmFjay50b3BBbmNob3JdIGNvbnN0cmFpbnRFcXVhbFRvQ29uc3RhbnQ6bWFyZ2luU2l6
ZV0sCisgICAgICAgIFtbW3dhcm5pbmcgYm90dG9tQW5jaG9yXSBhbmNob3JXaXRoT2Zmc2V0VG9B
bmNob3I6Z29CYWNrLnRvcEFuY2hvcl0gY29uc3RyYWludEVxdWFsVG9Db25zdGFudDptYXJnaW5T
aXplXSwKICAgICBdXTsKICAgICAKICAgICBib29sIG5lZWRzVmVydGljYWxCdXR0b25MYXlvdXQg
PSBidXR0b25TaXplKHNob3dEZXRhaWxzKS53aWR0aCArIGJ1dHRvblNpemUoZ29CYWNrKS53aWR0
aCArIDMgKiBtYXJnaW5TaXplID4gc2VsZi5mcmFtZS5zaXplLndpZHRoOwogICAgIGlmIChuZWVk
c1ZlcnRpY2FsQnV0dG9uTGF5b3V0KSB7CiAgICAgICAgIFtOU0xheW91dENvbnN0cmFpbnQgYWN0
aXZhdGVDb25zdHJhaW50czpAWwotICAgICAgICAgICAgW1tzaG93RGV0YWlscy50cmFpbGluZ0Fu
Y2hvciBhbmNob3JXaXRoT2Zmc2V0VG9BbmNob3I6Ym94LnRyYWlsaW5nQW5jaG9yXSBjb25zdHJh
aW50RXF1YWxUb0NvbnN0YW50Om1hcmdpblNpemVdLAorICAgICAgICAgICAgW1tzaG93RGV0YWls
cy50cmFpbGluZ0FuY2hvciBhbmNob3JXaXRoT2Zmc2V0VG9BbmNob3I6W2JveCB0cmFpbGluZ0Fu
Y2hvcl1dIGNvbnN0cmFpbnRFcXVhbFRvQ29uc3RhbnQ6bWFyZ2luU2l6ZV0sCiAgICAgICAgICAg
ICBbW2dvQmFjay5ib3R0b21BbmNob3IgYW5jaG9yV2l0aE9mZnNldFRvQW5jaG9yOnNob3dEZXRh
aWxzLnRvcEFuY2hvcl0gY29uc3RyYWludEVxdWFsVG9Db25zdGFudDptYXJnaW5TaXplXSwKLSAg
ICAgICAgICAgIFtbZ29CYWNrLmJvdHRvbUFuY2hvciBhbmNob3JXaXRoT2Zmc2V0VG9BbmNob3I6
Ym94LmJvdHRvbUFuY2hvcl0gY29uc3RyYWludEVxdWFsVG9Db25zdGFudDptYXJnaW5TaXplICog
MiArIGJ1dHRvblNpemUoc2hvd0RldGFpbHMpLmhlaWdodF0sCisgICAgICAgICAgICBbW2dvQmFj
ay5ib3R0b21BbmNob3IgYW5jaG9yV2l0aE9mZnNldFRvQW5jaG9yOltib3ggYm90dG9tQW5jaG9y
XV0gY29uc3RyYWludEVxdWFsVG9Db25zdGFudDptYXJnaW5TaXplICogMiArIGJ1dHRvblNpemUo
c2hvd0RldGFpbHMpLmhlaWdodF0sCiAgICAgICAgIF1dOwogICAgIH0gZWxzZSB7CiAgICAgICAg
IFtOU0xheW91dENvbnN0cmFpbnQgYWN0aXZhdGVDb25zdHJhaW50czpAWwogICAgICAgICAgICAg
W1tzaG93RGV0YWlscy50cmFpbGluZ0FuY2hvciBhbmNob3JXaXRoT2Zmc2V0VG9BbmNob3I6Z29C
YWNrLmxlYWRpbmdBbmNob3JdIGNvbnN0cmFpbnRFcXVhbFRvQ29uc3RhbnQ6bWFyZ2luU2l6ZV0s
CiAgICAgICAgICAgICBbZ29CYWNrLnRvcEFuY2hvciBjb25zdHJhaW50RXF1YWxUb0FuY2hvcjpz
aG93RGV0YWlscy50b3BBbmNob3JdLAotICAgICAgICAgICAgW1tnb0JhY2suYm90dG9tQW5jaG9y
IGFuY2hvcldpdGhPZmZzZXRUb0FuY2hvcjpib3guYm90dG9tQW5jaG9yXSBjb25zdHJhaW50RXF1
YWxUb0NvbnN0YW50Om1hcmdpblNpemVdLAorICAgICAgICAgICAgW1tnb0JhY2suYm90dG9tQW5j
aG9yIGFuY2hvcldpdGhPZmZzZXRUb0FuY2hvcjpbYm94IGJvdHRvbUFuY2hvcl1dIGNvbnN0cmFp
bnRFcXVhbFRvQ29uc3RhbnQ6bWFyZ2luU2l6ZV0sCiAgICAgICAgIF1dOwogICAgIH0KICNpZiAh
UExBVEZPUk0oTUFDKQpAQCAtNDEzLDQ3ICs0MTMsNDcgQEAgLSAodm9pZClzaG93RGV0YWlsc0Ns
aWNrZWQKICAgICBCdXR0b25UeXBlICpzaG93RGV0YWlscyA9IGJveC5zdWJ2aWV3cy5sYXN0T2Jq
ZWN0OwogICAgIFtzaG93RGV0YWlscyByZW1vdmVGcm9tU3VwZXJ2aWV3XTsKIAotICAgIE5TTXV0
YWJsZUF0dHJpYnV0ZWRTdHJpbmcgKnRleHQgPSBbW193YXJuaW5nLT5kZXRhaWxzKCkgbXV0YWJs
ZUNvcHldIGF1dG9yZWxlYXNlXTsKLSAgICBbdGV4dCBhZGRBdHRyaWJ1dGVzOkB7IE5TRm9udEF0
dHJpYnV0ZU5hbWU6Zm9udE9mU2l6ZShXYXJuaW5nVGV4dFNpemU6OkJvZHkpIH0gcmFuZ2U6TlNN
YWtlUmFuZ2UoMCwgdGV4dC5sZW5ndGgpXTsKLSAgICBXS1NhZmVCcm93c2luZ1RleHRWaWV3ICpk
ZXRhaWxzID0gW1tbV0tTYWZlQnJvd3NpbmdUZXh0VmlldyBhbGxvY10gaW5pdFdpdGhBdHRyaWJ1
dGVkU3RyaW5nOnRleHQgZm9yV2FybmluZzpzZWxmXSBhdXRvcmVsZWFzZV07Ci0gICAgX2RldGFp
bHMgPSBkZXRhaWxzOwotICAgIFdLU2FmZUJyb3dzaW5nQm94ICpib3R0b20gPSBbW1dLU2FmZUJy
b3dzaW5nQm94IG5ld10gYXV0b3JlbGVhc2VdOworICAgIGF1dG8gdGV4dCA9IGFkb3B0TlMoW193
YXJuaW5nLT5kZXRhaWxzKCkgbXV0YWJsZUNvcHldKTsKKyAgICBbdGV4dCBhZGRBdHRyaWJ1dGVz
OkB7IE5TRm9udEF0dHJpYnV0ZU5hbWU6Zm9udE9mU2l6ZShXYXJuaW5nVGV4dFNpemU6OkJvZHkp
IH0gcmFuZ2U6TlNNYWtlUmFuZ2UoMCwgW3RleHQgbGVuZ3RoXSldOworICAgIGF1dG8gZGV0YWls
cyA9IGFkb3B0TlMoW1tXS1NhZmVCcm93c2luZ1RleHRWaWV3IGFsbG9jXSBpbml0V2l0aEF0dHJp
YnV0ZWRTdHJpbmc6dGV4dC5nZXQoKSBmb3JXYXJuaW5nOnNlbGZdKTsKKyAgICBfZGV0YWlscyA9
IGRldGFpbHMuZ2V0KCk7CisgICAgYXV0byBib3R0b20gPSBhZG9wdE5TKFtXS1NhZmVCcm93c2lu
Z0JveCBuZXddKTsKICAgICBbYm90dG9tIHNldFNhZmVCcm93c2luZ0JhY2tncm91bmRDb2xvcjpj
b2xvckZvckl0ZW0oV2FybmluZ0l0ZW06OkJveEJhY2tncm91bmQsIHNlbGYpXTsKLSAgICBib3R0
b20ubGF5ZXIuY29ybmVyUmFkaXVzID0gYm94Q29ybmVyUmFkaXVzOworICAgIFtib3R0b20gbGF5
ZXJdLmNvcm5lclJhZGl1cyA9IGJveENvcm5lclJhZGl1czsKIAogI2lmIEhBVkUoU0FGRV9CUk9X
U0lORykKICAgICBjb25zdGV4cHIgYXV0byBtYXhZID0ga0NBTGF5ZXJNaW5YTWF4WUNvcm5lciB8
IGtDQUxheWVyTWF4WE1heFlDb3JuZXI7CiAgICAgY29uc3RleHByIGF1dG8gbWluWSA9IGtDQUxh
eWVyTWluWE1pbllDb3JuZXIgfCBrQ0FMYXllck1heFhNaW5ZQ29ybmVyOwogI2lmIFBMQVRGT1JN
KE1BQykKICAgICBib3gubGF5ZXIubWFza2VkQ29ybmVycyA9IG1heFk7Ci0gICAgYm90dG9tLmxh
eWVyLm1hc2tlZENvcm5lcnMgPSBtaW5ZOworICAgIFtib3R0b20gbGF5ZXJdLm1hc2tlZENvcm5l
cnMgPSBtaW5ZOwogI2Vsc2UKICAgICBib3gubGF5ZXIubWFza2VkQ29ybmVycyA9IG1pblk7Ci0g
ICAgYm90dG9tLmxheWVyLm1hc2tlZENvcm5lcnMgPSBtYXhZOworICAgIFtib3R0b20gbGF5ZXJd
Lm1hc2tlZENvcm5lcnMgPSBtYXhZOwogI2VuZGlmCiAjZW5kaWYKIAotICAgIFdLU2FmZUJyb3dz
aW5nQm94ICpsaW5lID0gW1tXS1NhZmVCcm93c2luZ0JveCBuZXddIGF1dG9yZWxlYXNlXTsKKyAg
ICBhdXRvIGxpbmUgPSBhZG9wdE5TKFtXS1NhZmVCcm93c2luZ0JveCBuZXddKTsKICAgICBbbGlu
ZSBzZXRTYWZlQnJvd3NpbmdCYWNrZ3JvdW5kQ29sb3I6W0NvY29hQ29sb3IgbGlnaHRHcmF5Q29s
b3JdXTsKLSAgICBmb3IgKFZpZXdUeXBlICp2aWV3IGluIEBbZGV0YWlscywgYm90dG9tLCBsaW5l
XSkKKyAgICBmb3IgKFZpZXdUeXBlICp2aWV3IGluIEBbZGV0YWlscy5nZXQoKSwgYm90dG9tLmdl
dCgpLCBsaW5lLmdldCgpXSkKICAgICAgICAgdmlldy50cmFuc2xhdGVzQXV0b3Jlc2l6aW5nTWFz
a0ludG9Db25zdHJhaW50cyA9IE5POwogCi0gICAgW3NlbGYgYWRkU3Vidmlldzpib3R0b21dOwot
ICAgIFtib3R0b20gYWRkU3VidmlldzpsaW5lXTsKLSAgICBbYm90dG9tIGFkZFN1YnZpZXc6ZGV0
YWlsc107CisgICAgW3NlbGYgYWRkU3Vidmlldzpib3R0b20uZ2V0KCldOworICAgIFtib3R0b20g
YWRkU3VidmlldzpsaW5lLmdldCgpXTsKKyAgICBbYm90dG9tIGFkZFN1YnZpZXc6ZGV0YWlscy5n
ZXQoKV07CiAjaWYgSEFWRShTQUZFX0JST1dTSU5HKQogICAgIFtOU0xheW91dENvbnN0cmFpbnQg
YWN0aXZhdGVDb25zdHJhaW50czpAWwotICAgICAgICBbYm94LndpZHRoQW5jaG9yIGNvbnN0cmFp
bnRFcXVhbFRvQW5jaG9yOmJvdHRvbS53aWR0aEFuY2hvcl0sCi0gICAgICAgIFtib3guYm90dG9t
QW5jaG9yIGNvbnN0cmFpbnRFcXVhbFRvQW5jaG9yOmJvdHRvbS50b3BBbmNob3JdLAotICAgICAg
ICBbYm94LmxlYWRpbmdBbmNob3IgY29uc3RyYWludEVxdWFsVG9BbmNob3I6Ym90dG9tLmxlYWRp
bmdBbmNob3JdLAotICAgICAgICBbbGluZS53aWR0aEFuY2hvciBjb25zdHJhaW50RXF1YWxUb0Fu
Y2hvcjpib3R0b20ud2lkdGhBbmNob3JdLAotICAgICAgICBbbGluZS5sZWFkaW5nQW5jaG9yIGNv
bnN0cmFpbnRFcXVhbFRvQW5jaG9yOmJvdHRvbS5sZWFkaW5nQW5jaG9yXSwKLSAgICAgICAgW2xp
bmUudG9wQW5jaG9yIGNvbnN0cmFpbnRFcXVhbFRvQW5jaG9yOmJvdHRvbS50b3BBbmNob3JdLAot
ICAgICAgICBbbGluZS5oZWlnaHRBbmNob3IgY29uc3RyYWludEVxdWFsVG9Db25zdGFudDoxXSwK
LSAgICAgICAgW1tib3R0b20udG9wQW5jaG9yIGFuY2hvcldpdGhPZmZzZXRUb0FuY2hvcjpkZXRh
aWxzLnRvcEFuY2hvcl0gY29uc3RyYWludEVxdWFsVG9Db25zdGFudDptYXJnaW5TaXplXSwKLSAg
ICAgICAgW1tkZXRhaWxzLmJvdHRvbUFuY2hvciBhbmNob3JXaXRoT2Zmc2V0VG9BbmNob3I6Ym90
dG9tLmJvdHRvbUFuY2hvcl0gY29uc3RyYWludEVxdWFsVG9Db25zdGFudDptYXJnaW5TaXplXSwK
LSAgICAgICAgW1tib3R0b20ubGVhZGluZ0FuY2hvciBhbmNob3JXaXRoT2Zmc2V0VG9BbmNob3I6
ZGV0YWlscy5sZWFkaW5nQW5jaG9yXSBjb25zdHJhaW50RXF1YWxUb0NvbnN0YW50Om1hcmdpblNp
emVdLAotICAgICAgICBbW2RldGFpbHMudHJhaWxpbmdBbmNob3IgYW5jaG9yV2l0aE9mZnNldFRv
QW5jaG9yOmJvdHRvbS50cmFpbGluZ0FuY2hvcl0gY29uc3RyYWludEVxdWFsVG9Db25zdGFudDpt
YXJnaW5TaXplXSwKKyAgICAgICAgW2JveC53aWR0aEFuY2hvciBjb25zdHJhaW50RXF1YWxUb0Fu
Y2hvcjpbYm90dG9tIHdpZHRoQW5jaG9yXV0sCisgICAgICAgIFtib3guYm90dG9tQW5jaG9yIGNv
bnN0cmFpbnRFcXVhbFRvQW5jaG9yOltib3R0b20gdG9wQW5jaG9yXV0sCisgICAgICAgIFtib3gu
bGVhZGluZ0FuY2hvciBjb25zdHJhaW50RXF1YWxUb0FuY2hvcjpbYm90dG9tIGxlYWRpbmdBbmNo
b3JdXSwKKyAgICAgICAgW1tsaW5lIHdpZHRoQW5jaG9yXSBjb25zdHJhaW50RXF1YWxUb0FuY2hv
cjpbYm90dG9tIHdpZHRoQW5jaG9yXV0sCisgICAgICAgIFtbbGluZSBsZWFkaW5nQW5jaG9yXSBj
b25zdHJhaW50RXF1YWxUb0FuY2hvcjpbYm90dG9tIGxlYWRpbmdBbmNob3JdXSwKKyAgICAgICAg
W1tsaW5lIHRvcEFuY2hvcl0gY29uc3RyYWludEVxdWFsVG9BbmNob3I6W2JvdHRvbSB0b3BBbmNo
b3JdXSwKKyAgICAgICAgW1tsaW5lIGhlaWdodEFuY2hvcl0gY29uc3RyYWludEVxdWFsVG9Db25z
dGFudDoxXSwKKyAgICAgICAgW1tbYm90dG9tIHRvcEFuY2hvcl0gYW5jaG9yV2l0aE9mZnNldFRv
QW5jaG9yOltkZXRhaWxzIHRvcEFuY2hvcl1dIGNvbnN0cmFpbnRFcXVhbFRvQ29uc3RhbnQ6bWFy
Z2luU2l6ZV0sCisgICAgICAgIFtbW2RldGFpbHMgYm90dG9tQW5jaG9yXSBhbmNob3JXaXRoT2Zm
c2V0VG9BbmNob3I6W2JvdHRvbSBib3R0b21BbmNob3JdXSBjb25zdHJhaW50RXF1YWxUb0NvbnN0
YW50Om1hcmdpblNpemVdLAorICAgICAgICBbW1tib3R0b20gbGVhZGluZ0FuY2hvcl0gYW5jaG9y
V2l0aE9mZnNldFRvQW5jaG9yOltkZXRhaWxzIGxlYWRpbmdBbmNob3JdXSBjb25zdHJhaW50RXF1
YWxUb0NvbnN0YW50Om1hcmdpblNpemVdLAorICAgICAgICBbW1tkZXRhaWxzIHRyYWlsaW5nQW5j
aG9yXSBhbmNob3JXaXRoT2Zmc2V0VG9BbmNob3I6W2JvdHRvbSB0cmFpbGluZ0FuY2hvcl1dIGNv
bnN0cmFpbnRFcXVhbFRvQ29uc3RhbnQ6bWFyZ2luU2l6ZV0sCiAgICAgXV07CiAjZW5kaWYKICAg
ICBbc2VsZiBsYXlvdXRUZXh0XTsKQEAgLTU3MCwxMSArNTcwLDExIEBAIC0gKGluc3RhbmNldHlw
ZSlpbml0V2l0aEF0dHJpYnV0ZWRTdHJpbmc6KE5TQXR0cmlidXRlZFN0cmluZyAqKWF0dHJpYnV0
ZWRTdHJpbmcKICAgICBzZWxmLmRlbGVnYXRlID0gd2FybmluZzsKIAogICAgIENvY29hQ29sb3Ig
KmZvcmVncm91bmRDb2xvciA9IGNvbG9yRm9ySXRlbShXYXJuaW5nSXRlbTo6TWVzc2FnZVRleHQs
IHdhcm5pbmcpOwotICAgIE5TTXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcgKnN0cmluZyA9IFtbYXR0
cmlidXRlZFN0cmluZyBtdXRhYmxlQ29weV0gYXV0b3JlbGVhc2VdOwotICAgIFtzdHJpbmcgYWRk
QXR0cmlidXRlczpAeyBOU0ZvcmVncm91bmRDb2xvckF0dHJpYnV0ZU5hbWUgOiBmb3JlZ3JvdW5k
Q29sb3IgfSByYW5nZTpOU01ha2VSYW5nZSgwLCBzdHJpbmcubGVuZ3RoKV07CisgICAgYXV0byBz
dHJpbmcgPSBhZG9wdE5TKFthdHRyaWJ1dGVkU3RyaW5nIG11dGFibGVDb3B5XSk7CisgICAgW3N0
cmluZyBhZGRBdHRyaWJ1dGVzOkB7IE5TRm9yZWdyb3VuZENvbG9yQXR0cmlidXRlTmFtZSA6IGZv
cmVncm91bmRDb2xvciB9IHJhbmdlOk5TTWFrZVJhbmdlKDAsIFtzdHJpbmcgbGVuZ3RoXSldOwog
ICAgIFtzZWxmIHNldEJhY2tncm91bmRDb2xvcjpjb2xvckZvckl0ZW0oV2FybmluZ0l0ZW06OkJv
eEJhY2tncm91bmQsIHdhcm5pbmcpXTsKICAgICBbc2VsZiBzZXRMaW5rVGV4dEF0dHJpYnV0ZXM6
QHsgTlNGb3JlZ3JvdW5kQ29sb3JBdHRyaWJ1dGVOYW1lIDogZm9yZWdyb3VuZENvbG9yIH1dOwot
ICAgIFtzZWxmLnRleHRTdG9yYWdlIGFwcGVuZEF0dHJpYnV0ZWRTdHJpbmc6c3RyaW5nXTsKKyAg
ICBbc2VsZi50ZXh0U3RvcmFnZSBhcHBlbmRBdHRyaWJ1dGVkU3RyaW5nOnN0cmluZy5nZXQoKV07
CiAgICAgc2VsZi5lZGl0YWJsZSA9IE5POwogI2lmICFQTEFURk9STShNQUMpCiAgICAgc2VsZi5z
Y3JvbGxFbmFibGVkID0gTk87CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9XZWJWaWV3SW1wbC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZp
ZXdJbXBsLm1tCmluZGV4IDFiZjkwODRjNTNmZWQ1ZWI2MzE5Njg0NjY3YjNhYjgyNzRiN2I4ZGQu
LjkwZWI0ZGJkZGMwZmE3ODMzZTI4YThmM2YxMjZkY2Y5MDc4MzFlOTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCkBAIC0yNzU5LDcgKzI3NTksNyBA
QCBOU1ZpZXcgKldlYlZpZXdJbXBsOjpmdWxsU2NyZWVuUGxhY2Vob2xkZXJWaWV3KCkKIE5TV2lu
ZG93ICpXZWJWaWV3SW1wbDo6ZnVsbFNjcmVlbldpbmRvdygpCiB7CiAjaWYgRU5BQkxFKEZVTExT
Q1JFRU5fQVBJKQotICAgIHJldHVybiBbW1tXZWJDb3JlRnVsbFNjcmVlbldpbmRvdyBhbGxvY10g
aW5pdFdpdGhDb250ZW50UmVjdDpbW05TU2NyZWVuIG1haW5TY3JlZW5dIGZyYW1lXSBzdHlsZU1h
c2s6KE5TV2luZG93U3R5bGVNYXNrVGl0bGVkIHwgTlNXaW5kb3dTdHlsZU1hc2tVbmlmaWVkVGl0
bGVBbmRUb29sYmFyIHwgTlNXaW5kb3dTdHlsZU1hc2tGdWxsU2l6ZUNvbnRlbnRWaWV3IHwgTlNX
aW5kb3dTdHlsZU1hc2tSZXNpemFibGUpIGJhY2tpbmc6TlNCYWNraW5nU3RvcmVCdWZmZXJlZCBk
ZWZlcjpOT10gYXV0b3JlbGVhc2VdOworICAgIHJldHVybiBhZG9wdE5TKFtbV2ViQ29yZUZ1bGxT
Y3JlZW5XaW5kb3cgYWxsb2NdIGluaXRXaXRoQ29udGVudFJlY3Q6W1tOU1NjcmVlbiBtYWluU2Ny
ZWVuXSBmcmFtZV0gc3R5bGVNYXNrOihOU1dpbmRvd1N0eWxlTWFza1RpdGxlZCB8IE5TV2luZG93
U3R5bGVNYXNrVW5pZmllZFRpdGxlQW5kVG9vbGJhciB8IE5TV2luZG93U3R5bGVNYXNrRnVsbFNp
emVDb250ZW50VmlldyB8IE5TV2luZG93U3R5bGVNYXNrUmVzaXphYmxlKSBiYWNraW5nOk5TQmFj
a2luZ1N0b3JlQnVmZmVyZWQgZGVmZXI6Tk9dKS5hdXRvcmVsZWFzZSgpOwogI2Vsc2UKICAgICBy
ZXR1cm4gbmlsOwogI2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>420872</attachid>
            <date>2021-02-18 14:25:11 -0800</date>
            <delta_ts>2021-02-18 14:48:17 -0800</delta_ts>
            <desc>Follow-up</desc>
            <filename>bug-221932-20210218142510.patch</filename>
            <type>text/plain</type>
            <size>28181</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjczMTAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
ZjcyZmNlOTY0MjY4NWRmODIyM2IxYmQ0NDRiMzg3YjZkYjE0NDVkLi41ZWM4ZjY4OWVmMDExZmM0
YmFlOWJjNjhhOTdjMTkwN2Y0MzI1NzZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOCBAQAorMjAyMS0wMi0xOCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIFJlZHVjZSBleHBsaWNpdCB1c2FnZSBvZiBbb2JqQyBhdXRvcmVsZWFzZV0gaW4g
V2ViS2l0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MjE5MzIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzc0NDEwOTAwPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZvbGxvdy11cCB0byByMjcyOTM2IGlu
IG9yZGVyIHRvIGFkZHJlc3MgcG9zdC1sYW5kaW5nIHJldmlldyBjb21tZW50cy4KKworICAgICAg
ICAqIEFQSS9KU0NvbnRleHQubW06CisgICAgICAgICgtW0pTQ29udGV4dCBpbml0XSk6CisgICAg
ICAgICogQVBJL0pTV3JhcHBlck1hcC5tbToKKyAgICAgICAgKC1bSlNXcmFwcGVyTWFwIGNsYXNz
SW5mb0ZvckNsYXNzOl0pOgorCiAyMDIxLTAyLTE4ICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZA
YXBwbGUuY29tPgogCiAgICAgICAgIFtKU0NdIEltcGxlbWVudCBSZWdFeHAgTWF0Y2ggSW5kaWNl
cyBwcm9wb3NhbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGEzYjkyYjY1ZTFkNmYxN2E0ODYxY2IwYWFiZGQ3OWJk
NjBhOWI2ZWMuLjJhNDUyNTcxN2FhMDQ5ODIxMTQ1ODk4M2U1ZWIzMzcyZTc4N2Q2YzAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwyOCBAQAorMjAyMS0wMi0xOCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpA
YXBwbGUuY29tPgorCisgICAgICAgIFJlZHVjZSBleHBsaWNpdCB1c2FnZSBvZiBbb2JqQyBhdXRv
cmVsZWFzZV0gaW4gV2ViS2l0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMjE5MzIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzc0NDEwOTAwPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZvbGxvdy11cCB0
byByMjcyOTM2IGluIG9yZGVyIHRvIGFkZHJlc3MgcG9zdC1sYW5kaW5nIHJldmlldyBjb21tZW50
cy4KKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RX
cmFwcGVySU9TLm1tOgorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBf
c3RyaW5nRnJvbVN0YXJ0TWFya2VyOnRvRW5kTWFya2VyOmF0dHJpYnV0ZWQ6XSk6CisgICAgICAg
ICogZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW06CisgICAgICAgIChXZWJD
b3JlOjphdHRyaWJ1dGVzRm9yQXR0cmlidXRlZFN0cmluZ0NvbnZlcnNpb24pOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25PYmpDOjpjcmVhdGVBVkFzc2V0Rm9yVVJMKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9pb3MvV2ViQVZQbGF5ZXJDb250cm9sbGVyLm1tOgorICAgICAgICAoLVtXZWJBVlBsYXllckNv
bnRyb2xsZXIgaW5pdF0pOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy93YWsvV0FLVmlldy5tbToK
KyAgICAgICAgKC1bV0FLVmlldyBkZWFsbG9jXSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tOgorICAgICAgICAoLVtXZWJDb3JlTlNVUkxT
ZXNzaW9uRGF0YVRhc2sgaW5pdFdpdGhTZXNzaW9uOmlkZW50aWZpZXI6cmVxdWVzdDpdKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUhhbmRsZU1hYy5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpjcmVhdGVOU1VSTENvbm5lY3Rpb24pOgorCiAy
MDIxLTAyLTE4ICBLYXRlIENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgogCiAg
ICAgICAgIEFkZCBzdXBwb3J0IGZvciBub24gYXBwLWJvdW5kIHJlcXVlc3RzCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4
IDQxMzQwNmNjNWM2Nzk0MDk5ZDUwM2U3MTRmYjAzMDMxZTY4ZDFjZDYuLmZmNzgzZjY4ZDdkZTZh
ZjkyNzNiN2U1MDVkODk2OWEyYzBmZjE0MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzMgQEAKKzIw
MjEtMDItMTggIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBSZWR1
Y2UgZXhwbGljaXQgdXNhZ2Ugb2YgW29iakMgYXV0b3JlbGVhc2VdIGluIFdlYktpdAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxOTMyCisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS83NDQxMDkwMD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBGb2xsb3ctdXAgdG8gcjI3MjkzNiBpbiBvcmRlciB0byBhZGRy
ZXNzIHBvc3QtbGFuZGluZyByZXZpZXcgY29tbWVudHMuCisKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0NvY29hL05TQXR0cmlidXRlZFN0cmluZy5tbToKKyAgICAgICAgKCtbTlNBdHRyaWJ1dGVk
U3RyaW5nIF9sb2FkRnJvbUhUTUxXaXRoT3B0aW9uczpjb250ZW50TG9hZGVyOmNvbXBsZXRpb25I
YW5kbGVyOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgor
ICAgICAgICAoLVtXS1dlYlZpZXcgZmluZFN0cmluZzp3aXRoQ29uZmlndXJhdGlvbjpjb21wbGV0
aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9mcmFtZXM6XSk6CisgICAgICAg
ICgtW1dLV2ViVmlldyBfZ2V0Q29udGVudHNBc0F0dHJpYnV0ZWRTdHJpbmdXaXRoQ29tcGxldGlv
bkhhbmRsZXI6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdXRvbWF0aW9u
U2Vzc2lvbi5tbToKKyAgICAgICAgKC1bX1dLQXV0b21hdGlvblNlc3Npb24gaW5pdF0pOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yLm1tOgorICAgICAgICAoLVtf
V0tJbnNwZWN0b3IgcmVnaXN0ZXJFeHRlbnNpb25XaXRoSUQ6ZGlzcGxheU5hbWU6Y29tcGxldGlv
bkhhbmRsZXI6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tSZW1vdGVXZWJJ
bnNwZWN0b3JWaWV3Q29udHJvbGxlci5tbToKKyAgICAgICAgKC1bX1dLUmVtb3RlV2ViSW5zcGVj
dG9yVmlld0NvbnRyb2xsZXIgcmVnaXN0ZXJFeHRlbnNpb25XaXRoSUQ6ZGlzcGxheU5hbWU6Y29t
cGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tVc2Vy
Q29udGVudEV4dGVuc2lvblN0b3JlLm1tOgorICAgICAgICAoLVtfV0tVc2VyQ29udGVudEV4dGVu
c2lvblN0b3JlIGNvbXBpbGVDb250ZW50RXh0ZW5zaW9uRm9ySWRlbnRpZmllcjplbmNvZGVkQ29u
dGVudEV4dGVuc2lvbjpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bX1dLVXNlckNv
bnRlbnRFeHRlbnNpb25TdG9yZSBsb29rdXBDb250ZW50RXh0ZW5zaW9uRm9ySWRlbnRpZmllcjpj
b21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV0b21hdGlvbi9pb3Mv
V2ViQXV0b21hdGlvblNlc3Npb25JT1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRp
b25TZXNzaW9uOjpwbGF0Zm9ybVNpbXVsYXRlS2V5Ym9hcmRJbnRlcmFjdGlvbik6CisgICAgICAg
ICogVUlQcm9jZXNzL0NvY29hL1dLQ29udGFjdFBpY2tlci5tbToKKyAgICAgICAgKC1bV0tDb250
YWN0UGlja2VyIF9jb250YWN0c0Zyb21KU0NvbnRhY3RzOl0pOgorCiAyMDIxLTAyLTE4ICBLYXRl
IENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBzdXBw
b3J0IGZvciBub24gYXBwLWJvdW5kIHJlcXVlc3RzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL0pTQ29udGV4dC5tbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlND
b250ZXh0Lm1tCmluZGV4IDZiZWIyNWJmNmFlZWQ3NThhMjA2MTE3Y2FlNzE4Yjc4YTAwMjNhMzcu
LjJjYzJmNmM4OWZkYzNhNDk5YWM0MTE2MjdlZDdhMzNiNjUwZjFkNWMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0Lm1tCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvSlNDb250ZXh0Lm1tCkBAIC02OCw3ICs2OCw3IEBAIC0gKHZvaWQpZW5zdXJl
V3JhcHBlck1hcAogCiAtIChpbnN0YW5jZXR5cGUpaW5pdAogewotICAgIHJldHVybiBbc2VsZiBp
bml0V2l0aFZpcnR1YWxNYWNoaW5lOmFkb3B0TlMoW1tKU1ZpcnR1YWxNYWNoaW5lIGFsbG9jXSBp
bml0XSkuYXV0b3JlbGVhc2UoKV07CisgICAgcmV0dXJuIFtzZWxmIGluaXRXaXRoVmlydHVhbE1h
Y2hpbmU6YWRvcHROUyhbW0pTVmlydHVhbE1hY2hpbmUgYWxsb2NdIGluaXRdKS5nZXQoKV07CiB9
CiAKIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aFZpcnR1YWxNYWNoaW5lOihKU1ZpcnR1YWxNYWNo
aW5lICopdmlydHVhbE1hY2hpbmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNXcmFwcGVyTWFwLm1tIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1dyYXBwZXJN
YXAubW0KaW5kZXggODUyZmI5MjkzZjYwYmQ5YjdlNDZjM2VjNzUwZjMyMjkxMTVjZWQxNC4uZDg5
YmZlYTRiYmRiYjM5ODJmYTBlMGNlYzIyMjdkODk2OGRjYjZjYSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9KU1dyYXBwZXJNYXAubW0KKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS9KU1dyYXBwZXJNYXAubW0KQEAgLTYzNSw3ICs2MzUsNyBAQCAtIChKU09iakND
bGFzc0luZm8qKWNsYXNzSW5mb0ZvckNsYXNzOihDbGFzcyljbHMKICAgICAgICAgICAgIHJldHVy
biBtX2NsYXNzTWFwLmdldCgpWyhpZCljbHNdID0gW3NlbGYgY2xhc3NJbmZvRm9yQ2xhc3M6Y2xh
c3NfZ2V0U3VwZXJjbGFzcyhjbHMpXTsKICAgICB9CiAKLSAgICByZXR1cm4gbV9jbGFzc01hcC5n
ZXQoKVsoaWQpY2xzXSA9IGFkb3B0TlMoW1tKU09iakNDbGFzc0luZm8gYWxsb2NdIGluaXRGb3JD
bGFzczpjbHNdKS5hdXRvcmVsZWFzZSgpOworICAgIHJldHVybiBtX2NsYXNzTWFwLmdldCgpWyhp
ZCljbHNdID0gYWRvcHROUyhbW0pTT2JqQ0NsYXNzSW5mbyBhbGxvY10gaW5pdEZvckNsYXNzOmNs
c10pLmdldCgpOwogfQogCiAtIChKU1ZhbHVlICopanNXcmFwcGVyRm9yT2JqZWN0OihpZClvYmpl
Y3QgaW5Db250ZXh0OihKU0NvbnRleHQgKiljb250ZXh0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5t
bSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmpl
Y3RXcmFwcGVySU9TLm1tCmluZGV4IGYwYTk5MGU5MTczNTk1MTA1NDU0OGViY2UyMDNhMjU0OWZm
MjRkMGYuLjNmYjRkMGNhNTVmMWVhNTY1YjdjMmUxNjI2Y2JkMjJmMzc2ZjcwNTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmpl
Y3RXcmFwcGVySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dl
YkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tCkBAIC0yNTU1LDE4ICsyNTU1LDE4IEBA
IC0gKGlkKV9zdHJpbmdGcm9tU3RhcnRNYXJrZXI6KFdlYkFjY2Vzc2liaWxpdHlUZXh0TWFya2Vy
KilzdGFydE1hcmtlciB0b0VuZE1hcmtlCiAgICAgY29uc3QgdW5pY2hhciBhdHRhY2htZW50Q2hh
ciA9IE5TQXR0YWNobWVudENoYXJhY3RlcjsKICAgICBOU0ludGVnZXIgY291bnQgPSBbYXJyYXkg
Y291bnRdOwogICAgIGZvciAoTlNJbnRlZ2VyIGsgPSAwOyBrIDwgY291bnQ7ICsraykgewotICAg
ICAgICBpZCBvYmplY3QgPSBbYXJyYXkgb2JqZWN0QXRJbmRleDprXTsKKyAgICAgICAgYXV0byBv
YmplY3QgPSByZXRhaW5QdHIoW2FycmF5IG9iamVjdEF0SW5kZXg6a10pOwogCiAgICAgICAgIGlm
IChhdHRyaWJ1dGVkICYmIFtvYmplY3QgaXNLaW5kT2ZDbGFzczpbV2ViQWNjZXNzaWJpbGl0eU9i
amVjdFdyYXBwZXIgY2xhc3NdXSkKLSAgICAgICAgICAgIG9iamVjdCA9IGFkb3B0TlMoW1tOU011
dGFibGVBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFN0cmluZzpbTlNTdHJpbmcgc3Ry
aW5nV2l0aENoYXJhY3RlcnM6JmF0dGFjaG1lbnRDaGFyIGxlbmd0aDoxXSBhdHRyaWJ1dGVzOkB7
IFVJQWNjZXNzaWJpbGl0eVRva2VuQXR0YWNobWVudCA6IG9iamVjdCB9XSkuYXV0b3JlbGVhc2Uo
KTsKKyAgICAgICAgICAgIG9iamVjdCA9IGFkb3B0TlMoW1tOU011dGFibGVBdHRyaWJ1dGVkU3Ry
aW5nIGFsbG9jXSBpbml0V2l0aFN0cmluZzpbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6
JmF0dGFjaG1lbnRDaGFyIGxlbmd0aDoxXSBhdHRyaWJ1dGVzOkB7IFVJQWNjZXNzaWJpbGl0eVRv
a2VuQXR0YWNobWVudCA6IG9iamVjdC5nZXQoKSB9XSk7CiAgICAgICAgIAogICAgICAgICBpZiAo
IVtvYmplY3QgaXNLaW5kT2ZDbGFzczpyZXR1cm5DbGFzc10pCiAgICAgICAgICAgICBjb250aW51
ZTsKICAgICAgICAgCiAgICAgICAgIGlmIChhdHRyaWJ1dGVkKQotICAgICAgICAgICAgWyhOU011
dGFibGVBdHRyaWJ1dGVkU3RyaW5nICopcmV0dXJuVmFsdWUuZ2V0KCkgYXBwZW5kQXR0cmlidXRl
ZFN0cmluZzpvYmplY3RdOworICAgICAgICAgICAgWyhOU011dGFibGVBdHRyaWJ1dGVkU3RyaW5n
ICopcmV0dXJuVmFsdWUuZ2V0KCkgYXBwZW5kQXR0cmlidXRlZFN0cmluZzpvYmplY3QuZ2V0KCld
OwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBbKE5TTXV0YWJsZVN0cmluZyAqKXJldHVyblZh
bHVlLmdldCgpIGFwcGVuZFN0cmluZzpvYmplY3RdOworICAgICAgICAgICAgWyhOU011dGFibGVT
dHJpbmcgKilyZXR1cm5WYWx1ZS5nZXQoKSBhcHBlbmRTdHJpbmc6b2JqZWN0LmdldCgpXTsKICAg
ICB9CiAgICAgcmV0dXJuIHJldHVyblZhbHVlLmF1dG9yZWxlYXNlKCk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbSBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tCmlu
ZGV4IGQ1ODk2ZmQ5NDAyMzk4NDJhMDYzOTUxMDE3YjcyZWJkMWE2NGUyZTQuLjlhYzQzOGNhNDU5
MWUwNTBiYWFhYWI5YjYzZDJkZDk1YjkzMTQzZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tCkBAIC0xMjgsNyArMTI4
LDcgQEAgc3RhdGljIE5TRGljdGlvbmFyeSAqYXR0cmlidXRlc0ZvckF0dHJpYnV0ZWRTdHJpbmdD
b252ZXJzaW9uKCkKICAgICAgICAgQCJJbnRlcmNoYW5nZU5ld2xpbmUiOiBAWUVTLAogICAgICAg
ICBAIkNvYWxlc2NlVGFiU3BhbnMiOiBAWUVTLAogICAgICAgICBAIk91dHB1dEJhc2VVUkwiOiBi
YXNlVVJMLAotICAgICAgICBAIldlYlJlc291cmNlSGFuZGxlciI6IGFkb3B0TlMoW1dlYkFyY2hp
dmVSZXNvdXJjZVdlYlJlc291cmNlSGFuZGxlciBuZXddKS5hdXRvcmVsZWFzZSgpLAorICAgICAg
ICBAIldlYlJlc291cmNlSGFuZGxlciI6IGFkb3B0TlMoW1dlYkFyY2hpdmVSZXNvdXJjZVdlYlJl
c291cmNlSGFuZGxlciBuZXddKS5nZXQoKSwKICAgICB9OwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
Qy5tbQppbmRleCBhNzkxMzRhNGU3YmVhNmYwNTc3YmE1MjAzYjk2ZWVjYzEwZDAyNzViLi4zZDg5
ZDA5MWY0YTJmYjA2ZWZmNjg4ZTNjNmZmZTgxZTJlNDlmNjllIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akMubW0KQEAgLTkyMCw3ICs5MjAsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakM6OmNyZWF0ZUFWQXNzZXRGb3JVUkwoY29uc3QgVVJMJiB1cmwsIFJldAogICAgICAg
ICAmJiBbcmVzb3VyY2VMb2FkZXIgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihVUkxTZXNz
aW9uRGF0YURlbGVnYXRlUXVldWUpXSkgewogICAgICAgICBSZWZQdHI8UGxhdGZvcm1NZWRpYVJl
c291cmNlTG9hZGVyPiBtZWRpYVJlc291cmNlTG9hZGVyID0gcGxheWVyKCktPmNyZWF0ZVJlc291
cmNlTG9hZGVyKCk7CiAgICAgICAgIGlmIChtZWRpYVJlc291cmNlTG9hZGVyKQotICAgICAgICAg
ICAgcmVzb3VyY2VMb2FkZXIuVVJMU2Vzc2lvbiA9IChOU1VSTFNlc3Npb24gKilhZG9wdE5TKFtb
V2ViQ29yZU5TVVJMU2Vzc2lvbiBhbGxvY10gaW5pdFdpdGhSZXNvdXJjZUxvYWRlcjoqbWVkaWFS
ZXNvdXJjZUxvYWRlciBkZWxlZ2F0ZTpyZXNvdXJjZUxvYWRlci5VUkxTZXNzaW9uRGF0YURlbGVn
YXRlIGRlbGVnYXRlUXVldWU6cmVzb3VyY2VMb2FkZXIuVVJMU2Vzc2lvbkRhdGFEZWxlZ2F0ZVF1
ZXVlXSkuYXV0b3JlbGVhc2UoKTsKKyAgICAgICAgICAgIHJlc291cmNlTG9hZGVyLlVSTFNlc3Np
b24gPSAoTlNVUkxTZXNzaW9uICopYWRvcHROUyhbW1dlYkNvcmVOU1VSTFNlc3Npb24gYWxsb2Nd
IGluaXRXaXRoUmVzb3VyY2VMb2FkZXI6Km1lZGlhUmVzb3VyY2VMb2FkZXIgZGVsZWdhdGU6cmVz
b3VyY2VMb2FkZXIuVVJMU2Vzc2lvbkRhdGFEZWxlZ2F0ZSBkZWxlZ2F0ZVF1ZXVlOnJlc291cmNl
TG9hZGVyLlVSTFNlc3Npb25EYXRhRGVsZWdhdGVRdWV1ZV0pLmdldCgpOwogICAgIH0KIAogICAg
IG1faGF2ZUNoZWNrZWRQbGF5YWJpbGl0eSA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW9zL1dlYkFWUGxheWVyQ29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy9XZWJBVlBsYXllckNvbnRyb2xsZXIubW0KaW5kZXggOTY4YTQxMWQ5
ZmQyZTJhYTljNDBkOWNhZGNiOTFmOTEzYTJjZTIyMy4uZGM2MTc0ZGI0ZWU2Mzk5YWFkZDc1OTcx
YTU0MDQyMGE1NWJiN2VmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9z
L1dlYkFWUGxheWVyQ29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
b3MvV2ViQVZQbGF5ZXJDb250cm9sbGVyLm1tCkBAIC02OSw3ICs2OSw3IEBAIC0gKGluc3RhbmNl
dHlwZSlpbml0CiAgICAgICAgIHJldHVybiBzZWxmOwogCiAgICAgaW5pdEFWUGxheWVyQ29udHJv
bGxlcigpOwotICAgIHNlbGYucGxheWVyQ29udHJvbGxlclByb3h5ID0gYWRvcHROUyhbYWxsb2NB
VlBsYXllckNvbnRyb2xsZXJJbnN0YW5jZSgpIGluaXRdKS5hdXRvcmVsZWFzZSgpOworICAgIHNl
bGYucGxheWVyQ29udHJvbGxlclByb3h5ID0gYWRvcHROUyhbYWxsb2NBVlBsYXllckNvbnRyb2xs
ZXJJbnN0YW5jZSgpIGluaXRdKS5nZXQoKTsKICAgICBfbGl2ZVN0cmVhbUV2ZW50TW9kZVBvc3Np
YmxlID0gWUVTOwogCiAgICAgW3NlbGYgYWRkT2JzZXJ2ZXI6c2VsZiBmb3JLZXlQYXRoOkAic2Vl
a2FibGVUaW1lUmFuZ2VzIiBvcHRpb25zOihOU0tleVZhbHVlT2JzZXJ2aW5nT3B0aW9uT2xkIHwg
TlNLZXlWYWx1ZU9ic2VydmluZ09wdGlvbk5ldyB8IE5TS2V5VmFsdWVPYnNlcnZpbmdPcHRpb25J
bml0aWFsKSBjb250ZXh0OldlYkFWUGxheWVyQ29udHJvbGxlclNlZWthYmxlVGltZVJhbmdlc09i
c2VydmVyQ29udGV4dF07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
d2FrL1dBS1ZpZXcubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dBS1ZpZXcu
bW0KaW5kZXggNWQ2MjcyNjlhNzE3YzVlMDgwOTM1YWUxY2FmMTRmMjgwMDZlNDQ5MS4uZjU2ZGUw
NGE5MDVjYWQ0OWRiOTAzNTliMDJlNGM4NjY1ODE0NzVmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XQUtWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy93YWsvV0FLVmlldy5tbQpAQCAtMjM4LDcgKzIzOCw3IEBAIC0gKGlkKWluaXRX
aXRoRnJhbWU6KENHUmVjdClyZWN0CiAKIC0gKHZvaWQpZGVhbGxvYwogewotICAgIFthZG9wdE5T
KFtzdWJ2aWV3UmVmZXJlbmNlcyBjb3B5XSkuYXV0b3JlbGVhc2UoKSBtYWtlT2JqZWN0c1BlcmZv
cm1TZWxlY3RvcjpAc2VsZWN0b3IocmVtb3ZlRnJvbVN1cGVydmlldyldOworICAgIFthZG9wdE5T
KFtzdWJ2aWV3UmVmZXJlbmNlcyBjb3B5XSkgbWFrZU9iamVjdHNQZXJmb3JtU2VsZWN0b3I6QHNl
bGVjdG9yKHJlbW92ZUZyb21TdXBlcnZpZXcpXTsKIAogICAgIGlmICh2aWV3UmVmKSB7CiAgICAg
ICAgIF9XS1ZpZXdTZXRWaWV3Q29udGV4dCAodmlld1JlZiwgMCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Np
b24ubW0KaW5kZXggNmNkYzNlMDA3M2UxMDZhNzYyNWE2YTE4OTFmODVkYTUyNGFjYzgyYS4uZWVj
NGU0ZjljNmZjOWU3OGVkMWM2YzFjZWU3OGFjN2JlYmU4MGM1NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vz
c2lvbi5tbQpAQCAtNjYxLDEwICs2NjEsMTEgQEAgLSAoaWQpaW5pdFdpdGhTZXNzaW9uOihXZWJD
b3JlTlNVUkxTZXNzaW9uICopc2Vzc2lvbiBpZGVudGlmaWVyOihOU1VJbnRlZ2VyKWlkZW4KICAg
ICBzZWxmLnByaW9yaXR5ID0gTlNVUkxTZXNzaW9uVGFza1ByaW9yaXR5RGVmYXVsdDsKIAogICAg
IC8vIENvcmVNZWRpYSB3aWxsIGV4cGxpY2l0bHkgYWRkIGEgdXNlciBhZ2VudCBoZWFkZXIuIFJl
bW92ZSBpZiBwcmVzZW50LgorICAgIFJldGFpblB0cjxOU011dGFibGVVUkxSZXF1ZXN0PiBtdXRh
YmxlUmVxdWVzdDsKICAgICBpZiAoYXV0byogdXNlckFnZW50VmFsdWUgPSBbcmVxdWVzdCB2YWx1
ZUZvckhUVFBIZWFkZXJGaWVsZDpAIlVzZXItQWdlbnQiXSkgewotICAgICAgICBhdXRvIG11dGFi
bGVSZXF1ZXN0ID0gYWRvcHROUyhbcmVxdWVzdCBtdXRhYmxlQ29weVdpdGhab25lOm5pbF0pOwor
ICAgICAgICBtdXRhYmxlUmVxdWVzdCA9IGFkb3B0TlMoW3JlcXVlc3QgbXV0YWJsZUNvcHlXaXRo
Wm9uZTpuaWxdKTsKICAgICAgICAgW211dGFibGVSZXF1ZXN0IHNldFZhbHVlOm5pbCBmb3JIVFRQ
SGVhZGVyRmllbGQ6QCJVc2VyLUFnZW50Il07Ci0gICAgICAgIHJlcXVlc3QgPSBtdXRhYmxlUmVx
dWVzdC5hdXRvcmVsZWFzZSgpOworICAgICAgICByZXF1ZXN0ID0gbXV0YWJsZVJlcXVlc3QuZ2V0
KCk7CiAgICAgfQogCiAgICAgc2VsZi5vcmlnaW5hbFJlcXVlc3QgPSBzZWxmLmN1cnJlbnRSZXF1
ZXN0ID0gcmVxdWVzdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvbWFjL1Jlc291cmNlSGFuZGxlTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMubW0KaW5kZXggMzEzNTU0ZGRmY2NhODgzN2Y4OGZh
YTM2YTE0ZDdhZTMyYTBjMDM5My4uY2UxYzg4MzExNmU3MGJkZDZmZDUzZTQ5NGY4YjUzOWYyNjJm
MDViOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVz
b3VyY2VIYW5kbGVNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9t
YWMvUmVzb3VyY2VIYW5kbGVNYWMubW0KQEAgLTE2OSwyMCArMTY5LDIwIEBAIHZvaWQgUmVzb3Vy
Y2VIYW5kbGU6OmNyZWF0ZU5TVVJMQ29ubmVjdGlvbihpZCBkZWxlZ2F0ZSwgYm9vbCBzaG91bGRV
c2VDcmVkZW50aWFsCiAgICAgICAgIGFwcGx5QmFzaWNBdXRob3JpemF0aW9uSGVhZGVyKGZpcnN0
UmVxdWVzdCgpLCBkLT5tX2luaXRpYWxDcmVkZW50aWFsKTsKICAgICB9CiAKLSAgICBOU1VSTFJl
cXVlc3QgKm5zUmVxdWVzdCA9IGZpcnN0UmVxdWVzdCgpLm5zVVJMUmVxdWVzdChIVFRQQm9keVVw
ZGF0ZVBvbGljeTo6VXBkYXRlSFRUUEJvZHkpOwotICAgIG5zUmVxdWVzdCA9IGFwcGx5U25pZmZp
bmdQb2xpY2llc0lmTmVlZGVkKG5zUmVxdWVzdCwgc2hvdWxkQ29udGVudFNuaWZmLCBzaG91bGRD
b250ZW50RW5jb2RpbmdTbmlmZik7CisgICAgYXV0byBuc1JlcXVlc3QgPSByZXRhaW5QdHIoZmly
c3RSZXF1ZXN0KCkubnNVUkxSZXF1ZXN0KEhUVFBCb2R5VXBkYXRlUG9saWN5OjpVcGRhdGVIVFRQ
Qm9keSkpOworICAgIG5zUmVxdWVzdCA9IGFwcGx5U25pZmZpbmdQb2xpY2llc0lmTmVlZGVkKG5z
UmVxdWVzdC5nZXQoKSwgc2hvdWxkQ29udGVudFNuaWZmLCBzaG91bGRDb250ZW50RW5jb2RpbmdT
bmlmZik7CiAKICAgICBpZiAoZC0+bV9zdG9yYWdlU2Vzc2lvbikKLSAgICAgICAgbnNSZXF1ZXN0
ID0gY29weVJlcXVlc3RXaXRoU3RvcmFnZVNlc3Npb24oZC0+bV9zdG9yYWdlU2Vzc2lvbi5nZXQo
KSwgbnNSZXF1ZXN0KS5hdXRvcmVsZWFzZSgpOworICAgICAgICBuc1JlcXVlc3QgPSBjb3B5UmVx
dWVzdFdpdGhTdG9yYWdlU2Vzc2lvbihkLT5tX3N0b3JhZ2VTZXNzaW9uLmdldCgpLCBuc1JlcXVl
c3QuZ2V0KCkpOwogCiAgICAgQVNTRVJUKFtOU1VSTENvbm5lY3Rpb24gaW5zdGFuY2VzUmVzcG9u
ZFRvU2VsZWN0b3I6QHNlbGVjdG9yKF9pbml0V2l0aFJlcXVlc3Q6ZGVsZWdhdGU6dXNlc0NhY2hl
Om1heENvbnRlbnRMZW5ndGg6c3RhcnRJbW1lZGlhdGVseTpjb25uZWN0aW9uUHJvcGVydGllczop
XSk7CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIC8vIEZJWE1FOiBUaGlzIGNvZGUg
aXMgZGlmZmVyZW50IGZyb20gaU9TIGNvZGUgaW4gUmVzb3VyY2VIYW5kbGVDRk5ldC5jcHAgaW4g
dGhhdCBoZXJlIHdlIHJlc3BlY3Qgc3RyZWFtIHByb3BlcnRpZXMgdGhhdCB3ZXJlIHByZXNlbnQg
aW4gY2xpZW50IHByb3BlcnRpZXMuCiAgICAgTlNEaWN0aW9uYXJ5ICpzdHJlYW1Qcm9wZXJ0aWVz
RnJvbUNsaWVudCA9IFtjb25uZWN0aW9uUHJvcGVydGllcyBvYmplY3RGb3JLZXk6QCJrQ0ZVUkxD
b25uZWN0aW9uU29ja2V0U3RyZWFtUHJvcGVydGllcyJdOwotICAgIE5TTXV0YWJsZURpY3Rpb25h
cnkgKnN0cmVhbVByb3BlcnRpZXMgPSBzdHJlYW1Qcm9wZXJ0aWVzRnJvbUNsaWVudCA/IGFkb3B0
TlMoW3N0cmVhbVByb3BlcnRpZXNGcm9tQ2xpZW50IG11dGFibGVDb3B5XSkuYXV0b3JlbGVhc2Uo
KSA6IFtOU011dGFibGVEaWN0aW9uYXJ5IGRpY3Rpb25hcnldOworICAgIGF1dG8gc3RyZWFtUHJv
cGVydGllcyA9IHN0cmVhbVByb3BlcnRpZXNGcm9tQ2xpZW50ID8gYWRvcHROUyhbc3RyZWFtUHJv
cGVydGllc0Zyb21DbGllbnQgbXV0YWJsZUNvcHldKSA6IHJldGFpblB0cihbTlNNdXRhYmxlRGlj
dGlvbmFyeSBkaWN0aW9uYXJ5XSk7CiAjZWxzZQotICAgIE5TTXV0YWJsZURpY3Rpb25hcnkgKnN0
cmVhbVByb3BlcnRpZXMgPSBbTlNNdXRhYmxlRGljdGlvbmFyeSBkaWN0aW9uYXJ5XTsKKyAgICBh
dXRvIHN0cmVhbVByb3BlcnRpZXMgPSByZXRhaW5QdHIoW05TTXV0YWJsZURpY3Rpb25hcnkgZGlj
dGlvbmFyeV0pOwogI2VuZGlmCiAKICAgICBpZiAoIXNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdl
KSB7CkBAIC0yMDUsMTQgKzIwNSwxNCBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpjcmVhdGVOU1VS
TENvbm5lY3Rpb24oaWQgZGVsZWdhdGUsIGJvb2wgc2hvdWxkVXNlQ3JlZGVudGlhbAogCiAjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBOU011dGFibGVEaWN0aW9uYXJ5ICpwcm9wZXJ0eURp
Y3Rpb25hcnkgPSBbTlNNdXRhYmxlRGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0aERpY3Rpb25hcnk6
Y29ubmVjdGlvblByb3BlcnRpZXNdOwotICAgIFtwcm9wZXJ0eURpY3Rpb25hcnkgc2V0T2JqZWN0
OnN0cmVhbVByb3BlcnRpZXMgZm9yS2V5OkAia0NGVVJMQ29ubmVjdGlvblNvY2tldFN0cmVhbVBy
b3BlcnRpZXMiXTsKKyAgICBbcHJvcGVydHlEaWN0aW9uYXJ5IHNldE9iamVjdDpzdHJlYW1Qcm9w
ZXJ0aWVzLmdldCgpIGZvcktleTpAImtDRlVSTENvbm5lY3Rpb25Tb2NrZXRTdHJlYW1Qcm9wZXJ0
aWVzIl07CiAgICAgY29uc3QgYm9vbCB1c2VzQ2FjaGUgPSBmYWxzZTsKICNpZiAhUExBVEZPUk0o
TUFDQ0FUQUxZU1QpCiAgICAgaWYgKHN5bmNocm9ub3VzV2lsbFNlbmRSZXF1ZXN0RW5hYmxlZCgp
KQogICAgICAgICBDRlVSTFJlcXVlc3RTZXRTaG91bGRTdGFydFN5bmNocm9ub3VzbHkoW25zUmVx
dWVzdCBfQ0ZVUkxSZXF1ZXN0XSwgMSk7CiAjZW5kaWYKICNlbHNlCi0gICAgTlNNdXRhYmxlRGlj
dGlvbmFyeSAqcHJvcGVydHlEaWN0aW9uYXJ5ID0gW05TTXV0YWJsZURpY3Rpb25hcnkgZGljdGlv
bmFyeVdpdGhPYmplY3Q6c3RyZWFtUHJvcGVydGllcyBmb3JLZXk6QCJrQ0ZVUkxDb25uZWN0aW9u
U29ja2V0U3RyZWFtUHJvcGVydGllcyJdOworICAgIE5TTXV0YWJsZURpY3Rpb25hcnkgKnByb3Bl
cnR5RGljdGlvbmFyeSA9IFtOU011dGFibGVEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRoT2JqZWN0
OnN0cmVhbVByb3BlcnRpZXMuZ2V0KCkgZm9yS2V5OkAia0NGVVJMQ29ubmVjdGlvblNvY2tldFN0
cmVhbVByb3BlcnRpZXMiXTsKICAgICBjb25zdCBib29sIHVzZXNDYWNoZSA9IHRydWU7CiAjZW5k
aWYKICAgICBbcHJvcGVydHlEaWN0aW9uYXJ5IHNldE9iamVjdDpAe0AiX2tDRlVSTENvbm5lY3Rp
b25Qcm9wZXJ0eVRpbWluZ0RhdGFPcHRpb25zIjogQChfVGltaW5nRGF0YU9wdGlvbnNFbmFibGVX
M0NOYXZpZ2F0aW9uVGltaW5nKX0gZm9yS2V5OkAia0NGVVJMQ29ubmVjdGlvblVSTENvbm5lY3Rp
b25Qcm9wZXJ0aWVzIl07CkBAIC0yMjIsNyArMjIyLDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6
Y3JlYXRlTlNVUkxDb25uZWN0aW9uKGlkIGRlbGVnYXRlLCBib29sIHNob3VsZFVzZUNyZWRlbnRp
YWwKICAgICBbcHJvcGVydHlEaWN0aW9uYXJ5IHNldE9iamVjdDpAe0AiTlNBbGxvd3NBcmJpdHJh
cnlMb2Fkc0luV2ViQ29udGVudCI6IEBZRVN9IGZvcktleTpAIl9rQ0ZVUkxDb25uZWN0aW9uUHJv
cGVydHlBVFNGcmFtZXdvcmtPdmVycmlkZXMiXTsKIAogQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJB
VElPTlNfQkVHSU4KLSAgICBkLT5tX2Nvbm5lY3Rpb24gPSBhZG9wdE5TKFtbTlNVUkxDb25uZWN0
aW9uIGFsbG9jXSBfaW5pdFdpdGhSZXF1ZXN0Om5zUmVxdWVzdCBkZWxlZ2F0ZTpkZWxlZ2F0ZSB1
c2VzQ2FjaGU6dXNlc0NhY2hlIG1heENvbnRlbnRMZW5ndGg6MCBzdGFydEltbWVkaWF0ZWx5Ok5P
IGNvbm5lY3Rpb25Qcm9wZXJ0aWVzOnByb3BlcnR5RGljdGlvbmFyeV0pOworICAgIGQtPm1fY29u
bmVjdGlvbiA9IGFkb3B0TlMoW1tOU1VSTENvbm5lY3Rpb24gYWxsb2NdIF9pbml0V2l0aFJlcXVl
c3Q6bnNSZXF1ZXN0LmdldCgpIGRlbGVnYXRlOmRlbGVnYXRlIHVzZXNDYWNoZTp1c2VzQ2FjaGUg
bWF4Q29udGVudExlbmd0aDowIHN0YXJ0SW1tZWRpYXRlbHk6Tk8gY29ubmVjdGlvblByb3BlcnRp
ZXM6cHJvcGVydHlEaWN0aW9uYXJ5XSk7CiBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19F
TkQKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL05T
QXR0cmlidXRlZFN0cmluZy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9O
U0F0dHJpYnV0ZWRTdHJpbmcubW0KaW5kZXggNjBmMGE1MWVmZDI5NDRmZDQyMmNjMWMyMDUzY2Zi
ZGNlZDE0YTYzNy4uYTEwZDIyODhiZTYyMGQyMjNmYjI5ZWU0YTA1NThkZWU5N2I2MmIxNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL05TQXR0cmlidXRlZFN0
cmluZy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvTlNBdHRyaWJ1
dGVkU3RyaW5nLm1tCkBAIC0zMTAsNyArMzEwLDcgQEAgKyAodm9pZClfbG9hZEZyb21IVE1MV2l0
aE9wdGlvbnM6KE5TRGljdGlvbmFyeTxOU0F0dHJpYnV0ZWRTdHJpbmdEb2N1bWVudFJlYWRpbmcK
ICAgICAgICAgICAgIFt3ZWJWaWV3IF9nZXRDb250ZW50c0FzQXR0cmlidXRlZFN0cmluZ1dpdGhD
b21wbGV0aW9uSGFuZGxlcjpeKE5TQXR0cmlidXRlZFN0cmluZyAqYXR0cmlidXRlZFN0cmluZywg
TlNEaWN0aW9uYXJ5PE5TQXR0cmlidXRlZFN0cmluZ0RvY3VtZW50QXR0cmlidXRlS2V5LCBpZD4g
KmRvY3VtZW50QXR0cmlidXRlcywgTlNFcnJvciAqZXJyb3IpIHsKICAgICAgICAgICAgICAgICBp
ZiAoZXJyb3IpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjYW5jZWwoV0tFcnJvclVua25v
d24sIGVycm9yKTsKLSAgICAgICAgICAgICAgICBmaW5pc2gocmV0YWluUHRyKGF0dHJpYnV0ZWRT
dHJpbmcpLmF1dG9yZWxlYXNlKCksIHJldGFpblB0cihkb2N1bWVudEF0dHJpYnV0ZXMpLmF1dG9y
ZWxlYXNlKCksIG5pbCk7CisgICAgICAgICAgICAgICAgZmluaXNoKGF0dHJpYnV0ZWRTdHJpbmcs
IGRvY3VtZW50QXR0cmlidXRlcywgbmlsKTsKICAgICAgICAgICAgIH1dOwogICAgICAgICB9Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3
Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRl
eCBkOTAzZWY2MTU1OGZiZTQ1NjcyNGU2MjFhMzAxOGMzZTFmN2ZkNWExLi5hM2JjYzczNWQ2NmU2
MjM1NGEyMjUwYjkwOWJjMzBiYzk2OTI1NTViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KQEAgLTEyMTEsMTIgKzEyMTEsMTIgQEAgaW5saW5l
IE9wdGlvblNldDxXZWJLaXQ6OkZpbmRPcHRpb25zPiB0b0ZpbmRPcHRpb25zKFdLRmluZENvbmZp
Z3VyYXRpb24gKmNvbmZpZ3UKIC0gKHZvaWQpZmluZFN0cmluZzooTlNTdHJpbmcgKilzdHJpbmcg
d2l0aENvbmZpZ3VyYXRpb246KFdLRmluZENvbmZpZ3VyYXRpb24gKiljb25maWd1cmF0aW9uIGNv
bXBsZXRpb25IYW5kbGVyOih2b2lkICheKShXS0ZpbmRSZXN1bHQgKnJlc3VsdCkpY29tcGxldGlv
bkhhbmRsZXIKIHsKICAgICBpZiAoIXN0cmluZy5sZW5ndGgpIHsKLSAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoYWRvcHROUyhbW1dLRmluZFJlc3VsdCBhbGxvY10gX2luaXRXaXRoTWF0Y2hGb3Vu
ZDpOT10pLmF1dG9yZWxlYXNlKCkpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihhZG9wdE5T
KFtbV0tGaW5kUmVzdWx0IGFsbG9jXSBfaW5pdFdpdGhNYXRjaEZvdW5kOk5PXSkuZ2V0KCkpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgX3BhZ2UtPmZpbmRTdHJpbmcoc3RyaW5nLCB0
b0ZpbmRPcHRpb25zKGNvbmZpZ3VyYXRpb24pLCAxLCBbaGFuZGxlciA9IG1ha2VCbG9ja1B0cihj
b21wbGV0aW9uSGFuZGxlcildKGJvb2wgZm91bmQpIHsKLSAgICAgICAgaGFuZGxlcihhZG9wdE5T
KFtbV0tGaW5kUmVzdWx0IGFsbG9jXSBfaW5pdFdpdGhNYXRjaEZvdW5kOmZvdW5kXSkuYXV0b3Jl
bGVhc2UoKSk7CisgICAgICAgIGhhbmRsZXIoYWRvcHROUyhbW1dLRmluZFJlc3VsdCBhbGxvY10g
X2luaXRXaXRoTWF0Y2hGb3VuZDpmb3VuZF0pLmdldCgpKTsKICAgICB9KTsKIH0KIApAQCAtMTcx
Myw4ICsxNzEzLDcgQEAgLSAoQk9PTClfbmVnb3RpYXRlZExlZ2FjeVRMUwogLSAodm9pZClfZnJh
bWVzOih2b2lkICheKShfV0tGcmFtZVRyZWVOb2RlICopKWNvbXBsZXRpb25IYW5kbGVyCiB7CiAg
ICAgX3BhZ2UtPmdldEFsbEZyYW1lcyhbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIo
Y29tcGxldGlvbkhhbmRsZXIpLCBwYWdlID0gbWFrZVJlZigqX3BhZ2UuZ2V0KCkpXSAoV2ViS2l0
OjpGcmFtZVRyZWVOb2RlRGF0YSYmIGRhdGEpIHsKLSAgICAgICAgYXV0byBub2RlID0gcmV0YWlu
UHRyKHdyYXBwZXIoQVBJOjpGcmFtZVRyZWVOb2RlOjpjcmVhdGUoV1RGTW92ZShkYXRhKSwgcGFn
ZS5nZXQoKSkpKTsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobm9kZS5hdXRvcmVsZWFzZSgp
KTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIod3JhcHBlcihBUEk6OkZyYW1lVHJlZU5vZGU6
OmNyZWF0ZShXVEZNb3ZlKGRhdGEpLCBwYWdlLmdldCgpKSkpOwogICAgIH0pOwogfQogCkBAIC0y
NjA0LDcgKzI2MDMsNyBAQCAtICh2b2lkKV9nZXRDb250ZW50c0FzQXR0cmlidXRlZFN0cmluZ1dp
dGhDb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNBdHRyaWJ1dAogewogICAgIF9wYWdlLT5n
ZXRDb250ZW50c0FzQXR0cmlidXRlZFN0cmluZyhbaGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21w
bGV0aW9uSGFuZGxlcildKGF1dG8mIGF0dHJpYnV0ZWRTdHJpbmcpIHsKICAgICAgICAgaWYgKGF0
dHJpYnV0ZWRTdHJpbmcuc3RyaW5nKQotICAgICAgICAgICAgaGFuZGxlcihyZXRhaW5QdHIoYXR0
cmlidXRlZFN0cmluZy5zdHJpbmcuZ2V0KCkpLmF1dG9yZWxlYXNlKCksIHJldGFpblB0cihhdHRy
aWJ1dGVkU3RyaW5nLmRvY3VtZW50QXR0cmlidXRlcy5nZXQoKSkuYXV0b3JlbGVhc2UoKSwgbmls
KTsKKyAgICAgICAgICAgIGhhbmRsZXIoYXR0cmlidXRlZFN0cmluZy5zdHJpbmcuZ2V0KCksIGF0
dHJpYnV0ZWRTdHJpbmcuZG9jdW1lbnRBdHRyaWJ1dGVzLmdldCgpLCBuaWwpOwogICAgICAgICBl
bHNlCiAgICAgICAgICAgICBoYW5kbGVyKG5pbCwgbmlsLCBjcmVhdGVOU0Vycm9yKFdLRXJyb3JV
bmtub3duKS5nZXQoKSk7CiAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvX1dLQXV0b21hdGlvblNlc3Npb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXV0b21hdGlvblNlc3Npb24ubW0KaW5kZXggMTEwZDRlODBj
NGY5OGFkN2VjMjJlZmJjYmE4NjE2ZDE4YzBmZWExNy4uOTgwNWJiMDQxMmRmOWQwMzU2OGMwNzgw
YmViNTY1YWNkYjkxYTVkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL19XS0F1dG9tYXRpb25TZXNzaW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9fV0tBdXRvbWF0aW9uU2Vzc2lvbi5tbQpAQCAtNDEsNyArNDEsNyBAQCBA
aW1wbGVtZW50YXRpb24gX1dLQXV0b21hdGlvblNlc3Npb24gewogCiAtIChpbnN0YW5jZXR5cGUp
aW5pdAogewotICAgIHJldHVybiBbc2VsZiBpbml0V2l0aENvbmZpZ3VyYXRpb246YWRvcHROUyhb
W19XS0F1dG9tYXRpb25TZXNzaW9uQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pLmF1dG9yZWxl
YXNlKCldOworICAgIHJldHVybiBbc2VsZiBpbml0V2l0aENvbmZpZ3VyYXRpb246YWRvcHROUyhb
W19XS0F1dG9tYXRpb25TZXNzaW9uQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pLmdldCgpXTsK
IH0KIAogLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoQ29uZmlndXJhdGlvbjooX1dLQXV0b21hdGlv
blNlc3Npb25Db25maWd1cmF0aW9uICopY29uZmlndXJhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3Rvci5tbSBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3IubW0KaW5kZXggOGU0ZWQ3ZDQ0MTIw
NTk0YmU1NThiYjljMzZkOTJjNjIyNjE3MmNlYi4uY2YzZGUyNzdiNTEyODkyMTQ3Mzg5MjNkYjUy
MDMxNDZlMDU1ZGUzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL19XS0luc3BlY3Rvci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvX1dLSW5zcGVjdG9yLm1tCkBAIC0xODcsNyArMTg3LDcgQEAgLSAodm9pZClyZWdpc3RlckV4
dGVuc2lvbldpdGhJRDooTlNTdHJpbmcgKilleHRlbnNpb25JRCBkaXNwbGF5TmFtZTooTlNTdHJp
bmcgKikKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIGNhcHR1cmVk
QmxvY2sobmlsLCByZXRhaW5QdHIod3JhcHBlcihBUEk6Okluc3BlY3RvckV4dGVuc2lvbjo6Y3Jl
YXRlKHByb3RlY3RlZEV4dGVuc2lvbklELmdldCgpLCBwcm90ZWN0ZWRTZWxmLT5faW5zcGVjdG9y
LT5leHRlbnNpb25Db250cm9sbGVyKCkpKSkuYXV0b3JlbGVhc2UoKSk7CisgICAgICAgIGNhcHR1
cmVkQmxvY2sobmlsLCB3cmFwcGVyKEFQSTo6SW5zcGVjdG9yRXh0ZW5zaW9uOjpjcmVhdGUocHJv
dGVjdGVkRXh0ZW5zaW9uSUQuZ2V0KCksIHByb3RlY3RlZFNlbGYtPl9pbnNwZWN0b3ItPmV4dGVu
c2lvbkNvbnRyb2xsZXIoKSkpKTsKICAgICB9KTsKICNlbHNlCiAgICAgY29tcGxldGlvbkhhbmRs
ZXIoW05TRXJyb3IgZXJyb3JXaXRoRG9tYWluOldLRXJyb3JEb21haW4gY29kZTpXS0Vycm9yVW5r
bm93biB1c2VySW5mbzpuaWxdLCBuaWwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL19XS1JlbW90ZVdlYkluc3BlY3RvclZpZXdDb250cm9sbGVyLm1tIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1JlbW90ZVdlYkluc3BlY3RvclZp
ZXdDb250cm9sbGVyLm1tCmluZGV4IDJjYWRiODRhMGVmMmI5M2Q2MjIxZjhkOTljOGIyYjcwYjEw
YWFlM2IuLjgyMDY2M2FiZDliMmFiMjQ3Njg0YzNjODFjZDBhYzk1NzI2MGJjNGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tSZW1vdGVXZWJJbnNwZWN0
b3JWaWV3Q29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvX1dLUmVtb3RlV2ViSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIubW0KQEAgLTE2OCw3ICsxNjgs
NyBAQCAtICh2b2lkKXJlZ2lzdGVyRXh0ZW5zaW9uV2l0aElEOihOU1N0cmluZyAqKWV4dGVuc2lv
bklEIGRpc3BsYXlOYW1lOihOU1N0cmluZyAqKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CiAKLSAgICAgICAgY2FwdHVyZWRCbG9jayhuaWwsIHJldGFpblB0cih3cmFwcGVyKEFQSTo6
SW5zcGVjdG9yRXh0ZW5zaW9uOjpjcmVhdGUocHJvdGVjdGVkRXh0ZW5zaW9uSUQuZ2V0KCksIHBy
b3RlY3RlZFNlbGYtPm1fcmVtb3RlSW5zcGVjdG9yUHJveHktPmV4dGVuc2lvbkNvbnRyb2xsZXIo
KSkpKS5hdXRvcmVsZWFzZSgpKTsKKyAgICAgICAgY2FwdHVyZWRCbG9jayhuaWwsIHdyYXBwZXIo
QVBJOjpJbnNwZWN0b3JFeHRlbnNpb246OmNyZWF0ZShwcm90ZWN0ZWRFeHRlbnNpb25JRC5nZXQo
KSwgcHJvdGVjdGVkU2VsZi0+bV9yZW1vdGVJbnNwZWN0b3JQcm94eS0+ZXh0ZW5zaW9uQ29udHJv
bGxlcigpKSkpOwogICAgIH0pOwogI2Vsc2UKICAgICBjb21wbGV0aW9uSGFuZGxlcihbTlNFcnJv
ciBlcnJvcldpdGhEb21haW46V0tFcnJvckRvbWFpbiBjb2RlOldLRXJyb3JVbmtub3duIHVzZXJJ
bmZvOm5pbF0sIG5pbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvX1dLVXNlckNvbnRlbnRFeHRlbnNpb25TdG9yZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9fV0tVc2VyQ29udGVudEV4dGVuc2lvblN0b3JlLm1tCmluZGV4IDJl
ZThkN2EwNjEwNzlmNjk3NTYwNDJlM2E1MTg4OWMyOTBhYzcwNzEuLjFkMWQ4NzI0MjkxNzgzOWUw
M2M2YzAxMTBhOTRhODNjYzZlMGU4NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9fV0tVc2VyQ29udGVudEV4dGVuc2lvblN0b3JlLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tVc2VyQ29udGVudEV4dGVuc2lvblN0b3Jl
Lm1tCkBAIC03Miw3ICs3Miw3IEBAIC0gKHZvaWQpY29tcGlsZUNvbnRlbnRFeHRlbnNpb25Gb3JJ
ZGVudGlmaWVyOihOU1N0cmluZyAqKWlkZW50aWZpZXIgZW5jb2RlZENvbnRlCiB7CiAgICAgW19j
b250ZW50UnVsZUxpc3RTdG9yZSBfY29tcGlsZUNvbnRlbnRSdWxlTGlzdEZvcklkZW50aWZpZXI6
aWRlbnRpZmllciBlbmNvZGVkQ29udGVudFJ1bGVMaXN0OmVuY29kZWRDb250ZW50UnVsZUxpc3Qg
Y29tcGxldGlvbkhhbmRsZXI6XihXS0NvbnRlbnRSdWxlTGlzdCAqY29udGVudFJ1bGVMaXN0LCBO
U0Vycm9yICplcnJvcikgewogICAgICAgICBhdXRvIGNvbnRlbnRGaWx0ZXIgPSBjb250ZW50UnVs
ZUxpc3QgPyBhZG9wdE5TKFtbX1dLVXNlckNvbnRlbnRGaWx0ZXIgYWxsb2NdIF9pbml0V2l0aFdL
Q29udGVudFJ1bGVMaXN0OmNvbnRlbnRSdWxlTGlzdF0pIDogbmlsOwotICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihjb250ZW50RmlsdGVyLmF1dG9yZWxlYXNlKCksIHRvVXNlckNvbnRlbnRSdWxl
TGlzdFN0b3JlRXJyb3IoZXJyb3IpKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoY29udGVu
dEZpbHRlci5nZXQoKSwgdG9Vc2VyQ29udGVudFJ1bGVMaXN0U3RvcmVFcnJvcihlcnJvcikpOwog
ICAgIH1dOwogfQogCkBAIC04MCw3ICs4MCw3IEBAIC0gKHZvaWQpbG9va3VwQ29udGVudEV4dGVu
c2lvbkZvcklkZW50aWZpZXI6KE5TU3RyaW5nICopaWRlbnRpZmllciBjb21wbGV0aW9uSGFuCiB7
CiAgICAgW19jb250ZW50UnVsZUxpc3RTdG9yZSBsb29rVXBDb250ZW50UnVsZUxpc3RGb3JJZGVu
dGlmaWVyOmlkZW50aWZpZXIgY29tcGxldGlvbkhhbmRsZXI6XihXS0NvbnRlbnRSdWxlTGlzdCAq
Y29udGVudFJ1bGVMaXN0LCBOU0Vycm9yICplcnJvcikgewogICAgICAgICBhdXRvIGNvbnRlbnRG
aWx0ZXIgPSBjb250ZW50UnVsZUxpc3QgPyBhZG9wdE5TKFtbX1dLVXNlckNvbnRlbnRGaWx0ZXIg
YWxsb2NdIF9pbml0V2l0aFdLQ29udGVudFJ1bGVMaXN0OmNvbnRlbnRSdWxlTGlzdF0pIDogbmls
OwotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihjb250ZW50RmlsdGVyLmF1dG9yZWxlYXNlKCks
IHRvVXNlckNvbnRlbnRSdWxlTGlzdFN0b3JlRXJyb3IoZXJyb3IpKTsKKyAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoY29udGVudEZpbHRlci5nZXQoKSwgdG9Vc2VyQ29udGVudFJ1bGVMaXN0U3Rv
cmVFcnJvcihlcnJvcikpOwogICAgIH1dOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL2lvcy9XZWJBdXRvbWF0aW9uU2Vzc2lvbklPUy5tbSBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vaW9zL1dlYkF1dG9tYXRpb25TZXNzaW9u
SU9TLm1tCmluZGV4IGI4ZjFjZGRiNDlkYjJhZjdhMjhhNjkzZDMwZjlmOGE1ZWIyODI5MmUuLjA4
MWJhOTk0NmFkNzRhNjBjODViNzBlM2YxNDIxOGU1ZmY4YWYzY2YgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vaW9zL1dlYkF1dG9tYXRpb25TZXNzaW9uSU9T
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vaW9zL1dlYkF1dG9t
YXRpb25TZXNzaW9uSU9TLm1tCkBAIC0xMzIsMTkgKzEzMiwxOSBAQCB2b2lkIFdlYkF1dG9tYXRp
b25TZXNzaW9uOjpwbGF0Zm9ybVNpbXVsYXRlS2V5Ym9hcmRJbnRlcmFjdGlvbihXZWJQYWdlUHJv
eHkmIHBhZwogICAgIGNhc2UgS2V5Ym9hcmRJbnRlcmFjdGlvbjo6S2V5UHJlc3M6IHsKICAgICAg
ICAgbV9jdXJyZW50TW9kaWZpZXJzIHw9IGNoYW5nZWRNb2RpZmllcnM7CiAKLSAgICAgICAgW2V2
ZW50c1RvQmVTZW50IGFkZE9iamVjdDphZG9wdE5TKFtbOjpXZWJFdmVudCBhbGxvY10gaW5pdFdp
dGhLZXlFdmVudFR5cGU6V2ViRXZlbnRLZXlEb3duIHRpbWVTdGFtcDpDRkFic29sdXRlVGltZUdl
dEN1cnJlbnQoKSBjaGFyYWN0ZXJzOmNoYXJhY3RlcnMgY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZp
ZXJzOnVubW9kaWZpZWRDaGFyYWN0ZXJzIG1vZGlmaWVyczptX2N1cnJlbnRNb2RpZmllcnMgaXNS
ZXBlYXRpbmc6Tk8gd2l0aEZsYWdzOmlucHV0RmxhZ3Mgd2l0aElucHV0TWFuYWdlckhpbnQ6bmls
IGtleUNvZGU6a2V5Q29kZSBpc1RhYktleTppc1RhYktleV0pLmF1dG9yZWxlYXNlKCldOworICAg
ICAgICBbZXZlbnRzVG9CZVNlbnQgYWRkT2JqZWN0OmFkb3B0TlMoW1s6OldlYkV2ZW50IGFsbG9j
XSBpbml0V2l0aEtleUV2ZW50VHlwZTpXZWJFdmVudEtleURvd24gdGltZVN0YW1wOkNGQWJzb2x1
dGVUaW1lR2V0Q3VycmVudCgpIGNoYXJhY3RlcnM6Y2hhcmFjdGVycyBjaGFyYWN0ZXJzSWdub3Jp
bmdNb2RpZmllcnM6dW5tb2RpZmllZENoYXJhY3RlcnMgbW9kaWZpZXJzOm1fY3VycmVudE1vZGlm
aWVycyBpc1JlcGVhdGluZzpOTyB3aXRoRmxhZ3M6aW5wdXRGbGFncyB3aXRoSW5wdXRNYW5hZ2Vy
SGludDpuaWwga2V5Q29kZTprZXlDb2RlIGlzVGFiS2V5OmlzVGFiS2V5XSkuZ2V0KCldOwogICAg
ICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBLZXlib2FyZEludGVyYWN0aW9uOjpLZXlSZWxl
YXNlOiB7CiAgICAgICAgIG1fY3VycmVudE1vZGlmaWVycyAmPSB+Y2hhbmdlZE1vZGlmaWVyczsK
IAotICAgICAgICBbZXZlbnRzVG9CZVNlbnQgYWRkT2JqZWN0OmFkb3B0TlMoW1s6OldlYkV2ZW50
IGFsbG9jXSBpbml0V2l0aEtleUV2ZW50VHlwZTpXZWJFdmVudEtleVVwIHRpbWVTdGFtcDpDRkFi
c29sdXRlVGltZUdldEN1cnJlbnQoKSBjaGFyYWN0ZXJzOmNoYXJhY3RlcnMgY2hhcmFjdGVyc0ln
bm9yaW5nTW9kaWZpZXJzOnVubW9kaWZpZWRDaGFyYWN0ZXJzIG1vZGlmaWVyczptX2N1cnJlbnRN
b2RpZmllcnMgaXNSZXBlYXRpbmc6Tk8gd2l0aEZsYWdzOmlucHV0RmxhZ3Mgd2l0aElucHV0TWFu
YWdlckhpbnQ6bmlsIGtleUNvZGU6a2V5Q29kZSBpc1RhYktleTppc1RhYktleV0pLmF1dG9yZWxl
YXNlKCldOworICAgICAgICBbZXZlbnRzVG9CZVNlbnQgYWRkT2JqZWN0OmFkb3B0TlMoW1s6Oldl
YkV2ZW50IGFsbG9jXSBpbml0V2l0aEtleUV2ZW50VHlwZTpXZWJFdmVudEtleVVwIHRpbWVTdGFt
cDpDRkFic29sdXRlVGltZUdldEN1cnJlbnQoKSBjaGFyYWN0ZXJzOmNoYXJhY3RlcnMgY2hhcmFj
dGVyc0lnbm9yaW5nTW9kaWZpZXJzOnVubW9kaWZpZWRDaGFyYWN0ZXJzIG1vZGlmaWVyczptX2N1
cnJlbnRNb2RpZmllcnMgaXNSZXBlYXRpbmc6Tk8gd2l0aEZsYWdzOmlucHV0RmxhZ3Mgd2l0aElu
cHV0TWFuYWdlckhpbnQ6bmlsIGtleUNvZGU6a2V5Q29kZSBpc1RhYktleTppc1RhYktleV0pLmdl
dCgpXTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgS2V5Ym9hcmRJbnRlcmFjdGlv
bjo6SW5zZXJ0QnlLZXk6IHsKICAgICAgICAgLy8gTW9kaWZpZXJzIG9ubHkgY2hhbmdlIHdpdGgg
S2V5UHJlc3Mgb3IgS2V5UmVsZWFzZSwgdGhpcyBjb2RlIHBhdGggaXMgZm9yIHNpbmdsZSBjaGFy
YWN0ZXJzLgotICAgICAgICBbZXZlbnRzVG9CZVNlbnQgYWRkT2JqZWN0OmFkb3B0TlMoW1s6Oldl
YkV2ZW50IGFsbG9jXSBpbml0V2l0aEtleUV2ZW50VHlwZTpXZWJFdmVudEtleURvd24gdGltZVN0
YW1wOkNGQWJzb2x1dGVUaW1lR2V0Q3VycmVudCgpIGNoYXJhY3RlcnM6Y2hhcmFjdGVycyBjaGFy
YWN0ZXJzSWdub3JpbmdNb2RpZmllcnM6dW5tb2RpZmllZENoYXJhY3RlcnMgbW9kaWZpZXJzOm1f
Y3VycmVudE1vZGlmaWVycyBpc1JlcGVhdGluZzpOTyB3aXRoRmxhZ3M6aW5wdXRGbGFncyB3aXRo
SW5wdXRNYW5hZ2VySGludDpuaWwga2V5Q29kZTprZXlDb2RlIGlzVGFiS2V5OmlzVGFiS2V5XSku
YXV0b3JlbGVhc2UoKV07Ci0gICAgICAgIFtldmVudHNUb0JlU2VudCBhZGRPYmplY3Q6YWRvcHRO
UyhbWzo6V2ViRXZlbnQgYWxsb2NdIGluaXRXaXRoS2V5RXZlbnRUeXBlOldlYkV2ZW50S2V5VXAg
dGltZVN0YW1wOkNGQWJzb2x1dGVUaW1lR2V0Q3VycmVudCgpIGNoYXJhY3RlcnM6Y2hhcmFjdGVy
cyBjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnM6dW5tb2RpZmllZENoYXJhY3RlcnMgbW9kaWZp
ZXJzOm1fY3VycmVudE1vZGlmaWVycyBpc1JlcGVhdGluZzpOTyB3aXRoRmxhZ3M6aW5wdXRGbGFn
cyB3aXRoSW5wdXRNYW5hZ2VySGludDpuaWwga2V5Q29kZTprZXlDb2RlIGlzVGFiS2V5OmlzVGFi
S2V5XSkuYXV0b3JlbGVhc2UoKV07CisgICAgICAgIFtldmVudHNUb0JlU2VudCBhZGRPYmplY3Q6
YWRvcHROUyhbWzo6V2ViRXZlbnQgYWxsb2NdIGluaXRXaXRoS2V5RXZlbnRUeXBlOldlYkV2ZW50
S2V5RG93biB0aW1lU3RhbXA6Q0ZBYnNvbHV0ZVRpbWVHZXRDdXJyZW50KCkgY2hhcmFjdGVyczpj
aGFyYWN0ZXJzIGNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVyczp1bm1vZGlmaWVkQ2hhcmFjdGVy
cyBtb2RpZmllcnM6bV9jdXJyZW50TW9kaWZpZXJzIGlzUmVwZWF0aW5nOk5PIHdpdGhGbGFnczpp
bnB1dEZsYWdzIHdpdGhJbnB1dE1hbmFnZXJIaW50Om5pbCBrZXlDb2RlOmtleUNvZGUgaXNUYWJL
ZXk6aXNUYWJLZXldKS5nZXQoKV07CisgICAgICAgIFtldmVudHNUb0JlU2VudCBhZGRPYmplY3Q6
YWRvcHROUyhbWzo6V2ViRXZlbnQgYWxsb2NdIGluaXRXaXRoS2V5RXZlbnRUeXBlOldlYkV2ZW50
S2V5VXAgdGltZVN0YW1wOkNGQWJzb2x1dGVUaW1lR2V0Q3VycmVudCgpIGNoYXJhY3RlcnM6Y2hh
cmFjdGVycyBjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnM6dW5tb2RpZmllZENoYXJhY3RlcnMg
bW9kaWZpZXJzOm1fY3VycmVudE1vZGlmaWVycyBpc1JlcGVhdGluZzpOTyB3aXRoRmxhZ3M6aW5w
dXRGbGFncyB3aXRoSW5wdXRNYW5hZ2VySGludDpuaWwga2V5Q29kZTprZXlDb2RlIGlzVGFiS2V5
OmlzVGFiS2V5XSkuZ2V0KCldOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV0tDb250YWN0UGlja2VyLm1tIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV0tDb250YWN0UGlja2VyLm1tCmluZGV4IDZh
OWQyYWU4MGYzNDYyNzQ0ZGIzMTU4YmY0YzA2ZDRlZjcwMGIzYjIuLjFlOTUwM2I0MzcyNzYwYTJi
NTUzNjMwYzQ4NmMwNDc3NDhkNzMyOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1dLQ29udGFjdFBpY2tlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9XS0NvbnRhY3RQaWNrZXIubW0KQEAgLTI5NCw3ICsyOTQsNyBAQCAtIChOU0FycmF5
PENOQ29udGFjdCo+ICopX2NvbnRhY3RzRnJvbUpTQ29udGFjdHM6KE5TQXJyYXkgKilqc0NvbnRh
Y3RzCiAgICAgICAgICAgICBbY29udGFjdCBzZXRQaG9uZU51bWJlcnM6bnVtYmVyc107CiAgICAg
ICAgIH0KIAotICAgICAgICBbY29udGFjdHMgYWRkT2JqZWN0OmNvbnRhY3QuYXV0b3JlbGVhc2Uo
KV07CisgICAgICAgIFtjb250YWN0cyBhZGRPYmplY3Q6Y29udGFjdC5nZXQoKV07CiAgICAgfQog
CiAgICAgcmV0dXJuIGNvbnRhY3RzOwo=
</data>
<flag name="commit-queue"
          id="439550"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>420874</attachid>
            <date>2021-02-18 14:44:36 -0800</date>
            <delta_ts>2021-02-18 22:12:42 -0800</delta_ts>
            <desc>Follow up</desc>
            <filename>bug-221932-20210218144435.patch</filename>
            <type>text/plain</type>
            <size>28279</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjczMTAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
ZjcyZmNlOTY0MjY4NWRmODIyM2IxYmQ0NDRiMzg3YjZkYjE0NDVkLi41ZWM4ZjY4OWVmMDExZmM0
YmFlOWJjNjhhOTdjMTkwN2Y0MzI1NzZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOCBAQAorMjAyMS0wMi0xOCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIFJlZHVjZSBleHBsaWNpdCB1c2FnZSBvZiBbb2JqQyBhdXRvcmVsZWFzZV0gaW4g
V2ViS2l0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MjE5MzIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzc0NDEwOTAwPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZvbGxvdy11cCB0byByMjcyOTM2IGlu
IG9yZGVyIHRvIGFkZHJlc3MgcG9zdC1sYW5kaW5nIHJldmlldyBjb21tZW50cy4KKworICAgICAg
ICAqIEFQSS9KU0NvbnRleHQubW06CisgICAgICAgICgtW0pTQ29udGV4dCBpbml0XSk6CisgICAg
ICAgICogQVBJL0pTV3JhcHBlck1hcC5tbToKKyAgICAgICAgKC1bSlNXcmFwcGVyTWFwIGNsYXNz
SW5mb0ZvckNsYXNzOl0pOgorCiAyMDIxLTAyLTE4ICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZA
YXBwbGUuY29tPgogCiAgICAgICAgIFtKU0NdIEltcGxlbWVudCBSZWdFeHAgTWF0Y2ggSW5kaWNl
cyBwcm9wb3NhbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGEzYjkyYjY1ZTFkNmYxN2E0ODYxY2IwYWFiZGQ3OWJk
NjBhOWI2ZWMuLjJhNDUyNTcxN2FhMDQ5ODIxMTQ1ODk4M2U1ZWIzMzcyZTc4N2Q2YzAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwyOCBAQAorMjAyMS0wMi0xOCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpA
YXBwbGUuY29tPgorCisgICAgICAgIFJlZHVjZSBleHBsaWNpdCB1c2FnZSBvZiBbb2JqQyBhdXRv
cmVsZWFzZV0gaW4gV2ViS2l0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMjE5MzIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzc0NDEwOTAwPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZvbGxvdy11cCB0
byByMjcyOTM2IGluIG9yZGVyIHRvIGFkZHJlc3MgcG9zdC1sYW5kaW5nIHJldmlldyBjb21tZW50
cy4KKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RX
cmFwcGVySU9TLm1tOgorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBf
c3RyaW5nRnJvbVN0YXJ0TWFya2VyOnRvRW5kTWFya2VyOmF0dHJpYnV0ZWQ6XSk6CisgICAgICAg
ICogZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW06CisgICAgICAgIChXZWJD
b3JlOjphdHRyaWJ1dGVzRm9yQXR0cmlidXRlZFN0cmluZ0NvbnZlcnNpb24pOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25PYmpDOjpjcmVhdGVBVkFzc2V0Rm9yVVJMKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9pb3MvV2ViQVZQbGF5ZXJDb250cm9sbGVyLm1tOgorICAgICAgICAoLVtXZWJBVlBsYXllckNv
bnRyb2xsZXIgaW5pdF0pOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy93YWsvV0FLVmlldy5tbToK
KyAgICAgICAgKC1bV0FLVmlldyBkZWFsbG9jXSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tOgorICAgICAgICAoLVtXZWJDb3JlTlNVUkxT
ZXNzaW9uRGF0YVRhc2sgaW5pdFdpdGhTZXNzaW9uOmlkZW50aWZpZXI6cmVxdWVzdDpdKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUhhbmRsZU1hYy5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpjcmVhdGVOU1VSTENvbm5lY3Rpb24pOgorCiAy
MDIxLTAyLTE4ICBLYXRlIENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgogCiAg
ICAgICAgIEFkZCBzdXBwb3J0IGZvciBub24gYXBwLWJvdW5kIHJlcXVlc3RzCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4
IDQxMzQwNmNjNWM2Nzk0MDk5ZDUwM2U3MTRmYjAzMDMxZTY4ZDFjZDYuLmZmNzgzZjY4ZDdkZTZh
ZjkyNzNiN2U1MDVkODk2OWEyYzBmZjE0MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzMgQEAKKzIw
MjEtMDItMTggIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBSZWR1
Y2UgZXhwbGljaXQgdXNhZ2Ugb2YgW29iakMgYXV0b3JlbGVhc2VdIGluIFdlYktpdAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxOTMyCisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS83NDQxMDkwMD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBGb2xsb3ctdXAgdG8gcjI3MjkzNiBpbiBvcmRlciB0byBhZGRy
ZXNzIHBvc3QtbGFuZGluZyByZXZpZXcgY29tbWVudHMuCisKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0NvY29hL05TQXR0cmlidXRlZFN0cmluZy5tbToKKyAgICAgICAgKCtbTlNBdHRyaWJ1dGVk
U3RyaW5nIF9sb2FkRnJvbUhUTUxXaXRoT3B0aW9uczpjb250ZW50TG9hZGVyOmNvbXBsZXRpb25I
YW5kbGVyOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgor
ICAgICAgICAoLVtXS1dlYlZpZXcgZmluZFN0cmluZzp3aXRoQ29uZmlndXJhdGlvbjpjb21wbGV0
aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9mcmFtZXM6XSk6CisgICAgICAg
ICgtW1dLV2ViVmlldyBfZ2V0Q29udGVudHNBc0F0dHJpYnV0ZWRTdHJpbmdXaXRoQ29tcGxldGlv
bkhhbmRsZXI6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdXRvbWF0aW9u
U2Vzc2lvbi5tbToKKyAgICAgICAgKC1bX1dLQXV0b21hdGlvblNlc3Npb24gaW5pdF0pOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yLm1tOgorICAgICAgICAoLVtf
V0tJbnNwZWN0b3IgcmVnaXN0ZXJFeHRlbnNpb25XaXRoSUQ6ZGlzcGxheU5hbWU6Y29tcGxldGlv
bkhhbmRsZXI6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tSZW1vdGVXZWJJ
bnNwZWN0b3JWaWV3Q29udHJvbGxlci5tbToKKyAgICAgICAgKC1bX1dLUmVtb3RlV2ViSW5zcGVj
dG9yVmlld0NvbnRyb2xsZXIgcmVnaXN0ZXJFeHRlbnNpb25XaXRoSUQ6ZGlzcGxheU5hbWU6Y29t
cGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tVc2Vy
Q29udGVudEV4dGVuc2lvblN0b3JlLm1tOgorICAgICAgICAoLVtfV0tVc2VyQ29udGVudEV4dGVu
c2lvblN0b3JlIGNvbXBpbGVDb250ZW50RXh0ZW5zaW9uRm9ySWRlbnRpZmllcjplbmNvZGVkQ29u
dGVudEV4dGVuc2lvbjpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bX1dLVXNlckNv
bnRlbnRFeHRlbnNpb25TdG9yZSBsb29rdXBDb250ZW50RXh0ZW5zaW9uRm9ySWRlbnRpZmllcjpj
b21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV0b21hdGlvbi9pb3Mv
V2ViQXV0b21hdGlvblNlc3Npb25JT1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRp
b25TZXNzaW9uOjpwbGF0Zm9ybVNpbXVsYXRlS2V5Ym9hcmRJbnRlcmFjdGlvbik6CisgICAgICAg
ICogVUlQcm9jZXNzL0NvY29hL1dLQ29udGFjdFBpY2tlci5tbToKKyAgICAgICAgKC1bV0tDb250
YWN0UGlja2VyIF9jb250YWN0c0Zyb21KU0NvbnRhY3RzOl0pOgorCiAyMDIxLTAyLTE4ICBLYXRl
IENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBzdXBw
b3J0IGZvciBub24gYXBwLWJvdW5kIHJlcXVlc3RzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL0pTQ29udGV4dC5tbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlND
b250ZXh0Lm1tCmluZGV4IDZiZWIyNWJmNmFlZWQ3NThhMjA2MTE3Y2FlNzE4Yjc4YTAwMjNhMzcu
LjJjYzJmNmM4OWZkYzNhNDk5YWM0MTE2MjdlZDdhMzNiNjUwZjFkNWMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0Lm1tCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvSlNDb250ZXh0Lm1tCkBAIC02OCw3ICs2OCw3IEBAIC0gKHZvaWQpZW5zdXJl
V3JhcHBlck1hcAogCiAtIChpbnN0YW5jZXR5cGUpaW5pdAogewotICAgIHJldHVybiBbc2VsZiBp
bml0V2l0aFZpcnR1YWxNYWNoaW5lOmFkb3B0TlMoW1tKU1ZpcnR1YWxNYWNoaW5lIGFsbG9jXSBp
bml0XSkuYXV0b3JlbGVhc2UoKV07CisgICAgcmV0dXJuIFtzZWxmIGluaXRXaXRoVmlydHVhbE1h
Y2hpbmU6YWRvcHROUyhbW0pTVmlydHVhbE1hY2hpbmUgYWxsb2NdIGluaXRdKS5nZXQoKV07CiB9
CiAKIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aFZpcnR1YWxNYWNoaW5lOihKU1ZpcnR1YWxNYWNo
aW5lICopdmlydHVhbE1hY2hpbmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNXcmFwcGVyTWFwLm1tIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1dyYXBwZXJN
YXAubW0KaW5kZXggODUyZmI5MjkzZjYwYmQ5YjdlNDZjM2VjNzUwZjMyMjkxMTVjZWQxNC4uZDg5
YmZlYTRiYmRiYjM5ODJmYTBlMGNlYzIyMjdkODk2OGRjYjZjYSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9KU1dyYXBwZXJNYXAubW0KKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS9KU1dyYXBwZXJNYXAubW0KQEAgLTYzNSw3ICs2MzUsNyBAQCAtIChKU09iakND
bGFzc0luZm8qKWNsYXNzSW5mb0ZvckNsYXNzOihDbGFzcyljbHMKICAgICAgICAgICAgIHJldHVy
biBtX2NsYXNzTWFwLmdldCgpWyhpZCljbHNdID0gW3NlbGYgY2xhc3NJbmZvRm9yQ2xhc3M6Y2xh
c3NfZ2V0U3VwZXJjbGFzcyhjbHMpXTsKICAgICB9CiAKLSAgICByZXR1cm4gbV9jbGFzc01hcC5n
ZXQoKVsoaWQpY2xzXSA9IGFkb3B0TlMoW1tKU09iakNDbGFzc0luZm8gYWxsb2NdIGluaXRGb3JD
bGFzczpjbHNdKS5hdXRvcmVsZWFzZSgpOworICAgIHJldHVybiBtX2NsYXNzTWFwLmdldCgpWyhp
ZCljbHNdID0gYWRvcHROUyhbW0pTT2JqQ0NsYXNzSW5mbyBhbGxvY10gaW5pdEZvckNsYXNzOmNs
c10pLmdldCgpOwogfQogCiAtIChKU1ZhbHVlICopanNXcmFwcGVyRm9yT2JqZWN0OihpZClvYmpl
Y3QgaW5Db250ZXh0OihKU0NvbnRleHQgKiljb250ZXh0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5t
bSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmpl
Y3RXcmFwcGVySU9TLm1tCmluZGV4IGYwYTk5MGU5MTczNTk1MTA1NDU0OGViY2UyMDNhMjU0OWZm
MjRkMGYuLjNmYjRkMGNhNTVmMWVhNTY1YjdjMmUxNjI2Y2JkMjJmMzc2ZjcwNTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmpl
Y3RXcmFwcGVySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dl
YkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tCkBAIC0yNTU1LDE4ICsyNTU1LDE4IEBA
IC0gKGlkKV9zdHJpbmdGcm9tU3RhcnRNYXJrZXI6KFdlYkFjY2Vzc2liaWxpdHlUZXh0TWFya2Vy
KilzdGFydE1hcmtlciB0b0VuZE1hcmtlCiAgICAgY29uc3QgdW5pY2hhciBhdHRhY2htZW50Q2hh
ciA9IE5TQXR0YWNobWVudENoYXJhY3RlcjsKICAgICBOU0ludGVnZXIgY291bnQgPSBbYXJyYXkg
Y291bnRdOwogICAgIGZvciAoTlNJbnRlZ2VyIGsgPSAwOyBrIDwgY291bnQ7ICsraykgewotICAg
ICAgICBpZCBvYmplY3QgPSBbYXJyYXkgb2JqZWN0QXRJbmRleDprXTsKKyAgICAgICAgYXV0byBv
YmplY3QgPSByZXRhaW5QdHIoW2FycmF5IG9iamVjdEF0SW5kZXg6a10pOwogCiAgICAgICAgIGlm
IChhdHRyaWJ1dGVkICYmIFtvYmplY3QgaXNLaW5kT2ZDbGFzczpbV2ViQWNjZXNzaWJpbGl0eU9i
amVjdFdyYXBwZXIgY2xhc3NdXSkKLSAgICAgICAgICAgIG9iamVjdCA9IGFkb3B0TlMoW1tOU011
dGFibGVBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFN0cmluZzpbTlNTdHJpbmcgc3Ry
aW5nV2l0aENoYXJhY3RlcnM6JmF0dGFjaG1lbnRDaGFyIGxlbmd0aDoxXSBhdHRyaWJ1dGVzOkB7
IFVJQWNjZXNzaWJpbGl0eVRva2VuQXR0YWNobWVudCA6IG9iamVjdCB9XSkuYXV0b3JlbGVhc2Uo
KTsKKyAgICAgICAgICAgIG9iamVjdCA9IGFkb3B0TlMoW1tOU011dGFibGVBdHRyaWJ1dGVkU3Ry
aW5nIGFsbG9jXSBpbml0V2l0aFN0cmluZzpbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6
JmF0dGFjaG1lbnRDaGFyIGxlbmd0aDoxXSBhdHRyaWJ1dGVzOkB7IFVJQWNjZXNzaWJpbGl0eVRv
a2VuQXR0YWNobWVudCA6IG9iamVjdC5nZXQoKSB9XSk7CiAgICAgICAgIAogICAgICAgICBpZiAo
IVtvYmplY3QgaXNLaW5kT2ZDbGFzczpyZXR1cm5DbGFzc10pCiAgICAgICAgICAgICBjb250aW51
ZTsKICAgICAgICAgCiAgICAgICAgIGlmIChhdHRyaWJ1dGVkKQotICAgICAgICAgICAgWyhOU011
dGFibGVBdHRyaWJ1dGVkU3RyaW5nICopcmV0dXJuVmFsdWUuZ2V0KCkgYXBwZW5kQXR0cmlidXRl
ZFN0cmluZzpvYmplY3RdOworICAgICAgICAgICAgWyhOU011dGFibGVBdHRyaWJ1dGVkU3RyaW5n
ICopcmV0dXJuVmFsdWUuZ2V0KCkgYXBwZW5kQXR0cmlidXRlZFN0cmluZzpvYmplY3QuZ2V0KCld
OwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBbKE5TTXV0YWJsZVN0cmluZyAqKXJldHVyblZh
bHVlLmdldCgpIGFwcGVuZFN0cmluZzpvYmplY3RdOworICAgICAgICAgICAgWyhOU011dGFibGVT
dHJpbmcgKilyZXR1cm5WYWx1ZS5nZXQoKSBhcHBlbmRTdHJpbmc6b2JqZWN0LmdldCgpXTsKICAg
ICB9CiAgICAgcmV0dXJuIHJldHVyblZhbHVlLmF1dG9yZWxlYXNlKCk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbSBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tCmlu
ZGV4IGQ1ODk2ZmQ5NDAyMzk4NDJhMDYzOTUxMDE3YjcyZWJkMWE2NGUyZTQuLjlhYzQzOGNhNDU5
MWUwNTBiYWFhYWI5YjYzZDJkZDk1YjkzMTQzZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tCkBAIC0xMjgsNyArMTI4
LDcgQEAgc3RhdGljIE5TRGljdGlvbmFyeSAqYXR0cmlidXRlc0ZvckF0dHJpYnV0ZWRTdHJpbmdD
b252ZXJzaW9uKCkKICAgICAgICAgQCJJbnRlcmNoYW5nZU5ld2xpbmUiOiBAWUVTLAogICAgICAg
ICBAIkNvYWxlc2NlVGFiU3BhbnMiOiBAWUVTLAogICAgICAgICBAIk91dHB1dEJhc2VVUkwiOiBi
YXNlVVJMLAotICAgICAgICBAIldlYlJlc291cmNlSGFuZGxlciI6IGFkb3B0TlMoW1dlYkFyY2hp
dmVSZXNvdXJjZVdlYlJlc291cmNlSGFuZGxlciBuZXddKS5hdXRvcmVsZWFzZSgpLAorICAgICAg
ICBAIldlYlJlc291cmNlSGFuZGxlciI6IGFkb3B0TlMoW1dlYkFyY2hpdmVSZXNvdXJjZVdlYlJl
c291cmNlSGFuZGxlciBuZXddKS5nZXQoKSwKICAgICB9OwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
Qy5tbQppbmRleCBhNzkxMzRhNGU3YmVhNmYwNTc3YmE1MjAzYjk2ZWVjYzEwZDAyNzViLi4zZDg5
ZDA5MWY0YTJmYjA2ZWZmNjg4ZTNjNmZmZTgxZTJlNDlmNjllIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akMubW0KQEAgLTkyMCw3ICs5MjAsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakM6OmNyZWF0ZUFWQXNzZXRGb3JVUkwoY29uc3QgVVJMJiB1cmwsIFJldAogICAgICAg
ICAmJiBbcmVzb3VyY2VMb2FkZXIgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihVUkxTZXNz
aW9uRGF0YURlbGVnYXRlUXVldWUpXSkgewogICAgICAgICBSZWZQdHI8UGxhdGZvcm1NZWRpYVJl
c291cmNlTG9hZGVyPiBtZWRpYVJlc291cmNlTG9hZGVyID0gcGxheWVyKCktPmNyZWF0ZVJlc291
cmNlTG9hZGVyKCk7CiAgICAgICAgIGlmIChtZWRpYVJlc291cmNlTG9hZGVyKQotICAgICAgICAg
ICAgcmVzb3VyY2VMb2FkZXIuVVJMU2Vzc2lvbiA9IChOU1VSTFNlc3Npb24gKilhZG9wdE5TKFtb
V2ViQ29yZU5TVVJMU2Vzc2lvbiBhbGxvY10gaW5pdFdpdGhSZXNvdXJjZUxvYWRlcjoqbWVkaWFS
ZXNvdXJjZUxvYWRlciBkZWxlZ2F0ZTpyZXNvdXJjZUxvYWRlci5VUkxTZXNzaW9uRGF0YURlbGVn
YXRlIGRlbGVnYXRlUXVldWU6cmVzb3VyY2VMb2FkZXIuVVJMU2Vzc2lvbkRhdGFEZWxlZ2F0ZVF1
ZXVlXSkuYXV0b3JlbGVhc2UoKTsKKyAgICAgICAgICAgIHJlc291cmNlTG9hZGVyLlVSTFNlc3Np
b24gPSAoTlNVUkxTZXNzaW9uICopYWRvcHROUyhbW1dlYkNvcmVOU1VSTFNlc3Npb24gYWxsb2Nd
IGluaXRXaXRoUmVzb3VyY2VMb2FkZXI6Km1lZGlhUmVzb3VyY2VMb2FkZXIgZGVsZWdhdGU6cmVz
b3VyY2VMb2FkZXIuVVJMU2Vzc2lvbkRhdGFEZWxlZ2F0ZSBkZWxlZ2F0ZVF1ZXVlOnJlc291cmNl
TG9hZGVyLlVSTFNlc3Npb25EYXRhRGVsZWdhdGVRdWV1ZV0pLmdldCgpOwogICAgIH0KIAogICAg
IG1faGF2ZUNoZWNrZWRQbGF5YWJpbGl0eSA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW9zL1dlYkFWUGxheWVyQ29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy9XZWJBVlBsYXllckNvbnRyb2xsZXIubW0KaW5kZXggOTY4YTQxMWQ5
ZmQyZTJhYTljNDBkOWNhZGNiOTFmOTEzYTJjZTIyMy4uZGM2MTc0ZGI0ZWU2Mzk5YWFkZDc1OTcx
YTU0MDQyMGE1NWJiN2VmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9z
L1dlYkFWUGxheWVyQ29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
b3MvV2ViQVZQbGF5ZXJDb250cm9sbGVyLm1tCkBAIC02OSw3ICs2OSw3IEBAIC0gKGluc3RhbmNl
dHlwZSlpbml0CiAgICAgICAgIHJldHVybiBzZWxmOwogCiAgICAgaW5pdEFWUGxheWVyQ29udHJv
bGxlcigpOwotICAgIHNlbGYucGxheWVyQ29udHJvbGxlclByb3h5ID0gYWRvcHROUyhbYWxsb2NB
VlBsYXllckNvbnRyb2xsZXJJbnN0YW5jZSgpIGluaXRdKS5hdXRvcmVsZWFzZSgpOworICAgIHNl
bGYucGxheWVyQ29udHJvbGxlclByb3h5ID0gYWRvcHROUyhbYWxsb2NBVlBsYXllckNvbnRyb2xs
ZXJJbnN0YW5jZSgpIGluaXRdKS5nZXQoKTsKICAgICBfbGl2ZVN0cmVhbUV2ZW50TW9kZVBvc3Np
YmxlID0gWUVTOwogCiAgICAgW3NlbGYgYWRkT2JzZXJ2ZXI6c2VsZiBmb3JLZXlQYXRoOkAic2Vl
a2FibGVUaW1lUmFuZ2VzIiBvcHRpb25zOihOU0tleVZhbHVlT2JzZXJ2aW5nT3B0aW9uT2xkIHwg
TlNLZXlWYWx1ZU9ic2VydmluZ09wdGlvbk5ldyB8IE5TS2V5VmFsdWVPYnNlcnZpbmdPcHRpb25J
bml0aWFsKSBjb250ZXh0OldlYkFWUGxheWVyQ29udHJvbGxlclNlZWthYmxlVGltZVJhbmdlc09i
c2VydmVyQ29udGV4dF07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
d2FrL1dBS1ZpZXcubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dBS1ZpZXcu
bW0KaW5kZXggNWQ2MjcyNjlhNzE3YzVlMDgwOTM1YWUxY2FmMTRmMjgwMDZlNDQ5MS4uZjU2ZGUw
NGE5MDVjYWQ0OWRiOTAzNTliMDJlNGM4NjY1ODE0NzVmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XQUtWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy93YWsvV0FLVmlldy5tbQpAQCAtMjM4LDcgKzIzOCw3IEBAIC0gKGlkKWluaXRX
aXRoRnJhbWU6KENHUmVjdClyZWN0CiAKIC0gKHZvaWQpZGVhbGxvYwogewotICAgIFthZG9wdE5T
KFtzdWJ2aWV3UmVmZXJlbmNlcyBjb3B5XSkuYXV0b3JlbGVhc2UoKSBtYWtlT2JqZWN0c1BlcmZv
cm1TZWxlY3RvcjpAc2VsZWN0b3IocmVtb3ZlRnJvbVN1cGVydmlldyldOworICAgIFthZG9wdE5T
KFtzdWJ2aWV3UmVmZXJlbmNlcyBjb3B5XSkgbWFrZU9iamVjdHNQZXJmb3JtU2VsZWN0b3I6QHNl
bGVjdG9yKHJlbW92ZUZyb21TdXBlcnZpZXcpXTsKIAogICAgIGlmICh2aWV3UmVmKSB7CiAgICAg
ICAgIF9XS1ZpZXdTZXRWaWV3Q29udGV4dCAodmlld1JlZiwgMCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Np
b24ubW0KaW5kZXggNmNkYzNlMDA3M2UxMDZhNzYyNWE2YTE4OTFmODVkYTUyNGFjYzgyYS4uZWVj
NGU0ZjljNmZjOWU3OGVkMWM2YzFjZWU3OGFjN2JlYmU4MGM1NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vz
c2lvbi5tbQpAQCAtNjYxLDEwICs2NjEsMTEgQEAgLSAoaWQpaW5pdFdpdGhTZXNzaW9uOihXZWJD
b3JlTlNVUkxTZXNzaW9uICopc2Vzc2lvbiBpZGVudGlmaWVyOihOU1VJbnRlZ2VyKWlkZW4KICAg
ICBzZWxmLnByaW9yaXR5ID0gTlNVUkxTZXNzaW9uVGFza1ByaW9yaXR5RGVmYXVsdDsKIAogICAg
IC8vIENvcmVNZWRpYSB3aWxsIGV4cGxpY2l0bHkgYWRkIGEgdXNlciBhZ2VudCBoZWFkZXIuIFJl
bW92ZSBpZiBwcmVzZW50LgorICAgIFJldGFpblB0cjxOU011dGFibGVVUkxSZXF1ZXN0PiBtdXRh
YmxlUmVxdWVzdDsKICAgICBpZiAoYXV0byogdXNlckFnZW50VmFsdWUgPSBbcmVxdWVzdCB2YWx1
ZUZvckhUVFBIZWFkZXJGaWVsZDpAIlVzZXItQWdlbnQiXSkgewotICAgICAgICBhdXRvIG11dGFi
bGVSZXF1ZXN0ID0gYWRvcHROUyhbcmVxdWVzdCBtdXRhYmxlQ29weVdpdGhab25lOm5pbF0pOwor
ICAgICAgICBtdXRhYmxlUmVxdWVzdCA9IGFkb3B0TlMoW3JlcXVlc3QgbXV0YWJsZUNvcHlXaXRo
Wm9uZTpuaWxdKTsKICAgICAgICAgW211dGFibGVSZXF1ZXN0IHNldFZhbHVlOm5pbCBmb3JIVFRQ
SGVhZGVyRmllbGQ6QCJVc2VyLUFnZW50Il07Ci0gICAgICAgIHJlcXVlc3QgPSBtdXRhYmxlUmVx
dWVzdC5hdXRvcmVsZWFzZSgpOworICAgICAgICByZXF1ZXN0ID0gbXV0YWJsZVJlcXVlc3QuZ2V0
KCk7CiAgICAgfQogCiAgICAgc2VsZi5vcmlnaW5hbFJlcXVlc3QgPSBzZWxmLmN1cnJlbnRSZXF1
ZXN0ID0gcmVxdWVzdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvbWFjL1Jlc291cmNlSGFuZGxlTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMubW0KaW5kZXggMzEzNTU0ZGRmY2NhODgzN2Y4OGZh
YTM2YTE0ZDdhZTMyYTBjMDM5My4uYTRjMWRkYmU1OTA2N2E0Nzc1ZTMxOTRhNGFiN2E2MjI0MmZh
MGU0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVz
b3VyY2VIYW5kbGVNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9t
YWMvUmVzb3VyY2VIYW5kbGVNYWMubW0KQEAgLTE2OSwyMCArMTY5LDI0IEBAIHZvaWQgUmVzb3Vy
Y2VIYW5kbGU6OmNyZWF0ZU5TVVJMQ29ubmVjdGlvbihpZCBkZWxlZ2F0ZSwgYm9vbCBzaG91bGRV
c2VDcmVkZW50aWFsCiAgICAgICAgIGFwcGx5QmFzaWNBdXRob3JpemF0aW9uSGVhZGVyKGZpcnN0
UmVxdWVzdCgpLCBkLT5tX2luaXRpYWxDcmVkZW50aWFsKTsKICAgICB9CiAKLSAgICBOU1VSTFJl
cXVlc3QgKm5zUmVxdWVzdCA9IGZpcnN0UmVxdWVzdCgpLm5zVVJMUmVxdWVzdChIVFRQQm9keVVw
ZGF0ZVBvbGljeTo6VXBkYXRlSFRUUEJvZHkpOwotICAgIG5zUmVxdWVzdCA9IGFwcGx5U25pZmZp
bmdQb2xpY2llc0lmTmVlZGVkKG5zUmVxdWVzdCwgc2hvdWxkQ29udGVudFNuaWZmLCBzaG91bGRD
b250ZW50RW5jb2RpbmdTbmlmZik7CisgICAgYXV0byBuc1JlcXVlc3QgPSByZXRhaW5QdHIoZmly
c3RSZXF1ZXN0KCkubnNVUkxSZXF1ZXN0KEhUVFBCb2R5VXBkYXRlUG9saWN5OjpVcGRhdGVIVFRQ
Qm9keSkpOworICAgIG5zUmVxdWVzdCA9IGFwcGx5U25pZmZpbmdQb2xpY2llc0lmTmVlZGVkKG5z
UmVxdWVzdC5nZXQoKSwgc2hvdWxkQ29udGVudFNuaWZmLCBzaG91bGRDb250ZW50RW5jb2RpbmdT
bmlmZik7CiAKICAgICBpZiAoZC0+bV9zdG9yYWdlU2Vzc2lvbikKLSAgICAgICAgbnNSZXF1ZXN0
ID0gY29weVJlcXVlc3RXaXRoU3RvcmFnZVNlc3Npb24oZC0+bV9zdG9yYWdlU2Vzc2lvbi5nZXQo
KSwgbnNSZXF1ZXN0KS5hdXRvcmVsZWFzZSgpOworICAgICAgICBuc1JlcXVlc3QgPSBjb3B5UmVx
dWVzdFdpdGhTdG9yYWdlU2Vzc2lvbihkLT5tX3N0b3JhZ2VTZXNzaW9uLmdldCgpLCBuc1JlcXVl
c3QuZ2V0KCkpOwogCiAgICAgQVNTRVJUKFtOU1VSTENvbm5lY3Rpb24gaW5zdGFuY2VzUmVzcG9u
ZFRvU2VsZWN0b3I6QHNlbGVjdG9yKF9pbml0V2l0aFJlcXVlc3Q6ZGVsZWdhdGU6dXNlc0NhY2hl
Om1heENvbnRlbnRMZW5ndGg6c3RhcnRJbW1lZGlhdGVseTpjb25uZWN0aW9uUHJvcGVydGllczop
XSk7CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIC8vIEZJWE1FOiBUaGlzIGNvZGUg
aXMgZGlmZmVyZW50IGZyb20gaU9TIGNvZGUgaW4gUmVzb3VyY2VIYW5kbGVDRk5ldC5jcHAgaW4g
dGhhdCBoZXJlIHdlIHJlc3BlY3Qgc3RyZWFtIHByb3BlcnRpZXMgdGhhdCB3ZXJlIHByZXNlbnQg
aW4gY2xpZW50IHByb3BlcnRpZXMuCiAgICAgTlNEaWN0aW9uYXJ5ICpzdHJlYW1Qcm9wZXJ0aWVz
RnJvbUNsaWVudCA9IFtjb25uZWN0aW9uUHJvcGVydGllcyBvYmplY3RGb3JLZXk6QCJrQ0ZVUkxD
b25uZWN0aW9uU29ja2V0U3RyZWFtUHJvcGVydGllcyJdOwotICAgIE5TTXV0YWJsZURpY3Rpb25h
cnkgKnN0cmVhbVByb3BlcnRpZXMgPSBzdHJlYW1Qcm9wZXJ0aWVzRnJvbUNsaWVudCA/IGFkb3B0
TlMoW3N0cmVhbVByb3BlcnRpZXNGcm9tQ2xpZW50IG11dGFibGVDb3B5XSkuYXV0b3JlbGVhc2Uo
KSA6IFtOU011dGFibGVEaWN0aW9uYXJ5IGRpY3Rpb25hcnldOworICAgIFJldGFpblB0cjxOU011
dGFibGVEaWN0aW9uYXJ5PiBzdHJlYW1Qcm9wZXJ0aWVzOworICAgIGlmIChzdHJlYW1Qcm9wZXJ0
aWVzRnJvbUNsaWVudCkKKyAgICAgICAgc3RyZWFtUHJvcGVydGllcyA9IGFkb3B0TlMoW3N0cmVh
bVByb3BlcnRpZXNGcm9tQ2xpZW50IG11dGFibGVDb3B5XSk7CisgICAgZWxzZQorICAgICAgICBz
dHJlYW1Qcm9wZXJ0aWVzID0gcmV0YWluUHRyKFtOU011dGFibGVEaWN0aW9uYXJ5IGRpY3Rpb25h
cnldKTsKICNlbHNlCi0gICAgTlNNdXRhYmxlRGljdGlvbmFyeSAqc3RyZWFtUHJvcGVydGllcyA9
IFtOU011dGFibGVEaWN0aW9uYXJ5IGRpY3Rpb25hcnldOworICAgIGF1dG8gc3RyZWFtUHJvcGVy
dGllcyA9IHJldGFpblB0cihbTlNNdXRhYmxlRGljdGlvbmFyeSBkaWN0aW9uYXJ5XSk7CiAjZW5k
aWYKIAogICAgIGlmICghc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UpIHsKQEAgLTIwNSwxNCAr
MjA5LDE0IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OmNyZWF0ZU5TVVJMQ29ubmVjdGlvbihpZCBk
ZWxlZ2F0ZSwgYm9vbCBzaG91bGRVc2VDcmVkZW50aWFsCiAKICNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQogICAgIE5TTXV0YWJsZURpY3Rpb25hcnkgKnByb3BlcnR5RGljdGlvbmFyeSA9IFtOU011
dGFibGVEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRoRGljdGlvbmFyeTpjb25uZWN0aW9uUHJvcGVy
dGllc107Ci0gICAgW3Byb3BlcnR5RGljdGlvbmFyeSBzZXRPYmplY3Q6c3RyZWFtUHJvcGVydGll
cyBmb3JLZXk6QCJrQ0ZVUkxDb25uZWN0aW9uU29ja2V0U3RyZWFtUHJvcGVydGllcyJdOworICAg
IFtwcm9wZXJ0eURpY3Rpb25hcnkgc2V0T2JqZWN0OnN0cmVhbVByb3BlcnRpZXMuZ2V0KCkgZm9y
S2V5OkAia0NGVVJMQ29ubmVjdGlvblNvY2tldFN0cmVhbVByb3BlcnRpZXMiXTsKICAgICBjb25z
dCBib29sIHVzZXNDYWNoZSA9IGZhbHNlOwogI2lmICFQTEFURk9STShNQUNDQVRBTFlTVCkKICAg
ICBpZiAoc3luY2hyb25vdXNXaWxsU2VuZFJlcXVlc3RFbmFibGVkKCkpCiAgICAgICAgIENGVVJM
UmVxdWVzdFNldFNob3VsZFN0YXJ0U3luY2hyb25vdXNseShbbnNSZXF1ZXN0IF9DRlVSTFJlcXVl
c3RdLCAxKTsKICNlbmRpZgogI2Vsc2UKLSAgICBOU011dGFibGVEaWN0aW9uYXJ5ICpwcm9wZXJ0
eURpY3Rpb25hcnkgPSBbTlNNdXRhYmxlRGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9iamVjdDpz
dHJlYW1Qcm9wZXJ0aWVzIGZvcktleTpAImtDRlVSTENvbm5lY3Rpb25Tb2NrZXRTdHJlYW1Qcm9w
ZXJ0aWVzIl07CisgICAgTlNNdXRhYmxlRGljdGlvbmFyeSAqcHJvcGVydHlEaWN0aW9uYXJ5ID0g
W05TTXV0YWJsZURpY3Rpb25hcnkgZGljdGlvbmFyeVdpdGhPYmplY3Q6c3RyZWFtUHJvcGVydGll
cy5nZXQoKSBmb3JLZXk6QCJrQ0ZVUkxDb25uZWN0aW9uU29ja2V0U3RyZWFtUHJvcGVydGllcyJd
OwogICAgIGNvbnN0IGJvb2wgdXNlc0NhY2hlID0gdHJ1ZTsKICNlbmRpZgogICAgIFtwcm9wZXJ0
eURpY3Rpb25hcnkgc2V0T2JqZWN0OkB7QCJfa0NGVVJMQ29ubmVjdGlvblByb3BlcnR5VGltaW5n
RGF0YU9wdGlvbnMiOiBAKF9UaW1pbmdEYXRhT3B0aW9uc0VuYWJsZVczQ05hdmlnYXRpb25UaW1p
bmcpfSBmb3JLZXk6QCJrQ0ZVUkxDb25uZWN0aW9uVVJMQ29ubmVjdGlvblByb3BlcnRpZXMiXTsK
QEAgLTIyMiw3ICsyMjYsNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpjcmVhdGVOU1VSTENvbm5l
Y3Rpb24oaWQgZGVsZWdhdGUsIGJvb2wgc2hvdWxkVXNlQ3JlZGVudGlhbAogICAgIFtwcm9wZXJ0
eURpY3Rpb25hcnkgc2V0T2JqZWN0OkB7QCJOU0FsbG93c0FyYml0cmFyeUxvYWRzSW5XZWJDb250
ZW50IjogQFlFU30gZm9yS2V5OkAiX2tDRlVSTENvbm5lY3Rpb25Qcm9wZXJ0eUFUU0ZyYW1ld29y
a092ZXJyaWRlcyJdOwogCiBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgotICAg
IGQtPm1fY29ubmVjdGlvbiA9IGFkb3B0TlMoW1tOU1VSTENvbm5lY3Rpb24gYWxsb2NdIF9pbml0
V2l0aFJlcXVlc3Q6bnNSZXF1ZXN0IGRlbGVnYXRlOmRlbGVnYXRlIHVzZXNDYWNoZTp1c2VzQ2Fj
aGUgbWF4Q29udGVudExlbmd0aDowIHN0YXJ0SW1tZWRpYXRlbHk6Tk8gY29ubmVjdGlvblByb3Bl
cnRpZXM6cHJvcGVydHlEaWN0aW9uYXJ5XSk7CisgICAgZC0+bV9jb25uZWN0aW9uID0gYWRvcHRO
UyhbW05TVVJMQ29ubmVjdGlvbiBhbGxvY10gX2luaXRXaXRoUmVxdWVzdDpuc1JlcXVlc3QuZ2V0
KCkgZGVsZWdhdGU6ZGVsZWdhdGUgdXNlc0NhY2hlOnVzZXNDYWNoZSBtYXhDb250ZW50TGVuZ3Ro
OjAgc3RhcnRJbW1lZGlhdGVseTpOTyBjb25uZWN0aW9uUHJvcGVydGllczpwcm9wZXJ0eURpY3Rp
b25hcnldKTsKIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvTlNBdHRyaWJ1dGVkU3RyaW5n
Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL05TQXR0cmlidXRlZFN0cmlu
Zy5tbQppbmRleCA2MGYwYTUxZWZkMjk0NGZkNDIyY2MxYzIwNTNjZmJkY2VkMTRhNjM3Li5hMTBk
MjI4OGJlNjIwZDIyM2ZiMjllZTRhMDU1OGRlZTk3YjYyYjE2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvTlNBdHRyaWJ1dGVkU3RyaW5nLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9OU0F0dHJpYnV0ZWRTdHJpbmcubW0KQEAg
LTMxMCw3ICszMTAsNyBAQCArICh2b2lkKV9sb2FkRnJvbUhUTUxXaXRoT3B0aW9uczooTlNEaWN0
aW9uYXJ5PE5TQXR0cmlidXRlZFN0cmluZ0RvY3VtZW50UmVhZGluZwogICAgICAgICAgICAgW3dl
YlZpZXcgX2dldENvbnRlbnRzQXNBdHRyaWJ1dGVkU3RyaW5nV2l0aENvbXBsZXRpb25IYW5kbGVy
Ol4oTlNBdHRyaWJ1dGVkU3RyaW5nICphdHRyaWJ1dGVkU3RyaW5nLCBOU0RpY3Rpb25hcnk8TlNB
dHRyaWJ1dGVkU3RyaW5nRG9jdW1lbnRBdHRyaWJ1dGVLZXksIGlkPiAqZG9jdW1lbnRBdHRyaWJ1
dGVzLCBOU0Vycm9yICplcnJvcikgewogICAgICAgICAgICAgICAgIGlmIChlcnJvcikKICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIGNhbmNlbChXS0Vycm9yVW5rbm93biwgZXJyb3IpOwotICAg
ICAgICAgICAgICAgIGZpbmlzaChyZXRhaW5QdHIoYXR0cmlidXRlZFN0cmluZykuYXV0b3JlbGVh
c2UoKSwgcmV0YWluUHRyKGRvY3VtZW50QXR0cmlidXRlcykuYXV0b3JlbGVhc2UoKSwgbmlsKTsK
KyAgICAgICAgICAgICAgICBmaW5pc2goYXR0cmlidXRlZFN0cmluZywgZG9jdW1lbnRBdHRyaWJ1
dGVzLCBuaWwpOwogICAgICAgICAgICAgfV07CiAgICAgICAgIH07CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0gYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCmluZGV4IGQ5MDNlZjYxNTU4ZmJl
NDU2NzI0ZTYyMWEzMDE4YzNlMWY3ZmQ1YTEuLmEzYmNjNzM1ZDY2ZTYyMzU0YTIyNTBiOTA5YmMz
MGJjOTY5MjU1NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlldy5tbQpAQCAtMTIxMSwxMiArMTIxMSwxMiBAQCBpbmxpbmUgT3B0aW9uU2V0PFdlYktp
dDo6RmluZE9wdGlvbnM+IHRvRmluZE9wdGlvbnMoV0tGaW5kQ29uZmlndXJhdGlvbiAqY29uZmln
dQogLSAodm9pZClmaW5kU3RyaW5nOihOU1N0cmluZyAqKXN0cmluZyB3aXRoQ29uZmlndXJhdGlv
bjooV0tGaW5kQ29uZmlndXJhdGlvbiAqKWNvbmZpZ3VyYXRpb24gY29tcGxldGlvbkhhbmRsZXI6
KHZvaWQgKF4pKFdLRmluZFJlc3VsdCAqcmVzdWx0KSljb21wbGV0aW9uSGFuZGxlcgogewogICAg
IGlmICghc3RyaW5nLmxlbmd0aCkgewotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihhZG9wdE5T
KFtbV0tGaW5kUmVzdWx0IGFsbG9jXSBfaW5pdFdpdGhNYXRjaEZvdW5kOk5PXSkuYXV0b3JlbGVh
c2UoKSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGFkb3B0TlMoW1tXS0ZpbmRSZXN1bHQg
YWxsb2NdIF9pbml0V2l0aE1hdGNoRm91bmQ6Tk9dKS5nZXQoKSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKICAgICBfcGFnZS0+ZmluZFN0cmluZyhzdHJpbmcsIHRvRmluZE9wdGlvbnMoY29u
ZmlndXJhdGlvbiksIDEsIFtoYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVy
KV0oYm9vbCBmb3VuZCkgewotICAgICAgICBoYW5kbGVyKGFkb3B0TlMoW1tXS0ZpbmRSZXN1bHQg
YWxsb2NdIF9pbml0V2l0aE1hdGNoRm91bmQ6Zm91bmRdKS5hdXRvcmVsZWFzZSgpKTsKKyAgICAg
ICAgaGFuZGxlcihhZG9wdE5TKFtbV0tGaW5kUmVzdWx0IGFsbG9jXSBfaW5pdFdpdGhNYXRjaEZv
dW5kOmZvdW5kXSkuZ2V0KCkpOwogICAgIH0pOwogfQogCkBAIC0xNzEzLDggKzE3MTMsNyBAQCAt
IChCT09MKV9uZWdvdGlhdGVkTGVnYWN5VExTCiAtICh2b2lkKV9mcmFtZXM6KHZvaWQgKF4pKF9X
S0ZyYW1lVHJlZU5vZGUgKikpY29tcGxldGlvbkhhbmRsZXIKIHsKICAgICBfcGFnZS0+Z2V0QWxs
RnJhbWVzKFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxl
ciksIHBhZ2UgPSBtYWtlUmVmKCpfcGFnZS5nZXQoKSldIChXZWJLaXQ6OkZyYW1lVHJlZU5vZGVE
YXRhJiYgZGF0YSkgewotICAgICAgICBhdXRvIG5vZGUgPSByZXRhaW5QdHIod3JhcHBlcihBUEk6
OkZyYW1lVHJlZU5vZGU6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpLCBwYWdlLmdldCgpKSkpOwotICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihub2RlLmF1dG9yZWxlYXNlKCkpOworICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcih3cmFwcGVyKEFQSTo6RnJhbWVUcmVlTm9kZTo6Y3JlYXRlKFdURk1vdmUo
ZGF0YSksIHBhZ2UuZ2V0KCkpKSk7CiAgICAgfSk7CiB9CiAKQEAgLTI2MDQsNyArMjYwMyw3IEBA
IC0gKHZvaWQpX2dldENvbnRlbnRzQXNBdHRyaWJ1dGVkU3RyaW5nV2l0aENvbXBsZXRpb25IYW5k
bGVyOih2b2lkICheKShOU0F0dHJpYnV0CiB7CiAgICAgX3BhZ2UtPmdldENvbnRlbnRzQXNBdHRy
aWJ1dGVkU3RyaW5nKFtoYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0o
YXV0byYgYXR0cmlidXRlZFN0cmluZykgewogICAgICAgICBpZiAoYXR0cmlidXRlZFN0cmluZy5z
dHJpbmcpCi0gICAgICAgICAgICBoYW5kbGVyKHJldGFpblB0cihhdHRyaWJ1dGVkU3RyaW5nLnN0
cmluZy5nZXQoKSkuYXV0b3JlbGVhc2UoKSwgcmV0YWluUHRyKGF0dHJpYnV0ZWRTdHJpbmcuZG9j
dW1lbnRBdHRyaWJ1dGVzLmdldCgpKS5hdXRvcmVsZWFzZSgpLCBuaWwpOworICAgICAgICAgICAg
aGFuZGxlcihhdHRyaWJ1dGVkU3RyaW5nLnN0cmluZy5nZXQoKSwgYXR0cmlidXRlZFN0cmluZy5k
b2N1bWVudEF0dHJpYnV0ZXMuZ2V0KCksIG5pbCk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAg
IGhhbmRsZXIobmlsLCBuaWwsIGNyZWF0ZU5TRXJyb3IoV0tFcnJvclVua25vd24pLmdldCgpKTsK
ICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9f
V0tBdXRvbWF0aW9uU2Vzc2lvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9fV0tBdXRvbWF0aW9uU2Vzc2lvbi5tbQppbmRleCAxMTBkNGU4MGM0Zjk4YWQ3ZWMyMmVmYmNi
YTg2MTZkMThjMGZlYTE3Li45ODA1YmIwNDEyZGY5ZDAzNTY4YzA3ODBiZWI1NjVhY2RiOTFhNWQ5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXV0b21h
dGlvblNlc3Npb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19X
S0F1dG9tYXRpb25TZXNzaW9uLm1tCkBAIC00MSw3ICs0MSw3IEBAIEBpbXBsZW1lbnRhdGlvbiBf
V0tBdXRvbWF0aW9uU2Vzc2lvbiB7CiAKIC0gKGluc3RhbmNldHlwZSlpbml0CiB7Ci0gICAgcmV0
dXJuIFtzZWxmIGluaXRXaXRoQ29uZmlndXJhdGlvbjphZG9wdE5TKFtbX1dLQXV0b21hdGlvblNl
c3Npb25Db25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSkuYXV0b3JlbGVhc2UoKV07CisgICAgcmV0
dXJuIFtzZWxmIGluaXRXaXRoQ29uZmlndXJhdGlvbjphZG9wdE5TKFtbX1dLQXV0b21hdGlvblNl
c3Npb25Db25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSkuZ2V0KCldOwogfQogCiAtIChpbnN0YW5j
ZXR5cGUpaW5pdFdpdGhDb25maWd1cmF0aW9uOihfV0tBdXRvbWF0aW9uU2Vzc2lvbkNvbmZpZ3Vy
YXRpb24gKiljb25maWd1cmF0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL19XS0luc3BlY3Rvci5tbQppbmRleCA4ZTRlZDdkNDQxMjA1OTRiZTU1OGJiOWMzNmQ5
MmM2MjI2MTcyY2ViLi5jZjNkZTI3N2I1MTI4OTIxNDczODkyM2RiNTIwMzE0NmUwNTVkZTNjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9y
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3Iu
bW0KQEAgLTE4Nyw3ICsxODcsNyBAQCAtICh2b2lkKXJlZ2lzdGVyRXh0ZW5zaW9uV2l0aElEOihO
U1N0cmluZyAqKWV4dGVuc2lvbklEIGRpc3BsYXlOYW1lOihOU1N0cmluZyAqKQogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgY2FwdHVyZWRCbG9jayhuaWwsIHJldGFp
blB0cih3cmFwcGVyKEFQSTo6SW5zcGVjdG9yRXh0ZW5zaW9uOjpjcmVhdGUocHJvdGVjdGVkRXh0
ZW5zaW9uSUQuZ2V0KCksIHByb3RlY3RlZFNlbGYtPl9pbnNwZWN0b3ItPmV4dGVuc2lvbkNvbnRy
b2xsZXIoKSkpKS5hdXRvcmVsZWFzZSgpKTsKKyAgICAgICAgY2FwdHVyZWRCbG9jayhuaWwsIHdy
YXBwZXIoQVBJOjpJbnNwZWN0b3JFeHRlbnNpb246OmNyZWF0ZShwcm90ZWN0ZWRFeHRlbnNpb25J
RC5nZXQoKSwgcHJvdGVjdGVkU2VsZi0+X2luc3BlY3Rvci0+ZXh0ZW5zaW9uQ29udHJvbGxlcigp
KSkpOwogICAgIH0pOwogI2Vsc2UKICAgICBjb21wbGV0aW9uSGFuZGxlcihbTlNFcnJvciBlcnJv
cldpdGhEb21haW46V0tFcnJvckRvbWFpbiBjb2RlOldLRXJyb3JVbmtub3duIHVzZXJJbmZvOm5p
bF0sIG5pbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLUmVtb3RlV2ViSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvX1dLUmVtb3RlV2ViSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIubW0K
aW5kZXggMmNhZGI4NGEwZWYyYjkzZDYyMjFmOGQ5OWM4YjJiNzBiMTBhYWUzYi4uODIwNjYzYWJk
OWIyYWIyNDc2ODRjM2M4MWNkMGFjOTU3MjYwYmM0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1JlbW90ZVdlYkluc3BlY3RvclZpZXdDb250cm9sbGVy
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tSZW1vdGVXZWJJ
bnNwZWN0b3JWaWV3Q29udHJvbGxlci5tbQpAQCAtMTY4LDcgKzE2OCw3IEBAIC0gKHZvaWQpcmVn
aXN0ZXJFeHRlbnNpb25XaXRoSUQ6KE5TU3RyaW5nICopZXh0ZW5zaW9uSUQgZGlzcGxheU5hbWU6
KE5TU3RyaW5nICopCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBj
YXB0dXJlZEJsb2NrKG5pbCwgcmV0YWluUHRyKHdyYXBwZXIoQVBJOjpJbnNwZWN0b3JFeHRlbnNp
b246OmNyZWF0ZShwcm90ZWN0ZWRFeHRlbnNpb25JRC5nZXQoKSwgcHJvdGVjdGVkU2VsZi0+bV9y
ZW1vdGVJbnNwZWN0b3JQcm94eS0+ZXh0ZW5zaW9uQ29udHJvbGxlcigpKSkpLmF1dG9yZWxlYXNl
KCkpOworICAgICAgICBjYXB0dXJlZEJsb2NrKG5pbCwgd3JhcHBlcihBUEk6Okluc3BlY3RvckV4
dGVuc2lvbjo6Y3JlYXRlKHByb3RlY3RlZEV4dGVuc2lvbklELmdldCgpLCBwcm90ZWN0ZWRTZWxm
LT5tX3JlbW90ZUluc3BlY3RvclByb3h5LT5leHRlbnNpb25Db250cm9sbGVyKCkpKSk7CiAgICAg
fSk7CiAjZWxzZQogICAgIGNvbXBsZXRpb25IYW5kbGVyKFtOU0Vycm9yIGVycm9yV2l0aERvbWFp
bjpXS0Vycm9yRG9tYWluIGNvZGU6V0tFcnJvclVua25vd24gdXNlckluZm86bmlsXSwgbmlsKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tVc2VyQ29u
dGVudEV4dGVuc2lvblN0b3JlLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L19XS1VzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmUubW0KaW5kZXggMmVlOGQ3YTA2MTA3OWY2OTc1
NjA0MmUzYTUxODg5YzI5MGFjNzA3MS4uMWQxZDg3MjQyOTE3ODM5ZTAzYzZjMDExMGE5NGE4M2Nj
NmUwZTg3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19X
S1VzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmUubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL19XS1VzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmUubW0KQEAgLTcyLDcgKzcy
LDcgQEAgLSAodm9pZCljb21waWxlQ29udGVudEV4dGVuc2lvbkZvcklkZW50aWZpZXI6KE5TU3Ry
aW5nICopaWRlbnRpZmllciBlbmNvZGVkQ29udGUKIHsKICAgICBbX2NvbnRlbnRSdWxlTGlzdFN0
b3JlIF9jb21waWxlQ29udGVudFJ1bGVMaXN0Rm9ySWRlbnRpZmllcjppZGVudGlmaWVyIGVuY29k
ZWRDb250ZW50UnVsZUxpc3Q6ZW5jb2RlZENvbnRlbnRSdWxlTGlzdCBjb21wbGV0aW9uSGFuZGxl
cjpeKFdLQ29udGVudFJ1bGVMaXN0ICpjb250ZW50UnVsZUxpc3QsIE5TRXJyb3IgKmVycm9yKSB7
CiAgICAgICAgIGF1dG8gY29udGVudEZpbHRlciA9IGNvbnRlbnRSdWxlTGlzdCA/IGFkb3B0TlMo
W1tfV0tVc2VyQ29udGVudEZpbHRlciBhbGxvY10gX2luaXRXaXRoV0tDb250ZW50UnVsZUxpc3Q6
Y29udGVudFJ1bGVMaXN0XSkgOiBuaWw7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGNvbnRl
bnRGaWx0ZXIuYXV0b3JlbGVhc2UoKSwgdG9Vc2VyQ29udGVudFJ1bGVMaXN0U3RvcmVFcnJvcihl
cnJvcikpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihjb250ZW50RmlsdGVyLmdldCgpLCB0
b1VzZXJDb250ZW50UnVsZUxpc3RTdG9yZUVycm9yKGVycm9yKSk7CiAgICAgfV07CiB9CiAKQEAg
LTgwLDcgKzgwLDcgQEAgLSAodm9pZClsb29rdXBDb250ZW50RXh0ZW5zaW9uRm9ySWRlbnRpZmll
cjooTlNTdHJpbmcgKilpZGVudGlmaWVyIGNvbXBsZXRpb25IYW4KIHsKICAgICBbX2NvbnRlbnRS
dWxlTGlzdFN0b3JlIGxvb2tVcENvbnRlbnRSdWxlTGlzdEZvcklkZW50aWZpZXI6aWRlbnRpZmll
ciBjb21wbGV0aW9uSGFuZGxlcjpeKFdLQ29udGVudFJ1bGVMaXN0ICpjb250ZW50UnVsZUxpc3Qs
IE5TRXJyb3IgKmVycm9yKSB7CiAgICAgICAgIGF1dG8gY29udGVudEZpbHRlciA9IGNvbnRlbnRS
dWxlTGlzdCA/IGFkb3B0TlMoW1tfV0tVc2VyQ29udGVudEZpbHRlciBhbGxvY10gX2luaXRXaXRo
V0tDb250ZW50UnVsZUxpc3Q6Y29udGVudFJ1bGVMaXN0XSkgOiBuaWw7Ci0gICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKGNvbnRlbnRGaWx0ZXIuYXV0b3JlbGVhc2UoKSwgdG9Vc2VyQ29udGVudFJ1
bGVMaXN0U3RvcmVFcnJvcihlcnJvcikpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihjb250
ZW50RmlsdGVyLmdldCgpLCB0b1VzZXJDb250ZW50UnVsZUxpc3RTdG9yZUVycm9yKGVycm9yKSk7
CiAgICAgfV07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9t
YXRpb24vaW9zL1dlYkF1dG9tYXRpb25TZXNzaW9uSU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQXV0b21hdGlvbi9pb3MvV2ViQXV0b21hdGlvblNlc3Npb25JT1MubW0KaW5kZXggYjhm
MWNkZGI0OWRiMmFmN2EyOGE2OTNkMzBmOWY4YTVlYjI4MjkyZS4uMDgxYmE5OTQ2YWQ3NGE2MGM4
NWI3MGUzZjE0MjE4ZTVmZjhhZjNjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQXV0b21hdGlvbi9pb3MvV2ViQXV0b21hdGlvblNlc3Npb25JT1MubW0KKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9pb3MvV2ViQXV0b21hdGlvblNlc3Npb25JT1Mu
bW0KQEAgLTEzMiwxOSArMTMyLDE5IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OnBsYXRm
b3JtU2ltdWxhdGVLZXlib2FyZEludGVyYWN0aW9uKFdlYlBhZ2VQcm94eSYgcGFnCiAgICAgY2Fz
ZSBLZXlib2FyZEludGVyYWN0aW9uOjpLZXlQcmVzczogewogICAgICAgICBtX2N1cnJlbnRNb2Rp
ZmllcnMgfD0gY2hhbmdlZE1vZGlmaWVyczsKIAotICAgICAgICBbZXZlbnRzVG9CZVNlbnQgYWRk
T2JqZWN0OmFkb3B0TlMoW1s6OldlYkV2ZW50IGFsbG9jXSBpbml0V2l0aEtleUV2ZW50VHlwZTpX
ZWJFdmVudEtleURvd24gdGltZVN0YW1wOkNGQWJzb2x1dGVUaW1lR2V0Q3VycmVudCgpIGNoYXJh
Y3RlcnM6Y2hhcmFjdGVycyBjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnM6dW5tb2RpZmllZENo
YXJhY3RlcnMgbW9kaWZpZXJzOm1fY3VycmVudE1vZGlmaWVycyBpc1JlcGVhdGluZzpOTyB3aXRo
RmxhZ3M6aW5wdXRGbGFncyB3aXRoSW5wdXRNYW5hZ2VySGludDpuaWwga2V5Q29kZTprZXlDb2Rl
IGlzVGFiS2V5OmlzVGFiS2V5XSkuYXV0b3JlbGVhc2UoKV07CisgICAgICAgIFtldmVudHNUb0Jl
U2VudCBhZGRPYmplY3Q6YWRvcHROUyhbWzo6V2ViRXZlbnQgYWxsb2NdIGluaXRXaXRoS2V5RXZl
bnRUeXBlOldlYkV2ZW50S2V5RG93biB0aW1lU3RhbXA6Q0ZBYnNvbHV0ZVRpbWVHZXRDdXJyZW50
KCkgY2hhcmFjdGVyczpjaGFyYWN0ZXJzIGNoYXJhY3RlcnNJZ25vcmluZ01vZGlmaWVyczp1bm1v
ZGlmaWVkQ2hhcmFjdGVycyBtb2RpZmllcnM6bV9jdXJyZW50TW9kaWZpZXJzIGlzUmVwZWF0aW5n
Ok5PIHdpdGhGbGFnczppbnB1dEZsYWdzIHdpdGhJbnB1dE1hbmFnZXJIaW50Om5pbCBrZXlDb2Rl
OmtleUNvZGUgaXNUYWJLZXk6aXNUYWJLZXldKS5nZXQoKV07CiAgICAgICAgIGJyZWFrOwogICAg
IH0KICAgICBjYXNlIEtleWJvYXJkSW50ZXJhY3Rpb246OktleVJlbGVhc2U6IHsKICAgICAgICAg
bV9jdXJyZW50TW9kaWZpZXJzICY9IH5jaGFuZ2VkTW9kaWZpZXJzOwogCi0gICAgICAgIFtldmVu
dHNUb0JlU2VudCBhZGRPYmplY3Q6YWRvcHROUyhbWzo6V2ViRXZlbnQgYWxsb2NdIGluaXRXaXRo
S2V5RXZlbnRUeXBlOldlYkV2ZW50S2V5VXAgdGltZVN0YW1wOkNGQWJzb2x1dGVUaW1lR2V0Q3Vy
cmVudCgpIGNoYXJhY3RlcnM6Y2hhcmFjdGVycyBjaGFyYWN0ZXJzSWdub3JpbmdNb2RpZmllcnM6
dW5tb2RpZmllZENoYXJhY3RlcnMgbW9kaWZpZXJzOm1fY3VycmVudE1vZGlmaWVycyBpc1JlcGVh
dGluZzpOTyB3aXRoRmxhZ3M6aW5wdXRGbGFncyB3aXRoSW5wdXRNYW5hZ2VySGludDpuaWwga2V5
Q29kZTprZXlDb2RlIGlzVGFiS2V5OmlzVGFiS2V5XSkuYXV0b3JlbGVhc2UoKV07CisgICAgICAg
IFtldmVudHNUb0JlU2VudCBhZGRPYmplY3Q6YWRvcHROUyhbWzo6V2ViRXZlbnQgYWxsb2NdIGlu
aXRXaXRoS2V5RXZlbnRUeXBlOldlYkV2ZW50S2V5VXAgdGltZVN0YW1wOkNGQWJzb2x1dGVUaW1l
R2V0Q3VycmVudCgpIGNoYXJhY3RlcnM6Y2hhcmFjdGVycyBjaGFyYWN0ZXJzSWdub3JpbmdNb2Rp
ZmllcnM6dW5tb2RpZmllZENoYXJhY3RlcnMgbW9kaWZpZXJzOm1fY3VycmVudE1vZGlmaWVycyBp
c1JlcGVhdGluZzpOTyB3aXRoRmxhZ3M6aW5wdXRGbGFncyB3aXRoSW5wdXRNYW5hZ2VySGludDpu
aWwga2V5Q29kZTprZXlDb2RlIGlzVGFiS2V5OmlzVGFiS2V5XSkuZ2V0KCldOwogICAgICAgICBi
cmVhazsKICAgICB9CiAgICAgY2FzZSBLZXlib2FyZEludGVyYWN0aW9uOjpJbnNlcnRCeUtleTog
ewogICAgICAgICAvLyBNb2RpZmllcnMgb25seSBjaGFuZ2Ugd2l0aCBLZXlQcmVzcyBvciBLZXlS
ZWxlYXNlLCB0aGlzIGNvZGUgcGF0aCBpcyBmb3Igc2luZ2xlIGNoYXJhY3RlcnMuCi0gICAgICAg
IFtldmVudHNUb0JlU2VudCBhZGRPYmplY3Q6YWRvcHROUyhbWzo6V2ViRXZlbnQgYWxsb2NdIGlu
aXRXaXRoS2V5RXZlbnRUeXBlOldlYkV2ZW50S2V5RG93biB0aW1lU3RhbXA6Q0ZBYnNvbHV0ZVRp
bWVHZXRDdXJyZW50KCkgY2hhcmFjdGVyczpjaGFyYWN0ZXJzIGNoYXJhY3RlcnNJZ25vcmluZ01v
ZGlmaWVyczp1bm1vZGlmaWVkQ2hhcmFjdGVycyBtb2RpZmllcnM6bV9jdXJyZW50TW9kaWZpZXJz
IGlzUmVwZWF0aW5nOk5PIHdpdGhGbGFnczppbnB1dEZsYWdzIHdpdGhJbnB1dE1hbmFnZXJIaW50
Om5pbCBrZXlDb2RlOmtleUNvZGUgaXNUYWJLZXk6aXNUYWJLZXldKS5hdXRvcmVsZWFzZSgpXTsK
LSAgICAgICAgW2V2ZW50c1RvQmVTZW50IGFkZE9iamVjdDphZG9wdE5TKFtbOjpXZWJFdmVudCBh
bGxvY10gaW5pdFdpdGhLZXlFdmVudFR5cGU6V2ViRXZlbnRLZXlVcCB0aW1lU3RhbXA6Q0ZBYnNv
bHV0ZVRpbWVHZXRDdXJyZW50KCkgY2hhcmFjdGVyczpjaGFyYWN0ZXJzIGNoYXJhY3RlcnNJZ25v
cmluZ01vZGlmaWVyczp1bm1vZGlmaWVkQ2hhcmFjdGVycyBtb2RpZmllcnM6bV9jdXJyZW50TW9k
aWZpZXJzIGlzUmVwZWF0aW5nOk5PIHdpdGhGbGFnczppbnB1dEZsYWdzIHdpdGhJbnB1dE1hbmFn
ZXJIaW50Om5pbCBrZXlDb2RlOmtleUNvZGUgaXNUYWJLZXk6aXNUYWJLZXldKS5hdXRvcmVsZWFz
ZSgpXTsKKyAgICAgICAgW2V2ZW50c1RvQmVTZW50IGFkZE9iamVjdDphZG9wdE5TKFtbOjpXZWJF
dmVudCBhbGxvY10gaW5pdFdpdGhLZXlFdmVudFR5cGU6V2ViRXZlbnRLZXlEb3duIHRpbWVTdGFt
cDpDRkFic29sdXRlVGltZUdldEN1cnJlbnQoKSBjaGFyYWN0ZXJzOmNoYXJhY3RlcnMgY2hhcmFj
dGVyc0lnbm9yaW5nTW9kaWZpZXJzOnVubW9kaWZpZWRDaGFyYWN0ZXJzIG1vZGlmaWVyczptX2N1
cnJlbnRNb2RpZmllcnMgaXNSZXBlYXRpbmc6Tk8gd2l0aEZsYWdzOmlucHV0RmxhZ3Mgd2l0aElu
cHV0TWFuYWdlckhpbnQ6bmlsIGtleUNvZGU6a2V5Q29kZSBpc1RhYktleTppc1RhYktleV0pLmdl
dCgpXTsKKyAgICAgICAgW2V2ZW50c1RvQmVTZW50IGFkZE9iamVjdDphZG9wdE5TKFtbOjpXZWJF
dmVudCBhbGxvY10gaW5pdFdpdGhLZXlFdmVudFR5cGU6V2ViRXZlbnRLZXlVcCB0aW1lU3RhbXA6
Q0ZBYnNvbHV0ZVRpbWVHZXRDdXJyZW50KCkgY2hhcmFjdGVyczpjaGFyYWN0ZXJzIGNoYXJhY3Rl
cnNJZ25vcmluZ01vZGlmaWVyczp1bm1vZGlmaWVkQ2hhcmFjdGVycyBtb2RpZmllcnM6bV9jdXJy
ZW50TW9kaWZpZXJzIGlzUmVwZWF0aW5nOk5PIHdpdGhGbGFnczppbnB1dEZsYWdzIHdpdGhJbnB1
dE1hbmFnZXJIaW50Om5pbCBrZXlDb2RlOmtleUNvZGUgaXNUYWJLZXk6aXNUYWJLZXldKS5nZXQo
KV07CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9XS0NvbnRhY3RQaWNrZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9XS0NvbnRhY3RQaWNrZXIubW0KaW5kZXggNmE5ZDJhZTgwZjM0NjI3NDRk
YjMxNThiZjRjMDZkNGVmNzAwYjNiMi4uMWU5NTAzYjQzNzI3NjBhMmI1NTM2MzBjNDg2YzA0Nzc0
OGQ3MzI5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV0tDb250
YWN0UGlja2VyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dLQ29udGFj
dFBpY2tlci5tbQpAQCAtMjk0LDcgKzI5NCw3IEBAIC0gKE5TQXJyYXk8Q05Db250YWN0Kj4gKilf
Y29udGFjdHNGcm9tSlNDb250YWN0czooTlNBcnJheSAqKWpzQ29udGFjdHMKICAgICAgICAgICAg
IFtjb250YWN0IHNldFBob25lTnVtYmVyczpudW1iZXJzXTsKICAgICAgICAgfQogCi0gICAgICAg
IFtjb250YWN0cyBhZGRPYmplY3Q6Y29udGFjdC5hdXRvcmVsZWFzZSgpXTsKKyAgICAgICAgW2Nv
bnRhY3RzIGFkZE9iamVjdDpjb250YWN0LmdldCgpXTsKICAgICB9CiAKICAgICByZXR1cm4gY29u
dGFjdHM7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>