<?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>150531</bug_id>
          
          <creation_ts>2015-10-24 09:48:21 -0700</creation_ts>
          <short_desc>Add a way to add user style sheets to WKUserContentController</short_desc>
          <delta_ts>2015-10-26 10:49:28 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Tim Horton">thorton</reporter>
          <assigned_to name="Tim Horton">thorton</assigned_to>
          <cc>andersca</cc>
    
    <cc>commit-queue</cc>
    
    <cc>mitz</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1136261</commentid>
    <comment_count>0</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2015-10-24 09:48:21 -0700</bug_when>
    <thetext>Add a way to add user style sheets to WKUserContentController</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1136262</commentid>
    <comment_count>1</comment_count>
      <attachid>263980</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2015-10-24 09:50:36 -0700</bug_when>
    <thetext>Created attachment 263980
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1136263</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-10-24 09:52:30 -0700</bug_when>
    <thetext>Attachment 263980 did not pass style-queue:


ERROR: Tools/TestWebKitAPI/Tests/WebKit2Cocoa/UserContentController.mm:241:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Tools/TestWebKitAPI/Tests/WebKit2Cocoa/UserContentController.mm:261:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Tools/TestWebKitAPI/Tests/WebKit2Cocoa/UserContentController.mm:272:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Tools/TestWebKitAPI/Tests/WebKit2Cocoa/UserContentController.mm:299:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Tools/TestWebKitAPI/Tests/WebKit2Cocoa/UserContentController.mm:313:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Tools/TestWebKitAPI/Tests/WebKit2Cocoa/UserContentController.mm:327:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Tools/TestWebKitAPI/Tests/WebKit2Cocoa/UserContentController.mm:354:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Tools/TestWebKitAPI/Tests/WebKit2Cocoa/UserContentController.mm:364:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Tools/TestWebKitAPI/Tests/WebKit2Cocoa/UserContentController.mm:391:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Tools/TestWebKitAPI/Tests/WebKit2Cocoa/UserContentController.mm:401:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebKit2/UIProcess/API/Cocoa/_WKUserStyleSheet.mm:28:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 11 in 13 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>1136264</commentid>
    <comment_count>3</comment_count>
      <attachid>263981</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2015-10-24 10:05:01 -0700</bug_when>
    <thetext>Created attachment 263981
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1136265</commentid>
    <comment_count>4</comment_count>
      <attachid>263980</attachid>
    <who name="">mitz</who>
    <bug_when>2015-10-24 10:05:54 -0700</bug_when>
    <thetext>Comment on attachment 263980
Patch

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

&gt; Source/WebKit2/UIProcess/API/Cocoa/_WKUserStyleSheet.h:40
&gt; +@property (nonatomic, readonly) NSArray *whitelistedURLPatterns;
&gt; +@property (nonatomic, readonly) NSArray *blacklistedURLPatterns;

These should be WK_ARRAY(NSString *) and copy even though they’re readonly.

&gt; Source/WebKit2/UIProcess/API/Cocoa/_WKUserStyleSheet.h:44
&gt; +- (instancetype)initWithSource:(NSString *)source whitelistedURLPatterns:(WK_NULLABLE NSArray *)whitelistedURLPatterns blacklistedURLPatterns:(WK_NULLABLE NSArray *)blacklistedURLPatterns forMainFrameOnly:(BOOL)forMainFrameOnly;

As should be the arguments here. Since there’s no difference between passing nil and passing an empty array, I suggest that we don’t make them optional.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1136266</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-10-24 10:07:57 -0700</bug_when>
    <thetext>Attachment 263981 did not pass style-queue:


ERROR: Tools/TestWebKitAPI/Tests/WebKit2Cocoa/UserContentController.mm:228:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebKit2/UIProcess/API/Cocoa/_WKUserStyleSheet.mm:28:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 2 in 13 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>1136293</commentid>
    <comment_count>6</comment_count>
      <attachid>263981</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-10-24 15:40:11 -0700</bug_when>
    <thetext>Comment on attachment 263981
Patch

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

&gt; Source/WebKit2/UIProcess/API/APIUserStyleSheet.cpp:45
&gt; +    return WebCore::URL { WebCore::URL { }, urlStringBuilder.toString() };

I think you can and should omit one or both of those WebCore::URL.

&gt; Source/WebKit2/UIProcess/API/APIUserStyleSheet.h:40
&gt; +        return adoptRef(*new UserStyleSheet(userStyleSheet));

Anything to be gained by doing WTF::move here?

&gt; Source/WebKit2/UIProcess/API/APIUserStyleSheet.h:43
&gt; +    UserStyleSheet(WebCore::UserStyleSheet userStyleSheet)

Should this be private?

&gt; Source/WebKit2/UIProcess/API/APIUserStyleSheet.h:44
&gt; +        : m_userStyleSheet(userStyleSheet)

Anything to be gained by doing WTF::move here?

&gt; Source/WebKit2/UIProcess/API/APIUserStyleSheet.h:50
&gt; +    ~UserStyleSheet()
&gt; +    {
&gt; +    }

I suggest omitting this since it’s what the compiler would generate if you didn’t say it explicitly.

&gt; Source/WebKit2/UIProcess/API/APIUserStyleSheet.h:52
&gt; +    WebCore::UserStyleSheet&amp; userStyleSheet() { return m_userStyleSheet; }

Do we need to support a non-const reference? I guess maybe that answer is an emphatic yes. But I’m surprised that WebCore::UserStyleSheet is apparently so small that we don’t need to move it or pass it by reference (hence likely itself a reference of some kind), yet is itself mutable and so a mutable reference to it needs to be part of the API here. Seems fishy.

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKUserContentController.mm:152
&gt; +    _userContentControllerProxy-&gt;addUserStyleSheet(userStyleSheet-&gt;_userStyleSheet-&gt;userStyleSheet());

Something’s wrong with our naming when we make classes that are wrappers if we literally end up writing code saying “user style sheet’s user style sheet’s user style sheet”.

&gt; Source/WebKit2/UIProcess/API/Cocoa/_WKUserStyleSheet.mm:43
&gt; +static Vector&lt;String&gt; toWTFStrings(NSArray *strings)
&gt; +{
&gt; +    Vector&lt;String&gt; result;
&gt; +
&gt; +    for (NSString *string in strings)
&gt; +        result.append(string);
&gt; +
&gt; +    return result;
&gt; +}

This has to be a pattern that is repeated elsewhere. Would like to share the code. Should use reserveInitialCapacity and uncheckedAppend. Maybe some day we could use the modern syntax that tells it’s an NSArray of NSString, not an arbitrary NSArray.

&gt; Source/WebKit2/UIProcess/API/Cocoa/_WKUserStyleSheet.mm:53
&gt; +static RetainPtr&lt;NSArray&gt; toNSStrings(Vector&lt;String&gt; strings)
&gt; +{
&gt; +    RetainPtr&lt;NSMutableArray&gt; result = adoptNS([[NSMutableArray alloc] initWithCapacity:strings.size()]);
&gt; +
&gt; +    for (const auto&amp; string : strings)
&gt; +        [result addObject:string];
&gt; +
&gt; +    return result;
&gt; +}

This has to be a pattern that is repeated elsewhere. Would like to share the code. Should probably take a const Vector&lt;String&gt;&amp; rather than copying the vector.

&gt; Tools/TestWebKitAPI/Tests/WebKit2Cocoa/UserContentController.mm:229
&gt; +        EXPECT_WK_STREQ(color, value);

iOS link fails with a reference from this line of code because TestWebKitAPI::Util::toSTD(char const*) is not found, presumably not exported. Some build configuration thing?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1136328</commentid>
    <comment_count>7</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2015-10-24 18:21:09 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; Comment on attachment 263980 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=263980&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/Cocoa/_WKUserStyleSheet.h:40
&gt; &gt; +@property (nonatomic, readonly) NSArray *whitelistedURLPatterns;
&gt; &gt; +@property (nonatomic, readonly) NSArray *blacklistedURLPatterns;
&gt; 
&gt; These should be WK_ARRAY(NSString *) and copy even though they’re readonly.

Generics I&apos;m cool with, but why &quot;copy&quot; with readonly? 

&gt; &gt; Source/WebKit2/UIProcess/API/Cocoa/_WKUserStyleSheet.h:44
&gt; &gt; +- (instancetype)initWithSource:(NSString *)source whitelistedURLPatterns:(WK_NULLABLE NSArray *)whitelistedURLPatterns blacklistedURLPatterns:(WK_NULLABLE NSArray *)blacklistedURLPatterns forMainFrameOnly:(BOOL)forMainFrameOnly;
&gt; 
&gt; As should be the arguments here. Since there’s no difference between passing
&gt; nil and passing an empty array, I suggest that we don’t make them optional.

Ok! I was marching the C API but sure, that makes sense!

(In reply to comment #6)
&gt; Comment on attachment 263981 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=263981&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/APIUserStyleSheet.cpp:45
&gt; &gt; +    return WebCore::URL { WebCore::URL { }, urlStringBuilder.toString() };
&gt; 
&gt; I think you can and should omit one or both of those WebCore::URL.

Ok! This and many of the below comments also apply to APIUserScript, since that&apos;s where most of this code came from. Will consider each and apply to both places as necessary.

&gt; &gt; Source/WebKit2/UIProcess/API/APIUserStyleSheet.h:40
&gt; &gt; +        return adoptRef(*new UserStyleSheet(userStyleSheet));
&gt; 
&gt; Anything to be gained by doing WTF::move here?
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/APIUserStyleSheet.h:43
&gt; &gt; +    UserStyleSheet(WebCore::UserStyleSheet userStyleSheet)
&gt; 
&gt; Should this be private?
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/APIUserStyleSheet.h:44
&gt; &gt; +        : m_userStyleSheet(userStyleSheet)
&gt; 
&gt; Anything to be gained by doing WTF::move here?
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/APIUserStyleSheet.h:50
&gt; &gt; +    ~UserStyleSheet()
&gt; &gt; +    {
&gt; &gt; +    }
&gt; 
&gt; I suggest omitting this since it’s what the compiler would generate if you
&gt; didn’t say it explicitly.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/APIUserStyleSheet.h:52
&gt; &gt; +    WebCore::UserStyleSheet&amp; userStyleSheet() { return m_userStyleSheet; }
&gt; 
&gt; Do we need to support a non-const reference? I guess maybe that answer is an
&gt; emphatic yes. But I’m surprised that WebCore::UserStyleSheet is apparently
&gt; so small that we don’t need to move it or pass it by reference (hence likely
&gt; itself a reference of some kind), yet is itself mutable and so a mutable
&gt; reference to it needs to be part of the API here. Seems fishy.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/Cocoa/WKUserContentController.mm:152
&gt; &gt; +    _userContentControllerProxy-&gt;addUserStyleSheet(userStyleSheet-&gt;_userStyleSheet-&gt;userStyleSheet());
&gt; 
&gt; Something’s wrong with our naming when we make classes that are wrappers if
&gt; we literally end up writing code saying “user style sheet’s user style
&gt; sheet’s user style sheet”.

Agreed. So many wrappers! (_WKUserStyleSheet-&gt;API::UserStyleSheet-&gt;WebCore::UserStyleSheet). Will discuss with Dan and Anders.

&gt; &gt; Source/WebKit2/UIProcess/API/Cocoa/_WKUserStyleSheet.mm:43
&gt; &gt; +static Vector&lt;String&gt; toWTFStrings(NSArray *strings)
&gt; &gt; +{
&gt; &gt; +    Vector&lt;String&gt; result;
&gt; &gt; +
&gt; &gt; +    for (NSString *string in strings)
&gt; &gt; +        result.append(string);
&gt; &gt; +
&gt; &gt; +    return result;
&gt; &gt; +}
&gt; 
&gt; This has to be a pattern that is repeated elsewhere. Would like to share the
&gt; code. Should use reserveInitialCapacity and uncheckedAppend. Maybe some day
&gt; we could use the modern syntax that tells it’s an NSArray of NSString, not
&gt; an arbitrary NSArray.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/Cocoa/_WKUserStyleSheet.mm:53
&gt; &gt; +static RetainPtr&lt;NSArray&gt; toNSStrings(Vector&lt;String&gt; strings)
&gt; &gt; +{
&gt; &gt; +    RetainPtr&lt;NSMutableArray&gt; result = adoptNS([[NSMutableArray alloc] initWithCapacity:strings.size()]);
&gt; &gt; +
&gt; &gt; +    for (const auto&amp; string : strings)
&gt; &gt; +        [result addObject:string];
&gt; &gt; +
&gt; &gt; +    return result;
&gt; &gt; +}
&gt; 
&gt; This has to be a pattern that is repeated elsewhere. Would like to share the
&gt; code. Should probably take a const Vector&lt;String&gt;&amp; rather than copying the
&gt; vector.

Definitely should :) and, I&apos;ll try to find a home for these.

&gt; &gt; Tools/TestWebKitAPI/Tests/WebKit2Cocoa/UserContentController.mm:229
&gt; &gt; +        EXPECT_WK_STREQ(color, value);
&gt; 
&gt; iOS link fails with a reference from this line of code because
&gt; TestWebKitAPI::Util::toSTD(char const*) is not found, presumably not
&gt; exported. Some build configuration thing?

That&apos;s a bit weird.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1136329</commentid>
    <comment_count>8</comment_count>
    <who name="">mitz</who>
    <bug_when>2015-10-24 18:27:43 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (In reply to comment #4)
&gt; &gt; Comment on attachment 263980 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=263980&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebKit2/UIProcess/API/Cocoa/_WKUserStyleSheet.h:40
&gt; &gt; &gt; +@property (nonatomic, readonly) NSArray *whitelistedURLPatterns;
&gt; &gt; &gt; +@property (nonatomic, readonly) NSArray *blacklistedURLPatterns;
&gt; &gt; 
&gt; &gt; These should be WK_ARRAY(NSString *) and copy even though they’re readonly.
&gt; 
&gt; Generics I&apos;m cool with, but why &quot;copy&quot; with readonly? 

Other properties in the modern API follow this pattern. The practical reason is that it allows an internal redeclaration of the property as readwrite to specify copy as well. The API reason is that it communicates to the client that the returned object is not going to change even if it happens to be of a mutable subclass.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1136350</commentid>
    <comment_count>9</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2015-10-24 21:19:31 -0700</bug_when>
    <thetext>&gt; &gt; Source/WebKit2/UIProcess/API/APIUserStyleSheet.h:52
&gt; &gt; +    WebCore::UserStyleSheet&amp; userStyleSheet() { return m_userStyleSheet; }
&gt; 
&gt; Do we need to support a non-const reference? I guess maybe that answer is an
&gt; emphatic yes. But I’m surprised that WebCore::UserStyleSheet is apparently
&gt; so small that we don’t need to move it or pass it by reference (hence likely
&gt; itself a reference of some kind), yet is itself mutable and so a mutable
&gt; reference to it needs to be part of the API here. Seems fishy.

I don&apos;t actually think we do; they&apos;re totally immutable as far as I can tell. Will remove it and see if anything falls apart. Good catch!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1136352</commentid>
    <comment_count>10</comment_count>
      <attachid>264001</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2015-10-24 21:53:08 -0700</bug_when>
    <thetext>Created attachment 264001
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1136354</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-10-24 21:56:06 -0700</bug_when>
    <thetext>Attachment 264001 did not pass style-queue:


ERROR: Tools/TestWebKitAPI/Tests/WebKit2Cocoa/UserContentController.mm:228:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebKit2/UIProcess/API/Cocoa/_WKUserStyleSheet.mm:28:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 2 in 15 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>1136360</commentid>
    <comment_count>12</comment_count>
      <attachid>264003</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2015-10-24 22:47:01 -0700</bug_when>
    <thetext>Created attachment 264003
try to fix iOS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1136361</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-10-24 22:49:27 -0700</bug_when>
    <thetext>Attachment 264003 did not pass style-queue:


ERROR: Tools/TestWebKitAPI/Tests/WebKit2Cocoa/UserContentController.mm:228:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebKit2/UIProcess/API/Cocoa/_WKUserStyleSheet.mm:28:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 2 in 16 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>1136362</commentid>
    <comment_count>14</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2015-10-24 23:00:25 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/191545</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1136539</commentid>
    <comment_count>15</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2015-10-26 10:00:52 -0700</bug_when>
    <thetext>Do we really have to expose the blacklist and whitelist? We don&apos;t expose them on WKUserScript.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1136548</commentid>
    <comment_count>16</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2015-10-26 10:34:50 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; Do we really have to expose the blacklist and whitelist? We don&apos;t expose
&gt; them on WKUserScript.

Errr, interesting. What do you think?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1136549</commentid>
    <comment_count>17</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2015-10-26 10:35:09 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; (In reply to comment #15)
&gt; &gt; Do we really have to expose the blacklist and whitelist? We don&apos;t expose
&gt; &gt; them on WKUserScript.
&gt; 
&gt; Errr, interesting. What do you think?

Should I just pull those parameters out?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1136555</commentid>
    <comment_count>18</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2015-10-26 10:49:28 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; (In reply to comment #16)
&gt; &gt; (In reply to comment #15)
&gt; &gt; &gt; Do we really have to expose the blacklist and whitelist? We don&apos;t expose
&gt; &gt; &gt; them on WKUserScript.
&gt; &gt; 
&gt; &gt; Errr, interesting. What do you think?
&gt; 
&gt; Should I just pull those parameters out?

Yes.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>263980</attachid>
            <date>2015-10-24 09:50:36 -0700</date>
            <delta_ts>2015-10-24 21:53:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-150531-20151024094949.patch</filename>
            <type>text/plain</type>
            <size>37503</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkxNTMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNmYwYjQ5NWJkZDkxZjdl
MTNmZWE0M2Y1Njc4MmExNTFjN2U5OGE5Yi4uNTVlMTE3ZDhjYzUzOTEzYzFmNDk2ODJjMGJkZTky
OWVlNjI3YmU1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDE1LTEwLTI0ICBUaW0g
SG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBhIHdheSB0
byBhZGQgdXNlciBzdHlsZSBzaGVldHMgdG8gV0tVc2VyQ29udGVudENvbnRyb2xsZXIKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MDUzMQorICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vMjMxOTE2OTE+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBTaGFyZWQvQVBJL0FQSU9iamVjdC5oOgorICAgICAgICAq
IFNoYXJlZC9Db2NvYS9BUElPYmplY3QubW06CisgICAgICAgIChBUEk6Ok9iamVjdDo6bmV3T2Jq
ZWN0KToKKyAgICAgICAgQm9pbGVycGxhdGUgZm9yIGEgbmV3IEFQSTo6VXNlclN0eWxlU2hlZXQu
CisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVVzZXJTdHlsZVNoZWV0LmNwcDogQWRkZWQu
CisgICAgICAgIChBUEk6OmdlbmVyYXRlSWRlbnRpZmllcik6CisgICAgICAgIChBUEk6OlVzZXJT
dHlsZVNoZWV0OjpnZW5lcmF0ZVVuaXF1ZVVSTCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9B
UElVc2VyU3R5bGVTaGVldC5oOiBBZGRlZC4KKyAgICAgICAgQWRkZWQgQVBJOjpVc2VyU3R5bGVT
aGVldCwgYm9ycm93aW5nIFVSTCBnZW5lcmF0aW9uIGNvZGUgZnJvbSBBUEk6OlVzZXJTY3JpcHQu
CisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlckNvbnRlbnRDb250cm9sbGVy
Lm1tOgorICAgICAgICAoLVtXS1VzZXJDb250ZW50Q29udHJvbGxlciBfYWRkVXNlclN0eWxlU2hl
ZXQ6XSk6CisgICAgICAgICgtW1dLVXNlckNvbnRlbnRDb250cm9sbGVyIF9yZW1vdmVBbGxVc2Vy
U3R5bGVTaGVldHNdKToKKyAgICAgICAgRm9yd2FyZCBhZGQgYW5kIHJlbW92ZS1hbGwgdG8gV2Vi
VXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLVXNlckNvbnRlbnRDb250cm9sbGVyUHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQ29jb2EvX1dLVXNlclN0eWxlU2hlZXQuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9Db2NvYS9fV0tVc2VyU3R5bGVTaGVldC5tbTogQWRkZWQuCisgICAgICAgICh0b1dU
RlN0cmluZ3MpOgorICAgICAgICAoLVtfV0tVc2VyU3R5bGVTaGVldCBpbml0V2l0aFNvdXJjZTp3
aGl0ZWxpc3RlZFVSTFBhdHRlcm5zOmJsYWNrbGlzdGVkVVJMUGF0dGVybnM6Zm9yTWFpbkZyYW1l
T25seTpdKToKKyAgICAgICAgKC1bX1dLVXNlclN0eWxlU2hlZXQgc291cmNlXSk6CisgICAgICAg
ICgtW19XS1VzZXJTdHlsZVNoZWV0IGlzRm9yTWFpbkZyYW1lT25seV0pOgorICAgICAgICAoLVtf
V0tVc2VyU3R5bGVTaGVldCBjb3B5V2l0aFpvbmU6XSk6CisgICAgICAgICgtW19XS1VzZXJTdHls
ZVNoZWV0IF9hcGlPYmplY3RdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS1Vz
ZXJTdHlsZVNoZWV0SW50ZXJuYWwuaDogQWRkZWQuCisgICAgICAgIChBUEk6OndyYXBwZXIpOgor
ICAgICAgICAqIFdlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgQWRk
IHRoZSBuZXcgbW9kZXJuIEFQSSBvYmplY3QgKGFzIFNQSSBmb3Igbm93KS4KKwogMjAxNS0xMC0y
MyAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAg
IEZpeCBDTWFrZSBjb21waWxlIGVycm9yIGFuZCBhZGQgY29ycmVjdCBudWxsIGNoZWNrCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL0FQSU9iamVjdC5oIGIvU291cmNlL1dl
YktpdDIvU2hhcmVkL0FQSS9BUElPYmplY3QuaAppbmRleCBhNTEyM2M2NjcwNmEzODlmNzQ5ZDQ4
MDY1MzVmMDgyNDI5NGMzMjNhLi4xMzA3MmVhMTc5MDQwY2VkM2Q3ZDhhZTI4NDY5MDNmNzVlOGRj
MzUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL0FQSU9iamVjdC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvQVBJT2JqZWN0LmgKQEAgLTgyLDYgKzgyLDcg
QEAgcHVibGljOgogICAgICAgICBVUkxSZXNwb25zZSwKICAgICAgICAgVXNlckNvbnRlbnRVUkxQ
YXR0ZXJuLAogICAgICAgICBVc2VyU2NyaXB0LAorICAgICAgICBVc2VyU3R5bGVTaGVldCwKICAg
ICAgICAgV2ViQXJjaGl2ZSwKICAgICAgICAgV2ViQXJjaGl2ZVJlc291cmNlLAogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29jb2EvQVBJT2JqZWN0Lm1tIGIvU291cmNlL1dl
YktpdDIvU2hhcmVkL0NvY29hL0FQSU9iamVjdC5tbQppbmRleCBjYjI0ZDE1ODk3MDJiNzMzNWUy
NjI5Mzg2ODg0OGY3ZTE2NDY0Nzg3Li42Yzk5NzI5NDRiOTI4NTY4MGE4MDhiZWY4MmRkNGRhM2U3
MDhiNGFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29jb2EvQVBJT2JqZWN0
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db2NvYS9BUElPYmplY3QubW0KQEAgLTY3
LDYgKzY3LDcgQEAKICNpbXBvcnQgIl9XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbkludGVybmFs
LmgiCiAjaW1wb3J0ICJfV0tVc2VyQ29udGVudEV4dGVuc2lvblN0b3JlSW50ZXJuYWwuaCIKICNp
bXBvcnQgIl9XS1VzZXJDb250ZW50RmlsdGVySW50ZXJuYWwuaCIKKyNpbXBvcnQgIl9XS1VzZXJT
dHlsZVNoZWV0SW50ZXJuYWwuaCIKICNpbXBvcnQgIl9XS1Zpc2l0ZWRMaW5rU3RvcmVJbnRlcm5h
bC5oIgogI2ltcG9ydCA8b2JqYy9vYmpjLWF1dG8uaD4KIApAQCAtMjExLDYgKzIxMiwxMCBAQCB2
b2lkKiBPYmplY3Q6Om5ld09iamVjdChzaXplX3Qgc2l6ZSwgVHlwZSB0eXBlKQogICAgICAgICB3
cmFwcGVyID0gW1dLVXNlclNjcmlwdCBhbGxvY107CiAgICAgICAgIGJyZWFrOwogCisgICAgY2Fz
ZSBUeXBlOjpVc2VyU3R5bGVTaGVldDoKKyAgICAgICAgd3JhcHBlciA9IFtfV0tVc2VyU3R5bGVT
aGVldCBhbGxvY107CisgICAgICAgIGJyZWFrOworCiAgICAgY2FzZSBUeXBlOjpWaXNpdGVkTGlu
a1N0b3JlOgogICAgICAgICB3cmFwcGVyID0gW19XS1Zpc2l0ZWRMaW5rU3RvcmUgYWxsb2NdOwog
ICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
QVBJVXNlclN0eWxlU2hlZXQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElV
c2VyU3R5bGVTaGVldC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOThmNTg0NWNmNjYxYjc4ZjNkZWZlMWNlODk4
OGJhZjA0NWZlZjUxMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQVBJVXNlclN0eWxlU2hlZXQuY3BwCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQVBJVXNlclN0eWxlU2hlZXQuaCIKKwor
I2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KKworbmFtZXNwYWNlIEFQSSB7CisK
K3N0YXRpYyB1aW50NjRfdCBnZW5lcmF0ZUlkZW50aWZpZXIoKQoreworICAgIHN0YXRpYyB1aW50
NjRfdCBpZGVudGlmaWVyOworCisgICAgcmV0dXJuICsraWRlbnRpZmllcjsKK30KKworV2ViQ29y
ZTo6VVJMIFVzZXJTdHlsZVNoZWV0OjpnZW5lcmF0ZVVuaXF1ZVVSTCgpCit7CisgICAgU3RyaW5n
QnVpbGRlciB1cmxTdHJpbmdCdWlsZGVyOworICAgIHVybFN0cmluZ0J1aWxkZXIuYXBwZW5kTGl0
ZXJhbCgidXNlci1zdHlsZS1zaGVldDoiKTsKKyAgICB1cmxTdHJpbmdCdWlsZGVyLmFwcGVuZE51
bWJlcihnZW5lcmF0ZUlkZW50aWZpZXIoKSk7CisgICAgcmV0dXJuIFdlYkNvcmU6OlVSTCB7IFdl
YkNvcmU6OlVSTCB7IH0sIHVybFN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKSB9OworfQorCisKK30g
Ly8gbmFtZXNwYWNlIEFQSQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9BUElVc2VyU3R5bGVTaGVldC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElV
c2VyU3R5bGVTaGVldC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjViZTg2NjFmMzQxZDc5MGMzNDdkZWE0MDVjZDIz
ODI2Njk4YWYxYmMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0FQSVVzZXJTdHlsZVNoZWV0LmgKQEAgLTAsMCArMSw2MSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
Zm5kZWYgQVBJVXNlclN0eWxlU2hlZXRfaAorI2RlZmluZSBBUElVc2VyU3R5bGVTaGVldF9oCisK
KyNpbmNsdWRlICJBUElPYmplY3QuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1VzZXJTdHlsZVNoZWV0
Lmg+CisKK25hbWVzcGFjZSBBUEkgeworCitjbGFzcyBVc2VyU3R5bGVTaGVldCBmaW5hbCA6IHB1
YmxpYyBPYmplY3RJbXBsPE9iamVjdDo6VHlwZTo6VXNlclN0eWxlU2hlZXQ+IHsKK3B1YmxpYzoK
KyAgICBzdGF0aWMgV2ViQ29yZTo6VVJMIGdlbmVyYXRlVW5pcXVlVVJMKCk7CisKKyAgICBzdGF0
aWMgUmVmPFVzZXJTdHlsZVNoZWV0PiBjcmVhdGUoV2ViQ29yZTo6VXNlclN0eWxlU2hlZXQgdXNl
clN0eWxlU2hlZXQpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBVc2VyU3R5
bGVTaGVldCh1c2VyU3R5bGVTaGVldCkpOworICAgIH0KKworICAgIFVzZXJTdHlsZVNoZWV0KFdl
YkNvcmU6OlVzZXJTdHlsZVNoZWV0IHVzZXJTdHlsZVNoZWV0KQorICAgICAgICA6IG1fdXNlclN0
eWxlU2hlZXQodXNlclN0eWxlU2hlZXQpCisgICAgeworICAgIH0KKworICAgIH5Vc2VyU3R5bGVT
aGVldCgpCisgICAgeworICAgIH0KKworICAgIFdlYkNvcmU6OlVzZXJTdHlsZVNoZWV0JiB1c2Vy
U3R5bGVTaGVldCgpIHsgcmV0dXJuIG1fdXNlclN0eWxlU2hlZXQ7IH0KKyAgICBjb25zdCBXZWJD
b3JlOjpVc2VyU3R5bGVTaGVldCYgdXNlclN0eWxlU2hlZXQoKSBjb25zdCB7IHJldHVybiBtX3Vz
ZXJTdHlsZVNoZWV0OyB9CisKK3ByaXZhdGU6CisgICAgV2ViQ29yZTo6VXNlclN0eWxlU2hlZXQg
bV91c2VyU3R5bGVTaGVldDsKK307CisKK30gLy8gbmFtZXNwYWNlIEFQSQorCisjZW5kaWYgLy8g
QVBJVXNlclN0eWxlU2hlZXRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1VzZXJDb250ZW50Q29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2VyQ29udGVudENvbnRyb2xsZXIubW0KaW5kZXggOGRiNWZk
ZDA2OGNmNjFjNzIzZjE5NTBlNjMwOTY4ZjM4NmRlOWQyZi4uZmU2ZDYwY2M1MmM1MDQ2YTBiZGE1
NTg5YWFiZmUyNGIzZGE1NjZlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1VzZXJDb250ZW50Q29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlckNvbnRlbnRDb250cm9sbGVyLm1tCkBAIC0zOCw2
ICszOCw3IEBACiAjaW1wb3J0ICJXZWJTY3JpcHRNZXNzYWdlSGFuZGxlci5oIgogI2ltcG9ydCAi
V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuaCIKICNpbXBvcnQgIl9XS1VzZXJDb250ZW50
RmlsdGVySW50ZXJuYWwuaCIKKyNpbXBvcnQgIl9XS1VzZXJTdHlsZVNoZWV0SW50ZXJuYWwuaCIK
ICNpbXBvcnQgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4uaD4KICNpbXBvcnQgPFdlYkNvcmUvU2Vj
dXJpdHlPcmlnaW5EYXRhLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NlcmlhbGl6ZWRTY3JpcHRWYWx1
ZS5oPgpAQCAtMTQ2LDYgKzE0NywxNiBAQCBwcml2YXRlOgogI2VuZGlmCiB9CiAKKy0gKHZvaWQp
X2FkZFVzZXJTdHlsZVNoZWV0OihfV0tVc2VyU3R5bGVTaGVldCAqKXVzZXJTdHlsZVNoZWV0Cit7
CisgICAgX3VzZXJDb250ZW50Q29udHJvbGxlclByb3h5LT5hZGRVc2VyU3R5bGVTaGVldCh1c2Vy
U3R5bGVTaGVldC0+X3VzZXJTdHlsZVNoZWV0LT51c2VyU3R5bGVTaGVldCgpKTsKK30KKworLSAo
dm9pZClfcmVtb3ZlQWxsVXNlclN0eWxlU2hlZXRzCit7CisgICAgX3VzZXJDb250ZW50Q29udHJv
bGxlclByb3h5LT5yZW1vdmVBbGxVc2VyU3R5bGVTaGVldHMoKTsKK30KKwogQGVuZAogCiAjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2Vy
Q29udGVudENvbnRyb2xsZXJQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLVXNlckNvbnRlbnRDb250cm9sbGVyUHJpdmF0ZS5oCmluZGV4IDI3OTg1MWVkNjZl
NzAxYTcxYzRjNWRlODcxOTZmMWJlYmY4ZjUwYjYuLjNkZjVhNjU4MmQyODZhM2IyMDFlOWZmZWMy
MGVhNmRhMGEwMDA5YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tVc2VyQ29udGVudENvbnRyb2xsZXJQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJDb250ZW50Q29udHJvbGxlclByaXZhdGUuaApA
QCAtMjgsNiArMjgsNyBAQAogI2lmIFdLX0FQSV9FTkFCTEVECiAKIEBjbGFzcyBfV0tVc2VyQ29u
dGVudEZpbHRlcjsKK0BjbGFzcyBfV0tVc2VyU3R5bGVTaGVldDsKIAogQGludGVyZmFjZSBXS1Vz
ZXJDb250ZW50Q29udHJvbGxlciAoV0tQcml2YXRlKQogCkBAIC0zNSw2ICszNiw5IEBACiAtICh2
b2lkKV9yZW1vdmVVc2VyQ29udGVudEZpbHRlcjooTlNTdHJpbmcgKil1c2VyQ29udGVudEZpbHRl
ck5hbWUgV0tfQVZBSUxBQkxFKDEwXzExLCA5XzApOwogLSAodm9pZClfcmVtb3ZlQWxsVXNlckNv
bnRlbnRGaWx0ZXJzIFdLX0FWQUlMQUJMRSgxMF8xMSwgOV8wKTsKIAorLSAodm9pZClfYWRkVXNl
clN0eWxlU2hlZXQ6KF9XS1VzZXJTdHlsZVNoZWV0ICopdXNlclN0eWxlU2hlZXQgV0tfQVZBSUxB
QkxFKFdLX01BQ19UQkEsIFdLX0lPU19UQkEpOworLSAodm9pZClfcmVtb3ZlQWxsVXNlclN0eWxl
U2hlZXRzIFdLX0FWQUlMQUJMRShXS19NQUNfVEJBLCBXS19JT1NfVEJBKTsKKwogQGVuZAogCiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dL
VXNlclN0eWxlU2hlZXQuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dL
VXNlclN0eWxlU2hlZXQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40YTlhNGM3MjU4MmEzZDFiMWZmNjQ3Y2Y5OWFm
Yjk3ZmUwODliZDQ2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tVc2VyU3R5bGVTaGVldC5oCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW1wb3J0IDxXZWJLaXQvV0tGb3VuZGF0aW9uLmg+CisKKyNpZiBXS19BUElfRU5BQkxF
RAorCisjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KKworV0tfQVNTVU1FX05PTk5V
TExfQkVHSU4KKworV0tfQ0xBU1NfQVZBSUxBQkxFKFdLX01BQ19UQkEsIFdLX0lPU19UQkEpCitA
aW50ZXJmYWNlIF9XS1VzZXJTdHlsZVNoZWV0IDogTlNPYmplY3QgPE5TQ29weWluZz4KKworQHBy
b3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBOU1N0cmluZyAqc291cmNlOworCitAcHJvcGVy
dHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIE5TQXJyYXkgKndoaXRlbGlzdGVkVVJMUGF0dGVybnM7
CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIE5TQXJyYXkgKmJsYWNrbGlzdGVkVVJM
UGF0dGVybnM7CisKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgZ2V0dGVyPWlzRm9y
TWFpbkZyYW1lT25seSkgQk9PTCBmb3JNYWluRnJhbWVPbmx5OworCistIChpbnN0YW5jZXR5cGUp
aW5pdFdpdGhTb3VyY2U6KE5TU3RyaW5nICopc291cmNlIHdoaXRlbGlzdGVkVVJMUGF0dGVybnM6
KFdLX05VTExBQkxFIE5TQXJyYXkgKil3aGl0ZWxpc3RlZFVSTFBhdHRlcm5zIGJsYWNrbGlzdGVk
VVJMUGF0dGVybnM6KFdLX05VTExBQkxFIE5TQXJyYXkgKilibGFja2xpc3RlZFVSTFBhdHRlcm5z
IGZvck1haW5GcmFtZU9ubHk6KEJPT0wpZm9yTWFpbkZyYW1lT25seTsKKworQGVuZAorCitXS19B
U1NVTUVfTk9OTlVMTF9FTkQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0NvY29hL19XS1VzZXJTdHlsZVNoZWV0Lm1tIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tVc2VyU3R5bGVTaGVldC5tbQpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43Zjk5
YWMwNmNmNzRjMGQwNjYxYjc1NDg1ODY0NGYxYWJlYTEzZDk4Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tVc2VyU3R5bGVTaGVldC5tbQpA
QCAtMCwwICsxLDEwMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9y
dCAiX1dLVXNlclN0eWxlU2hlZXRJbnRlcm5hbC5oIgorCisjaW1wb3J0ICJXZWJLaXQySW5pdGlh
bGl6ZS5oIgorCisjaWYgV0tfQVBJX0VOQUJMRUQKKworQGltcGxlbWVudGF0aW9uIF9XS1VzZXJT
dHlsZVNoZWV0CisKK3N0YXRpYyBWZWN0b3I8U3RyaW5nPiB0b1dURlN0cmluZ3MoTlNBcnJheSAq
c3RyaW5ncykKK3sKKyAgICBWZWN0b3I8U3RyaW5nPiByZXN1bHQ7CisKKyAgICBmb3IgKE5TU3Ry
aW5nICpzdHJpbmcgaW4gc3RyaW5ncykKKyAgICAgICAgcmVzdWx0LmFwcGVuZChzdHJpbmcpOwor
CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIFJldGFpblB0cjxOU0FycmF5PiB0b05T
U3RyaW5ncyhWZWN0b3I8U3RyaW5nPiBzdHJpbmdzKQoreworICAgIFJldGFpblB0cjxOU011dGFi
bGVBcnJheT4gcmVzdWx0ID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0
aENhcGFjaXR5OnN0cmluZ3Muc2l6ZSgpXSk7CisKKyAgICBmb3IgKGNvbnN0IGF1dG8mIHN0cmlu
ZyA6IHN0cmluZ3MpCisgICAgICAgIFtyZXN1bHQgYWRkT2JqZWN0OnN0cmluZ107CisKKyAgICBy
ZXR1cm4gcmVzdWx0OworfQorCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhTb3VyY2U6KE5TU3Ry
aW5nICopc291cmNlIHdoaXRlbGlzdGVkVVJMUGF0dGVybnM6KE5TQXJyYXkgKil3aGl0ZWxpc3Rl
ZFVSTFBhdHRlcm5zIGJsYWNrbGlzdGVkVVJMUGF0dGVybnM6KE5TQXJyYXkgKilibGFja2xpc3Rl
ZFVSTFBhdHRlcm5zIGZvck1haW5GcmFtZU9ubHk6KEJPT0wpZm9yTWFpbkZyYW1lT25seQorewor
ICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQorICAgICAgICByZXR1cm4gbmlsOworCisg
ICAgLy8gRklYTUU6IEluIHRoZSBBUEkgdGVzdCwgd2UgY2FuIHVzZSBnZW5lcmF0ZVVuaXF1ZVVS
TCBiZWxvdyBiZWZvcmUgdGhlIEFQSTo6T2JqZWN0IGNvbnN0cnVjdG9yIGhhcyBkb25lIHRoaXMu
Li4gd2hlcmUgc2hvdWxkIHRoaXMgcmVhbGx5IGJlPworICAgIFdlYktpdDo6SW5pdGlhbGl6ZVdl
YktpdDIoKTsKKworICAgIEFQSTo6T2JqZWN0Ojpjb25zdHJ1Y3RJbldyYXBwZXI8QVBJOjpVc2Vy
U3R5bGVTaGVldD4oc2VsZiwgV2ViQ29yZTo6VXNlclN0eWxlU2hlZXQgeyBXVEY6OlN0cmluZyhz
b3VyY2UpLCBBUEk6OlVzZXJTdHlsZVNoZWV0OjpnZW5lcmF0ZVVuaXF1ZVVSTCgpLCB0b1dURlN0
cmluZ3Mod2hpdGVsaXN0ZWRVUkxQYXR0ZXJucyksIHRvV1RGU3RyaW5ncyhibGFja2xpc3RlZFVS
TFBhdHRlcm5zKSwgZm9yTWFpbkZyYW1lT25seSA/IFdlYkNvcmU6OkluamVjdEluVG9wRnJhbWVP
bmx5IDogV2ViQ29yZTo6SW5qZWN0SW5BbGxGcmFtZXMsIFdlYkNvcmU6OlVzZXJTdHlsZVVzZXJM
ZXZlbCB9KTsKKworICAgIHJldHVybiBzZWxmOworfQorCistIChOU1N0cmluZyAqKXNvdXJjZQor
eworICAgIHJldHVybiBfdXNlclN0eWxlU2hlZXQtPnVzZXJTdHlsZVNoZWV0KCkuc291cmNlKCk7
Cit9CisKKy0gKE5TQXJyYXkgKil3aGl0ZWxpc3RlZFVSTFBhdHRlcm5zCit7CisgICAgcmV0dXJu
IHRvTlNTdHJpbmdzKF91c2VyU3R5bGVTaGVldC0+dXNlclN0eWxlU2hlZXQoKS53aGl0ZWxpc3Qo
KSkuYXV0b3JlbGVhc2UoKTsKK30KKworLSAoTlNBcnJheSAqKWJsYWNrbGlzdGVkVVJMUGF0dGVy
bnMKK3sKKyAgICByZXR1cm4gdG9OU1N0cmluZ3MoX3VzZXJTdHlsZVNoZWV0LT51c2VyU3R5bGVT
aGVldCgpLmJsYWNrbGlzdCgpKS5hdXRvcmVsZWFzZSgpOworfQorCistIChCT09MKWlzRm9yTWFp
bkZyYW1lT25seQoreworICAgIHJldHVybiBfdXNlclN0eWxlU2hlZXQtPnVzZXJTdHlsZVNoZWV0
KCkuaW5qZWN0ZWRGcmFtZXMoKSA9PSBXZWJDb3JlOjpJbmplY3RJblRvcEZyYW1lT25seTsKK30K
KworLSAoaWQpY29weVdpdGhab25lOihOU1pvbmUgKil6b25lCit7CisgICAgcmV0dXJuIFtzZWxm
IHJldGFpbl07Cit9CisKKyNwcmFnbWEgbWFyayBXS09iamVjdCBwcm90b2NvbCBpbXBsZW1lbnRh
dGlvbgorCistIChBUEk6Ok9iamVjdCYpX2FwaU9iamVjdAoreworICAgIHJldHVybiAqX3VzZXJT
dHlsZVNoZWV0OworfQorCitAZW5kCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tVc2VyU3R5bGVTaGVldEludGVybmFsLmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1VzZXJTdHlsZVNoZWV0SW50ZXJuYWwu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4wNDRjMDgzYWQ0NzhmOGIwNjU4NTk3Yzk2OTlhYTQ3OTJhMzllZDBhCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tV
c2VyU3R5bGVTaGVldEludGVybmFsLmgKQEAgLTAsMCArMSw0OSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bXBvcnQgIl9XS1VzZXJTdHlsZVNoZWV0LmgiCisKKyNpZiBXS19BUElfRU5BQkxFRAorCisjaW1w
b3J0ICJBUElVc2VyU3R5bGVTaGVldC5oIgorI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorCitu
YW1lc3BhY2UgQVBJIHsKKworaW5saW5lIF9XS1VzZXJTdHlsZVNoZWV0ICp3cmFwcGVyKFVzZXJT
dHlsZVNoZWV0JiB1c2VyU3R5bGVTaGVldCkKK3sKKyAgICBBU1NFUlQoW3VzZXJTdHlsZVNoZWV0
LndyYXBwZXIoKSBpc0tpbmRPZkNsYXNzOltfV0tVc2VyU3R5bGVTaGVldCBjbGFzc11dKTsKKyAg
ICByZXR1cm4gKF9XS1VzZXJTdHlsZVNoZWV0ICopdXNlclN0eWxlU2hlZXQud3JhcHBlcigpOwor
fQorCit9CisKK0BpbnRlcmZhY2UgX1dLVXNlclN0eWxlU2hlZXQgKCkgPFdLT2JqZWN0PiB7CitA
cGFja2FnZQorICAgIEFQSTo6T2JqZWN0U3RvcmFnZTxBUEk6OlVzZXJTdHlsZVNoZWV0PiBfdXNl
clN0eWxlU2hlZXQ7Cit9CitAZW5kCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdDIvV2Vi
S2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDZiOTkzODUzZmYyODU1YWI2YjQ1
ZjYxZTVjMzNjZjQwMWM1MWIzOTUuLmUzYjg2MTQ0OTM0MDg0NzVjYTdjYjY0OGMzNThiNzkxNWNl
NWU3ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKQEAgLTY0MSw2ICs2NDEsMTEgQEAKIAkJMkQ4NzBEMTAxNjIzNEZGRTAwMEEzRjIw
IC8qIFBERlBsdWdpbi5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDJEODcwRDBFMTYyMkI3RjkwMDBBM0YyMCAvKiBQREZQbHVnaW4ubW0gKi87IH07CiAJ
CTJEODcxMDE2MTgyODQxNUQwMDE4RkEwMSAvKiBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b20u
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDg3MTAx
NDE4Mjg0MTVEMDAxOEZBMDEgLyogUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tLm1tICovOyB9
OwogCQkyRDg3MTAxNzE4Mjg0MTVEMDAxOEZBMDEgLyogUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3Vz
dG9tLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDg3
MTAxNTE4Mjg0MTVEMDAxOEZBMDEgLyogUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tLmggKi87
IH07CisJCTJEODc4NjFEMUJEQjU0QkYwMEQwMkFCQiAvKiBfV0tVc2VyU3R5bGVTaGVldC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQ4Nzg2MUIxQkRC
NTRCRjAwRDAyQUJCIC8qIF9XS1VzZXJTdHlsZVNoZWV0LmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMkQ4Nzg2MUUxQkRCNTRCRjAwRDAyQUJCIC8q
IF9XS1VzZXJTdHlsZVNoZWV0Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMkQ4Nzg2MUMxQkRCNTRCRjAwRDAyQUJCIC8qIF9XS1VzZXJTdHlsZVNoZWV0
Lm1tICovOyBzZXR0aW5ncyA9IHtBU1NFVF9UQUdTID0gKCk7IH07IH07CisJCTJEODc4NjIwMUJE
QjU3RjUwMEQwMkFCQiAvKiBfV0tVc2VyU3R5bGVTaGVldEludGVybmFsLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDg3ODYxRjFCREI1N0Y1MDBEMDJB
QkIgLyogX1dLVXNlclN0eWxlU2hlZXRJbnRlcm5hbC5oICovOyBzZXR0aW5ncyA9IHtBU1NFVF9U
QUdTID0gKCk7IH07IH07CisJCTJEODc4NjIzMUJEQjU4RkYwMEQwMkFCQiAvKiBBUElVc2VyU3R5
bGVTaGVldC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAyRDg3ODYyMTFCREI1OEZGMDBEMDJBQkIgLyogQVBJVXNlclN0eWxlU2hlZXQuY3BwICovOyBz
ZXR0aW5ncyA9IHtBU1NFVF9UQUdTID0gKCk7IH07IH07CisJCTJEODc4NjI0MUJEQjU4RkYwMEQw
MkFCQiAvKiBBUElVc2VyU3R5bGVTaGVldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMkQ4Nzg2MjIxQkRCNThGRjAwRDAyQUJCIC8qIEFQSVVzZXJTdHls
ZVNoZWV0LmggKi87IHNldHRpbmdzID0ge0FTU0VUX1RBR1MgPSAoKTsgfTsgfTsKIAkJMkQ4OTQ5
RjAxODIwNDRGNjAwRTg5OEFBIC8qIFBsYXRmb3JtQ0FMYXllclJlbW90ZVRpbGVkQmFja2luZy5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDg5NDlF
RTE4MjA0NEY2MDBFODk4QUEgLyogUGxhdGZvcm1DQUxheWVyUmVtb3RlVGlsZWRCYWNraW5nLmNw
cCAqLzsgfTsKIAkJMkQ4OTQ5RjExODIwNDRGNjAwRTg5OEFBIC8qIFBsYXRmb3JtQ0FMYXllclJl
bW90ZVRpbGVkQmFja2luZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMkQ4OTQ5RUYxODIwNDRGNjAwRTg5OEFBIC8qIFBsYXRmb3JtQ0FMYXllclJlbW90
ZVRpbGVkQmFja2luZy5oICovOyB9OwogCQkyRDlFQTMwRDFBOTZDQjU5MDAyRDI4MDcgLyogV0tQ
YWdlSW5qZWN0ZWRCdW5kbGVDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDJEOUVBMzBDMUE5NkNCNTkwMDJEMjgwNyAvKiBXS1BhZ2VJbmplY3Rl
ZEJ1bmRsZUNsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CkBAIC0yODA1LDYgKzI4MTAsMTEgQEAKIAkJMkQ4NzBEMEUxNjIyQjdGOTAwMEEzRjIw
IC8qIFBERlBsdWdpbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9
IFBERlBsdWdpbi5tbTsgcGF0aCA9IFBERi9QREZQbHVnaW4ubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTJEODcxMDE0MTgyODQxNUQwMDE4RkEwMSAvKiBQbGF0Zm9ybUNBTGF5ZXJS
ZW1vdGVDdXN0b20ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQ
bGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b20ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTJEODcxMDE1MTgyODQxNUQwMDE4RkEwMSAvKiBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0
b20uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGxhdGZvcm1DQUxheWVyUmVt
b3RlQ3VzdG9tLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTJEODc4NjFCMUJEQjU0
QkYwMEQwMkFCQiAvKiBfV0tVc2VyU3R5bGVTaGVldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBfV0tVc2VyU3R5bGVTaGVldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkyRDg3ODYxQzFCREI1NEJGMDBEMDJBQkIgLyogX1dLVXNlclN0eWxlU2hlZXQubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBfV0tVc2VyU3R5bGVTaGVldC5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkQ4Nzg2MUYxQkRCNTdGNTAwRDAyQUJC
IC8qIF9XS1VzZXJTdHlsZVNoZWV0SW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gX1dLVXNlclN0eWxlU2hlZXRJbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkyRDg3ODYyMTFCREI1OEZGMDBEMDJBQkIgLyogQVBJVXNlclN0eWxlU2hlZXQu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQVBJVXNlclN0eWxlU2hl
ZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyRDg3ODYyMjFCREI1OEZGMDBE
MDJBQkIgLyogQVBJVXNlclN0eWxlU2hlZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gQVBJVXNlclN0eWxlU2hlZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MkQ4OTQ5RUUxODIwNDRGNjAwRTg5OEFBIC8qIFBsYXRmb3JtQ0FMYXllclJlbW90ZVRpbGVkQmFj
a2luZy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQbGF0Zm9ybUNB
TGF5ZXJSZW1vdGVUaWxlZEJhY2tpbmcuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkyRDg5NDlFRjE4MjA0NEY2MDBFODk4QUEgLyogUGxhdGZvcm1DQUxheWVyUmVtb3RlVGlsZWRC
YWNraW5nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBsYXRmb3JtQ0FMYXll
clJlbW90ZVRpbGVkQmFja2luZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRDlF
QTMwQzFBOTZDQjU5MDAyRDI4MDcgLyogV0tQYWdlSW5qZWN0ZWRCdW5kbGVDbGllbnQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tQYWdlSW5qZWN0ZWRCdW5kbGVDbGllbnQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTUzNjEsNiArNTM3MSw5IEBACiAJCQkJ
N0M4OUQyQjgxQTZCMEYyQzAwM0E1RkRFIC8qIF9XS1VzZXJDb250ZW50RmlsdGVyLmggKi8sCiAJ
CQkJN0M4OUQyQjcxQTZCMEYyQzAwM0E1RkRFIC8qIF9XS1VzZXJDb250ZW50RmlsdGVyLm1tICov
LAogCQkJCTdDODlEMkJCMUE2QjBGNUIwMDNBNUZERSAvKiBfV0tVc2VyQ29udGVudEZpbHRlcklu
dGVybmFsLmggKi8sCisJCQkJMkQ4Nzg2MUIxQkRCNTRCRjAwRDAyQUJCIC8qIF9XS1VzZXJTdHls
ZVNoZWV0LmggKi8sCisJCQkJMkQ4Nzg2MUMxQkRCNTRCRjAwRDAyQUJCIC8qIF9XS1VzZXJTdHls
ZVNoZWV0Lm1tICovLAorCQkJCTJEODc4NjFGMUJEQjU3RjUwMEQwMkFCQiAvKiBfV0tVc2VyU3R5
bGVTaGVldEludGVybmFsLmggKi8sCiAJCQkJMUE4MUIzN0YxOEJENjZBRDAwMDdGREFDIC8qIF9X
S1Zpc2l0ZWRMaW5rU3RvcmUuaCAqLywKIAkJCQkxQTgxQjM3RTE4QkQ2NkFEMDAwN0ZEQUMgLyog
X1dLVmlzaXRlZExpbmtTdG9yZS5tbSAqLywKIAkJCQkxQTgxQjM4NDE4QkQ2NzNBMDAwN0ZEQUMg
LyogX1dLVmlzaXRlZExpbmtTdG9yZUludGVybmFsLmggKi8sCkBAIC02MzAyLDYgKzYzMTUsOCBA
QAogCQkJCTdDM0EwNkE2MUFBQjkwM0UwMDlENzRCQSAvKiBBUElVc2VyQ29udGVudEV4dGVuc2lv
blN0b3JlLmggKi8sCiAJCQkJN0M4OUQyQTUxQTY3ODlFQTAwM0E1RkRFIC8qIEFQSVVzZXJTY3Jp
cHQuY3BwICovLAogCQkJCTdDODlEMjkyMUE2NzEyMkYwMDNBNUZERSAvKiBBUElVc2VyU2NyaXB0
LmggKi8sCisJCQkJMkQ4Nzg2MjExQkRCNThGRjAwRDAyQUJCIC8qIEFQSVVzZXJTdHlsZVNoZWV0
LmNwcCAqLywKKwkJCQkyRDg3ODYyMjFCREI1OEZGMDBEMDJBQkIgLyogQVBJVXNlclN0eWxlU2hl
ZXQuaCAqLywKIAkJCQkxQTQ4MzJDNTFBOUJDMTNDMDA4QjRERkUgLyogQVBJV2Vic2l0ZURhdGFS
ZWNvcmQuY3BwICovLAogCQkJCTFBNDgzMkM2MUE5QkMxM0MwMDhCNERGRSAvKiBBUElXZWJzaXRl
RGF0YVJlY29yZC5oICovLAogCQkJCTFBMzYzNUE3MUEzMTQ0QTMwMEVENjE5NyAvKiBBUElXZWJz
aXRlRGF0YVN0b3JlLmNwcCAqLywKQEAgLTgwNzEsNiArODA4Niw3IEBACiAJCQkJOTNBODhCNDYx
QkM4ODI5MzAwQUJBNUMyIC8qIEFQSUhpdFRlc3RSZXN1bHQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTI5RDU1REYyMTYxQkY5RjEwMDMxQTJFMyAvKiBXZWJQYWdlR3JvdXBQcm94eU1lc3NhZ2VzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkyRDlFQTMwRjFBOTZDQkZGMDAyRDI4MDcgLyogV2ViUGFnZUlu
amVjdGVkQnVuZGxlQ2xpZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQkyRDg3ODYyMDFCREI1N0Y1
MDBEMDJBQkIgLyogX1dLVXNlclN0eWxlU2hlZXRJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQzBDRTcyQTExMjQ3RTcxRDAwQkMwRUM0IC8qIFdlYlBhZ2VNZXNzYWdlcy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMkQ1QzlEMDYxOUM4MUQ4RjAwQjNDNUMxIC8qIFdlYlBhZ2VPdmVybGF5Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQlCQzAzMkREMTEwRjQzODlGMDA1OEMxNUEgLyogV2ViUGFnZVBy
b3h5LmggaW4gSGVhZGVycyAqLywKQEAgLTgxMDcsNiArODEyMyw3IEBACiAJCQkJMzc2MDg4MUYx
NTA0MTNFOTAwRkM4MkM3IC8qIFdlYlJlbmRlck9iamVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NTEwQUZGQkExNjU0MjA0ODAwMUJBMDVFIC8qIFdlYlJlc291cmNlTG9hZGVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk1MUYwNjBFMDE2NTQzMTdGMDBGMzI4MUIgLyogV2ViUmVzb3VyY2VMb2FkZXJN
ZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMkQ4Nzg2MUQxQkRCNTRCRjAwRDAyQUJCIC8q
IF9XS1VzZXJTdHlsZVNoZWV0LmggaW4gSGVhZGVycyAqLywKIAkJCQk3QzM2MUQ3MzE5MjdGQTM2
MDAzNkE1OUQgLyogV2ViU2NyaXB0TWVzc2FnZUhhbmRsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUQzQjk0ODQ5MTFGRjRCNjUwMDAzMkIzOSAvKiBXZWJTZWFyY2hQb3B1cE1lbnUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTFBNDgzMkQ3MUE5Q0RGOTYwMDhCNERGRSAvKiBXZWJzaXRlRGF0YS5oIGlu
IEhlYWRlcnMgKi8sCkBAIC04MzIxLDYgKzgzMzgsNyBAQAogCQkJCTFBQjhBMUVDMTg0MDA4MDkw
MEU5QUU2OSAvKiBXS1BhZ2VMb2FkZXJDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzRTZB
NEVFMUJDNUREMzkwMEY4QTBFNyAvKiBfV0tIaXRUZXN0UmVzdWx0LmggaW4gSGVhZGVycyAqLywK
IAkJCQlCQzJEMDIxOTEyQUM0MjZDMDBFNzMyQTMgLyogV0tQYWdlTG9hZFR5cGVzLmggaW4gSGVh
ZGVycyAqLywKKwkJCQkyRDg3ODYyNDFCREI1OEZGMDBEMDJBQkIgLyogQVBJVXNlclN0eWxlU2hl
ZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzQkRFQjAxMTcxREQ3QUYwMEJGRUUxQiAvKiBXS1Bh
Z2VMb2FkVHlwZXNQcml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDczMDM3OTFBN0MyQjc1
MDBGOEY0ODcgLyogV0tQYWdlTmF2aWdhdGlvbkNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MUFCOEExRUUxODQwMEFDQjAwRTlBRTY5IC8qIFdLUGFnZVBvbGljeUNsaWVudC5oIGluIEhlYWRl
cnMgKi8sCkBAIC05OTk2LDYgKzEwMDE0LDcgQEAKIAkJCQkyOTIzMkRGODE4QjJBOUFFMDBEMDU5
NkYgLyogV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdElPUy5tbSBpbiBTb3VyY2VzICovLAog
CQkJCTI5MjMyREY5MThCMkFCM0EwMEQwNTk2RiAvKiBXS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2Jq
ZWN0TWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZDQjRFNDkxOEJCRTA0NDAwMEZDRkM5IC8q
IFdLQWN0aW9uU2hlZXQubW0gaW4gU291cmNlcyAqLywKKwkJCQkyRDg3ODYyMzFCREI1OEZGMDBE
MDJBQkIgLyogQVBJVXNlclN0eWxlU2hlZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZDQjRF
NEIxOEJCRTA0NDAwMEZDRkM5IC8qIFdLQWN0aW9uU2hlZXRBc3Npc3RhbnQubW0gaW4gU291cmNl
cyAqLywKIAkJCQlDNUZBMUVENDE4RTEwNjIyMDBCM0Y0MDIgLyogV0tBaXJQbGF5Um91dGVQaWNr
ZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQk1MTJFMzRFNDEzMEI0RDA1MDBBQkQxOUEgLyogV0tB
cHBsaWNhdGlvbkNhY2hlTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLywKQEAgLTEwMDgwLDYgKzEw
MDk5LDcgQEAKIAkJCQlCQ0NGNkFDMjEyQzkxRjM0MDA4RjlDMzUgLyogV0tJbWFnZS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlCQ0NGNkFDOTEyQzkxRjU5MDA4RjlDMzUgLyogV0tJbWFnZUNHLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTkzM0RGODMwMUIzQkMwQjQwMEFFQTlFMyAvKiBXS0ltYWdl
UHJldmlld1ZpZXdDb250cm9sbGVyLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJMkQ4Nzg2MUUxQkRC
NTRCRjAwRDAyQUJCIC8qIF9XS1VzZXJTdHlsZVNoZWV0Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
OTMyMUQ1ODgxQTM4RUU3NDAwODA1MkJFIC8qIFdLSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlci5t
bSBpbiBTb3VyY2VzICovLAogCQkJCTFDOEUyOTNBMTI3NjFFNUIwMEJDN0JEMCAvKiBXS0luc3Bl
Y3Rvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjNDNzI1QzE5NkY2MDUyMDBBRUREMEMgLyog
V0tJbnNwZWN0b3JIaWdobGlnaHRWaWV3Lm1tIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9U
b29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMTkwNzJiYTBkZjg3ZDRlYWVl
N2ExMzQ2MjQzOGE4OTllMjI2YWIyYi4uNGJhNzkyYmQxZGE5OGIxZmIyNTNmNmU0NTA4YWRhMzRl
YzNiNzI5OCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE0IEBACisyMDE1LTEwLTI0ICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0
b25AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBhIHdheSB0byBhZGQgdXNlciBzdHlsZSBzaGVl
dHMgdG8gV0tVc2VyQ29udGVudENvbnRyb2xsZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MDUzMQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjMx
OTE2OTE+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9Vc2VyQ29udGVudENvbnRyb2xsZXIu
bW06CisgICAgICAgIChURVNUKToKKwogMjAxNS0xMC0yMyAgTWljaGFlbCBTYWJvZmYgIDxtc2Fi
b2ZmQGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OIChyMTc5MzU3LXIxNzkzNTkpOiBX
ZWJDb250ZW50IENyYXNoIHVzaW5nIEFPTCBNYWlsIEAgY29tLmFwcGxlLkphdmFzY3JpcHRDb3Jl
IEpTQzo6bGlua1BvbHltb3JwaGljQ2FsbChKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6Q2FsbExpbmtJ
bmZvJiwgSlNDOjpDYWxsVmFyaWFudCwgSlNDOjpSZWdpc3RlclByZXNlcnZhdGlvbk1vZGUpICsg
MTU4NApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2Ev
VXNlckNvbnRlbnRDb250cm9sbGVyLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXQyQ29jb2EvVXNlckNvbnRlbnRDb250cm9sbGVyLm1tCmluZGV4IDUzMzAwMzU1MmQyNjE1MGI3
OWZkY2I4NDUwZmYzZDg3NWRlMzFlNzcuLjA1MDI5MDI3ZTVkNjI1MGMwY2NkZjk3ZmU4ZGFhM2Vk
NjMzOTAxMmEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNv
Y29hL1VzZXJDb250ZW50Q29udHJvbGxlci5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdDJDb2NvYS9Vc2VyQ29udGVudENvbnRyb2xsZXIubW0KQEAgLTI4LDYgKzI4LDgg
QEAKICNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJUZXN0LmgiCiAjaW1w
b3J0IDxXZWJLaXQvV2ViS2l0Lmg+CisjaW1wb3J0IDxXZWJLaXQvV0tVc2VyQ29udGVudENvbnRy
b2xsZXJQcml2YXRlLmg+CisjaW1wb3J0IDxXZWJLaXQvX1dLVXNlclN0eWxlU2hlZXQuaD4KICNp
bXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KIAogI2lmIFdLX0FQSV9FTkFCTEVECkBAIC0yMTIsNCAr
MjE0LDE5NyBAQCBURVNUKFdLVXNlckNvbnRlbnRDb250cm9sbGVyLCBTY3JpcHRNZXNzYWdlSGFu
ZGxlcldpdGhOYXZpZ2F0aW9uKQogfQogI2VuZGlmCiAKK3N0YXRpYyBOU1N0cmluZyAqc3R5bGVT
aGVldFNvdXJjZSA9IEAiYm9keSB7IGJhY2tncm91bmQtY29sb3I6IGdyZWVuICFpbXBvcnRhbnQ7
IH0iOworc3RhdGljIE5TU3RyaW5nICpiYWNrZ3JvdW5kQ29sb3JTY3JpcHQgPSBAIndpbmRvdy5n
ZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmJvZHksIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2Jh
Y2tncm91bmQtY29sb3InKSI7CitzdGF0aWMgTlNTdHJpbmcgKmZyYW1lQmFja2dyb3VuZENvbG9y
U2NyaXB0ID0gQCJ3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgnaWZyYW1lJylbMF0uY29udGVudERvY3VtZW50LmJvZHksIG51bGwpLmdldFByb3Bl
cnR5VmFsdWUoJ2JhY2tncm91bmQtY29sb3InKSI7CitzdGF0aWMgY29uc3QgY2hhciogZ3JlZW5J
blJHQiA9ICJyZ2IoMCwgMTI4LCAwKSI7CitzdGF0aWMgY29uc3QgY2hhciogcmVkSW5SR0IgPSAi
cmdiKDI1NSwgMCwgMCkiOworc3RhdGljIGNvbnN0IGNoYXIqIHdoaXRlSW5SR0IgPSAicmdiYSgw
LCAwLCAwLCAwKSI7CitzdGF0aWMgYm9vbCBkaWRDaGVja0JhY2tncm91bmRDb2xvcjsKKworVEVT
VChXS1VzZXJDb250ZW50Q29udHJvbGxlciwgQWRkVXNlclN0eWxlU2hlZXRCZWZvcmVDcmVhdGlu
Z1ZpZXcpCit7CisgICAgUmV0YWluUHRyPFdLV2ViVmlld0NvbmZpZ3VyYXRpb24+IGNvbmZpZ3Vy
YXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwor
CisgICAgUmV0YWluUHRyPF9XS1VzZXJTdHlsZVNoZWV0PiBzdHlsZVNoZWV0ID0gYWRvcHROUyhb
W19XS1VzZXJTdHlsZVNoZWV0IGFsbG9jXSBpbml0V2l0aFNvdXJjZTpzdHlsZVNoZWV0U291cmNl
IHdoaXRlbGlzdGVkVVJMUGF0dGVybnM6bmlsIGJsYWNrbGlzdGVkVVJMUGF0dGVybnM6bmlsIGZv
ck1haW5GcmFtZU9ubHk6WUVTXSk7CisgICAgW1tjb25maWd1cmF0aW9uIHVzZXJDb250ZW50Q29u
dHJvbGxlcl0gX2FkZFVzZXJTdHlsZVNoZWV0OnN0eWxlU2hlZXQuZ2V0KCldOworCisgICAgUmV0
YWluUHRyPFdLV2ViVmlldz4gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGlu
aXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25m
aWd1cmF0aW9uLmdldCgpXSk7CisKKyAgICBSZXRhaW5QdHI8U2ltcGxlTmF2aWdhdGlvbkRlbGVn
YXRlPiBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tTaW1wbGVOYXZpZ2F0aW9uRGVsZWdhdGUgYWxsb2Nd
IGluaXRdKTsKKyAgICBbd2ViVmlldyBzZXROYXZpZ2F0aW9uRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0
KCldOworCisgICAgW3dlYlZpZXcgbG9hZEhUTUxTdHJpbmc6QCI8Ym9keSBzdHlsZT0nYmFja2dy
b3VuZC1jb2xvcjogcmVkOyc+PC9ib2R5PiIgYmFzZVVSTDpuaWxdOworICAgIFRlc3RXZWJLaXRB
UEk6OlV0aWw6OnJ1bigmaXNEb25lV2l0aE5hdmlnYXRpb24pOworICAgIGlzRG9uZVdpdGhOYXZp
Z2F0aW9uID0gZmFsc2U7CisKKyAgICBbd2ViVmlldyBldmFsdWF0ZUphdmFTY3JpcHQ6YmFja2dy
b3VuZENvbG9yU2NyaXB0IGNvbXBsZXRpb25IYW5kbGVyOl4gKGlkIHZhbHVlLCBOU0Vycm9yICog
ZXJyb3IpIHsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGdyZWVuSW5SR0IsIHZhbHVlKTsKKyAg
ICAgICAgZGlkQ2hlY2tCYWNrZ3JvdW5kQ29sb3IgPSB0cnVlOworICAgIH1dOworCisgICAgVGVz
dFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkaWRDaGVja0JhY2tncm91bmRDb2xvcik7CisgICAgZGlk
Q2hlY2tCYWNrZ3JvdW5kQ29sb3IgPSBmYWxzZTsKK30KKworVEVTVChXS1VzZXJDb250ZW50Q29u
dHJvbGxlciwgQWRkVXNlclN0eWxlU2hlZXRBZnRlckNyZWF0aW5nVmlldykKK3sKKyAgICBSZXRh
aW5QdHI8V0tXZWJWaWV3PiB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5p
dFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKV0pOworCisgICAgUmV0YWluUHRy
PFNpbXBsZU5hdmlnYXRpb25EZWxlZ2F0ZT4gZGVsZWdhdGUgPSBhZG9wdE5TKFtbU2ltcGxlTmF2
aWdhdGlvbkRlbGVnYXRlIGFsbG9jXSBpbml0XSk7CisgICAgW3dlYlZpZXcgc2V0TmF2aWdhdGlv
bkRlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKKworICAgIFt3ZWJWaWV3IGxvYWRIVE1MU3RyaW5n
OkAiPGJvZHkgc3R5bGU9J2JhY2tncm91bmQtY29sb3I6IHJlZDsnPjwvYm9keT4iIGJhc2VVUkw6
bmlsXTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZVdpdGhOYXZpZ2F0aW9u
KTsKKyAgICBpc0RvbmVXaXRoTmF2aWdhdGlvbiA9IGZhbHNlOworCisgICAgW3dlYlZpZXcgZXZh
bHVhdGVKYXZhU2NyaXB0OmJhY2tncm91bmRDb2xvclNjcmlwdCBjb21wbGV0aW9uSGFuZGxlcjpe
IChpZCB2YWx1ZSwgTlNFcnJvciAqIGVycm9yKSB7CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShy
ZWRJblJHQiwgdmFsdWUpOworICAgICAgICBkaWRDaGVja0JhY2tncm91bmRDb2xvciA9IHRydWU7
CisgICAgfV07CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRpZENoZWNrQmFja2dy
b3VuZENvbG9yKTsKKyAgICBkaWRDaGVja0JhY2tncm91bmRDb2xvciA9IGZhbHNlOworCisgICAg
UmV0YWluUHRyPF9XS1VzZXJTdHlsZVNoZWV0PiBzdHlsZVNoZWV0ID0gYWRvcHROUyhbW19XS1Vz
ZXJTdHlsZVNoZWV0IGFsbG9jXSBpbml0V2l0aFNvdXJjZTpzdHlsZVNoZWV0U291cmNlIHdoaXRl
bGlzdGVkVVJMUGF0dGVybnM6bmlsIGJsYWNrbGlzdGVkVVJMUGF0dGVybnM6bmlsIGZvck1haW5G
cmFtZU9ubHk6WUVTXSk7CisgICAgW1t3ZWJWaWV3IGNvbmZpZ3VyYXRpb25dLnVzZXJDb250ZW50
Q29udHJvbGxlciBfYWRkVXNlclN0eWxlU2hlZXQ6c3R5bGVTaGVldC5nZXQoKV07CisKKyAgICBb
d2ViVmlldyBldmFsdWF0ZUphdmFTY3JpcHQ6YmFja2dyb3VuZENvbG9yU2NyaXB0IGNvbXBsZXRp
b25IYW5kbGVyOl4gKGlkIHZhbHVlLCBOU0Vycm9yICogZXJyb3IpIHsKKyAgICAgICAgRVhQRUNU
X1dLX1NUUkVRKGdyZWVuSW5SR0IsIHZhbHVlKTsKKyAgICAgICAgZGlkQ2hlY2tCYWNrZ3JvdW5k
Q29sb3IgPSB0cnVlOworICAgIH1dOworCisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZk
aWRDaGVja0JhY2tncm91bmRDb2xvcik7CisgICAgZGlkQ2hlY2tCYWNrZ3JvdW5kQ29sb3IgPSBm
YWxzZTsKK30KKworVEVTVChXS1VzZXJDb250ZW50Q29udHJvbGxlciwgVXNlclN0eWxlU2hlZXRX
aGl0ZUFuZEJsYWNrTGlzdCkKK3sKKyAgICBSZXRhaW5QdHI8V0tXZWJWaWV3Q29uZmlndXJhdGlv
bj4gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9j
XSBpbml0XSk7CisKKyAgICBSZXRhaW5QdHI8X1dLVXNlclN0eWxlU2hlZXQ+IHN0eWxlU2hlZXQg
PSBhZG9wdE5TKFtbX1dLVXNlclN0eWxlU2hlZXQgYWxsb2NdIGluaXRXaXRoU291cmNlOnN0eWxl
U2hlZXRTb3VyY2Ugd2hpdGVsaXN0ZWRVUkxQYXR0ZXJuczpAWyBAImh0dHA6Ly9oYXBweS5leGFt
cGxlLmNvbS8iIF0gYmxhY2tsaXN0ZWRVUkxQYXR0ZXJuczpAWyBAImh0dHA6Ly9zYWQuZXhhbXBs
ZS5jb20vIiBdIGZvck1haW5GcmFtZU9ubHk6WUVTXSk7CisgICAgW1tjb25maWd1cmF0aW9uIHVz
ZXJDb250ZW50Q29udHJvbGxlcl0gX2FkZFVzZXJTdHlsZVNoZWV0OnN0eWxlU2hlZXQuZ2V0KCld
OworCisgICAgUmV0YWluUHRyPFdLV2ViVmlldz4gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZp
ZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmln
dXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CisKKyAgICBSZXRhaW5QdHI8U2ltcGxlTmF2
aWdhdGlvbkRlbGVnYXRlPiBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tTaW1wbGVOYXZpZ2F0aW9uRGVs
ZWdhdGUgYWxsb2NdIGluaXRdKTsKKyAgICBbd2ViVmlldyBzZXROYXZpZ2F0aW9uRGVsZWdhdGU6
ZGVsZWdhdGUuZ2V0KCldOworCisgICAgLy8gVHJ5IHNvbWV0aGluZyBvbiB0aGUgd2hpdGVsaXN0
OgorCisgICAgW3dlYlZpZXcgbG9hZEhUTUxTdHJpbmc6QCI8Ym9keSBzdHlsZT0nYmFja2dyb3Vu
ZC1jb2xvcjogcmVkOyc+PC9ib2R5PiIgYmFzZVVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0
dHA6Ly9oYXBweS5leGFtcGxlLmNvbS8iXV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVu
KCZpc0RvbmVXaXRoTmF2aWdhdGlvbik7CisgICAgaXNEb25lV2l0aE5hdmlnYXRpb24gPSBmYWxz
ZTsKKworICAgIFt3ZWJWaWV3IGV2YWx1YXRlSmF2YVNjcmlwdDpiYWNrZ3JvdW5kQ29sb3JTY3Jp
cHQgY29tcGxldGlvbkhhbmRsZXI6XiAoaWQgdmFsdWUsIE5TRXJyb3IgKiBlcnJvcikgeworICAg
ICAgICBFWFBFQ1RfV0tfU1RSRVEoZ3JlZW5JblJHQiwgdmFsdWUpOworICAgICAgICBkaWRDaGVj
a0JhY2tncm91bmRDb2xvciA9IHRydWU7CisgICAgfV07CisKKyAgICBUZXN0V2ViS2l0QVBJOjpV
dGlsOjpydW4oJmRpZENoZWNrQmFja2dyb3VuZENvbG9yKTsKKyAgICBkaWRDaGVja0JhY2tncm91
bmRDb2xvciA9IGZhbHNlOworCisgICAgLy8gVHJ5IHNvbWV0aGluZyBvbiB0aGUgYmxhY2tsaXN0
OgorCisgICAgW3dlYlZpZXcgbG9hZEhUTUxTdHJpbmc6QCI8Ym9keSBzdHlsZT0nYmFja2dyb3Vu
ZC1jb2xvcjogcmVkOyc+PC9ib2R5PiIgYmFzZVVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0
dHA6Ly9zYWQuZXhhbXBsZS5jb20vIl1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigm
aXNEb25lV2l0aE5hdmlnYXRpb24pOworICAgIGlzRG9uZVdpdGhOYXZpZ2F0aW9uID0gZmFsc2U7
CisKKyAgICBbd2ViVmlldyBldmFsdWF0ZUphdmFTY3JpcHQ6YmFja2dyb3VuZENvbG9yU2NyaXB0
IGNvbXBsZXRpb25IYW5kbGVyOl4gKGlkIHZhbHVlLCBOU0Vycm9yICogZXJyb3IpIHsKKyAgICAg
ICAgRVhQRUNUX1dLX1NUUkVRKHJlZEluUkdCLCB2YWx1ZSk7CisgICAgICAgIGRpZENoZWNrQmFj
a2dyb3VuZENvbG9yID0gdHJ1ZTsKKyAgICB9XTsKKworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6
OnJ1bigmZGlkQ2hlY2tCYWNrZ3JvdW5kQ29sb3IpOworICAgIGRpZENoZWNrQmFja2dyb3VuZENv
bG9yID0gZmFsc2U7CisKKyAgICAvLyBUcnkgc29tZXRoaW5nIG9uIG5laXRoZXIgbGlzdDoKKwor
ICAgIFt3ZWJWaWV3IGxvYWRIVE1MU3RyaW5nOkAiPGJvZHkgc3R5bGU9J2JhY2tncm91bmQtY29s
b3I6IHJlZDsnPjwvYm9keT4iIGJhc2VVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwOi8v
bWVkaW9jcmUuZXhhbXBsZS5jb20vIl1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigm
aXNEb25lV2l0aE5hdmlnYXRpb24pOworICAgIGlzRG9uZVdpdGhOYXZpZ2F0aW9uID0gZmFsc2U7
CisKKyAgICBbd2ViVmlldyBldmFsdWF0ZUphdmFTY3JpcHQ6YmFja2dyb3VuZENvbG9yU2NyaXB0
IGNvbXBsZXRpb25IYW5kbGVyOl4gKGlkIHZhbHVlLCBOU0Vycm9yICogZXJyb3IpIHsKKyAgICAg
ICAgRVhQRUNUX1dLX1NUUkVRKHJlZEluUkdCLCB2YWx1ZSk7CisgICAgICAgIGRpZENoZWNrQmFj
a2dyb3VuZENvbG9yID0gdHJ1ZTsKKyAgICB9XTsKKworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6
OnJ1bigmZGlkQ2hlY2tCYWNrZ3JvdW5kQ29sb3IpOworICAgIGRpZENoZWNrQmFja2dyb3VuZENv
bG9yID0gZmFsc2U7Cit9CisKK1RFU1QoV0tVc2VyQ29udGVudENvbnRyb2xsZXIsIFVzZXJTdHls
ZVNoZWV0QWZmZWN0aW5nT25seU1haW5GcmFtZSkKK3sKKyAgICBSZXRhaW5QdHI8V0tXZWJWaWV3
Q29uZmlndXJhdGlvbj4gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1
cmF0aW9uIGFsbG9jXSBpbml0XSk7CisKKyAgICBSZXRhaW5QdHI8X1dLVXNlclN0eWxlU2hlZXQ+
IHN0eWxlU2hlZXQgPSBhZG9wdE5TKFtbX1dLVXNlclN0eWxlU2hlZXQgYWxsb2NdIGluaXRXaXRo
U291cmNlOnN0eWxlU2hlZXRTb3VyY2Ugd2hpdGVsaXN0ZWRVUkxQYXR0ZXJuczpuaWwgYmxhY2ts
aXN0ZWRVUkxQYXR0ZXJuczpuaWwgZm9yTWFpbkZyYW1lT25seTpZRVNdKTsKKyAgICBbW2NvbmZp
Z3VyYXRpb24gdXNlckNvbnRlbnRDb250cm9sbGVyXSBfYWRkVXNlclN0eWxlU2hlZXQ6c3R5bGVT
aGVldC5nZXQoKV07CisKKyAgICBSZXRhaW5QdHI8V0tXZWJWaWV3PiB3ZWJWaWV3ID0gYWRvcHRO
UyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwg
NjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKworICAgIFJldGFpblB0
cjxTaW1wbGVOYXZpZ2F0aW9uRGVsZWdhdGU+IGRlbGVnYXRlID0gYWRvcHROUyhbW1NpbXBsZU5h
dmlnYXRpb25EZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOworICAgIFt3ZWJWaWV3IHNldE5hdmlnYXRp
b25EZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CisKKyAgICBbd2ViVmlldyBsb2FkSFRNTFN0cmlu
ZzpAIjxib2R5IHN0eWxlPSdiYWNrZ3JvdW5kLWNvbG9yOiByZWQ7Jz48aWZyYW1lPjwvaWZyYW1l
PjwvYm9keT4iIGJhc2VVUkw6bmlsXTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlz
RG9uZVdpdGhOYXZpZ2F0aW9uKTsKKyAgICBpc0RvbmVXaXRoTmF2aWdhdGlvbiA9IGZhbHNlOwor
CisgICAgLy8gVGhlIGJvZHkgc2hvdWxkIGJlIGFmZmVjdGVkLgorCisgICAgW3dlYlZpZXcgZXZh
bHVhdGVKYXZhU2NyaXB0OmJhY2tncm91bmRDb2xvclNjcmlwdCBjb21wbGV0aW9uSGFuZGxlcjpe
IChpZCB2YWx1ZSwgTlNFcnJvciAqIGVycm9yKSB7CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShn
cmVlbkluUkdCLCB2YWx1ZSk7CisgICAgICAgIGRpZENoZWNrQmFja2dyb3VuZENvbG9yID0gdHJ1
ZTsKKyAgICB9XTsKKworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZGlkQ2hlY2tCYWNr
Z3JvdW5kQ29sb3IpOworICAgIGRpZENoZWNrQmFja2dyb3VuZENvbG9yID0gZmFsc2U7CisKKyAg
ICAvLyBUaGUgZnJhbWUgc2hvdWxkbid0IGJlIGFmZmVjdGVkLgorCisgICAgW3dlYlZpZXcgZXZh
bHVhdGVKYXZhU2NyaXB0OmZyYW1lQmFja2dyb3VuZENvbG9yU2NyaXB0IGNvbXBsZXRpb25IYW5k
bGVyOl4gKGlkIHZhbHVlLCBOU0Vycm9yICogZXJyb3IpIHsKKyAgICAgICAgRVhQRUNUX1dLX1NU
UkVRKHdoaXRlSW5SR0IsIHZhbHVlKTsKKyAgICAgICAgZGlkQ2hlY2tCYWNrZ3JvdW5kQ29sb3Ig
PSB0cnVlOworICAgIH1dOworCisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkaWRDaGVj
a0JhY2tncm91bmRDb2xvcik7CisgICAgZGlkQ2hlY2tCYWNrZ3JvdW5kQ29sb3IgPSBmYWxzZTsK
K30KKworVEVTVChXS1VzZXJDb250ZW50Q29udHJvbGxlciwgVXNlclN0eWxlU2hlZXRBZmZlY3Rp
bmdBbGxGcmFtZXMpCit7CisgICAgUmV0YWluUHRyPFdLV2ViVmlld0NvbmZpZ3VyYXRpb24+IGNv
bmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5p
dF0pOworCisgICAgUmV0YWluUHRyPF9XS1VzZXJTdHlsZVNoZWV0PiBzdHlsZVNoZWV0ID0gYWRv
cHROUyhbW19XS1VzZXJTdHlsZVNoZWV0IGFsbG9jXSBpbml0V2l0aFNvdXJjZTpzdHlsZVNoZWV0
U291cmNlIHdoaXRlbGlzdGVkVVJMUGF0dGVybnM6bmlsIGJsYWNrbGlzdGVkVVJMUGF0dGVybnM6
bmlsIGZvck1haW5GcmFtZU9ubHk6Tk9dKTsKKyAgICBbW2NvbmZpZ3VyYXRpb24gdXNlckNvbnRl
bnRDb250cm9sbGVyXSBfYWRkVXNlclN0eWxlU2hlZXQ6c3R5bGVTaGVldC5nZXQoKV07CisKKyAg
ICBSZXRhaW5QdHI8V0tXZWJWaWV3PiB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxv
Y10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9u
OmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKworICAgIFJldGFpblB0cjxTaW1wbGVOYXZpZ2F0aW9u
RGVsZWdhdGU+IGRlbGVnYXRlID0gYWRvcHROUyhbW1NpbXBsZU5hdmlnYXRpb25EZWxlZ2F0ZSBh
bGxvY10gaW5pdF0pOworICAgIFt3ZWJWaWV3IHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpkZWxlZ2F0
ZS5nZXQoKV07CisKKyAgICBbd2ViVmlldyBsb2FkSFRNTFN0cmluZzpAIjxib2R5IHN0eWxlPSdi
YWNrZ3JvdW5kLWNvbG9yOiByZWQ7Jz48aWZyYW1lPjwvaWZyYW1lPjwvYm9keT4iIGJhc2VVUkw6
bmlsXTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZVdpdGhOYXZpZ2F0aW9u
KTsKKyAgICBpc0RvbmVXaXRoTmF2aWdhdGlvbiA9IGZhbHNlOworCisgICAgLy8gVGhlIGJvZHkg
c2hvdWxkIGJlIGFmZmVjdGVkLgorCisgICAgW3dlYlZpZXcgZXZhbHVhdGVKYXZhU2NyaXB0OmJh
Y2tncm91bmRDb2xvclNjcmlwdCBjb21wbGV0aW9uSGFuZGxlcjpeIChpZCB2YWx1ZSwgTlNFcnJv
ciAqIGVycm9yKSB7CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShncmVlbkluUkdCLCB2YWx1ZSk7
CisgICAgICAgIGRpZENoZWNrQmFja2dyb3VuZENvbG9yID0gdHJ1ZTsKKyAgICB9XTsKKworICAg
IFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZGlkQ2hlY2tCYWNrZ3JvdW5kQ29sb3IpOworICAg
IGRpZENoZWNrQmFja2dyb3VuZENvbG9yID0gZmFsc2U7CisKKyAgICAvLyBUaGUgZnJhbWUgc2hv
dWxkIGFsc28gYmUgYWZmZWN0ZWQuCisKKyAgICBbd2ViVmlldyBldmFsdWF0ZUphdmFTY3JpcHQ6
ZnJhbWVCYWNrZ3JvdW5kQ29sb3JTY3JpcHQgY29tcGxldGlvbkhhbmRsZXI6XiAoaWQgdmFsdWUs
IE5TRXJyb3IgKiBlcnJvcikgeworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoZ3JlZW5JblJHQiwg
dmFsdWUpOworICAgICAgICBkaWRDaGVja0JhY2tncm91bmRDb2xvciA9IHRydWU7CisgICAgfV07
CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRpZENoZWNrQmFja2dyb3VuZENvbG9y
KTsKKyAgICBkaWRDaGVja0JhY2tncm91bmRDb2xvciA9IGZhbHNlOworfQorCiAjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>263981</attachid>
            <date>2015-10-24 10:05:01 -0700</date>
            <delta_ts>2015-10-24 21:53:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-150531-20151024100413.patch</filename>
            <type>text/plain</type>
            <size>36206</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkxNTMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNmYwYjQ5NWJkZDkxZjdl
MTNmZWE0M2Y1Njc4MmExNTFjN2U5OGE5Yi4uNTVlMTE3ZDhjYzUzOTEzYzFmNDk2ODJjMGJkZTky
OWVlNjI3YmU1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDE1LTEwLTI0ICBUaW0g
SG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBhIHdheSB0
byBhZGQgdXNlciBzdHlsZSBzaGVldHMgdG8gV0tVc2VyQ29udGVudENvbnRyb2xsZXIKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MDUzMQorICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vMjMxOTE2OTE+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBTaGFyZWQvQVBJL0FQSU9iamVjdC5oOgorICAgICAgICAq
IFNoYXJlZC9Db2NvYS9BUElPYmplY3QubW06CisgICAgICAgIChBUEk6Ok9iamVjdDo6bmV3T2Jq
ZWN0KToKKyAgICAgICAgQm9pbGVycGxhdGUgZm9yIGEgbmV3IEFQSTo6VXNlclN0eWxlU2hlZXQu
CisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVVzZXJTdHlsZVNoZWV0LmNwcDogQWRkZWQu
CisgICAgICAgIChBUEk6OmdlbmVyYXRlSWRlbnRpZmllcik6CisgICAgICAgIChBUEk6OlVzZXJT
dHlsZVNoZWV0OjpnZW5lcmF0ZVVuaXF1ZVVSTCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9B
UElVc2VyU3R5bGVTaGVldC5oOiBBZGRlZC4KKyAgICAgICAgQWRkZWQgQVBJOjpVc2VyU3R5bGVT
aGVldCwgYm9ycm93aW5nIFVSTCBnZW5lcmF0aW9uIGNvZGUgZnJvbSBBUEk6OlVzZXJTY3JpcHQu
CisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlckNvbnRlbnRDb250cm9sbGVy
Lm1tOgorICAgICAgICAoLVtXS1VzZXJDb250ZW50Q29udHJvbGxlciBfYWRkVXNlclN0eWxlU2hl
ZXQ6XSk6CisgICAgICAgICgtW1dLVXNlckNvbnRlbnRDb250cm9sbGVyIF9yZW1vdmVBbGxVc2Vy
U3R5bGVTaGVldHNdKToKKyAgICAgICAgRm9yd2FyZCBhZGQgYW5kIHJlbW92ZS1hbGwgdG8gV2Vi
VXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLVXNlckNvbnRlbnRDb250cm9sbGVyUHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQ29jb2EvX1dLVXNlclN0eWxlU2hlZXQuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9Db2NvYS9fV0tVc2VyU3R5bGVTaGVldC5tbTogQWRkZWQuCisgICAgICAgICh0b1dU
RlN0cmluZ3MpOgorICAgICAgICAoLVtfV0tVc2VyU3R5bGVTaGVldCBpbml0V2l0aFNvdXJjZTp3
aGl0ZWxpc3RlZFVSTFBhdHRlcm5zOmJsYWNrbGlzdGVkVVJMUGF0dGVybnM6Zm9yTWFpbkZyYW1l
T25seTpdKToKKyAgICAgICAgKC1bX1dLVXNlclN0eWxlU2hlZXQgc291cmNlXSk6CisgICAgICAg
ICgtW19XS1VzZXJTdHlsZVNoZWV0IGlzRm9yTWFpbkZyYW1lT25seV0pOgorICAgICAgICAoLVtf
V0tVc2VyU3R5bGVTaGVldCBjb3B5V2l0aFpvbmU6XSk6CisgICAgICAgICgtW19XS1VzZXJTdHls
ZVNoZWV0IF9hcGlPYmplY3RdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS1Vz
ZXJTdHlsZVNoZWV0SW50ZXJuYWwuaDogQWRkZWQuCisgICAgICAgIChBUEk6OndyYXBwZXIpOgor
ICAgICAgICAqIFdlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgQWRk
IHRoZSBuZXcgbW9kZXJuIEFQSSBvYmplY3QgKGFzIFNQSSBmb3Igbm93KS4KKwogMjAxNS0xMC0y
MyAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAg
IEZpeCBDTWFrZSBjb21waWxlIGVycm9yIGFuZCBhZGQgY29ycmVjdCBudWxsIGNoZWNrCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL0FQSU9iamVjdC5oIGIvU291cmNlL1dl
YktpdDIvU2hhcmVkL0FQSS9BUElPYmplY3QuaAppbmRleCBhNTEyM2M2NjcwNmEzODlmNzQ5ZDQ4
MDY1MzVmMDgyNDI5NGMzMjNhLi4xMzA3MmVhMTc5MDQwY2VkM2Q3ZDhhZTI4NDY5MDNmNzVlOGRj
MzUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL0FQSU9iamVjdC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvQVBJT2JqZWN0LmgKQEAgLTgyLDYgKzgyLDcg
QEAgcHVibGljOgogICAgICAgICBVUkxSZXNwb25zZSwKICAgICAgICAgVXNlckNvbnRlbnRVUkxQ
YXR0ZXJuLAogICAgICAgICBVc2VyU2NyaXB0LAorICAgICAgICBVc2VyU3R5bGVTaGVldCwKICAg
ICAgICAgV2ViQXJjaGl2ZSwKICAgICAgICAgV2ViQXJjaGl2ZVJlc291cmNlLAogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29jb2EvQVBJT2JqZWN0Lm1tIGIvU291cmNlL1dl
YktpdDIvU2hhcmVkL0NvY29hL0FQSU9iamVjdC5tbQppbmRleCBjYjI0ZDE1ODk3MDJiNzMzNWUy
NjI5Mzg2ODg0OGY3ZTE2NDY0Nzg3Li42Yzk5NzI5NDRiOTI4NTY4MGE4MDhiZWY4MmRkNGRhM2U3
MDhiNGFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29jb2EvQVBJT2JqZWN0
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db2NvYS9BUElPYmplY3QubW0KQEAgLTY3
LDYgKzY3LDcgQEAKICNpbXBvcnQgIl9XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbkludGVybmFs
LmgiCiAjaW1wb3J0ICJfV0tVc2VyQ29udGVudEV4dGVuc2lvblN0b3JlSW50ZXJuYWwuaCIKICNp
bXBvcnQgIl9XS1VzZXJDb250ZW50RmlsdGVySW50ZXJuYWwuaCIKKyNpbXBvcnQgIl9XS1VzZXJT
dHlsZVNoZWV0SW50ZXJuYWwuaCIKICNpbXBvcnQgIl9XS1Zpc2l0ZWRMaW5rU3RvcmVJbnRlcm5h
bC5oIgogI2ltcG9ydCA8b2JqYy9vYmpjLWF1dG8uaD4KIApAQCAtMjExLDYgKzIxMiwxMCBAQCB2
b2lkKiBPYmplY3Q6Om5ld09iamVjdChzaXplX3Qgc2l6ZSwgVHlwZSB0eXBlKQogICAgICAgICB3
cmFwcGVyID0gW1dLVXNlclNjcmlwdCBhbGxvY107CiAgICAgICAgIGJyZWFrOwogCisgICAgY2Fz
ZSBUeXBlOjpVc2VyU3R5bGVTaGVldDoKKyAgICAgICAgd3JhcHBlciA9IFtfV0tVc2VyU3R5bGVT
aGVldCBhbGxvY107CisgICAgICAgIGJyZWFrOworCiAgICAgY2FzZSBUeXBlOjpWaXNpdGVkTGlu
a1N0b3JlOgogICAgICAgICB3cmFwcGVyID0gW19XS1Zpc2l0ZWRMaW5rU3RvcmUgYWxsb2NdOwog
ICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
QVBJVXNlclN0eWxlU2hlZXQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElV
c2VyU3R5bGVTaGVldC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOThmNTg0NWNmNjYxYjc4ZjNkZWZlMWNlODk4
OGJhZjA0NWZlZjUxMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQVBJVXNlclN0eWxlU2hlZXQuY3BwCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQVBJVXNlclN0eWxlU2hlZXQuaCIKKwor
I2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KKworbmFtZXNwYWNlIEFQSSB7CisK
K3N0YXRpYyB1aW50NjRfdCBnZW5lcmF0ZUlkZW50aWZpZXIoKQoreworICAgIHN0YXRpYyB1aW50
NjRfdCBpZGVudGlmaWVyOworCisgICAgcmV0dXJuICsraWRlbnRpZmllcjsKK30KKworV2ViQ29y
ZTo6VVJMIFVzZXJTdHlsZVNoZWV0OjpnZW5lcmF0ZVVuaXF1ZVVSTCgpCit7CisgICAgU3RyaW5n
QnVpbGRlciB1cmxTdHJpbmdCdWlsZGVyOworICAgIHVybFN0cmluZ0J1aWxkZXIuYXBwZW5kTGl0
ZXJhbCgidXNlci1zdHlsZS1zaGVldDoiKTsKKyAgICB1cmxTdHJpbmdCdWlsZGVyLmFwcGVuZE51
bWJlcihnZW5lcmF0ZUlkZW50aWZpZXIoKSk7CisgICAgcmV0dXJuIFdlYkNvcmU6OlVSTCB7IFdl
YkNvcmU6OlVSTCB7IH0sIHVybFN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKSB9OworfQorCisKK30g
Ly8gbmFtZXNwYWNlIEFQSQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9BUElVc2VyU3R5bGVTaGVldC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElV
c2VyU3R5bGVTaGVldC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjViZTg2NjFmMzQxZDc5MGMzNDdkZWE0MDVjZDIz
ODI2Njk4YWYxYmMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0FQSVVzZXJTdHlsZVNoZWV0LmgKQEAgLTAsMCArMSw2MSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
Zm5kZWYgQVBJVXNlclN0eWxlU2hlZXRfaAorI2RlZmluZSBBUElVc2VyU3R5bGVTaGVldF9oCisK
KyNpbmNsdWRlICJBUElPYmplY3QuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1VzZXJTdHlsZVNoZWV0
Lmg+CisKK25hbWVzcGFjZSBBUEkgeworCitjbGFzcyBVc2VyU3R5bGVTaGVldCBmaW5hbCA6IHB1
YmxpYyBPYmplY3RJbXBsPE9iamVjdDo6VHlwZTo6VXNlclN0eWxlU2hlZXQ+IHsKK3B1YmxpYzoK
KyAgICBzdGF0aWMgV2ViQ29yZTo6VVJMIGdlbmVyYXRlVW5pcXVlVVJMKCk7CisKKyAgICBzdGF0
aWMgUmVmPFVzZXJTdHlsZVNoZWV0PiBjcmVhdGUoV2ViQ29yZTo6VXNlclN0eWxlU2hlZXQgdXNl
clN0eWxlU2hlZXQpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBVc2VyU3R5
bGVTaGVldCh1c2VyU3R5bGVTaGVldCkpOworICAgIH0KKworICAgIFVzZXJTdHlsZVNoZWV0KFdl
YkNvcmU6OlVzZXJTdHlsZVNoZWV0IHVzZXJTdHlsZVNoZWV0KQorICAgICAgICA6IG1fdXNlclN0
eWxlU2hlZXQodXNlclN0eWxlU2hlZXQpCisgICAgeworICAgIH0KKworICAgIH5Vc2VyU3R5bGVT
aGVldCgpCisgICAgeworICAgIH0KKworICAgIFdlYkNvcmU6OlVzZXJTdHlsZVNoZWV0JiB1c2Vy
U3R5bGVTaGVldCgpIHsgcmV0dXJuIG1fdXNlclN0eWxlU2hlZXQ7IH0KKyAgICBjb25zdCBXZWJD
b3JlOjpVc2VyU3R5bGVTaGVldCYgdXNlclN0eWxlU2hlZXQoKSBjb25zdCB7IHJldHVybiBtX3Vz
ZXJTdHlsZVNoZWV0OyB9CisKK3ByaXZhdGU6CisgICAgV2ViQ29yZTo6VXNlclN0eWxlU2hlZXQg
bV91c2VyU3R5bGVTaGVldDsKK307CisKK30gLy8gbmFtZXNwYWNlIEFQSQorCisjZW5kaWYgLy8g
QVBJVXNlclN0eWxlU2hlZXRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1VzZXJDb250ZW50Q29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2VyQ29udGVudENvbnRyb2xsZXIubW0KaW5kZXggOGRiNWZk
ZDA2OGNmNjFjNzIzZjE5NTBlNjMwOTY4ZjM4NmRlOWQyZi4uZmU2ZDYwY2M1MmM1MDQ2YTBiZGE1
NTg5YWFiZmUyNGIzZGE1NjZlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1VzZXJDb250ZW50Q29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlckNvbnRlbnRDb250cm9sbGVyLm1tCkBAIC0zOCw2
ICszOCw3IEBACiAjaW1wb3J0ICJXZWJTY3JpcHRNZXNzYWdlSGFuZGxlci5oIgogI2ltcG9ydCAi
V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuaCIKICNpbXBvcnQgIl9XS1VzZXJDb250ZW50
RmlsdGVySW50ZXJuYWwuaCIKKyNpbXBvcnQgIl9XS1VzZXJTdHlsZVNoZWV0SW50ZXJuYWwuaCIK
ICNpbXBvcnQgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4uaD4KICNpbXBvcnQgPFdlYkNvcmUvU2Vj
dXJpdHlPcmlnaW5EYXRhLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NlcmlhbGl6ZWRTY3JpcHRWYWx1
ZS5oPgpAQCAtMTQ2LDYgKzE0NywxNiBAQCBwcml2YXRlOgogI2VuZGlmCiB9CiAKKy0gKHZvaWQp
X2FkZFVzZXJTdHlsZVNoZWV0OihfV0tVc2VyU3R5bGVTaGVldCAqKXVzZXJTdHlsZVNoZWV0Cit7
CisgICAgX3VzZXJDb250ZW50Q29udHJvbGxlclByb3h5LT5hZGRVc2VyU3R5bGVTaGVldCh1c2Vy
U3R5bGVTaGVldC0+X3VzZXJTdHlsZVNoZWV0LT51c2VyU3R5bGVTaGVldCgpKTsKK30KKworLSAo
dm9pZClfcmVtb3ZlQWxsVXNlclN0eWxlU2hlZXRzCit7CisgICAgX3VzZXJDb250ZW50Q29udHJv
bGxlclByb3h5LT5yZW1vdmVBbGxVc2VyU3R5bGVTaGVldHMoKTsKK30KKwogQGVuZAogCiAjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2Vy
Q29udGVudENvbnRyb2xsZXJQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLVXNlckNvbnRlbnRDb250cm9sbGVyUHJpdmF0ZS5oCmluZGV4IDI3OTg1MWVkNjZl
NzAxYTcxYzRjNWRlODcxOTZmMWJlYmY4ZjUwYjYuLjNkZjVhNjU4MmQyODZhM2IyMDFlOWZmZWMy
MGVhNmRhMGEwMDA5YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tVc2VyQ29udGVudENvbnRyb2xsZXJQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJDb250ZW50Q29udHJvbGxlclByaXZhdGUuaApA
QCAtMjgsNiArMjgsNyBAQAogI2lmIFdLX0FQSV9FTkFCTEVECiAKIEBjbGFzcyBfV0tVc2VyQ29u
dGVudEZpbHRlcjsKK0BjbGFzcyBfV0tVc2VyU3R5bGVTaGVldDsKIAogQGludGVyZmFjZSBXS1Vz
ZXJDb250ZW50Q29udHJvbGxlciAoV0tQcml2YXRlKQogCkBAIC0zNSw2ICszNiw5IEBACiAtICh2
b2lkKV9yZW1vdmVVc2VyQ29udGVudEZpbHRlcjooTlNTdHJpbmcgKil1c2VyQ29udGVudEZpbHRl
ck5hbWUgV0tfQVZBSUxBQkxFKDEwXzExLCA5XzApOwogLSAodm9pZClfcmVtb3ZlQWxsVXNlckNv
bnRlbnRGaWx0ZXJzIFdLX0FWQUlMQUJMRSgxMF8xMSwgOV8wKTsKIAorLSAodm9pZClfYWRkVXNl
clN0eWxlU2hlZXQ6KF9XS1VzZXJTdHlsZVNoZWV0ICopdXNlclN0eWxlU2hlZXQgV0tfQVZBSUxB
QkxFKFdLX01BQ19UQkEsIFdLX0lPU19UQkEpOworLSAodm9pZClfcmVtb3ZlQWxsVXNlclN0eWxl
U2hlZXRzIFdLX0FWQUlMQUJMRShXS19NQUNfVEJBLCBXS19JT1NfVEJBKTsKKwogQGVuZAogCiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dL
VXNlclN0eWxlU2hlZXQuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dL
VXNlclN0eWxlU2hlZXQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40YTlhNGM3MjU4MmEzZDFiMWZmNjQ3Y2Y5OWFm
Yjk3ZmUwODliZDQ2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tVc2VyU3R5bGVTaGVldC5oCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW1wb3J0IDxXZWJLaXQvV0tGb3VuZGF0aW9uLmg+CisKKyNpZiBXS19BUElfRU5BQkxF
RAorCisjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KKworV0tfQVNTVU1FX05PTk5V
TExfQkVHSU4KKworV0tfQ0xBU1NfQVZBSUxBQkxFKFdLX01BQ19UQkEsIFdLX0lPU19UQkEpCitA
aW50ZXJmYWNlIF9XS1VzZXJTdHlsZVNoZWV0IDogTlNPYmplY3QgPE5TQ29weWluZz4KKworQHBy
b3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBOU1N0cmluZyAqc291cmNlOworCitAcHJvcGVy
dHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIE5TQXJyYXkgKndoaXRlbGlzdGVkVVJMUGF0dGVybnM7
CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIE5TQXJyYXkgKmJsYWNrbGlzdGVkVVJM
UGF0dGVybnM7CisKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgZ2V0dGVyPWlzRm9y
TWFpbkZyYW1lT25seSkgQk9PTCBmb3JNYWluRnJhbWVPbmx5OworCistIChpbnN0YW5jZXR5cGUp
aW5pdFdpdGhTb3VyY2U6KE5TU3RyaW5nICopc291cmNlIHdoaXRlbGlzdGVkVVJMUGF0dGVybnM6
KFdLX05VTExBQkxFIE5TQXJyYXkgKil3aGl0ZWxpc3RlZFVSTFBhdHRlcm5zIGJsYWNrbGlzdGVk
VVJMUGF0dGVybnM6KFdLX05VTExBQkxFIE5TQXJyYXkgKilibGFja2xpc3RlZFVSTFBhdHRlcm5z
IGZvck1haW5GcmFtZU9ubHk6KEJPT0wpZm9yTWFpbkZyYW1lT25seTsKKworQGVuZAorCitXS19B
U1NVTUVfTk9OTlVMTF9FTkQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0NvY29hL19XS1VzZXJTdHlsZVNoZWV0Lm1tIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tVc2VyU3R5bGVTaGVldC5tbQpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43Zjk5
YWMwNmNmNzRjMGQwNjYxYjc1NDg1ODY0NGYxYWJlYTEzZDk4Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tVc2VyU3R5bGVTaGVldC5tbQpA
QCAtMCwwICsxLDEwMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9y
dCAiX1dLVXNlclN0eWxlU2hlZXRJbnRlcm5hbC5oIgorCisjaW1wb3J0ICJXZWJLaXQySW5pdGlh
bGl6ZS5oIgorCisjaWYgV0tfQVBJX0VOQUJMRUQKKworQGltcGxlbWVudGF0aW9uIF9XS1VzZXJT
dHlsZVNoZWV0CisKK3N0YXRpYyBWZWN0b3I8U3RyaW5nPiB0b1dURlN0cmluZ3MoTlNBcnJheSAq
c3RyaW5ncykKK3sKKyAgICBWZWN0b3I8U3RyaW5nPiByZXN1bHQ7CisKKyAgICBmb3IgKE5TU3Ry
aW5nICpzdHJpbmcgaW4gc3RyaW5ncykKKyAgICAgICAgcmVzdWx0LmFwcGVuZChzdHJpbmcpOwor
CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIFJldGFpblB0cjxOU0FycmF5PiB0b05T
U3RyaW5ncyhWZWN0b3I8U3RyaW5nPiBzdHJpbmdzKQoreworICAgIFJldGFpblB0cjxOU011dGFi
bGVBcnJheT4gcmVzdWx0ID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0
aENhcGFjaXR5OnN0cmluZ3Muc2l6ZSgpXSk7CisKKyAgICBmb3IgKGNvbnN0IGF1dG8mIHN0cmlu
ZyA6IHN0cmluZ3MpCisgICAgICAgIFtyZXN1bHQgYWRkT2JqZWN0OnN0cmluZ107CisKKyAgICBy
ZXR1cm4gcmVzdWx0OworfQorCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhTb3VyY2U6KE5TU3Ry
aW5nICopc291cmNlIHdoaXRlbGlzdGVkVVJMUGF0dGVybnM6KE5TQXJyYXkgKil3aGl0ZWxpc3Rl
ZFVSTFBhdHRlcm5zIGJsYWNrbGlzdGVkVVJMUGF0dGVybnM6KE5TQXJyYXkgKilibGFja2xpc3Rl
ZFVSTFBhdHRlcm5zIGZvck1haW5GcmFtZU9ubHk6KEJPT0wpZm9yTWFpbkZyYW1lT25seQorewor
ICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQorICAgICAgICByZXR1cm4gbmlsOworCisg
ICAgLy8gRklYTUU6IEluIHRoZSBBUEkgdGVzdCwgd2UgY2FuIHVzZSBnZW5lcmF0ZVVuaXF1ZVVS
TCBiZWxvdyBiZWZvcmUgdGhlIEFQSTo6T2JqZWN0IGNvbnN0cnVjdG9yIGhhcyBkb25lIHRoaXMu
Li4gd2hlcmUgc2hvdWxkIHRoaXMgcmVhbGx5IGJlPworICAgIFdlYktpdDo6SW5pdGlhbGl6ZVdl
YktpdDIoKTsKKworICAgIEFQSTo6T2JqZWN0Ojpjb25zdHJ1Y3RJbldyYXBwZXI8QVBJOjpVc2Vy
U3R5bGVTaGVldD4oc2VsZiwgV2ViQ29yZTo6VXNlclN0eWxlU2hlZXQgeyBXVEY6OlN0cmluZyhz
b3VyY2UpLCBBUEk6OlVzZXJTdHlsZVNoZWV0OjpnZW5lcmF0ZVVuaXF1ZVVSTCgpLCB0b1dURlN0
cmluZ3Mod2hpdGVsaXN0ZWRVUkxQYXR0ZXJucyksIHRvV1RGU3RyaW5ncyhibGFja2xpc3RlZFVS
TFBhdHRlcm5zKSwgZm9yTWFpbkZyYW1lT25seSA/IFdlYkNvcmU6OkluamVjdEluVG9wRnJhbWVP
bmx5IDogV2ViQ29yZTo6SW5qZWN0SW5BbGxGcmFtZXMsIFdlYkNvcmU6OlVzZXJTdHlsZVVzZXJM
ZXZlbCB9KTsKKworICAgIHJldHVybiBzZWxmOworfQorCistIChOU1N0cmluZyAqKXNvdXJjZQor
eworICAgIHJldHVybiBfdXNlclN0eWxlU2hlZXQtPnVzZXJTdHlsZVNoZWV0KCkuc291cmNlKCk7
Cit9CisKKy0gKE5TQXJyYXkgKil3aGl0ZWxpc3RlZFVSTFBhdHRlcm5zCit7CisgICAgcmV0dXJu
IHRvTlNTdHJpbmdzKF91c2VyU3R5bGVTaGVldC0+dXNlclN0eWxlU2hlZXQoKS53aGl0ZWxpc3Qo
KSkuYXV0b3JlbGVhc2UoKTsKK30KKworLSAoTlNBcnJheSAqKWJsYWNrbGlzdGVkVVJMUGF0dGVy
bnMKK3sKKyAgICByZXR1cm4gdG9OU1N0cmluZ3MoX3VzZXJTdHlsZVNoZWV0LT51c2VyU3R5bGVT
aGVldCgpLmJsYWNrbGlzdCgpKS5hdXRvcmVsZWFzZSgpOworfQorCistIChCT09MKWlzRm9yTWFp
bkZyYW1lT25seQoreworICAgIHJldHVybiBfdXNlclN0eWxlU2hlZXQtPnVzZXJTdHlsZVNoZWV0
KCkuaW5qZWN0ZWRGcmFtZXMoKSA9PSBXZWJDb3JlOjpJbmplY3RJblRvcEZyYW1lT25seTsKK30K
KworLSAoaWQpY29weVdpdGhab25lOihOU1pvbmUgKil6b25lCit7CisgICAgcmV0dXJuIFtzZWxm
IHJldGFpbl07Cit9CisKKyNwcmFnbWEgbWFyayBXS09iamVjdCBwcm90b2NvbCBpbXBsZW1lbnRh
dGlvbgorCistIChBUEk6Ok9iamVjdCYpX2FwaU9iamVjdAoreworICAgIHJldHVybiAqX3VzZXJT
dHlsZVNoZWV0OworfQorCitAZW5kCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tVc2VyU3R5bGVTaGVldEludGVybmFsLmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1VzZXJTdHlsZVNoZWV0SW50ZXJuYWwu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4wNDRjMDgzYWQ0NzhmOGIwNjU4NTk3Yzk2OTlhYTQ3OTJhMzllZDBhCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tV
c2VyU3R5bGVTaGVldEludGVybmFsLmgKQEAgLTAsMCArMSw0OSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bXBvcnQgIl9XS1VzZXJTdHlsZVNoZWV0LmgiCisKKyNpZiBXS19BUElfRU5BQkxFRAorCisjaW1w
b3J0ICJBUElVc2VyU3R5bGVTaGVldC5oIgorI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorCitu
YW1lc3BhY2UgQVBJIHsKKworaW5saW5lIF9XS1VzZXJTdHlsZVNoZWV0ICp3cmFwcGVyKFVzZXJT
dHlsZVNoZWV0JiB1c2VyU3R5bGVTaGVldCkKK3sKKyAgICBBU1NFUlQoW3VzZXJTdHlsZVNoZWV0
LndyYXBwZXIoKSBpc0tpbmRPZkNsYXNzOltfV0tVc2VyU3R5bGVTaGVldCBjbGFzc11dKTsKKyAg
ICByZXR1cm4gKF9XS1VzZXJTdHlsZVNoZWV0ICopdXNlclN0eWxlU2hlZXQud3JhcHBlcigpOwor
fQorCit9CisKK0BpbnRlcmZhY2UgX1dLVXNlclN0eWxlU2hlZXQgKCkgPFdLT2JqZWN0PiB7CitA
cGFja2FnZQorICAgIEFQSTo6T2JqZWN0U3RvcmFnZTxBUEk6OlVzZXJTdHlsZVNoZWV0PiBfdXNl
clN0eWxlU2hlZXQ7Cit9CitAZW5kCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdDIvV2Vi
S2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDZiOTkzODUzZmYyODU1YWI2YjQ1
ZjYxZTVjMzNjZjQwMWM1MWIzOTUuLmUzYjg2MTQ0OTM0MDg0NzVjYTdjYjY0OGMzNThiNzkxNWNl
NWU3ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKQEAgLTY0MSw2ICs2NDEsMTEgQEAKIAkJMkQ4NzBEMTAxNjIzNEZGRTAwMEEzRjIw
IC8qIFBERlBsdWdpbi5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDJEODcwRDBFMTYyMkI3RjkwMDBBM0YyMCAvKiBQREZQbHVnaW4ubW0gKi87IH07CiAJ
CTJEODcxMDE2MTgyODQxNUQwMDE4RkEwMSAvKiBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b20u
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDg3MTAx
NDE4Mjg0MTVEMDAxOEZBMDEgLyogUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tLm1tICovOyB9
OwogCQkyRDg3MTAxNzE4Mjg0MTVEMDAxOEZBMDEgLyogUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3Vz
dG9tLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDg3
MTAxNTE4Mjg0MTVEMDAxOEZBMDEgLyogUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tLmggKi87
IH07CisJCTJEODc4NjFEMUJEQjU0QkYwMEQwMkFCQiAvKiBfV0tVc2VyU3R5bGVTaGVldC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQ4Nzg2MUIxQkRC
NTRCRjAwRDAyQUJCIC8qIF9XS1VzZXJTdHlsZVNoZWV0LmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMkQ4Nzg2MUUxQkRCNTRCRjAwRDAyQUJCIC8q
IF9XS1VzZXJTdHlsZVNoZWV0Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMkQ4Nzg2MUMxQkRCNTRCRjAwRDAyQUJCIC8qIF9XS1VzZXJTdHlsZVNoZWV0
Lm1tICovOyBzZXR0aW5ncyA9IHtBU1NFVF9UQUdTID0gKCk7IH07IH07CisJCTJEODc4NjIwMUJE
QjU3RjUwMEQwMkFCQiAvKiBfV0tVc2VyU3R5bGVTaGVldEludGVybmFsLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDg3ODYxRjFCREI1N0Y1MDBEMDJB
QkIgLyogX1dLVXNlclN0eWxlU2hlZXRJbnRlcm5hbC5oICovOyBzZXR0aW5ncyA9IHtBU1NFVF9U
QUdTID0gKCk7IH07IH07CisJCTJEODc4NjIzMUJEQjU4RkYwMEQwMkFCQiAvKiBBUElVc2VyU3R5
bGVTaGVldC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAyRDg3ODYyMTFCREI1OEZGMDBEMDJBQkIgLyogQVBJVXNlclN0eWxlU2hlZXQuY3BwICovOyBz
ZXR0aW5ncyA9IHtBU1NFVF9UQUdTID0gKCk7IH07IH07CisJCTJEODc4NjI0MUJEQjU4RkYwMEQw
MkFCQiAvKiBBUElVc2VyU3R5bGVTaGVldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMkQ4Nzg2MjIxQkRCNThGRjAwRDAyQUJCIC8qIEFQSVVzZXJTdHls
ZVNoZWV0LmggKi87IHNldHRpbmdzID0ge0FTU0VUX1RBR1MgPSAoKTsgfTsgfTsKIAkJMkQ4OTQ5
RjAxODIwNDRGNjAwRTg5OEFBIC8qIFBsYXRmb3JtQ0FMYXllclJlbW90ZVRpbGVkQmFja2luZy5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDg5NDlF
RTE4MjA0NEY2MDBFODk4QUEgLyogUGxhdGZvcm1DQUxheWVyUmVtb3RlVGlsZWRCYWNraW5nLmNw
cCAqLzsgfTsKIAkJMkQ4OTQ5RjExODIwNDRGNjAwRTg5OEFBIC8qIFBsYXRmb3JtQ0FMYXllclJl
bW90ZVRpbGVkQmFja2luZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMkQ4OTQ5RUYxODIwNDRGNjAwRTg5OEFBIC8qIFBsYXRmb3JtQ0FMYXllclJlbW90
ZVRpbGVkQmFja2luZy5oICovOyB9OwogCQkyRDlFQTMwRDFBOTZDQjU5MDAyRDI4MDcgLyogV0tQ
YWdlSW5qZWN0ZWRCdW5kbGVDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDJEOUVBMzBDMUE5NkNCNTkwMDJEMjgwNyAvKiBXS1BhZ2VJbmplY3Rl
ZEJ1bmRsZUNsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CkBAIC0yODA1LDYgKzI4MTAsMTEgQEAKIAkJMkQ4NzBEMEUxNjIyQjdGOTAwMEEzRjIw
IC8qIFBERlBsdWdpbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9
IFBERlBsdWdpbi5tbTsgcGF0aCA9IFBERi9QREZQbHVnaW4ubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTJEODcxMDE0MTgyODQxNUQwMDE4RkEwMSAvKiBQbGF0Zm9ybUNBTGF5ZXJS
ZW1vdGVDdXN0b20ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQ
bGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b20ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTJEODcxMDE1MTgyODQxNUQwMDE4RkEwMSAvKiBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0
b20uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGxhdGZvcm1DQUxheWVyUmVt
b3RlQ3VzdG9tLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTJEODc4NjFCMUJEQjU0
QkYwMEQwMkFCQiAvKiBfV0tVc2VyU3R5bGVTaGVldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBfV0tVc2VyU3R5bGVTaGVldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkyRDg3ODYxQzFCREI1NEJGMDBEMDJBQkIgLyogX1dLVXNlclN0eWxlU2hlZXQubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBfV0tVc2VyU3R5bGVTaGVldC5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkQ4Nzg2MUYxQkRCNTdGNTAwRDAyQUJC
IC8qIF9XS1VzZXJTdHlsZVNoZWV0SW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gX1dLVXNlclN0eWxlU2hlZXRJbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkyRDg3ODYyMTFCREI1OEZGMDBEMDJBQkIgLyogQVBJVXNlclN0eWxlU2hlZXQu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQVBJVXNlclN0eWxlU2hl
ZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyRDg3ODYyMjFCREI1OEZGMDBE
MDJBQkIgLyogQVBJVXNlclN0eWxlU2hlZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gQVBJVXNlclN0eWxlU2hlZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MkQ4OTQ5RUUxODIwNDRGNjAwRTg5OEFBIC8qIFBsYXRmb3JtQ0FMYXllclJlbW90ZVRpbGVkQmFj
a2luZy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQbGF0Zm9ybUNB
TGF5ZXJSZW1vdGVUaWxlZEJhY2tpbmcuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkyRDg5NDlFRjE4MjA0NEY2MDBFODk4QUEgLyogUGxhdGZvcm1DQUxheWVyUmVtb3RlVGlsZWRC
YWNraW5nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBsYXRmb3JtQ0FMYXll
clJlbW90ZVRpbGVkQmFja2luZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRDlF
QTMwQzFBOTZDQjU5MDAyRDI4MDcgLyogV0tQYWdlSW5qZWN0ZWRCdW5kbGVDbGllbnQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tQYWdlSW5qZWN0ZWRCdW5kbGVDbGllbnQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTUzNjEsNiArNTM3MSw5IEBACiAJCQkJ
N0M4OUQyQjgxQTZCMEYyQzAwM0E1RkRFIC8qIF9XS1VzZXJDb250ZW50RmlsdGVyLmggKi8sCiAJ
CQkJN0M4OUQyQjcxQTZCMEYyQzAwM0E1RkRFIC8qIF9XS1VzZXJDb250ZW50RmlsdGVyLm1tICov
LAogCQkJCTdDODlEMkJCMUE2QjBGNUIwMDNBNUZERSAvKiBfV0tVc2VyQ29udGVudEZpbHRlcklu
dGVybmFsLmggKi8sCisJCQkJMkQ4Nzg2MUIxQkRCNTRCRjAwRDAyQUJCIC8qIF9XS1VzZXJTdHls
ZVNoZWV0LmggKi8sCisJCQkJMkQ4Nzg2MUMxQkRCNTRCRjAwRDAyQUJCIC8qIF9XS1VzZXJTdHls
ZVNoZWV0Lm1tICovLAorCQkJCTJEODc4NjFGMUJEQjU3RjUwMEQwMkFCQiAvKiBfV0tVc2VyU3R5
bGVTaGVldEludGVybmFsLmggKi8sCiAJCQkJMUE4MUIzN0YxOEJENjZBRDAwMDdGREFDIC8qIF9X
S1Zpc2l0ZWRMaW5rU3RvcmUuaCAqLywKIAkJCQkxQTgxQjM3RTE4QkQ2NkFEMDAwN0ZEQUMgLyog
X1dLVmlzaXRlZExpbmtTdG9yZS5tbSAqLywKIAkJCQkxQTgxQjM4NDE4QkQ2NzNBMDAwN0ZEQUMg
LyogX1dLVmlzaXRlZExpbmtTdG9yZUludGVybmFsLmggKi8sCkBAIC02MzAyLDYgKzYzMTUsOCBA
QAogCQkJCTdDM0EwNkE2MUFBQjkwM0UwMDlENzRCQSAvKiBBUElVc2VyQ29udGVudEV4dGVuc2lv
blN0b3JlLmggKi8sCiAJCQkJN0M4OUQyQTUxQTY3ODlFQTAwM0E1RkRFIC8qIEFQSVVzZXJTY3Jp
cHQuY3BwICovLAogCQkJCTdDODlEMjkyMUE2NzEyMkYwMDNBNUZERSAvKiBBUElVc2VyU2NyaXB0
LmggKi8sCisJCQkJMkQ4Nzg2MjExQkRCNThGRjAwRDAyQUJCIC8qIEFQSVVzZXJTdHlsZVNoZWV0
LmNwcCAqLywKKwkJCQkyRDg3ODYyMjFCREI1OEZGMDBEMDJBQkIgLyogQVBJVXNlclN0eWxlU2hl
ZXQuaCAqLywKIAkJCQkxQTQ4MzJDNTFBOUJDMTNDMDA4QjRERkUgLyogQVBJV2Vic2l0ZURhdGFS
ZWNvcmQuY3BwICovLAogCQkJCTFBNDgzMkM2MUE5QkMxM0MwMDhCNERGRSAvKiBBUElXZWJzaXRl
RGF0YVJlY29yZC5oICovLAogCQkJCTFBMzYzNUE3MUEzMTQ0QTMwMEVENjE5NyAvKiBBUElXZWJz
aXRlRGF0YVN0b3JlLmNwcCAqLywKQEAgLTgwNzEsNiArODA4Niw3IEBACiAJCQkJOTNBODhCNDYx
QkM4ODI5MzAwQUJBNUMyIC8qIEFQSUhpdFRlc3RSZXN1bHQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTI5RDU1REYyMTYxQkY5RjEwMDMxQTJFMyAvKiBXZWJQYWdlR3JvdXBQcm94eU1lc3NhZ2VzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkyRDlFQTMwRjFBOTZDQkZGMDAyRDI4MDcgLyogV2ViUGFnZUlu
amVjdGVkQnVuZGxlQ2xpZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQkyRDg3ODYyMDFCREI1N0Y1
MDBEMDJBQkIgLyogX1dLVXNlclN0eWxlU2hlZXRJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQzBDRTcyQTExMjQ3RTcxRDAwQkMwRUM0IC8qIFdlYlBhZ2VNZXNzYWdlcy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMkQ1QzlEMDYxOUM4MUQ4RjAwQjNDNUMxIC8qIFdlYlBhZ2VPdmVybGF5Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQlCQzAzMkREMTEwRjQzODlGMDA1OEMxNUEgLyogV2ViUGFnZVBy
b3h5LmggaW4gSGVhZGVycyAqLywKQEAgLTgxMDcsNiArODEyMyw3IEBACiAJCQkJMzc2MDg4MUYx
NTA0MTNFOTAwRkM4MkM3IC8qIFdlYlJlbmRlck9iamVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NTEwQUZGQkExNjU0MjA0ODAwMUJBMDVFIC8qIFdlYlJlc291cmNlTG9hZGVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk1MUYwNjBFMDE2NTQzMTdGMDBGMzI4MUIgLyogV2ViUmVzb3VyY2VMb2FkZXJN
ZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMkQ4Nzg2MUQxQkRCNTRCRjAwRDAyQUJCIC8q
IF9XS1VzZXJTdHlsZVNoZWV0LmggaW4gSGVhZGVycyAqLywKIAkJCQk3QzM2MUQ3MzE5MjdGQTM2
MDAzNkE1OUQgLyogV2ViU2NyaXB0TWVzc2FnZUhhbmRsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUQzQjk0ODQ5MTFGRjRCNjUwMDAzMkIzOSAvKiBXZWJTZWFyY2hQb3B1cE1lbnUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTFBNDgzMkQ3MUE5Q0RGOTYwMDhCNERGRSAvKiBXZWJzaXRlRGF0YS5oIGlu
IEhlYWRlcnMgKi8sCkBAIC04MzIxLDYgKzgzMzgsNyBAQAogCQkJCTFBQjhBMUVDMTg0MDA4MDkw
MEU5QUU2OSAvKiBXS1BhZ2VMb2FkZXJDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzRTZB
NEVFMUJDNUREMzkwMEY4QTBFNyAvKiBfV0tIaXRUZXN0UmVzdWx0LmggaW4gSGVhZGVycyAqLywK
IAkJCQlCQzJEMDIxOTEyQUM0MjZDMDBFNzMyQTMgLyogV0tQYWdlTG9hZFR5cGVzLmggaW4gSGVh
ZGVycyAqLywKKwkJCQkyRDg3ODYyNDFCREI1OEZGMDBEMDJBQkIgLyogQVBJVXNlclN0eWxlU2hl
ZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzQkRFQjAxMTcxREQ3QUYwMEJGRUUxQiAvKiBXS1Bh
Z2VMb2FkVHlwZXNQcml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDczMDM3OTFBN0MyQjc1
MDBGOEY0ODcgLyogV0tQYWdlTmF2aWdhdGlvbkNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MUFCOEExRUUxODQwMEFDQjAwRTlBRTY5IC8qIFdLUGFnZVBvbGljeUNsaWVudC5oIGluIEhlYWRl
cnMgKi8sCkBAIC05OTk2LDYgKzEwMDE0LDcgQEAKIAkJCQkyOTIzMkRGODE4QjJBOUFFMDBEMDU5
NkYgLyogV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdElPUy5tbSBpbiBTb3VyY2VzICovLAog
CQkJCTI5MjMyREY5MThCMkFCM0EwMEQwNTk2RiAvKiBXS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2Jq
ZWN0TWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZDQjRFNDkxOEJCRTA0NDAwMEZDRkM5IC8q
IFdLQWN0aW9uU2hlZXQubW0gaW4gU291cmNlcyAqLywKKwkJCQkyRDg3ODYyMzFCREI1OEZGMDBE
MDJBQkIgLyogQVBJVXNlclN0eWxlU2hlZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZDQjRF
NEIxOEJCRTA0NDAwMEZDRkM5IC8qIFdLQWN0aW9uU2hlZXRBc3Npc3RhbnQubW0gaW4gU291cmNl
cyAqLywKIAkJCQlDNUZBMUVENDE4RTEwNjIyMDBCM0Y0MDIgLyogV0tBaXJQbGF5Um91dGVQaWNr
ZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQk1MTJFMzRFNDEzMEI0RDA1MDBBQkQxOUEgLyogV0tB
cHBsaWNhdGlvbkNhY2hlTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLywKQEAgLTEwMDgwLDYgKzEw
MDk5LDcgQEAKIAkJCQlCQ0NGNkFDMjEyQzkxRjM0MDA4RjlDMzUgLyogV0tJbWFnZS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlCQ0NGNkFDOTEyQzkxRjU5MDA4RjlDMzUgLyogV0tJbWFnZUNHLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTkzM0RGODMwMUIzQkMwQjQwMEFFQTlFMyAvKiBXS0ltYWdl
UHJldmlld1ZpZXdDb250cm9sbGVyLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJMkQ4Nzg2MUUxQkRC
NTRCRjAwRDAyQUJCIC8qIF9XS1VzZXJTdHlsZVNoZWV0Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
OTMyMUQ1ODgxQTM4RUU3NDAwODA1MkJFIC8qIFdLSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlci5t
bSBpbiBTb3VyY2VzICovLAogCQkJCTFDOEUyOTNBMTI3NjFFNUIwMEJDN0JEMCAvKiBXS0luc3Bl
Y3Rvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjNDNzI1QzE5NkY2MDUyMDBBRUREMEMgLyog
V0tJbnNwZWN0b3JIaWdobGlnaHRWaWV3Lm1tIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9U
b29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMTkwNzJiYTBkZjg3ZDRlYWVl
N2ExMzQ2MjQzOGE4OTllMjI2YWIyYi4uNGJhNzkyYmQxZGE5OGIxZmIyNTNmNmU0NTA4YWRhMzRl
YzNiNzI5OCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE0IEBACisyMDE1LTEwLTI0ICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0
b25AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBhIHdheSB0byBhZGQgdXNlciBzdHlsZSBzaGVl
dHMgdG8gV0tVc2VyQ29udGVudENvbnRyb2xsZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MDUzMQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjMx
OTE2OTE+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9Vc2VyQ29udGVudENvbnRyb2xsZXIu
bW06CisgICAgICAgIChURVNUKToKKwogMjAxNS0xMC0yMyAgTWljaGFlbCBTYWJvZmYgIDxtc2Fi
b2ZmQGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OIChyMTc5MzU3LXIxNzkzNTkpOiBX
ZWJDb250ZW50IENyYXNoIHVzaW5nIEFPTCBNYWlsIEAgY29tLmFwcGxlLkphdmFzY3JpcHRDb3Jl
IEpTQzo6bGlua1BvbHltb3JwaGljQ2FsbChKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6Q2FsbExpbmtJ
bmZvJiwgSlNDOjpDYWxsVmFyaWFudCwgSlNDOjpSZWdpc3RlclByZXNlcnZhdGlvbk1vZGUpICsg
MTU4NApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2Ev
VXNlckNvbnRlbnRDb250cm9sbGVyLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXQyQ29jb2EvVXNlckNvbnRlbnRDb250cm9sbGVyLm1tCmluZGV4IDUzMzAwMzU1MmQyNjE1MGI3
OWZkY2I4NDUwZmYzZDg3NWRlMzFlNzcuLjI2ODM1MzhjMGRkYzUyNTc1OWU2OTlmNzg1ZjQ0NTNm
Y2I4M2Q5OTQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNv
Y29hL1VzZXJDb250ZW50Q29udHJvbGxlci5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdDJDb2NvYS9Vc2VyQ29udGVudENvbnRyb2xsZXIubW0KQEAgLTI4LDYgKzI4LDgg
QEAKICNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJUZXN0LmgiCiAjaW1w
b3J0IDxXZWJLaXQvV2ViS2l0Lmg+CisjaW1wb3J0IDxXZWJLaXQvV0tVc2VyQ29udGVudENvbnRy
b2xsZXJQcml2YXRlLmg+CisjaW1wb3J0IDxXZWJLaXQvX1dLVXNlclN0eWxlU2hlZXQuaD4KICNp
bXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KIAogI2lmIFdLX0FQSV9FTkFCTEVECkBAIC0yMTIsNCAr
MjE0LDE1MyBAQCBURVNUKFdLVXNlckNvbnRlbnRDb250cm9sbGVyLCBTY3JpcHRNZXNzYWdlSGFu
ZGxlcldpdGhOYXZpZ2F0aW9uKQogfQogI2VuZGlmCiAKK3N0YXRpYyBOU1N0cmluZyAqc3R5bGVT
aGVldFNvdXJjZSA9IEAiYm9keSB7IGJhY2tncm91bmQtY29sb3I6IGdyZWVuICFpbXBvcnRhbnQ7
IH0iOworc3RhdGljIE5TU3RyaW5nICpiYWNrZ3JvdW5kQ29sb3JTY3JpcHQgPSBAIndpbmRvdy5n
ZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmJvZHksIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2Jh
Y2tncm91bmQtY29sb3InKSI7CitzdGF0aWMgTlNTdHJpbmcgKmZyYW1lQmFja2dyb3VuZENvbG9y
U2NyaXB0ID0gQCJ3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgnaWZyYW1lJylbMF0uY29udGVudERvY3VtZW50LmJvZHksIG51bGwpLmdldFByb3Bl
cnR5VmFsdWUoJ2JhY2tncm91bmQtY29sb3InKSI7CitzdGF0aWMgY29uc3QgY2hhciogZ3JlZW5J
blJHQiA9ICJyZ2IoMCwgMTI4LCAwKSI7CitzdGF0aWMgY29uc3QgY2hhciogcmVkSW5SR0IgPSAi
cmdiKDI1NSwgMCwgMCkiOworc3RhdGljIGNvbnN0IGNoYXIqIHdoaXRlSW5SR0IgPSAicmdiYSgw
LCAwLCAwLCAwKSI7CisKK3N0YXRpYyB2b2lkIGV4cGVjdFNjcmlwdEV2YWx1YXRlc1RvQ29sb3Io
V0tXZWJWaWV3ICp3ZWJWaWV3LCBOU1N0cmluZyAqc2NyaXB0LCBjb25zdCBjaGFyKiBjb2xvcikK
K3sKKyAgICBzdGF0aWMgYm9vbCBkaWRDaGVja0JhY2tncm91bmRDb2xvcjsKKworICAgIFt3ZWJW
aWV3IGV2YWx1YXRlSmF2YVNjcmlwdDpzY3JpcHQgY29tcGxldGlvbkhhbmRsZXI6XiAoaWQgdmFs
dWUsIE5TRXJyb3IgKiBlcnJvcikgeworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoY29sb3IsIHZh
bHVlKTsKKyAgICAgICAgZGlkQ2hlY2tCYWNrZ3JvdW5kQ29sb3IgPSB0cnVlOworICAgIH1dOwor
CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkaWRDaGVja0JhY2tncm91bmRDb2xvcik7
CisgICAgZGlkQ2hlY2tCYWNrZ3JvdW5kQ29sb3IgPSBmYWxzZTsKK30KKworVEVTVChXS1VzZXJD
b250ZW50Q29udHJvbGxlciwgQWRkVXNlclN0eWxlU2hlZXRCZWZvcmVDcmVhdGluZ1ZpZXcpCit7
CisgICAgUmV0YWluUHRyPFdLV2ViVmlld0NvbmZpZ3VyYXRpb24+IGNvbmZpZ3VyYXRpb24gPSBh
ZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworCisgICAgUmV0
YWluUHRyPF9XS1VzZXJTdHlsZVNoZWV0PiBzdHlsZVNoZWV0ID0gYWRvcHROUyhbW19XS1VzZXJT
dHlsZVNoZWV0IGFsbG9jXSBpbml0V2l0aFNvdXJjZTpzdHlsZVNoZWV0U291cmNlIHdoaXRlbGlz
dGVkVVJMUGF0dGVybnM6bmlsIGJsYWNrbGlzdGVkVVJMUGF0dGVybnM6bmlsIGZvck1haW5GcmFt
ZU9ubHk6WUVTXSk7CisgICAgW1tjb25maWd1cmF0aW9uIHVzZXJDb250ZW50Q29udHJvbGxlcl0g
X2FkZFVzZXJTdHlsZVNoZWV0OnN0eWxlU2hlZXQuZ2V0KCldOworCisgICAgUmV0YWluUHRyPFdL
V2ViVmlldz4gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJh
bWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9u
LmdldCgpXSk7CisKKyAgICBSZXRhaW5QdHI8U2ltcGxlTmF2aWdhdGlvbkRlbGVnYXRlPiBkZWxl
Z2F0ZSA9IGFkb3B0TlMoW1tTaW1wbGVOYXZpZ2F0aW9uRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsK
KyAgICBbd2ViVmlldyBzZXROYXZpZ2F0aW9uRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOworCisg
ICAgW3dlYlZpZXcgbG9hZEhUTUxTdHJpbmc6QCI8Ym9keSBzdHlsZT0nYmFja2dyb3VuZC1jb2xv
cjogcmVkOyc+PC9ib2R5PiIgYmFzZVVSTDpuaWxdOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6
OnJ1bigmaXNEb25lV2l0aE5hdmlnYXRpb24pOworICAgIGlzRG9uZVdpdGhOYXZpZ2F0aW9uID0g
ZmFsc2U7CisKKyAgICBleHBlY3RTY3JpcHRFdmFsdWF0ZXNUb0NvbG9yKHdlYlZpZXcuZ2V0KCks
IGJhY2tncm91bmRDb2xvclNjcmlwdCwgZ3JlZW5JblJHQik7Cit9CisKK1RFU1QoV0tVc2VyQ29u
dGVudENvbnRyb2xsZXIsIEFkZFVzZXJTdHlsZVNoZWV0QWZ0ZXJDcmVhdGluZ1ZpZXcpCit7Cisg
ICAgUmV0YWluUHRyPFdLV2ViVmlldz4gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxs
b2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCldKTsKKworICAgIFJl
dGFpblB0cjxTaW1wbGVOYXZpZ2F0aW9uRGVsZWdhdGU+IGRlbGVnYXRlID0gYWRvcHROUyhbW1Np
bXBsZU5hdmlnYXRpb25EZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOworICAgIFt3ZWJWaWV3IHNldE5h
dmlnYXRpb25EZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CisKKyAgICBbd2ViVmlldyBsb2FkSFRN
TFN0cmluZzpAIjxib2R5IHN0eWxlPSdiYWNrZ3JvdW5kLWNvbG9yOiByZWQ7Jz48L2JvZHk+IiBi
YXNlVVJMOm5pbF07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmVXaXRoTmF2
aWdhdGlvbik7CisgICAgaXNEb25lV2l0aE5hdmlnYXRpb24gPSBmYWxzZTsKKworICAgIGV4cGVj
dFNjcmlwdEV2YWx1YXRlc1RvQ29sb3Iod2ViVmlldy5nZXQoKSwgYmFja2dyb3VuZENvbG9yU2Ny
aXB0LCByZWRJblJHQik7CisKKyAgICBSZXRhaW5QdHI8X1dLVXNlclN0eWxlU2hlZXQ+IHN0eWxl
U2hlZXQgPSBhZG9wdE5TKFtbX1dLVXNlclN0eWxlU2hlZXQgYWxsb2NdIGluaXRXaXRoU291cmNl
OnN0eWxlU2hlZXRTb3VyY2Ugd2hpdGVsaXN0ZWRVUkxQYXR0ZXJuczpuaWwgYmxhY2tsaXN0ZWRV
UkxQYXR0ZXJuczpuaWwgZm9yTWFpbkZyYW1lT25seTpZRVNdKTsKKyAgICBbW3dlYlZpZXcgY29u
ZmlndXJhdGlvbl0udXNlckNvbnRlbnRDb250cm9sbGVyIF9hZGRVc2VyU3R5bGVTaGVldDpzdHls
ZVNoZWV0LmdldCgpXTsKKworICAgIGV4cGVjdFNjcmlwdEV2YWx1YXRlc1RvQ29sb3Iod2ViVmll
dy5nZXQoKSwgYmFja2dyb3VuZENvbG9yU2NyaXB0LCBncmVlbkluUkdCKTsKK30KKworVEVTVChX
S1VzZXJDb250ZW50Q29udHJvbGxlciwgVXNlclN0eWxlU2hlZXRXaGl0ZUFuZEJsYWNrTGlzdCkK
K3sKKyAgICBSZXRhaW5QdHI8V0tXZWJWaWV3Q29uZmlndXJhdGlvbj4gY29uZmlndXJhdGlvbiA9
IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisKKyAgICBS
ZXRhaW5QdHI8X1dLVXNlclN0eWxlU2hlZXQ+IHN0eWxlU2hlZXQgPSBhZG9wdE5TKFtbX1dLVXNl
clN0eWxlU2hlZXQgYWxsb2NdIGluaXRXaXRoU291cmNlOnN0eWxlU2hlZXRTb3VyY2Ugd2hpdGVs
aXN0ZWRVUkxQYXR0ZXJuczpAWyBAImh0dHA6Ly9oYXBweS5leGFtcGxlLmNvbS8iLCBAImh0dHA6
Ly8qLmV4YW1wbGUyLmNvbS8iIF0gYmxhY2tsaXN0ZWRVUkxQYXR0ZXJuczpAWyBAImh0dHA6Ly9z
YWQuZXhhbXBsZS5jb20vIiBdIGZvck1haW5GcmFtZU9ubHk6WUVTXSk7CisgICAgW1tjb25maWd1
cmF0aW9uIHVzZXJDb250ZW50Q29udHJvbGxlcl0gX2FkZFVzZXJTdHlsZVNoZWV0OnN0eWxlU2hl
ZXQuZ2V0KCldOworCisgICAgUmV0YWluUHRyPFdLV2ViVmlldz4gd2ViVmlldyA9IGFkb3B0TlMo
W1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYw
MCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CisKKyAgICBSZXRhaW5QdHI8
U2ltcGxlTmF2aWdhdGlvbkRlbGVnYXRlPiBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tTaW1wbGVOYXZp
Z2F0aW9uRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKKyAgICBbd2ViVmlldyBzZXROYXZpZ2F0aW9u
RGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOworCisgICAgLy8gVHJ5IHNvbWV0aGluZyBvbiB0aGUg
d2hpdGVsaXN0OgorCisgICAgW3dlYlZpZXcgbG9hZEhUTUxTdHJpbmc6QCI8Ym9keSBzdHlsZT0n
YmFja2dyb3VuZC1jb2xvcjogcmVkOyc+PC9ib2R5PiIgYmFzZVVSTDpbTlNVUkwgVVJMV2l0aFN0
cmluZzpAImh0dHA6Ly9oYXBweS5leGFtcGxlLmNvbS8iXV07CisgICAgVGVzdFdlYktpdEFQSTo6
VXRpbDo6cnVuKCZpc0RvbmVXaXRoTmF2aWdhdGlvbik7CisgICAgaXNEb25lV2l0aE5hdmlnYXRp
b24gPSBmYWxzZTsKKworICAgIGV4cGVjdFNjcmlwdEV2YWx1YXRlc1RvQ29sb3Iod2ViVmlldy5n
ZXQoKSwgYmFja2dyb3VuZENvbG9yU2NyaXB0LCBncmVlbkluUkdCKTsKKworICAgIC8vIFRyeSBz
b21ldGhpbmcgb24gdGhlIGJsYWNrbGlzdDoKKworICAgIFt3ZWJWaWV3IGxvYWRIVE1MU3RyaW5n
OkAiPGJvZHkgc3R5bGU9J2JhY2tncm91bmQtY29sb3I6IHJlZDsnPjwvYm9keT4iIGJhc2VVUkw6
W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwOi8vc2FkLmV4YW1wbGUuY29tLyJdXTsKKyAgICBU
ZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZVdpdGhOYXZpZ2F0aW9uKTsKKyAgICBpc0Rv
bmVXaXRoTmF2aWdhdGlvbiA9IGZhbHNlOworCisgICAgZXhwZWN0U2NyaXB0RXZhbHVhdGVzVG9D
b2xvcih3ZWJWaWV3LmdldCgpLCBiYWNrZ3JvdW5kQ29sb3JTY3JpcHQsIHJlZEluUkdCKTsKKwor
ICAgIC8vIFRyeSBzb21ldGhpbmcgb24gbmVpdGhlciBsaXN0OgorCisgICAgW3dlYlZpZXcgbG9h
ZEhUTUxTdHJpbmc6QCI8Ym9keSBzdHlsZT0nYmFja2dyb3VuZC1jb2xvcjogcmVkOyc+PC9ib2R5
PiIgYmFzZVVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHA6Ly9tZWRpb2NyZS5leGFtcGxl
LmNvbS8iXV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmVXaXRoTmF2aWdh
dGlvbik7CisgICAgaXNEb25lV2l0aE5hdmlnYXRpb24gPSBmYWxzZTsKKworICAgIGV4cGVjdFNj
cmlwdEV2YWx1YXRlc1RvQ29sb3Iod2ViVmlldy5nZXQoKSwgYmFja2dyb3VuZENvbG9yU2NyaXB0
LCByZWRJblJHQik7CisKKyAgICAvLyBUcnkgc29tZXRoaW5nIHRoYXQgbWF0Y2hlcyB0aGUgZ2xv
YmJpbmcgcGF0dGVybiBpbiB0aGUgd2hpdGVsaXN0OgorCisgICAgW3dlYlZpZXcgbG9hZEhUTUxT
dHJpbmc6QCI8Ym9keSBzdHlsZT0nYmFja2dyb3VuZC1jb2xvcjogcmVkOyc+PC9ib2R5PiIgYmFz
ZVVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHA6Ly9hbnl0aGluZy5leGFtcGxlMi5jb20v
Il1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lV2l0aE5hdmlnYXRpb24p
OworICAgIGlzRG9uZVdpdGhOYXZpZ2F0aW9uID0gZmFsc2U7CisKKyAgICBleHBlY3RTY3JpcHRF
dmFsdWF0ZXNUb0NvbG9yKHdlYlZpZXcuZ2V0KCksIGJhY2tncm91bmRDb2xvclNjcmlwdCwgZ3Jl
ZW5JblJHQik7Cit9CisKK1RFU1QoV0tVc2VyQ29udGVudENvbnRyb2xsZXIsIFVzZXJTdHlsZVNo
ZWV0QWZmZWN0aW5nT25seU1haW5GcmFtZSkKK3sKKyAgICBSZXRhaW5QdHI8V0tXZWJWaWV3Q29u
ZmlndXJhdGlvbj4gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0
aW9uIGFsbG9jXSBpbml0XSk7CisKKyAgICBSZXRhaW5QdHI8X1dLVXNlclN0eWxlU2hlZXQ+IHN0
eWxlU2hlZXQgPSBhZG9wdE5TKFtbX1dLVXNlclN0eWxlU2hlZXQgYWxsb2NdIGluaXRXaXRoU291
cmNlOnN0eWxlU2hlZXRTb3VyY2Ugd2hpdGVsaXN0ZWRVUkxQYXR0ZXJuczpuaWwgYmxhY2tsaXN0
ZWRVUkxQYXR0ZXJuczpuaWwgZm9yTWFpbkZyYW1lT25seTpZRVNdKTsKKyAgICBbW2NvbmZpZ3Vy
YXRpb24gdXNlckNvbnRlbnRDb250cm9sbGVyXSBfYWRkVXNlclN0eWxlU2hlZXQ6c3R5bGVTaGVl
dC5nZXQoKV07CisKKyAgICBSZXRhaW5QdHI8V0tXZWJWaWV3PiB3ZWJWaWV3ID0gYWRvcHROUyhb
W1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAw
KSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKworICAgIFJldGFpblB0cjxT
aW1wbGVOYXZpZ2F0aW9uRGVsZWdhdGU+IGRlbGVnYXRlID0gYWRvcHROUyhbW1NpbXBsZU5hdmln
YXRpb25EZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOworICAgIFt3ZWJWaWV3IHNldE5hdmlnYXRpb25E
ZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CisKKyAgICBbd2ViVmlldyBsb2FkSFRNTFN0cmluZzpA
Ijxib2R5IHN0eWxlPSdiYWNrZ3JvdW5kLWNvbG9yOiByZWQ7Jz48aWZyYW1lPjwvaWZyYW1lPjwv
Ym9keT4iIGJhc2VVUkw6bmlsXTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9u
ZVdpdGhOYXZpZ2F0aW9uKTsKKyAgICBpc0RvbmVXaXRoTmF2aWdhdGlvbiA9IGZhbHNlOworCisg
ICAgLy8gVGhlIG1haW4gZnJhbWUgc2hvdWxkIGJlIGFmZmVjdGVkLgorICAgIGV4cGVjdFNjcmlw
dEV2YWx1YXRlc1RvQ29sb3Iod2ViVmlldy5nZXQoKSwgYmFja2dyb3VuZENvbG9yU2NyaXB0LCBn
cmVlbkluUkdCKTsKKworICAgIC8vIFRoZSBzdWJmcmFtZSBzaG91bGRuJ3QgYmUgYWZmZWN0ZWQu
CisgICAgZXhwZWN0U2NyaXB0RXZhbHVhdGVzVG9Db2xvcih3ZWJWaWV3LmdldCgpLCBmcmFtZUJh
Y2tncm91bmRDb2xvclNjcmlwdCwgd2hpdGVJblJHQik7Cit9CisKK1RFU1QoV0tVc2VyQ29udGVu
dENvbnRyb2xsZXIsIFVzZXJTdHlsZVNoZWV0QWZmZWN0aW5nQWxsRnJhbWVzKQoreworICAgIFJl
dGFpblB0cjxXS1dlYlZpZXdDb25maWd1cmF0aW9uPiBjb25maWd1cmF0aW9uID0gYWRvcHROUyhb
W1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKworICAgIFJldGFpblB0cjxf
V0tVc2VyU3R5bGVTaGVldD4gc3R5bGVTaGVldCA9IGFkb3B0TlMoW1tfV0tVc2VyU3R5bGVTaGVl
dCBhbGxvY10gaW5pdFdpdGhTb3VyY2U6c3R5bGVTaGVldFNvdXJjZSB3aGl0ZWxpc3RlZFVSTFBh
dHRlcm5zOm5pbCBibGFja2xpc3RlZFVSTFBhdHRlcm5zOm5pbCBmb3JNYWluRnJhbWVPbmx5Ok5P
XSk7CisgICAgW1tjb25maWd1cmF0aW9uIHVzZXJDb250ZW50Q29udHJvbGxlcl0gX2FkZFVzZXJT
dHlsZVNoZWV0OnN0eWxlU2hlZXQuZ2V0KCldOworCisgICAgUmV0YWluUHRyPFdLV2ViVmlldz4g
d2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtl
UmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7
CisKKyAgICBSZXRhaW5QdHI8U2ltcGxlTmF2aWdhdGlvbkRlbGVnYXRlPiBkZWxlZ2F0ZSA9IGFk
b3B0TlMoW1tTaW1wbGVOYXZpZ2F0aW9uRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKKyAgICBbd2Vi
VmlldyBzZXROYXZpZ2F0aW9uRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOworCisgICAgW3dlYlZp
ZXcgbG9hZEhUTUxTdHJpbmc6QCI8Ym9keSBzdHlsZT0nYmFja2dyb3VuZC1jb2xvcjogcmVkOyc+
PGlmcmFtZT48L2lmcmFtZT48L2JvZHk+IiBiYXNlVVJMOm5pbF07CisgICAgVGVzdFdlYktpdEFQ
STo6VXRpbDo6cnVuKCZpc0RvbmVXaXRoTmF2aWdhdGlvbik7CisgICAgaXNEb25lV2l0aE5hdmln
YXRpb24gPSBmYWxzZTsKKworICAgIC8vIFRoZSBtYWluIGZyYW1lIHNob3VsZCBiZSBhZmZlY3Rl
ZC4KKyAgICBleHBlY3RTY3JpcHRFdmFsdWF0ZXNUb0NvbG9yKHdlYlZpZXcuZ2V0KCksIGJhY2tn
cm91bmRDb2xvclNjcmlwdCwgZ3JlZW5JblJHQik7CisKKyAgICAvLyBUaGUgc3ViZnJhbWUgc2hv
dWxkIGFsc28gYmUgYWZmZWN0ZWQuCisgICAgZXhwZWN0U2NyaXB0RXZhbHVhdGVzVG9Db2xvcih3
ZWJWaWV3LmdldCgpLCBmcmFtZUJhY2tncm91bmRDb2xvclNjcmlwdCwgZ3JlZW5JblJHQik7Cit9
CisKICNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>264001</attachid>
            <date>2015-10-24 21:53:08 -0700</date>
            <delta_ts>2015-10-24 22:46:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-150531-20151024215221.patch</filename>
            <type>text/plain</type>
            <size>37368</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkxNTMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNmYwYjQ5NWJkZDkxZjdl
MTNmZWE0M2Y1Njc4MmExNTFjN2U5OGE5Yi4uNTVlMTE3ZDhjYzUzOTEzYzFmNDk2ODJjMGJkZTky
OWVlNjI3YmU1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDE1LTEwLTI0ICBUaW0g
SG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBhIHdheSB0
byBhZGQgdXNlciBzdHlsZSBzaGVldHMgdG8gV0tVc2VyQ29udGVudENvbnRyb2xsZXIKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MDUzMQorICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vMjMxOTE2OTE+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBTaGFyZWQvQVBJL0FQSU9iamVjdC5oOgorICAgICAgICAq
IFNoYXJlZC9Db2NvYS9BUElPYmplY3QubW06CisgICAgICAgIChBUEk6Ok9iamVjdDo6bmV3T2Jq
ZWN0KToKKyAgICAgICAgQm9pbGVycGxhdGUgZm9yIGEgbmV3IEFQSTo6VXNlclN0eWxlU2hlZXQu
CisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVVzZXJTdHlsZVNoZWV0LmNwcDogQWRkZWQu
CisgICAgICAgIChBUEk6OmdlbmVyYXRlSWRlbnRpZmllcik6CisgICAgICAgIChBUEk6OlVzZXJT
dHlsZVNoZWV0OjpnZW5lcmF0ZVVuaXF1ZVVSTCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9B
UElVc2VyU3R5bGVTaGVldC5oOiBBZGRlZC4KKyAgICAgICAgQWRkZWQgQVBJOjpVc2VyU3R5bGVT
aGVldCwgYm9ycm93aW5nIFVSTCBnZW5lcmF0aW9uIGNvZGUgZnJvbSBBUEk6OlVzZXJTY3JpcHQu
CisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlckNvbnRlbnRDb250cm9sbGVy
Lm1tOgorICAgICAgICAoLVtXS1VzZXJDb250ZW50Q29udHJvbGxlciBfYWRkVXNlclN0eWxlU2hl
ZXQ6XSk6CisgICAgICAgICgtW1dLVXNlckNvbnRlbnRDb250cm9sbGVyIF9yZW1vdmVBbGxVc2Vy
U3R5bGVTaGVldHNdKToKKyAgICAgICAgRm9yd2FyZCBhZGQgYW5kIHJlbW92ZS1hbGwgdG8gV2Vi
VXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLVXNlckNvbnRlbnRDb250cm9sbGVyUHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQ29jb2EvX1dLVXNlclN0eWxlU2hlZXQuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9Db2NvYS9fV0tVc2VyU3R5bGVTaGVldC5tbTogQWRkZWQuCisgICAgICAgICh0b1dU
RlN0cmluZ3MpOgorICAgICAgICAoLVtfV0tVc2VyU3R5bGVTaGVldCBpbml0V2l0aFNvdXJjZTp3
aGl0ZWxpc3RlZFVSTFBhdHRlcm5zOmJsYWNrbGlzdGVkVVJMUGF0dGVybnM6Zm9yTWFpbkZyYW1l
T25seTpdKToKKyAgICAgICAgKC1bX1dLVXNlclN0eWxlU2hlZXQgc291cmNlXSk6CisgICAgICAg
ICgtW19XS1VzZXJTdHlsZVNoZWV0IGlzRm9yTWFpbkZyYW1lT25seV0pOgorICAgICAgICAoLVtf
V0tVc2VyU3R5bGVTaGVldCBjb3B5V2l0aFpvbmU6XSk6CisgICAgICAgICgtW19XS1VzZXJTdHls
ZVNoZWV0IF9hcGlPYmplY3RdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS1Vz
ZXJTdHlsZVNoZWV0SW50ZXJuYWwuaDogQWRkZWQuCisgICAgICAgIChBUEk6OndyYXBwZXIpOgor
ICAgICAgICAqIFdlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgQWRk
IHRoZSBuZXcgbW9kZXJuIEFQSSBvYmplY3QgKGFzIFNQSSBmb3Igbm93KS4KKwogMjAxNS0xMC0y
MyAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAg
IEZpeCBDTWFrZSBjb21waWxlIGVycm9yIGFuZCBhZGQgY29ycmVjdCBudWxsIGNoZWNrCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL0FQSU9iamVjdC5oIGIvU291cmNlL1dl
YktpdDIvU2hhcmVkL0FQSS9BUElPYmplY3QuaAppbmRleCBhNTEyM2M2NjcwNmEzODlmNzQ5ZDQ4
MDY1MzVmMDgyNDI5NGMzMjNhLi4xMzA3MmVhMTc5MDQwY2VkM2Q3ZDhhZTI4NDY5MDNmNzVlOGRj
MzUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL0FQSU9iamVjdC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvQVBJT2JqZWN0LmgKQEAgLTgyLDYgKzgyLDcg
QEAgcHVibGljOgogICAgICAgICBVUkxSZXNwb25zZSwKICAgICAgICAgVXNlckNvbnRlbnRVUkxQ
YXR0ZXJuLAogICAgICAgICBVc2VyU2NyaXB0LAorICAgICAgICBVc2VyU3R5bGVTaGVldCwKICAg
ICAgICAgV2ViQXJjaGl2ZSwKICAgICAgICAgV2ViQXJjaGl2ZVJlc291cmNlLAogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29jb2EvQVBJT2JqZWN0Lm1tIGIvU291cmNlL1dl
YktpdDIvU2hhcmVkL0NvY29hL0FQSU9iamVjdC5tbQppbmRleCBjYjI0ZDE1ODk3MDJiNzMzNWUy
NjI5Mzg2ODg0OGY3ZTE2NDY0Nzg3Li42Yzk5NzI5NDRiOTI4NTY4MGE4MDhiZWY4MmRkNGRhM2U3
MDhiNGFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29jb2EvQVBJT2JqZWN0
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db2NvYS9BUElPYmplY3QubW0KQEAgLTY3
LDYgKzY3LDcgQEAKICNpbXBvcnQgIl9XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbkludGVybmFs
LmgiCiAjaW1wb3J0ICJfV0tVc2VyQ29udGVudEV4dGVuc2lvblN0b3JlSW50ZXJuYWwuaCIKICNp
bXBvcnQgIl9XS1VzZXJDb250ZW50RmlsdGVySW50ZXJuYWwuaCIKKyNpbXBvcnQgIl9XS1VzZXJT
dHlsZVNoZWV0SW50ZXJuYWwuaCIKICNpbXBvcnQgIl9XS1Zpc2l0ZWRMaW5rU3RvcmVJbnRlcm5h
bC5oIgogI2ltcG9ydCA8b2JqYy9vYmpjLWF1dG8uaD4KIApAQCAtMjExLDYgKzIxMiwxMCBAQCB2
b2lkKiBPYmplY3Q6Om5ld09iamVjdChzaXplX3Qgc2l6ZSwgVHlwZSB0eXBlKQogICAgICAgICB3
cmFwcGVyID0gW1dLVXNlclNjcmlwdCBhbGxvY107CiAgICAgICAgIGJyZWFrOwogCisgICAgY2Fz
ZSBUeXBlOjpVc2VyU3R5bGVTaGVldDoKKyAgICAgICAgd3JhcHBlciA9IFtfV0tVc2VyU3R5bGVT
aGVldCBhbGxvY107CisgICAgICAgIGJyZWFrOworCiAgICAgY2FzZSBUeXBlOjpWaXNpdGVkTGlu
a1N0b3JlOgogICAgICAgICB3cmFwcGVyID0gW19XS1Zpc2l0ZWRMaW5rU3RvcmUgYWxsb2NdOwog
ICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
QVBJVXNlclNjcmlwdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVVzZXJT
Y3JpcHQuY3BwCmluZGV4IGI1MjgzY2VhZWVmNTQ1M2ZlMzg5ZWQ5NzQ1YWYyYWJjNDBjMGU1YTMu
Ljg0ZWE2YTFjOGVjMWJmMmNiY2RhM2RiNTJmNDRlODcxM2YxOWJjNDggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJVXNlclNjcmlwdC5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElVc2VyU2NyaXB0LmNwcApAQCAtNDIsNyArNDIsNyBA
QCBXZWJDb3JlOjpVUkwgVXNlclNjcmlwdDo6Z2VuZXJhdGVVbmlxdWVVUkwoKQogICAgIFN0cmlu
Z0J1aWxkZXIgdXJsU3RyaW5nQnVpbGRlcjsKICAgICB1cmxTdHJpbmdCdWlsZGVyLmFwcGVuZExp
dGVyYWwoInVzZXItc2NyaXB0OiIpOwogICAgIHVybFN0cmluZ0J1aWxkZXIuYXBwZW5kTnVtYmVy
KGdlbmVyYXRlSWRlbnRpZmllcigpKTsKLSAgICByZXR1cm4gV2ViQ29yZTo6VVJMIHsgV2ViQ29y
ZTo6VVJMIHsgfSwgdXJsU3RyaW5nQnVpbGRlci50b1N0cmluZygpIH07CisgICAgcmV0dXJuIHsg
eyB9LCB1cmxTdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCkgfTsKIH0KIAogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVVzZXJTY3JpcHQuaCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQVBJVXNlclNjcmlwdC5oCmluZGV4IDQ3OWY1M2VkZDJlNjI1YjNi
YjFiZTViYTNmZWNlYTEwMWY2ZDI1ZDkuLmE0YTIwN2YzMjBhYzU1N2NiYjJhNTVkNzlhNzA3YzFl
YWJmZTljMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJVXNl
clNjcmlwdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJVXNlclNjcmlw
dC5oCkBAIC0zNyw3ICszNyw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBSZWY8VXNlclNjcmlw
dD4gY3JlYXRlKFdlYkNvcmU6OlVzZXJTY3JpcHQgdXNlclNjcmlwdCkKICAgICB7Ci0gICAgICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFVzZXJTY3JpcHQodXNlclNjcmlwdCkpOworICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBVc2VyU2NyaXB0KFdURjo6bW92ZSh1c2VyU2NyaXB0KSkpOwog
ICAgIH0KIAogICAgIFVzZXJTY3JpcHQoV2ViQ29yZTo6VXNlclNjcmlwdCB1c2VyU2NyaXB0KQpA
QCAtNDUsMTEgKzQ1LDYgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAKLSAgICB+VXNlclNjcmlw
dCgpCi0gICAgewotICAgIH0KLQotICAgIFdlYkNvcmU6OlVzZXJTY3JpcHQmIHVzZXJTY3JpcHQo
KSB7IHJldHVybiBtX3VzZXJTY3JpcHQ7IH0KICAgICBjb25zdCBXZWJDb3JlOjpVc2VyU2NyaXB0
JiB1c2VyU2NyaXB0KCkgY29uc3QgeyByZXR1cm4gbV91c2VyU2NyaXB0OyB9CiAKIHByaXZhdGU6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVVzZXJTdHlsZVNo
ZWV0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJVXNlclN0eWxlU2hlZXQu
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjBjMWIyYWMyMjZiNDg2Y2U3NWFhNjA4YWM4MDA2NTlhZTBlZjMwYzMK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVVzZXJT
dHlsZVNoZWV0LmNwcApAQCAtMCwwICsxLDQ5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIkFQSVVzZXJTdHlsZVNoZWV0LmgiCisKKyNpbmNsdWRlIDx3dGYv
dGV4dC9TdHJpbmdCdWlsZGVyLmg+CisKK25hbWVzcGFjZSBBUEkgeworCitzdGF0aWMgdWludDY0
X3QgZ2VuZXJhdGVJZGVudGlmaWVyKCkKK3sKKyAgICBzdGF0aWMgdWludDY0X3QgaWRlbnRpZmll
cjsKKworICAgIHJldHVybiArK2lkZW50aWZpZXI7Cit9CisKK1dlYkNvcmU6OlVSTCBVc2VyU3R5
bGVTaGVldDo6Z2VuZXJhdGVVbmlxdWVVUkwoKQoreworICAgIFN0cmluZ0J1aWxkZXIgdXJsU3Ry
aW5nQnVpbGRlcjsKKyAgICB1cmxTdHJpbmdCdWlsZGVyLmFwcGVuZExpdGVyYWwoInVzZXItc3R5
bGUtc2hlZXQ6Iik7CisgICAgdXJsU3RyaW5nQnVpbGRlci5hcHBlbmROdW1iZXIoZ2VuZXJhdGVJ
ZGVudGlmaWVyKCkpOworICAgIHJldHVybiB7IHsgfSwgdXJsU3RyaW5nQnVpbGRlci50b1N0cmlu
ZygpIH07Cit9CisKKworfSAvLyBuYW1lc3BhY2UgQVBJCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVVzZXJTdHlsZVNoZWV0LmggYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0FQSVVzZXJTdHlsZVNoZWV0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWM1NzU0Y2FjYWNi
NmYwYmE0YmVjY2I1MTcxYjZmZTU1YjRjNzU1NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJVXNlclN0eWxlU2hlZXQuaApAQCAtMCwwICsxLDUxIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2lmbmRlZiBBUElVc2VyU3R5bGVTaGVldF9oCisjZGVmaW5lIEFQSVVz
ZXJTdHlsZVNoZWV0X2gKKworI2luY2x1ZGUgIkFQSU9iamVjdC5oIgorI2luY2x1ZGUgPFdlYkNv
cmUvVXNlclN0eWxlU2hlZXQuaD4KKworbmFtZXNwYWNlIEFQSSB7CisKK2NsYXNzIFVzZXJTdHls
ZVNoZWV0IGZpbmFsIDogcHVibGljIE9iamVjdEltcGw8T2JqZWN0OjpUeXBlOjpVc2VyU3R5bGVT
aGVldD4geworcHVibGljOgorICAgIHN0YXRpYyBXZWJDb3JlOjpVUkwgZ2VuZXJhdGVVbmlxdWVV
UkwoKTsKKworICAgIFVzZXJTdHlsZVNoZWV0KFdlYkNvcmU6OlVzZXJTdHlsZVNoZWV0IHVzZXJT
dHlsZVNoZWV0KQorICAgICAgICA6IG1fdXNlclN0eWxlU2hlZXQodXNlclN0eWxlU2hlZXQpCisg
ICAgeworICAgIH0KKworICAgIGNvbnN0IFdlYkNvcmU6OlVzZXJTdHlsZVNoZWV0JiB1c2VyU3R5
bGVTaGVldCgpIGNvbnN0IHsgcmV0dXJuIG1fdXNlclN0eWxlU2hlZXQ7IH0KKworcHJpdmF0ZToK
KyAgICBXZWJDb3JlOjpVc2VyU3R5bGVTaGVldCBtX3VzZXJTdHlsZVNoZWV0OworfTsKKworfSAv
LyBuYW1lc3BhY2UgQVBJCisKKyNlbmRpZiAvLyBBUElVc2VyU3R5bGVTaGVldF9oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlckNvbnRlbnRDb250
cm9sbGVyLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJDb250
ZW50Q29udHJvbGxlci5tbQppbmRleCA4ZGI1ZmRkMDY4Y2Y2MWM3MjNmMTk1MGU2MzA5NjhmMzg2
ZGU5ZDJmLi5mZTZkNjBjYzUyYzUwNDZhMGJkYTU1ODlhYWJmZTI0YjNkYTU2NmUwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlckNvbnRlbnRDb250
cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2Vy
Q29udGVudENvbnRyb2xsZXIubW0KQEAgLTM4LDYgKzM4LDcgQEAKICNpbXBvcnQgIldlYlNjcmlw
dE1lc3NhZ2VIYW5kbGVyLmgiCiAjaW1wb3J0ICJXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94
eS5oIgogI2ltcG9ydCAiX1dLVXNlckNvbnRlbnRGaWx0ZXJJbnRlcm5hbC5oIgorI2ltcG9ydCAi
X1dLVXNlclN0eWxlU2hlZXRJbnRlcm5hbC5oIgogI2ltcG9ydCA8V2ViQ29yZS9TZWN1cml0eU9y
aWdpbi5oPgogI2ltcG9ydCA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbkRhdGEuaD4KICNpbXBvcnQg
PFdlYkNvcmUvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmg+CkBAIC0xNDYsNiArMTQ3LDE2IEBAIHBy
aXZhdGU6CiAjZW5kaWYKIH0KIAorLSAodm9pZClfYWRkVXNlclN0eWxlU2hlZXQ6KF9XS1VzZXJT
dHlsZVNoZWV0ICopdXNlclN0eWxlU2hlZXQKK3sKKyAgICBfdXNlckNvbnRlbnRDb250cm9sbGVy
UHJveHktPmFkZFVzZXJTdHlsZVNoZWV0KHVzZXJTdHlsZVNoZWV0LT5fdXNlclN0eWxlU2hlZXQt
PnVzZXJTdHlsZVNoZWV0KCkpOworfQorCistICh2b2lkKV9yZW1vdmVBbGxVc2VyU3R5bGVTaGVl
dHMKK3sKKyAgICBfdXNlckNvbnRlbnRDb250cm9sbGVyUHJveHktPnJlbW92ZUFsbFVzZXJTdHls
ZVNoZWV0cygpOworfQorCiBAZW5kCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJDb250ZW50Q29udHJvbGxlclByaXZhdGUuaCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2VyQ29udGVudENvbnRyb2xs
ZXJQcml2YXRlLmgKaW5kZXggMjc5ODUxZWQ2NmU3MDFhNzFjNGM1ZGU4NzE5NmYxYmViZjhmNTBi
Ni4uM2RmNWE2NTgyZDI4NmEzYjIwMWU5ZmZlYzIwZWE2ZGEwYTAwMDliOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJDb250ZW50Q29udHJvbGxl
clByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNl
ckNvbnRlbnRDb250cm9sbGVyUHJpdmF0ZS5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaWYgV0tfQVBJ
X0VOQUJMRUQKIAogQGNsYXNzIF9XS1VzZXJDb250ZW50RmlsdGVyOworQGNsYXNzIF9XS1VzZXJT
dHlsZVNoZWV0OwogCiBAaW50ZXJmYWNlIFdLVXNlckNvbnRlbnRDb250cm9sbGVyIChXS1ByaXZh
dGUpCiAKQEAgLTM1LDYgKzM2LDkgQEAKIC0gKHZvaWQpX3JlbW92ZVVzZXJDb250ZW50RmlsdGVy
OihOU1N0cmluZyAqKXVzZXJDb250ZW50RmlsdGVyTmFtZSBXS19BVkFJTEFCTEUoMTBfMTEsIDlf
MCk7CiAtICh2b2lkKV9yZW1vdmVBbGxVc2VyQ29udGVudEZpbHRlcnMgV0tfQVZBSUxBQkxFKDEw
XzExLCA5XzApOwogCistICh2b2lkKV9hZGRVc2VyU3R5bGVTaGVldDooX1dLVXNlclN0eWxlU2hl
ZXQgKil1c2VyU3R5bGVTaGVldCBXS19BVkFJTEFCTEUoV0tfTUFDX1RCQSwgV0tfSU9TX1RCQSk7
CistICh2b2lkKV9yZW1vdmVBbGxVc2VyU3R5bGVTaGVldHMgV0tfQVZBSUxBQkxFKFdLX01BQ19U
QkEsIFdLX0lPU19UQkEpOworCiBAZW5kCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tVc2VyU3R5bGVTaGVldC5oIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tVc2VyU3R5bGVTaGVldC5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
Ljk5MTViZjA4Yzk1OGQ2MjdjYWQ0ZmRmMWQzMTA3YjdiYmZkYjI4NzQKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1VzZXJTdHlsZVNoZWV0
LmgKQEAgLTAsMCArMSw1MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgPFdlYktpdC9XS0ZvdW5k
YXRpb24uaD4KKworI2lmIFdLX0FQSV9FTkFCTEVECisKKyNpbXBvcnQgPEZvdW5kYXRpb24vRm91
bmRhdGlvbi5oPgorCitXS19BU1NVTUVfTk9OTlVMTF9CRUdJTgorCitXS19DTEFTU19BVkFJTEFC
TEUoV0tfTUFDX1RCQSwgV0tfSU9TX1RCQSkKK0BpbnRlcmZhY2UgX1dLVXNlclN0eWxlU2hlZXQg
OiBOU09iamVjdCA8TlNDb3B5aW5nPgorCitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHks
IGNvcHkpIE5TU3RyaW5nICpzb3VyY2U7CisKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25s
eSwgY29weSkgV0tfQVJSQVkoTlNTdHJpbmcgKikgKndoaXRlbGlzdGVkVVJMUGF0dGVybnM7CitA
cHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIGNvcHkpIFdLX0FSUkFZKE5TU3RyaW5nICop
ICpibGFja2xpc3RlZFVSTFBhdHRlcm5zOworCitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9u
bHksIGdldHRlcj1pc0Zvck1haW5GcmFtZU9ubHkpIEJPT0wgZm9yTWFpbkZyYW1lT25seTsKKwor
LSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoU291cmNlOihOU1N0cmluZyAqKXNvdXJjZSB3aGl0ZWxp
c3RlZFVSTFBhdHRlcm5zOihXS19BUlJBWShOU1N0cmluZyAqKSAqKXdoaXRlbGlzdGVkVVJMUGF0
dGVybnMgYmxhY2tsaXN0ZWRVUkxQYXR0ZXJuczooV0tfQVJSQVkoTlNTdHJpbmcgKikgKilibGFj
a2xpc3RlZFVSTFBhdHRlcm5zIGZvck1haW5GcmFtZU9ubHk6KEJPT0wpZm9yTWFpbkZyYW1lT25s
eTsKKworQGVuZAorCitXS19BU1NVTUVfTk9OTlVMTF9FTkQKKworI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1VzZXJTdHlsZVNoZWV0Lm1t
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tVc2VyU3R5bGVTaGVldC5t
bQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4yMDQwNjAxNjYzNDA2ZTNlMzllNzU4MmNkNDIwZDVlNjNiNDIxMDA1Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tV
c2VyU3R5bGVTaGVldC5tbQpAQCAtMCwwICsxLDk1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAi
Y29uZmlnLmgiCisjaW1wb3J0ICJfV0tVc2VyU3R5bGVTaGVldEludGVybmFsLmgiCisKKyNpbXBv
cnQgIkFQSUFycmF5LmgiCisjaW1wb3J0ICJXS05TQXJyYXkuaCIKKyNpbXBvcnQgIldlYktpdDJJ
bml0aWFsaXplLmgiCisKKyNpZiBXS19BUElfRU5BQkxFRAorCitAaW1wbGVtZW50YXRpb24gX1dL
VXNlclN0eWxlU2hlZXQKKworc3RhdGljIFZlY3RvcjxTdHJpbmc+IHRvV1RGU3RyaW5ncyhOU0Fy
cmF5ICpzdHJpbmdzKQoreworICAgIFZlY3RvcjxTdHJpbmc+IHJlc3VsdDsKKyAgICByZXN1bHQu
cmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShzdHJpbmdzLmNvdW50KTsKKworICAgIGZvciAoTlNTdHJp
bmcgKnN0cmluZyBpbiBzdHJpbmdzKQorICAgICAgICByZXN1bHQudW5jaGVja2VkQXBwZW5kKHN0
cmluZyk7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCistIChpbnN0YW5jZXR5cGUpaW5pdFdp
dGhTb3VyY2U6KE5TU3RyaW5nICopc291cmNlIHdoaXRlbGlzdGVkVVJMUGF0dGVybnM6KE5TQXJy
YXkgKil3aGl0ZWxpc3RlZFVSTFBhdHRlcm5zIGJsYWNrbGlzdGVkVVJMUGF0dGVybnM6KE5TQXJy
YXkgKilibGFja2xpc3RlZFVSTFBhdHRlcm5zIGZvck1haW5GcmFtZU9ubHk6KEJPT0wpZm9yTWFp
bkZyYW1lT25seQoreworICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQorICAgICAgICBy
ZXR1cm4gbmlsOworCisgICAgLy8gRklYTUU6IEluIHRoZSBBUEkgdGVzdCwgd2UgY2FuIHVzZSBn
ZW5lcmF0ZVVuaXF1ZVVSTCBiZWxvdyBiZWZvcmUgdGhlIEFQSTo6T2JqZWN0IGNvbnN0cnVjdG9y
IGhhcyBkb25lIHRoaXMuLi4gd2hlcmUgc2hvdWxkIHRoaXMgcmVhbGx5IGJlPworICAgIFdlYktp
dDo6SW5pdGlhbGl6ZVdlYktpdDIoKTsKKworICAgIEFQSTo6T2JqZWN0Ojpjb25zdHJ1Y3RJbldy
YXBwZXI8QVBJOjpVc2VyU3R5bGVTaGVldD4oc2VsZiwgV2ViQ29yZTo6VXNlclN0eWxlU2hlZXQg
eyBXVEY6OlN0cmluZyhzb3VyY2UpLCBBUEk6OlVzZXJTdHlsZVNoZWV0OjpnZW5lcmF0ZVVuaXF1
ZVVSTCgpLCB0b1dURlN0cmluZ3Mod2hpdGVsaXN0ZWRVUkxQYXR0ZXJucyksIHRvV1RGU3RyaW5n
cyhibGFja2xpc3RlZFVSTFBhdHRlcm5zKSwgZm9yTWFpbkZyYW1lT25seSA/IFdlYkNvcmU6Oklu
amVjdEluVG9wRnJhbWVPbmx5IDogV2ViQ29yZTo6SW5qZWN0SW5BbGxGcmFtZXMsIFdlYkNvcmU6
OlVzZXJTdHlsZVVzZXJMZXZlbCB9KTsKKworICAgIHJldHVybiBzZWxmOworfQorCistIChOU1N0
cmluZyAqKXNvdXJjZQoreworICAgIHJldHVybiBfdXNlclN0eWxlU2hlZXQtPnVzZXJTdHlsZVNo
ZWV0KCkuc291cmNlKCk7Cit9CisKKy0gKE5TQXJyYXkgKil3aGl0ZWxpc3RlZFVSTFBhdHRlcm5z
Cit7CisgICAgcmV0dXJuIHdyYXBwZXIoQVBJOjpBcnJheTo6Y3JlYXRlU3RyaW5nQXJyYXkoX3Vz
ZXJTdHlsZVNoZWV0LT51c2VyU3R5bGVTaGVldCgpLndoaXRlbGlzdCgpKSk7Cit9CisKKy0gKE5T
QXJyYXkgKilibGFja2xpc3RlZFVSTFBhdHRlcm5zCit7CisgICAgcmV0dXJuIHdyYXBwZXIoQVBJ
OjpBcnJheTo6Y3JlYXRlU3RyaW5nQXJyYXkoX3VzZXJTdHlsZVNoZWV0LT51c2VyU3R5bGVTaGVl
dCgpLmJsYWNrbGlzdCgpKSk7Cit9CisKKy0gKEJPT0wpaXNGb3JNYWluRnJhbWVPbmx5Cit7Cisg
ICAgcmV0dXJuIF91c2VyU3R5bGVTaGVldC0+dXNlclN0eWxlU2hlZXQoKS5pbmplY3RlZEZyYW1l
cygpID09IFdlYkNvcmU6OkluamVjdEluVG9wRnJhbWVPbmx5OworfQorCistIChpZCljb3B5V2l0
aFpvbmU6KE5TWm9uZSAqKXpvbmUKK3sKKyAgICByZXR1cm4gW3NlbGYgcmV0YWluXTsKK30KKwor
I3ByYWdtYSBtYXJrIFdLT2JqZWN0IHByb3RvY29sIGltcGxlbWVudGF0aW9uCisKKy0gKEFQSTo6
T2JqZWN0JilfYXBpT2JqZWN0Cit7CisgICAgcmV0dXJuICpfdXNlclN0eWxlU2hlZXQ7Cit9CisK
K0BlbmQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0NvY29hL19XS1VzZXJTdHlsZVNoZWV0SW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvX1dLVXNlclN0eWxlU2hlZXRJbnRlcm5hbC5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA0
NGMwODNhZDQ3OGY4YjA2NTg1OTdjOTY5OWFhNDc5MmEzOWVkMGEKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1VzZXJTdHlsZVNoZWV0SW50
ZXJuYWwuaApAQCAtMCwwICsxLDQ5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiX1dLVXNlclN0
eWxlU2hlZXQuaCIKKworI2lmIFdLX0FQSV9FTkFCTEVECisKKyNpbXBvcnQgIkFQSVVzZXJTdHls
ZVNoZWV0LmgiCisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisKK25hbWVzcGFjZSBBUEkgewor
CitpbmxpbmUgX1dLVXNlclN0eWxlU2hlZXQgKndyYXBwZXIoVXNlclN0eWxlU2hlZXQmIHVzZXJT
dHlsZVNoZWV0KQoreworICAgIEFTU0VSVChbdXNlclN0eWxlU2hlZXQud3JhcHBlcigpIGlzS2lu
ZE9mQ2xhc3M6W19XS1VzZXJTdHlsZVNoZWV0IGNsYXNzXV0pOworICAgIHJldHVybiAoX1dLVXNl
clN0eWxlU2hlZXQgKil1c2VyU3R5bGVTaGVldC53cmFwcGVyKCk7Cit9CisKK30KKworQGludGVy
ZmFjZSBfV0tVc2VyU3R5bGVTaGVldCAoKSA8V0tPYmplY3Q+IHsKK0BwYWNrYWdlCisgICAgQVBJ
OjpPYmplY3RTdG9yYWdlPEFQSTo6VXNlclN0eWxlU2hlZXQ+IF91c2VyU3R5bGVTaGVldDsKK30K
K0BlbmQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKaW5kZXggNmI5OTM4NTNmZjI4NTVhYjZiNDVmNjFlNWMzM2NmNDAxYzUx
YjM5NS4uZTNiODYxNDQ5MzQwODQ3NWNhN2NiNjQ4YzM1OGI3OTE1Y2U1ZTdlZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNjQx
LDYgKzY0MSwxMSBAQAogCQkyRDg3MEQxMDE2MjM0RkZFMDAwQTNGMjAgLyogUERGUGx1Z2luLm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQ4NzBEMEUx
NjIyQjdGOTAwMEEzRjIwIC8qIFBERlBsdWdpbi5tbSAqLzsgfTsKIAkJMkQ4NzEwMTYxODI4NDE1
RDAwMThGQTAxIC8qIFBsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbS5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEODcxMDE0MTgyODQxNUQwMDE4RkEw
MSAvKiBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b20ubW0gKi87IH07CiAJCTJEODcxMDE3MTgy
ODQxNUQwMDE4RkEwMSAvKiBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b20uaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEODcxMDE1MTgyODQxNUQwMDE4
RkEwMSAvKiBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b20uaCAqLzsgfTsKKwkJMkQ4Nzg2MUQx
QkRCNTRCRjAwRDAyQUJCIC8qIF9XS1VzZXJTdHlsZVNoZWV0LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDg3ODYxQjFCREI1NEJGMDBEMDJBQkIgLyog
X1dLVXNlclN0eWxlU2hlZXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OworCQkyRDg3ODYxRTFCREI1NEJGMDBEMDJBQkIgLyogX1dLVXNlclN0eWxlU2hl
ZXQubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDg3
ODYxQzFCREI1NEJGMDBEMDJBQkIgLyogX1dLVXNlclN0eWxlU2hlZXQubW0gKi87IHNldHRpbmdz
ID0ge0FTU0VUX1RBR1MgPSAoKTsgfTsgfTsKKwkJMkQ4Nzg2MjAxQkRCNTdGNTAwRDAyQUJCIC8q
IF9XS1VzZXJTdHlsZVNoZWV0SW50ZXJuYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDJEODc4NjFGMUJEQjU3RjUwMEQwMkFCQiAvKiBfV0tVc2VyU3R5
bGVTaGVldEludGVybmFsLmggKi87IHNldHRpbmdzID0ge0FTU0VUX1RBR1MgPSAoKTsgfTsgfTsK
KwkJMkQ4Nzg2MjMxQkRCNThGRjAwRDAyQUJCIC8qIEFQSVVzZXJTdHlsZVNoZWV0LmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEODc4NjIxMUJEQjU4
RkYwMEQwMkFCQiAvKiBBUElVc2VyU3R5bGVTaGVldC5jcHAgKi87IHNldHRpbmdzID0ge0FTU0VU
X1RBR1MgPSAoKTsgfTsgfTsKKwkJMkQ4Nzg2MjQxQkRCNThGRjAwRDAyQUJCIC8qIEFQSVVzZXJT
dHlsZVNoZWV0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAyRDg3ODYyMjFCREI1OEZGMDBEMDJBQkIgLyogQVBJVXNlclN0eWxlU2hlZXQuaCAqLzsgc2V0
dGluZ3MgPSB7QVNTRVRfVEFHUyA9ICgpOyB9OyB9OwogCQkyRDg5NDlGMDE4MjA0NEY2MDBFODk4
QUEgLyogUGxhdGZvcm1DQUxheWVyUmVtb3RlVGlsZWRCYWNraW5nLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEODk0OUVFMTgyMDQ0RjYwMEU4OThB
QSAvKiBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGVUaWxlZEJhY2tpbmcuY3BwICovOyB9OwogCQkyRDg5
NDlGMTE4MjA0NEY2MDBFODk4QUEgLyogUGxhdGZvcm1DQUxheWVyUmVtb3RlVGlsZWRCYWNraW5n
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDg5NDlF
RjE4MjA0NEY2MDBFODk4QUEgLyogUGxhdGZvcm1DQUxheWVyUmVtb3RlVGlsZWRCYWNraW5nLmgg
Ki87IH07CiAJCTJEOUVBMzBEMUE5NkNCNTkwMDJEMjgwNyAvKiBXS1BhZ2VJbmplY3RlZEJ1bmRs
ZUNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MkQ5RUEzMEMxQTk2Q0I1OTAwMkQyODA3IC8qIFdLUGFnZUluamVjdGVkQnVuZGxlQ2xpZW50Lmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTI4MDUs
NiArMjgxMCwxMSBAQAogCQkyRDg3MEQwRTE2MjJCN0Y5MDAwQTNGMjAgLyogUERGUGx1Z2luLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gUERGUGx1Z2luLm1tOyBw
YXRoID0gUERGL1BERlBsdWdpbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkQ4
NzEwMTQxODI4NDE1RDAwMThGQTAxIC8qIFBsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbS5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFBsYXRmb3JtQ0FMYXllclJl
bW90ZUN1c3RvbS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkQ4NzEwMTUxODI4
NDE1RDAwMThGQTAxIC8qIFBsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b20uaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkQ4Nzg2MUIxQkRCNTRCRjAwRDAyQUJCIC8qIF9X
S1VzZXJTdHlsZVNoZWV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9XS1Vz
ZXJTdHlsZVNoZWV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTJEODc4NjFDMUJE
QjU0QkYwMEQwMkFCQiAvKiBfV0tVc2VyU3R5bGVTaGVldC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IF9XS1VzZXJTdHlsZVNoZWV0Lm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkyRDg3ODYxRjFCREI1N0Y1MDBEMDJBQkIgLyogX1dLVXNlclN0eWxl
U2hlZXRJbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tVc2Vy
U3R5bGVTaGVldEludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTJEODc4
NjIxMUJEQjU4RkYwMEQwMkFCQiAvKiBBUElVc2VyU3R5bGVTaGVldC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBUElVc2VyU3R5bGVTaGVldC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTJEODc4NjIyMUJEQjU4RkYwMEQwMkFCQiAvKiBBUElVc2Vy
U3R5bGVTaGVldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBUElVc2VyU3R5
bGVTaGVldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRDg5NDlFRTE4MjA0NEY2
MDBFODk4QUEgLyogUGxhdGZvcm1DQUxheWVyUmVtb3RlVGlsZWRCYWNraW5nLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBsYXRmb3JtQ0FMYXllclJlbW90ZVRpbGVk
QmFja2luZy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJEODk0OUVGMTgyMDQ0
RjYwMEU4OThBQSAvKiBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGVUaWxlZEJhY2tpbmcuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGxhdGZvcm1DQUxheWVyUmVtb3RlVGlsZWRCYWNr
aW5nLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJEOUVBMzBDMUE5NkNCNTkwMDJE
MjgwNyAvKiBXS1BhZ2VJbmplY3RlZEJ1bmRsZUNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXS1BhZ2VJbmplY3RlZEJ1bmRsZUNsaWVudC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtNTM2MSw2ICs1MzcxLDkgQEAKIAkJCQk3Qzg5RDJCODFBNkIwRjJD
MDAzQTVGREUgLyogX1dLVXNlckNvbnRlbnRGaWx0ZXIuaCAqLywKIAkJCQk3Qzg5RDJCNzFBNkIw
RjJDMDAzQTVGREUgLyogX1dLVXNlckNvbnRlbnRGaWx0ZXIubW0gKi8sCiAJCQkJN0M4OUQyQkIx
QTZCMEY1QjAwM0E1RkRFIC8qIF9XS1VzZXJDb250ZW50RmlsdGVySW50ZXJuYWwuaCAqLywKKwkJ
CQkyRDg3ODYxQjFCREI1NEJGMDBEMDJBQkIgLyogX1dLVXNlclN0eWxlU2hlZXQuaCAqLywKKwkJ
CQkyRDg3ODYxQzFCREI1NEJGMDBEMDJBQkIgLyogX1dLVXNlclN0eWxlU2hlZXQubW0gKi8sCisJ
CQkJMkQ4Nzg2MUYxQkRCNTdGNTAwRDAyQUJCIC8qIF9XS1VzZXJTdHlsZVNoZWV0SW50ZXJuYWwu
aCAqLywKIAkJCQkxQTgxQjM3RjE4QkQ2NkFEMDAwN0ZEQUMgLyogX1dLVmlzaXRlZExpbmtTdG9y
ZS5oICovLAogCQkJCTFBODFCMzdFMThCRDY2QUQwMDA3RkRBQyAvKiBfV0tWaXNpdGVkTGlua1N0
b3JlLm1tICovLAogCQkJCTFBODFCMzg0MThCRDY3M0EwMDA3RkRBQyAvKiBfV0tWaXNpdGVkTGlu
a1N0b3JlSW50ZXJuYWwuaCAqLywKQEAgLTYzMDIsNiArNjMxNSw4IEBACiAJCQkJN0MzQTA2QTYx
QUFCOTAzRTAwOUQ3NEJBIC8qIEFQSVVzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmUuaCAqLywKIAkJ
CQk3Qzg5RDJBNTFBNjc4OUVBMDAzQTVGREUgLyogQVBJVXNlclNjcmlwdC5jcHAgKi8sCiAJCQkJ
N0M4OUQyOTIxQTY3MTIyRjAwM0E1RkRFIC8qIEFQSVVzZXJTY3JpcHQuaCAqLywKKwkJCQkyRDg3
ODYyMTFCREI1OEZGMDBEMDJBQkIgLyogQVBJVXNlclN0eWxlU2hlZXQuY3BwICovLAorCQkJCTJE
ODc4NjIyMUJEQjU4RkYwMEQwMkFCQiAvKiBBUElVc2VyU3R5bGVTaGVldC5oICovLAogCQkJCTFB
NDgzMkM1MUE5QkMxM0MwMDhCNERGRSAvKiBBUElXZWJzaXRlRGF0YVJlY29yZC5jcHAgKi8sCiAJ
CQkJMUE0ODMyQzYxQTlCQzEzQzAwOEI0REZFIC8qIEFQSVdlYnNpdGVEYXRhUmVjb3JkLmggKi8s
CiAJCQkJMUEzNjM1QTcxQTMxNDRBMzAwRUQ2MTk3IC8qIEFQSVdlYnNpdGVEYXRhU3RvcmUuY3Bw
ICovLApAQCAtODA3MSw2ICs4MDg2LDcgQEAKIAkJCQk5M0E4OEI0NjFCQzg4MjkzMDBBQkE1QzIg
LyogQVBJSGl0VGVzdFJlc3VsdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjlENTVERjIxNjFCRjlG
MTAwMzFBMkUzIC8qIFdlYlBhZ2VHcm91cFByb3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAog
CQkJCTJEOUVBMzBGMUE5NkNCRkYwMDJEMjgwNyAvKiBXZWJQYWdlSW5qZWN0ZWRCdW5kbGVDbGll
bnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTJEODc4NjIwMUJEQjU3RjUwMEQwMkFCQiAvKiBfV0tV
c2VyU3R5bGVTaGVldEludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMENFNzJBMTEyNDdF
NzFEMDBCQzBFQzQgLyogV2ViUGFnZU1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDVD
OUQwNjE5QzgxRDhGMDBCM0M1QzEgLyogV2ViUGFnZU92ZXJsYXkuaCBpbiBIZWFkZXJzICovLAog
CQkJCUJDMDMyREQxMTBGNDM4OUYwMDU4QzE1QSAvKiBXZWJQYWdlUHJveHkuaCBpbiBIZWFkZXJz
ICovLApAQCAtODEwNyw2ICs4MTIzLDcgQEAKIAkJCQkzNzYwODgxRjE1MDQxM0U5MDBGQzgyQzcg
LyogV2ViUmVuZGVyT2JqZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTBBRkZCQTE2NTQyMDQ4
MDAxQkEwNUUgLyogV2ViUmVzb3VyY2VMb2FkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxRjA2
MEUwMTY1NDMxN0YwMEYzMjgxQiAvKiBXZWJSZXNvdXJjZUxvYWRlck1lc3NhZ2VzLmggaW4gSGVh
ZGVycyAqLywKKwkJCQkyRDg3ODYxRDFCREI1NEJGMDBEMDJBQkIgLyogX1dLVXNlclN0eWxlU2hl
ZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTdDMzYxRDczMTkyN0ZBMzYwMDM2QTU5RCAvKiBXZWJT
Y3JpcHRNZXNzYWdlSGFuZGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRDNCOTQ4NDkxMUZGNEI2
NTAwMDMyQjM5IC8qIFdlYlNlYXJjaFBvcHVwTWVudS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE0
ODMyRDcxQTlDREY5NjAwOEI0REZFIC8qIFdlYnNpdGVEYXRhLmggaW4gSGVhZGVycyAqLywKQEAg
LTgzMjEsNiArODMzOCw3IEBACiAJCQkJMUFCOEExRUMxODQwMDgwOTAwRTlBRTY5IC8qIFdLUGFn
ZUxvYWRlckNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNFNkE0RUUxQkM1REQzOTAwRjhB
MEU3IC8qIF9XS0hpdFRlc3RSZXN1bHQuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMkQwMjE5MTJB
QzQyNkMwMEU3MzJBMyAvKiBXS1BhZ2VMb2FkVHlwZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTJE
ODc4NjI0MUJEQjU4RkYwMEQwMkFCQiAvKiBBUElVc2VyU3R5bGVTaGVldC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJOTNCREVCMDExNzFERDdBRjAwQkZFRTFCIC8qIFdLUGFnZUxvYWRUeXBlc1ByaXZh
dGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTJENzMwMzc5MUE3QzJCNzUwMEY4RjQ4NyAvKiBXS1Bh
Z2VOYXZpZ2F0aW9uQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUI4QTFFRTE4NDAwQUNC
MDBFOUFFNjkgLyogV0tQYWdlUG9saWN5Q2xpZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTk5OTYs
NiArMTAwMTQsNyBAQAogCQkJCTI5MjMyREY4MThCMkE5QUUwMEQwNTk2RiAvKiBXS0FjY2Vzc2li
aWxpdHlXZWJQYWdlT2JqZWN0SU9TLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMjkyMzJERjkxOEIy
QUIzQTAwRDA1OTZGIC8qIFdLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RNYWMubW0gaW4gU291
cmNlcyAqLywKIAkJCQkwRkNCNEU0OTE4QkJFMDQ0MDAwRkNGQzkgLyogV0tBY3Rpb25TaGVldC5t
bSBpbiBTb3VyY2VzICovLAorCQkJCTJEODc4NjIzMUJEQjU4RkYwMEQwMkFCQiAvKiBBUElVc2Vy
U3R5bGVTaGVldC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkNCNEU0QjE4QkJFMDQ0MDAwRkNG
QzkgLyogV0tBY3Rpb25TaGVldEFzc2lzdGFudC5tbSBpbiBTb3VyY2VzICovLAogCQkJCUM1RkEx
RUQ0MThFMTA2MjIwMEIzRjQwMiAvKiBXS0FpclBsYXlSb3V0ZVBpY2tlci5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCTUxMkUzNEU0MTMwQjREMDUwMEFCRDE5QSAvKiBXS0FwcGxpY2F0aW9uQ2FjaGVN
YW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMTAwODAsNiArMTAwOTksNyBAQAogCQkJCUJD
Q0Y2QUMyMTJDOTFGMzQwMDhGOUMzNSAvKiBXS0ltYWdlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUJDQ0Y2QUM5MTJDOTFGNTkwMDhGOUMzNSAvKiBXS0ltYWdlQ0cuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJOTMzREY4MzAxQjNCQzBCNDAwQUVBOUUzIC8qIFdLSW1hZ2VQcmV2aWV3Vmlld0NvbnRy
b2xsZXIubW0gaW4gU291cmNlcyAqLywKKwkJCQkyRDg3ODYxRTFCREI1NEJGMDBEMDJBQkIgLyog
X1dLVXNlclN0eWxlU2hlZXQubW0gaW4gU291cmNlcyAqLywKIAkJCQk5MzIxRDU4ODFBMzhFRTc0
MDA4MDUyQkUgLyogV0tJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyLm1tIGluIFNvdXJjZXMgKi8s
CiAJCQkJMUM4RTI5M0ExMjc2MUU1QjAwQkM3QkQwIC8qIFdLSW5zcGVjdG9yLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTBGM0M3MjVDMTk2RjYwNTIwMEFFREQwQyAvKiBXS0luc3BlY3RvckhpZ2hs
aWdodFZpZXcubW0gaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCAxOTA3MmJhMGRmODdkNGVhZWU3YTEzNDYyNDM4YTg5OWUy
MjZhYjJiLi40YmE3OTJiZDFkYTk4YjFmYjI1M2Y2ZTQ1MDhhZGEzNGVjM2I3Mjk4IDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQg
QEAKKzIwMTUtMTAtMjQgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgQWRkIGEgd2F5IHRvIGFkZCB1c2VyIHN0eWxlIHNoZWV0cyB0byBXS1VzZXJDb250
ZW50Q29udHJvbGxlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTUwNTMxCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yMzE5MTY5MT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0MkNvY29hL1VzZXJDb250ZW50Q29udHJvbGxlci5tbToKKyAgICAgICAgKFRF
U1QpOgorCiAyMDE1LTEwLTIzICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgog
CiAgICAgICAgIFJFR1JFU1NJT04gKHIxNzkzNTctcjE3OTM1OSk6IFdlYkNvbnRlbnQgQ3Jhc2gg
dXNpbmcgQU9MIE1haWwgQCBjb20uYXBwbGUuSmF2YXNjcmlwdENvcmUgSlNDOjpsaW5rUG9seW1v
cnBoaWNDYWxsKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpDYWxsTGlua0luZm8mLCBKU0M6OkNhbGxW
YXJpYW50LCBKU0M6OlJlZ2lzdGVyUHJlc2VydmF0aW9uTW9kZSkgKyAxNTg0CmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9Vc2VyQ29udGVudENvbnRy
b2xsZXIubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9Vc2VyQ29u
dGVudENvbnRyb2xsZXIubW0KaW5kZXggNTMzMDAzNTUyZDI2MTUwYjc5ZmRjYjg0NTBmZjNkODc1
ZGUzMWU3Ny4uM2EwMDhkODgzZGJlZDI1YmY3ZjMwYTVjMGJmZjcxNDc0ODkyOWZkNSAxMDA2NDQK
LS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvVXNlckNvbnRlbnRD
b250cm9sbGVyLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29h
L1VzZXJDb250ZW50Q29udHJvbGxlci5tbQpAQCAtMjgsNiArMjgsOCBAQAogI2ltcG9ydCAiUGxh
dGZvcm1VdGlsaXRpZXMuaCIKICNpbXBvcnQgIlRlc3QuaCIKICNpbXBvcnQgPFdlYktpdC9XZWJL
aXQuaD4KKyNpbXBvcnQgPFdlYktpdC9XS1VzZXJDb250ZW50Q29udHJvbGxlclByaXZhdGUuaD4K
KyNpbXBvcnQgPFdlYktpdC9fV0tVc2VyU3R5bGVTaGVldC5oPgogI2ltcG9ydCA8d3RmL1JldGFp
blB0ci5oPgogCiAjaWYgV0tfQVBJX0VOQUJMRUQKQEAgLTIxMiw0ICsyMTQsMTU0IEBAIFRFU1Qo
V0tVc2VyQ29udGVudENvbnRyb2xsZXIsIFNjcmlwdE1lc3NhZ2VIYW5kbGVyV2l0aE5hdmlnYXRp
b24pCiB9CiAjZW5kaWYKIAorc3RhdGljIE5TU3RyaW5nICpzdHlsZVNoZWV0U291cmNlID0gQCJi
b2R5IHsgYmFja2dyb3VuZC1jb2xvcjogZ3JlZW4gIWltcG9ydGFudDsgfSI7CitzdGF0aWMgTlNT
dHJpbmcgKmJhY2tncm91bmRDb2xvclNjcmlwdCA9IEAid2luZG93LmdldENvbXB1dGVkU3R5bGUo
ZG9jdW1lbnQuYm9keSwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnYmFja2dyb3VuZC1jb2xvcicp
IjsKK3N0YXRpYyBOU1N0cmluZyAqZnJhbWVCYWNrZ3JvdW5kQ29sb3JTY3JpcHQgPSBAIndpbmRv
dy5nZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdpZnJhbWUn
KVswXS5jb250ZW50RG9jdW1lbnQuYm9keSwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnYmFja2dy
b3VuZC1jb2xvcicpIjsKK3N0YXRpYyBjb25zdCBjaGFyKiBncmVlbkluUkdCID0gInJnYigwLCAx
MjgsIDApIjsKK3N0YXRpYyBjb25zdCBjaGFyKiByZWRJblJHQiA9ICJyZ2IoMjU1LCAwLCAwKSI7
CitzdGF0aWMgY29uc3QgY2hhciogd2hpdGVJblJHQiA9ICJyZ2JhKDAsIDAsIDAsIDApIjsKKwor
c3RhdGljIHZvaWQgZXhwZWN0U2NyaXB0RXZhbHVhdGVzVG9Db2xvcihXS1dlYlZpZXcgKndlYlZp
ZXcsIE5TU3RyaW5nICpzY3JpcHQsIGNvbnN0IGNoYXIqIGNvbG9yKQoreworICAgIHN0YXRpYyBi
b29sIGRpZENoZWNrQmFja2dyb3VuZENvbG9yOworCisgICAgW3dlYlZpZXcgZXZhbHVhdGVKYXZh
U2NyaXB0OnNjcmlwdCBjb21wbGV0aW9uSGFuZGxlcjpeIChpZCB2YWx1ZSwgTlNFcnJvciAqIGVy
cm9yKSB7CisgICAgICAgIEVYUEVDVF9UUlVFKFt2YWx1ZSBpc0tpbmRPZkNsYXNzOltOU1N0cmlu
ZyBjbGFzc11dKTsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGNvbG9yLCBbKE5TU3RyaW5nICop
dmFsdWUgVVRGOFN0cmluZ10pOworICAgICAgICBkaWRDaGVja0JhY2tncm91bmRDb2xvciA9IHRy
dWU7CisgICAgfV07CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRpZENoZWNrQmFj
a2dyb3VuZENvbG9yKTsKKyAgICBkaWRDaGVja0JhY2tncm91bmRDb2xvciA9IGZhbHNlOworfQor
CitURVNUKFdLVXNlckNvbnRlbnRDb250cm9sbGVyLCBBZGRVc2VyU3R5bGVTaGVldEJlZm9yZUNy
ZWF0aW5nVmlldykKK3sKKyAgICBSZXRhaW5QdHI8V0tXZWJWaWV3Q29uZmlndXJhdGlvbj4gY29u
ZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0
XSk7CisKKyAgICBSZXRhaW5QdHI8X1dLVXNlclN0eWxlU2hlZXQ+IHN0eWxlU2hlZXQgPSBhZG9w
dE5TKFtbX1dLVXNlclN0eWxlU2hlZXQgYWxsb2NdIGluaXRXaXRoU291cmNlOnN0eWxlU2hlZXRT
b3VyY2Ugd2hpdGVsaXN0ZWRVUkxQYXR0ZXJuczpAWyBdIGJsYWNrbGlzdGVkVVJMUGF0dGVybnM6
QFsgXSBmb3JNYWluRnJhbWVPbmx5OllFU10pOworICAgIFtbY29uZmlndXJhdGlvbiB1c2VyQ29u
dGVudENvbnRyb2xsZXJdIF9hZGRVc2VyU3R5bGVTaGVldDpzdHlsZVNoZWV0LmdldCgpXTsKKwor
ICAgIFJldGFpblB0cjxXS1dlYlZpZXc+IHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFs
bG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRp
b246Y29uZmlndXJhdGlvbi5nZXQoKV0pOworCisgICAgUmV0YWluUHRyPFNpbXBsZU5hdmlnYXRp
b25EZWxlZ2F0ZT4gZGVsZWdhdGUgPSBhZG9wdE5TKFtbU2ltcGxlTmF2aWdhdGlvbkRlbGVnYXRl
IGFsbG9jXSBpbml0XSk7CisgICAgW3dlYlZpZXcgc2V0TmF2aWdhdGlvbkRlbGVnYXRlOmRlbGVn
YXRlLmdldCgpXTsKKworICAgIFt3ZWJWaWV3IGxvYWRIVE1MU3RyaW5nOkAiPGJvZHkgc3R5bGU9
J2JhY2tncm91bmQtY29sb3I6IHJlZDsnPjwvYm9keT4iIGJhc2VVUkw6bmlsXTsKKyAgICBUZXN0
V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZVdpdGhOYXZpZ2F0aW9uKTsKKyAgICBpc0RvbmVX
aXRoTmF2aWdhdGlvbiA9IGZhbHNlOworCisgICAgZXhwZWN0U2NyaXB0RXZhbHVhdGVzVG9Db2xv
cih3ZWJWaWV3LmdldCgpLCBiYWNrZ3JvdW5kQ29sb3JTY3JpcHQsIGdyZWVuSW5SR0IpOworfQor
CitURVNUKFdLVXNlckNvbnRlbnRDb250cm9sbGVyLCBBZGRVc2VyU3R5bGVTaGVldEFmdGVyQ3Jl
YXRpbmdWaWV3KQoreworICAgIFJldGFpblB0cjxXS1dlYlZpZXc+IHdlYlZpZXcgPSBhZG9wdE5T
KFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2
MDApXSk7CisKKyAgICBSZXRhaW5QdHI8U2ltcGxlTmF2aWdhdGlvbkRlbGVnYXRlPiBkZWxlZ2F0
ZSA9IGFkb3B0TlMoW1tTaW1wbGVOYXZpZ2F0aW9uRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKKyAg
ICBbd2ViVmlldyBzZXROYXZpZ2F0aW9uRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOworCisgICAg
W3dlYlZpZXcgbG9hZEhUTUxTdHJpbmc6QCI8Ym9keSBzdHlsZT0nYmFja2dyb3VuZC1jb2xvcjog
cmVkOyc+PC9ib2R5PiIgYmFzZVVSTDpuaWxdOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1
bigmaXNEb25lV2l0aE5hdmlnYXRpb24pOworICAgIGlzRG9uZVdpdGhOYXZpZ2F0aW9uID0gZmFs
c2U7CisKKyAgICBleHBlY3RTY3JpcHRFdmFsdWF0ZXNUb0NvbG9yKHdlYlZpZXcuZ2V0KCksIGJh
Y2tncm91bmRDb2xvclNjcmlwdCwgcmVkSW5SR0IpOworCisgICAgUmV0YWluUHRyPF9XS1VzZXJT
dHlsZVNoZWV0PiBzdHlsZVNoZWV0ID0gYWRvcHROUyhbW19XS1VzZXJTdHlsZVNoZWV0IGFsbG9j
XSBpbml0V2l0aFNvdXJjZTpzdHlsZVNoZWV0U291cmNlIHdoaXRlbGlzdGVkVVJMUGF0dGVybnM6
QFsgXSBibGFja2xpc3RlZFVSTFBhdHRlcm5zOkBbIF0gZm9yTWFpbkZyYW1lT25seTpZRVNdKTsK
KyAgICBbW3dlYlZpZXcgY29uZmlndXJhdGlvbl0udXNlckNvbnRlbnRDb250cm9sbGVyIF9hZGRV
c2VyU3R5bGVTaGVldDpzdHlsZVNoZWV0LmdldCgpXTsKKworICAgIGV4cGVjdFNjcmlwdEV2YWx1
YXRlc1RvQ29sb3Iod2ViVmlldy5nZXQoKSwgYmFja2dyb3VuZENvbG9yU2NyaXB0LCBncmVlbklu
UkdCKTsKK30KKworVEVTVChXS1VzZXJDb250ZW50Q29udHJvbGxlciwgVXNlclN0eWxlU2hlZXRX
aGl0ZUFuZEJsYWNrTGlzdCkKK3sKKyAgICBSZXRhaW5QdHI8V0tXZWJWaWV3Q29uZmlndXJhdGlv
bj4gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9j
XSBpbml0XSk7CisKKyAgICBSZXRhaW5QdHI8X1dLVXNlclN0eWxlU2hlZXQ+IHN0eWxlU2hlZXQg
PSBhZG9wdE5TKFtbX1dLVXNlclN0eWxlU2hlZXQgYWxsb2NdIGluaXRXaXRoU291cmNlOnN0eWxl
U2hlZXRTb3VyY2Ugd2hpdGVsaXN0ZWRVUkxQYXR0ZXJuczpAWyBAImh0dHA6Ly9oYXBweS5leGFt
cGxlLmNvbS8iLCBAImh0dHA6Ly8qLmV4YW1wbGUyLmNvbS8iIF0gYmxhY2tsaXN0ZWRVUkxQYXR0
ZXJuczpAWyBAImh0dHA6Ly9zYWQuZXhhbXBsZS5jb20vIiBdIGZvck1haW5GcmFtZU9ubHk6WUVT
XSk7CisgICAgW1tjb25maWd1cmF0aW9uIHVzZXJDb250ZW50Q29udHJvbGxlcl0gX2FkZFVzZXJT
dHlsZVNoZWV0OnN0eWxlU2hlZXQuZ2V0KCldOworCisgICAgUmV0YWluUHRyPFdLV2ViVmlldz4g
d2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtl
UmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7
CisKKyAgICBSZXRhaW5QdHI8U2ltcGxlTmF2aWdhdGlvbkRlbGVnYXRlPiBkZWxlZ2F0ZSA9IGFk
b3B0TlMoW1tTaW1wbGVOYXZpZ2F0aW9uRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKKyAgICBbd2Vi
VmlldyBzZXROYXZpZ2F0aW9uRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOworCisgICAgLy8gVHJ5
IHNvbWV0aGluZyBvbiB0aGUgd2hpdGVsaXN0OgorCisgICAgW3dlYlZpZXcgbG9hZEhUTUxTdHJp
bmc6QCI8Ym9keSBzdHlsZT0nYmFja2dyb3VuZC1jb2xvcjogcmVkOyc+PC9ib2R5PiIgYmFzZVVS
TDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHA6Ly9oYXBweS5leGFtcGxlLmNvbS8iXV07Cisg
ICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmVXaXRoTmF2aWdhdGlvbik7CisgICAg
aXNEb25lV2l0aE5hdmlnYXRpb24gPSBmYWxzZTsKKworICAgIGV4cGVjdFNjcmlwdEV2YWx1YXRl
c1RvQ29sb3Iod2ViVmlldy5nZXQoKSwgYmFja2dyb3VuZENvbG9yU2NyaXB0LCBncmVlbkluUkdC
KTsKKworICAgIC8vIFRyeSBzb21ldGhpbmcgb24gdGhlIGJsYWNrbGlzdDoKKworICAgIFt3ZWJW
aWV3IGxvYWRIVE1MU3RyaW5nOkAiPGJvZHkgc3R5bGU9J2JhY2tncm91bmQtY29sb3I6IHJlZDsn
PjwvYm9keT4iIGJhc2VVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwOi8vc2FkLmV4YW1w
bGUuY29tLyJdXTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZVdpdGhOYXZp
Z2F0aW9uKTsKKyAgICBpc0RvbmVXaXRoTmF2aWdhdGlvbiA9IGZhbHNlOworCisgICAgZXhwZWN0
U2NyaXB0RXZhbHVhdGVzVG9Db2xvcih3ZWJWaWV3LmdldCgpLCBiYWNrZ3JvdW5kQ29sb3JTY3Jp
cHQsIHJlZEluUkdCKTsKKworICAgIC8vIFRyeSBzb21ldGhpbmcgb24gbmVpdGhlciBsaXN0Ogor
CisgICAgW3dlYlZpZXcgbG9hZEhUTUxTdHJpbmc6QCI8Ym9keSBzdHlsZT0nYmFja2dyb3VuZC1j
b2xvcjogcmVkOyc+PC9ib2R5PiIgYmFzZVVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHA6
Ly9tZWRpb2NyZS5leGFtcGxlLmNvbS8iXV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVu
KCZpc0RvbmVXaXRoTmF2aWdhdGlvbik7CisgICAgaXNEb25lV2l0aE5hdmlnYXRpb24gPSBmYWxz
ZTsKKworICAgIGV4cGVjdFNjcmlwdEV2YWx1YXRlc1RvQ29sb3Iod2ViVmlldy5nZXQoKSwgYmFj
a2dyb3VuZENvbG9yU2NyaXB0LCByZWRJblJHQik7CisKKyAgICAvLyBUcnkgc29tZXRoaW5nIHRo
YXQgbWF0Y2hlcyB0aGUgZ2xvYmJpbmcgcGF0dGVybiBpbiB0aGUgd2hpdGVsaXN0OgorCisgICAg
W3dlYlZpZXcgbG9hZEhUTUxTdHJpbmc6QCI8Ym9keSBzdHlsZT0nYmFja2dyb3VuZC1jb2xvcjog
cmVkOyc+PC9ib2R5PiIgYmFzZVVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHA6Ly9hbnl0
aGluZy5leGFtcGxlMi5jb20vIl1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNE
b25lV2l0aE5hdmlnYXRpb24pOworICAgIGlzRG9uZVdpdGhOYXZpZ2F0aW9uID0gZmFsc2U7CisK
KyAgICBleHBlY3RTY3JpcHRFdmFsdWF0ZXNUb0NvbG9yKHdlYlZpZXcuZ2V0KCksIGJhY2tncm91
bmRDb2xvclNjcmlwdCwgZ3JlZW5JblJHQik7Cit9CisKK1RFU1QoV0tVc2VyQ29udGVudENvbnRy
b2xsZXIsIFVzZXJTdHlsZVNoZWV0QWZmZWN0aW5nT25seU1haW5GcmFtZSkKK3sKKyAgICBSZXRh
aW5QdHI8V0tXZWJWaWV3Q29uZmlndXJhdGlvbj4gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tX
S1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisKKyAgICBSZXRhaW5QdHI8X1dL
VXNlclN0eWxlU2hlZXQ+IHN0eWxlU2hlZXQgPSBhZG9wdE5TKFtbX1dLVXNlclN0eWxlU2hlZXQg
YWxsb2NdIGluaXRXaXRoU291cmNlOnN0eWxlU2hlZXRTb3VyY2Ugd2hpdGVsaXN0ZWRVUkxQYXR0
ZXJuczpAWyBdIGJsYWNrbGlzdGVkVVJMUGF0dGVybnM6QFsgXSBmb3JNYWluRnJhbWVPbmx5OllF
U10pOworICAgIFtbY29uZmlndXJhdGlvbiB1c2VyQ29udGVudENvbnRyb2xsZXJdIF9hZGRVc2Vy
U3R5bGVTaGVldDpzdHlsZVNoZWV0LmdldCgpXTsKKworICAgIFJldGFpblB0cjxXS1dlYlZpZXc+
IHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFr
ZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0p
OworCisgICAgUmV0YWluUHRyPFNpbXBsZU5hdmlnYXRpb25EZWxlZ2F0ZT4gZGVsZWdhdGUgPSBh
ZG9wdE5TKFtbU2ltcGxlTmF2aWdhdGlvbkRlbGVnYXRlIGFsbG9jXSBpbml0XSk7CisgICAgW3dl
YlZpZXcgc2V0TmF2aWdhdGlvbkRlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKKworICAgIFt3ZWJW
aWV3IGxvYWRIVE1MU3RyaW5nOkAiPGJvZHkgc3R5bGU9J2JhY2tncm91bmQtY29sb3I6IHJlZDsn
PjxpZnJhbWU+PC9pZnJhbWU+PC9ib2R5PiIgYmFzZVVSTDpuaWxdOworICAgIFRlc3RXZWJLaXRB
UEk6OlV0aWw6OnJ1bigmaXNEb25lV2l0aE5hdmlnYXRpb24pOworICAgIGlzRG9uZVdpdGhOYXZp
Z2F0aW9uID0gZmFsc2U7CisKKyAgICAvLyBUaGUgbWFpbiBmcmFtZSBzaG91bGQgYmUgYWZmZWN0
ZWQuCisgICAgZXhwZWN0U2NyaXB0RXZhbHVhdGVzVG9Db2xvcih3ZWJWaWV3LmdldCgpLCBiYWNr
Z3JvdW5kQ29sb3JTY3JpcHQsIGdyZWVuSW5SR0IpOworCisgICAgLy8gVGhlIHN1YmZyYW1lIHNo
b3VsZG4ndCBiZSBhZmZlY3RlZC4KKyAgICBleHBlY3RTY3JpcHRFdmFsdWF0ZXNUb0NvbG9yKHdl
YlZpZXcuZ2V0KCksIGZyYW1lQmFja2dyb3VuZENvbG9yU2NyaXB0LCB3aGl0ZUluUkdCKTsKK30K
KworVEVTVChXS1VzZXJDb250ZW50Q29udHJvbGxlciwgVXNlclN0eWxlU2hlZXRBZmZlY3RpbmdB
bGxGcmFtZXMpCit7CisgICAgUmV0YWluUHRyPFdLV2ViVmlld0NvbmZpZ3VyYXRpb24+IGNvbmZp
Z3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0p
OworCisgICAgUmV0YWluUHRyPF9XS1VzZXJTdHlsZVNoZWV0PiBzdHlsZVNoZWV0ID0gYWRvcHRO
UyhbW19XS1VzZXJTdHlsZVNoZWV0IGFsbG9jXSBpbml0V2l0aFNvdXJjZTpzdHlsZVNoZWV0U291
cmNlIHdoaXRlbGlzdGVkVVJMUGF0dGVybnM6QFsgXSBibGFja2xpc3RlZFVSTFBhdHRlcm5zOkBb
IF0gZm9yTWFpbkZyYW1lT25seTpOT10pOworICAgIFtbY29uZmlndXJhdGlvbiB1c2VyQ29udGVu
dENvbnRyb2xsZXJdIF9hZGRVc2VyU3R5bGVTaGVldDpzdHlsZVNoZWV0LmdldCgpXTsKKworICAg
IFJldGFpblB0cjxXS1dlYlZpZXc+IHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9j
XSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246
Y29uZmlndXJhdGlvbi5nZXQoKV0pOworCisgICAgUmV0YWluUHRyPFNpbXBsZU5hdmlnYXRpb25E
ZWxlZ2F0ZT4gZGVsZWdhdGUgPSBhZG9wdE5TKFtbU2ltcGxlTmF2aWdhdGlvbkRlbGVnYXRlIGFs
bG9jXSBpbml0XSk7CisgICAgW3dlYlZpZXcgc2V0TmF2aWdhdGlvbkRlbGVnYXRlOmRlbGVnYXRl
LmdldCgpXTsKKworICAgIFt3ZWJWaWV3IGxvYWRIVE1MU3RyaW5nOkAiPGJvZHkgc3R5bGU9J2Jh
Y2tncm91bmQtY29sb3I6IHJlZDsnPjxpZnJhbWU+PC9pZnJhbWU+PC9ib2R5PiIgYmFzZVVSTDpu
aWxdOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lV2l0aE5hdmlnYXRpb24p
OworICAgIGlzRG9uZVdpdGhOYXZpZ2F0aW9uID0gZmFsc2U7CisKKyAgICAvLyBUaGUgbWFpbiBm
cmFtZSBzaG91bGQgYmUgYWZmZWN0ZWQuCisgICAgZXhwZWN0U2NyaXB0RXZhbHVhdGVzVG9Db2xv
cih3ZWJWaWV3LmdldCgpLCBiYWNrZ3JvdW5kQ29sb3JTY3JpcHQsIGdyZWVuSW5SR0IpOworCisg
ICAgLy8gVGhlIHN1YmZyYW1lIHNob3VsZCBhbHNvIGJlIGFmZmVjdGVkLgorICAgIGV4cGVjdFNj
cmlwdEV2YWx1YXRlc1RvQ29sb3Iod2ViVmlldy5nZXQoKSwgZnJhbWVCYWNrZ3JvdW5kQ29sb3JT
Y3JpcHQsIGdyZWVuSW5SR0IpOworfQorCiAjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>264003</attachid>
            <date>2015-10-24 22:47:01 -0700</date>
            <delta_ts>2015-10-24 22:47:01 -0700</delta_ts>
            <desc>try to fix iOS</desc>
            <filename>bug-150531-20151024224614.patch</filename>
            <type>text/plain</type>
            <size>38662</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkxNTQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNGI0YTcwYTZjMzVkMDZl
NGE5YjBjOGU3ZTQ2YTYzNTEyOTc3ZjQ0Yi4uNjMwMGJhMjQ3MTViYWM5ZTRmY2I3ZDk0N2JlYjg0
MmVmZTY4MTQwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQzIEBACiAyMDE1LTEwLTI0ICBUaW0g
SG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCisgICAgICAgIEFkZCBhIHdheSB0
byBhZGQgdXNlciBzdHlsZSBzaGVldHMgdG8gV0tVc2VyQ29udGVudENvbnRyb2xsZXIKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MDUzMQorICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vMjMxOTE2OTE+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4g
QWRsZXIuCisKKyAgICAgICAgKiBTaGFyZWQvQVBJL0FQSU9iamVjdC5oOgorICAgICAgICAqIFNo
YXJlZC9Db2NvYS9BUElPYmplY3QubW06CisgICAgICAgIChBUEk6Ok9iamVjdDo6bmV3T2JqZWN0
KToKKyAgICAgICAgQm9pbGVycGxhdGUgZm9yIGEgbmV3IEFQSTo6VXNlclN0eWxlU2hlZXQuCisK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVVzZXJTdHlsZVNoZWV0LmNwcDogQWRkZWQuCisg
ICAgICAgIChBUEk6OmdlbmVyYXRlSWRlbnRpZmllcik6CisgICAgICAgIChBUEk6OlVzZXJTdHls
ZVNoZWV0OjpnZW5lcmF0ZVVuaXF1ZVVSTCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElV
c2VyU3R5bGVTaGVldC5oOiBBZGRlZC4KKyAgICAgICAgQWRkZWQgQVBJOjpVc2VyU3R5bGVTaGVl
dCwgYm9ycm93aW5nIFVSTCBnZW5lcmF0aW9uIGNvZGUgZnJvbSBBUEk6OlVzZXJTY3JpcHQuCisK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlckNvbnRlbnRDb250cm9sbGVyLm1t
OgorICAgICAgICAoLVtXS1VzZXJDb250ZW50Q29udHJvbGxlciBfYWRkVXNlclN0eWxlU2hlZXQ6
XSk6CisgICAgICAgICgtW1dLVXNlckNvbnRlbnRDb250cm9sbGVyIF9yZW1vdmVBbGxVc2VyU3R5
bGVTaGVldHNdKToKKyAgICAgICAgRm9yd2FyZCBhZGQgYW5kIHJlbW92ZS1hbGwgdG8gV2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyUHJveHkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29h
L1dLVXNlckNvbnRlbnRDb250cm9sbGVyUHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQ29jb2EvX1dLVXNlclN0eWxlU2hlZXQuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tVc2VyU3R5bGVTaGVldC5tbTogQWRkZWQuCisgICAgICAgICh0b1dURlN0
cmluZ3MpOgorICAgICAgICAoLVtfV0tVc2VyU3R5bGVTaGVldCBpbml0V2l0aFNvdXJjZTp3aGl0
ZWxpc3RlZFVSTFBhdHRlcm5zOmJsYWNrbGlzdGVkVVJMUGF0dGVybnM6Zm9yTWFpbkZyYW1lT25s
eTpdKToKKyAgICAgICAgKC1bX1dLVXNlclN0eWxlU2hlZXQgc291cmNlXSk6CisgICAgICAgICgt
W19XS1VzZXJTdHlsZVNoZWV0IGlzRm9yTWFpbkZyYW1lT25seV0pOgorICAgICAgICAoLVtfV0tV
c2VyU3R5bGVTaGVldCBjb3B5V2l0aFpvbmU6XSk6CisgICAgICAgICgtW19XS1VzZXJTdHlsZVNo
ZWV0IF9hcGlPYmplY3RdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS1VzZXJT
dHlsZVNoZWV0SW50ZXJuYWwuaDogQWRkZWQuCisgICAgICAgIChBUEk6OndyYXBwZXIpOgorICAg
ICAgICAqIFdlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgQWRkIHRo
ZSBuZXcgbW9kZXJuIEFQSSBvYmplY3QgKGFzIFNQSSBmb3Igbm93KS4KKworMjAxNS0xMC0yNCAg
VGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KKwogICAgICAgICBFeHBvc2Ug
bW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgZXhjZXB0aW9uIGluIFdLRXJyb3JKYXZhU2NyaXB0
RXhjZXB0aW9uT2NjdXJyZWQgZXJyb3JzCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNTA1MjUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hh
cmVkL0FQSS9BUElPYmplY3QuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvQVBJT2JqZWN0
LmgKaW5kZXggYTUxMjNjNjY3MDZhMzg5Zjc0OWQ0ODA2NTM1ZjA4MjQyOTRjMzIzYS4uMTMwNzJl
YTE3OTA0MGNlZDNkN2Q4YWUyODQ2OTAzZjc1ZThkYzM1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvU2hhcmVkL0FQSS9BUElPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
QVBJL0FQSU9iamVjdC5oCkBAIC04Miw2ICs4Miw3IEBAIHB1YmxpYzoKICAgICAgICAgVVJMUmVz
cG9uc2UsCiAgICAgICAgIFVzZXJDb250ZW50VVJMUGF0dGVybiwKICAgICAgICAgVXNlclNjcmlw
dCwKKyAgICAgICAgVXNlclN0eWxlU2hlZXQsCiAgICAgICAgIFdlYkFyY2hpdmUsCiAgICAgICAg
IFdlYkFyY2hpdmVSZXNvdXJjZSwKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVk
L0NvY29hL0FQSU9iamVjdC5tbSBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db2NvYS9BUElPYmpl
Y3QubW0KaW5kZXggY2IyNGQxNTg5NzAyYjczMzVlMjYyOTM4Njg4NDhmN2UxNjQ2NDc4Ny4uNmM5
OTcyOTQ0YjkyODU2ODBhODA4YmVmODJkZDRkYTNlNzA4YjRhYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvU2hhcmVkL0NvY29hL0FQSU9iamVjdC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvQ29jb2EvQVBJT2JqZWN0Lm1tCkBAIC02Nyw2ICs2Nyw3IEBACiAjaW1wb3J0ICJfV0tQ
cm9jZXNzUG9vbENvbmZpZ3VyYXRpb25JbnRlcm5hbC5oIgogI2ltcG9ydCAiX1dLVXNlckNvbnRl
bnRFeHRlbnNpb25TdG9yZUludGVybmFsLmgiCiAjaW1wb3J0ICJfV0tVc2VyQ29udGVudEZpbHRl
ckludGVybmFsLmgiCisjaW1wb3J0ICJfV0tVc2VyU3R5bGVTaGVldEludGVybmFsLmgiCiAjaW1w
b3J0ICJfV0tWaXNpdGVkTGlua1N0b3JlSW50ZXJuYWwuaCIKICNpbXBvcnQgPG9iamMvb2JqYy1h
dXRvLmg+CiAKQEAgLTIxMSw2ICsyMTIsMTAgQEAgdm9pZCogT2JqZWN0OjpuZXdPYmplY3Qoc2l6
ZV90IHNpemUsIFR5cGUgdHlwZSkKICAgICAgICAgd3JhcHBlciA9IFtXS1VzZXJTY3JpcHQgYWxs
b2NdOwogICAgICAgICBicmVhazsKIAorICAgIGNhc2UgVHlwZTo6VXNlclN0eWxlU2hlZXQ6Cisg
ICAgICAgIHdyYXBwZXIgPSBbX1dLVXNlclN0eWxlU2hlZXQgYWxsb2NdOworICAgICAgICBicmVh
azsKKwogICAgIGNhc2UgVHlwZTo6VmlzaXRlZExpbmtTdG9yZToKICAgICAgICAgd3JhcHBlciA9
IFtfV0tWaXNpdGVkTGlua1N0b3JlIGFsbG9jXTsKICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVVzZXJTY3JpcHQuY3BwIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElVc2VyU2NyaXB0LmNwcAppbmRleCBiNTI4M2NlYWVl
ZjU0NTNmZTM4OWVkOTc0NWFmMmFiYzQwYzBlNWEzLi44NGVhNmExYzhlYzFiZjJjYmNkYTNkYjUy
ZjQ0ZTg3MTNmMTliYzQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0FQSVVzZXJTY3JpcHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJ
VXNlclNjcmlwdC5jcHAKQEAgLTQyLDcgKzQyLDcgQEAgV2ViQ29yZTo6VVJMIFVzZXJTY3JpcHQ6
OmdlbmVyYXRlVW5pcXVlVVJMKCkKICAgICBTdHJpbmdCdWlsZGVyIHVybFN0cmluZ0J1aWxkZXI7
CiAgICAgdXJsU3RyaW5nQnVpbGRlci5hcHBlbmRMaXRlcmFsKCJ1c2VyLXNjcmlwdDoiKTsKICAg
ICB1cmxTdHJpbmdCdWlsZGVyLmFwcGVuZE51bWJlcihnZW5lcmF0ZUlkZW50aWZpZXIoKSk7Ci0g
ICAgcmV0dXJuIFdlYkNvcmU6OlVSTCB7IFdlYkNvcmU6OlVSTCB7IH0sIHVybFN0cmluZ0J1aWxk
ZXIudG9TdHJpbmcoKSB9OworICAgIHJldHVybiB7IHsgfSwgdXJsU3RyaW5nQnVpbGRlci50b1N0
cmluZygpIH07CiB9CiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9BUElVc2VyU2NyaXB0LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVVzZXJT
Y3JpcHQuaAppbmRleCA0NzlmNTNlZGQyZTYyNWIzYmIxYmU1YmEzZmVjZWExMDFmNmQyNWQ5Li5h
NGEyMDdmMzIwYWM1NTdjYmIyYTU1ZDc5YTcwN2MxZWFiZmU5YzM5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVVzZXJTY3JpcHQuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVVzZXJTY3JpcHQuaApAQCAtMzcsNyArMzcsNyBAQCBwdWJs
aWM6CiAKICAgICBzdGF0aWMgUmVmPFVzZXJTY3JpcHQ+IGNyZWF0ZShXZWJDb3JlOjpVc2VyU2Ny
aXB0IHVzZXJTY3JpcHQpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBVc2Vy
U2NyaXB0KHVzZXJTY3JpcHQpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVXNlclNj
cmlwdChXVEY6Om1vdmUodXNlclNjcmlwdCkpKTsKICAgICB9CiAKICAgICBVc2VyU2NyaXB0KFdl
YkNvcmU6OlVzZXJTY3JpcHQgdXNlclNjcmlwdCkKQEAgLTQ1LDExICs0NSw2IEBAIHB1YmxpYzoK
ICAgICB7CiAgICAgfQogCi0gICAgflVzZXJTY3JpcHQoKQotICAgIHsKLSAgICB9Ci0KLSAgICBX
ZWJDb3JlOjpVc2VyU2NyaXB0JiB1c2VyU2NyaXB0KCkgeyByZXR1cm4gbV91c2VyU2NyaXB0OyB9
CiAgICAgY29uc3QgV2ViQ29yZTo6VXNlclNjcmlwdCYgdXNlclNjcmlwdCgpIGNvbnN0IHsgcmV0
dXJuIG1fdXNlclNjcmlwdDsgfQogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9BUElVc2VyU3R5bGVTaGVldC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0FQSVVzZXJTdHlsZVNoZWV0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wYzFiMmFjMjI2
YjQ4NmNlNzVhYTYwOGFjODAwNjU5YWUwZWYzMGMzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElVc2VyU3R5bGVTaGVldC5jcHAKQEAgLTAsMCArMSw0
OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJBUElVc2Vy
U3R5bGVTaGVldC5oIgorCisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgorCitu
YW1lc3BhY2UgQVBJIHsKKworc3RhdGljIHVpbnQ2NF90IGdlbmVyYXRlSWRlbnRpZmllcigpCit7
CisgICAgc3RhdGljIHVpbnQ2NF90IGlkZW50aWZpZXI7CisKKyAgICByZXR1cm4gKytpZGVudGlm
aWVyOworfQorCitXZWJDb3JlOjpVUkwgVXNlclN0eWxlU2hlZXQ6OmdlbmVyYXRlVW5pcXVlVVJM
KCkKK3sKKyAgICBTdHJpbmdCdWlsZGVyIHVybFN0cmluZ0J1aWxkZXI7CisgICAgdXJsU3RyaW5n
QnVpbGRlci5hcHBlbmRMaXRlcmFsKCJ1c2VyLXN0eWxlLXNoZWV0OiIpOworICAgIHVybFN0cmlu
Z0J1aWxkZXIuYXBwZW5kTnVtYmVyKGdlbmVyYXRlSWRlbnRpZmllcigpKTsKKyAgICByZXR1cm4g
eyB7IH0sIHVybFN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKSB9OworfQorCisKK30gLy8gbmFtZXNw
YWNlIEFQSQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElVc2Vy
U3R5bGVTaGVldC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElVc2VyU3R5bGVT
aGVldC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmFjNTc1NGNhY2FjYjZmMGJhNGJlY2NiNTE3MWI2ZmU1NWI0Yzc1
NTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVVz
ZXJTdHlsZVNoZWV0LmgKQEAgLTAsMCArMSw1MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgQVBJ
VXNlclN0eWxlU2hlZXRfaAorI2RlZmluZSBBUElVc2VyU3R5bGVTaGVldF9oCisKKyNpbmNsdWRl
ICJBUElPYmplY3QuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1VzZXJTdHlsZVNoZWV0Lmg+CisKK25h
bWVzcGFjZSBBUEkgeworCitjbGFzcyBVc2VyU3R5bGVTaGVldCBmaW5hbCA6IHB1YmxpYyBPYmpl
Y3RJbXBsPE9iamVjdDo6VHlwZTo6VXNlclN0eWxlU2hlZXQ+IHsKK3B1YmxpYzoKKyAgICBzdGF0
aWMgV2ViQ29yZTo6VVJMIGdlbmVyYXRlVW5pcXVlVVJMKCk7CisKKyAgICBVc2VyU3R5bGVTaGVl
dChXZWJDb3JlOjpVc2VyU3R5bGVTaGVldCB1c2VyU3R5bGVTaGVldCkKKyAgICAgICAgOiBtX3Vz
ZXJTdHlsZVNoZWV0KHVzZXJTdHlsZVNoZWV0KQorICAgIHsKKyAgICB9CisKKyAgICBjb25zdCBX
ZWJDb3JlOjpVc2VyU3R5bGVTaGVldCYgdXNlclN0eWxlU2hlZXQoKSBjb25zdCB7IHJldHVybiBt
X3VzZXJTdHlsZVNoZWV0OyB9CisKK3ByaXZhdGU6CisgICAgV2ViQ29yZTo6VXNlclN0eWxlU2hl
ZXQgbV91c2VyU3R5bGVTaGVldDsKK307CisKK30gLy8gbmFtZXNwYWNlIEFQSQorCisjZW5kaWYg
Ly8gQVBJVXNlclN0eWxlU2hlZXRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1VzZXJDb250ZW50Q29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2VyQ29udGVudENvbnRyb2xsZXIubW0KaW5kZXggOGRi
NWZkZDA2OGNmNjFjNzIzZjE5NTBlNjMwOTY4ZjM4NmRlOWQyZi4uZmU2ZDYwY2M1MmM1MDQ2YTBi
ZGE1NTg5YWFiZmUyNGIzZGE1NjZlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1VzZXJDb250ZW50Q29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlckNvbnRlbnRDb250cm9sbGVyLm1tCkBAIC0z
OCw2ICszOCw3IEBACiAjaW1wb3J0ICJXZWJTY3JpcHRNZXNzYWdlSGFuZGxlci5oIgogI2ltcG9y
dCAiV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuaCIKICNpbXBvcnQgIl9XS1VzZXJDb250
ZW50RmlsdGVySW50ZXJuYWwuaCIKKyNpbXBvcnQgIl9XS1VzZXJTdHlsZVNoZWV0SW50ZXJuYWwu
aCIKICNpbXBvcnQgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4uaD4KICNpbXBvcnQgPFdlYkNvcmUv
U2VjdXJpdHlPcmlnaW5EYXRhLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NlcmlhbGl6ZWRTY3JpcHRW
YWx1ZS5oPgpAQCAtMTQ2LDYgKzE0NywxNiBAQCBwcml2YXRlOgogI2VuZGlmCiB9CiAKKy0gKHZv
aWQpX2FkZFVzZXJTdHlsZVNoZWV0OihfV0tVc2VyU3R5bGVTaGVldCAqKXVzZXJTdHlsZVNoZWV0
Cit7CisgICAgX3VzZXJDb250ZW50Q29udHJvbGxlclByb3h5LT5hZGRVc2VyU3R5bGVTaGVldCh1
c2VyU3R5bGVTaGVldC0+X3VzZXJTdHlsZVNoZWV0LT51c2VyU3R5bGVTaGVldCgpKTsKK30KKwor
LSAodm9pZClfcmVtb3ZlQWxsVXNlclN0eWxlU2hlZXRzCit7CisgICAgX3VzZXJDb250ZW50Q29u
dHJvbGxlclByb3h5LT5yZW1vdmVBbGxVc2VyU3R5bGVTaGVldHMoKTsKK30KKwogQGVuZAogCiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tV
c2VyQ29udGVudENvbnRyb2xsZXJQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLVXNlckNvbnRlbnRDb250cm9sbGVyUHJpdmF0ZS5oCmluZGV4IDI3OTg1MWVk
NjZlNzAxYTcxYzRjNWRlODcxOTZmMWJlYmY4ZjUwYjYuLjNkZjVhNjU4MmQyODZhM2IyMDFlOWZm
ZWMyMGVhNmRhMGEwMDA5YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tVc2VyQ29udGVudENvbnRyb2xsZXJQcml2YXRlLmgKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJDb250ZW50Q29udHJvbGxlclByaXZhdGUu
aApAQCAtMjgsNiArMjgsNyBAQAogI2lmIFdLX0FQSV9FTkFCTEVECiAKIEBjbGFzcyBfV0tVc2Vy
Q29udGVudEZpbHRlcjsKK0BjbGFzcyBfV0tVc2VyU3R5bGVTaGVldDsKIAogQGludGVyZmFjZSBX
S1VzZXJDb250ZW50Q29udHJvbGxlciAoV0tQcml2YXRlKQogCkBAIC0zNSw2ICszNiw5IEBACiAt
ICh2b2lkKV9yZW1vdmVVc2VyQ29udGVudEZpbHRlcjooTlNTdHJpbmcgKil1c2VyQ29udGVudEZp
bHRlck5hbWUgV0tfQVZBSUxBQkxFKDEwXzExLCA5XzApOwogLSAodm9pZClfcmVtb3ZlQWxsVXNl
ckNvbnRlbnRGaWx0ZXJzIFdLX0FWQUlMQUJMRSgxMF8xMSwgOV8wKTsKIAorLSAodm9pZClfYWRk
VXNlclN0eWxlU2hlZXQ6KF9XS1VzZXJTdHlsZVNoZWV0ICopdXNlclN0eWxlU2hlZXQgV0tfQVZB
SUxBQkxFKFdLX01BQ19UQkEsIFdLX0lPU19UQkEpOworLSAodm9pZClfcmVtb3ZlQWxsVXNlclN0
eWxlU2hlZXRzIFdLX0FWQUlMQUJMRShXS19NQUNfVEJBLCBXS19JT1NfVEJBKTsKKwogQGVuZAog
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLVXNlclN0eWxlU2hlZXQuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLVXNlclN0eWxlU2hlZXQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45OTE1YmYwOGM5NThkNjI3Y2FkNGZkZjFk
MzEwN2I3YmJmZGIyODc0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9fV0tVc2VyU3R5bGVTaGVldC5oCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW1wb3J0IDxXZWJLaXQvV0tGb3VuZGF0aW9uLmg+CisKKyNpZiBXS19BUElfRU5B
QkxFRAorCisjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KKworV0tfQVNTVU1FX05P
Tk5VTExfQkVHSU4KKworV0tfQ0xBU1NfQVZBSUxBQkxFKFdLX01BQ19UQkEsIFdLX0lPU19UQkEp
CitAaW50ZXJmYWNlIF9XS1VzZXJTdHlsZVNoZWV0IDogTlNPYmplY3QgPE5TQ29weWluZz4KKwor
QHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBjb3B5KSBOU1N0cmluZyAqc291cmNlOwor
CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIGNvcHkpIFdLX0FSUkFZKE5TU3RyaW5n
ICopICp3aGl0ZWxpc3RlZFVSTFBhdHRlcm5zOworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRv
bmx5LCBjb3B5KSBXS19BUlJBWShOU1N0cmluZyAqKSAqYmxhY2tsaXN0ZWRVUkxQYXR0ZXJuczsK
KworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBnZXR0ZXI9aXNGb3JNYWluRnJhbWVP
bmx5KSBCT09MIGZvck1haW5GcmFtZU9ubHk7CisKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aFNv
dXJjZTooTlNTdHJpbmcgKilzb3VyY2Ugd2hpdGVsaXN0ZWRVUkxQYXR0ZXJuczooV0tfQVJSQVko
TlNTdHJpbmcgKikgKil3aGl0ZWxpc3RlZFVSTFBhdHRlcm5zIGJsYWNrbGlzdGVkVVJMUGF0dGVy
bnM6KFdLX0FSUkFZKE5TU3RyaW5nICopICopYmxhY2tsaXN0ZWRVUkxQYXR0ZXJucyBmb3JNYWlu
RnJhbWVPbmx5OihCT09MKWZvck1haW5GcmFtZU9ubHk7CisKK0BlbmQKKworV0tfQVNTVU1FX05P
Tk5VTExfRU5ECisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tVc2VyU3R5bGVTaGVldC5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQ29jb2EvX1dLVXNlclN0eWxlU2hlZXQubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjA0MDYwMTY2MzQw
NmUzZTM5ZTc1ODJjZDQyMGQ1ZTYzYjQyMTAwNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVXNlclN0eWxlU2hlZXQubW0KQEAgLTAsMCAr
MSw5NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiX1dLVXNl
clN0eWxlU2hlZXRJbnRlcm5hbC5oIgorCisjaW1wb3J0ICJBUElBcnJheS5oIgorI2ltcG9ydCAi
V0tOU0FycmF5LmgiCisjaW1wb3J0ICJXZWJLaXQySW5pdGlhbGl6ZS5oIgorCisjaWYgV0tfQVBJ
X0VOQUJMRUQKKworQGltcGxlbWVudGF0aW9uIF9XS1VzZXJTdHlsZVNoZWV0CisKK3N0YXRpYyBW
ZWN0b3I8U3RyaW5nPiB0b1dURlN0cmluZ3MoTlNBcnJheSAqc3RyaW5ncykKK3sKKyAgICBWZWN0
b3I8U3RyaW5nPiByZXN1bHQ7CisgICAgcmVzdWx0LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoc3Ry
aW5ncy5jb3VudCk7CisKKyAgICBmb3IgKE5TU3RyaW5nICpzdHJpbmcgaW4gc3RyaW5ncykKKyAg
ICAgICAgcmVzdWx0LnVuY2hlY2tlZEFwcGVuZChzdHJpbmcpOworCisgICAgcmV0dXJuIHJlc3Vs
dDsKK30KKworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoU291cmNlOihOU1N0cmluZyAqKXNvdXJj
ZSB3aGl0ZWxpc3RlZFVSTFBhdHRlcm5zOihOU0FycmF5ICopd2hpdGVsaXN0ZWRVUkxQYXR0ZXJu
cyBibGFja2xpc3RlZFVSTFBhdHRlcm5zOihOU0FycmF5ICopYmxhY2tsaXN0ZWRVUkxQYXR0ZXJu
cyBmb3JNYWluRnJhbWVPbmx5OihCT09MKWZvck1haW5GcmFtZU9ubHkKK3sKKyAgICBpZiAoIShz
ZWxmID0gW3N1cGVyIGluaXRdKSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIC8vIEZJWE1F
OiBJbiB0aGUgQVBJIHRlc3QsIHdlIGNhbiB1c2UgZ2VuZXJhdGVVbmlxdWVVUkwgYmVsb3cgYmVm
b3JlIHRoZSBBUEk6Ok9iamVjdCBjb25zdHJ1Y3RvciBoYXMgZG9uZSB0aGlzLi4uIHdoZXJlIHNo
b3VsZCB0aGlzIHJlYWxseSBiZT8KKyAgICBXZWJLaXQ6OkluaXRpYWxpemVXZWJLaXQyKCk7CisK
KyAgICBBUEk6Ok9iamVjdDo6Y29uc3RydWN0SW5XcmFwcGVyPEFQSTo6VXNlclN0eWxlU2hlZXQ+
KHNlbGYsIFdlYkNvcmU6OlVzZXJTdHlsZVNoZWV0IHsgV1RGOjpTdHJpbmcoc291cmNlKSwgQVBJ
OjpVc2VyU3R5bGVTaGVldDo6Z2VuZXJhdGVVbmlxdWVVUkwoKSwgdG9XVEZTdHJpbmdzKHdoaXRl
bGlzdGVkVVJMUGF0dGVybnMpLCB0b1dURlN0cmluZ3MoYmxhY2tsaXN0ZWRVUkxQYXR0ZXJucyks
IGZvck1haW5GcmFtZU9ubHkgPyBXZWJDb3JlOjpJbmplY3RJblRvcEZyYW1lT25seSA6IFdlYkNv
cmU6OkluamVjdEluQWxsRnJhbWVzLCBXZWJDb3JlOjpVc2VyU3R5bGVVc2VyTGV2ZWwgfSk7CisK
KyAgICByZXR1cm4gc2VsZjsKK30KKworLSAoTlNTdHJpbmcgKilzb3VyY2UKK3sKKyAgICByZXR1
cm4gX3VzZXJTdHlsZVNoZWV0LT51c2VyU3R5bGVTaGVldCgpLnNvdXJjZSgpOworfQorCistIChO
U0FycmF5ICopd2hpdGVsaXN0ZWRVUkxQYXR0ZXJucworeworICAgIHJldHVybiB3cmFwcGVyKEFQ
STo6QXJyYXk6OmNyZWF0ZVN0cmluZ0FycmF5KF91c2VyU3R5bGVTaGVldC0+dXNlclN0eWxlU2hl
ZXQoKS53aGl0ZWxpc3QoKSkpOworfQorCistIChOU0FycmF5ICopYmxhY2tsaXN0ZWRVUkxQYXR0
ZXJucworeworICAgIHJldHVybiB3cmFwcGVyKEFQSTo6QXJyYXk6OmNyZWF0ZVN0cmluZ0FycmF5
KF91c2VyU3R5bGVTaGVldC0+dXNlclN0eWxlU2hlZXQoKS5ibGFja2xpc3QoKSkpOworfQorCist
IChCT09MKWlzRm9yTWFpbkZyYW1lT25seQoreworICAgIHJldHVybiBfdXNlclN0eWxlU2hlZXQt
PnVzZXJTdHlsZVNoZWV0KCkuaW5qZWN0ZWRGcmFtZXMoKSA9PSBXZWJDb3JlOjpJbmplY3RJblRv
cEZyYW1lT25seTsKK30KKworLSAoaWQpY29weVdpdGhab25lOihOU1pvbmUgKil6b25lCit7Cisg
ICAgcmV0dXJuIFtzZWxmIHJldGFpbl07Cit9CisKKyNwcmFnbWEgbWFyayBXS09iamVjdCBwcm90
b2NvbCBpbXBsZW1lbnRhdGlvbgorCistIChBUEk6Ok9iamVjdCYpX2FwaU9iamVjdAoreworICAg
IHJldHVybiAqX3VzZXJTdHlsZVNoZWV0OworfQorCitAZW5kCisKKyNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tVc2VyU3R5bGVTaGVldElu
dGVybmFsLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1VzZXJTdHls
ZVNoZWV0SW50ZXJuYWwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNDRjMDgzYWQ0NzhmOGIwNjU4NTk3Yzk2OTlh
YTQ3OTJhMzllZDBhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tVc2VyU3R5bGVTaGVldEludGVybmFsLmgKQEAgLTAsMCArMSw0OSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbXBvcnQgIl9XS1VzZXJTdHlsZVNoZWV0LmgiCisKKyNpZiBXS19BUElf
RU5BQkxFRAorCisjaW1wb3J0ICJBUElVc2VyU3R5bGVTaGVldC5oIgorI2ltcG9ydCA8d3RmL1Jl
dGFpblB0ci5oPgorCituYW1lc3BhY2UgQVBJIHsKKworaW5saW5lIF9XS1VzZXJTdHlsZVNoZWV0
ICp3cmFwcGVyKFVzZXJTdHlsZVNoZWV0JiB1c2VyU3R5bGVTaGVldCkKK3sKKyAgICBBU1NFUlQo
W3VzZXJTdHlsZVNoZWV0LndyYXBwZXIoKSBpc0tpbmRPZkNsYXNzOltfV0tVc2VyU3R5bGVTaGVl
dCBjbGFzc11dKTsKKyAgICByZXR1cm4gKF9XS1VzZXJTdHlsZVNoZWV0ICopdXNlclN0eWxlU2hl
ZXQud3JhcHBlcigpOworfQorCit9CisKK0BpbnRlcmZhY2UgX1dLVXNlclN0eWxlU2hlZXQgKCkg
PFdLT2JqZWN0PiB7CitAcGFja2FnZQorICAgIEFQSTo6T2JqZWN0U3RvcmFnZTxBUEk6OlVzZXJT
dHlsZVNoZWV0PiBfdXNlclN0eWxlU2hlZXQ7Cit9CitAZW5kCisKKyNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291
cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDZiOTkz
ODUzZmYyODU1YWI2YjQ1ZjYxZTVjMzNjZjQwMWM1MWIzOTUuLmUzYjg2MTQ0OTM0MDg0NzVjYTdj
YjY0OGMzNThiNzkxNWNlNWU3ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTY0MSw2ICs2NDEsMTEgQEAKIAkJMkQ4NzBEMTAx
NjIzNEZGRTAwMEEzRjIwIC8qIFBERlBsdWdpbi5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEODcwRDBFMTYyMkI3RjkwMDBBM0YyMCAvKiBQREZQbHVn
aW4ubW0gKi87IH07CiAJCTJEODcxMDE2MTgyODQxNUQwMDE4RkEwMSAvKiBQbGF0Zm9ybUNBTGF5
ZXJSZW1vdGVDdXN0b20ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAyRDg3MTAxNDE4Mjg0MTVEMDAxOEZBMDEgLyogUGxhdGZvcm1DQUxheWVyUmVtb3Rl
Q3VzdG9tLm1tICovOyB9OwogCQkyRDg3MTAxNzE4Mjg0MTVEMDAxOEZBMDEgLyogUGxhdGZvcm1D
QUxheWVyUmVtb3RlQ3VzdG9tLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAyRDg3MTAxNTE4Mjg0MTVEMDAxOEZBMDEgLyogUGxhdGZvcm1DQUxheWVyUmVt
b3RlQ3VzdG9tLmggKi87IH07CisJCTJEODc4NjFEMUJEQjU0QkYwMEQwMkFCQiAvKiBfV0tVc2Vy
U3R5bGVTaGVldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMkQ4Nzg2MUIxQkRCNTRCRjAwRDAyQUJCIC8qIF9XS1VzZXJTdHlsZVNoZWV0LmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMkQ4Nzg2MUUxQkRC
NTRCRjAwRDAyQUJCIC8qIF9XS1VzZXJTdHlsZVNoZWV0Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQ4Nzg2MUMxQkRCNTRCRjAwRDAyQUJCIC8qIF9X
S1VzZXJTdHlsZVNoZWV0Lm1tICovOyBzZXR0aW5ncyA9IHtBU1NFVF9UQUdTID0gKCk7IH07IH07
CisJCTJEODc4NjIwMUJEQjU3RjUwMEQwMkFCQiAvKiBfV0tVc2VyU3R5bGVTaGVldEludGVybmFs
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDg3ODYx
RjFCREI1N0Y1MDBEMDJBQkIgLyogX1dLVXNlclN0eWxlU2hlZXRJbnRlcm5hbC5oICovOyBzZXR0
aW5ncyA9IHtBU1NFVF9UQUdTID0gKCk7IH07IH07CisJCTJEODc4NjIzMUJEQjU4RkYwMEQwMkFC
QiAvKiBBUElVc2VyU3R5bGVTaGVldC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAyRDg3ODYyMTFCREI1OEZGMDBEMDJBQkIgLyogQVBJVXNlclN0eWxl
U2hlZXQuY3BwICovOyBzZXR0aW5ncyA9IHtBU1NFVF9UQUdTID0gKCk7IH07IH07CisJCTJEODc4
NjI0MUJEQjU4RkYwMEQwMkFCQiAvKiBBUElVc2VyU3R5bGVTaGVldC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQ4Nzg2MjIxQkRCNThGRjAwRDAyQUJC
IC8qIEFQSVVzZXJTdHlsZVNoZWV0LmggKi87IHNldHRpbmdzID0ge0FTU0VUX1RBR1MgPSAoKTsg
fTsgfTsKIAkJMkQ4OTQ5RjAxODIwNDRGNjAwRTg5OEFBIC8qIFBsYXRmb3JtQ0FMYXllclJlbW90
ZVRpbGVkQmFja2luZy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAyRDg5NDlFRTE4MjA0NEY2MDBFODk4QUEgLyogUGxhdGZvcm1DQUxheWVyUmVtb3Rl
VGlsZWRCYWNraW5nLmNwcCAqLzsgfTsKIAkJMkQ4OTQ5RjExODIwNDRGNjAwRTg5OEFBIC8qIFBs
YXRmb3JtQ0FMYXllclJlbW90ZVRpbGVkQmFja2luZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQ4OTQ5RUYxODIwNDRGNjAwRTg5OEFBIC8qIFBsYXRm
b3JtQ0FMYXllclJlbW90ZVRpbGVkQmFja2luZy5oICovOyB9OwogCQkyRDlFQTMwRDFBOTZDQjU5
MDAyRDI4MDcgLyogV0tQYWdlSW5qZWN0ZWRCdW5kbGVDbGllbnQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEOUVBMzBDMUE5NkNCNTkwMDJEMjgwNyAv
KiBXS1BhZ2VJbmplY3RlZEJ1bmRsZUNsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0yODA1LDYgKzI4MTAsMTEgQEAKIAkJMkQ4NzBEMEUx
NjIyQjdGOTAwMEEzRjIwIC8qIFBERlBsdWdpbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgbmFtZSA9IFBERlBsdWdpbi5tbTsgcGF0aCA9IFBERi9QREZQbHVnaW4ubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJEODcxMDE0MTgyODQxNUQwMDE4RkEwMSAvKiBQ
bGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b20ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b20ubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTJEODcxMDE1MTgyODQxNUQwMDE4RkEwMSAvKiBQbGF0Zm9ybUNB
TGF5ZXJSZW1vdGVDdXN0b20uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGxh
dGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTJEODc4NjFCMUJEQjU0QkYwMEQwMkFCQiAvKiBfV0tVc2VyU3R5bGVTaGVldC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tVc2VyU3R5bGVTaGVldC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkyRDg3ODYxQzFCREI1NEJGMDBEMDJBQkIgLyogX1dLVXNlclN0
eWxlU2hlZXQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBfV0tV
c2VyU3R5bGVTaGVldC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkQ4Nzg2MUYx
QkRCNTdGNTAwRDAyQUJCIC8qIF9XS1VzZXJTdHlsZVNoZWV0SW50ZXJuYWwuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLVXNlclN0eWxlU2hlZXRJbnRlcm5hbC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyRDg3ODYyMTFCREI1OEZGMDBEMDJBQkIgLyogQVBJ
VXNlclN0eWxlU2hlZXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
QVBJVXNlclN0eWxlU2hlZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyRDg3
ODYyMjFCREI1OEZGMDBEMDJBQkIgLyogQVBJVXNlclN0eWxlU2hlZXQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gQVBJVXNlclN0eWxlU2hlZXQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMkQ4OTQ5RUUxODIwNDRGNjAwRTg5OEFBIC8qIFBsYXRmb3JtQ0FMYXll
clJlbW90ZVRpbGVkQmFja2luZy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGVUaWxlZEJhY2tpbmcuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkyRDg5NDlFRjE4MjA0NEY2MDBFODk4QUEgLyogUGxhdGZvcm1DQUxh
eWVyUmVtb3RlVGlsZWRCYWNraW5nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFBsYXRmb3JtQ0FMYXllclJlbW90ZVRpbGVkQmFja2luZy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkyRDlFQTMwQzFBOTZDQjU5MDAyRDI4MDcgLyogV0tQYWdlSW5qZWN0ZWRCdW5k
bGVDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tQYWdlSW5qZWN0
ZWRCdW5kbGVDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTUzNjEsNiAr
NTM3MSw5IEBACiAJCQkJN0M4OUQyQjgxQTZCMEYyQzAwM0E1RkRFIC8qIF9XS1VzZXJDb250ZW50
RmlsdGVyLmggKi8sCiAJCQkJN0M4OUQyQjcxQTZCMEYyQzAwM0E1RkRFIC8qIF9XS1VzZXJDb250
ZW50RmlsdGVyLm1tICovLAogCQkJCTdDODlEMkJCMUE2QjBGNUIwMDNBNUZERSAvKiBfV0tVc2Vy
Q29udGVudEZpbHRlckludGVybmFsLmggKi8sCisJCQkJMkQ4Nzg2MUIxQkRCNTRCRjAwRDAyQUJC
IC8qIF9XS1VzZXJTdHlsZVNoZWV0LmggKi8sCisJCQkJMkQ4Nzg2MUMxQkRCNTRCRjAwRDAyQUJC
IC8qIF9XS1VzZXJTdHlsZVNoZWV0Lm1tICovLAorCQkJCTJEODc4NjFGMUJEQjU3RjUwMEQwMkFC
QiAvKiBfV0tVc2VyU3R5bGVTaGVldEludGVybmFsLmggKi8sCiAJCQkJMUE4MUIzN0YxOEJENjZB
RDAwMDdGREFDIC8qIF9XS1Zpc2l0ZWRMaW5rU3RvcmUuaCAqLywKIAkJCQkxQTgxQjM3RTE4QkQ2
NkFEMDAwN0ZEQUMgLyogX1dLVmlzaXRlZExpbmtTdG9yZS5tbSAqLywKIAkJCQkxQTgxQjM4NDE4
QkQ2NzNBMDAwN0ZEQUMgLyogX1dLVmlzaXRlZExpbmtTdG9yZUludGVybmFsLmggKi8sCkBAIC02
MzAyLDYgKzYzMTUsOCBAQAogCQkJCTdDM0EwNkE2MUFBQjkwM0UwMDlENzRCQSAvKiBBUElVc2Vy
Q29udGVudEV4dGVuc2lvblN0b3JlLmggKi8sCiAJCQkJN0M4OUQyQTUxQTY3ODlFQTAwM0E1RkRF
IC8qIEFQSVVzZXJTY3JpcHQuY3BwICovLAogCQkJCTdDODlEMjkyMUE2NzEyMkYwMDNBNUZERSAv
KiBBUElVc2VyU2NyaXB0LmggKi8sCisJCQkJMkQ4Nzg2MjExQkRCNThGRjAwRDAyQUJCIC8qIEFQ
SVVzZXJTdHlsZVNoZWV0LmNwcCAqLywKKwkJCQkyRDg3ODYyMjFCREI1OEZGMDBEMDJBQkIgLyog
QVBJVXNlclN0eWxlU2hlZXQuaCAqLywKIAkJCQkxQTQ4MzJDNTFBOUJDMTNDMDA4QjRERkUgLyog
QVBJV2Vic2l0ZURhdGFSZWNvcmQuY3BwICovLAogCQkJCTFBNDgzMkM2MUE5QkMxM0MwMDhCNERG
RSAvKiBBUElXZWJzaXRlRGF0YVJlY29yZC5oICovLAogCQkJCTFBMzYzNUE3MUEzMTQ0QTMwMEVE
NjE5NyAvKiBBUElXZWJzaXRlRGF0YVN0b3JlLmNwcCAqLywKQEAgLTgwNzEsNiArODA4Niw3IEBA
CiAJCQkJOTNBODhCNDYxQkM4ODI5MzAwQUJBNUMyIC8qIEFQSUhpdFRlc3RSZXN1bHQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTI5RDU1REYyMTYxQkY5RjEwMDMxQTJFMyAvKiBXZWJQYWdlR3JvdXBQ
cm94eU1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDlFQTMwRjFBOTZDQkZGMDAyRDI4
MDcgLyogV2ViUGFnZUluamVjdGVkQnVuZGxlQ2xpZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQky
RDg3ODYyMDFCREI1N0Y1MDBEMDJBQkIgLyogX1dLVXNlclN0eWxlU2hlZXRJbnRlcm5hbC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQzBDRTcyQTExMjQ3RTcxRDAwQkMwRUM0IC8qIFdlYlBhZ2VNZXNz
YWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQ1QzlEMDYxOUM4MUQ4RjAwQjNDNUMxIC8qIFdl
YlBhZ2VPdmVybGF5LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzAzMkREMTEwRjQzODlGMDA1OEMx
NUEgLyogV2ViUGFnZVByb3h5LmggaW4gSGVhZGVycyAqLywKQEAgLTgxMDcsNiArODEyMyw3IEBA
CiAJCQkJMzc2MDg4MUYxNTA0MTNFOTAwRkM4MkM3IC8qIFdlYlJlbmRlck9iamVjdC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNTEwQUZGQkExNjU0MjA0ODAwMUJBMDVFIC8qIFdlYlJlc291cmNlTG9h
ZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MUYwNjBFMDE2NTQzMTdGMDBGMzI4MUIgLyogV2Vi
UmVzb3VyY2VMb2FkZXJNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMkQ4Nzg2MUQxQkRC
NTRCRjAwRDAyQUJCIC8qIF9XS1VzZXJTdHlsZVNoZWV0LmggaW4gSGVhZGVycyAqLywKIAkJCQk3
QzM2MUQ3MzE5MjdGQTM2MDAzNkE1OUQgLyogV2ViU2NyaXB0TWVzc2FnZUhhbmRsZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUQzQjk0ODQ5MTFGRjRCNjUwMDAzMkIzOSAvKiBXZWJTZWFyY2hQb3B1
cE1lbnUuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNDgzMkQ3MUE5Q0RGOTYwMDhCNERGRSAvKiBX
ZWJzaXRlRGF0YS5oIGluIEhlYWRlcnMgKi8sCkBAIC04MzIxLDYgKzgzMzgsNyBAQAogCQkJCTFB
QjhBMUVDMTg0MDA4MDkwMEU5QUU2OSAvKiBXS1BhZ2VMb2FkZXJDbGllbnQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTkzRTZBNEVFMUJDNUREMzkwMEY4QTBFNyAvKiBfV0tIaXRUZXN0UmVzdWx0Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQlCQzJEMDIxOTEyQUM0MjZDMDBFNzMyQTMgLyogV0tQYWdlTG9h
ZFR5cGVzLmggaW4gSGVhZGVycyAqLywKKwkJCQkyRDg3ODYyNDFCREI1OEZGMDBEMDJBQkIgLyog
QVBJVXNlclN0eWxlU2hlZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzQkRFQjAxMTcxREQ3QUYw
MEJGRUUxQiAvKiBXS1BhZ2VMb2FkVHlwZXNQcml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQky
RDczMDM3OTFBN0MyQjc1MDBGOEY0ODcgLyogV0tQYWdlTmF2aWdhdGlvbkNsaWVudC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMUFCOEExRUUxODQwMEFDQjAwRTlBRTY5IC8qIFdLUGFnZVBvbGljeUNs
aWVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC05OTk2LDYgKzEwMDE0LDcgQEAKIAkJCQkyOTIzMkRG
ODE4QjJBOUFFMDBEMDU5NkYgLyogV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdElPUy5tbSBp
biBTb3VyY2VzICovLAogCQkJCTI5MjMyREY5MThCMkFCM0EwMEQwNTk2RiAvKiBXS0FjY2Vzc2li
aWxpdHlXZWJQYWdlT2JqZWN0TWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZDQjRFNDkxOEJC
RTA0NDAwMEZDRkM5IC8qIFdLQWN0aW9uU2hlZXQubW0gaW4gU291cmNlcyAqLywKKwkJCQkyRDg3
ODYyMzFCREI1OEZGMDBEMDJBQkIgLyogQVBJVXNlclN0eWxlU2hlZXQuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMEZDQjRFNEIxOEJCRTA0NDAwMEZDRkM5IC8qIFdLQWN0aW9uU2hlZXRBc3Npc3Rh
bnQubW0gaW4gU291cmNlcyAqLywKIAkJCQlDNUZBMUVENDE4RTEwNjIyMDBCM0Y0MDIgLyogV0tB
aXJQbGF5Um91dGVQaWNrZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQk1MTJFMzRFNDEzMEI0RDA1
MDBBQkQxOUEgLyogV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLywK
QEAgLTEwMDgwLDYgKzEwMDk5LDcgQEAKIAkJCQlCQ0NGNkFDMjEyQzkxRjM0MDA4RjlDMzUgLyog
V0tJbWFnZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQ0NGNkFDOTEyQzkxRjU5MDA4RjlDMzUg
LyogV0tJbWFnZUNHLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkzM0RGODMwMUIzQkMwQjQwMEFF
QTlFMyAvKiBXS0ltYWdlUHJldmlld1ZpZXdDb250cm9sbGVyLm1tIGluIFNvdXJjZXMgKi8sCisJ
CQkJMkQ4Nzg2MUUxQkRCNTRCRjAwRDAyQUJCIC8qIF9XS1VzZXJTdHlsZVNoZWV0Lm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJOTMyMUQ1ODgxQTM4RUU3NDAwODA1MkJFIC8qIFdLSW1tZWRpYXRlQWN0
aW9uQ29udHJvbGxlci5tbSBpbiBTb3VyY2VzICovLAogCQkJCTFDOEUyOTNBMTI3NjFFNUIwMEJD
N0JEMCAvKiBXS0luc3BlY3Rvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjNDNzI1QzE5NkY2
MDUyMDBBRUREMEMgLyogV0tJbnNwZWN0b3JIaWdobGlnaHRWaWV3Lm1tIGluIFNvdXJjZXMgKi8s
CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggODJl
MmRjOWQzMTI0MmYyMGYwZDQyNTQxYzkxNDkxODk2NDlkMTkxYi4uN2RhZDg5MjVhMmMzNDc1NGZm
NmMzODgzNTdlOTEyZGFmODRlNjY0NCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBi
L1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDE2IEBACiAyMDE1LTEwLTI0ICBUaW0gSG9ydG9u
ICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCisgICAgICAgIEFkZCBhIHdheSB0byBhZGQg
dXNlciBzdHlsZSBzaGVldHMgdG8gV0tVc2VyQ29udGVudENvbnRyb2xsZXIKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MDUzMQorICAgICAgICA8cmRh
cjovL3Byb2JsZW0vMjMxOTE2OTE+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIu
CisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9Vc2VyQ29udGVu
dENvbnRyb2xsZXIubW06CisgICAgICAgIChURVNUKToKKworMjAxNS0xMC0yNCAgVGltIEhvcnRv
biAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KKwogICAgICAgICBFeHBvc2UgbW9yZSBpbmZv
cm1hdGlvbiBhYm91dCB0aGUgZXhjZXB0aW9uIGluIFdLRXJyb3JKYXZhU2NyaXB0RXhjZXB0aW9u
T2NjdXJyZWQgZXJyb3JzCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNTA1MjUKIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9y
bVV0aWxpdGllcy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtVXRpbGl0aWVzLmNw
cAppbmRleCBjNmU0ODgyYjdjNjQ5NTVkNTA1YTc4ZTg3OTMyNmQ2NDdhMDc5Y2ZkLi4yMTZjNzBh
YzI0NzU3NDY1Y2M2N2MzOGJkMTk2ZTY5ZDJiN2JkN2NiIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1BsYXRmb3JtVXRpbGl0aWVzLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1BsYXRmb3JtVXRpbGl0aWVzLmNwcApAQCAtMjUsOCArMjUsNiBAQAogCiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAKLSNpZiBXS19IQVZFX0NfU1BJCi0KICNpbmNsdWRlICJQbGF0Zm9ybVV0aWxpdGll
cy5oIgogCiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgpAQCAtMzQsNiArMzIsOCBAQAog
bmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogbmFtZXNwYWNlIFV0aWwgewogCisjaWYgV0tfSEFW
RV9DX1NQSQorCiBXS0NvbnRleHRSZWYgY3JlYXRlQ29udGV4dFdpdGhJbmplY3RlZEJ1bmRsZSgp
CiB7CiAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IGluamVjdGVkQnVuZGxlUGF0aChBZG9w
dFdLLCBjcmVhdGVJbmplY3RlZEJ1bmRsZVBhdGgoKSk7CkBAIC03OSwxNyArNzksMTcgQEAgc3Rk
OjpzdHJpbmcgdG9TVEQoV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHN0cmluZykKICAgICByZXR1
cm4gdG9TVEQoc3RyaW5nLmdldCgpKTsKIH0KIAotc3RkOjpzdHJpbmcgdG9TVEQoY29uc3QgY2hh
ciogc3RyaW5nKQorV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHRvV0soY29uc3QgY2hhciogdXRm
OFN0cmluZykKIHsKLSAgICByZXR1cm4gc3RkOjpzdHJpbmcoc3RyaW5nKTsKKyAgICByZXR1cm4g
V0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+KEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhD
U3RyaW5nKHV0ZjhTdHJpbmcpKTsKIH0KIAotV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHRvV0so
Y29uc3QgY2hhciogdXRmOFN0cmluZykKKyNlbmRpZiAvLyBXS19IQVZFX0NfU1BJCisKK3N0ZDo6
c3RyaW5nIHRvU1REKGNvbnN0IGNoYXIqIHN0cmluZykKIHsKLSAgICByZXR1cm4gV0tSZXRhaW5Q
dHI8V0tTdHJpbmdSZWY+KEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKHV0
ZjhTdHJpbmcpKTsKKyAgICByZXR1cm4gc3RkOjpzdHJpbmcoc3RyaW5nKTsKIH0KIAogfSAvLyBu
YW1lc3BhY2UgVXRpbAogfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQotCi0jZW5kaWYKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL1VzZXJDb250
ZW50Q29udHJvbGxlci5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29h
L1VzZXJDb250ZW50Q29udHJvbGxlci5tbQppbmRleCA1MzMwMDM1NTJkMjYxNTBiNzlmZGNiODQ1
MGZmM2Q4NzVkZTMxZTc3Li44ODI0ODc4MWM1NWI4ZjNmNDE4ZGJkZjI2MGU4NGNlZDU5Y2JhZjE1
IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9Vc2Vy
Q29udGVudENvbnRyb2xsZXIubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXQyQ29jb2EvVXNlckNvbnRlbnRDb250cm9sbGVyLm1tCkBAIC0yOCw2ICsyOCw4IEBACiAjaW1w
b3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgogI2ltcG9ydCAiVGVzdC5oIgogI2ltcG9ydCA8V2Vi
S2l0L1dlYktpdC5oPgorI2ltcG9ydCA8V2ViS2l0L1dLVXNlckNvbnRlbnRDb250cm9sbGVyUHJp
dmF0ZS5oPgorI2ltcG9ydCA8V2ViS2l0L19XS1VzZXJTdHlsZVNoZWV0Lmg+CiAjaW1wb3J0IDx3
dGYvUmV0YWluUHRyLmg+CiAKICNpZiBXS19BUElfRU5BQkxFRApAQCAtMjEyLDQgKzIxNCwxNTQg
QEAgVEVTVChXS1VzZXJDb250ZW50Q29udHJvbGxlciwgU2NyaXB0TWVzc2FnZUhhbmRsZXJXaXRo
TmF2aWdhdGlvbikKIH0KICNlbmRpZgogCitzdGF0aWMgTlNTdHJpbmcgKnN0eWxlU2hlZXRTb3Vy
Y2UgPSBAImJvZHkgeyBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbiAhaW1wb3J0YW50OyB9IjsKK3N0
YXRpYyBOU1N0cmluZyAqYmFja2dyb3VuZENvbG9yU2NyaXB0ID0gQCJ3aW5kb3cuZ2V0Q29tcHV0
ZWRTdHlsZShkb2N1bWVudC5ib2R5LCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCdiYWNrZ3JvdW5k
LWNvbG9yJykiOworc3RhdGljIE5TU3RyaW5nICpmcmFtZUJhY2tncm91bmRDb2xvclNjcmlwdCA9
IEAid2luZG93LmdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
J2lmcmFtZScpWzBdLmNvbnRlbnREb2N1bWVudC5ib2R5LCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVl
KCdiYWNrZ3JvdW5kLWNvbG9yJykiOworc3RhdGljIGNvbnN0IGNoYXIqIGdyZWVuSW5SR0IgPSAi
cmdiKDAsIDEyOCwgMCkiOworc3RhdGljIGNvbnN0IGNoYXIqIHJlZEluUkdCID0gInJnYigyNTUs
IDAsIDApIjsKK3N0YXRpYyBjb25zdCBjaGFyKiB3aGl0ZUluUkdCID0gInJnYmEoMCwgMCwgMCwg
MCkiOworCitzdGF0aWMgdm9pZCBleHBlY3RTY3JpcHRFdmFsdWF0ZXNUb0NvbG9yKFdLV2ViVmll
dyAqd2ViVmlldywgTlNTdHJpbmcgKnNjcmlwdCwgY29uc3QgY2hhciogY29sb3IpCit7CisgICAg
c3RhdGljIGJvb2wgZGlkQ2hlY2tCYWNrZ3JvdW5kQ29sb3I7CisKKyAgICBbd2ViVmlldyBldmFs
dWF0ZUphdmFTY3JpcHQ6c2NyaXB0IGNvbXBsZXRpb25IYW5kbGVyOl4gKGlkIHZhbHVlLCBOU0Vy
cm9yICogZXJyb3IpIHsKKyAgICAgICAgRVhQRUNUX1RSVUUoW3ZhbHVlIGlzS2luZE9mQ2xhc3M6
W05TU3RyaW5nIGNsYXNzXV0pOworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoY29sb3IsIHZhbHVl
KTsKKyAgICAgICAgZGlkQ2hlY2tCYWNrZ3JvdW5kQ29sb3IgPSB0cnVlOworICAgIH1dOworCisg
ICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkaWRDaGVja0JhY2tncm91bmRDb2xvcik7Cisg
ICAgZGlkQ2hlY2tCYWNrZ3JvdW5kQ29sb3IgPSBmYWxzZTsKK30KKworVEVTVChXS1VzZXJDb250
ZW50Q29udHJvbGxlciwgQWRkVXNlclN0eWxlU2hlZXRCZWZvcmVDcmVhdGluZ1ZpZXcpCit7Cisg
ICAgUmV0YWluUHRyPFdLV2ViVmlld0NvbmZpZ3VyYXRpb24+IGNvbmZpZ3VyYXRpb24gPSBhZG9w
dE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworCisgICAgUmV0YWlu
UHRyPF9XS1VzZXJTdHlsZVNoZWV0PiBzdHlsZVNoZWV0ID0gYWRvcHROUyhbW19XS1VzZXJTdHls
ZVNoZWV0IGFsbG9jXSBpbml0V2l0aFNvdXJjZTpzdHlsZVNoZWV0U291cmNlIHdoaXRlbGlzdGVk
VVJMUGF0dGVybnM6QFsgXSBibGFja2xpc3RlZFVSTFBhdHRlcm5zOkBbIF0gZm9yTWFpbkZyYW1l
T25seTpZRVNdKTsKKyAgICBbW2NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRDb250cm9sbGVyXSBf
YWRkVXNlclN0eWxlU2hlZXQ6c3R5bGVTaGVldC5nZXQoKV07CisKKyAgICBSZXRhaW5QdHI8V0tX
ZWJWaWV3PiB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFt
ZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24u
Z2V0KCldKTsKKworICAgIFJldGFpblB0cjxTaW1wbGVOYXZpZ2F0aW9uRGVsZWdhdGU+IGRlbGVn
YXRlID0gYWRvcHROUyhbW1NpbXBsZU5hdmlnYXRpb25EZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOwor
ICAgIFt3ZWJWaWV3IHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CisKKyAg
ICBbd2ViVmlldyBsb2FkSFRNTFN0cmluZzpAIjxib2R5IHN0eWxlPSdiYWNrZ3JvdW5kLWNvbG9y
OiByZWQ7Jz48L2JvZHk+IiBiYXNlVVJMOm5pbF07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6
cnVuKCZpc0RvbmVXaXRoTmF2aWdhdGlvbik7CisgICAgaXNEb25lV2l0aE5hdmlnYXRpb24gPSBm
YWxzZTsKKworICAgIGV4cGVjdFNjcmlwdEV2YWx1YXRlc1RvQ29sb3Iod2ViVmlldy5nZXQoKSwg
YmFja2dyb3VuZENvbG9yU2NyaXB0LCBncmVlbkluUkdCKTsKK30KKworVEVTVChXS1VzZXJDb250
ZW50Q29udHJvbGxlciwgQWRkVXNlclN0eWxlU2hlZXRBZnRlckNyZWF0aW5nVmlldykKK3sKKyAg
ICBSZXRhaW5QdHI8V0tXZWJWaWV3PiB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxv
Y10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKV0pOworCisgICAgUmV0
YWluUHRyPFNpbXBsZU5hdmlnYXRpb25EZWxlZ2F0ZT4gZGVsZWdhdGUgPSBhZG9wdE5TKFtbU2lt
cGxlTmF2aWdhdGlvbkRlbGVnYXRlIGFsbG9jXSBpbml0XSk7CisgICAgW3dlYlZpZXcgc2V0TmF2
aWdhdGlvbkRlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKKworICAgIFt3ZWJWaWV3IGxvYWRIVE1M
U3RyaW5nOkAiPGJvZHkgc3R5bGU9J2JhY2tncm91bmQtY29sb3I6IHJlZDsnPjwvYm9keT4iIGJh
c2VVUkw6bmlsXTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZVdpdGhOYXZp
Z2F0aW9uKTsKKyAgICBpc0RvbmVXaXRoTmF2aWdhdGlvbiA9IGZhbHNlOworCisgICAgZXhwZWN0
U2NyaXB0RXZhbHVhdGVzVG9Db2xvcih3ZWJWaWV3LmdldCgpLCBiYWNrZ3JvdW5kQ29sb3JTY3Jp
cHQsIHJlZEluUkdCKTsKKworICAgIFJldGFpblB0cjxfV0tVc2VyU3R5bGVTaGVldD4gc3R5bGVT
aGVldCA9IGFkb3B0TlMoW1tfV0tVc2VyU3R5bGVTaGVldCBhbGxvY10gaW5pdFdpdGhTb3VyY2U6
c3R5bGVTaGVldFNvdXJjZSB3aGl0ZWxpc3RlZFVSTFBhdHRlcm5zOkBbIF0gYmxhY2tsaXN0ZWRV
UkxQYXR0ZXJuczpAWyBdIGZvck1haW5GcmFtZU9ubHk6WUVTXSk7CisgICAgW1t3ZWJWaWV3IGNv
bmZpZ3VyYXRpb25dLnVzZXJDb250ZW50Q29udHJvbGxlciBfYWRkVXNlclN0eWxlU2hlZXQ6c3R5
bGVTaGVldC5nZXQoKV07CisKKyAgICBleHBlY3RTY3JpcHRFdmFsdWF0ZXNUb0NvbG9yKHdlYlZp
ZXcuZ2V0KCksIGJhY2tncm91bmRDb2xvclNjcmlwdCwgZ3JlZW5JblJHQik7Cit9CisKK1RFU1Qo
V0tVc2VyQ29udGVudENvbnRyb2xsZXIsIFVzZXJTdHlsZVNoZWV0V2hpdGVBbmRCbGFja0xpc3Qp
Cit7CisgICAgUmV0YWluUHRyPFdLV2ViVmlld0NvbmZpZ3VyYXRpb24+IGNvbmZpZ3VyYXRpb24g
PSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworCisgICAg
UmV0YWluUHRyPF9XS1VzZXJTdHlsZVNoZWV0PiBzdHlsZVNoZWV0ID0gYWRvcHROUyhbW19XS1Vz
ZXJTdHlsZVNoZWV0IGFsbG9jXSBpbml0V2l0aFNvdXJjZTpzdHlsZVNoZWV0U291cmNlIHdoaXRl
bGlzdGVkVVJMUGF0dGVybnM6QFsgQCJodHRwOi8vaGFwcHkuZXhhbXBsZS5jb20vIiwgQCJodHRw
Oi8vKi5leGFtcGxlMi5jb20vIiBdIGJsYWNrbGlzdGVkVVJMUGF0dGVybnM6QFsgQCJodHRwOi8v
c2FkLmV4YW1wbGUuY29tLyIgXSBmb3JNYWluRnJhbWVPbmx5OllFU10pOworICAgIFtbY29uZmln
dXJhdGlvbiB1c2VyQ29udGVudENvbnRyb2xsZXJdIF9hZGRVc2VyU3R5bGVTaGVldDpzdHlsZVNo
ZWV0LmdldCgpXTsKKworICAgIFJldGFpblB0cjxXS1dlYlZpZXc+IHdlYlZpZXcgPSBhZG9wdE5T
KFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2
MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOworCisgICAgUmV0YWluUHRy
PFNpbXBsZU5hdmlnYXRpb25EZWxlZ2F0ZT4gZGVsZWdhdGUgPSBhZG9wdE5TKFtbU2ltcGxlTmF2
aWdhdGlvbkRlbGVnYXRlIGFsbG9jXSBpbml0XSk7CisgICAgW3dlYlZpZXcgc2V0TmF2aWdhdGlv
bkRlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKKworICAgIC8vIFRyeSBzb21ldGhpbmcgb24gdGhl
IHdoaXRlbGlzdDoKKworICAgIFt3ZWJWaWV3IGxvYWRIVE1MU3RyaW5nOkAiPGJvZHkgc3R5bGU9
J2JhY2tncm91bmQtY29sb3I6IHJlZDsnPjwvYm9keT4iIGJhc2VVUkw6W05TVVJMIFVSTFdpdGhT
dHJpbmc6QCJodHRwOi8vaGFwcHkuZXhhbXBsZS5jb20vIl1dOworICAgIFRlc3RXZWJLaXRBUEk6
OlV0aWw6OnJ1bigmaXNEb25lV2l0aE5hdmlnYXRpb24pOworICAgIGlzRG9uZVdpdGhOYXZpZ2F0
aW9uID0gZmFsc2U7CisKKyAgICBleHBlY3RTY3JpcHRFdmFsdWF0ZXNUb0NvbG9yKHdlYlZpZXcu
Z2V0KCksIGJhY2tncm91bmRDb2xvclNjcmlwdCwgZ3JlZW5JblJHQik7CisKKyAgICAvLyBUcnkg
c29tZXRoaW5nIG9uIHRoZSBibGFja2xpc3Q6CisKKyAgICBbd2ViVmlldyBsb2FkSFRNTFN0cmlu
ZzpAIjxib2R5IHN0eWxlPSdiYWNrZ3JvdW5kLWNvbG9yOiByZWQ7Jz48L2JvZHk+IiBiYXNlVVJM
OltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cDovL3NhZC5leGFtcGxlLmNvbS8iXV07CisgICAg
VGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmVXaXRoTmF2aWdhdGlvbik7CisgICAgaXNE
b25lV2l0aE5hdmlnYXRpb24gPSBmYWxzZTsKKworICAgIGV4cGVjdFNjcmlwdEV2YWx1YXRlc1Rv
Q29sb3Iod2ViVmlldy5nZXQoKSwgYmFja2dyb3VuZENvbG9yU2NyaXB0LCByZWRJblJHQik7CisK
KyAgICAvLyBUcnkgc29tZXRoaW5nIG9uIG5laXRoZXIgbGlzdDoKKworICAgIFt3ZWJWaWV3IGxv
YWRIVE1MU3RyaW5nOkAiPGJvZHkgc3R5bGU9J2JhY2tncm91bmQtY29sb3I6IHJlZDsnPjwvYm9k
eT4iIGJhc2VVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwOi8vbWVkaW9jcmUuZXhhbXBs
ZS5jb20vIl1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lV2l0aE5hdmln
YXRpb24pOworICAgIGlzRG9uZVdpdGhOYXZpZ2F0aW9uID0gZmFsc2U7CisKKyAgICBleHBlY3RT
Y3JpcHRFdmFsdWF0ZXNUb0NvbG9yKHdlYlZpZXcuZ2V0KCksIGJhY2tncm91bmRDb2xvclNjcmlw
dCwgcmVkSW5SR0IpOworCisgICAgLy8gVHJ5IHNvbWV0aGluZyB0aGF0IG1hdGNoZXMgdGhlIGds
b2JiaW5nIHBhdHRlcm4gaW4gdGhlIHdoaXRlbGlzdDoKKworICAgIFt3ZWJWaWV3IGxvYWRIVE1M
U3RyaW5nOkAiPGJvZHkgc3R5bGU9J2JhY2tncm91bmQtY29sb3I6IHJlZDsnPjwvYm9keT4iIGJh
c2VVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwOi8vYW55dGhpbmcuZXhhbXBsZTIuY29t
LyJdXTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZVdpdGhOYXZpZ2F0aW9u
KTsKKyAgICBpc0RvbmVXaXRoTmF2aWdhdGlvbiA9IGZhbHNlOworCisgICAgZXhwZWN0U2NyaXB0
RXZhbHVhdGVzVG9Db2xvcih3ZWJWaWV3LmdldCgpLCBiYWNrZ3JvdW5kQ29sb3JTY3JpcHQsIGdy
ZWVuSW5SR0IpOworfQorCitURVNUKFdLVXNlckNvbnRlbnRDb250cm9sbGVyLCBVc2VyU3R5bGVT
aGVldEFmZmVjdGluZ09ubHlNYWluRnJhbWUpCit7CisgICAgUmV0YWluUHRyPFdLV2ViVmlld0Nv
bmZpZ3VyYXRpb24+IGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJh
dGlvbiBhbGxvY10gaW5pdF0pOworCisgICAgUmV0YWluUHRyPF9XS1VzZXJTdHlsZVNoZWV0PiBz
dHlsZVNoZWV0ID0gYWRvcHROUyhbW19XS1VzZXJTdHlsZVNoZWV0IGFsbG9jXSBpbml0V2l0aFNv
dXJjZTpzdHlsZVNoZWV0U291cmNlIHdoaXRlbGlzdGVkVVJMUGF0dGVybnM6QFsgXSBibGFja2xp
c3RlZFVSTFBhdHRlcm5zOkBbIF0gZm9yTWFpbkZyYW1lT25seTpZRVNdKTsKKyAgICBbW2NvbmZp
Z3VyYXRpb24gdXNlckNvbnRlbnRDb250cm9sbGVyXSBfYWRkVXNlclN0eWxlU2hlZXQ6c3R5bGVT
aGVldC5nZXQoKV07CisKKyAgICBSZXRhaW5QdHI8V0tXZWJWaWV3PiB3ZWJWaWV3ID0gYWRvcHRO
UyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwg
NjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKworICAgIFJldGFpblB0
cjxTaW1wbGVOYXZpZ2F0aW9uRGVsZWdhdGU+IGRlbGVnYXRlID0gYWRvcHROUyhbW1NpbXBsZU5h
dmlnYXRpb25EZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOworICAgIFt3ZWJWaWV3IHNldE5hdmlnYXRp
b25EZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CisKKyAgICBbd2ViVmlldyBsb2FkSFRNTFN0cmlu
ZzpAIjxib2R5IHN0eWxlPSdiYWNrZ3JvdW5kLWNvbG9yOiByZWQ7Jz48aWZyYW1lPjwvaWZyYW1l
PjwvYm9keT4iIGJhc2VVUkw6bmlsXTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlz
RG9uZVdpdGhOYXZpZ2F0aW9uKTsKKyAgICBpc0RvbmVXaXRoTmF2aWdhdGlvbiA9IGZhbHNlOwor
CisgICAgLy8gVGhlIG1haW4gZnJhbWUgc2hvdWxkIGJlIGFmZmVjdGVkLgorICAgIGV4cGVjdFNj
cmlwdEV2YWx1YXRlc1RvQ29sb3Iod2ViVmlldy5nZXQoKSwgYmFja2dyb3VuZENvbG9yU2NyaXB0
LCBncmVlbkluUkdCKTsKKworICAgIC8vIFRoZSBzdWJmcmFtZSBzaG91bGRuJ3QgYmUgYWZmZWN0
ZWQuCisgICAgZXhwZWN0U2NyaXB0RXZhbHVhdGVzVG9Db2xvcih3ZWJWaWV3LmdldCgpLCBmcmFt
ZUJhY2tncm91bmRDb2xvclNjcmlwdCwgd2hpdGVJblJHQik7Cit9CisKK1RFU1QoV0tVc2VyQ29u
dGVudENvbnRyb2xsZXIsIFVzZXJTdHlsZVNoZWV0QWZmZWN0aW5nQWxsRnJhbWVzKQoreworICAg
IFJldGFpblB0cjxXS1dlYlZpZXdDb25maWd1cmF0aW9uPiBjb25maWd1cmF0aW9uID0gYWRvcHRO
UyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKworICAgIFJldGFpblB0
cjxfV0tVc2VyU3R5bGVTaGVldD4gc3R5bGVTaGVldCA9IGFkb3B0TlMoW1tfV0tVc2VyU3R5bGVT
aGVldCBhbGxvY10gaW5pdFdpdGhTb3VyY2U6c3R5bGVTaGVldFNvdXJjZSB3aGl0ZWxpc3RlZFVS
TFBhdHRlcm5zOkBbIF0gYmxhY2tsaXN0ZWRVUkxQYXR0ZXJuczpAWyBdIGZvck1haW5GcmFtZU9u
bHk6Tk9dKTsKKyAgICBbW2NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRDb250cm9sbGVyXSBfYWRk
VXNlclN0eWxlU2hlZXQ6c3R5bGVTaGVldC5nZXQoKV07CisKKyAgICBSZXRhaW5QdHI8V0tXZWJW
aWV3PiB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpO
U01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0
KCldKTsKKworICAgIFJldGFpblB0cjxTaW1wbGVOYXZpZ2F0aW9uRGVsZWdhdGU+IGRlbGVnYXRl
ID0gYWRvcHROUyhbW1NpbXBsZU5hdmlnYXRpb25EZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOworICAg
IFt3ZWJWaWV3IHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CisKKyAgICBb
d2ViVmlldyBsb2FkSFRNTFN0cmluZzpAIjxib2R5IHN0eWxlPSdiYWNrZ3JvdW5kLWNvbG9yOiBy
ZWQ7Jz48aWZyYW1lPjwvaWZyYW1lPjwvYm9keT4iIGJhc2VVUkw6bmlsXTsKKyAgICBUZXN0V2Vi
S2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZVdpdGhOYXZpZ2F0aW9uKTsKKyAgICBpc0RvbmVXaXRo
TmF2aWdhdGlvbiA9IGZhbHNlOworCisgICAgLy8gVGhlIG1haW4gZnJhbWUgc2hvdWxkIGJlIGFm
ZmVjdGVkLgorICAgIGV4cGVjdFNjcmlwdEV2YWx1YXRlc1RvQ29sb3Iod2ViVmlldy5nZXQoKSwg
YmFja2dyb3VuZENvbG9yU2NyaXB0LCBncmVlbkluUkdCKTsKKworICAgIC8vIFRoZSBzdWJmcmFt
ZSBzaG91bGQgYWxzbyBiZSBhZmZlY3RlZC4KKyAgICBleHBlY3RTY3JpcHRFdmFsdWF0ZXNUb0Nv
bG9yKHdlYlZpZXcuZ2V0KCksIGZyYW1lQmFja2dyb3VuZENvbG9yU2NyaXB0LCBncmVlbkluUkdC
KTsKK30KKwogI2VuZGlmCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>