<?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>138257</bug_id>
          
          <creation_ts>2014-10-31 13:48:19 -0700</creation_ts>
          <short_desc>Add page overlays that show regions with mouseWheel event handlers, and the non-fast-scrollable region, and code to toggle them in MiniBrowser WK2</short_desc>
          <delta_ts>2014-11-03 16:13:12 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Simon Fraser (smfr)">simon.fraser</assigned_to>
          <cc>bdakin</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>joepeck</cc>
    
    <cc>rakuco</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sam</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>timothy</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1045362</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2014-10-31 13:48:19 -0700</bug_when>
    <thetext>Add page overlays that show regions with mouseWheel event handlers, and the non-fast-scrollable region, and code to toggle them in MiniBrowser WK2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1045364</commentid>
    <comment_count>1</comment_count>
      <attachid>240751</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2014-10-31 13:56:14 -0700</bug_when>
    <thetext>Created attachment 240751
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1045365</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-10-31 13:58:07 -0700</bug_when>
    <thetext>Attachment 240751 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/API/Cocoa/WKPreferencesPrivate.h:40:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 1 in 20 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>1045368</commentid>
    <comment_count>3</comment_count>
      <attachid>240751</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-10-31 14:08:36 -0700</bug_when>
    <thetext>Comment on attachment 240751
Patch

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

&gt; Source/WebCore/page/DebugPageOverlays.cpp:56
&gt; +    virtual void pageOverlayDestroyed(PageOverlay&amp;) override;

private?

&gt; Source/WebCore/page/DebugPageOverlays.cpp:66
&gt; +    MainFrame&amp; m_frame;

private?

&gt; Source/WebCore/page/DebugPageOverlays.cpp:278
&gt; +    if (visibleRegions &amp; NonFastScrollableRegion)

We should figure out how to make this more generic at some point.

&gt; Source/WebCore/page/DebugPageOverlays.h:46
&gt; +    static const unsigned NumberOfRegionTypes = NonFastScrollableRegion + 1;

Don&apos;t we usually address this by having a third &apos;last&apos; type after the others, so that this doesn&apos;t need to be changed later?

&gt; Source/WebKit2/Shared/WebPreferencesDefinitions.h:240
&gt; +    macro(VisibleDebugOverlayRegions, visibleDebugOverlayRegions, UInt32, uint32_t, 0)

Maybe we should learn from the past and make this more like the new Logging pref (stringified) than the old one?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1045371</commentid>
    <comment_count>4</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2014-10-31 14:13:46 -0700</bug_when>
    <thetext>&gt; &gt; Source/WebCore/page/DebugPageOverlays.h:46
&gt; &gt; +    static const unsigned NumberOfRegionTypes = NonFastScrollableRegion + 1;
&gt; 
&gt; Don&apos;t we usually address this by having a third &apos;last&apos; type after the
&gt; others, so that this doesn&apos;t need to be changed later?

That resulted in &quot;enum not handled in switch&quot; warnings, so I did this.

&gt; &gt; Source/WebKit2/Shared/WebPreferencesDefinitions.h:240
&gt; &gt; +    macro(VisibleDebugOverlayRegions, visibleDebugOverlayRegions, UInt32, uint32_t, 0)
&gt; 
&gt; Maybe we should learn from the past and make this more like the new Logging
&gt; pref (stringified) than the old one?

Maybe, but I can deal with 2 bits in my head.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1045377</commentid>
    <comment_count>5</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-10-31 14:20:52 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; &gt; &gt; Source/WebKit2/Shared/WebPreferencesDefinitions.h:240
&gt; &gt; &gt; +    macro(VisibleDebugOverlayRegions, visibleDebugOverlayRegions, UInt32, uint32_t, 0)
&gt; &gt; 
&gt; &gt; Maybe we should learn from the past and make this more like the new Logging
&gt; &gt; pref (stringified) than the old one?
&gt; 
&gt; Maybe, but I can deal with 2 bits in my head.

But the future!!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1045400</commentid>
    <comment_count>6</comment_count>
      <attachid>240761</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2014-10-31 15:29:31 -0700</bug_when>
    <thetext>Created attachment 240761
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1045403</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-10-31 15:32:09 -0700</bug_when>
    <thetext>Attachment 240761 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/API/Cocoa/WKPreferencesPrivate.h:40:  Place brace on its own line for function definitions.  [whitespace/braces] [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>1045428</commentid>
    <comment_count>8</comment_count>
      <attachid>240761</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-10-31 16:22:55 -0700</bug_when>
    <thetext>Comment on attachment 240761
Patch

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

&gt; Source/WebCore/page/DebugPageOverlays.cpp:56
&gt; +    virtual void pageOverlayDestroyed(PageOverlay&amp;) override;

nit: It seems all of these virtual functions could be marked as final.

&gt; Source/WebCore/page/DebugPageOverlays.cpp:81
&gt; +    MouseWheelRegionOverlay(MainFrame&amp; frame)

nit: explicit?

&gt; Source/WebCore/page/DebugPageOverlays.cpp:114
&gt; +    NonFastScrollableRegionOverlay(MainFrame&amp; frame)

nit: explicit?

&gt; Source/WebCore/page/DebugPageOverlays.cpp:188
&gt; +    

nit: extra line?

&gt; Source/WebCore/page/DebugPageOverlays.cpp:222
&gt; +RegionOverlay* DebugPageOverlays::ensureRegionOverlayForFrame(MainFrame&amp; frame, RegionType regionType)

nit: this could return a reference.

&gt; Source/WebCore/page/DebugPageOverlays.cpp:239
&gt; +    m_frameRegionOverlays.set(&amp;frame, WTF::move(visualizers));

nit: using .add() would be a little bit more efficient as we already know the key is not in the HashMap.

&gt; Source/WebCore/page/DebugPageOverlays.h:61
&gt; +        return m_frameRegionOverlays.find(&amp;frame) != m_frameRegionOverlays.end();

nit: return m_frameRegionOverlays.contains(&amp;frame);

&gt; Tools/MiniBrowser/mac/SettingsController.m:110
&gt; +    NSMenu* debugOverlaysMenu = [[NSMenu alloc] initWithTitle:@&quot;Debug Overlays&quot;];

Nit: wrong star placement</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1045887</commentid>
    <comment_count>9</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2014-11-03 16:13:01 -0800</bug_when>
    <thetext>https://trac.webkit.org/r175494</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1045888</commentid>
    <comment_count>10</comment_count>
      <attachid>240761</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2014-11-03 16:13:12 -0800</bug_when>
    <thetext>Comment on attachment 240761
Patch

Tim reviewed this.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>240751</attachid>
            <date>2014-10-31 13:56:14 -0700</date>
            <delta_ts>2014-10-31 15:29:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-138257-20141031135622.patch</filename>
            <type>text/plain</type>
            <size>42338</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc1MTU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTE1N2MzOTU1MzM0YWMz
NmExN2NiZjRjMTU3NzM1OWQ2NWRkYzNmNS4uMjY1NWVkYTFhNTdlMDI5MDhiNDg4MTQ1MDg4ZTEx
Y2Y4YmI0OGQ3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDE0LTEwLTMxICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBwYWdlIG92
ZXJsYXlzIHRoYXQgc2hvdyByZWdpb25zIHdpdGggbW91c2VXaGVlbCBldmVudCBoYW5kbGVycywg
YW5kIHRoZSBub24tZmFzdC1zY3JvbGxhYmxlIHJlZ2lvbiwgYW5kIGNvZGUgdG8gdG9nZ2xlIHRo
ZW0gaW4gTWluaUJyb3dzZXIgV0syCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMzgyNTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBZGQgY29kZSBmb3IgZGVidWdnaW5nIHBhZ2Ugb3ZlcmxheXMgdGhhdCBz
aG93IHRoZSBub24tZmFzdCBzY3JvbGxhYmxlIHJlZ2lvbiwKKyAgICAgICAgYW5kIHRoZSByZWdp
b24gd2l0aCB3aGVlbCBldmVudCBoYW5kbGVycy4gVGhlIGxpc3Qgb2YgcmVnaW9uIHR5cGVzIGlz
IGludGVuZGVkCisgICAgICAgIHRvIGJlIGVhc2lseSBleHRlbnNpYmxlLgorICAgICAgICAKKyAg
ICAgICAgQSBzaW5nbGV0b24gRGVidWdQYWdlT3ZlcmxheXMgbWFpbnRhaW5zIGEgbWFwIG9mIEZy
YW1lIC0+IHZlY3RvciBvZiBvdmVybGF5cy4KKyAgICAgICAgQSBwdXJlbHkgaW5saW5lIGNvZGUg
cGF0aCBpcyBwcm92aWRlZCBzbyB0aGF0IERlYnVnUGFnZU92ZXJsYXlzOjpkaWRMYXlvdXQoKSBp
cworICAgICAgICBmYXN0LgorICAgICAgICAKKyAgICAgICAgRm9yIGVhY2ggcmVnaW9uIHR5cGUs
IGEgUGFnZU92ZXJsYXk6OkNsaWVudCBzdWJjbGFzcyBrbm93cyBob3cgdG8gZ2VuZXJhdGUKKyAg
ICAgICAgdGhlIHJlZ2lvbiwgd2hpY2ggaXMgcGFpbnRlZCBpbnRvIGEgZG9jdW1lbnQtbGV2ZWwg
cGFnZSBvdmVybGF5LgorICAgICAgICAKKyAgICAgICAgQWRkIGEgc2V0IG9mIGJpdGZsYWdzIHRv
IFNldHRpbmdzIHRvIGNvbnRyb2wgcmVnaW9uIHZpc2liaWxpdHkuCisKKyAgICAgICAgKiBXZWJD
b3JlLmV4cC5pbjoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
CisgICAgICAgICogcGFnZS9EZWJ1Z1BhZ2VPdmVybGF5cy5jcHA6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6UmVnaW9uT3ZlcmxheTo6b3ZlcmxheSk6CisgICAgICAgIChXZWJDb3JlOjpNb3Vz
ZVdoZWVsUmVnaW9uT3ZlcmxheTo6dXBkYXRlUmVnaW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok5v
bkZhc3RTY3JvbGxhYmxlUmVnaW9uT3ZlcmxheTo6dXBkYXRlUmVnaW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlZ2lvbk92ZXJsYXk6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZWdpb25P
dmVybGF5OjpSZWdpb25PdmVybGF5KToKKyAgICAgICAgKFdlYkNvcmU6OlJlZ2lvbk92ZXJsYXk6
On5SZWdpb25PdmVybGF5KToKKyAgICAgICAgKFdlYkNvcmU6OlJlZ2lvbk92ZXJsYXk6OnBhZ2VP
dmVybGF5RGVzdHJveWVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlZ2lvbk92ZXJsYXk6OndpbGxN
b3ZlVG9QYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlZ2lvbk92ZXJsYXk6OmRpZE1vdmVUb1Bh
Z2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVnaW9uT3ZlcmxheTo6ZHJhd1JlY3QpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVnaW9uT3ZlcmxheTo6bW91c2VFdmVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZWdpb25PdmVybGF5OjpkaWRTY3JvbGxGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpSZWdp
b25PdmVybGF5OjpyZWNvbXB1dGVSZWdpb24pOgorICAgICAgICAoV2ViQ29yZTo6RGVidWdQYWdl
T3ZlcmxheXM6OnNoYXJlZCk6CisgICAgICAgIChXZWJDb3JlOjppbmRleE9mKToKKyAgICAgICAg
KFdlYkNvcmU6OkRlYnVnUGFnZU92ZXJsYXlzOjplbnN1cmVSZWdpb25PdmVybGF5Rm9yRnJhbWUp
OgorICAgICAgICAoV2ViQ29yZTo6RGVidWdQYWdlT3ZlcmxheXM6OnNob3dSZWdpb25PdmVybGF5
KToKKyAgICAgICAgKFdlYkNvcmU6OkRlYnVnUGFnZU92ZXJsYXlzOjpoaWRlUmVnaW9uT3Zlcmxh
eSk6CisgICAgICAgIChXZWJDb3JlOjpEZWJ1Z1BhZ2VPdmVybGF5czo6cmVnaW9uQ2hhbmdlZCk6
CisgICAgICAgIChXZWJDb3JlOjpEZWJ1Z1BhZ2VPdmVybGF5czo6cmVnaW9uT3ZlcmxheUZvckZy
YW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkRlYnVnUGFnZU92ZXJsYXlzOjp1cGRhdGVPdmVybGF5
UmVnaW9uVmlzaWJpbGl0eSk6CisgICAgICAgIChXZWJDb3JlOjpEZWJ1Z1BhZ2VPdmVybGF5czo6
c2V0dGluZ3NDaGFuZ2VkKToKKyAgICAgICAgKiBwYWdlL0RlYnVnUGFnZU92ZXJsYXlzLmg6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6RGVidWdQYWdlT3ZlcmxheXM6Omhhc092ZXJsYXlzRm9y
RnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6RGVidWdQYWdlT3ZlcmxheXM6Omhhc092ZXJsYXlz
KToKKyAgICAgICAgKFdlYkNvcmU6OkRlYnVnUGFnZU92ZXJsYXlzOjpkaWRMYXlvdXQpOgorICAg
ICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6
bGF5b3V0KToKKyAgICAgICAgKiBwYWdlL1NldHRpbmdzLmg6CisgICAgICAgICogcGFnZS9TZXR0
aW5ncy5pbjoKKwogMjAxNC0xMC0yMyAgR3l1eW91bmcgS2ltICA8Z3l1eW91bmcua2ltQHNhbXN1
bmcuY29tPgogCiAgICAgICAgIFJlbW92ZSBIYXJmQnV6elJ1bjo6Y3JlYXRlKCkgZmFjdG9yeSBm
dW5jdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCmluZGV4IDk4OWFhZDIzZWQ1M2JlMzRiZjM2ZjhhOTU0ZGYyOWM4ZTY3
YmJlZDYuLmYwZDljOWE1ODg0MzY4OTZkNjUzY2VhY2M2MGRjYjQzMTA2MzM3MjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwyNiBAQAorMjAxNC0xMC0zMSAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJh
c2VyQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgcGFnZSBvdmVybGF5cyB0aGF0IHNob3cgcmVn
aW9ucyB3aXRoIG1vdXNlV2hlZWwgZXZlbnQgaGFuZGxlcnMsIGFuZCB0aGUgbm9uLWZhc3Qtc2Ny
b2xsYWJsZSByZWdpb24sIGFuZCBjb2RlIHRvIHRvZ2dsZSB0aGVtIGluIE1pbmlCcm93c2VyIFdL
MgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM4MjU3
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAg
ICBBZGQgcHJpdmF0ZSBwcmVmcyB0byBjb250cm9sIHZpc2liaWxpdHkgb2YgZGVidWctcmVsYXRl
ZCBwYWdlIHJlZ2lvbiBvdmVybGF5cy4KKworICAgICAgICAqIFNoYXJlZC9XZWJQcmVmZXJlbmNl
c0RlZmluaXRpb25zLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZlcmVu
Y2VzLm1tOgorICAgICAgICAoLVtXS1ByZWZlcmVuY2VzIF92aXNpYmxlRGVidWdPdmVybGF5UmVn
aW9uc10pOgorICAgICAgICAoLVtXS1ByZWZlcmVuY2VzIF9zZXRWaXNpYmxlRGVidWdPdmVybGF5
UmVnaW9uczpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJlZmVyZW5jZXNQ
cml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XZWJQcmVmZXJlbmNlc01hYy5tbToK
KyAgICAgICAgKFdlYktpdDo6c2V0RGVidWdVSW50MzJWYWx1ZUlmSW5Vc2VyRGVmYXVsdHMpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZTo6dXBkYXRlUHJlZmVyZW5jZXMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UGFnZS9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEubW06CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhOjp1cGRhdGVQcmVmZXJlbmNlcyk6IFVwZGF0ZSB0
aGUgb3ZlcmxheXMuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVB
bmltYXRpb25EcmF3aW5nQXJlYS5tbToKKyAgICAgICAgKFdlYktpdDo6VGlsZWRDb3JlQW5pbWF0
aW9uRHJhd2luZ0FyZWE6OnVwZGF0ZVByZWZlcmVuY2VzKTogVXBkYXRlIHRoZSBvdmVybGF5cy4K
KwogMjAxNC0xMC0yMyAgQmVuamFtaW4gUG91bGFpbiAgPGJwb3VsYWluQGFwcGxlLmNvbT4KIAog
ICAgICAgICBbaU9TIFdLMl0gSWYgYSBwYWdlIGhhcyB0aGUgZXhhY3Qgc2FtZSBWaXNpYmxlQ29u
dGVudFJlY3QgYXMgdGhlIHBhZ2UgYmVmb3JlLCBpdHMgVmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRl
IGNhbiBiZSBpZ25vcmVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5p
biBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCmluZGV4IDNhZjQ3ZTQ1YTE1NmYxZDZk
MzUxMmI5NGZmNWU0MTkwZjY1NjQwZWUuLjBmNmFiZGU1M2QxODQ3ZmU4OTdlOWU4NDA5ZTMwMmRl
Y2UyOGQ4MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBAIC03NTgsNiArNzU4LDcgQEAgX19aTjdX
ZWJDb3JlMTdDcmVkZW50aWFsU3RvcmFnZTI0Z2V0RnJvbVBlcnNpc3RlbnRTdG9yYWdlRVJLTlNf
MTVQcm90ZWN0aW9uU3BhY2UKIF9fWk43V2ViQ29yZTE3Q3JlZGVudGlhbFN0b3JhZ2UzZ2V0RVJL
TlNfMTVQcm90ZWN0aW9uU3BhY2VFCiBfX1pON1dlYkNvcmUxN0RPTUltcGxlbWVudGF0aW9uMTNp
c1hNTE1JTUVUeXBlRVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3JlMTdET01JbXBsZW1lbnRh
dGlvbjE0aXNUZXh0TUlNRVR5cGVFUktOM1dURjZTdHJpbmdFCitfX1pON1dlYkNvcmUxN0RlYnVn
UGFnZU92ZXJsYXlzMTVzZXR0aW5nc0NoYW5nZWRFUk5TXzlNYWluRnJhbWVFCiBfX1pON1dlYkNv
cmUxN0dseXBoUGFnZVRyZWVOb2RlMTh0cmVlR2x5cGhQYWdlQ291bnRFdgogX19aTjdXZWJDb3Jl
MTdIVE1MT3B0aW9uRWxlbWVudDhzZWxlY3RlZEV2CiBfX1pON1dlYkNvcmUxN0hUTUxTZWxlY3RF
bGVtZW50MjBvcHRpb25TZWxlY3RlZEJ5VXNlckVpYmIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBkMWVjMzdiMDEyOWQ2YmEwNGZk
N2ViZjQ5YTdhYWEyNmRlNzA3Y2QxLi43MDM1ZjY0OGVkOTRmMTMyZThjY2I3MGNhYjZmM2VkYzI0
MmQxMTUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCkBAIC01MzMsNiArNTMzLDggQEAKIAkJMEY2MDVBRUQxNUY5NDg0ODAwNERGMEMw
IC8qIFNjcm9sbGluZ0NvbnN0cmFpbnRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRjYwNUFFQjE1Rjk0ODQ4MDA0REYwQzAgLyogU2Nyb2xsaW5nQ29u
c3RyYWludHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQkwRjYzODNERDE4NjE1QjI5MDAzRTVEQjUgLyogVGhyZWFkZWRTY3JvbGxpbmdUcmVlLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNjM4M0RC
MTg2MTVCMjkwMDNFNURCNSAvKiBUaHJlYWRlZFNjcm9sbGluZ1RyZWUuY3BwICovOyB9OwogCQkw
RjYzODNERTE4NjE1QjI5MDAzRTVEQjUgLyogVGhyZWFkZWRTY3JvbGxpbmdUcmVlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjYzODNEQzE4NjE1QjI5
MDAzRTVEQjUgLyogVGhyZWFkZWRTY3JvbGxpbmdUcmVlLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEY2QTEyQkQxQTAwOTIzNzAwQzZERTcyIC8q
IERlYnVnUGFnZU92ZXJsYXlzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGNkExMkJCMUEwMDkyMzcwMEM2REU3MiAvKiBEZWJ1Z1BhZ2VPdmVybGF5
cy5jcHAgKi87IH07CisJCTBGNkExMkJFMUEwMDkyMzcwMEM2REU3MiAvKiBEZWJ1Z1BhZ2VPdmVy
bGF5cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY2
QTEyQkMxQTAwOTIzNzAwQzZERTcyIC8qIERlYnVnUGFnZU92ZXJsYXlzLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY3RDA3MzIxODg0QzQ1QzAw
QjRBRjg2IC8qIFBsYXRmb3JtVGV4dFRyYWNrTWVudS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDcyODQ3RTMxNkVCQzVCMDAwNDNDRkE0IC8qIFBsYXRm
b3JtVGV4dFRyYWNrTWVudS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTBGN0QwNzMzMTg4NEM1NkMwMEI0QUY4NiAvKiBQbGF0Zm9ybVRleHRUcmFj
ay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDcyODQ3
RTIxNkVCQzVCMDAwNDNDRkE0IC8qIFBsYXRmb3JtVGV4dFRyYWNrLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY5N0E2NTgxNTVEQTgxRTAwRkFE
RDRDIC8qIERpc3BsYXlSZWZyZXNoTW9uaXRvcklPUy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGOTdBNjU3MTU1REE4MUUwMEZBREQ0QyAvKiBEaXNw
bGF5UmVmcmVzaE1vbml0b3JJT1MubW0gKi87IH07CkBAIC03NDkzLDYgKzc0OTUsOCBAQAogCQkw
RjYwNUFFQjE1Rjk0ODQ4MDA0REYwQzAgLyogU2Nyb2xsaW5nQ29uc3RyYWludHMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2Nyb2xsaW5nQ29uc3RyYWludHMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY2MzgzREIxODYxNUIyOTAwM0U1REI1IC8qIFRocmVh
ZGVkU2Nyb2xsaW5nVHJlZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBUaHJlYWRlZFNjcm9sbGluZ1RyZWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwRjYzODNEQzE4NjE1QjI5MDAzRTVEQjUgLyogVGhyZWFkZWRTY3JvbGxpbmdUcmVlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRocmVhZGVkU2Nyb2xsaW5nVHJlZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjZBMTJCQjFBMDA5MjM3MDBDNkRFNzIgLyog
RGVidWdQYWdlT3ZlcmxheXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gRGVidWdQYWdlT3ZlcmxheXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkw
RjZBMTJCQzFBMDA5MjM3MDBDNkRFNzIgLyogRGVidWdQYWdlT3ZlcmxheXMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGVidWdQYWdlT3ZlcmxheXMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMEY5N0E2NTcxNTVEQTgxRTAwRkFERDRDIC8qIERpc3BsYXlSZWZy
ZXNoTW9uaXRvcklPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IERpc3BsYXlSZWZyZXNoTW9uaXRvcklPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMEZBMjRENzcxNjJERjkxOTAwQTNGNEMwIC8qIEdyYXBoaWNzTGF5ZXJVcGRhdGVyLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdyYXBoaWNzTGF5ZXJVcGRhdGVy
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZBMjRENzgxNjJERjkxOTAwQTNG
NEMwIC8qIEdyYXBoaWNzTGF5ZXJVcGRhdGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEdyYXBoaWNzTGF5ZXJVcGRhdGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0xNjU5Niw2ICsxNjYwMCw4IEBACiAJCQkJOTc1Q0EyODcxMzAzNjVGODAwRTk5QUQ5IC8q
IENyeXB0by5jcHAgKi8sCiAJCQkJOTc1Q0EyODgxMzAzNjVGODAwRTk5QUQ5IC8qIENyeXB0by5o
ICovLAogCQkJCTk3NUNBMjg5MTMwMzY1RjgwMEU5OUFEOSAvKiBDcnlwdG8uaWRsICovLAorCQkJ
CTBGNkExMkJCMUEwMDkyMzcwMEM2REU3MiAvKiBEZWJ1Z1BhZ2VPdmVybGF5cy5jcHAgKi8sCisJ
CQkJMEY2QTEyQkMxQTAwOTIzNzAwQzZERTcyIC8qIERlYnVnUGFnZU92ZXJsYXlzLmggKi8sCiAJ
CQkJMUFGNENFRTcxOEJDMzUwMTAwQkMyRDM0IC8qIERlZmF1bHRWaXNpdGVkTGlua1N0b3JlLmNw
cCAqLywKIAkJCQkxQUY0Q0VFODE4QkMzNTAxMDBCQzJEMzQgLyogRGVmYXVsdFZpc2l0ZWRMaW5r
U3RvcmUuaCAqLywKIAkJCQlDQ0MyQjUxMDE1RjYxMzA2MDA0OENERDYgLyogRGV2aWNlQ2xpZW50
LmggKi8sCkBAIC0yNjEwNCw2ICsyNjExMCw3IEBACiAJCQkJODFBQzZDMzYxMzFDNTdEMzAwMDlB
N0UwIC8qIFN0cmluZ0NhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjM1NDBGMzBEMDA3
ODJFMDAyMzgyRkEgLyogU3RyaW5nVHJ1bmNhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk5QjZD
NDE1MzEzNDQ5NDkwMDAwODVCNjIgLyogU3RyaW5nV2l0aERpcmVjdGlvbi5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJMEY2QTEyQkUxQTAwOTIzNzAwQzZERTcyIC8qIERlYnVnUGFnZU92ZXJsYXlzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk4NDlGNzc3NjBFRkVDNjIwMDA5MDg0OUQgLyogU3Ryb2tlU3R5
bGVBcHBsaWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzVFQjZBMzBFODFEQzRGMDBCMjU5NjUg
LyogU3R5bGVCYWNrZ3JvdW5kRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM1RUI2N0IwRTgx
RDNCRTAwQjI1OTY1IC8qIFN0eWxlQm94RGF0YS5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNzQ2OCw2
ICsyNzQ3NSw3IEBACiAJCQkJRkVCQzVGMzExNkJEMENDMzAwNjU5QkQzIC8qIERhdGFiYXNlQmFz
ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5N0JDNkEyNzE1MDVGMDgxMDAxQjc0QUMgLyogRGF0
YWJhc2VDb250ZXh0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZFNDU2RjE4MTY3N0Q3NEUwMDVF
RERGOSAvKiBEYXRhYmFzZU1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEY2QTEyQkQx
QTAwOTIzNzAwQzZERTcyIC8qIERlYnVnUGFnZU92ZXJsYXlzLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUZFQjI2RDI4MTY3QThGMkEwMEZERDI2QiAvKiBEYXRhYmFzZVNlcnZlci5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlGRURFRjg0MTE2Nzk3MTA4MDAwRTQ0NEEgLyogRGF0YWJhc2VTdHJhdGVn
eS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5N0JDNkEyQTE1MDVGMDgxMDAxQjc0QUMgLyogRGF0
YWJhc2VTeW5jLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9EZWJ1Z1BhZ2VPdmVybGF5cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RlYnVnUGFn
ZU92ZXJsYXlzLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMDFhODRhNDY1YTcyYTc2Y2UzYzkxMzc5NTU1ODdj
N2RlOGZhYzJhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EZWJ1Z1Bh
Z2VPdmVybGF5cy5jcHAKQEAgLTAsMCArMSwyOTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiRGVidWdQYWdlT3ZlcmxheXMuaCIKKworI2luY2x1ZGUgIkVs
ZW1lbnRJdGVyYXRvci5oIgorI2luY2x1ZGUgIkZyYW1lVmlldy5oIgorI2luY2x1ZGUgIkdyYXBo
aWNzQ29udGV4dC5oIgorI2luY2x1ZGUgIk1haW5GcmFtZS5oIgorI2luY2x1ZGUgIlBhZ2UuaCIK
KyNpbmNsdWRlICJQYWdlT3ZlcmxheS5oIgorI2luY2x1ZGUgIlBhZ2VPdmVybGF5Q29udHJvbGxl
ci5oIgorI2luY2x1ZGUgIlJlZ2lvbi5oIgorI2luY2x1ZGUgIlNjcm9sbGluZ0Nvb3JkaW5hdG9y
LmgiCisjaW5jbHVkZSAiU2V0dGluZ3MuaCIKKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworRGVidWdQYWdlT3ZlcmxheXMqIERlYnVnUGFnZU92ZXJsYXlz
OjpzaGFyZWREZWJ1Z092ZXJsYXlzOworCitjbGFzcyBSZWdpb25PdmVybGF5IDogcHVibGljIFJl
ZkNvdW50ZWQ8UmVnaW9uT3ZlcmxheT4sIHB1YmxpYyBQYWdlT3ZlcmxheTo6Q2xpZW50IHsKK3B1
YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxSZWdpb25PdmVybGF5PiBjcmVhdGUoTWFpbkZy
YW1lJiwgRGVidWdQYWdlT3ZlcmxheXM6OlJlZ2lvblR5cGUpOworICAgIHZpcnR1YWwgflJlZ2lv
bk92ZXJsYXkoKTsKKworICAgIHZvaWQgcmVjb21wdXRlUmVnaW9uKCk7CisgICAgUGFnZU92ZXJs
YXkmIG92ZXJsYXkoKSB7IHJldHVybiAqbV9vdmVybGF5OyB9CisKK3Byb3RlY3RlZDoKKyAgICBS
ZWdpb25PdmVybGF5KE1haW5GcmFtZSYsIENvbG9yKTsKKworICAgIHZpcnR1YWwgdm9pZCBwYWdl
T3ZlcmxheURlc3Ryb3llZChQYWdlT3ZlcmxheSYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9p
ZCB3aWxsTW92ZVRvUGFnZShQYWdlT3ZlcmxheSYsIFBhZ2UqKSBvdmVycmlkZTsKKyAgICB2aXJ0
dWFsIHZvaWQgZGlkTW92ZVRvUGFnZShQYWdlT3ZlcmxheSYsIFBhZ2UqKSBvdmVycmlkZTsKKyAg
ICB2aXJ0dWFsIHZvaWQgZHJhd1JlY3QoUGFnZU92ZXJsYXkmLCBHcmFwaGljc0NvbnRleHQmLCBj
b25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgYm9vbCBtb3Vz
ZUV2ZW50KFBhZ2VPdmVybGF5JiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jikgb3ZlcnJpZGU7
CisgICAgdmlydHVhbCB2b2lkIGRpZFNjcm9sbEZyYW1lKFBhZ2VPdmVybGF5JiwgRnJhbWUmKSBv
dmVycmlkZTsKKworICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgcmVnaW9uIGNoYW5nZWQuCisg
ICAgdmlydHVhbCBib29sIHVwZGF0ZVJlZ2lvbigpID0gMDsKKyAgICAKKyAgICBNYWluRnJhbWUm
IG1fZnJhbWU7CisgICAgUmVmUHRyPFBhZ2VPdmVybGF5PiBtX292ZXJsYXk7CisgICAgc3RkOjp1
bmlxdWVfcHRyPFJlZ2lvbj4gbV9yZWdpb247CisgICAgQ29sb3IgbV9jb2xvcjsKK307CisKKwor
Y2xhc3MgTW91c2VXaGVlbFJlZ2lvbk92ZXJsYXkgZmluYWwgOiBwdWJsaWMgUmVnaW9uT3Zlcmxh
eSB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8TW91c2VXaGVlbFJlZ2lvbk92ZXJs
YXk+IGNyZWF0ZShNYWluRnJhbWUmIGZyYW1lKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBNb3VzZVdoZWVsUmVnaW9uT3ZlcmxheShmcmFtZSkpOworICAgIH0KKworcHJpdmF0
ZToKKyAgICBNb3VzZVdoZWVsUmVnaW9uT3ZlcmxheShNYWluRnJhbWUmIGZyYW1lKQorICAgICAg
ICA6IFJlZ2lvbk92ZXJsYXkoZnJhbWUsIENvbG9yKDAuNWYsIDAuMGYsIDAuMGYsIDAuNGYpKQor
ICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIGJvb2wgdXBkYXRlUmVnaW9uKCkgb3ZlcnJpZGU7
Cit9OworCitib29sIE1vdXNlV2hlZWxSZWdpb25PdmVybGF5Ojp1cGRhdGVSZWdpb24oKQorewor
ICAgIHN0ZDo6dW5pcXVlX3B0cjxSZWdpb24+IHJlZ2lvbiA9IHN0ZDo6bWFrZV91bmlxdWU8UmVn
aW9uPigpOworCisgICAgZm9yIChhdXRvJiBlbGVtZW50IDogZGVzY2VuZGFudHNPZlR5cGU8RWxl
bWVudD4oKm1fZnJhbWUuZG9jdW1lbnQoKSkpIHsKKyAgICAgICAgaWYgKGVsZW1lbnQuaGFzRXZl
bnRMaXN0ZW5lcnMoZXZlbnROYW1lcygpLm1vdXNld2hlZWxFdmVudCkgfHwgZWxlbWVudC5oYXNF
dmVudExpc3RlbmVycyhldmVudE5hbWVzKCkud2hlZWxFdmVudCkpIHsKKyAgICAgICAgICAgIElu
dFJlY3QgZWxlbWVudFJlY3QgPSBlbGVtZW50LmJvdW5kc0luUm9vdFZpZXdTcGFjZSgpOworICAg
ICAgICAgICAgZWxlbWVudFJlY3QgPSBtX2ZyYW1lLnZpZXcoKS0+cm9vdFZpZXdUb0NvbnRlbnRz
KGVsZW1lbnRSZWN0KTsKKyAgICAgICAgICAgIHJlZ2lvbi0+dW5pdGUoUmVnaW9uKGVsZW1lbnRS
ZWN0KSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBib29sIHJlZ2lvbkNoYW5nZWQgPSAhbV9y
ZWdpb24gfHwgISgqbV9yZWdpb24gPT0gKnJlZ2lvbik7CisgICAgbV9yZWdpb24gPSBXVEY6Om1v
dmUocmVnaW9uKTsKKyAgICByZXR1cm4gcmVnaW9uQ2hhbmdlZDsKK30KKworY2xhc3MgTm9uRmFz
dFNjcm9sbGFibGVSZWdpb25PdmVybGF5IGZpbmFsIDogcHVibGljIFJlZ2lvbk92ZXJsYXkgewor
cHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPE5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uT3Zl
cmxheT4gY3JlYXRlKE1haW5GcmFtZSYgZnJhbWUpCisgICAgeworICAgICAgICByZXR1cm4gYWRv
cHRSZWYobmV3IE5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uT3ZlcmxheShmcmFtZSkpOworICAgIH0K
KworcHJpdmF0ZToKKyAgICBOb25GYXN0U2Nyb2xsYWJsZVJlZ2lvbk92ZXJsYXkoTWFpbkZyYW1l
JiBmcmFtZSkKKyAgICAgICAgOiBSZWdpb25PdmVybGF5KGZyYW1lLCBDb2xvcigwLjBmLCAwLjVm
LCAwLjBmLCAwLjRmKSkKKyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCBib29sIHVwZGF0ZVJl
Z2lvbigpIG92ZXJyaWRlOworfTsKKworYm9vbCBOb25GYXN0U2Nyb2xsYWJsZVJlZ2lvbk92ZXJs
YXk6OnVwZGF0ZVJlZ2lvbigpCit7CisgICAgc3RkOjp1bmlxdWVfcHRyPFJlZ2lvbj4gcmVnaW9u
ID0gc3RkOjptYWtlX3VuaXF1ZTxSZWdpb24+KCk7CisKKyAgICBpZiAoUGFnZSogcGFnZSA9IG1f
ZnJhbWUucGFnZSgpKSB7CisgICAgICAgIGlmIChTY3JvbGxpbmdDb29yZGluYXRvciogc2Nyb2xs
aW5nQ29vcmRpbmF0b3IgPSBwYWdlLT5zY3JvbGxpbmdDb29yZGluYXRvcigpKQorICAgICAgICAg
ICAgKnJlZ2lvbiA9IHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5jb21wdXRlTm9uRmFzdFNjcm9sbGFi
bGVSZWdpb24oJm1fZnJhbWUsIEludFBvaW50KCkpOworICAgIH0KKworICAgIGJvb2wgcmVnaW9u
Q2hhbmdlZCA9ICFtX3JlZ2lvbiB8fCAhKCptX3JlZ2lvbiA9PSAqcmVnaW9uKTsKKyAgICBtX3Jl
Z2lvbiA9IFdURjo6bW92ZShyZWdpb24pOworICAgIHJldHVybiByZWdpb25DaGFuZ2VkOworfQor
CitQYXNzUmVmUHRyPFJlZ2lvbk92ZXJsYXk+IFJlZ2lvbk92ZXJsYXk6OmNyZWF0ZShNYWluRnJh
bWUmIGZyYW1lLCBEZWJ1Z1BhZ2VPdmVybGF5czo6UmVnaW9uVHlwZSByZWdpb25UeXBlKQorewor
ICAgIHN3aXRjaCAocmVnaW9uVHlwZSkgeworICAgIGNhc2UgRGVidWdQYWdlT3ZlcmxheXM6OlJl
Z2lvblR5cGU6OldoZWVsRXZlbnRIYW5kbGVyczoKKyAgICAgICAgcmV0dXJuIE1vdXNlV2hlZWxS
ZWdpb25PdmVybGF5OjpjcmVhdGUoZnJhbWUpOworCisgICAgY2FzZSBEZWJ1Z1BhZ2VPdmVybGF5
czo6UmVnaW9uVHlwZTo6Tm9uRmFzdFNjcm9sbGFibGVSZWdpb246CisgICAgICAgIHJldHVybiBO
b25GYXN0U2Nyb2xsYWJsZVJlZ2lvbk92ZXJsYXk6OmNyZWF0ZShmcmFtZSk7CisgICAgfQorICAg
IHJldHVybiBudWxscHRyOworfQorCitSZWdpb25PdmVybGF5OjpSZWdpb25PdmVybGF5KE1haW5G
cmFtZSYgZnJhbWUsIENvbG9yIHJlZ2lvbkNvbG9yKQorICAgIDogbV9mcmFtZShmcmFtZSkKKyAg
ICAsIG1fb3ZlcmxheShQYWdlT3ZlcmxheTo6Y3JlYXRlKCp0aGlzLCBQYWdlT3ZlcmxheTo6T3Zl
cmxheVR5cGU6OkRvY3VtZW50KSkKKyAgICAsIG1fY29sb3IocmVnaW9uQ29sb3IpCit7Cit9CisK
K1JlZ2lvbk92ZXJsYXk6On5SZWdpb25PdmVybGF5KCkKK3sKKyAgICBpZiAobV9vdmVybGF5KQor
ICAgICAgICBtX2ZyYW1lLnBhZ2VPdmVybGF5Q29udHJvbGxlcigpLnVuaW5zdGFsbFBhZ2VPdmVy
bGF5KG1fb3ZlcmxheS5nZXQoKSwgUGFnZU92ZXJsYXk6OkZhZGVNb2RlOjpEb05vdEZhZGUpOwor
fQorCit2b2lkIFJlZ2lvbk92ZXJsYXk6OnBhZ2VPdmVybGF5RGVzdHJveWVkKFBhZ2VPdmVybGF5
JikKK3sKK30KKwordm9pZCBSZWdpb25PdmVybGF5Ojp3aWxsTW92ZVRvUGFnZShQYWdlT3Zlcmxh
eSYsIFBhZ2UqIHBhZ2UpCit7CisgICAgaWYgKCFwYWdlKQorICAgICAgICBtX292ZXJsYXkgPSBu
dWxscHRyOworfQorCit2b2lkIFJlZ2lvbk92ZXJsYXk6OmRpZE1vdmVUb1BhZ2UoUGFnZU92ZXJs
YXkmLCBQYWdlKiBwYWdlKQoreworICAgIGlmIChwYWdlKQorICAgICAgICByZWNvbXB1dGVSZWdp
b24oKTsKK30KKwordm9pZCBSZWdpb25PdmVybGF5OjpkcmF3UmVjdChQYWdlT3ZlcmxheSYsIEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0KQoreworICAg
IGNvbnRleHQuY2xlYXJSZWN0KGRpcnR5UmVjdCk7CisKKyAgICBpZiAoIW1fcmVnaW9uKQorICAg
ICAgICByZXR1cm47CisgICAgCisgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzYXZlcihj
b250ZXh0KTsKKworICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKG1fY29sb3IsIENvbG9yU3BhY2VT
UkdCKTsKKyAgICBmb3IgKGF1dG8gcmVjdCA6IG1fcmVnaW9uLT5yZWN0cygpKSB7CisgICAgCisg
ICAgICAgIGlmIChyZWN0LmludGVyc2VjdHMoZGlydHlSZWN0KSkKKyAgICAgICAgICAgIGNvbnRl
eHQuZmlsbFJlY3QocmVjdCk7CisgICAgfQorfQorCitib29sIFJlZ2lvbk92ZXJsYXk6Om1vdXNl
RXZlbnQoUGFnZU92ZXJsYXkmLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmKQoreworICAgIHJl
dHVybiBmYWxzZTsKK30KKwordm9pZCBSZWdpb25PdmVybGF5OjpkaWRTY3JvbGxGcmFtZShQYWdl
T3ZlcmxheSYsIEZyYW1lJikKK3sKK30KKwordm9pZCBSZWdpb25PdmVybGF5OjpyZWNvbXB1dGVS
ZWdpb24oKQoreworICAgIGlmICh1cGRhdGVSZWdpb24oKSkKKyAgICAgICAgbV9vdmVybGF5LT5z
ZXROZWVkc0Rpc3BsYXkoKTsKK30KKworRGVidWdQYWdlT3ZlcmxheXMmIERlYnVnUGFnZU92ZXJs
YXlzOjpzaGFyZWQoKQoreworICAgIGlmICghc2hhcmVkRGVidWdPdmVybGF5cykKKyAgICAgICAg
c2hhcmVkRGVidWdPdmVybGF5cyA9IG5ldyBEZWJ1Z1BhZ2VPdmVybGF5czsKKworICAgIHJldHVy
biAqc2hhcmVkRGVidWdPdmVybGF5czsKK30KKworc3RhdGljIGlubGluZSBzaXplX3QgaW5kZXhP
ZihEZWJ1Z1BhZ2VPdmVybGF5czo6UmVnaW9uVHlwZSByZWdpb25UeXBlKQoreworICAgIHJldHVy
biBzdGF0aWNfY2FzdDxzaXplX3Q+KHJlZ2lvblR5cGUpOworfQorCitSZWdpb25PdmVybGF5KiBE
ZWJ1Z1BhZ2VPdmVybGF5czo6ZW5zdXJlUmVnaW9uT3ZlcmxheUZvckZyYW1lKE1haW5GcmFtZSYg
ZnJhbWUsIFJlZ2lvblR5cGUgcmVnaW9uVHlwZSkKK3sKKyAgICBhdXRvIGl0ID0gbV9mcmFtZVJl
Z2lvbk92ZXJsYXlzLmZpbmQoJmZyYW1lKTsKKyAgICBpZiAoaXQgIT0gbV9mcmFtZVJlZ2lvbk92
ZXJsYXlzLmVuZCgpKSB7CisgICAgICAgIGF1dG8mIHZpc3VhbGl6ZXJzID0gaXQtPnZhbHVlOwor
ICAgICAgICAKKyAgICAgICAgaWYgKCF2aXN1YWxpemVyc1tpbmRleE9mKHJlZ2lvblR5cGUpXSkK
KyAgICAgICAgICAgIHZpc3VhbGl6ZXJzW2luZGV4T2YocmVnaW9uVHlwZSldID0gUmVnaW9uT3Zl
cmxheTo6Y3JlYXRlKGZyYW1lLCByZWdpb25UeXBlKTsKKworICAgICAgICByZXR1cm4gdmlzdWFs
aXplcnNbaW5kZXhPZihyZWdpb25UeXBlKV0uZ2V0KCk7CisgICAgfQorCisgICAgVmVjdG9yPFJl
ZlB0cjxSZWdpb25PdmVybGF5Pj4gdmlzdWFsaXplcnMoTnVtYmVyT2ZSZWdpb25UeXBlcyk7Cisg
ICAgCisgICAgUmVmUHRyPFJlZ2lvbk92ZXJsYXk+IHZpc3VhbGl6ZXIgPSBSZWdpb25PdmVybGF5
OjpjcmVhdGUoZnJhbWUsIHJlZ2lvblR5cGUpOworICAgIHZpc3VhbGl6ZXJzW2luZGV4T2YocmVn
aW9uVHlwZSldID0gdmlzdWFsaXplcjsKKworICAgIG1fZnJhbWVSZWdpb25PdmVybGF5cy5zZXQo
JmZyYW1lLCBXVEY6Om1vdmUodmlzdWFsaXplcnMpKTsKKyAgICByZXR1cm4gdmlzdWFsaXplci5n
ZXQoKTsKK30KKwordm9pZCBEZWJ1Z1BhZ2VPdmVybGF5czo6c2hvd1JlZ2lvbk92ZXJsYXkoTWFp
bkZyYW1lJiBmcmFtZSwgUmVnaW9uVHlwZSByZWdpb25UeXBlKQoreworICAgIFJlZ2lvbk92ZXJs
YXkqIHZpc3VhbGl6ZXIgPSBlbnN1cmVSZWdpb25PdmVybGF5Rm9yRnJhbWUoZnJhbWUsIHJlZ2lv
blR5cGUpOworICAgIGZyYW1lLnBhZ2VPdmVybGF5Q29udHJvbGxlcigpLmluc3RhbGxQYWdlT3Zl
cmxheSgmdmlzdWFsaXplci0+b3ZlcmxheSgpLCBQYWdlT3ZlcmxheTo6RmFkZU1vZGU6OkRvTm90
RmFkZSk7Cit9CisKK3ZvaWQgRGVidWdQYWdlT3ZlcmxheXM6OmhpZGVSZWdpb25PdmVybGF5KE1h
aW5GcmFtZSYgZnJhbWUsIFJlZ2lvblR5cGUgcmVnaW9uVHlwZSkKK3sKKyAgICBhdXRvIGl0ID0g
bV9mcmFtZVJlZ2lvbk92ZXJsYXlzLmZpbmQoJmZyYW1lKTsKKyAgICBpZiAoaXQgIT0gbV9mcmFt
ZVJlZ2lvbk92ZXJsYXlzLmVuZCgpKSB7CisgICAgICAgIGF1dG8mIHZpc3VhbGl6ZXJzID0gaXQt
PnZhbHVlOworICAgICAgICBpZiAoUmVnaW9uT3ZlcmxheSogdmlzdWFsaXplciA9IHZpc3VhbGl6
ZXJzW2luZGV4T2YocmVnaW9uVHlwZSldLmdldCgpKSB7CisgICAgICAgICAgICBmcmFtZS5wYWdl
T3ZlcmxheUNvbnRyb2xsZXIoKS51bmluc3RhbGxQYWdlT3ZlcmxheSgmdmlzdWFsaXplci0+b3Zl
cmxheSgpLCBQYWdlT3ZlcmxheTo6RmFkZU1vZGU6OkRvTm90RmFkZSk7CisgICAgICAgICAgICB2
aXN1YWxpemVyc1tpbmRleE9mKHJlZ2lvblR5cGUpXSA9IG51bGxwdHI7CisgICAgICAgIH0KKyAg
ICB9Cit9CisKK3ZvaWQgRGVidWdQYWdlT3ZlcmxheXM6OnJlZ2lvbkNoYW5nZWQoTWFpbkZyYW1l
JiBmcmFtZSwgUmVnaW9uVHlwZSByZWdpb25UeXBlKQoreworICAgIGlmIChSZWdpb25PdmVybGF5
KiB2aXN1YWxpemVyID0gcmVnaW9uT3ZlcmxheUZvckZyYW1lKGZyYW1lLCByZWdpb25UeXBlKSkK
KyAgICAgICAgdmlzdWFsaXplci0+cmVjb21wdXRlUmVnaW9uKCk7Cit9CisKK1JlZ2lvbk92ZXJs
YXkqIERlYnVnUGFnZU92ZXJsYXlzOjpyZWdpb25PdmVybGF5Rm9yRnJhbWUoTWFpbkZyYW1lJiBm
cmFtZSwgUmVnaW9uVHlwZSByZWdpb25UeXBlKSBjb25zdAoreworICAgIGF1dG8gaXQgPSBtX2Zy
YW1lUmVnaW9uT3ZlcmxheXMuZmluZCgmZnJhbWUpOworICAgIGlmIChpdCAhPSBtX2ZyYW1lUmVn
aW9uT3ZlcmxheXMuZW5kKCkpCisgICAgICAgIHJldHVybiBpdC0+dmFsdWUuYXQoaW5kZXhPZihy
ZWdpb25UeXBlKSkuZ2V0KCk7CisKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwordm9pZCBEZWJ1
Z1BhZ2VPdmVybGF5czo6dXBkYXRlT3ZlcmxheVJlZ2lvblZpc2liaWxpdHkoTWFpbkZyYW1lJiBm
cmFtZSwgRGVidWdPdmVybGF5UmVnaW9ucyB2aXNpYmxlUmVnaW9ucykKK3sKKyAgICBpZiAodmlz
aWJsZVJlZ2lvbnMgJiBOb25GYXN0U2Nyb2xsYWJsZVJlZ2lvbikKKyAgICAgICAgc2hvd1JlZ2lv
bk92ZXJsYXkoZnJhbWUsIFJlZ2lvblR5cGU6Ok5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uKTsKKyAg
ICBlbHNlCisgICAgICAgIGhpZGVSZWdpb25PdmVybGF5KGZyYW1lLCBSZWdpb25UeXBlOjpOb25G
YXN0U2Nyb2xsYWJsZVJlZ2lvbik7CisKKyAgICBpZiAodmlzaWJsZVJlZ2lvbnMgJiBXaGVlbEV2
ZW50SGFuZGxlclJlZ2lvbikKKyAgICAgICAgc2hvd1JlZ2lvbk92ZXJsYXkoZnJhbWUsIFJlZ2lv
blR5cGU6OldoZWVsRXZlbnRIYW5kbGVycyk7CisgICAgZWxzZQorICAgICAgICBoaWRlUmVnaW9u
T3ZlcmxheShmcmFtZSwgUmVnaW9uVHlwZTo6V2hlZWxFdmVudEhhbmRsZXJzKTsKK30KKwordm9p
ZCBEZWJ1Z1BhZ2VPdmVybGF5czo6c2V0dGluZ3NDaGFuZ2VkKE1haW5GcmFtZSYgZnJhbWUpCit7
CisgICAgRGVidWdPdmVybGF5UmVnaW9ucyBhY3RpdmVPdmVybGF5UmVnaW9ucyA9IGZyYW1lLnNl
dHRpbmdzKCkudmlzaWJsZURlYnVnT3ZlcmxheVJlZ2lvbnMoKTsKKyAgICBpZiAoIWFjdGl2ZU92
ZXJsYXlSZWdpb25zICYmICFoYXNPdmVybGF5cyhmcmFtZSkpCisgICAgICAgIHJldHVybjsKKwor
ICAgIERlYnVnUGFnZU92ZXJsYXlzOjpzaGFyZWQoKS51cGRhdGVPdmVybGF5UmVnaW9uVmlzaWJp
bGl0eShmcmFtZSwgYWN0aXZlT3ZlcmxheVJlZ2lvbnMpOworfQorCit9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0RlYnVnUGFnZU92ZXJsYXlzLmggYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0RlYnVnUGFnZU92ZXJsYXlzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTU5NDA3MjU0M2Q5ZDUzYjc5Yjhi
ZWUyOTk5NGIxNjQ0NTYzYmFiYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRGVidWdQYWdlT3ZlcmxheXMuaApAQCAtMCwwICsxLDk0IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lm
bmRlZiBEZWJ1Z1BhZ2VPdmVybGF5c19oCisjZGVmaW5lIERlYnVnUGFnZU92ZXJsYXlzX2gKKwor
I2luY2x1ZGUgIlNldHRpbmdzLmgiCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRl
IDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgTWFpbkZyYW1l
OworY2xhc3MgUmVnaW9uT3ZlcmxheTsKKworY2xhc3MgRGVidWdQYWdlT3ZlcmxheXMgeworcHVi
bGljOgorICAgIHN0YXRpYyBEZWJ1Z1BhZ2VPdmVybGF5cyYgc2hhcmVkKCk7CisKKyAgICBlbnVt
IGNsYXNzIFJlZ2lvblR5cGUgeworICAgICAgICBXaGVlbEV2ZW50SGFuZGxlcnMsCisgICAgICAg
IE5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uLAorICAgIH07CisgICAgc3RhdGljIGNvbnN0IHVuc2ln
bmVkIE51bWJlck9mUmVnaW9uVHlwZXMgPSBOb25GYXN0U2Nyb2xsYWJsZVJlZ2lvbiArIDE7CisK
KyAgICBzdGF0aWMgdm9pZCBkaWRMYXlvdXQoTWFpbkZyYW1lJik7CisgICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIHZvaWQgc2V0dGluZ3NDaGFuZ2VkKE1haW5GcmFtZSYpOworCitwcml2YXRlOgor
ICAgIHN0YXRpYyBib29sIGhhc092ZXJsYXlzKE1haW5GcmFtZSYpOworCisgICAgdm9pZCBzaG93
UmVnaW9uT3ZlcmxheShNYWluRnJhbWUmLCBSZWdpb25UeXBlKTsKKyAgICB2b2lkIGhpZGVSZWdp
b25PdmVybGF5KE1haW5GcmFtZSYsIFJlZ2lvblR5cGUpOworCisgICAgdm9pZCByZWdpb25DaGFu
Z2VkKE1haW5GcmFtZSYsIFJlZ2lvblR5cGUpOworCisgICAgYm9vbCBoYXNPdmVybGF5c0ZvckZy
YW1lKE1haW5GcmFtZSYgZnJhbWUpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9mcmFt
ZVJlZ2lvbk92ZXJsYXlzLmZpbmQoJmZyYW1lKSAhPSBtX2ZyYW1lUmVnaW9uT3ZlcmxheXMuZW5k
KCk7CisgICAgfQorICAgIAorICAgIHZvaWQgdXBkYXRlT3ZlcmxheVJlZ2lvblZpc2liaWxpdHko
TWFpbkZyYW1lJiwgRGVidWdPdmVybGF5UmVnaW9ucyk7CisKKyAgICBSZWdpb25PdmVybGF5KiBy
ZWdpb25PdmVybGF5Rm9yRnJhbWUoTWFpbkZyYW1lJiwgUmVnaW9uVHlwZSkgY29uc3Q7CisgICAg
UmVnaW9uT3ZlcmxheSogZW5zdXJlUmVnaW9uT3ZlcmxheUZvckZyYW1lKE1haW5GcmFtZSYsIFJl
Z2lvblR5cGUpOworCisgICAgSGFzaE1hcDxNYWluRnJhbWUqLCBWZWN0b3I8UmVmUHRyPFJlZ2lv
bk92ZXJsYXk+Pj4gbV9mcmFtZVJlZ2lvbk92ZXJsYXlzOworCisgICAgc3RhdGljIERlYnVnUGFn
ZU92ZXJsYXlzKiBzaGFyZWREZWJ1Z092ZXJsYXlzOworfTsKKworI2RlZmluZSBGQVNUX1JFVFVS
Tl9JRl9OT19PVkVSTEFZUyhmcmFtZSkgaWYgKExJS0VMWSghaGFzT3ZlcmxheXMoZnJhbWUpKSkg
cmV0dXJuOworCitpbmxpbmUgYm9vbCBEZWJ1Z1BhZ2VPdmVybGF5czo6aGFzT3ZlcmxheXMoTWFp
bkZyYW1lJiBmcmFtZSkKK3sKKyAgICBpZiAoIXNoYXJlZERlYnVnT3ZlcmxheXMpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiBzaGFyZWREZWJ1Z092ZXJsYXlzLT5oYXNPdmVy
bGF5c0ZvckZyYW1lKGZyYW1lKTsKK30KKworaW5saW5lIHZvaWQgRGVidWdQYWdlT3ZlcmxheXM6
OmRpZExheW91dChNYWluRnJhbWUmIGZyYW1lKQoreworICAgIEZBU1RfUkVUVVJOX0lGX05PX09W
RVJMQVlTKGZyYW1lKTsKKworICAgIHNoYXJlZERlYnVnT3ZlcmxheXMtPnJlZ2lvbkNoYW5nZWQo
ZnJhbWUsIFJlZ2lvblR5cGU6OldoZWVsRXZlbnRIYW5kbGVycyk7CisgICAgc2hhcmVkRGVidWdP
dmVybGF5cy0+cmVnaW9uQ2hhbmdlZChmcmFtZSwgUmVnaW9uVHlwZTo6Tm9uRmFzdFNjcm9sbGFi
bGVSZWdpb24pOworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9GcmFtZVZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCmlu
ZGV4IDMzMDI1YTA1NmMzNGJlNTZjOTZhYTYwZjQzNTA5ZTkwZGRmNWY0YzMuLmM1OTlmMWJhYTMz
NTc5OGIyMWMxOWI1NDczMzFiNDU4ZDIyOWMwZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRnJhbWVWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5j
cHAKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJDaHJvbWUuaCIKICNpbmNsdWRlICJDaHJv
bWVDbGllbnQuaCIKICNpbmNsdWRlICJET01XaW5kb3cuaCIKKyNpbmNsdWRlICJEZWJ1Z1BhZ2VP
dmVybGF5cy5oIgogI2luY2x1ZGUgIkRvY3VtZW50TWFya2VyQ29udHJvbGxlci5oIgogI2luY2x1
ZGUgIkV2ZW50SGFuZGxlci5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgpAQCAtMTM5Myw2ICsx
Mzk0LDggQEAgdm9pZCBGcmFtZVZpZXc6OmxheW91dChib29sIGFsbG93U3VidHJlZSkKICAgICB9
CiAKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZExheW91dChjb29raWUsIHJvb3Qp
OworICAgIGlmIChmcmFtZSgpLmlzTWFpbkZyYW1lKCkpCisgICAgICAgIERlYnVnUGFnZU92ZXJs
YXlzOjpkaWRMYXlvdXQoZnJhbWUoKS5tYWluRnJhbWUoKSk7CiAKICAgICAtLW1fbmVzdGVkTGF5
b3V0Q291bnQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmgKaW5kZXggMWE2NjU3NmZiN2JkODcyOTYx
OTAxOTNlZGViYTQ3ZTJiYmU5N2IxNi4uMzc0YWVmMGU4ZTY3YzEzYzNkMTNjMjJjYWI4MTRkMDA1
YzY3ZDc5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaApAQCAtNjAsNiArNjAsMTMgQEAgZW51bSBU
ZXh0RGlyZWN0aW9uU3VibWVudUluY2x1c2lvbkJlaGF2aW9yIHsKICAgICBUZXh0RGlyZWN0aW9u
U3VibWVudUFsd2F5c0luY2x1ZGVkCiB9OwogCitlbnVtIERlYnVnT3ZlcmxheVJlZ2lvbkZsYWdz
IHsKKyAgICBOb25GYXN0U2Nyb2xsYWJsZVJlZ2lvbiA9IDEgPDwgMCwKKyAgICBXaGVlbEV2ZW50
SGFuZGxlclJlZ2lvbiA9IDEgPDwgMSwKK307CisKK3R5cGVkZWYgdW5zaWduZWQgRGVidWdPdmVy
bGF5UmVnaW9uczsKKwogY2xhc3MgU2V0dGluZ3MgOiBwdWJsaWMgUmVmQ291bnRlZDxTZXR0aW5n
cz4gewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFNldHRpbmdzKTsgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRp
bmdzLmluIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5pbgppbmRleCAyZjVhNTQ3N2Iw
ZDgzNDIwN2E2YzA2OTNlN2IxZDQwN2M4NzM2Njg2Li44YWZmODRkYzg1YzYwMjcyYzc2NGFkNGMy
MDFkMzhiOGZkY2M4MWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdz
LmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaW4KQEAgLTU5LDYgKzU5LDcg
QEAgYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQgaW5pdGlhbD10cnVlLCBzZXROZWVkc1N0
eWxlUmVjYWxjSW5BbGxGcmFtZXM9MQogYWNjZWxlcmF0ZWRDb21wb3NpdGVkQW5pbWF0aW9uc0Vu
YWJsZWQgaW5pdGlhbD10cnVlLCBzZXROZWVkc1N0eWxlUmVjYWxjSW5BbGxGcmFtZXM9MQogc2hv
d0RlYnVnQm9yZGVycyBpbml0aWFsPWZhbHNlLCBzZXROZWVkc1N0eWxlUmVjYWxjSW5BbGxGcmFt
ZXM9MQogc2hvd1JlcGFpbnRDb3VudGVyIGluaXRpYWw9ZmFsc2UsIHNldE5lZWRzU3R5bGVSZWNh
bGNJbkFsbEZyYW1lcz0xCit2aXNpYmxlRGVidWdPdmVybGF5UmVnaW9ucyB0eXBlPURlYnVnT3Zl
cmxheVJlZ2lvbnMsIGluaXRpYWw9MAogCiAjIFRoaXMgaXMgYSBxdWlyayB3ZSBhcmUgcHJvLWFj
dGl2ZWx5IGFwcGx5aW5nIHRvIG9sZCBhcHBsaWNhdGlvbnMuIEl0IGNoYW5nZXMga2V5Ym9hcmQg
ZXZlbnQgZGlzcGF0Y2hpbmcsCiAjIG1ha2luZyBrZXlJZGVudGlmaWVyIGF2YWlsYWJsZSBvbiBr
ZXlwcmVzcyBldmVudHMsIG1ha2luZyBjaGFyQ29kZSBhdmFpbGFibGUgb24ga2V5ZG93bi9rZXl1
cCBldmVudHMsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJlZmVyZW5j
ZXNEZWZpbml0aW9ucy5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByZWZlcmVuY2VzRGVm
aW5pdGlvbnMuaAppbmRleCA5OGZjYmRiZTcyMjliZjVlNzE1MzliYTczZThmMGVlOTZjZDQ5ZDNi
Li5jNzA4ODIzMWM4MGY4MWU0YjM5NzZmOGNhMTQ1NWU1ZmViNDNkNGE0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJlZmVyZW5jZXNEZWZpbml0aW9ucy5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcmVmZXJlbmNlc0RlZmluaXRpb25zLmgKQEAgLTIzNiw2
ICsyMzYsOSBAQAogICAgIG1hY3JvKExvZ3NQYWdlTWVzc2FnZXNUb1N5c3RlbUNvbnNvbGVFbmFi
bGVkLCBsb2dzUGFnZU1lc3NhZ2VzVG9TeXN0ZW1Db25zb2xlRW5hYmxlZCwgQm9vbCwgYm9vbCwg
ZmFsc2UpIFwKICAgICBcCiAKKyNkZWZpbmUgRk9SX0VBQ0hfV0VCS0lUX0RFQlVHX1VJTlQzMl9Q
UkVGRVJFTkNFKG1hY3JvKSBcCisgICAgbWFjcm8oVmlzaWJsZURlYnVnT3ZlcmxheVJlZ2lvbnMs
IHZpc2libGVEZWJ1Z092ZXJsYXlSZWdpb25zLCBVSW50MzIsIHVpbnQzMl90LCAwKQorCiAjaWYg
UExBVEZPUk0oQ09DT0EpCiAKICNpZiBQTEFURk9STShJT1MpCkBAIC0yODMsNiArMjg2LDcgQEAK
IAogI2RlZmluZSBGT1JfRUFDSF9XRUJLSVRfREVCVUdfUFJFRkVSRU5DRShtYWNybykgXAogICAg
IEZPUl9FQUNIX1dFQktJVF9ERUJVR19CT09MX1BSRUZFUkVOQ0UobWFjcm8pIFwKKyAgICBGT1Jf
RUFDSF9XRUJLSVRfREVCVUdfVUlOVDMyX1BSRUZFUkVOQ0UobWFjcm8pIFwKICAgICBcCiAKICNk
ZWZpbmUgRk9SX0VBQ0hfV0VCS0lUX1BSRUZFUkVOQ0UobWFjcm8pIFwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcmVmZXJlbmNlcy5tbSBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcmVmZXJlbmNlcy5tbQppbmRleCA4YTE3
MDBlZDQ0Y2UzZTY3YmRkZjUxYjMwYzQ0ZmE3ZWUwOTg3MzcwLi44NDg3ZTI1YmQ4YzYyYWQ1OGFk
NzI1MDcxZGJiZTkzZWNlYTFlNDYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLUHJlZmVyZW5jZXMubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1ByZWZlcmVuY2VzLm1tCkBAIC0yMDMsNiArMjAzLDE2IEBAIHN0YXRp
YyBfV0tTdG9yYWdlQmxvY2tpbmdQb2xpY3kgdG9BUEkoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46
OlN0b3JhZ2VCbG9ja2luZ1BvCiAgICAgX3ByZWZlcmVuY2VzLT5zZXRUaWxlZFNjcm9sbGluZ0lu
ZGljYXRvclZpc2libGUodGlsZWRTY3JvbGxpbmdJbmRpY2F0b3JWaXNpYmxlKTsKIH0KIAorLSAo
X1dLRGVidWdPdmVybGF5UmVnaW9ucylfdmlzaWJsZURlYnVnT3ZlcmxheVJlZ2lvbnMKK3sKKyAg
ICByZXR1cm4gX3ByZWZlcmVuY2VzLT52aXNpYmxlRGVidWdPdmVybGF5UmVnaW9ucygpOworfQor
CistICh2b2lkKV9zZXRWaXNpYmxlRGVidWdPdmVybGF5UmVnaW9uczooX1dLRGVidWdPdmVybGF5
UmVnaW9ucylyZWdpb25GbGFncworeworICAgIF9wcmVmZXJlbmNlcy0+c2V0VmlzaWJsZURlYnVn
T3ZlcmxheVJlZ2lvbnMocmVnaW9uRmxhZ3MpOworfQorCiAtIChCT09MKV9kZXZlbG9wZXJFeHRy
YXNFbmFibGVkCiB7CiAgICAgcmV0dXJuIF9wcmVmZXJlbmNlcy0+ZGV2ZWxvcGVyRXh0cmFzRW5h
YmxlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1ByZWZlcmVuY2VzUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1ByZWZlcmVuY2VzUHJpdmF0ZS5oCmluZGV4IGIxMmMxNDllOTI4ZmZlOWViNzg0Y2EyYTY1
Njc5NWQ2NTZkZTA3Y2MuLmZjZDJmNWY3YWI1ZjA2N2Y1MmY3NzRiM2NmZGJjOTA4ZWY1NTNmMWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcmVmZXJl
bmNlc1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
UHJlZmVyZW5jZXNQcml2YXRlLmgKQEAgLTM3LDYgKzM3LDExIEBAIHR5cGVkZWYgTlNfRU5VTShO
U0ludGVnZXIsIF9XS1N0b3JhZ2VCbG9ja2luZ1BvbGljeSkgewogICAgIF9XS1N0b3JhZ2VCbG9j
a2luZ1BvbGljeUJsb2NrQWxsLAogfSBXS19FTlVNX0FWQUlMQUJMRSgxMF8xMCwgOF8wKTsKIAor
dHlwZWRlZiBOU19PUFRJT05TKE5TVUludGVnZXIsIF9XS0RlYnVnT3ZlcmxheVJlZ2lvbnMpIHsK
KyAgICBfV0tOb25GYXN0U2Nyb2xsYWJsZVJlZ2lvbiA9IDEgPDwgMCwKKyAgICBfV0tXaGVlbEV2
ZW50SGFuZGxlclJlZ2lvbiA9IDEgPDwgMQorfSBXS19FTlVNX0FWQUlMQUJMRSgxMF8xMSwgOV8w
KTsKKwogQGludGVyZmFjZSBXS1ByZWZlcmVuY2VzIChXS1ByaXZhdGUpCiAKIC8vIEZJWE1FOiBU
aGlzIHByb3BlcnR5IHNob3VsZCBub3QgaGF2ZSB0aGUgdmVyYiAiaXMiIGluIGl0LgpAQCAtNDYs
NiArNTEsNyBAQCB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBfV0tTdG9yYWdlQmxvY2tpbmdQ
b2xpY3kpIHsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldENvbXBvc2l0aW5nQm9y
ZGVyc1Zpc2libGU6KSBCT09MIF9jb21wb3NpdGluZ0JvcmRlcnNWaXNpYmxlOwogQHByb3BlcnR5
IChub25hdG9taWMsIHNldHRlcj1fc2V0Q29tcG9zaXRpbmdSZXBhaW50Q291bnRlcnNWaXNpYmxl
OikgQk9PTCBfY29tcG9zaXRpbmdSZXBhaW50Q291bnRlcnNWaXNpYmxlOwogQHByb3BlcnR5IChu
b25hdG9taWMsIHNldHRlcj1fc2V0VGlsZWRTY3JvbGxpbmdJbmRpY2F0b3JWaXNpYmxlOikgQk9P
TCBfdGlsZWRTY3JvbGxpbmdJbmRpY2F0b3JWaXNpYmxlOworQHByb3BlcnR5IChub25hdG9taWMs
IHNldHRlcj1fc2V0VmlzaWJsZURlYnVnT3ZlcmxheVJlZ2lvbnM6KSBfV0tEZWJ1Z092ZXJsYXlS
ZWdpb25zIF92aXNpYmxlRGVidWdPdmVybGF5UmVnaW9uczsKIAogQHByb3BlcnR5IChub25hdG9t
aWMsIHNldHRlcj1fc2V0RGV2ZWxvcGVyRXh0cmFzRW5hYmxlZDopIEJPT0wgX2RldmVsb3BlckV4
dHJhc0VuYWJsZWQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMv
V2ViUHJlZmVyZW5jZXNNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYlBy
ZWZlcmVuY2VzTWFjLm1tCmluZGV4IDcwZjljZmM3NmQ4YWFjZGZkYjZlZTc0MmEwNmJjNDRlNjc4
ZGNjZDguLjJmYTM1MmU0MjYzOGVhMTY2ODAzNmY5OTAxMzgzYTc0OTE2YjRkNjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViUHJlZmVyZW5jZXNNYWMubW0KKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJQcmVmZXJlbmNlc01hYy5tbQpAQCAt
MTMxLDYgKzEzMSwxNyBAQCBzdGF0aWMgdm9pZCBzZXREZWJ1Z0Jvb2xWYWx1ZUlmSW5Vc2VyRGVm
YXVsdHMoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBTdAogICAgIHN0b3JlLnNldEJv
b2xWYWx1ZUZvcktleShrZXksIFtvYmplY3QgYm9vbFZhbHVlXSk7CiB9CiAKK3N0YXRpYyB2b2lk
IHNldERlYnVnVUludDMyVmFsdWVJZkluVXNlckRlZmF1bHRzKGNvbnN0IFN0cmluZyYgaWRlbnRp
ZmllciwgY29uc3QgU3RyaW5nJiBrZXlQcmVmaXgsIGNvbnN0IFN0cmluZyYgZ2xvYmFsRGVidWdL
ZXlQcmVmaXgsIGNvbnN0IFN0cmluZyYga2V5LCBXZWJQcmVmZXJlbmNlc1N0b3JlJiBzdG9yZSkK
K3sKKyAgICBpZCBvYmplY3QgPSBkZWJ1Z1VzZXJEZWZhdWx0c1ZhbHVlKGlkZW50aWZpZXIsIGtl
eVByZWZpeCwgZ2xvYmFsRGVidWdLZXlQcmVmaXgsIGtleSk7CisgICAgaWYgKCFvYmplY3QpCisg
ICAgICAgIHJldHVybjsKKyAgICBpZiAoIVtvYmplY3QgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxl
Y3Rvcih1bnNpZ25lZEludGVnZXJWYWx1ZSldKQorICAgICAgICByZXR1cm47CisKKyAgICBzdG9y
ZS5zZXRVSW50MzJWYWx1ZUZvcktleShrZXksIFtvYmplY3QgdW5zaWduZWRJbnRlZ2VyVmFsdWVd
KTsKK30KKwogdm9pZCBXZWJQcmVmZXJlbmNlczo6cGxhdGZvcm1Jbml0aWFsaXplU3RvcmUoKQog
ewogI2RlZmluZSBJTklUSUFMSVpFX0RFQlVHX1BSRUZFUkVOQ0VfRlJPTV9OU1VTRVJERUZBVUxU
UyhLZXlVcHBlciwgS2V5TG93ZXIsIFR5cGVOYW1lLCBUeXBlLCBEZWZhdWx0VmFsdWUpIFwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCBkMDNi
YWI3YTY2ZTA1OTUwNzE4NGE5YTQ5MzI4MjBjNGNmNDc3YjJjLi44NGMzMzUwYmIwYmZhMTk0MmZh
NGM1ZmI5ZGZjOTFiMzk0OTE5YzZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0yNjk1LDYgKzI2OTUsOCBAQCB2b2lkIFdlYlBhZ2U6OnVw
ZGF0ZVByZWZlcmVuY2VzKGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlKQogICAgIHNl
dHRpbmdzLnNldFNob3dEZWJ1Z0JvcmRlcnMoc3RvcmUuZ2V0Qm9vbFZhbHVlRm9yS2V5KFdlYlBy
ZWZlcmVuY2VzS2V5Ojpjb21wb3NpdGluZ0JvcmRlcnNWaXNpYmxlS2V5KCkpKTsKICAgICBzZXR0
aW5ncy5zZXRTaG93UmVwYWludENvdW50ZXIoc3RvcmUuZ2V0Qm9vbFZhbHVlRm9yS2V5KFdlYlBy
ZWZlcmVuY2VzS2V5Ojpjb21wb3NpdGluZ1JlcGFpbnRDb3VudGVyc1Zpc2libGVLZXkoKSkpOwog
ICAgIHNldHRpbmdzLnNldFNob3dUaWxlZFNjcm9sbGluZ0luZGljYXRvcihzdG9yZS5nZXRCb29s
VmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6OnRpbGVkU2Nyb2xsaW5nSW5kaWNhdG9yVmlz
aWJsZUtleSgpKSk7CisgICAgc2V0dGluZ3Muc2V0VmlzaWJsZURlYnVnT3ZlcmxheVJlZ2lvbnMo
c3RvcmUuZ2V0VUludDMyVmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6OnZpc2libGVEZWJ1
Z092ZXJsYXlSZWdpb25zS2V5KCkpKTsKKyAgICAKICAgICBzZXR0aW5ncy5zZXRBZ2dyZXNzaXZl
VGlsZVJldGVudGlvbkVuYWJsZWQoc3RvcmUuZ2V0Qm9vbFZhbHVlRm9yS2V5KFdlYlByZWZlcmVu
Y2VzS2V5OjphZ2dyZXNzaXZlVGlsZVJldGVudGlvbkVuYWJsZWRLZXkoKSkpOwogICAgIHNldHRp
bmdzLnNldFRlbXBvcmFyeVRpbGVDb2hvcnRSZXRlbnRpb25FbmFibGVkKHN0b3JlLmdldEJvb2xW
YWx1ZUZvcktleShXZWJQcmVmZXJlbmNlc0tleTo6dGVtcG9yYXJ5VGlsZUNvaG9ydFJldGVudGlv
bkVuYWJsZWRLZXkoKSkpOwogICAgIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1
cmVzKCkuc2V0Q1NTUmVnaW9uc0VuYWJsZWQoc3RvcmUuZ2V0Qm9vbFZhbHVlRm9yS2V5KFdlYlBy
ZWZlcmVuY2VzS2V5Ojpjc3NSZWdpb25zRW5hYmxlZEtleSgpKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdB
cmVhLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9SZW1vdGVMYXll
clRyZWVEcmF3aW5nQXJlYS5tbQppbmRleCAxYTFlM2YyNTU0NjJjNGUwMmY0ZDZiNTk1OTNmMzUw
NGM0NGYwMmI0Li45MzI1YTUxNzcyZTU5NzNkM2ZmMmIxMGNiNTU5ZTAyZmNmM2RkZTAwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1JlbW90ZUxheWVy
VHJlZURyYXdpbmdBcmVhLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEubW0KQEAgLTM3LDYgKzM3LDcgQEAKICNp
bXBvcnQgIlJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yVHJhbnNhY3Rpb24uaCIKICNpbXBvcnQg
IldlYlBhZ2UuaCIKICNpbXBvcnQgIldlYlByb2Nlc3MuaCIKKyNpbXBvcnQgPFdlYkNvcmUvRGVi
dWdQYWdlT3ZlcmxheXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvRnJhbWUuaD4KICNpbXBvcnQgPFdl
YkNvcmUvRnJhbWVWaWV3Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL01haW5GcmFtZS5oPgpAQCAtMTY5
LDYgKzE3MCw5IEBAIHZvaWQgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OnVwZGF0ZVByZWZl
cmVuY2VzKGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmKQogICAgIHNldHRpbmdzLnNldEZpeGVk
UG9zaXRpb25DcmVhdGVzU3RhY2tpbmdDb250ZXh0KHRydWUpOwogCiAgICAgbV9yb290TGF5ZXIt
PnNldFNob3dEZWJ1Z0JvcmRlcihzZXR0aW5ncy5zaG93RGVidWdCb3JkZXJzKCkpOworCisgICAg
aWYgKE1haW5GcmFtZSogbWFpbkZyYW1lID0gbV93ZWJQYWdlLm1haW5GcmFtZSgpKQorICAgICAg
ICBEZWJ1Z1BhZ2VPdmVybGF5czo6c2V0dGluZ3NDaGFuZ2VkKCptYWluRnJhbWUpOwogfQogCiAj
aWYgUExBVEZPUk0oSU9TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbSBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEu
bW0KaW5kZXggZmY3ZmFjOWRiYThlZmY5ODUzNDYwYWVmN2UyYTQ4ZTdmMTk1NWE1My4uYzEzOTU3
ZmRjMjc4ZTg5NGNhZjJiYTM5OGQyYTgxYjljZGJjZDMyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJl
YS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29y
ZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tCkBAIC0zOSw2ICszOSw3IEBACiAjaW1wb3J0ICJXZWJQ
YWdlUHJveHlNZXNzYWdlcy5oIgogI2ltcG9ydCAiV2ViUHJvY2Vzcy5oIgogI2ltcG9ydCA8UXVh
cnR6Q29yZS9RdWFydHpDb3JlLmg+CisjaW1wb3J0IDxXZWJDb3JlL0RlYnVnUGFnZU92ZXJsYXlz
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ZyYW1lVmlldy5oPgogI2ltcG9ydCA8V2ViQ29yZS9HcmFw
aGljc0NvbnRleHQuaD4KICNpbXBvcnQgPFdlYkNvcmUvR3JhcGhpY3NMYXllckNBLmg+CkBAIC0y
MDAsNiArMjAxLDkgQEAgdm9pZCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6dXBkYXRl
UHJlZmVyZW5jZXMoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYKICAgICBzZXR0aW5ncy5zZXRB
Y2NlbGVyYXRlZENvbXBvc2l0aW5nRm9yRml4ZWRQb3NpdGlvbkVuYWJsZWQodHJ1ZSk7CiAgICAg
c2V0dGluZ3Muc2V0Rml4ZWRQb3NpdGlvbkNyZWF0ZXNTdGFja2luZ0NvbnRleHQodHJ1ZSk7CiAK
KyAgICBpZiAoTWFpbkZyYW1lKiBtYWluRnJhbWUgPSBtX3dlYlBhZ2UubWFpbkZyYW1lKCkpCisg
ICAgICAgIERlYnVnUGFnZU92ZXJsYXlzOjpzZXR0aW5nc0NoYW5nZWQoKm1haW5GcmFtZSk7CisK
ICAgICBib29sIHNob3dUaWxlZFNjcm9sbGluZ0luZGljYXRvciA9IHNldHRpbmdzLnNob3dUaWxl
ZFNjcm9sbGluZ0luZGljYXRvcigpOwogICAgIGlmIChzaG93VGlsZWRTY3JvbGxpbmdJbmRpY2F0
b3IgPT0gISFtX2RlYnVnSW5mb0xheWVyKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9U
b29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYmZmZjRmZDRlODA5MjU4M2Yz
YmZiMjk2ZjY1YTQyZTQ0MzAyNzFjMC4uMWIzMWYyYjMzZjJmMjc5ZThmY2E1YzE2ODgxMzRmOGIx
OTQ0MjM5OSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDI3IEBACisyMDE0LTEwLTMxICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFz
ZXJAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBwYWdlIG92ZXJsYXlzIHRoYXQgc2hvdyByZWdp
b25zIHdpdGggbW91c2VXaGVlbCBldmVudCBoYW5kbGVycywgYW5kIHRoZSBub24tZmFzdC1zY3Jv
bGxhYmxlIHJlZ2lvbiwgYW5kIGNvZGUgdG8gdG9nZ2xlIHRoZW0gaW4gTWluaUJyb3dzZXIgV0sy
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzgyNTcK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAg
IEFkZCBhICJEZWJ1ZyBPdmVybGF5cyIgc3VibWVudSBpdGVtIHVuZGVyICJXZWJLaXQyLW9ubHkg
U2V0dGluZ3MiIHdoaWNoIGFsbG93cworICAgICAgICB0aGUgdXNlciB0byB0b2dnbGUgcmVnaW9u
IHBhZ2Ugb3ZlcmxheXMgb24gYW5kIG9mZi4gVHdvIG92ZXJsYXlzIGFyZSBhdmFpbGFibGUsCisg
ICAgICAgIGZvciB0aGUgbm9uLWZhc3Qgc2Nyb2xsYWJsZSByZWdpb24sIGFuZCB0aGUgcmVnaW9u
IG9mIGVsZW1lbnQgd2l0aCB3aGVlbAorICAgICAgICBldmVudCBoYW5kbGVycy4KKworICAgICAg
ICAqIE1pbmlCcm93c2VyL21hYy9TZXR0aW5nc0NvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBNaW5p
QnJvd3Nlci9tYWMvU2V0dGluZ3NDb250cm9sbGVyLm06CisgICAgICAgICgtW1NldHRpbmdzQ29u
dHJvbGxlciBfcG9wdWxhdGVNZW51XSk6CisgICAgICAgICgtW1NldHRpbmdzQ29udHJvbGxlciB2
YWxpZGF0ZU1lbnVJdGVtOl0pOgorICAgICAgICAoLVtTZXR0aW5nc0NvbnRyb2xsZXIgbm9uRmFz
dFNjcm9sbGFibGVSZWdpb25PdmVybGF5VmlzaWJsZV0pOgorICAgICAgICAoLVtTZXR0aW5nc0Nv
bnRyb2xsZXIgd2hlZWxFdmVudEhhbmRsZXJSZWdpb25PdmVybGF5VmlzaWJsZV0pOgorICAgICAg
ICAoLVtTZXR0aW5nc0NvbnRyb2xsZXIgcHJlZmVyZW5jZUtleUZvclJlZ2lvbk92ZXJsYXlUYWc6
XSk6CisgICAgICAgICgtW1NldHRpbmdzQ29udHJvbGxlciB0b2dnbGVEZWJ1Z092ZXJsYXk6XSk6
CisgICAgICAgICgtW1NldHRpbmdzQ29udHJvbGxlciBkZWJ1Z092ZXJsYXlWaXNpYmxlOl0pOgor
ICAgICAgICAqIE1pbmlCcm93c2VyL21hYy9XSzJCcm93c2VyV2luZG93Q29udHJvbGxlci5tOgor
ICAgICAgICAoLVtXSzJCcm93c2VyV2luZG93Q29udHJvbGxlciBkaWRDaGFuZ2VTZXR0aW5nc10p
OgorCiAyMDE0LTEwLTIzICBSb2dlciBGb25nICA8cm9nZXJfZm9uZ0BhcHBsZS5jb20+CiAKICAg
ICAgICAgW1dpbl0gU2tpcCBmYWlsaW5nIEpTQyB0ZXN0cyBmb2xsb3dpbmcgcjE3NTA3OApkaWZm
IC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvbWFjL1NldHRpbmdzQ29udHJvbGxlci5oIGIvVG9v
bHMvTWluaUJyb3dzZXIvbWFjL1NldHRpbmdzQ29udHJvbGxlci5oCmluZGV4IDQ2NGE4N2I2ODY1
Nzc5ODAzODgwYzdlNmE4MzBlZDNhNjc1ZjU1ZmQuLjA5MDQ4YmIxNzZiNTI0NDI3ZGQ2ZWNkMDc3
NmE4M2JlMTI0NDMzOTggMTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlCcm93c2VyL21hYy9TZXR0aW5n
c0NvbnRyb2xsZXIuaAorKysgYi9Ub29scy9NaW5pQnJvd3Nlci9tYWMvU2V0dGluZ3NDb250cm9s
bGVyLmgKQEAgLTM4LDYgKzM4LDggQEAKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkg
Qk9PTCB1c2VQYWdpbmF0ZWRNb2RlOwogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBC
T09MIGxheWVyQm9yZGVyc1Zpc2libGU7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkp
IEJPT0wgdGlsZWRTY3JvbGxpbmdJbmRpY2F0b3JWaXNpYmxlOworQHByb3BlcnR5IChub25hdG9t
aWMsIHJlYWRvbmx5KSBCT09MIG5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uT3ZlcmxheVZpc2libGU7
CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIEJPT0wgd2hlZWxFdmVudEhhbmRsZXJS
ZWdpb25PdmVybGF5VmlzaWJsZTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgQk9P
TCB1c2VVSVNpZGVDb21wb3NpdGluZzsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkg
Qk9PTCBzdWJQaXhlbENTU09NTWV0cmljc0VuYWJsZWQ7CiBAcHJvcGVydHkgKG5vbmF0b21pYywg
cmVhZG9ubHkpIE5TU3RyaW5nICpkZWZhdWx0VVJMOwpkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJy
b3dzZXIvbWFjL1NldHRpbmdzQ29udHJvbGxlci5tIGIvVG9vbHMvTWluaUJyb3dzZXIvbWFjL1Nl
dHRpbmdzQ29udHJvbGxlci5tCmluZGV4IGRiZTk1NWI5ZGQwODZjYmZmNzc5ZGZlYjFhZjc1ZGVj
OTRiMWEzYmMuLjVhZTNlOGY4ZWIxNzg1ZWEwODBiMjIwNGVkYTU3ZTVkOTgxOTdlYjUgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL01pbmlCcm93c2VyL21hYy9TZXR0aW5nc0NvbnRyb2xsZXIubQorKysgYi9U
b29scy9NaW5pQnJvd3Nlci9tYWMvU2V0dGluZ3NDb250cm9sbGVyLm0KQEAgLTM1LDYgKzM1LDkg
QEAKIHN0YXRpYyBOU1N0cmluZyAqIGNvbnN0IExheWVyQm9yZGVyc1Zpc2libGVQcmVmZXJlbmNl
S2V5ID0gQCJMYXllckJvcmRlcnNWaXNpYmxlIjsKIHN0YXRpYyBOU1N0cmluZyAqIGNvbnN0IFRp
bGVkU2Nyb2xsaW5nSW5kaWNhdG9yVmlzaWJsZVByZWZlcmVuY2VLZXkgPSBAIlRpbGVkU2Nyb2xs
aW5nSW5kaWNhdG9yVmlzaWJsZSI7CiAKK3N0YXRpYyBOU1N0cmluZyAqIGNvbnN0IE5vbkZhc3RT
Y3JvbGxhYmxlUmVnaW9uT3ZlcmxheVZpc2libGVQcmVmZXJlbmNlS2V5ID0gQCJOb25GYXN0U2Ny
b2xsYWJsZVJlZ2lvbk92ZXJsYXlWaXNpYmxlIjsKK3N0YXRpYyBOU1N0cmluZyAqIGNvbnN0IFdo
ZWVsRXZlbnRIYW5kbGVyUmVnaW9uT3ZlcmxheVZpc2libGVQcmVmZXJlbmNlS2V5ID0gQCJXaGVl
bEV2ZW50SGFuZGxlclJlZ2lvbk92ZXJsYXlWaXNpYmxlIjsKKwogc3RhdGljIE5TU3RyaW5nICog
Y29uc3QgVXNlVHJhbnNwYXJlbnRXaW5kb3dzUHJlZmVyZW5jZUtleSA9IEAiVXNlVHJhbnNwYXJl
bnRXaW5kb3dzIjsKIHN0YXRpYyBOU1N0cmluZyAqIGNvbnN0IFVzZVBhZ2luYXRlZE1vZGVQcmVm
ZXJlbmNlS2V5ID0gQCJVc2VQYWdpbmF0ZWRNb2RlIjsKIHN0YXRpYyBOU1N0cmluZyAqIGNvbnN0
IEVuYWJsZVN1YlBpeGVsQ1NTT01NZXRyaWNzUHJlZmVyZW5jZUtleSA9IEAiRW5hYmxlU3ViUGl4
ZWxDU1NPTU1ldHJpY3MiOwpAQCAtNDIsNiArNDUsMTEgQEAKIC8vIFRoaXMgZGVmYXVsdCBuYW1l
IGludGVudGlvbmFsbHkgb3ZlcmxhcHMgd2l0aCB0aGUga2V5IHRoYXQgV2ViS2l0MiBjaGVja3Mg
d2hlbiBjcmVhdGluZyBhIHZpZXcuCiBzdGF0aWMgTlNTdHJpbmcgKiBjb25zdCBVc2VSZW1vdGVM
YXllclRyZWVEcmF3aW5nQXJlYVByZWZlcmVuY2VLZXkgPSBAIldlYktpdDJVc2VSZW1vdGVMYXll
clRyZWVEcmF3aW5nQXJlYSI7CiAKK3R5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIERlYnVnT3Zl
cnlsYXlNZW51SXRlbVRhZykgeworICAgIE5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uT3ZlcmxheVRh
ZyA9IDEwMCwKKyAgICBXaGVlbEV2ZW50SGFuZGxlclJlZ2lvbk92ZXJsYXlUYWcKK307CisKIEBp
bXBsZW1lbnRhdGlvbiBTZXR0aW5nc0NvbnRyb2xsZXIKIAogQHN5bnRoZXNpemUgbWVudT1fbWVu
dTsKQEAgLTk0LDkgKzEwMiwyOCBAQCAtICh2b2lkKV9wb3B1bGF0ZU1lbnUKICAgICBbc2VsZiBf
YWRkSXRlbVdpdGhUaXRsZTpAIlNob3cgTGF5ZXIgQm9yZGVycyIgYWN0aW9uOkBzZWxlY3Rvcih0
b2dnbGVTaG93TGF5ZXJCb3JkZXJzOikgaW5kZW50ZWQ6Tk9dOwogCiAgICAgW3NlbGYgX2FkZEhl
YWRlcldpdGhUaXRsZTpAIldlYktpdDItb25seSBTZXR0aW5ncyJdOworCiAgICAgW3NlbGYgX2Fk
ZEl0ZW1XaXRoVGl0bGU6QCJTaG93IFRpbGVkIFNjcm9sbGluZyBJbmRpY2F0b3IiIGFjdGlvbjpA
c2VsZWN0b3IodG9nZ2xlU2hvd1RpbGVkU2Nyb2xsaW5nSW5kaWNhdG9yOikgaW5kZW50ZWQ6WUVT
XTsKICAgICBbc2VsZiBfYWRkSXRlbVdpdGhUaXRsZTpAIlVzZSBVSS1TaWRlIENvbXBvc2l0aW5n
IiBhY3Rpb246QHNlbGVjdG9yKHRvZ2dsZVVzZVVJU2lkZUNvbXBvc2l0aW5nOikgaW5kZW50ZWQ6
WUVTXTsKIAorICAgIE5TTWVudUl0ZW0gKmRlYnVnT3ZlcmxheXNTdWJtZW51SXRlbSA9IFtbTlNN
ZW51SXRlbSBhbGxvY10gaW5pdFdpdGhUaXRsZTpAIkRlYnVnIE92ZXJsYXlzIiBhY3Rpb246bmls
IGtleUVxdWl2YWxlbnQ6QCIiXTsKKyAgICBOU01lbnUqIGRlYnVnT3ZlcmxheXNNZW51ID0gW1tO
U01lbnUgYWxsb2NdIGluaXRXaXRoVGl0bGU6QCJEZWJ1ZyBPdmVybGF5cyJdOworICAgIFtkZWJ1
Z092ZXJsYXlzU3VibWVudUl0ZW0gc2V0U3VibWVudTpkZWJ1Z092ZXJsYXlzTWVudV07CisKKyAg
ICBOU01lbnVJdGVtICpub25GYXN0U2Nyb2xsYWJsZVJlZ2lvbkl0ZW0gPSBbW05TTWVudUl0ZW0g
YWxsb2NdIGluaXRXaXRoVGl0bGU6QCJOb24tZmFzdCBTY3JvbGxhYmxlIFJlZ2lvbiIgYWN0aW9u
OkBzZWxlY3Rvcih0b2dnbGVEZWJ1Z092ZXJsYXk6KSBrZXlFcXVpdmFsZW50OkAiIl07CisgICAg
W25vbkZhc3RTY3JvbGxhYmxlUmVnaW9uSXRlbSBzZXRUYWc6Tm9uRmFzdFNjcm9sbGFibGVSZWdp
b25PdmVybGF5VGFnXTsKKyAgICBbbm9uRmFzdFNjcm9sbGFibGVSZWdpb25JdGVtIHNldFRhcmdl
dDpzZWxmXTsKKyAgICBbZGVidWdPdmVybGF5c01lbnUgYWRkSXRlbTpbbm9uRmFzdFNjcm9sbGFi
bGVSZWdpb25JdGVtIGF1dG9yZWxlYXNlXV07CisKKyAgICBOU01lbnVJdGVtICp3aGVlbEV2ZW50
SGFuZGxlclJlZ2lvbkl0ZW0gPSBbW05TTWVudUl0ZW0gYWxsb2NdIGluaXRXaXRoVGl0bGU6QCJX
aGVlbCBFdmVudCBIYW5kbGVyIFJlZ2lvbiIgYWN0aW9uOkBzZWxlY3Rvcih0b2dnbGVEZWJ1Z092
ZXJsYXk6KSBrZXlFcXVpdmFsZW50OkAiIl07CisgICAgW3doZWVsRXZlbnRIYW5kbGVyUmVnaW9u
SXRlbSBzZXRUYWc6V2hlZWxFdmVudEhhbmRsZXJSZWdpb25PdmVybGF5VGFnXTsKKyAgICBbd2hl
ZWxFdmVudEhhbmRsZXJSZWdpb25JdGVtIHNldFRhcmdldDpzZWxmXTsKKyAgICBbZGVidWdPdmVy
bGF5c01lbnUgYWRkSXRlbTpbd2hlZWxFdmVudEhhbmRsZXJSZWdpb25JdGVtIGF1dG9yZWxlYXNl
XV07CisgICAgW2RlYnVnT3ZlcmxheXNNZW51IHJlbGVhc2VdOworICAgIAorICAgIFtfbWVudSBh
ZGRJdGVtOmRlYnVnT3ZlcmxheXNTdWJtZW51SXRlbV07CisgICAgW2RlYnVnT3ZlcmxheXNTdWJt
ZW51SXRlbSByZWxlYXNlXTsKKwogICAgIFtzZWxmIF9hZGRIZWFkZXJXaXRoVGl0bGU6QCJXZWJL
aXQxLW9ubHkgU2V0dGluZ3MiXTsKICAgICBbc2VsZiBfYWRkSXRlbVdpdGhUaXRsZTpAIkVuYWJs
ZSBTdWJwaXhlbCBDU1NPTSBNZXRyaWNzIiBhY3Rpb246QHNlbGVjdG9yKHRvZ2dsZUVuYWJsZVN1
YlBpeGVsQ1NTT01NZXRyaWNzOikgaW5kZW50ZWQ6WUVTXTsKIH0KQEAgLTExOSw2ICsxNDYsOCBA
QCAtIChCT09MKXZhbGlkYXRlTWVudUl0ZW06KE5TTWVudUl0ZW0gKiltZW51SXRlbQogICAgICAg
ICBbbWVudUl0ZW0gc2V0U3RhdGU6W3NlbGYgdXNlVUlTaWRlQ29tcG9zaXRpbmddID8gTlNPblN0
YXRlIDogTlNPZmZTdGF0ZV07CiAgICAgZWxzZSBpZiAoYWN0aW9uID09IEBzZWxlY3Rvcih0b2dn
bGVFbmFibGVTdWJQaXhlbENTU09NTWV0cmljczopKQogICAgICAgICBbbWVudUl0ZW0gc2V0U3Rh
dGU6W3NlbGYgc3ViUGl4ZWxDU1NPTU1ldHJpY3NFbmFibGVkXSA/IE5TT25TdGF0ZSA6IE5TT2Zm
U3RhdGVdOworICAgIGVsc2UgaWYgKGFjdGlvbiA9PSBAc2VsZWN0b3IodG9nZ2xlRGVidWdPdmVy
bGF5OikpCisgICAgICAgIFttZW51SXRlbSBzZXRTdGF0ZTpbc2VsZiBkZWJ1Z092ZXJsYXlWaXNp
YmxlOm1lbnVJdGVtXSA/IE5TT25TdGF0ZSA6IE5TT2ZmU3RhdGVdOwogCiAgICAgcmV0dXJuIFlF
UzsKIH0KQEAgLTIwMSw2ICsyMzAsNDQgQEAgLSAoQk9PTClzdWJQaXhlbENTU09NTWV0cmljc0Vu
YWJsZWQKICAgICByZXR1cm4gW1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10g
Ym9vbEZvcktleTpFbmFibGVTdWJQaXhlbENTU09NTWV0cmljc1ByZWZlcmVuY2VLZXldOwogfQog
CistIChCT09MKW5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uT3ZlcmxheVZpc2libGUKK3sKKyAgICBy
ZXR1cm4gW1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gYm9vbEZvcktleTpO
b25GYXN0U2Nyb2xsYWJsZVJlZ2lvbk92ZXJsYXlWaXNpYmxlUHJlZmVyZW5jZUtleV07Cit9CisK
Ky0gKEJPT0wpd2hlZWxFdmVudEhhbmRsZXJSZWdpb25PdmVybGF5VmlzaWJsZQoreworICAgIHJl
dHVybiBbW05TVXNlckRlZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRzXSBib29sRm9yS2V5Oldo
ZWVsRXZlbnRIYW5kbGVyUmVnaW9uT3ZlcmxheVZpc2libGVQcmVmZXJlbmNlS2V5XTsKK30KKwor
LSAoTlNTdHJpbmcgKilwcmVmZXJlbmNlS2V5Rm9yUmVnaW9uT3ZlcmxheVRhZzooTlNVSW50ZWdl
cil0YWcKK3sKKyAgICBzd2l0Y2ggKHRhZykgeworICAgIGNhc2UgTm9uRmFzdFNjcm9sbGFibGVS
ZWdpb25PdmVybGF5VGFnOgorICAgICAgICByZXR1cm4gTm9uRmFzdFNjcm9sbGFibGVSZWdpb25P
dmVybGF5VmlzaWJsZVByZWZlcmVuY2VLZXk7CisKKyAgICBjYXNlIFdoZWVsRXZlbnRIYW5kbGVy
UmVnaW9uT3ZlcmxheVRhZzoKKyAgICAgICAgcmV0dXJuIFdoZWVsRXZlbnRIYW5kbGVyUmVnaW9u
T3ZlcmxheVZpc2libGVQcmVmZXJlbmNlS2V5OworICAgIH0KKyAgICByZXR1cm4gbmlsOworfQor
CistICh2b2lkKXRvZ2dsZURlYnVnT3ZlcmxheTooaWQpc2VuZGVyCit7CisgICAgTlNTdHJpbmcg
KnByZWZlcmVuY2VLZXkgPSBbc2VsZiBwcmVmZXJlbmNlS2V5Rm9yUmVnaW9uT3ZlcmxheVRhZzpb
c2VuZGVyIHRhZ11dOworICAgIGlmIChwcmVmZXJlbmNlS2V5KQorICAgICAgICBbc2VsZiBfdG9n
Z2xlQm9vbGVhbkRlZmF1bHQ6cHJlZmVyZW5jZUtleV07Cit9CisKKy0gKEJPT0wpZGVidWdPdmVy
bGF5VmlzaWJsZTooTlNNZW51SXRlbSAqKW1lbnVJdGVtCit7CisgICAgTlNTdHJpbmcgKnByZWZl
cmVuY2VLZXkgPSBbc2VsZiBwcmVmZXJlbmNlS2V5Rm9yUmVnaW9uT3ZlcmxheVRhZzpbbWVudUl0
ZW0gdGFnXV07CisgICAgaWYgKHByZWZlcmVuY2VLZXkpCisgICAgICAgIHJldHVybiBbW05TVXNl
ckRlZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRzXSBib29sRm9yS2V5OnByZWZlcmVuY2VLZXld
OworCisgICAgcmV0dXJuIE5POworfQorCiAtIChOU1N0cmluZyAqKWRlZmF1bHRVUkwKIHsKICAg
ICBOU1N0cmluZyAqY3VzdG9tRGVmYXVsdFVSTCA9IFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRV
c2VyRGVmYXVsdHNdIHN0cmluZ0ZvcktleTpEZWZhdWx0VVJMUHJlZmVyZW5jZUtleV07CmRpZmYg
LS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci9tYWMvV0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIu
bSBiL1Rvb2xzL01pbmlCcm93c2VyL21hYy9XSzJCcm93c2VyV2luZG93Q29udHJvbGxlci5tCmlu
ZGV4IDQxZTU3N2M5MTQ4ZTIzNzE2OWMyMThhYjNkOWJjZTUyMTRkMzExZGUuLmFhZWQ1MGE0Yzkz
ODZhYTQ4YmRkMzZhNGYwNWE2MjdkNjYzNWEyYmYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlCcm93
c2VyL21hYy9XSzJCcm93c2VyV2luZG93Q29udHJvbGxlci5tCisrKyBiL1Rvb2xzL01pbmlCcm93
c2VyL21hYy9XSzJCcm93c2VyV2luZG93Q29udHJvbGxlci5tCkBAIC0yOTgsNiArMjk4LDE0IEBA
IC0gKHZvaWQpZGlkQ2hhbmdlU2V0dGluZ3MKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBf
d2ViVmlldy5fcGFnaW5hdGlvbk1vZGUgPSBfV0tQYWdpbmF0aW9uTW9kZVVucGFnaW5hdGVkOwog
ICAgIH0KKyAgICAKKyAgICBOU1VJbnRlZ2VyIHZpc2libGVPdmVybGF5UmVnaW9ucyA9IDA7Cisg
ICAgaWYgKHNldHRpbmdzLm5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uT3ZlcmxheVZpc2libGUpCisg
ICAgICAgIHZpc2libGVPdmVybGF5UmVnaW9ucyB8PSBfV0tOb25GYXN0U2Nyb2xsYWJsZVJlZ2lv
bjsKKyAgICBpZiAoc2V0dGluZ3Mud2hlZWxFdmVudEhhbmRsZXJSZWdpb25PdmVybGF5VmlzaWJs
ZSkKKyAgICAgICAgdmlzaWJsZU92ZXJsYXlSZWdpb25zIHw9IF9XS1doZWVsRXZlbnRIYW5kbGVy
UmVnaW9uOworICAgIAorICAgIHByZWZlcmVuY2VzLl92aXNpYmxlRGVidWdPdmVybGF5UmVnaW9u
cyA9IHZpc2libGVPdmVybGF5UmVnaW9uczsKIH0KIAogLSAodm9pZClvYnNlcnZlVmFsdWVGb3JL
ZXlQYXRoOihOU1N0cmluZyAqKWtleVBhdGggb2ZPYmplY3Q6KGlkKW9iamVjdCBjaGFuZ2U6KE5T
RGljdGlvbmFyeSAqKWNoYW5nZSBjb250ZXh0Oih2b2lkICopY29udGV4dAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>240761</attachid>
            <date>2014-10-31 15:29:31 -0700</date>
            <delta_ts>2014-11-03 16:13:12 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-138257-20141031152939.patch</filename>
            <type>text/plain</type>
            <size>45113</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc1NDI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGYxNTczZWQ3NWRiMGI2
NTUzOWZlOTQzYzdkYWUxOTVkMzcyMTM4Yi4uNjY5Mjk5MGE4YmI0OTdhY2QxYzQyMGQyNjEwNWNi
ODYxNzYxODYyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDE0LTEwLTMxICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBwYWdlIG92
ZXJsYXlzIHRoYXQgc2hvdyByZWdpb25zIHdpdGggbW91c2VXaGVlbCBldmVudCBoYW5kbGVycywg
YW5kIHRoZSBub24tZmFzdC1zY3JvbGxhYmxlIHJlZ2lvbiwgYW5kIGNvZGUgdG8gdG9nZ2xlIHRo
ZW0gaW4gTWluaUJyb3dzZXIgV0syCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMzgyNTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBZGQgY29kZSBmb3IgZGVidWdnaW5nIHBhZ2Ugb3ZlcmxheXMgdGhhdCBz
aG93IHRoZSBub24tZmFzdCBzY3JvbGxhYmxlIHJlZ2lvbiwKKyAgICAgICAgYW5kIHRoZSByZWdp
b24gd2l0aCB3aGVlbCBldmVudCBoYW5kbGVycy4gVGhlIGxpc3Qgb2YgcmVnaW9uIHR5cGVzIGlz
IGludGVuZGVkCisgICAgICAgIHRvIGJlIGVhc2lseSBleHRlbnNpYmxlLgorICAgICAgICAKKyAg
ICAgICAgQSBzaW5nbGV0b24gRGVidWdQYWdlT3ZlcmxheXMgbWFpbnRhaW5zIGEgbWFwIG9mIEZy
YW1lIC0+IHZlY3RvciBvZiBvdmVybGF5cy4KKyAgICAgICAgQSBwdXJlbHkgaW5saW5lIGNvZGUg
cGF0aCBpcyBwcm92aWRlZCBzbyB0aGF0IERlYnVnUGFnZU92ZXJsYXlzOjpkaWRMYXlvdXQoKSBp
cworICAgICAgICBmYXN0LgorICAgICAgICAKKyAgICAgICAgRm9yIGVhY2ggcmVnaW9uIHR5cGUs
IGEgUGFnZU92ZXJsYXk6OkNsaWVudCBzdWJjbGFzcyBrbm93cyBob3cgdG8gZ2VuZXJhdGUKKyAg
ICAgICAgdGhlIHJlZ2lvbiwgd2hpY2ggaXMgcGFpbnRlZCBpbnRvIGEgZG9jdW1lbnQtbGV2ZWwg
cGFnZSBvdmVybGF5LgorICAgICAgICAKKyAgICAgICAgQWRkIGEgc2V0IG9mIGJpdGZsYWdzIHRv
IFNldHRpbmdzIHRvIGNvbnRyb2wgcmVnaW9uIHZpc2liaWxpdHkuCisKKyAgICAgICAgKiBXZWJD
b3JlLmV4cC5pbjoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
CisgICAgICAgICogcGFnZS9EZWJ1Z1BhZ2VPdmVybGF5cy5jcHA6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6UmVnaW9uT3ZlcmxheTo6b3ZlcmxheSk6CisgICAgICAgIChXZWJDb3JlOjpNb3Vz
ZVdoZWVsUmVnaW9uT3ZlcmxheTo6dXBkYXRlUmVnaW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok5v
bkZhc3RTY3JvbGxhYmxlUmVnaW9uT3ZlcmxheTo6dXBkYXRlUmVnaW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlZ2lvbk92ZXJsYXk6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZWdpb25P
dmVybGF5OjpSZWdpb25PdmVybGF5KToKKyAgICAgICAgKFdlYkNvcmU6OlJlZ2lvbk92ZXJsYXk6
On5SZWdpb25PdmVybGF5KToKKyAgICAgICAgKFdlYkNvcmU6OlJlZ2lvbk92ZXJsYXk6OnBhZ2VP
dmVybGF5RGVzdHJveWVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlZ2lvbk92ZXJsYXk6OndpbGxN
b3ZlVG9QYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlZ2lvbk92ZXJsYXk6OmRpZE1vdmVUb1Bh
Z2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVnaW9uT3ZlcmxheTo6ZHJhd1JlY3QpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVnaW9uT3ZlcmxheTo6bW91c2VFdmVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZWdpb25PdmVybGF5OjpkaWRTY3JvbGxGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpSZWdp
b25PdmVybGF5OjpyZWNvbXB1dGVSZWdpb24pOgorICAgICAgICAoV2ViQ29yZTo6RGVidWdQYWdl
T3ZlcmxheXM6OnNoYXJlZCk6CisgICAgICAgIChXZWJDb3JlOjppbmRleE9mKToKKyAgICAgICAg
KFdlYkNvcmU6OkRlYnVnUGFnZU92ZXJsYXlzOjplbnN1cmVSZWdpb25PdmVybGF5Rm9yRnJhbWUp
OgorICAgICAgICAoV2ViQ29yZTo6RGVidWdQYWdlT3ZlcmxheXM6OnNob3dSZWdpb25PdmVybGF5
KToKKyAgICAgICAgKFdlYkNvcmU6OkRlYnVnUGFnZU92ZXJsYXlzOjpoaWRlUmVnaW9uT3Zlcmxh
eSk6CisgICAgICAgIChXZWJDb3JlOjpEZWJ1Z1BhZ2VPdmVybGF5czo6cmVnaW9uQ2hhbmdlZCk6
CisgICAgICAgIChXZWJDb3JlOjpEZWJ1Z1BhZ2VPdmVybGF5czo6cmVnaW9uT3ZlcmxheUZvckZy
YW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkRlYnVnUGFnZU92ZXJsYXlzOjp1cGRhdGVPdmVybGF5
UmVnaW9uVmlzaWJpbGl0eSk6CisgICAgICAgIChXZWJDb3JlOjpEZWJ1Z1BhZ2VPdmVybGF5czo6
c2V0dGluZ3NDaGFuZ2VkKToKKyAgICAgICAgKiBwYWdlL0RlYnVnUGFnZU92ZXJsYXlzLmg6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6RGVidWdQYWdlT3ZlcmxheXM6Omhhc092ZXJsYXlzRm9y
RnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6RGVidWdQYWdlT3ZlcmxheXM6Omhhc092ZXJsYXlz
KToKKyAgICAgICAgKFdlYkNvcmU6OkRlYnVnUGFnZU92ZXJsYXlzOjpkaWRMYXlvdXQpOgorICAg
ICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6
bGF5b3V0KToKKyAgICAgICAgKiBwYWdlL1NldHRpbmdzLmg6CisgICAgICAgICogcGFnZS9TZXR0
aW5ncy5pbjoKKwogMjAxNC0xMC0zMSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgog
CiAgICAgICAgIE1ha2UgQ1NTRGVmYXVsdFN0eWxlU2hlZXRzOjplbnN1cmVEZWZhdWx0U3R5bGVT
aGVldHNGb3JFbGVtZW50KCkgZmFzdGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggODkwZTZmOTI3MzM1OGQ1MjU1
M2YyMDkyMjJkOWYzZDVkMWY5ODViOC4uNWQ3YzgzNjY5YTkxOTE5NGUyNDE2YWFiNDQ1MzEyYTJk
ZDgyNjUyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDE0LTEwLTMxICBTaW1vbiBG
cmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBwYWdlIG92ZXJs
YXlzIHRoYXQgc2hvdyByZWdpb25zIHdpdGggbW91c2VXaGVlbCBldmVudCBoYW5kbGVycywgYW5k
IHRoZSBub24tZmFzdC1zY3JvbGxhYmxlIHJlZ2lvbiwgYW5kIGNvZGUgdG8gdG9nZ2xlIHRoZW0g
aW4gTWluaUJyb3dzZXIgV0syCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMzgyNTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KyAgICAgICAgCisgICAgICAgIEFkZCBwcml2YXRlIHByZWZzIHRvIGNvbnRyb2wgdmlzaWJpbGl0
eSBvZiBkZWJ1Zy1yZWxhdGVkIHBhZ2UgcmVnaW9uIG92ZXJsYXlzLgorCisgICAgICAgICogU2hh
cmVkL1dlYlByZWZlcmVuY2VzRGVmaW5pdGlvbnMuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0NvY29hL1dLUHJlZmVyZW5jZXMubW06CisgICAgICAgICgtW1dLUHJlZmVyZW5jZXMgX3Zpc2li
bGVEZWJ1Z092ZXJsYXlSZWdpb25zXSk6CisgICAgICAgICgtW1dLUHJlZmVyZW5jZXMgX3NldFZp
c2libGVEZWJ1Z092ZXJsYXlSZWdpb25zOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tQcmVmZXJlbmNlc1ByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dlYlBy
ZWZlcmVuY2VzTWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpzZXREZWJ1Z1VJbnQzMlZhbHVlSWZJ
blVzZXJEZWZhdWx0cyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp1cGRhdGVQcmVmZXJlbmNlcyk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OnVwZGF0ZVByZWZl
cmVuY2VzKTogVXBkYXRlIHRoZSBvdmVybGF5cy4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tOgorICAgICAgICAoV2ViS2l0
OjpUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6dXBkYXRlUHJlZmVyZW5jZXMpOiBVcGRh
dGUgdGhlIG92ZXJsYXlzLgorCiAyMDE0LTEwLTMxICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0
b25AYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04gKHIxNzUzNzYpOiBPY2Nhc2lvbmFs
IG51bGwgZGVyZWYgd2hlbiBkb2luZyBhIGRpY3Rpb25hcnkgbG9va3VwCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMu
dHh0CmluZGV4IDBhOWEwNWQ5ZTA3ZmU0NWViYTc0NzE0YjcyMTRhYjU5YjIyNWFjOGUuLjdmNzll
NjE3MjYxZjgyYzRhODFiMjU4ZmU0ODc5ZTNjMDM2ZDUzM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0
CkBAIC0xODg3LDYgKzE4ODcsNyBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGFnZS9ET01X
aW5kb3cuY3BwCiAgICAgcGFnZS9ET01XaW5kb3dFeHRlbnNpb24uY3BwCiAgICAgcGFnZS9ET01X
aW5kb3dQcm9wZXJ0eS5jcHAKKyAgICBwYWdlL0RlYnVnUGFnZU92ZXJsYXlzLmNwcAogICAgIHBh
Z2UvRGVmYXVsdFZpc2l0ZWRMaW5rU3RvcmUuY3BwCiAgICAgcGFnZS9EZXZpY2VDb250cm9sbGVy
LmNwcAogICAgIHBhZ2UvRGlhZ25vc3RpY0xvZ2dpbmdLZXlzLmNwcApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5p
bgppbmRleCA3NDNlMjNjYzcwMmM5ZGU4MGY4OGQwODQwOGI3NTk3MWJjNWJhZDgwLi5hZDA4ZGZj
ZTQ3NTFkNGE1YzFmZDE5YjdhM2YxZTlhNWQ4OWNlNWU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmV4cC5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpA
QCAtNzUxLDYgKzc1MSw3IEBAIF9fWk43V2ViQ29yZTE3Q3JlZGVudGlhbFN0b3JhZ2UyNGdldEZy
b21QZXJzaXN0ZW50U3RvcmFnZUVSS05TXzE1UHJvdGVjdGlvblNwYWNlCiBfX1pON1dlYkNvcmUx
N0NyZWRlbnRpYWxTdG9yYWdlM2dldEVSS05TXzE1UHJvdGVjdGlvblNwYWNlRQogX19aTjdXZWJD
b3JlMTdET01JbXBsZW1lbnRhdGlvbjEzaXNYTUxNSU1FVHlwZUVSS04zV1RGNlN0cmluZ0UKIF9f
Wk43V2ViQ29yZTE3RE9NSW1wbGVtZW50YXRpb24xNGlzVGV4dE1JTUVUeXBlRVJLTjNXVEY2U3Ry
aW5nRQorX19aTjdXZWJDb3JlMTdEZWJ1Z1BhZ2VPdmVybGF5czE1c2V0dGluZ3NDaGFuZ2VkRVJO
U185TWFpbkZyYW1lRQogX19aTjdXZWJDb3JlMTdHbHlwaFBhZ2VUcmVlTm9kZTE4dHJlZUdseXBo
UGFnZUNvdW50RXYKIF9fWk43V2ViQ29yZTE3SFRNTE9wdGlvbkVsZW1lbnQ4c2VsZWN0ZWRFdgog
X19aTjdXZWJDb3JlMTdIVE1MU2VsZWN0RWxlbWVudDIwb3B0aW9uU2VsZWN0ZWRCeVVzZXJFaWJi
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hw
cm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagppbmRl
eCBkYmMxNmRkMDQzNGIzMjMyMjAxOGU3NTMxYWZkMDdkOWM0MjRiNmVmLi4wZTM4NjlkYTk4MmY3
MTNjZmQ1NmM1ZTliOGFjYzc3OTE5ZDM3NGMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oKQEAgLTcxNDAsNiArNzE0MCw3IEBACiAgICAgPENs
Q29tcGlsZSBJbmNsdWRlPSIuLlxwYWdlXERPTVdpbmRvd0V4dGVuc2lvbi5jcHAiIC8+CiAgICAg
PENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwYWdlXERPTVdpbmRvd1Byb3BlcnR5LmNwcCIgLz4KICAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBhZ2VcRGVmYXVsdFZpc2l0ZWRMaW5rU3RvcmUuY3Bw
IiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGFnZVxEZWJ1Z1BhZ2VPdmVybGF5cy5j
cHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwYWdlXERyYWdDb250cm9sbGVyLmNw
cCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBhZ2Vcc2Nyb2xsaW5nXGNvb3JkaW5h
dGVkZ3JhcGhpY3NcU2Nyb2xsaW5nQ29vcmRpbmF0b3JDb29yZGluYXRlZEdyYXBoaWNzLmNwcCIg
Lz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBhZ2Vcc2Nyb2xsaW5nXGNvb3JkaW5hdGVk
Z3JhcGhpY3NcU2Nyb2xsaW5nU3RhdGVOb2RlQ29vcmRpbmF0ZWRHcmFwaGljcy5jcHAiIC8+CkBA
IC0xOTE0OCw2ICsxOTE0OSw3IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwYWdlXERP
TVdpbmRvdy5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGFnZVxET01XaW5kb3dF
eHRlbnNpb24uaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBhZ2VcRE9NV2luZG93
UHJvcGVydHkuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBhZ2VcRGVidWdQYWdl
T3ZlcmxheXMuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBhZ2VcRGVmYXVsdFZp
c2l0ZWRMaW5rU3RvcmUuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBhZ2VcRHJh
Z0FjdGlvbnMuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBhZ2VcRHJhZ0NsaWVu
dC5oIiAvPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNv
cmUudmN4cHJvai5maWx0ZXJzIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNv
cmUudmN4cHJvai5maWx0ZXJzCmluZGV4IGM1ZjY5YmU2ZTAyOGE0NGMwM2M5MTA5ZDk4YTA0MzA2
ZjQ2NjA1M2YuLjRlMjJlODE4NzE3ZGNlNmM2M2I4NmI3OGU2MGQ5YzgwOTZhYmNhMTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmls
dGVycworKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9q
LmZpbHRlcnMKQEAgLTcyOSw2ICs3MjksOSBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5c
cGFnZVxET01XaW5kb3dQcm9wZXJ0eS5jcHAiPgogICAgICAgPEZpbHRlcj5wYWdlPC9GaWx0ZXI+
CiAgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwYWdlXERlYnVn
UGFnZU92ZXJsYXlzLmNwcCI+CisgICAgICA8RmlsdGVyPnBhZ2U8L0ZpbHRlcj4KKyAgICA8L0Ns
Q29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBhZ2VcRGVmYXVsdFZpc2l0ZWRM
aW5rU3RvcmUuY3BwIj4KICAgICAgIDxGaWx0ZXI+cGFnZTwvRmlsdGVyPgogICAgIDwvQ2xDb21w
aWxlPgpAQCAtMTUxMTYsNiArMTUxMTksOSBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
aHRtbFxVUkxVdGlscy5oIj4KICAgICAgIDxGaWx0ZXI+aHRtbDwvRmlsdGVyPgogICAgIDwvQ2xJ
bmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGFnZVxEZWJ1Z1BhZ2VPdmVybGF5
cy5oIj4KKyAgICAgIDxGaWx0ZXI+cGFnZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGFnZVxEZWZhdWx0VmlzaXRlZExpbmtTdG9yZS5oIj4K
ICAgICAgIDxGaWx0ZXI+cGFnZTwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDYyMzE3
ODhmMGM1Nzc1Yzg1ODg5ZWQ4ZGVhMmIwMmNhYzI3ZTJiMzcuLjRiZWZlOWM3NGU0ODFmNDZmNWIz
YWUzMTVlODg3NzdmMGNmNTM1NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTUzMyw2ICs1MzMsOCBAQAogCQkwRjYwNUFFRDE1
Rjk0ODQ4MDA0REYwQzAgLyogU2Nyb2xsaW5nQ29uc3RyYWludHMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNjA1QUVCMTVGOTQ4NDgwMDRERjBDMCAv
KiBTY3JvbGxpbmdDb25zdHJhaW50cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTBGNjM4M0REMTg2MTVCMjkwMDNFNURCNSAvKiBUaHJlYWRlZFNj
cm9sbGluZ1RyZWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEY2MzgzREIxODYxNUIyOTAwM0U1REI1IC8qIFRocmVhZGVkU2Nyb2xsaW5nVHJlZS5j
cHAgKi87IH07CiAJCTBGNjM4M0RFMTg2MTVCMjkwMDNFNURCNSAvKiBUaHJlYWRlZFNjcm9sbGlu
Z1RyZWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
NjM4M0RDMTg2MTVCMjkwMDNFNURCNSAvKiBUaHJlYWRlZFNjcm9sbGluZ1RyZWUuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjZBMTJCRDFBMDA5
MjM3MDBDNkRFNzIgLyogRGVidWdQYWdlT3ZlcmxheXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY2QTEyQkIxQTAwOTIzNzAwQzZERTcyIC8qIERl
YnVnUGFnZU92ZXJsYXlzLmNwcCAqLzsgfTsKKwkJMEY2QTEyQkUxQTAwOTIzNzAwQzZERTcyIC8q
IERlYnVnUGFnZU92ZXJsYXlzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRjZBMTJCQzFBMDA5MjM3MDBDNkRFNzIgLyogRGVidWdQYWdlT3ZlcmxheXMu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjdE
MDczMjE4ODRDNDVDMDBCNEFGODYgLyogUGxhdGZvcm1UZXh0VHJhY2tNZW51LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzI4NDdFMzE2RUJDNUIwMDA0
M0NGQTQgLyogUGxhdGZvcm1UZXh0VHJhY2tNZW51LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY3RDA3MzMxODg0QzU2QzAwQjRBRjg2IC8qIFBs
YXRmb3JtVGV4dFRyYWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwNzI4NDdFMjE2RUJDNUIwMDA0M0NGQTQgLyogUGxhdGZvcm1UZXh0VHJhY2suaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjk3QTY1
ODE1NURBODFFMDBGQURENEMgLyogRGlzcGxheVJlZnJlc2hNb25pdG9ySU9TLm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY5N0E2NTcxNTVEQTgxRTAw
RkFERDRDIC8qIERpc3BsYXlSZWZyZXNoTW9uaXRvcklPUy5tbSAqLzsgfTsKQEAgLTc0OTUsNiAr
NzQ5Nyw4IEBACiAJCTBGNjA1QUVCMTVGOTQ4NDgwMDRERjBDMCAvKiBTY3JvbGxpbmdDb25zdHJh
aW50cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JvbGxpbmdDb25zdHJh
aW50cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjYzODNEQjE4NjE1QjI5MDAz
RTVEQjUgLyogVGhyZWFkZWRTY3JvbGxpbmdUcmVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFRocmVhZGVkU2Nyb2xsaW5nVHJlZS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTBGNjM4M0RDMTg2MTVCMjkwMDNFNURCNSAvKiBUaHJlYWRlZFNjcm9s
bGluZ1RyZWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGhyZWFkZWRTY3Jv
bGxpbmdUcmVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNkExMkJCMUEwMDky
MzcwMEM2REU3MiAvKiBEZWJ1Z1BhZ2VPdmVybGF5cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBEZWJ1Z1BhZ2VPdmVybGF5cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTBGNkExMkJDMUEwMDkyMzcwMEM2REU3MiAvKiBEZWJ1Z1BhZ2VPdmVybGF5
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEZWJ1Z1BhZ2VPdmVybGF5cy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjk3QTY1NzE1NURBODFFMDBGQURENEMg
LyogRGlzcGxheVJlZnJlc2hNb25pdG9ySU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gRGlzcGxheVJlZnJlc2hNb25pdG9ySU9TLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkwRkEyNEQ3NzE2MkRGOTE5MDBBM0Y0QzAgLyogR3JhcGhpY3NMYXll
clVwZGF0ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR3JhcGhp
Y3NMYXllclVwZGF0ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkEyNEQ3
ODE2MkRGOTE5MDBBM0Y0QzAgLyogR3JhcGhpY3NMYXllclVwZGF0ZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gR3JhcGhpY3NMYXllclVwZGF0ZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTE2NjAzLDYgKzE2NjA3LDggQEAKIAkJCQk5NzVDQTI4NzEzMDM2
NUY4MDBFOTlBRDkgLyogQ3J5cHRvLmNwcCAqLywKIAkJCQk5NzVDQTI4ODEzMDM2NUY4MDBFOTlB
RDkgLyogQ3J5cHRvLmggKi8sCiAJCQkJOTc1Q0EyODkxMzAzNjVGODAwRTk5QUQ5IC8qIENyeXB0
by5pZGwgKi8sCisJCQkJMEY2QTEyQkIxQTAwOTIzNzAwQzZERTcyIC8qIERlYnVnUGFnZU92ZXJs
YXlzLmNwcCAqLywKKwkJCQkwRjZBMTJCQzFBMDA5MjM3MDBDNkRFNzIgLyogRGVidWdQYWdlT3Zl
cmxheXMuaCAqLywKIAkJCQkxQUY0Q0VFNzE4QkMzNTAxMDBCQzJEMzQgLyogRGVmYXVsdFZpc2l0
ZWRMaW5rU3RvcmUuY3BwICovLAogCQkJCTFBRjRDRUU4MThCQzM1MDEwMEJDMkQzNCAvKiBEZWZh
dWx0VmlzaXRlZExpbmtTdG9yZS5oICovLAogCQkJCUNDQzJCNTEwMTVGNjEzMDYwMDQ4Q0RENiAv
KiBEZXZpY2VDbGllbnQuaCAqLywKQEAgLTI2MTE1LDYgKzI2MTIxLDcgQEAKIAkJCQk4MUFDNkMz
NjEzMUM1N0QzMDAwOUE3RTAgLyogU3RyaW5nQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAogCQkJ
CUIyMzU0MEYzMEQwMDc4MkUwMDIzODJGQSAvKiBTdHJpbmdUcnVuY2F0b3IuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTlCNkM0MTUzMTM0NDk0OTAwMDA4NUI2MiAvKiBTdHJpbmdXaXRoRGlyZWN0aW9u
LmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjZBMTJCRTFBMDA5MjM3MDBDNkRFNzIgLyogRGVidWdQ
YWdlT3ZlcmxheXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTg0OUY3Nzc2MEVGRUM2MjAwMDkwODQ5
RCAvKiBTdHJva2VTdHlsZUFwcGxpZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNUVCNkEzMEU4
MURDNEYwMEIyNTk2NSAvKiBTdHlsZUJhY2tncm91bmREYXRhLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlCQzVFQjY3QjBFODFEM0JFMDBCMjU5NjUgLyogU3R5bGVCb3hEYXRhLmggaW4gSGVhZGVycyAq
LywKQEAgLTI3NDgwLDYgKzI3NDg3LDcgQEAKIAkJCQlGRUJDNUYzMTE2QkQwQ0MzMDA2NTlCRDMg
LyogRGF0YWJhc2VCYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk3QkM2QTI3MTUwNUYwODEw
MDFCNzRBQyAvKiBEYXRhYmFzZUNvbnRleHQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkU0NTZG
MTgxNjc3RDc0RTAwNUVEREY5IC8qIERhdGFiYXNlTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQkwRjZBMTJCRDFBMDA5MjM3MDBDNkRFNzIgLyogRGVidWdQYWdlT3ZlcmxheXMuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJRkVCMjZEMjgxNjdBOEYyQTAwRkREMjZCIC8qIERhdGFiYXNlU2Vy
dmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZFREVGODQxMTY3OTcxMDgwMDBFNDQ0QSAvKiBE
YXRhYmFzZVN0cmF0ZWd5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk3QkM2QTJBMTUwNUYwODEw
MDFCNzRBQyAvKiBEYXRhYmFzZVN5bmMuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0RlYnVnUGFnZU92ZXJsYXlzLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRGVidWdQYWdlT3ZlcmxheXMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjEwMWE4NGE0NjVhNzJhNzZj
ZTNjOTEzNzk1NTU4N2M3ZGU4ZmFjMmEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0RlYnVnUGFnZU92ZXJsYXlzLmNwcApAQCAtMCwwICsxLDI5OCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJEZWJ1Z1BhZ2VPdmVybGF5cy5oIgor
CisjaW5jbHVkZSAiRWxlbWVudEl0ZXJhdG9yLmgiCisjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCisj
aW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCisjaW5jbHVkZSAiTWFpbkZyYW1lLmgiCisjaW5j
bHVkZSAiUGFnZS5oIgorI2luY2x1ZGUgIlBhZ2VPdmVybGF5LmgiCisjaW5jbHVkZSAiUGFnZU92
ZXJsYXlDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiUmVnaW9uLmgiCisjaW5jbHVkZSAiU2Nyb2xs
aW5nQ29vcmRpbmF0b3IuaCIKKyNpbmNsdWRlICJTZXR0aW5ncy5oIgorI2luY2x1ZGUgPHd0Zi9S
ZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitEZWJ1Z1BhZ2VPdmVybGF5cyogRGVi
dWdQYWdlT3ZlcmxheXM6OnNoYXJlZERlYnVnT3ZlcmxheXM7CisKK2NsYXNzIFJlZ2lvbk92ZXJs
YXkgOiBwdWJsaWMgUmVmQ291bnRlZDxSZWdpb25PdmVybGF5PiwgcHVibGljIFBhZ2VPdmVybGF5
OjpDbGllbnQgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFJlZ2lvbk92ZXJsYXk+
IGNyZWF0ZShNYWluRnJhbWUmLCBEZWJ1Z1BhZ2VPdmVybGF5czo6UmVnaW9uVHlwZSk7CisgICAg
dmlydHVhbCB+UmVnaW9uT3ZlcmxheSgpOworCisgICAgdm9pZCByZWNvbXB1dGVSZWdpb24oKTsK
KyAgICBQYWdlT3ZlcmxheSYgb3ZlcmxheSgpIHsgcmV0dXJuICptX292ZXJsYXk7IH0KKworcHJv
dGVjdGVkOgorICAgIFJlZ2lvbk92ZXJsYXkoTWFpbkZyYW1lJiwgQ29sb3IpOworCisgICAgdmly
dHVhbCB2b2lkIHBhZ2VPdmVybGF5RGVzdHJveWVkKFBhZ2VPdmVybGF5Jikgb3ZlcnJpZGU7Cisg
ICAgdmlydHVhbCB2b2lkIHdpbGxNb3ZlVG9QYWdlKFBhZ2VPdmVybGF5JiwgUGFnZSopIG92ZXJy
aWRlOworICAgIHZpcnR1YWwgdm9pZCBkaWRNb3ZlVG9QYWdlKFBhZ2VPdmVybGF5JiwgUGFnZSop
IG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBkcmF3UmVjdChQYWdlT3ZlcmxheSYsIEdyYXBo
aWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCkgb3ZlcnJpZGU7CisgICAgdmly
dHVhbCBib29sIG1vdXNlRXZlbnQoUGFnZU92ZXJsYXkmLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZl
bnQmKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkU2Nyb2xsRnJhbWUoUGFnZU92ZXJs
YXkmLCBGcmFtZSYpIG92ZXJyaWRlOworCisgICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoZSByZWdp
b24gY2hhbmdlZC4KKyAgICB2aXJ0dWFsIGJvb2wgdXBkYXRlUmVnaW9uKCkgPSAwOworICAgIAor
ICAgIE1haW5GcmFtZSYgbV9mcmFtZTsKKyAgICBSZWZQdHI8UGFnZU92ZXJsYXk+IG1fb3Zlcmxh
eTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVnaW9uPiBtX3JlZ2lvbjsKKyAgICBDb2xvciBtX2Nv
bG9yOworfTsKKworCitjbGFzcyBNb3VzZVdoZWVsUmVnaW9uT3ZlcmxheSBmaW5hbCA6IHB1Ymxp
YyBSZWdpb25PdmVybGF5IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxNb3VzZVdo
ZWVsUmVnaW9uT3ZlcmxheT4gY3JlYXRlKE1haW5GcmFtZSYgZnJhbWUpCisgICAgeworICAgICAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IE1vdXNlV2hlZWxSZWdpb25PdmVybGF5KGZyYW1lKSk7Cisg
ICAgfQorCitwcml2YXRlOgorICAgIE1vdXNlV2hlZWxSZWdpb25PdmVybGF5KE1haW5GcmFtZSYg
ZnJhbWUpCisgICAgICAgIDogUmVnaW9uT3ZlcmxheShmcmFtZSwgQ29sb3IoMC41ZiwgMC4wZiwg
MC4wZiwgMC40ZikpCisgICAgeworICAgIH0KKworICAgIHZpcnR1YWwgYm9vbCB1cGRhdGVSZWdp
b24oKSBvdmVycmlkZTsKK307CisKK2Jvb2wgTW91c2VXaGVlbFJlZ2lvbk92ZXJsYXk6OnVwZGF0
ZVJlZ2lvbigpCit7CisgICAgc3RkOjp1bmlxdWVfcHRyPFJlZ2lvbj4gcmVnaW9uID0gc3RkOjpt
YWtlX3VuaXF1ZTxSZWdpb24+KCk7CisKKyAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBkZXNjZW5k
YW50c09mVHlwZTxFbGVtZW50PigqbV9mcmFtZS5kb2N1bWVudCgpKSkgeworICAgICAgICBpZiAo
ZWxlbWVudC5oYXNFdmVudExpc3RlbmVycyhldmVudE5hbWVzKCkubW91c2V3aGVlbEV2ZW50KSB8
fCBlbGVtZW50Lmhhc0V2ZW50TGlzdGVuZXJzKGV2ZW50TmFtZXMoKS53aGVlbEV2ZW50KSkgewor
ICAgICAgICAgICAgSW50UmVjdCBlbGVtZW50UmVjdCA9IGVsZW1lbnQuYm91bmRzSW5Sb290Vmll
d1NwYWNlKCk7CisgICAgICAgICAgICBlbGVtZW50UmVjdCA9IG1fZnJhbWUudmlldygpLT5yb290
Vmlld1RvQ29udGVudHMoZWxlbWVudFJlY3QpOworICAgICAgICAgICAgcmVnaW9uLT51bml0ZShS
ZWdpb24oZWxlbWVudFJlY3QpKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGJvb2wgcmVnaW9u
Q2hhbmdlZCA9ICFtX3JlZ2lvbiB8fCAhKCptX3JlZ2lvbiA9PSAqcmVnaW9uKTsKKyAgICBtX3Jl
Z2lvbiA9IFdURjo6bW92ZShyZWdpb24pOworICAgIHJldHVybiByZWdpb25DaGFuZ2VkOworfQor
CitjbGFzcyBOb25GYXN0U2Nyb2xsYWJsZVJlZ2lvbk92ZXJsYXkgZmluYWwgOiBwdWJsaWMgUmVn
aW9uT3ZlcmxheSB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8Tm9uRmFzdFNjcm9s
bGFibGVSZWdpb25PdmVybGF5PiBjcmVhdGUoTWFpbkZyYW1lJiBmcmFtZSkKKyAgICB7CisgICAg
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgTm9uRmFzdFNjcm9sbGFibGVSZWdpb25PdmVybGF5KGZy
YW1lKSk7CisgICAgfQorCitwcml2YXRlOgorICAgIE5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uT3Zl
cmxheShNYWluRnJhbWUmIGZyYW1lKQorICAgICAgICA6IFJlZ2lvbk92ZXJsYXkoZnJhbWUsIENv
bG9yKDAuMGYsIDAuNWYsIDAuMGYsIDAuNGYpKQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFs
IGJvb2wgdXBkYXRlUmVnaW9uKCkgb3ZlcnJpZGU7Cit9OworCitib29sIE5vbkZhc3RTY3JvbGxh
YmxlUmVnaW9uT3ZlcmxheTo6dXBkYXRlUmVnaW9uKCkKK3sKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
UmVnaW9uPiByZWdpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFJlZ2lvbj4oKTsKKworICAgIGlmIChQ
YWdlKiBwYWdlID0gbV9mcmFtZS5wYWdlKCkpIHsKKyAgICAgICAgaWYgKFNjcm9sbGluZ0Nvb3Jk
aW5hdG9yKiBzY3JvbGxpbmdDb29yZGluYXRvciA9IHBhZ2UtPnNjcm9sbGluZ0Nvb3JkaW5hdG9y
KCkpCisgICAgICAgICAgICAqcmVnaW9uID0gc2Nyb2xsaW5nQ29vcmRpbmF0b3ItPmNvbXB1dGVO
b25GYXN0U2Nyb2xsYWJsZVJlZ2lvbigmbV9mcmFtZSwgSW50UG9pbnQoKSk7CisgICAgfQorCisg
ICAgYm9vbCByZWdpb25DaGFuZ2VkID0gIW1fcmVnaW9uIHx8ICEoKm1fcmVnaW9uID09ICpyZWdp
b24pOworICAgIG1fcmVnaW9uID0gV1RGOjptb3ZlKHJlZ2lvbik7CisgICAgcmV0dXJuIHJlZ2lv
bkNoYW5nZWQ7Cit9CisKK1Bhc3NSZWZQdHI8UmVnaW9uT3ZlcmxheT4gUmVnaW9uT3ZlcmxheTo6
Y3JlYXRlKE1haW5GcmFtZSYgZnJhbWUsIERlYnVnUGFnZU92ZXJsYXlzOjpSZWdpb25UeXBlIHJl
Z2lvblR5cGUpCit7CisgICAgc3dpdGNoIChyZWdpb25UeXBlKSB7CisgICAgY2FzZSBEZWJ1Z1Bh
Z2VPdmVybGF5czo6UmVnaW9uVHlwZTo6V2hlZWxFdmVudEhhbmRsZXJzOgorICAgICAgICByZXR1
cm4gTW91c2VXaGVlbFJlZ2lvbk92ZXJsYXk6OmNyZWF0ZShmcmFtZSk7CisKKyAgICBjYXNlIERl
YnVnUGFnZU92ZXJsYXlzOjpSZWdpb25UeXBlOjpOb25GYXN0U2Nyb2xsYWJsZVJlZ2lvbjoKKyAg
ICAgICAgcmV0dXJuIE5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uT3ZlcmxheTo6Y3JlYXRlKGZyYW1l
KTsKKyAgICB9CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK1JlZ2lvbk92ZXJsYXk6OlJlZ2lv
bk92ZXJsYXkoTWFpbkZyYW1lJiBmcmFtZSwgQ29sb3IgcmVnaW9uQ29sb3IpCisgICAgOiBtX2Zy
YW1lKGZyYW1lKQorICAgICwgbV9vdmVybGF5KFBhZ2VPdmVybGF5OjpjcmVhdGUoKnRoaXMsIFBh
Z2VPdmVybGF5OjpPdmVybGF5VHlwZTo6RG9jdW1lbnQpKQorICAgICwgbV9jb2xvcihyZWdpb25D
b2xvcikKK3sKK30KKworUmVnaW9uT3ZlcmxheTo6flJlZ2lvbk92ZXJsYXkoKQoreworICAgIGlm
IChtX292ZXJsYXkpCisgICAgICAgIG1fZnJhbWUucGFnZU92ZXJsYXlDb250cm9sbGVyKCkudW5p
bnN0YWxsUGFnZU92ZXJsYXkobV9vdmVybGF5LmdldCgpLCBQYWdlT3ZlcmxheTo6RmFkZU1vZGU6
OkRvTm90RmFkZSk7Cit9CisKK3ZvaWQgUmVnaW9uT3ZlcmxheTo6cGFnZU92ZXJsYXlEZXN0cm95
ZWQoUGFnZU92ZXJsYXkmKQoreworfQorCit2b2lkIFJlZ2lvbk92ZXJsYXk6OndpbGxNb3ZlVG9Q
YWdlKFBhZ2VPdmVybGF5JiwgUGFnZSogcGFnZSkKK3sKKyAgICBpZiAoIXBhZ2UpCisgICAgICAg
IG1fb3ZlcmxheSA9IG51bGxwdHI7Cit9CisKK3ZvaWQgUmVnaW9uT3ZlcmxheTo6ZGlkTW92ZVRv
UGFnZShQYWdlT3ZlcmxheSYsIFBhZ2UqIHBhZ2UpCit7CisgICAgaWYgKHBhZ2UpCisgICAgICAg
IHJlY29tcHV0ZVJlZ2lvbigpOworfQorCit2b2lkIFJlZ2lvbk92ZXJsYXk6OmRyYXdSZWN0KFBh
Z2VPdmVybGF5JiwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBkaXJ0
eVJlY3QpCit7CisgICAgY29udGV4dC5jbGVhclJlY3QoZGlydHlSZWN0KTsKKworICAgIGlmICgh
bV9yZWdpb24pCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBHcmFwaGljc0NvbnRleHRTdGF0
ZVNhdmVyIHNhdmVyKGNvbnRleHQpOworCisgICAgY29udGV4dC5zZXRGaWxsQ29sb3IobV9jb2xv
ciwgQ29sb3JTcGFjZVNSR0IpOworICAgIGZvciAoYXV0byByZWN0IDogbV9yZWdpb24tPnJlY3Rz
KCkpIHsKKyAgICAKKyAgICAgICAgaWYgKHJlY3QuaW50ZXJzZWN0cyhkaXJ0eVJlY3QpKQorICAg
ICAgICAgICAgY29udGV4dC5maWxsUmVjdChyZWN0KTsKKyAgICB9Cit9CisKK2Jvb2wgUmVnaW9u
T3ZlcmxheTo6bW91c2VFdmVudChQYWdlT3ZlcmxheSYsIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVu
dCYpCit7CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIFJlZ2lvbk92ZXJsYXk6OmRpZFNj
cm9sbEZyYW1lKFBhZ2VPdmVybGF5JiwgRnJhbWUmKQoreworfQorCit2b2lkIFJlZ2lvbk92ZXJs
YXk6OnJlY29tcHV0ZVJlZ2lvbigpCit7CisgICAgaWYgKHVwZGF0ZVJlZ2lvbigpKQorICAgICAg
ICBtX292ZXJsYXktPnNldE5lZWRzRGlzcGxheSgpOworfQorCitEZWJ1Z1BhZ2VPdmVybGF5cyYg
RGVidWdQYWdlT3ZlcmxheXM6OnNoYXJlZCgpCit7CisgICAgaWYgKCFzaGFyZWREZWJ1Z092ZXJs
YXlzKQorICAgICAgICBzaGFyZWREZWJ1Z092ZXJsYXlzID0gbmV3IERlYnVnUGFnZU92ZXJsYXlz
OworCisgICAgcmV0dXJuICpzaGFyZWREZWJ1Z092ZXJsYXlzOworfQorCitzdGF0aWMgaW5saW5l
IHNpemVfdCBpbmRleE9mKERlYnVnUGFnZU92ZXJsYXlzOjpSZWdpb25UeXBlIHJlZ2lvblR5cGUp
Cit7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PHNpemVfdD4ocmVnaW9uVHlwZSk7Cit9CisKK1Jl
Z2lvbk92ZXJsYXkqIERlYnVnUGFnZU92ZXJsYXlzOjplbnN1cmVSZWdpb25PdmVybGF5Rm9yRnJh
bWUoTWFpbkZyYW1lJiBmcmFtZSwgUmVnaW9uVHlwZSByZWdpb25UeXBlKQoreworICAgIGF1dG8g
aXQgPSBtX2ZyYW1lUmVnaW9uT3ZlcmxheXMuZmluZCgmZnJhbWUpOworICAgIGlmIChpdCAhPSBt
X2ZyYW1lUmVnaW9uT3ZlcmxheXMuZW5kKCkpIHsKKyAgICAgICAgYXV0byYgdmlzdWFsaXplcnMg
PSBpdC0+dmFsdWU7CisgICAgICAgIAorICAgICAgICBpZiAoIXZpc3VhbGl6ZXJzW2luZGV4T2Yo
cmVnaW9uVHlwZSldKQorICAgICAgICAgICAgdmlzdWFsaXplcnNbaW5kZXhPZihyZWdpb25UeXBl
KV0gPSBSZWdpb25PdmVybGF5OjpjcmVhdGUoZnJhbWUsIHJlZ2lvblR5cGUpOworCisgICAgICAg
IHJldHVybiB2aXN1YWxpemVyc1tpbmRleE9mKHJlZ2lvblR5cGUpXS5nZXQoKTsKKyAgICB9CisK
KyAgICBWZWN0b3I8UmVmUHRyPFJlZ2lvbk92ZXJsYXk+PiB2aXN1YWxpemVycyhOdW1iZXJPZlJl
Z2lvblR5cGVzKTsKKyAgICAKKyAgICBSZWZQdHI8UmVnaW9uT3ZlcmxheT4gdmlzdWFsaXplciA9
IFJlZ2lvbk92ZXJsYXk6OmNyZWF0ZShmcmFtZSwgcmVnaW9uVHlwZSk7CisgICAgdmlzdWFsaXpl
cnNbaW5kZXhPZihyZWdpb25UeXBlKV0gPSB2aXN1YWxpemVyOworCisgICAgbV9mcmFtZVJlZ2lv
bk92ZXJsYXlzLnNldCgmZnJhbWUsIFdURjo6bW92ZSh2aXN1YWxpemVycykpOworICAgIHJldHVy
biB2aXN1YWxpemVyLmdldCgpOworfQorCit2b2lkIERlYnVnUGFnZU92ZXJsYXlzOjpzaG93UmVn
aW9uT3ZlcmxheShNYWluRnJhbWUmIGZyYW1lLCBSZWdpb25UeXBlIHJlZ2lvblR5cGUpCit7Cisg
ICAgUmVnaW9uT3ZlcmxheSogdmlzdWFsaXplciA9IGVuc3VyZVJlZ2lvbk92ZXJsYXlGb3JGcmFt
ZShmcmFtZSwgcmVnaW9uVHlwZSk7CisgICAgZnJhbWUucGFnZU92ZXJsYXlDb250cm9sbGVyKCku
aW5zdGFsbFBhZ2VPdmVybGF5KCZ2aXN1YWxpemVyLT5vdmVybGF5KCksIFBhZ2VPdmVybGF5OjpG
YWRlTW9kZTo6RG9Ob3RGYWRlKTsKK30KKwordm9pZCBEZWJ1Z1BhZ2VPdmVybGF5czo6aGlkZVJl
Z2lvbk92ZXJsYXkoTWFpbkZyYW1lJiBmcmFtZSwgUmVnaW9uVHlwZSByZWdpb25UeXBlKQorewor
ICAgIGF1dG8gaXQgPSBtX2ZyYW1lUmVnaW9uT3ZlcmxheXMuZmluZCgmZnJhbWUpOworICAgIGlm
IChpdCAhPSBtX2ZyYW1lUmVnaW9uT3ZlcmxheXMuZW5kKCkpIHsKKyAgICAgICAgYXV0byYgdmlz
dWFsaXplcnMgPSBpdC0+dmFsdWU7CisgICAgICAgIGlmIChSZWdpb25PdmVybGF5KiB2aXN1YWxp
emVyID0gdmlzdWFsaXplcnNbaW5kZXhPZihyZWdpb25UeXBlKV0uZ2V0KCkpIHsKKyAgICAgICAg
ICAgIGZyYW1lLnBhZ2VPdmVybGF5Q29udHJvbGxlcigpLnVuaW5zdGFsbFBhZ2VPdmVybGF5KCZ2
aXN1YWxpemVyLT5vdmVybGF5KCksIFBhZ2VPdmVybGF5OjpGYWRlTW9kZTo6RG9Ob3RGYWRlKTsK
KyAgICAgICAgICAgIHZpc3VhbGl6ZXJzW2luZGV4T2YocmVnaW9uVHlwZSldID0gbnVsbHB0cjsK
KyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCBEZWJ1Z1BhZ2VPdmVybGF5czo6cmVnaW9uQ2hh
bmdlZChNYWluRnJhbWUmIGZyYW1lLCBSZWdpb25UeXBlIHJlZ2lvblR5cGUpCit7CisgICAgaWYg
KFJlZ2lvbk92ZXJsYXkqIHZpc3VhbGl6ZXIgPSByZWdpb25PdmVybGF5Rm9yRnJhbWUoZnJhbWUs
IHJlZ2lvblR5cGUpKQorICAgICAgICB2aXN1YWxpemVyLT5yZWNvbXB1dGVSZWdpb24oKTsKK30K
KworUmVnaW9uT3ZlcmxheSogRGVidWdQYWdlT3ZlcmxheXM6OnJlZ2lvbk92ZXJsYXlGb3JGcmFt
ZShNYWluRnJhbWUmIGZyYW1lLCBSZWdpb25UeXBlIHJlZ2lvblR5cGUpIGNvbnN0Cit7CisgICAg
YXV0byBpdCA9IG1fZnJhbWVSZWdpb25PdmVybGF5cy5maW5kKCZmcmFtZSk7CisgICAgaWYgKGl0
ICE9IG1fZnJhbWVSZWdpb25PdmVybGF5cy5lbmQoKSkKKyAgICAgICAgcmV0dXJuIGl0LT52YWx1
ZS5hdChpbmRleE9mKHJlZ2lvblR5cGUpKS5nZXQoKTsKKworICAgIHJldHVybiBudWxscHRyOwor
fQorCit2b2lkIERlYnVnUGFnZU92ZXJsYXlzOjp1cGRhdGVPdmVybGF5UmVnaW9uVmlzaWJpbGl0
eShNYWluRnJhbWUmIGZyYW1lLCBEZWJ1Z092ZXJsYXlSZWdpb25zIHZpc2libGVSZWdpb25zKQor
eworICAgIGlmICh2aXNpYmxlUmVnaW9ucyAmIE5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uKQorICAg
ICAgICBzaG93UmVnaW9uT3ZlcmxheShmcmFtZSwgUmVnaW9uVHlwZTo6Tm9uRmFzdFNjcm9sbGFi
bGVSZWdpb24pOworICAgIGVsc2UKKyAgICAgICAgaGlkZVJlZ2lvbk92ZXJsYXkoZnJhbWUsIFJl
Z2lvblR5cGU6Ok5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uKTsKKworICAgIGlmICh2aXNpYmxlUmVn
aW9ucyAmIFdoZWVsRXZlbnRIYW5kbGVyUmVnaW9uKQorICAgICAgICBzaG93UmVnaW9uT3Zlcmxh
eShmcmFtZSwgUmVnaW9uVHlwZTo6V2hlZWxFdmVudEhhbmRsZXJzKTsKKyAgICBlbHNlCisgICAg
ICAgIGhpZGVSZWdpb25PdmVybGF5KGZyYW1lLCBSZWdpb25UeXBlOjpXaGVlbEV2ZW50SGFuZGxl
cnMpOworfQorCit2b2lkIERlYnVnUGFnZU92ZXJsYXlzOjpzZXR0aW5nc0NoYW5nZWQoTWFpbkZy
YW1lJiBmcmFtZSkKK3sKKyAgICBEZWJ1Z092ZXJsYXlSZWdpb25zIGFjdGl2ZU92ZXJsYXlSZWdp
b25zID0gZnJhbWUuc2V0dGluZ3MoKS52aXNpYmxlRGVidWdPdmVybGF5UmVnaW9ucygpOworICAg
IGlmICghYWN0aXZlT3ZlcmxheVJlZ2lvbnMgJiYgIWhhc092ZXJsYXlzKGZyYW1lKSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgRGVidWdQYWdlT3ZlcmxheXM6OnNoYXJlZCgpLnVwZGF0ZU92ZXJs
YXlSZWdpb25WaXNpYmlsaXR5KGZyYW1lLCBhY3RpdmVPdmVybGF5UmVnaW9ucyk7Cit9CisKK30K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGVidWdQYWdlT3ZlcmxheXMuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRGVidWdQYWdlT3ZlcmxheXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNTk0MDcy
NTQzZDlkNTNiNzliOGJlZTI5OTk0YjE2NDQ1NjNiYWJhCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9EZWJ1Z1BhZ2VPdmVybGF5cy5oCkBAIC0wLDAgKzEsOTQgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaWZuZGVmIERlYnVnUGFnZU92ZXJsYXlzX2gKKyNkZWZpbmUgRGVidWdQYWdl
T3ZlcmxheXNfaAorCisjaW5jbHVkZSAiU2V0dGluZ3MuaCIKKyNpbmNsdWRlIDx3dGYvSGFzaE1h
cC5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitj
bGFzcyBNYWluRnJhbWU7CitjbGFzcyBSZWdpb25PdmVybGF5OworCitjbGFzcyBEZWJ1Z1BhZ2VP
dmVybGF5cyB7CitwdWJsaWM6CisgICAgc3RhdGljIERlYnVnUGFnZU92ZXJsYXlzJiBzaGFyZWQo
KTsKKworICAgIGVudW0gY2xhc3MgUmVnaW9uVHlwZSB7CisgICAgICAgIFdoZWVsRXZlbnRIYW5k
bGVycywKKyAgICAgICAgTm9uRmFzdFNjcm9sbGFibGVSZWdpb24sCisgICAgfTsKKyAgICBzdGF0
aWMgY29uc3QgdW5zaWduZWQgTnVtYmVyT2ZSZWdpb25UeXBlcyA9IE5vbkZhc3RTY3JvbGxhYmxl
UmVnaW9uICsgMTsKKworICAgIHN0YXRpYyB2b2lkIGRpZExheW91dChNYWluRnJhbWUmKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBzZXR0aW5nc0NoYW5nZWQoTWFpbkZyYW1lJik7
CisKK3ByaXZhdGU6CisgICAgc3RhdGljIGJvb2wgaGFzT3ZlcmxheXMoTWFpbkZyYW1lJik7CisK
KyAgICB2b2lkIHNob3dSZWdpb25PdmVybGF5KE1haW5GcmFtZSYsIFJlZ2lvblR5cGUpOworICAg
IHZvaWQgaGlkZVJlZ2lvbk92ZXJsYXkoTWFpbkZyYW1lJiwgUmVnaW9uVHlwZSk7CisKKyAgICB2
b2lkIHJlZ2lvbkNoYW5nZWQoTWFpbkZyYW1lJiwgUmVnaW9uVHlwZSk7CisKKyAgICBib29sIGhh
c092ZXJsYXlzRm9yRnJhbWUoTWFpbkZyYW1lJiBmcmFtZSkgY29uc3QKKyAgICB7CisgICAgICAg
IHJldHVybiBtX2ZyYW1lUmVnaW9uT3ZlcmxheXMuZmluZCgmZnJhbWUpICE9IG1fZnJhbWVSZWdp
b25PdmVybGF5cy5lbmQoKTsKKyAgICB9CisgICAgCisgICAgdm9pZCB1cGRhdGVPdmVybGF5UmVn
aW9uVmlzaWJpbGl0eShNYWluRnJhbWUmLCBEZWJ1Z092ZXJsYXlSZWdpb25zKTsKKworICAgIFJl
Z2lvbk92ZXJsYXkqIHJlZ2lvbk92ZXJsYXlGb3JGcmFtZShNYWluRnJhbWUmLCBSZWdpb25UeXBl
KSBjb25zdDsKKyAgICBSZWdpb25PdmVybGF5KiBlbnN1cmVSZWdpb25PdmVybGF5Rm9yRnJhbWUo
TWFpbkZyYW1lJiwgUmVnaW9uVHlwZSk7CisKKyAgICBIYXNoTWFwPE1haW5GcmFtZSosIFZlY3Rv
cjxSZWZQdHI8UmVnaW9uT3ZlcmxheT4+PiBtX2ZyYW1lUmVnaW9uT3ZlcmxheXM7CisKKyAgICBz
dGF0aWMgRGVidWdQYWdlT3ZlcmxheXMqIHNoYXJlZERlYnVnT3ZlcmxheXM7Cit9OworCisjZGVm
aW5lIEZBU1RfUkVUVVJOX0lGX05PX09WRVJMQVlTKGZyYW1lKSBpZiAoTElLRUxZKCFoYXNPdmVy
bGF5cyhmcmFtZSkpKSByZXR1cm47CisKK2lubGluZSBib29sIERlYnVnUGFnZU92ZXJsYXlzOjpo
YXNPdmVybGF5cyhNYWluRnJhbWUmIGZyYW1lKQoreworICAgIGlmICghc2hhcmVkRGVidWdPdmVy
bGF5cykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHNoYXJlZERlYnVnT3Zl
cmxheXMtPmhhc092ZXJsYXlzRm9yRnJhbWUoZnJhbWUpOworfQorCitpbmxpbmUgdm9pZCBEZWJ1
Z1BhZ2VPdmVybGF5czo6ZGlkTGF5b3V0KE1haW5GcmFtZSYgZnJhbWUpCit7CisgICAgRkFTVF9S
RVRVUk5fSUZfTk9fT1ZFUkxBWVMoZnJhbWUpOworCisgICAgc2hhcmVkRGVidWdPdmVybGF5cy0+
cmVnaW9uQ2hhbmdlZChmcmFtZSwgUmVnaW9uVHlwZTo6V2hlZWxFdmVudEhhbmRsZXJzKTsKKyAg
ICBzaGFyZWREZWJ1Z092ZXJsYXlzLT5yZWdpb25DaGFuZ2VkKGZyYW1lLCBSZWdpb25UeXBlOjpO
b25GYXN0U2Nyb2xsYWJsZVJlZ2lvbik7Cit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Zy
YW1lVmlldy5jcHAKaW5kZXggMzMwMjVhMDU2YzM0YmU1NmM5NmFhNjBmNDM1MDllOTBkZGY1ZjRj
My4uYzU5OWYxYmFhMzM1Nzk4YjIxYzE5YjU0NzMzMWI0NThkMjI5YzBmOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRnJhbWVWaWV3LmNwcApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIkNocm9tZS5oIgog
I2luY2x1ZGUgIkNocm9tZUNsaWVudC5oIgogI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgorI2luY2x1
ZGUgIkRlYnVnUGFnZU92ZXJsYXlzLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRNYXJrZXJDb250cm9s
bGVyLmgiCiAjaW5jbHVkZSAiRXZlbnRIYW5kbGVyLmgiCiAjaW5jbHVkZSAiRmxvYXRSZWN0Lmgi
CkBAIC0xMzkzLDYgKzEzOTQsOCBAQCB2b2lkIEZyYW1lVmlldzo6bGF5b3V0KGJvb2wgYWxsb3dT
dWJ0cmVlKQogICAgIH0KIAogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkTGF5b3V0
KGNvb2tpZSwgcm9vdCk7CisgICAgaWYgKGZyYW1lKCkuaXNNYWluRnJhbWUoKSkKKyAgICAgICAg
RGVidWdQYWdlT3ZlcmxheXM6OmRpZExheW91dChmcmFtZSgpLm1haW5GcmFtZSgpKTsKIAogICAg
IC0tbV9uZXN0ZWRMYXlvdXRDb3VudDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvU2V0dGluZ3MuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaAppbmRleCBkOGMz
NzQ2ODI4ZGM2ZDhmM2YyNDVkMDhkMTU0YWQxOGZjYzgzN2YwLi43NjQ3MmYwMDg1ZDNlZGQ2Mzg2
MGUzNzllOGMwZmQ3YjU0NmJmOTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Nl
dHRpbmdzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5oCkBAIC02MCw2ICs2
MCwxMyBAQCBlbnVtIFRleHREaXJlY3Rpb25TdWJtZW51SW5jbHVzaW9uQmVoYXZpb3IgewogICAg
IFRleHREaXJlY3Rpb25TdWJtZW51QWx3YXlzSW5jbHVkZWQKIH07CiAKK2VudW0gRGVidWdPdmVy
bGF5UmVnaW9uRmxhZ3MgeworICAgIE5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uID0gMSA8PCAwLAor
ICAgIFdoZWVsRXZlbnRIYW5kbGVyUmVnaW9uID0gMSA8PCAxLAorfTsKKwordHlwZWRlZiB1bnNp
Z25lZCBEZWJ1Z092ZXJsYXlSZWdpb25zOworCiBjbGFzcyBTZXR0aW5ncyA6IHB1YmxpYyBSZWZD
b3VudGVkPFNldHRpbmdzPiB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU2V0dGluZ3MpOyBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvU2V0dGluZ3MuaW4gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmluCmlu
ZGV4IDJmNWE1NDc3YjBkODM0MjA3YTZjMDY5M2U3YjFkNDA3Yzg3MzY2ODYuLjhhZmY4NGRjODVj
NjAyNzJjNzY0YWQ0YzIwMWQzOGI4ZmRjYzgxZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvU2V0dGluZ3MuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5pbgpA
QCAtNTksNiArNTksNyBAQCBhY2NlbGVyYXRlZENvbXBvc2l0aW5nRW5hYmxlZCBpbml0aWFsPXRy
dWUsIHNldE5lZWRzU3R5bGVSZWNhbGNJbkFsbEZyYW1lcz0xCiBhY2NlbGVyYXRlZENvbXBvc2l0
ZWRBbmltYXRpb25zRW5hYmxlZCBpbml0aWFsPXRydWUsIHNldE5lZWRzU3R5bGVSZWNhbGNJbkFs
bEZyYW1lcz0xCiBzaG93RGVidWdCb3JkZXJzIGluaXRpYWw9ZmFsc2UsIHNldE5lZWRzU3R5bGVS
ZWNhbGNJbkFsbEZyYW1lcz0xCiBzaG93UmVwYWludENvdW50ZXIgaW5pdGlhbD1mYWxzZSwgc2V0
TmVlZHNTdHlsZVJlY2FsY0luQWxsRnJhbWVzPTEKK3Zpc2libGVEZWJ1Z092ZXJsYXlSZWdpb25z
IHR5cGU9RGVidWdPdmVybGF5UmVnaW9ucywgaW5pdGlhbD0wCiAKICMgVGhpcyBpcyBhIHF1aXJr
IHdlIGFyZSBwcm8tYWN0aXZlbHkgYXBwbHlpbmcgdG8gb2xkIGFwcGxpY2F0aW9ucy4gSXQgY2hh
bmdlcyBrZXlib2FyZCBldmVudCBkaXNwYXRjaGluZywKICMgbWFraW5nIGtleUlkZW50aWZpZXIg
YXZhaWxhYmxlIG9uIGtleXByZXNzIGV2ZW50cywgbWFraW5nIGNoYXJDb2RlIGF2YWlsYWJsZSBv
biBrZXlkb3duL2tleXVwIGV2ZW50cywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9XZWJQcmVmZXJlbmNlc0RlZmluaXRpb25zLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2Vi
UHJlZmVyZW5jZXNEZWZpbml0aW9ucy5oCmluZGV4IDk4ZmNiZGJlNzIyOWJmNWU3MTUzOWJhNzNl
OGYwZWU5NmNkNDlkM2IuLmM3MDg4MjMxYzgwZjgxZTRiMzk3NmY4Y2ExNDU1ZTVmZWI0M2Q0YTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcmVmZXJlbmNlc0RlZmluaXRp
b25zLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByZWZlcmVuY2VzRGVmaW5pdGlv
bnMuaApAQCAtMjM2LDYgKzIzNiw5IEBACiAgICAgbWFjcm8oTG9nc1BhZ2VNZXNzYWdlc1RvU3lz
dGVtQ29uc29sZUVuYWJsZWQsIGxvZ3NQYWdlTWVzc2FnZXNUb1N5c3RlbUNvbnNvbGVFbmFibGVk
LCBCb29sLCBib29sLCBmYWxzZSkgXAogICAgIFwKIAorI2RlZmluZSBGT1JfRUFDSF9XRUJLSVRf
REVCVUdfVUlOVDMyX1BSRUZFUkVOQ0UobWFjcm8pIFwKKyAgICBtYWNybyhWaXNpYmxlRGVidWdP
dmVybGF5UmVnaW9ucywgdmlzaWJsZURlYnVnT3ZlcmxheVJlZ2lvbnMsIFVJbnQzMiwgdWludDMy
X3QsIDApCisKICNpZiBQTEFURk9STShDT0NPQSkKIAogI2lmIFBMQVRGT1JNKElPUykKQEAgLTI4
Myw2ICsyODYsNyBAQAogCiAjZGVmaW5lIEZPUl9FQUNIX1dFQktJVF9ERUJVR19QUkVGRVJFTkNF
KG1hY3JvKSBcCiAgICAgRk9SX0VBQ0hfV0VCS0lUX0RFQlVHX0JPT0xfUFJFRkVSRU5DRShtYWNy
bykgXAorICAgIEZPUl9FQUNIX1dFQktJVF9ERUJVR19VSU5UMzJfUFJFRkVSRU5DRShtYWNybykg
XAogICAgIFwKIAogI2RlZmluZSBGT1JfRUFDSF9XRUJLSVRfUFJFRkVSRU5DRShtYWNybykgXApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZlcmVu
Y2VzLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZlcmVuY2Vz
Lm1tCmluZGV4IDhhMTcwMGVkNDRjZTNlNjdiZGRmNTFiMzBjNDRmYTdlZTA5ODczNzAuLjg0ODdl
MjViZDhjNjJhZDU4YWQ3MjUwNzFkYmJlOTNlY2VhMWU0NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcmVmZXJlbmNlcy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJlZmVyZW5jZXMubW0KQEAgLTIwMyw2ICsy
MDMsMTYgQEAgc3RhdGljIF9XS1N0b3JhZ2VCbG9ja2luZ1BvbGljeSB0b0FQSShXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbjo6U3RvcmFnZUJsb2NraW5nUG8KICAgICBfcHJlZmVyZW5jZXMtPnNldFRp
bGVkU2Nyb2xsaW5nSW5kaWNhdG9yVmlzaWJsZSh0aWxlZFNjcm9sbGluZ0luZGljYXRvclZpc2li
bGUpOwogfQogCistIChfV0tEZWJ1Z092ZXJsYXlSZWdpb25zKV92aXNpYmxlRGVidWdPdmVybGF5
UmVnaW9ucworeworICAgIHJldHVybiBfcHJlZmVyZW5jZXMtPnZpc2libGVEZWJ1Z092ZXJsYXlS
ZWdpb25zKCk7Cit9CisKKy0gKHZvaWQpX3NldFZpc2libGVEZWJ1Z092ZXJsYXlSZWdpb25zOihf
V0tEZWJ1Z092ZXJsYXlSZWdpb25zKXJlZ2lvbkZsYWdzCit7CisgICAgX3ByZWZlcmVuY2VzLT5z
ZXRWaXNpYmxlRGVidWdPdmVybGF5UmVnaW9ucyhyZWdpb25GbGFncyk7Cit9CisKIC0gKEJPT0wp
X2RldmVsb3BlckV4dHJhc0VuYWJsZWQKIHsKICAgICByZXR1cm4gX3ByZWZlcmVuY2VzLT5kZXZl
bG9wZXJFeHRyYXNFbmFibGVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLUHJlZmVyZW5jZXNQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLUHJlZmVyZW5jZXNQcml2YXRlLmgKaW5kZXggYjEyYzE0OWU5Mjhm
ZmU5ZWI3ODRjYTJhNjU2Nzk1ZDY1NmRlMDdjYy4uZmNkMmY1ZjdhYjVmMDY3ZjUyZjc3NGIzY2Zk
YmM5MDhlZjU1M2YxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1ByZWZlcmVuY2VzUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tQcmVmZXJlbmNlc1ByaXZhdGUuaApAQCAtMzcsNiArMzcsMTEgQEAgdHlw
ZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgX1dLU3RvcmFnZUJsb2NraW5nUG9saWN5KSB7CiAgICAg
X1dLU3RvcmFnZUJsb2NraW5nUG9saWN5QmxvY2tBbGwsCiB9IFdLX0VOVU1fQVZBSUxBQkxFKDEw
XzEwLCA4XzApOwogCit0eXBlZGVmIE5TX09QVElPTlMoTlNVSW50ZWdlciwgX1dLRGVidWdPdmVy
bGF5UmVnaW9ucykgeworICAgIF9XS05vbkZhc3RTY3JvbGxhYmxlUmVnaW9uID0gMSA8PCAwLAor
ICAgIF9XS1doZWVsRXZlbnRIYW5kbGVyUmVnaW9uID0gMSA8PCAxCit9IFdLX0VOVU1fQVZBSUxB
QkxFKDEwXzExLCA5XzApOworCiBAaW50ZXJmYWNlIFdLUHJlZmVyZW5jZXMgKFdLUHJpdmF0ZSkK
IAogLy8gRklYTUU6IFRoaXMgcHJvcGVydHkgc2hvdWxkIG5vdCBoYXZlIHRoZSB2ZXJiICJpcyIg
aW4gaXQuCkBAIC00Niw2ICs1MSw3IEBAIHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIF9XS1N0
b3JhZ2VCbG9ja2luZ1BvbGljeSkgewogQHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0
Q29tcG9zaXRpbmdCb3JkZXJzVmlzaWJsZTopIEJPT0wgX2NvbXBvc2l0aW5nQm9yZGVyc1Zpc2li
bGU7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXRDb21wb3NpdGluZ1JlcGFpbnRD
b3VudGVyc1Zpc2libGU6KSBCT09MIF9jb21wb3NpdGluZ1JlcGFpbnRDb3VudGVyc1Zpc2libGU7
CiBAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXRUaWxlZFNjcm9sbGluZ0luZGljYXRv
clZpc2libGU6KSBCT09MIF90aWxlZFNjcm9sbGluZ0luZGljYXRvclZpc2libGU7CitAcHJvcGVy
dHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXRWaXNpYmxlRGVidWdPdmVybGF5UmVnaW9uczopIF9X
S0RlYnVnT3ZlcmxheVJlZ2lvbnMgX3Zpc2libGVEZWJ1Z092ZXJsYXlSZWdpb25zOwogCiBAcHJv
cGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXREZXZlbG9wZXJFeHRyYXNFbmFibGVkOikgQk9P
TCBfZGV2ZWxvcGVyRXh0cmFzRW5hYmxlZDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL21hYy9XZWJQcmVmZXJlbmNlc01hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9tYWMvV2ViUHJlZmVyZW5jZXNNYWMubW0KaW5kZXggNzBmOWNmYzc2ZDhhYWNkZmRiNmVl
NzQyYTA2YmM0NGU2NzhkY2NkOC4uMmZhMzUyZTQyNjM4ZWExNjY4MDM2Zjk5MDEzODNhNzQ5MTZi
NGQ2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJQcmVmZXJl
bmNlc01hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYlByZWZlcmVu
Y2VzTWFjLm1tCkBAIC0xMzEsNiArMTMxLDE3IEBAIHN0YXRpYyB2b2lkIHNldERlYnVnQm9vbFZh
bHVlSWZJblVzZXJEZWZhdWx0cyhjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFN0CiAg
ICAgc3RvcmUuc2V0Qm9vbFZhbHVlRm9yS2V5KGtleSwgW29iamVjdCBib29sVmFsdWVdKTsKIH0K
IAorc3RhdGljIHZvaWQgc2V0RGVidWdVSW50MzJWYWx1ZUlmSW5Vc2VyRGVmYXVsdHMoY29uc3Qg
U3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGtleVByZWZpeCwgY29uc3QgU3RyaW5n
JiBnbG9iYWxEZWJ1Z0tleVByZWZpeCwgY29uc3QgU3RyaW5nJiBrZXksIFdlYlByZWZlcmVuY2Vz
U3RvcmUmIHN0b3JlKQoreworICAgIGlkIG9iamVjdCA9IGRlYnVnVXNlckRlZmF1bHRzVmFsdWUo
aWRlbnRpZmllciwga2V5UHJlZml4LCBnbG9iYWxEZWJ1Z0tleVByZWZpeCwga2V5KTsKKyAgICBp
ZiAoIW9iamVjdCkKKyAgICAgICAgcmV0dXJuOworICAgIGlmICghW29iamVjdCByZXNwb25kc1Rv
U2VsZWN0b3I6QHNlbGVjdG9yKHVuc2lnbmVkSW50ZWdlclZhbHVlKV0pCisgICAgICAgIHJldHVy
bjsKKworICAgIHN0b3JlLnNldFVJbnQzMlZhbHVlRm9yS2V5KGtleSwgW29iamVjdCB1bnNpZ25l
ZEludGVnZXJWYWx1ZV0pOworfQorCiB2b2lkIFdlYlByZWZlcmVuY2VzOjpwbGF0Zm9ybUluaXRp
YWxpemVTdG9yZSgpCiB7CiAjZGVmaW5lIElOSVRJQUxJWkVfREVCVUdfUFJFRkVSRU5DRV9GUk9N
X05TVVNFUkRFRkFVTFRTKEtleVVwcGVyLCBLZXlMb3dlciwgVHlwZU5hbWUsIFR5cGUsIERlZmF1
bHRWYWx1ZSkgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwCmluZGV4IGQ0MDI0OWE0ZmM1ZTVlZGQ1NjhkZDE1OGM1MWY2MTUyY2E0OGM3N2UuLjAxMjRk
OWViM2IyYTZjOTFlZDgxZDBiNTQ3NTIyODA5OGFkODQ4NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTI2ODgsNiArMjY4OCw4IEBAIHZv
aWQgV2ViUGFnZTo6dXBkYXRlUHJlZmVyZW5jZXMoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYg
c3RvcmUpCiAgICAgc2V0dGluZ3Muc2V0U2hvd0RlYnVnQm9yZGVycyhzdG9yZS5nZXRCb29sVmFs
dWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6OmNvbXBvc2l0aW5nQm9yZGVyc1Zpc2libGVLZXko
KSkpOwogICAgIHNldHRpbmdzLnNldFNob3dSZXBhaW50Q291bnRlcihzdG9yZS5nZXRCb29sVmFs
dWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6OmNvbXBvc2l0aW5nUmVwYWludENvdW50ZXJzVmlz
aWJsZUtleSgpKSk7CiAgICAgc2V0dGluZ3Muc2V0U2hvd1RpbGVkU2Nyb2xsaW5nSW5kaWNhdG9y
KHN0b3JlLmdldEJvb2xWYWx1ZUZvcktleShXZWJQcmVmZXJlbmNlc0tleTo6dGlsZWRTY3JvbGxp
bmdJbmRpY2F0b3JWaXNpYmxlS2V5KCkpKTsKKyAgICBzZXR0aW5ncy5zZXRWaXNpYmxlRGVidWdP
dmVybGF5UmVnaW9ucyhzdG9yZS5nZXRVSW50MzJWYWx1ZUZvcktleShXZWJQcmVmZXJlbmNlc0tl
eTo6dmlzaWJsZURlYnVnT3ZlcmxheVJlZ2lvbnNLZXkoKSkpOworICAgIAogICAgIHNldHRpbmdz
LnNldEFnZ3Jlc3NpdmVUaWxlUmV0ZW50aW9uRW5hYmxlZChzdG9yZS5nZXRCb29sVmFsdWVGb3JL
ZXkoV2ViUHJlZmVyZW5jZXNLZXk6OmFnZ3Jlc3NpdmVUaWxlUmV0ZW50aW9uRW5hYmxlZEtleSgp
KSk7CiAgICAgc2V0dGluZ3Muc2V0VGVtcG9yYXJ5VGlsZUNvaG9ydFJldGVudGlvbkVuYWJsZWQo
c3RvcmUuZ2V0Qm9vbFZhbHVlRm9yS2V5KFdlYlByZWZlcmVuY2VzS2V5Ojp0ZW1wb3JhcnlUaWxl
Q29ob3J0UmV0ZW50aW9uRW5hYmxlZEtleSgpKSk7CiAgICAgUnVudGltZUVuYWJsZWRGZWF0dXJl
czo6c2hhcmVkRmVhdHVyZXMoKS5zZXRDU1NSZWdpb25zRW5hYmxlZChzdG9yZS5nZXRCb29sVmFs
dWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6OmNzc1JlZ2lvbnNFbmFibGVkS2V5KCkpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUmVtb3RlTGF5
ZXJUcmVlRHJhd2luZ0FyZWEubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
bWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tCmluZGV4IDFhMWUzZjI1NTQ2MmM0ZTAy
ZjRkNmI1OTU5M2YzNTA0YzQ0ZjAyYjQuLjkzMjVhNTE3NzJlNTk3M2QzZmYyYjEwY2I1NTllMDJm
Y2YzZGRlMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9t
YWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbQpAQCAtMzcs
NiArMzcsNyBAQAogI2ltcG9ydCAiUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JUcmFuc2FjdGlv
bi5oIgogI2ltcG9ydCAiV2ViUGFnZS5oIgogI2ltcG9ydCAiV2ViUHJvY2Vzcy5oIgorI2ltcG9y
dCA8V2ViQ29yZS9EZWJ1Z1BhZ2VPdmVybGF5cy5oPgogI2ltcG9ydCA8V2ViQ29yZS9GcmFtZS5o
PgogI2ltcG9ydCA8V2ViQ29yZS9GcmFtZVZpZXcuaD4KICNpbXBvcnQgPFdlYkNvcmUvTWFpbkZy
YW1lLmg+CkBAIC0xNjksNiArMTcwLDkgQEAgdm9pZCBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJl
YTo6dXBkYXRlUHJlZmVyZW5jZXMoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYpCiAgICAgc2V0
dGluZ3Muc2V0Rml4ZWRQb3NpdGlvbkNyZWF0ZXNTdGFja2luZ0NvbnRleHQodHJ1ZSk7CiAKICAg
ICBtX3Jvb3RMYXllci0+c2V0U2hvd0RlYnVnQm9yZGVyKHNldHRpbmdzLnNob3dEZWJ1Z0JvcmRl
cnMoKSk7CisKKyAgICBpZiAoTWFpbkZyYW1lKiBtYWluRnJhbWUgPSBtX3dlYlBhZ2UubWFpbkZy
YW1lKCkpCisgICAgICAgIERlYnVnUGFnZU92ZXJsYXlzOjpzZXR0aW5nc0NoYW5nZWQoKm1haW5G
cmFtZSk7CiB9CiAKICNpZiBQTEFURk9STShJT1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1t
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRp
b25EcmF3aW5nQXJlYS5tbQppbmRleCBmZjdmYWM5ZGJhOGVmZjk4NTM0NjBhZWY3ZTJhNDhlN2Yx
OTU1YTUzLi5jMTM5NTdmZGMyNzhlODk0Y2FmMmJhMzk4ZDJhODFiOWNkYmNkMzI0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1h
dGlvbkRyYXdpbmdBcmVhLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW0KQEAgLTM5LDYgKzM5LDcgQEAK
ICNpbXBvcnQgIldlYlBhZ2VQcm94eU1lc3NhZ2VzLmgiCiAjaW1wb3J0ICJXZWJQcm9jZXNzLmgi
CiAjaW1wb3J0IDxRdWFydHpDb3JlL1F1YXJ0ekNvcmUuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRGVi
dWdQYWdlT3ZlcmxheXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvRnJhbWVWaWV3Lmg+CiAjaW1wb3J0
IDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dC5oPgogI2ltcG9ydCA8V2ViQ29yZS9HcmFwaGljc0xh
eWVyQ0EuaD4KQEAgLTIwMCw2ICsyMDEsOSBAQCB2b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdp
bmdBcmVhOjp1cGRhdGVQcmVmZXJlbmNlcyhjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJgogICAg
IHNldHRpbmdzLnNldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdGb3JGaXhlZFBvc2l0aW9uRW5hYmxl
ZCh0cnVlKTsKICAgICBzZXR0aW5ncy5zZXRGaXhlZFBvc2l0aW9uQ3JlYXRlc1N0YWNraW5nQ29u
dGV4dCh0cnVlKTsKIAorICAgIGlmIChNYWluRnJhbWUqIG1haW5GcmFtZSA9IG1fd2ViUGFnZS5t
YWluRnJhbWUoKSkKKyAgICAgICAgRGVidWdQYWdlT3ZlcmxheXM6OnNldHRpbmdzQ2hhbmdlZCgq
bWFpbkZyYW1lKTsKKwogICAgIGJvb2wgc2hvd1RpbGVkU2Nyb2xsaW5nSW5kaWNhdG9yID0gc2V0
dGluZ3Muc2hvd1RpbGVkU2Nyb2xsaW5nSW5kaWNhdG9yKCk7CiAgICAgaWYgKHNob3dUaWxlZFNj
cm9sbGluZ0luZGljYXRvciA9PSAhIW1fZGVidWdJbmZvTGF5ZXIpCiAgICAgICAgIHJldHVybjsK
ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA2NDI2
NDMxYmZhYmRmM2YwMGM3ZDY2Y2ZjYTljMjY4ZTA3OTYxZWFjLi4yM2VlZWU5YTFmM2Q5ZDUzODA2
OTY4OTRjMzYyYjhkZWU2N2Q4NTNkIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIv
VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTQtMTAtMzEgIFNpbW9uIEZyYXNl
ciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIHBhZ2Ugb3ZlcmxheXMg
dGhhdCBzaG93IHJlZ2lvbnMgd2l0aCBtb3VzZVdoZWVsIGV2ZW50IGhhbmRsZXJzLCBhbmQgdGhl
IG5vbi1mYXN0LXNjcm9sbGFibGUgcmVnaW9uLCBhbmQgY29kZSB0byB0b2dnbGUgdGhlbSBpbiBN
aW5pQnJvd3NlciBXSzIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEzODI1NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAg
ICAgICAKKyAgICAgICAgQWRkIGEgIkRlYnVnIE92ZXJsYXlzIiBzdWJtZW51IGl0ZW0gdW5kZXIg
IldlYktpdDItb25seSBTZXR0aW5ncyIgd2hpY2ggYWxsb3dzCisgICAgICAgIHRoZSB1c2VyIHRv
IHRvZ2dsZSByZWdpb24gcGFnZSBvdmVybGF5cyBvbiBhbmQgb2ZmLiBUd28gb3ZlcmxheXMgYXJl
IGF2YWlsYWJsZSwKKyAgICAgICAgZm9yIHRoZSBub24tZmFzdCBzY3JvbGxhYmxlIHJlZ2lvbiwg
YW5kIHRoZSByZWdpb24gb2YgZWxlbWVudCB3aXRoIHdoZWVsCisgICAgICAgIGV2ZW50IGhhbmRs
ZXJzLgorCisgICAgICAgICogTWluaUJyb3dzZXIvbWFjL1NldHRpbmdzQ29udHJvbGxlci5oOgor
ICAgICAgICAqIE1pbmlCcm93c2VyL21hYy9TZXR0aW5nc0NvbnRyb2xsZXIubToKKyAgICAgICAg
KC1bU2V0dGluZ3NDb250cm9sbGVyIF9wb3B1bGF0ZU1lbnVdKToKKyAgICAgICAgKC1bU2V0dGlu
Z3NDb250cm9sbGVyIHZhbGlkYXRlTWVudUl0ZW06XSk6CisgICAgICAgICgtW1NldHRpbmdzQ29u
dHJvbGxlciBub25GYXN0U2Nyb2xsYWJsZVJlZ2lvbk92ZXJsYXlWaXNpYmxlXSk6CisgICAgICAg
ICgtW1NldHRpbmdzQ29udHJvbGxlciB3aGVlbEV2ZW50SGFuZGxlclJlZ2lvbk92ZXJsYXlWaXNp
YmxlXSk6CisgICAgICAgICgtW1NldHRpbmdzQ29udHJvbGxlciBwcmVmZXJlbmNlS2V5Rm9yUmVn
aW9uT3ZlcmxheVRhZzpdKToKKyAgICAgICAgKC1bU2V0dGluZ3NDb250cm9sbGVyIHRvZ2dsZURl
YnVnT3ZlcmxheTpdKToKKyAgICAgICAgKC1bU2V0dGluZ3NDb250cm9sbGVyIGRlYnVnT3Zlcmxh
eVZpc2libGU6XSk6CisgICAgICAgICogTWluaUJyb3dzZXIvbWFjL1dLMkJyb3dzZXJXaW5kb3dD
b250cm9sbGVyLm06CisgICAgICAgICgtW1dLMkJyb3dzZXJXaW5kb3dDb250cm9sbGVyIGRpZENo
YW5nZVNldHRpbmdzXSk6CisKIDIwMTQtMTAtMzEgIEFkcmlhbiBQZXJleiBkZSBDYXN0cm8gIDxh
cGVyZXpAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBTdXBwb3J0IHNjcmlwdCBtZXNzYWdl
IGhhbmRsZXJzIFdlYktpdFVzZXJDb250ZW50TWFuYWdlcgpkaWZmIC0tZ2l0IGEvVG9vbHMvTWlu
aUJyb3dzZXIvbWFjL1NldHRpbmdzQ29udHJvbGxlci5oIGIvVG9vbHMvTWluaUJyb3dzZXIvbWFj
L1NldHRpbmdzQ29udHJvbGxlci5oCmluZGV4IDQ2NGE4N2I2ODY1Nzc5ODAzODgwYzdlNmE4MzBl
ZDNhNjc1ZjU1ZmQuLjA5MDQ4YmIxNzZiNTI0NDI3ZGQ2ZWNkMDc3NmE4M2JlMTI0NDMzOTggMTAw
NjQ0Ci0tLSBhL1Rvb2xzL01pbmlCcm93c2VyL21hYy9TZXR0aW5nc0NvbnRyb2xsZXIuaAorKysg
Yi9Ub29scy9NaW5pQnJvd3Nlci9tYWMvU2V0dGluZ3NDb250cm9sbGVyLmgKQEAgLTM4LDYgKzM4
LDggQEAKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgQk9PTCB1c2VQYWdpbmF0ZWRN
b2RlOwogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBCT09MIGxheWVyQm9yZGVyc1Zp
c2libGU7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIEJPT0wgdGlsZWRTY3JvbGxp
bmdJbmRpY2F0b3JWaXNpYmxlOworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBCT09M
IG5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uT3ZlcmxheVZpc2libGU7CitAcHJvcGVydHkgKG5vbmF0
b21pYywgcmVhZG9ubHkpIEJPT0wgd2hlZWxFdmVudEhhbmRsZXJSZWdpb25PdmVybGF5VmlzaWJs
ZTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgQk9PTCB1c2VVSVNpZGVDb21wb3Np
dGluZzsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgQk9PTCBzdWJQaXhlbENTU09N
TWV0cmljc0VuYWJsZWQ7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIE5TU3RyaW5n
ICpkZWZhdWx0VVJMOwpkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvbWFjL1NldHRpbmdz
Q29udHJvbGxlci5tIGIvVG9vbHMvTWluaUJyb3dzZXIvbWFjL1NldHRpbmdzQ29udHJvbGxlci5t
CmluZGV4IGRiZTk1NWI5ZGQwODZjYmZmNzc5ZGZlYjFhZjc1ZGVjOTRiMWEzYmMuLjVhZTNlOGY4
ZWIxNzg1ZWEwODBiMjIwNGVkYTU3ZTVkOTgxOTdlYjUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlC
cm93c2VyL21hYy9TZXR0aW5nc0NvbnRyb2xsZXIubQorKysgYi9Ub29scy9NaW5pQnJvd3Nlci9t
YWMvU2V0dGluZ3NDb250cm9sbGVyLm0KQEAgLTM1LDYgKzM1LDkgQEAKIHN0YXRpYyBOU1N0cmlu
ZyAqIGNvbnN0IExheWVyQm9yZGVyc1Zpc2libGVQcmVmZXJlbmNlS2V5ID0gQCJMYXllckJvcmRl
cnNWaXNpYmxlIjsKIHN0YXRpYyBOU1N0cmluZyAqIGNvbnN0IFRpbGVkU2Nyb2xsaW5nSW5kaWNh
dG9yVmlzaWJsZVByZWZlcmVuY2VLZXkgPSBAIlRpbGVkU2Nyb2xsaW5nSW5kaWNhdG9yVmlzaWJs
ZSI7CiAKK3N0YXRpYyBOU1N0cmluZyAqIGNvbnN0IE5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uT3Zl
cmxheVZpc2libGVQcmVmZXJlbmNlS2V5ID0gQCJOb25GYXN0U2Nyb2xsYWJsZVJlZ2lvbk92ZXJs
YXlWaXNpYmxlIjsKK3N0YXRpYyBOU1N0cmluZyAqIGNvbnN0IFdoZWVsRXZlbnRIYW5kbGVyUmVn
aW9uT3ZlcmxheVZpc2libGVQcmVmZXJlbmNlS2V5ID0gQCJXaGVlbEV2ZW50SGFuZGxlclJlZ2lv
bk92ZXJsYXlWaXNpYmxlIjsKKwogc3RhdGljIE5TU3RyaW5nICogY29uc3QgVXNlVHJhbnNwYXJl
bnRXaW5kb3dzUHJlZmVyZW5jZUtleSA9IEAiVXNlVHJhbnNwYXJlbnRXaW5kb3dzIjsKIHN0YXRp
YyBOU1N0cmluZyAqIGNvbnN0IFVzZVBhZ2luYXRlZE1vZGVQcmVmZXJlbmNlS2V5ID0gQCJVc2VQ
YWdpbmF0ZWRNb2RlIjsKIHN0YXRpYyBOU1N0cmluZyAqIGNvbnN0IEVuYWJsZVN1YlBpeGVsQ1NT
T01NZXRyaWNzUHJlZmVyZW5jZUtleSA9IEAiRW5hYmxlU3ViUGl4ZWxDU1NPTU1ldHJpY3MiOwpA
QCAtNDIsNiArNDUsMTEgQEAKIC8vIFRoaXMgZGVmYXVsdCBuYW1lIGludGVudGlvbmFsbHkgb3Zl
cmxhcHMgd2l0aCB0aGUga2V5IHRoYXQgV2ViS2l0MiBjaGVja3Mgd2hlbiBjcmVhdGluZyBhIHZp
ZXcuCiBzdGF0aWMgTlNTdHJpbmcgKiBjb25zdCBVc2VSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJl
YVByZWZlcmVuY2VLZXkgPSBAIldlYktpdDJVc2VSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYSI7
CiAKK3R5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIERlYnVnT3ZlcnlsYXlNZW51SXRlbVRhZykg
eworICAgIE5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uT3ZlcmxheVRhZyA9IDEwMCwKKyAgICBXaGVl
bEV2ZW50SGFuZGxlclJlZ2lvbk92ZXJsYXlUYWcKK307CisKIEBpbXBsZW1lbnRhdGlvbiBTZXR0
aW5nc0NvbnRyb2xsZXIKIAogQHN5bnRoZXNpemUgbWVudT1fbWVudTsKQEAgLTk0LDkgKzEwMiwy
OCBAQCAtICh2b2lkKV9wb3B1bGF0ZU1lbnUKICAgICBbc2VsZiBfYWRkSXRlbVdpdGhUaXRsZTpA
IlNob3cgTGF5ZXIgQm9yZGVycyIgYWN0aW9uOkBzZWxlY3Rvcih0b2dnbGVTaG93TGF5ZXJCb3Jk
ZXJzOikgaW5kZW50ZWQ6Tk9dOwogCiAgICAgW3NlbGYgX2FkZEhlYWRlcldpdGhUaXRsZTpAIldl
YktpdDItb25seSBTZXR0aW5ncyJdOworCiAgICAgW3NlbGYgX2FkZEl0ZW1XaXRoVGl0bGU6QCJT
aG93IFRpbGVkIFNjcm9sbGluZyBJbmRpY2F0b3IiIGFjdGlvbjpAc2VsZWN0b3IodG9nZ2xlU2hv
d1RpbGVkU2Nyb2xsaW5nSW5kaWNhdG9yOikgaW5kZW50ZWQ6WUVTXTsKICAgICBbc2VsZiBfYWRk
SXRlbVdpdGhUaXRsZTpAIlVzZSBVSS1TaWRlIENvbXBvc2l0aW5nIiBhY3Rpb246QHNlbGVjdG9y
KHRvZ2dsZVVzZVVJU2lkZUNvbXBvc2l0aW5nOikgaW5kZW50ZWQ6WUVTXTsKIAorICAgIE5TTWVu
dUl0ZW0gKmRlYnVnT3ZlcmxheXNTdWJtZW51SXRlbSA9IFtbTlNNZW51SXRlbSBhbGxvY10gaW5p
dFdpdGhUaXRsZTpAIkRlYnVnIE92ZXJsYXlzIiBhY3Rpb246bmlsIGtleUVxdWl2YWxlbnQ6QCIi
XTsKKyAgICBOU01lbnUqIGRlYnVnT3ZlcmxheXNNZW51ID0gW1tOU01lbnUgYWxsb2NdIGluaXRX
aXRoVGl0bGU6QCJEZWJ1ZyBPdmVybGF5cyJdOworICAgIFtkZWJ1Z092ZXJsYXlzU3VibWVudUl0
ZW0gc2V0U3VibWVudTpkZWJ1Z092ZXJsYXlzTWVudV07CisKKyAgICBOU01lbnVJdGVtICpub25G
YXN0U2Nyb2xsYWJsZVJlZ2lvbkl0ZW0gPSBbW05TTWVudUl0ZW0gYWxsb2NdIGluaXRXaXRoVGl0
bGU6QCJOb24tZmFzdCBTY3JvbGxhYmxlIFJlZ2lvbiIgYWN0aW9uOkBzZWxlY3Rvcih0b2dnbGVE
ZWJ1Z092ZXJsYXk6KSBrZXlFcXVpdmFsZW50OkAiIl07CisgICAgW25vbkZhc3RTY3JvbGxhYmxl
UmVnaW9uSXRlbSBzZXRUYWc6Tm9uRmFzdFNjcm9sbGFibGVSZWdpb25PdmVybGF5VGFnXTsKKyAg
ICBbbm9uRmFzdFNjcm9sbGFibGVSZWdpb25JdGVtIHNldFRhcmdldDpzZWxmXTsKKyAgICBbZGVi
dWdPdmVybGF5c01lbnUgYWRkSXRlbTpbbm9uRmFzdFNjcm9sbGFibGVSZWdpb25JdGVtIGF1dG9y
ZWxlYXNlXV07CisKKyAgICBOU01lbnVJdGVtICp3aGVlbEV2ZW50SGFuZGxlclJlZ2lvbkl0ZW0g
PSBbW05TTWVudUl0ZW0gYWxsb2NdIGluaXRXaXRoVGl0bGU6QCJXaGVlbCBFdmVudCBIYW5kbGVy
IFJlZ2lvbiIgYWN0aW9uOkBzZWxlY3Rvcih0b2dnbGVEZWJ1Z092ZXJsYXk6KSBrZXlFcXVpdmFs
ZW50OkAiIl07CisgICAgW3doZWVsRXZlbnRIYW5kbGVyUmVnaW9uSXRlbSBzZXRUYWc6V2hlZWxF
dmVudEhhbmRsZXJSZWdpb25PdmVybGF5VGFnXTsKKyAgICBbd2hlZWxFdmVudEhhbmRsZXJSZWdp
b25JdGVtIHNldFRhcmdldDpzZWxmXTsKKyAgICBbZGVidWdPdmVybGF5c01lbnUgYWRkSXRlbTpb
d2hlZWxFdmVudEhhbmRsZXJSZWdpb25JdGVtIGF1dG9yZWxlYXNlXV07CisgICAgW2RlYnVnT3Zl
cmxheXNNZW51IHJlbGVhc2VdOworICAgIAorICAgIFtfbWVudSBhZGRJdGVtOmRlYnVnT3Zlcmxh
eXNTdWJtZW51SXRlbV07CisgICAgW2RlYnVnT3ZlcmxheXNTdWJtZW51SXRlbSByZWxlYXNlXTsK
KwogICAgIFtzZWxmIF9hZGRIZWFkZXJXaXRoVGl0bGU6QCJXZWJLaXQxLW9ubHkgU2V0dGluZ3Mi
XTsKICAgICBbc2VsZiBfYWRkSXRlbVdpdGhUaXRsZTpAIkVuYWJsZSBTdWJwaXhlbCBDU1NPTSBN
ZXRyaWNzIiBhY3Rpb246QHNlbGVjdG9yKHRvZ2dsZUVuYWJsZVN1YlBpeGVsQ1NTT01NZXRyaWNz
OikgaW5kZW50ZWQ6WUVTXTsKIH0KQEAgLTExOSw2ICsxNDYsOCBAQCAtIChCT09MKXZhbGlkYXRl
TWVudUl0ZW06KE5TTWVudUl0ZW0gKiltZW51SXRlbQogICAgICAgICBbbWVudUl0ZW0gc2V0U3Rh
dGU6W3NlbGYgdXNlVUlTaWRlQ29tcG9zaXRpbmddID8gTlNPblN0YXRlIDogTlNPZmZTdGF0ZV07
CiAgICAgZWxzZSBpZiAoYWN0aW9uID09IEBzZWxlY3Rvcih0b2dnbGVFbmFibGVTdWJQaXhlbENT
U09NTWV0cmljczopKQogICAgICAgICBbbWVudUl0ZW0gc2V0U3RhdGU6W3NlbGYgc3ViUGl4ZWxD
U1NPTU1ldHJpY3NFbmFibGVkXSA/IE5TT25TdGF0ZSA6IE5TT2ZmU3RhdGVdOworICAgIGVsc2Ug
aWYgKGFjdGlvbiA9PSBAc2VsZWN0b3IodG9nZ2xlRGVidWdPdmVybGF5OikpCisgICAgICAgIFtt
ZW51SXRlbSBzZXRTdGF0ZTpbc2VsZiBkZWJ1Z092ZXJsYXlWaXNpYmxlOm1lbnVJdGVtXSA/IE5T
T25TdGF0ZSA6IE5TT2ZmU3RhdGVdOwogCiAgICAgcmV0dXJuIFlFUzsKIH0KQEAgLTIwMSw2ICsy
MzAsNDQgQEAgLSAoQk9PTClzdWJQaXhlbENTU09NTWV0cmljc0VuYWJsZWQKICAgICByZXR1cm4g
W1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gYm9vbEZvcktleTpFbmFibGVT
dWJQaXhlbENTU09NTWV0cmljc1ByZWZlcmVuY2VLZXldOwogfQogCistIChCT09MKW5vbkZhc3RT
Y3JvbGxhYmxlUmVnaW9uT3ZlcmxheVZpc2libGUKK3sKKyAgICByZXR1cm4gW1tOU1VzZXJEZWZh
dWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gYm9vbEZvcktleTpOb25GYXN0U2Nyb2xsYWJsZVJl
Z2lvbk92ZXJsYXlWaXNpYmxlUHJlZmVyZW5jZUtleV07Cit9CisKKy0gKEJPT0wpd2hlZWxFdmVu
dEhhbmRsZXJSZWdpb25PdmVybGF5VmlzaWJsZQoreworICAgIHJldHVybiBbW05TVXNlckRlZmF1
bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRzXSBib29sRm9yS2V5OldoZWVsRXZlbnRIYW5kbGVyUmVn
aW9uT3ZlcmxheVZpc2libGVQcmVmZXJlbmNlS2V5XTsKK30KKworLSAoTlNTdHJpbmcgKilwcmVm
ZXJlbmNlS2V5Rm9yUmVnaW9uT3ZlcmxheVRhZzooTlNVSW50ZWdlcil0YWcKK3sKKyAgICBzd2l0
Y2ggKHRhZykgeworICAgIGNhc2UgTm9uRmFzdFNjcm9sbGFibGVSZWdpb25PdmVybGF5VGFnOgor
ICAgICAgICByZXR1cm4gTm9uRmFzdFNjcm9sbGFibGVSZWdpb25PdmVybGF5VmlzaWJsZVByZWZl
cmVuY2VLZXk7CisKKyAgICBjYXNlIFdoZWVsRXZlbnRIYW5kbGVyUmVnaW9uT3ZlcmxheVRhZzoK
KyAgICAgICAgcmV0dXJuIFdoZWVsRXZlbnRIYW5kbGVyUmVnaW9uT3ZlcmxheVZpc2libGVQcmVm
ZXJlbmNlS2V5OworICAgIH0KKyAgICByZXR1cm4gbmlsOworfQorCistICh2b2lkKXRvZ2dsZURl
YnVnT3ZlcmxheTooaWQpc2VuZGVyCit7CisgICAgTlNTdHJpbmcgKnByZWZlcmVuY2VLZXkgPSBb
c2VsZiBwcmVmZXJlbmNlS2V5Rm9yUmVnaW9uT3ZlcmxheVRhZzpbc2VuZGVyIHRhZ11dOworICAg
IGlmIChwcmVmZXJlbmNlS2V5KQorICAgICAgICBbc2VsZiBfdG9nZ2xlQm9vbGVhbkRlZmF1bHQ6
cHJlZmVyZW5jZUtleV07Cit9CisKKy0gKEJPT0wpZGVidWdPdmVybGF5VmlzaWJsZTooTlNNZW51
SXRlbSAqKW1lbnVJdGVtCit7CisgICAgTlNTdHJpbmcgKnByZWZlcmVuY2VLZXkgPSBbc2VsZiBw
cmVmZXJlbmNlS2V5Rm9yUmVnaW9uT3ZlcmxheVRhZzpbbWVudUl0ZW0gdGFnXV07CisgICAgaWYg
KHByZWZlcmVuY2VLZXkpCisgICAgICAgIHJldHVybiBbW05TVXNlckRlZmF1bHRzIHN0YW5kYXJk
VXNlckRlZmF1bHRzXSBib29sRm9yS2V5OnByZWZlcmVuY2VLZXldOworCisgICAgcmV0dXJuIE5P
OworfQorCiAtIChOU1N0cmluZyAqKWRlZmF1bHRVUkwKIHsKICAgICBOU1N0cmluZyAqY3VzdG9t
RGVmYXVsdFVSTCA9IFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdIHN0cmlu
Z0ZvcktleTpEZWZhdWx0VVJMUHJlZmVyZW5jZUtleV07CmRpZmYgLS1naXQgYS9Ub29scy9NaW5p
QnJvd3Nlci9tYWMvV0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIubSBiL1Rvb2xzL01pbmlCcm93
c2VyL21hYy9XSzJCcm93c2VyV2luZG93Q29udHJvbGxlci5tCmluZGV4IDQxZTU3N2M5MTQ4ZTIz
NzE2OWMyMThhYjNkOWJjZTUyMTRkMzExZGUuLmFhZWQ1MGE0YzkzODZhYTQ4YmRkMzZhNGYwNWE2
MjdkNjYzNWEyYmYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlCcm93c2VyL21hYy9XSzJCcm93c2Vy
V2luZG93Q29udHJvbGxlci5tCisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL21hYy9XSzJCcm93c2Vy
V2luZG93Q29udHJvbGxlci5tCkBAIC0yOTgsNiArMjk4LDE0IEBAIC0gKHZvaWQpZGlkQ2hhbmdl
U2V0dGluZ3MKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBfd2ViVmlldy5fcGFnaW5hdGlv
bk1vZGUgPSBfV0tQYWdpbmF0aW9uTW9kZVVucGFnaW5hdGVkOwogICAgIH0KKyAgICAKKyAgICBO
U1VJbnRlZ2VyIHZpc2libGVPdmVybGF5UmVnaW9ucyA9IDA7CisgICAgaWYgKHNldHRpbmdzLm5v
bkZhc3RTY3JvbGxhYmxlUmVnaW9uT3ZlcmxheVZpc2libGUpCisgICAgICAgIHZpc2libGVPdmVy
bGF5UmVnaW9ucyB8PSBfV0tOb25GYXN0U2Nyb2xsYWJsZVJlZ2lvbjsKKyAgICBpZiAoc2V0dGlu
Z3Mud2hlZWxFdmVudEhhbmRsZXJSZWdpb25PdmVybGF5VmlzaWJsZSkKKyAgICAgICAgdmlzaWJs
ZU92ZXJsYXlSZWdpb25zIHw9IF9XS1doZWVsRXZlbnRIYW5kbGVyUmVnaW9uOworICAgIAorICAg
IHByZWZlcmVuY2VzLl92aXNpYmxlRGVidWdPdmVybGF5UmVnaW9ucyA9IHZpc2libGVPdmVybGF5
UmVnaW9uczsKIH0KIAogLSAodm9pZClvYnNlcnZlVmFsdWVGb3JLZXlQYXRoOihOU1N0cmluZyAq
KWtleVBhdGggb2ZPYmplY3Q6KGlkKW9iamVjdCBjaGFuZ2U6KE5TRGljdGlvbmFyeSAqKWNoYW5n
ZSBjb250ZXh0Oih2b2lkICopY29udGV4dAo=
</data>
<flag name="review"
          id="265550"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
      

    </bug>

</bugzilla>