<?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>111088</bug_id>
          
          <creation_ts>2013-02-28 10:24:00 -0800</creation_ts>
          <short_desc>Objective-C API: Need a good way to reference event handlers without causing cycles</short_desc>
          <delta_ts>2013-03-07 12:45:24 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Hahnenberg">mhahnenberg</reporter>
          <assigned_to name="Mark Hahnenberg">mhahnenberg</assigned_to>
          <cc>barraclough</cc>
    
    <cc>buildbot</cc>
    
    <cc>ggaren</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>philn</cc>
    
    <cc>rakuco</cc>
    
    <cc>rego+ews</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>844191</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2013-02-28 10:24:00 -0800</bug_when>
    <thetext>Currently, we just have JSValue, which is a strong reference, which risks a cycle if the value directly or indirectly has any pointers back to its owner.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>844192</commentid>
    <comment_count>1</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2013-02-28 10:24:15 -0800</bug_when>
    <thetext>&lt;rdar://problem/12991581&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>844625</commentid>
    <comment_count>2</comment_count>
      <attachid>190846</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2013-02-28 16:46:08 -0800</bug_when>
    <thetext>Created attachment 190846
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>845468</commentid>
    <comment_count>3</comment_count>
      <attachid>190846</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2013-03-01 13:35:35 -0800</bug_when>
    <thetext>Comment on attachment 190846
patch

Per our discussion, please use DEFINE_STATIC_LOCAL thingumy,
maybe add a JSWeakValue parent type
make marking an obj-c wrapper make the obj-c object an opaque root
and change the owner to be the actual obj-c object rather than it&apos;s wrapper

cheers, G.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>846964</commentid>
    <comment_count>4</comment_count>
      <attachid>191334</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2013-03-04 16:07:08 -0800</bug_when>
    <thetext>Created attachment 191334
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>846967</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-04 16:09:31 -0800</bug_when>
    <thetext>Attachment 191334 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/API/JSAPIWrapperObject.cpp&apos;, u&apos;Source/JavaScriptCore/API/JSAPIWrapperObject.h&apos;, u&apos;Source/JavaScriptCore/API/JSCallbackObject.cpp&apos;, u&apos;Source/JavaScriptCore/API/JSCallbackObject.h&apos;, u&apos;Source/JavaScriptCore/API/JSContext.mm&apos;, u&apos;Source/JavaScriptCore/API/JSContextInternal.h&apos;, u&apos;Source/JavaScriptCore/API/JSManagedValue.h&apos;, u&apos;Source/JavaScriptCore/API/JSManagedValue.mm&apos;, u&apos;Source/JavaScriptCore/API/JSObjectRef.cpp&apos;, u&apos;Source/JavaScriptCore/API/JSValueRef.cpp&apos;, u&apos;Source/JavaScriptCore/API/JSVirtualMachine.mm&apos;, u&apos;Source/JavaScriptCore/API/JSWeakValue.h&apos;, u&apos;Source/JavaScriptCore/API/JSWeakValue.mm&apos;, u&apos;Source/JavaScriptCore/API/JSWeakValueInternal.h&apos;, u&apos;Source/JavaScriptCore/API/JSWrapperMap.mm&apos;, u&apos;Source/JavaScriptCore/API/JavaScriptCore.h&apos;, u&apos;Source/JavaScriptCore/API/tests/testapi.mm&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj&apos;, u&apos;Source/JavaScriptCore/runtime/JSGlobalObject.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/JSGlobalObject.h&apos;]&quot; exit_code: 1
Source/JavaScriptCore/API/JSAPIWrapperObject.cpp:55:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/JavaScriptCore/runtime/JSGlobalObject.cpp:51:  Alphabetical sorting problem.  [build/include_order] [4]
Source/JavaScriptCore/runtime/JSGlobalObject.cpp:233:  More than one command on the same line  [whitespace/newline] [4]
Source/JavaScriptCore/API/JSWeakValueInternal.h:36:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 4 in 20 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>846975</commentid>
    <comment_count>6</comment_count>
      <attachid>191337</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2013-03-04 16:12:23 -0800</bug_when>
    <thetext>Created attachment 191337
style fixes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>846979</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-04 16:14:01 -0800</bug_when>
    <thetext>Attachment 191337 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/API/JSAPIWrapperObject.cpp&apos;, u&apos;Source/JavaScriptCore/API/JSAPIWrapperObject.h&apos;, u&apos;Source/JavaScriptCore/API/JSCallbackObject.cpp&apos;, u&apos;Source/JavaScriptCore/API/JSCallbackObject.h&apos;, u&apos;Source/JavaScriptCore/API/JSContext.mm&apos;, u&apos;Source/JavaScriptCore/API/JSContextInternal.h&apos;, u&apos;Source/JavaScriptCore/API/JSManagedValue.h&apos;, u&apos;Source/JavaScriptCore/API/JSManagedValue.mm&apos;, u&apos;Source/JavaScriptCore/API/JSObjectRef.cpp&apos;, u&apos;Source/JavaScriptCore/API/JSValueRef.cpp&apos;, u&apos;Source/JavaScriptCore/API/JSVirtualMachine.mm&apos;, u&apos;Source/JavaScriptCore/API/JSWeakValue.h&apos;, u&apos;Source/JavaScriptCore/API/JSWeakValue.mm&apos;, u&apos;Source/JavaScriptCore/API/JSWeakValueInternal.h&apos;, u&apos;Source/JavaScriptCore/API/JSWrapperMap.mm&apos;, u&apos;Source/JavaScriptCore/API/JavaScriptCore.h&apos;, u&apos;Source/JavaScriptCore/API/tests/testapi.mm&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj&apos;, u&apos;Source/JavaScriptCore/runtime/JSGlobalObject.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/JSGlobalObject.h&apos;]&quot; exit_code: 1
Source/JavaScriptCore/API/JSWeakValueInternal.h:36:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 1 in 20 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>846988</commentid>
    <comment_count>8</comment_count>
      <attachid>191337</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-03-04 16:22:56 -0800</bug_when>
    <thetext>Comment on attachment 191337
style fixes

Attachment 191337 did not pass qt-ews (qt):
Output: http://webkit-commit-queue.appspot.com/results/16906069</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>846994</commentid>
    <comment_count>9</comment_count>
      <attachid>191337</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-03-04 16:28:09 -0800</bug_when>
    <thetext>Comment on attachment 191337
style fixes

Attachment 191337 did not pass qt-wk2-ews (qt):
Output: http://webkit-commit-queue.appspot.com/results/16851547</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>847038</commentid>
    <comment_count>10</comment_count>
      <attachid>191337</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-03-04 16:56:53 -0800</bug_when>
    <thetext>Comment on attachment 191337
style fixes

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

Please address comments before landing.

&gt; Source/JavaScriptCore/API/JSAPIWrapperObject.cpp:56
&gt; +    void* objcObject = thisObject-&gt;getPrivate();

Let&apos;s use a direct data member for the objcObject, and then we don&apos;t need the cast to JSCallbackObject.

&gt; Source/JavaScriptCore/API/JSContext.mm:78
&gt;      return self;

Would be nice to call initWithGlobalContextRef instead of duplicating this code. That can be a follow-up patch.

&gt; Source/JavaScriptCore/API/JSContext.mm:271
&gt; +- (void)garbageCollect
&gt; +{
&gt; +    JSC::APIEntryShim entryShim(toJS(m_context));
&gt; +    toJS(m_context)-&gt;globalData().heap.collectAllGarbage();
&gt; +}

I&apos;m worried, even though this is SPI with a comment about debugging, that folks will find this symbol and use it to bad effect. Let&apos;s link our test code directly against the C++ API, and call that instead.

&gt; Source/JavaScriptCore/API/JSManagedValue.h:39
&gt; +@interface JSManagedValue : JSWeakValue

I&apos;m concerned about adding API surface area here, when we don&apos;t know of clients that want that raw weak behavior. Let&apos;s leave out JSWeakValue. We can always add it later, as a subclass of JSManagedValue or a sibling class.

&gt; Source/JavaScriptCore/API/JSManagedValue.h:42
&gt; +- (id)initWithValue:(JSValue *)value owner:(id)owner;
&gt; ++ (JSManagedValue *)managedValueWithValue:(JSValue *)value owner:(id)owner;

Class methods should be sorted first.

&gt; Source/JavaScriptCore/API/JSManagedValue.mm:43
&gt; +    virtual ~JSManagedValueHandleOwner();

No need for a dtor here, since we don&apos;t do anything it.

&gt; Source/JavaScriptCore/API/JSManagedValue.mm:61
&gt; +- (id)init

Since we don&apos;t export API for this, I don&apos;t think we should have it. There&apos;s no good way for us to test if this works.

&gt; Source/JavaScriptCore/API/JSManagedValue.mm:74
&gt; +    JSC::JSObject* object = toJS(JSValueToObject([value.context globalContextRef], [value JSValueRef], 0));

We don&apos;t want to call JSValueToObject here because that will perform a conversion, possibly allocating a new object. Let&apos;s call JSValueIsObject instead, and be null if not object.

&gt; Source/JavaScriptCore/API/JSObjectRef.cpp:350
&gt; +    if (jsObject-&gt;inherits(&amp;JSCallbackObject&lt;JSAPIWrapperObject&gt;::s_info))
&gt; +        return jsCast&lt;JSCallbackObject&lt;JSAPIWrapperObject&gt;*&gt;(jsObject)-&gt;getPrivate();

Ultimately, I think it would be nice to remove the dependency that requires our automatic wrappers to be JSCallbackObjects. That can be a follow-up patch.

&gt; Source/JavaScriptCore/API/JSWeakValue.h:41
&gt; ++ (id)weakValueWithValue:(JSValue *)value;

Class methods should be sorted first.

&gt; Source/JavaScriptCore/API/JSWrapperMap.mm:120
&gt; +static JSObjectRef JSObjectMakeWrapper(JSContextRef ctx, JSClassRef jsClass, void* data)

Let&apos;s not use the &quot;JSObject&quot; prefix for this function, since that implies that it belongs to the C API. Let&apos;s just call this &quot;makeWrapper&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>847045</commentid>
    <comment_count>11</comment_count>
      <attachid>191337</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2013-03-04 16:59:36 -0800</bug_when>
    <thetext>Comment on attachment 191337
style fixes

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

r+, with a few fixes.  There is an additional issue to  the comments above, like JSValues we should never create a wrapper around a weak/managed value, we should check in objectToValueWithoutCopy for objects deriving from JSWeakValue &amp; unwrap.

&gt; Source/JavaScriptCore/API/JSManagedValue.mm:71
&gt; +

I think we might also need a &quot;- (id)initWithValue:(JSValue *)value&quot; constructor here –
[[JSManagedValue alloc] initWithValue:value] will compile (since initWithValue: is provided by JSWeakValue), and will result in mismatched init/destroy of m_weakOwner.

&gt; Source/JavaScriptCore/API/JSManagedValue.mm:94
&gt; +    return [[[JSManagedValue alloc] initWithValue:value owner:owner] autorelease];

I think Objective-C style here is to make this [self alloc], to better support subclassing.

&gt; Source/JavaScriptCore/API/JSWeakValue.mm:64
&gt; +    return [[[JSWeakValue alloc] initWithValue:value] autorelease];

I think Objective-C style here is to make this [self alloc], to better support subclassing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>847056</commentid>
    <comment_count>12</comment_count>
      <attachid>191337</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-03-04 17:06:26 -0800</bug_when>
    <thetext>Comment on attachment 191337
style fixes

Attachment 191337 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-commit-queue.appspot.com/results/16795679</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>847069</commentid>
    <comment_count>13</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2013-03-04 17:19:23 -0800</bug_when>
    <thetext>(In reply to comment #10)

&gt; &gt; Source/JavaScriptCore/API/JSContext.mm:271
&gt; &gt; +- (void)garbageCollect
&gt; &gt; +{
&gt; &gt; +    JSC::APIEntryShim entryShim(toJS(m_context));
&gt; &gt; +    toJS(m_context)-&gt;globalData().heap.collectAllGarbage();
&gt; &gt; +}
&gt; 
&gt; I&apos;m worried, even though this is SPI with a comment about debugging, that folks will find this symbol and use it to bad effect. Let&apos;s link our test code directly against the C++ API, and call that instead.

Agreed.

&gt; &gt; Source/JavaScriptCore/API/JSManagedValue.h:39
&gt; &gt; +@interface JSManagedValue : JSWeakValue
&gt; 
&gt; I&apos;m concerned about adding API surface area here, when we don&apos;t know of clients that want that raw weak behavior. Let&apos;s leave out JSWeakValue. We can always add it later, as a subclass of JSManagedValue or a sibling class.

I&apos;m okay with this, but I think it&apos;s really ugly if we leave it that JSManagedValues can be used to make weak values, but that the only API to do so is to init with owner:nil (e.g. &quot;[[JSManagedValue alloc] initWithValue:value owner:nil&quot;).  I&apos;d prefer it if we could at least keep the &quot;initWithValue:&quot; constructor.

&gt; &gt; Source/JavaScriptCore/API/JSManagedValue.mm:61
&gt; &gt; +- (id)init
&gt; 
&gt; Since we don&apos;t export API for this, I don&apos;t think we should have it. There&apos;s no good way for us to test if this works.

Yes, we implicitly do export API for this, by subclassing NSObject! :o)
I think we really ought to make this work.

&gt; &gt; Source/JavaScriptCore/API/JSManagedValue.mm:74
&gt; &gt; +    JSC::JSObject* object = toJS(JSValueToObject([value.context globalContextRef], [value JSValueRef], 0));
&gt; 
&gt; We don&apos;t want to call JSValueToObject here because that will perform a conversion, possibly allocating a new object. Let&apos;s call JSValueIsObject instead, and be null if not object.

Yep, this seems incorrect as is – assigning a value to an weak ref should not change the value.

As devils advocate, we could make it such that JSWeak/ManagedValue hold a regular retaining ref to non-object values.  I guess the underlying question is, do we consider primitives to be referenced by any other value.  I&apos;m guessing the correct answer should be no, in which case Geoff is right insta-null.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>847082</commentid>
    <comment_count>14</comment_count>
      <attachid>191337</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-03-04 17:33:51 -0800</bug_when>
    <thetext>Comment on attachment 191337
style fixes

Attachment 191337 did not pass mac-ews (mac):
Output: http://webkit-commit-queue.appspot.com/results/16897109</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>847091</commentid>
    <comment_count>15</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-03-04 17:39:12 -0800</bug_when>
    <thetext>&gt; &gt; I&apos;m concerned about adding API surface area here, when we don&apos;t know of clients that want that raw weak behavior. Let&apos;s leave out JSWeakValue. We can always add it later, as a subclass of JSManagedValue or a sibling class.
&gt; 
&gt; I&apos;m okay with this, but I think it&apos;s really ugly if we leave it that JSManagedValues can be used to make weak values, but that the only API to do so is to init with owner:nil (e.g. &quot;[[JSManagedValue alloc] initWithValue:value owner:nil&quot;).  I&apos;d prefer it if we could at least keep the &quot;initWithValue:&quot; constructor.

So, keep -initWithValue: as a way to make a JSManagedValue that gets auto-nulled? I&apos;m OK with that.

&gt; &gt; &gt; Source/JavaScriptCore/API/JSManagedValue.mm:61
&gt; &gt; &gt; +- (id)init
&gt; &gt; 
&gt; &gt; Since we don&apos;t export API for this, I don&apos;t think we should have it. There&apos;s no good way for us to test if this works.
&gt; 
&gt; Yes, we implicitly do export API for this, by subclassing NSObject! :o)
&gt; I think we really ought to make this work.

Other Cocoa classes don&apos;t work this way. For example, there&apos;s no NSView -init. Declaring an -init in your class declaration implies that it&apos;s reasonable to call it. We don&apos;t want people to call -init because we don&apos;t have a meaningful way to interpret it.

&gt; As devils advocate, we could make it such that JSWeak/ManagedValue hold a regular retaining ref to non-object values.  I guess the underlying question is, do we consider primitives to be referenced by any other value.  I&apos;m guessing the correct answer should be no, in which case Geoff is right insta-null.

The practical reason to insta-null is that our implementation doesn&apos;t have a good way to represent non-object weak references. 

I think you can make a logic argument that non-objects have value semantics in JavaScript, so there&apos;s no such thing as an owner &quot;referencing&quot; a primitive value.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>847138</commentid>
    <comment_count>16</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2013-03-04 18:06:35 -0800</bug_when>
    <thetext>(In reply to comment #15)

&gt; So, keep -initWithValue: as a way to make a JSManagedValue that gets auto-nulled? I&apos;m OK with that.

Yes – specifically I&apos;m suggesting &quot;initWithValue:value&quot; be equivalent to &quot;initWithValue:value owner:nil&quot; – given that JSManagedValue has ephemeron-esque semantics, a managed value whose owner has already been nilled out is effectively a weak reference.

&gt; Other Cocoa classes don&apos;t work this way. For example, there&apos;s no NSView -init. Declaring an -init in your class declaration implies that it&apos;s reasonable to call it. We don&apos;t want people to call -init because we don&apos;t have a meaningful way to interpret it.

NSView is a good example.  It doesn&apos;t declare -init in its @interface (since it isn&apos;t particularly meaningful), but it *does* provide a definition in its @implementation, so that a call to [[NSView alloc] init] is safe, does work and produces an object in an internally consistent state.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>847143</commentid>
    <comment_count>17</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-03-04 18:10:35 -0800</bug_when>
    <thetext>&gt; NSView is a good example.  It doesn&apos;t declare -init in its @interface (since it isn&apos;t particularly meaningful), but it *does* provide a definition in its @implementation, so that a call to [[NSView alloc] init] is safe, does work and produces an object in an internally consistent state.

OK, let&apos;s do that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>847226</commentid>
    <comment_count>18</comment_count>
      <attachid>191337</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-03-04 20:39:27 -0800</bug_when>
    <thetext>Comment on attachment 191337
style fixes

Attachment 191337 did not pass efl-ews (efl):
Output: http://webkit-commit-queue.appspot.com/results/16990032</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>847874</commentid>
    <comment_count>19</comment_count>
      <attachid>191526</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2013-03-05 11:50:42 -0800</bug_when>
    <thetext>Created attachment 191526
fixing issues</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>847904</commentid>
    <comment_count>20</comment_count>
      <attachid>191526</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-03-05 12:13:57 -0800</bug_when>
    <thetext>Comment on attachment 191526
fixing issues

Attachment 191526 did not pass qt-ews (qt):
Output: http://webkit-commit-queue.appspot.com/results/16997091</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>847921</commentid>
    <comment_count>21</comment_count>
      <attachid>191526</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-03-05 12:34:31 -0800</bug_when>
    <thetext>Comment on attachment 191526
fixing issues

Attachment 191526 did not pass qt-wk2-ews (qt):
Output: http://webkit-commit-queue.appspot.com/results/17051230</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>847924</commentid>
    <comment_count>22</comment_count>
      <attachid>191536</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2013-03-05 12:38:40 -0800</bug_when>
    <thetext>Created attachment 191536
qt build fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>847950</commentid>
    <comment_count>23</comment_count>
      <attachid>191536</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-03-05 12:52:41 -0800</bug_when>
    <thetext>Comment on attachment 191536
qt build fix

Attachment 191536 did not pass qt-ews (qt):
Output: http://webkit-commit-queue.appspot.com/results/17000225</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>847951</commentid>
    <comment_count>24</comment_count>
      <attachid>191542</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2013-03-05 12:53:05 -0800</bug_when>
    <thetext>Created attachment 191542
build fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>847988</commentid>
    <comment_count>25</comment_count>
      <attachid>191542</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-03-05 13:13:41 -0800</bug_when>
    <thetext>Comment on attachment 191542
build fix

Attachment 191542 did not pass qt-ews (qt):
Output: http://webkit-commit-queue.appspot.com/results/17013062</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>848013</commentid>
    <comment_count>26</comment_count>
      <attachid>191553</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2013-03-05 13:37:54 -0800</bug_when>
    <thetext>Created attachment 191553
moar build fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>848021</commentid>
    <comment_count>27</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-05 13:40:15 -0800</bug_when>
    <thetext>Attachment 191553 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/API/JSAPIWrapperObject.cpp&apos;, u&apos;Source/JavaScriptCore/API/JSAPIWrapperObject.h&apos;, u&apos;Source/JavaScriptCore/API/JSBase.cpp&apos;, u&apos;Source/JavaScriptCore/API/JSBasePrivate.h&apos;, u&apos;Source/JavaScriptCore/API/JSCallbackObject.cpp&apos;, u&apos;Source/JavaScriptCore/API/JSCallbackObject.h&apos;, u&apos;Source/JavaScriptCore/API/JSContext.mm&apos;, u&apos;Source/JavaScriptCore/API/JSManagedValue.h&apos;, u&apos;Source/JavaScriptCore/API/JSManagedValue.mm&apos;, u&apos;Source/JavaScriptCore/API/JSObjectRef.cpp&apos;, u&apos;Source/JavaScriptCore/API/JSValue.mm&apos;, u&apos;Source/JavaScriptCore/API/JSValueRef.cpp&apos;, u&apos;Source/JavaScriptCore/API/JSVirtualMachine.mm&apos;, u&apos;Source/JavaScriptCore/API/JSWrapperMap.mm&apos;, u&apos;Source/JavaScriptCore/API/JavaScriptCore.h&apos;, u&apos;Source/JavaScriptCore/API/tests/testapi.mm&apos;, u&apos;Source/JavaScriptCore/CMakeLists.txt&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source/JavaScriptCore/GNUmakefile.list.am&apos;, u&apos;Source/JavaScriptCore/JavaScriptCore.gypi&apos;, u&apos;Source/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj&apos;, u&apos;Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj&apos;, u&apos;Source/JavaScriptCore/Target.pri&apos;, u&apos;Source/JavaScriptCore/runtime/JSGlobalObject.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/JSGlobalObject.h&apos;]&quot; exit_code: 1
Source/JavaScriptCore/API/JSAPIWrapperObject.cpp:29:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 in 24 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>848029</commentid>
    <comment_count>28</comment_count>
      <attachid>191555</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2013-03-05 13:47:28 -0800</bug_when>
    <thetext>Created attachment 191555
style fixes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>848102</commentid>
    <comment_count>29</comment_count>
      <attachid>191571</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2013-03-05 14:48:55 -0800</bug_when>
    <thetext>Created attachment 191571
fix JSManagedValue init

We want JSManagedValues to instantly return nil when value is invoked if they&apos;re created using plain init or if they&apos;re passed a JSValue that isn&apos;t an object.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>849394</commentid>
    <comment_count>30</comment_count>
      <attachid>191571</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-03-06 15:56:20 -0800</bug_when>
    <thetext>Comment on attachment 191571
fix JSManagedValue init

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

r=me

&gt; Source/JavaScriptCore/API/JSBase.cpp:114
&gt; +void JSSynchronousGarbageCollect(JSContextRef ctx)

Let&apos;s add &quot;ForDebugging&quot; to the end of the name, in case that helps.

&gt; Source/JavaScriptCore/API/JSBasePrivate.h:55
&gt; +/*!
&gt; +@function
&gt; +@abstract Synchronously runs a full mark-sweep garbage collection.
&gt; +@param ctx The execution context to use.
&gt; +@discussion This function is only used internally for tests. If you&apos;re not 
&gt; +sure you need to use this function then you don&apos;t need to.
&gt; +*/
&gt; +JS_EXPORT void JSSynchronousGarbageCollect(JSContextRef ctx);

Let&apos;s not declare this in the header at all. Just put the declaration in testapi.mm. That way, we&apos;ll reduce the chances that someone uses it accidentally.

&gt; Source/JavaScriptCore/API/JSManagedValue.h:39
&gt; ++ (JSManagedValue *)weakValueWithValue:(JSValue *)value;

This should be &quot;managedValueWithValue&quot; -- that&apos;s the idiomatic ObjC naming scheme.

Not sure that we need this, but I guess it&apos;s OK to have it.

&gt; Source/JavaScriptCore/API/JSManagedValue.mm:91
&gt; +        JSC::JSObject* object = toJS(JSValueToObject([value.context globalContextRef], [value JSValueRef], 0));

You can cast to JSObjectRef here instead of calling JSValueToObject(), since you&apos;ve checked JSValueIsObject().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>850390</commentid>
    <comment_count>31</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2013-03-07 12:45:24 -0800</bug_when>
    <thetext>Committed r145119: &lt;http://trac.webkit.org/changeset/145119&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>190846</attachid>
            <date>2013-02-28 16:46:08 -0800</date>
            <delta_ts>2013-03-04 16:07:08 -0800</delta_ts>
            <desc>patch</desc>
            <filename>the.patch</filename>
            <type>text/plain</type>
            <size>15268</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTQ0Mzg2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMzIEBA
CisyMDEzLTAyLTI4ICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgT2JqZWN0aXZlLUMgQVBJOiBOZWVkIGEgZ29vZCB3YXkgdG8gcmVmZXJlbmNlIGV2
ZW50IGhhbmRsZXJzIHdpdGhvdXQgY2F1c2luZyBjeWNsZXMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMTA4OAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQVBJL0pTTWFuYWdlZFZhbHVlLmg6IEFkZGVk
LgorICAgICAgICAqIEFQSS9KU01hbmFnZWRWYWx1ZS5tbTogQWRkZWQuCisgICAgICAgIChKU01h
bmFnZWRWYWx1ZUhhbmRsZU93bmVyKTogV2Vha0hhbmRsZU93bmVyIHRoYXQgaGFuZGxlcyAobm8g
cHVuIGludGVuZGVkKSBrZWVwaW5nIEpTIHdyYXBwZXJzIGFsaXZlIGFzIGxvbmcgCisgICAgICAg
IGFzIHRoZWlyIG93bmVyJ3Mgd3JhcHBlciBpcyBhbHNvIGFsaXZlLgorICAgICAgICAoaW5pdE1h
bmFnZWRIYW5kbGVPd25lcik6CisgICAgICAgIChtYW5hZ2VkVmFsdWVIYW5kbGVPd25lcik6Cisg
ICAgICAgICgtW0pTTWFuYWdlZFZhbHVlIGluaXRXaXRoVmFsdWU6b3duZXI6XSk6IERlZmF1bHQg
aW5pdGlhbGl6ZXIuIElmIHRoZSBjYWxsZXIgcGFzc2VzIG5pbCBhcyB0aGUgb3duZXIsIHRoZW4g
dGhlIHJldHVybmVkIAorICAgICAgICBKU01hbmFnZWRWYWx1ZSB3aWxsIGJlaGF2ZSBhcyBhIG5v
cm1hbCBKU0M6OldlYWsuCisgICAgICAgICgtW0pTTWFuYWdlZFZhbHVlIGluaXRXaXRoT2JqZWN0
Om93bmVyOmluQ29udGV4dDpdKTogQ29udmVuaWVuY2UgaW5pdGlhbGl6ZXIgd2hpY2ggZ2V0cyBv
ciBjcmVhdGVzIHRoZSB3cmFwcGVyIGZvciB0aGUKKyAgICAgICAgT2JqZWN0aXZlLUMgb2JqZWN0
IHdob3NlIHdyYXBwZXIgd291bGQgYmUgaW4gdGhlIEpTQzo6V2Vhay4KKyAgICAgICAgKC1bSlNN
YW5hZ2VkVmFsdWUgdmFsdWVdKToKKyAgICAgICAgKCsgW21hbmFnZWRWYWx1ZVdpdGhWYWx1ZTpv
d25lcjpdKTogQ29udmVuaWVuY2UgbWV0aG9kIGZvciBjcmVhdGluZyBKU01hbmFnZWRWYWx1ZXMg
d2l0aG91dCBoYXZpbmcgdG8gY2FsbCBhbGxvYy4KKyAgICAgICAgKEpTTWFuYWdlZFZhbHVlSGFu
ZGxlT3duZXI6On5KU01hbmFnZWRWYWx1ZUhhbmRsZU93bmVyKToKKyAgICAgICAgKEpTTWFuYWdl
ZFZhbHVlSGFuZGxlT3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKTogQ2hlY2tzIGlm
IHRoZSBvd25lcidzIHdyYXBwZXIgaXMgbWFya2VkLiBJZiBpdCBpcywgdGhlbiBtYXJrIAorICAg
ICAgICB0aGUgb3duZWQgb2JqZWN0J3Mgd3JhcHBlci4KKyAgICAgICAgKiBBUEkvSmF2YVNjcmlw
dENvcmUuaDoKKyAgICAgICAgKiBBUEkvdGVzdHMvdGVzdGFwaS5tbTogQWRkZWQgYSBzaW1wbGUg
b25jbGljayBoYW5kbGVyIHRlc3QuCisgICAgICAgICgtW1RleHRYWVogc2V0T25jbGljazpdKToK
KyAgICAgICAgKC1bVGV4dFhZWiBvbmNsaWNrXSk6CisgICAgICAgICgtW1RleHRYWVogbG9nOl0p
OgorICAgICAgICAoLVtUZXh0WFlaIGNsaWNrXSk6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAxMy0wMi0yOCAgRmlsaXAgUGl6bG8gIDxm
cGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIERvbid0IHRyeSB0byBlbWl0IHByb2ZpbGluZyBp
ZiB5b3UgZG9uJ3QgaGF2ZSB0aGUgREZHIEpJVC4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvSlNNYW5hZ2VkVmFsdWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTTWFuYWdlZFZhbHVlLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL0pTTWFuYWdlZFZhbHVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0OSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpZm5kZWYgSlNNYW5hZ2VkVmFsdWVfaAorI2RlZmluZSBKU01hbmFn
ZWRWYWx1ZV9oCisKKyNpZiBKU0NfT0JKQ19BUElfRU5BQkxFRAorCisjaW1wb3J0IDxGb3VuZGF0
aW9uL0ZvdW5kYXRpb24uaD4KKworQGNsYXNzIEpTVmFsdWU7CitAY2xhc3MgSlNDb250ZXh0Owor
CitOU19DTEFTU19BVkFJTEFCTEUoMTBfOSwgTkEpCitAaW50ZXJmYWNlIEpTTWFuYWdlZFZhbHVl
IDogTlNPYmplY3QKKworLSAoaWQpaW5pdFdpdGhWYWx1ZTooSlNWYWx1ZSAqKXZhbHVlIG93bmVy
OihpZClvd25lcjsKKy0gKGlkKWluaXRXaXRoT2JqZWN0OihpZCl2YWx1ZSBvd25lcjooaWQpb3du
ZXIgaW5Db250ZXh0OihKU0NvbnRleHQgKiljb250ZXh0OworLSAoSlNWYWx1ZSAqKXZhbHVlOwor
CisrIChKU01hbmFnZWRWYWx1ZSAqKW1hbmFnZWRWYWx1ZVdpdGhWYWx1ZTooSlNWYWx1ZSAqKXZh
bHVlIG93bmVyOihpZClvd25lcjsKKworQGVuZAorCisjZW5kaWYgLy8gSlNDX09CSkNfQVBJX0VO
QUJMRUQKKworI2VuZGlmIC8vIEpTTWFuYWdlZFZhbHVlX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvSlNNYW5hZ2VkVmFsdWUubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU01hbmFnZWRWYWx1ZS5tbQkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvSlNNYW5hZ2VkVmFsdWUubW0JKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSwxMTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAi
SlNNYW5hZ2VkVmFsdWUuaCIKKworI2lmIEpTQ19PQkpDX0FQSV9FTkFCTEVECisKKyNpbXBvcnQg
IkFQSUNhc3QuaCIKKyNpbXBvcnQgIkhlYXAuaCIKKyNpbXBvcnQgIkpTQ29udGV4dEludGVybmFs
LmgiCisjaW1wb3J0ICJKU1ZhbHVlSW50ZXJuYWwuaCIKKyNpbXBvcnQgIldlYWsuaCIKKyNpbXBv
cnQgIldlYWtIYW5kbGVPd25lci5oIgorCitjbGFzcyBKU01hbmFnZWRWYWx1ZUhhbmRsZU93bmVy
IDogcHVibGljIEpTQzo6V2Vha0hhbmRsZU93bmVyIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5K
U01hbmFnZWRWYWx1ZUhhbmRsZU93bmVyKCk7CisgICAgdmlydHVhbCBib29sIGlzUmVhY2hhYmxl
RnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4sIHZvaWQqIGNvbnRleHQs
IEpTQzo6U2xvdFZpc2l0b3ImKTsKK307CisKK3N0YXRpYyBKU01hbmFnZWRWYWx1ZUhhbmRsZU93
bmVyKiBqc01hbmFnZWRWYWx1ZUhhbmRsZU93bmVyID0gMDsKKworc3RhdGljIHZvaWQgaW5pdE1h
bmFnZWRIYW5kbGVPd25lcigpCit7CisgICAganNNYW5hZ2VkVmFsdWVIYW5kbGVPd25lciA9IG5l
dyBKU01hbmFnZWRWYWx1ZUhhbmRsZU93bmVyKCk7Cit9CisKK3N0YXRpYyBKU01hbmFnZWRWYWx1
ZUhhbmRsZU93bmVyKiBtYW5hZ2VkVmFsdWVIYW5kbGVPd25lcigpCit7CisgICAgaWYgKCFqc01h
bmFnZWRWYWx1ZUhhbmRsZU93bmVyKQorICAgICAgICBpbml0TWFuYWdlZEhhbmRsZU93bmVyKCk7
CisgICAgcmV0dXJuIGpzTWFuYWdlZFZhbHVlSGFuZGxlT3duZXI7Cit9CisKK0BpbXBsZW1lbnRh
dGlvbiBKU01hbmFnZWRWYWx1ZSB7CisgICAgSlNDOjpXZWFrPEpTQzo6SlNPYmplY3Q+IG1fdmFs
dWU7Cit9CisKKy0gKGlkKWluaXRXaXRoVmFsdWU6KEpTVmFsdWUgKil2YWx1ZSBvd25lcjooaWQp
b3duZXIKK3sKKyAgICBzZWxmID0gW3N1cGVyIGluaXRdOworICAgIGlmICghc2VsZikKKyAgICAg
ICAgcmV0dXJuIG5pbDsKKworICAgIEpTQ29udGV4dCAqY29udGV4dCA9IHZhbHVlLmNvbnRleHQ7
CisgICAgSlNDOjpKU09iamVjdCogb2JqZWN0ID0gdG9KUyhKU1ZhbHVlVG9PYmplY3QoW2NvbnRl
eHQgZ2xvYmFsQ29udGV4dFJlZl0sIFt2YWx1ZSBKU1ZhbHVlUmVmXSwgMCkpOworICAgIAorICAg
IEpTQzo6SlNPYmplY3QqIG93bmVyV3JhcHBlcjsKKyAgICBpZiAob3duZXIpCisgICAgICAgIG93
bmVyV3JhcHBlciA9IHRvSlMoSlNWYWx1ZVRvT2JqZWN0KFtjb250ZXh0IGdsb2JhbENvbnRleHRS
ZWZdLCBbW2NvbnRleHQgd3JhcHBlckZvck9iakNPYmplY3Q6b3duZXJdIEpTVmFsdWVSZWZdLCAw
KSk7CisgICAgZWxzZQorICAgICAgICBvd25lcldyYXBwZXIgPSAwOworICAgIEpTQzo6V2VhazxK
U0M6OkpTT2JqZWN0PiB3ZWFrVmFsdWUob2JqZWN0LCBtYW5hZ2VkVmFsdWVIYW5kbGVPd25lcigp
LCBvd25lcldyYXBwZXIpOworICAgIG1fdmFsdWUuc3dhcCh3ZWFrVmFsdWUpOworCisgICAgcmV0
dXJuIHNlbGY7Cit9CisKKy0gKGlkKWluaXRXaXRoT2JqZWN0OihpZClvYmplY3Qgb3duZXI6KGlk
KW93bmVyIGluQ29udGV4dDooSlNDb250ZXh0ICopY29udGV4dAoreworICAgIHJldHVybiBbc2Vs
ZiBpbml0V2l0aFZhbHVlOltKU1ZhbHVlIHZhbHVlV2l0aE9iamVjdDpvYmplY3QgaW5Db250ZXh0
OmNvbnRleHRdIG93bmVyOm93bmVyXTsKK30KKworLSAoSlNWYWx1ZSAqKXZhbHVlCit7CisgICAg
SlNDOjpKU09iamVjdCogb2JqZWN0ID0gbV92YWx1ZS5nZXQoKTsKKyAgICBpZiAoIW9iamVjdCkK
KyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICBKU0NvbnRleHQgKmNvbnRleHQgPSBbSlNDb250ZXh0
IGNvbnRleHRXaXRoR2xvYmFsQ29udGV4dFJlZjp0b0dsb2JhbFJlZihvYmplY3QtPnN0cnVjdHVy
ZSgpLT5nbG9iYWxPYmplY3QoKS0+Z2xvYmFsRXhlYygpKV07CisgICAgcmV0dXJuIFtKU1ZhbHVl
IHZhbHVlV2l0aFZhbHVlOnRvUmVmKG9iamVjdCkgaW5Db250ZXh0OmNvbnRleHRdOworfQorCisr
IChKU01hbmFnZWRWYWx1ZSAqKW1hbmFnZWRWYWx1ZVdpdGhWYWx1ZTooSlNWYWx1ZSAqKXZhbHVl
IG93bmVyOihpZClvd25lcgoreworICAgIHJldHVybiBbW1tKU01hbmFnZWRWYWx1ZSBhbGxvY10g
aW5pdFdpdGhWYWx1ZTp2YWx1ZSBvd25lcjpvd25lcl0gYXV0b3JlbGVhc2VdOworfQorCitAZW5k
CisKK0pTTWFuYWdlZFZhbHVlSGFuZGxlT3duZXI6On5KU01hbmFnZWRWYWx1ZUhhbmRsZU93bmVy
KCkKK3sKK30KKworYm9vbCBKU01hbmFnZWRWYWx1ZUhhbmRsZU93bmVyOjppc1JlYWNoYWJsZUZy
b21PcGFxdWVSb290cyhKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+LCB2b2lkKiBjb250ZXh0LCBK
U0M6OlNsb3RWaXNpdG9yJikKK3sKKyAgICBKU0M6OkpTT2JqZWN0KiBvd25lcldyYXBwZXIgPSBz
dGF0aWNfY2FzdDxKU0M6OkpTT2JqZWN0Kj4oY29udGV4dCk7CisgICAgaWYgKCFvd25lcldyYXBw
ZXIpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gSlNDOjpIZWFwOjpoZWFwKG93
bmVyV3JhcHBlciktPmlzTWFya2VkKG93bmVyV3JhcHBlcik7Cit9CisKKyNlbmRpZiAvLyBKU0Nf
T0JKQ19BUElfRU5BQkxFRApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KYXZhU2Ny
aXB0Q29yZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSmF2YVNj
cmlwdENvcmUuaAkocmV2aXNpb24gMTQ0Mzg2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS9KYXZhU2NyaXB0Q29yZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3IEBACiAKICNp
bXBvcnQgIkpTQ29udGV4dC5oIgogI2ltcG9ydCAiSlNWYWx1ZS5oIgorI2ltcG9ydCAiSlNNYW5h
Z2VkVmFsdWUuaCIKICNpbXBvcnQgIkpTVmlydHVhbE1hY2hpbmUuaCIKICNpbXBvcnQgIkpTRXhw
b3J0LmgiCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFwaS5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGku
bW0JKHJldmlzaW9uIDE0NDM4NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMv
dGVzdGFwaS5tbQkod29ya2luZyBjb3B5KQpAQCAtOTYsNiArOTYsNyBAQCBib29sIHRlc3RYWVpU
ZXN0ZWQgPSBmYWxzZTsKIEBwcm90b2NvbCBUZXh0WFlaIDxKU0V4cG9ydD4KIEBwcm9wZXJ0eSBp
bnQgeDsKIEBwcm9wZXJ0eSAocmVhZG9ubHkpIGludCB5OworQHByb3BlcnR5IEpTVmFsdWUgKm9u
Y2xpY2s7CiAtICh2b2lkKXRlc3Q6KE5TU3RyaW5nICopbWVzc2FnZTsKIEBlbmQKIApAQCAtMTAz
LDkgKzEwNCwxMiBAQCBAaW50ZXJmYWNlIFRleHRYWVogOiBOU09iamVjdCA8VGV4dFhZWj4KIEBw
cm9wZXJ0eSBpbnQgeDsKIEBwcm9wZXJ0eSBpbnQgeTsKIEBwcm9wZXJ0eSBpbnQgejsKKy0gKHZv
aWQpY2xpY2s7CiBAZW5kCiAKLUBpbXBsZW1lbnRhdGlvbiBUZXh0WFlaCitAaW1wbGVtZW50YXRp
b24gVGV4dFhZWiB7CisgICAgSlNNYW5hZ2VkVmFsdWUgKm1fb25jbGlja0hhbmRsZXI7Cit9CiBA
c3ludGhlc2l6ZSB4OwogQHN5bnRoZXNpemUgeTsKIEBzeW50aGVzaXplIHo7CkBAIC0xMTMsNiAr
MTE3LDIyIEBAIC0gKHZvaWQpdGVzdDooTlNTdHJpbmcgKiltZXNzYWdlCiB7CiAgICAgdGVzdFhZ
WlRlc3RlZCA9IFttZXNzYWdlIGlzRXF1YWw6QCJ0ZXN0Il0gJiYgeCA9PSAxMyAmIHkgPT0gNCAm
JiB6ID09IDU7CiB9CistICh2b2lkKXNldE9uY2xpY2s6KEpTVmFsdWUgKil2YWx1ZQoreworICAg
IG1fb25jbGlja0hhbmRsZXIgPSBbW0pTTWFuYWdlZFZhbHVlIGFsbG9jXSBpbml0V2l0aFZhbHVl
OnZhbHVlIG93bmVyOnNlbGZdOworfQorLSAoSlNWYWx1ZSAqKW9uY2xpY2sKK3sKKyAgICByZXR1
cm4gW21fb25jbGlja0hhbmRsZXIgdmFsdWVdOworfQorLSAodm9pZCljbGljaworeworICAgIGlm
ICghbV9vbmNsaWNrSGFuZGxlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgSlNWYWx1ZSAqZnVu
Y3Rpb24gPSBbbV9vbmNsaWNrSGFuZGxlciB2YWx1ZV07CisgICAgW2Z1bmN0aW9uIGNhbGxXaXRo
QXJndW1lbnRzOltOU0FycmF5IGFycmF5XV07Cit9CiBAZW5kCiAKIHN0YXRpYyB2b2lkIGNoZWNr
UmVzdWx0KE5TU3RyaW5nICpkZXNjcmlwdGlvbiwgYm9vbCBwYXNzZWQpCkBAIC00ODYsNiArNTA2
LDIxIEBAIHZvaWQgdGVzdE9iamVjdGl2ZUNBUEkoKQogICAgICAgICBKU1ZhbHVlICpyZXN1bHQg
PSBbY29udGV4dDEgZXZhbHVhdGVTY3JpcHQ6QCJwYXNzVmFsdWVCZXR3ZWVuQ29udGV4dHMiXTsK
ICAgICAgICAgY2hlY2tSZXN1bHQoQCJbdmFsdWUgaXNFcXVhbFRvT2JqZWN0OnJlc3VsdF0iLCBb
dmFsdWUgaXNFcXVhbFRvT2JqZWN0OnJlc3VsdF0pOwogICAgIH0KKworICAgIEBhdXRvcmVsZWFz
ZXBvb2wgeworICAgICAgICBKU0NvbnRleHQgKmNvbnRleHQgPSBbW0pTQ29udGV4dCBhbGxvY10g
aW5pdF07CisgICAgICAgIFRleHRYWVogKnRlc3RYWVogPSBbW1RleHRYWVogYWxsb2NdIGluaXRd
OworICAgICAgICBjb250ZXh0W0AidGVzdFhZWiJdID0gdGVzdFhZWjsKKyAgICAgICAgW2NvbnRl
eHQgZXZhbHVhdGVTY3JpcHQ6QCIgXAorICAgICAgICAgICAgZGlkQ2xpY2sgPSBmYWxzZTsgXAor
ICAgICAgICAgICAgdGVzdFhZWi5vbmNsaWNrID0gZnVuY3Rpb24oKSB7IFwKKyAgICAgICAgICAg
ICAgICBkaWRDbGljayA9IHRydWU7IFwKKyAgICAgICAgICAgIH07IFwKKyAgICAgICAgIl07Cisg
ICAgICAgIFt0ZXN0WFlaIGNsaWNrXTsKKyAgICAgICAgSlNWYWx1ZSAqcmVzdWx0ID0gW2NvbnRl
eHQgZXZhbHVhdGVTY3JpcHQ6QCJkaWRDbGljayJdOworICAgICAgICBjaGVja1Jlc3VsdChAIkV2
ZW50IGhhbmRsZXIgb25jbGljayIsIFtyZXN1bHQgdG9Cb29sXSk7CisgICAgfQogfQogCiAjZWxz
ZQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE0NDM4NikKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC04MzAsNiArODMwLDggQEAKIAkJQzI0MDMwNTUxNEI0
MDRFNjAwNzlFQjY0IC8qIENvcGllZFNwYWNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyNDAzMDUzMTRCNDA0QzkwMDc5RUI2NCAvKiBDb3BpZWRT
cGFjZS5jcHAgKi87IH07CiAJCUMyNEQzMUUyMTYxQ0Q2OTUwMDJBQTREQiAvKiBIZWFwU3RhdGlz
dGljcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBD
MjREMzFFMDE2MUNENjk1MDAyQUE0REIgLyogSGVhcFN0YXRpc3RpY3MuY3BwICovOyB9OwogCQlD
MjREMzFFMzE2MUNENjk1MDAyQUE0REIgLyogSGVhcFN0YXRpc3RpY3MuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyNEQzMUUxMTYxQ0Q2OTUwMDJBQTRE
QiAvKiBIZWFwU3RhdGlzdGljcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CisJCUMyNUQ3MDlCMTZERTk5RjQwMEZDQTZCQyAvKiBKU01hbmFnZWRWYWx1
ZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyNUQ3
MDk5MTZERTk5RjQwMEZDQTZCQyAvKiBKU01hbmFnZWRWYWx1ZS5tbSAqLzsgfTsKKwkJQzI1RDcw
OUMxNkRFOTlGNDAwRkNBNkJDIC8qIEpTTWFuYWdlZFZhbHVlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMjVENzA5QTE2REU5OUY0MDBGQ0E2QkMgLyog
SlNNYW5hZ2VkVmFsdWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7
IH07IH07CiAJCUMyNUY4QkNEMTU3NTQ0QTkwMDI0NUI3MSAvKiBJbmNyZW1lbnRhbFN3ZWVwZXIu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzI1RjhC
Q0IxNTc1NDRBOTAwMjQ1QjcxIC8qIEluY3JlbWVudGFsU3dlZXBlci5jcHAgKi87IH07CiAJCUMy
NUY4QkNFMTU3NTQ0QTkwMDI0NUI3MSAvKiBJbmNyZW1lbnRhbFN3ZWVwZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyNUY4QkNDMTU3NTQ0QTkwMDI0
NUI3MSAvKiBJbmNyZW1lbnRhbFN3ZWVwZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlDMkE3RjY4ODE2MDQzMkQ0MDBGNzZCOTggLyogSlNEZXN0
cnVjdGlibGVPYmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEMyQTdGNjg3MTYwNDMyRDQwMEY3NkI5OCAvKiBKU0Rlc3RydWN0aWJsZU9iamVjdC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xNzI1
LDYgKzE3MjcsOCBAQAogCQlDMjQwMzA1MzE0QjQwNEM5MDA3OUVCNjQgLyogQ29waWVkU3BhY2Uu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ29waWVkU3BhY2UuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMjREMzFFMDE2MUNENjk1MDAyQUE0REIg
LyogSGVhcFN0YXRpc3RpY3MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSGVhcFN0YXRpc3RpY3MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMjRE
MzFFMTE2MUNENjk1MDAyQUE0REIgLyogSGVhcFN0YXRpc3RpY3MuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSGVhcFN0YXRpc3RpY3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQzI1RDcwOTkxNkRFOTlGNDAwRkNBNkJDIC8qIEpTTWFuYWdlZFZhbHVlLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gSlNNYW5hZ2VkVmFsdWUubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMyNUQ3MDlBMTZERTk5RjQwMEZDQTZCQyAv
KiBKU01hbmFnZWRWYWx1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU01h
bmFnZWRWYWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMjVGOEJDQjE1NzU0
NEE5MDAyNDVCNzEgLyogSW5jcmVtZW50YWxTd2VlcGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEluY3JlbWVudGFsU3dlZXBlci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUMyNUY4QkNDMTU3NTQ0QTkwMDI0NUI3MSAvKiBJbmNyZW1lbnRhbFN3
ZWVwZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5jcmVtZW50YWxTd2Vl
cGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMyQTdGNjg3MTYwNDMyRDQwMEY3
NkI5OCAvKiBKU0Rlc3RydWN0aWJsZU9iamVjdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBKU0Rlc3RydWN0aWJsZU9iamVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMjIwOCw2ICsyMjEyLDggQEAKIAkJCQlFMTI0QThGNjBFNTU1Nzc1MDAzMDkxRjEgLyog
T3BhcXVlSlNTdHJpbmcuY3BwICovLAogCQkJCUUxMjRBOEY1MEU1NTU3NzUwMDMwOTFGMSAvKiBP
cGFxdWVKU1N0cmluZy5oICovLAogCQkJCTVERTNEMEY0MEREOERERkIwMDQ2ODcxNCAvKiBXZWJL
aXRBdmFpbGFiaWxpdHkuaCAqLywKKwkJCQlDMjVENzA5OTE2REU5OUY0MDBGQ0E2QkMgLyogSlNN
YW5hZ2VkVmFsdWUubW0gKi8sCisJCQkJQzI1RDcwOUExNkRFOTlGNDAwRkNBNkJDIC8qIEpTTWFu
YWdlZFZhbHVlLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IEFQSTsKIAkJCXNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7CkBAIC0yOTIxLDYgKzI5MjcsNyBAQAogCQkJaXNhID0gUEJYSGVhZGVyc0J1aWxk
UGhhc2U7CiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwogCQkJZmlsZXMgPSAoCisJ
CQkJQzI1RDcwOUMxNkRFOTlGNDAwRkNBNkJDIC8qIEpTTWFuYWdlZFZhbHVlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk4NjAxNjFFMzBGM0E4M0MxMDBGODQ3MTAgLyogQWJzdHJhY3RNYWNyb0Fzc2Vt
Ymxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY1NUYwRjUxNEQxMDYzQzAwQUM3NjQ5IC8qIEFi
c3RyYWN0UEMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDM0U1MEUxNkY1Q0QwMEIzNDQ2MCAv
KiBBUElDYXN0LmggaW4gSGVhZGVycyAqLywKQEAgLTQwMDQsNiArNDAxMSw3IEBACiAJCQkJQkND
RjBEMEMwRUYwQjhBNTAwNDEzQzhGIC8qIFN0cnVjdHVyZVN0dWJJbmZvLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTBGOTE5RDI4MTU4NTY3NzMwMDRBNEU3RCAvKiBTeW1ib2xUYWJsZS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlBNzM4NjU1NTExODY5N0I0MDA1NDAyNzkgLyogVGh1bmtHZW5lcmF0
b3JzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUMyNUQ3MDlCMTZERTk5RjQwMEZDQTZCQyAvKiBK
U01hbmFnZWRWYWx1ZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTE0QTQyRTNGMEY0RjYwRUUwMDU5
OTA5OSAvKiBUaW1lb3V0Q2hlY2tlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkY0Mjc0QTE1
OEVCRTkxMDA0Q0I5RkYgLyogdWRpczg2LmMgaW4gU291cmNlcyAqLywKIAkJCQkwRkY0Mjc0MDE1
OEVCRThCMDA0Q0I5RkYgLyogdWRpczg2X2RlY29kZS5jIGluIFNvdXJjZXMgKi8sCg==
</data>
<flag name="review"
          id="211641"
          type_id="1"
          status="-"
          setter="barraclough"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>191334</attachid>
            <date>2013-03-04 16:07:08 -0800</date>
            <delta_ts>2013-03-04 16:12:23 -0800</delta_ts>
            <desc>patch</desc>
            <filename>the.patch</filename>
            <type>text/plain</type>
            <size>53871</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTQ0Njg4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwMyBA
QAorMjAxMy0wMy0wNCAgTWFyayBIYWhuZW5iZXJnICA8bWhhaG5lbmJlcmdAYXBwbGUuY29tPgor
CisgICAgICAgIE9iamVjdGl2ZS1DIEFQSTogTmVlZCBhIGdvb2Qgd2F5IHRvIHJlZmVyZW5jZSBl
dmVudCBoYW5kbGVycyB3aXRob3V0IGNhdXNpbmcgY3ljbGVzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTEwODgKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBhIGNvdXBsZSBuZXcgY2xhc3Nlczog
SlNXZWFrVmFsdWUgYW5kIEpTTWFuYWdlZFZhbHVlLgorCisgICAgICAgIEpTV2Vha1ZhbHVlIGlz
IGV4YWN0bHkgd2hhdCBpdHMgbmFtZSBpbXBsaWVzLS1pdCBpcyBhIHdlYWsgcmVmZXJlbmNlIHRv
IGEgSmF2YVNjcmlwdCB2YWx1ZS4KKworICAgICAgICBKU01hbmFnZWRWYWx1ZSBpcyBsaWtlIGEg
c3BlY2lhbCBraW5kIG9mIHdlYWsgdmFsdWUuIFdoZW4geW91IGNyZWF0ZSBhIEpTTWFuYWdlZFZh
bHVlLCB5b3UgCisgICAgICAgIHN1cHBseSBhbiBPYmplY3RpdmUtQyBvYmplY3QgYXMgaXRzICJv
d25lciIuIEFzIGxvbmcgYXMgdGhlIE9iamVjdGl2ZS1DIG93bmVyIG9iamVjdCByZW1haW5zCisg
ICAgICAgIGFsaXZlIGFuZCBpdHMgd3JhcHBlciByZW1haW5zIGFjY2Vzc2libGUgdG8gdGhlIEpT
QyBnYXJiYWdlIGNvbGxlY3RvciAoZS5nLiBieSBiZWluZyBtYXJrZWQgYnkgCisgICAgICAgIHRo
ZSBnbG9iYWwgb2JqZWN0KSwgdGhlIHJlZmVyZW5jZSB0byB0aGUgSmF2YVNjcmlwdCB2YWx1ZSBp
cyBzdHJvbmcuIEFzIHNvb24gYXMgdGhlIE9iamVjdGl2ZS1DCisgICAgICAgIG93bmVyIGlzIGRl
YWxsb2NhdGVkIG9yIGl0cyB3cmFwcGVyIGJlY29tZXMgaW5hY2Nlc3NpYmxlIHRvIHRoZSBnYXJi
YWdlIGNvbGxlY3RvciwgdGhlIHJlZmVyZW5jZQorICAgICAgICBiZWNvbWVzIHdlYWsuCisKKyAg
ICAgICAgVGhlc2UgdHdvIG5ldyBjbGFzc2VzIGFsbG93IGNsaWVudHMgdG8gbWFpbnRhaW4gcmVm
ZXJlbmNlcyB0byBKYXZhU2NyaXB0IHZhbHVlcyBpbiB0aGUgT2JqZWN0aXZlLUMKKyAgICAgICAg
aGVhcCB3aXRob3V0IGNyZWF0aW5nIHJlZmVyZW5jZSBjeWNsZXMvbGVha2luZyBtZW1vcnkuCisK
KyAgICAgICAgKiBBUEkvSlNBUElXcmFwcGVyT2JqZWN0LmNwcDogQWRkZWQuCisgICAgICAgIChK
U0MpOgorICAgICAgICAoSlNDOjo6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkpT
QVBJV3JhcHBlck9iamVjdDo6SlNBUElXcmFwcGVyT2JqZWN0KTogVGhpcyBpcyBhIHNwZWNpYWwg
SlNPYmplY3QgZm9yIHRoZSBPYmplY3RpdmUtQyBBUEkgdGhhdCBrbm93cworICAgICAgICBmb3Ig
dGhlIHB1cnBvc2VzIG9mIGdhcmJhZ2UgY29sbGVjdGlvbi9tYXJraW5nIHRoYXQgaXQgd3JhcHMg
YW4gb3BhcXVlIE9iamVjdGl2ZS1DIG9iamVjdC4KKyAgICAgICAgKEpTQzo6SlNBUElXcmFwcGVy
T2JqZWN0Ojp2aXNpdENoaWxkcmVuKTogV2UgYWRkIHRoZSBwb2ludGVyIHRvIHRoZSB3cmFwcGVk
IE9iamVjdGl2ZS1DIG9iamVjdCB0byB0aGUgc2V0IG9mCisgICAgICAgIG9wYXF1ZSByb290cyBz
byB0aGF0IHRoZSB3ZWFrIGhhbmRsZSBvd25lciBmb3IgSlNNYW5hZ2VkVmFsdWVzIGNhbiBmaW5k
IGl0IGxhdGVyLgorICAgICAgICAqIEFQSS9KU0FQSVdyYXBwZXJPYmplY3QuaDogQWRkZWQuCisg
ICAgICAgIChKU0MpOgorICAgICAgICAoSlNBUElXcmFwcGVyT2JqZWN0KToKKyAgICAgICAgKiBB
UEkvSlNDYWxsYmFja09iamVjdC5jcHA6CisgICAgICAgIChKU0MpOgorICAgICAgICAqIEFQSS9K
U0NhbGxiYWNrT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3Q6OmRlc3Ry
b3kpOiBNb3ZlZCB0aGlzIHRvIHRoZSBoZWFkZXIgc28gdGhhdCB3ZSBkb24ndCBnZXQgbGluayBl
cnJvcnMgd2l0aCBKU0FQSVdyYXBwZXJPYmplY3QuCisgICAgICAgICogQVBJL0pTQ29udGV4dC5t
bToKKyAgICAgICAgKC1bSlNDb250ZXh0IGluaXRXaXRoVmlydHVhbE1hY2hpbmU6XSk6IFdlIHdl
cmVuJ3QgYWRkaW5nIG1hbnVhbGx5IGFsbG9jYXRlZC9pbml0aWFsaXplZCBKU1ZpcnR1YWxNYWNo
aW5lIG9iamVjdHMgdG8gCisgICAgICAgIHRoZSBnbG9iYWwgY2FjaGUgb2YgdmlydHVhbCBtYWNo
aW5lcy4gVGhlIGluaXQgbWV0aG9kcyBoYW5kbGUgdGhpcyBub3cgcmF0aGVyIHRoYW4gY29udGV4
dFdpdGhHbG9iYWxDb250ZXh0UmVmLCBzaW5jZSAKKyAgICAgICAgbm90IGV2ZXJ5b25lIGlzIGd1
YXJhbnRlZWQgdG8gdXNlIHRoZSBsYXR0ZXIuCisgICAgICAgICgtW0pTQ29udGV4dCBpbml0V2l0
aEdsb2JhbENvbnRleHRSZWY6XSk6CisgICAgICAgICgrW0pTQ29udGV4dCBjb250ZXh0V2l0aEds
b2JhbENvbnRleHRSZWY6XSk6CisgICAgICAgICgtW0pTQ29udGV4dCBnYXJiYWdlQ29sbGVjdF0p
OiBXZSB1c2UgdGhpcyBpbnRlcm5hbGx5IGZvciBhIGZldyB0ZXN0cyBvZiB0aGUgV2Vhay9NYW5h
Z2VkIGNsYXNzZXMgYmVjYXVzZSB3ZSBuZWVkIAorICAgICAgICBtb3JlIGZpbmUtZ3JhaW5lZCBj
b250cm9sIG92ZXIgd2hlbiBHQyBoYXBwZW5zLgorICAgICAgICAqIEFQSS9KU0NvbnRleHRJbnRl
cm5hbC5oOgorICAgICAgICAqIEFQSS9KU01hbmFnZWRWYWx1ZS5oOiBBZGRlZC4KKyAgICAgICAg
KiBBUEkvSlNNYW5hZ2VkVmFsdWUubW06IEFkZGVkLgorICAgICAgICAoSlNNYW5hZ2VkVmFsdWVI
YW5kbGVPd25lcik6CisgICAgICAgIChtYW5hZ2VkVmFsdWVIYW5kbGVPd25lcik6CisgICAgICAg
ICgtW0pTTWFuYWdlZFZhbHVlIGluaXRdKTogV2UgZXhwbGljaXRseSBjYWxsIHRoZSBBUkMgZW50
cnlwb2ludHMgdG8gaW5pdGlhbGl6ZS9nZXQgdGhlIHdlYWsgb3duZXIgZmllbGQgc2luY2Ugd2Ug
ZG9uJ3QgCisgICAgICAgIHVzZSBBUkMgd2hlbiBidWlsZGluZyBvdXIgZnJhbWV3b3JrLgorICAg
ICAgICAoLVtKU01hbmFnZWRWYWx1ZSBpbml0V2l0aFZhbHVlOm93bmVyOl0pOgorICAgICAgICAo
LVtKU01hbmFnZWRWYWx1ZSBkZWFsbG9jXSk6CisgICAgICAgICgrW0pTTWFuYWdlZFZhbHVlIG1h
bmFnZWRWYWx1ZVdpdGhWYWx1ZTpvd25lcjpdKToKKyAgICAgICAgKC1bSlNNYW5hZ2VkVmFsdWUg
d2Vha093bmVyXSk6CisgICAgICAgIChKU01hbmFnZWRWYWx1ZUhhbmRsZU93bmVyOjp+SlNNYW5h
Z2VkVmFsdWVIYW5kbGVPd25lcik6CisgICAgICAgIChKU01hbmFnZWRWYWx1ZUhhbmRsZU93bmVy
Ojppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyk6IElmIHRoZSBPYmplY3RpdmUtQyBvd25lciBp
cyBzdGlsbCBhbGl2ZSAoaS5lLiBsb2FkaW5nIHRoZSB3ZWFrIGZpZWxkCisgICAgICAgIHJldHVy
bnMgbm9uLW5pbCkgYW5kIHRoYXQgdmFsdWUgd2FzIGFkZGVkIHRvIHRoZSBzZXQgb2Ygb3BhcXVl
IHJvb3RzIGJ5IHRoZSB3cmFwcGVyIGZvciB0aGF0IE9iamVjdGl2ZS1DIG93bmVyLCB0aGVuIHRo
ZSB0aGUgCisgICAgICAgIEpTT2JqZWN0IHRvIHdoaWNoIHRoZSBKU01hbmFnZWRPYmplY3QgcmVm
ZXJzIGlzIHN0aWxsIGFsaXZlLgorICAgICAgICAqIEFQSS9KU09iamVjdFJlZi5jcHA6IFdlIGhh
dmUgdG8gYWRkIGV4cGxpY2l0IGNoZWNrcyBmb3IgdGhlIEpTQVBJV3JhcHBlck9iamVjdCwganVz
dCBsaWtlIHRoZSBvdGhlciB0eXBlcyBvZiBKU0NhbGxiYWNrT2JqZWN0cy4KKyAgICAgICAgKEpT
T2JqZWN0R2V0UHJpdmF0ZSk6CisgICAgICAgIChKU09iamVjdFNldFByaXZhdGUpOgorICAgICAg
ICAoSlNPYmplY3RHZXRQcml2YXRlUHJvcGVydHkpOgorICAgICAgICAoSlNPYmplY3RTZXRQcml2
YXRlUHJvcGVydHkpOgorICAgICAgICAoSlNPYmplY3REZWxldGVQcml2YXRlUHJvcGVydHkpOgor
ICAgICAgICAqIEFQSS9KU1ZhbHVlUmVmLmNwcDoKKyAgICAgICAgKEpTVmFsdWVJc09iamVjdE9m
Q2xhc3MpOgorICAgICAgICAqIEFQSS9KU1ZpcnR1YWxNYWNoaW5lLm1tOgorICAgICAgICAoLVtK
U1ZpcnR1YWxNYWNoaW5lIGluaXRXaXRoQ29udGV4dEdyb3VwUmVmOl0pOgorICAgICAgICAoK1tK
U1ZpcnR1YWxNYWNoaW5lIHZpcnR1YWxNYWNoaW5lV2l0aENvbnRleHRHcm91cFJlZjpdKToKKyAg
ICAgICAgKiBBUEkvSlNXZWFrVmFsdWUuaDogQWRkZWQuCisgICAgICAgICogQVBJL0pTV2Vha1Zh
bHVlLm1tOiBBZGRlZC4KKyAgICAgICAgKC1bSlNXZWFrVmFsdWUgaW5pdF0pOiBKU1dlYWtWYWx1
ZSBpcyBqdXN0IEpTTWFuYWdlZFZhbHVlIHdpdGhvdXQgdGhlIG93bmVyIGxvZ2ljLiAKKyAgICAg
ICAgKC1bSlNXZWFrVmFsdWUgaW5pdFdpdGhWYWx1ZTpdKToKKyAgICAgICAgKC1bSlNXZWFrVmFs
dWUgdmFsdWVdKToKKyAgICAgICAgKCtbSlNXZWFrVmFsdWUgd2Vha1ZhbHVlV2l0aFZhbHVlOl0p
OgorICAgICAgICAoLVtKU1dlYWtWYWx1ZSBpbml0V2l0aFdlYWs6SlNDOjpKU0M6Ol0pOgorICAg
ICAgICAqIEFQSS9KU1dlYWtWYWx1ZUludGVybmFsLmg6IEFkZGVkLgorICAgICAgICAqIEFQSS9K
U1dyYXBwZXJNYXAubW06CisgICAgICAgIChKU09iamVjdE1ha2VXcmFwcGVyKTogVGhpcyBpcyBv
dXIgb3duIGludGVybmFsIHZlcnNpb24gb2YgSlNPYmplY3RNYWtlIHdoaWNoIGNyZWF0ZXMgSlNB
UElXcmFwcGVyT2JqZWN0cywgdGhlIE9iai1DIEFQSSAKKyAgICAgICAgdmVyc2lvbiBvZiBKU0Nh
bGxiYWNrT2JqZWN0cy4KKyAgICAgICAgKGNyZWF0ZU9iamVjdFdpdGhDdXN0b21CcmFuZCk6Cisg
ICAgICAgICgtW0pTT2JqQ0NsYXNzSW5mbyB3cmFwcGVyRm9yT2JqZWN0Ol0pOgorICAgICAgICAq
IEFQSS9KYXZhU2NyaXB0Q29yZS5oOgorICAgICAgICAqIEFQSS90ZXN0cy90ZXN0YXBpLm1tOiBB
ZGRlZCBuZXcgdGVzdHMgZm9yIEpTTWFuYWdlZFZhbHVlIGFuZCBKU1dlYWtWYWx1ZSBpbiB0aGUg
Y29udGV4dCBvZiBhbiBvbmNsaWNrIGhhbmRsZXIgZm9yIAorICAgICAgICBhbiBPYmplY3RpdmUt
QyBvYmplY3QgaW5zZXJ0ZWQgaW50byBhIEpTQ29udGV4dC4KKyAgICAgICAgKC1bVGV4dFhZWiBz
ZXRXZWFrT25jbGljazpdKToKKyAgICAgICAgKC1bVGV4dFhZWiBzZXRPbmNsaWNrOl0pOgorICAg
ICAgICAoLVtUZXh0WFlaIHdlYWtPbmNsaWNrXSk6CisgICAgICAgICgtW1RleHRYWVogb25jbGlj
a10pOgorICAgICAgICAoLVtUZXh0WFlaIGNsaWNrXSk6CisgICAgICAgICh0ZXN0T2JqZWN0aXZl
Q0FQSSk6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDogQWRkZWQgdGhlIG5ldyBT
dHJ1Y3R1cmUgZm9yIHRoZSBKU0FQSVdyYXBwZXJPYmplY3QgY2xhc3MuCisgICAgICAgIChKU0M6
OkpTR2xvYmFsT2JqZWN0OjpyZXNldCk6CisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNDOjpK
U0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5oOgorICAgICAgICAoSlNHbG9iYWxPYmplY3QpOgorICAgICAgICAoSlNDOjpKU0ds
b2JhbE9iamVjdDo6b2JqY1dyYXBwZXJPYmplY3RTdHJ1Y3R1cmUpOgorCiAyMDEzLTAzLTA0ICBN
YXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3Zl
IGNvbnRleHRJbnRlcm5hbENvbnRleHQgZnJvbSBKU0NvbnRleHRJbnRlcm5hbC5oCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQVBJV3JhcHBlck9iamVjdC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0FQSVdyYXBwZXJPYmplY3QuY3BwCShy
ZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0FQSVdyYXBwZXJPYmpl
Y3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjQgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNBUElXcmFwcGVyT2JqZWN0LmgiCisKKyNpbmNs
dWRlICJKU0NhbGxiYWNrT2JqZWN0LmgiCisKKyNpZiBKU0NfT0JKQ19BUElfRU5BQkxFRAorCitu
YW1lc3BhY2UgSlNDIHsKKyAgICAKK3RlbXBsYXRlIDw+IGNvbnN0IENsYXNzSW5mbyBKU0NhbGxi
YWNrT2JqZWN0PEpTQVBJV3JhcHBlck9iamVjdD46OnNfaW5mbyA9IHsgIkVudW1lcmFibGVDYWxs
YmFja09iamVjdCIsICZCYXNlOjpzX2luZm8sIDAsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlND
YWxsYmFja09iamVjdCkgfTsKKwordGVtcGxhdGU8PiBjb25zdCBib29sIEpTQ2FsbGJhY2tPYmpl
Y3Q8SlNBUElXcmFwcGVyT2JqZWN0Pjo6bmVlZHNEZXN0cnVjdGlvbiA9IHRydWU7CisKK3RlbXBs
YXRlIDw+CitTdHJ1Y3R1cmUqIEpTQ2FsbGJhY2tPYmplY3Q8SlNBUElXcmFwcGVyT2JqZWN0Pjo6
Y3JlYXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90bykKK3sKKyAgICByZXR1cm4gU3RydWN0dXJlOjpj
cmVhdGUoZ2xvYmFsRGF0YSwgZ2xvYmFsT2JqZWN0LCBwcm90bywgVHlwZUluZm8oT2JqZWN0VHlw
ZSwgU3RydWN0dXJlRmxhZ3MpLCAmc19pbmZvKTsKK30KKworSlNBUElXcmFwcGVyT2JqZWN0OjpK
U0FQSVdyYXBwZXJPYmplY3QoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSkKKyAgICA6IEJhc2UoZ2xvYmFsRGF0YSwgc3RydWN0dXJlKQoreworfQorCit2b2lk
IEpTQVBJV3JhcHBlck9iamVjdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIEpTQzo6U2xv
dFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgSlNDYWxsYmFja09iamVjdDxKU0FQSVdyYXBwZXJP
YmplY3Q+KiB0aGlzT2JqZWN0ID0gSlNDOjpqc0Nhc3Q8SlNDYWxsYmFja09iamVjdDxKU0FQSVdy
YXBwZXJPYmplY3Q+Kj4oY2VsbCk7CisgICAgQ09NUElMRV9BU1NFUlQoU3RydWN0dXJlRmxhZ3Mg
JiBPdmVycmlkZXNWaXNpdENoaWxkcmVuLCBPdmVycmlkZXNWaXNpdENoaWxkcmVuV2l0aG91dFNl
dHRpbmdGbGFnKTsKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKGNlbGwsIHZpc2l0b3IpOworICAg
CisgICAgdm9pZCogb2JqY09iamVjdCA9IHRoaXNPYmplY3QtPmdldFByaXZhdGUoKTsKKyAgICBp
ZiAoIW9iamNPYmplY3QpCisgICAgICAgIHJldHVybjsgCisgICAgdmlzaXRvci5hZGRPcGFxdWVS
b290KG9iamNPYmplY3QpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEpT
Q19PQkpDX0FQSV9FTkFCTEVECkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQVBJ
V3JhcHBlck9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
SlNBUElXcmFwcGVyT2JqZWN0LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTQVBJV3JhcHBlck9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTMg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaWZuZGVmIEpTQVBJV3JhcHBlck9iamVjdF9oCisjZGVmaW5lIEpT
QVBJV3JhcHBlck9iamVjdF9oCisKKyNpbmNsdWRlICJKU0Jhc2UuaCIKKyNpbmNsdWRlICJKU0Rl
c3RydWN0aWJsZU9iamVjdC5oIgorI2luY2x1ZGUgIldlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXIuaCIK
KworI2lmIEpTQ19PQkpDX0FQSV9FTkFCTEVECisKK25hbWVzcGFjZSBKU0MgeworICAgIAorY2xh
c3MgSlNBUElXcmFwcGVyT2JqZWN0IDogcHVibGljIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IHsKK3B1
YmxpYzoKKyAgICB0eXBlZGVmIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IEJhc2U7CisgICAgCisgICAg
c3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBKU0M6OlNsb3RWaXNpdG9yJik7Cisg
ICAgCitwcm90ZWN0ZWQ6CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdz
ID0gT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiB8IEJhc2U6OlN0cnVjdHVyZUZsYWdzOworICAgIAor
ICAgIEpTQVBJV3JhcHBlck9iamVjdChKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqKTsKK307CisK
K30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gSlNDX09CSkNfQVBJX0VOQUJMRUQKKwor
I2VuZGlmIC8vIEpTQVBJV3JhcHBlck9iamVjdF9oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTQ2FsbGJhY2tPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdC5jcHAJKHJldmlzaW9uIDE0NDY3MCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTYxLDEyICs2MSw2IEBAIFN0cnVjdHVyZSogSlNDYWxsYmFja09iamVjdDxKU0dsb2Jh
bE9iamUKICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFsRGF0YSwgZ2xvYmFsT2Jq
ZWN0LCBwcm90bywgVHlwZUluZm8oR2xvYmFsT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCAm
c19pbmZvKTsgCiB9CiAKLXRlbXBsYXRlIDxjbGFzcyBQYXJlbnQ+Ci12b2lkIEpTQ2FsbGJhY2tP
YmplY3Q8UGFyZW50Pjo6ZGVzdHJveShKU0NlbGwqIGNlbGwpCi17Ci0gICAgc3RhdGljX2Nhc3Q8
SlNDYWxsYmFja09iamVjdCo+KGNlbGwpLT5KU0NhbGxiYWNrT2JqZWN0Ojp+SlNDYWxsYmFja09i
amVjdCgpOwotfQotCiB2b2lkIEpTQ2FsbGJhY2tPYmplY3REYXRhOjpmaW5hbGl6ZShIYW5kbGU8
VW5rbm93bj4gaGFuZGxlLCB2b2lkKiBjb250ZXh0KQogewogICAgIEpTQ2xhc3NSZWYganNDbGFz
cyA9IHN0YXRpY19jYXN0PEpTQ2xhc3NSZWY+KGNvbnRleHQpOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmgJKHJldmlzaW9uIDE0NDY3MCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xMzYsNyArMTM2LDEwIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDYWxsYmFja09i
amVjdDxQYXJlbnQ+KiBjcmVhdGUoSlNHbG9iYWxEYXRhJiwgSlNDbGFzc1JlZiwgU3RydWN0dXJl
Kik7CiAKICAgICBzdGF0aWMgY29uc3QgYm9vbCBuZWVkc0Rlc3RydWN0aW9uOwotICAgIHN0YXRp
YyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CisgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwq
IGNlbGwpCisgICAgeworICAgICAgICBzdGF0aWNfY2FzdDxKU0NhbGxiYWNrT2JqZWN0Kj4oY2Vs
bCktPkpTQ2FsbGJhY2tPYmplY3Q6On5KU0NhbGxiYWNrT2JqZWN0KCk7CisgICAgfQogCiAgICAg
dm9pZCBzZXRQcml2YXRlKHZvaWQqIGRhdGEpOwogICAgIHZvaWQqIGdldFByaXZhdGUoKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0Lm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0Lm1tCShyZXZpc2lvbiAxNDQ2NzAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dC5tbQkod29ya2luZyBjb3B5
KQpAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogCiAjaW1wb3J0ICJBUElD
YXN0LmgiCisjaW1wb3J0ICJBUElTaGltcy5oIgogI2ltcG9ydCAiSlNDb250ZXh0SW50ZXJuYWwu
aCIKICNpbXBvcnQgIkpTR2xvYmFsT2JqZWN0LmgiCiAjaW1wb3J0ICJKU1ZhbHVlSW50ZXJuYWwu
aCIKQEAgLTcyLDYgKzczLDggQEAgLSAoaWQpaW5pdFdpdGhWaXJ0dWFsTWFjaGluZTooSlNWaXJ0
dWFsTQogICAgICAgICBjb250ZXh0LmV4Y2VwdGlvbiA9IGV4Y2VwdGlvblZhbHVlOwogICAgIH07
CiAKKyAgICBbbV92aXJ0dWFsTWFjaGluZSBhZGRDb250ZXh0OnNlbGYgZm9yR2xvYmFsQ29udGV4
dFJlZjptX2NvbnRleHRdOworCiAgICAgcmV0dXJuIHNlbGY7CiB9CiAKQEAgLTE4Nyw2ICsxOTAs
OCBAQCAtIChpZClpbml0V2l0aEdsb2JhbENvbnRleHRSZWY6KEpTR2xvYmFsCiAgICAgICAgIGNv
bnRleHQuZXhjZXB0aW9uID0gZXhjZXB0aW9uVmFsdWU7CiAgICAgfTsKIAorICAgIFttX3ZpcnR1
YWxNYWNoaW5lIGFkZENvbnRleHQ6c2VsZiBmb3JHbG9iYWxDb250ZXh0UmVmOm1fY29udGV4dF07
CisKICAgICByZXR1cm4gc2VsZjsKIH0KIApAQCAtMjU0LDEzICsyNTksMTcgQEAgKyAoSlNDb250
ZXh0ICopY29udGV4dFdpdGhHbG9iYWxDb250ZXh0UgogewogICAgIEpTVmlydHVhbE1hY2hpbmUg
KnZpcnR1YWxNYWNoaW5lID0gW0pTVmlydHVhbE1hY2hpbmUgdmlydHVhbE1hY2hpbmVXaXRoQ29u
dGV4dEdyb3VwUmVmOnRvUmVmKCZ0b0pTKGdsb2JhbENvbnRleHQpLT5nbG9iYWxEYXRhKCkpXTsK
ICAgICBKU0NvbnRleHQgKmNvbnRleHQgPSBbdmlydHVhbE1hY2hpbmUgY29udGV4dEZvckdsb2Jh
bENvbnRleHRSZWY6Z2xvYmFsQ29udGV4dF07Ci0gICAgaWYgKCFjb250ZXh0KSB7CisgICAgaWYg
KCFjb250ZXh0KQogICAgICAgICBjb250ZXh0ID0gW1tbSlNDb250ZXh0IGFsbG9jXSBpbml0V2l0
aEdsb2JhbENvbnRleHRSZWY6Z2xvYmFsQ29udGV4dF0gYXV0b3JlbGVhc2VdOwotICAgICAgICBb
dmlydHVhbE1hY2hpbmUgYWRkQ29udGV4dDpjb250ZXh0IGZvckdsb2JhbENvbnRleHRSZWY6Z2xv
YmFsQ29udGV4dF07Ci0gICAgfQogICAgIHJldHVybiBjb250ZXh0OwogfQogCistICh2b2lkKWdh
cmJhZ2VDb2xsZWN0Cit7CisgICAgSlNDOjpBUElFbnRyeVNoaW0gZW50cnlTaGltKHRvSlMobV9j
b250ZXh0KSk7CisgICAgdG9KUyhtX2NvbnRleHQpLT5nbG9iYWxEYXRhKCkuaGVhcC5jb2xsZWN0
QWxsR2FyYmFnZSgpOworfQorCiBAZW5kCiAKIFdlYWtDb250ZXh0UmVmOjpXZWFrQ29udGV4dFJl
ZihKU0NvbnRleHQgKmNvbnRleHQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pT
Q29udGV4dEludGVybmFsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS9KU0NvbnRleHRJbnRlcm5hbC5oCShyZXZpc2lvbiAxNDQ2NzApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL0pTQ29udGV4dEludGVybmFsLmgJKHdvcmtpbmcgY29weSkKQEAgLTczLDYg
KzczLDkgQEAgcHJpdmF0ZToKIAogKyAoSlNDb250ZXh0ICopY29udGV4dFdpdGhHbG9iYWxDb250
ZXh0UmVmOihKU0dsb2JhbENvbnRleHRSZWYpZ2xvYmFsQ29udGV4dDsKIAorLy8gT25seSB1c2Vk
IGZvciB0ZXN0cy4KKy0gKHZvaWQpZ2FyYmFnZUNvbGxlY3Q7CisKIEBwcm9wZXJ0eSAocmVhZG9u
bHksIHJldGFpbikgSlNXcmFwcGVyTWFwICp3cmFwcGVyTWFwOwogCiBAZW5kCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTTWFuYWdlZFZhbHVlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU01hbmFnZWRWYWx1ZS5oCShyZXZpc2lvbiAwKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU01hbmFnZWRWYWx1ZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsNDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEpTTWFuYWdlZFZhbHVlX2gK
KyNkZWZpbmUgSlNNYW5hZ2VkVmFsdWVfaAorCisjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9KU0Jh
c2UuaD4KKworI2lmIEpTQ19PQkpDX0FQSV9FTkFCTEVECisKKyNpbXBvcnQgPEphdmFTY3JpcHRD
b3JlL0pTV2Vha1ZhbHVlLmg+CisKK0BjbGFzcyBKU1ZhbHVlOworQGNsYXNzIEpTQ29udGV4dDsK
KworTlNfQ0xBU1NfQVZBSUxBQkxFKDEwXzksIE5BKQorQGludGVyZmFjZSBKU01hbmFnZWRWYWx1
ZSA6IEpTV2Vha1ZhbHVlCisKKy0gKGlkKWluaXRXaXRoVmFsdWU6KEpTVmFsdWUgKil2YWx1ZSBv
d25lcjooaWQpb3duZXI7CisrIChKU01hbmFnZWRWYWx1ZSAqKW1hbmFnZWRWYWx1ZVdpdGhWYWx1
ZTooSlNWYWx1ZSAqKXZhbHVlIG93bmVyOihpZClvd25lcjsKKworQGVuZAorCisjZW5kaWYgLy8g
SlNDX09CSkNfQVBJX0VOQUJMRUQKKworI2VuZGlmIC8vIEpTTWFuYWdlZFZhbHVlX2gKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNNYW5hZ2VkVmFsdWUubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU01hbmFnZWRWYWx1ZS5tbQkocmV2aXNpb24g
MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNNYW5hZ2VkVmFsdWUubW0JKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSwxMjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisKKyNpbXBvcnQgImNvbmZp
Zy5oIgorI2ltcG9ydCAiSlNNYW5hZ2VkVmFsdWUuaCIKKworI2lmIEpTQ19PQkpDX0FQSV9FTkFC
TEVECisKKyNpbXBvcnQgIkFQSUNhc3QuaCIKKyNpbXBvcnQgIkhlYXAuaCIKKyNpbXBvcnQgIkpT
Q29udGV4dEludGVybmFsLmgiCisjaW1wb3J0ICJKU1dlYWtWYWx1ZUludGVybmFsLmgiCisjaW1w
b3J0ICJKU1ZhbHVlSW50ZXJuYWwuaCIKKyNpbXBvcnQgIldlYWsuaCIKKyNpbXBvcnQgIldlYWtI
YW5kbGVPd25lci5oIgorI2ltcG9ydCAiT2JqY1J1bnRpbWVFeHRyYXMuaCIKKworY2xhc3MgSlNN
YW5hZ2VkVmFsdWVIYW5kbGVPd25lciA6IHB1YmxpYyBKU0M6OldlYWtIYW5kbGVPd25lciB7Citw
dWJsaWM6CisgICAgdmlydHVhbCB+SlNNYW5hZ2VkVmFsdWVIYW5kbGVPd25lcigpOworICAgIHZp
cnR1YWwgYm9vbCBpc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6OkhhbmRsZTxKU0M6OlVu
a25vd24+LCB2b2lkKiBjb250ZXh0LCBKU0M6OlNsb3RWaXNpdG9yJik7Cit9OworCitzdGF0aWMg
SlNNYW5hZ2VkVmFsdWVIYW5kbGVPd25lciogbWFuYWdlZFZhbHVlSGFuZGxlT3duZXIoKQorewor
ICAgIERFRklORV9TVEFUSUNfTE9DQUwoSlNNYW5hZ2VkVmFsdWVIYW5kbGVPd25lciwganNNYW5h
Z2VkVmFsdWVIYW5kbGVPd25lciwgKCkpOworICAgIHJldHVybiAmanNNYW5hZ2VkVmFsdWVIYW5k
bGVPd25lcjsKK30KKworQGludGVyZmFjZSBKU01hbmFnZWRWYWx1ZSAoSW50ZXJuYWwpCistIChp
ZCl3ZWFrT3duZXI7CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBKU01hbmFnZWRWYWx1ZSB7Cisg
ICAgaWQgbV93ZWFrT3duZXI7Cit9CisKKy0gKGlkKWluaXQKK3sKKyAgICBzZWxmID0gW3N1cGVy
IGluaXRdOworICAgIGlmICghc2VsZikKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICAKKyAgICBv
YmpjX2luaXRXZWFrKCZtX3dlYWtPd25lciwgbmlsKTsKKworICAgIHJldHVybiBzZWxmOworfQor
CistIChpZClpbml0V2l0aFZhbHVlOihKU1ZhbHVlICopdmFsdWUgb3duZXI6KGlkKW93bmVyCit7
CisgICAgSlNDOjpKU09iamVjdCogb2JqZWN0ID0gdG9KUyhKU1ZhbHVlVG9PYmplY3QoW3ZhbHVl
LmNvbnRleHQgZ2xvYmFsQ29udGV4dFJlZl0sIFt2YWx1ZSBKU1ZhbHVlUmVmXSwgMCkpOworICAg
IEpTQzo6V2VhazxKU0M6OkpTT2JqZWN0PiB3ZWFrKG9iamVjdCwgbWFuYWdlZFZhbHVlSGFuZGxl
T3duZXIoKSwgc2VsZik7CisgICAgCisgICAgc2VsZiA9IFtzdXBlciBpbml0V2l0aFdlYWs6d2Vh
a107CisgICAgaWYgKCFzZWxmKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgb2JqY19pbml0
V2VhaygmbV93ZWFrT3duZXIsIG93bmVyKTsKKworICAgIHJldHVybiBzZWxmOworfQorCistICh2
b2lkKWRlYWxsb2MKK3sKKyAgICBvYmpjX2Rlc3Ryb3lXZWFrKCZtX3dlYWtPd25lcik7CisgICAg
W3N1cGVyIGRlYWxsb2NdOworfQorCisrIChKU01hbmFnZWRWYWx1ZSAqKW1hbmFnZWRWYWx1ZVdp
dGhWYWx1ZTooSlNWYWx1ZSAqKXZhbHVlIG93bmVyOihpZClvd25lcgoreworICAgIHJldHVybiBb
W1tKU01hbmFnZWRWYWx1ZSBhbGxvY10gaW5pdFdpdGhWYWx1ZTp2YWx1ZSBvd25lcjpvd25lcl0g
YXV0b3JlbGVhc2VdOworfQorCitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBKU01hbmFnZWRWYWx1
ZSAoSW50ZXJuYWwpCisKKy0gKGlkKXdlYWtPd25lcgoreworICAgIHJldHVybiBvYmpjX2xvYWRX
ZWFrKCZtX3dlYWtPd25lcik7Cit9CisKK0BlbmQKKworSlNNYW5hZ2VkVmFsdWVIYW5kbGVPd25l
cjo6fkpTTWFuYWdlZFZhbHVlSGFuZGxlT3duZXIoKQoreworfQorCitib29sIEpTTWFuYWdlZFZh
bHVlSGFuZGxlT3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpT
Qzo6VW5rbm93bj4sIHZvaWQqIGNvbnRleHQsIEpTQzo6U2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7
CisgICAgSlNNYW5hZ2VkVmFsdWUgKm1hbmFnZWRWYWx1ZSA9IHN0YXRpY19jYXN0PEpTTWFuYWdl
ZFZhbHVlICo+KGNvbnRleHQpOworICAgIGlkIHdlYWtPd25lciA9IFttYW5hZ2VkVmFsdWUgd2Vh
a093bmVyXTsKKyAgICBpZiAoIXdlYWtPd25lcikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IHJldHVybiB2aXNpdG9yLmNvbnRhaW5zT3BhcXVlUm9vdCh3ZWFrT3duZXIpOworfQorCisjZW5k
aWYgLy8gSlNDX09CSkNfQVBJX0VOQUJMRUQKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNPYmplY3RSZWYuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNPYmplY3RSZWYuY3BwCShyZXZpc2lvbiAxNDQ2NzApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL0pTT2JqZWN0UmVmLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcsNyBA
QAogI2luY2x1ZGUgIkZ1bmN0aW9uQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJJZGVudGlmaWVy
LmgiCiAjaW5jbHVkZSAiSW5pdGlhbGl6ZVRocmVhZGluZy5oIgorI2luY2x1ZGUgIkpTQVBJV3Jh
cHBlck9iamVjdC5oIgogI2luY2x1ZGUgIkpTQXJyYXkuaCIKICNpbmNsdWRlICJKU0NhbGxiYWNr
Q29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJKU0NhbGxiYWNrRnVuY3Rpb24uaCIKQEAgLTM0NSw2
ICszNDYsOCBAQCB2b2lkKiBKU09iamVjdEdldFByaXZhdGUoSlNPYmplY3RSZWYgb2JqCiAgICAg
ICAgIHJldHVybiBqc0Nhc3Q8SlNDYWxsYmFja09iamVjdDxKU0dsb2JhbE9iamVjdD4qPihqc09i
amVjdCktPmdldFByaXZhdGUoKTsKICAgICBpZiAoanNPYmplY3QtPmluaGVyaXRzKCZKU0NhbGxi
YWNrT2JqZWN0PEpTRGVzdHJ1Y3RpYmxlT2JqZWN0Pjo6c19pbmZvKSkKICAgICAgICAgcmV0dXJu
IGpzQ2FzdDxKU0NhbGxiYWNrT2JqZWN0PEpTRGVzdHJ1Y3RpYmxlT2JqZWN0Pio+KGpzT2JqZWN0
KS0+Z2V0UHJpdmF0ZSgpOworICAgIGlmIChqc09iamVjdC0+aW5oZXJpdHMoJkpTQ2FsbGJhY2tP
YmplY3Q8SlNBUElXcmFwcGVyT2JqZWN0Pjo6c19pbmZvKSkKKyAgICAgICAgcmV0dXJuIGpzQ2Fz
dDxKU0NhbGxiYWNrT2JqZWN0PEpTQVBJV3JhcHBlck9iamVjdD4qPihqc09iamVjdCktPmdldFBy
aXZhdGUoKTsKICAgICAKICAgICByZXR1cm4gMDsKIH0KQEAgLTM2MSw2ICszNjQsMTAgQEAgYm9v
bCBKU09iamVjdFNldFByaXZhdGUoSlNPYmplY3RSZWYgb2JqZQogICAgICAgICBqc0Nhc3Q8SlND
YWxsYmFja09iamVjdDxKU0Rlc3RydWN0aWJsZU9iamVjdD4qPihqc09iamVjdCktPnNldFByaXZh
dGUoZGF0YSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KKyAgICBpZiAoanNPYmplY3Qt
PmluaGVyaXRzKCZKU0NhbGxiYWNrT2JqZWN0PEpTQVBJV3JhcHBlck9iamVjdD46OnNfaW5mbykp
IHsKKyAgICAgICAganNDYXN0PEpTQ2FsbGJhY2tPYmplY3Q8SlNBUElXcmFwcGVyT2JqZWN0Pio+
KGpzT2JqZWN0KS0+c2V0UHJpdmF0ZShkYXRhKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
fQogICAgICAgICAKICAgICByZXR1cm4gZmFsc2U7CiB9CkBAIC0zNzYsNiArMzgzLDggQEAgSlNW
YWx1ZVJlZiBKU09iamVjdEdldFByaXZhdGVQcm9wZXJ0eShKUwogICAgICAgICByZXN1bHQgPSBq
c0Nhc3Q8SlNDYWxsYmFja09iamVjdDxKU0dsb2JhbE9iamVjdD4qPihqc09iamVjdCktPmdldFBy
aXZhdGVQcm9wZXJ0eShuYW1lKTsKICAgICBlbHNlIGlmIChqc09iamVjdC0+aW5oZXJpdHMoJkpT
Q2FsbGJhY2tPYmplY3Q8SlNEZXN0cnVjdGlibGVPYmplY3Q+OjpzX2luZm8pKQogICAgICAgICBy
ZXN1bHQgPSBqc0Nhc3Q8SlNDYWxsYmFja09iamVjdDxKU0Rlc3RydWN0aWJsZU9iamVjdD4qPihq
c09iamVjdCktPmdldFByaXZhdGVQcm9wZXJ0eShuYW1lKTsKKyAgICBlbHNlIGlmIChqc09iamVj
dC0+aW5oZXJpdHMoJkpTQ2FsbGJhY2tPYmplY3Q8SlNBUElXcmFwcGVyT2JqZWN0Pjo6c19pbmZv
KSkKKyAgICAgICAgcmVzdWx0ID0ganNDYXN0PEpTQ2FsbGJhY2tPYmplY3Q8SlNBUElXcmFwcGVy
T2JqZWN0Pio+KGpzT2JqZWN0KS0+Z2V0UHJpdmF0ZVByb3BlcnR5KG5hbWUpOwogICAgIHJldHVy
biB0b1JlZihleGVjLCByZXN1bHQpOwogfQogCkBAIC0zOTQsNiArNDAzLDEwIEBAIGJvb2wgSlNP
YmplY3RTZXRQcml2YXRlUHJvcGVydHkoSlNDb250ZXgKICAgICAgICAganNDYXN0PEpTQ2FsbGJh
Y2tPYmplY3Q8SlNEZXN0cnVjdGlibGVPYmplY3Q+Kj4oanNPYmplY3QpLT5zZXRQcml2YXRlUHJv
cGVydHkoZXhlYy0+Z2xvYmFsRGF0YSgpLCBuYW1lLCBqc1ZhbHVlKTsKICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgfQorICAgIGlmIChqc09iamVjdC0+aW5oZXJpdHMoJkpTQ2FsbGJhY2tPYmpl
Y3Q8SlNBUElXcmFwcGVyT2JqZWN0Pjo6c19pbmZvKSkgeworICAgICAgICBqc0Nhc3Q8SlNDYWxs
YmFja09iamVjdDxKU0FQSVdyYXBwZXJPYmplY3Q+Kj4oanNPYmplY3QpLT5zZXRQcml2YXRlUHJv
cGVydHkoZXhlYy0+Z2xvYmFsRGF0YSgpLCBuYW1lLCBqc1ZhbHVlKTsKKyAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgfQogICAgIHJldHVybiBmYWxzZTsKIH0KIApAQCAtNDExLDYgKzQyNCwxMCBA
QCBib29sIEpTT2JqZWN0RGVsZXRlUHJpdmF0ZVByb3BlcnR5KEpTQ29uCiAgICAgICAgIGpzQ2Fz
dDxKU0NhbGxiYWNrT2JqZWN0PEpTRGVzdHJ1Y3RpYmxlT2JqZWN0Pio+KGpzT2JqZWN0KS0+ZGVs
ZXRlUHJpdmF0ZVByb3BlcnR5KG5hbWUpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9Cisg
ICAgaWYgKGpzT2JqZWN0LT5pbmhlcml0cygmSlNDYWxsYmFja09iamVjdDxKU0FQSVdyYXBwZXJP
YmplY3Q+OjpzX2luZm8pKSB7CisgICAgICAgIGpzQ2FzdDxKU0NhbGxiYWNrT2JqZWN0PEpTQVBJ
V3JhcHBlck9iamVjdD4qPihqc09iamVjdCktPmRlbGV0ZVByaXZhdGVQcm9wZXJ0eShuYW1lKTsK
KyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQogICAgIHJldHVybiBmYWxzZTsKIH0KIApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlUmVmLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmFsdWVSZWYuY3BwCShyZXZpc2lvbiAxNDQ2
NzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmFsdWVSZWYuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJBUElDYXN0LmgiCiAjaW5jbHVk
ZSAiQVBJU2hpbXMuaCIKKyNpbmNsdWRlICJKU0FQSVdyYXBwZXJPYmplY3QuaCIKICNpbmNsdWRl
ICJKU0NhbGxiYWNrT2JqZWN0LmgiCiAKICNpbmNsdWRlIDxydW50aW1lL0pTQ0pTVmFsdWUuaD4K
QEAgLTE0OCw2ICsxNDksOCBAQCBib29sIEpTVmFsdWVJc09iamVjdE9mQ2xhc3MoSlNDb250ZXh0
UmVmCiAgICAgICAgICAgICByZXR1cm4ganNDYXN0PEpTQ2FsbGJhY2tPYmplY3Q8SlNHbG9iYWxP
YmplY3Q+Kj4obyktPmluaGVyaXRzKGpzQ2xhc3MpOwogICAgICAgICBpZiAoby0+aW5oZXJpdHMo
JkpTQ2FsbGJhY2tPYmplY3Q8SlNEZXN0cnVjdGlibGVPYmplY3Q+OjpzX2luZm8pKQogICAgICAg
ICAgICAgcmV0dXJuIGpzQ2FzdDxKU0NhbGxiYWNrT2JqZWN0PEpTRGVzdHJ1Y3RpYmxlT2JqZWN0
Pio+KG8pLT5pbmhlcml0cyhqc0NsYXNzKTsKKyAgICAgICAgaWYgKG8tPmluaGVyaXRzKCZKU0Nh
bGxiYWNrT2JqZWN0PEpTQVBJV3JhcHBlck9iamVjdD46OnNfaW5mbykpCisgICAgICAgICAgICBy
ZXR1cm4ganNDYXN0PEpTQ2FsbGJhY2tPYmplY3Q8SlNBUElXcmFwcGVyT2JqZWN0Pio+KG8pLT5p
bmhlcml0cyhqc0NsYXNzKTsKICAgICB9CiAgICAgcmV0dXJuIGZhbHNlOwogfQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZpcnR1YWxNYWNoaW5lLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWaXJ0dWFsTWFjaGluZS5tbQkocmV2aXNpb24g
MTQ0NjcwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZpcnR1YWxNYWNoaW5lLm1t
CSh3b3JraW5nIGNvcHkpCkBAIC0xMDEsNyArMTAxLDkgQEAgLSAoaWQpaW5pdFdpdGhDb250ZXh0
R3JvdXBSZWY6KEpTQ29udGV4dAogICAgIE5TUG9pbnRlckZ1bmN0aW9uc09wdGlvbnMga2V5T3B0
aW9ucyA9IE5TUG9pbnRlckZ1bmN0aW9uc09wYXF1ZU1lbW9yeSB8IE5TUG9pbnRlckZ1bmN0aW9u
c09wYXF1ZVBlcnNvbmFsaXR5OwogICAgIE5TUG9pbnRlckZ1bmN0aW9uc09wdGlvbnMgdmFsdWVP
cHRpb25zID0gTlNQb2ludGVyRnVuY3Rpb25zV2Vha01lbW9yeSB8IE5TUG9pbnRlckZ1bmN0aW9u
c09iamVjdFBlcnNvbmFsaXR5OwogICAgIG1fY29udGV4dENhY2hlID0gW1tOU01hcFRhYmxlIGFs
bG9jXSBpbml0V2l0aEtleU9wdGlvbnM6a2V5T3B0aW9ucyB2YWx1ZU9wdGlvbnM6dmFsdWVPcHRp
b25zIGNhcGFjaXR5OjBdOwotICAgIAorICAgCisgICAgW0pTVk1XcmFwcGVyQ2FjaGUgYWRkV3Jh
cHBlcjpzZWxmIGZvckpTQ29udGV4dEdyb3VwUmVmOmdyb3VwXTsKKyAKICAgICByZXR1cm4gc2Vs
ZjsKIH0KIApAQCAtMTIzLDEwICsxMjUsOCBAQCBKU0NvbnRleHRHcm91cFJlZiBnZXRHcm91cEZy
b21WaXJ0dWFsTWFjCiArIChKU1ZpcnR1YWxNYWNoaW5lICopdmlydHVhbE1hY2hpbmVXaXRoQ29u
dGV4dEdyb3VwUmVmOihKU0NvbnRleHRHcm91cFJlZilncm91cAogewogICAgIEpTVmlydHVhbE1h
Y2hpbmUgKnZpcnR1YWxNYWNoaW5lID0gW0pTVk1XcmFwcGVyQ2FjaGUgd3JhcHBlckZvckpTQ29u
dGV4dEdyb3VwUmVmOmdyb3VwXTsKLSAgICBpZiAoIXZpcnR1YWxNYWNoaW5lKSB7CisgICAgaWYg
KCF2aXJ0dWFsTWFjaGluZSkKICAgICAgICAgdmlydHVhbE1hY2hpbmUgPSBbW1tKU1ZpcnR1YWxN
YWNoaW5lIGFsbG9jXSBpbml0V2l0aENvbnRleHRHcm91cFJlZjpncm91cF0gYXV0b3JlbGVhc2Vd
OwotICAgICAgICBbSlNWTVdyYXBwZXJDYWNoZSBhZGRXcmFwcGVyOnZpcnR1YWxNYWNoaW5lIGZv
ckpTQ29udGV4dEdyb3VwUmVmOmdyb3VwXTsKLSAgICB9CiAgICAgcmV0dXJuIHZpcnR1YWxNYWNo
aW5lOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTV2Vha1ZhbHVlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1dlYWtWYWx1ZS5oCShy
ZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1dlYWtWYWx1ZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEpTV2Vh
a1ZhbHVlX2gKKyNkZWZpbmUgSlNXZWFrVmFsdWVfaAorCisjaW1wb3J0IDxKYXZhU2NyaXB0Q29y
ZS9KU0Jhc2UuaD4KKworI2lmIEpTQ19PQkpDX0FQSV9FTkFCTEVECisKK0BjbGFzcyBKU1ZhbHVl
OworCitOU19DTEFTU19BVkFJTEFCTEUoMTBfOSwgTkEpCitAaW50ZXJmYWNlIEpTV2Vha1ZhbHVl
IDogTlNPYmplY3QKKworLSAoaWQpaW5pdFdpdGhWYWx1ZTooSlNWYWx1ZSAqKXZhbHVlOworLSAo
SlNWYWx1ZSAqKXZhbHVlOworCisrIChpZCl3ZWFrVmFsdWVXaXRoVmFsdWU6KEpTVmFsdWUgKil2
YWx1ZTsKKworQGVuZAorCisjZW5kaWYgLy8gSlNDX09CSkNfQVBJX0VOQUJMRUQKKworI2VuZGlm
IC8vIEpTV2Vha1ZhbHVlX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNXZWFr
VmFsdWUubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1dlYWtW
YWx1ZS5tbQkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNXZWFr
VmFsdWUubW0JKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw4NCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiSlNXZWFrVmFsdWVJbnRlcm5hbC5oIgorCisjaWYg
SlNDX09CSkNfQVBJX0VOQUJMRUQKKworI2ltcG9ydCAiQVBJQ2FzdC5oIgorI2ltcG9ydCAiSlNW
YWx1ZUludGVybmFsLmgiCisjaW1wb3J0ICJKU0NvbnRleHRJbnRlcm5hbC5oIgorI2ltcG9ydCAi
SlNWYWx1ZVJlZi5oIgorI2ltcG9ydCAiV2Vhay5oIgorCitAaW1wbGVtZW50YXRpb24gSlNXZWFr
VmFsdWUgeworICAgIEpTQzo6V2VhazxKU0M6OkpTT2JqZWN0PiBtX3ZhbHVlOworfQorCistIChp
ZClpbml0Cit7CisgICAgSlNDOjpXZWFrPEpTQzo6SlNPYmplY3Q+IHdlYWs7CisgICAgcmV0dXJu
IFtzZWxmIGluaXRXaXRoV2Vhazp3ZWFrXTsKK30KKworLSAoaWQpaW5pdFdpdGhWYWx1ZTooSlNW
YWx1ZSAqKXZhbHVlCit7CisgICAgSlNDOjpXZWFrPEpTQzo6SlNPYmplY3Q+IHdlYWsodG9KUyhK
U1ZhbHVlVG9PYmplY3QoW3ZhbHVlLmNvbnRleHQgZ2xvYmFsQ29udGV4dFJlZl0sIFt2YWx1ZSBK
U1ZhbHVlUmVmXSwgMCkpKTsKKyAgICByZXR1cm4gW3NlbGYgaW5pdFdpdGhXZWFrOndlYWtdOwor
fQorCistIChKU1ZhbHVlICopdmFsdWUKK3sKKyAgICBpZiAoIW1fdmFsdWUpCisgICAgICAgIHJl
dHVybiBuaWw7CisgICAgSlNDOjpKU09iamVjdCogb2JqZWN0ID0gbV92YWx1ZS5nZXQoKTsKKyAg
ICBKU0NvbnRleHQgKmNvbnRleHQgPSBbSlNDb250ZXh0IGNvbnRleHRXaXRoR2xvYmFsQ29udGV4
dFJlZjp0b0dsb2JhbFJlZihvYmplY3QtPnN0cnVjdHVyZSgpLT5nbG9iYWxPYmplY3QoKS0+Z2xv
YmFsRXhlYygpKV07CisgICAgcmV0dXJuIFtKU1ZhbHVlIHZhbHVlV2l0aFZhbHVlOnRvUmVmKG9i
amVjdCkgaW5Db250ZXh0OmNvbnRleHRdOworfQorCisrIChpZCl3ZWFrVmFsdWVXaXRoVmFsdWU6
KEpTVmFsdWUgKil2YWx1ZQoreworICAgIHJldHVybiBbW1tKU1dlYWtWYWx1ZSBhbGxvY10gaW5p
dFdpdGhWYWx1ZTp2YWx1ZV0gYXV0b3JlbGVhc2VdOworfQorCitAZW5kCisKK0BpbXBsZW1lbnRh
dGlvbiBKU1dlYWtWYWx1ZSAoSW50ZXJuYWwpCisKKy0gKGlkKWluaXRXaXRoV2VhazooSlNDOjpX
ZWFrPEpTQzo6SlNPYmplY3Q+Jil3ZWFrCit7CisgICAgc2VsZiA9IFtzdXBlciBpbml0XTsKKyAg
ICBpZiAoIXNlbGYpCisgICAgICAgIHJldHVybiBuaWw7CisgICAgCisgICAgbV92YWx1ZS5zd2Fw
KHdlYWspOworICAgIAorICAgIHJldHVybiBzZWxmOworfQorCitAZW5kCisKKyNlbmRpZiAvLyBK
U0NfT0JKQ19BUElfRU5BQkxFRApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1dl
YWtWYWx1ZUludGVybmFsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS9KU1dlYWtWYWx1ZUludGVybmFsLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL0pTV2Vha1ZhbHVlSW50ZXJuYWwuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDQ0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBKU1dlYWtWYWx1ZUludGVybmFsX2gKKyNkZWZp
bmUgSlNXZWFrVmFsdWVJbnRlcm5hbF9oCisKKyNpbXBvcnQgIkpTQmFzZS5oIgorCisjaWYgSlND
X09CSkNfQVBJX0VOQUJMRUQKKworI2ltcG9ydCAiV2Vhay5oIgorI2ltcG9ydCAiSlNXZWFrVmFs
dWUuaCIKKworQGludGVyZmFjZSBKU1dlYWtWYWx1ZSAoSW50ZXJuYWwpCisKKy0gKGlkKWluaXRX
aXRoV2VhazooSlNDOjpXZWFrPEpTQzo6SlNPYmplY3Q+Jil3ZWFrOworCitAZW5kCisKKyNlbmRp
ZiAvLyBKU0NfT0JKQ19BUElfRU5BQkxFRAorCisjZW5kaWYgLy8gSlNXZWFrVmFsdWVJbnRlcm5h
bF9oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTV3JhcHBlck1hcC5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTV3JhcHBlck1hcC5tbQkocmV2
aXNpb24gMTQ0NjcwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1dyYXBwZXJNYXAu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDkgQEAKICNpZiBKU0NfT0JKQ19BUElfRU5B
QkxFRAogCiAjaW1wb3J0ICJBUElDYXN0LmgiCisjaW1wb3J0ICJBUElTaGltcy5oIgorI2ltcG9y
dCAiSlNBUElXcmFwcGVyT2JqZWN0LmgiCisjaW1wb3J0ICJKU0NhbGxiYWNrT2JqZWN0LmgiCiAj
aW1wb3J0ICJKU0NvbnRleHRJbnRlcm5hbC5oIgogI2ltcG9ydCAiSlNXcmFwcGVyTWFwLmgiCiAj
aW1wb3J0ICJPYmpDQ2FsbGJhY2tGdW5jdGlvbi5oIgpAQCAtMTE0LDYgKzExNywxOSBAQCBkb25l
OgogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK3N0YXRpYyBKU09iamVjdFJlZiBKU09iamVjdE1h
a2VXcmFwcGVyKEpTQ29udGV4dFJlZiBjdHgsIEpTQ2xhc3NSZWYganNDbGFzcywgdm9pZCogZGF0
YSkKK3sKKyAgICBKU0M6OkV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMoY3R4KTsKKyAgICBKU0M6OkFQ
SUVudHJ5U2hpbSBlbnRyeVNoaW0oZXhlYyk7CisKKyAgICBBU1NFUlQoanNDbGFzcyk7CisgICAg
SlNDOjpKU0NhbGxiYWNrT2JqZWN0PEpTQzo6SlNBUElXcmFwcGVyT2JqZWN0Piogb2JqZWN0ID0g
SlNDOjpKU0NhbGxiYWNrT2JqZWN0PEpTQzo6SlNBUElXcmFwcGVyT2JqZWN0Pjo6Y3JlYXRlKGV4
ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVj
dCgpLT5vYmpjV3JhcHBlck9iamVjdFN0cnVjdHVyZSgpLCBqc0NsYXNzLCBkYXRhKTsKKyAgICBp
ZiAoSlNDOjpKU09iamVjdCogcHJvdG90eXBlID0ganNDbGFzcy0+cHJvdG90eXBlKGV4ZWMpKQor
ICAgICAgICBvYmplY3QtPnNldFByb3RvdHlwZShleGVjLT5nbG9iYWxEYXRhKCksIHByb3RvdHlw
ZSk7CisKKyAgICByZXR1cm4gdG9SZWYob2JqZWN0KTsKK30KKwogLy8gTWFrZSBhbiBvYmplY3Qg
dGhhdCBpcyBpbiBhbGwgd2F5cyBhIGNvbXBsZXRlbHkgdmFuaWxsYSBKYXZhU2NyaXB0IG9iamVj
dCwKIC8vIG90aGVyIHRoYW4gdGhhdCBpdCBoYXMgYSBuYXRpdmUgYnJhbmQgc2V0IHRoYXQgd2ls
bCBiZSBkaXNwbGF5ZWQgYnkgdGhlIGRlZmF1bHQKIC8vIE9iamVjdC5wcm90b3R5cGUudG9TdHJp
bmcgY29udmVyc2lvbi4KQEAgLTEyNCw3ICsxNDAsNyBAQCBzdGF0aWMgSlNWYWx1ZSAqY3JlYXRl
T2JqZWN0V2l0aEN1c3RvbUJyCiAgICAgZGVmaW5pdGlvbi5jbGFzc05hbWUgPSBbYnJhbmQgVVRG
OFN0cmluZ107CiAgICAgZGVmaW5pdGlvbi5wYXJlbnRDbGFzcyA9IHBhcmVudENsYXNzOwogICAg
IEpTQ2xhc3NSZWYgY2xhc3NSZWYgPSBKU0NsYXNzQ3JlYXRlKCZkZWZpbml0aW9uKTsKLSAgICBK
U09iamVjdFJlZiByZXN1bHQgPSBKU09iamVjdE1ha2UoW2NvbnRleHQgZ2xvYmFsQ29udGV4dFJl
Zl0sIGNsYXNzUmVmLCBwcml2YXRlRGF0YSk7CisgICAgSlNPYmplY3RSZWYgcmVzdWx0ID0gSlNP
YmplY3RNYWtlV3JhcHBlcihbY29udGV4dCBnbG9iYWxDb250ZXh0UmVmXSwgY2xhc3NSZWYsIHBy
aXZhdGVEYXRhKTsKICAgICBKU0NsYXNzUmVsZWFzZShjbGFzc1JlZik7CiAgICAgcmV0dXJuIFtb
SlNWYWx1ZSBhbGxvY10gaW5pdFdpdGhWYWx1ZTpyZXN1bHQgaW5Db250ZXh0OmNvbnRleHRdOwog
fQpAQCAtNDA3LDcgKzQyMyw3IEBAIC0gKEpTVmFsdWUgKil3cmFwcGVyRm9yT2JqZWN0OihpZClv
YmplY3QKICAgICAgICAgW3NlbGYgcmVhbGxvY2F0ZUNvbnN0cnVjdG9yQW5kT3JQcm90b3R5cGVd
OwogICAgIEFTU0VSVCghIW1fcHJvdG90eXBlKTsKIAotICAgIEpTT2JqZWN0UmVmIHdyYXBwZXIg
PSBKU09iamVjdE1ha2UoW21fY29udGV4dCBnbG9iYWxDb250ZXh0UmVmXSwgbV9jbGFzc1JlZiwg
W29iamVjdCByZXRhaW5dKTsKKyAgICBKU09iamVjdFJlZiB3cmFwcGVyID0gSlNPYmplY3RNYWtl
V3JhcHBlcihbbV9jb250ZXh0IGdsb2JhbENvbnRleHRSZWZdLCBtX2NsYXNzUmVmLCBbb2JqZWN0
IHJldGFpbl0pOwogICAgIEpTT2JqZWN0U2V0UHJvdG90eXBlKFttX2NvbnRleHQgZ2xvYmFsQ29u
dGV4dFJlZl0sIHdyYXBwZXIsIHRvUmVmKG1fcHJvdG90eXBlLmdldCgpKSk7CiAgICAgcmV0dXJu
IFtKU1ZhbHVlIHZhbHVlV2l0aFZhbHVlOndyYXBwZXIgaW5Db250ZXh0Om1fY29udGV4dF07CiB9
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0phdmFTY3JpcHRDb3JlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KYXZhU2NyaXB0Q29yZS5oCShyZXZp
c2lvbiAxNDQ2NzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0phdmFTY3JpcHRDb3Jl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDcgQEAKIAogI2ltcG9ydCAiSlNDb250ZXh0
LmgiCiAjaW1wb3J0ICJKU1ZhbHVlLmgiCisjaW1wb3J0ICJKU01hbmFnZWRWYWx1ZS5oIgogI2lt
cG9ydCAiSlNWaXJ0dWFsTWFjaGluZS5oIgogI2ltcG9ydCAiSlNFeHBvcnQuaCIKIApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFwaS5tbQkocmV2aXNpb24gMTQ0
NjcwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNCw2ICsyNCw3IEBACiAgKi8KIAogI2ltcG9ydCAiSmF2YVNjcmlwdENv
cmUuaCIKKyNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0pTQ29udGV4dEludGVybmFsLmg+CiAKIGV4
dGVybiAiQyIgYm9vbCBfQmxvY2tfaGFzX3NpZ25hdHVyZShpZCk7CiBleHRlcm4gIkMiIGNvbnN0
IGNoYXIgKiBfQmxvY2tfc2lnbmF0dXJlKGlkKTsKQEAgLTEwMSw2ICsxMDIsOCBAQCBib29sIHRl
c3RYWVpUZXN0ZWQgPSBmYWxzZTsKIEBwcm90b2NvbCBUZXh0WFlaIDxKU0V4cG9ydD4KIEBwcm9w
ZXJ0eSBpbnQgeDsKIEBwcm9wZXJ0eSAocmVhZG9ubHkpIGludCB5OworQHByb3BlcnR5IEpTVmFs
dWUgKm9uY2xpY2s7CitAcHJvcGVydHkgSlNWYWx1ZSAqd2Vha09uY2xpY2s7CiAtICh2b2lkKXRl
c3Q6KE5TU3RyaW5nICopbWVzc2FnZTsKIEBlbmQKIApAQCAtMTA4LDkgKzExMSwxMyBAQCBAaW50
ZXJmYWNlIFRleHRYWVogOiBOU09iamVjdCA8VGV4dFhZWj4KIEBwcm9wZXJ0eSBpbnQgeDsKIEBw
cm9wZXJ0eSBpbnQgeTsKIEBwcm9wZXJ0eSBpbnQgejsKKy0gKHZvaWQpY2xpY2s7CiBAZW5kCiAK
LUBpbXBsZW1lbnRhdGlvbiBUZXh0WFlaCitAaW1wbGVtZW50YXRpb24gVGV4dFhZWiB7CisgICAg
SlNXZWFrVmFsdWUgKm1fd2Vha09uY2xpY2tIYW5kbGVyOworICAgIEpTTWFuYWdlZFZhbHVlICpt
X29uY2xpY2tIYW5kbGVyOworfQogQHN5bnRoZXNpemUgeDsKIEBzeW50aGVzaXplIHk7CiBAc3lu
dGhlc2l6ZSB6OwpAQCAtMTE4LDYgKzEyNSwzMSBAQCAtICh2b2lkKXRlc3Q6KE5TU3RyaW5nICop
bWVzc2FnZQogewogICAgIHRlc3RYWVpUZXN0ZWQgPSBbbWVzc2FnZSBpc0VxdWFsOkAidGVzdCJd
ICYmIHggPT0gMTMgJiB5ID09IDQgJiYgeiA9PSA1OwogfQorLSAodm9pZClzZXRXZWFrT25jbGlj
azooSlNWYWx1ZSAqKXZhbHVlCit7CisgICAgbV93ZWFrT25jbGlja0hhbmRsZXIgPSBbSlNXZWFr
VmFsdWUgd2Vha1ZhbHVlV2l0aFZhbHVlOnZhbHVlXTsKK30KKworLSAodm9pZClzZXRPbmNsaWNr
OihKU1ZhbHVlICopdmFsdWUKK3sKKyAgICBtX29uY2xpY2tIYW5kbGVyID0gW1tKU01hbmFnZWRW
YWx1ZSBhbGxvY10gaW5pdFdpdGhWYWx1ZTp2YWx1ZSBvd25lcjpzZWxmXTsKK30KKy0gKEpTVmFs
dWUgKil3ZWFrT25jbGljaworeworICAgIHJldHVybiBbbV93ZWFrT25jbGlja0hhbmRsZXIgdmFs
dWVdOworfQorLSAoSlNWYWx1ZSAqKW9uY2xpY2sKK3sKKyAgICByZXR1cm4gW21fb25jbGlja0hh
bmRsZXIgdmFsdWVdOworfQorLSAodm9pZCljbGljaworeworICAgIGlmICghbV9vbmNsaWNrSGFu
ZGxlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgSlNWYWx1ZSAqZnVuY3Rpb24gPSBbbV9vbmNs
aWNrSGFuZGxlciB2YWx1ZV07CisgICAgW2Z1bmN0aW9uIGNhbGxXaXRoQXJndW1lbnRzOltOU0Fy
cmF5IGFycmF5XV07Cit9CiBAZW5kCiAKIHN0YXRpYyB2b2lkIGNoZWNrUmVzdWx0KE5TU3RyaW5n
ICpkZXNjcmlwdGlvbiwgYm9vbCBwYXNzZWQpCkBAIC00OTMsNiArNTI1LDYyIEBAIHZvaWQgdGVz
dE9iamVjdGl2ZUNBUEkoKQogICAgICAgICBKU1ZhbHVlICpyZXN1bHQgPSBbY29udGV4dDEgZXZh
bHVhdGVTY3JpcHQ6QCJwYXNzVmFsdWVCZXR3ZWVuQ29udGV4dHMiXTsKICAgICAgICAgY2hlY2tS
ZXN1bHQoQCJbdmFsdWUgaXNFcXVhbFRvT2JqZWN0OnJlc3VsdF0iLCBbdmFsdWUgaXNFcXVhbFRv
T2JqZWN0OnJlc3VsdF0pOwogICAgIH0KKworICAgIEBhdXRvcmVsZWFzZXBvb2wgeworICAgICAg
ICBKU0NvbnRleHQgKmNvbnRleHQgPSBbW0pTQ29udGV4dCBhbGxvY10gaW5pdF07CisgICAgICAg
IFRleHRYWVogKnRlc3RYWVogPSBbW1RleHRYWVogYWxsb2NdIGluaXRdOworCisgICAgICAgIEBh
dXRvcmVsZWFzZXBvb2wgeworICAgICAgICAgICAgY29udGV4dFtAInRlc3RYWVoiXSA9IHRlc3RY
WVo7CisKKyAgICAgICAgICAgIFtjb250ZXh0IGV2YWx1YXRlU2NyaXB0OkAiIFwKKyAgICAgICAg
ICAgICAgICBkaWRDbGljayA9IGZhbHNlOyBcCisgICAgICAgICAgICAgICAgdGVzdFhZWi5vbmNs
aWNrID0gZnVuY3Rpb24oKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgZGlkQ2xpY2sgPSB0cnVl
OyBcCisgICAgICAgICAgICAgICAgfTsgXAorICAgICAgICAgICAgICAgICBcCisgICAgICAgICAg
ICAgICAgdGVzdFhZWi53ZWFrT25jbGljayA9IGZ1bmN0aW9uKCkgeyBcCisgICAgICAgICAgICAg
ICAgICAgIHJldHVybiAnZm9vJzsgXAorICAgICAgICAgICAgICAgIH07IFwKKyAgICAgICAgICAg
ICJdOworICAgICAgICB9CisKKyAgICAgICAgQGF1dG9yZWxlYXNlcG9vbCB7CisgICAgICAgICAg
ICBbdGVzdFhZWiBjbGlja107CisgICAgICAgICAgICBKU1ZhbHVlICpyZXN1bHQgPSBbY29udGV4
dCBldmFsdWF0ZVNjcmlwdDpAImRpZENsaWNrIl07CisgICAgICAgICAgICBjaGVja1Jlc3VsdChA
IkV2ZW50IGhhbmRsZXIgb25jbGljayIsIFtyZXN1bHQgdG9Cb29sXSk7CisgICAgICAgIH0KKwor
ICAgICAgICBbY29udGV4dCBnYXJiYWdlQ29sbGVjdF07CisKKyAgICAgICAgQGF1dG9yZWxlYXNl
cG9vbCB7CisgICAgICAgICAgICBKU1ZhbHVlICpyZXN1bHQgPSBbY29udGV4dCBldmFsdWF0ZVNj
cmlwdDpAInRlc3RYWVoub25jbGljayJdOworICAgICAgICAgICAgTlNMb2coQCIlQCIsIHRlc3RY
WVoub25jbGljayk7CisgICAgICAgICAgICBjaGVja1Jlc3VsdChAIm9uY2xpY2sgc3RpbGwgYXJv
dW5kIGFmdGVyIEdDIiwgIShbcmVzdWx0IGlzTnVsbF0gfHwgW3Jlc3VsdCBpc1VuZGVmaW5lZF0p
KTsKKyAgICAgICAgfQorCisKKyAgICAgICAgQGF1dG9yZWxlYXNlcG9vbCB7CisgICAgICAgICAg
ICBKU1ZhbHVlICpyZXN1bHQgPSBbY29udGV4dCBldmFsdWF0ZVNjcmlwdDpAInRlc3RYWVoud2Vh
a09uY2xpY2siXTsKKyAgICAgICAgICAgIE5TTG9nKEAiJUAiLCB0ZXN0WFlaLndlYWtPbmNsaWNr
KTsKKyAgICAgICAgICAgIGNoZWNrUmVzdWx0KEAid2Vha09uY2xpY2sgbm90IGFyb3VuZCBhZnRl
ciBHQyIsIFtyZXN1bHQgaXNOdWxsXSB8fCBbcmVzdWx0IGlzVW5kZWZpbmVkXSk7CisgICAgICAg
IH0KKworICAgICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKKyAgICAgICAgICAgIFtjb250ZXh0IGV2
YWx1YXRlU2NyaXB0OkAiIFwKKyAgICAgICAgICAgICAgICBkaWRDbGljayA9IGZhbHNlOyBcCisg
ICAgICAgICAgICAgICAgdGVzdFhZWiA9IG51bGw7IFwKKyAgICAgICAgICAgICJdOworICAgICAg
ICB9CisKKyAgICAgICAgW2NvbnRleHQgZ2FyYmFnZUNvbGxlY3RdOworCisgICAgICAgIEBhdXRv
cmVsZWFzZXBvb2wgeworICAgICAgICAgICAgW3Rlc3RYWVogY2xpY2tdOworICAgICAgICAgICAg
SlNWYWx1ZSAqcmVzdWx0ID0gW2NvbnRleHQgZXZhbHVhdGVTY3JpcHQ6QCJkaWRDbGljayJdOwor
ICAgICAgICAgICAgY2hlY2tSZXN1bHQoQCJFdmVudCBoYW5kbGVyIG9uY2xpY2sgZG9lc24ndCBm
aXJlIiwgIVtyZXN1bHQgdG9Cb29sXSk7CisgICAgICAgIH0KKyAgICB9CiB9CiAKICNlbHNlCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTQ0NjcwKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oJKHdvcmtpbmcgY29weSkKQEAgLTgyNSw5ICs4MjUsMTQgQEAKIAkJQzIyMzlEMUIxNjI2MkJE
RDAwNUFDNUZEIC8qIEdDVGhyZWFkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDMjIzOUQxNjE2MjYyQkREMDA1QUM1RkQgLyogR0NUaHJlYWQuaCAqLzsg
fTsKIAkJQzIyNTQ5NDMxNUY3REJBQTAwNjVFODk4IC8qIFNsb3RWaXNpdG9yLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyMjU0OTQyMTVGN0RCQUEw
MDY1RTg5OCAvKiBTbG90VmlzaXRvci5jcHAgKi87IH07CiAJCUMyMkIzMUI5MTQwNTc3RDcwMERC
NDc1QSAvKiBTYW1wbGluZ0NvdW50ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGNzcwMDhFMTQwMkZERDYwMDc4RUIzOSAvKiBTYW1wbGluZ0NvdW50
ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlD
MjMzM0ZCOTE2RTU0MTQ0MDBBNkZCODQgLyogSlNXZWFrVmFsdWUubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMjMzM0ZCNzE2RTU0MTQ0MDBBNkZCODQg
LyogSlNXZWFrVmFsdWUubW0gKi87IH07CisJCUMyMzMzRkJBMTZFNTQxNDQwMEE2RkI4NCAvKiBK
U1dlYWtWYWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQzIzMzNGQjgxNkU1NDE0NDAwQTZGQjg0IC8qIEpTV2Vha1ZhbHVlLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OworCQlDMjMzM0ZCQzE2RTU0NjY2MDBB
NkZCODQgLyogSlNXZWFrVmFsdWVJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQzIzMzNGQkIxNkU1NDY2NjAwQTZGQjg0IC8qIEpTV2Vha1Zh
bHVlSW50ZXJuYWwuaCAqLzsgfTsKIAkJQzI0MDMwNTUxNEI0MDRFNjAwNzlFQjY0IC8qIENvcGll
ZFNwYWNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEMyNDAzMDUzMTRCNDA0QzkwMDc5RUI2NCAvKiBDb3BpZWRTcGFjZS5jcHAgKi87IH07CiAJCUMy
NEQzMUUyMTYxQ0Q2OTUwMDJBQTREQiAvKiBIZWFwU3RhdGlzdGljcy5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMjREMzFFMDE2MUNENjk1MDAyQUE0
REIgLyogSGVhcFN0YXRpc3RpY3MuY3BwICovOyB9OwogCQlDMjREMzFFMzE2MUNENjk1MDAyQUE0
REIgLyogSGVhcFN0YXRpc3RpY3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEMyNEQzMUUxMTYxQ0Q2OTUwMDJBQTREQiAvKiBIZWFwU3RhdGlzdGljcy5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUMyNUQ3
MDlCMTZERTk5RjQwMEZDQTZCQyAvKiBKU01hbmFnZWRWYWx1ZS5tbSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyNUQ3MDk5MTZERTk5RjQwMEZDQTZCQyAv
KiBKU01hbmFnZWRWYWx1ZS5tbSAqLzsgfTsKKwkJQzI1RDcwOUMxNkRFOTlGNDAwRkNBNkJDIC8q
IEpTTWFuYWdlZFZhbHVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDMjVENzA5QTE2REU5OUY0MDBGQ0E2QkMgLyogSlNNYW5hZ2VkVmFsdWUuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07CiAJCUMyNUY4QkNEMTU3
NTQ0QTkwMDI0NUI3MSAvKiBJbmNyZW1lbnRhbFN3ZWVwZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzI1RjhCQ0IxNTc1NDRBOTAwMjQ1QjcxIC8q
IEluY3JlbWVudGFsU3dlZXBlci5jcHAgKi87IH07CiAJCUMyNUY4QkNFMTU3NTQ0QTkwMDI0NUI3
MSAvKiBJbmNyZW1lbnRhbFN3ZWVwZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEMyNUY4QkNDMTU3NTQ0QTkwMDI0NUI3MSAvKiBJbmNyZW1lbnRhbFN3
ZWVwZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQlDMkE3RjY4ODE2MDQzMkQ0MDBGNzZCOTggLyogSlNEZXN0cnVjdGlibGVPYmplY3QuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyQTdGNjg3MTYwNDMy
RDQwMEY3NkI5OCAvKiBKU0Rlc3RydWN0aWJsZU9iamVjdC5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC04MzYsNiArODQxLDggQEAKIAkJQzJDOEQw
MkQxNEEzQzZFMDAwNTc4RTY1IC8qIENvcGllZFNwYWNlSW5saW5lcy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzJDOEQwMkIxNEEzQzZCMjAwNTc4RTY1
IC8qIENvcGllZFNwYWNlSW5saW5lcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCUMyQzhEMDMwMTRBM0NFRkMwMDU3OEU2NSAvKiBDb3BpZWRCbG9j
ay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzJDOEQw
MkUxNEEzQ0VGQzAwNTc4RTY1IC8qIENvcGllZEJsb2NrLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQzJDOEQwMzExNEEzQ0VGQzAwNTc4RTY1IC8q
IEhlYXBCbG9jay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQzJDOEQwMkYxNEEzQ0VGQzAwNTc4RTY1IC8qIEhlYXBCbG9jay5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUMyQ0YzOUMxMTZFMTVBODEwMERE
NjlCRSAvKiBKU0FQSVdyYXBwZXJPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQzJDRjM5QkYxNkUxNUE4MTAwREQ2OUJFIC8qIEpTQVBJV3Jh
cHBlck9iamVjdC5jcHAgKi87IH07CisJCUMyQ0YzOUMyMTZFMTVBODEwMERENjlCRSAvKiBKU0FQ
SVdyYXBwZXJPYmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEMyQ0YzOUMwMTZFMTVBODEwMERENjlCRSAvKiBKU0FQSVdyYXBwZXJPYmplY3QuaCAq
LzsgfTsKIAkJQzJENThDMzQxNTkxMkZFRTAwMjFBODQ0IC8qIEdDQWN0aXZpdHlDYWxsYmFjay5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMkQ1OEMz
MzE1OTEyRkVFMDAyMUE4NDQgLyogR0NBY3Rpdml0eUNhbGxiYWNrLmNwcCAqLzsgfTsKIAkJQzJF
NTI2QkQxNTkwRUYwMDAwNTRFNDhEIC8qIEhlYXBUaW1lci5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMkU1MjZCQjE1OTBFRjAwMDA1NEU0OEQgLyog
SGVhcFRpbWVyLmNwcCAqLzsgfTsKIAkJQzJFNTI2QkUxNTkwRUYwMDAwNTRFNDhEIC8qIEhlYXBU
aW1lci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzJF
NTI2QkMxNTkwRUYwMDAwNTRFNDhEIC8qIEhlYXBUaW1lci5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xNzE4LDkgKzE3MjUsMTQgQEAKIAkJQzIy
MzlEMTUxNjI2MkJERDAwNUFDNUZEIC8qIEdDVGhyZWFkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEdDVGhyZWFkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQzIyMzlEMTYxNjI2MkJERDAwNUFDNUZEIC8qIEdDVGhyZWFkLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdDVGhyZWFkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUMyMjU0OTQyMTVGN0RCQUEwMDY1RTg5OCAvKiBTbG90VmlzaXRvci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTbG90VmlzaXRvci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUMyMzMzRkI3MTZFNTQxNDQwMEE2RkI4NCAvKiBKU1dlYWtW
YWx1ZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEpTV2Vha1Zh
bHVlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMjMzM0ZCODE2RTU0MTQ0MDBB
NkZCODQgLyogSlNXZWFrVmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SlNXZWFrVmFsdWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzIzMzNGQkIxNkU1
NDY2NjAwQTZGQjg0IC8qIEpTV2Vha1ZhbHVlSW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSlNXZWFrVmFsdWVJbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlDMjQwMzA1MzE0QjQwNEM5MDA3OUVCNjQgLyogQ29waWVkU3BhY2UuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ29waWVkU3BhY2UuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMjREMzFFMDE2MUNENjk1MDAyQUE0REIgLyogSGVh
cFN0YXRpc3RpY3MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSGVh
cFN0YXRpc3RpY3MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMjREMzFFMTE2
MUNENjk1MDAyQUE0REIgLyogSGVhcFN0YXRpc3RpY3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSGVhcFN0YXRpc3RpY3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQzI1RDcwOTkxNkRFOTlGNDAwRkNBNkJDIC8qIEpTTWFuYWdlZFZhbHVlLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gSlNNYW5hZ2VkVmFsdWUubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMyNUQ3MDlBMTZERTk5RjQwMEZDQTZCQyAvKiBKU01h
bmFnZWRWYWx1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU01hbmFnZWRW
YWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMjVGOEJDQjE1NzU0NEE5MDAy
NDVCNzEgLyogSW5jcmVtZW50YWxTd2VlcGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEluY3JlbWVudGFsU3dlZXBlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUMyNUY4QkNDMTU3NTQ0QTkwMDI0NUI3MSAvKiBJbmNyZW1lbnRhbFN3ZWVwZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5jcmVtZW50YWxTd2VlcGVyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMyQTdGNjg3MTYwNDMyRDQwMEY3NkI5OCAv
KiBKU0Rlc3RydWN0aWJsZU9iamVjdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBKU0Rlc3RydWN0aWJsZU9iamVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MTcyOSw2ICsxNzQxLDggQEAKIAkJQzJDOEQwMkIxNEEzQzZCMjAwNTc4RTY1IC8qIENvcGllZFNw
YWNlSW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb3BpZWRTcGFj
ZUlubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzJDOEQwMkUxNEEzQ0VG
QzAwNTc4RTY1IC8qIENvcGllZEJsb2NrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IENvcGllZEJsb2NrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMyQzhEMDJG
MTRBM0NFRkMwMDU3OEU2NSAvKiBIZWFwQmxvY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSGVhcEJsb2NrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMyQ0Yz
OUJGMTZFMTVBODEwMERENjlCRSAvKiBKU0FQSVdyYXBwZXJPYmplY3QuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNBUElXcmFwcGVyT2JqZWN0LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzJDRjM5QzAxNkUxNUE4MTAwREQ2OUJFIC8qIEpTQVBJ
V3JhcHBlck9iamVjdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0FQSVdy
YXBwZXJPYmplY3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzJENThDMzMxNTkx
MkZFRTAwMjFBODQ0IC8qIEdDQWN0aXZpdHlDYWxsYmFjay5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBHQ0FjdGl2aXR5Q2FsbGJhY2suY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlDMkU1MjZCQjE1OTBFRjAwMDA1NEU0OEQgLyogSGVhcFRpbWVyLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhlYXBUaW1lci5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMyRTUyNkJDMTU5MEVGMDAwMDU0RTQ4RCAvKiBI
ZWFwVGltZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSGVhcFRpbWVyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMjAyLDYgKzIyMTYsMTMgQEAKIAkJCQlF
MTI0QThGNjBFNTU1Nzc1MDAzMDkxRjEgLyogT3BhcXVlSlNTdHJpbmcuY3BwICovLAogCQkJCUUx
MjRBOEY1MEU1NTU3NzUwMDMwOTFGMSAvKiBPcGFxdWVKU1N0cmluZy5oICovLAogCQkJCTVERTNE
MEY0MEREOERERkIwMDQ2ODcxNCAvKiBXZWJLaXRBdmFpbGFiaWxpdHkuaCAqLywKKwkJCQlDMjVE
NzA5OTE2REU5OUY0MDBGQ0E2QkMgLyogSlNNYW5hZ2VkVmFsdWUubW0gKi8sCisJCQkJQzI1RDcw
OUExNkRFOTlGNDAwRkNBNkJDIC8qIEpTTWFuYWdlZFZhbHVlLmggKi8sCisJCQkJQzJDRjM5QkYx
NkUxNUE4MTAwREQ2OUJFIC8qIEpTQVBJV3JhcHBlck9iamVjdC5jcHAgKi8sCisJCQkJQzJDRjM5
QzAxNkUxNUE4MTAwREQ2OUJFIC8qIEpTQVBJV3JhcHBlck9iamVjdC5oICovLAorCQkJCUMyMzMz
RkI3MTZFNTQxNDQwMEE2RkI4NCAvKiBKU1dlYWtWYWx1ZS5tbSAqLywKKwkJCQlDMjMzM0ZCODE2
RTU0MTQ0MDBBNkZCODQgLyogSlNXZWFrVmFsdWUuaCAqLywKKwkJCQlDMjMzM0ZCQjE2RTU0NjY2
MDBBNkZCODQgLyogSlNXZWFrVmFsdWVJbnRlcm5hbC5oICovLAogCQkJKTsKIAkJCXBhdGggPSBB
UEk7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMjkxNSw2ICsyOTM2LDggQEAKIAkJ
CWlzYSA9IFBCWEhlYWRlcnNCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4
MzY0NzsKIAkJCWZpbGVzID0gKAorCQkJCUMyMzMzRkJBMTZFNTQxNDQwMEE2RkI4NCAvKiBKU1dl
YWtWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQzI1RDcwOUMxNkRFOTlGNDAwRkNBNkJDIC8q
IEpTTWFuYWdlZFZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NjAxNjFFMzBGM0E4M0MxMDBG
ODQ3MTAgLyogQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY1
NUYwRjUxNEQxMDYzQzAwQUM3NjQ5IC8qIEFic3RyYWN0UEMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUJDMThDM0U1MEUxNkY1Q0QwMEIzNDQ2MCAvKiBBUElDYXN0LmggaW4gSGVhZGVycyAqLywKQEAg
LTMxNjUsNiArMzE4OCw3IEBACiAJCQkJQkMxOEM0MkQwRTE2RjVDRDAwQjM0NDYwIC8qIEpTVmFy
aWFibGVPYmplY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2RTNDNjE1MTY3QkFCRDcwMDZENzYw
QSAvKiBKU1ZpcnR1YWxNYWNoaW5lLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzQ4MkU5MzExNkE3
Q0FEMDAzQjA3MTIgLyogSlNXZWFrT2JqZWN0TWFwUmVmSW50ZXJuYWwuaCBpbiBIZWFkZXJzICov
LAorCQkJCUMyQ0YzOUMyMTZFMTVBODEwMERENjlCRSAvKiBKU0FQSVdyYXBwZXJPYmplY3QuaCBp
biBIZWFkZXJzICovLAogCQkJCUE3NDgyQjkzMTE2NzExNDcwMDNCMDcxMiAvKiBKU1dlYWtPYmpl
Y3RNYXBSZWZQcml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDQyNTY2MjE1RURFOThEMDA2
NkE0OUIgLyogSlNXaXRoU2NvcGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2RTNDNjE5MTY3QkFC
RUUwMDZENzYwQSAvKiBKU1dyYXBwZXJNYXAuaCBpbiBIZWFkZXJzICovLApAQCAtMzIwMSw2ICsz
MjI1LDcgQEAKIAkJCQk4NkQzQjJDNjEwMTU2QkRFMDAyODY1RTcgLyogTWFjcm9Bc3NlbWJsZXJB
Uk0uaCBpbiBIZWFkZXJzICovLAogCQkJCTg2QUREMTQ2MEZEREVBOTgwMDA2RUVDMiAvKiBNYWNy
b0Fzc2VtYmxlckFSTXY3LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjM0QjE0QzE2RDQzRTBEMDAx
Q0RBNUEgLyogUG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0LmggaW4gSGVhZGVycyAqLywK
KwkJCQlDMjMzM0ZCQzE2RTU0NjY2MDBBNkZCODQgLyogSlNXZWFrVmFsdWVJbnRlcm5hbC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJODYzQjIzRTAwRkM2MTE4OTAwNzAzQUE0IC8qIE1hY3JvQXNzZW1i
bGVyQ29kZVJlZi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODZDNTY4RTExMUEyMTNFRTAwMDdGN0Yw
IC8qIE1hY3JvQXNzZW1ibGVyTUlQUy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODZBRTY0QTkxMzVF
NUUxQzAwOTYzMDEyIC8qIE1hY3JvQXNzZW1ibGVyU0g0LmggaW4gSGVhZGVycyAqLywKQEAgLTM3
ODAsNiArMzgwNSw3IEBACiAJCQkJMEZEM0M4MjYxNDExNUQ0MDAwRkQ4MUNCIC8qIERGR0RyaXZl
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkYwRjE5RTE2QjcyQTBCMDA1REY5NUIgLyogREZH
RWRnZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkJDMEFFNzE0OTZDN0M0MDBENEZCREQgLyog
REZHRXhpdFByb2ZpbGUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQzJDRjM5QzExNkUxNUE4MTAw
REQ2OUJFIC8qIEpTQVBJV3JhcHBlck9iamVjdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjJC
REMxNTE1MUM1RDREMDBDRDg5MTAgLyogREZHRml4dXBQaGFzZS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk4NkVDOURDNzEzMjhERjgyMDAyQjJBRDcgLyogREZHR3JhcGguY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJODZFQzlEQ0IxMzI4REY4MjAwMkIyQUQ3IC8qIERGR0pJVENvbXBpbGVyLmNwcCBp
biBTb3VyY2VzICovLApAQCAtMzkwOSw2ICszOTM1LDcgQEAKIAkJCQlBN0UyRUE2QzBGQjQ2MENG
MDA2MDFGMDYgLyogTGl0ZXJhbFBhcnNlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRTIwQ0U5
RDE1RjA0QTk1MDBERjM0MzAgLyogTExJbnRDTG9vcC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkw
RjQ2ODBEMjE0QkJEMTY1MDBCRkUyNzIgLyogTExJbnREYXRhLmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCUMyMzMzRkI5MTZFNTQxNDQwMEE2RkI4NCAvKiBKU1dlYWtWYWx1ZS5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCTBGMEI4MzlBMTRCQ0Y0NUQwMDg4NUI0RiAvKiBMTEludEVudHJ5cG9pbnRzLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTBGNDY4MEE4MTRCQTdGQUIwMEJGRTI3MiAvKiBMTEludEV4
Y2VwdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY0NjgwQTQxNEJBN0Y4RDAwQkZFMjcy
IC8qIExMSW50U2xvd1BhdGhzLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMzk5Niw2ICs0MDIzLDcg
QEAKIAkJCQlCQ0NGMEQwQzBFRjBCOEE1MDA0MTNDOEYgLyogU3RydWN0dXJlU3R1YkluZm8uY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMEY5MTlEMjgxNTg1Njc3MzAwNEE0RTdEIC8qIFN5bWJvbFRh
YmxlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3Mzg2NTU1MTE4Njk3QjQwMDU0MDI3OSAvKiBU
aHVua0dlbmVyYXRvcnMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQzI1RDcwOUIxNkRFOTlGNDAw
RkNBNkJDIC8qIEpTTWFuYWdlZFZhbHVlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMTRBNDJFM0Yw
RjRGNjBFRTAwNTk5MDk5IC8qIFRpbWVvdXRDaGVja2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTBGRjQyNzRBMTU4RUJFOTEwMDRDQjlGRiAvKiB1ZGlzODYuYyBpbiBTb3VyY2VzICovLAogCQkJ
CTBGRjQyNzQwMTU4RUJFOEIwMDRDQjlGRiAvKiB1ZGlzODZfZGVjb2RlLmMgaW4gU291cmNlcyAq
LywKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9i
amVjdC5jcHAJKHJldmlzaW9uIDE0NDY3MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgsNiArNDgsNyBAQAog
I2luY2x1ZGUgIkdldHRlclNldHRlci5oIgogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCiAjaW5j
bHVkZSAiSlNBY3RpdmF0aW9uLmgiCisjaW5jbHVkZSAiSlNBUElXcmFwcGVyT2JqZWN0LmgiCiAj
aW5jbHVkZSAiSlNCb3VuZEZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNDYWxsYmFja0NvbnN0cnVj
dG9yLmgiCiAjaW5jbHVkZSAiSlNDYWxsYmFja0Z1bmN0aW9uLmgiCkBAIC0yMjksNiArMjMwLDcg
QEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6cmVzZXQoSlNWYWx1ZSBwcm90bwogICAgIG1fYXJndW1l
bnRzU3RydWN0dXJlLnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIEFyZ3VtZW50czo6Y3Jl
YXRlU3RydWN0dXJlKGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgbV9vYmplY3RQcm90b3R5cGUu
Z2V0KCkpKTsKICAgICBtX2NhbGxiYWNrQ29uc3RydWN0b3JTdHJ1Y3R1cmUuc2V0KGV4ZWMtPmds
b2JhbERhdGEoKSwgdGhpcywgSlNDYWxsYmFja0NvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUo
ZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSkpOwogICAg
IG1fY2FsbGJhY2tPYmplY3RTdHJ1Y3R1cmUuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywg
SlNDYWxsYmFja09iamVjdDxKU0Rlc3RydWN0aWJsZU9iamVjdD46OmNyZWF0ZVN0cnVjdHVyZShl
eGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKSk7CisgICAg
bV9vYmpjV3JhcHBlck9iamVjdFN0cnVjdHVyZS5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlz
LCBKU0NhbGxiYWNrT2JqZWN0PEpTQVBJV3JhcHBlck9iamVjdD46OmNyZWF0ZVN0cnVjdHVyZShl
eGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKSk7OwogCiAg
ICAgbV9hcnJheVByb3RvdHlwZS5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBBcnJheVBy
b3RvdHlwZTo6Y3JlYXRlKGV4ZWMsIHRoaXMsIEFycmF5UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1
cmUoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSkpKTsK
ICAgICAKQEAgLTUxMSw2ICs1MTMsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxk
cmVuKEpTQ2VsCiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fY2FsbGJhY2tDb25z
dHJ1Y3RvclN0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fY2Fs
bGJhY2tGdW5jdGlvblN0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3Qt
Pm1fY2FsbGJhY2tPYmplY3RTdHJ1Y3R1cmUpOworICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2Jq
ZWN0LT5tX29iamNXcmFwcGVyT2JqZWN0U3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgm
dGhpc09iamVjdC0+bV9kYXRlU3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09i
amVjdC0+bV9udWxsUHJvdG90eXBlT2JqZWN0U3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVu
ZCgmdGhpc09iamVjdC0+bV9lcnJvclN0cnVjdHVyZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgJKHJldmlzaW9uIDE0NDY3MCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTE0MSw2ICsxNDEsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgV3JpdGVCYXJyaWVyPFN0
cnVjdHVyZT4gbV9jYWxsYmFja0NvbnN0cnVjdG9yU3RydWN0dXJlOwogICAgIFdyaXRlQmFycmll
cjxTdHJ1Y3R1cmU+IG1fY2FsbGJhY2tGdW5jdGlvblN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJp
ZXI8U3RydWN0dXJlPiBtX2NhbGxiYWNrT2JqZWN0U3RydWN0dXJlOworICAgIFdyaXRlQmFycmll
cjxTdHJ1Y3R1cmU+IG1fb2JqY1dyYXBwZXJPYmplY3RTdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJy
aWVyPFN0cnVjdHVyZT4gbV9kYXRlU3RydWN0dXJlOwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1
cmU+IG1fbnVsbFByb3RvdHlwZU9iamVjdFN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3Ry
dWN0dXJlPiBtX2Vycm9yU3RydWN0dXJlOwpAQCAtMzAwLDYgKzMwMSw3IEBAIHB1YmxpYzoKICAg
ICBTdHJ1Y3R1cmUqIGNhbGxiYWNrQ29uc3RydWN0b3JTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVy
biBtX2NhbGxiYWNrQ29uc3RydWN0b3JTdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUq
IGNhbGxiYWNrRnVuY3Rpb25TdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2NhbGxiYWNrRnVu
Y3Rpb25TdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIGNhbGxiYWNrT2JqZWN0U3Ry
dWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9jYWxsYmFja09iamVjdFN0cnVjdHVyZS5nZXQoKTsg
fQorICAgIFN0cnVjdHVyZSogb2JqY1dyYXBwZXJPYmplY3RTdHJ1Y3R1cmUoKSBjb25zdCB7IHJl
dHVybiBtX29iamNXcmFwcGVyT2JqZWN0U3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJl
KiBkYXRlU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9kYXRlU3RydWN0dXJlLmdldCgpOyB9
CiAgICAgU3RydWN0dXJlKiBudWxsUHJvdG90eXBlT2JqZWN0U3RydWN0dXJlKCkgY29uc3QgeyBy
ZXR1cm4gbV9udWxsUHJvdG90eXBlT2JqZWN0U3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0
dXJlKiBlcnJvclN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fZXJyb3JTdHJ1Y3R1cmUuZ2V0
KCk7IH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>191337</attachid>
            <date>2013-03-04 16:12:23 -0800</date>
            <delta_ts>2013-03-05 11:50:42 -0800</delta_ts>
            <desc>style fixes</desc>
            <filename>the.patch</filename>
            <type>text/plain</type>
            <size>53866</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTQ0NjkzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwMyBA
QAorMjAxMy0wMy0wNCAgTWFyayBIYWhuZW5iZXJnICA8bWhhaG5lbmJlcmdAYXBwbGUuY29tPgor
CisgICAgICAgIE9iamVjdGl2ZS1DIEFQSTogTmVlZCBhIGdvb2Qgd2F5IHRvIHJlZmVyZW5jZSBl
dmVudCBoYW5kbGVycyB3aXRob3V0IGNhdXNpbmcgY3ljbGVzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTEwODgKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBhIGNvdXBsZSBuZXcgY2xhc3Nlczog
SlNXZWFrVmFsdWUgYW5kIEpTTWFuYWdlZFZhbHVlLgorCisgICAgICAgIEpTV2Vha1ZhbHVlIGlz
IGV4YWN0bHkgd2hhdCBpdHMgbmFtZSBpbXBsaWVzLS1pdCBpcyBhIHdlYWsgcmVmZXJlbmNlIHRv
IGEgSmF2YVNjcmlwdCB2YWx1ZS4KKworICAgICAgICBKU01hbmFnZWRWYWx1ZSBpcyBsaWtlIGEg
c3BlY2lhbCBraW5kIG9mIHdlYWsgdmFsdWUuIFdoZW4geW91IGNyZWF0ZSBhIEpTTWFuYWdlZFZh
bHVlLCB5b3UgCisgICAgICAgIHN1cHBseSBhbiBPYmplY3RpdmUtQyBvYmplY3QgYXMgaXRzICJv
d25lciIuIEFzIGxvbmcgYXMgdGhlIE9iamVjdGl2ZS1DIG93bmVyIG9iamVjdCByZW1haW5zCisg
ICAgICAgIGFsaXZlIGFuZCBpdHMgd3JhcHBlciByZW1haW5zIGFjY2Vzc2libGUgdG8gdGhlIEpT
QyBnYXJiYWdlIGNvbGxlY3RvciAoZS5nLiBieSBiZWluZyBtYXJrZWQgYnkgCisgICAgICAgIHRo
ZSBnbG9iYWwgb2JqZWN0KSwgdGhlIHJlZmVyZW5jZSB0byB0aGUgSmF2YVNjcmlwdCB2YWx1ZSBp
cyBzdHJvbmcuIEFzIHNvb24gYXMgdGhlIE9iamVjdGl2ZS1DCisgICAgICAgIG93bmVyIGlzIGRl
YWxsb2NhdGVkIG9yIGl0cyB3cmFwcGVyIGJlY29tZXMgaW5hY2Nlc3NpYmxlIHRvIHRoZSBnYXJi
YWdlIGNvbGxlY3RvciwgdGhlIHJlZmVyZW5jZQorICAgICAgICBiZWNvbWVzIHdlYWsuCisKKyAg
ICAgICAgVGhlc2UgdHdvIG5ldyBjbGFzc2VzIGFsbG93IGNsaWVudHMgdG8gbWFpbnRhaW4gcmVm
ZXJlbmNlcyB0byBKYXZhU2NyaXB0IHZhbHVlcyBpbiB0aGUgT2JqZWN0aXZlLUMKKyAgICAgICAg
aGVhcCB3aXRob3V0IGNyZWF0aW5nIHJlZmVyZW5jZSBjeWNsZXMvbGVha2luZyBtZW1vcnkuCisK
KyAgICAgICAgKiBBUEkvSlNBUElXcmFwcGVyT2JqZWN0LmNwcDogQWRkZWQuCisgICAgICAgIChK
U0MpOgorICAgICAgICAoSlNDOjo6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkpT
QVBJV3JhcHBlck9iamVjdDo6SlNBUElXcmFwcGVyT2JqZWN0KTogVGhpcyBpcyBhIHNwZWNpYWwg
SlNPYmplY3QgZm9yIHRoZSBPYmplY3RpdmUtQyBBUEkgdGhhdCBrbm93cworICAgICAgICBmb3Ig
dGhlIHB1cnBvc2VzIG9mIGdhcmJhZ2UgY29sbGVjdGlvbi9tYXJraW5nIHRoYXQgaXQgd3JhcHMg
YW4gb3BhcXVlIE9iamVjdGl2ZS1DIG9iamVjdC4KKyAgICAgICAgKEpTQzo6SlNBUElXcmFwcGVy
T2JqZWN0Ojp2aXNpdENoaWxkcmVuKTogV2UgYWRkIHRoZSBwb2ludGVyIHRvIHRoZSB3cmFwcGVk
IE9iamVjdGl2ZS1DIG9iamVjdCB0byB0aGUgc2V0IG9mCisgICAgICAgIG9wYXF1ZSByb290cyBz
byB0aGF0IHRoZSB3ZWFrIGhhbmRsZSBvd25lciBmb3IgSlNNYW5hZ2VkVmFsdWVzIGNhbiBmaW5k
IGl0IGxhdGVyLgorICAgICAgICAqIEFQSS9KU0FQSVdyYXBwZXJPYmplY3QuaDogQWRkZWQuCisg
ICAgICAgIChKU0MpOgorICAgICAgICAoSlNBUElXcmFwcGVyT2JqZWN0KToKKyAgICAgICAgKiBB
UEkvSlNDYWxsYmFja09iamVjdC5jcHA6CisgICAgICAgIChKU0MpOgorICAgICAgICAqIEFQSS9K
U0NhbGxiYWNrT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3Q6OmRlc3Ry
b3kpOiBNb3ZlZCB0aGlzIHRvIHRoZSBoZWFkZXIgc28gdGhhdCB3ZSBkb24ndCBnZXQgbGluayBl
cnJvcnMgd2l0aCBKU0FQSVdyYXBwZXJPYmplY3QuCisgICAgICAgICogQVBJL0pTQ29udGV4dC5t
bToKKyAgICAgICAgKC1bSlNDb250ZXh0IGluaXRXaXRoVmlydHVhbE1hY2hpbmU6XSk6IFdlIHdl
cmVuJ3QgYWRkaW5nIG1hbnVhbGx5IGFsbG9jYXRlZC9pbml0aWFsaXplZCBKU1ZpcnR1YWxNYWNo
aW5lIG9iamVjdHMgdG8gCisgICAgICAgIHRoZSBnbG9iYWwgY2FjaGUgb2YgdmlydHVhbCBtYWNo
aW5lcy4gVGhlIGluaXQgbWV0aG9kcyBoYW5kbGUgdGhpcyBub3cgcmF0aGVyIHRoYW4gY29udGV4
dFdpdGhHbG9iYWxDb250ZXh0UmVmLCBzaW5jZSAKKyAgICAgICAgbm90IGV2ZXJ5b25lIGlzIGd1
YXJhbnRlZWQgdG8gdXNlIHRoZSBsYXR0ZXIuCisgICAgICAgICgtW0pTQ29udGV4dCBpbml0V2l0
aEdsb2JhbENvbnRleHRSZWY6XSk6CisgICAgICAgICgrW0pTQ29udGV4dCBjb250ZXh0V2l0aEds
b2JhbENvbnRleHRSZWY6XSk6CisgICAgICAgICgtW0pTQ29udGV4dCBnYXJiYWdlQ29sbGVjdF0p
OiBXZSB1c2UgdGhpcyBpbnRlcm5hbGx5IGZvciBhIGZldyB0ZXN0cyBvZiB0aGUgV2Vhay9NYW5h
Z2VkIGNsYXNzZXMgYmVjYXVzZSB3ZSBuZWVkIAorICAgICAgICBtb3JlIGZpbmUtZ3JhaW5lZCBj
b250cm9sIG92ZXIgd2hlbiBHQyBoYXBwZW5zLgorICAgICAgICAqIEFQSS9KU0NvbnRleHRJbnRl
cm5hbC5oOgorICAgICAgICAqIEFQSS9KU01hbmFnZWRWYWx1ZS5oOiBBZGRlZC4KKyAgICAgICAg
KiBBUEkvSlNNYW5hZ2VkVmFsdWUubW06IEFkZGVkLgorICAgICAgICAoSlNNYW5hZ2VkVmFsdWVI
YW5kbGVPd25lcik6CisgICAgICAgIChtYW5hZ2VkVmFsdWVIYW5kbGVPd25lcik6CisgICAgICAg
ICgtW0pTTWFuYWdlZFZhbHVlIGluaXRdKTogV2UgZXhwbGljaXRseSBjYWxsIHRoZSBBUkMgZW50
cnlwb2ludHMgdG8gaW5pdGlhbGl6ZS9nZXQgdGhlIHdlYWsgb3duZXIgZmllbGQgc2luY2Ugd2Ug
ZG9uJ3QgCisgICAgICAgIHVzZSBBUkMgd2hlbiBidWlsZGluZyBvdXIgZnJhbWV3b3JrLgorICAg
ICAgICAoLVtKU01hbmFnZWRWYWx1ZSBpbml0V2l0aFZhbHVlOm93bmVyOl0pOgorICAgICAgICAo
LVtKU01hbmFnZWRWYWx1ZSBkZWFsbG9jXSk6CisgICAgICAgICgrW0pTTWFuYWdlZFZhbHVlIG1h
bmFnZWRWYWx1ZVdpdGhWYWx1ZTpvd25lcjpdKToKKyAgICAgICAgKC1bSlNNYW5hZ2VkVmFsdWUg
d2Vha093bmVyXSk6CisgICAgICAgIChKU01hbmFnZWRWYWx1ZUhhbmRsZU93bmVyOjp+SlNNYW5h
Z2VkVmFsdWVIYW5kbGVPd25lcik6CisgICAgICAgIChKU01hbmFnZWRWYWx1ZUhhbmRsZU93bmVy
Ojppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyk6IElmIHRoZSBPYmplY3RpdmUtQyBvd25lciBp
cyBzdGlsbCBhbGl2ZSAoaS5lLiBsb2FkaW5nIHRoZSB3ZWFrIGZpZWxkCisgICAgICAgIHJldHVy
bnMgbm9uLW5pbCkgYW5kIHRoYXQgdmFsdWUgd2FzIGFkZGVkIHRvIHRoZSBzZXQgb2Ygb3BhcXVl
IHJvb3RzIGJ5IHRoZSB3cmFwcGVyIGZvciB0aGF0IE9iamVjdGl2ZS1DIG93bmVyLCB0aGVuIHRo
ZSB0aGUgCisgICAgICAgIEpTT2JqZWN0IHRvIHdoaWNoIHRoZSBKU01hbmFnZWRPYmplY3QgcmVm
ZXJzIGlzIHN0aWxsIGFsaXZlLgorICAgICAgICAqIEFQSS9KU09iamVjdFJlZi5jcHA6IFdlIGhh
dmUgdG8gYWRkIGV4cGxpY2l0IGNoZWNrcyBmb3IgdGhlIEpTQVBJV3JhcHBlck9iamVjdCwganVz
dCBsaWtlIHRoZSBvdGhlciB0eXBlcyBvZiBKU0NhbGxiYWNrT2JqZWN0cy4KKyAgICAgICAgKEpT
T2JqZWN0R2V0UHJpdmF0ZSk6CisgICAgICAgIChKU09iamVjdFNldFByaXZhdGUpOgorICAgICAg
ICAoSlNPYmplY3RHZXRQcml2YXRlUHJvcGVydHkpOgorICAgICAgICAoSlNPYmplY3RTZXRQcml2
YXRlUHJvcGVydHkpOgorICAgICAgICAoSlNPYmplY3REZWxldGVQcml2YXRlUHJvcGVydHkpOgor
ICAgICAgICAqIEFQSS9KU1ZhbHVlUmVmLmNwcDoKKyAgICAgICAgKEpTVmFsdWVJc09iamVjdE9m
Q2xhc3MpOgorICAgICAgICAqIEFQSS9KU1ZpcnR1YWxNYWNoaW5lLm1tOgorICAgICAgICAoLVtK
U1ZpcnR1YWxNYWNoaW5lIGluaXRXaXRoQ29udGV4dEdyb3VwUmVmOl0pOgorICAgICAgICAoK1tK
U1ZpcnR1YWxNYWNoaW5lIHZpcnR1YWxNYWNoaW5lV2l0aENvbnRleHRHcm91cFJlZjpdKToKKyAg
ICAgICAgKiBBUEkvSlNXZWFrVmFsdWUuaDogQWRkZWQuCisgICAgICAgICogQVBJL0pTV2Vha1Zh
bHVlLm1tOiBBZGRlZC4KKyAgICAgICAgKC1bSlNXZWFrVmFsdWUgaW5pdF0pOiBKU1dlYWtWYWx1
ZSBpcyBqdXN0IEpTTWFuYWdlZFZhbHVlIHdpdGhvdXQgdGhlIG93bmVyIGxvZ2ljLiAKKyAgICAg
ICAgKC1bSlNXZWFrVmFsdWUgaW5pdFdpdGhWYWx1ZTpdKToKKyAgICAgICAgKC1bSlNXZWFrVmFs
dWUgdmFsdWVdKToKKyAgICAgICAgKCtbSlNXZWFrVmFsdWUgd2Vha1ZhbHVlV2l0aFZhbHVlOl0p
OgorICAgICAgICAoLVtKU1dlYWtWYWx1ZSBpbml0V2l0aFdlYWs6SlNDOjpKU0M6Ol0pOgorICAg
ICAgICAqIEFQSS9KU1dlYWtWYWx1ZUludGVybmFsLmg6IEFkZGVkLgorICAgICAgICAqIEFQSS9K
U1dyYXBwZXJNYXAubW06CisgICAgICAgIChKU09iamVjdE1ha2VXcmFwcGVyKTogVGhpcyBpcyBv
dXIgb3duIGludGVybmFsIHZlcnNpb24gb2YgSlNPYmplY3RNYWtlIHdoaWNoIGNyZWF0ZXMgSlNB
UElXcmFwcGVyT2JqZWN0cywgdGhlIE9iai1DIEFQSSAKKyAgICAgICAgdmVyc2lvbiBvZiBKU0Nh
bGxiYWNrT2JqZWN0cy4KKyAgICAgICAgKGNyZWF0ZU9iamVjdFdpdGhDdXN0b21CcmFuZCk6Cisg
ICAgICAgICgtW0pTT2JqQ0NsYXNzSW5mbyB3cmFwcGVyRm9yT2JqZWN0Ol0pOgorICAgICAgICAq
IEFQSS9KYXZhU2NyaXB0Q29yZS5oOgorICAgICAgICAqIEFQSS90ZXN0cy90ZXN0YXBpLm1tOiBB
ZGRlZCBuZXcgdGVzdHMgZm9yIEpTTWFuYWdlZFZhbHVlIGFuZCBKU1dlYWtWYWx1ZSBpbiB0aGUg
Y29udGV4dCBvZiBhbiBvbmNsaWNrIGhhbmRsZXIgZm9yIAorICAgICAgICBhbiBPYmplY3RpdmUt
QyBvYmplY3QgaW5zZXJ0ZWQgaW50byBhIEpTQ29udGV4dC4KKyAgICAgICAgKC1bVGV4dFhZWiBz
ZXRXZWFrT25jbGljazpdKToKKyAgICAgICAgKC1bVGV4dFhZWiBzZXRPbmNsaWNrOl0pOgorICAg
ICAgICAoLVtUZXh0WFlaIHdlYWtPbmNsaWNrXSk6CisgICAgICAgICgtW1RleHRYWVogb25jbGlj
a10pOgorICAgICAgICAoLVtUZXh0WFlaIGNsaWNrXSk6CisgICAgICAgICh0ZXN0T2JqZWN0aXZl
Q0FQSSk6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDogQWRkZWQgdGhlIG5ldyBT
dHJ1Y3R1cmUgZm9yIHRoZSBKU0FQSVdyYXBwZXJPYmplY3QgY2xhc3MuCisgICAgICAgIChKU0M6
OkpTR2xvYmFsT2JqZWN0OjpyZXNldCk6CisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNDOjpK
U0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5oOgorICAgICAgICAoSlNHbG9iYWxPYmplY3QpOgorICAgICAgICAoSlNDOjpKU0ds
b2JhbE9iamVjdDo6b2JqY1dyYXBwZXJPYmplY3RTdHJ1Y3R1cmUpOgorCiAyMDEzLTAzLTA0ICBN
YXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3Zl
IGNvbnRleHRJbnRlcm5hbENvbnRleHQgZnJvbSBKU0NvbnRleHRJbnRlcm5hbC5oCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQVBJV3JhcHBlck9iamVjdC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0FQSVdyYXBwZXJPYmplY3QuY3BwCShy
ZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0FQSVdyYXBwZXJPYmpl
Y3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjQgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNBUElXcmFwcGVyT2JqZWN0LmgiCisKKyNpbmNs
dWRlICJKU0NhbGxiYWNrT2JqZWN0LmgiCisKKyNpZiBKU0NfT0JKQ19BUElfRU5BQkxFRAorCitu
YW1lc3BhY2UgSlNDIHsKKyAgICAKK3RlbXBsYXRlIDw+IGNvbnN0IENsYXNzSW5mbyBKU0NhbGxi
YWNrT2JqZWN0PEpTQVBJV3JhcHBlck9iamVjdD46OnNfaW5mbyA9IHsgIkVudW1lcmFibGVDYWxs
YmFja09iamVjdCIsICZCYXNlOjpzX2luZm8sIDAsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlND
YWxsYmFja09iamVjdCkgfTsKKwordGVtcGxhdGU8PiBjb25zdCBib29sIEpTQ2FsbGJhY2tPYmpl
Y3Q8SlNBUElXcmFwcGVyT2JqZWN0Pjo6bmVlZHNEZXN0cnVjdGlvbiA9IHRydWU7CisKK3RlbXBs
YXRlIDw+CitTdHJ1Y3R1cmUqIEpTQ2FsbGJhY2tPYmplY3Q8SlNBUElXcmFwcGVyT2JqZWN0Pjo6
Y3JlYXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90bykKK3sKKyAgICByZXR1cm4gU3RydWN0dXJlOjpj
cmVhdGUoZ2xvYmFsRGF0YSwgZ2xvYmFsT2JqZWN0LCBwcm90bywgVHlwZUluZm8oT2JqZWN0VHlw
ZSwgU3RydWN0dXJlRmxhZ3MpLCAmc19pbmZvKTsKK30KKworSlNBUElXcmFwcGVyT2JqZWN0OjpK
U0FQSVdyYXBwZXJPYmplY3QoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSkKKyAgICA6IEJhc2UoZ2xvYmFsRGF0YSwgc3RydWN0dXJlKQoreworfQorCit2b2lk
IEpTQVBJV3JhcHBlck9iamVjdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIEpTQzo6U2xv
dFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgSlNDYWxsYmFja09iamVjdDxKU0FQSVdyYXBwZXJP
YmplY3Q+KiB0aGlzT2JqZWN0ID0gSlNDOjpqc0Nhc3Q8SlNDYWxsYmFja09iamVjdDxKU0FQSVdy
YXBwZXJPYmplY3Q+Kj4oY2VsbCk7CisgICAgQ09NUElMRV9BU1NFUlQoU3RydWN0dXJlRmxhZ3Mg
JiBPdmVycmlkZXNWaXNpdENoaWxkcmVuLCBPdmVycmlkZXNWaXNpdENoaWxkcmVuV2l0aG91dFNl
dHRpbmdGbGFnKTsKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKGNlbGwsIHZpc2l0b3IpOworCisg
ICAgdm9pZCogb2JqY09iamVjdCA9IHRoaXNPYmplY3QtPmdldFByaXZhdGUoKTsKKyAgICBpZiAo
IW9iamNPYmplY3QpCisgICAgICAgIHJldHVybjsgCisgICAgdmlzaXRvci5hZGRPcGFxdWVSb290
KG9iamNPYmplY3QpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEpTQ19P
QkpDX0FQSV9FTkFCTEVECkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQVBJV3Jh
cHBlck9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNB
UElXcmFwcGVyT2JqZWN0LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL0pTQVBJV3JhcHBlck9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTMgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaWZuZGVmIEpTQVBJV3JhcHBlck9iamVjdF9oCisjZGVmaW5lIEpTQVBJ
V3JhcHBlck9iamVjdF9oCisKKyNpbmNsdWRlICJKU0Jhc2UuaCIKKyNpbmNsdWRlICJKU0Rlc3Ry
dWN0aWJsZU9iamVjdC5oIgorI2luY2x1ZGUgIldlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXIuaCIKKwor
I2lmIEpTQ19PQkpDX0FQSV9FTkFCTEVECisKK25hbWVzcGFjZSBKU0MgeworICAgIAorY2xhc3Mg
SlNBUElXcmFwcGVyT2JqZWN0IDogcHVibGljIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IHsKK3B1Ymxp
YzoKKyAgICB0eXBlZGVmIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IEJhc2U7CisgICAgCisgICAgc3Rh
dGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBKU0M6OlNsb3RWaXNpdG9yJik7CisgICAg
Citwcm90ZWN0ZWQ6CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0g
T3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiB8IEJhc2U6OlN0cnVjdHVyZUZsYWdzOworICAgIAorICAg
IEpTQVBJV3JhcHBlck9iamVjdChKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqKTsKK307CisKK30g
Ly8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gSlNDX09CSkNfQVBJX0VOQUJMRUQKKworI2Vu
ZGlmIC8vIEpTQVBJV3JhcHBlck9iamVjdF9oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL0pTQ2FsbGJhY2tPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdC5jcHAJKHJldmlzaW9uIDE0NDY5MykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTYxLDEyICs2MSw2IEBAIFN0cnVjdHVyZSogSlNDYWxsYmFja09iamVjdDxKU0dsb2JhbE9i
amUKICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFsRGF0YSwgZ2xvYmFsT2JqZWN0
LCBwcm90bywgVHlwZUluZm8oR2xvYmFsT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCAmc19p
bmZvKTsgCiB9CiAKLXRlbXBsYXRlIDxjbGFzcyBQYXJlbnQ+Ci12b2lkIEpTQ2FsbGJhY2tPYmpl
Y3Q8UGFyZW50Pjo6ZGVzdHJveShKU0NlbGwqIGNlbGwpCi17Ci0gICAgc3RhdGljX2Nhc3Q8SlND
YWxsYmFja09iamVjdCo+KGNlbGwpLT5KU0NhbGxiYWNrT2JqZWN0Ojp+SlNDYWxsYmFja09iamVj
dCgpOwotfQotCiB2b2lkIEpTQ2FsbGJhY2tPYmplY3REYXRhOjpmaW5hbGl6ZShIYW5kbGU8VW5r
bm93bj4gaGFuZGxlLCB2b2lkKiBjb250ZXh0KQogewogICAgIEpTQ2xhc3NSZWYganNDbGFzcyA9
IHN0YXRpY19jYXN0PEpTQ2xhc3NSZWY+KGNvbnRleHQpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmgJKHJldmlzaW9uIDE0NDY5MykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xMzYsNyArMTM2LDEwIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDYWxsYmFja09iamVj
dDxQYXJlbnQ+KiBjcmVhdGUoSlNHbG9iYWxEYXRhJiwgSlNDbGFzc1JlZiwgU3RydWN0dXJlKik7
CiAKICAgICBzdGF0aWMgY29uc3QgYm9vbCBuZWVkc0Rlc3RydWN0aW9uOwotICAgIHN0YXRpYyB2
b2lkIGRlc3Ryb3koSlNDZWxsKik7CisgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqIGNl
bGwpCisgICAgeworICAgICAgICBzdGF0aWNfY2FzdDxKU0NhbGxiYWNrT2JqZWN0Kj4oY2VsbCkt
PkpTQ2FsbGJhY2tPYmplY3Q6On5KU0NhbGxiYWNrT2JqZWN0KCk7CisgICAgfQogCiAgICAgdm9p
ZCBzZXRQcml2YXRlKHZvaWQqIGRhdGEpOwogICAgIHZvaWQqIGdldFByaXZhdGUoKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0Lm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0Lm1tCShyZXZpc2lvbiAxNDQ2OTMpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dC5tbQkod29ya2luZyBjb3B5KQpA
QCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogCiAjaW1wb3J0ICJBUElDYXN0
LmgiCisjaW1wb3J0ICJBUElTaGltcy5oIgogI2ltcG9ydCAiSlNDb250ZXh0SW50ZXJuYWwuaCIK
ICNpbXBvcnQgIkpTR2xvYmFsT2JqZWN0LmgiCiAjaW1wb3J0ICJKU1ZhbHVlSW50ZXJuYWwuaCIK
QEAgLTcyLDYgKzczLDggQEAgLSAoaWQpaW5pdFdpdGhWaXJ0dWFsTWFjaGluZTooSlNWaXJ0dWFs
TQogICAgICAgICBjb250ZXh0LmV4Y2VwdGlvbiA9IGV4Y2VwdGlvblZhbHVlOwogICAgIH07CiAK
KyAgICBbbV92aXJ0dWFsTWFjaGluZSBhZGRDb250ZXh0OnNlbGYgZm9yR2xvYmFsQ29udGV4dFJl
ZjptX2NvbnRleHRdOworCiAgICAgcmV0dXJuIHNlbGY7CiB9CiAKQEAgLTE4Nyw2ICsxOTAsOCBA
QCAtIChpZClpbml0V2l0aEdsb2JhbENvbnRleHRSZWY6KEpTR2xvYmFsCiAgICAgICAgIGNvbnRl
eHQuZXhjZXB0aW9uID0gZXhjZXB0aW9uVmFsdWU7CiAgICAgfTsKIAorICAgIFttX3ZpcnR1YWxN
YWNoaW5lIGFkZENvbnRleHQ6c2VsZiBmb3JHbG9iYWxDb250ZXh0UmVmOm1fY29udGV4dF07CisK
ICAgICByZXR1cm4gc2VsZjsKIH0KIApAQCAtMjU0LDEzICsyNTksMTcgQEAgKyAoSlNDb250ZXh0
ICopY29udGV4dFdpdGhHbG9iYWxDb250ZXh0UgogewogICAgIEpTVmlydHVhbE1hY2hpbmUgKnZp
cnR1YWxNYWNoaW5lID0gW0pTVmlydHVhbE1hY2hpbmUgdmlydHVhbE1hY2hpbmVXaXRoQ29udGV4
dEdyb3VwUmVmOnRvUmVmKCZ0b0pTKGdsb2JhbENvbnRleHQpLT5nbG9iYWxEYXRhKCkpXTsKICAg
ICBKU0NvbnRleHQgKmNvbnRleHQgPSBbdmlydHVhbE1hY2hpbmUgY29udGV4dEZvckdsb2JhbENv
bnRleHRSZWY6Z2xvYmFsQ29udGV4dF07Ci0gICAgaWYgKCFjb250ZXh0KSB7CisgICAgaWYgKCFj
b250ZXh0KQogICAgICAgICBjb250ZXh0ID0gW1tbSlNDb250ZXh0IGFsbG9jXSBpbml0V2l0aEds
b2JhbENvbnRleHRSZWY6Z2xvYmFsQ29udGV4dF0gYXV0b3JlbGVhc2VdOwotICAgICAgICBbdmly
dHVhbE1hY2hpbmUgYWRkQ29udGV4dDpjb250ZXh0IGZvckdsb2JhbENvbnRleHRSZWY6Z2xvYmFs
Q29udGV4dF07Ci0gICAgfQogICAgIHJldHVybiBjb250ZXh0OwogfQogCistICh2b2lkKWdhcmJh
Z2VDb2xsZWN0Cit7CisgICAgSlNDOjpBUElFbnRyeVNoaW0gZW50cnlTaGltKHRvSlMobV9jb250
ZXh0KSk7CisgICAgdG9KUyhtX2NvbnRleHQpLT5nbG9iYWxEYXRhKCkuaGVhcC5jb2xsZWN0QWxs
R2FyYmFnZSgpOworfQorCiBAZW5kCiAKIFdlYWtDb250ZXh0UmVmOjpXZWFrQ29udGV4dFJlZihK
U0NvbnRleHQgKmNvbnRleHQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29u
dGV4dEludGVybmFsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9K
U0NvbnRleHRJbnRlcm5hbC5oCShyZXZpc2lvbiAxNDQ2OTMpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL0pTQ29udGV4dEludGVybmFsLmgJKHdvcmtpbmcgY29weSkKQEAgLTczLDYgKzcz
LDkgQEAgcHJpdmF0ZToKIAogKyAoSlNDb250ZXh0ICopY29udGV4dFdpdGhHbG9iYWxDb250ZXh0
UmVmOihKU0dsb2JhbENvbnRleHRSZWYpZ2xvYmFsQ29udGV4dDsKIAorLy8gT25seSB1c2VkIGZv
ciB0ZXN0cy4KKy0gKHZvaWQpZ2FyYmFnZUNvbGxlY3Q7CisKIEBwcm9wZXJ0eSAocmVhZG9ubHks
IHJldGFpbikgSlNXcmFwcGVyTWFwICp3cmFwcGVyTWFwOwogCiBAZW5kCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL0pTTWFuYWdlZFZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9KU01hbmFnZWRWYWx1ZS5oCShyZXZpc2lvbiAwKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU01hbmFnZWRWYWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsNDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEpTTWFuYWdlZFZhbHVlX2gKKyNk
ZWZpbmUgSlNNYW5hZ2VkVmFsdWVfaAorCisjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9KU0Jhc2Uu
aD4KKworI2lmIEpTQ19PQkpDX0FQSV9FTkFCTEVECisKKyNpbXBvcnQgPEphdmFTY3JpcHRDb3Jl
L0pTV2Vha1ZhbHVlLmg+CisKK0BjbGFzcyBKU1ZhbHVlOworQGNsYXNzIEpTQ29udGV4dDsKKwor
TlNfQ0xBU1NfQVZBSUxBQkxFKDEwXzksIE5BKQorQGludGVyZmFjZSBKU01hbmFnZWRWYWx1ZSA6
IEpTV2Vha1ZhbHVlCisKKy0gKGlkKWluaXRXaXRoVmFsdWU6KEpTVmFsdWUgKil2YWx1ZSBvd25l
cjooaWQpb3duZXI7CisrIChKU01hbmFnZWRWYWx1ZSAqKW1hbmFnZWRWYWx1ZVdpdGhWYWx1ZToo
SlNWYWx1ZSAqKXZhbHVlIG93bmVyOihpZClvd25lcjsKKworQGVuZAorCisjZW5kaWYgLy8gSlND
X09CSkNfQVBJX0VOQUJMRUQKKworI2VuZGlmIC8vIEpTTWFuYWdlZFZhbHVlX2gKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNNYW5hZ2VkVmFsdWUubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU01hbmFnZWRWYWx1ZS5tbQkocmV2aXNpb24gMCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNNYW5hZ2VkVmFsdWUubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSwxMjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisKKyNpbXBvcnQgImNvbmZpZy5o
IgorI2ltcG9ydCAiSlNNYW5hZ2VkVmFsdWUuaCIKKworI2lmIEpTQ19PQkpDX0FQSV9FTkFCTEVE
CisKKyNpbXBvcnQgIkFQSUNhc3QuaCIKKyNpbXBvcnQgIkhlYXAuaCIKKyNpbXBvcnQgIkpTQ29u
dGV4dEludGVybmFsLmgiCisjaW1wb3J0ICJKU1dlYWtWYWx1ZUludGVybmFsLmgiCisjaW1wb3J0
ICJKU1ZhbHVlSW50ZXJuYWwuaCIKKyNpbXBvcnQgIldlYWsuaCIKKyNpbXBvcnQgIldlYWtIYW5k
bGVPd25lci5oIgorI2ltcG9ydCAiT2JqY1J1bnRpbWVFeHRyYXMuaCIKKworY2xhc3MgSlNNYW5h
Z2VkVmFsdWVIYW5kbGVPd25lciA6IHB1YmxpYyBKU0M6OldlYWtIYW5kbGVPd25lciB7CitwdWJs
aWM6CisgICAgdmlydHVhbCB+SlNNYW5hZ2VkVmFsdWVIYW5kbGVPd25lcigpOworICAgIHZpcnR1
YWwgYm9vbCBpc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6OkhhbmRsZTxKU0M6OlVua25v
d24+LCB2b2lkKiBjb250ZXh0LCBKU0M6OlNsb3RWaXNpdG9yJik7Cit9OworCitzdGF0aWMgSlNN
YW5hZ2VkVmFsdWVIYW5kbGVPd25lciogbWFuYWdlZFZhbHVlSGFuZGxlT3duZXIoKQoreworICAg
IERFRklORV9TVEFUSUNfTE9DQUwoSlNNYW5hZ2VkVmFsdWVIYW5kbGVPd25lciwganNNYW5hZ2Vk
VmFsdWVIYW5kbGVPd25lciwgKCkpOworICAgIHJldHVybiAmanNNYW5hZ2VkVmFsdWVIYW5kbGVP
d25lcjsKK30KKworQGludGVyZmFjZSBKU01hbmFnZWRWYWx1ZSAoSW50ZXJuYWwpCistIChpZCl3
ZWFrT3duZXI7CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBKU01hbmFnZWRWYWx1ZSB7CisgICAg
aWQgbV93ZWFrT3duZXI7Cit9CisKKy0gKGlkKWluaXQKK3sKKyAgICBzZWxmID0gW3N1cGVyIGlu
aXRdOworICAgIGlmICghc2VsZikKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICAKKyAgICBvYmpj
X2luaXRXZWFrKCZtX3dlYWtPd25lciwgbmlsKTsKKworICAgIHJldHVybiBzZWxmOworfQorCist
IChpZClpbml0V2l0aFZhbHVlOihKU1ZhbHVlICopdmFsdWUgb3duZXI6KGlkKW93bmVyCit7Cisg
ICAgSlNDOjpKU09iamVjdCogb2JqZWN0ID0gdG9KUyhKU1ZhbHVlVG9PYmplY3QoW3ZhbHVlLmNv
bnRleHQgZ2xvYmFsQ29udGV4dFJlZl0sIFt2YWx1ZSBKU1ZhbHVlUmVmXSwgMCkpOworICAgIEpT
Qzo6V2VhazxKU0M6OkpTT2JqZWN0PiB3ZWFrKG9iamVjdCwgbWFuYWdlZFZhbHVlSGFuZGxlT3du
ZXIoKSwgc2VsZik7CisgICAgCisgICAgc2VsZiA9IFtzdXBlciBpbml0V2l0aFdlYWs6d2Vha107
CisgICAgaWYgKCFzZWxmKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgb2JqY19pbml0V2Vh
aygmbV93ZWFrT3duZXIsIG93bmVyKTsKKworICAgIHJldHVybiBzZWxmOworfQorCistICh2b2lk
KWRlYWxsb2MKK3sKKyAgICBvYmpjX2Rlc3Ryb3lXZWFrKCZtX3dlYWtPd25lcik7CisgICAgW3N1
cGVyIGRlYWxsb2NdOworfQorCisrIChKU01hbmFnZWRWYWx1ZSAqKW1hbmFnZWRWYWx1ZVdpdGhW
YWx1ZTooSlNWYWx1ZSAqKXZhbHVlIG93bmVyOihpZClvd25lcgoreworICAgIHJldHVybiBbW1tK
U01hbmFnZWRWYWx1ZSBhbGxvY10gaW5pdFdpdGhWYWx1ZTp2YWx1ZSBvd25lcjpvd25lcl0gYXV0
b3JlbGVhc2VdOworfQorCitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBKU01hbmFnZWRWYWx1ZSAo
SW50ZXJuYWwpCisKKy0gKGlkKXdlYWtPd25lcgoreworICAgIHJldHVybiBvYmpjX2xvYWRXZWFr
KCZtX3dlYWtPd25lcik7Cit9CisKK0BlbmQKKworSlNNYW5hZ2VkVmFsdWVIYW5kbGVPd25lcjo6
fkpTTWFuYWdlZFZhbHVlSGFuZGxlT3duZXIoKQoreworfQorCitib29sIEpTTWFuYWdlZFZhbHVl
SGFuZGxlT3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6
VW5rbm93bj4sIHZvaWQqIGNvbnRleHQsIEpTQzo6U2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7Cisg
ICAgSlNNYW5hZ2VkVmFsdWUgKm1hbmFnZWRWYWx1ZSA9IHN0YXRpY19jYXN0PEpTTWFuYWdlZFZh
bHVlICo+KGNvbnRleHQpOworICAgIGlkIHdlYWtPd25lciA9IFttYW5hZ2VkVmFsdWUgd2Vha093
bmVyXTsKKyAgICBpZiAoIXdlYWtPd25lcikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJl
dHVybiB2aXNpdG9yLmNvbnRhaW5zT3BhcXVlUm9vdCh3ZWFrT3duZXIpOworfQorCisjZW5kaWYg
Ly8gSlNDX09CSkNfQVBJX0VOQUJMRUQKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
SlNPYmplY3RSZWYuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
SlNPYmplY3RSZWYuY3BwCShyZXZpc2lvbiAxNDQ2OTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTT2JqZWN0UmVmLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcsNyBAQAog
I2luY2x1ZGUgIkZ1bmN0aW9uQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJJZGVudGlmaWVyLmgi
CiAjaW5jbHVkZSAiSW5pdGlhbGl6ZVRocmVhZGluZy5oIgorI2luY2x1ZGUgIkpTQVBJV3JhcHBl
ck9iamVjdC5oIgogI2luY2x1ZGUgIkpTQXJyYXkuaCIKICNpbmNsdWRlICJKU0NhbGxiYWNrQ29u
c3RydWN0b3IuaCIKICNpbmNsdWRlICJKU0NhbGxiYWNrRnVuY3Rpb24uaCIKQEAgLTM0NSw2ICsz
NDYsOCBAQCB2b2lkKiBKU09iamVjdEdldFByaXZhdGUoSlNPYmplY3RSZWYgb2JqCiAgICAgICAg
IHJldHVybiBqc0Nhc3Q8SlNDYWxsYmFja09iamVjdDxKU0dsb2JhbE9iamVjdD4qPihqc09iamVj
dCktPmdldFByaXZhdGUoKTsKICAgICBpZiAoanNPYmplY3QtPmluaGVyaXRzKCZKU0NhbGxiYWNr
T2JqZWN0PEpTRGVzdHJ1Y3RpYmxlT2JqZWN0Pjo6c19pbmZvKSkKICAgICAgICAgcmV0dXJuIGpz
Q2FzdDxKU0NhbGxiYWNrT2JqZWN0PEpTRGVzdHJ1Y3RpYmxlT2JqZWN0Pio+KGpzT2JqZWN0KS0+
Z2V0UHJpdmF0ZSgpOworICAgIGlmIChqc09iamVjdC0+aW5oZXJpdHMoJkpTQ2FsbGJhY2tPYmpl
Y3Q8SlNBUElXcmFwcGVyT2JqZWN0Pjo6c19pbmZvKSkKKyAgICAgICAgcmV0dXJuIGpzQ2FzdDxK
U0NhbGxiYWNrT2JqZWN0PEpTQVBJV3JhcHBlck9iamVjdD4qPihqc09iamVjdCktPmdldFByaXZh
dGUoKTsKICAgICAKICAgICByZXR1cm4gMDsKIH0KQEAgLTM2MSw2ICszNjQsMTAgQEAgYm9vbCBK
U09iamVjdFNldFByaXZhdGUoSlNPYmplY3RSZWYgb2JqZQogICAgICAgICBqc0Nhc3Q8SlNDYWxs
YmFja09iamVjdDxKU0Rlc3RydWN0aWJsZU9iamVjdD4qPihqc09iamVjdCktPnNldFByaXZhdGUo
ZGF0YSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KKyAgICBpZiAoanNPYmplY3QtPmlu
aGVyaXRzKCZKU0NhbGxiYWNrT2JqZWN0PEpTQVBJV3JhcHBlck9iamVjdD46OnNfaW5mbykpIHsK
KyAgICAgICAganNDYXN0PEpTQ2FsbGJhY2tPYmplY3Q8SlNBUElXcmFwcGVyT2JqZWN0Pio+KGpz
T2JqZWN0KS0+c2V0UHJpdmF0ZShkYXRhKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQog
ICAgICAgICAKICAgICByZXR1cm4gZmFsc2U7CiB9CkBAIC0zNzYsNiArMzgzLDggQEAgSlNWYWx1
ZVJlZiBKU09iamVjdEdldFByaXZhdGVQcm9wZXJ0eShKUwogICAgICAgICByZXN1bHQgPSBqc0Nh
c3Q8SlNDYWxsYmFja09iamVjdDxKU0dsb2JhbE9iamVjdD4qPihqc09iamVjdCktPmdldFByaXZh
dGVQcm9wZXJ0eShuYW1lKTsKICAgICBlbHNlIGlmIChqc09iamVjdC0+aW5oZXJpdHMoJkpTQ2Fs
bGJhY2tPYmplY3Q8SlNEZXN0cnVjdGlibGVPYmplY3Q+OjpzX2luZm8pKQogICAgICAgICByZXN1
bHQgPSBqc0Nhc3Q8SlNDYWxsYmFja09iamVjdDxKU0Rlc3RydWN0aWJsZU9iamVjdD4qPihqc09i
amVjdCktPmdldFByaXZhdGVQcm9wZXJ0eShuYW1lKTsKKyAgICBlbHNlIGlmIChqc09iamVjdC0+
aW5oZXJpdHMoJkpTQ2FsbGJhY2tPYmplY3Q8SlNBUElXcmFwcGVyT2JqZWN0Pjo6c19pbmZvKSkK
KyAgICAgICAgcmVzdWx0ID0ganNDYXN0PEpTQ2FsbGJhY2tPYmplY3Q8SlNBUElXcmFwcGVyT2Jq
ZWN0Pio+KGpzT2JqZWN0KS0+Z2V0UHJpdmF0ZVByb3BlcnR5KG5hbWUpOwogICAgIHJldHVybiB0
b1JlZihleGVjLCByZXN1bHQpOwogfQogCkBAIC0zOTQsNiArNDAzLDEwIEBAIGJvb2wgSlNPYmpl
Y3RTZXRQcml2YXRlUHJvcGVydHkoSlNDb250ZXgKICAgICAgICAganNDYXN0PEpTQ2FsbGJhY2tP
YmplY3Q8SlNEZXN0cnVjdGlibGVPYmplY3Q+Kj4oanNPYmplY3QpLT5zZXRQcml2YXRlUHJvcGVy
dHkoZXhlYy0+Z2xvYmFsRGF0YSgpLCBuYW1lLCBqc1ZhbHVlKTsKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgfQorICAgIGlmIChqc09iamVjdC0+aW5oZXJpdHMoJkpTQ2FsbGJhY2tPYmplY3Q8
SlNBUElXcmFwcGVyT2JqZWN0Pjo6c19pbmZvKSkgeworICAgICAgICBqc0Nhc3Q8SlNDYWxsYmFj
a09iamVjdDxKU0FQSVdyYXBwZXJPYmplY3Q+Kj4oanNPYmplY3QpLT5zZXRQcml2YXRlUHJvcGVy
dHkoZXhlYy0+Z2xvYmFsRGF0YSgpLCBuYW1lLCBqc1ZhbHVlKTsKKyAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgfQogICAgIHJldHVybiBmYWxzZTsKIH0KIApAQCAtNDExLDYgKzQyNCwxMCBAQCBi
b29sIEpTT2JqZWN0RGVsZXRlUHJpdmF0ZVByb3BlcnR5KEpTQ29uCiAgICAgICAgIGpzQ2FzdDxK
U0NhbGxiYWNrT2JqZWN0PEpTRGVzdHJ1Y3RpYmxlT2JqZWN0Pio+KGpzT2JqZWN0KS0+ZGVsZXRl
UHJpdmF0ZVByb3BlcnR5KG5hbWUpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CisgICAg
aWYgKGpzT2JqZWN0LT5pbmhlcml0cygmSlNDYWxsYmFja09iamVjdDxKU0FQSVdyYXBwZXJPYmpl
Y3Q+OjpzX2luZm8pKSB7CisgICAgICAgIGpzQ2FzdDxKU0NhbGxiYWNrT2JqZWN0PEpTQVBJV3Jh
cHBlck9iamVjdD4qPihqc09iamVjdCktPmRlbGV0ZVByaXZhdGVQcm9wZXJ0eShuYW1lKTsKKyAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgfQogICAgIHJldHVybiBmYWxzZTsKIH0KIApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlUmVmLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmFsdWVSZWYuY3BwCShyZXZpc2lvbiAxNDQ2OTMp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmFsdWVSZWYuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJBUElDYXN0LmgiCiAjaW5jbHVkZSAi
QVBJU2hpbXMuaCIKKyNpbmNsdWRlICJKU0FQSVdyYXBwZXJPYmplY3QuaCIKICNpbmNsdWRlICJK
U0NhbGxiYWNrT2JqZWN0LmgiCiAKICNpbmNsdWRlIDxydW50aW1lL0pTQ0pTVmFsdWUuaD4KQEAg
LTE0OCw2ICsxNDksOCBAQCBib29sIEpTVmFsdWVJc09iamVjdE9mQ2xhc3MoSlNDb250ZXh0UmVm
CiAgICAgICAgICAgICByZXR1cm4ganNDYXN0PEpTQ2FsbGJhY2tPYmplY3Q8SlNHbG9iYWxPYmpl
Y3Q+Kj4obyktPmluaGVyaXRzKGpzQ2xhc3MpOwogICAgICAgICBpZiAoby0+aW5oZXJpdHMoJkpT
Q2FsbGJhY2tPYmplY3Q8SlNEZXN0cnVjdGlibGVPYmplY3Q+OjpzX2luZm8pKQogICAgICAgICAg
ICAgcmV0dXJuIGpzQ2FzdDxKU0NhbGxiYWNrT2JqZWN0PEpTRGVzdHJ1Y3RpYmxlT2JqZWN0Pio+
KG8pLT5pbmhlcml0cyhqc0NsYXNzKTsKKyAgICAgICAgaWYgKG8tPmluaGVyaXRzKCZKU0NhbGxi
YWNrT2JqZWN0PEpTQVBJV3JhcHBlck9iamVjdD46OnNfaW5mbykpCisgICAgICAgICAgICByZXR1
cm4ganNDYXN0PEpTQ2FsbGJhY2tPYmplY3Q8SlNBUElXcmFwcGVyT2JqZWN0Pio+KG8pLT5pbmhl
cml0cyhqc0NsYXNzKTsKICAgICB9CiAgICAgcmV0dXJuIGZhbHNlOwogfQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZpcnR1YWxNYWNoaW5lLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWaXJ0dWFsTWFjaGluZS5tbQkocmV2aXNpb24gMTQ0
NjkzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZpcnR1YWxNYWNoaW5lLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC0xMDEsNyArMTAxLDkgQEAgLSAoaWQpaW5pdFdpdGhDb250ZXh0R3Jv
dXBSZWY6KEpTQ29udGV4dAogICAgIE5TUG9pbnRlckZ1bmN0aW9uc09wdGlvbnMga2V5T3B0aW9u
cyA9IE5TUG9pbnRlckZ1bmN0aW9uc09wYXF1ZU1lbW9yeSB8IE5TUG9pbnRlckZ1bmN0aW9uc09w
YXF1ZVBlcnNvbmFsaXR5OwogICAgIE5TUG9pbnRlckZ1bmN0aW9uc09wdGlvbnMgdmFsdWVPcHRp
b25zID0gTlNQb2ludGVyRnVuY3Rpb25zV2Vha01lbW9yeSB8IE5TUG9pbnRlckZ1bmN0aW9uc09i
amVjdFBlcnNvbmFsaXR5OwogICAgIG1fY29udGV4dENhY2hlID0gW1tOU01hcFRhYmxlIGFsbG9j
XSBpbml0V2l0aEtleU9wdGlvbnM6a2V5T3B0aW9ucyB2YWx1ZU9wdGlvbnM6dmFsdWVPcHRpb25z
IGNhcGFjaXR5OjBdOwotICAgIAorICAgCisgICAgW0pTVk1XcmFwcGVyQ2FjaGUgYWRkV3JhcHBl
cjpzZWxmIGZvckpTQ29udGV4dEdyb3VwUmVmOmdyb3VwXTsKKyAKICAgICByZXR1cm4gc2VsZjsK
IH0KIApAQCAtMTIzLDEwICsxMjUsOCBAQCBKU0NvbnRleHRHcm91cFJlZiBnZXRHcm91cEZyb21W
aXJ0dWFsTWFjCiArIChKU1ZpcnR1YWxNYWNoaW5lICopdmlydHVhbE1hY2hpbmVXaXRoQ29udGV4
dEdyb3VwUmVmOihKU0NvbnRleHRHcm91cFJlZilncm91cAogewogICAgIEpTVmlydHVhbE1hY2hp
bmUgKnZpcnR1YWxNYWNoaW5lID0gW0pTVk1XcmFwcGVyQ2FjaGUgd3JhcHBlckZvckpTQ29udGV4
dEdyb3VwUmVmOmdyb3VwXTsKLSAgICBpZiAoIXZpcnR1YWxNYWNoaW5lKSB7CisgICAgaWYgKCF2
aXJ0dWFsTWFjaGluZSkKICAgICAgICAgdmlydHVhbE1hY2hpbmUgPSBbW1tKU1ZpcnR1YWxNYWNo
aW5lIGFsbG9jXSBpbml0V2l0aENvbnRleHRHcm91cFJlZjpncm91cF0gYXV0b3JlbGVhc2VdOwot
ICAgICAgICBbSlNWTVdyYXBwZXJDYWNoZSBhZGRXcmFwcGVyOnZpcnR1YWxNYWNoaW5lIGZvckpT
Q29udGV4dEdyb3VwUmVmOmdyb3VwXTsKLSAgICB9CiAgICAgcmV0dXJuIHZpcnR1YWxNYWNoaW5l
OwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTV2Vha1ZhbHVlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1dlYWtWYWx1ZS5oCShyZXZp
c2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1dlYWtWYWx1ZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsNDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEpTV2Vha1Zh
bHVlX2gKKyNkZWZpbmUgSlNXZWFrVmFsdWVfaAorCisjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9K
U0Jhc2UuaD4KKworI2lmIEpTQ19PQkpDX0FQSV9FTkFCTEVECisKK0BjbGFzcyBKU1ZhbHVlOwor
CitOU19DTEFTU19BVkFJTEFCTEUoMTBfOSwgTkEpCitAaW50ZXJmYWNlIEpTV2Vha1ZhbHVlIDog
TlNPYmplY3QKKworLSAoaWQpaW5pdFdpdGhWYWx1ZTooSlNWYWx1ZSAqKXZhbHVlOworLSAoSlNW
YWx1ZSAqKXZhbHVlOworCisrIChpZCl3ZWFrVmFsdWVXaXRoVmFsdWU6KEpTVmFsdWUgKil2YWx1
ZTsKKworQGVuZAorCisjZW5kaWYgLy8gSlNDX09CSkNfQVBJX0VOQUJMRUQKKworI2VuZGlmIC8v
IEpTV2Vha1ZhbHVlX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNXZWFrVmFs
dWUubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1dlYWtWYWx1
ZS5tbQkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNXZWFrVmFs
dWUubW0JKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw4NCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBv
cnQgImNvbmZpZy5oIgorI2ltcG9ydCAiSlNXZWFrVmFsdWVJbnRlcm5hbC5oIgorCisjaWYgSlND
X09CSkNfQVBJX0VOQUJMRUQKKworI2ltcG9ydCAiQVBJQ2FzdC5oIgorI2ltcG9ydCAiSlNWYWx1
ZUludGVybmFsLmgiCisjaW1wb3J0ICJKU0NvbnRleHRJbnRlcm5hbC5oIgorI2ltcG9ydCAiSlNW
YWx1ZVJlZi5oIgorI2ltcG9ydCAiV2Vhay5oIgorCitAaW1wbGVtZW50YXRpb24gSlNXZWFrVmFs
dWUgeworICAgIEpTQzo6V2VhazxKU0M6OkpTT2JqZWN0PiBtX3ZhbHVlOworfQorCistIChpZClp
bml0Cit7CisgICAgSlNDOjpXZWFrPEpTQzo6SlNPYmplY3Q+IHdlYWs7CisgICAgcmV0dXJuIFtz
ZWxmIGluaXRXaXRoV2Vhazp3ZWFrXTsKK30KKworLSAoaWQpaW5pdFdpdGhWYWx1ZTooSlNWYWx1
ZSAqKXZhbHVlCit7CisgICAgSlNDOjpXZWFrPEpTQzo6SlNPYmplY3Q+IHdlYWsodG9KUyhKU1Zh
bHVlVG9PYmplY3QoW3ZhbHVlLmNvbnRleHQgZ2xvYmFsQ29udGV4dFJlZl0sIFt2YWx1ZSBKU1Zh
bHVlUmVmXSwgMCkpKTsKKyAgICByZXR1cm4gW3NlbGYgaW5pdFdpdGhXZWFrOndlYWtdOworfQor
CistIChKU1ZhbHVlICopdmFsdWUKK3sKKyAgICBpZiAoIW1fdmFsdWUpCisgICAgICAgIHJldHVy
biBuaWw7CisgICAgSlNDOjpKU09iamVjdCogb2JqZWN0ID0gbV92YWx1ZS5nZXQoKTsKKyAgICBK
U0NvbnRleHQgKmNvbnRleHQgPSBbSlNDb250ZXh0IGNvbnRleHRXaXRoR2xvYmFsQ29udGV4dFJl
Zjp0b0dsb2JhbFJlZihvYmplY3QtPnN0cnVjdHVyZSgpLT5nbG9iYWxPYmplY3QoKS0+Z2xvYmFs
RXhlYygpKV07CisgICAgcmV0dXJuIFtKU1ZhbHVlIHZhbHVlV2l0aFZhbHVlOnRvUmVmKG9iamVj
dCkgaW5Db250ZXh0OmNvbnRleHRdOworfQorCisrIChpZCl3ZWFrVmFsdWVXaXRoVmFsdWU6KEpT
VmFsdWUgKil2YWx1ZQoreworICAgIHJldHVybiBbW1tKU1dlYWtWYWx1ZSBhbGxvY10gaW5pdFdp
dGhWYWx1ZTp2YWx1ZV0gYXV0b3JlbGVhc2VdOworfQorCitAZW5kCisKK0BpbXBsZW1lbnRhdGlv
biBKU1dlYWtWYWx1ZSAoSW50ZXJuYWwpCisKKy0gKGlkKWluaXRXaXRoV2VhazooSlNDOjpXZWFr
PEpTQzo6SlNPYmplY3Q+Jil3ZWFrCit7CisgICAgc2VsZiA9IFtzdXBlciBpbml0XTsKKyAgICBp
ZiAoIXNlbGYpCisgICAgICAgIHJldHVybiBuaWw7CisgICAgCisgICAgbV92YWx1ZS5zd2FwKHdl
YWspOworICAgIAorICAgIHJldHVybiBzZWxmOworfQorCitAZW5kCisKKyNlbmRpZiAvLyBKU0Nf
T0JKQ19BUElfRU5BQkxFRApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1dlYWtW
YWx1ZUludGVybmFsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9K
U1dlYWtWYWx1ZUludGVybmFsLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTV2Vha1ZhbHVlSW50ZXJuYWwuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ0
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBKU1dlYWtWYWx1ZUludGVybmFsX2gKKyNkZWZpbmUg
SlNXZWFrVmFsdWVJbnRlcm5hbF9oCisKKyNpbXBvcnQgIkpTQmFzZS5oIgorCisjaWYgSlNDX09C
SkNfQVBJX0VOQUJMRUQKKworI2ltcG9ydCAiV2Vhay5oIgorI2ltcG9ydCAiSlNXZWFrVmFsdWUu
aCIKKworQGludGVyZmFjZSBKU1dlYWtWYWx1ZSAoSW50ZXJuYWwpCisKKy0gKGlkKWluaXRXaXRo
V2VhazooSlNDOjpXZWFrPEpTQzo6SlNPYmplY3Q+Jil3ZWFrOworCitAZW5kCisKKyNlbmRpZiAv
LyBKU0NfT0JKQ19BUElfRU5BQkxFRAorCisjZW5kaWYgLy8gSlNXZWFrVmFsdWVJbnRlcm5hbF9o
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTV3JhcHBlck1hcC5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTV3JhcHBlck1hcC5tbQkocmV2aXNp
b24gMTQ0NjkzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1dyYXBwZXJNYXAubW0J
KHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDkgQEAKICNpZiBKU0NfT0JKQ19BUElfRU5BQkxF
RAogCiAjaW1wb3J0ICJBUElDYXN0LmgiCisjaW1wb3J0ICJBUElTaGltcy5oIgorI2ltcG9ydCAi
SlNBUElXcmFwcGVyT2JqZWN0LmgiCisjaW1wb3J0ICJKU0NhbGxiYWNrT2JqZWN0LmgiCiAjaW1w
b3J0ICJKU0NvbnRleHRJbnRlcm5hbC5oIgogI2ltcG9ydCAiSlNXcmFwcGVyTWFwLmgiCiAjaW1w
b3J0ICJPYmpDQ2FsbGJhY2tGdW5jdGlvbi5oIgpAQCAtMTE0LDYgKzExNywxOSBAQCBkb25lOgog
ICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK3N0YXRpYyBKU09iamVjdFJlZiBKU09iamVjdE1ha2VX
cmFwcGVyKEpTQ29udGV4dFJlZiBjdHgsIEpTQ2xhc3NSZWYganNDbGFzcywgdm9pZCogZGF0YSkK
K3sKKyAgICBKU0M6OkV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMoY3R4KTsKKyAgICBKU0M6OkFQSUVu
dHJ5U2hpbSBlbnRyeVNoaW0oZXhlYyk7CisKKyAgICBBU1NFUlQoanNDbGFzcyk7CisgICAgSlND
OjpKU0NhbGxiYWNrT2JqZWN0PEpTQzo6SlNBUElXcmFwcGVyT2JqZWN0Piogb2JqZWN0ID0gSlND
OjpKU0NhbGxiYWNrT2JqZWN0PEpTQzo6SlNBUElXcmFwcGVyT2JqZWN0Pjo6Y3JlYXRlKGV4ZWMs
IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgp
LT5vYmpjV3JhcHBlck9iamVjdFN0cnVjdHVyZSgpLCBqc0NsYXNzLCBkYXRhKTsKKyAgICBpZiAo
SlNDOjpKU09iamVjdCogcHJvdG90eXBlID0ganNDbGFzcy0+cHJvdG90eXBlKGV4ZWMpKQorICAg
ICAgICBvYmplY3QtPnNldFByb3RvdHlwZShleGVjLT5nbG9iYWxEYXRhKCksIHByb3RvdHlwZSk7
CisKKyAgICByZXR1cm4gdG9SZWYob2JqZWN0KTsKK30KKwogLy8gTWFrZSBhbiBvYmplY3QgdGhh
dCBpcyBpbiBhbGwgd2F5cyBhIGNvbXBsZXRlbHkgdmFuaWxsYSBKYXZhU2NyaXB0IG9iamVjdCwK
IC8vIG90aGVyIHRoYW4gdGhhdCBpdCBoYXMgYSBuYXRpdmUgYnJhbmQgc2V0IHRoYXQgd2lsbCBi
ZSBkaXNwbGF5ZWQgYnkgdGhlIGRlZmF1bHQKIC8vIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcg
Y29udmVyc2lvbi4KQEAgLTEyNCw3ICsxNDAsNyBAQCBzdGF0aWMgSlNWYWx1ZSAqY3JlYXRlT2Jq
ZWN0V2l0aEN1c3RvbUJyCiAgICAgZGVmaW5pdGlvbi5jbGFzc05hbWUgPSBbYnJhbmQgVVRGOFN0
cmluZ107CiAgICAgZGVmaW5pdGlvbi5wYXJlbnRDbGFzcyA9IHBhcmVudENsYXNzOwogICAgIEpT
Q2xhc3NSZWYgY2xhc3NSZWYgPSBKU0NsYXNzQ3JlYXRlKCZkZWZpbml0aW9uKTsKLSAgICBKU09i
amVjdFJlZiByZXN1bHQgPSBKU09iamVjdE1ha2UoW2NvbnRleHQgZ2xvYmFsQ29udGV4dFJlZl0s
IGNsYXNzUmVmLCBwcml2YXRlRGF0YSk7CisgICAgSlNPYmplY3RSZWYgcmVzdWx0ID0gSlNPYmpl
Y3RNYWtlV3JhcHBlcihbY29udGV4dCBnbG9iYWxDb250ZXh0UmVmXSwgY2xhc3NSZWYsIHByaXZh
dGVEYXRhKTsKICAgICBKU0NsYXNzUmVsZWFzZShjbGFzc1JlZik7CiAgICAgcmV0dXJuIFtbSlNW
YWx1ZSBhbGxvY10gaW5pdFdpdGhWYWx1ZTpyZXN1bHQgaW5Db250ZXh0OmNvbnRleHRdOwogfQpA
QCAtNDA3LDcgKzQyMyw3IEBAIC0gKEpTVmFsdWUgKil3cmFwcGVyRm9yT2JqZWN0OihpZClvYmpl
Y3QKICAgICAgICAgW3NlbGYgcmVhbGxvY2F0ZUNvbnN0cnVjdG9yQW5kT3JQcm90b3R5cGVdOwog
ICAgIEFTU0VSVCghIW1fcHJvdG90eXBlKTsKIAotICAgIEpTT2JqZWN0UmVmIHdyYXBwZXIgPSBK
U09iamVjdE1ha2UoW21fY29udGV4dCBnbG9iYWxDb250ZXh0UmVmXSwgbV9jbGFzc1JlZiwgW29i
amVjdCByZXRhaW5dKTsKKyAgICBKU09iamVjdFJlZiB3cmFwcGVyID0gSlNPYmplY3RNYWtlV3Jh
cHBlcihbbV9jb250ZXh0IGdsb2JhbENvbnRleHRSZWZdLCBtX2NsYXNzUmVmLCBbb2JqZWN0IHJl
dGFpbl0pOwogICAgIEpTT2JqZWN0U2V0UHJvdG90eXBlKFttX2NvbnRleHQgZ2xvYmFsQ29udGV4
dFJlZl0sIHdyYXBwZXIsIHRvUmVmKG1fcHJvdG90eXBlLmdldCgpKSk7CiAgICAgcmV0dXJuIFtK
U1ZhbHVlIHZhbHVlV2l0aFZhbHVlOndyYXBwZXIgaW5Db250ZXh0Om1fY29udGV4dF07CiB9Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0phdmFTY3JpcHRDb3JlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KYXZhU2NyaXB0Q29yZS5oCShyZXZpc2lv
biAxNDQ2OTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0phdmFTY3JpcHRDb3JlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDcgQEAKIAogI2ltcG9ydCAiSlNDb250ZXh0Lmgi
CiAjaW1wb3J0ICJKU1ZhbHVlLmgiCisjaW1wb3J0ICJKU01hbmFnZWRWYWx1ZS5oIgogI2ltcG9y
dCAiSlNWaXJ0dWFsTWFjaGluZS5oIgogI2ltcG9ydCAiSlNFeHBvcnQuaCIKIApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFwaS5tbQkocmV2aXNpb24gMTQ0Njkz
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC0yNCw2ICsyNCw3IEBACiAgKi8KIAogI2ltcG9ydCAiSmF2YVNjcmlwdENvcmUu
aCIKKyNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0pTQ29udGV4dEludGVybmFsLmg+CiAKIGV4dGVy
biAiQyIgYm9vbCBfQmxvY2tfaGFzX3NpZ25hdHVyZShpZCk7CiBleHRlcm4gIkMiIGNvbnN0IGNo
YXIgKiBfQmxvY2tfc2lnbmF0dXJlKGlkKTsKQEAgLTEwMSw2ICsxMDIsOCBAQCBib29sIHRlc3RY
WVpUZXN0ZWQgPSBmYWxzZTsKIEBwcm90b2NvbCBUZXh0WFlaIDxKU0V4cG9ydD4KIEBwcm9wZXJ0
eSBpbnQgeDsKIEBwcm9wZXJ0eSAocmVhZG9ubHkpIGludCB5OworQHByb3BlcnR5IEpTVmFsdWUg
Km9uY2xpY2s7CitAcHJvcGVydHkgSlNWYWx1ZSAqd2Vha09uY2xpY2s7CiAtICh2b2lkKXRlc3Q6
KE5TU3RyaW5nICopbWVzc2FnZTsKIEBlbmQKIApAQCAtMTA4LDkgKzExMSwxMyBAQCBAaW50ZXJm
YWNlIFRleHRYWVogOiBOU09iamVjdCA8VGV4dFhZWj4KIEBwcm9wZXJ0eSBpbnQgeDsKIEBwcm9w
ZXJ0eSBpbnQgeTsKIEBwcm9wZXJ0eSBpbnQgejsKKy0gKHZvaWQpY2xpY2s7CiBAZW5kCiAKLUBp
bXBsZW1lbnRhdGlvbiBUZXh0WFlaCitAaW1wbGVtZW50YXRpb24gVGV4dFhZWiB7CisgICAgSlNX
ZWFrVmFsdWUgKm1fd2Vha09uY2xpY2tIYW5kbGVyOworICAgIEpTTWFuYWdlZFZhbHVlICptX29u
Y2xpY2tIYW5kbGVyOworfQogQHN5bnRoZXNpemUgeDsKIEBzeW50aGVzaXplIHk7CiBAc3ludGhl
c2l6ZSB6OwpAQCAtMTE4LDYgKzEyNSwzMSBAQCAtICh2b2lkKXRlc3Q6KE5TU3RyaW5nICopbWVz
c2FnZQogewogICAgIHRlc3RYWVpUZXN0ZWQgPSBbbWVzc2FnZSBpc0VxdWFsOkAidGVzdCJdICYm
IHggPT0gMTMgJiB5ID09IDQgJiYgeiA9PSA1OwogfQorLSAodm9pZClzZXRXZWFrT25jbGljazoo
SlNWYWx1ZSAqKXZhbHVlCit7CisgICAgbV93ZWFrT25jbGlja0hhbmRsZXIgPSBbSlNXZWFrVmFs
dWUgd2Vha1ZhbHVlV2l0aFZhbHVlOnZhbHVlXTsKK30KKworLSAodm9pZClzZXRPbmNsaWNrOihK
U1ZhbHVlICopdmFsdWUKK3sKKyAgICBtX29uY2xpY2tIYW5kbGVyID0gW1tKU01hbmFnZWRWYWx1
ZSBhbGxvY10gaW5pdFdpdGhWYWx1ZTp2YWx1ZSBvd25lcjpzZWxmXTsKK30KKy0gKEpTVmFsdWUg
Kil3ZWFrT25jbGljaworeworICAgIHJldHVybiBbbV93ZWFrT25jbGlja0hhbmRsZXIgdmFsdWVd
OworfQorLSAoSlNWYWx1ZSAqKW9uY2xpY2sKK3sKKyAgICByZXR1cm4gW21fb25jbGlja0hhbmRs
ZXIgdmFsdWVdOworfQorLSAodm9pZCljbGljaworeworICAgIGlmICghbV9vbmNsaWNrSGFuZGxl
cikKKyAgICAgICAgcmV0dXJuOworCisgICAgSlNWYWx1ZSAqZnVuY3Rpb24gPSBbbV9vbmNsaWNr
SGFuZGxlciB2YWx1ZV07CisgICAgW2Z1bmN0aW9uIGNhbGxXaXRoQXJndW1lbnRzOltOU0FycmF5
IGFycmF5XV07Cit9CiBAZW5kCiAKIHN0YXRpYyB2b2lkIGNoZWNrUmVzdWx0KE5TU3RyaW5nICpk
ZXNjcmlwdGlvbiwgYm9vbCBwYXNzZWQpCkBAIC00OTMsNiArNTI1LDYyIEBAIHZvaWQgdGVzdE9i
amVjdGl2ZUNBUEkoKQogICAgICAgICBKU1ZhbHVlICpyZXN1bHQgPSBbY29udGV4dDEgZXZhbHVh
dGVTY3JpcHQ6QCJwYXNzVmFsdWVCZXR3ZWVuQ29udGV4dHMiXTsKICAgICAgICAgY2hlY2tSZXN1
bHQoQCJbdmFsdWUgaXNFcXVhbFRvT2JqZWN0OnJlc3VsdF0iLCBbdmFsdWUgaXNFcXVhbFRvT2Jq
ZWN0OnJlc3VsdF0pOwogICAgIH0KKworICAgIEBhdXRvcmVsZWFzZXBvb2wgeworICAgICAgICBK
U0NvbnRleHQgKmNvbnRleHQgPSBbW0pTQ29udGV4dCBhbGxvY10gaW5pdF07CisgICAgICAgIFRl
eHRYWVogKnRlc3RYWVogPSBbW1RleHRYWVogYWxsb2NdIGluaXRdOworCisgICAgICAgIEBhdXRv
cmVsZWFzZXBvb2wgeworICAgICAgICAgICAgY29udGV4dFtAInRlc3RYWVoiXSA9IHRlc3RYWVo7
CisKKyAgICAgICAgICAgIFtjb250ZXh0IGV2YWx1YXRlU2NyaXB0OkAiIFwKKyAgICAgICAgICAg
ICAgICBkaWRDbGljayA9IGZhbHNlOyBcCisgICAgICAgICAgICAgICAgdGVzdFhZWi5vbmNsaWNr
ID0gZnVuY3Rpb24oKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgZGlkQ2xpY2sgPSB0cnVlOyBc
CisgICAgICAgICAgICAgICAgfTsgXAorICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAg
ICAgdGVzdFhZWi53ZWFrT25jbGljayA9IGZ1bmN0aW9uKCkgeyBcCisgICAgICAgICAgICAgICAg
ICAgIHJldHVybiAnZm9vJzsgXAorICAgICAgICAgICAgICAgIH07IFwKKyAgICAgICAgICAgICJd
OworICAgICAgICB9CisKKyAgICAgICAgQGF1dG9yZWxlYXNlcG9vbCB7CisgICAgICAgICAgICBb
dGVzdFhZWiBjbGlja107CisgICAgICAgICAgICBKU1ZhbHVlICpyZXN1bHQgPSBbY29udGV4dCBl
dmFsdWF0ZVNjcmlwdDpAImRpZENsaWNrIl07CisgICAgICAgICAgICBjaGVja1Jlc3VsdChAIkV2
ZW50IGhhbmRsZXIgb25jbGljayIsIFtyZXN1bHQgdG9Cb29sXSk7CisgICAgICAgIH0KKworICAg
ICAgICBbY29udGV4dCBnYXJiYWdlQ29sbGVjdF07CisKKyAgICAgICAgQGF1dG9yZWxlYXNlcG9v
bCB7CisgICAgICAgICAgICBKU1ZhbHVlICpyZXN1bHQgPSBbY29udGV4dCBldmFsdWF0ZVNjcmlw
dDpAInRlc3RYWVoub25jbGljayJdOworICAgICAgICAgICAgTlNMb2coQCIlQCIsIHRlc3RYWVou
b25jbGljayk7CisgICAgICAgICAgICBjaGVja1Jlc3VsdChAIm9uY2xpY2sgc3RpbGwgYXJvdW5k
IGFmdGVyIEdDIiwgIShbcmVzdWx0IGlzTnVsbF0gfHwgW3Jlc3VsdCBpc1VuZGVmaW5lZF0pKTsK
KyAgICAgICAgfQorCisKKyAgICAgICAgQGF1dG9yZWxlYXNlcG9vbCB7CisgICAgICAgICAgICBK
U1ZhbHVlICpyZXN1bHQgPSBbY29udGV4dCBldmFsdWF0ZVNjcmlwdDpAInRlc3RYWVoud2Vha09u
Y2xpY2siXTsKKyAgICAgICAgICAgIE5TTG9nKEAiJUAiLCB0ZXN0WFlaLndlYWtPbmNsaWNrKTsK
KyAgICAgICAgICAgIGNoZWNrUmVzdWx0KEAid2Vha09uY2xpY2sgbm90IGFyb3VuZCBhZnRlciBH
QyIsIFtyZXN1bHQgaXNOdWxsXSB8fCBbcmVzdWx0IGlzVW5kZWZpbmVkXSk7CisgICAgICAgIH0K
KworICAgICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKKyAgICAgICAgICAgIFtjb250ZXh0IGV2YWx1
YXRlU2NyaXB0OkAiIFwKKyAgICAgICAgICAgICAgICBkaWRDbGljayA9IGZhbHNlOyBcCisgICAg
ICAgICAgICAgICAgdGVzdFhZWiA9IG51bGw7IFwKKyAgICAgICAgICAgICJdOworICAgICAgICB9
CisKKyAgICAgICAgW2NvbnRleHQgZ2FyYmFnZUNvbGxlY3RdOworCisgICAgICAgIEBhdXRvcmVs
ZWFzZXBvb2wgeworICAgICAgICAgICAgW3Rlc3RYWVogY2xpY2tdOworICAgICAgICAgICAgSlNW
YWx1ZSAqcmVzdWx0ID0gW2NvbnRleHQgZXZhbHVhdGVTY3JpcHQ6QCJkaWRDbGljayJdOworICAg
ICAgICAgICAgY2hlY2tSZXN1bHQoQCJFdmVudCBoYW5kbGVyIG9uY2xpY2sgZG9lc24ndCBmaXJl
IiwgIVtyZXN1bHQgdG9Cb29sXSk7CisgICAgICAgIH0KKyAgICB9CiB9CiAKICNlbHNlCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTQ0NjkzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJ
KHdvcmtpbmcgY29weSkKQEAgLTgyNSw5ICs4MjUsMTQgQEAKIAkJQzIyMzlEMUIxNjI2MkJERDAw
NUFDNUZEIC8qIEdDVGhyZWFkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBDMjIzOUQxNjE2MjYyQkREMDA1QUM1RkQgLyogR0NUaHJlYWQuaCAqLzsgfTsK
IAkJQzIyNTQ5NDMxNUY3REJBQTAwNjVFODk4IC8qIFNsb3RWaXNpdG9yLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyMjU0OTQyMTVGN0RCQUEwMDY1
RTg5OCAvKiBTbG90VmlzaXRvci5jcHAgKi87IH07CiAJCUMyMkIzMUI5MTQwNTc3RDcwMERCNDc1
QSAvKiBTYW1wbGluZ0NvdW50ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGNzcwMDhFMTQwMkZERDYwMDc4RUIzOSAvKiBTYW1wbGluZ0NvdW50ZXIu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlDMjMz
M0ZCOTE2RTU0MTQ0MDBBNkZCODQgLyogSlNXZWFrVmFsdWUubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMjMzM0ZCNzE2RTU0MTQ0MDBBNkZCODQgLyog
SlNXZWFrVmFsdWUubW0gKi87IH07CisJCUMyMzMzRkJBMTZFNTQxNDQwMEE2RkI4NCAvKiBKU1dl
YWtWYWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QzIzMzNGQjgxNkU1NDE0NDAwQTZGQjg0IC8qIEpTV2Vha1ZhbHVlLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OworCQlDMjMzM0ZCQzE2RTU0NjY2MDBBNkZC
ODQgLyogSlNXZWFrVmFsdWVJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQzIzMzNGQkIxNkU1NDY2NjAwQTZGQjg0IC8qIEpTV2Vha1ZhbHVl
SW50ZXJuYWwuaCAqLzsgfTsKIAkJQzI0MDMwNTUxNEI0MDRFNjAwNzlFQjY0IC8qIENvcGllZFNw
YWNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMy
NDAzMDUzMTRCNDA0QzkwMDc5RUI2NCAvKiBDb3BpZWRTcGFjZS5jcHAgKi87IH07CiAJCUMyNEQz
MUUyMTYxQ0Q2OTUwMDJBQTREQiAvKiBIZWFwU3RhdGlzdGljcy5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMjREMzFFMDE2MUNENjk1MDAyQUE0REIg
LyogSGVhcFN0YXRpc3RpY3MuY3BwICovOyB9OwogCQlDMjREMzFFMzE2MUNENjk1MDAyQUE0REIg
LyogSGVhcFN0YXRpc3RpY3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEMyNEQzMUUxMTYxQ0Q2OTUwMDJBQTREQiAvKiBIZWFwU3RhdGlzdGljcy5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUMyNUQ3MDlC
MTZERTk5RjQwMEZDQTZCQyAvKiBKU01hbmFnZWRWYWx1ZS5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyNUQ3MDk5MTZERTk5RjQwMEZDQTZCQyAvKiBK
U01hbmFnZWRWYWx1ZS5tbSAqLzsgfTsKKwkJQzI1RDcwOUMxNkRFOTlGNDAwRkNBNkJDIC8qIEpT
TWFuYWdlZFZhbHVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBDMjVENzA5QTE2REU5OUY0MDBGQ0E2QkMgLyogSlNNYW5hZ2VkVmFsdWUuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07CiAJCUMyNUY4QkNEMTU3NTQ0
QTkwMDI0NUI3MSAvKiBJbmNyZW1lbnRhbFN3ZWVwZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzI1RjhCQ0IxNTc1NDRBOTAwMjQ1QjcxIC8qIElu
Y3JlbWVudGFsU3dlZXBlci5jcHAgKi87IH07CiAJCUMyNUY4QkNFMTU3NTQ0QTkwMDI0NUI3MSAv
KiBJbmNyZW1lbnRhbFN3ZWVwZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEMyNUY4QkNDMTU3NTQ0QTkwMDI0NUI3MSAvKiBJbmNyZW1lbnRhbFN3ZWVw
ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlD
MkE3RjY4ODE2MDQzMkQ0MDBGNzZCOTggLyogSlNEZXN0cnVjdGlibGVPYmplY3QuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyQTdGNjg3MTYwNDMyRDQw
MEY3NkI5OCAvKiBKU0Rlc3RydWN0aWJsZU9iamVjdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC04MzYsNiArODQxLDggQEAKIAkJQzJDOEQwMkQx
NEEzQzZFMDAwNTc4RTY1IC8qIENvcGllZFNwYWNlSW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzJDOEQwMkIxNEEzQzZCMjAwNTc4RTY1IC8q
IENvcGllZFNwYWNlSW5saW5lcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCUMyQzhEMDMwMTRBM0NFRkMwMDU3OEU2NSAvKiBDb3BpZWRCbG9jay5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzJDOEQwMkUx
NEEzQ0VGQzAwNTc4RTY1IC8qIENvcGllZEJsb2NrLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQzJDOEQwMzExNEEzQ0VGQzAwNTc4RTY1IC8qIEhl
YXBCbG9jay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QzJDOEQwMkYxNEEzQ0VGQzAwNTc4RTY1IC8qIEhlYXBCbG9jay5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUMyQ0YzOUMxMTZFMTVBODEwMERENjlC
RSAvKiBKU0FQSVdyYXBwZXJPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQzJDRjM5QkYxNkUxNUE4MTAwREQ2OUJFIC8qIEpTQVBJV3JhcHBl
ck9iamVjdC5jcHAgKi87IH07CisJCUMyQ0YzOUMyMTZFMTVBODEwMERENjlCRSAvKiBKU0FQSVdy
YXBwZXJPYmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEMyQ0YzOUMwMTZFMTVBODEwMERENjlCRSAvKiBKU0FQSVdyYXBwZXJPYmplY3QuaCAqLzsg
fTsKIAkJQzJENThDMzQxNTkxMkZFRTAwMjFBODQ0IC8qIEdDQWN0aXZpdHlDYWxsYmFjay5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMkQ1OEMzMzE1
OTEyRkVFMDAyMUE4NDQgLyogR0NBY3Rpdml0eUNhbGxiYWNrLmNwcCAqLzsgfTsKIAkJQzJFNTI2
QkQxNTkwRUYwMDAwNTRFNDhEIC8qIEhlYXBUaW1lci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMkU1MjZCQjE1OTBFRjAwMDA1NEU0OEQgLyogSGVh
cFRpbWVyLmNwcCAqLzsgfTsKIAkJQzJFNTI2QkUxNTkwRUYwMDAwNTRFNDhEIC8qIEhlYXBUaW1l
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzJFNTI2
QkMxNTkwRUYwMDAwNTRFNDhEIC8qIEhlYXBUaW1lci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xNzE4LDkgKzE3MjUsMTQgQEAKIAkJQzIyMzlE
MTUxNjI2MkJERDAwNUFDNUZEIC8qIEdDVGhyZWFkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEdDVGhyZWFkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQzIyMzlEMTYxNjI2MkJERDAwNUFDNUZEIC8qIEdDVGhyZWFkLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEdDVGhyZWFkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUMyMjU0OTQyMTVGN0RCQUEwMDY1RTg5OCAvKiBTbG90VmlzaXRvci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTbG90VmlzaXRvci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUMyMzMzRkI3MTZFNTQxNDQwMEE2RkI4NCAvKiBKU1dlYWtWYWx1
ZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEpTV2Vha1ZhbHVl
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMjMzM0ZCODE2RTU0MTQ0MDBBNkZC
ODQgLyogSlNXZWFrVmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNX
ZWFrVmFsdWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzIzMzNGQkIxNkU1NDY2
NjAwQTZGQjg0IC8qIEpTV2Vha1ZhbHVlSW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSlNXZWFrVmFsdWVJbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlDMjQwMzA1MzE0QjQwNEM5MDA3OUVCNjQgLyogQ29waWVkU3BhY2UuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ29waWVkU3BhY2UuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlDMjREMzFFMDE2MUNENjk1MDAyQUE0REIgLyogSGVhcFN0
YXRpc3RpY3MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSGVhcFN0
YXRpc3RpY3MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMjREMzFFMTE2MUNE
Njk1MDAyQUE0REIgLyogSGVhcFN0YXRpc3RpY3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSGVhcFN0YXRpc3RpY3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
QzI1RDcwOTkxNkRFOTlGNDAwRkNBNkJDIC8qIEpTTWFuYWdlZFZhbHVlLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gSlNNYW5hZ2VkVmFsdWUubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUMyNUQ3MDlBMTZERTk5RjQwMEZDQTZCQyAvKiBKU01hbmFn
ZWRWYWx1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU01hbmFnZWRWYWx1
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMjVGOEJDQjE1NzU0NEE5MDAyNDVC
NzEgLyogSW5jcmVtZW50YWxTd2VlcGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEluY3JlbWVudGFsU3dlZXBlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUMyNUY4QkNDMTU3NTQ0QTkwMDI0NUI3MSAvKiBJbmNyZW1lbnRhbFN3ZWVwZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5jcmVtZW50YWxTd2VlcGVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMyQTdGNjg3MTYwNDMyRDQwMEY3NkI5OCAvKiBK
U0Rlc3RydWN0aWJsZU9iamVjdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBK
U0Rlc3RydWN0aWJsZU9iamVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTcy
OSw2ICsxNzQxLDggQEAKIAkJQzJDOEQwMkIxNEEzQzZCMjAwNTc4RTY1IC8qIENvcGllZFNwYWNl
SW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb3BpZWRTcGFjZUlu
bGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzJDOEQwMkUxNEEzQ0VGQzAw
NTc4RTY1IC8qIENvcGllZEJsb2NrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IENvcGllZEJsb2NrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMyQzhEMDJGMTRB
M0NFRkMwMDU3OEU2NSAvKiBIZWFwQmxvY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSGVhcEJsb2NrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMyQ0YzOUJG
MTZFMTVBODEwMERENjlCRSAvKiBKU0FQSVdyYXBwZXJPYmplY3QuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNBUElXcmFwcGVyT2JqZWN0LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzJDRjM5QzAxNkUxNUE4MTAwREQ2OUJFIC8qIEpTQVBJV3Jh
cHBlck9iamVjdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0FQSVdyYXBw
ZXJPYmplY3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzJENThDMzMxNTkxMkZF
RTAwMjFBODQ0IC8qIEdDQWN0aXZpdHlDYWxsYmFjay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBHQ0FjdGl2aXR5Q2FsbGJhY2suY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlDMkU1MjZCQjE1OTBFRjAwMDA1NEU0OEQgLyogSGVhcFRpbWVyLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhlYXBUaW1lci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMyRTUyNkJDMTU5MEVGMDAwMDU0RTQ4RCAvKiBIZWFw
VGltZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSGVhcFRpbWVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMjAyLDYgKzIyMTYsMTMgQEAKIAkJCQlFMTI0
QThGNjBFNTU1Nzc1MDAzMDkxRjEgLyogT3BhcXVlSlNTdHJpbmcuY3BwICovLAogCQkJCUUxMjRB
OEY1MEU1NTU3NzUwMDMwOTFGMSAvKiBPcGFxdWVKU1N0cmluZy5oICovLAogCQkJCTVERTNEMEY0
MEREOERERkIwMDQ2ODcxNCAvKiBXZWJLaXRBdmFpbGFiaWxpdHkuaCAqLywKKwkJCQlDMjVENzA5
OTE2REU5OUY0MDBGQ0E2QkMgLyogSlNNYW5hZ2VkVmFsdWUubW0gKi8sCisJCQkJQzI1RDcwOUEx
NkRFOTlGNDAwRkNBNkJDIC8qIEpTTWFuYWdlZFZhbHVlLmggKi8sCisJCQkJQzJDRjM5QkYxNkUx
NUE4MTAwREQ2OUJFIC8qIEpTQVBJV3JhcHBlck9iamVjdC5jcHAgKi8sCisJCQkJQzJDRjM5QzAx
NkUxNUE4MTAwREQ2OUJFIC8qIEpTQVBJV3JhcHBlck9iamVjdC5oICovLAorCQkJCUMyMzMzRkI3
MTZFNTQxNDQwMEE2RkI4NCAvKiBKU1dlYWtWYWx1ZS5tbSAqLywKKwkJCQlDMjMzM0ZCODE2RTU0
MTQ0MDBBNkZCODQgLyogSlNXZWFrVmFsdWUuaCAqLywKKwkJCQlDMjMzM0ZCQjE2RTU0NjY2MDBB
NkZCODQgLyogSlNXZWFrVmFsdWVJbnRlcm5hbC5oICovLAogCQkJKTsKIAkJCXBhdGggPSBBUEk7
CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMjkxNSw2ICsyOTM2LDggQEAKIAkJCWlz
YSA9IFBCWEhlYWRlcnNCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0
NzsKIAkJCWZpbGVzID0gKAorCQkJCUMyMzMzRkJBMTZFNTQxNDQwMEE2RkI4NCAvKiBKU1dlYWtW
YWx1ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQzI1RDcwOUMxNkRFOTlGNDAwRkNBNkJDIC8qIEpT
TWFuYWdlZFZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NjAxNjFFMzBGM0E4M0MxMDBGODQ3
MTAgLyogQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY1NUYw
RjUxNEQxMDYzQzAwQUM3NjQ5IC8qIEFic3RyYWN0UEMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJD
MThDM0U1MEUxNkY1Q0QwMEIzNDQ2MCAvKiBBUElDYXN0LmggaW4gSGVhZGVycyAqLywKQEAgLTMx
NjUsNiArMzE4OCw3IEBACiAJCQkJQkMxOEM0MkQwRTE2RjVDRDAwQjM0NDYwIC8qIEpTVmFyaWFi
bGVPYmplY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2RTNDNjE1MTY3QkFCRDcwMDZENzYwQSAv
KiBKU1ZpcnR1YWxNYWNoaW5lLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzQ4MkU5MzExNkE3Q0FE
MDAzQjA3MTIgLyogSlNXZWFrT2JqZWN0TWFwUmVmSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAor
CQkJCUMyQ0YzOUMyMTZFMTVBODEwMERENjlCRSAvKiBKU0FQSVdyYXBwZXJPYmplY3QuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUE3NDgyQjkzMTE2NzExNDcwMDNCMDcxMiAvKiBKU1dlYWtPYmplY3RN
YXBSZWZQcml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDQyNTY2MjE1RURFOThEMDA2NkE0
OUIgLyogSlNXaXRoU2NvcGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2RTNDNjE5MTY3QkFCRUUw
MDZENzYwQSAvKiBKU1dyYXBwZXJNYXAuaCBpbiBIZWFkZXJzICovLApAQCAtMzIwMSw2ICszMjI1
LDcgQEAKIAkJCQk4NkQzQjJDNjEwMTU2QkRFMDAyODY1RTcgLyogTWFjcm9Bc3NlbWJsZXJBUk0u
aCBpbiBIZWFkZXJzICovLAogCQkJCTg2QUREMTQ2MEZEREVBOTgwMDA2RUVDMiAvKiBNYWNyb0Fz
c2VtYmxlckFSTXY3LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjM0QjE0QzE2RDQzRTBEMDAxQ0RB
NUEgLyogUG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0LmggaW4gSGVhZGVycyAqLywKKwkJ
CQlDMjMzM0ZCQzE2RTU0NjY2MDBBNkZCODQgLyogSlNXZWFrVmFsdWVJbnRlcm5hbC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJODYzQjIzRTAwRkM2MTE4OTAwNzAzQUE0IC8qIE1hY3JvQXNzZW1ibGVy
Q29kZVJlZi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODZDNTY4RTExMUEyMTNFRTAwMDdGN0YwIC8q
IE1hY3JvQXNzZW1ibGVyTUlQUy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODZBRTY0QTkxMzVFNUUx
QzAwOTYzMDEyIC8qIE1hY3JvQXNzZW1ibGVyU0g0LmggaW4gSGVhZGVycyAqLywKQEAgLTM3ODAs
NiArMzgwNSw3IEBACiAJCQkJMEZEM0M4MjYxNDExNUQ0MDAwRkQ4MUNCIC8qIERGR0RyaXZlci5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkYwRjE5RTE2QjcyQTBCMDA1REY5NUIgLyogREZHRWRn
ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkJDMEFFNzE0OTZDN0M0MDBENEZCREQgLyogREZH
RXhpdFByb2ZpbGUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQzJDRjM5QzExNkUxNUE4MTAwREQ2
OUJFIC8qIEpTQVBJV3JhcHBlck9iamVjdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjJCREMx
NTE1MUM1RDREMDBDRDg5MTAgLyogREZHRml4dXBQaGFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk4NkVDOURDNzEzMjhERjgyMDAyQjJBRDcgLyogREZHR3JhcGguY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJODZFQzlEQ0IxMzI4REY4MjAwMkIyQUQ3IC8qIERGR0pJVENvbXBpbGVyLmNwcCBpbiBT
b3VyY2VzICovLApAQCAtMzkwOSw2ICszOTM1LDcgQEAKIAkJCQlBN0UyRUE2QzBGQjQ2MENGMDA2
MDFGMDYgLyogTGl0ZXJhbFBhcnNlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRTIwQ0U5RDE1
RjA0QTk1MDBERjM0MzAgLyogTExJbnRDTG9vcC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjQ2
ODBEMjE0QkJEMTY1MDBCRkUyNzIgLyogTExJbnREYXRhLmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CUMyMzMzRkI5MTZFNTQxNDQwMEE2RkI4NCAvKiBKU1dlYWtWYWx1ZS5tbSBpbiBTb3VyY2VzICov
LAogCQkJCTBGMEI4MzlBMTRCQ0Y0NUQwMDg4NUI0RiAvKiBMTEludEVudHJ5cG9pbnRzLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTBGNDY4MEE4MTRCQTdGQUIwMEJGRTI3MiAvKiBMTEludEV4Y2Vw
dGlvbnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY0NjgwQTQxNEJBN0Y4RDAwQkZFMjcyIC8q
IExMSW50U2xvd1BhdGhzLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMzk5Niw2ICs0MDIzLDcgQEAK
IAkJCQlCQ0NGMEQwQzBFRjBCOEE1MDA0MTNDOEYgLyogU3RydWN0dXJlU3R1YkluZm8uY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMEY5MTlEMjgxNTg1Njc3MzAwNEE0RTdEIC8qIFN5bWJvbFRhYmxl
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3Mzg2NTU1MTE4Njk3QjQwMDU0MDI3OSAvKiBUaHVu
a0dlbmVyYXRvcnMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQzI1RDcwOUIxNkRFOTlGNDAwRkNB
NkJDIC8qIEpTTWFuYWdlZFZhbHVlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMTRBNDJFM0YwRjRG
NjBFRTAwNTk5MDk5IC8qIFRpbWVvdXRDaGVja2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBG
RjQyNzRBMTU4RUJFOTEwMDRDQjlGRiAvKiB1ZGlzODYuYyBpbiBTb3VyY2VzICovLAogCQkJCTBG
RjQyNzQwMTU4RUJFOEIwMDRDQjlGRiAvKiB1ZGlzODZfZGVjb2RlLmMgaW4gU291cmNlcyAqLywK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dC5jcHAJKHJldmlzaW9uIDE0NDY5MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDcsNiArNDcsNyBAQAogI2lu
Y2x1ZGUgIkZ1bmN0aW9uUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCiAj
aW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKKyNpbmNsdWRlICJKU0FQSVdyYXBwZXJPYmplY3QuaCIK
ICNpbmNsdWRlICJKU0FjdGl2YXRpb24uaCIKICNpbmNsdWRlICJKU0JvdW5kRnVuY3Rpb24uaCIK
ICNpbmNsdWRlICJKU0NhbGxiYWNrQ29uc3RydWN0b3IuaCIKQEAgLTIyOSw2ICsyMzAsNyBAQCB2
b2lkIEpTR2xvYmFsT2JqZWN0OjpyZXNldChKU1ZhbHVlIHByb3RvCiAgICAgbV9hcmd1bWVudHNT
dHJ1Y3R1cmUuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgQXJndW1lbnRzOjpjcmVhdGVT
dHJ1Y3R1cmUoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBtX29iamVjdFByb3RvdHlwZS5nZXQo
KSkpOwogICAgIG1fY2FsbGJhY2tDb25zdHJ1Y3RvclN0cnVjdHVyZS5zZXQoZXhlYy0+Z2xvYmFs
RGF0YSgpLCB0aGlzLCBKU0NhbGxiYWNrQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZShleGVj
LT5nbG9iYWxEYXRhKCksIHRoaXMsIG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKSk7CiAgICAgbV9j
YWxsYmFja09iamVjdFN0cnVjdHVyZS5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBKU0Nh
bGxiYWNrT2JqZWN0PEpTRGVzdHJ1Y3RpYmxlT2JqZWN0Pjo6Y3JlYXRlU3RydWN0dXJlKGV4ZWMt
Pmdsb2JhbERhdGEoKSwgdGhpcywgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpKTsKKyAgICBtX29i
amNXcmFwcGVyT2JqZWN0U3RydWN0dXJlLnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIEpT
Q2FsbGJhY2tPYmplY3Q8SlNBUElXcmFwcGVyT2JqZWN0Pjo6Y3JlYXRlU3RydWN0dXJlKGV4ZWMt
Pmdsb2JhbERhdGEoKSwgdGhpcywgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpKTsKIAogICAgIG1f
YXJyYXlQcm90b3R5cGUuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgQXJyYXlQcm90b3R5
cGU6OmNyZWF0ZShleGVjLCB0aGlzLCBBcnJheVByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKGV4
ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpKSk7CiAgICAg
CkBAIC01MTEsNiArNTEzLDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbihK
U0NlbAogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2NhbGxiYWNrQ29uc3RydWN0
b3JTdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2NhbGxiYWNr
RnVuY3Rpb25TdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2Nh
bGxiYWNrT2JqZWN0U3RydWN0dXJlKTsKKyAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+
bV9vYmpjV3JhcHBlck9iamVjdFN0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNP
YmplY3QtPm1fZGF0ZVN0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3Qt
Pm1fbnVsbFByb3RvdHlwZU9iamVjdFN0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRo
aXNPYmplY3QtPm1fZXJyb3JTdHJ1Y3R1cmUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCShyZXZpc2lvbiAxNDQ2OTMpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xNDEsNiArMTQxLDcgQEAgcHJvdGVjdGVkOgogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1
cmU+IG1fY2FsbGJhY2tDb25zdHJ1Y3RvclN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3Ry
dWN0dXJlPiBtX2NhbGxiYWNrRnVuY3Rpb25TdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0
cnVjdHVyZT4gbV9jYWxsYmFja09iamVjdFN0cnVjdHVyZTsKKyAgICBXcml0ZUJhcnJpZXI8U3Ry
dWN0dXJlPiBtX29iamNXcmFwcGVyT2JqZWN0U3RydWN0dXJlOwogICAgIFdyaXRlQmFycmllcjxT
dHJ1Y3R1cmU+IG1fZGF0ZVN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBt
X251bGxQcm90b3R5cGVPYmplY3RTdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVy
ZT4gbV9lcnJvclN0cnVjdHVyZTsKQEAgLTMwMCw2ICszMDEsNyBAQCBwdWJsaWM6CiAgICAgU3Ry
dWN0dXJlKiBjYWxsYmFja0NvbnN0cnVjdG9yU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9j
YWxsYmFja0NvbnN0cnVjdG9yU3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiBjYWxs
YmFja0Z1bmN0aW9uU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9jYWxsYmFja0Z1bmN0aW9u
U3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiBjYWxsYmFja09iamVjdFN0cnVjdHVy
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2FsbGJhY2tPYmplY3RTdHJ1Y3R1cmUuZ2V0KCk7IH0KKyAg
ICBTdHJ1Y3R1cmUqIG9iamNXcmFwcGVyT2JqZWN0U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4g
bV9vYmpjV3JhcHBlck9iamVjdFN0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSogZGF0
ZVN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0ZVN0cnVjdHVyZS5nZXQoKTsgfQogICAg
IFN0cnVjdHVyZSogbnVsbFByb3RvdHlwZU9iamVjdFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJu
IG1fbnVsbFByb3RvdHlwZU9iamVjdFN0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSog
ZXJyb3JTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2Vycm9yU3RydWN0dXJlLmdldCgpOyB9
Cg==
</data>
<flag name="review"
          id="212278"
          type_id="1"
          status="+"
          setter="ggaren"
    />
    <flag name="commit-queue"
          id="212281"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>191526</attachid>
            <date>2013-03-05 11:50:42 -0800</date>
            <delta_ts>2013-03-05 12:38:40 -0800</delta_ts>
            <desc>fixing issues</desc>
            <filename>the.patch</filename>
            <type>text/plain</type>
            <size>49629</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTQ0Nzg5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwNSBA
QAorMjAxMy0wMy0wNSAgTWFyayBIYWhuZW5iZXJnICA8bWhhaG5lbmJlcmdAYXBwbGUuY29tPgor
CisgICAgICAgIE9iamVjdGl2ZS1DIEFQSTogTmVlZCBhIGdvb2Qgd2F5IHRvIHJlZmVyZW5jZSBl
dmVudCBoYW5kbGVycyB3aXRob3V0IGNhdXNpbmcgY3ljbGVzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTEwODgKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBKU01hbmFnZWRWYWx1ZSBpcyBsaWtlIGEgc3Bl
Y2lhbCBraW5kIG9mIHdlYWsgdmFsdWUuIFdoZW4geW91IGNyZWF0ZSBhIEpTTWFuYWdlZFZhbHVl
LCB5b3UgY2FuCisgICAgICAgIHN1cHBseSBhbiBPYmplY3RpdmUtQyBvYmplY3QgYXMgaXRzICJv
d25lciIuIEFzIGxvbmcgYXMgdGhlIE9iamVjdGl2ZS1DIG93bmVyIG9iamVjdCByZW1haW5zCisg
ICAgICAgIGFsaXZlIGFuZCBpdHMgd3JhcHBlciByZW1haW5zIGFjY2Vzc2libGUgdG8gdGhlIEpT
QyBnYXJiYWdlIGNvbGxlY3RvciAoZS5nLiBieSBiZWluZyBtYXJrZWQgYnkgCisgICAgICAgIHRo
ZSBnbG9iYWwgb2JqZWN0KSwgdGhlIHJlZmVyZW5jZSB0byB0aGUgSmF2YVNjcmlwdCB2YWx1ZSBp
cyBzdHJvbmcuIEFzIHNvb24gYXMgdGhlIE9iamVjdGl2ZS1DCisgICAgICAgIG93bmVyIGlzIGRl
YWxsb2NhdGVkIG9yIGl0cyB3cmFwcGVyIGJlY29tZXMgaW5hY2Nlc3NpYmxlIHRvIHRoZSBnYXJi
YWdlIGNvbGxlY3RvciwgdGhlIHJlZmVyZW5jZQorICAgICAgICBiZWNvbWVzIHdlYWsuCisKKyAg
ICAgICAgSWYgeW91IGRvIG5vdCBzdXBwbHkgYW4gb3duZXIgb3IgeW91IHVzZSB0aGUgd2Vha1Zh
bHVlV2l0aFZhbHVlOiBjb252ZW5pZW5jZSBjbGFzcyBtZXRob2QsIHRoZQorICAgICAgICByZXR1
cm5lZCBKU01hbmFnZWRWYWx1ZSBiZWhhdmVzIGFzIGEgbm9ybWFsIHdlYWsgcmVmZXJlbmNlLgor
CisgICAgICAgIFRoaXMgbmV3IGNsYXNzIGFsbG93cyBjbGllbnRzIHRvIG1haW50YWluIHJlZmVy
ZW5jZXMgdG8gSmF2YVNjcmlwdCB2YWx1ZXMgaW4gdGhlIE9iamVjdGl2ZS1DCisgICAgICAgIGhl
YXAgd2l0aG91dCBjcmVhdGluZyByZWZlcmVuY2UgY3ljbGVzL2xlYWtpbmcgbWVtb3J5LgorCisg
ICAgICAgICogQVBJL0pTQVBJV3JhcHBlck9iamVjdC5jcHA6IEFkZGVkLgorICAgICAgICAoSlND
KToKKyAgICAgICAgKEpTQzo6OjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpKU0FQ
SVdyYXBwZXJPYmplY3Q6OkpTQVBJV3JhcHBlck9iamVjdCk6IFRoaXMgaXMgYSBzcGVjaWFsIEpT
T2JqZWN0IGZvciB0aGUgT2JqZWN0aXZlLUMgQVBJIHRoYXQga25vd3MKKyAgICAgICAgZm9yIHRo
ZSBwdXJwb3NlcyBvZiBnYXJiYWdlIGNvbGxlY3Rpb24vbWFya2luZyB0aGF0IGl0IHdyYXBzIGFu
IG9wYXF1ZSBPYmplY3RpdmUtQyBvYmplY3QuCisgICAgICAgIChKU0M6OkpTQVBJV3JhcHBlck9i
amVjdDo6dmlzaXRDaGlsZHJlbik6IFdlIGFkZCB0aGUgcG9pbnRlciB0byB0aGUgd3JhcHBlZCBP
YmplY3RpdmUtQyBvYmplY3QgdG8gdGhlIHNldCBvZgorICAgICAgICBvcGFxdWUgcm9vdHMgc28g
dGhhdCB0aGUgd2VhayBoYW5kbGUgb3duZXIgZm9yIEpTTWFuYWdlZFZhbHVlcyBjYW4gZmluZCBp
dCBsYXRlci4KKyAgICAgICAgKiBBUEkvSlNBUElXcmFwcGVyT2JqZWN0Lmg6IEFkZGVkLgorICAg
ICAgICAoSlNDKToKKyAgICAgICAgKEpTQVBJV3JhcHBlck9iamVjdCk6CisgICAgICAgIChKU0M6
OkpTQVBJV3JhcHBlck9iamVjdDo6d3JhcHBlZE9iamVjdCk6CisgICAgICAgIChKU0M6OkpTQVBJ
V3JhcHBlck9iamVjdDo6c2V0V3JhcHBlZE9iamVjdCk6CisgICAgICAgICogQVBJL0pTQmFzZS5j
cHA6CisgICAgICAgIChKU1N5bmNocm9ub3VzR2FyYmFnZUNvbGxlY3QpOgorICAgICAgICAqIEFQ
SS9KU0Jhc2VQcml2YXRlLmg6CisgICAgICAgICogQVBJL0pTQ2FsbGJhY2tPYmplY3QuY3BwOgor
ICAgICAgICAoSlNDKToKKyAgICAgICAgKiBBUEkvSlNDYWxsYmFja09iamVjdC5oOgorICAgICAg
ICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0OjpkZXN0cm95KTogTW92ZWQgdGhpcyB0byB0aGUgaGVh
ZGVyIHNvIHRoYXQgd2UgZG9uJ3QgZ2V0IGxpbmsgZXJyb3JzIHdpdGggSlNBUElXcmFwcGVyT2Jq
ZWN0LgorICAgICAgICAqIEFQSS9KU0NvbnRleHQubW06CisgICAgICAgICgtW0pTQ29udGV4dCBp
bml0V2l0aFZpcnR1YWxNYWNoaW5lOl0pOiBXZSB3ZXJlbid0IGFkZGluZyBtYW51YWxseSBhbGxv
Y2F0ZWQvaW5pdGlhbGl6ZWQgSlNWaXJ0dWFsTWFjaGluZSBvYmplY3RzIHRvIAorICAgICAgICB0
aGUgZ2xvYmFsIGNhY2hlIG9mIHZpcnR1YWwgbWFjaGluZXMuIFRoZSBpbml0IG1ldGhvZHMgaGFu
ZGxlIHRoaXMgbm93IHJhdGhlciB0aGFuIGNvbnRleHRXaXRoR2xvYmFsQ29udGV4dFJlZiwgc2lu
Y2UgCisgICAgICAgIG5vdCBldmVyeW9uZSBpcyBndWFyYW50ZWVkIHRvIHVzZSB0aGUgbGF0dGVy
LgorICAgICAgICAoLVtKU0NvbnRleHQgaW5pdFdpdGhHbG9iYWxDb250ZXh0UmVmOl0pOgorICAg
ICAgICAoK1tKU0NvbnRleHQgY29udGV4dFdpdGhHbG9iYWxDb250ZXh0UmVmOl0pOgorICAgICAg
ICAqIEFQSS9KU01hbmFnZWRWYWx1ZS5oOiBBZGRlZC4KKyAgICAgICAgKiBBUEkvSlNNYW5hZ2Vk
VmFsdWUubW06IEFkZGVkLgorICAgICAgICAoSlNNYW5hZ2VkVmFsdWVIYW5kbGVPd25lcik6Cisg
ICAgICAgIChtYW5hZ2VkVmFsdWVIYW5kbGVPd25lcik6CisgICAgICAgICgrW0pTTWFuYWdlZFZh
bHVlIHdlYWtWYWx1ZVdpdGhWYWx1ZTpdKToKKyAgICAgICAgKCtbSlNNYW5hZ2VkVmFsdWUgbWFu
YWdlZFZhbHVlV2l0aFZhbHVlOm93bmVyOl0pOgorICAgICAgICAoLVtKU01hbmFnZWRWYWx1ZSBp
bml0XSk6IFdlIGV4cGxpY2l0bHkgY2FsbCB0aGUgQVJDIGVudHJ5cG9pbnRzIHRvIGluaXRpYWxp
emUvZ2V0IHRoZSB3ZWFrIG93bmVyIGZpZWxkIHNpbmNlIHdlIGRvbid0IAorICAgICAgICB1c2Ug
QVJDIHdoZW4gYnVpbGRpbmcgb3VyIGZyYW1ld29yay4KKyAgICAgICAgKC1bSlNNYW5hZ2VkVmFs
dWUgaW5pdFdpdGhWYWx1ZTpdKToKKyAgICAgICAgKC1bSlNNYW5hZ2VkVmFsdWUgaW5pdFdpdGhW
YWx1ZTpvd25lcjpdKToKKyAgICAgICAgKC1bSlNNYW5hZ2VkVmFsdWUgZGVhbGxvY10pOgorICAg
ICAgICAoLVtKU01hbmFnZWRWYWx1ZSB2YWx1ZV0pOgorICAgICAgICAoLVtKU01hbmFnZWRWYWx1
ZSB3ZWFrT3duZXJdKToKKyAgICAgICAgKEpTTWFuYWdlZFZhbHVlSGFuZGxlT3duZXI6OmlzUmVh
Y2hhYmxlRnJvbU9wYXF1ZVJvb3RzKTogSWYgdGhlIE9iamVjdGl2ZS1DIG93bmVyIGlzIHN0aWxs
IGFsaXZlIChpLmUuIGxvYWRpbmcgdGhlIHdlYWsgZmllbGQKKyAgICAgICAgcmV0dXJucyBub24t
bmlsKSBhbmQgdGhhdCB2YWx1ZSB3YXMgYWRkZWQgdG8gdGhlIHNldCBvZiBvcGFxdWUgcm9vdHMg
YnkgdGhlIHdyYXBwZXIgZm9yIHRoYXQgT2JqZWN0aXZlLUMgb3duZXIsIHRoZW4gdGhlIHRoZSAK
KyAgICAgICAgSlNPYmplY3QgdG8gd2hpY2ggdGhlIEpTTWFuYWdlZE9iamVjdCByZWZlcnMgaXMg
c3RpbGwgYWxpdmUuCisgICAgICAgICogQVBJL0pTT2JqZWN0UmVmLmNwcDogV2UgaGF2ZSB0byBh
ZGQgZXhwbGljaXQgY2hlY2tzIGZvciB0aGUgSlNBUElXcmFwcGVyT2JqZWN0LCBqdXN0IGxpa2Ug
dGhlIG90aGVyIHR5cGVzIG9mIEpTQ2FsbGJhY2tPYmplY3RzLgorICAgICAgICAoSlNPYmplY3RH
ZXRQcml2YXRlKToKKyAgICAgICAgKEpTT2JqZWN0U2V0UHJpdmF0ZSk6CisgICAgICAgIChKU09i
amVjdEdldFByaXZhdGVQcm9wZXJ0eSk6CisgICAgICAgIChKU09iamVjdFNldFByaXZhdGVQcm9w
ZXJ0eSk6CisgICAgICAgIChKU09iamVjdERlbGV0ZVByaXZhdGVQcm9wZXJ0eSk6CisgICAgICAg
ICogQVBJL0pTVmFsdWUubW06CisgICAgICAgIChvYmplY3RUb1ZhbHVlV2l0aG91dENvcHkpOgor
ICAgICAgICAqIEFQSS9KU1ZhbHVlUmVmLmNwcDoKKyAgICAgICAgKEpTVmFsdWVJc09iamVjdE9m
Q2xhc3MpOgorICAgICAgICAqIEFQSS9KU1ZpcnR1YWxNYWNoaW5lLm1tOgorICAgICAgICAoLVtK
U1ZpcnR1YWxNYWNoaW5lIGluaXRXaXRoQ29udGV4dEdyb3VwUmVmOl0pOgorICAgICAgICAoK1tK
U1ZpcnR1YWxNYWNoaW5lIHZpcnR1YWxNYWNoaW5lV2l0aENvbnRleHRHcm91cFJlZjpdKToKKyAg
ICAgICAgKiBBUEkvSlNXcmFwcGVyTWFwLm1tOgorICAgICAgICAod3JhcHBlckZpbmFsaXplKToK
KyAgICAgICAgKG1ha2VXcmFwcGVyKTogVGhpcyBpcyBvdXIgb3duIGludGVybmFsIHZlcnNpb24g
b2YgSlNPYmplY3RNYWtlIHdoaWNoIGNyZWF0ZXMgSlNBUElXcmFwcGVyT2JqZWN0cywgdGhlIE9i
ai1DIEFQSSAKKyAgICAgICAgdmVyc2lvbiBvZiBKU0NhbGxiYWNrT2JqZWN0cy4KKyAgICAgICAg
KGNyZWF0ZU9iamVjdFdpdGhDdXN0b21CcmFuZCk6CisgICAgICAgICgtW0pTT2JqQ0NsYXNzSW5m
byB3cmFwcGVyRm9yT2JqZWN0Ol0pOgorICAgICAgICAodHJ5VW53cmFwT2JqY09iamVjdCk6Cisg
ICAgICAgICogQVBJL0phdmFTY3JpcHRDb3JlLmg6CisgICAgICAgICogQVBJL3Rlc3RzL3Rlc3Rh
cGkubW06IEFkZGVkIG5ldyB0ZXN0cyBmb3IgSlNNYW5hZ2VkVmFsdWUgYW5kIEpTV2Vha1ZhbHVl
IGluIHRoZSBjb250ZXh0IG9mIGFuIG9uY2xpY2sgaGFuZGxlciBmb3IgCisgICAgICAgIGFuIE9i
amVjdGl2ZS1DIG9iamVjdCBpbnNlcnRlZCBpbnRvIGEgSlNDb250ZXh0LgorICAgICAgICAoLVtU
ZXh0WFlaIHNldFdlYWtPbmNsaWNrOl0pOgorICAgICAgICAoLVtUZXh0WFlaIHNldE9uY2xpY2s6
XSk6CisgICAgICAgICgtW1RleHRYWVogd2Vha09uY2xpY2tdKToKKyAgICAgICAgKC1bVGV4dFhZ
WiBvbmNsaWNrXSk6CisgICAgICAgICgtW1RleHRYWVogY2xpY2tdKToKKyAgICAgICAgKiBDTWFr
ZUxpc3RzLnR4dDogVmFyaW91cyBidWlsZCBzeXN0ZW0gYWRkaXRpb25zLgorICAgICAgICAqIEdO
VW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogSmF2YVNjcmlwdENvcmUuZ3lwaToKKyAgICAg
ICAgKiBKYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
dmNwcm9qOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6IEFkZGVkIHRoZSBuZXcg
Y2Fub25pY2FsIFN0cnVjdHVyZSBmb3IgdGhlIEpTQVBJV3JhcHBlck9iamVjdCBjbGFzcy4KKyAg
ICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnJlc2V0KToKKyAgICAgICAgKEpTQyk6CisgICAg
ICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBydW50
aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgIChKU0dsb2JhbE9iamVjdCk6CisgICAgICAg
IChKU0M6OkpTR2xvYmFsT2JqZWN0OjpvYmpjV3JhcHBlck9iamVjdFN0cnVjdHVyZSk6CisKIDIw
MTMtMDMtMDUgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAg
ICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxNDQ3MDguCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAxNDQ3ODApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTI0LDYgKzI0LDcgQEAg
c2V0KEphdmFTY3JpcHRDb3JlX0lOQ0xVREVfRElSRUNUT1JJRVMKICkKIAogc2V0KEphdmFTY3Jp
cHRDb3JlX1NPVVJDRVMKKyAgICBBUEkvSlNBUElXcmFwcGVyT2JqZWN0LmNwcAogICAgIEFQSS9K
U0Jhc2UuY3BwCiAgICAgQVBJL0pTQ2FsbGJhY2tDb25zdHJ1Y3Rvci5jcHAKICAgICBBUEkvSlND
YWxsYmFja0Z1bmN0aW9uLmNwcApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2Vm
aWxlLmxpc3QuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2Vm
aWxlLmxpc3QuYW0JKHJldmlzaW9uIDE0NDc4MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9H
TlVtYWtlZmlsZS5saXN0LmFtCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw2ICszNiw4IEBAIGphdmFz
Y3JpcHRjb3JlX2J1aWx0X25vc291cmNlcyArPSBcCiBqYXZhc2NyaXB0Y29yZV9zb3VyY2VzICs9
IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0FQSUNhc3QuaCBcCiAJU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9BUElTaGltcy5oIFwKKyAgICBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTQVBJV3JhcHBlck9iamVjdC5jcHAgXAorICAgIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
SlNBUElXcmFwcGVyT2JqZWN0LmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNCYXNl
LmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0Jhc2VQcml2YXRlLmggXAogCVNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja0NvbnN0cnVjdG9yLmNwcCBcCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZ3lwaQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZ3lwaQkocmV2aXNpb24gMTQ0
NzgwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmd5cGkJKHdvcmtp
bmcgY29weSkKQEAgLTM2LDYgKzM2LDggQEAKICAgICAgICAgICAgICdBUEkvQVBJU2hpbXMuaCcs
CiAgICAgICAgICAgICAnQVBJL0phdmFTY3JpcHRDb3JlLmgnLAogICAgICAgICAgICAgJ0FQSS9K
YXZhU2NyaXB0LmgnLAorICAgICAgICAgICAgJ0FQSS9KU0FQSVdyYXBwZXJPYmplY3QuY3BwJywK
KyAgICAgICAgICAgICdBUEkvSlNBUElXcmFwcGVyT2JqZWN0LmgnLAogICAgICAgICAgICAgJ0FQ
SS9KU0Jhc2UuY3BwJywKICAgICAgICAgICAgICdBUEkvSlNCYXNlLmgnLAogICAgICAgICAgICAg
J0FQSS9KU0Jhc2VQcml2YXRlLmgnLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9K
U0FQSVdyYXBwZXJPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvSlNBUElXcmFwcGVyT2JqZWN0LmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvSlNBUElXcmFwcGVyT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDYzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IkpTQVBJV3JhcHBlck9iamVjdC5oIgorCisjaW5jbHVkZSAiSlNDYWxsYmFja09iamVjdC5oIgor
CisjaWYgSlNDX09CSkNfQVBJX0VOQUJMRUQKKworbmFtZXNwYWNlIEpTQyB7CisgICAgCit0ZW1w
bGF0ZSA8PiBjb25zdCBDbGFzc0luZm8gSlNDYWxsYmFja09iamVjdDxKU0FQSVdyYXBwZXJPYmpl
Y3Q+OjpzX2luZm8gPSB7ICJFbnVtZXJhYmxlQ2FsbGJhY2tPYmplY3QiLCAmQmFzZTo6c19pbmZv
LCAwLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTQ2FsbGJhY2tPYmplY3QpIH07CisKK3RlbXBs
YXRlPD4gY29uc3QgYm9vbCBKU0NhbGxiYWNrT2JqZWN0PEpTQVBJV3JhcHBlck9iamVjdD46Om5l
ZWRzRGVzdHJ1Y3Rpb24gPSB0cnVlOworCit0ZW1wbGF0ZSA8PgorU3RydWN0dXJlKiBKU0NhbGxi
YWNrT2JqZWN0PEpTQVBJV3JhcHBlck9iamVjdD46OmNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERh
dGEmIGdsb2JhbERhdGEsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJv
dG8pCit7CisgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKGdsb2JhbERhdGEsIGdsb2JhbE9i
amVjdCwgcHJvdG8sIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgJnNfaW5m
byk7Cit9CisKK0pTQVBJV3JhcHBlck9iamVjdDo6SlNBUElXcmFwcGVyT2JqZWN0KEpTR2xvYmFs
RGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBCYXNlKGdsb2Jh
bERhdGEsIHN0cnVjdHVyZSkKKyAgICAsIG1fd3JhcHBlZE9iamVjdCgwKQoreworfQorCit2b2lk
IEpTQVBJV3JhcHBlck9iamVjdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIEpTQzo6U2xv
dFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgSlNBUElXcmFwcGVyT2JqZWN0KiB0aGlzT2JqZWN0
ID0gSlNDOjpqc0Nhc3Q8SlNBUElXcmFwcGVyT2JqZWN0Kj4oY2VsbCk7CisgICAgQ09NUElMRV9B
U1NFUlQoU3RydWN0dXJlRmxhZ3MgJiBPdmVycmlkZXNWaXNpdENoaWxkcmVuLCBPdmVycmlkZXNW
aXNpdENoaWxkcmVuV2l0aG91dFNldHRpbmdGbGFnKTsKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVu
KGNlbGwsIHZpc2l0b3IpOworCisgICAgaWYgKHRoaXNPYmplY3QtPndyYXBwZWRPYmplY3QoKSkK
KyAgICAgICAgdmlzaXRvci5hZGRPcGFxdWVSb290KHRoaXNPYmplY3QtPndyYXBwZWRPYmplY3Qo
KSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gSlNDX09CSkNfQVBJX0VO
QUJMRUQKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNBUElXcmFwcGVyT2JqZWN0
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0FQSVdyYXBwZXJP
YmplY3QuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNBUElX
cmFwcGVyT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1OSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpZm5kZWYgSlNBUElXcmFwcGVyT2JqZWN0X2gKKyNkZWZpbmUgSlNBUElXcmFwcGVyT2Jq
ZWN0X2gKKworI2luY2x1ZGUgIkpTQmFzZS5oIgorI2luY2x1ZGUgIkpTRGVzdHJ1Y3RpYmxlT2Jq
ZWN0LmgiCisjaW5jbHVkZSAiV2Vha1JlZmVyZW5jZUhhcnZlc3Rlci5oIgorCisjaWYgSlNDX09C
SkNfQVBJX0VOQUJMRUQKKworbmFtZXNwYWNlIEpTQyB7CisgICAgCitjbGFzcyBKU0FQSVdyYXBw
ZXJPYmplY3QgOiBwdWJsaWMgSlNEZXN0cnVjdGlibGVPYmplY3QgeworcHVibGljOgorICAgIHR5
cGVkZWYgSlNEZXN0cnVjdGlibGVPYmplY3QgQmFzZTsKKyAgICAKKyAgICBzdGF0aWMgdm9pZCB2
aXNpdENoaWxkcmVuKEpTQ2VsbCosIEpTQzo6U2xvdFZpc2l0b3ImKTsKKyAgICAKKyAgICB2b2lk
KiB3cmFwcGVkT2JqZWN0KCkgeyByZXR1cm4gbV93cmFwcGVkT2JqZWN0OyB9CisgICAgdm9pZCBz
ZXRXcmFwcGVkT2JqZWN0KHZvaWQqIHdyYXBwZWRPYmplY3QpIHsgbV93cmFwcGVkT2JqZWN0ID0g
d3JhcHBlZE9iamVjdDsgfQorCitwcm90ZWN0ZWQ6CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVk
IFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiB8IEJhc2U6OlN0cnVjdHVy
ZUZsYWdzOworICAgIAorICAgIEpTQVBJV3JhcHBlck9iamVjdChKU0dsb2JhbERhdGEmLCBTdHJ1
Y3R1cmUqKTsKKworcHJpdmF0ZToKKyAgICB2b2lkKiBtX3dyYXBwZWRPYmplY3Q7Cit9OworCit9
IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEpTQ19PQkpDX0FQSV9FTkFCTEVECisKKyNl
bmRpZiAvLyBKU0FQSVdyYXBwZXJPYmplY3RfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU0Jhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
SlNCYXNlLmNwcAkocmV2aXNpb24gMTQ0NzgwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS9KU0Jhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTAsMyArMTEwLDEzIEBAIHZvaWQgSlNS
ZXBvcnRFeHRyYU1lbW9yeUNvc3QoSlNDb250ZXh0UmUKICAgICBBUElFbnRyeVNoaW0gZW50cnlT
aGltKGV4ZWMpOwogICAgIGV4ZWMtPmdsb2JhbERhdGEoKS5oZWFwLnJlcG9ydEV4dHJhTWVtb3J5
Q29zdChzaXplKTsKIH0KKwordm9pZCBKU1N5bmNocm9ub3VzR2FyYmFnZUNvbGxlY3QoSlNDb250
ZXh0UmVmIGN0eCkKK3sKKyAgICBpZiAoIWN0eCkKKyAgICAgICAgcmV0dXJuOworCisgICAgRXhl
Y1N0YXRlKiBleGVjID0gdG9KUyhjdHgpOworICAgIEFQSUVudHJ5U2hpbSBlbnRyeVNoaW0oZXhl
Yyk7CisgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLmhlYXAuY29sbGVjdEFsbEdhcmJhZ2UoKTsKK30K
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNCYXNlUHJpdmF0ZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNCYXNlUHJpdmF0ZS5oCShyZXZpc2lv
biAxNDQ3ODApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQmFzZVByaXZhdGUuaAko
d29ya2luZyBjb3B5KQpAQCAtNDUsNiArNDUsMTUgQEAgcmVnaW9uLgogKi8KIEpTX0VYUE9SVCB2
b2lkIEpTUmVwb3J0RXh0cmFNZW1vcnlDb3N0KEpTQ29udGV4dFJlZiBjdHgsIHNpemVfdCBzaXpl
KSBBVkFJTEFCTEVfSU5fV0VCS0lUX1ZFUlNJT05fNF8wOwogCisvKiEKK0BmdW5jdGlvbgorQGFi
c3RyYWN0IFN5bmNocm9ub3VzbHkgcnVucyBhIGZ1bGwgbWFyay1zd2VlcCBnYXJiYWdlIGNvbGxl
Y3Rpb24uCitAcGFyYW0gY3R4IFRoZSBleGVjdXRpb24gY29udGV4dCB0byB1c2UuCitAZGlzY3Vz
c2lvbiBUaGlzIGZ1bmN0aW9uIGlzIG9ubHkgdXNlZCBpbnRlcm5hbGx5IGZvciB0ZXN0cy4gSWYg
eW91J3JlIG5vdCAKK3N1cmUgeW91IG5lZWQgdG8gdXNlIHRoaXMgZnVuY3Rpb24gdGhlbiB5b3Ug
ZG9uJ3QgbmVlZCB0by4KKyovCitKU19FWFBPUlQgdm9pZCBKU1N5bmNocm9ub3VzR2FyYmFnZUNv
bGxlY3QoSlNDb250ZXh0UmVmIGN0eCk7CisKICNpZmRlZiBfX2NwbHVzcGx1cwogfQogI2VuZGlm
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3QuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdC5j
cHAJKHJldmlzaW9uIDE0NDc4MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxs
YmFja09iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYxLDEyICs2MSw2IEBAIFN0cnVjdHVy
ZSogSlNDYWxsYmFja09iamVjdDxKU0dsb2JhbE9iamUKICAgICByZXR1cm4gU3RydWN0dXJlOjpj
cmVhdGUoZ2xvYmFsRGF0YSwgZ2xvYmFsT2JqZWN0LCBwcm90bywgVHlwZUluZm8oR2xvYmFsT2Jq
ZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCAmc19pbmZvKTsgCiB9CiAKLXRlbXBsYXRlIDxjbGFz
cyBQYXJlbnQ+Ci12b2lkIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6ZGVzdHJveShKU0NlbGwq
IGNlbGwpCi17Ci0gICAgc3RhdGljX2Nhc3Q8SlNDYWxsYmFja09iamVjdCo+KGNlbGwpLT5KU0Nh
bGxiYWNrT2JqZWN0Ojp+SlNDYWxsYmFja09iamVjdCgpOwotfQotCiB2b2lkIEpTQ2FsbGJhY2tP
YmplY3REYXRhOjpmaW5hbGl6ZShIYW5kbGU8VW5rbm93bj4gaGFuZGxlLCB2b2lkKiBjb250ZXh0
KQogewogICAgIEpTQ2xhc3NSZWYganNDbGFzcyA9IHN0YXRpY19jYXN0PEpTQ2xhc3NSZWY+KGNv
bnRleHQpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2Jq
ZWN0LmgJKHJldmlzaW9uIDE0NDc4MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlND
YWxsYmFja09iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzYsNyArMTM2LDEwIEBAIHB1Ymxp
YzoKICAgICBzdGF0aWMgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+KiBjcmVhdGUoSlNHbG9iYWxE
YXRhJiwgSlNDbGFzc1JlZiwgU3RydWN0dXJlKik7CiAKICAgICBzdGF0aWMgY29uc3QgYm9vbCBu
ZWVkc0Rlc3RydWN0aW9uOwotICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CisgICAg
c3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqIGNlbGwpCisgICAgeworICAgICAgICBzdGF0aWNf
Y2FzdDxKU0NhbGxiYWNrT2JqZWN0Kj4oY2VsbCktPkpTQ2FsbGJhY2tPYmplY3Q6On5KU0NhbGxi
YWNrT2JqZWN0KCk7CisgICAgfQogCiAgICAgdm9pZCBzZXRQcml2YXRlKHZvaWQqIGRhdGEpOwog
ICAgIHZvaWQqIGdldFByaXZhdGUoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
SlNDb250ZXh0Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlND
b250ZXh0Lm1tCShyZXZpc2lvbiAxNDQ3ODApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTQ29udGV4dC5tbQkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUg
ImNvbmZpZy5oIgogCiAjaW1wb3J0ICJBUElDYXN0LmgiCisjaW1wb3J0ICJBUElTaGltcy5oIgog
I2ltcG9ydCAiSlNDb250ZXh0SW50ZXJuYWwuaCIKICNpbXBvcnQgIkpTR2xvYmFsT2JqZWN0Lmgi
CiAjaW1wb3J0ICJKU1ZhbHVlSW50ZXJuYWwuaCIKQEAgLTcyLDYgKzczLDggQEAgLSAoaWQpaW5p
dFdpdGhWaXJ0dWFsTWFjaGluZTooSlNWaXJ0dWFsTQogICAgICAgICBjb250ZXh0LmV4Y2VwdGlv
biA9IGV4Y2VwdGlvblZhbHVlOwogICAgIH07CiAKKyAgICBbbV92aXJ0dWFsTWFjaGluZSBhZGRD
b250ZXh0OnNlbGYgZm9yR2xvYmFsQ29udGV4dFJlZjptX2NvbnRleHRdOworCiAgICAgcmV0dXJu
IHNlbGY7CiB9CiAKQEAgLTE4Nyw2ICsxOTAsOCBAQCAtIChpZClpbml0V2l0aEdsb2JhbENvbnRl
eHRSZWY6KEpTR2xvYmFsCiAgICAgICAgIGNvbnRleHQuZXhjZXB0aW9uID0gZXhjZXB0aW9uVmFs
dWU7CiAgICAgfTsKIAorICAgIFttX3ZpcnR1YWxNYWNoaW5lIGFkZENvbnRleHQ6c2VsZiBmb3JH
bG9iYWxDb250ZXh0UmVmOm1fY29udGV4dF07CisKICAgICByZXR1cm4gc2VsZjsKIH0KIApAQCAt
MjU0LDEwICsyNTksOCBAQCArIChKU0NvbnRleHQgKiljb250ZXh0V2l0aEdsb2JhbENvbnRleHRS
CiB7CiAgICAgSlNWaXJ0dWFsTWFjaGluZSAqdmlydHVhbE1hY2hpbmUgPSBbSlNWaXJ0dWFsTWFj
aGluZSB2aXJ0dWFsTWFjaGluZVdpdGhDb250ZXh0R3JvdXBSZWY6dG9SZWYoJnRvSlMoZ2xvYmFs
Q29udGV4dCktPmdsb2JhbERhdGEoKSldOwogICAgIEpTQ29udGV4dCAqY29udGV4dCA9IFt2aXJ0
dWFsTWFjaGluZSBjb250ZXh0Rm9yR2xvYmFsQ29udGV4dFJlZjpnbG9iYWxDb250ZXh0XTsKLSAg
ICBpZiAoIWNvbnRleHQpIHsKKyAgICBpZiAoIWNvbnRleHQpCiAgICAgICAgIGNvbnRleHQgPSBb
W1tKU0NvbnRleHQgYWxsb2NdIGluaXRXaXRoR2xvYmFsQ29udGV4dFJlZjpnbG9iYWxDb250ZXh0
XSBhdXRvcmVsZWFzZV07Ci0gICAgICAgIFt2aXJ0dWFsTWFjaGluZSBhZGRDb250ZXh0OmNvbnRl
eHQgZm9yR2xvYmFsQ29udGV4dFJlZjpnbG9iYWxDb250ZXh0XTsKLSAgICB9CiAgICAgcmV0dXJu
IGNvbnRleHQ7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNNYW5hZ2Vk
VmFsdWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTTWFuYWdl
ZFZhbHVlLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTTWFu
YWdlZFZhbHVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1MSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpZm5kZWYgSlNNYW5hZ2VkVmFsdWVfaAorI2RlZmluZSBKU01hbmFnZWRWYWx1ZV9oCisKKyNp
bXBvcnQgPEphdmFTY3JpcHRDb3JlL0pTQmFzZS5oPgorCisjaWYgSlNDX09CSkNfQVBJX0VOQUJM
RUQKKworQGNsYXNzIEpTVmFsdWU7CitAY2xhc3MgSlNDb250ZXh0OworCitOU19DTEFTU19BVkFJ
TEFCTEUoMTBfOSwgTkEpCitAaW50ZXJmYWNlIEpTTWFuYWdlZFZhbHVlIDogTlNPYmplY3QKKwor
KyAoSlNNYW5hZ2VkVmFsdWUgKil3ZWFrVmFsdWVXaXRoVmFsdWU6KEpTVmFsdWUgKil2YWx1ZTsK
KysgKEpTTWFuYWdlZFZhbHVlICopbWFuYWdlZFZhbHVlV2l0aFZhbHVlOihKU1ZhbHVlICopdmFs
dWUgb3duZXI6KGlkKW93bmVyOworCistIChpZClpbml0V2l0aFZhbHVlOihKU1ZhbHVlICopdmFs
dWU7CistIChpZClpbml0V2l0aFZhbHVlOihKU1ZhbHVlICopdmFsdWUgb3duZXI6KGlkKW93bmVy
OworCistIChKU1ZhbHVlICopdmFsdWU7CisKK0BlbmQKKworI2VuZGlmIC8vIEpTQ19PQkpDX0FQ
SV9FTkFCTEVECisKKyNlbmRpZiAvLyBKU01hbmFnZWRWYWx1ZV9oCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0pTTWFuYWdlZFZhbHVlLm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvSlNNYW5hZ2VkVmFsdWUubW0JKHJldmlzaW9uIDApCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTTWFuYWdlZFZhbHVlLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsMTMzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBv
cnQgIkpTTWFuYWdlZFZhbHVlLmgiCisKKyNpZiBKU0NfT0JKQ19BUElfRU5BQkxFRAorCisjaW1w
b3J0ICJBUElDYXN0LmgiCisjaW1wb3J0ICJIZWFwLmgiCisjaW1wb3J0ICJKU0NvbnRleHRJbnRl
cm5hbC5oIgorI2ltcG9ydCAiSlNWYWx1ZUludGVybmFsLmgiCisjaW1wb3J0ICJXZWFrLmgiCisj
aW1wb3J0ICJXZWFrSGFuZGxlT3duZXIuaCIKKyNpbXBvcnQgIk9iamNSdW50aW1lRXh0cmFzLmgi
CisKK2NsYXNzIEpTTWFuYWdlZFZhbHVlSGFuZGxlT3duZXIgOiBwdWJsaWMgSlNDOjpXZWFrSGFu
ZGxlT3duZXIgeworcHVibGljOgorICAgIHZpcnR1YWwgYm9vbCBpc1JlYWNoYWJsZUZyb21PcGFx
dWVSb290cyhKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+LCB2b2lkKiBjb250ZXh0LCBKU0M6OlNs
b3RWaXNpdG9yJik7Cit9OworCitzdGF0aWMgSlNNYW5hZ2VkVmFsdWVIYW5kbGVPd25lciogbWFu
YWdlZFZhbHVlSGFuZGxlT3duZXIoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoSlNNYW5h
Z2VkVmFsdWVIYW5kbGVPd25lciwganNNYW5hZ2VkVmFsdWVIYW5kbGVPd25lciwgKCkpOworICAg
IHJldHVybiAmanNNYW5hZ2VkVmFsdWVIYW5kbGVPd25lcjsKK30KKworQGludGVyZmFjZSBKU01h
bmFnZWRWYWx1ZSAoSW50ZXJuYWwpCistIChpZCl3ZWFrT3duZXI7CitAZW5kCisKK0BpbXBsZW1l
bnRhdGlvbiBKU01hbmFnZWRWYWx1ZSB7CisgICAgSlNDOjpXZWFrPEpTQzo6SlNPYmplY3Q+IG1f
dmFsdWU7CisgICAgaWQgbV93ZWFrT3duZXI7Cit9CisKKysgKEpTTWFuYWdlZFZhbHVlICopd2Vh
a1ZhbHVlV2l0aFZhbHVlOihKU1ZhbHVlICopdmFsdWUKK3sKKyAgICByZXR1cm4gW1tbc2VsZiBh
bGxvY10gaW5pdFdpdGhWYWx1ZTp2YWx1ZV0gYXV0b3JlbGVhc2VdOworfQorCisrIChKU01hbmFn
ZWRWYWx1ZSAqKW1hbmFnZWRWYWx1ZVdpdGhWYWx1ZTooSlNWYWx1ZSAqKXZhbHVlIG93bmVyOihp
ZClvd25lcgoreworICAgIHJldHVybiBbW1tzZWxmIGFsbG9jXSBpbml0V2l0aFZhbHVlOnZhbHVl
IG93bmVyOm93bmVyXSBhdXRvcmVsZWFzZV07Cit9CisKKy0gKGlkKWluaXQKK3sKKyAgICByZXR1
cm4gW3NlbGYgaW5pdFdpdGhWYWx1ZTpbSlNWYWx1ZSB2YWx1ZVdpdGhOdWxsSW5Db250ZXh0OltK
U0NvbnRleHQgY3VycmVudENvbnRleHRdXSBvd25lcjpuaWxdOworfQorCistIChpZClpbml0V2l0
aFZhbHVlOihKU1ZhbHVlICopdmFsdWUKK3sKKyAgICByZXR1cm4gW3NlbGYgaW5pdFdpdGhWYWx1
ZTp2YWx1ZSBvd25lcjpuaWxdOworfQorCistIChpZClpbml0V2l0aFZhbHVlOihKU1ZhbHVlICop
dmFsdWUgb3duZXI6KGlkKW93bmVyCit7CisgICAgc2VsZiA9IFtzdXBlciBpbml0XTsKKyAgICBp
ZiAoIXNlbGYpCisgICAgICAgIHJldHVybiBuaWw7CisgICAgCisgICAgaWYgKCFKU1ZhbHVlSXNP
YmplY3QoW3ZhbHVlLmNvbnRleHQgZ2xvYmFsQ29udGV4dFJlZl0sIFt2YWx1ZSBKU1ZhbHVlUmVm
XSkpCisgICAgICAgIHJldHVybiBbc2VsZiBpbml0V2l0aFZhbHVlOltKU1ZhbHVlIHZhbHVlV2l0
aE51bGxJbkNvbnRleHQ6dmFsdWUuY29udGV4dF1dOworCisgICAgSlNDOjpKU09iamVjdCogb2Jq
ZWN0ID0gdG9KUyhKU1ZhbHVlVG9PYmplY3QoW3ZhbHVlLmNvbnRleHQgZ2xvYmFsQ29udGV4dFJl
Zl0sIFt2YWx1ZSBKU1ZhbHVlUmVmXSwgMCkpOworICAgIEpTQzo6V2VhazxKU0M6OkpTT2JqZWN0
PiB3ZWFrKG9iamVjdCwgbWFuYWdlZFZhbHVlSGFuZGxlT3duZXIoKSwgc2VsZik7CisgICAgbV92
YWx1ZS5zd2FwKHdlYWspOworCisgICAgb2JqY19pbml0V2VhaygmbV93ZWFrT3duZXIsIG93bmVy
KTsKKworICAgIHJldHVybiBzZWxmOworfQorCistICh2b2lkKWRlYWxsb2MKK3sKKyAgICBvYmpj
X2Rlc3Ryb3lXZWFrKCZtX3dlYWtPd25lcik7CisgICAgW3N1cGVyIGRlYWxsb2NdOworfQorCist
IChKU1ZhbHVlICopdmFsdWUKK3sKKyAgICBpZiAoIW1fdmFsdWUpCisgICAgICAgIHJldHVybiBu
aWw7CisgICAgSlNDOjpKU09iamVjdCogb2JqZWN0ID0gbV92YWx1ZS5nZXQoKTsKKyAgICBKU0Nv
bnRleHQgKmNvbnRleHQgPSBbSlNDb250ZXh0IGNvbnRleHRXaXRoR2xvYmFsQ29udGV4dFJlZjp0
b0dsb2JhbFJlZihvYmplY3QtPnN0cnVjdHVyZSgpLT5nbG9iYWxPYmplY3QoKS0+Z2xvYmFsRXhl
YygpKV07CisgICAgcmV0dXJuIFtKU1ZhbHVlIHZhbHVlV2l0aFZhbHVlOnRvUmVmKG9iamVjdCkg
aW5Db250ZXh0OmNvbnRleHRdOworfQorCitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBKU01hbmFn
ZWRWYWx1ZSAoSW50ZXJuYWwpCisKKy0gKGlkKXdlYWtPd25lcgoreworICAgIHJldHVybiBvYmpj
X2xvYWRXZWFrKCZtX3dlYWtPd25lcik7Cit9CisKK0BlbmQKKworYm9vbCBKU01hbmFnZWRWYWx1
ZUhhbmRsZU93bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6OkhhbmRsZTxKU0M6
OlVua25vd24+LCB2b2lkKiBjb250ZXh0LCBKU0M6OlNsb3RWaXNpdG9yJiB2aXNpdG9yKQorewor
ICAgIEpTTWFuYWdlZFZhbHVlICptYW5hZ2VkVmFsdWUgPSBzdGF0aWNfY2FzdDxKU01hbmFnZWRW
YWx1ZSAqPihjb250ZXh0KTsKKyAgICBpZCB3ZWFrT3duZXIgPSBbbWFuYWdlZFZhbHVlIHdlYWtP
d25lcl07CisgICAgaWYgKCF3ZWFrT3duZXIpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBy
ZXR1cm4gdmlzaXRvci5jb250YWluc09wYXF1ZVJvb3Qod2Vha093bmVyKTsKK30KKworI2VuZGlm
IC8vIEpTQ19PQkpDX0FQSV9FTkFCTEVECkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTT2JqZWN0UmVmLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTT2JqZWN0UmVmLmNwcAkocmV2aXNpb24gMTQ0NzgwKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9KU09iamVjdFJlZi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDcgQEAK
ICNpbmNsdWRlICJGdW5jdGlvbkNvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiSWRlbnRpZmllci5o
IgogI2luY2x1ZGUgIkluaXRpYWxpemVUaHJlYWRpbmcuaCIKKyNpbmNsdWRlICJKU0FQSVdyYXBw
ZXJPYmplY3QuaCIKICNpbmNsdWRlICJKU0FycmF5LmgiCiAjaW5jbHVkZSAiSlNDYWxsYmFja0Nv
bnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiSlNDYWxsYmFja0Z1bmN0aW9uLmgiCkBAIC0zNDUsNiAr
MzQ2LDggQEAgdm9pZCogSlNPYmplY3RHZXRQcml2YXRlKEpTT2JqZWN0UmVmIG9iagogICAgICAg
ICByZXR1cm4ganNDYXN0PEpTQ2FsbGJhY2tPYmplY3Q8SlNHbG9iYWxPYmplY3Q+Kj4oanNPYmpl
Y3QpLT5nZXRQcml2YXRlKCk7CiAgICAgaWYgKGpzT2JqZWN0LT5pbmhlcml0cygmSlNDYWxsYmFj
a09iamVjdDxKU0Rlc3RydWN0aWJsZU9iamVjdD46OnNfaW5mbykpCiAgICAgICAgIHJldHVybiBq
c0Nhc3Q8SlNDYWxsYmFja09iamVjdDxKU0Rlc3RydWN0aWJsZU9iamVjdD4qPihqc09iamVjdCkt
PmdldFByaXZhdGUoKTsKKyAgICBpZiAoanNPYmplY3QtPmluaGVyaXRzKCZKU0NhbGxiYWNrT2Jq
ZWN0PEpTQVBJV3JhcHBlck9iamVjdD46OnNfaW5mbykpCisgICAgICAgIHJldHVybiBqc0Nhc3Q8
SlNDYWxsYmFja09iamVjdDxKU0FQSVdyYXBwZXJPYmplY3Q+Kj4oanNPYmplY3QpLT5nZXRQcml2
YXRlKCk7CiAgICAgCiAgICAgcmV0dXJuIDA7CiB9CkBAIC0zNjEsNiArMzY0LDEwIEBAIGJvb2wg
SlNPYmplY3RTZXRQcml2YXRlKEpTT2JqZWN0UmVmIG9iamUKICAgICAgICAganNDYXN0PEpTQ2Fs
bGJhY2tPYmplY3Q8SlNEZXN0cnVjdGlibGVPYmplY3Q+Kj4oanNPYmplY3QpLT5zZXRQcml2YXRl
KGRhdGEpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CisgICAgaWYgKGpzT2JqZWN0LT5p
bmhlcml0cygmSlNDYWxsYmFja09iamVjdDxKU0FQSVdyYXBwZXJPYmplY3Q+OjpzX2luZm8pKSB7
CisgICAgICAgIGpzQ2FzdDxKU0NhbGxiYWNrT2JqZWN0PEpTQVBJV3JhcHBlck9iamVjdD4qPihq
c09iamVjdCktPnNldFByaXZhdGUoZGF0YSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0K
ICAgICAgICAgCiAgICAgcmV0dXJuIGZhbHNlOwogfQpAQCAtMzc2LDYgKzM4Myw4IEBAIEpTVmFs
dWVSZWYgSlNPYmplY3RHZXRQcml2YXRlUHJvcGVydHkoSlMKICAgICAgICAgcmVzdWx0ID0ganND
YXN0PEpTQ2FsbGJhY2tPYmplY3Q8SlNHbG9iYWxPYmplY3Q+Kj4oanNPYmplY3QpLT5nZXRQcml2
YXRlUHJvcGVydHkobmFtZSk7CiAgICAgZWxzZSBpZiAoanNPYmplY3QtPmluaGVyaXRzKCZKU0Nh
bGxiYWNrT2JqZWN0PEpTRGVzdHJ1Y3RpYmxlT2JqZWN0Pjo6c19pbmZvKSkKICAgICAgICAgcmVz
dWx0ID0ganNDYXN0PEpTQ2FsbGJhY2tPYmplY3Q8SlNEZXN0cnVjdGlibGVPYmplY3Q+Kj4oanNP
YmplY3QpLT5nZXRQcml2YXRlUHJvcGVydHkobmFtZSk7CisgICAgZWxzZSBpZiAoanNPYmplY3Qt
PmluaGVyaXRzKCZKU0NhbGxiYWNrT2JqZWN0PEpTQVBJV3JhcHBlck9iamVjdD46OnNfaW5mbykp
CisgICAgICAgIHJlc3VsdCA9IGpzQ2FzdDxKU0NhbGxiYWNrT2JqZWN0PEpTQVBJV3JhcHBlck9i
amVjdD4qPihqc09iamVjdCktPmdldFByaXZhdGVQcm9wZXJ0eShuYW1lKTsKICAgICByZXR1cm4g
dG9SZWYoZXhlYywgcmVzdWx0KTsKIH0KIApAQCAtMzk0LDYgKzQwMywxMCBAQCBib29sIEpTT2Jq
ZWN0U2V0UHJpdmF0ZVByb3BlcnR5KEpTQ29udGV4CiAgICAgICAgIGpzQ2FzdDxKU0NhbGxiYWNr
T2JqZWN0PEpTRGVzdHJ1Y3RpYmxlT2JqZWN0Pio+KGpzT2JqZWN0KS0+c2V0UHJpdmF0ZVByb3Bl
cnR5KGV4ZWMtPmdsb2JhbERhdGEoKSwgbmFtZSwganNWYWx1ZSk7CiAgICAgICAgIHJldHVybiB0
cnVlOwogICAgIH0KKyAgICBpZiAoanNPYmplY3QtPmluaGVyaXRzKCZKU0NhbGxiYWNrT2JqZWN0
PEpTQVBJV3JhcHBlck9iamVjdD46OnNfaW5mbykpIHsKKyAgICAgICAganNDYXN0PEpTQ2FsbGJh
Y2tPYmplY3Q8SlNBUElXcmFwcGVyT2JqZWN0Pio+KGpzT2JqZWN0KS0+c2V0UHJpdmF0ZVByb3Bl
cnR5KGV4ZWMtPmdsb2JhbERhdGEoKSwgbmFtZSwganNWYWx1ZSk7CisgICAgICAgIHJldHVybiB0
cnVlOworICAgIH0KICAgICByZXR1cm4gZmFsc2U7CiB9CiAKQEAgLTQxMSw2ICs0MjQsMTAgQEAg
Ym9vbCBKU09iamVjdERlbGV0ZVByaXZhdGVQcm9wZXJ0eShKU0NvbgogICAgICAgICBqc0Nhc3Q8
SlNDYWxsYmFja09iamVjdDxKU0Rlc3RydWN0aWJsZU9iamVjdD4qPihqc09iamVjdCktPmRlbGV0
ZVByaXZhdGVQcm9wZXJ0eShuYW1lKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQorICAg
IGlmIChqc09iamVjdC0+aW5oZXJpdHMoJkpTQ2FsbGJhY2tPYmplY3Q8SlNBUElXcmFwcGVyT2Jq
ZWN0Pjo6c19pbmZvKSkgeworICAgICAgICBqc0Nhc3Q8SlNDYWxsYmFja09iamVjdDxKU0FQSVdy
YXBwZXJPYmplY3Q+Kj4oanNPYmplY3QpLT5kZWxldGVQcml2YXRlUHJvcGVydHkobmFtZSk7Cisg
ICAgICAgIHJldHVybiB0cnVlOworICAgIH0KICAgICByZXR1cm4gZmFsc2U7CiB9CiAKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZS5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmFsdWUubW0JKHJldmlzaW9uIDE0NDc4MCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZS5tbQkod29ya2luZyBjb3B5KQpAQCAtODky
LDYgKzg5MiwxMyBAQCBzdGF0aWMgT2JqY0NvbnRhaW5lckNvbnZlcnRvcjo6VGFzayBvYmplCiAg
ICAgICAgICAgICBKU09iamVjdFJlZiByZXN1bHQgPSBKU09iamVjdE1ha2VEYXRlKGNvbnRleHRS
ZWYsIDEsICZhcmd1bWVudCwgMCk7CiAgICAgICAgICAgICByZXR1cm4gKE9iamNDb250YWluZXJD
b252ZXJ0b3I6OlRhc2speyBvYmplY3QsIHJlc3VsdCwgQ29udGFpbmVyTm9uZSB9OwogICAgICAg
ICB9CisKKyAgICAgICAgaWYgKFtvYmplY3QgaXNLaW5kT2ZDbGFzczpbSlNNYW5hZ2VkVmFsdWUg
Y2xhc3NdXSkgeworICAgICAgICAgICAgSlNWYWx1ZSAqdmFsdWUgPSBbc3RhdGljX2Nhc3Q8SlNN
YW5hZ2VkVmFsdWUgKj4ob2JqZWN0KSB2YWx1ZV07CisgICAgICAgICAgICBpZiAoIXZhbHVlKQor
ICAgICAgICAgICAgICAgIHJldHVybiAoT2JqY0NvbnRhaW5lckNvbnZlcnRvcjo6VGFzaykgeyBv
YmplY3QsIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHRSZWYpLCBDb250YWluZXJOb25lIH07
CisgICAgICAgICAgICByZXR1cm4gKE9iamNDb250YWluZXJDb252ZXJ0b3I6OlRhc2speyBvYmpl
Y3QsIHZhbHVlLT5tX3ZhbHVlLCBDb250YWluZXJOb25lIH07CisgICAgICAgIH0KICAgICB9CiAK
ICAgICByZXR1cm4gKE9iamNDb250YWluZXJDb252ZXJ0b3I6OlRhc2speyBvYmplY3QsIHZhbHVl
SW50ZXJuYWxWYWx1ZShbY29udGV4dCB3cmFwcGVyRm9yT2JqQ09iamVjdDpvYmplY3RdKSwgQ29u
dGFpbmVyTm9uZSB9OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlUmVm
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmFsdWVSZWYu
Y3BwCShyZXZpc2lvbiAxNDQ3ODApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmFs
dWVSZWYuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJB
UElDYXN0LmgiCiAjaW5jbHVkZSAiQVBJU2hpbXMuaCIKKyNpbmNsdWRlICJKU0FQSVdyYXBwZXJP
YmplY3QuaCIKICNpbmNsdWRlICJKU0NhbGxiYWNrT2JqZWN0LmgiCiAKICNpbmNsdWRlIDxydW50
aW1lL0pTQ0pTVmFsdWUuaD4KQEAgLTE0OCw2ICsxNDksOCBAQCBib29sIEpTVmFsdWVJc09iamVj
dE9mQ2xhc3MoSlNDb250ZXh0UmVmCiAgICAgICAgICAgICByZXR1cm4ganNDYXN0PEpTQ2FsbGJh
Y2tPYmplY3Q8SlNHbG9iYWxPYmplY3Q+Kj4obyktPmluaGVyaXRzKGpzQ2xhc3MpOwogICAgICAg
ICBpZiAoby0+aW5oZXJpdHMoJkpTQ2FsbGJhY2tPYmplY3Q8SlNEZXN0cnVjdGlibGVPYmplY3Q+
OjpzX2luZm8pKQogICAgICAgICAgICAgcmV0dXJuIGpzQ2FzdDxKU0NhbGxiYWNrT2JqZWN0PEpT
RGVzdHJ1Y3RpYmxlT2JqZWN0Pio+KG8pLT5pbmhlcml0cyhqc0NsYXNzKTsKKyAgICAgICAgaWYg
KG8tPmluaGVyaXRzKCZKU0NhbGxiYWNrT2JqZWN0PEpTQVBJV3JhcHBlck9iamVjdD46OnNfaW5m
bykpCisgICAgICAgICAgICByZXR1cm4ganNDYXN0PEpTQ2FsbGJhY2tPYmplY3Q8SlNBUElXcmFw
cGVyT2JqZWN0Pio+KG8pLT5pbmhlcml0cyhqc0NsYXNzKTsKICAgICB9CiAgICAgcmV0dXJuIGZh
bHNlOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZpcnR1YWxNYWNoaW5l
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWaXJ0dWFsTWFj
aGluZS5tbQkocmV2aXNpb24gMTQ0NzgwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9K
U1ZpcnR1YWxNYWNoaW5lLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMDEsNyArMTAxLDkgQEAgLSAo
aWQpaW5pdFdpdGhDb250ZXh0R3JvdXBSZWY6KEpTQ29udGV4dAogICAgIE5TUG9pbnRlckZ1bmN0
aW9uc09wdGlvbnMga2V5T3B0aW9ucyA9IE5TUG9pbnRlckZ1bmN0aW9uc09wYXF1ZU1lbW9yeSB8
IE5TUG9pbnRlckZ1bmN0aW9uc09wYXF1ZVBlcnNvbmFsaXR5OwogICAgIE5TUG9pbnRlckZ1bmN0
aW9uc09wdGlvbnMgdmFsdWVPcHRpb25zID0gTlNQb2ludGVyRnVuY3Rpb25zV2Vha01lbW9yeSB8
IE5TUG9pbnRlckZ1bmN0aW9uc09iamVjdFBlcnNvbmFsaXR5OwogICAgIG1fY29udGV4dENhY2hl
ID0gW1tOU01hcFRhYmxlIGFsbG9jXSBpbml0V2l0aEtleU9wdGlvbnM6a2V5T3B0aW9ucyB2YWx1
ZU9wdGlvbnM6dmFsdWVPcHRpb25zIGNhcGFjaXR5OjBdOwotICAgIAorICAgCisgICAgW0pTVk1X
cmFwcGVyQ2FjaGUgYWRkV3JhcHBlcjpzZWxmIGZvckpTQ29udGV4dEdyb3VwUmVmOmdyb3VwXTsK
KyAKICAgICByZXR1cm4gc2VsZjsKIH0KIApAQCAtMTIzLDEwICsxMjUsOCBAQCBKU0NvbnRleHRH
cm91cFJlZiBnZXRHcm91cEZyb21WaXJ0dWFsTWFjCiArIChKU1ZpcnR1YWxNYWNoaW5lICopdmly
dHVhbE1hY2hpbmVXaXRoQ29udGV4dEdyb3VwUmVmOihKU0NvbnRleHRHcm91cFJlZilncm91cAog
ewogICAgIEpTVmlydHVhbE1hY2hpbmUgKnZpcnR1YWxNYWNoaW5lID0gW0pTVk1XcmFwcGVyQ2Fj
aGUgd3JhcHBlckZvckpTQ29udGV4dEdyb3VwUmVmOmdyb3VwXTsKLSAgICBpZiAoIXZpcnR1YWxN
YWNoaW5lKSB7CisgICAgaWYgKCF2aXJ0dWFsTWFjaGluZSkKICAgICAgICAgdmlydHVhbE1hY2hp
bmUgPSBbW1tKU1ZpcnR1YWxNYWNoaW5lIGFsbG9jXSBpbml0V2l0aENvbnRleHRHcm91cFJlZjpn
cm91cF0gYXV0b3JlbGVhc2VdOwotICAgICAgICBbSlNWTVdyYXBwZXJDYWNoZSBhZGRXcmFwcGVy
OnZpcnR1YWxNYWNoaW5lIGZvckpTQ29udGV4dEdyb3VwUmVmOmdyb3VwXTsKLSAgICB9CiAgICAg
cmV0dXJuIHZpcnR1YWxNYWNoaW5lOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL0pTV3JhcHBlck1hcC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL0pTV3JhcHBlck1hcC5tbQkocmV2aXNpb24gMTQ0NzgwKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS9KU1dyYXBwZXJNYXAubW0JKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDkg
QEAKICNpZiBKU0NfT0JKQ19BUElfRU5BQkxFRAogCiAjaW1wb3J0ICJBUElDYXN0LmgiCisjaW1w
b3J0ICJBUElTaGltcy5oIgorI2ltcG9ydCAiSlNBUElXcmFwcGVyT2JqZWN0LmgiCisjaW1wb3J0
ICJKU0NhbGxiYWNrT2JqZWN0LmgiCiAjaW1wb3J0ICJKU0NvbnRleHRJbnRlcm5hbC5oIgogI2lt
cG9ydCAiSlNXcmFwcGVyTWFwLmgiCiAjaW1wb3J0ICJPYmpDQ2FsbGJhY2tGdW5jdGlvbi5oIgpA
QCAtNDgsNyArNTEsOCBAQCAtIChKU09iakNDbGFzc0luZm8qKWNsYXNzSW5mb0ZvckNsYXNzOihD
CiAKIHN0YXRpYyB2b2lkIHdyYXBwZXJGaW5hbGl6ZShKU09iamVjdFJlZiBvYmplY3QpCiB7Ci0g
ICAgWyhpZClKU09iamVjdEdldFByaXZhdGUob2JqZWN0KSByZWxlYXNlXTsKKyAgICBKU0M6OkpT
QVBJV3JhcHBlck9iamVjdCogd3JhcHBlck9iamVjdCA9IEpTQzo6anNDYXN0PEpTQzo6SlNBUElX
cmFwcGVyT2JqZWN0Kj4odG9KUyhvYmplY3QpKTsKKyAgICBbKGlkKXdyYXBwZXJPYmplY3QtPndy
YXBwZWRPYmplY3QoKSByZWxlYXNlXTsKIH0KIAogLy8gQWxsIHdyYXBwZXIgb2JqZWN0cyBhbmQg
Y29uc3RydWN0b3Igb2JqZWN0cyBkZXJpdmUgZnJvbSB0aGlzIHR5cGUsIHNvIHdlIGNhbiBkZXRl
Y3QgJiB1bndyYXAgT2JqZWN0aXZlLUMgaW5zdGFuY2VzL0NsYXNzZXMuCkBAIC0xMTQsMTcgKzEx
OCwzMSBAQCBkb25lOgogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK3N0YXRpYyBKU09iamVjdFJl
ZiBtYWtlV3JhcHBlcihKU0NvbnRleHRSZWYgY3R4LCBKU0NsYXNzUmVmIGpzQ2xhc3MsIGlkIHdy
YXBwZWRPYmplY3QpCit7CisgICAgSlNDOjpFeGVjU3RhdGUqIGV4ZWMgPSB0b0pTKGN0eCk7Cisg
ICAgSlNDOjpBUElFbnRyeVNoaW0gZW50cnlTaGltKGV4ZWMpOworCisgICAgQVNTRVJUKGpzQ2xh
c3MpOworICAgIEpTQzo6SlNDYWxsYmFja09iamVjdDxKU0M6OkpTQVBJV3JhcHBlck9iamVjdD4q
IG9iamVjdCA9IEpTQzo6SlNDYWxsYmFja09iamVjdDxKU0M6OkpTQVBJV3JhcHBlck9iamVjdD46
OmNyZWF0ZShleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIGV4ZWMtPmxleGljYWxH
bG9iYWxPYmplY3QoKS0+b2JqY1dyYXBwZXJPYmplY3RTdHJ1Y3R1cmUoKSwganNDbGFzcywgMCk7
CisgICAgb2JqZWN0LT5zZXRXcmFwcGVkT2JqZWN0KHdyYXBwZWRPYmplY3QpOworICAgIGlmIChK
U0M6OkpTT2JqZWN0KiBwcm90b3R5cGUgPSBqc0NsYXNzLT5wcm90b3R5cGUoZXhlYykpCisgICAg
ICAgIG9iamVjdC0+c2V0UHJvdG90eXBlKGV4ZWMtPmdsb2JhbERhdGEoKSwgcHJvdG90eXBlKTsK
KworICAgIHJldHVybiB0b1JlZihvYmplY3QpOworfQorCiAvLyBNYWtlIGFuIG9iamVjdCB0aGF0
IGlzIGluIGFsbCB3YXlzIGEgY29tcGxldGVseSB2YW5pbGxhIEphdmFTY3JpcHQgb2JqZWN0LAog
Ly8gb3RoZXIgdGhhbiB0aGF0IGl0IGhhcyBhIG5hdGl2ZSBicmFuZCBzZXQgdGhhdCB3aWxsIGJl
IGRpc3BsYXllZCBieSB0aGUgZGVmYXVsdAogLy8gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZyBj
b252ZXJzaW9uLgotc3RhdGljIEpTVmFsdWUgKmNyZWF0ZU9iamVjdFdpdGhDdXN0b21CcmFuZChK
U0NvbnRleHQgKmNvbnRleHQsIE5TU3RyaW5nICpicmFuZCwgSlNDbGFzc1JlZiBwYXJlbnRDbGFz
cyA9IDAsIHZvaWQqIHByaXZhdGVEYXRhID0gMCkKK3N0YXRpYyBKU1ZhbHVlICpjcmVhdGVPYmpl
Y3RXaXRoQ3VzdG9tQnJhbmQoSlNDb250ZXh0ICpjb250ZXh0LCBOU1N0cmluZyAqYnJhbmQsIEpT
Q2xhc3NSZWYgcGFyZW50Q2xhc3MgPSAwLCBDbGFzcyBjbHMgPSAwKQogewogICAgIEpTQ2xhc3NE
ZWZpbml0aW9uIGRlZmluaXRpb247CiAgICAgZGVmaW5pdGlvbiA9IGtKU0NsYXNzRGVmaW5pdGlv
bkVtcHR5OwogICAgIGRlZmluaXRpb24uY2xhc3NOYW1lID0gW2JyYW5kIFVURjhTdHJpbmddOwog
ICAgIGRlZmluaXRpb24ucGFyZW50Q2xhc3MgPSBwYXJlbnRDbGFzczsKICAgICBKU0NsYXNzUmVm
IGNsYXNzUmVmID0gSlNDbGFzc0NyZWF0ZSgmZGVmaW5pdGlvbik7Ci0gICAgSlNPYmplY3RSZWYg
cmVzdWx0ID0gSlNPYmplY3RNYWtlKFtjb250ZXh0IGdsb2JhbENvbnRleHRSZWZdLCBjbGFzc1Jl
ZiwgcHJpdmF0ZURhdGEpOworICAgIEpTT2JqZWN0UmVmIHJlc3VsdCA9IG1ha2VXcmFwcGVyKFtj
b250ZXh0IGdsb2JhbENvbnRleHRSZWZdLCBjbGFzc1JlZiwgY2xzKTsKICAgICBKU0NsYXNzUmVs
ZWFzZShjbGFzc1JlZik7CiAgICAgcmV0dXJuIFtbSlNWYWx1ZSBhbGxvY10gaW5pdFdpdGhWYWx1
ZTpyZXN1bHQgaW5Db250ZXh0OmNvbnRleHRdOwogfQpAQCAtNDA3LDcgKzQyNSw3IEBAIC0gKEpT
VmFsdWUgKil3cmFwcGVyRm9yT2JqZWN0OihpZClvYmplY3QKICAgICAgICAgW3NlbGYgcmVhbGxv
Y2F0ZUNvbnN0cnVjdG9yQW5kT3JQcm90b3R5cGVdOwogICAgIEFTU0VSVCghIW1fcHJvdG90eXBl
KTsKIAotICAgIEpTT2JqZWN0UmVmIHdyYXBwZXIgPSBKU09iamVjdE1ha2UoW21fY29udGV4dCBn
bG9iYWxDb250ZXh0UmVmXSwgbV9jbGFzc1JlZiwgW29iamVjdCByZXRhaW5dKTsKKyAgICBKU09i
amVjdFJlZiB3cmFwcGVyID0gbWFrZVdyYXBwZXIoW21fY29udGV4dCBnbG9iYWxDb250ZXh0UmVm
XSwgbV9jbGFzc1JlZiwgW29iamVjdCByZXRhaW5dKTsKICAgICBKU09iamVjdFNldFByb3RvdHlw
ZShbbV9jb250ZXh0IGdsb2JhbENvbnRleHRSZWZdLCB3cmFwcGVyLCB0b1JlZihtX3Byb3RvdHlw
ZS5nZXQoKSkpOwogICAgIHJldHVybiBbSlNWYWx1ZSB2YWx1ZVdpdGhWYWx1ZTp3cmFwcGVyIGlu
Q29udGV4dDptX2NvbnRleHRdOwogfQpAQCAtNTExLDcgKzUyOSw3IEBAIGlkIHRyeVVud3JhcE9i
amNPYmplY3QoSlNHbG9iYWxDb250ZXh0UmUKICAgICBKU09iamVjdFJlZiBvYmplY3QgPSBKU1Zh
bHVlVG9PYmplY3QoY29udGV4dCwgdmFsdWUsICZleGNlcHRpb24pOwogICAgIEFTU0VSVCghZXhj
ZXB0aW9uKTsKICAgICBpZiAoSlNWYWx1ZUlzT2JqZWN0T2ZDbGFzcyhjb250ZXh0LCBvYmplY3Qs
IHdyYXBwZXJDbGFzcygpKSkKLSAgICAgICAgcmV0dXJuIChpZClKU09iamVjdEdldFByaXZhdGUo
b2JqZWN0KTsKKyAgICAgICAgcmV0dXJuIChpZClKU0M6OmpzQ2FzdDxKU0M6OkpTQVBJV3JhcHBl
ck9iamVjdCo+KHRvSlMob2JqZWN0KSktPndyYXBwZWRPYmplY3QoKTsKICAgICBpZiAoaWQgdGFy
Z2V0ID0gdHJ5VW53cmFwQmxvY2soY29udGV4dCwgb2JqZWN0KSkKICAgICAgICAgcmV0dXJuIHRh
cmdldDsKICAgICByZXR1cm4gbmlsOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9K
YXZhU2NyaXB0Q29yZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
SmF2YVNjcmlwdENvcmUuaAkocmV2aXNpb24gMTQ0NzgwKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9KYXZhU2NyaXB0Q29yZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3IEBA
CiAKICNpbXBvcnQgIkpTQ29udGV4dC5oIgogI2ltcG9ydCAiSlNWYWx1ZS5oIgorI2ltcG9ydCAi
SlNNYW5hZ2VkVmFsdWUuaCIKICNpbXBvcnQgIkpTVmlydHVhbE1hY2hpbmUuaCIKICNpbXBvcnQg
IkpTRXhwb3J0LmgiCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVz
dGFwaS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rl
c3RhcGkubW0JKHJldmlzaW9uIDE0NDc4MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
dGVzdHMvdGVzdGFwaS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjMsNyArMjMsOCBAQAogICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4gCiAgKi8KIAotI2ltcG9ydCAiSmF2YVNjcmlwdENvcmUuaCIKKyNpbXBvcnQgPEph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmg+CisjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9K
U0Jhc2VQcml2YXRlLmg+CiAKIGV4dGVybiAiQyIgYm9vbCBfQmxvY2tfaGFzX3NpZ25hdHVyZShp
ZCk7CiBleHRlcm4gIkMiIGNvbnN0IGNoYXIgKiBfQmxvY2tfc2lnbmF0dXJlKGlkKTsKQEAgLTEw
MSw2ICsxMDIsOCBAQCBib29sIHRlc3RYWVpUZXN0ZWQgPSBmYWxzZTsKIEBwcm90b2NvbCBUZXh0
WFlaIDxKU0V4cG9ydD4KIEBwcm9wZXJ0eSBpbnQgeDsKIEBwcm9wZXJ0eSAocmVhZG9ubHkpIGlu
dCB5OworQHByb3BlcnR5IEpTVmFsdWUgKm9uY2xpY2s7CitAcHJvcGVydHkgSlNWYWx1ZSAqd2Vh
a09uY2xpY2s7CiAtICh2b2lkKXRlc3Q6KE5TU3RyaW5nICopbWVzc2FnZTsKIEBlbmQKIApAQCAt
MTA4LDkgKzExMSwxMyBAQCBAaW50ZXJmYWNlIFRleHRYWVogOiBOU09iamVjdCA8VGV4dFhZWj4K
IEBwcm9wZXJ0eSBpbnQgeDsKIEBwcm9wZXJ0eSBpbnQgeTsKIEBwcm9wZXJ0eSBpbnQgejsKKy0g
KHZvaWQpY2xpY2s7CiBAZW5kCiAKLUBpbXBsZW1lbnRhdGlvbiBUZXh0WFlaCitAaW1wbGVtZW50
YXRpb24gVGV4dFhZWiB7CisgICAgSlNNYW5hZ2VkVmFsdWUgKm1fd2Vha09uY2xpY2tIYW5kbGVy
OworICAgIEpTTWFuYWdlZFZhbHVlICptX29uY2xpY2tIYW5kbGVyOworfQogQHN5bnRoZXNpemUg
eDsKIEBzeW50aGVzaXplIHk7CiBAc3ludGhlc2l6ZSB6OwpAQCAtMTE4LDYgKzEyNSwzMSBAQCAt
ICh2b2lkKXRlc3Q6KE5TU3RyaW5nICopbWVzc2FnZQogewogICAgIHRlc3RYWVpUZXN0ZWQgPSBb
bWVzc2FnZSBpc0VxdWFsOkAidGVzdCJdICYmIHggPT0gMTMgJiB5ID09IDQgJiYgeiA9PSA1Owog
fQorLSAodm9pZClzZXRXZWFrT25jbGljazooSlNWYWx1ZSAqKXZhbHVlCit7CisgICAgbV93ZWFr
T25jbGlja0hhbmRsZXIgPSBbSlNNYW5hZ2VkVmFsdWUgd2Vha1ZhbHVlV2l0aFZhbHVlOnZhbHVl
XTsKK30KKworLSAodm9pZClzZXRPbmNsaWNrOihKU1ZhbHVlICopdmFsdWUKK3sKKyAgICBtX29u
Y2xpY2tIYW5kbGVyID0gW0pTTWFuYWdlZFZhbHVlIG1hbmFnZWRWYWx1ZVdpdGhWYWx1ZTp2YWx1
ZSBvd25lcjpzZWxmXTsKK30KKy0gKEpTVmFsdWUgKil3ZWFrT25jbGljaworeworICAgIHJldHVy
biBbbV93ZWFrT25jbGlja0hhbmRsZXIgdmFsdWVdOworfQorLSAoSlNWYWx1ZSAqKW9uY2xpY2sK
K3sKKyAgICByZXR1cm4gW21fb25jbGlja0hhbmRsZXIgdmFsdWVdOworfQorLSAodm9pZCljbGlj
aworeworICAgIGlmICghbV9vbmNsaWNrSGFuZGxlcikKKyAgICAgICAgcmV0dXJuOworCisgICAg
SlNWYWx1ZSAqZnVuY3Rpb24gPSBbbV9vbmNsaWNrSGFuZGxlciB2YWx1ZV07CisgICAgW2Z1bmN0
aW9uIGNhbGxXaXRoQXJndW1lbnRzOltOU0FycmF5IGFycmF5XV07Cit9CiBAZW5kCiAKIHN0YXRp
YyB2b2lkIGNoZWNrUmVzdWx0KE5TU3RyaW5nICpkZXNjcmlwdGlvbiwgYm9vbCBwYXNzZWQpCkBA
IC00OTMsNiArNTI1LDYwIEBAIHZvaWQgdGVzdE9iamVjdGl2ZUNBUEkoKQogICAgICAgICBKU1Zh
bHVlICpyZXN1bHQgPSBbY29udGV4dDEgZXZhbHVhdGVTY3JpcHQ6QCJwYXNzVmFsdWVCZXR3ZWVu
Q29udGV4dHMiXTsKICAgICAgICAgY2hlY2tSZXN1bHQoQCJbdmFsdWUgaXNFcXVhbFRvT2JqZWN0
OnJlc3VsdF0iLCBbdmFsdWUgaXNFcXVhbFRvT2JqZWN0OnJlc3VsdF0pOwogICAgIH0KKworICAg
IEBhdXRvcmVsZWFzZXBvb2wgeworICAgICAgICBKU0NvbnRleHQgKmNvbnRleHQgPSBbW0pTQ29u
dGV4dCBhbGxvY10gaW5pdF07CisgICAgICAgIFRleHRYWVogKnRlc3RYWVogPSBbW1RleHRYWVog
YWxsb2NdIGluaXRdOworCisgICAgICAgIEBhdXRvcmVsZWFzZXBvb2wgeworICAgICAgICAgICAg
Y29udGV4dFtAInRlc3RYWVoiXSA9IHRlc3RYWVo7CisKKyAgICAgICAgICAgIFtjb250ZXh0IGV2
YWx1YXRlU2NyaXB0OkAiIFwKKyAgICAgICAgICAgICAgICBkaWRDbGljayA9IGZhbHNlOyBcCisg
ICAgICAgICAgICAgICAgdGVzdFhZWi5vbmNsaWNrID0gZnVuY3Rpb24oKSB7IFwKKyAgICAgICAg
ICAgICAgICAgICAgZGlkQ2xpY2sgPSB0cnVlOyBcCisgICAgICAgICAgICAgICAgfTsgXAorICAg
ICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgdGVzdFhZWi53ZWFrT25jbGljayA9IGZ1
bmN0aW9uKCkgeyBcCisgICAgICAgICAgICAgICAgICAgIHJldHVybiAnZm9vJzsgXAorICAgICAg
ICAgICAgICAgIH07IFwKKyAgICAgICAgICAgICJdOworICAgICAgICB9CisKKyAgICAgICAgQGF1
dG9yZWxlYXNlcG9vbCB7CisgICAgICAgICAgICBbdGVzdFhZWiBjbGlja107CisgICAgICAgICAg
ICBKU1ZhbHVlICpyZXN1bHQgPSBbY29udGV4dCBldmFsdWF0ZVNjcmlwdDpAImRpZENsaWNrIl07
CisgICAgICAgICAgICBjaGVja1Jlc3VsdChAIkV2ZW50IGhhbmRsZXIgb25jbGljayIsIFtyZXN1
bHQgdG9Cb29sXSk7CisgICAgICAgIH0KKworICAgICAgICBKU1N5bmNocm9ub3VzR2FyYmFnZUNv
bGxlY3QoW2NvbnRleHQgZ2xvYmFsQ29udGV4dFJlZl0pOworCisgICAgICAgIEBhdXRvcmVsZWFz
ZXBvb2wgeworICAgICAgICAgICAgSlNWYWx1ZSAqcmVzdWx0ID0gW2NvbnRleHQgZXZhbHVhdGVT
Y3JpcHQ6QCJ0ZXN0WFlaLm9uY2xpY2siXTsKKyAgICAgICAgICAgIGNoZWNrUmVzdWx0KEAib25j
bGljayBzdGlsbCBhcm91bmQgYWZ0ZXIgR0MiLCAhKFtyZXN1bHQgaXNOdWxsXSB8fCBbcmVzdWx0
IGlzVW5kZWZpbmVkXSkpOworICAgICAgICB9CisKKworICAgICAgICBAYXV0b3JlbGVhc2Vwb29s
IHsKKyAgICAgICAgICAgIEpTVmFsdWUgKnJlc3VsdCA9IFtjb250ZXh0IGV2YWx1YXRlU2NyaXB0
OkAidGVzdFhZWi53ZWFrT25jbGljayJdOworICAgICAgICAgICAgY2hlY2tSZXN1bHQoQCJ3ZWFr
T25jbGljayBub3QgYXJvdW5kIGFmdGVyIEdDIiwgW3Jlc3VsdCBpc051bGxdIHx8IFtyZXN1bHQg
aXNVbmRlZmluZWRdKTsKKyAgICAgICAgfQorCisgICAgICAgIEBhdXRvcmVsZWFzZXBvb2wgewor
ICAgICAgICAgICAgW2NvbnRleHQgZXZhbHVhdGVTY3JpcHQ6QCIgXAorICAgICAgICAgICAgICAg
IGRpZENsaWNrID0gZmFsc2U7IFwKKyAgICAgICAgICAgICAgICB0ZXN0WFlaID0gbnVsbDsgXAor
ICAgICAgICAgICAgIl07CisgICAgICAgIH0KKworICAgICAgICBKU1N5bmNocm9ub3VzR2FyYmFn
ZUNvbGxlY3QoW2NvbnRleHQgZ2xvYmFsQ29udGV4dFJlZl0pOworCisgICAgICAgIEBhdXRvcmVs
ZWFzZXBvb2wgeworICAgICAgICAgICAgW3Rlc3RYWVogY2xpY2tdOworICAgICAgICAgICAgSlNW
YWx1ZSAqcmVzdWx0ID0gW2NvbnRleHQgZXZhbHVhdGVTY3JpcHQ6QCJkaWRDbGljayJdOworICAg
ICAgICAgICAgY2hlY2tSZXN1bHQoQCJFdmVudCBoYW5kbGVyIG9uY2xpY2sgZG9lc24ndCBmaXJl
IiwgIVtyZXN1bHQgdG9Cb29sXSk7CisgICAgICAgIH0KKyAgICB9CiB9CiAKICNlbHNlCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
LnZjcHJvagkocmV2aXNpb24gMTQ0NzgwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2oJKHdv
cmtpbmcgY29weSkKQEAgLTE0MTQsNiArMTQxNCwxNCBAQAogCQkJCT4KIAkJCTwvRmlsZT4KIAkJ
CTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxBUElcSlNBUElXcmFwcGVyT2JqZWN0LmNw
cCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5c
QVBJXEpTQVBJV3JhcHBlck9iamVjdC5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCiAJ
CQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxBUElcSlNCYXNlLmNwcCIKIAkJCQk+CiAJCQk8L0ZpbGU+
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTQ0NzgwKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTgyOCw2ICs4MjgsOCBAQAogCQlDMjQwMzA1NTE0QjQw
NEU2MDA3OUVCNjQgLyogQ29waWVkU3BhY2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQzI0MDMwNTMxNEI0MDRDOTAwNzlFQjY0IC8qIENvcGllZFNw
YWNlLmNwcCAqLzsgfTsKIAkJQzI0RDMxRTIxNjFDRDY5NTAwMkFBNERCIC8qIEhlYXBTdGF0aXN0
aWNzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMy
NEQzMUUwMTYxQ0Q2OTUwMDJBQTREQiAvKiBIZWFwU3RhdGlzdGljcy5jcHAgKi87IH07CiAJCUMy
NEQzMUUzMTYxQ0Q2OTUwMDJBQTREQiAvKiBIZWFwU3RhdGlzdGljcy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzI0RDMxRTExNjFDRDY5NTAwMkFBNERC
IC8qIEhlYXBTdGF0aXN0aWNzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJQzI1RDcwOUIxNkRFOTlGNDAwRkNBNkJDIC8qIEpTTWFuYWdlZFZhbHVl
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzI1RDcw
OTkxNkRFOTlGNDAwRkNBNkJDIC8qIEpTTWFuYWdlZFZhbHVlLm1tICovOyB9OworCQlDMjVENzA5
QzE2REU5OUY0MDBGQ0E2QkMgLyogSlNNYW5hZ2VkVmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyNUQ3MDlBMTZERTk5RjQwMEZDQTZCQyAvKiBK
U01hbmFnZWRWYWx1ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsg
fTsgfTsKIAkJQzI1RjhCQ0QxNTc1NDRBOTAwMjQ1QjcxIC8qIEluY3JlbWVudGFsU3dlZXBlci5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMjVGOEJD
QjE1NzU0NEE5MDAyNDVCNzEgLyogSW5jcmVtZW50YWxTd2VlcGVyLmNwcCAqLzsgfTsKIAkJQzI1
RjhCQ0UxNTc1NDRBOTAwMjQ1QjcxIC8qIEluY3JlbWVudGFsU3dlZXBlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzI1RjhCQ0MxNTc1NDRBOTAwMjQ1
QjcxIC8qIEluY3JlbWVudGFsU3dlZXBlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCUMyQTdGNjg4MTYwNDMyRDQwMEY3NkI5OCAvKiBKU0Rlc3Ry
dWN0aWJsZU9iamVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQzJBN0Y2ODcxNjA0MzJENDAwRjc2Qjk4IC8qIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0Lmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTgzNiw2
ICs4MzgsOCBAQAogCQlDMkM4RDAyRDE0QTNDNkUwMDA1NzhFNjUgLyogQ29waWVkU3BhY2VJbmxp
bmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMkM4
RDAyQjE0QTNDNkIyMDA1NzhFNjUgLyogQ29waWVkU3BhY2VJbmxpbmVzLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQzJDOEQwMzAxNEEzQ0VGQzAw
NTc4RTY1IC8qIENvcGllZEJsb2NrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDMkM4RDAyRTE0QTNDRUZDMDA1NzhFNjUgLyogQ29waWVkQmxvY2suaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDMkM4RDAz
MTE0QTNDRUZDMDA1NzhFNjUgLyogSGVhcEJsb2NrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMkM4RDAyRjE0QTNDRUZDMDA1NzhFNjUgLyogSGVhcEJs
b2NrLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJ
QzJDRjM5QzExNkUxNUE4MTAwREQ2OUJFIC8qIEpTQVBJV3JhcHBlck9iamVjdC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMkNGMzlCRjE2RTE1QTgx
MDBERDY5QkUgLyogSlNBUElXcmFwcGVyT2JqZWN0LmNwcCAqLzsgfTsKKwkJQzJDRjM5QzIxNkUx
NUE4MTAwREQ2OUJFIC8qIEpTQVBJV3JhcHBlck9iamVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzJDRjM5QzAxNkUxNUE4MTAwREQ2OUJFIC8qIEpT
QVBJV3JhcHBlck9iamVjdC5oICovOyB9OwogCQlDMkQ1OEMzNDE1OTEyRkVFMDAyMUE4NDQgLyog
R0NBY3Rpdml0eUNhbGxiYWNrLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEMyRDU4QzMzMTU5MTJGRUUwMDIxQTg0NCAvKiBHQ0FjdGl2aXR5Q2FsbGJh
Y2suY3BwICovOyB9OwogCQlDMkU1MjZCRDE1OTBFRjAwMDA1NEU0OEQgLyogSGVhcFRpbWVyLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyRTUyNkJC
MTU5MEVGMDAwMDU0RTQ4RCAvKiBIZWFwVGltZXIuY3BwICovOyB9OwogCQlDMkU1MjZCRTE1OTBF
RjAwMDA1NEU0OEQgLyogSGVhcFRpbWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDMkU1MjZCQzE1OTBFRjAwMDA1NEU0OEQgLyogSGVhcFRpbWVyLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTE3MjEs
NiArMTcyNSw4IEBACiAJCUMyNDAzMDUzMTRCNDA0QzkwMDc5RUI2NCAvKiBDb3BpZWRTcGFjZS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb3BpZWRTcGFjZS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMyNEQzMUUwMTYxQ0Q2OTUwMDJBQTREQiAv
KiBIZWFwU3RhdGlzdGljcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBIZWFwU3RhdGlzdGljcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMyNEQz
MUUxMTYxQ0Q2OTUwMDJBQTREQiAvKiBIZWFwU3RhdGlzdGljcy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBIZWFwU3RhdGlzdGljcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlDMjVENzA5OTE2REU5OUY0MDBGQ0E2QkMgLyogSlNNYW5hZ2VkVmFsdWUubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBKU01hbmFnZWRWYWx1ZS5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzI1RDcwOUExNkRFOTlGNDAwRkNBNkJDIC8q
IEpTTWFuYWdlZFZhbHVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTTWFu
YWdlZFZhbHVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMyNUY4QkNCMTU3NTQ0
QTkwMDI0NUI3MSAvKiBJbmNyZW1lbnRhbFN3ZWVwZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSW5jcmVtZW50YWxTd2VlcGVyLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQzI1RjhCQ0MxNTc1NDRBOTAwMjQ1QjcxIC8qIEluY3JlbWVudGFsU3dl
ZXBlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbmNyZW1lbnRhbFN3ZWVw
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzJBN0Y2ODcxNjA0MzJENDAwRjc2
Qjk4IC8qIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEpTRGVzdHJ1Y3RpYmxlT2JqZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0xNzI5LDYgKzE3MzUsOCBAQAogCQlDMkM4RDAyQjE0QTNDNkIyMDA1NzhFNjUgLyogQ29w
aWVkU3BhY2VJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvcGll
ZFNwYWNlSW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMkM4RDAyRTE0
QTNDRUZDMDA1NzhFNjUgLyogQ29waWVkQmxvY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gQ29waWVkQmxvY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzJD
OEQwMkYxNEEzQ0VGQzAwNTc4RTY1IC8qIEhlYXBCbG9jay5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBIZWFwQmxvY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
QzJDRjM5QkYxNkUxNUE4MTAwREQ2OUJFIC8qIEpTQVBJV3JhcHBlck9iamVjdC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0FQSVdyYXBwZXJPYmplY3QuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMkNGMzlDMDE2RTE1QTgxMDBERDY5QkUgLyog
SlNBUElXcmFwcGVyT2JqZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpT
QVBJV3JhcHBlck9iamVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMkQ1OEMz
MzE1OTEyRkVFMDAyMUE4NDQgLyogR0NBY3Rpdml0eUNhbGxiYWNrLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdDQWN0aXZpdHlDYWxsYmFjay5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMyRTUyNkJCMTU5MEVGMDAwMDU0RTQ4RCAvKiBIZWFwVGlt
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSGVhcFRpbWVyLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzJFNTI2QkMxNTkwRUYwMDAwNTRFNDhE
IC8qIEhlYXBUaW1lci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIZWFwVGlt
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIyMDIsNiArMjIxMCwxMCBAQAog
CQkJCUUxMjRBOEY2MEU1NTU3NzUwMDMwOTFGMSAvKiBPcGFxdWVKU1N0cmluZy5jcHAgKi8sCiAJ
CQkJRTEyNEE4RjUwRTU1NTc3NTAwMzA5MUYxIC8qIE9wYXF1ZUpTU3RyaW5nLmggKi8sCiAJCQkJ
NURFM0QwRjQwREQ4RERGQjAwNDY4NzE0IC8qIFdlYktpdEF2YWlsYWJpbGl0eS5oICovLAorCQkJ
CUMyNUQ3MDk5MTZERTk5RjQwMEZDQTZCQyAvKiBKU01hbmFnZWRWYWx1ZS5tbSAqLywKKwkJCQlD
MjVENzA5QTE2REU5OUY0MDBGQ0E2QkMgLyogSlNNYW5hZ2VkVmFsdWUuaCAqLywKKwkJCQlDMkNG
MzlCRjE2RTE1QTgxMDBERDY5QkUgLyogSlNBUElXcmFwcGVyT2JqZWN0LmNwcCAqLywKKwkJCQlD
MkNGMzlDMDE2RTE1QTgxMDBERDY5QkUgLyogSlNBUElXcmFwcGVyT2JqZWN0LmggKi8sCiAJCQkp
OwogCQkJcGF0aCA9IEFQSTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0yOTE1LDYg
KzI5MjcsNyBAQAogCQkJaXNhID0gUEJYSGVhZGVyc0J1aWxkUGhhc2U7CiAJCQlidWlsZEFjdGlv
bk1hc2sgPSAyMTQ3NDgzNjQ3OwogCQkJZmlsZXMgPSAoCisJCQkJQzI1RDcwOUMxNkRFOTlGNDAw
RkNBNkJDIC8qIEpTTWFuYWdlZFZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NjAxNjFFMzBG
M0E4M0MxMDBGODQ3MTAgLyogQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEY1NUYwRjUxNEQxMDYzQzAwQUM3NjQ5IC8qIEFic3RyYWN0UEMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUJDMThDM0U1MEUxNkY1Q0QwMEIzNDQ2MCAvKiBBUElDYXN0LmggaW4gSGVhZGVy
cyAqLywKQEAgLTMxNjUsNiArMzE3OCw3IEBACiAJCQkJQkMxOEM0MkQwRTE2RjVDRDAwQjM0NDYw
IC8qIEpTVmFyaWFibGVPYmplY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2RTNDNjE1MTY3QkFC
RDcwMDZENzYwQSAvKiBKU1ZpcnR1YWxNYWNoaW5lLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzQ4
MkU5MzExNkE3Q0FEMDAzQjA3MTIgLyogSlNXZWFrT2JqZWN0TWFwUmVmSW50ZXJuYWwuaCBpbiBI
ZWFkZXJzICovLAorCQkJCUMyQ0YzOUMyMTZFMTVBODEwMERENjlCRSAvKiBKU0FQSVdyYXBwZXJP
YmplY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3NDgyQjkzMTE2NzExNDcwMDNCMDcxMiAvKiBK
U1dlYWtPYmplY3RNYXBSZWZQcml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDQyNTY2MjE1
RURFOThEMDA2NkE0OUIgLyogSlNXaXRoU2NvcGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2RTND
NjE5MTY3QkFCRUUwMDZENzYwQSAvKiBKU1dyYXBwZXJNYXAuaCBpbiBIZWFkZXJzICovLApAQCAt
Mzc4MCw2ICszNzk0LDcgQEAKIAkJCQkwRkQzQzgyNjE0MTE1RDQwMDBGRDgxQ0IgLyogREZHRHJp
dmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRjBGMTlFMTZCNzJBMEIwMDVERjk1QiAvKiBE
RkdFZGdlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGQkMwQUU3MTQ5NkM3QzQwMEQ0RkJERCAv
KiBERkdFeGl0UHJvZmlsZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDMkNGMzlDMTE2RTE1QTgx
MDBERDY5QkUgLyogSlNBUElXcmFwcGVyT2JqZWN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBG
MkJEQzE1MTUxQzVENEQwMENEODkxMCAvKiBERkdGaXh1cFBoYXNlLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTg2RUM5REM3MTMyOERGODIwMDJCMkFENyAvKiBERkdHcmFwaC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk4NkVDOURDQjEzMjhERjgyMDAyQjJBRDcgLyogREZHSklUQ29tcGlsZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCkBAIC0zOTk2LDYgKzQwMTEsNyBAQAogCQkJCUJDQ0YwRDBDMEVGMEI4
QTUwMDQxM0M4RiAvKiBTdHJ1Y3R1cmVTdHViSW5mby5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkw
RjkxOUQyODE1ODU2NzczMDA0QTRFN0QgLyogU3ltYm9sVGFibGUuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQTczODY1NTUxMTg2OTdCNDAwNTQwMjc5IC8qIFRodW5rR2VuZXJhdG9ycy5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQlDMjVENzA5QjE2REU5OUY0MDBGQ0E2QkMgLyogSlNNYW5hZ2VkVmFs
dWUubW0gaW4gU291cmNlcyAqLywKIAkJCQkxNEE0MkUzRjBGNEY2MEVFMDA1OTkwOTkgLyogVGlt
ZW91dENoZWNrZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZGNDI3NEExNThFQkU5MTAwNENC
OUZGIC8qIHVkaXM4Ni5jIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZGNDI3NDAxNThFQkU4QjAwNENC
OUZGIC8qIHVkaXM4Nl9kZWNvZGUuYyBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAkocmV2aXNpb24gMTQ0
NzgwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00Nyw2ICs0Nyw3IEBACiAjaW5jbHVkZSAiRnVuY3Rpb25Qcm90
b3R5cGUuaCIKICNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIKICNpbmNsdWRlICJJbnRlcnByZXRl
ci5oIgorI2luY2x1ZGUgIkpTQVBJV3JhcHBlck9iamVjdC5oIgogI2luY2x1ZGUgIkpTQWN0aXZh
dGlvbi5oIgogI2luY2x1ZGUgIkpTQm91bmRGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTQ2FsbGJh
Y2tDb25zdHJ1Y3Rvci5oIgpAQCAtMjI5LDYgKzIzMCw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6
OnJlc2V0KEpTVmFsdWUgcHJvdG8KICAgICBtX2FyZ3VtZW50c1N0cnVjdHVyZS5zZXQoZXhlYy0+
Z2xvYmFsRGF0YSgpLCB0aGlzLCBBcmd1bWVudHM6OmNyZWF0ZVN0cnVjdHVyZShleGVjLT5nbG9i
YWxEYXRhKCksIHRoaXMsIG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKSk7CiAgICAgbV9jYWxsYmFj
a0NvbnN0cnVjdG9yU3RydWN0dXJlLnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIEpTQ2Fs
bGJhY2tDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhp
cywgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpKTsKICAgICBtX2NhbGxiYWNrT2JqZWN0U3RydWN0
dXJlLnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIEpTQ2FsbGJhY2tPYmplY3Q8SlNEZXN0
cnVjdGlibGVPYmplY3Q+OjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlz
LCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSkpOworICAgIG1fb2JqY1dyYXBwZXJPYmplY3RTdHJ1
Y3R1cmUuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgSlNDYWxsYmFja09iamVjdDxKU0FQ
SVdyYXBwZXJPYmplY3Q+OjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlz
LCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSkpOwogCiAgICAgbV9hcnJheVByb3RvdHlwZS5zZXQo
ZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBBcnJheVByb3RvdHlwZTo6Y3JlYXRlKGV4ZWMsIHRo
aXMsIEFycmF5UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0
aGlzLCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSkpKTsKICAgICAKQEAgLTUxMSw2ICs1MTMsNyBA
QCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsCiAgICAgdmlzaXRvci5h
cHBlbmQoJnRoaXNPYmplY3QtPm1fY2FsbGJhY2tDb25zdHJ1Y3RvclN0cnVjdHVyZSk7CiAgICAg
dmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fY2FsbGJhY2tGdW5jdGlvblN0cnVjdHVyZSk7
CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fY2FsbGJhY2tPYmplY3RTdHJ1Y3R1
cmUpOworICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX29iamNXcmFwcGVyT2JqZWN0
U3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9kYXRlU3RydWN0
dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9udWxsUHJvdG90eXBlT2Jq
ZWN0U3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9lcnJvclN0
cnVjdHVyZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9i
amVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsT2JqZWN0LmgJKHJldmlzaW9uIDE0NDc4MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTE0MSw2ICsxNDEsNyBA
QCBwcm90ZWN0ZWQ6CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9jYWxsYmFja0NvbnN0
cnVjdG9yU3RydWN0dXJlOwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fY2FsbGJhY2tG
dW5jdGlvblN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2NhbGxiYWNr
T2JqZWN0U3RydWN0dXJlOworICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fb2JqY1dyYXBw
ZXJPYmplY3RTdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9kYXRlU3Ry
dWN0dXJlOwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fbnVsbFByb3RvdHlwZU9iamVj
dFN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2Vycm9yU3RydWN0dXJl
OwpAQCAtMzAwLDYgKzMwMSw3IEBAIHB1YmxpYzoKICAgICBTdHJ1Y3R1cmUqIGNhbGxiYWNrQ29u
c3RydWN0b3JTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2NhbGxiYWNrQ29uc3RydWN0b3JT
dHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIGNhbGxiYWNrRnVuY3Rpb25TdHJ1Y3R1
cmUoKSBjb25zdCB7IHJldHVybiBtX2NhbGxiYWNrRnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCk7IH0K
ICAgICBTdHJ1Y3R1cmUqIGNhbGxiYWNrT2JqZWN0U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4g
bV9jYWxsYmFja09iamVjdFN0cnVjdHVyZS5nZXQoKTsgfQorICAgIFN0cnVjdHVyZSogb2JqY1dy
YXBwZXJPYmplY3RTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX29iamNXcmFwcGVyT2JqZWN0
U3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiBkYXRlU3RydWN0dXJlKCkgY29uc3Qg
eyByZXR1cm4gbV9kYXRlU3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiBudWxsUHJv
dG90eXBlT2JqZWN0U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9udWxsUHJvdG90eXBlT2Jq
ZWN0U3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiBlcnJvclN0cnVjdHVyZSgpIGNv
bnN0IHsgcmV0dXJuIG1fZXJyb3JTdHJ1Y3R1cmUuZ2V0KCk7IH0K
</data>
<flag name="commit-queue"
          id="212521"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>191536</attachid>
            <date>2013-03-05 12:38:40 -0800</date>
            <delta_ts>2013-03-05 12:53:05 -0800</delta_ts>
            <desc>qt build fix</desc>
            <filename>the.patch</filename>
            <type>text/plain</type>
            <size>50127</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTQ0Nzg5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwNSBA
QAorMjAxMy0wMy0wNSAgTWFyayBIYWhuZW5iZXJnICA8bWhhaG5lbmJlcmdAYXBwbGUuY29tPgor
CisgICAgICAgIE9iamVjdGl2ZS1DIEFQSTogTmVlZCBhIGdvb2Qgd2F5IHRvIHJlZmVyZW5jZSBl
dmVudCBoYW5kbGVycyB3aXRob3V0IGNhdXNpbmcgY3ljbGVzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTEwODgKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBKU01hbmFnZWRWYWx1ZSBpcyBsaWtlIGEgc3Bl
Y2lhbCBraW5kIG9mIHdlYWsgdmFsdWUuIFdoZW4geW91IGNyZWF0ZSBhIEpTTWFuYWdlZFZhbHVl
LCB5b3UgY2FuCisgICAgICAgIHN1cHBseSBhbiBPYmplY3RpdmUtQyBvYmplY3QgYXMgaXRzICJv
d25lciIuIEFzIGxvbmcgYXMgdGhlIE9iamVjdGl2ZS1DIG93bmVyIG9iamVjdCByZW1haW5zCisg
ICAgICAgIGFsaXZlIGFuZCBpdHMgd3JhcHBlciByZW1haW5zIGFjY2Vzc2libGUgdG8gdGhlIEpT
QyBnYXJiYWdlIGNvbGxlY3RvciAoZS5nLiBieSBiZWluZyBtYXJrZWQgYnkgCisgICAgICAgIHRo
ZSBnbG9iYWwgb2JqZWN0KSwgdGhlIHJlZmVyZW5jZSB0byB0aGUgSmF2YVNjcmlwdCB2YWx1ZSBp
cyBzdHJvbmcuIEFzIHNvb24gYXMgdGhlIE9iamVjdGl2ZS1DCisgICAgICAgIG93bmVyIGlzIGRl
YWxsb2NhdGVkIG9yIGl0cyB3cmFwcGVyIGJlY29tZXMgaW5hY2Nlc3NpYmxlIHRvIHRoZSBnYXJi
YWdlIGNvbGxlY3RvciwgdGhlIHJlZmVyZW5jZQorICAgICAgICBiZWNvbWVzIHdlYWsuCisKKyAg
ICAgICAgSWYgeW91IGRvIG5vdCBzdXBwbHkgYW4gb3duZXIgb3IgeW91IHVzZSB0aGUgd2Vha1Zh
bHVlV2l0aFZhbHVlOiBjb252ZW5pZW5jZSBjbGFzcyBtZXRob2QsIHRoZQorICAgICAgICByZXR1
cm5lZCBKU01hbmFnZWRWYWx1ZSBiZWhhdmVzIGFzIGEgbm9ybWFsIHdlYWsgcmVmZXJlbmNlLgor
CisgICAgICAgIFRoaXMgbmV3IGNsYXNzIGFsbG93cyBjbGllbnRzIHRvIG1haW50YWluIHJlZmVy
ZW5jZXMgdG8gSmF2YVNjcmlwdCB2YWx1ZXMgaW4gdGhlIE9iamVjdGl2ZS1DCisgICAgICAgIGhl
YXAgd2l0aG91dCBjcmVhdGluZyByZWZlcmVuY2UgY3ljbGVzL2xlYWtpbmcgbWVtb3J5LgorCisg
ICAgICAgICogQVBJL0pTQVBJV3JhcHBlck9iamVjdC5jcHA6IEFkZGVkLgorICAgICAgICAoSlND
KToKKyAgICAgICAgKEpTQzo6OjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpKU0FQ
SVdyYXBwZXJPYmplY3Q6OkpTQVBJV3JhcHBlck9iamVjdCk6IFRoaXMgaXMgYSBzcGVjaWFsIEpT
T2JqZWN0IGZvciB0aGUgT2JqZWN0aXZlLUMgQVBJIHRoYXQga25vd3MKKyAgICAgICAgZm9yIHRo
ZSBwdXJwb3NlcyBvZiBnYXJiYWdlIGNvbGxlY3Rpb24vbWFya2luZyB0aGF0IGl0IHdyYXBzIGFu
IG9wYXF1ZSBPYmplY3RpdmUtQyBvYmplY3QuCisgICAgICAgIChKU0M6OkpTQVBJV3JhcHBlck9i
amVjdDo6dmlzaXRDaGlsZHJlbik6IFdlIGFkZCB0aGUgcG9pbnRlciB0byB0aGUgd3JhcHBlZCBP
YmplY3RpdmUtQyBvYmplY3QgdG8gdGhlIHNldCBvZgorICAgICAgICBvcGFxdWUgcm9vdHMgc28g
dGhhdCB0aGUgd2VhayBoYW5kbGUgb3duZXIgZm9yIEpTTWFuYWdlZFZhbHVlcyBjYW4gZmluZCBp
dCBsYXRlci4KKyAgICAgICAgKiBBUEkvSlNBUElXcmFwcGVyT2JqZWN0Lmg6IEFkZGVkLgorICAg
ICAgICAoSlNDKToKKyAgICAgICAgKEpTQVBJV3JhcHBlck9iamVjdCk6CisgICAgICAgIChKU0M6
OkpTQVBJV3JhcHBlck9iamVjdDo6d3JhcHBlZE9iamVjdCk6CisgICAgICAgIChKU0M6OkpTQVBJ
V3JhcHBlck9iamVjdDo6c2V0V3JhcHBlZE9iamVjdCk6CisgICAgICAgICogQVBJL0pTQmFzZS5j
cHA6CisgICAgICAgIChKU1N5bmNocm9ub3VzR2FyYmFnZUNvbGxlY3QpOgorICAgICAgICAqIEFQ
SS9KU0Jhc2VQcml2YXRlLmg6CisgICAgICAgICogQVBJL0pTQ2FsbGJhY2tPYmplY3QuY3BwOgor
ICAgICAgICAoSlNDKToKKyAgICAgICAgKiBBUEkvSlNDYWxsYmFja09iamVjdC5oOgorICAgICAg
ICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0OjpkZXN0cm95KTogTW92ZWQgdGhpcyB0byB0aGUgaGVh
ZGVyIHNvIHRoYXQgd2UgZG9uJ3QgZ2V0IGxpbmsgZXJyb3JzIHdpdGggSlNBUElXcmFwcGVyT2Jq
ZWN0LgorICAgICAgICAqIEFQSS9KU0NvbnRleHQubW06CisgICAgICAgICgtW0pTQ29udGV4dCBp
bml0V2l0aFZpcnR1YWxNYWNoaW5lOl0pOiBXZSB3ZXJlbid0IGFkZGluZyBtYW51YWxseSBhbGxv
Y2F0ZWQvaW5pdGlhbGl6ZWQgSlNWaXJ0dWFsTWFjaGluZSBvYmplY3RzIHRvIAorICAgICAgICB0
aGUgZ2xvYmFsIGNhY2hlIG9mIHZpcnR1YWwgbWFjaGluZXMuIFRoZSBpbml0IG1ldGhvZHMgaGFu
ZGxlIHRoaXMgbm93IHJhdGhlciB0aGFuIGNvbnRleHRXaXRoR2xvYmFsQ29udGV4dFJlZiwgc2lu
Y2UgCisgICAgICAgIG5vdCBldmVyeW9uZSBpcyBndWFyYW50ZWVkIHRvIHVzZSB0aGUgbGF0dGVy
LgorICAgICAgICAoLVtKU0NvbnRleHQgaW5pdFdpdGhHbG9iYWxDb250ZXh0UmVmOl0pOgorICAg
ICAgICAoK1tKU0NvbnRleHQgY29udGV4dFdpdGhHbG9iYWxDb250ZXh0UmVmOl0pOgorICAgICAg
ICAqIEFQSS9KU01hbmFnZWRWYWx1ZS5oOiBBZGRlZC4KKyAgICAgICAgKiBBUEkvSlNNYW5hZ2Vk
VmFsdWUubW06IEFkZGVkLgorICAgICAgICAoSlNNYW5hZ2VkVmFsdWVIYW5kbGVPd25lcik6Cisg
ICAgICAgIChtYW5hZ2VkVmFsdWVIYW5kbGVPd25lcik6CisgICAgICAgICgrW0pTTWFuYWdlZFZh
bHVlIHdlYWtWYWx1ZVdpdGhWYWx1ZTpdKToKKyAgICAgICAgKCtbSlNNYW5hZ2VkVmFsdWUgbWFu
YWdlZFZhbHVlV2l0aFZhbHVlOm93bmVyOl0pOgorICAgICAgICAoLVtKU01hbmFnZWRWYWx1ZSBp
bml0XSk6IFdlIGV4cGxpY2l0bHkgY2FsbCB0aGUgQVJDIGVudHJ5cG9pbnRzIHRvIGluaXRpYWxp
emUvZ2V0IHRoZSB3ZWFrIG93bmVyIGZpZWxkIHNpbmNlIHdlIGRvbid0IAorICAgICAgICB1c2Ug
QVJDIHdoZW4gYnVpbGRpbmcgb3VyIGZyYW1ld29yay4KKyAgICAgICAgKC1bSlNNYW5hZ2VkVmFs
dWUgaW5pdFdpdGhWYWx1ZTpdKToKKyAgICAgICAgKC1bSlNNYW5hZ2VkVmFsdWUgaW5pdFdpdGhW
YWx1ZTpvd25lcjpdKToKKyAgICAgICAgKC1bSlNNYW5hZ2VkVmFsdWUgZGVhbGxvY10pOgorICAg
ICAgICAoLVtKU01hbmFnZWRWYWx1ZSB2YWx1ZV0pOgorICAgICAgICAoLVtKU01hbmFnZWRWYWx1
ZSB3ZWFrT3duZXJdKToKKyAgICAgICAgKEpTTWFuYWdlZFZhbHVlSGFuZGxlT3duZXI6OmlzUmVh
Y2hhYmxlRnJvbU9wYXF1ZVJvb3RzKTogSWYgdGhlIE9iamVjdGl2ZS1DIG93bmVyIGlzIHN0aWxs
IGFsaXZlIChpLmUuIGxvYWRpbmcgdGhlIHdlYWsgZmllbGQKKyAgICAgICAgcmV0dXJucyBub24t
bmlsKSBhbmQgdGhhdCB2YWx1ZSB3YXMgYWRkZWQgdG8gdGhlIHNldCBvZiBvcGFxdWUgcm9vdHMg
YnkgdGhlIHdyYXBwZXIgZm9yIHRoYXQgT2JqZWN0aXZlLUMgb3duZXIsIHRoZW4gdGhlIHRoZSAK
KyAgICAgICAgSlNPYmplY3QgdG8gd2hpY2ggdGhlIEpTTWFuYWdlZE9iamVjdCByZWZlcnMgaXMg
c3RpbGwgYWxpdmUuCisgICAgICAgICogQVBJL0pTT2JqZWN0UmVmLmNwcDogV2UgaGF2ZSB0byBh
ZGQgZXhwbGljaXQgY2hlY2tzIGZvciB0aGUgSlNBUElXcmFwcGVyT2JqZWN0LCBqdXN0IGxpa2Ug
dGhlIG90aGVyIHR5cGVzIG9mIEpTQ2FsbGJhY2tPYmplY3RzLgorICAgICAgICAoSlNPYmplY3RH
ZXRQcml2YXRlKToKKyAgICAgICAgKEpTT2JqZWN0U2V0UHJpdmF0ZSk6CisgICAgICAgIChKU09i
amVjdEdldFByaXZhdGVQcm9wZXJ0eSk6CisgICAgICAgIChKU09iamVjdFNldFByaXZhdGVQcm9w
ZXJ0eSk6CisgICAgICAgIChKU09iamVjdERlbGV0ZVByaXZhdGVQcm9wZXJ0eSk6CisgICAgICAg
ICogQVBJL0pTVmFsdWUubW06CisgICAgICAgIChvYmplY3RUb1ZhbHVlV2l0aG91dENvcHkpOgor
ICAgICAgICAqIEFQSS9KU1ZhbHVlUmVmLmNwcDoKKyAgICAgICAgKEpTVmFsdWVJc09iamVjdE9m
Q2xhc3MpOgorICAgICAgICAqIEFQSS9KU1ZpcnR1YWxNYWNoaW5lLm1tOgorICAgICAgICAoLVtK
U1ZpcnR1YWxNYWNoaW5lIGluaXRXaXRoQ29udGV4dEdyb3VwUmVmOl0pOgorICAgICAgICAoK1tK
U1ZpcnR1YWxNYWNoaW5lIHZpcnR1YWxNYWNoaW5lV2l0aENvbnRleHRHcm91cFJlZjpdKToKKyAg
ICAgICAgKiBBUEkvSlNXcmFwcGVyTWFwLm1tOgorICAgICAgICAod3JhcHBlckZpbmFsaXplKToK
KyAgICAgICAgKG1ha2VXcmFwcGVyKTogVGhpcyBpcyBvdXIgb3duIGludGVybmFsIHZlcnNpb24g
b2YgSlNPYmplY3RNYWtlIHdoaWNoIGNyZWF0ZXMgSlNBUElXcmFwcGVyT2JqZWN0cywgdGhlIE9i
ai1DIEFQSSAKKyAgICAgICAgdmVyc2lvbiBvZiBKU0NhbGxiYWNrT2JqZWN0cy4KKyAgICAgICAg
KGNyZWF0ZU9iamVjdFdpdGhDdXN0b21CcmFuZCk6CisgICAgICAgICgtW0pTT2JqQ0NsYXNzSW5m
byB3cmFwcGVyRm9yT2JqZWN0Ol0pOgorICAgICAgICAodHJ5VW53cmFwT2JqY09iamVjdCk6Cisg
ICAgICAgICogQVBJL0phdmFTY3JpcHRDb3JlLmg6CisgICAgICAgICogQVBJL3Rlc3RzL3Rlc3Rh
cGkubW06IEFkZGVkIG5ldyB0ZXN0cyBmb3IgdGhlIHN0cm9uZyBhbmQgd2VhayB1c2VzIG9mIEpT
TWFuYWdlZFZhbHVlIGluIHRoZSBjb250ZXh0IG9mIGFuIAorICAgICAgICBvbmNsaWNrIGhhbmRs
ZXIgZm9yIGFuIE9iamVjdGl2ZS1DIG9iamVjdCBpbnNlcnRlZCBpbnRvIGEgSlNDb250ZXh0Lgor
ICAgICAgICAoLVtUZXh0WFlaIHNldFdlYWtPbmNsaWNrOl0pOgorICAgICAgICAoLVtUZXh0WFla
IHNldE9uY2xpY2s6XSk6CisgICAgICAgICgtW1RleHRYWVogd2Vha09uY2xpY2tdKToKKyAgICAg
ICAgKC1bVGV4dFhZWiBvbmNsaWNrXSk6CisgICAgICAgICgtW1RleHRYWVogY2xpY2tdKToKKyAg
ICAgICAgKiBDTWFrZUxpc3RzLnR4dDogVmFyaW91cyBidWlsZCBzeXN0ZW0gYWRkaXRpb25zLgor
ICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogSmF2YVNjcmlwdENvcmUu
Z3lwaToKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUudmNwcm9qOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6IEFk
ZGVkIHRoZSBuZXcgY2Fub25pY2FsIFN0cnVjdHVyZSBmb3IgdGhlIEpTQVBJV3JhcHBlck9iamVj
dCBjbGFzcy4KKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnJlc2V0KToKKyAgICAgICAg
KEpTQyk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKToKKyAg
ICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgIChKU0dsb2JhbE9iamVj
dCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpvYmpjV3JhcHBlck9iamVjdFN0cnVj
dHVyZSk6CisKIDIwMTMtMDMtMDUgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21h
aWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxNDQ3MDguCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAxNDQ3ODApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTI0
LDYgKzI0LDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX0lOQ0xVREVfRElSRUNUT1JJRVMKICkKIAog
c2V0KEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKKyAgICBBUEkvSlNBUElXcmFwcGVyT2JqZWN0LmNw
cAogICAgIEFQSS9KU0Jhc2UuY3BwCiAgICAgQVBJL0pTQ2FsbGJhY2tDb25zdHJ1Y3Rvci5jcHAK
ICAgICBBUEkvSlNDYWxsYmFja0Z1bmN0aW9uLmNwcApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHJldmlzaW9uIDE0NDc4MCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw2ICsz
Niw4IEBAIGphdmFzY3JpcHRjb3JlX2J1aWx0X25vc291cmNlcyArPSBcCiBqYXZhc2NyaXB0Y29y
ZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0FQSUNhc3QuaCBcCiAJ
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9BUElTaGltcy5oIFwKKyAgICBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL0pTQVBJV3JhcHBlck9iamVjdC5jcHAgXAorICAgIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvSlNBUElXcmFwcGVyT2JqZWN0LmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvSlNCYXNlLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0Jhc2VQcml2
YXRlLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja0NvbnN0cnVjdG9y
LmNwcCBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZ3lwaQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZ3lwaQko
cmV2aXNpb24gMTQ0NzgwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Lmd5cGkJKHdvcmtpbmcgY29weSkKQEAgLTM2LDYgKzM2LDggQEAKICAgICAgICAgICAgICdBUEkv
QVBJU2hpbXMuaCcsCiAgICAgICAgICAgICAnQVBJL0phdmFTY3JpcHRDb3JlLmgnLAogICAgICAg
ICAgICAgJ0FQSS9KYXZhU2NyaXB0LmgnLAorICAgICAgICAgICAgJ0FQSS9KU0FQSVdyYXBwZXJP
YmplY3QuY3BwJywKKyAgICAgICAgICAgICdBUEkvSlNBUElXcmFwcGVyT2JqZWN0LmgnLAogICAg
ICAgICAgICAgJ0FQSS9KU0Jhc2UuY3BwJywKICAgICAgICAgICAgICdBUEkvSlNCYXNlLmgnLAog
ICAgICAgICAgICAgJ0FQSS9KU0Jhc2VQcml2YXRlLmgnLApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL1RhcmdldC5wcmkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL1Rh
cmdldC5wcmkJKHJldmlzaW9uIDE0NDc4MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9UYXJn
ZXQucHJpCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3IEBAIElOU1RBTExERVBTICs9IGFs
bAogZGVidWdfYW5kX3JlbGVhc2U6IElOQ0xVREVQQVRIICs9ICQkSkFWQVNDUklQVENPUkVfR0VO
RVJBVEVEX1NPVVJDRVNfRElSLyQkdGFyZ2V0U3ViRGlyKCkKIAogU09VUkNFUyArPSBcCisgICAg
QVBJL0pTQVBJV3JhcHBlck9iamVjdC5jcHAgXAogICAgIEFQSS9KU0Jhc2UuY3BwIFwKICAgICBB
UEkvSlNDYWxsYmFja0NvbnN0cnVjdG9yLmNwcCBcCiAgICAgQVBJL0pTQ2FsbGJhY2tGdW5jdGlv
bi5jcHAgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0FQSVdyYXBwZXJPYmpl
Y3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNBUElXcmFw
cGVyT2JqZWN0LmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
SlNBUElXcmFwcGVyT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDYzIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTQVBJV3JhcHBlck9i
amVjdC5oIgorCisjaW5jbHVkZSAiSlNDYWxsYmFja09iamVjdC5oIgorCisjaWYgSlNDX09CSkNf
QVBJX0VOQUJMRUQKKworbmFtZXNwYWNlIEpTQyB7CisgICAgCit0ZW1wbGF0ZSA8PiBjb25zdCBD
bGFzc0luZm8gSlNDYWxsYmFja09iamVjdDxKU0FQSVdyYXBwZXJPYmplY3Q+OjpzX2luZm8gPSB7
ICJFbnVtZXJhYmxlQ2FsbGJhY2tPYmplY3QiLCAmQmFzZTo6c19pbmZvLCAwLCAwLCBDUkVBVEVf
TUVUSE9EX1RBQkxFKEpTQ2FsbGJhY2tPYmplY3QpIH07CisKK3RlbXBsYXRlPD4gY29uc3QgYm9v
bCBKU0NhbGxiYWNrT2JqZWN0PEpTQVBJV3JhcHBlck9iamVjdD46Om5lZWRzRGVzdHJ1Y3Rpb24g
PSB0cnVlOworCit0ZW1wbGF0ZSA8PgorU3RydWN0dXJlKiBKU0NhbGxiYWNrT2JqZWN0PEpTQVBJ
V3JhcHBlck9iamVjdD46OmNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEs
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG8pCit7CisgICAgcmV0
dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKGdsb2JhbERhdGEsIGdsb2JhbE9iamVjdCwgcHJvdG8sIFR5
cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgJnNfaW5mbyk7Cit9CisKK0pTQVBJ
V3JhcHBlck9iamVjdDo6SlNBUElXcmFwcGVyT2JqZWN0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0
YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBCYXNlKGdsb2JhbERhdGEsIHN0cnVjdHVy
ZSkKKyAgICAsIG1fd3JhcHBlZE9iamVjdCgwKQoreworfQorCit2b2lkIEpTQVBJV3JhcHBlck9i
amVjdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIEpTQzo6U2xvdFZpc2l0b3ImIHZpc2l0
b3IpCit7CisgICAgSlNBUElXcmFwcGVyT2JqZWN0KiB0aGlzT2JqZWN0ID0gSlNDOjpqc0Nhc3Q8
SlNBUElXcmFwcGVyT2JqZWN0Kj4oY2VsbCk7CisgICAgQ09NUElMRV9BU1NFUlQoU3RydWN0dXJl
RmxhZ3MgJiBPdmVycmlkZXNWaXNpdENoaWxkcmVuLCBPdmVycmlkZXNWaXNpdENoaWxkcmVuV2l0
aG91dFNldHRpbmdGbGFnKTsKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKGNlbGwsIHZpc2l0b3Ip
OworCisgICAgaWYgKHRoaXNPYmplY3QtPndyYXBwZWRPYmplY3QoKSkKKyAgICAgICAgdmlzaXRv
ci5hZGRPcGFxdWVSb290KHRoaXNPYmplY3QtPndyYXBwZWRPYmplY3QoKSk7Cit9CisKK30gLy8g
bmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gSlNDX09CSkNfQVBJX0VOQUJMRUQKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNBUElXcmFwcGVyT2JqZWN0LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0FQSVdyYXBwZXJPYmplY3QuaAkocmV2aXNp
b24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNBUElXcmFwcGVyT2JqZWN0LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSlNB
UElXcmFwcGVyT2JqZWN0X2gKKyNkZWZpbmUgSlNBUElXcmFwcGVyT2JqZWN0X2gKKworI2luY2x1
ZGUgIkpTQmFzZS5oIgorI2luY2x1ZGUgIkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LmgiCisjaW5jbHVk
ZSAiV2Vha1JlZmVyZW5jZUhhcnZlc3Rlci5oIgorCisjaWYgSlNDX09CSkNfQVBJX0VOQUJMRUQK
KworbmFtZXNwYWNlIEpTQyB7CisgICAgCitjbGFzcyBKU0FQSVdyYXBwZXJPYmplY3QgOiBwdWJs
aWMgSlNEZXN0cnVjdGlibGVPYmplY3QgeworcHVibGljOgorICAgIHR5cGVkZWYgSlNEZXN0cnVj
dGlibGVPYmplY3QgQmFzZTsKKyAgICAKKyAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpT
Q2VsbCosIEpTQzo6U2xvdFZpc2l0b3ImKTsKKyAgICAKKyAgICB2b2lkKiB3cmFwcGVkT2JqZWN0
KCkgeyByZXR1cm4gbV93cmFwcGVkT2JqZWN0OyB9CisgICAgdm9pZCBzZXRXcmFwcGVkT2JqZWN0
KHZvaWQqIHdyYXBwZWRPYmplY3QpIHsgbV93cmFwcGVkT2JqZWN0ID0gd3JhcHBlZE9iamVjdDsg
fQorCitwcm90ZWN0ZWQ6CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdz
ID0gT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiB8IEJhc2U6OlN0cnVjdHVyZUZsYWdzOworICAgIAor
ICAgIEpTQVBJV3JhcHBlck9iamVjdChKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqKTsKKworcHJp
dmF0ZToKKyAgICB2b2lkKiBtX3dyYXBwZWRPYmplY3Q7Cit9OworCit9IC8vIG5hbWVzcGFjZSBK
U0MKKworI2VuZGlmIC8vIEpTQ19PQkpDX0FQSV9FTkFCTEVECisKKyNlbmRpZiAvLyBKU0FQSVdy
YXBwZXJPYmplY3RfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0Jhc2UuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNCYXNlLmNwcAkocmV2
aXNpb24gMTQ0NzgwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0Jhc2UuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xMTAsMyArMTEwLDEzIEBAIHZvaWQgSlNSZXBvcnRFeHRyYU1lbW9y
eUNvc3QoSlNDb250ZXh0UmUKICAgICBBUElFbnRyeVNoaW0gZW50cnlTaGltKGV4ZWMpOwogICAg
IGV4ZWMtPmdsb2JhbERhdGEoKS5oZWFwLnJlcG9ydEV4dHJhTWVtb3J5Q29zdChzaXplKTsKIH0K
Kwordm9pZCBKU1N5bmNocm9ub3VzR2FyYmFnZUNvbGxlY3QoSlNDb250ZXh0UmVmIGN0eCkKK3sK
KyAgICBpZiAoIWN0eCkKKyAgICAgICAgcmV0dXJuOworCisgICAgRXhlY1N0YXRlKiBleGVjID0g
dG9KUyhjdHgpOworICAgIEFQSUVudHJ5U2hpbSBlbnRyeVNoaW0oZXhlYyk7CisgICAgZXhlYy0+
Z2xvYmFsRGF0YSgpLmhlYXAuY29sbGVjdEFsbEdhcmJhZ2UoKTsKK30KSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvSlNCYXNlUHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvSlNCYXNlUHJpdmF0ZS5oCShyZXZpc2lvbiAxNDQ3ODApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQmFzZVByaXZhdGUuaAkod29ya2luZyBjb3B5KQpA
QCAtNDUsNiArNDUsMTUgQEAgcmVnaW9uLgogKi8KIEpTX0VYUE9SVCB2b2lkIEpTUmVwb3J0RXh0
cmFNZW1vcnlDb3N0KEpTQ29udGV4dFJlZiBjdHgsIHNpemVfdCBzaXplKSBBVkFJTEFCTEVfSU5f
V0VCS0lUX1ZFUlNJT05fNF8wOwogCisvKiEKK0BmdW5jdGlvbgorQGFic3RyYWN0IFN5bmNocm9u
b3VzbHkgcnVucyBhIGZ1bGwgbWFyay1zd2VlcCBnYXJiYWdlIGNvbGxlY3Rpb24uCitAcGFyYW0g
Y3R4IFRoZSBleGVjdXRpb24gY29udGV4dCB0byB1c2UuCitAZGlzY3Vzc2lvbiBUaGlzIGZ1bmN0
aW9uIGlzIG9ubHkgdXNlZCBpbnRlcm5hbGx5IGZvciB0ZXN0cy4gSWYgeW91J3JlIG5vdCAKK3N1
cmUgeW91IG5lZWQgdG8gdXNlIHRoaXMgZnVuY3Rpb24gdGhlbiB5b3UgZG9uJ3QgbmVlZCB0by4K
KyovCitKU19FWFBPUlQgdm9pZCBKU1N5bmNocm9ub3VzR2FyYmFnZUNvbGxlY3QoSlNDb250ZXh0
UmVmIGN0eCk7CisKICNpZmRlZiBfX2NwbHVzcGx1cwogfQogI2VuZGlmCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdC5jcHAJKHJldmlzaW9uIDE0
NDc4MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTYxLDEyICs2MSw2IEBAIFN0cnVjdHVyZSogSlNDYWxsYmFja09i
amVjdDxKU0dsb2JhbE9iamUKICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFsRGF0
YSwgZ2xvYmFsT2JqZWN0LCBwcm90bywgVHlwZUluZm8oR2xvYmFsT2JqZWN0VHlwZSwgU3RydWN0
dXJlRmxhZ3MpLCAmc19pbmZvKTsgCiB9CiAKLXRlbXBsYXRlIDxjbGFzcyBQYXJlbnQ+Ci12b2lk
IEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6ZGVzdHJveShKU0NlbGwqIGNlbGwpCi17Ci0gICAg
c3RhdGljX2Nhc3Q8SlNDYWxsYmFja09iamVjdCo+KGNlbGwpLT5KU0NhbGxiYWNrT2JqZWN0Ojp+
SlNDYWxsYmFja09iamVjdCgpOwotfQotCiB2b2lkIEpTQ2FsbGJhY2tPYmplY3REYXRhOjpmaW5h
bGl6ZShIYW5kbGU8VW5rbm93bj4gaGFuZGxlLCB2b2lkKiBjb250ZXh0KQogewogICAgIEpTQ2xh
c3NSZWYganNDbGFzcyA9IHN0YXRpY19jYXN0PEpTQ2xhc3NSZWY+KGNvbnRleHQpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmgJKHJldmlzaW9u
IDE0NDc4MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xMzYsNyArMTM2LDEwIEBAIHB1YmxpYzoKICAgICBzdGF0aWMg
SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+KiBjcmVhdGUoSlNHbG9iYWxEYXRhJiwgSlNDbGFzc1Jl
ZiwgU3RydWN0dXJlKik7CiAKICAgICBzdGF0aWMgY29uc3QgYm9vbCBuZWVkc0Rlc3RydWN0aW9u
OwotICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CisgICAgc3RhdGljIHZvaWQgZGVz
dHJveShKU0NlbGwqIGNlbGwpCisgICAgeworICAgICAgICBzdGF0aWNfY2FzdDxKU0NhbGxiYWNr
T2JqZWN0Kj4oY2VsbCktPkpTQ2FsbGJhY2tPYmplY3Q6On5KU0NhbGxiYWNrT2JqZWN0KCk7Cisg
ICAgfQogCiAgICAgdm9pZCBzZXRQcml2YXRlKHZvaWQqIGRhdGEpOwogICAgIHZvaWQqIGdldFBy
aXZhdGUoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0Lm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0Lm1tCShyZXZp
c2lvbiAxNDQ3ODApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dC5tbQko
d29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogCiAj
aW1wb3J0ICJBUElDYXN0LmgiCisjaW1wb3J0ICJBUElTaGltcy5oIgogI2ltcG9ydCAiSlNDb250
ZXh0SW50ZXJuYWwuaCIKICNpbXBvcnQgIkpTR2xvYmFsT2JqZWN0LmgiCiAjaW1wb3J0ICJKU1Zh
bHVlSW50ZXJuYWwuaCIKQEAgLTcyLDYgKzczLDggQEAgLSAoaWQpaW5pdFdpdGhWaXJ0dWFsTWFj
aGluZTooSlNWaXJ0dWFsTQogICAgICAgICBjb250ZXh0LmV4Y2VwdGlvbiA9IGV4Y2VwdGlvblZh
bHVlOwogICAgIH07CiAKKyAgICBbbV92aXJ0dWFsTWFjaGluZSBhZGRDb250ZXh0OnNlbGYgZm9y
R2xvYmFsQ29udGV4dFJlZjptX2NvbnRleHRdOworCiAgICAgcmV0dXJuIHNlbGY7CiB9CiAKQEAg
LTE4Nyw2ICsxOTAsOCBAQCAtIChpZClpbml0V2l0aEdsb2JhbENvbnRleHRSZWY6KEpTR2xvYmFs
CiAgICAgICAgIGNvbnRleHQuZXhjZXB0aW9uID0gZXhjZXB0aW9uVmFsdWU7CiAgICAgfTsKIAor
ICAgIFttX3ZpcnR1YWxNYWNoaW5lIGFkZENvbnRleHQ6c2VsZiBmb3JHbG9iYWxDb250ZXh0UmVm
Om1fY29udGV4dF07CisKICAgICByZXR1cm4gc2VsZjsKIH0KIApAQCAtMjU0LDEwICsyNTksOCBA
QCArIChKU0NvbnRleHQgKiljb250ZXh0V2l0aEdsb2JhbENvbnRleHRSCiB7CiAgICAgSlNWaXJ0
dWFsTWFjaGluZSAqdmlydHVhbE1hY2hpbmUgPSBbSlNWaXJ0dWFsTWFjaGluZSB2aXJ0dWFsTWFj
aGluZVdpdGhDb250ZXh0R3JvdXBSZWY6dG9SZWYoJnRvSlMoZ2xvYmFsQ29udGV4dCktPmdsb2Jh
bERhdGEoKSldOwogICAgIEpTQ29udGV4dCAqY29udGV4dCA9IFt2aXJ0dWFsTWFjaGluZSBjb250
ZXh0Rm9yR2xvYmFsQ29udGV4dFJlZjpnbG9iYWxDb250ZXh0XTsKLSAgICBpZiAoIWNvbnRleHQp
IHsKKyAgICBpZiAoIWNvbnRleHQpCiAgICAgICAgIGNvbnRleHQgPSBbW1tKU0NvbnRleHQgYWxs
b2NdIGluaXRXaXRoR2xvYmFsQ29udGV4dFJlZjpnbG9iYWxDb250ZXh0XSBhdXRvcmVsZWFzZV07
Ci0gICAgICAgIFt2aXJ0dWFsTWFjaGluZSBhZGRDb250ZXh0OmNvbnRleHQgZm9yR2xvYmFsQ29u
dGV4dFJlZjpnbG9iYWxDb250ZXh0XTsKLSAgICB9CiAgICAgcmV0dXJuIGNvbnRleHQ7CiB9CiAK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNNYW5hZ2VkVmFsdWUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTTWFuYWdlZFZhbHVlLmgJKHJldmlz
aW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTTWFuYWdlZFZhbHVlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSw1MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSlNNYW5h
Z2VkVmFsdWVfaAorI2RlZmluZSBKU01hbmFnZWRWYWx1ZV9oCisKKyNpbXBvcnQgPEphdmFTY3Jp
cHRDb3JlL0pTQmFzZS5oPgorCisjaWYgSlNDX09CSkNfQVBJX0VOQUJMRUQKKworQGNsYXNzIEpT
VmFsdWU7CitAY2xhc3MgSlNDb250ZXh0OworCitOU19DTEFTU19BVkFJTEFCTEUoMTBfOSwgTkEp
CitAaW50ZXJmYWNlIEpTTWFuYWdlZFZhbHVlIDogTlNPYmplY3QKKworKyAoSlNNYW5hZ2VkVmFs
dWUgKil3ZWFrVmFsdWVXaXRoVmFsdWU6KEpTVmFsdWUgKil2YWx1ZTsKKysgKEpTTWFuYWdlZFZh
bHVlICopbWFuYWdlZFZhbHVlV2l0aFZhbHVlOihKU1ZhbHVlICopdmFsdWUgb3duZXI6KGlkKW93
bmVyOworCistIChpZClpbml0V2l0aFZhbHVlOihKU1ZhbHVlICopdmFsdWU7CistIChpZClpbml0
V2l0aFZhbHVlOihKU1ZhbHVlICopdmFsdWUgb3duZXI6KGlkKW93bmVyOworCistIChKU1ZhbHVl
ICopdmFsdWU7CisKK0BlbmQKKworI2VuZGlmIC8vIEpTQ19PQkpDX0FQSV9FTkFCTEVECisKKyNl
bmRpZiAvLyBKU01hbmFnZWRWYWx1ZV9oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTTWFuYWdlZFZhbHVlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNNYW5hZ2VkVmFsdWUubW0JKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTTWFuYWdlZFZhbHVlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTMzIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIkpTTWFuYWdlZFZh
bHVlLmgiCisKKyNpZiBKU0NfT0JKQ19BUElfRU5BQkxFRAorCisjaW1wb3J0ICJBUElDYXN0Lmgi
CisjaW1wb3J0ICJIZWFwLmgiCisjaW1wb3J0ICJKU0NvbnRleHRJbnRlcm5hbC5oIgorI2ltcG9y
dCAiSlNWYWx1ZUludGVybmFsLmgiCisjaW1wb3J0ICJXZWFrLmgiCisjaW1wb3J0ICJXZWFrSGFu
ZGxlT3duZXIuaCIKKyNpbXBvcnQgIk9iamNSdW50aW1lRXh0cmFzLmgiCisKK2NsYXNzIEpTTWFu
YWdlZFZhbHVlSGFuZGxlT3duZXIgOiBwdWJsaWMgSlNDOjpXZWFrSGFuZGxlT3duZXIgeworcHVi
bGljOgorICAgIHZpcnR1YWwgYm9vbCBpc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6Okhh
bmRsZTxKU0M6OlVua25vd24+LCB2b2lkKiBjb250ZXh0LCBKU0M6OlNsb3RWaXNpdG9yJik7Cit9
OworCitzdGF0aWMgSlNNYW5hZ2VkVmFsdWVIYW5kbGVPd25lciogbWFuYWdlZFZhbHVlSGFuZGxl
T3duZXIoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoSlNNYW5hZ2VkVmFsdWVIYW5kbGVP
d25lciwganNNYW5hZ2VkVmFsdWVIYW5kbGVPd25lciwgKCkpOworICAgIHJldHVybiAmanNNYW5h
Z2VkVmFsdWVIYW5kbGVPd25lcjsKK30KKworQGludGVyZmFjZSBKU01hbmFnZWRWYWx1ZSAoSW50
ZXJuYWwpCistIChpZCl3ZWFrT3duZXI7CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBKU01hbmFn
ZWRWYWx1ZSB7CisgICAgSlNDOjpXZWFrPEpTQzo6SlNPYmplY3Q+IG1fdmFsdWU7CisgICAgaWQg
bV93ZWFrT3duZXI7Cit9CisKKysgKEpTTWFuYWdlZFZhbHVlICopd2Vha1ZhbHVlV2l0aFZhbHVl
OihKU1ZhbHVlICopdmFsdWUKK3sKKyAgICByZXR1cm4gW1tbc2VsZiBhbGxvY10gaW5pdFdpdGhW
YWx1ZTp2YWx1ZV0gYXV0b3JlbGVhc2VdOworfQorCisrIChKU01hbmFnZWRWYWx1ZSAqKW1hbmFn
ZWRWYWx1ZVdpdGhWYWx1ZTooSlNWYWx1ZSAqKXZhbHVlIG93bmVyOihpZClvd25lcgoreworICAg
IHJldHVybiBbW1tzZWxmIGFsbG9jXSBpbml0V2l0aFZhbHVlOnZhbHVlIG93bmVyOm93bmVyXSBh
dXRvcmVsZWFzZV07Cit9CisKKy0gKGlkKWluaXQKK3sKKyAgICByZXR1cm4gW3NlbGYgaW5pdFdp
dGhWYWx1ZTpbSlNWYWx1ZSB2YWx1ZVdpdGhOdWxsSW5Db250ZXh0OltKU0NvbnRleHQgY3VycmVu
dENvbnRleHRdXSBvd25lcjpuaWxdOworfQorCistIChpZClpbml0V2l0aFZhbHVlOihKU1ZhbHVl
ICopdmFsdWUKK3sKKyAgICByZXR1cm4gW3NlbGYgaW5pdFdpdGhWYWx1ZTp2YWx1ZSBvd25lcjpu
aWxdOworfQorCistIChpZClpbml0V2l0aFZhbHVlOihKU1ZhbHVlICopdmFsdWUgb3duZXI6KGlk
KW93bmVyCit7CisgICAgc2VsZiA9IFtzdXBlciBpbml0XTsKKyAgICBpZiAoIXNlbGYpCisgICAg
ICAgIHJldHVybiBuaWw7CisgICAgCisgICAgaWYgKCFKU1ZhbHVlSXNPYmplY3QoW3ZhbHVlLmNv
bnRleHQgZ2xvYmFsQ29udGV4dFJlZl0sIFt2YWx1ZSBKU1ZhbHVlUmVmXSkpCisgICAgICAgIHJl
dHVybiBbc2VsZiBpbml0V2l0aFZhbHVlOltKU1ZhbHVlIHZhbHVlV2l0aE51bGxJbkNvbnRleHQ6
dmFsdWUuY29udGV4dF1dOworCisgICAgSlNDOjpKU09iamVjdCogb2JqZWN0ID0gdG9KUyhKU1Zh
bHVlVG9PYmplY3QoW3ZhbHVlLmNvbnRleHQgZ2xvYmFsQ29udGV4dFJlZl0sIFt2YWx1ZSBKU1Zh
bHVlUmVmXSwgMCkpOworICAgIEpTQzo6V2VhazxKU0M6OkpTT2JqZWN0PiB3ZWFrKG9iamVjdCwg
bWFuYWdlZFZhbHVlSGFuZGxlT3duZXIoKSwgc2VsZik7CisgICAgbV92YWx1ZS5zd2FwKHdlYWsp
OworCisgICAgb2JqY19pbml0V2VhaygmbV93ZWFrT3duZXIsIG93bmVyKTsKKworICAgIHJldHVy
biBzZWxmOworfQorCistICh2b2lkKWRlYWxsb2MKK3sKKyAgICBvYmpjX2Rlc3Ryb3lXZWFrKCZt
X3dlYWtPd25lcik7CisgICAgW3N1cGVyIGRlYWxsb2NdOworfQorCistIChKU1ZhbHVlICopdmFs
dWUKK3sKKyAgICBpZiAoIW1fdmFsdWUpCisgICAgICAgIHJldHVybiBuaWw7CisgICAgSlNDOjpK
U09iamVjdCogb2JqZWN0ID0gbV92YWx1ZS5nZXQoKTsKKyAgICBKU0NvbnRleHQgKmNvbnRleHQg
PSBbSlNDb250ZXh0IGNvbnRleHRXaXRoR2xvYmFsQ29udGV4dFJlZjp0b0dsb2JhbFJlZihvYmpl
Y3QtPnN0cnVjdHVyZSgpLT5nbG9iYWxPYmplY3QoKS0+Z2xvYmFsRXhlYygpKV07CisgICAgcmV0
dXJuIFtKU1ZhbHVlIHZhbHVlV2l0aFZhbHVlOnRvUmVmKG9iamVjdCkgaW5Db250ZXh0OmNvbnRl
eHRdOworfQorCitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBKU01hbmFnZWRWYWx1ZSAoSW50ZXJu
YWwpCisKKy0gKGlkKXdlYWtPd25lcgoreworICAgIHJldHVybiBvYmpjX2xvYWRXZWFrKCZtX3dl
YWtPd25lcik7Cit9CisKK0BlbmQKKworYm9vbCBKU01hbmFnZWRWYWx1ZUhhbmRsZU93bmVyOjpp
c1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+LCB2b2lk
KiBjb250ZXh0LCBKU0M6OlNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIEpTTWFuYWdlZFZh
bHVlICptYW5hZ2VkVmFsdWUgPSBzdGF0aWNfY2FzdDxKU01hbmFnZWRWYWx1ZSAqPihjb250ZXh0
KTsKKyAgICBpZCB3ZWFrT3duZXIgPSBbbWFuYWdlZFZhbHVlIHdlYWtPd25lcl07CisgICAgaWYg
KCF3ZWFrT3duZXIpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gdmlzaXRvci5j
b250YWluc09wYXF1ZVJvb3Qod2Vha093bmVyKTsKK30KKworI2VuZGlmIC8vIEpTQ19PQkpDX0FQ
SV9FTkFCTEVECkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmNw
cAkocmV2aXNpb24gMTQ0NzgwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU09iamVj
dFJlZi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJGdW5j
dGlvbkNvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIklu
aXRpYWxpemVUaHJlYWRpbmcuaCIKKyNpbmNsdWRlICJKU0FQSVdyYXBwZXJPYmplY3QuaCIKICNp
bmNsdWRlICJKU0FycmF5LmgiCiAjaW5jbHVkZSAiSlNDYWxsYmFja0NvbnN0cnVjdG9yLmgiCiAj
aW5jbHVkZSAiSlNDYWxsYmFja0Z1bmN0aW9uLmgiCkBAIC0zNDUsNiArMzQ2LDggQEAgdm9pZCog
SlNPYmplY3RHZXRQcml2YXRlKEpTT2JqZWN0UmVmIG9iagogICAgICAgICByZXR1cm4ganNDYXN0
PEpTQ2FsbGJhY2tPYmplY3Q8SlNHbG9iYWxPYmplY3Q+Kj4oanNPYmplY3QpLT5nZXRQcml2YXRl
KCk7CiAgICAgaWYgKGpzT2JqZWN0LT5pbmhlcml0cygmSlNDYWxsYmFja09iamVjdDxKU0Rlc3Ry
dWN0aWJsZU9iamVjdD46OnNfaW5mbykpCiAgICAgICAgIHJldHVybiBqc0Nhc3Q8SlNDYWxsYmFj
a09iamVjdDxKU0Rlc3RydWN0aWJsZU9iamVjdD4qPihqc09iamVjdCktPmdldFByaXZhdGUoKTsK
KyAgICBpZiAoanNPYmplY3QtPmluaGVyaXRzKCZKU0NhbGxiYWNrT2JqZWN0PEpTQVBJV3JhcHBl
ck9iamVjdD46OnNfaW5mbykpCisgICAgICAgIHJldHVybiBqc0Nhc3Q8SlNDYWxsYmFja09iamVj
dDxKU0FQSVdyYXBwZXJPYmplY3Q+Kj4oanNPYmplY3QpLT5nZXRQcml2YXRlKCk7CiAgICAgCiAg
ICAgcmV0dXJuIDA7CiB9CkBAIC0zNjEsNiArMzY0LDEwIEBAIGJvb2wgSlNPYmplY3RTZXRQcml2
YXRlKEpTT2JqZWN0UmVmIG9iamUKICAgICAgICAganNDYXN0PEpTQ2FsbGJhY2tPYmplY3Q8SlNE
ZXN0cnVjdGlibGVPYmplY3Q+Kj4oanNPYmplY3QpLT5zZXRQcml2YXRlKGRhdGEpOwogICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICB9CisgICAgaWYgKGpzT2JqZWN0LT5pbmhlcml0cygmSlNDYWxs
YmFja09iamVjdDxKU0FQSVdyYXBwZXJPYmplY3Q+OjpzX2luZm8pKSB7CisgICAgICAgIGpzQ2Fz
dDxKU0NhbGxiYWNrT2JqZWN0PEpTQVBJV3JhcHBlck9iamVjdD4qPihqc09iamVjdCktPnNldFBy
aXZhdGUoZGF0YSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KICAgICAgICAgCiAgICAg
cmV0dXJuIGZhbHNlOwogfQpAQCAtMzc2LDYgKzM4Myw4IEBAIEpTVmFsdWVSZWYgSlNPYmplY3RH
ZXRQcml2YXRlUHJvcGVydHkoSlMKICAgICAgICAgcmVzdWx0ID0ganNDYXN0PEpTQ2FsbGJhY2tP
YmplY3Q8SlNHbG9iYWxPYmplY3Q+Kj4oanNPYmplY3QpLT5nZXRQcml2YXRlUHJvcGVydHkobmFt
ZSk7CiAgICAgZWxzZSBpZiAoanNPYmplY3QtPmluaGVyaXRzKCZKU0NhbGxiYWNrT2JqZWN0PEpT
RGVzdHJ1Y3RpYmxlT2JqZWN0Pjo6c19pbmZvKSkKICAgICAgICAgcmVzdWx0ID0ganNDYXN0PEpT
Q2FsbGJhY2tPYmplY3Q8SlNEZXN0cnVjdGlibGVPYmplY3Q+Kj4oanNPYmplY3QpLT5nZXRQcml2
YXRlUHJvcGVydHkobmFtZSk7CisgICAgZWxzZSBpZiAoanNPYmplY3QtPmluaGVyaXRzKCZKU0Nh
bGxiYWNrT2JqZWN0PEpTQVBJV3JhcHBlck9iamVjdD46OnNfaW5mbykpCisgICAgICAgIHJlc3Vs
dCA9IGpzQ2FzdDxKU0NhbGxiYWNrT2JqZWN0PEpTQVBJV3JhcHBlck9iamVjdD4qPihqc09iamVj
dCktPmdldFByaXZhdGVQcm9wZXJ0eShuYW1lKTsKICAgICByZXR1cm4gdG9SZWYoZXhlYywgcmVz
dWx0KTsKIH0KIApAQCAtMzk0LDYgKzQwMywxMCBAQCBib29sIEpTT2JqZWN0U2V0UHJpdmF0ZVBy
b3BlcnR5KEpTQ29udGV4CiAgICAgICAgIGpzQ2FzdDxKU0NhbGxiYWNrT2JqZWN0PEpTRGVzdHJ1
Y3RpYmxlT2JqZWN0Pio+KGpzT2JqZWN0KS0+c2V0UHJpdmF0ZVByb3BlcnR5KGV4ZWMtPmdsb2Jh
bERhdGEoKSwgbmFtZSwganNWYWx1ZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KKyAg
ICBpZiAoanNPYmplY3QtPmluaGVyaXRzKCZKU0NhbGxiYWNrT2JqZWN0PEpTQVBJV3JhcHBlck9i
amVjdD46OnNfaW5mbykpIHsKKyAgICAgICAganNDYXN0PEpTQ2FsbGJhY2tPYmplY3Q8SlNBUElX
cmFwcGVyT2JqZWN0Pio+KGpzT2JqZWN0KS0+c2V0UHJpdmF0ZVByb3BlcnR5KGV4ZWMtPmdsb2Jh
bERhdGEoKSwgbmFtZSwganNWYWx1ZSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KICAg
ICByZXR1cm4gZmFsc2U7CiB9CiAKQEAgLTQxMSw2ICs0MjQsMTAgQEAgYm9vbCBKU09iamVjdERl
bGV0ZVByaXZhdGVQcm9wZXJ0eShKU0NvbgogICAgICAgICBqc0Nhc3Q8SlNDYWxsYmFja09iamVj
dDxKU0Rlc3RydWN0aWJsZU9iamVjdD4qPihqc09iamVjdCktPmRlbGV0ZVByaXZhdGVQcm9wZXJ0
eShuYW1lKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQorICAgIGlmIChqc09iamVjdC0+
aW5oZXJpdHMoJkpTQ2FsbGJhY2tPYmplY3Q8SlNBUElXcmFwcGVyT2JqZWN0Pjo6c19pbmZvKSkg
eworICAgICAgICBqc0Nhc3Q8SlNDYWxsYmFja09iamVjdDxKU0FQSVdyYXBwZXJPYmplY3Q+Kj4o
anNPYmplY3QpLT5kZWxldGVQcml2YXRlUHJvcGVydHkobmFtZSk7CisgICAgICAgIHJldHVybiB0
cnVlOworICAgIH0KICAgICByZXR1cm4gZmFsc2U7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvSlNWYWx1ZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTVmFsdWUubW0JKHJldmlzaW9uIDE0NDc4MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNWYWx1ZS5tbQkod29ya2luZyBjb3B5KQpAQCAtODkyLDYgKzg5MiwxMyBAQCBz
dGF0aWMgT2JqY0NvbnRhaW5lckNvbnZlcnRvcjo6VGFzayBvYmplCiAgICAgICAgICAgICBKU09i
amVjdFJlZiByZXN1bHQgPSBKU09iamVjdE1ha2VEYXRlKGNvbnRleHRSZWYsIDEsICZhcmd1bWVu
dCwgMCk7CiAgICAgICAgICAgICByZXR1cm4gKE9iamNDb250YWluZXJDb252ZXJ0b3I6OlRhc2sp
eyBvYmplY3QsIHJlc3VsdCwgQ29udGFpbmVyTm9uZSB9OwogICAgICAgICB9CisKKyAgICAgICAg
aWYgKFtvYmplY3QgaXNLaW5kT2ZDbGFzczpbSlNNYW5hZ2VkVmFsdWUgY2xhc3NdXSkgeworICAg
ICAgICAgICAgSlNWYWx1ZSAqdmFsdWUgPSBbc3RhdGljX2Nhc3Q8SlNNYW5hZ2VkVmFsdWUgKj4o
b2JqZWN0KSB2YWx1ZV07CisgICAgICAgICAgICBpZiAoIXZhbHVlKQorICAgICAgICAgICAgICAg
IHJldHVybiAoT2JqY0NvbnRhaW5lckNvbnZlcnRvcjo6VGFzaykgeyBvYmplY3QsIEpTVmFsdWVN
YWtlVW5kZWZpbmVkKGNvbnRleHRSZWYpLCBDb250YWluZXJOb25lIH07CisgICAgICAgICAgICBy
ZXR1cm4gKE9iamNDb250YWluZXJDb252ZXJ0b3I6OlRhc2speyBvYmplY3QsIHZhbHVlLT5tX3Zh
bHVlLCBDb250YWluZXJOb25lIH07CisgICAgICAgIH0KICAgICB9CiAKICAgICByZXR1cm4gKE9i
amNDb250YWluZXJDb252ZXJ0b3I6OlRhc2speyBvYmplY3QsIHZhbHVlSW50ZXJuYWxWYWx1ZShb
Y29udGV4dCB3cmFwcGVyRm9yT2JqQ09iamVjdDpvYmplY3RdKSwgQ29udGFpbmVyTm9uZSB9OwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlUmVmLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmFsdWVSZWYuY3BwCShyZXZpc2lvbiAx
NDQ3ODApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmFsdWVSZWYuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJBUElDYXN0LmgiCiAjaW5j
bHVkZSAiQVBJU2hpbXMuaCIKKyNpbmNsdWRlICJKU0FQSVdyYXBwZXJPYmplY3QuaCIKICNpbmNs
dWRlICJKU0NhbGxiYWNrT2JqZWN0LmgiCiAKICNpbmNsdWRlIDxydW50aW1lL0pTQ0pTVmFsdWUu
aD4KQEAgLTE0OCw2ICsxNDksOCBAQCBib29sIEpTVmFsdWVJc09iamVjdE9mQ2xhc3MoSlNDb250
ZXh0UmVmCiAgICAgICAgICAgICByZXR1cm4ganNDYXN0PEpTQ2FsbGJhY2tPYmplY3Q8SlNHbG9i
YWxPYmplY3Q+Kj4obyktPmluaGVyaXRzKGpzQ2xhc3MpOwogICAgICAgICBpZiAoby0+aW5oZXJp
dHMoJkpTQ2FsbGJhY2tPYmplY3Q8SlNEZXN0cnVjdGlibGVPYmplY3Q+OjpzX2luZm8pKQogICAg
ICAgICAgICAgcmV0dXJuIGpzQ2FzdDxKU0NhbGxiYWNrT2JqZWN0PEpTRGVzdHJ1Y3RpYmxlT2Jq
ZWN0Pio+KG8pLT5pbmhlcml0cyhqc0NsYXNzKTsKKyAgICAgICAgaWYgKG8tPmluaGVyaXRzKCZK
U0NhbGxiYWNrT2JqZWN0PEpTQVBJV3JhcHBlck9iamVjdD46OnNfaW5mbykpCisgICAgICAgICAg
ICByZXR1cm4ganNDYXN0PEpTQ2FsbGJhY2tPYmplY3Q8SlNBUElXcmFwcGVyT2JqZWN0Pio+KG8p
LT5pbmhlcml0cyhqc0NsYXNzKTsKICAgICB9CiAgICAgcmV0dXJuIGZhbHNlOwogfQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZpcnR1YWxNYWNoaW5lLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWaXJ0dWFsTWFjaGluZS5tbQkocmV2aXNp
b24gMTQ0NzgwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZpcnR1YWxNYWNoaW5l
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMDEsNyArMTAxLDkgQEAgLSAoaWQpaW5pdFdpdGhDb250
ZXh0R3JvdXBSZWY6KEpTQ29udGV4dAogICAgIE5TUG9pbnRlckZ1bmN0aW9uc09wdGlvbnMga2V5
T3B0aW9ucyA9IE5TUG9pbnRlckZ1bmN0aW9uc09wYXF1ZU1lbW9yeSB8IE5TUG9pbnRlckZ1bmN0
aW9uc09wYXF1ZVBlcnNvbmFsaXR5OwogICAgIE5TUG9pbnRlckZ1bmN0aW9uc09wdGlvbnMgdmFs
dWVPcHRpb25zID0gTlNQb2ludGVyRnVuY3Rpb25zV2Vha01lbW9yeSB8IE5TUG9pbnRlckZ1bmN0
aW9uc09iamVjdFBlcnNvbmFsaXR5OwogICAgIG1fY29udGV4dENhY2hlID0gW1tOU01hcFRhYmxl
IGFsbG9jXSBpbml0V2l0aEtleU9wdGlvbnM6a2V5T3B0aW9ucyB2YWx1ZU9wdGlvbnM6dmFsdWVP
cHRpb25zIGNhcGFjaXR5OjBdOwotICAgIAorICAgCisgICAgW0pTVk1XcmFwcGVyQ2FjaGUgYWRk
V3JhcHBlcjpzZWxmIGZvckpTQ29udGV4dEdyb3VwUmVmOmdyb3VwXTsKKyAKICAgICByZXR1cm4g
c2VsZjsKIH0KIApAQCAtMTIzLDEwICsxMjUsOCBAQCBKU0NvbnRleHRHcm91cFJlZiBnZXRHcm91
cEZyb21WaXJ0dWFsTWFjCiArIChKU1ZpcnR1YWxNYWNoaW5lICopdmlydHVhbE1hY2hpbmVXaXRo
Q29udGV4dEdyb3VwUmVmOihKU0NvbnRleHRHcm91cFJlZilncm91cAogewogICAgIEpTVmlydHVh
bE1hY2hpbmUgKnZpcnR1YWxNYWNoaW5lID0gW0pTVk1XcmFwcGVyQ2FjaGUgd3JhcHBlckZvckpT
Q29udGV4dEdyb3VwUmVmOmdyb3VwXTsKLSAgICBpZiAoIXZpcnR1YWxNYWNoaW5lKSB7CisgICAg
aWYgKCF2aXJ0dWFsTWFjaGluZSkKICAgICAgICAgdmlydHVhbE1hY2hpbmUgPSBbW1tKU1ZpcnR1
YWxNYWNoaW5lIGFsbG9jXSBpbml0V2l0aENvbnRleHRHcm91cFJlZjpncm91cF0gYXV0b3JlbGVh
c2VdOwotICAgICAgICBbSlNWTVdyYXBwZXJDYWNoZSBhZGRXcmFwcGVyOnZpcnR1YWxNYWNoaW5l
IGZvckpTQ29udGV4dEdyb3VwUmVmOmdyb3VwXTsKLSAgICB9CiAgICAgcmV0dXJuIHZpcnR1YWxN
YWNoaW5lOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTV3JhcHBlck1h
cC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTV3JhcHBlck1h
cC5tbQkocmV2aXNpb24gMTQ0NzgwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1dy
YXBwZXJNYXAubW0JKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDkgQEAKICNpZiBKU0NfT0JK
Q19BUElfRU5BQkxFRAogCiAjaW1wb3J0ICJBUElDYXN0LmgiCisjaW1wb3J0ICJBUElTaGltcy5o
IgorI2ltcG9ydCAiSlNBUElXcmFwcGVyT2JqZWN0LmgiCisjaW1wb3J0ICJKU0NhbGxiYWNrT2Jq
ZWN0LmgiCiAjaW1wb3J0ICJKU0NvbnRleHRJbnRlcm5hbC5oIgogI2ltcG9ydCAiSlNXcmFwcGVy
TWFwLmgiCiAjaW1wb3J0ICJPYmpDQ2FsbGJhY2tGdW5jdGlvbi5oIgpAQCAtNDgsNyArNTEsOCBA
QCAtIChKU09iakNDbGFzc0luZm8qKWNsYXNzSW5mb0ZvckNsYXNzOihDCiAKIHN0YXRpYyB2b2lk
IHdyYXBwZXJGaW5hbGl6ZShKU09iamVjdFJlZiBvYmplY3QpCiB7Ci0gICAgWyhpZClKU09iamVj
dEdldFByaXZhdGUob2JqZWN0KSByZWxlYXNlXTsKKyAgICBKU0M6OkpTQVBJV3JhcHBlck9iamVj
dCogd3JhcHBlck9iamVjdCA9IEpTQzo6anNDYXN0PEpTQzo6SlNBUElXcmFwcGVyT2JqZWN0Kj4o
dG9KUyhvYmplY3QpKTsKKyAgICBbKGlkKXdyYXBwZXJPYmplY3QtPndyYXBwZWRPYmplY3QoKSBy
ZWxlYXNlXTsKIH0KIAogLy8gQWxsIHdyYXBwZXIgb2JqZWN0cyBhbmQgY29uc3RydWN0b3Igb2Jq
ZWN0cyBkZXJpdmUgZnJvbSB0aGlzIHR5cGUsIHNvIHdlIGNhbiBkZXRlY3QgJiB1bndyYXAgT2Jq
ZWN0aXZlLUMgaW5zdGFuY2VzL0NsYXNzZXMuCkBAIC0xMTQsMTcgKzExOCwzMSBAQCBkb25lOgog
ICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK3N0YXRpYyBKU09iamVjdFJlZiBtYWtlV3JhcHBlcihK
U0NvbnRleHRSZWYgY3R4LCBKU0NsYXNzUmVmIGpzQ2xhc3MsIGlkIHdyYXBwZWRPYmplY3QpCit7
CisgICAgSlNDOjpFeGVjU3RhdGUqIGV4ZWMgPSB0b0pTKGN0eCk7CisgICAgSlNDOjpBUElFbnRy
eVNoaW0gZW50cnlTaGltKGV4ZWMpOworCisgICAgQVNTRVJUKGpzQ2xhc3MpOworICAgIEpTQzo6
SlNDYWxsYmFja09iamVjdDxKU0M6OkpTQVBJV3JhcHBlck9iamVjdD4qIG9iamVjdCA9IEpTQzo6
SlNDYWxsYmFja09iamVjdDxKU0M6OkpTQVBJV3JhcHBlck9iamVjdD46OmNyZWF0ZShleGVjLCBl
eGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+
b2JqY1dyYXBwZXJPYmplY3RTdHJ1Y3R1cmUoKSwganNDbGFzcywgMCk7CisgICAgb2JqZWN0LT5z
ZXRXcmFwcGVkT2JqZWN0KHdyYXBwZWRPYmplY3QpOworICAgIGlmIChKU0M6OkpTT2JqZWN0KiBw
cm90b3R5cGUgPSBqc0NsYXNzLT5wcm90b3R5cGUoZXhlYykpCisgICAgICAgIG9iamVjdC0+c2V0
UHJvdG90eXBlKGV4ZWMtPmdsb2JhbERhdGEoKSwgcHJvdG90eXBlKTsKKworICAgIHJldHVybiB0
b1JlZihvYmplY3QpOworfQorCiAvLyBNYWtlIGFuIG9iamVjdCB0aGF0IGlzIGluIGFsbCB3YXlz
IGEgY29tcGxldGVseSB2YW5pbGxhIEphdmFTY3JpcHQgb2JqZWN0LAogLy8gb3RoZXIgdGhhbiB0
aGF0IGl0IGhhcyBhIG5hdGl2ZSBicmFuZCBzZXQgdGhhdCB3aWxsIGJlIGRpc3BsYXllZCBieSB0
aGUgZGVmYXVsdAogLy8gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZyBjb252ZXJzaW9uLgotc3Rh
dGljIEpTVmFsdWUgKmNyZWF0ZU9iamVjdFdpdGhDdXN0b21CcmFuZChKU0NvbnRleHQgKmNvbnRl
eHQsIE5TU3RyaW5nICpicmFuZCwgSlNDbGFzc1JlZiBwYXJlbnRDbGFzcyA9IDAsIHZvaWQqIHBy
aXZhdGVEYXRhID0gMCkKK3N0YXRpYyBKU1ZhbHVlICpjcmVhdGVPYmplY3RXaXRoQ3VzdG9tQnJh
bmQoSlNDb250ZXh0ICpjb250ZXh0LCBOU1N0cmluZyAqYnJhbmQsIEpTQ2xhc3NSZWYgcGFyZW50
Q2xhc3MgPSAwLCBDbGFzcyBjbHMgPSAwKQogewogICAgIEpTQ2xhc3NEZWZpbml0aW9uIGRlZmlu
aXRpb247CiAgICAgZGVmaW5pdGlvbiA9IGtKU0NsYXNzRGVmaW5pdGlvbkVtcHR5OwogICAgIGRl
ZmluaXRpb24uY2xhc3NOYW1lID0gW2JyYW5kIFVURjhTdHJpbmddOwogICAgIGRlZmluaXRpb24u
cGFyZW50Q2xhc3MgPSBwYXJlbnRDbGFzczsKICAgICBKU0NsYXNzUmVmIGNsYXNzUmVmID0gSlND
bGFzc0NyZWF0ZSgmZGVmaW5pdGlvbik7Ci0gICAgSlNPYmplY3RSZWYgcmVzdWx0ID0gSlNPYmpl
Y3RNYWtlKFtjb250ZXh0IGdsb2JhbENvbnRleHRSZWZdLCBjbGFzc1JlZiwgcHJpdmF0ZURhdGEp
OworICAgIEpTT2JqZWN0UmVmIHJlc3VsdCA9IG1ha2VXcmFwcGVyKFtjb250ZXh0IGdsb2JhbENv
bnRleHRSZWZdLCBjbGFzc1JlZiwgY2xzKTsKICAgICBKU0NsYXNzUmVsZWFzZShjbGFzc1JlZik7
CiAgICAgcmV0dXJuIFtbSlNWYWx1ZSBhbGxvY10gaW5pdFdpdGhWYWx1ZTpyZXN1bHQgaW5Db250
ZXh0OmNvbnRleHRdOwogfQpAQCAtNDA3LDcgKzQyNSw3IEBAIC0gKEpTVmFsdWUgKil3cmFwcGVy
Rm9yT2JqZWN0OihpZClvYmplY3QKICAgICAgICAgW3NlbGYgcmVhbGxvY2F0ZUNvbnN0cnVjdG9y
QW5kT3JQcm90b3R5cGVdOwogICAgIEFTU0VSVCghIW1fcHJvdG90eXBlKTsKIAotICAgIEpTT2Jq
ZWN0UmVmIHdyYXBwZXIgPSBKU09iamVjdE1ha2UoW21fY29udGV4dCBnbG9iYWxDb250ZXh0UmVm
XSwgbV9jbGFzc1JlZiwgW29iamVjdCByZXRhaW5dKTsKKyAgICBKU09iamVjdFJlZiB3cmFwcGVy
ID0gbWFrZVdyYXBwZXIoW21fY29udGV4dCBnbG9iYWxDb250ZXh0UmVmXSwgbV9jbGFzc1JlZiwg
W29iamVjdCByZXRhaW5dKTsKICAgICBKU09iamVjdFNldFByb3RvdHlwZShbbV9jb250ZXh0IGds
b2JhbENvbnRleHRSZWZdLCB3cmFwcGVyLCB0b1JlZihtX3Byb3RvdHlwZS5nZXQoKSkpOwogICAg
IHJldHVybiBbSlNWYWx1ZSB2YWx1ZVdpdGhWYWx1ZTp3cmFwcGVyIGluQ29udGV4dDptX2NvbnRl
eHRdOwogfQpAQCAtNTExLDcgKzUyOSw3IEBAIGlkIHRyeVVud3JhcE9iamNPYmplY3QoSlNHbG9i
YWxDb250ZXh0UmUKICAgICBKU09iamVjdFJlZiBvYmplY3QgPSBKU1ZhbHVlVG9PYmplY3QoY29u
dGV4dCwgdmFsdWUsICZleGNlcHRpb24pOwogICAgIEFTU0VSVCghZXhjZXB0aW9uKTsKICAgICBp
ZiAoSlNWYWx1ZUlzT2JqZWN0T2ZDbGFzcyhjb250ZXh0LCBvYmplY3QsIHdyYXBwZXJDbGFzcygp
KSkKLSAgICAgICAgcmV0dXJuIChpZClKU09iamVjdEdldFByaXZhdGUob2JqZWN0KTsKKyAgICAg
ICAgcmV0dXJuIChpZClKU0M6OmpzQ2FzdDxKU0M6OkpTQVBJV3JhcHBlck9iamVjdCo+KHRvSlMo
b2JqZWN0KSktPndyYXBwZWRPYmplY3QoKTsKICAgICBpZiAoaWQgdGFyZ2V0ID0gdHJ5VW53cmFw
QmxvY2soY29udGV4dCwgb2JqZWN0KSkKICAgICAgICAgcmV0dXJuIHRhcmdldDsKICAgICByZXR1
cm4gbmlsOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KYXZhU2NyaXB0Q29yZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSmF2YVNjcmlwdENvcmUu
aAkocmV2aXNpb24gMTQ0NzgwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KYXZhU2Ny
aXB0Q29yZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3IEBACiAKICNpbXBvcnQgIkpT
Q29udGV4dC5oIgogI2ltcG9ydCAiSlNWYWx1ZS5oIgorI2ltcG9ydCAiSlNNYW5hZ2VkVmFsdWUu
aCIKICNpbXBvcnQgIkpTVmlydHVhbE1hY2hpbmUuaCIKICNpbXBvcnQgIkpTRXhwb3J0LmgiCiAK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFwaS5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGkubW0JKHJldmlz
aW9uIDE0NDc4MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFwaS5t
bQkod29ya2luZyBjb3B5KQpAQCAtMjMsNyArMjMsOCBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCiAgKi8K
IAotI2ltcG9ydCAiSmF2YVNjcmlwdENvcmUuaCIKKyNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLmg+CisjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9KU0Jhc2VQcml2YXRlLmg+
CiAKIGV4dGVybiAiQyIgYm9vbCBfQmxvY2tfaGFzX3NpZ25hdHVyZShpZCk7CiBleHRlcm4gIkMi
IGNvbnN0IGNoYXIgKiBfQmxvY2tfc2lnbmF0dXJlKGlkKTsKQEAgLTEwMSw2ICsxMDIsOCBAQCBi
b29sIHRlc3RYWVpUZXN0ZWQgPSBmYWxzZTsKIEBwcm90b2NvbCBUZXh0WFlaIDxKU0V4cG9ydD4K
IEBwcm9wZXJ0eSBpbnQgeDsKIEBwcm9wZXJ0eSAocmVhZG9ubHkpIGludCB5OworQHByb3BlcnR5
IEpTVmFsdWUgKm9uY2xpY2s7CitAcHJvcGVydHkgSlNWYWx1ZSAqd2Vha09uY2xpY2s7CiAtICh2
b2lkKXRlc3Q6KE5TU3RyaW5nICopbWVzc2FnZTsKIEBlbmQKIApAQCAtMTA4LDkgKzExMSwxMyBA
QCBAaW50ZXJmYWNlIFRleHRYWVogOiBOU09iamVjdCA8VGV4dFhZWj4KIEBwcm9wZXJ0eSBpbnQg
eDsKIEBwcm9wZXJ0eSBpbnQgeTsKIEBwcm9wZXJ0eSBpbnQgejsKKy0gKHZvaWQpY2xpY2s7CiBA
ZW5kCiAKLUBpbXBsZW1lbnRhdGlvbiBUZXh0WFlaCitAaW1wbGVtZW50YXRpb24gVGV4dFhZWiB7
CisgICAgSlNNYW5hZ2VkVmFsdWUgKm1fd2Vha09uY2xpY2tIYW5kbGVyOworICAgIEpTTWFuYWdl
ZFZhbHVlICptX29uY2xpY2tIYW5kbGVyOworfQogQHN5bnRoZXNpemUgeDsKIEBzeW50aGVzaXpl
IHk7CiBAc3ludGhlc2l6ZSB6OwpAQCAtMTE4LDYgKzEyNSwzMSBAQCAtICh2b2lkKXRlc3Q6KE5T
U3RyaW5nICopbWVzc2FnZQogewogICAgIHRlc3RYWVpUZXN0ZWQgPSBbbWVzc2FnZSBpc0VxdWFs
OkAidGVzdCJdICYmIHggPT0gMTMgJiB5ID09IDQgJiYgeiA9PSA1OwogfQorLSAodm9pZClzZXRX
ZWFrT25jbGljazooSlNWYWx1ZSAqKXZhbHVlCit7CisgICAgbV93ZWFrT25jbGlja0hhbmRsZXIg
PSBbSlNNYW5hZ2VkVmFsdWUgd2Vha1ZhbHVlV2l0aFZhbHVlOnZhbHVlXTsKK30KKworLSAodm9p
ZClzZXRPbmNsaWNrOihKU1ZhbHVlICopdmFsdWUKK3sKKyAgICBtX29uY2xpY2tIYW5kbGVyID0g
W0pTTWFuYWdlZFZhbHVlIG1hbmFnZWRWYWx1ZVdpdGhWYWx1ZTp2YWx1ZSBvd25lcjpzZWxmXTsK
K30KKy0gKEpTVmFsdWUgKil3ZWFrT25jbGljaworeworICAgIHJldHVybiBbbV93ZWFrT25jbGlj
a0hhbmRsZXIgdmFsdWVdOworfQorLSAoSlNWYWx1ZSAqKW9uY2xpY2sKK3sKKyAgICByZXR1cm4g
W21fb25jbGlja0hhbmRsZXIgdmFsdWVdOworfQorLSAodm9pZCljbGljaworeworICAgIGlmICgh
bV9vbmNsaWNrSGFuZGxlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgSlNWYWx1ZSAqZnVuY3Rp
b24gPSBbbV9vbmNsaWNrSGFuZGxlciB2YWx1ZV07CisgICAgW2Z1bmN0aW9uIGNhbGxXaXRoQXJn
dW1lbnRzOltOU0FycmF5IGFycmF5XV07Cit9CiBAZW5kCiAKIHN0YXRpYyB2b2lkIGNoZWNrUmVz
dWx0KE5TU3RyaW5nICpkZXNjcmlwdGlvbiwgYm9vbCBwYXNzZWQpCkBAIC00OTMsNiArNTI1LDYw
IEBAIHZvaWQgdGVzdE9iamVjdGl2ZUNBUEkoKQogICAgICAgICBKU1ZhbHVlICpyZXN1bHQgPSBb
Y29udGV4dDEgZXZhbHVhdGVTY3JpcHQ6QCJwYXNzVmFsdWVCZXR3ZWVuQ29udGV4dHMiXTsKICAg
ICAgICAgY2hlY2tSZXN1bHQoQCJbdmFsdWUgaXNFcXVhbFRvT2JqZWN0OnJlc3VsdF0iLCBbdmFs
dWUgaXNFcXVhbFRvT2JqZWN0OnJlc3VsdF0pOwogICAgIH0KKworICAgIEBhdXRvcmVsZWFzZXBv
b2wgeworICAgICAgICBKU0NvbnRleHQgKmNvbnRleHQgPSBbW0pTQ29udGV4dCBhbGxvY10gaW5p
dF07CisgICAgICAgIFRleHRYWVogKnRlc3RYWVogPSBbW1RleHRYWVogYWxsb2NdIGluaXRdOwor
CisgICAgICAgIEBhdXRvcmVsZWFzZXBvb2wgeworICAgICAgICAgICAgY29udGV4dFtAInRlc3RY
WVoiXSA9IHRlc3RYWVo7CisKKyAgICAgICAgICAgIFtjb250ZXh0IGV2YWx1YXRlU2NyaXB0OkAi
IFwKKyAgICAgICAgICAgICAgICBkaWRDbGljayA9IGZhbHNlOyBcCisgICAgICAgICAgICAgICAg
dGVzdFhZWi5vbmNsaWNrID0gZnVuY3Rpb24oKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgZGlk
Q2xpY2sgPSB0cnVlOyBcCisgICAgICAgICAgICAgICAgfTsgXAorICAgICAgICAgICAgICAgICBc
CisgICAgICAgICAgICAgICAgdGVzdFhZWi53ZWFrT25jbGljayA9IGZ1bmN0aW9uKCkgeyBcCisg
ICAgICAgICAgICAgICAgICAgIHJldHVybiAnZm9vJzsgXAorICAgICAgICAgICAgICAgIH07IFwK
KyAgICAgICAgICAgICJdOworICAgICAgICB9CisKKyAgICAgICAgQGF1dG9yZWxlYXNlcG9vbCB7
CisgICAgICAgICAgICBbdGVzdFhZWiBjbGlja107CisgICAgICAgICAgICBKU1ZhbHVlICpyZXN1
bHQgPSBbY29udGV4dCBldmFsdWF0ZVNjcmlwdDpAImRpZENsaWNrIl07CisgICAgICAgICAgICBj
aGVja1Jlc3VsdChAIkV2ZW50IGhhbmRsZXIgb25jbGljayIsIFtyZXN1bHQgdG9Cb29sXSk7Cisg
ICAgICAgIH0KKworICAgICAgICBKU1N5bmNocm9ub3VzR2FyYmFnZUNvbGxlY3QoW2NvbnRleHQg
Z2xvYmFsQ29udGV4dFJlZl0pOworCisgICAgICAgIEBhdXRvcmVsZWFzZXBvb2wgeworICAgICAg
ICAgICAgSlNWYWx1ZSAqcmVzdWx0ID0gW2NvbnRleHQgZXZhbHVhdGVTY3JpcHQ6QCJ0ZXN0WFla
Lm9uY2xpY2siXTsKKyAgICAgICAgICAgIGNoZWNrUmVzdWx0KEAib25jbGljayBzdGlsbCBhcm91
bmQgYWZ0ZXIgR0MiLCAhKFtyZXN1bHQgaXNOdWxsXSB8fCBbcmVzdWx0IGlzVW5kZWZpbmVkXSkp
OworICAgICAgICB9CisKKworICAgICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKKyAgICAgICAgICAg
IEpTVmFsdWUgKnJlc3VsdCA9IFtjb250ZXh0IGV2YWx1YXRlU2NyaXB0OkAidGVzdFhZWi53ZWFr
T25jbGljayJdOworICAgICAgICAgICAgY2hlY2tSZXN1bHQoQCJ3ZWFrT25jbGljayBub3QgYXJv
dW5kIGFmdGVyIEdDIiwgW3Jlc3VsdCBpc051bGxdIHx8IFtyZXN1bHQgaXNVbmRlZmluZWRdKTsK
KyAgICAgICAgfQorCisgICAgICAgIEBhdXRvcmVsZWFzZXBvb2wgeworICAgICAgICAgICAgW2Nv
bnRleHQgZXZhbHVhdGVTY3JpcHQ6QCIgXAorICAgICAgICAgICAgICAgIGRpZENsaWNrID0gZmFs
c2U7IFwKKyAgICAgICAgICAgICAgICB0ZXN0WFlaID0gbnVsbDsgXAorICAgICAgICAgICAgIl07
CisgICAgICAgIH0KKworICAgICAgICBKU1N5bmNocm9ub3VzR2FyYmFnZUNvbGxlY3QoW2NvbnRl
eHQgZ2xvYmFsQ29udGV4dFJlZl0pOworCisgICAgICAgIEBhdXRvcmVsZWFzZXBvb2wgeworICAg
ICAgICAgICAgW3Rlc3RYWVogY2xpY2tdOworICAgICAgICAgICAgSlNWYWx1ZSAqcmVzdWx0ID0g
W2NvbnRleHQgZXZhbHVhdGVTY3JpcHQ6QCJkaWRDbGljayJdOworICAgICAgICAgICAgY2hlY2tS
ZXN1bHQoQCJFdmVudCBoYW5kbGVyIG9uY2xpY2sgZG9lc24ndCBmaXJlIiwgIVtyZXN1bHQgdG9C
b29sXSk7CisgICAgICAgIH0KKyAgICB9CiB9CiAKICNlbHNlCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnZjcHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvagkocmV2aXNp
b24gMTQ0NzgwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJv
ai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2oJKHdvcmtpbmcgY29weSkKQEAg
LTE0MTQsNiArMTQxNCwxNCBAQAogCQkJCT4KIAkJCTwvRmlsZT4KIAkJCTxGaWxlCisJCQkJUmVs
YXRpdmVQYXRoPSIuLlwuLlxBUElcSlNBUElXcmFwcGVyT2JqZWN0LmNwcCIKKwkJCQk+CisJCQk8
L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cQVBJXEpTQVBJV3JhcHBl
ck9iamVjdC5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRo
PSIuLlwuLlxBUElcSlNCYXNlLmNwcCIKIAkJCQk+CiAJCQk8L0ZpbGU+CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTQ0NzgwKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcg
Y29weSkKQEAgLTgyOCw2ICs4MjgsOCBAQAogCQlDMjQwMzA1NTE0QjQwNEU2MDA3OUVCNjQgLyog
Q29waWVkU3BhY2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQzI0MDMwNTMxNEI0MDRDOTAwNzlFQjY0IC8qIENvcGllZFNwYWNlLmNwcCAqLzsgfTsK
IAkJQzI0RDMxRTIxNjFDRDY5NTAwMkFBNERCIC8qIEhlYXBTdGF0aXN0aWNzLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyNEQzMUUwMTYxQ0Q2OTUw
MDJBQTREQiAvKiBIZWFwU3RhdGlzdGljcy5jcHAgKi87IH07CiAJCUMyNEQzMUUzMTYxQ0Q2OTUw
MDJBQTREQiAvKiBIZWFwU3RhdGlzdGljcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQzI0RDMxRTExNjFDRDY5NTAwMkFBNERCIC8qIEhlYXBTdGF0aXN0
aWNzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJ
QzI1RDcwOUIxNkRFOTlGNDAwRkNBNkJDIC8qIEpTTWFuYWdlZFZhbHVlLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzI1RDcwOTkxNkRFOTlGNDAwRkNB
NkJDIC8qIEpTTWFuYWdlZFZhbHVlLm1tICovOyB9OworCQlDMjVENzA5QzE2REU5OUY0MDBGQ0E2
QkMgLyogSlNNYW5hZ2VkVmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEMyNUQ3MDlBMTZERTk5RjQwMEZDQTZCQyAvKiBKU01hbmFnZWRWYWx1ZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsKIAkJQzI1RjhC
Q0QxNTc1NDRBOTAwMjQ1QjcxIC8qIEluY3JlbWVudGFsU3dlZXBlci5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMjVGOEJDQjE1NzU0NEE5MDAyNDVC
NzEgLyogSW5jcmVtZW50YWxTd2VlcGVyLmNwcCAqLzsgfTsKIAkJQzI1RjhCQ0UxNTc1NDRBOTAw
MjQ1QjcxIC8qIEluY3JlbWVudGFsU3dlZXBlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQzI1RjhCQ0MxNTc1NDRBOTAwMjQ1QjcxIC8qIEluY3JlbWVu
dGFsU3dlZXBlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCUMyQTdGNjg4MTYwNDMyRDQwMEY3NkI5OCAvKiBKU0Rlc3RydWN0aWJsZU9iamVjdC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzJBN0Y2ODcx
NjA0MzJENDAwRjc2Qjk4IC8qIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0LmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTgzNiw2ICs4MzgsOCBAQAogCQlD
MkM4RDAyRDE0QTNDNkUwMDA1NzhFNjUgLyogQ29waWVkU3BhY2VJbmxpbmVzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMkM4RDAyQjE0QTNDNkIyMDA1
NzhFNjUgLyogQ29waWVkU3BhY2VJbmxpbmVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQzJDOEQwMzAxNEEzQ0VGQzAwNTc4RTY1IC8qIENvcGll
ZEJsb2NrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBD
MkM4RDAyRTE0QTNDRUZDMDA1NzhFNjUgLyogQ29waWVkQmxvY2suaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDMkM4RDAzMTE0QTNDRUZDMDA1NzhF
NjUgLyogSGVhcEJsb2NrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDMkM4RDAyRjE0QTNDRUZDMDA1NzhFNjUgLyogSGVhcEJsb2NrLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQzJDRjM5QzExNkUxNUE4
MTAwREQ2OUJFIC8qIEpTQVBJV3JhcHBlck9iamVjdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMkNGMzlCRjE2RTE1QTgxMDBERDY5QkUgLyogSlNB
UElXcmFwcGVyT2JqZWN0LmNwcCAqLzsgfTsKKwkJQzJDRjM5QzIxNkUxNUE4MTAwREQ2OUJFIC8q
IEpTQVBJV3JhcHBlck9iamVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQzJDRjM5QzAxNkUxNUE4MTAwREQ2OUJFIC8qIEpTQVBJV3JhcHBlck9iamVj
dC5oICovOyB9OwogCQlDMkQ1OEMzNDE1OTEyRkVFMDAyMUE4NDQgLyogR0NBY3Rpdml0eUNhbGxi
YWNrLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMy
RDU4QzMzMTU5MTJGRUUwMDIxQTg0NCAvKiBHQ0FjdGl2aXR5Q2FsbGJhY2suY3BwICovOyB9Owog
CQlDMkU1MjZCRDE1OTBFRjAwMDA1NEU0OEQgLyogSGVhcFRpbWVyLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyRTUyNkJCMTU5MEVGMDAwMDU0RTQ4
RCAvKiBIZWFwVGltZXIuY3BwICovOyB9OwogCQlDMkU1MjZCRTE1OTBFRjAwMDA1NEU0OEQgLyog
SGVhcFRpbWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBDMkU1MjZCQzE1OTBFRjAwMDA1NEU0OEQgLyogSGVhcFRpbWVyLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTE3MjEsNiArMTcyNSw4IEBACiAJ
CUMyNDAzMDUzMTRCNDA0QzkwMDc5RUI2NCAvKiBDb3BpZWRTcGFjZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb3BpZWRTcGFjZS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUMyNEQzMUUwMTYxQ0Q2OTUwMDJBQTREQiAvKiBIZWFwU3RhdGlzdGlj
cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBIZWFwU3RhdGlzdGlj
cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMyNEQzMUUxMTYxQ0Q2OTUwMDJB
QTREQiAvKiBIZWFwU3RhdGlzdGljcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBIZWFwU3RhdGlzdGljcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMjVENzA5
OTE2REU5OUY0MDBGQ0E2QkMgLyogSlNNYW5hZ2VkVmFsdWUubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBKU01hbmFnZWRWYWx1ZS5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQzI1RDcwOUExNkRFOTlGNDAwRkNBNkJDIC8qIEpTTWFuYWdlZFZhbHVl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTTWFuYWdlZFZhbHVlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMyNUY4QkNCMTU3NTQ0QTkwMDI0NUI3MSAvKiBJ
bmNyZW1lbnRhbFN3ZWVwZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSW5jcmVtZW50YWxTd2VlcGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QzI1RjhCQ0MxNTc1NDRBOTAwMjQ1QjcxIC8qIEluY3JlbWVudGFsU3dlZXBlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbmNyZW1lbnRhbFN3ZWVwZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzJBN0Y2ODcxNjA0MzJENDAwRjc2Qjk4IC8qIEpTRGVzdHJ1
Y3RpYmxlT2JqZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRGVzdHJ1
Y3RpYmxlT2JqZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNzI5LDYgKzE3
MzUsOCBAQAogCQlDMkM4RDAyQjE0QTNDNkIyMDA1NzhFNjUgLyogQ29waWVkU3BhY2VJbmxpbmVz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvcGllZFNwYWNlSW5saW5lcy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMkM4RDAyRTE0QTNDRUZDMDA1NzhFNjUg
LyogQ29waWVkQmxvY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29waWVk
QmxvY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzJDOEQwMkYxNEEzQ0VGQzAw
NTc4RTY1IC8qIEhlYXBCbG9jay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBI
ZWFwQmxvY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzJDRjM5QkYxNkUxNUE4
MTAwREQ2OUJFIC8qIEpTQVBJV3JhcHBlck9iamVjdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBKU0FQSVdyYXBwZXJPYmplY3QuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlDMkNGMzlDMDE2RTE1QTgxMDBERDY5QkUgLyogSlNBUElXcmFwcGVyT2Jq
ZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQVBJV3JhcHBlck9iamVj
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMkQ1OEMzMzE1OTEyRkVFMDAyMUE4
NDQgLyogR0NBY3Rpdml0eUNhbGxiYWNrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEdDQWN0aXZpdHlDYWxsYmFjay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUMyRTUyNkJCMTU5MEVGMDAwMDU0RTQ4RCAvKiBIZWFwVGltZXIuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSGVhcFRpbWVyLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQzJFNTI2QkMxNTkwRUYwMDAwNTRFNDhEIC8qIEhlYXBUaW1lci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIZWFwVGltZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIyMDIsNiArMjIxMCwxMCBAQAogCQkJCUUxMjRBOEY2MEU1
NTU3NzUwMDMwOTFGMSAvKiBPcGFxdWVKU1N0cmluZy5jcHAgKi8sCiAJCQkJRTEyNEE4RjUwRTU1
NTc3NTAwMzA5MUYxIC8qIE9wYXF1ZUpTU3RyaW5nLmggKi8sCiAJCQkJNURFM0QwRjQwREQ4RERG
QjAwNDY4NzE0IC8qIFdlYktpdEF2YWlsYWJpbGl0eS5oICovLAorCQkJCUMyNUQ3MDk5MTZERTk5
RjQwMEZDQTZCQyAvKiBKU01hbmFnZWRWYWx1ZS5tbSAqLywKKwkJCQlDMjVENzA5QTE2REU5OUY0
MDBGQ0E2QkMgLyogSlNNYW5hZ2VkVmFsdWUuaCAqLywKKwkJCQlDMkNGMzlCRjE2RTE1QTgxMDBE
RDY5QkUgLyogSlNBUElXcmFwcGVyT2JqZWN0LmNwcCAqLywKKwkJCQlDMkNGMzlDMDE2RTE1QTgx
MDBERDY5QkUgLyogSlNBUElXcmFwcGVyT2JqZWN0LmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IEFQ
STsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0yOTE1LDYgKzI5MjcsNyBAQAogCQkJ
aXNhID0gUEJYSGVhZGVyc0J1aWxkUGhhc2U7CiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgz
NjQ3OwogCQkJZmlsZXMgPSAoCisJCQkJQzI1RDcwOUMxNkRFOTlGNDAwRkNBNkJDIC8qIEpTTWFu
YWdlZFZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NjAxNjFFMzBGM0E4M0MxMDBGODQ3MTAg
LyogQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY1NUYwRjUx
NEQxMDYzQzAwQUM3NjQ5IC8qIEFic3RyYWN0UEMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThD
M0U1MEUxNkY1Q0QwMEIzNDQ2MCAvKiBBUElDYXN0LmggaW4gSGVhZGVycyAqLywKQEAgLTMxNjUs
NiArMzE3OCw3IEBACiAJCQkJQkMxOEM0MkQwRTE2RjVDRDAwQjM0NDYwIC8qIEpTVmFyaWFibGVP
YmplY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2RTNDNjE1MTY3QkFCRDcwMDZENzYwQSAvKiBK
U1ZpcnR1YWxNYWNoaW5lLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzQ4MkU5MzExNkE3Q0FEMDAz
QjA3MTIgLyogSlNXZWFrT2JqZWN0TWFwUmVmSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAorCQkJ
CUMyQ0YzOUMyMTZFMTVBODEwMERENjlCRSAvKiBKU0FQSVdyYXBwZXJPYmplY3QuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUE3NDgyQjkzMTE2NzExNDcwMDNCMDcxMiAvKiBKU1dlYWtPYmplY3RNYXBS
ZWZQcml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDQyNTY2MjE1RURFOThEMDA2NkE0OUIg
LyogSlNXaXRoU2NvcGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2RTNDNjE5MTY3QkFCRUUwMDZE
NzYwQSAvKiBKU1dyYXBwZXJNYXAuaCBpbiBIZWFkZXJzICovLApAQCAtMzc4MCw2ICszNzk0LDcg
QEAKIAkJCQkwRkQzQzgyNjE0MTE1RDQwMDBGRDgxQ0IgLyogREZHRHJpdmVyLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTBGRjBGMTlFMTZCNzJBMEIwMDVERjk1QiAvKiBERkdFZGdlLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTBGQkMwQUU3MTQ5NkM3QzQwMEQ0RkJERCAvKiBERkdFeGl0UHJvZmls
ZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDMkNGMzlDMTE2RTE1QTgxMDBERDY5QkUgLyogSlNB
UElXcmFwcGVyT2JqZWN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMkJEQzE1MTUxQzVENEQw
MENEODkxMCAvKiBERkdGaXh1cFBoYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2RUM5REM3
MTMyOERGODIwMDJCMkFENyAvKiBERkdHcmFwaC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NkVD
OURDQjEzMjhERjgyMDAyQjJBRDcgLyogREZHSklUQ29tcGlsZXIuY3BwIGluIFNvdXJjZXMgKi8s
CkBAIC0zOTk2LDYgKzQwMTEsNyBAQAogCQkJCUJDQ0YwRDBDMEVGMEI4QTUwMDQxM0M4RiAvKiBT
dHJ1Y3R1cmVTdHViSW5mby5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjkxOUQyODE1ODU2Nzcz
MDA0QTRFN0QgLyogU3ltYm9sVGFibGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTczODY1NTUx
MTg2OTdCNDAwNTQwMjc5IC8qIFRodW5rR2VuZXJhdG9ycy5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQlDMjVENzA5QjE2REU5OUY0MDBGQ0E2QkMgLyogSlNNYW5hZ2VkVmFsdWUubW0gaW4gU291cmNl
cyAqLywKIAkJCQkxNEE0MkUzRjBGNEY2MEVFMDA1OTkwOTkgLyogVGltZW91dENoZWNrZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMEZGNDI3NEExNThFQkU5MTAwNENCOUZGIC8qIHVkaXM4Ni5j
IGluIFNvdXJjZXMgKi8sCiAJCQkJMEZGNDI3NDAxNThFQkU4QjAwNENCOUZGIC8qIHVkaXM4Nl9k
ZWNvZGUuYyBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAkocmV2aXNpb24gMTQ0NzgwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00Nyw2ICs0Nyw3IEBACiAjaW5jbHVkZSAiRnVuY3Rpb25Qcm90b3R5cGUuaCIKICNpbmNs
dWRlICJHZXR0ZXJTZXR0ZXIuaCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgorI2luY2x1ZGUg
IkpTQVBJV3JhcHBlck9iamVjdC5oIgogI2luY2x1ZGUgIkpTQWN0aXZhdGlvbi5oIgogI2luY2x1
ZGUgIkpTQm91bmRGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTQ2FsbGJhY2tDb25zdHJ1Y3Rvci5o
IgpAQCAtMjI5LDYgKzIzMCw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnJlc2V0KEpTVmFsdWUg
cHJvdG8KICAgICBtX2FyZ3VtZW50c1N0cnVjdHVyZS5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0
aGlzLCBBcmd1bWVudHM6OmNyZWF0ZVN0cnVjdHVyZShleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMs
IG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKSk7CiAgICAgbV9jYWxsYmFja0NvbnN0cnVjdG9yU3Ry
dWN0dXJlLnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIEpTQ2FsbGJhY2tDb25zdHJ1Y3Rv
cjo6Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgbV9vYmplY3RQcm90
b3R5cGUuZ2V0KCkpKTsKICAgICBtX2NhbGxiYWNrT2JqZWN0U3RydWN0dXJlLnNldChleGVjLT5n
bG9iYWxEYXRhKCksIHRoaXMsIEpTQ2FsbGJhY2tPYmplY3Q8SlNEZXN0cnVjdGlibGVPYmplY3Q+
OjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBtX29iamVjdFByb3Rv
dHlwZS5nZXQoKSkpOworICAgIG1fb2JqY1dyYXBwZXJPYmplY3RTdHJ1Y3R1cmUuc2V0KGV4ZWMt
Pmdsb2JhbERhdGEoKSwgdGhpcywgSlNDYWxsYmFja09iamVjdDxKU0FQSVdyYXBwZXJPYmplY3Q+
OjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBtX29iamVjdFByb3Rv
dHlwZS5nZXQoKSkpOwogCiAgICAgbV9hcnJheVByb3RvdHlwZS5zZXQoZXhlYy0+Z2xvYmFsRGF0
YSgpLCB0aGlzLCBBcnJheVByb3RvdHlwZTo6Y3JlYXRlKGV4ZWMsIHRoaXMsIEFycmF5UHJvdG90
eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBtX29iamVjdFBy
b3RvdHlwZS5nZXQoKSkpKTsKICAgICAKQEAgLTUxMSw2ICs1MTMsNyBAQCB2b2lkIEpTR2xvYmFs
T2JqZWN0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsCiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmpl
Y3QtPm1fY2FsbGJhY2tDb25zdHJ1Y3RvclN0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQo
JnRoaXNPYmplY3QtPm1fY2FsbGJhY2tGdW5jdGlvblN0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5h
cHBlbmQoJnRoaXNPYmplY3QtPm1fY2FsbGJhY2tPYmplY3RTdHJ1Y3R1cmUpOworICAgIHZpc2l0
b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX29iamNXcmFwcGVyT2JqZWN0U3RydWN0dXJlKTsKICAg
ICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9kYXRlU3RydWN0dXJlKTsKICAgICB2aXNp
dG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9udWxsUHJvdG90eXBlT2JqZWN0U3RydWN0dXJlKTsK
ICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9lcnJvclN0cnVjdHVyZSk7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgJKHJl
dmlzaW9uIDE0NDc4MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
T2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTE0MSw2ICsxNDEsNyBAQCBwcm90ZWN0ZWQ6CiAg
ICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9jYWxsYmFja0NvbnN0cnVjdG9yU3RydWN0dXJl
OwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fY2FsbGJhY2tGdW5jdGlvblN0cnVjdHVy
ZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2NhbGxiYWNrT2JqZWN0U3RydWN0dXJl
OworICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fb2JqY1dyYXBwZXJPYmplY3RTdHJ1Y3R1
cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9kYXRlU3RydWN0dXJlOwogICAgIFdy
aXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fbnVsbFByb3RvdHlwZU9iamVjdFN0cnVjdHVyZTsKICAg
ICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2Vycm9yU3RydWN0dXJlOwpAQCAtMzAwLDYgKzMw
MSw3IEBAIHB1YmxpYzoKICAgICBTdHJ1Y3R1cmUqIGNhbGxiYWNrQ29uc3RydWN0b3JTdHJ1Y3R1
cmUoKSBjb25zdCB7IHJldHVybiBtX2NhbGxiYWNrQ29uc3RydWN0b3JTdHJ1Y3R1cmUuZ2V0KCk7
IH0KICAgICBTdHJ1Y3R1cmUqIGNhbGxiYWNrRnVuY3Rpb25TdHJ1Y3R1cmUoKSBjb25zdCB7IHJl
dHVybiBtX2NhbGxiYWNrRnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUq
IGNhbGxiYWNrT2JqZWN0U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9jYWxsYmFja09iamVj
dFN0cnVjdHVyZS5nZXQoKTsgfQorICAgIFN0cnVjdHVyZSogb2JqY1dyYXBwZXJPYmplY3RTdHJ1
Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX29iamNXcmFwcGVyT2JqZWN0U3RydWN0dXJlLmdldCgp
OyB9CiAgICAgU3RydWN0dXJlKiBkYXRlU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9kYXRl
U3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiBudWxsUHJvdG90eXBlT2JqZWN0U3Ry
dWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9udWxsUHJvdG90eXBlT2JqZWN0U3RydWN0dXJlLmdl
dCgpOyB9CiAgICAgU3RydWN0dXJlKiBlcnJvclN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1f
ZXJyb3JTdHJ1Y3R1cmUuZ2V0KCk7IH0K
</data>
<flag name="commit-queue"
          id="212534"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>191542</attachid>
            <date>2013-03-05 12:53:05 -0800</date>
            <delta_ts>2013-03-05 13:37:54 -0800</delta_ts>
            <desc>build fix</desc>
            <filename>the.patch</filename>
            <type>text/plain</type>
            <size>50003</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTQ0Nzg5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwNSBA
QAorMjAxMy0wMy0wNSAgTWFyayBIYWhuZW5iZXJnICA8bWhhaG5lbmJlcmdAYXBwbGUuY29tPgor
CisgICAgICAgIE9iamVjdGl2ZS1DIEFQSTogTmVlZCBhIGdvb2Qgd2F5IHRvIHJlZmVyZW5jZSBl
dmVudCBoYW5kbGVycyB3aXRob3V0IGNhdXNpbmcgY3ljbGVzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTEwODgKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBKU01hbmFnZWRWYWx1ZSBpcyBsaWtlIGEgc3Bl
Y2lhbCBraW5kIG9mIHdlYWsgdmFsdWUuIFdoZW4geW91IGNyZWF0ZSBhIEpTTWFuYWdlZFZhbHVl
LCB5b3UgY2FuCisgICAgICAgIHN1cHBseSBhbiBPYmplY3RpdmUtQyBvYmplY3QgYXMgaXRzICJv
d25lciIuIEFzIGxvbmcgYXMgdGhlIE9iamVjdGl2ZS1DIG93bmVyIG9iamVjdCByZW1haW5zCisg
ICAgICAgIGFsaXZlIGFuZCBpdHMgd3JhcHBlciByZW1haW5zIGFjY2Vzc2libGUgdG8gdGhlIEpT
QyBnYXJiYWdlIGNvbGxlY3RvciAoZS5nLiBieSBiZWluZyBtYXJrZWQgYnkgCisgICAgICAgIHRo
ZSBnbG9iYWwgb2JqZWN0KSwgdGhlIHJlZmVyZW5jZSB0byB0aGUgSmF2YVNjcmlwdCB2YWx1ZSBp
cyBzdHJvbmcuIEFzIHNvb24gYXMgdGhlIE9iamVjdGl2ZS1DCisgICAgICAgIG93bmVyIGlzIGRl
YWxsb2NhdGVkIG9yIGl0cyB3cmFwcGVyIGJlY29tZXMgaW5hY2Nlc3NpYmxlIHRvIHRoZSBnYXJi
YWdlIGNvbGxlY3RvciwgdGhlIHJlZmVyZW5jZQorICAgICAgICBiZWNvbWVzIHdlYWsuCisKKyAg
ICAgICAgSWYgeW91IGRvIG5vdCBzdXBwbHkgYW4gb3duZXIgb3IgeW91IHVzZSB0aGUgd2Vha1Zh
bHVlV2l0aFZhbHVlOiBjb252ZW5pZW5jZSBjbGFzcyBtZXRob2QsIHRoZQorICAgICAgICByZXR1
cm5lZCBKU01hbmFnZWRWYWx1ZSBiZWhhdmVzIGFzIGEgbm9ybWFsIHdlYWsgcmVmZXJlbmNlLgor
CisgICAgICAgIFRoaXMgbmV3IGNsYXNzIGFsbG93cyBjbGllbnRzIHRvIG1haW50YWluIHJlZmVy
ZW5jZXMgdG8gSmF2YVNjcmlwdCB2YWx1ZXMgaW4gdGhlIE9iamVjdGl2ZS1DCisgICAgICAgIGhl
YXAgd2l0aG91dCBjcmVhdGluZyByZWZlcmVuY2UgY3ljbGVzL2xlYWtpbmcgbWVtb3J5LgorCisg
ICAgICAgICogQVBJL0pTQVBJV3JhcHBlck9iamVjdC5jcHA6IEFkZGVkLgorICAgICAgICAoSlND
KToKKyAgICAgICAgKEpTQzo6OjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpKU0FQ
SVdyYXBwZXJPYmplY3Q6OkpTQVBJV3JhcHBlck9iamVjdCk6IFRoaXMgaXMgYSBzcGVjaWFsIEpT
T2JqZWN0IGZvciB0aGUgT2JqZWN0aXZlLUMgQVBJIHRoYXQga25vd3MKKyAgICAgICAgZm9yIHRo
ZSBwdXJwb3NlcyBvZiBnYXJiYWdlIGNvbGxlY3Rpb24vbWFya2luZyB0aGF0IGl0IHdyYXBzIGFu
IG9wYXF1ZSBPYmplY3RpdmUtQyBvYmplY3QuCisgICAgICAgIChKU0M6OkpTQVBJV3JhcHBlck9i
amVjdDo6dmlzaXRDaGlsZHJlbik6IFdlIGFkZCB0aGUgcG9pbnRlciB0byB0aGUgd3JhcHBlZCBP
YmplY3RpdmUtQyBvYmplY3QgdG8gdGhlIHNldCBvZgorICAgICAgICBvcGFxdWUgcm9vdHMgc28g
dGhhdCB0aGUgd2VhayBoYW5kbGUgb3duZXIgZm9yIEpTTWFuYWdlZFZhbHVlcyBjYW4gZmluZCBp
dCBsYXRlci4KKyAgICAgICAgKiBBUEkvSlNBUElXcmFwcGVyT2JqZWN0Lmg6IEFkZGVkLgorICAg
ICAgICAoSlNDKToKKyAgICAgICAgKEpTQVBJV3JhcHBlck9iamVjdCk6CisgICAgICAgIChKU0M6
OkpTQVBJV3JhcHBlck9iamVjdDo6d3JhcHBlZE9iamVjdCk6CisgICAgICAgIChKU0M6OkpTQVBJ
V3JhcHBlck9iamVjdDo6c2V0V3JhcHBlZE9iamVjdCk6CisgICAgICAgICogQVBJL0pTQmFzZS5j
cHA6CisgICAgICAgIChKU1N5bmNocm9ub3VzR2FyYmFnZUNvbGxlY3QpOgorICAgICAgICAqIEFQ
SS9KU0Jhc2VQcml2YXRlLmg6CisgICAgICAgICogQVBJL0pTQ2FsbGJhY2tPYmplY3QuY3BwOgor
ICAgICAgICAoSlNDKToKKyAgICAgICAgKiBBUEkvSlNDYWxsYmFja09iamVjdC5oOgorICAgICAg
ICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0OjpkZXN0cm95KTogTW92ZWQgdGhpcyB0byB0aGUgaGVh
ZGVyIHNvIHRoYXQgd2UgZG9uJ3QgZ2V0IGxpbmsgZXJyb3JzIHdpdGggSlNBUElXcmFwcGVyT2Jq
ZWN0LgorICAgICAgICAqIEFQSS9KU0NvbnRleHQubW06CisgICAgICAgICgtW0pTQ29udGV4dCBp
bml0V2l0aFZpcnR1YWxNYWNoaW5lOl0pOiBXZSB3ZXJlbid0IGFkZGluZyBtYW51YWxseSBhbGxv
Y2F0ZWQvaW5pdGlhbGl6ZWQgSlNWaXJ0dWFsTWFjaGluZSBvYmplY3RzIHRvIAorICAgICAgICB0
aGUgZ2xvYmFsIGNhY2hlIG9mIHZpcnR1YWwgbWFjaGluZXMuIFRoZSBpbml0IG1ldGhvZHMgaGFu
ZGxlIHRoaXMgbm93IHJhdGhlciB0aGFuIGNvbnRleHRXaXRoR2xvYmFsQ29udGV4dFJlZiwgc2lu
Y2UgCisgICAgICAgIG5vdCBldmVyeW9uZSBpcyBndWFyYW50ZWVkIHRvIHVzZSB0aGUgbGF0dGVy
LgorICAgICAgICAoLVtKU0NvbnRleHQgaW5pdFdpdGhHbG9iYWxDb250ZXh0UmVmOl0pOgorICAg
ICAgICAoK1tKU0NvbnRleHQgY29udGV4dFdpdGhHbG9iYWxDb250ZXh0UmVmOl0pOgorICAgICAg
ICAqIEFQSS9KU01hbmFnZWRWYWx1ZS5oOiBBZGRlZC4KKyAgICAgICAgKiBBUEkvSlNNYW5hZ2Vk
VmFsdWUubW06IEFkZGVkLgorICAgICAgICAoSlNNYW5hZ2VkVmFsdWVIYW5kbGVPd25lcik6Cisg
ICAgICAgIChtYW5hZ2VkVmFsdWVIYW5kbGVPd25lcik6CisgICAgICAgICgrW0pTTWFuYWdlZFZh
bHVlIHdlYWtWYWx1ZVdpdGhWYWx1ZTpdKToKKyAgICAgICAgKCtbSlNNYW5hZ2VkVmFsdWUgbWFu
YWdlZFZhbHVlV2l0aFZhbHVlOm93bmVyOl0pOgorICAgICAgICAoLVtKU01hbmFnZWRWYWx1ZSBp
bml0XSk6IFdlIGV4cGxpY2l0bHkgY2FsbCB0aGUgQVJDIGVudHJ5cG9pbnRzIHRvIGluaXRpYWxp
emUvZ2V0IHRoZSB3ZWFrIG93bmVyIGZpZWxkIHNpbmNlIHdlIGRvbid0IAorICAgICAgICB1c2Ug
QVJDIHdoZW4gYnVpbGRpbmcgb3VyIGZyYW1ld29yay4KKyAgICAgICAgKC1bSlNNYW5hZ2VkVmFs
dWUgaW5pdFdpdGhWYWx1ZTpdKToKKyAgICAgICAgKC1bSlNNYW5hZ2VkVmFsdWUgaW5pdFdpdGhW
YWx1ZTpvd25lcjpdKToKKyAgICAgICAgKC1bSlNNYW5hZ2VkVmFsdWUgZGVhbGxvY10pOgorICAg
ICAgICAoLVtKU01hbmFnZWRWYWx1ZSB2YWx1ZV0pOgorICAgICAgICAoLVtKU01hbmFnZWRWYWx1
ZSB3ZWFrT3duZXJdKToKKyAgICAgICAgKEpTTWFuYWdlZFZhbHVlSGFuZGxlT3duZXI6OmlzUmVh
Y2hhYmxlRnJvbU9wYXF1ZVJvb3RzKTogSWYgdGhlIE9iamVjdGl2ZS1DIG93bmVyIGlzIHN0aWxs
IGFsaXZlIChpLmUuIGxvYWRpbmcgdGhlIHdlYWsgZmllbGQKKyAgICAgICAgcmV0dXJucyBub24t
bmlsKSBhbmQgdGhhdCB2YWx1ZSB3YXMgYWRkZWQgdG8gdGhlIHNldCBvZiBvcGFxdWUgcm9vdHMg
YnkgdGhlIHdyYXBwZXIgZm9yIHRoYXQgT2JqZWN0aXZlLUMgb3duZXIsIHRoZW4gdGhlIHRoZSAK
KyAgICAgICAgSlNPYmplY3QgdG8gd2hpY2ggdGhlIEpTTWFuYWdlZE9iamVjdCByZWZlcnMgaXMg
c3RpbGwgYWxpdmUuCisgICAgICAgICogQVBJL0pTT2JqZWN0UmVmLmNwcDogV2UgaGF2ZSB0byBh
ZGQgZXhwbGljaXQgY2hlY2tzIGZvciB0aGUgSlNBUElXcmFwcGVyT2JqZWN0LCBqdXN0IGxpa2Ug
dGhlIG90aGVyIHR5cGVzIG9mIEpTQ2FsbGJhY2tPYmplY3RzLgorICAgICAgICAoSlNPYmplY3RH
ZXRQcml2YXRlKToKKyAgICAgICAgKEpTT2JqZWN0U2V0UHJpdmF0ZSk6CisgICAgICAgIChKU09i
amVjdEdldFByaXZhdGVQcm9wZXJ0eSk6CisgICAgICAgIChKU09iamVjdFNldFByaXZhdGVQcm9w
ZXJ0eSk6CisgICAgICAgIChKU09iamVjdERlbGV0ZVByaXZhdGVQcm9wZXJ0eSk6CisgICAgICAg
ICogQVBJL0pTVmFsdWUubW06CisgICAgICAgIChvYmplY3RUb1ZhbHVlV2l0aG91dENvcHkpOgor
ICAgICAgICAqIEFQSS9KU1ZhbHVlUmVmLmNwcDoKKyAgICAgICAgKEpTVmFsdWVJc09iamVjdE9m
Q2xhc3MpOgorICAgICAgICAqIEFQSS9KU1ZpcnR1YWxNYWNoaW5lLm1tOgorICAgICAgICAoLVtK
U1ZpcnR1YWxNYWNoaW5lIGluaXRXaXRoQ29udGV4dEdyb3VwUmVmOl0pOgorICAgICAgICAoK1tK
U1ZpcnR1YWxNYWNoaW5lIHZpcnR1YWxNYWNoaW5lV2l0aENvbnRleHRHcm91cFJlZjpdKToKKyAg
ICAgICAgKiBBUEkvSlNXcmFwcGVyTWFwLm1tOgorICAgICAgICAod3JhcHBlckZpbmFsaXplKToK
KyAgICAgICAgKG1ha2VXcmFwcGVyKTogVGhpcyBpcyBvdXIgb3duIGludGVybmFsIHZlcnNpb24g
b2YgSlNPYmplY3RNYWtlIHdoaWNoIGNyZWF0ZXMgSlNBUElXcmFwcGVyT2JqZWN0cywgdGhlIE9i
ai1DIEFQSSAKKyAgICAgICAgdmVyc2lvbiBvZiBKU0NhbGxiYWNrT2JqZWN0cy4KKyAgICAgICAg
KGNyZWF0ZU9iamVjdFdpdGhDdXN0b21CcmFuZCk6CisgICAgICAgICgtW0pTT2JqQ0NsYXNzSW5m
byB3cmFwcGVyRm9yT2JqZWN0Ol0pOgorICAgICAgICAodHJ5VW53cmFwT2JqY09iamVjdCk6Cisg
ICAgICAgICogQVBJL0phdmFTY3JpcHRDb3JlLmg6CisgICAgICAgICogQVBJL3Rlc3RzL3Rlc3Rh
cGkubW06IEFkZGVkIG5ldyB0ZXN0cyBmb3IgdGhlIHN0cm9uZyBhbmQgd2VhayB1c2VzIG9mIEpT
TWFuYWdlZFZhbHVlIGluIHRoZSBjb250ZXh0IG9mIGFuIAorICAgICAgICBvbmNsaWNrIGhhbmRs
ZXIgZm9yIGFuIE9iamVjdGl2ZS1DIG9iamVjdCBpbnNlcnRlZCBpbnRvIGEgSlNDb250ZXh0Lgor
ICAgICAgICAoLVtUZXh0WFlaIHNldFdlYWtPbmNsaWNrOl0pOgorICAgICAgICAoLVtUZXh0WFla
IHNldE9uY2xpY2s6XSk6CisgICAgICAgICgtW1RleHRYWVogd2Vha09uY2xpY2tdKToKKyAgICAg
ICAgKC1bVGV4dFhZWiBvbmNsaWNrXSk6CisgICAgICAgICgtW1RleHRYWVogY2xpY2tdKToKKyAg
ICAgICAgKiBDTWFrZUxpc3RzLnR4dDogVmFyaW91cyBidWlsZCBzeXN0ZW0gYWRkaXRpb25zLgor
ICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogSmF2YVNjcmlwdENvcmUu
Z3lwaToKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUudmNwcm9qOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6IEFk
ZGVkIHRoZSBuZXcgY2Fub25pY2FsIFN0cnVjdHVyZSBmb3IgdGhlIEpTQVBJV3JhcHBlck9iamVj
dCBjbGFzcy4KKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnJlc2V0KToKKyAgICAgICAg
KEpTQyk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKToKKyAg
ICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgIChKU0dsb2JhbE9iamVj
dCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpvYmpjV3JhcHBlck9iamVjdFN0cnVj
dHVyZSk6CisKIDIwMTMtMDMtMDUgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21h
aWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxNDQ3MDguCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAxNDQ3ODApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTI0
LDYgKzI0LDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX0lOQ0xVREVfRElSRUNUT1JJRVMKICkKIAog
c2V0KEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKKyAgICBBUEkvSlNBUElXcmFwcGVyT2JqZWN0LmNw
cAogICAgIEFQSS9KU0Jhc2UuY3BwCiAgICAgQVBJL0pTQ2FsbGJhY2tDb25zdHJ1Y3Rvci5jcHAK
ICAgICBBUEkvSlNDYWxsYmFja0Z1bmN0aW9uLmNwcApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHJldmlzaW9uIDE0NDc4MCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw2ICsz
Niw4IEBAIGphdmFzY3JpcHRjb3JlX2J1aWx0X25vc291cmNlcyArPSBcCiBqYXZhc2NyaXB0Y29y
ZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0FQSUNhc3QuaCBcCiAJ
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9BUElTaGltcy5oIFwKKyAgICBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL0pTQVBJV3JhcHBlck9iamVjdC5jcHAgXAorICAgIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvSlNBUElXcmFwcGVyT2JqZWN0LmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvSlNCYXNlLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0Jhc2VQcml2
YXRlLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja0NvbnN0cnVjdG9y
LmNwcCBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZ3lwaQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZ3lwaQko
cmV2aXNpb24gMTQ0NzgwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Lmd5cGkJKHdvcmtpbmcgY29weSkKQEAgLTM2LDYgKzM2LDggQEAKICAgICAgICAgICAgICdBUEkv
QVBJU2hpbXMuaCcsCiAgICAgICAgICAgICAnQVBJL0phdmFTY3JpcHRDb3JlLmgnLAogICAgICAg
ICAgICAgJ0FQSS9KYXZhU2NyaXB0LmgnLAorICAgICAgICAgICAgJ0FQSS9KU0FQSVdyYXBwZXJP
YmplY3QuY3BwJywKKyAgICAgICAgICAgICdBUEkvSlNBUElXcmFwcGVyT2JqZWN0LmgnLAogICAg
ICAgICAgICAgJ0FQSS9KU0Jhc2UuY3BwJywKICAgICAgICAgICAgICdBUEkvSlNCYXNlLmgnLAog
ICAgICAgICAgICAgJ0FQSS9KU0Jhc2VQcml2YXRlLmgnLApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL1RhcmdldC5wcmkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL1Rh
cmdldC5wcmkJKHJldmlzaW9uIDE0NDc4MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9UYXJn
ZXQucHJpCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3IEBAIElOU1RBTExERVBTICs9IGFs
bAogZGVidWdfYW5kX3JlbGVhc2U6IElOQ0xVREVQQVRIICs9ICQkSkFWQVNDUklQVENPUkVfR0VO
RVJBVEVEX1NPVVJDRVNfRElSLyQkdGFyZ2V0U3ViRGlyKCkKIAogU09VUkNFUyArPSBcCisgICAg
QVBJL0pTQVBJV3JhcHBlck9iamVjdC5jcHAgXAogICAgIEFQSS9KU0Jhc2UuY3BwIFwKICAgICBB
UEkvSlNDYWxsYmFja0NvbnN0cnVjdG9yLmNwcCBcCiAgICAgQVBJL0pTQ2FsbGJhY2tGdW5jdGlv
bi5jcHAgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0FQSVdyYXBwZXJPYmpl
Y3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNBUElXcmFw
cGVyT2JqZWN0LmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
SlNBUElXcmFwcGVyT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDU5IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTQVBJV3JhcHBlck9i
amVjdC5oIgorCisjaW5jbHVkZSAiSlNDYWxsYmFja09iamVjdC5oIgorCituYW1lc3BhY2UgSlND
IHsKKyAgICAKK3RlbXBsYXRlIDw+IGNvbnN0IENsYXNzSW5mbyBKU0NhbGxiYWNrT2JqZWN0PEpT
QVBJV3JhcHBlck9iamVjdD46OnNfaW5mbyA9IHsgIkVudW1lcmFibGVDYWxsYmFja09iamVjdCIs
ICZCYXNlOjpzX2luZm8sIDAsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNDYWxsYmFja09iamVj
dCkgfTsKKwordGVtcGxhdGU8PiBjb25zdCBib29sIEpTQ2FsbGJhY2tPYmplY3Q8SlNBUElXcmFw
cGVyT2JqZWN0Pjo6bmVlZHNEZXN0cnVjdGlvbiA9IHRydWU7CisKK3RlbXBsYXRlIDw+CitTdHJ1
Y3R1cmUqIEpTQ2FsbGJhY2tPYmplY3Q8SlNBUElXcmFwcGVyT2JqZWN0Pjo6Y3JlYXRlU3RydWN0
dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNWYWx1ZSBwcm90bykKK3sKKyAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFs
RGF0YSwgZ2xvYmFsT2JqZWN0LCBwcm90bywgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJl
RmxhZ3MpLCAmc19pbmZvKTsKK30KKworSlNBUElXcmFwcGVyT2JqZWN0OjpKU0FQSVdyYXBwZXJP
YmplY3QoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAg
ICA6IEJhc2UoZ2xvYmFsRGF0YSwgc3RydWN0dXJlKQorICAgICwgbV93cmFwcGVkT2JqZWN0KDAp
Cit7Cit9CisKK3ZvaWQgSlNBUElXcmFwcGVyT2JqZWN0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCog
Y2VsbCwgSlNDOjpTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBKU0FQSVdyYXBwZXJPYmpl
Y3QqIHRoaXNPYmplY3QgPSBKU0M6OmpzQ2FzdDxKU0FQSVdyYXBwZXJPYmplY3QqPihjZWxsKTsK
KyAgICBDT01QSUxFX0FTU0VSVChTdHJ1Y3R1cmVGbGFncyAmIE92ZXJyaWRlc1Zpc2l0Q2hpbGRy
ZW4sIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW5XaXRob3V0U2V0dGluZ0ZsYWcpOworICAgIEJhc2U6
OnZpc2l0Q2hpbGRyZW4oY2VsbCwgdmlzaXRvcik7CisKKyAgICBpZiAodGhpc09iamVjdC0+d3Jh
cHBlZE9iamVjdCgpKQorICAgICAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3QodGhpc09iamVjdC0+
d3JhcHBlZE9iamVjdCgpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL0pTQVBJV3JhcHBlck9iamVjdC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNBUElXcmFwcGVyT2JqZWN0LmgJKHJldmlzaW9uIDAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQVBJV3JhcHBlck9iamVjdC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsNTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEpTQVBJV3Jh
cHBlck9iamVjdF9oCisjZGVmaW5lIEpTQVBJV3JhcHBlck9iamVjdF9oCisKKyNpbmNsdWRlICJK
U0Jhc2UuaCIKKyNpbmNsdWRlICJKU0Rlc3RydWN0aWJsZU9iamVjdC5oIgorI2luY2x1ZGUgIldl
YWtSZWZlcmVuY2VIYXJ2ZXN0ZXIuaCIKKworbmFtZXNwYWNlIEpTQyB7CisgICAgCitjbGFzcyBK
U0FQSVdyYXBwZXJPYmplY3QgOiBwdWJsaWMgSlNEZXN0cnVjdGlibGVPYmplY3QgeworcHVibGlj
OgorICAgIHR5cGVkZWYgSlNEZXN0cnVjdGlibGVPYmplY3QgQmFzZTsKKyAgICAKKyAgICBzdGF0
aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIEpTQzo6U2xvdFZpc2l0b3ImKTsKKyAgICAK
KyAgICB2b2lkKiB3cmFwcGVkT2JqZWN0KCkgeyByZXR1cm4gbV93cmFwcGVkT2JqZWN0OyB9Cisg
ICAgdm9pZCBzZXRXcmFwcGVkT2JqZWN0KHZvaWQqIHdyYXBwZWRPYmplY3QpIHsgbV93cmFwcGVk
T2JqZWN0ID0gd3JhcHBlZE9iamVjdDsgfQorCitwcm90ZWN0ZWQ6CisgICAgc3RhdGljIGNvbnN0
IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiB8IEJhc2U6
OlN0cnVjdHVyZUZsYWdzOworICAgIAorICAgIEpTQVBJV3JhcHBlck9iamVjdChKU0dsb2JhbERh
dGEmLCBTdHJ1Y3R1cmUqKTsKKworcHJpdmF0ZToKKyAgICB2b2lkKiBtX3dyYXBwZWRPYmplY3Q7
Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEpTQVBJV3JhcHBlck9iamVj
dF9oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQmFzZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0Jhc2UuY3BwCShyZXZpc2lvbiAxNDQ3
ODApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQmFzZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTExMCwzICsxMTAsMTMgQEAgdm9pZCBKU1JlcG9ydEV4dHJhTWVtb3J5Q29zdChKU0Nv
bnRleHRSZQogICAgIEFQSUVudHJ5U2hpbSBlbnRyeVNoaW0oZXhlYyk7CiAgICAgZXhlYy0+Z2xv
YmFsRGF0YSgpLmhlYXAucmVwb3J0RXh0cmFNZW1vcnlDb3N0KHNpemUpOwogfQorCit2b2lkIEpT
U3luY2hyb25vdXNHYXJiYWdlQ29sbGVjdChKU0NvbnRleHRSZWYgY3R4KQoreworICAgIGlmICgh
Y3R4KQorICAgICAgICByZXR1cm47CisKKyAgICBFeGVjU3RhdGUqIGV4ZWMgPSB0b0pTKGN0eCk7
CisgICAgQVBJRW50cnlTaGltIGVudHJ5U2hpbShleGVjKTsKKyAgICBleGVjLT5nbG9iYWxEYXRh
KCkuaGVhcC5jb2xsZWN0QWxsR2FyYmFnZSgpOworfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9KU0Jhc2VQcml2YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9KU0Jhc2VQcml2YXRlLmgJKHJldmlzaW9uIDE0NDc4MCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvSlNCYXNlUHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00NSw2ICs0
NSwxNSBAQCByZWdpb24uCiAqLwogSlNfRVhQT1JUIHZvaWQgSlNSZXBvcnRFeHRyYU1lbW9yeUNv
c3QoSlNDb250ZXh0UmVmIGN0eCwgc2l6ZV90IHNpemUpIEFWQUlMQUJMRV9JTl9XRUJLSVRfVkVS
U0lPTl80XzA7CiAKKy8qIQorQGZ1bmN0aW9uCitAYWJzdHJhY3QgU3luY2hyb25vdXNseSBydW5z
IGEgZnVsbCBtYXJrLXN3ZWVwIGdhcmJhZ2UgY29sbGVjdGlvbi4KK0BwYXJhbSBjdHggVGhlIGV4
ZWN1dGlvbiBjb250ZXh0IHRvIHVzZS4KK0BkaXNjdXNzaW9uIFRoaXMgZnVuY3Rpb24gaXMgb25s
eSB1c2VkIGludGVybmFsbHkgZm9yIHRlc3RzLiBJZiB5b3UncmUgbm90IAorc3VyZSB5b3UgbmVl
ZCB0byB1c2UgdGhpcyBmdW5jdGlvbiB0aGVuIHlvdSBkb24ndCBuZWVkIHRvLgorKi8KK0pTX0VY
UE9SVCB2b2lkIEpTU3luY2hyb25vdXNHYXJiYWdlQ29sbGVjdChKU0NvbnRleHRSZWYgY3R4KTsK
KwogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmNwcAkocmV2aXNpb24gMTQ0NzgwKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNjEsMTIgKzYxLDYgQEAgU3RydWN0dXJlKiBKU0NhbGxiYWNrT2JqZWN0PEpTR2xv
YmFsT2JqZQogICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBnbG9iYWxP
YmplY3QsIHByb3RvLCBUeXBlSW5mbyhHbG9iYWxPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyks
ICZzX2luZm8pOyAKIH0KIAotdGVtcGxhdGUgPGNsYXNzIFBhcmVudD4KLXZvaWQgSlNDYWxsYmFj
a09iamVjdDxQYXJlbnQ+OjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKLXsKLSAgICBzdGF0aWNfY2Fz
dDxKU0NhbGxiYWNrT2JqZWN0Kj4oY2VsbCktPkpTQ2FsbGJhY2tPYmplY3Q6On5KU0NhbGxiYWNr
T2JqZWN0KCk7Ci19Ci0KIHZvaWQgSlNDYWxsYmFja09iamVjdERhdGE6OmZpbmFsaXplKEhhbmRs
ZTxVbmtub3duPiBoYW5kbGUsIHZvaWQqIGNvbnRleHQpCiB7CiAgICAgSlNDbGFzc1JlZiBqc0Ns
YXNzID0gc3RhdGljX2Nhc3Q8SlNDbGFzc1JlZj4oY29udGV4dCk7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3QuaAkocmV2aXNpb24gMTQ0NzgwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEzNiw3ICsxMzYsMTAgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0NhbGxiYWNr
T2JqZWN0PFBhcmVudD4qIGNyZWF0ZShKU0dsb2JhbERhdGEmLCBKU0NsYXNzUmVmLCBTdHJ1Y3R1
cmUqKTsKIAogICAgIHN0YXRpYyBjb25zdCBib29sIG5lZWRzRGVzdHJ1Y3Rpb247Ci0gICAgc3Rh
dGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKKyAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2Vs
bCogY2VsbCkKKyAgICB7CisgICAgICAgIHN0YXRpY19jYXN0PEpTQ2FsbGJhY2tPYmplY3QqPihj
ZWxsKS0+SlNDYWxsYmFja09iamVjdDo6fkpTQ2FsbGJhY2tPYmplY3QoKTsKKyAgICB9CiAKICAg
ICB2b2lkIHNldFByaXZhdGUodm9pZCogZGF0YSk7CiAgICAgdm9pZCogZ2V0UHJpdmF0ZSgpOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHQubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHQubW0JKHJldmlzaW9uIDE0NDc4
MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0Lm1tCSh3b3JraW5nIGNv
cHkpCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAKICNpbXBvcnQgIkFQ
SUNhc3QuaCIKKyNpbXBvcnQgIkFQSVNoaW1zLmgiCiAjaW1wb3J0ICJKU0NvbnRleHRJbnRlcm5h
bC5oIgogI2ltcG9ydCAiSlNHbG9iYWxPYmplY3QuaCIKICNpbXBvcnQgIkpTVmFsdWVJbnRlcm5h
bC5oIgpAQCAtNzIsNiArNzMsOCBAQCAtIChpZClpbml0V2l0aFZpcnR1YWxNYWNoaW5lOihKU1Zp
cnR1YWxNCiAgICAgICAgIGNvbnRleHQuZXhjZXB0aW9uID0gZXhjZXB0aW9uVmFsdWU7CiAgICAg
fTsKIAorICAgIFttX3ZpcnR1YWxNYWNoaW5lIGFkZENvbnRleHQ6c2VsZiBmb3JHbG9iYWxDb250
ZXh0UmVmOm1fY29udGV4dF07CisKICAgICByZXR1cm4gc2VsZjsKIH0KIApAQCAtMTg3LDYgKzE5
MCw4IEBAIC0gKGlkKWluaXRXaXRoR2xvYmFsQ29udGV4dFJlZjooSlNHbG9iYWwKICAgICAgICAg
Y29udGV4dC5leGNlcHRpb24gPSBleGNlcHRpb25WYWx1ZTsKICAgICB9OwogCisgICAgW21fdmly
dHVhbE1hY2hpbmUgYWRkQ29udGV4dDpzZWxmIGZvckdsb2JhbENvbnRleHRSZWY6bV9jb250ZXh0
XTsKKwogICAgIHJldHVybiBzZWxmOwogfQogCkBAIC0yNTQsMTAgKzI1OSw4IEBAICsgKEpTQ29u
dGV4dCAqKWNvbnRleHRXaXRoR2xvYmFsQ29udGV4dFIKIHsKICAgICBKU1ZpcnR1YWxNYWNoaW5l
ICp2aXJ0dWFsTWFjaGluZSA9IFtKU1ZpcnR1YWxNYWNoaW5lIHZpcnR1YWxNYWNoaW5lV2l0aENv
bnRleHRHcm91cFJlZjp0b1JlZigmdG9KUyhnbG9iYWxDb250ZXh0KS0+Z2xvYmFsRGF0YSgpKV07
CiAgICAgSlNDb250ZXh0ICpjb250ZXh0ID0gW3ZpcnR1YWxNYWNoaW5lIGNvbnRleHRGb3JHbG9i
YWxDb250ZXh0UmVmOmdsb2JhbENvbnRleHRdOwotICAgIGlmICghY29udGV4dCkgeworICAgIGlm
ICghY29udGV4dCkKICAgICAgICAgY29udGV4dCA9IFtbW0pTQ29udGV4dCBhbGxvY10gaW5pdFdp
dGhHbG9iYWxDb250ZXh0UmVmOmdsb2JhbENvbnRleHRdIGF1dG9yZWxlYXNlXTsKLSAgICAgICAg
W3ZpcnR1YWxNYWNoaW5lIGFkZENvbnRleHQ6Y29udGV4dCBmb3JHbG9iYWxDb250ZXh0UmVmOmds
b2JhbENvbnRleHRdOwotICAgIH0KICAgICByZXR1cm4gY29udGV4dDsKIH0KIApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU01hbmFnZWRWYWx1ZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNNYW5hZ2VkVmFsdWUuaAkocmV2aXNpb24gMCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNNYW5hZ2VkVmFsdWUuaAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDUxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBKU01hbmFnZWRWYWx1ZV9o
CisjZGVmaW5lIEpTTWFuYWdlZFZhbHVlX2gKKworI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSlNC
YXNlLmg+CisKKyNpZiBKU0NfT0JKQ19BUElfRU5BQkxFRAorCitAY2xhc3MgSlNWYWx1ZTsKK0Bj
bGFzcyBKU0NvbnRleHQ7CisKK05TX0NMQVNTX0FWQUlMQUJMRSgxMF85LCBOQSkKK0BpbnRlcmZh
Y2UgSlNNYW5hZ2VkVmFsdWUgOiBOU09iamVjdAorCisrIChKU01hbmFnZWRWYWx1ZSAqKXdlYWtW
YWx1ZVdpdGhWYWx1ZTooSlNWYWx1ZSAqKXZhbHVlOworKyAoSlNNYW5hZ2VkVmFsdWUgKiltYW5h
Z2VkVmFsdWVXaXRoVmFsdWU6KEpTVmFsdWUgKil2YWx1ZSBvd25lcjooaWQpb3duZXI7CisKKy0g
KGlkKWluaXRXaXRoVmFsdWU6KEpTVmFsdWUgKil2YWx1ZTsKKy0gKGlkKWluaXRXaXRoVmFsdWU6
KEpTVmFsdWUgKil2YWx1ZSBvd25lcjooaWQpb3duZXI7CisKKy0gKEpTVmFsdWUgKil2YWx1ZTsK
KworQGVuZAorCisjZW5kaWYgLy8gSlNDX09CSkNfQVBJX0VOQUJMRUQKKworI2VuZGlmIC8vIEpT
TWFuYWdlZFZhbHVlX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNNYW5hZ2Vk
VmFsdWUubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU01hbmFn
ZWRWYWx1ZS5tbQkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNN
YW5hZ2VkVmFsdWUubW0JKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMzMgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiSlNNYW5hZ2VkVmFsdWUuaCIKKwor
I2lmIEpTQ19PQkpDX0FQSV9FTkFCTEVECisKKyNpbXBvcnQgIkFQSUNhc3QuaCIKKyNpbXBvcnQg
IkhlYXAuaCIKKyNpbXBvcnQgIkpTQ29udGV4dEludGVybmFsLmgiCisjaW1wb3J0ICJKU1ZhbHVl
SW50ZXJuYWwuaCIKKyNpbXBvcnQgIldlYWsuaCIKKyNpbXBvcnQgIldlYWtIYW5kbGVPd25lci5o
IgorI2ltcG9ydCAiT2JqY1J1bnRpbWVFeHRyYXMuaCIKKworY2xhc3MgSlNNYW5hZ2VkVmFsdWVI
YW5kbGVPd25lciA6IHB1YmxpYyBKU0M6OldlYWtIYW5kbGVPd25lciB7CitwdWJsaWM6CisgICAg
dmlydHVhbCBib29sIGlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6
VW5rbm93bj4sIHZvaWQqIGNvbnRleHQsIEpTQzo6U2xvdFZpc2l0b3ImKTsKK307CisKK3N0YXRp
YyBKU01hbmFnZWRWYWx1ZUhhbmRsZU93bmVyKiBtYW5hZ2VkVmFsdWVIYW5kbGVPd25lcigpCit7
CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChKU01hbmFnZWRWYWx1ZUhhbmRsZU93bmVyLCBqc01h
bmFnZWRWYWx1ZUhhbmRsZU93bmVyLCAoKSk7CisgICAgcmV0dXJuICZqc01hbmFnZWRWYWx1ZUhh
bmRsZU93bmVyOworfQorCitAaW50ZXJmYWNlIEpTTWFuYWdlZFZhbHVlIChJbnRlcm5hbCkKKy0g
KGlkKXdlYWtPd25lcjsKK0BlbmQKKworQGltcGxlbWVudGF0aW9uIEpTTWFuYWdlZFZhbHVlIHsK
KyAgICBKU0M6OldlYWs8SlNDOjpKU09iamVjdD4gbV92YWx1ZTsKKyAgICBpZCBtX3dlYWtPd25l
cjsKK30KKworKyAoSlNNYW5hZ2VkVmFsdWUgKil3ZWFrVmFsdWVXaXRoVmFsdWU6KEpTVmFsdWUg
Kil2YWx1ZQoreworICAgIHJldHVybiBbW1tzZWxmIGFsbG9jXSBpbml0V2l0aFZhbHVlOnZhbHVl
XSBhdXRvcmVsZWFzZV07Cit9CisKKysgKEpTTWFuYWdlZFZhbHVlICopbWFuYWdlZFZhbHVlV2l0
aFZhbHVlOihKU1ZhbHVlICopdmFsdWUgb3duZXI6KGlkKW93bmVyCit7CisgICAgcmV0dXJuIFtb
W3NlbGYgYWxsb2NdIGluaXRXaXRoVmFsdWU6dmFsdWUgb3duZXI6b3duZXJdIGF1dG9yZWxlYXNl
XTsKK30KKworLSAoaWQpaW5pdAoreworICAgIHJldHVybiBbc2VsZiBpbml0V2l0aFZhbHVlOltK
U1ZhbHVlIHZhbHVlV2l0aE51bGxJbkNvbnRleHQ6W0pTQ29udGV4dCBjdXJyZW50Q29udGV4dF1d
IG93bmVyOm5pbF07Cit9CisKKy0gKGlkKWluaXRXaXRoVmFsdWU6KEpTVmFsdWUgKil2YWx1ZQor
eworICAgIHJldHVybiBbc2VsZiBpbml0V2l0aFZhbHVlOnZhbHVlIG93bmVyOm5pbF07Cit9CisK
Ky0gKGlkKWluaXRXaXRoVmFsdWU6KEpTVmFsdWUgKil2YWx1ZSBvd25lcjooaWQpb3duZXIKK3sK
KyAgICBzZWxmID0gW3N1cGVyIGluaXRdOworICAgIGlmICghc2VsZikKKyAgICAgICAgcmV0dXJu
IG5pbDsKKyAgICAKKyAgICBpZiAoIUpTVmFsdWVJc09iamVjdChbdmFsdWUuY29udGV4dCBnbG9i
YWxDb250ZXh0UmVmXSwgW3ZhbHVlIEpTVmFsdWVSZWZdKSkKKyAgICAgICAgcmV0dXJuIFtzZWxm
IGluaXRXaXRoVmFsdWU6W0pTVmFsdWUgdmFsdWVXaXRoTnVsbEluQ29udGV4dDp2YWx1ZS5jb250
ZXh0XV07CisKKyAgICBKU0M6OkpTT2JqZWN0KiBvYmplY3QgPSB0b0pTKEpTVmFsdWVUb09iamVj
dChbdmFsdWUuY29udGV4dCBnbG9iYWxDb250ZXh0UmVmXSwgW3ZhbHVlIEpTVmFsdWVSZWZdLCAw
KSk7CisgICAgSlNDOjpXZWFrPEpTQzo6SlNPYmplY3Q+IHdlYWsob2JqZWN0LCBtYW5hZ2VkVmFs
dWVIYW5kbGVPd25lcigpLCBzZWxmKTsKKyAgICBtX3ZhbHVlLnN3YXAod2Vhayk7CisKKyAgICBv
YmpjX2luaXRXZWFrKCZtX3dlYWtPd25lciwgb3duZXIpOworCisgICAgcmV0dXJuIHNlbGY7Cit9
CisKKy0gKHZvaWQpZGVhbGxvYworeworICAgIG9iamNfZGVzdHJveVdlYWsoJm1fd2Vha093bmVy
KTsKKyAgICBbc3VwZXIgZGVhbGxvY107Cit9CisKKy0gKEpTVmFsdWUgKil2YWx1ZQoreworICAg
IGlmICghbV92YWx1ZSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICBKU0M6OkpTT2JqZWN0KiBv
YmplY3QgPSBtX3ZhbHVlLmdldCgpOworICAgIEpTQ29udGV4dCAqY29udGV4dCA9IFtKU0NvbnRl
eHQgY29udGV4dFdpdGhHbG9iYWxDb250ZXh0UmVmOnRvR2xvYmFsUmVmKG9iamVjdC0+c3RydWN0
dXJlKCktPmdsb2JhbE9iamVjdCgpLT5nbG9iYWxFeGVjKCkpXTsKKyAgICByZXR1cm4gW0pTVmFs
dWUgdmFsdWVXaXRoVmFsdWU6dG9SZWYob2JqZWN0KSBpbkNvbnRleHQ6Y29udGV4dF07Cit9CisK
K0BlbmQKKworQGltcGxlbWVudGF0aW9uIEpTTWFuYWdlZFZhbHVlIChJbnRlcm5hbCkKKworLSAo
aWQpd2Vha093bmVyCit7CisgICAgcmV0dXJuIG9iamNfbG9hZFdlYWsoJm1fd2Vha093bmVyKTsK
K30KKworQGVuZAorCitib29sIEpTTWFuYWdlZFZhbHVlSGFuZGxlT3duZXI6OmlzUmVhY2hhYmxl
RnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4sIHZvaWQqIGNvbnRleHQs
IEpTQzo6U2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgSlNNYW5hZ2VkVmFsdWUgKm1hbmFn
ZWRWYWx1ZSA9IHN0YXRpY19jYXN0PEpTTWFuYWdlZFZhbHVlICo+KGNvbnRleHQpOworICAgIGlk
IHdlYWtPd25lciA9IFttYW5hZ2VkVmFsdWUgd2Vha093bmVyXTsKKyAgICBpZiAoIXdlYWtPd25l
cikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiB2aXNpdG9yLmNvbnRhaW5zT3Bh
cXVlUm9vdCh3ZWFrT3duZXIpOworfQorCisjZW5kaWYgLy8gSlNDX09CSkNfQVBJX0VOQUJMRUQK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNPYmplY3RSZWYuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNPYmplY3RSZWYuY3BwCShyZXZpc2lv
biAxNDQ3ODApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIkZ1bmN0aW9uQ29uc3Ry
dWN0b3IuaCIKICNpbmNsdWRlICJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiSW5pdGlhbGl6ZVRo
cmVhZGluZy5oIgorI2luY2x1ZGUgIkpTQVBJV3JhcHBlck9iamVjdC5oIgogI2luY2x1ZGUgIkpT
QXJyYXkuaCIKICNpbmNsdWRlICJKU0NhbGxiYWNrQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJK
U0NhbGxiYWNrRnVuY3Rpb24uaCIKQEAgLTM0NSw2ICszNDYsOCBAQCB2b2lkKiBKU09iamVjdEdl
dFByaXZhdGUoSlNPYmplY3RSZWYgb2JqCiAgICAgICAgIHJldHVybiBqc0Nhc3Q8SlNDYWxsYmFj
a09iamVjdDxKU0dsb2JhbE9iamVjdD4qPihqc09iamVjdCktPmdldFByaXZhdGUoKTsKICAgICBp
ZiAoanNPYmplY3QtPmluaGVyaXRzKCZKU0NhbGxiYWNrT2JqZWN0PEpTRGVzdHJ1Y3RpYmxlT2Jq
ZWN0Pjo6c19pbmZvKSkKICAgICAgICAgcmV0dXJuIGpzQ2FzdDxKU0NhbGxiYWNrT2JqZWN0PEpT
RGVzdHJ1Y3RpYmxlT2JqZWN0Pio+KGpzT2JqZWN0KS0+Z2V0UHJpdmF0ZSgpOworICAgIGlmIChq
c09iamVjdC0+aW5oZXJpdHMoJkpTQ2FsbGJhY2tPYmplY3Q8SlNBUElXcmFwcGVyT2JqZWN0Pjo6
c19pbmZvKSkKKyAgICAgICAgcmV0dXJuIGpzQ2FzdDxKU0NhbGxiYWNrT2JqZWN0PEpTQVBJV3Jh
cHBlck9iamVjdD4qPihqc09iamVjdCktPmdldFByaXZhdGUoKTsKICAgICAKICAgICByZXR1cm4g
MDsKIH0KQEAgLTM2MSw2ICszNjQsMTAgQEAgYm9vbCBKU09iamVjdFNldFByaXZhdGUoSlNPYmpl
Y3RSZWYgb2JqZQogICAgICAgICBqc0Nhc3Q8SlNDYWxsYmFja09iamVjdDxKU0Rlc3RydWN0aWJs
ZU9iamVjdD4qPihqc09iamVjdCktPnNldFByaXZhdGUoZGF0YSk7CiAgICAgICAgIHJldHVybiB0
cnVlOwogICAgIH0KKyAgICBpZiAoanNPYmplY3QtPmluaGVyaXRzKCZKU0NhbGxiYWNrT2JqZWN0
PEpTQVBJV3JhcHBlck9iamVjdD46OnNfaW5mbykpIHsKKyAgICAgICAganNDYXN0PEpTQ2FsbGJh
Y2tPYmplY3Q8SlNBUElXcmFwcGVyT2JqZWN0Pio+KGpzT2JqZWN0KS0+c2V0UHJpdmF0ZShkYXRh
KTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQogICAgICAgICAKICAgICByZXR1cm4gZmFs
c2U7CiB9CkBAIC0zNzYsNiArMzgzLDggQEAgSlNWYWx1ZVJlZiBKU09iamVjdEdldFByaXZhdGVQ
cm9wZXJ0eShKUwogICAgICAgICByZXN1bHQgPSBqc0Nhc3Q8SlNDYWxsYmFja09iamVjdDxKU0ds
b2JhbE9iamVjdD4qPihqc09iamVjdCktPmdldFByaXZhdGVQcm9wZXJ0eShuYW1lKTsKICAgICBl
bHNlIGlmIChqc09iamVjdC0+aW5oZXJpdHMoJkpTQ2FsbGJhY2tPYmplY3Q8SlNEZXN0cnVjdGli
bGVPYmplY3Q+OjpzX2luZm8pKQogICAgICAgICByZXN1bHQgPSBqc0Nhc3Q8SlNDYWxsYmFja09i
amVjdDxKU0Rlc3RydWN0aWJsZU9iamVjdD4qPihqc09iamVjdCktPmdldFByaXZhdGVQcm9wZXJ0
eShuYW1lKTsKKyAgICBlbHNlIGlmIChqc09iamVjdC0+aW5oZXJpdHMoJkpTQ2FsbGJhY2tPYmpl
Y3Q8SlNBUElXcmFwcGVyT2JqZWN0Pjo6c19pbmZvKSkKKyAgICAgICAgcmVzdWx0ID0ganNDYXN0
PEpTQ2FsbGJhY2tPYmplY3Q8SlNBUElXcmFwcGVyT2JqZWN0Pio+KGpzT2JqZWN0KS0+Z2V0UHJp
dmF0ZVByb3BlcnR5KG5hbWUpOwogICAgIHJldHVybiB0b1JlZihleGVjLCByZXN1bHQpOwogfQog
CkBAIC0zOTQsNiArNDAzLDEwIEBAIGJvb2wgSlNPYmplY3RTZXRQcml2YXRlUHJvcGVydHkoSlND
b250ZXgKICAgICAgICAganNDYXN0PEpTQ2FsbGJhY2tPYmplY3Q8SlNEZXN0cnVjdGlibGVPYmpl
Y3Q+Kj4oanNPYmplY3QpLT5zZXRQcml2YXRlUHJvcGVydHkoZXhlYy0+Z2xvYmFsRGF0YSgpLCBu
YW1lLCBqc1ZhbHVlKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQorICAgIGlmIChqc09i
amVjdC0+aW5oZXJpdHMoJkpTQ2FsbGJhY2tPYmplY3Q8SlNBUElXcmFwcGVyT2JqZWN0Pjo6c19p
bmZvKSkgeworICAgICAgICBqc0Nhc3Q8SlNDYWxsYmFja09iamVjdDxKU0FQSVdyYXBwZXJPYmpl
Y3Q+Kj4oanNPYmplY3QpLT5zZXRQcml2YXRlUHJvcGVydHkoZXhlYy0+Z2xvYmFsRGF0YSgpLCBu
YW1lLCBqc1ZhbHVlKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQogICAgIHJldHVybiBm
YWxzZTsKIH0KIApAQCAtNDExLDYgKzQyNCwxMCBAQCBib29sIEpTT2JqZWN0RGVsZXRlUHJpdmF0
ZVByb3BlcnR5KEpTQ29uCiAgICAgICAgIGpzQ2FzdDxKU0NhbGxiYWNrT2JqZWN0PEpTRGVzdHJ1
Y3RpYmxlT2JqZWN0Pio+KGpzT2JqZWN0KS0+ZGVsZXRlUHJpdmF0ZVByb3BlcnR5KG5hbWUpOwog
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CisgICAgaWYgKGpzT2JqZWN0LT5pbmhlcml0cygm
SlNDYWxsYmFja09iamVjdDxKU0FQSVdyYXBwZXJPYmplY3Q+OjpzX2luZm8pKSB7CisgICAgICAg
IGpzQ2FzdDxKU0NhbGxiYWNrT2JqZWN0PEpTQVBJV3JhcHBlck9iamVjdD4qPihqc09iamVjdCkt
PmRlbGV0ZVByaXZhdGVQcm9wZXJ0eShuYW1lKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
fQogICAgIHJldHVybiBmYWxzZTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS9KU1ZhbHVlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNW
YWx1ZS5tbQkocmV2aXNpb24gMTQ0NzgwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9K
U1ZhbHVlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC04OTIsNiArODkyLDEzIEBAIHN0YXRpYyBPYmpj
Q29udGFpbmVyQ29udmVydG9yOjpUYXNrIG9iamUKICAgICAgICAgICAgIEpTT2JqZWN0UmVmIHJl
c3VsdCA9IEpTT2JqZWN0TWFrZURhdGUoY29udGV4dFJlZiwgMSwgJmFyZ3VtZW50LCAwKTsKICAg
ICAgICAgICAgIHJldHVybiAoT2JqY0NvbnRhaW5lckNvbnZlcnRvcjo6VGFzayl7IG9iamVjdCwg
cmVzdWx0LCBDb250YWluZXJOb25lIH07CiAgICAgICAgIH0KKworICAgICAgICBpZiAoW29iamVj
dCBpc0tpbmRPZkNsYXNzOltKU01hbmFnZWRWYWx1ZSBjbGFzc11dKSB7CisgICAgICAgICAgICBK
U1ZhbHVlICp2YWx1ZSA9IFtzdGF0aWNfY2FzdDxKU01hbmFnZWRWYWx1ZSAqPihvYmplY3QpIHZh
bHVlXTsKKyAgICAgICAgICAgIGlmICghdmFsdWUpCisgICAgICAgICAgICAgICAgcmV0dXJuIChP
YmpjQ29udGFpbmVyQ29udmVydG9yOjpUYXNrKSB7IG9iamVjdCwgSlNWYWx1ZU1ha2VVbmRlZmlu
ZWQoY29udGV4dFJlZiksIENvbnRhaW5lck5vbmUgfTsKKyAgICAgICAgICAgIHJldHVybiAoT2Jq
Y0NvbnRhaW5lckNvbnZlcnRvcjo6VGFzayl7IG9iamVjdCwgdmFsdWUtPm1fdmFsdWUsIENvbnRh
aW5lck5vbmUgfTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIHJldHVybiAoT2JqY0NvbnRhaW5l
ckNvbnZlcnRvcjo6VGFzayl7IG9iamVjdCwgdmFsdWVJbnRlcm5hbFZhbHVlKFtjb250ZXh0IHdy
YXBwZXJGb3JPYmpDT2JqZWN0Om9iamVjdF0pLCBDb250YWluZXJOb25lIH07CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmFsdWVSZWYuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZVJlZi5jcHAJKHJldmlzaW9uIDE0NDc4MCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZVJlZi5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkFQSUNhc3QuaCIKICNpbmNsdWRlICJBUElT
aGltcy5oIgorI2luY2x1ZGUgIkpTQVBJV3JhcHBlck9iamVjdC5oIgogI2luY2x1ZGUgIkpTQ2Fs
bGJhY2tPYmplY3QuaCIKIAogI2luY2x1ZGUgPHJ1bnRpbWUvSlNDSlNWYWx1ZS5oPgpAQCAtMTQ4
LDYgKzE0OSw4IEBAIGJvb2wgSlNWYWx1ZUlzT2JqZWN0T2ZDbGFzcyhKU0NvbnRleHRSZWYKICAg
ICAgICAgICAgIHJldHVybiBqc0Nhc3Q8SlNDYWxsYmFja09iamVjdDxKU0dsb2JhbE9iamVjdD4q
PihvKS0+aW5oZXJpdHMoanNDbGFzcyk7CiAgICAgICAgIGlmIChvLT5pbmhlcml0cygmSlNDYWxs
YmFja09iamVjdDxKU0Rlc3RydWN0aWJsZU9iamVjdD46OnNfaW5mbykpCiAgICAgICAgICAgICBy
ZXR1cm4ganNDYXN0PEpTQ2FsbGJhY2tPYmplY3Q8SlNEZXN0cnVjdGlibGVPYmplY3Q+Kj4obykt
PmluaGVyaXRzKGpzQ2xhc3MpOworICAgICAgICBpZiAoby0+aW5oZXJpdHMoJkpTQ2FsbGJhY2tP
YmplY3Q8SlNBUElXcmFwcGVyT2JqZWN0Pjo6c19pbmZvKSkKKyAgICAgICAgICAgIHJldHVybiBq
c0Nhc3Q8SlNDYWxsYmFja09iamVjdDxKU0FQSVdyYXBwZXJPYmplY3Q+Kj4obyktPmluaGVyaXRz
KGpzQ2xhc3MpOwogICAgIH0KICAgICByZXR1cm4gZmFsc2U7CiB9CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0pTVmlydHVhbE1hY2hpbmUubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZpcnR1YWxNYWNoaW5lLm1tCShyZXZpc2lvbiAxNDQ3ODAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmlydHVhbE1hY2hpbmUubW0JKHdvcmtp
bmcgY29weSkKQEAgLTEwMSw3ICsxMDEsOSBAQCAtIChpZClpbml0V2l0aENvbnRleHRHcm91cFJl
ZjooSlNDb250ZXh0CiAgICAgTlNQb2ludGVyRnVuY3Rpb25zT3B0aW9ucyBrZXlPcHRpb25zID0g
TlNQb2ludGVyRnVuY3Rpb25zT3BhcXVlTWVtb3J5IHwgTlNQb2ludGVyRnVuY3Rpb25zT3BhcXVl
UGVyc29uYWxpdHk7CiAgICAgTlNQb2ludGVyRnVuY3Rpb25zT3B0aW9ucyB2YWx1ZU9wdGlvbnMg
PSBOU1BvaW50ZXJGdW5jdGlvbnNXZWFrTWVtb3J5IHwgTlNQb2ludGVyRnVuY3Rpb25zT2JqZWN0
UGVyc29uYWxpdHk7CiAgICAgbV9jb250ZXh0Q2FjaGUgPSBbW05TTWFwVGFibGUgYWxsb2NdIGlu
aXRXaXRoS2V5T3B0aW9uczprZXlPcHRpb25zIHZhbHVlT3B0aW9uczp2YWx1ZU9wdGlvbnMgY2Fw
YWNpdHk6MF07Ci0gICAgCisgICAKKyAgICBbSlNWTVdyYXBwZXJDYWNoZSBhZGRXcmFwcGVyOnNl
bGYgZm9ySlNDb250ZXh0R3JvdXBSZWY6Z3JvdXBdOworIAogICAgIHJldHVybiBzZWxmOwogfQog
CkBAIC0xMjMsMTAgKzEyNSw4IEBAIEpTQ29udGV4dEdyb3VwUmVmIGdldEdyb3VwRnJvbVZpcnR1
YWxNYWMKICsgKEpTVmlydHVhbE1hY2hpbmUgKil2aXJ0dWFsTWFjaGluZVdpdGhDb250ZXh0R3Jv
dXBSZWY6KEpTQ29udGV4dEdyb3VwUmVmKWdyb3VwCiB7CiAgICAgSlNWaXJ0dWFsTWFjaGluZSAq
dmlydHVhbE1hY2hpbmUgPSBbSlNWTVdyYXBwZXJDYWNoZSB3cmFwcGVyRm9ySlNDb250ZXh0R3Jv
dXBSZWY6Z3JvdXBdOwotICAgIGlmICghdmlydHVhbE1hY2hpbmUpIHsKKyAgICBpZiAoIXZpcnR1
YWxNYWNoaW5lKQogICAgICAgICB2aXJ0dWFsTWFjaGluZSA9IFtbW0pTVmlydHVhbE1hY2hpbmUg
YWxsb2NdIGluaXRXaXRoQ29udGV4dEdyb3VwUmVmOmdyb3VwXSBhdXRvcmVsZWFzZV07Ci0gICAg
ICAgIFtKU1ZNV3JhcHBlckNhY2hlIGFkZFdyYXBwZXI6dmlydHVhbE1hY2hpbmUgZm9ySlNDb250
ZXh0R3JvdXBSZWY6Z3JvdXBdOwotICAgIH0KICAgICByZXR1cm4gdmlydHVhbE1hY2hpbmU7CiB9
CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNXcmFwcGVyTWFwLm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNXcmFwcGVyTWFwLm1tCShyZXZp
c2lvbiAxNDQ3ODApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTV3JhcHBlck1hcC5t
bQkod29ya2luZyBjb3B5KQpAQCAtMjksNiArMjksOSBAQAogI2lmIEpTQ19PQkpDX0FQSV9FTkFC
TEVECiAKICNpbXBvcnQgIkFQSUNhc3QuaCIKKyNpbXBvcnQgIkFQSVNoaW1zLmgiCisjaW1wb3J0
ICJKU0FQSVdyYXBwZXJPYmplY3QuaCIKKyNpbXBvcnQgIkpTQ2FsbGJhY2tPYmplY3QuaCIKICNp
bXBvcnQgIkpTQ29udGV4dEludGVybmFsLmgiCiAjaW1wb3J0ICJKU1dyYXBwZXJNYXAuaCIKICNp
bXBvcnQgIk9iakNDYWxsYmFja0Z1bmN0aW9uLmgiCkBAIC00OCw3ICs1MSw4IEBAIC0gKEpTT2Jq
Q0NsYXNzSW5mbyopY2xhc3NJbmZvRm9yQ2xhc3M6KEMKIAogc3RhdGljIHZvaWQgd3JhcHBlckZp
bmFsaXplKEpTT2JqZWN0UmVmIG9iamVjdCkKIHsKLSAgICBbKGlkKUpTT2JqZWN0R2V0UHJpdmF0
ZShvYmplY3QpIHJlbGVhc2VdOworICAgIEpTQzo6SlNBUElXcmFwcGVyT2JqZWN0KiB3cmFwcGVy
T2JqZWN0ID0gSlNDOjpqc0Nhc3Q8SlNDOjpKU0FQSVdyYXBwZXJPYmplY3QqPih0b0pTKG9iamVj
dCkpOworICAgIFsoaWQpd3JhcHBlck9iamVjdC0+d3JhcHBlZE9iamVjdCgpIHJlbGVhc2VdOwog
fQogCiAvLyBBbGwgd3JhcHBlciBvYmplY3RzIGFuZCBjb25zdHJ1Y3RvciBvYmplY3RzIGRlcml2
ZSBmcm9tIHRoaXMgdHlwZSwgc28gd2UgY2FuIGRldGVjdCAmIHVud3JhcCBPYmplY3RpdmUtQyBp
bnN0YW5jZXMvQ2xhc3Nlcy4KQEAgLTExNCwxNyArMTE4LDMxIEBAIGRvbmU6CiAgICAgcmV0dXJu
IHJlc3VsdDsKIH0KIAorc3RhdGljIEpTT2JqZWN0UmVmIG1ha2VXcmFwcGVyKEpTQ29udGV4dFJl
ZiBjdHgsIEpTQ2xhc3NSZWYganNDbGFzcywgaWQgd3JhcHBlZE9iamVjdCkKK3sKKyAgICBKU0M6
OkV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMoY3R4KTsKKyAgICBKU0M6OkFQSUVudHJ5U2hpbSBlbnRy
eVNoaW0oZXhlYyk7CisKKyAgICBBU1NFUlQoanNDbGFzcyk7CisgICAgSlNDOjpKU0NhbGxiYWNr
T2JqZWN0PEpTQzo6SlNBUElXcmFwcGVyT2JqZWN0Piogb2JqZWN0ID0gSlNDOjpKU0NhbGxiYWNr
T2JqZWN0PEpTQzo6SlNBUElXcmFwcGVyT2JqZWN0Pjo6Y3JlYXRlKGV4ZWMsIGV4ZWMtPmxleGlj
YWxHbG9iYWxPYmplY3QoKSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5vYmpjV3JhcHBl
ck9iamVjdFN0cnVjdHVyZSgpLCBqc0NsYXNzLCAwKTsKKyAgICBvYmplY3QtPnNldFdyYXBwZWRP
YmplY3Qod3JhcHBlZE9iamVjdCk7CisgICAgaWYgKEpTQzo6SlNPYmplY3QqIHByb3RvdHlwZSA9
IGpzQ2xhc3MtPnByb3RvdHlwZShleGVjKSkKKyAgICAgICAgb2JqZWN0LT5zZXRQcm90b3R5cGUo
ZXhlYy0+Z2xvYmFsRGF0YSgpLCBwcm90b3R5cGUpOworCisgICAgcmV0dXJuIHRvUmVmKG9iamVj
dCk7Cit9CisKIC8vIE1ha2UgYW4gb2JqZWN0IHRoYXQgaXMgaW4gYWxsIHdheXMgYSBjb21wbGV0
ZWx5IHZhbmlsbGEgSmF2YVNjcmlwdCBvYmplY3QsCiAvLyBvdGhlciB0aGFuIHRoYXQgaXQgaGFz
IGEgbmF0aXZlIGJyYW5kIHNldCB0aGF0IHdpbGwgYmUgZGlzcGxheWVkIGJ5IHRoZSBkZWZhdWx0
CiAvLyBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nIGNvbnZlcnNpb24uCi1zdGF0aWMgSlNWYWx1
ZSAqY3JlYXRlT2JqZWN0V2l0aEN1c3RvbUJyYW5kKEpTQ29udGV4dCAqY29udGV4dCwgTlNTdHJp
bmcgKmJyYW5kLCBKU0NsYXNzUmVmIHBhcmVudENsYXNzID0gMCwgdm9pZCogcHJpdmF0ZURhdGEg
PSAwKQorc3RhdGljIEpTVmFsdWUgKmNyZWF0ZU9iamVjdFdpdGhDdXN0b21CcmFuZChKU0NvbnRl
eHQgKmNvbnRleHQsIE5TU3RyaW5nICpicmFuZCwgSlNDbGFzc1JlZiBwYXJlbnRDbGFzcyA9IDAs
IENsYXNzIGNscyA9IDApCiB7CiAgICAgSlNDbGFzc0RlZmluaXRpb24gZGVmaW5pdGlvbjsKICAg
ICBkZWZpbml0aW9uID0ga0pTQ2xhc3NEZWZpbml0aW9uRW1wdHk7CiAgICAgZGVmaW5pdGlvbi5j
bGFzc05hbWUgPSBbYnJhbmQgVVRGOFN0cmluZ107CiAgICAgZGVmaW5pdGlvbi5wYXJlbnRDbGFz
cyA9IHBhcmVudENsYXNzOwogICAgIEpTQ2xhc3NSZWYgY2xhc3NSZWYgPSBKU0NsYXNzQ3JlYXRl
KCZkZWZpbml0aW9uKTsKLSAgICBKU09iamVjdFJlZiByZXN1bHQgPSBKU09iamVjdE1ha2UoW2Nv
bnRleHQgZ2xvYmFsQ29udGV4dFJlZl0sIGNsYXNzUmVmLCBwcml2YXRlRGF0YSk7CisgICAgSlNP
YmplY3RSZWYgcmVzdWx0ID0gbWFrZVdyYXBwZXIoW2NvbnRleHQgZ2xvYmFsQ29udGV4dFJlZl0s
IGNsYXNzUmVmLCBjbHMpOwogICAgIEpTQ2xhc3NSZWxlYXNlKGNsYXNzUmVmKTsKICAgICByZXR1
cm4gW1tKU1ZhbHVlIGFsbG9jXSBpbml0V2l0aFZhbHVlOnJlc3VsdCBpbkNvbnRleHQ6Y29udGV4
dF07CiB9CkBAIC00MDcsNyArNDI1LDcgQEAgLSAoSlNWYWx1ZSAqKXdyYXBwZXJGb3JPYmplY3Q6
KGlkKW9iamVjdAogICAgICAgICBbc2VsZiByZWFsbG9jYXRlQ29uc3RydWN0b3JBbmRPclByb3Rv
dHlwZV07CiAgICAgQVNTRVJUKCEhbV9wcm90b3R5cGUpOwogCi0gICAgSlNPYmplY3RSZWYgd3Jh
cHBlciA9IEpTT2JqZWN0TWFrZShbbV9jb250ZXh0IGdsb2JhbENvbnRleHRSZWZdLCBtX2NsYXNz
UmVmLCBbb2JqZWN0IHJldGFpbl0pOworICAgIEpTT2JqZWN0UmVmIHdyYXBwZXIgPSBtYWtlV3Jh
cHBlcihbbV9jb250ZXh0IGdsb2JhbENvbnRleHRSZWZdLCBtX2NsYXNzUmVmLCBbb2JqZWN0IHJl
dGFpbl0pOwogICAgIEpTT2JqZWN0U2V0UHJvdG90eXBlKFttX2NvbnRleHQgZ2xvYmFsQ29udGV4
dFJlZl0sIHdyYXBwZXIsIHRvUmVmKG1fcHJvdG90eXBlLmdldCgpKSk7CiAgICAgcmV0dXJuIFtK
U1ZhbHVlIHZhbHVlV2l0aFZhbHVlOndyYXBwZXIgaW5Db250ZXh0Om1fY29udGV4dF07CiB9CkBA
IC01MTEsNyArNTI5LDcgQEAgaWQgdHJ5VW53cmFwT2JqY09iamVjdChKU0dsb2JhbENvbnRleHRS
ZQogICAgIEpTT2JqZWN0UmVmIG9iamVjdCA9IEpTVmFsdWVUb09iamVjdChjb250ZXh0LCB2YWx1
ZSwgJmV4Y2VwdGlvbik7CiAgICAgQVNTRVJUKCFleGNlcHRpb24pOwogICAgIGlmIChKU1ZhbHVl
SXNPYmplY3RPZkNsYXNzKGNvbnRleHQsIG9iamVjdCwgd3JhcHBlckNsYXNzKCkpKQotICAgICAg
ICByZXR1cm4gKGlkKUpTT2JqZWN0R2V0UHJpdmF0ZShvYmplY3QpOworICAgICAgICByZXR1cm4g
KGlkKUpTQzo6anNDYXN0PEpTQzo6SlNBUElXcmFwcGVyT2JqZWN0Kj4odG9KUyhvYmplY3QpKS0+
d3JhcHBlZE9iamVjdCgpOwogICAgIGlmIChpZCB0YXJnZXQgPSB0cnlVbndyYXBCbG9jayhjb250
ZXh0LCBvYmplY3QpKQogICAgICAgICByZXR1cm4gdGFyZ2V0OwogICAgIHJldHVybiBuaWw7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0phdmFTY3JpcHRDb3JlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KYXZhU2NyaXB0Q29yZS5oCShyZXZpc2lv
biAxNDQ3ODApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0phdmFTY3JpcHRDb3JlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDcgQEAKIAogI2ltcG9ydCAiSlNDb250ZXh0Lmgi
CiAjaW1wb3J0ICJKU1ZhbHVlLmgiCisjaW1wb3J0ICJKU01hbmFnZWRWYWx1ZS5oIgogI2ltcG9y
dCAiSlNWaXJ0dWFsTWFjaGluZS5oIgogI2ltcG9ydCAiSlNFeHBvcnQuaCIKIApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFwaS5tbQkocmV2aXNpb24gMTQ0Nzgw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC0yMyw3ICsyMyw4IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKICAqLwogCi0jaW1wb3J0
ICJKYXZhU2NyaXB0Q29yZS5oIgorI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUuaD4KKyNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0pTQmFzZVByaXZhdGUuaD4KIAogZXh0ZXJu
ICJDIiBib29sIF9CbG9ja19oYXNfc2lnbmF0dXJlKGlkKTsKIGV4dGVybiAiQyIgY29uc3QgY2hh
ciAqIF9CbG9ja19zaWduYXR1cmUoaWQpOwpAQCAtMTAxLDYgKzEwMiw4IEBAIGJvb2wgdGVzdFhZ
WlRlc3RlZCA9IGZhbHNlOwogQHByb3RvY29sIFRleHRYWVogPEpTRXhwb3J0PgogQHByb3BlcnR5
IGludCB4OwogQHByb3BlcnR5IChyZWFkb25seSkgaW50IHk7CitAcHJvcGVydHkgSlNWYWx1ZSAq
b25jbGljazsKK0Bwcm9wZXJ0eSBKU1ZhbHVlICp3ZWFrT25jbGljazsKIC0gKHZvaWQpdGVzdDoo
TlNTdHJpbmcgKiltZXNzYWdlOwogQGVuZAogCkBAIC0xMDgsOSArMTExLDEzIEBAIEBpbnRlcmZh
Y2UgVGV4dFhZWiA6IE5TT2JqZWN0IDxUZXh0WFlaPgogQHByb3BlcnR5IGludCB4OwogQHByb3Bl
cnR5IGludCB5OwogQHByb3BlcnR5IGludCB6OworLSAodm9pZCljbGljazsKIEBlbmQKIAotQGlt
cGxlbWVudGF0aW9uIFRleHRYWVoKK0BpbXBsZW1lbnRhdGlvbiBUZXh0WFlaIHsKKyAgICBKU01h
bmFnZWRWYWx1ZSAqbV93ZWFrT25jbGlja0hhbmRsZXI7CisgICAgSlNNYW5hZ2VkVmFsdWUgKm1f
b25jbGlja0hhbmRsZXI7Cit9CiBAc3ludGhlc2l6ZSB4OwogQHN5bnRoZXNpemUgeTsKIEBzeW50
aGVzaXplIHo7CkBAIC0xMTgsNiArMTI1LDMxIEBAIC0gKHZvaWQpdGVzdDooTlNTdHJpbmcgKilt
ZXNzYWdlCiB7CiAgICAgdGVzdFhZWlRlc3RlZCA9IFttZXNzYWdlIGlzRXF1YWw6QCJ0ZXN0Il0g
JiYgeCA9PSAxMyAmIHkgPT0gNCAmJiB6ID09IDU7CiB9CistICh2b2lkKXNldFdlYWtPbmNsaWNr
OihKU1ZhbHVlICopdmFsdWUKK3sKKyAgICBtX3dlYWtPbmNsaWNrSGFuZGxlciA9IFtKU01hbmFn
ZWRWYWx1ZSB3ZWFrVmFsdWVXaXRoVmFsdWU6dmFsdWVdOworfQorCistICh2b2lkKXNldE9uY2xp
Y2s6KEpTVmFsdWUgKil2YWx1ZQoreworICAgIG1fb25jbGlja0hhbmRsZXIgPSBbSlNNYW5hZ2Vk
VmFsdWUgbWFuYWdlZFZhbHVlV2l0aFZhbHVlOnZhbHVlIG93bmVyOnNlbGZdOworfQorLSAoSlNW
YWx1ZSAqKXdlYWtPbmNsaWNrCit7CisgICAgcmV0dXJuIFttX3dlYWtPbmNsaWNrSGFuZGxlciB2
YWx1ZV07Cit9CistIChKU1ZhbHVlICopb25jbGljaworeworICAgIHJldHVybiBbbV9vbmNsaWNr
SGFuZGxlciB2YWx1ZV07Cit9CistICh2b2lkKWNsaWNrCit7CisgICAgaWYgKCFtX29uY2xpY2tI
YW5kbGVyKQorICAgICAgICByZXR1cm47CisKKyAgICBKU1ZhbHVlICpmdW5jdGlvbiA9IFttX29u
Y2xpY2tIYW5kbGVyIHZhbHVlXTsKKyAgICBbZnVuY3Rpb24gY2FsbFdpdGhBcmd1bWVudHM6W05T
QXJyYXkgYXJyYXldXTsKK30KIEBlbmQKIAogc3RhdGljIHZvaWQgY2hlY2tSZXN1bHQoTlNTdHJp
bmcgKmRlc2NyaXB0aW9uLCBib29sIHBhc3NlZCkKQEAgLTQ5Myw2ICs1MjUsNjAgQEAgdm9pZCB0
ZXN0T2JqZWN0aXZlQ0FQSSgpCiAgICAgICAgIEpTVmFsdWUgKnJlc3VsdCA9IFtjb250ZXh0MSBl
dmFsdWF0ZVNjcmlwdDpAInBhc3NWYWx1ZUJldHdlZW5Db250ZXh0cyJdOwogICAgICAgICBjaGVj
a1Jlc3VsdChAIlt2YWx1ZSBpc0VxdWFsVG9PYmplY3Q6cmVzdWx0XSIsIFt2YWx1ZSBpc0VxdWFs
VG9PYmplY3Q6cmVzdWx0XSk7CiAgICAgfQorCisgICAgQGF1dG9yZWxlYXNlcG9vbCB7CisgICAg
ICAgIEpTQ29udGV4dCAqY29udGV4dCA9IFtbSlNDb250ZXh0IGFsbG9jXSBpbml0XTsKKyAgICAg
ICAgVGV4dFhZWiAqdGVzdFhZWiA9IFtbVGV4dFhZWiBhbGxvY10gaW5pdF07CisKKyAgICAgICAg
QGF1dG9yZWxlYXNlcG9vbCB7CisgICAgICAgICAgICBjb250ZXh0W0AidGVzdFhZWiJdID0gdGVz
dFhZWjsKKworICAgICAgICAgICAgW2NvbnRleHQgZXZhbHVhdGVTY3JpcHQ6QCIgXAorICAgICAg
ICAgICAgICAgIGRpZENsaWNrID0gZmFsc2U7IFwKKyAgICAgICAgICAgICAgICB0ZXN0WFlaLm9u
Y2xpY2sgPSBmdW5jdGlvbigpIHsgXAorICAgICAgICAgICAgICAgICAgICBkaWRDbGljayA9IHRy
dWU7IFwKKyAgICAgICAgICAgICAgICB9OyBcCisgICAgICAgICAgICAgICAgIFwKKyAgICAgICAg
ICAgICAgICB0ZXN0WFlaLndlYWtPbmNsaWNrID0gZnVuY3Rpb24oKSB7IFwKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuICdmb28nOyBcCisgICAgICAgICAgICAgICAgfTsgXAorICAgICAgICAg
ICAgIl07CisgICAgICAgIH0KKworICAgICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKKyAgICAgICAg
ICAgIFt0ZXN0WFlaIGNsaWNrXTsKKyAgICAgICAgICAgIEpTVmFsdWUgKnJlc3VsdCA9IFtjb250
ZXh0IGV2YWx1YXRlU2NyaXB0OkAiZGlkQ2xpY2siXTsKKyAgICAgICAgICAgIGNoZWNrUmVzdWx0
KEAiRXZlbnQgaGFuZGxlciBvbmNsaWNrIiwgW3Jlc3VsdCB0b0Jvb2xdKTsKKyAgICAgICAgfQor
CisgICAgICAgIEpTU3luY2hyb25vdXNHYXJiYWdlQ29sbGVjdChbY29udGV4dCBnbG9iYWxDb250
ZXh0UmVmXSk7CisKKyAgICAgICAgQGF1dG9yZWxlYXNlcG9vbCB7CisgICAgICAgICAgICBKU1Zh
bHVlICpyZXN1bHQgPSBbY29udGV4dCBldmFsdWF0ZVNjcmlwdDpAInRlc3RYWVoub25jbGljayJd
OworICAgICAgICAgICAgY2hlY2tSZXN1bHQoQCJvbmNsaWNrIHN0aWxsIGFyb3VuZCBhZnRlciBH
QyIsICEoW3Jlc3VsdCBpc051bGxdIHx8IFtyZXN1bHQgaXNVbmRlZmluZWRdKSk7CisgICAgICAg
IH0KKworCisgICAgICAgIEBhdXRvcmVsZWFzZXBvb2wgeworICAgICAgICAgICAgSlNWYWx1ZSAq
cmVzdWx0ID0gW2NvbnRleHQgZXZhbHVhdGVTY3JpcHQ6QCJ0ZXN0WFlaLndlYWtPbmNsaWNrIl07
CisgICAgICAgICAgICBjaGVja1Jlc3VsdChAIndlYWtPbmNsaWNrIG5vdCBhcm91bmQgYWZ0ZXIg
R0MiLCBbcmVzdWx0IGlzTnVsbF0gfHwgW3Jlc3VsdCBpc1VuZGVmaW5lZF0pOworICAgICAgICB9
CisKKyAgICAgICAgQGF1dG9yZWxlYXNlcG9vbCB7CisgICAgICAgICAgICBbY29udGV4dCBldmFs
dWF0ZVNjcmlwdDpAIiBcCisgICAgICAgICAgICAgICAgZGlkQ2xpY2sgPSBmYWxzZTsgXAorICAg
ICAgICAgICAgICAgIHRlc3RYWVogPSBudWxsOyBcCisgICAgICAgICAgICAiXTsKKyAgICAgICAg
fQorCisgICAgICAgIEpTU3luY2hyb25vdXNHYXJiYWdlQ29sbGVjdChbY29udGV4dCBnbG9iYWxD
b250ZXh0UmVmXSk7CisKKyAgICAgICAgQGF1dG9yZWxlYXNlcG9vbCB7CisgICAgICAgICAgICBb
dGVzdFhZWiBjbGlja107CisgICAgICAgICAgICBKU1ZhbHVlICpyZXN1bHQgPSBbY29udGV4dCBl
dmFsdWF0ZVNjcmlwdDpAImRpZENsaWNrIl07CisgICAgICAgICAgICBjaGVja1Jlc3VsdChAIkV2
ZW50IGhhbmRsZXIgb25jbGljayBkb2Vzbid0IGZpcmUiLCAhW3Jlc3VsdCB0b0Jvb2xdKTsKKyAg
ICAgICAgfQorICAgIH0KIH0KIAogI2Vsc2UKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9q
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3By
b2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qCShyZXZpc2lvbiAxNDQ3ODAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAtMTQxNCw2ICsx
NDE0LDE0IEBACiAJCQkJPgogCQkJPC9GaWxlPgogCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9
Ii4uXC4uXEFQSVxKU0FQSVdyYXBwZXJPYmplY3QuY3BwIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJ
CTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxBUElcSlNBUElXcmFwcGVyT2JqZWN0Lmgi
CisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEFQ
SVxKU0Jhc2UuY3BwIgogCQkJCT4KIAkJCTwvRmlsZT4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCShyZXZpc2lvbiAxNDQ3ODApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAt
ODI4LDYgKzgyOCw4IEBACiAJCUMyNDAzMDU1MTRCNDA0RTYwMDc5RUI2NCAvKiBDb3BpZWRTcGFj
ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMjQw
MzA1MzE0QjQwNEM5MDA3OUVCNjQgLyogQ29waWVkU3BhY2UuY3BwICovOyB9OwogCQlDMjREMzFF
MjE2MUNENjk1MDAyQUE0REIgLyogSGVhcFN0YXRpc3RpY3MuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzI0RDMxRTAxNjFDRDY5NTAwMkFBNERCIC8q
IEhlYXBTdGF0aXN0aWNzLmNwcCAqLzsgfTsKIAkJQzI0RDMxRTMxNjFDRDY5NTAwMkFBNERCIC8q
IEhlYXBTdGF0aXN0aWNzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDMjREMzFFMTE2MUNENjk1MDAyQUE0REIgLyogSGVhcFN0YXRpc3RpY3MuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlDMjVENzA5QjE2
REU5OUY0MDBGQ0E2QkMgLyogSlNNYW5hZ2VkVmFsdWUubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMjVENzA5OTE2REU5OUY0MDBGQ0E2QkMgLyogSlNN
YW5hZ2VkVmFsdWUubW0gKi87IH07CisJCUMyNUQ3MDlDMTZERTk5RjQwMEZDQTZCQyAvKiBKU01h
bmFnZWRWYWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQzI1RDcwOUExNkRFOTlGNDAwRkNBNkJDIC8qIEpTTWFuYWdlZFZhbHVlLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OwogCQlDMjVGOEJDRDE1NzU0NEE5
MDAyNDVCNzEgLyogSW5jcmVtZW50YWxTd2VlcGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyNUY4QkNCMTU3NTQ0QTkwMDI0NUI3MSAvKiBJbmNy
ZW1lbnRhbFN3ZWVwZXIuY3BwICovOyB9OwogCQlDMjVGOEJDRTE1NzU0NEE5MDAyNDVCNzEgLyog
SW5jcmVtZW50YWxTd2VlcGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBDMjVGOEJDQzE1NzU0NEE5MDAyNDVCNzEgLyogSW5jcmVtZW50YWxTd2VlcGVy
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQzJB
N0Y2ODgxNjA0MzJENDAwRjc2Qjk4IC8qIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMkE3RjY4NzE2MDQzMkQ0MDBG
NzZCOTggLyogSlNEZXN0cnVjdGlibGVPYmplY3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtODM2LDYgKzgzOCw4IEBACiAJCUMyQzhEMDJEMTRB
M0M2RTAwMDU3OEU2NSAvKiBDb3BpZWRTcGFjZUlubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyQzhEMDJCMTRBM0M2QjIwMDU3OEU2NSAvKiBD
b3BpZWRTcGFjZUlubGluZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQlDMkM4RDAzMDE0QTNDRUZDMDA1NzhFNjUgLyogQ29waWVkQmxvY2suaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyQzhEMDJFMTRB
M0NFRkMwMDU3OEU2NSAvKiBDb3BpZWRCbG9jay5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCUMyQzhEMDMxMTRBM0NFRkMwMDU3OEU2NSAvKiBIZWFw
QmxvY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMy
QzhEMDJGMTRBM0NFRkMwMDU3OEU2NSAvKiBIZWFwQmxvY2suaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlDMkNGMzlDMTE2RTE1QTgxMDBERDY5QkUg
LyogSlNBUElXcmFwcGVyT2JqZWN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEMyQ0YzOUJGMTZFMTVBODEwMERENjlCRSAvKiBKU0FQSVdyYXBwZXJP
YmplY3QuY3BwICovOyB9OworCQlDMkNGMzlDMjE2RTE1QTgxMDBERDY5QkUgLyogSlNBUElXcmFw
cGVyT2JqZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBDMkNGMzlDMDE2RTE1QTgxMDBERDY5QkUgLyogSlNBUElXcmFwcGVyT2JqZWN0LmggKi87IH07
CiAJCUMyRDU4QzM0MTU5MTJGRUUwMDIxQTg0NCAvKiBHQ0FjdGl2aXR5Q2FsbGJhY2suY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzJENThDMzMxNTkx
MkZFRTAwMjFBODQ0IC8qIEdDQWN0aXZpdHlDYWxsYmFjay5jcHAgKi87IH07CiAJCUMyRTUyNkJE
MTU5MEVGMDAwMDU0RTQ4RCAvKiBIZWFwVGltZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzJFNTI2QkIxNTkwRUYwMDAwNTRFNDhEIC8qIEhlYXBU
aW1lci5jcHAgKi87IH07CiAJCUMyRTUyNkJFMTU5MEVGMDAwMDU0RTQ4RCAvKiBIZWFwVGltZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyRTUyNkJD
MTU5MEVGMDAwMDU0RTQ4RCAvKiBIZWFwVGltZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTcyMSw2ICsxNzI1LDggQEAKIAkJQzI0MDMwNTMx
NEI0MDRDOTAwNzlFQjY0IC8qIENvcGllZFNwYWNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IENvcGllZFNwYWNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQzI0RDMxRTAxNjFDRDY5NTAwMkFBNERCIC8qIEhlYXBTdGF0aXN0aWNzLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhlYXBTdGF0aXN0aWNzLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzI0RDMxRTExNjFDRDY5NTAwMkFBNERCIC8qIEhl
YXBTdGF0aXN0aWNzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhlYXBTdGF0
aXN0aWNzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMyNUQ3MDk5MTZERTk5RjQw
MEZDQTZCQyAvKiBKU01hbmFnZWRWYWx1ZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IEpTTWFuYWdlZFZhbHVlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlDMjVENzA5QTE2REU5OUY0MDBGQ0E2QkMgLyogSlNNYW5hZ2VkVmFsdWUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNNYW5hZ2VkVmFsdWUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQzI1RjhCQ0IxNTc1NDRBOTAwMjQ1QjcxIC8qIEluY3JlbWVudGFs
U3dlZXBlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbmNyZW1l
bnRhbFN3ZWVwZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMjVGOEJDQzE1
NzU0NEE5MDAyNDVCNzEgLyogSW5jcmVtZW50YWxTd2VlcGVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEluY3JlbWVudGFsU3dlZXBlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlDMkE3RjY4NzE2MDQzMkQ0MDBGNzZCOTggLyogSlNEZXN0cnVjdGlibGVPYmpl
Y3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNEZXN0cnVjdGlibGVPYmpl
Y3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE3MjksNiArMTczNSw4IEBACiAJ
CUMyQzhEMDJCMTRBM0M2QjIwMDU3OEU2NSAvKiBDb3BpZWRTcGFjZUlubGluZXMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29waWVkU3BhY2VJbmxpbmVzLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMyQzhEMDJFMTRBM0NFRkMwMDU3OEU2NSAvKiBDb3BpZWRC
bG9jay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb3BpZWRCbG9jay5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMkM4RDAyRjE0QTNDRUZDMDA1NzhFNjUgLyog
SGVhcEJsb2NrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhlYXBCbG9jay5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMkNGMzlCRjE2RTE1QTgxMDBERDY5QkUg
LyogSlNBUElXcmFwcGVyT2JqZWN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEpTQVBJV3JhcHBlck9iamVjdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUMyQ0YzOUMwMTZFMTVBODEwMERENjlCRSAvKiBKU0FQSVdyYXBwZXJPYmplY3QuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNBUElXcmFwcGVyT2JqZWN0Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMyRDU4QzMzMTU5MTJGRUUwMDIxQTg0NCAvKiBHQ0Fj
dGl2aXR5Q2FsbGJhY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
R0NBY3Rpdml0eUNhbGxiYWNrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzJF
NTI2QkIxNTkwRUYwMDAwNTRFNDhEIC8qIEhlYXBUaW1lci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBIZWFwVGltZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlDMkU1MjZCQzE1OTBFRjAwMDA1NEU0OEQgLyogSGVhcFRpbWVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhlYXBUaW1lci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMjIwMiw2ICsyMjEwLDEwIEBACiAJCQkJRTEyNEE4RjYwRTU1NTc3NTAwMzA5
MUYxIC8qIE9wYXF1ZUpTU3RyaW5nLmNwcCAqLywKIAkJCQlFMTI0QThGNTBFNTU1Nzc1MDAzMDkx
RjEgLyogT3BhcXVlSlNTdHJpbmcuaCAqLywKIAkJCQk1REUzRDBGNDBERDhEREZCMDA0Njg3MTQg
LyogV2ViS2l0QXZhaWxhYmlsaXR5LmggKi8sCisJCQkJQzI1RDcwOTkxNkRFOTlGNDAwRkNBNkJD
IC8qIEpTTWFuYWdlZFZhbHVlLm1tICovLAorCQkJCUMyNUQ3MDlBMTZERTk5RjQwMEZDQTZCQyAv
KiBKU01hbmFnZWRWYWx1ZS5oICovLAorCQkJCUMyQ0YzOUJGMTZFMTVBODEwMERENjlCRSAvKiBK
U0FQSVdyYXBwZXJPYmplY3QuY3BwICovLAorCQkJCUMyQ0YzOUMwMTZFMTVBODEwMERENjlCRSAv
KiBKU0FQSVdyYXBwZXJPYmplY3QuaCAqLywKIAkJCSk7CiAJCQlwYXRoID0gQVBJOwogCQkJc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTI5MTUsNiArMjkyNyw3IEBACiAJCQlpc2EgPSBQQlhI
ZWFkZXJzQnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CiAJCQlm
aWxlcyA9ICgKKwkJCQlDMjVENzA5QzE2REU5OUY0MDBGQ0E2QkMgLyogSlNNYW5hZ2VkVmFsdWUu
aCBpbiBIZWFkZXJzICovLAogCQkJCTg2MDE2MUUzMEYzQTgzQzEwMEY4NDcxMCAvKiBBYnN0cmFj
dE1hY3JvQXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjU1RjBGNTE0RDEwNjNDMDBB
Qzc2NDkgLyogQWJzdHJhY3RQQy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEMzRTUwRTE2RjVD
RDAwQjM0NDYwIC8qIEFQSUNhc3QuaCBpbiBIZWFkZXJzICovLApAQCAtMzE2NSw2ICszMTc4LDcg
QEAKIAkJCQlCQzE4QzQyRDBFMTZGNUNEMDBCMzQ0NjAgLyogSlNWYXJpYWJsZU9iamVjdC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJODZFM0M2MTUxNjdCQUJENzAwNkQ3NjBBIC8qIEpTVmlydHVhbE1h
Y2hpbmUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3NDgyRTkzMTE2QTdDQUQwMDNCMDcxMiAvKiBK
U1dlYWtPYmplY3RNYXBSZWZJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQzJDRjM5QzIx
NkUxNUE4MTAwREQ2OUJFIC8qIEpTQVBJV3JhcHBlck9iamVjdC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQTc0ODJCOTMxMTY3MTE0NzAwM0IwNzEyIC8qIEpTV2Vha09iamVjdE1hcFJlZlByaXZhdGUu
aCBpbiBIZWFkZXJzICovLAogCQkJCTE0NDI1NjYyMTVFREU5OEQwMDY2QTQ5QiAvKiBKU1dpdGhT
Y29wZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODZFM0M2MTkxNjdCQUJFRTAwNkQ3NjBBIC8qIEpT
V3JhcHBlck1hcC5oIGluIEhlYWRlcnMgKi8sCkBAIC0zNzgwLDYgKzM3OTQsNyBAQAogCQkJCTBG
RDNDODI2MTQxMTVENDAwMEZEODFDQiAvKiBERkdEcml2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMEZGMEYxOUUxNkI3MkEwQjAwNURGOTVCIC8qIERGR0VkZ2UuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMEZCQzBBRTcxNDk2QzdDNDAwRDRGQkREIC8qIERGR0V4aXRQcm9maWxlLmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCUMyQ0YzOUMxMTZFMTVBODEwMERENjlCRSAvKiBKU0FQSVdyYXBwZXJP
YmplY3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYyQkRDMTUxNTFDNUQ0RDAwQ0Q4OTEwIC8q
IERGR0ZpeHVwUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODZFQzlEQzcxMzI4REY4MjAw
MkIyQUQ3IC8qIERGR0dyYXBoLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2RUM5RENCMTMyOERG
ODIwMDJCMkFENyAvKiBERkdKSVRDb21waWxlci5jcHAgaW4gU291cmNlcyAqLywKQEAgLTM5OTYs
NiArNDAxMSw3IEBACiAJCQkJQkNDRjBEMEMwRUYwQjhBNTAwNDEzQzhGIC8qIFN0cnVjdHVyZVN0
dWJJbmZvLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGOTE5RDI4MTU4NTY3NzMwMDRBNEU3RCAv
KiBTeW1ib2xUYWJsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNzM4NjU1NTExODY5N0I0MDA1
NDAyNzkgLyogVGh1bmtHZW5lcmF0b3JzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUMyNUQ3MDlC
MTZERTk5RjQwMEZDQTZCQyAvKiBKU01hbmFnZWRWYWx1ZS5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CTE0QTQyRTNGMEY0RjYwRUUwMDU5OTA5OSAvKiBUaW1lb3V0Q2hlY2tlci5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkwRkY0Mjc0QTE1OEVCRTkxMDA0Q0I5RkYgLyogdWRpczg2LmMgaW4gU291cmNl
cyAqLywKIAkJCQkwRkY0Mjc0MDE1OEVCRThCMDA0Q0I5RkYgLyogdWRpczg2X2RlY29kZS5jIGlu
IFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxPYmplY3QuY3BwCShyZXZpc2lvbiAxNDQ3ODApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDYg
KzQ3LDcgQEAKICNpbmNsdWRlICJGdW5jdGlvblByb3RvdHlwZS5oIgogI2luY2x1ZGUgIkdldHRl
clNldHRlci5oIgogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCisjaW5jbHVkZSAiSlNBUElXcmFw
cGVyT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNBY3RpdmF0aW9uLmgiCiAjaW5jbHVkZSAiSlNCb3Vu
ZEZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNDYWxsYmFja0NvbnN0cnVjdG9yLmgiCkBAIC0yMjks
NiArMjMwLDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6cmVzZXQoSlNWYWx1ZSBwcm90bwogICAg
IG1fYXJndW1lbnRzU3RydWN0dXJlLnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIEFyZ3Vt
ZW50czo6Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgbV9vYmplY3RQ
cm90b3R5cGUuZ2V0KCkpKTsKICAgICBtX2NhbGxiYWNrQ29uc3RydWN0b3JTdHJ1Y3R1cmUuc2V0
KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgSlNDYWxsYmFja0NvbnN0cnVjdG9yOjpjcmVhdGVT
dHJ1Y3R1cmUoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBtX29iamVjdFByb3RvdHlwZS5nZXQo
KSkpOwogICAgIG1fY2FsbGJhY2tPYmplY3RTdHJ1Y3R1cmUuc2V0KGV4ZWMtPmdsb2JhbERhdGEo
KSwgdGhpcywgSlNDYWxsYmFja09iamVjdDxKU0Rlc3RydWN0aWJsZU9iamVjdD46OmNyZWF0ZVN0
cnVjdHVyZShleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIG1fb2JqZWN0UHJvdG90eXBlLmdldCgp
KSk7CisgICAgbV9vYmpjV3JhcHBlck9iamVjdFN0cnVjdHVyZS5zZXQoZXhlYy0+Z2xvYmFsRGF0
YSgpLCB0aGlzLCBKU0NhbGxiYWNrT2JqZWN0PEpTQVBJV3JhcHBlck9iamVjdD46OmNyZWF0ZVN0
cnVjdHVyZShleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIG1fb2JqZWN0UHJvdG90eXBlLmdldCgp
KSk7CiAKICAgICBtX2FycmF5UHJvdG90eXBlLnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMs
IEFycmF5UHJvdG90eXBlOjpjcmVhdGUoZXhlYywgdGhpcywgQXJyYXlQcm90b3R5cGU6OmNyZWF0
ZVN0cnVjdHVyZShleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIG1fb2JqZWN0UHJvdG90eXBlLmdl
dCgpKSkpOwogICAgIApAQCAtNTExLDYgKzUxMyw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnZp
c2l0Q2hpbGRyZW4oSlNDZWwKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9jYWxs
YmFja0NvbnN0cnVjdG9yU3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVj
dC0+bV9jYWxsYmFja0Z1bmN0aW9uU3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhp
c09iamVjdC0+bV9jYWxsYmFja09iamVjdFN0cnVjdHVyZSk7CisgICAgdmlzaXRvci5hcHBlbmQo
JnRoaXNPYmplY3QtPm1fb2JqY1dyYXBwZXJPYmplY3RTdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3Iu
YXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2RhdGVTdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5k
KCZ0aGlzT2JqZWN0LT5tX251bGxQcm90b3R5cGVPYmplY3RTdHJ1Y3R1cmUpOwogICAgIHZpc2l0
b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2Vycm9yU3RydWN0dXJlKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAkocmV2aXNpb24gMTQ0
NzgwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAko
d29ya2luZyBjb3B5KQpAQCAtMTQxLDYgKzE0MSw3IEBAIHByb3RlY3RlZDoKICAgICBXcml0ZUJh
cnJpZXI8U3RydWN0dXJlPiBtX2NhbGxiYWNrQ29uc3RydWN0b3JTdHJ1Y3R1cmU7CiAgICAgV3Jp
dGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9jYWxsYmFja0Z1bmN0aW9uU3RydWN0dXJlOwogICAgIFdy
aXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fY2FsbGJhY2tPYmplY3RTdHJ1Y3R1cmU7CisgICAgV3Jp
dGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9vYmpjV3JhcHBlck9iamVjdFN0cnVjdHVyZTsKICAgICBX
cml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2RhdGVTdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVy
PFN0cnVjdHVyZT4gbV9udWxsUHJvdG90eXBlT2JqZWN0U3RydWN0dXJlOwogICAgIFdyaXRlQmFy
cmllcjxTdHJ1Y3R1cmU+IG1fZXJyb3JTdHJ1Y3R1cmU7CkBAIC0zMDAsNiArMzAxLDcgQEAgcHVi
bGljOgogICAgIFN0cnVjdHVyZSogY2FsbGJhY2tDb25zdHJ1Y3RvclN0cnVjdHVyZSgpIGNvbnN0
IHsgcmV0dXJuIG1fY2FsbGJhY2tDb25zdHJ1Y3RvclN0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0
cnVjdHVyZSogY2FsbGJhY2tGdW5jdGlvblN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2Fs
bGJhY2tGdW5jdGlvblN0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSogY2FsbGJhY2tP
YmplY3RTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2NhbGxiYWNrT2JqZWN0U3RydWN0dXJl
LmdldCgpOyB9CisgICAgU3RydWN0dXJlKiBvYmpjV3JhcHBlck9iamVjdFN0cnVjdHVyZSgpIGNv
bnN0IHsgcmV0dXJuIG1fb2JqY1dyYXBwZXJPYmplY3RTdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBT
dHJ1Y3R1cmUqIGRhdGVTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2RhdGVTdHJ1Y3R1cmUu
Z2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIG51bGxQcm90b3R5cGVPYmplY3RTdHJ1Y3R1cmUoKSBj
b25zdCB7IHJldHVybiBtX251bGxQcm90b3R5cGVPYmplY3RTdHJ1Y3R1cmUuZ2V0KCk7IH0KICAg
ICBTdHJ1Y3R1cmUqIGVycm9yU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9lcnJvclN0cnVj
dHVyZS5nZXQoKTsgfQo=
</data>
<flag name="commit-queue"
          id="212543"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>191553</attachid>
            <date>2013-03-05 13:37:54 -0800</date>
            <delta_ts>2013-03-05 13:47:28 -0800</delta_ts>
            <desc>moar build fix</desc>
            <filename>the.patch</filename>
            <type>text/plain</type>
            <size>50205</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTQ0Nzg5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwNSBA
QAorMjAxMy0wMy0wNSAgTWFyayBIYWhuZW5iZXJnICA8bWhhaG5lbmJlcmdAYXBwbGUuY29tPgor
CisgICAgICAgIE9iamVjdGl2ZS1DIEFQSTogTmVlZCBhIGdvb2Qgd2F5IHRvIHJlZmVyZW5jZSBl
dmVudCBoYW5kbGVycyB3aXRob3V0IGNhdXNpbmcgY3ljbGVzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTEwODgKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBKU01hbmFnZWRWYWx1ZSBpcyBsaWtlIGEgc3Bl
Y2lhbCBraW5kIG9mIHdlYWsgdmFsdWUuIFdoZW4geW91IGNyZWF0ZSBhIEpTTWFuYWdlZFZhbHVl
LCB5b3UgY2FuCisgICAgICAgIHN1cHBseSBhbiBPYmplY3RpdmUtQyBvYmplY3QgYXMgaXRzICJv
d25lciIuIEFzIGxvbmcgYXMgdGhlIE9iamVjdGl2ZS1DIG93bmVyIG9iamVjdCByZW1haW5zCisg
ICAgICAgIGFsaXZlIGFuZCBpdHMgd3JhcHBlciByZW1haW5zIGFjY2Vzc2libGUgdG8gdGhlIEpT
QyBnYXJiYWdlIGNvbGxlY3RvciAoZS5nLiBieSBiZWluZyBtYXJrZWQgYnkgCisgICAgICAgIHRo
ZSBnbG9iYWwgb2JqZWN0KSwgdGhlIHJlZmVyZW5jZSB0byB0aGUgSmF2YVNjcmlwdCB2YWx1ZSBp
cyBzdHJvbmcuIEFzIHNvb24gYXMgdGhlIE9iamVjdGl2ZS1DCisgICAgICAgIG93bmVyIGlzIGRl
YWxsb2NhdGVkIG9yIGl0cyB3cmFwcGVyIGJlY29tZXMgaW5hY2Nlc3NpYmxlIHRvIHRoZSBnYXJi
YWdlIGNvbGxlY3RvciwgdGhlIHJlZmVyZW5jZQorICAgICAgICBiZWNvbWVzIHdlYWsuCisKKyAg
ICAgICAgSWYgeW91IGRvIG5vdCBzdXBwbHkgYW4gb3duZXIgb3IgeW91IHVzZSB0aGUgd2Vha1Zh
bHVlV2l0aFZhbHVlOiBjb252ZW5pZW5jZSBjbGFzcyBtZXRob2QsIHRoZQorICAgICAgICByZXR1
cm5lZCBKU01hbmFnZWRWYWx1ZSBiZWhhdmVzIGFzIGEgbm9ybWFsIHdlYWsgcmVmZXJlbmNlLgor
CisgICAgICAgIFRoaXMgbmV3IGNsYXNzIGFsbG93cyBjbGllbnRzIHRvIG1haW50YWluIHJlZmVy
ZW5jZXMgdG8gSmF2YVNjcmlwdCB2YWx1ZXMgaW4gdGhlIE9iamVjdGl2ZS1DCisgICAgICAgIGhl
YXAgd2l0aG91dCBjcmVhdGluZyByZWZlcmVuY2UgY3ljbGVzL2xlYWtpbmcgbWVtb3J5LgorCisg
ICAgICAgICogQVBJL0pTQVBJV3JhcHBlck9iamVjdC5jcHA6IEFkZGVkLgorICAgICAgICAoSlND
KToKKyAgICAgICAgKEpTQzo6OjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpKU0FQ
SVdyYXBwZXJPYmplY3Q6OkpTQVBJV3JhcHBlck9iamVjdCk6IFRoaXMgaXMgYSBzcGVjaWFsIEpT
T2JqZWN0IGZvciB0aGUgT2JqZWN0aXZlLUMgQVBJIHRoYXQga25vd3MKKyAgICAgICAgZm9yIHRo
ZSBwdXJwb3NlcyBvZiBnYXJiYWdlIGNvbGxlY3Rpb24vbWFya2luZyB0aGF0IGl0IHdyYXBzIGFu
IG9wYXF1ZSBPYmplY3RpdmUtQyBvYmplY3QuCisgICAgICAgIChKU0M6OkpTQVBJV3JhcHBlck9i
amVjdDo6dmlzaXRDaGlsZHJlbik6IFdlIGFkZCB0aGUgcG9pbnRlciB0byB0aGUgd3JhcHBlZCBP
YmplY3RpdmUtQyBvYmplY3QgdG8gdGhlIHNldCBvZgorICAgICAgICBvcGFxdWUgcm9vdHMgc28g
dGhhdCB0aGUgd2VhayBoYW5kbGUgb3duZXIgZm9yIEpTTWFuYWdlZFZhbHVlcyBjYW4gZmluZCBp
dCBsYXRlci4KKyAgICAgICAgKiBBUEkvSlNBUElXcmFwcGVyT2JqZWN0Lmg6IEFkZGVkLgorICAg
ICAgICAoSlNDKToKKyAgICAgICAgKEpTQVBJV3JhcHBlck9iamVjdCk6CisgICAgICAgIChKU0M6
OkpTQVBJV3JhcHBlck9iamVjdDo6d3JhcHBlZE9iamVjdCk6CisgICAgICAgIChKU0M6OkpTQVBJ
V3JhcHBlck9iamVjdDo6c2V0V3JhcHBlZE9iamVjdCk6CisgICAgICAgICogQVBJL0pTQmFzZS5j
cHA6CisgICAgICAgIChKU1N5bmNocm9ub3VzR2FyYmFnZUNvbGxlY3QpOgorICAgICAgICAqIEFQ
SS9KU0Jhc2VQcml2YXRlLmg6CisgICAgICAgICogQVBJL0pTQ2FsbGJhY2tPYmplY3QuY3BwOgor
ICAgICAgICAoSlNDKToKKyAgICAgICAgKiBBUEkvSlNDYWxsYmFja09iamVjdC5oOgorICAgICAg
ICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0OjpkZXN0cm95KTogTW92ZWQgdGhpcyB0byB0aGUgaGVh
ZGVyIHNvIHRoYXQgd2UgZG9uJ3QgZ2V0IGxpbmsgZXJyb3JzIHdpdGggSlNBUElXcmFwcGVyT2Jq
ZWN0LgorICAgICAgICAqIEFQSS9KU0NvbnRleHQubW06CisgICAgICAgICgtW0pTQ29udGV4dCBp
bml0V2l0aFZpcnR1YWxNYWNoaW5lOl0pOiBXZSB3ZXJlbid0IGFkZGluZyBtYW51YWxseSBhbGxv
Y2F0ZWQvaW5pdGlhbGl6ZWQgSlNWaXJ0dWFsTWFjaGluZSBvYmplY3RzIHRvIAorICAgICAgICB0
aGUgZ2xvYmFsIGNhY2hlIG9mIHZpcnR1YWwgbWFjaGluZXMuIFRoZSBpbml0IG1ldGhvZHMgaGFu
ZGxlIHRoaXMgbm93IHJhdGhlciB0aGFuIGNvbnRleHRXaXRoR2xvYmFsQ29udGV4dFJlZiwgc2lu
Y2UgCisgICAgICAgIG5vdCBldmVyeW9uZSBpcyBndWFyYW50ZWVkIHRvIHVzZSB0aGUgbGF0dGVy
LgorICAgICAgICAoLVtKU0NvbnRleHQgaW5pdFdpdGhHbG9iYWxDb250ZXh0UmVmOl0pOgorICAg
ICAgICAoK1tKU0NvbnRleHQgY29udGV4dFdpdGhHbG9iYWxDb250ZXh0UmVmOl0pOgorICAgICAg
ICAqIEFQSS9KU01hbmFnZWRWYWx1ZS5oOiBBZGRlZC4KKyAgICAgICAgKiBBUEkvSlNNYW5hZ2Vk
VmFsdWUubW06IEFkZGVkLgorICAgICAgICAoSlNNYW5hZ2VkVmFsdWVIYW5kbGVPd25lcik6Cisg
ICAgICAgIChtYW5hZ2VkVmFsdWVIYW5kbGVPd25lcik6CisgICAgICAgICgrW0pTTWFuYWdlZFZh
bHVlIHdlYWtWYWx1ZVdpdGhWYWx1ZTpdKToKKyAgICAgICAgKCtbSlNNYW5hZ2VkVmFsdWUgbWFu
YWdlZFZhbHVlV2l0aFZhbHVlOm93bmVyOl0pOgorICAgICAgICAoLVtKU01hbmFnZWRWYWx1ZSBp
bml0XSk6IFdlIGV4cGxpY2l0bHkgY2FsbCB0aGUgQVJDIGVudHJ5cG9pbnRzIHRvIGluaXRpYWxp
emUvZ2V0IHRoZSB3ZWFrIG93bmVyIGZpZWxkIHNpbmNlIHdlIGRvbid0IAorICAgICAgICB1c2Ug
QVJDIHdoZW4gYnVpbGRpbmcgb3VyIGZyYW1ld29yay4KKyAgICAgICAgKC1bSlNNYW5hZ2VkVmFs
dWUgaW5pdFdpdGhWYWx1ZTpdKToKKyAgICAgICAgKC1bSlNNYW5hZ2VkVmFsdWUgaW5pdFdpdGhW
YWx1ZTpvd25lcjpdKToKKyAgICAgICAgKC1bSlNNYW5hZ2VkVmFsdWUgZGVhbGxvY10pOgorICAg
ICAgICAoLVtKU01hbmFnZWRWYWx1ZSB2YWx1ZV0pOgorICAgICAgICAoLVtKU01hbmFnZWRWYWx1
ZSB3ZWFrT3duZXJdKToKKyAgICAgICAgKEpTTWFuYWdlZFZhbHVlSGFuZGxlT3duZXI6OmlzUmVh
Y2hhYmxlRnJvbU9wYXF1ZVJvb3RzKTogSWYgdGhlIE9iamVjdGl2ZS1DIG93bmVyIGlzIHN0aWxs
IGFsaXZlIChpLmUuIGxvYWRpbmcgdGhlIHdlYWsgZmllbGQKKyAgICAgICAgcmV0dXJucyBub24t
bmlsKSBhbmQgdGhhdCB2YWx1ZSB3YXMgYWRkZWQgdG8gdGhlIHNldCBvZiBvcGFxdWUgcm9vdHMg
YnkgdGhlIHdyYXBwZXIgZm9yIHRoYXQgT2JqZWN0aXZlLUMgb3duZXIsIHRoZW4gdGhlIHRoZSAK
KyAgICAgICAgSlNPYmplY3QgdG8gd2hpY2ggdGhlIEpTTWFuYWdlZE9iamVjdCByZWZlcnMgaXMg
c3RpbGwgYWxpdmUuCisgICAgICAgICogQVBJL0pTT2JqZWN0UmVmLmNwcDogV2UgaGF2ZSB0byBh
ZGQgZXhwbGljaXQgY2hlY2tzIGZvciB0aGUgSlNBUElXcmFwcGVyT2JqZWN0LCBqdXN0IGxpa2Ug
dGhlIG90aGVyIHR5cGVzIG9mIEpTQ2FsbGJhY2tPYmplY3RzLgorICAgICAgICAoSlNPYmplY3RH
ZXRQcml2YXRlKToKKyAgICAgICAgKEpTT2JqZWN0U2V0UHJpdmF0ZSk6CisgICAgICAgIChKU09i
amVjdEdldFByaXZhdGVQcm9wZXJ0eSk6CisgICAgICAgIChKU09iamVjdFNldFByaXZhdGVQcm9w
ZXJ0eSk6CisgICAgICAgIChKU09iamVjdERlbGV0ZVByaXZhdGVQcm9wZXJ0eSk6CisgICAgICAg
ICogQVBJL0pTVmFsdWUubW06CisgICAgICAgIChvYmplY3RUb1ZhbHVlV2l0aG91dENvcHkpOgor
ICAgICAgICAqIEFQSS9KU1ZhbHVlUmVmLmNwcDoKKyAgICAgICAgKEpTVmFsdWVJc09iamVjdE9m
Q2xhc3MpOgorICAgICAgICAqIEFQSS9KU1ZpcnR1YWxNYWNoaW5lLm1tOgorICAgICAgICAoLVtK
U1ZpcnR1YWxNYWNoaW5lIGluaXRXaXRoQ29udGV4dEdyb3VwUmVmOl0pOgorICAgICAgICAoK1tK
U1ZpcnR1YWxNYWNoaW5lIHZpcnR1YWxNYWNoaW5lV2l0aENvbnRleHRHcm91cFJlZjpdKToKKyAg
ICAgICAgKiBBUEkvSlNXcmFwcGVyTWFwLm1tOgorICAgICAgICAod3JhcHBlckZpbmFsaXplKToK
KyAgICAgICAgKG1ha2VXcmFwcGVyKTogVGhpcyBpcyBvdXIgb3duIGludGVybmFsIHZlcnNpb24g
b2YgSlNPYmplY3RNYWtlIHdoaWNoIGNyZWF0ZXMgSlNBUElXcmFwcGVyT2JqZWN0cywgdGhlIE9i
ai1DIEFQSSAKKyAgICAgICAgdmVyc2lvbiBvZiBKU0NhbGxiYWNrT2JqZWN0cy4KKyAgICAgICAg
KGNyZWF0ZU9iamVjdFdpdGhDdXN0b21CcmFuZCk6CisgICAgICAgICgtW0pTT2JqQ0NsYXNzSW5m
byB3cmFwcGVyRm9yT2JqZWN0Ol0pOgorICAgICAgICAodHJ5VW53cmFwT2JqY09iamVjdCk6Cisg
ICAgICAgICogQVBJL0phdmFTY3JpcHRDb3JlLmg6CisgICAgICAgICogQVBJL3Rlc3RzL3Rlc3Rh
cGkubW06IEFkZGVkIG5ldyB0ZXN0cyBmb3IgdGhlIHN0cm9uZyBhbmQgd2VhayB1c2VzIG9mIEpT
TWFuYWdlZFZhbHVlIGluIHRoZSBjb250ZXh0IG9mIGFuIAorICAgICAgICBvbmNsaWNrIGhhbmRs
ZXIgZm9yIGFuIE9iamVjdGl2ZS1DIG9iamVjdCBpbnNlcnRlZCBpbnRvIGEgSlNDb250ZXh0Lgor
ICAgICAgICAoLVtUZXh0WFlaIHNldFdlYWtPbmNsaWNrOl0pOgorICAgICAgICAoLVtUZXh0WFla
IHNldE9uY2xpY2s6XSk6CisgICAgICAgICgtW1RleHRYWVogd2Vha09uY2xpY2tdKToKKyAgICAg
ICAgKC1bVGV4dFhZWiBvbmNsaWNrXSk6CisgICAgICAgICgtW1RleHRYWVogY2xpY2tdKToKKyAg
ICAgICAgKiBDTWFrZUxpc3RzLnR4dDogVmFyaW91cyBidWlsZCBzeXN0ZW0gYWRkaXRpb25zLgor
ICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogSmF2YVNjcmlwdENvcmUu
Z3lwaToKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUudmNwcm9qOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6IEFk
ZGVkIHRoZSBuZXcgY2Fub25pY2FsIFN0cnVjdHVyZSBmb3IgdGhlIEpTQVBJV3JhcHBlck9iamVj
dCBjbGFzcy4KKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnJlc2V0KToKKyAgICAgICAg
KEpTQyk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKToKKyAg
ICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgIChKU0dsb2JhbE9iamVj
dCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpvYmpjV3JhcHBlck9iamVjdFN0cnVj
dHVyZSk6CisKIDIwMTMtMDMtMDUgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21h
aWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxNDQ3MDguCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAxNDQ3ODApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTI0
LDYgKzI0LDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX0lOQ0xVREVfRElSRUNUT1JJRVMKICkKIAog
c2V0KEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKKyAgICBBUEkvSlNBUElXcmFwcGVyT2JqZWN0LmNw
cAogICAgIEFQSS9KU0Jhc2UuY3BwCiAgICAgQVBJL0pTQ2FsbGJhY2tDb25zdHJ1Y3Rvci5jcHAK
ICAgICBBUEkvSlNDYWxsYmFja0Z1bmN0aW9uLmNwcApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHJldmlzaW9uIDE0NDc4MCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw2ICsz
Niw4IEBAIGphdmFzY3JpcHRjb3JlX2J1aWx0X25vc291cmNlcyArPSBcCiBqYXZhc2NyaXB0Y29y
ZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0FQSUNhc3QuaCBcCiAJ
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9BUElTaGltcy5oIFwKKyAgICBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL0pTQVBJV3JhcHBlck9iamVjdC5jcHAgXAorICAgIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvSlNBUElXcmFwcGVyT2JqZWN0LmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvSlNCYXNlLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0Jhc2VQcml2
YXRlLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja0NvbnN0cnVjdG9y
LmNwcCBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZ3lwaQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZ3lwaQko
cmV2aXNpb24gMTQ0NzgwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Lmd5cGkJKHdvcmtpbmcgY29weSkKQEAgLTM2LDYgKzM2LDggQEAKICAgICAgICAgICAgICdBUEkv
QVBJU2hpbXMuaCcsCiAgICAgICAgICAgICAnQVBJL0phdmFTY3JpcHRDb3JlLmgnLAogICAgICAg
ICAgICAgJ0FQSS9KYXZhU2NyaXB0LmgnLAorICAgICAgICAgICAgJ0FQSS9KU0FQSVdyYXBwZXJP
YmplY3QuY3BwJywKKyAgICAgICAgICAgICdBUEkvSlNBUElXcmFwcGVyT2JqZWN0LmgnLAogICAg
ICAgICAgICAgJ0FQSS9KU0Jhc2UuY3BwJywKICAgICAgICAgICAgICdBUEkvSlNCYXNlLmgnLAog
ICAgICAgICAgICAgJ0FQSS9KU0Jhc2VQcml2YXRlLmgnLApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL1RhcmdldC5wcmkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL1Rh
cmdldC5wcmkJKHJldmlzaW9uIDE0NDc4MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9UYXJn
ZXQucHJpCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3IEBAIElOU1RBTExERVBTICs9IGFs
bAogZGVidWdfYW5kX3JlbGVhc2U6IElOQ0xVREVQQVRIICs9ICQkSkFWQVNDUklQVENPUkVfR0VO
RVJBVEVEX1NPVVJDRVNfRElSLyQkdGFyZ2V0U3ViRGlyKCkKIAogU09VUkNFUyArPSBcCisgICAg
QVBJL0pTQVBJV3JhcHBlck9iamVjdC5jcHAgXAogICAgIEFQSS9KU0Jhc2UuY3BwIFwKICAgICBB
UEkvSlNDYWxsYmFja0NvbnN0cnVjdG9yLmNwcCBcCiAgICAgQVBJL0pTQ2FsbGJhY2tGdW5jdGlv
bi5jcHAgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0FQSVdyYXBwZXJPYmpl
Y3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNBUElXcmFw
cGVyT2JqZWN0LmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
SlNBUElXcmFwcGVyT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDY1IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTQVBJV3JhcHBlck9i
amVjdC5oIgorCisjaW5jbHVkZSAiSlNPYmplY3QuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5s
aW5lcy5oIgorI2luY2x1ZGUgIkpTQ2FsbGJhY2tPYmplY3QuaCIKKyNpbmNsdWRlICJKU0NlbGxJ
bmxpbmVzLmgiCisjaW5jbHVkZSAiU2xvdFZpc2l0b3JJbmxpbmVzLmgiCisjaW5jbHVkZSAiU3Ry
dWN0dXJlLmgiCisjaW5jbHVkZSAiU3RydWN0dXJlSW5saW5lcy5oIgorCituYW1lc3BhY2UgSlND
IHsKKyAgICAKK3RlbXBsYXRlIDw+IGNvbnN0IENsYXNzSW5mbyBKU0NhbGxiYWNrT2JqZWN0PEpT
QVBJV3JhcHBlck9iamVjdD46OnNfaW5mbyA9IHsgIkVudW1lcmFibGVDYWxsYmFja09iamVjdCIs
ICZCYXNlOjpzX2luZm8sIDAsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNDYWxsYmFja09iamVj
dCkgfTsKKwordGVtcGxhdGU8PiBjb25zdCBib29sIEpTQ2FsbGJhY2tPYmplY3Q8SlNBUElXcmFw
cGVyT2JqZWN0Pjo6bmVlZHNEZXN0cnVjdGlvbiA9IHRydWU7CisKK3RlbXBsYXRlIDw+CitTdHJ1
Y3R1cmUqIEpTQ2FsbGJhY2tPYmplY3Q8SlNBUElXcmFwcGVyT2JqZWN0Pjo6Y3JlYXRlU3RydWN0
dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNWYWx1ZSBwcm90bykKK3sKKyAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFs
RGF0YSwgZ2xvYmFsT2JqZWN0LCBwcm90bywgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJl
RmxhZ3MpLCAmc19pbmZvKTsKK30KKworSlNBUElXcmFwcGVyT2JqZWN0OjpKU0FQSVdyYXBwZXJP
YmplY3QoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAg
ICA6IEJhc2UoZ2xvYmFsRGF0YSwgc3RydWN0dXJlKQorICAgICwgbV93cmFwcGVkT2JqZWN0KDAp
Cit7Cit9CisKK3ZvaWQgSlNBUElXcmFwcGVyT2JqZWN0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCog
Y2VsbCwgSlNDOjpTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBKU0FQSVdyYXBwZXJPYmpl
Y3QqIHRoaXNPYmplY3QgPSBKU0M6OmpzQ2FzdDxKU0FQSVdyYXBwZXJPYmplY3QqPihjZWxsKTsK
KyAgICBDT01QSUxFX0FTU0VSVChTdHJ1Y3R1cmVGbGFncyAmIE92ZXJyaWRlc1Zpc2l0Q2hpbGRy
ZW4sIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW5XaXRob3V0U2V0dGluZ0ZsYWcpOworICAgIEJhc2U6
OnZpc2l0Q2hpbGRyZW4oY2VsbCwgdmlzaXRvcik7CisKKyAgICBpZiAodGhpc09iamVjdC0+d3Jh
cHBlZE9iamVjdCgpKQorICAgICAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3QodGhpc09iamVjdC0+
d3JhcHBlZE9iamVjdCgpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL0pTQVBJV3JhcHBlck9iamVjdC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNBUElXcmFwcGVyT2JqZWN0LmgJKHJldmlzaW9uIDAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQVBJV3JhcHBlck9iamVjdC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsNTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEpTQVBJV3Jh
cHBlck9iamVjdF9oCisjZGVmaW5lIEpTQVBJV3JhcHBlck9iamVjdF9oCisKKyNpbmNsdWRlICJK
U0Jhc2UuaCIKKyNpbmNsdWRlICJKU0Rlc3RydWN0aWJsZU9iamVjdC5oIgorI2luY2x1ZGUgIldl
YWtSZWZlcmVuY2VIYXJ2ZXN0ZXIuaCIKKworbmFtZXNwYWNlIEpTQyB7CisgICAgCitjbGFzcyBK
U0FQSVdyYXBwZXJPYmplY3QgOiBwdWJsaWMgSlNEZXN0cnVjdGlibGVPYmplY3QgeworcHVibGlj
OgorICAgIHR5cGVkZWYgSlNEZXN0cnVjdGlibGVPYmplY3QgQmFzZTsKKyAgICAKKyAgICBzdGF0
aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIEpTQzo6U2xvdFZpc2l0b3ImKTsKKyAgICAK
KyAgICB2b2lkKiB3cmFwcGVkT2JqZWN0KCkgeyByZXR1cm4gbV93cmFwcGVkT2JqZWN0OyB9Cisg
ICAgdm9pZCBzZXRXcmFwcGVkT2JqZWN0KHZvaWQqIHdyYXBwZWRPYmplY3QpIHsgbV93cmFwcGVk
T2JqZWN0ID0gd3JhcHBlZE9iamVjdDsgfQorCitwcm90ZWN0ZWQ6CisgICAgc3RhdGljIGNvbnN0
IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiB8IEJhc2U6
OlN0cnVjdHVyZUZsYWdzOworICAgIAorICAgIEpTQVBJV3JhcHBlck9iamVjdChKU0dsb2JhbERh
dGEmLCBTdHJ1Y3R1cmUqKTsKKworcHJpdmF0ZToKKyAgICB2b2lkKiBtX3dyYXBwZWRPYmplY3Q7
Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEpTQVBJV3JhcHBlck9iamVj
dF9oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQmFzZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0Jhc2UuY3BwCShyZXZpc2lvbiAxNDQ3
ODApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQmFzZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTExMCwzICsxMTAsMTMgQEAgdm9pZCBKU1JlcG9ydEV4dHJhTWVtb3J5Q29zdChKU0Nv
bnRleHRSZQogICAgIEFQSUVudHJ5U2hpbSBlbnRyeVNoaW0oZXhlYyk7CiAgICAgZXhlYy0+Z2xv
YmFsRGF0YSgpLmhlYXAucmVwb3J0RXh0cmFNZW1vcnlDb3N0KHNpemUpOwogfQorCit2b2lkIEpT
U3luY2hyb25vdXNHYXJiYWdlQ29sbGVjdChKU0NvbnRleHRSZWYgY3R4KQoreworICAgIGlmICgh
Y3R4KQorICAgICAgICByZXR1cm47CisKKyAgICBFeGVjU3RhdGUqIGV4ZWMgPSB0b0pTKGN0eCk7
CisgICAgQVBJRW50cnlTaGltIGVudHJ5U2hpbShleGVjKTsKKyAgICBleGVjLT5nbG9iYWxEYXRh
KCkuaGVhcC5jb2xsZWN0QWxsR2FyYmFnZSgpOworfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9KU0Jhc2VQcml2YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9KU0Jhc2VQcml2YXRlLmgJKHJldmlzaW9uIDE0NDc4MCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvSlNCYXNlUHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00NSw2ICs0
NSwxNSBAQCByZWdpb24uCiAqLwogSlNfRVhQT1JUIHZvaWQgSlNSZXBvcnRFeHRyYU1lbW9yeUNv
c3QoSlNDb250ZXh0UmVmIGN0eCwgc2l6ZV90IHNpemUpIEFWQUlMQUJMRV9JTl9XRUJLSVRfVkVS
U0lPTl80XzA7CiAKKy8qIQorQGZ1bmN0aW9uCitAYWJzdHJhY3QgU3luY2hyb25vdXNseSBydW5z
IGEgZnVsbCBtYXJrLXN3ZWVwIGdhcmJhZ2UgY29sbGVjdGlvbi4KK0BwYXJhbSBjdHggVGhlIGV4
ZWN1dGlvbiBjb250ZXh0IHRvIHVzZS4KK0BkaXNjdXNzaW9uIFRoaXMgZnVuY3Rpb24gaXMgb25s
eSB1c2VkIGludGVybmFsbHkgZm9yIHRlc3RzLiBJZiB5b3UncmUgbm90IAorc3VyZSB5b3UgbmVl
ZCB0byB1c2UgdGhpcyBmdW5jdGlvbiB0aGVuIHlvdSBkb24ndCBuZWVkIHRvLgorKi8KK0pTX0VY
UE9SVCB2b2lkIEpTU3luY2hyb25vdXNHYXJiYWdlQ29sbGVjdChKU0NvbnRleHRSZWYgY3R4KTsK
KwogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmNwcAkocmV2aXNpb24gMTQ0NzgwKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNjEsMTIgKzYxLDYgQEAgU3RydWN0dXJlKiBKU0NhbGxiYWNrT2JqZWN0PEpTR2xv
YmFsT2JqZQogICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBnbG9iYWxP
YmplY3QsIHByb3RvLCBUeXBlSW5mbyhHbG9iYWxPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyks
ICZzX2luZm8pOyAKIH0KIAotdGVtcGxhdGUgPGNsYXNzIFBhcmVudD4KLXZvaWQgSlNDYWxsYmFj
a09iamVjdDxQYXJlbnQ+OjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKLXsKLSAgICBzdGF0aWNfY2Fz
dDxKU0NhbGxiYWNrT2JqZWN0Kj4oY2VsbCktPkpTQ2FsbGJhY2tPYmplY3Q6On5KU0NhbGxiYWNr
T2JqZWN0KCk7Ci19Ci0KIHZvaWQgSlNDYWxsYmFja09iamVjdERhdGE6OmZpbmFsaXplKEhhbmRs
ZTxVbmtub3duPiBoYW5kbGUsIHZvaWQqIGNvbnRleHQpCiB7CiAgICAgSlNDbGFzc1JlZiBqc0Ns
YXNzID0gc3RhdGljX2Nhc3Q8SlNDbGFzc1JlZj4oY29udGV4dCk7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3QuaAkocmV2aXNpb24gMTQ0NzgwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEzNiw3ICsxMzYsMTAgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0NhbGxiYWNr
T2JqZWN0PFBhcmVudD4qIGNyZWF0ZShKU0dsb2JhbERhdGEmLCBKU0NsYXNzUmVmLCBTdHJ1Y3R1
cmUqKTsKIAogICAgIHN0YXRpYyBjb25zdCBib29sIG5lZWRzRGVzdHJ1Y3Rpb247Ci0gICAgc3Rh
dGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKKyAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2Vs
bCogY2VsbCkKKyAgICB7CisgICAgICAgIHN0YXRpY19jYXN0PEpTQ2FsbGJhY2tPYmplY3QqPihj
ZWxsKS0+SlNDYWxsYmFja09iamVjdDo6fkpTQ2FsbGJhY2tPYmplY3QoKTsKKyAgICB9CiAKICAg
ICB2b2lkIHNldFByaXZhdGUodm9pZCogZGF0YSk7CiAgICAgdm9pZCogZ2V0UHJpdmF0ZSgpOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHQubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHQubW0JKHJldmlzaW9uIDE0NDc4
MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0Lm1tCSh3b3JraW5nIGNv
cHkpCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAKICNpbXBvcnQgIkFQ
SUNhc3QuaCIKKyNpbXBvcnQgIkFQSVNoaW1zLmgiCiAjaW1wb3J0ICJKU0NvbnRleHRJbnRlcm5h
bC5oIgogI2ltcG9ydCAiSlNHbG9iYWxPYmplY3QuaCIKICNpbXBvcnQgIkpTVmFsdWVJbnRlcm5h
bC5oIgpAQCAtNzIsNiArNzMsOCBAQCAtIChpZClpbml0V2l0aFZpcnR1YWxNYWNoaW5lOihKU1Zp
cnR1YWxNCiAgICAgICAgIGNvbnRleHQuZXhjZXB0aW9uID0gZXhjZXB0aW9uVmFsdWU7CiAgICAg
fTsKIAorICAgIFttX3ZpcnR1YWxNYWNoaW5lIGFkZENvbnRleHQ6c2VsZiBmb3JHbG9iYWxDb250
ZXh0UmVmOm1fY29udGV4dF07CisKICAgICByZXR1cm4gc2VsZjsKIH0KIApAQCAtMTg3LDYgKzE5
MCw4IEBAIC0gKGlkKWluaXRXaXRoR2xvYmFsQ29udGV4dFJlZjooSlNHbG9iYWwKICAgICAgICAg
Y29udGV4dC5leGNlcHRpb24gPSBleGNlcHRpb25WYWx1ZTsKICAgICB9OwogCisgICAgW21fdmly
dHVhbE1hY2hpbmUgYWRkQ29udGV4dDpzZWxmIGZvckdsb2JhbENvbnRleHRSZWY6bV9jb250ZXh0
XTsKKwogICAgIHJldHVybiBzZWxmOwogfQogCkBAIC0yNTQsMTAgKzI1OSw4IEBAICsgKEpTQ29u
dGV4dCAqKWNvbnRleHRXaXRoR2xvYmFsQ29udGV4dFIKIHsKICAgICBKU1ZpcnR1YWxNYWNoaW5l
ICp2aXJ0dWFsTWFjaGluZSA9IFtKU1ZpcnR1YWxNYWNoaW5lIHZpcnR1YWxNYWNoaW5lV2l0aENv
bnRleHRHcm91cFJlZjp0b1JlZigmdG9KUyhnbG9iYWxDb250ZXh0KS0+Z2xvYmFsRGF0YSgpKV07
CiAgICAgSlNDb250ZXh0ICpjb250ZXh0ID0gW3ZpcnR1YWxNYWNoaW5lIGNvbnRleHRGb3JHbG9i
YWxDb250ZXh0UmVmOmdsb2JhbENvbnRleHRdOwotICAgIGlmICghY29udGV4dCkgeworICAgIGlm
ICghY29udGV4dCkKICAgICAgICAgY29udGV4dCA9IFtbW0pTQ29udGV4dCBhbGxvY10gaW5pdFdp
dGhHbG9iYWxDb250ZXh0UmVmOmdsb2JhbENvbnRleHRdIGF1dG9yZWxlYXNlXTsKLSAgICAgICAg
W3ZpcnR1YWxNYWNoaW5lIGFkZENvbnRleHQ6Y29udGV4dCBmb3JHbG9iYWxDb250ZXh0UmVmOmds
b2JhbENvbnRleHRdOwotICAgIH0KICAgICByZXR1cm4gY29udGV4dDsKIH0KIApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU01hbmFnZWRWYWx1ZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNNYW5hZ2VkVmFsdWUuaAkocmV2aXNpb24gMCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNNYW5hZ2VkVmFsdWUuaAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDUxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBKU01hbmFnZWRWYWx1ZV9o
CisjZGVmaW5lIEpTTWFuYWdlZFZhbHVlX2gKKworI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSlNC
YXNlLmg+CisKKyNpZiBKU0NfT0JKQ19BUElfRU5BQkxFRAorCitAY2xhc3MgSlNWYWx1ZTsKK0Bj
bGFzcyBKU0NvbnRleHQ7CisKK05TX0NMQVNTX0FWQUlMQUJMRSgxMF85LCBOQSkKK0BpbnRlcmZh
Y2UgSlNNYW5hZ2VkVmFsdWUgOiBOU09iamVjdAorCisrIChKU01hbmFnZWRWYWx1ZSAqKXdlYWtW
YWx1ZVdpdGhWYWx1ZTooSlNWYWx1ZSAqKXZhbHVlOworKyAoSlNNYW5hZ2VkVmFsdWUgKiltYW5h
Z2VkVmFsdWVXaXRoVmFsdWU6KEpTVmFsdWUgKil2YWx1ZSBvd25lcjooaWQpb3duZXI7CisKKy0g
KGlkKWluaXRXaXRoVmFsdWU6KEpTVmFsdWUgKil2YWx1ZTsKKy0gKGlkKWluaXRXaXRoVmFsdWU6
KEpTVmFsdWUgKil2YWx1ZSBvd25lcjooaWQpb3duZXI7CisKKy0gKEpTVmFsdWUgKil2YWx1ZTsK
KworQGVuZAorCisjZW5kaWYgLy8gSlNDX09CSkNfQVBJX0VOQUJMRUQKKworI2VuZGlmIC8vIEpT
TWFuYWdlZFZhbHVlX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNNYW5hZ2Vk
VmFsdWUubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU01hbmFn
ZWRWYWx1ZS5tbQkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNN
YW5hZ2VkVmFsdWUubW0JKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMzQgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiSlNNYW5hZ2VkVmFsdWUuaCIKKwor
I2lmIEpTQ19PQkpDX0FQSV9FTkFCTEVECisKKyNpbXBvcnQgIkFQSUNhc3QuaCIKKyNpbXBvcnQg
IkhlYXAuaCIKKyNpbXBvcnQgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCisjaW1wb3J0ICJKU0NvbnRl
eHRJbnRlcm5hbC5oIgorI2ltcG9ydCAiSlNWYWx1ZUludGVybmFsLmgiCisjaW1wb3J0ICJXZWFr
LmgiCisjaW1wb3J0ICJXZWFrSGFuZGxlT3duZXIuaCIKKyNpbXBvcnQgIk9iamNSdW50aW1lRXh0
cmFzLmgiCisKK2NsYXNzIEpTTWFuYWdlZFZhbHVlSGFuZGxlT3duZXIgOiBwdWJsaWMgSlNDOjpX
ZWFrSGFuZGxlT3duZXIgeworcHVibGljOgorICAgIHZpcnR1YWwgYm9vbCBpc1JlYWNoYWJsZUZy
b21PcGFxdWVSb290cyhKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+LCB2b2lkKiBjb250ZXh0LCBK
U0M6OlNsb3RWaXNpdG9yJik7Cit9OworCitzdGF0aWMgSlNNYW5hZ2VkVmFsdWVIYW5kbGVPd25l
ciogbWFuYWdlZFZhbHVlSGFuZGxlT3duZXIoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwo
SlNNYW5hZ2VkVmFsdWVIYW5kbGVPd25lciwganNNYW5hZ2VkVmFsdWVIYW5kbGVPd25lciwgKCkp
OworICAgIHJldHVybiAmanNNYW5hZ2VkVmFsdWVIYW5kbGVPd25lcjsKK30KKworQGludGVyZmFj
ZSBKU01hbmFnZWRWYWx1ZSAoSW50ZXJuYWwpCistIChpZCl3ZWFrT3duZXI7CitAZW5kCisKK0Bp
bXBsZW1lbnRhdGlvbiBKU01hbmFnZWRWYWx1ZSB7CisgICAgSlNDOjpXZWFrPEpTQzo6SlNPYmpl
Y3Q+IG1fdmFsdWU7CisgICAgaWQgbV93ZWFrT3duZXI7Cit9CisKKysgKEpTTWFuYWdlZFZhbHVl
ICopd2Vha1ZhbHVlV2l0aFZhbHVlOihKU1ZhbHVlICopdmFsdWUKK3sKKyAgICByZXR1cm4gW1tb
c2VsZiBhbGxvY10gaW5pdFdpdGhWYWx1ZTp2YWx1ZV0gYXV0b3JlbGVhc2VdOworfQorCisrIChK
U01hbmFnZWRWYWx1ZSAqKW1hbmFnZWRWYWx1ZVdpdGhWYWx1ZTooSlNWYWx1ZSAqKXZhbHVlIG93
bmVyOihpZClvd25lcgoreworICAgIHJldHVybiBbW1tzZWxmIGFsbG9jXSBpbml0V2l0aFZhbHVl
OnZhbHVlIG93bmVyOm93bmVyXSBhdXRvcmVsZWFzZV07Cit9CisKKy0gKGlkKWluaXQKK3sKKyAg
ICByZXR1cm4gW3NlbGYgaW5pdFdpdGhWYWx1ZTpbSlNWYWx1ZSB2YWx1ZVdpdGhOdWxsSW5Db250
ZXh0OltKU0NvbnRleHQgY3VycmVudENvbnRleHRdXSBvd25lcjpuaWxdOworfQorCistIChpZClp
bml0V2l0aFZhbHVlOihKU1ZhbHVlICopdmFsdWUKK3sKKyAgICByZXR1cm4gW3NlbGYgaW5pdFdp
dGhWYWx1ZTp2YWx1ZSBvd25lcjpuaWxdOworfQorCistIChpZClpbml0V2l0aFZhbHVlOihKU1Zh
bHVlICopdmFsdWUgb3duZXI6KGlkKW93bmVyCit7CisgICAgc2VsZiA9IFtzdXBlciBpbml0XTsK
KyAgICBpZiAoIXNlbGYpCisgICAgICAgIHJldHVybiBuaWw7CisgICAgCisgICAgaWYgKCFKU1Zh
bHVlSXNPYmplY3QoW3ZhbHVlLmNvbnRleHQgZ2xvYmFsQ29udGV4dFJlZl0sIFt2YWx1ZSBKU1Zh
bHVlUmVmXSkpCisgICAgICAgIHJldHVybiBbc2VsZiBpbml0V2l0aFZhbHVlOltKU1ZhbHVlIHZh
bHVlV2l0aE51bGxJbkNvbnRleHQ6dmFsdWUuY29udGV4dF1dOworCisgICAgSlNDOjpKU09iamVj
dCogb2JqZWN0ID0gdG9KUyhKU1ZhbHVlVG9PYmplY3QoW3ZhbHVlLmNvbnRleHQgZ2xvYmFsQ29u
dGV4dFJlZl0sIFt2YWx1ZSBKU1ZhbHVlUmVmXSwgMCkpOworICAgIEpTQzo6V2VhazxKU0M6OkpT
T2JqZWN0PiB3ZWFrKG9iamVjdCwgbWFuYWdlZFZhbHVlSGFuZGxlT3duZXIoKSwgc2VsZik7Cisg
ICAgbV92YWx1ZS5zd2FwKHdlYWspOworCisgICAgb2JqY19pbml0V2VhaygmbV93ZWFrT3duZXIs
IG93bmVyKTsKKworICAgIHJldHVybiBzZWxmOworfQorCistICh2b2lkKWRlYWxsb2MKK3sKKyAg
ICBvYmpjX2Rlc3Ryb3lXZWFrKCZtX3dlYWtPd25lcik7CisgICAgW3N1cGVyIGRlYWxsb2NdOwor
fQorCistIChKU1ZhbHVlICopdmFsdWUKK3sKKyAgICBpZiAoIW1fdmFsdWUpCisgICAgICAgIHJl
dHVybiBuaWw7CisgICAgSlNDOjpKU09iamVjdCogb2JqZWN0ID0gbV92YWx1ZS5nZXQoKTsKKyAg
ICBKU0NvbnRleHQgKmNvbnRleHQgPSBbSlNDb250ZXh0IGNvbnRleHRXaXRoR2xvYmFsQ29udGV4
dFJlZjp0b0dsb2JhbFJlZihvYmplY3QtPnN0cnVjdHVyZSgpLT5nbG9iYWxPYmplY3QoKS0+Z2xv
YmFsRXhlYygpKV07CisgICAgcmV0dXJuIFtKU1ZhbHVlIHZhbHVlV2l0aFZhbHVlOnRvUmVmKG9i
amVjdCkgaW5Db250ZXh0OmNvbnRleHRdOworfQorCitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBK
U01hbmFnZWRWYWx1ZSAoSW50ZXJuYWwpCisKKy0gKGlkKXdlYWtPd25lcgoreworICAgIHJldHVy
biBvYmpjX2xvYWRXZWFrKCZtX3dlYWtPd25lcik7Cit9CisKK0BlbmQKKworYm9vbCBKU01hbmFn
ZWRWYWx1ZUhhbmRsZU93bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6OkhhbmRs
ZTxKU0M6OlVua25vd24+LCB2b2lkKiBjb250ZXh0LCBKU0M6OlNsb3RWaXNpdG9yJiB2aXNpdG9y
KQoreworICAgIEpTTWFuYWdlZFZhbHVlICptYW5hZ2VkVmFsdWUgPSBzdGF0aWNfY2FzdDxKU01h
bmFnZWRWYWx1ZSAqPihjb250ZXh0KTsKKyAgICBpZCB3ZWFrT3duZXIgPSBbbWFuYWdlZFZhbHVl
IHdlYWtPd25lcl07CisgICAgaWYgKCF3ZWFrT3duZXIpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICByZXR1cm4gdmlzaXRvci5jb250YWluc09wYXF1ZVJvb3Qod2Vha093bmVyKTsKK30KKwor
I2VuZGlmIC8vIEpTQ19PQkpDX0FQSV9FTkFCTEVECkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTT2JqZWN0UmVmLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTT2JqZWN0UmVmLmNwcAkocmV2aXNpb24gMTQ0NzgwKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU09iamVjdFJlZi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3
LDcgQEAKICNpbmNsdWRlICJGdW5jdGlvbkNvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiSWRlbnRp
Zmllci5oIgogI2luY2x1ZGUgIkluaXRpYWxpemVUaHJlYWRpbmcuaCIKKyNpbmNsdWRlICJKU0FQ
SVdyYXBwZXJPYmplY3QuaCIKICNpbmNsdWRlICJKU0FycmF5LmgiCiAjaW5jbHVkZSAiSlNDYWxs
YmFja0NvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiSlNDYWxsYmFja0Z1bmN0aW9uLmgiCkBAIC0z
NDUsNiArMzQ2LDggQEAgdm9pZCogSlNPYmplY3RHZXRQcml2YXRlKEpTT2JqZWN0UmVmIG9iagog
ICAgICAgICByZXR1cm4ganNDYXN0PEpTQ2FsbGJhY2tPYmplY3Q8SlNHbG9iYWxPYmplY3Q+Kj4o
anNPYmplY3QpLT5nZXRQcml2YXRlKCk7CiAgICAgaWYgKGpzT2JqZWN0LT5pbmhlcml0cygmSlND
YWxsYmFja09iamVjdDxKU0Rlc3RydWN0aWJsZU9iamVjdD46OnNfaW5mbykpCiAgICAgICAgIHJl
dHVybiBqc0Nhc3Q8SlNDYWxsYmFja09iamVjdDxKU0Rlc3RydWN0aWJsZU9iamVjdD4qPihqc09i
amVjdCktPmdldFByaXZhdGUoKTsKKyAgICBpZiAoanNPYmplY3QtPmluaGVyaXRzKCZKU0NhbGxi
YWNrT2JqZWN0PEpTQVBJV3JhcHBlck9iamVjdD46OnNfaW5mbykpCisgICAgICAgIHJldHVybiBq
c0Nhc3Q8SlNDYWxsYmFja09iamVjdDxKU0FQSVdyYXBwZXJPYmplY3Q+Kj4oanNPYmplY3QpLT5n
ZXRQcml2YXRlKCk7CiAgICAgCiAgICAgcmV0dXJuIDA7CiB9CkBAIC0zNjEsNiArMzY0LDEwIEBA
IGJvb2wgSlNPYmplY3RTZXRQcml2YXRlKEpTT2JqZWN0UmVmIG9iamUKICAgICAgICAganNDYXN0
PEpTQ2FsbGJhY2tPYmplY3Q8SlNEZXN0cnVjdGlibGVPYmplY3Q+Kj4oanNPYmplY3QpLT5zZXRQ
cml2YXRlKGRhdGEpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CisgICAgaWYgKGpzT2Jq
ZWN0LT5pbmhlcml0cygmSlNDYWxsYmFja09iamVjdDxKU0FQSVdyYXBwZXJPYmplY3Q+OjpzX2lu
Zm8pKSB7CisgICAgICAgIGpzQ2FzdDxKU0NhbGxiYWNrT2JqZWN0PEpTQVBJV3JhcHBlck9iamVj
dD4qPihqc09iamVjdCktPnNldFByaXZhdGUoZGF0YSk7CisgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIH0KICAgICAgICAgCiAgICAgcmV0dXJuIGZhbHNlOwogfQpAQCAtMzc2LDYgKzM4Myw4IEBA
IEpTVmFsdWVSZWYgSlNPYmplY3RHZXRQcml2YXRlUHJvcGVydHkoSlMKICAgICAgICAgcmVzdWx0
ID0ganNDYXN0PEpTQ2FsbGJhY2tPYmplY3Q8SlNHbG9iYWxPYmplY3Q+Kj4oanNPYmplY3QpLT5n
ZXRQcml2YXRlUHJvcGVydHkobmFtZSk7CiAgICAgZWxzZSBpZiAoanNPYmplY3QtPmluaGVyaXRz
KCZKU0NhbGxiYWNrT2JqZWN0PEpTRGVzdHJ1Y3RpYmxlT2JqZWN0Pjo6c19pbmZvKSkKICAgICAg
ICAgcmVzdWx0ID0ganNDYXN0PEpTQ2FsbGJhY2tPYmplY3Q8SlNEZXN0cnVjdGlibGVPYmplY3Q+
Kj4oanNPYmplY3QpLT5nZXRQcml2YXRlUHJvcGVydHkobmFtZSk7CisgICAgZWxzZSBpZiAoanNP
YmplY3QtPmluaGVyaXRzKCZKU0NhbGxiYWNrT2JqZWN0PEpTQVBJV3JhcHBlck9iamVjdD46OnNf
aW5mbykpCisgICAgICAgIHJlc3VsdCA9IGpzQ2FzdDxKU0NhbGxiYWNrT2JqZWN0PEpTQVBJV3Jh
cHBlck9iamVjdD4qPihqc09iamVjdCktPmdldFByaXZhdGVQcm9wZXJ0eShuYW1lKTsKICAgICBy
ZXR1cm4gdG9SZWYoZXhlYywgcmVzdWx0KTsKIH0KIApAQCAtMzk0LDYgKzQwMywxMCBAQCBib29s
IEpTT2JqZWN0U2V0UHJpdmF0ZVByb3BlcnR5KEpTQ29udGV4CiAgICAgICAgIGpzQ2FzdDxKU0Nh
bGxiYWNrT2JqZWN0PEpTRGVzdHJ1Y3RpYmxlT2JqZWN0Pio+KGpzT2JqZWN0KS0+c2V0UHJpdmF0
ZVByb3BlcnR5KGV4ZWMtPmdsb2JhbERhdGEoKSwgbmFtZSwganNWYWx1ZSk7CiAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIH0KKyAgICBpZiAoanNPYmplY3QtPmluaGVyaXRzKCZKU0NhbGxiYWNr
T2JqZWN0PEpTQVBJV3JhcHBlck9iamVjdD46OnNfaW5mbykpIHsKKyAgICAgICAganNDYXN0PEpT
Q2FsbGJhY2tPYmplY3Q8SlNBUElXcmFwcGVyT2JqZWN0Pio+KGpzT2JqZWN0KS0+c2V0UHJpdmF0
ZVByb3BlcnR5KGV4ZWMtPmdsb2JhbERhdGEoKSwgbmFtZSwganNWYWx1ZSk7CisgICAgICAgIHJl
dHVybiB0cnVlOworICAgIH0KICAgICByZXR1cm4gZmFsc2U7CiB9CiAKQEAgLTQxMSw2ICs0MjQs
MTAgQEAgYm9vbCBKU09iamVjdERlbGV0ZVByaXZhdGVQcm9wZXJ0eShKU0NvbgogICAgICAgICBq
c0Nhc3Q8SlNDYWxsYmFja09iamVjdDxKU0Rlc3RydWN0aWJsZU9iamVjdD4qPihqc09iamVjdCkt
PmRlbGV0ZVByaXZhdGVQcm9wZXJ0eShuYW1lKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
fQorICAgIGlmIChqc09iamVjdC0+aW5oZXJpdHMoJkpTQ2FsbGJhY2tPYmplY3Q8SlNBUElXcmFw
cGVyT2JqZWN0Pjo6c19pbmZvKSkgeworICAgICAgICBqc0Nhc3Q8SlNDYWxsYmFja09iamVjdDxK
U0FQSVdyYXBwZXJPYmplY3Q+Kj4oanNPYmplY3QpLT5kZWxldGVQcml2YXRlUHJvcGVydHkobmFt
ZSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KICAgICByZXR1cm4gZmFsc2U7CiB9CiAK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZS5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmFsdWUubW0JKHJldmlzaW9uIDE0NDc4MCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZS5tbQkod29ya2luZyBjb3B5KQpA
QCAtODkyLDYgKzg5MiwxMyBAQCBzdGF0aWMgT2JqY0NvbnRhaW5lckNvbnZlcnRvcjo6VGFzayBv
YmplCiAgICAgICAgICAgICBKU09iamVjdFJlZiByZXN1bHQgPSBKU09iamVjdE1ha2VEYXRlKGNv
bnRleHRSZWYsIDEsICZhcmd1bWVudCwgMCk7CiAgICAgICAgICAgICByZXR1cm4gKE9iamNDb250
YWluZXJDb252ZXJ0b3I6OlRhc2speyBvYmplY3QsIHJlc3VsdCwgQ29udGFpbmVyTm9uZSB9Owog
ICAgICAgICB9CisKKyAgICAgICAgaWYgKFtvYmplY3QgaXNLaW5kT2ZDbGFzczpbSlNNYW5hZ2Vk
VmFsdWUgY2xhc3NdXSkgeworICAgICAgICAgICAgSlNWYWx1ZSAqdmFsdWUgPSBbc3RhdGljX2Nh
c3Q8SlNNYW5hZ2VkVmFsdWUgKj4ob2JqZWN0KSB2YWx1ZV07CisgICAgICAgICAgICBpZiAoIXZh
bHVlKQorICAgICAgICAgICAgICAgIHJldHVybiAoT2JqY0NvbnRhaW5lckNvbnZlcnRvcjo6VGFz
aykgeyBvYmplY3QsIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHRSZWYpLCBDb250YWluZXJO
b25lIH07CisgICAgICAgICAgICByZXR1cm4gKE9iamNDb250YWluZXJDb252ZXJ0b3I6OlRhc2sp
eyBvYmplY3QsIHZhbHVlLT5tX3ZhbHVlLCBDb250YWluZXJOb25lIH07CisgICAgICAgIH0KICAg
ICB9CiAKICAgICByZXR1cm4gKE9iamNDb250YWluZXJDb252ZXJ0b3I6OlRhc2speyBvYmplY3Qs
IHZhbHVlSW50ZXJuYWxWYWx1ZShbY29udGV4dCB3cmFwcGVyRm9yT2JqQ09iamVjdDpvYmplY3Rd
KSwgQ29udGFpbmVyTm9uZSB9OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1Zh
bHVlUmVmLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmFs
dWVSZWYuY3BwCShyZXZpc2lvbiAxNDQ3ODApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTVmFsdWVSZWYuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNs
dWRlICJBUElDYXN0LmgiCiAjaW5jbHVkZSAiQVBJU2hpbXMuaCIKKyNpbmNsdWRlICJKU0FQSVdy
YXBwZXJPYmplY3QuaCIKICNpbmNsdWRlICJKU0NhbGxiYWNrT2JqZWN0LmgiCiAKICNpbmNsdWRl
IDxydW50aW1lL0pTQ0pTVmFsdWUuaD4KQEAgLTE0OCw2ICsxNDksOCBAQCBib29sIEpTVmFsdWVJ
c09iamVjdE9mQ2xhc3MoSlNDb250ZXh0UmVmCiAgICAgICAgICAgICByZXR1cm4ganNDYXN0PEpT
Q2FsbGJhY2tPYmplY3Q8SlNHbG9iYWxPYmplY3Q+Kj4obyktPmluaGVyaXRzKGpzQ2xhc3MpOwog
ICAgICAgICBpZiAoby0+aW5oZXJpdHMoJkpTQ2FsbGJhY2tPYmplY3Q8SlNEZXN0cnVjdGlibGVP
YmplY3Q+OjpzX2luZm8pKQogICAgICAgICAgICAgcmV0dXJuIGpzQ2FzdDxKU0NhbGxiYWNrT2Jq
ZWN0PEpTRGVzdHJ1Y3RpYmxlT2JqZWN0Pio+KG8pLT5pbmhlcml0cyhqc0NsYXNzKTsKKyAgICAg
ICAgaWYgKG8tPmluaGVyaXRzKCZKU0NhbGxiYWNrT2JqZWN0PEpTQVBJV3JhcHBlck9iamVjdD46
OnNfaW5mbykpCisgICAgICAgICAgICByZXR1cm4ganNDYXN0PEpTQ2FsbGJhY2tPYmplY3Q8SlNB
UElXcmFwcGVyT2JqZWN0Pio+KG8pLT5pbmhlcml0cyhqc0NsYXNzKTsKICAgICB9CiAgICAgcmV0
dXJuIGZhbHNlOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZpcnR1YWxN
YWNoaW5lLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWaXJ0
dWFsTWFjaGluZS5tbQkocmV2aXNpb24gMTQ0NzgwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU1ZpcnR1YWxNYWNoaW5lLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMDEsNyArMTAxLDkg
QEAgLSAoaWQpaW5pdFdpdGhDb250ZXh0R3JvdXBSZWY6KEpTQ29udGV4dAogICAgIE5TUG9pbnRl
ckZ1bmN0aW9uc09wdGlvbnMga2V5T3B0aW9ucyA9IE5TUG9pbnRlckZ1bmN0aW9uc09wYXF1ZU1l
bW9yeSB8IE5TUG9pbnRlckZ1bmN0aW9uc09wYXF1ZVBlcnNvbmFsaXR5OwogICAgIE5TUG9pbnRl
ckZ1bmN0aW9uc09wdGlvbnMgdmFsdWVPcHRpb25zID0gTlNQb2ludGVyRnVuY3Rpb25zV2Vha01l
bW9yeSB8IE5TUG9pbnRlckZ1bmN0aW9uc09iamVjdFBlcnNvbmFsaXR5OwogICAgIG1fY29udGV4
dENhY2hlID0gW1tOU01hcFRhYmxlIGFsbG9jXSBpbml0V2l0aEtleU9wdGlvbnM6a2V5T3B0aW9u
cyB2YWx1ZU9wdGlvbnM6dmFsdWVPcHRpb25zIGNhcGFjaXR5OjBdOwotICAgIAorICAgCisgICAg
W0pTVk1XcmFwcGVyQ2FjaGUgYWRkV3JhcHBlcjpzZWxmIGZvckpTQ29udGV4dEdyb3VwUmVmOmdy
b3VwXTsKKyAKICAgICByZXR1cm4gc2VsZjsKIH0KIApAQCAtMTIzLDEwICsxMjUsOCBAQCBKU0Nv
bnRleHRHcm91cFJlZiBnZXRHcm91cEZyb21WaXJ0dWFsTWFjCiArIChKU1ZpcnR1YWxNYWNoaW5l
ICopdmlydHVhbE1hY2hpbmVXaXRoQ29udGV4dEdyb3VwUmVmOihKU0NvbnRleHRHcm91cFJlZiln
cm91cAogewogICAgIEpTVmlydHVhbE1hY2hpbmUgKnZpcnR1YWxNYWNoaW5lID0gW0pTVk1XcmFw
cGVyQ2FjaGUgd3JhcHBlckZvckpTQ29udGV4dEdyb3VwUmVmOmdyb3VwXTsKLSAgICBpZiAoIXZp
cnR1YWxNYWNoaW5lKSB7CisgICAgaWYgKCF2aXJ0dWFsTWFjaGluZSkKICAgICAgICAgdmlydHVh
bE1hY2hpbmUgPSBbW1tKU1ZpcnR1YWxNYWNoaW5lIGFsbG9jXSBpbml0V2l0aENvbnRleHRHcm91
cFJlZjpncm91cF0gYXV0b3JlbGVhc2VdOwotICAgICAgICBbSlNWTVdyYXBwZXJDYWNoZSBhZGRX
cmFwcGVyOnZpcnR1YWxNYWNoaW5lIGZvckpTQ29udGV4dEdyb3VwUmVmOmdyb3VwXTsKLSAgICB9
CiAgICAgcmV0dXJuIHZpcnR1YWxNYWNoaW5lOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL0pTV3JhcHBlck1hcC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL0pTV3JhcHBlck1hcC5tbQkocmV2aXNpb24gMTQ0NzgwKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU1dyYXBwZXJNYXAubW0JKHdvcmtpbmcgY29weSkKQEAgLTI5LDYg
KzI5LDkgQEAKICNpZiBKU0NfT0JKQ19BUElfRU5BQkxFRAogCiAjaW1wb3J0ICJBUElDYXN0Lmgi
CisjaW1wb3J0ICJBUElTaGltcy5oIgorI2ltcG9ydCAiSlNBUElXcmFwcGVyT2JqZWN0LmgiCisj
aW1wb3J0ICJKU0NhbGxiYWNrT2JqZWN0LmgiCiAjaW1wb3J0ICJKU0NvbnRleHRJbnRlcm5hbC5o
IgogI2ltcG9ydCAiSlNXcmFwcGVyTWFwLmgiCiAjaW1wb3J0ICJPYmpDQ2FsbGJhY2tGdW5jdGlv
bi5oIgpAQCAtNDgsNyArNTEsOCBAQCAtIChKU09iakNDbGFzc0luZm8qKWNsYXNzSW5mb0ZvckNs
YXNzOihDCiAKIHN0YXRpYyB2b2lkIHdyYXBwZXJGaW5hbGl6ZShKU09iamVjdFJlZiBvYmplY3Qp
CiB7Ci0gICAgWyhpZClKU09iamVjdEdldFByaXZhdGUob2JqZWN0KSByZWxlYXNlXTsKKyAgICBK
U0M6OkpTQVBJV3JhcHBlck9iamVjdCogd3JhcHBlck9iamVjdCA9IEpTQzo6anNDYXN0PEpTQzo6
SlNBUElXcmFwcGVyT2JqZWN0Kj4odG9KUyhvYmplY3QpKTsKKyAgICBbKGlkKXdyYXBwZXJPYmpl
Y3QtPndyYXBwZWRPYmplY3QoKSByZWxlYXNlXTsKIH0KIAogLy8gQWxsIHdyYXBwZXIgb2JqZWN0
cyBhbmQgY29uc3RydWN0b3Igb2JqZWN0cyBkZXJpdmUgZnJvbSB0aGlzIHR5cGUsIHNvIHdlIGNh
biBkZXRlY3QgJiB1bndyYXAgT2JqZWN0aXZlLUMgaW5zdGFuY2VzL0NsYXNzZXMuCkBAIC0xMTQs
MTcgKzExOCwzMSBAQCBkb25lOgogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK3N0YXRpYyBKU09i
amVjdFJlZiBtYWtlV3JhcHBlcihKU0NvbnRleHRSZWYgY3R4LCBKU0NsYXNzUmVmIGpzQ2xhc3Ms
IGlkIHdyYXBwZWRPYmplY3QpCit7CisgICAgSlNDOjpFeGVjU3RhdGUqIGV4ZWMgPSB0b0pTKGN0
eCk7CisgICAgSlNDOjpBUElFbnRyeVNoaW0gZW50cnlTaGltKGV4ZWMpOworCisgICAgQVNTRVJU
KGpzQ2xhc3MpOworICAgIEpTQzo6SlNDYWxsYmFja09iamVjdDxKU0M6OkpTQVBJV3JhcHBlck9i
amVjdD4qIG9iamVjdCA9IEpTQzo6SlNDYWxsYmFja09iamVjdDxKU0M6OkpTQVBJV3JhcHBlck9i
amVjdD46OmNyZWF0ZShleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIGV4ZWMtPmxl
eGljYWxHbG9iYWxPYmplY3QoKS0+b2JqY1dyYXBwZXJPYmplY3RTdHJ1Y3R1cmUoKSwganNDbGFz
cywgMCk7CisgICAgb2JqZWN0LT5zZXRXcmFwcGVkT2JqZWN0KHdyYXBwZWRPYmplY3QpOworICAg
IGlmIChKU0M6OkpTT2JqZWN0KiBwcm90b3R5cGUgPSBqc0NsYXNzLT5wcm90b3R5cGUoZXhlYykp
CisgICAgICAgIG9iamVjdC0+c2V0UHJvdG90eXBlKGV4ZWMtPmdsb2JhbERhdGEoKSwgcHJvdG90
eXBlKTsKKworICAgIHJldHVybiB0b1JlZihvYmplY3QpOworfQorCiAvLyBNYWtlIGFuIG9iamVj
dCB0aGF0IGlzIGluIGFsbCB3YXlzIGEgY29tcGxldGVseSB2YW5pbGxhIEphdmFTY3JpcHQgb2Jq
ZWN0LAogLy8gb3RoZXIgdGhhbiB0aGF0IGl0IGhhcyBhIG5hdGl2ZSBicmFuZCBzZXQgdGhhdCB3
aWxsIGJlIGRpc3BsYXllZCBieSB0aGUgZGVmYXVsdAogLy8gT2JqZWN0LnByb3RvdHlwZS50b1N0
cmluZyBjb252ZXJzaW9uLgotc3RhdGljIEpTVmFsdWUgKmNyZWF0ZU9iamVjdFdpdGhDdXN0b21C
cmFuZChKU0NvbnRleHQgKmNvbnRleHQsIE5TU3RyaW5nICpicmFuZCwgSlNDbGFzc1JlZiBwYXJl
bnRDbGFzcyA9IDAsIHZvaWQqIHByaXZhdGVEYXRhID0gMCkKK3N0YXRpYyBKU1ZhbHVlICpjcmVh
dGVPYmplY3RXaXRoQ3VzdG9tQnJhbmQoSlNDb250ZXh0ICpjb250ZXh0LCBOU1N0cmluZyAqYnJh
bmQsIEpTQ2xhc3NSZWYgcGFyZW50Q2xhc3MgPSAwLCBDbGFzcyBjbHMgPSAwKQogewogICAgIEpT
Q2xhc3NEZWZpbml0aW9uIGRlZmluaXRpb247CiAgICAgZGVmaW5pdGlvbiA9IGtKU0NsYXNzRGVm
aW5pdGlvbkVtcHR5OwogICAgIGRlZmluaXRpb24uY2xhc3NOYW1lID0gW2JyYW5kIFVURjhTdHJp
bmddOwogICAgIGRlZmluaXRpb24ucGFyZW50Q2xhc3MgPSBwYXJlbnRDbGFzczsKICAgICBKU0Ns
YXNzUmVmIGNsYXNzUmVmID0gSlNDbGFzc0NyZWF0ZSgmZGVmaW5pdGlvbik7Ci0gICAgSlNPYmpl
Y3RSZWYgcmVzdWx0ID0gSlNPYmplY3RNYWtlKFtjb250ZXh0IGdsb2JhbENvbnRleHRSZWZdLCBj
bGFzc1JlZiwgcHJpdmF0ZURhdGEpOworICAgIEpTT2JqZWN0UmVmIHJlc3VsdCA9IG1ha2VXcmFw
cGVyKFtjb250ZXh0IGdsb2JhbENvbnRleHRSZWZdLCBjbGFzc1JlZiwgY2xzKTsKICAgICBKU0Ns
YXNzUmVsZWFzZShjbGFzc1JlZik7CiAgICAgcmV0dXJuIFtbSlNWYWx1ZSBhbGxvY10gaW5pdFdp
dGhWYWx1ZTpyZXN1bHQgaW5Db250ZXh0OmNvbnRleHRdOwogfQpAQCAtNDA3LDcgKzQyNSw3IEBA
IC0gKEpTVmFsdWUgKil3cmFwcGVyRm9yT2JqZWN0OihpZClvYmplY3QKICAgICAgICAgW3NlbGYg
cmVhbGxvY2F0ZUNvbnN0cnVjdG9yQW5kT3JQcm90b3R5cGVdOwogICAgIEFTU0VSVCghIW1fcHJv
dG90eXBlKTsKIAotICAgIEpTT2JqZWN0UmVmIHdyYXBwZXIgPSBKU09iamVjdE1ha2UoW21fY29u
dGV4dCBnbG9iYWxDb250ZXh0UmVmXSwgbV9jbGFzc1JlZiwgW29iamVjdCByZXRhaW5dKTsKKyAg
ICBKU09iamVjdFJlZiB3cmFwcGVyID0gbWFrZVdyYXBwZXIoW21fY29udGV4dCBnbG9iYWxDb250
ZXh0UmVmXSwgbV9jbGFzc1JlZiwgW29iamVjdCByZXRhaW5dKTsKICAgICBKU09iamVjdFNldFBy
b3RvdHlwZShbbV9jb250ZXh0IGdsb2JhbENvbnRleHRSZWZdLCB3cmFwcGVyLCB0b1JlZihtX3By
b3RvdHlwZS5nZXQoKSkpOwogICAgIHJldHVybiBbSlNWYWx1ZSB2YWx1ZVdpdGhWYWx1ZTp3cmFw
cGVyIGluQ29udGV4dDptX2NvbnRleHRdOwogfQpAQCAtNTExLDcgKzUyOSw3IEBAIGlkIHRyeVVu
d3JhcE9iamNPYmplY3QoSlNHbG9iYWxDb250ZXh0UmUKICAgICBKU09iamVjdFJlZiBvYmplY3Qg
PSBKU1ZhbHVlVG9PYmplY3QoY29udGV4dCwgdmFsdWUsICZleGNlcHRpb24pOwogICAgIEFTU0VS
VCghZXhjZXB0aW9uKTsKICAgICBpZiAoSlNWYWx1ZUlzT2JqZWN0T2ZDbGFzcyhjb250ZXh0LCBv
YmplY3QsIHdyYXBwZXJDbGFzcygpKSkKLSAgICAgICAgcmV0dXJuIChpZClKU09iamVjdEdldFBy
aXZhdGUob2JqZWN0KTsKKyAgICAgICAgcmV0dXJuIChpZClKU0M6OmpzQ2FzdDxKU0M6OkpTQVBJ
V3JhcHBlck9iamVjdCo+KHRvSlMob2JqZWN0KSktPndyYXBwZWRPYmplY3QoKTsKICAgICBpZiAo
aWQgdGFyZ2V0ID0gdHJ5VW53cmFwQmxvY2soY29udGV4dCwgb2JqZWN0KSkKICAgICAgICAgcmV0
dXJuIHRhcmdldDsKICAgICByZXR1cm4gbmlsOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KYXZhU2NyaXB0Q29yZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvSmF2YVNjcmlwdENvcmUuaAkocmV2aXNpb24gMTQ0NzgwKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9KYXZhU2NyaXB0Q29yZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICsz
Myw3IEBACiAKICNpbXBvcnQgIkpTQ29udGV4dC5oIgogI2ltcG9ydCAiSlNWYWx1ZS5oIgorI2lt
cG9ydCAiSlNNYW5hZ2VkVmFsdWUuaCIKICNpbXBvcnQgIkpTVmlydHVhbE1hY2hpbmUuaCIKICNp
bXBvcnQgIkpTRXhwb3J0LmgiCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVz
dHMvdGVzdGFwaS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rl
c3RzL3Rlc3RhcGkubW0JKHJldmlzaW9uIDE0NDc4MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvdGVzdHMvdGVzdGFwaS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjMsNyArMjMsOCBAQAog
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCiAgKi8KIAotI2ltcG9ydCAiSmF2YVNjcmlwdENvcmUuaCIKKyNpbXBv
cnQgPEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmg+CisjaW1wb3J0IDxKYXZhU2NyaXB0
Q29yZS9KU0Jhc2VQcml2YXRlLmg+CiAKIGV4dGVybiAiQyIgYm9vbCBfQmxvY2tfaGFzX3NpZ25h
dHVyZShpZCk7CiBleHRlcm4gIkMiIGNvbnN0IGNoYXIgKiBfQmxvY2tfc2lnbmF0dXJlKGlkKTsK
QEAgLTEwMSw2ICsxMDIsOCBAQCBib29sIHRlc3RYWVpUZXN0ZWQgPSBmYWxzZTsKIEBwcm90b2Nv
bCBUZXh0WFlaIDxKU0V4cG9ydD4KIEBwcm9wZXJ0eSBpbnQgeDsKIEBwcm9wZXJ0eSAocmVhZG9u
bHkpIGludCB5OworQHByb3BlcnR5IEpTVmFsdWUgKm9uY2xpY2s7CitAcHJvcGVydHkgSlNWYWx1
ZSAqd2Vha09uY2xpY2s7CiAtICh2b2lkKXRlc3Q6KE5TU3RyaW5nICopbWVzc2FnZTsKIEBlbmQK
IApAQCAtMTA4LDkgKzExMSwxMyBAQCBAaW50ZXJmYWNlIFRleHRYWVogOiBOU09iamVjdCA8VGV4
dFhZWj4KIEBwcm9wZXJ0eSBpbnQgeDsKIEBwcm9wZXJ0eSBpbnQgeTsKIEBwcm9wZXJ0eSBpbnQg
ejsKKy0gKHZvaWQpY2xpY2s7CiBAZW5kCiAKLUBpbXBsZW1lbnRhdGlvbiBUZXh0WFlaCitAaW1w
bGVtZW50YXRpb24gVGV4dFhZWiB7CisgICAgSlNNYW5hZ2VkVmFsdWUgKm1fd2Vha09uY2xpY2tI
YW5kbGVyOworICAgIEpTTWFuYWdlZFZhbHVlICptX29uY2xpY2tIYW5kbGVyOworfQogQHN5bnRo
ZXNpemUgeDsKIEBzeW50aGVzaXplIHk7CiBAc3ludGhlc2l6ZSB6OwpAQCAtMTE4LDYgKzEyNSwz
MSBAQCAtICh2b2lkKXRlc3Q6KE5TU3RyaW5nICopbWVzc2FnZQogewogICAgIHRlc3RYWVpUZXN0
ZWQgPSBbbWVzc2FnZSBpc0VxdWFsOkAidGVzdCJdICYmIHggPT0gMTMgJiB5ID09IDQgJiYgeiA9
PSA1OwogfQorLSAodm9pZClzZXRXZWFrT25jbGljazooSlNWYWx1ZSAqKXZhbHVlCit7CisgICAg
bV93ZWFrT25jbGlja0hhbmRsZXIgPSBbSlNNYW5hZ2VkVmFsdWUgd2Vha1ZhbHVlV2l0aFZhbHVl
OnZhbHVlXTsKK30KKworLSAodm9pZClzZXRPbmNsaWNrOihKU1ZhbHVlICopdmFsdWUKK3sKKyAg
ICBtX29uY2xpY2tIYW5kbGVyID0gW0pTTWFuYWdlZFZhbHVlIG1hbmFnZWRWYWx1ZVdpdGhWYWx1
ZTp2YWx1ZSBvd25lcjpzZWxmXTsKK30KKy0gKEpTVmFsdWUgKil3ZWFrT25jbGljaworeworICAg
IHJldHVybiBbbV93ZWFrT25jbGlja0hhbmRsZXIgdmFsdWVdOworfQorLSAoSlNWYWx1ZSAqKW9u
Y2xpY2sKK3sKKyAgICByZXR1cm4gW21fb25jbGlja0hhbmRsZXIgdmFsdWVdOworfQorLSAodm9p
ZCljbGljaworeworICAgIGlmICghbV9vbmNsaWNrSGFuZGxlcikKKyAgICAgICAgcmV0dXJuOwor
CisgICAgSlNWYWx1ZSAqZnVuY3Rpb24gPSBbbV9vbmNsaWNrSGFuZGxlciB2YWx1ZV07CisgICAg
W2Z1bmN0aW9uIGNhbGxXaXRoQXJndW1lbnRzOltOU0FycmF5IGFycmF5XV07Cit9CiBAZW5kCiAK
IHN0YXRpYyB2b2lkIGNoZWNrUmVzdWx0KE5TU3RyaW5nICpkZXNjcmlwdGlvbiwgYm9vbCBwYXNz
ZWQpCkBAIC00OTMsNiArNTI1LDYwIEBAIHZvaWQgdGVzdE9iamVjdGl2ZUNBUEkoKQogICAgICAg
ICBKU1ZhbHVlICpyZXN1bHQgPSBbY29udGV4dDEgZXZhbHVhdGVTY3JpcHQ6QCJwYXNzVmFsdWVC
ZXR3ZWVuQ29udGV4dHMiXTsKICAgICAgICAgY2hlY2tSZXN1bHQoQCJbdmFsdWUgaXNFcXVhbFRv
T2JqZWN0OnJlc3VsdF0iLCBbdmFsdWUgaXNFcXVhbFRvT2JqZWN0OnJlc3VsdF0pOwogICAgIH0K
KworICAgIEBhdXRvcmVsZWFzZXBvb2wgeworICAgICAgICBKU0NvbnRleHQgKmNvbnRleHQgPSBb
W0pTQ29udGV4dCBhbGxvY10gaW5pdF07CisgICAgICAgIFRleHRYWVogKnRlc3RYWVogPSBbW1Rl
eHRYWVogYWxsb2NdIGluaXRdOworCisgICAgICAgIEBhdXRvcmVsZWFzZXBvb2wgeworICAgICAg
ICAgICAgY29udGV4dFtAInRlc3RYWVoiXSA9IHRlc3RYWVo7CisKKyAgICAgICAgICAgIFtjb250
ZXh0IGV2YWx1YXRlU2NyaXB0OkAiIFwKKyAgICAgICAgICAgICAgICBkaWRDbGljayA9IGZhbHNl
OyBcCisgICAgICAgICAgICAgICAgdGVzdFhZWi5vbmNsaWNrID0gZnVuY3Rpb24oKSB7IFwKKyAg
ICAgICAgICAgICAgICAgICAgZGlkQ2xpY2sgPSB0cnVlOyBcCisgICAgICAgICAgICAgICAgfTsg
XAorICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgdGVzdFhZWi53ZWFrT25jbGlj
ayA9IGZ1bmN0aW9uKCkgeyBcCisgICAgICAgICAgICAgICAgICAgIHJldHVybiAnZm9vJzsgXAor
ICAgICAgICAgICAgICAgIH07IFwKKyAgICAgICAgICAgICJdOworICAgICAgICB9CisKKyAgICAg
ICAgQGF1dG9yZWxlYXNlcG9vbCB7CisgICAgICAgICAgICBbdGVzdFhZWiBjbGlja107CisgICAg
ICAgICAgICBKU1ZhbHVlICpyZXN1bHQgPSBbY29udGV4dCBldmFsdWF0ZVNjcmlwdDpAImRpZENs
aWNrIl07CisgICAgICAgICAgICBjaGVja1Jlc3VsdChAIkV2ZW50IGhhbmRsZXIgb25jbGljayIs
IFtyZXN1bHQgdG9Cb29sXSk7CisgICAgICAgIH0KKworICAgICAgICBKU1N5bmNocm9ub3VzR2Fy
YmFnZUNvbGxlY3QoW2NvbnRleHQgZ2xvYmFsQ29udGV4dFJlZl0pOworCisgICAgICAgIEBhdXRv
cmVsZWFzZXBvb2wgeworICAgICAgICAgICAgSlNWYWx1ZSAqcmVzdWx0ID0gW2NvbnRleHQgZXZh
bHVhdGVTY3JpcHQ6QCJ0ZXN0WFlaLm9uY2xpY2siXTsKKyAgICAgICAgICAgIGNoZWNrUmVzdWx0
KEAib25jbGljayBzdGlsbCBhcm91bmQgYWZ0ZXIgR0MiLCAhKFtyZXN1bHQgaXNOdWxsXSB8fCBb
cmVzdWx0IGlzVW5kZWZpbmVkXSkpOworICAgICAgICB9CisKKworICAgICAgICBAYXV0b3JlbGVh
c2Vwb29sIHsKKyAgICAgICAgICAgIEpTVmFsdWUgKnJlc3VsdCA9IFtjb250ZXh0IGV2YWx1YXRl
U2NyaXB0OkAidGVzdFhZWi53ZWFrT25jbGljayJdOworICAgICAgICAgICAgY2hlY2tSZXN1bHQo
QCJ3ZWFrT25jbGljayBub3QgYXJvdW5kIGFmdGVyIEdDIiwgW3Jlc3VsdCBpc051bGxdIHx8IFty
ZXN1bHQgaXNVbmRlZmluZWRdKTsKKyAgICAgICAgfQorCisgICAgICAgIEBhdXRvcmVsZWFzZXBv
b2wgeworICAgICAgICAgICAgW2NvbnRleHQgZXZhbHVhdGVTY3JpcHQ6QCIgXAorICAgICAgICAg
ICAgICAgIGRpZENsaWNrID0gZmFsc2U7IFwKKyAgICAgICAgICAgICAgICB0ZXN0WFlaID0gbnVs
bDsgXAorICAgICAgICAgICAgIl07CisgICAgICAgIH0KKworICAgICAgICBKU1N5bmNocm9ub3Vz
R2FyYmFnZUNvbGxlY3QoW2NvbnRleHQgZ2xvYmFsQ29udGV4dFJlZl0pOworCisgICAgICAgIEBh
dXRvcmVsZWFzZXBvb2wgeworICAgICAgICAgICAgW3Rlc3RYWVogY2xpY2tdOworICAgICAgICAg
ICAgSlNWYWx1ZSAqcmVzdWx0ID0gW2NvbnRleHQgZXZhbHVhdGVTY3JpcHQ6QCJkaWRDbGljayJd
OworICAgICAgICAgICAgY2hlY2tSZXN1bHQoQCJFdmVudCBoYW5kbGVyIG9uY2xpY2sgZG9lc24n
dCBmaXJlIiwgIVtyZXN1bHQgdG9Cb29sXSk7CisgICAgICAgIH0KKyAgICB9CiB9CiAKICNlbHNl
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvago9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnZjcHJvagkocmV2aXNpb24gMTQ0NzgwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3By
b2oJKHdvcmtpbmcgY29weSkKQEAgLTE0MTQsNiArMTQxNCwxNCBAQAogCQkJCT4KIAkJCTwvRmls
ZT4KIAkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxBUElcSlNBUElXcmFwcGVyT2Jq
ZWN0LmNwcCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0i
Li5cLi5cQVBJXEpTQVBJV3JhcHBlck9iamVjdC5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxG
aWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxBUElcSlNCYXNlLmNwcCIKIAkJCQk+CiAJCQk8
L0ZpbGU+CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTQ0Nzgw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTgyOCw2ICs4MjgsOCBAQAogCQlDMjQwMzA1
NTE0QjQwNEU2MDA3OUVCNjQgLyogQ29waWVkU3BhY2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzI0MDMwNTMxNEI0MDRDOTAwNzlFQjY0IC8qIENv
cGllZFNwYWNlLmNwcCAqLzsgfTsKIAkJQzI0RDMxRTIxNjFDRDY5NTAwMkFBNERCIC8qIEhlYXBT
dGF0aXN0aWNzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEMyNEQzMUUwMTYxQ0Q2OTUwMDJBQTREQiAvKiBIZWFwU3RhdGlzdGljcy5jcHAgKi87IH07
CiAJCUMyNEQzMUUzMTYxQ0Q2OTUwMDJBQTREQiAvKiBIZWFwU3RhdGlzdGljcy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzI0RDMxRTExNjFDRDY5NTAw
MkFBNERCIC8qIEhlYXBTdGF0aXN0aWNzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJQzI1RDcwOUIxNkRFOTlGNDAwRkNBNkJDIC8qIEpTTWFuYWdl
ZFZhbHVlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QzI1RDcwOTkxNkRFOTlGNDAwRkNBNkJDIC8qIEpTTWFuYWdlZFZhbHVlLm1tICovOyB9OworCQlD
MjVENzA5QzE2REU5OUY0MDBGQ0E2QkMgLyogSlNNYW5hZ2VkVmFsdWUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyNUQ3MDlBMTZERTk5RjQwMEZDQTZC
QyAvKiBKU01hbmFnZWRWYWx1ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1Ymxp
YywgKTsgfTsgfTsKIAkJQzI1RjhCQ0QxNTc1NDRBOTAwMjQ1QjcxIC8qIEluY3JlbWVudGFsU3dl
ZXBlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBD
MjVGOEJDQjE1NzU0NEE5MDAyNDVCNzEgLyogSW5jcmVtZW50YWxTd2VlcGVyLmNwcCAqLzsgfTsK
IAkJQzI1RjhCQ0UxNTc1NDRBOTAwMjQ1QjcxIC8qIEluY3JlbWVudGFsU3dlZXBlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzI1RjhCQ0MxNTc1NDRB
OTAwMjQ1QjcxIC8qIEluY3JlbWVudGFsU3dlZXBlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUMyQTdGNjg4MTYwNDMyRDQwMEY3NkI5OCAvKiBK
U0Rlc3RydWN0aWJsZU9iamVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQzJBN0Y2ODcxNjA0MzJENDAwRjc2Qjk4IC8qIEpTRGVzdHJ1Y3RpYmxlT2Jq
ZWN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAg
LTgzNiw2ICs4MzgsOCBAQAogCQlDMkM4RDAyRDE0QTNDNkUwMDA1NzhFNjUgLyogQ29waWVkU3Bh
Y2VJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBDMkM4RDAyQjE0QTNDNkIyMDA1NzhFNjUgLyogQ29waWVkU3BhY2VJbmxpbmVzLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQzJDOEQwMzAxNEEz
Q0VGQzAwNTc4RTY1IC8qIENvcGllZEJsb2NrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBDMkM4RDAyRTE0QTNDRUZDMDA1NzhFNjUgLyogQ29waWVkQmxv
Y2suaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlD
MkM4RDAzMTE0QTNDRUZDMDA1NzhFNjUgLyogSGVhcEJsb2NrLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMkM4RDAyRjE0QTNDRUZDMDA1NzhFNjUgLyog
SGVhcEJsb2NrLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJQzJDRjM5QzExNkUxNUE4MTAwREQ2OUJFIC8qIEpTQVBJV3JhcHBlck9iamVjdC5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMkNGMzlCRjE2
RTE1QTgxMDBERDY5QkUgLyogSlNBUElXcmFwcGVyT2JqZWN0LmNwcCAqLzsgfTsKKwkJQzJDRjM5
QzIxNkUxNUE4MTAwREQ2OUJFIC8qIEpTQVBJV3JhcHBlck9iamVjdC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzJDRjM5QzAxNkUxNUE4MTAwREQ2OUJF
IC8qIEpTQVBJV3JhcHBlck9iamVjdC5oICovOyB9OwogCQlDMkQ1OEMzNDE1OTEyRkVFMDAyMUE4
NDQgLyogR0NBY3Rpdml0eUNhbGxiYWNrLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEMyRDU4QzMzMTU5MTJGRUUwMDIxQTg0NCAvKiBHQ0FjdGl2aXR5
Q2FsbGJhY2suY3BwICovOyB9OwogCQlDMkU1MjZCRDE1OTBFRjAwMDA1NEU0OEQgLyogSGVhcFRp
bWVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMy
RTUyNkJCMTU5MEVGMDAwMDU0RTQ4RCAvKiBIZWFwVGltZXIuY3BwICovOyB9OwogCQlDMkU1MjZC
RTE1OTBFRjAwMDA1NEU0OEQgLyogSGVhcFRpbWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMkU1MjZCQzE1OTBFRjAwMDA1NEU0OEQgLyogSGVhcFRp
bWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAg
LTE3MjEsNiArMTcyNSw4IEBACiAJCUMyNDAzMDUzMTRCNDA0QzkwMDc5RUI2NCAvKiBDb3BpZWRT
cGFjZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb3BpZWRTcGFj
ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMyNEQzMUUwMTYxQ0Q2OTUwMDJB
QTREQiAvKiBIZWFwU3RhdGlzdGljcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBIZWFwU3RhdGlzdGljcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUMyNEQzMUUxMTYxQ0Q2OTUwMDJBQTREQiAvKiBIZWFwU3RhdGlzdGljcy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBIZWFwU3RhdGlzdGljcy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlDMjVENzA5OTE2REU5OUY0MDBGQ0E2QkMgLyogSlNNYW5hZ2VkVmFsdWUu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBKU01hbmFnZWRWYWx1
ZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzI1RDcwOUExNkRFOTlGNDAwRkNB
NkJDIC8qIEpTTWFuYWdlZFZhbHVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEpTTWFuYWdlZFZhbHVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMyNUY4QkNC
MTU3NTQ0QTkwMDI0NUI3MSAvKiBJbmNyZW1lbnRhbFN3ZWVwZXIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5jcmVtZW50YWxTd2VlcGVyLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzI1RjhCQ0MxNTc1NDRBOTAwMjQ1QjcxIC8qIEluY3JlbWVu
dGFsU3dlZXBlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbmNyZW1lbnRh
bFN3ZWVwZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzJBN0Y2ODcxNjA0MzJE
NDAwRjc2Qjk4IC8qIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEpTRGVzdHJ1Y3RpYmxlT2JqZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC0xNzI5LDYgKzE3MzUsOCBAQAogCQlDMkM4RDAyQjE0QTNDNkIyMDA1NzhFNjUg
LyogQ29waWVkU3BhY2VJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IENvcGllZFNwYWNlSW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMkM4
RDAyRTE0QTNDRUZDMDA1NzhFNjUgLyogQ29waWVkQmxvY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQ29waWVkQmxvY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQzJDOEQwMkYxNEEzQ0VGQzAwNTc4RTY1IC8qIEhlYXBCbG9jay5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBIZWFwQmxvY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQzJDRjM5QkYxNkUxNUE4MTAwREQ2OUJFIC8qIEpTQVBJV3JhcHBlck9iamVjdC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0FQSVdyYXBwZXJPYmplY3Qu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMkNGMzlDMDE2RTE1QTgxMDBERDY5
QkUgLyogSlNBUElXcmFwcGVyT2JqZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEpTQVBJV3JhcHBlck9iamVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlD
MkQ1OEMzMzE1OTEyRkVFMDAyMUE4NDQgLyogR0NBY3Rpdml0eUNhbGxiYWNrLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdDQWN0aXZpdHlDYWxsYmFjay5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMyRTUyNkJCMTU5MEVGMDAwMDU0RTQ4RCAvKiBI
ZWFwVGltZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSGVhcFRp
bWVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzJFNTI2QkMxNTkwRUYwMDAw
NTRFNDhEIC8qIEhlYXBUaW1lci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBI
ZWFwVGltZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIyMDIsNiArMjIxMCwx
MCBAQAogCQkJCUUxMjRBOEY2MEU1NTU3NzUwMDMwOTFGMSAvKiBPcGFxdWVKU1N0cmluZy5jcHAg
Ki8sCiAJCQkJRTEyNEE4RjUwRTU1NTc3NTAwMzA5MUYxIC8qIE9wYXF1ZUpTU3RyaW5nLmggKi8s
CiAJCQkJNURFM0QwRjQwREQ4RERGQjAwNDY4NzE0IC8qIFdlYktpdEF2YWlsYWJpbGl0eS5oICov
LAorCQkJCUMyNUQ3MDk5MTZERTk5RjQwMEZDQTZCQyAvKiBKU01hbmFnZWRWYWx1ZS5tbSAqLywK
KwkJCQlDMjVENzA5QTE2REU5OUY0MDBGQ0E2QkMgLyogSlNNYW5hZ2VkVmFsdWUuaCAqLywKKwkJ
CQlDMkNGMzlCRjE2RTE1QTgxMDBERDY5QkUgLyogSlNBUElXcmFwcGVyT2JqZWN0LmNwcCAqLywK
KwkJCQlDMkNGMzlDMDE2RTE1QTgxMDBERDY5QkUgLyogSlNBUElXcmFwcGVyT2JqZWN0LmggKi8s
CiAJCQkpOwogCQkJcGF0aCA9IEFQSTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0y
OTE1LDYgKzI5MjcsNyBAQAogCQkJaXNhID0gUEJYSGVhZGVyc0J1aWxkUGhhc2U7CiAJCQlidWls
ZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwogCQkJZmlsZXMgPSAoCisJCQkJQzI1RDcwOUMxNkRF
OTlGNDAwRkNBNkJDIC8qIEpTTWFuYWdlZFZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NjAx
NjFFMzBGM0E4M0MxMDBGODQ3MTAgLyogQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEY1NUYwRjUxNEQxMDYzQzAwQUM3NjQ5IC8qIEFic3RyYWN0UEMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUJDMThDM0U1MEUxNkY1Q0QwMEIzNDQ2MCAvKiBBUElDYXN0LmggaW4g
SGVhZGVycyAqLywKQEAgLTMxNjUsNiArMzE3OCw3IEBACiAJCQkJQkMxOEM0MkQwRTE2RjVDRDAw
QjM0NDYwIC8qIEpTVmFyaWFibGVPYmplY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2RTNDNjE1
MTY3QkFCRDcwMDZENzYwQSAvKiBKU1ZpcnR1YWxNYWNoaW5lLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlBNzQ4MkU5MzExNkE3Q0FEMDAzQjA3MTIgLyogSlNXZWFrT2JqZWN0TWFwUmVmSW50ZXJuYWwu
aCBpbiBIZWFkZXJzICovLAorCQkJCUMyQ0YzOUMyMTZFMTVBODEwMERENjlCRSAvKiBKU0FQSVdy
YXBwZXJPYmplY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3NDgyQjkzMTE2NzExNDcwMDNCMDcx
MiAvKiBKU1dlYWtPYmplY3RNYXBSZWZQcml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDQy
NTY2MjE1RURFOThEMDA2NkE0OUIgLyogSlNXaXRoU2NvcGUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTg2RTNDNjE5MTY3QkFCRUUwMDZENzYwQSAvKiBKU1dyYXBwZXJNYXAuaCBpbiBIZWFkZXJzICov
LApAQCAtMzc4MCw2ICszNzk0LDcgQEAKIAkJCQkwRkQzQzgyNjE0MTE1RDQwMDBGRDgxQ0IgLyog
REZHRHJpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRjBGMTlFMTZCNzJBMEIwMDVERjk1
QiAvKiBERkdFZGdlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGQkMwQUU3MTQ5NkM3QzQwMEQ0
RkJERCAvKiBERkdFeGl0UHJvZmlsZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDMkNGMzlDMTE2
RTE1QTgxMDBERDY5QkUgLyogSlNBUElXcmFwcGVyT2JqZWN0LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTBGMkJEQzE1MTUxQzVENEQwMENEODkxMCAvKiBERkdGaXh1cFBoYXNlLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTg2RUM5REM3MTMyOERGODIwMDJCMkFENyAvKiBERkdHcmFwaC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk4NkVDOURDQjEzMjhERjgyMDAyQjJBRDcgLyogREZHSklUQ29tcGls
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zOTk2LDYgKzQwMTEsNyBAQAogCQkJCUJDQ0YwRDBD
MEVGMEI4QTUwMDQxM0M4RiAvKiBTdHJ1Y3R1cmVTdHViSW5mby5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkwRjkxOUQyODE1ODU2NzczMDA0QTRFN0QgLyogU3ltYm9sVGFibGUuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQTczODY1NTUxMTg2OTdCNDAwNTQwMjc5IC8qIFRodW5rR2VuZXJhdG9ycy5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQlDMjVENzA5QjE2REU5OUY0MDBGQ0E2QkMgLyogSlNNYW5h
Z2VkVmFsdWUubW0gaW4gU291cmNlcyAqLywKIAkJCQkxNEE0MkUzRjBGNEY2MEVFMDA1OTkwOTkg
LyogVGltZW91dENoZWNrZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZGNDI3NEExNThFQkU5
MTAwNENCOUZGIC8qIHVkaXM4Ni5jIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZGNDI3NDAxNThFQkU4
QjAwNENCOUZGIC8qIHVkaXM4Nl9kZWNvZGUuYyBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAkocmV2aXNp
b24gMTQ0NzgwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw2ICs0Nyw3IEBACiAjaW5jbHVkZSAiRnVuY3Rp
b25Qcm90b3R5cGUuaCIKICNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIKICNpbmNsdWRlICJJbnRl
cnByZXRlci5oIgorI2luY2x1ZGUgIkpTQVBJV3JhcHBlck9iamVjdC5oIgogI2luY2x1ZGUgIkpT
QWN0aXZhdGlvbi5oIgogI2luY2x1ZGUgIkpTQm91bmRGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpT
Q2FsbGJhY2tDb25zdHJ1Y3Rvci5oIgpAQCAtMjI5LDYgKzIzMCw3IEBAIHZvaWQgSlNHbG9iYWxP
YmplY3Q6OnJlc2V0KEpTVmFsdWUgcHJvdG8KICAgICBtX2FyZ3VtZW50c1N0cnVjdHVyZS5zZXQo
ZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBBcmd1bWVudHM6OmNyZWF0ZVN0cnVjdHVyZShleGVj
LT5nbG9iYWxEYXRhKCksIHRoaXMsIG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKSk7CiAgICAgbV9j
YWxsYmFja0NvbnN0cnVjdG9yU3RydWN0dXJlLnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMs
IEpTQ2FsbGJhY2tDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPmdsb2JhbERhdGEo
KSwgdGhpcywgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpKTsKICAgICBtX2NhbGxiYWNrT2JqZWN0
U3RydWN0dXJlLnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIEpTQ2FsbGJhY2tPYmplY3Q8
SlNEZXN0cnVjdGlibGVPYmplY3Q+OjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+Z2xvYmFsRGF0YSgp
LCB0aGlzLCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSkpOworICAgIG1fb2JqY1dyYXBwZXJPYmpl
Y3RTdHJ1Y3R1cmUuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgSlNDYWxsYmFja09iamVj
dDxKU0FQSVdyYXBwZXJPYmplY3Q+OjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+Z2xvYmFsRGF0YSgp
LCB0aGlzLCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSkpOwogCiAgICAgbV9hcnJheVByb3RvdHlw
ZS5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBBcnJheVByb3RvdHlwZTo6Y3JlYXRlKGV4
ZWMsIHRoaXMsIEFycmF5UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+Z2xvYmFsRGF0
YSgpLCB0aGlzLCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSkpKTsKICAgICAKQEAgLTUxMSw2ICs1
MTMsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsCiAgICAgdmlz
aXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fY2FsbGJhY2tDb25zdHJ1Y3RvclN0cnVjdHVyZSk7
CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fY2FsbGJhY2tGdW5jdGlvblN0cnVj
dHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fY2FsbGJhY2tPYmplY3RT
dHJ1Y3R1cmUpOworICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX29iamNXcmFwcGVy
T2JqZWN0U3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9kYXRl
U3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9udWxsUHJvdG90
eXBlT2JqZWN0U3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9l
cnJvclN0cnVjdHVyZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsT2JqZWN0LmgJKHJldmlzaW9uIDE0NDc4MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTE0MSw2ICsx
NDEsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9jYWxsYmFj
a0NvbnN0cnVjdG9yU3RydWN0dXJlOwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fY2Fs
bGJhY2tGdW5jdGlvblN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2Nh
bGxiYWNrT2JqZWN0U3RydWN0dXJlOworICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fb2Jq
Y1dyYXBwZXJPYmplY3RTdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9k
YXRlU3RydWN0dXJlOwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fbnVsbFByb3RvdHlw
ZU9iamVjdFN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2Vycm9yU3Ry
dWN0dXJlOwpAQCAtMzAwLDYgKzMwMSw3IEBAIHB1YmxpYzoKICAgICBTdHJ1Y3R1cmUqIGNhbGxi
YWNrQ29uc3RydWN0b3JTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2NhbGxiYWNrQ29uc3Ry
dWN0b3JTdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIGNhbGxiYWNrRnVuY3Rpb25T
dHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2NhbGxiYWNrRnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0
KCk7IH0KICAgICBTdHJ1Y3R1cmUqIGNhbGxiYWNrT2JqZWN0U3RydWN0dXJlKCkgY29uc3QgeyBy
ZXR1cm4gbV9jYWxsYmFja09iamVjdFN0cnVjdHVyZS5nZXQoKTsgfQorICAgIFN0cnVjdHVyZSog
b2JqY1dyYXBwZXJPYmplY3RTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX29iamNXcmFwcGVy
T2JqZWN0U3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiBkYXRlU3RydWN0dXJlKCkg
Y29uc3QgeyByZXR1cm4gbV9kYXRlU3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiBu
dWxsUHJvdG90eXBlT2JqZWN0U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9udWxsUHJvdG90
eXBlT2JqZWN0U3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiBlcnJvclN0cnVjdHVy
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZXJyb3JTdHJ1Y3R1cmUuZ2V0KCk7IH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>191555</attachid>
            <date>2013-03-05 13:47:28 -0800</date>
            <delta_ts>2013-03-05 14:48:55 -0800</delta_ts>
            <desc>style fixes</desc>
            <filename>the.patch</filename>
            <type>text/plain</type>
            <size>50182</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTQ0Nzg5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwNSBA
QAorMjAxMy0wMy0wNSAgTWFyayBIYWhuZW5iZXJnICA8bWhhaG5lbmJlcmdAYXBwbGUuY29tPgor
CisgICAgICAgIE9iamVjdGl2ZS1DIEFQSTogTmVlZCBhIGdvb2Qgd2F5IHRvIHJlZmVyZW5jZSBl
dmVudCBoYW5kbGVycyB3aXRob3V0IGNhdXNpbmcgY3ljbGVzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTEwODgKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBKU01hbmFnZWRWYWx1ZSBpcyBsaWtlIGEgc3Bl
Y2lhbCBraW5kIG9mIHdlYWsgdmFsdWUuIFdoZW4geW91IGNyZWF0ZSBhIEpTTWFuYWdlZFZhbHVl
LCB5b3UgY2FuCisgICAgICAgIHN1cHBseSBhbiBPYmplY3RpdmUtQyBvYmplY3QgYXMgaXRzICJv
d25lciIuIEFzIGxvbmcgYXMgdGhlIE9iamVjdGl2ZS1DIG93bmVyIG9iamVjdCByZW1haW5zCisg
ICAgICAgIGFsaXZlIGFuZCBpdHMgd3JhcHBlciByZW1haW5zIGFjY2Vzc2libGUgdG8gdGhlIEpT
QyBnYXJiYWdlIGNvbGxlY3RvciAoZS5nLiBieSBiZWluZyBtYXJrZWQgYnkgCisgICAgICAgIHRo
ZSBnbG9iYWwgb2JqZWN0KSwgdGhlIHJlZmVyZW5jZSB0byB0aGUgSmF2YVNjcmlwdCB2YWx1ZSBp
cyBzdHJvbmcuIEFzIHNvb24gYXMgdGhlIE9iamVjdGl2ZS1DCisgICAgICAgIG93bmVyIGlzIGRl
YWxsb2NhdGVkIG9yIGl0cyB3cmFwcGVyIGJlY29tZXMgaW5hY2Nlc3NpYmxlIHRvIHRoZSBnYXJi
YWdlIGNvbGxlY3RvciwgdGhlIHJlZmVyZW5jZQorICAgICAgICBiZWNvbWVzIHdlYWsuCisKKyAg
ICAgICAgSWYgeW91IGRvIG5vdCBzdXBwbHkgYW4gb3duZXIgb3IgeW91IHVzZSB0aGUgd2Vha1Zh
bHVlV2l0aFZhbHVlOiBjb252ZW5pZW5jZSBjbGFzcyBtZXRob2QsIHRoZQorICAgICAgICByZXR1
cm5lZCBKU01hbmFnZWRWYWx1ZSBiZWhhdmVzIGFzIGEgbm9ybWFsIHdlYWsgcmVmZXJlbmNlLgor
CisgICAgICAgIFRoaXMgbmV3IGNsYXNzIGFsbG93cyBjbGllbnRzIHRvIG1haW50YWluIHJlZmVy
ZW5jZXMgdG8gSmF2YVNjcmlwdCB2YWx1ZXMgaW4gdGhlIE9iamVjdGl2ZS1DCisgICAgICAgIGhl
YXAgd2l0aG91dCBjcmVhdGluZyByZWZlcmVuY2UgY3ljbGVzL2xlYWtpbmcgbWVtb3J5LgorCisg
ICAgICAgICogQVBJL0pTQVBJV3JhcHBlck9iamVjdC5jcHA6IEFkZGVkLgorICAgICAgICAoSlND
KToKKyAgICAgICAgKEpTQzo6OjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpKU0FQ
SVdyYXBwZXJPYmplY3Q6OkpTQVBJV3JhcHBlck9iamVjdCk6IFRoaXMgaXMgYSBzcGVjaWFsIEpT
T2JqZWN0IGZvciB0aGUgT2JqZWN0aXZlLUMgQVBJIHRoYXQga25vd3MKKyAgICAgICAgZm9yIHRo
ZSBwdXJwb3NlcyBvZiBnYXJiYWdlIGNvbGxlY3Rpb24vbWFya2luZyB0aGF0IGl0IHdyYXBzIGFu
IG9wYXF1ZSBPYmplY3RpdmUtQyBvYmplY3QuCisgICAgICAgIChKU0M6OkpTQVBJV3JhcHBlck9i
amVjdDo6dmlzaXRDaGlsZHJlbik6IFdlIGFkZCB0aGUgcG9pbnRlciB0byB0aGUgd3JhcHBlZCBP
YmplY3RpdmUtQyBvYmplY3QgdG8gdGhlIHNldCBvZgorICAgICAgICBvcGFxdWUgcm9vdHMgc28g
dGhhdCB0aGUgd2VhayBoYW5kbGUgb3duZXIgZm9yIEpTTWFuYWdlZFZhbHVlcyBjYW4gZmluZCBp
dCBsYXRlci4KKyAgICAgICAgKiBBUEkvSlNBUElXcmFwcGVyT2JqZWN0Lmg6IEFkZGVkLgorICAg
ICAgICAoSlNDKToKKyAgICAgICAgKEpTQVBJV3JhcHBlck9iamVjdCk6CisgICAgICAgIChKU0M6
OkpTQVBJV3JhcHBlck9iamVjdDo6d3JhcHBlZE9iamVjdCk6CisgICAgICAgIChKU0M6OkpTQVBJ
V3JhcHBlck9iamVjdDo6c2V0V3JhcHBlZE9iamVjdCk6CisgICAgICAgICogQVBJL0pTQmFzZS5j
cHA6CisgICAgICAgIChKU1N5bmNocm9ub3VzR2FyYmFnZUNvbGxlY3QpOgorICAgICAgICAqIEFQ
SS9KU0Jhc2VQcml2YXRlLmg6CisgICAgICAgICogQVBJL0pTQ2FsbGJhY2tPYmplY3QuY3BwOgor
ICAgICAgICAoSlNDKToKKyAgICAgICAgKiBBUEkvSlNDYWxsYmFja09iamVjdC5oOgorICAgICAg
ICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0OjpkZXN0cm95KTogTW92ZWQgdGhpcyB0byB0aGUgaGVh
ZGVyIHNvIHRoYXQgd2UgZG9uJ3QgZ2V0IGxpbmsgZXJyb3JzIHdpdGggSlNBUElXcmFwcGVyT2Jq
ZWN0LgorICAgICAgICAqIEFQSS9KU0NvbnRleHQubW06CisgICAgICAgICgtW0pTQ29udGV4dCBp
bml0V2l0aFZpcnR1YWxNYWNoaW5lOl0pOiBXZSB3ZXJlbid0IGFkZGluZyBtYW51YWxseSBhbGxv
Y2F0ZWQvaW5pdGlhbGl6ZWQgSlNWaXJ0dWFsTWFjaGluZSBvYmplY3RzIHRvIAorICAgICAgICB0
aGUgZ2xvYmFsIGNhY2hlIG9mIHZpcnR1YWwgbWFjaGluZXMuIFRoZSBpbml0IG1ldGhvZHMgaGFu
ZGxlIHRoaXMgbm93IHJhdGhlciB0aGFuIGNvbnRleHRXaXRoR2xvYmFsQ29udGV4dFJlZiwgc2lu
Y2UgCisgICAgICAgIG5vdCBldmVyeW9uZSBpcyBndWFyYW50ZWVkIHRvIHVzZSB0aGUgbGF0dGVy
LgorICAgICAgICAoLVtKU0NvbnRleHQgaW5pdFdpdGhHbG9iYWxDb250ZXh0UmVmOl0pOgorICAg
ICAgICAoK1tKU0NvbnRleHQgY29udGV4dFdpdGhHbG9iYWxDb250ZXh0UmVmOl0pOgorICAgICAg
ICAqIEFQSS9KU01hbmFnZWRWYWx1ZS5oOiBBZGRlZC4KKyAgICAgICAgKiBBUEkvSlNNYW5hZ2Vk
VmFsdWUubW06IEFkZGVkLgorICAgICAgICAoSlNNYW5hZ2VkVmFsdWVIYW5kbGVPd25lcik6Cisg
ICAgICAgIChtYW5hZ2VkVmFsdWVIYW5kbGVPd25lcik6CisgICAgICAgICgrW0pTTWFuYWdlZFZh
bHVlIHdlYWtWYWx1ZVdpdGhWYWx1ZTpdKToKKyAgICAgICAgKCtbSlNNYW5hZ2VkVmFsdWUgbWFu
YWdlZFZhbHVlV2l0aFZhbHVlOm93bmVyOl0pOgorICAgICAgICAoLVtKU01hbmFnZWRWYWx1ZSBp
bml0XSk6IFdlIGV4cGxpY2l0bHkgY2FsbCB0aGUgQVJDIGVudHJ5cG9pbnRzIHRvIGluaXRpYWxp
emUvZ2V0IHRoZSB3ZWFrIG93bmVyIGZpZWxkIHNpbmNlIHdlIGRvbid0IAorICAgICAgICB1c2Ug
QVJDIHdoZW4gYnVpbGRpbmcgb3VyIGZyYW1ld29yay4KKyAgICAgICAgKC1bSlNNYW5hZ2VkVmFs
dWUgaW5pdFdpdGhWYWx1ZTpdKToKKyAgICAgICAgKC1bSlNNYW5hZ2VkVmFsdWUgaW5pdFdpdGhW
YWx1ZTpvd25lcjpdKToKKyAgICAgICAgKC1bSlNNYW5hZ2VkVmFsdWUgZGVhbGxvY10pOgorICAg
ICAgICAoLVtKU01hbmFnZWRWYWx1ZSB2YWx1ZV0pOgorICAgICAgICAoLVtKU01hbmFnZWRWYWx1
ZSB3ZWFrT3duZXJdKToKKyAgICAgICAgKEpTTWFuYWdlZFZhbHVlSGFuZGxlT3duZXI6OmlzUmVh
Y2hhYmxlRnJvbU9wYXF1ZVJvb3RzKTogSWYgdGhlIE9iamVjdGl2ZS1DIG93bmVyIGlzIHN0aWxs
IGFsaXZlIChpLmUuIGxvYWRpbmcgdGhlIHdlYWsgZmllbGQKKyAgICAgICAgcmV0dXJucyBub24t
bmlsKSBhbmQgdGhhdCB2YWx1ZSB3YXMgYWRkZWQgdG8gdGhlIHNldCBvZiBvcGFxdWUgcm9vdHMg
YnkgdGhlIHdyYXBwZXIgZm9yIHRoYXQgT2JqZWN0aXZlLUMgb3duZXIsIHRoZW4gdGhlIHRoZSAK
KyAgICAgICAgSlNPYmplY3QgdG8gd2hpY2ggdGhlIEpTTWFuYWdlZE9iamVjdCByZWZlcnMgaXMg
c3RpbGwgYWxpdmUuCisgICAgICAgICogQVBJL0pTT2JqZWN0UmVmLmNwcDogV2UgaGF2ZSB0byBh
ZGQgZXhwbGljaXQgY2hlY2tzIGZvciB0aGUgSlNBUElXcmFwcGVyT2JqZWN0LCBqdXN0IGxpa2Ug
dGhlIG90aGVyIHR5cGVzIG9mIEpTQ2FsbGJhY2tPYmplY3RzLgorICAgICAgICAoSlNPYmplY3RH
ZXRQcml2YXRlKToKKyAgICAgICAgKEpTT2JqZWN0U2V0UHJpdmF0ZSk6CisgICAgICAgIChKU09i
amVjdEdldFByaXZhdGVQcm9wZXJ0eSk6CisgICAgICAgIChKU09iamVjdFNldFByaXZhdGVQcm9w
ZXJ0eSk6CisgICAgICAgIChKU09iamVjdERlbGV0ZVByaXZhdGVQcm9wZXJ0eSk6CisgICAgICAg
ICogQVBJL0pTVmFsdWUubW06CisgICAgICAgIChvYmplY3RUb1ZhbHVlV2l0aG91dENvcHkpOgor
ICAgICAgICAqIEFQSS9KU1ZhbHVlUmVmLmNwcDoKKyAgICAgICAgKEpTVmFsdWVJc09iamVjdE9m
Q2xhc3MpOgorICAgICAgICAqIEFQSS9KU1ZpcnR1YWxNYWNoaW5lLm1tOgorICAgICAgICAoLVtK
U1ZpcnR1YWxNYWNoaW5lIGluaXRXaXRoQ29udGV4dEdyb3VwUmVmOl0pOgorICAgICAgICAoK1tK
U1ZpcnR1YWxNYWNoaW5lIHZpcnR1YWxNYWNoaW5lV2l0aENvbnRleHRHcm91cFJlZjpdKToKKyAg
ICAgICAgKiBBUEkvSlNXcmFwcGVyTWFwLm1tOgorICAgICAgICAod3JhcHBlckZpbmFsaXplKToK
KyAgICAgICAgKG1ha2VXcmFwcGVyKTogVGhpcyBpcyBvdXIgb3duIGludGVybmFsIHZlcnNpb24g
b2YgSlNPYmplY3RNYWtlIHdoaWNoIGNyZWF0ZXMgSlNBUElXcmFwcGVyT2JqZWN0cywgdGhlIE9i
ai1DIEFQSSAKKyAgICAgICAgdmVyc2lvbiBvZiBKU0NhbGxiYWNrT2JqZWN0cy4KKyAgICAgICAg
KGNyZWF0ZU9iamVjdFdpdGhDdXN0b21CcmFuZCk6CisgICAgICAgICgtW0pTT2JqQ0NsYXNzSW5m
byB3cmFwcGVyRm9yT2JqZWN0Ol0pOgorICAgICAgICAodHJ5VW53cmFwT2JqY09iamVjdCk6Cisg
ICAgICAgICogQVBJL0phdmFTY3JpcHRDb3JlLmg6CisgICAgICAgICogQVBJL3Rlc3RzL3Rlc3Rh
cGkubW06IEFkZGVkIG5ldyB0ZXN0cyBmb3IgdGhlIHN0cm9uZyBhbmQgd2VhayB1c2VzIG9mIEpT
TWFuYWdlZFZhbHVlIGluIHRoZSBjb250ZXh0IG9mIGFuIAorICAgICAgICBvbmNsaWNrIGhhbmRs
ZXIgZm9yIGFuIE9iamVjdGl2ZS1DIG9iamVjdCBpbnNlcnRlZCBpbnRvIGEgSlNDb250ZXh0Lgor
ICAgICAgICAoLVtUZXh0WFlaIHNldFdlYWtPbmNsaWNrOl0pOgorICAgICAgICAoLVtUZXh0WFla
IHNldE9uY2xpY2s6XSk6CisgICAgICAgICgtW1RleHRYWVogd2Vha09uY2xpY2tdKToKKyAgICAg
ICAgKC1bVGV4dFhZWiBvbmNsaWNrXSk6CisgICAgICAgICgtW1RleHRYWVogY2xpY2tdKToKKyAg
ICAgICAgKiBDTWFrZUxpc3RzLnR4dDogVmFyaW91cyBidWlsZCBzeXN0ZW0gYWRkaXRpb25zLgor
ICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogSmF2YVNjcmlwdENvcmUu
Z3lwaToKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUudmNwcm9qOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6IEFk
ZGVkIHRoZSBuZXcgY2Fub25pY2FsIFN0cnVjdHVyZSBmb3IgdGhlIEpTQVBJV3JhcHBlck9iamVj
dCBjbGFzcy4KKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnJlc2V0KToKKyAgICAgICAg
KEpTQyk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKToKKyAg
ICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgIChKU0dsb2JhbE9iamVj
dCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpvYmpjV3JhcHBlck9iamVjdFN0cnVj
dHVyZSk6CisKIDIwMTMtMDMtMDUgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21h
aWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxNDQ3MDguCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAxNDQ3ODApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTI0
LDYgKzI0LDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX0lOQ0xVREVfRElSRUNUT1JJRVMKICkKIAog
c2V0KEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKKyAgICBBUEkvSlNBUElXcmFwcGVyT2JqZWN0LmNw
cAogICAgIEFQSS9KU0Jhc2UuY3BwCiAgICAgQVBJL0pTQ2FsbGJhY2tDb25zdHJ1Y3Rvci5jcHAK
ICAgICBBUEkvSlNDYWxsYmFja0Z1bmN0aW9uLmNwcApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHJldmlzaW9uIDE0NDc4MCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw2ICsz
Niw4IEBAIGphdmFzY3JpcHRjb3JlX2J1aWx0X25vc291cmNlcyArPSBcCiBqYXZhc2NyaXB0Y29y
ZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0FQSUNhc3QuaCBcCiAJ
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9BUElTaGltcy5oIFwKKyAgICBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL0pTQVBJV3JhcHBlck9iamVjdC5jcHAgXAorICAgIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvSlNBUElXcmFwcGVyT2JqZWN0LmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvSlNCYXNlLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0Jhc2VQcml2
YXRlLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja0NvbnN0cnVjdG9y
LmNwcCBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZ3lwaQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZ3lwaQko
cmV2aXNpb24gMTQ0NzgwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Lmd5cGkJKHdvcmtpbmcgY29weSkKQEAgLTM2LDYgKzM2LDggQEAKICAgICAgICAgICAgICdBUEkv
QVBJU2hpbXMuaCcsCiAgICAgICAgICAgICAnQVBJL0phdmFTY3JpcHRDb3JlLmgnLAogICAgICAg
ICAgICAgJ0FQSS9KYXZhU2NyaXB0LmgnLAorICAgICAgICAgICAgJ0FQSS9KU0FQSVdyYXBwZXJP
YmplY3QuY3BwJywKKyAgICAgICAgICAgICdBUEkvSlNBUElXcmFwcGVyT2JqZWN0LmgnLAogICAg
ICAgICAgICAgJ0FQSS9KU0Jhc2UuY3BwJywKICAgICAgICAgICAgICdBUEkvSlNCYXNlLmgnLAog
ICAgICAgICAgICAgJ0FQSS9KU0Jhc2VQcml2YXRlLmgnLApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL1RhcmdldC5wcmkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL1Rh
cmdldC5wcmkJKHJldmlzaW9uIDE0NDc4MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9UYXJn
ZXQucHJpCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3IEBAIElOU1RBTExERVBTICs9IGFs
bAogZGVidWdfYW5kX3JlbGVhc2U6IElOQ0xVREVQQVRIICs9ICQkSkFWQVNDUklQVENPUkVfR0VO
RVJBVEVEX1NPVVJDRVNfRElSLyQkdGFyZ2V0U3ViRGlyKCkKIAogU09VUkNFUyArPSBcCisgICAg
QVBJL0pTQVBJV3JhcHBlck9iamVjdC5jcHAgXAogICAgIEFQSS9KU0Jhc2UuY3BwIFwKICAgICBB
UEkvSlNDYWxsYmFja0NvbnN0cnVjdG9yLmNwcCBcCiAgICAgQVBJL0pTQ2FsbGJhY2tGdW5jdGlv
bi5jcHAgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0FQSVdyYXBwZXJPYmpl
Y3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNBUElXcmFw
cGVyT2JqZWN0LmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
SlNBUElXcmFwcGVyT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDY0IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTQVBJV3JhcHBlck9i
amVjdC5oIgorCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKKyNpbmNsdWRlICJKU0Nh
bGxiYWNrT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgorI2luY2x1ZGUgIlNs
b3RWaXNpdG9ySW5saW5lcy5oIgorI2luY2x1ZGUgIlN0cnVjdHVyZS5oIgorI2luY2x1ZGUgIlN0
cnVjdHVyZUlubGluZXMuaCIKKworbmFtZXNwYWNlIEpTQyB7CisgICAgCit0ZW1wbGF0ZSA8PiBj
b25zdCBDbGFzc0luZm8gSlNDYWxsYmFja09iamVjdDxKU0FQSVdyYXBwZXJPYmplY3Q+OjpzX2lu
Zm8gPSB7ICJFbnVtZXJhYmxlQ2FsbGJhY2tPYmplY3QiLCAmQmFzZTo6c19pbmZvLCAwLCAwLCBD
UkVBVEVfTUVUSE9EX1RBQkxFKEpTQ2FsbGJhY2tPYmplY3QpIH07CisKK3RlbXBsYXRlPD4gY29u
c3QgYm9vbCBKU0NhbGxiYWNrT2JqZWN0PEpTQVBJV3JhcHBlck9iamVjdD46Om5lZWRzRGVzdHJ1
Y3Rpb24gPSB0cnVlOworCit0ZW1wbGF0ZSA8PgorU3RydWN0dXJlKiBKU0NhbGxiYWNrT2JqZWN0
PEpTQVBJV3JhcHBlck9iamVjdD46OmNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2Jh
bERhdGEsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG8pCit7Cisg
ICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKGdsb2JhbERhdGEsIGdsb2JhbE9iamVjdCwgcHJv
dG8sIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgJnNfaW5mbyk7Cit9CisK
K0pTQVBJV3JhcHBlck9iamVjdDo6SlNBUElXcmFwcGVyT2JqZWN0KEpTR2xvYmFsRGF0YSYgZ2xv
YmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBCYXNlKGdsb2JhbERhdGEsIHN0
cnVjdHVyZSkKKyAgICAsIG1fd3JhcHBlZE9iamVjdCgwKQoreworfQorCit2b2lkIEpTQVBJV3Jh
cHBlck9iamVjdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIEpTQzo6U2xvdFZpc2l0b3Im
IHZpc2l0b3IpCit7CisgICAgSlNBUElXcmFwcGVyT2JqZWN0KiB0aGlzT2JqZWN0ID0gSlNDOjpq
c0Nhc3Q8SlNBUElXcmFwcGVyT2JqZWN0Kj4oY2VsbCk7CisgICAgQ09NUElMRV9BU1NFUlQoU3Ry
dWN0dXJlRmxhZ3MgJiBPdmVycmlkZXNWaXNpdENoaWxkcmVuLCBPdmVycmlkZXNWaXNpdENoaWxk
cmVuV2l0aG91dFNldHRpbmdGbGFnKTsKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKGNlbGwsIHZp
c2l0b3IpOworCisgICAgaWYgKHRoaXNPYmplY3QtPndyYXBwZWRPYmplY3QoKSkKKyAgICAgICAg
dmlzaXRvci5hZGRPcGFxdWVSb290KHRoaXNPYmplY3QtPndyYXBwZWRPYmplY3QoKSk7Cit9CisK
K30gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0FQ
SVdyYXBwZXJPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTQVBJV3JhcHBlck9iamVjdC5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9KU0FQSVdyYXBwZXJPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDU1
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBKU0FQSVdyYXBwZXJPYmplY3RfaAorI2RlZmluZSBK
U0FQSVdyYXBwZXJPYmplY3RfaAorCisjaW5jbHVkZSAiSlNCYXNlLmgiCisjaW5jbHVkZSAiSlNE
ZXN0cnVjdGlibGVPYmplY3QuaCIKKyNpbmNsdWRlICJXZWFrUmVmZXJlbmNlSGFydmVzdGVyLmgi
CisKK25hbWVzcGFjZSBKU0MgeworICAgIAorY2xhc3MgSlNBUElXcmFwcGVyT2JqZWN0IDogcHVi
bGljIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIEpTRGVzdHJ1
Y3RpYmxlT2JqZWN0IEJhc2U7CisgICAgCisgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihK
U0NlbGwqLCBKU0M6OlNsb3RWaXNpdG9yJik7CisgICAgCisgICAgdm9pZCogd3JhcHBlZE9iamVj
dCgpIHsgcmV0dXJuIG1fd3JhcHBlZE9iamVjdDsgfQorICAgIHZvaWQgc2V0V3JhcHBlZE9iamVj
dCh2b2lkKiB3cmFwcGVkT2JqZWN0KSB7IG1fd3JhcHBlZE9iamVjdCA9IHdyYXBwZWRPYmplY3Q7
IH0KKworcHJvdGVjdGVkOgorICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFn
cyA9IE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4gfCBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKKyAgICAK
KyAgICBKU0FQSVdyYXBwZXJPYmplY3QoSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKik7CisKK3By
aXZhdGU6CisgICAgdm9pZCogbV93cmFwcGVkT2JqZWN0OworfTsKKworfSAvLyBuYW1lc3BhY2Ug
SlNDCisKKyNlbmRpZiAvLyBKU0FQSVdyYXBwZXJPYmplY3RfaApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU0Jhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNCYXNlLmNwcAkocmV2aXNpb24gMTQ0NzgwKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS9KU0Jhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTAsMyArMTEwLDEzIEBA
IHZvaWQgSlNSZXBvcnRFeHRyYU1lbW9yeUNvc3QoSlNDb250ZXh0UmUKICAgICBBUElFbnRyeVNo
aW0gZW50cnlTaGltKGV4ZWMpOwogICAgIGV4ZWMtPmdsb2JhbERhdGEoKS5oZWFwLnJlcG9ydEV4
dHJhTWVtb3J5Q29zdChzaXplKTsKIH0KKwordm9pZCBKU1N5bmNocm9ub3VzR2FyYmFnZUNvbGxl
Y3QoSlNDb250ZXh0UmVmIGN0eCkKK3sKKyAgICBpZiAoIWN0eCkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgRXhlY1N0YXRlKiBleGVjID0gdG9KUyhjdHgpOworICAgIEFQSUVudHJ5U2hpbSBlbnRy
eVNoaW0oZXhlYyk7CisgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLmhlYXAuY29sbGVjdEFsbEdhcmJh
Z2UoKTsKK30KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNCYXNlUHJpdmF0ZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNCYXNlUHJpdmF0ZS5o
CShyZXZpc2lvbiAxNDQ3ODApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQmFzZVBy
aXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDUsNiArNDUsMTUgQEAgcmVnaW9uLgogKi8KIEpT
X0VYUE9SVCB2b2lkIEpTUmVwb3J0RXh0cmFNZW1vcnlDb3N0KEpTQ29udGV4dFJlZiBjdHgsIHNp
emVfdCBzaXplKSBBVkFJTEFCTEVfSU5fV0VCS0lUX1ZFUlNJT05fNF8wOwogCisvKiEKK0BmdW5j
dGlvbgorQGFic3RyYWN0IFN5bmNocm9ub3VzbHkgcnVucyBhIGZ1bGwgbWFyay1zd2VlcCBnYXJi
YWdlIGNvbGxlY3Rpb24uCitAcGFyYW0gY3R4IFRoZSBleGVjdXRpb24gY29udGV4dCB0byB1c2Uu
CitAZGlzY3Vzc2lvbiBUaGlzIGZ1bmN0aW9uIGlzIG9ubHkgdXNlZCBpbnRlcm5hbGx5IGZvciB0
ZXN0cy4gSWYgeW91J3JlIG5vdCAKK3N1cmUgeW91IG5lZWQgdG8gdXNlIHRoaXMgZnVuY3Rpb24g
dGhlbiB5b3UgZG9uJ3QgbmVlZCB0by4KKyovCitKU19FWFBPUlQgdm9pZCBKU1N5bmNocm9ub3Vz
R2FyYmFnZUNvbGxlY3QoSlNDb250ZXh0UmVmIGN0eCk7CisKICNpZmRlZiBfX2NwbHVzcGx1cwog
fQogI2VuZGlmCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmpl
Y3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFj
a09iamVjdC5jcHAJKHJldmlzaW9uIDE0NDc4MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNDYWxsYmFja09iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYxLDEyICs2MSw2IEBA
IFN0cnVjdHVyZSogSlNDYWxsYmFja09iamVjdDxKU0dsb2JhbE9iamUKICAgICByZXR1cm4gU3Ry
dWN0dXJlOjpjcmVhdGUoZ2xvYmFsRGF0YSwgZ2xvYmFsT2JqZWN0LCBwcm90bywgVHlwZUluZm8o
R2xvYmFsT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCAmc19pbmZvKTsgCiB9CiAKLXRlbXBs
YXRlIDxjbGFzcyBQYXJlbnQ+Ci12b2lkIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6ZGVzdHJv
eShKU0NlbGwqIGNlbGwpCi17Ci0gICAgc3RhdGljX2Nhc3Q8SlNDYWxsYmFja09iamVjdCo+KGNl
bGwpLT5KU0NhbGxiYWNrT2JqZWN0Ojp+SlNDYWxsYmFja09iamVjdCgpOwotfQotCiB2b2lkIEpT
Q2FsbGJhY2tPYmplY3REYXRhOjpmaW5hbGl6ZShIYW5kbGU8VW5rbm93bj4gaGFuZGxlLCB2b2lk
KiBjb250ZXh0KQogewogICAgIEpTQ2xhc3NSZWYganNDbGFzcyA9IHN0YXRpY19jYXN0PEpTQ2xh
c3NSZWY+KGNvbnRleHQpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxi
YWNrT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0Nh
bGxiYWNrT2JqZWN0LmgJKHJldmlzaW9uIDE0NDc4MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvSlNDYWxsYmFja09iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzYsNyArMTM2LDEw
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+KiBjcmVhdGUo
SlNHbG9iYWxEYXRhJiwgSlNDbGFzc1JlZiwgU3RydWN0dXJlKik7CiAKICAgICBzdGF0aWMgY29u
c3QgYm9vbCBuZWVkc0Rlc3RydWN0aW9uOwotICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxs
Kik7CisgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqIGNlbGwpCisgICAgeworICAgICAg
ICBzdGF0aWNfY2FzdDxKU0NhbGxiYWNrT2JqZWN0Kj4oY2VsbCktPkpTQ2FsbGJhY2tPYmplY3Q6
On5KU0NhbGxiYWNrT2JqZWN0KCk7CisgICAgfQogCiAgICAgdm9pZCBzZXRQcml2YXRlKHZvaWQq
IGRhdGEpOwogICAgIHZvaWQqIGdldFByaXZhdGUoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNDb250ZXh0Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvSlNDb250ZXh0Lm1tCShyZXZpc2lvbiAxNDQ3ODApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL0pTQ29udGV4dC5tbQkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQAog
I2luY2x1ZGUgImNvbmZpZy5oIgogCiAjaW1wb3J0ICJBUElDYXN0LmgiCisjaW1wb3J0ICJBUElT
aGltcy5oIgogI2ltcG9ydCAiSlNDb250ZXh0SW50ZXJuYWwuaCIKICNpbXBvcnQgIkpTR2xvYmFs
T2JqZWN0LmgiCiAjaW1wb3J0ICJKU1ZhbHVlSW50ZXJuYWwuaCIKQEAgLTcyLDYgKzczLDggQEAg
LSAoaWQpaW5pdFdpdGhWaXJ0dWFsTWFjaGluZTooSlNWaXJ0dWFsTQogICAgICAgICBjb250ZXh0
LmV4Y2VwdGlvbiA9IGV4Y2VwdGlvblZhbHVlOwogICAgIH07CiAKKyAgICBbbV92aXJ0dWFsTWFj
aGluZSBhZGRDb250ZXh0OnNlbGYgZm9yR2xvYmFsQ29udGV4dFJlZjptX2NvbnRleHRdOworCiAg
ICAgcmV0dXJuIHNlbGY7CiB9CiAKQEAgLTE4Nyw2ICsxOTAsOCBAQCAtIChpZClpbml0V2l0aEds
b2JhbENvbnRleHRSZWY6KEpTR2xvYmFsCiAgICAgICAgIGNvbnRleHQuZXhjZXB0aW9uID0gZXhj
ZXB0aW9uVmFsdWU7CiAgICAgfTsKIAorICAgIFttX3ZpcnR1YWxNYWNoaW5lIGFkZENvbnRleHQ6
c2VsZiBmb3JHbG9iYWxDb250ZXh0UmVmOm1fY29udGV4dF07CisKICAgICByZXR1cm4gc2VsZjsK
IH0KIApAQCAtMjU0LDEwICsyNTksOCBAQCArIChKU0NvbnRleHQgKiljb250ZXh0V2l0aEdsb2Jh
bENvbnRleHRSCiB7CiAgICAgSlNWaXJ0dWFsTWFjaGluZSAqdmlydHVhbE1hY2hpbmUgPSBbSlNW
aXJ0dWFsTWFjaGluZSB2aXJ0dWFsTWFjaGluZVdpdGhDb250ZXh0R3JvdXBSZWY6dG9SZWYoJnRv
SlMoZ2xvYmFsQ29udGV4dCktPmdsb2JhbERhdGEoKSldOwogICAgIEpTQ29udGV4dCAqY29udGV4
dCA9IFt2aXJ0dWFsTWFjaGluZSBjb250ZXh0Rm9yR2xvYmFsQ29udGV4dFJlZjpnbG9iYWxDb250
ZXh0XTsKLSAgICBpZiAoIWNvbnRleHQpIHsKKyAgICBpZiAoIWNvbnRleHQpCiAgICAgICAgIGNv
bnRleHQgPSBbW1tKU0NvbnRleHQgYWxsb2NdIGluaXRXaXRoR2xvYmFsQ29udGV4dFJlZjpnbG9i
YWxDb250ZXh0XSBhdXRvcmVsZWFzZV07Ci0gICAgICAgIFt2aXJ0dWFsTWFjaGluZSBhZGRDb250
ZXh0OmNvbnRleHQgZm9yR2xvYmFsQ29udGV4dFJlZjpnbG9iYWxDb250ZXh0XTsKLSAgICB9CiAg
ICAgcmV0dXJuIGNvbnRleHQ7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
SlNNYW5hZ2VkVmFsdWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTTWFuYWdlZFZhbHVlLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL0pTTWFuYWdlZFZhbHVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1MSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpZm5kZWYgSlNNYW5hZ2VkVmFsdWVfaAorI2RlZmluZSBKU01hbmFnZWRWYWx1
ZV9oCisKKyNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0pTQmFzZS5oPgorCisjaWYgSlNDX09CSkNf
QVBJX0VOQUJMRUQKKworQGNsYXNzIEpTVmFsdWU7CitAY2xhc3MgSlNDb250ZXh0OworCitOU19D
TEFTU19BVkFJTEFCTEUoMTBfOSwgTkEpCitAaW50ZXJmYWNlIEpTTWFuYWdlZFZhbHVlIDogTlNP
YmplY3QKKworKyAoSlNNYW5hZ2VkVmFsdWUgKil3ZWFrVmFsdWVXaXRoVmFsdWU6KEpTVmFsdWUg
Kil2YWx1ZTsKKysgKEpTTWFuYWdlZFZhbHVlICopbWFuYWdlZFZhbHVlV2l0aFZhbHVlOihKU1Zh
bHVlICopdmFsdWUgb3duZXI6KGlkKW93bmVyOworCistIChpZClpbml0V2l0aFZhbHVlOihKU1Zh
bHVlICopdmFsdWU7CistIChpZClpbml0V2l0aFZhbHVlOihKU1ZhbHVlICopdmFsdWUgb3duZXI6
KGlkKW93bmVyOworCistIChKU1ZhbHVlICopdmFsdWU7CisKK0BlbmQKKworI2VuZGlmIC8vIEpT
Q19PQkpDX0FQSV9FTkFCTEVECisKKyNlbmRpZiAvLyBKU01hbmFnZWRWYWx1ZV9oCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTTWFuYWdlZFZhbHVlLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNNYW5hZ2VkVmFsdWUubW0JKHJldmlzaW9uIDAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTTWFuYWdlZFZhbHVlLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsMTM0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworCisjaW1wb3J0ICJjb25maWcu
aCIKKyNpbXBvcnQgIkpTTWFuYWdlZFZhbHVlLmgiCisKKyNpZiBKU0NfT0JKQ19BUElfRU5BQkxF
RAorCisjaW1wb3J0ICJBUElDYXN0LmgiCisjaW1wb3J0ICJIZWFwLmgiCisjaW1wb3J0ICJKU0NK
U1ZhbHVlSW5saW5lcy5oIgorI2ltcG9ydCAiSlNDb250ZXh0SW50ZXJuYWwuaCIKKyNpbXBvcnQg
IkpTVmFsdWVJbnRlcm5hbC5oIgorI2ltcG9ydCAiV2Vhay5oIgorI2ltcG9ydCAiV2Vha0hhbmRs
ZU93bmVyLmgiCisjaW1wb3J0ICJPYmpjUnVudGltZUV4dHJhcy5oIgorCitjbGFzcyBKU01hbmFn
ZWRWYWx1ZUhhbmRsZU93bmVyIDogcHVibGljIEpTQzo6V2Vha0hhbmRsZU93bmVyIHsKK3B1Ymxp
YzoKKyAgICB2aXJ0dWFsIGJvb2wgaXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5k
bGU8SlNDOjpVbmtub3duPiwgdm9pZCogY29udGV4dCwgSlNDOjpTbG90VmlzaXRvciYpOworfTsK
Kworc3RhdGljIEpTTWFuYWdlZFZhbHVlSGFuZGxlT3duZXIqIG1hbmFnZWRWYWx1ZUhhbmRsZU93
bmVyKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEpTTWFuYWdlZFZhbHVlSGFuZGxlT3du
ZXIsIGpzTWFuYWdlZFZhbHVlSGFuZGxlT3duZXIsICgpKTsKKyAgICByZXR1cm4gJmpzTWFuYWdl
ZFZhbHVlSGFuZGxlT3duZXI7Cit9CisKK0BpbnRlcmZhY2UgSlNNYW5hZ2VkVmFsdWUgKEludGVy
bmFsKQorLSAoaWQpd2Vha093bmVyOworQGVuZAorCitAaW1wbGVtZW50YXRpb24gSlNNYW5hZ2Vk
VmFsdWUgeworICAgIEpTQzo6V2VhazxKU0M6OkpTT2JqZWN0PiBtX3ZhbHVlOworICAgIGlkIG1f
d2Vha093bmVyOworfQorCisrIChKU01hbmFnZWRWYWx1ZSAqKXdlYWtWYWx1ZVdpdGhWYWx1ZToo
SlNWYWx1ZSAqKXZhbHVlCit7CisgICAgcmV0dXJuIFtbW3NlbGYgYWxsb2NdIGluaXRXaXRoVmFs
dWU6dmFsdWVdIGF1dG9yZWxlYXNlXTsKK30KKworKyAoSlNNYW5hZ2VkVmFsdWUgKiltYW5hZ2Vk
VmFsdWVXaXRoVmFsdWU6KEpTVmFsdWUgKil2YWx1ZSBvd25lcjooaWQpb3duZXIKK3sKKyAgICBy
ZXR1cm4gW1tbc2VsZiBhbGxvY10gaW5pdFdpdGhWYWx1ZTp2YWx1ZSBvd25lcjpvd25lcl0gYXV0
b3JlbGVhc2VdOworfQorCistIChpZClpbml0Cit7CisgICAgcmV0dXJuIFtzZWxmIGluaXRXaXRo
VmFsdWU6W0pTVmFsdWUgdmFsdWVXaXRoTnVsbEluQ29udGV4dDpbSlNDb250ZXh0IGN1cnJlbnRD
b250ZXh0XV0gb3duZXI6bmlsXTsKK30KKworLSAoaWQpaW5pdFdpdGhWYWx1ZTooSlNWYWx1ZSAq
KXZhbHVlCit7CisgICAgcmV0dXJuIFtzZWxmIGluaXRXaXRoVmFsdWU6dmFsdWUgb3duZXI6bmls
XTsKK30KKworLSAoaWQpaW5pdFdpdGhWYWx1ZTooSlNWYWx1ZSAqKXZhbHVlIG93bmVyOihpZClv
d25lcgoreworICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07CisgICAgaWYgKCFzZWxmKQorICAgICAg
ICByZXR1cm4gbmlsOworICAgIAorICAgIGlmICghSlNWYWx1ZUlzT2JqZWN0KFt2YWx1ZS5jb250
ZXh0IGdsb2JhbENvbnRleHRSZWZdLCBbdmFsdWUgSlNWYWx1ZVJlZl0pKQorICAgICAgICByZXR1
cm4gW3NlbGYgaW5pdFdpdGhWYWx1ZTpbSlNWYWx1ZSB2YWx1ZVdpdGhOdWxsSW5Db250ZXh0OnZh
bHVlLmNvbnRleHRdXTsKKworICAgIEpTQzo6SlNPYmplY3QqIG9iamVjdCA9IHRvSlMoSlNWYWx1
ZVRvT2JqZWN0KFt2YWx1ZS5jb250ZXh0IGdsb2JhbENvbnRleHRSZWZdLCBbdmFsdWUgSlNWYWx1
ZVJlZl0sIDApKTsKKyAgICBKU0M6OldlYWs8SlNDOjpKU09iamVjdD4gd2VhayhvYmplY3QsIG1h
bmFnZWRWYWx1ZUhhbmRsZU93bmVyKCksIHNlbGYpOworICAgIG1fdmFsdWUuc3dhcCh3ZWFrKTsK
KworICAgIG9iamNfaW5pdFdlYWsoJm1fd2Vha093bmVyLCBvd25lcik7CisKKyAgICByZXR1cm4g
c2VsZjsKK30KKworLSAodm9pZClkZWFsbG9jCit7CisgICAgb2JqY19kZXN0cm95V2VhaygmbV93
ZWFrT3duZXIpOworICAgIFtzdXBlciBkZWFsbG9jXTsKK30KKworLSAoSlNWYWx1ZSAqKXZhbHVl
Cit7CisgICAgaWYgKCFtX3ZhbHVlKQorICAgICAgICByZXR1cm4gbmlsOworICAgIEpTQzo6SlNP
YmplY3QqIG9iamVjdCA9IG1fdmFsdWUuZ2V0KCk7CisgICAgSlNDb250ZXh0ICpjb250ZXh0ID0g
W0pTQ29udGV4dCBjb250ZXh0V2l0aEdsb2JhbENvbnRleHRSZWY6dG9HbG9iYWxSZWYob2JqZWN0
LT5zdHJ1Y3R1cmUoKS0+Z2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKSldOworICAgIHJldHVy
biBbSlNWYWx1ZSB2YWx1ZVdpdGhWYWx1ZTp0b1JlZihvYmplY3QpIGluQ29udGV4dDpjb250ZXh0
XTsKK30KKworQGVuZAorCitAaW1wbGVtZW50YXRpb24gSlNNYW5hZ2VkVmFsdWUgKEludGVybmFs
KQorCistIChpZCl3ZWFrT3duZXIKK3sKKyAgICByZXR1cm4gb2JqY19sb2FkV2VhaygmbV93ZWFr
T3duZXIpOworfQorCitAZW5kCisKK2Jvb2wgSlNNYW5hZ2VkVmFsdWVIYW5kbGVPd25lcjo6aXNS
ZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiwgdm9pZCog
Y29udGV4dCwgSlNDOjpTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBKU01hbmFnZWRWYWx1
ZSAqbWFuYWdlZFZhbHVlID0gc3RhdGljX2Nhc3Q8SlNNYW5hZ2VkVmFsdWUgKj4oY29udGV4dCk7
CisgICAgaWQgd2Vha093bmVyID0gW21hbmFnZWRWYWx1ZSB3ZWFrT3duZXJdOworICAgIGlmICgh
d2Vha093bmVyKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIHZpc2l0b3IuY29u
dGFpbnNPcGFxdWVSb290KHdlYWtPd25lcik7Cit9CisKKyNlbmRpZiAvLyBKU0NfT0JKQ19BUElf
RU5BQkxFRApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU09iamVjdFJlZi5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU09iamVjdFJlZi5jcHAJ
KHJldmlzaW9uIDE0NDc4MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNPYmplY3RS
ZWYuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiRnVuY3Rp
b25Db25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJJbml0
aWFsaXplVGhyZWFkaW5nLmgiCisjaW5jbHVkZSAiSlNBUElXcmFwcGVyT2JqZWN0LmgiCiAjaW5j
bHVkZSAiSlNBcnJheS5oIgogI2luY2x1ZGUgIkpTQ2FsbGJhY2tDb25zdHJ1Y3Rvci5oIgogI2lu
Y2x1ZGUgIkpTQ2FsbGJhY2tGdW5jdGlvbi5oIgpAQCAtMzQ1LDYgKzM0Niw4IEBAIHZvaWQqIEpT
T2JqZWN0R2V0UHJpdmF0ZShKU09iamVjdFJlZiBvYmoKICAgICAgICAgcmV0dXJuIGpzQ2FzdDxK
U0NhbGxiYWNrT2JqZWN0PEpTR2xvYmFsT2JqZWN0Pio+KGpzT2JqZWN0KS0+Z2V0UHJpdmF0ZSgp
OwogICAgIGlmIChqc09iamVjdC0+aW5oZXJpdHMoJkpTQ2FsbGJhY2tPYmplY3Q8SlNEZXN0cnVj
dGlibGVPYmplY3Q+OjpzX2luZm8pKQogICAgICAgICByZXR1cm4ganNDYXN0PEpTQ2FsbGJhY2tP
YmplY3Q8SlNEZXN0cnVjdGlibGVPYmplY3Q+Kj4oanNPYmplY3QpLT5nZXRQcml2YXRlKCk7Cisg
ICAgaWYgKGpzT2JqZWN0LT5pbmhlcml0cygmSlNDYWxsYmFja09iamVjdDxKU0FQSVdyYXBwZXJP
YmplY3Q+OjpzX2luZm8pKQorICAgICAgICByZXR1cm4ganNDYXN0PEpTQ2FsbGJhY2tPYmplY3Q8
SlNBUElXcmFwcGVyT2JqZWN0Pio+KGpzT2JqZWN0KS0+Z2V0UHJpdmF0ZSgpOwogICAgIAogICAg
IHJldHVybiAwOwogfQpAQCAtMzYxLDYgKzM2NCwxMCBAQCBib29sIEpTT2JqZWN0U2V0UHJpdmF0
ZShKU09iamVjdFJlZiBvYmplCiAgICAgICAgIGpzQ2FzdDxKU0NhbGxiYWNrT2JqZWN0PEpTRGVz
dHJ1Y3RpYmxlT2JqZWN0Pio+KGpzT2JqZWN0KS0+c2V0UHJpdmF0ZShkYXRhKTsKICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgfQorICAgIGlmIChqc09iamVjdC0+aW5oZXJpdHMoJkpTQ2FsbGJh
Y2tPYmplY3Q8SlNBUElXcmFwcGVyT2JqZWN0Pjo6c19pbmZvKSkgeworICAgICAgICBqc0Nhc3Q8
SlNDYWxsYmFja09iamVjdDxKU0FQSVdyYXBwZXJPYmplY3Q+Kj4oanNPYmplY3QpLT5zZXRQcml2
YXRlKGRhdGEpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CiAgICAgICAgIAogICAgIHJl
dHVybiBmYWxzZTsKIH0KQEAgLTM3Niw2ICszODMsOCBAQCBKU1ZhbHVlUmVmIEpTT2JqZWN0R2V0
UHJpdmF0ZVByb3BlcnR5KEpTCiAgICAgICAgIHJlc3VsdCA9IGpzQ2FzdDxKU0NhbGxiYWNrT2Jq
ZWN0PEpTR2xvYmFsT2JqZWN0Pio+KGpzT2JqZWN0KS0+Z2V0UHJpdmF0ZVByb3BlcnR5KG5hbWUp
OwogICAgIGVsc2UgaWYgKGpzT2JqZWN0LT5pbmhlcml0cygmSlNDYWxsYmFja09iamVjdDxKU0Rl
c3RydWN0aWJsZU9iamVjdD46OnNfaW5mbykpCiAgICAgICAgIHJlc3VsdCA9IGpzQ2FzdDxKU0Nh
bGxiYWNrT2JqZWN0PEpTRGVzdHJ1Y3RpYmxlT2JqZWN0Pio+KGpzT2JqZWN0KS0+Z2V0UHJpdmF0
ZVByb3BlcnR5KG5hbWUpOworICAgIGVsc2UgaWYgKGpzT2JqZWN0LT5pbmhlcml0cygmSlNDYWxs
YmFja09iamVjdDxKU0FQSVdyYXBwZXJPYmplY3Q+OjpzX2luZm8pKQorICAgICAgICByZXN1bHQg
PSBqc0Nhc3Q8SlNDYWxsYmFja09iamVjdDxKU0FQSVdyYXBwZXJPYmplY3Q+Kj4oanNPYmplY3Qp
LT5nZXRQcml2YXRlUHJvcGVydHkobmFtZSk7CiAgICAgcmV0dXJuIHRvUmVmKGV4ZWMsIHJlc3Vs
dCk7CiB9CiAKQEAgLTM5NCw2ICs0MDMsMTAgQEAgYm9vbCBKU09iamVjdFNldFByaXZhdGVQcm9w
ZXJ0eShKU0NvbnRleAogICAgICAgICBqc0Nhc3Q8SlNDYWxsYmFja09iamVjdDxKU0Rlc3RydWN0
aWJsZU9iamVjdD4qPihqc09iamVjdCktPnNldFByaXZhdGVQcm9wZXJ0eShleGVjLT5nbG9iYWxE
YXRhKCksIG5hbWUsIGpzVmFsdWUpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CisgICAg
aWYgKGpzT2JqZWN0LT5pbmhlcml0cygmSlNDYWxsYmFja09iamVjdDxKU0FQSVdyYXBwZXJPYmpl
Y3Q+OjpzX2luZm8pKSB7CisgICAgICAgIGpzQ2FzdDxKU0NhbGxiYWNrT2JqZWN0PEpTQVBJV3Jh
cHBlck9iamVjdD4qPihqc09iamVjdCktPnNldFByaXZhdGVQcm9wZXJ0eShleGVjLT5nbG9iYWxE
YXRhKCksIG5hbWUsIGpzVmFsdWUpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CiAgICAg
cmV0dXJuIGZhbHNlOwogfQogCkBAIC00MTEsNiArNDI0LDEwIEBAIGJvb2wgSlNPYmplY3REZWxl
dGVQcml2YXRlUHJvcGVydHkoSlNDb24KICAgICAgICAganNDYXN0PEpTQ2FsbGJhY2tPYmplY3Q8
SlNEZXN0cnVjdGlibGVPYmplY3Q+Kj4oanNPYmplY3QpLT5kZWxldGVQcml2YXRlUHJvcGVydHko
bmFtZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KKyAgICBpZiAoanNPYmplY3QtPmlu
aGVyaXRzKCZKU0NhbGxiYWNrT2JqZWN0PEpTQVBJV3JhcHBlck9iamVjdD46OnNfaW5mbykpIHsK
KyAgICAgICAganNDYXN0PEpTQ2FsbGJhY2tPYmplY3Q8SlNBUElXcmFwcGVyT2JqZWN0Pio+KGpz
T2JqZWN0KS0+ZGVsZXRlUHJpdmF0ZVByb3BlcnR5KG5hbWUpOworICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICB9CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL0pTVmFsdWUubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU1ZhbHVlLm1tCShyZXZpc2lvbiAxNDQ3ODApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTVmFsdWUubW0JKHdvcmtpbmcgY29weSkKQEAgLTg5Miw2ICs4OTIsMTMgQEAgc3Rh
dGljIE9iamNDb250YWluZXJDb252ZXJ0b3I6OlRhc2sgb2JqZQogICAgICAgICAgICAgSlNPYmpl
Y3RSZWYgcmVzdWx0ID0gSlNPYmplY3RNYWtlRGF0ZShjb250ZXh0UmVmLCAxLCAmYXJndW1lbnQs
IDApOwogICAgICAgICAgICAgcmV0dXJuIChPYmpjQ29udGFpbmVyQ29udmVydG9yOjpUYXNrKXsg
b2JqZWN0LCByZXN1bHQsIENvbnRhaW5lck5vbmUgfTsKICAgICAgICAgfQorCisgICAgICAgIGlm
IChbb2JqZWN0IGlzS2luZE9mQ2xhc3M6W0pTTWFuYWdlZFZhbHVlIGNsYXNzXV0pIHsKKyAgICAg
ICAgICAgIEpTVmFsdWUgKnZhbHVlID0gW3N0YXRpY19jYXN0PEpTTWFuYWdlZFZhbHVlICo+KG9i
amVjdCkgdmFsdWVdOworICAgICAgICAgICAgaWYgKCF2YWx1ZSkKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gKE9iamNDb250YWluZXJDb252ZXJ0b3I6OlRhc2spIHsgb2JqZWN0LCBKU1ZhbHVlTWFr
ZVVuZGVmaW5lZChjb250ZXh0UmVmKSwgQ29udGFpbmVyTm9uZSB9OworICAgICAgICAgICAgcmV0
dXJuIChPYmpjQ29udGFpbmVyQ29udmVydG9yOjpUYXNrKXsgb2JqZWN0LCB2YWx1ZS0+bV92YWx1
ZSwgQ29udGFpbmVyTm9uZSB9OworICAgICAgICB9CiAgICAgfQogCiAgICAgcmV0dXJuIChPYmpj
Q29udGFpbmVyQ29udmVydG9yOjpUYXNrKXsgb2JqZWN0LCB2YWx1ZUludGVybmFsVmFsdWUoW2Nv
bnRleHQgd3JhcHBlckZvck9iakNPYmplY3Q6b2JqZWN0XSksIENvbnRhaW5lck5vbmUgfTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZVJlZi5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlUmVmLmNwcAkocmV2aXNpb24gMTQ0
NzgwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlUmVmLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiQVBJQ2FzdC5oIgogI2luY2x1
ZGUgIkFQSVNoaW1zLmgiCisjaW5jbHVkZSAiSlNBUElXcmFwcGVyT2JqZWN0LmgiCiAjaW5jbHVk
ZSAiSlNDYWxsYmFja09iamVjdC5oIgogCiAjaW5jbHVkZSA8cnVudGltZS9KU0NKU1ZhbHVlLmg+
CkBAIC0xNDgsNiArMTQ5LDggQEAgYm9vbCBKU1ZhbHVlSXNPYmplY3RPZkNsYXNzKEpTQ29udGV4
dFJlZgogICAgICAgICAgICAgcmV0dXJuIGpzQ2FzdDxKU0NhbGxiYWNrT2JqZWN0PEpTR2xvYmFs
T2JqZWN0Pio+KG8pLT5pbmhlcml0cyhqc0NsYXNzKTsKICAgICAgICAgaWYgKG8tPmluaGVyaXRz
KCZKU0NhbGxiYWNrT2JqZWN0PEpTRGVzdHJ1Y3RpYmxlT2JqZWN0Pjo6c19pbmZvKSkKICAgICAg
ICAgICAgIHJldHVybiBqc0Nhc3Q8SlNDYWxsYmFja09iamVjdDxKU0Rlc3RydWN0aWJsZU9iamVj
dD4qPihvKS0+aW5oZXJpdHMoanNDbGFzcyk7CisgICAgICAgIGlmIChvLT5pbmhlcml0cygmSlND
YWxsYmFja09iamVjdDxKU0FQSVdyYXBwZXJPYmplY3Q+OjpzX2luZm8pKQorICAgICAgICAgICAg
cmV0dXJuIGpzQ2FzdDxKU0NhbGxiYWNrT2JqZWN0PEpTQVBJV3JhcHBlck9iamVjdD4qPihvKS0+
aW5oZXJpdHMoanNDbGFzcyk7CiAgICAgfQogICAgIHJldHVybiBmYWxzZTsKIH0KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWaXJ0dWFsTWFjaGluZS5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmlydHVhbE1hY2hpbmUubW0JKHJldmlzaW9u
IDE0NDc4MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWaXJ0dWFsTWFjaGluZS5t
bQkod29ya2luZyBjb3B5KQpAQCAtMTAxLDcgKzEwMSw5IEBAIC0gKGlkKWluaXRXaXRoQ29udGV4
dEdyb3VwUmVmOihKU0NvbnRleHQKICAgICBOU1BvaW50ZXJGdW5jdGlvbnNPcHRpb25zIGtleU9w
dGlvbnMgPSBOU1BvaW50ZXJGdW5jdGlvbnNPcGFxdWVNZW1vcnkgfCBOU1BvaW50ZXJGdW5jdGlv
bnNPcGFxdWVQZXJzb25hbGl0eTsKICAgICBOU1BvaW50ZXJGdW5jdGlvbnNPcHRpb25zIHZhbHVl
T3B0aW9ucyA9IE5TUG9pbnRlckZ1bmN0aW9uc1dlYWtNZW1vcnkgfCBOU1BvaW50ZXJGdW5jdGlv
bnNPYmplY3RQZXJzb25hbGl0eTsKICAgICBtX2NvbnRleHRDYWNoZSA9IFtbTlNNYXBUYWJsZSBh
bGxvY10gaW5pdFdpdGhLZXlPcHRpb25zOmtleU9wdGlvbnMgdmFsdWVPcHRpb25zOnZhbHVlT3B0
aW9ucyBjYXBhY2l0eTowXTsKLSAgICAKKyAgIAorICAgIFtKU1ZNV3JhcHBlckNhY2hlIGFkZFdy
YXBwZXI6c2VsZiBmb3JKU0NvbnRleHRHcm91cFJlZjpncm91cF07CisgCiAgICAgcmV0dXJuIHNl
bGY7CiB9CiAKQEAgLTEyMywxMCArMTI1LDggQEAgSlNDb250ZXh0R3JvdXBSZWYgZ2V0R3JvdXBG
cm9tVmlydHVhbE1hYwogKyAoSlNWaXJ0dWFsTWFjaGluZSAqKXZpcnR1YWxNYWNoaW5lV2l0aENv
bnRleHRHcm91cFJlZjooSlNDb250ZXh0R3JvdXBSZWYpZ3JvdXAKIHsKICAgICBKU1ZpcnR1YWxN
YWNoaW5lICp2aXJ0dWFsTWFjaGluZSA9IFtKU1ZNV3JhcHBlckNhY2hlIHdyYXBwZXJGb3JKU0Nv
bnRleHRHcm91cFJlZjpncm91cF07Ci0gICAgaWYgKCF2aXJ0dWFsTWFjaGluZSkgeworICAgIGlm
ICghdmlydHVhbE1hY2hpbmUpCiAgICAgICAgIHZpcnR1YWxNYWNoaW5lID0gW1tbSlNWaXJ0dWFs
TWFjaGluZSBhbGxvY10gaW5pdFdpdGhDb250ZXh0R3JvdXBSZWY6Z3JvdXBdIGF1dG9yZWxlYXNl
XTsKLSAgICAgICAgW0pTVk1XcmFwcGVyQ2FjaGUgYWRkV3JhcHBlcjp2aXJ0dWFsTWFjaGluZSBm
b3JKU0NvbnRleHRHcm91cFJlZjpncm91cF07Ci0gICAgfQogICAgIHJldHVybiB2aXJ0dWFsTWFj
aGluZTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1dyYXBwZXJNYXAu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1dyYXBwZXJNYXAu
bW0JKHJldmlzaW9uIDE0NDc4MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNXcmFw
cGVyTWFwLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw5IEBACiAjaWYgSlNDX09CSkNf
QVBJX0VOQUJMRUQKIAogI2ltcG9ydCAiQVBJQ2FzdC5oIgorI2ltcG9ydCAiQVBJU2hpbXMuaCIK
KyNpbXBvcnQgIkpTQVBJV3JhcHBlck9iamVjdC5oIgorI2ltcG9ydCAiSlNDYWxsYmFja09iamVj
dC5oIgogI2ltcG9ydCAiSlNDb250ZXh0SW50ZXJuYWwuaCIKICNpbXBvcnQgIkpTV3JhcHBlck1h
cC5oIgogI2ltcG9ydCAiT2JqQ0NhbGxiYWNrRnVuY3Rpb24uaCIKQEAgLTQ4LDcgKzUxLDggQEAg
LSAoSlNPYmpDQ2xhc3NJbmZvKiljbGFzc0luZm9Gb3JDbGFzczooQwogCiBzdGF0aWMgdm9pZCB3
cmFwcGVyRmluYWxpemUoSlNPYmplY3RSZWYgb2JqZWN0KQogewotICAgIFsoaWQpSlNPYmplY3RH
ZXRQcml2YXRlKG9iamVjdCkgcmVsZWFzZV07CisgICAgSlNDOjpKU0FQSVdyYXBwZXJPYmplY3Qq
IHdyYXBwZXJPYmplY3QgPSBKU0M6OmpzQ2FzdDxKU0M6OkpTQVBJV3JhcHBlck9iamVjdCo+KHRv
SlMob2JqZWN0KSk7CisgICAgWyhpZCl3cmFwcGVyT2JqZWN0LT53cmFwcGVkT2JqZWN0KCkgcmVs
ZWFzZV07CiB9CiAKIC8vIEFsbCB3cmFwcGVyIG9iamVjdHMgYW5kIGNvbnN0cnVjdG9yIG9iamVj
dHMgZGVyaXZlIGZyb20gdGhpcyB0eXBlLCBzbyB3ZSBjYW4gZGV0ZWN0ICYgdW53cmFwIE9iamVj
dGl2ZS1DIGluc3RhbmNlcy9DbGFzc2VzLgpAQCAtMTE0LDE3ICsxMTgsMzEgQEAgZG9uZToKICAg
ICByZXR1cm4gcmVzdWx0OwogfQogCitzdGF0aWMgSlNPYmplY3RSZWYgbWFrZVdyYXBwZXIoSlND
b250ZXh0UmVmIGN0eCwgSlNDbGFzc1JlZiBqc0NsYXNzLCBpZCB3cmFwcGVkT2JqZWN0KQorewor
ICAgIEpTQzo6RXhlY1N0YXRlKiBleGVjID0gdG9KUyhjdHgpOworICAgIEpTQzo6QVBJRW50cnlT
aGltIGVudHJ5U2hpbShleGVjKTsKKworICAgIEFTU0VSVChqc0NsYXNzKTsKKyAgICBKU0M6OkpT
Q2FsbGJhY2tPYmplY3Q8SlNDOjpKU0FQSVdyYXBwZXJPYmplY3Q+KiBvYmplY3QgPSBKU0M6OkpT
Q2FsbGJhY2tPYmplY3Q8SlNDOjpKU0FQSVdyYXBwZXJPYmplY3Q+OjpjcmVhdGUoZXhlYywgZXhl
Yy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPm9i
amNXcmFwcGVyT2JqZWN0U3RydWN0dXJlKCksIGpzQ2xhc3MsIDApOworICAgIG9iamVjdC0+c2V0
V3JhcHBlZE9iamVjdCh3cmFwcGVkT2JqZWN0KTsKKyAgICBpZiAoSlNDOjpKU09iamVjdCogcHJv
dG90eXBlID0ganNDbGFzcy0+cHJvdG90eXBlKGV4ZWMpKQorICAgICAgICBvYmplY3QtPnNldFBy
b3RvdHlwZShleGVjLT5nbG9iYWxEYXRhKCksIHByb3RvdHlwZSk7CisKKyAgICByZXR1cm4gdG9S
ZWYob2JqZWN0KTsKK30KKwogLy8gTWFrZSBhbiBvYmplY3QgdGhhdCBpcyBpbiBhbGwgd2F5cyBh
IGNvbXBsZXRlbHkgdmFuaWxsYSBKYXZhU2NyaXB0IG9iamVjdCwKIC8vIG90aGVyIHRoYW4gdGhh
dCBpdCBoYXMgYSBuYXRpdmUgYnJhbmQgc2V0IHRoYXQgd2lsbCBiZSBkaXNwbGF5ZWQgYnkgdGhl
IGRlZmF1bHQKIC8vIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcgY29udmVyc2lvbi4KLXN0YXRp
YyBKU1ZhbHVlICpjcmVhdGVPYmplY3RXaXRoQ3VzdG9tQnJhbmQoSlNDb250ZXh0ICpjb250ZXh0
LCBOU1N0cmluZyAqYnJhbmQsIEpTQ2xhc3NSZWYgcGFyZW50Q2xhc3MgPSAwLCB2b2lkKiBwcml2
YXRlRGF0YSA9IDApCitzdGF0aWMgSlNWYWx1ZSAqY3JlYXRlT2JqZWN0V2l0aEN1c3RvbUJyYW5k
KEpTQ29udGV4dCAqY29udGV4dCwgTlNTdHJpbmcgKmJyYW5kLCBKU0NsYXNzUmVmIHBhcmVudENs
YXNzID0gMCwgQ2xhc3MgY2xzID0gMCkKIHsKICAgICBKU0NsYXNzRGVmaW5pdGlvbiBkZWZpbml0
aW9uOwogICAgIGRlZmluaXRpb24gPSBrSlNDbGFzc0RlZmluaXRpb25FbXB0eTsKICAgICBkZWZp
bml0aW9uLmNsYXNzTmFtZSA9IFticmFuZCBVVEY4U3RyaW5nXTsKICAgICBkZWZpbml0aW9uLnBh
cmVudENsYXNzID0gcGFyZW50Q2xhc3M7CiAgICAgSlNDbGFzc1JlZiBjbGFzc1JlZiA9IEpTQ2xh
c3NDcmVhdGUoJmRlZmluaXRpb24pOwotICAgIEpTT2JqZWN0UmVmIHJlc3VsdCA9IEpTT2JqZWN0
TWFrZShbY29udGV4dCBnbG9iYWxDb250ZXh0UmVmXSwgY2xhc3NSZWYsIHByaXZhdGVEYXRhKTsK
KyAgICBKU09iamVjdFJlZiByZXN1bHQgPSBtYWtlV3JhcHBlcihbY29udGV4dCBnbG9iYWxDb250
ZXh0UmVmXSwgY2xhc3NSZWYsIGNscyk7CiAgICAgSlNDbGFzc1JlbGVhc2UoY2xhc3NSZWYpOwog
ICAgIHJldHVybiBbW0pTVmFsdWUgYWxsb2NdIGluaXRXaXRoVmFsdWU6cmVzdWx0IGluQ29udGV4
dDpjb250ZXh0XTsKIH0KQEAgLTQwNyw3ICs0MjUsNyBAQCAtIChKU1ZhbHVlICopd3JhcHBlckZv
ck9iamVjdDooaWQpb2JqZWN0CiAgICAgICAgIFtzZWxmIHJlYWxsb2NhdGVDb25zdHJ1Y3RvckFu
ZE9yUHJvdG90eXBlXTsKICAgICBBU1NFUlQoISFtX3Byb3RvdHlwZSk7CiAKLSAgICBKU09iamVj
dFJlZiB3cmFwcGVyID0gSlNPYmplY3RNYWtlKFttX2NvbnRleHQgZ2xvYmFsQ29udGV4dFJlZl0s
IG1fY2xhc3NSZWYsIFtvYmplY3QgcmV0YWluXSk7CisgICAgSlNPYmplY3RSZWYgd3JhcHBlciA9
IG1ha2VXcmFwcGVyKFttX2NvbnRleHQgZ2xvYmFsQ29udGV4dFJlZl0sIG1fY2xhc3NSZWYsIFtv
YmplY3QgcmV0YWluXSk7CiAgICAgSlNPYmplY3RTZXRQcm90b3R5cGUoW21fY29udGV4dCBnbG9i
YWxDb250ZXh0UmVmXSwgd3JhcHBlciwgdG9SZWYobV9wcm90b3R5cGUuZ2V0KCkpKTsKICAgICBy
ZXR1cm4gW0pTVmFsdWUgdmFsdWVXaXRoVmFsdWU6d3JhcHBlciBpbkNvbnRleHQ6bV9jb250ZXh0
XTsKIH0KQEAgLTUxMSw3ICs1MjksNyBAQCBpZCB0cnlVbndyYXBPYmpjT2JqZWN0KEpTR2xvYmFs
Q29udGV4dFJlCiAgICAgSlNPYmplY3RSZWYgb2JqZWN0ID0gSlNWYWx1ZVRvT2JqZWN0KGNvbnRl
eHQsIHZhbHVlLCAmZXhjZXB0aW9uKTsKICAgICBBU1NFUlQoIWV4Y2VwdGlvbik7CiAgICAgaWYg
KEpTVmFsdWVJc09iamVjdE9mQ2xhc3MoY29udGV4dCwgb2JqZWN0LCB3cmFwcGVyQ2xhc3MoKSkp
Ci0gICAgICAgIHJldHVybiAoaWQpSlNPYmplY3RHZXRQcml2YXRlKG9iamVjdCk7CisgICAgICAg
IHJldHVybiAoaWQpSlNDOjpqc0Nhc3Q8SlNDOjpKU0FQSVdyYXBwZXJPYmplY3QqPih0b0pTKG9i
amVjdCkpLT53cmFwcGVkT2JqZWN0KCk7CiAgICAgaWYgKGlkIHRhcmdldCA9IHRyeVVud3JhcEJs
b2NrKGNvbnRleHQsIG9iamVjdCkpCiAgICAgICAgIHJldHVybiB0YXJnZXQ7CiAgICAgcmV0dXJu
IG5pbDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSmF2YVNjcmlwdENvcmUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0phdmFTY3JpcHRDb3JlLmgJ
KHJldmlzaW9uIDE0NDc4MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSmF2YVNjcmlw
dENvcmUuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQAogCiAjaW1wb3J0ICJKU0Nv
bnRleHQuaCIKICNpbXBvcnQgIkpTVmFsdWUuaCIKKyNpbXBvcnQgIkpTTWFuYWdlZFZhbHVlLmgi
CiAjaW1wb3J0ICJKU1ZpcnR1YWxNYWNoaW5lLmgiCiAjaW1wb3J0ICJKU0V4cG9ydC5oIgogCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGkubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLm1tCShyZXZpc2lv
biAxNDQ3ODApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGkubW0J
KHdvcmtpbmcgY29weSkKQEAgLTIzLDcgKzIzLDggQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAogICovCiAK
LSNpbXBvcnQgIkphdmFTY3JpcHRDb3JlLmgiCisjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS5oPgorI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSlNCYXNlUHJpdmF0ZS5oPgog
CiBleHRlcm4gIkMiIGJvb2wgX0Jsb2NrX2hhc19zaWduYXR1cmUoaWQpOwogZXh0ZXJuICJDIiBj
b25zdCBjaGFyICogX0Jsb2NrX3NpZ25hdHVyZShpZCk7CkBAIC0xMDEsNiArMTAyLDggQEAgYm9v
bCB0ZXN0WFlaVGVzdGVkID0gZmFsc2U7CiBAcHJvdG9jb2wgVGV4dFhZWiA8SlNFeHBvcnQ+CiBA
cHJvcGVydHkgaW50IHg7CiBAcHJvcGVydHkgKHJlYWRvbmx5KSBpbnQgeTsKK0Bwcm9wZXJ0eSBK
U1ZhbHVlICpvbmNsaWNrOworQHByb3BlcnR5IEpTVmFsdWUgKndlYWtPbmNsaWNrOwogLSAodm9p
ZCl0ZXN0OihOU1N0cmluZyAqKW1lc3NhZ2U7CiBAZW5kCiAKQEAgLTEwOCw5ICsxMTEsMTMgQEAg
QGludGVyZmFjZSBUZXh0WFlaIDogTlNPYmplY3QgPFRleHRYWVo+CiBAcHJvcGVydHkgaW50IHg7
CiBAcHJvcGVydHkgaW50IHk7CiBAcHJvcGVydHkgaW50IHo7CistICh2b2lkKWNsaWNrOwogQGVu
ZAogCi1AaW1wbGVtZW50YXRpb24gVGV4dFhZWgorQGltcGxlbWVudGF0aW9uIFRleHRYWVogewor
ICAgIEpTTWFuYWdlZFZhbHVlICptX3dlYWtPbmNsaWNrSGFuZGxlcjsKKyAgICBKU01hbmFnZWRW
YWx1ZSAqbV9vbmNsaWNrSGFuZGxlcjsKK30KIEBzeW50aGVzaXplIHg7CiBAc3ludGhlc2l6ZSB5
OwogQHN5bnRoZXNpemUgejsKQEAgLTExOCw2ICsxMjUsMzEgQEAgLSAodm9pZCl0ZXN0OihOU1N0
cmluZyAqKW1lc3NhZ2UKIHsKICAgICB0ZXN0WFlaVGVzdGVkID0gW21lc3NhZ2UgaXNFcXVhbDpA
InRlc3QiXSAmJiB4ID09IDEzICYgeSA9PSA0ICYmIHogPT0gNTsKIH0KKy0gKHZvaWQpc2V0V2Vh
a09uY2xpY2s6KEpTVmFsdWUgKil2YWx1ZQoreworICAgIG1fd2Vha09uY2xpY2tIYW5kbGVyID0g
W0pTTWFuYWdlZFZhbHVlIHdlYWtWYWx1ZVdpdGhWYWx1ZTp2YWx1ZV07Cit9CisKKy0gKHZvaWQp
c2V0T25jbGljazooSlNWYWx1ZSAqKXZhbHVlCit7CisgICAgbV9vbmNsaWNrSGFuZGxlciA9IFtK
U01hbmFnZWRWYWx1ZSBtYW5hZ2VkVmFsdWVXaXRoVmFsdWU6dmFsdWUgb3duZXI6c2VsZl07Cit9
CistIChKU1ZhbHVlICopd2Vha09uY2xpY2sKK3sKKyAgICByZXR1cm4gW21fd2Vha09uY2xpY2tI
YW5kbGVyIHZhbHVlXTsKK30KKy0gKEpTVmFsdWUgKilvbmNsaWNrCit7CisgICAgcmV0dXJuIFtt
X29uY2xpY2tIYW5kbGVyIHZhbHVlXTsKK30KKy0gKHZvaWQpY2xpY2sKK3sKKyAgICBpZiAoIW1f
b25jbGlja0hhbmRsZXIpCisgICAgICAgIHJldHVybjsKKworICAgIEpTVmFsdWUgKmZ1bmN0aW9u
ID0gW21fb25jbGlja0hhbmRsZXIgdmFsdWVdOworICAgIFtmdW5jdGlvbiBjYWxsV2l0aEFyZ3Vt
ZW50czpbTlNBcnJheSBhcnJheV1dOworfQogQGVuZAogCiBzdGF0aWMgdm9pZCBjaGVja1Jlc3Vs
dChOU1N0cmluZyAqZGVzY3JpcHRpb24sIGJvb2wgcGFzc2VkKQpAQCAtNDkzLDYgKzUyNSw2MCBA
QCB2b2lkIHRlc3RPYmplY3RpdmVDQVBJKCkKICAgICAgICAgSlNWYWx1ZSAqcmVzdWx0ID0gW2Nv
bnRleHQxIGV2YWx1YXRlU2NyaXB0OkAicGFzc1ZhbHVlQmV0d2VlbkNvbnRleHRzIl07CiAgICAg
ICAgIGNoZWNrUmVzdWx0KEAiW3ZhbHVlIGlzRXF1YWxUb09iamVjdDpyZXN1bHRdIiwgW3ZhbHVl
IGlzRXF1YWxUb09iamVjdDpyZXN1bHRdKTsKICAgICB9CisKKyAgICBAYXV0b3JlbGVhc2Vwb29s
IHsKKyAgICAgICAgSlNDb250ZXh0ICpjb250ZXh0ID0gW1tKU0NvbnRleHQgYWxsb2NdIGluaXRd
OworICAgICAgICBUZXh0WFlaICp0ZXN0WFlaID0gW1tUZXh0WFlaIGFsbG9jXSBpbml0XTsKKwor
ICAgICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKKyAgICAgICAgICAgIGNvbnRleHRbQCJ0ZXN0WFla
Il0gPSB0ZXN0WFlaOworCisgICAgICAgICAgICBbY29udGV4dCBldmFsdWF0ZVNjcmlwdDpAIiBc
CisgICAgICAgICAgICAgICAgZGlkQ2xpY2sgPSBmYWxzZTsgXAorICAgICAgICAgICAgICAgIHRl
c3RYWVoub25jbGljayA9IGZ1bmN0aW9uKCkgeyBcCisgICAgICAgICAgICAgICAgICAgIGRpZENs
aWNrID0gdHJ1ZTsgXAorICAgICAgICAgICAgICAgIH07IFwKKyAgICAgICAgICAgICAgICAgXAor
ICAgICAgICAgICAgICAgIHRlc3RYWVoud2Vha09uY2xpY2sgPSBmdW5jdGlvbigpIHsgXAorICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gJ2Zvbyc7IFwKKyAgICAgICAgICAgICAgICB9OyBcCisg
ICAgICAgICAgICAiXTsKKyAgICAgICAgfQorCisgICAgICAgIEBhdXRvcmVsZWFzZXBvb2wgewor
ICAgICAgICAgICAgW3Rlc3RYWVogY2xpY2tdOworICAgICAgICAgICAgSlNWYWx1ZSAqcmVzdWx0
ID0gW2NvbnRleHQgZXZhbHVhdGVTY3JpcHQ6QCJkaWRDbGljayJdOworICAgICAgICAgICAgY2hl
Y2tSZXN1bHQoQCJFdmVudCBoYW5kbGVyIG9uY2xpY2siLCBbcmVzdWx0IHRvQm9vbF0pOworICAg
ICAgICB9CisKKyAgICAgICAgSlNTeW5jaHJvbm91c0dhcmJhZ2VDb2xsZWN0KFtjb250ZXh0IGds
b2JhbENvbnRleHRSZWZdKTsKKworICAgICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKKyAgICAgICAg
ICAgIEpTVmFsdWUgKnJlc3VsdCA9IFtjb250ZXh0IGV2YWx1YXRlU2NyaXB0OkAidGVzdFhZWi5v
bmNsaWNrIl07CisgICAgICAgICAgICBjaGVja1Jlc3VsdChAIm9uY2xpY2sgc3RpbGwgYXJvdW5k
IGFmdGVyIEdDIiwgIShbcmVzdWx0IGlzTnVsbF0gfHwgW3Jlc3VsdCBpc1VuZGVmaW5lZF0pKTsK
KyAgICAgICAgfQorCisKKyAgICAgICAgQGF1dG9yZWxlYXNlcG9vbCB7CisgICAgICAgICAgICBK
U1ZhbHVlICpyZXN1bHQgPSBbY29udGV4dCBldmFsdWF0ZVNjcmlwdDpAInRlc3RYWVoud2Vha09u
Y2xpY2siXTsKKyAgICAgICAgICAgIGNoZWNrUmVzdWx0KEAid2Vha09uY2xpY2sgbm90IGFyb3Vu
ZCBhZnRlciBHQyIsIFtyZXN1bHQgaXNOdWxsXSB8fCBbcmVzdWx0IGlzVW5kZWZpbmVkXSk7Cisg
ICAgICAgIH0KKworICAgICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKKyAgICAgICAgICAgIFtjb250
ZXh0IGV2YWx1YXRlU2NyaXB0OkAiIFwKKyAgICAgICAgICAgICAgICBkaWRDbGljayA9IGZhbHNl
OyBcCisgICAgICAgICAgICAgICAgdGVzdFhZWiA9IG51bGw7IFwKKyAgICAgICAgICAgICJdOwor
ICAgICAgICB9CisKKyAgICAgICAgSlNTeW5jaHJvbm91c0dhcmJhZ2VDb2xsZWN0KFtjb250ZXh0
IGdsb2JhbENvbnRleHRSZWZdKTsKKworICAgICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKKyAgICAg
ICAgICAgIFt0ZXN0WFlaIGNsaWNrXTsKKyAgICAgICAgICAgIEpTVmFsdWUgKnJlc3VsdCA9IFtj
b250ZXh0IGV2YWx1YXRlU2NyaXB0OkAiZGlkQ2xpY2siXTsKKyAgICAgICAgICAgIGNoZWNrUmVz
dWx0KEAiRXZlbnQgaGFuZGxlciBvbmNsaWNrIGRvZXNuJ3QgZmlyZSIsICFbcmVzdWx0IHRvQm9v
bF0pOworICAgICAgICB9CisgICAgfQogfQogCiAjZWxzZQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS52Y3Byb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2oJKHJldmlzaW9u
IDE0NDc4MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ov
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0x
NDE0LDYgKzE0MTQsMTQgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQorCQkJCVJlbGF0
aXZlUGF0aD0iLi5cLi5cQVBJXEpTQVBJV3JhcHBlck9iamVjdC5jcHAiCisJCQkJPgorCQkJPC9G
aWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEFQSVxKU0FQSVdyYXBwZXJP
YmplY3QuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQogCQkJCVJlbGF0aXZlUGF0aD0i
Li5cLi5cQVBJXEpTQmFzZS5jcHAiCiAJCQkJPgogCQkJPC9GaWxlPgpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE0NDc4MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNv
cHkpCkBAIC04MjgsNiArODI4LDggQEAKIAkJQzI0MDMwNTUxNEI0MDRFNjAwNzlFQjY0IC8qIENv
cGllZFNwYWNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEMyNDAzMDUzMTRCNDA0QzkwMDc5RUI2NCAvKiBDb3BpZWRTcGFjZS5jcHAgKi87IH07CiAJ
CUMyNEQzMUUyMTYxQ0Q2OTUwMDJBQTREQiAvKiBIZWFwU3RhdGlzdGljcy5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMjREMzFFMDE2MUNENjk1MDAy
QUE0REIgLyogSGVhcFN0YXRpc3RpY3MuY3BwICovOyB9OwogCQlDMjREMzFFMzE2MUNENjk1MDAy
QUE0REIgLyogSGVhcFN0YXRpc3RpY3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEMyNEQzMUUxMTYxQ0Q2OTUwMDJBQTREQiAvKiBIZWFwU3RhdGlzdGlj
cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUMy
NUQ3MDlCMTZERTk5RjQwMEZDQTZCQyAvKiBKU01hbmFnZWRWYWx1ZS5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyNUQ3MDk5MTZERTk5RjQwMEZDQTZC
QyAvKiBKU01hbmFnZWRWYWx1ZS5tbSAqLzsgfTsKKwkJQzI1RDcwOUMxNkRFOTlGNDAwRkNBNkJD
IC8qIEpTTWFuYWdlZFZhbHVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBDMjVENzA5QTE2REU5OUY0MDBGQ0E2QkMgLyogSlNNYW5hZ2VkVmFsdWUuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07CiAJCUMyNUY4QkNE
MTU3NTQ0QTkwMDI0NUI3MSAvKiBJbmNyZW1lbnRhbFN3ZWVwZXIuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzI1RjhCQ0IxNTc1NDRBOTAwMjQ1Qjcx
IC8qIEluY3JlbWVudGFsU3dlZXBlci5jcHAgKi87IH07CiAJCUMyNUY4QkNFMTU3NTQ0QTkwMDI0
NUI3MSAvKiBJbmNyZW1lbnRhbFN3ZWVwZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEMyNUY4QkNDMTU3NTQ0QTkwMDI0NUI3MSAvKiBJbmNyZW1lbnRh
bFN3ZWVwZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQlDMkE3RjY4ODE2MDQzMkQ0MDBGNzZCOTggLyogSlNEZXN0cnVjdGlibGVPYmplY3QuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyQTdGNjg3MTYw
NDMyRDQwMEY3NkI5OCAvKiBKU0Rlc3RydWN0aWJsZU9iamVjdC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC04MzYsNiArODM4LDggQEAKIAkJQzJD
OEQwMkQxNEEzQzZFMDAwNTc4RTY1IC8qIENvcGllZFNwYWNlSW5saW5lcy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzJDOEQwMkIxNEEzQzZCMjAwNTc4
RTY1IC8qIENvcGllZFNwYWNlSW5saW5lcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCUMyQzhEMDMwMTRBM0NFRkMwMDU3OEU2NSAvKiBDb3BpZWRC
bG9jay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzJD
OEQwMkUxNEEzQ0VGQzAwNTc4RTY1IC8qIENvcGllZEJsb2NrLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQzJDOEQwMzExNEEzQ0VGQzAwNTc4RTY1
IC8qIEhlYXBCbG9jay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQzJDOEQwMkYxNEEzQ0VGQzAwNTc4RTY1IC8qIEhlYXBCbG9jay5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUMyQ0YzOUMxMTZFMTVBODEw
MERENjlCRSAvKiBKU0FQSVdyYXBwZXJPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzJDRjM5QkYxNkUxNUE4MTAwREQ2OUJFIC8qIEpTQVBJ
V3JhcHBlck9iamVjdC5jcHAgKi87IH07CisJCUMyQ0YzOUMyMTZFMTVBODEwMERENjlCRSAvKiBK
U0FQSVdyYXBwZXJPYmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEMyQ0YzOUMwMTZFMTVBODEwMERENjlCRSAvKiBKU0FQSVdyYXBwZXJPYmplY3Qu
aCAqLzsgfTsKIAkJQzJENThDMzQxNTkxMkZFRTAwMjFBODQ0IC8qIEdDQWN0aXZpdHlDYWxsYmFj
ay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMkQ1
OEMzMzE1OTEyRkVFMDAyMUE4NDQgLyogR0NBY3Rpdml0eUNhbGxiYWNrLmNwcCAqLzsgfTsKIAkJ
QzJFNTI2QkQxNTkwRUYwMDAwNTRFNDhEIC8qIEhlYXBUaW1lci5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMkU1MjZCQjE1OTBFRjAwMDA1NEU0OEQg
LyogSGVhcFRpbWVyLmNwcCAqLzsgfTsKIAkJQzJFNTI2QkUxNTkwRUYwMDAwNTRFNDhEIC8qIEhl
YXBUaW1lci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QzJFNTI2QkMxNTkwRUYwMDAwNTRFNDhEIC8qIEhlYXBUaW1lci5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xNzIxLDYgKzE3MjUsOCBAQAogCQlD
MjQwMzA1MzE0QjQwNEM5MDA3OUVCNjQgLyogQ29waWVkU3BhY2UuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ29waWVkU3BhY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlDMjREMzFFMDE2MUNENjk1MDAyQUE0REIgLyogSGVhcFN0YXRpc3RpY3Mu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSGVhcFN0YXRpc3RpY3Mu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMjREMzFFMTE2MUNENjk1MDAyQUE0
REIgLyogSGVhcFN0YXRpc3RpY3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SGVhcFN0YXRpc3RpY3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzI1RDcwOTkx
NkRFOTlGNDAwRkNBNkJDIC8qIEpTTWFuYWdlZFZhbHVlLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBwYXRoID0gSlNNYW5hZ2VkVmFsdWUubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUMyNUQ3MDlBMTZERTk5RjQwMEZDQTZCQyAvKiBKU01hbmFnZWRWYWx1ZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU01hbmFnZWRWYWx1ZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMjVGOEJDQjE1NzU0NEE5MDAyNDVCNzEgLyogSW5j
cmVtZW50YWxTd2VlcGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEluY3JlbWVudGFsU3dlZXBlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMy
NUY4QkNDMTU3NTQ0QTkwMDI0NUI3MSAvKiBJbmNyZW1lbnRhbFN3ZWVwZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5jcmVtZW50YWxTd2VlcGVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUMyQTdGNjg3MTYwNDMyRDQwMEY3NkI5OCAvKiBKU0Rlc3RydWN0
aWJsZU9iamVjdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0Rlc3RydWN0
aWJsZU9iamVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTcyOSw2ICsxNzM1
LDggQEAKIAkJQzJDOEQwMkIxNEEzQzZCMjAwNTc4RTY1IC8qIENvcGllZFNwYWNlSW5saW5lcy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb3BpZWRTcGFjZUlubGluZXMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzJDOEQwMkUxNEEzQ0VGQzAwNTc4RTY1IC8q
IENvcGllZEJsb2NrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvcGllZEJs
b2NrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMyQzhEMDJGMTRBM0NFRkMwMDU3
OEU2NSAvKiBIZWFwQmxvY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSGVh
cEJsb2NrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMyQ0YzOUJGMTZFMTVBODEw
MERENjlCRSAvKiBKU0FQSVdyYXBwZXJPYmplY3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSlNBUElXcmFwcGVyT2JqZWN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQzJDRjM5QzAxNkUxNUE4MTAwREQ2OUJFIC8qIEpTQVBJV3JhcHBlck9iamVj
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0FQSVdyYXBwZXJPYmplY3Qu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzJENThDMzMxNTkxMkZFRTAwMjFBODQ0
IC8qIEdDQWN0aXZpdHlDYWxsYmFjay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBHQ0FjdGl2aXR5Q2FsbGJhY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlDMkU1MjZCQjE1OTBFRjAwMDA1NEU0OEQgLyogSGVhcFRpbWVyLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhlYXBUaW1lci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUMyRTUyNkJDMTU5MEVGMDAwMDU0RTQ4RCAvKiBIZWFwVGltZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSGVhcFRpbWVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC0yMjAyLDYgKzIyMTAsMTAgQEAKIAkJCQlFMTI0QThGNjBFNTU1
Nzc1MDAzMDkxRjEgLyogT3BhcXVlSlNTdHJpbmcuY3BwICovLAogCQkJCUUxMjRBOEY1MEU1NTU3
NzUwMDMwOTFGMSAvKiBPcGFxdWVKU1N0cmluZy5oICovLAogCQkJCTVERTNEMEY0MEREOERERkIw
MDQ2ODcxNCAvKiBXZWJLaXRBdmFpbGFiaWxpdHkuaCAqLywKKwkJCQlDMjVENzA5OTE2REU5OUY0
MDBGQ0E2QkMgLyogSlNNYW5hZ2VkVmFsdWUubW0gKi8sCisJCQkJQzI1RDcwOUExNkRFOTlGNDAw
RkNBNkJDIC8qIEpTTWFuYWdlZFZhbHVlLmggKi8sCisJCQkJQzJDRjM5QkYxNkUxNUE4MTAwREQ2
OUJFIC8qIEpTQVBJV3JhcHBlck9iamVjdC5jcHAgKi8sCisJCQkJQzJDRjM5QzAxNkUxNUE4MTAw
REQ2OUJFIC8qIEpTQVBJV3JhcHBlck9iamVjdC5oICovLAogCQkJKTsKIAkJCXBhdGggPSBBUEk7
CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMjkxNSw2ICsyOTI3LDcgQEAKIAkJCWlz
YSA9IFBCWEhlYWRlcnNCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0
NzsKIAkJCWZpbGVzID0gKAorCQkJCUMyNUQ3MDlDMTZERTk5RjQwMEZDQTZCQyAvKiBKU01hbmFn
ZWRWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODYwMTYxRTMwRjNBODNDMTAwRjg0NzEwIC8q
IEFic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNTVGMEY1MTRE
MTA2M0MwMEFDNzY0OSAvKiBBYnN0cmFjdFBDLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzNF
NTBFMTZGNUNEMDBCMzQ0NjAgLyogQVBJQ2FzdC5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMTY1LDYg
KzMxNzgsNyBAQAogCQkJCUJDMThDNDJEMEUxNkY1Q0QwMEIzNDQ2MCAvKiBKU1ZhcmlhYmxlT2Jq
ZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk4NkUzQzYxNTE2N0JBQkQ3MDA2RDc2MEEgLyogSlNW
aXJ0dWFsTWFjaGluZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc0ODJFOTMxMTZBN0NBRDAwM0Iw
NzEyIC8qIEpTV2Vha09iamVjdE1hcFJlZkludGVybmFsLmggaW4gSGVhZGVycyAqLywKKwkJCQlD
MkNGMzlDMjE2RTE1QTgxMDBERDY5QkUgLyogSlNBUElXcmFwcGVyT2JqZWN0LmggaW4gSGVhZGVy
cyAqLywKIAkJCQlBNzQ4MkI5MzExNjcxMTQ3MDAzQjA3MTIgLyogSlNXZWFrT2JqZWN0TWFwUmVm
UHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQ0MjU2NjIxNUVERTk4RDAwNjZBNDlCIC8q
IEpTV2l0aFNjb3BlLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NkUzQzYxOTE2N0JBQkVFMDA2RDc2
MEEgLyogSlNXcmFwcGVyTWFwLmggaW4gSGVhZGVycyAqLywKQEAgLTM3ODAsNiArMzc5NCw3IEBA
CiAJCQkJMEZEM0M4MjYxNDExNUQ0MDAwRkQ4MUNCIC8qIERGR0RyaXZlci5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkwRkYwRjE5RTE2QjcyQTBCMDA1REY5NUIgLyogREZHRWRnZS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkwRkJDMEFFNzE0OTZDN0M0MDBENEZCREQgLyogREZHRXhpdFByb2ZpbGUu
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQzJDRjM5QzExNkUxNUE4MTAwREQ2OUJFIC8qIEpTQVBJ
V3JhcHBlck9iamVjdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjJCREMxNTE1MUM1RDREMDBD
RDg5MTAgLyogREZHRml4dXBQaGFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NkVDOURDNzEz
MjhERjgyMDAyQjJBRDcgLyogREZHR3JhcGguY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODZFQzlE
Q0IxMzI4REY4MjAwMkIyQUQ3IC8qIERGR0pJVENvbXBpbGVyLmNwcCBpbiBTb3VyY2VzICovLApA
QCAtMzk5Niw2ICs0MDExLDcgQEAKIAkJCQlCQ0NGMEQwQzBFRjBCOEE1MDA0MTNDOEYgLyogU3Ry
dWN0dXJlU3R1YkluZm8uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY5MTlEMjgxNTg1Njc3MzAw
NEE0RTdEIC8qIFN5bWJvbFRhYmxlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3Mzg2NTU1MTE4
Njk3QjQwMDU0MDI3OSAvKiBUaHVua0dlbmVyYXRvcnMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
QzI1RDcwOUIxNkRFOTlGNDAwRkNBNkJDIC8qIEpTTWFuYWdlZFZhbHVlLm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMTRBNDJFM0YwRjRGNjBFRTAwNTk5MDk5IC8qIFRpbWVvdXRDaGVja2VyLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTBGRjQyNzRBMTU4RUJFOTEwMDRDQjlGRiAvKiB1ZGlzODYuYyBp
biBTb3VyY2VzICovLAogCQkJCTBGRjQyNzQwMTU4RUJFOEIwMDRDQjlGRiAvKiB1ZGlzODZfZGVj
b2RlLmMgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAJKHJldmlzaW9uIDE0NDc4MCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDcsNiArNDcsNyBAQAogI2luY2x1ZGUgIkZ1bmN0aW9uUHJvdG90eXBlLmgiCiAjaW5jbHVk
ZSAiR2V0dGVyU2V0dGVyLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKKyNpbmNsdWRlICJK
U0FQSVdyYXBwZXJPYmplY3QuaCIKICNpbmNsdWRlICJKU0FjdGl2YXRpb24uaCIKICNpbmNsdWRl
ICJKU0JvdW5kRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0NhbGxiYWNrQ29uc3RydWN0b3IuaCIK
QEAgLTIyOSw2ICsyMzAsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0OjpyZXNldChKU1ZhbHVlIHBy
b3RvCiAgICAgbV9hcmd1bWVudHNTdHJ1Y3R1cmUuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhp
cywgQXJndW1lbnRzOjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBt
X29iamVjdFByb3RvdHlwZS5nZXQoKSkpOwogICAgIG1fY2FsbGJhY2tDb25zdHJ1Y3RvclN0cnVj
dHVyZS5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBKU0NhbGxiYWNrQ29uc3RydWN0b3I6
OmNyZWF0ZVN0cnVjdHVyZShleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIG1fb2JqZWN0UHJvdG90
eXBlLmdldCgpKSk7CiAgICAgbV9jYWxsYmFja09iamVjdFN0cnVjdHVyZS5zZXQoZXhlYy0+Z2xv
YmFsRGF0YSgpLCB0aGlzLCBKU0NhbGxiYWNrT2JqZWN0PEpTRGVzdHJ1Y3RpYmxlT2JqZWN0Pjo6
Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgbV9vYmplY3RQcm90b3R5
cGUuZ2V0KCkpKTsKKyAgICBtX29iamNXcmFwcGVyT2JqZWN0U3RydWN0dXJlLnNldChleGVjLT5n
bG9iYWxEYXRhKCksIHRoaXMsIEpTQ2FsbGJhY2tPYmplY3Q8SlNBUElXcmFwcGVyT2JqZWN0Pjo6
Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgbV9vYmplY3RQcm90b3R5
cGUuZ2V0KCkpKTsKIAogICAgIG1fYXJyYXlQcm90b3R5cGUuc2V0KGV4ZWMtPmdsb2JhbERhdGEo
KSwgdGhpcywgQXJyYXlQcm90b3R5cGU6OmNyZWF0ZShleGVjLCB0aGlzLCBBcnJheVByb3RvdHlw
ZTo6Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgbV9vYmplY3RQcm90
b3R5cGUuZ2V0KCkpKSk7CiAgICAgCkBAIC01MTEsNiArNTEzLDcgQEAgdm9pZCBKU0dsb2JhbE9i
amVjdDo6dmlzaXRDaGlsZHJlbihKU0NlbAogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0
LT5tX2NhbGxiYWNrQ29uc3RydWN0b3JTdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0
aGlzT2JqZWN0LT5tX2NhbGxiYWNrRnVuY3Rpb25TdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBw
ZW5kKCZ0aGlzT2JqZWN0LT5tX2NhbGxiYWNrT2JqZWN0U3RydWN0dXJlKTsKKyAgICB2aXNpdG9y
LmFwcGVuZCgmdGhpc09iamVjdC0+bV9vYmpjV3JhcHBlck9iamVjdFN0cnVjdHVyZSk7CiAgICAg
dmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fZGF0ZVN0cnVjdHVyZSk7CiAgICAgdmlzaXRv
ci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fbnVsbFByb3RvdHlwZU9iamVjdFN0cnVjdHVyZSk7CiAg
ICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fZXJyb3JTdHJ1Y3R1cmUpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCShyZXZp
c2lvbiAxNDQ3ODApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9i
amVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDEsNiArMTQxLDcgQEAgcHJvdGVjdGVkOgogICAg
IFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fY2FsbGJhY2tDb25zdHJ1Y3RvclN0cnVjdHVyZTsK
ICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2NhbGxiYWNrRnVuY3Rpb25TdHJ1Y3R1cmU7
CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9jYWxsYmFja09iamVjdFN0cnVjdHVyZTsK
KyAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX29iamNXcmFwcGVyT2JqZWN0U3RydWN0dXJl
OwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fZGF0ZVN0cnVjdHVyZTsKICAgICBXcml0
ZUJhcnJpZXI8U3RydWN0dXJlPiBtX251bGxQcm90b3R5cGVPYmplY3RTdHJ1Y3R1cmU7CiAgICAg
V3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9lcnJvclN0cnVjdHVyZTsKQEAgLTMwMCw2ICszMDEs
NyBAQCBwdWJsaWM6CiAgICAgU3RydWN0dXJlKiBjYWxsYmFja0NvbnN0cnVjdG9yU3RydWN0dXJl
KCkgY29uc3QgeyByZXR1cm4gbV9jYWxsYmFja0NvbnN0cnVjdG9yU3RydWN0dXJlLmdldCgpOyB9
CiAgICAgU3RydWN0dXJlKiBjYWxsYmFja0Z1bmN0aW9uU3RydWN0dXJlKCkgY29uc3QgeyByZXR1
cm4gbV9jYWxsYmFja0Z1bmN0aW9uU3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiBj
YWxsYmFja09iamVjdFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2FsbGJhY2tPYmplY3RT
dHJ1Y3R1cmUuZ2V0KCk7IH0KKyAgICBTdHJ1Y3R1cmUqIG9iamNXcmFwcGVyT2JqZWN0U3RydWN0
dXJlKCkgY29uc3QgeyByZXR1cm4gbV9vYmpjV3JhcHBlck9iamVjdFN0cnVjdHVyZS5nZXQoKTsg
fQogICAgIFN0cnVjdHVyZSogZGF0ZVN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0ZVN0
cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSogbnVsbFByb3RvdHlwZU9iamVjdFN0cnVj
dHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fbnVsbFByb3RvdHlwZU9iamVjdFN0cnVjdHVyZS5nZXQo
KTsgfQogICAgIFN0cnVjdHVyZSogZXJyb3JTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2Vy
cm9yU3RydWN0dXJlLmdldCgpOyB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>191571</attachid>
            <date>2013-03-05 14:48:55 -0800</date>
            <delta_ts>2013-03-06 15:56:20 -0800</delta_ts>
            <desc>fix JSManagedValue init</desc>
            <filename>the.patch</filename>
            <type>text/plain</type>
            <size>50153</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTQ0Nzg5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwNSBA
QAorMjAxMy0wMy0wNSAgTWFyayBIYWhuZW5iZXJnICA8bWhhaG5lbmJlcmdAYXBwbGUuY29tPgor
CisgICAgICAgIE9iamVjdGl2ZS1DIEFQSTogTmVlZCBhIGdvb2Qgd2F5IHRvIHJlZmVyZW5jZSBl
dmVudCBoYW5kbGVycyB3aXRob3V0IGNhdXNpbmcgY3ljbGVzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTEwODgKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBKU01hbmFnZWRWYWx1ZSBpcyBsaWtlIGEgc3Bl
Y2lhbCBraW5kIG9mIHdlYWsgdmFsdWUuIFdoZW4geW91IGNyZWF0ZSBhIEpTTWFuYWdlZFZhbHVl
LCB5b3UgY2FuCisgICAgICAgIHN1cHBseSBhbiBPYmplY3RpdmUtQyBvYmplY3QgYXMgaXRzICJv
d25lciIuIEFzIGxvbmcgYXMgdGhlIE9iamVjdGl2ZS1DIG93bmVyIG9iamVjdCByZW1haW5zCisg
ICAgICAgIGFsaXZlIGFuZCBpdHMgd3JhcHBlciByZW1haW5zIGFjY2Vzc2libGUgdG8gdGhlIEpT
QyBnYXJiYWdlIGNvbGxlY3RvciAoZS5nLiBieSBiZWluZyBtYXJrZWQgYnkgCisgICAgICAgIHRo
ZSBnbG9iYWwgb2JqZWN0KSwgdGhlIHJlZmVyZW5jZSB0byB0aGUgSmF2YVNjcmlwdCB2YWx1ZSBp
cyBzdHJvbmcuIEFzIHNvb24gYXMgdGhlIE9iamVjdGl2ZS1DCisgICAgICAgIG93bmVyIGlzIGRl
YWxsb2NhdGVkIG9yIGl0cyB3cmFwcGVyIGJlY29tZXMgaW5hY2Nlc3NpYmxlIHRvIHRoZSBnYXJi
YWdlIGNvbGxlY3RvciwgdGhlIHJlZmVyZW5jZQorICAgICAgICBiZWNvbWVzIHdlYWsuCisKKyAg
ICAgICAgSWYgeW91IGRvIG5vdCBzdXBwbHkgYW4gb3duZXIgb3IgeW91IHVzZSB0aGUgd2Vha1Zh
bHVlV2l0aFZhbHVlOiBjb252ZW5pZW5jZSBjbGFzcyBtZXRob2QsIHRoZQorICAgICAgICByZXR1
cm5lZCBKU01hbmFnZWRWYWx1ZSBiZWhhdmVzIGFzIGEgbm9ybWFsIHdlYWsgcmVmZXJlbmNlLgor
CisgICAgICAgIFRoaXMgbmV3IGNsYXNzIGFsbG93cyBjbGllbnRzIHRvIG1haW50YWluIHJlZmVy
ZW5jZXMgdG8gSmF2YVNjcmlwdCB2YWx1ZXMgaW4gdGhlIE9iamVjdGl2ZS1DCisgICAgICAgIGhl
YXAgd2l0aG91dCBjcmVhdGluZyByZWZlcmVuY2UgY3ljbGVzL2xlYWtpbmcgbWVtb3J5LgorCisg
ICAgICAgICogQVBJL0pTQVBJV3JhcHBlck9iamVjdC5jcHA6IEFkZGVkLgorICAgICAgICAoSlND
KToKKyAgICAgICAgKEpTQzo6OjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpKU0FQ
SVdyYXBwZXJPYmplY3Q6OkpTQVBJV3JhcHBlck9iamVjdCk6IFRoaXMgaXMgYSBzcGVjaWFsIEpT
T2JqZWN0IGZvciB0aGUgT2JqZWN0aXZlLUMgQVBJIHRoYXQga25vd3MKKyAgICAgICAgZm9yIHRo
ZSBwdXJwb3NlcyBvZiBnYXJiYWdlIGNvbGxlY3Rpb24vbWFya2luZyB0aGF0IGl0IHdyYXBzIGFu
IG9wYXF1ZSBPYmplY3RpdmUtQyBvYmplY3QuCisgICAgICAgIChKU0M6OkpTQVBJV3JhcHBlck9i
amVjdDo6dmlzaXRDaGlsZHJlbik6IFdlIGFkZCB0aGUgcG9pbnRlciB0byB0aGUgd3JhcHBlZCBP
YmplY3RpdmUtQyBvYmplY3QgdG8gdGhlIHNldCBvZgorICAgICAgICBvcGFxdWUgcm9vdHMgc28g
dGhhdCB0aGUgd2VhayBoYW5kbGUgb3duZXIgZm9yIEpTTWFuYWdlZFZhbHVlcyBjYW4gZmluZCBp
dCBsYXRlci4KKyAgICAgICAgKiBBUEkvSlNBUElXcmFwcGVyT2JqZWN0Lmg6IEFkZGVkLgorICAg
ICAgICAoSlNDKToKKyAgICAgICAgKEpTQVBJV3JhcHBlck9iamVjdCk6CisgICAgICAgIChKU0M6
OkpTQVBJV3JhcHBlck9iamVjdDo6d3JhcHBlZE9iamVjdCk6CisgICAgICAgIChKU0M6OkpTQVBJ
V3JhcHBlck9iamVjdDo6c2V0V3JhcHBlZE9iamVjdCk6CisgICAgICAgICogQVBJL0pTQmFzZS5j
cHA6CisgICAgICAgIChKU1N5bmNocm9ub3VzR2FyYmFnZUNvbGxlY3QpOgorICAgICAgICAqIEFQ
SS9KU0Jhc2VQcml2YXRlLmg6CisgICAgICAgICogQVBJL0pTQ2FsbGJhY2tPYmplY3QuY3BwOgor
ICAgICAgICAoSlNDKToKKyAgICAgICAgKiBBUEkvSlNDYWxsYmFja09iamVjdC5oOgorICAgICAg
ICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0OjpkZXN0cm95KTogTW92ZWQgdGhpcyB0byB0aGUgaGVh
ZGVyIHNvIHRoYXQgd2UgZG9uJ3QgZ2V0IGxpbmsgZXJyb3JzIHdpdGggSlNBUElXcmFwcGVyT2Jq
ZWN0LgorICAgICAgICAqIEFQSS9KU0NvbnRleHQubW06CisgICAgICAgICgtW0pTQ29udGV4dCBp
bml0V2l0aFZpcnR1YWxNYWNoaW5lOl0pOiBXZSB3ZXJlbid0IGFkZGluZyBtYW51YWxseSBhbGxv
Y2F0ZWQvaW5pdGlhbGl6ZWQgSlNWaXJ0dWFsTWFjaGluZSBvYmplY3RzIHRvIAorICAgICAgICB0
aGUgZ2xvYmFsIGNhY2hlIG9mIHZpcnR1YWwgbWFjaGluZXMuIFRoZSBpbml0IG1ldGhvZHMgaGFu
ZGxlIHRoaXMgbm93IHJhdGhlciB0aGFuIGNvbnRleHRXaXRoR2xvYmFsQ29udGV4dFJlZiwgc2lu
Y2UgCisgICAgICAgIG5vdCBldmVyeW9uZSBpcyBndWFyYW50ZWVkIHRvIHVzZSB0aGUgbGF0dGVy
LgorICAgICAgICAoLVtKU0NvbnRleHQgaW5pdFdpdGhHbG9iYWxDb250ZXh0UmVmOl0pOgorICAg
ICAgICAoK1tKU0NvbnRleHQgY29udGV4dFdpdGhHbG9iYWxDb250ZXh0UmVmOl0pOgorICAgICAg
ICAqIEFQSS9KU01hbmFnZWRWYWx1ZS5oOiBBZGRlZC4KKyAgICAgICAgKiBBUEkvSlNNYW5hZ2Vk
VmFsdWUubW06IEFkZGVkLgorICAgICAgICAoSlNNYW5hZ2VkVmFsdWVIYW5kbGVPd25lcik6Cisg
ICAgICAgIChtYW5hZ2VkVmFsdWVIYW5kbGVPd25lcik6CisgICAgICAgICgrW0pTTWFuYWdlZFZh
bHVlIHdlYWtWYWx1ZVdpdGhWYWx1ZTpdKToKKyAgICAgICAgKCtbSlNNYW5hZ2VkVmFsdWUgbWFu
YWdlZFZhbHVlV2l0aFZhbHVlOm93bmVyOl0pOgorICAgICAgICAoLVtKU01hbmFnZWRWYWx1ZSBp
bml0XSk6IFdlIGV4cGxpY2l0bHkgY2FsbCB0aGUgQVJDIGVudHJ5cG9pbnRzIHRvIGluaXRpYWxp
emUvZ2V0IHRoZSB3ZWFrIG93bmVyIGZpZWxkIHNpbmNlIHdlIGRvbid0IAorICAgICAgICB1c2Ug
QVJDIHdoZW4gYnVpbGRpbmcgb3VyIGZyYW1ld29yay4KKyAgICAgICAgKC1bSlNNYW5hZ2VkVmFs
dWUgaW5pdFdpdGhWYWx1ZTpdKToKKyAgICAgICAgKC1bSlNNYW5hZ2VkVmFsdWUgaW5pdFdpdGhW
YWx1ZTpvd25lcjpdKToKKyAgICAgICAgKC1bSlNNYW5hZ2VkVmFsdWUgZGVhbGxvY10pOgorICAg
ICAgICAoLVtKU01hbmFnZWRWYWx1ZSB2YWx1ZV0pOgorICAgICAgICAoLVtKU01hbmFnZWRWYWx1
ZSB3ZWFrT3duZXJdKToKKyAgICAgICAgKEpTTWFuYWdlZFZhbHVlSGFuZGxlT3duZXI6OmlzUmVh
Y2hhYmxlRnJvbU9wYXF1ZVJvb3RzKTogSWYgdGhlIE9iamVjdGl2ZS1DIG93bmVyIGlzIHN0aWxs
IGFsaXZlIChpLmUuIGxvYWRpbmcgdGhlIHdlYWsgZmllbGQKKyAgICAgICAgcmV0dXJucyBub24t
bmlsKSBhbmQgdGhhdCB2YWx1ZSB3YXMgYWRkZWQgdG8gdGhlIHNldCBvZiBvcGFxdWUgcm9vdHMg
YnkgdGhlIHdyYXBwZXIgZm9yIHRoYXQgT2JqZWN0aXZlLUMgb3duZXIsIHRoZW4gdGhlIHRoZSAK
KyAgICAgICAgSlNPYmplY3QgdG8gd2hpY2ggdGhlIEpTTWFuYWdlZE9iamVjdCByZWZlcnMgaXMg
c3RpbGwgYWxpdmUuCisgICAgICAgICogQVBJL0pTT2JqZWN0UmVmLmNwcDogV2UgaGF2ZSB0byBh
ZGQgZXhwbGljaXQgY2hlY2tzIGZvciB0aGUgSlNBUElXcmFwcGVyT2JqZWN0LCBqdXN0IGxpa2Ug
dGhlIG90aGVyIHR5cGVzIG9mIEpTQ2FsbGJhY2tPYmplY3RzLgorICAgICAgICAoSlNPYmplY3RH
ZXRQcml2YXRlKToKKyAgICAgICAgKEpTT2JqZWN0U2V0UHJpdmF0ZSk6CisgICAgICAgIChKU09i
amVjdEdldFByaXZhdGVQcm9wZXJ0eSk6CisgICAgICAgIChKU09iamVjdFNldFByaXZhdGVQcm9w
ZXJ0eSk6CisgICAgICAgIChKU09iamVjdERlbGV0ZVByaXZhdGVQcm9wZXJ0eSk6CisgICAgICAg
ICogQVBJL0pTVmFsdWUubW06CisgICAgICAgIChvYmplY3RUb1ZhbHVlV2l0aG91dENvcHkpOgor
ICAgICAgICAqIEFQSS9KU1ZhbHVlUmVmLmNwcDoKKyAgICAgICAgKEpTVmFsdWVJc09iamVjdE9m
Q2xhc3MpOgorICAgICAgICAqIEFQSS9KU1ZpcnR1YWxNYWNoaW5lLm1tOgorICAgICAgICAoLVtK
U1ZpcnR1YWxNYWNoaW5lIGluaXRXaXRoQ29udGV4dEdyb3VwUmVmOl0pOgorICAgICAgICAoK1tK
U1ZpcnR1YWxNYWNoaW5lIHZpcnR1YWxNYWNoaW5lV2l0aENvbnRleHRHcm91cFJlZjpdKToKKyAg
ICAgICAgKiBBUEkvSlNXcmFwcGVyTWFwLm1tOgorICAgICAgICAod3JhcHBlckZpbmFsaXplKToK
KyAgICAgICAgKG1ha2VXcmFwcGVyKTogVGhpcyBpcyBvdXIgb3duIGludGVybmFsIHZlcnNpb24g
b2YgSlNPYmplY3RNYWtlIHdoaWNoIGNyZWF0ZXMgSlNBUElXcmFwcGVyT2JqZWN0cywgdGhlIE9i
ai1DIEFQSSAKKyAgICAgICAgdmVyc2lvbiBvZiBKU0NhbGxiYWNrT2JqZWN0cy4KKyAgICAgICAg
KGNyZWF0ZU9iamVjdFdpdGhDdXN0b21CcmFuZCk6CisgICAgICAgICgtW0pTT2JqQ0NsYXNzSW5m
byB3cmFwcGVyRm9yT2JqZWN0Ol0pOgorICAgICAgICAodHJ5VW53cmFwT2JqY09iamVjdCk6Cisg
ICAgICAgICogQVBJL0phdmFTY3JpcHRDb3JlLmg6CisgICAgICAgICogQVBJL3Rlc3RzL3Rlc3Rh
cGkubW06IEFkZGVkIG5ldyB0ZXN0cyBmb3IgdGhlIHN0cm9uZyBhbmQgd2VhayB1c2VzIG9mIEpT
TWFuYWdlZFZhbHVlIGluIHRoZSBjb250ZXh0IG9mIGFuIAorICAgICAgICBvbmNsaWNrIGhhbmRs
ZXIgZm9yIGFuIE9iamVjdGl2ZS1DIG9iamVjdCBpbnNlcnRlZCBpbnRvIGEgSlNDb250ZXh0Lgor
ICAgICAgICAoLVtUZXh0WFlaIHNldFdlYWtPbmNsaWNrOl0pOgorICAgICAgICAoLVtUZXh0WFla
IHNldE9uY2xpY2s6XSk6CisgICAgICAgICgtW1RleHRYWVogd2Vha09uY2xpY2tdKToKKyAgICAg
ICAgKC1bVGV4dFhZWiBvbmNsaWNrXSk6CisgICAgICAgICgtW1RleHRYWVogY2xpY2tdKToKKyAg
ICAgICAgKiBDTWFrZUxpc3RzLnR4dDogVmFyaW91cyBidWlsZCBzeXN0ZW0gYWRkaXRpb25zLgor
ICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogSmF2YVNjcmlwdENvcmUu
Z3lwaToKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUudmNwcm9qOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6IEFk
ZGVkIHRoZSBuZXcgY2Fub25pY2FsIFN0cnVjdHVyZSBmb3IgdGhlIEpTQVBJV3JhcHBlck9iamVj
dCBjbGFzcy4KKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnJlc2V0KToKKyAgICAgICAg
KEpTQyk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKToKKyAg
ICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgIChKU0dsb2JhbE9iamVj
dCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpvYmpjV3JhcHBlck9iamVjdFN0cnVj
dHVyZSk6CisKIDIwMTMtMDMtMDUgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21h
aWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxNDQ3MDguCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAxNDQ3ODApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTI0
LDYgKzI0LDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX0lOQ0xVREVfRElSRUNUT1JJRVMKICkKIAog
c2V0KEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKKyAgICBBUEkvSlNBUElXcmFwcGVyT2JqZWN0LmNw
cAogICAgIEFQSS9KU0Jhc2UuY3BwCiAgICAgQVBJL0pTQ2FsbGJhY2tDb25zdHJ1Y3Rvci5jcHAK
ICAgICBBUEkvSlNDYWxsYmFja0Z1bmN0aW9uLmNwcApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHJldmlzaW9uIDE0NDc4MCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw2ICsz
Niw4IEBAIGphdmFzY3JpcHRjb3JlX2J1aWx0X25vc291cmNlcyArPSBcCiBqYXZhc2NyaXB0Y29y
ZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0FQSUNhc3QuaCBcCiAJ
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9BUElTaGltcy5oIFwKKyAgICBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL0pTQVBJV3JhcHBlck9iamVjdC5jcHAgXAorICAgIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvSlNBUElXcmFwcGVyT2JqZWN0LmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvSlNCYXNlLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0Jhc2VQcml2
YXRlLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja0NvbnN0cnVjdG9y
LmNwcCBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZ3lwaQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZ3lwaQko
cmV2aXNpb24gMTQ0NzgwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Lmd5cGkJKHdvcmtpbmcgY29weSkKQEAgLTM2LDYgKzM2LDggQEAKICAgICAgICAgICAgICdBUEkv
QVBJU2hpbXMuaCcsCiAgICAgICAgICAgICAnQVBJL0phdmFTY3JpcHRDb3JlLmgnLAogICAgICAg
ICAgICAgJ0FQSS9KYXZhU2NyaXB0LmgnLAorICAgICAgICAgICAgJ0FQSS9KU0FQSVdyYXBwZXJP
YmplY3QuY3BwJywKKyAgICAgICAgICAgICdBUEkvSlNBUElXcmFwcGVyT2JqZWN0LmgnLAogICAg
ICAgICAgICAgJ0FQSS9KU0Jhc2UuY3BwJywKICAgICAgICAgICAgICdBUEkvSlNCYXNlLmgnLAog
ICAgICAgICAgICAgJ0FQSS9KU0Jhc2VQcml2YXRlLmgnLApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL1RhcmdldC5wcmkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL1Rh
cmdldC5wcmkJKHJldmlzaW9uIDE0NDc4MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9UYXJn
ZXQucHJpCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3IEBAIElOU1RBTExERVBTICs9IGFs
bAogZGVidWdfYW5kX3JlbGVhc2U6IElOQ0xVREVQQVRIICs9ICQkSkFWQVNDUklQVENPUkVfR0VO
RVJBVEVEX1NPVVJDRVNfRElSLyQkdGFyZ2V0U3ViRGlyKCkKIAogU09VUkNFUyArPSBcCisgICAg
QVBJL0pTQVBJV3JhcHBlck9iamVjdC5jcHAgXAogICAgIEFQSS9KU0Jhc2UuY3BwIFwKICAgICBB
UEkvSlNDYWxsYmFja0NvbnN0cnVjdG9yLmNwcCBcCiAgICAgQVBJL0pTQ2FsbGJhY2tGdW5jdGlv
bi5jcHAgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0FQSVdyYXBwZXJPYmpl
Y3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNBUElXcmFw
cGVyT2JqZWN0LmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
SlNBUElXcmFwcGVyT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDY0IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTQVBJV3JhcHBlck9i
amVjdC5oIgorCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKKyNpbmNsdWRlICJKU0Nh
bGxiYWNrT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgorI2luY2x1ZGUgIlNs
b3RWaXNpdG9ySW5saW5lcy5oIgorI2luY2x1ZGUgIlN0cnVjdHVyZS5oIgorI2luY2x1ZGUgIlN0
cnVjdHVyZUlubGluZXMuaCIKKworbmFtZXNwYWNlIEpTQyB7CisgICAgCit0ZW1wbGF0ZSA8PiBj
b25zdCBDbGFzc0luZm8gSlNDYWxsYmFja09iamVjdDxKU0FQSVdyYXBwZXJPYmplY3Q+OjpzX2lu
Zm8gPSB7ICJFbnVtZXJhYmxlQ2FsbGJhY2tPYmplY3QiLCAmQmFzZTo6c19pbmZvLCAwLCAwLCBD
UkVBVEVfTUVUSE9EX1RBQkxFKEpTQ2FsbGJhY2tPYmplY3QpIH07CisKK3RlbXBsYXRlPD4gY29u
c3QgYm9vbCBKU0NhbGxiYWNrT2JqZWN0PEpTQVBJV3JhcHBlck9iamVjdD46Om5lZWRzRGVzdHJ1
Y3Rpb24gPSB0cnVlOworCit0ZW1wbGF0ZSA8PgorU3RydWN0dXJlKiBKU0NhbGxiYWNrT2JqZWN0
PEpTQVBJV3JhcHBlck9iamVjdD46OmNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2Jh
bERhdGEsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG8pCit7Cisg
ICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKGdsb2JhbERhdGEsIGdsb2JhbE9iamVjdCwgcHJv
dG8sIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgJnNfaW5mbyk7Cit9CisK
K0pTQVBJV3JhcHBlck9iamVjdDo6SlNBUElXcmFwcGVyT2JqZWN0KEpTR2xvYmFsRGF0YSYgZ2xv
YmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBCYXNlKGdsb2JhbERhdGEsIHN0
cnVjdHVyZSkKKyAgICAsIG1fd3JhcHBlZE9iamVjdCgwKQoreworfQorCit2b2lkIEpTQVBJV3Jh
cHBlck9iamVjdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIEpTQzo6U2xvdFZpc2l0b3Im
IHZpc2l0b3IpCit7CisgICAgSlNBUElXcmFwcGVyT2JqZWN0KiB0aGlzT2JqZWN0ID0gSlNDOjpq
c0Nhc3Q8SlNBUElXcmFwcGVyT2JqZWN0Kj4oY2VsbCk7CisgICAgQ09NUElMRV9BU1NFUlQoU3Ry
dWN0dXJlRmxhZ3MgJiBPdmVycmlkZXNWaXNpdENoaWxkcmVuLCBPdmVycmlkZXNWaXNpdENoaWxk
cmVuV2l0aG91dFNldHRpbmdGbGFnKTsKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKGNlbGwsIHZp
c2l0b3IpOworCisgICAgaWYgKHRoaXNPYmplY3QtPndyYXBwZWRPYmplY3QoKSkKKyAgICAgICAg
dmlzaXRvci5hZGRPcGFxdWVSb290KHRoaXNPYmplY3QtPndyYXBwZWRPYmplY3QoKSk7Cit9CisK
K30gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0FQ
SVdyYXBwZXJPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTQVBJV3JhcHBlck9iamVjdC5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9KU0FQSVdyYXBwZXJPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDU1
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBKU0FQSVdyYXBwZXJPYmplY3RfaAorI2RlZmluZSBK
U0FQSVdyYXBwZXJPYmplY3RfaAorCisjaW5jbHVkZSAiSlNCYXNlLmgiCisjaW5jbHVkZSAiSlNE
ZXN0cnVjdGlibGVPYmplY3QuaCIKKyNpbmNsdWRlICJXZWFrUmVmZXJlbmNlSGFydmVzdGVyLmgi
CisKK25hbWVzcGFjZSBKU0MgeworICAgIAorY2xhc3MgSlNBUElXcmFwcGVyT2JqZWN0IDogcHVi
bGljIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIEpTRGVzdHJ1
Y3RpYmxlT2JqZWN0IEJhc2U7CisgICAgCisgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihK
U0NlbGwqLCBKU0M6OlNsb3RWaXNpdG9yJik7CisgICAgCisgICAgdm9pZCogd3JhcHBlZE9iamVj
dCgpIHsgcmV0dXJuIG1fd3JhcHBlZE9iamVjdDsgfQorICAgIHZvaWQgc2V0V3JhcHBlZE9iamVj
dCh2b2lkKiB3cmFwcGVkT2JqZWN0KSB7IG1fd3JhcHBlZE9iamVjdCA9IHdyYXBwZWRPYmplY3Q7
IH0KKworcHJvdGVjdGVkOgorICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFn
cyA9IE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4gfCBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKKyAgICAK
KyAgICBKU0FQSVdyYXBwZXJPYmplY3QoSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKik7CisKK3By
aXZhdGU6CisgICAgdm9pZCogbV93cmFwcGVkT2JqZWN0OworfTsKKworfSAvLyBuYW1lc3BhY2Ug
SlNDCisKKyNlbmRpZiAvLyBKU0FQSVdyYXBwZXJPYmplY3RfaApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU0Jhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNCYXNlLmNwcAkocmV2aXNpb24gMTQ0NzgwKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS9KU0Jhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTAsMyArMTEwLDEzIEBA
IHZvaWQgSlNSZXBvcnRFeHRyYU1lbW9yeUNvc3QoSlNDb250ZXh0UmUKICAgICBBUElFbnRyeVNo
aW0gZW50cnlTaGltKGV4ZWMpOwogICAgIGV4ZWMtPmdsb2JhbERhdGEoKS5oZWFwLnJlcG9ydEV4
dHJhTWVtb3J5Q29zdChzaXplKTsKIH0KKwordm9pZCBKU1N5bmNocm9ub3VzR2FyYmFnZUNvbGxl
Y3QoSlNDb250ZXh0UmVmIGN0eCkKK3sKKyAgICBpZiAoIWN0eCkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgRXhlY1N0YXRlKiBleGVjID0gdG9KUyhjdHgpOworICAgIEFQSUVudHJ5U2hpbSBlbnRy
eVNoaW0oZXhlYyk7CisgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLmhlYXAuY29sbGVjdEFsbEdhcmJh
Z2UoKTsKK30KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNCYXNlUHJpdmF0ZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNCYXNlUHJpdmF0ZS5o
CShyZXZpc2lvbiAxNDQ3ODApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQmFzZVBy
aXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDUsNiArNDUsMTUgQEAgcmVnaW9uLgogKi8KIEpT
X0VYUE9SVCB2b2lkIEpTUmVwb3J0RXh0cmFNZW1vcnlDb3N0KEpTQ29udGV4dFJlZiBjdHgsIHNp
emVfdCBzaXplKSBBVkFJTEFCTEVfSU5fV0VCS0lUX1ZFUlNJT05fNF8wOwogCisvKiEKK0BmdW5j
dGlvbgorQGFic3RyYWN0IFN5bmNocm9ub3VzbHkgcnVucyBhIGZ1bGwgbWFyay1zd2VlcCBnYXJi
YWdlIGNvbGxlY3Rpb24uCitAcGFyYW0gY3R4IFRoZSBleGVjdXRpb24gY29udGV4dCB0byB1c2Uu
CitAZGlzY3Vzc2lvbiBUaGlzIGZ1bmN0aW9uIGlzIG9ubHkgdXNlZCBpbnRlcm5hbGx5IGZvciB0
ZXN0cy4gSWYgeW91J3JlIG5vdCAKK3N1cmUgeW91IG5lZWQgdG8gdXNlIHRoaXMgZnVuY3Rpb24g
dGhlbiB5b3UgZG9uJ3QgbmVlZCB0by4KKyovCitKU19FWFBPUlQgdm9pZCBKU1N5bmNocm9ub3Vz
R2FyYmFnZUNvbGxlY3QoSlNDb250ZXh0UmVmIGN0eCk7CisKICNpZmRlZiBfX2NwbHVzcGx1cwog
fQogI2VuZGlmCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmpl
Y3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFj
a09iamVjdC5jcHAJKHJldmlzaW9uIDE0NDc4MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNDYWxsYmFja09iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYxLDEyICs2MSw2IEBA
IFN0cnVjdHVyZSogSlNDYWxsYmFja09iamVjdDxKU0dsb2JhbE9iamUKICAgICByZXR1cm4gU3Ry
dWN0dXJlOjpjcmVhdGUoZ2xvYmFsRGF0YSwgZ2xvYmFsT2JqZWN0LCBwcm90bywgVHlwZUluZm8o
R2xvYmFsT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCAmc19pbmZvKTsgCiB9CiAKLXRlbXBs
YXRlIDxjbGFzcyBQYXJlbnQ+Ci12b2lkIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6ZGVzdHJv
eShKU0NlbGwqIGNlbGwpCi17Ci0gICAgc3RhdGljX2Nhc3Q8SlNDYWxsYmFja09iamVjdCo+KGNl
bGwpLT5KU0NhbGxiYWNrT2JqZWN0Ojp+SlNDYWxsYmFja09iamVjdCgpOwotfQotCiB2b2lkIEpT
Q2FsbGJhY2tPYmplY3REYXRhOjpmaW5hbGl6ZShIYW5kbGU8VW5rbm93bj4gaGFuZGxlLCB2b2lk
KiBjb250ZXh0KQogewogICAgIEpTQ2xhc3NSZWYganNDbGFzcyA9IHN0YXRpY19jYXN0PEpTQ2xh
c3NSZWY+KGNvbnRleHQpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxi
YWNrT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0Nh
bGxiYWNrT2JqZWN0LmgJKHJldmlzaW9uIDE0NDc4MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvSlNDYWxsYmFja09iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzYsNyArMTM2LDEw
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+KiBjcmVhdGUo
SlNHbG9iYWxEYXRhJiwgSlNDbGFzc1JlZiwgU3RydWN0dXJlKik7CiAKICAgICBzdGF0aWMgY29u
c3QgYm9vbCBuZWVkc0Rlc3RydWN0aW9uOwotICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxs
Kik7CisgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqIGNlbGwpCisgICAgeworICAgICAg
ICBzdGF0aWNfY2FzdDxKU0NhbGxiYWNrT2JqZWN0Kj4oY2VsbCktPkpTQ2FsbGJhY2tPYmplY3Q6
On5KU0NhbGxiYWNrT2JqZWN0KCk7CisgICAgfQogCiAgICAgdm9pZCBzZXRQcml2YXRlKHZvaWQq
IGRhdGEpOwogICAgIHZvaWQqIGdldFByaXZhdGUoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNDb250ZXh0Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvSlNDb250ZXh0Lm1tCShyZXZpc2lvbiAxNDQ3ODApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL0pTQ29udGV4dC5tbQkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQAog
I2luY2x1ZGUgImNvbmZpZy5oIgogCiAjaW1wb3J0ICJBUElDYXN0LmgiCisjaW1wb3J0ICJBUElT
aGltcy5oIgogI2ltcG9ydCAiSlNDb250ZXh0SW50ZXJuYWwuaCIKICNpbXBvcnQgIkpTR2xvYmFs
T2JqZWN0LmgiCiAjaW1wb3J0ICJKU1ZhbHVlSW50ZXJuYWwuaCIKQEAgLTcyLDYgKzczLDggQEAg
LSAoaWQpaW5pdFdpdGhWaXJ0dWFsTWFjaGluZTooSlNWaXJ0dWFsTQogICAgICAgICBjb250ZXh0
LmV4Y2VwdGlvbiA9IGV4Y2VwdGlvblZhbHVlOwogICAgIH07CiAKKyAgICBbbV92aXJ0dWFsTWFj
aGluZSBhZGRDb250ZXh0OnNlbGYgZm9yR2xvYmFsQ29udGV4dFJlZjptX2NvbnRleHRdOworCiAg
ICAgcmV0dXJuIHNlbGY7CiB9CiAKQEAgLTE4Nyw2ICsxOTAsOCBAQCAtIChpZClpbml0V2l0aEds
b2JhbENvbnRleHRSZWY6KEpTR2xvYmFsCiAgICAgICAgIGNvbnRleHQuZXhjZXB0aW9uID0gZXhj
ZXB0aW9uVmFsdWU7CiAgICAgfTsKIAorICAgIFttX3ZpcnR1YWxNYWNoaW5lIGFkZENvbnRleHQ6
c2VsZiBmb3JHbG9iYWxDb250ZXh0UmVmOm1fY29udGV4dF07CisKICAgICByZXR1cm4gc2VsZjsK
IH0KIApAQCAtMjU0LDEwICsyNTksOCBAQCArIChKU0NvbnRleHQgKiljb250ZXh0V2l0aEdsb2Jh
bENvbnRleHRSCiB7CiAgICAgSlNWaXJ0dWFsTWFjaGluZSAqdmlydHVhbE1hY2hpbmUgPSBbSlNW
aXJ0dWFsTWFjaGluZSB2aXJ0dWFsTWFjaGluZVdpdGhDb250ZXh0R3JvdXBSZWY6dG9SZWYoJnRv
SlMoZ2xvYmFsQ29udGV4dCktPmdsb2JhbERhdGEoKSldOwogICAgIEpTQ29udGV4dCAqY29udGV4
dCA9IFt2aXJ0dWFsTWFjaGluZSBjb250ZXh0Rm9yR2xvYmFsQ29udGV4dFJlZjpnbG9iYWxDb250
ZXh0XTsKLSAgICBpZiAoIWNvbnRleHQpIHsKKyAgICBpZiAoIWNvbnRleHQpCiAgICAgICAgIGNv
bnRleHQgPSBbW1tKU0NvbnRleHQgYWxsb2NdIGluaXRXaXRoR2xvYmFsQ29udGV4dFJlZjpnbG9i
YWxDb250ZXh0XSBhdXRvcmVsZWFzZV07Ci0gICAgICAgIFt2aXJ0dWFsTWFjaGluZSBhZGRDb250
ZXh0OmNvbnRleHQgZm9yR2xvYmFsQ29udGV4dFJlZjpnbG9iYWxDb250ZXh0XTsKLSAgICB9CiAg
ICAgcmV0dXJuIGNvbnRleHQ7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
SlNNYW5hZ2VkVmFsdWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTTWFuYWdlZFZhbHVlLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL0pTTWFuYWdlZFZhbHVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1MSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpZm5kZWYgSlNNYW5hZ2VkVmFsdWVfaAorI2RlZmluZSBKU01hbmFnZWRWYWx1
ZV9oCisKKyNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0pTQmFzZS5oPgorCisjaWYgSlNDX09CSkNf
QVBJX0VOQUJMRUQKKworQGNsYXNzIEpTVmFsdWU7CitAY2xhc3MgSlNDb250ZXh0OworCitOU19D
TEFTU19BVkFJTEFCTEUoMTBfOSwgTkEpCitAaW50ZXJmYWNlIEpTTWFuYWdlZFZhbHVlIDogTlNP
YmplY3QKKworKyAoSlNNYW5hZ2VkVmFsdWUgKil3ZWFrVmFsdWVXaXRoVmFsdWU6KEpTVmFsdWUg
Kil2YWx1ZTsKKysgKEpTTWFuYWdlZFZhbHVlICopbWFuYWdlZFZhbHVlV2l0aFZhbHVlOihKU1Zh
bHVlICopdmFsdWUgb3duZXI6KGlkKW93bmVyOworCistIChpZClpbml0V2l0aFZhbHVlOihKU1Zh
bHVlICopdmFsdWU7CistIChpZClpbml0V2l0aFZhbHVlOihKU1ZhbHVlICopdmFsdWUgb3duZXI6
KGlkKW93bmVyOworCistIChKU1ZhbHVlICopdmFsdWU7CisKK0BlbmQKKworI2VuZGlmIC8vIEpT
Q19PQkpDX0FQSV9FTkFCTEVECisKKyNlbmRpZiAvLyBKU01hbmFnZWRWYWx1ZV9oCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTTWFuYWdlZFZhbHVlLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNNYW5hZ2VkVmFsdWUubW0JKHJldmlzaW9uIDAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTTWFuYWdlZFZhbHVlLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsMTM2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworCisjaW1wb3J0ICJjb25maWcu
aCIKKyNpbXBvcnQgIkpTTWFuYWdlZFZhbHVlLmgiCisKKyNpZiBKU0NfT0JKQ19BUElfRU5BQkxF
RAorCisjaW1wb3J0ICJBUElDYXN0LmgiCisjaW1wb3J0ICJIZWFwLmgiCisjaW1wb3J0ICJKU0NK
U1ZhbHVlSW5saW5lcy5oIgorI2ltcG9ydCAiSlNDb250ZXh0SW50ZXJuYWwuaCIKKyNpbXBvcnQg
IkpTVmFsdWVJbnRlcm5hbC5oIgorI2ltcG9ydCAiV2Vhay5oIgorI2ltcG9ydCAiV2Vha0hhbmRs
ZU93bmVyLmgiCisjaW1wb3J0ICJPYmpjUnVudGltZUV4dHJhcy5oIgorCitjbGFzcyBKU01hbmFn
ZWRWYWx1ZUhhbmRsZU93bmVyIDogcHVibGljIEpTQzo6V2Vha0hhbmRsZU93bmVyIHsKK3B1Ymxp
YzoKKyAgICB2aXJ0dWFsIGJvb2wgaXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5k
bGU8SlNDOjpVbmtub3duPiwgdm9pZCogY29udGV4dCwgSlNDOjpTbG90VmlzaXRvciYpOworfTsK
Kworc3RhdGljIEpTTWFuYWdlZFZhbHVlSGFuZGxlT3duZXIqIG1hbmFnZWRWYWx1ZUhhbmRsZU93
bmVyKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEpTTWFuYWdlZFZhbHVlSGFuZGxlT3du
ZXIsIGpzTWFuYWdlZFZhbHVlSGFuZGxlT3duZXIsICgpKTsKKyAgICByZXR1cm4gJmpzTWFuYWdl
ZFZhbHVlSGFuZGxlT3duZXI7Cit9CisKK0BpbnRlcmZhY2UgSlNNYW5hZ2VkVmFsdWUgKEludGVy
bmFsKQorLSAoaWQpd2Vha093bmVyOworQGVuZAorCitAaW1wbGVtZW50YXRpb24gSlNNYW5hZ2Vk
VmFsdWUgeworICAgIEpTQzo6V2VhazxKU0M6OkpTT2JqZWN0PiBtX3ZhbHVlOworICAgIGlkIG1f
d2Vha093bmVyOworfQorCisrIChKU01hbmFnZWRWYWx1ZSAqKXdlYWtWYWx1ZVdpdGhWYWx1ZToo
SlNWYWx1ZSAqKXZhbHVlCit7CisgICAgcmV0dXJuIFtbW3NlbGYgYWxsb2NdIGluaXRXaXRoVmFs
dWU6dmFsdWVdIGF1dG9yZWxlYXNlXTsKK30KKworKyAoSlNNYW5hZ2VkVmFsdWUgKiltYW5hZ2Vk
VmFsdWVXaXRoVmFsdWU6KEpTVmFsdWUgKil2YWx1ZSBvd25lcjooaWQpb3duZXIKK3sKKyAgICBy
ZXR1cm4gW1tbc2VsZiBhbGxvY10gaW5pdFdpdGhWYWx1ZTp2YWx1ZSBvd25lcjpvd25lcl0gYXV0
b3JlbGVhc2VdOworfQorCistIChpZClpbml0Cit7CisgICAgcmV0dXJuIFtzZWxmIGluaXRXaXRo
VmFsdWU6bmlsIG93bmVyOm5pbF07Cit9CisKKy0gKGlkKWluaXRXaXRoVmFsdWU6KEpTVmFsdWUg
Kil2YWx1ZQoreworICAgIHJldHVybiBbc2VsZiBpbml0V2l0aFZhbHVlOnZhbHVlIG93bmVyOm5p
bF07Cit9CisKKy0gKGlkKWluaXRXaXRoVmFsdWU6KEpTVmFsdWUgKil2YWx1ZSBvd25lcjooaWQp
b3duZXIKK3sKKyAgICBzZWxmID0gW3N1cGVyIGluaXRdOworICAgIGlmICghc2VsZikKKyAgICAg
ICAgcmV0dXJuIG5pbDsKKyAgICAKKyAgICBpZiAoIXZhbHVlIHx8ICFKU1ZhbHVlSXNPYmplY3Qo
W3ZhbHVlLmNvbnRleHQgZ2xvYmFsQ29udGV4dFJlZl0sIFt2YWx1ZSBKU1ZhbHVlUmVmXSkpIHsK
KyAgICAgICAgSlNDOjpXZWFrPEpTQzo6SlNPYmplY3Q+IHdlYWs7CisgICAgICAgIG1fdmFsdWUu
c3dhcCh3ZWFrKTsKKyAgICB9IGVsc2UgeworICAgICAgICBKU0M6OkpTT2JqZWN0KiBvYmplY3Qg
PSB0b0pTKEpTVmFsdWVUb09iamVjdChbdmFsdWUuY29udGV4dCBnbG9iYWxDb250ZXh0UmVmXSwg
W3ZhbHVlIEpTVmFsdWVSZWZdLCAwKSk7CisgICAgICAgIEpTQzo6V2VhazxKU0M6OkpTT2JqZWN0
PiB3ZWFrKG9iamVjdCwgbWFuYWdlZFZhbHVlSGFuZGxlT3duZXIoKSwgc2VsZik7CisgICAgICAg
IG1fdmFsdWUuc3dhcCh3ZWFrKTsKKyAgICB9CisKKyAgICBvYmpjX2luaXRXZWFrKCZtX3dlYWtP
d25lciwgb3duZXIpOworCisgICAgcmV0dXJuIHNlbGY7Cit9CisKKy0gKHZvaWQpZGVhbGxvYwor
eworICAgIG9iamNfZGVzdHJveVdlYWsoJm1fd2Vha093bmVyKTsKKyAgICBbc3VwZXIgZGVhbGxv
Y107Cit9CisKKy0gKEpTVmFsdWUgKil2YWx1ZQoreworICAgIGlmICghbV92YWx1ZSkKKyAgICAg
ICAgcmV0dXJuIG5pbDsKKyAgICBKU0M6OkpTT2JqZWN0KiBvYmplY3QgPSBtX3ZhbHVlLmdldCgp
OworICAgIEpTQ29udGV4dCAqY29udGV4dCA9IFtKU0NvbnRleHQgY29udGV4dFdpdGhHbG9iYWxD
b250ZXh0UmVmOnRvR2xvYmFsUmVmKG9iamVjdC0+c3RydWN0dXJlKCktPmdsb2JhbE9iamVjdCgp
LT5nbG9iYWxFeGVjKCkpXTsKKyAgICByZXR1cm4gW0pTVmFsdWUgdmFsdWVXaXRoVmFsdWU6dG9S
ZWYob2JqZWN0KSBpbkNvbnRleHQ6Y29udGV4dF07Cit9CisKK0BlbmQKKworQGltcGxlbWVudGF0
aW9uIEpTTWFuYWdlZFZhbHVlIChJbnRlcm5hbCkKKworLSAoaWQpd2Vha093bmVyCit7CisgICAg
cmV0dXJuIG9iamNfbG9hZFdlYWsoJm1fd2Vha093bmVyKTsKK30KKworQGVuZAorCitib29sIEpT
TWFuYWdlZFZhbHVlSGFuZGxlT3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6
SGFuZGxlPEpTQzo6VW5rbm93bj4sIHZvaWQqIGNvbnRleHQsIEpTQzo6U2xvdFZpc2l0b3ImIHZp
c2l0b3IpCit7CisgICAgSlNNYW5hZ2VkVmFsdWUgKm1hbmFnZWRWYWx1ZSA9IHN0YXRpY19jYXN0
PEpTTWFuYWdlZFZhbHVlICo+KGNvbnRleHQpOworICAgIGlkIHdlYWtPd25lciA9IFttYW5hZ2Vk
VmFsdWUgd2Vha093bmVyXTsKKyAgICBpZiAoIXdlYWtPd25lcikKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIHJldHVybiB2aXNpdG9yLmNvbnRhaW5zT3BhcXVlUm9vdCh3ZWFrT3duZXIpOwor
fQorCisjZW5kaWYgLy8gSlNDX09CSkNfQVBJX0VOQUJMRUQKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvSlNPYmplY3RSZWYuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvSlNPYmplY3RSZWYuY3BwCShyZXZpc2lvbiAxNDQ3ODApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcs
NiArMzcsNyBAQAogI2luY2x1ZGUgIkZ1bmN0aW9uQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJJ
ZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiSW5pdGlhbGl6ZVRocmVhZGluZy5oIgorI2luY2x1ZGUg
IkpTQVBJV3JhcHBlck9iamVjdC5oIgogI2luY2x1ZGUgIkpTQXJyYXkuaCIKICNpbmNsdWRlICJK
U0NhbGxiYWNrQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJKU0NhbGxiYWNrRnVuY3Rpb24uaCIK
QEAgLTM0NSw2ICszNDYsOCBAQCB2b2lkKiBKU09iamVjdEdldFByaXZhdGUoSlNPYmplY3RSZWYg
b2JqCiAgICAgICAgIHJldHVybiBqc0Nhc3Q8SlNDYWxsYmFja09iamVjdDxKU0dsb2JhbE9iamVj
dD4qPihqc09iamVjdCktPmdldFByaXZhdGUoKTsKICAgICBpZiAoanNPYmplY3QtPmluaGVyaXRz
KCZKU0NhbGxiYWNrT2JqZWN0PEpTRGVzdHJ1Y3RpYmxlT2JqZWN0Pjo6c19pbmZvKSkKICAgICAg
ICAgcmV0dXJuIGpzQ2FzdDxKU0NhbGxiYWNrT2JqZWN0PEpTRGVzdHJ1Y3RpYmxlT2JqZWN0Pio+
KGpzT2JqZWN0KS0+Z2V0UHJpdmF0ZSgpOworICAgIGlmIChqc09iamVjdC0+aW5oZXJpdHMoJkpT
Q2FsbGJhY2tPYmplY3Q8SlNBUElXcmFwcGVyT2JqZWN0Pjo6c19pbmZvKSkKKyAgICAgICAgcmV0
dXJuIGpzQ2FzdDxKU0NhbGxiYWNrT2JqZWN0PEpTQVBJV3JhcHBlck9iamVjdD4qPihqc09iamVj
dCktPmdldFByaXZhdGUoKTsKICAgICAKICAgICByZXR1cm4gMDsKIH0KQEAgLTM2MSw2ICszNjQs
MTAgQEAgYm9vbCBKU09iamVjdFNldFByaXZhdGUoSlNPYmplY3RSZWYgb2JqZQogICAgICAgICBq
c0Nhc3Q8SlNDYWxsYmFja09iamVjdDxKU0Rlc3RydWN0aWJsZU9iamVjdD4qPihqc09iamVjdCkt
PnNldFByaXZhdGUoZGF0YSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KKyAgICBpZiAo
anNPYmplY3QtPmluaGVyaXRzKCZKU0NhbGxiYWNrT2JqZWN0PEpTQVBJV3JhcHBlck9iamVjdD46
OnNfaW5mbykpIHsKKyAgICAgICAganNDYXN0PEpTQ2FsbGJhY2tPYmplY3Q8SlNBUElXcmFwcGVy
T2JqZWN0Pio+KGpzT2JqZWN0KS0+c2V0UHJpdmF0ZShkYXRhKTsKKyAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgfQogICAgICAgICAKICAgICByZXR1cm4gZmFsc2U7CiB9CkBAIC0zNzYsNiArMzgz
LDggQEAgSlNWYWx1ZVJlZiBKU09iamVjdEdldFByaXZhdGVQcm9wZXJ0eShKUwogICAgICAgICBy
ZXN1bHQgPSBqc0Nhc3Q8SlNDYWxsYmFja09iamVjdDxKU0dsb2JhbE9iamVjdD4qPihqc09iamVj
dCktPmdldFByaXZhdGVQcm9wZXJ0eShuYW1lKTsKICAgICBlbHNlIGlmIChqc09iamVjdC0+aW5o
ZXJpdHMoJkpTQ2FsbGJhY2tPYmplY3Q8SlNEZXN0cnVjdGlibGVPYmplY3Q+OjpzX2luZm8pKQog
ICAgICAgICByZXN1bHQgPSBqc0Nhc3Q8SlNDYWxsYmFja09iamVjdDxKU0Rlc3RydWN0aWJsZU9i
amVjdD4qPihqc09iamVjdCktPmdldFByaXZhdGVQcm9wZXJ0eShuYW1lKTsKKyAgICBlbHNlIGlm
IChqc09iamVjdC0+aW5oZXJpdHMoJkpTQ2FsbGJhY2tPYmplY3Q8SlNBUElXcmFwcGVyT2JqZWN0
Pjo6c19pbmZvKSkKKyAgICAgICAgcmVzdWx0ID0ganNDYXN0PEpTQ2FsbGJhY2tPYmplY3Q8SlNB
UElXcmFwcGVyT2JqZWN0Pio+KGpzT2JqZWN0KS0+Z2V0UHJpdmF0ZVByb3BlcnR5KG5hbWUpOwog
ICAgIHJldHVybiB0b1JlZihleGVjLCByZXN1bHQpOwogfQogCkBAIC0zOTQsNiArNDAzLDEwIEBA
IGJvb2wgSlNPYmplY3RTZXRQcml2YXRlUHJvcGVydHkoSlNDb250ZXgKICAgICAgICAganNDYXN0
PEpTQ2FsbGJhY2tPYmplY3Q8SlNEZXN0cnVjdGlibGVPYmplY3Q+Kj4oanNPYmplY3QpLT5zZXRQ
cml2YXRlUHJvcGVydHkoZXhlYy0+Z2xvYmFsRGF0YSgpLCBuYW1lLCBqc1ZhbHVlKTsKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgfQorICAgIGlmIChqc09iamVjdC0+aW5oZXJpdHMoJkpTQ2Fs
bGJhY2tPYmplY3Q8SlNBUElXcmFwcGVyT2JqZWN0Pjo6c19pbmZvKSkgeworICAgICAgICBqc0Nh
c3Q8SlNDYWxsYmFja09iamVjdDxKU0FQSVdyYXBwZXJPYmplY3Q+Kj4oanNPYmplY3QpLT5zZXRQ
cml2YXRlUHJvcGVydHkoZXhlYy0+Z2xvYmFsRGF0YSgpLCBuYW1lLCBqc1ZhbHVlKTsKKyAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgfQogICAgIHJldHVybiBmYWxzZTsKIH0KIApAQCAtNDExLDYg
KzQyNCwxMCBAQCBib29sIEpTT2JqZWN0RGVsZXRlUHJpdmF0ZVByb3BlcnR5KEpTQ29uCiAgICAg
ICAgIGpzQ2FzdDxKU0NhbGxiYWNrT2JqZWN0PEpTRGVzdHJ1Y3RpYmxlT2JqZWN0Pio+KGpzT2Jq
ZWN0KS0+ZGVsZXRlUHJpdmF0ZVByb3BlcnR5KG5hbWUpOwogICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICB9CisgICAgaWYgKGpzT2JqZWN0LT5pbmhlcml0cygmSlNDYWxsYmFja09iamVjdDxKU0FQ
SVdyYXBwZXJPYmplY3Q+OjpzX2luZm8pKSB7CisgICAgICAgIGpzQ2FzdDxKU0NhbGxiYWNrT2Jq
ZWN0PEpTQVBJV3JhcHBlck9iamVjdD4qPihqc09iamVjdCktPmRlbGV0ZVByaXZhdGVQcm9wZXJ0
eShuYW1lKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQogICAgIHJldHVybiBmYWxzZTsK
IH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlLm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZS5tbQkocmV2aXNpb24gMTQ0
NzgwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlLm1tCSh3b3JraW5nIGNv
cHkpCkBAIC04OTIsNiArODkyLDEzIEBAIHN0YXRpYyBPYmpjQ29udGFpbmVyQ29udmVydG9yOjpU
YXNrIG9iamUKICAgICAgICAgICAgIEpTT2JqZWN0UmVmIHJlc3VsdCA9IEpTT2JqZWN0TWFrZURh
dGUoY29udGV4dFJlZiwgMSwgJmFyZ3VtZW50LCAwKTsKICAgICAgICAgICAgIHJldHVybiAoT2Jq
Y0NvbnRhaW5lckNvbnZlcnRvcjo6VGFzayl7IG9iamVjdCwgcmVzdWx0LCBDb250YWluZXJOb25l
IH07CiAgICAgICAgIH0KKworICAgICAgICBpZiAoW29iamVjdCBpc0tpbmRPZkNsYXNzOltKU01h
bmFnZWRWYWx1ZSBjbGFzc11dKSB7CisgICAgICAgICAgICBKU1ZhbHVlICp2YWx1ZSA9IFtzdGF0
aWNfY2FzdDxKU01hbmFnZWRWYWx1ZSAqPihvYmplY3QpIHZhbHVlXTsKKyAgICAgICAgICAgIGlm
ICghdmFsdWUpCisgICAgICAgICAgICAgICAgcmV0dXJuIChPYmpjQ29udGFpbmVyQ29udmVydG9y
OjpUYXNrKSB7IG9iamVjdCwgSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dFJlZiksIENvbnRh
aW5lck5vbmUgfTsKKyAgICAgICAgICAgIHJldHVybiAoT2JqY0NvbnRhaW5lckNvbnZlcnRvcjo6
VGFzayl7IG9iamVjdCwgdmFsdWUtPm1fdmFsdWUsIENvbnRhaW5lck5vbmUgfTsKKyAgICAgICAg
fQogICAgIH0KIAogICAgIHJldHVybiAoT2JqY0NvbnRhaW5lckNvbnZlcnRvcjo6VGFzayl7IG9i
amVjdCwgdmFsdWVJbnRlcm5hbFZhbHVlKFtjb250ZXh0IHdyYXBwZXJGb3JPYmpDT2JqZWN0Om9i
amVjdF0pLCBDb250YWluZXJOb25lIH07CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTVmFsdWVSZWYuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
SlNWYWx1ZVJlZi5jcHAJKHJldmlzaW9uIDE0NDc4MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvSlNWYWx1ZVJlZi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDcgQEAKIAog
I2luY2x1ZGUgIkFQSUNhc3QuaCIKICNpbmNsdWRlICJBUElTaGltcy5oIgorI2luY2x1ZGUgIkpT
QVBJV3JhcHBlck9iamVjdC5oIgogI2luY2x1ZGUgIkpTQ2FsbGJhY2tPYmplY3QuaCIKIAogI2lu
Y2x1ZGUgPHJ1bnRpbWUvSlNDSlNWYWx1ZS5oPgpAQCAtMTQ4LDYgKzE0OSw4IEBAIGJvb2wgSlNW
YWx1ZUlzT2JqZWN0T2ZDbGFzcyhKU0NvbnRleHRSZWYKICAgICAgICAgICAgIHJldHVybiBqc0Nh
c3Q8SlNDYWxsYmFja09iamVjdDxKU0dsb2JhbE9iamVjdD4qPihvKS0+aW5oZXJpdHMoanNDbGFz
cyk7CiAgICAgICAgIGlmIChvLT5pbmhlcml0cygmSlNDYWxsYmFja09iamVjdDxKU0Rlc3RydWN0
aWJsZU9iamVjdD46OnNfaW5mbykpCiAgICAgICAgICAgICByZXR1cm4ganNDYXN0PEpTQ2FsbGJh
Y2tPYmplY3Q8SlNEZXN0cnVjdGlibGVPYmplY3Q+Kj4obyktPmluaGVyaXRzKGpzQ2xhc3MpOwor
ICAgICAgICBpZiAoby0+aW5oZXJpdHMoJkpTQ2FsbGJhY2tPYmplY3Q8SlNBUElXcmFwcGVyT2Jq
ZWN0Pjo6c19pbmZvKSkKKyAgICAgICAgICAgIHJldHVybiBqc0Nhc3Q8SlNDYWxsYmFja09iamVj
dDxKU0FQSVdyYXBwZXJPYmplY3Q+Kj4obyktPmluaGVyaXRzKGpzQ2xhc3MpOwogICAgIH0KICAg
ICByZXR1cm4gZmFsc2U7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmly
dHVhbE1hY2hpbmUubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9K
U1ZpcnR1YWxNYWNoaW5lLm1tCShyZXZpc2lvbiAxNDQ3ODApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL0pTVmlydHVhbE1hY2hpbmUubW0JKHdvcmtpbmcgY29weSkKQEAgLTEwMSw3ICsx
MDEsOSBAQCAtIChpZClpbml0V2l0aENvbnRleHRHcm91cFJlZjooSlNDb250ZXh0CiAgICAgTlNQ
b2ludGVyRnVuY3Rpb25zT3B0aW9ucyBrZXlPcHRpb25zID0gTlNQb2ludGVyRnVuY3Rpb25zT3Bh
cXVlTWVtb3J5IHwgTlNQb2ludGVyRnVuY3Rpb25zT3BhcXVlUGVyc29uYWxpdHk7CiAgICAgTlNQ
b2ludGVyRnVuY3Rpb25zT3B0aW9ucyB2YWx1ZU9wdGlvbnMgPSBOU1BvaW50ZXJGdW5jdGlvbnNX
ZWFrTWVtb3J5IHwgTlNQb2ludGVyRnVuY3Rpb25zT2JqZWN0UGVyc29uYWxpdHk7CiAgICAgbV9j
b250ZXh0Q2FjaGUgPSBbW05TTWFwVGFibGUgYWxsb2NdIGluaXRXaXRoS2V5T3B0aW9uczprZXlP
cHRpb25zIHZhbHVlT3B0aW9uczp2YWx1ZU9wdGlvbnMgY2FwYWNpdHk6MF07Ci0gICAgCisgICAK
KyAgICBbSlNWTVdyYXBwZXJDYWNoZSBhZGRXcmFwcGVyOnNlbGYgZm9ySlNDb250ZXh0R3JvdXBS
ZWY6Z3JvdXBdOworIAogICAgIHJldHVybiBzZWxmOwogfQogCkBAIC0xMjMsMTAgKzEyNSw4IEBA
IEpTQ29udGV4dEdyb3VwUmVmIGdldEdyb3VwRnJvbVZpcnR1YWxNYWMKICsgKEpTVmlydHVhbE1h
Y2hpbmUgKil2aXJ0dWFsTWFjaGluZVdpdGhDb250ZXh0R3JvdXBSZWY6KEpTQ29udGV4dEdyb3Vw
UmVmKWdyb3VwCiB7CiAgICAgSlNWaXJ0dWFsTWFjaGluZSAqdmlydHVhbE1hY2hpbmUgPSBbSlNW
TVdyYXBwZXJDYWNoZSB3cmFwcGVyRm9ySlNDb250ZXh0R3JvdXBSZWY6Z3JvdXBdOwotICAgIGlm
ICghdmlydHVhbE1hY2hpbmUpIHsKKyAgICBpZiAoIXZpcnR1YWxNYWNoaW5lKQogICAgICAgICB2
aXJ0dWFsTWFjaGluZSA9IFtbW0pTVmlydHVhbE1hY2hpbmUgYWxsb2NdIGluaXRXaXRoQ29udGV4
dEdyb3VwUmVmOmdyb3VwXSBhdXRvcmVsZWFzZV07Ci0gICAgICAgIFtKU1ZNV3JhcHBlckNhY2hl
IGFkZFdyYXBwZXI6dmlydHVhbE1hY2hpbmUgZm9ySlNDb250ZXh0R3JvdXBSZWY6Z3JvdXBdOwot
ICAgIH0KICAgICByZXR1cm4gdmlydHVhbE1hY2hpbmU7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvSlNXcmFwcGVyTWFwLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvSlNXcmFwcGVyTWFwLm1tCShyZXZpc2lvbiAxNDQ3ODApCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTV3JhcHBlck1hcC5tbQkod29ya2luZyBjb3B5KQpAQCAt
MjksNiArMjksOSBAQAogI2lmIEpTQ19PQkpDX0FQSV9FTkFCTEVECiAKICNpbXBvcnQgIkFQSUNh
c3QuaCIKKyNpbXBvcnQgIkFQSVNoaW1zLmgiCisjaW1wb3J0ICJKU0FQSVdyYXBwZXJPYmplY3Qu
aCIKKyNpbXBvcnQgIkpTQ2FsbGJhY2tPYmplY3QuaCIKICNpbXBvcnQgIkpTQ29udGV4dEludGVy
bmFsLmgiCiAjaW1wb3J0ICJKU1dyYXBwZXJNYXAuaCIKICNpbXBvcnQgIk9iakNDYWxsYmFja0Z1
bmN0aW9uLmgiCkBAIC00OCw3ICs1MSw4IEBAIC0gKEpTT2JqQ0NsYXNzSW5mbyopY2xhc3NJbmZv
Rm9yQ2xhc3M6KEMKIAogc3RhdGljIHZvaWQgd3JhcHBlckZpbmFsaXplKEpTT2JqZWN0UmVmIG9i
amVjdCkKIHsKLSAgICBbKGlkKUpTT2JqZWN0R2V0UHJpdmF0ZShvYmplY3QpIHJlbGVhc2VdOwor
ICAgIEpTQzo6SlNBUElXcmFwcGVyT2JqZWN0KiB3cmFwcGVyT2JqZWN0ID0gSlNDOjpqc0Nhc3Q8
SlNDOjpKU0FQSVdyYXBwZXJPYmplY3QqPih0b0pTKG9iamVjdCkpOworICAgIFsoaWQpd3JhcHBl
ck9iamVjdC0+d3JhcHBlZE9iamVjdCgpIHJlbGVhc2VdOwogfQogCiAvLyBBbGwgd3JhcHBlciBv
YmplY3RzIGFuZCBjb25zdHJ1Y3RvciBvYmplY3RzIGRlcml2ZSBmcm9tIHRoaXMgdHlwZSwgc28g
d2UgY2FuIGRldGVjdCAmIHVud3JhcCBPYmplY3RpdmUtQyBpbnN0YW5jZXMvQ2xhc3Nlcy4KQEAg
LTExNCwxNyArMTE4LDMxIEBAIGRvbmU6CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAorc3RhdGlj
IEpTT2JqZWN0UmVmIG1ha2VXcmFwcGVyKEpTQ29udGV4dFJlZiBjdHgsIEpTQ2xhc3NSZWYganND
bGFzcywgaWQgd3JhcHBlZE9iamVjdCkKK3sKKyAgICBKU0M6OkV4ZWNTdGF0ZSogZXhlYyA9IHRv
SlMoY3R4KTsKKyAgICBKU0M6OkFQSUVudHJ5U2hpbSBlbnRyeVNoaW0oZXhlYyk7CisKKyAgICBB
U1NFUlQoanNDbGFzcyk7CisgICAgSlNDOjpKU0NhbGxiYWNrT2JqZWN0PEpTQzo6SlNBUElXcmFw
cGVyT2JqZWN0Piogb2JqZWN0ID0gSlNDOjpKU0NhbGxiYWNrT2JqZWN0PEpTQzo6SlNBUElXcmFw
cGVyT2JqZWN0Pjo6Y3JlYXRlKGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgZXhl
Yy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5vYmpjV3JhcHBlck9iamVjdFN0cnVjdHVyZSgpLCBq
c0NsYXNzLCAwKTsKKyAgICBvYmplY3QtPnNldFdyYXBwZWRPYmplY3Qod3JhcHBlZE9iamVjdCk7
CisgICAgaWYgKEpTQzo6SlNPYmplY3QqIHByb3RvdHlwZSA9IGpzQ2xhc3MtPnByb3RvdHlwZShl
eGVjKSkKKyAgICAgICAgb2JqZWN0LT5zZXRQcm90b3R5cGUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBw
cm90b3R5cGUpOworCisgICAgcmV0dXJuIHRvUmVmKG9iamVjdCk7Cit9CisKIC8vIE1ha2UgYW4g
b2JqZWN0IHRoYXQgaXMgaW4gYWxsIHdheXMgYSBjb21wbGV0ZWx5IHZhbmlsbGEgSmF2YVNjcmlw
dCBvYmplY3QsCiAvLyBvdGhlciB0aGFuIHRoYXQgaXQgaGFzIGEgbmF0aXZlIGJyYW5kIHNldCB0
aGF0IHdpbGwgYmUgZGlzcGxheWVkIGJ5IHRoZSBkZWZhdWx0CiAvLyBPYmplY3QucHJvdG90eXBl
LnRvU3RyaW5nIGNvbnZlcnNpb24uCi1zdGF0aWMgSlNWYWx1ZSAqY3JlYXRlT2JqZWN0V2l0aEN1
c3RvbUJyYW5kKEpTQ29udGV4dCAqY29udGV4dCwgTlNTdHJpbmcgKmJyYW5kLCBKU0NsYXNzUmVm
IHBhcmVudENsYXNzID0gMCwgdm9pZCogcHJpdmF0ZURhdGEgPSAwKQorc3RhdGljIEpTVmFsdWUg
KmNyZWF0ZU9iamVjdFdpdGhDdXN0b21CcmFuZChKU0NvbnRleHQgKmNvbnRleHQsIE5TU3RyaW5n
ICpicmFuZCwgSlNDbGFzc1JlZiBwYXJlbnRDbGFzcyA9IDAsIENsYXNzIGNscyA9IDApCiB7CiAg
ICAgSlNDbGFzc0RlZmluaXRpb24gZGVmaW5pdGlvbjsKICAgICBkZWZpbml0aW9uID0ga0pTQ2xh
c3NEZWZpbml0aW9uRW1wdHk7CiAgICAgZGVmaW5pdGlvbi5jbGFzc05hbWUgPSBbYnJhbmQgVVRG
OFN0cmluZ107CiAgICAgZGVmaW5pdGlvbi5wYXJlbnRDbGFzcyA9IHBhcmVudENsYXNzOwogICAg
IEpTQ2xhc3NSZWYgY2xhc3NSZWYgPSBKU0NsYXNzQ3JlYXRlKCZkZWZpbml0aW9uKTsKLSAgICBK
U09iamVjdFJlZiByZXN1bHQgPSBKU09iamVjdE1ha2UoW2NvbnRleHQgZ2xvYmFsQ29udGV4dFJl
Zl0sIGNsYXNzUmVmLCBwcml2YXRlRGF0YSk7CisgICAgSlNPYmplY3RSZWYgcmVzdWx0ID0gbWFr
ZVdyYXBwZXIoW2NvbnRleHQgZ2xvYmFsQ29udGV4dFJlZl0sIGNsYXNzUmVmLCBjbHMpOwogICAg
IEpTQ2xhc3NSZWxlYXNlKGNsYXNzUmVmKTsKICAgICByZXR1cm4gW1tKU1ZhbHVlIGFsbG9jXSBp
bml0V2l0aFZhbHVlOnJlc3VsdCBpbkNvbnRleHQ6Y29udGV4dF07CiB9CkBAIC00MDcsNyArNDI1
LDcgQEAgLSAoSlNWYWx1ZSAqKXdyYXBwZXJGb3JPYmplY3Q6KGlkKW9iamVjdAogICAgICAgICBb
c2VsZiByZWFsbG9jYXRlQ29uc3RydWN0b3JBbmRPclByb3RvdHlwZV07CiAgICAgQVNTRVJUKCEh
bV9wcm90b3R5cGUpOwogCi0gICAgSlNPYmplY3RSZWYgd3JhcHBlciA9IEpTT2JqZWN0TWFrZShb
bV9jb250ZXh0IGdsb2JhbENvbnRleHRSZWZdLCBtX2NsYXNzUmVmLCBbb2JqZWN0IHJldGFpbl0p
OworICAgIEpTT2JqZWN0UmVmIHdyYXBwZXIgPSBtYWtlV3JhcHBlcihbbV9jb250ZXh0IGdsb2Jh
bENvbnRleHRSZWZdLCBtX2NsYXNzUmVmLCBbb2JqZWN0IHJldGFpbl0pOwogICAgIEpTT2JqZWN0
U2V0UHJvdG90eXBlKFttX2NvbnRleHQgZ2xvYmFsQ29udGV4dFJlZl0sIHdyYXBwZXIsIHRvUmVm
KG1fcHJvdG90eXBlLmdldCgpKSk7CiAgICAgcmV0dXJuIFtKU1ZhbHVlIHZhbHVlV2l0aFZhbHVl
OndyYXBwZXIgaW5Db250ZXh0Om1fY29udGV4dF07CiB9CkBAIC01MTEsNyArNTI5LDcgQEAgaWQg
dHJ5VW53cmFwT2JqY09iamVjdChKU0dsb2JhbENvbnRleHRSZQogICAgIEpTT2JqZWN0UmVmIG9i
amVjdCA9IEpTVmFsdWVUb09iamVjdChjb250ZXh0LCB2YWx1ZSwgJmV4Y2VwdGlvbik7CiAgICAg
QVNTRVJUKCFleGNlcHRpb24pOwogICAgIGlmIChKU1ZhbHVlSXNPYmplY3RPZkNsYXNzKGNvbnRl
eHQsIG9iamVjdCwgd3JhcHBlckNsYXNzKCkpKQotICAgICAgICByZXR1cm4gKGlkKUpTT2JqZWN0
R2V0UHJpdmF0ZShvYmplY3QpOworICAgICAgICByZXR1cm4gKGlkKUpTQzo6anNDYXN0PEpTQzo6
SlNBUElXcmFwcGVyT2JqZWN0Kj4odG9KUyhvYmplY3QpKS0+d3JhcHBlZE9iamVjdCgpOwogICAg
IGlmIChpZCB0YXJnZXQgPSB0cnlVbndyYXBCbG9jayhjb250ZXh0LCBvYmplY3QpKQogICAgICAg
ICByZXR1cm4gdGFyZ2V0OwogICAgIHJldHVybiBuaWw7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL0phdmFTY3JpcHRDb3JlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS9KYXZhU2NyaXB0Q29yZS5oCShyZXZpc2lvbiAxNDQ3ODApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL0phdmFTY3JpcHRDb3JlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMz
LDYgKzMzLDcgQEAKIAogI2ltcG9ydCAiSlNDb250ZXh0LmgiCiAjaW1wb3J0ICJKU1ZhbHVlLmgi
CisjaW1wb3J0ICJKU01hbmFnZWRWYWx1ZS5oIgogI2ltcG9ydCAiSlNWaXJ0dWFsTWFjaGluZS5o
IgogI2ltcG9ydCAiSlNFeHBvcnQuaCIKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS90ZXN0cy90ZXN0YXBpLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvdGVzdHMvdGVzdGFwaS5tbQkocmV2aXNpb24gMTQ0NzgwKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw3ICsyMyw4
IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKICAqLwogCi0jaW1wb3J0ICJKYXZhU2NyaXB0Q29yZS5oIgor
I2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuaD4KKyNpbXBvcnQgPEphdmFT
Y3JpcHRDb3JlL0pTQmFzZVByaXZhdGUuaD4KIAogZXh0ZXJuICJDIiBib29sIF9CbG9ja19oYXNf
c2lnbmF0dXJlKGlkKTsKIGV4dGVybiAiQyIgY29uc3QgY2hhciAqIF9CbG9ja19zaWduYXR1cmUo
aWQpOwpAQCAtMTAxLDYgKzEwMiw4IEBAIGJvb2wgdGVzdFhZWlRlc3RlZCA9IGZhbHNlOwogQHBy
b3RvY29sIFRleHRYWVogPEpTRXhwb3J0PgogQHByb3BlcnR5IGludCB4OwogQHByb3BlcnR5IChy
ZWFkb25seSkgaW50IHk7CitAcHJvcGVydHkgSlNWYWx1ZSAqb25jbGljazsKK0Bwcm9wZXJ0eSBK
U1ZhbHVlICp3ZWFrT25jbGljazsKIC0gKHZvaWQpdGVzdDooTlNTdHJpbmcgKiltZXNzYWdlOwog
QGVuZAogCkBAIC0xMDgsOSArMTExLDEzIEBAIEBpbnRlcmZhY2UgVGV4dFhZWiA6IE5TT2JqZWN0
IDxUZXh0WFlaPgogQHByb3BlcnR5IGludCB4OwogQHByb3BlcnR5IGludCB5OwogQHByb3BlcnR5
IGludCB6OworLSAodm9pZCljbGljazsKIEBlbmQKIAotQGltcGxlbWVudGF0aW9uIFRleHRYWVoK
K0BpbXBsZW1lbnRhdGlvbiBUZXh0WFlaIHsKKyAgICBKU01hbmFnZWRWYWx1ZSAqbV93ZWFrT25j
bGlja0hhbmRsZXI7CisgICAgSlNNYW5hZ2VkVmFsdWUgKm1fb25jbGlja0hhbmRsZXI7Cit9CiBA
c3ludGhlc2l6ZSB4OwogQHN5bnRoZXNpemUgeTsKIEBzeW50aGVzaXplIHo7CkBAIC0xMTgsNiAr
MTI1LDMxIEBAIC0gKHZvaWQpdGVzdDooTlNTdHJpbmcgKiltZXNzYWdlCiB7CiAgICAgdGVzdFhZ
WlRlc3RlZCA9IFttZXNzYWdlIGlzRXF1YWw6QCJ0ZXN0Il0gJiYgeCA9PSAxMyAmIHkgPT0gNCAm
JiB6ID09IDU7CiB9CistICh2b2lkKXNldFdlYWtPbmNsaWNrOihKU1ZhbHVlICopdmFsdWUKK3sK
KyAgICBtX3dlYWtPbmNsaWNrSGFuZGxlciA9IFtKU01hbmFnZWRWYWx1ZSB3ZWFrVmFsdWVXaXRo
VmFsdWU6dmFsdWVdOworfQorCistICh2b2lkKXNldE9uY2xpY2s6KEpTVmFsdWUgKil2YWx1ZQor
eworICAgIG1fb25jbGlja0hhbmRsZXIgPSBbSlNNYW5hZ2VkVmFsdWUgbWFuYWdlZFZhbHVlV2l0
aFZhbHVlOnZhbHVlIG93bmVyOnNlbGZdOworfQorLSAoSlNWYWx1ZSAqKXdlYWtPbmNsaWNrCit7
CisgICAgcmV0dXJuIFttX3dlYWtPbmNsaWNrSGFuZGxlciB2YWx1ZV07Cit9CistIChKU1ZhbHVl
ICopb25jbGljaworeworICAgIHJldHVybiBbbV9vbmNsaWNrSGFuZGxlciB2YWx1ZV07Cit9Cist
ICh2b2lkKWNsaWNrCit7CisgICAgaWYgKCFtX29uY2xpY2tIYW5kbGVyKQorICAgICAgICByZXR1
cm47CisKKyAgICBKU1ZhbHVlICpmdW5jdGlvbiA9IFttX29uY2xpY2tIYW5kbGVyIHZhbHVlXTsK
KyAgICBbZnVuY3Rpb24gY2FsbFdpdGhBcmd1bWVudHM6W05TQXJyYXkgYXJyYXldXTsKK30KIEBl
bmQKIAogc3RhdGljIHZvaWQgY2hlY2tSZXN1bHQoTlNTdHJpbmcgKmRlc2NyaXB0aW9uLCBib29s
IHBhc3NlZCkKQEAgLTQ5Myw2ICs1MjUsNjAgQEAgdm9pZCB0ZXN0T2JqZWN0aXZlQ0FQSSgpCiAg
ICAgICAgIEpTVmFsdWUgKnJlc3VsdCA9IFtjb250ZXh0MSBldmFsdWF0ZVNjcmlwdDpAInBhc3NW
YWx1ZUJldHdlZW5Db250ZXh0cyJdOwogICAgICAgICBjaGVja1Jlc3VsdChAIlt2YWx1ZSBpc0Vx
dWFsVG9PYmplY3Q6cmVzdWx0XSIsIFt2YWx1ZSBpc0VxdWFsVG9PYmplY3Q6cmVzdWx0XSk7CiAg
ICAgfQorCisgICAgQGF1dG9yZWxlYXNlcG9vbCB7CisgICAgICAgIEpTQ29udGV4dCAqY29udGV4
dCA9IFtbSlNDb250ZXh0IGFsbG9jXSBpbml0XTsKKyAgICAgICAgVGV4dFhZWiAqdGVzdFhZWiA9
IFtbVGV4dFhZWiBhbGxvY10gaW5pdF07CisKKyAgICAgICAgQGF1dG9yZWxlYXNlcG9vbCB7Cisg
ICAgICAgICAgICBjb250ZXh0W0AidGVzdFhZWiJdID0gdGVzdFhZWjsKKworICAgICAgICAgICAg
W2NvbnRleHQgZXZhbHVhdGVTY3JpcHQ6QCIgXAorICAgICAgICAgICAgICAgIGRpZENsaWNrID0g
ZmFsc2U7IFwKKyAgICAgICAgICAgICAgICB0ZXN0WFlaLm9uY2xpY2sgPSBmdW5jdGlvbigpIHsg
XAorICAgICAgICAgICAgICAgICAgICBkaWRDbGljayA9IHRydWU7IFwKKyAgICAgICAgICAgICAg
ICB9OyBcCisgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICB0ZXN0WFlaLndlYWtP
bmNsaWNrID0gZnVuY3Rpb24oKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdmb28n
OyBcCisgICAgICAgICAgICAgICAgfTsgXAorICAgICAgICAgICAgIl07CisgICAgICAgIH0KKwor
ICAgICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKKyAgICAgICAgICAgIFt0ZXN0WFlaIGNsaWNrXTsK
KyAgICAgICAgICAgIEpTVmFsdWUgKnJlc3VsdCA9IFtjb250ZXh0IGV2YWx1YXRlU2NyaXB0OkAi
ZGlkQ2xpY2siXTsKKyAgICAgICAgICAgIGNoZWNrUmVzdWx0KEAiRXZlbnQgaGFuZGxlciBvbmNs
aWNrIiwgW3Jlc3VsdCB0b0Jvb2xdKTsKKyAgICAgICAgfQorCisgICAgICAgIEpTU3luY2hyb25v
dXNHYXJiYWdlQ29sbGVjdChbY29udGV4dCBnbG9iYWxDb250ZXh0UmVmXSk7CisKKyAgICAgICAg
QGF1dG9yZWxlYXNlcG9vbCB7CisgICAgICAgICAgICBKU1ZhbHVlICpyZXN1bHQgPSBbY29udGV4
dCBldmFsdWF0ZVNjcmlwdDpAInRlc3RYWVoub25jbGljayJdOworICAgICAgICAgICAgY2hlY2tS
ZXN1bHQoQCJvbmNsaWNrIHN0aWxsIGFyb3VuZCBhZnRlciBHQyIsICEoW3Jlc3VsdCBpc051bGxd
IHx8IFtyZXN1bHQgaXNVbmRlZmluZWRdKSk7CisgICAgICAgIH0KKworCisgICAgICAgIEBhdXRv
cmVsZWFzZXBvb2wgeworICAgICAgICAgICAgSlNWYWx1ZSAqcmVzdWx0ID0gW2NvbnRleHQgZXZh
bHVhdGVTY3JpcHQ6QCJ0ZXN0WFlaLndlYWtPbmNsaWNrIl07CisgICAgICAgICAgICBjaGVja1Jl
c3VsdChAIndlYWtPbmNsaWNrIG5vdCBhcm91bmQgYWZ0ZXIgR0MiLCBbcmVzdWx0IGlzTnVsbF0g
fHwgW3Jlc3VsdCBpc1VuZGVmaW5lZF0pOworICAgICAgICB9CisKKyAgICAgICAgQGF1dG9yZWxl
YXNlcG9vbCB7CisgICAgICAgICAgICBbY29udGV4dCBldmFsdWF0ZVNjcmlwdDpAIiBcCisgICAg
ICAgICAgICAgICAgZGlkQ2xpY2sgPSBmYWxzZTsgXAorICAgICAgICAgICAgICAgIHRlc3RYWVog
PSBudWxsOyBcCisgICAgICAgICAgICAiXTsKKyAgICAgICAgfQorCisgICAgICAgIEpTU3luY2hy
b25vdXNHYXJiYWdlQ29sbGVjdChbY29udGV4dCBnbG9iYWxDb250ZXh0UmVmXSk7CisKKyAgICAg
ICAgQGF1dG9yZWxlYXNlcG9vbCB7CisgICAgICAgICAgICBbdGVzdFhZWiBjbGlja107CisgICAg
ICAgICAgICBKU1ZhbHVlICpyZXN1bHQgPSBbY29udGV4dCBldmFsdWF0ZVNjcmlwdDpAImRpZENs
aWNrIl07CisgICAgICAgICAgICBjaGVja1Jlc3VsdChAIkV2ZW50IGhhbmRsZXIgb25jbGljayBk
b2Vzbid0IGZpcmUiLCAhW3Jlc3VsdCB0b0Jvb2xdKTsKKyAgICAgICAgfQorICAgIH0KIH0KIAog
I2Vsc2UKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ov
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUudmNwcm9qCShyZXZpc2lvbiAxNDQ3ODApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
LnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAtMTQxNCw2ICsxNDE0LDE0IEBACiAJCQkJPgogCQkJ
PC9GaWxlPgogCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEFQSVxKU0FQSVdyYXBw
ZXJPYmplY3QuY3BwIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQ
YXRoPSIuLlwuLlxBUElcSlNBUElXcmFwcGVyT2JqZWN0LmgiCisJCQkJPgorCQkJPC9GaWxlPgor
CQkJPEZpbGUKIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEFQSVxKU0Jhc2UuY3BwIgogCQkJCT4K
IAkJCTwvRmlsZT4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAx
NDQ3ODApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtODI4LDYgKzgyOCw4IEBACiAJCUMy
NDAzMDU1MTRCNDA0RTYwMDc5RUI2NCAvKiBDb3BpZWRTcGFjZS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMjQwMzA1MzE0QjQwNEM5MDA3OUVCNjQg
LyogQ29waWVkU3BhY2UuY3BwICovOyB9OwogCQlDMjREMzFFMjE2MUNENjk1MDAyQUE0REIgLyog
SGVhcFN0YXRpc3RpY3MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQzI0RDMxRTAxNjFDRDY5NTAwMkFBNERCIC8qIEhlYXBTdGF0aXN0aWNzLmNwcCAq
LzsgfTsKIAkJQzI0RDMxRTMxNjFDRDY5NTAwMkFBNERCIC8qIEhlYXBTdGF0aXN0aWNzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMjREMzFFMTE2MUNE
Njk1MDAyQUE0REIgLyogSGVhcFN0YXRpc3RpY3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQlDMjVENzA5QjE2REU5OUY0MDBGQ0E2QkMgLyogSlNN
YW5hZ2VkVmFsdWUubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBDMjVENzA5OTE2REU5OUY0MDBGQ0E2QkMgLyogSlNNYW5hZ2VkVmFsdWUubW0gKi87IH07
CisJCUMyNUQ3MDlDMTZERTk5RjQwMEZDQTZCQyAvKiBKU01hbmFnZWRWYWx1ZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzI1RDcwOUExNkRFOTlGNDAw
RkNBNkJDIC8qIEpTTWFuYWdlZFZhbHVlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHVibGljLCApOyB9OyB9OwogCQlDMjVGOEJDRDE1NzU0NEE5MDAyNDVCNzEgLyogSW5jcmVtZW50
YWxTd2VlcGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEMyNUY4QkNCMTU3NTQ0QTkwMDI0NUI3MSAvKiBJbmNyZW1lbnRhbFN3ZWVwZXIuY3BwICov
OyB9OwogCQlDMjVGOEJDRTE1NzU0NEE5MDAyNDVCNzEgLyogSW5jcmVtZW50YWxTd2VlcGVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMjVGOEJDQzE1
NzU0NEE5MDAyNDVCNzEgLyogSW5jcmVtZW50YWxTd2VlcGVyLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQzJBN0Y2ODgxNjA0MzJENDAwRjc2Qjk4
IC8qIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDMkE3RjY4NzE2MDQzMkQ0MDBGNzZCOTggLyogSlNEZXN0cnVjdGli
bGVPYmplY3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwpAQCAtODM2LDYgKzgzOCw4IEBACiAJCUMyQzhEMDJEMTRBM0M2RTAwMDU3OEU2NSAvKiBDb3Bp
ZWRTcGFjZUlubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEMyQzhEMDJCMTRBM0M2QjIwMDU3OEU2NSAvKiBDb3BpZWRTcGFjZUlubGluZXMuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDMkM4RDAz
MDE0QTNDRUZDMDA1NzhFNjUgLyogQ29waWVkQmxvY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyQzhEMDJFMTRBM0NFRkMwMDU3OEU2NSAvKiBDb3Bp
ZWRCbG9jay5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCUMyQzhEMDMxMTRBM0NFRkMwMDU3OEU2NSAvKiBIZWFwQmxvY2suaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyQzhEMDJGMTRBM0NFRkMwMDU3OEU2
NSAvKiBIZWFwQmxvY2suaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworCQlDMkNGMzlDMTE2RTE1QTgxMDBERDY5QkUgLyogSlNBUElXcmFwcGVyT2JqZWN0
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyQ0Yz
OUJGMTZFMTVBODEwMERENjlCRSAvKiBKU0FQSVdyYXBwZXJPYmplY3QuY3BwICovOyB9OworCQlD
MkNGMzlDMjE2RTE1QTgxMDBERDY5QkUgLyogSlNBUElXcmFwcGVyT2JqZWN0LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMkNGMzlDMDE2RTE1QTgxMDBE
RDY5QkUgLyogSlNBUElXcmFwcGVyT2JqZWN0LmggKi87IH07CiAJCUMyRDU4QzM0MTU5MTJGRUUw
MDIxQTg0NCAvKiBHQ0FjdGl2aXR5Q2FsbGJhY2suY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzJENThDMzMxNTkxMkZFRTAwMjFBODQ0IC8qIEdDQWN0
aXZpdHlDYWxsYmFjay5jcHAgKi87IH07CiAJCUMyRTUyNkJEMTU5MEVGMDAwMDU0RTQ4RCAvKiBI
ZWFwVGltZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQzJFNTI2QkIxNTkwRUYwMDAwNTRFNDhEIC8qIEhlYXBUaW1lci5jcHAgKi87IH07CiAJCUMy
RTUyNkJFMTU5MEVGMDAwMDU0RTQ4RCAvKiBIZWFwVGltZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyRTUyNkJDMTU5MEVGMDAwMDU0RTQ4RCAvKiBI
ZWFwVGltZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwpAQCAtMTcyMSw2ICsxNzI1LDggQEAKIAkJQzI0MDMwNTMxNEI0MDRDOTAwNzlFQjY0IC8qIENv
cGllZFNwYWNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvcGll
ZFNwYWNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzI0RDMxRTAxNjFDRDY5
NTAwMkFBNERCIC8qIEhlYXBTdGF0aXN0aWNzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEhlYXBTdGF0aXN0aWNzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQzI0RDMxRTExNjFDRDY5NTAwMkFBNERCIC8qIEhlYXBTdGF0aXN0aWNzLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhlYXBTdGF0aXN0aWNzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUMyNUQ3MDk5MTZERTk5RjQwMEZDQTZCQyAvKiBKU01hbmFnZWRW
YWx1ZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEpTTWFuYWdl
ZFZhbHVlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMjVENzA5QTE2REU5OUY0
MDBGQ0E2QkMgLyogSlNNYW5hZ2VkVmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSlNNYW5hZ2VkVmFsdWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzI1
RjhCQ0IxNTc1NDRBOTAwMjQ1QjcxIC8qIEluY3JlbWVudGFsU3dlZXBlci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbmNyZW1lbnRhbFN3ZWVwZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMjVGOEJDQzE1NzU0NEE5MDAyNDVCNzEgLyogSW5j
cmVtZW50YWxTd2VlcGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluY3Jl
bWVudGFsU3dlZXBlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMkE3RjY4NzE2
MDQzMkQ0MDBGNzZCOTggLyogSlNEZXN0cnVjdGlibGVPYmplY3QuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSlNEZXN0cnVjdGlibGVPYmplY3QuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTE3MjksNiArMTczNSw4IEBACiAJCUMyQzhEMDJCMTRBM0M2QjIwMDU3
OEU2NSAvKiBDb3BpZWRTcGFjZUlubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gQ29waWVkU3BhY2VJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUMyQzhEMDJFMTRBM0NFRkMwMDU3OEU2NSAvKiBDb3BpZWRCbG9jay5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBDb3BpZWRCbG9jay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlDMkM4RDAyRjE0QTNDRUZDMDA1NzhFNjUgLyogSGVhcEJsb2NrLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhlYXBCbG9jay5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlDMkNGMzlCRjE2RTE1QTgxMDBERDY5QkUgLyogSlNBUElXcmFwcGVyT2JqZWN0
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQVBJV3JhcHBlck9i
amVjdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMyQ0YzOUMwMTZFMTVBODEw
MERENjlCRSAvKiBKU0FQSVdyYXBwZXJPYmplY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSlNBUElXcmFwcGVyT2JqZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUMyRDU4QzMzMTU5MTJGRUUwMDIxQTg0NCAvKiBHQ0FjdGl2aXR5Q2FsbGJhY2suY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR0NBY3Rpdml0eUNhbGxiYWNrLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzJFNTI2QkIxNTkwRUYwMDAwNTRFNDhE
IC8qIEhlYXBUaW1lci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBI
ZWFwVGltZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMkU1MjZCQzE1OTBF
RjAwMDA1NEU0OEQgLyogSGVhcFRpbWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEhlYXBUaW1lci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjIwMiw2ICsy
MjEwLDEwIEBACiAJCQkJRTEyNEE4RjYwRTU1NTc3NTAwMzA5MUYxIC8qIE9wYXF1ZUpTU3RyaW5n
LmNwcCAqLywKIAkJCQlFMTI0QThGNTBFNTU1Nzc1MDAzMDkxRjEgLyogT3BhcXVlSlNTdHJpbmcu
aCAqLywKIAkJCQk1REUzRDBGNDBERDhEREZCMDA0Njg3MTQgLyogV2ViS2l0QXZhaWxhYmlsaXR5
LmggKi8sCisJCQkJQzI1RDcwOTkxNkRFOTlGNDAwRkNBNkJDIC8qIEpTTWFuYWdlZFZhbHVlLm1t
ICovLAorCQkJCUMyNUQ3MDlBMTZERTk5RjQwMEZDQTZCQyAvKiBKU01hbmFnZWRWYWx1ZS5oICov
LAorCQkJCUMyQ0YzOUJGMTZFMTVBODEwMERENjlCRSAvKiBKU0FQSVdyYXBwZXJPYmplY3QuY3Bw
ICovLAorCQkJCUMyQ0YzOUMwMTZFMTVBODEwMERENjlCRSAvKiBKU0FQSVdyYXBwZXJPYmplY3Qu
aCAqLywKIAkJCSk7CiAJCQlwYXRoID0gQVBJOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsK
QEAgLTI5MTUsNiArMjkyNyw3IEBACiAJCQlpc2EgPSBQQlhIZWFkZXJzQnVpbGRQaGFzZTsKIAkJ
CWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CiAJCQlmaWxlcyA9ICgKKwkJCQlDMjVENzA5
QzE2REU5OUY0MDBGQ0E2QkMgLyogSlNNYW5hZ2VkVmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTg2MDE2MUUzMEYzQTgzQzEwMEY4NDcxMCAvKiBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRjU1RjBGNTE0RDEwNjNDMDBBQzc2NDkgLyogQWJzdHJhY3RQQy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEMzRTUwRTE2RjVDRDAwQjM0NDYwIC8qIEFQSUNhc3Qu
aCBpbiBIZWFkZXJzICovLApAQCAtMzE2NSw2ICszMTc4LDcgQEAKIAkJCQlCQzE4QzQyRDBFMTZG
NUNEMDBCMzQ0NjAgLyogSlNWYXJpYWJsZU9iamVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODZF
M0M2MTUxNjdCQUJENzAwNkQ3NjBBIC8qIEpTVmlydHVhbE1hY2hpbmUuaCBpbiBIZWFkZXJzICov
LAogCQkJCUE3NDgyRTkzMTE2QTdDQUQwMDNCMDcxMiAvKiBKU1dlYWtPYmplY3RNYXBSZWZJbnRl
cm5hbC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQzJDRjM5QzIxNkUxNUE4MTAwREQ2OUJFIC8qIEpT
QVBJV3JhcHBlck9iamVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc0ODJCOTMxMTY3MTE0NzAw
M0IwNzEyIC8qIEpTV2Vha09iamVjdE1hcFJlZlByaXZhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTE0NDI1NjYyMTVFREU5OEQwMDY2QTQ5QiAvKiBKU1dpdGhTY29wZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJODZFM0M2MTkxNjdCQUJFRTAwNkQ3NjBBIC8qIEpTV3JhcHBlck1hcC5oIGluIEhlYWRl
cnMgKi8sCkBAIC0zNzgwLDYgKzM3OTQsNyBAQAogCQkJCTBGRDNDODI2MTQxMTVENDAwMEZEODFD
QiAvKiBERkdEcml2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZGMEYxOUUxNkI3MkEwQjAw
NURGOTVCIC8qIERGR0VkZ2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZCQzBBRTcxNDk2QzdD
NDAwRDRGQkREIC8qIERGR0V4aXRQcm9maWxlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUMyQ0Yz
OUMxMTZFMTVBODEwMERENjlCRSAvKiBKU0FQSVdyYXBwZXJPYmplY3QuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMEYyQkRDMTUxNTFDNUQ0RDAwQ0Q4OTEwIC8qIERGR0ZpeHVwUGhhc2UuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJODZFQzlEQzcxMzI4REY4MjAwMkIyQUQ3IC8qIERGR0dyYXBoLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTg2RUM5RENCMTMyOERGODIwMDJCMkFENyAvKiBERkdKSVRD
b21waWxlci5jcHAgaW4gU291cmNlcyAqLywKQEAgLTM5OTYsNiArNDAxMSw3IEBACiAJCQkJQkND
RjBEMEMwRUYwQjhBNTAwNDEzQzhGIC8qIFN0cnVjdHVyZVN0dWJJbmZvLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTBGOTE5RDI4MTU4NTY3NzMwMDRBNEU3RCAvKiBTeW1ib2xUYWJsZS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlBNzM4NjU1NTExODY5N0I0MDA1NDAyNzkgLyogVGh1bmtHZW5lcmF0
b3JzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUMyNUQ3MDlCMTZERTk5RjQwMEZDQTZCQyAvKiBK
U01hbmFnZWRWYWx1ZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTE0QTQyRTNGMEY0RjYwRUUwMDU5
OTA5OSAvKiBUaW1lb3V0Q2hlY2tlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkY0Mjc0QTE1
OEVCRTkxMDA0Q0I5RkYgLyogdWRpczg2LmMgaW4gU291cmNlcyAqLywKIAkJCQkwRkY0Mjc0MDE1
OEVCRThCMDA0Q0I5RkYgLyogdWRpczg2X2RlY29kZS5jIGluIFNvdXJjZXMgKi8sCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCShy
ZXZpc2lvbiAxNDQ3ODApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDYgKzQ3LDcgQEAKICNpbmNsdWRlICJG
dW5jdGlvblByb3RvdHlwZS5oIgogI2luY2x1ZGUgIkdldHRlclNldHRlci5oIgogI2luY2x1ZGUg
IkludGVycHJldGVyLmgiCisjaW5jbHVkZSAiSlNBUElXcmFwcGVyT2JqZWN0LmgiCiAjaW5jbHVk
ZSAiSlNBY3RpdmF0aW9uLmgiCiAjaW5jbHVkZSAiSlNCb3VuZEZ1bmN0aW9uLmgiCiAjaW5jbHVk
ZSAiSlNDYWxsYmFja0NvbnN0cnVjdG9yLmgiCkBAIC0yMjksNiArMjMwLDcgQEAgdm9pZCBKU0ds
b2JhbE9iamVjdDo6cmVzZXQoSlNWYWx1ZSBwcm90bwogICAgIG1fYXJndW1lbnRzU3RydWN0dXJl
LnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIEFyZ3VtZW50czo6Y3JlYXRlU3RydWN0dXJl
KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpKTsKICAg
ICBtX2NhbGxiYWNrQ29uc3RydWN0b3JTdHJ1Y3R1cmUuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwg
dGhpcywgSlNDYWxsYmFja0NvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+Z2xvYmFs
RGF0YSgpLCB0aGlzLCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSkpOwogICAgIG1fY2FsbGJhY2tP
YmplY3RTdHJ1Y3R1cmUuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgSlNDYWxsYmFja09i
amVjdDxKU0Rlc3RydWN0aWJsZU9iamVjdD46OmNyZWF0ZVN0cnVjdHVyZShleGVjLT5nbG9iYWxE
YXRhKCksIHRoaXMsIG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKSk7CisgICAgbV9vYmpjV3JhcHBl
ck9iamVjdFN0cnVjdHVyZS5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBKU0NhbGxiYWNr
T2JqZWN0PEpTQVBJV3JhcHBlck9iamVjdD46OmNyZWF0ZVN0cnVjdHVyZShleGVjLT5nbG9iYWxE
YXRhKCksIHRoaXMsIG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKSk7CiAKICAgICBtX2FycmF5UHJv
dG90eXBlLnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIEFycmF5UHJvdG90eXBlOjpjcmVh
dGUoZXhlYywgdGhpcywgQXJyYXlQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShleGVjLT5nbG9i
YWxEYXRhKCksIHRoaXMsIG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKSkpOwogICAgIApAQCAtNTEx
LDYgKzUxMyw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWwKICAg
ICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9jYWxsYmFja0NvbnN0cnVjdG9yU3RydWN0
dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9jYWxsYmFja0Z1bmN0aW9u
U3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9jYWxsYmFja09i
amVjdFN0cnVjdHVyZSk7CisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fb2JqY1dy
YXBwZXJPYmplY3RTdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5t
X2RhdGVTdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX251bGxQ
cm90b3R5cGVPYmplY3RTdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0
LT5tX2Vycm9yU3RydWN0dXJlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHbG9iYWxPYmplY3QuaAkocmV2aXNpb24gMTQ0NzgwKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMTQx
LDYgKzE0MSw3IEBAIHByb3RlY3RlZDoKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2Nh
bGxiYWNrQ29uc3RydWN0b3JTdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4g
bV9jYWxsYmFja0Z1bmN0aW9uU3RydWN0dXJlOwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+
IG1fY2FsbGJhY2tPYmplY3RTdHJ1Y3R1cmU7CisgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4g
bV9vYmpjV3JhcHBlck9iamVjdFN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJl
PiBtX2RhdGVTdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9udWxsUHJv
dG90eXBlT2JqZWN0U3RydWN0dXJlOwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fZXJy
b3JTdHJ1Y3R1cmU7CkBAIC0zMDAsNiArMzAxLDcgQEAgcHVibGljOgogICAgIFN0cnVjdHVyZSog
Y2FsbGJhY2tDb25zdHJ1Y3RvclN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2FsbGJhY2tD
b25zdHJ1Y3RvclN0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSogY2FsbGJhY2tGdW5j
dGlvblN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2FsbGJhY2tGdW5jdGlvblN0cnVjdHVy
ZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSogY2FsbGJhY2tPYmplY3RTdHJ1Y3R1cmUoKSBjb25z
dCB7IHJldHVybiBtX2NhbGxiYWNrT2JqZWN0U3RydWN0dXJlLmdldCgpOyB9CisgICAgU3RydWN0
dXJlKiBvYmpjV3JhcHBlck9iamVjdFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fb2JqY1dy
YXBwZXJPYmplY3RTdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIGRhdGVTdHJ1Y3R1
cmUoKSBjb25zdCB7IHJldHVybiBtX2RhdGVTdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1
cmUqIG51bGxQcm90b3R5cGVPYmplY3RTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX251bGxQ
cm90b3R5cGVPYmplY3RTdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIGVycm9yU3Ry
dWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9lcnJvclN0cnVjdHVyZS5nZXQoKTsgfQo=
</data>
<flag name="review"
          id="212572"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>