<?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>137582</bug_id>
          
          <creation_ts>2014-10-09 16:32:54 -0700</creation_ts>
          <short_desc>Implement selection services menu for Legacy WebKit</short_desc>
          <delta_ts>2014-10-16 13:13:59 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Tim Horton">thorton</reporter>
          <assigned_to name="Tim Horton">thorton</assigned_to>
          <cc>andersca</cc>
    
    <cc>ap</cc>
    
    <cc>beidson</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>enrica</cc>
    
    <cc>mitz</cc>
    
    <cc>sam</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1040730</commentid>
    <comment_count>0</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-10-09 16:32:54 -0700</bug_when>
    <thetext>Now that ServicesOverlayController lives in WebCore, we can implement the requisite ChromeClient callbacks in Legacy WebKit to make the menu appear, and hook up the system bits.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1040731</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2014-10-09 16:33:05 -0700</bug_when>
    <thetext>&lt;rdar://problem/18604241&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1040740</commentid>
    <comment_count>2</comment_count>
      <attachid>239580</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-10-09 16:51:34 -0700</bug_when>
    <thetext>Created attachment 239580
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1040741</commentid>
    <comment_count>3</comment_count>
      <attachid>239580</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-10-09 16:53:12 -0700</bug_when>
    <thetext>Comment on attachment 239580
patch

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

&gt; Source/WebKit/mac/WebCoreSupport/WebSelectionServiceController.h:3
&gt; + * Copyright (C) 2006, 2007, 2008, 2009 Apple Inc. All rights reserved.
&gt; + * Copyright (C) 2008, 2010 Nokia Corporation and/or its subsidiary(-ies)

This is wrong.

&gt; Source/WebKit/mac/WebCoreSupport/WebSelectionServiceController.h:14
&gt; + * 3.  Neither the name of Apple Inc. (&quot;Apple&quot;) nor the names of

This is wrong.

&gt; Source/WebKit/mac/WebCoreSupport/WebSelectionServiceController.mm:3
&gt; + * Copyright (C) 2006, 2007, 2008, 2009, 2010 Apple Inc. All rights reserved.
&gt; + * Copyright (C) 2008, 2010 Nokia Corporation and/or its subsidiary(-ies)

This is wrong.

&gt; Source/WebKit/mac/WebCoreSupport/WebSelectionServiceController.mm:14
&gt; + * 3.  Neither the name of Apple Inc. (&quot;Apple&quot;) nor the names of

This is wrong.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1040744</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-10-09 16:53:26 -0700</bug_when>
    <thetext>Attachment 239580 did not pass style-queue:


ERROR: Source/WebKit/mac/WebCoreSupport/WebSelectionServiceController.mm:30:  Found header this file implements before WebCore config.h. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
Total errors found: 1 in 23 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1040751</commentid>
    <comment_count>5</comment_count>
      <attachid>239580</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2014-10-09 17:03:36 -0700</bug_when>
    <thetext>Comment on attachment 239580
patch

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

&gt; Source/WebKit/mac/WebCoreSupport/WebSelectionServiceController.h:61
&gt; +    virtual void sharingServicePickerWillBeDestroyed(WebSharingServicePickerController *) override;
&gt; +    virtual WebCore::Page* pageForSharingServicePicker(WebSharingServicePickerController *) override;
&gt; +    virtual NSWindow *windowForSharingServicePicker(WebSharingServicePickerController *) override;
&gt; +    virtual WebCore::FloatRect screenRectForCurrentSharingServicePickerItem(WebSharingServicePickerController *) override;
&gt; +    virtual NSImage *imageForCurrentSharingServicePickerItem(WebSharingServicePickerController *) override;

I think these should take the WebSharingServicePickerController&amp; as a reference.

I think the functions that return Objective-C objects should return RetainPtrs to better indicate the lifetime.

Can pageForSharingServicePicker return a Page&amp;? Maybe it should return a MainFrame&amp; ?

&gt; Source/WebKit/mac/WebCoreSupport/WebSelectionServiceController.mm:91
&gt; +    static NeverDestroyed&lt;NSAttributedString *&gt; attributedString([[NSAttributedString alloc] initWithString:@&quot;a&quot;]);

Never use NeverDestroyed with pointers. Also, I think it&apos;s fine if this isn&apos;t static (No need for it to take up memory).

&gt; Source/WebKit/mac/WebCoreSupport/WebSelectionServiceController.mm:97
&gt; +    static NSAttributedString *attributedStringWithRichContent;

Ditto, I don&apos;t think this needs to be static.

&gt; Source/WebKit/mac/WebCoreSupport/WebSelectionServiceController.mm:100
&gt; +        static NeverDestroyed&lt;NSImage *&gt; image([[NSImage alloc] init]);

Same thing here.

&gt; Source/WebKit/mac/WebView/WebView.mm:8496
&gt; +- (WebSelectionServiceController*)_selectionServiceController

This should return a reference.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1040752</commentid>
    <comment_count>6</comment_count>
      <attachid>239580</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2014-10-09 17:03:43 -0700</bug_when>
    <thetext>Comment on attachment 239580
patch

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

&gt; Source/WebKit/mac/WebCoreSupport/WebSelectionServiceController.h:61
&gt; +    virtual void sharingServicePickerWillBeDestroyed(WebSharingServicePickerController *) override;
&gt; +    virtual WebCore::Page* pageForSharingServicePicker(WebSharingServicePickerController *) override;
&gt; +    virtual NSWindow *windowForSharingServicePicker(WebSharingServicePickerController *) override;
&gt; +    virtual WebCore::FloatRect screenRectForCurrentSharingServicePickerItem(WebSharingServicePickerController *) override;
&gt; +    virtual NSImage *imageForCurrentSharingServicePickerItem(WebSharingServicePickerController *) override;

I think these should take the WebSharingServicePickerController&amp; as a reference.

I think the functions that return Objective-C objects should return RetainPtrs to better indicate the lifetime.

Can pageForSharingServicePicker return a Page&amp;? Maybe it should return a MainFrame&amp; ?

&gt; Source/WebKit/mac/WebCoreSupport/WebSelectionServiceController.mm:91
&gt; +    static NeverDestroyed&lt;NSAttributedString *&gt; attributedString([[NSAttributedString alloc] initWithString:@&quot;a&quot;]);

Never use NeverDestroyed with pointers. Also, I think it&apos;s fine if this isn&apos;t static (No need for it to take up memory).

&gt; Source/WebKit/mac/WebCoreSupport/WebSelectionServiceController.mm:97
&gt; +    static NSAttributedString *attributedStringWithRichContent;

Ditto, I don&apos;t think this needs to be static.

&gt; Source/WebKit/mac/WebCoreSupport/WebSelectionServiceController.mm:100
&gt; +        static NeverDestroyed&lt;NSImage *&gt; image([[NSImage alloc] init]);

Same thing here.

&gt; Source/WebKit/mac/WebView/WebView.mm:8496
&gt; +- (WebSelectionServiceController*)_selectionServiceController

This should return a reference.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1040760</commentid>
    <comment_count>7</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-10-09 17:25:14 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 239580 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=239580&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/mac/WebCoreSupport/WebSelectionServiceController.h:61
&gt; &gt; +    virtual void sharingServicePickerWillBeDestroyed(WebSharingServicePickerController *) override;
&gt; &gt; +    virtual WebCore::Page* pageForSharingServicePicker(WebSharingServicePickerController *) override;
&gt; &gt; +    virtual NSWindow *windowForSharingServicePicker(WebSharingServicePickerController *) override;
&gt; &gt; +    virtual WebCore::FloatRect screenRectForCurrentSharingServicePickerItem(WebSharingServicePickerController *) override;
&gt; &gt; +    virtual NSImage *imageForCurrentSharingServicePickerItem(WebSharingServicePickerController *) override;
&gt; 
&gt; I think these should take the WebSharingServicePickerController&amp; as a reference.
&gt; 
&gt; I think the functions that return Objective-C objects should return RetainPtrs to better indicate the lifetime.

Both seem reasonable.

&gt; Can pageForSharingServicePicker return a Page&amp;? Maybe it should return a MainFrame&amp; ?

I&apos;m totally unclear on this here.

&gt; &gt; Source/WebKit/mac/WebCoreSupport/WebSelectionServiceController.mm:91
&gt; &gt; +    static NeverDestroyed&lt;NSAttributedString *&gt; attributedString([[NSAttributedString alloc] initWithString:@&quot;a&quot;]);
&gt; 
&gt; Never use NeverDestroyed with pointers. Also, I think it&apos;s fine if this isn&apos;t static (No need for it to take up memory).

Fine with me. De-staticed everything.

&gt; &gt; Source/WebKit/mac/WebView/WebView.mm:8496
&gt; &gt; +- (WebSelectionServiceController*)_selectionServiceController
&gt; 
&gt; This should return a reference.

Sure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1040771</commentid>
    <comment_count>8</comment_count>
      <attachid>239586</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-10-09 17:58:57 -0700</bug_when>
    <thetext>Created attachment 239586
patch

With Anders&apos; changes. However, Anders thinks I should look into putting more of this in WebCore to share with WebKit2 (so, having the Services ChromeClient overrides call directly back into WebCore in the Legacy WebKit case, or jump to the UI process and call back into WebCore in the WebKit2 case, and put the context menu code/NSSharingServicePicker code in WebCore). I&apos;m not sure this is going to be super easy so I&apos;m leaving this patch here in case I need to fall back to it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1040772</commentid>
    <comment_count>9</comment_count>
      <attachid>239586</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-10-09 18:00:02 -0700</bug_when>
    <thetext>Comment on attachment 239586
patch

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

&gt; Source/WebKit2/ChangeLog:15
&gt; +        Add a note that we should transition to using replaceSelectionWithAttributedString.

These comments are flipped :|</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1040773</commentid>
    <comment_count>10</comment_count>
      <attachid>239586</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-10-09 18:00:05 -0700</bug_when>
    <thetext>Comment on attachment 239586
patch

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

&gt; Source/WebKit2/ChangeLog:15
&gt; +        Add a note that we should transition to using replaceSelectionWithAttributedString.

These comments are flipped :|</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1040774</commentid>
    <comment_count>11</comment_count>
      <attachid>239586</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-10-09 18:00:17 -0700</bug_when>
    <thetext>Comment on attachment 239586
patch

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

&gt; Source/WebKit2/ChangeLog:15
&gt; +        Add a note that we should transition to using replaceSelectionWithAttributedString.

These comments are flipped :|</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1040775</commentid>
    <comment_count>12</comment_count>
      <attachid>239586</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-10-09 18:00:22 -0700</bug_when>
    <thetext>Comment on attachment 239586
patch

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

&gt; Source/WebKit2/ChangeLog:15
&gt; +        Add a note that we should transition to using replaceSelectionWithAttributedString.

These comments are flipped :|</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1040776</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-10-09 18:00:26 -0700</bug_when>
    <thetext>Attachment 239586 did not pass style-queue:


ERROR: Source/WebKit/mac/WebCoreSupport/WebSelectionServiceController.mm:26:  Found header this file implements before WebCore config.h. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
Total errors found: 1 in 23 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1040777</commentid>
    <comment_count>14</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-10-09 18:00:51 -0700</bug_when>
    <thetext>Yay, bugzilla success.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1041900</commentid>
    <comment_count>15</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-10-15 10:57:39 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; Created an attachment (id=239586) [details]
&gt; patch
&gt; 
&gt; With Anders&apos; changes. However, Anders thinks I should look into putting more of this in WebCore to share with WebKit2 (so, having the Services ChromeClient overrides call directly back into WebCore in the Legacy WebKit case, or jump to the UI process and call back into WebCore in the WebKit2 case, and put the context menu code/NSSharingServicePicker code in WebCore). I&apos;m not sure this is going to be super easy so I&apos;m leaving this patch here in case I need to fall back to it.

Doing this is pretty messy, and involves hugely changing how Legacy WebKit image services work, and image services and selection services and telephone number services for WebKit2, and is all in all a much much bigger change. I think we should do it separately, in the future, but try to get this patch landed sooner (it doesn&apos;t make things much worse, since WebKit1 already has a sharing service picker implementation there for image services).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1041946</commentid>
    <comment_count>16</comment_count>
      <attachid>239893</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-10-15 13:45:53 -0700</bug_when>
    <thetext>Created attachment 239893
try to fix mavericks/ml build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1041948</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-10-15 13:48:57 -0700</bug_when>
    <thetext>Attachment 239893 did not pass style-queue:


ERROR: Source/WebKit/mac/WebCoreSupport/WebSelectionServiceController.mm:26:  Found header this file implements before WebCore config.h. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
Total errors found: 1 in 23 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1042160</commentid>
    <comment_count>18</comment_count>
      <attachid>239893</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2014-10-16 12:59:03 -0700</bug_when>
    <thetext>Comment on attachment 239893
try to fix mavericks/ml build

Does this actually break the windows build?  Plz to not break.

Otherwise, okay.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1042162</commentid>
    <comment_count>19</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-10-16 13:13:59 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/174791</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>239580</attachid>
            <date>2014-10-09 16:51:34 -0700</date>
            <delta_ts>2014-10-09 17:58:57 -0700</delta_ts>
            <desc>patch</desc>
            <filename>services-wk1.diff</filename>
            <type>text/plain</type>
            <size>47159</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA2MGJhZWU0Li42MjI3MjZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMjMg
QEAKIDIwMTQtMTAtMDkgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAK
KyAgICAgICAgSW1wbGVtZW50IHNlbGVjdGlvbiBzZXJ2aWNlcyBtZW51IGZvciBMZWdhY3kgV2Vi
S2l0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzc1
ODIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzE4NjA0MjQxPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZS5leHAuaW46CisgICAgICAg
ICogZWRpdGluZy9FZGl0b3IuaDoKKyAgICAgICAgKiBlZGl0aW5nL2lvcy9FZGl0b3JJT1MubW06
CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnJlcGxhY2VTZWxlY3Rpb25XaXRoQXR0cmlidXRl
ZFN0cmluZyk6CisgICAgICAgICogZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tOgorICAgICAgICAo
V2ViQ29yZTo6RWRpdG9yOjpyZXBsYWNlU2VsZWN0aW9uV2l0aEF0dHJpYnV0ZWRTdHJpbmcpOgor
ICAgICAgICBBZGQgcmVwbGFjZVNlbGVjdGlvbldpdGhBdHRyaWJ1dGVkU3RyaW5nLCB3aGljaCBy
ZXBsYWNlcyB0aGUgc2VsZWN0aW9uCisgICAgICAgIHdpdGggdGhlIGdpdmVuIGF0dHJpYnV0ZWQg
c3RyaW5nIChjb252ZXJ0aW5nIHRvIHBsYWluIHRleHQgaWYgdGhlIGRlc3RpbmF0aW9uCisgICAg
ICAgIGlzIG5vdCByaWNobHkgZWRpdGFibGUpLgorCisyMDE0LTEwLTA5ICBUaW0gSG9ydG9uICA8
dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgorCiAgICAgICAgIE1vdmUgU2VydmljZXNPdmVybGF5
Q29udHJvbGxlciB0byBXZWJDb3JlCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMzc0MTYKICAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzE4NTQ2MjgzPgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4gYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmV4cC5pbgppbmRleCBiY2QxMjc2Li5hOTAwOWYxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4
cC5pbgpAQCAtMTI0Nyw2ICsxMjQ3LDcgQEAgX19aTjdXZWJDb3JlNkVkaXRvcjMzaW5jcmVhc2VT
ZWxlY3Rpb25MaXN0TGV2ZWxPcmRlcmVkRXYKIF9fWk43V2ViQ29yZTZFZGl0b3IzNHNldE1hcmtl
ZFRleHRNYXRjaGVzQXJlSGlnaGxpZ2h0ZWRFYgogX19aTjdXZWJDb3JlNkVkaXRvcjM1aW5jcmVh
c2VTZWxlY3Rpb25MaXN0TGV2ZWxVbm9yZGVyZWRFdgogX19aTjdXZWJDb3JlNkVkaXRvcjM1c2V0
SWdub3JlQ29tcG9zaXRpb25TZWxlY3Rpb25DaGFuZ2VFYgorX19aTjdXZWJDb3JlNkVkaXRvcjM2
cmVwbGFjZVNlbGVjdGlvbldpdGhBdHRyaWJ1dGVkU3RyaW5nRVAxOE5TQXR0cmlidXRlZFN0cmlu
Z05TXzIyTWFpbEJsb2NrcXVvdGVIYW5kbGluZ0UKIF9fWk43V2ViQ29yZTZFZGl0b3IzOGNvbW1h
bmRJc1N1cHBvcnRlZEZyb21NZW51T3JLZXlCaW5kaW5nRVJLTjNXVEY2U3RyaW5nRQogX19aTjdX
ZWJDb3JlNkVkaXRvcjM5aW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9ySW5RdW90ZWRDb250ZW50RXYK
IF9fWk43V2ViQ29yZTZFZGl0b3IzY3V0RXYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvRWRpdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCmluZGV4IGU4
YzkxZDMuLjliMTQ0YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9y
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaApAQCAtNDMyLDcgKzQzMiw3
IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVuZGVyU3R5bGUqIHN0eWxl
Rm9yU2VsZWN0aW9uU3RhcnQoRnJhbWUqICwgTm9kZSAqJm5vZGVUb1JlbW92ZSk7CiAgICAgV0VC
Q09SRV9FWFBPUlQgYm9vbCBpbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3JJblF1b3RlZENvbnRlbnQo
KTsKICAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCBTaW1wbGVGb250RGF0YSogZm9udEZvclNlbGVj
dGlvbihib29sJikgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgTlNEaWN0aW9uYXJ5KiBmb250
QXR0cmlidXRlc0ZvclNlbGVjdGlvblN0YXJ0KCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQg
TlNEaWN0aW9uYXJ5ICpmb250QXR0cmlidXRlc0ZvclNlbGVjdGlvblN0YXJ0KCkgY29uc3Q7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHN0cmluZ1NlbGVjdGlvbkZvclBhc3RlYm9hcmQoKTsK
ICAgICBTdHJpbmcgc3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVib2FyZFdpdGhJbWFnZUFsdFRleHQo
KTsKICNpZiAhUExBVEZPUk0oSU9TKQpAQCAtNDQyLDYgKzQ0Miw3IEBAIHB1YmxpYzoKICAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHJlcGxhY2VOb2RlRnJvbVBhc3RlYm9hcmQoTm9kZSosIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpOwogICAgIFdFQkNPUkVfRVhQT1JUIFBhc3NSZWZQdHI8
U2hhcmVkQnVmZmVyPiBkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lKTsKICNlbmRpZiAvLyAhUExBVEZPUk0oSU9TKQorICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgcmVwbGFjZVNlbGVjdGlvbldpdGhBdHRyaWJ1dGVkU3RyaW5nKE5TQXR0cmlidXRl
ZFN0cmluZyAqLCBNYWlsQmxvY2txdW90ZUhhbmRsaW5nID0gTWFpbEJsb2NrcXVvdGVIYW5kbGlu
Zzo6UmVzcGVjdEJsb2NrcXVvdGUpOwogI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkgfHwg
UExBVEZPUk0oRUZMKSB8fCBQTEFURk9STShHVEspCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL2lvcy9FZGl0b3JJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9F
ZGl0b3JJT1MubW0KaW5kZXggYzVlN2ZlNC4uNjM2OWQzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvaW9zL0VkaXRvcklPUy5tbQpAQCAtNjI3LDQgKzYyNywyMCBAQCBQYXNzUmVmUHRyPERvY3Vt
ZW50RnJhZ21lbnQ+IEVkaXRvcjo6Y3JlYXRlRnJhZ21lbnRGb3JJbWFnZVJlc291cmNlQW5kQWRk
UmVzb3VyYwogICAgIHJldHVybiBmcmFnbWVudC5yZWxlYXNlKCk7CiB9CiAKK3ZvaWQgRWRpdG9y
OjpyZXBsYWNlU2VsZWN0aW9uV2l0aEF0dHJpYnV0ZWRTdHJpbmcoTlNBdHRyaWJ1dGVkU3RyaW5n
ICphdHRyaWJ1dGVkU3RyaW5nLCBNYWlsQmxvY2txdW90ZUhhbmRsaW5nIG1haWxCbG9ja3F1b3Rl
SGFuZGxpbmcpCit7CisgICAgaWYgKG1fZnJhbWUuc2VsZWN0aW9uKCkuaXNOb25lKCkpCisgICAg
ICAgIHJldHVybjsKKworICAgIGlmIChtX2ZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLmlz
Q29udGVudFJpY2hseUVkaXRhYmxlKCkpIHsKKyAgICAgICAgUmVmUHRyPERvY3VtZW50RnJhZ21l
bnQ+IGZyYWdtZW50ID0gY3JlYXRlRnJhZ21lbnRBbmRBZGRSZXNvdXJjZXMoYXR0cmlidXRlZFN0
cmluZyk7CisgICAgICAgIGlmIChmcmFnbWVudCAmJiBzaG91bGRJbnNlcnRGcmFnbWVudChmcmFn
bWVudCwgc2VsZWN0ZWRSYW5nZSgpLCBFZGl0b3JJbnNlcnRBY3Rpb25QYXN0ZWQpKQorICAgICAg
ICAgICAgcGFzdGVBc0ZyYWdtZW50KGZyYWdtZW50LCBmYWxzZSwgZmFsc2UsIG1haWxCbG9ja3F1
b3RlSGFuZGxpbmcpOworICAgIH0gZWxzZSB7CisgICAgICAgIFN0cmluZyB0ZXh0ID0gW2F0dHJp
YnV0ZWRTdHJpbmcgc3RyaW5nXTsKKyAgICAgICAgaWYgKHNob3VsZEluc2VydFRleHQodGV4dCwg
c2VsZWN0ZWRSYW5nZSgpLmdldCgpLCBFZGl0b3JJbnNlcnRBY3Rpb25QYXN0ZWQpKQorICAgICAg
ICAgICAgcGFzdGVBc1BsYWluVGV4dCh0ZXh0LCBmYWxzZSk7CisgICAgfQorfQorCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9F
ZGl0b3JNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0KaW5k
ZXggNjQ1OGJiNy4uOGQ1ZmJkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9t
YWMvRWRpdG9yTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1h
Yy5tbQpAQCAtNjY4LDQgKzY2OCwyMCBAQCBQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IEVk
aXRvcjo6Y3JlYXRlRnJhZ21lbnRBbmRBZGRSZXNvdXJjZXMoTlNBdHRyaWJ1dGVkUwogICAgIHJl
dHVybiBmcmFnbWVudC5yZWxlYXNlKCk7CiB9CiAKK3ZvaWQgRWRpdG9yOjpyZXBsYWNlU2VsZWN0
aW9uV2l0aEF0dHJpYnV0ZWRTdHJpbmcoTlNBdHRyaWJ1dGVkU3RyaW5nICphdHRyaWJ1dGVkU3Ry
aW5nLCBNYWlsQmxvY2txdW90ZUhhbmRsaW5nIG1haWxCbG9ja3F1b3RlSGFuZGxpbmcpCit7Cisg
ICAgaWYgKG1fZnJhbWUuc2VsZWN0aW9uKCkuaXNOb25lKCkpCisgICAgICAgIHJldHVybjsKKwor
ICAgIGlmIChtX2ZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLmlzQ29udGVudFJpY2hseUVk
aXRhYmxlKCkpIHsKKyAgICAgICAgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50ID0g
Y3JlYXRlRnJhZ21lbnRBbmRBZGRSZXNvdXJjZXMoYXR0cmlidXRlZFN0cmluZyk7CisgICAgICAg
IGlmIChmcmFnbWVudCAmJiBzaG91bGRJbnNlcnRGcmFnbWVudChmcmFnbWVudCwgc2VsZWN0ZWRS
YW5nZSgpLCBFZGl0b3JJbnNlcnRBY3Rpb25QYXN0ZWQpKQorICAgICAgICAgICAgcGFzdGVBc0Zy
YWdtZW50KGZyYWdtZW50LCBmYWxzZSwgZmFsc2UsIG1haWxCbG9ja3F1b3RlSGFuZGxpbmcpOwor
ICAgIH0gZWxzZSB7CisgICAgICAgIFN0cmluZyB0ZXh0ID0gW2F0dHJpYnV0ZWRTdHJpbmcgc3Ry
aW5nXTsKKyAgICAgICAgaWYgKHNob3VsZEluc2VydFRleHQodGV4dCwgc2VsZWN0ZWRSYW5nZSgp
LmdldCgpLCBFZGl0b3JJbnNlcnRBY3Rpb25QYXN0ZWQpKQorICAgICAgICAgICAgcGFzdGVBc1Bs
YWluVGV4dCh0ZXh0LCBmYWxzZSk7CisgICAgfQorfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCmluZGV4IGE4NjBlMjUuLjZjNDcyMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAK
KzIwMTQtMTAtMDkgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisKKyAg
ICAgICAgSW1wbGVtZW50IHNlbGVjdGlvbiBzZXJ2aWNlcyBtZW51IGZvciBMZWdhY3kgV2ViS2l0
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzc1ODIK
KyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzE4NjA0MjQxPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisKIDIwMTQtMTAtMDYgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+
CiAKICAgICAgICAgW1dpbl0gVW5yZXZpZXdlZCA2NC1iaXQgYnVpbGQgZml4IGFmdGVyIHIxNzQz
MTUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpp
bmRleCA4YTFjOTc3Li4wYmE2NmUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTgzLDYgKzgzLDggQEAKIAkJMjlBRUY5NjAxMzRDNzZG
QjAwRkU1MDk2IC8qIE91dGxvb2tRdWlya3NVc2VyU2NyaXB0LmpzIGluIFJlc291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyOUFFRjk1RDEzNEM3NTU0MDBGRTUwOTYg
LyogT3V0bG9va1F1aXJrc1VzZXJTY3JpcHQuanMgKi87IH07CiAJCTJEMjUzOTY2MThDRTg1QzIw
MDI3MDIyMiAvKiBXZWJTaGFyaW5nU2VydmljZVBpY2tlckNvbnRyb2xsZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEMjUzOTY0MThDRTg1QzIwMDI3
MDIyMiAvKiBXZWJTaGFyaW5nU2VydmljZVBpY2tlckNvbnRyb2xsZXIuaCAqLzsgfTsKIAkJMkQy
NTM5NjcxOENFODVDMjAwMjcwMjIyIC8qIFdlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ29udHJvbGxl
ci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEMjUz
OTY1MThDRTg1QzIwMDI3MDIyMiAvKiBXZWJTaGFyaW5nU2VydmljZVBpY2tlckNvbnRyb2xsZXIu
bW0gKi87IH07CisJCTJERDYzMkMyMTlFNUQxRjAwMDJFOUM3QiAvKiBXZWJTZWxlY3Rpb25TZXJ2
aWNlQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMkRENjMyQzAxOUU1RDFGMDAwMkU5QzdCIC8qIFdlYlNlbGVjdGlvblNlcnZpY2VDb250
cm9sbGVyLmggKi87IH07CisJCTJERDYzMkMzMTlFNUQxRjAwMDJFOUM3QiAvKiBXZWJTZWxlY3Rp
b25TZXJ2aWNlQ29udHJvbGxlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDJERDYzMkMxMTlFNUQxRjAwMDJFOUM3QiAvKiBXZWJTZWxlY3Rpb25TZXJ2
aWNlQ29udHJvbGxlci5tbSAqLzsgfTsKIAkJMzEyRTJGRTUxNEU0ODE4MjAwN0NDQTE4IC8qIFdl
Yk5vdGlmaWNhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMzEyRTJGRTMxNEU0ODE4MjAwN0NDQTE4IC8qIFdlYk5vdGlmaWNhdGlvbi5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTMxMkUyRkU2MTRF
NDgxODIwMDdDQ0ExOCAvKiBXZWJOb3RpZmljYXRpb24ubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTJFMkZFNDE0RTQ4MTgyMDA3Q0NBMTggLyogV2Vi
Tm90aWZpY2F0aW9uLm1tICovOyB9OwogCQkzMTJFMkZFOTE0RTQ4MjE1MDA3Q0NBMTggLyogV2Vi
Tm90aWZpY2F0aW9uSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDMxMkUyRkU4MTRFNDgyMTUwMDdDQ0ExOCAvKiBXZWJOb3RpZmljYXRpb25J
bnRlcm5hbC5oICovOyB9OwpAQCAtNDYzLDcgKzQ2NSw3IEBACiAJCTBGMzA5ODVEMTFFQ0ZFNDQw
MEY1NTlERiAvKiBXZWJSZW5kZXJMYXllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXZWJSZW5kZXJMYXllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjMw
OTg1RTExRUNGRTQ1MDBGNTU5REYgLyogV2ViUmVuZGVyTGF5ZXIubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJSZW5kZXJMYXllci5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMTREODI1MkQwQUY5NTUwOTAwMDRGMDU3IC8qIFdlYkNocm9tZUNs
aWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQ2hyb21lQ2xpZW50
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTE0RDgyNTJFMEFGOTU1MDkwMDA0RjA1
NyAvKiBXZWJDaHJvbWVDbGllbnQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gV2ViQ2hyb21lQ2xpZW50Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkxNEQ4MjUyRTBBRjk1NTA5MDAwNEYwNTcgLyogV2ViQ2hyb21lQ2xpZW50Lm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViQ2hyb21lQ2xpZW50Lm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQTJEQkU5RDBGMjUxRTNBMDAzNkY4QTYgLyogUHJv
eHlJbnN0YW5jZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQcm94eUluc3Rh
bmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBMkRCRTlFMEYyNTFFM0EwMDM2
RjhBNiAvKiBQcm94eUluc3RhbmNlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gUHJveHlJbnN0YW5jZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MUE0REY1MjAwRUM4Qzc0RDAwNkJENEI0IC8qIFdlYk5ldHNjYXBlUGx1Z2luVmlldy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJOZXRzY2FwZVBsdWdpblZpZXcuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTUzMiw2ICs1MzQsOCBAQAogCQkyRDM2RkQ1RTAz
Rjc4RjlFMDBBODAxNjYgLyogV2ViRm9ybURlbGVnYXRlUHJpdmF0ZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGluZGVudFdpZHRoID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkZvcm1EZWxlZ2F0ZVByaXZh
dGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7
IH07CiAJCTJEODFEQUIyMDNFQjBCMkQwMEE4MDE2NiAvKiBXZWJGb3JtRGVsZWdhdGUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGgg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViRm9ybURl
bGVnYXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMg
PSAwOyB9OwogCQkyRDgxREFCMzAzRUIwQjJEMDBBODAxNjYgLyogV2ViRm9ybURlbGVnYXRlLm0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdp
ZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMub2JqYzsgcGF0aCA9IFdl
YkZvcm1EZWxlZ2F0ZS5tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVz
ZXNUYWJzID0gMDsgfTsKKwkJMkRENjMyQzAxOUU1RDFGMDAwMkU5QzdCIC8qIFdlYlNlbGVjdGlv
blNlcnZpY2VDb250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdl
YlNlbGVjdGlvblNlcnZpY2VDb250cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTJERDYzMkMxMTlFNUQxRjAwMDJFOUM3QiAvKiBXZWJTZWxlY3Rpb25TZXJ2aWNlQ29udHJv
bGxlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYlNlbGVj
dGlvblNlcnZpY2VDb250cm9sbGVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkz
MTJFMkZFMzE0RTQ4MTgyMDA3Q0NBMTggLyogV2ViTm90aWZpY2F0aW9uLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYk5vdGlmaWNhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkzMTJFMkZFNDE0RTQ4MTgyMDA3Q0NBMTggLyogV2ViTm90aWZpY2F0aW9u
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViTm90aWZpY2F0
aW9uLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMTJFMkZFODE0RTQ4MjE1MDA3
Q0NBMTggLyogV2ViTm90aWZpY2F0aW9uSW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV2ViTm90aWZpY2F0aW9uSW50ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTE1NjYsNiArMTU3MCw4IEBACiAJCQkJQTVERUZDMDcxMUQ1MzMxQzAwODg1
MjczIC8qIFdlYlNlY3VyaXR5T3JpZ2luLm1tICovLAogCQkJCUE1REVGQzA4MTFENTMzMUMwMDg4
NTI3MyAvKiBXZWJTZWN1cml0eU9yaWdpbkludGVybmFsLmggKi8sCiAJCQkJQTVERUZDMDkxMUQ1
MzMxQzAwODg1MjczIC8qIFdlYlNlY3VyaXR5T3JpZ2luUHJpdmF0ZS5oICovLAorCQkJCTJERDYz
MkMwMTlFNUQxRjAwMDJFOUM3QiAvKiBXZWJTZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxlci5oICov
LAorCQkJCTJERDYzMkMxMTlFNUQxRjAwMDJFOUM3QiAvKiBXZWJTZWxlY3Rpb25TZXJ2aWNlQ29u
dHJvbGxlci5tbSAqLywKIAkJCQk5M0VCMTc4RTA5Rjg4RDUxMDA5MUY4RkYgLyogV2ViU3lzdGVt
SW50ZXJmYWNlLmggKi8sCiAJCQkJOTNFQjE3OEMwOUY4OEQ0NjAwOTFGOEZGIC8qIFdlYlN5c3Rl
bUludGVyZmFjZS5tbSAqLywKIAkJCQkxQUIxREFDMDE4QkMwMjMyMDA0QjZBOUYgLyogV2ViVmll
d0dyb3VwLmggKi8sCkBAIC0xNjg2LDYgKzE2OTIsNyBAQAogCQkJCTdDMDFDQjg3MTczNDM1Qzkw
MEM1RDgwNyAvKiBTZWFyY2hQb3B1cE1lbnVNYWMuaCBpbiBIZWFkZXJzICovLAogCQkJCUExMEMx
RDZGMTgyMDMwMEUwMDM2ODgzQSAvKiBXZWJHZW9sb2NhdGlvbkludGVybmFsLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlDRURBMTJEQzE1MkNCRTY4MDBEOUUwOEQgLyogV2ViQWx0ZXJuYXRpdmVUZXh0
Q2xpZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQkyREQ2MzJDMjE5RTVEMUYwMDAyRTlDN0IgLyog
V2ViU2VsZWN0aW9uU2VydmljZUNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUI2Q0U1
QzI1MTAwQkM1RjUwMDIxOTkzNiAvKiBXZWJBcHBsaWNhdGlvbkNhY2hlLmggaW4gSGVhZGVycyAq
LywKIAkJCQlBMTBDMUQ3MjE4MjAzMDBFMDAzNjg4M0EgLyogV2ViTUlNRVR5cGVSZWdpc3RyeS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQTVERUZDMTMxMUQ1MzQ0QjAwODg1MjczIC8qIFdlYkFwcGxp
Y2F0aW9uQ2FjaGVRdW90YU1hbmFnZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMjEyOSw2ICsyMTM2
LDcgQEAKIAkJCQkxQ0NGRkQxMzBCMUY4MUYyMDAyRUU5MjYgLyogT2xkV2ViQXNzZXJ0aW9ucy5j
IGluIFNvdXJjZXMgKi8sCiAJCQkJQTEwQzFEOEUxODIwMzA1RTAwMzY4ODNBIC8qIFdlYlBERlZp
ZXdQbGFjZWhvbGRlci5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDMDFDQjg2MTczNDM1QzkwMEM1
RDgwNyAvKiBQb3B1cE1lbnVNYWMubW0gaW4gU291cmNlcyAqLywKKwkJCQkyREQ2MzJDMzE5RTVE
MUYwMDAyRTlDN0IgLyogV2ViU2VsZWN0aW9uU2VydmljZUNvbnRyb2xsZXIubW0gaW4gU291cmNl
cyAqLywKIAkJCQlBMTBDMUQ3NzE4MjAzMDBFMDAzNjg4M0EgLyogV2ViVmlzaWJsZVBvc2l0aW9u
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMUEyREJFQTAwRjI1MUUzQTAwMzZGOEE2IC8qIFByb3h5
SW5zdGFuY2UubW0gaW4gU291cmNlcyAqLywKIAkJCQkwNzBGNTQ5QzE3RjFFNDJCMDAxNjlFMDQg
LyogV2ViVXNlck1lZGlhQ2xpZW50Lm1tIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5k
ZXggMjZkMjI2MS4uZDdiZWQ3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDg3IEBACiAy
MDE0LTEwLTA5ICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCisgICAg
ICAgIEltcGxlbWVudCBzZWxlY3Rpb24gc2VydmljZXMgbWVudSBmb3IgTGVnYWN5IFdlYktpdAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM3NTgyCisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xODYwNDI0MT4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE1pc2MvV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJD
b250cm9sbGVyLmg6CisgICAgICAgIE1vdmUgU1BJIGludG8gdGhlIGhlYWRlciAoaW4gdGhlIG5l
YXIgZnV0dXJlIGl0IHdpbGwgYmUgbW92ZWQgdG8gYSBtb2Rlcm4tc3R5bGUgU1BJIGhlYWRlciku
CisgICAgICAgIEFkZCBXZWJTaGFyaW5nU2VydmljZVBpY2tlckNsaWVudCwgd2hpY2ggb3RoZXIg
Y2xhc3NlcyBjYW4gaW1wbGVtZW50CisgICAgICAgIGluc3RlYWQgb2YgdHlpbmcgV2ViU2hhcmlu
Z1NlcnZpY2VQaWNrZXJDb250cm9sbGVyIHN0cm9uZ2x5IHRvIFdlYkNvbnRleHRNZW51Q2xpZW50
LgorICAgICAgICBNYWtlIGluaXRXaXRoRGF0YTouLi4gLT4gaW5pdFdpdGhJdGVtczouLi4gaW5z
dGVhZCwgdGFraW5nIGFuIGFycmF5IG9mIE5TSXRlbVByb3ZpZGVycy4KKworICAgICAgICAqIE1p
c2MvV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDb250cm9sbGVyLm1tOgorICAgICAgICBQYXNzIGlu
IE5TU2hhcmluZ1NlcnZpY2VQaWNrZXJTdHlsZSwgc28gdGhhdCBjbGllbnRzIGNhbiBzcGVjaWZ5
IHRoZSBzdHlsZS4KKworICAgICAgICAoLVtXZWJTaGFyaW5nU2VydmljZVBpY2tlckNvbnRyb2xs
ZXIgY2xlYXJdKToKKyAgICAgICAgKC1bV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDb250cm9sbGVy
IGRpZFNoYXJlSW1hZ2VEYXRhOmNvbmZpcm1EYXRhSXNWYWxpZFRJRkZEYXRhOl0pOgorICAgICAg
ICAoLVtXZWJTaGFyaW5nU2VydmljZVBpY2tlckNvbnRyb2xsZXIgc2hhcmluZ1NlcnZpY2VQaWNr
ZXI6ZGlkQ2hvb3NlU2hhcmluZ1NlcnZpY2U6XSk6CisgICAgICAgICgtW1dlYlNoYXJpbmdTZXJ2
aWNlUGlja2VyQ29udHJvbGxlciBzaGFyaW5nU2VydmljZTpzb3VyY2VGcmFtZU9uU2NyZWVuRm9y
U2hhcmVJdGVtOl0pOgorICAgICAgICAoLVtXZWJTaGFyaW5nU2VydmljZVBpY2tlckNvbnRyb2xs
ZXIgc2hhcmluZ1NlcnZpY2U6dHJhbnNpdGlvbkltYWdlRm9yU2hhcmVJdGVtOmNvbnRlbnRSZWN0
Ol0pOgorICAgICAgICAoLVtXZWJTaGFyaW5nU2VydmljZVBpY2tlckNvbnRyb2xsZXIgc2hhcmlu
Z1NlcnZpY2U6c291cmNlV2luZG93Rm9yU2hhcmVJdGVtczpzaGFyaW5nQ29udGVudFNjb3BlOl0p
OgorICAgICAgICBNYWtlIHVzZSBvZiBXZWJTaGFyaW5nU2VydmljZVBpY2tlckNsaWVudC4KKwor
ICAgICAgICAoLVtXZWJTaGFyaW5nU2VydmljZVBpY2tlckNvbnRyb2xsZXIgc2hhcmluZ1NlcnZp
Y2U6ZGlkU2hhcmVJdGVtczpdKToKKyAgICAgICAgSWYgd2UncmUgcmV0dXJuZWQgYSBOU0F0dHJp
YnV0ZWRTdHJpbmcsIHBhc3RlIGl0IG9uIHRvcCBvZiB0aGUgY3VycmVudCBzZWxlY3Rpb24sCisg
ICAgICAgIHNpbWlsYXIgdG8gd2hhdCB0aGUgV2ViS2l0MiBpbXBsZW1lbnRhdGlvbiBjdXJyZW50
bHkgZG9lcy4KKyAgICAgICAgCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xp
ZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1tOgorICAg
ICAgICAoV2ViQ2hyb21lQ2xpZW50OjpoYW5kbGVUZWxlcGhvbmVOdW1iZXJDbGljayk6CisgICAg
ICAgIChXZWJDaHJvbWVDbGllbnQ6OmhhbmRsZVNlbGVjdGlvblNlcnZpY2VDbGljayk6CisgICAg
ICAgIChXZWJDaHJvbWVDbGllbnQ6Omhhc1JlbGV2YW50U2VsZWN0aW9uU2VydmljZXMpOgorICAg
ICAgICBPdmVycmlkZSB0aGUgc2VydmljZXMtcmVsYXRlZCBDaHJvbWVDbGllbnQgZnVuY3Rpb25z
LCBmb3J3YXJkIHRoZW0gdG8gV2ViU2VsZWN0aW9uU2VydmljZUNvbnRyb2xsZXIuCisKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5oOgorICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50Lm1tOgorICAgICAgICAoV2ViQ29udGV4
dE1lbnVDbGllbnQ6OnNoYXJpbmdTZXJ2aWNlUGlja2VyV2lsbEJlRGVzdHJveWVkKToKKyAgICAg
ICAgKFdlYkNvbnRleHRNZW51Q2xpZW50OjpwYWdlRm9yU2hhcmluZ1NlcnZpY2VQaWNrZXIpOgor
ICAgICAgICAoV2ViQ29udGV4dE1lbnVDbGllbnQ6OndpbmRvd0ZvclNoYXJpbmdTZXJ2aWNlUGlj
a2VyKToKKyAgICAgICAgKFdlYkNvbnRleHRNZW51Q2xpZW50OjpzY3JlZW5SZWN0Rm9yQ3VycmVu
dFNoYXJpbmdTZXJ2aWNlUGlja2VySXRlbSk6CisgICAgICAgIChXZWJDb250ZXh0TWVudUNsaWVu
dDo6aW1hZ2VGb3JDdXJyZW50U2hhcmluZ1NlcnZpY2VQaWNrZXJJdGVtKToKKyAgICAgICAgKFdl
YkNvbnRleHRNZW51Q2xpZW50Ojpjb250ZXh0TWVudUZvckV2ZW50KToKKyAgICAgICAgKFdlYkNv
bnRleHRNZW51Q2xpZW50OjpzY3JlZW5SZWN0Rm9ySGl0VGVzdE5vZGUpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29udGV4dE1lbnVDbGllbnQ6OnJlbmRlcmVkSW1hZ2VGb3JDb250cm9sbGVkSW1h
Z2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29udGV4dE1lbnVDbGllbnQ6OmNsZWFyU2hhcmlu
Z1NlcnZpY2VQaWNrZXJDb250cm9sbGVyKTogRGVsZXRlZC4KKyAgICAgICAgSGF2ZSBXZWJDb250
ZXh0TWVudUNsaWVudCBpbXBsZW1lbnQgV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDbGllbnQgdG8g
YXZvaWQKKyAgICAgICAgaGF2aW5nIFdlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ29udHJvbGxlciB0
aWdodGx5IGJvdW5kIHRvIGl0LgorICAgICAgICBNYWtlIGFuIE5TSXRlbVByb3ZpZGVyIGFycmF5
IHdoZW4gaW5zdGFudGlhdGluZyBXZWJTaGFyaW5nU2VydmljZVBpY2tlckNvbnRyb2xsZXIKKyAg
ICAgICAgaW5zdGVhZCBvZiBoYW5kaW5nIGl0IGRhdGEgZGlyZWN0bHkuCisKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9XZWJTZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxlci5oOiBDb3BpZWQgZnJv
bSBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5o
LgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlNlbGVjdGlvblNlcnZpY2VDb250cm9sbGVy
Lm1tOiBBZGRlZC4KKyAgICAgICAgKFdlYlNlbGVjdGlvblNlcnZpY2VDb250cm9sbGVyOjpXZWJT
ZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxlcik6CisgICAgICAgIEFkZCBXZWJTZWxlY3Rpb25TZXJ2
aWNlQ29udHJvbGxlciwgd2hpY2ggd2lsbCBhY3QgYXMgdGhlIFdlYlNoYXJpbmdTZXJ2aWNlUGlj
a2VyQ2xpZW50CisgICAgICAgIGZvciBzZWxlY3Rpb24gc2VydmljZXMuCisKKyAgICAgICAgKFdl
YlNlbGVjdGlvblNlcnZpY2VDb250cm9sbGVyOjpoYW5kbGVTZWxlY3Rpb25TZXJ2aWNlQ2xpY2sp
OgorICAgICAgICBDcmVhdGUgYSBXZWJTaGFyaW5nU2VyaWNlUGlja2VyQ29udHJvbGxlciB3aXRo
IHRoZSBzZWxlY3Rpb24ncyBhdHRyaWJ1dGVkIHN0cmluZywgYW5kIHNob3cgaXRzIG1lbnUuCisK
KyAgICAgICAgKGhhc0NvbXBhdGlibGVTZXJ2aWNlc0Zvckl0ZW1zKToKKyAgICAgICAgKFdlYlNl
bGVjdGlvblNlcnZpY2VDb250cm9sbGVyOjpoYXNSZWxldmFudFNlbGVjdGlvblNlcnZpY2VzKToK
KyAgICAgICAgRGV0ZXJtaW5lIHdoZXRoZXIgb3Igbm90IHNlcnZpY2VzIGFyZSBhdmFpbGFibGUu
CisKKyAgICAgICAgKFdlYlNlbGVjdGlvblNlcnZpY2VDb250cm9sbGVyOjpzaGFyaW5nU2Vydmlj
ZVBpY2tlcldpbGxCZURlc3Ryb3llZCk6CisgICAgICAgIChXZWJTZWxlY3Rpb25TZXJ2aWNlQ29u
dHJvbGxlcjo6cGFnZUZvclNoYXJpbmdTZXJ2aWNlUGlja2VyKToKKyAgICAgICAgKFdlYlNlbGVj
dGlvblNlcnZpY2VDb250cm9sbGVyOjp3aW5kb3dGb3JTaGFyaW5nU2VydmljZVBpY2tlcik6Cisg
ICAgICAgIEltcGxlbWVudCB0aGUgcmVzdCBvZiB0aGUgV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJD
bGllbnQgb3ZlcnJpZGVzLgorCisgICAgICAgIChXZWJTZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxl
cjo6c2NyZWVuUmVjdEZvckN1cnJlbnRTaGFyaW5nU2VydmljZVBpY2tlckl0ZW0pOgorICAgICAg
ICAoV2ViU2VsZWN0aW9uU2VydmljZUNvbnRyb2xsZXI6OmltYWdlRm9yQ3VycmVudFNoYXJpbmdT
ZXJ2aWNlUGlja2VySXRlbSk6CisgICAgICAgIFRoZXNlIGFyZSBvbmx5IHVzZWZ1bCBmb3IgaW1h
Z2Ugc2hhcmluZyBzZXJ2aWNlcywgc28gd2UgZG9uJ3QgbmVlZCB0bworICAgICAgICBpbXBsZW1l
bnQgdGhlbSAoV2ViQ29udGV4dE1lbnVDbGllbnQgZG9lcywgb24gdGhlIG90aGVyIGhhbmQpLgor
CisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgorICAgICAgICAoLVtXZWJWaWV3IF9zZWxl
Y3Rpb25TZXJ2aWNlQ29udHJvbGxlcl0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlld0RhdGEu
aDoKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXdEYXRhLm1tOgorICAgICAgICAqIFdlYlZpZXcv
V2ViVmlld0ludGVybmFsLmg6CisgICAgICAgIEtlZXAgYSBXZWJTZWxlY3Rpb25TZXJ2aWNlQ29u
dHJvbGxlci4KKworMjAxNC0xMC0wOSAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxl
LmNvbT4KKwogICAgICAgICBBZGQgYSBXZWJLaXQxIHByZWZlcmVuY2UgZm9yIHNlbGVjdGlvbiBz
ZXJ2aWNlcwogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTM3NDk4CiAgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xODU3MjY5OT4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDb250cm9sbGVyLmgg
Yi9Tb3VyY2UvV2ViS2l0L21hYy9NaXNjL1dlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ29udHJvbGxl
ci5oCmluZGV4IDhhYThhOWQuLjg0ZWQzMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFj
L01pc2MvV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dl
YktpdC9tYWMvTWlzYy9XZWJTaGFyaW5nU2VydmljZVBpY2tlckNvbnRyb2xsZXIuaApAQCAtMjgs
MTggKzI4LDU1IEBACiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAKIEBjbGFzcyBOU1NoYXJp
bmdTZXJ2aWNlUGlja2VyOworQGNsYXNzIFdlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ29udHJvbGxl
cjsKIEBwcm90b2NvbCBOU1NoYXJpbmdTZXJ2aWNlRGVsZWdhdGU7CiBAcHJvdG9jb2wgTlNTaGFy
aW5nU2VydmljZVBpY2tlckRlbGVnYXRlOwogCisjaWYgX19oYXNfaW5jbHVkZSg8QXBwS2l0L05T
U2hhcmluZ1NlcnZpY2VfUHJpdmF0ZS5oPikKKyNpbXBvcnQgPEFwcEtpdC9OU1NoYXJpbmdTZXJ2
aWNlX1ByaXZhdGUuaD4KKyNlbHNlCit0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBOU1NoYXJp
bmdTZXJ2aWNlUGlja2VyU3R5bGUpIHsKKyAgICBOU1NoYXJpbmdTZXJ2aWNlUGlja2VyU3R5bGVN
ZW51ID0gMCwKKyAgICBOU1NoYXJpbmdTZXJ2aWNlUGlja2VyU3R5bGVSb2xsb3ZlciA9IDEsCisg
ICAgTlNTaGFyaW5nU2VydmljZVBpY2tlclN0eWxlVGV4dFNlbGVjdGlvbiA9IDIsCisgICAgTlNT
aGFyaW5nU2VydmljZVBpY2tlclN0eWxlRGF0YURldGVjdG9yID0gMworfSBOU19FTlVNX0FWQUlM
QUJMRV9NQUMoMTBfMTApOworCit0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBOU1NoYXJpbmdT
ZXJ2aWNlVHlwZSkgeworICAgIE5TU2hhcmluZ1NlcnZpY2VUeXBlU2hhcmUgPSAwLAorICAgIE5T
U2hhcmluZ1NlcnZpY2VUeXBlVmlld2VyID0gMSwKKyAgICBOU1NoYXJpbmdTZXJ2aWNlVHlwZUVk
aXRvciA9IDIKK30gTlNfRU5VTV9BVkFJTEFCTEVfTUFDKDEwXzEwKTsKKwordHlwZWRlZiBOU1VJ
bnRlZ2VyIE5TU2hhcmluZ1NlcnZpY2VNYXNrOworI2VuZGlmCisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKK2NsYXNzIEZsb2F0UmVjdDsKK2NsYXNzIFBhZ2U7Cit9CisKIGNsYXNzIFdlYkNvbnRleHRN
ZW51Q2xpZW50OwogCitjbGFzcyBXZWJTaGFyaW5nU2VydmljZVBpY2tlckNsaWVudCB7CitwdWJs
aWM6CisgICAgdmlydHVhbCB+V2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDbGllbnQoKSB7IH0KKwor
ICAgIHZpcnR1YWwgdm9pZCBzaGFyaW5nU2VydmljZVBpY2tlcldpbGxCZURlc3Ryb3llZChXZWJT
aGFyaW5nU2VydmljZVBpY2tlckNvbnRyb2xsZXIgKikgPSAwOworICAgIHZpcnR1YWwgV2ViQ29y
ZTo6UGFnZSogcGFnZUZvclNoYXJpbmdTZXJ2aWNlUGlja2VyKFdlYlNoYXJpbmdTZXJ2aWNlUGlj
a2VyQ29udHJvbGxlciAqKSA9IDA7CisgICAgdmlydHVhbCBOU1dpbmRvdyAqd2luZG93Rm9yU2hh
cmluZ1NlcnZpY2VQaWNrZXIoV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDb250cm9sbGVyICopID0g
MDsKKworICAgIHZpcnR1YWwgV2ViQ29yZTo6RmxvYXRSZWN0IHNjcmVlblJlY3RGb3JDdXJyZW50
U2hhcmluZ1NlcnZpY2VQaWNrZXJJdGVtKFdlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ29udHJvbGxl
ciAqKSA9IDA7CisgICAgdmlydHVhbCBOU0ltYWdlICppbWFnZUZvckN1cnJlbnRTaGFyaW5nU2Vy
dmljZVBpY2tlckl0ZW0oV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDb250cm9sbGVyICopID0gMDsK
K307CisKIEBpbnRlcmZhY2UgV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDb250cm9sbGVyIDogTlNP
YmplY3QgPE5TU2hhcmluZ1NlcnZpY2VEZWxlZ2F0ZSwgTlNTaGFyaW5nU2VydmljZVBpY2tlckRl
bGVnYXRlPiB7Ci0gICAgV2ViQ29udGV4dE1lbnVDbGllbnQqIF9tZW51Q2xpZW50OworICAgIFdl
YlNoYXJpbmdTZXJ2aWNlUGlja2VyQ2xpZW50KiBfcGlja2VyQ2xpZW50OwogICAgIFJldGFpblB0
cjxOU1NoYXJpbmdTZXJ2aWNlUGlja2VyPiBfcGlja2VyOwogICAgIEJPT0wgX2luY2x1ZGVFZGl0
b3JTZXJ2aWNlczsKIH0KIAotLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRGF0YTooTlNEYXRhICop
ZGF0YSBpbmNsdWRlRWRpdG9yU2VydmljZXM6KEJPT0wpaW5jbHVkZUVkaXRvclNlcnZpY2VzIG1l
bnVDbGllbnQ6KFdlYkNvbnRleHRNZW51Q2xpZW50KiltZW51Q2xpZW50OworLSAoaW5zdGFuY2V0
eXBlKWluaXRXaXRoSXRlbXM6KE5TQXJyYXkgKilpdGVtcyBpbmNsdWRlRWRpdG9yU2VydmljZXM6
KEJPT0wpaW5jbHVkZUVkaXRvclNlcnZpY2VzIGNsaWVudDooV2ViU2hhcmluZ1NlcnZpY2VQaWNr
ZXJDbGllbnQqKXBpY2tlckNsaWVudCBzdHlsZTooTlNTaGFyaW5nU2VydmljZVBpY2tlclN0eWxl
KXN0eWxlOwogLSAoTlNNZW51ICopbWVudTsKIC0gKHZvaWQpZGlkU2hhcmVJbWFnZURhdGE6KE5T
RGF0YSAqKWRhdGEgY29uZmlybURhdGFJc1ZhbGlkVElGRkRhdGE6KEJPT0wpY29uZmlybURhdGE7
CiAtICh2b2lkKWNsZWFyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvTWlzYy9XZWJT
aGFyaW5nU2VydmljZVBpY2tlckNvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9NaXNj
L1dlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ29udHJvbGxlci5tbQppbmRleCBiZWFiMGNjLi42MDli
NjRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9NaXNjL1dlYlNoYXJpbmdTZXJ2aWNl
UGlja2VyQ29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9NaXNjL1dlYlNoYXJp
bmdTZXJ2aWNlUGlja2VyQ29udHJvbGxlci5tbQpAQCAtMzksMjAgKzM5LDYgQEAKICNpbXBvcnQg
PFdlYkNvcmUvQ29udGV4dE1lbnVDb250cm9sbGVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BhZ2Uu
aD4KIAotI2lmIF9faGFzX2luY2x1ZGUoPEFwcEtpdC9OU1NoYXJpbmdTZXJ2aWNlX1ByaXZhdGUu
aD4pCi0jaW1wb3J0IDxBcHBLaXQvTlNTaGFyaW5nU2VydmljZV9Qcml2YXRlLmg+Ci0jZWxzZQot
dHlwZWRlZiBlbnVtIHsKLSAgICBOU1NoYXJpbmdTZXJ2aWNlUGlja2VyU3R5bGVSb2xsb3ZlciA9
IDEKLX0gTlNTaGFyaW5nU2VydmljZVBpY2tlclN0eWxlOwotCi10eXBlZGVmIGVudW0gewotICAg
IE5TU2hhcmluZ1NlcnZpY2VUeXBlRWRpdG9yID0gMgotfSBOU1NoYXJpbmdTZXJ2aWNlVHlwZTsK
LQotdHlwZWRlZiBOU1VJbnRlZ2VyIE5TU2hhcmluZ1NlcnZpY2VNYXNrOwotI2VuZGlmCi0KIEBp
bnRlcmZhY2UgTlNTaGFyaW5nU2VydmljZVBpY2tlciAoUHJpdmF0ZSkKIEBwcm9wZXJ0eSBOU1No
YXJpbmdTZXJ2aWNlUGlja2VyU3R5bGUgc3R5bGU7CiAtIChOU01lbnUgKiltZW51OwpAQCAtNzks
NyArNjUsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogQGltcGxlbWVudGF0aW9uIFdl
YlNoYXJpbmdTZXJ2aWNlUGlja2VyQ29udHJvbGxlcgogCi0tIChpbnN0YW5jZXR5cGUpaW5pdFdp
dGhEYXRhOihOU0RhdGEgKilkYXRhIGluY2x1ZGVFZGl0b3JTZXJ2aWNlczooQk9PTClpbmNsdWRl
RWRpdG9yU2VydmljZXMgbWVudUNsaWVudDooV2ViQ29udGV4dE1lbnVDbGllbnQqKW1lbnVDbGll
bnQKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aEl0ZW1zOihOU0FycmF5ICopaXRlbXMgaW5jbHVk
ZUVkaXRvclNlcnZpY2VzOihCT09MKWluY2x1ZGVFZGl0b3JTZXJ2aWNlcyBjbGllbnQ6KFdlYlNo
YXJpbmdTZXJ2aWNlUGlja2VyQ2xpZW50KilwaWNrZXJDbGllbnQgc3R5bGU6KE5TU2hhcmluZ1Nl
cnZpY2VQaWNrZXJTdHlsZSlzdHlsZQogewogI2lmbmRlZiBfX0xQNjRfXwogICAgIHJldHVybiBu
aWw7CkBAIC04NywxNCArNzMsMTIgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAgICAgaWYg
KCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBSZXRh
aW5QdHI8TlNJdGVtUHJvdmlkZXI+IGl0ZW1Qcm92aWRlciA9IGFkb3B0TlMoW1tOU0l0ZW1Qcm92
aWRlciBhbGxvY10gaW5pdFdpdGhJdGVtOmRhdGEgdHlwZUlkZW50aWZpZXI6QCJwdWJsaWMuZGF0
YSJdKTsKLQotICAgIF9waWNrZXIgPSBhZG9wdE5TKFtbTlNTaGFyaW5nU2VydmljZVBpY2tlciBh
bGxvY10gaW5pdFdpdGhJdGVtczpAWyBpdGVtUHJvdmlkZXIuZ2V0KCkgXV0pOwotICAgIFtfcGlj
a2VyIHNldFN0eWxlOk5TU2hhcmluZ1NlcnZpY2VQaWNrZXJTdHlsZVJvbGxvdmVyXTsKKyAgICBf
cGlja2VyID0gYWRvcHROUyhbW05TU2hhcmluZ1NlcnZpY2VQaWNrZXIgYWxsb2NdIGluaXRXaXRo
SXRlbXM6aXRlbXNdKTsKKyAgICBbX3BpY2tlciBzZXRTdHlsZTpzdHlsZV07CiAgICAgW19waWNr
ZXIgc2V0RGVsZWdhdGU6c2VsZl07CiAKICAgICBfaW5jbHVkZUVkaXRvclNlcnZpY2VzID0gaW5j
bHVkZUVkaXRvclNlcnZpY2VzOwotICAgIF9tZW51Q2xpZW50ID0gbWVudUNsaWVudDsKKyAgICBf
cGlja2VyQ2xpZW50ID0gcGlja2VyQ2xpZW50OwogCiAgICAgcmV0dXJuIHNlbGY7CiAjZW5kaWYK
QEAgLTEwNSwxMSArODksMTEgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAgICAgLy8gUHJv
dGVjdCBzZWxmIGZyb20gYmVpbmcgZGVhbGxvYydlZCBwYXJ0d2F5IHRocm91Z2ggdGhpcyBtZXRo
b2QuCiAgICAgUmV0YWluUHRyPFdlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ29udHJvbGxlcj4gcHJv
dGVjdG9yKHNlbGYpOwogCi0gICAgaWYgKF9tZW51Q2xpZW50KQotICAgICAgICBfbWVudUNsaWVu
dC0+Y2xlYXJTaGFyaW5nU2VydmljZVBpY2tlckNvbnRyb2xsZXIoKTsKKyAgICBpZiAoX3BpY2tl
ckNsaWVudCkKKyAgICAgICAgX3BpY2tlckNsaWVudC0+c2hhcmluZ1NlcnZpY2VQaWNrZXJXaWxs
QmVEZXN0cm95ZWQoc2VsZik7CiAKICAgICBfcGlja2VyID0gbnVsbHB0cjsKLSAgICBfbWVudUNs
aWVudCA9IG51bGxwdHI7CisgICAgX3BpY2tlckNsaWVudCA9IG51bGxwdHI7CiB9CiAKIC0gKE5T
TWVudSAqKW1lbnUKQEAgLTExOSw3ICsxMDMsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
IAogLSAodm9pZClkaWRTaGFyZUltYWdlRGF0YTooTlNEYXRhICopZGF0YSBjb25maXJtRGF0YUlz
VmFsaWRUSUZGRGF0YTooQk9PTCljb25maXJtRGF0YQogewotICAgIFBhZ2UqIHBhZ2UgPSBbX21l
bnVDbGllbnQtPndlYlZpZXcoKSBwYWdlXTsKKyAgICBQYWdlKiBwYWdlID0gX3BpY2tlckNsaWVu
dC0+cGFnZUZvclNoYXJpbmdTZXJ2aWNlUGlja2VyKHNlbGYpOwogICAgIGlmICghcGFnZSkKICAg
ICAgICAgcmV0dXJuOwogCkBAIC0xNzAsMTMgKzE1NCwxOCBAQCB1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKIC0gKHZvaWQpc2hhcmluZ1NlcnZpY2VQaWNrZXI6KE5TU2hhcmluZ1NlcnZpY2VQaWNr
ZXIgKilzaGFyaW5nU2VydmljZVBpY2tlciBkaWRDaG9vc2VTaGFyaW5nU2VydmljZTooTlNTaGFy
aW5nU2VydmljZSAqKXNlcnZpY2UKIHsKICAgICBpZiAoIXNlcnZpY2UpCi0gICAgICAgIF9tZW51
Q2xpZW50LT5jbGVhclNoYXJpbmdTZXJ2aWNlUGlja2VyQ29udHJvbGxlcigpOworICAgICAgICBf
cGlja2VyQ2xpZW50LT5zaGFyaW5nU2VydmljZVBpY2tlcldpbGxCZURlc3Ryb3llZChzZWxmKTsK
IH0KIAogI3ByYWdtYSBtYXJrIE5TU2hhcmluZ1NlcnZpY2VEZWxlZ2F0ZSBtZXRob2RzCiAKIC0g
KHZvaWQpc2hhcmluZ1NlcnZpY2U6KE5TU2hhcmluZ1NlcnZpY2UgKilzaGFyaW5nU2VydmljZSBk
aWRTaGFyZUl0ZW1zOihOU0FycmF5ICopaXRlbXMKIHsKKyAgICAvLyBXZSBvbmx5IGNhcmUgYWJv
dXQgd2hhdCBpdGVtIHdhcyBzaGFyZWQgaWYgd2Ugd2VyZSBpbnRlcmVzdGVkIGluIGVkaXRvciBz
ZXJ2aWNlcworICAgIC8vIChpLmUuLCBpZiB3ZSBwbGFuIG9uIHJlcGxhY2luZyB0aGUgc2VsZWN0
aW9uIHdpdGggdGhlIHJldHVybmVkIGl0ZW0pCisgICAgaWYgKCFfaW5jbHVkZUVkaXRvclNlcnZp
Y2VzKQorICAgICAgICByZXR1cm47CisKICAgICAvLyBXZSBvbmx5IHNlbmQgb25lIGl0ZW0sIHNv
IHdlIHNob3VsZCBvbmx5IGdldCBvbmUgaXRlbSBiYWNrLgogICAgIGlmIChbaXRlbXMgY291bnRd
ICE9IDEpCiAgICAgICAgIHJldHVybjsKQEAgLTIwOCw4ICsxOTcsMTEgQEAgdXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CiAgICAgICAgIH1dOwogICAgIH0KICNlbmRpZgotICAgIGVsc2UKLSAgICAg
ICAgTE9HX0VSUk9SKCJzaGFyaW5nU2VydmljZTpkaWRTaGFyZUl0ZW1zOiAtIFVua25vd24gaXRl
bSB0eXBlIHJldHVybmVkIik7CisgICAgZWxzZSBpZiAoW2l0ZW0gaXNLaW5kT2ZDbGFzczpbTlNB
dHRyaWJ1dGVkU3RyaW5nIGNsYXNzXV0pIHsKKyAgICAgICAgRnJhbWUmIGZyYW1lID0gX3BpY2tl
ckNsaWVudC0+cGFnZUZvclNoYXJpbmdTZXJ2aWNlUGlja2VyKHNlbGYpLT5mb2N1c0NvbnRyb2xs
ZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKTsKKyAgICAgICAgZnJhbWUuZWRpdG9yKCkucmVwbGFj
ZVNlbGVjdGlvbldpdGhBdHRyaWJ1dGVkU3RyaW5nKGl0ZW0pOworICAgIH0gZWxzZQorICAgICAg
ICBMT0dfRVJST1IoInNoYXJpbmdTZXJ2aWNlOmRpZFNoYXJlSXRlbXM6IC0gVW5rbm93biBpdGVt
IHR5cGUgcmV0dXJuZWRcbiIpOwogfQogCiAtICh2b2lkKXNoYXJpbmdTZXJ2aWNlOihOU1NoYXJp
bmdTZXJ2aWNlICopc2hhcmluZ1NlcnZpY2UgZGlkRmFpbFRvU2hhcmVJdGVtczooTlNBcnJheSAq
KWl0ZW1zIGVycm9yOihOU0Vycm9yICopZXJyb3IKQEAgLTIxOSwyMyArMjExLDIzIEBAIHVzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOwogCiAtIChOU1JlY3Qpc2hhcmluZ1NlcnZpY2U6KE5TU2hhcmlu
Z1NlcnZpY2UgKilzaGFyaW5nU2VydmljZSBzb3VyY2VGcmFtZU9uU2NyZWVuRm9yU2hhcmVJdGVt
OihpZCA8TlNQYXN0ZWJvYXJkV3JpdGluZz4paXRlbQogewotICAgIGlmICghX21lbnVDbGllbnQp
CisgICAgaWYgKCFfcGlja2VyQ2xpZW50KQogICAgICAgICByZXR1cm4gTlNaZXJvUmVjdDsKIAot
ICAgIHJldHVybiBfbWVudUNsaWVudC0+c2NyZWVuUmVjdEZvckhpdFRlc3ROb2RlKCk7CisgICAg
cmV0dXJuIF9waWNrZXJDbGllbnQtPnNjcmVlblJlY3RGb3JDdXJyZW50U2hhcmluZ1NlcnZpY2VQ
aWNrZXJJdGVtKHNlbGYpOwogfQogCiAtIChOU0ltYWdlICopc2hhcmluZ1NlcnZpY2U6KE5TU2hh
cmluZ1NlcnZpY2UgKilzaGFyaW5nU2VydmljZSB0cmFuc2l0aW9uSW1hZ2VGb3JTaGFyZUl0ZW06
KGlkIDxOU1Bhc3RlYm9hcmRXcml0aW5nPilpdGVtIGNvbnRlbnRSZWN0OihOU1JlY3QgKiljb250
ZW50UmVjdAogewotICAgIGlmICghX21lbnVDbGllbnQpCisgICAgaWYgKCFfcGlja2VyQ2xpZW50
KQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgcmV0dXJuIF9tZW51Q2xpZW50LT5yZW5kZXJl
ZEltYWdlRm9yQ29udHJvbGxlZEltYWdlKCk7CisgICAgcmV0dXJuIF9waWNrZXJDbGllbnQtPmlt
YWdlRm9yQ3VycmVudFNoYXJpbmdTZXJ2aWNlUGlja2VySXRlbShzZWxmKTsKIH0KIAogLSAoTlNX
aW5kb3cgKilzaGFyaW5nU2VydmljZTooTlNTaGFyaW5nU2VydmljZSAqKXNoYXJpbmdTZXJ2aWNl
IHNvdXJjZVdpbmRvd0ZvclNoYXJlSXRlbXM6KE5TQXJyYXkgKilpdGVtcyBzaGFyaW5nQ29udGVu
dFNjb3BlOihOU1NoYXJpbmdDb250ZW50U2NvcGUgKilzaGFyaW5nQ29udGVudFNjb3BlCiB7Ci0g
ICAgcmV0dXJuIFtfbWVudUNsaWVudC0+d2ViVmlldygpIHdpbmRvd107CisgICAgcmV0dXJuIF9w
aWNrZXJDbGllbnQtPndpbmRvd0ZvclNoYXJpbmdTZXJ2aWNlUGlja2VyKHNlbGYpOwogfQogCiBA
ZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJv
bWVDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNs
aWVudC5oCmluZGV4IDcyNzBjZTEuLmY3ZjcyZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCkBAIC0yMDUsNiArMjA1LDExIEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgdW53cmFwQ3J5cHRvS2V5KGNvbnN0IFZlY3Rvcjx1
aW50OF90PiYsIFZlY3Rvcjx1aW50OF90PiYpIGNvbnN0IG92ZXJyaWRlOwogI2VuZGlmCiAKKyNp
ZiBFTkFCTEUoU0VSVklDRV9DT05UUk9MUykKKyAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlU2VsZWN0
aW9uU2VydmljZUNsaWNrKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uJiwgY29uc3QgVmVjdG9yPFN0
cmluZz4mIHRlbGVwaG9uZU51bWJlcnMsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jikgb3ZlcnJp
ZGU7CisgICAgdmlydHVhbCBib29sIGhhc1JlbGV2YW50U2VsZWN0aW9uU2VydmljZXMoYm9vbCBp
c1RleHRPbmx5KSBjb25zdCBvdmVycmlkZTsKKyNlbmRpZgorCiAjaWYgUExBVEZPUk0oSU9TKQog
ICAgIFdlYlZpZXcqIHdlYlZpZXcoKSBjb25zdCB7IHJldHVybiBtX3dlYlZpZXc7IH0KICNlbHNl
CkBAIC0yMTIsNiArMjE3LDUgQEAgcHVibGljOgogI2VuZGlmCiAKIHByaXZhdGU6Ci0KICAgICBX
ZWJWaWV3ICptX3dlYlZpZXc7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1tCmluZGV4IDMyMTY4MDcuLjc3ZDkxMmIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQu
bW0KQEAgLTQ5LDYgKzQ5LDcgQEAKICNpbXBvcnQgIldlYlBsdWdpbi5oIgogI2ltcG9ydCAiV2Vi
UXVvdGFNYW5hZ2VyLmgiCiAjaW1wb3J0ICJXZWJTZWN1cml0eU9yaWdpbkludGVybmFsLmgiCisj
aW1wb3J0ICJXZWJTZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxlci5oIgogI2ltcG9ydCAiV2ViVUlE
ZWxlZ2F0ZVByaXZhdGUuaCIKICNpbXBvcnQgIldlYlZpZXcuaCIKICNpbXBvcnQgIldlYlZpZXdJ
bnRlcm5hbC5oIgpAQCAtMTAzOSwzICsxMDQwLDE2IEBAIGJvb2wgV2ViQ2hyb21lQ2xpZW50Ojp1
bndyYXBDcnlwdG9LZXkoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiB3cmFwcGVkS2V5LCBWZWN0b3I8
CiAgICAgcmV0dXJuIHVud3JhcFNlcmlhbGl6ZWRDcnlwdG9LZXkobWFzdGVyS2V5LCB3cmFwcGVk
S2V5LCBrZXkpOwogfQogI2VuZGlmCisKKyNpZiBFTkFCTEUoU0VSVklDRV9DT05UUk9MUykKK3Zv
aWQgV2ViQ2hyb21lQ2xpZW50OjpoYW5kbGVTZWxlY3Rpb25TZXJ2aWNlQ2xpY2soV2ViQ29yZTo6
RnJhbWVTZWxlY3Rpb24mIHNlbGVjdGlvbiwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHRlbGVwaG9u
ZU51bWJlcnMsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb2ludCkKK3sKKyAgICBbbV93ZWJW
aWV3IF9zZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxlcl0tPmhhbmRsZVNlbGVjdGlvblNlcnZpY2VD
bGljayhzZWxlY3Rpb24sIHRlbGVwaG9uZU51bWJlcnMsIHBvaW50KTsKK30KKworYm9vbCBXZWJD
aHJvbWVDbGllbnQ6Omhhc1JlbGV2YW50U2VsZWN0aW9uU2VydmljZXMoYm9vbCBpc1RleHRPbmx5
KSBjb25zdAoreworICAgIHJldHVybiBbbV93ZWJWaWV3IF9zZWxlY3Rpb25TZXJ2aWNlQ29udHJv
bGxlcl0tPmhhc1JlbGV2YW50U2VsZWN0aW9uU2VydmljZXMoaXNUZXh0T25seSk7Cit9CisKKyNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ29u
dGV4dE1lbnVDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNv
bnRleHRNZW51Q2xpZW50LmgKaW5kZXggNWE3YjIyZC4uM2M1NTQ4YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5o
CkBAIC0yNiw2ICsyNiw3IEBACiAgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKKyNpbXBvcnQgIldlYlNoYXJp
bmdTZXJ2aWNlUGlja2VyQ29udHJvbGxlci5oIgogI2ltcG9ydCA8V2ViQ29yZS9Db250ZXh0TWVu
dUNsaWVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9JbnRSZWN0Lmg+CiAKQEAgLTM2LDEwICszNywx
MCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBOb2RlOwogfQogCi1jbGFzcyBXZWJDb250
ZXh0TWVudUNsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpDb250ZXh0TWVudUNsaWVudCB7CitjbGFz
cyBXZWJDb250ZXh0TWVudUNsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpDb250ZXh0TWVudUNsaWVu
dCwgcHVibGljIFdlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ2xpZW50IHsKIHB1YmxpYzoKICAgICBX
ZWJDb250ZXh0TWVudUNsaWVudChXZWJWaWV3ICp3ZWJWaWV3KTsKLSAgICB+V2ViQ29udGV4dE1l
bnVDbGllbnQoKTsKKyAgICB2aXJ0dWFsIH5XZWJDb250ZXh0TWVudUNsaWVudCgpOwogCiAgICAg
dmlydHVhbCB2b2lkIGNvbnRleHRNZW51RGVzdHJveWVkKCkgb3ZlcnJpZGU7CiAgICAgCkBAIC01
NSwxMSArNTYsMTMgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZWFyY2hXaXRoU3BvdGxp
Z2h0KCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNob3dDb250ZXh0TWVudSgpIG92ZXJy
aWRlOwogCi0gICAgTlNSZWN0IHNjcmVlblJlY3RGb3JIaXRUZXN0Tm9kZSgpIGNvbnN0OwotCiAj
aWYgRU5BQkxFKFNFUlZJQ0VfQ09OVFJPTFMpCi0gICAgdm9pZCBjbGVhclNoYXJpbmdTZXJ2aWNl
UGlja2VyQ29udHJvbGxlcigpOwotICAgIE5TSW1hZ2UgKnJlbmRlcmVkSW1hZ2VGb3JDb250cm9s
bGVkSW1hZ2UoKSBjb25zdDsKKyAgICAvLyBXZWJTaGFyaW5nU2VydmljZVBpY2tlckNsaWVudAor
ICAgIHZpcnR1YWwgdm9pZCBzaGFyaW5nU2VydmljZVBpY2tlcldpbGxCZURlc3Ryb3llZChXZWJT
aGFyaW5nU2VydmljZVBpY2tlckNvbnRyb2xsZXIgKikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBX
ZWJDb3JlOjpQYWdlKiBwYWdlRm9yU2hhcmluZ1NlcnZpY2VQaWNrZXIoV2ViU2hhcmluZ1NlcnZp
Y2VQaWNrZXJDb250cm9sbGVyICopIG92ZXJyaWRlOworICAgIHZpcnR1YWwgTlNXaW5kb3cgKndp
bmRvd0ZvclNoYXJpbmdTZXJ2aWNlUGlja2VyKFdlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ29udHJv
bGxlciAqKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OkZsb2F0UmVjdCBzY3JlZW5S
ZWN0Rm9yQ3VycmVudFNoYXJpbmdTZXJ2aWNlUGlja2VySXRlbShXZWJTaGFyaW5nU2VydmljZVBp
Y2tlckNvbnRyb2xsZXIgKikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBOU0ltYWdlICppbWFnZUZv
ckN1cnJlbnRTaGFyaW5nU2VydmljZVBpY2tlckl0ZW0oV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJD
b250cm9sbGVyICopIG92ZXJyaWRlOwogI2VuZGlmCiAKICAgICBXZWJWaWV3ICp3ZWJWaWV3KCkg
eyByZXR1cm4gbV93ZWJWaWV3OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50Lm1tCmluZGV4IDk0Yjk2OGQuLjc0NWRi
ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRl
eHRNZW51Q2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YkNvbnRleHRNZW51Q2xpZW50Lm1tCkBAIC0zODcsNyArMzg3LDIzIEBAIGJvb2wgV2ViQ29udGV4
dE1lbnVDbGllbnQ6OmNsaWVudEZsb2F0UmVjdEZvck5vZGUoTm9kZSYgbm9kZSwgRmxvYXRSZWN0
JiByZWN0KSBjCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLU5TUmVjdCBXZWJDb250ZXh0TWVudUNs
aWVudDo6c2NyZWVuUmVjdEZvckhpdFRlc3ROb2RlKCkgY29uc3QKKyNpZiBFTkFCTEUoU0VSVklD
RV9DT05UUk9MUykKK3ZvaWQgV2ViQ29udGV4dE1lbnVDbGllbnQ6OnNoYXJpbmdTZXJ2aWNlUGlj
a2VyV2lsbEJlRGVzdHJveWVkKFdlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ29udHJvbGxlciAqKQor
eworICAgIG1fc2hhcmluZ1NlcnZpY2VQaWNrZXJDb250cm9sbGVyID0gbmlsOworfQorCitXZWJD
b3JlOjpQYWdlKiBXZWJDb250ZXh0TWVudUNsaWVudDo6cGFnZUZvclNoYXJpbmdTZXJ2aWNlUGlj
a2VyKFdlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ29udHJvbGxlciAqKQoreworICAgIHJldHVybiBb
bV93ZWJWaWV3IHBhZ2VdOworfQorCitOU1dpbmRvdyAqV2ViQ29udGV4dE1lbnVDbGllbnQ6Ondp
bmRvd0ZvclNoYXJpbmdTZXJ2aWNlUGlja2VyKFdlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ29udHJv
bGxlciAqKQoreworICAgIHJldHVybiBbbV93ZWJWaWV3IHdpbmRvd107Cit9CisKK1dlYkNvcmU6
OkZsb2F0UmVjdCBXZWJDb250ZXh0TWVudUNsaWVudDo6c2NyZWVuUmVjdEZvckN1cnJlbnRTaGFy
aW5nU2VydmljZVBpY2tlckl0ZW0oV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDb250cm9sbGVyICop
CiB7CiAgICAgUGFnZSogcGFnZSA9IFttX3dlYlZpZXcgcGFnZV07CiAgICAgaWYgKCFwYWdlKQpA
QCAtNDE1LDggKzQzMSw3IEBAIE5TUmVjdCBXZWJDb250ZXh0TWVudUNsaWVudDo6c2NyZWVuUmVj
dEZvckhpdFRlc3ROb2RlKCkgY29uc3QKICAgICByZXR1cm4gZnJhbWVWaWV3LT5jb250ZW50c1Rv
U2NyZWVuKGludFJlY3QpOwogfQogCi0jaWYgRU5BQkxFKFNFUlZJQ0VfQ09OVFJPTFMpCi1OU0lt
YWdlICpXZWJDb250ZXh0TWVudUNsaWVudDo6cmVuZGVyZWRJbWFnZUZvckNvbnRyb2xsZWRJbWFn
ZSgpIGNvbnN0CitOU0ltYWdlICpXZWJDb250ZXh0TWVudUNsaWVudDo6aW1hZ2VGb3JDdXJyZW50
U2hhcmluZ1NlcnZpY2VQaWNrZXJJdGVtKFdlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ29udHJvbGxl
ciAqKQogewogICAgIFBhZ2UqIHBhZ2UgPSBbbV93ZWJWaWV3IHBhZ2VdOwogICAgIGlmICghcGFn
ZSkKQEAgLTQ1OSw3ICs0NzQsNiBAQCBOU0ltYWdlICpXZWJDb250ZXh0TWVudUNsaWVudDo6cmVu
ZGVyZWRJbWFnZUZvckNvbnRyb2xsZWRJbWFnZSgpIGNvbnN0CiB9CiAjZW5kaWYKIAotCiBOU01l
bnUgKldlYkNvbnRleHRNZW51Q2xpZW50Ojpjb250ZXh0TWVudUZvckV2ZW50KE5TRXZlbnQgKmV2
ZW50LCBOU1ZpZXcgKnZpZXcsIGJvb2wmIGlzU2VydmljZXNNZW51KQogewogICAgIGlzU2Vydmlj
ZXNNZW51ID0gZmFsc2U7CkBAIC00NzIsMTIgKzQ4NiwxMCBAQCBOU01lbnUgKldlYkNvbnRleHRN
ZW51Q2xpZW50Ojpjb250ZXh0TWVudUZvckV2ZW50KE5TRXZlbnQgKmV2ZW50LCBOU1ZpZXcgKnZp
ZXcsCiAgICAgaWYgKEltYWdlKiBpbWFnZSA9IHBhZ2UtPmNvbnRleHRNZW51Q29udHJvbGxlcigp
LmNvbnRleHQoKS5jb250cm9sbGVkSW1hZ2UoKSkgewogICAgICAgICBBU1NFUlQocGFnZS0+Y29u
dGV4dE1lbnVDb250cm9sbGVyKCkuY29udGV4dCgpLmhpdFRlc3RSZXN1bHQoKS5pbm5lck5vZGUo
KSk7CiAKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YSA9IGltYWdlLT5kYXRhKCk7
Ci0gICAgICAgIEFTU0VSVChkYXRhKTsKLSAgICAgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gY2ZE
YXRhID0gZGF0YS0+Y3JlYXRlQ0ZEYXRhKCk7CisgICAgICAgIFJldGFpblB0cjxOU0l0ZW1Qcm92
aWRlcj4gaXRlbVByb3ZpZGVyID0gYWRvcHROUyhbW05TSXRlbVByb3ZpZGVyIGFsbG9jXSBpbml0
V2l0aEl0ZW06aW1hZ2UtPmdldE5TSW1hZ2UoKSB0eXBlSWRlbnRpZmllcjpAInB1YmxpYy5pbWFn
ZSJdKTsKIAogICAgICAgICBib29sIGlzQ29udGVudEVkaXRhYmxlID0gcGFnZS0+Y29udGV4dE1l
bnVDb250cm9sbGVyKCkuY29udGV4dCgpLmhpdFRlc3RSZXN1bHQoKS5pbm5lck5vZGUoKS0+aXND
b250ZW50RWRpdGFibGUoKTsKLSAgICAgICAgbV9zaGFyaW5nU2VydmljZVBpY2tlckNvbnRyb2xs
ZXIgPSBhZG9wdE5TKFtbV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDb250cm9sbGVyIGFsbG9jXSBp
bml0V2l0aERhdGE6KE5TRGF0YSAqKWNmRGF0YS5nZXQoKSBpbmNsdWRlRWRpdG9yU2VydmljZXM6
aXNDb250ZW50RWRpdGFibGUgbWVudUNsaWVudDp0aGlzXSk7CisgICAgICAgIG1fc2hhcmluZ1Nl
cnZpY2VQaWNrZXJDb250cm9sbGVyID0gYWRvcHROUyhbW1dlYlNoYXJpbmdTZXJ2aWNlUGlja2Vy
Q29udHJvbGxlciBhbGxvY10gaW5pdFdpdGhJdGVtczpAWyBpdGVtUHJvdmlkZXIuZ2V0KCkgXSBp
bmNsdWRlRWRpdG9yU2VydmljZXM6aXNDb250ZW50RWRpdGFibGUgY2xpZW50OnRoaXMgc3R5bGU6
TlNTaGFyaW5nU2VydmljZVBpY2tlclN0eWxlUm9sbG92ZXJdKTsKIAogICAgICAgICBpc1NlcnZp
Y2VzTWVudSA9IHRydWU7CiAgICAgICAgIHJldHVybiBbbV9zaGFyaW5nU2VydmljZVBpY2tlckNv
bnRyb2xsZXIgbWVudV07CkBAIC01MTMsMTEgKzUyNSw0IEBAIHZvaWQgV2ViQ29udGV4dE1lbnVD
bGllbnQ6OnNob3dDb250ZXh0TWVudSgpCiAgICAgfQogfQogCi0jaWYgRU5BQkxFKFNFUlZJQ0Vf
Q09OVFJPTFMpCi12b2lkIFdlYkNvbnRleHRNZW51Q2xpZW50OjpjbGVhclNoYXJpbmdTZXJ2aWNl
UGlja2VyQ29udHJvbGxlcigpCi17Ci0gICAgbV9zaGFyaW5nU2VydmljZVBpY2tlckNvbnRyb2xs
ZXIgPSBuaWw7Ci19Ci0jZW5kaWYKLQogI2VuZGlmIC8vICFQTEFURk9STShJT1MpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJTZWxlY3Rpb25TZXJ2aWNl
Q29udHJvbGxlci5oIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViU2VsZWN0
aW9uU2VydmljZUNvbnRyb2xsZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li5kYWQ5M2VkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViU2VsZWN0aW9uU2VydmljZUNvbnRyb2xsZXIuaApAQCAtMCwwICsxLDcxIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAxMCBOb2tpYSBDb3Jw
b3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
IDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFt
ZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICog
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViU2VsZWN0aW9uU2VydmljZUNvbnRy
b2xsZXJfaAorI2RlZmluZSBXZWJTZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxlcl9oCisKKyNpZiBF
TkFCTEUoU0VSVklDRV9DT05UUk9MUykKKworI2ltcG9ydCAiV2ViU2hhcmluZ1NlcnZpY2VQaWNr
ZXJDb250cm9sbGVyLmgiCisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisjaW1wb3J0IDx3dGYv
VmVjdG9yLmg+CisjaW1wb3J0IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworT0JKQ19DTEFTUyBO
U0ltYWdlOworT0JKQ19DTEFTUyBOU1dpbmRvdzsKK09CSkNfQ0xBU1MgV2ViVmlldzsKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgRnJhbWVTZWxlY3Rpb247CitjbGFzcyBJbnRQb2ludDsK
K30KKworY2xhc3MgV2ViU2VsZWN0aW9uU2VydmljZUNvbnRyb2xsZXIgOiBwdWJsaWMgV2ViU2hh
cmluZ1NlcnZpY2VQaWNrZXJDbGllbnQgeworcHVibGljOgorICAgIFdlYlNlbGVjdGlvblNlcnZp
Y2VDb250cm9sbGVyKFdlYlZpZXcqKTsKKworICAgIHZvaWQgaGFuZGxlU2VsZWN0aW9uU2Vydmlj
ZUNsaWNrKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uJiwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHRl
bGVwaG9uZU51bWJlcnMsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jik7CisgICAgYm9vbCBoYXNS
ZWxldmFudFNlbGVjdGlvblNlcnZpY2VzKGJvb2wgaXNUZXh0T25seSkgY29uc3Q7CisKKyAgICAv
LyBXZWJTaGFyaW5nU2VydmljZVBpY2tlckNsaWVudAorICAgIHZpcnR1YWwgdm9pZCBzaGFyaW5n
U2VydmljZVBpY2tlcldpbGxCZURlc3Ryb3llZChXZWJTaGFyaW5nU2VydmljZVBpY2tlckNvbnRy
b2xsZXIgKikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBXZWJDb3JlOjpQYWdlKiBwYWdlRm9yU2hh
cmluZ1NlcnZpY2VQaWNrZXIoV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDb250cm9sbGVyICopIG92
ZXJyaWRlOworICAgIHZpcnR1YWwgTlNXaW5kb3cgKndpbmRvd0ZvclNoYXJpbmdTZXJ2aWNlUGlj
a2VyKFdlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ29udHJvbGxlciAqKSBvdmVycmlkZTsKKyAgICB2
aXJ0dWFsIFdlYkNvcmU6OkZsb2F0UmVjdCBzY3JlZW5SZWN0Rm9yQ3VycmVudFNoYXJpbmdTZXJ2
aWNlUGlja2VySXRlbShXZWJTaGFyaW5nU2VydmljZVBpY2tlckNvbnRyb2xsZXIgKikgb3ZlcnJp
ZGU7CisgICAgdmlydHVhbCBOU0ltYWdlICppbWFnZUZvckN1cnJlbnRTaGFyaW5nU2VydmljZVBp
Y2tlckl0ZW0oV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDb250cm9sbGVyICopIG92ZXJyaWRlOwor
Citwcml2YXRlOgorICAgIFdlYlZpZXcgKm1fd2ViVmlldzsKKworICAgIFJldGFpblB0cjxXZWJT
aGFyaW5nU2VydmljZVBpY2tlckNvbnRyb2xsZXI+IG1fc2hhcmluZ1NlcnZpY2VQaWNrZXJDb250
cm9sbGVyOworfTsKKworI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX0NPTlRST0xTKQorCisjZW5k
aWYgLy8gV2ViU2VsZWN0aW9uU2VydmljZUNvbnRyb2xsZXJfaApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViU2VsZWN0aW9uU2VydmljZUNvbnRyb2xsZXIu
bW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJTZWxlY3Rpb25TZXJ2aWNl
Q29udHJvbGxlci5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MTM4MmNi
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
U2VsZWN0aW9uU2VydmljZUNvbnRyb2xsZXIubW0KQEAgLTAsMCArMSwxMzcgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDEwIE5va2lhIENvcnBv
cmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICog
My4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1l
cyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiV2ViU2VsZWN0aW9uU2VydmljZUNvbnRy
b2xsZXIuaCIKKworI2lmIEVOQUJMRShTRVJWSUNFX0NPTlRST0xTKQorCisjaW1wb3J0ICJXZWJW
aWV3SW50ZXJuYWwuaCIKKyNpbXBvcnQgPFdlYkNvcmUvRnJhbWVTZWxlY3Rpb24uaD4KKyNpbXBv
cnQgPFdlYkNvcmUvSFRNTENvbnZlcnRlci5oPgorI2ltcG9ydCA8V2ViQ29yZS9SYW5nZS5oPgor
I2ltcG9ydCA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OworCisjaWYgX19oYXNfaW5jbHVkZSg8QXBwS2l0L05TU2hhcmluZ1NlcnZpY2VfUHJpdmF0ZS5o
PikKKyNpbXBvcnQgPEFwcEtpdC9OU1NoYXJpbmdTZXJ2aWNlX1ByaXZhdGUuaD4KKyNlbHNlCit0
eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBOU1NoYXJpbmdTZXJ2aWNlUGlja2VyU3R5bGUpIHsK
KyAgICBOU1NoYXJpbmdTZXJ2aWNlUGlja2VyU3R5bGVNZW51ID0gMCwKKyAgICBOU1NoYXJpbmdT
ZXJ2aWNlUGlja2VyU3R5bGVSb2xsb3ZlciA9IDEsCisgICAgTlNTaGFyaW5nU2VydmljZVBpY2tl
clN0eWxlVGV4dFNlbGVjdGlvbiA9IDIsCisgICAgTlNTaGFyaW5nU2VydmljZVBpY2tlclN0eWxl
RGF0YURldGVjdG9yID0gMworfSBOU19FTlVNX0FWQUlMQUJMRV9NQUMoMTBfMTApOworI2VuZGlm
CisKK1dlYlNlbGVjdGlvblNlcnZpY2VDb250cm9sbGVyOjpXZWJTZWxlY3Rpb25TZXJ2aWNlQ29u
dHJvbGxlcihXZWJWaWV3ICp3ZWJWaWV3KSAKKyAgICA6IG1fd2ViVmlldyh3ZWJWaWV3KQorewor
fQorCit2b2lkIFdlYlNlbGVjdGlvblNlcnZpY2VDb250cm9sbGVyOjpoYW5kbGVTZWxlY3Rpb25T
ZXJ2aWNlQ2xpY2soV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb24mIHNlbGVjdGlvbiwgY29uc3QgVmVj
dG9yPFN0cmluZz4mIHRlbGVwaG9uZU51bWJlcnMsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBw
b2ludCkKK3sKKyAgICBQYWdlKiBwYWdlID0gW21fd2ViVmlldyBwYWdlXTsKKyAgICBpZiAoIXBh
Z2UpCisgICAgICAgIHJldHVybjsKKworICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBzZWxlY3Rp
b24uc2VsZWN0aW9uKCkuZmlyc3RSYW5nZSgpOworICAgIGlmICghcmFuZ2UpCisgICAgICAgIHJl
dHVybjsKKworICAgIFJldGFpblB0cjxOU0F0dHJpYnV0ZWRTdHJpbmc+IGF0dHJpYnV0ZWRTZWxl
Y3Rpb24gPSBhdHRyaWJ1dGVkU3RyaW5nRnJvbVJhbmdlKCpyYW5nZSk7CisgICAgaWYgKCFhdHRy
aWJ1dGVkU2VsZWN0aW9uKQorICAgICAgICByZXR1cm47CisKKyAgICBOU0FycmF5ICppdGVtcyA9
IEBbIGF0dHJpYnV0ZWRTZWxlY3Rpb24uZ2V0KCkgXTsKKworICAgIGJvb2wgaXNFZGl0YWJsZSA9
IHNlbGVjdGlvbi5zZWxlY3Rpb24oKS5pc0NvbnRlbnRFZGl0YWJsZSgpOworICAgIG1fc2hhcmlu
Z1NlcnZpY2VQaWNrZXJDb250cm9sbGVyID0gYWRvcHROUyhbW1dlYlNoYXJpbmdTZXJ2aWNlUGlj
a2VyQ29udHJvbGxlciBhbGxvY10gaW5pdFdpdGhJdGVtczppdGVtcyBpbmNsdWRlRWRpdG9yU2Vy
dmljZXM6aXNFZGl0YWJsZSBjbGllbnQ6dGhpcyBzdHlsZTpOU1NoYXJpbmdTZXJ2aWNlUGlja2Vy
U3R5bGVUZXh0U2VsZWN0aW9uXSk7CisKKyAgICBSZXRhaW5QdHI8TlNNZW51PiBtZW51ID0gYWRv
cHROUyhbW21fc2hhcmluZ1NlcnZpY2VQaWNrZXJDb250cm9sbGVyIG1lbnVdIGNvcHldKTsKKwor
ICAgIFttZW51IHNldFNob3dzU3RhdGVDb2x1bW46WUVTXTsKKworICAgIFttZW51IHBvcFVwTWVu
dVBvc2l0aW9uaW5nSXRlbTpuaWwgYXRMb2NhdGlvbjpbbV93ZWJWaWV3IGNvbnZlcnRQb2ludDpw
b2ludCB0b1ZpZXc6bmlsXSBpblZpZXc6bV93ZWJWaWV3XTsKK30KKworc3RhdGljIGJvb2wgaGFz
Q29tcGF0aWJsZVNlcnZpY2VzRm9ySXRlbXMoTlNBcnJheSAqaXRlbXMpCit7CisgICAgcmV0dXJu
IFtOU1NoYXJpbmdTZXJ2aWNlIHNoYXJpbmdTZXJ2aWNlc0Zvckl0ZW1zOml0ZW1zIG1hc2s6TlNT
aGFyaW5nU2VydmljZU1hc2tWaWV3ZXIgfCBOU1NoYXJpbmdTZXJ2aWNlTWFza0VkaXRvcl0uY291
bnQ7Cit9CisKK2Jvb2wgV2ViU2VsZWN0aW9uU2VydmljZUNvbnRyb2xsZXI6Omhhc1JlbGV2YW50
U2VsZWN0aW9uU2VydmljZXMoYm9vbCBpc1RleHRPbmx5KSBjb25zdAoreworICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxOU0F0dHJpYnV0ZWRTdHJpbmcgKj4gYXR0cmlidXRlZFN0cmluZyhbW05T
QXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhTdHJpbmc6QCJhIl0pOworCisgICAgYm9v
bCBoYXNTZWxlY3Rpb25TZXJ2aWNlcyA9IGhhc0NvbXBhdGlibGVTZXJ2aWNlc0Zvckl0ZW1zKEBb
IGF0dHJpYnV0ZWRTdHJpbmcgXSk7CisgICAgaWYgKGlzVGV4dE9ubHkgJiYgaGFzU2VsZWN0aW9u
U2VydmljZXMpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgc3RhdGljIE5TQXR0cmlidXRl
ZFN0cmluZyAqYXR0cmlidXRlZFN0cmluZ1dpdGhSaWNoQ29udGVudDsKKyAgICBpZiAoIWF0dHJp
YnV0ZWRTdHJpbmdXaXRoUmljaENvbnRlbnQpIHsKKyAgICAgICAgTlNUZXh0QXR0YWNobWVudCAq
YXR0YWNobWVudCA9IFtbTlNUZXh0QXR0YWNobWVudCBhbGxvY10gaW5pdF07CisgICAgICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxOU0ltYWdlICo+IGltYWdlKFtbTlNJbWFnZSBhbGxvY10gaW5p
dF0pOworICAgICAgICBOU1RleHRBdHRhY2htZW50Q2VsbCAqY2VsbCA9IFtbTlNUZXh0QXR0YWNo
bWVudENlbGwgYWxsb2NdIGluaXRJbWFnZUNlbGw6aW1hZ2UuZ2V0KCldOworICAgICAgICBbYXR0
YWNobWVudCBzZXRBdHRhY2htZW50Q2VsbDpjZWxsXTsKKyAgICAgICAgTlNNdXRhYmxlQXR0cmli
dXRlZFN0cmluZyAqcmljaFN0cmluZyA9IChOU011dGFibGVBdHRyaWJ1dGVkU3RyaW5nICopW05T
TXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcgYXR0cmlidXRlZFN0cmluZ1dpdGhBdHRhY2htZW50OmF0
dGFjaG1lbnRdOworICAgICAgICBbcmljaFN0cmluZyBhcHBlbmRBdHRyaWJ1dGVkU3RyaW5nOmF0
dHJpYnV0ZWRTdHJpbmddOworICAgICAgICBhdHRyaWJ1dGVkU3RyaW5nV2l0aFJpY2hDb250ZW50
ID0gW3JpY2hTdHJpbmcgcmV0YWluXTsKKyAgICB9CisKKyAgICBib29sIGhhc1JpY2hDb250ZW50
U2VydmljZXMgPSBoYXNDb21wYXRpYmxlU2VydmljZXNGb3JJdGVtcyhAWyBhdHRyaWJ1dGVkU3Ry
aW5nV2l0aFJpY2hDb250ZW50IF0pOworICAgIHJldHVybiBoYXNSaWNoQ29udGVudFNlcnZpY2Vz
OworfQorCit2b2lkIFdlYlNlbGVjdGlvblNlcnZpY2VDb250cm9sbGVyOjpzaGFyaW5nU2Vydmlj
ZVBpY2tlcldpbGxCZURlc3Ryb3llZChXZWJTaGFyaW5nU2VydmljZVBpY2tlckNvbnRyb2xsZXIg
KikKK3sKKyAgICBtX3NoYXJpbmdTZXJ2aWNlUGlja2VyQ29udHJvbGxlciA9IG5pbDsKK30KKwor
V2ViQ29yZTo6UGFnZSogV2ViU2VsZWN0aW9uU2VydmljZUNvbnRyb2xsZXI6OnBhZ2VGb3JTaGFy
aW5nU2VydmljZVBpY2tlcihXZWJTaGFyaW5nU2VydmljZVBpY2tlckNvbnRyb2xsZXIgKikKK3sK
KyAgICByZXR1cm4gW21fd2ViVmlldyBwYWdlXTsKK30KKworTlNXaW5kb3cgKldlYlNlbGVjdGlv
blNlcnZpY2VDb250cm9sbGVyOjp3aW5kb3dGb3JTaGFyaW5nU2VydmljZVBpY2tlcihXZWJTaGFy
aW5nU2VydmljZVBpY2tlckNvbnRyb2xsZXIgKikKK3sKKyAgICByZXR1cm4gW21fd2ViVmlldyB3
aW5kb3ddOworfQorCitGbG9hdFJlY3QgV2ViU2VsZWN0aW9uU2VydmljZUNvbnRyb2xsZXI6OnNj
cmVlblJlY3RGb3JDdXJyZW50U2hhcmluZ1NlcnZpY2VQaWNrZXJJdGVtKFdlYlNoYXJpbmdTZXJ2
aWNlUGlja2VyQ29udHJvbGxlciAqKQoreworICAgIHJldHVybiBGbG9hdFJlY3QoKTsKK30KKwor
TlNJbWFnZSAqV2ViU2VsZWN0aW9uU2VydmljZUNvbnRyb2xsZXI6OmltYWdlRm9yQ3VycmVudFNo
YXJpbmdTZXJ2aWNlUGlja2VySXRlbShXZWJTaGFyaW5nU2VydmljZVBpY2tlckNvbnRyb2xsZXIg
KikKK3sKKyAgICByZXR1cm4gbmlsOworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcv
V2ViVmlldy5tbQppbmRleCAxYzIyMjk5Li42MjYyZTNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmll
dy9XZWJWaWV3Lm1tCkBAIC05Nyw2ICs5Nyw3IEBACiAjaW1wb3J0ICJXZWJQcm9ncmVzc1RyYWNr
ZXJDbGllbnQuaCIKICNpbXBvcnQgIldlYlNjcmlwdERlYnVnRGVsZWdhdGUuaCIKICNpbXBvcnQg
IldlYlNjcmlwdFdvcmxkSW50ZXJuYWwuaCIKKyNpbXBvcnQgIldlYlNlbGVjdGlvblNlcnZpY2VD
b250cm9sbGVyLmgiCiAjaW1wb3J0ICJXZWJTdG9yYWdlTWFuYWdlckludGVybmFsLmgiCiAjaW1w
b3J0ICJXZWJTeXN0ZW1JbnRlcmZhY2UuaCIKICNpbXBvcnQgIldlYlRleHRDb21wbGV0aW9uQ29u
dHJvbGxlci5oIgpAQCAtODQ5MSw2ICs4NDkyLDE1IEBAIHN0YXRpYyB2b2lkIGdsaWJDb250ZXh0
SXRlcmF0aW9uQ2FsbGJhY2soQ0ZSdW5Mb29wT2JzZXJ2ZXJSZWYsIENGUnVuTG9vcEFjdGl2aXR5
CiB9CiAjZW5kaWYKIAorI2lmIEVOQUJMRShTRVJWSUNFX0NPTlRST0xTKQorLSAoV2ViU2VsZWN0
aW9uU2VydmljZUNvbnRyb2xsZXIqKV9zZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxlcgoreworICAg
IGlmICghX3ByaXZhdGUtPl9zZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxlcikKKyAgICAgICAgX3By
aXZhdGUtPl9zZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxlciA9IHN0ZDo6bWFrZV91bmlxdWU8V2Vi
U2VsZWN0aW9uU2VydmljZUNvbnRyb2xsZXI+KHNlbGYpOworICAgIHJldHVybiBfcHJpdmF0ZS0+
X3NlbGVjdGlvblNlcnZpY2VDb250cm9sbGVyLmdldCgpOworfQorI2VuZGlmCisKIC0gKE5TUG9p
bnQpX2NvbnZlcnRQb2ludEZyb21Sb290VmlldzooTlNQb2ludClwb2ludAogewogICAgIHJldHVy
biBOU01ha2VQb2ludChwb2ludC54LCBbc2VsZiBib3VuZHNdLnNpemUuaGVpZ2h0IC0gcG9pbnQu
eSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdEYXRhLmgg
Yi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdEYXRhLmgKaW5kZXggYTBiZTY4MS4u
ZTMyY2QyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3RGF0
YS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld0RhdGEuaApAQCAtODIs
NiArODIsNyBAQCBleHRlcm4gaW50IHBsdWdpbkRhdGFiYXNlQ2xpZW50Q291bnQ7CiAKIGNsYXNz
IExheWVyRmx1c2hDb250cm9sbGVyOwogY2xhc3MgV2ViVmlld0dyb3VwOworY2xhc3MgV2ViU2Vs
ZWN0aW9uU2VydmljZUNvbnRyb2xsZXI7CiAKIGNsYXNzIFdlYlZpZXdMYXllckZsdXNoU2NoZWR1
bGVyIDogcHVibGljIFdlYkNvcmU6OkxheWVyRmx1c2hTY2hlZHVsZXIgewogcHVibGljOgpAQCAt
MjcwLDYgKzI3MSwxMCBAQCBwcml2YXRlOgogICAgIGlkPFdlYlVzZXJNZWRpYUNsaWVudD4gbV91
c2VyTWVkaWFDbGllbnQ7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShTRVJWSUNFX0NPTlRST0xTKQor
ICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJTZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxlcj4gX3NlbGVj
dGlvblNlcnZpY2VDb250cm9sbGVyOworI2VuZGlmCisKICAgICBSZWZQdHI8V2ViQ29yZTo6SGlz
dG9yeUl0ZW0+IF9nbG9iYWxIaXN0b3J5SXRlbTsKIAogICAgIEJPT0wgaW50ZXJhY3RpdmVGb3Jt
VmFsaWRhdGlvbkVuYWJsZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3
L1dlYlZpZXdEYXRhLm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3RGF0YS5t
bQppbmRleCBlMDYzNmE1Li5iN2NiYWUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9X
ZWJWaWV3L1dlYlZpZXdEYXRhLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2Vi
Vmlld0RhdGEubW0KQEAgLTMxLDYgKzMxLDcgQEAKIAogI2ltcG9ydCAiV2ViS2l0TG9nZ2luZy5o
IgogI2ltcG9ydCAiV2ViUHJlZmVyZW5jZUtleXNQcml2YXRlLmgiCisjaW1wb3J0ICJXZWJTZWxl
Y3Rpb25TZXJ2aWNlQ29udHJvbGxlci5oIgogI2ltcG9ydCAiV2ViVmlld0dyb3VwLmgiCiAjaW1w
b3J0IDxXZWJDb3JlL0FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9XZWJDb3JlT2JqQ0V4dHJhcy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMv
V2ViVmlldy9XZWJWaWV3SW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2Vi
Vmlld0ludGVybmFsLmgKaW5kZXggOTgzOTc0Ni4uYzU1YjJhYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3SW50ZXJuYWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L21hYy9XZWJWaWV3L1dlYlZpZXdJbnRlcm5hbC5oCkBAIC01Niw2ICs1Niw4IEBAIGNsYXNzIFJl
bmRlckJveDsKIGNsYXNzIEhUTUxWaWRlb0VsZW1lbnQ7CiBzdHJ1Y3QgRGljdGF0aW9uQWx0ZXJu
YXRpdmU7CiB9CisKK2NsYXNzIFdlYlNlbGVjdGlvblNlcnZpY2VDb250cm9sbGVyOwogI2VuZGlm
CiAKIEBjbGFzcyBXZWJCYXNlUGx1Z2luUGFja2FnZTsKQEAgLTExOSw2ICsxMjEsMTAgQEAgT0JK
Q19DTEFTUyBOU1RleHRBbHRlcm5hdGl2ZXM7CiAtIChWZWN0b3I8U3RyaW5nPilfZGljdGF0aW9u
QWx0ZXJuYXRpdmVzOih1aW50NjRfdClkaWN0YXRpb25Db250ZXh0OwogI2VuZGlmCiAKKyNpZiBF
TkFCTEUoU0VSVklDRV9DT05UUk9MUykKKy0gKFdlYlNlbGVjdGlvblNlcnZpY2VDb250cm9sbGVy
Kilfc2VsZWN0aW9uU2VydmljZUNvbnRyb2xsZXI7CisjZW5kaWYKKwogQGVuZAogCiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBhOTlhYjA4Li43ODljNGUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMjEg
QEAKIDIwMTQtMTAtMDkgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAK
KyAgICAgICAgSW1wbGVtZW50IHNlbGVjdGlvbiBzZXJ2aWNlcyBtZW51IGZvciBMZWdhY3kgV2Vi
S2l0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzc1
ODIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzE4NjA0MjQxPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVUlQcm9jZXNzL21hYy9XZWJDb250ZXh0
TWVudVByb3h5TWFjLm1tOgorICAgICAgICAoLVtXS1NoYXJpbmdTZXJ2aWNlUGlja2VyRGVsZWdh
dGUgc2hhcmluZ1NlcnZpY2U6ZGlkU2hhcmVJdGVtczpdKToKKyAgICAgICAgQWxsb3cgZWRpdG9y
IHNlcnZpY2VzIGluIGVkaXRhYmxlLWJ1dC1ub3QtcmljaC10ZXh0IGFyZWFzLCBqdXN0IGxpa2Ug
aW4gV2ViS2l0MS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1h
Yy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6aGFuZGxlU2VsZWN0aW9uU2VydmljZUNs
aWNrKToKKyAgICAgICAgQWRkIGEgbm90ZSB0aGF0IHdlIHNob3VsZCB0cmFuc2l0aW9uIHRvIHVz
aW5nIHJlcGxhY2VTZWxlY3Rpb25XaXRoQXR0cmlidXRlZFN0cmluZy4KKworMjAxNC0xMC0wOSAg
VGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KKwogICAgICAgICBNb3ZlIFNl
cnZpY2VzT3ZlcmxheUNvbnRyb2xsZXIgdG8gV2ViQ29yZQogICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM3NDE2CiAgICAgICAgIDxyZGFyOi8vcHJvYmxl
bS8xODU0NjI4Mz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2Vi
Q29udGV4dE1lbnVQcm94eU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2Vi
Q29udGV4dE1lbnVQcm94eU1hYy5tbQppbmRleCA0ZTFjM2NjLi41OGFkOTkxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYkNvbnRleHRNZW51UHJveHlNYWMubW0K
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJDb250ZXh0TWVudVByb3h5TWFj
Lm1tCkBAIC0yNzUsNiArMjc1LDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKKyAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGFkb3B0IHJlcGxhY2VT
ZWxlY3Rpb25XaXRoQXR0cmlidXRlZFN0cmluZyBpbnN0ZWFkIG9mIGJvdW5jaW5nIHRocm91Z2gg
dGhlIChmYWtlKSBwYXN0ZWJvYXJkLgogICAgIF9tZW51UHJveHktPnBhZ2UoKS5yZXBsYWNlU2Vs
ZWN0aW9uV2l0aFBhc3RlYm9hcmREYXRhKHR5cGVzLCBkYXRhUmVmZXJlbmNlKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFj
Lm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1t
CmluZGV4IGU0YTVmNmQuLmUwYjU1ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KQEAgLTEwMzksNyArMTAzOSw3IEBAIHZv
aWQgV2ViUGFnZTo6aGFuZGxlU2VsZWN0aW9uU2VydmljZUNsaWNrKEZyYW1lU2VsZWN0aW9uJiBz
ZWxlY3Rpb24sIGNvbnN0IFZlY3RvCiAKICAgICBOU0RhdGEgKnNlbGVjdGlvbkRhdGEgPSBbYXR0
cmlidXRlZFNlbGVjdGlvbiBSVEZERnJvbVJhbmdlOk5TTWFrZVJhbmdlKDAsIFthdHRyaWJ1dGVk
U2VsZWN0aW9uIGxlbmd0aF0pIGRvY3VtZW50QXR0cmlidXRlczpuaWxdOwogICAgIElQQzo6RGF0
YVJlZmVyZW5jZSBkYXRhID0gSVBDOjpEYXRhUmVmZXJlbmNlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgdWludDhfdCo+KFtzZWxlY3Rpb25EYXRhIGJ5dGVzXSksIFtzZWxlY3Rpb25EYXRhIGxlbmd0
aF0pOwotICAgIGJvb2wgaXNFZGl0YWJsZSA9IHNlbGVjdGlvbi5zZWxlY3Rpb24oKS5pc0NvbnRl
bnRSaWNobHlFZGl0YWJsZSgpOworICAgIGJvb2wgaXNFZGl0YWJsZSA9IHNlbGVjdGlvbi5zZWxl
Y3Rpb24oKS5pc0NvbnRlbnRFZGl0YWJsZSgpOwogCiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjpTaG93U2VsZWN0aW9uU2VydmljZU1lbnUoZGF0YSwgcGhvbmVOdW1iZXJzLCBpc0Vk
aXRhYmxlLCBwb2ludCkpOwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>239586</attachid>
            <date>2014-10-09 17:58:57 -0700</date>
            <delta_ts>2014-10-15 13:45:53 -0700</delta_ts>
            <desc>patch</desc>
            <filename>services-wk1.diff</filename>
            <type>text/plain</type>
            <size>46748</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA2MGJhZWU0Li42MjI3MjZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMjMg
QEAKIDIwMTQtMTAtMDkgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAK
KyAgICAgICAgSW1wbGVtZW50IHNlbGVjdGlvbiBzZXJ2aWNlcyBtZW51IGZvciBMZWdhY3kgV2Vi
S2l0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzc1
ODIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzE4NjA0MjQxPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZS5leHAuaW46CisgICAgICAg
ICogZWRpdGluZy9FZGl0b3IuaDoKKyAgICAgICAgKiBlZGl0aW5nL2lvcy9FZGl0b3JJT1MubW06
CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnJlcGxhY2VTZWxlY3Rpb25XaXRoQXR0cmlidXRl
ZFN0cmluZyk6CisgICAgICAgICogZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tOgorICAgICAgICAo
V2ViQ29yZTo6RWRpdG9yOjpyZXBsYWNlU2VsZWN0aW9uV2l0aEF0dHJpYnV0ZWRTdHJpbmcpOgor
ICAgICAgICBBZGQgcmVwbGFjZVNlbGVjdGlvbldpdGhBdHRyaWJ1dGVkU3RyaW5nLCB3aGljaCBy
ZXBsYWNlcyB0aGUgc2VsZWN0aW9uCisgICAgICAgIHdpdGggdGhlIGdpdmVuIGF0dHJpYnV0ZWQg
c3RyaW5nIChjb252ZXJ0aW5nIHRvIHBsYWluIHRleHQgaWYgdGhlIGRlc3RpbmF0aW9uCisgICAg
ICAgIGlzIG5vdCByaWNobHkgZWRpdGFibGUpLgorCisyMDE0LTEwLTA5ICBUaW0gSG9ydG9uICA8
dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgorCiAgICAgICAgIE1vdmUgU2VydmljZXNPdmVybGF5
Q29udHJvbGxlciB0byBXZWJDb3JlCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMzc0MTYKICAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzE4NTQ2MjgzPgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4gYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmV4cC5pbgppbmRleCBiY2QxMjc2Li5hOTAwOWYxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4
cC5pbgpAQCAtMTI0Nyw2ICsxMjQ3LDcgQEAgX19aTjdXZWJDb3JlNkVkaXRvcjMzaW5jcmVhc2VT
ZWxlY3Rpb25MaXN0TGV2ZWxPcmRlcmVkRXYKIF9fWk43V2ViQ29yZTZFZGl0b3IzNHNldE1hcmtl
ZFRleHRNYXRjaGVzQXJlSGlnaGxpZ2h0ZWRFYgogX19aTjdXZWJDb3JlNkVkaXRvcjM1aW5jcmVh
c2VTZWxlY3Rpb25MaXN0TGV2ZWxVbm9yZGVyZWRFdgogX19aTjdXZWJDb3JlNkVkaXRvcjM1c2V0
SWdub3JlQ29tcG9zaXRpb25TZWxlY3Rpb25DaGFuZ2VFYgorX19aTjdXZWJDb3JlNkVkaXRvcjM2
cmVwbGFjZVNlbGVjdGlvbldpdGhBdHRyaWJ1dGVkU3RyaW5nRVAxOE5TQXR0cmlidXRlZFN0cmlu
Z05TXzIyTWFpbEJsb2NrcXVvdGVIYW5kbGluZ0UKIF9fWk43V2ViQ29yZTZFZGl0b3IzOGNvbW1h
bmRJc1N1cHBvcnRlZEZyb21NZW51T3JLZXlCaW5kaW5nRVJLTjNXVEY2U3RyaW5nRQogX19aTjdX
ZWJDb3JlNkVkaXRvcjM5aW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9ySW5RdW90ZWRDb250ZW50RXYK
IF9fWk43V2ViQ29yZTZFZGl0b3IzY3V0RXYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvRWRpdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCmluZGV4IGU4
YzkxZDMuLjliMTQ0YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9y
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaApAQCAtNDMyLDcgKzQzMiw3
IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVuZGVyU3R5bGUqIHN0eWxl
Rm9yU2VsZWN0aW9uU3RhcnQoRnJhbWUqICwgTm9kZSAqJm5vZGVUb1JlbW92ZSk7CiAgICAgV0VC
Q09SRV9FWFBPUlQgYm9vbCBpbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3JJblF1b3RlZENvbnRlbnQo
KTsKICAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCBTaW1wbGVGb250RGF0YSogZm9udEZvclNlbGVj
dGlvbihib29sJikgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgTlNEaWN0aW9uYXJ5KiBmb250
QXR0cmlidXRlc0ZvclNlbGVjdGlvblN0YXJ0KCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQg
TlNEaWN0aW9uYXJ5ICpmb250QXR0cmlidXRlc0ZvclNlbGVjdGlvblN0YXJ0KCkgY29uc3Q7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHN0cmluZ1NlbGVjdGlvbkZvclBhc3RlYm9hcmQoKTsK
ICAgICBTdHJpbmcgc3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVib2FyZFdpdGhJbWFnZUFsdFRleHQo
KTsKICNpZiAhUExBVEZPUk0oSU9TKQpAQCAtNDQyLDYgKzQ0Miw3IEBAIHB1YmxpYzoKICAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHJlcGxhY2VOb2RlRnJvbVBhc3RlYm9hcmQoTm9kZSosIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpOwogICAgIFdFQkNPUkVfRVhQT1JUIFBhc3NSZWZQdHI8
U2hhcmVkQnVmZmVyPiBkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lKTsKICNlbmRpZiAvLyAhUExBVEZPUk0oSU9TKQorICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgcmVwbGFjZVNlbGVjdGlvbldpdGhBdHRyaWJ1dGVkU3RyaW5nKE5TQXR0cmlidXRl
ZFN0cmluZyAqLCBNYWlsQmxvY2txdW90ZUhhbmRsaW5nID0gTWFpbEJsb2NrcXVvdGVIYW5kbGlu
Zzo6UmVzcGVjdEJsb2NrcXVvdGUpOwogI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkgfHwg
UExBVEZPUk0oRUZMKSB8fCBQTEFURk9STShHVEspCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL2lvcy9FZGl0b3JJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9F
ZGl0b3JJT1MubW0KaW5kZXggYzVlN2ZlNC4uNjM2OWQzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvaW9zL0VkaXRvcklPUy5tbQpAQCAtNjI3LDQgKzYyNywyMCBAQCBQYXNzUmVmUHRyPERvY3Vt
ZW50RnJhZ21lbnQ+IEVkaXRvcjo6Y3JlYXRlRnJhZ21lbnRGb3JJbWFnZVJlc291cmNlQW5kQWRk
UmVzb3VyYwogICAgIHJldHVybiBmcmFnbWVudC5yZWxlYXNlKCk7CiB9CiAKK3ZvaWQgRWRpdG9y
OjpyZXBsYWNlU2VsZWN0aW9uV2l0aEF0dHJpYnV0ZWRTdHJpbmcoTlNBdHRyaWJ1dGVkU3RyaW5n
ICphdHRyaWJ1dGVkU3RyaW5nLCBNYWlsQmxvY2txdW90ZUhhbmRsaW5nIG1haWxCbG9ja3F1b3Rl
SGFuZGxpbmcpCit7CisgICAgaWYgKG1fZnJhbWUuc2VsZWN0aW9uKCkuaXNOb25lKCkpCisgICAg
ICAgIHJldHVybjsKKworICAgIGlmIChtX2ZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLmlz
Q29udGVudFJpY2hseUVkaXRhYmxlKCkpIHsKKyAgICAgICAgUmVmUHRyPERvY3VtZW50RnJhZ21l
bnQ+IGZyYWdtZW50ID0gY3JlYXRlRnJhZ21lbnRBbmRBZGRSZXNvdXJjZXMoYXR0cmlidXRlZFN0
cmluZyk7CisgICAgICAgIGlmIChmcmFnbWVudCAmJiBzaG91bGRJbnNlcnRGcmFnbWVudChmcmFn
bWVudCwgc2VsZWN0ZWRSYW5nZSgpLCBFZGl0b3JJbnNlcnRBY3Rpb25QYXN0ZWQpKQorICAgICAg
ICAgICAgcGFzdGVBc0ZyYWdtZW50KGZyYWdtZW50LCBmYWxzZSwgZmFsc2UsIG1haWxCbG9ja3F1
b3RlSGFuZGxpbmcpOworICAgIH0gZWxzZSB7CisgICAgICAgIFN0cmluZyB0ZXh0ID0gW2F0dHJp
YnV0ZWRTdHJpbmcgc3RyaW5nXTsKKyAgICAgICAgaWYgKHNob3VsZEluc2VydFRleHQodGV4dCwg
c2VsZWN0ZWRSYW5nZSgpLmdldCgpLCBFZGl0b3JJbnNlcnRBY3Rpb25QYXN0ZWQpKQorICAgICAg
ICAgICAgcGFzdGVBc1BsYWluVGV4dCh0ZXh0LCBmYWxzZSk7CisgICAgfQorfQorCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9F
ZGl0b3JNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0KaW5k
ZXggNjQ1OGJiNy4uOGQ1ZmJkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9t
YWMvRWRpdG9yTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1h
Yy5tbQpAQCAtNjY4LDQgKzY2OCwyMCBAQCBQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IEVk
aXRvcjo6Y3JlYXRlRnJhZ21lbnRBbmRBZGRSZXNvdXJjZXMoTlNBdHRyaWJ1dGVkUwogICAgIHJl
dHVybiBmcmFnbWVudC5yZWxlYXNlKCk7CiB9CiAKK3ZvaWQgRWRpdG9yOjpyZXBsYWNlU2VsZWN0
aW9uV2l0aEF0dHJpYnV0ZWRTdHJpbmcoTlNBdHRyaWJ1dGVkU3RyaW5nICphdHRyaWJ1dGVkU3Ry
aW5nLCBNYWlsQmxvY2txdW90ZUhhbmRsaW5nIG1haWxCbG9ja3F1b3RlSGFuZGxpbmcpCit7Cisg
ICAgaWYgKG1fZnJhbWUuc2VsZWN0aW9uKCkuaXNOb25lKCkpCisgICAgICAgIHJldHVybjsKKwor
ICAgIGlmIChtX2ZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLmlzQ29udGVudFJpY2hseUVk
aXRhYmxlKCkpIHsKKyAgICAgICAgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50ID0g
Y3JlYXRlRnJhZ21lbnRBbmRBZGRSZXNvdXJjZXMoYXR0cmlidXRlZFN0cmluZyk7CisgICAgICAg
IGlmIChmcmFnbWVudCAmJiBzaG91bGRJbnNlcnRGcmFnbWVudChmcmFnbWVudCwgc2VsZWN0ZWRS
YW5nZSgpLCBFZGl0b3JJbnNlcnRBY3Rpb25QYXN0ZWQpKQorICAgICAgICAgICAgcGFzdGVBc0Zy
YWdtZW50KGZyYWdtZW50LCBmYWxzZSwgZmFsc2UsIG1haWxCbG9ja3F1b3RlSGFuZGxpbmcpOwor
ICAgIH0gZWxzZSB7CisgICAgICAgIFN0cmluZyB0ZXh0ID0gW2F0dHJpYnV0ZWRTdHJpbmcgc3Ry
aW5nXTsKKyAgICAgICAgaWYgKHNob3VsZEluc2VydFRleHQodGV4dCwgc2VsZWN0ZWRSYW5nZSgp
LmdldCgpLCBFZGl0b3JJbnNlcnRBY3Rpb25QYXN0ZWQpKQorICAgICAgICAgICAgcGFzdGVBc1Bs
YWluVGV4dCh0ZXh0LCBmYWxzZSk7CisgICAgfQorfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCmluZGV4IGE4NjBlMjUuLjZjNDcyMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAK
KzIwMTQtMTAtMDkgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisKKyAg
ICAgICAgSW1wbGVtZW50IHNlbGVjdGlvbiBzZXJ2aWNlcyBtZW51IGZvciBMZWdhY3kgV2ViS2l0
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzc1ODIK
KyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzE4NjA0MjQxPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisKIDIwMTQtMTAtMDYgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+
CiAKICAgICAgICAgW1dpbl0gVW5yZXZpZXdlZCA2NC1iaXQgYnVpbGQgZml4IGFmdGVyIHIxNzQz
MTUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpp
bmRleCA4YTFjOTc3Li4wYmE2NmUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTgzLDYgKzgzLDggQEAKIAkJMjlBRUY5NjAxMzRDNzZG
QjAwRkU1MDk2IC8qIE91dGxvb2tRdWlya3NVc2VyU2NyaXB0LmpzIGluIFJlc291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyOUFFRjk1RDEzNEM3NTU0MDBGRTUwOTYg
LyogT3V0bG9va1F1aXJrc1VzZXJTY3JpcHQuanMgKi87IH07CiAJCTJEMjUzOTY2MThDRTg1QzIw
MDI3MDIyMiAvKiBXZWJTaGFyaW5nU2VydmljZVBpY2tlckNvbnRyb2xsZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEMjUzOTY0MThDRTg1QzIwMDI3
MDIyMiAvKiBXZWJTaGFyaW5nU2VydmljZVBpY2tlckNvbnRyb2xsZXIuaCAqLzsgfTsKIAkJMkQy
NTM5NjcxOENFODVDMjAwMjcwMjIyIC8qIFdlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ29udHJvbGxl
ci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEMjUz
OTY1MThDRTg1QzIwMDI3MDIyMiAvKiBXZWJTaGFyaW5nU2VydmljZVBpY2tlckNvbnRyb2xsZXIu
bW0gKi87IH07CisJCTJERDYzMkMyMTlFNUQxRjAwMDJFOUM3QiAvKiBXZWJTZWxlY3Rpb25TZXJ2
aWNlQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMkRENjMyQzAxOUU1RDFGMDAwMkU5QzdCIC8qIFdlYlNlbGVjdGlvblNlcnZpY2VDb250
cm9sbGVyLmggKi87IH07CisJCTJERDYzMkMzMTlFNUQxRjAwMDJFOUM3QiAvKiBXZWJTZWxlY3Rp
b25TZXJ2aWNlQ29udHJvbGxlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDJERDYzMkMxMTlFNUQxRjAwMDJFOUM3QiAvKiBXZWJTZWxlY3Rpb25TZXJ2
aWNlQ29udHJvbGxlci5tbSAqLzsgfTsKIAkJMzEyRTJGRTUxNEU0ODE4MjAwN0NDQTE4IC8qIFdl
Yk5vdGlmaWNhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMzEyRTJGRTMxNEU0ODE4MjAwN0NDQTE4IC8qIFdlYk5vdGlmaWNhdGlvbi5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTMxMkUyRkU2MTRF
NDgxODIwMDdDQ0ExOCAvKiBXZWJOb3RpZmljYXRpb24ubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTJFMkZFNDE0RTQ4MTgyMDA3Q0NBMTggLyogV2Vi
Tm90aWZpY2F0aW9uLm1tICovOyB9OwogCQkzMTJFMkZFOTE0RTQ4MjE1MDA3Q0NBMTggLyogV2Vi
Tm90aWZpY2F0aW9uSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDMxMkUyRkU4MTRFNDgyMTUwMDdDQ0ExOCAvKiBXZWJOb3RpZmljYXRpb25J
bnRlcm5hbC5oICovOyB9OwpAQCAtNDYzLDcgKzQ2NSw3IEBACiAJCTBGMzA5ODVEMTFFQ0ZFNDQw
MEY1NTlERiAvKiBXZWJSZW5kZXJMYXllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXZWJSZW5kZXJMYXllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjMw
OTg1RTExRUNGRTQ1MDBGNTU5REYgLyogV2ViUmVuZGVyTGF5ZXIubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJSZW5kZXJMYXllci5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMTREODI1MkQwQUY5NTUwOTAwMDRGMDU3IC8qIFdlYkNocm9tZUNs
aWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQ2hyb21lQ2xpZW50
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTE0RDgyNTJFMEFGOTU1MDkwMDA0RjA1
NyAvKiBXZWJDaHJvbWVDbGllbnQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gV2ViQ2hyb21lQ2xpZW50Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkxNEQ4MjUyRTBBRjk1NTA5MDAwNEYwNTcgLyogV2ViQ2hyb21lQ2xpZW50Lm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViQ2hyb21lQ2xpZW50Lm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQTJEQkU5RDBGMjUxRTNBMDAzNkY4QTYgLyogUHJv
eHlJbnN0YW5jZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQcm94eUluc3Rh
bmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBMkRCRTlFMEYyNTFFM0EwMDM2
RjhBNiAvKiBQcm94eUluc3RhbmNlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gUHJveHlJbnN0YW5jZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MUE0REY1MjAwRUM4Qzc0RDAwNkJENEI0IC8qIFdlYk5ldHNjYXBlUGx1Z2luVmlldy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJOZXRzY2FwZVBsdWdpblZpZXcuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTUzMiw2ICs1MzQsOCBAQAogCQkyRDM2RkQ1RTAz
Rjc4RjlFMDBBODAxNjYgLyogV2ViRm9ybURlbGVnYXRlUHJpdmF0ZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGluZGVudFdpZHRoID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkZvcm1EZWxlZ2F0ZVByaXZh
dGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7
IH07CiAJCTJEODFEQUIyMDNFQjBCMkQwMEE4MDE2NiAvKiBXZWJGb3JtRGVsZWdhdGUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGgg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViRm9ybURl
bGVnYXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMg
PSAwOyB9OwogCQkyRDgxREFCMzAzRUIwQjJEMDBBODAxNjYgLyogV2ViRm9ybURlbGVnYXRlLm0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdp
ZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMub2JqYzsgcGF0aCA9IFdl
YkZvcm1EZWxlZ2F0ZS5tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVz
ZXNUYWJzID0gMDsgfTsKKwkJMkRENjMyQzAxOUU1RDFGMDAwMkU5QzdCIC8qIFdlYlNlbGVjdGlv
blNlcnZpY2VDb250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdl
YlNlbGVjdGlvblNlcnZpY2VDb250cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTJERDYzMkMxMTlFNUQxRjAwMDJFOUM3QiAvKiBXZWJTZWxlY3Rpb25TZXJ2aWNlQ29udHJv
bGxlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYlNlbGVj
dGlvblNlcnZpY2VDb250cm9sbGVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkz
MTJFMkZFMzE0RTQ4MTgyMDA3Q0NBMTggLyogV2ViTm90aWZpY2F0aW9uLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYk5vdGlmaWNhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkzMTJFMkZFNDE0RTQ4MTgyMDA3Q0NBMTggLyogV2ViTm90aWZpY2F0aW9u
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViTm90aWZpY2F0
aW9uLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMTJFMkZFODE0RTQ4MjE1MDA3
Q0NBMTggLyogV2ViTm90aWZpY2F0aW9uSW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV2ViTm90aWZpY2F0aW9uSW50ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTE1NjYsNiArMTU3MCw4IEBACiAJCQkJQTVERUZDMDcxMUQ1MzMxQzAwODg1
MjczIC8qIFdlYlNlY3VyaXR5T3JpZ2luLm1tICovLAogCQkJCUE1REVGQzA4MTFENTMzMUMwMDg4
NTI3MyAvKiBXZWJTZWN1cml0eU9yaWdpbkludGVybmFsLmggKi8sCiAJCQkJQTVERUZDMDkxMUQ1
MzMxQzAwODg1MjczIC8qIFdlYlNlY3VyaXR5T3JpZ2luUHJpdmF0ZS5oICovLAorCQkJCTJERDYz
MkMwMTlFNUQxRjAwMDJFOUM3QiAvKiBXZWJTZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxlci5oICov
LAorCQkJCTJERDYzMkMxMTlFNUQxRjAwMDJFOUM3QiAvKiBXZWJTZWxlY3Rpb25TZXJ2aWNlQ29u
dHJvbGxlci5tbSAqLywKIAkJCQk5M0VCMTc4RTA5Rjg4RDUxMDA5MUY4RkYgLyogV2ViU3lzdGVt
SW50ZXJmYWNlLmggKi8sCiAJCQkJOTNFQjE3OEMwOUY4OEQ0NjAwOTFGOEZGIC8qIFdlYlN5c3Rl
bUludGVyZmFjZS5tbSAqLywKIAkJCQkxQUIxREFDMDE4QkMwMjMyMDA0QjZBOUYgLyogV2ViVmll
d0dyb3VwLmggKi8sCkBAIC0xNjg2LDYgKzE2OTIsNyBAQAogCQkJCTdDMDFDQjg3MTczNDM1Qzkw
MEM1RDgwNyAvKiBTZWFyY2hQb3B1cE1lbnVNYWMuaCBpbiBIZWFkZXJzICovLAogCQkJCUExMEMx
RDZGMTgyMDMwMEUwMDM2ODgzQSAvKiBXZWJHZW9sb2NhdGlvbkludGVybmFsLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlDRURBMTJEQzE1MkNCRTY4MDBEOUUwOEQgLyogV2ViQWx0ZXJuYXRpdmVUZXh0
Q2xpZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQkyREQ2MzJDMjE5RTVEMUYwMDAyRTlDN0IgLyog
V2ViU2VsZWN0aW9uU2VydmljZUNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUI2Q0U1
QzI1MTAwQkM1RjUwMDIxOTkzNiAvKiBXZWJBcHBsaWNhdGlvbkNhY2hlLmggaW4gSGVhZGVycyAq
LywKIAkJCQlBMTBDMUQ3MjE4MjAzMDBFMDAzNjg4M0EgLyogV2ViTUlNRVR5cGVSZWdpc3RyeS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQTVERUZDMTMxMUQ1MzQ0QjAwODg1MjczIC8qIFdlYkFwcGxp
Y2F0aW9uQ2FjaGVRdW90YU1hbmFnZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMjEyOSw2ICsyMTM2
LDcgQEAKIAkJCQkxQ0NGRkQxMzBCMUY4MUYyMDAyRUU5MjYgLyogT2xkV2ViQXNzZXJ0aW9ucy5j
IGluIFNvdXJjZXMgKi8sCiAJCQkJQTEwQzFEOEUxODIwMzA1RTAwMzY4ODNBIC8qIFdlYlBERlZp
ZXdQbGFjZWhvbGRlci5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDMDFDQjg2MTczNDM1QzkwMEM1
RDgwNyAvKiBQb3B1cE1lbnVNYWMubW0gaW4gU291cmNlcyAqLywKKwkJCQkyREQ2MzJDMzE5RTVE
MUYwMDAyRTlDN0IgLyogV2ViU2VsZWN0aW9uU2VydmljZUNvbnRyb2xsZXIubW0gaW4gU291cmNl
cyAqLywKIAkJCQlBMTBDMUQ3NzE4MjAzMDBFMDAzNjg4M0EgLyogV2ViVmlzaWJsZVBvc2l0aW9u
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMUEyREJFQTAwRjI1MUUzQTAwMzZGOEE2IC8qIFByb3h5
SW5zdGFuY2UubW0gaW4gU291cmNlcyAqLywKIAkJCQkwNzBGNTQ5QzE3RjFFNDJCMDAxNjlFMDQg
LyogV2ViVXNlck1lZGlhQ2xpZW50Lm1tIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5k
ZXggMjZkMjI2MS4uZDdiZWQ3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDg3IEBACiAy
MDE0LTEwLTA5ICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCisgICAg
ICAgIEltcGxlbWVudCBzZWxlY3Rpb24gc2VydmljZXMgbWVudSBmb3IgTGVnYWN5IFdlYktpdAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM3NTgyCisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xODYwNDI0MT4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE1pc2MvV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJD
b250cm9sbGVyLmg6CisgICAgICAgIE1vdmUgU1BJIGludG8gdGhlIGhlYWRlciAoaW4gdGhlIG5l
YXIgZnV0dXJlIGl0IHdpbGwgYmUgbW92ZWQgdG8gYSBtb2Rlcm4tc3R5bGUgU1BJIGhlYWRlciku
CisgICAgICAgIEFkZCBXZWJTaGFyaW5nU2VydmljZVBpY2tlckNsaWVudCwgd2hpY2ggb3RoZXIg
Y2xhc3NlcyBjYW4gaW1wbGVtZW50CisgICAgICAgIGluc3RlYWQgb2YgdHlpbmcgV2ViU2hhcmlu
Z1NlcnZpY2VQaWNrZXJDb250cm9sbGVyIHN0cm9uZ2x5IHRvIFdlYkNvbnRleHRNZW51Q2xpZW50
LgorICAgICAgICBNYWtlIGluaXRXaXRoRGF0YTouLi4gLT4gaW5pdFdpdGhJdGVtczouLi4gaW5z
dGVhZCwgdGFraW5nIGFuIGFycmF5IG9mIE5TSXRlbVByb3ZpZGVycy4KKworICAgICAgICAqIE1p
c2MvV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDb250cm9sbGVyLm1tOgorICAgICAgICBQYXNzIGlu
IE5TU2hhcmluZ1NlcnZpY2VQaWNrZXJTdHlsZSwgc28gdGhhdCBjbGllbnRzIGNhbiBzcGVjaWZ5
IHRoZSBzdHlsZS4KKworICAgICAgICAoLVtXZWJTaGFyaW5nU2VydmljZVBpY2tlckNvbnRyb2xs
ZXIgY2xlYXJdKToKKyAgICAgICAgKC1bV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDb250cm9sbGVy
IGRpZFNoYXJlSW1hZ2VEYXRhOmNvbmZpcm1EYXRhSXNWYWxpZFRJRkZEYXRhOl0pOgorICAgICAg
ICAoLVtXZWJTaGFyaW5nU2VydmljZVBpY2tlckNvbnRyb2xsZXIgc2hhcmluZ1NlcnZpY2VQaWNr
ZXI6ZGlkQ2hvb3NlU2hhcmluZ1NlcnZpY2U6XSk6CisgICAgICAgICgtW1dlYlNoYXJpbmdTZXJ2
aWNlUGlja2VyQ29udHJvbGxlciBzaGFyaW5nU2VydmljZTpzb3VyY2VGcmFtZU9uU2NyZWVuRm9y
U2hhcmVJdGVtOl0pOgorICAgICAgICAoLVtXZWJTaGFyaW5nU2VydmljZVBpY2tlckNvbnRyb2xs
ZXIgc2hhcmluZ1NlcnZpY2U6dHJhbnNpdGlvbkltYWdlRm9yU2hhcmVJdGVtOmNvbnRlbnRSZWN0
Ol0pOgorICAgICAgICAoLVtXZWJTaGFyaW5nU2VydmljZVBpY2tlckNvbnRyb2xsZXIgc2hhcmlu
Z1NlcnZpY2U6c291cmNlV2luZG93Rm9yU2hhcmVJdGVtczpzaGFyaW5nQ29udGVudFNjb3BlOl0p
OgorICAgICAgICBNYWtlIHVzZSBvZiBXZWJTaGFyaW5nU2VydmljZVBpY2tlckNsaWVudC4KKwor
ICAgICAgICAoLVtXZWJTaGFyaW5nU2VydmljZVBpY2tlckNvbnRyb2xsZXIgc2hhcmluZ1NlcnZp
Y2U6ZGlkU2hhcmVJdGVtczpdKToKKyAgICAgICAgSWYgd2UncmUgcmV0dXJuZWQgYSBOU0F0dHJp
YnV0ZWRTdHJpbmcsIHBhc3RlIGl0IG9uIHRvcCBvZiB0aGUgY3VycmVudCBzZWxlY3Rpb24sCisg
ICAgICAgIHNpbWlsYXIgdG8gd2hhdCB0aGUgV2ViS2l0MiBpbXBsZW1lbnRhdGlvbiBjdXJyZW50
bHkgZG9lcy4KKyAgICAgICAgCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xp
ZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1tOgorICAg
ICAgICAoV2ViQ2hyb21lQ2xpZW50OjpoYW5kbGVUZWxlcGhvbmVOdW1iZXJDbGljayk6CisgICAg
ICAgIChXZWJDaHJvbWVDbGllbnQ6OmhhbmRsZVNlbGVjdGlvblNlcnZpY2VDbGljayk6CisgICAg
ICAgIChXZWJDaHJvbWVDbGllbnQ6Omhhc1JlbGV2YW50U2VsZWN0aW9uU2VydmljZXMpOgorICAg
ICAgICBPdmVycmlkZSB0aGUgc2VydmljZXMtcmVsYXRlZCBDaHJvbWVDbGllbnQgZnVuY3Rpb25z
LCBmb3J3YXJkIHRoZW0gdG8gV2ViU2VsZWN0aW9uU2VydmljZUNvbnRyb2xsZXIuCisKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5oOgorICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50Lm1tOgorICAgICAgICAoV2ViQ29udGV4
dE1lbnVDbGllbnQ6OnNoYXJpbmdTZXJ2aWNlUGlja2VyV2lsbEJlRGVzdHJveWVkKToKKyAgICAg
ICAgKFdlYkNvbnRleHRNZW51Q2xpZW50OjpwYWdlRm9yU2hhcmluZ1NlcnZpY2VQaWNrZXIpOgor
ICAgICAgICAoV2ViQ29udGV4dE1lbnVDbGllbnQ6OndpbmRvd0ZvclNoYXJpbmdTZXJ2aWNlUGlj
a2VyKToKKyAgICAgICAgKFdlYkNvbnRleHRNZW51Q2xpZW50OjpzY3JlZW5SZWN0Rm9yQ3VycmVu
dFNoYXJpbmdTZXJ2aWNlUGlja2VySXRlbSk6CisgICAgICAgIChXZWJDb250ZXh0TWVudUNsaWVu
dDo6aW1hZ2VGb3JDdXJyZW50U2hhcmluZ1NlcnZpY2VQaWNrZXJJdGVtKToKKyAgICAgICAgKFdl
YkNvbnRleHRNZW51Q2xpZW50Ojpjb250ZXh0TWVudUZvckV2ZW50KToKKyAgICAgICAgKFdlYkNv
bnRleHRNZW51Q2xpZW50OjpzY3JlZW5SZWN0Rm9ySGl0VGVzdE5vZGUpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29udGV4dE1lbnVDbGllbnQ6OnJlbmRlcmVkSW1hZ2VGb3JDb250cm9sbGVkSW1h
Z2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29udGV4dE1lbnVDbGllbnQ6OmNsZWFyU2hhcmlu
Z1NlcnZpY2VQaWNrZXJDb250cm9sbGVyKTogRGVsZXRlZC4KKyAgICAgICAgSGF2ZSBXZWJDb250
ZXh0TWVudUNsaWVudCBpbXBsZW1lbnQgV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDbGllbnQgdG8g
YXZvaWQKKyAgICAgICAgaGF2aW5nIFdlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ29udHJvbGxlciB0
aWdodGx5IGJvdW5kIHRvIGl0LgorICAgICAgICBNYWtlIGFuIE5TSXRlbVByb3ZpZGVyIGFycmF5
IHdoZW4gaW5zdGFudGlhdGluZyBXZWJTaGFyaW5nU2VydmljZVBpY2tlckNvbnRyb2xsZXIKKyAg
ICAgICAgaW5zdGVhZCBvZiBoYW5kaW5nIGl0IGRhdGEgZGlyZWN0bHkuCisKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9XZWJTZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxlci5oOiBDb3BpZWQgZnJv
bSBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5o
LgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlNlbGVjdGlvblNlcnZpY2VDb250cm9sbGVy
Lm1tOiBBZGRlZC4KKyAgICAgICAgKFdlYlNlbGVjdGlvblNlcnZpY2VDb250cm9sbGVyOjpXZWJT
ZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxlcik6CisgICAgICAgIEFkZCBXZWJTZWxlY3Rpb25TZXJ2
aWNlQ29udHJvbGxlciwgd2hpY2ggd2lsbCBhY3QgYXMgdGhlIFdlYlNoYXJpbmdTZXJ2aWNlUGlj
a2VyQ2xpZW50CisgICAgICAgIGZvciBzZWxlY3Rpb24gc2VydmljZXMuCisKKyAgICAgICAgKFdl
YlNlbGVjdGlvblNlcnZpY2VDb250cm9sbGVyOjpoYW5kbGVTZWxlY3Rpb25TZXJ2aWNlQ2xpY2sp
OgorICAgICAgICBDcmVhdGUgYSBXZWJTaGFyaW5nU2VyaWNlUGlja2VyQ29udHJvbGxlciB3aXRo
IHRoZSBzZWxlY3Rpb24ncyBhdHRyaWJ1dGVkIHN0cmluZywgYW5kIHNob3cgaXRzIG1lbnUuCisK
KyAgICAgICAgKGhhc0NvbXBhdGlibGVTZXJ2aWNlc0Zvckl0ZW1zKToKKyAgICAgICAgKFdlYlNl
bGVjdGlvblNlcnZpY2VDb250cm9sbGVyOjpoYXNSZWxldmFudFNlbGVjdGlvblNlcnZpY2VzKToK
KyAgICAgICAgRGV0ZXJtaW5lIHdoZXRoZXIgb3Igbm90IHNlcnZpY2VzIGFyZSBhdmFpbGFibGUu
CisKKyAgICAgICAgKFdlYlNlbGVjdGlvblNlcnZpY2VDb250cm9sbGVyOjpzaGFyaW5nU2Vydmlj
ZVBpY2tlcldpbGxCZURlc3Ryb3llZCk6CisgICAgICAgIChXZWJTZWxlY3Rpb25TZXJ2aWNlQ29u
dHJvbGxlcjo6cGFnZUZvclNoYXJpbmdTZXJ2aWNlUGlja2VyKToKKyAgICAgICAgKFdlYlNlbGVj
dGlvblNlcnZpY2VDb250cm9sbGVyOjp3aW5kb3dGb3JTaGFyaW5nU2VydmljZVBpY2tlcik6Cisg
ICAgICAgIEltcGxlbWVudCB0aGUgcmVzdCBvZiB0aGUgV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJD
bGllbnQgb3ZlcnJpZGVzLgorCisgICAgICAgIChXZWJTZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxl
cjo6c2NyZWVuUmVjdEZvckN1cnJlbnRTaGFyaW5nU2VydmljZVBpY2tlckl0ZW0pOgorICAgICAg
ICAoV2ViU2VsZWN0aW9uU2VydmljZUNvbnRyb2xsZXI6OmltYWdlRm9yQ3VycmVudFNoYXJpbmdT
ZXJ2aWNlUGlja2VySXRlbSk6CisgICAgICAgIFRoZXNlIGFyZSBvbmx5IHVzZWZ1bCBmb3IgaW1h
Z2Ugc2hhcmluZyBzZXJ2aWNlcywgc28gd2UgZG9uJ3QgbmVlZCB0bworICAgICAgICBpbXBsZW1l
bnQgdGhlbSAoV2ViQ29udGV4dE1lbnVDbGllbnQgZG9lcywgb24gdGhlIG90aGVyIGhhbmQpLgor
CisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgorICAgICAgICAoLVtXZWJWaWV3IF9zZWxl
Y3Rpb25TZXJ2aWNlQ29udHJvbGxlcl0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlld0RhdGEu
aDoKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXdEYXRhLm1tOgorICAgICAgICAqIFdlYlZpZXcv
V2ViVmlld0ludGVybmFsLmg6CisgICAgICAgIEtlZXAgYSBXZWJTZWxlY3Rpb25TZXJ2aWNlQ29u
dHJvbGxlci4KKworMjAxNC0xMC0wOSAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxl
LmNvbT4KKwogICAgICAgICBBZGQgYSBXZWJLaXQxIHByZWZlcmVuY2UgZm9yIHNlbGVjdGlvbiBz
ZXJ2aWNlcwogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTM3NDk4CiAgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xODU3MjY5OT4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDb250cm9sbGVyLmgg
Yi9Tb3VyY2UvV2ViS2l0L21hYy9NaXNjL1dlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ29udHJvbGxl
ci5oCmluZGV4IDhhYThhOWQuLmFiMzNhZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFj
L01pc2MvV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dl
YktpdC9tYWMvTWlzYy9XZWJTaGFyaW5nU2VydmljZVBpY2tlckNvbnRyb2xsZXIuaApAQCAtMjgs
MTggKzI4LDU1IEBACiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAKIEBjbGFzcyBOU1NoYXJp
bmdTZXJ2aWNlUGlja2VyOworQGNsYXNzIFdlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ29udHJvbGxl
cjsKIEBwcm90b2NvbCBOU1NoYXJpbmdTZXJ2aWNlRGVsZWdhdGU7CiBAcHJvdG9jb2wgTlNTaGFy
aW5nU2VydmljZVBpY2tlckRlbGVnYXRlOwogCisjaWYgX19oYXNfaW5jbHVkZSg8QXBwS2l0L05T
U2hhcmluZ1NlcnZpY2VfUHJpdmF0ZS5oPikKKyNpbXBvcnQgPEFwcEtpdC9OU1NoYXJpbmdTZXJ2
aWNlX1ByaXZhdGUuaD4KKyNlbHNlCit0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBOU1NoYXJp
bmdTZXJ2aWNlUGlja2VyU3R5bGUpIHsKKyAgICBOU1NoYXJpbmdTZXJ2aWNlUGlja2VyU3R5bGVN
ZW51ID0gMCwKKyAgICBOU1NoYXJpbmdTZXJ2aWNlUGlja2VyU3R5bGVSb2xsb3ZlciA9IDEsCisg
ICAgTlNTaGFyaW5nU2VydmljZVBpY2tlclN0eWxlVGV4dFNlbGVjdGlvbiA9IDIsCisgICAgTlNT
aGFyaW5nU2VydmljZVBpY2tlclN0eWxlRGF0YURldGVjdG9yID0gMworfSBOU19FTlVNX0FWQUlM
QUJMRV9NQUMoMTBfMTApOworCit0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBOU1NoYXJpbmdT
ZXJ2aWNlVHlwZSkgeworICAgIE5TU2hhcmluZ1NlcnZpY2VUeXBlU2hhcmUgPSAwLAorICAgIE5T
U2hhcmluZ1NlcnZpY2VUeXBlVmlld2VyID0gMSwKKyAgICBOU1NoYXJpbmdTZXJ2aWNlVHlwZUVk
aXRvciA9IDIKK30gTlNfRU5VTV9BVkFJTEFCTEVfTUFDKDEwXzEwKTsKKwordHlwZWRlZiBOU1VJ
bnRlZ2VyIE5TU2hhcmluZ1NlcnZpY2VNYXNrOworI2VuZGlmCisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKK2NsYXNzIEZsb2F0UmVjdDsKK2NsYXNzIFBhZ2U7Cit9CisKIGNsYXNzIFdlYkNvbnRleHRN
ZW51Q2xpZW50OwogCitjbGFzcyBXZWJTaGFyaW5nU2VydmljZVBpY2tlckNsaWVudCB7CitwdWJs
aWM6CisgICAgdmlydHVhbCB+V2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDbGllbnQoKSB7IH0KKwor
ICAgIHZpcnR1YWwgdm9pZCBzaGFyaW5nU2VydmljZVBpY2tlcldpbGxCZURlc3Ryb3llZChXZWJT
aGFyaW5nU2VydmljZVBpY2tlckNvbnRyb2xsZXIgJikgPSAwOworICAgIHZpcnR1YWwgV2ViQ29y
ZTo6UGFnZSogcGFnZUZvclNoYXJpbmdTZXJ2aWNlUGlja2VyKFdlYlNoYXJpbmdTZXJ2aWNlUGlj
a2VyQ29udHJvbGxlciAmKSA9IDA7CisgICAgdmlydHVhbCBSZXRhaW5QdHI8TlNXaW5kb3c+IHdp
bmRvd0ZvclNoYXJpbmdTZXJ2aWNlUGlja2VyKFdlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ29udHJv
bGxlciAmKSA9IDA7CisKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OkZsb2F0UmVjdCBzY3JlZW5SZWN0
Rm9yQ3VycmVudFNoYXJpbmdTZXJ2aWNlUGlja2VySXRlbShXZWJTaGFyaW5nU2VydmljZVBpY2tl
ckNvbnRyb2xsZXIgJikgPSAwOworICAgIHZpcnR1YWwgUmV0YWluUHRyPE5TSW1hZ2U+IGltYWdl
Rm9yQ3VycmVudFNoYXJpbmdTZXJ2aWNlUGlja2VySXRlbShXZWJTaGFyaW5nU2VydmljZVBpY2tl
ckNvbnRyb2xsZXIgJikgPSAwOworfTsKKwogQGludGVyZmFjZSBXZWJTaGFyaW5nU2VydmljZVBp
Y2tlckNvbnRyb2xsZXIgOiBOU09iamVjdCA8TlNTaGFyaW5nU2VydmljZURlbGVnYXRlLCBOU1No
YXJpbmdTZXJ2aWNlUGlja2VyRGVsZWdhdGU+IHsKLSAgICBXZWJDb250ZXh0TWVudUNsaWVudCog
X21lbnVDbGllbnQ7CisgICAgV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDbGllbnQqIF9waWNrZXJD
bGllbnQ7CiAgICAgUmV0YWluUHRyPE5TU2hhcmluZ1NlcnZpY2VQaWNrZXI+IF9waWNrZXI7CiAg
ICAgQk9PTCBfaW5jbHVkZUVkaXRvclNlcnZpY2VzOwogfQogCi0tIChpbnN0YW5jZXR5cGUpaW5p
dFdpdGhEYXRhOihOU0RhdGEgKilkYXRhIGluY2x1ZGVFZGl0b3JTZXJ2aWNlczooQk9PTClpbmNs
dWRlRWRpdG9yU2VydmljZXMgbWVudUNsaWVudDooV2ViQ29udGV4dE1lbnVDbGllbnQqKW1lbnVD
bGllbnQ7CistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhJdGVtczooTlNBcnJheSAqKWl0ZW1zIGlu
Y2x1ZGVFZGl0b3JTZXJ2aWNlczooQk9PTClpbmNsdWRlRWRpdG9yU2VydmljZXMgY2xpZW50OihX
ZWJTaGFyaW5nU2VydmljZVBpY2tlckNsaWVudCopcGlja2VyQ2xpZW50IHN0eWxlOihOU1NoYXJp
bmdTZXJ2aWNlUGlja2VyU3R5bGUpc3R5bGU7CiAtIChOU01lbnUgKiltZW51OwogLSAodm9pZClk
aWRTaGFyZUltYWdlRGF0YTooTlNEYXRhICopZGF0YSBjb25maXJtRGF0YUlzVmFsaWRUSUZGRGF0
YTooQk9PTCljb25maXJtRGF0YTsKIC0gKHZvaWQpY2xlYXI7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L21hYy9NaXNjL1dlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ29udHJvbGxlci5tbSBiL1Nv
dXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDb250cm9sbGVyLm1t
CmluZGV4IGJlYWIwY2MuLjA5NzYwOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL01p
c2MvV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDb250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvbWFjL01pc2MvV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDb250cm9sbGVyLm1tCkBAIC0zOSwy
MCArMzksNiBAQAogI2ltcG9ydCA8V2ViQ29yZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuaD4KICNp
bXBvcnQgPFdlYkNvcmUvUGFnZS5oPgogCi0jaWYgX19oYXNfaW5jbHVkZSg8QXBwS2l0L05TU2hh
cmluZ1NlcnZpY2VfUHJpdmF0ZS5oPikKLSNpbXBvcnQgPEFwcEtpdC9OU1NoYXJpbmdTZXJ2aWNl
X1ByaXZhdGUuaD4KLSNlbHNlCi10eXBlZGVmIGVudW0gewotICAgIE5TU2hhcmluZ1NlcnZpY2VQ
aWNrZXJTdHlsZVJvbGxvdmVyID0gMQotfSBOU1NoYXJpbmdTZXJ2aWNlUGlja2VyU3R5bGU7Ci0K
LXR5cGVkZWYgZW51bSB7Ci0gICAgTlNTaGFyaW5nU2VydmljZVR5cGVFZGl0b3IgPSAyCi19IE5T
U2hhcmluZ1NlcnZpY2VUeXBlOwotCi10eXBlZGVmIE5TVUludGVnZXIgTlNTaGFyaW5nU2Vydmlj
ZU1hc2s7Ci0jZW5kaWYKLQogQGludGVyZmFjZSBOU1NoYXJpbmdTZXJ2aWNlUGlja2VyIChQcml2
YXRlKQogQHByb3BlcnR5IE5TU2hhcmluZ1NlcnZpY2VQaWNrZXJTdHlsZSBzdHlsZTsKIC0gKE5T
TWVudSAqKW1lbnU7CkBAIC03OSw3ICs2NSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwog
CiBAaW1wbGVtZW50YXRpb24gV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDb250cm9sbGVyCiAKLS0g
KGluc3RhbmNldHlwZSlpbml0V2l0aERhdGE6KE5TRGF0YSAqKWRhdGEgaW5jbHVkZUVkaXRvclNl
cnZpY2VzOihCT09MKWluY2x1ZGVFZGl0b3JTZXJ2aWNlcyBtZW51Q2xpZW50OihXZWJDb250ZXh0
TWVudUNsaWVudCopbWVudUNsaWVudAorLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoSXRlbXM6KE5T
QXJyYXkgKilpdGVtcyBpbmNsdWRlRWRpdG9yU2VydmljZXM6KEJPT0wpaW5jbHVkZUVkaXRvclNl
cnZpY2VzIGNsaWVudDooV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDbGllbnQqKXBpY2tlckNsaWVu
dCBzdHlsZTooTlNTaGFyaW5nU2VydmljZVBpY2tlclN0eWxlKXN0eWxlCiB7CiAjaWZuZGVmIF9f
TFA2NF9fCiAgICAgcmV0dXJuIG5pbDsKQEAgLTg3LDE0ICs3MywxMiBAQCB1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKICAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkKICAgICAgICAgcmV0
dXJuIG5pbDsKIAotICAgIFJldGFpblB0cjxOU0l0ZW1Qcm92aWRlcj4gaXRlbVByb3ZpZGVyID0g
YWRvcHROUyhbW05TSXRlbVByb3ZpZGVyIGFsbG9jXSBpbml0V2l0aEl0ZW06ZGF0YSB0eXBlSWRl
bnRpZmllcjpAInB1YmxpYy5kYXRhIl0pOwotCi0gICAgX3BpY2tlciA9IGFkb3B0TlMoW1tOU1No
YXJpbmdTZXJ2aWNlUGlja2VyIGFsbG9jXSBpbml0V2l0aEl0ZW1zOkBbIGl0ZW1Qcm92aWRlci5n
ZXQoKSBdXSk7Ci0gICAgW19waWNrZXIgc2V0U3R5bGU6TlNTaGFyaW5nU2VydmljZVBpY2tlclN0
eWxlUm9sbG92ZXJdOworICAgIF9waWNrZXIgPSBhZG9wdE5TKFtbTlNTaGFyaW5nU2VydmljZVBp
Y2tlciBhbGxvY10gaW5pdFdpdGhJdGVtczppdGVtc10pOworICAgIFtfcGlja2VyIHNldFN0eWxl
OnN0eWxlXTsKICAgICBbX3BpY2tlciBzZXREZWxlZ2F0ZTpzZWxmXTsKIAogICAgIF9pbmNsdWRl
RWRpdG9yU2VydmljZXMgPSBpbmNsdWRlRWRpdG9yU2VydmljZXM7Ci0gICAgX21lbnVDbGllbnQg
PSBtZW51Q2xpZW50OworICAgIF9waWNrZXJDbGllbnQgPSBwaWNrZXJDbGllbnQ7CiAKICAgICBy
ZXR1cm4gc2VsZjsKICNlbmRpZgpAQCAtMTA1LDExICs4OSwxMSBAQCB1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKICAgICAvLyBQcm90ZWN0IHNlbGYgZnJvbSBiZWluZyBkZWFsbG9jJ2VkIHBhcnR3
YXkgdGhyb3VnaCB0aGlzIG1ldGhvZC4KICAgICBSZXRhaW5QdHI8V2ViU2hhcmluZ1NlcnZpY2VQ
aWNrZXJDb250cm9sbGVyPiBwcm90ZWN0b3Ioc2VsZik7CiAKLSAgICBpZiAoX21lbnVDbGllbnQp
Ci0gICAgICAgIF9tZW51Q2xpZW50LT5jbGVhclNoYXJpbmdTZXJ2aWNlUGlja2VyQ29udHJvbGxl
cigpOworICAgIGlmIChfcGlja2VyQ2xpZW50KQorICAgICAgICBfcGlja2VyQ2xpZW50LT5zaGFy
aW5nU2VydmljZVBpY2tlcldpbGxCZURlc3Ryb3llZCgqc2VsZik7CiAKICAgICBfcGlja2VyID0g
bnVsbHB0cjsKLSAgICBfbWVudUNsaWVudCA9IG51bGxwdHI7CisgICAgX3BpY2tlckNsaWVudCA9
IG51bGxwdHI7CiB9CiAKIC0gKE5TTWVudSAqKW1lbnUKQEAgLTExOSw3ICsxMDMsNyBAQCB1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogLSAodm9pZClkaWRTaGFyZUltYWdlRGF0YTooTlNEYXRh
ICopZGF0YSBjb25maXJtRGF0YUlzVmFsaWRUSUZGRGF0YTooQk9PTCljb25maXJtRGF0YQogewot
ICAgIFBhZ2UqIHBhZ2UgPSBbX21lbnVDbGllbnQtPndlYlZpZXcoKSBwYWdlXTsKKyAgICBQYWdl
KiBwYWdlID0gX3BpY2tlckNsaWVudC0+cGFnZUZvclNoYXJpbmdTZXJ2aWNlUGlja2VyKCpzZWxm
KTsKICAgICBpZiAoIXBhZ2UpCiAgICAgICAgIHJldHVybjsKIApAQCAtMTcwLDEzICsxNTQsMTgg
QEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAtICh2b2lkKXNoYXJpbmdTZXJ2aWNlUGlja2Vy
OihOU1NoYXJpbmdTZXJ2aWNlUGlja2VyICopc2hhcmluZ1NlcnZpY2VQaWNrZXIgZGlkQ2hvb3Nl
U2hhcmluZ1NlcnZpY2U6KE5TU2hhcmluZ1NlcnZpY2UgKilzZXJ2aWNlCiB7CiAgICAgaWYgKCFz
ZXJ2aWNlKQotICAgICAgICBfbWVudUNsaWVudC0+Y2xlYXJTaGFyaW5nU2VydmljZVBpY2tlckNv
bnRyb2xsZXIoKTsKKyAgICAgICAgX3BpY2tlckNsaWVudC0+c2hhcmluZ1NlcnZpY2VQaWNrZXJX
aWxsQmVEZXN0cm95ZWQoKnNlbGYpOwogfQogCiAjcHJhZ21hIG1hcmsgTlNTaGFyaW5nU2Vydmlj
ZURlbGVnYXRlIG1ldGhvZHMKIAogLSAodm9pZClzaGFyaW5nU2VydmljZTooTlNTaGFyaW5nU2Vy
dmljZSAqKXNoYXJpbmdTZXJ2aWNlIGRpZFNoYXJlSXRlbXM6KE5TQXJyYXkgKilpdGVtcwogewor
ICAgIC8vIFdlIG9ubHkgY2FyZSBhYm91dCB3aGF0IGl0ZW0gd2FzIHNoYXJlZCBpZiB3ZSB3ZXJl
IGludGVyZXN0ZWQgaW4gZWRpdG9yIHNlcnZpY2VzCisgICAgLy8gKGkuZS4sIGlmIHdlIHBsYW4g
b24gcmVwbGFjaW5nIHRoZSBzZWxlY3Rpb24gd2l0aCB0aGUgcmV0dXJuZWQgaXRlbSkKKyAgICBp
ZiAoIV9pbmNsdWRlRWRpdG9yU2VydmljZXMpCisgICAgICAgIHJldHVybjsKKwogICAgIC8vIFdl
IG9ubHkgc2VuZCBvbmUgaXRlbSwgc28gd2Ugc2hvdWxkIG9ubHkgZ2V0IG9uZSBpdGVtIGJhY2su
CiAgICAgaWYgKFtpdGVtcyBjb3VudF0gIT0gMSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjA4LDgg
KzE5NywxMSBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKICAgICAgICAgfV07CiAgICAgfQog
I2VuZGlmCi0gICAgZWxzZQotICAgICAgICBMT0dfRVJST1IoInNoYXJpbmdTZXJ2aWNlOmRpZFNo
YXJlSXRlbXM6IC0gVW5rbm93biBpdGVtIHR5cGUgcmV0dXJuZWQiKTsKKyAgICBlbHNlIGlmIChb
aXRlbSBpc0tpbmRPZkNsYXNzOltOU0F0dHJpYnV0ZWRTdHJpbmcgY2xhc3NdXSkgeworICAgICAg
ICBGcmFtZSYgZnJhbWUgPSBfcGlja2VyQ2xpZW50LT5wYWdlRm9yU2hhcmluZ1NlcnZpY2VQaWNr
ZXIoKnNlbGYpLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKTsKKyAgICAg
ICAgZnJhbWUuZWRpdG9yKCkucmVwbGFjZVNlbGVjdGlvbldpdGhBdHRyaWJ1dGVkU3RyaW5nKGl0
ZW0pOworICAgIH0gZWxzZQorICAgICAgICBMT0dfRVJST1IoInNoYXJpbmdTZXJ2aWNlOmRpZFNo
YXJlSXRlbXM6IC0gVW5rbm93biBpdGVtIHR5cGUgcmV0dXJuZWRcbiIpOwogfQogCiAtICh2b2lk
KXNoYXJpbmdTZXJ2aWNlOihOU1NoYXJpbmdTZXJ2aWNlICopc2hhcmluZ1NlcnZpY2UgZGlkRmFp
bFRvU2hhcmVJdGVtczooTlNBcnJheSAqKWl0ZW1zIGVycm9yOihOU0Vycm9yICopZXJyb3IKQEAg
LTIxOSwyMyArMjExLDIzIEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiAtIChOU1JlY3Qp
c2hhcmluZ1NlcnZpY2U6KE5TU2hhcmluZ1NlcnZpY2UgKilzaGFyaW5nU2VydmljZSBzb3VyY2VG
cmFtZU9uU2NyZWVuRm9yU2hhcmVJdGVtOihpZCA8TlNQYXN0ZWJvYXJkV3JpdGluZz4paXRlbQog
ewotICAgIGlmICghX21lbnVDbGllbnQpCisgICAgaWYgKCFfcGlja2VyQ2xpZW50KQogICAgICAg
ICByZXR1cm4gTlNaZXJvUmVjdDsKIAotICAgIHJldHVybiBfbWVudUNsaWVudC0+c2NyZWVuUmVj
dEZvckhpdFRlc3ROb2RlKCk7CisgICAgcmV0dXJuIF9waWNrZXJDbGllbnQtPnNjcmVlblJlY3RG
b3JDdXJyZW50U2hhcmluZ1NlcnZpY2VQaWNrZXJJdGVtKCpzZWxmKTsKIH0KIAogLSAoTlNJbWFn
ZSAqKXNoYXJpbmdTZXJ2aWNlOihOU1NoYXJpbmdTZXJ2aWNlICopc2hhcmluZ1NlcnZpY2UgdHJh
bnNpdGlvbkltYWdlRm9yU2hhcmVJdGVtOihpZCA8TlNQYXN0ZWJvYXJkV3JpdGluZz4paXRlbSBj
b250ZW50UmVjdDooTlNSZWN0ICopY29udGVudFJlY3QKIHsKLSAgICBpZiAoIV9tZW51Q2xpZW50
KQorICAgIGlmICghX3BpY2tlckNsaWVudCkKICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAgIHJl
dHVybiBfbWVudUNsaWVudC0+cmVuZGVyZWRJbWFnZUZvckNvbnRyb2xsZWRJbWFnZSgpOworICAg
IHJldHVybiBfcGlja2VyQ2xpZW50LT5pbWFnZUZvckN1cnJlbnRTaGFyaW5nU2VydmljZVBpY2tl
ckl0ZW0oKnNlbGYpLmdldCgpOwogfQogCiAtIChOU1dpbmRvdyAqKXNoYXJpbmdTZXJ2aWNlOihO
U1NoYXJpbmdTZXJ2aWNlICopc2hhcmluZ1NlcnZpY2Ugc291cmNlV2luZG93Rm9yU2hhcmVJdGVt
czooTlNBcnJheSAqKWl0ZW1zIHNoYXJpbmdDb250ZW50U2NvcGU6KE5TU2hhcmluZ0NvbnRlbnRT
Y29wZSAqKXNoYXJpbmdDb250ZW50U2NvcGUKIHsKLSAgICByZXR1cm4gW19tZW51Q2xpZW50LT53
ZWJWaWV3KCkgd2luZG93XTsKKyAgICByZXR1cm4gX3BpY2tlckNsaWVudC0+d2luZG93Rm9yU2hh
cmluZ1NlcnZpY2VQaWNrZXIoKnNlbGYpLmdldCgpOwogfQogCiBAZW5kCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaCBiL1NvdXJj
ZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCmluZGV4IDcyNzBj
ZTEuLmY3ZjcyZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkNocm9tZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkNocm9tZUNsaWVudC5oCkBAIC0yMDUsNiArMjA1LDExIEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIGJvb2wgdW53cmFwQ3J5cHRvS2V5KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYsIFZlY3Rvcjx1
aW50OF90PiYpIGNvbnN0IG92ZXJyaWRlOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoU0VSVklDRV9D
T05UUk9MUykKKyAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlU2VsZWN0aW9uU2VydmljZUNsaWNrKFdl
YkNvcmU6OkZyYW1lU2VsZWN0aW9uJiwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHRlbGVwaG9uZU51
bWJlcnMsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBi
b29sIGhhc1JlbGV2YW50U2VsZWN0aW9uU2VydmljZXMoYm9vbCBpc1RleHRPbmx5KSBjb25zdCBv
dmVycmlkZTsKKyNlbmRpZgorCiAjaWYgUExBVEZPUk0oSU9TKQogICAgIFdlYlZpZXcqIHdlYlZp
ZXcoKSBjb25zdCB7IHJldHVybiBtX3dlYlZpZXc7IH0KICNlbHNlCkBAIC0yMTIsNiArMjE3LDUg
QEAgcHVibGljOgogI2VuZGlmCiAKIHByaXZhdGU6Ci0KICAgICBXZWJWaWV3ICptX3dlYlZpZXc7
CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hy
b21lQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50Lm1tCmluZGV4IDMyMTY4MDcuLjk3ZGUyODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQubW0KQEAgLTQ5LDYgKzQ5LDcg
QEAKICNpbXBvcnQgIldlYlBsdWdpbi5oIgogI2ltcG9ydCAiV2ViUXVvdGFNYW5hZ2VyLmgiCiAj
aW1wb3J0ICJXZWJTZWN1cml0eU9yaWdpbkludGVybmFsLmgiCisjaW1wb3J0ICJXZWJTZWxlY3Rp
b25TZXJ2aWNlQ29udHJvbGxlci5oIgogI2ltcG9ydCAiV2ViVUlEZWxlZ2F0ZVByaXZhdGUuaCIK
ICNpbXBvcnQgIldlYlZpZXcuaCIKICNpbXBvcnQgIldlYlZpZXdJbnRlcm5hbC5oIgpAQCAtMTAz
OSwzICsxMDQwLDE2IEBAIGJvb2wgV2ViQ2hyb21lQ2xpZW50Ojp1bndyYXBDcnlwdG9LZXkoY29u
c3QgVmVjdG9yPHVpbnQ4X3Q+JiB3cmFwcGVkS2V5LCBWZWN0b3I8CiAgICAgcmV0dXJuIHVud3Jh
cFNlcmlhbGl6ZWRDcnlwdG9LZXkobWFzdGVyS2V5LCB3cmFwcGVkS2V5LCBrZXkpOwogfQogI2Vu
ZGlmCisKKyNpZiBFTkFCTEUoU0VSVklDRV9DT05UUk9MUykKK3ZvaWQgV2ViQ2hyb21lQ2xpZW50
OjpoYW5kbGVTZWxlY3Rpb25TZXJ2aWNlQ2xpY2soV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb24mIHNl
bGVjdGlvbiwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHRlbGVwaG9uZU51bWJlcnMsIGNvbnN0IFdl
YkNvcmU6OkludFBvaW50JiBwb2ludCkKK3sKKyAgICBbbV93ZWJWaWV3IF9zZWxlY3Rpb25TZXJ2
aWNlQ29udHJvbGxlcl0uaGFuZGxlU2VsZWN0aW9uU2VydmljZUNsaWNrKHNlbGVjdGlvbiwgdGVs
ZXBob25lTnVtYmVycywgcG9pbnQpOworfQorCitib29sIFdlYkNocm9tZUNsaWVudDo6aGFzUmVs
ZXZhbnRTZWxlY3Rpb25TZXJ2aWNlcyhib29sIGlzVGV4dE9ubHkpIGNvbnN0Cit7CisgICAgcmV0
dXJuIFttX3dlYlZpZXcgX3NlbGVjdGlvblNlcnZpY2VDb250cm9sbGVyXS5oYXNSZWxldmFudFNl
bGVjdGlvblNlcnZpY2VzKGlzVGV4dE9ubHkpOworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmggYi9T
b3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5oCmlu
ZGV4IDVhN2IyMmQuLjNjOWExZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuaApAQCAtMjYsNiArMjYsNyBAQAog
ICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KICAqLwogCisjaW1wb3J0ICJXZWJTaGFyaW5nU2VydmljZVBpY2tlckNvbnRy
b2xsZXIuaCIKICNpbXBvcnQgPFdlYkNvcmUvQ29udGV4dE1lbnVDbGllbnQuaD4KICNpbXBvcnQg
PFdlYkNvcmUvSW50UmVjdC5oPgogCkBAIC0zNiwxMCArMzcsMTAgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogY2xhc3MgTm9kZTsKIH0KIAotY2xhc3MgV2ViQ29udGV4dE1lbnVDbGllbnQgOiBwdWJs
aWMgV2ViQ29yZTo6Q29udGV4dE1lbnVDbGllbnQgeworY2xhc3MgV2ViQ29udGV4dE1lbnVDbGll
bnQgOiBwdWJsaWMgV2ViQ29yZTo6Q29udGV4dE1lbnVDbGllbnQsIHB1YmxpYyBXZWJTaGFyaW5n
U2VydmljZVBpY2tlckNsaWVudCB7CiBwdWJsaWM6CiAgICAgV2ViQ29udGV4dE1lbnVDbGllbnQo
V2ViVmlldyAqd2ViVmlldyk7Ci0gICAgfldlYkNvbnRleHRNZW51Q2xpZW50KCk7CisgICAgdmly
dHVhbCB+V2ViQ29udGV4dE1lbnVDbGllbnQoKTsKIAogICAgIHZpcnR1YWwgdm9pZCBjb250ZXh0
TWVudURlc3Ryb3llZCgpIG92ZXJyaWRlOwogICAgIApAQCAtNTUsMTEgKzU2LDEzIEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgc2VhcmNoV2l0aFNwb3RsaWdodCgpIG92ZXJyaWRlOwogICAg
IHZpcnR1YWwgdm9pZCBzaG93Q29udGV4dE1lbnUoKSBvdmVycmlkZTsKIAotICAgIE5TUmVjdCBz
Y3JlZW5SZWN0Rm9ySGl0VGVzdE5vZGUoKSBjb25zdDsKLQogI2lmIEVOQUJMRShTRVJWSUNFX0NP
TlRST0xTKQotICAgIHZvaWQgY2xlYXJTaGFyaW5nU2VydmljZVBpY2tlckNvbnRyb2xsZXIoKTsK
LSAgICBOU0ltYWdlICpyZW5kZXJlZEltYWdlRm9yQ29udHJvbGxlZEltYWdlKCkgY29uc3Q7Cisg
ICAgLy8gV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDbGllbnQKKyAgICB2aXJ0dWFsIHZvaWQgc2hh
cmluZ1NlcnZpY2VQaWNrZXJXaWxsQmVEZXN0cm95ZWQoV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJD
b250cm9sbGVyICYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgV2ViQ29yZTo6UGFnZSogcGFnZUZv
clNoYXJpbmdTZXJ2aWNlUGlja2VyKFdlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ29udHJvbGxlciAm
KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFJldGFpblB0cjxOU1dpbmRvdz4gd2luZG93Rm9yU2hh
cmluZ1NlcnZpY2VQaWNrZXIoV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDb250cm9sbGVyICYpIG92
ZXJyaWRlOworICAgIHZpcnR1YWwgV2ViQ29yZTo6RmxvYXRSZWN0IHNjcmVlblJlY3RGb3JDdXJy
ZW50U2hhcmluZ1NlcnZpY2VQaWNrZXJJdGVtKFdlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ29udHJv
bGxlciAmKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFJldGFpblB0cjxOU0ltYWdlPiBpbWFnZUZv
ckN1cnJlbnRTaGFyaW5nU2VydmljZVBpY2tlckl0ZW0oV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJD
b250cm9sbGVyICYpIG92ZXJyaWRlOwogI2VuZGlmCiAKICAgICBXZWJWaWV3ICp3ZWJWaWV3KCkg
eyByZXR1cm4gbV93ZWJWaWV3OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50Lm1tCmluZGV4IDk0Yjk2OGQuLjE4Zjkz
ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRl
eHRNZW51Q2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YkNvbnRleHRNZW51Q2xpZW50Lm1tCkBAIC0zODcsNyArMzg3LDIzIEBAIGJvb2wgV2ViQ29udGV4
dE1lbnVDbGllbnQ6OmNsaWVudEZsb2F0UmVjdEZvck5vZGUoTm9kZSYgbm9kZSwgRmxvYXRSZWN0
JiByZWN0KSBjCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLU5TUmVjdCBXZWJDb250ZXh0TWVudUNs
aWVudDo6c2NyZWVuUmVjdEZvckhpdFRlc3ROb2RlKCkgY29uc3QKKyNpZiBFTkFCTEUoU0VSVklD
RV9DT05UUk9MUykKK3ZvaWQgV2ViQ29udGV4dE1lbnVDbGllbnQ6OnNoYXJpbmdTZXJ2aWNlUGlj
a2VyV2lsbEJlRGVzdHJveWVkKFdlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ29udHJvbGxlciAmKQor
eworICAgIG1fc2hhcmluZ1NlcnZpY2VQaWNrZXJDb250cm9sbGVyID0gbmlsOworfQorCitXZWJD
b3JlOjpQYWdlKiBXZWJDb250ZXh0TWVudUNsaWVudDo6cGFnZUZvclNoYXJpbmdTZXJ2aWNlUGlj
a2VyKFdlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ29udHJvbGxlciAmKQoreworICAgIHJldHVybiBb
bV93ZWJWaWV3IHBhZ2VdOworfQorCitSZXRhaW5QdHI8TlNXaW5kb3c+IFdlYkNvbnRleHRNZW51
Q2xpZW50Ojp3aW5kb3dGb3JTaGFyaW5nU2VydmljZVBpY2tlcihXZWJTaGFyaW5nU2VydmljZVBp
Y2tlckNvbnRyb2xsZXIgJikKK3sKKyAgICByZXR1cm4gW21fd2ViVmlldyB3aW5kb3ddOworfQor
CitXZWJDb3JlOjpGbG9hdFJlY3QgV2ViQ29udGV4dE1lbnVDbGllbnQ6OnNjcmVlblJlY3RGb3JD
dXJyZW50U2hhcmluZ1NlcnZpY2VQaWNrZXJJdGVtKFdlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ29u
dHJvbGxlciAmKQogewogICAgIFBhZ2UqIHBhZ2UgPSBbbV93ZWJWaWV3IHBhZ2VdOwogICAgIGlm
ICghcGFnZSkKQEAgLTQxNSw4ICs0MzEsNyBAQCBOU1JlY3QgV2ViQ29udGV4dE1lbnVDbGllbnQ6
OnNjcmVlblJlY3RGb3JIaXRUZXN0Tm9kZSgpIGNvbnN0CiAgICAgcmV0dXJuIGZyYW1lVmlldy0+
Y29udGVudHNUb1NjcmVlbihpbnRSZWN0KTsKIH0KIAotI2lmIEVOQUJMRShTRVJWSUNFX0NPTlRS
T0xTKQotTlNJbWFnZSAqV2ViQ29udGV4dE1lbnVDbGllbnQ6OnJlbmRlcmVkSW1hZ2VGb3JDb250
cm9sbGVkSW1hZ2UoKSBjb25zdAorUmV0YWluUHRyPE5TSW1hZ2U+IFdlYkNvbnRleHRNZW51Q2xp
ZW50OjppbWFnZUZvckN1cnJlbnRTaGFyaW5nU2VydmljZVBpY2tlckl0ZW0oV2ViU2hhcmluZ1Nl
cnZpY2VQaWNrZXJDb250cm9sbGVyICYpCiB7CiAgICAgUGFnZSogcGFnZSA9IFttX3dlYlZpZXcg
cGFnZV07CiAgICAgaWYgKCFwYWdlKQpAQCAtNDU1LDExICs0NzAsMTAgQEAgTlNJbWFnZSAqV2Vi
Q29udGV4dE1lbnVDbGllbnQ6OnJlbmRlcmVkSW1hZ2VGb3JDb250cm9sbGVkSW1hZ2UoKSBjb25z
dAogICAgIGZyYW1lVmlldy0+c2V0UGFpbnRCZWhhdmlvcihvbGRQYWludEJlaGF2aW9yKTsKIAog
ICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2UgPSBidWZmZXItPmNvcHlJbWFnZShEb250Q29weUJhY2tp
bmdTdG9yZSk7Ci0gICAgcmV0dXJuIFtbaW1hZ2UtPmdldE5TSW1hZ2UoKSByZXRhaW5dIGF1dG9y
ZWxlYXNlXTsKKyAgICByZXR1cm4gaW1hZ2UtPmdldE5TSW1hZ2UoKTsKIH0KICNlbmRpZgogCi0K
IE5TTWVudSAqV2ViQ29udGV4dE1lbnVDbGllbnQ6OmNvbnRleHRNZW51Rm9yRXZlbnQoTlNFdmVu
dCAqZXZlbnQsIE5TVmlldyAqdmlldywgYm9vbCYgaXNTZXJ2aWNlc01lbnUpCiB7CiAgICAgaXNT
ZXJ2aWNlc01lbnUgPSBmYWxzZTsKQEAgLTQ3MiwxMiArNDg2LDEwIEBAIE5TTWVudSAqV2ViQ29u
dGV4dE1lbnVDbGllbnQ6OmNvbnRleHRNZW51Rm9yRXZlbnQoTlNFdmVudCAqZXZlbnQsIE5TVmll
dyAqdmlldywKICAgICBpZiAoSW1hZ2UqIGltYWdlID0gcGFnZS0+Y29udGV4dE1lbnVDb250cm9s
bGVyKCkuY29udGV4dCgpLmNvbnRyb2xsZWRJbWFnZSgpKSB7CiAgICAgICAgIEFTU0VSVChwYWdl
LT5jb250ZXh0TWVudUNvbnRyb2xsZXIoKS5jb250ZXh0KCkuaGl0VGVzdFJlc3VsdCgpLmlubmVy
Tm9kZSgpKTsKIAotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhID0gaW1hZ2UtPmRh
dGEoKTsKLSAgICAgICAgQVNTRVJUKGRhdGEpOwotICAgICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVm
PiBjZkRhdGEgPSBkYXRhLT5jcmVhdGVDRkRhdGEoKTsKKyAgICAgICAgUmV0YWluUHRyPE5TSXRl
bVByb3ZpZGVyPiBpdGVtUHJvdmlkZXIgPSBhZG9wdE5TKFtbTlNJdGVtUHJvdmlkZXIgYWxsb2Nd
IGluaXRXaXRoSXRlbTppbWFnZS0+Z2V0TlNJbWFnZSgpIHR5cGVJZGVudGlmaWVyOkAicHVibGlj
LmltYWdlIl0pOwogCiAgICAgICAgIGJvb2wgaXNDb250ZW50RWRpdGFibGUgPSBwYWdlLT5jb250
ZXh0TWVudUNvbnRyb2xsZXIoKS5jb250ZXh0KCkuaGl0VGVzdFJlc3VsdCgpLmlubmVyTm9kZSgp
LT5pc0NvbnRlbnRFZGl0YWJsZSgpOwotICAgICAgICBtX3NoYXJpbmdTZXJ2aWNlUGlja2VyQ29u
dHJvbGxlciA9IGFkb3B0TlMoW1tXZWJTaGFyaW5nU2VydmljZVBpY2tlckNvbnRyb2xsZXIgYWxs
b2NdIGluaXRXaXRoRGF0YTooTlNEYXRhICopY2ZEYXRhLmdldCgpIGluY2x1ZGVFZGl0b3JTZXJ2
aWNlczppc0NvbnRlbnRFZGl0YWJsZSBtZW51Q2xpZW50OnRoaXNdKTsKKyAgICAgICAgbV9zaGFy
aW5nU2VydmljZVBpY2tlckNvbnRyb2xsZXIgPSBhZG9wdE5TKFtbV2ViU2hhcmluZ1NlcnZpY2VQ
aWNrZXJDb250cm9sbGVyIGFsbG9jXSBpbml0V2l0aEl0ZW1zOkBbIGl0ZW1Qcm92aWRlci5nZXQo
KSBdIGluY2x1ZGVFZGl0b3JTZXJ2aWNlczppc0NvbnRlbnRFZGl0YWJsZSBjbGllbnQ6dGhpcyBz
dHlsZTpOU1NoYXJpbmdTZXJ2aWNlUGlja2VyU3R5bGVSb2xsb3Zlcl0pOwogCiAgICAgICAgIGlz
U2VydmljZXNNZW51ID0gdHJ1ZTsKICAgICAgICAgcmV0dXJuIFttX3NoYXJpbmdTZXJ2aWNlUGlj
a2VyQ29udHJvbGxlciBtZW51XTsKQEAgLTUxMywxMSArNTI1LDQgQEAgdm9pZCBXZWJDb250ZXh0
TWVudUNsaWVudDo6c2hvd0NvbnRleHRNZW51KCkKICAgICB9CiB9CiAKLSNpZiBFTkFCTEUoU0VS
VklDRV9DT05UUk9MUykKLXZvaWQgV2ViQ29udGV4dE1lbnVDbGllbnQ6OmNsZWFyU2hhcmluZ1Nl
cnZpY2VQaWNrZXJDb250cm9sbGVyKCkKLXsKLSAgICBtX3NoYXJpbmdTZXJ2aWNlUGlja2VyQ29u
dHJvbGxlciA9IG5pbDsKLX0KLSNlbmRpZgotCiAjZW5kaWYgLy8gIVBMQVRGT1JNKElPUykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlNlbGVjdGlvblNl
cnZpY2VDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJT
ZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLmQ4MWJiZTAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJTZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxlci5oCkBAIC0wLDAgKzEsNjcg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlNlbGVjdGlvblNlcnZpY2VDb250cm9sbGVyX2gK
KyNkZWZpbmUgV2ViU2VsZWN0aW9uU2VydmljZUNvbnRyb2xsZXJfaAorCisjaWYgRU5BQkxFKFNF
UlZJQ0VfQ09OVFJPTFMpCisKKyNpbXBvcnQgIldlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ29udHJv
bGxlci5oIgorI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorI2ltcG9ydCA8d3RmL1ZlY3Rvci5o
PgorI2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK09CSkNfQ0xBU1MgTlNJbWFnZTsK
K09CSkNfQ0xBU1MgTlNXaW5kb3c7CitPQkpDX0NMQVNTIFdlYlZpZXc7CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKK2NsYXNzIEZyYW1lU2VsZWN0aW9uOworY2xhc3MgSW50UG9pbnQ7Cit9CisKK2Ns
YXNzIFdlYlNlbGVjdGlvblNlcnZpY2VDb250cm9sbGVyIDogcHVibGljIFdlYlNoYXJpbmdTZXJ2
aWNlUGlja2VyQ2xpZW50IHsKK3B1YmxpYzoKKyAgICBXZWJTZWxlY3Rpb25TZXJ2aWNlQ29udHJv
bGxlcihXZWJWaWV3Kik7CisKKyAgICB2b2lkIGhhbmRsZVNlbGVjdGlvblNlcnZpY2VDbGljayhX
ZWJDb3JlOjpGcmFtZVNlbGVjdGlvbiYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB0ZWxlcGhvbmVO
dW1iZXJzLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpOworICAgIGJvb2wgaGFzUmVsZXZhbnRT
ZWxlY3Rpb25TZXJ2aWNlcyhib29sIGlzVGV4dE9ubHkpIGNvbnN0OworCisgICAgLy8gV2ViU2hh
cmluZ1NlcnZpY2VQaWNrZXJDbGllbnQKKyAgICB2aXJ0dWFsIHZvaWQgc2hhcmluZ1NlcnZpY2VQ
aWNrZXJXaWxsQmVEZXN0cm95ZWQoV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDb250cm9sbGVyICYp
IG92ZXJyaWRlOworICAgIHZpcnR1YWwgV2ViQ29yZTo6UGFnZSogcGFnZUZvclNoYXJpbmdTZXJ2
aWNlUGlja2VyKFdlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ29udHJvbGxlciAmKSBvdmVycmlkZTsK
KyAgICB2aXJ0dWFsIFJldGFpblB0cjxOU1dpbmRvdz4gd2luZG93Rm9yU2hhcmluZ1NlcnZpY2VQ
aWNrZXIoV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDb250cm9sbGVyICYpIG92ZXJyaWRlOworICAg
IHZpcnR1YWwgV2ViQ29yZTo6RmxvYXRSZWN0IHNjcmVlblJlY3RGb3JDdXJyZW50U2hhcmluZ1Nl
cnZpY2VQaWNrZXJJdGVtKFdlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ29udHJvbGxlciAmKSBvdmVy
cmlkZTsKKyAgICB2aXJ0dWFsIFJldGFpblB0cjxOU0ltYWdlPiBpbWFnZUZvckN1cnJlbnRTaGFy
aW5nU2VydmljZVBpY2tlckl0ZW0oV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDb250cm9sbGVyICYp
IG92ZXJyaWRlOworCitwcml2YXRlOgorICAgIFdlYlZpZXcgKm1fd2ViVmlldzsKKworICAgIFJl
dGFpblB0cjxXZWJTaGFyaW5nU2VydmljZVBpY2tlckNvbnRyb2xsZXI+IG1fc2hhcmluZ1NlcnZp
Y2VQaWNrZXJDb250cm9sbGVyOworfTsKKworI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX0NPTlRS
T0xTKQorCisjZW5kaWYgLy8gV2ViU2VsZWN0aW9uU2VydmljZUNvbnRyb2xsZXJfaApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViU2VsZWN0aW9uU2Vydmlj
ZUNvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJTZWxl
Y3Rpb25TZXJ2aWNlQ29udHJvbGxlci5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi4xZGQyNGNiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViU2VsZWN0aW9uU2VydmljZUNvbnRyb2xsZXIubW0KQEAgLTAsMCArMSwxMjkg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJXZWJTZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxlci5o
IgorCisjaWYgRU5BQkxFKFNFUlZJQ0VfQ09OVFJPTFMpCisKKyNpbXBvcnQgIldlYlZpZXdJbnRl
cm5hbC5oIgorI2ltcG9ydCA8V2ViQ29yZS9GcmFtZVNlbGVjdGlvbi5oPgorI2ltcG9ydCA8V2Vi
Q29yZS9IVE1MQ29udmVydGVyLmg+CisjaW1wb3J0IDxXZWJDb3JlL1JhbmdlLmg+CisjaW1wb3J0
IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKKyNp
ZiBfX2hhc19pbmNsdWRlKDxBcHBLaXQvTlNTaGFyaW5nU2VydmljZV9Qcml2YXRlLmg+KQorI2lt
cG9ydCA8QXBwS2l0L05TU2hhcmluZ1NlcnZpY2VfUHJpdmF0ZS5oPgorI2Vsc2UKK3R5cGVkZWYg
TlNfRU5VTShOU0ludGVnZXIsIE5TU2hhcmluZ1NlcnZpY2VQaWNrZXJTdHlsZSkgeworICAgIE5T
U2hhcmluZ1NlcnZpY2VQaWNrZXJTdHlsZU1lbnUgPSAwLAorICAgIE5TU2hhcmluZ1NlcnZpY2VQ
aWNrZXJTdHlsZVJvbGxvdmVyID0gMSwKKyAgICBOU1NoYXJpbmdTZXJ2aWNlUGlja2VyU3R5bGVU
ZXh0U2VsZWN0aW9uID0gMiwKKyAgICBOU1NoYXJpbmdTZXJ2aWNlUGlja2VyU3R5bGVEYXRhRGV0
ZWN0b3IgPSAzCit9IE5TX0VOVU1fQVZBSUxBQkxFX01BQygxMF8xMCk7CisjZW5kaWYKKworV2Vi
U2VsZWN0aW9uU2VydmljZUNvbnRyb2xsZXI6OldlYlNlbGVjdGlvblNlcnZpY2VDb250cm9sbGVy
KFdlYlZpZXcgKndlYlZpZXcpIAorICAgIDogbV93ZWJWaWV3KHdlYlZpZXcpCit7Cit9CisKK3Zv
aWQgV2ViU2VsZWN0aW9uU2VydmljZUNvbnRyb2xsZXI6OmhhbmRsZVNlbGVjdGlvblNlcnZpY2VD
bGljayhXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbiYgc2VsZWN0aW9uLCBjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgdGVsZXBob25lTnVtYmVycywgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvaW50KQor
eworICAgIFBhZ2UqIHBhZ2UgPSBbbV93ZWJWaWV3IHBhZ2VdOworICAgIGlmICghcGFnZSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IHNlbGVjdGlvbi5zZWxl
Y3Rpb24oKS5maXJzdFJhbmdlKCk7CisgICAgaWYgKCFyYW5nZSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgUmV0YWluUHRyPE5TQXR0cmlidXRlZFN0cmluZz4gYXR0cmlidXRlZFNlbGVjdGlvbiA9
IGF0dHJpYnV0ZWRTdHJpbmdGcm9tUmFuZ2UoKnJhbmdlKTsKKyAgICBpZiAoIWF0dHJpYnV0ZWRT
ZWxlY3Rpb24pCisgICAgICAgIHJldHVybjsKKworICAgIE5TQXJyYXkgKml0ZW1zID0gQFsgYXR0
cmlidXRlZFNlbGVjdGlvbi5nZXQoKSBdOworCisgICAgYm9vbCBpc0VkaXRhYmxlID0gc2VsZWN0
aW9uLnNlbGVjdGlvbigpLmlzQ29udGVudEVkaXRhYmxlKCk7CisgICAgbV9zaGFyaW5nU2Vydmlj
ZVBpY2tlckNvbnRyb2xsZXIgPSBhZG9wdE5TKFtbV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDb250
cm9sbGVyIGFsbG9jXSBpbml0V2l0aEl0ZW1zOml0ZW1zIGluY2x1ZGVFZGl0b3JTZXJ2aWNlczpp
c0VkaXRhYmxlIGNsaWVudDp0aGlzIHN0eWxlOk5TU2hhcmluZ1NlcnZpY2VQaWNrZXJTdHlsZVRl
eHRTZWxlY3Rpb25dKTsKKworICAgIFJldGFpblB0cjxOU01lbnU+IG1lbnUgPSBhZG9wdE5TKFtb
bV9zaGFyaW5nU2VydmljZVBpY2tlckNvbnRyb2xsZXIgbWVudV0gY29weV0pOworCisgICAgW21l
bnUgc2V0U2hvd3NTdGF0ZUNvbHVtbjpZRVNdOworCisgICAgW21lbnUgcG9wVXBNZW51UG9zaXRp
b25pbmdJdGVtOm5pbCBhdExvY2F0aW9uOlttX3dlYlZpZXcgY29udmVydFBvaW50OnBvaW50IHRv
VmlldzpuaWxdIGluVmlldzptX3dlYlZpZXddOworfQorCitzdGF0aWMgYm9vbCBoYXNDb21wYXRp
YmxlU2VydmljZXNGb3JJdGVtcyhOU0FycmF5ICppdGVtcykKK3sKKyAgICByZXR1cm4gW05TU2hh
cmluZ1NlcnZpY2Ugc2hhcmluZ1NlcnZpY2VzRm9ySXRlbXM6aXRlbXMgbWFzazpOU1NoYXJpbmdT
ZXJ2aWNlTWFza1ZpZXdlciB8IE5TU2hhcmluZ1NlcnZpY2VNYXNrRWRpdG9yXS5jb3VudDsKK30K
KworYm9vbCBXZWJTZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxlcjo6aGFzUmVsZXZhbnRTZWxlY3Rp
b25TZXJ2aWNlcyhib29sIGlzVGV4dE9ubHkpIGNvbnN0Cit7CisgICAgUmV0YWluUHRyPE5TQXR0
cmlidXRlZFN0cmluZz4gYXR0cmlidXRlZFN0cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRT
dHJpbmcgYWxsb2NdIGluaXRXaXRoU3RyaW5nOkAiYSJdKTsKKworICAgIGJvb2wgaGFzU2VsZWN0
aW9uU2VydmljZXMgPSBoYXNDb21wYXRpYmxlU2VydmljZXNGb3JJdGVtcyhAWyBhdHRyaWJ1dGVk
U3RyaW5nLmdldCgpIF0pOworICAgIGlmIChpc1RleHRPbmx5ICYmIGhhc1NlbGVjdGlvblNlcnZp
Y2VzKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIE5TVGV4dEF0dGFjaG1lbnQgKmF0dGFj
aG1lbnQgPSBbW05TVGV4dEF0dGFjaG1lbnQgYWxsb2NdIGluaXRdOworICAgIFJldGFpblB0cjxO
U0ltYWdlPiBpbWFnZSA9IGFkb3B0TlMoW1tOU0ltYWdlIGFsbG9jXSBpbml0XSk7CisgICAgTlNU
ZXh0QXR0YWNobWVudENlbGwgKmNlbGwgPSBbW05TVGV4dEF0dGFjaG1lbnRDZWxsIGFsbG9jXSBp
bml0SW1hZ2VDZWxsOmltYWdlLmdldCgpXTsKKyAgICBbYXR0YWNobWVudCBzZXRBdHRhY2htZW50
Q2VsbDpjZWxsXTsKKyAgICBSZXRhaW5QdHI8TlNNdXRhYmxlQXR0cmlidXRlZFN0cmluZz4gYXR0
cmlidXRlZFN0cmluZ1dpdGhSaWNoQ29udGVudCA9IGFkb3B0TlMoKE5TTXV0YWJsZUF0dHJpYnV0
ZWRTdHJpbmcgKilbTlNNdXRhYmxlQXR0cmlidXRlZFN0cmluZyBhdHRyaWJ1dGVkU3RyaW5nV2l0
aEF0dGFjaG1lbnQ6YXR0YWNobWVudF0pOworICAgIFthdHRyaWJ1dGVkU3RyaW5nV2l0aFJpY2hD
b250ZW50IGFwcGVuZEF0dHJpYnV0ZWRTdHJpbmc6YXR0cmlidXRlZFN0cmluZy5nZXQoKV07CisK
KyAgICBib29sIGhhc1JpY2hDb250ZW50U2VydmljZXMgPSBoYXNDb21wYXRpYmxlU2VydmljZXNG
b3JJdGVtcyhAWyBhdHRyaWJ1dGVkU3RyaW5nV2l0aFJpY2hDb250ZW50LmdldCgpIF0pOworICAg
IHJldHVybiBoYXNSaWNoQ29udGVudFNlcnZpY2VzOworfQorCit2b2lkIFdlYlNlbGVjdGlvblNl
cnZpY2VDb250cm9sbGVyOjpzaGFyaW5nU2VydmljZVBpY2tlcldpbGxCZURlc3Ryb3llZChXZWJT
aGFyaW5nU2VydmljZVBpY2tlckNvbnRyb2xsZXIgJikKK3sKKyAgICBtX3NoYXJpbmdTZXJ2aWNl
UGlja2VyQ29udHJvbGxlciA9IG5pbDsKK30KKworV2ViQ29yZTo6UGFnZSogV2ViU2VsZWN0aW9u
U2VydmljZUNvbnRyb2xsZXI6OnBhZ2VGb3JTaGFyaW5nU2VydmljZVBpY2tlcihXZWJTaGFyaW5n
U2VydmljZVBpY2tlckNvbnRyb2xsZXIgJikKK3sKKyAgICByZXR1cm4gW21fd2ViVmlldyBwYWdl
XTsKK30KKworUmV0YWluUHRyPE5TV2luZG93PiBXZWJTZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxl
cjo6d2luZG93Rm9yU2hhcmluZ1NlcnZpY2VQaWNrZXIoV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJD
b250cm9sbGVyICYpCit7CisgICAgcmV0dXJuIFttX3dlYlZpZXcgd2luZG93XTsKK30KKworRmxv
YXRSZWN0IFdlYlNlbGVjdGlvblNlcnZpY2VDb250cm9sbGVyOjpzY3JlZW5SZWN0Rm9yQ3VycmVu
dFNoYXJpbmdTZXJ2aWNlUGlja2VySXRlbShXZWJTaGFyaW5nU2VydmljZVBpY2tlckNvbnRyb2xs
ZXIgJikKK3sKKyAgICByZXR1cm4gRmxvYXRSZWN0KCk7Cit9CisKK1JldGFpblB0cjxOU0ltYWdl
PiBXZWJTZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxlcjo6aW1hZ2VGb3JDdXJyZW50U2hhcmluZ1Nl
cnZpY2VQaWNrZXJJdGVtKFdlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ29udHJvbGxlciAmKQorewor
ICAgIHJldHVybiBuaWw7Cit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9t
YWMvV2ViVmlldy9XZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3
Lm1tCmluZGV4IDFjMjIyOTkuLjgyZjY5NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFj
L1dlYlZpZXcvV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZp
ZXcubW0KQEAgLTk3LDYgKzk3LDcgQEAKICNpbXBvcnQgIldlYlByb2dyZXNzVHJhY2tlckNsaWVu
dC5oIgogI2ltcG9ydCAiV2ViU2NyaXB0RGVidWdEZWxlZ2F0ZS5oIgogI2ltcG9ydCAiV2ViU2Ny
aXB0V29ybGRJbnRlcm5hbC5oIgorI2ltcG9ydCAiV2ViU2VsZWN0aW9uU2VydmljZUNvbnRyb2xs
ZXIuaCIKICNpbXBvcnQgIldlYlN0b3JhZ2VNYW5hZ2VySW50ZXJuYWwuaCIKICNpbXBvcnQgIldl
YlN5c3RlbUludGVyZmFjZS5oIgogI2ltcG9ydCAiV2ViVGV4dENvbXBsZXRpb25Db250cm9sbGVy
LmgiCkBAIC04NDkxLDYgKzg0OTIsMTUgQEAgc3RhdGljIHZvaWQgZ2xpYkNvbnRleHRJdGVyYXRp
b25DYWxsYmFjayhDRlJ1bkxvb3BPYnNlcnZlclJlZiwgQ0ZSdW5Mb29wQWN0aXZpdHkKIH0KICNl
bmRpZgogCisjaWYgRU5BQkxFKFNFUlZJQ0VfQ09OVFJPTFMpCistIChXZWJTZWxlY3Rpb25TZXJ2
aWNlQ29udHJvbGxlciYpX3NlbGVjdGlvblNlcnZpY2VDb250cm9sbGVyCit7CisgICAgaWYgKCFf
cHJpdmF0ZS0+X3NlbGVjdGlvblNlcnZpY2VDb250cm9sbGVyKQorICAgICAgICBfcHJpdmF0ZS0+
X3NlbGVjdGlvblNlcnZpY2VDb250cm9sbGVyID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJTZWxlY3Rp
b25TZXJ2aWNlQ29udHJvbGxlcj4oc2VsZik7CisgICAgcmV0dXJuICpfcHJpdmF0ZS0+X3NlbGVj
dGlvblNlcnZpY2VDb250cm9sbGVyOworfQorI2VuZGlmCisKIC0gKE5TUG9pbnQpX2NvbnZlcnRQ
b2ludEZyb21Sb290VmlldzooTlNQb2ludClwb2ludAogewogICAgIHJldHVybiBOU01ha2VQb2lu
dChwb2ludC54LCBbc2VsZiBib3VuZHNdLnNpemUuaGVpZ2h0IC0gcG9pbnQueSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdEYXRhLmggYi9Tb3VyY2UvV2Vi
S2l0L21hYy9XZWJWaWV3L1dlYlZpZXdEYXRhLmgKaW5kZXggYTBiZTY4MS4uZTMyY2QyMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3RGF0YS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld0RhdGEuaApAQCAtODIsNiArODIsNyBAQCBl
eHRlcm4gaW50IHBsdWdpbkRhdGFiYXNlQ2xpZW50Q291bnQ7CiAKIGNsYXNzIExheWVyRmx1c2hD
b250cm9sbGVyOwogY2xhc3MgV2ViVmlld0dyb3VwOworY2xhc3MgV2ViU2VsZWN0aW9uU2Vydmlj
ZUNvbnRyb2xsZXI7CiAKIGNsYXNzIFdlYlZpZXdMYXllckZsdXNoU2NoZWR1bGVyIDogcHVibGlj
IFdlYkNvcmU6OkxheWVyRmx1c2hTY2hlZHVsZXIgewogcHVibGljOgpAQCAtMjcwLDYgKzI3MSwx
MCBAQCBwcml2YXRlOgogICAgIGlkPFdlYlVzZXJNZWRpYUNsaWVudD4gbV91c2VyTWVkaWFDbGll
bnQ7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShTRVJWSUNFX0NPTlRST0xTKQorICAgIHN0ZDo6dW5p
cXVlX3B0cjxXZWJTZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxlcj4gX3NlbGVjdGlvblNlcnZpY2VD
b250cm9sbGVyOworI2VuZGlmCisKICAgICBSZWZQdHI8V2ViQ29yZTo6SGlzdG9yeUl0ZW0+IF9n
bG9iYWxIaXN0b3J5SXRlbTsKIAogICAgIEJPT0wgaW50ZXJhY3RpdmVGb3JtVmFsaWRhdGlvbkVu
YWJsZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdEYXRh
Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3RGF0YS5tbQppbmRleCBlMDYz
NmE1Li5iN2NiYWUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZp
ZXdEYXRhLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld0RhdGEubW0K
QEAgLTMxLDYgKzMxLDcgQEAKIAogI2ltcG9ydCAiV2ViS2l0TG9nZ2luZy5oIgogI2ltcG9ydCAi
V2ViUHJlZmVyZW5jZUtleXNQcml2YXRlLmgiCisjaW1wb3J0ICJXZWJTZWxlY3Rpb25TZXJ2aWNl
Q29udHJvbGxlci5oIgogI2ltcG9ydCAiV2ViVmlld0dyb3VwLmgiCiAjaW1wb3J0IDxXZWJDb3Jl
L0FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3Jl
T2JqQ0V4dHJhcy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJW
aWV3SW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld0ludGVybmFs
LmgKaW5kZXggOTgzOTc0Ni4uMTJhNDNiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMv
V2ViVmlldy9XZWJWaWV3SW50ZXJuYWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3
L1dlYlZpZXdJbnRlcm5hbC5oCkBAIC01Niw2ICs1Niw4IEBAIGNsYXNzIFJlbmRlckJveDsKIGNs
YXNzIEhUTUxWaWRlb0VsZW1lbnQ7CiBzdHJ1Y3QgRGljdGF0aW9uQWx0ZXJuYXRpdmU7CiB9CisK
K2NsYXNzIFdlYlNlbGVjdGlvblNlcnZpY2VDb250cm9sbGVyOwogI2VuZGlmCiAKIEBjbGFzcyBX
ZWJCYXNlUGx1Z2luUGFja2FnZTsKQEAgLTExOSw2ICsxMjEsMTAgQEAgT0JKQ19DTEFTUyBOU1Rl
eHRBbHRlcm5hdGl2ZXM7CiAtIChWZWN0b3I8U3RyaW5nPilfZGljdGF0aW9uQWx0ZXJuYXRpdmVz
Oih1aW50NjRfdClkaWN0YXRpb25Db250ZXh0OwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoU0VSVklD
RV9DT05UUk9MUykKKy0gKFdlYlNlbGVjdGlvblNlcnZpY2VDb250cm9sbGVyJilfc2VsZWN0aW9u
U2VydmljZUNvbnRyb2xsZXI7CisjZW5kaWYKKwogQGVuZAogCiAjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRl
eCBhOTlhYjA4Li43ODljNGUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMjEgQEAKIDIwMTQtMTAt
MDkgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKKyAgICAgICAgSW1w
bGVtZW50IHNlbGVjdGlvbiBzZXJ2aWNlcyBtZW51IGZvciBMZWdhY3kgV2ViS2l0CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzc1ODIKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzE4NjA0MjQxPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogVUlQcm9jZXNzL21hYy9XZWJDb250ZXh0TWVudVByb3h5TWFj
Lm1tOgorICAgICAgICAoLVtXS1NoYXJpbmdTZXJ2aWNlUGlja2VyRGVsZWdhdGUgc2hhcmluZ1Nl
cnZpY2U6ZGlkU2hhcmVJdGVtczpdKToKKyAgICAgICAgQWxsb3cgZWRpdG9yIHNlcnZpY2VzIGlu
IGVkaXRhYmxlLWJ1dC1ub3QtcmljaC10ZXh0IGFyZWFzLCBqdXN0IGxpa2UgaW4gV2ViS2l0MS4K
KworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZTo6aGFuZGxlU2VsZWN0aW9uU2VydmljZUNsaWNrKToKKyAgICAg
ICAgQWRkIGEgbm90ZSB0aGF0IHdlIHNob3VsZCB0cmFuc2l0aW9uIHRvIHVzaW5nIHJlcGxhY2VT
ZWxlY3Rpb25XaXRoQXR0cmlidXRlZFN0cmluZy4KKworMjAxNC0xMC0wOSAgVGltIEhvcnRvbiAg
PHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KKwogICAgICAgICBNb3ZlIFNlcnZpY2VzT3Zlcmxh
eUNvbnRyb2xsZXIgdG8gV2ViQ29yZQogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTM3NDE2CiAgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xODU0NjI4Mz4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViQ29udGV4dE1lbnVQ
cm94eU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViQ29udGV4dE1lbnVQ
cm94eU1hYy5tbQppbmRleCA0ZTFjM2NjLi41OGFkOTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvbWFjL1dlYkNvbnRleHRNZW51UHJveHlNYWMubW0KKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJDb250ZXh0TWVudVByb3h5TWFjLm1tCkBAIC0yNzUs
NiArMjc1LDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKKyAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGFkb3B0IHJlcGxhY2VTZWxlY3Rpb25XaXRo
QXR0cmlidXRlZFN0cmluZyBpbnN0ZWFkIG9mIGJvdW5jaW5nIHRocm91Z2ggdGhlIChmYWtlKSBw
YXN0ZWJvYXJkLgogICAgIF9tZW51UHJveHktPnBhZ2UoKS5yZXBsYWNlU2VsZWN0aW9uV2l0aFBh
c3RlYm9hcmREYXRhKHR5cGVzLCBkYXRhUmVmZXJlbmNlKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCmluZGV4IGU0YTVm
NmQuLmUwYjU1ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9tYWMvV2ViUGFnZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvbWFjL1dlYlBhZ2VNYWMubW0KQEAgLTEwMzksNyArMTAzOSw3IEBAIHZvaWQgV2ViUGFnZTo6
aGFuZGxlU2VsZWN0aW9uU2VydmljZUNsaWNrKEZyYW1lU2VsZWN0aW9uJiBzZWxlY3Rpb24sIGNv
bnN0IFZlY3RvCiAKICAgICBOU0RhdGEgKnNlbGVjdGlvbkRhdGEgPSBbYXR0cmlidXRlZFNlbGVj
dGlvbiBSVEZERnJvbVJhbmdlOk5TTWFrZVJhbmdlKDAsIFthdHRyaWJ1dGVkU2VsZWN0aW9uIGxl
bmd0aF0pIGRvY3VtZW50QXR0cmlidXRlczpuaWxdOwogICAgIElQQzo6RGF0YVJlZmVyZW5jZSBk
YXRhID0gSVBDOjpEYXRhUmVmZXJlbmNlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+
KFtzZWxlY3Rpb25EYXRhIGJ5dGVzXSksIFtzZWxlY3Rpb25EYXRhIGxlbmd0aF0pOwotICAgIGJv
b2wgaXNFZGl0YWJsZSA9IHNlbGVjdGlvbi5zZWxlY3Rpb24oKS5pc0NvbnRlbnRSaWNobHlFZGl0
YWJsZSgpOworICAgIGJvb2wgaXNFZGl0YWJsZSA9IHNlbGVjdGlvbi5zZWxlY3Rpb24oKS5pc0Nv
bnRlbnRFZGl0YWJsZSgpOwogCiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTaG93
U2VsZWN0aW9uU2VydmljZU1lbnUoZGF0YSwgcGhvbmVOdW1iZXJzLCBpc0VkaXRhYmxlLCBwb2lu
dCkpOwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>239893</attachid>
            <date>2014-10-15 13:45:53 -0700</date>
            <delta_ts>2014-10-16 12:59:03 -0700</delta_ts>
            <desc>try to fix mavericks/ml build</desc>
            <filename>services-wk1.diff</filename>
            <type>text/plain</type>
            <size>46627</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAwNmNjZDRjLi5kMzM0ZTViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEg
QEAKKzIwMTQtMTAtMTUgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgSW1wbGVtZW50IHNlbGVjdGlvbiBzZXJ2aWNlcyBtZW51IGZvciBMZWdhY3kgV2Vi
S2l0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzc1
ODIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzE4NjA0MjQxPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZS5leHAuaW46CisgICAgICAg
ICogZWRpdGluZy9FZGl0b3IuaDoKKyAgICAgICAgKiBlZGl0aW5nL2lvcy9FZGl0b3JJT1MubW06
CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnJlcGxhY2VTZWxlY3Rpb25XaXRoQXR0cmlidXRl
ZFN0cmluZyk6CisgICAgICAgICogZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tOgorICAgICAgICAo
V2ViQ29yZTo6RWRpdG9yOjpyZXBsYWNlU2VsZWN0aW9uV2l0aEF0dHJpYnV0ZWRTdHJpbmcpOgor
ICAgICAgICBBZGQgcmVwbGFjZVNlbGVjdGlvbldpdGhBdHRyaWJ1dGVkU3RyaW5nLCB3aGljaCBy
ZXBsYWNlcyB0aGUgc2VsZWN0aW9uCisgICAgICAgIHdpdGggdGhlIGdpdmVuIGF0dHJpYnV0ZWQg
c3RyaW5nIChjb252ZXJ0aW5nIHRvIHBsYWluIHRleHQgaWYgdGhlIGRlc3RpbmF0aW9uCisgICAg
ICAgIGlzIG5vdCByaWNobHkgZWRpdGFibGUpLgorCiAyMDE0LTEwLTE1ICBDaHJpcyBEdW1leiAg
PGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgVXNlIGlzPD4oKSAvIGRvd25jYXN0PD4oKSBm
b3IgUmVuZGVyVGV4dENvbnRyb2wgLyBSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5leHAuaW4KaW5kZXggZDE1NDEzMS4uM2YyY2RkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5leHAuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4K
QEAgLTEyNTAsNiArMTI1MCw3IEBAIF9fWk43V2ViQ29yZTZFZGl0b3IzM2luY3JlYXNlU2VsZWN0
aW9uTGlzdExldmVsT3JkZXJlZEV2CiBfX1pON1dlYkNvcmU2RWRpdG9yMzRzZXRNYXJrZWRUZXh0
TWF0Y2hlc0FyZUhpZ2hsaWdodGVkRWIKIF9fWk43V2ViQ29yZTZFZGl0b3IzNWluY3JlYXNlU2Vs
ZWN0aW9uTGlzdExldmVsVW5vcmRlcmVkRXYKIF9fWk43V2ViQ29yZTZFZGl0b3IzNXNldElnbm9y
ZUNvbXBvc2l0aW9uU2VsZWN0aW9uQ2hhbmdlRWIKK19fWk43V2ViQ29yZTZFZGl0b3IzNnJlcGxh
Y2VTZWxlY3Rpb25XaXRoQXR0cmlidXRlZFN0cmluZ0VQMThOU0F0dHJpYnV0ZWRTdHJpbmdOU18y
Mk1haWxCbG9ja3F1b3RlSGFuZGxpbmdFCiBfX1pON1dlYkNvcmU2RWRpdG9yMzhjb21tYW5kSXNT
dXBwb3J0ZWRGcm9tTWVudU9yS2V5QmluZGluZ0VSS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29y
ZTZFZGl0b3IzOWluc2VydFBhcmFncmFwaFNlcGFyYXRvckluUXVvdGVkQ29udGVudEV2CiBfX1pO
N1dlYkNvcmU2RWRpdG9yM2N1dEV2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0VkaXRvci5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaAppbmRleCBlOGM5MWQz
Li45YjE0NGIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKQEAgLTQzMiw3ICs0MzIsNyBAQCBw
dWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlbmRlclN0eWxlKiBzdHlsZUZvclNl
bGVjdGlvblN0YXJ0KEZyYW1lKiAsIE5vZGUgKiZub2RlVG9SZW1vdmUpOwogICAgIFdFQkNPUkVf
RVhQT1JUIGJvb2wgaW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9ySW5RdW90ZWRDb250ZW50KCk7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgU2ltcGxlRm9udERhdGEqIGZvbnRGb3JTZWxlY3Rpb24o
Ym9vbCYpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIE5TRGljdGlvbmFyeSogZm9udEF0dHJp
YnV0ZXNGb3JTZWxlY3Rpb25TdGFydCgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIE5TRGlj
dGlvbmFyeSAqZm9udEF0dHJpYnV0ZXNGb3JTZWxlY3Rpb25TdGFydCgpIGNvbnN0OwogICAgIFdF
QkNPUkVfRVhQT1JUIFN0cmluZyBzdHJpbmdTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKCk7CiAgICAg
U3RyaW5nIHN0cmluZ1NlbGVjdGlvbkZvclBhc3RlYm9hcmRXaXRoSW1hZ2VBbHRUZXh0KCk7CiAj
aWYgIVBMQVRGT1JNKElPUykKQEAgLTQ0Miw2ICs0NDIsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCByZXBsYWNlTm9kZUZyb21QYXN0ZWJvYXJkKE5vZGUqLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lKTsKICAgICBXRUJDT1JFX0VYUE9SVCBQYXNzUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSk7CiAjZW5kaWYgLy8gIVBMQVRGT1JNKElPUykKKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHJlcGxhY2VTZWxlY3Rpb25XaXRoQXR0cmlidXRlZFN0cmluZyhOU0F0dHJpYnV0ZWRTdHJp
bmcgKiwgTWFpbEJsb2NrcXVvdGVIYW5kbGluZyA9IE1haWxCbG9ja3F1b3RlSGFuZGxpbmc6OlJl
c3BlY3RCbG9ja3F1b3RlKTsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFBMQVRG
T1JNKEVGTCkgfHwgUExBVEZPUk0oR1RLKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9pb3MvRWRpdG9ySU9TLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRWRpdG9y
SU9TLm1tCmluZGV4IGI4YjBmYzUuLjAxOTJkNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvaW9zL0VkaXRvcklPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lv
cy9FZGl0b3JJT1MubW0KQEAgLTYyNSw0ICs2MjUsMjAgQEAgUGFzc1JlZlB0cjxEb2N1bWVudEZy
YWdtZW50PiBFZGl0b3I6OmNyZWF0ZUZyYWdtZW50Rm9ySW1hZ2VSZXNvdXJjZUFuZEFkZFJlc291
cmMKICAgICByZXR1cm4gZnJhZ21lbnQucmVsZWFzZSgpOwogfQogCit2b2lkIEVkaXRvcjo6cmVw
bGFjZVNlbGVjdGlvbldpdGhBdHRyaWJ1dGVkU3RyaW5nKE5TQXR0cmlidXRlZFN0cmluZyAqYXR0
cmlidXRlZFN0cmluZywgTWFpbEJsb2NrcXVvdGVIYW5kbGluZyBtYWlsQmxvY2txdW90ZUhhbmRs
aW5nKQoreworICAgIGlmIChtX2ZyYW1lLnNlbGVjdGlvbigpLmlzTm9uZSgpKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBpZiAobV9mcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5pc0NvbnRl
bnRSaWNobHlFZGl0YWJsZSgpKSB7CisgICAgICAgIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBm
cmFnbWVudCA9IGNyZWF0ZUZyYWdtZW50QW5kQWRkUmVzb3VyY2VzKGF0dHJpYnV0ZWRTdHJpbmcp
OworICAgICAgICBpZiAoZnJhZ21lbnQgJiYgc2hvdWxkSW5zZXJ0RnJhZ21lbnQoZnJhZ21lbnQs
IHNlbGVjdGVkUmFuZ2UoKSwgRWRpdG9ySW5zZXJ0QWN0aW9uUGFzdGVkKSkKKyAgICAgICAgICAg
IHBhc3RlQXNGcmFnbWVudChmcmFnbWVudCwgZmFsc2UsIGZhbHNlLCBtYWlsQmxvY2txdW90ZUhh
bmRsaW5nKTsKKyAgICB9IGVsc2UgeworICAgICAgICBTdHJpbmcgdGV4dCA9IFthdHRyaWJ1dGVk
U3RyaW5nIHN0cmluZ107CisgICAgICAgIGlmIChzaG91bGRJbnNlcnRUZXh0KHRleHQsIHNlbGVj
dGVkUmFuZ2UoKS5nZXQoKSwgRWRpdG9ySW5zZXJ0QWN0aW9uUGFzdGVkKSkKKyAgICAgICAgICAg
IHBhc3RlQXNQbGFpblRleHQodGV4dCwgZmFsc2UpOworICAgIH0KK30KKwogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9y
TWFjLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tCmluZGV4IDE4
MGE0ZjAuLjZlNDE5MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0Vk
aXRvck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0K
QEAgLTY2Niw0ICs2NjYsMjAgQEAgUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBFZGl0b3I6
OmNyZWF0ZUZyYWdtZW50QW5kQWRkUmVzb3VyY2VzKE5TQXR0cmlidXRlZFMKICAgICByZXR1cm4g
ZnJhZ21lbnQucmVsZWFzZSgpOwogfQogCit2b2lkIEVkaXRvcjo6cmVwbGFjZVNlbGVjdGlvbldp
dGhBdHRyaWJ1dGVkU3RyaW5nKE5TQXR0cmlidXRlZFN0cmluZyAqYXR0cmlidXRlZFN0cmluZywg
TWFpbEJsb2NrcXVvdGVIYW5kbGluZyBtYWlsQmxvY2txdW90ZUhhbmRsaW5nKQoreworICAgIGlm
IChtX2ZyYW1lLnNlbGVjdGlvbigpLmlzTm9uZSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBp
ZiAobV9mcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5pc0NvbnRlbnRSaWNobHlFZGl0YWJs
ZSgpKSB7CisgICAgICAgIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBmcmFnbWVudCA9IGNyZWF0
ZUZyYWdtZW50QW5kQWRkUmVzb3VyY2VzKGF0dHJpYnV0ZWRTdHJpbmcpOworICAgICAgICBpZiAo
ZnJhZ21lbnQgJiYgc2hvdWxkSW5zZXJ0RnJhZ21lbnQoZnJhZ21lbnQsIHNlbGVjdGVkUmFuZ2Uo
KSwgRWRpdG9ySW5zZXJ0QWN0aW9uUGFzdGVkKSkKKyAgICAgICAgICAgIHBhc3RlQXNGcmFnbWVu
dChmcmFnbWVudCwgZmFsc2UsIGZhbHNlLCBtYWlsQmxvY2txdW90ZUhhbmRsaW5nKTsKKyAgICB9
IGVsc2UgeworICAgICAgICBTdHJpbmcgdGV4dCA9IFthdHRyaWJ1dGVkU3RyaW5nIHN0cmluZ107
CisgICAgICAgIGlmIChzaG91bGRJbnNlcnRUZXh0KHRleHQsIHNlbGVjdGVkUmFuZ2UoKS5nZXQo
KSwgRWRpdG9ySW5zZXJ0QWN0aW9uUGFzdGVkKSkKKyAgICAgICAgICAgIHBhc3RlQXNQbGFpblRl
eHQodGV4dCwgZmFsc2UpOworICAgIH0KK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwppbmRleCA4MTU3NDk0Li44YzkzZGI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE0
LTEwLTE1ICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgorCisgICAgICAg
IEltcGxlbWVudCBzZWxlY3Rpb24gc2VydmljZXMgbWVudSBmb3IgTGVnYWN5IFdlYktpdAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM3NTgyCisgICAg
ICAgIDxyZGFyOi8vcHJvYmxlbS8xODYwNDI0MT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OgorCiAyMDE0LTEwLTE0ICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgogCiAg
ICAgICAgIFtXaW5dIFVucmV2aWV3ZWQgZ2FyZGVuaW5nLiBJZ25vcmUgVmlzdWFsIFN0dWRpbyAq
LnNkZiBmaWxlcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCmluZGV4IDUwNDQ2ODguLmU2YWI4MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJL
aXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtODEsNiArODEsOCBAQAogCQkyOUFFRjk2
MDEzNEM3NkZCMDBGRTUwOTYgLyogT3V0bG9va1F1aXJrc1VzZXJTY3JpcHQuanMgaW4gUmVzb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI5QUVGOTVEMTM0Qzc1NTQw
MEZFNTA5NiAvKiBPdXRsb29rUXVpcmtzVXNlclNjcmlwdC5qcyAqLzsgfTsKIAkJMkQyNTM5NjYx
OENFODVDMjAwMjcwMjIyIC8qIFdlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ29udHJvbGxlci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQyNTM5NjQxOENF
ODVDMjAwMjcwMjIyIC8qIFdlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ29udHJvbGxlci5oICovOyB9
OwogCQkyRDI1Mzk2NzE4Q0U4NUMyMDAyNzAyMjIgLyogV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJD
b250cm9sbGVyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMkQyNTM5NjUxOENFODVDMjAwMjcwMjIyIC8qIFdlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ29u
dHJvbGxlci5tbSAqLzsgfTsKKwkJMkRENjMyQzIxOUU1RDFGMDAwMkU5QzdCIC8qIFdlYlNlbGVj
dGlvblNlcnZpY2VDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAyREQ2MzJDMDE5RTVEMUYwMDAyRTlDN0IgLyogV2ViU2VsZWN0aW9uU2Vy
dmljZUNvbnRyb2xsZXIuaCAqLzsgfTsKKwkJMkRENjMyQzMxOUU1RDFGMDAwMkU5QzdCIC8qIFdl
YlNlbGVjdGlvblNlcnZpY2VDb250cm9sbGVyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMkRENjMyQzExOUU1RDFGMDAwMkU5QzdCIC8qIFdlYlNlbGVj
dGlvblNlcnZpY2VDb250cm9sbGVyLm1tICovOyB9OwogCQkzMTJFMkZFNTE0RTQ4MTgyMDA3Q0NB
MTggLyogV2ViTm90aWZpY2F0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAzMTJFMkZFMzE0RTQ4MTgyMDA3Q0NBMTggLyogV2ViTm90aWZpY2F0aW9u
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMzEy
RTJGRTYxNEU0ODE4MjAwN0NDQTE4IC8qIFdlYk5vdGlmaWNhdGlvbi5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxMkUyRkU0MTRFNDgxODIwMDdDQ0Ex
OCAvKiBXZWJOb3RpZmljYXRpb24ubW0gKi87IH07CiAJCTMxMkUyRkU5MTRFNDgyMTUwMDdDQ0Ex
OCAvKiBXZWJOb3RpZmljYXRpb25JbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMzEyRTJGRTgxNEU0ODIxNTAwN0NDQTE4IC8qIFdlYk5vdGlm
aWNhdGlvbkludGVybmFsLmggKi87IH07CkBAIC00NTcsNyArNDU5LDcgQEAKIAkJMEFFQkZGNjEw
RjlGQThCRTAwMEQ0ODZCIC8qIFdlYk5ldHNjYXBlQ29udGFpbmVyQ2hlY2tQcml2YXRlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBmaWxlRW5jb2RpbmcgPSA0OyBwYXRoID0gV2ViTmV0c2NhcGVDb250YWluZXJDaGVja1By
aXZhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEFFQkZGNjIwRjlGQThCRTAw
MEQ0ODZCIC8qIFdlYk5ldHNjYXBlQ29udGFpbmVyQ2hlY2tQcml2YXRlLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViTmV0c2NhcGVDb250YWluZXJDaGVja1By
aXZhdGUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0RDgyNTJEMEFGOTU1MDkw
MDA0RjA1NyAvKiBXZWJDaHJvbWVDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdlYkNocm9tZUNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkx
NEQ4MjUyRTBBRjk1NTA5MDAwNEYwNTcgLyogV2ViQ2hyb21lQ2xpZW50Lm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkNocm9tZUNsaWVudC5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTREODI1MkUwQUY5NTUwOTAwMDRGMDU3IC8qIFdlYkNo
cm9tZUNsaWVudC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdl
YkNocm9tZUNsaWVudC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUEyREJFOUQw
RjI1MUUzQTAwMzZGOEE2IC8qIFByb3h5SW5zdGFuY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gUHJveHlJbnN0YW5jZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkxQTJEQkU5RTBGMjUxRTNBMDAzNkY4QTYgLyogUHJveHlJbnN0YW5jZS5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFByb3h5SW5zdGFuY2UubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBNERGNTIwMEVDOEM3NEQwMDZCRDRCNCAvKiBXZWJOZXRz
Y2FwZVBsdWdpblZpZXcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViTmV0
c2NhcGVQbHVnaW5WaWV3Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01MjYsNiAr
NTI4LDggQEAKIAkJMkQzNkZENUUwM0Y3OEY5RTAwQTgwMTY2IC8qIFdlYkZvcm1EZWxlZ2F0ZVBy
aXZhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBp
bmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXZWJGb3JtRGVsZWdhdGVQcml2YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldp
ZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OwogCQkyRDgxREFCMjAzRUIwQjJEMDBBODAxNjYgLyog
V2ViRm9ybURlbGVnYXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdlYkZvcm1EZWxlZ2F0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0
YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKIAkJMkQ4MURBQjMwM0VCMEIyRDAwQTgwMTY2
IC8qIFdlYkZvcm1EZWxlZ2F0ZS5tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLm9iamM7IHBhdGggPSBXZWJGb3JtRGVsZWdhdGUubTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CisJCTJERDYzMkMwMTlFNUQxRjAw
MDJFOUM3QiAvKiBXZWJTZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXZWJTZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyREQ2MzJDMTE5RTVEMUYwMDAyRTlDN0IgLyogV2Vi
U2VsZWN0aW9uU2VydmljZUNvbnRyb2xsZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBXZWJTZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxlci5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzEyRTJGRTMxNEU0ODE4MjAwN0NDQTE4IC8qIFdlYk5vdGlm
aWNhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJOb3RpZmljYXRp
b24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzEyRTJGRTQxNEU0ODE4MjAwN0ND
QTE4IC8qIFdlYk5vdGlmaWNhdGlvbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IFdlYk5vdGlmaWNhdGlvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMzEyRTJGRTgxNEU0ODIxNTAwN0NDQTE4IC8qIFdlYk5vdGlmaWNhdGlvbkludGVybmFsLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYk5vdGlmaWNhdGlvbkludGVybmFs
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNTU0LDYgKzE1NTgsOCBAQAogCQkJ
CUE1REVGQzA3MTFENTMzMUMwMDg4NTI3MyAvKiBXZWJTZWN1cml0eU9yaWdpbi5tbSAqLywKIAkJ
CQlBNURFRkMwODExRDUzMzFDMDA4ODUyNzMgLyogV2ViU2VjdXJpdHlPcmlnaW5JbnRlcm5hbC5o
ICovLAogCQkJCUE1REVGQzA5MTFENTMzMUMwMDg4NTI3MyAvKiBXZWJTZWN1cml0eU9yaWdpblBy
aXZhdGUuaCAqLywKKwkJCQkyREQ2MzJDMDE5RTVEMUYwMDAyRTlDN0IgLyogV2ViU2VsZWN0aW9u
U2VydmljZUNvbnRyb2xsZXIuaCAqLywKKwkJCQkyREQ2MzJDMTE5RTVEMUYwMDAyRTlDN0IgLyog
V2ViU2VsZWN0aW9uU2VydmljZUNvbnRyb2xsZXIubW0gKi8sCiAJCQkJOTNFQjE3OEUwOUY4OEQ1
MTAwOTFGOEZGIC8qIFdlYlN5c3RlbUludGVyZmFjZS5oICovLAogCQkJCTkzRUIxNzhDMDlGODhE
NDYwMDkxRjhGRiAvKiBXZWJTeXN0ZW1JbnRlcmZhY2UubW0gKi8sCiAJCQkJMUFCMURBQzAxOEJD
MDIzMjAwNEI2QTlGIC8qIFdlYlZpZXdHcm91cC5oICovLApAQCAtMTY3NCw2ICsxNjgwLDcgQEAK
IAkJCQk3QzAxQ0I4NzE3MzQzNUM5MDBDNUQ4MDcgLyogU2VhcmNoUG9wdXBNZW51TWFjLmggaW4g
SGVhZGVycyAqLywKIAkJCQlBMTBDMUQ2RjE4MjAzMDBFMDAzNjg4M0EgLyogV2ViR2VvbG9jYXRp
b25JbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0VEQTEyREMxNTJDQkU2ODAwRDlFMDhE
IC8qIFdlYkFsdGVybmF0aXZlVGV4dENsaWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMkRENjMy
QzIxOUU1RDFGMDAwMkU5QzdCIC8qIFdlYlNlbGVjdGlvblNlcnZpY2VDb250cm9sbGVyLmggaW4g
SGVhZGVycyAqLywKIAkJCQlCNkNFNUMyNTEwMEJDNUY1MDAyMTk5MzYgLyogV2ViQXBwbGljYXRp
b25DYWNoZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTEwQzFENzIxODIwMzAwRTAwMzY4ODNBIC8q
IFdlYk1JTUVUeXBlUmVnaXN0cnkuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1REVGQzEzMTFENTM0
NEIwMDg4NTI3MyAvKiBXZWJBcHBsaWNhdGlvbkNhY2hlUXVvdGFNYW5hZ2VyLmggaW4gSGVhZGVy
cyAqLywKQEAgLTIxMTUsNiArMjEyMiw3IEBACiAJCQkJMUNDRkZEMTMwQjFGODFGMjAwMkVFOTI2
IC8qIE9sZFdlYkFzc2VydGlvbnMuYyBpbiBTb3VyY2VzICovLAogCQkJCUExMEMxRDhFMTgyMDMw
NUUwMDM2ODgzQSAvKiBXZWJQREZWaWV3UGxhY2Vob2xkZXIubW0gaW4gU291cmNlcyAqLywKIAkJ
CQk3QzAxQ0I4NjE3MzQzNUM5MDBDNUQ4MDcgLyogUG9wdXBNZW51TWFjLm1tIGluIFNvdXJjZXMg
Ki8sCisJCQkJMkRENjMyQzMxOUU1RDFGMDAwMkU5QzdCIC8qIFdlYlNlbGVjdGlvblNlcnZpY2VD
b250cm9sbGVyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQTEwQzFENzcxODIwMzAwRTAwMzY4ODNB
IC8qIFdlYlZpc2libGVQb3NpdGlvbi5tbSBpbiBTb3VyY2VzICovLAogCQkJCTFBMkRCRUEwMEYy
NTFFM0EwMDM2RjhBNiAvKiBQcm94eUluc3RhbmNlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMDcw
RjU0OUMxN0YxRTQyQjAwMTY5RTA0IC8qIFdlYlVzZXJNZWRpYUNsaWVudC5tbSBpbiBTb3VyY2Vz
ICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IGVmNzMzMDQuLjNhODdjZTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSw4NSBAQAorMjAxNC0xMC0xNSAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9y
dG9uQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgc2VsZWN0aW9uIHNlcnZpY2VzIG1l
bnUgZm9yIExlZ2FjeSBXZWJLaXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEzNzU4MgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTg2MDQyNDE+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBNaXNjL1dl
YlNoYXJpbmdTZXJ2aWNlUGlja2VyQ29udHJvbGxlci5oOgorICAgICAgICBNb3ZlIFNQSSBpbnRv
IHRoZSBoZWFkZXIgKGluIHRoZSBuZWFyIGZ1dHVyZSBpdCB3aWxsIGJlIG1vdmVkIHRvIGEgbW9k
ZXJuLXN0eWxlIFNQSSBoZWFkZXIpLgorICAgICAgICBBZGQgV2ViU2hhcmluZ1NlcnZpY2VQaWNr
ZXJDbGllbnQsIHdoaWNoIG90aGVyIGNsYXNzZXMgY2FuIGltcGxlbWVudAorICAgICAgICBpbnN0
ZWFkIG9mIHR5aW5nIFdlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ29udHJvbGxlciBzdHJvbmdseSB0
byBXZWJDb250ZXh0TWVudUNsaWVudC4KKyAgICAgICAgTWFrZSBpbml0V2l0aERhdGE6Li4uIC0+
IGluaXRXaXRoSXRlbXM6Li4uIGluc3RlYWQsIHRha2luZyBhbiBhcnJheSBvZiBOU0l0ZW1Qcm92
aWRlcnMuCisKKyAgICAgICAgKiBNaXNjL1dlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ29udHJvbGxl
ci5tbToKKyAgICAgICAgUGFzcyBpbiBOU1NoYXJpbmdTZXJ2aWNlUGlja2VyU3R5bGUsIHNvIHRo
YXQgY2xpZW50cyBjYW4gc3BlY2lmeSB0aGUgc3R5bGUuCisKKyAgICAgICAgKC1bV2ViU2hhcmlu
Z1NlcnZpY2VQaWNrZXJDb250cm9sbGVyIGNsZWFyXSk6CisgICAgICAgICgtW1dlYlNoYXJpbmdT
ZXJ2aWNlUGlja2VyQ29udHJvbGxlciBkaWRTaGFyZUltYWdlRGF0YTpjb25maXJtRGF0YUlzVmFs
aWRUSUZGRGF0YTpdKToKKyAgICAgICAgKC1bV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDb250cm9s
bGVyIHNoYXJpbmdTZXJ2aWNlUGlja2VyOmRpZENob29zZVNoYXJpbmdTZXJ2aWNlOl0pOgorICAg
ICAgICAoLVtXZWJTaGFyaW5nU2VydmljZVBpY2tlckNvbnRyb2xsZXIgc2hhcmluZ1NlcnZpY2U6
c291cmNlRnJhbWVPblNjcmVlbkZvclNoYXJlSXRlbTpdKToKKyAgICAgICAgKC1bV2ViU2hhcmlu
Z1NlcnZpY2VQaWNrZXJDb250cm9sbGVyIHNoYXJpbmdTZXJ2aWNlOnRyYW5zaXRpb25JbWFnZUZv
clNoYXJlSXRlbTpjb250ZW50UmVjdDpdKToKKyAgICAgICAgKC1bV2ViU2hhcmluZ1NlcnZpY2VQ
aWNrZXJDb250cm9sbGVyIHNoYXJpbmdTZXJ2aWNlOnNvdXJjZVdpbmRvd0ZvclNoYXJlSXRlbXM6
c2hhcmluZ0NvbnRlbnRTY29wZTpdKToKKyAgICAgICAgTWFrZSB1c2Ugb2YgV2ViU2hhcmluZ1Nl
cnZpY2VQaWNrZXJDbGllbnQuCisKKyAgICAgICAgKC1bV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJD
b250cm9sbGVyIHNoYXJpbmdTZXJ2aWNlOmRpZFNoYXJlSXRlbXM6XSk6CisgICAgICAgIElmIHdl
J3JlIHJldHVybmVkIGEgTlNBdHRyaWJ1dGVkU3RyaW5nLCBwYXN0ZSBpdCBvbiB0b3Agb2YgdGhl
IGN1cnJlbnQgc2VsZWN0aW9uLAorICAgICAgICBzaW1pbGFyIHRvIHdoYXQgdGhlIFdlYktpdDIg
aW1wbGVtZW50YXRpb24gY3VycmVudGx5IGRvZXMuCisgICAgICAgIAorICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dl
YkNocm9tZUNsaWVudC5tbToKKyAgICAgICAgKFdlYkNocm9tZUNsaWVudDo6aGFuZGxlVGVsZXBo
b25lTnVtYmVyQ2xpY2spOgorICAgICAgICAoV2ViQ2hyb21lQ2xpZW50OjpoYW5kbGVTZWxlY3Rp
b25TZXJ2aWNlQ2xpY2spOgorICAgICAgICAoV2ViQ2hyb21lQ2xpZW50OjpoYXNSZWxldmFudFNl
bGVjdGlvblNlcnZpY2VzKToKKyAgICAgICAgT3ZlcnJpZGUgdGhlIHNlcnZpY2VzLXJlbGF0ZWQg
Q2hyb21lQ2xpZW50IGZ1bmN0aW9ucywgZm9yd2FyZCB0aGVtIHRvIFdlYlNlbGVjdGlvblNlcnZp
Y2VDb250cm9sbGVyLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVD
bGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5t
bToKKyAgICAgICAgKFdlYkNvbnRleHRNZW51Q2xpZW50OjpzaGFyaW5nU2VydmljZVBpY2tlcldp
bGxCZURlc3Ryb3llZCk6CisgICAgICAgIChXZWJDb250ZXh0TWVudUNsaWVudDo6cGFnZUZvclNo
YXJpbmdTZXJ2aWNlUGlja2VyKToKKyAgICAgICAgKFdlYkNvbnRleHRNZW51Q2xpZW50Ojp3aW5k
b3dGb3JTaGFyaW5nU2VydmljZVBpY2tlcik6CisgICAgICAgIChXZWJDb250ZXh0TWVudUNsaWVu
dDo6c2NyZWVuUmVjdEZvckN1cnJlbnRTaGFyaW5nU2VydmljZVBpY2tlckl0ZW0pOgorICAgICAg
ICAoV2ViQ29udGV4dE1lbnVDbGllbnQ6OmltYWdlRm9yQ3VycmVudFNoYXJpbmdTZXJ2aWNlUGlj
a2VySXRlbSk6CisgICAgICAgIChXZWJDb250ZXh0TWVudUNsaWVudDo6Y29udGV4dE1lbnVGb3JF
dmVudCk6CisgICAgICAgIChXZWJDb250ZXh0TWVudUNsaWVudDo6c2NyZWVuUmVjdEZvckhpdFRl
c3ROb2RlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvbnRleHRNZW51Q2xpZW50OjpyZW5kZXJl
ZEltYWdlRm9yQ29udHJvbGxlZEltYWdlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvbnRleHRN
ZW51Q2xpZW50OjpjbGVhclNoYXJpbmdTZXJ2aWNlUGlja2VyQ29udHJvbGxlcik6IERlbGV0ZWQu
CisgICAgICAgIEhhdmUgV2ViQ29udGV4dE1lbnVDbGllbnQgaW1wbGVtZW50IFdlYlNoYXJpbmdT
ZXJ2aWNlUGlja2VyQ2xpZW50IHRvIGF2b2lkCisgICAgICAgIGhhdmluZyBXZWJTaGFyaW5nU2Vy
dmljZVBpY2tlckNvbnRyb2xsZXIgdGlnaHRseSBib3VuZCB0byBpdC4KKyAgICAgICAgTWFrZSBh
biBOU0l0ZW1Qcm92aWRlciBhcnJheSB3aGVuIGluc3RhbnRpYXRpbmcgV2ViU2hhcmluZ1NlcnZp
Y2VQaWNrZXJDb250cm9sbGVyCisgICAgICAgIGluc3RlYWQgb2YgaGFuZGluZyBpdCBkYXRhIGRp
cmVjdGx5LgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViU2VsZWN0aW9uU2VydmljZUNv
bnRyb2xsZXIuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViQ29udGV4dE1lbnVDbGllbnQuaC4KKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJTZWxl
Y3Rpb25TZXJ2aWNlQ29udHJvbGxlci5tbTogQWRkZWQuCisgICAgICAgIChXZWJTZWxlY3Rpb25T
ZXJ2aWNlQ29udHJvbGxlcjo6V2ViU2VsZWN0aW9uU2VydmljZUNvbnRyb2xsZXIpOgorICAgICAg
ICBBZGQgV2ViU2VsZWN0aW9uU2VydmljZUNvbnRyb2xsZXIsIHdoaWNoIHdpbGwgYWN0IGFzIHRo
ZSBXZWJTaGFyaW5nU2VydmljZVBpY2tlckNsaWVudAorICAgICAgICBmb3Igc2VsZWN0aW9uIHNl
cnZpY2VzLgorCisgICAgICAgIChXZWJTZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxlcjo6aGFuZGxl
U2VsZWN0aW9uU2VydmljZUNsaWNrKToKKyAgICAgICAgQ3JlYXRlIGEgV2ViU2hhcmluZ1Nlcmlj
ZVBpY2tlckNvbnRyb2xsZXIgd2l0aCB0aGUgc2VsZWN0aW9uJ3MgYXR0cmlidXRlZCBzdHJpbmcs
IGFuZCBzaG93IGl0cyBtZW51LgorCisgICAgICAgIChoYXNDb21wYXRpYmxlU2VydmljZXNGb3JJ
dGVtcyk6CisgICAgICAgIChXZWJTZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxlcjo6aGFzUmVsZXZh
bnRTZWxlY3Rpb25TZXJ2aWNlcyk6CisgICAgICAgIERldGVybWluZSB3aGV0aGVyIG9yIG5vdCBz
ZXJ2aWNlcyBhcmUgYXZhaWxhYmxlLgorCisgICAgICAgIChXZWJTZWxlY3Rpb25TZXJ2aWNlQ29u
dHJvbGxlcjo6c2hhcmluZ1NlcnZpY2VQaWNrZXJXaWxsQmVEZXN0cm95ZWQpOgorICAgICAgICAo
V2ViU2VsZWN0aW9uU2VydmljZUNvbnRyb2xsZXI6OnBhZ2VGb3JTaGFyaW5nU2VydmljZVBpY2tl
cik6CisgICAgICAgIChXZWJTZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxlcjo6d2luZG93Rm9yU2hh
cmluZ1NlcnZpY2VQaWNrZXIpOgorICAgICAgICBJbXBsZW1lbnQgdGhlIHJlc3Qgb2YgdGhlIFdl
YlNoYXJpbmdTZXJ2aWNlUGlja2VyQ2xpZW50IG92ZXJyaWRlcy4KKworICAgICAgICAoV2ViU2Vs
ZWN0aW9uU2VydmljZUNvbnRyb2xsZXI6OnNjcmVlblJlY3RGb3JDdXJyZW50U2hhcmluZ1NlcnZp
Y2VQaWNrZXJJdGVtKToKKyAgICAgICAgKFdlYlNlbGVjdGlvblNlcnZpY2VDb250cm9sbGVyOjpp
bWFnZUZvckN1cnJlbnRTaGFyaW5nU2VydmljZVBpY2tlckl0ZW0pOgorICAgICAgICBUaGVzZSBh
cmUgb25seSB1c2VmdWwgZm9yIGltYWdlIHNoYXJpbmcgc2VydmljZXMsIHNvIHdlIGRvbid0IG5l
ZWQgdG8KKyAgICAgICAgaW1wbGVtZW50IHRoZW0gKFdlYkNvbnRleHRNZW51Q2xpZW50IGRvZXMs
IG9uIHRoZSBvdGhlciBoYW5kKS4KKworICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAg
ICAgICAgKC1bV2ViVmlldyBfc2VsZWN0aW9uU2VydmljZUNvbnRyb2xsZXJdKToKKyAgICAgICAg
KiBXZWJWaWV3L1dlYlZpZXdEYXRhLmg6CisgICAgICAgICogV2ViVmlldy9XZWJWaWV3RGF0YS5t
bToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXdJbnRlcm5hbC5oOgorICAgICAgICBLZWVwIGEg
V2ViU2VsZWN0aW9uU2VydmljZUNvbnRyb2xsZXIuCisKIDIwMTQtMTAtMTQgIE15bGVzIEMuIE1h
eGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KIAogICAgICAgICBJbXByb3ZlIGRlYnVnIGRl
c2NyaXB0aW9uIG9mIFdBS1ZpZXdzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9NaXNj
L1dlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ29udHJvbGxlci5oIGIvU291cmNlL1dlYktpdC9tYWMv
TWlzYy9XZWJTaGFyaW5nU2VydmljZVBpY2tlckNvbnRyb2xsZXIuaAppbmRleCA4YWE4YTlkLi5h
YjMzYWZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9NaXNjL1dlYlNoYXJpbmdTZXJ2
aWNlUGlja2VyQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViU2hh
cmluZ1NlcnZpY2VQaWNrZXJDb250cm9sbGVyLmgKQEAgLTI4LDE4ICsyOCw1NSBAQAogI2ltcG9y
dCA8d3RmL1JldGFpblB0ci5oPgogCiBAY2xhc3MgTlNTaGFyaW5nU2VydmljZVBpY2tlcjsKK0Bj
bGFzcyBXZWJTaGFyaW5nU2VydmljZVBpY2tlckNvbnRyb2xsZXI7CiBAcHJvdG9jb2wgTlNTaGFy
aW5nU2VydmljZURlbGVnYXRlOwogQHByb3RvY29sIE5TU2hhcmluZ1NlcnZpY2VQaWNrZXJEZWxl
Z2F0ZTsKIAorI2lmIF9faGFzX2luY2x1ZGUoPEFwcEtpdC9OU1NoYXJpbmdTZXJ2aWNlX1ByaXZh
dGUuaD4pCisjaW1wb3J0IDxBcHBLaXQvTlNTaGFyaW5nU2VydmljZV9Qcml2YXRlLmg+CisjZWxz
ZQordHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgTlNTaGFyaW5nU2VydmljZVBpY2tlclN0eWxl
KSB7CisgICAgTlNTaGFyaW5nU2VydmljZVBpY2tlclN0eWxlTWVudSA9IDAsCisgICAgTlNTaGFy
aW5nU2VydmljZVBpY2tlclN0eWxlUm9sbG92ZXIgPSAxLAorICAgIE5TU2hhcmluZ1NlcnZpY2VQ
aWNrZXJTdHlsZVRleHRTZWxlY3Rpb24gPSAyLAorICAgIE5TU2hhcmluZ1NlcnZpY2VQaWNrZXJT
dHlsZURhdGFEZXRlY3RvciA9IDMKK30gTlNfRU5VTV9BVkFJTEFCTEVfTUFDKDEwXzEwKTsKKwor
dHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgTlNTaGFyaW5nU2VydmljZVR5cGUpIHsKKyAgICBO
U1NoYXJpbmdTZXJ2aWNlVHlwZVNoYXJlID0gMCwKKyAgICBOU1NoYXJpbmdTZXJ2aWNlVHlwZVZp
ZXdlciA9IDEsCisgICAgTlNTaGFyaW5nU2VydmljZVR5cGVFZGl0b3IgPSAyCit9IE5TX0VOVU1f
QVZBSUxBQkxFX01BQygxMF8xMCk7CisKK3R5cGVkZWYgTlNVSW50ZWdlciBOU1NoYXJpbmdTZXJ2
aWNlTWFzazsKKyNlbmRpZgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBGbG9hdFJlY3Q7
CitjbGFzcyBQYWdlOworfQorCiBjbGFzcyBXZWJDb250ZXh0TWVudUNsaWVudDsKIAorY2xhc3Mg
V2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDbGllbnQgeworcHVibGljOgorICAgIHZpcnR1YWwgfldl
YlNoYXJpbmdTZXJ2aWNlUGlja2VyQ2xpZW50KCkgeyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgc2hh
cmluZ1NlcnZpY2VQaWNrZXJXaWxsQmVEZXN0cm95ZWQoV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJD
b250cm9sbGVyICYpID0gMDsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OlBhZ2UqIHBhZ2VGb3JTaGFy
aW5nU2VydmljZVBpY2tlcihXZWJTaGFyaW5nU2VydmljZVBpY2tlckNvbnRyb2xsZXIgJikgPSAw
OworICAgIHZpcnR1YWwgUmV0YWluUHRyPE5TV2luZG93PiB3aW5kb3dGb3JTaGFyaW5nU2Vydmlj
ZVBpY2tlcihXZWJTaGFyaW5nU2VydmljZVBpY2tlckNvbnRyb2xsZXIgJikgPSAwOworCisgICAg
dmlydHVhbCBXZWJDb3JlOjpGbG9hdFJlY3Qgc2NyZWVuUmVjdEZvckN1cnJlbnRTaGFyaW5nU2Vy
dmljZVBpY2tlckl0ZW0oV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDb250cm9sbGVyICYpID0gMDsK
KyAgICB2aXJ0dWFsIFJldGFpblB0cjxOU0ltYWdlPiBpbWFnZUZvckN1cnJlbnRTaGFyaW5nU2Vy
dmljZVBpY2tlckl0ZW0oV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDb250cm9sbGVyICYpID0gMDsK
K307CisKIEBpbnRlcmZhY2UgV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDb250cm9sbGVyIDogTlNP
YmplY3QgPE5TU2hhcmluZ1NlcnZpY2VEZWxlZ2F0ZSwgTlNTaGFyaW5nU2VydmljZVBpY2tlckRl
bGVnYXRlPiB7Ci0gICAgV2ViQ29udGV4dE1lbnVDbGllbnQqIF9tZW51Q2xpZW50OworICAgIFdl
YlNoYXJpbmdTZXJ2aWNlUGlja2VyQ2xpZW50KiBfcGlja2VyQ2xpZW50OwogICAgIFJldGFpblB0
cjxOU1NoYXJpbmdTZXJ2aWNlUGlja2VyPiBfcGlja2VyOwogICAgIEJPT0wgX2luY2x1ZGVFZGl0
b3JTZXJ2aWNlczsKIH0KIAotLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRGF0YTooTlNEYXRhICop
ZGF0YSBpbmNsdWRlRWRpdG9yU2VydmljZXM6KEJPT0wpaW5jbHVkZUVkaXRvclNlcnZpY2VzIG1l
bnVDbGllbnQ6KFdlYkNvbnRleHRNZW51Q2xpZW50KiltZW51Q2xpZW50OworLSAoaW5zdGFuY2V0
eXBlKWluaXRXaXRoSXRlbXM6KE5TQXJyYXkgKilpdGVtcyBpbmNsdWRlRWRpdG9yU2VydmljZXM6
KEJPT0wpaW5jbHVkZUVkaXRvclNlcnZpY2VzIGNsaWVudDooV2ViU2hhcmluZ1NlcnZpY2VQaWNr
ZXJDbGllbnQqKXBpY2tlckNsaWVudCBzdHlsZTooTlNTaGFyaW5nU2VydmljZVBpY2tlclN0eWxl
KXN0eWxlOwogLSAoTlNNZW51ICopbWVudTsKIC0gKHZvaWQpZGlkU2hhcmVJbWFnZURhdGE6KE5T
RGF0YSAqKWRhdGEgY29uZmlybURhdGFJc1ZhbGlkVElGRkRhdGE6KEJPT0wpY29uZmlybURhdGE7
CiAtICh2b2lkKWNsZWFyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvTWlzYy9XZWJT
aGFyaW5nU2VydmljZVBpY2tlckNvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9NaXNj
L1dlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ29udHJvbGxlci5tbQppbmRleCBiZWFiMGNjLi4wOTc2
MDhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9NaXNjL1dlYlNoYXJpbmdTZXJ2aWNl
UGlja2VyQ29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9NaXNjL1dlYlNoYXJp
bmdTZXJ2aWNlUGlja2VyQ29udHJvbGxlci5tbQpAQCAtMzksMjAgKzM5LDYgQEAKICNpbXBvcnQg
PFdlYkNvcmUvQ29udGV4dE1lbnVDb250cm9sbGVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BhZ2Uu
aD4KIAotI2lmIF9faGFzX2luY2x1ZGUoPEFwcEtpdC9OU1NoYXJpbmdTZXJ2aWNlX1ByaXZhdGUu
aD4pCi0jaW1wb3J0IDxBcHBLaXQvTlNTaGFyaW5nU2VydmljZV9Qcml2YXRlLmg+Ci0jZWxzZQot
dHlwZWRlZiBlbnVtIHsKLSAgICBOU1NoYXJpbmdTZXJ2aWNlUGlja2VyU3R5bGVSb2xsb3ZlciA9
IDEKLX0gTlNTaGFyaW5nU2VydmljZVBpY2tlclN0eWxlOwotCi10eXBlZGVmIGVudW0gewotICAg
IE5TU2hhcmluZ1NlcnZpY2VUeXBlRWRpdG9yID0gMgotfSBOU1NoYXJpbmdTZXJ2aWNlVHlwZTsK
LQotdHlwZWRlZiBOU1VJbnRlZ2VyIE5TU2hhcmluZ1NlcnZpY2VNYXNrOwotI2VuZGlmCi0KIEBp
bnRlcmZhY2UgTlNTaGFyaW5nU2VydmljZVBpY2tlciAoUHJpdmF0ZSkKIEBwcm9wZXJ0eSBOU1No
YXJpbmdTZXJ2aWNlUGlja2VyU3R5bGUgc3R5bGU7CiAtIChOU01lbnUgKiltZW51OwpAQCAtNzks
NyArNjUsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogQGltcGxlbWVudGF0aW9uIFdl
YlNoYXJpbmdTZXJ2aWNlUGlja2VyQ29udHJvbGxlcgogCi0tIChpbnN0YW5jZXR5cGUpaW5pdFdp
dGhEYXRhOihOU0RhdGEgKilkYXRhIGluY2x1ZGVFZGl0b3JTZXJ2aWNlczooQk9PTClpbmNsdWRl
RWRpdG9yU2VydmljZXMgbWVudUNsaWVudDooV2ViQ29udGV4dE1lbnVDbGllbnQqKW1lbnVDbGll
bnQKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aEl0ZW1zOihOU0FycmF5ICopaXRlbXMgaW5jbHVk
ZUVkaXRvclNlcnZpY2VzOihCT09MKWluY2x1ZGVFZGl0b3JTZXJ2aWNlcyBjbGllbnQ6KFdlYlNo
YXJpbmdTZXJ2aWNlUGlja2VyQ2xpZW50KilwaWNrZXJDbGllbnQgc3R5bGU6KE5TU2hhcmluZ1Nl
cnZpY2VQaWNrZXJTdHlsZSlzdHlsZQogewogI2lmbmRlZiBfX0xQNjRfXwogICAgIHJldHVybiBu
aWw7CkBAIC04NywxNCArNzMsMTIgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAgICAgaWYg
KCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBSZXRh
aW5QdHI8TlNJdGVtUHJvdmlkZXI+IGl0ZW1Qcm92aWRlciA9IGFkb3B0TlMoW1tOU0l0ZW1Qcm92
aWRlciBhbGxvY10gaW5pdFdpdGhJdGVtOmRhdGEgdHlwZUlkZW50aWZpZXI6QCJwdWJsaWMuZGF0
YSJdKTsKLQotICAgIF9waWNrZXIgPSBhZG9wdE5TKFtbTlNTaGFyaW5nU2VydmljZVBpY2tlciBh
bGxvY10gaW5pdFdpdGhJdGVtczpAWyBpdGVtUHJvdmlkZXIuZ2V0KCkgXV0pOwotICAgIFtfcGlj
a2VyIHNldFN0eWxlOk5TU2hhcmluZ1NlcnZpY2VQaWNrZXJTdHlsZVJvbGxvdmVyXTsKKyAgICBf
cGlja2VyID0gYWRvcHROUyhbW05TU2hhcmluZ1NlcnZpY2VQaWNrZXIgYWxsb2NdIGluaXRXaXRo
SXRlbXM6aXRlbXNdKTsKKyAgICBbX3BpY2tlciBzZXRTdHlsZTpzdHlsZV07CiAgICAgW19waWNr
ZXIgc2V0RGVsZWdhdGU6c2VsZl07CiAKICAgICBfaW5jbHVkZUVkaXRvclNlcnZpY2VzID0gaW5j
bHVkZUVkaXRvclNlcnZpY2VzOwotICAgIF9tZW51Q2xpZW50ID0gbWVudUNsaWVudDsKKyAgICBf
cGlja2VyQ2xpZW50ID0gcGlja2VyQ2xpZW50OwogCiAgICAgcmV0dXJuIHNlbGY7CiAjZW5kaWYK
QEAgLTEwNSwxMSArODksMTEgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAgICAgLy8gUHJv
dGVjdCBzZWxmIGZyb20gYmVpbmcgZGVhbGxvYydlZCBwYXJ0d2F5IHRocm91Z2ggdGhpcyBtZXRo
b2QuCiAgICAgUmV0YWluUHRyPFdlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ29udHJvbGxlcj4gcHJv
dGVjdG9yKHNlbGYpOwogCi0gICAgaWYgKF9tZW51Q2xpZW50KQotICAgICAgICBfbWVudUNsaWVu
dC0+Y2xlYXJTaGFyaW5nU2VydmljZVBpY2tlckNvbnRyb2xsZXIoKTsKKyAgICBpZiAoX3BpY2tl
ckNsaWVudCkKKyAgICAgICAgX3BpY2tlckNsaWVudC0+c2hhcmluZ1NlcnZpY2VQaWNrZXJXaWxs
QmVEZXN0cm95ZWQoKnNlbGYpOwogCiAgICAgX3BpY2tlciA9IG51bGxwdHI7Ci0gICAgX21lbnVD
bGllbnQgPSBudWxscHRyOworICAgIF9waWNrZXJDbGllbnQgPSBudWxscHRyOwogfQogCiAtIChO
U01lbnUgKiltZW51CkBAIC0xMTksNyArMTAzLDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CiAKIC0gKHZvaWQpZGlkU2hhcmVJbWFnZURhdGE6KE5TRGF0YSAqKWRhdGEgY29uZmlybURhdGFJ
c1ZhbGlkVElGRkRhdGE6KEJPT0wpY29uZmlybURhdGEKIHsKLSAgICBQYWdlKiBwYWdlID0gW19t
ZW51Q2xpZW50LT53ZWJWaWV3KCkgcGFnZV07CisgICAgUGFnZSogcGFnZSA9IF9waWNrZXJDbGll
bnQtPnBhZ2VGb3JTaGFyaW5nU2VydmljZVBpY2tlcigqc2VsZik7CiAgICAgaWYgKCFwYWdlKQog
ICAgICAgICByZXR1cm47CiAKQEAgLTE3MCwxMyArMTU0LDE4IEBAIHVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwogLSAodm9pZClzaGFyaW5nU2VydmljZVBpY2tlcjooTlNTaGFyaW5nU2VydmljZVBp
Y2tlciAqKXNoYXJpbmdTZXJ2aWNlUGlja2VyIGRpZENob29zZVNoYXJpbmdTZXJ2aWNlOihOU1No
YXJpbmdTZXJ2aWNlICopc2VydmljZQogewogICAgIGlmICghc2VydmljZSkKLSAgICAgICAgX21l
bnVDbGllbnQtPmNsZWFyU2hhcmluZ1NlcnZpY2VQaWNrZXJDb250cm9sbGVyKCk7CisgICAgICAg
IF9waWNrZXJDbGllbnQtPnNoYXJpbmdTZXJ2aWNlUGlja2VyV2lsbEJlRGVzdHJveWVkKCpzZWxm
KTsKIH0KIAogI3ByYWdtYSBtYXJrIE5TU2hhcmluZ1NlcnZpY2VEZWxlZ2F0ZSBtZXRob2RzCiAK
IC0gKHZvaWQpc2hhcmluZ1NlcnZpY2U6KE5TU2hhcmluZ1NlcnZpY2UgKilzaGFyaW5nU2Vydmlj
ZSBkaWRTaGFyZUl0ZW1zOihOU0FycmF5ICopaXRlbXMKIHsKKyAgICAvLyBXZSBvbmx5IGNhcmUg
YWJvdXQgd2hhdCBpdGVtIHdhcyBzaGFyZWQgaWYgd2Ugd2VyZSBpbnRlcmVzdGVkIGluIGVkaXRv
ciBzZXJ2aWNlcworICAgIC8vIChpLmUuLCBpZiB3ZSBwbGFuIG9uIHJlcGxhY2luZyB0aGUgc2Vs
ZWN0aW9uIHdpdGggdGhlIHJldHVybmVkIGl0ZW0pCisgICAgaWYgKCFfaW5jbHVkZUVkaXRvclNl
cnZpY2VzKQorICAgICAgICByZXR1cm47CisKICAgICAvLyBXZSBvbmx5IHNlbmQgb25lIGl0ZW0s
IHNvIHdlIHNob3VsZCBvbmx5IGdldCBvbmUgaXRlbSBiYWNrLgogICAgIGlmIChbaXRlbXMgY291
bnRdICE9IDEpCiAgICAgICAgIHJldHVybjsKQEAgLTIwOCw4ICsxOTcsMTEgQEAgdXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CiAgICAgICAgIH1dOwogICAgIH0KICNlbmRpZgotICAgIGVsc2UKLSAg
ICAgICAgTE9HX0VSUk9SKCJzaGFyaW5nU2VydmljZTpkaWRTaGFyZUl0ZW1zOiAtIFVua25vd24g
aXRlbSB0eXBlIHJldHVybmVkIik7CisgICAgZWxzZSBpZiAoW2l0ZW0gaXNLaW5kT2ZDbGFzczpb
TlNBdHRyaWJ1dGVkU3RyaW5nIGNsYXNzXV0pIHsKKyAgICAgICAgRnJhbWUmIGZyYW1lID0gX3Bp
Y2tlckNsaWVudC0+cGFnZUZvclNoYXJpbmdTZXJ2aWNlUGlja2VyKCpzZWxmKS0+Zm9jdXNDb250
cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCk7CisgICAgICAgIGZyYW1lLmVkaXRvcigpLnJl
cGxhY2VTZWxlY3Rpb25XaXRoQXR0cmlidXRlZFN0cmluZyhpdGVtKTsKKyAgICB9IGVsc2UKKyAg
ICAgICAgTE9HX0VSUk9SKCJzaGFyaW5nU2VydmljZTpkaWRTaGFyZUl0ZW1zOiAtIFVua25vd24g
aXRlbSB0eXBlIHJldHVybmVkXG4iKTsKIH0KIAogLSAodm9pZClzaGFyaW5nU2VydmljZTooTlNT
aGFyaW5nU2VydmljZSAqKXNoYXJpbmdTZXJ2aWNlIGRpZEZhaWxUb1NoYXJlSXRlbXM6KE5TQXJy
YXkgKilpdGVtcyBlcnJvcjooTlNFcnJvciAqKWVycm9yCkBAIC0yMTksMjMgKzIxMSwyMyBAQCB1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogLSAoTlNSZWN0KXNoYXJpbmdTZXJ2aWNlOihOU1No
YXJpbmdTZXJ2aWNlICopc2hhcmluZ1NlcnZpY2Ugc291cmNlRnJhbWVPblNjcmVlbkZvclNoYXJl
SXRlbTooaWQgPE5TUGFzdGVib2FyZFdyaXRpbmc+KWl0ZW0KIHsKLSAgICBpZiAoIV9tZW51Q2xp
ZW50KQorICAgIGlmICghX3BpY2tlckNsaWVudCkKICAgICAgICAgcmV0dXJuIE5TWmVyb1JlY3Q7
CiAKLSAgICByZXR1cm4gX21lbnVDbGllbnQtPnNjcmVlblJlY3RGb3JIaXRUZXN0Tm9kZSgpOwor
ICAgIHJldHVybiBfcGlja2VyQ2xpZW50LT5zY3JlZW5SZWN0Rm9yQ3VycmVudFNoYXJpbmdTZXJ2
aWNlUGlja2VySXRlbSgqc2VsZik7CiB9CiAKIC0gKE5TSW1hZ2UgKilzaGFyaW5nU2VydmljZToo
TlNTaGFyaW5nU2VydmljZSAqKXNoYXJpbmdTZXJ2aWNlIHRyYW5zaXRpb25JbWFnZUZvclNoYXJl
SXRlbTooaWQgPE5TUGFzdGVib2FyZFdyaXRpbmc+KWl0ZW0gY29udGVudFJlY3Q6KE5TUmVjdCAq
KWNvbnRlbnRSZWN0CiB7Ci0gICAgaWYgKCFfbWVudUNsaWVudCkKKyAgICBpZiAoIV9waWNrZXJD
bGllbnQpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICByZXR1cm4gX21lbnVDbGllbnQtPnJl
bmRlcmVkSW1hZ2VGb3JDb250cm9sbGVkSW1hZ2UoKTsKKyAgICByZXR1cm4gX3BpY2tlckNsaWVu
dC0+aW1hZ2VGb3JDdXJyZW50U2hhcmluZ1NlcnZpY2VQaWNrZXJJdGVtKCpzZWxmKS5nZXQoKTsK
IH0KIAogLSAoTlNXaW5kb3cgKilzaGFyaW5nU2VydmljZTooTlNTaGFyaW5nU2VydmljZSAqKXNo
YXJpbmdTZXJ2aWNlIHNvdXJjZVdpbmRvd0ZvclNoYXJlSXRlbXM6KE5TQXJyYXkgKilpdGVtcyBz
aGFyaW5nQ29udGVudFNjb3BlOihOU1NoYXJpbmdDb250ZW50U2NvcGUgKilzaGFyaW5nQ29udGVu
dFNjb3BlCiB7Ci0gICAgcmV0dXJuIFtfbWVudUNsaWVudC0+d2ViVmlldygpIHdpbmRvd107Cisg
ICAgcmV0dXJuIF9waWNrZXJDbGllbnQtPndpbmRvd0ZvclNoYXJpbmdTZXJ2aWNlUGlja2VyKCpz
ZWxmKS5nZXQoKTsKIH0KIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAppbmRleCA3MjcwY2UxLi5mN2Y3MmY3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaApA
QCAtMjA1LDYgKzIwNSwxMSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIHVud3JhcENyeXB0
b0tleShjb25zdCBWZWN0b3I8dWludDhfdD4mLCBWZWN0b3I8dWludDhfdD4mKSBjb25zdCBvdmVy
cmlkZTsKICNlbmRpZgogCisjaWYgRU5BQkxFKFNFUlZJQ0VfQ09OVFJPTFMpCisgICAgdmlydHVh
bCB2b2lkIGhhbmRsZVNlbGVjdGlvblNlcnZpY2VDbGljayhXZWJDb3JlOjpGcmFtZVNlbGVjdGlv
biYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB0ZWxlcGhvbmVOdW1iZXJzLCBjb25zdCBXZWJDb3Jl
OjpJbnRQb2ludCYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgYm9vbCBoYXNSZWxldmFudFNlbGVj
dGlvblNlcnZpY2VzKGJvb2wgaXNUZXh0T25seSkgY29uc3Qgb3ZlcnJpZGU7CisjZW5kaWYKKwog
I2lmIFBMQVRGT1JNKElPUykKICAgICBXZWJWaWV3KiB3ZWJWaWV3KCkgY29uc3QgeyByZXR1cm4g
bV93ZWJWaWV3OyB9CiAjZWxzZQpAQCAtMjEyLDYgKzIxNyw1IEBAIHB1YmxpYzoKICNlbmRpZgog
CiBwcml2YXRlOgotCiAgICAgV2ViVmlldyAqbV93ZWJWaWV3OwogfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5tbSBiL1NvdXJj
ZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5tbQppbmRleCAzMjE2
ODA3Li45N2RlMjgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJDaHJvbWVDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViQ2hyb21lQ2xpZW50Lm1tCkBAIC00OSw2ICs0OSw3IEBACiAjaW1wb3J0ICJXZWJQbHVn
aW4uaCIKICNpbXBvcnQgIldlYlF1b3RhTWFuYWdlci5oIgogI2ltcG9ydCAiV2ViU2VjdXJpdHlP
cmlnaW5JbnRlcm5hbC5oIgorI2ltcG9ydCAiV2ViU2VsZWN0aW9uU2VydmljZUNvbnRyb2xsZXIu
aCIKICNpbXBvcnQgIldlYlVJRGVsZWdhdGVQcml2YXRlLmgiCiAjaW1wb3J0ICJXZWJWaWV3Lmgi
CiAjaW1wb3J0ICJXZWJWaWV3SW50ZXJuYWwuaCIKQEAgLTEwMzksMyArMTA0MCwxNiBAQCBib29s
IFdlYkNocm9tZUNsaWVudDo6dW53cmFwQ3J5cHRvS2V5KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYg
d3JhcHBlZEtleSwgVmVjdG9yPAogICAgIHJldHVybiB1bndyYXBTZXJpYWxpemVkQ3J5cHRvS2V5
KG1hc3RlcktleSwgd3JhcHBlZEtleSwga2V5KTsKIH0KICNlbmRpZgorCisjaWYgRU5BQkxFKFNF
UlZJQ0VfQ09OVFJPTFMpCit2b2lkIFdlYkNocm9tZUNsaWVudDo6aGFuZGxlU2VsZWN0aW9uU2Vy
dmljZUNsaWNrKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uJiBzZWxlY3Rpb24sIGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiB0ZWxlcGhvbmVOdW1iZXJzLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9p
bnQpCit7CisgICAgW21fd2ViVmlldyBfc2VsZWN0aW9uU2VydmljZUNvbnRyb2xsZXJdLmhhbmRs
ZVNlbGVjdGlvblNlcnZpY2VDbGljayhzZWxlY3Rpb24sIHRlbGVwaG9uZU51bWJlcnMsIHBvaW50
KTsKK30KKworYm9vbCBXZWJDaHJvbWVDbGllbnQ6Omhhc1JlbGV2YW50U2VsZWN0aW9uU2Vydmlj
ZXMoYm9vbCBpc1RleHRPbmx5KSBjb25zdAoreworICAgIHJldHVybiBbbV93ZWJWaWV3IF9zZWxl
Y3Rpb25TZXJ2aWNlQ29udHJvbGxlcl0uaGFzUmVsZXZhbnRTZWxlY3Rpb25TZXJ2aWNlcyhpc1Rl
eHRPbmx5KTsKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuaAppbmRleCA1YTdiMjJkLi4yNjVhODNh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0
TWVudUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNv
bnRleHRNZW51Q2xpZW50LmgKQEAgLTI2LDYgKzI2LDcgQEAKICAqIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAor
I2ltcG9ydCAiV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDb250cm9sbGVyLmgiCiAjaW1wb3J0IDxX
ZWJDb3JlL0NvbnRleHRNZW51Q2xpZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ludFJlY3QuaD4K
IApAQCAtMzYsMTAgKzM3LDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIE5vZGU7CiB9
CiAKLWNsYXNzIFdlYkNvbnRleHRNZW51Q2xpZW50IDogcHVibGljIFdlYkNvcmU6OkNvbnRleHRN
ZW51Q2xpZW50IHsKK2NsYXNzIFdlYkNvbnRleHRNZW51Q2xpZW50IDogcHVibGljIFdlYkNvcmU6
OkNvbnRleHRNZW51Q2xpZW50CisjaWYgRU5BQkxFKFNFUlZJQ0VfQ09OVFJPTFMpCissIHB1Ymxp
YyBXZWJTaGFyaW5nU2VydmljZVBpY2tlckNsaWVudAorI2VuZGlmCit7CiBwdWJsaWM6CiAgICAg
V2ViQ29udGV4dE1lbnVDbGllbnQoV2ViVmlldyAqd2ViVmlldyk7Ci0gICAgfldlYkNvbnRleHRN
ZW51Q2xpZW50KCk7CisgICAgdmlydHVhbCB+V2ViQ29udGV4dE1lbnVDbGllbnQoKTsKIAogICAg
IHZpcnR1YWwgdm9pZCBjb250ZXh0TWVudURlc3Ryb3llZCgpIG92ZXJyaWRlOwogICAgIApAQCAt
NTUsMTEgKzYwLDEzIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2VhcmNoV2l0aFNwb3Rs
aWdodCgpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzaG93Q29udGV4dE1lbnUoKSBvdmVy
cmlkZTsKIAotICAgIE5TUmVjdCBzY3JlZW5SZWN0Rm9ySGl0VGVzdE5vZGUoKSBjb25zdDsKLQog
I2lmIEVOQUJMRShTRVJWSUNFX0NPTlRST0xTKQotICAgIHZvaWQgY2xlYXJTaGFyaW5nU2Vydmlj
ZVBpY2tlckNvbnRyb2xsZXIoKTsKLSAgICBOU0ltYWdlICpyZW5kZXJlZEltYWdlRm9yQ29udHJv
bGxlZEltYWdlKCkgY29uc3Q7CisgICAgLy8gV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDbGllbnQK
KyAgICB2aXJ0dWFsIHZvaWQgc2hhcmluZ1NlcnZpY2VQaWNrZXJXaWxsQmVEZXN0cm95ZWQoV2Vi
U2hhcmluZ1NlcnZpY2VQaWNrZXJDb250cm9sbGVyICYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwg
V2ViQ29yZTo6UGFnZSogcGFnZUZvclNoYXJpbmdTZXJ2aWNlUGlja2VyKFdlYlNoYXJpbmdTZXJ2
aWNlUGlja2VyQ29udHJvbGxlciAmKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFJldGFpblB0cjxO
U1dpbmRvdz4gd2luZG93Rm9yU2hhcmluZ1NlcnZpY2VQaWNrZXIoV2ViU2hhcmluZ1NlcnZpY2VQ
aWNrZXJDb250cm9sbGVyICYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgV2ViQ29yZTo6RmxvYXRS
ZWN0IHNjcmVlblJlY3RGb3JDdXJyZW50U2hhcmluZ1NlcnZpY2VQaWNrZXJJdGVtKFdlYlNoYXJp
bmdTZXJ2aWNlUGlja2VyQ29udHJvbGxlciAmKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFJldGFp
blB0cjxOU0ltYWdlPiBpbWFnZUZvckN1cnJlbnRTaGFyaW5nU2VydmljZVBpY2tlckl0ZW0oV2Vi
U2hhcmluZ1NlcnZpY2VQaWNrZXJDb250cm9sbGVyICYpIG92ZXJyaWRlOwogI2VuZGlmCiAKICAg
ICBXZWJWaWV3ICp3ZWJWaWV3KCkgeyByZXR1cm4gbV93ZWJWaWV3OyB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5tbSBi
L1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50Lm1t
CmluZGV4IDk0Yjk2OGQuLjE4ZjkzZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50Lm1tCkBAIC0zODcsNyArMzg3
LDIzIEBAIGJvb2wgV2ViQ29udGV4dE1lbnVDbGllbnQ6OmNsaWVudEZsb2F0UmVjdEZvck5vZGUo
Tm9kZSYgbm9kZSwgRmxvYXRSZWN0JiByZWN0KSBjCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLU5T
UmVjdCBXZWJDb250ZXh0TWVudUNsaWVudDo6c2NyZWVuUmVjdEZvckhpdFRlc3ROb2RlKCkgY29u
c3QKKyNpZiBFTkFCTEUoU0VSVklDRV9DT05UUk9MUykKK3ZvaWQgV2ViQ29udGV4dE1lbnVDbGll
bnQ6OnNoYXJpbmdTZXJ2aWNlUGlja2VyV2lsbEJlRGVzdHJveWVkKFdlYlNoYXJpbmdTZXJ2aWNl
UGlja2VyQ29udHJvbGxlciAmKQoreworICAgIG1fc2hhcmluZ1NlcnZpY2VQaWNrZXJDb250cm9s
bGVyID0gbmlsOworfQorCitXZWJDb3JlOjpQYWdlKiBXZWJDb250ZXh0TWVudUNsaWVudDo6cGFn
ZUZvclNoYXJpbmdTZXJ2aWNlUGlja2VyKFdlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ29udHJvbGxl
ciAmKQoreworICAgIHJldHVybiBbbV93ZWJWaWV3IHBhZ2VdOworfQorCitSZXRhaW5QdHI8TlNX
aW5kb3c+IFdlYkNvbnRleHRNZW51Q2xpZW50Ojp3aW5kb3dGb3JTaGFyaW5nU2VydmljZVBpY2tl
cihXZWJTaGFyaW5nU2VydmljZVBpY2tlckNvbnRyb2xsZXIgJikKK3sKKyAgICByZXR1cm4gW21f
d2ViVmlldyB3aW5kb3ddOworfQorCitXZWJDb3JlOjpGbG9hdFJlY3QgV2ViQ29udGV4dE1lbnVD
bGllbnQ6OnNjcmVlblJlY3RGb3JDdXJyZW50U2hhcmluZ1NlcnZpY2VQaWNrZXJJdGVtKFdlYlNo
YXJpbmdTZXJ2aWNlUGlja2VyQ29udHJvbGxlciAmKQogewogICAgIFBhZ2UqIHBhZ2UgPSBbbV93
ZWJWaWV3IHBhZ2VdOwogICAgIGlmICghcGFnZSkKQEAgLTQxNSw4ICs0MzEsNyBAQCBOU1JlY3Qg
V2ViQ29udGV4dE1lbnVDbGllbnQ6OnNjcmVlblJlY3RGb3JIaXRUZXN0Tm9kZSgpIGNvbnN0CiAg
ICAgcmV0dXJuIGZyYW1lVmlldy0+Y29udGVudHNUb1NjcmVlbihpbnRSZWN0KTsKIH0KIAotI2lm
IEVOQUJMRShTRVJWSUNFX0NPTlRST0xTKQotTlNJbWFnZSAqV2ViQ29udGV4dE1lbnVDbGllbnQ6
OnJlbmRlcmVkSW1hZ2VGb3JDb250cm9sbGVkSW1hZ2UoKSBjb25zdAorUmV0YWluUHRyPE5TSW1h
Z2U+IFdlYkNvbnRleHRNZW51Q2xpZW50OjppbWFnZUZvckN1cnJlbnRTaGFyaW5nU2VydmljZVBp
Y2tlckl0ZW0oV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDb250cm9sbGVyICYpCiB7CiAgICAgUGFn
ZSogcGFnZSA9IFttX3dlYlZpZXcgcGFnZV07CiAgICAgaWYgKCFwYWdlKQpAQCAtNDU1LDExICs0
NzAsMTAgQEAgTlNJbWFnZSAqV2ViQ29udGV4dE1lbnVDbGllbnQ6OnJlbmRlcmVkSW1hZ2VGb3JD
b250cm9sbGVkSW1hZ2UoKSBjb25zdAogICAgIGZyYW1lVmlldy0+c2V0UGFpbnRCZWhhdmlvcihv
bGRQYWludEJlaGF2aW9yKTsKIAogICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2UgPSBidWZmZXItPmNv
cHlJbWFnZShEb250Q29weUJhY2tpbmdTdG9yZSk7Ci0gICAgcmV0dXJuIFtbaW1hZ2UtPmdldE5T
SW1hZ2UoKSByZXRhaW5dIGF1dG9yZWxlYXNlXTsKKyAgICByZXR1cm4gaW1hZ2UtPmdldE5TSW1h
Z2UoKTsKIH0KICNlbmRpZgogCi0KIE5TTWVudSAqV2ViQ29udGV4dE1lbnVDbGllbnQ6OmNvbnRl
eHRNZW51Rm9yRXZlbnQoTlNFdmVudCAqZXZlbnQsIE5TVmlldyAqdmlldywgYm9vbCYgaXNTZXJ2
aWNlc01lbnUpCiB7CiAgICAgaXNTZXJ2aWNlc01lbnUgPSBmYWxzZTsKQEAgLTQ3MiwxMiArNDg2
LDEwIEBAIE5TTWVudSAqV2ViQ29udGV4dE1lbnVDbGllbnQ6OmNvbnRleHRNZW51Rm9yRXZlbnQo
TlNFdmVudCAqZXZlbnQsIE5TVmlldyAqdmlldywKICAgICBpZiAoSW1hZ2UqIGltYWdlID0gcGFn
ZS0+Y29udGV4dE1lbnVDb250cm9sbGVyKCkuY29udGV4dCgpLmNvbnRyb2xsZWRJbWFnZSgpKSB7
CiAgICAgICAgIEFTU0VSVChwYWdlLT5jb250ZXh0TWVudUNvbnRyb2xsZXIoKS5jb250ZXh0KCku
aGl0VGVzdFJlc3VsdCgpLmlubmVyTm9kZSgpKTsKIAotICAgICAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBkYXRhID0gaW1hZ2UtPmRhdGEoKTsKLSAgICAgICAgQVNTRVJUKGRhdGEpOwotICAgICAg
ICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBjZkRhdGEgPSBkYXRhLT5jcmVhdGVDRkRhdGEoKTsKKyAg
ICAgICAgUmV0YWluUHRyPE5TSXRlbVByb3ZpZGVyPiBpdGVtUHJvdmlkZXIgPSBhZG9wdE5TKFtb
TlNJdGVtUHJvdmlkZXIgYWxsb2NdIGluaXRXaXRoSXRlbTppbWFnZS0+Z2V0TlNJbWFnZSgpIHR5
cGVJZGVudGlmaWVyOkAicHVibGljLmltYWdlIl0pOwogCiAgICAgICAgIGJvb2wgaXNDb250ZW50
RWRpdGFibGUgPSBwYWdlLT5jb250ZXh0TWVudUNvbnRyb2xsZXIoKS5jb250ZXh0KCkuaGl0VGVz
dFJlc3VsdCgpLmlubmVyTm9kZSgpLT5pc0NvbnRlbnRFZGl0YWJsZSgpOwotICAgICAgICBtX3No
YXJpbmdTZXJ2aWNlUGlja2VyQ29udHJvbGxlciA9IGFkb3B0TlMoW1tXZWJTaGFyaW5nU2Vydmlj
ZVBpY2tlckNvbnRyb2xsZXIgYWxsb2NdIGluaXRXaXRoRGF0YTooTlNEYXRhICopY2ZEYXRhLmdl
dCgpIGluY2x1ZGVFZGl0b3JTZXJ2aWNlczppc0NvbnRlbnRFZGl0YWJsZSBtZW51Q2xpZW50OnRo
aXNdKTsKKyAgICAgICAgbV9zaGFyaW5nU2VydmljZVBpY2tlckNvbnRyb2xsZXIgPSBhZG9wdE5T
KFtbV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDb250cm9sbGVyIGFsbG9jXSBpbml0V2l0aEl0ZW1z
OkBbIGl0ZW1Qcm92aWRlci5nZXQoKSBdIGluY2x1ZGVFZGl0b3JTZXJ2aWNlczppc0NvbnRlbnRF
ZGl0YWJsZSBjbGllbnQ6dGhpcyBzdHlsZTpOU1NoYXJpbmdTZXJ2aWNlUGlja2VyU3R5bGVSb2xs
b3Zlcl0pOwogCiAgICAgICAgIGlzU2VydmljZXNNZW51ID0gdHJ1ZTsKICAgICAgICAgcmV0dXJu
IFttX3NoYXJpbmdTZXJ2aWNlUGlja2VyQ29udHJvbGxlciBtZW51XTsKQEAgLTUxMywxMSArNTI1
LDQgQEAgdm9pZCBXZWJDb250ZXh0TWVudUNsaWVudDo6c2hvd0NvbnRleHRNZW51KCkKICAgICB9
CiB9CiAKLSNpZiBFTkFCTEUoU0VSVklDRV9DT05UUk9MUykKLXZvaWQgV2ViQ29udGV4dE1lbnVD
bGllbnQ6OmNsZWFyU2hhcmluZ1NlcnZpY2VQaWNrZXJDb250cm9sbGVyKCkKLXsKLSAgICBtX3No
YXJpbmdTZXJ2aWNlUGlja2VyQ29udHJvbGxlciA9IG5pbDsKLX0KLSNlbmRpZgotCiAjZW5kaWYg
Ly8gIVBMQVRGT1JNKElPUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYlNlbGVjdGlvblNlcnZpY2VDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJTZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxlci5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ4MWJiZTAKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJTZWxlY3Rpb25TZXJ2aWNlQ29udHJv
bGxlci5oCkBAIC0wLDAgKzEsNjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlNlbGVjdGlv
blNlcnZpY2VDb250cm9sbGVyX2gKKyNkZWZpbmUgV2ViU2VsZWN0aW9uU2VydmljZUNvbnRyb2xs
ZXJfaAorCisjaWYgRU5BQkxFKFNFUlZJQ0VfQ09OVFJPTFMpCisKKyNpbXBvcnQgIldlYlNoYXJp
bmdTZXJ2aWNlUGlja2VyQ29udHJvbGxlci5oIgorI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgor
I2ltcG9ydCA8d3RmL1ZlY3Rvci5oPgorI2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisK
K09CSkNfQ0xBU1MgTlNJbWFnZTsKK09CSkNfQ0xBU1MgTlNXaW5kb3c7CitPQkpDX0NMQVNTIFdl
YlZpZXc7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIEZyYW1lU2VsZWN0aW9uOworY2xh
c3MgSW50UG9pbnQ7Cit9CisKK2NsYXNzIFdlYlNlbGVjdGlvblNlcnZpY2VDb250cm9sbGVyIDog
cHVibGljIFdlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ2xpZW50IHsKK3B1YmxpYzoKKyAgICBXZWJT
ZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxlcihXZWJWaWV3Kik7CisKKyAgICB2b2lkIGhhbmRsZVNl
bGVjdGlvblNlcnZpY2VDbGljayhXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbiYsIGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiB0ZWxlcGhvbmVOdW1iZXJzLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpOwor
ICAgIGJvb2wgaGFzUmVsZXZhbnRTZWxlY3Rpb25TZXJ2aWNlcyhib29sIGlzVGV4dE9ubHkpIGNv
bnN0OworCisgICAgLy8gV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDbGllbnQKKyAgICB2aXJ0dWFs
IHZvaWQgc2hhcmluZ1NlcnZpY2VQaWNrZXJXaWxsQmVEZXN0cm95ZWQoV2ViU2hhcmluZ1NlcnZp
Y2VQaWNrZXJDb250cm9sbGVyICYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgV2ViQ29yZTo6UGFn
ZSogcGFnZUZvclNoYXJpbmdTZXJ2aWNlUGlja2VyKFdlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ29u
dHJvbGxlciAmKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFJldGFpblB0cjxOU1dpbmRvdz4gd2lu
ZG93Rm9yU2hhcmluZ1NlcnZpY2VQaWNrZXIoV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDb250cm9s
bGVyICYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgV2ViQ29yZTo6RmxvYXRSZWN0IHNjcmVlblJl
Y3RGb3JDdXJyZW50U2hhcmluZ1NlcnZpY2VQaWNrZXJJdGVtKFdlYlNoYXJpbmdTZXJ2aWNlUGlj
a2VyQ29udHJvbGxlciAmKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFJldGFpblB0cjxOU0ltYWdl
PiBpbWFnZUZvckN1cnJlbnRTaGFyaW5nU2VydmljZVBpY2tlckl0ZW0oV2ViU2hhcmluZ1NlcnZp
Y2VQaWNrZXJDb250cm9sbGVyICYpIG92ZXJyaWRlOworCitwcml2YXRlOgorICAgIFdlYlZpZXcg
Km1fd2ViVmlldzsKKworICAgIFJldGFpblB0cjxXZWJTaGFyaW5nU2VydmljZVBpY2tlckNvbnRy
b2xsZXI+IG1fc2hhcmluZ1NlcnZpY2VQaWNrZXJDb250cm9sbGVyOworfTsKKworI2VuZGlmIC8v
IEVOQUJMRShTRVJWSUNFX0NPTlRST0xTKQorCisjZW5kaWYgLy8gV2ViU2VsZWN0aW9uU2Vydmlj
ZUNvbnRyb2xsZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViU2VsZWN0aW9uU2VydmljZUNvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJTZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxlci5tbQpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZGQyNGNiCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViU2VsZWN0aW9uU2VydmljZUNvbnRyb2xs
ZXIubW0KQEAgLTAsMCArMSwxMjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJXZWJTZWxlY3Rp
b25TZXJ2aWNlQ29udHJvbGxlci5oIgorCisjaWYgRU5BQkxFKFNFUlZJQ0VfQ09OVFJPTFMpCisK
KyNpbXBvcnQgIldlYlZpZXdJbnRlcm5hbC5oIgorI2ltcG9ydCA8V2ViQ29yZS9GcmFtZVNlbGVj
dGlvbi5oPgorI2ltcG9ydCA8V2ViQ29yZS9IVE1MQ29udmVydGVyLmg+CisjaW1wb3J0IDxXZWJD
b3JlL1JhbmdlLmg+CisjaW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKwordXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CisKKyNpZiBfX2hhc19pbmNsdWRlKDxBcHBLaXQvTlNTaGFyaW5nU2Vy
dmljZV9Qcml2YXRlLmg+KQorI2ltcG9ydCA8QXBwS2l0L05TU2hhcmluZ1NlcnZpY2VfUHJpdmF0
ZS5oPgorI2Vsc2UKK3R5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIE5TU2hhcmluZ1NlcnZpY2VQ
aWNrZXJTdHlsZSkgeworICAgIE5TU2hhcmluZ1NlcnZpY2VQaWNrZXJTdHlsZU1lbnUgPSAwLAor
ICAgIE5TU2hhcmluZ1NlcnZpY2VQaWNrZXJTdHlsZVJvbGxvdmVyID0gMSwKKyAgICBOU1NoYXJp
bmdTZXJ2aWNlUGlja2VyU3R5bGVUZXh0U2VsZWN0aW9uID0gMiwKKyAgICBOU1NoYXJpbmdTZXJ2
aWNlUGlja2VyU3R5bGVEYXRhRGV0ZWN0b3IgPSAzCit9IE5TX0VOVU1fQVZBSUxBQkxFX01BQygx
MF8xMCk7CisjZW5kaWYKKworV2ViU2VsZWN0aW9uU2VydmljZUNvbnRyb2xsZXI6OldlYlNlbGVj
dGlvblNlcnZpY2VDb250cm9sbGVyKFdlYlZpZXcgKndlYlZpZXcpIAorICAgIDogbV93ZWJWaWV3
KHdlYlZpZXcpCit7Cit9CisKK3ZvaWQgV2ViU2VsZWN0aW9uU2VydmljZUNvbnRyb2xsZXI6Omhh
bmRsZVNlbGVjdGlvblNlcnZpY2VDbGljayhXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbiYgc2VsZWN0
aW9uLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgdGVsZXBob25lTnVtYmVycywgY29uc3QgV2ViQ29y
ZTo6SW50UG9pbnQmIHBvaW50KQoreworICAgIFBhZ2UqIHBhZ2UgPSBbbV93ZWJWaWV3IHBhZ2Vd
OworICAgIGlmICghcGFnZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgUmVmUHRyPFJhbmdlPiBy
YW5nZSA9IHNlbGVjdGlvbi5zZWxlY3Rpb24oKS5maXJzdFJhbmdlKCk7CisgICAgaWYgKCFyYW5n
ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgUmV0YWluUHRyPE5TQXR0cmlidXRlZFN0cmluZz4g
YXR0cmlidXRlZFNlbGVjdGlvbiA9IGF0dHJpYnV0ZWRTdHJpbmdGcm9tUmFuZ2UoKnJhbmdlKTsK
KyAgICBpZiAoIWF0dHJpYnV0ZWRTZWxlY3Rpb24pCisgICAgICAgIHJldHVybjsKKworICAgIE5T
QXJyYXkgKml0ZW1zID0gQFsgYXR0cmlidXRlZFNlbGVjdGlvbi5nZXQoKSBdOworCisgICAgYm9v
bCBpc0VkaXRhYmxlID0gc2VsZWN0aW9uLnNlbGVjdGlvbigpLmlzQ29udGVudEVkaXRhYmxlKCk7
CisgICAgbV9zaGFyaW5nU2VydmljZVBpY2tlckNvbnRyb2xsZXIgPSBhZG9wdE5TKFtbV2ViU2hh
cmluZ1NlcnZpY2VQaWNrZXJDb250cm9sbGVyIGFsbG9jXSBpbml0V2l0aEl0ZW1zOml0ZW1zIGlu
Y2x1ZGVFZGl0b3JTZXJ2aWNlczppc0VkaXRhYmxlIGNsaWVudDp0aGlzIHN0eWxlOk5TU2hhcmlu
Z1NlcnZpY2VQaWNrZXJTdHlsZVRleHRTZWxlY3Rpb25dKTsKKworICAgIFJldGFpblB0cjxOU01l
bnU+IG1lbnUgPSBhZG9wdE5TKFtbbV9zaGFyaW5nU2VydmljZVBpY2tlckNvbnRyb2xsZXIgbWVu
dV0gY29weV0pOworCisgICAgW21lbnUgc2V0U2hvd3NTdGF0ZUNvbHVtbjpZRVNdOworCisgICAg
W21lbnUgcG9wVXBNZW51UG9zaXRpb25pbmdJdGVtOm5pbCBhdExvY2F0aW9uOlttX3dlYlZpZXcg
Y29udmVydFBvaW50OnBvaW50IHRvVmlldzpuaWxdIGluVmlldzptX3dlYlZpZXddOworfQorCitz
dGF0aWMgYm9vbCBoYXNDb21wYXRpYmxlU2VydmljZXNGb3JJdGVtcyhOU0FycmF5ICppdGVtcykK
K3sKKyAgICByZXR1cm4gW05TU2hhcmluZ1NlcnZpY2Ugc2hhcmluZ1NlcnZpY2VzRm9ySXRlbXM6
aXRlbXMgbWFzazpOU1NoYXJpbmdTZXJ2aWNlTWFza1ZpZXdlciB8IE5TU2hhcmluZ1NlcnZpY2VN
YXNrRWRpdG9yXS5jb3VudDsKK30KKworYm9vbCBXZWJTZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxl
cjo6aGFzUmVsZXZhbnRTZWxlY3Rpb25TZXJ2aWNlcyhib29sIGlzVGV4dE9ubHkpIGNvbnN0Cit7
CisgICAgUmV0YWluUHRyPE5TQXR0cmlidXRlZFN0cmluZz4gYXR0cmlidXRlZFN0cmluZyA9IGFk
b3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoU3RyaW5nOkAiYSJdKTsK
KworICAgIGJvb2wgaGFzU2VsZWN0aW9uU2VydmljZXMgPSBoYXNDb21wYXRpYmxlU2VydmljZXNG
b3JJdGVtcyhAWyBhdHRyaWJ1dGVkU3RyaW5nLmdldCgpIF0pOworICAgIGlmIChpc1RleHRPbmx5
ICYmIGhhc1NlbGVjdGlvblNlcnZpY2VzKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIE5T
VGV4dEF0dGFjaG1lbnQgKmF0dGFjaG1lbnQgPSBbW05TVGV4dEF0dGFjaG1lbnQgYWxsb2NdIGlu
aXRdOworICAgIFJldGFpblB0cjxOU0ltYWdlPiBpbWFnZSA9IGFkb3B0TlMoW1tOU0ltYWdlIGFs
bG9jXSBpbml0XSk7CisgICAgTlNUZXh0QXR0YWNobWVudENlbGwgKmNlbGwgPSBbW05TVGV4dEF0
dGFjaG1lbnRDZWxsIGFsbG9jXSBpbml0SW1hZ2VDZWxsOmltYWdlLmdldCgpXTsKKyAgICBbYXR0
YWNobWVudCBzZXRBdHRhY2htZW50Q2VsbDpjZWxsXTsKKyAgICBSZXRhaW5QdHI8TlNNdXRhYmxl
QXR0cmlidXRlZFN0cmluZz4gYXR0cmlidXRlZFN0cmluZ1dpdGhSaWNoQ29udGVudCA9IGFkb3B0
TlMoKE5TTXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcgKilbTlNNdXRhYmxlQXR0cmlidXRlZFN0cmlu
ZyBhdHRyaWJ1dGVkU3RyaW5nV2l0aEF0dGFjaG1lbnQ6YXR0YWNobWVudF0pOworICAgIFthdHRy
aWJ1dGVkU3RyaW5nV2l0aFJpY2hDb250ZW50IGFwcGVuZEF0dHJpYnV0ZWRTdHJpbmc6YXR0cmli
dXRlZFN0cmluZy5nZXQoKV07CisKKyAgICBib29sIGhhc1JpY2hDb250ZW50U2VydmljZXMgPSBo
YXNDb21wYXRpYmxlU2VydmljZXNGb3JJdGVtcyhAWyBhdHRyaWJ1dGVkU3RyaW5nV2l0aFJpY2hD
b250ZW50LmdldCgpIF0pOworICAgIHJldHVybiBoYXNSaWNoQ29udGVudFNlcnZpY2VzOworfQor
Cit2b2lkIFdlYlNlbGVjdGlvblNlcnZpY2VDb250cm9sbGVyOjpzaGFyaW5nU2VydmljZVBpY2tl
cldpbGxCZURlc3Ryb3llZChXZWJTaGFyaW5nU2VydmljZVBpY2tlckNvbnRyb2xsZXIgJikKK3sK
KyAgICBtX3NoYXJpbmdTZXJ2aWNlUGlja2VyQ29udHJvbGxlciA9IG5pbDsKK30KKworV2ViQ29y
ZTo6UGFnZSogV2ViU2VsZWN0aW9uU2VydmljZUNvbnRyb2xsZXI6OnBhZ2VGb3JTaGFyaW5nU2Vy
dmljZVBpY2tlcihXZWJTaGFyaW5nU2VydmljZVBpY2tlckNvbnRyb2xsZXIgJikKK3sKKyAgICBy
ZXR1cm4gW21fd2ViVmlldyBwYWdlXTsKK30KKworUmV0YWluUHRyPE5TV2luZG93PiBXZWJTZWxl
Y3Rpb25TZXJ2aWNlQ29udHJvbGxlcjo6d2luZG93Rm9yU2hhcmluZ1NlcnZpY2VQaWNrZXIoV2Vi
U2hhcmluZ1NlcnZpY2VQaWNrZXJDb250cm9sbGVyICYpCit7CisgICAgcmV0dXJuIFttX3dlYlZp
ZXcgd2luZG93XTsKK30KKworRmxvYXRSZWN0IFdlYlNlbGVjdGlvblNlcnZpY2VDb250cm9sbGVy
OjpzY3JlZW5SZWN0Rm9yQ3VycmVudFNoYXJpbmdTZXJ2aWNlUGlja2VySXRlbShXZWJTaGFyaW5n
U2VydmljZVBpY2tlckNvbnRyb2xsZXIgJikKK3sKKyAgICByZXR1cm4gRmxvYXRSZWN0KCk7Cit9
CisKK1JldGFpblB0cjxOU0ltYWdlPiBXZWJTZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxlcjo6aW1h
Z2VGb3JDdXJyZW50U2hhcmluZ1NlcnZpY2VQaWNrZXJJdGVtKFdlYlNoYXJpbmdTZXJ2aWNlUGlj
a2VyQ29udHJvbGxlciAmKQoreworICAgIHJldHVybiBuaWw7Cit9CisKKyNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tIGIvU291cmNlL1dlYktp
dC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCmluZGV4IDQwODUzNmEuLjg2YzQ5YzYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KQEAgLTk3LDYgKzk3LDcgQEAKICNpbXBvcnQgIldl
YlByb2dyZXNzVHJhY2tlckNsaWVudC5oIgogI2ltcG9ydCAiV2ViU2NyaXB0RGVidWdEZWxlZ2F0
ZS5oIgogI2ltcG9ydCAiV2ViU2NyaXB0V29ybGRJbnRlcm5hbC5oIgorI2ltcG9ydCAiV2ViU2Vs
ZWN0aW9uU2VydmljZUNvbnRyb2xsZXIuaCIKICNpbXBvcnQgIldlYlN0b3JhZ2VNYW5hZ2VySW50
ZXJuYWwuaCIKICNpbXBvcnQgIldlYlN5c3RlbUludGVyZmFjZS5oIgogI2ltcG9ydCAiV2ViVGV4
dENvbXBsZXRpb25Db250cm9sbGVyLmgiCkBAIC04NDk2LDYgKzg0OTcsMTUgQEAgc3RhdGljIHZv
aWQgZ2xpYkNvbnRleHRJdGVyYXRpb25DYWxsYmFjayhDRlJ1bkxvb3BPYnNlcnZlclJlZiwgQ0ZS
dW5Mb29wQWN0aXZpdHkKIH0KICNlbmRpZgogCisjaWYgRU5BQkxFKFNFUlZJQ0VfQ09OVFJPTFMp
CistIChXZWJTZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxlciYpX3NlbGVjdGlvblNlcnZpY2VDb250
cm9sbGVyCit7CisgICAgaWYgKCFfcHJpdmF0ZS0+X3NlbGVjdGlvblNlcnZpY2VDb250cm9sbGVy
KQorICAgICAgICBfcHJpdmF0ZS0+X3NlbGVjdGlvblNlcnZpY2VDb250cm9sbGVyID0gc3RkOjpt
YWtlX3VuaXF1ZTxXZWJTZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxlcj4oc2VsZik7CisgICAgcmV0
dXJuICpfcHJpdmF0ZS0+X3NlbGVjdGlvblNlcnZpY2VDb250cm9sbGVyOworfQorI2VuZGlmCisK
IC0gKE5TUG9pbnQpX2NvbnZlcnRQb2ludEZyb21Sb290VmlldzooTlNQb2ludClwb2ludAogewog
ICAgIHJldHVybiBOU01ha2VQb2ludChwb2ludC54LCBbc2VsZiBib3VuZHNdLnNpemUuaGVpZ2h0
IC0gcG9pbnQueSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZp
ZXdEYXRhLmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdEYXRhLmgKaW5kZXgg
YTBiZTY4MS4uZTMyY2QyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9X
ZWJWaWV3RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld0RhdGEu
aApAQCAtODIsNiArODIsNyBAQCBleHRlcm4gaW50IHBsdWdpbkRhdGFiYXNlQ2xpZW50Q291bnQ7
CiAKIGNsYXNzIExheWVyRmx1c2hDb250cm9sbGVyOwogY2xhc3MgV2ViVmlld0dyb3VwOworY2xh
c3MgV2ViU2VsZWN0aW9uU2VydmljZUNvbnRyb2xsZXI7CiAKIGNsYXNzIFdlYlZpZXdMYXllckZs
dXNoU2NoZWR1bGVyIDogcHVibGljIFdlYkNvcmU6OkxheWVyRmx1c2hTY2hlZHVsZXIgewogcHVi
bGljOgpAQCAtMjcwLDYgKzI3MSwxMCBAQCBwcml2YXRlOgogICAgIGlkPFdlYlVzZXJNZWRpYUNs
aWVudD4gbV91c2VyTWVkaWFDbGllbnQ7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShTRVJWSUNFX0NP
TlRST0xTKQorICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJTZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxl
cj4gX3NlbGVjdGlvblNlcnZpY2VDb250cm9sbGVyOworI2VuZGlmCisKICAgICBSZWZQdHI8V2Vi
Q29yZTo6SGlzdG9yeUl0ZW0+IF9nbG9iYWxIaXN0b3J5SXRlbTsKIAogICAgIEJPT0wgaW50ZXJh
Y3RpdmVGb3JtVmFsaWRhdGlvbkVuYWJsZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJWaWV3L1dlYlZpZXdEYXRhLm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJW
aWV3RGF0YS5tbQppbmRleCBlMDYzNmE1Li5iN2NiYWUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L21hYy9XZWJWaWV3L1dlYlZpZXdEYXRhLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YlZpZXcvV2ViVmlld0RhdGEubW0KQEAgLTMxLDYgKzMxLDcgQEAKIAogI2ltcG9ydCAiV2ViS2l0
TG9nZ2luZy5oIgogI2ltcG9ydCAiV2ViUHJlZmVyZW5jZUtleXNQcml2YXRlLmgiCisjaW1wb3J0
ICJXZWJTZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxlci5oIgogI2ltcG9ydCAiV2ViVmlld0dyb3Vw
LmgiCiAjaW1wb3J0IDxXZWJDb3JlL0FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci5oPgogI2lt
cG9ydCA8V2ViQ29yZS9XZWJDb3JlT2JqQ0V4dHJhcy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9tYWMvV2ViVmlldy9XZWJWaWV3SW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YlZpZXcvV2ViVmlld0ludGVybmFsLmgKaW5kZXggOTgzOTc0Ni4uMTJhNDNiZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3SW50ZXJuYWwuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdJbnRlcm5hbC5oCkBAIC01Niw2ICs1Niw4IEBA
IGNsYXNzIFJlbmRlckJveDsKIGNsYXNzIEhUTUxWaWRlb0VsZW1lbnQ7CiBzdHJ1Y3QgRGljdGF0
aW9uQWx0ZXJuYXRpdmU7CiB9CisKK2NsYXNzIFdlYlNlbGVjdGlvblNlcnZpY2VDb250cm9sbGVy
OwogI2VuZGlmCiAKIEBjbGFzcyBXZWJCYXNlUGx1Z2luUGFja2FnZTsKQEAgLTExOSw2ICsxMjEs
MTAgQEAgT0JKQ19DTEFTUyBOU1RleHRBbHRlcm5hdGl2ZXM7CiAtIChWZWN0b3I8U3RyaW5nPilf
ZGljdGF0aW9uQWx0ZXJuYXRpdmVzOih1aW50NjRfdClkaWN0YXRpb25Db250ZXh0OwogI2VuZGlm
CiAKKyNpZiBFTkFCTEUoU0VSVklDRV9DT05UUk9MUykKKy0gKFdlYlNlbGVjdGlvblNlcnZpY2VD
b250cm9sbGVyJilfc2VsZWN0aW9uU2VydmljZUNvbnRyb2xsZXI7CisjZW5kaWYKKwogQGVuZAog
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZwppbmRleCAwZDc0ODE5Li45M2EwNmI4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTkgQEAKKzIwMTQtMTAtMTUgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBs
ZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IHNlbGVjdGlvbiBzZXJ2aWNlcyBtZW51IGZvciBM
ZWdhY3kgV2ViS2l0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMzc1ODIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzE4NjA0MjQxPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVUlQcm9jZXNzL21hYy9X
ZWJDb250ZXh0TWVudVByb3h5TWFjLm1tOgorICAgICAgICAoLVtXS1NoYXJpbmdTZXJ2aWNlUGlj
a2VyRGVsZWdhdGUgc2hhcmluZ1NlcnZpY2U6ZGlkU2hhcmVJdGVtczpdKToKKyAgICAgICAgQWRk
IGEgbm90ZSB0aGF0IHdlIHNob3VsZCB0cmFuc2l0aW9uIHRvIHVzaW5nIHJlcGxhY2VTZWxlY3Rp
b25XaXRoQXR0cmlidXRlZFN0cmluZy4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9t
YWMvV2ViUGFnZU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6aGFuZGxlU2VsZWN0
aW9uU2VydmljZUNsaWNrKToKKyAgICAgICAgQWxsb3cgZWRpdG9yIHNlcnZpY2VzIGluIGVkaXRh
YmxlLWJ1dC1ub3QtcmljaC10ZXh0IGFyZWFzLCBqdXN0IGxpa2UgaW4gV2ViS2l0MS4KKwogMjAx
NC0xMC0xNSAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KIAogICAgICAgICBb
TWFjXSBBbGxvdyBzb21lIEtlcmJlcm9zIHJlbGF0ZWQgcGF0aHMgaW4gc2FuZGJveApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJDb250ZXh0TWVudVByb3h5TWFj
Lm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJDb250ZXh0TWVudVByb3h5TWFj
Lm1tCmluZGV4IDRlMWMzY2MuLjU4YWQ5OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9tYWMvV2ViQ29udGV4dE1lbnVQcm94eU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvbWFjL1dlYkNvbnRleHRNZW51UHJveHlNYWMubW0KQEAgLTI3NSw2ICsyNzUs
NyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAor
ICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgYWRvcHQgcmVwbGFjZVNlbGVjdGlvbldpdGhBdHRyaWJ1
dGVkU3RyaW5nIGluc3RlYWQgb2YgYm91bmNpbmcgdGhyb3VnaCB0aGUgKGZha2UpIHBhc3RlYm9h
cmQuCiAgICAgX21lbnVQcm94eS0+cGFnZSgpLnJlcGxhY2VTZWxlY3Rpb25XaXRoUGFzdGVib2Fy
ZERhdGEodHlwZXMsIGRhdGFSZWZlcmVuY2UpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0gYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KaW5kZXggZTRhNWY2ZC4uZTBi
NTU4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9X
ZWJQYWdlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMv
V2ViUGFnZU1hYy5tbQpAQCAtMTAzOSw3ICsxMDM5LDcgQEAgdm9pZCBXZWJQYWdlOjpoYW5kbGVT
ZWxlY3Rpb25TZXJ2aWNlQ2xpY2soRnJhbWVTZWxlY3Rpb24mIHNlbGVjdGlvbiwgY29uc3QgVmVj
dG8KIAogICAgIE5TRGF0YSAqc2VsZWN0aW9uRGF0YSA9IFthdHRyaWJ1dGVkU2VsZWN0aW9uIFJU
RkRGcm9tUmFuZ2U6TlNNYWtlUmFuZ2UoMCwgW2F0dHJpYnV0ZWRTZWxlY3Rpb24gbGVuZ3RoXSkg
ZG9jdW1lbnRBdHRyaWJ1dGVzOm5pbF07CiAgICAgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGEgPSBJ
UEM6OkRhdGFSZWZlcmVuY2UocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oW3NlbGVj
dGlvbkRhdGEgYnl0ZXNdKSwgW3NlbGVjdGlvbkRhdGEgbGVuZ3RoXSk7Ci0gICAgYm9vbCBpc0Vk
aXRhYmxlID0gc2VsZWN0aW9uLnNlbGVjdGlvbigpLmlzQ29udGVudFJpY2hseUVkaXRhYmxlKCk7
CisgICAgYm9vbCBpc0VkaXRhYmxlID0gc2VsZWN0aW9uLnNlbGVjdGlvbigpLmlzQ29udGVudEVk
aXRhYmxlKCk7CiAKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNob3dTZWxlY3Rp
b25TZXJ2aWNlTWVudShkYXRhLCBwaG9uZU51bWJlcnMsIGlzRWRpdGFibGUsIHBvaW50KSk7CiB9
Cg==
</data>
<flag name="review"
          id="264644"
          type_id="1"
          status="+"
          setter="beidson"
    />
          </attachment>
      

    </bug>

</bugzilla>